[
  {
    "path": ".bazelrc",
    "content": "# =====================================================================\n# Envoy specific Bazel build/test options.\n# =====================================================================\n\n# Keep envoy.bazelrc up-to-date by run:\n# curl -sSL https://raw.githubusercontent.com/envoyproxy/envoy-wasm/master/.bazelrc > envoy.bazelrc\nimport %workspace%/envoy.bazelrc\n\n# Use platforms based toolchain resolution\nbuild --incompatible_enable_cc_toolchain_resolution\nbuild --platform_mappings=bazel/platform_mappings\n\n# envoy.bazelrc always sets -fPIC, tell bazel about it to suppress building both .o and .pic.o\n# objects from the same C++ sources.\nbuild --force_pic\n\n# Enable path normalization by default.\n# See: https://github.com/envoyproxy/envoy/pull/6519\nbuild --define path_normalization_by_default=true\n\n# release builds are optimized\nbuild:release -c opt\n\n# No debug info for release builds\nbuild:release --define no_debug_info=1\nbuild:release --linkopt=-Wl,--strip-all\nbuild --features=-per_object_debug_info\nbuild --fission=dbg\n\n# Manual link stamping, forces link to include current git SHA even if binary is otherwise\n# upto-date\nbuild:release --define manual_stamp=manual_stamp\n\n# release_debug - an optimized release build containing the debug information\nbuild:release_debug -c opt\nbuild:release_debug --define no_debug_info=0\nbuild:release_debug --strip=never\nbuild:release_debug --copt=-ggdb3\nbuild:release_debug --define manual_stamp=manual_stamp\n\n# Always have LD_LIBRARY_PATH=/usr/cross-compat/lib defined in the test environment.\n# The path does not need to exist, but can be created when needed for running tests.\nbuild --test_env=LD_LIBRARY_PATH=/usr/cilium-cross-compat/lib\n\n# use same env option for query as upstream is using for build\nquery --incompatible_merge_fixed_and_default_shell_env\n"
  },
  {
    "path": ".bazelversion",
    "content": "7.7.1\n"
  },
  {
    "path": ".clang-format",
    "content": "---\nLanguage:        Cpp\nAccessModifierOffset: -2\nColumnLimit: 100\nDerivePointerAlignment: false\nPointerAlignment: Left\nSortIncludes: false\nTypenameMacros: ['STACK_OF']\n...\n\n---\nLanguage: Proto\nColumnLimit: 100\nSpacesInContainerLiterals: false\nAllowShortFunctionsOnASingleLine: false\nReflowComments: false\n...\n"
  },
  {
    "path": ".clang-tidy",
    "content": "Checks: >\n  -clang-analyzer-core.NonNullParamChecker,\n  -clang-analyzer-optin.cplusplus.UninitializedObject,\n  abseil-duration-*,\n  abseil-faster-strsplit-delimiter,\n  abseil-no-namespace,\n  abseil-redundant-strcat-calls,\n  abseil-str-cat-append,\n  abseil-string-find-startswith,\n  abseil-upgrade-duration-conversions,\n  bugprone-assert-side-effect,\n  bugprone-unused-raii,\n  bugprone-use-after-move,\n  clang-analyzer-core.DivideZero,\n  misc-unused-using-decls,\n  modernize-deprecated-headers,\n  modernize-loop-convert,\n  modernize-make-shared,\n  modernize-make-unique,\n  modernize-return-braced-init-list,\n  modernize-use-default-member-init,\n  modernize-use-equals-default,\n  modernize-use-nullptr,\n  modernize-use-override,\n  modernize-use-using,\n  performance-faster-string-find,\n  performance-for-range-copy,\n  performance-inefficient-algorithm,\n  performance-inefficient-vector-operation,\n  performance-noexcept-move-constructor,\n  performance-move-constructor-init,\n  performance-type-promotion-in-math-fn,\n  performance-unnecessary-copy-initialization,\n  readability-braces-around-statements,\n  readability-container-size-empty,\n  readability-identifier-naming,\n  readability-redundant-control-flow,\n  readability-redundant-member-init,\n  readability-redundant-smartptr-get,\n  readability-redundant-string-cstr\n\nCheckOptions:\n- key: cppcoreguidelines-unused-variable.IgnorePattern\n  value: \"^_$\"\n- key: bugprone-assert-side-effect.AssertMacros\n  value: 'ASSERT'\n- key: bugprone-dangling-handle.HandleClasses\n  value: 'std::basic_string_view;std::experimental::basic_string_view;absl::string_view'\n- key: misc-include-cleaner.IgnoreHeaders\n  value: 'fmt/format\\.h;fmt/compile\\.h;asm-generic/socket\\.h;asm/unistd_32\\.h;asm/unistd_64\\.h;bits/.*;google/protobuf/.*;linux/in\\.h;linux/in6\\.h;mutex;cstdint'\n- key: modernize-use-auto.MinTypeNameLength\n  value: '10'\n- key: readability-identifier-naming.ClassCase\n  value: 'CamelCase'\n- key: readability-identifier-naming.EnumCase\n  value: 'CamelCase'\n- key: readability-identifier-naming.EnumConstantCase\n  value: 'CamelCase'\n# Ignore GoogleTest function macros.\n- key: readability-identifier-naming.FunctionIgnoredRegexp\n  # To have the regex chomped correctly fence all items with `|` (other than first/last)\n  value: >-\n    (^AbslHashValue$|\n    |^called_count$|\n    |^case_sensitive$|\n    |^Create$|\n    |^envoy_resolve_dns$|\n    |^evconnlistener_free$|\n    |^event_base_free$|\n    |^(get|set)EVP_PKEY$|\n    |^has_value$|\n    |^Ip6(ntohl|htonl)$|\n    |^get_$|\n    |^HeaderHasValue(Ref)?$|\n    |^HeaderValueOf$|\n    |^Is(Superset|Subset)OfHeaders$|\n    |^LLVMFuzzerInitialize$|\n    |^LLVMFuzzerTestOneInput$|\n    |^Locality$|\n    |^MOCK_METHOD$|\n    |^PrepareCall$|\n    |^PrintTo$|\n    |^resolve_dns$|\n    |^result_type$|\n    |Returns(Default)?WorkerId$|\n    |^sched_getaffinity$|\n    |^shutdownThread_$|\n    |^envoy_dynamic_module(.*)$|\n    |TEST|\n    |^use_count$)\n- key: readability-identifier-naming.ParameterCase\n  value: 'lower_case'\n- key: readability-identifier-naming.ParameterIgnoredRegexp\n  value: (^cname_ttl_$)\n- key: readability-identifier-naming.PrivateMemberCase\n  value: 'lower_case'\n- key: readability-identifier-naming.PrivateMemberSuffix\n  value: '_'\n- key: readability-identifier-naming.StructCase\n  value: 'CamelCase'\n- key: readability-identifier-naming.TypeAliasCase\n  value: 'CamelCase'\n- key: readability-identifier-naming.TypeAliasIgnoredRegexp\n  value: '(result_type)'\n- key: readability-identifier-naming.UnionCase\n  value: 'CamelCase'\n- key: readability-identifier-naming.FunctionCase\n  value: 'camelBack'\n- key: readability-identifier-naming.LocalVariableCase\n  value: 'lower_case'\n\nHeaderFilterRegex: '^./source/.*|^./contrib/.*|^./test/.*|^./envoy/.*'\n\nUseColor: true\n\nWarningsAsErrors: '*'\n\n## The version here is arbitrary since any change to this file will\n## trigger a full run of clang-tidy against all files.\n## It can be useful as it seems some header changes may not trigger the\n## expected rerun.\n# v0\n"
  },
  {
    "path": ".clangd",
    "content": "# https://clangd.llvm.org/config\nIndex:\n  StandardLibrary: Yes\nDiagnostics:\n  UnusedIncludes: Strict\n  MissingIncludes: Strict\n  Includes:\n    IgnoreHeader:\n      - \"fmt/format\\.h\" # Do not remove or add this\n      - \"fmt/compile\\.h\" # private -> use fmt/format.h\n      - \"asm-generic/socket\\.h\" # private -> use sys/socket.h\n      - \"asm/unistd_32\\.h\" # private -> use unistd.h\n      - \"asm/unistd_64\\.h\" # private -> use unistd.h\n      - \"bits/.*\" # private -> use standard headers like <string>, etc.\n      - \"google/protobuf/.*\" # checked by envoy linting -> use source/common/protobuf/protobuf.h\n      - \"linux/in\\.h\" # private -> use netinet/in.h\n      - \"linux/in6\\.h\" # private -> use netinet/in.h\n      - \"mutex\" # checked by envoy linting -> use source/common/common/thread.h\n      - \"cstdint\" # Do not complain the uint64_t is not directly included\n# CompileFlags:\n#   CompilationDatabase: ./compile_commands.json\n#   # Unfortunately, above config isn't working as expected.\n#   # Therefore it's recommended to use clangd argument\n#   # `--compile-commands-dir=<working_dir>` to improve the\n#   # clangd support for the external Envoy bazel-dependencies.\n#   # See https://github.com/clangd/clangd/discussions/907\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "content": "* @cilium/envoy\n"
  },
  {
    "path": ".github/renovate.json5",
    "content": "{\n  $schema: 'https://docs.renovatebot.com/renovate-schema.json',\n  extends: [\n    'config:recommended',\n    ':gitSignOff',\n    'helpers:pinGitHubActionDigests',\n  ],\n  includePaths: [\n    '.github/workflows/**',\n    'Dockerfile',\n    'Dockerfile.builder',\n    'Dockerfile.tests',\n    'go.mod',\n    'go.sum',\n    'tools/install_bazelisk.sh',\n    'WORKSPACE',\n    'ENVOY_VERSION',\n  ],\n  pinDigests: true,\n  ignorePresets: [\n    ':prHourlyLimit2',\n  ],\n  separateMajorMinor: false,\n  separateMultipleMajor: false,\n  separateMinorPatch: false,\n  pruneStaleBranches: true,\n  baseBranchPatterns: [\n    'main',\n    'v1.36',\n  ],\n  labels: [\n    'kind/enhancement',\n    'release-note/misc',\n  ],\n  schedule: [\n    'on monday',\n  ],\n  postUpdateOptions: [\n    'gomodTidy',\n  ],\n  packageRules: [\n    {\n      groupName: 'Go',\n      matchDepNames: [\n        'go',\n        'docker.io/library/golang',\n        'actions/setup-go'\n      ],\n      matchBaseBranches: [\n        'main',\n        'v1.36',\n      ],\n    },\n    {\n      groupName: 'all go dependencies main',\n      groupSlug: 'all-go-deps-main',\n      matchFileNames: [\n        'go.mod',\n        'go.sum',\n      ],\n      postUpdateOptions: [\n        'gomodUpdateImportPaths',\n      ],\n      matchUpdateTypes: [\n        'major',\n        'minor',\n        'digest',\n        'patch',\n        'pin',\n        'pinDigest',\n      ],\n      matchBaseBranches: [\n        'main',\n        'v1.36',\n      ],\n    },\n    {\n      // Avoid updating minor or major version for github.com/envoyproxy/go-control-plane/envoy\n      // as we need to update cilium-envoy accordingly.\n      \"matchPackageNames\": [\n        \"github.com/envoyproxy/go-control-plane/envoy\",\n      ],\n      \"matchUpdateTypes\": [\n        \"patch\",\n      ]\n    },\n    {\n      groupName: 'all github action dependencies',\n      groupSlug: 'all-github-action',\n      matchFileNames: [\n        '.github/workflows/**',\n      ],\n      matchUpdateTypes: [\n        'major',\n        'minor',\n        'digest',\n        'patch',\n        'pin',\n        'pinDigest',\n      ],\n      matchBaseBranches: [\n        'main',\n        'v1.36',\n      ],\n    },\n    {\n      matchFileNames: [\n        'Dockerfile',\n      ],\n      matchPackageNames: [\n        'docker.io/library/ubuntu',\n      ],\n      allowedVersions: '24.04',\n      matchBaseBranches: [\n        'main',\n        'v1.36',\n      ],\n    },\n    {\n      matchFileNames: [\n        'Dockerfile.builder',\n      ],\n      matchPackageNames: [\n        'docker.io/library/ubuntu',\n      ],\n      allowedVersions: '24.04',\n      matchBaseBranches: [\n        'main',\n        'v1.36',\n      ],\n    },\n    {\n      enabled: false,\n      matchFileNames: [\n        'Dockerfile',\n      ],\n      matchPackageNames: [\n        'quay.io/cilium/cilium-envoy-builder',\n      ],\n    },\n    {\n      matchFileNames: [\n        'Dockerfile.builder',\n        '.github/workflows/**',\n      ],\n      matchPackageNames: [\n        'go',\n      ],\n      allowedVersions: '<=1.26',\n      matchBaseBranches: [\n        'main',\n        'v1.36',\n      ],\n    },\n    {\n      groupName: 'envoy 1.36.x',\n      matchDepNames: [\n        'envoyproxy/envoy',\n      ],\n      allowedVersions: '<=1.36',\n      matchBaseBranches: [\n        'v1.36',\n      ],\n    },\n    {\n      groupName: 'envoy 1.37.x',\n      matchDepNames: [\n        'envoyproxy/envoy',\n      ],\n      allowedVersions: '<=1.37',\n      matchBaseBranches: [\n        'main',\n      ],\n    },\n    {\n      \"enabled\": false,\n      \"matchPackageNames\": [\n        // Stop updating envoy control plane packages until they pushed the\n        // tag to stop go mod from erroring. See https://github.com/cilium/cilium/issues/41574\n        \"github.com/envoyproxy/go-control-plane/contrib\",\n        \"github.com/envoyproxy/go-control-plane/envoy\"\n      ]\n    }\n  ],\n  customManagers: [\n    {\n      customType: 'regex',\n      managerFilePatterns: [\n        '/^WORKSPACE$/',\n      ],\n      matchStrings: [\n        '# renovate: datasource=(?<datasource>.*?) depName=(?<depName>.*?)\\\\s+.+_VERSION = \"(?<currentValue>.*)\"',\n        '# renovate: datasource=(?<datasource>.*?) depName=(?<depName>.*?) digestVersion=(?<currentValue>.*)\\\\s+.+_SHA = \"(?<currentDigest>.*)\"',\n      ],\n    },\n    {\n      customType: 'regex',\n      managerFilePatterns: [\n        '/^\\\\.github/workflows/[^/]+\\\\.ya?ml$/',\n      ],\n      matchStrings: [\n        '# renovate: datasource=(?<datasource>.*?) depName=(?<depName>.*?)\\\\s+.+-version: (?<currentValue>.*)',\n        '# renovate: datasource=(?<datasource>.*?) depName=(?<depName>.*?)\\\\s+.+_VERSION: (?<currentValue>.*)',\n      ],\n    },\n    {\n      customType: 'regex',\n      managerFilePatterns: [\n        '/^ENVOY_VERSION$/',\n      ],\n      datasourceTemplate: 'github-releases',\n      depNameTemplate: 'envoyproxy/envoy',\n      extractVersionTemplate: '^v?(?<version>.+)$',\n      matchStrings: [\n        'envoy-(?<currentValue>.*)',\n      ],\n    },\n    {\n      customType: 'regex',\n      managerFilePatterns: [\n        '/^Dockerfile$/',\n        '/^Dockerfile.builder$/',\n        '/^Dockerfile.tests$/',\n      ],\n      matchStrings: [\n        '# renovate: datasource=(?<datasource>.*?) depName=(?<depName>.*?)( versioning=(?<versioning>.*?))?\\\\sENV .*?_VERSION=(?<currentValue>.*)\\\\s',\n      ],\n    },\n    {\n      customType: 'regex',\n      managerFilePatterns: [\n        '/^tools/install_bazelisk.sh$/',\n      ],\n      matchStrings: [\n        '# renovate: datasource=(?<datasource>.*?) depName=(?<depName>.*?)( versioning=(?<versioning>.*?))?\\\\s.*?_VERSION=(?<currentValue>.*)\\\\s',\n      ],\n    },\n    {\n      customType: 'regex',\n      managerFilePatterns: [\n        '/^.github/workflows/renovate-config-validator.yaml$/',\n      ],\n      matchStrings: [\n        '# renovate: datasource=(?<datasource>.*?)\\\\s+RENOVATE_IMAGE=\"(?<depName>.*):(?<currentValue>.*)@(?<currentDigest>sha256:[a-f0-9]+)\"',\n      ],\n    },\n  ],\n}\n"
  },
  {
    "path": ".github/workflows/build-envoy-image-ci.yaml",
    "content": "name: CI Build & Push\non:\n  pull_request_target:\n    types: [opened, synchronize, reopened]\n\npermissions:\n  # To be able to access the repository with `actions/checkout`\n  contents: read\n  # Required to generate OIDC tokens for `sigstore/cosign-installer` authentication\n  id-token: write\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.event.after }}\n  cancel-in-progress: true\n\njobs:\n  build-and-push-prs:\n    name: Build and push multi-arch images\n    environment:\n      name: ci-build\n      deployment: false\n    timeout-minutes: 360\n    runs-on: ${{ vars.PROXY_BUILD_GITHUB_RUNNER }}\n    outputs:\n      sha: ${{ steps.tag.outputs.sha }}\n    steps:\n      - name: Set up QEMU\n        uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0\n        with:\n          image: tonistiigi/binfmt:qemu-v7.0.0-28\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0\n\n      - name: Cache Docker layers\n        uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5\n        with:\n          path: /tmp/buildx-cache\n          key: docker-cache-${{ github.head_ref }}\n          restore-keys: docker-cache-main\n\n      - name: Login to quay.io\n        uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0\n        with:\n          registry: quay.io\n          username: ${{ secrets.QUAY_ENVOY_USERNAME_DEV }}\n          password: ${{ secrets.QUAY_ENVOY_PASSWORD_DEV }}\n\n      - name: Checkout PR\n        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n        with:\n          ref: ${{ github.event.pull_request.head.sha }}\n          persist-credentials: false\n\n      - name: Prep for build\n        run: |\n          echo \"${{ github.event.pull_request.head.sha }}\" >SOURCE_VERSION\n          echo \"ENVOY_MINOR_RELEASE=$(cat ENVOY_VERSION | sed 's/envoy-\\([0-9]\\+\\.[0-9]\\+\\)\\..*/v\\1/')\" >> $GITHUB_ENV\n          echo \"ENVOY_PATCH_RELEASE=$(cat ENVOY_VERSION | sed 's/^envoy-\\([0-9]\\+\\.[0-9]\\+\\.[0-9]\\+$\\)/v\\1/')\" >> $GITHUB_ENV\n          echo \"BUILDER_DOCKER_HASH=$(git ls-tree --full-tree HEAD -- ./Dockerfile.builder | awk '{ print $3 }')\" >> $GITHUB_ENV\n\n      - name: Checking if cilium-envoy-builder image exists\n        id: cilium-builder-tag-in-repositories\n        shell: bash\n        run: |\n          if docker buildx imagetools inspect quay.io/${{ github.repository_owner }}/cilium-envoy-builder-dev:${{ env.BUILDER_DOCKER_HASH }} &>/dev/null; then\n            echo exists=\"true\" >> $GITHUB_OUTPUT\n          else\n            echo exists=\"false\" >> $GITHUB_OUTPUT\n          fi\n\n      - name: PR Multi-arch build & push of Builder image (dev)\n        uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0\n        if: steps.cilium-builder-tag-in-repositories.outputs.exists == 'false'\n        id: docker_build_builder_ci\n        with:\n          provenance: false\n          context: .\n          file: ./Dockerfile.builder\n          platforms: linux/amd64,linux/arm64\n          push: true\n          tags: quay.io/${{ github.repository_owner }}/cilium-envoy-builder-dev:${{ env.BUILDER_DOCKER_HASH }}\n\n      - name: CI Builder Image Digest\n        if: steps.cilium-builder-tag-in-repositories.outputs.exists == 'false'\n        shell: bash\n        run: |\n          echo \"Digests:\"\n          echo \"quay.io/${{ github.repository_owner }}/cilium-envoy-builder-dev:${{ env.BUILDER_DOCKER_HASH }}@${{ steps.docker_build_builder_ci.outputs.digest }}\"\n\n      - name: PR Multi-arch build & push of cilium-envoy\n        uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0\n        id: docker_build_ci\n        with:\n          provenance: false\n          context: .\n          file: ./Dockerfile\n          platforms: linux/amd64,linux/arm64\n          build-args: |\n            BUILDER_BASE=quay.io/cilium/cilium-envoy-builder-dev:${{ env.BUILDER_DOCKER_HASH }}\n            ARCHIVE_IMAGE=quay.io/${{ github.repository_owner }}/cilium-envoy-builder:main-archive-latest\n            BAZEL_BUILD_OPTS=--remote_upload_local_results=false\n          cache-from: type=local,src=/tmp/buildx-cache\n          cache-to: type=local,dest=/tmp/buildx-cache,mode=max\n          push: true\n          tags: quay.io/${{ github.repository_owner }}/cilium-envoy-dev:${{ github.event.pull_request.head.sha }}\n\n      - name: Install Cosign\n        uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2\n\n      - name: Sign Container Image\n        run: |\n          cosign sign -y quay.io/${{ github.repository_owner }}/cilium-envoy-dev@${{ steps.docker_build_ci.outputs.digest }}\n\n      - name: Install Bom\n        shell: bash\n        env:\n          # renovate: datasource=github-releases depName=kubernetes-sigs/bom\n          BOM_VERSION: v0.7.1\n        run: |\n          curl -L https://github.com/kubernetes-sigs/bom/releases/download/${{ env.BOM_VERSION }}/bom-amd64-linux -o bom\n          sudo mv ./bom /usr/local/bin/bom\n          sudo chmod +x /usr/local/bin/bom\n\n      - name: Generate SBOM\n        shell: bash\n        # To-Do: generate SBOM from source after https://github.com/kubernetes-sigs/bom/issues/202 is fixed\n        run: |\n          bom generate -o sbom_cilium-envoy_${{ github.event.pull_request.head.sha }}.spdx --format=json --image=quay.io/${{ github.repository_owner }}/cilium-envoy-dev:${{ github.event.pull_request.head.sha }}\n\n      - name: Attach SBOM to container images\n        run: |\n          cosign attach sbom --sbom sbom_cilium-envoy_${{ github.event.pull_request.head.sha }}.spdx quay.io/${{ github.repository_owner }}/cilium-envoy-dev@${{ steps.docker_build_ci.outputs.digest }}\n\n      - name: Sign SBOM Image\n        run: |\n          docker_build_ci_digest=\"${{ steps.docker_build_ci.outputs.digest }}\"\n          image_name=\"quay.io/${{ github.repository_owner }}/cilium-envoy-dev:${docker_build_ci_digest/:/-}.sbom\"\n          docker_build_ci_sbom_digest=\"sha256:$(docker buildx imagetools inspect --raw ${image_name} | sha256sum | head -c 64)\"\n          cosign sign -y \"quay.io/${{ github.repository_owner }}/cilium-envoy-dev@${docker_build_ci_sbom_digest}\"\n\n      - name: Envoy binary version check\n        shell: bash\n        run: |\n          envoy_version=$(docker run --rm quay.io/${{ github.repository_owner }}/cilium-envoy-dev:${{ github.event.pull_request.head.sha }} cilium-envoy --version)\n          expected_version=$(echo ${{ env.ENVOY_PATCH_RELEASE }} | sed 's/^v//')\n          echo ${envoy_version}\n          [[ \"${envoy_version}\" == *\"${{ github.event.pull_request.head.sha }}/$expected_version\"* ]]\n\n      - name: CI Image Digest\n        shell: bash\n        run: |\n          echo \"Digests:\"\n          echo \"quay.io/${{ github.repository_owner }}/cilium-envoy-dev:${{ github.event.pull_request.head.sha }}@${{ steps.docker_build_ci.outputs.digest }}\"\n\n  cilium-intergration-tests:\n    name: Cilium Integration Tests\n    needs: build-and-push-prs\n    permissions:\n      contents: read\n      pull-requests: write\n      statuses: write\n    uses: ./.github/workflows/cilium-integration-tests.yaml\n    with:\n      repository: ${{ github.event.pull_request.head.repo.full_name }}\n      commit_ref: ${{ github.event.pull_request.head.sha }}\n    secrets: inherit\n\n  cilium-gateway-api-tests:\n    name: Cilium Gateway API Tests\n    needs: build-and-push-prs\n    permissions:\n      contents: read\n      pull-requests: write\n      statuses: write\n    uses: ./.github/workflows/cilium-gateway-api.yaml\n    with:\n      repository: ${{ github.event.pull_request.head.repo.full_name }}\n      commit_ref: ${{ github.event.pull_request.head.sha }}\n    secrets: inherit\n"
  },
  {
    "path": ".github/workflows/build-envoy-images-release-base.yaml",
    "content": "name: Refresh test & build cache & build latest\non:\n  workflow_call:\n    inputs:\n      release_debug:\n        description: 'Build debug images'\n        required: false\n        type: boolean\n        default: false\n    secrets:\n      QUAY_ENVOY_USERNAME:\n        description: 'Quay.io username for Envoy image registry'\n        required: true\n      QUAY_ENVOY_PASSWORD:\n        description: 'Quay.io password for Envoy image registry'\n        required: true\n\npermissions:\n  # To be able to access the repository with `actions/checkout`\n  contents: read\n  # Required to generate OIDC tokens for `sigstore/cosign-installer` authentication\n  id-token: write\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}\n  cancel-in-progress: true\n\njobs:\n  test-cache-refresh:\n    name: Build test cache and push images\n    environment:\n      name: release-base-images\n      deployment: false\n    timeout-minutes: 360\n    runs-on: ${{ vars.PROXY_BUILD_GITHUB_RUNNER }}\n    steps:\n    - name: Set up QEMU\n      uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0\n      with:\n        image: tonistiigi/binfmt:qemu-v7.0.0-28\n\n    - name: Set up Docker Buildx\n      uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0\n\n    - name: Login to quay.io\n      uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0\n      with:\n        registry: quay.io\n        username: ${{ secrets.QUAY_ENVOY_USERNAME }}\n        password: ${{ secrets.QUAY_ENVOY_PASSWORD }}\n\n    - name: Checkout source\n      uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n      with:\n        persist-credentials: false\n\n    - name: Prep for build\n      run: |\n        echo \"${{ github.sha }}\" >SOURCE_VERSION\n        echo \"ENVOY_MINOR_RELEASE=$(cat ENVOY_VERSION | sed 's/envoy-\\([0-9]\\+\\.[0-9]\\+\\)\\..*/v\\1/')\" >> $GITHUB_ENV\n        echo \"ENVOY_PATCH_RELEASE=$(cat ENVOY_VERSION | sed 's/^envoy-\\([0-9]\\+\\.[0-9]\\+\\.[0-9]\\+$\\)/v\\1/')\" >> $GITHUB_ENV\n        echo \"BUILDER_DOCKER_HASH=$(git ls-tree --full-tree HEAD -- ./Dockerfile.builder | awk '{ print $3 }')\" >> $GITHUB_ENV\n\n    - name: Cache Docker layers\n      uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5\n      with:\n        path: /tmp/buildx-cache\n        key: docker-cache-tests\n\n    - name: Clear cache\n      run: rm -rf /tmp/buildx-cache/*\n\n    - name: Wait for builder image\n      uses: ./.github/workflows/wait-for-image\n      with:\n        SHA: ${{ env.BUILDER_DOCKER_HASH }}\n        repo: cilium\n        images: cilium-envoy-builder\n\n    - name: Run integration tests on amd64 & push of test artifact archive\n      uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0\n      id: docker_tests_ci_cache_update\n      with:\n        provenance: false\n        context: .\n        file: ./Dockerfile.tests\n        target: builder-archive\n        platforms: linux/amd64\n        build-args: |\n          BUILDER_BASE=quay.io/${{ github.repository_owner }}/cilium-envoy-builder:${{ env.BUILDER_DOCKER_HASH }}\n          ARCHIVE_IMAGE=quay.io/${{ github.repository_owner }}/cilium-envoy-builder:test-${{ github.ref_name }}-archive-latest\n          COPY_CACHE_EXT=.new\n          BAZEL_BUILD_OPTS=--remote_upload_local_results=false\n          BAZEL_TEST_OPTS=--test_timeout=300 --local_test_jobs=1 --flaky_test_attempts=3\n        cache-to: type=local,dest=/tmp/buildx-cache,mode=max\n        push: true\n        tags: quay.io/${{ github.repository_owner }}/cilium-envoy-builder:test-${{ github.ref_name }}-archive-latest\n\n  build-cache-and-push-images:\n    name: Build cache and push images\n    environment:\n      name: release-base-images\n      deployment: false\n    timeout-minutes: 360\n    runs-on: ${{ vars.PROXY_BUILD_GITHUB_RUNNER }}\n    steps:\n    - name: Set up QEMU\n      uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0\n      with:\n        image: tonistiigi/binfmt:qemu-v7.0.0-28\n    - name: Set up Docker Buildx\n      uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0\n\n    - name: Login to quay.io\n      uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0\n      with:\n        registry: quay.io\n        username: ${{ secrets.QUAY_ENVOY_USERNAME }}\n        password: ${{ secrets.QUAY_ENVOY_PASSWORD }}\n\n    - name: Checkout source\n      uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n    - name: Prep for build\n      run: |\n        echo \"${{ github.sha }}\" >SOURCE_VERSION\n        echo \"ENVOY_MINOR_RELEASE=$(cat ENVOY_VERSION | sed 's/envoy-\\([0-9]\\+\\.[0-9]\\+\\)\\..*/v\\1/')\" >> $GITHUB_ENV\n        echo \"ENVOY_PATCH_RELEASE=$(cat ENVOY_VERSION | sed 's/^envoy-\\([0-9]\\+\\.[0-9]\\+\\.[0-9]\\+$\\)/v\\1/')\" >> $GITHUB_ENV\n        echo \"BUILDER_DOCKER_HASH=$(git ls-tree --full-tree HEAD -- ./Dockerfile.builder | awk '{ print $3 }')\" >> $GITHUB_ENV\n        echo \"SOURCE_TIMESTAMP=$(git log -1 --pretty=format:\"%ct\" .)\" >> $GITHUB_ENV\n\n    - name: Checking if cilium-envoy-builder image exists\n      id: cilium-builder-tag-in-repositories\n      shell: bash\n      run: |\n        if docker buildx imagetools inspect quay.io/${{ github.repository_owner }}/cilium-envoy-builder:${{ env.BUILDER_DOCKER_HASH }} &>/dev/null; then\n          echo exists=\"true\" >> $GITHUB_OUTPUT\n        else\n          echo exists=\"false\" >> $GITHUB_OUTPUT\n        fi\n\n    - name: Multi-arch build & push of Builder image\n      uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0\n      if: steps.cilium-builder-tag-in-repositories.outputs.exists == 'false'\n      id: docker_build_builder\n      with:\n        provenance: false\n        context: .\n        file: ./Dockerfile.builder\n        platforms: linux/amd64,linux/arm64\n        push: true\n        tags: |\n          quay.io/${{ github.repository_owner }}/cilium-envoy-builder:${{ env.BUILDER_DOCKER_HASH }}\n          quay.io/${{ github.repository_owner }}/cilium-envoy-builder:latest\n    - name: Multi-arch build & push of build artifact archive\n      uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0\n      with:\n        context: .\n        file: ./Dockerfile\n        target: builder-archive\n        platforms: linux/amd64,linux/arm64\n        build-args: |\n          BUILDER_BASE=quay.io/${{ github.repository_owner }}/cilium-envoy-builder:${{ env.BUILDER_DOCKER_HASH }}\n          ARCHIVE_IMAGE=quay.io/${{ github.repository_owner }}/cilium-envoy-builder:${{ github.ref_name }}-archive-latest\n          COPY_CACHE_EXT=.new\n          BAZEL_BUILD_OPTS=\"--jobs=HOST_CPUS*.75\"\n        push: true\n        tags: quay.io/${{ github.repository_owner }}/cilium-envoy-builder:${{ github.ref_name }}-archive-latest\n\n    - name: Cache Docker layers\n      uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5\n      with:\n        path: /tmp/buildx-cache\n        key: docker-cache-main\n\n    - name: Clear cache\n      run: |\n        rm -rf /tmp/buildx-cache/*\n        docker buildx prune -f\n\n    - name: Multi-arch build & push main latest\n      uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0\n      id: docker_build_cd\n      with:\n        provenance: false\n        context: .\n        file: ./Dockerfile\n        platforms: linux/amd64,linux/arm64\n        build-args: |\n          BUILDER_BASE=quay.io/${{ github.repository_owner }}/cilium-envoy-builder:${{ env.BUILDER_DOCKER_HASH }}\n          BAZEL_BUILD_OPTS=--remote_upload_local_results=false\n          ARCHIVE_IMAGE=quay.io/${{ github.repository_owner }}/cilium-envoy-builder:${{ github.ref_name }}-archive-latest\n          RELEASE_DEBUG=${{ inputs.release_debug && '1' || '' }}\n        cache-to: type=local,dest=/tmp/buildx-cache,mode=max\n        push: true\n        tags: |\n          quay.io/${{ github.repository_owner }}/cilium-envoy:latest\n          quay.io/${{ github.repository_owner }}/cilium-envoy:${{ github.sha }}\n          quay.io/${{ github.repository_owner }}/cilium-envoy:${{ env.ENVOY_MINOR_RELEASE }}-${{ github.sha }}\n          quay.io/${{ github.repository_owner }}/cilium-envoy:${{ env.ENVOY_PATCH_RELEASE }}-${{ github.sha }}\n          quay.io/${{ github.repository_owner }}/cilium-envoy:${{ env.ENVOY_PATCH_RELEASE }}-${{ env.SOURCE_TIMESTAMP }}-${{ github.sha }}\n\n    - name: Install Cosign\n      uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2\n\n    - name: Sign Container Image\n      run: |\n        cosign sign -y quay.io/${{ github.repository_owner }}/cilium-envoy@${{ steps.docker_build_cd.outputs.digest }}\n\n    - name: Install Bom\n      shell: bash\n      env:\n        # renovate: datasource=github-releases depName=kubernetes-sigs/bom\n        BOM_VERSION: v0.7.1\n      run: |\n        curl -L https://github.com/kubernetes-sigs/bom/releases/download/${{ env.BOM_VERSION }}/bom-amd64-linux -o bom\n        sudo mv ./bom /usr/local/bin/bom\n        sudo chmod +x /usr/local/bin/bom\n\n    - name: Generate SBOM\n      shell: bash\n      run: |\n        bom generate -o sbom_cilium-envoy_${{ github.sha }}.spdx --format=json --image=quay.io/${{ github.repository_owner }}/cilium-envoy:${{ github.sha }}\n\n    - name: Attach SBOM to container images\n      run: |\n        cosign attach sbom --sbom sbom_cilium-envoy_${{ github.sha }}.spdx quay.io/${{ github.repository_owner }}/cilium-envoy@${{ steps.docker_build_cd.outputs.digest }}\n\n    - name: Sign SBOM Image\n      run: |\n        docker_build_cd_digest=\"${{ steps.docker_build_cd.outputs.digest }}\"\n        image_name=\"quay.io/${{ github.repository_owner }}/cilium-envoy:${docker_build_cd_digest/:/-}.sbom\"\n        docker_build_cd_sbom_digest=\"sha256:$(docker buildx imagetools inspect --raw ${image_name} | sha256sum | head -c 64)\"\n        cosign sign -y \"quay.io/${{ github.repository_owner }}/cilium-envoy@${docker_build_cd_sbom_digest}\"\n\n    - name: Envoy binary version check\n      shell: bash\n      run: |\n        envoy_version=$(docker run --rm quay.io/${{ github.repository_owner }}/cilium-envoy:${{ github.sha }} cilium-envoy --version)\n        expected_version=$(echo ${{ env.ENVOY_PATCH_RELEASE }} | sed 's/^v//')\n        echo ${envoy_version}\n        [[ \"${envoy_version}\" == *\"${{ github.sha }}/$expected_version\"* ]]\n\n    - name: Release Image Digest\n      shell: bash\n      run: |\n        echo \"Digests:\"\n        echo \"quay.io/${{ github.repository_owner }}/cilium-envoy:${{ github.sha }}@${{ steps.docker_build_cd.outputs.digest }}\"\n        echo \"quay.io/${{ github.repository_owner }}/cilium-envoy:${{ env.ENVOY_MINOR_RELEASE }}-${{ github.sha }}@${{ steps.docker_build_cd.outputs.digest }}\"\n        echo \"quay.io/${{ github.repository_owner }}/cilium-envoy:${{ env.ENVOY_PATCH_RELEASE }}-${{ github.sha }}@${{ steps.docker_build_cd.outputs.digest }}\"\n        echo \"quay.io/${{ github.repository_owner }}/cilium-envoy:${{ env.ENVOY_PATCH_RELEASE }}-${{ env.SOURCE_TIMESTAMP }}-${{ github.sha }}@${{ steps.docker_build_cd.outputs.digest }}\"\n"
  },
  {
    "path": ".github/workflows/build-envoy-images-release-debug.yaml",
    "content": "name: Refresh test & build cache & build latest wth debug symbols\non:\n  workflow_dispatch:\n\npermissions:\n  id-token: write\n  contents: read\n\njobs:\n  build-envoy-images-release-debug:\n    uses: ./.github/workflows/build-envoy-images-release-base.yaml\n    with:\n      release_debug: true\n    secrets: inherit\n"
  },
  {
    "path": ".github/workflows/build-envoy-images-release.yaml",
    "content": "name: Refresh test & build cache & build latest\non:\n  push:\n    branches:\n      - main\n\npermissions:\n  contents: read\n  id-token: write\n\njobs:\n  build-envoy-images-release:\n    uses: ./.github/workflows/build-envoy-images-release-base.yaml\n    with:\n      release_debug: false\n    secrets: inherit\n"
  },
  {
    "path": ".github/workflows/ci-check-format.yaml",
    "content": "name: CI check format\non:\n  pull_request: {}\n\n# By specifying the access of one of the scopes, all of those that are not specified are set to 'none'.\npermissions:\n  # To be able to access the repository with actions/checkout\n  contents: read\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.event.after }}\n  cancel-in-progress: true\n\njobs:\n  format:\n    timeout-minutes: 30\n    name: Check source format\n    runs-on: ubuntu-24.04\n    steps:\n      - name: Checkout PR Source Code\n        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n        with:\n          ref: ${{ github.event.pull_request.head.sha }}\n          persist-credentials: false\n\n      - name: Prep for build\n        run: |\n          echo \"${{ github.event.pull_request.head.sha }}\" >SOURCE_VERSION\n          echo \"BUILDER_DOCKER_HASH=$(git ls-tree --full-tree HEAD -- ./Dockerfile.builder | awk '{ print $3 }')\" >> $GITHUB_ENV\n\n      - name: Wait for build image\n        uses: ./.github/workflows/wait-for-image\n        with:\n          SHA: ${{ env.BUILDER_DOCKER_HASH }}\n          repo: cilium\n          images: cilium-envoy-builder-dev\n\n      - name: Check format\n        uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0\n        id: docker_format_ciak\n        with:\n          target: format\n          provenance: false\n          context: .\n          file: ./Dockerfile\n          platforms: linux/amd64\n          outputs: type=local,dest=check-format-results\n          build-args: |\n            BUILDER_BASE=quay.io/${{ github.repository_owner }}/cilium-envoy-builder-dev:${{ env.BUILDER_DOCKER_HASH }}\n          push: false\n\n      - name: Check for failure\n        run: '! grep \"^Format check failed\" check-format-results/format-output.txt'\n\n      - name: Upload Format results\n        if: failure()\n        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1\n        with:\n          name: check-format-results\n          path: check-format-results/format-output.txt\n          retention-days: 5\n\n  tidy:\n    timeout-minutes: 60\n    name: Lint source style\n    runs-on: ubuntu-24.04\n    steps:\n      - name: Checkout PR Source Code\n        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n        with:\n          persist-credentials: false\n          fetch-depth: 2\n\n      - name: Prep for build\n        run: |\n          echo \"${{ github.event.pull_request.head.sha }}\" >SOURCE_VERSION\n          echo \"BUILDER_DOCKER_HASH=$(git ls-tree --full-tree HEAD -- ./Dockerfile.builder | awk '{ print $3 }')\" >> $GITHUB_ENV\n          # git diff filter has everything else than deleted files (those need not be tidied)\n          echo \"TIDY_SOURCES=$(git diff --name-only --diff-filter=d HEAD^1 HEAD -- '*.h' '*.cc' | tr '\\n' ' ')\" >> $GITHUB_ENV\n\n      - name: Wait for build image\n        uses: ./.github/workflows/wait-for-image\n        with:\n          SHA: ${{ env.BUILDER_DOCKER_HASH }}\n          repo: cilium\n          images: cilium-envoy-builder-dev\n\n      - name: Run clang-tidy\n        uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0\n        # skip if nothing changed\n        if: ${{ env.TIDY_SOURCES != '' }}\n        id: docker_clang_tidy\n        with:\n          target: clang-tidy\n          provenance: false\n          context: .\n          file: ./Dockerfile\n          platforms: linux/amd64\n          outputs: type=local,dest=clang-tidy-results\n          build-args: |\n            BUILDER_BASE=quay.io/${{ github.repository_owner }}/cilium-envoy-builder-dev:${{ env.BUILDER_DOCKER_HASH }}\n            TIDY_SOURCES=${{ env.TIDY_SOURCES }}\n          push: false\n\n      - name: Check for failure\n        run: |\n          if grep -q \"^clang-tidy fix produced changes, please commit them.\" clang-tidy-results/clang-tidy-output.txt; then\n            exit 1\n          fi\n\n      - name: Upload clang-tidy results\n        if: failure()\n        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1\n        with:\n          name: clang-tidy-results\n          path: clang-tidy-results/*.txt\n          retention-days: 5\n"
  },
  {
    "path": ".github/workflows/ci-tests.yaml",
    "content": "name: CI run integration tests\non:\n  pull_request: {}\n\n# By specifying the access of one of the scopes, all of those that are not specified are set to 'none'.\npermissions:\n  # To be able to access the repository with actions/checkout\n  contents: read\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.event.after }}\n  cancel-in-progress: true\n\njobs:\n  proxylib:\n    timeout-minutes: 360\n    name: Run unit tests for proxylib\n    runs-on: ubuntu-latest\n    steps:\n    - name: Install Go\n      uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0\n      with:\n        # renovate: datasource=golang-version depName=go\n        go-version: 1.26.3\n    - name: Checkout code\n      uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n      with:\n        persist-credentials: false\n    - name: Check module vendoring\n      run: |\n        go mod tidy\n        go mod vendor\n        test -z \"$(git status --porcelain)\" || (echo \"please run 'go mod tidy && go mod vendor', and submit your changes\"; exit 1)\n    - name: Run unit tests\n      run: |\n        make -C proxylib test\n\n  tests:\n    timeout-minutes: 360\n    name: Run integration tests on amd64\n    runs-on: ${{ vars.PROXY_BUILD_GITHUB_RUNNER || 'oracle-vm-32cpu-128gb-x86-64' }}\n    steps:\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0\n\n      - name: Cache Docker layers\n        uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5\n        with:\n          path: /tmp/buildx-cache\n          key: docker-cache-tests\n          restore-keys: docker-cache-main\n\n      - name: Checkout PR Source Code\n        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n        with:\n          ref: ${{ github.event.pull_request.head.sha }}\n          persist-credentials: false\n\n      - name: Prep for build\n        run: |\n          echo \"${{ github.event.pull_request.head.sha }}\" >SOURCE_VERSION\n          echo \"BUILDER_DOCKER_HASH=$(git ls-tree --full-tree HEAD -- ./Dockerfile.builder | awk '{ print $3 }')\" >> $GITHUB_ENV\n\n      - name: Wait for build image\n        uses: ./.github/workflows/wait-for-image\n        with:\n          SHA: ${{ env.BUILDER_DOCKER_HASH }}\n          repo: cilium\n          images: cilium-envoy-builder-dev\n\n      - name: Run integration tests on amd64\n        uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0\n        id: docker_tests_ci\n        with:\n          provenance: false\n          context: .\n          file: ./Dockerfile.tests\n          platforms: linux/amd64\n          build-args: |\n            BUILDER_BASE=quay.io/${{ github.repository_owner }}/cilium-envoy-builder-dev:${{ env.BUILDER_DOCKER_HASH }}\n            ARCHIVE_IMAGE=quay.io/${{ github.repository_owner }}/cilium-envoy-builder:test-main-archive-latest\n            BAZEL_BUILD_OPTS=--remote_upload_local_results=false\n            BAZEL_TEST_OPTS=--jobs=HOST_RAM*.0002 --test_timeout=300 --local_test_jobs=4 --flaky_test_attempts=3\n          cache-from: type=local,src=/tmp/buildx-cache\n          push: false\n"
  },
  {
    "path": ".github/workflows/cilium-gateway-api.yaml",
    "content": "name: Cilium Gateway API Tests\non:\n  workflow_call:\n    inputs:\n      repository:\n        description: 'Github Repository to run the workflow on.'\n        type: string\n        required: true\n        default: cilium/proxy\n      commit_ref:\n        description: 'Git commit ref for image.'\n        type: string\n        required: true\n\nconcurrency:\n  group: gateway-api-${{ github.workflow }}-${{ inputs.repository }}-${{ github.event.pull_request.number || github.event.after || inputs.commit_ref }}\n  cancel-in-progress: true\n\n# By specifying the access of one of the scopes, all of those that are not specified are set to 'none'.\npermissions:\n  # To be able to access the repository with actions/checkout\n  contents: read\n  # To allow writing PR comments and setting emojis\n  pull-requests: write\n\nenv:\n  # renovate: datasource=github-releases depName=kubernetes-sigs/kind\n  KIND_VERSION: v0.31.0\n  CILIUM_REPO_OWNER: cilium\n  CILIUM_REPO_REF: main\n  CILIUM_CLI_REF: latest\n  CURL_PARALLEL: ${{ vars.CURL_PARALLEL || 10 }}\n\njobs:\n  cilium-gateway-api-tests:\n    timeout-minutes: 360\n    name: Cilium Gateway API Tests\n    if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target'\n    runs-on: ubuntu-latest\n    steps:\n      - name: Prepare variables for PR\n        if: inputs.commit_ref != ''\n        run: |\n          echo \"PROXY_IMAGE=quay.io/cilium/cilium-envoy-dev\" >> $GITHUB_ENV\n          echo \"PROXY_TAG=${{ inputs.commit_ref }}\" >> $GITHUB_ENV\n\n      - name: Checkout Cilium ${{ env.CILIUM_REPO_REF }}\n        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n        with:\n          repository: ${{ env.CILIUM_REPO_OWNER }}/cilium # Be aware that this is the Cilium repository and not the one of the proxy itself!\n          ref: ${{ env.CILIUM_REPO_REF }}\n          persist-credentials: false\n\n      - name: Extracting Cilium version\n        run: |\n          echo \"CILIUM_IMAGE_TAG=v$(cat ./VERSION)\" >> $GITHUB_ENV\n\n      - name: Install Cilium CLI ${{ env.CILIUM_CLI_REF }}\n        run: |\n          versionPattern=\"^v[0-9]+\\.[0-9]+\\.[0-9]+$\"\n          if [[ ${{ env.CILIUM_CLI_REF }} =~ $versionPattern ]]; then\n            curl -sSL --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${{ env.CILIUM_CLI_REF }}/cilium-linux-amd64.tar.gz{,.sha256sum}\n            sha256sum --check cilium-linux-amd64.tar.gz.sha256sum\n            sudo tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin\n            rm cilium-linux-amd64.tar.gz{,.sha256sum}\n          else\n            cid=$(docker create quay.io/cilium/cilium-cli-ci:${{ env.CILIUM_CLI_REF }} ls)\n            sudo docker cp $cid:/usr/local/bin/cilium /usr/local/bin\n            docker rm $cid\n          fi\n          cilium version\n\n      - name: Create kind cluster\n        uses: helm/kind-action@ef37e7f390d99f746eb8b610417061a60e82a6cc # v1.14.0\n        with:\n          version: ${{ env.KIND_VERSION }}\n          config: '.github/kind-config.yaml'\n          cluster_name: 'kind'\n\n      - name: Install Gateway API CRDs\n        env:\n          timeout: 5m\n        run: |\n          gateway_api_version=$(grep -m 1 \"sigs.k8s.io/gateway-api\" go.mod | awk '{print $2}' | awk -F'-' '{print (NF>2)?$NF:$0}')\n          # Install Gateway CRDs\n          kubectl apply --server-side -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/$gateway_api_version/config/crd/experimental/gateway.networking.k8s.io_gatewayclasses.yaml\n          kubectl apply --server-side -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/$gateway_api_version/config/crd/experimental/gateway.networking.k8s.io_gateways.yaml\n          kubectl apply --server-side -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/$gateway_api_version/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml\n          kubectl apply --server-side -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/$gateway_api_version/config/crd/experimental/gateway.networking.k8s.io_referencegrants.yaml\n          kubectl apply --server-side -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/$gateway_api_version/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml\n          kubectl apply --server-side -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/$gateway_api_version/config/crd/experimental/gateway.networking.k8s.io_backendtlspolicies.yaml\n          ## TLSRoute is only available in experimental channel in v0.7.0\n          kubectl apply --server-side -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/$gateway_api_version/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml\n\n          # To make sure that Gateway API CRs are available\n          kubectl wait --for condition=Established crd/gatewayclasses.gateway.networking.k8s.io --timeout=${{ env.timeout }}\n          kubectl wait --for condition=Established crd/gateways.gateway.networking.k8s.io --timeout=${{ env.timeout }}\n          kubectl wait --for condition=Established crd/httproutes.gateway.networking.k8s.io --timeout=${{ env.timeout }}\n          kubectl wait --for condition=Established crd/tlsroutes.gateway.networking.k8s.io --timeout=${{ env.timeout }}\n          kubectl wait --for condition=Established crd/grpcroutes.gateway.networking.k8s.io --timeout=${{ env.timeout }}\n          kubectl wait --for condition=Established crd/referencegrants.gateway.networking.k8s.io --timeout=${{ env.timeout }}\n\n      - name: Install Cilium\n        timeout-minutes: 10\n        shell: bash\n        run: |\n          cilium install \\\n            --chart-directory install/kubernetes/cilium \\\n            --helm-set kubeProxyReplacement=true \\\n            --helm-set gatewayAPI.enabled=true \\\n            --helm-set l2announcements.enabled=true \\\n            --helm-set bpf.monitorAggregation=none \\\n            --helm-set loadBalancer.l7.backend=envoy \\\n            --helm-set tls.readSecretsOnlyFromSecretsNamespace=true \\\n            --helm-set tls.secretSync.enabled=true \\\n            --helm-set disableEnvoyVersionCheck=true \\\n            --helm-set envoy.image.repository=${{ env.PROXY_IMAGE }} \\\n            --helm-set envoy.image.tag=${{ env.PROXY_TAG }} \\\n            --helm-set envoy.image.useDigest=false \\\n            --helm-set debug.enabled=true \\\n            --helm-set debug.verbose=envoy\n\n          cilium hubble enable\n          cilium status --wait\n          cilium hubble port-forward&\n\n      - name: Install Cilium LB IPPool and L2 Announcement Policy\n        timeout-minutes: 10\n        run: |\n          KIND_NET_CIDR=$(docker network inspect kind -f '{{json .IPAM.Config}}' | jq -r '.[] | select(.Subnet | test(\"^[0-9]+\\\\.[0-9]+\\\\.[0-9]+\\\\.[0-9]+\")) | .Subnet')\n          echo \"KIND_NET_CIDR: $KIND_NET_CIDR\"\n          LB_CIDR=$(echo ${KIND_NET_CIDR} | sed \"s@0.0/16@255.200/28@\")\n          echo \"LB_CIDR: $LB_CIDR\"\n\n          echo \"Deploying LB-IPAM Pool...\"\n          cat << EOF > pool.yaml\n          apiVersion: \"cilium.io/v2\"\n          kind: CiliumLoadBalancerIPPool\n          metadata:\n            name: \"pool\"\n          spec:\n            blocks:\n              - cidr: \"$LB_CIDR\"\n          EOF\n          cat pool.yaml\n          kubectl apply -f pool.yaml\n\n          echo \"Deploying L2-Announcement Policy...\"\n          cat << 'EOF' > l2policy.yaml\n          apiVersion: \"cilium.io/v2alpha1\"\n          kind: CiliumL2AnnouncementPolicy\n          metadata:\n            name: l2policy\n          spec:\n            loadBalancerIPs: true\n            interfaces:\n              - eth0\n            nodeSelector:\n              matchExpressions:\n                - key: node-role.kubernetes.io/control-plane\n                  operator: DoesNotExist\n          EOF\n          cat l2policy.yaml\n          kubectl apply -f l2policy.yaml\n\n      - name: Run Gateway API conformance test\n        timeout-minutes: 30\n        run: |\n          KIND_NET_CIDR=$(docker network inspect kind -f '{{json .IPAM.Config}}' | jq -r '.[] | select(.Subnet | test(\"^[0-9]+\\\\.[0-9]+\\\\.[0-9]+\\\\.[0-9]+\")) | .Subnet')\n          echo \"KIND_NET_CIDR: $KIND_NET_CIDR\"\n          GATEWAY_API_CONFORMANCE_USABLE_NETWORK_ADDRESSES=$(echo ${KIND_NET_CIDR} | sed \"s@0.0/16@255.206@\")\n          GATEWAY_API_CONFORMANCE_UNUSABLE_NETWORK_ADDRESSES=$(echo ${KIND_NET_CIDR} | sed \"s@0.0/16@255.216@\")\n          echo \"GATEWAY_API_CONFORMANCE_USABLE_NETWORK_ADDRESSES: $GATEWAY_API_CONFORMANCE_USABLE_NETWORK_ADDRESSES\"\n          echo \"GATEWAY_API_CONFORMANCE_UNUSABLE_NETWORK_ADDRESSES: $GATEWAY_API_CONFORMANCE_UNUSABLE_NETWORK_ADDRESSES\"\n          EXEMPT_FEATURES=\"HTTPRouteParentRefPort,MeshConsumerRoute\"\n\n          GATEWAY_API_CONFORMANCE_TESTS=1 \\\n            GATEWAY_API_CONFORMANCE_USABLE_NETWORK_ADDRESSES=$GATEWAY_API_CONFORMANCE_USABLE_NETWORK_ADDRESSES  \\\n            GATEWAY_API_CONFORMANCE_UNUSABLE_NETWORK_ADDRESSES=$GATEWAY_API_CONFORMANCE_UNUSABLE_NETWORK_ADDRESSES \\\n            go test \\\n              -p 4 \\\n              -v ./operator/pkg/gateway-api \\\n              --gateway-class cilium \\\n              --all-features \\\n              --exempt-features $EXEMPT_FEATURES \\\n              --allow-crds-mismatch \\\n              -test.run \"TestConformance\" \\\n              -test.timeout=29m \\\n              -test.skip \"${{ steps.vars.outputs.skipped_tests }}\"\n\n      - name: Gather Cilium system dump\n        if: failure()\n        shell: bash\n        run: cilium sysdump --output-filename cilium-sysdump-final\n\n      - name: Upload Cilium system dump\n        if: failure()\n        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1\n        with:\n          name: cilium-gateway-api-test-sysdumps\n          path: cilium-sysdump-*.zip\n          retention-days: 5\n"
  },
  {
    "path": ".github/workflows/cilium-integration-tests.yaml",
    "content": "name: Cilium Integration Tests\non:\n  workflow_call:\n    inputs:\n      repository:\n        description: 'Github Repository to run the workflow on.'\n        type: string\n        required: true\n        default: cilium/proxy\n      commit_ref:\n        description: 'Git commit ref for image.'\n        type: string\n        required: true\n\nconcurrency:\n  group: integration-test-${{ github.workflow }}-${{ inputs.repository }}-${{ github.event.pull_request.number || github.event.after || inputs.commit_ref }}\n  cancel-in-progress: true\n\n# By specifying the access of one of the scopes, all of those that are not specified are set to 'none'.\npermissions:\n  # To be able to access the repository with actions/checkout\n  contents: read\n  # To allow writing PR comments and setting emojis\n  pull-requests: write\n\nenv:\n  # renovate: datasource=github-releases depName=kubernetes-sigs/kind\n  KIND_VERSION: v0.31.0\n  CILIUM_REPO_OWNER: cilium\n  CILIUM_REPO_REF: main\n  CILIUM_CLI_REF: latest\n  CURL_PARALLEL: ${{ vars.CURL_PARALLEL || 10 }}\n\njobs:\n  cilium-connectivity-tests:\n    timeout-minutes: 360\n    name: Cilium Connectivity Tests\n    if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target'\n    runs-on: ubuntu-latest\n    steps:\n      - name: Prepare variables for pushes to main\n        if: github.event_name == 'push'\n        run: |\n          echo \"PROXY_IMAGE=quay.io/cilium/cilium-envoy\" >> $GITHUB_ENV\n          echo \"PROXY_TAG=${{ github.sha }}\" >> $GITHUB_ENV\n          echo \"PROXY_GITHUB_REPO=github.com/cilium/proxy\" >> $GITHUB_ENV\n\n      - name: Prepare variables for PR\n        if: inputs.commit_ref != ''\n        run: |\n          echo \"PROXY_IMAGE=quay.io/cilium/cilium-envoy-dev\" >> $GITHUB_ENV\n          echo \"PROXY_TAG=${{ inputs.commit_ref }}\" >> $GITHUB_ENV\n          echo \"PROXY_GITHUB_REPO=github.com/${{ inputs.repository }}\" >> $GITHUB_ENV\n\n      - name: Checkout Cilium ${{ env.CILIUM_REPO_REF }}\n        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n        with:\n          repository: ${{ env.CILIUM_REPO_OWNER }}/cilium # Be aware that this is the Cilium repository and not the one of the proxy itself!\n          ref: ${{ env.CILIUM_REPO_REF }}\n          persist-credentials: false\n\n      - name: Extracting Cilium version\n        run: |\n          echo \"CILIUM_IMAGE_TAG=v$(cat ./VERSION)\" >> $GITHUB_ENV\n\n      - name: Install Cilium CLI ${{ env.CILIUM_CLI_REF }}\n        run: |\n          versionPattern=\"^v[0-9]+\\.[0-9]+\\.[0-9]+$\"\n          if [[ ${{ env.CILIUM_CLI_REF }} =~ $versionPattern ]]; then\n            curl -sSL --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${{ env.CILIUM_CLI_REF }}/cilium-linux-amd64.tar.gz{,.sha256sum}\n            sha256sum --check cilium-linux-amd64.tar.gz.sha256sum\n            sudo tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin\n            rm cilium-linux-amd64.tar.gz{,.sha256sum}\n          else\n            cid=$(docker create quay.io/cilium/cilium-cli-ci:${{ env.CILIUM_CLI_REF }} ls)\n            sudo docker cp $cid:/usr/local/bin/cilium /usr/local/bin\n            docker rm $cid\n          fi\n          cilium version\n\n      - name: Create kind cluster\n        uses: helm/kind-action@ef37e7f390d99f746eb8b610417061a60e82a6cc # v1.14.0\n        with:\n          version: ${{ env.KIND_VERSION }}\n          config: '.github/kind-config.yaml'\n          cluster_name: 'kind'\n\n      - name: Install Go\n        uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0\n        with:\n          # renovate: datasource=golang-version depName=go\n          go-version: 1.26.3\n\n      - name: Install Cilium\n        timeout-minutes: 10\n        shell: bash\n        run: |\n          cilium install \\\n            --chart-directory install/kubernetes/cilium \\\n            --helm-set bpf.monitorAggregation=none \\\n            --helm-set loadBalancer.l7.backend=envoy \\\n            --helm-set=tls.readSecretsOnlyFromSecretsNamespace=true \\\n            --helm-set=tls.secretSync.enabled=true \\\n            --helm-set envoy.image.repository=${{ env.PROXY_IMAGE }} \\\n            --helm-set envoy.image.tag=${{ env.PROXY_TAG }} \\\n            --helm-set envoy.image.useDigest=false \\\n            --helm-set disableEnvoyVersionCheck=true \\\n            --helm-set debug.enabled=true \\\n            --helm-set debug.verbose=envoy\n\n          cilium status --wait\n\n      - name: Execute Cilium L7 Connectivity Tests\n        shell: bash\n        run: |\n          cilium connectivity test \\\n          --test=\"l7|sni|tls|ingress|check-log-errors\" \\\n          --curl-parallel=${{ env.CURL_PARALLEL }} \\\n          --collect-sysdump-on-failure --flush-ct \\\n          --flow-validation=disabled \\\n          --test-concurrency=5\n\n      - name: Gather Cilium system dump\n        if: failure()\n        shell: bash\n        run: cilium sysdump --output-filename cilium-sysdump-final\n\n      - name: Upload Cilium system dump\n        if: failure()\n        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1\n        with:\n          name: cilium-integration-test-sysdumps\n          path: cilium-sysdump-*.zip\n          retention-days: 5\n"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "content": "name: CodeQL\n\non: \n  workflow_dispatch:\n  schedule:\n    # Run at the end of every day from Monday to Friday\n    - cron: '0 0 * * 1-5'\n\njobs:\n  analyze:\n    name: Analyze\n    runs-on: ${{ matrix.config.runner }}\n    permissions:\n      actions: read\n      contents: read\n      security-events: write\n    strategy:\n      fail-fast: false\n      matrix:\n        config:\n          - runner: ubuntu-24.04\n            language: 'actions'\n          - runner: ubuntu-24.04\n            language: 'go'\n          - runner: ${{ vars.PROXY_BUILD_GITHUB_RUNNER }}\n            language: 'cpp'\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6\n      - name: Initialize CodeQL\n        uses: github/codeql-action/init@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4\n        with:\n          languages: ${{ matrix.config.language }}\n\n      - name: Install deps (for C++)\n        if: matrix.config.language == 'cpp'\n        shell: bash\n        run: |\n          sudo apt-get update --error-on=any\n          sudo apt-get install --yes \\\n          libtool libtinfo5 automake autoconf curl unzip\n          # Note: the llvm/clang version should match the version specifed in:\n          #  - bazel/repository_locations.bzl\n          #  - .github/workflows/codeql-push.yml\n          #  - https://github.com/envoyproxy/envoy-build-tools/blob/main/build_container/build_container_ubuntu.sh#L84\n          mkdir -p bin/clang18.1.8\n          cd bin/clang18.1.8\n          wget -q https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.8/clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz\n          tar -xf clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz --strip-components 1\n\n      - name: Build (for C++)\n        if: matrix.config.language == 'cpp'\n        run: |\n          bazel/setup_clang.sh bin/clang18.1.8\n          bazelisk shutdown\n          CARGO_BAZEL_REPIN=true bazel build \\\n          -c fastbuild \\\n          --spawn_strategy=local \\\n          --discard_analysis_cache \\\n          --nouse_action_cache \\\n          --features=\"-layering_check\" \\\n          --config=clang \\\n          --config=ci \\\n          cilium-envoy\n\n      - name: Autobuild\n        if: matrix.config.language != 'cpp'\n        uses: github/codeql-action/autobuild@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4\n\n      - name: Perform CodeQL Analysis\n        uses: github/codeql-action/analyze@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4\n        with:\n          category: '/language:${{matrix.config.language}}'\n          output: sarif-output-${{ matrix.config.language }}.sarif\n      - name: Filter SARIF Results\n        run: |\n          REPO_URL=\"https://github.com/${{ github.repository }}/blob/${{ github.ref_name }}/\"\n          jq --arg baseUrl \"$REPO_URL\" '[.runs[].results[] |\n            {\n              ruleId: .ruleId,\n              message: .message.text,\n              url: \"\\($baseUrl)\\(.locations[0].physicalLocation.artifactLocation.uri)#L\\(.locations[0].physicalLocation.region.startLine)\\(if .locations[0].physicalLocation.region.endLine != null then \"-L\\(.locations[0].physicalLocation.region.endLine)\" else \"\" end)\"\n            }]' sarif-output-${{ matrix.config.language }}.sarif/${{ matrix.config.language }}.sarif > filtered-${{ matrix.config.language }}.json\n      - name: Display Filtered Results\n        run: cat filtered-${{ matrix.config.language }}.json\n      - name: Send Slack Notification\n        env:\n          SEC_BOT_SLACK_WEBHOOK: ${{ secrets.SEC_BOT_SLACK_WEBHOOK }}\n          CHANNEL: \"#security-team\"\n        run: |\n          jq -c '.[]' filtered-${{ matrix.config.language }}.json | while read -r item; do\n            RULE_ID=$(echo \"$item\" | jq -r '.ruleId')\n            MESSAGE=$(echo \"$item\" | jq -r '.message')\n            URL=$(echo \"$item\" | jq -r '.url')\n\n            PAYLOAD=$(cat <<EOF\n          {\n            \"channel\": \"$CHANNEL\",\n            \"blocks\": [\n              {\n                \"type\": \"header\",\n                \"text\": {\n                  \"type\": \"plain_text\",\n                  \"text\": \"🚨 CodeQL Alert for ${{ matrix.config.language }} 🚨\",\n                  \"emoji\": true\n                }\n              },\n              {\n                \"type\": \"section\",\n                \"text\": {\n                  \"type\": \"mrkdwn\",\n                  \"text\": \"*Rule:* $RULE_ID\"\n                }\n              },\n              {\n                \"type\": \"section\",\n                \"text\": {\n                  \"type\": \"mrkdwn\",\n                  \"text\": \"*Message:* $MESSAGE\"\n                }\n              },\n              {\n                \"type\": \"section\",\n                \"text\": {\n                  \"type\": \"mrkdwn\",\n                  \"text\": \"*File:* $URL\"\n                }\n              }\n            ]\n          }\n          EOF\n            )\n\n            curl -X POST -H \"Authorization: Bearer $SEC_BOT_SLACK_WEBHOOK\" \\\n                  -H \"Content-type: application/json\" \\\n                  --data-raw \"$PAYLOAD\" https://slack.com/api/chat.postMessage\n          done\n"
  },
  {
    "path": ".github/workflows/renovate-config-validator.yaml",
    "content": "name: Validate Renovate configuration\n\non:\n  pull_request:\n    paths:\n      - '.github/renovate.json5'\n\npermissions:\n  contents: read\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.event.after }}\n  cancel-in-progress: true\n\njobs:\n  validate:\n    name: Validate Renovate configuration\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout configuration\n        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n\n      # this step uses latest renovate slim release\n      - name: Validate configuration\n        run: >\n          # renovate: datasource=docker\n          export RENOVATE_IMAGE=ghcr.io/renovatebot/renovate:39.98.0@sha256:43e35242449741dab5e60510ba39704a720422f83fdaa495709bc1e0f141625d\n          docker run --rm --entrypoint \"renovate-config-validator\"\n          -v \"${{ github.workspace }}/.github/renovate.json5\":\"/renovate.json5\"\n          ${RENOVATE_IMAGE} \"/renovate.json5\"\n\n"
  },
  {
    "path": ".github/workflows/wait-for-image/action.yaml",
    "content": "name: Wait for images\ndescription: Wait for images\ninputs:\n  SHA:\n    description: 'inputs.sha'\n    required: true\n    default: 'incorrect-sha'\n  repo:\n    description: 'Repo for container image'\n    required: true\n    default: 'cilium'\n  images:\n    description: 'list of images to wait for'\n    required: false\n    default: 'cilium-envoy-builder-dev'\n\nruns:\n  using: composite\n  steps:\n    - name: Wait for images\n      shell: bash\n      run: |\n        images=( ${{ inputs.images }} )\n        for image in ${images[@]}; do\n          until docker manifest inspect quay.io/${{ inputs.repo }}/$image:${{ inputs.SHA }} &> /dev/null\n          do\n            echo \"Waiting for quay.io/${{ inputs.repo }}/$image:${{ inputs.SHA }} image to become available...\"\n            sleep 45s\n          done\n        done\n"
  },
  {
    "path": ".gitignore",
    "content": "# Dot files, disallow by default, and enable explicitly\n\\.*\n!\\.bazelrc\n!\\.bazelversion\n!\\.clangd\n!\\.clang-format\n!\\.clang-tidy\n!\\.github\n!\\.gitignore\n\n*.plist\n\n*cscope.files\n*cscope.out\n*cscope.in.out\n*cscope.po.out\n*tags\n\n# Bazel symlinks\n/bazel-*\n\n/cilium-envoy\n/cilium-envoy-starter\n/Dockerfile.builder-refresh\n\n/*\\.dockerignore\n\n# Emacs backup files\n*~\n\n# To run Envoy tests under gdb do \"cd envoy && make debug && ln -s bazel-envoy/external external\"\n/external\n\n# generated from make targets\n*.ok\n/proxylib/libcilium.so\n\n# Istio porting files \n/envoy_bootstrap*.json\n\n# Clang config is platform-specific\n/clang.bazelrc\n\n# generated for docker builds via make\n/SOURCE_VERSION\n\n/proxylib/libcilium.so*\n/proxylib/_obj*\n\n/BUILD_DEP_HASHES\n\n# clangd compilation database\n/compile_commands.json\n"
  },
  {
    "path": "BUILD",
    "content": "load(\n    \"@envoy//bazel:envoy_build_system.bzl\",\n    \"envoy_cc_binary\",\n    \"envoy_package\",\n)\n\nlicenses([\"notice\"])  # Apache 2\n\nenvoy_package()\n\nexports_files([\n    \"linux/bpf.h\",\n    \"linux/bpf_common.h\",\n    \"linux/type_mapper.h\",\n])\n\ncc_binary(\n    name = \"cilium-envoy-starter\",\n    deps = [\n        \"//starter:main_entry_lib\",\n    ],\n)\n\nenvoy_cc_binary(\n    name = \"cilium-envoy\",\n    repository = \"@envoy\",\n    deps = [\n        # Cilium filters.\n        \"//cilium:health_check_sink_lib\",\n        \"//cilium:bpf_metadata_lib\",\n        \"//cilium:network_filter_lib\",\n        \"//cilium:l7policy_lib\",\n        \"//cilium:websocket_lib\",\n        \"//cilium:tls_wrapper_lib\",\n        \"@envoy//source/exe:envoy_main_entry_lib\",\n    ],\n)\n\nsh_test(\n    name = \"envoy_binary_test\",\n    srcs = [\"envoy_binary_test.sh\"],\n    data = [\":cilium-envoy\"],\n)\n\nsh_binary(\n    name = \"check_format.py\",\n    srcs = [\"@envoy//tools/code_format:check_format.py\"],\n    data = [\n        \":envoy_build_fixer.py\",\n        \":header_order.py\",\n    ],\n)\n\nsh_binary(\n    name = \"header_order.py\",\n    srcs = [\"@envoy//tools/code_format:header_order.py\"],\n)\n\nsh_binary(\n    name = \"envoy_build_fixer.py\",\n    srcs = [\"@envoy//tools/code_format:envoy_build_fixer.py\"],\n)\n"
  },
  {
    "path": "CODEOWNERS",
    "content": "* @cilium/envoy\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing to cilium/proxy\n\nThe `cilium/proxy` repository is a minimal fork of the **Envoy Proxy** project. Its primary purpose is to integrate necessary **Cilium-specific filters and extensions** that cannot yet be upstreamed or are highly specific to Cilium's architecture.\n\nOur goal is to remain as close to upstream Envoy as possible. Therefore, we highly encourage an **\"upstream-first\"** contribution policy.\n\n### 1. Upstream-First Contributions (Recommended)\n\nFor the health of this project and the broader community, if your contribution falls into any of the following categories, **please contribute it directly to the official [Envoy Proxy repository](https://github.com/envoyproxy/envoy)**:\n\n* General bug fixes.\n* Performance improvements.\n* New general-purpose features or functionality.\n* Updates to core code or existing standard filters.\n* Build system improvements that benefit all Envoy users.\n\nThis approach ensures the Cilium project benefits from the standard community review process and helps reduce maintenance overhead in this fork.\n\n### 2. Cilium-Specific Contributions\n\nContributions to the `cilium/proxy` repository should be limited to code that is **strictly necessary for Cilium's functionality**, primarily:\n\n* New Cilium-specific L7 network filters.\n* Modifications required for deep Cilium integration (e.g., changes for a Cilium-specific API).\n* Updates to the repository's build system/scripts required for Cilium's consumption.\n\n#### Submitting a Contribution\n\n1.  **Open an Issue:** Before starting any significant work, please open an issue to discuss your proposed change.\n2.  **Fork and Branch:** Fork this repository and create a new branch for your feature or fix.\n3.  **Submit a Pull Request (PR):**\n    * Ensure your code follows existing style conventions.\n    * If the change relates to a known issue or a PR you submitted upstream, **please link to the relevant upstream Envoy issue or PR** in your submission.\n\n### 3. Contributor Ladder\n\n`cilium/proxy` is a sub-project of the Cilium project and follows the same governance model, community processes, and contributor growth paths as Cilium. To support contributors in gaining both privileges and responsibilities, we adopt the shared [Contributor Ladder](https://github.com/cilium/community/blob/main/CONTRIBUTOR-LADDER.md). This contributor ladder defines how contributors can grow from community participants to project maintainers, along with the expectations at each level.\n\nCommunity members generally start at the first levels of the ladder and advance as their involvement deepens. Becoming a Cilium organization member grants additional privileges across the project ecosystem, such as the ability to review pull requests or trigger CI runs. If you are contributing regularly to `cilium/proxy`, we encourage you to join the \n[Envoy team](https://github.com/cilium/community/blob/main/ladder/teams/envoy.yaml) to help review code and accelerate development.\n\nYour contributions play a vital role in improving the project, and the community is here to support you every step of the way. Thank you for helping us maintain a minimal and effective fork!\n"
  },
  {
    "path": "Dockerfile",
    "content": "# \n# BUILDER_BASE is a multi-platform image with all the build tools\n#\nARG BUILDER_BASE=quay.io/cilium/cilium-envoy-builder:6.1.0-latest\n\n#\n# ARCHIVE_IMAGE defaults to the result of the first stage below,\n# refreshing the build caches from Envoy dependencies before the final\n# build stage. This can be overridden on docker build command line to\n# use pre-built dependencies. Note that if cross-compiling, these\n# pre-built dependencies will include BUILDPLATFORM build tools and\n# TARGETPLATFORM build artifacts, and thus can only be reused when\n# building on the same BUILDPLATFORM.\n#\nARG ARCHIVE_IMAGE=builder-fresh\n\nFROM --platform=$BUILDPLATFORM $BUILDER_BASE AS proxylib\nWORKDIR /go/src/github.com/cilium/proxy\nCOPY --chown=1337:1337 . ./\nARG TARGETARCH\nENV TARGETARCH=$TARGETARCH\nRUN --mount=mode=0777,gid=1337,uid=1337,target=/cilium/proxy/.cache,type=cache \\\n    --mount=mode=0777,gid=1337,uid=1337,target=/go/pkg,type=cache \\\n    PATH=$PATH:/usr/local/go/bin GOARCH=${TARGETARCH} make -C proxylib all && mv proxylib/libcilium.so /tmp/libcilium.so\n\nFROM --platform=$BUILDPLATFORM $BUILDER_BASE AS builder-fresh\nLABEL maintainer=\"maintainer@cilium.io\"\nWORKDIR /cilium/proxy\nCOPY . ./\nARG V\nARG BAZEL_BUILD_OPTS\nARG DEBUG\nARG BUILDARCH\nARG TARGETARCH\nENV TARGETARCH=$TARGETARCH\n#\n# Clear runner's cache when building deps\n#\nRUN --mount=mode=0777,uid=1337,gid=1337,target=/cilium/proxy/.cache,type=cache,id=$TARGETARCH,sharing=private rm -rf /cilium/proxy/.cache/*\n#\n# Build dependencies from scratch (no cache mounts, not archive mount)\n#\nRUN BAZEL_BUILD_OPTS=\"${BAZEL_BUILD_OPTS} --disk_cache=/tmp/bazel-cache\" PKG_BUILD=1 V=$V DEBUG=$DEBUG DESTDIR=/tmp/install make bazel-bin/cilium-envoy-starter bazel-bin/cilium-envoy\n\n# By default this stage picks up the result of the build above, but ARCHIVE_IMAGE can be\n# overridden to point to a saved image of an earlier run of that stage.\n# Must pick the TARGETPLATFORM image here, so NO --platform=$BUILDPLATFORM, otherwise cross-compilation\n# will pick up build-artifacts for the build platform when an external image is used.\nFROM $ARCHIVE_IMAGE AS builder-cache\n\n#\n# Release builder, uses 'builder-cache' from $ARCHIVE_IMAGE\n#\n# Persist Bazel disk cache by passing COPY_CACHE=1\n#\nFROM --platform=$BUILDPLATFORM $BUILDER_BASE AS builder\nLABEL maintainer=\"maintainer@cilium.io\"\nWORKDIR /cilium/proxy\nCOPY . ./\nARG V\nARG COPY_CACHE_EXT\nARG BAZEL_BUILD_OPTS\nARG DEBUG\nARG RELEASE_DEBUG\nARG BUILDARCH\nARG TARGETARCH\nENV TARGETARCH=$TARGETARCH\nRUN ./bazel/get_workspace_status\nRUN --mount=mode=0777,uid=1337,gid=1337,target=/cilium/proxy/.cache,type=cache,id=$TARGETARCH,sharing=private \\\n    --mount=target=/tmp/bazel-cache,source=/tmp/bazel-cache,from=builder-cache,rw \\\n    if [ -f /tmp/bazel-cache/ENVOY_VERSION ]; then CACHE_ENVOY_VERSION=`cat /tmp/bazel-cache/ENVOY_VERSION`; ENVOY_VERSION=`cat ENVOY_VERSION`; if [ \"${CACHE_ENVOY_VERSION}\" != \"${ENVOY_VERSION}\" ]; then echo \"Building Envoy ${ENVOY_VERSION} with bazel archive from different Envoy version (${CACHE_ENVOY_VERSION})\"; else echo \"Building Envoy ${ENVOY_VERSION} with bazel cache of the same version\"; fi; else echo \"Bazel cache has no ENVOY_VERSION, it may be empty.\"; fi && \\\n    touch /tmp/bazel-cache/permissions-check && \\\n    if [ -n \"${COPY_CACHE_EXT}\" ]; then PKG_BUILD=1 make BUILD_DEP_HASHES; if [ -f /tmp/bazel-cache/BUILD_DEP_HASHES ] && ! diff BUILD_DEP_HASHES /tmp/bazel-cache/BUILD_DEP_HASHES; then echo \"Build dependencies have changed, clearing bazel cache\"; rm -rf /tmp/bazel-cache/*; rm -rf /cilium/proxy/.cache/*; fi ; cp BUILD_DEP_HASHES ENVOY_VERSION /tmp/bazel-cache; fi && \\\n    BAZEL_BUILD_OPTS=\"${BAZEL_BUILD_OPTS} --disk_cache=/tmp/bazel-cache\" PKG_BUILD=1 V=$V DEBUG=$DEBUG RELEASE_DEBUG=$RELEASE_DEBUG DESTDIR=/tmp/install make install && \\\n    if [ -n \"${COPY_CACHE_EXT}\" ]; then cp -ra /tmp/bazel-cache /tmp/bazel-cache${COPY_CACHE_EXT}; ls -la /tmp/bazel-cache${COPY_CACHE_EXT}; fi\n#\n# Copy proxylib after build to allow install as non-root to succeed\n#\nCOPY --from=proxylib /tmp/libcilium.so /tmp/install/usr/lib/libcilium.so\n\nFROM scratch AS empty-builder-archive\nLABEL maintainer=\"maintainer@cilium.io\"\nUSER 1337:1337\nWORKDIR /tmp/bazel-cache\n\n# This stage retains only the build caches from the previous step. This is used as the target for persisting\n# Bazel build caches for later re-use.\nFROM empty-builder-archive AS builder-archive\nARG COPY_CACHE_EXT\nCOPY --from=builder /tmp/bazel-cache${COPY_CACHE_EXT}/ /tmp/bazel-cache/\n\n# Format check\nFROM --platform=$BUILDPLATFORM $BUILDER_BASE AS check-format\nLABEL maintainer=\"maintainer@cilium.io\"\nWORKDIR /cilium/proxy\nCOPY --chown=1337:1337 . ./\nARG V\nARG BAZEL_BUILD_OPTS\nARG DEBUG\nARG TARGETARCH\nENV TARGETARCH=$TARGETARCH\n#\n# Check format\n#\nRUN BAZEL_BUILD_OPTS=\"${BAZEL_BUILD_OPTS}\" PKG_BUILD=1 V=$V DEBUG=$DEBUG make V=1 format > format-output.txt\n\nFROM scratch AS format\nCOPY --from=check-format /cilium/proxy/format-output.txt /\n\n# clang-tidy\nFROM --platform=$BUILDPLATFORM $BUILDER_BASE AS run-clang-tidy-fix\nLABEL maintainer=\"maintainer@cilium.io\"\nWORKDIR /cilium/proxy\nCOPY --chown=1337:1337 . ./a\nCOPY --chown=1337:1337 . ./b\nARG V\nARG BAZEL_BUILD_OPTS\nARG DEBUG\nARG TIDY_SOURCES=\"cilium/*.h cilium/*.cc tests/*.h tests/*.cc starter/*.h starter/*.cc\"\nARG TARGETARCH\nENV TARGETARCH=$TARGETARCH\n#\n# Run clang tidy\n#\nRUN --mount=mode=0777,uid=1337,gid=1337,target=/cilium/proxy/.cache,type=cache TIDY_SOURCES=\"${TIDY_SOURCES}\" BAZEL_BUILD_OPTS=\"${BAZEL_BUILD_OPTS}\" PKG_BUILD=1 V=$V DEBUG=$DEBUG make -C b V=1 tidy-fix 2>&1 | tee /cilium/proxy/clang-tidy-output.txt && for file in ${TIDY_SOURCES}; do echo \"\\$ diff a/$file b/$file\"  >> /cilium/proxy/clang-tidy-diff.txt && diff \"a/$file\" \"b/$file\" >> /cilium/proxy/clang-tidy-diff.txt || true; done\n\nFROM scratch AS clang-tidy\nCOPY --from=run-clang-tidy-fix /cilium/proxy/*.txt /\n\n#\n# Extract installed cilium-envoy binaries to an otherwise empty image\n#\nFROM docker.io/library/ubuntu:24.04@sha256:c4a8d5503dfb2a3eb8ab5f807da5bc69a85730fb49b5cfca2330194ebcc41c7b\nLABEL maintainer=\"maintainer@cilium.io\"\n# install ca-certificates package\nRUN apt-get update && apt-get upgrade -y \\\n    && apt-get install --no-install-recommends -y ca-certificates libatomic1 \\\n    && apt-get autoremove -y && apt-get clean \\\n    && rm -rf /tmp/* /var/tmp/* \\\n    && rm -rf /var/lib/apt/lists/*\nCOPY --from=builder /tmp/install /\n"
  },
  {
    "path": "Dockerfile.builder",
    "content": "#\n# Builder dependencies. This takes a long time to build from scratch!\n# Also note that if build fails due to C++ internal error or similar,\n# it is possible that the image build needs more RAM than available by\n# default on non-Linux docker installs.\nFROM docker.io/library/ubuntu:24.04@sha256:c4a8d5503dfb2a3eb8ab5f807da5bc69a85730fb49b5cfca2330194ebcc41c7b AS base\nLABEL maintainer=\"maintainer@cilium.io\"\nARG TARGETARCH\n# Setup TimeZone to prevent tzdata package asking for it interactively\nENV TZ=Etc/UTC\n\n# renovate: datasource=golang-version depName=go\nENV GO_VERSION=1.26.3\n\nRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone\nRUN apt-get update && \\\n    apt-get upgrade -y --no-install-recommends && \\\n    apt-get install -y --no-install-recommends \\\n      ca-certificates \\\n      # Multi-arch cross-compilation packages\n      gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-dev-arm64-cross binutils-aarch64-linux-gnu \\\n      gcc-x86-64-linux-gnu g++-x86-64-linux-gnu libc6-dev-amd64-cross binutils-x86-64-linux-gnu \\\n      libc6-dev \\\n      # Envoy Build dependencies\n      autoconf automake cmake coreutils curl git libtool make ninja-build patch patchelf libatomic1 \\\n\tpython3 python-is-python3 unzip virtualenv wget zip \\\n      # Cilium-envoy build dependencies\n      software-properties-common && \\\n    wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc && \\\n    apt-add-repository -y \"deb http://apt.llvm.org/noble/ llvm-toolchain-noble-18 main\" && \\\n    apt-get update && \\\n    apt-get install -y --no-install-recommends \\\n      clang-18 clang-tidy-18 clang-tools-18 llvm-18-dev lldb-18 lld-18 clang-format-18 libc++-18-dev libc++abi-18-dev && \\\n    # Create unversioned symlinks so tools are available without -18 suffix\n    ln -sf /usr/bin/clang-18 /usr/bin/clang && \\\n    ln -sf /usr/bin/clang++-18 /usr/bin/clang++ && \\\n    ln -sf /usr/bin/clang-cpp-18 /usr/bin/clang-cpp && \\\n    ln -sf /usr/bin/lld-18 /usr/bin/lld && \\\n    ln -sf /usr/bin/ld.lld-18 /usr/bin/ld.lld && \\\n    ln -sf /usr/bin/lldb-18 /usr/bin/lldb && \\\n    ln -sf /usr/bin/clang-format-18 /usr/bin/clang-format && \\\n    ln -sf /usr/bin/clang-tidy-18 /usr/bin/clang-tidy && \\\n    ln -sf /usr/bin/run-clang-tidy-18 /usr/bin/run-clang-tidy && \\\n    ln -sf /usr/bin/llvm-ar-18 /usr/bin/llvm-ar && \\\n    ln -sf /usr/bin/llvm-nm-18 /usr/bin/llvm-nm && \\\n    ln -sf /usr/bin/llvm-strip-18 /usr/bin/llvm-strip && \\\n    ln -sf /usr/bin/llvm-objcopy-18 /usr/bin/llvm-objcopy && \\\n    ln -sf /usr/bin/llvm-objdump-18 /usr/bin/llvm-objdump && \\\n    ln -sf /usr/bin/llvm-dwp-18 /usr/bin/llvm-dwp && \\\n    ln -sf /usr/bin/llvm-cov-18 /usr/bin/llvm-cov && \\\n    ln -sf /usr/bin/llvm-config-18 /usr/bin/llvm-config && \\\n    apt-get purge --auto-remove && \\\n    apt-get clean && \\\n    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*\n\n#\n# Install Bazelisk\n#\n# renovate: datasource=github-releases depName=bazelbuild/bazelisk\nENV BAZELISK_VERSION=v1.29.0\n\nRUN ARCH=$TARGETARCH \\\n\t&& curl -sfL https://github.com/bazelbuild/bazelisk/releases/download/${BAZELISK_VERSION}/bazelisk-linux-${ARCH} -o /usr/bin/bazel \\\n\t&& chmod +x /usr/bin/bazel\n#\n# Install Go\n#\nRUN curl -sfL https://go.dev/dl/go${GO_VERSION}.linux-${TARGETARCH}.tar.gz -o go.tar.gz \\\n\t&& tar -C /usr/local -xzf go.tar.gz \\\n\t&& rm go.tar.gz \\\n\t&& export PATH=$PATH:/usr/local/go/bin \\\n\t&& go version\n#\n# Switch to non-root user for builds\n#\nRUN groupadd -f -g 1337 cilium && useradd -m -d /cilium/proxy -g cilium -u 1337 cilium\nUSER 1337:1337\nWORKDIR /cilium/proxy\n"
  },
  {
    "path": "Dockerfile.tests",
    "content": "# \n# BUILDER_BASE is a multi-platform image with all the build tools\n#\nARG BUILDER_BASE=quay.io/cilium/cilium-envoy-builder:6.5.0-latest@sha256:3f98b069a4c4737d8252fdf47f77d9f7e27ef5acb1bec13af3619180d6baee23\n\n# Common Builder image used in cilium/cilium\nARG PROXYLIB_BUILDER=quay.io/cilium/cilium-builder:767c4152bb156a879fca4c5b76f445de4b4cdaa9@sha256:26392846fa25ab2607c120ece242d61365724a5f21e85f5733f72221637b70fa\n\n#\n# ARCHIVE_IMAGE defaults to the result of the first stage below,\n# refreshing the build caches from Envoy dependencies before the final\n# build stage. This can be overridden on docker build command line to\n# use pre-built dependencies. Note that if cross-compiling, these\n# pre-built dependencies will include BUILDPLATFORM build tools and\n# TARGETPLATFORM build artifacts, and thus can only be reused when\n# building on the same BUILDPLATFORM.\n#\nARG ARCHIVE_IMAGE=builder-fresh\n\nFROM --platform=$BUILDPLATFORM $PROXYLIB_BUILDER AS proxylib\nWORKDIR /go/src/github.com/cilium/proxy\nARG TARGETARCH\nRUN --mount=type=bind,readwrite,target=/go/src/github.com/cilium/proxy --mount=mode=0777,target=/cilium/proxy/.cache,type=cache --mount=mode=0777,target=/go/pkg,type=cache \\\n    GOARCH=${TARGETARCH} make -C proxylib all && mv proxylib/libcilium.so /tmp/libcilium.so\n\nFROM --platform=$BUILDPLATFORM $BUILDER_BASE AS builder-fresh\nLABEL maintainer=\"maintainer@cilium.io\"\nWORKDIR /cilium/proxy\nCOPY . ./\nARG V\nARG BAZEL_BUILD_OPTS\nARG DEBUG\nARG BUILDARCH\nARG TARGETARCH\nARG NO_CACHE\nENV TARGETARCH=$TARGETARCH\n\n#\n# Build dependencies\n#\n# Make proxylib available for building the test dependencies by copying it before running the tests\nCOPY --from=proxylib /tmp/libcilium.so proxylib/libcilium.so\nRUN BAZEL_BUILD_OPTS=\"${BAZEL_BUILD_OPTS} --disk_cache=/tmp/bazel-cache\" PKG_BUILD=1 V=$V DEBUG=$DEBUG make envoy-test-deps\n\n# By default this stage picks up the result of the build above, but ARCHIVE_IMAGE can be\n# overridden to point to a saved image of an earlier run of that stage.\nFROM $ARCHIVE_IMAGE AS archive-cache\n\nFROM --platform=$BUILDPLATFORM $BUILDER_BASE AS builder\nLABEL maintainer=\"maintainer@cilium.io\"\nWORKDIR /cilium/proxy\nCOPY . ./\nARG V\nARG COPY_CACHE_EXT\nARG BAZEL_BUILD_OPTS\nARG DEBUG\nARG TARGETARCH\nENV TARGETARCH=$TARGETARCH\n\n# Clear runner's cache when building deps\nRUN --mount=mode=0777,uid=1337,gid=1337,target=/cilium/proxy/.cache,type=cache,id=$TARGETARCH,sharing=private rm -rf /cilium/proxy/.cache/*\n# Make proxylib available for building the test dependencies by copying it before running the tests\nCOPY --from=proxylib /tmp/libcilium.so proxylib/libcilium.so\nRUN --mount=target=/tmp/bazel-cache,source=/tmp/bazel-cache,from=archive-cache,rw \\\n    if [ -f /tmp/bazel-cache/ENVOY_VERSION ]; then CACHE_ENVOY_VERSION=`cat /tmp/bazel-cache/ENVOY_VERSION`; ENVOY_VERSION=`cat ENVOY_VERSION`; if [ \"${CACHE_ENVOY_VERSION}\" != \"${ENVOY_VERSION}\" ]; then echo \"Testing Envoy ${ENVOY_VERSION} with bazel archive from different Envoy version (${CACHE_ENVOY_VERSION})\"; else echo \"Testing Envoy ${ENVOY_VERSION} with bazel cache of the same version\"; fi; else echo \"Bazel cache has no ENVOY_VERSION, it may be empty.\"; fi && \\\n    touch /tmp/bazel-cache/permissions-check && \\\n    if [ -n \"${COPY_CACHE_EXT}\" ]; then PKG_BUILD=1 make BUILD_DEP_HASHES; if [ -f /tmp/bazel-cache/BUILD_DEP_HASHES ] && ! diff BUILD_DEP_HASHES /tmp/bazel-cache/BUILD_DEP_HASHES; then echo \"Build dependencies have changed, clearing bazel cache\"; rm -rf /tmp/bazel-cache/*; rm -rf /cilium/proxy/.cache/*; fi ; cp BUILD_DEP_HASHES ENVOY_VERSION /tmp/bazel-cache; fi && \\\n    BAZEL_BUILD_OPTS=\"${BAZEL_BUILD_OPTS} --disk_cache=/tmp/bazel-cache\" PKG_BUILD=1 V=$V DEBUG=$DEBUG make envoy-test-deps && \\\n    if [ -n \"${COPY_CACHE_EXT}\" ]; then cp -ra /tmp/bazel-cache /tmp/bazel-cache${COPY_CACHE_EXT}; fi\n\nFROM --platform=$BUILDPLATFORM $BUILDER_BASE AS runner\nLABEL maintainer=\"maintainer@cilium.io\"\nWORKDIR /cilium/proxy\nCOPY . ./\nARG V\nARG BAZEL_BUILD_OPTS\nARG BAZEL_TEST_OPTS\nARG DEBUG\nARG BUILDARCH\nARG TARGETARCH\nARG NO_CACHE\nENV TARGETARCH=$TARGETARCH\n\nRUN --mount=mode=0777,uid=1337,gid=1337,target=/cilium/proxy/.cache,type=cache,id=$TARGETARCH,sharing=private if [ -n \"$NO_CACHE\" ]; then rm -rf /cilium/proxy/.cache/*; fi\n# Make proxylib available for the tests by copying it before running the tests\nCOPY --from=proxylib /tmp/libcilium.so proxylib/libcilium.so\nRUN --mount=mode=0777,uid=1337,gid=1337,target=/cilium/proxy/.cache,type=cache,id=$TARGETARCH,sharing=private \\\n    --mount=target=/tmp/bazel-cache,source=/tmp/bazel-cache,from=archive-cache,rw \\\n    if [ \"$TARGETARCH\" != \"$BUILDARCH\" ]; then \\\n      if [ \"$TARGETARCH\" = \"amd64\" ]; then \\\n        # Allow running x86_64 test binaries via qemu \\\n        ln -s /usr/x86_64-linux-gnu/lib/ld-linux-x86-64.so.* /lib; \\\n        ln -s /lib /lib64; \\\n        ln -s /usr/x86_64-linux-gnu/lib /usr/cilium-cross-compat/lib; \\\n      elif [ \"$TARGETARCH\" = \"arm64\" ]; then \\\n        # Allow running aarch64 test binaries via qemu \\\n        ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.* /lib; \\\n        ln -s /usr/aarch64-linux-gnu/lib /usr/cilium-cross-compat/lib; \\\n      fi; \\\n    fi && \\\n    BAZEL_BUILD_OPTS=\"${BAZEL_BUILD_OPTS} --disk_cache=/tmp/bazel-cache\" BAZEL_TEST_OPTS=\"${BAZEL_TEST_OPTS}\" PKG_BUILD=1 V=$V DEBUG=$DEBUG make envoy-tests && \\\n    cp -Lr /cilium/proxy/bazel-testlogs testlogs\n\nFROM scratch AS empty-builder-archive\nLABEL maintainer=\"maintainer@cilium.io\"\nUSER 1337:1337\nWORKDIR /tmp/bazel-cache\n\n# This stage retains only the build caches from the builder stage.\n# This is used as the target for persisting Bazel build caches for later re-use.\nFROM empty-builder-archive AS builder-archive\nARG COPY_CACHE_EXT\nCOPY --from=builder /tmp/bazel-cache${COPY_CACHE_EXT}/ /tmp/bazel-cache/\n\n#\n# Keep only the test logs\n#\nFROM scratch AS testlogs\nLABEL maintainer=\"maintainer@cilium.io\"\nCOPY --from=runner /cilium/proxy/testlogs testlogs\n"
  },
  {
    "path": "ENVOY_VERSION",
    "content": "envoy-1.37.2\n"
  },
  {
    "path": "LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} Authors of Cilium\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n"
  },
  {
    "path": "Makefile",
    "content": "# Copyright 2017-2021 Authors of Cilium\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\ninclude Makefile.defs\n\nMIN_CLANG_VERSION := 18.1.8\nCOMPILER_DEP := clang.bazelrc\n\nENVOY_BINS = cilium-envoy bazel-bin/cilium-envoy cilium-envoy-starter bazel-bin/cilium-envoy-starter\nENVOY_TESTS = bazel-bin/tests/*_test\n\nBUILD_DEP_FILES = ENVOY_VERSION WORKSPACE .bazelrc envoy.bazelrc bazel/toolchains/BUILD bazel/toolchains/cc_toolchain_config.bzl\n\nSHELL=/bin/bash -o pipefail\nBAZEL ?= $(QUIET) bazel\nBAZEL_FILTER ?=\nBAZEL_OPTS ?=\nBAZEL_BUILD_OPTS ?=\nifdef BAZEL_REMOTE_CACHE\n  BAZEL_BUILD_OPTS += --remote_cache=$(BAZEL_REMOTE_CACHE)\nendif\n\nBAZEL_TEST_OPTS ?= --jobs=HOST_RAM*.0002 --test_timeout=100 --local_test_jobs=1 --flaky_test_attempts=3\nBAZEL_TEST_OPTS += --test_output=errors\n\nBUILDARCH := $(subst aarch64,arm64,$(subst x86_64,amd64,$(shell uname -m)))\n# Default for the host architecture\nifndef TARGETARCH\n  TARGETARCH := $(BUILDARCH)\nendif\n\n# ARCH=multi is only valid for docker builds, and gets resolved to individual targets for builds\n# within the Dockerfile.\nifdef ARCH\n  ifneq ($(ARCH),multi)\n    TARGETARCH := $(ARCH)\n  else\n    # Split the cores when building for both targets\n    BAZEL_BUILD_OPTS += --jobs=HOST_CPUS*.5\n  endif\nendif\n\n# Extra opts are passed to docker targets, which will choose the bazel platform themselves\nEXTRA_BAZEL_BUILD_OPTS := $(BAZEL_BUILD_OPTS)\nBAZEL_PLATFORM := //bazel:linux_$(subst amd64,x86_64,$(subst arm64,aarch64,$(TARGETARCH)))\n$(info BUILDING on $(BUILDARCH) for $(TARGETARCH) using $(BAZEL_PLATFORM))\nBAZEL_BUILD_OPTS += --platforms=$(BAZEL_PLATFORM)\n\nifdef DEBUG\n  BAZEL_BUILD_OPTS += -c dbg\nelse ifdef RELEASE_DEBUG\n  BAZEL_BUILD_OPTS += --config=release_debug\nelse\n  BAZEL_BUILD_OPTS += --config=release\nendif\n\nSUDO=\nifneq ($(shell whoami),root)\n  SUDO=$(shell if sudo -h 1>/dev/null 2>/dev/null; then echo \"sudo\"; fi)\nendif\n\n# Use our own toolchain in all builds. Local builds need this to not pull in external Envoy sysroot\n# that only supports glibc 2.31, while for Ubuntu 24.04 builds we need at least 2.38, and actually\n# use 2.39.\n$(info Registering C++ toolchains via BAZEL_BUILD_OPTS)\nBAZEL_BUILD_OPTS += --extra_toolchains=//bazel/toolchains:all\n# Use system LLVM instead of hermetic download to avoid libtinfo.so.5 mismatch\nBAZEL_BUILD_OPTS += --repo_env=BAZEL_LLVM_PATH=/usr/lib/llvm-18\n\nifdef PKG_BUILD\n  all: cilium-envoy-starter cilium-envoy\n\n  .PHONY: install-bazelisk\n  install-bazelisk:\n\techo \"Bazel assumed to be installed in the builder image\"\n\n  define install_clang\n\techo \"Clang assumed to be installed in the builder image\"\n  endef\nelse\n  all: precheck cilium-envoy-starter cilium-envoy\n\n  include Makefile.docker\n\n  # Fetch and install Bazel if needed\n  .PHONY: install-bazelisk\n  install-bazelisk:\n\ttools/install_bazelisk.sh\n\n  # Install clang if needed\n  define install_clang\n\tadd_llvm_source() { \\\n\t\tif [ ! -f /etc/apt/trusted.gpg.d/apt.llvm.org.asc ]; then \\\n\t\t  $(SUDO) wget -q -O /etc/apt/trusted.gpg.d/apt.llvm.org.asc https://apt.llvm.org/llvm-snapshot.gpg.key; \\\n\t\tfi; \\\n\t\tlocal CODENAME=$$(lsb_release -cs); \\\n\t\tapt_source=\"deb http://apt.llvm.org/$$CODENAME/ llvm-toolchain-$$CODENAME-18 main\" && \\\n\t\t$(SUDO) apt-add-repository -y \"$${apt_source}\" && \\\n\t\t$(SUDO) apt update; \\\n\t}; \\\n\tversion=\"$$(dpkg-query -W -f='$${Version}' clang-18 2>/dev/null || echo 0)\"; \\\n\tif ! dpkg --compare-versions \"$$version\" ge 1:$(MIN_CLANG_VERSION)~; then add_llvm_source; fi; \\\n\t$(SUDO) apt install -y clang-18 clangd-18 llvm-18-dev lld-18 lldb-18 clang-format-18 clang-tools-18 clang-tidy-18 libc++-18-dev libc++abi-18-dev\n  endef\nendif\n\ninclude Makefile.dev\n\nBUILD_DEP_HASHES: $(BUILD_DEP_FILES)\n\tsha256sum $^ >$@\n\nclang.bazelrc: bazel/setup_clang.sh\n\t$(call install_clang)\n\tbazel/setup_clang.sh /usr/lib/llvm-18\n\techo \"build --config=clang-local\" >> $@\n\n.PHONY: bazel-bin/cilium-envoy\nbazel-bin/cilium-envoy: $(COMPILER_DEP) SOURCE_VERSION install-bazelisk\n\t@$(ECHO_BAZEL)\n\tCARGO_BAZEL_REPIN=true $(BAZEL) $(BAZEL_OPTS) build $(BAZEL_BUILD_OPTS) //:cilium-envoy $(BAZEL_FILTER)\n\ncilium-envoy: bazel-bin/cilium-envoy\n\tmv $< $@\n\n.PHONY: bazel-bin/cilium-envoy-starter\nbazel-bin/cilium-envoy-starter: $(COMPILER_DEP) SOURCE_VERSION install-bazelisk\n\t@$(ECHO_BAZEL)\n\tCARGO_BAZEL_REPIN=true $(BAZEL) $(BAZEL_OPTS) build $(BAZEL_BUILD_OPTS) //:cilium-envoy-starter $(BAZEL_FILTER)\n\ncilium-envoy-starter: bazel-bin/cilium-envoy-starter\n\tmv $< $@\n\nBAZEL_CACHE := $(subst --disk_cache=,,$(filter --disk_cache=%, $(BAZEL_BUILD_OPTS)))\n\nGLIBC_VERSION ?= $(shell ldd --version | sed -n 's/.*GLIBC \\([0-9.]\\+\\).*/\\1/p')\nGLIBC_DIR ?= $(LIBDIR)/glibc-$(GLIBC_VERSION)\n\n$(DESTDIR)$(GLIBC_DIR): bazel-bin/cilium-envoy\n\t$(SUDO) $(INSTALL) -m 0755 -d $@\n\tLIBS=$$(readelf -d bazel-bin/cilium-envoy | sed -n 's/.*(NEEDED).*Shared library: \\[\\(.*\\)\\]/\\1/p'); \\\n\tARCH_TAG=$$(echo $$LIBS | sed -n 's/.*ld-linux-\\(.*\\)\\.so.*/\\1/p' | tr - _); \\\n\techo \"BUILD for $${ARCH_TAG}\"; \\\n\tfor lib in $${LIBS}; do \\\n\t\t$(SUDO) cp /usr/$${ARCH_TAG}-linux-gnu/lib/$$lib $@; \\\n\tdone\n\ninstall: bazel-bin/cilium-envoy-starter bazel-bin/cilium-envoy\n\t$(SUDO) $(INSTALL) -m 0755 -d $(DESTDIR)$(BINDIR)\n\t$(SUDO) $(INSTALL) -m 0755 -T bazel-bin/cilium-envoy-starter $(DESTDIR)$(BINDIR)/cilium-envoy-starter\n\t$(SUDO) $(INSTALL) -m 0755 -T bazel-bin/cilium-envoy $(DESTDIR)$(BINDIR)/cilium-envoy\n\ninstall-local: install\n\t$(SUDO) setcap 'cap_net_admin,cap_bpf+pe' $(DESTDIR)$(BINDIR)/cilium-envoy-starter\n\t$(SUDO) chmod u+s $(DESTDIR)$(BINDIR)/cilium-envoy-starter\n\ninstall-glibc: install $(DESTDIR)$(GLIBC_DIR)\n\tLD_LINUX=$$(basename $$(patchelf --print-interpreter bazel-bin/cilium-envoy)); \\\n\t$(SUDO) patchelf --set-interpreter $(GLIBC_DIR)/$${LD_LINUX} --set-rpath $(GLIBC_DIR) $(DESTDIR)$(BINDIR)/cilium-envoy-starter\n\t$(SUDO) patchelf --set-interpreter $(GLIBC_DIR)/$${LD_LINUX} --set-rpath $(GLIBC_DIR) $(DESTDIR)$(BINDIR)/cilium-envoy\n\n# Remove the binaries\nclean: force\n\t@$(ECHO_CLEAN) $(notdir $(shell pwd))\n\t-$(QUIET) rm -f $(ENVOY_BINS) $(ENVOY_TESTS)\n\nproxylib/libcilium.so:\n\tmake -C proxylib\n\n.PHONY: envoy-test-deps\nenvoy-test-deps: $(COMPILER_DEP) SOURCE_VERSION proxylib/libcilium.so\n\t@$(ECHO_BAZEL)\n\tCARGO_BAZEL_REPIN=true $(BAZEL) $(BAZEL_OPTS) build $(BAZEL_BUILD_OPTS) $(BAZEL_TEST_OPTS) //tests/... @envoy//test/integration:tcp_proxy_integration_test $(BAZEL_FILTER)\n\n.PHONY: envoy-tests\nenvoy-tests: $(COMPILER_DEP) SOURCE_VERSION proxylib/libcilium.so\n\t@$(ECHO_BAZEL)\n\t# Upstream tcp_proxy_integration_test included to validate that our custom patches\n\t# didn't break anything\n\tCARGO_BAZEL_REPIN=true $(BAZEL) $(BAZEL_OPTS) test $(BAZEL_BUILD_OPTS) $(BAZEL_TEST_OPTS) //tests/... @envoy//test/integration:tcp_proxy_integration_test $(BAZEL_FILTER)\n\n.PHONY: \\\n\tinstall \\\n\tforce \\\n\tforce-non-root \\\n\tforce-root\n\nforce :;\n\nforce-root:\nifndef PKG_BUILD\n  ifneq ($(USER),root)\n\t$(error This target must be run as root!)\n  endif\nendif\n\nforce-non-root:\nifeq ($(USER),root)\n\t$(error This target cannot be run as root!)\nendif\n"
  },
  {
    "path": "Makefile.api",
    "content": "# Copyright 2018 Authors of Cilium\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\ninclude Makefile.quiet\n\n# Depends on Envoy dependencies, Envoy API & protoc must be built first\n\nPROTOC ?= bazel-out/host/bin/external/com_google_protobuf/protoc\n\nENVOY_API_PROTO_PATH = bazel-proxy/external/envoy_api\nCILIUM_PROTO_PATH = .\nPROTO_DEPS = \\\n\t-I bazel-proxy/external/com_google_protobuf/src \\\n\t-I bazel-proxy/external/com_google_googleapis \\\n\t-I bazel-proxy/external/com_envoyproxy_protoc_gen_validate \\\n\t-I bazel-proxy/external/opentelemetry_proto \\\n\t-I bazel-proxy/external/prometheus_metrics_model \\\n\t-I bazel-proxy/external/com_github_cncf_xds \\\n\t-I bazel-proxy/external/dev_cel/proto\n\nGO_OUT = go\nGO_MODULE = module=github.com/cilium/proxy/go\n\nCILIUM_PROTO_SOURCES := \\\n\tcilium/api/accesslog.proto \\\n\tcilium/api/bpf_metadata.proto \\\n\tcilium/api/l7policy.proto \\\n\tcilium/api/network_filter.proto \\\n\tcilium/api/npds.proto \\\n\tcilium/api/nphds.proto\nCILIUM_PROTO_DIRS := $(sort $(dir $(CILIUM_PROTO_SOURCES)))\n\nexport PATH:=$(HOME)/go/bin:$(PATH)\n\nall: cilium-go-targets\n\n.PHONY: cilium-go-targets\ncilium-go-targets: $(CILIUM_PROTO_SOURCES) $(ENVOY_API_PROTO_PATH) Makefile.api\n\tGOFLAGS=\"$(GOFLAGS) -mod=mod\" go install tool\n\t$(QUIET)set -e; \\\n\tfor path in $(CILIUM_PROTO_DIRS) ; do \\\n\t\t$(ECHO_GEN) envoy/$$path; \\\n\t\t$(PROTOC) -I $(ENVOY_API_PROTO_PATH) -I $(CILIUM_PROTO_PATH) $(PROTO_DEPS) \"--go_out=$(GO_MODULE):$(GO_OUT)\" \"--go-grpc_out=$(GO_MODULE):$(GO_OUT)\" \"--validate_out=lang=go,$(GO_MODULE):$(GO_OUT)\" $${path}*.proto; \\\n\tdone\n\tgo mod tidy && go mod vendor\n\n.PHONY: all\n"
  },
  {
    "path": "Makefile.defs",
    "content": "ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))\ninclude $(ROOT_DIR)/Makefile.quiet\n\nPREFIX?=/usr\nBINDIR?=$(PREFIX)/bin\nLIBDIR?=$(PREFIX)/lib\nRUNDIR?=/var/run\nCONFDIR?=/etc\n\n# GO_NOQUIET should not have any Makefile directives.\nGO_NOQUIET = go\nGO = $(QUIET)$(GO_NOQUIET)\nINSTALL = $(QUIET)install\n"
  },
  {
    "path": "Makefile.dev",
    "content": "# Copyright 2017-2021 Authors of Cilium\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nCHECK_FORMAT ?= ./bazel-bin/check_format.py\n\nBAZEL_CACHE ?= ~/.cache/bazel\nBAZEL_ARCHIVE ?= ~/bazel-cache.tar.bz2\n\n# @envoy_api//:v3_protos must be built before invoking Makefile.api\nAPI_DEPS = @envoy_api//:v3_protos\nPROTOC_TARGET = @com_google_protobuf//:protoc\napi: force-non-root Makefile.api install-bazelisk\n\tPROTOC=`CARGO_BAZEL_REPIN=true $(BAZEL) cquery --output=starlark --starlark:expr=target.files_to_run.executable.path $(PROTOC_TARGET) | grep \"fastbuild.*/bin/external\"`; \\\n\tCARGO_BAZEL_REPIN=true $(BAZEL) build $(PROTOC_TARGET) $(API_DEPS); \\\n\tfile $${PROTOC} && PROTOC=$${PROTOC} $(MAKE) -f Makefile.api all\n\napi-clean:\n\tfind go -name *.pb.go -delete\n\tfind go -name *.pb.validate.go -delete\n\tfind go -empty -type d -delete\n\tmkdir -p go/contrib/envoy\n\tmkdir go/envoy\n\n$(CHECK_FORMAT): force-non-root SOURCE_VERSION install-bazelisk clang.bazelrc\n\tCARGO_BAZEL_REPIN=true $(BAZEL) $(BAZEL_OPTS) build $(BAZEL_BUILD_OPTS) //:check_format.py\n\nveryclean: force-non-root clean\n\t-sudo $(BAZEL) $(BAZEL_OPTS) clean\n\t-sudo rm -Rf $(BAZEL_CACHE)\n\nprecheck: force-non-root\n\ttools/check_repositories.sh\n\nFORMAT_EXCLUDED_PREFIXES = \"./linux/\" \"./proxylib/\" \"./starter/\"  \"./vendor/\" \"./go/\" \"./envoy_build_config/\" \"./work/\" \"./bin/\"\n\n# The default set of sources assumes all relevant sources are dependecies of some tests!\nTIDY_SOURCES ?= $(shell bazel query 'kind(\"source file\", deps(//tests/...))' 2>/dev/null | sed -n \"s/\\/\\/cilium:/cilium\\//p; s/\\/\\/tests:/tests\\//p\")\n\n# Must pass our bazel options to avoid discarding the analysis cache due to different options\n# between this, check and build!\n# Depend on the WORKSPACE and TIDY_SOURCES so that the database will be re-built if\n# Envoy dependency or any of the source files has changed.\ncompile_commands.json: WORKSPACE $(TIDY_SOURCES) force-non-root\n\tCARGO_BAZEL_REPIN=true BAZEL_STARTUP_OPTION_LIST=\"$(BAZEL_OPTS)\" BAZEL_BUILD_OPTION_LIST=\"$(BAZEL_BUILD_OPTS)\" tools/gen_compilation_database.py --include_all //cilium/... //starter/... //tests/...\n\n# Default number of jobs, derived from available memory\nTIDY_JOBS ?= $$(( $(shell sed -n \"s/^MemAvailable: *\\([0-9]*\\).*\\$$/\\1/p\" /proc/meminfo) / 4500000 ))\n\n# tidy uses run-clang-tidy, .clang-tidy must be present in the project directory and configured to\n# ignore the same headers as .clangd. Unfortunately the configuration format is different.\ntidy: compile_commands.json force-non-root\n\trun-clang-tidy -quiet -extra-arg=\"-Wno-unknown-pragmas\" -checks=misc-include-cleaner -j $(TIDY_JOBS) $(TIDY_SOURCES) || echo \"clang-tidy check failed, run 'make tidy-fix' locally to fix tidy errors.\"\n\ntidy-fix: compile_commands.json force-non-root\n\techo \"clang-tidy fix results can contain duplicate or misplaced includes, check before committing!\"\n\trun-clang-tidy -fix -format -style=file -quiet -extra-arg=\"-Wno-unknown-pragmas\" -checks=misc-include-cleaner -j $(TIDY_JOBS) $(TIDY_SOURCES) || echo \"clang-tidy fix produced changes, please commit them.\"\n\ntidy-fix-head: compile_commands.json force-non-root\n\techo \"clang-tidy fix results can contain duplicate or misplaced includes, check before committing!\"\n\trun-clang-tidy -fix -format -style=file -quiet -extra-arg=\"-Wno-unknown-pragmas\" -checks=misc-include-cleaner -j $(TIDY_JOBS) $(shell git diff-tree --no-commit-id --name-only -r --diff-filter=d HEAD) || echo \"clang-tidy fix produced changes, please commit them.\"\n\nformat: force-non-root\n\tCARGO_BAZEL_REPIN=true $(BAZEL) $(BAZEL_OPTS) run $(BAZEL_BUILD_OPTS) @envoy//tools/code_format:check_format -- --path \"$(PWD)\" --skip_envoy_build_rule_check --add-excluded-prefixes $(FORMAT_EXCLUDED_PREFIXES) --bazel_tools_check_excluded_paths=\"./\" --build_fixer_check_excluded_paths=\"./\" check || echo \"Format check failed, run 'make format-fix' locally to fix formatting errors.\"\n\nformat-fix: force-non-root\n\tCARGO_BAZEL_REPIN=true $(BAZEL) $(BAZEL_OPTS) run $(BAZEL_BUILD_OPTS) @envoy//tools/code_format:check_format -- --path \"$(PWD)\" --skip_envoy_build_rule_check --add-excluded-prefixes $(FORMAT_EXCLUDED_PREFIXES) --bazel_tools_check_excluded_paths=\".\" --build_fixer_check_excluded_paths=\"./\" fix\n\n# Run tests without debug by default.\ntests:  $(COMPILER_DEP) force-non-root SOURCE_VERSION proxylib/libcilium.so install-bazelisk\n\tCARGO_BAZEL_REPIN=true $(BAZEL) $(BAZEL_OPTS) test $(BAZEL_BUILD_OPTS) //:envoy_binary_test $(BAZEL_FILTER)\n\tCARGO_BAZEL_REPIN=true $(BAZEL) $(BAZEL_OPTS) test $(BAZEL_BUILD_OPTS) $(BAZEL_TEST_OPTS) //tests/... $(BAZEL_FILTER)\n\t$(MAKE) -C proxylib test\n\nunstripped-tests:  $(COMPILER_DEP) force-non-root SOURCE_VERSION proxylib/libcilium.so install-bazelisk\n\tCARGO_BAZEL_REPIN=true $(BAZEL) $(BAZEL_OPTS) test $(BAZEL_BUILD_OPTS) --config=release_debug --fission=no --features=-per_object_debug_info //:envoy_binary_test $(BAZEL_FILTER)\n\tCARGO_BAZEL_REPIN=true $(BAZEL) $(BAZEL_OPTS) test $(BAZEL_BUILD_OPTS) --config=release_debug --fission=no --features=-per_object_debug_info $(BAZEL_TEST_OPTS) //tests/... $(BAZEL_FILTER)\n\ndebug-tests:  $(COMPILER_DEP) force-non-root SOURCE_VERSION install-bazelisk\n\tCARGO_BAZEL_REPIN=true $(BAZEL) $(BAZEL_OPTS) test $(BAZEL_BUILD_OPTS) -c dbg --fission=no --features=-per_object_debug_info $(BAZEL_TEST_OPTS) //:envoy_binary_test $(BAZEL_FILTER)\n\tCARGO_BAZEL_REPIN=true $(BAZEL) $(BAZEL_OPTS) test $(BAZEL_BUILD_OPTS) -c dbg --fission=no --features=-per_object_debug_info $(BAZEL_TEST_OPTS) //tests/... $(BAZEL_FILTER)\n"
  },
  {
    "path": "Makefile.docker",
    "content": "# Copyright 2017-2021 Authors of Cilium\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Always use buildx\nDOCKER := $(QUIET)DOCKER_BUILDKIT=1 docker buildx\n\nDOCKER_DEV_ACCOUNT ?= quay.io/cilium\n# CACHE_REF ?= docker.io/cilium/cilium-dev:cilium-envoy-cache\nCACHE_REF ?=\nDOCKER_BUILD_OPTS ?=\nDOCKER_CACHE_OPTS ?=\nifndef NO_CACHE\n  ifneq ($(CACHE_REF),)\n    DOCKER_CACHE_OPTS += --cache-from=$(CACHE_REF)\n  endif\nendif\n\nifeq ($(ARCH),amd64)\n  DOCKER_PLATFORMS := --platform=linux/amd64\nelse ifeq ($(ARCH),arm64)\n  DOCKER_PLATFORMS := --platform=linux/arm64\nelse ifeq ($(ARCH),multi)\n  DOCKER_PLATFORMS := --platform=linux/arm64,linux/amd64\nendif\nDOCKER_BUILDER := $(shell docker buildx ls | grep -E -e \"[a-zA-Z0-9-]+ \\*\" | cut -d ' ' -f1)\nifdef DOCKER_PLATFORMS\n  ifneq (,$(filter $(DOCKER_BUILDER),default desktop-linux))\n    DOCKER_BUILDKIT_DRIVER :=\n    ifdef DOCKER_BUILDKIT_IMAGE\n      DOCKER_BUILDKIT_DRIVER := --driver docker-container --driver-opt image=$(DOCKER_BUILDKIT_IMAGE)\n    endif\n    BUILDER_SETUP := $(shell docker buildx create $(DOCKER_PLATFORMS) $(DOCKER_BUILDKIT_DRIVER) --use)\n    DOCKER_BUILDER := $(shell docker buildx ls | grep -E -e \"[a-zA-Z0-9-]+ \\*\" | cut -d ' ' -f1)\n  endif\nendif\nifneq ($(DOCKER_BUILDER),default)\n  # Only insert '--push' or '--output' if the user did not pass a conflicting '--output' or '--load' option\n  ifeq ($(filter --output --load,$(DOCKER_BUILD_OPTS)),)\n    ifdef IMAGE_PUSH\n      # Push to registry if explicit push is enforce via IMAGE_PUSH=1 (needs auth)\n      DOCKER_BUILD_OPTS += --push\n    else ifeq ($(ARCH),multi)\n      # Push to registry if multi-arch is enforced via ARCH=multi (needs auth)\n      # (It's not supported to write multi-arch builds to the local Docker registry)\n      DOCKER_BUILD_OPTS += --push\n    else\n      # Push to local docker registry by default\n      DOCKER_BUILD_OPTS += --output type=docker\n    endif\n  endif\n  DOCKER_BUILD_OPTS += $(DOCKER_PLATFORMS)\n  ifdef CACHE_PUSH\n    DOCKER_CACHE_OPTS += --cache-to=$(CACHE_PUSH),mode=max\n  endif\nendif\n$(info Using Docker Buildx builder \"$(DOCKER_BUILDER)\" with build flags \"$(DOCKER_BUILD_OPTS)\".)\n\nHYPHEN = -\nARCH ?= $(subst aarch64,arm64,$(subst x86_64,amd64,$(patsubst i%86,386,$(shell uname -m))))\n# Add -<arch> suffix if ARCH is not \"multi\"\nifeq ($(ARCH),multi)\n  ARCH :=\nelse\n  IMAGE_ARCH := $(HYPHEN)$(ARCH)\nendif\n\nSOURCE_VERSION :=\n\n# This makefile may only be used with a git repo present\nSOURCE_VERSION := $(shell git rev-parse HEAD)\nSOURCE_VERSION: force\n\t@if [ \"$(SOURCE_VERSION)\" != \"`cat 2>/dev/null SOURCE_VERSION`\" ] ; then echo \"$(SOURCE_VERSION)\" >SOURCE_VERSION; fi\n\nENVOY_VERSION := $(shell cat ENVOY_VERSION)\nBAZEL_VERSION := $(shell cat .bazelversion)\nBRANCH_NAME ?= $(shell git rev-parse --abbrev-ref HEAD)\nBRANCH_TAG := $(shell echo $(BRANCH_NAME) | tr -c '[:alnum:]_.\\n-' '-')\n\n# target for builder archive\nBUILDER_ARCHIVE_TAG ?= main-archive-latest\nTESTS_ARCHIVE_TAG ?= test-main-archive-latest\n\nBUILDER_DOCKER_HASH=$(shell git ls-tree --full-tree HEAD -- ./Dockerfile.builder | awk '{ print $$3 }')\nBUILDER_BASE_TAG ?= $(BUILDER_DOCKER_HASH)\nBUILDER_BASE ?= $(DOCKER_DEV_ACCOUNT)/cilium-envoy-builder:$(BUILDER_BASE_TAG)\n\nBUILD_IMAGE_OPTS := --build-arg BUILDER_BASE=\"$(BUILDER_BASE)\"\nTESTS_IMAGE_OPTS := --build-arg BUILDER_BASE=\"$(BUILDER_BASE)\"\n\nifdef DEBUG\n  BUILD_IMAGE_OPTS += --build-arg DEBUG=$(DEBUG)\nelse ifdef RELEASE_DEBUG\n  BUILD_IMAGE_OPTS += --build-arg RELEASE_DEBUG=$(RELEASE_DEBUG)\nendif\n\nifndef NO_ARCHIVE\n  ifndef ARCHIVE_IMAGE\n    # Default builder refresh image ref\n    ARCHIVE_IMAGE := $(DOCKER_DEV_ACCOUNT)/cilium-envoy-builder:$(BUILDER_ARCHIVE_TAG)\n    TESTS_ARCHIVE_IMAGE := $(DOCKER_DEV_ACCOUNT)/cilium-envoy-builder:$(TESTS_ARCHIVE_TAG)\n  else\n    TESTS_ARCHIVE_IMAGE := $(ARCHIVE_IMAGE)\n  endif\nendif\n\nifdef NO_CACHE\n  DOCKER_CACHE_OPTS += --build-arg NO_CACHE=$(NO_CACHE)\n  ifeq ($(NO_CACHE),2)\n    DOCKER_CACHE_OPTS += --no-cache\n  endif\nendif\n\nifdef DEBUG\n  DOCKER_BUILD_OPTS += --build-arg DEBUG=$(DEBUG)\n  DEBUG_TAG := -debug\nendif\n\nifdef ARCHIVE_IMAGE\n  BUILD_IMAGE_OPTS += --build-arg ARCHIVE_IMAGE=$(ARCHIVE_IMAGE)\nendif\n\nifdef TESTS_ARCHIVE_IMAGE\n  TESTS_IMAGE_OPTS += --build-arg ARCHIVE_IMAGE=$(TESTS_ARCHIVE_IMAGE)\nendif\n\n# Builder image consists only of build tools, so it only needs .bazelversion\nDockerfile.builder.dockerignore:\n\techo \"*\" >$@\n\techo \"!/.bazelversion\" >>$@\n\n# Builder image for tests consists only of build tools, so it only needs .bazelversion\nDockerfile.builder.tests.dockerignore:\n\techo \"*\" >$@\n\techo \"!/.bazelversion\" >>$@\n\n# Release does not need Go API or test files\nDockerfile.dockerignore: .dockerignore Makefile.docker\n\tcp $< $@\n\techo \"/tests/\" >>$@\n\techo \"/Makefile.api\" >>$@\n\techo \"/envoy_binary_test.sh\" >>$@\n\nDockerfile.tests.dockerignore: .dockerignore Makefile.docker\n\tcp $< $@\n\techo \"/Makefile.api\" >>$@\n\n# None of the docker builds need these. '-H' to not follow symbolic links.\nGIT_IGNORE_FILES := $(shell find -H . -not -path \"./_build*\" -not -path \"./vendor*\" -name .gitignore -print)\n.dockerignore: .gitignore Makefile.docker\n\techo \"/.git/\" >$@\n\techo $(dir $(GIT_IGNORE_FILES)) | tr ' ' '\\n' | xargs -P1 -n1 -I {DIR} sed \\\n\t    -e '# Remove lines with white space, comments and files that must be passed to docker, \"$$\" due to make. #' \\\n\t\t-e '/^[[:space:]]*$$/d' -e '/^#/d' -e '/SOURCE_VERSION/d' \\\n\t    -e '# Apply pattern in all directories if it contains no \"/\", keep \"!\" up front. #' \\\n\t\t-e '/^[^!/][^/]*$$/s<^<**/<' -e '/^![^/]*$$/s<^!<!**/<' \\\n            -e '# Prepend with the directory name, keep \"!\" up front. #' \\\n\t\t-e '/^[^!]/s<^<{DIR}<' -e '/^!/s<^!<!{DIR}<' \\\n\t    -e '# Remove leading \"./\", keep \"!\" up front. #' \\\n\t\t-e 's<^\\./<<' -e 's<^!\\./<!<' \\\n\t    -e '# Append newline to the last line if missing. GNU sed does not do this automatically. #' \\\n\t\t-e \"$$a\" \\\n\t    $< >>$@\n\techo \"/.gitignore\" >>$@\n\techo \"/Dockerfile*\" >>$@\n\techo \"/Makefile.docker\" >>$@\n\techo \"/README*\" >>$@\n\n.PHONY: docker-image-builder\ndocker-image-builder: Dockerfile.builder SOURCE_VERSION Dockerfile.builder.dockerignore\n\t$(DOCKER) build $(DOCKER_BUILD_OPTS) --build-arg BAZEL_BUILD_OPTS=\"$(EXTRA_BAZEL_BUILD_OPTS)\" --build-arg BUILDER_BASE=\"$(BUILDER_BASE)\" -f $< -t $(DOCKER_DEV_ACCOUNT)/cilium-envoy-builder:$(BUILDER_BASE_TAG) .\n\n.PHONY: docker-builder-archive\ndocker-builder-archive: Dockerfile SOURCE_VERSION Dockerfile.dockerignore\n\t$(DOCKER) build --target builder-archive $(DOCKER_BUILD_OPTS) $(DOCKER_CACHE_OPTS) $(BUILD_IMAGE_OPTS) --build-arg BAZEL_BUILD_OPTS=\"$(EXTRA_BAZEL_BUILD_OPTS)\" --build-arg COPY_CACHE_EXT=.new -t $(DOCKER_DEV_ACCOUNT)/cilium-envoy-builder:$(BUILDER_ARCHIVE_TAG) .\n\n.PHONY: docker-tests-archive\ndocker-tests-archive: Dockerfile.tests SOURCE_VERSION Dockerfile.tests.dockerignore\n\t$(DOCKER) build --target builder-archive $(DOCKER_BUILD_OPTS) $(DOCKER_CACHE_OPTS) $(TESTS_IMAGE_OPTS) --build-arg BAZEL_BUILD_OPTS=\"$(EXTRA_BAZEL_BUILD_OPTS)\" --build-arg COPY_CACHE_EXT=.new -f $< -t $(DOCKER_DEV_ACCOUNT)/cilium-envoy-builder:$(TESTS_ARCHIVE_TAG) .\n\nifeq ($(BRANCH_TAG),main)\n  DOCKER_TESTS_TAGS += -t $(DOCKER_DEV_ACCOUNT)/cilium-envoy:latest$(IMAGE_ARCH)$(DEBUG_TAG)-testlogs\nelse\n  DOCKER_TESTS_TAGS ?= -t $(DOCKER_DEV_ACCOUNT)/cilium-envoy-dev:$(BRANCH_TAG)$(IMAGE_ARCH)$(DEBUG_TAG)-testlogs\nendif\n\n.PHONY: docker-tests\ndocker-tests: Dockerfile.tests SOURCE_VERSION Dockerfile.tests.dockerignore\n\t$(DOCKER) build --progress=plain $(subst --push,--load,$(DOCKER_BUILD_OPTS)) $(DOCKER_CACHE_OPTS) $(TESTS_IMAGE_OPTS) --build-arg BAZEL_BUILD_OPTS=\"$(EXTRA_BAZEL_BUILD_OPTS)\" --build-arg BAZEL_TEST_OPTS=\"$(BAZEL_TEST_OPTS)\" -f $< $(DOCKER_TESTS_TAGS) .\n\nifeq ($(BRANCH_TAG),main)\n  DOCKER_IMAGE_ENVOY_TAGS := -t $(DOCKER_DEV_ACCOUNT)/cilium-envoy:$(SOURCE_VERSION)$(IMAGE_ARCH)$(DEBUG_TAG)\n  DOCKER_IMAGE_ENVOY_TAGS += -t $(DOCKER_DEV_ACCOUNT)/cilium-envoy:latest$(IMAGE_ARCH)$(DEBUG_TAG)\nelse\n  DOCKER_IMAGE_ENVOY_TAGS ?= -t $(DOCKER_DEV_ACCOUNT)/cilium-envoy-dev:$(BRANCH_TAG)$(IMAGE_ARCH)$(DEBUG_TAG)\n  DOCKER_IMAGE_ENVOY_TAGS += -t $(DOCKER_DEV_ACCOUNT)/cilium-envoy-dev:$(SOURCE_VERSION)$(IMAGE_ARCH)$(DEBUG_TAG)\nendif\n\n.PHONY: docker-image-envoy\ndocker-image-envoy: Dockerfile SOURCE_VERSION Dockerfile.dockerignore\n\t@$(ECHO_GEN) docker-image-envoy\n\t$(DOCKER) build $(DOCKER_BUILD_OPTS) $(DOCKER_CACHE_OPTS) $(BUILD_IMAGE_OPTS) --build-arg BAZEL_BUILD_OPTS=\"$(EXTRA_BAZEL_BUILD_OPTS)\" $(DOCKER_IMAGE_ENVOY_TAGS) .\n"
  },
  {
    "path": "Makefile.quiet",
    "content": "ifeq ($(V),0)\n\tQUIET=@\n\tECHO_CC=echo \"  CC    $(notdir $(shell pwd))/$@\"\n\tECHO_GEN=echo \"  GEN   $(notdir $(shell pwd))/\"\n\tECHO_GO=echo \"  GO    $(notdir $(shell pwd))/$@\"\n\tECHO_CHECK=echo \"  CHECK\"\n\tECHO_BAZEL=echo \"  BAZEL $(notdir $(shell pwd))/$(notdir $(shell dirname $(ENVOY_BIN)))/$@\"\n\tECHO_GINKGO=echo \"  GINKG $(notdir $(shell pwd))\"\n\tECHO_CLEAN=echo \"  CLEAN\"\n\tSPHINXOPTS+=\"-q\"\nelse\n\t# The whitespace at below EOLs is required for verbose case!\n\tECHO_CC=: \n\tECHO_GEN=: \n\tECHO_GO=: \n\tECHO_CHECK=: \n\tECHO_BAZEL=: \n\tECHO_GINKGO=: \n\tECHO_CLEAN=: \nendif\n\n"
  },
  {
    "path": "README.md",
    "content": "# Cilium Proxy\n\n[Envoy proxy](https://github.com/envoyproxy/envoy) for Cilium with\nminimal Envoy extensions and Cilium policy enforcement filters. Cilium\nuses this as its host proxy for enforcing HTTP and other L7 policies\nas specified in [network\npolicies](https://docs.cilium.io/en/latest/concepts/kubernetes/policy/#k8s-policy)\nfor the cluster. Cilium proxy is distributed within the Cilium images.\n\n## Version compatibility matrix\n\nThe following table shows the Cilium proxy version compatibility with supported upstream Cilium versions.\nOther combinations may work but are not tested.\n\nNote: The below table is updated by script `tools/update_version_matrix.sh`\n\n| Cilium Version | Envoy version |\n|----------------|---------------|\n| (main)         | v1.36.x       |\n| v1.19.0        | v1.35.9       |\n| v1.18.7        | v1.35.9       |\n| v1.18.6        | v1.35.9       |\n| v1.18.5        | v1.34.12      |\n| v1.18.4        | v1.34.10      |\n| v1.18.3        | v1.34.10      |\n| v1.18.2        | v1.34.7       |\n| v1.18.1        | v1.34.4       |\n| v1.18.0        | v1.34.4       |\n| v1.17.13       | v1.35.9       |\n| v1.17.12       | v1.34.12      |\n| v1.17.11       | v1.34.12      |\n| v1.17.10       | v1.34.10      |\n| v1.17.9        | v1.34.10      |\n| v1.17.8        | v1.33.9       |\n| v1.17.7        | v1.33.6       |\n| v1.17.6        | v1.33.4       |\n| v1.17.5        | v1.32.6       |\n| v1.17.4        | v1.32.6       |\n| v1.17.3        | v1.32.5       |\n| v1.17.2        | v1.31.5       |\n| v1.17.1        | v1.31.5       |\n| v1.17.0        | v1.31.5       |\n\n## Building\n\nCilium proxy is best built with the provided build containers. For a\nlocal host build consult [the builder\nDockerfile](https://github.com/cilium/proxy/blob/main/Dockerfile.builder)\nfor the required dependencies.\n\nContainer builds require Docker Buildkit and optionally Buildx for\nmulti-arch builds. Builds are currently only supported for amd64 and\narm64 targets. For arm64 both native and cross compile on amd64 are\nsupported.  Container builds produce container images by\ndefault. These images can not be run by themselves as they do not\ncontain the required runtime dependencies. To run the Cilium proxy the\nbinary `/usr/bin/cilium-envoy` needs to be copied from the image to a\ncompatible runtime environment, such as Ubuntu 20.04, or 22.04.\n\nThe provided container build tools work on both Linux and macOS.\n\nTo build the Cilium proxy in a docker container for the host\narchitecture only:\n\n```\nmake docker-image-envoy\n```\n\nThis will write the image to the local Docker registry.\n\nDepending on hour host CPU and memory resources a fresh build can take\nan hour or more. Docker caching will speed up subsequent builds.\n\n> If your build fails due to a compiler failure the most likely reason\n> is the compiler running out of memory. You can mitigate this by\n> limiting the number of concurrent build jobs by passing environment\n> variable `BAZEL_BUILD_OPTS=--jobs=2` to `make`. By default the\n> number of jobs is the number of CPUs available for the build, and\n> for some complex C++ sources this may be too much.  Note that\n> changing the value of `BAZEL_BUILD_OPTS` invalidates Docker caches\n> for the build stages.\n\n\n### Multi-arch builds\n\nBuild target architecture can be specified by passing `ARCH`\nenvironment variable to `make`. Supported values are `amd64` (only on\namd64 hosts), `arm64` (on arm64 or amd64 hosts), and `multi` (on amd64\nhosts). `multi` builds for all the supported architectures, currrently\namd64 and arm64:\n\n```\nARCH=multi make docker-image-envoy\n```\n\nThis will try to push the images to the container registry. Appropriate\nauthentication is required. (Pushing to the local Docker registry isn't\nsupported for multi-arch builds. See [Docker documentation](https://docs.docker.com/reference/cli/docker/buildx/build/#docker))\n\nBuilds will be performed concurrently when building for multiple\narchitectures on a single machine. You most likely need to limit the\nnumber of jobs allowed for each builder, see the note above for\ndetails.\n\nDocker builds are done using Docker Buildx by default when `ARCH` is\nexplicitly passed to `make`. You can also force Docker Buildx to be\nused when building for the host platform only (by not defining `ARCH`)\nby defining `DOCKER_BUILDX=1`. A new buildx builder instance will be\ncreated for amd64 and arm64 cross builds if the current builder is set\nto `default`.\n\n> Buildx builds will push the build result to\n> `quay.io/cilium/cilium-envoy:<GIT_SHA>` by default. You can change\n> the first two parts of this by defining\n> `DOCKER_DEV_ACCOUNT=docker.io/me` for your own docker hub account.\n> You can also request the build results to be output to your local\n> directory instead by defining `DOCKER_BUILD_OPTS=--output=out`,\n> where `out` is a local directory name or use \n> `DOCKER_BUILD_OPTS=\"--output=type=docker\"` to load it into the\n> local Docker daemon.\n\n#### Building for the Raspberry Pi kernel\n\nBy default Raspberry Pi OS and other OSes using the \n[Raspberry Pi kernel](https://github.com/raspberrypi/linux) will\nnot be able to use Envoy as their default `CONFIG_ARM64_VA_BITS_39`\nconfiguration [is not compatible with tcmalloc](https://github.com/raspberrypi/linux/issues/4375).\n\nA workaround is to compile the Envoy proxy with `gperftools`: \n```\nARCH=arm64 BAZEL_BUILD_OPTS=\"--define tcmalloc=gperftools\" make docker-image-envoy\n```\n\nThis image can then be used in the [Envoy DaemonSet mode](https://docs.cilium.io/en/stable/security/network/proxy/envoy/#enable-and-configure-envoy-daemonset).\n\n### Using custom pre-compiled Envoy dependencies\n\nDocker build uses cached Bazel artifacts from\n`quay.io/cilium/cilium-envoy-builder:main-archive-latest` by\ndefault. You can override this by defining `ARCHIVE_IMAGE=<ref>`:\n\n```\nARCH=multi ARCHIVE_IMAGE=docker.io/me/cilium-envoy-archive make docker-image-envoy\n```\n\n> Bazel build artifacts contain toolchain specific data and binaries\n> that are not compatible between native and cross-compiled\n> builds. For now the image ref shown above is for builds on amd64\n> only (native amd64, cross-compiled arm64).\n\nDefine `NO_CACHE=1` to clear the local build cache before the build, and `NO_ARCHIVE=1` to build\nfrom scratch, but be warned that this can take a long time.\n\n### Docker caching\n\nBy default the build also tries to pull Docker build caches from\n`docker.io/cilium/cilium-dev:cilium-envoy-cache`. You can override\nthis with our own build cache, which you can also update with the\n`CACHE_PUSH=1` definition:\n\n```\nARCH=multi CACHE_REF=docker.io/me/cilium-proxy:cache CACHE_PUSH=1 make docker-image-envoy\n```\n\n`NO_CACHE=1` can be used to disable docker cache pulling.\n\nIn a CI environment it might be a good idea to push a new cache image\nafter each main branch commit.\n\n\n### Updating the pre-compiled Envoy dependencies\n\nBuild and push a new version of the pre-compiled Envoy dependencies by:\n\n```\nARCH=multi make docker-builder-archive\n```\n\nBy default the pre-compiled dependencies image is tagged as\n`quay.io/cilium/cilium-envoy-builder:main-archive-latest`. You\ncan override the first two parts of this by defining\n`DOCKER_DEV_ACCOUNT=docker.io/me`,\n`BUILDER_ARCHIVE_TAG=my-builder-archive`, or completely by defining\n`ARCHIVE_IMAGE=<ref>`.\n\nPre-compiled Envoy dependencies need to be updated only when Envoy\nversion is updated or patched enough to increase compilation time\nsignificantly. To do this you should update Envoy version in\n`ENVOY_VERSION` and supply `NO_CACHE=1` and `NO_ARCHIVE=1` on the make line, e.g.:\n\n```\nARCH=multi NO_CACHE=1 NO_ARCHIVE=1 BUILDER_ARCHIVE_TAG=main-archive-latest make docker-builder-archive\n```\n\n\n## Updating the builder image\n\nThe required Bazel version typically changes from one Envoy release to\nanother. To create a new builder image first update the required Bazel\nversion at `.bazelversion` and then run:\n\n```\nARCH=multi NO_CACHE=1 NO_ARCHIVE=1 make docker-image-builder\n```\n\nThe builder can not be cross-compiled as native build tools are needed\nfor native arm64 builds. This means that for non-native builds QEMU\nCPU emulation is used instead of cross-compilation. If you have an\narm64 machine you can create a Docker buildx builder to use it for\nnative builds.\n\nThe builder image is tagged as\n\"quay.io/cilium/cilium-envoy-builder:bazel-<version>\". Change the\nBUILDER_BASE ARG in `Dockerfile` to use the new builder and commit the\nresult.\n\nFor testing purposes you can define `DOCKER_DEV_ACCOUNT` as explained\nabove to push the builder into a different registry or account.\n\n\n## Running integration tests\n\nTo run Cilium Envoy integration tests in a docker container:\n\n```\nmake docker-tests\n```\n\nThis runs the integration tests after loading Bazel build cache for\nEnvoy dependencies from\n`quay.io/cilium/cilium-envoy-builder:test-main-archive-latest`. Define\n`NO_ARCHIVE=1` and `NO_CACHE=1` to compile tests from scratch.\n\nThis command fails if any of the integration tests fail, printing the\nfailing test logs on console.\n\n> Note that cross-compiling is not supported for running tests, so\n> specifying `ARCH` is only supported for the native platform.\n> `ARCH=multi` will fail.\n\n\n### Updating the pre-compiled Envoy test dependencies\n\nBuild and push a new version of the pre-compiled test dependencies by:\n\n```\nmake docker-tests-archive\n```\n\nBy default the pre-compiled test dependencies image is tagged as\n`quay.io/cilium/cilium-envoy-builder:test-main-archive-latest`. You\ncan override the first two parts of this by defining\n`DOCKER_DEV_ACCOUNT=docker.io/me`,\n`TESTS_ARCHIVE_TAG=my-test-archive`, or completely by defining\n`ARCHIVE_IMAGE=<ref>`.\n\nPre-compiled Envoy test dependencies need to be updated only when\nEnvoy version is updated or patched enough to increase compilation\ntime significantly. To do this you should update Envoy version\nin `ENVOY_VERSION` and supply `NO_ARCHIVE=1` and `NO_CACHE=1` on\nthe make line, e.g.:\n\n```\nARCH=amd64 NO_ARCHIVE=1 NO_CACHE=1 make docker-tests-archive\n```\n\n\n## Updating generated API\n\n[Cilium project](https://github.com/cilium/cilium) vendors Cilium extensions from this repository. To update\nthe generated API files, run:\n\n```\nmake api\n```\n\n`rm` is needed to clean up API files that are no longer generated for\nEnvoy. **Do not** remove files at `go/cilium/` as some of them are not\nautomatically generated!\n\nCommit the results and update\n[Cilium](https://github.com/cilium/cilium) to vendor this new commit.\n"
  },
  {
    "path": "UPGRADE_ENVOY.md",
    "content": "# Envoy Upgrade\n\nOccasionally, we need to bump Envoy minor release version to support new\nupstream features, or for any security fixes with patch version.\n\nThe recent PR [#417](https://github.com/cilium/proxy/pull/417) can be used\nas reference.\n\nFor the patch release, we normally just need to do [Update Envoy release commit hash](#update-envoy-release-commit-hash) most of the time.\nIf there is no security fix involved, we can just Renovate Bot to perform\nthe upgrade automatically.\n\n### Sync up Bazel version\n\nNew Envoy minor version might require new Bazel version.\n\n1. Update `.bazelversion` file.\n2. Sync up `WORKSPACE` file with upstream.\n3. Sync up `envoy.bazelrc` file with upstream.\n\n```shell\n# Building a new builder image locally with your own docker account\n$ DOCKER_DEV_ACCOUNT=docker.io/sayboras ARCH=multi NO_CACHE=1 make docker-image-builder\n\n# Export the builder image environment variable for later use\n$ export BUILDER=docker.io/sayboras/cilium-envoy-builder:6.3.2-35ff82a25ab6321721eba727a1cc23fe7c240d5f@sha256:028da98e1c815d12250cc32327f3511016a859a027c0136d1ac7a4a178fbfe41\n```\n\n### Update Envoy release commit hash\n1. Bump version in `ENVOY_VERSION` file.\n2. Update git hash from Envoy official release in `WORKSPACE`.\n3. Sync up `envoy_build_config/extensions_build_config.bzl` with upstream.\n\n### Adjust Cilium custom patches\n\nCurrently, we are maintaining a couple of custom patches in `patches` directory.\nThese patches should be applied successfully on top of new Envoy baseline.\n\nThe easiest way to do this is to apply the patches on top of `envoyproxy/envoy` repository.\n\n```shell\n# Run `git am` command in `envoyproxy/envoy` repository with local patch files.\n$ git am ../../cilium/proxy/patches/0001-network-Add-callback-for-upstream-authorization.patch\n$ git am ../../cilium/proxy/patches/0002-listener-add-socket-options.patch\n$ git am ../../cilium/proxy/patches/0003-original_dst_cluster-Avoid-multiple-hosts-for-the-sa.patch\n$ git am ../../cilium/proxy/patches/0004-thread_local-reset-slot-in-worker-threads-first.patch\n$ git am ../../cilium/proxy/patches/0005-http-header-expose-attribute.patch\n$ git am ../../cilium/proxy/patches/0006-liburing-arm-build.patch\n\n# Export all the patch file, assume that we are upgrading to v1.28.\n# Then you can copy these patch files to `cilium/proxy/patches` directory.\n$ git format-patch upstream/release/v1.28\n```\n\n### Adjust Cilium custom filters\n\nWe are maintaining a couple of custom filters in `cilium` directory. The\neasiest way is to just run the compilation and fix any issues coming up.\n\n```shell\n# Please refer to main README.md for the details of how to build.\n$ DOCKER_DEV_ACCOUNT=docker.io/sayboras BUILDER_BASE=$BUILDER ARCH=multi NO_CACHE=1 make docker-image-envoy\n```\n\n### Update Envoy API\n\nDouble check if we need to update any dependency in `Makefile.api` godeps target, otherwise\njust run `make api` and submit the changes.\n\nThe last step is to pray for CI to be green, and then merge it in :pray:.\n"
  },
  {
    "path": "Vagrantfile",
    "content": "# -*- mode: ruby -*-\n# vi: set ft=ruby :\n\n$VM_MEMORY = (ENV['VM_MEMORY'] || 4096)\n$VM_CPUS = (ENV['VM_CPUS'] || 4)\n# Requires `vagrant plugin install vagrant-disksize`\n$VM_DISK = (ENV['VM_DISK'] || \"100GB\")\n\n$GO_VERSION = (ENV['GO_VERSION'] || \"1.22.0\")\n\n## Some inline scripts for installation\n$go_install = <<-'SCRIPT'\n# Install golang\nGO_VERSION=$1\ncurl -O https://storage.googleapis.com/golang/go$GO_VERSION.linux-amd64.tar.gz && \\\n    rm -rf /usr/local/go \\\n    && tar -C /usr/local -xzf go$GO_VERSION.linux-amd64.tar.gz \\\n    && rm -rf go$GO_VERSION.linux-amd64.tar.gz && \\\n    echo 'export PATH=$PATH:/usr/local/go/bin:/home/vagrant/go/bin' >> /home/vagrant/.bashrc\nSCRIPT\n\n# This is same as what mentioned in Docker.builder.tests\n$dependencies = <<-'SCRIPT'\napt-get update && \\\n    apt-get upgrade -y --no-install-recommends && \\\n    apt-get install -y --no-install-recommends \\\n      ca-certificates \\\n      gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-dev-arm64-cross binutils-aarch64-linux-gnu \\\n      gcc-x86-64-linux-gnu g++-x86-64-linux-gnu libc6-dev-amd64-cross binutils-x86-64-linux-gnu \\\n      libc6-dev \\\n      autoconf automake cmake coreutils curl git libtool make ninja-build patch patchelf \\\n      python3 python-is-python3 unzip virtualenv wget zip \\\n      software-properties-common && \\\n    wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc && \\\n    apt-add-repository -y \"deb http://apt.llvm.org/noble/ llvm-toolchain-noble-18 main\" && \\\n    apt-get update && \\\n    apt-get install -y --no-install-recommends \\\n      clang-18 clangd-18 llvm-18-dev lld-18 lldb-18 clang-format-18 clang-tools-18 clang-tidy-18 libc++-18-dev libc++abi-18-dev && \\\n    apt-get purge --auto-remove && \\\n    apt-get clean\nSCRIPT\n\nVagrant.configure(\"2\") do |config|\n  config.vm.box = \"bento/ubuntu-24.04\"\n  config.disksize.size = $VM_DISK\n\n  config.vm.provider \"virtualbox\" do |vb|\n    # Customize the amount of memory on the VM:\n    vb.memory = $VM_MEMORY\n    vb.cpus = $VM_CPUS\n  end\n  config.vm.synced_folder \".\", \"/home/vagrant/proxy\"\n\n  config.vm.provision \"docker\"\n  config.vm.provision \"shell\", inline: $go_install, args: $GO_VERSION\n  config.vm.provision \"shell\", inline: $dependencies\nend\n"
  },
  {
    "path": "WORKSPACE",
    "content": "workspace(name = \"cilium\")\n\nENVOY_PROJECT = \"envoyproxy\"\n\nENVOY_REPO = \"envoy\"\n\n# Envoy GIT commit SHA of release\n#\n# We grep for the following line to generate SOURCE_VERSION file for non-git\n# distribution builds. This line must start with the string ENVOY_SHA followed by\n# an equals sign and a git SHA in double quotes.\n#\n# No other line in this file may have ENVOY_SHA followed by an equals sign!\n#\n# renovate: datasource=github-releases depName=envoyproxy/envoy digestVersion=v1.37.2\nENVOY_SHA = \"5afe27fb338b16d5bb06b3a7198bcd581b4e3dee\"\n\n# // clang-format off: unexpected @bazel_tools reference, please indirect via a definition in //bazel\nload(\"@bazel_tools//tools/build_defs/repo:git.bzl\", \"git_repository\")\n# // clang-format on\n\nlocal_repository(\n    name = \"envoy_build_config\",\n    path = \"envoy_build_config\",\n)\n\n# This is a local repository for local development instead of git repository for faster feedback loop\n#local_repository(\n#    name = \"envoy\",\n#    # Update the path to point to your local Envoy repository.\n#    path = \"/home/tammach/go/src/github.com/envoyproxy/envoy\",\n#)\n\ngit_repository(\n    name = \"envoy\",\n    commit = ENVOY_SHA,\n    patch_args = [\"apply\"],\n    patch_tool = \"git\",\n    patches = [\n        \"@//patches:0001-network-Add-callback-for-upstream-authorization.patch\",\n        \"@//patches:0002-listener-add-socket-options.patch\",\n        \"@//patches:0003-original_dst_cluster-Avoid-multiple-hosts-for-the-sa.patch\",\n        \"@//patches:0004-thread_local-reset-slot-in-worker-threads-first.patch\",\n        \"@//patches:0005-http-header-expose-attribute.patch\",\n        \"@//patches:0006-test-integration-Defer-fake-upstream-read-enable-un.patch\",\n        \"@//patches:0008-repo-Make-yq-dependency-optional-for-CI-config-parsi.patch\",\n    ],\n    # // clang-format off: Envoy's format check: Only repository_locations.bzl may contains URL references\n    remote = \"https://github.com/envoyproxy/envoy.git\",\n    # // clang-format on\n)\n\n#\n# Bazel does not do transitive dependencies, so we must basically\n# include all of Envoy's WORKSPACE file below, with the following\n# changes:\n# - Skip the 'workspace(name = \"envoy\")' line as we already defined\n#   the workspace above.\n# - loads of \"//...\" need to be renamed as \"@envoy//...\"\n#\n\nload(\"@envoy//bazel:api_binding.bzl\", \"envoy_api_binding\")\n\nenvoy_api_binding()\n\nload(\"@envoy//bazel:api_repositories.bzl\", \"envoy_api_dependencies\")\n\nenvoy_api_dependencies()\n\nload(\"@envoy//bazel:repositories.bzl\", \"envoy_dependencies\")\n\nenvoy_dependencies()\n\nload(\"@envoy//bazel:bazel_deps.bzl\", \"envoy_bazel_dependencies\")\n\nenvoy_bazel_dependencies()\n\nload(\"@envoy//bazel:repositories_extra.bzl\", \"envoy_dependencies_extra\")\n\nenvoy_dependencies_extra()\n\nload(\"@envoy//bazel:python_dependencies.bzl\", \"envoy_python_dependencies\")\n\nenvoy_python_dependencies()\n\nload(\"@bazel_gazelle//:deps.bzl\", \"go_repository\")\nload(\"@envoy//bazel:dependency_imports.bzl\", \"envoy_dependency_imports\")\n\ngo_repository(\n    name = \"org_golang_x_text\",\n    build_external = \"external\",\n    importpath = \"golang.org/x/text\",\n    sum = \"h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE=\",\n    version = \"v0.33.0\",\n)\n\ngo_repository(\n    name = \"org_golang_x_tools\",\n    build_external = \"external\",\n    importpath = \"golang.org/x/tools\",\n    sum = \"h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc=\",\n    version = \"v0.41.0\",\n)\n\ngo_repository(\n    name = \"org_golang_x_net\",\n    build_external = \"external\",\n    importpath = \"golang.org/x/net\",\n    sum = \"h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o=\",\n    version = \"v0.49.0\",\n)\n\ngo_repository(\n    name = \"org_golang_x_sys\",\n    build_external = \"external\",\n    importpath = \"golang.org/x/sys\",\n    sum = \"h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=\",\n    version = \"v0.42.0\",\n)\n\ngo_repository(\n    name = \"org_golang_x_mod\",\n    build_external = \"external\",\n    importpath = \"golang.org/x/mod\",\n    sum = \"h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c=\",\n    version = \"v0.32.0\",\n)\n\nenvoy_dependency_imports()\n\nload(\"@envoy//bazel:repo.bzl\", \"envoy_repo\")\n\nenvoy_repo()\n\nload(\"@envoy//bazel:toolchains.bzl\", \"envoy_toolchains\")\n\nenvoy_toolchains()\n\n# When BAZEL_LLVM_PATH is set, envoy_toolchains() skips creating the\n# llvm_toolchain_llvm repo, but envoy's clang-format target still depends on it.\n# Provide it only if it wasn't already created.\nload(\"//bazel:local_llvm.bzl\", \"local_llvm_repo\")\n\nlocal_llvm_repo(name = \"llvm_toolchain_llvm\")\n\nload(\"@envoy//bazel:dependency_imports_extra.bzl\", \"envoy_dependency_imports_extra\")\n\nenvoy_dependency_imports_extra()\n"
  },
  {
    "path": "bazel/BUILD",
    "content": "platform(\n    name = \"linux_aarch64\",\n    constraint_values = [\n        \"@platforms//cpu:aarch64\",\n        \"@platforms//os:linux\",\n    ],\n)\n\nplatform(\n    name = \"linux_x86_64\",\n    constraint_values = [\n        \"@platforms//cpu:x86_64\",\n        \"@platforms//os:linux\",\n    ],\n)\n"
  },
  {
    "path": "bazel/get_workspace_status",
    "content": "#!/bin/bash\n\n# This file was imported from https://github.com/bazelbuild/bazel at d6fec93.\n\n# This script will be run bazel when building process starts to\n# generate key-value information that represents the status of the\n# workspace. The output should be like\n#\n# KEY1 VALUE1\n# KEY2 VALUE2\n#\n# If the script exits with non-zero code, it's considered as a failure\n# and the output will be discarded.\n\n# For Envoy in particular, we want to force binaries to relink when the Git\n# SHA changes (https://github.com/envoyproxy/envoy/issues/2551). This can be\n# done by prefixing keys with \"STABLE_\". To avoid breaking compatibility with\n# other status scripts, this one still echos the non-stable (\"volatile\") names.\n\n# If this SOURCE_VERSION file exists then it must have been placed here by a\n# distribution doing a non-git, source build.\n# Distributions would be expected to echo the commit/tag as BUILD_SCM_REVISION\nif [ -f SOURCE_VERSION ]\nthen\n    echo \"BUILD_SCM_REVISION $(cat SOURCE_VERSION)\"\n    echo \"STABLE_BUILD_SCM_REVISION $(cat SOURCE_VERSION)\"\n    echo \"BUILD_SCM_STATUS Distribution\"\n    exit 0\nfi\n\n# The code below presents an implementation that works for git repository\ngit_rev=$(git rev-parse HEAD) || exit 1\necho \"BUILD_SCM_REVISION ${git_rev}\"\necho \"STABLE_BUILD_SCM_REVISION ${git_rev}\"\n\n# Check whether there are any uncommitted changes\ntree_status=\"Clean\"\ngit diff-index --quiet HEAD -- || {\n    tree_status=\"Modified\"\n}\necho \"BUILD_SCM_STATUS ${tree_status}\"\necho \"STABLE_BUILD_SCM_STATUS ${tree_status}\"\n"
  },
  {
    "path": "bazel/local_llvm.bzl",
    "content": "\"\"\"Repository rule to provide llvm_toolchain_llvm when using a local LLVM toolchain.\n\nWhen BAZEL_LLVM_PATH is set (local toolchain mode), the toolchains_llvm\nllvm_toolchain() macro skips creating the llvm_toolchain_llvm repository.\nEnvoy's tools/clang-format target still depends on @llvm_toolchain_llvm//:clang-format,\nso we need to provide it.\n\"\"\"\n\ndef _local_llvm_repo_impl(repository_ctx):\n    llvm_path = repository_ctx.os.environ.get(\"BAZEL_LLVM_PATH\", \"\")\n    clang_format = None\n\n    if llvm_path:\n        candidate = repository_ctx.path(llvm_path + \"/bin/clang-format\")\n        if candidate.exists:\n            clang_format = candidate\n\n    if not clang_format:\n        clang_format = repository_ctx.which(\"clang-format\")\n\n    if not clang_format:\n        fail(\"Could not find clang-format. Set BAZEL_LLVM_PATH or ensure clang-format is on PATH.\")\n\n    repository_ctx.symlink(clang_format, \"bin/clang-format\")\n    repository_ctx.file(\"BUILD.bazel\", \"\"\"\\\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n    name = \"clang-format\",\n    srcs = [\"bin/clang-format\"],\n)\n\"\"\")\n\nlocal_llvm_repo = repository_rule(\n    implementation = _local_llvm_repo_impl,\n    environ = [\"BAZEL_LLVM_PATH\", \"PATH\"],\n    local = True,\n)\n"
  },
  {
    "path": "bazel/platform_mappings",
    "content": "platforms:\n  //bazel:linux_aarch64\n    --cpu=aarch64\n    --crosstool_top=//bazel/toolchains:toolchain\n\n  //bazel:linux_x86_64\n    --cpu=k8\n    --crosstool_top=//bazel/toolchains:toolchain\n\nflags:\n  --cpu=k8\n    //bazel:linux_x86_64\n\n  --cpu=aarch64\n    //bazel:linux_aarch64\n\n"
  },
  {
    "path": "bazel/setup_clang.sh",
    "content": "#!/bin/bash\n\nBAZELRC_FILE=\"${BAZELRC_FILE:-$(bazel info workspace)/clang.bazelrc}\"\n\nLLVM_PREFIX=$1\n\nif [[ ! -e \"${LLVM_PREFIX}/bin/llvm-config\" ]]; then\n  echo \"Error: cannot find llvm-config in ${LLVM_PREFIX}.\"\n  exit 1\nfi\n\nBINDIR=\"$(\"${LLVM_PREFIX}\"/bin/llvm-config --bindir)\"\nPATH=\"${BINDIR}:${PATH}\"\nexport PATH\n\nLLVM_VERSION=\"$(llvm-config --version)\"\nLLVM_LIBDIR=\"$(llvm-config --libdir)\"\nLLVM_TARGET=\"$(llvm-config --host-target)\"\n\nRT_LIBRARY_PATH=\"${LLVM_LIBDIR}/clang/${LLVM_VERSION}/lib/${LLVM_TARGET}\"\n\necho \"# Generated file, do not edit. If you want to disable clang, just delete this file.\nbuild:clang-local --action_env='PATH=${PATH}' --host_action_env='PATH=${PATH}'\nbuild:clang-local --action_env='LLVM_CONFIG=${LLVM_PREFIX}/bin/llvm-config' --host_action_env='LLVM_CONFIG=${LLVM_PREFIX}/bin/llvm-config'\nbuild:clang-local --repo_env='LLVM_CONFIG=${LLVM_PREFIX}/bin/llvm-config'\nbuild:clang-local --linkopt='-L$(llvm-config --libdir)'\nbuild:clang-local --linkopt='-Wl,-rpath,$(llvm-config --libdir)'\n\nbuild:clang-asan --linkopt='-L${RT_LIBRARY_PATH}'\n\" >\"${BAZELRC_FILE}\"\n"
  },
  {
    "path": "bazel/toolchains/BUILD",
    "content": "load(\"@rules_cc//cc:defs.bzl\", \"cc_toolchain\", \"cc_toolchain_suite\")\nload(\":cc_toolchain_config.bzl\", \"cc_toolchain_config\")\n\n# Using platform-provided files\nfilegroup(name = \"empty\")\n\ntoolchain(\n    name = \"aarch64_linux_cc_toolchain\",\n    exec_compatible_with = [\"@platforms//os:linux\"],\n    target_compatible_with = [\n        \"@platforms//cpu:aarch64\",\n        \"@platforms//os:linux\",\n    ],\n    toolchain = \":clang_aarch64_linux_cc_toolchain\",\n    toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\ncc_toolchain(\n    name = \"clang_aarch64_linux_cc_toolchain\",\n    all_files = \":empty\",\n    compiler_files = \":empty\",\n    dwp_files = \":empty\",\n    linker_files = \":empty\",\n    objcopy_files = \":empty\",\n    strip_files = \":empty\",\n    toolchain_config = \":clang_aarch64_linux_toolchain_config\",\n)\n\ncc_toolchain_config(\n    name = \"clang_aarch64_linux_toolchain_config\",\n    abi_libc_version = \"aarch64\",\n    abi_version = \"aarch64\",\n    compile_flags = [\n        \"--target=aarch64-unknown-linux-gnu\",\n        \"-fuse-ld=lld\",  # cmake compiler test needs this\n        \"-U_FORTIFY_SOURCE\",\n        \"-fstack-protector\",\n        \"-Wall\",\n        \"-Wunused-but-set-parameter\",\n        \"-Wthread-safety-analysis\",\n        \"-Wno-free-nonheap-object\",\n        \"-fno-omit-frame-pointer\",\n        # Needed by Envoy dependencies to build:\n        \"-Wno-unused-command-line-argument\",  # tcmalloc needs this since -fuse-ld was added above\n        \"-Wno-deprecated-builtins\",\n    ],\n    compiler = \"clang\",\n    coverage_compile_flags = [\"--coverage\"],\n    coverage_link_flags = [\"--coverage\"],\n    cpu = \"aarch64\",\n    cxx_builtin_include_directories = [\n        \"/usr/lib/llvm-18\",\n        \"/usr/lib/clang\",\n        \"/usr/aarch64-linux-gnu/include\",\n        \"/usr/include\",\n    ],\n    cxx_flags = [\"-std=c++0x\"],\n    dbg_compile_flags = [\"-g\"],\n    # Cross-compilation flags exported as environment variables for foreign_cc\n    # rules (e.g. liburing's configure_make). This ensures foreign build systems\n    # see the correct --target when they use CFLAGS/CPPFLAGS from the environment.\n    foreign_cc_env = {\n        \"CFLAGS\": \"--target=aarch64-unknown-linux-gnu -fuse-ld=lld\",\n        \"CPPFLAGS\": \"--target=aarch64-unknown-linux-gnu -fuse-ld=lld\",\n        # -lc is needed because liburing builds a shared library with -Wl,-z,defs\n        # which requires all symbols (including memset from libc) to be resolved.\n        # The cross-compiler driver doesn't implicitly add -lc for shared libraries.\n        \"LDFLAGS\": \"--target=aarch64-unknown-linux-gnu -fuse-ld=lld -lc\",\n    },\n    host_system_name = \"local\",\n    link_flags = [\n        \"--target=aarch64-unknown-linux-gnu\",\n        \"-fuse-ld=lld\",\n        \"-Wl,-no-as-needed\",\n        \"-Wl,-z,relro,-z,now\",\n        \"-lm\",\n    ],\n    link_libs = [\n        \"-l:libstdc++.a\",\n        \"-latomic\",\n    ],\n    opt_compile_flags = [\n        \"-g0\",\n        \"-O2\",\n        \"-D_FORTIFY_SOURCE=1\",\n        \"-DNDEBUG\",\n        \"-ffunction-sections\",\n        \"-fdata-sections\",\n    ],\n    opt_link_flags = [\"-Wl,--gc-sections\"],\n    supports_start_end_lib = True,\n    target_libc = \"glibc\",\n    target_system_name = \"aarch64-linux-gnu\",\n    tool_paths = {\n        \"ar\": \"/usr/bin/llvm-ar\",\n        \"compat-ld\": \"/usr/bin/lld\",\n        \"ld\": \"/usr/bin/lld\",\n        \"gold\": \"/usr/bin/lld\",\n        \"cpp\": \"/usr/bin/clang-cpp\",\n        \"gcc\": \"/usr/bin/clang\",\n        \"dwp\": \"/usr/bin/llvm-dwp\",\n        \"gcov\": \"/usr/bin/llvm-cov\",\n        \"nm\": \"/usr/bin/llvm-nm\",\n        \"objcopy\": \"/usr/bin/llvm-objcopy\",\n        \"objdump\": \"/usr/bin/llvm-objdump\",\n        \"strip\": \"/usr/bin/llvm-strip\",\n    },\n    toolchain_identifier = \"linux_aarch64\",\n    unfiltered_compile_flags = [\n        \"-Wno-builtin-macro-redefined\",\n        \"-D__DATE__=\\\"redacted\\\"\",\n        \"-D__TIMESTAMP__=\\\"redacted\\\"\",\n        \"-D__TIME__=\\\"redacted\\\"\",\n    ],\n    #\n    # cxx_builtin_include_directories entries need \"\" prefix if sysroot is set\n    #\n    # builtin_sysroot = \"/sysroot\",\n)\n\ntoolchain(\n    name = \"x86_64_linux_cc_toolchain\",\n    exec_compatible_with = [\"@platforms//os:linux\"],\n    target_compatible_with = [\n        \"@platforms//cpu:x86_64\",\n        \"@platforms//os:linux\",\n    ],\n    toolchain = \":clang_x86_64_linux_cc_toolchain\",\n    toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\ncc_toolchain(\n    name = \"clang_x86_64_linux_cc_toolchain\",\n    all_files = \":empty\",\n    compiler_files = \":empty\",\n    dwp_files = \":empty\",\n    linker_files = \":empty\",\n    objcopy_files = \":empty\",\n    strip_files = \":empty\",\n    toolchain_config = \":clang_x86_64_linux_toolchain_config\",\n)\n\ncc_toolchain_config(\n    name = \"clang_x86_64_linux_toolchain_config\",\n    abi_libc_version = \"unknown\",\n    abi_version = \"unknown\",\n    compile_flags = [\n        \"--target=x86_64-unknown-linux-gnu\",\n        \"-fuse-ld=lld\",  # cmake compiler test needs this\n        \"-U_FORTIFY_SOURCE\",\n        \"-fstack-protector\",\n        \"-Wall\",\n        \"-Wunused-but-set-parameter\",\n        \"-Wthread-safety-analysis\",\n        \"-Wno-free-nonheap-object\",\n        \"-fno-omit-frame-pointer\",\n        # Needed by Envoy dependencies to build:\n        \"-Wno-unused-command-line-argument\",  # tcmalloc needs this since -fuse-ld was added above\n        \"-Wno-deprecated-builtins\",\n    ],\n    compiler = \"clang\",\n    coverage_compile_flags = [\"--coverage\"],\n    coverage_link_flags = [\"--coverage\"],\n    cpu = \"k8\",\n    cxx_builtin_include_directories = [\n        \"/usr/lib/llvm-18\",\n        \"/usr/lib/clang\",\n        \"/usr/x86_64-linux-gnu/include\",\n        \"/usr/include\",\n    ],\n    cxx_flags = [\"-std=c++0x\"],\n    dbg_compile_flags = [\"-g\"],\n    host_system_name = \"local\",\n    link_flags = [\n        \"--target=x86_64-unknown-linux-gnu\",\n        \"-fuse-ld=lld\",\n        \"-Wl,-no-as-needed\",\n        \"-Wl,-z,relro,-z,now\",\n        \"-lm\",\n    ],\n    link_libs = [\n        \"-l:libstdc++.a\",\n        \"-latomic\",\n    ],\n    opt_compile_flags = [\n        \"-g0\",\n        \"-O2\",\n        \"-D_FORTIFY_SOURCE=1\",\n        \"-DNDEBUG\",\n        \"-ffunction-sections\",\n        \"-fdata-sections\",\n    ],\n    opt_link_flags = [\"-Wl,--gc-sections\"],\n    supports_start_end_lib = True,\n    target_libc = \"unknown\",\n    target_system_name = \"unknown\",\n    tool_paths = {\n        \"ar\": \"/usr/bin/llvm-ar\",\n        \"compat-ld\": \"/usr/bin/lld\",\n        \"ld\": \"/usr/bin/lld\",\n        \"gold\": \"/usr/bin/lld\",\n        \"cpp\": \"/usr/bin/clang-cpp\",\n        \"gcc\": \"/usr/bin/clang\",\n        \"dwp\": \"/usr/bin/llvm-dwp\",\n        \"gcov\": \"/usr/bin/llvm-cov\",\n        \"nm\": \"/usr/bin/llvm-nm\",\n        \"objcopy\": \"/usr/bin/llvm-objcopy\",\n        \"objdump\": \"/usr/bin/llvm-objdump\",\n        \"strip\": \"/usr/bin/llvm-strip\",\n    },\n    toolchain_identifier = \"linux_x86_64\",\n    unfiltered_compile_flags = [\n        \"-Wno-builtin-macro-redefined\",\n        \"-D__DATE__=\\\"redacted\\\"\",\n        \"-D__TIMESTAMP__=\\\"redacted\\\"\",\n        \"-D__TIME__=\\\"redacted\\\"\",\n    ],\n    #\n    # cxx_builtin_include_directories entries need \"%sysroot%\" prefix if sysroot is set\n    #\n    # builtin_sysroot = \"/sysroot\",\n)\n\n# still needed to avoid use of local_config_cc toolchain\ncc_toolchain_suite(\n    name = \"toolchain\",\n    toolchains = {\n        \"k8\": \":clang_x86_64_linux_cc_toolchain\",\n        \"aarch64\": \":clang_aarch64_linux_cc_toolchain\",\n    },\n)\n"
  },
  {
    "path": "bazel/toolchains/cc_toolchain_config.bzl",
    "content": "# Copied from https://github.com/envoyproxy/envoy-build-tools\n# Originally generatd by https://github.com/bazelbuild/bazel-toolchains\n#\n# Copyright 2019 The Bazel Authors. All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"A Starlark cc_toolchain configuration rule\"\"\"\n\nload(\"@bazel_tools//tools/build_defs/cc:action_names.bzl\", \"ACTION_NAMES\")\nload(\n    \"@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl\",\n    \"env_entry\",\n    \"env_set\",\n    \"feature\",\n    \"feature_set\",\n    \"flag_group\",\n    \"flag_set\",\n    \"tool_path\",\n    \"variable_with_value\",\n    \"with_feature_set\",\n)\n\ndef layering_check_features(compiler):\n    if compiler != \"clang\":\n        return []\n    return [\n        feature(\n            name = \"use_module_maps\",\n            requires = [feature_set(features = [\"module_maps\"])],\n            flag_sets = [\n                flag_set(\n                    actions = [\n                        ACTION_NAMES.c_compile,\n                        ACTION_NAMES.cpp_compile,\n                        ACTION_NAMES.cpp_header_parsing,\n                        ACTION_NAMES.cpp_module_compile,\n                    ],\n                    flag_groups = [\n                        flag_group(\n                            flags = [\n                                \"-fmodule-name=%{module_name}\",\n                                \"-fmodule-map-file=%{module_map_file}\",\n                            ],\n                        ),\n                    ],\n                ),\n            ],\n        ),\n\n        # Tell blaze we support module maps in general, so they will be generated\n        # for all c/c++ rules.\n        # Note: not all C++ rules support module maps; thus, do not imply this\n        # feature from other features - instead, require it.\n        feature(name = \"module_maps\", enabled = True),\n        feature(\n            name = \"layering_check\",\n            implies = [\"use_module_maps\"],\n            flag_sets = [\n                flag_set(\n                    actions = [\n                        ACTION_NAMES.c_compile,\n                        ACTION_NAMES.cpp_compile,\n                        ACTION_NAMES.cpp_header_parsing,\n                        ACTION_NAMES.cpp_module_compile,\n                    ],\n                    flag_groups = [\n                        flag_group(flags = [\n                            \"-fmodules-strict-decluse\",\n                            \"-Wprivate-header\",\n                        ]),\n                        flag_group(\n                            iterate_over = \"dependent_module_map_files\",\n                            flags = [\n                                \"-fmodule-map-file=%{dependent_module_map_files}\",\n                            ],\n                        ),\n                    ],\n                ),\n            ],\n        ),\n    ]\n\nall_compile_actions = [\n    ACTION_NAMES.c_compile,\n    ACTION_NAMES.cpp_compile,\n    ACTION_NAMES.linkstamp_compile,\n    ACTION_NAMES.assemble,\n    ACTION_NAMES.preprocess_assemble,\n    ACTION_NAMES.cpp_header_parsing,\n    ACTION_NAMES.cpp_module_compile,\n    ACTION_NAMES.cpp_module_codegen,\n    ACTION_NAMES.clif_match,\n    ACTION_NAMES.lto_backend,\n]\n\nall_cpp_compile_actions = [\n    ACTION_NAMES.cpp_compile,\n    ACTION_NAMES.linkstamp_compile,\n    ACTION_NAMES.cpp_header_parsing,\n    ACTION_NAMES.cpp_module_compile,\n    ACTION_NAMES.cpp_module_codegen,\n    ACTION_NAMES.clif_match,\n]\n\npreprocessor_compile_actions = [\n    ACTION_NAMES.c_compile,\n    ACTION_NAMES.cpp_compile,\n    ACTION_NAMES.linkstamp_compile,\n    ACTION_NAMES.preprocess_assemble,\n    ACTION_NAMES.cpp_header_parsing,\n    ACTION_NAMES.cpp_module_compile,\n    ACTION_NAMES.clif_match,\n]\n\ncodegen_compile_actions = [\n    ACTION_NAMES.c_compile,\n    ACTION_NAMES.cpp_compile,\n    ACTION_NAMES.linkstamp_compile,\n    ACTION_NAMES.assemble,\n    ACTION_NAMES.preprocess_assemble,\n    ACTION_NAMES.cpp_module_codegen,\n    ACTION_NAMES.lto_backend,\n]\n\nall_link_actions = [\n    ACTION_NAMES.cpp_link_executable,\n    ACTION_NAMES.cpp_link_dynamic_library,\n    ACTION_NAMES.cpp_link_nodeps_dynamic_library,\n]\n\nlto_index_actions = [\n    ACTION_NAMES.lto_index_for_executable,\n    ACTION_NAMES.lto_index_for_dynamic_library,\n    ACTION_NAMES.lto_index_for_nodeps_dynamic_library,\n]\n\ndef _impl(ctx):\n    tool_paths = [\n        tool_path(name = name, path = path)\n        for name, path in ctx.attr.tool_paths.items()\n    ]\n    action_configs = []\n\n    supports_pic_feature = feature(\n        name = \"supports_pic\",\n        enabled = True,\n    )\n    supports_start_end_lib_feature = feature(\n        name = \"supports_start_end_lib\",\n        enabled = True,\n    )\n\n    default_compile_flags_feature = feature(\n        name = \"default_compile_flags\",\n        enabled = True,\n        flag_sets = [\n            flag_set(\n                actions = all_compile_actions,\n                flag_groups = ([\n                    flag_group(\n                        flags = ctx.attr.compile_flags,\n                    ),\n                ] if ctx.attr.compile_flags else []),\n            ),\n            flag_set(\n                actions = all_compile_actions,\n                flag_groups = ([\n                    flag_group(\n                        flags = ctx.attr.dbg_compile_flags,\n                    ),\n                ] if ctx.attr.dbg_compile_flags else []),\n                with_features = [with_feature_set(features = [\"dbg\"])],\n            ),\n            flag_set(\n                actions = all_compile_actions,\n                flag_groups = ([\n                    flag_group(\n                        flags = ctx.attr.opt_compile_flags,\n                    ),\n                ] if ctx.attr.opt_compile_flags else []),\n                with_features = [with_feature_set(features = [\"opt\"])],\n            ),\n            flag_set(\n                actions = all_cpp_compile_actions + [ACTION_NAMES.lto_backend],\n                flag_groups = ([\n                    flag_group(\n                        flags = ctx.attr.cxx_flags,\n                    ),\n                ] if ctx.attr.cxx_flags else []),\n            ),\n        ],\n    )\n\n    default_link_flags_feature = feature(\n        name = \"default_link_flags\",\n        enabled = True,\n        flag_sets = [\n            flag_set(\n                actions = all_link_actions + lto_index_actions,\n                flag_groups = ([\n                    flag_group(\n                        flags = ctx.attr.link_flags,\n                    ),\n                ] if ctx.attr.link_flags else []),\n            ),\n            flag_set(\n                actions = all_link_actions + lto_index_actions,\n                flag_groups = ([\n                    flag_group(\n                        flags = ctx.attr.opt_link_flags,\n                    ),\n                ] if ctx.attr.opt_link_flags else []),\n                with_features = [with_feature_set(features = [\"opt\"])],\n            ),\n        ],\n    )\n\n    dbg_feature = feature(name = \"dbg\")\n\n    opt_feature = feature(name = \"opt\")\n\n    sysroot_feature = feature(\n        name = \"sysroot\",\n        enabled = True,\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.preprocess_assemble,\n                    ACTION_NAMES.linkstamp_compile,\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                    ACTION_NAMES.cpp_header_parsing,\n                    ACTION_NAMES.cpp_module_compile,\n                    ACTION_NAMES.cpp_module_codegen,\n                    ACTION_NAMES.lto_backend,\n                    ACTION_NAMES.clif_match,\n                ] + all_link_actions + lto_index_actions,\n                flag_groups = [\n                    flag_group(\n                        flags = [\"--sysroot=%{sysroot}\"],\n                        expand_if_available = \"sysroot\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    fdo_optimize_feature = feature(\n        name = \"fdo_optimize\",\n        flag_sets = [\n            flag_set(\n                actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],\n                flag_groups = [\n                    flag_group(\n                        flags = [\n                            \"-fprofile-use=%{fdo_profile_path}\",\n                            \"-fprofile-correction\",\n                        ],\n                        expand_if_available = \"fdo_profile_path\",\n                    ),\n                ],\n            ),\n        ],\n        provides = [\"profile\"],\n    )\n\n    supports_dynamic_linker_feature = feature(name = \"supports_dynamic_linker\", enabled = True)\n\n    user_compile_flags_feature = feature(\n        name = \"user_compile_flags\",\n        enabled = True,\n        flag_sets = [\n            flag_set(\n                actions = all_compile_actions,\n                flag_groups = [\n                    flag_group(\n                        flags = [\"%{user_compile_flags}\"],\n                        iterate_over = \"user_compile_flags\",\n                        expand_if_available = \"user_compile_flags\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    unfiltered_compile_flags_feature = feature(\n        name = \"unfiltered_compile_flags\",\n        enabled = True,\n        flag_sets = [\n            flag_set(\n                actions = all_compile_actions,\n                flag_groups = ([\n                    flag_group(\n                        flags = ctx.attr.unfiltered_compile_flags,\n                    ),\n                ] if ctx.attr.unfiltered_compile_flags else []),\n            ),\n        ],\n    )\n\n    library_search_directories_feature = feature(\n        name = \"library_search_directories\",\n        flag_sets = [\n            flag_set(\n                actions = all_link_actions + lto_index_actions,\n                flag_groups = [\n                    flag_group(\n                        flags = [\"-L%{library_search_directories}\"],\n                        iterate_over = \"library_search_directories\",\n                        expand_if_available = \"library_search_directories\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    static_libgcc_feature = feature(\n        name = \"static_libgcc\",\n        enabled = True,\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.cpp_link_executable,\n                    ACTION_NAMES.cpp_link_dynamic_library,\n                    ACTION_NAMES.lto_index_for_executable,\n                    ACTION_NAMES.lto_index_for_dynamic_library,\n                ],\n                flag_groups = [flag_group(flags = [\"-static-libgcc\"])],\n                with_features = [\n                    with_feature_set(features = [\"static_link_cpp_runtimes\"]),\n                ],\n            ),\n        ],\n    )\n\n    pic_feature = feature(\n        name = \"pic\",\n        enabled = True,\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.assemble,\n                    ACTION_NAMES.preprocess_assemble,\n                    ACTION_NAMES.linkstamp_compile,\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                    ACTION_NAMES.cpp_module_codegen,\n                    ACTION_NAMES.cpp_module_compile,\n                ],\n                flag_groups = [\n                    flag_group(flags = [\"-fPIC\"], expand_if_available = \"pic\"),\n                ],\n            ),\n        ],\n    )\n\n    per_object_debug_info_feature = feature(\n        name = \"per_object_debug_info\",\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.assemble,\n                    ACTION_NAMES.preprocess_assemble,\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                    ACTION_NAMES.cpp_module_codegen,\n                ],\n                flag_groups = [\n                    flag_group(\n                        flags = [\"-gsplit-dwarf\"],\n                        expand_if_available = \"per_object_debug_info_file\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    preprocessor_defines_feature = feature(\n        name = \"preprocessor_defines\",\n        enabled = True,\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.preprocess_assemble,\n                    ACTION_NAMES.linkstamp_compile,\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                    ACTION_NAMES.cpp_header_parsing,\n                    ACTION_NAMES.cpp_module_compile,\n                    ACTION_NAMES.clif_match,\n                ],\n                flag_groups = [\n                    flag_group(\n                        flags = [\"-D%{preprocessor_defines}\"],\n                        iterate_over = \"preprocessor_defines\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    cs_fdo_optimize_feature = feature(\n        name = \"cs_fdo_optimize\",\n        flag_sets = [\n            flag_set(\n                actions = [ACTION_NAMES.lto_backend],\n                flag_groups = [\n                    flag_group(\n                        flags = [\n                            \"-fprofile-use=%{fdo_profile_path}\",\n                            \"-Wno-profile-instr-unprofiled\",\n                            \"-Wno-profile-instr-out-of-date\",\n                            \"-fprofile-correction\",\n                        ],\n                        expand_if_available = \"fdo_profile_path\",\n                    ),\n                ],\n            ),\n        ],\n        provides = [\"csprofile\"],\n    )\n\n    autofdo_feature = feature(\n        name = \"autofdo\",\n        flag_sets = [\n            flag_set(\n                actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],\n                flag_groups = [\n                    flag_group(\n                        flags = [\n                            \"-fauto-profile=%{fdo_profile_path}\",\n                            \"-fprofile-correction\",\n                        ],\n                        expand_if_available = \"fdo_profile_path\",\n                    ),\n                ],\n            ),\n        ],\n        provides = [\"profile\"],\n    )\n\n    runtime_library_search_directories_feature = feature(\n        name = \"runtime_library_search_directories\",\n        flag_sets = [\n            flag_set(\n                actions = all_link_actions + lto_index_actions,\n                flag_groups = [\n                    flag_group(\n                        iterate_over = \"runtime_library_search_directories\",\n                        flag_groups = [\n                            flag_group(\n                                flags = [\n                                    \"-Wl,-rpath,$EXEC_ORIGIN/%{runtime_library_search_directories}\",\n                                ],\n                                expand_if_true = \"is_cc_test\",\n                            ),\n                            flag_group(\n                                flags = [\n                                    \"-Wl,-rpath,$ORIGIN/%{runtime_library_search_directories}\",\n                                ],\n                                expand_if_false = \"is_cc_test\",\n                            ),\n                        ],\n                        expand_if_available =\n                            \"runtime_library_search_directories\",\n                    ),\n                ],\n                with_features = [\n                    with_feature_set(features = [\"static_link_cpp_runtimes\"]),\n                ],\n            ),\n            flag_set(\n                actions = all_link_actions + lto_index_actions,\n                flag_groups = [\n                    flag_group(\n                        iterate_over = \"runtime_library_search_directories\",\n                        flag_groups = [\n                            flag_group(\n                                flags = [\n                                    \"-Wl,-rpath,$ORIGIN/%{runtime_library_search_directories}\",\n                                ],\n                            ),\n                        ],\n                        expand_if_available =\n                            \"runtime_library_search_directories\",\n                    ),\n                ],\n                with_features = [\n                    with_feature_set(\n                        not_features = [\"static_link_cpp_runtimes\"],\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    fission_support_feature = feature(\n        name = \"fission_support\",\n        flag_sets = [\n            flag_set(\n                actions = all_link_actions + lto_index_actions,\n                flag_groups = [\n                    flag_group(\n                        flags = [\"-Wl,--gdb-index\"],\n                        expand_if_available = \"is_using_fission\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    shared_flag_feature = feature(\n        name = \"shared_flag\",\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.cpp_link_dynamic_library,\n                    ACTION_NAMES.cpp_link_nodeps_dynamic_library,\n                    ACTION_NAMES.lto_index_for_dynamic_library,\n                    ACTION_NAMES.lto_index_for_nodeps_dynamic_library,\n                ],\n                flag_groups = [flag_group(flags = [\"-shared\"])],\n            ),\n        ],\n    )\n\n    random_seed_feature = feature(\n        name = \"random_seed\",\n        enabled = True,\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                    ACTION_NAMES.cpp_module_codegen,\n                    ACTION_NAMES.cpp_module_compile,\n                ],\n                flag_groups = [\n                    flag_group(\n                        flags = [\"-frandom-seed=%{output_file}\"],\n                        expand_if_available = \"output_file\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    includes_feature = feature(\n        name = \"includes\",\n        enabled = True,\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.preprocess_assemble,\n                    ACTION_NAMES.linkstamp_compile,\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                    ACTION_NAMES.cpp_header_parsing,\n                    ACTION_NAMES.cpp_module_compile,\n                    ACTION_NAMES.clif_match,\n                    ACTION_NAMES.objc_compile,\n                    ACTION_NAMES.objcpp_compile,\n                ],\n                flag_groups = [\n                    flag_group(\n                        flags = [\"-include\", \"%{includes}\"],\n                        iterate_over = \"includes\",\n                        expand_if_available = \"includes\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    fdo_instrument_feature = feature(\n        name = \"fdo_instrument\",\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                ] + all_link_actions + lto_index_actions,\n                flag_groups = [\n                    flag_group(\n                        flags = [\n                            \"-fprofile-generate=%{fdo_instrument_path}\",\n                            \"-fno-data-sections\",\n                        ],\n                        expand_if_available = \"fdo_instrument_path\",\n                    ),\n                ],\n            ),\n        ],\n        provides = [\"profile\"],\n    )\n\n    cs_fdo_instrument_feature = feature(\n        name = \"cs_fdo_instrument\",\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                    ACTION_NAMES.lto_backend,\n                ] + all_link_actions + lto_index_actions,\n                flag_groups = [\n                    flag_group(\n                        flags = [\n                            \"-fcs-profile-generate=%{cs_fdo_instrument_path}\",\n                        ],\n                        expand_if_available = \"cs_fdo_instrument_path\",\n                    ),\n                ],\n            ),\n        ],\n        provides = [\"csprofile\"],\n    )\n\n    include_paths_feature = feature(\n        name = \"include_paths\",\n        enabled = True,\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.preprocess_assemble,\n                    ACTION_NAMES.linkstamp_compile,\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                    ACTION_NAMES.cpp_header_parsing,\n                    ACTION_NAMES.cpp_module_compile,\n                    ACTION_NAMES.clif_match,\n                    ACTION_NAMES.objc_compile,\n                    ACTION_NAMES.objcpp_compile,\n                ],\n                flag_groups = [\n                    flag_group(\n                        flags = [\"-iquote\", \"%{quote_include_paths}\"],\n                        iterate_over = \"quote_include_paths\",\n                    ),\n                    flag_group(\n                        flags = [\"-I%{include_paths}\"],\n                        iterate_over = \"include_paths\",\n                    ),\n                    flag_group(\n                        flags = [\"-isystem\", \"%{system_include_paths}\"],\n                        iterate_over = \"system_include_paths\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    symbol_counts_feature = feature(\n        name = \"symbol_counts\",\n        flag_sets = [\n            flag_set(\n                actions = all_link_actions + lto_index_actions,\n                flag_groups = [\n                    flag_group(\n                        flags = [\n                            \"-Wl,--print-symbol-counts=%{symbol_counts_output}\",\n                        ],\n                        expand_if_available = \"symbol_counts_output\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    llvm_coverage_map_format_feature = feature(\n        name = \"llvm_coverage_map_format\",\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.preprocess_assemble,\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                    ACTION_NAMES.cpp_module_compile,\n                    ACTION_NAMES.objc_compile,\n                    ACTION_NAMES.objcpp_compile,\n                ],\n                flag_groups = [\n                    flag_group(\n                        flags = [\n                            \"-fprofile-instr-generate\",\n                            \"-fcoverage-mapping\",\n                        ],\n                    ),\n                ],\n            ),\n            flag_set(\n                actions = all_link_actions + lto_index_actions + [\n                    \"objc-executable\",\n                    \"objc++-executable\",\n                ],\n                flag_groups = [\n                    flag_group(flags = [\"-fprofile-instr-generate\"]),\n                ],\n            ),\n        ],\n        requires = [feature_set(features = [\"coverage\"])],\n        provides = [\"profile\"],\n    )\n\n    strip_debug_symbols_feature = feature(\n        name = \"strip_debug_symbols\",\n        flag_sets = [\n            flag_set(\n                actions = all_link_actions + lto_index_actions,\n                flag_groups = [\n                    flag_group(\n                        flags = [\"-Wl,-S\"],\n                        expand_if_available = \"strip_debug_symbols\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    build_interface_libraries_feature = feature(\n        name = \"build_interface_libraries\",\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.cpp_link_dynamic_library,\n                    ACTION_NAMES.cpp_link_nodeps_dynamic_library,\n                    ACTION_NAMES.lto_index_for_dynamic_library,\n                    ACTION_NAMES.lto_index_for_nodeps_dynamic_library,\n                ],\n                flag_groups = [\n                    flag_group(\n                        flags = [\n                            \"%{generate_interface_library}\",\n                            \"%{interface_library_builder_path}\",\n                            \"%{interface_library_input_path}\",\n                            \"%{interface_library_output_path}\",\n                        ],\n                        expand_if_available = \"generate_interface_library\",\n                    ),\n                ],\n                with_features = [\n                    with_feature_set(\n                        features = [\"supports_interface_shared_libraries\"],\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    libraries_to_link_feature = feature(\n        name = \"libraries_to_link\",\n        flag_sets = [\n            flag_set(\n                actions = all_link_actions + lto_index_actions,\n                flag_groups = [\n                    flag_group(\n                        iterate_over = \"libraries_to_link\",\n                        flag_groups = [\n                            flag_group(\n                                flags = [\"-Wl,--start-lib\"],\n                                expand_if_equal = variable_with_value(\n                                    name = \"libraries_to_link.type\",\n                                    value = \"object_file_group\",\n                                ),\n                            ),\n                            flag_group(\n                                flags = [\"-Wl,-whole-archive\"],\n                                expand_if_true =\n                                    \"libraries_to_link.is_whole_archive\",\n                            ),\n                            flag_group(\n                                flags = [\"%{libraries_to_link.object_files}\"],\n                                iterate_over = \"libraries_to_link.object_files\",\n                                expand_if_equal = variable_with_value(\n                                    name = \"libraries_to_link.type\",\n                                    value = \"object_file_group\",\n                                ),\n                            ),\n                            flag_group(\n                                flags = [\"%{libraries_to_link.name}\"],\n                                expand_if_equal = variable_with_value(\n                                    name = \"libraries_to_link.type\",\n                                    value = \"object_file\",\n                                ),\n                            ),\n                            flag_group(\n                                flags = [\"%{libraries_to_link.name}\"],\n                                expand_if_equal = variable_with_value(\n                                    name = \"libraries_to_link.type\",\n                                    value = \"interface_library\",\n                                ),\n                            ),\n                            flag_group(\n                                flags = [\"%{libraries_to_link.name}\"],\n                                expand_if_equal = variable_with_value(\n                                    name = \"libraries_to_link.type\",\n                                    value = \"static_library\",\n                                ),\n                            ),\n                            flag_group(\n                                flags = [\"-l%{libraries_to_link.name}\"],\n                                expand_if_equal = variable_with_value(\n                                    name = \"libraries_to_link.type\",\n                                    value = \"dynamic_library\",\n                                ),\n                            ),\n                            flag_group(\n                                flags = [\"-l:%{libraries_to_link.name}\"],\n                                expand_if_equal = variable_with_value(\n                                    name = \"libraries_to_link.type\",\n                                    value = \"versioned_dynamic_library\",\n                                ),\n                            ),\n                            flag_group(\n                                flags = [\"-Wl,-no-whole-archive\"],\n                                expand_if_true = \"libraries_to_link.is_whole_archive\",\n                            ),\n                            flag_group(\n                                flags = [\"-Wl,--end-lib\"],\n                                expand_if_equal = variable_with_value(\n                                    name = \"libraries_to_link.type\",\n                                    value = \"object_file_group\",\n                                ),\n                            ),\n                        ],\n                        expand_if_available = \"libraries_to_link\",\n                    ),\n                    flag_group(\n                        flags = [\"-Wl,@%{thinlto_param_file}\"],\n                        expand_if_true = \"thinlto_param_file\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    user_link_flags_feature = feature(\n        name = \"user_link_flags\",\n        flag_sets = [\n            flag_set(\n                actions = all_link_actions + lto_index_actions,\n                flag_groups = [\n                    flag_group(\n                        flags = [\"%{user_link_flags}\"],\n                        iterate_over = \"user_link_flags\",\n                        expand_if_available = \"user_link_flags\",\n                    ),\n                ] + ([flag_group(flags = ctx.attr.link_libs)] if ctx.attr.link_libs else []),\n            ),\n        ],\n    )\n\n    fdo_prefetch_hints_feature = feature(\n        name = \"fdo_prefetch_hints\",\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                    ACTION_NAMES.lto_backend,\n                ],\n                flag_groups = [\n                    flag_group(\n                        flags = [\n                            \"-mllvm\",\n                            \"-prefetch-hints-file=%{fdo_prefetch_hints_path}\",\n                        ],\n                        expand_if_available = \"fdo_prefetch_hints_path\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    linkstamps_feature = feature(\n        name = \"linkstamps\",\n        flag_sets = [\n            flag_set(\n                actions = all_link_actions + lto_index_actions,\n                flag_groups = [\n                    flag_group(\n                        flags = [\"%{linkstamp_paths}\"],\n                        iterate_over = \"linkstamp_paths\",\n                        expand_if_available = \"linkstamp_paths\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    gcc_coverage_map_format_feature = feature(\n        name = \"gcc_coverage_map_format\",\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.preprocess_assemble,\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                    ACTION_NAMES.cpp_module_compile,\n                    ACTION_NAMES.objc_compile,\n                    ACTION_NAMES.objcpp_compile,\n                    \"objc-executable\",\n                    \"objc++-executable\",\n                ],\n                flag_groups = [\n                    flag_group(\n                        flags = [\"-fprofile-arcs\", \"-ftest-coverage\"],\n                        expand_if_available = \"gcov_gcno_file\",\n                    ),\n                ],\n            ),\n            flag_set(\n                actions = all_link_actions + lto_index_actions,\n                flag_groups = [flag_group(flags = [\"--coverage\"])],\n            ),\n        ],\n        requires = [feature_set(features = [\"coverage\"])],\n        provides = [\"profile\"],\n    )\n\n    archiver_flags_feature = feature(\n        name = \"archiver_flags\",\n        flag_sets = [\n            flag_set(\n                actions = [ACTION_NAMES.cpp_link_static_library],\n                flag_groups = [\n                    flag_group(flags = [\"rcsD\"]),\n                    flag_group(\n                        flags = [\"%{output_execpath}\"],\n                        expand_if_available = \"output_execpath\",\n                    ),\n                ],\n            ),\n            flag_set(\n                actions = [ACTION_NAMES.cpp_link_static_library],\n                flag_groups = [\n                    flag_group(\n                        iterate_over = \"libraries_to_link\",\n                        flag_groups = [\n                            flag_group(\n                                flags = [\"%{libraries_to_link.name}\"],\n                                expand_if_equal = variable_with_value(\n                                    name = \"libraries_to_link.type\",\n                                    value = \"object_file\",\n                                ),\n                            ),\n                            flag_group(\n                                flags = [\"%{libraries_to_link.object_files}\"],\n                                iterate_over = \"libraries_to_link.object_files\",\n                                expand_if_equal = variable_with_value(\n                                    name = \"libraries_to_link.type\",\n                                    value = \"object_file_group\",\n                                ),\n                            ),\n                        ],\n                        expand_if_available = \"libraries_to_link\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    force_pic_flags_feature = feature(\n        name = \"force_pic_flags\",\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.cpp_link_executable,\n                    ACTION_NAMES.lto_index_for_executable,\n                ],\n                flag_groups = [\n                    flag_group(\n                        flags = [\"-pie\"],\n                        expand_if_available = \"force_pic\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    dependency_file_feature = feature(\n        name = \"dependency_file\",\n        enabled = True,\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.assemble,\n                    ACTION_NAMES.preprocess_assemble,\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                    ACTION_NAMES.cpp_module_compile,\n                    ACTION_NAMES.objc_compile,\n                    ACTION_NAMES.objcpp_compile,\n                    ACTION_NAMES.cpp_header_parsing,\n                    ACTION_NAMES.clif_match,\n                ],\n                flag_groups = [\n                    flag_group(\n                        flags = [\"-MD\", \"-MF\", \"%{dependency_file}\"],\n                        expand_if_available = \"dependency_file\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    dynamic_library_linker_tool_path = tool_paths\n    dynamic_library_linker_tool_feature = feature(\n        name = \"dynamic_library_linker_tool\",\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.cpp_link_dynamic_library,\n                    ACTION_NAMES.cpp_link_nodeps_dynamic_library,\n                    ACTION_NAMES.lto_index_for_dynamic_library,\n                    ACTION_NAMES.lto_index_for_nodeps_dynamic_library,\n                ],\n                flag_groups = [\n                    flag_group(\n                        flags = [\" + cppLinkDynamicLibraryToolPath + \"],\n                        expand_if_available = \"generate_interface_library\",\n                    ),\n                ],\n                with_features = [\n                    with_feature_set(\n                        features = [\"supports_interface_shared_libraries\"],\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    output_execpath_flags_feature = feature(\n        name = \"output_execpath_flags\",\n        flag_sets = [\n            flag_set(\n                actions = all_link_actions + lto_index_actions,\n                flag_groups = [\n                    flag_group(\n                        flags = [\"-o\", \"%{output_execpath}\"],\n                        expand_if_available = \"output_execpath\",\n                    ),\n                ],\n            ),\n        ],\n    )\n\n    # Note that we also set --coverage for c++-link-nodeps-dynamic-library. The\n    # generated code contains references to gcov symbols, and the dynamic linker\n    # can't resolve them unless the library is linked against gcov.\n    coverage_feature = feature(\n        name = \"coverage\",\n        provides = [\"profile\"],\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.preprocess_assemble,\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                    ACTION_NAMES.cpp_header_parsing,\n                    ACTION_NAMES.cpp_module_compile,\n                ],\n                flag_groups = ([\n                    flag_group(flags = ctx.attr.coverage_compile_flags),\n                ] if ctx.attr.coverage_compile_flags else []),\n            ),\n            flag_set(\n                actions = all_link_actions + lto_index_actions,\n                flag_groups = ([\n                    flag_group(flags = ctx.attr.coverage_link_flags),\n                ] if ctx.attr.coverage_link_flags else []),\n            ),\n        ],\n    )\n\n    thinlto_feature = feature(\n        name = \"thin_lto\",\n        flag_sets = [\n            flag_set(\n                actions = [\n                    ACTION_NAMES.c_compile,\n                    ACTION_NAMES.cpp_compile,\n                ] + all_link_actions + lto_index_actions,\n                flag_groups = [\n                    flag_group(flags = [\"-flto=thin\"]),\n                    flag_group(\n                        expand_if_available = \"lto_indexing_bitcode_file\",\n                        flags = [\n                            \"-Xclang\",\n                            \"-fthin-link-bitcode=%{lto_indexing_bitcode_file}\",\n                        ],\n                    ),\n                ],\n            ),\n            flag_set(\n                actions = [ACTION_NAMES.linkstamp_compile],\n                flag_groups = [flag_group(flags = [\"-DBUILD_LTO_TYPE=thin\"])],\n            ),\n            flag_set(\n                actions = lto_index_actions,\n                flag_groups = [\n                    flag_group(flags = [\n                        \"-flto=thin\",\n                        \"-Wl,-plugin-opt,thinlto-index-only%{thinlto_optional_params_file}\",\n                        \"-Wl,-plugin-opt,thinlto-emit-imports-files\",\n                        \"-Wl,-plugin-opt,thinlto-prefix-replace=%{thinlto_prefix_replace}\",\n                    ]),\n                    flag_group(\n                        expand_if_available = \"thinlto_object_suffix_replace\",\n                        flags = [\n                            \"-Wl,-plugin-opt,thinlto-object-suffix-replace=%{thinlto_object_suffix_replace}\",\n                        ],\n                    ),\n                    flag_group(\n                        expand_if_available = \"thinlto_merged_object_file\",\n                        flags = [\n                            \"-Wl,-plugin-opt,obj-path=%{thinlto_merged_object_file}\",\n                        ],\n                    ),\n                ],\n            ),\n            flag_set(\n                actions = [ACTION_NAMES.lto_backend],\n                flag_groups = [\n                    flag_group(flags = [\n                        \"-c\",\n                        \"-fthinlto-index=%{thinlto_index}\",\n                        \"-o\",\n                        \"%{thinlto_output_object_file}\",\n                        \"-x\",\n                        \"ir\",\n                        \"%{thinlto_input_bitcode_file}\",\n                    ]),\n                ],\n            ),\n        ],\n    )\n\n    # Export cross-compilation flags as environment variables for foreign_cc rules\n    # (e.g. rules_foreign_cc's configure_make). These env vars are picked up by\n    # cc_common.get_environment_variables() and exported globally in the build\n    # script prelude, making them available to both configure and make steps.\n    # This is needed because some foreign build systems (like liburing) override\n    # CFLAGS internally, losing the --target flag from the toolchain's compile_flags.\n    foreign_cc_env_feature = feature(\n        name = \"foreign_cc_env\",\n        enabled = bool(ctx.attr.foreign_cc_env),\n        env_sets = [\n            env_set(\n                actions = all_compile_actions + all_link_actions,\n                env_entries = [\n                    env_entry(key = key, value = value)\n                    for key, value in ctx.attr.foreign_cc_env.items()\n                ],\n            ),\n        ] if ctx.attr.foreign_cc_env else [],\n    )\n\n    is_linux = ctx.attr.target_libc != \"macosx\"\n\n    # TODO(#8303): Mac crosstool should also declare every feature.\n    if is_linux:\n        features = [\n            dependency_file_feature,\n            random_seed_feature,\n            pic_feature,\n            per_object_debug_info_feature,\n            preprocessor_defines_feature,\n            includes_feature,\n            include_paths_feature,\n            fdo_instrument_feature,\n            cs_fdo_instrument_feature,\n            cs_fdo_optimize_feature,\n            thinlto_feature,\n            fdo_prefetch_hints_feature,\n            autofdo_feature,\n            build_interface_libraries_feature,\n            dynamic_library_linker_tool_feature,\n            symbol_counts_feature,\n            shared_flag_feature,\n            linkstamps_feature,\n            output_execpath_flags_feature,\n            runtime_library_search_directories_feature,\n            library_search_directories_feature,\n            archiver_flags_feature,\n            force_pic_flags_feature,\n            fission_support_feature,\n            strip_debug_symbols_feature,\n            coverage_feature,\n            supports_pic_feature,\n        ] + (\n            [\n                supports_start_end_lib_feature,\n            ] if ctx.attr.supports_start_end_lib else []\n        ) + [\n            default_compile_flags_feature,\n            default_link_flags_feature,\n            libraries_to_link_feature,\n            user_link_flags_feature,\n            static_libgcc_feature,\n            fdo_optimize_feature,\n            supports_dynamic_linker_feature,\n            dbg_feature,\n            opt_feature,\n            user_compile_flags_feature,\n            sysroot_feature,\n            unfiltered_compile_flags_feature,\n            foreign_cc_env_feature,\n        ] + layering_check_features(ctx.attr.compiler)\n    else:\n        features = [\n            supports_pic_feature,\n        ] + (\n            [\n                supports_start_end_lib_feature,\n            ] if ctx.attr.supports_start_end_lib else []\n        ) + [\n            coverage_feature,\n            default_compile_flags_feature,\n            default_link_flags_feature,\n            fdo_optimize_feature,\n            supports_dynamic_linker_feature,\n            dbg_feature,\n            opt_feature,\n            user_compile_flags_feature,\n            sysroot_feature,\n            unfiltered_compile_flags_feature,\n            foreign_cc_env_feature,\n        ] + layering_check_features(ctx.attr.compiler)\n\n    return cc_common.create_cc_toolchain_config_info(\n        ctx = ctx,\n        features = features,\n        action_configs = action_configs,\n        cxx_builtin_include_directories = ctx.attr.cxx_builtin_include_directories,\n        toolchain_identifier = ctx.attr.toolchain_identifier,\n        host_system_name = ctx.attr.host_system_name,\n        target_system_name = ctx.attr.target_system_name,\n        target_cpu = ctx.attr.cpu,\n        target_libc = ctx.attr.target_libc,\n        compiler = ctx.attr.compiler,\n        abi_version = ctx.attr.abi_version,\n        abi_libc_version = ctx.attr.abi_libc_version,\n        tool_paths = tool_paths,\n        builtin_sysroot = ctx.attr.builtin_sysroot,\n    )\n\ncc_toolchain_config = rule(\n    implementation = _impl,\n    attrs = {\n        \"cpu\": attr.string(mandatory = True),\n        \"compiler\": attr.string(mandatory = True),\n        \"toolchain_identifier\": attr.string(mandatory = True),\n        \"host_system_name\": attr.string(mandatory = True),\n        \"target_system_name\": attr.string(mandatory = True),\n        \"target_libc\": attr.string(mandatory = True),\n        \"abi_version\": attr.string(mandatory = True),\n        \"abi_libc_version\": attr.string(mandatory = True),\n        \"cxx_builtin_include_directories\": attr.string_list(),\n        \"tool_paths\": attr.string_dict(),\n        \"compile_flags\": attr.string_list(),\n        \"dbg_compile_flags\": attr.string_list(),\n        \"opt_compile_flags\": attr.string_list(),\n        \"cxx_flags\": attr.string_list(),\n        \"link_flags\": attr.string_list(),\n        \"link_libs\": attr.string_list(),\n        \"opt_link_flags\": attr.string_list(),\n        \"unfiltered_compile_flags\": attr.string_list(),\n        \"coverage_compile_flags\": attr.string_list(),\n        \"coverage_link_flags\": attr.string_list(),\n        \"supports_start_end_lib\": attr.bool(),\n        \"builtin_sysroot\": attr.string(),\n        \"foreign_cc_env\": attr.string_dict(),\n    },\n    provides = [CcToolchainConfigInfo],\n)\n"
  },
  {
    "path": "cilium/BUILD",
    "content": "load(\n    \"@envoy//bazel:envoy_build_system.bzl\",\n    \"envoy_cc_library\",\n    \"envoy_package\",\n)\n\nlicenses([\"notice\"])  # Apache 2\n\nenvoy_package()\n\nenvoy_cc_library(\n    name = \"tls_wrapper_lib\",\n    srcs = [\"tls_wrapper.cc\"],\n    hdrs = [\"tls_wrapper.h\"],\n    repository = \"@envoy\",\n    deps = [\n        \"//cilium:filter_state_lib\",\n        \"//cilium:network_policy_lib\",\n        \"//cilium/api:tls_wrapper_cc_proto\",\n        \"@envoy//envoy/network:transport_socket_interface\",\n        \"@envoy//envoy/registry\",\n        \"@envoy//envoy/server:transport_socket_config_interface\",\n        \"@envoy//source/common/network:raw_buffer_socket_lib\",\n        \"@envoy//source/common/tls:server_context_config_lib\",\n        \"@envoy//source/common/tls:ssl_socket_lib\",\n        \"@envoy//source/server:transport_socket_config_lib\",\n        \"@envoy_api//envoy/extensions/transport_sockets/tls/v3:pkg_cc_proto\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"network_policy_lib\",\n    srcs = [\n        \"network_policy.cc\",\n        \"secret_watcher.cc\",\n        \"secret_watcher.h\",\n    ],\n    hdrs = [\n        \"network_policy.h\",\n        \"policy_id.h\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"//cilium:accesslog_lib\",\n        \"//cilium:conntrack_lib\",\n        \"//cilium:grpc_subscription_lib\",\n        \"//cilium:ipcache_lib\",\n        \"//cilium/api:npds_cc_proto\",\n        \"@envoy//envoy/singleton:manager_interface\",\n        \"@envoy//source/common/common:logger_lib\",\n        \"@envoy//source/common/config:opaque_resource_decoder_lib\",\n        \"@envoy//source/common/init:manager_lib\",\n        \"@envoy//source/common/init:target_lib\",\n        \"@envoy//source/common/init:watcher_lib\",\n        \"@envoy//source/common/local_info:local_info_lib\",\n        \"@envoy//source/common/network:address_lib\",\n        \"@envoy//source/common/router:config_utility_lib\",\n        \"@envoy//source/common/stats:timespan_lib\",\n        \"@envoy//source/common/tls:context_config_lib\",\n        \"@envoy//source/common/tls:server_context_config_lib\",\n        \"@envoy//source/server:transport_socket_config_lib\",\n        \"@envoy_api//envoy/type/matcher/v3:pkg_cc_proto\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"socket_option_lib\",\n    srcs = [\n        \"socket_option_cilium_mark.cc\",\n        \"socket_option_ip_transparent.cc\",\n        \"socket_option_source_address.cc\",\n    ],\n    hdrs = [\n        \"socket_option_cilium_mark.h\",\n        \"socket_option_ip_transparent.h\",\n        \"socket_option_source_address.h\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"privileged_service_client_lib\",\n        \"//cilium:filter_state_lib\",\n        \"@envoy//source/common/common:hex_lib\",\n        \"@envoy//source/common/network:address_lib\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"filter_state_lib\",\n    srcs = [\n        \"filter_state_cilium_destination.cc\",\n        \"filter_state_cilium_policy.cc\",\n    ],\n    hdrs = [\n        \"filter_state_cilium_destination.h\",\n        \"filter_state_cilium_policy.h\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"//cilium:network_policy_lib\",\n        \"@envoy//source/common/common:logger_lib\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"grpc_subscription_lib\",\n    srcs = [\n        \"grpc_subscription.cc\",\n    ],\n    hdrs = [\n        \"grpc_subscription.h\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"@com_google_absl//absl/strings\",\n        \"@envoy//envoy/network:connection_interface\",\n        \"@envoy//source/common/config:type_to_endpoint_lib\",\n        \"@envoy//source/extensions/config_subscription/grpc:grpc_subscription_lib\",\n        \"@envoy_api//envoy/annotations:pkg_cc_proto\",\n        \"@envoy_api//envoy/config/core/v3:pkg_cc_proto\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"l7policy_lib\",\n    srcs = [\n        \"l7policy.cc\",\n    ],\n    hdrs = [\n        \"l7policy.h\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"//cilium:accesslog_lib\",\n        \"//cilium:filter_state_lib\",\n        \"//cilium:network_policy_lib\",\n        \"//cilium/api:l7policy_cc_proto\",\n        \"@envoy//envoy/config:subscription_interface\",\n        \"@envoy//source/common/http:utility_lib\",\n        \"@envoy//source/common/network:upstream_server_name_lib\",\n        \"@envoy//source/common/network:upstream_subject_alt_names_lib\",\n        \"@envoy//source/extensions/filters/http/common:factory_base_lib\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"websocket_lib\",\n    srcs = [\n        \"websocket.cc\",\n        \"websocket_codec.cc\",\n        \"websocket_config.cc\",\n    ],\n    hdrs = [\n        \"websocket.h\",\n        \"websocket_codec.h\",\n        \"websocket_config.h\",\n        \"websocket_protocol.h\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"//cilium:accesslog_lib\",\n        \"//cilium:filter_state_lib\",\n        \"//cilium/api:websocket_cc_proto\",\n        \"@envoy//bazel/external/http_parser\",\n        \"@envoy//envoy/common/crypto:crypto_interface\",\n        \"@envoy//source/common/common:base64_lib\",\n        \"@envoy//source/common/common:hex_lib\",\n        \"@envoy//source/common/crypto:utility_lib\",\n        \"@envoy//source/common/http:codes_lib\",\n        \"@envoy//source/common/http:header_utility_lib\",\n        \"@envoy//source/common/http:request_id_extension_lib\",\n        \"@envoy//source/common/http:utility_lib\",\n        \"@envoy//source/common/network:filter_manager_lib\",\n        \"@envoy//source/common/stream_info:bool_accessor_lib\",\n        \"@envoy//source/common/tcp_proxy\",\n        \"@envoy_api//envoy/extensions/request_id/uuid/v3:pkg_cc_proto\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"accesslog_lib\",\n    srcs = [\n        \"accesslog.cc\",\n    ],\n    hdrs = [\n        \"accesslog.h\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"//cilium:uds_client_lib\",\n        \"//cilium/api:accesslog_proto_cc_proto\",\n        \"@envoy//envoy/http:header_map_interface\",\n        \"@envoy//envoy/network:connection_interface\",\n        \"@envoy//envoy/router:router_interface\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"uds_client_lib\",\n    srcs = [\n        \"uds_client.cc\",\n    ],\n    hdrs = [\n        \"uds_client.h\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"@envoy//source/common/common:minimal_logger_lib\",\n        \"@envoy//source/common/common:thread_lib\",\n        \"@envoy//source/common/common:token_bucket_impl_lib\",\n        \"@envoy//source/common/common:utility_lib\",\n        \"@envoy//source/common/network:address_lib\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"bpf_lib\",\n    srcs = [\n        \"bpf.cc\",\n    ],\n    hdrs = [\n        \"bpf.h\",\n        \"//:linux/bpf.h\",\n        \"//:linux/bpf_common.h\",\n        \"//:linux/type_mapper.h\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"privileged_service_client_lib\",\n        \"@envoy//source/common/common:logger_lib\",\n        \"@envoy//source/common/common:utility_lib\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"ipcache_lib\",\n    srcs = [\n        \"ipcache.cc\",\n    ],\n    hdrs = [\n        \"ipcache.h\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"//cilium:bpf_lib\",\n        \"@envoy//envoy/singleton:manager_interface\",\n        \"@envoy//source/common/common:assert_lib\",\n        \"@envoy//source/common/common:logger_lib\",\n        \"@envoy//source/common/network:address_lib\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"conntrack_lib\",\n    srcs = [\n        \"conntrack.cc\",\n    ],\n    hdrs = [\n        \"conntrack.h\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"//cilium:bpf_lib\",\n        \"@envoy//envoy/network:connection_interface\",\n        \"@envoy//envoy/network:listen_socket_interface\",\n        \"@envoy//envoy/singleton:manager_interface\",\n        \"@envoy//source/common/common:assert_lib\",\n        \"@envoy//source/common/common:logger_lib\",\n        \"@envoy//source/common/network:address_lib\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"proxylib_lib\",\n    srcs = [\n        \"proxylib.cc\",\n    ],\n    hdrs = [\n        \"proxylib.h\",\n        \"//proxylib:libcilium.h\",\n        \"//proxylib:types.h\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"@envoy//envoy/network:connection_interface\",\n        \"@envoy//envoy/singleton:manager_interface\",\n        \"@envoy//source/common/buffer:buffer_lib\",\n        \"@envoy//source/common/common:assert_lib\",\n        \"@envoy//source/common/common:logger_lib\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"network_filter_lib\",\n    srcs = [\n        \"network_filter.cc\",\n    ],\n    hdrs = [\n        \"network_filter.h\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"//cilium:conntrack_lib\",\n        \"//cilium:filter_state_lib\",\n        \"//cilium:network_policy_lib\",\n        \"//cilium:proxylib_lib\",\n        \"//cilium/api:network_filter_cc_proto\",\n        \"@envoy//envoy/buffer:buffer_interface\",\n        \"@envoy//envoy/network:connection_interface\",\n        \"@envoy//envoy/network:filter_interface\",\n        \"@envoy//envoy/registry\",\n        \"@envoy//envoy/server:filter_config_interface\",\n        \"@envoy//source/common/common:assert_lib\",\n        \"@envoy//source/common/common:logger_lib\",\n        \"@envoy//source/common/network:address_lib\",\n        \"@envoy//source/common/network:upstream_server_name_lib\",\n        \"@envoy//source/common/network:upstream_subject_alt_names_lib\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"bpf_metadata_lib\",\n    srcs = [\n        \"bpf_metadata.cc\",\n        \"host_map.cc\",\n    ],\n    hdrs = [\n        \"bpf_metadata.h\",\n        \"host_map.h\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"//cilium:conntrack_lib\",\n        \"//cilium:filter_state_lib\",\n        \"//cilium:grpc_subscription_lib\",\n        \"//cilium:ipcache_lib\",\n        \"//cilium:network_policy_lib\",\n        \"//cilium:socket_option_lib\",\n        \"//cilium/api:bpf_metadata_cc_proto\",\n        \"//cilium/api:nphds_cc_proto\",\n        \"@com_google_absl//absl/strings\",\n        \"@envoy//envoy/buffer:buffer_interface\",\n        \"@envoy//envoy/config:subscription_interface\",\n        \"@envoy//envoy/network:connection_interface\",\n        \"@envoy//envoy/network:filter_interface\",\n        \"@envoy//envoy/registry\",\n        \"@envoy//envoy/server:filter_config_interface\",\n        \"@envoy//envoy/singleton:manager_interface\",\n        \"@envoy//envoy/stats:stats_interface\",\n        \"@envoy//envoy/stats:stats_macros\",\n        \"@envoy//source/common/common:assert_lib\",\n        \"@envoy//source/common/common:logger_lib\",\n        \"@envoy//source/common/network:address_lib\",\n        \"@envoy//source/common/router:config_utility_lib\",\n        \"@envoy_api//envoy/config/core/v3:pkg_cc_proto\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"privileged_service_client_lib\",\n    srcs = [\"privileged_service_client.cc\"],\n    hdrs = [\"privileged_service_client.h\"],\n    repository = \"@envoy\",\n    deps = [\n        \"//starter:privileged_service_protocol\",\n        \"@envoy//envoy/api:os_sys_calls_interface\",\n        \"@envoy//source/common/common:thread_lib\",\n        \"@envoy//source/common/singleton:threadsafe_singleton\",\n    ],\n)\n\nenvoy_cc_library(\n    name = \"health_check_sink_lib\",\n    srcs = [\"health_check_sink.cc\"],\n    hdrs = [\"health_check_sink.h\"],\n    repository = \"@envoy\",\n    deps = [\n        \"//cilium:uds_client_lib\",\n        \"//cilium/api:health_check_sink_cc_proto\",\n        \"@envoy//envoy/registry\",\n        \"@envoy//envoy/upstream:health_check_event_sink_interface\",\n    ],\n)\n"
  },
  {
    "path": "cilium/accesslog.cc",
    "content": "#include \"accesslog.h\"\n\n#include <chrono>\n#include <cstdint>\n#include <map>\n#include <memory>\n#include <string>\n\n#include \"envoy/common/time.h\"\n#include \"envoy/http/header_map.h\"\n#include \"envoy/http/protocol.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/stream_info/stream_info.h\"\n\n#include \"source/common/common/lock_guard.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/thread.h\"\n#include \"source/common/protobuf/utility.h\"\n\n#include \"absl/strings/numbers.h\"\n#include \"absl/strings/string_view.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"cilium/uds_client.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nThread::MutexBasicLockable AccessLog::logs_mutex;\nstd::map<std::string, std::weak_ptr<AccessLog>> AccessLog::logs;\n\nAccessLogSharedPtr AccessLog::open(const std::string& path, TimeSource& time_source) {\n  Thread::LockGuard guard(logs_mutex);\n  auto it = logs.find(path);\n  if (it != logs.end()) {\n    auto log = it->second.lock();\n    if (log) {\n      return log;\n    }\n    // expired, remove\n    logs.erase(path);\n  }\n  // Not found, open and store as a weak_ptr\n  AccessLogSharedPtr log;\n  log.reset(new AccessLog(path, time_source));\n  logs.emplace(path, log);\n  return log;\n}\n\nAccessLog::~AccessLog() {\n  // last reference going out of scope\n  Thread::LockGuard guard1(logs_mutex);\n  logs.erase(path_);\n}\n\nvoid AccessLog::log(AccessLog::Entry& log_entry, ::cilium::EntryType entry_type) {\n  ::cilium::LogEntry& entry = log_entry.entry_;\n  entry.set_entry_type(entry_type);\n\n  if (entry_type != ::cilium::EntryType::Response) {\n    if (log_entry.request_logged_) {\n      ENVOY_LOG_MISC(warn, \"cilium.AccessLog: Request is logged twice\");\n    }\n    log_entry.request_logged_ = true;\n  }\n\n  // encode protobuf\n  std::string msg;\n  entry.SerializeToString(&msg);\n\n  UDSClient::log(msg);\n}\n\n#define CONST_STRING_VIEW(NAME, STR) const absl::string_view NAME = {STR, sizeof(STR) - 1}\n\nCONST_STRING_VIEW(pathSV, \":path\");\nCONST_STRING_VIEW(methodSV, \":method\");\nCONST_STRING_VIEW(authoritySV, \":authority\");\nCONST_STRING_VIEW(xForwardedProtoSV, \"x-forwarded-proto\");\nCONST_STRING_VIEW(xRequestIdSV, \"x-request-id\");\nCONST_STRING_VIEW(statusSV, \":status\");\n\nvoid AccessLog::Entry::initFromConnection(\n    const std::string& policy_name, uint16_t proxy_id, bool ingress, uint32_t source_identity,\n    const Network::Address::InstanceConstSharedPtr& source_address, uint32_t destination_identity,\n    const Network::Address::InstanceConstSharedPtr& destination_address, TimeSource* time_source) {\n  request_logged_ = false;\n\n  entry_.set_policy_name(policy_name);\n  entry_.set_proxy_id(proxy_id);\n  entry_.set_is_ingress(ingress);\n  entry_.set_source_security_id(source_identity);\n  entry_.set_destination_security_id(destination_identity);\n\n  if (source_address != nullptr) {\n    entry_.set_source_address(source_address->asString());\n  }\n\n  if (destination_address != nullptr) {\n    entry_.set_destination_address(destination_address->asString());\n  }\n\n  if (time_source) {\n    auto time = time_source->systemTime();\n    entry_.set_timestamp(\n        std::chrono::duration_cast<std::chrono::nanoseconds>(time.time_since_epoch()).count());\n  }\n}\n\nbool AccessLog::Entry::updateFromMetadata(const std::string& l7proto,\n                                          const Protobuf::Struct& metadata) {\n  bool changed = false;\n\n  auto l7entry = entry_.mutable_generic_l7();\n  if (l7entry->proto() != l7proto) {\n    l7entry->set_proto(l7proto);\n    changed = true;\n  }\n  // remove non-existing fields, update existing values\n  auto* old_fields = l7entry->mutable_fields();\n  const auto& new_fields = metadata.fields();\n  for (const auto& pair : *old_fields) {\n    const auto it = new_fields.find(pair.first);\n    if (it == new_fields.cend()) {\n      old_fields->erase(pair.first);\n      changed = true;\n    } else {\n      auto new_value = MessageUtil::getJsonStringFromMessage(it->second, false, true);\n      if (new_value.ok() && new_value.value() != pair.second) {\n        (*old_fields)[pair.first] = new_value.value();\n        changed = true;\n      }\n    }\n  }\n  // Insert new values\n  for (const auto& pair : new_fields) {\n    auto it = old_fields->find(pair.first);\n    if (it == old_fields->cend()) {\n      (*old_fields)[pair.first] =\n          MessageUtil::getJsonStringFromMessageOrError(pair.second, false, true);\n      changed = true;\n    }\n  }\n  return changed;\n}\n\nvoid AccessLog::Entry::initFromRequest(const std::string& policy_name, uint16_t proxy_id,\n                                       bool ingress, uint32_t source_identity,\n                                       const Network::Address::InstanceConstSharedPtr& src_address,\n                                       uint32_t destination_identity,\n                                       const Network::Address::InstanceConstSharedPtr& dst_address,\n                                       const StreamInfo::StreamInfo& info,\n                                       const Http::RequestHeaderMap& headers) {\n  initFromConnection(policy_name, proxy_id, ingress, source_identity, src_address,\n                     destination_identity, dst_address, nullptr);\n\n  auto time = info.startTime();\n  entry_.set_timestamp(\n      std::chrono::duration_cast<std::chrono::nanoseconds>(time.time_since_epoch()).count());\n\n  ::cilium::HttpProtocol proto;\n  switch (info.protocol() ? info.protocol().value() : Http::Protocol::Http11) {\n  case Http::Protocol::Http10:\n    proto = ::cilium::HttpProtocol::HTTP10;\n    break;\n  case Http::Protocol::Http11:\n  default: // Just to make compiler happy\n    proto = ::cilium::HttpProtocol::HTTP11;\n    break;\n  case Http::Protocol::Http2:\n    proto = ::cilium::HttpProtocol::HTTP2;\n    break;\n  }\n  ::cilium::HttpLogEntry* http_entry = entry_.mutable_http();\n  http_entry->set_http_protocol(proto);\n\n  updateFromRequest(destination_identity, dst_address, headers);\n}\n\nvoid AccessLog::Entry::updateFromRequest(\n    uint32_t destination_identity, const Network::Address::InstanceConstSharedPtr& dst_address,\n    const Http::RequestHeaderMap& headers) {\n  // Destination may have changed\n  if (destination_identity != 0) {\n    entry_.set_destination_security_id(destination_identity);\n  }\n  if (dst_address != nullptr) {\n    entry_.set_destination_address(dst_address->asString());\n  }\n\n  ::cilium::HttpLogEntry* http_entry = entry_.mutable_http();\n  // Remove headers logged for the request, as they may have changed\n  http_entry->clear_headers();\n\n  // request headers\n  headers.iterate([http_entry](const Http::HeaderEntry& header) -> Http::HeaderMap::Iterate {\n    const absl::string_view key = header.key().getStringView();\n    const absl::string_view value = header.value().getStringView();\n\n    if (key == pathSV) {\n      http_entry->set_path(value.data(), value.size());\n    } else if (key == methodSV) {\n      http_entry->set_method(value.data(), value.size());\n    } else if (key == authoritySV) {\n      http_entry->set_host(value.data(), value.size());\n    } else if (key == xForwardedProtoSV) {\n      // Envoy sets the \":scheme\" header later in the router filter\n      // according to the upstream protocol (TLS vs. clear), but we want to\n      // get the downstream scheme, which is provided in\n      // \"x-forwarded-proto\".\n      http_entry->set_scheme(value.data(), value.size());\n    } else {\n      ::cilium::KeyValue* kv = http_entry->add_headers();\n      kv->set_key(key.data(), key.size());\n      kv->set_value(value.data(), value.size());\n    }\n    return Http::HeaderMap::Iterate::Continue;\n  });\n}\n\nvoid AccessLog::Entry::updateFromResponse(const Http::ResponseHeaderMap& headers,\n                                          TimeSource& time_source) {\n  auto time = time_source.systemTime();\n  entry_.set_timestamp(\n      std::chrono::duration_cast<std::chrono::nanoseconds>(time.time_since_epoch()).count());\n\n  ::cilium::HttpLogEntry* http_entry = entry_.mutable_http();\n\n  // Find existing x-request-id before clearing headers\n  std::string request_id;\n  for (int i = 0; i < http_entry->headers_size(); i++) {\n    if (http_entry->headers(i).key() == xRequestIdSV) {\n      request_id = http_entry->headers(i).value();\n      break;\n    }\n  }\n\n  // Remove headers logged for the request\n  http_entry->clear_headers();\n\n  // Add back the x-request-id, if any\n  if (!request_id.empty()) {\n    ::cilium::KeyValue* kv = http_entry->add_headers();\n    kv->set_key(xRequestIdSV.data(), xRequestIdSV.size());\n    kv->set_value(request_id);\n  }\n\n  // response headers\n  headers.iterate(\n      [http_entry, &request_id](const Http::HeaderEntry& header) -> Http::HeaderMap::Iterate {\n        const absl::string_view key = header.key().getStringView();\n        const absl::string_view value = header.value().getStringView();\n\n        if (key == statusSV) {\n          uint64_t status;\n          if (absl::SimpleAtoi(value, &status)) {\n            http_entry->set_status(status);\n          }\n        } else if (key == xRequestIdSV && value == request_id) {\n          // We already have the request id, do not repeat it if the value is still the same\n        } else {\n          ::cilium::KeyValue* kv = http_entry->add_headers();\n          kv->set_key(key.data(), key.size());\n          kv->set_value(value.data(), value.size());\n        }\n        return Http::HeaderMap::Iterate::Continue;\n      });\n}\n\nvoid AccessLog::Entry::addRejected(absl::string_view key, absl::string_view value) {\n  for (const auto& entry : entry_.http().rejected_headers()) {\n    if (entry.key() == key && entry.value() == value) {\n      return;\n    }\n  }\n  ::cilium::KeyValue* kv = entry_.mutable_http()->add_rejected_headers();\n  kv->set_key(key.data(), key.size());\n  kv->set_value(value.data(), value.size());\n}\n\nvoid AccessLog::Entry::addMissing(absl::string_view key, absl::string_view value) {\n  for (const auto& entry : entry_.http().missing_headers()) {\n    if (entry.key() == key && entry.value() == value) {\n      return;\n    }\n  }\n  ::cilium::KeyValue* kv = entry_.mutable_http()->add_missing_headers();\n  kv->set_key(key.data(), key.size());\n  kv->set_value(value.data(), value.size());\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/accesslog.h",
    "content": "#pragma once\n\n#include <cstdint>\n#include <map>\n#include <memory>\n#include <string>\n\n#include \"envoy/common/time.h\"\n#include \"envoy/http/header_map.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/stream_info/filter_state.h\"\n#include \"envoy/stream_info/stream_info.h\"\n\n#include \"source/common/common/thread.h\"\n#include \"source/common/protobuf/protobuf.h\" // IWYU pragma: keep\n\n#include \"absl/base/thread_annotations.h\"\n#include \"absl/strings/string_view.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"cilium/uds_client.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nconstexpr absl::string_view AccessLogKey = \"cilium.accesslog.entry\";\n\nclass AccessLog : public UDSClient {\npublic:\n  static std::shared_ptr<AccessLog> open(const std::string& path, TimeSource& time_source);\n  ~AccessLog();\n\n  // wrapper for protobuf\n  class Entry : public StreamInfo::FilterState::Object {\n  public:\n    void initFromRequest(const std::string& policy_name, uint16_t proxy_id, bool ingress,\n                         uint32_t source_identity,\n                         const Network::Address::InstanceConstSharedPtr& source_address,\n                         uint32_t destination_identity,\n                         const Network::Address::InstanceConstSharedPtr& destination_address,\n                         const StreamInfo::StreamInfo&, const Http::RequestHeaderMap&);\n    void updateFromRequest(uint32_t destination_identity,\n                           const Network::Address::InstanceConstSharedPtr& destination_address,\n                           const Http::RequestHeaderMap&);\n    void updateFromResponse(const Http::ResponseHeaderMap&, TimeSource&);\n\n    void initFromConnection(const std::string& policy_name, uint16_t proxy_id, bool ingress,\n                            uint32_t source_identity,\n                            const Network::Address::InstanceConstSharedPtr& source_address,\n                            uint32_t destination_identity,\n                            const Network::Address::InstanceConstSharedPtr& destination_address,\n                            TimeSource* time_source);\n    bool updateFromMetadata(const std::string& l7proto, const Protobuf::Struct& metadata);\n    void addRejected(absl::string_view key, absl::string_view value);\n    void addMissing(absl::string_view key, absl::string_view value);\n\n    ::cilium::LogEntry entry_;\n    bool request_logged_ = false;\n  };\n\n  void log(Entry& entry, ::cilium::EntryType);\n\nprivate:\n  explicit AccessLog(const std::string& path, TimeSource& time_source)\n      : UDSClient(path, time_source), path_(path) {}\n\n  static Thread::MutexBasicLockable logs_mutex;\n  static std::map<std::string, std::weak_ptr<AccessLog>> logs ABSL_GUARDED_BY(logs_mutex);\n\n  const std::string path_;\n};\nusing AccessLogSharedPtr = std::shared_ptr<AccessLog>;\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/api/BUILD",
    "content": "load(\n    \"@envoy//bazel:envoy_build_system.bzl\",\n    \"envoy_package\",\n    \"envoy_proto_library\",\n)\nload(\n    \"@envoy_api//bazel:api_build_system.bzl\",\n    \"api_cc_py_proto_library\",\n)\n\nlicenses([\"notice\"])  # Apache 2\n\nenvoy_package()\n\napi_cc_py_proto_library(\n    name = \"health_check_sink\",\n    srcs = [\"health_check_sink.proto\"],\n)\n\napi_cc_py_proto_library(\n    name = \"bpf_metadata\",\n    srcs = [\"bpf_metadata.proto\"],\n    deps = [\n        \"@envoy_api//envoy/config/core/v3:pkg\",\n    ],\n)\n\napi_cc_py_proto_library(\n    name = \"network_filter\",\n    srcs = [\"network_filter.proto\"],\n)\n\napi_cc_py_proto_library(\n    name = \"l7policy\",\n    srcs = [\"l7policy.proto\"],\n)\n\napi_cc_py_proto_library(\n    name = \"websocket\",\n    srcs = [\"websocket.proto\"],\n)\n\napi_cc_py_proto_library(\n    name = \"tls_wrapper\",\n    srcs = [\"tls_wrapper.proto\"],\n)\n\nenvoy_proto_library(\n    name = \"accesslog_proto\",\n    srcs = [\"accesslog.proto\"],\n)\n\napi_cc_py_proto_library(\n    name = \"npds\",\n    srcs = [\"npds.proto\"],\n    deps = [\n        \"@envoy_api//envoy/annotations:pkg\",\n        \"@envoy_api//envoy/config/core/v3:pkg\",\n        \"@envoy_api//envoy/config/route/v3:pkg\",\n        \"@envoy_api//envoy/service/discovery/v3:pkg\",\n        \"@envoy_api//envoy/type/matcher/v3:pkg\",\n    ],\n)\n\napi_cc_py_proto_library(\n    name = \"nphds\",\n    srcs = [\"nphds.proto\"],\n    deps = [\n        \"@envoy_api//envoy/annotations:pkg\",\n        \"@envoy_api//envoy/service/discovery/v3:pkg\",\n    ],\n)\n"
  },
  {
    "path": "cilium/api/accesslog.proto",
    "content": "syntax = \"proto3\";\n\noption go_package = \"github.com/cilium/proxy/go/cilium/api;cilium\";\n\npackage cilium;\n\nmessage KeyValue {\n  string key = 1;\n  string value = 2;\n}\n\nenum HttpProtocol {\n  HTTP10 = 0;\n  HTTP11 = 1;\n  HTTP2 = 2;\n}\n\nenum EntryType {\n  Request = 0;\n  Response = 1;\n  Denied = 2;\n}\n\nmessage HttpLogEntry {\n  HttpProtocol http_protocol = 1;\n\n  // Request info that is also retained for the response\n  string scheme = 2; // Envoy \"x-forwarded-proto\", e.g., \"http\", \"https\"\n  string host = 3;   // Envoy \":authority\" header\n  string path = 4;   // Envoy \":path\" header\n  string method = 5; // Envoy \":method\" header\n\n  // Request or response headers not included above\n  repeated KeyValue headers = 6;\n\n  // Response info\n  uint32 status = 7; // Envoy \":status\" header, zero for request\n\n  // missing_headers includes both headers that were added to the\n  // request, and headers that were merely logged as missing\n  repeated KeyValue missing_headers = 8;\n\n  // rejected_headers includes headers that were flagged as unallowed,\n  // which may have been removed, or merely logged and the request still\n  // allowed, or the request may have been dropped due to them.\n  repeated KeyValue rejected_headers = 9;\n}\n\nmessage KafkaLogEntry {\n  // correlation_id is a user-supplied integer value that will be passed\n  // back with the response\n  int32 correlation_id = 1;\n\n  // error_code is the Kafka error code being returned\n  // Ref. https://kafka.apache.org/protocol#protocol_error_codes\n  int32 error_code = 2;\n\n  // api_version of the Kafka api used\n  // Ref. https://kafka.apache.org/protocol#protocol_compatibility\n  int32 api_version = 3;\n\n  // api_key for Kafka message\n  // Reference: https://kafka.apache.org/protocol#protocol_api_keys\n  int32 api_key = 4;\n\n  // Topics of the request\n  // Optional, as not all messages have topics (ex. LeaveGroup, Heartbeat)\n  repeated string topics = 5;\n}\n\nmessage L7LogEntry {\n  string proto = 1;\n  map<string, string> fields = 2;\n}\n\nmessage LogEntry {\n  // The time that Cilium filter captured this log entry,\n  // in, nanoseconds since 1/1/1970.\n  uint64 timestamp = 1;\n\n  // 'true' if the request was received by an ingress listener,\n  // 'false' if received by an egress listener\n  bool is_ingress = 15;\n\n  EntryType entry_type = 3;\n\n  // Cilium network policy resource name\n  string policy_name = 4;\n\n  // proxy_id identifies the listener this message relates to,\n  // as configured via the bpf_metadata listener filter\n  uint32 proxy_id = 17;\n\n  // Cilium rule reference\n  string cilium_rule_ref = 5;\n\n  // Cilium security ID of the source and destination\n  uint32 source_security_id = 6;\n  uint32 destination_security_id = 16;\n\n  // These fields record the original source and destination addresses,\n  // stored in ipv4:port or [ipv6]:port format.\n  string source_address = 7;\n  string destination_address = 8;\n\n  oneof l7 {\n    HttpLogEntry http = 100;\n    KafkaLogEntry kafka = 101;\n    L7LogEntry generic_l7 = 102;\n  }\n}\n"
  },
  {
    "path": "cilium/api/bpf_metadata.proto",
    "content": "syntax = \"proto3\";\n\noption go_package = \"github.com/cilium/proxy/go/cilium/api;cilium\";\n\npackage cilium;\n\nimport \"envoy/config/core/v3/config_source.proto\";\nimport \"google/protobuf/duration.proto\";\nimport \"validate/validate.proto\";\n\nmessage BpfMetadata {\n  // File system root for bpf. Bpf will not be used if left empty.\n  string bpf_root = 1;\n\n  // 'true' if the filter is on ingress listener, 'false' for egress listener.\n  bool is_ingress = 2;\n\n  // Use of the original source address requires kernel datapath support which\n  // may or may not be available. 'true' if original source address\n  // should be used. Original source address use may still be\n  // skipped in scenarios where it is knows to not work.\n  bool use_original_source_address = 3;\n\n  // True if the listener is used for an L7 LB. In this case policy enforcement is done on the\n  // destination selected by the listener rather than on the original destination address. For\n  // local sources the source endpoint ID is set in socket mark instead of source security ID if\n  // 'use_original_source_address' is also true, so that the local source's egress policy is\n  // enforced on the bpf datapath.\n  // Only valid for egress.\n  bool is_l7lb = 4;\n\n  // Source address to be used whenever the original source address is not used.\n  // Either ipv4_source_address or ipv6_source_address depending on the address\n  // family of the destination address. If left empty, and no Envoy Cluster Bind\n  // Config is provided, the source address will be picked by the local IP stack.\n  string ipv4_source_address = 5;\n  string ipv6_source_address = 6;\n\n  // True if policy should be enforced on l7 LB used. The policy bound to the configured\n  // ipv[46]_source_addresses, which must be explicitly set, applies. Ingress policy is\n  // enforced on the security identity of the original (e.g., external) source. Egress\n  // policy is enforced on the security identity of the backend selected by the load balancer.\n  //\n  // Deprecation note: This option will be forced 'true' and deprecated when Cilium 1.15 is\n  // the oldest supported release.\n  bool enforce_policy_on_l7lb = 7;\n\n  // proxy_id is passed to access log messages and allows relating access log messages to\n  // listeners.\n  uint32 proxy_id = 8 [(validate.rules).uint32.lte = 65535];\n\n  // policy_update_warning_limit is the time in milliseconds after which a warning is logged if\n  // network policy update took longer\n  // Deprecated, has no effect.\n  google.protobuf.Duration policy_update_warning_limit = 9;\n\n  // l7lb_policy_name is the name of the L7LB policy that is enforced on the listener.\n  // This is optional field.\n  string l7lb_policy_name = 10;\n\n  // original_source_so_linger_time specifies the number of seconds to linger on socket close.\n  // Only used if use_original_source_address is also true, and the original source address\n  // is used in the upstream connections. Value 0 causes connections to be reset on close (TCP RST).\n  // Values above 0 cause the Envoy worker thread to block up to the given number of seconds while\n  // the connection is closing. If the timeout is reached the connection is being reset (TCP RST).\n  // This option may be needed for allowing new connections to successfully bind to the original\n  // source address and port.\n  optional uint32 original_source_so_linger_time = 11;\n\n  // Name of the pin file for opening bpf ipcache in \"<bpf_root>/tc/globals/\". If empty, defaults to\n  // \"cilium_ipcache\" for backwards compatibility.\n  // Only used if 'bpf_root' is non-empty and 'use_nphds' is 'false'.\n  string ipcache_name = 12;\n\n  // Use Network Policy Hosts xDS (NPHDS) protocol to sync IP/ID mappings.\n  // Network Policy xDS (NPDS) will only be used if this is 'true' or 'bpf_root' is non-empty.\n  // If 'use_nphds' is 'false' ipcache named by 'ipcache_name' is used instead.\n  bool use_nphds = 13;\n\n  // Duration to reuse ipcache results until the entry is looked up from bpf ipcache again.\n  // Defaults to 3 milliseconds.\n  google.protobuf.Duration cache_entry_ttl = 14;\n\n  // Cache is garbage collected at interval 10 times the ttl (default 30 ms).\n  google.protobuf.Duration cache_gc_interval = 15;\n\n  // Configuration for the source of NPDS updates. Currently this field is not supported.\n  envoy.config.core.v3.ConfigSource npds_config = 16;\n}\n"
  },
  {
    "path": "cilium/api/health_check_sink.proto",
    "content": "syntax = \"proto3\";\n\noption go_package = \"github.com/cilium/proxy/go/cilium/api;cilium\";\n\npackage cilium;\n\nimport \"validate/validate.proto\";\n\n// Health check event pipe sink.\n// The health check event will be streamed as binary protobufs.\nmessage HealthCheckEventPipeSink {\n  // Unix domain socket path where to connect to send health check events to.\n  string path = 1 [(validate.rules).string = {min_len: 1}];\n}\n"
  },
  {
    "path": "cilium/api/l7policy.proto",
    "content": "syntax = \"proto3\";\n\noption go_package = \"github.com/cilium/proxy/go/cilium/api;cilium\";\n\npackage cilium;\n\nmessage L7Policy {\n  // Path to the unix domain socket for the cilium access log.\n  string access_log_path = 1;\n\n  // HTTP response body message for 403 status code.\n  // If empty, \"Access denied\" will be used.\n  string denied_403_body = 3;\n}\n"
  },
  {
    "path": "cilium/api/network_filter.proto",
    "content": "syntax = \"proto3\";\n\noption go_package = \"github.com/cilium/proxy/go/cilium/api;cilium\";\n\npackage cilium;\n\nmessage NetworkFilter {\n  // Path to the proxylib to be opened\n  string proxylib = 1;\n\n  // Transparent set of parameters provided for proxylib initialization\n  map<string, string> proxylib_params = 2;\n\n  // Path to the unix domain socket for the cilium access log.\n  string access_log_path = 5;\n}\n"
  },
  {
    "path": "cilium/api/npds.proto",
    "content": "syntax = \"proto3\";\n\noption go_package = \"github.com/cilium/proxy/go/cilium/api;cilium\";\n\npackage cilium;\n\nimport \"envoy/config/core/v3/address.proto\";\nimport \"envoy/config/route/v3/route_components.proto\";\nimport \"envoy/service/discovery/v3/discovery.proto\";\nimport \"envoy/type/matcher/v3/metadata.proto\";\n\nimport \"google/api/annotations.proto\";\n\nimport \"envoy/annotations/resource.proto\";\nimport \"validate/validate.proto\";\n\n// [#protodoc-title: Network policy management and NPDS]\n\n// Each resource name is a network policy identifier.\nservice NetworkPolicyDiscoveryService {\n  option (envoy.annotations.resource).type = \"cilium.NetworkPolicy\";\n\n  rpc StreamNetworkPolicies(stream envoy.service.discovery.v3.DiscoveryRequest)\n      returns (stream envoy.service.discovery.v3.DiscoveryResponse) {\n  }\n\n  rpc FetchNetworkPolicies(envoy.service.discovery.v3.DiscoveryRequest)\n      returns (envoy.service.discovery.v3.DiscoveryResponse) {\n    option (google.api.http) = {\n      post: \"/v3/discovery:network_policies\"\n      body: \"*\"\n    };\n  }\n}\n\n// A network policy that is enforced by a filter on the network flows to/from\n// associated hosts.\nmessage NetworkPolicy {\n  // IPs of the endpoint to which this policy applies.\n  // Required.\n  repeated string endpoint_ips = 1 [(validate.rules).repeated = {\n    min_items: 1,\n    max_items: 2,\n    items {string {min_len: 1}}\n  }];\n\n  // The endpoint identifier associated with the network policy.\n  // Required.\n  uint64 endpoint_id = 2;\n\n  // The part of the policy to be enforced at ingress by the filter, as a set\n  // of per-port network policies, one per destination L4 port.\n  // Every PortNetworkPolicy element in this set has a unique port / protocol\n  // combination.\n  // Optional. If empty, all flows in this direction are denied.\n  repeated PortNetworkPolicy ingress_per_port_policies = 3;\n\n  // The part of the policy to be enforced at egress by the filter, as a set\n  // of per-port network policies, one per destination L4 port.\n  // Every PortNetworkPolicy element in this set has a unique port / protocol\n  // combination.\n  // Optional. If empty, all flows in this direction are denied.\n  repeated PortNetworkPolicy egress_per_port_policies = 4;\n\n  reserved 5;\n}\n\n// A network policy to whitelist flows to a specific destination L4 port,\n// as a conjunction of predicates on L3/L4/L7 flows.\n// If all the predicates of a policy match a flow, the flow is whitelisted.\nmessage PortNetworkPolicy {\n  // The flows' destination L4 port number, as an unsigned 16-bit integer.\n  // If 0, all destination L4 port numbers are matched by this predicate.\n  uint32 port = 1 [(validate.rules).uint32.lte = 65535];\n\n  // The end of the destination port range, if non-zero.\n  uint32 end_port = 4 [(validate.rules).uint32.lte = 65535];\n\n  // The flows' L4 transport protocol.\n  // Required.\n  envoy.config.core.v3.SocketAddress.Protocol protocol = 2;\n\n  // The network policy rules to be enforced on the flows to the port.\n  // Optional. A flow is matched by this predicate if either the set of\n  // rules is empty or any of the rules matches it.\n  repeated PortNetworkPolicyRule rules = 3;\n}\n\nmessage TLSContext {\n  // CA certificates. If present, the counterparty must provide a valid\n  // certificate.\n  // Deprecated, use 'validation_context_sds_secret' instead.\n  string trusted_ca = 1;\n\n  // Certificate chain.\n  // Deprecated, use 'tls_sds_secret' instead.\n  string certificate_chain = 2;\n\n  // Private key\n  // Deprecated, use 'tls_sds_secret' instead.\n  string private_key = 3;\n\n  // Server Name Indicator. For downstream this helps choose the certificate to\n  // present to the client. For upstream this will be used as the SNI on the\n  // client connection.\n  repeated string server_names = 4;\n\n  // Name of an SDS secret for CA certificates. Secret is fetched from the same gRPC source as\n  // this Network Policy. If present, the counterparty must provide a valid certificate.\n  // May not be used at the same time with 'trusted_ca'.\n  string validation_context_sds_secret = 5;\n\n  // Name of an SDS secret for both TLS private key and certificate chain. Secret is fetched\n  // from the same gRPC source as this Network Policy.\n  // May not be used at the same time with 'certificate_chain' or 'private_key'.\n  string tls_sds_secret = 6;\n\n  // Set of ALPN protocols, e.g., [ “h2\", \"http/1.1” ] when both HTTP 1.1 and HTTP 2 are supported.\n  repeated string alpn_protocols = 7;\n}\n\n// A network policy rule, as a conjunction of predicates on L3/L7 flows.\n// If all the predicates of a rule match a flow, the flow is matched by the\n// rule.\nmessage PortNetworkPolicyRule {\n  // Precedence level for this rule. Rules with **higher** numeric values take\n  // precedence, even over deny rules of lower precedence level.\n  // The lowest precedence (zero) is used when not specified.\n  uint32 precedence = 10;\n\n  // Optional verdict, mutually exclusive. If missing then the verdict is an allow.\n  oneof verdict {\n    // Precedence after which policy evaluation should be continued at for the selected\n    // remotes_policies.\n    uint32 pass_precedence = 1;\n\n    // Traffic on this port is denied for all `remote_policies` if true\n    bool deny = 8;\n  }\n\n  // ProxyID is non-zero if the rule was an allow rule with an explicit listener reference.\n  // The given value corresponds to the 'proxy_id' value in the BpfMetadata listener filter\n  // configuration.\n  // This rule should be ignored if not executing in the referred listener.\n  uint32 proxy_id = 9 [(validate.rules).uint32.lte = 65535];\n\n  // Optional name for the rule, can be used in logging and error messages.\n  string name = 5;\n\n  // The set of numeric remote security IDs explicitly allowed or denied.\n  // A flow is matched by this predicate if the identifier of the policy\n  // applied on the flow's remote host is contained in this set.\n  // Optional. If not specified, any remote host is matched by this predicate.\n  repeated uint32 remote_policies = 7;\n\n  // Optional downstream TLS context. If present, the incoming connection must\n  // be a TLS connection.\n  TLSContext downstream_tls_context = 3;\n\n  // Optional upstream TLS context. If present, the outgoing connection will use\n  // TLS.\n  TLSContext upstream_tls_context = 4;\n\n  // Optional allowed SNIs in TLS handshake.\n  // The validation pattern here is synced with the corresponding k8s type in cilium/cilium.\n  // The validation pattern consists of one or more dot-delimited subdomains, where each\n  // subdomain can be:\n  // - '*',\n  // - '**', or\n  // - a pattern of one or more valid DNS name characters, optionally including non-consecutive\n  //   wildcard specifiers ('*')\n  //\n  // The pattern consists of repeating parts:\n  // <DNSCHARS> = \"[-a-zA-Z0-9_]\"\n  // <SUBDOMAIN> = \"[*]?<DNSCHARS>+([*]<DNSCHARS>+)*[*]?\"\n  // <SUBPATTERN> = \"([*]{1,2}|<SUBDOMAIN>)\"\n  // PATTERN = \"^(<SUBPATTERN>[.])*<SUBPATTERN>$\"\n  repeated string server_names = 6 [(validate.rules).repeated = {\n    items: {\n      string: {\n        pattern: \"^(([*]{1,2}|[*]?[-a-zA-Z0-9_]+([*][-a-zA-Z0-9_]+)*[*]?)[.])*\"\n                 \"([*]{1,2}|[*]?[-a-zA-Z0-9_]+([*][-a-zA-Z0-9_]+)*[*]?)$\"\n      }\n    }\n  }];\n\n  // Optional L7 protocol parser name. This is only used if the parser is not\n  // one of the well knows ones. If specified, the l7 parser having this name\n  // needs to be built in to libcilium.so.\n  string l7_proto = 2;\n\n  // Optional. If not specified, any L7 request is matched by this predicate.\n  // All rules on any given port must have the same type of L7 rules!\n  oneof l7 {\n    // The set of HTTP network policy rules.\n    // An HTTP request is matched by this predicate if any of its rules matches\n    // the request.\n    HttpNetworkPolicyRules http_rules = 100;\n\n    // The set of Kafka network policy rules.\n    // A Kafka request is matched by this predicate if any of its rules matches\n    // the request.\n    KafkaNetworkPolicyRules kafka_rules = 101;\n\n    // Set of Generic policy rules used when 'l7_proto' is defined.\n    // Only to be used for l7 protocols for which a specific oneof\n    // is not defined\n    L7NetworkPolicyRules l7_rules = 102;\n  }\n}\n\n// A set of network policy rules that match HTTP requests.\nmessage HttpNetworkPolicyRules {\n  // The set of HTTP network policy rules.\n  // An HTTP request is matched if any of its rules matches the request.\n  // Required and may not be empty.\n  repeated HttpNetworkPolicyRule http_rules = 1 [(validate.rules).repeated .min_items = 1];\n}\n\nmessage HeaderMatch {\n  string name = 1 [(validate.rules).string.min_len = 1];\n  string value = 2; // empty for presence match. For secret data use 'value_sds_secret' instead.\n\n  // Action specifies what to do when the header matches.\n  enum MatchAction {\n    CONTINUE_ON_MATCH = 0; // Keep checking other matches (default)\n    FAIL_ON_MATCH = 1;     // Drop the request if no other rule matches\n    DELETE_ON_MATCH = 2;   // Remove the whole matching header\n  }\n  MatchAction match_action = 3;\n\n  enum MismatchAction {\n    FAIL_ON_MISMATCH = 0;     // Drop the request if no other rule matches (default)\n    CONTINUE_ON_MISMATCH = 1; // Keep checking other matches, log the mismatch\n    ADD_ON_MISMATCH = 2;      // Add 'value' to the multivalued header\n    DELETE_ON_MISMATCH = 3;   // Remove the whole mismatching header\n    REPLACE_ON_MISMATCH = 4;  // Replace the whole mismatching header with 'value'\n  }\n  MismatchAction mismatch_action = 4;\n\n  // Generic secret name for fetching value via SDS. Secret is fetched from the same gRPC source as\n  // this Network Policy.\n  string value_sds_secret = 5;\n}\n\n// An HTTP network policy rule, as a conjunction of predicates on HTTP requests.\n// If all the predicates of a rule match an HTTP request, the request is\n// allowed. Otherwise, it is denied.\nmessage HttpNetworkPolicyRule {\n  // A set of matchers on the HTTP request's headers' names and values.\n  // If all the matchers in this set match an HTTP request, the request is\n  // allowed by this rule. Otherwise, it is denied.\n  //\n  // Some special header names are:\n  //\n  // * *:uri*: The HTTP request's URI.\n  // * *:method*: The HTTP request's method.\n  // * *:authority*: Also maps to the HTTP 1.1 *Host* header.\n  //\n  // Optional. If empty, matches any HTTP request.\n  repeated envoy.config.route.v3.HeaderMatcher headers = 1;\n\n  // header_matches is a set of HTTP header name and value pairs that\n  // will be matched against the request headers, if all the other match\n  // requirements in 'headers' are met. Each HeaderAction determines what to do\n  // when there is a match or mismatch.\n  //\n  // Optional.\n  repeated HeaderMatch header_matches = 2;\n}\n\n// A set of network policy rules that match Kafka requests.\nmessage KafkaNetworkPolicyRules {\n  // The set of Kafka network policy rules.\n  // A Kafka request is matched if any of its rules matches the request.\n  // Required and may not be empty.\n  repeated KafkaNetworkPolicyRule kafka_rules = 1 [(validate.rules).repeated .min_items = 1];\n}\n\n// A Kafka network policy rule, as a conjunction of predicates on Kafka\n// requests. If all the predicates of a rule match a Kafka request, the request\n// is allowed. Otherwise, it is denied.\nmessage KafkaNetworkPolicyRule {\n  // The Kafka request's API version.\n  // If < 0, all Kafka requests are matched by this predicate.\n  int32 api_version = 1;\n\n  // Set of allowed API keys in the Kafka request.\n  // If none, all Kafka requests are matched by this predicate.\n  repeated int32 api_keys = 2;\n\n  // The Kafka request's client ID.\n  // Optional. If not specified, all Kafka requests are matched by this\n  // predicate. If specified, this predicates only matches requests that contain\n  // this client ID, and never matches requests that don't contain any client\n  // ID.\n  string client_id = 3 [(validate.rules).string.pattern = \"^[a-zA-Z0-9._-]*$\"];\n\n  // The Kafka request's topic.\n  // Optional. If not specified, this rule will not consider the Kafka request's\n  // topics. If specified, this predicates only matches requests that contain\n  // this topic, and never matches requests that don't contain any topic.\n  // However, messages that can not contain a topic will also me matched.\n  string topic = 4 [(validate.rules).string = {max_len: 255, pattern: \"^[a-zA-Z0-9._-]*$\"}];\n}\n\n// A set of network policy rules that match generic L7 requests.\nmessage L7NetworkPolicyRules {\n  // The set of allowing l7 policy rules.\n  // A request is allowed if any of these rules matches the request,\n  // and the request does not match any of the deny rules.\n  // Optional. If missing or empty then all requests are allowed, unless\n  // denied by a deny rule.\n  repeated L7NetworkPolicyRule l7_allow_rules = 1;\n\n  // The set of denying l7 policy rules.\n  // A request is denied if any of these rules matches the request.\n  // A request that is not denied may be allowed by 'l7_allow_rules'.\n  // Optional.\n  repeated L7NetworkPolicyRule l7_deny_rules = 2;\n}\n\n// A generic L7 policy rule, as a conjunction of predicates on l7 requests.\n// If all the predicates of a rule match a request, the request is allowed.\n// Otherwise, it is denied.\nmessage L7NetworkPolicyRule {\n  // Optional rule name, can be used in logging and error messages.\n  string name = 3;\n\n  // Generic rule for Go extensions.\n  // Optional. If empty, matches any request. Not allowed if 'metadata_rule' is\n  // present.\n  map<string, string> rule = 1;\n\n  // Generic rule for Envoy metadata enforcement. All matchers must match for\n  // the rule to allow the request/connection. Optional. If empty, matches any\n  // request. Not allowed if 'rule' is present.\n  repeated envoy.type.matcher.v3.MetadataMatcher metadata_rule = 2;\n}\n\n// Cilium's network policy manager fills this message with all currently known network policies.\nmessage NetworkPoliciesConfigDump {\n\n  // The loaded networkpolicy configs.\n  repeated NetworkPolicy networkpolicies = 1;\n}\n"
  },
  {
    "path": "cilium/api/nphds.proto",
    "content": "syntax = \"proto3\";\n\noption go_package = \"github.com/cilium/proxy/go/cilium/api;cilium\";\n\npackage cilium;\n\nimport \"envoy/service/discovery/v3/discovery.proto\";\n\nimport \"google/api/annotations.proto\";\n\nimport \"envoy/annotations/resource.proto\";\nimport \"validate/validate.proto\";\n\n// Each resource name is a network policy identifier in decimal, e.g. `123`.\nservice NetworkPolicyHostsDiscoveryService {\n  option (envoy.annotations.resource).type = \"cilium.NetworkPolicyHosts\";\n\n  rpc StreamNetworkPolicyHosts(stream envoy.service.discovery.v3.DiscoveryRequest)\n      returns (stream envoy.service.discovery.v3.DiscoveryResponse) {\n  }\n\n  rpc FetchNetworkPolicyHosts(envoy.service.discovery.v3.DiscoveryRequest)\n      returns (envoy.service.discovery.v3.DiscoveryResponse) {\n    option (google.api.http) = {\n      post: \"/v2/discovery:network_policy_hosts\"\n      body: \"*\"\n    };\n  }\n}\n\n// The mapping of a network policy identifier to the IP addresses of all the\n// hosts on which the network policy is enforced.\n// A host may be associated only with one network policy.\nmessage NetworkPolicyHosts {\n  // The unique identifier of the network policy enforced on the hosts.\n  uint64 policy = 1;\n\n  // The set of IP addresses of the hosts on which the network policy is\n  // enforced. Optional. May be empty.\n  repeated string host_addresses = 2 [\n    (validate.rules).repeated .unique = true,\n    (validate.rules).repeated .items.string.min_len = 1\n  ];\n}\n"
  },
  {
    "path": "cilium/api/tls_wrapper.proto",
    "content": "syntax = \"proto3\";\n\noption go_package = \"github.com/cilium/proxy/go/cilium/api;cilium\";\n\npackage cilium;\n\n// Empty configuration messages for Cilium TLS wrapper to make Envoy happy\nmessage UpstreamTlsWrapperContext {\n}\nmessage DownstreamTlsWrapperContext {\n}\n"
  },
  {
    "path": "cilium/api/websocket.proto",
    "content": "syntax = \"proto3\";\n\noption go_package = \"github.com/cilium/proxy/go/cilium/api;cilium\";\n\npackage cilium;\n\nimport \"google/protobuf/duration.proto\";\nimport \"validate/validate.proto\";\n\nmessage WebSocketClient {\n  // Path to the unix domain socket for the cilium access log, if any.\n  string access_log_path = 1;\n\n  // Host header value, required.\n  string host = 2 [(validate.rules).string.min_len = 2];\n\n  // Path value. Defaults to \"/\".\n  string path = 3;\n\n  // sec-websocket-key value to use, defaults to a random key.\n  string key = 4;\n\n  // Websocket version, defaults to \"13\".\n  string version = 5;\n\n  // Origin header, if any.\n  string origin = 6;\n\n  // Websocket handshake timeout, default is 5 seconds.\n  google.protobuf.Duration handshake_timeout = 7;\n\n  // ping interval, default is 0 (disabled).\n  // Connection is assumed dead if response is not received before the next ping is to be sent.\n  google.protobuf.Duration ping_interval = 8;\n\n  // ping only on when idle on both directions.\n  // ping_interval must be non-zero when this is true.\n  bool ping_when_idle = 9;\n}\n\nmessage WebSocketServer {\n  // Path to the unix domain socket for the cilium access log, if any.\n  string access_log_path = 1;\n\n  // Expected host header value, if any.\n  string host = 2;\n\n  // Expected path value, if any.\n  string path = 3;\n\n  // sec-websocket-key value to expect, if any.\n  string key = 4;\n\n  // Websocket version, ignored if omitted.\n  string version = 5;\n\n  // Origin header, if any. Origin header is not allowed if omitted.\n  string origin = 6;\n\n  // Websocket handshake timeout, default is 5 seconds.\n  google.protobuf.Duration handshake_timeout = 7;\n\n  // ping interval, default is 0 (disabled).\n  // Connection is assumed dead if response is not received before the next ping is to be sent.\n  google.protobuf.Duration ping_interval = 8;\n\n  // ping only on when idle on both directions.\n  // ping_interval must be non-zero when this is true.\n  bool ping_when_idle = 9;\n}\n"
  },
  {
    "path": "cilium/bpf.cc",
    "content": "#include \"cilium/bpf.h\"\n\n#include <unistd.h>\n\n#include <cerrno>\n#include <cstdint>\n#include <fstream>\n#include <sstream>\n#include <string>\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/utility.h\"\n\n#include \"absl/synchronization/mutex.h\"\n#include \"cilium/privileged_service_client.h\"\n#include \"linux/bpf.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nenum {\n  BpfKeyMaxLen = 64,\n};\n\nBpf::Bpf(uint32_t map_type, uint32_t key_size, uint32_t min_value_size, uint32_t max_value_size)\n    : fd_(-1), real_value_size_(0), map_type_(map_type), key_size_(key_size),\n      min_value_size_(min_value_size),\n      max_value_size_(max_value_size ? max_value_size : min_value_size) {}\n\nBpf::~Bpf() { close(); }\n\nvoid Bpf::close() {\n  absl::WriterMutexLock lock(mutex_);\n  closeLocked();\n}\n\nvoid Bpf::closeLocked() {\n  if (fd_ >= 0) {\n    ::close(fd_);\n  }\n  fd_ = -1;\n  real_value_size_ = 0;\n}\n\nbool Bpf::open(const std::string& path) {\n  absl::WriterMutexLock lock(mutex_);\n  return openLocked(path);\n}\n\nbool Bpf::openLocked(const std::string& path) {\n  bool log_on_error = ENVOY_LOG_CHECK_LEVEL(trace);\n\n  // close old fd if any\n  closeLocked();\n\n  // store the path for later\n  if (path != path_) {\n    path_ = path;\n  }\n\n  auto& cilium_calls = PrivilegedService::Singleton::get();\n  auto ret = cilium_calls.bpfOpen(path.c_str());\n  fd_ = ret.return_value_;\n  if (fd_ >= 0) {\n    // Open fdinfo to check the map type and key and value size.\n    std::string line;\n    std::string bpf_file_path(\"/proc/\" + std::to_string(getpid()) + \"/fdinfo/\" +\n                              std::to_string(fd_));\n    std::ifstream bpf_file(bpf_file_path);\n    if (bpf_file.is_open()) {\n      uint32_t map_type = UINT32_MAX, key_size = UINT32_MAX, value_size = UINT32_MAX;\n\n      while (std::getline(bpf_file, line)) {\n        std::istringstream iss(line);\n        std::string tag;\n\n        if (std::getline(iss, tag, ':')) {\n          unsigned int value;\n\n          if (iss >> value) {\n            if (tag == \"map_type\") {\n              map_type = value;\n            } else if (tag == \"key_size\") {\n              key_size = value;\n            } else if (tag == \"value_size\") {\n              value_size = value;\n            }\n          }\n        }\n      }\n      bpf_file.close();\n\n      if ((map_type == map_type_ ||\n           (map_type == BPF_MAP_TYPE_LRU_HASH && map_type_ == BPF_MAP_TYPE_HASH)) &&\n          key_size == key_size_ && min_value_size_ <= value_size && value_size <= max_value_size_) {\n        // keep the actual value size.\n        real_value_size_ = value_size;\n        return true;\n      }\n      if (log_on_error) {\n        if (map_type != map_type_) {\n          ENVOY_LOG(warn, \"cilium.bpf_metadata: map type mismatch on {}: got {}, wanted {}\", path,\n                    map_type, map_type_);\n        } else if (key_size != key_size_) {\n          ENVOY_LOG(warn,\n                    \"cilium.bpf_metadata: map key size mismatch on {}: got {}, \"\n                    \"wanted {}\",\n                    path, key_size, key_size_);\n        } else {\n          ENVOY_LOG(warn,\n                    \"cilium.bpf_metadata: map value size mismatch on {}: got \"\n                    \"{}, wanted {}-{}\",\n                    path, value_size, min_value_size_, max_value_size_);\n        }\n      }\n    } else if (log_on_error) {\n      ENVOY_LOG(warn, \"cilium.bpf_metadata: map {} could not open bpf file {}\", path,\n                bpf_file_path);\n    }\n    closeLocked();\n  } else if (ret.errno_ == ENOENT && log_on_error) {\n    ENVOY_LOG(debug, \"cilium.bpf_metadata: bpf syscall for map {} failed: {}\", path,\n              Envoy::errorDetails(ret.errno_));\n  } else if (log_on_error) {\n    ENVOY_LOG(warn, \"cilium.bpf_metadata: bpf syscall for map {} failed: {}\", path,\n              Envoy::errorDetails(ret.errno_));\n  }\n\n  errno = ret.errno_;\n\n  return false;\n}\n\n// value must point to space of at least 'max_value_size_' as passed in to the constructor.\nbool Bpf::lookup(const void* key, void* value) {\n  while (true) {\n    {\n      // Happy parh allowing multiple readers to lookup concurrently\n      absl::ReaderMutexLock lock(mutex_);\n      if (fd_ >= 0) {\n        auto& cilium_calls = PrivilegedService::Singleton::get();\n        auto result = cilium_calls.bpfLookup(fd_, key, key_size_, value, real_value_size_);\n\n        if (result.return_value_ != 0) {\n          errno = result.errno_;\n          return false;\n        }\n        return true;\n      }\n    }\n\n    {\n      // Try reopen if open failed previously\n      absl::WriterMutexLock lock(mutex_);\n      if (fd_ < 0 && !openLocked(path_)) {\n        return false;\n      }\n    }\n    // Since the lock is released in between, it is possible for the fd to get closed before we get\n    // the reader lock again, hence the loop.\n  }\n  return false;\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/bpf.h",
    "content": "#pragma once\n\n#include <cstdint>\n#include <string>\n\n#include \"source/common/common/logger.h\"\n\n#include \"absl/base/thread_annotations.h\"\n#include \"absl/synchronization/mutex.h\"\n\nunion bpf_attr;\n\nnamespace Envoy {\nnamespace Cilium {\n\n/**\n * Bpf system call interface.\n */\nclass Bpf : public Logger::Loggable<Logger::Id::filter> {\npublic:\n  /**\n   * Create a bpf map object without actually creating or opening a bpf map yet.\n   * @param map_type the type of a bpf map to be opened or created, e.g.,\n   * BPF_MAP_TYPE_HASH\n   * @param key_size the size of the bpf map entry lookup key.\n   * @param min_value_size the minimum acceptable size of the bpf map entry value.\n   * @param max_value_size the maximum size of the bpf map entry value the caller is buffering for.\n   *        Defaults to same as min_value_size.\n   */\n  Bpf(uint32_t map_type, uint32_t key_size, uint32_t min_value_size, uint32_t max_value_size = 0);\n  virtual ~Bpf();\n\n  /**\n   * Close the bpf file descriptor, if open.\n   */\n  void close() ABSL_LOCKS_EXCLUDED(mutex_);\n\n  /**\n   * Open an existing bpf map. The bpf map must have the map type and key and\n   * value sizes that match with the ones given to the constructor.\n   * @param path the file system path to the pinned bpf map.\n   * @returns boolean for success of the operation.\n   */\n  bool open(const std::string& path) ABSL_LOCKS_EXCLUDED(mutex_);\n\n  /**\n   * Lookup an entry from the bpf map identified with the key, storing the found\n   * value, if any.\n   * @param key pointer to the key identifying the entry to be found.\n   * @param value pointer at which the value is copied to if the entry is found.\n   *        Enough space must be provided for 'max_value_size_' bytes.\n   *        The caller should only examine the first 'min_value_size_' bytes.\n   * @returns boolean for success of the operation.\n   */\n  bool lookup(const void* key, void* value) ABSL_LOCKS_EXCLUDED(mutex_);\n\nprivate:\n  bool openLocked(const std::string& path) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mutex_);\n  void closeLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mutex_);\n\nprotected:\n  absl::Mutex mutex_;\n  std::string path_ ABSL_GUARDED_BY(mutex_);\n  int fd_ ABSL_GUARDED_BY(mutex_);\n  uint32_t real_value_size_ ABSL_GUARDED_BY(mutex_);\n\npublic:\n  const uint32_t map_type_;\n  const uint32_t key_size_;\n  const uint32_t min_value_size_;\n  const uint32_t max_value_size_;\n};\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/bpf_metadata.cc",
    "content": "#include \"cilium/bpf_metadata.h\"\n\n#include <fmt/format.h>\n#include <netinet/in.h>\n#include <netinet/tcp.h>\n\n#include <chrono>\n#include <cstddef>\n#include <cstdint>\n#include <memory>\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/api/io_error.h\"\n#include \"envoy/common/exception.h\"\n#include \"envoy/config/core/v3/config_source.pb.h\"\n#include \"envoy/config/core/v3/socket_option.pb.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/filter.h\"\n#include \"envoy/network/listen_socket.h\"\n#include \"envoy/network/listener_filter_buffer.h\"\n#include \"envoy/network/socket.h\"\n#include \"envoy/registry/registry.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/server/filter_config.h\"\n#include \"envoy/singleton/manager.h\"\n#include \"envoy/stream_info/filter_state.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/utility.h\"\n#include \"source/common/network/address_impl.h\"\n#include \"source/common/network/socket_option_factory.h\"\n#include \"source/common/network/socket_option_impl.h\"\n#include \"source/common/network/utility.h\"\n#include \"source/common/protobuf/protobuf.h\"\n#include \"source/common/protobuf/utility.h\"\n\n#include \"absl/strings/string_view.h\"\n#include \"absl/types/optional.h\"\n#include \"cilium/api/bpf_metadata.pb.h\"\n#include \"cilium/api/bpf_metadata.pb.validate.h\" // IWYU pragma: keep\n#include \"cilium/conntrack.h\"\n#include \"cilium/filter_state_cilium_destination.h\"\n#include \"cilium/filter_state_cilium_policy.h\"\n#include \"cilium/host_map.h\"\n#include \"cilium/ipcache.h\"\n#include \"cilium/network_policy.h\"\n#include \"cilium/policy_id.h\"\n#include \"cilium/socket_option_cilium_mark.h\"\n#include \"cilium/socket_option_ip_transparent.h\"\n\nnamespace Envoy {\nnamespace Server {\nnamespace Configuration {\n\n/**\n * Config registration for the bpf metadata filter. @see\n * NamedNetworkFilterConfigFactory.\n */\nclass BpfMetadataConfigFactory : public NamedListenerFilterConfigFactory {\npublic:\n  // NamedListenerFilterConfigFactory\n  Network::ListenerFilterFactoryCb createListenerFilterFactoryFromProto(\n      const Protobuf::Message& proto_config,\n      const Network::ListenerFilterMatcherSharedPtr& listener_filter_matcher,\n      Configuration::ListenerFactoryContext& context) override {\n\n    auto config = std::make_shared<Cilium::BpfMetadata::Config>(\n        MessageUtil::downcastAndValidate<const ::cilium::BpfMetadata&>(\n            proto_config, context.messageValidationVisitor()),\n        context);\n\n    // Set the SO_MARK (Cilium Mark), IP_TRANSPARENT & SO_REUSEADDR for the listen socket.\n    std::shared_ptr<Envoy::Network::Socket::Options> options =\n        std::make_shared<Envoy::Network::Socket::Options>();\n\n    // For the listener socket, the BPF datapath is only interested\n    // in whether the proxy is ingress, egress, or if there is no proxy at all.\n    uint32_t mark = (config->is_ingress_) ? 0x0A00 : 0x0B00;\n    options->push_back(std::make_shared<Cilium::CiliumMarkSocketOption>(mark));\n\n    options->push_back(std::make_shared<Cilium::IpTransparentSocketOption>());\n\n    options->push_back(std::make_shared<Envoy::Network::SocketOptionImpl>(\n        envoy::config::core::v3::SocketOption::STATE_PREBIND,\n        Envoy::Network::SocketOptionName(SOL_SOCKET, SO_REUSEADDR, \"SO_REUSEADDR\"), 1));\n\n    // SO_REUSEPORT for the listener socket is set via Envoy config\n\n    context.addListenSocketOptions(options);\n\n    return [listener_filter_matcher,\n            config](Network::ListenerFilterManager& filter_manager) mutable -> void {\n      filter_manager.addAcceptFilter(listener_filter_matcher,\n                                     std::make_unique<Cilium::BpfMetadata::Instance>(config));\n    };\n  }\n\n  ProtobufTypes::MessagePtr createEmptyConfigProto() override {\n    return std::make_unique<::cilium::BpfMetadata>();\n  }\n\n  std::string name() const override { return \"cilium.bpf_metadata\"; }\n};\n\n/**\n * Static registration for the bpf metadata filter. @see RegisterFactory.\n * Versioning started from 1.1.0 for Cilium version 1.12.0.\n */\nREGISTER_FACTORY(BpfMetadataConfigFactory,\n                 NamedListenerFilterConfigFactory){FACTORY_VERSION(1, 1, 0, {{}})};\n\n/**\n * Config registration for the UDP bpf metadata filter. @see\n * NamedUdpListenerFilterConfigFactory.\n */\nclass UdpBpfMetadataConfigFactory : public NamedUdpListenerFilterConfigFactory {\npublic:\n  // NamedUdpListenerFilterConfigFactory\n  Network::UdpListenerFilterFactoryCb\n  createFilterFactoryFromProto(const Protobuf::Message& proto_config,\n                               Configuration::ListenerFactoryContext& context) override {\n\n    auto config = std::make_shared<Cilium::BpfMetadata::Config>(\n        MessageUtil::downcastAndValidate<const ::cilium::BpfMetadata&>(\n            proto_config, context.messageValidationVisitor()),\n        context);\n\n    // Set the SO_MARK (Cilium Mark), IP_TRANSPARENT & SO_REUSEADDR for the listen socket.\n    std::shared_ptr<Envoy::Network::Socket::Options> options =\n        std::make_shared<Envoy::Network::Socket::Options>();\n\n    // For the listener socket, the BPF datapath is only interested\n    // in whether the proxy is ingress, egress, or if there is no proxy at all.\n    uint32_t mark = (config->is_ingress_) ? 0x0A00 : 0x0B00;\n    options->push_back(std::make_shared<Cilium::CiliumMarkSocketOption>(mark));\n\n    options->push_back(std::make_shared<Cilium::IpTransparentSocketOption>());\n\n    options->push_back(std::make_shared<Envoy::Network::SocketOptionImpl>(\n        envoy::config::core::v3::SocketOption::STATE_PREBIND,\n        Envoy::Network::SocketOptionName(SOL_SOCKET, SO_REUSEADDR, \"SO_REUSEADDR\"), 1));\n\n    // SO_REUSEPORT for the listener socket is set via Envoy config\n\n    context.addListenSocketOptions(options);\n\n    return [config](Network::UdpListenerFilterManager& udp_listener_filter_manager,\n                    Network::UdpReadFilterCallbacks& callbacks) mutable -> void {\n      udp_listener_filter_manager.addReadFilter(\n          std::make_unique<Cilium::BpfMetadata::UdpInstance>(config, callbacks));\n    };\n  }\n\n  ProtobufTypes::MessagePtr createEmptyConfigProto() override {\n    return std::make_unique<::cilium::BpfMetadata>();\n  }\n\n  std::string name() const override { return \"cilium.bpf_metadata\"; }\n};\n\n/**\n * Static registration for the UDP bpf metadata filter. @see RegisterFactory.\n */\nREGISTER_FACTORY(UdpBpfMetadataConfigFactory,\n                 NamedUdpListenerFilterConfigFactory){FACTORY_VERSION(1, 1, 0, {{}})};\n\n} // namespace Configuration\n} // namespace Server\n\nnamespace Cilium {\n\n// Hard-coded Cilium gRPC cluster\n// Note: No rate-limit settings are used, consider if needed.\nconst envoy::config::core::v3::ConfigSource getCiliumXDSAPIConfig() {\n  auto config_source = envoy::config::core::v3::ConfigSource();\n  /* config_source.initial_fetch_timeout is set to 50 millliseconds.\n   * This applies only to SDS Secrets for now, as for NPDS and NPHDS we explicitly set the timeout\n   * as 0 (no timeout).\n   */\n  config_source.mutable_initial_fetch_timeout()->set_nanos(50000000);\n  config_source.set_resource_api_version(envoy::config::core::v3::ApiVersion::V3);\n  auto api_config_source = config_source.mutable_api_config_source();\n  api_config_source->set_set_node_on_first_message_only(true);\n  api_config_source->set_api_type(envoy::config::core::v3::ApiConfigSource::GRPC);\n  api_config_source->set_transport_api_version(envoy::config::core::v3::ApiVersion::V3);\n  api_config_source->add_grpc_services()->mutable_envoy_grpc()->set_cluster_name(\"xds-grpc-cilium\");\n  return config_source;\n}\n\nconst envoy::config::core::v3::ConfigSource CILIUM_XDS_API_CONFIG = getCiliumXDSAPIConfig();\n\nnamespace BpfMetadata {\n\n// Singleton registration via macro defined in envoy/singleton/manager.h\nSINGLETON_MANAGER_REGISTRATION(cilium_bpf_conntrack);\nSINGLETON_MANAGER_REGISTRATION(cilium_host_map);\nSINGLETON_MANAGER_REGISTRATION(cilium_network_policy);\n\nnamespace {\n\nstd::shared_ptr<const Cilium::PolicyHostMap>\ncreateHostMap(Server::Configuration::ListenerFactoryContext& context,\n              envoy::config::core::v3::ConfigSource& npds_config) {\n  return context.serverFactoryContext().singletonManager().getTyped<const Cilium::PolicyHostMap>(\n      SINGLETON_MANAGER_REGISTERED_NAME(cilium_host_map), [&context, npds_config] {\n        auto map = std::make_shared<Cilium::PolicyHostMap>(context.serverFactoryContext());\n        map->startSubscription(context.serverFactoryContext(), npds_config);\n        return map;\n      });\n}\n\nstd::shared_ptr<const Cilium::NetworkPolicyMap>\ncreatePolicyMap(Server::Configuration::FactoryContext& context,\n                envoy::config::core::v3::ConfigSource& npds_config) {\n  return context.serverFactoryContext().singletonManager().getTyped<const Cilium::NetworkPolicyMap>(\n      SINGLETON_MANAGER_REGISTERED_NAME(cilium_network_policy), [&context, npds_config] {\n        return std::make_shared<Cilium::NetworkPolicyMap>(context, npds_config, true);\n      });\n}\n\n} // namespace\n\nConfig::Config(const ::cilium::BpfMetadata& config,\n               Server::Configuration::ListenerFactoryContext& context)\n    : so_linger_(config.has_original_source_so_linger_time()\n                     ? config.original_source_so_linger_time()\n                     : -1),\n      proxy_id_(uint16_t(config.proxy_id())), is_ingress_(config.is_ingress()),\n      use_original_source_address_(config.use_original_source_address()),\n      is_l7lb_(config.is_l7lb()),\n      ipv4_source_address_(\n          Network::Utility::parseInternetAddressNoThrow(config.ipv4_source_address())),\n      ipv6_source_address_(\n          Network::Utility::parseInternetAddressNoThrow(config.ipv6_source_address())),\n      enforce_policy_on_l7lb_(config.enforce_policy_on_l7lb()),\n      l7lb_policy_name_(config.l7lb_policy_name()),\n      ipcache_entry_ttl_(\n          PROTOBUF_GET_MS_OR_DEFAULT(config, cache_entry_ttl, DEFAULT_CACHE_ENTRY_TTL_MS)),\n      random_(context.serverFactoryContext().api().randomGenerator()),\n      npds_config_(config.has_npds_config() ? config.npds_config()\n                                            : Cilium::CILIUM_XDS_API_CONFIG) {\n  if (is_l7lb_ && is_ingress_) {\n    throw EnvoyException(\"cilium.bpf_metadata: is_l7lb may not be set with is_ingress\");\n  }\n  if ((ipv4_source_address_ &&\n       ipv4_source_address_->ip()->version() != Network::Address::IpVersion::v4) ||\n      (!ipv4_source_address_ && !config.ipv4_source_address().empty())) {\n    throw EnvoyException(\n        fmt::format(\"cilium.bpf_metadata: ipv4_source_address is not an IPv4 address: {}\",\n                    config.ipv4_source_address()));\n  }\n  if ((ipv6_source_address_ &&\n       ipv6_source_address_->ip()->version() != Network::Address::IpVersion::v6) ||\n      (!ipv6_source_address_ && !config.ipv6_source_address().empty())) {\n    throw EnvoyException(\n        fmt::format(\"cilium.bpf_metadata: ipv6_source_address is not an IPv6 address: {}\",\n                    config.ipv6_source_address()));\n  }\n  if (config.use_nphds()) {\n    hosts_ = createHostMap(context, npds_config_);\n  }\n\n  // Note: all instances use the bpf root of the first filter with non-empty\n  // bpf_root instantiated! Only try opening bpf maps if bpf root is explicitly\n  // configured\n  std::string bpf_root = config.bpf_root();\n  if (!bpf_root.empty()) {\n    ct_maps_ = context.serverFactoryContext().singletonManager().getTyped<Cilium::CtMap>(\n        SINGLETON_MANAGER_REGISTERED_NAME(cilium_bpf_conntrack), [&bpf_root] {\n          // Even if opening the global maps fail, local maps may still succeed\n          // later.\n          return std::make_shared<Cilium::CtMap>(bpf_root);\n        });\n\n    if (bpf_root != ct_maps_->bpfRoot()) {\n      // bpf root may not change during runtime\n      throw EnvoyException(fmt::format(\"cilium.bpf_metadata: Invalid bpf_root: {}\", bpf_root));\n    }\n\n    if (!hosts_) {\n      std::string ipcache_name = \"cilium_ipcache\";\n      if (!config.ipcache_name().empty()) {\n        ipcache_name = config.ipcache_name();\n      }\n      ipcache_ = IpCache::newIpCache(\n          context.serverFactoryContext(), bpf_root + \"/tc/globals/\" + ipcache_name,\n          std::chrono::milliseconds(PROTOBUF_GET_MS_OR_DEFAULT(config, cache_gc_interval,\n                                                               10 * DEFAULT_CACHE_ENTRY_TTL_MS)));\n    }\n  }\n\n  // Get the shared policy provider, or create it if not already created.\n  // Note that the API config source is assumed to be the same for all filter\n  // instances!\n  // Only created if either ipcache_ or hosts_ map exists\n  if (ipcache_ || hosts_) {\n    npmap_ = createPolicyMap(context, npds_config_);\n  }\n}\n\nuint32_t Config::resolvePolicyId(const Network::Address::Ip* ip) const {\n  uint32_t id = 0;\n\n  if (hosts_ != nullptr) {\n    id = hosts_->resolve(ip);\n  } else if (ipcache_ != nullptr) {\n    std::chrono::microseconds ttl = ipcache_entry_ttl_;\n    // subtract random jitter (0-1ms) if configured as at least 1ms\n    if (ttl >= std::chrono::milliseconds(1)) {\n      ttl -= std::chrono::microseconds(random_.random() % 1000);\n    }\n    id = ipcache_->resolve(ip, ttl);\n  }\n\n  // default destination identity to the world if needed\n  if (id == 0) {\n    id = Cilium::ID::WORLD;\n    ENVOY_LOG(trace, \"bpf_metadata: Identity for IP defaults to WORLD\", ip->addressAsString());\n  }\n\n  return id;\n}\n\nuint32_t Config::resolveSourceIdentity(const Network::Address::Ip* sip,\n                                       const Network::Address::Ip* dip, bool ingress) {\n  uint32_t source_identity = 0;\n\n  // Resolve the source security ID from conntrack map, or from ip cache\n  if (ct_maps_ != nullptr) {\n    source_identity = ct_maps_->lookupSrcIdentity(sip, dip, ingress);\n  }\n  // Fall back to ipcache lookup if conntrack entry can not be located\n  if (source_identity == 0) {\n    source_identity = resolvePolicyId(sip);\n  }\n\n  return source_identity;\n}\n\n// Returns a new IpAddressPair that fills the port from 'source_address'.\nIpAddressPair Config::getIpAddressPairWithPort(uint16_t port, const IpAddressPair& addresses) {\n  auto address_pair = IpAddressPair();\n\n  if (addresses.ipv6_) {\n    sockaddr_in6 sa6 = *reinterpret_cast<const sockaddr_in6*>(addresses.ipv6_->sockAddr());\n    sa6.sin6_port = htons(port);\n    address_pair.ipv6_ = std::make_shared<Network::Address::Ipv6Instance>(sa6);\n  }\n  if (addresses.ipv4_) {\n    sockaddr_in sa4 = *reinterpret_cast<const sockaddr_in*>(addresses.ipv4_->sockAddr());\n    sa4.sin_port = htons(port);\n    address_pair.ipv4_ = std::make_shared<Network::Address::Ipv4Instance>(&sa4);\n  }\n\n  return address_pair;\n}\n\nconst Network::Address::Ip* Config::selectIpVersion(const Network::Address::IpVersion version,\n                                                    const IpAddressPair& source_addresses) {\n  switch (version) {\n  case Network::Address::IpVersion::v4:\n    if (source_addresses.ipv4_) {\n      return source_addresses.ipv4_->ip();\n    }\n    break;\n  case Network::Address::IpVersion::v6:\n    if (source_addresses.ipv6_) {\n      return source_addresses.ipv6_->ip();\n    }\n    break;\n  }\n\n  return nullptr;\n}\n\nconst PolicyInstance& Config::getPolicy(const std::string& pod_ip) const {\n  // Allow all traffic for egress without a policy when 'is_l7lb_' is true,\n  // or if configured without bpf (npmap_ == nullptr).\n  // This is the case for L7 LB listeners only. This is needed to allow traffic forwarded by Cilium\n  // Ingress (which is implemented as an egress listener!).\n  bool allow_egress = !enforce_policy_on_l7lb_ && !is_ingress_ && is_l7lb_;\n  if (npmap_ == nullptr) {\n    return allow_egress ? NetworkPolicyMap::getAllowAllEgressPolicy()\n                        : NetworkPolicyMap::getDenyAllPolicy();\n  }\n\n  return npmap_->getPolicyInstance(pod_ip, allow_egress);\n}\n\nbool Config::exists(const std::string& pod_ip) const { return npmap_->exists(pod_ip); }\n\nabsl::optional<Cilium::BpfMetadata::SocketMetadata>\nConfig::extractSocketMetadata(Network::ConnectionSocket& socket) {\n  Network::Address::InstanceConstSharedPtr src_address =\n      socket.connectionInfoProvider().remoteAddress();\n  const auto sip = src_address->ip();\n  const auto dst_address = THROW_OR_RETURN_VALUE(socket.ioHandle().localAddress(),\n                                                 Network::Address::InstanceConstSharedPtr);\n  const auto dip = dst_address->ip();\n  auto sni = socket.requestedServerName();\n\n  if (!sip || !dip) {\n    ENVOY_LOG(debug, \"Non-IP addresses: src: {} dst: {}\", src_address->asString(),\n              dst_address->asString());\n    return absl::nullopt;\n  }\n\n  std::string pod_ip, other_ip, ingress_policy_name;\n  if (is_ingress_) {\n    pod_ip = dip->addressAsString();\n    other_ip = sip->addressAsString();\n    ENVOY_LOG(debug, \"INGRESS POD IP: {}, source IP: {}, sni: \\\"{}\\\"\", pod_ip, other_ip, sni);\n  } else {\n    pod_ip = sip->addressAsString();\n    other_ip = dip->addressAsString();\n    ENVOY_LOG(debug, \"EGRESS POD IP: {}, destination IP: {} sni: \\\"{}\\\"\", pod_ip, other_ip, sni);\n  }\n\n  // Load the policy for the Pod that sends or receives traffic.\n  // Might change later on for North/South L7LB traffic.\n  // Use a pointer as we may need to change the policy in the case of \"North/South L7 LB\" below.\n  const auto* policy = &getPolicy(pod_ip);\n\n  // Resolve the source security ID from conntrack map, or from ip cache\n  uint32_t source_identity = resolveSourceIdentity(sip, dip, is_ingress_);\n\n  // Resolve the destination security ID for egress traffic\n  uint32_t destination_identity = is_ingress_ ? 0 : resolvePolicyId(dip);\n\n  // ingress_source_identity is non-zero when the egress path l7 LB should also enforce\n  // the ingress path policy using the original source identity.\n  uint32_t ingress_source_identity = 0;\n\n  // Use the configured IPv4/IPv6 Ingress IPs as starting point for the sources addresses\n  IpAddressPair source_addresses(ipv4_source_address_, ipv6_source_address_);\n\n  // NOTE: As L7 LB does not use the original destination, there is a possibility of a 5-tuple\n  // collision if the same source pod is communicating with the same backends on same destination\n  // port directly, maybe via some other, non-L7 LB service. We keep the original source port number\n  // to not allocate random source ports for the source pod in the host networking namespace that\n  // could then blackhole existing connections between the source pod and the backend. This means\n  // that the L7 LB backend connection may fail in case of a 5-tuple collision that the host\n  // networking namespace is aware of.\n\n  if (is_l7lb_ && use_original_source_address_ /* East/West L7LB */) {\n    // In case of east/west, L7 LB is only used for egress, so the local\n    // endpoint is the source, and the other node is the destination.\n    if (policy->getEndpointID() == 0) {\n      // Local pod not found. Original source address can only be used for local pods.\n      ENVOY_LOG(warn,\n                \"cilium.bpf_metadata (east/west L7 LB): Non-local pod can not use original \"\n                \"source address: {}\",\n                pod_ip);\n      return absl::nullopt;\n    }\n    // Use original source address with L7 LB for local endpoint sources if requested, as policy\n    // enforcement after the proxy depends on it (i.e., for \"east/west\" LB).\n    source_addresses =\n        getIpAddressPairWithPort(src_address->ip()->port(), policy->getEndpointIPs());\n  } else if (is_l7lb_ && !use_original_source_address_ /* North/South L7 LB */) {\n    // North/south L7 LB, assume the source security identity of the configured source addresses,\n    // if any and policy for this identity exists.\n\n    // Pick the local ingress source address of the same family as the incoming connection\n    const Network::Address::Ip* ingress_ip = selectIpVersion(sip->version(), source_addresses);\n\n    if (!ingress_ip) {\n      // IP family of the connection has no configured local ingress source address\n      ENVOY_LOG(\n          warn,\n          \"cilium.bpf_metadata (north/south L7 LB): No local Ingress IP source address configured \"\n          \"for the family of {}\",\n          sip->addressAsString());\n      return absl::nullopt;\n    }\n\n    // Enforce pod policy only for local pods.\n    if (policy->getEndpointID() == 0) {\n      pod_ip = \"\"; // source is not a local pod\n    }\n\n    // Enforce Ingress policy?\n    if (enforce_policy_on_l7lb_) {\n      ingress_source_identity = source_identity;\n      ingress_policy_name =\n          l7lb_policy_name_.empty() ? ingress_ip->addressAsString() : l7lb_policy_name_;\n    }\n\n    // Resolve source identity for the Ingress address\n    source_identity = resolvePolicyId(ingress_ip);\n    if (source_identity == Cilium::ID::WORLD) {\n      // No security ID available for the configured source IP\n      ENVOY_LOG(warn,\n                \"cilium.bpf_metadata (north/south L7 LB): Unknown local Ingress IP source address \"\n                \"configured: {}\",\n                ingress_ip->addressAsString());\n      return absl::nullopt;\n    }\n\n    // Original source address is never used for north/south LB\n    src_address = nullptr;\n  } else if (!use_original_source_address_ || (npmap_ != nullptr && npmap_->exists(other_ip))) {\n    // Otherwise only use the original source address if permitted and the destination is not\n    // in the same node.\n    //\n    // If bpf root is not configured (npmap_ == nullptr) we assume all destinations are non-local!\n    //\n    // Original source address is not used\n    src_address = nullptr;\n  }\n\n  // Evaluating proxylib L7 protocol for later usage in filter chain matching.\n  // This requires the TLS inspector, if used, to run before us.\n  // Note: This requires egress policy be known before upstream host selection,\n  // so this feature only works with the original destination cluster.\n  // This means that L7 LB does not work with the experimental Envoy Metadata\n  // based policies (e.g., with MongoDB or MySQL filters).\n  std::string proxylib_l7proto;\n  uint32_t remote_id = is_ingress_ ? source_identity : destination_identity;\n  if (policy->useProxylib(is_ingress_, proxy_id_, remote_id, dip->port(), proxylib_l7proto)) {\n    ENVOY_LOG(trace, \"cilium.bpf_metadata: detected proxylib l7 proto: {}\", proxylib_l7proto);\n  }\n\n  // Pass the metadata to an Envoy socket option we can retrieve later in other\n  // Cilium filters.\n  uint32_t mark = 0;\n\n  if (is_l7lb_ && use_original_source_address_ /* E/W L7LB */) {\n    // Mark with source endpoint ID for east/west l7 LB. This causes the upstream packets to be\n    // processed by the the source endpoint's policy enforcement in the datapath.\n    mark = 0x0900 | policy->getEndpointID() << 16;\n  } else {\n    // Mark with source identity\n    uint32_t cluster_id = (source_identity >> 16) & 0xFF;\n    uint32_t identity_id = (source_identity & 0xFFFF) << 16;\n    mark = ((is_ingress_) ? 0x0A00 : 0x0B00) | cluster_id | identity_id;\n  }\n\n  ENVOY_LOG(trace,\n            \"cilium.bpf_metadata: mark {}, ingress_source_identity {}, source_identity {}, \"\n            \"is_ingress {}, is_l7lb_ {}, ingress_policy_name {}, port {}, pod_ip {}\",\n            mark, ingress_source_identity, source_identity, is_ingress_, is_l7lb_,\n            ingress_policy_name, dip->port(), pod_ip);\n  return {Cilium::BpfMetadata::SocketMetadata(\n      mark, ingress_source_identity, source_identity, is_ingress_, is_l7lb_, dip->port(),\n      std::move(pod_ip), std::move(ingress_policy_name), std::move(src_address),\n      std::move(source_addresses.ipv4_), std::move(source_addresses.ipv6_), std::move(dst_address),\n      shared_from_this(), proxy_id_, std::move(proxylib_l7proto), sni)};\n}\n\nNetwork::FilterStatus Instance::onAccept(Network::ListenerFilterCallbacks& cb) {\n  Network::ConnectionSocket& socket = cb.socket();\n  ENVOY_LOG(trace, \"onAccept (socket={})\", socket.ioHandle().fdDoNotUse());\n\n  Network::Socket::OptionsSharedPtr socket_options =\n      std::make_shared<std::vector<Network::Socket::OptionConstSharedPtr>>();\n\n  // Cilium socket option is not set if this fails, which causes 500 response from our l7policy\n  // filter. Our integration tests depend on this.\n  auto socket_metadata = config_->extractSocketMetadata(socket);\n  if (socket_metadata) {\n\n    // Setting proxy lib application protocol on downstream socket\n    socket_metadata->configureProxyLibApplicationProtocol(socket);\n\n    // Restoring original destination address on downstream socket\n    socket_metadata->configureOriginalDstAddress(socket);\n\n    // Make Cilium Policy data available to filters and upstream connection (Cilium TLS Wrapper) as\n    // filter state.\n    const auto policy_fs = socket_metadata->buildCiliumPolicyFilterState();\n    cb.filterState().setData(\n        Cilium::CiliumPolicyFilterState::key(), policy_fs,\n        StreamInfo::FilterState::StateType::ReadOnly, StreamInfo::FilterState::LifeSpan::Connection,\n        StreamInfo::StreamSharingMayImpactPooling::SharedWithUpstreamConnection);\n\n    const auto dest_fs = socket_metadata->buildCiliumDestinationFilterState();\n    cb.filterState().setData(\n        Cilium::CiliumDestinationFilterState::key(), dest_fs,\n        StreamInfo::FilterState::StateType::Mutable, StreamInfo::FilterState::LifeSpan::Connection,\n        StreamInfo::StreamSharingMayImpactPooling::SharedWithUpstreamConnection);\n\n    // Restoring original source address on the upstream socket\n    socket_options->push_back(\n        socket_metadata->buildSourceAddressSocketOption(config_->so_linger_, dest_fs, policy_fs));\n\n    if (config_->addPrivilegedSocketOptions()) {\n      // adding SO_MARK (Cilium mark) on the upstream socket\n      socket_options->push_back(socket_metadata->buildCiliumMarkSocketOption());\n    }\n  }\n\n  if (config_->addPrivilegedSocketOptions()) {\n    // Setting IP_TRANSPARENT on upstream socket to be able to restore original source address\n    socket_options->push_back(std::make_shared<Envoy::Cilium::IpTransparentSocketOption>());\n  }\n\n  // allow reuse of the original source address by setting SO_REUSEADDR.\n  // This may by needed for retries to not fail on \"address already in use\"\n  // when using a specific source address and port.\n  socket_options->push_back(std::make_shared<Envoy::Network::SocketOptionImpl>(\n      envoy::config::core::v3::SocketOption::STATE_PREBIND,\n      Envoy::Network::SocketOptionName(SOL_SOCKET, SO_REUSEADDR, \"SO_REUSEADDR\"), 1));\n\n  // reuse port for forwarded client connections (SO_REUSEPORT)\n  Network::Socket::appendOptions(socket_options,\n                                 Network::SocketOptionFactory::buildReusePortOptions());\n\n  // Adding SocketOptions to the downstream socket. The function `setOption` is NOT executed\n  // on the downstream socket itself - it's executed later on the corresponding upstream socket!\n  socket.addOptions(socket_options);\n\n  // set keep alive socket options on accepted connection socket\n  // (SO_KEEPALIVE, TCP_KEEPINTVL, TCP_KEEPIDLE)\n  int keepalive = true;\n  int secs = 5 * 60; // Five minutes\n\n  auto status = socket.setSocketOption(SOL_SOCKET, SO_KEEPALIVE, &keepalive, sizeof(keepalive));\n  if (status.return_value_ < 0) {\n    ENVOY_LOG(critical, \"Socket option failure. Failed to set SO_KEEPALIVE: {}\",\n              Envoy::errorDetails(status.errno_));\n    return Network::FilterStatus::StopIteration;\n  }\n\n  status = socket.setSocketOption(IPPROTO_TCP, TCP_KEEPINTVL, &secs, sizeof(secs));\n  if (status.return_value_ < 0) {\n    ENVOY_LOG(critical, \"Socket option failure. Failed to set TCP_KEEPINTVL: {}\",\n              Envoy::errorDetails(status.errno_));\n    return Network::FilterStatus::StopIteration;\n  }\n\n  status = socket.setSocketOption(IPPROTO_TCP, TCP_KEEPIDLE, &secs, sizeof(secs));\n  if (status.return_value_ < 0) {\n    ENVOY_LOG(critical, \"Socket option failure. Failed to set TCP_KEEPIDLE: {}\",\n              Envoy::errorDetails(status.errno_));\n    return Network::FilterStatus::StopIteration;\n  }\n\n  return Network::FilterStatus::Continue;\n}\n\nNetwork::FilterStatus Instance::onData(Network::ListenerFilterBuffer&) {\n  return Network::FilterStatus::Continue;\n};\n\nsize_t Instance::maxReadBytes() const { return 0; }\n\nNetwork::FilterStatus UdpInstance::onData([[maybe_unused]] Network::UdpRecvData& data) {\n  return Network::FilterStatus::Continue;\n}\n\nNetwork::FilterStatus\nUdpInstance::onReceiveError([[maybe_unused]] Api::IoError::IoErrorCode error_code) {\n  return Network::FilterStatus::Continue;\n}\n\n} // namespace BpfMetadata\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/bpf_metadata.h",
    "content": "#pragma once\n\n#include <chrono>\n#include <cstddef>\n#include <memory>\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/api/io_error.h\"\n#include \"envoy/common/random_generator.h\"\n#include \"envoy/config/core/v3/config_source.pb.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/filter.h\"\n#include \"envoy/network/listener_filter_buffer.h\"\n#include \"envoy/server/factory_context.h\"\n\n#include \"source/common/common/logger.h\"\n\n#include \"absl/strings/string_view.h\"\n#include \"absl/types/optional.h\"\n#include \"cilium/api/bpf_metadata.pb.h\"\n#include \"cilium/conntrack.h\"\n#include \"cilium/filter_state_cilium_destination.h\"\n#include \"cilium/filter_state_cilium_policy.h\"\n#include \"cilium/host_map.h\"\n#include \"cilium/ipcache.h\"\n#include \"cilium/network_policy.h\"\n#include \"cilium/socket_option_cilium_mark.h\"\n#include \"cilium/socket_option_source_address.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\n// Cilium XDS API config source. Used for all Cilium XDS.\nextern const envoy::config::core::v3::ConfigSource CILIUM_XDS_API_CONFIG;\n\nnamespace BpfMetadata {\n\n#define DEFAULT_CACHE_ENTRY_TTL_MS 3\n\nstruct SocketMetadata : public Logger::Loggable<Logger::Id::filter> {\n  SocketMetadata(uint32_t mark, uint32_t ingress_source_identity, uint32_t source_identity,\n                 bool ingress, bool l7lb, uint16_t port, std::string&& pod_ip,\n                 std::string&& ingress_policy_name,\n                 Network::Address::InstanceConstSharedPtr original_source_address,\n                 Network::Address::InstanceConstSharedPtr source_address_ipv4,\n                 Network::Address::InstanceConstSharedPtr source_address_ipv6,\n                 Network::Address::InstanceConstSharedPtr original_dest_address,\n                 const PolicyResolverSharedPtr& policy_resolver, uint16_t proxy_id,\n                 std::string&& proxylib_l7_proto, absl::string_view sni)\n      : ingress_source_identity_(ingress_source_identity), source_identity_(source_identity),\n        ingress_(ingress), is_l7lb_(l7lb), port_(port), pod_ip_(std::move(pod_ip)),\n        ingress_policy_name_(std::move(ingress_policy_name)), proxy_id_(proxy_id),\n        proxylib_l7_proto_(std::move(proxylib_l7_proto)), sni_(sni),\n        policy_resolver_(policy_resolver), mark_(mark),\n        original_source_address_(std::move(original_source_address)),\n        source_address_ipv4_(std::move(source_address_ipv4)),\n        source_address_ipv6_(std::move(source_address_ipv6)),\n        original_dest_address_(std::move(original_dest_address)) {}\n\n  std::shared_ptr<Envoy::Cilium::CiliumPolicyFilterState> buildCiliumPolicyFilterState() {\n    return std::make_shared<Envoy::Cilium::CiliumPolicyFilterState>(\n        ingress_source_identity_, source_identity_, ingress_, is_l7lb_, port_, std::move(pod_ip_),\n        std::move(ingress_policy_name_), policy_resolver_, proxy_id_, sni_);\n  };\n\n  std::shared_ptr<Envoy::Cilium::CiliumDestinationFilterState> buildCiliumDestinationFilterState() {\n    return std::make_shared<Envoy::Cilium::CiliumDestinationFilterState>(nullptr);\n  };\n\n  std::shared_ptr<Envoy::Cilium::CiliumMarkSocketOption> buildCiliumMarkSocketOption() {\n    return std::make_shared<Envoy::Cilium::CiliumMarkSocketOption>(mark_);\n  };\n\n  std::shared_ptr<Envoy::Cilium::SourceAddressSocketOption> buildSourceAddressSocketOption(\n      int linger_time, const std::shared_ptr<CiliumDestinationFilterState>& dest_fs = nullptr,\n      const std::shared_ptr<CiliumPolicyFilterState>& policy_fs = nullptr) {\n    return std::make_shared<Envoy::Cilium::SourceAddressSocketOption>(\n        source_identity_, linger_time, original_source_address_, source_address_ipv4_,\n        source_address_ipv6_, dest_fs, policy_fs);\n  };\n\n  // Add ProxyLib L7 protocol as requested application protocol on the socket.\n  void configureProxyLibApplicationProtocol(Network::ConnectionSocket& socket) {\n    if (!proxylib_l7_proto_.empty()) {\n      const auto& old_protocols = socket.requestedApplicationProtocols();\n      std::vector<absl::string_view> protocols;\n      protocols.reserve(old_protocols.size());\n      for (const auto& old_protocol : old_protocols) {\n        protocols.emplace_back(old_protocol);\n      }\n      protocols.emplace_back(proxylib_l7_proto_);\n      socket.setRequestedApplicationProtocols(protocols);\n      ENVOY_LOG(info, \"cilium.bpf_metadata: setRequestedApplicationProtocols(..., {})\",\n                proxylib_l7_proto_);\n    }\n  }\n\n  void configureOriginalDstAddress(Network::ConnectionSocket& socket) {\n    if (!original_dest_address_) {\n      return;\n    }\n\n    if (*original_dest_address_ == *socket.connectionInfoProvider().localAddress()) {\n      // Only set the local address if it really changed, and mark it as address being restored.\n      return;\n    }\n\n    // Restoration of the original destination address lets the OriginalDstCluster know the\n    // destination address that can be used.\n    ENVOY_LOG(trace, \"Restoring local address (original destination) on socket {} ({} -> {})\",\n              socket.ioHandle().fdDoNotUse(),\n              socket.connectionInfoProvider().localAddress()->asString(),\n              original_dest_address_->asString());\n\n    socket.connectionInfoProvider().restoreLocalAddress(original_dest_address_);\n  }\n\n  uint32_t ingress_source_identity_;\n  uint32_t source_identity_;\n  bool ingress_;\n  bool is_l7lb_;\n  uint16_t port_;\n  std::string pod_ip_; // pod policy to enforce, if any; empty only when there is no local pod (i.e.\n                       // north/south l7lb)\n  std::string ingress_policy_name_; // Ingress policy to enforce, if any\n  uint16_t proxy_id_;\n  std::string proxylib_l7_proto_;\n  std::string sni_;\n  const PolicyResolverSharedPtr policy_resolver_;\n\n  uint32_t mark_;\n\n  Network::Address::InstanceConstSharedPtr original_source_address_;\n  Network::Address::InstanceConstSharedPtr source_address_ipv4_;\n  Network::Address::InstanceConstSharedPtr source_address_ipv6_;\n  Network::Address::InstanceConstSharedPtr original_dest_address_;\n};\n\n/**\n * Global configuration for Bpf Metadata listener filter. This\n * represents all global state shared among the working thread\n * instances of the filter.\n */\nclass Config : public Cilium::PolicyResolver,\n               public std::enable_shared_from_this<Config>,\n               Logger::Loggable<Logger::Id::config> {\npublic:\n  Config(const ::cilium::BpfMetadata& config,\n         Server::Configuration::ListenerFactoryContext& context);\n  ~Config() override = default;\n\n  // PolicyResolver\n  uint32_t resolvePolicyId(const Network::Address::Ip*) const override;\n  const PolicyInstance& getPolicy(const std::string&) const override;\n  bool exists(const std::string&) const override;\n\n  virtual absl::optional<SocketMetadata> extractSocketMetadata(Network::ConnectionSocket& socket);\n\n  // Possibility to prevent socket options that require\n  // NET_ADMIN privileges from being applied. Used by tests.\n  virtual bool addPrivilegedSocketOptions() { return true; };\n\n  int so_linger_; // negative if disabled\n  uint16_t proxy_id_;\n  bool is_ingress_;\n  bool use_original_source_address_;\n  bool is_l7lb_;\n  Network::Address::InstanceConstSharedPtr ipv4_source_address_;\n  Network::Address::InstanceConstSharedPtr ipv6_source_address_;\n  bool enforce_policy_on_l7lb_;\n  std::string l7lb_policy_name_;\n  std::chrono::milliseconds ipcache_entry_ttl_;\n  Random::RandomGenerator& random_;\n  envoy::config::core::v3::ConfigSource npds_config_;\n\n  std::shared_ptr<const Cilium::NetworkPolicyMap> npmap_;\n  Cilium::CtMapSharedPtr ct_maps_;\n  Cilium::IpCacheSharedPtr ipcache_;\n  std::shared_ptr<const Cilium::PolicyHostMap> hosts_;\n\nprivate:\n  uint32_t resolveSourceIdentity(const Network::Address::Ip* sip, const Network::Address::Ip* dip,\n                                 bool ingress);\n\n  IpAddressPair getIpAddressPairWithPort(uint16_t port, const IpAddressPair& addresses);\n\n  const Network::Address::Ip* selectIpVersion(const Network::Address::IpVersion version,\n                                              const IpAddressPair& source_addresses);\n};\n\nusing ConfigSharedPtr = std::shared_ptr<Config>;\n\n/**\n * Implementation of a bpf metadata listener filter.\n */\nclass Instance : public Network::ListenerFilter, Logger::Loggable<Logger::Id::filter> {\npublic:\n  Instance(const ConfigSharedPtr& config) : config_(config) {}\n\n  // Network::ListenerFilter\n  Network::FilterStatus onAccept(Network::ListenerFilterCallbacks& cb) override;\n\n  // Network::ListenerFilter\n  Network::FilterStatus onData(Network::ListenerFilterBuffer& buffer) override;\n\n  // Network::ListenerFilter\n  size_t maxReadBytes() const override;\n\nprivate:\n  const ConfigSharedPtr config_;\n};\n\n/**\n * Implementation of a UDP bpf metadata listener filter.\n */\nclass UdpInstance : public Network::UdpListenerReadFilter, Logger::Loggable<Logger::Id::filter> {\npublic:\n  UdpInstance(const ConfigSharedPtr& config, Network::UdpReadFilterCallbacks& callbacks)\n      : UdpListenerReadFilter(callbacks), config_(config) {}\n\n  // Network::UdpListenerReadFilter\n  Network::FilterStatus onData(Network::UdpRecvData& data) override;\n\n  // Network::UdpListenerReadFilter\n  Network::FilterStatus onReceiveError(Api::IoError::IoErrorCode error_code) override;\n\nprivate:\n  const ConfigSharedPtr config_;\n};\n\n} // namespace BpfMetadata\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/conntrack.cc",
    "content": "#include \"conntrack.h\"\n\n#include <netinet/in.h>\n\n#include <cerrno> // IWYU pragma: keep\n#include <cstdint>\n#include <cstring>\n#include <string>\n\n#include \"envoy/common/platform.h\"\n#include \"envoy/network/address.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/utility.h\"\n\n#include \"absl/numeric/int128.h\"\n#include \"cilium/bpf.h\"\n#include \"linux/bpf.h\"\n#include \"linux/type_mapper.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\n// These must be kept in sync with Cilium source code, should refactor\n// them to a separate include file we can include here instead of\n// copying them!\n\nusing __u64 = uint64_t;\nusing __be32 = uint32_t; // Beware of the byte order!\nusing __u32 = uint32_t;\nusing __be16 = uint16_t; // Beware of the byte order!\nusing __u16 = uint16_t;\nusing __u8 = uint8_t;\n\n#define TUPLE_F_OUT 0\n#define TUPLE_F_IN 1\n\nPACKED_STRUCT(struct IPv6CtTuple {\n  __be32 saddr[4];\n  __be32 daddr[4];\n  __be16 dport;\n  __be16 sport;\n  __u8 nexthdr;\n  __u8 flags;\n});\n\nPACKED_STRUCT(struct IPv4CtTuple {\n  __be32 saddr;\n  __be32 daddr;\n  __be16 dport;\n  __be16 sport;\n  __u8 nexthdr;\n  __u8 flags;\n});\n\nstruct CtEntry {\n  __u64 rx_packets;\n  __u64 rx_bytes;\n  __u64 tx_packets;\n  __u64 tx_bytes;\n  __u32 lifetime;\n  __u16 rx_closing : 1, tx_closing : 1, nat46 : 1, lb_loopback : 1, seen_non_syn : 1, reserve : 11;\n  __u16 rev_nat_index;\n  __u16 slave;\n\n  /* *x_flags_seen represents the OR of all TCP flags seen for the\n   * transmit/receive direction of this entry. */\n  __u8 tx_flags_seen;\n  __u8 rx_flags_seen;\n\n  __u32 src_sec_id; /* Used from userspace proxies, do not change offset! */\n\n  /* last_*x_report is a timestamp of the last time a monitor\n   * notification was sent for the transmit/receive direction. */\n  __u32 last_tx_report;\n  __u32 last_rx_report;\n};\n\nCtMap::CtMap4::CtMap4(const std::string& bpf_root)\n    : Bpf(BPF_MAP_TYPE_HASH, sizeof(struct IPv4CtTuple), sizeof(struct CtEntry)),\n      path_(bpf_root + \"/tc/globals/cilium_ct4_global\") {}\n\nbool CtMap::CtMap4::open() {\n  bool ret = Bpf::open(path_);\n  if (!ret) {\n    ENVOY_LOG(warn, \"cilium.bpf_metadata: Cannot open IPv4 conntrack map at {}\", path_);\n  }\n  return ret;\n}\n\nCtMap::CtMap6::CtMap6(const std::string& bpf_root)\n    : Bpf(BPF_MAP_TYPE_HASH, sizeof(struct IPv6CtTuple), sizeof(struct CtEntry)),\n      path_(bpf_root + \"/tc/globals/cilium_ct6_global\") {}\n\nbool CtMap::CtMap6::open() {\n  bool ret = Bpf::open(path_);\n  if (!ret) {\n    ENVOY_LOG(warn, \"cilium.bpf_metadata: Cannot open IPv6 conntrack map at {}\", path_);\n  }\n  return ret;\n}\n\nCtMap::CtMap(const std::string& bpf_root)\n    : bpf_root_(bpf_root), ct_map4_(bpf_root), ct_map6_(bpf_root) {\n  if (!ct_map4_.open() && !ct_map6_.open()) {\n    ENVOY_LOG(debug, \"cilium.bpf_metadata: conntrack map global open failed: ({})\",\n              Envoy::errorDetails(errno));\n  }\n}\n\n// map_name is \"global\" for the global maps, or endpoint ID for local maps\nuint32_t CtMap::lookupSrcIdentity(const Network::Address::Ip* sip, const Network::Address::Ip* dip,\n                                  bool ingress) {\n  ENVOY_LOG(debug, \"cilium.bpf_metadata: Using conntrack map global\");\n\n  struct IPv4CtTuple key4 {};\n  struct IPv6CtTuple key6 {};\n  struct CtEntry value {};\n\n  if (sip->version() == Network::Address::IpVersion::v4 &&\n      dip->version() == Network::Address::IpVersion::v4) {\n    key4.daddr = dip->ipv4()->address();\n    key4.saddr = sip->ipv4()->address();\n    key4.sport = htons(sip->port());\n    key4.dport = htons(dip->port());\n    key4.nexthdr = 6;                                // TCP only for now\n    key4.flags = ingress ? TUPLE_F_IN : TUPLE_F_OUT; // also reversed\n\n    ENVOY_LOG(trace,\n              \"cilium.bpf_metadata: Looking up key: {:x}, {:x}, {:x}, {:x}, \"\n              \"{:x}, {:x}\",\n              ntohl(key4.daddr), ntohl(key4.saddr), ntohs(key4.dport), ntohs(key4.sport),\n              key4.nexthdr, key4.flags);\n  } else if (sip->version() == Network::Address::IpVersion::v6 &&\n             dip->version() == Network::Address::IpVersion::v6) {\n    absl::uint128 daddr = dip->ipv6()->address();\n    absl::uint128 saddr = sip->ipv6()->address();\n    memcpy(&key6.daddr, &daddr, 16); // NOLINT(safe-memcpy)\n    memcpy(&key6.saddr, &saddr, 16); // NOLINT(safe-memcpy)\n    key6.sport = htons(sip->port());\n    key6.dport = htons(dip->port());\n    key6.nexthdr = 6; // TCP only for now\n    key6.flags = ingress ? TUPLE_F_IN : TUPLE_F_OUT;\n  } else {\n    ENVOY_LOG(info, \"cilium.bpf_metadata: Address type mismatch: Source: {}, Dest: {}\",\n              sip->addressAsString(), dip->addressAsString());\n    return 0;\n  }\n\n  if (dip->version() == Network::Address::IpVersion::v4) {\n    if (!ct_map4_.lookup(&key4, &value)) {\n      ct_map4_.close(); // flush the map to force reload after each failure.\n      ENVOY_LOG(debug, \"cilium.bpf_metadata: IPv4 conntrack map lookup failed: {}\",\n                Envoy::errorDetails(errno));\n      return 0;\n    }\n  } else {\n    if (!ct_map6_.lookup(&key6, &value)) {\n      ct_map6_.close(); // flush the map to force reload after each failure.\n      ENVOY_LOG(debug, \"cilium.bpf_metadata: IPv6 conntrack map lookup failed: {}\",\n                Envoy::errorDetails(errno));\n      return 0;\n    }\n  }\n  return value.src_sec_id;\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/conntrack.h",
    "content": "#pragma once\n\n#include <cstdint>\n#include <memory>\n#include <string>\n\n#include \"envoy/network/address.h\"\n#include \"envoy/singleton/instance.h\"\n\n#include \"source/common/common/logger.h\"\n\n#include \"cilium/bpf.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nclass CtMap : public Singleton::Instance, Logger::Loggable<Logger::Id::filter> {\npublic:\n  CtMap(const std::string& bpf_root);\n\n  const std::string& bpfRoot() { return bpf_root_; }\n\n  uint32_t lookupSrcIdentity(const Network::Address::Ip* sip, const Network::Address::Ip* dip,\n                             bool ingress);\n\nprivate:\n  class CtMap4 : public Bpf {\n  public:\n    CtMap4(const std::string& bpf_root);\n\n    bool open();\n\n  private:\n    std::string path_;\n  };\n\n  class CtMap6 : public Bpf {\n  public:\n    CtMap6(const std::string& bpf_root);\n\n    bool open();\n\n  private:\n    std::string path_;\n  };\n\npublic:\n  std::string bpf_root_;\n  CtMap4 ct_map4_;\n  CtMap6 ct_map6_;\n};\n\nusing CtMapSharedPtr = std::shared_ptr<CtMap>;\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/filter_state_cilium_destination.cc",
    "content": "#include \"cilium/filter_state_cilium_destination.h\"\n\n#include <string>\n\n#include \"source/common/common/macros.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nconst std::string& CiliumDestinationFilterState::key() {\n  CONSTRUCT_ON_FIRST_USE(std::string, \"cilium.destination.address\");\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/filter_state_cilium_destination.h",
    "content": "#pragma once\n\n#include <string>\n#include <utility>\n\n#include \"envoy/network/address.h\"\n#include \"envoy/stream_info/filter_state.h\"\n\n#include \"source/common/common/logger.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nclass CiliumDestinationFilterState : public StreamInfo::FilterState::Object,\n                                     public Logger::Loggable<Logger::Id::filter> {\npublic:\n  explicit CiliumDestinationFilterState(Network::Address::InstanceConstSharedPtr dst_address)\n      : dst_address_(std::move(dst_address)) {};\n\n  void setDestinationAddress(const Network::Address::InstanceConstSharedPtr& address) {\n    dst_address_ = address;\n  }\n\n  Network::Address::InstanceConstSharedPtr getDestinationAddress() const { return dst_address_; }\n  static const std::string& key();\n\n  Network::Address::InstanceConstSharedPtr dst_address_;\n};\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/filter_state_cilium_policy.cc",
    "content": "#include \"cilium/filter_state_cilium_policy.h\"\n\n#include <cstdint>\n#include <string>\n\n#include \"envoy/http/header_map.h\"\n#include \"envoy/network/connection.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/macros.h\"\n\n#include \"absl/strings/string_view.h\"\n#include \"cilium/accesslog.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nconst std::string& CiliumPolicyFilterState::key() {\n  CONSTRUCT_ON_FIRST_USE(std::string, \"cilium.policy\");\n}\n\nbool CiliumPolicyFilterState::enforceNetworkPolicy(const Network::Connection& conn,\n                                                   uint32_t destination_identity,\n                                                   uint16_t destination_port,\n                                                   const absl::string_view sni,\n                                                   /* OUT */ bool& use_proxy_lib,\n                                                   /* OUT */ std::string& l7_proto,\n                                                   /* INOUT */ AccessLog::Entry& log_entry) const {\n  use_proxy_lib = false;\n  l7_proto = \"\";\n\n  // enforce pod policy first, if any\n  if (!pod_ip_.empty()) {\n    const auto& policy = policy_resolver_->getPolicy(pod_ip_);\n    auto remote_id = ingress_ ? source_identity_ : destination_identity;\n    auto port = ingress_ ? port_ : destination_port;\n\n    auto port_policy = policy.findPortPolicy(ingress_, port);\n\n    if (!port_policy.allowed(proxy_id_, remote_id, sni)) {\n      ENVOY_CONN_LOG(debug, \"Pod policy DENY on proxy_id: {} id: {} port: {} sni: \\\"{}\\\"\", conn,\n                     proxy_id_, remote_id, port, sni);\n      return false;\n    }\n\n    // populate l7proto_ if available\n    use_proxy_lib = port_policy.useProxylib(proxy_id_, remote_id, l7_proto);\n  }\n\n  // enforce Ingress policy 2nd, if any\n  if (!ingress_policy_name_.empty()) {\n    log_entry.entry_.set_policy_name(ingress_policy_name_);\n    const auto& policy = policy_resolver_->getPolicy(ingress_policy_name_);\n\n    // Enforce ingress policy for Ingress, on the original destination port\n    if (ingress_source_identity_ != 0) {\n      auto ingress_port_policy = policy.findPortPolicy(true, port_);\n      if (!ingress_port_policy.allowed(proxy_id_, ingress_source_identity_, sni)) {\n        ENVOY_CONN_LOG(debug,\n                       \"Ingress network policy {} DROP for source identity and destination \"\n                       \"reserved ingress identity: {} proxy_id: {} port: {} sni: \\\"{}\\\"\",\n                       conn, ingress_policy_name_, ingress_source_identity_, proxy_id_, port_, sni);\n        return false;\n      }\n    }\n\n    // Enforce egress policy for Ingress\n    auto egress_port_policy = policy.findPortPolicy(false, destination_port);\n    if (!egress_port_policy.allowed(proxy_id_, destination_identity, sni)) {\n      ENVOY_CONN_LOG(debug,\n                     \"Egress network policy {} DROP for reserved ingress identity and destination \"\n                     \"identity: {} proxy_id: {} port: {} sni: \\\"{}\\\"\",\n                     conn, ingress_policy_name_, destination_identity, proxy_id_, destination_port,\n                     sni);\n      return false;\n    }\n  }\n\n  // Connection allowed by policy\n  return true;\n}\n\nbool CiliumPolicyFilterState::enforcePodHTTPPolicy(const Network::Connection& conn,\n                                                   uint32_t destination_identity,\n                                                   uint16_t destination_port,\n                                                   /* INOUT */ Http::RequestHeaderMap& headers,\n                                                   /* INOUT */ AccessLog::Entry& log_entry) const {\n  const auto& policy = policy_resolver_->getPolicy(pod_ip_);\n  auto remote_id = ingress_ ? source_identity_ : destination_identity;\n  auto port = ingress_ ? port_ : destination_port;\n\n  const auto port_policy = policy.findPortPolicy(ingress_, port);\n  if (!port_policy.hasHttpRules()) {\n    ENVOY_CONN_LOG(debug,\n                   \"cilium.l7policy: Pod {} HTTP {} policy enforcement skipped (no HTTP rules) on \"\n                   \"proxy_id: {} id: {} port: {}\",\n                   conn, pod_ip_, ingress_ ? \"ingress\" : \"egress\", proxy_id_, remote_id, port);\n    return true;\n  }\n\n  if (!port_policy.allowed(proxy_id_, remote_id, headers, log_entry)) {\n    ENVOY_CONN_LOG(debug,\n                   \"cilium.l7policy: Pod {} HTTP {} policy DENY on proxy_id: {} id: {} port: {}\",\n                   conn, pod_ip_, ingress_ ? \"ingress\" : \"egress\", proxy_id_, remote_id, port);\n    return false;\n  }\n\n  // Connection allowed by policy\n  ENVOY_CONN_LOG(debug,\n                 \"cilium.l7policy: Pod {} HTTP {} policy ALLOW on proxy_id: {} id: {} port: {}\",\n                 conn, pod_ip_, ingress_ ? \"ingress\" : \"egress\", proxy_id_, remote_id, port);\n  return true;\n}\n\nbool CiliumPolicyFilterState::enforceIngressHTTPPolicy(\n    const Network::Connection& conn, uint32_t destination_identity, uint16_t destination_port,\n    /* INOUT */ Http::RequestHeaderMap& headers,\n    /* INOUT */ AccessLog::Entry& log_entry) const {\n  log_entry.entry_.set_policy_name(ingress_policy_name_);\n  log_entry.request_logged_ = false; // we reuse the same entry we used for the pod policy\n\n  const auto& policy = policy_resolver_->getPolicy(ingress_policy_name_);\n\n  // Enforce ingress policy for Ingress, on the original destination port\n  if (ingress_source_identity_ != 0) {\n    const auto port_policy = policy.findPortPolicy(true, port_);\n    if (!port_policy.hasHttpRules()) {\n      ENVOY_CONN_LOG(debug,\n                     \"cilium.l7policy: Ingress {} HTTP ingress policy enforcement skipped (no HTTP \"\n                     \"rules) on proxy_id: {} id: {} port: {}\",\n                     conn, ingress_policy_name_, proxy_id_, ingress_source_identity_, port_);\n      return true;\n    }\n\n    if (!port_policy.allowed(proxy_id_, ingress_source_identity_, headers, log_entry)) {\n      ENVOY_CONN_LOG(\n          debug,\n          \"cilium.l7policy: Ingress {} HTTP ingress policy DROP on proxy_id: {} id: {} port: {}\",\n          conn, ingress_policy_name_, proxy_id_, ingress_source_identity_, port_);\n      return false;\n    }\n  }\n\n  // Enforce egress policy for Ingress on the upstream destination identity and port\n  const auto port_policy = policy.findPortPolicy(false, destination_port);\n  if (!port_policy.hasHttpRules()) {\n    ENVOY_CONN_LOG(debug,\n                   \"cilium.l7policy: Ingress {} HTTP egress policy enforcement skipped (no HTTP \"\n                   \"rules) on proxy_id: {} id: {} port: {}\",\n                   conn, ingress_policy_name_, proxy_id_, destination_identity, destination_port);\n    return true;\n  }\n\n  if (!port_policy.allowed(proxy_id_, destination_identity, headers, log_entry)) {\n    ENVOY_CONN_LOG(\n        debug,\n        \"cilium.l7policy: Ingress {} HTTP egress policy DROP on proxy_id: {} id: {}  port: {}\",\n        conn, ingress_policy_name_, proxy_id_, destination_identity, destination_port);\n    return false;\n  }\n\n  // Connection allowed by policy\n  ENVOY_CONN_LOG(debug,\n                 \"cilium.l7policy: Ingress {} HTTP policy ALLOW on proxy_id: {} id: {}  port: {}\",\n                 conn, ingress_policy_name_, proxy_id_, destination_identity, destination_port);\n  return true;\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/filter_state_cilium_policy.h",
    "content": "#pragma once\n\n#include <cstdint>\n#include <memory>\n#include <string>\n#include <utility>\n\n#include \"envoy/common/pure.h\"\n#include \"envoy/http/header_map.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/connection.h\"\n#include \"envoy/stream_info/filter_state.h\"\n\n#include \"source/common/common/logger.h\"\n\n#include \"absl/strings/string_view.h\"\n#include \"cilium/accesslog.h\"\n#include \"cilium/network_policy.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nclass PolicyResolver {\npublic:\n  virtual ~PolicyResolver() = default;\n\n  virtual uint32_t resolvePolicyId(const Network::Address::Ip*) const PURE;\n  virtual const PolicyInstance& getPolicy(const std::string&) const PURE;\n\n  // Returns 'true' if the given policy exists\n  virtual bool exists(const std::string&) const PURE;\n};\nusing PolicyResolverSharedPtr = std::shared_ptr<PolicyResolver>;\n\n// FilterState that holds relevant connection & policy information that can be retrieved\n// by the Cilium network- and HTTP policy filters via filter state.\nclass CiliumPolicyFilterState : public StreamInfo::FilterState::Object,\n                                public Logger::Loggable<Logger::Id::filter> {\npublic:\n  CiliumPolicyFilterState(uint32_t ingress_source_identity, uint32_t source_identity, bool ingress,\n                          bool l7lb, uint16_t port, std::string&& pod_ip,\n                          std::string&& ingress_policy_name,\n                          const PolicyResolverSharedPtr& policy_resolver, uint16_t proxy_id,\n                          absl::string_view sni)\n      : ingress_source_identity_(ingress_source_identity), source_identity_(source_identity),\n        ingress_(ingress), is_l7lb_(l7lb), port_(port), pod_ip_(std::move(pod_ip)),\n        ingress_policy_name_(std::move(ingress_policy_name)), proxy_id_(proxy_id), sni_(sni),\n        policy_resolver_(policy_resolver) {\n    ENVOY_LOG(\n        debug,\n        \"Cilium CiliumPolicyFilterState(): source_identity: {}, \"\n        \"ingress: {}, port: {}, pod_ip: {}, ingress_policy_name: {}, proxy_id: {}, sni: \\\"{}\\\"\",\n        source_identity_, ingress_, port_, pod_ip_, ingress_policy_name_, proxy_id_, sni_);\n  }\n\n  uint32_t resolvePolicyId(const Network::Address::Ip* ip) const {\n    return policy_resolver_->resolvePolicyId(ip);\n  }\n\n  bool exists(const std::string& ip) const { return policy_resolver_->exists(ip); }\n\n  const PolicyInstance& getPolicy() const { return policy_resolver_->getPolicy(pod_ip_); }\n\n  bool enforceNetworkPolicy(const Network::Connection& conn, uint32_t destination_identity,\n                            uint16_t destination_port, const absl::string_view sni,\n                            /* OUT */ bool& use_proxy_lib,\n                            /* OUT */ std::string& l7_proto,\n                            /* INOUT */ AccessLog::Entry& log_entry) const;\n\n  bool enforcePodHTTPPolicy(const Network::Connection& conn, uint32_t destination_identity,\n                            uint16_t destination_port,\n                            /* INOUT */ Http::RequestHeaderMap& headers,\n                            /* INOUT */ AccessLog::Entry& log_entry) const;\n\n  bool enforceIngressHTTPPolicy(const Network::Connection& conn, uint32_t destination_identity,\n                                uint16_t destination_port,\n                                /* INOUT */ Http::RequestHeaderMap& headers,\n                                /* INOUT */ AccessLog::Entry& log_entry) const;\n\n  // policyUseUpstreamDestinationAddress returns 'true' if policy enforcement should be done on the\n  // basis of the upstream destination address.\n  bool policyUseUpstreamDestinationAddress() const { return is_l7lb_; }\n\n  static const std::string& key();\n\n  // Additional ingress policy enforcement is performed if ingress_source_identity is non-zero\n  uint32_t ingress_source_identity_;\n  uint32_t source_identity_;\n  bool ingress_;\n  bool is_l7lb_;\n  uint16_t port_;\n  std::string pod_ip_;\n  std::string ingress_policy_name_;\n  uint16_t proxy_id_;\n  std::string sni_;\n\nprivate:\n  const PolicyResolverSharedPtr policy_resolver_;\n};\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/grpc_subscription.cc",
    "content": "#include \"cilium/grpc_subscription.h\"\n\n#include <fmt/format.h>\n\n#include <chrono>\n#include <memory>\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/annotations/resource.pb.h\"\n#include \"envoy/common/exception.h\"\n#include \"envoy/common/random_generator.h\"\n#include \"envoy/config/core/v3/config_source.pb.h\"\n#include \"envoy/config/custom_config_validators.h\"\n#include \"envoy/config/subscription.h\"\n#include \"envoy/config/subscription_factory.h\"\n#include \"envoy/event/dispatcher.h\"\n#include \"envoy/grpc/async_client.h\"\n#include \"envoy/local_info/local_info.h\"\n#include \"envoy/stats/scope.h\"\n#include \"envoy/upstream/cluster_manager.h\"\n\n#include \"source/common/common/assert.h\"\n#include \"source/common/common/backoff_strategy.h\"\n#include \"source/common/config/utility.h\"\n#include \"source/common/grpc/common.h\"\n#include \"source/common/protobuf/protobuf.h\" // IWYU pragma: keep\n#include \"source/extensions/config_subscription/grpc/grpc_mux_context.h\"\n#include \"source/extensions/config_subscription/grpc/grpc_subscription_impl.h\"\n\n#include \"absl/container/flat_hash_map.h\"\n#include \"absl/status/statusor.h\"\n#include \"absl/strings/match.h\"\n#include \"absl/strings/string_view.h\"\n#include \"absl/types/optional.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nnamespace {\n\n// service RPC method fully qualified names.\nstruct Service {\n  std::string sotw_grpc_method_;\n  std::string delta_grpc_method_;\n  std::string rest_method_;\n};\n\n// Map from resource type URL to service RPC methods.\nusing TypeUrlToServiceMap = absl::flat_hash_map<std::string, Service>;\n\nTypeUrlToServiceMap* buildTypeUrlToServiceMap() {\n  auto* type_url_to_service_map = new TypeUrlToServiceMap();\n  // This happens once in the lifetime of Envoy. We build a reverse map from\n  // resource type URL to service methods. We explicitly enumerate all services,\n  // since DescriptorPool doesn't support iterating over all descriptors, due\n  // its lazy load design, see\n  // https://www.mail-archive.com/protobuf@googlegroups.com/msg04540.html.\n  for (absl::string_view name : {\n           \"cilium.NetworkPolicyDiscoveryService\",\n           \"cilium.NetworkPolicyHostsDiscoveryService\",\n       }) {\n    const auto* service_desc =\n        Protobuf::DescriptorPool::generated_pool()->FindServiceByName(std::string(name));\n    // TODO(htuch): this should become an ASSERT once all v3 descriptors are\n    // linked in.\n    ASSERT(service_desc != nullptr, fmt::format(\"{} missing\", name));\n    ASSERT(service_desc->options().HasExtension(envoy::annotations::resource));\n    const std::string resource_type_url = Grpc::Common::typeUrl(\n        service_desc->options().GetExtension(envoy::annotations::resource).type());\n    Service& service = (*type_url_to_service_map)[resource_type_url];\n    // We populate the service methods that are known below, but it's possible\n    // that some services don't implement all, e.g. VHDS doesn't support SotW or\n    // REST.\n    for (int method_index = 0; method_index < service_desc->method_count(); ++method_index) {\n      const auto& method_desc = *service_desc->method(method_index);\n      if (absl::StartsWith(method_desc.name(), \"Stream\")) {\n        service.sotw_grpc_method_ = method_desc.full_name();\n      } else if (absl::StartsWith(method_desc.name(), \"Delta\")) {\n        service.delta_grpc_method_ = method_desc.full_name();\n      } else if (absl::StartsWith(method_desc.name(), \"Fetch\")) {\n        service.rest_method_ = method_desc.full_name();\n      } else {\n        ASSERT(false, \"Unknown xDS service method\");\n      }\n    }\n  }\n  return type_url_to_service_map;\n}\n\nTypeUrlToServiceMap& typeUrlToServiceMap() {\n  static TypeUrlToServiceMap* type_url_to_service_map = buildTypeUrlToServiceMap();\n  return *type_url_to_service_map;\n}\n\nclass NopConfigValidatorsImpl : public Envoy::Config::CustomConfigValidators {\npublic:\n  NopConfigValidatorsImpl() = default;\n\n  void executeValidators(absl::string_view,\n                         const std::vector<Envoy::Config::DecodedResourcePtr>&) override {}\n  void executeValidators(absl::string_view, const std::vector<Envoy::Config::DecodedResourcePtr>&,\n                         const Protobuf::RepeatedPtrField<std::string>&) override {}\n};\n\n} // namespace\n\nconst Protobuf::MethodDescriptor& deltaGrpcMethod(absl::string_view type_url) {\n  const auto it = typeUrlToServiceMap().find(static_cast<std::string>(type_url));\n  ASSERT(it != typeUrlToServiceMap().cend());\n  return *Protobuf::DescriptorPool::generated_pool()->FindMethodByName(\n      it->second.delta_grpc_method_);\n}\n\nconst Protobuf::MethodDescriptor& sotwGrpcMethod(absl::string_view type_url) {\n  const auto it = typeUrlToServiceMap().find(static_cast<std::string>(type_url));\n  ASSERT(it != typeUrlToServiceMap().cend());\n  return *Protobuf::DescriptorPool::generated_pool()->FindMethodByName(\n      it->second.sotw_grpc_method_);\n}\n\nstd::unique_ptr<Config::GrpcSubscriptionImpl>\nsubscribe(const absl::string_view type_url,\n          const envoy::config::core::v3::ConfigSource& npds_config,\n          const LocalInfo::LocalInfo& local_info, Upstream::ClusterManager& cm,\n          Event::Dispatcher& dispatcher, Random::RandomGenerator& random, Stats::Scope& scope,\n          Config::SubscriptionCallbacks& callbacks,\n          Config::OpaqueResourceDecoderSharedPtr resource_decoder,\n          std::chrono::milliseconds init_fetch_timeout) {\n  auto& api_config_source = npds_config.api_config_source();\n  THROW_IF_NOT_OK(Config::Utility::checkApiConfigSourceSubscriptionBackingCluster(\n      cm.primaryClusters(), api_config_source));\n\n  Config::SubscriptionStats stats = Config::Utility::generateStats(scope);\n  Envoy::Config::SubscriptionOptions options;\n\n  // No-op custom validators\n  Envoy::Config::CustomConfigValidatorsPtr nop_config_validators =\n      std::make_unique<NopConfigValidatorsImpl>();\n  auto factory_or_error = Config::Utility::factoryForGrpcApiConfigSource(\n      cm.grpcAsyncClientManager(), api_config_source, scope, true, 0, false);\n  THROW_IF_NOT_OK_REF(factory_or_error.status());\n\n  absl::StatusOr<Config::RateLimitSettings> rate_limit_settings_or_error =\n      Config::Utility::parseRateLimitSettings(api_config_source);\n  THROW_IF_NOT_OK_REF(rate_limit_settings_or_error.status());\n\n  Config::GrpcMuxContext grpc_mux_context{\n      /*async_client_=*/THROW_OR_RETURN_VALUE(\n          factory_or_error.value()->createUncachedRawAsyncClient(), Grpc::RawAsyncClientPtr),\n      /*failover_async_client_=*/nullptr,\n      /*dispatcher_=*/dispatcher,\n      /*service_method_=*/sotwGrpcMethod(type_url),\n      /*local_info_=*/local_info,\n      /*rate_limit_settings_=*/rate_limit_settings_or_error.value(),\n      /*scope_=*/scope,\n      /*config_validators_=*/std::move(nop_config_validators),\n      /*xds_resources_delegate_=*/absl::nullopt,\n      /*xds_config_tracker_=*/absl::nullopt,\n      /*backoff_strategy_=*/\n      std::make_unique<JitteredExponentialBackOffStrategy>(\n          Config::SubscriptionFactory::RetryInitialDelayMs,\n          Config::SubscriptionFactory::RetryMaxDelayMs, random),\n      /*target_xds_authority_=*/\"\",\n      /*eds_resources_cache_=*/nullptr, // EDS cache is only used for ADS.\n      /*skip_subsequent_node_=*/api_config_source.set_node_on_first_message_only(),\n  };\n\n  return std::make_unique<Config::GrpcSubscriptionImpl>(\n      std::make_shared<GrpcMuxImpl>(grpc_mux_context), callbacks, resource_decoder, stats, type_url,\n      dispatcher, init_fetch_timeout,\n      /*is_aggregated*/ false, options);\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/grpc_subscription.h",
    "content": "#pragma once\n\n#include <chrono>\n#include <memory>\n\n#include \"envoy/common/random_generator.h\"\n#include \"envoy/config/core/v3/config_source.pb.h\"\n#include \"envoy/config/subscription.h\"\n#include \"envoy/event/dispatcher.h\"\n#include \"envoy/local_info/local_info.h\"\n#include \"envoy/stats/scope.h\"\n#include \"envoy/upstream/cluster_manager.h\"\n\n#include \"source/extensions/config_subscription/grpc/grpc_mux_context.h\"\n#include \"source/extensions/config_subscription/grpc/grpc_mux_impl.h\"\n#include \"source/extensions/config_subscription/grpc/grpc_subscription_impl.h\"\n\n#include \"absl/strings/string_view.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\n// GrpcMux wrapper to get access to control plane identifier\nclass GrpcMuxImpl : public Config::GrpcMuxImpl {\npublic:\n  GrpcMuxImpl(Config::GrpcMuxContext& grpc_mux_context) : Config::GrpcMuxImpl(grpc_mux_context) {}\n\n  ~GrpcMuxImpl() override = default;\n\n  void onStreamEstablished() override {\n    new_stream_ = true;\n    Config::GrpcMuxImpl::onStreamEstablished();\n  }\n\n  // isNewStream returns true for the first call after a new stream has been established\n  bool isNewStream() {\n    bool new_stream = new_stream_;\n    new_stream_ = false;\n    return new_stream;\n  }\n\nprivate:\n  bool new_stream_ = true;\n};\n\nstd::unique_ptr<Config::GrpcSubscriptionImpl>\nsubscribe(const absl::string_view type_url,\n          const envoy::config::core::v3::ConfigSource& npds_config,\n          const LocalInfo::LocalInfo& local_info, Upstream::ClusterManager& cm,\n          Event::Dispatcher& dispatcher, Random::RandomGenerator& random, Stats::Scope& scope,\n          Config::SubscriptionCallbacks& callbacks,\n          Config::OpaqueResourceDecoderSharedPtr resource_decoder,\n          std::chrono::milliseconds init_fetch_timeout = std::chrono::milliseconds(0));\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/health_check_sink.cc",
    "content": "#include \"cilium/health_check_sink.h\"\n\n#include <map>\n#include <memory>\n#include <string>\n\n#include \"envoy/common/time.h\"\n#include \"envoy/data/core/v3/health_check_event.pb.h\"\n#include \"envoy/registry/registry.h\"\n#include \"envoy/server/health_checker_config.h\"\n#include \"envoy/upstream/health_check_event_sink.h\"\n\n#include \"source/common/common/lock_guard.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/thread.h\"\n#include \"source/common/protobuf/protobuf.h\" // IWYU pragma: keep\n#include \"source/common/protobuf/utility.h\"\n\n#include \"cilium/api/health_check_sink.pb.h\"\n#include \"cilium/uds_client.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nThread::MutexBasicLockable HealthCheckEventPipeSink::udss_mutex;\nstd::map<std::string, std::weak_ptr<UDSClient>> HealthCheckEventPipeSink::udss;\n\nHealthCheckEventPipeSink::HealthCheckEventPipeSink(const cilium::HealthCheckEventPipeSink& config,\n                                                   TimeSource& time_source)\n    : uds_client_(nullptr) {\n  auto path = config.path();\n  Thread::LockGuard guard(udss_mutex);\n  auto it = udss.find(path);\n  if (it != udss.end()) {\n    uds_client_ = it->second.lock();\n    if (!uds_client_) {\n      // expired, remove\n      udss.erase(path);\n    }\n  }\n  if (!uds_client_) {\n    // Not found, allocate and store as a weak_ptr\n    uds_client_ = std::make_shared<UDSClient>(path, time_source);\n    udss.emplace(path, uds_client_);\n  }\n}\n\nvoid HealthCheckEventPipeSink::log(envoy::data::core::v3::HealthCheckEvent event) {\n  if (!uds_client_) {\n    ENVOY_LOG_MISC(warn, \"HealthCheckEventPipeSink: no connection, skipping event: {}\",\n                   event.DebugString());\n    return;\n  }\n  std::string msg;\n  event.SerializeToString(&msg);\n  uds_client_->log(msg);\n};\n\nUpstream::HealthCheckEventSinkPtr HealthCheckEventPipeSinkFactory::createHealthCheckEventSink(\n    const Protobuf::Any& config, Server::Configuration::HealthCheckerFactoryContext& context) {\n  const auto& validator_config =\n      Envoy::MessageUtil::anyConvertAndValidate<cilium::HealthCheckEventPipeSink>(\n          config, context.messageValidationVisitor());\n  Upstream::HealthCheckEventSinkPtr uds;\n  uds.reset(\n      new HealthCheckEventPipeSink(validator_config, context.serverFactoryContext().timeSource()));\n  return uds;\n}\n\nREGISTER_FACTORY(HealthCheckEventPipeSinkFactory, Upstream::HealthCheckEventSinkFactory);\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/health_check_sink.h",
    "content": "#pragma once\n\n#include <map>\n#include <memory>\n#include <string>\n\n#include \"envoy/common/time.h\"\n#include \"envoy/data/core/v3/health_check_event.pb.h\"\n#include \"envoy/server/health_checker_config.h\"\n#include \"envoy/upstream/health_check_event_sink.h\"\n\n#include \"source/common/common/thread.h\"\n#include \"source/common/protobuf/protobuf.h\"\n\n#include \"absl/base/thread_annotations.h\"\n#include \"cilium/api/health_check_sink.pb.h\"\n#include \"cilium/api/health_check_sink.pb.validate.h\" // IWYU pragma: keep\n#include \"cilium/uds_client.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nclass HealthCheckEventPipeSinkFactory;\n\nclass HealthCheckEventPipeSink : public Upstream::HealthCheckEventSink {\npublic:\n  void log(envoy::data::core::v3::HealthCheckEvent event) override;\n\nprotected:\n  friend class HealthCheckEventPipeSinkFactory;\n  friend class HealthCheckEventPipeSink_logTest_Test;\n  explicit HealthCheckEventPipeSink(const cilium::HealthCheckEventPipeSink& config,\n                                    TimeSource& time_source);\n\nprivate:\n  static Thread::MutexBasicLockable udss_mutex;\n  static std::map<std::string, std::weak_ptr<UDSClient>> udss ABSL_GUARDED_BY(udss_mutex);\n\n  std::shared_ptr<UDSClient> uds_client_;\n};\n\nclass HealthCheckEventPipeSinkFactory : public Upstream::HealthCheckEventSinkFactory {\npublic:\n  HealthCheckEventPipeSinkFactory() = default;\n\n  Upstream::HealthCheckEventSinkPtr\n  createHealthCheckEventSink(const Protobuf::Any& config,\n                             Server::Configuration::HealthCheckerFactoryContext& context) override;\n\n  std::string name() const override { return \"cilium.health_check.event_sink.pipe\"; }\n\n  ProtobufTypes::MessagePtr createEmptyConfigProto() override {\n    return ProtobufTypes::MessagePtr{new cilium::HealthCheckEventPipeSink()};\n  }\n};\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/host_map.cc",
    "content": "#include \"cilium/host_map.h\"\n\n#include <arpa/inet.h>\n#include <fmt/format.h>\n#include <sys/socket.h>\n\n#include <cstdint>\n#include <cstring>\n#include <memory>\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/common/exception.h\"\n#include \"envoy/config/core/v3/config_source.pb.h\"\n#include \"envoy/config/subscription.h\"\n#include \"envoy/event/dispatcher.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/stats/scope.h\"\n#include \"envoy/stats/stats_macros.h\"\n#include \"envoy/thread_local/thread_local.h\"\n#include \"envoy/thread_local/thread_local_object.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/macros.h\"\n\n#include \"absl/numeric/int128.h\"\n#include \"absl/status/status.h\"\n#include \"absl/strings/str_cat.h\"\n#include \"absl/strings/string_view.h\"\n#include \"cilium/api/nphds.pb.h\"\n#include \"cilium/grpc_subscription.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nnamespace {\n\nstatic constexpr absl::string_view NetworkPolicyHostsTypeUrl =\n    \"type.googleapis.com/cilium.NetworkPolicyHosts\";\n\ntemplate <typename T>\nunsigned int checkPrefix(T addr, bool have_prefix, unsigned int plen, absl::string_view host) {\n  const unsigned int plen_max = sizeof(T) * 8;\n  if (!have_prefix) {\n    return plen_max;\n  }\n  if (plen > plen_max) {\n    throw EnvoyException(fmt::format(\"NetworkPolicyHosts: Invalid prefix length in \\'{}\\'\", host));\n  }\n  // Check for 1-bits after the prefix\n  if ((plen == 0 && addr) || (plen > 0 && addr & ntoh((T(1) << (plen_max - plen)) - 1))) {\n    throw EnvoyException(fmt::format(\"NetworkPolicyHosts: Non-prefix bits set in \\'{}\\'\", host));\n  }\n  return plen;\n}\n\n} // namespace\n\nstruct ThreadLocalHostMapInitializer : public PolicyHostMap::ThreadLocalHostMap {\nprotected:\n  friend class PolicyHostMap; // PolicyHostMap can insert();\n\n  // find the map of the given prefix length, insert in the decreasing order if\n  // it does not exist\n  template <typename M>\n  M& getMap(std::vector<std::pair<unsigned int, M>>& maps, unsigned int plen) {\n    auto it = maps.begin();\n    for (; it != maps.end(); it++) {\n      if (it->first > plen) {\n        ENVOY_LOG(trace, \"Skipping map for prefix length {} while looking for {}\", it->first, plen);\n        continue; // check the next one\n      }\n      if (it->first == plen) {\n        ENVOY_LOG(trace, \"Found existing map for prefix length {}\", plen);\n        return it->second;\n      }\n      // Current pair has smaller prefix, insert before it to maintain order\n      ENVOY_LOG(trace, \"Inserting map for prefix length {} before prefix length {}\", plen,\n                it->first);\n      break;\n    }\n    // not found, insert before the position 'it'\n    ENVOY_LOG(trace, \"Inserting map for prefix length {}\", plen);\n    return maps.emplace(it, std::make_pair(plen, M{}))->second;\n  }\n\n  bool insert(uint32_t addr, unsigned int plen, uint64_t policy) {\n    auto pair = getMap(ipv4_to_policy_, plen).emplace(std::make_pair(addr, policy));\n    return pair.second;\n  }\n\n  bool insert(absl::uint128 addr, unsigned int plen, uint64_t policy) {\n    auto pair = getMap(ipv6_to_policy_, plen).emplace(std::make_pair(addr, policy));\n    return pair.second;\n  }\n\n  void insert(const cilium::NetworkPolicyHosts& proto) {\n    uint64_t policy = proto.policy();\n    const auto& hosts = proto.host_addresses();\n    std::string buf;\n\n    for (const auto& host : hosts) {\n      const char* addr = host.c_str();\n      unsigned int plen = 0;\n\n      ENVOY_LOG(trace, \"NetworkPolicyHosts: Inserting CIDR->ID mapping {}->{}...\", host, policy);\n\n      // Find the prefix length if any\n      const char* slash = strchr(addr, '/');\n      bool have_prefix = (slash != nullptr);\n      if (have_prefix) {\n        const char* pstr = slash + 1;\n        // Must start with a digit and have nothing after a zero.\n        if (*pstr < '0' || *pstr > '9' || (*pstr == '0' && *(pstr + 1) != '\\0')) {\n          throw EnvoyException(\n              fmt::format(\"NetworkPolicyHosts: Invalid prefix length in \\'{}\\'\", host));\n        }\n        // Convert to base 10 integer as long as there are digits and plen is\n        // not too large. If plen is already 13, next digit will make it at\n        // least 130, which is too much.\n        while (*pstr >= '0' && *pstr <= '9' && plen < 13) {\n          plen = plen * 10 + (*pstr++ - '0');\n        }\n        if (*pstr != '\\0') {\n          throw EnvoyException(\n              fmt::format(\"NetworkPolicyHosts: Invalid prefix length in \\'{}\\'\", host));\n        }\n        // Copy the address without the prefix\n        buf.assign(addr, slash);\n        addr = buf.c_str();\n      }\n\n      uint32_t addr4;\n      int rc = inet_pton(AF_INET, addr, &addr4);\n      if (rc == 1) {\n        plen = checkPrefix(addr4, have_prefix, plen, host);\n        if (!insert(addr4, plen, policy)) {\n          uint64_t existing_policy = resolve(addr4);\n          throw EnvoyException(fmt::format(\"NetworkPolicyHosts: Duplicate host entry \\'{}\\' for \"\n                                           \"policy {}, already mapped to {}\",\n                                           host, policy, existing_policy));\n        }\n        continue;\n      }\n      absl::uint128 addr6;\n      rc = inet_pton(AF_INET6, addr, &addr6);\n      if (rc == 1) {\n        plen = checkPrefix(addr6, have_prefix, plen, host);\n        if (!insert(addr6, plen, policy)) {\n          uint64_t existing_policy = resolve(addr6);\n          throw EnvoyException(fmt::format(\"NetworkPolicyHosts: Duplicate host entry \\'{}\\' for \"\n                                           \"policy {}, already mapped to {}\",\n                                           host, policy, existing_policy));\n        }\n        continue;\n      }\n      throw EnvoyException(\n          fmt::format(\"NetworkPolicyHosts: Invalid host entry \\'{}\\' for policy {}\", host, policy));\n    }\n  }\n};\n\nuint64_t PolicyHostMap::instance_id_ = 0;\n\n// This is used directly for testing with a file-based subscription\nPolicyHostMap::PolicyHostMap(ThreadLocal::SlotAllocator& tls, Stats::Scope& scope)\n    : tls_(tls.allocateSlot()),\n      name_(absl::StrCat(\"cilium.hostmap.\", fmt::format(\"{}\", instance_id_ + 1), \".\")),\n      scope_(scope.createScope(name_)), stats_scope_(scope.createScope(\"cilium.hostmap.\")),\n      stats_({CILIUM_POLICY_HOSTS_STATS(POOL_COUNTER(*stats_scope_))}) {\n  instance_id_++;\n  name_ = \"cilium.hostmap.\" + fmt::format(\"{}\", instance_id_) + \".\";\n  ENVOY_LOG(debug, \"PolicyHostMap({}) created.\", name_);\n\n  auto empty_map = std::make_shared<ThreadLocalHostMapInitializer>();\n  tls_->set([empty_map](Event::Dispatcher&) -> ThreadLocal::ThreadLocalObjectSharedPtr {\n    return empty_map;\n  });\n}\n\n// This is used in production\nPolicyHostMap::PolicyHostMap(Server::Configuration::CommonFactoryContext& context)\n    : tls_(context.threadLocal().allocateSlot()),\n      name_(absl::StrCat(\"cilium.hostmap.\", fmt::format(\"{}\", instance_id_ + 1), \".\")),\n      scope_(context.serverScope().createScope(name_)),\n      stats_scope_(context.serverScope().createScope(\"cilium.hostmap.\")),\n      stats_({CILIUM_POLICY_HOSTS_STATS(POOL_COUNTER(*stats_scope_))}) {\n  instance_id_++;\n  ENVOY_LOG(debug, \"PolicyHostMap({}) created.\", name_);\n\n  auto empty_map = std::make_shared<ThreadLocalHostMapInitializer>();\n  tls_->set([empty_map](Event::Dispatcher&) -> ThreadLocal::ThreadLocalObjectSharedPtr {\n    return empty_map;\n  });\n}\n\nvoid PolicyHostMap::startSubscription(Server::Configuration::CommonFactoryContext& context,\n                                      const envoy::config::core::v3::ConfigSource& npds_config) {\n  if (npds_config.config_source_specifier_case() == envoy::config::core::v3::ConfigSource::kAds) {\n    auto ads_mux = context.xdsManager().adsMux();\n    subscription_ = THROW_OR_RETURN_VALUE(\n        context.clusterManager().subscriptionFactory().subscriptionOverAdsGrpcMux(\n            ads_mux, npds_config, NetworkPolicyHostsTypeUrl, *scope_, *this,\n            std::make_shared<Cilium::PolicyHostDecoder>(), {}),\n        Config::SubscriptionPtr);\n  } else {\n    subscription_ = subscribe(NetworkPolicyHostsTypeUrl, npds_config, context.localInfo(),\n                              context.clusterManager(), context.mainThreadDispatcher(),\n                              context.api().randomGenerator(), *scope_, *this,\n                              std::make_shared<Cilium::PolicyHostDecoder>());\n  }\n\n  subscription_->start({});\n}\n\nabsl::Status\nPolicyHostMap::onConfigUpdate(const std::vector<Envoy::Config::DecodedResourceRef>& resources,\n                              const std::string& version_info) {\n  ENVOY_LOG(debug, \"PolicyHostMap::onConfigUpdate({}), {} resources, version: {}\", name_,\n            resources.size(), version_info);\n\n  auto newmap = std::make_shared<ThreadLocalHostMapInitializer>();\n\n  for (const auto& resource : resources) {\n    const auto& config = dynamic_cast<const cilium::NetworkPolicyHosts&>(resource.get().resource());\n    ENVOY_LOG(trace,\n              \"Received NetworkPolicyHosts for policy {} in onConfigUpdate() \"\n              \"version {}\",\n              config.policy(), version_info);\n    newmap->insert(config);\n  }\n\n  // Force 'this' to be not deleted for as long as the lambda stays\n  // alive. Note that generally capturing a shared pointer is\n  // dangerous as it may happen that there is a circular reference\n  // from 'this' to itself via the lambda capture, leading to 'this'\n  // never being released. It should happen in this case, though.\n  std::shared_ptr<PolicyHostMap> shared_this = shared_from_this();\n\n  // Assign the new map to all threads.\n  tls_->set([shared_this, newmap](Event::Dispatcher&) -> ThreadLocal::ThreadLocalObjectSharedPtr {\n    UNREFERENCED_PARAMETER(shared_this);\n    ENVOY_LOG(trace, \"PolicyHostMap: Assigning new map\");\n    return newmap;\n  });\n  logmaps(\"onConfigUpdate\");\n  stats_.update_success_.inc();\n  return absl::OkStatus();\n}\n\nvoid PolicyHostMap::onConfigUpdateFailed(Envoy::Config::ConfigUpdateFailureReason,\n                                         const EnvoyException*) {\n  // We need to allow server startup to continue, even if we have a bad\n  // config.\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/host_map.h",
    "content": "#pragma once\n\n#include <arpa/inet.h>\n#include <fmt/format.h>\n#include <netinet/in.h>\n#include <sys/socket.h>\n\n#include <cstddef>\n#include <cstdint>\n#include <functional>\n#include <memory>\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/common/exception.h\"\n#include \"envoy/config/core/v3/config_source.pb.h\"\n#include \"envoy/config/subscription.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/protobuf/message_validator.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/singleton/instance.h\"\n#include \"envoy/stats/scope.h\"\n#include \"envoy/stats/stats_macros.h\"\n#include \"envoy/thread_local/thread_local.h\"\n#include \"envoy/thread_local/thread_local_object.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/macros.h\"\n#include \"source/common/network/utility.h\"\n#include \"source/common/protobuf/message_validator_impl.h\"\n#include \"source/common/protobuf/protobuf.h\"\n#include \"source/common/protobuf/utility.h\"\n\n#include \"absl/container/flat_hash_map.h\"\n#include \"absl/numeric/int128.h\"\n#include \"absl/status/status.h\"\n#include \"cilium/api/nphds.pb.h\"\n#include \"cilium/api/nphds.pb.validate.h\" // IWYU pragma: keep\n#include \"cilium/policy_id.h\"\n\n// std::hash specialization for Abseil uint128, needed for unordered_map key.\nnamespace std {\ntemplate <> struct hash<absl::uint128> {\n  size_t operator()(const absl::uint128& x) const {\n    return hash<uint64_t>{}(absl::Uint128Low64(x)) ^\n           (hash<uint64_t>{}(absl::Uint128High64(x)) << 1);\n  }\n};\n} // namespace std\n\nnamespace Envoy {\nnamespace Cilium {\n\ntemplate <typename I> I ntoh(I);\ntemplate <> inline uint32_t ntoh(uint32_t addr) { return ntohl(addr); }\ntemplate <> inline absl::uint128 ntoh(absl::uint128 addr) {\n  return Network::Utility::Ip6ntohl(addr);\n}\ntemplate <typename I> I hton(I);\ntemplate <> inline uint32_t hton(uint32_t addr) { return htonl(addr); }\ntemplate <> inline absl::uint128 hton(absl::uint128 addr) {\n  return Network::Utility::Ip6htonl(addr);\n}\n\ntemplate <typename I> I masked(I addr, unsigned int plen) {\n  const unsigned int plen_max = sizeof(I) * 8;\n  return plen == 0 ? I(0) : addr & ~hton((I(1) << (plen_max - plen)) - 1);\n};\n\nclass PolicyHostDecoder : public Envoy::Config::OpaqueResourceDecoder {\npublic:\n  PolicyHostDecoder() : validation_visitor_(ProtobufMessage::getNullValidationVisitor()) {}\n\n  // Config::OpaqueResourceDecoder\n  ProtobufTypes::MessagePtr decodeResource(const Protobuf::Any& resource) override {\n    auto typed_message = std::make_unique<cilium::NetworkPolicyHosts>();\n    // If the Any is a synthetic empty message (e.g. because the resource field\n    // was not set in Resource, this might be empty, so we shouldn't decode.\n    if (!resource.type_url().empty()) {\n      MessageUtil::anyConvertAndValidate<cilium::NetworkPolicyHosts>(resource, *typed_message,\n                                                                     validation_visitor_);\n    }\n    return typed_message;\n  }\n\n  std::string resourceName(const Protobuf::Message& resource) override {\n    return fmt::format(\"{}\", dynamic_cast<const cilium::NetworkPolicyHosts&>(resource).policy());\n  }\n\nprivate:\n  ProtobufMessage::ValidationVisitor& validation_visitor_;\n};\n\n// clang-format off\n#define CILIUM_POLICY_HOSTS_STATS(COUNTER)\t\\\n  COUNTER(update_success)\n// clang-format on\n\n/**\n * Struct definition for all policy stats. @see stats_macros.h\n */\nstruct PolicyHostsStats {\n  CILIUM_POLICY_HOSTS_STATS(GENERATE_COUNTER_STRUCT)\n};\n\nclass PolicyHostMap : public Singleton::Instance,\n                      public Config::SubscriptionCallbacks,\n                      public std::enable_shared_from_this<PolicyHostMap>,\n                      public Logger::Loggable<Logger::Id::config> {\npublic:\n  PolicyHostMap(Server::Configuration::CommonFactoryContext& context);\n  PolicyHostMap(ThreadLocal::SlotAllocator& tls, Stats::Scope& scope);\n  ~PolicyHostMap() override {\n    ENVOY_LOG(debug, \"Cilium PolicyHostMap({}): PolicyHostMap is deleted NOW!\", name_);\n  }\n\n  void startSubscription(Server::Configuration::CommonFactoryContext& context,\n                         const envoy::config::core::v3::ConfigSource& npds_config);\n\n  // This is used for testing with a file-based subscription\n  void startSubscription(std::unique_ptr<Envoy::Config::Subscription>&& subscription) {\n    subscription_ = std::move(subscription);\n    subscription_->start({});\n  }\n\n  // A shared pointer to a immutable copy is held by each thread. Changes are\n  // done by creating a new version and assigning the new shared pointer to the\n  // thread local slot on each thread.\n  struct ThreadLocalHostMap : public ThreadLocal::ThreadLocalObject,\n                              public Logger::Loggable<Logger::Id::config> {\n  public:\n    void logmaps(const std::string& msg) const {\n      char buf[INET6_ADDRSTRLEN];\n      std::string ip4, ip6, prefix;\n      bool first = true;\n      for (const auto& mask : ipv4_to_policy_) {\n        std::string prefix = fmt::format(\"{}\", mask.first);\n        for (const auto& pair : mask.second) {\n          if (!first) {\n            ip4 += \", \";\n          }\n          first = false;\n          ip4 += fmt::format(\"{}/{}->{}\", inet_ntop(AF_INET, &pair.first, buf, sizeof(buf)), prefix,\n                             pair.second);\n        }\n      }\n      first = true;\n      for (const auto& mask : ipv6_to_policy_) {\n        std::string prefix = fmt::format(\"{}\", mask.first);\n        for (const auto& pair : mask.second) {\n          if (!first) {\n            ip6 += \", \";\n          }\n          first = false;\n          ip6 += fmt::format(\"{}/{}->{}\", inet_ntop(AF_INET6, &pair.first, buf, sizeof(buf)),\n                             prefix, pair.second);\n        }\n      }\n      ENVOY_LOG(debug, \"PolicyHostMap::{}: IPv4: [{}], IPv6: [{}]\", msg, ip4, ip6);\n    }\n\n    // Find the longest prefix match of the addr, return the matching policy id,\n    // or ID::WORLD if there is no match.\n    uint64_t resolve(uint32_t addr4) const {\n      for (const auto& pair : ipv4_to_policy_) {\n        auto it = pair.second.find(masked(addr4, pair.first));\n        if (it != pair.second.end()) {\n          return it->second;\n        }\n      }\n      return ID::UNKNOWN;\n    }\n\n    uint64_t resolve(absl::uint128 addr6) const {\n      for (const auto& pair : ipv6_to_policy_) {\n        auto it = pair.second.find(masked(addr6, pair.first));\n        if (it != pair.second.end()) {\n          return it->second;\n        }\n      }\n      return ID::UNKNOWN;\n    }\n\n    uint64_t resolve(const Network::Address::Ip* addr) const {\n      auto* ipv4 = addr->ipv4();\n      if (ipv4) {\n        return resolve(ipv4->address());\n      }\n      auto* ipv6 = addr->ipv6();\n      if (ipv6) {\n        return resolve(ipv6->address());\n      }\n      return ID::WORLD;\n    }\n\n  protected:\n    // Vectors of <prefix-len>, <address-map> pairs, ordered in the decreasing\n    // prefix length, where map keys are addresses of the given prefix length.\n    // Address bits outside of the prefix are zeroes.\n    std::vector<std::pair<unsigned int, absl::flat_hash_map<uint32_t, uint64_t>>> ipv4_to_policy_;\n    std::vector<std::pair<unsigned int, absl::flat_hash_map<absl::uint128, uint64_t>>>\n        ipv6_to_policy_;\n  };\n  using ThreadLocalHostMapSharedPtr = std::shared_ptr<ThreadLocalHostMap>;\n\n  const ThreadLocalHostMap* getHostMap() const {\n    return tls_->get().get() ? &tls_->getTyped<ThreadLocalHostMap>() : nullptr;\n  }\n\n  uint64_t resolve(const Network::Address::Ip* addr) const {\n    const ThreadLocalHostMap* hostmap = getHostMap();\n    return (hostmap != nullptr) ? hostmap->resolve(addr) : ID::UNKNOWN;\n  }\n\n  void logmaps(const std::string& msg) {\n    if (ENVOY_LOG_CHECK_LEVEL(debug)) {\n      auto tlsmap = getHostMap();\n      if (tlsmap) {\n        tlsmap->logmaps(msg);\n      } else {\n        ENVOY_LOG(debug, \"PolicyHostMap::{}: Error getting thread local map\", msg);\n      }\n    }\n  }\n\n  // Config::SubscriptionCallbacks\n  absl::Status onConfigUpdate(const std::vector<Envoy::Config::DecodedResourceRef>& resources,\n                              const std::string& version_info) override;\n  absl::Status onConfigUpdate(const std::vector<Envoy::Config::DecodedResourceRef>& added_resources,\n                              const Protobuf::RepeatedPtrField<std::string>& removed_resources,\n                              const std::string& system_version_info) override {\n    // NOT IMPLEMENTED YET.\n    UNREFERENCED_PARAMETER(added_resources);\n    UNREFERENCED_PARAMETER(removed_resources);\n    UNREFERENCED_PARAMETER(system_version_info);\n    return absl::OkStatus();\n  }\n  void onConfigUpdateFailed(Envoy::Config::ConfigUpdateFailureReason,\n                            const EnvoyException* e) override;\n\nprivate:\n  ThreadLocal::SlotPtr tls_;\n  std::string name_;\n  Stats::ScopeSharedPtr scope_;\n  Stats::ScopeSharedPtr stats_scope_;\n  std::unique_ptr<Envoy::Config::Subscription> subscription_;\n  static uint64_t instance_id_;\n  PolicyHostsStats stats_;\n};\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/ipcache.cc",
    "content": "#include \"ipcache.h\"\n\n#include <cerrno> // IWYU pragma: keep\n#include <chrono>\n#include <cstring>\n#include <memory>\n#include <string>\n\n#include \"envoy/network/address.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/singleton/manager.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/utility.h\"\n\n#include \"absl/numeric/int128.h\"\n#include \"absl/synchronization/mutex.h\"\n#include \"cilium/bpf.h\"\n#include \"linux/bpf.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nbool operator==(const IpCacheKey& a, const IpCacheKey& b) { return memcmp(&a, &b, sizeof(a)) == 0; }\n\ntemplate <typename H> H AbslHashValue(H state, const IpCacheKey& key) {\n  // Combine the hash of each member into the state\n  H h = H::combine_contiguous(std::move(state), reinterpret_cast<const char*>(&key), sizeof(key));\n  return h;\n}\n\nSINGLETON_MANAGER_REGISTRATION(cilium_ipcache);\n\nIpCacheSharedPtr IpCache::newIpCache(Server::Configuration::ServerFactoryContext& context,\n                                     const std::string& path,\n                                     std::chrono::milliseconds cache_gc_interval) {\n  auto ipcache = context.singletonManager().getTyped<Cilium::IpCache>(\n      SINGLETON_MANAGER_REGISTERED_NAME(cilium_ipcache), [&path, &context, &cache_gc_interval] {\n        auto ipcache = std::make_shared<Cilium::IpCache>(context, path, cache_gc_interval);\n        if (!ipcache->open()) {\n          ipcache.reset();\n        }\n        return ipcache;\n      });\n\n  // Override the current path even on an existing singleton\n  if (ipcache) {\n    ipcache->setConfig(path, cache_gc_interval);\n  }\n  return ipcache;\n}\n\nIpCacheSharedPtr IpCache::getIpCache(Server::Configuration::ServerFactoryContext& context) {\n  return context.singletonManager().getTyped<Cilium::IpCache>(\n      SINGLETON_MANAGER_REGISTERED_NAME(cilium_ipcache));\n}\n\nIpCache::IpCache(Server::Configuration::ServerFactoryContext& context, const std::string& path,\n                 std::chrono::milliseconds cache_gc_interval)\n    : Bpf(BPF_MAP_TYPE_LPM_TRIE, sizeof(struct IpCacheKey), sizeof(SecLabelType),\n          sizeof(struct RemoteEndpointInfo)),\n      dispatcher_(context.mainThreadDispatcher()),\n      cache_gc_timer_(dispatcher_.createTimer([this]() { cacheGc(); })),\n      time_source_(context.timeSource()), cache_gc_interval_(cache_gc_interval), path_(path) {\n  // Timer for cache GC\n  if (cache_gc_interval_ != std::chrono::milliseconds(0)) {\n    cache_gc_timer_->enableTimer(cache_gc_interval_);\n  }\n}\n\nvoid IpCache::cacheGc() {\n  {\n    absl::WriterMutexLock lock(&mutex_);\n    for (auto it = cache_.begin(); it != cache_.end(); it++) {\n      auto age = time_source_.monotonicTime() - it->second.time_stamp;\n      if (age >= std::chrono::milliseconds(1)) {\n        ENVOY_LOG(trace, \"cilium.ipcache: local cache GC deleting old entry {}:{}\",\n                  it->first.asString(), it->second.sec_label);\n        cache_.erase(it);\n      }\n    }\n    cache_gc_timer_->enableTimer(cache_gc_interval_);\n  }\n}\n\nvoid IpCache::setConfig(const std::string& path, std::chrono::milliseconds cache_gc_interval) {\n  absl::WriterMutexLock lock(&mutex_);\n  // update GC interval?\n  if (cache_gc_interval != cache_gc_interval_) {\n    cache_gc_timer_->disableTimer();\n    cache_gc_interval_ = cache_gc_interval;\n    if (cache_gc_interval_ != std::chrono::milliseconds(0)) {\n      cache_gc_timer_->enableTimer(cache_gc_interval_);\n    }\n  }\n  // re-open on path change\n  if (path != path_) {\n    path_ = path;\n    openLocked();\n  }\n}\n\nbool IpCache::open() {\n  absl::WriterMutexLock lock(&mutex_);\n  return openLocked();\n}\n\nbool IpCache::openLocked() {\n  if (Bpf::open(path_)) {\n    ENVOY_LOG(debug, \"cilium.ipcache: Opened ipcache at {}\", path_);\n    return true;\n  }\n  ENVOY_LOG(warn, \"cilium.ipcache: Cannot open ipcache at {}\", path_);\n  return false;\n}\n\nuint32_t IpCache::resolve(const Network::Address::Ip* ip, std::chrono::microseconds cache_ttl) {\n  struct IpCacheKey key {};\n  struct RemoteEndpointInfo value {};\n\n  if (ip->version() == Network::Address::IpVersion::v4) {\n    key.lpm_key = {32 + 32, {}};\n    key.family = ENDPOINT_KEY_IPV4;\n    key.ip4 = ip->ipv4()->address();\n  } else {\n    key.lpm_key = {32 + 128, {}};\n    key.family = ENDPOINT_KEY_IPV6;\n    absl::uint128 ip6 = ip->ipv6()->address();\n    memcpy(&key.ip6, &ip6, sizeof key.ip6); // NOLINT(safe-memcpy)\n  }\n\n  bool ok;\n  bool use_cache = cache_ttl > std::chrono::microseconds(0);\n  if (use_cache) {\n    // Read lock prevents ipcache lookups while ipcache is being reopened.\n    absl::ReaderMutexLock lock(&mutex_);\n\n    // local cache lookup\n    const auto it = cache_.find(key);\n    if (it != cache_.cend()) {\n      auto age = time_source_.monotonicTime() - it->second.time_stamp;\n      if (age < cache_ttl) {\n        // use cached value\n        ENVOY_LOG(trace, \"cilium.ipcache: {} has cached ID {}\", ip->addressAsString(),\n                  it->second.sec_label);\n        return it->second.sec_label;\n      }\n    }\n  }\n\n  ENVOY_LOG(trace, \"cilium.ipcache: Looking up key: {}\", key.asString());\n  ok = lookup(&key, &value);\n\n  if (ok) {\n    ENVOY_LOG(debug, \"cilium.ipcache: {} has ID {}\", ip->addressAsString(), value.sec_label);\n\n    // cache result\n    if (use_cache) {\n      absl::WriterMutexLock lock(&mutex_);\n      cache_.insert_or_assign(key,\n                              CachedEndpointInfo{value.sec_label, time_source_.monotonicTime()});\n    }\n    return value.sec_label;\n  }\n  ENVOY_LOG(info, \"cilium.ipcache: bpf map lookup failed: {}\", Envoy::errorDetails(errno));\n  return 0;\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/ipcache.h",
    "content": "#pragma once\n\n#include <netinet/in.h>\n\n#include <chrono>\n#include <cstdint>\n#include <memory>\n#include <string>\n\n#include \"envoy/common/platform.h\"\n#include \"envoy/common/time.h\"\n#include \"envoy/event/timer.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/singleton/instance.h\"\n\n#include \"absl/base/thread_annotations.h\"\n#include \"absl/container/flat_hash_map.h\"\n#include \"absl/synchronization/mutex.h\"\n#include \"cilium/bpf.h\"\n#include \"linux/bpf.h\"\n#include \"linux/type_mapper.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\n// These must be kept in sync with Cilium source code, should refactor\n// them to a separate include file we can include here instead of\n// copying them!\n\nusing __be32 = uint32_t; // Beware of the byte order!\nusing __u64 = uint64_t;\nusing __u32 = uint32_t;\nusing __u16 = uint16_t;\nusing __u8 = uint8_t;\n\n#define ENDPOINT_KEY_IPV4 1\n#define ENDPOINT_KEY_IPV6 2\n\nPACKED_STRUCT(struct IpCacheKey {\n  std::string asString() const {\n    if (family == ENDPOINT_KEY_IPV4) {\n      auto ip = ntohl(ip4);\n      return fmt::format(\"{}.{}.{}.{}/{}\", uint8_t(ip >> 24), uint8_t(ip >> 16), uint8_t(ip >> 8),\n                         uint8_t(ip), lpm_key.prefixlen - 32);\n    } else if (family == ENDPOINT_KEY_IPV6) {\n      return fmt::format(\"{:x}:{:x}:{:x}:{:x}/{}\", ntohl(ip6[0]), ntohl(ip6[1]), ntohl(ip6[2]),\n                         ntohl(ip6[3]), lpm_key.prefixlen - 32);\n    }\n    return \"invalid ipcache key\";\n  }\n\n  struct bpf_lpm_trie_key lpm_key;\n  __u16 pad1;\n  __u8 pad2;\n  __u8 family;\n  union {\n    struct {\n      __u32 ip4;\n      __u32 pad4;\n      __u32 pad5;\n      __u32 pad6;\n    };\n    __u32 ip6[4];\n  };\n});\n\nbool operator==(const IpCacheKey& a, const IpCacheKey& b);\n\ntemplate <typename H> H AbslHashValue(H state, const IpCacheKey& key);\n\nusing SecLabelType = __u32;\n\nstruct RemoteEndpointInfo {\n  SecLabelType sec_label;\n  char buf[60]; // Enough space for all fields after the 'sec_label'\n};\n\nstruct CachedEndpointInfo {\n  SecLabelType sec_label;\n  MonotonicTime time_stamp;\n};\n\nusing IpCacheMap = absl::flat_hash_map<struct IpCacheKey, struct CachedEndpointInfo>;\n\nclass IpCache : public Singleton::Instance, public Bpf {\npublic:\n  static std::shared_ptr<IpCache> newIpCache(Server::Configuration::ServerFactoryContext& context,\n                                             const std::string& path,\n                                             std::chrono::milliseconds cache_gc_interval);\n  static std::shared_ptr<IpCache> getIpCache(Server::Configuration::ServerFactoryContext& context);\n\n  IpCache(Server::Configuration::ServerFactoryContext& context, const std::string& path,\n          std::chrono::milliseconds cache_gc_interval);\n\n  void setConfig(const std::string& path, std::chrono::milliseconds cache_gc_interval)\n      ABSL_LOCKS_EXCLUDED(mutex_);\n  bool open() ABSL_LOCKS_EXCLUDED(mutex_);\n\n  uint32_t resolve(const Network::Address::Ip* ip, std::chrono::microseconds cache_ttl)\n      ABSL_LOCKS_EXCLUDED(mutex_);\n\nprivate:\n  bool openLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mutex_);\n  void cacheGc() ABSL_LOCKS_EXCLUDED(mutex_);\n\n  Event::Dispatcher& dispatcher_;\n  Event::TimerPtr cache_gc_timer_;\n  TimeSource& time_source_;\n\n  absl::Mutex mutex_;\n  std::chrono::milliseconds cache_gc_interval_ ABSL_GUARDED_BY(mutex_);\n  std::string path_ ABSL_GUARDED_BY(mutex_);\n  IpCacheMap cache_ ABSL_GUARDED_BY(mutex_);\n};\n\nusing IpCacheSharedPtr = std::shared_ptr<IpCache>;\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/l7policy.cc",
    "content": "#include \"cilium/l7policy.h\"\n\n#include <fmt/format.h>\n\n#include <cstddef>\n#include <cstdint>\n#include <memory>\n#include <string>\n#include <utility>\n\n#include \"envoy/common/time.h\"\n#include \"envoy/http/codes.h\"\n#include \"envoy/http/filter.h\"\n#include \"envoy/http/filter_factory.h\"\n#include \"envoy/http/header_map.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/socket.h\"\n#include \"envoy/registry/registry.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/server/filter_config.h\"\n#include \"envoy/stats/scope.h\"\n#include \"envoy/stats/stats_macros.h\"\n#include \"envoy/stream_info/filter_state.h\"\n#include \"envoy/stream_info/stream_info.h\"\n\n#include \"source/common/common/assert.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/utility.h\"\n#include \"source/common/http/header_utility.h\"\n#include \"source/extensions/filters/http/common/factory_base.h\"\n\n#include \"absl/status/statusor.h\"\n#include \"absl/strings/string_view.h\"\n#include \"absl/types/optional.h\"\n#include \"cilium/accesslog.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"cilium/api/l7policy.pb.h\"\n#include \"cilium/api/l7policy.pb.validate.h\" // IWYU pragma: keep\n#include \"cilium/filter_state_cilium_policy.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nclass CiliumAccessFilterFactory\n    : public Extensions::HttpFilters::Common::DualFactoryBase<::cilium::L7Policy> {\npublic:\n  CiliumAccessFilterFactory() : DualFactoryBase(\"cilium.l7policy\") {}\n\nprivate:\n  absl::StatusOr<Http::FilterFactoryCb>\n  createFilterFactoryFromProtoTyped(const ::cilium::L7Policy& proto_config, const std::string&,\n                                    DualInfo dual_info,\n                                    Server::Configuration::ServerFactoryContext& context) override {\n    auto config = std::make_shared<Cilium::Config>(proto_config, context.timeSource(),\n                                                   dual_info.scope, dual_info.is_upstream);\n    return [config](Http::FilterChainFactoryCallbacks& callbacks) mutable -> void {\n      callbacks.addStreamFilter(std::make_shared<Cilium::AccessFilter>(config));\n    };\n  }\n};\n\nusing UpstreamCiliumAccessFilterFactory = CiliumAccessFilterFactory;\n\n/**\n * Static registration for this filter. @see RegisterFactory.\n */\nREGISTER_FACTORY(CiliumAccessFilterFactory, Server::Configuration::NamedHttpFilterConfigFactory);\nREGISTER_FACTORY(UpstreamCiliumAccessFilterFactory,\n                 Server::Configuration::UpstreamHttpFilterConfigFactory);\n\nConfig::Config(const std::string& access_log_path, const std::string& denied_403_body,\n               TimeSource& time_source, Stats::Scope& scope, bool is_upstream)\n    : time_source_(time_source), stats_{ALL_CILIUM_STATS(POOL_COUNTER_PREFIX(scope, \"cilium\"))},\n      denied_403_body_(denied_403_body), is_upstream_(is_upstream), access_log_(nullptr) {\n  if (!access_log_path.empty()) {\n    access_log_ = AccessLog::open(access_log_path, time_source);\n  }\n  if (denied_403_body_.empty()) {\n    denied_403_body_ = \"Access denied\";\n  }\n  size_t len = denied_403_body_.length();\n  if (len < 2 || denied_403_body_[len - 2] != '\\r' || denied_403_body_[len - 1] != '\\n') {\n    denied_403_body_.append(\"\\r\\n\");\n  }\n}\n\nConfig::Config(const ::cilium::L7Policy& config, TimeSource& time_source, Stats::Scope& scope,\n               bool is_upstream)\n    : Config(config.access_log_path(), config.denied_403_body(), time_source, scope, is_upstream) {}\n\nvoid Config::log(AccessLog::Entry& entry, ::cilium::EntryType type) {\n  if (access_log_) {\n    access_log_->log(entry, type);\n  }\n}\n\nvoid AccessFilter::onDestroy() {}\n\nvoid AccessFilter::sendLocalError(absl::string_view details) {\n  ENVOY_LOG(warn, details);\n  callbacks_->sendLocalReply(Http::Code::InternalServerError, \"\", nullptr, absl::nullopt,\n                             StringUtil::replaceAllEmptySpace(details));\n}\n\nvoid AccessFilter::setDecoderFilterCallbacks(Http::StreamDecoderFilterCallbacks& callbacks) {\n  callbacks_ = &callbacks;\n\n  // Create log entry if not already in filter state\n  log_entry_ =\n      callbacks_->streamInfo().filterState()->getDataMutable<AccessLog::Entry>(AccessLogKey);\n  if (log_entry_ == nullptr) {\n    auto log_entry = std::make_unique<AccessLog::Entry>();\n    log_entry_ = log_entry.get();\n    callbacks_->streamInfo().filterState()->setData(AccessLogKey, std::move(log_entry),\n                                                    StreamInfo::FilterState::StateType::Mutable,\n                                                    StreamInfo::FilterState::LifeSpan::Request);\n  }\n\n  if (config_->is_upstream_) {\n    callbacks_->upstreamCallbacks()->addUpstreamCallbacks(*this);\n  }\n}\n\nvoid AccessFilter::onUpstreamConnectionEstablished() {\n  if (latched_end_stream_.has_value()) {\n    const bool end_stream = *latched_end_stream_;\n    latched_end_stream_.reset();\n    ENVOY_CONN_LOG(debug,\n                   \"cilium.l7policy: RESUMING after upstream connection has been established\",\n                   callbacks_->connection().ref());\n    Http::FilterHeadersStatus status = decodeHeaders(*latched_headers_, end_stream);\n    if (status == Http::FilterHeadersStatus::Continue) {\n      callbacks_->continueDecoding();\n    }\n  }\n}\n\nHttp::FilterHeadersStatus AccessFilter::decodeHeaders(Http::RequestHeaderMap& headers,\n                                                      bool end_stream) {\n  StreamInfo::StreamInfo& stream_info = callbacks_->streamInfo();\n\n  // Skip enforcement or logging on shadows and ingress direction\n  if (stream_info.isShadow()) {\n    ENVOY_LOG(debug, \"cilium.l7policy: upstream decodeHeaders() - skipping - shadow connection\");\n    return Http::FilterHeadersStatus::Continue;\n  }\n\n  const auto& conn = callbacks_->connection();\n\n  if (!conn) {\n    if (config_->is_upstream_) {\n      // Skip enforcement on upstream connections originating from Envoy without a relation\n      // to a downstream connection\n      ENVOY_LOG(debug,\n                \"cilium.l7policy: upstream decodeHeaders() - skipping - no downstream connection\");\n      return Http::FilterHeadersStatus::Continue;\n    }\n\n    sendLocalError(\"cilium.l7policy: downstream decodeHeaders() - no connection\");\n    return Http::FilterHeadersStatus::StopIteration;\n  }\n\n  if (log_entry_ == nullptr) {\n    sendLocalError(\"cilium.l7policy: No log entry\");\n    return Http::FilterHeadersStatus::StopIteration;\n  }\n\n  const auto policy_fs =\n      conn->streamInfo().filterState().getDataReadOnly<Cilium::CiliumPolicyFilterState>(\n          Cilium::CiliumPolicyFilterState::key());\n\n  if (!policy_fs) {\n    sendLocalError(\"cilium.l7policy: Cilium policy filter state not found\");\n    return Http::FilterHeadersStatus::StopIteration;\n  }\n\n  ENVOY_CONN_LOG(debug, \"cilium.l7policy: {} decodeHeaders()\", conn.ref(),\n                 config_->is_upstream_ ? \"upstream\" : \"downstream\");\n\n  // Handle downstream case first\n  if (!config_->is_upstream_) {\n    const auto& dst_address = stream_info.downstreamAddressProvider().localAddress();\n    const auto dip = dst_address->ip();\n    // destination identity should be reported as 0 for an ingress policy\n    uint32_t destination_identity = policy_fs->ingress_ ? 0 : policy_fs->resolvePolicyId(dip);\n    uint16_t destination_port = dip->port();\n\n    // Initialize log entry in the beginning of downstream processing\n    log_entry_->initFromRequest(\n        policy_fs->pod_ip_, policy_fs->proxy_id_, policy_fs->ingress_, policy_fs->source_identity_,\n        callbacks_->streamInfo().downstreamAddressProvider().remoteAddress(), destination_identity,\n        dst_address, stream_info, headers);\n\n    // Enforce pod policy only for local pods without L7 LB\n    if (!policy_fs->policyUseUpstreamDestinationAddress() && !policy_fs->pod_ip_.empty()) {\n      bool allowed = policy_fs->enforcePodHTTPPolicy(conn.ref(), destination_identity,\n                                                     destination_port, headers, *log_entry_);\n\n      // Update the log entry with current headers, as the policy may have altered them.\n      log_entry_->updateFromRequest(destination_identity, dst_address, headers);\n\n      if (!allowed) {\n        config_->log(*log_entry_, ::cilium::EntryType::Denied);\n        callbacks_->sendLocalReply(Http::Code::Forbidden, config_->denied_403_body_, nullptr,\n                                   absl::nullopt, absl::string_view());\n        return Http::FilterHeadersStatus::StopIteration;\n      }\n\n      // Log as a forwarded request\n      config_->log(*log_entry_, ::cilium::EntryType::Request);\n    }\n\n  } else { // is_upstream_\n    // Skip enforcement for non L7LB (which is always egress).\n    // TODO: Drop and warn when Cilium Agent no longer mistakenly configures upstream enforcement or\n    // non-L7LB\n    if (!policy_fs->policyUseUpstreamDestinationAddress()) {\n      ENVOY_CONN_LOG(debug, \"cilium.l7policy: upstream enforcement configured for non L7 LB\",\n                     conn.ref());\n      return Http::FilterHeadersStatus::Continue;\n    }\n    if (policy_fs->ingress_) {\n      ENVOY_CONN_LOG(\n          debug, \"cilium.l7policy: upstream enforcement configured for ingress traffic direction\",\n          conn.ref());\n      return Http::FilterHeadersStatus::Continue;\n    }\n\n    // must have a policy configured\n    // This is safe as the upstream filter was introduced at Cilium 1.16 and\n    // bpf_metadata config has had 'enforce_policy_on_l7lb' set since Cilium 1.15.\n    if (policy_fs->pod_ip_.empty() && policy_fs->ingress_policy_name_.empty()) {\n      ENVOY_CONN_LOG(warn, \"cilium.network: no policy configured\", conn.ref());\n      return Http::FilterHeadersStatus::StopIteration;\n    }\n\n    // Pause upstream decoding until connection has been established\n    ASSERT(callbacks_->upstreamCallbacks());\n    if (!callbacks_->upstreamCallbacks()->upstream()) {\n      latched_headers_ = headers;\n      latched_end_stream_ = end_stream;\n      ENVOY_CONN_LOG(debug,\n                     \"cilium.l7policy: PAUSING until upstream connection has been established\",\n                     conn.ref());\n      return Http::FilterHeadersStatus::StopAllIterationAndWatermark;\n    }\n\n    const auto& dst_address = stream_info.upstreamInfo()->upstreamHost()->address();\n    if (nullptr == dst_address) {\n      sendLocalError(\"cilium.l7policy: No destination address\");\n      return Http::FilterHeadersStatus::StopIteration;\n    }\n    const auto dip = dst_address->ip();\n    if (!dip) {\n      sendLocalError(\n          fmt::format(\"cilium.l7policy: Non-IP destination address: {}\", dst_address->asString()));\n      return Http::FilterHeadersStatus::StopIteration;\n    }\n\n    uint32_t destination_identity = policy_fs->resolvePolicyId(dip);\n    uint16_t destination_port = dip->port();\n    bool allowed;\n\n    // Is there a pod egress policy?\n    if (!policy_fs->pod_ip_.empty()) {\n      allowed = policy_fs->enforcePodHTTPPolicy(conn.ref(), destination_identity, destination_port,\n                                                headers, *log_entry_);\n\n      // Update the log entry with current headers, as the policy may have altered them.\n      log_entry_->updateFromRequest(destination_identity, dst_address, headers);\n\n      if (!allowed) {\n        config_->log(*log_entry_, ::cilium::EntryType::Denied);\n        callbacks_->sendLocalReply(Http::Code::Forbidden, config_->denied_403_body_, nullptr,\n                                   absl::nullopt, absl::string_view());\n        return Http::FilterHeadersStatus::StopIteration;\n      }\n    }\n\n    // Is there an Ingress policy?\n    if (!policy_fs->ingress_policy_name_.empty()) {\n      allowed = policy_fs->enforceIngressHTTPPolicy(conn.ref(), destination_identity,\n                                                    destination_port, headers, *log_entry_);\n\n      // Update the log entry with current headers, as the policy may have altered them.\n      log_entry_->updateFromRequest(destination_identity, dst_address, headers);\n\n      if (!allowed) {\n        config_->log(*log_entry_, ::cilium::EntryType::Denied);\n        callbacks_->sendLocalReply(Http::Code::Forbidden, config_->denied_403_body_, nullptr,\n                                   absl::nullopt, absl::string_view());\n        return Http::FilterHeadersStatus::StopIteration;\n      }\n    }\n    // Log as a forwarded request\n    config_->log(*log_entry_, ::cilium::EntryType::Request);\n  }\n  return Http::FilterHeadersStatus::Continue;\n}\n\nvoid AccessFilter::onStreamComplete() {\n  // Request may have been left unlogged due to an error and/or missing local reply\n  if (log_entry_ && !log_entry_->request_logged_) {\n    config_->log(*log_entry_, ::cilium::EntryType::Request);\n  }\n}\n\nHttp::FilterHeadersStatus AccessFilter::encodeHeaders(Http::ResponseHeaderMap& headers, bool) {\n  const auto& stream_info = callbacks_->streamInfo();\n\n  // Skip enforcement or logging on shadows\n  if (stream_info.isShadow()) {\n    ENVOY_LOG(debug, \"cilium.l7policy: upstream encodeHeaders() - skipping - shadow connection\");\n    return Http::FilterHeadersStatus::Continue;\n  }\n\n  const auto& conn = callbacks_->connection();\n\n  if (!conn) {\n    if (config_->is_upstream_) {\n      // Skip enforcement on upstream connections originating from Envoy without a relation\n      // to a downstream connection\n      ENVOY_LOG(debug,\n                \"cilium.l7policy: upstream encodeHeaders() - skipping - no downstream connection\");\n      return Http::FilterHeadersStatus::Continue;\n    }\n\n    sendLocalError(\"cilium.l7policy: downstream encodeHeaders() - no connection\");\n    return Http::FilterHeadersStatus::StopIteration;\n  }\n\n  ENVOY_CONN_LOG(debug, \"cilium.l7policy: {} encodeHeaders()\", conn.ref(),\n                 config_->is_upstream_ ? \"upstream\" : \"downstream\");\n\n  // Nothing to do in the upstream filter\n  if (config_->is_upstream_) {\n    return Http::FilterHeadersStatus::Continue;\n  }\n\n  // check it \"connection: close\" header is present\n  if (stream_info.upstreamInfo().has_value() && stream_info.protocol().has_value() &&\n      Http::HeaderUtility::shouldCloseConnection(stream_info.protocol().value(), headers)) {\n    const auto& upstream_info = stream_info.upstreamInfo().ref();\n\n    // check if upstream and downstream connections have the same source and destination\n    // addresses, respectively (note: do not compare pointers!).\n    if (*upstream_info.upstreamRemoteAddress() ==\n            *stream_info.downstreamAddressProvider().localAddress() &&\n        *upstream_info.upstreamLocalAddress() ==\n            *stream_info.downstreamAddressProvider().remoteAddress()) {\n      ENVOY_CONN_LOG(debug,\n                     \"cilium.l7policy: Upstream connection with same 5-tuple closed, passing \"\n                     \"connection close to downstream response\",\n                     callbacks_->connection().ref());\n      callbacks_->streamInfo().setShouldDrainConnectionUponCompletion(true);\n    }\n  }\n\n  if (log_entry_ == nullptr) {\n    return Http::FilterHeadersStatus::Continue;\n  }\n\n  // Request may have been left unlogged due to an error or L3/4 deny\n  if (!log_entry_->request_logged_) {\n    // Default logging local errors as \"forwarded\".\n    // The response log will contain the locally generated HTTP error code.\n    auto log_type = ::cilium::EntryType::Request;\n\n    if (headers.Status()->value() == \"403\") {\n      // Log as a denied request.\n      log_type = ::cilium::EntryType::Denied;\n      config_->stats_.access_denied_.inc();\n    }\n    config_->log(*log_entry_, log_type);\n  }\n\n  // Log the response\n  log_entry_->updateFromResponse(headers, config_->time_source_);\n  config_->log(*log_entry_, ::cilium::EntryType::Response);\n  return Http::FilterHeadersStatus::Continue;\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/l7policy.h",
    "content": "#pragma once\n\n#include <memory>\n#include <string>\n\n#include \"envoy/buffer/buffer.h\"\n#include \"envoy/common/optref.h\"\n#include \"envoy/common/time.h\"\n#include \"envoy/http/filter.h\"\n#include \"envoy/http/header_map.h\"\n#include \"envoy/http/metadata_interface.h\"\n#include \"envoy/stats/scope.h\"\n#include \"envoy/stats/stats_macros.h\" // IWYU pragma: keep\n\n#include \"source/common/common/logger.h\"\n\n#include \"absl/strings/string_view.h\"\n#include \"absl/types/optional.h\"\n#include \"cilium/accesslog.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"cilium/api/l7policy.pb.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\n/**\n * All Cilium L7 filter stats. @see stats_macros.h\n */\n// clang-format off\n#define ALL_CILIUM_STATS(COUNTER)\t\\\n  COUNTER(access_denied)\n// clang-format on\n\n/**\n * Struct definition for all Cilium L7 filter stats. @see stats_macros.h\n */\nstruct FilterStats {\n  ALL_CILIUM_STATS(GENERATE_COUNTER_STRUCT)\n};\n\n/**\n * Per listener configuration for Cilium HTTP filter. This\n * is accessed by multiple working thread instances of the filter.\n */\nclass Config : public Logger::Loggable<Logger::Id::filter> {\npublic:\n  Config(const std::string& access_log_path, const std::string& denied_403_body,\n         TimeSource& time_source, Stats::Scope& scope, bool is_upstream);\n  Config(const ::cilium::L7Policy& config, TimeSource& time_source, Stats::Scope& scope,\n         bool is_upstream);\n\n  void log(AccessLog::Entry&, ::cilium::EntryType);\n\n  TimeSource& time_source_;\n  FilterStats stats_;\n  std::string denied_403_body_;\n  bool is_upstream_;\n\nprivate:\n  Cilium::AccessLogSharedPtr access_log_;\n};\n\nusing ConfigSharedPtr = std::shared_ptr<Config>;\n\n// Each request gets their own instance of this filter, and\n// they can run parallel from multiple worker threads, all accessing\n// the shared configuration.\nclass AccessFilter : public Http::StreamFilter,\n                     Logger::Loggable<Logger::Id::filter>,\n                     public Http::UpstreamCallbacks {\npublic:\n  AccessFilter(ConfigSharedPtr& config) : config_(config) {}\n\n  // UpstreamCallbacks\n  void onUpstreamConnectionEstablished() override;\n\n  // Http::StreamFilterBase\n  void onStreamComplete() override;\n  void onDestroy() override;\n\n  // Http::StreamDecoderFilter\n  Http::FilterHeadersStatus decodeHeaders(Http::RequestHeaderMap& headers, bool) override;\n  Http::FilterDataStatus decodeData(Buffer::Instance&, bool) override {\n    return Http::FilterDataStatus::Continue;\n  }\n  Http::FilterTrailersStatus decodeTrailers(Http::RequestTrailerMap&) override {\n    return Http::FilterTrailersStatus::Continue;\n  }\n  void setDecoderFilterCallbacks(Http::StreamDecoderFilterCallbacks& callbacks) override;\n\n  // Http::StreamEncoderFilter\n  Http::Filter1xxHeadersStatus encode1xxHeaders(Http::ResponseHeaderMap&) override {\n    return Http::Filter1xxHeadersStatus::Continue;\n  }\n  Http::FilterHeadersStatus encodeHeaders(Http::ResponseHeaderMap& headers,\n                                          bool end_stream) override;\n  Http::FilterDataStatus encodeData(Buffer::Instance&, bool) override {\n    return Http::FilterDataStatus::Continue;\n  }\n  Http::FilterTrailersStatus encodeTrailers(Http::ResponseTrailerMap&) override {\n    return Http::FilterTrailersStatus::Continue;\n  }\n  void setEncoderFilterCallbacks(Http::StreamEncoderFilterCallbacks&) override {}\n  Http::FilterMetadataStatus encodeMetadata(Http::MetadataMap&) override {\n    return Http::FilterMetadataStatus::Continue;\n  }\n\nprivate:\n  void sendLocalError(absl::string_view details);\n\n  ConfigSharedPtr config_;\n  Http::StreamDecoderFilterCallbacks* callbacks_ = nullptr;\n\n  AccessLog::Entry* log_entry_ = nullptr;\n\n  OptRef<Http::RequestHeaderMap> latched_headers_;\n  absl::optional<bool> latched_end_stream_;\n};\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/network_filter.cc",
    "content": "#include \"cilium/network_filter.h\"\n\n#include <cstdint>\n#include <memory>\n#include <string>\n#include <vector>\n\n#include \"envoy/buffer/buffer.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/connection.h\"\n#include \"envoy/network/filter.h\"\n#include \"envoy/registry/registry.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/server/filter_config.h\"\n#include \"envoy/stream_info/filter_state.h\"\n#include \"envoy/stream_info/stream_info.h\"\n#include \"envoy/upstream/host_description.h\"\n\n#include \"source/common/buffer/buffer_impl.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/network/upstream_server_name.h\"\n#include \"source/common/network/upstream_subject_alt_names.h\"\n#include \"source/common/protobuf/protobuf.h\"\n#include \"source/common/protobuf/utility.h\"\n\n#include \"absl/status/statusor.h\"\n#include \"absl/strings/string_view.h\"\n#include \"cilium/accesslog.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"cilium/api/network_filter.pb.h\"\n#include \"cilium/api/network_filter.pb.validate.h\" // IWYU pragma: keep\n#include \"cilium/filter_state_cilium_destination.h\"\n#include \"cilium/filter_state_cilium_policy.h\"\n#include \"cilium/proxylib.h\"\n#include \"proxylib/types.h\"\n\nnamespace Envoy {\nnamespace Server {\nnamespace Configuration {\n\n/**\n * Config registration for the bpf metadata filter. @see\n * NamedNetworkFilterConfigFactory.\n */\nclass CiliumNetworkConfigFactory : public NamedNetworkFilterConfigFactory {\npublic:\n  // NamedNetworkFilterConfigFactory\n  absl::StatusOr<Network::FilterFactoryCb>\n  createFilterFactoryFromProto(const Protobuf::Message& proto_config,\n                               FactoryContext& context) override {\n    auto config = std::make_shared<Filter::CiliumL3::Config>(\n        MessageUtil::downcastAndValidate<const ::cilium::NetworkFilter&>(\n            proto_config, context.messageValidationVisitor()),\n        context);\n    return [config](Network::FilterManager& filter_manager) mutable -> void {\n      filter_manager.addFilter(std::make_shared<Filter::CiliumL3::Instance>(config));\n    };\n  }\n\n  ProtobufTypes::MessagePtr createEmptyConfigProto() override {\n    return std::make_unique<::cilium::NetworkFilter>();\n  }\n\n  std::string name() const override { return \"cilium.network\"; }\n};\n\n/**\n * Static registration for the bpf metadata filter. @see RegisterFactory.\n */\nREGISTER_FACTORY(CiliumNetworkConfigFactory, NamedNetworkFilterConfigFactory);\n\n} // namespace Configuration\n} // namespace Server\n\nnamespace Filter {\nnamespace CiliumL3 {\n\nConfig::Config(const ::cilium::NetworkFilter& config,\n               Server::Configuration::FactoryContext& context)\n    : time_source_(context.serverFactoryContext().timeSource()), access_log_(nullptr) {\n  const auto& access_log_path = config.access_log_path();\n  if (!access_log_path.empty()) {\n    access_log_ = Cilium::AccessLog::open(access_log_path, time_source_);\n  }\n  if (!config.proxylib().empty()) {\n    proxylib_ = std::make_shared<Cilium::GoFilter>(config.proxylib(), config.proxylib_params());\n  }\n}\n\nvoid Config::log(Cilium::AccessLog::Entry& entry, ::cilium::EntryType type) {\n  if (access_log_) {\n    access_log_->log(entry, type);\n  }\n}\n\nbool Instance::enforceNetworkPolicy(const Cilium::CiliumPolicyFilterState* policy_fs,\n                                    Cilium::CiliumDestinationFilterState* dest_fs,\n                                    uint32_t destination_identity,\n                                    Network::Address::InstanceConstSharedPtr dst_address,\n                                    absl::string_view sni, StreamInfo::StreamInfo& stream_info) {\n  auto& conn = callbacks_->connection();\n  ENVOY_CONN_LOG(debug, \"cilium.network: enforceNetworkPolicy\", conn);\n\n  // Set the destination address in the filter state, so that we can use it later when\n  // the socket option is set for local address\n  ENVOY_CONN_LOG(debug, \"cilium.network: destination address: {}\", conn, dst_address->asString());\n  dest_fs->setDestinationAddress(dst_address);\n\n  log_entry_.initFromConnection(policy_fs->pod_ip_, policy_fs->proxy_id_, policy_fs->ingress_,\n                                policy_fs->source_identity_,\n                                stream_info.downstreamAddressProvider().remoteAddress(),\n                                destination_identity, dst_address, &config_->time_source_);\n\n  bool use_proxy_lib;\n  if (!policy_fs->enforceNetworkPolicy(conn, remote_id_, destination_port_, sni, use_proxy_lib,\n                                       l7proto_, log_entry_)) {\n    ENVOY_CONN_LOG(debug, \"cilium.network: policy DENY on id: {} port: {} sni: \\\"{}\\\"\", conn,\n                   remote_id_, destination_port_, sni);\n    config_->log(log_entry_, ::cilium::EntryType::Denied);\n    return false;\n  }\n  // Emit accesslog if north/south l7 lb, as in that case the traffic is not going back to bpf\n  // datapath for policy enforcement\n  if (log_entry_.entry_.policy_name() != policy_fs->pod_ip_) {\n    config_->log(log_entry_, ::cilium::EntryType::Request);\n  }\n  ENVOY_LOG(debug, \"cilium.network: policy ALLOW on id: {} port: {} sni: \\\"{}\\\"\", remote_id_,\n            destination_port_, sni);\n\n  if (use_proxy_lib) {\n    const std::string& policy_name = policy_fs->pod_ip_;\n\n    // Initialize Go parser if requested\n    if (config_->proxylib_.get() != nullptr) {\n      go_parser_ = config_->proxylib_->newInstance(\n          conn, l7proto_, policy_fs->ingress_, policy_fs->source_identity_, destination_identity,\n          stream_info.downstreamAddressProvider().remoteAddress()->asString(),\n          dst_address->asString(), policy_name);\n      if (go_parser_.get() == nullptr) {\n        ENVOY_CONN_LOG(warn, \"cilium.network: Go parser \\\"{}\\\" not found\", conn, l7proto_);\n        return false;\n      }\n    }\n  }\n  should_buffer_ = false;\n  return true;\n}\n\nNetwork::FilterStatus Instance::onNewConnection() {\n  auto& conn = callbacks_->connection();\n  ENVOY_CONN_LOG(debug, \"cilium.network: onNewConnection\", conn);\n\n  // Buffer data until proxylib policy is available, if configured with proxylib\n  if (config_->proxylib_.get() != nullptr) {\n    should_buffer_ = true;\n  }\n\n  const auto policy_fs =\n      conn.streamInfo().filterState()->getDataReadOnly<Cilium::CiliumPolicyFilterState>(\n          Cilium::CiliumPolicyFilterState::key());\n\n  if (!policy_fs) {\n    ENVOY_CONN_LOG(warn, \"cilium.network: Cilium policy filter state not found\", conn);\n    return Network::FilterStatus::StopIteration;\n  }\n\n  // Default to incoming destination port, may be changed for L7 LB\n  destination_port_ = policy_fs->port_;\n\n  const auto dest_fs =\n      conn.streamInfo().filterState()->getDataMutable<Cilium::CiliumDestinationFilterState>(\n          Cilium::CiliumDestinationFilterState::key());\n\n  if (!dest_fs) {\n    ENVOY_CONN_LOG(warn, \"cilium.network: Cilium destination filter state not found\", conn);\n    return Network::FilterStatus::StopIteration;\n  }\n\n  // Pass SNI before the upstream callback so that it is available when upstream connection is\n  // initialized.\n  const auto sni = conn.requestedServerName();\n  if (!sni.empty()) {\n    ENVOY_CONN_LOG(trace, \"cilium.network: SNI: {}\", conn, sni);\n  }\n\n  // Pass metadata from tls_inspector to the filterstate, if any & not already\n  // set via upstream cluster config.\n  // Only do this in non-L7LB case where the proxy intercepts the traffic for policy enforcement.\n  if (!policy_fs->is_l7lb_ && !sni.empty()) {\n    ENVOY_CONN_LOG(trace, \"cilium.network: Passing SNI {} to upstream connection\", conn, sni);\n\n    auto filter_state = conn.streamInfo().filterState();\n    auto have_sni =\n        filter_state->hasData<Network::UpstreamServerName>(Network::UpstreamServerName::key());\n    auto have_san = filter_state->hasData<Network::UpstreamSubjectAltNames>(\n        Network::UpstreamSubjectAltNames::key());\n    if (!have_sni && !have_san) {\n      filter_state->setData(Network::UpstreamServerName::key(),\n                            std::make_unique<Network::UpstreamServerName>(sni),\n                            StreamInfo::FilterState::StateType::Mutable);\n      filter_state->setData(Network::UpstreamSubjectAltNames::key(),\n                            std::make_unique<Network::UpstreamSubjectAltNames>(\n                                std::vector<std::string>{std::string(sni)}),\n                            StreamInfo::FilterState::StateType::Mutable);\n    }\n  }\n\n  // use upstream callback only if required, otherwise enforce policy before returning\n  if (policy_fs->policyUseUpstreamDestinationAddress()) {\n    callbacks_->addUpstreamCallback(\n        [this, policy_fs, dest_fs, sni](Upstream::HostDescriptionConstSharedPtr host,\n                                        StreamInfo::StreamInfo& stream_info) -> bool {\n          // Skip enforcement or logging on shadows\n          if (stream_info.isShadow()) {\n            return true;\n          }\n\n          auto& conn = callbacks_->connection();\n          ENVOY_CONN_LOG(trace, \"cilium.network: in upstream callback\", conn);\n\n          // Resolve the destination security ID and port\n          uint32_t destination_identity = 0;\n\n          Network::Address::InstanceConstSharedPtr dst_address = host->address();\n          if (nullptr == dst_address) {\n            ENVOY_CONN_LOG(warn, \"cilium.network (egress): No destination address\", conn);\n            return false;\n          }\n\n          const auto dip = dst_address->ip();\n          if (!dip) {\n            ENVOY_CONN_LOG(warn, \"cilium.network: Non-IP destination address: {}\", conn,\n                           dst_address->asString());\n            return false;\n          }\n\n          destination_port_ = dip->port();\n          destination_identity = policy_fs->resolvePolicyId(dip);\n          remote_id_ = destination_identity;\n\n          return enforceNetworkPolicy(policy_fs, dest_fs, destination_identity, dst_address, sni,\n                                      stream_info);\n        });\n  } else {\n    auto& stream_info = conn.streamInfo();\n\n    // Resolve the destination security ID and port\n    uint32_t destination_identity = 0;\n\n    Network::Address::InstanceConstSharedPtr dst_address =\n        stream_info.downstreamAddressProvider().localAddress();\n    const auto dip = dst_address->ip();\n\n    if (policy_fs->ingress_) {\n      remote_id_ = policy_fs->source_identity_;\n    } else {\n      destination_port_ = dip->port();\n      destination_identity = policy_fs->resolvePolicyId(dip);\n      remote_id_ = destination_identity;\n    }\n\n    if (!enforceNetworkPolicy(policy_fs, dest_fs, destination_identity, dst_address, sni,\n                              stream_info)) {\n      stream_info.setResponseFlag(StreamInfo::CoreResponseFlag::UnauthorizedExternalService);\n      conn.close(Network::ConnectionCloseType::AbortReset, \"access denied\");\n      return Network::FilterStatus::StopIteration;\n    }\n  }\n\n  return Network::FilterStatus::Continue;\n}\n\nNetwork::FilterStatus Instance::onData(Buffer::Instance& data, bool end_stream) {\n  auto& conn = callbacks_->connection();\n  ENVOY_CONN_LOG(trace, \"cilium.network: onData {} bytes, end_stream: {}\", conn, data.length(),\n                 end_stream);\n  const char* reason;\n\n  if (should_buffer_) {\n    // Buffer data until upstream is selected and policy resolved\n    buffer_.move(data);\n    return Network::FilterStatus::Continue;\n  }\n  // Prepend buffered data if any\n  if (buffer_.length() > 0) {\n    data.prepend(buffer_);\n  }\n  if (go_parser_) {\n    FilterResult res =\n        go_parser_->onIo(false, data, end_stream); // 'false' marks original direction data\n    ENVOY_CONN_LOG(trace, \"cilium.network::onData: \\'GoFilter::OnIO\\' returned {}\", conn,\n                   Envoy::Cilium::toString(res));\n\n    if (res != FILTER_OK) {\n      // Drop the connection due to an error\n      go_parser_->close();\n      reason = \"proxylib error\";\n      goto drop_close;\n    }\n\n    if (go_parser_->wantReplyInject()) {\n      ENVOY_CONN_LOG(trace, \"cilium.network::onData: calling write() on an empty buffer\", conn);\n\n      // We have no idea when, if ever new data will be received on the\n      // reverse direction. Connection write on an empty buffer will cause\n      // write filter chain to be called, and gives our write path the\n      // opportunity to inject data.\n      Buffer::OwnedImpl empty;\n      conn.write(empty, false);\n    }\n\n    go_parser_->setOrigEndStream(end_stream);\n  } else if (!l7proto_.empty()) {\n    const auto& metadata = conn.streamInfo().dynamicMetadata();\n    bool changed = log_entry_.updateFromMetadata(l7proto_, metadata.filter_metadata().at(l7proto_));\n\n    // Policy may have changed since the connection was established, get fresh policy\n    const auto policy_fs =\n        conn.streamInfo().filterState()->getDataReadOnly<Cilium::CiliumPolicyFilterState>(\n            Cilium::CiliumPolicyFilterState::key());\n\n    if (!policy_fs) {\n      ENVOY_CONN_LOG(warn,\n                     \"cilium.network: Cilium policy filter state not found for pod {}, \"\n                     \"defaulting to DENY\",\n                     conn, policy_fs->pod_ip_);\n      reason = \"Cilium metadata lost\";\n      goto drop_close;\n    }\n    const auto& policy = policy_fs->getPolicy();\n    auto port_policy = policy.findPortPolicy(policy_fs->ingress_, destination_port_);\n    if (!port_policy.allowed(policy_fs->proxy_id_, remote_id_, metadata)) {\n      config_->log(log_entry_, ::cilium::EntryType::Denied);\n      reason = \"metadata policy drop\";\n      goto drop_close;\n    } else {\n      // accesslog only if metadata has changed\n      if (changed) {\n        config_->log(log_entry_, ::cilium::EntryType::Request);\n      }\n    }\n  }\n\n  return Network::FilterStatus::Continue;\n\ndrop_close:\n  conn.close(Network::ConnectionCloseType::NoFlush, reason);\n  return Network::FilterStatus::StopIteration;\n}\n\nNetwork::FilterStatus Instance::onWrite(Buffer::Instance& data, bool end_stream) {\n  if (go_parser_) {\n    FilterResult res =\n        go_parser_->onIo(true, data, end_stream); // 'true' marks reverse direction data\n    ENVOY_CONN_LOG(trace, \"cilium.network::OnWrite: \\'GoFilter::OnIO\\' returned {}\",\n                   callbacks_->connection(), Envoy::Cilium::toString(res));\n\n    if (res != FILTER_OK) {\n      // Drop the connection due to an error\n      go_parser_->close();\n      return Network::FilterStatus::StopIteration;\n    }\n\n    // XXX: Unfortunately continueReading() continues from the next filter, and\n    // there seems to be no way to trigger the whole filter chain to be called.\n\n    go_parser_->setReplyEndStream(end_stream);\n  }\n\n  return Network::FilterStatus::Continue;\n}\n\n} // namespace CiliumL3\n} // namespace Filter\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/network_filter.h",
    "content": "#pragma once\n\n#include <cstdint>\n#include <memory>\n#include <string>\n\n#include \"envoy/buffer/buffer.h\"\n#include \"envoy/common/time.h\"\n#include \"envoy/json/json_object.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/filter.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/stream_info/stream_info.h\"\n\n#include \"source/common/buffer/buffer_impl.h\"\n#include \"source/common/common/logger.h\"\n\n#include \"absl/strings/string_view.h\"\n#include \"cilium/accesslog.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"cilium/api/network_filter.pb.h\"\n#include \"cilium/filter_state_cilium_destination.h\"\n#include \"cilium/filter_state_cilium_policy.h\"\n#include \"cilium/proxylib.h\"\n\nnamespace Envoy {\nnamespace Filter {\nnamespace CiliumL3 {\n\n/**\n * Shared configuration for Cilium network filter worker\n * Instances. Each new network connection (on each worker thread)\n * get's their own Instance, but they all share a common Config for\n * any given filter chain.\n */\nclass Config : Logger::Loggable<Logger::Id::config> {\npublic:\n  Config(const ::cilium::NetworkFilter& config, Server::Configuration::FactoryContext& context);\n  Config(const Json::Object& config, Server::Configuration::FactoryContext& context);\n\n  void log(Cilium::AccessLog::Entry&, ::cilium::EntryType);\n\n  Cilium::GoFilterSharedPtr proxylib_;\n  TimeSource& time_source_;\n\nprivate:\n  Cilium::AccessLogSharedPtr access_log_;\n};\n\nusing ConfigSharedPtr = std::shared_ptr<Config>;\n\n/**\n * Implementation of a Cilium network filter.\n */\nclass Instance : public Network::Filter, Logger::Loggable<Logger::Id::filter> {\npublic:\n  Instance(const ConfigSharedPtr& config) : config_(config) {}\n\n  // Network::ReadFilter\n  Network::FilterStatus onData(Buffer::Instance&, bool end_stream) override;\n  Network::FilterStatus onNewConnection() override;\n  void initializeReadFilterCallbacks(Network::ReadFilterCallbacks& callbacks) override {\n    callbacks_ = &callbacks;\n  }\n\n  // Network::WriteFilter\n  Network::FilterStatus onWrite(Buffer::Instance&, bool end_stream) override;\n\nprivate:\n  // helper to be used either directly from onNewConnection (no L7 LB),\n  // or from upstream callback (l7 lb)\n  bool enforceNetworkPolicy(const Cilium::CiliumPolicyFilterState* policy_fs,\n                            Cilium::CiliumDestinationFilterState* dest_fs,\n                            uint32_t destination_identity,\n                            Network::Address::InstanceConstSharedPtr dst_address,\n                            absl::string_view sni, StreamInfo::StreamInfo& stream_info);\n\n  const ConfigSharedPtr config_;\n  Network::ReadFilterCallbacks* callbacks_ = nullptr;\n  uint32_t remote_id_ = 0;\n  uint16_t destination_port_ = 0;\n  std::string l7proto_;\n  bool should_buffer_ = false;\n  Buffer::OwnedImpl buffer_; // Buffer for initial connection data\n  Cilium::GoFilter::InstancePtr go_parser_;\n  Cilium::AccessLog::Entry log_entry_{};\n};\n\n} // namespace CiliumL3\n} // namespace Filter\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/network_policy.cc",
    "content": "#include \"cilium/network_policy.h\"\n\n#include <fmt/base.h>\n#include <fmt/format.h>\n#include <fmt/ranges.h>\n#include <openssl/mem.h>\n\n#include <algorithm>\n#include <cstdint>\n#include <functional>\n#include <iterator>\n#include <memory>\n#include <ranges>\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/admin/v3/init_dump.pb.h\"\n#include \"envoy/common/exception.h\"\n#include \"envoy/common/matchers.h\"\n#include \"envoy/common/optref.h\"\n#include \"envoy/config/core/v3/address.pb.h\"\n#include \"envoy/config/core/v3/base.pb.h\"\n#include \"envoy/config/core/v3/config_source.pb.h\"\n#include \"envoy/config/subscription.h\"\n#include \"envoy/event/dispatcher_thread_deletable.h\"\n#include \"envoy/http/header_map.h\"\n#include \"envoy/init/manager.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/ssl/context.h\"\n#include \"envoy/ssl/context_config.h\"\n#include \"envoy/stats/scope.h\"\n#include \"envoy/stats/stats_macros.h\"\n#include \"envoy/thread_local/thread_local.h\"\n#include \"envoy/type/matcher/v3/metadata.pb.h\"\n\n#include \"source/common/common/assert.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/matchers.h\"\n#include \"source/common/common/thread.h\"\n#include \"source/common/http/header_utility.h\"\n#include \"source/common/init/manager_impl.h\"\n#include \"source/common/init/target_impl.h\"\n#include \"source/common/init/watcher_impl.h\"\n#include \"source/common/network/utility.h\"\n#include \"source/common/protobuf/protobuf.h\"\n#include \"source/common/protobuf/utility.h\"\n#include \"source/extensions/config_subscription/grpc/grpc_subscription_impl.h\"\n#include \"source/server/transport_socket_config_impl.h\"\n\n#include \"absl/container/btree_set.h\"\n#include \"absl/container/flat_hash_set.h\"\n#include \"absl/status/status.h\"\n#include \"absl/strings/ascii.h\"\n#include \"absl/strings/match.h\"\n#include \"absl/strings/str_replace.h\"\n#include \"absl/strings/string_view.h\"\n#include \"cilium/accesslog.h\"\n#include \"cilium/api/npds.pb.h\"\n#include \"cilium/grpc_subscription.h\"\n#include \"cilium/ipcache.h\"\n#include \"cilium/secret_watcher.h\"\n\nnamespace {\n\nstatic constexpr absl::string_view NetworkPolicyTypeUrl =\n    \"type.googleapis.com/cilium.NetworkPolicy\";\n\n} // namespace\n\nnamespace fmt {\n\ntemplate <> struct formatter<Envoy::Cilium::RuleVerdict> {\n  constexpr auto parse(fmt::format_parse_context& ctx) { return ctx.begin(); }\n\n  template <typename FormatContext>\n  auto format(Envoy::Cilium::RuleVerdict verdict, FormatContext& ctx) const {\n    absl::string_view name;\n    switch (verdict) {\n    case Envoy::Cilium::RuleVerdict::None:\n      name = \"NONE\";\n      break;\n    case Envoy::Cilium::RuleVerdict::Allow:\n      name = \"ALLOW\";\n      break;\n    case Envoy::Cilium::RuleVerdict::Deny:\n      name = \"DENY\";\n      break;\n    default:\n      name = \"UNKNOWN\";\n      break;\n    }\n    return std::ranges::copy(name, ctx.out()).out;\n  }\n};\n\n} // namespace fmt\n\nnamespace Envoy {\nnamespace Cilium {\n\nuint64_t NetworkPolicyMapImpl::instance_id_ = 0;\n\nIpAddressPair::IpAddressPair(const cilium::NetworkPolicy& proto) {\n  for (const auto& ip_addr : proto.endpoint_ips()) {\n    auto ip = Network::Utility::parseInternetAddressNoThrow(ip_addr);\n    if (ip) {\n      switch (ip->ip()->version()) {\n      case Network::Address::IpVersion::v4:\n        ipv4_ = std::move(ip);\n        break;\n      case Network::Address::IpVersion::v6:\n        ipv6_ = std::move(ip);\n        break;\n      }\n    }\n  }\n}\n\nclass HeaderMatch : public Logger::Loggable<Logger::Id::config> {\npublic:\n  HeaderMatch(const NetworkPolicyMapImpl& parent, const cilium::HeaderMatch& config)\n      : name_(config.name()), value_(config.value()), match_action_(config.match_action()),\n        mismatch_action_(config.mismatch_action()) {\n    if (!config.value_sds_secret().empty()) {\n      secret_ = std::make_unique<SecretWatcher>(parent, config.value_sds_secret());\n    }\n  }\n\n  void logRejected(Cilium::AccessLog::Entry& log_entry, absl::string_view value) const {\n    log_entry.addRejected(name_.get(), !secret_ ? value : \"[redacted]\");\n  }\n\n  void logMissing(Cilium::AccessLog::Entry& log_entry, absl::string_view value) const {\n    log_entry.addMissing(name_.get(), !secret_ ? value : \"[redacted]\");\n  }\n\n  // Returns 'true' if matching can continue\n  bool allowed(Envoy::Http::RequestHeaderMap& headers, Cilium::AccessLog::Entry& log_entry) const {\n    bool matches = false;\n    const std::string* match_value = &value_;\n    const auto header_value = Http::HeaderUtility::getAllOfHeaderAsString(headers, name_);\n\n    // Get secret value?\n    if (secret_) {\n      auto* secret_value = secret_->value();\n      if (secret_value) {\n        match_value = secret_value;\n      } else if (value_.empty()) {\n        // fail if secret has no value and the inline value to match is also empty\n        ENVOY_LOG(info, \"Cilium HeaderMatch missing SDS secret value for header {}\", name_);\n        return false;\n      }\n    }\n\n    // Perform presence match if the value to match is empty\n    bool is_present_match = match_value->empty();\n    if (is_present_match) {\n      matches = header_value.result().has_value();\n    } else if (header_value.result().has_value()) {\n      const absl::string_view val = header_value.result().value();\n      if (val.length() == match_value->length()) {\n        // Use constant time comparison for security reason\n        matches = CRYPTO_memcmp(val.data(), match_value->data(), match_value->length()) == 0;\n      }\n    }\n\n    if (matches) {\n      // Match action\n      switch (match_action_) {\n      case cilium::HeaderMatch::CONTINUE_ON_MATCH:\n        return true;\n      case cilium::HeaderMatch::FAIL_ON_MATCH:\n      default: // fail closed if unknown action\n        logRejected(log_entry, *match_value);\n        return false;\n      case cilium::HeaderMatch::DELETE_ON_MATCH:\n        logRejected(log_entry, *match_value);\n        headers.remove(name_);\n        return true;\n      }\n    } else {\n      // Mismatch action\n      switch (mismatch_action_) {\n      case cilium::HeaderMatch::FAIL_ON_MISMATCH:\n      default:\n        logMissing(log_entry, *match_value);\n        return false;\n      case cilium::HeaderMatch::CONTINUE_ON_MISMATCH:\n        logMissing(log_entry, *match_value);\n        return true;\n      case cilium::HeaderMatch::ADD_ON_MISMATCH:\n        headers.addCopy(name_, *match_value);\n        logMissing(log_entry, *match_value);\n        return true;\n      case cilium::HeaderMatch::DELETE_ON_MISMATCH:\n        if (is_present_match) {\n          // presence match failed, nothing to do\n          return true;\n        }\n        if (!header_value.result().has_value()) {\n          return true; // nothing to remove\n        }\n\n        // Remove the header with an incorrect value\n        headers.remove(name_);\n        logRejected(log_entry, header_value.result().value());\n        return true;\n      case cilium::HeaderMatch::REPLACE_ON_MISMATCH:\n        // Log the wrong value as rejected, if the header existed with a wrong value\n        if (header_value.result().has_value()) {\n          logRejected(log_entry, header_value.result().value());\n        }\n        // Set the expected value\n        headers.setCopy(name_, *match_value);\n        // Log the expected value as missing\n        logMissing(log_entry, *match_value);\n        return true;\n      }\n    }\n    IS_ENVOY_BUG(\"HeaderMatch reached unreachable return\");\n    return false;\n  }\n\n  void toString(int indent, std::string& res) const {\n    res.append(indent - 2, ' ').append(\"- name: \\\"\").append(name_.get()).append(\"\\\"\\n\");\n    if (!value_.empty()) {\n      res.append(indent, ' ').append(\"value: \\\"\").append(value_).append(\"\\\"\\n\");\n    }\n    if (secret_) {\n      res.append(indent, ' ').append(\"secret: \\\"\").append(secret_->name()).append(\"\\\"\\n\");\n    }\n    const char* match_actions[] = {\"CONTINUE\", \"FAIL\", \"DELETE\", \"UNKNOWN\"};\n    res.append(indent, ' ')\n        .append(\"match_action: \")\n        .append(match_actions[std::max(int(match_action_), 3)])\n        .append(\"\\n\");\n\n    const char* mismatch_actions[] = {\"FAIL\", \"CONTINUE\", \"ADD\", \"DELETE\", \"REPLACE\", \"UNKNOWN\"};\n    res.append(indent, ' ')\n        .append(\"mismatch_action: \")\n        .append(mismatch_actions[std::max(int(mismatch_action_), 5)])\n        .append(\"\\n\");\n  }\n\n  const Http::LowerCaseString name_;\n  std::string value_;\n  cilium::HeaderMatch::MatchAction match_action_;\n  cilium::HeaderMatch::MismatchAction mismatch_action_;\n  SecretWatcherPtr secret_;\n};\n\nclass HttpNetworkPolicyRule : public Logger::Loggable<Logger::Id::config> {\npublic:\n  HttpNetworkPolicyRule(const NetworkPolicyMapImpl& parent,\n                        const cilium::HttpNetworkPolicyRule& rule) {\n    ENVOY_LOG(trace, \"Cilium L7 HttpNetworkPolicyRule():\");\n    headers_.reserve(rule.headers().size());\n    for (const auto& header : rule.headers()) {\n      headers_.emplace_back(Http::HeaderUtility::createHeaderData(\n          header, parent.transportFactoryContext().serverFactoryContext()));\n\n      auto value = header.has_range_match()   ? fmt::format(\"[{}-{})\", header.range_match().start(),\n                                                            header.range_match().end())\n                   : header.has_exact_match() ? \"<VALUE>\"\n                   : header.has_present_match()    ? \"<PRESENT>\"\n                   : header.has_safe_regex_match() ? \"<REGEX>\"\n                                                   : \"<UNKNOWN>\";\n      ENVOY_LOG(trace, \"Cilium L7 HttpNetworkPolicyRule(): HeaderData {}={}\", header.name(), value);\n    }\n    header_matches_.reserve(rule.header_matches().size());\n    for (const auto& config : rule.header_matches()) {\n      header_matches_.emplace_back(parent, config);\n      const auto& header_match = header_matches_.back();\n      ENVOY_LOG(trace,\n                \"Cilium L7 HttpNetworkPolicyRule(): HeaderMatch {}={} (match: {}, mismatch: {})\",\n                header_match.name_.get(),\n                header_match.secret_ ? fmt::format(\"<SECRET {}>\", header_match.secret_->name())\n                : !header_match.value_.empty() ? header_match.value_\n                                               : \"<PRESENT>\",\n                cilium::HeaderMatch::MatchAction_Name(header_match.match_action_),\n                cilium::HeaderMatch::MismatchAction_Name(header_match.mismatch_action_));\n    }\n  }\n\n  bool allowed(const Envoy::Http::RequestHeaderMap& headers) const {\n    // Empty set matches any headers.\n    return Http::HeaderUtility::matchHeaders(headers, headers_);\n  }\n\n  // Should only be called after 'allowed' returns 'true'.\n  // Returns 'true' if matching can continue\n  bool headerMatches(Envoy::Http::RequestHeaderMap& headers,\n                     Cilium::AccessLog::Entry& log_entry) const {\n    bool accepted = true;\n    for (const auto& header_match : header_matches_) {\n      if (!header_match.allowed(headers, log_entry)) {\n        accepted = false;\n      }\n    }\n    return accepted;\n  }\n\n  void toString(int indent, std::string& res) const {\n    bool first = true;\n    if (!headers_.empty()) {\n      if (first) {\n        first = false;\n        res.append(indent - 2, ' ').append(\"- \");\n      } else {\n        res.append(indent, ' ');\n      }\n      res.append(\"headers:\\n\");\n      for (auto& h : headers_) {\n        if (const auto v = dynamic_cast<Http::HeaderUtility::HeaderDataBaseImpl*>(h.get())) {\n          res.append(indent, ' ').append(\"- name: \\\"\").append(v->name_).append(\"\\\"\\n\");\n        }\n\n        if (const auto v = dynamic_cast<Http::HeaderUtility::HeaderDataExactMatch*>(h.get())) {\n          res.append(indent + 2, ' ').append(\"value: \\\"\").append(v->expected_value_).append(\"\\\"\\n\");\n        } else if (dynamic_cast<Http::HeaderUtility::HeaderDataRegexMatch*>(h.get())) {\n          res.append(indent + 2, ' ').append(\"regex: \").append(\"<hidden>\\n\");\n        } else if (const auto v =\n                       dynamic_cast<Http::HeaderUtility::HeaderDataRangeMatch*>(h.get())) {\n          res.append(indent + 2, ' ')\n              .append(\"range: \")\n              .append(fmt::format(\"[{}-{})\\n\", v->range_start_, v->range_end_));\n        } else if (const auto v =\n                       dynamic_cast<Http::HeaderUtility::HeaderDataPresentMatch*>(h.get())) {\n          res.append(indent + 2, ' ')\n              .append(\"present: \")\n              .append(v->present_ ? \"true\\n\" : \"false\\n\");\n        } else if (const auto v =\n                       dynamic_cast<Http::HeaderUtility::HeaderDataPrefixMatch*>(h.get())) {\n          res.append(indent + 2, ' ').append(\"prefix: \\\"\").append(v->prefix_).append(\"\\\"\\n\");\n        } else if (const auto v =\n                       dynamic_cast<Http::HeaderUtility::HeaderDataSuffixMatch*>(h.get())) {\n          res.append(indent + 2, ' ').append(\"suffix: \\\"\").append(v->suffix_).append(\"\\\"\\n\");\n        } else if (const auto v =\n                       dynamic_cast<Http::HeaderUtility::HeaderDataContainsMatch*>(h.get())) {\n          res.append(indent + 2, ' ')\n              .append(\"contains: \\\"\")\n              .append(v->expected_substr_)\n              .append(\"\\\"\\n\");\n        } else if (dynamic_cast<Http::HeaderUtility::HeaderDataStringMatch*>(h.get())) {\n          res.append(indent + 2, ' ').append(\"string_match: \").append(\"<hidden>\\n\");\n        }\n\n        if (const auto v = dynamic_cast<Http::HeaderUtility::HeaderDataBaseImpl*>(h.get())) {\n          if (v->invert_match_) {\n            res.append(indent + 2, ' ').append(\"invert_match: true\\n\");\n          }\n\n          if (v->treat_missing_as_empty_) {\n            res.append(indent + 2, ' ').append(\"treat_missing_as_empty: true\\n\");\n          }\n        }\n      }\n    }\n    if (!header_matches_.empty()) {\n      if (first) {\n        // first = false; // not used after, so no need to update\n        res.append(indent - 2, ' ').append(\"- \");\n      } else {\n        res.append(indent, ' ');\n      }\n      res.append(\"header_matches:\\n\");\n      for (auto& hm : header_matches_) {\n        hm.toString(indent + 2, res);\n      }\n    }\n  }\n\n  std::vector<Http::HeaderUtility::HeaderDataPtr> headers_; // Allowed if empty.\n  std::vector<HeaderMatch> header_matches_;\n};\n\nclass L7NetworkPolicyRule : public Logger::Loggable<Logger::Id::config> {\npublic:\n  L7NetworkPolicyRule(const NetworkPolicyMapImpl& parent, const cilium::L7NetworkPolicyRule& rule)\n      : name_(rule.name()) {\n    for (const auto& matcher : rule.metadata_rule()) {\n      metadata_matchers_.emplace_back(matcher,\n                                      parent.transportFactoryContext().serverFactoryContext());\n      matchers_.emplace_back(matcher);\n    }\n  }\n\n  bool matches(const envoy::config::core::v3::Metadata& metadata) const {\n    // All matchers must be satisfied for the rule to match\n    for (const auto& metadata_matcher : metadata_matchers_) {\n      if (!metadata_matcher.match(metadata)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  void toString(int indent, std::string& res) const {\n    res.append(indent - 2, ' ').append(\"- name: \\\"\").append(name_).append(\"\\\"\\n\");\n  }\n\n  std::string name_;\n\nprivate:\n  std::vector<Envoy::Matchers::MetadataMatcher> metadata_matchers_;\n  std::vector<envoy::type::matcher::v3::MetadataMatcher> matchers_;\n};\n\n// Constructs SniPattern with the provided regex engine for input match pattern.\nSniPattern::SniPattern(const Regex::Engine& engine, absl::string_view sni) {\n  if (!isValid(sni)) {\n    throw EnvoyException(fmt::format(\"SniPattern: Unsupported match pattern {}\", sni));\n  }\n\n  // Only regex characters supported in valid match pattern is '*'. If not present, pattern\n  // can be reduced to explicit full match.\n  if (!absl::StrContains(sni, '*')) {\n    match_name_ = absl::AsciiStrToLower(sni);\n    return;\n  }\n\n  std::string regex_expr;\n  if (sni == \"*\") {\n    // For a full wildcard match pattern replace with static wildcard pattern for DNS characters.\n    regex_expr = \"[-a-z0-9_]+([.][-a-z0-9_]+)*\";\n  } else {\n    // NOTE: We already validated that the provided pattern cannot have more than 2 consecutive\n    // wildcard specifier('*'). This simplifies the regex replacement by isolating '**' and '*'\n    // specifiers.\n    regex_expr = absl::StrReplaceAll(\n        absl::AsciiStrToLower(sni),\n        {\n            // Convert '.' to regex literal '[.]'\n            {\".\", \"[.]\"},\n\n            // '**' expands to regex for multilevel subdomain match.\n            // The replaced regex pattern matches one or more entire DNS labels, for example:\n            // * <dns-label>\n            // * <dns-label-1>.<dns-label-2>.<dns-label-3>\n            {\"**\", \"[-a-z0-9_]+([.][-a-z0-9_]+){0,}\"},\n\n            // Replace wildcard specifier '*' with regex for any number of valid DNS characters\n            // within subdomain boundry(doesn't include '.' literal).\n            {\"*\", \"[-a-z0-9_]{0,}\"},\n        });\n  }\n\n  auto regex_matcher = engine.matcher(regex_expr);\n  if (!regex_matcher.ok()) {\n    throw EnvoyException(fmt::format(\"SniPattern: Failed to create pattern for SNI {} - {}\", sni,\n                                     regex_matcher.status().ToString()));\n  }\n\n  matcher_ = std::move(regex_matcher.value());\n}\n\nclass PortNetworkPolicyRule : public Logger::Loggable<Logger::Id::config> {\npublic:\n  PortNetworkPolicyRule()\n      : name_(\"default allow rule\"), deny_(false), proxy_id_(0), precedence_(0),\n        tier_last_precedence_(0), mutable_remotes_(false), l7_proto_(\"\") {}\n\n  PortNetworkPolicyRule(const NetworkPolicyMapImpl& parent,\n                        const cilium::PortNetworkPolicyRule& rule, bool shared_resource)\n      : name_(rule.name()), deny_(rule.deny()), proxy_id_(uint16_t(rule.proxy_id())),\n        precedence_(rule.precedence()), tier_last_precedence_(rule.pass_precedence()),\n        mutable_remotes_(!shared_resource), l7_proto_(rule.l7_proto()) {\n    if (tier_last_precedence_ > precedence_) {\n      throw EnvoyException(\n          fmt::format(\"PortNetworkPolicyRule: pass_precedence {} must be lower than precedence {}\",\n                      tier_last_precedence_, precedence_));\n    }\n    for (const auto& remote : rule.remote_policies()) {\n      ENVOY_LOG(trace, \"Cilium L7 PortNetworkPolicyRule(): {} remote {} by rule: {}\",\n                deny_ ? \"Denying\" : \"Allowing\", remote, name_);\n      remotes_.emplace(remote);\n    }\n    if (rule.has_downstream_tls_context()) {\n      auto config = rule.downstream_tls_context();\n      server_context_ = std::make_unique<DownstreamTLSContext>(parent, config);\n    }\n    if (rule.has_upstream_tls_context()) {\n      auto config = rule.upstream_tls_context();\n      client_context_ = std::make_unique<UpstreamTLSContext>(parent, config);\n    }\n    for (const auto& sni : rule.server_names()) {\n      ENVOY_LOG(trace, \"Cilium L7 PortNetworkPolicyRule(): Allowing SNI {} by rule {}\", sni, name_);\n      allowed_snis_.emplace_back(parent.regexEngine(), sni);\n    }\n    if (rule.has_http_rules()) {\n      http_rules_ = std::make_shared<std::vector<HttpNetworkPolicyRule>>();\n      for (const auto& http_rule : rule.http_rules().http_rules()) {\n        if (http_rule.header_matches_size() > 0) {\n          has_headermatches_ = true;\n        }\n        http_rules_->emplace_back(parent, http_rule);\n      }\n    }\n    if (!l7_proto_.empty() && rule.has_l7_rules()) {\n      const auto& ruleset = rule.l7_rules();\n      for (const auto& l7_rule : ruleset.l7_deny_rules()) {\n        l7_deny_rules_.emplace_back(parent, l7_rule);\n      }\n      for (const auto& l7_rule : ruleset.l7_allow_rules()) {\n        l7_allow_rules_.emplace_back(parent, l7_rule);\n      }\n    }\n  }\n\n  // inheritpassprecedence bumps up the precedence of a rule in a lower tier to the precedence\n  // range reserved right after the precedence of the given pass rule.\n  void inheritPassPrecedence(const PortNetworkPolicyRule& pass_rule) {\n    precedence_ -= pass_rule.tier_last_precedence_;\n    precedence_ += pass_rule.precedence_;\n  }\n\n  bool isRemoteWildcard() const { return remotes_.empty(); }\n\n  RuleVerdict getVerdict(uint16_t proxy_id, uint32_t remote_id) const {\n    // proxy_id must match if we have any.\n    if (proxy_id_ != 0 && proxy_id != proxy_id_) {\n      return RuleVerdict::None;\n    }\n    // Remote ID must match if we have any.\n    if (!isRemoteWildcard() && !remotes_.contains(remote_id)) {\n      return RuleVerdict::None; // no verdict\n    }\n    // Allow rules allow by default when remotes_ is empty, deny rules do not\n    return deny_ ? RuleVerdict::Deny : RuleVerdict::Allow;\n  }\n\n  RuleVerdict getVerdict(uint16_t proxy_id, uint32_t remote_id, absl::string_view sni) const {\n    // sni must match if we have any\n    if (!allowed_snis_.empty() &&\n        (sni.empty() || std::ranges::none_of(allowed_snis_, [&](const auto& pattern) {\n           return pattern.matches(sni);\n         }))) {\n      return RuleVerdict::None;\n    }\n    return getVerdict(proxy_id, remote_id);\n  }\n\n  RuleVerdict getVerdict(uint16_t proxy_id, uint32_t remote_id,\n                         Envoy::Http::RequestHeaderMap& headers,\n                         Cilium::AccessLog::Entry& log_entry) const {\n    auto verdict = getVerdict(proxy_id, remote_id);\n    if (!hasHttpRules() || verdict != RuleVerdict::Allow) {\n      return verdict;\n    }\n    if (!has_headermatches_) {\n      if (std::ranges::any_of(*http_rules_, [&](auto& r) { return r.allowed(headers); })) {\n        return RuleVerdict::Allow;\n      }\n      return RuleVerdict::None;\n    }\n\n    // Evaluate all rules to run all the header actions,\n    // and remember if any of them matched\n    bool header_matched = false;\n    for (const auto& rule : *http_rules_) {\n      if (rule.allowed(headers)) {\n        if (rule.headerMatches(headers, log_entry)) {\n          header_matched = true;\n        }\n      }\n    }\n    return (header_matched) ? RuleVerdict::Allow : RuleVerdict::None;\n  }\n\n  RuleVerdict useProxylib(uint16_t proxy_id, uint32_t remote_id, std::string& l7_proto) const {\n    auto verdict = getVerdict(proxy_id, remote_id);\n    if (verdict != RuleVerdict::Allow) {\n      return verdict;\n    }\n    if (!l7_proto_.empty()) {\n      ENVOY_LOG(trace, \"Cilium L7 PortNetworkPolicyRule::useProxylib(): returning {}\", l7_proto_);\n      l7_proto = l7_proto_;\n      return RuleVerdict::Allow; // found a proxylib match\n    }\n    // keep looking past allows if no proxylib\n    return RuleVerdict::None;\n  }\n\n  // Envoy Metadata matcher, called after deny has already been checked for\n  RuleVerdict getVerdict(uint16_t proxy_id, uint32_t remote_id,\n                         const envoy::config::core::v3::Metadata& metadata) const {\n    auto verdict = getVerdict(proxy_id, remote_id);\n    if (verdict != RuleVerdict::Allow) {\n      return verdict;\n    }\n\n    if (std::ranges::any_of(l7_deny_rules_,\n                            [&](const auto& rule) { return rule.matches(metadata); })) {\n      ENVOY_LOG(trace, \"Cilium L7 PortNetworkPolicyRule: DENY due to a matching deny rule\");\n      return RuleVerdict::Deny; // request is denied if any deny rule matches\n    }\n\n    if (l7_allow_rules_.empty()) {\n      ENVOY_LOG(trace, \"Cilium L7 PortNetworkPolicyRule: default ALLOW due to no allow rules\");\n      return RuleVerdict::Allow; // allowed by default\n    }\n\n    if (std::ranges::any_of(l7_allow_rules_,\n                            [&](const auto& rule) { return rule.matches(metadata); })) {\n      ENVOY_LOG(trace, \"Cilium L7 PortNetworkPolicyRule: ALLOW due to a matching allow rule\");\n      return RuleVerdict::Allow;\n    }\n\n    ENVOY_LOG(trace, \"Cilium L7 PortNetworkPolicyRule: SKIP due to all allow rules mismatching\");\n    return RuleVerdict::None;\n  }\n\n  // getServerTlsContext returns true if the rule has server TLS context that was passed to the\n  // caller via the reference arguments.\n  bool getServerTlsContext(Ssl::ContextSharedPtr& tls_context,\n                           const Ssl::ContextConfig*& config) const {\n    if (server_context_) {\n      tls_context = server_context_->getTlsContext();\n      config = &server_context_->getTlsContextConfig();\n      return true;\n    }\n    return false;\n  }\n\n  // getClientTlsContext returns true if the rule has client TLS context that was passed to the\n  // caller via the reference arguments.\n  bool getClientTlsContext(Ssl::ContextSharedPtr& tls_context,\n                           const Ssl::ContextConfig*& config) const {\n    if (client_context_) {\n      tls_context = client_context_->getTlsContext();\n      config = &client_context_->getTlsContextConfig();\n      return true;\n    }\n    return false;\n  }\n\n  void toString(int indent, std::string& res) const {\n    res.append(indent - 2, ' ').append(\"- remotes: [\");\n    res.append(fmt::format(\"{}\", fmt::join(remotes_, \",\")));\n    res.append(\"]\\n\");\n\n    if (!name_.empty()) {\n      res.append(indent, ' ').append(\"name: \\\"\").append(name_).append(\"\\\"\\n\");\n    }\n    if (deny_) {\n      res.append(indent, ' ').append(\"deny: true\\n\");\n    }\n    if (precedence_) {\n      res.append(indent, ' ').append(fmt::format(\"precedence: {}\\n\", precedence_));\n    }\n    if (tier_last_precedence_) {\n      res.append(indent, ' ')\n          .append(fmt::format(\"tier_last_precedence: {}\\n\", tier_last_precedence_));\n    }\n    if (proxy_id_ != 0) {\n      res.append(indent, ' ').append(fmt::format(\"proxy_id: {}\\n\", proxy_id_));\n    }\n\n    if (!allowed_snis_.empty()) {\n      res.append(indent, ' ').append(\"allowed_snis: [\");\n      int count = 0;\n      for (auto& sni : allowed_snis_) {\n        if (count++ > 0) {\n          res.append(\",\");\n        }\n        sni.toString(res);\n      }\n      res.append(\"]\\n\");\n    }\n\n    if (hasHttpRules()) {\n      res.append(indent, ' ').append(\"http_rules:\\n\");\n      for (auto& rule : *http_rules_) {\n        rule.toString(indent + 2, res);\n      }\n    }\n\n    if (!l7_proto_.empty()) {\n      res.append(indent, ' ').append(\"l7_proto: \\\"\").append(l7_proto_).append(\"\\\"\\n\");\n    }\n    if (!l7_allow_rules_.empty()) {\n      res.append(indent, ' ').append(\"l7_allow_rules:\\n\");\n      for (auto& rule : l7_allow_rules_) {\n        rule.toString(indent + 2, res);\n      }\n    }\n    if (!l7_deny_rules_.empty()) {\n      res.append(indent, ' ').append(\"l7_deny_rules:\\n\");\n      for (auto& rule : l7_deny_rules_) {\n        rule.toString(indent + 2, res);\n      }\n    }\n  }\n\n  bool hasHttpRules() const { return http_rules_ && !http_rules_->empty(); }\n\n  std::string name_;\n  DownstreamTLSContextSharedPtr server_context_;\n  UpstreamTLSContextSharedPtr client_context_;\n  bool has_headermatches_{false};\n  bool deny_;\n  uint16_t proxy_id_;\n  uint32_t precedence_;\n  uint32_t tier_last_precedence_;\n  absl::btree_set<uint32_t> remotes_;\n  bool mutable_remotes_;\n\n  std::vector<SniPattern> allowed_snis_; // All SNIs allowed if empty.\n  std::shared_ptr<std::vector<HttpNetworkPolicyRule>>\n      http_rules_; // Allowed if empty, but remote is checked first.\n  std::string l7_proto_;\n  std::vector<L7NetworkPolicyRule> l7_allow_rules_;\n  std::vector<L7NetworkPolicyRule> l7_deny_rules_;\n};\nusing PortNetworkPolicyRuleSharedPtr = std::shared_ptr<PortNetworkPolicyRule>;\nusing PortNetworkPolicyRuleConstSharedPtr = std::shared_ptr<const PortNetworkPolicyRule>;\n\nclass PortNetworkPolicyRules : public Logger::Loggable<Logger::Id::config> {\npublic:\n  PortNetworkPolicyRules() = default;\n\n  ~PortNetworkPolicyRules() {\n    if (!Thread::MainThread::isMainOrTestThread()) {\n      IS_ENVOY_BUG(\"PortNetworkPolicyRules: Destructor executing in a worker thread, while \"\n                   \"only main thread should destruct xDS resources\");\n    }\n  }\n\n  void clear() {\n    rules_.clear();\n    can_short_circuit_ = true;\n    has_pass_rules_ = false;\n  }\n\n  // Move assignment operator\n  PortNetworkPolicyRules& operator=(PortNetworkPolicyRules&& other) noexcept = default;\n\n  // Move constructor\n  PortNetworkPolicyRules(PortNetworkPolicyRules&& other) noexcept = default;\n\n  // Copy constructors\n  PortNetworkPolicyRules& operator=(const PortNetworkPolicyRules&) = default;\n  PortNetworkPolicyRules(const PortNetworkPolicyRules&) = default;\n\n  void updateFor(const PortNetworkPolicyRuleConstSharedPtr& rule) {\n    if (rule->has_headermatches_) {\n      can_short_circuit_ = false;\n    }\n    if (rule->tier_last_precedence_ != 0) {\n      has_pass_rules_ = true;\n    }\n  }\n\n  void addDefaultAllowRule() { rules_.emplace_back(std::make_shared<PortNetworkPolicyRule>()); }\n\n  // append merges 'rules' to 'rules_' by placing the new 'rules' to the end of 'rules_'.\n  // First call marks 'rules_' as initialized. Of further calls, if either is empty,\n  // we must add a default allow rule to retain the semantics of an empty rules.\n  void append(const NetworkPolicyMapImpl& parent,\n              const Protobuf::RepeatedPtrField<cilium::PortNetworkPolicyRule>& rules,\n              bool shared_resource) {\n    if (initialized_ && rules.empty() != rules_.empty()) {\n      // add an explicit allow-all rule to keep the combined semantics\n      addDefaultAllowRule();\n    }\n    for (const auto& it : rules) {\n      rules_.emplace_back(std::make_shared<PortNetworkPolicyRule>(parent, it, shared_resource));\n      updateFor(rules_.back());\n    }\n    initialized_ = true;\n  }\n\n  // prepend merges 'rules' to 'rules_' by placing the new 'rules' to the front of 'rules_'.\n  // First call marks 'rules_' as initialized. Of further calls, if either is empty,\n  // we must add a default allow rule to retain the semantics of an empty rules.\n  void prepend(const NetworkPolicyMapImpl& parent,\n               const Protobuf::RepeatedPtrField<cilium::PortNetworkPolicyRule>& rules,\n               bool shared_resource) {\n    if (initialized_ && rules.empty() != rules_.empty()) {\n      // add an explicit allow-all rule to keep the combined semantics\n      rules_.emplace(rules_.begin(), std::make_shared<PortNetworkPolicyRule>());\n    }\n    for (const auto& it : rules) {\n      rules_.emplace(rules_.begin(),\n                     std::make_shared<PortNetworkPolicyRule>(parent, it, shared_resource));\n      updateFor(rules_.front());\n    }\n    initialized_ = true;\n  }\n\n  // appendNonPassRules merges non-pass rules from 'rules' to 'rules_' by placing the new rules to\n  // the end of 'rules_'. First call marks 'rules_' as initialized. Of further calls, if either is\n  // empty, we must add a default allow rule to retain the semantics of an empty rules.\n  void appendNonPassRules(const std::vector<PortNetworkPolicyRuleConstSharedPtr>& rules) {\n    if (initialized_ && rules.empty() != rules_.empty()) {\n      // add an explicit allow-all rule to keep the combined semantics\n      addDefaultAllowRule();\n    }\n    for (auto& rule : rules) {\n      if (rule->tier_last_precedence_ == 0) {\n        rules_.insert(rules_.end(), rule);\n        updateFor(rule);\n      }\n    }\n    initialized_ = true;\n  }\n\n  // sort by descending precedence, retaining the original order within each precedence level\n  void sort() {\n    // sortRules(rules_);\n    std::stable_sort(rules_.begin(), rules_.end(),\n                     [](const PortNetworkPolicyRuleConstSharedPtr& a,\n                        const PortNetworkPolicyRuleConstSharedPtr& b) {\n                       return (a->precedence_ > b->precedence_) ||\n                              (a->precedence_ == b->precedence_ && (a->deny_ && !b->deny_));\n                     });\n  }\n\n  bool empty() const { return rules_.empty(); }\n\n  template <typename F> RuleVerdict forEachRule(bool can_short_circuit, F&& func) const {\n    RuleVerdict verdict = RuleVerdict::None;\n    uint32_t verdict_precedence = 0;\n\n    // Uninitialized rules match nothing\n    ASSERT(initialized_, \"uninitialized rules\");\n    if (!initialized_) {\n      return verdict;\n    }\n\n    // Empty set matches any payload from anyone\n    if (empty()) {\n      return RuleVerdict::Allow;\n    }\n\n    for (const auto& rule : rules_) {\n      // lower precedence rules are skipped if there is a verdict\n      if (verdict != RuleVerdict::None && rule->precedence_ < verdict_precedence) {\n        break;\n      }\n      auto rule_verdict = func(*rule);\n      if (rule_verdict != RuleVerdict::None) {\n        verdict = rule_verdict;\n        verdict_precedence = rule->precedence_;\n\n        // Short-circuit on the first deny or on first allow if no rules have HeaderMatches\n        if (rule_verdict == RuleVerdict::Deny || can_short_circuit) {\n          break;\n        }\n      }\n    }\n    return verdict;\n  }\n\n  // forEachRulePred return a RuleVerdict by scanning through all rules, getting the verdict for\n  // each rule and checking if the predicate matches. Returns RuleVerdict::Allow if any rule allows\n  // the traffic, even if the predicate returns false. Stops as soon as the first rule returns\n  // 'true' for the predicate.\n  // This is used to the applicable TLS context from the rules, if any. Note that in this use 'pred'\n  // has side effects, but it is idempotent.\n  template <typename F, typename P> RuleVerdict forEachRulePred(F&& get_verdict, P&& pred) const {\n    RuleVerdict verdict = RuleVerdict::None;\n    uint32_t verdict_precedence = 0;\n\n    // Uninitialized rules match nothing\n    ASSERT(initialized_, \"uninitialized rules\");\n    if (!initialized_) {\n      return verdict;\n    }\n\n    // Empty set matches any payload from anyone\n    if (empty()) {\n      return RuleVerdict::Allow;\n    }\n\n    for (const auto& rule : rules_) {\n      auto rule_verdict = get_verdict(*rule);\n      switch (rule_verdict) {\n      case RuleVerdict::Deny:\n        // return higher precedence allow verdict if any.\n        if (verdict != RuleVerdict::None && verdict_precedence > rule->precedence_) {\n          return verdict;\n        }\n        return rule_verdict;\n      case RuleVerdict::Allow:\n        if (pred(*rule)) {\n          // Return after the first allow verdict that fulfills the predicate\n          return rule_verdict;\n        }\n        // store highest precedence allow verdict that does not fulfill the predicate\n        if (verdict == RuleVerdict::None) {\n          verdict = rule_verdict;\n          verdict_precedence = rule->precedence_;\n        }\n        break;\n      case RuleVerdict::None:\n        break;\n      }\n    }\n    return verdict;\n  }\n\n  RuleVerdict getVerdict(uint16_t proxy_id, uint32_t remote_id,\n                         Envoy::Http::RequestHeaderMap& headers,\n                         Cilium::AccessLog::Entry& log_entry) const {\n    auto verdict = forEachRule(can_short_circuit_, [&](const auto& rule) {\n      return rule.getVerdict(proxy_id, remote_id, headers, log_entry);\n    });\n\n    ENVOY_LOG(trace,\n              \"Cilium L7 PortNetworkPolicyRules(proxy_id: {}, remote_id: {}, headers: {}): {}\",\n              proxy_id, remote_id, headers, verdict);\n    return verdict;\n  }\n\n  RuleVerdict getVerdict(uint16_t proxy_id, uint32_t remote_id, absl::string_view sni) const {\n    auto verdict = forEachRule(\n        true, [&](const auto& rule) { return rule.getVerdict(proxy_id, remote_id, sni); });\n\n    ENVOY_LOG(trace, \"Cilium L7 PortNetworkPolicyRules(proxy_id: {}, remote_id: {}, sni: {}): {}\",\n              proxy_id, remote_id, sni, verdict);\n    return verdict;\n  }\n\n  RuleVerdict useProxylib(uint16_t proxy_id, uint32_t remote_id, std::string& l7_proto) const {\n    return forEachRule(\n        true, [&](const auto& rule) { return rule.useProxylib(proxy_id, remote_id, l7_proto); });\n  }\n\n  RuleVerdict getVerdict(uint16_t proxy_id, uint32_t remote_id,\n                         const envoy::config::core::v3::Metadata& metadata) const {\n    auto verdict = forEachRule(\n        true, [&](const auto& rule) { return rule.getVerdict(proxy_id, remote_id, metadata); });\n\n    ENVOY_LOG(trace,\n              \"Cilium L7 PortNetworkPolicyRules(proxy_id: {}, remote_id: {}, metadata: {}): {}\",\n              proxy_id, remote_id, metadata.DebugString(), verdict);\n\n    return verdict;\n  }\n\n  RuleVerdict getServerTlsContext(uint16_t proxy_id, uint32_t remote_id, absl::string_view sni,\n                                  Ssl::ContextSharedPtr& tls_ctx,\n                                  const Ssl::ContextConfig*& config) const {\n    tls_ctx = nullptr;\n    return forEachRulePred(\n        [&](const auto& rule) { return rule.getVerdict(proxy_id, remote_id, sni); },\n        [&](const auto& rule) { return rule.getServerTlsContext(tls_ctx, config); });\n  }\n\n  RuleVerdict getClientTlsContext(uint16_t proxy_id, uint32_t remote_id, absl::string_view sni,\n                                  Ssl::ContextSharedPtr& tls_ctx,\n                                  const Ssl::ContextConfig*& config) const {\n    tls_ctx = nullptr;\n    return forEachRulePred(\n        [&](const auto& rule) { return rule.getVerdict(proxy_id, remote_id, sni); },\n        [&](const auto& rule) { return rule.getClientTlsContext(tls_ctx, config); });\n  }\n\n  void toString(int indent, std::string& res) const {\n    res.append(indent - 2, ' ').append(\"- rules:\\n\");\n    for (auto& rule : rules_) {\n      rule->toString(indent + 2, res);\n    }\n    if (!can_short_circuit_) {\n      res.append(indent, ' ').append(fmt::format(\"can_short_circuit: false\\n\"));\n    }\n  }\n\n  bool hasHttpRules() const {\n    for (const auto& rule : rules_) {\n      if (rule->hasHttpRules()) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  // ordered set of rules as a sorted vector\n  std::vector<PortNetworkPolicyRuleConstSharedPtr> rules_; // Allowed if empty.\n  bool can_short_circuit_{true};\n  bool has_pass_rules_{false};\n  bool initialized_{false};\n};\n\nnamespace {\n\nconst PortNetworkPolicyRules* findPortRules(const PolicyMap& map, uint16_t port) {\n  // Look up with an exact port first, then fall back to the wildcard port (0). If policy is found\n  // with the exact port, then the returned policy also contains all the wildcard port rules, so we\n  // do not need to perform a separate wildcard port policy lookup. If no policy is defined for the\n  // given port, then the wildcard port policy, consisting just of the wildcard port rules, is used,\n  // if one exists.\n  //\n  // On lookups we'll set both ends of the port range to the same port number, which will find the\n  // one range that it overlaps with in the map, if one exists (ref. PortRangeCompare definition).\n  if (const auto it = map.find({port, port}); it != map.cend()) {\n    return &it->second;\n  }\n  if (const auto wildcard = map.find({0, 0}); wildcard != map.cend()) {\n    return &wildcard->second;\n  }\n  return nullptr;\n}\n\n} // namespace\n\nPortPolicy::PortPolicy(const PolicyMap& map, uint16_t port)\n    : map_(map), port_rules_(findPortRules(map_, port)),\n      has_http_rules_(port_rules_ && port_rules_->hasHttpRules()) {}\n\nbool PortPolicy::useProxylib(uint16_t proxy_id, uint32_t remote_id, std::string& l7_proto) const {\n  if (port_rules_) {\n    auto verdict = port_rules_->useProxylib(proxy_id, remote_id, l7_proto);\n    if (verdict == RuleVerdict::Allow) {\n      return true;\n    }\n  }\n  l7_proto = \"\";\n  return false;\n}\n\nbool PortPolicy::allowed(uint16_t proxy_id, uint32_t remote_id,\n                         Envoy::Http::RequestHeaderMap& headers,\n                         Cilium::AccessLog::Entry& log_entry) const {\n  // Network layer policy has already been enforced. If there are no http rules, then there is\n  // nothing to do.\n  if (!has_http_rules_) {\n    return true;\n  }\n  if (!port_rules_) {\n    return false;\n  }\n  return port_rules_->getVerdict(proxy_id, remote_id, headers, log_entry) == RuleVerdict::Allow;\n}\n\nbool PortPolicy::allowed(uint16_t proxy_id, uint32_t remote_id, absl::string_view sni) const {\n  if (!port_rules_) {\n    return false;\n  }\n  return port_rules_->getVerdict(proxy_id, remote_id, sni) == RuleVerdict::Allow;\n}\n\nbool PortPolicy::allowed(uint16_t proxy_id, uint32_t remote_id,\n                         const envoy::config::core::v3::Metadata& metadata) const {\n  if (!port_rules_) {\n    return false;\n  }\n  return port_rules_->getVerdict(proxy_id, remote_id, metadata) == RuleVerdict::Allow;\n}\n\nSsl::ContextSharedPtr PortPolicy::getServerTlsContext(uint16_t proxy_id, uint32_t remote_id,\n                                                      absl::string_view sni,\n                                                      const Ssl::ContextConfig*& config,\n                                                      bool& raw_socket_allowed) const {\n  Ssl::ContextSharedPtr tls_ctx;\n\n  config = nullptr;\n  raw_socket_allowed = false;\n  if (port_rules_) {\n    auto verdict = port_rules_->getServerTlsContext(proxy_id, remote_id, sni, tls_ctx, config);\n    raw_socket_allowed = verdict == RuleVerdict::Allow && tls_ctx == nullptr && config == nullptr;\n  }\n  return tls_ctx;\n}\n\nSsl::ContextSharedPtr PortPolicy::getClientTlsContext(uint16_t proxy_id, uint32_t remote_id,\n                                                      absl::string_view sni,\n                                                      const Ssl::ContextConfig*& config,\n                                                      bool& raw_socket_allowed) const {\n  Ssl::ContextSharedPtr tls_ctx;\n\n  config = nullptr;\n  raw_socket_allowed = false;\n  if (port_rules_) {\n    auto verdict = port_rules_->getClientTlsContext(proxy_id, remote_id, sni, tls_ctx, config);\n    raw_socket_allowed = verdict == RuleVerdict::Allow && tls_ctx == nullptr && config == nullptr;\n  }\n  return tls_ctx;\n}\n\nnamespace {\n// Ranges overlap when one is not completely below or above the other\nbool inline rangesOverlap(const PortRange& a, const PortRange& b) {\n  // !(a.second < b.first || a.first > b.second)\n  return a.second >= b.first && a.first <= b.second;\n}\n\ntemplate <typename T>\nabsl::btree_set<T> intersection(const absl::btree_set<T>& a, const absl::btree_set<T>& b) {\n  absl::btree_set<T> result;\n  std::set_intersection(a.begin(), a.end(), b.begin(), b.end(),\n                        std::inserter(result, result.begin()));\n  return result;\n}\n} // namespace\n\n// ShadowedRemotes maintains state for shadowed remote identities within a tier. When a higher\n// precedence rule has a verdict for a given remote identity, that identity becomes \"shadowed\" and\n// is removed from the set of remote identities of the remaining rules of the tier. For pass\n// verdicts this shadowing is immediate, for allow/deny verdicts the shadowing takes place for the\n// next precedence level, so that rules on the same precedence level do not shadow each other.\nclass ShadowedRemotes {\npublic:\n  // reset is used to re-initialize state for a new port range\n  void reset(uint32_t first_precedence) {\n    shadowed_pass_remotes_.clear();\n    shadowed_nonpass_remotes_.clear();\n    current_precedence_nonpass_remotes_.clear();\n    shadow_all_lower_precedence_ = false;\n    current_precedence_has_wildcard_ = false;\n    previous_precedence_ = first_precedence;\n  }\n\n  // resetForNewTier is used to re-initialize state for each new tier\n  void resetForNewTier(uint32_t first_precedence) {\n    shadowed_pass_remotes_.clear();\n    // shadowed_nonpass_remotes_ are kept for the new tier\n    // shadow_all_lower_precedence_ is not reset for the new tier\n    current_precedence_nonpass_remotes_.clear();\n    // current_precedence_has_wildcard_ = false;\n    previous_precedence_ = first_precedence;\n  }\n\n  // shadowRemotes marks 'remotes' as shadowed and returns 'true' if any of them were not already\n  // shadowed.\n  bool shadowPassRemotes(const absl::btree_set<uint32_t>& pass_remotes) {\n    bool any_unshadowed = false;\n    for (auto remote : pass_remotes) {\n      if (!shadowed_pass_remotes_.contains(remote)) {\n        if (!shadowed_nonpass_remotes_.contains(remote)) {\n          any_unshadowed = true;\n        }\n        shadowed_pass_remotes_.insert(remote);\n      }\n    }\n    return any_unshadowed;\n  }\n\n  // filterShadowPassRemotes filters out any already shadowed remotes from the pass rule and marks\n  // the remaining remotes as shadowed. Returns 'true' if any remotes remain.\n  bool filterShadowPassRemotes(PortNetworkPolicyRule& rule) {\n    absl::erase_if(rule.remotes_, [&](const auto& x) {\n      return shadowed_pass_remotes_.contains(x) || shadowed_nonpass_remotes_.contains(x);\n    });\n    if (rule.remotes_.empty()) {\n      return false;\n    }\n    shadowed_pass_remotes_.insert(rule.remotes_.begin(), rule.remotes_.end());\n    return true;\n  }\n\n  // shadowRule collects the remotes from 'rule' for shadowing once the first rule on the next\n  // (lower) precedence level is processed. No shadowing between rules on the same precedence\n  // level. Returns 'true' if the rule itself should be skipped.\n  bool shadowNonpassRule(PortNetworkPolicyRule& rule) {\n    // Same-precedence allow/deny rules do not shadow each other.\n    // Only after leaving a precedence level do its verdict identities shadow\n    // lower-precedence rules.\n    if (rule.precedence_ != previous_precedence_) {\n      shadowed_nonpass_remotes_.insert(current_precedence_nonpass_remotes_.begin(),\n                                       current_precedence_nonpass_remotes_.end());\n      current_precedence_nonpass_remotes_.clear();\n      if (current_precedence_has_wildcard_) {\n        shadow_all_lower_precedence_ = true;\n      }\n      // current_precedence_has_wildcard_ = false;\n      previous_precedence_ = rule.precedence_;\n    }\n\n    if (shadow_all_lower_precedence_) {\n      return true;\n    }\n\n    if (rule.isRemoteWildcard()) {\n      current_precedence_has_wildcard_ = true;\n    } else {\n      if (rule.mutable_remotes_) {\n        // Check if this rule is (partially) shadowed by nonpass rules on any higher tier.\n        if (!shadowed_nonpass_remotes_.empty()) {\n          absl::erase_if(rule.remotes_,\n                         [&](const auto& x) { return shadowed_nonpass_remotes_.contains(x); });\n          if (rule.remotes_.empty()) {\n            return true;\n          }\n        }\n\n        // Check if this rule is (partially) shadowed by pass rules on this tier.\n        if (!shadowed_pass_remotes_.empty()) {\n          absl::erase_if(rule.remotes_,\n                         [&](const auto& x) { return shadowed_pass_remotes_.contains(x); });\n          if (rule.remotes_.empty()) {\n            return true;\n          }\n        }\n      } else {\n        // rule.remotes_ can not be modified, check if it is completely shadowed\n        if (std::ranges::all_of(rule.remotes_, [&](const auto& x) {\n              return shadowed_nonpass_remotes_.contains(x) || shadowed_pass_remotes_.contains(x);\n            })) {\n          return true;\n        }\n      }\n\n      // Defer shadowing identities until this precedence level is complete,\n      // so same-precedence rules do not shadow each other.\n      current_precedence_nonpass_remotes_.insert(rule.remotes_.begin(), rule.remotes_.end());\n    }\n\n    return false;\n  }\n\nprivate:\n  absl::btree_set<uint32_t> shadowed_pass_remotes_;\n  absl::btree_set<uint32_t> shadowed_nonpass_remotes_;\n  absl::btree_set<uint32_t> current_precedence_nonpass_remotes_;\n  uint32_t previous_precedence_{0};\n  bool shadow_all_lower_precedence_{false};\n  bool current_precedence_has_wildcard_{false};\n};\n\nclass Passes {\npublic:\n  // reset state for a new port range\n  void reset(uint32_t first_precedence) {\n    wildcard_it_ = wildcard_pass_rules_.begin();\n    pass_rules_.clear();\n    pass_rules_tier_index_.clear();\n\n    tier_pass_rules_.clear();\n    tier_wildcard_pass_ = false;\n    pass_precedence_ = 0;\n\n    shadowing_.reset(first_precedence);\n  }\n\n  void resetForNextTier(uint32_t first_precedence) {\n    // Move the collected pass rules to be considered for lower tiers.\n    pass_rules_tier_index_.push_back(pass_rules_.size());\n    pass_rules_.insert(pass_rules_.end(), std::make_move_iterator(tier_pass_rules_.begin()),\n                       std::make_move_iterator(tier_pass_rules_.end()));\n\n    tier_pass_rules_.clear();\n    tier_wildcard_pass_ = false;\n    pass_precedence_ = 0;\n\n    shadowing_.resetForNewTier(first_precedence);\n  }\n\n  void inheritHigherTierWildcardPassRules(uint32_t precedence) {\n    // Inherit *higher tier* pass rules from the wildcard port.\n    // Needed since the wildcard port may have more tiers.\n    for (; wildcard_it_ != wildcard_pass_rules_.end() &&\n           (*wildcard_it_)->tier_last_precedence_ > precedence;\n         wildcard_it_++) {\n      const auto& wildcard_rule = *wildcard_it_;\n      // Add index entry if this starts a new pass tier.\n      if (pass_rules_.empty() ||\n          wildcard_rule->tier_last_precedence_ != pass_rules_.back()->tier_last_precedence_) {\n        pass_rules_tier_index_.push_back(pass_rules_.size());\n      }\n      pass_rules_.insert(pass_rules_.end(), wildcard_rule);\n    }\n  }\n\n  void inheritCurrentTierWildcardPassRules(uint32_t precedence) {\n    // Inherit *current tier* higher or equal precedence pass rules from wildcard port.\n    for (;\n         wildcard_it_ != wildcard_pass_rules_.end() && (*wildcard_it_)->precedence_ >= precedence &&\n         (*wildcard_it_)->tier_last_precedence_ <= precedence;\n         wildcard_it_++) {\n      const auto& wildcard_rule = *wildcard_it_;\n\n      ensurePassPrecedence(wildcard_rule->tier_last_precedence_);\n\n      if (tier_wildcard_pass_) {\n        continue;\n      }\n\n      // Insert to tier_pass_rules_ if any unshadowed remotes remain.\n      if (wildcard_rule->isRemoteWildcard()) {\n        tier_wildcard_pass_ = true;\n      } else if (!shadowing_.shadowPassRemotes(wildcard_rule->remotes_)) {\n        // Only insert if some remotes are not already shadowed.\n        // We do not remove already-shadowed remotes from wildcard_rule because\n        // wildcard pass entries are shared and deep-copying here is expensive.\n        continue;\n      }\n      tier_pass_rules_.emplace_back(wildcard_rule);\n    }\n  }\n\n  // addPassRule adds state from a rule with a pass verdict.\n  void addPassRule(const PortNetworkPolicyRuleConstSharedPtr& rule) {\n    ensurePassPrecedence(rule->tier_last_precedence_);\n\n    auto& mutable_rule = const_cast<PortNetworkPolicyRule&>(*rule);\n\n    if (!tier_wildcard_pass_) {\n      if (mutable_rule.isRemoteWildcard()) {\n        tier_wildcard_pass_ = true;\n      } else if (!shadowing_.filterShadowPassRemotes(mutable_rule)) {\n        return;\n      }\n      if (!tier_pass_rules_.empty() && tier_pass_rules_.back()->precedence_ == rule->precedence_) {\n        // Same-precedence pass rule already exists; merge remotes.\n        tier_pass_rules_.back()->remotes_.insert(mutable_rule.remotes_.begin(),\n                                                 mutable_rule.remotes_.end());\n      } else {\n        tier_pass_rules_.emplace_back(std::const_pointer_cast<PortNetworkPolicyRule>(rule));\n      }\n    }\n  }\n\n  bool\n  promoteRuleFromHigherTierPasses(std::vector<PortNetworkPolicyRuleConstSharedPtr>& rules,\n                                  std::vector<PortNetworkPolicyRuleConstSharedPtr>::iterator& it) {\n    // Mutable reference to the rule for in-place updates below.\n    auto& rule = const_cast<PortNetworkPolicyRule&>(**it);\n\n    bool promoted = false;\n\n    // Check if this rule needs to be (partially) promoted due to higher-tier passes:\n    // - pick highest-precedence pass from each higher tier for each remote ID\n    // - apply in reverse order of tiers\n    // - if all remotes are covered, promotion can happen fully in-place.\n    int tier_end = pass_rules_.size();\n    for (int tier_start : pass_rules_tier_index_ | std::views::reverse) {\n      // Skip pass rules on same or lower tiers.\n      if (pass_rules_[tier_start]->tier_last_precedence_ < rule.precedence_) {\n        continue;\n      }\n\n      for (int idx = tier_start; idx < tier_end; idx++) {\n        auto& pass_rule = pass_rules_[idx];\n        // Whole rule is promoted in-place if pass is wildcard or sets are equal.\n        if (pass_rule->isRemoteWildcard() || rule.remotes_ == pass_rule->remotes_) {\n          rule.inheritPassPrecedence(*pass_rule);\n          promoted = true;\n          break; // Later pass verdicts on this tier have no effect.\n        }\n\n        // Pass rule is not wildcard and sets differ.\n        // If mutable_rule is wildcard, keep original and add promoted clone.\n        if (rule.isRemoteWildcard()) {\n          auto new_rule = std::make_shared<PortNetworkPolicyRule>(rule);\n          new_rule->remotes_ = pass_rule->remotes_;\n          new_rule->inheritPassPrecedence(*pass_rule);\n          it = rules.insert(it, new_rule);\n          it++;\n          promoted = true;\n          continue; // Later pass verdicts may specify other remote sets.\n        }\n\n        // Neither side is wildcard; split by set intersection.\n        auto remotes = intersection(pass_rule->remotes_, rule.remotes_);\n        if (!remotes.empty()) {\n          auto new_rule = std::make_shared<PortNetworkPolicyRule>(rule);\n          new_rule->remotes_ = remotes;\n          new_rule->inheritPassPrecedence(*pass_rule);\n          it = rules.insert(it, new_rule);\n          it++;\n          promoted = true;\n          for (const auto& remote : remotes) {\n            rule.remotes_.erase(remote);\n          }\n        }\n      }\n      // Update for previous tier, if any.\n      tier_end = tier_start;\n    }\n\n    return promoted;\n  }\n\n  // storeWildcardPassRules stores the current pass rules as wildcard port pass rules to be\n  // considered when processing non-wildcard port rules.\n  void storeWildcardPassRules(const PortRange& port_range) {\n    if (!wildcard_pass_rules_.empty()) {\n      throw EnvoyException(fmt::format(\"PortNetworkPolicy: Wildcard port range {}-{}, but \"\n                                       \"wildcard pass rules has already been set\",\n                                       port_range.first, port_range.second));\n    }\n    wildcard_pass_rules_ = pass_rules_;\n\n    // store also the pass rules for the last tier, as they are not yet included in pass_rules_.\n    if (pass_precedence_ != 0 && !tier_pass_rules_.empty()) {\n      wildcard_pass_rules_.insert(wildcard_pass_rules_.end(),\n                                  std::make_move_iterator(tier_pass_rules_.begin()),\n                                  std::make_move_iterator(tier_pass_rules_.end()));\n    }\n  }\n\n  // Applies pass verdicts for rules on a given port range.\n  // Returns true if resulting rules should be kept, false if the rules became empty.\n  //\n  // - a pass verdict rule applies on a given port (range) (can be the wildcard port),\n  //   and a set of remote IDs (L3). If the remote ID set is empty, then it applies to all peers.\n  //   (there is no \"wildcard identity\" (e.g., '0') in the set of the remote IDs)\n  // - a pass verdict rule (like a deny verdict rule) has no L7 rule components\n  // - each pass verdict rule has a specific precedence and pass_precedence, and the function is\n  //   to bypass the remaining lower precedence rules upto the pass_precedence, and to promote the\n  //   priority of the intersecting remote ID set lower precedence rules to immediately follow\n  //   the precedence of the pass verdict rule.\n  // - Precedence promotion is needed to make a verdicts found via actual port vs. wildcard port\n  //   comparable. This allows a higher precedence allow rule to take precedence over a lower\n  //   precedence deny rule, even it the allow originally had a lower precedence, but was\n  //   \"passed-to\" from a higher precedece pass rule.\n  //\n  // We pre-process the rules accordingly here so that the policy lookup at enforcement time\n  // does not need to consider pass verdicts at all. The key insights to consider are:\n  // - rules are already split up to non-overlapping port ranges, so we only need\n  //   to consider the remote ID sets (and the wildcard port)\n  // - if the lower precedence rule remote ID set is covered by the pass rule remote ID set,\n  //   then we can simply promote the precedence (and re-sort afterwards)\n  //   - if the pass rule applies to all remote IDs (empty set == wildcard), then it covers all\n  //     possible sets of remote IDs\n  //   - if not wildcard, but the sets are the same, then the pass verdicts \"covers\" the rule\n  //     in question\n  // - otherwise the rule needs to be split into two:\n  //   - one with the intersection of the remote IDs of the two rules, with precedence promotion\n  //   - other with the remaining remote IDs, left with the original precedence\n  //     - this includes the case where the lower precedence rule applies to all identities\n  //       (empty ID set)\n  void apply(const PortRange& port_range, PortNetworkPolicyRules& rules) {\n    if (rules.rules_.empty() && !wildcard_pass_rules_.empty()) {\n      // add the default allow rule so that the wildcard port pass can apply to it.\n      rules.addDefaultAllowRule();\n    }\n    if (!rules.rules_.empty() && (!wildcard_pass_rules_.empty() || rules.has_pass_rules_)) {\n      bool must_sort = false;\n\n      // reset state for the new range's rules\n      reset(rules.rules_.front()->precedence_);\n\n      bool keep = false; // assume rule is dropped\n      for (auto it = rules.rules_.begin(); it != rules.rules_.end();\n           it = keep ? (keep = false, ++it) : rules.rules_.erase(it)) {\n        auto& rule = *it;\n\n        // Check if we have reached the next tier.\n        if (pass_precedence_ != 0 && rule->precedence_ < pass_precedence_) {\n          resetForNextTier(rule->precedence_);\n        }\n\n        // Skip remaining rules on this tier?\n        if (tier_wildcard_pass_) {\n          continue;\n        }\n\n        // Inherit wildcard-port pass rules affecting this rule.\n        inheritHigherTierWildcardPassRules(rule->precedence_);\n        inheritCurrentTierWildcardPassRules(rule->precedence_);\n\n        // skip remaining rules on this tier?\n        if (tier_wildcard_pass_) {\n          continue;\n        }\n\n        // Is this a pass verdict rule?\n        if (rule->tier_last_precedence_ != 0) {\n          addPassRule(rule);\n          // Pass rules are not kept\n          continue;\n        }\n\n        // Is the rule shadowed? (If not then updates shadowed state)\n        if (shadowing_.shadowNonpassRule(const_cast<PortNetworkPolicyRule&>(*rule))) {\n          continue;\n        }\n\n        // Apply passes to the rule and insert.\n        if (promoteRuleFromHigherTierPasses(rules.rules_, it)) {\n          must_sort = true;\n        }\n        // keep rule in place\n        keep = true;\n      }\n\n      // Have to sort if precedences have been updated in-place.\n      if (must_sort) {\n        rules.sort();\n\n        // remove shadowed rules due to promoted precedences\n        shadowing_.reset(rules.rules_.front()->precedence_);\n        for (auto it = rules.rules_.begin(); it != rules.rules_.end();\n             it = keep ? ++it : rules.rules_.erase(it)) {\n          keep = !shadowing_.shadowNonpassRule(const_cast<PortNetworkPolicyRule&>(**it));\n        }\n      }\n\n      // Store wildcard port passes for consideration for non-wildcard ports.\n      if (port_range.first == 0) {\n        storeWildcardPassRules(port_range);\n      }\n\n      // Mark ranges with all rules removed for clean-up.\n      if (rules.empty()) {\n        // Empty rule set would always allow. Mark for removal.\n        empty_ranges_.push_back(port_range);\n      }\n    }\n  }\n\n  std::vector<PortRange>& emptyRanges() { return empty_ranges_; }\n\nprivate:\n  void ensurePassPrecedence(uint32_t tier_last_precedence) {\n    // pass_precedence_ is non-zero when a pass verdict has been seen and\n    // defines the end of the current tier. All pass verdicts on a specific\n    // tier must have the same pass_precedence so tier boundaries stay unambiguous.\n    if (tier_last_precedence == 0 ||\n        (pass_precedence_ != 0 && tier_last_precedence != pass_precedence_)) {\n      throw EnvoyException(fmt::format(\"PortNetworkPolicy: Inconsistent pass precedence {} != {}\",\n                                       tier_last_precedence, pass_precedence_));\n    }\n    pass_precedence_ = tier_last_precedence;\n  }\n\n  std::vector<PortRange> empty_ranges_;\n  std::vector<PortNetworkPolicyRuleSharedPtr> wildcard_pass_rules_;\n  std::vector<PortNetworkPolicyRuleSharedPtr>::iterator wildcard_it_;\n  ShadowedRemotes shadowing_;\n  std::vector<PortNetworkPolicyRuleSharedPtr> pass_rules_;\n  std::vector<int> pass_rules_tier_index_;\n  uint32_t pass_precedence_{0};\n  std::vector<PortNetworkPolicyRuleSharedPtr> tier_pass_rules_;\n  bool tier_wildcard_pass_{false};\n};\n\nclass PortNetworkPolicy : public Logger::Loggable<Logger::Id::config> {\npublic:\n  PortNetworkPolicy(const NetworkPolicyMapImpl& parent,\n                    const Protobuf::RepeatedPtrField<cilium::PortNetworkPolicy>& rules) {\n    for (const auto& rule : rules) {\n      // Only TCP supported for HTTP\n      if (rule.protocol() == envoy::config::core::v3::SocketAddress::TCP) {\n        // Port may be zero, which matches any port.\n        uint16_t port = rule.port();\n        // End port may be zero, which means no range\n        uint16_t end_port = rule.end_port();\n        if (end_port < port) {\n          if (end_port != 0) {\n            throw EnvoyException(fmt::format(\n                \"PortNetworkPolicy: Invalid port range, end port is less than start port {}-{}\",\n                port, end_port));\n          }\n          end_port = port;\n        }\n\n        if (port == 0) {\n          if (end_port > 0) {\n            throw EnvoyException(fmt::format(\n                \"PortNetworkPolicy: Invalid port range including the wildcard zero port {}-{}\",\n                port, end_port));\n          }\n        }\n\n        ENVOY_LOG(trace,\n                  \"Cilium L7 PortNetworkPolicy(): installing TCP policy for \"\n                  \"port range {}-{}\",\n                  port, end_port);\n\n        auto rule_range = std::make_pair(port, end_port);\n        auto pair = rules_.emplace(rule_range, PortNetworkPolicyRules{});\n        auto it = pair.first;\n        if (!pair.second) {\n          ENVOY_LOG(trace, \"Cilium L7 PortNetworkPolicy(): new entry [{}-{}] overlaps with [{}-{}]\",\n                    port, end_port, it->first.first, it->first.second);\n          // Explicitly manage overlapping ranges by breaking them up.\n          //\n          // rules_ has the breaked up, non-overlapping ranges in order.\n          //\n          // While iterating through all the existing overlapping ranges:\n          // - add new ranges when there are any gaps in the existing ranges (for the new range)\n          // - split existing ranges if they are only partially overlapping with the new range\n          // Then, as a separate step:\n          // - add new rules to all of the (disjoint, ordered) ranges covered by the new range\n\n          // The new range can overlap with multiple entries in the map, current iterator can\n          // point to any one of them. Find the first entry the new entry overlaps with.\n          auto last_overlap = it;\n          while (it != rules_.begin()) {\n            last_overlap = it;\n            it--;\n            if (!rangesOverlap(it->first, rule_range)) {\n              break;\n            }\n          }\n          it = last_overlap; // Move back up to the frontmost overlapping entry\n\n          // absl::btree_map manipulation operations invalidate iterators, so we keep the range\n          // (the map key) of the first overlapping entry in 'start_range' to be able to locate\n          // the first range that needs the new rules after all the overlaps have been resolved.\n          // 'start_key' is updated as needed below.\n          auto start_range = it->first;\n\n          // split the current entry due to partial overlap in the beginning?\n          // For example, if the current entry is 80-8080 and we are adding 4040-9999,\n          // the current entry should be split to two ranges 80-4039 and 4040-8080,\n          // both of which should retain their current rules, but new rules should only be\n          // added to the 2nd half covered by the new range 4040-9999.\n          if (port > start_range.first) {\n            RELEASE_ASSERT(port <= start_range.second, \"non-overlapping range\");\n            auto rules = it->second;\n            PortRange range1 = start_range;\n            range1.second = port - 1;\n            PortRange range2 = start_range;\n            range2.first = port;\n\n            rules_.erase(it);\n            auto pr1 = rules_.insert({range1, rules});\n            RELEASE_ASSERT(pr1.second, \"Range split failed 1 begin\");\n            auto pr2 = rules_.insert({range2, rules});\n            RELEASE_ASSERT(pr2.second, \"Range split failed 2 begin\");\n            it = pr2.first;          // update current iterator\n            start_range = it->first; // update the start range\n          }\n\n          // scan the range of the new rule, filling the gaps with new (partial) ranges\n          for (; it != rules_.end() && port <= end_port && end_port >= it->first.first; it++) {\n            auto range = it->first;\n            // create a new entry below the current one?\n            if (port < range.first) {\n              auto new_range = std::make_pair(port, std::min(end_port, uint16_t(range.first - 1)));\n              auto new_pair = rules_.emplace(new_range, PortNetworkPolicyRules{});\n              RELEASE_ASSERT(new_pair.second,\n                             \"duplicate entry when explicitly adding a new range!\");\n              // update the start range if a new start entry was added, which can happen only at the\n              // beginning of this loop when port is still at the beginning of the rule range being\n              // added.\n              if (port == rule_range.first) {\n                start_range = new_range;\n              }\n              // absl::btree_map insertion invalidates iterators, have to update.\n              it = ++new_pair.first; // one past the new entry\n              if (end_port < range.first) {\n                // done\n                break;\n              }\n              // covered upto range.first-1, continue from range.first\n              port = range.first;\n            }\n            RELEASE_ASSERT(port == range.first, \"port should match the start of the current range\");\n            // split the current range into two due to partial overlap in the end?\n            if (end_port < range.second) {\n              auto rules = it->second;\n              PortRange range1 = it->first;\n              range1.second = end_port;\n              PortRange range2 = it->first;\n              range2.first = end_port + 1;\n\n              rules_.erase(it);\n              auto pr1 = rules_.insert({range1, rules});\n              RELEASE_ASSERT(pr1.second, \"Range split failed 1 end\");\n              auto pr2 = rules_.insert({range2, rules});\n              RELEASE_ASSERT(pr2.second, \"Range split failed 2 end\");\n              it = pr2.first;      // one past the end of range\n              port = end_port + 1; // one past the end\n              break;\n            } else {\n              // current entry completely covered by the new range, skip to the next\n              port = range.second + 1;\n            }\n          }\n          // create a new entry covering the end?\n          if (port <= end_port) {\n            auto new_range = std::make_pair(port, end_port);\n            auto new_pair = rules_.emplace(new_range, PortNetworkPolicyRules{});\n            RELEASE_ASSERT(new_pair.second,\n                           \"duplicate entry at end when explicitly adding a new range!\");\n            it = ++new_pair.first;\n          }\n          // make 'it' point to the first overlapping entry for the rule updates to follow\n          it = rules_.find(start_range);\n          RELEASE_ASSERT(it != rules_.end(), \"first overlapping entry not found\");\n        }\n        // Add rules to all the overlapping entries\n        bool shared_resource = rule_range.first == 0; // wildcard port rules are shared\n        bool singular = rule_range.first == rule_range.second;\n        for (; it != rules_.end() && rangesOverlap(it->first, rule_range); it++) {\n          auto range = it->first;\n          auto& rules = it->second;\n          ENVOY_LOG(trace, \"Cilium L7 PortNetworkPolicy(): Adding rules for [{}-{}] to [{}-{}]\",\n                    rule_range.first, rule_range.second, range.first, range.second);\n          if (singular) {\n            // Exact port rules go to the front of the list.\n            // This gives precedence for trivial range rules for proxylib parser\n            // and TLS context selection.\n            // prepend() inserts each rule at begin() while iterating forward,\n            // so the relative order of rules from this batch is reversed. This\n            // is harmless: equal-precedence rules are evaluated as alternatives\n            // (stable sort only affects presentation/debug ordering).\n            rules.prepend(parent, rule.rules(), shared_resource);\n          } else {\n            // Rules with a non-trivial range go to the back of the list\n            rules.append(parent, rule.rules(), shared_resource);\n          }\n        }\n      } else {\n        ENVOY_LOG(trace, \"Cilium L7 PortNetworkPolicy(): NOT installing non-TCP policy\");\n      }\n    }\n\n    // Apply wildcard port rules to all ranges\n    const PortNetworkPolicyRules* wildcard_rules = nullptr;\n    for (auto& [port_range, rules] : rules_) {\n      if (port_range.first == 0) {\n        wildcard_rules = &rules;\n        continue;\n      }\n      if (!wildcard_rules) {\n        break;\n      }\n      rules.appendNonPassRules(wildcard_rules->rules_);\n    }\n\n    bool have_passes = false;\n\n    // sort rules on each non-overlapping port range into descending precedence\n    // port ranges themselves remain in the sorted order.\n    // This way we can efficiently find the list of rules applicable to any given port,\n    // and then process those rules in the order of decreasing precedence.\n    for (auto& pair : rules_) {\n      pair.second.sort();\n      if (pair.second.has_pass_rules_) {\n        have_passes = true;\n      }\n    }\n\n    // Apply pass verdicts, if any.\n    if (have_passes) {\n      Passes passes;\n\n      // This loop always iterates the wildcard port first, if rules for it exist.\n      for (auto& [port_range, rules] : rules_) {\n        passes.apply(port_range, rules);\n      }\n\n      // Delete port ranges that only contained pass rules.\n      // Otherwise the policy would always accept.\n      for (auto port_range : passes.emptyRanges()) {\n        rules_.erase(port_range);\n      }\n    }\n  }\n\n  const PortPolicy findPortPolicy(uint16_t port) const { return PortPolicy(rules_, port); }\n\n  void toString(int indent, std::string& res) const {\n    if (rules_.empty()) {\n      res.append(indent, ' ').append(\"rules: []\\n\");\n    } else {\n      res.append(indent, ' ').append(\"rules:\\n\");\n      for (const auto& entry : rules_) {\n        res.append(indent + 2, ' ')\n            .append(fmt::format(\"[{}-{}]:\\n\", entry.first.first, entry.first.second));\n        entry.second.toString(indent + 4, res);\n      }\n    }\n  }\n\n  PolicyMap rules_;\n  bool has_http_rules_ = false;\n};\n\n// Construction is single-threaded, but all other use is from multiple worker threads using const\n// methods.\nclass PolicyInstanceImpl : public PolicyInstance {\npublic:\n  PolicyInstanceImpl(const NetworkPolicyMapImpl& parent, uint64_t hash,\n                     const cilium::NetworkPolicy& proto)\n      : endpoint_id_(proto.endpoint_id()), hash_(hash), policy_proto_(proto), endpoint_ips_(proto),\n        parent_(parent), ingress_(parent, policy_proto_.ingress_per_port_policies()),\n        egress_(parent, policy_proto_.egress_per_port_policies()) {}\n\n  bool allowed(bool ingress, uint16_t proxy_id, uint32_t remote_id, uint16_t port,\n               Envoy::Http::RequestHeaderMap& headers,\n               Cilium::AccessLog::Entry& log_entry) const override {\n    const auto port_policy = findPortPolicy(ingress, port);\n    if (!port_policy.hasHttpRules()) {\n      return true;\n    }\n    return port_policy.allowed(proxy_id, remote_id, headers, log_entry);\n  }\n\n  bool allowed(bool ingress, uint16_t proxy_id, uint32_t remote_id, absl::string_view sni,\n               uint16_t port) const override {\n    const auto port_policy = findPortPolicy(ingress, port);\n    return port_policy.allowed(proxy_id, remote_id, sni);\n  }\n\n  const PortPolicy findPortPolicy(bool ingress, uint16_t port) const override {\n    return ingress ? ingress_.findPortPolicy(port) : egress_.findPortPolicy(port);\n  }\n\n  bool useProxylib(bool ingress, uint16_t proxy_id, uint32_t remote_id, uint16_t port,\n                   std::string& l7_proto) const override {\n    const auto port_policy = findPortPolicy(ingress, port);\n    return port_policy.useProxylib(proxy_id, remote_id, l7_proto);\n  }\n\n  uint32_t getEndpointID() const override { return endpoint_id_; }\n\n  const IpAddressPair& getEndpointIPs() const override { return endpoint_ips_; }\n\n  std::string string() const override {\n    std::string res;\n    res.append(\"ingress:\\n\");\n    ingress_.toString(2, res);\n    res.append(\"egress:\\n\");\n    egress_.toString(2, res);\n    return res;\n  }\n\n  void tlsWrapperMissingPolicyInc() const override { parent_.tlsWrapperMissingPolicyInc(); }\n\npublic:\n  uint32_t endpoint_id_;\n  uint64_t hash_;\n  const cilium::NetworkPolicy policy_proto_;\n  const IpAddressPair endpoint_ips_;\n\nprivate:\n  const NetworkPolicyMapImpl& parent_;\n  const PortNetworkPolicy ingress_;\n  const PortNetworkPolicy egress_;\n};\n\n// Common base constructor\n// This is used directly for testing with a file-based subscription\nNetworkPolicyMap::NetworkPolicyMap(Server::Configuration::FactoryContext& context,\n                                   const envoy::config::core::v3::ConfigSource& npds_config,\n                                   bool subscribe)\n    : context_(context.serverFactoryContext()) {\n  impl_ = std::make_unique<NetworkPolicyMapImpl>(context, npds_config);\n\n  if (context_.admin().has_value()) {\n    ENVOY_LOG(debug, \"Registering NetworkPolicies to config tracker\");\n    config_tracker_entry_ = context_.admin()->getConfigTracker().add(\n        \"networkpolicies\", [this](const Matchers::StringMatcher& name_matcher) {\n          return dumpNetworkPolicyConfigs(name_matcher);\n        });\n    RELEASE_ASSERT(config_tracker_entry_, \"\");\n  }\n\n  if (subscribe) {\n    getImpl().startSubscription(npds_config);\n  }\n}\n\nNetworkPolicyMap::~NetworkPolicyMap() {\n  // Policy map destruction happens when the last listener with the Cilium bpf_metadata listener\n  // filter has drained out and is finally removed, and last connection of the old listener is\n  // closed. This does not happen if new listener(s) with references to policy map are created in\n  // the meanwhile.\n  //\n  // Destruction of the NetworkPolicyMapImpl must be made from the main thread to ensure integrity\n  // of SDS subscription management. Since this can be called from a worker thread of the last\n  // connection we must post the destruction to the main thread dispatcher in that case.\n  if (Thread::MainThread::isMainOrTestThread()) {\n    ENVOY_LOG(debug, \"Cilium L7 NetworkPolicyMap: deleting NetworkPolicyMapImpl in main thread\");\n    impl_.reset();\n    return;\n  }\n\n  ENVOY_LOG(debug,\n            \"Cilium L7 NetworkPolicyMap: posting NetworkPolicyMapImpl deletion to main thread\");\n\n  context_.mainThreadDispatcher().deleteInDispatcherThread(\n      Event::DispatcherThreadDeletableConstPtr(impl_.release()));\n}\n\nNetworkPolicyMapImpl::NetworkPolicyMapImpl(Server::Configuration::FactoryContext& context,\n                                           const envoy::config::core::v3::ConfigSource& npds_config)\n    : context_(context.serverFactoryContext()), map_ptr_(nullptr),\n      npds_stats_scope_(context_.serverScope().createScope(\"cilium.npds.\")),\n      policy_stats_scope_(context_.serverScope().createScope(\"cilium.policy.\")),\n      init_target_(fmt::format(\"Cilium Network Policy subscription start\"),\n                   [this]() {\n                     subscription_->start({});\n                     // Allow listener init to continue before network policy updates are received\n                     init_target_.ready();\n                   }),\n      transport_factory_context_(\n          std::make_shared<Server::Configuration::TransportSocketFactoryContextImpl>(\n              context_, *npds_stats_scope_,\n              context_.messageValidationContext().dynamicValidationVisitor())),\n      parked_init_manager_(std::make_unique<Init::ManagerImpl>(\"Cilium NetworkPolicyMap parked\")),\n      npds_config_(npds_config),\n      stats_{ALL_CILIUM_POLICY_STATS(POOL_COUNTER(*policy_stats_scope_))} {\n  // Use listener init manager for subscription initialization\n  context.initManager().add(init_target_);\n  transport_factory_context_->setInitManager(*parked_init_manager_);\n\n  // Allocate an initial policy map so that the map pointer is never a nullptr\n  store(new RawPolicyMap());\n  ENVOY_LOG(trace, \"NetworkPolicyMapImpl({}) created.\", instance_id_);\n}\n\n// NetworkPolicyMapImpl destructor must only be called from the main thread.\nNetworkPolicyMapImpl::~NetworkPolicyMapImpl() {\n  ENVOY_LOG(debug, \"Cilium L7 NetworkPolicyMapImpl({}): NetworkPolicyMap is deleted NOW!\",\n            instance_id_);\n  delete load();\n}\n\nvoid NetworkPolicyMapImpl::startSubscription(\n    const envoy::config::core::v3::ConfigSource& npds_config) {\n  if (npds_config.config_source_specifier_case() == envoy::config::core::v3::ConfigSource::kAds) {\n    auto ads_mux = context_.xdsManager().adsMux();\n    subscription_ = THROW_OR_RETURN_VALUE(\n        context_.clusterManager().subscriptionFactory().subscriptionOverAdsGrpcMux(\n            ads_mux, npds_config, NetworkPolicyTypeUrl, *npds_stats_scope_, *this,\n            std::make_shared<NetworkPolicyDecoder>(), {}),\n        Config::SubscriptionPtr);\n  } else {\n    subscription_ = subscribe(NetworkPolicyTypeUrl, npds_config, context_.localInfo(),\n                              context_.clusterManager(), context_.mainThreadDispatcher(),\n                              context_.api().randomGenerator(), *npds_stats_scope_, *this,\n                              std::make_shared<NetworkPolicyDecoder>());\n  }\n\n  subscription_->start({});\n}\n\nvoid NetworkPolicyMapImpl::tlsWrapperMissingPolicyInc() const {\n  stats_.tls_wrapper_missing_policy_.inc();\n}\n\nbool NetworkPolicyMapImpl::isNewStream() {\n  auto sub = dynamic_cast<Config::GrpcSubscriptionImpl*>(subscription_.get());\n  if (!sub) {\n    ENVOY_LOG(error, \"Cilium NetworkPolicyMapImpl: Cannot get GrpcSubscriptionImpl\");\n    return false;\n  }\n  auto mux = dynamic_cast<GrpcMuxImpl*>(sub->grpcMux().get());\n  if (!mux) {\n    ENVOY_LOG(error, \"Cilium NetworkPolicyMapImpl: Cannot get GrpcMuxImpl\");\n    return false;\n  }\n  return mux->isNewStream();\n}\n\n// removeInitManager must be called at the end of each policy update\nvoid NetworkPolicyMapImpl::removeInitManager() {\n  RELEASE_ASSERT(parked_init_manager_ != nullptr, \"parked init manager must exist\");\n\n  const bool parked_wrong_state =\n      parked_init_manager_->state() != Init::Manager::State::Uninitialized;\n  if (parked_wrong_state) {\n    ENVOY_LOG(warn,\n              \"Cilium NetworkPolicyMap parked init manager unexpectedly reached state {}; \"\n              \"replacing it before re-installing\",\n              static_cast<int>(parked_init_manager_->state()));\n  }\n\n  envoy::admin::v3::UnreadyTargetsDumps parked_dumps;\n  parked_init_manager_->dumpUnreadyTargets(parked_dumps);\n  bool parked_has_targets = false;\n  for (const auto& parked_dump : parked_dumps.unready_targets_dumps()) {\n    if (!parked_dump.target_names().empty()) {\n      parked_has_targets = true;\n      ENVOY_LOG(\n          warn,\n          \"Cilium NetworkPolicyMap parked init manager unexpectedly accumulated targets [{}]{}; \"\n          \"replacing it before re-installing\",\n          fmt::join(parked_dump.target_names(), \", \"),\n          parked_wrong_state\n              ? fmt::format(\" in state {}\", static_cast<int>(parked_init_manager_->state()))\n              : \"\");\n    }\n  }\n\n  // replace parked init manager if it got to a bad state\n  if (parked_wrong_state || parked_has_targets) {\n    parked_init_manager_ = std::make_unique<Init::ManagerImpl>(\"Cilium NetworkPolicyMap parked\");\n  }\n\n  // Restore the parked init manager after a policy-version-specific init manager has been\n  // installed for the duration of the update.\n  transport_factory_context_->setInitManager(*parked_init_manager_);\n}\n\n// onConfigUpdate parses the new network policy resources, allocates a new policy map and atomically\n// swaps it in place of the old policy map. Throws if any of the 'resources' can not be\n// parsed. Otherwise an OK status is returned without pausing NPDS gRPC stream, causing a new\n// request (ACK) to be sent immediately, without waiting SDS secrets to be loaded.\nabsl::Status NetworkPolicyMapImpl::onConfigUpdate(\n    const std::vector<Envoy::Config::DecodedResourceRef>& resources,\n    const std::string& version_info) {\n  ENVOY_LOG(debug, \"NetworkPolicyMapImpl::onConfigUpdate({}), {} resources, version: {}\",\n            instance_id_, resources.size(), version_info);\n  stats_.updates_total_.inc();\n\n  // Reopen IPcache for every new stream. Cilium agent re-creates IP cache on restart,\n  // and that is also when the old stream terminates and a new one is created.\n  // New security identities (e.g., for FQDN policies) only get inserted to the new IP cache,\n  // so open it before the workers get a chance to enforce policy on the new IDs.\n  if (isNewStream()) {\n    ENVOY_LOG(info, \"New NetworkPolicy stream\");\n\n    // Get ipcache singleton only if it was successfully created previously\n    IpCacheSharedPtr ipcache = IpCache::getIpCache(context_);\n    if (ipcache != nullptr) {\n      ENVOY_LOG(info, \"Reopening ipcache on new stream\");\n      ipcache->open();\n    }\n  }\n\n  std::string version_name = fmt::format(\"NetworkPolicyMap version {}\", version_info);\n  Init::ManagerImpl version_init_manager(version_name);\n  // Set the init manager to use via the transport factory context\n  // Must be set before the new network policy is parsed, as the parsed\n  // SDS secrets will use this!\n  transport_factory_context_->setInitManager(version_init_manager);\n\n  const auto* old_map = load();\n  RawPolicyMap new_map;\n  {\n    try {\n      for (const auto& resource : resources) {\n        const auto& config = dynamic_cast<const cilium::NetworkPolicy&>(resource.get().resource());\n        ENVOY_LOG(debug,\n                  \"Received Network Policy for endpoint {}, endpoint_ip {} in onConfigUpdate() \"\n                  \"version {}\",\n                  config.endpoint_id(), config.endpoint_ips()[0], version_info);\n        if (config.endpoint_ips().empty()) {\n          throw EnvoyException(\"Network Policy has no endpoint ips\");\n        }\n\n        // First find the old config to figure out if an update is needed.\n        const uint64_t new_hash = MessageUtil::hash(config);\n        auto it = old_map->find(config.endpoint_ips()[0]);\n        if (it != old_map->cend()) {\n          const auto& old_policy = it->second;\n          if (old_policy && old_policy->hash_ == new_hash &&\n              Protobuf::util::MessageDifferencer::Equals(old_policy->policy_proto_, config)) {\n            ENVOY_LOG(trace, \"New policy is equal to old one, not updating.\");\n            for (const auto& endpoint_ip : config.endpoint_ips()) {\n              ENVOY_LOG(trace, \"Cilium keeping network policy for endpoint {}\", endpoint_ip);\n              new_map.emplace(endpoint_ip, old_policy);\n            }\n            continue;\n          }\n        }\n\n        // May throw\n        auto new_policy = std::make_shared<const PolicyInstanceImpl>(*this, new_hash, config);\n\n        for (const auto& endpoint_ip : config.endpoint_ips()) {\n          ENVOY_LOG(trace, \"Cilium updating network policy for endpoint {}\", endpoint_ip);\n          // new_map is not exception safe, new_policy must be computed separately!\n          new_map.emplace(endpoint_ip, new_policy);\n        }\n      }\n    } catch (const EnvoyException& e) {\n      ENVOY_LOG(warn, \"NetworkPolicy update for version {} failed: {}\", version_info, e.what());\n      stats_.updates_rejected_.inc();\n\n      removeInitManager();\n      throw; // re-throw\n    }\n    removeInitManager();\n\n    // Initialize SDS secrets. We do not wait for the completion.\n    version_init_manager.initialize(Init::WatcherImpl(version_name, []() {}));\n\n    // Swap the new map in, new_map goes out of scope right after to eliminate accidental\n    // modification.\n    old_map = exchange(new RawPolicyMap(std::move(new_map)));\n  }\n\n  // Delete the old map once all worker threads have entered their event queues, as this\n  // is proof that they no longer refer to the old map.\n  runAfterAllThreads([old_map]() {\n    // Clean-up in the main thread after all threads have scheduled\n    delete old_map;\n  });\n  stats_.update_success_.inc();\n  return absl::OkStatus();\n}\n\nvoid NetworkPolicyMapImpl::onConfigUpdateFailed(Envoy::Config::ConfigUpdateFailureReason,\n                                                const EnvoyException*) {\n  // We need to allow server startup to continue, even if we have a bad\n  // config.\n  ENVOY_LOG(debug, \"Network Policy Update failed, keeping existing policy.\");\n}\n\nvoid NetworkPolicyMapImpl::runAfterAllThreads(std::function<void()> cb) const {\n  // We can guarantee the callback 'cb' runs in the main thread after all worker threads have\n  // entered their event loop, and thus relinquished all state, such as policy lookup results that\n  // were stored in their call stack, by posting and empty function to their event queues and\n  // waiting until all of them have returned, as managed by 'runOnAllWorkerThreads'.\n  //\n  // For now we rely on the implementation dependent fact that the reference returned by\n  // context_.threadLocal() actually is a ThreadLocal::Instance reference, where\n  // runOnAllWorkerThreads() is exposed. Without this cast we'd need to use a dummy thread local\n  // variable that would take a thread local slot for no other purpose than to avoid this type cast.\n  dynamic_cast<ThreadLocal::Instance&>(context_.threadLocal()).runOnAllWorkerThreads([]() {}, cb);\n}\n\nProtobufTypes::MessagePtr\nNetworkPolicyMap::dumpNetworkPolicyConfigs(const Matchers::StringMatcher& name_matcher) {\n  ENVOY_LOG(debug, \"Writing NetworkPolicies to NetworkPoliciesConfigDump\");\n\n  std::vector<uint64_t> policy_endpoint_ids;\n  auto config_dump = std::make_unique<cilium::NetworkPoliciesConfigDump>();\n  for (const auto& item : *getImpl().load()) {\n    // filter duplicates (policies are stored per endpoint ip)\n    if (std::find(policy_endpoint_ids.begin(), policy_endpoint_ids.end(),\n                  item.second->policy_proto_.endpoint_id()) != policy_endpoint_ids.end()) {\n      continue;\n    }\n\n    if (!name_matcher.match(item.first)) {\n      continue;\n    }\n\n    config_dump->mutable_networkpolicies()->Add()->CopyFrom(item.second->policy_proto_);\n    policy_endpoint_ids.emplace_back(item.second->policy_proto_.endpoint_id());\n  }\n\n  return config_dump;\n}\n\n// Allow-all Egress policy\nclass AllowAllEgressPolicyInstanceImpl : public PolicyInstance {\npublic:\n  AllowAllEgressPolicyInstanceImpl() {\n    empty_map_.emplace(std::make_pair(uint16_t(1), uint16_t(1)), PortNetworkPolicyRules{});\n  }\n\n  bool allowed(bool ingress, uint16_t, uint32_t, uint16_t, Envoy::Http::RequestHeaderMap&,\n               Cilium::AccessLog::Entry&) const override {\n    return ingress ? false : true;\n  }\n\n  bool allowed(bool ingress, uint16_t, uint32_t, absl::string_view, uint16_t) const override {\n    return ingress ? false : true;\n  }\n\n  const PortPolicy findPortPolicy(bool ingress, uint16_t) const override {\n    return ingress ? PortPolicy(empty_map_, 0) : PortPolicy(empty_map_, 1);\n  }\n\n  bool useProxylib(bool, uint16_t, uint32_t, uint16_t, std::string&) const override {\n    return false;\n  }\n\n  uint32_t getEndpointID() const override { return 0; }\n\n  const IpAddressPair& getEndpointIPs() const override { return empty_ips; }\n\n  std::string string() const override { return \"AllowAllEgressPolicyInstanceImpl\"; }\n\n  void tlsWrapperMissingPolicyInc() const override {}\n\nprivate:\n  PolicyMap empty_map_;\n  static const std::string empty_string;\n  static const IpAddressPair empty_ips;\n};\nconst std::string AllowAllEgressPolicyInstanceImpl::empty_string = \"\";\nconst IpAddressPair AllowAllEgressPolicyInstanceImpl::empty_ips{};\n\nAllowAllEgressPolicyInstanceImpl NetworkPolicyMap::AllowAllEgressPolicy;\n\nPolicyInstance& NetworkPolicyMap::getAllowAllEgressPolicy() { return AllowAllEgressPolicy; }\n\n// Deny-all policy\nclass DenyAllPolicyInstanceImpl : public PolicyInstance {\npublic:\n  DenyAllPolicyInstanceImpl() = default;\n\n  bool allowed(bool, uint16_t, uint32_t, uint16_t, Envoy::Http::RequestHeaderMap&,\n               Cilium::AccessLog::Entry&) const override {\n    return false;\n  }\n\n  bool allowed(bool, uint16_t, uint32_t, absl::string_view, uint16_t) const override {\n    return false;\n  }\n\n  const PortPolicy findPortPolicy(bool, uint16_t) const override {\n    return PortPolicy(empty_map_, 0);\n  }\n\n  bool useProxylib(bool, uint16_t, uint32_t, uint16_t, std::string&) const override {\n    return false;\n  }\n\n  uint32_t getEndpointID() const override { return 0; }\n\n  const IpAddressPair& getEndpointIPs() const override { return empty_ips; }\n\n  std::string string() const override { return \"DenyAllPolicyInstanceImpl\"; }\n\n  void tlsWrapperMissingPolicyInc() const override {}\n\nprivate:\n  PolicyMap empty_map_;\n  static const std::string empty_string;\n  static const IpAddressPair empty_ips;\n};\nconst std::string DenyAllPolicyInstanceImpl::empty_string = \"\";\nconst IpAddressPair DenyAllPolicyInstanceImpl::empty_ips{};\n\nDenyAllPolicyInstanceImpl NetworkPolicyMap::DenyAllPolicy;\n\nPolicyInstance& NetworkPolicyMap::getDenyAllPolicy() { return DenyAllPolicy; }\n\nconst PolicyInstance*\nNetworkPolicyMapImpl::getPolicyInstanceImpl(const std::string& endpoint_ip) const {\n  const auto* map = load();\n  auto it = map->find(endpoint_ip);\n  if (it != map->end()) {\n    return it->second.get();\n  }\n  return nullptr;\n}\n\n// getPolicyInstance return a const reference to a policy in the policy map for the given\n// 'endpoint_ip'. If there is no policy for the given IP, a default policy is returned,\n// controlled by the 'default_allow_egress' argument as follows:\n//\n// 'false' - a deny all policy is returned,\n// 'true' -  a deny all ingress / allow all egress is returned.\n//\n// Returning a default deny policy makes the caller report a \"policy deny\" rather than \"internal\n// server error\" if no policy is found. This mirrors what bpf datapath does if no policy entry is\n// found in the bpf policy map. The default deny for ingress with default allow for egress is needed\n// for Cilium Ingress when there is no egress policy enforcement for the Ingress traffic.\nconst PolicyInstance& NetworkPolicyMap::getPolicyInstance(const std::string& endpoint_ip,\n                                                          bool default_allow_egress) const {\n  const auto* policy = getImpl().getPolicyInstanceImpl(endpoint_ip);\n  return policy != nullptr      ? *policy\n         : default_allow_egress ? *static_cast<PolicyInstance*>(&AllowAllEgressPolicy)\n                                : *static_cast<PolicyInstance*>(&DenyAllPolicy);\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/network_policy.h",
    "content": "#pragma once\n\n#include <fmt/format.h>\n\n#include <atomic>\n#include <cstdint>\n#include <functional>\n#include <memory>\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/common/exception.h\"\n#include \"envoy/common/matchers.h\"\n#include \"envoy/common/pure.h\"\n#include \"envoy/common/regex.h\"\n#include \"envoy/config/core/v3/base.pb.h\"\n#include \"envoy/config/core/v3/config_source.pb.h\"\n#include \"envoy/config/subscription.h\"\n#include \"envoy/event/dispatcher_thread_deletable.h\"\n#include \"envoy/http/header_map.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/protobuf/message_validator.h\"\n#include \"envoy/server/config_tracker.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/server/transport_socket_config.h\"\n#include \"envoy/singleton/instance.h\"\n#include \"envoy/ssl/context.h\"\n#include \"envoy/ssl/context_config.h\"\n#include \"envoy/stats/scope.h\"\n#include \"envoy/stats/stats_macros.h\" // IWYU pragma: keep\n\n#include \"source/common/common/assert.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/macros.h\"\n#include \"source/common/common/thread.h\"\n#include \"source/common/init/manager_impl.h\"\n#include \"source/common/init/target_impl.h\"\n#include \"source/common/protobuf/message_validator_impl.h\"\n#include \"source/common/protobuf/protobuf.h\"\n#include \"source/common/protobuf/utility.h\"\n#include \"source/server/transport_socket_config_impl.h\"\n\n#include \"absl/container/btree_map.h\"\n#include \"absl/container/flat_hash_map.h\"\n#include \"absl/status/status.h\"\n#include \"absl/strings/ascii.h\"\n#include \"absl/strings/string_view.h\"\n#include \"cilium/accesslog.h\"\n#include \"cilium/api/npds.pb.h\"\n#include \"cilium/api/npds.pb.validate.h\" // IWYU pragma: keep\n#include \"re2/re2.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\n// PortRangeCompare is used for as std::less replacement for port range keys.\n//\n// All port ranges in the map have non-overlapping keys, which allows total ordering needed for\n// ordered map containers. When inserting new ranges, any range overlap will be flagged as a\n// \"duplicate\" entry, as overlapping keys are considered equal (as neither is strictly less than the\n// other given this comparison predicate).\n// On lookups we'll set both ends of the port range to the same port number, which will find the one\n// range that it overlaps with, if one exists.\nusing PortRange = std::pair<uint16_t, uint16_t>;\nstruct PortRangeCompare {\n  bool operator()(const PortRange& a, const PortRange& b) const {\n    // return true if range 'a.first - a.second' is below range 'b.first - b.second'.\n    return a.second < b.first;\n  }\n};\n\nclass PortNetworkPolicyRules;\n\n// PolicyMap is keyed by port ranges, and contains a list of PortNetworkPolicyRules's applicable\n// to this range. A list is needed as rules may come from multiple sources (e.g., resulting from\n// use of named ports and numbered ports in Cilium Network Policy at the same time).\nusing PolicyMap = absl::btree_map<PortRange, PortNetworkPolicyRules, PortRangeCompare>;\n\n// Supported message types\nusing RuleVerdict = enum {\n  None = 0,\n  Allow = 1,\n  Deny = 2,\n};\n\n// PortPolicy holds a reference to a set of rules in a policy map that apply to the given port.\n// Methods then iterate through the set to determine if policy allows or denies. This is needed to\n// support multiple rules on the same port, like when named ports are used, or when deny policies\n// may be present.\nclass PortPolicy : public Logger::Loggable<Logger::Id::config> {\nprotected:\n  friend class PortNetworkPolicy;\n  friend class DenyAllPolicyInstanceImpl;\n  friend class AllowAllEgressPolicyInstanceImpl;\n  PortPolicy(const PolicyMap& map, uint16_t port);\n\npublic:\n  // If hasHttpRules() returns false, then HTTP policy enforcement can be skipped,\n  // given that Network layer policy has already been enforced.\n  bool hasHttpRules() const { return has_http_rules_; }\n\n  // useProxylib returns true if a proxylib parser should be used.\n  // 'l7_proto' is set to the parser name in that case.\n  bool useProxylib(uint16_t proxy_id, uint32_t remote_id, std::string& l7_proto) const;\n  // HTTP-layer policy check. 'headers' and 'log_entry' may be manipulated by the policy.\n  bool allowed(uint16_t proxy_id, uint32_t remote_id, Envoy::Http::RequestHeaderMap& headers,\n               Cilium::AccessLog::Entry& log_entry) const;\n  // Network-layer policy check\n  bool allowed(uint16_t proxy_id, uint32_t remote_id, absl::string_view sni) const;\n  // Envoy filter metadata policy check\n  bool allowed(uint16_t proxy_id, uint32_t remote_id,\n               const envoy::config::core::v3::Metadata& metadata) const;\n  // getServerTlsContext returns the server TLS context, if any. If a non-null pointer is returned,\n  // then also the config pointer '*config' is set.\n  // If '*config' is nullptr and 'raw_socket_allowed' is 'true' on return then the policy\n  // allows the connection without TLS and a raw socket should be used.\n  Ssl::ContextSharedPtr getServerTlsContext(uint16_t proxy_id, uint32_t remote_id,\n                                            absl::string_view sni,\n                                            const Ssl::ContextConfig*& config,\n                                            bool& raw_socket_allowed) const;\n  // getClientTlsContext returns the client TLS context, if any. If a non-null pointer is returned,\n  // then also the config pointer '*config' is set.\n  // If '*config' is nullptr and 'raw_socket_allowed' is 'true' on return then the policy\n  // allows the connection without TLS and a raw socket should be used.\n  Ssl::ContextSharedPtr getClientTlsContext(uint16_t proxy_id, uint32_t remote_id,\n                                            absl::string_view sni,\n                                            const Ssl::ContextConfig*& config,\n                                            bool& raw_socket_allowed) const;\n\nprivate:\n  const PolicyMap& map_;\n  // using raw pointers by design:\n  // - pointer to distinguish between no rules and empty rules\n  // - not using shared pointer to not allow a worker thread to hold the last reference to policy\n  //   rule(s), as they must be destructed from the main thread only.\n  // - lifetime on policy updates is managed explicitly by posting a lambda to all worker threads\n  //   before the old rules are deleted; worker thread drop references to policy rules before\n  //   returning to the event loop, so after the posted lambda executes it is safe to delete the old\n  //   rules.\n  const PortNetworkPolicyRules* port_rules_;\n  const bool has_http_rules_;\n};\n\nclass IpAddressPair {\npublic:\n  IpAddressPair() = default;\n  IpAddressPair(Network::Address::InstanceConstSharedPtr& ipv4,\n                Network::Address::InstanceConstSharedPtr& ipv6)\n      : ipv4_(ipv4), ipv6_(ipv6) {};\n  IpAddressPair(const cilium::NetworkPolicy& proto);\n\n  Network::Address::InstanceConstSharedPtr ipv4_;\n  Network::Address::InstanceConstSharedPtr ipv6_;\n};\n\nclass PolicyInstance {\npublic:\n  virtual ~PolicyInstance() {\n    if (!Thread::MainThread::isMainOrTestThread()) {\n      IS_ENVOY_BUG(\"PolicyInstance: Destructor executing in a worker thread, while \"\n                   \"only main thread should destruct xDS resources\");\n    }\n  };\n\n  virtual bool allowed(bool ingress, uint16_t proxy_id, uint32_t remote_id, uint16_t port,\n                       Envoy::Http::RequestHeaderMap& headers,\n                       Cilium::AccessLog::Entry& log_entry) const PURE;\n\n  virtual bool allowed(bool ingress, uint16_t proxy_id, uint32_t remote_id, absl::string_view sni,\n                       uint16_t port) const PURE;\n\n  virtual const PortPolicy findPortPolicy(bool ingress, uint16_t port) const PURE;\n\n  // Returns true if the policy specifies l7 protocol for the connection, and\n  // returns the l7 protocol string in 'l7_proto'\n  virtual bool useProxylib(bool ingress, uint16_t proxy_id, uint32_t remote_id, uint16_t port,\n                           std::string& l7_proto) const PURE;\n\n  virtual uint32_t getEndpointID() const PURE;\n\n  virtual const IpAddressPair& getEndpointIPs() const PURE;\n\n  virtual std::string string() const PURE;\n\n  virtual void tlsWrapperMissingPolicyInc() const PURE;\n};\nusing PolicyInstanceConstSharedPtr = std::shared_ptr<const PolicyInstance>;\n\nclass PolicyInstanceImpl;\n\nclass NetworkPolicyDecoder : public Envoy::Config::OpaqueResourceDecoder {\npublic:\n  NetworkPolicyDecoder() : validation_visitor_(ProtobufMessage::getNullValidationVisitor()) {}\n\n  // Config::OpaqueResourceDecoder\n  ProtobufTypes::MessagePtr decodeResource(const Protobuf::Any& resource) override {\n    auto typed_message = std::make_unique<cilium::NetworkPolicy>();\n    // If the Any is a synthetic empty message (e.g. because the resource field\n    // was not set in Resource, this might be empty, so we shouldn't decode.\n    if (!resource.type_url().empty()) {\n      MessageUtil::anyConvertAndValidate<cilium::NetworkPolicy>(resource, *typed_message,\n                                                                validation_visitor_);\n    }\n    return typed_message;\n  }\n\n  std::string resourceName(const Protobuf::Message& resource) override {\n    return fmt::format(\"{}\", dynamic_cast<const cilium::NetworkPolicy&>(resource).endpoint_id());\n  }\n\nprivate:\n  ProtobufMessage::ValidationVisitor& validation_visitor_;\n};\n\n/**\n * All Cilium L7 filter stats. @see stats_macros.h\n */\n// clang-format off\n#define ALL_CILIUM_POLICY_STATS(COUNTER)\t\\\n  COUNTER(updates_total)\t\t\t\t\\\n  COUNTER(updates_rejected)\t\t\t\t\\\n  COUNTER(tls_wrapper_missing_policy) \\\n  COUNTER(update_success)\n// clang-format on\n\n/**\n * Struct definition for all policy stats. @see stats_macros.h\n */\nstruct PolicyStats {\n  ALL_CILIUM_POLICY_STATS(GENERATE_COUNTER_STRUCT)\n};\n\nusing RawPolicyMap = absl::flat_hash_map<std::string, std::shared_ptr<const PolicyInstanceImpl>>;\n\nclass NetworkPolicyMapImpl : public Envoy::Config::SubscriptionCallbacks,\n                             public Envoy::Event::DispatcherThreadDeletable,\n                             public Logger::Loggable<Logger::Id::config> {\npublic:\n  NetworkPolicyMapImpl(Server::Configuration::FactoryContext& context,\n                       const envoy::config::core::v3::ConfigSource& npds_config);\n  ~NetworkPolicyMapImpl() override;\n\n  void startSubscription(const envoy::config::core::v3::ConfigSource& npds_config);\n\n  // This is used for testing with a file-based subscription\n  void startSubscription(std::unique_ptr<Envoy::Config::Subscription>&& subscription) {\n    subscription_ = std::move(subscription);\n  }\n\n  const envoy::config::core::v3::ConfigSource& getConfigSource() const { return npds_config_; }\n\n  // run the given function after all the threads have scheduled\n  void runAfterAllThreads(std::function<void()>) const;\n\n  // Config::SubscriptionCallbacks\n  absl::Status onConfigUpdate(const std::vector<Envoy::Config::DecodedResourceRef>& resources,\n                              const std::string& version_info) override;\n  absl::Status onConfigUpdate(const std::vector<Envoy::Config::DecodedResourceRef>& added_resources,\n                              const Protobuf::RepeatedPtrField<std::string>& removed_resources,\n                              const std::string& system_version_info) override {\n    // NOT IMPLEMENTED YET.\n    UNREFERENCED_PARAMETER(added_resources);\n    UNREFERENCED_PARAMETER(removed_resources);\n    UNREFERENCED_PARAMETER(system_version_info);\n    return absl::OkStatus();\n  }\n  void onConfigUpdateFailed(Envoy::Config::ConfigUpdateFailureReason,\n                            const EnvoyException* e) override;\n\n  Server::Configuration::TransportSocketFactoryContext& transportFactoryContext() const {\n    return *transport_factory_context_;\n  }\n\n  Regex::Engine& regexEngine() const { return context_.regexEngine(); }\n\n  void tlsWrapperMissingPolicyInc() const;\n\nprivate:\n  // Helpers for atomic swap of the policy map pointer.\n  //\n  // store() is only used for the initialization of the map during construction.\n  // exchange() is used to atomically swap in a new map, the old map pointer is returned.\n  // Once a map is stored or swapped in to the atomic pointer by the main thread, it may be \"loaded\"\n  // from the atomic pointer by any thread. This is why the load returns a const pointer.\n  //\n  // For the loaded pointer to be safe to use, we must use acquire/release memory ordering:\n  // - when a pointer stored or swapped in, 'std::memory_order_release' informs the compiler to make\n  //   sure it is not reordering any write operations into the map to happen after the pointer is\n  //   written, and emits CPU instructions to also make the CPU out-of-order-execution logic to not\n  //   reorder any write operations to happen after the pointer itself is written. This guarantees\n  //   that the map is not modified after the point when the worker threads can observe the new\n  //   pointer value, i.e., the map is actaully immutable (const) from that point forward.\n  // - when the pointer is read (by a worker thread) 'std::memory_order_acquire' in the load\n  //   operation informs the compiler to emit CPU instructions to make the CPU\n  //   out-of-order-execution logic to not reorder any reads from the new map to happen before the\n  //   pointer itself is read, so that no values from the map are read before the map was \"released\"\n  //   by the store or exchange operation.\n  //\n  // Typically it is easier to think about the release part of the acquire/release semantics, as at\n  // the point of the store or exchange operation the compiler and the CPU know the location of the\n  // map in memory before and after the pointer is stored, so that without\n  // 'std::memory_order_release' there is an understandable risk of such write after release\n  // happening. On the acquire side it seems less likely that the compiler or the CPU could know the\n  // new map pointer value in advance and even try to reorder any read operations to happen before\n  // the pointer is actually read. But consider the typical case where the pointer value is actually\n  // not changing between consecutice load operations. The compiler or the CPU could speculate that\n  // to be the case and read some values from the old memory location. 'std::memory_order_acquire'\n  // tells the compiler (which then \"tells\" the CPU) that this can not be done, and all reads must\n  // actually happen after the pointer value is loaded, be it a new one or the same as before.\n  //\n  const RawPolicyMap* load() const { return map_ptr_.load(std::memory_order_acquire); }\n  void store(const RawPolicyMap* map) { map_ptr_.store(map, std::memory_order_release); }\n  const RawPolicyMap* exchange(const RawPolicyMap* map) {\n    return map_ptr_.exchange(map, std::memory_order_release);\n  }\n\n  const PolicyInstance* getPolicyInstanceImpl(const std::string& endpoint_policy_name) const;\n\n  void removeInitManager();\n\n  bool isNewStream();\n\n  static uint64_t instance_id_;\n\n  Server::Configuration::ServerFactoryContext& context_;\n  std::atomic<const RawPolicyMap*> map_ptr_;\n  Stats::ScopeSharedPtr npds_stats_scope_;\n  Stats::ScopeSharedPtr policy_stats_scope_;\n\n  // init target which starts gRPC subscription\n  Init::TargetImpl init_target_;\n  std::shared_ptr<Server::Configuration::TransportSocketFactoryContextImpl>\n      transport_factory_context_;\n  // Between policy updates, keep a dormant init manager installed so unexpected late init-target\n  // registrations do not hit the listener's already-initialized manager. If it accumulates targets\n  // while parked, log and rotate it out before making it active again.\n  std::unique_ptr<Init::ManagerImpl> parked_init_manager_;\n\n  std::unique_ptr<Envoy::Config::Subscription> subscription_;\n  envoy::config::core::v3::ConfigSource npds_config_;\n\nprotected:\n  friend class NetworkPolicyMap;\n  friend class CiliumNetworkPolicyTest;\n\n  PolicyStats stats_;\n};\n\nclass DenyAllPolicyInstanceImpl;\nclass AllowAllEgressPolicyInstanceImpl;\n\nclass NetworkPolicyMap : public Singleton::Instance, public Logger::Loggable<Logger::Id::config> {\npublic:\n  NetworkPolicyMap(Server::Configuration::FactoryContext& context,\n                   const envoy::config::core::v3::ConfigSource& npds_config,\n                   bool subscribe = false);\n  ~NetworkPolicyMap() override;\n\n  // This is used for testing with a file-based subscription\n  void startSubscription(std::unique_ptr<Envoy::Config::Subscription>&& subscription) {\n    getImpl().startSubscription(std::move(subscription));\n  }\n\n  const PolicyInstance& getPolicyInstance(const std::string& endpoint_policy_name,\n                                          bool allow_egress) const;\n\n  static DenyAllPolicyInstanceImpl DenyAllPolicy;\n  static PolicyInstance& getDenyAllPolicy();\n  static AllowAllEgressPolicyInstanceImpl AllowAllEgressPolicy;\n  static PolicyInstance& getAllowAllEgressPolicy();\n\n  bool exists(const std::string& endpoint_policy_name) const {\n    return getImpl().getPolicyInstanceImpl(endpoint_policy_name) != nullptr;\n  }\n\n  NetworkPolicyMapImpl& getImpl() const { return *impl_; }\n\nprivate:\n  Server::Configuration::ServerFactoryContext& context_;\n  std::unique_ptr<NetworkPolicyMapImpl> impl_;\n\n  ProtobufTypes::MessagePtr dumpNetworkPolicyConfigs(const Matchers::StringMatcher& name_matcher);\n  Server::ConfigTracker::EntryOwnerPtr config_tracker_entry_;\n};\nusing NetworkPolicyMapSharedPtr = std::shared_ptr<const NetworkPolicyMap>;\n\n// SniPattern implements a matcher for allowed SNI patterns.\n// See comment for `getValidPatternRE()` method to understand structure of a valid pattern.\n//\n// SniPattern supports two types of wildcards in match pattern:\n// - '*' matches any number of valid DNS characters within a subdomain boundary.\n// - '**' matches any non empty DNS pattern (across subdomain boundary).\n//\n// Additionaly \"*\" is a special pattern that matches any valid DNS.\n//\n// Examples:\n//\n// - `*.cilium.io` matches all first-level subdomains of `cilium.io`:\n//   - Matches: `www.cilium.io`, `blog.cilium.io`\n//   - Does NOT match: `cilium.io`, `foo.bar.cilium.io`, `kubernetes.io`\n//\n// - `*cilium.io` matches `cilium.io` and any domain ending with the `cilium.io` suffix:\n//   - Matches: `cilium.io`, `sub-cilium.io`, `subcilium.io`\n//   - Does NOT match: `www.cilium.io`, `blog.cilium.io`\n//\n// - `sub*.cilium.io` matches subdomains of `cilium.io` that start with the \"sub\" prefix:\n//   - Matches: `sub.cilium.io`, `subdomain.cilium.io`\n//   - Does NOT match: `www.cilium.io`, `blog-sub.cilium.io`, `blog.sub.cilium.io`, `cilium.io`\n//\n// - `**.cilium.io` matches all subdomains of `cilium.io` at any depth:\n//   - Matches: `www.cilium.io`, `test.app.cilium.io`\n//   - Does NOT match: `cilium.io`\nclass SniPattern : public Logger::Loggable<Logger::Id::config> {\npublic:\n  explicit SniPattern(const Regex::Engine& engine, absl::string_view sni);\n\n  // Helper method to check that the provided match pattern is valid and can be used\n  // to construct an instance of SniPattern. A valid match pattern should:\n  //\n  // - Contain only valid DNS characters('-a-zA-Z0-9_') and the wildcard specifier ('*')\n  // - No consecutive wildcard specifiers, except two for multiple whole subdomain matches.\n  // - Not have a trailing '.'\n  // - Not have an empty subdomain (multiple consecutive '.' are not allowed)\n  // - Empty pattern is only allowed due to testing, it does not match anything\n  static bool isValid(absl::string_view pattern) {\n    return pattern.empty() || re2::RE2::FullMatch(pattern, getValidPatternRE());\n  }\n\n  bool matches(const absl::string_view sni) const {\n    // The constructed match pattern or match name will be case sensitive.\n    // Convert to lower case before checking.\n    auto const lower_sni = absl::AsciiStrToLower(sni);\n    if (isExplicitFullMatch()) {\n      return match_name_ == lower_sni;\n    }\n\n    if (matcher_) {\n      return matcher_->match(lower_sni); // Anchored match\n    }\n    return false;\n  }\n\n  void toString(std::string& res) const {\n    if (isExplicitFullMatch()) {\n      res.append(fmt::format(\"\\\"{}\\\"\", match_name_));\n    } else if (matcher_) {\n      res.append(fmt::format(\"\\\"{}\\\"\", matcher_->pattern()));\n    } else {\n      res.append(\"\\\"\\\"\");\n    }\n  }\n\nprivate:\n  // Returns regular expression to check for a valid DNS pattern with optional additional\n  // wildcard specifier ('*') characters.\n  static const re2::RE2& getValidPatternRE() {\n    CONSTRUCT_ON_FIRST_USE(re2::RE2, \"(([*]{1,2}|[*]?[-a-zA-Z0-9_]+([*][-a-zA-Z0-9_]+)*[*]?)[.])*\"\n                                     \"([*]{1,2}|[*]?[-a-zA-Z0-9_]+([*][-a-zA-Z0-9_]+)*[*]?)\");\n  }\n\n  bool isExplicitFullMatch() const { return !match_name_.empty(); }\n\n  std::string match_name_;\n  std::shared_ptr<const Envoy::Regex::CompiledMatcher> matcher_;\n};\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/policy_id.h",
    "content": "#pragma once\n\n#include <cstdint>\n\nnamespace Envoy {\nnamespace Cilium {\n\nenum ID : uint64_t {\n  UNKNOWN = 0,\n  WORLD = 2,\n  // LocalIdentityFlag is the bit in the numeric identity that identifies\n  // a numeric identity to have local scope\n  LocalIdentityFlag = 1 << 24,\n};\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/privileged_service_client.cc",
    "content": "#if !defined(__linux__)\n#error \"Linux platform file is part of non-Linux build.\"\n#endif\n\n#include \"cilium/privileged_service_client.h\"\n\n#include <asm-generic/socket.h>\n#include <linux/capability.h>\n#include <linux/limits.h>\n#include <sys/socket.h>\n#include <sys/types.h>\n#include <unistd.h>\n\n#include <cerrno>\n#include <climits>\n#include <cstddef>\n#include <cstdint>\n#include <cstring>\n#include <string>\n\n#include \"envoy/api/os_sys_calls_common.h\"\n\n#include \"source/common/common/assert.h\"\n#include \"source/common/common/lock_guard.h\"\n#include \"source/common/common/logger.h\"\n\n#include \"starter/privileged_service_protocol.h\"\n\nnamespace Envoy {\nnamespace Cilium {\nnamespace PrivilegedService {\n\nProtocolClient::ProtocolClient() : Protocol(CILIUM_PRIVILEGED_SERVICE_FD), seq_(0) {\n  // Check that the Envoy process isn't running with privileges.\n  // The only exception is CAP_NET_BIND_SERVICE (if explicitly excluded from being dropped).\n  RELEASE_ASSERT((getCapabilities(CAP_EFFECTIVE) & ~(1UL << CAP_NET_BIND_SERVICE)) == 0 &&\n                     (getCapabilities(CAP_PERMITTED) & ~(1UL << CAP_NET_BIND_SERVICE)) == 0,\n                 \"cilium-envoy running with privileges, exiting\");\n\n  if (!checkPrivilegedService()) {\n    ENVOY_LOG(warn, \"Cilium privileged service not present\");\n    // No Cilium privileged service detected\n    close();\n  }\n\n  // Validate that direct SO_MARK is now prohibited\n  int sockfd = ::socket(AF_INET, SOCK_STREAM, 0);\n  RELEASE_ASSERT(sockfd >= 0, \"socket failed\");\n\n  uint32_t mark = 12345;\n  int rc = ::setsockopt(sockfd, SOL_SOCKET, SO_MARK, &mark, sizeof(mark));\n  RELEASE_ASSERT(rc == -1, \"setsockopt\");\n  RELEASE_ASSERT(errno == EPERM, \"setsockopt\");\n\n  ::close(sockfd);\n}\n\nssize_t ProtocolClient::transact(MessageHeader& req, size_t req_len, const void* data,\n                                 size_t data_len, int* fd, Response& resp, void* buf,\n                                 size_t buf_size) {\n  RELEASE_ASSERT(buf_size <= RESPONSE_BUF_SIZE, \"ProtocolClient::transact: invalid bufsize\");\n  uint32_t seq;\n\n  // get next atomic sequence number\n  do {\n    seq = ++seq_;\n  } while (seq == 0); // zero is reserved for \"no response\"\n  req.msg_seq_ = seq;\n\n  // Set up a waiter in the stack before we send anything so that the waiter exists as soon as it is\n  // possible for a concurrent receiver to receive the response.\n  Waiter waiter;\n  insert(seq, &waiter);\n\n  // send message after a waiter has been established.\n  ssize_t size = sendFdMsg(&req, req_len, data, data_len, *fd);\n\n  if (size > 0) {\n    RELEASE_ASSERT(size_t(size) == req_len + data_len, \"truncated request\");\n\n    // receive removes the waiter from 'waiters_' before returning\n    receive(waiter, seq);\n  } else {\n    remove(seq);\n  }\n\n  return waiter.getResponse(seq, resp, buf, buf_size, fd);\n}\n\n// receive\n// 1. Waits to become the receiver, checking for a response one each wake-up\n// 2. Loops receiving responses when becoming the exclusive receiver,\n//    passing resonses to other waiters until its own response is received.\n// 3. Removes the waiter from 'waiters_' before returning.\nvoid ProtocolClient::receive(Waiter& waiter, uint32_t seq) noexcept {\n  // Loop waiting until we have a response or become the receiver.\n  // 'mutex_' is released when exiting the loop.\n  bool done = false;\n  bool receiver_active;\n  {\n    Thread::LockGuard guard(mutex_);\n    while (true) {\n      // Check if we have our response.\n      if (waiter.seq() != 0) {\n        waiters_.erase(seq);\n        receiver_active = is_receiver_active_;\n        done = true;\n        break;\n      }\n\n      // Check if we can become the receiver.\n      if (!is_receiver_active_) {\n        receiver_active = is_receiver_active_ = true;\n        break;\n      }\n\n      // 'mutex_' is released for the duration of the wait.\n      wait();\n    }\n  }\n\n  // mutex_ not held any more\n  // Return if done\n  if (done) {\n    if (!receiver_active) {\n      // Notify another waiter (if any) to possibly become the new receiver.\n      // This sure there always is a receiver if there are any waiters.\n      notifyOne();\n    }\n    return;\n  }\n\n  // No locks are held, but we just exclusively set the is_receiver_active_ = true above.\n  // Receiver accesses it's own waiter (the 'waiter') without locking.\n  // Other waiters are accessed only while holding 'mutex_'.\n\n  // Receive until we have a response or an error\n  while (true) {\n    ssize_t size = waiter.recvFdMsg(*this);\n    if (size < 0) {\n      ENVOY_LOG(debug, \"privileged service failed with {} (errno {})\", size, errno);\n      break;\n    }\n\n    // Is the response for us?\n    if (waiter.seq() == seq) {\n      break;\n    }\n\n    // The response is for one of the waiters, pass it on\n    {\n      Thread::LockGuard guard(mutex_);\n      auto it = waiters_.find(waiter.seq());\n      RELEASE_ASSERT(it != waiters_.end(), fmt::format(\"no waiter found for seq {}\", waiter.seq()));\n      // copy received data to the found waiter\n      *it->second = waiter;\n      // clear the waiter of the current receiver\n      waiter.clear();\n    }\n\n    // have to notify all waiters for the right one to be woken up from the wait.\n    notifyAll();\n  }\n\n  // Pass receiver duties to one of the other waiters & remove the waiter from 'waiters_' while we\n  // still have the mutex.\n  {\n    Thread::LockGuard guard(mutex_);\n    is_receiver_active_ = false;\n    waiters_.erase(seq);\n  }\n\n  // wake up one waiter to take the receiver role\n  notifyOne();\n}\n\nbool ProtocolClient::checkPrivilegedService() {\n  // Dump the effective capabilities of the privileged service process\n  DumpRequest req;\n  Response resp;\n  uint8_t buf[RESPONSE_BUF_SIZE];\n  int fd = -1;\n\n  ssize_t size = transact(req.hdr_, sizeof(req), nullptr, 0, &fd, resp, buf, sizeof(buf));\n  if (size < ssize_t(sizeof(resp))) {\n    ENVOY_LOG_MISC(warn, \"Cilium privileged service detection failed with return code: {}\", size);\n    return false;\n  }\n  std::string str(reinterpret_cast<char*>(buf), size - sizeof(resp));\n  ENVOY_LOG_MISC(debug, \"Cilium privileged service detected with following capabilities: {}\", str);\n  return true;\n}\n\nEnvoy::Api::SysCallIntResult ProtocolClient::bpfOpen(const char* path) {\n  if (!haveCiliumPrivilegedService()) {\n    return {-1, EPERM};\n  }\n\n  BpfOpenRequest req;\n  Response resp;\n  size_t path_len = strlen(path);\n  RELEASE_ASSERT(path_len <= PATH_MAX, \"bpf open path too long\");\n  int fd = -1;\n  ssize_t size = transact(req.hdr_, sizeof(req), path, path_len, &fd, resp);\n  RELEASE_ASSERT(size == ssize_t(sizeof(resp)), \"invalid received response size\");\n  if (resp.return_value_ == INT_MAX) {\n    resp.return_value_ = fd;\n  }\n  return Envoy::Api::SysCallIntResult{resp.return_value_, resp.errno_};\n}\n\nEnvoy::Api::SysCallIntResult ProtocolClient::bpfLookup(int fd, const void* key, uint32_t key_size,\n                                                       void* value, uint32_t value_size) {\n  if (!haveCiliumPrivilegedService()) {\n    return {-1, EPERM};\n  }\n\n  BpfLookupRequest req(value_size);\n  Response resp;\n  ssize_t size = transact(req.hdr_, sizeof(req), key, key_size, &fd, resp, value, value_size);\n  RELEASE_ASSERT((size == ssize_t(sizeof(resp)) && resp.return_value_ == -1) ||\n                     size == ssize_t(sizeof(resp) + value_size),\n                 \"invalid received bpf lookup value size\");\n  return Envoy::Api::SysCallIntResult{resp.return_value_, resp.errno_};\n}\n\nEnvoy::Api::SysCallIntResult ProtocolClient::setsockopt(int sockfd, int level, int optname,\n                                                        const void* optval, socklen_t optlen) {\n  if (!haveCiliumPrivilegedService()) {\n    return {-1, EPERM};\n  }\n\n  SetSockOptRequest req(level, optname, optval, optlen);\n  Response resp;\n  ssize_t size = transact(req.hdr_, sizeof(req), nullptr, 0, &sockfd, resp);\n  RELEASE_ASSERT(size == ssize_t(sizeof(resp)), \"invalid received response size\");\n  return Envoy::Api::SysCallIntResult{resp.return_value_, resp.errno_};\n}\n\n} // namespace PrivilegedService\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/privileged_service_client.h",
    "content": "#pragma once\n\n#if !defined(__linux__)\n#error \"Linux platform file is part of non-Linux build.\"\n#endif\n\n#include <sys/socket.h>\n#include <sys/types.h>\n\n#include <atomic>\n#include <cstddef>\n#include <cstdint>\n#include <cstring>\n\n#include \"envoy/api/os_sys_calls_common.h\"\n\n#include \"source/common/common/assert.h\"\n#include \"source/common/common/lock_guard.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/thread.h\"\n#include \"source/common/singleton/threadsafe_singleton.h\"\n\n#include \"absl/base/thread_annotations.h\"\n#include \"absl/container/flat_hash_map.h\"\n#include \"starter/privileged_service_protocol.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nclass Bpf;\nclass SocketMarkOption;\n\nnamespace PrivilegedService {\n\n#define RESPONSE_BUF_SIZE 1024\n\n// ProtocolClient implements the client logic for communicating with the privileged service.\nclass ProtocolClient : public Protocol, Logger::Loggable<Logger::Id::filter> {\npublic:\n  ProtocolClient();\n\n  // allow access to the classes that need it\n  friend class Envoy::Cilium::Bpf;\n  friend class Envoy::Cilium::SocketMarkOption;\n\n  // Set a socket option\n  Envoy::Api::SysCallIntResult setsockopt(int sockfd, int level, int optname, const void* optval,\n                                          socklen_t optlen);\n\nprotected:\n  // Read-only bpf syscalls\n  Envoy::Api::SysCallIntResult bpfOpen(const char* path);\n  Envoy::Api::SysCallIntResult bpfLookup(int fd, const void* key, uint32_t key_size, void* value,\n                                         uint32_t value_size);\n\nprivate:\n  bool checkPrivilegedService();\n  bool haveCiliumPrivilegedService() const { return isOpen(); }\n\n  ssize_t transact(MessageHeader& req, size_t req_len, const void* data, size_t datalen, int* fd,\n                   Response& resp, void* buf = nullptr, size_t buf_size = 0);\n\n  std::atomic<uint32_t> seq_;\n\n  // Waiter has space for a response. While placed in the 'waiters_' map, all access to the\n  // waiter must happen while holding 'mutex_', except for the designated receiver may\n  // access it's own waiter without the mutex.\n  class Waiter {\n  public:\n    Waiter() = default;\n\n    // Returns non-zero sequence number after a response has been received.\n    uint32_t seq() const { return resp_.hdr_.msg_seq_; }\n\n    // Returns received message type\n    MessageType msgType() const { return static_cast<MessageType>(resp_.hdr_.msg_type_); }\n\n    ssize_t recvFdMsg(ProtocolClient& client) {\n      size_ = client.recvFdMsg(&resp_, sizeof(resp_), buf_, sizeof(buf_), &fd_);\n      if (size_ >= 0) {\n        // Failing release asserts cause an exit and an automated restart. This is the only way\n        // to recover from privilaged service failures.\n        RELEASE_ASSERT(size_ != 0, \"Cilium privileged service closed pipe\");\n        // Must have enough data to decode the response header\n        RELEASE_ASSERT(size_t(size_) >= sizeof(Response),\n                       \"Cilium privileged service truncated response\");\n        RELEASE_ASSERT(msgType() == MessageType::TypeResponse,\n                       \"Cilium privileged service unexpected response type\");\n      }\n      return size_;\n    }\n\n    ssize_t getResponse(uint32_t expected_seq_n, Response& resp, void* buf, size_t buf_size,\n                        int* fd) const {\n      auto received_seq = seq();\n      RELEASE_ASSERT(\n          received_seq == 0 && size_ <= 0 || received_seq == expected_seq_n,\n          fmt::format(\"waiter: invalid response sequence: {} != {}\", received_seq, expected_seq_n));\n\n      ssize_t size = size_;\n      if (size_t(size) > sizeof(resp)) {\n        auto copy_size = size_t(size) - sizeof(resp);\n        if (copy_size > buf_size) {\n          // truncate response\n          size -= copy_size - buf_size;\n          copy_size = buf_size;\n        }\n        memcpy(buf, buf_, copy_size); // NOLINT(safe-memcpy)\n      }\n      resp = resp_;\n      if (fd) {\n        *fd = fd_;\n      }\n\n      return size;\n    }\n\n    Waiter& operator=(Waiter& other) {\n      size_ = other.size_;\n      fd_ = other.fd_;\n      resp_ = other.resp_;\n      if (size_ > ssize_t(sizeof(resp_))) {\n        size_t copy_size = size_t(size_) - sizeof(resp_);\n        if (copy_size <= sizeof(buf_)) {\n          memcpy(buf_, other.buf_, copy_size); // NOLINT(safe-memcpy)\n        }\n      }\n      return *this;\n    }\n\n    void clear() {\n      size_ = 0;\n      fd_ = -1;\n      resp_ = {};\n    }\n\n  private:\n    // 'size_' non-zero after a the response has been received\n    ssize_t size_{};\n    int fd_;\n    Response resp_;\n    char buf_[RESPONSE_BUF_SIZE];\n  };\n\n  void insert(uint32_t seq, Waiter* waiter) {\n    Thread::LockGuard guard(mutex_);\n    auto ret = waiters_.emplace(seq, waiter);\n    RELEASE_ASSERT(ret.second, \"waiter emplace failed\");\n  }\n\n  void remove(uint32_t seq) {\n    Thread::LockGuard guard(mutex_);\n    waiters_.erase(seq);\n  }\n\n  // receive is declared as noexcept to guarantee it will return normally, rather than via\n  // an exception, if the program continues running. This allows for safe removal of the Waiter\n  // from Waiters before the Waiter is destructed.\n  void receive(Waiter&, uint32_t seq) noexcept;\n\nprivate:\n  using WaitersMap = absl::flat_hash_map<uint32_t, Waiter*>;\n\n  Thread::MutexBasicLockable mutex_;\n  WaitersMap waiters_ ABSL_GUARDED_BY(mutex_);\n  bool is_receiver_active_ ABSL_GUARDED_BY(mutex_) = false;\n\n  void wait() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mutex_) { cond_.wait(mutex_); }\n\n  void notifyOne() ABSL_LOCKS_EXCLUDED(mutex_) { cond_.notifyOne(); }\n\n  void notifyAll() ABSL_LOCKS_EXCLUDED(mutex_) { cond_.notifyAll(); }\n\n  Thread::CondVar cond_;\n};\n\nusing Singleton = Envoy::ThreadSafeSingleton<ProtocolClient>;\n\n} // namespace PrivilegedService\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/proxylib.cc",
    "content": "#include \"cilium/proxylib.h\"\n\n#include <dlfcn.h>\n#include <fmt/format.h>\n\n#include <cstdint>\n#include <memory>\n#include <string>\n\n#include \"envoy/buffer/buffer.h\"\n#include \"envoy/common/exception.h\"\n#include \"envoy/network/connection.h\"\n\n#include \"source/common/common/assert.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/protobuf/protobuf.h\" // IWYU pragma: keep\n\n#include \"absl/container/fixed_array.h\"\n#include \"proxylib/types.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nGoFilter::GoFilter(const std::string& go_module,\n                   const Protobuf::Map<::std::string, ::std::string>& params) {\n  ENVOY_LOG(info, \"GoFilter: Opening go module {}\", go_module);\n  ::dlerror(); // clear any possible error state\n  go_module_handle_ = ::dlopen(go_module.c_str(), RTLD_NOW);\n  if (!go_module_handle_) {\n    throw EnvoyException(\n        fmt::format(\"cilium.network: Cannot load go module \\'{}\\': {}\", go_module, dlerror()));\n  }\n\n  go_close_module_ = GoCloseModuleCB(::dlsym(go_module_handle_, \"CloseModule\"));\n  if (!go_close_module_) {\n    throw EnvoyException(fmt::format(\"cilium.network: Cannot find symbol \\'CloseModule\\' from \"\n                                     \"module \\'{}\\': {}\",\n                                     go_module, dlerror()));\n  }\n  GoOpenModuleCB go_open_module = GoOpenModuleCB(::dlsym(go_module_handle_, \"OpenModule\"));\n  if (!go_open_module) {\n    throw EnvoyException(fmt::format(\"cilium.network: Cannot find symbol \\'OpenModule\\' from \"\n                                     \"module \\'{}\\': {}\",\n                                     go_module, dlerror()));\n  } else {\n    // Convert params to KeyValue pairs\n    auto num = params.size();\n    absl::FixedArray<GoStringPair> values(num);\n\n    int i = 0;\n    for (const auto& pair : params) {\n      values[i].key = GoString(pair.first);\n      values[i++].value = GoString(pair.second);\n    }\n\n    go_module_id_ =\n        go_open_module(GoKeyValueSlice(values.data(), num), ENVOY_LOG_CHECK_LEVEL(debug));\n    if (go_module_id_ == 0) {\n      throw EnvoyException(\n          fmt::format(\"cilium.network: \\'{}::OpenModule()\\' rejected parameters\", go_module));\n    }\n  }\n\n  go_on_new_connection_ = GoOnNewConnectionCB(::dlsym(go_module_handle_, \"OnNewConnection\"));\n  if (!go_on_new_connection_) {\n    throw EnvoyException(fmt::format(\"cilium.network: Cannot find symbol \\'OnNewConnection\\' \"\n                                     \"from module \\'{}\\': {}\",\n                                     go_module, dlerror()));\n  }\n  go_on_data_ = GoOnDataCB(::dlsym(go_module_handle_, \"OnData\"));\n  if (!go_on_data_) {\n    throw EnvoyException(\n        fmt::format(\"cilium.network: Cannot find symbol \\'OnData\\' from module \\'{}\\': {}\",\n                    go_module, dlerror()));\n  }\n  go_close_ = GoCloseCB(::dlsym(go_module_handle_, \"Close\"));\n  if (!go_close_) {\n    throw EnvoyException(\n        fmt::format(\"cilium.network: Cannot find symbol \\'Close\\' from module \\'{}\\': {}\",\n                    go_module, dlerror()));\n  }\n}\n\nGoFilter::~GoFilter() {\n  if (go_module_id_ != 0) {\n    go_close_module_(go_module_id_);\n  }\n  if (go_module_handle_) {\n    ::dlclose(go_module_handle_);\n  }\n}\n\nGoFilter::InstancePtr GoFilter::newInstance(Network::Connection& conn, const std::string& go_proto,\n                                            bool ingress, uint32_t src_id, uint32_t dst_id,\n                                            const std::string& src_addr,\n                                            const std::string& dst_addr,\n                                            const std::string& policy_name) const {\n  InstancePtr parser{nullptr};\n  if (go_module_handle_) {\n    parser = std::make_unique<Instance>(*this, conn);\n    ENVOY_CONN_LOG(trace, \"GoFilter: Calling go module\", conn);\n    auto res = (*go_on_new_connection_)(\n        go_module_id_, go_proto, conn.id(), ingress, src_id, dst_id, src_addr, dst_addr,\n        policy_name, &parser->orig_.inject_slice_, &parser->reply_.inject_slice_);\n    if (res == FILTER_OK) {\n      parser->connection_id_ = conn.id();\n    } else {\n      ENVOY_CONN_LOG(warn, \"Cilium Network: Connection with parser \\\"{}\\\" rejected: {}\", conn,\n                     go_proto, toString(res));\n      parser.reset(nullptr);\n    }\n  }\n  return parser;\n}\n\nFilterResult GoFilter::Instance::onIo(bool reply, Buffer::Instance& data, bool end_stream) {\n  auto& dir = reply ? reply_ : orig_;\n  int64_t data_len = data.length();\n\n  // Pass bytes based on an earlier verdict?\n  if (dir.pass_bytes_ > 0) {\n    ASSERT(dir.drop_bytes_ == 0);      // Can't drop and pass the same bytes\n    ASSERT(dir.buffer_.length() == 0); // Passed data is not buffered\n    ASSERT(dir.need_bytes_ == 0);      // Passed bytes can't be needed\n    // Can return immediately if passing more that we have input.\n    // May need to process injected data even when there is no input left.\n    if (dir.pass_bytes_ > data_len) {\n      if (data_len > 0) {\n        ENVOY_CONN_LOG(debug, \"Cilium Network::OnIO: Passing all input: {} bytes: {} \", conn_,\n                       data_len, data.toString());\n        dir.pass_bytes_ -= data_len;\n      }\n      return FILTER_OK; // all of 'data' is passed to the next filter\n    }\n    // Pass of dir.pass_bytes_ is done after buffer rearrangement below.\n    // Using the available APIs it is easier to move data from the beginning of\n    // a buffer to another rather than from the end of a buffer to another.\n  } else {\n    // Drop bytes based on an earlier verdict?\n    if (dir.drop_bytes_ > 0) {\n      ASSERT(dir.buffer_.length() == 0); // Dropped data is not buffered\n      ASSERT(dir.need_bytes_ == 0);      // Dropped bytes can't be needed\n      // Can return immediately if passing more that we have input.\n      // May need to process injected data even when there is no input left.\n      if (dir.drop_bytes_ > data_len) {\n        if (data_len > 0) {\n          ENVOY_CONN_LOG(debug, \"Cilium Network::OnIO: Dropping all input: {} bytes: {} \", conn_,\n                         data_len, data.toString());\n          dir.drop_bytes_ -= data_len;\n          data.drain(data_len);\n        }\n        return FILTER_OK; // everything was dropped, nothing more to be done\n      }\n      ENVOY_CONN_LOG(debug, \"Cilium Network::OnIO: Dropping first {} bytes of input: {}\", conn_,\n                     dir.drop_bytes_, data.toString());\n      data.drain(dir.drop_bytes_);\n      dir.drop_bytes_ = 0;\n      // At frame boundary, more data may remain\n    }\n  }\n\n  // Move data to the end of the input buffer, use 'data' as the output buffer\n  dir.buffer_.move(data);\n  ASSERT(data.length() == 0);\n  auto& input = dir.buffer_;\n  int64_t input_len = input.length();\n  auto& output = data;\n\n  // Move pre-passed input to output.\n  // Note that the case of all new input being passed is already taken care of\n  // above.\n  if (dir.pass_bytes_ > 0) {\n    ENVOY_CONN_LOG(debug, \"Cilium Network::OnIO: Passing first {} bytes of input: {}\", conn_,\n                   input_len, input.toString());\n    output.move(input, dir.pass_bytes_);\n    input_len -= dir.pass_bytes_;\n    dir.pass_bytes_ = 0;\n    // At frame boundary, more data may remain\n  }\n\n  // Output now at frame boundary, output frame(s) injected by the reverse\n  // direction first\n  if (dir.inject_slice_.len() > 0) {\n    ENVOY_CONN_LOG(\n        debug, \"Cilium Network::OnIO: Reverse Injecting: {} bytes: {} \", conn_,\n        dir.inject_slice_.len(),\n        std::string(reinterpret_cast<char*>(dir.inject_slice_.data_), dir.inject_slice_.len()));\n    output.add(dir.inject_slice_.data_, dir.inject_slice_.len());\n    dir.inject_slice_.reset();\n  }\n\n  // Do nothing if we don't have enough input (partial input remains buffered)\n  if (input_len < dir.need_bytes_) {\n    return FILTER_OK;\n  }\n  dir.need_bytes_ = 0;\n\n  const int max_ops = 16; // Make shorter for testing purposes\n  FilterOp ops[max_ops];\n  GoFilterOpSlice op_slice(ops, max_ops);\n\n  FilterResult res;\n  bool terminal_op_seen = false;\n  bool inject_buf_exhausted = false;\n\n  do {\n    op_slice.reset();\n    Buffer::RawSliceVector raw_slices = input.getRawSlices();\n\n    int64_t total_length = 0;\n    absl::FixedArray<GoSlice<uint8_t>> buffer_slices(raw_slices.size());\n    uint64_t non_empty_slices = 0;\n    for (const Buffer::RawSlice& raw_slice : raw_slices) {\n      if (raw_slice.len_ > 0) {\n        buffer_slices[non_empty_slices++] =\n            GoSlice<uint8_t>(reinterpret_cast<uint8_t*>(raw_slice.mem_), raw_slice.len_);\n        total_length += raw_slice.len_;\n      }\n    }\n    GoDataSlices input_slices(buffer_slices.begin(), non_empty_slices);\n\n    ENVOY_CONN_LOG(trace, \"Cilium Network::OnIO: Calling go module with {} bytes of data\", conn_,\n                   total_length);\n    res = (*parent_.go_on_data_)(connection_id_, reply, end_stream, &input_slices, &op_slice);\n    ENVOY_CONN_LOG(trace, \"Cilium Network::OnIO: \\'go_on_data\\' returned {}, ops({})\", conn_,\n                   toString(res), op_slice.len());\n    if (res == FILTER_OK) {\n      // Process all returned filter operations.\n      for (int i = 0; i < op_slice.len(); i++) {\n        auto op = ops[i].op;\n        auto n_bytes = ops[i].n_bytes;\n\n        if (n_bytes == 0) {\n          ENVOY_CONN_LOG(warn, \"Cilium Network::OnIO: INVALID op ({}) length: {} bytes\", conn_, op,\n                         n_bytes);\n          return FILTER_PARSER_ERROR;\n        }\n\n        if (terminal_op_seen) {\n          ENVOY_CONN_LOG(warn,\n                         \"Cilium Network::OnIO: Filter operation {} after \"\n                         \"terminal operation.\",\n                         conn_, op);\n          return FILTER_PARSER_ERROR;\n        }\n\n        switch (op) {\n        case FILTEROP_MORE:\n          ENVOY_CONN_LOG(debug, \"Cilium Network::OnIO: FILTEROP_MORE: {} bytes\", conn_, n_bytes);\n          dir.need_bytes_ = input_len + n_bytes;\n          terminal_op_seen = true; // MORE can not be followed with other ops.\n          continue;                // errors out if more operations follow\n\n        case FILTEROP_PASS:\n          ENVOY_CONN_LOG(debug, \"Cilium Network::OnIO: FILTEROP_PASS: {} bytes\", conn_, n_bytes);\n          if (n_bytes > input_len) {\n            output.move(input, input_len);\n            dir.pass_bytes_ = n_bytes - input_len; // pass the remainder later\n            input_len = 0;\n            terminal_op_seen = true; // PASS more than input is terminal operation.\n            continue;                // errors out if more operations follow\n          }\n          output.move(input, n_bytes);\n          input_len -= n_bytes;\n          break;\n\n        case FILTEROP_DROP:\n          ENVOY_CONN_LOG(debug, \"Cilium Network::OnIO: FILTEROP_DROP: {} bytes\", conn_, n_bytes);\n          if (n_bytes > input_len) {\n            input.drain(input_len);\n            dir.drop_bytes_ = n_bytes - input_len; // drop the remainder later\n            input_len = 0;\n            terminal_op_seen = true; // DROP more than input is terminal operation.\n            continue;                // errors out if more operations follow\n          }\n          input.drain(n_bytes);\n          input_len -= n_bytes;\n          break;\n\n        case FILTEROP_INJECT:\n          if (n_bytes > dir.inject_slice_.len()) {\n            ENVOY_CONN_LOG(warn,\n                           \"Cilium Network::OnIO: FILTEROP_INJECT: INVALID \"\n                           \"length: {} bytes\",\n                           conn_, n_bytes);\n            return FILTER_PARSER_ERROR;\n          }\n          ENVOY_CONN_LOG(debug, \"Cilium Network::OnIO: FILTEROP_INJECT: {} bytes: {}\", conn_,\n                         n_bytes,\n                         std::string(reinterpret_cast<char*>(dir.inject_slice_.data_),\n                                     dir.inject_slice_.len()));\n          output.add(dir.inject_slice_.data_, n_bytes);\n          dir.inject_slice_.drain(n_bytes);\n          break;\n\n        case FILTEROP_ERROR:\n        default:\n          ENVOY_CONN_LOG(warn, \"Cilium Network::OnIO: FILTEROP_ERROR: {} bytes\", conn_, n_bytes);\n          return FILTER_PARSER_ERROR;\n        }\n      }\n    } else {\n      // Close the connection an any error\n      ENVOY_CONN_LOG(warn, \"Cilium Network::OnIO: FILTER_POLICY_DROP {}\", conn_, toString(res));\n      return FILTER_PARSER_ERROR;\n    }\n\n    if (dir.inject_slice_.len() > 0) {\n      ENVOY_CONN_LOG(warn, \"Cilium Network::OnIO: {} bytes abandoned in inject buffer\", conn_,\n                     dir.inject_slice_.len());\n      return FILTER_PARSER_ERROR;\n    }\n\n    inject_buf_exhausted = dir.inject_slice_.atCapacity();\n\n    // Make space for more injected data\n    dir.inject_slice_.reset();\n\n    // Loop back if ops or inject buffer was exhausted\n  } while (!terminal_op_seen && (op_slice.len() == max_ops || inject_buf_exhausted));\n\n  if (output.length() < 100) {\n    ENVOY_CONN_LOG(debug, \"Cilium Network::OnIO: Output on return: {}\", conn_, output.toString());\n  } else {\n    ENVOY_CONN_LOG(debug, \"Cilium Network::OnIO: Output length return: {}\", conn_, output.length());\n  }\n  return res;\n}\n\nvoid GoFilter::Instance::close() {\n  (*parent_.go_close_)(connection_id_);\n  connection_id_ = 0;\n  conn_.close(Network::ConnectionCloseType::FlushWrite);\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/proxylib.h",
    "content": "#pragma once\n\n#include <google/protobuf/map.h>\n\n#include <cstdint>\n#include <memory>\n#include <string>\n\n#include \"envoy/buffer/buffer.h\"\n#include \"envoy/network/connection.h\"\n\n#include \"source/common/buffer/buffer_impl.h\"\n#include \"source/common/common/logger.h\"\n\n#include \"proxylib/libcilium.h\"\n#include \"proxylib/types.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nstruct GoString {\n  GoString(const std::string& str) : mem_(str.c_str()), len_(str.length()) {}\n  GoString() : mem_(nullptr), len_(0) {}\n\n  const char* mem_;\n  GoInt len_;\n};\n\ntemplate <typename T> struct GoSlice {\n  GoSlice() : data_(nullptr), len_(0) {}\n  GoSlice(T* data, GoInt len) : data_(data), len_(len), cap_(len) {} // Initialized as full\n  GoInt len() const { return len_; }\n  GoInt cap() const { return cap_; }\n  T& operator[](GoInt x) { return data_[x]; }\n  const T& operator[](GoInt x) const { return data_[x]; }\n  operator T*() { return data_; }\n  operator const T*() const { return data_; }\n  operator void*() { return data_; }\n  operator const void*() const { return data_; }\n\n  T* data_;\n  GoInt len_;\n  GoInt cap_;\n};\n\ninline std::string toString(const FilterResult res) {\n  switch (res) {\n  case FILTER_OK:\n    return \"No error\";\n  case FILTER_PARSER_ERROR:\n    return \"Parser error\";\n  case FILTER_UNKNOWN_CONNECTION:\n    return \"Unknown connection\";\n  case FILTER_UNKNOWN_PARSER:\n    return \"Unknown parser\";\n  case FILTER_INVALID_ADDRESS:\n    return \"Invalid address\";\n  case FILTER_POLICY_DROP:\n    return \"Connection rejected\";\n  case FILTER_INVALID_INSTANCE:\n    return \"Invalid proxylib instance\";\n  case FILTER_UNKNOWN_ERROR:\n    break;\n  }\n  return \"Unknown error\";\n}\n\n// Slice that remembers the base pointer and that can be reset.\n// Note that these have more header data than GoSlices and therefore may not\n// used as array elements passed to Go!\ntemplate <typename T> struct ResetableSlice : GoSlice<T> {\n  // Templated base class member access is a bit ugly\n  using GoSlice<T>::data_;\n  using GoSlice<T>::len_;\n  using GoSlice<T>::cap_;\n\n  ResetableSlice(T* data, GoInt cap) : GoSlice<T>(data, cap), base_(data) {\n    len_ = 0; // Init as empty\n  }\n\n  // Non-Go helpers to consume data filled in by Go. Must reset() before slice\n  // used by Go again.\n  GoInt drain(GoInt len) {\n    if (len > len_) {\n      len = len_;\n    }\n    data_ += len;\n    len_ -= len;\n\n    return len;\n  }\n  bool atCapacity() {\n    // Return true if all of the available space was used, not affected by\n    // draining\n    return (data_ + len_) >= (base_ + cap_);\n  }\n  void reset() {\n    data_ = base_;\n    len_ = 0;\n  }\n\n  // private part not visible to Go\n  T* base_;\n};\n\nstruct GoStringPair {\n  GoString key;\n  GoString value;\n};\n\nusing GoKeyValueSlice = GoSlice<GoStringPair>;\nusing GoOpenModuleCB = uint64_t (*)(GoKeyValueSlice, bool);\nusing GoCloseModuleCB = void (*)(uint64_t);\n\nusing GoBufferSlice = ResetableSlice<uint8_t>;\nusing GoOnNewConnectionCB = FilterResult (*)(uint64_t, GoString, uint64_t, bool, uint32_t, uint32_t,\n                                             GoString, GoString, GoString, GoBufferSlice*,\n                                             GoBufferSlice*);\n\nusing GoDataSlices = GoSlice<GoSlice<uint8_t>>; // Scatter-gather buffer list as '[][]byte'\nusing GoFilterOpSlice = ResetableSlice<FilterOp>;\nusing GoOnDataCB = FilterResult (*)(uint64_t, bool, bool, GoDataSlices*, GoFilterOpSlice*);\nusing GoCloseCB = void (*)(uint64_t);\n\nclass GoFilter : public Logger::Loggable<Logger::Id::filter> {\npublic:\n  GoFilter(const std::string& go_module, const Protobuf::Map<::std::string, ::std::string>&);\n  ~GoFilter();\n\n  class Instance : public Logger::Loggable<Logger::Id::filter> {\n  public:\n    Instance(const GoFilter& parent, Network::Connection& conn) : parent_(parent), conn_(conn) {}\n    ~Instance() {\n      if (connection_id_) {\n        // Tell Go parser to scrap the state kept for the connection\n        (*parent_.go_close_)(connection_id_);\n      }\n    }\n\n    void close();\n\n    FilterResult onIo(bool reply, Buffer::Instance& data, bool end_stream);\n\n    bool wantReplyInject() const { return reply_.wantToInject(); }\n    void setOrigEndStream(bool end_stream) { orig_.closed_ = end_stream; }\n    void setReplyEndStream(bool end_stream) { reply_.closed_ = end_stream; }\n\n    struct Direction {\n      Direction() : inject_slice_(inject_buf_, sizeof(inject_buf_)) {}\n\n      bool wantToInject() const { return !closed_ && inject_slice_.len() > 0; }\n      void close() { closed_ = true; }\n\n      Buffer::OwnedImpl buffer_; // Buffered data in this direction\n      int64_t need_bytes_{0};    // Number of additional data bytes needed before can parse again\n      int64_t pass_bytes_{0};    // Number of bytes to pass without calling the parser again\n      int64_t drop_bytes_{0};\n      bool closed_{false};\n      GoBufferSlice inject_slice_;\n      uint8_t inject_buf_[1024];\n    };\n\n    const GoFilter& parent_;\n    Network::Connection& conn_;\n    Direction orig_;\n    Direction reply_;\n    uint64_t connection_id_ = 0;\n  };\n  using InstancePtr = std::unique_ptr<Instance>;\n\n  InstancePtr newInstance(Network::Connection& conn, const std::string& go_proto, bool ingress,\n                          uint32_t src_id, uint32_t dst_id, const std::string& src_addr,\n                          const std::string& dst_addr, const std::string& policy_name) const;\n\nprivate:\n  void* go_module_handle_{nullptr};\n  GoCloseModuleCB go_close_module_;\n  GoOnNewConnectionCB go_on_new_connection_;\n  GoOnDataCB go_on_data_;\n  GoCloseCB go_close_;\n  uint64_t go_module_id_{0};\n};\n\nusing GoFilterSharedPtr = std::shared_ptr<const GoFilter>;\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/secret_watcher.cc",
    "content": "#include \"cilium/secret_watcher.h\"\n\n#include <fmt/format.h>\n\n#include <atomic>\n#include <string>\n#include <utility>\n\n#include \"envoy/api/api.h\"\n#include \"envoy/common/callback.h\"\n#include \"envoy/common/exception.h\"\n#include \"envoy/config/core/v3/config_source.pb.h\"\n#include \"envoy/extensions/transport_sockets/tls/v3/tls.pb.h\"\n#include \"envoy/secret/secret_provider.h\"\n#include \"envoy/server/transport_socket_config.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/thread.h\"\n#include \"source/common/config/datasource.h\"\n#include \"source/common/tls/context_config_impl.h\"\n#include \"source/common/tls/server_context_config_impl.h\"\n\n#include \"absl/status/status.h\"\n#include \"absl/synchronization/mutex.h\"\n#include \"cilium/api/npds.pb.h\"\n#include \"cilium/network_policy.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nnamespace {\n\n// SDS config used in production\nenvoy::config::core::v3::ConfigSource\ngetCiliumSDSConfig(const std::string&, const envoy::config::core::v3::ConfigSource& config_source) {\n  // This is used in production, where the SDS config is always the same and does not need to\n  // be overridden.\n  return config_source;\n}\n\nSecret::GenericSecretConfigProviderSharedPtr\nsecretProvider(Server::Configuration::TransportSocketFactoryContext& context,\n               const std::string& sds_name, const NetworkPolicyMapImpl& parent) {\n  const envoy::config::core::v3::ConfigSource& config_source =\n      getSDSConfig(sds_name, parent.getConfigSource());\n  return context.serverFactoryContext().secretManager().findOrCreateGenericSecretProvider(\n      config_source, sds_name, context.serverFactoryContext(), context.initManager());\n}\n\n} // namespace\n\nGetSdsConfigFunc getSDSConfig = &getCiliumSDSConfig;\nvoid setSDSConfigFunc(GetSdsConfigFunc func) { getSDSConfig = func; }\nvoid resetSDSConfigFunc() { getSDSConfig = &getCiliumSDSConfig; }\n\nSecretWatcher::SecretWatcher(const NetworkPolicyMapImpl& parent, const std::string& sds_name)\n    : parent_(parent), name_(sds_name),\n      secret_provider_(secretProvider(parent.transportFactoryContext(), sds_name, parent)),\n      update_secret_(readAndWatchSecret()) {}\n\nSecretWatcher::~SecretWatcher() {\n  if (!Thread::MainThread::isMainOrTestThread()) {\n    ENVOY_LOG(error, \"SecretWatcher: Destructor executing in a worker thread, while \"\n                     \"only main thread should destruct xDS resources\");\n  }\n  delete load();\n}\n\nEnvoy::Common::CallbackHandlePtr SecretWatcher::readAndWatchSecret() {\n  THROW_IF_NOT_OK(store());\n  return secret_provider_->addUpdateCallback([this]() { return store(); });\n}\n\nabsl::Status SecretWatcher::store() {\n  const auto* secret = secret_provider_->secret();\n  if (secret != nullptr) {\n    Api::Api& api = parent_.transportFactoryContext().serverFactoryContext().api();\n    auto string_or_error = Config::DataSource::read(secret->secret(), true, api);\n    if (!string_or_error.ok()) {\n      return string_or_error.status();\n    }\n    std::string* p = new std::string(string_or_error.value());\n    std::string* old = ptr_.exchange(p, std::memory_order_release);\n    if (old != nullptr) {\n      // Delete old value after all threads have scheduled\n      parent_.runAfterAllThreads([old]() { delete old; });\n    }\n  }\n  return absl::OkStatus();\n}\n\nconst std::string* SecretWatcher::load() const { return ptr_.load(std::memory_order_acquire); }\n\nTLSContext::TLSContext(const NetworkPolicyMapImpl& parent, const std::string& name)\n    : manager_(parent.transportFactoryContext().serverFactoryContext().sslContextManager()),\n      scope_(parent.transportFactoryContext().serverFactoryContext().serverScope()),\n      init_target_(fmt::format(\"TLS Context {} secret\", name), []() {}) {}\n\nnamespace {\n\nvoid setCommonConfig(const cilium::TLSContext config,\n                     envoy::extensions::transport_sockets::tls::v3::CommonTlsContext* tls_context,\n                     const NetworkPolicyMapImpl& parent) {\n  if (!config.validation_context_sds_secret().empty()) {\n    auto sds_secret = tls_context->mutable_validation_context_sds_secret_config();\n    sds_secret->set_name(config.validation_context_sds_secret());\n    auto* config_source = sds_secret->mutable_sds_config();\n    *config_source = getSDSConfig(config.validation_context_sds_secret(), parent.getConfigSource());\n  } else if (!config.trusted_ca().empty()) {\n    auto validation_context = tls_context->mutable_validation_context();\n    auto trusted_ca = validation_context->mutable_trusted_ca();\n    trusted_ca->set_inline_string(config.trusted_ca());\n  }\n  if (!config.tls_sds_secret().empty()) {\n    auto sds_secret = tls_context->add_tls_certificate_sds_secret_configs();\n    sds_secret->set_name(config.tls_sds_secret());\n    auto* config_source = sds_secret->mutable_sds_config();\n    *config_source = getSDSConfig(config.tls_sds_secret(), parent.getConfigSource());\n  } else if (!config.certificate_chain().empty()) {\n    auto tls_certificate = tls_context->add_tls_certificates();\n    auto certificate_chain = tls_certificate->mutable_certificate_chain();\n    certificate_chain->set_inline_string(config.certificate_chain());\n    if (!config.private_key().empty()) {\n      auto private_key = tls_certificate->mutable_private_key();\n      private_key->set_inline_string(config.private_key());\n    } else {\n      throw EnvoyException(\"TLS Context: missing private key\");\n    }\n  }\n  if (!config.alpn_protocols().empty()) {\n    for (const std::string& protocol : config.alpn_protocols()) {\n      ENVOY_LOG_MISC(trace, \"setCommonConfig adding ALPN {}\", protocol);\n      tls_context->add_alpn_protocols(protocol);\n    }\n  }\n}\n\n} // namespace\n\nDownstreamTLSContext::DownstreamTLSContext(const NetworkPolicyMapImpl& parent,\n                                           const cilium::TLSContext config)\n    : TLSContext(parent, \"server\") {\n  // Server config always needs the TLS certificate to present to the client\n  if (config.tls_sds_secret().empty() && config.certificate_chain().empty()) {\n    throw EnvoyException(\"Downstream TLS Context: missing certificate chain\");\n  }\n\n  envoy::extensions::transport_sockets::tls::v3::DownstreamTlsContext context_config;\n  auto tls_context = context_config.mutable_common_tls_context();\n\n  // Check if client certificate is required\n  if (!config.validation_context_sds_secret().empty() || !config.trusted_ca().empty()) {\n    auto require_tls_certificate = context_config.mutable_require_client_certificate();\n    require_tls_certificate->set_value(true);\n  }\n  setCommonConfig(config, tls_context, parent);\n\n  for (int i = 0; i < config.server_names_size(); i++) {\n    server_names_.emplace_back(config.server_names(i));\n  }\n  auto server_config_or_error = Extensions::TransportSockets::Tls::ServerContextConfigImpl::create(\n      context_config, parent.transportFactoryContext(), server_names_, false);\n  // NOLINTNEXTLINE(performance-unnecessary-copy-initialization)\n  THROW_IF_NOT_OK(server_config_or_error.status());\n  server_config_ = std::move(server_config_or_error.value());\n\n  auto create_server_context = [this]() {\n    ENVOY_LOG(debug, \"Server secret is updated.\");\n    auto ctx_or_error = manager_.createSslServerContext(scope_, *server_config_, nullptr);\n    // NOLINTNEXTLINE(performance-unnecessary-copy-initialization)\n    THROW_IF_NOT_OK(ctx_or_error.status());\n    auto ctx = std::move(ctx_or_error.value());\n    {\n      absl::WriterMutexLock l(&ssl_context_mutex_);\n      std::swap(ctx, server_context_);\n    }\n    manager_.removeContext(ctx);\n    init_target_.ready();\n    return absl::OkStatus();\n  };\n  server_config_->setSecretUpdateCallback(create_server_context);\n  if (server_config_->isReady()) {\n    static_cast<void>(create_server_context());\n  } else {\n    parent.transportFactoryContext().initManager().add(init_target_);\n  }\n}\n\nUpstreamTLSContext::UpstreamTLSContext(const NetworkPolicyMapImpl& parent,\n                                       cilium::TLSContext config)\n    : TLSContext(parent, \"client\") {\n  // Client context always needs the trusted CA for server certificate validation\n  // TODO: Default to system default trusted CAs?\n  if (config.validation_context_sds_secret().empty() && config.trusted_ca().empty()) {\n    throw EnvoyException(\"Upstream TLS Context: missing trusted CA\");\n  }\n\n  envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext context_config;\n  auto tls_context = context_config.mutable_common_tls_context();\n  setCommonConfig(config, tls_context, parent);\n\n  if (config.server_names_size() > 0) {\n    if (config.server_names_size() > 1) {\n      throw EnvoyException(\"Upstream TLS Context: more than one server name\");\n    }\n    context_config.set_sni(config.server_names(0));\n  }\n  auto client_config_or_error = Extensions::TransportSockets::Tls::ClientContextConfigImpl::create(\n      context_config, parent.transportFactoryContext());\n  // NOLINTNEXTLINE(performance-unnecessary-copy-initialization)\n  THROW_IF_NOT_OK(client_config_or_error.status());\n\n  client_config_ = std::move(client_config_or_error.value());\n  auto create_client_context = [this]() {\n    ENVOY_LOG(debug, \"Client secret is updated.\");\n    auto ctx_or_error = manager_.createSslClientContext(scope_, *client_config_);\n    // NOLINTNEXTLINE(performance-unnecessary-copy-initialization)\n    THROW_IF_NOT_OK(ctx_or_error.status());\n    auto ctx = std::move(ctx_or_error.value());\n    {\n      absl::WriterMutexLock l(&ssl_context_mutex_);\n      std::swap(ctx, client_context_);\n    }\n    manager_.removeContext(ctx);\n    init_target_.ready();\n    return absl::OkStatus();\n  };\n  client_config_->setSecretUpdateCallback(create_client_context);\n  if (client_config_->isReady()) {\n    static_cast<void>(create_client_context());\n  } else {\n    parent.transportFactoryContext().initManager().add(init_target_);\n  }\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/secret_watcher.h",
    "content": "#pragma once\n\n#include <atomic>\n#include <functional>\n#include <memory>\n#include <string>\n#include <vector>\n\n#include \"envoy/common/callback.h\"\n#include \"envoy/config/core/v3/config_source.pb.h\"\n#include \"envoy/secret/secret_provider.h\"\n#include \"envoy/ssl/context.h\"\n#include \"envoy/ssl/context_config.h\"\n#include \"envoy/ssl/context_manager.h\"\n#include \"envoy/stats/scope.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/init/target_impl.h\"\n\n#include \"absl/base/thread_annotations.h\"\n#include \"absl/status/status.h\"\n#include \"absl/synchronization/mutex.h\"\n#include \"cilium/api/npds.pb.h\"\n#include \"cilium/network_policy.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\n// Cilium XDS API config source. Used for all Cilium XDS.\nextern const envoy::config::core::v3::ConfigSource CILIUM_XDS_API_CONFIG;\n\n// Facility for SDS config override for testing\nusing GetSdsConfigFunc = std::function<const envoy::config::core::v3::ConfigSource(\n    const std::string&, const envoy::config::core::v3::ConfigSource&)>;\nextern GetSdsConfigFunc getSDSConfig;\nvoid setSDSConfigFunc(GetSdsConfigFunc);\nvoid resetSDSConfigFunc();\n\nclass SecretWatcher : public Logger::Loggable<Logger::Id::config> {\npublic:\n  SecretWatcher(const NetworkPolicyMapImpl& parent, const std::string& sds_name);\n  ~SecretWatcher();\n\n  const std::string& name() const { return name_; }\n  const std::string* value() const { return load(); }\n\nprivate:\n  Envoy::Common::CallbackHandlePtr readAndWatchSecret();\n  absl::Status store();\n  const std::string* load() const;\n\n  const NetworkPolicyMapImpl& parent_;\n  const std::string name_;\n  std::atomic<std::string*> ptr_{nullptr};\n  Secret::GenericSecretConfigProviderSharedPtr secret_provider_;\n  Envoy::Common::CallbackHandlePtr update_secret_;\n};\nusing SecretWatcherPtr = std::unique_ptr<SecretWatcher>;\n\n// private base class for the common bits\nclass TLSContext : public Logger::Loggable<Logger::Id::config> {\npublic:\n  TLSContext() = delete;\n\nprotected:\n  TLSContext(const NetworkPolicyMapImpl& parent, const std::string& name);\n\n  Envoy::Ssl::ContextManager& manager_;\n  Stats::Scope& scope_;\n  Init::TargetImpl init_target_;\n  absl::Mutex ssl_context_mutex_;\n};\n\nclass DownstreamTLSContext : protected TLSContext {\npublic:\n  DownstreamTLSContext(const NetworkPolicyMapImpl& parent, const cilium::TLSContext config);\n  ~DownstreamTLSContext() { manager_.removeContext(server_context_); }\n\n  const Ssl::ContextConfig& getTlsContextConfig() const { return *server_config_; }\n\n  Ssl::ContextSharedPtr getTlsContext() const {\n    absl::ReaderMutexLock l(&const_cast<DownstreamTLSContext*>(this)->ssl_context_mutex_);\n    return server_context_;\n  }\n\nprivate:\n  Ssl::ServerContextConfigPtr server_config_;\n  std::vector<std::string> server_names_;\n  Ssl::ServerContextSharedPtr server_context_ ABSL_GUARDED_BY(ssl_context_mutex_);\n};\nusing DownstreamTLSContextSharedPtr = std::shared_ptr<DownstreamTLSContext>;\n\nclass UpstreamTLSContext : protected TLSContext {\npublic:\n  UpstreamTLSContext(const NetworkPolicyMapImpl& parent, cilium::TLSContext config);\n  ~UpstreamTLSContext() { manager_.removeContext(client_context_); }\n\n  const Ssl::ContextConfig& getTlsContextConfig() const { return *client_config_; }\n  Ssl::ContextSharedPtr getTlsContext() const {\n    absl::ReaderMutexLock l(&const_cast<UpstreamTLSContext*>(this)->ssl_context_mutex_);\n    return client_context_;\n  }\n\nprivate:\n  Ssl::ClientContextConfigPtr client_config_;\n  Ssl::ClientContextSharedPtr client_context_ ABSL_GUARDED_BY(ssl_context_mutex_);\n};\nusing UpstreamTLSContextSharedPtr = std::shared_ptr<UpstreamTLSContext>;\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/socket_option_cilium_mark.cc",
    "content": "#include \"cilium/socket_option_cilium_mark.h\"\n\n#include <cerrno>\n#include <cstdint>\n\n#include \"envoy/config/core/v3/socket_option.pb.h\"\n#include \"envoy/network/socket.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/utility.h\"\n\n#include \"cilium/privileged_service_client.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nCiliumMarkSocketOption::CiliumMarkSocketOption(uint32_t mark) : mark_(mark) {\n  ENVOY_LOG(debug,\n            \"Cilium CiliumMarkSocketOption(): mark: {:x} (magic mark: {:x}, cluster: {}, ID: {})\",\n            mark_, mark & 0xff00, mark & 0xff, mark >> 16);\n}\n\nbool CiliumMarkSocketOption::setOption(\n    Network::Socket& socket, envoy::config::core::v3::SocketOption::SocketState state) const {\n  // Only set the option once per socket\n  if (state != envoy::config::core::v3::SocketOption::STATE_PREBIND) {\n    ENVOY_LOG(trace, \"Skipping setting socket ({}) option SO_MARK, state != STATE_PREBIND\",\n              socket.ioHandle().fdDoNotUse());\n    return true;\n  }\n\n  auto& cilium_calls = PrivilegedService::Singleton::get();\n  auto status = cilium_calls.setsockopt(socket.ioHandle().fdDoNotUse(), SOL_SOCKET, SO_MARK, &mark_,\n                                        sizeof(mark_));\n  if (status.return_value_ < 0) {\n    if (status.errno_ == EPERM) {\n      // Do not assert out in this case so that we can run tests without\n      // CAP_NET_ADMIN.\n      ENVOY_LOG(critical,\n                \"Failed to set socket option SO_MARK to {}, capability \"\n                \"CAP_NET_ADMIN needed: {}\",\n                mark_, Envoy::errorDetails(status.errno_));\n    } else {\n      ENVOY_LOG(critical, \"Socket option failure. Failed to set SO_MARK to {}: {}\", mark_,\n                Envoy::errorDetails(status.errno_));\n      return false;\n    }\n  }\n\n  ENVOY_LOG(trace,\n            \"Set socket ({}) option SO_MARK to {:x} (magic mark: {:x}, id: \"\n            \"{}, cluster: {})\",\n            socket.ioHandle().fdDoNotUse(), mark_, mark_ & 0xff00, mark_ >> 16, mark_ & 0xff);\n\n  return true;\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/socket_option_cilium_mark.h",
    "content": "#pragma once\n\n#include <cstdint>\n#include <vector>\n\n#include \"envoy/config/core/v3/socket_option.pb.h\"\n#include \"envoy/network/socket.h\"\n\n#include \"source/common/common/logger.h\"\n\n#include \"absl/types/optional.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\n// Socket Option that sets the socket option SO_MARK on the socket.\n// The mark contains the Cilium magic mark, cluster and security identity.\n// It uses the Cilium Privileged Service to call out to the starter process to do the actual\n// privileged syscall - as the Envoy process itself doesn't have the required capabilities.\nclass CiliumMarkSocketOption : public Network::Socket::Option,\n                               public Logger::Loggable<Logger::Id::filter> {\npublic:\n  CiliumMarkSocketOption(uint32_t mark);\n  absl::optional<Network::Socket::Option::Details>\n  getOptionDetails(const Network::Socket&,\n                   envoy::config::core::v3::SocketOption::SocketState) const override {\n    return absl::nullopt;\n  }\n\n  bool setOption(Network::Socket& socket,\n                 envoy::config::core::v3::SocketOption::SocketState state) const override;\n\n  void hashKey([[maybe_unused]] std::vector<uint8_t>& key) const override {}\n\n  bool isSupported() const override { return true; }\n\n  uint32_t mark_;\n};\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/socket_option_ip_transparent.cc",
    "content": "#include \"cilium/socket_option_ip_transparent.h\"\n\n#include <netinet/in.h>\n\n#include <cerrno>\n#include <cstdint>\n\n#include \"envoy/config/core/v3/socket_option.pb.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/socket.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/utility.h\"\n\n#include \"cilium/privileged_service_client.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nIpTransparentSocketOption::IpTransparentSocketOption() {\n  ENVOY_LOG(debug, \"Cilium IpTransparentSocketOption()\");\n}\n\nbool IpTransparentSocketOption::setOption(\n    Network::Socket& socket, envoy::config::core::v3::SocketOption::SocketState state) const {\n  // Only set the option once per socket\n  if (state != envoy::config::core::v3::SocketOption::STATE_PREBIND) {\n    ENVOY_LOG(trace, \"Skipping setting socket ({}) option IP_TRANSPARENT, state != STATE_PREBIND\",\n              socket.ioHandle().fdDoNotUse());\n    return true;\n  }\n\n  auto& cilium_calls = PrivilegedService::Singleton::get();\n\n  auto ip_version = socket.ipVersion();\n  if (!ip_version.has_value()) {\n    ENVOY_LOG(critical, \"Socket address family is not available, can not choose source address\");\n    return false;\n  }\n\n  uint32_t one = 1;\n\n  // Set ip transparent option based on the socket address family\n  auto ip_socket_level = SOL_IP;\n  auto ip_transparent_socket_option = IP_TRANSPARENT;\n  auto ip_transparent_socket_option_name = \"IP_TRANSPARENT\";\n  if (*ip_version == Network::Address::IpVersion::v6) {\n    ip_socket_level = SOL_IPV6;\n    ip_transparent_socket_option = IPV6_TRANSPARENT;\n    ip_transparent_socket_option_name = \"IPV6_TRANSPARENT\";\n  }\n\n  auto status = cilium_calls.setsockopt(socket.ioHandle().fdDoNotUse(), ip_socket_level,\n                                        ip_transparent_socket_option, &one, sizeof(one));\n  if (status.return_value_ < 0) {\n    if (status.errno_ == EPERM) {\n      // Do not assert out in this case so that we can run tests without\n      // CAP_NET_ADMIN.\n      ENVOY_LOG(critical,\n                \"Failed to set socket option {}, capability \"\n                \"CAP_NET_ADMIN needed: {}\",\n                ip_transparent_socket_option_name, Envoy::errorDetails(status.errno_));\n    } else {\n      ENVOY_LOG(critical, \"Socket option failure. Failed to set {}: {}\",\n                ip_transparent_socket_option_name, Envoy::errorDetails(status.errno_));\n      return false;\n    }\n  }\n\n  ENVOY_LOG(trace, \"Successfully set socket option {} on socket: {}\",\n            ip_transparent_socket_option_name, socket.ioHandle().fdDoNotUse());\n\n  return true;\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/socket_option_ip_transparent.h",
    "content": "#pragma once\n\n#include <cstdint>\n#include <vector>\n\n#include \"envoy/config/core/v3/socket_option.pb.h\"\n#include \"envoy/network/socket.h\"\n\n#include \"source/common/common/logger.h\"\n\n#include \"absl/types/optional.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\n// Socket Option that sets the socket option IP_TRANSPARENT (IPV6_TRANSPARENT) on the socket.\n// It uses the Cilium Privileged Service to call out to the starter process to do the actual\n// privileged syscall - as the Envoy process itself doesn't have the required capabilities.\nclass IpTransparentSocketOption : public Network::Socket::Option,\n                                  public Logger::Loggable<Logger::Id::filter> {\npublic:\n  IpTransparentSocketOption();\n\n  absl::optional<Network::Socket::Option::Details>\n  getOptionDetails(const Network::Socket&,\n                   envoy::config::core::v3::SocketOption::SocketState) const override {\n    return absl::nullopt;\n  }\n\n  bool setOption(Network::Socket& socket,\n                 envoy::config::core::v3::SocketOption::SocketState state) const override;\n\n  void hashKey([[maybe_unused]] std::vector<uint8_t>& key) const override {}\n\n  bool isSupported() const override { return true; }\n};\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/socket_option_source_address.cc",
    "content": "#include \"cilium/socket_option_source_address.h\"\n\n#include <sys/socket.h>\n\n#include <cstdint>\n#include <memory>\n#include <utility>\n#include <vector>\n\n#include \"envoy/api/os_sys_calls_common.h\"\n#include \"envoy/config/core/v3/socket_option.pb.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/socket.h\"\n\n#include \"source/common/common/hex.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/utility.h\"\n\n#include \"absl/numeric/int128.h\"\n#include \"cilium/filter_state_cilium_destination.h\"\n#include \"cilium/filter_state_cilium_policy.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nSourceAddressSocketOption::SourceAddressSocketOption(\n    uint32_t source_identity, int linger_time,\n    Network::Address::InstanceConstSharedPtr original_source_address,\n    Network::Address::InstanceConstSharedPtr ipv4_source_address,\n    Network::Address::InstanceConstSharedPtr ipv6_source_address,\n    std::shared_ptr<CiliumDestinationFilterState> dest_fs,\n    std::shared_ptr<CiliumPolicyFilterState> policy_fs)\n    : source_identity_(source_identity), linger_time_(linger_time),\n      original_source_address_(std::move(original_source_address)),\n      ipv4_source_address_(std::move(ipv4_source_address)),\n      ipv6_source_address_(std::move(ipv6_source_address)), dest_fs_(std::move(dest_fs)),\n      policy_fs_(std::move(policy_fs)) {\n  ENVOY_LOG(debug,\n            \"Cilium SourceAddressSocketOption(): source_identity: {}, linger_time: {}, \"\n            \"source_addresses: {}/{}/{}\",\n            source_identity_, linger_time_,\n            original_source_address_ ? original_source_address_->asString() : \"\",\n            ipv4_source_address_ ? ipv4_source_address_->asString() : \"\",\n            ipv6_source_address_ ? ipv6_source_address_->asString() : \"\");\n}\n\nbool SourceAddressSocketOption::setOption(\n    Network::Socket& socket, envoy::config::core::v3::SocketOption::SocketState state) const {\n  // Only set the option once per socket\n  if (state != envoy::config::core::v3::SocketOption::STATE_PREBIND) {\n    ENVOY_LOG(trace, \"Skipping setting socket ({}) source address, state != STATE_PREBIND\",\n              socket.ioHandle().fdDoNotUse());\n    return true;\n  }\n\n  auto ip_version = socket.ipVersion();\n  if (!ip_version.has_value()) {\n    ENVOY_LOG(critical, \"Socket address family is not available, can not choose source address\");\n    return false;\n  }\n\n  Network::Address::InstanceConstSharedPtr source_address = original_source_address_;\n\n  // Do not use source address of wrong IP version\n  if (source_address && source_address->ip() && source_address->ip()->version() != *ip_version) {\n    source_address = nullptr;\n  }\n\n  if (!source_address && (ipv4_source_address_ || ipv6_source_address_)) {\n    // Select source address based on the socket address family\n    source_address = ipv6_source_address_;\n    if (*ip_version == Network::Address::IpVersion::v4) {\n      source_address = ipv4_source_address_;\n    }\n  }\n\n  if (!source_address) {\n    ENVOY_LOG(trace, \"Skipping restore of local address on socket: {} - no source address\",\n              socket.ioHandle().fdDoNotUse());\n    return true;\n  }\n\n  if (source_address->ip() && dest_fs_ && dest_fs_->getDestinationAddress() &&\n      dest_fs_->getDestinationAddress()->ip()) {\n    const auto& dst_addr = dest_fs_->getDestinationAddress()->ip()->addressAsString();\n    if (source_address->ip()->addressAsString() == dst_addr) {\n      ENVOY_LOG(trace,\n                \"Skipping restore of local address on socket: {} - source address is same as \"\n                \"destination address {}\",\n                socket.ioHandle().fdDoNotUse(), dst_addr);\n      return true;\n    }\n    // Also skip using the original source address if destination is local.\n    // Local destinations have a policy configured on their address.\n    if (policy_fs_ && policy_fs_->exists(dst_addr)) {\n      ENVOY_LOG(trace, \"Skipping restore of local address on socket: {} - destination is local {}\",\n                socket.ioHandle().fdDoNotUse(), dst_addr);\n      return true;\n    }\n  }\n\n  // Note: SO_LINGER option is set on the socket of the upstream connection.\n  if (source_address->ip() != nullptr && source_address->ip()->port() != 0 && linger_time_ >= 0) {\n    struct linger linger;\n    linger.l_onoff = 1;\n    linger.l_linger = linger_time_;\n\n    ENVOY_LOG(trace, \"Setting SO_LINGER option on socket {} to {} seconds\",\n              socket.ioHandle().fdDoNotUse(), linger_time_);\n\n    const Api::SysCallIntResult result =\n        socket.setSocketOption(SOL_SOCKET, SO_LINGER, &linger, sizeof(linger));\n\n    if (result.return_value_ != 0) {\n      ENVOY_LOG(error, \"Setting SO_LINGER option on socket {} failed: {}\",\n                socket.ioHandle().fdDoNotUse(), errorDetails(result.errno_));\n      return false;\n    }\n  }\n\n  // Note: Restoration of the original source address happens on the socket of the upstream\n  // connection.\n  ENVOY_LOG(trace, \"Restoring local address (original source) on socket: {} ({} -> {})\",\n            socket.ioHandle().fdDoNotUse(),\n            socket.connectionInfoProvider().localAddress()\n                ? socket.connectionInfoProvider().localAddress()->asString()\n                : \"n/a\",\n            source_address->asString());\n\n  socket.connectionInfoProvider().setLocalAddress(std::move(source_address));\n\n  return true;\n}\n\ntemplate <typename T> void addressIntoVector(std::vector<uint8_t>& vec, const T& address) {\n  const uint8_t* byte_array = reinterpret_cast<const uint8_t*>(&address);\n  vec.insert(vec.end(), byte_array, byte_array + sizeof(T));\n}\n\nvoid SourceAddressSocketOption::hashKey(std::vector<uint8_t>& key) const {\n  // Source address is more specific than policy ID. If using an original\n  // source address, we do not need to also add the source security ID to the\n  // hash key. Note that since the identity is 3 bytes it will not collide\n  // with neither an IPv4 nor IPv6 address.\n  if (original_source_address_) {\n    const auto& ip = original_source_address_->ip();\n    uint16_t port = ip->port();\n    if (ip->version() == Network::Address::IpVersion::v4) {\n      uint32_t raw_address = ip->ipv4()->address();\n      addressIntoVector(key, raw_address);\n    } else if (ip->version() == Network::Address::IpVersion::v6) {\n      absl::uint128 raw_address = ip->ipv6()->address();\n      addressIntoVector(key, raw_address);\n    }\n    // Add source port to the hash key if defined\n    if (port != 0) {\n      ENVOY_LOG(trace, \"hashKey port: {:x}\", port);\n      key.emplace_back(uint8_t(port >> 8));\n      key.emplace_back(uint8_t(port));\n    }\n    ENVOY_LOG(trace, \"hashKey after with original source address: {}, original_source_address: {}\",\n              Hex::encode(key), original_source_address_->asString());\n  } else {\n    // Add the source identity to the hash key. This will separate upstream\n    // connection pools per security ID.\n    key.emplace_back(uint8_t(source_identity_ >> 16));\n    key.emplace_back(uint8_t(source_identity_ >> 8));\n    key.emplace_back(uint8_t(source_identity_));\n    ENVOY_LOG(trace, \"hashKey with source identity: {}, source_identity: {}\", Hex::encode(key),\n              source_identity_);\n  }\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/socket_option_source_address.h",
    "content": "#pragma once\n\n#include <cstdint>\n#include <memory>\n#include <vector>\n\n#include \"envoy/config/core/v3/socket_option.pb.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/socket.h\"\n\n#include \"source/common/common/logger.h\"\n\n#include \"absl/types/optional.h\"\n#include \"cilium/filter_state_cilium_destination.h\"\n#include \"cilium/filter_state_cilium_policy.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\n// Socket Option that restores the local address of the socket with the relevant\n// source address which is either the original source address or a configured\n// source address (used for Ingress - N/S load balancing).\n// In addition, its hashKey implementation is also responsible to introduce Envoy\n// to separate upstream connection pools per source address or source security ID.\nclass SourceAddressSocketOption : public Network::Socket::Option,\n                                  public Logger::Loggable<Logger::Id::filter> {\npublic:\n  SourceAddressSocketOption(\n      uint32_t source_identity, int linger_time = -1,\n      Network::Address::InstanceConstSharedPtr original_source_address = nullptr,\n      Network::Address::InstanceConstSharedPtr ipv4_source_address = nullptr,\n      Network::Address::InstanceConstSharedPtr ipv6_source_address = nullptr,\n      std::shared_ptr<CiliumDestinationFilterState> dest_fs = nullptr,\n      std::shared_ptr<CiliumPolicyFilterState> policy_fs = nullptr);\n\n  absl::optional<Network::Socket::Option::Details>\n  getOptionDetails(const Network::Socket&,\n                   envoy::config::core::v3::SocketOption::SocketState) const override {\n    return absl::nullopt;\n  }\n\n  bool setOption(Network::Socket& socket,\n                 envoy::config::core::v3::SocketOption::SocketState state) const override;\n\n  void hashKey(std::vector<uint8_t>& key) const override;\n\n  bool isSupported() const override { return true; }\n\n  uint32_t source_identity_;\n  int linger_time_;\n\n  Network::Address::InstanceConstSharedPtr original_source_address_;\n  // Version specific source addresses are only used if original source address is not used.\n  // Selection is made based on the socket domain, which is selected based on the destination\n  // address. This makes sure we don't try to bind IPv4 or IPv6 source address to a socket\n  // connecting to IPv6 or IPv4 address, respectively.\n  Network::Address::InstanceConstSharedPtr ipv4_source_address_;\n  Network::Address::InstanceConstSharedPtr ipv6_source_address_;\n  std::shared_ptr<CiliumDestinationFilterState> dest_fs_;\n  std::shared_ptr<CiliumPolicyFilterState> policy_fs_;\n};\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/tls_wrapper.cc",
    "content": "#include \"cilium/tls_wrapper.h\"\n\n#include <chrono>\n#include <cstdint>\n#include <memory>\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/buffer/buffer.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/post_io_action.h\"\n#include \"envoy/network/transport_socket.h\"\n#include \"envoy/registry/registry.h\"\n#include \"envoy/server/transport_socket_config.h\"\n#include \"envoy/ssl/connection.h\"\n#include \"envoy/ssl/context.h\"\n#include \"envoy/ssl/context_config.h\"\n\n#include \"source/common/common/empty_string.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/network/raw_buffer_socket.h\"\n#include \"source/common/network/transport_socket_options_impl.h\"\n#include \"source/common/protobuf/protobuf.h\"\n#include \"source/common/tls/ssl_socket.h\"\n\n#include \"absl/status/statusor.h\"\n#include \"absl/strings/string_view.h\"\n#include \"cilium/api/tls_wrapper.pb.h\"\n#include \"cilium/filter_state_cilium_policy.h\"\n#include \"cilium/network_policy.h\"\n#include \"filter_state_cilium_policy.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nnamespace {\n\nconstexpr absl::string_view NotReadyReason{\"Socket is not ready\"};\n\n// This SslSocketWrapper wraps a real SslSocket and hooks it up with\n// TLS configuration derived from Cilium Network Policy.\nclass SslSocketWrapper : public Network::TransportSocket, Logger::Loggable<Logger::Id::connection> {\npublic:\n  SslSocketWrapper(Extensions::TransportSockets::Tls::InitialState state,\n                   const Network::TransportSocketOptionsConstSharedPtr& transport_socket_options)\n      : state_(state), transport_socket_options_(transport_socket_options) {}\n\n  // Network::TransportSocket\n  void setTransportSocketCallbacks(Network::TransportSocketCallbacks& callbacks) override {\n    callbacks_ = &callbacks;\n\n    // Downstream listeners build the filter chain after transport socket callbacks are installed.\n    // Create the wrapped socket eagerly so connection().ssl() is already populated when network\n    // filters such as HCM initialize their SSL-specific connection stats.\n    //\n    // For upstream sockets this spot is likely too early, as the destination address, filter state,\n    // etc. might not be in place yet. So keep the current onConnected() site for socket preparation\n    // for the client sockets and for any server sockets that might have missed this call.\n    if (!socket_ && state_ == Extensions::TransportSockets::Tls::InitialState::Server) {\n      prepareSocket();\n    }\n  }\n\n  std::string protocol() const override { return socket_ ? socket_->protocol() : EMPTY_STRING; }\n\n  absl::string_view failureReason() const override {\n    return socket_ ? socket_->failureReason() : NotReadyReason;\n  }\n\n  bool canFlushClose() override { return socket_ ? socket_->canFlushClose() : true; }\n\n  // Override if need to intercept client socket connect() call.\n  // Api::SysCallIntResult connect(Network::ConnectionSocket& socket) override\n\n  void closeSocket(Network::ConnectionEvent type) override {\n    if (socket_) {\n      socket_->closeSocket(type);\n    }\n  }\n\n  Network::IoResult doRead(Buffer::Instance& buffer) override {\n    if (socket_) {\n      return socket_->doRead(buffer);\n    }\n    return {Network::PostIoAction::Close, 0, false};\n  }\n\n  Network::IoResult doWrite(Buffer::Instance& buffer, bool end_stream) override {\n    if (socket_) {\n      return socket_->doWrite(buffer, end_stream);\n    }\n    return {Network::PostIoAction::Close, 0, false};\n  }\n\n  void onConnected() override {\n    if (!socket_) {\n      prepareSocket();\n    }\n\n    if (socket_) {\n      socket_->onConnected();\n    }\n  }\n\nprivate:\n  void prepareSocket() {\n    // Get the Cilium policy filter state from the callbacks in order to get the TLS\n    // configuration.\n    // Cilium socket option is only created if the (initial) policy for the local pod exists.\n    // If the policy requires TLS then a TLS socket is used, but if the policy does not require\n    // TLS a raw socket is used instead.\n    auto& conn = callbacks_->connection();\n\n    ENVOY_CONN_LOG(trace, \"retrieving policy filter state\", conn);\n    auto policy_fs =\n        conn.streamInfo().filterState()->getDataReadOnly<Cilium::CiliumPolicyFilterState>(\n            Cilium::CiliumPolicyFilterState::key());\n\n    if (policy_fs) {\n      const auto& policy = policy_fs->getPolicy();\n\n      // Resolve the destination security ID and port\n      uint32_t destination_identity = 0;\n      uint32_t destination_port = policy_fs->port_;\n      const Network::Address::Ip* dip = nullptr;\n      bool is_client = state_ == Extensions::TransportSockets::Tls::InitialState::Client;\n\n      if (!policy_fs->ingress_) {\n        Network::Address::InstanceConstSharedPtr dst_address =\n            is_client ? callbacks_->connection().connectionInfoProvider().remoteAddress()\n                      : callbacks_->connection().connectionInfoProvider().localAddress();\n        if (dst_address) {\n          dip = dst_address->ip();\n          if (dip) {\n            destination_port = dip->port();\n            destination_identity = policy_fs->resolvePolicyId(dip);\n          } else {\n            ENVOY_CONN_LOG(warn, \"cilium.tls_wrapper: Non-IP destination address: {}\", conn,\n                           dst_address->asString());\n          }\n        } else {\n          ENVOY_CONN_LOG(warn, \"cilium.tls_wrapper: No destination address\", conn);\n        }\n      }\n\n      // get the requested server name from the connection, if any\n      const auto& sni = policy_fs->sni_;\n\n      auto remote_id = policy_fs->ingress_ ? policy_fs->source_identity_ : destination_identity;\n      auto port_policy = policy.findPortPolicy(policy_fs->ingress_, destination_port);\n      const Envoy::Ssl::ContextConfig* config = nullptr;\n      bool raw_socket_allowed = false;\n      auto proxy_id = policy_fs->proxy_id_;\n      Envoy::Ssl::ContextSharedPtr ctx =\n          is_client ? port_policy.getClientTlsContext(proxy_id, remote_id, sni, config,\n                                                      raw_socket_allowed)\n                    : port_policy.getServerTlsContext(proxy_id, remote_id, sni, config,\n                                                      raw_socket_allowed);\n      if (ctx) {\n        // create the underlying SslSocket\n        auto status_or_socket = Extensions::TransportSockets::Tls::SslSocket::create(\n            std::move(ctx), state_, transport_socket_options_, config->createHandshaker());\n        if (status_or_socket.ok()) {\n          socket_ = std::move(status_or_socket.value());\n          // Set the callbacks\n          socket_->setTransportSocketCallbacks(*callbacks_);\n          // explicitly configure ssl connection with the latest configuration from the SSL socket.\n          callbacks_->connection().connectionInfoSetter().setSslConnection(socket_->ssl());\n        } else {\n          ENVOY_CONN_LOG(error, \"Unable to create ssl socket {}\", conn,\n                         status_or_socket.status().message());\n        }\n      } else if (config == nullptr && raw_socket_allowed) {\n        // Use RawBufferSocket when policy allows without TLS.\n        // If policy has TLS context config then a raw socket must NOT be used.\n        socket_ = std::make_unique<Network::RawBufferSocket>();\n        // Set the callbacks\n        socket_->setTransportSocketCallbacks(*callbacks_);\n      } else {\n        policy.tlsWrapperMissingPolicyInc();\n\n        std::string ip_str(\"<none>\");\n        if (policy_fs->ingress_) {\n          Network::Address::InstanceConstSharedPtr src_address =\n              is_client ? callbacks_->connection().connectionInfoProvider().localAddress()\n                        : callbacks_->connection().connectionInfoProvider().remoteAddress();\n          if (src_address) {\n            const auto sip = src_address->ip();\n            if (sip) {\n              ip_str = sip->addressAsString();\n            }\n          }\n        } else {\n          if (dip) {\n            ip_str = dip->addressAsString();\n          }\n        }\n        ENVOY_CONN_LOG(\n            warn,\n            \"cilium.tls_wrapper: Could not get {} TLS context for pod {} on {} IP {} (id {}) port \"\n            \"{} sni \\\"{}\\\" and raw socket is not allowed\",\n            conn, is_client ? \"client\" : \"server\", policy_fs->pod_ip_,\n            policy_fs->ingress_ ? \"source\" : \"destination\", ip_str, remote_id, destination_port,\n            sni);\n      }\n    } else {\n      ENVOY_CONN_LOG(warn,\n                     \"cilium.tls_wrapper: Can not correlate connection with Cilium Network \"\n                     \"Policy (Cilium socket option not found)\",\n                     conn);\n    }\n  }\n\npublic:\n  Ssl::ConnectionInfoConstSharedPtr ssl() const override {\n    return socket_ ? socket_->ssl() : nullptr;\n  }\n\n  bool startSecureTransport() override { return socket_ ? socket_->startSecureTransport() : false; }\n\n  void configureInitialCongestionWindow(uint64_t bandwidth_bits_per_sec,\n                                        std::chrono::microseconds rtt) override {\n    if (socket_) {\n      socket_->configureInitialCongestionWindow(bandwidth_bits_per_sec, rtt);\n    }\n  }\n\nprivate:\n  Extensions::TransportSockets::Tls::InitialState state_;\n  const Network::TransportSocketOptionsConstSharedPtr transport_socket_options_;\n  Network::TransportSocketPtr socket_{nullptr};\n  Network::TransportSocketCallbacks* callbacks_{};\n};\n\nclass ClientSslSocketFactory : public Network::CommonUpstreamTransportSocketFactory {\npublic:\n  Network::TransportSocketPtr\n  createTransportSocket(Network::TransportSocketOptionsConstSharedPtr options,\n                        std::shared_ptr<const Upstream::HostDescription>) const override {\n    return std::make_unique<SslSocketWrapper>(\n        Extensions::TransportSockets::Tls::InitialState::Client, options);\n  }\n\n  absl::string_view defaultServerNameIndication() const override { return EMPTY_STRING; }\n\n  bool implementsSecureTransport() const override { return true; }\n};\n\nclass ServerSslSocketFactory : public Network::DownstreamTransportSocketFactory {\npublic:\n  Network::TransportSocketPtr createDownstreamTransportSocket() const override {\n    return std::make_unique<SslSocketWrapper>(\n        Extensions::TransportSockets::Tls::InitialState::Server, nullptr);\n  }\n\n  bool implementsSecureTransport() const override { return true; }\n};\n\n} // namespace\n\nabsl::StatusOr<Network::UpstreamTransportSocketFactoryPtr>\nUpstreamTlsWrapperFactory::createTransportSocketFactory(\n    const Protobuf::Message&, Server::Configuration::TransportSocketFactoryContext&) {\n  return std::make_unique<ClientSslSocketFactory>();\n}\n\nProtobufTypes::MessagePtr UpstreamTlsWrapperFactory::createEmptyConfigProto() {\n  return std::make_unique<::cilium::UpstreamTlsWrapperContext>();\n}\n\nREGISTER_FACTORY(UpstreamTlsWrapperFactory,\n                 Server::Configuration::UpstreamTransportSocketConfigFactory);\n\nabsl::StatusOr<Network::DownstreamTransportSocketFactoryPtr>\nDownstreamTlsWrapperFactory::createTransportSocketFactory(\n    const Protobuf::Message&, Server::Configuration::TransportSocketFactoryContext&,\n    const std::vector<std::string>&) {\n  return std::make_unique<ServerSslSocketFactory>();\n}\n\nProtobufTypes::MessagePtr DownstreamTlsWrapperFactory::createEmptyConfigProto() {\n  return std::make_unique<::cilium::DownstreamTlsWrapperContext>();\n}\n\nREGISTER_FACTORY(DownstreamTlsWrapperFactory,\n                 Server::Configuration::DownstreamTransportSocketConfigFactory);\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/tls_wrapper.h",
    "content": "#pragma once\n\n#include <string>\n#include <vector>\n\n#include \"envoy/network/transport_socket.h\"\n#include \"envoy/registry/registry.h\"\n#include \"envoy/server/transport_socket_config.h\"\n#include \"envoy/stats/stats_macros.h\" // IWYU pragma: keep\n\n#include \"source/common/protobuf/protobuf.h\"\n\n#include \"absl/status/statusor.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\n/**\n * Config registration for the Cilium TLS wrapper transport socket factory.\n * @see TransportSocketConfigFactory.\n */\nclass TlsWrapperConfigFactory : public virtual Server::Configuration::TransportSocketConfigFactory {\npublic:\n  ~TlsWrapperConfigFactory() override = default;\n  std::string name() const override { return name_; }\n\n  const std::string name_ = \"cilium.tls_wrapper\";\n};\n\nclass UpstreamTlsWrapperFactory\n    : public Server::Configuration::UpstreamTransportSocketConfigFactory,\n      public TlsWrapperConfigFactory {\npublic:\n  absl::StatusOr<Network::UpstreamTransportSocketFactoryPtr> createTransportSocketFactory(\n      const Protobuf::Message& config,\n      Server::Configuration::TransportSocketFactoryContext& context) override;\n  ProtobufTypes::MessagePtr createEmptyConfigProto() override;\n};\n\nDECLARE_FACTORY(UpstreamTlsWrapperFactory);\n\nclass DownstreamTlsWrapperFactory\n    : public Server::Configuration::DownstreamTransportSocketConfigFactory,\n      public TlsWrapperConfigFactory {\npublic:\n  absl::StatusOr<Network::DownstreamTransportSocketFactoryPtr>\n  createTransportSocketFactory(const Protobuf::Message& config,\n                               Server::Configuration::TransportSocketFactoryContext& context,\n                               const std::vector<std::string>& server_names) override;\n  ProtobufTypes::MessagePtr createEmptyConfigProto() override;\n};\n\nDECLARE_FACTORY(DownstreamTlsWrapperFactory);\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/uds_client.cc",
    "content": "#include \"cilium/uds_client.h\"\n\n#include <fmt/format.h>\n#include <sys/socket.h>\n#include <sys/types.h>\n#include <unistd.h>\n\n#include <cerrno>\n#include <memory>\n#include <string>\n\n#include \"envoy/common/exception.h\"\n#include \"envoy/common/time.h\"\n\n#include \"source/common/common/lock_guard.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/token_bucket_impl.h\"\n#include \"source/common/common/utility.h\"\n#include \"source/common/network/address_impl.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nUDSClient::UDSClient(const std::string& path, TimeSource& time_source)\n    : addr_(THROW_OR_RETURN_VALUE(Network::Address::PipeInstance::create(path),\n                                  std::unique_ptr<Network::Address::PipeInstance>)),\n      fd_(-1), errno_(0), logging_limiter_(std::make_unique<TokenBucketImpl>(10, time_source)) {\n  if (path.empty()) {\n    throw EnvoyException(fmt::format(\"cilium: Invalid Unix domain socket path: {}\", path));\n  }\n\n  fd_ = -1;\n  errno_ = 0;\n  logging_limiter_ = std::make_unique<TokenBucketImpl>(10, time_source);\n}\n\nUDSClient::~UDSClient() {\n  fd_mutex_.lock();\n  if (fd_ != -1) {\n    ::close(fd_);\n    fd_ = -1;\n  }\n  fd_mutex_.unlock();\n}\n\nvoid UDSClient::log(const std::string& msg) {\n  {\n    int tries = 2;\n    ssize_t length = msg.length();\n\n    Thread::LockGuard guard(fd_mutex_);\n    while (tries-- > 0) {\n      if (!tryConnect()) {\n        continue; // retry\n      }\n\n      ssize_t sent = ::send(fd_, msg.data(), length, MSG_DONTWAIT | MSG_EOR | MSG_NOSIGNAL);\n      if (sent == -1) {\n        errno_ = errno;\n        continue;\n      }\n\n      if (sent < length) {\n        ENVOY_LOG(debug, \"Cilium access log send truncated by {} bytes.\", length - sent);\n      }\n      return;\n    }\n  }\n\n  // rate-limit to 1/second to avoid spamming the logs\n  fd_mutex_.lock();\n  if (logging_limiter_->consume(1, false)) {\n    ENVOY_LOG(warn, \"Logging to {} failed: {}\", asStringView(), Envoy::errorDetails(errno_));\n  }\n  fd_mutex_.unlock();\n}\n\nbool UDSClient::tryConnect() {\n  if (fd_ != -1) {\n    if (errno_ == 0) {\n      return true;\n    }\n    ENVOY_LOG(debug, \"Cilium access log resetting socket due to error: {}\",\n              Envoy::errorDetails(errno_));\n    ::close(fd_);\n    fd_ = -1;\n  }\n\n  errno_ = 0;\n  fd_ = ::socket(AF_UNIX, SOCK_SEQPACKET, 0);\n  if (fd_ == -1) {\n    errno_ = errno;\n    ENVOY_LOG(error, \"Can't create socket: {}\", Envoy::errorDetails(errno_));\n    return false;\n  }\n\n  if (::connect(fd_, addr_->sockAddr(), addr_->sockAddrLen()) == -1) {\n    errno_ = errno;\n    ::close(fd_);\n    fd_ = -1;\n    return false;\n  }\n\n  return true;\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/uds_client.h",
    "content": "#pragma once\n\n#include <memory>\n#include <string>\n\n#include \"envoy/common/time.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/thread.h\"\n#include \"source/common/common/token_bucket_impl.h\"\n#include \"source/common/network/address_impl.h\"\n\n#include \"absl/base/thread_annotations.h\"\n#include \"absl/strings/string_view.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nclass UDSClient : Logger::Loggable<Logger::Id::router> {\npublic:\n  UDSClient(const std::string& path, TimeSource& time_source);\n  ~UDSClient();\n\n  void log(const std::string& msg);\n\n  const std::string& asString() const { return addr_->asString(); }\n  absl::string_view asStringView() const { return addr_->asStringView(); }\n\nprivate:\n  bool tryConnect() ABSL_EXCLUSIVE_LOCKS_REQUIRED(fd_mutex_);\n\n  Thread::MutexBasicLockable fd_mutex_;\n  std::shared_ptr<Network::Address::PipeInstance> addr_;\n  int fd_ ABSL_GUARDED_BY(fd_mutex_);\n  int errno_ ABSL_GUARDED_BY(fd_mutex_);\n  std::unique_ptr<TokenBucketImpl> logging_limiter_ ABSL_GUARDED_BY(fd_mutex_);\n};\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/websocket.cc",
    "content": "#include \"cilium/websocket.h\"\n\n#include <cstdint>\n#include <memory>\n#include <string>\n\n#include \"envoy/buffer/buffer.h\"\n#include \"envoy/http/header_map.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/filter.h\"\n#include \"envoy/registry/registry.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/server/filter_config.h\"\n#include \"envoy/stream_info/filter_state.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/http/headers.h\"\n#include \"source/common/network/utility.h\"\n#include \"source/common/protobuf/protobuf.h\"\n#include \"source/common/protobuf/utility.h\"\n#include \"source/common/stream_info/bool_accessor_impl.h\"\n#include \"source/common/tcp_proxy/tcp_proxy.h\"\n\n#include \"absl/status/statusor.h\"\n#include \"cilium/api/websocket.pb.h\"\n#include \"cilium/api/websocket.pb.validate.h\" // IWYU pragma: keep\n#include \"cilium/filter_state_cilium_policy.h\"\n#include \"cilium/websocket_codec.h\"\n#include \"cilium/websocket_config.h\"\n\nnamespace Envoy {\nnamespace Cilium {\nnamespace WebSocket {\n\nnamespace {\n\nHttp::RegisterCustomInlineHeader<Http::CustomInlineHeaderRegistry::Type::RequestHeaders>\n    origin_handle(Http::CustomHeaders::get().Origin);\nHttp::RegisterCustomInlineHeader<Http::CustomInlineHeaderRegistry::Type::RequestHeaders>\n    original_dst_host_handle(Http::Headers::get().EnvoyOriginalDstHost);\nHttp::RegisterCustomInlineHeader<Http::CustomInlineHeaderRegistry::Type::RequestHeaders>\n    sec_websocket_key_handle(Http::LowerCaseString{\"sec-websocket-key\"});\nHttp::RegisterCustomInlineHeader<Http::CustomInlineHeaderRegistry::Type::RequestHeaders>\n    sec_websocket_version_handle(Http::LowerCaseString{\"sec-websocket-version\"});\nHttp::RegisterCustomInlineHeader<Http::CustomInlineHeaderRegistry::Type::RequestHeaders>\n    sec_websocket_protocol_handle(Http::LowerCaseString{\"sec-websocket-protocol\"});\nHttp::RegisterCustomInlineHeader<Http::CustomInlineHeaderRegistry::Type::RequestHeaders>\n    sec_websocket_extensions_handle(Http::LowerCaseString{\"sec-websocket-extensions\"});\n\nHttp::RegisterCustomInlineHeader<Http::CustomInlineHeaderRegistry::Type::ResponseHeaders>\n    sec_websocket_accept_handle(Http::LowerCaseString{\"sec-websocket-accept\"});\n\n} // namespace\n\n/**\n * Config registration for the WebSocket server filter. @see\n * NamedNetworkFilterConfigFactory.\n */\nclass CiliumWebSocketServerConfigFactory\n    : public Server::Configuration::NamedNetworkFilterConfigFactory {\npublic:\n  // NamedNetworkFilterConfigFactory\n  absl::StatusOr<Network::FilterFactoryCb>\n  createFilterFactoryFromProto(const Protobuf::Message& proto_config,\n                               Server::Configuration::FactoryContext& context) override {\n    auto config = std::make_shared<Cilium::WebSocket::Config>(\n        MessageUtil::downcastAndValidate<const ::cilium::WebSocketServer&>(\n            proto_config, context.messageValidationVisitor()),\n        context);\n    return [config](Network::FilterManager& filter_manager) mutable -> void {\n      filter_manager.addFilter(std::make_shared<Cilium::WebSocket::Instance>(config));\n    };\n  }\n\n  ProtobufTypes::MessagePtr createEmptyConfigProto() override {\n    return std::make_unique<::cilium::WebSocketServer>();\n  }\n\n  std::string name() const override { return \"cilium.network.websocket.server\"; }\n};\n\n/**\n * Static registration for the websocket server network filter. @see RegisterFactory.\n */\nREGISTER_FACTORY(CiliumWebSocketServerConfigFactory,\n                 Server::Configuration::NamedNetworkFilterConfigFactory);\n\n/**\n * Config registration for the WebSocket client filter. @see\n * NamedNetworkFilterConfigFactory.\n */\nclass CiliumWebSocketClientConfigFactory\n    : public Server::Configuration::NamedNetworkFilterConfigFactory {\npublic:\n  // NamedNetworkFilterConfigFactory\n  absl::StatusOr<Network::FilterFactoryCb>\n  createFilterFactoryFromProto(const Protobuf::Message& proto_config,\n                               Server::Configuration::FactoryContext& context) override {\n    auto config = std::make_shared<Cilium::WebSocket::Config>(\n        MessageUtil::downcastAndValidate<const ::cilium::WebSocketClient&>(\n            proto_config, context.messageValidationVisitor()),\n        context);\n    return [config](Network::FilterManager& filter_manager) mutable -> void {\n      filter_manager.addFilter(std::make_shared<Cilium::WebSocket::Instance>(config));\n    };\n  }\n\n  ProtobufTypes::MessagePtr createEmptyConfigProto() override {\n    return std::make_unique<::cilium::WebSocketClient>();\n  }\n\n  std::string name() const override { return \"cilium.network.websocket.client\"; }\n};\n\n/**\n * Static registration for the websocket client network filter. @see RegisterFactory.\n */\nREGISTER_FACTORY(CiliumWebSocketClientConfigFactory,\n                 Server::Configuration::NamedNetworkFilterConfigFactory);\n\nvoid Instance::initializeReadFilterCallbacks(Network::ReadFilterCallbacks& callbacks) {\n  callbacks_ = &callbacks;\n\n  // Tell TcpProxy to not disable read so that we do WebSocket handshake before upstream\n  // connection is established.\n  // Use Mutable StateType so that tests can have both client and server filters in the same\n  // filter chain.\n  callbacks_->connection().streamInfo().filterState()->setData(\n      TcpProxy::ReceiveBeforeConnectKey, std::make_unique<StreamInfo::BoolAccessorImpl>(true),\n      StreamInfo::FilterState::StateType::Mutable, StreamInfo::FilterState::LifeSpan::Connection);\n}\n\nNetwork::FilterStatus Instance::onNewConnection() {\n  std::string pod_ip;\n  bool is_ingress;\n  uint32_t identity, destination_identity;\n  uint16_t proxy_id;\n\n  auto& conn = callbacks_->connection();\n\n  ENVOY_CONN_LOG(debug, \"cilium.network.websocket: onNewConnection\", conn);\n\n  // Enable half close if not already enabled\n  if (!conn.isHalfCloseEnabled()) {\n    conn.enableHalfClose(true);\n  }\n\n  const Network::Address::InstanceConstSharedPtr& dst_address =\n      conn.connectionInfoProvider().localAddress();\n  const Network::Address::Ip* dip = dst_address ? dst_address->ip() : nullptr;\n\n  const auto policy_fs =\n      conn.streamInfo().filterState()->getDataReadOnly<Cilium::CiliumPolicyFilterState>(\n          Cilium::CiliumPolicyFilterState::key());\n\n  if (policy_fs) {\n    proxy_id = policy_fs->proxy_id_;\n    pod_ip = policy_fs->pod_ip_;\n    is_ingress = policy_fs->ingress_;\n    identity = policy_fs->source_identity_;\n    destination_identity = dip ? policy_fs->resolvePolicyId(dip) : 0;\n  } else {\n    // Default to ingress to destination address, but no security identities.\n    proxy_id = 0;\n    pod_ip = dip ? dip->addressAsString() : \"\";\n    is_ingress = true;\n    identity = 0;\n    destination_identity = 0;\n  }\n  // Initialize the log entry\n  log_entry_.initFromConnection(pod_ip, proxy_id, is_ingress, identity,\n                                callbacks_->connection().connectionInfoProvider().remoteAddress(),\n                                destination_identity, dst_address, &config_->time_source_);\n\n  codec_ = std::make_unique<Codec>(this, conn);\n\n  if (!config_->client_) {\n    // Server allows upstream processing only after the handshake has been received\n    return Network::FilterStatus::StopIteration;\n  }\n\n  // Handshake cannot be injected while in this (onNewConnection()) callbask, schedule it to be run\n  // afterwards, but during the current dispatcher iteration.\n  client_handshake_cb_ =\n      conn.dispatcher().createSchedulableCallback([this]() { codec_->handshake(); });\n  client_handshake_cb_->scheduleCallbackCurrentIteration();\n\n  return Network::FilterStatus::Continue;\n}\n\nNetwork::FilterStatus Instance::onData(Buffer::Instance& data, bool end_stream) {\n  auto& conn = callbacks_->connection();\n  ENVOY_CONN_LOG(debug, \"cilium.network.websocket: onNewConnection\", conn);\n  if (codec_) {\n    if (config_->client_) {\n      codec_->encode(data, end_stream);\n    } else {\n      codec_->decode(data, end_stream);\n    }\n  }\n  // codec passes the data on via injectEncoded()/injectDecoded(), data is now empty\n  return Network::FilterStatus::StopIteration;\n}\n\nNetwork::FilterStatus Instance::onWrite(Buffer::Instance& data, bool end_stream) {\n  auto& conn = callbacks_->connection();\n  ENVOY_CONN_LOG(trace, \"cilium.network.websocket: onWrite {} bytes, end_stream: {}\", conn,\n                 data.length(), end_stream);\n  if (codec_) {\n    if (config_->client_) {\n      codec_->decode(data, end_stream);\n    } else {\n      codec_->encode(data, end_stream);\n    }\n  }\n  // codec passes the data on via injectEncoded()/injectDecoded(), data is now empty\n  return Network::FilterStatus::StopIteration;\n}\n\nvoid Instance::injectEncoded(Buffer::Instance& data, bool end_stream) {\n  if (config_->client_) {\n    callbacks_->injectReadDataToFilterChain(data, end_stream);\n  } else {\n    write_callbacks_->injectWriteDataToFilterChain(data, end_stream);\n  }\n}\n\nvoid Instance::injectDecoded(Buffer::Instance& data, bool end_stream) {\n  if (config_->client_) {\n    write_callbacks_->injectWriteDataToFilterChain(data, end_stream);\n  } else {\n    callbacks_->injectReadDataToFilterChain(data, end_stream);\n  }\n}\n\nvoid Instance::onHandshakeRequest(const Http::RequestHeaderMap& headers) {\n  Network::Address::InstanceConstSharedPtr orig_dst_address{nullptr};\n  uint32_t destination_identity = 0;\n  const auto& conn = callbacks_->connection();\n\n  const auto policy_fs =\n      conn.streamInfo().filterState().getDataReadOnly<Cilium::CiliumPolicyFilterState>(\n          Cilium::CiliumPolicyFilterState::key());\n\n  if (policy_fs) {\n    // resolve the original destination from 'x-envoy-original-dst-host' header to be used in the\n    // access log message\n    auto override_header = headers.getInline(original_dst_host_handle.handle());\n    if (override_header != nullptr && !override_header->value().empty()) {\n      const std::string request_override_host(override_header->value().getStringView());\n      orig_dst_address =\n          Network::Utility::parseInternetAddressAndPortNoThrow(request_override_host, false);\n      const Network::Address::Ip* dip = orig_dst_address ? orig_dst_address->ip() : nullptr;\n      if (dip) {\n        destination_identity = policy_fs->resolvePolicyId(dip);\n      }\n    }\n  }\n\n  // Initialize the log entry\n  log_entry_.updateFromRequest(destination_identity, orig_dst_address, headers);\n}\n\n} // namespace WebSocket\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/websocket.h",
    "content": "#pragma once\n\n#include \"envoy/buffer/buffer.h\"\n#include \"envoy/event/schedulable_cb.h\"\n#include \"envoy/http/header_map.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/filter.h\"\n#include \"envoy/stats/stats_macros.h\" // IWYU pragma: keep\n\n#include \"source/common/common/logger.h\"\n\n#include \"cilium/accesslog.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"cilium/websocket_codec.h\"\n#include \"cilium/websocket_config.h\"\n\nnamespace Envoy {\nnamespace Cilium {\nnamespace WebSocket {\n\nclass Instance : public Network::Filter,\n                 public CodecCallbacks,\n                 Logger::Loggable<Logger::Id::filter> {\npublic:\n  Instance(const ConfigSharedPtr& config) : config_(config) {}\n\n  // Network::ReadFilter\n  void initializeReadFilterCallbacks(Network::ReadFilterCallbacks& callbacks) override;\n  Network::FilterStatus onNewConnection() override;\n  Network::FilterStatus onData(Buffer::Instance&, bool end_stream) override;\n\n  // Network::WriteFilter\n  void initializeWriteFilterCallbacks(Network::WriteFilterCallbacks& callbacks) override {\n    write_callbacks_ = &callbacks;\n  }\n  Network::FilterStatus onWrite(Buffer::Instance&, bool end_stream) override;\n\n  // WebSocket::CodecCallbacks\n  const ConfigSharedPtr& config() override { return config_; }\n  void onHandshakeCreated(const Http::RequestHeaderMap& headers) override {\n    log_entry_.updateFromRequest(0, nullptr, headers);\n  }\n  void onHandshakeSent() override { config_->log(log_entry_, ::cilium::EntryType::Request); }\n  void onHandshakeRequest(const Http::RequestHeaderMap& headers) override;\n  void onHandshakeResponse(const Http::ResponseHeaderMap& headers) override {\n    log_entry_.updateFromResponse(headers, config_->time_source_);\n    config_->log(log_entry_, ::cilium::EntryType::Response);\n  }\n  void onHandshakeResponseSent(const Http::ResponseHeaderMap& headers) override {\n    bool accepted = headers.Status() && headers.getStatusValue() == \"101\";\n    if (accepted) {\n      config_->log(log_entry_, ::cilium::EntryType::Request);\n    } else {\n      config_->log(log_entry_, ::cilium::EntryType::Denied);\n      config_->stats_.access_denied_.inc();\n    }\n    log_entry_.updateFromResponse(headers, config_->time_source_);\n    config_->log(log_entry_, ::cilium::EntryType::Response);\n  }\n\n  void injectEncoded(Buffer::Instance& data, bool end_stream) override;\n  void injectDecoded(Buffer::Instance& data, bool end_stream) override;\n\n  void\n  setOriginalDestinationAddress(const Network::Address::InstanceConstSharedPtr& orig_dst) override {\n    callbacks_->connection().connectionInfoSetter().restoreLocalAddress(orig_dst);\n  }\n\nprivate:\n  const ConfigSharedPtr config_;\n\n  Network::ReadFilterCallbacks* callbacks_{nullptr};\n  Network::WriteFilterCallbacks* write_callbacks_{nullptr};\n  CodecPtr codec_{nullptr};\n  Event::SchedulableCallbackPtr client_handshake_cb_{nullptr};\n  Cilium::AccessLog::Entry log_entry_{};\n};\n\n} // namespace WebSocket\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/websocket_codec.cc",
    "content": "#include \"cilium/websocket_codec.h\"\n\n#include <endian.h>\n#include <fmt/format.h>\n#include <http_parser.h>\n#include <sys/types.h>\n\n#include <algorithm>\n#include <chrono>\n#include <cstddef>\n#include <cstdint>\n#include <cstring>\n#include <string>\n#include <utility>\n\n#include \"envoy/buffer/buffer.h\"\n#include \"envoy/common/pure.h\"\n#include \"envoy/http/codes.h\"\n#include \"envoy/http/header_map.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/connection.h\"\n\n#include \"source/common/buffer/buffer_impl.h\"\n#include \"source/common/common/assert.h\"\n#include \"source/common/common/enum_to_int.h\"\n#include \"source/common/common/hex.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/utility.h\"\n#include \"source/common/http/codes.h\"\n#include \"source/common/http/header_map_impl.h\"\n#include \"source/common/http/header_utility.h\"\n#include \"source/common/http/headers.h\"\n#include \"source/common/http/utility.h\"\n#include \"source/common/network/utility.h\"\n\n#include \"absl/strings/ascii.h\"\n#include \"absl/strings/string_view.h\"\n#include \"cilium/websocket_config.h\"\n#include \"cilium/websocket_protocol.h\"\n\nnamespace Envoy {\nnamespace Cilium {\nnamespace WebSocket {\n\nnamespace {\n\nHttp::RegisterCustomInlineHeader<Http::CustomInlineHeaderRegistry::Type::RequestHeaders>\n    origin_handle(Http::CustomHeaders::get().Origin);\nHttp::RegisterCustomInlineHeader<Http::CustomInlineHeaderRegistry::Type::RequestHeaders>\n    original_dst_host_handle(Http::Headers::get().EnvoyOriginalDstHost);\nHttp::RegisterCustomInlineHeader<Http::CustomInlineHeaderRegistry::Type::RequestHeaders>\n    sec_websocket_key_handle(Http::LowerCaseString{\"sec-websocket-key\"});\nHttp::RegisterCustomInlineHeader<Http::CustomInlineHeaderRegistry::Type::RequestHeaders>\n    sec_websocket_version_handle(Http::LowerCaseString{\"sec-websocket-version\"});\nHttp::RegisterCustomInlineHeader<Http::CustomInlineHeaderRegistry::Type::RequestHeaders>\n    sec_websocket_protocol_handle(Http::LowerCaseString{\"sec-websocket-protocol\"});\nHttp::RegisterCustomInlineHeader<Http::CustomInlineHeaderRegistry::Type::RequestHeaders>\n    sec_websocket_extensions_handle(Http::LowerCaseString{\"sec-websocket-extensions\"});\n\nHttp::RegisterCustomInlineHeader<Http::CustomInlineHeaderRegistry::Type::ResponseHeaders>\n    sec_websocket_accept_handle(Http::LowerCaseString{\"sec-websocket-accept\"});\n\nclass HttpParser : public Logger::Loggable<Logger::Id::filter> {\npublic:\n  virtual ~HttpParser() = default;\n  HttpParser(http_parser_type type) : type_(type) {}\n\n  bool parse(absl::string_view msg) {\n    http_parser_init(&parser_, type_);\n    parser_.data = this;\n    http_parser_settings settings = {\n        nullptr, /* on_message_begin */\n        nullptr, /* on_URL */\n        nullptr, /* on_status */\n        [](http_parser* parser, const char* at, size_t length) -> int {\n          return static_cast<HttpParser*>(parser->data)->onHeaderField(at, length);\n        }, /* on_header_field */\n        [](http_parser* parser, const char* at, size_t length) -> int {\n          return static_cast<HttpParser*>(parser->data)->onHeaderValue(at, length);\n        }, /* on_header_value */\n        [](http_parser* parser) -> int {\n          return static_cast<HttpParser*>(parser->data)->onHeadersComplete();\n        },       /* on_headers_complete */\n        nullptr, /* on_body */\n        [](http_parser* parser) -> int {\n          static_cast<HttpParser*>(parser->data)->message_complete_ = true;\n          return 0;\n        },       /* on_message_complete */\n        nullptr, /* chunk header, chunk length in parser->content_length */\n        nullptr, /* chunk complete */\n    };\n\n    ssize_t rc = http_parser_execute(&parser_, &settings, msg.data(), msg.length());\n    ENVOY_LOG(trace, \"websocket: http_parser parsed {} chars, error code: {}\", rc,\n              static_cast<int>(HTTP_PARSER_ERRNO(&parser_)));\n\n    // Errors in parsing HTTP.\n    if (HTTP_PARSER_ERRNO(&parser_) != HPE_OK) {\n      return false;\n    }\n\n    return message_complete_;\n  }\n\n  bool versionIsHttp11() {\n    ENVOY_LOG(trace, \"websocket: http_parser got version major: {} minor: {}\", parser_.http_major,\n              parser_.http_minor);\n    return parser_.http_major == 1 && parser_.http_minor == 1;\n  }\n\n  uint32_t size() { return parser_.nread; }\n\nprotected:\n  int completeLastHeader() {\n    if (Http::HeaderUtility::headerNameContainsUnderscore(current_header_field_.getStringView())) {\n      ENVOY_LOG(debug, \"websocket: Rejecting invalid header: key={} value={}\",\n                current_header_field_.getStringView(), current_header_value_.getStringView());\n      return -1;\n    }\n    ENVOY_LOG(trace, \"websocket: completed header: key={} value={}\",\n              current_header_field_.getStringView(), current_header_value_.getStringView());\n\n    if (!current_header_field_.empty()) {\n      // Strip trailing whitespace of the current header value if any. Leading whitespace was\n      // trimmed in onHeaderValue. http_parser does not strip leading or trailing whitespace as the\n      // spec requires: https://tools.ietf.org/html/rfc7230#section-3.2.4\n      current_header_value_.rtrim();\n\n      current_header_field_.inlineTransform([](char c) { return absl::ascii_tolower(c); });\n\n      addHeader(std::move(current_header_field_), std::move(current_header_value_));\n    }\n    return 0;\n  }\n\n  int onHeaderField(const char* data, size_t length) {\n    if (parsing_value_) {\n      auto code = completeLastHeader();\n      if (code != 0) {\n        return code;\n      }\n    }\n    parsing_value_ = false;\n    current_header_field_.append(data, length);\n    return 0;\n  }\n\n  int onHeaderValue(const char* data, size_t length) {\n    parsing_value_ = true;\n    absl::string_view header_value{data, length};\n    if (!Http::HeaderUtility::headerValueIsValid(header_value)) {\n      ENVOY_LOG(debug, \"websocket: invalid header value: {}\", header_value);\n      return -1;\n    }\n\n    if (current_header_value_.empty()) {\n      // Strip leading whitespace if the current header value input contains the first bytes of the\n      // encoded header value. Trailing whitespace is stripped once the full header value is known\n      // in completeLastHeader. http_parser does not strip leading or trailing\n      // whitespace as the spec requires: https://tools.ietf.org/html/rfc7230#section-3.2.4 .\n      header_value = StringUtil::ltrim(header_value);\n    }\n    current_header_value_.append(header_value.data(), header_value.length());\n    return 0;\n  }\n\n  virtual int onHeadersComplete() { return completeLastHeader(); }\n\n  virtual void addHeader(Http::HeaderString&& key, Http::HeaderString&& value) PURE;\n\n  http_parser_type type_;\n  http_parser parser_;\n\n  Http::HeaderString current_header_field_;\n  Http::HeaderString current_header_value_;\n  bool parsing_value_{false};\n  bool message_complete_{false};\n};\n\nclass RequestParser : public HttpParser {\npublic:\n  RequestParser() : HttpParser(HTTP_REQUEST), headers_(Http::RequestHeaderMapImpl::create()) {}\n\n  const Http::RequestHeaderMap& headers() { return *(headers_.get()); }\n\nprotected:\n  int onHeadersComplete() override {\n    headers_->setMethod(http_method_str(static_cast<http_method>(parser_.method)));\n    return HttpParser::onHeadersComplete();\n  }\n\n  void addHeader(Http::HeaderString&& key, Http::HeaderString&& value) override {\n    headers_->addViaMove(std::move(key), std::move(value));\n  }\n\nprivate:\n  Http::RequestHeaderMapPtr headers_;\n};\n\nclass ResponseParser : public HttpParser {\npublic:\n  ResponseParser() : HttpParser(HTTP_RESPONSE), headers_(Http::ResponseHeaderMapImpl::create()) {}\n\n  const Http::ResponseHeaderMap& headers() { return *(headers_.get()); }\n\n  unsigned int status() {\n    ENVOY_LOG(trace, \"websocket: http_parser got status: {}\",\n              static_cast<unsigned int>(parser_.status_code));\n    return parser_.status_code;\n  }\n\nprotected:\n  int onHeadersComplete() override {\n    headers_->setStatus(parser_.status_code);\n    return HttpParser::onHeadersComplete();\n  }\n\n  void addHeader(Http::HeaderString&& key, Http::HeaderString&& value) override {\n    headers_->addViaMove(std::move(key), std::move(value));\n  }\n\nprivate:\n  Http::ResponseHeaderMapPtr headers_;\n};\n\n#define CRLF \"\\r\\n\"\nstatic const char REQUEST_POSTFIX[] = \" HTTP/1.1\" CRLF;\nstatic const std::string request_prefix = \"GET \";\nstatic const std::string response_prefix = \"HTTP/1.1 \";\nstatic const absl::string_view header_separator = {CRLF CRLF, sizeof(CRLF CRLF) - 1};\n\nvoid encodeHeader(Buffer::Instance& buffer, absl::string_view key, absl::string_view value) {\n  buffer.add(key);\n  buffer.add(\": \", 2);\n  buffer.add(value);\n  buffer.add(CRLF, 2);\n}\n\nvoid encodeHeaders(Buffer::Instance& buffer, Http::RequestOrResponseHeaderMap& headers) {\n  const Http::HeaderValues& header_values = Http::Headers::get();\n  headers.iterate(\n      [&buffer, &header_values](const Http::HeaderEntry& header) -> Http::HeaderMap::Iterate {\n        absl::string_view key = header.key().getStringView();\n        if (key[0] == ':') {\n          // Translate :authority -> host so that upper layers do not need to deal with this.\n          if (key.size() > 1 && key[1] == 'a') {\n            key = absl::string_view(header_values.HostLegacy.get());\n          } else {\n            // Skip all headers starting with ':' that make it here.\n            return Http::HeaderMap::Iterate::Continue;\n          }\n        }\n        encodeHeader(buffer, key, header.value().getStringView());\n        return Http::HeaderMap::Iterate::Continue;\n      });\n  encodeHeader(buffer, header_values.ContentLength.get(), \"0\");\n}\n\nvoid encodeRequest(Buffer::Instance& buffer, Http::RequestHeaderMap& headers) {\n  const Http::HeaderEntry* method = headers.Method();\n  const Http::HeaderEntry* path = headers.Path();\n\n  buffer.add(method->value().getStringView());\n  buffer.add(\" \", 1);\n  buffer.add(path->value().getStringView());\n  buffer.add(REQUEST_POSTFIX, sizeof(REQUEST_POSTFIX) - 1);\n\n  encodeHeaders(buffer, headers);\n\n  buffer.add(CRLF, 2);\n}\n\nvoid encodeResponse(Buffer::Instance& buffer, Http::ResponseHeaderMap& headers) {\n  const Http::HeaderEntry* status = headers.Status();\n  uint64_t numeric_status = Http::Utility::getResponseStatus(headers);\n  const char* status_string = Http::CodeUtility::toString(static_cast<Http::Code>(numeric_status));\n\n  buffer.add(response_prefix);\n  buffer.add(status->value().getStringView());\n  buffer.add(\" \", 1);\n  buffer.add(status_string, strlen(status_string));\n  buffer.add(CRLF, 2);\n\n  encodeHeaders(buffer, headers);\n\n  buffer.add(CRLF, 2);\n}\n\n} // namespace\n\n//\n// Codec\n//\n\nCodec::Codec(CodecCallbacks* parent, Network::Connection& conn)\n    : parent_(parent), connection_(conn), encoder_(*this), decoder_(*this) {\n  ENVOY_CONN_LOG(trace, \"Enabling websocket handshake timeout at {} ms\", connection_,\n                 parent_->config()->handshake_timeout_.count());\n  handshake_timer_ = connection_.dispatcher().createTimer([this]() {\n    parent_->config()->stats_.handshake_timeout_.inc();\n    closeOnError(\"websocket handshake timed out\");\n  });\n  handshake_timer_->enableTimer(parent_->config()->handshake_timeout_);\n}\n\nnamespace {\n\nsize_t maskData(uint8_t* buf, size_t n_bytes, uint8_t mask[4], size_t payload_offset = 0) {\n  for (size_t i = 0; i < n_bytes; i++) {\n    buf[i] ^= mask[payload_offset % 4];\n    payload_offset++;\n  }\n  return payload_offset;\n}\n\n} // namespace\n\nvoid Codec::closeOnError(const char* msg) {\n  if (msg) {\n    ENVOY_LOG(debug, \"websocket: Closing connection: {}\", msg);\n  }\n  // Close downstream, this should result also in the upstream getting closed (if any).\n  connection_.close(Network::ConnectionCloseType::NoFlush, fmt::format(\"websocket error: {}\", msg));\n}\n\nvoid Codec::closeOnError(Buffer::Instance& data, const char* msg) {\n  closeOnError(msg);\n  // Test infra insists on data being drained\n  data.drain(data.length());\n}\n\nvoid Codec::handshake() {\n  ENVOY_LOG(debug, \"websocket: handshake\");\n\n  auto& config = parent_->config();\n\n  if (!config->client_) {\n    ENVOY_LOG(warn, \"websocket: skipping handshake on a server\");\n    return;\n  }\n\n  const Network::Address::InstanceConstSharedPtr& dst_address =\n      connection_.connectionInfoProvider().localAddress();\n\n  // Create WebSocket Handshake\n  const Http::HeaderValues& header_values = Http::Headers::get();\n  Envoy::Http::RequestHeaderMapPtr headers = Http::RequestHeaderMapImpl::create();\n  headers->setReferenceMethod(header_values.MethodValues.Get);\n  headers->setReferencePath(config->path_);\n  headers->setReferenceHost(config->host_);\n  headers->setReferenceUpgrade(header_values.UpgradeValues.WebSocket);\n  headers->setReferenceConnection(header_values.ConnectionValues.Upgrade);\n  headers->setReferenceInline(sec_websocket_key_handle.handle(), config->key_);\n  headers->setReferenceInline(sec_websocket_version_handle.handle(), config->version_);\n  if (!config->origin_.empty()) {\n    headers->setReferenceInline(origin_handle.handle(), config->origin_);\n  }\n  // Set original destination address header\n  headers->setReferenceInline(original_dst_host_handle.handle(), dst_address->asStringView());\n  // Set 'x-request-id' header\n  config->request_id_extension_->set(*headers, true, false);\n\n  parent_->onHandshakeCreated(*headers);\n\n  Buffer::OwnedImpl handshake_buffer{};\n  encodeRequest(handshake_buffer, *headers);\n  parent_->injectEncoded(handshake_buffer, false);\n  // Check that the buffer was drained\n  ASSERT(handshake_buffer.length() == 0, \"Handshake buffer not drained\");\n  parent_->onHandshakeSent();\n}\n\nvoid Codec::encode(Buffer::Instance& data, bool end_stream) {\n  ENVOY_LOG(debug, \"websocket: encode {} bytes, end_stream: {}\", data.length(), end_stream);\n\n  encoder_.encode(data, end_stream, OPCODE_BIN);\n\n  // Only forward data if handshake has completed\n  if (accepted_) {\n    // Reset idle timer on data\n    if (encoder_.hasData()) {\n      resetPingTimer();\n    }\n    parent_->injectEncoded(encoder_.data(), encoder_.endStream());\n  }\n}\n\nvoid Codec::encodeHandshakeResponse(Http::ResponseHeaderMap& headers, uint32_t status,\n                                    absl::string_view hash,\n                                    const Http::RequestHeaderMap* request_headers) {\n  if (status == 200) {\n    ENVOY_LOG(debug, \"websocket: Using hash {}\", hash);\n    headers.setStatus(enumToInt(Http::Code::SwitchingProtocols)); // 101\n    headers.setReferenceConnection(Http::Headers::get().ConnectionValues.Upgrade);\n    headers.setReferenceUpgrade(Http::Headers::get().UpgradeValues.WebSocket);\n    headers.addCopy(Envoy::Http::LowerCaseString(\"sec-websocket-accept\"), hash);\n  } else {\n    headers.setStatus(enumToInt(Http::Code::Forbidden)); // 403\n  }\n  if (request_headers != nullptr && request_headers->RequestId()) {\n    headers.setRequestId(request_headers->getRequestIdValue());\n  }\n}\n\nNetwork::Address::InstanceConstSharedPtr\nCodec::decodeHandshakeRequest(const ConfigSharedPtr& config,\n                              const Http::RequestHeaderMap& headers) {\n\n  auto method = headers.getMethodValue();\n  auto path = absl::AsciiStrToLower(headers.getPathValue());\n  auto host = absl::AsciiStrToLower(headers.getHostValue());\n  auto connection = absl::AsciiStrToLower(headers.getConnectionValue());\n  auto upgrade = absl::AsciiStrToLower(headers.getUpgradeValue());\n  auto version =\n      absl::AsciiStrToLower(headers.getInlineValue(sec_websocket_version_handle.handle()));\n  auto origin = headers.getInline(origin_handle.handle());\n  auto protocol = headers.getInline(sec_websocket_protocol_handle.handle());\n  auto extensions = headers.getInline(sec_websocket_extensions_handle.handle());\n  auto override_header = headers.getInline(original_dst_host_handle.handle());\n  auto key = headers.getInlineValue(sec_websocket_key_handle.handle());\n\n  Network::Address::InstanceConstSharedPtr orig_dst{nullptr};\n  if (override_header != nullptr && !override_header->value().empty()) {\n    const std::string request_override_host(override_header->value().getStringView());\n    orig_dst = Network::Utility::parseInternetAddressAndPortNoThrow(request_override_host, false);\n  }\n  bool valid =\n      (method == Http::Headers::get().MethodValues.Get &&\n       connection == Http::Headers::get().ConnectionValues.Upgrade &&\n       upgrade == Http::Headers::get().UpgradeValues.WebSocket &&\n       // path must be present with non-empty value, and must match expected if configured\n       ((config->path_.empty() && !path.empty()) || (path == config->path_)) &&\n       // host must be present with non-empty value, and must match expected if configured\n       ((config->host_.empty() && !host.empty()) || (host == config->host_)) &&\n       // key must be present with non-empty value, and must match expected if configured\n       ((config->key_.empty() && !key.empty()) || (key == config->key_)) &&\n       // version must be present with non-empty value, and must match expected if configured\n       ((config->version_.empty() && !version.empty()) || (version == config->version_)) &&\n       // origin must be present with non-empty value and must match expected if configured,\n       // origin may not be present if not configured\n       (config->origin_.empty()\n            ? origin == nullptr\n            : (origin != nullptr &&\n               absl::AsciiStrToLower(origin->value().getStringView()) == config->origin_)) &&\n       // protocol and extensions are not allowed for now\n       protocol == nullptr && extensions == nullptr &&\n       // override header must be present and have a valid value\n       orig_dst != nullptr);\n  ENVOY_LOG(debug,\n            \"websocket: valid = {}, method: {}/{}, path: \\\"{}\\\"/\\\"{}\\\", host: {}/{}, connection: \"\n            \"{}/{}, upgrade: {}/{}, key: {}/{}, version: {}/{}, origin: {}/{}, protocol: {}, \"\n            \"extensions: {}, override: {}\",\n            valid, method, Http::Headers::get().MethodValues.Get, path, config->path_, host,\n            config->host_, connection, Http::Headers::get().ConnectionValues.Upgrade, upgrade,\n            Http::Headers::get().UpgradeValues.WebSocket, key, config->key_, version,\n            config->version_, origin ? origin->value().getStringView() : \"<NONE>\", config->origin_,\n            protocol ? protocol->value().getStringView() : \"<NONE>\",\n            extensions ? extensions->value().getStringView() : \"<NONE>\",\n            override_header ? override_header->value().getStringView() : \"<NONE>\");\n\n  return valid ? orig_dst : nullptr;\n}\n\nvoid Codec::startPingTimer() {\n  auto& config = parent_->config();\n\n  // Start ping timer if enabled\n  if (config->ping_interval_.count()) {\n    ENVOY_CONN_LOG(trace, \"Enabling websocket PING timer at {} ms\", connection_,\n                   config->ping_interval_.count());\n    ping_timer_ = connection_.dispatcher().createTimer([this]() {\n      auto& config = parent_->config();\n      char count_buffer[StringUtil::MIN_ITOA_OUT_LEN];\n      const uint32_t count_len =\n          StringUtil::itoa(count_buffer, StringUtil::MIN_ITOA_OUT_LEN, ++ping_count_);\n      if (ping(count_buffer, count_len)) {\n        ENVOY_CONN_LOG(trace, \"Injected websocket PING {}\", connection_, ping_count_);\n        // Randomize ping interval with jitter when idle\n        if (ping_timer_ != nullptr) {\n          uint64_t interval_ms = config->ping_interval_.count();\n          const uint64_t jitter_percent_mod = ping_interval_jitter_percent_ * interval_ms / 100;\n          if (jitter_percent_mod > 0) {\n            interval_ms += config->random_.random() % jitter_percent_mod;\n          }\n          ping_timer_->enableTimer(std::chrono::milliseconds(interval_ms));\n        }\n      }\n    });\n    ping_timer_->enableTimer(config->ping_interval_);\n  }\n}\n\nbool Codec::checkPrefix(Buffer::Instance& data, const std::string& prefix) {\n  // Sanity check the first chars to catch non-HTTP messages\n  auto cmp_len = std::min(data.length(), prefix.length());\n  const char* cmp_data = reinterpret_cast<char*>(data.linearize(cmp_len));\n  return absl::string_view(cmp_data, cmp_len) == absl::string_view(prefix.data(), cmp_len);\n}\n\nvoid Codec::decode(Buffer::Instance& data, bool end_stream) {\n  ENVOY_LOG(trace, \"websocket: decode {} bytes, end_stream: {}\", data.length(), end_stream);\n\n  auto& config = parent_->config();\n\n  if (!accepted_) {\n    // Buffer incoming data in case it arrives in parts\n    handshake_buffer_.move(data);\n\n    if (handshake_buffer_.length() > WEBSOCKET_HANDSHAKE_MAX_SIZE) {\n      config->stats_.handshake_too_large_.inc();\n      return closeOnError(handshake_buffer_, \"handshake message too long.\");\n    }\n    // Client needs to wait for a valid handshake response before accepting any data\n    if (config->client_) {\n      // Sanity check the first chars to catch non HTTP responses\n      if (!checkPrefix(handshake_buffer_, response_prefix)) {\n        config->stats_.handshake_not_http_.inc();\n        return closeOnError(handshake_buffer_, \"response not http.\");\n      }\n    } else {\n      // Server needs to see the handshake request as the first message.\n      // Sanity check the first chars to catch non HTTP requests\n      if (!checkPrefix(handshake_buffer_, request_prefix)) {\n        config->stats_.handshake_not_http_.inc();\n        return closeOnError(handshake_buffer_, \"request not http.\");\n      }\n    }\n\n    // Find the header separator that marks the end of the handshake request/response.\n    ssize_t pos =\n        handshake_buffer_.search(header_separator.data(), header_separator.length(), 0, 0);\n    if (pos == -1) {\n      if (end_stream) {\n        config->stats_.protocol_error_.inc();\n        return closeOnError(handshake_buffer_, \"no request/response.\");\n      }\n      return; // Header separator not found, Need more data\n    }\n\n    // Got the request/response, can disable the handshake timer.\n    handshake_timer_->disableTimer();\n\n    // Include the header separator in message size\n    size_t msg_size = pos + header_separator.length();\n    absl::string_view message = {reinterpret_cast<char*>(handshake_buffer_.linearize(msg_size)),\n                                 msg_size};\n\n    if (config->client_) {\n      ResponseParser parser;\n      bool ok = parser.parse(message);\n      if (!ok) {\n        config->stats_.handshake_parse_error_.inc();\n        return closeOnError(handshake_buffer_, \"response parse failed.\");\n      }\n      handshake_buffer_.drain(msg_size);\n\n      const Http::ResponseHeaderMap& headers = parser.headers();\n      parent_->onHandshakeResponse(headers);\n\n      if (!parser.versionIsHttp11()) {\n        config->stats_.handshake_invalid_http_version_.inc();\n        return closeOnError(handshake_buffer_, \"unsupported HTTP protocol\");\n      }\n\n      if (parser.status() != 101) {\n        config->stats_.handshake_invalid_http_status_.inc();\n        return closeOnError(handshake_buffer_, \"Invalid HTTP status code for websocket\");\n      }\n\n      // Validate response headers\n      auto connection = absl::AsciiStrToLower(headers.getConnectionValue());\n      auto upgrade = absl::AsciiStrToLower(headers.getUpgradeValue());\n      auto key_accept = headers.getInlineValue(sec_websocket_accept_handle.handle());\n\n      auto key_response = config->keyResponse(config->key_);\n      accepted_ = connection == Http::Headers::get().ConnectionValues.Upgrade &&\n                  upgrade == Http::Headers::get().UpgradeValues.WebSocket &&\n                  key_accept == key_response;\n\n      ENVOY_LOG(debug,\n                \"websocket: accepted_ = {}, connection: {}, upgrade: {}, accept: {} (expected {})\",\n                accepted_, connection, upgrade, key_accept, key_response);\n\n      if (!accepted_) {\n        config->stats_.handshake_invalid_websocket_response_.inc();\n        return closeOnError(handshake_buffer_, \"Invalid WebSocket response\");\n      }\n\n      // Kick write on the other direction\n      parent_->injectEncoded(encoder_.data(), encoder_.endStream());\n\n    } else {\n      // Server needs to wait for a valid handshake request before accepting any data\n      RequestParser parser;\n      bool ok = parser.parse(message);\n      if (!ok) {\n        // Consider issuing HTTP response instead?\n        config->stats_.handshake_parse_error_.inc();\n        return closeOnError(handshake_buffer_, \"request parse failed.\");\n      }\n      handshake_buffer_.drain(msg_size);\n\n      const Http::RequestHeaderMap& headers = parser.headers();\n      parent_->onHandshakeRequest(headers);\n\n      if (!parser.versionIsHttp11()) {\n        config->stats_.handshake_invalid_http_version_.inc();\n        return closeOnError(handshake_buffer_, \"unsupported HTTP protocol\");\n      }\n\n      // Validate request headers\n      auto response_headers = Http::ResponseHeaderMapImpl::create();\n      Buffer::OwnedImpl response_buffer{};\n      auto orig_dst = decodeHandshakeRequest(config, headers);\n      accepted_ = (orig_dst != nullptr);\n      if (!accepted_) {\n        config->stats_.handshake_invalid_websocket_request_.inc();\n\n        // Create handshake error response\n        encodeHandshakeResponse(*response_headers, 403, \"\", &headers);\n        encodeResponse(response_buffer, *response_headers);\n        parent_->injectEncoded(response_buffer, true);\n        // Check if the buffer was not drained\n        if (response_buffer.length() > 0) {\n          config->stats_.handshake_write_error_.inc();\n        } else {\n          parent_->onHandshakeResponseSent(*response_headers);\n        }\n        return closeOnError(handshake_buffer_, \"Invalid WebSocket request\");\n      }\n\n      // Create handshake response\n      auto hash = Config::keyResponse(headers.getInlineValue(sec_websocket_key_handle.handle()));\n      encodeHandshakeResponse(*response_headers, 200, hash, &headers);\n      encodeResponse(response_buffer, *response_headers);\n      parent_->injectEncoded(response_buffer, false);\n      // Check if the buffer was not drained\n      if (response_buffer.length() > 0) {\n        config->stats_.handshake_write_error_.inc();\n        return closeOnError(handshake_buffer_, \"error writing handshake response\");\n      }\n      // Set destination address for the original destination filter.\n      parent_->setOriginalDestinationAddress(orig_dst);\n\n      parent_->onHandshakeResponseSent(*response_headers);\n    }\n\n    startPingTimer();\n\n    // Move any remaining data back to 'data'\n    data.move(handshake_buffer_);\n  }\n\n  // Handshake done, process data.\n  decoder_.decode(data, end_stream);\n\n  // Reset idle timer on data\n  if (decoder_.hasData()) {\n    resetPingTimer();\n  }\n\n  parent_->injectDecoded(decoder_.data(), decoder_.endStream());\n}\n\nbool Codec::ping(const void* payload, size_t len) {\n  if (encoder_.endStream()) {\n    return false;\n  }\n  Buffer::OwnedImpl buf(payload, len);\n  encoder_.encode(buf, false, OPCODE_PING);\n  parent_->config()->stats_.ping_sent_count_.inc();\n  parent_->injectEncoded(encoder_.data(), encoder_.endStream());\n  return true;\n}\n\nbool Codec::pong(const void* payload, size_t len) {\n  if (encoder_.endStream()) {\n    return false;\n  }\n  Buffer::OwnedImpl buf(payload, len);\n  encoder_.encode(buf, false, OPCODE_PONG);\n  parent_->injectEncoded(encoder_.data(), encoder_.endStream());\n  return true;\n}\n\n// Encoder\n\n// Encode 'data' and 'end_stream' as websocket frames into 'encoded_'. Uses 'opcode' as the\n// websocket frame type for the data frames.\nvoid Codec::Encoder::encode(Buffer::Instance& data, bool end_stream, uint8_t opcode) {\n  auto hex_len = std::min(data.length(), 20UL);\n  const uint8_t* hex_data = reinterpret_cast<uint8_t*>(data.linearize(hex_len));\n  ENVOY_LOG(debug, \"websocket encoder: {} bytes: 0x{}, end_stream: {}, opcode: {}\", data.length(),\n            Hex::encode(hex_data, hex_len), end_stream, opcode);\n\n  auto& config = parent_.config();\n  //\n  // Encode data as a single WebSocket frame\n  //\n  if (data.length() > 0) {\n    uint8_t frame_header[14];\n    size_t frame_header_length = 2;\n    size_t payload_len = data.length();\n\n    frame_header[0] = FIN_MASK | opcode;\n    if (payload_len < 126) {\n      frame_header[1] = payload_len;\n    } else if (payload_len < 65536) {\n      uint16_t len16;\n\n      frame_header[1] = 126;\n      len16 = htobe16(payload_len);\n      memcpy(frame_header + frame_header_length, &len16, 2); // NOLINT(safe-memcpy)\n      frame_header_length += 2;\n    } else {\n      uint64_t len64;\n\n      frame_header[1] = 127;\n      len64 = htobe64(payload_len);\n      memcpy(frame_header + frame_header_length, &len64, 8); // NOLINT(safe-memcpy)\n      frame_header_length += 8;\n    }\n\n    // Client must mask the payload\n    if (config->client_) {\n      frame_header[1] |= MASK_MASK;\n\n      union {\n        uint8_t bytes[4];\n        uint32_t word;\n      } mask;\n\n      mask.word = config->random_.random();\n      memcpy(frame_header + frame_header_length, &mask, 4); // NOLINT(safe-memcpy)\n      frame_header_length += 4;\n      uint8_t* buf = reinterpret_cast<uint8_t*>(data.linearize(payload_len));\n      maskData(buf, payload_len, mask.bytes);\n    }\n\n    // Add frame header and (masked) data\n    encoded_.add(absl::string_view{reinterpret_cast<char*>(frame_header), frame_header_length});\n    encoded_.move(data, payload_len);\n  }\n\n  //\n  // Append closing frame if 'end_stream'\n  //\n  if (end_stream) {\n    uint8_t frame_header[14];\n    size_t frame_header_length = 2;\n    size_t payload_len = 0;\n\n    frame_header[0] = FIN_MASK | OPCODE_CLOSE;\n    frame_header[1] = payload_len;\n    // Client must mask the payload\n    if (config->client_) {\n      frame_header[1] |= MASK_MASK;\n\n      uint32_t mask = config->random_.random();\n      memcpy(frame_header + frame_header_length, &mask, 4); // NOLINT(safe-memcpy)\n      frame_header_length += 4;\n      // No data to mask\n    }\n    encoded_.add(reinterpret_cast<void*>(frame_header), frame_header_length);\n    end_stream_ = true;\n\n    ENVOY_LOG(debug, \"websocket encoder: sent WebSocket CLOSE message, end_stream: {}\", end_stream);\n  }\n}\n\n// Decoder\n\n/*\n * TRY_READ_NETWORK reads sizeof(*(DATA)) bytes from 'buffer_' if available.\n * Does not drain anything from the buffer,\n * draining has to be done separately.\n */\n#define TRY_READ_NETWORK(DATA)                                                                     \\\n  {                                                                                                \\\n    if (buffer_.length() < frame_offset + sizeof(*(DATA))) {                                       \\\n      /* Try again when we have more data */                                                       \\\n      return;                                                                                      \\\n    }                                                                                              \\\n    ENVOY_LOG(trace, \"websocket: copyOut {} bytes at offset {}\", sizeof(*(DATA)), frame_offset);   \\\n    buffer_.copyOut(frame_offset, sizeof(*(DATA)), (DATA));                                        \\\n    frame_offset += sizeof(*(DATA));                                                               \\\n  }\n\n// Decode 'data' into 'decoded_'.\nvoid Codec::Decoder::decode(Buffer::Instance& data, bool end_stream) {\n  ENVOY_LOG(trace, \"websocket decoder: {} bytes, end_stream: {}\", data.length(), end_stream);\n\n  buffer_.move(data);\n\n  if (end_stream_ && buffer_.length() > 0) {\n    ENVOY_LOG(debug, \"websocket decoder: data received after CLOSE: {} bytes\", buffer_.length());\n    buffer_.drain(buffer_.length());\n    return;\n  }\n\n  if (end_stream) {\n    end_stream_ = true;\n  }\n\n  while (buffer_.length() > 0) {\n    // Try finish any frame in progress\n    while (payload_remaining_ > 0) {\n      auto slice = buffer_.frontSlice();\n      size_t n_bytes = std::min(slice.len_, payload_remaining_);\n\n      // Unmask data in place\n      uint8_t* buf = static_cast<uint8_t*>(slice.mem_);\n      auto hex_len = std::min(n_bytes, 20UL);\n      if (unmasking_) {\n        ENVOY_LOG(\n            trace,\n            \"websocket decoder: unmasking payload remaining: {}, offset: {}, processing: {}: 0x{}\",\n            payload_remaining_, payload_offset_, n_bytes, Hex::encode(buf, hex_len));\n        payload_offset_ = maskData(buf, n_bytes, mask_, payload_offset_);\n      }\n      ENVOY_LOG(trace, \"websocket decoder: payload remaining: {}, offset: {}, processing: {}: 0x{}\",\n                payload_remaining_, payload_offset_, n_bytes, Hex::encode(buf, hex_len));\n\n      decoded_.move(buffer_, n_bytes);\n      payload_remaining_ -= n_bytes;\n\n      if (buffer_.length() == 0) {\n        return;\n      }\n    }\n    //\n    // Now at a frame boundary, reset state for a new frame.\n    //\n    unmasking_ = false;\n    payload_offset_ = 0;\n    RELEASE_ASSERT(payload_remaining_ == 0, \"internal websocket framing error\");\n\n    uint8_t frame_header[2];\n    size_t frame_offset = 0;\n    uint8_t opcode;\n    uint64_t payload_len;\n\n    ENVOY_LOG(trace, \"websocket decoder: remaining buffer: {} bytes\", buffer_.length());\n\n    TRY_READ_NETWORK(&frame_header);\n    opcode = frame_header[0] & OPCODE_MASK;\n    payload_len = frame_header[1] & PAYLOAD_LEN_MASK;\n\n    if (payload_len == 126) {\n      uint16_t len16;\n\n      TRY_READ_NETWORK(&len16);\n      payload_len = be16toh(len16);\n    } else if (payload_len == 127) {\n      uint64_t len64;\n\n      TRY_READ_NETWORK(&len64);\n      payload_len = be64toh(len64);\n    }\n    if (frame_header[1] & MASK_MASK) {\n      TRY_READ_NETWORK(&mask_);\n      unmasking_ = true;\n    }\n\n    //\n    // Whole header received and decoded\n    //\n\n    // Terminate and respond to any control frames\n    if (opcode >= OPCODE_CLOSE) {\n      // Protect against too large control frames that could happen if the decoder ever loses\n      // sync with the data stream.\n      if (payload_len > WEBSOCKET_CONTROL_FRAME_MAX_SIZE) {\n        ENVOY_LOG(debug, \"websocket decoder: too large control frame: {} bytes\", payload_len);\n        buffer_.drain(buffer_.length());\n        end_stream_ = true;\n        return;\n      }\n\n      // Buffer until whole control frame has been received\n      if (buffer_.length() < frame_offset + payload_len) {\n        return;\n      }\n\n      // Drain control frame header, get the payload\n      buffer_.drain(frame_offset);\n      uint8_t* payload = reinterpret_cast<uint8_t*>(buffer_.linearize(payload_len));\n\n      // Unmask the control frame payload\n      if (unmasking_) {\n        maskData(payload, payload_len, mask_);\n      }\n\n      switch (opcode) {\n      case OPCODE_CLOSE:\n        ENVOY_LOG(trace, \"websocket decoder: CLOSE received\");\n        end_stream_ = true;\n        break;\n      case OPCODE_PING: {\n        ENVOY_LOG(trace, \"websocket decoder: PING received\");\n        // Reply with a PONG with the same payload\n        parent_.pong(payload, payload_len);\n        break;\n      }\n      case OPCODE_PONG:\n        ENVOY_LOG(trace, \"websocket decoder: PONG received\");\n        break;\n      }\n      // Drain control plane payload\n      buffer_.drain(payload_len);\n    } else {\n      // Unframe and forward all non-control frames\n      ENVOY_LOG(trace, \"websocket decoder: received websocket data: header {} bytes, data {} bytes\",\n                frame_offset, payload_len);\n\n      buffer_.drain(frame_offset);\n      payload_remaining_ = payload_len;\n    }\n  }\n}\n\n} // namespace WebSocket\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/websocket_codec.h",
    "content": "#pragma once\n\n#include <cstddef>\n#include <cstdint>\n#include <memory>\n#include <string>\n\n#include \"envoy/buffer/buffer.h\"\n#include \"envoy/common/pure.h\"\n#include \"envoy/event/timer.h\"\n#include \"envoy/http/header_map.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/connection.h\"\n\n#include \"source/common/buffer/buffer_impl.h\"\n#include \"source/common/common/logger.h\"\n\n#include \"absl/strings/string_view.h\"\n#include \"cilium/websocket_config.h\"\n\nnamespace Envoy {\nnamespace Cilium {\nnamespace WebSocket {\n\nclass CodecCallbacks {\npublic:\n  virtual ~CodecCallbacks() = default;\n\n  virtual const ConfigSharedPtr& config() PURE;\n\n  virtual void injectEncoded(Buffer::Instance& data, bool end_stream) PURE;\n  virtual void injectDecoded(Buffer::Instance& data, bool end_stream) PURE;\n\n  virtual void\n  setOriginalDestinationAddress(const Network::Address::InstanceConstSharedPtr& orig_dst) PURE;\n\n  virtual void onHandshakeCreated(const Http::RequestHeaderMap&) PURE;\n  virtual void onHandshakeSent() PURE;\n  virtual void onHandshakeRequest(const Http::RequestHeaderMap& headers) PURE;\n  virtual void onHandshakeResponse(const Http::ResponseHeaderMap& headers) PURE;\n  virtual void onHandshakeResponseSent(const Http::ResponseHeaderMap& headers) PURE;\n};\n\nclass Codec : Logger::Loggable<Logger::Id::filter> {\npublic:\n  Codec(CodecCallbacks* parent, Network::Connection& conn);\n\n  void handshake();\n  void encode(Buffer::Instance&, bool end_stream);\n  void decode(Buffer::Instance&, bool end_stream);\n\nprivate:\n  class Encoder : Logger::Loggable<Logger::Id::filter> {\n  public:\n    Encoder(Codec& parent) : parent_(parent) {}\n\n    void encode(Buffer::Instance&, bool end_stream, uint8_t opcode);\n\n    size_t hasData() { return encoded_.length() > 0; }\n    Buffer::Instance& data() { return encoded_; }\n    bool endStream() { return end_stream_; }\n    void drain() { encoded_.drain(encoded_.length()); }\n\n    Codec& parent_;\n    bool end_stream_{false};\n    Buffer::OwnedImpl encoded_; // Buffer for encoded websocket frames\n  };\n\n  class Decoder : Logger::Loggable<Logger::Id::filter> {\n  public:\n    Decoder(Codec& parent) : parent_(parent) {}\n\n    void decode(Buffer::Instance& data, bool end_stream);\n\n    size_t hasData() { return decoded_.length() > 0; }\n    Buffer::Instance& data() { return decoded_; }\n    bool endStream() { return end_stream_; }\n    void drain() { decoded_.drain(decoded_.length()); }\n\n    Codec& parent_;\n    bool end_stream_{false};\n    Buffer::OwnedImpl buffer_;  // Buffer for partial websocket frames\n    Buffer::OwnedImpl decoded_; // Buffer for decoded websocket frames\n\n    bool unmasking_{false};\n    uint8_t mask_[4];\n    size_t payload_offset_{0};\n    size_t payload_remaining_{0};\n  };\n\n  void startPingTimer();\n  void resetPingTimer() {\n    if (ping_timer_ != nullptr) {\n      auto config = parent_->config();\n      if (config->ping_when_idle_) {\n        ping_timer_->enableTimer(config->ping_interval_);\n      }\n    }\n  }\n\n  bool ping(const void* payload, size_t len);\n  bool pong(const void* payload, size_t len);\n\n  static Network::Address::InstanceConstSharedPtr\n  decodeHandshakeRequest(const ConfigSharedPtr& config, const Http::RequestHeaderMap& headers);\n  static void encodeHandshakeResponse(Http::ResponseHeaderMap& headers, uint32_t status,\n                                      absl::string_view hash,\n                                      const Http::RequestHeaderMap* request_headers);\n\n  const ConfigSharedPtr& config() { return parent_->config(); };\n\n  static bool checkPrefix(Buffer::Instance& data, const std::string& prefix);\n\n  void closeOnError(const char* msg);\n  void closeOnError(Buffer::Instance& data, const char* msg);\n\n  CodecCallbacks* parent_;\n  Network::Connection& connection_;\n  Encoder encoder_;\n  Decoder decoder_;\n\n  Event::TimerPtr ping_timer_{nullptr};\n  uint32_t ping_interval_jitter_percent_{15};\n  uint64_t ping_count_{0};\n\n  Event::TimerPtr handshake_timer_{nullptr};\n  Buffer::OwnedImpl handshake_buffer_;\n  bool accepted_{false};\n};\nusing CodecPtr = std::unique_ptr<Codec>;\n\n} // namespace WebSocket\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/websocket_config.cc",
    "content": "#include \"cilium/websocket_config.h\"\n\n#include <openssl/digest.h>\n#include <openssl/sha.h>\n\n#include <chrono>\n#include <cstdint>\n#include <string>\n#include <vector>\n\n#include \"envoy/buffer/buffer.h\"\n#include \"envoy/common/exception.h\"\n#include \"envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.pb.h\"\n#include \"envoy/extensions/request_id/uuid/v3/uuid.pb.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/stats/stats_macros.h\"\n\n#include \"source/common/buffer/buffer_impl.h\"\n#include \"source/common/common/assert.h\"\n#include \"source/common/common/base64.h\"\n#include \"source/common/http/request_id_extension_impl.h\"\n#include \"source/common/protobuf/utility.h\"\n\n#include \"absl/strings/ascii.h\"\n#include \"absl/strings/string_view.h\"\n#include \"cilium/accesslog.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"cilium/api/websocket.pb.h\"\n#include \"cilium/websocket_protocol.h\"\n\nnamespace Envoy {\nnamespace Cilium {\nnamespace WebSocket {\n\nstd::vector<uint8_t> Config::getSha1Digest(const Buffer::Instance& buffer) {\n  std::vector<uint8_t> digest(SHA_DIGEST_LENGTH);\n  bssl::ScopedEVP_MD_CTX ctx;\n  auto rc = EVP_DigestInit(ctx.get(), EVP_sha1());\n  RELEASE_ASSERT(rc == 1, \"Failed to init digest context\");\n  for (const auto& slice : buffer.getRawSlices()) {\n    rc = EVP_DigestUpdate(ctx.get(), slice.mem_, slice.len_);\n    RELEASE_ASSERT(rc == 1, \"Failed to update digest\");\n  }\n  rc = EVP_DigestFinal(ctx.get(), digest.data(), nullptr);\n  RELEASE_ASSERT(rc == 1, \"Failed to finalize digest\");\n  return digest;\n}\n\nConfig::Config(Server::Configuration::FactoryContext& context, bool client,\n               const std::string& access_log_path, const std::string& host, const std::string& path,\n               const std::string& key, const std::string& version, const std::string& origin,\n               const Protobuf::Duration& handshake_timeout, const Protobuf::Duration& ping_interval,\n               bool ping_when_idle)\n    : time_source_(context.serverFactoryContext().timeSource()),\n      dispatcher_(context.serverFactoryContext().mainThreadDispatcher()),\n      stats_{ALL_WEBSOCKET_STATS(POOL_COUNTER_PREFIX(context.scope(), \"websocket\"))},\n      random_(context.serverFactoryContext().api().randomGenerator()), client_(client),\n      host_(absl::AsciiStrToLower(host)), path_(absl::AsciiStrToLower(path)), key_(key),\n      version_(absl::AsciiStrToLower(version)), origin_(absl::AsciiStrToLower(origin)),\n      handshake_timeout_(std::chrono::seconds(5)), ping_interval_(std::chrono::milliseconds(0)),\n      ping_when_idle_(ping_when_idle), access_log_(nullptr) {\n  envoy::extensions::filters::network::http_connection_manager::v3::RequestIDExtension x_rid_config;\n  x_rid_config.mutable_typed_config()->PackFrom(\n      envoy::extensions::request_id::uuid::v3::UuidRequestIdConfig());\n  auto extension_or_error = Http::RequestIDExtensionFactory::fromProto(x_rid_config, context);\n  THROW_IF_NOT_OK_REF(extension_or_error.status());\n  request_id_extension_ = extension_or_error.value();\n\n  // Base64 encode the given/expected key, if any.\n  if (!key_.empty()) {\n    key_ = Base64::encode(key_.data(), key_.length());\n  }\n\n  if (!access_log_path.empty()) {\n    access_log_ = AccessLog::open(access_log_path, time_source_);\n  }\n\n  const uint64_t timeout = DurationUtil::durationToMilliseconds(handshake_timeout);\n  if (timeout > 0) {\n    handshake_timeout_ = std::chrono::milliseconds(timeout);\n  }\n\n  const uint64_t interval = DurationUtil::durationToMilliseconds(ping_interval);\n  if (interval > 0) {\n    ping_interval_ = std::chrono::milliseconds(interval);\n  } else if (ping_when_idle_) {\n    throw EnvoyException(\n        \"cilium.network.websocket: ping_when_idle requires ping_interval to be set.\");\n  }\n}\n\nConfig::Config(const ::cilium::WebSocketClient& config,\n               Server::Configuration::FactoryContext& context)\n    : Config(context, true /* client */, config.access_log_path(), config.host(), config.path(),\n             config.key(), config.version(), config.origin(), config.handshake_timeout(),\n             config.ping_interval(), config.ping_when_idle()) {\n  // Client defaults\n  if (host_.empty()) {\n    throw EnvoyException(\"cilium.network.websocket.client: host must be non-empty.\");\n  }\n\n  if (path_.empty()) {\n    path_ = \"/\";\n  }\n  if (version_.empty()) {\n    version_ = \"13\";\n  }\n  if (key_.empty()) {\n    uint64_t random[2]; // 16 bytes\n    for (unsigned long& i : random) {\n      i = random_.random();\n    }\n    key_ = Base64::encode(reinterpret_cast<char*>(random), sizeof(random));\n  }\n}\n\nConfig::Config(const ::cilium::WebSocketServer& config,\n               Server::Configuration::FactoryContext& context)\n    : Config(context, false /* server */, config.access_log_path(), config.host(), config.path(),\n             config.key(), config.version(), config.origin(), config.handshake_timeout(),\n             config.ping_interval(), config.ping_when_idle()) {}\n\n// Compute expected key response\nstd::string Config::keyResponse(absl::string_view key) {\n  Buffer::OwnedImpl buf(key.data(), key.length());\n  buf.add(WEBSOCKET_GUID);\n  auto sha1 = getSha1Digest(buf);\n  return Base64::encode(reinterpret_cast<char*>(sha1.data()), sha1.size());\n}\n\nvoid Config::log(AccessLog::Entry& entry, ::cilium::EntryType type) {\n  if (access_log_) {\n    access_log_->log(entry, type);\n  }\n}\n\n} // namespace WebSocket\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/websocket_config.h",
    "content": "#pragma once\n\n#include <chrono>\n#include <cstdint>\n#include <memory>\n#include <string>\n#include <vector>\n\n#include \"envoy/buffer/buffer.h\"\n#include \"envoy/common/random_generator.h\"\n#include \"envoy/common/time.h\"\n#include \"envoy/event/dispatcher.h\"\n#include \"envoy/http/request_id_extension.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/stats/stats_macros.h\" // IWYU pragma: keep\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/protobuf/protobuf.h\" // IWYU pragma: keep\n\n#include \"absl/strings/string_view.h\"\n#include \"cilium/accesslog.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"cilium/api/websocket.pb.h\"\n\nnamespace Envoy {\nnamespace Cilium {\nnamespace WebSocket {\n\n/**\n * All WebSocket filter stats. @see stats_macros.h\n */\n// clang-format off\n#define ALL_WEBSOCKET_STATS(COUNTER)\t\t\\\n  COUNTER(access_denied)\t\t\t\\\n  COUNTER(protocol_error)\t\t\t\\\n  COUNTER(handshake_timeout)\t\t\t\\\n  COUNTER(handshake_not_http)\t\t\t\\\n  COUNTER(handshake_too_large)\t\t\t\\\n  COUNTER(handshake_parse_error)      \t\t\\\n  COUNTER(handshake_invalid_http_version)\t\\\n  COUNTER(handshake_invalid_http_status)\t\\\n  COUNTER(handshake_invalid_websocket_request)\t\\\n  COUNTER(handshake_invalid_websocket_response)\t\\\n  COUNTER(handshake_write_error)\t\t\\\n  COUNTER(ping_sent_count)                                                                                \\\n// clang-format on\n\n/**\n * Struct definition for all WebSocket filter stats. @see stats_macros.h\n */\nstruct FilterStats {\n  ALL_WEBSOCKET_STATS(GENERATE_COUNTER_STRUCT)\n};\n\n/**\n * Per listener configuration for Cilium HTTP filter. This\n * is accessed by multiple working thread instances of the filter.\n */\nclass Config : public Logger::Loggable<Logger::Id::config> {\npublic:\n  Config(Server::Configuration::FactoryContext& context, bool client,\n         const std::string& access_log_path, const std::string& host, const std::string& path,\n         const std::string& key, const std::string& version, const std::string& origin,\n         const Protobuf::Duration& handshake_timeout, const Protobuf::Duration& ping_interval,\n         bool ping_when_idle);\n  Config(const ::cilium::WebSocketClient& config, Server::Configuration::FactoryContext& context);\n  Config(const ::cilium::WebSocketServer& config, Server::Configuration::FactoryContext& context);\n\n  static std::string keyResponse(absl::string_view key);\n\n  void log(Cilium::AccessLog::Entry&, ::cilium::EntryType);\n\n  TimeSource& time_source_;\n  Event::Dispatcher& dispatcher_;\n  FilterStats stats_;\n  Random::RandomGenerator& random_;\n  Http::RequestIDExtensionSharedPtr request_id_extension_;\n  bool client_;\n\n  std::string host_;\n  std::string path_;\n  std::string key_;\n  std::string version_;\n  std::string origin_;\n  std::chrono::milliseconds handshake_timeout_;\n  std::chrono::milliseconds ping_interval_;\n  bool ping_when_idle_;\n\n  static std::vector<uint8_t> getSha1Digest(const Buffer::Instance&);\n\nprivate:\n  Cilium::AccessLogSharedPtr access_log_;\n};\n\nusing ConfigSharedPtr = std::shared_ptr<Config>;\n\n} // namespace WebSocket\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "cilium/websocket_protocol.h",
    "content": "#pragma once\n\n// NOLINT(namespace-envoy)\n\n// Some sensible limits to protect against excess resource use\n#define WEBSOCKET_HANDSHAKE_MAX_SIZE 4096\n#define WEBSOCKET_CONTROL_FRAME_MAX_SIZE 256\n\n/* Ref. RFC 6455 */\n\n#define WEBSOCKET_GUID \"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\"\n/*\n    0                   1                   2                   3\n    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n   +-+-+-+-+-------+-+-------------+-------------------------------+\n   |F|R|R|R| opcode|M| Payload len |    Extended payload length    |\n   |I|S|S|S|  (4)  |A|     (7)     |             (16/64)           |\n   |N|V|V|V|       |S|             |   (if payload len==126/127)   |\n   | |1|2|3|       |K|             |                               |\n   +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +\n   |     Extended payload length continued, if payload len == 127  |\n   + - - - - - - - - - - - - - - - +-------------------------------+\n   |                               |Masking-key, if MASK set to 1  |\n   +-------------------------------+-------------------------------+\n   | Masking-key (continued)       |          Payload Data         |\n   +-------------------------------- - - - - - - - - - - - - - - - +\n   :                     Payload Data continued ... :\n   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +\n   |                     Payload Data continued ... |\n   +---------------------------------------------------------------+\n*/\n\n#define FIN_MASK 0x80\n#define OPCODE_MASK 0x0F\n#define MASK_MASK 0x80\n#define PAYLOAD_LEN_MASK 0x7F\n\n/*\n Opcode:  4 bits\n\n    Defines the interpretation of the \"Payload data\". If an unknown\n    opcode is received, the receiving endpoint MUST _Fail the\n    WebSocket Connection_. The following values are defined.\n\n    *  %x0 denotes a continuation frame\n\n    *  %x1 denotes a text frame\n\n    *  %x2 denotes a binary frame\n\n    *  %x3-7 are reserved for further non-control frames\n\n    *  %x8 denotes a connection close\n\n    *  %x9 denotes a ping\n\n    *  %xA denotes a pong\n\n    *  %xB-F are reserved for further control frames\n    */\n#define OPCODE_CONTINUE 0\n#define OPCODE_TEXT 1\n#define OPCODE_BIN 2\n#define OPCODE_CLOSE 8\n#define OPCODE_PING 9\n#define OPCODE_PONG 10\n"
  },
  {
    "path": "envoy.bazelrc",
    "content": "#############################################################################\n# startup\n#############################################################################\n\n# Bazel doesn't need more than 200MB of memory for local build based on memory profiling:\n# https://docs.bazel.build/versions/master/skylark/performance.html#memory-profiling\n# The default JVM max heapsize is 1/4 of physical memory up to 32GB which could be large\n# enough to consume all memory constrained by cgroup in large host.\n# Limiting JVM heapsize here to let it do GC more when approaching the limit to\n# leave room for compiler/linker.\n# The number 3G is chosen heuristically to both support large VM and small VM with RBE.\n# Startup options cannot be selected via config.\n# TODO: Adding just to test android\nstartup --host_jvm_args=-Xmx3g\nstartup --host_jvm_args=\"-DBAZEL_TRACK_SOURCE_DIRECTORIES=1\"\n\n\n#############################################################################\n# global\n#############################################################################\n\ncommon --noenable_bzlmod\n\nfetch --color=yes\nrun --color=yes\n\nbuild --color=yes\nbuild --jobs=HOST_CPUS-1\nbuild --workspace_status_command=\"bash bazel/get_workspace_status\"\nbuild --incompatible_strict_action_env\nbuild --java_runtime_version=remotejdk_11\nbuild --tool_java_runtime_version=remotejdk_11\nbuild --java_language_version=11\nbuild --tool_java_language_version=11\n# silence absl logspam.\nbuild --copt=-DABSL_MIN_LOG_LEVEL=4\n# Global C++ standard and common warning suppressions\nbuild --cxxopt=-std=c++20 --host_cxxopt=-std=c++20\nbuild --copt=-Wno-deprecated-declarations\nbuild --define envoy_mobile_listener=enabled\nbuild --experimental_repository_downloader_retries=2\nbuild --experimental_cc_static_library\nbuild --enable_platform_specific_config\nbuild --incompatible_merge_fixed_and_default_shell_env\n# A workaround for slow ICU download.\nbuild --http_timeout_scaling=6.0\n\n# Allow stamped caches to bust when local filesystem changes.\n# Requires setting `BAZEL_VOLATILE_DIRTY` in the env.\nbuild --action_env=BAZEL_VOLATILE_DIRTY --host_action_env=BAZEL_VOLATILE_DIRTY\n\nbuild --test_summary=terse\n\n# TODO(keith): Remove once these 2 are the default\nbuild --incompatible_config_setting_private_default_visibility\nbuild --incompatible_enforce_config_setting_visibility\n\ntest --test_verbose_timeout_warnings\ntest --experimental_ui_max_stdouterr_bytes=11712829 #default 1048576\n\n# Allow tags to influence execution requirements\ncommon --experimental_allow_tags_propagation\n\n# Python\ncommon --@rules_python//python/config_settings:bootstrap_impl=script\nbuild --incompatible_default_to_explicit_init_py\n\n# We already have absl in the build, define absl=1 to tell googletest to use absl for backtrace.\nbuild --define absl=1\n\n# Disable ICU linking for googleurl.\nbuild --@googleurl//build_config:system_icu=0\n\n# Test options\nbuild --test_env=HEAPCHECK=normal --test_env=PPROF_PATH\n\n# Coverage options\ncoverage --config=coverage\ncoverage --build_tests_only\n\n# Specifies the rustfmt.toml for all rustfmt_test targets.\nbuild --@rules_rust//rust/settings:rustfmt.toml=@envoy//:rustfmt.toml\n\n\n#############################################################################\n# os\n#############################################################################\n\nbuild:linux --copt=-fdebug-types-section\n# Enable position independent code (this is the default on macOS and Windows)\n# (Workaround for https://github.com/bazelbuild/rules_foreign_cc/issues/421)\nbuild:linux --copt=-fPIC\nbuild:linux --cxxopt=-fsized-deallocation --host_cxxopt=-fsized-deallocation\nbuild:linux --conlyopt=-fexceptions\nbuild:linux --fission=dbg,opt\nbuild:linux --features=per_object_debug_info\n\n# macOS\nbuild:macos --action_env=PATH=/opt/homebrew/bin:/opt/local/bin:/usr/local/bin:/usr/bin:/bin\nbuild:macos --host_action_env=PATH=/opt/homebrew/bin:/opt/local/bin:/usr/local/bin:/usr/bin:/bin\nbuild:macos --define tcmalloc=disabled\nbuild:macos --cxxopt=-Wno-nullability-completeness\nbuild:macos --@toolchains_llvm//toolchain/config:compiler-rt=false\nbuild:macos --@toolchains_llvm//toolchain/config:libunwind=false\n\n\n#############################################################################\n# compiler\n#############################################################################\n\n# Common flags for Clang (shared between all clang variants)\ncommon:clang-common --linkopt=-fuse-ld=lld\ncommon:clang-common --@toolchains_llvm//toolchain/config:compiler-rt=false\ncommon:clang-common --@toolchains_llvm//toolchain/config:libunwind=false\n\n# Clang with libc++ (default)\ncommon:clang --config=clang-common\ncommon:clang --config=libc++\ncommon:clang --host_platform=@clang_platform\ncommon:clang --repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1\n\n# Clang installed to non-standard location (ie not /opt/llvm/)\ncommon:clang-local --config=clang-common\ncommon:clang-local --config=libc++\n\n# Use gold linker for gcc compiler.\nbuild:gcc --config=libstdc++\nbuild:gcc --test_env=HEAPCHECK=\nbuild:gcc --action_env=BAZEL_COMPILER=gcc\nbuild:gcc --action_env=CC=gcc --action_env=CXX=g++\n# This is to work around a bug in GCC that makes debug-types-section\n# option not play well with fission:\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110885\nbuild:gcc --copt=-fno-debug-types-section\n# These trigger errors in multiple places both in Envoy dependecies\n# and in Envoy code itself when using GCC.\n# And in all cases the reports appear to be clear false positives.\nbuild:gcc --copt=-Wno-error=restrict\nbuild:gcc --copt=-Wno-error=uninitialized\nbuild:gcc --cxxopt=-Wno-missing-requires\nbuild:gcc --cxxopt=-Wno-dangling-reference\nbuild:gcc --cxxopt=-Wno-nonnull-compare\nbuild:gcc --cxxopt=-Wno-trigraphs\nbuild:gcc --linkopt=-fuse-ld=gold --host_linkopt=-fuse-ld=gold\nbuild:gcc --host_platform=@envoy//bazel/rbe/toolchains:rbe_linux_gcc_platform\nbuild:gcc --linkopt=-fuse-ld=gold --host_linkopt=-fuse-ld=gold\nbuild:gcc --action_env=BAZEL_LINKOPTS=-lm:-fuse-ld=gold\n\n# libc++ - default for clang\ncommon:libc++ --action_env=CXXFLAGS=-stdlib=libc++\ncommon:libc++ --action_env=LDFLAGS=\"-stdlib=libc++ -fuse-ld=lld\"\ncommon:libc++ --action_env=BAZEL_CXXOPTS=-stdlib=libc++\ncommon:libc++ --action_env=BAZEL_LINKLIBS=-l%:libc++.a:-l%:libc++abi.a\ncommon:libc++ --action_env=BAZEL_LINKOPTS=-lm:-pthread\ncommon:libc++ --define force_libcpp=enabled\ncommon:libc++ --@envoy//bazel:libc++=true\n\n# libstdc++ - currently only used for gcc\nbuild:libstdc++ --action_env=BAZEL_LINKLIBS=-l%:libstdc++.a\nbuild:libstdc++ --@envoy//bazel:libc++=false\nbuild:libstdc++ --@envoy//bazel:libstdc++=true\n\n\n#############################################################################\n# tests\n#############################################################################\n\n# Coverage\nbuild:coverage --action_env=BAZEL_USE_LLVM_NATIVE_COVERAGE=1\nbuild:coverage --action_env=GCOV=llvm-profdata\nbuild:coverage --copt=-DNDEBUG\n# 1.5x original timeout + 300s for trace merger in all categories\nbuild:coverage --test_timeout=390,750,1500,5700\nbuild:coverage --define=ENVOY_CONFIG_COVERAGE=1\nbuild:coverage --cxxopt=\"-DENVOY_CONFIG_COVERAGE=1\"\nbuild:coverage --test_env=HEAPCHECK=\nbuild:coverage --combined_report=lcov\nbuild:coverage --strategy=TestRunner=remote,sandboxed,local\nbuild:coverage --strategy=CoverageReport=sandboxed,local\nbuild:coverage --experimental_use_llvm_covmap\nbuild:coverage --experimental_generate_llvm_lcov\nbuild:coverage --experimental_split_coverage_postprocessing\nbuild:coverage --experimental_fetch_all_coverage_outputs\nbuild:coverage --collect_code_coverage\nbuild:coverage --instrumentation_filter=\"^//source(?!/common/quic/platform)[/:],^//envoy[/:],^//contrib(?!/.*/test)[/:]\"\nbuild:coverage --remote_download_minimal\nbuild:coverage --define=tcmalloc=gperftools\nbuild:coverage --define=no_debug_info=1\n# `--no-relax` is required for coverage to not err with `relocation R_X86_64_REX_GOTPCRELX`\nbuild:coverage --linkopt=-Wl,-s,--no-relax\nbuild:coverage --test_env=ENVOY_IP_TEST_VERSIONS=v4only\nbuild:coverage --define=dynamic_link_tests=false\n# Use custom report generator that also generates HTML\nbuild:coverage --coverage_report_generator=@envoy//tools/coverage:report_generator\n\nbuild:test-coverage --test_arg=\"-l trace\"\nbuild:test-coverage --test_arg=\"--log-path /dev/null\"\nbuild:test-coverage --test_tag_filters=-nocoverage,-fuzz_target\n\n## Compile-time-options testing\n# Right now, none of the available compile-time options conflict with each other. If this\n# changes, this build type may need to be broken up.\nbuild:compile-time-options --define=admin_html=disabled\nbuild:compile-time-options --define=signal_trace=disabled\nbuild:compile-time-options --define=hot_restart=disabled\nbuild:compile-time-options --define=google_grpc=disabled\nbuild:compile-time-options --define=boringssl=fips\nbuild:compile-time-options --define=log_debug_assert_in_release=enabled\nbuild:compile-time-options --define=path_normalization_by_default=true\nbuild:compile-time-options --define=deprecated_features=disabled\nbuild:compile-time-options --define=tcmalloc=gperftools\nbuild:compile-time-options --define=zlib=ng\nbuild:compile-time-options --define=uhv=enabled\n# gRPC has a lot of deprecated-enum-enum-conversion warnings with C++20\nbuild:compile-time-options --copt=-Wno-error=deprecated-enum-enum-conversion\nbuild:compile-time-options --test_env=ENVOY_HAS_EXTRA_EXTENSIONS=true\nbuild:compile-time-options --@envoy//bazel:http3=False\nbuild:compile-time-options --@envoy//source/extensions/filters/http/kill_request:enabled\n\n\n#############################################################################\n# sanitizers\n#############################################################################\n\n# Common flags for sanitizers\nbuild:sanitizer --define tcmalloc=disabled\nbuild:sanitizer --linkopt -ldl\ntest:sanitizer --build_tests_only\n\n# ASAN config with clang runtime\nbuild:asan --config=asan-common\nbuild:asan --linkopt --rtlib=compiler-rt\nbuild:asan --linkopt --unwindlib=libgcc\nbuild:asan --linkopt=-l:libclang_rt.ubsan_standalone.a\nbuild:asan --linkopt=-l:libclang_rt.ubsan_standalone_cxx.a\nbuild:asan --action_env=ENVOY_UBSAN_VPTR=1\nbuild:asan --copt=-fsanitize=vptr,function\nbuild:asan --linkopt=-fsanitize=vptr,function\nbuild:asan --linkopt='-L/opt/llvm/lib/clang/18/lib/x86_64-unknown-linux-gnu'\n\n# Basic ASAN/UBSAN that works for gcc or llvm\nbuild:asan-common --config=sanitizer\n# ASAN install its signal handler, disable ours so the stacktrace will be printed by ASAN\nbuild:asan-common --define signal_trace=disabled\nbuild:asan-common --define ENVOY_CONFIG_ASAN=1\nbuild:asan-common --build_tag_filters=-no_san\nbuild:asan-common --test_tag_filters=-no_san\nbuild:asan-common --copt -fsanitize=address,undefined\nbuild:asan-common --linkopt -fsanitize=address,undefined\n# vptr and function sanitizer are enabled in asan if it is set up via bazel/setup_clang.sh.\nbuild:asan-common --copt -fno-sanitize=vptr,function\nbuild:asan-common --linkopt -fno-sanitize=vptr,function\nbuild:asan-common --copt -DADDRESS_SANITIZER=1\nbuild:asan-common --copt -DUNDEFINED_SANITIZER=1\nbuild:asan-common --copt -D__SANITIZE_ADDRESS__\nbuild:asan-common --test_env=ASAN_OPTIONS=handle_abort=1:allow_addr2line=true:check_initialization_order=true:strict_init_order=true:detect_odr_violation=1\nbuild:asan-common --test_env=UBSAN_OPTIONS=halt_on_error=true:print_stacktrace=1\nbuild:asan-common --test_env=ASAN_SYMBOLIZER_PATH\n# ASAN needs -O1 to get reasonable performance.\nbuild:asan-common --copt -O1\nbuild:asan-common --copt -fno-optimize-sibling-calls\n\n# macOS ASAN/UBSAN\nbuild:macos-asan --config=asan\n# Workaround, see https://github.com/bazelbuild/bazel/issues/6932\nbuild:macos-asan --copt -Wno-macro-redefined\nbuild:macos-asan --copt -D_FORTIFY_SOURCE=0\n# Workaround, see https://github.com/bazelbuild/bazel/issues/4341\nbuild:macos-asan --copt -DGRPC_BAZEL_BUILD\n# Dynamic link cause issues like: `dyld: malformed mach-o: load commands size (59272) > 32768`\nbuild:macos-asan --dynamic_mode=off\n\n# Base MSAN config\nbuild:msan --action_env=ENVOY_MSAN=1\nbuild:msan --config=sanitizer\nbuild:msan --build_tag_filters=-no_san\nbuild:msan --test_tag_filters=-no_san\nbuild:msan --define ENVOY_CONFIG_MSAN=1\nbuild:msan --copt -fsanitize=memory\nbuild:msan --linkopt -fsanitize=memory\nbuild:msan --copt -fsanitize-memory-track-origins=2\nbuild:msan --copt -DMEMORY_SANITIZER=1\nbuild:msan --test_env=MSAN_SYMBOLIZER_PATH\n# MSAN needs -O1 to get reasonable performance.\nbuild:msan --copt -O1\nbuild:msan --copt -fno-optimize-sibling-calls\n\n# Base TSAN config\nbuild:tsan --action_env=ENVOY_TSAN=1\nbuild:tsan --config=sanitizer\nbuild:tsan --define ENVOY_CONFIG_TSAN=1\nbuild:tsan --copt -fsanitize=thread\nbuild:tsan --linkopt -fsanitize=thread\nbuild:tsan --copt -DTHREAD_SANITIZER=1\nbuild:tsan --build_tag_filters=-no_san,-no_tsan\nbuild:tsan --test_tag_filters=-no_san,-no_tsan\n# Needed due to https://github.com/libevent/libevent/issues/777\nbuild:tsan --copt -DEVENT__DISABLE_DEBUG_MODE\n# https://github.com/abseil/abseil-cpp/issues/760\n# https://github.com/google/sanitizers/issues/953\nbuild:tsan --test_env=\"TSAN_OPTIONS=report_atomic_races=0\"\nbuild:tsan --test_timeout=120,600,1500,4800\n\n\n#############################################################################\n# fuzzing\n#############################################################################\n\n## Fuzz builds\n# Shared fuzzing configuration.\nbuild:fuzzing --define=ENVOY_CONFIG_ASAN=1\nbuild:fuzzing --copt=-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION\n\n# ASAN fuzzer\nbuild:asan-fuzzer --config=plain-fuzzer\nbuild:asan-fuzzer --config=asan\nbuild:asan-fuzzer --copt=-fno-omit-frame-pointer\n# Remove UBSAN halt_on_error to avoid crashing on protobuf errors.\nbuild:asan-fuzzer --test_env=UBSAN_OPTIONS=print_stacktrace=1\nbuild:asan-fuzzer --linkopt=-lc++\n\nbuild:fuzz-coverage --config=plain-fuzzer\nbuild:fuzz-coverage --run_under=@envoy//bazel/coverage:fuzz_coverage_wrapper.sh\nbuild:fuzz-coverage --test_tag_filters=-nocoverage\n# Existing fuzz tests don't need a full WASM runtime and in generally we don't really want to\n# fuzz dependencies anyways. On the other hand, disabling WASM reduces the build time and\n# resources required to build and run the tests.\nbuild:fuzz-coverage --define=wasm=disabled\nbuild:fuzz-coverage --config=fuzz-coverage-config\nbuild:fuzz-coverage-config --//tools/coverage:config=@envoy//test:fuzz_coverage_config\n\nbuild:oss-fuzz --config=fuzzing\nbuild:oss-fuzz --config=libc++\nbuild:oss-fuzz --define=FUZZING_ENGINE=oss-fuzz\nbuild:oss-fuzz --@rules_fuzzing//fuzzing:cc_engine_instrumentation=oss-fuzz\nbuild:oss-fuzz --@rules_fuzzing//fuzzing:cc_engine_sanitizer=none\nbuild:oss-fuzz --dynamic_mode=off\nbuild:oss-fuzz --strip=never\nbuild:oss-fuzz --copt=-fno-sanitize=vptr\nbuild:oss-fuzz --linkopt=-fno-sanitize=vptr\nbuild:oss-fuzz --define=tcmalloc=disabled\nbuild:oss-fuzz --define=signal_trace=disabled\nbuild:oss-fuzz --copt=-D_LIBCPP_DISABLE_DEPRECATION_WARNINGS\nbuild:oss-fuzz --define=force_libcpp=enabled\nbuild:oss-fuzz --linkopt=-lc++\nbuild:oss-fuzz --linkopt=-pthread\n\n# Fuzzing without ASAN. This is useful for profiling fuzzers without any ASAN artifacts.\nbuild:plain-fuzzer --config=fuzzing\nbuild:plain-fuzzer --define=FUZZING_ENGINE=libfuzzer\n# The fuzzing rules provide their own instrumentation, but it is currently\n# disabled due to bazelbuild/bazel#12888. Instead, we provide instrumentation at\n# the top level through these options.\nbuild:plain-fuzzer --copt=-fsanitize=fuzzer-no-link\nbuild:plain-fuzzer --linkopt=-fsanitize=fuzzer-no-link\n\n\n#############################################################################\n# miscellaneous\n#############################################################################\n\nbuild:cache-local --remote_cache=grpc://localhost:9092\n\n# Flags for Clang + PCH\nbuild:clang-pch --spawn_strategy=local\nbuild:clang-pch --define=ENVOY_CLANG_PCH=1\n\n# Clang-tidy\nbuild:clang-tidy --@envoy_toolshed//format/clang_tidy:executable=@envoy//tools/clang-tidy\nbuild:clang-tidy --@envoy_toolshed//format/clang_tidy:config=//:clang_tidy_config\nbuild:clang-tidy --aspects @envoy_toolshed//format/clang_tidy:clang_tidy.bzl%clang_tidy_aspect\nbuild:clang-tidy --output_groups=report\nbuild:clang-tidy --build_tag_filters=-notidy\n\n# Compile database generation config\nbuild:compdb --build_tag_filters=-nocompdb\n\ncommon:cves --//tools/dependency:cve-data=//tools/dependency:cve-data-dir\n\nbuild:docs-ci --action_env=DOCS_RST_CHECK=1 --host_action_env=DOCS_RST_CHECK=1\n\n# Optimize build for binary size reduction.\nbuild:sizeopt -c opt --copt -Os\n\n\n#############################################################################\n# remote: Setup for cache, BES, RBE, and Docker workers\n#############################################################################\n\nbuild:remote --spawn_strategy=remote,sandboxed,local\nbuild:remote --strategy=Javac=remote,sandboxed,local\nbuild:remote --strategy=Closure=remote,sandboxed,local\nbuild:remote --strategy=Genrule=remote,sandboxed,local\nbuild:remote --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1\n# This flag may be more generally useful - it sets foreign_cc builds -jauto.\n# It is only set here because if it were the default it risks OOMing on local builds.\nbuild:remote --@envoy//bazel/foreign_cc:parallel_builds\n\n## RBE (Engflow Envoy)\n\n# this is not included in the `--config=rbe` target - set it to publish to engflow ui\ncommon:bes --bes_backend=grpcs://mordenite.cluster.engflow.com/\ncommon:bes --bes_results_url=https://mordenite.cluster.engflow.com/invocation/\ncommon:bes --bes_timeout=3600s\ncommon:bes --bes_upload_mode=fully_async\ncommon:bes --nolegacy_important_outputs\n\ncommon:engflow-common --google_default_credentials=false\ncommon:engflow-common --credential_helper=*.engflow.com=%workspace%/bazel/engflow-bazel-credential-helper.sh\ncommon:engflow-common --grpc_keepalive_time=60s\ncommon:engflow-common --grpc_keepalive_timeout=30s\ncommon:engflow-common --remote_cache_compression\n\n# this provides access to RBE+cache\ncommon:rbe --config=remote-cache\ncommon:rbe --config=remote-exec\n\n# this provides access to just cache\ncommon:remote-cache --config=engflow-common\ncommon:remote-cache --remote_cache=grpcs://mordenite.cluster.engflow.com\ncommon:remote-cache --remote_timeout=3600s\n\ncommon:remote-exec --remote_executor=grpcs://mordenite.cluster.engflow.com\ncommon:remote-exec --jobs=200\ncommon:remote-exec --define=engflow_rbe=true\n\n# Docker sandboxes\nbuild:docker-sandbox --spawn_strategy=docker\nbuild:docker-sandbox --strategy=Javac=docker\nbuild:docker-sandbox --strategy=Closure=docker\nbuild:docker-sandbox --strategy=Genrule=docker\nbuild:docker-sandbox --define=EXECUTOR=remote\nbuild:docker-sandbox --experimental_docker_verbose\nbuild:docker-sandbox --experimental_enable_docker_sandbox\n\nbuild:docker-clang --config=docker-sandbox\nbuild:docker-clang --config=clang\n\nbuild:docker-gcc --config=docker-sandbox\nbuild:docker-gcc --config=gcc\n\nbuild:docker-asan --config=docker-sandbox\nbuild:docker-asan --config=clang\nbuild:docker-asan --config=asan\n\nbuild:docker-msan --config=docker-sandbox\nbuild:docker-msan --config=clang\nbuild:docker-msan --config=msan\n\nbuild:docker-tsan --config=docker-sandbox\nbuild:docker-tsan --config=clang\nbuild:docker-tsan --config=tsan\n\n\n#############################################################################\n# ci\n#############################################################################\n\n# CI configurations\nbuild:remote-ci --config=ci\nbuild:remote-ci --remote_download_minimal\n\n# Note this config is used by mobile CI also.\ncommon:ci --noshow_progress\ncommon:ci --noshow_loading_progress\ncommon:ci --test_output=errors\n\n\n#############################################################################\n# debug: Various Bazel debugging flags\n#############################################################################\n# debug/bazel\ncommon:debug-bazel --announce_rc\ncommon:debug-bazel -s\n# debug/sandbox\ncommon:debug-sandbox --verbose_failures\ncommon:debug-sandbox --sandbox_debug\n# debug/coverage\ncommon:debug-coverage --action_env=VERBOSE_COVERAGE=true\ncommon:debug-coverage --test_env=VERBOSE_COVERAGE=true\ncommon:debug-coverage --test_env=DISPLAY_LCOV_CMD=true\ncommon:debug-coverage --config=debug-tests\n# debug/tests\ncommon:debug-tests --test_output=all\n# debug/everything\ncommon:debug --config=debug-bazel\ncommon:debug --config=debug-sandbox\ncommon:debug --config=debug-coverage\ncommon:debug --config=debug-tests\n\ntry-import %workspace%/repo.bazelrc\ntry-import %workspace%/clang.bazelrc\ntry-import %workspace%/user.bazelrc\ntry-import %workspace%/local_tsan.bazelrc\n"
  },
  {
    "path": "envoy_binary_test.sh",
    "content": "#!/bin/bash\n#\n\nset -e\n\n# Just test that the binary was produced and can be executed.\n# envoy --help will give a success return code if working.\ncilium-envoy --help\n\necho \"PASS\"\n"
  },
  {
    "path": "envoy_build_config/BUILD",
    "content": "licenses([\"notice\"])  # Apache 2\n"
  },
  {
    "path": "envoy_build_config/WORKSPACE",
    "content": "workspace(name = \"envoy_build_config\")\n"
  },
  {
    "path": "envoy_build_config/extensions_build_config.bzl",
    "content": "# See bazel/README.md for details on how this system works.\nEXTENSIONS = {\n    #\n    # Access loggers\n    #\n    \"envoy.access_loggers.file\": \"//source/extensions/access_loggers/file:config\",\n    \"envoy.access_loggers.extension_filters.cel\": \"//source/extensions/access_loggers/filters/cel:config\",\n    # \"envoy.access_loggers.extension_filters.process_ratelimit\": \"//source/extensions/access_loggers/filters/process_ratelimit:config\",\n    \"envoy.access_loggers.http_grpc\": \"//source/extensions/access_loggers/grpc:http_config\",\n    \"envoy.access_loggers.fluentd\": \"//source/extensions/access_loggers/fluentd:config\",\n    # \"envoy.access_loggers.dynamic_modules\":             \"//source/extensions/access_loggers/dynamic_modules:config\",\n    \"envoy.access_loggers.tcp_grpc\": \"//source/extensions/access_loggers/grpc:tcp_config\",\n    \"envoy.access_loggers.open_telemetry\": \"//source/extensions/access_loggers/open_telemetry:config\",\n    # \"envoy.access_loggers.stats\":                       \"//source/extensions/access_loggers/stats:config\",\n    \"envoy.access_loggers.stdout\": \"//source/extensions/access_loggers/stream:config\",\n    \"envoy.access_loggers.stderr\": \"//source/extensions/access_loggers/stream:config\",\n    \"envoy.access_loggers.wasm\": \"//source/extensions/access_loggers/wasm:config\",\n\n    #\n    # Clusters\n    #\n\n    # \"envoy.clusters.aggregate\":                         \"//source/extensions/clusters/aggregate:cluster\",\n    # \"envoy.clusters.composite\":                         \"//source/extensions/clusters/composite:cluster\",\n    \"envoy.clusters.dns\": \"//source/extensions/clusters/dns:dns_cluster_lib\",\n    \"envoy.clusters.dynamic_forward_proxy\": \"//source/extensions/clusters/dynamic_forward_proxy:cluster\",\n    \"envoy.clusters.eds\": \"//source/extensions/clusters/eds:eds_lib\",\n    # \"envoy.clusters.redis\":                             \"//source/extensions/clusters/redis:redis_cluster\",\n    \"envoy.clusters.static\": \"//source/extensions/clusters/static:static_cluster_lib\",\n    \"envoy.clusters.strict_dns\": \"//source/extensions/clusters/strict_dns:strict_dns_cluster_lib\",\n    \"envoy.clusters.original_dst\": \"//source/extensions/clusters/original_dst:original_dst_cluster_lib\",\n    \"envoy.clusters.logical_dns\": \"//source/extensions/clusters/logical_dns:logical_dns_cluster_lib\",\n    # \"envoy.clusters.reverse_connection\":                \"//source/extensions/clusters/reverse_connection:reverse_connection_lib\",\n\n    #\n    # Compression\n    #\n\n    \"envoy.compression.gzip.compressor\":                \"//source/extensions/compression/gzip/compressor:config\",\n    \"envoy.compression.gzip.decompressor\":              \"//source/extensions/compression/gzip/decompressor:config\",\n    \"envoy.compression.brotli.compressor\":              \"//source/extensions/compression/brotli/compressor:config\",\n    \"envoy.compression.brotli.decompressor\":            \"//source/extensions/compression/brotli/decompressor:config\",\n    \"envoy.compression.zstd.compressor\":                \"//source/extensions/compression/zstd/compressor:config\",\n    \"envoy.compression.zstd.decompressor\":              \"//source/extensions/compression/zstd/decompressor:config\",\n\n    #\n    # Config validators\n    #\n\n    # \"envoy.config.validators.minimum_clusters_validator\":     \"//source/extensions/config/validators/minimum_clusters:config\",\n\n    #\n    # gRPC Credentials Plugins\n    #\n\n    # \"envoy.grpc_credentials.file_based_metadata\":       \"//source/extensions/grpc_credentials/file_based_metadata:config\",\n\n    #\n    # WASM\n    #\n    \"envoy.bootstrap.wasm\": \"//source/extensions/bootstrap/wasm:config\",\n    # \"envoy.bootstrap.dynamic_modules\":                  \"//source/extensions/bootstrap/dynamic_modules:config\",\n\n    #\n    # Reverse Connection\n    #\n\n    # \"envoy.bootstrap.reverse_tunnel.downstream_socket_interface\": \"//source/extensions/bootstrap/reverse_tunnel/downstream_socket_interface:reverse_tunnel_initiator_lib\",\n    # \"envoy.bootstrap.reverse_tunnel.upstream_socket_interface\": \"//source/extensions/bootstrap/reverse_tunnel/upstream_socket_interface:reverse_tunnel_acceptor_lib\",\n\n    #\n    # Health checkers\n    #\n    \"envoy.health_checkers.redis\": \"//source/extensions/health_checkers/redis:config\",\n    \"envoy.health_checkers.thrift\": \"//source/extensions/health_checkers/thrift:config\",\n    \"envoy.health_checkers.tcp\": \"//source/extensions/health_checkers/tcp:health_checker_lib\",\n    \"envoy.health_checkers.http\": \"//source/extensions/health_checkers/http:health_checker_lib\",\n    \"envoy.health_checkers.grpc\": \"//source/extensions/health_checkers/grpc:health_checker_lib\",\n\n    #\n    # Health check event sinks\n    #\n    \"envoy.health_check.event_sinks.file\": \"//source/extensions/health_check/event_sinks/file:file_sink_lib\",\n\n    #\n    # Input Matchers\n    #\n\n    # \"envoy.matching.matchers.consistent_hashing\":       \"//source/extensions/matching/input_matchers/consistent_hashing:config\",\n    # \"envoy.matching.matchers.ip\":                       \"//source/extensions/matching/input_matchers/ip:config\",\n    # \"envoy.matching.matchers.runtime_fraction\":         \"//source/extensions/matching/input_matchers/runtime_fraction:config\",\n    # \"envoy.matching.matchers.cel_matcher\":              \"//source/extensions/matching/input_matchers/cel_matcher:config\",\n    # \"envoy.matching.matchers.metadata_matcher\":         \"//source/extensions/matching/input_matchers/metadata:config\",\n\n    #\n    # Network Matchers\n    #\n\n    # \"envoy.matching.inputs.application_protocol\":       \"//source/extensions/matching/network/application_protocol:config\",\n    # Ideally these would be split up. We'll do so if anyone cares.\n    # \"envoy.matching.inputs.destination_ip\":             \"//source/extensions/matching/network/common:inputs_lib\",\n    # \"envoy.matching.inputs.destination_port\":           \"//source/extensions/matching/network/common:inputs_lib\",\n    # \"envoy.matching.inputs.source_ip\":                  \"//source/extensions/matching/network/common:inputs_lib\",\n    # \"envoy.matching.inputs.source_port\":                \"//source/extensions/matching/network/common:inputs_lib\",\n    # \"envoy.matching.inputs.direct_source_ip\":           \"//source/extensions/matching/network/common:inputs_lib\",\n    # \"envoy.matching.inputs.source_type\":                \"//source/extensions/matching/network/common:inputs_lib\",\n    # \"envoy.matching.inputs.server_name\":                \"//source/extensions/matching/network/common:inputs_lib\",\n    # \"envoy.matching.inputs.network_namespace\":          \"//source/extensions/matching/network/common:inputs_lib\",\n    # \"envoy.matching.inputs.transport_protocol\":         \"//source/extensions/matching/network/common:inputs_lib\",\n    # \"envoy.matching.inputs.filter_state\":               \"//source/extensions/matching/network/common:inputs_lib\",\n\n    #\n    # Generic Inputs\n    #\n\n    # \"envoy.matching.common_inputs.environment_variable\":       \"//source/extensions/matching/common_inputs/environment_variable:config\",\n\n    #\n    # CEL Matching Input\n    #\n    # \"envoy.matching.inputs.cel_data_input\":             \"//source/extensions/matching/http/cel_input:cel_input_lib\",\n\n    #\n    # Dynamic Metadata Matching Input\n    #\n    # \"envoy.matching.inputs.dynamic_metadata\":           \"//source/extensions/matching/http/metadata_input:metadata_input_lib\",\n\n    #\n    # Transport Socket Matching Inputs\n    #\n    # \"envoy.matching.inputs.endpoint_metadata\":     \"//source/extensions/matching/common_inputs/transport_socket:config\",\n    # \"envoy.matching.inputs.locality_metadata\":     \"//source/extensions/matching/common_inputs/transport_socket:config\",\n    # \"envoy.matching.inputs.transport_socket_filter_state\": \"//source/extensions/matching/common_inputs/transport_socket:config\",\n\n    #\n    # Matching actions\n    #\n\n    # \"envoy.matching.actions.format_string\":             \"//source/extensions/matching/actions/format_string:config\",\n    # \"envoy.matching.action.transport_socket.name\":      \"//source/extensions/matching/common_inputs/transport_socket:config\",\n\n    #\n    # StringMatchers\n    #\n    # \"envoy.string_matcher.lua\":                         \"//source/extensions/string_matcher/lua:config\",\n\n    #\n    # HTTP filters\n    #\n\n    # \"envoy.filters.http.adaptive_concurrency\":          \"//source/extensions/filters/http/adaptive_concurrency:config\",\n    # \"envoy.filters.http.admission_control\":             \"//source/extensions/filters/http/admission_control:config\",\n    # \"envoy.filters.http.alternate_protocols_cache\":     \"//source/extensions/filters/http/alternate_protocols_cache:config\",\n    # \"envoy.filters.http.api_key_auth\":                  \"//source/extensions/filters/http/api_key_auth:config\",\n    # \"envoy.filters.http.aws_lambda\":                    \"//source/extensions/filters/http/aws_lambda:config\",\n    # \"envoy.filters.http.aws_request_signing\":           \"//source/extensions/filters/http/aws_request_signing:config\",\n    # \"envoy.filters.http.bandwidth_limit\":               \"//source/extensions/filters/http/bandwidth_limit:config\",\n    \"envoy.filters.http.basic_auth\": \"//source/extensions/filters/http/basic_auth:config\",\n    \"envoy.filters.http.buffer\": \"//source/extensions/filters/http/buffer:config\",\n    # \"envoy.filters.http.cache\":                         \"//source/extensions/filters/http/cache:config\",\n    # \"envoy.filters.http.cache_v2\":                      \"//source/extensions/filters/http/cache_v2:config\",\n    # \"envoy.filters.http.cdn_loop\":                      \"//source/extensions/filters/http/cdn_loop:config\",\n    \"envoy.filters.http.compressor\":                    \"//source/extensions/filters/http/compressor:config\",\n    \"envoy.filters.http.cors\":                          \"//source/extensions/filters/http/cors:config\",\n    # \"envoy.filters.http.composite\":                     \"//source/extensions/filters/http/composite:config\",\n    # \"envoy.filters.http.connect_grpc_bridge\":           \"//source/extensions/filters/http/connect_grpc_bridge:config\",\n    # \"envoy.filters.http.credential_injector\":           \"//source/extensions/filters/http/credential_injector:config\",\n    # \"envoy.filters.http.csrf\":                          \"//source/extensions/filters/http/csrf:config\",\n    # \"envoy.filters.http.custom_response\":               \"//source/extensions/filters/http/custom_response:factory\",\n    # \"envoy.filters.http.decompressor\":                  \"//source/extensions/filters/http/decompressor:config\",\n    \"envoy.filters.http.dynamic_forward_proxy\": \"//source/extensions/filters/http/dynamic_forward_proxy:config\",\n    \"envoy.filters.http.ext_authz\": \"//source/extensions/filters/http/ext_authz:config\",\n    # \"envoy.filters.network.ext_proc\":                   \"//source/extensions/filters/network/ext_proc:config\",\n    # \"envoy.filters.network.reverse_tunnel\":                       \"//source/extensions/filters/network/reverse_tunnel:config\",\n    \"envoy.filters.http.ext_proc\":                      \"//source/extensions/filters/http/ext_proc:config\",\n    # \"envoy.filters.http.fault\":                         \"//source/extensions/filters/http/fault:config\",\n    # \"envoy.filters.http.file_system_buffer\":            \"//source/extensions/filters/http/file_system_buffer:config\",\n    # \"envoy.filters.http.gcp_authn\":                     \"//source/extensions/filters/http/gcp_authn:config\",\n    # \"envoy.filters.http.geoip\":                         \"//source/extensions/filters/http/geoip:config\",\n    # \"envoy.filters.http.geoip\":                     \"//source/extensions/filters/http/geoip:config\",\n    # \"envoy.filters.http.grpc_field_extraction\":         \"//source/extensions/filters/http/grpc_field_extraction:config\",\n    # \"envoy.filters.http.grpc_http1_bridge\":             \"//source/extensions/filters/http/grpc_http1_bridge:config\",\n    # \"envoy.filters.http.grpc_http1_reverse_bridge\":     \"//source/extensions/filters/http/grpc_http1_reverse_bridge:config\",\n    # \"envoy.filters.http.grpc_json_transcoder\":          \"//source/extensions/filters/http/grpc_json_transcoder:config\",\n    # \"envoy.filters.http.grpc_json_reverse_transcoder\":  \"//source/extensions/filters/http/grpc_json_reverse_transcoder:config\",\n    \"envoy.filters.http.grpc_stats\": \"//source/extensions/filters/http/grpc_stats:config\",\n    \"envoy.filters.http.grpc_web\": \"//source/extensions/filters/http/grpc_web:config\",\n    # \"envoy.filters.http.header_to_metadata\":            \"//source/extensions/filters/http/header_to_metadata:config\",\n    \"envoy.filters.http.health_check\": \"//source/extensions/filters/http/health_check:config\",\n    # \"envoy.filters.http.ip_tagging\":                    \"//source/extensions/filters/http/ip_tagging:config\",\n    # \"envoy.filters.http.json_to_metadata\":              \"//source/extensions/filters/http/json_to_metadata:config\",\n    \"envoy.filters.http.jwt_authn\": \"//source/extensions/filters/http/jwt_authn:config\",\n    # \"envoy.filters.http.mcp\":                           \"//source/extensions/filters/http/mcp:config\",\n    # \"envoy.filters.http.mcp_router\":                    \"//source/extensions/filters/http/mcp_router:config\",\n    \"envoy.filters.http.rate_limit_quota\": \"//source/extensions/filters/http/rate_limit_quota:config\",\n    # Disabled by default. kill_request is not built into most prebuilt images.\n    # For instructions for building with disabled-by-default filters enabled, see\n    # https://github.com/envoyproxy/envoy/blob/main/bazel/README.md#enabling-and-disabling-extensions\n    # \"envoy.filters.http.kill_request\":                  \"//source/extensions/filters/http/kill_request:kill_request_config\",\n    \"envoy.filters.http.local_ratelimit\": \"//source/extensions/filters/http/local_ratelimit:config\",\n    # \"envoy.filters.http.lua\":                           \"//source/extensions/filters/http/lua:config\",\n    \"envoy.filters.http.oauth2\": \"//source/extensions/filters/http/oauth2:config\",\n    # \"envoy.filters.http.on_demand\":                     \"//source/extensions/filters/http/on_demand:config\",\n    # \"envoy.filters.http.original_src\":                  \"//source/extensions/filters/http/original_src:config\",\n    # \"envoy.filters.http.proto_message_extraction\":       \"//source/extensions/filters/http/proto_message_extraction:config\",\n    # \"envoy.filters.http.proto_api_scrubber\":            \"//source/extensions/filters/http/proto_api_scrubber:config\",\n    \"envoy.filters.http.ratelimit\": \"//source/extensions/filters/http/ratelimit:config\",\n    \"envoy.filters.http.rbac\": \"//source/extensions/filters/http/rbac:config\",\n    \"envoy.filters.http.router\": \"//source/extensions/filters/http/router:config\",\n    \"envoy.filters.http.set_filter_state\": \"//source/extensions/filters/http/set_filter_state:config\",\n    \"envoy.filters.http.set_metadata\": \"//source/extensions/filters/http/set_metadata:config\",\n    # \"envoy.filters.http.tap\":                           \"//source/extensions/filters/http/tap:config\",\n    # \"envoy.filters.http.thrift_to_metadata\":            \"//source/extensions/filters/http/thrift_to_metadata:config\",\n    \"envoy.filters.http.wasm\": \"//source/extensions/filters/http/wasm:config\",\n    # \"envoy.filters.http.stateful_session\":              \"//source/extensions/filters/http/stateful_session:config\",\n    # \"envoy.filters.http.header_mutation\":               \"//source/extensions/filters/http/header_mutation:config\",\n    # \"envoy.filters.http.transform\":                     \"//source/extensions/filters/http/transform:config\",\n\n    #\n    # Listener filters\n    #\n    \"envoy.filters.listener.http_inspector\": \"//source/extensions/filters/listener/http_inspector:config\",\n    \"envoy.filters.listener.local_ratelimit\": \"//source/extensions/filters/listener/local_ratelimit:config\",\n    # NOTE: The original_dst filter is implicitly loaded if original_dst functionality is\n    #       configured on the listener. Do not remove it in that case or configs will fail to load.\n    # \"envoy.filters.listener.original_dst\":              \"//source/extensions/filters/listener/original_dst:config\",\n    # \"envoy.filters.listener.original_src\":              \"//source/extensions/filters/listener/original_src:config\",\n    # NOTE: The proxy_protocol filter is implicitly loaded if proxy_protocol functionality is\n    #       configured on the listener. Do not remove it in that case or configs will fail to load.\n    \"envoy.filters.listener.proxy_protocol\": \"//source/extensions/filters/listener/proxy_protocol:config\",\n    \"envoy.filters.listener.tls_inspector\": \"//source/extensions/filters/listener/tls_inspector:config\",\n    # \"envoy.filters.listener.dynamic_modules\":           \"//source/extensions/filters/listener/dynamic_modules:config\",\n    # \"envoy.filters.udp_listener.dynamic_modules\":       \"//source/extensions/filters/udp/dynamic_modules:config\",\n\n    #\n    # Network filters\n    #\n\n    # \"envoy.filters.network.client_ssl_auth\":                      \"//contrib/client_ssl_auth/filters/network/source:config\",\n    \"envoy.filters.network.connection_limit\": \"//source/extensions/filters/network/connection_limit:config\",\n    # \"envoy.filters.network.direct_response\":                      \"//source/extensions/filters/network/direct_response:config\",\n    # \"envoy.filters.network.dubbo_proxy\":                          \"//source/extensions/filters/network/dubbo_proxy:config\",\n    # \"envoy.filters.network.dynamic_modules\":                      \"//source/extensions/filters/network/dynamic_modules:config\",\n    # \"envoy.filters.network.dubbo_proxy\":                          \"//source/extensions/filters/network/dubbo_proxy:config\",\n    # \"envoy.filters.network.echo\":                                 \"//source/extensions/filters/network/echo:config\",\n    \"envoy.filters.network.ext_authz\": \"//source/extensions/filters/network/ext_authz:config\",\n    \"envoy.filters.network.http_connection_manager\": \"//source/extensions/filters/network/http_connection_manager:config\",\n    \"envoy.filters.network.local_ratelimit\": \"//source/extensions/filters/network/local_ratelimit:config\",\n    \"envoy.filters.network.mongo_proxy\": \"//source/extensions/filters/network/mongo_proxy:config\",\n    \"envoy.filters.network.mysql_proxy\": \"//contrib/mysql_proxy/filters/network/source:config\",\n    \"envoy.filters.network.ratelimit\": \"//source/extensions/filters/network/ratelimit:config\",\n    \"envoy.filters.network.rbac\": \"//source/extensions/filters/network/rbac:config\",\n    # \"envoy.filters.network.redis_proxy\":                          \"//source/extensions/filters/network/redis_proxy:config\",\n    \"envoy.filters.network.tcp_proxy\": \"//source/extensions/filters/network/tcp_proxy:config\",\n    # \"envoy.filters.network.thrift_proxy\":                         \"//source/extensions/filters/network/thrift_proxy:config\",\n    \"envoy.filters.network.set_filter_state\": \"//source/extensions/filters/network/set_filter_state:config\",\n    # \"envoy.filters.network.geoip\":                                \"//source/extensions/filters/network/geoip:config\",\n    \"envoy.filters.network.sni_cluster\": \"//source/extensions/filters/network/sni_cluster:config\",\n    \"envoy.filters.network.sni_dynamic_forward_proxy\": \"//source/extensions/filters/network/sni_dynamic_forward_proxy:config\",\n    \"envoy.filters.network.wasm\": \"//source/extensions/filters/network/wasm:config\",\n    # \"envoy.filters.network.zookeeper_proxy\":                      \"//source/extensions/filters/network/zookeeper_proxy:config\",\n    # \"envoy.filters.network.generic_proxy\":                        \"//source/extensions/filters/network/generic_proxy:config\",\n\n    #\n    # UDP filters\n    #\n\n    # \"envoy.filters.udp.dns_filter\":                     \"//source/extensions/filters/udp/dns_filter:config\",\n    \"envoy.filters.udp_listener.udp_proxy\":             \"//source/extensions/filters/udp/udp_proxy:config\",\n\n    #\n    # UDP Session filters\n    #\n\n    \"envoy.filters.udp.session.http_capsule\":           \"//source/extensions/filters/udp/udp_proxy/session_filters/http_capsule:config\",\n    \"envoy.filters.udp.session.dynamic_forward_proxy\":  \"//source/extensions/filters/udp/udp_proxy/session_filters/dynamic_forward_proxy:config\",\n\n    #\n    # Resource monitors\n    #\n\n    # \"envoy.resource_monitors.fixed_heap\":               \"//source/extensions/resource_monitors/fixed_heap:config\",\n    # \"envoy.resource_monitors.injected_resource\":        \"//source/extensions/resource_monitors/injected_resource:config\",\n    \"envoy.resource_monitors.global_downstream_max_connections\": \"//source/extensions/resource_monitors/downstream_connections:config\",\n    \"envoy.resource_monitors.cpu_utilization\": \"//source/extensions/resource_monitors/cpu_utilization:config\",\n    \"envoy.resource_monitors.cgroup_memory\": \"//source/extensions/resource_monitors/cgroup_memory:config\",\n\n    #\n    # Stat sinks\n    #\n\n    # \"envoy.stat_sinks.dog_statsd\":                      \"//source/extensions/stat_sinks/dog_statsd:config\",\n    # \"envoy.stat_sinks.graphite_statsd\":                 \"//source/extensions/stat_sinks/graphite_statsd:config\",\n    # \"envoy.stat_sinks.hystrix\":                         \"//source/extensions/stat_sinks/hystrix:config\",\n    \"envoy.stat_sinks.metrics_service\": \"//source/extensions/stat_sinks/metrics_service:config\",\n    \"envoy.stat_sinks.open_telemetry\": \"//source/extensions/stat_sinks/open_telemetry:config\",\n    # \"envoy.stat_sinks.statsd\":                          \"//source/extensions/stat_sinks/statsd:config\",\n    \"envoy.stat_sinks.wasm\": \"//source/extensions/stat_sinks/wasm:config\",\n\n    #\n    # Thrift filters\n    #\n\n    # \"envoy.filters.thrift.router\":                      \"//source/extensions/filters/network/thrift_proxy/router:config\",\n    # \"envoy.filters.thrift.header_to_metadata\":          \"//source/extensions/filters/network/thrift_proxy/filters/header_to_metadata:config\",\n    # \"envoy.filters.thrift.payload_to_metadata\":         \"//source/extensions/filters/network/thrift_proxy/filters/payload_to_metadata:config\",\n    # \"envoy.filters.thrift.rate_limit\":                  \"//source/extensions/filters/network/thrift_proxy/filters/ratelimit:config\",\n\n    #\n    # Tracers\n    #\n\n    # \"envoy.tracers.datadog\":                            \"//source/extensions/tracers/datadog:config\",\n    # \"envoy.tracers.zipkin\":                             \"//source/extensions/tracers/zipkin:config\",\n    # \"envoy.tracers.xray\":                               \"//source/extensions/tracers/xray:config\",\n    # \"envoy.tracers.skywalking\":                         \"//source/extensions/tracers/skywalking:config\",\n    # \"envoy.tracers.opentelemetry\":                      \"//source/extensions/tracers/opentelemetry:config\",\n    # \"envoy.tracers.fluentd\":                            \"//source/extensions/tracers/fluentd:config\",\n\n    #\n    # OpenTelemetry Resource Detectors\n    #\n\n    # \"envoy.tracers.opentelemetry.resource_detectors.environment\":         \"//source/extensions/tracers/opentelemetry/resource_detectors/environment:config\",\n    # \"envoy.tracers.opentelemetry.resource_detectors.dynatrace\":           \"//source/extensions/tracers/opentelemetry/resource_detectors/dynatrace:config\",\n    # \"envoy.tracers.opentelemetry.resource_detectors.static_config\":       \"//source/extensions/tracers/opentelemetry/resource_detectors/static:config\",\n\n    #\n    # OpenTelemetry tracer samplers\n    #\n\n    # \"envoy.tracers.opentelemetry.samplers.cel\":                           \"//source/extensions/tracers/opentelemetry/samplers/cel:config\",\n    # \"envoy.tracers.opentelemetry.samplers.always_on\":                     \"//source/extensions/tracers/opentelemetry/samplers/always_on:config\",\n    # \"envoy.tracers.opentelemetry.samplers.dynatrace\":                     \"//source/extensions/tracers/opentelemetry/samplers/dynatrace:config\",\n    # \"envoy.tracers.opentelemetry.samplers.parent_based\":                  \"//source/extensions/tracers/opentelemetry/samplers/parent_based:config\",\n    # \"envoy.tracers.opentelemetry.samplers.trace_id_ratio_based\":          \"//source/extensions/tracers/opentelemetry/samplers/trace_id_ratio_based:config\",\n\n    #\n    # Transport sockets\n    #\n\n    # \"envoy.transport_sockets.alts\":                     \"//source/extensions/transport_sockets/alts:config\",\n    # \"envoy.transport_sockets.http_11_proxy\":            \"//source/extensions/transport_sockets/http_11_proxy:upstream_config\",\n    \"envoy.transport_sockets.upstream_proxy_protocol\": \"//source/extensions/transport_sockets/proxy_protocol:upstream_config\",\n    \"envoy.transport_sockets.raw_buffer\": \"//source/extensions/transport_sockets/raw_buffer:config\",\n    # \"envoy.transport_sockets.tap\":                      \"//source/extensions/transport_sockets/tap:config\",\n    # \"envoy.transport_sockets.starttls\":                 \"//source/extensions/transport_sockets/starttls:config\",\n    # \"envoy.transport_sockets.tcp_stats\":                \"//source/extensions/transport_sockets/tcp_stats:config\",\n    \"envoy.transport_sockets.tls\": \"//source/extensions/transport_sockets/tls:config\",\n    \"envoy.transport_sockets.internal_upstream\": \"//source/extensions/transport_sockets/internal_upstream:config\",\n\n    #\n    # Retry host predicates\n    #\n\n    # \"envoy.retry_host_predicates.previous_hosts\":       \"//source/extensions/retry/host/previous_hosts:config\",\n    # \"envoy.retry_host_predicates.omit_canary_hosts\":    \"//source/extensions/retry/host/omit_canary_hosts:config\",\n    # \"envoy.retry_host_predicates.omit_host_metadata\":   \"//source/extensions/retry/host/omit_host_metadata:config\",\n\n    #\n    # Retry priorities\n    #\n\n    # \"envoy.retry_priorities.previous_priorities\":       \"//source/extensions/retry/priority/previous_priorities:config\",\n\n    #\n    # CacheFilter plugins\n    #\n    # \"envoy.extensions.http.cache.file_system_http_cache\":    \"//source/extensions/http/cache/file_system_http_cache:config\",\n    # \"envoy.extensions.http.cache.simple\":                    \"//source/extensions/http/cache/simple_http_cache:config\",\n    # \"envoy.extensions.http.cache_v2.file_system_http_cache\": \"//source/extensions/http/cache_v2/file_system_http_cache:config\",\n    # \"envoy.extensions.http.cache_v2.simple\":                 \"//source/extensions/http/cache_v2/simple_http_cache:config\",\n\n    #\n    # Internal redirect predicates\n    #\n\n    # \"envoy.internal_redirect_predicates.allow_listed_routes\": \"//source/extensions/internal_redirect/allow_listed_routes:config\",\n    # \"envoy.internal_redirect_predicates.previous_routes\":     \"//source/extensions/internal_redirect/previous_routes:config\",\n    # \"envoy.internal_redirect_predicates.safe_cross_scheme\":   \"//source/extensions/internal_redirect/safe_cross_scheme:config\",\n\n    #\n    # Http Upstreams (excepting envoy.upstreams.http.generic which is hard-coded into the build so not registered here)\n    #\n    \"envoy.upstreams.http.http\": \"//source/extensions/upstreams/http/http:config\",\n    \"envoy.upstreams.http.tcp\": \"//source/extensions/upstreams/http/tcp:config\",\n    \"envoy.upstreams.http.udp\": \"//source/extensions/upstreams/http/udp:config\",\n\n    #\n    # Watchdog actions\n    #\n\n    # \"envoy.watchdog.profile_action\":                    \"//source/extensions/watchdog/profile_action:config\",\n\n    #\n    # WebAssembly runtimes\n    #\n    \"envoy.wasm.runtime.null\": \"//source/extensions/wasm_runtime/null:config\",\n    \"envoy.wasm.runtime.v8\": \"//source/extensions/wasm_runtime/v8:config\",\n    \"envoy.wasm.runtime.wamr\": \"//source/extensions/wasm_runtime/wamr:config\",\n    \"envoy.wasm.runtime.wasmtime\": \"//source/extensions/wasm_runtime/wasmtime:config\",\n\n    #\n    # Rate limit descriptors\n    #\n    \"envoy.rate_limit_descriptors.expr\": \"//source/extensions/rate_limit_descriptors/expr:config\",\n\n    #\n    # IO socket\n    #\n\n    # \"envoy.io_socket.user_space\":                       \"//source/extensions/io_socket/user_space:config\",\n    \"envoy.bootstrap.internal_listener\": \"//source/extensions/bootstrap/internal_listener:config\",\n\n    #\n    # TLS peer certification validators\n    #\n\n    # \"envoy.tls.cert_validator.spiffe\":                  \"//source/extensions/transport_sockets/tls/cert_validator/spiffe:config\",\n\n    #\n    # HTTP header formatters\n    #\n    \"envoy.http.stateful_header_formatters.preserve_case\": \"//source/extensions/http/header_formatters/preserve_case:config\",\n\n    #\n    # Original IP detection\n    #\n\n    # \"envoy.http.original_ip_detection.custom_header\":        \"//source/extensions/http/original_ip_detection/custom_header:config\",\n    # \"envoy.http.original_ip_detection.xff\":                  \"//source/extensions/http/original_ip_detection/xff:config\",\n\n    #\n    # Stateful session\n    #\n\n    # \"envoy.http.stateful_session.cookie\":                \"//source/extensions/http/stateful_session/cookie:config\",\n    # \"envoy.http.stateful_session.envelope\":              \"//source/extensions/http/stateful_session/envelope:config\",\n    # \"envoy.http.stateful_session.header\":                \"//source/extensions/http/stateful_session/header:config\",\n\n    #\n    # Custom response policies\n    #\n\n    # \"envoy.http.custom_response.redirect_policy\":             \"//source/extensions/http/custom_response/redirect_policy:redirect_policy_lib\",\n    # \"envoy.http.custom_response.local_response_policy\":       \"//source/extensions/http/custom_response/local_response_policy:local_response_policy_lib\",\n\n    #\n    # External Processing Request Modifiers\n    #\n    # \"envoy.http.ext_proc.processing_request_modifiers.mapped_attribute_builder\":         \"//source/extensions/http/ext_proc/processing_request_modifiers/mapped_attribute_builder:mapped_attribute_builder_lib\",\n\n    #\n    # External Processing Response Processors\n    #\n    # \"envoy.http.ext_proc.response_processors.save_processing_response\":         \"//source/extensions/http/ext_proc/response_processors/save_processing_response:save_processing_response_lib\",\n\n    #\n    # Injected credentials\n    #\n\n    # \"envoy.http.injected_credentials.generic\":              \"//source/extensions/http/injected_credentials/generic:config\",\n    # \"envoy.http.injected_credentials.oauth2\":               \"//source/extensions/http/injected_credentials/oauth2:config\",\n\n    #\n    # QUIC extensions\n    #\n\n    \"envoy.quic.deterministic_connection_id_generator\": \"//source/extensions/quic/connection_id_generator/deterministic:envoy_deterministic_connection_id_generator_config\",\n    \"envoy.quic.connection_id_generator.quic_lb\":       \"//source/extensions/quic/connection_id_generator/quic_lb:quic_lb_config\",\n    \"envoy.quic.crypto_stream.server.quiche\":           \"//source/extensions/quic/crypto_stream:envoy_quic_default_crypto_server_stream\",\n    \"envoy.quic.proof_source.filter_chain\":             \"//source/extensions/quic/proof_source:envoy_quic_default_proof_source\",\n    \"envoy.quic.server_preferred_address.fixed\":        \"//source/extensions/quic/server_preferred_address:fixed_server_preferred_address_config_factory_config\",\n    \"envoy.quic.server_preferred_address.datasource\":   \"//source/extensions/quic/server_preferred_address:datasource_server_preferred_address_config_factory_config\",\n    \"envoy.quic.connection_debug_visitor.basic\":        \"//source/extensions/quic/connection_debug_visitor/basic:envoy_quic_connection_debug_visitor_basic\",\n    \"envoy.quic.connection_debug_visitor.quic_stats\":   \"//source/extensions/quic/connection_debug_visitor/quic_stats:config\",\n    # \"envoy.quic.packet_writer.default\":                 \"//source/extensions/quic/client_packet_writer:default_quic_client_packet_writer_factory_config\",\n\n    #\n    # UDP packet writers\n    #\n    # \"envoy.udp_packet_writer.default\":                  \"//source/extensions/udp_packet_writer/default:config\",\n    # \"envoy.udp_packet_writer.gso\":                      \"//source/extensions/udp_packet_writer/gso:config\",\n\n    #\n    # Formatter\n    #\n\n    # \"envoy.formatter.cel\":                              \"//source/extensions/formatter/cel:config\",\n    # \"envoy.formatter.metadata\":                         \"//source/extensions/formatter/metadata:config\",\n    # \"envoy.formatter.req_without_query\":                \"//source/extensions/formatter/req_without_query:config\",\n    # \"envoy.built_in_formatters.xfcc_value\":             \"//source/extensions/formatter/xfcc_value:config\",\n\n    #\n    # Key value store\n    #\n\n    # \"envoy.key_value.file_based\":     \"//source/extensions/key_value/file_based:config_lib\",\n\n    #\n    # RBAC matchers\n    #\n\n    # \"envoy.rbac.matchers.upstream_ip_port\":     \"//source/extensions/filters/common/rbac/matchers:upstream_ip_port_lib\",\n\n    #\n    # RBAC principals\n    #\n\n    \"envoy.rbac.principals.mtls_authenticated\": \"//source/extensions/filters/common/rbac/principals/mtls_authenticated:config\",\n\n    #\n    # DNS Resolver\n    #\n\n    # c-ares DNS resolver extension is recommended to be enabled to maintain the legacy DNS resolving behavior.\n    \"envoy.network.dns_resolver.cares\": \"//source/extensions/network/dns_resolver/cares:config\",\n    # apple DNS resolver extension is only needed in MacOS build plus one want to use apple library for DNS resolving.\n    # \"envoy.network.dns_resolver.apple\":                \"//source/extensions/network/dns_resolver/apple:config\",\n    # getaddrinfo DNS resolver extension can be used when the system resolver is desired (e.g., Android)\n    # \"envoy.network.dns_resolver.getaddrinfo\":          \"//source/extensions/network/dns_resolver/getaddrinfo:config\",\n\n    #\n    # Address Resolvers\n    #\n\n    # \"envoy.resolvers.reverse_connection\":               \"//source/extensions/bootstrap/reverse_tunnel/downstream_socket_interface:reverse_connection_resolver_lib\",\n\n    #\n    # Custom matchers\n    #\n\n    # \"envoy.matching.custom_matchers.ip_range_matcher\":     \"//source/extensions/common/matcher:ip_range_matcher_lib\",\n    # \"envoy.matching.custom_matchers.domain_matcher\":   \"//source/extensions/common/matcher:domain_matcher_lib\",\n\n    #\n    # Header Validators\n    #\n\n    # \"envoy.http.header_validators.envoy_default\":        \"//source/extensions/http/header_validators/envoy_default:config\",\n\n    #\n    # Path Pattern Match and Path Pattern Rewrite\n    #\n    \"envoy.path.match.uri_template.uri_template_matcher\": \"//source/extensions/path/match/uri_template:config\",\n    \"envoy.path.rewrite.uri_template.uri_template_rewriter\": \"//source/extensions/path/rewrite/uri_template:config\",\n    #\n    # Early Data option\n    #\n    \"envoy.route.early_data_policy.default\": \"//source/extensions/early_data:default_early_data_policy_lib\",\n\n    #\n    # Load balancing policies for upstream\n    #\n    \"envoy.load_balancing_policies.least_request\": \"//source/extensions/load_balancing_policies/least_request:config\",\n    \"envoy.load_balancing_policies.random\": \"//source/extensions/load_balancing_policies/random:config\",\n    \"envoy.load_balancing_policies.round_robin\": \"//source/extensions/load_balancing_policies/round_robin:config\",\n    \"envoy.load_balancing_policies.maglev\": \"//source/extensions/load_balancing_policies/maglev:config\",\n    \"envoy.load_balancing_policies.ring_hash\": \"//source/extensions/load_balancing_policies/ring_hash:config\",\n    \"envoy.load_balancing_policies.subset\": \"//source/extensions/load_balancing_policies/subset:config\",\n    \"envoy.load_balancing_policies.cluster_provided\": \"//source/extensions/load_balancing_policies/cluster_provided:config\",\n    \"envoy.load_balancing_policies.client_side_weighted_round_robin\": \"//source/extensions/load_balancing_policies/client_side_weighted_round_robin:config\",\n    \"envoy.load_balancing_policies.override_host\":     \"//source/extensions/load_balancing_policies/override_host:config\",\n    # \"envoy.load_balancing_policies.wrr_locality\":      \"//source/extensions/load_balancing_policies/wrr_locality:config\",\n\n    #\n    # HTTP Early Header Mutation\n    #\n    \"envoy.http.early_header_mutation.header_mutation\": \"//source/extensions/http/early_header_mutation/header_mutation:config\",\n\n    #\n    # Config Subscription\n    #\n    # \"envoy.config_subscription.rest\": \"//source/extensions/config_subscription/rest:http_subscription_lib\",\n    \"envoy.config_subscription.filesystem\": \"//source/extensions/config_subscription/filesystem:filesystem_subscription_lib\",\n    # \"envoy.config_subscription.filesystem_collection\": \"//source/extensions/config_subscription/filesystem:filesystem_subscription_lib\",\n    \"envoy.config_subscription.grpc\": \"//source/extensions/config_subscription/grpc:grpc_subscription_lib\",\n    \"envoy.config_subscription.delta_grpc\": \"//source/extensions/config_subscription/grpc:grpc_subscription_lib\",\n    \"envoy.config_subscription.ads\": \"//source/extensions/config_subscription/grpc:grpc_subscription_lib\",\n    \"envoy.config_subscription.aggregated_grpc_collection\": \"//source/extensions/config_subscription/grpc:grpc_collection_subscription_lib\",\n    \"envoy.config_subscription.aggregated_delta_grpc_collection\": \"//source/extensions/config_subscription/grpc:grpc_collection_subscription_lib\",\n    \"envoy.config_subscription.ads_collection\": \"//source/extensions/config_subscription/grpc:grpc_collection_subscription_lib\",\n    \"envoy.config_mux.delta_grpc_mux_factory\": \"//source/extensions/config_subscription/grpc/xds_mux:grpc_mux_lib\",\n    \"envoy.config_mux.sotw_grpc_mux_factory\": \"//source/extensions/config_subscription/grpc/xds_mux:grpc_mux_lib\",\n\n    #\n    # Geolocation Provider\n    #\n    # \"envoy.geoip_providers.maxmind\":                         \"//source/extensions/geoip_providers/maxmind:config\",\n\n    #\n    # cluster specifier plugin\n    #\n\n    # \"envoy.router.cluster_specifier_plugin.lua\":     \"//source/extensions/router/cluster_specifiers/lua:config\",\n    # \"envoy.router.cluster_specifier_plugin.matcher\": \"//source/extensions/router/cluster_specifiers/matcher:config\",\n\n    #\n    # Extensions for generic proxy\n    #\n    \"envoy.filters.generic.router\": \"//source/extensions/filters/network/generic_proxy/router:config\",\n    \"envoy.generic_proxy.codecs.dubbo\": \"//source/extensions/filters/network/generic_proxy/codecs/dubbo:config\",\n    \"envoy.generic_proxy.codecs.http1\": \"//source/extensions/filters/network/generic_proxy/codecs/http1:config\",\n\n    # Dynamic modules\n    \"envoy.filters.http.dynamic_modules\":                      \"//source/extensions/filters/http/dynamic_modules:factory_registration\",\n\n    # Certificate selectors\n    # \"envoy.tls.certificate_selectors.on_demand_secret\":                  \"//source/extensions/transport_sockets/tls/cert_selectors/on_demand:config\",\n\n    # Certificate mappers\n    # \"envoy.tls.certificate_mappers.static_name\":                  \"//source/extensions/transport_sockets/tls/cert_mappers/static_name:config\",\n    # \"envoy.tls.certificate_mappers.sni\":                  \"//source/extensions/transport_sockets/tls/cert_mappers/sni:config\",\n\n    # Local address selectors\n    # \"envoy.upstream.local_address_selector.filter_state_override\": \"//source/extensions/local_address_selectors/filter_state_override:config\",\n}\n\n# These can be changed to [\"//visibility:public\"], for  downstream builds which\n# need to directly reference Envoy extensions.\nEXTENSION_CONFIG_VISIBILITY = [\"//visibility:public\"]\nEXTENSION_PACKAGE_VISIBILITY = [\"//visibility:public\"]\nCONTRIB_EXTENSION_PACKAGE_VISIBILITY = [\"//visibility:public\"]\n\n# We don't want to build for mobile, so just make the visibility private.\nMOBILE_PACKAGE_VISIBILITY = [\"//:mobile_library\"]\n\n# Set this variable to true to disable alwayslink for envoy_cc_library.\n# TODO(alyssawilk) audit uses of this in source/ and migrate all libraries to extensions.\nLEGACY_ALWAYSLINK = 1\n"
  },
  {
    "path": "go/README.md",
    "content": "# protoc-generated Go sources\n\nGo files herein are autogenerated with protoc, do not edit.\n"
  },
  {
    "path": "go/cilium/api/accesslog.go",
    "content": "// Copyright 2020 Authors of Cilium\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage cilium\n\n// Add an exported type alias for L7 log entry oneof, so that the Go code does\n// not need to know all the individual types\ntype IsLogEntry_L7 = isLogEntry_L7\n"
  },
  {
    "path": "go/cilium/api/accesslog.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.11\n// \tprotoc        v6.33.2\n// source: cilium/api/accesslog.proto\n\npackage cilium\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype HttpProtocol int32\n\nconst (\n\tHttpProtocol_HTTP10 HttpProtocol = 0\n\tHttpProtocol_HTTP11 HttpProtocol = 1\n\tHttpProtocol_HTTP2  HttpProtocol = 2\n)\n\n// Enum value maps for HttpProtocol.\nvar (\n\tHttpProtocol_name = map[int32]string{\n\t\t0: \"HTTP10\",\n\t\t1: \"HTTP11\",\n\t\t2: \"HTTP2\",\n\t}\n\tHttpProtocol_value = map[string]int32{\n\t\t\"HTTP10\": 0,\n\t\t\"HTTP11\": 1,\n\t\t\"HTTP2\":  2,\n\t}\n)\n\nfunc (x HttpProtocol) Enum() *HttpProtocol {\n\tp := new(HttpProtocol)\n\t*p = x\n\treturn p\n}\n\nfunc (x HttpProtocol) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (HttpProtocol) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_cilium_api_accesslog_proto_enumTypes[0].Descriptor()\n}\n\nfunc (HttpProtocol) Type() protoreflect.EnumType {\n\treturn &file_cilium_api_accesslog_proto_enumTypes[0]\n}\n\nfunc (x HttpProtocol) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use HttpProtocol.Descriptor instead.\nfunc (HttpProtocol) EnumDescriptor() ([]byte, []int) {\n\treturn file_cilium_api_accesslog_proto_rawDescGZIP(), []int{0}\n}\n\ntype EntryType int32\n\nconst (\n\tEntryType_Request  EntryType = 0\n\tEntryType_Response EntryType = 1\n\tEntryType_Denied   EntryType = 2\n)\n\n// Enum value maps for EntryType.\nvar (\n\tEntryType_name = map[int32]string{\n\t\t0: \"Request\",\n\t\t1: \"Response\",\n\t\t2: \"Denied\",\n\t}\n\tEntryType_value = map[string]int32{\n\t\t\"Request\":  0,\n\t\t\"Response\": 1,\n\t\t\"Denied\":   2,\n\t}\n)\n\nfunc (x EntryType) Enum() *EntryType {\n\tp := new(EntryType)\n\t*p = x\n\treturn p\n}\n\nfunc (x EntryType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (EntryType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_cilium_api_accesslog_proto_enumTypes[1].Descriptor()\n}\n\nfunc (EntryType) Type() protoreflect.EnumType {\n\treturn &file_cilium_api_accesslog_proto_enumTypes[1]\n}\n\nfunc (x EntryType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use EntryType.Descriptor instead.\nfunc (EntryType) EnumDescriptor() ([]byte, []int) {\n\treturn file_cilium_api_accesslog_proto_rawDescGZIP(), []int{1}\n}\n\ntype KeyValue struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tKey           string                 `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\tValue         string                 `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *KeyValue) Reset() {\n\t*x = KeyValue{}\n\tmi := &file_cilium_api_accesslog_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *KeyValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*KeyValue) ProtoMessage() {}\n\nfunc (x *KeyValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_accesslog_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use KeyValue.ProtoReflect.Descriptor instead.\nfunc (*KeyValue) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_accesslog_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *KeyValue) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\nfunc (x *KeyValue) GetValue() string {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn \"\"\n}\n\ntype HttpLogEntry struct {\n\tstate        protoimpl.MessageState `protogen:\"open.v1\"`\n\tHttpProtocol HttpProtocol           `protobuf:\"varint,1,opt,name=http_protocol,json=httpProtocol,proto3,enum=cilium.HttpProtocol\" json:\"http_protocol,omitempty\"`\n\t// Request info that is also retained for the response\n\tScheme string `protobuf:\"bytes,2,opt,name=scheme,proto3\" json:\"scheme,omitempty\"` // Envoy \"x-forwarded-proto\", e.g., \"http\", \"https\"\n\tHost   string `protobuf:\"bytes,3,opt,name=host,proto3\" json:\"host,omitempty\"`     // Envoy \":authority\" header\n\tPath   string `protobuf:\"bytes,4,opt,name=path,proto3\" json:\"path,omitempty\"`     // Envoy \":path\" header\n\tMethod string `protobuf:\"bytes,5,opt,name=method,proto3\" json:\"method,omitempty\"` // Envoy \":method\" header\n\t// Request or response headers not included above\n\tHeaders []*KeyValue `protobuf:\"bytes,6,rep,name=headers,proto3\" json:\"headers,omitempty\"`\n\t// Response info\n\tStatus uint32 `protobuf:\"varint,7,opt,name=status,proto3\" json:\"status,omitempty\"` // Envoy \":status\" header, zero for request\n\t// missing_headers includes both headers that were added to the\n\t// request, and headers that were merely logged as missing\n\tMissingHeaders []*KeyValue `protobuf:\"bytes,8,rep,name=missing_headers,json=missingHeaders,proto3\" json:\"missing_headers,omitempty\"`\n\t// rejected_headers includes headers that were flagged as unallowed,\n\t// which may have been removed, or merely logged and the request still\n\t// allowed, or the request may have been dropped due to them.\n\tRejectedHeaders []*KeyValue `protobuf:\"bytes,9,rep,name=rejected_headers,json=rejectedHeaders,proto3\" json:\"rejected_headers,omitempty\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *HttpLogEntry) Reset() {\n\t*x = HttpLogEntry{}\n\tmi := &file_cilium_api_accesslog_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpLogEntry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpLogEntry) ProtoMessage() {}\n\nfunc (x *HttpLogEntry) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_accesslog_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpLogEntry.ProtoReflect.Descriptor instead.\nfunc (*HttpLogEntry) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_accesslog_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *HttpLogEntry) GetHttpProtocol() HttpProtocol {\n\tif x != nil {\n\t\treturn x.HttpProtocol\n\t}\n\treturn HttpProtocol_HTTP10\n}\n\nfunc (x *HttpLogEntry) GetScheme() string {\n\tif x != nil {\n\t\treturn x.Scheme\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpLogEntry) GetHost() string {\n\tif x != nil {\n\t\treturn x.Host\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpLogEntry) GetPath() string {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpLogEntry) GetMethod() string {\n\tif x != nil {\n\t\treturn x.Method\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpLogEntry) GetHeaders() []*KeyValue {\n\tif x != nil {\n\t\treturn x.Headers\n\t}\n\treturn nil\n}\n\nfunc (x *HttpLogEntry) GetStatus() uint32 {\n\tif x != nil {\n\t\treturn x.Status\n\t}\n\treturn 0\n}\n\nfunc (x *HttpLogEntry) GetMissingHeaders() []*KeyValue {\n\tif x != nil {\n\t\treturn x.MissingHeaders\n\t}\n\treturn nil\n}\n\nfunc (x *HttpLogEntry) GetRejectedHeaders() []*KeyValue {\n\tif x != nil {\n\t\treturn x.RejectedHeaders\n\t}\n\treturn nil\n}\n\ntype KafkaLogEntry struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// correlation_id is a user-supplied integer value that will be passed\n\t// back with the response\n\tCorrelationId int32 `protobuf:\"varint,1,opt,name=correlation_id,json=correlationId,proto3\" json:\"correlation_id,omitempty\"`\n\t// error_code is the Kafka error code being returned\n\t// Ref. https://kafka.apache.org/protocol#protocol_error_codes\n\tErrorCode int32 `protobuf:\"varint,2,opt,name=error_code,json=errorCode,proto3\" json:\"error_code,omitempty\"`\n\t// api_version of the Kafka api used\n\t// Ref. https://kafka.apache.org/protocol#protocol_compatibility\n\tApiVersion int32 `protobuf:\"varint,3,opt,name=api_version,json=apiVersion,proto3\" json:\"api_version,omitempty\"`\n\t// api_key for Kafka message\n\t// Reference: https://kafka.apache.org/protocol#protocol_api_keys\n\tApiKey int32 `protobuf:\"varint,4,opt,name=api_key,json=apiKey,proto3\" json:\"api_key,omitempty\"`\n\t// Topics of the request\n\t// Optional, as not all messages have topics (ex. LeaveGroup, Heartbeat)\n\tTopics        []string `protobuf:\"bytes,5,rep,name=topics,proto3\" json:\"topics,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *KafkaLogEntry) Reset() {\n\t*x = KafkaLogEntry{}\n\tmi := &file_cilium_api_accesslog_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *KafkaLogEntry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*KafkaLogEntry) ProtoMessage() {}\n\nfunc (x *KafkaLogEntry) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_accesslog_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use KafkaLogEntry.ProtoReflect.Descriptor instead.\nfunc (*KafkaLogEntry) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_accesslog_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *KafkaLogEntry) GetCorrelationId() int32 {\n\tif x != nil {\n\t\treturn x.CorrelationId\n\t}\n\treturn 0\n}\n\nfunc (x *KafkaLogEntry) GetErrorCode() int32 {\n\tif x != nil {\n\t\treturn x.ErrorCode\n\t}\n\treturn 0\n}\n\nfunc (x *KafkaLogEntry) GetApiVersion() int32 {\n\tif x != nil {\n\t\treturn x.ApiVersion\n\t}\n\treturn 0\n}\n\nfunc (x *KafkaLogEntry) GetApiKey() int32 {\n\tif x != nil {\n\t\treturn x.ApiKey\n\t}\n\treturn 0\n}\n\nfunc (x *KafkaLogEntry) GetTopics() []string {\n\tif x != nil {\n\t\treturn x.Topics\n\t}\n\treturn nil\n}\n\ntype L7LogEntry struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tProto         string                 `protobuf:\"bytes,1,opt,name=proto,proto3\" json:\"proto,omitempty\"`\n\tFields        map[string]string      `protobuf:\"bytes,2,rep,name=fields,proto3\" json:\"fields,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *L7LogEntry) Reset() {\n\t*x = L7LogEntry{}\n\tmi := &file_cilium_api_accesslog_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *L7LogEntry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*L7LogEntry) ProtoMessage() {}\n\nfunc (x *L7LogEntry) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_accesslog_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use L7LogEntry.ProtoReflect.Descriptor instead.\nfunc (*L7LogEntry) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_accesslog_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *L7LogEntry) GetProto() string {\n\tif x != nil {\n\t\treturn x.Proto\n\t}\n\treturn \"\"\n}\n\nfunc (x *L7LogEntry) GetFields() map[string]string {\n\tif x != nil {\n\t\treturn x.Fields\n\t}\n\treturn nil\n}\n\ntype LogEntry struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The time that Cilium filter captured this log entry,\n\t// in, nanoseconds since 1/1/1970.\n\tTimestamp uint64 `protobuf:\"varint,1,opt,name=timestamp,proto3\" json:\"timestamp,omitempty\"`\n\t// 'true' if the request was received by an ingress listener,\n\t// 'false' if received by an egress listener\n\tIsIngress bool      `protobuf:\"varint,15,opt,name=is_ingress,json=isIngress,proto3\" json:\"is_ingress,omitempty\"`\n\tEntryType EntryType `protobuf:\"varint,3,opt,name=entry_type,json=entryType,proto3,enum=cilium.EntryType\" json:\"entry_type,omitempty\"`\n\t// Cilium network policy resource name\n\tPolicyName string `protobuf:\"bytes,4,opt,name=policy_name,json=policyName,proto3\" json:\"policy_name,omitempty\"`\n\t// proxy_id identifies the listener this message relates to,\n\t// as configured via the bpf_metadata listener filter\n\tProxyId uint32 `protobuf:\"varint,17,opt,name=proxy_id,json=proxyId,proto3\" json:\"proxy_id,omitempty\"`\n\t// Cilium rule reference\n\tCiliumRuleRef string `protobuf:\"bytes,5,opt,name=cilium_rule_ref,json=ciliumRuleRef,proto3\" json:\"cilium_rule_ref,omitempty\"`\n\t// Cilium security ID of the source and destination\n\tSourceSecurityId      uint32 `protobuf:\"varint,6,opt,name=source_security_id,json=sourceSecurityId,proto3\" json:\"source_security_id,omitempty\"`\n\tDestinationSecurityId uint32 `protobuf:\"varint,16,opt,name=destination_security_id,json=destinationSecurityId,proto3\" json:\"destination_security_id,omitempty\"`\n\t// These fields record the original source and destination addresses,\n\t// stored in ipv4:port or [ipv6]:port format.\n\tSourceAddress      string `protobuf:\"bytes,7,opt,name=source_address,json=sourceAddress,proto3\" json:\"source_address,omitempty\"`\n\tDestinationAddress string `protobuf:\"bytes,8,opt,name=destination_address,json=destinationAddress,proto3\" json:\"destination_address,omitempty\"`\n\t// Types that are valid to be assigned to L7:\n\t//\n\t//\t*LogEntry_Http\n\t//\t*LogEntry_Kafka\n\t//\t*LogEntry_GenericL7\n\tL7            isLogEntry_L7 `protobuf_oneof:\"l7\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *LogEntry) Reset() {\n\t*x = LogEntry{}\n\tmi := &file_cilium_api_accesslog_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *LogEntry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LogEntry) ProtoMessage() {}\n\nfunc (x *LogEntry) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_accesslog_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LogEntry.ProtoReflect.Descriptor instead.\nfunc (*LogEntry) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_accesslog_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *LogEntry) GetTimestamp() uint64 {\n\tif x != nil {\n\t\treturn x.Timestamp\n\t}\n\treturn 0\n}\n\nfunc (x *LogEntry) GetIsIngress() bool {\n\tif x != nil {\n\t\treturn x.IsIngress\n\t}\n\treturn false\n}\n\nfunc (x *LogEntry) GetEntryType() EntryType {\n\tif x != nil {\n\t\treturn x.EntryType\n\t}\n\treturn EntryType_Request\n}\n\nfunc (x *LogEntry) GetPolicyName() string {\n\tif x != nil {\n\t\treturn x.PolicyName\n\t}\n\treturn \"\"\n}\n\nfunc (x *LogEntry) GetProxyId() uint32 {\n\tif x != nil {\n\t\treturn x.ProxyId\n\t}\n\treturn 0\n}\n\nfunc (x *LogEntry) GetCiliumRuleRef() string {\n\tif x != nil {\n\t\treturn x.CiliumRuleRef\n\t}\n\treturn \"\"\n}\n\nfunc (x *LogEntry) GetSourceSecurityId() uint32 {\n\tif x != nil {\n\t\treturn x.SourceSecurityId\n\t}\n\treturn 0\n}\n\nfunc (x *LogEntry) GetDestinationSecurityId() uint32 {\n\tif x != nil {\n\t\treturn x.DestinationSecurityId\n\t}\n\treturn 0\n}\n\nfunc (x *LogEntry) GetSourceAddress() string {\n\tif x != nil {\n\t\treturn x.SourceAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *LogEntry) GetDestinationAddress() string {\n\tif x != nil {\n\t\treturn x.DestinationAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *LogEntry) GetL7() isLogEntry_L7 {\n\tif x != nil {\n\t\treturn x.L7\n\t}\n\treturn nil\n}\n\nfunc (x *LogEntry) GetHttp() *HttpLogEntry {\n\tif x != nil {\n\t\tif x, ok := x.L7.(*LogEntry_Http); ok {\n\t\t\treturn x.Http\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *LogEntry) GetKafka() *KafkaLogEntry {\n\tif x != nil {\n\t\tif x, ok := x.L7.(*LogEntry_Kafka); ok {\n\t\t\treturn x.Kafka\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *LogEntry) GetGenericL7() *L7LogEntry {\n\tif x != nil {\n\t\tif x, ok := x.L7.(*LogEntry_GenericL7); ok {\n\t\t\treturn x.GenericL7\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isLogEntry_L7 interface {\n\tisLogEntry_L7()\n}\n\ntype LogEntry_Http struct {\n\tHttp *HttpLogEntry `protobuf:\"bytes,100,opt,name=http,proto3,oneof\"`\n}\n\ntype LogEntry_Kafka struct {\n\tKafka *KafkaLogEntry `protobuf:\"bytes,101,opt,name=kafka,proto3,oneof\"`\n}\n\ntype LogEntry_GenericL7 struct {\n\tGenericL7 *L7LogEntry `protobuf:\"bytes,102,opt,name=generic_l7,json=genericL7,proto3,oneof\"`\n}\n\nfunc (*LogEntry_Http) isLogEntry_L7() {}\n\nfunc (*LogEntry_Kafka) isLogEntry_L7() {}\n\nfunc (*LogEntry_GenericL7) isLogEntry_L7() {}\n\nvar File_cilium_api_accesslog_proto protoreflect.FileDescriptor\n\nconst file_cilium_api_accesslog_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1acilium/api/accesslog.proto\\x12\\x06cilium\\\"2\\n\" +\n\t\"\\bKeyValue\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\tR\\x05value\\\"\\xdd\\x02\\n\" +\n\t\"\\fHttpLogEntry\\x129\\n\" +\n\t\"\\rhttp_protocol\\x18\\x01 \\x01(\\x0e2\\x14.cilium.HttpProtocolR\\fhttpProtocol\\x12\\x16\\n\" +\n\t\"\\x06scheme\\x18\\x02 \\x01(\\tR\\x06scheme\\x12\\x12\\n\" +\n\t\"\\x04host\\x18\\x03 \\x01(\\tR\\x04host\\x12\\x12\\n\" +\n\t\"\\x04path\\x18\\x04 \\x01(\\tR\\x04path\\x12\\x16\\n\" +\n\t\"\\x06method\\x18\\x05 \\x01(\\tR\\x06method\\x12*\\n\" +\n\t\"\\aheaders\\x18\\x06 \\x03(\\v2\\x10.cilium.KeyValueR\\aheaders\\x12\\x16\\n\" +\n\t\"\\x06status\\x18\\a \\x01(\\rR\\x06status\\x129\\n\" +\n\t\"\\x0fmissing_headers\\x18\\b \\x03(\\v2\\x10.cilium.KeyValueR\\x0emissingHeaders\\x12;\\n\" +\n\t\"\\x10rejected_headers\\x18\\t \\x03(\\v2\\x10.cilium.KeyValueR\\x0frejectedHeaders\\\"\\xa7\\x01\\n\" +\n\t\"\\rKafkaLogEntry\\x12%\\n\" +\n\t\"\\x0ecorrelation_id\\x18\\x01 \\x01(\\x05R\\rcorrelationId\\x12\\x1d\\n\" +\n\t\"\\n\" +\n\t\"error_code\\x18\\x02 \\x01(\\x05R\\terrorCode\\x12\\x1f\\n\" +\n\t\"\\vapi_version\\x18\\x03 \\x01(\\x05R\\n\" +\n\t\"apiVersion\\x12\\x17\\n\" +\n\t\"\\aapi_key\\x18\\x04 \\x01(\\x05R\\x06apiKey\\x12\\x16\\n\" +\n\t\"\\x06topics\\x18\\x05 \\x03(\\tR\\x06topics\\\"\\x95\\x01\\n\" +\n\t\"\\n\" +\n\t\"L7LogEntry\\x12\\x14\\n\" +\n\t\"\\x05proto\\x18\\x01 \\x01(\\tR\\x05proto\\x126\\n\" +\n\t\"\\x06fields\\x18\\x02 \\x03(\\v2\\x1e.cilium.L7LogEntry.FieldsEntryR\\x06fields\\x1a9\\n\" +\n\t\"\\vFieldsEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\tR\\x05value:\\x028\\x01\\\"\\xb1\\x04\\n\" +\n\t\"\\bLogEntry\\x12\\x1c\\n\" +\n\t\"\\ttimestamp\\x18\\x01 \\x01(\\x04R\\ttimestamp\\x12\\x1d\\n\" +\n\t\"\\n\" +\n\t\"is_ingress\\x18\\x0f \\x01(\\bR\\tisIngress\\x120\\n\" +\n\t\"\\n\" +\n\t\"entry_type\\x18\\x03 \\x01(\\x0e2\\x11.cilium.EntryTypeR\\tentryType\\x12\\x1f\\n\" +\n\t\"\\vpolicy_name\\x18\\x04 \\x01(\\tR\\n\" +\n\t\"policyName\\x12\\x19\\n\" +\n\t\"\\bproxy_id\\x18\\x11 \\x01(\\rR\\aproxyId\\x12&\\n\" +\n\t\"\\x0fcilium_rule_ref\\x18\\x05 \\x01(\\tR\\rciliumRuleRef\\x12,\\n\" +\n\t\"\\x12source_security_id\\x18\\x06 \\x01(\\rR\\x10sourceSecurityId\\x126\\n\" +\n\t\"\\x17destination_security_id\\x18\\x10 \\x01(\\rR\\x15destinationSecurityId\\x12%\\n\" +\n\t\"\\x0esource_address\\x18\\a \\x01(\\tR\\rsourceAddress\\x12/\\n\" +\n\t\"\\x13destination_address\\x18\\b \\x01(\\tR\\x12destinationAddress\\x12*\\n\" +\n\t\"\\x04http\\x18d \\x01(\\v2\\x14.cilium.HttpLogEntryH\\x00R\\x04http\\x12-\\n\" +\n\t\"\\x05kafka\\x18e \\x01(\\v2\\x15.cilium.KafkaLogEntryH\\x00R\\x05kafka\\x123\\n\" +\n\t\"\\n\" +\n\t\"generic_l7\\x18f \\x01(\\v2\\x12.cilium.L7LogEntryH\\x00R\\tgenericL7B\\x04\\n\" +\n\t\"\\x02l7*1\\n\" +\n\t\"\\fHttpProtocol\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06HTTP10\\x10\\x00\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06HTTP11\\x10\\x01\\x12\\t\\n\" +\n\t\"\\x05HTTP2\\x10\\x02*2\\n\" +\n\t\"\\tEntryType\\x12\\v\\n\" +\n\t\"\\aRequest\\x10\\x00\\x12\\f\\n\" +\n\t\"\\bResponse\\x10\\x01\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06Denied\\x10\\x02B.Z,github.com/cilium/proxy/go/cilium/api;ciliumb\\x06proto3\"\n\nvar (\n\tfile_cilium_api_accesslog_proto_rawDescOnce sync.Once\n\tfile_cilium_api_accesslog_proto_rawDescData []byte\n)\n\nfunc file_cilium_api_accesslog_proto_rawDescGZIP() []byte {\n\tfile_cilium_api_accesslog_proto_rawDescOnce.Do(func() {\n\t\tfile_cilium_api_accesslog_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cilium_api_accesslog_proto_rawDesc), len(file_cilium_api_accesslog_proto_rawDesc)))\n\t})\n\treturn file_cilium_api_accesslog_proto_rawDescData\n}\n\nvar file_cilium_api_accesslog_proto_enumTypes = make([]protoimpl.EnumInfo, 2)\nvar file_cilium_api_accesslog_proto_msgTypes = make([]protoimpl.MessageInfo, 6)\nvar file_cilium_api_accesslog_proto_goTypes = []any{\n\t(HttpProtocol)(0),     // 0: cilium.HttpProtocol\n\t(EntryType)(0),        // 1: cilium.EntryType\n\t(*KeyValue)(nil),      // 2: cilium.KeyValue\n\t(*HttpLogEntry)(nil),  // 3: cilium.HttpLogEntry\n\t(*KafkaLogEntry)(nil), // 4: cilium.KafkaLogEntry\n\t(*L7LogEntry)(nil),    // 5: cilium.L7LogEntry\n\t(*LogEntry)(nil),      // 6: cilium.LogEntry\n\tnil,                   // 7: cilium.L7LogEntry.FieldsEntry\n}\nvar file_cilium_api_accesslog_proto_depIdxs = []int32{\n\t0, // 0: cilium.HttpLogEntry.http_protocol:type_name -> cilium.HttpProtocol\n\t2, // 1: cilium.HttpLogEntry.headers:type_name -> cilium.KeyValue\n\t2, // 2: cilium.HttpLogEntry.missing_headers:type_name -> cilium.KeyValue\n\t2, // 3: cilium.HttpLogEntry.rejected_headers:type_name -> cilium.KeyValue\n\t7, // 4: cilium.L7LogEntry.fields:type_name -> cilium.L7LogEntry.FieldsEntry\n\t1, // 5: cilium.LogEntry.entry_type:type_name -> cilium.EntryType\n\t3, // 6: cilium.LogEntry.http:type_name -> cilium.HttpLogEntry\n\t4, // 7: cilium.LogEntry.kafka:type_name -> cilium.KafkaLogEntry\n\t5, // 8: cilium.LogEntry.generic_l7:type_name -> cilium.L7LogEntry\n\t9, // [9:9] is the sub-list for method output_type\n\t9, // [9:9] is the sub-list for method input_type\n\t9, // [9:9] is the sub-list for extension type_name\n\t9, // [9:9] is the sub-list for extension extendee\n\t0, // [0:9] is the sub-list for field type_name\n}\n\nfunc init() { file_cilium_api_accesslog_proto_init() }\nfunc file_cilium_api_accesslog_proto_init() {\n\tif File_cilium_api_accesslog_proto != nil {\n\t\treturn\n\t}\n\tfile_cilium_api_accesslog_proto_msgTypes[4].OneofWrappers = []any{\n\t\t(*LogEntry_Http)(nil),\n\t\t(*LogEntry_Kafka)(nil),\n\t\t(*LogEntry_GenericL7)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_cilium_api_accesslog_proto_rawDesc), len(file_cilium_api_accesslog_proto_rawDesc)),\n\t\t\tNumEnums:      2,\n\t\t\tNumMessages:   6,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_cilium_api_accesslog_proto_goTypes,\n\t\tDependencyIndexes: file_cilium_api_accesslog_proto_depIdxs,\n\t\tEnumInfos:         file_cilium_api_accesslog_proto_enumTypes,\n\t\tMessageInfos:      file_cilium_api_accesslog_proto_msgTypes,\n\t}.Build()\n\tFile_cilium_api_accesslog_proto = out.File\n\tfile_cilium_api_accesslog_proto_goTypes = nil\n\tfile_cilium_api_accesslog_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "go/cilium/api/accesslog.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: cilium/api/accesslog.proto\n\npackage cilium\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on KeyValue with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *KeyValue) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on KeyValue with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in KeyValueMultiError, or nil\n// if none found.\nfunc (m *KeyValue) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *KeyValue) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Key\n\n\t// no validation rules for Value\n\n\tif len(errors) > 0 {\n\t\treturn KeyValueMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// KeyValueMultiError is an error wrapping multiple validation errors returned\n// by KeyValue.ValidateAll() if the designated constraints aren't met.\ntype KeyValueMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m KeyValueMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m KeyValueMultiError) AllErrors() []error { return m }\n\n// KeyValueValidationError is the validation error returned by\n// KeyValue.Validate if the designated constraints aren't met.\ntype KeyValueValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e KeyValueValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e KeyValueValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e KeyValueValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e KeyValueValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e KeyValueValidationError) ErrorName() string { return \"KeyValueValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e KeyValueValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sKeyValue.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = KeyValueValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = KeyValueValidationError{}\n\n// Validate checks the field values on HttpLogEntry with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *HttpLogEntry) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpLogEntry with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in HttpLogEntryMultiError, or\n// nil if none found.\nfunc (m *HttpLogEntry) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpLogEntry) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for HttpProtocol\n\n\t// no validation rules for Scheme\n\n\t// no validation rules for Host\n\n\t// no validation rules for Path\n\n\t// no validation rules for Method\n\n\tfor idx, item := range m.GetHeaders() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HttpLogEntryValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HttpLogEntryValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HttpLogEntryValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// no validation rules for Status\n\n\tfor idx, item := range m.GetMissingHeaders() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HttpLogEntryValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"MissingHeaders[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HttpLogEntryValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"MissingHeaders[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HttpLogEntryValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"MissingHeaders[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetRejectedHeaders() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HttpLogEntryValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RejectedHeaders[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HttpLogEntryValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RejectedHeaders[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HttpLogEntryValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RejectedHeaders[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HttpLogEntryMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpLogEntryMultiError is an error wrapping multiple validation errors\n// returned by HttpLogEntry.ValidateAll() if the designated constraints aren't met.\ntype HttpLogEntryMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpLogEntryMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpLogEntryMultiError) AllErrors() []error { return m }\n\n// HttpLogEntryValidationError is the validation error returned by\n// HttpLogEntry.Validate if the designated constraints aren't met.\ntype HttpLogEntryValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpLogEntryValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpLogEntryValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpLogEntryValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpLogEntryValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpLogEntryValidationError) ErrorName() string { return \"HttpLogEntryValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e HttpLogEntryValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpLogEntry.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpLogEntryValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpLogEntryValidationError{}\n\n// Validate checks the field values on KafkaLogEntry with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *KafkaLogEntry) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on KafkaLogEntry with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in KafkaLogEntryMultiError, or\n// nil if none found.\nfunc (m *KafkaLogEntry) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *KafkaLogEntry) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for CorrelationId\n\n\t// no validation rules for ErrorCode\n\n\t// no validation rules for ApiVersion\n\n\t// no validation rules for ApiKey\n\n\tif len(errors) > 0 {\n\t\treturn KafkaLogEntryMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// KafkaLogEntryMultiError is an error wrapping multiple validation errors\n// returned by KafkaLogEntry.ValidateAll() if the designated constraints\n// aren't met.\ntype KafkaLogEntryMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m KafkaLogEntryMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m KafkaLogEntryMultiError) AllErrors() []error { return m }\n\n// KafkaLogEntryValidationError is the validation error returned by\n// KafkaLogEntry.Validate if the designated constraints aren't met.\ntype KafkaLogEntryValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e KafkaLogEntryValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e KafkaLogEntryValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e KafkaLogEntryValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e KafkaLogEntryValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e KafkaLogEntryValidationError) ErrorName() string { return \"KafkaLogEntryValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e KafkaLogEntryValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sKafkaLogEntry.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = KafkaLogEntryValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = KafkaLogEntryValidationError{}\n\n// Validate checks the field values on L7LogEntry with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *L7LogEntry) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on L7LogEntry with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in L7LogEntryMultiError, or\n// nil if none found.\nfunc (m *L7LogEntry) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *L7LogEntry) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Proto\n\n\t// no validation rules for Fields\n\n\tif len(errors) > 0 {\n\t\treturn L7LogEntryMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// L7LogEntryMultiError is an error wrapping multiple validation errors\n// returned by L7LogEntry.ValidateAll() if the designated constraints aren't met.\ntype L7LogEntryMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m L7LogEntryMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m L7LogEntryMultiError) AllErrors() []error { return m }\n\n// L7LogEntryValidationError is the validation error returned by\n// L7LogEntry.Validate if the designated constraints aren't met.\ntype L7LogEntryValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e L7LogEntryValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e L7LogEntryValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e L7LogEntryValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e L7LogEntryValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e L7LogEntryValidationError) ErrorName() string { return \"L7LogEntryValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e L7LogEntryValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sL7LogEntry.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = L7LogEntryValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = L7LogEntryValidationError{}\n\n// Validate checks the field values on LogEntry with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *LogEntry) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on LogEntry with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in LogEntryMultiError, or nil\n// if none found.\nfunc (m *LogEntry) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *LogEntry) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Timestamp\n\n\t// no validation rules for IsIngress\n\n\t// no validation rules for EntryType\n\n\t// no validation rules for PolicyName\n\n\t// no validation rules for ProxyId\n\n\t// no validation rules for CiliumRuleRef\n\n\t// no validation rules for SourceSecurityId\n\n\t// no validation rules for DestinationSecurityId\n\n\t// no validation rules for SourceAddress\n\n\t// no validation rules for DestinationAddress\n\n\tswitch v := m.L7.(type) {\n\tcase *LogEntry_Http:\n\t\tif v == nil {\n\t\t\terr := LogEntryValidationError{\n\t\t\t\tfield:  \"L7\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetHttp()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, LogEntryValidationError{\n\t\t\t\t\t\tfield:  \"Http\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, LogEntryValidationError{\n\t\t\t\t\t\tfield:  \"Http\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetHttp()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn LogEntryValidationError{\n\t\t\t\t\tfield:  \"Http\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *LogEntry_Kafka:\n\t\tif v == nil {\n\t\t\terr := LogEntryValidationError{\n\t\t\t\tfield:  \"L7\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetKafka()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, LogEntryValidationError{\n\t\t\t\t\t\tfield:  \"Kafka\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, LogEntryValidationError{\n\t\t\t\t\t\tfield:  \"Kafka\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetKafka()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn LogEntryValidationError{\n\t\t\t\t\tfield:  \"Kafka\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *LogEntry_GenericL7:\n\t\tif v == nil {\n\t\t\terr := LogEntryValidationError{\n\t\t\t\tfield:  \"L7\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetGenericL7()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, LogEntryValidationError{\n\t\t\t\t\t\tfield:  \"GenericL7\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, LogEntryValidationError{\n\t\t\t\t\t\tfield:  \"GenericL7\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetGenericL7()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn LogEntryValidationError{\n\t\t\t\t\tfield:  \"GenericL7\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn LogEntryMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// LogEntryMultiError is an error wrapping multiple validation errors returned\n// by LogEntry.ValidateAll() if the designated constraints aren't met.\ntype LogEntryMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m LogEntryMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m LogEntryMultiError) AllErrors() []error { return m }\n\n// LogEntryValidationError is the validation error returned by\n// LogEntry.Validate if the designated constraints aren't met.\ntype LogEntryValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e LogEntryValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e LogEntryValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e LogEntryValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e LogEntryValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e LogEntryValidationError) ErrorName() string { return \"LogEntryValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e LogEntryValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sLogEntry.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = LogEntryValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = LogEntryValidationError{}\n"
  },
  {
    "path": "go/cilium/api/bpf_metadata.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.11\n// \tprotoc        v6.33.2\n// source: cilium/api/bpf_metadata.proto\n\npackage cilium\n\nimport (\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/config/core/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype BpfMetadata struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// File system root for bpf. Bpf will not be used if left empty.\n\tBpfRoot string `protobuf:\"bytes,1,opt,name=bpf_root,json=bpfRoot,proto3\" json:\"bpf_root,omitempty\"`\n\t// 'true' if the filter is on ingress listener, 'false' for egress listener.\n\tIsIngress bool `protobuf:\"varint,2,opt,name=is_ingress,json=isIngress,proto3\" json:\"is_ingress,omitempty\"`\n\t// Use of the original source address requires kernel datapath support which\n\t// may or may not be available. 'true' if original source address\n\t// should be used. Original source address use may still be\n\t// skipped in scenarios where it is knows to not work.\n\tUseOriginalSourceAddress bool `protobuf:\"varint,3,opt,name=use_original_source_address,json=useOriginalSourceAddress,proto3\" json:\"use_original_source_address,omitempty\"`\n\t// True if the listener is used for an L7 LB. In this case policy enforcement is done on the\n\t// destination selected by the listener rather than on the original destination address. For\n\t// local sources the source endpoint ID is set in socket mark instead of source security ID if\n\t// 'use_original_source_address' is also true, so that the local source's egress policy is\n\t// enforced on the bpf datapath.\n\t// Only valid for egress.\n\tIsL7Lb bool `protobuf:\"varint,4,opt,name=is_l7lb,json=isL7lb,proto3\" json:\"is_l7lb,omitempty\"`\n\t// Source address to be used whenever the original source address is not used.\n\t// Either ipv4_source_address or ipv6_source_address depending on the address\n\t// family of the destination address. If left empty, and no Envoy Cluster Bind\n\t// Config is provided, the source address will be picked by the local IP stack.\n\tIpv4SourceAddress string `protobuf:\"bytes,5,opt,name=ipv4_source_address,json=ipv4SourceAddress,proto3\" json:\"ipv4_source_address,omitempty\"`\n\tIpv6SourceAddress string `protobuf:\"bytes,6,opt,name=ipv6_source_address,json=ipv6SourceAddress,proto3\" json:\"ipv6_source_address,omitempty\"`\n\t// True if policy should be enforced on l7 LB used. The policy bound to the configured\n\t// ipv[46]_source_addresses, which must be explicitly set, applies. Ingress policy is\n\t// enforced on the security identity of the original (e.g., external) source. Egress\n\t// policy is enforced on the security identity of the backend selected by the load balancer.\n\t//\n\t// Deprecation note: This option will be forced 'true' and deprecated when Cilium 1.15 is\n\t// the oldest supported release.\n\tEnforcePolicyOnL7Lb bool `protobuf:\"varint,7,opt,name=enforce_policy_on_l7lb,json=enforcePolicyOnL7lb,proto3\" json:\"enforce_policy_on_l7lb,omitempty\"`\n\t// proxy_id is passed to access log messages and allows relating access log messages to\n\t// listeners.\n\tProxyId uint32 `protobuf:\"varint,8,opt,name=proxy_id,json=proxyId,proto3\" json:\"proxy_id,omitempty\"`\n\t// policy_update_warning_limit is the time in milliseconds after which a warning is logged if\n\t// network policy update took longer\n\t// Deprecated, has no effect.\n\tPolicyUpdateWarningLimit *durationpb.Duration `protobuf:\"bytes,9,opt,name=policy_update_warning_limit,json=policyUpdateWarningLimit,proto3\" json:\"policy_update_warning_limit,omitempty\"`\n\t// l7lb_policy_name is the name of the L7LB policy that is enforced on the listener.\n\t// This is optional field.\n\tL7LbPolicyName string `protobuf:\"bytes,10,opt,name=l7lb_policy_name,json=l7lbPolicyName,proto3\" json:\"l7lb_policy_name,omitempty\"`\n\t// original_source_so_linger_time specifies the number of seconds to linger on socket close.\n\t// Only used if use_original_source_address is also true, and the original source address\n\t// is used in the upstream connections. Value 0 causes connections to be reset on close (TCP RST).\n\t// Values above 0 cause the Envoy worker thread to block up to the given number of seconds while\n\t// the connection is closing. If the timeout is reached the connection is being reset (TCP RST).\n\t// This option may be needed for allowing new connections to successfully bind to the original\n\t// source address and port.\n\tOriginalSourceSoLingerTime *uint32 `protobuf:\"varint,11,opt,name=original_source_so_linger_time,json=originalSourceSoLingerTime,proto3,oneof\" json:\"original_source_so_linger_time,omitempty\"`\n\t// Name of the pin file for opening bpf ipcache in \"<bpf_root>/tc/globals/\". If empty, defaults to\n\t// \"cilium_ipcache\" for backwards compatibility.\n\t// Only used if 'bpf_root' is non-empty and 'use_nphds' is 'false'.\n\tIpcacheName string `protobuf:\"bytes,12,opt,name=ipcache_name,json=ipcacheName,proto3\" json:\"ipcache_name,omitempty\"`\n\t// Use Network Policy Hosts xDS (NPHDS) protocol to sync IP/ID mappings.\n\t// Network Policy xDS (NPDS) will only be used if this is 'true' or 'bpf_root' is non-empty.\n\t// If 'use_nphds' is 'false' ipcache named by 'ipcache_name' is used instead.\n\tUseNphds bool `protobuf:\"varint,13,opt,name=use_nphds,json=useNphds,proto3\" json:\"use_nphds,omitempty\"`\n\t// Duration to reuse ipcache results until the entry is looked up from bpf ipcache again.\n\t// Defaults to 3 milliseconds.\n\tCacheEntryTtl *durationpb.Duration `protobuf:\"bytes,14,opt,name=cache_entry_ttl,json=cacheEntryTtl,proto3\" json:\"cache_entry_ttl,omitempty\"`\n\t// Cache is garbage collected at interval 10 times the ttl (default 30 ms).\n\tCacheGcInterval *durationpb.Duration `protobuf:\"bytes,15,opt,name=cache_gc_interval,json=cacheGcInterval,proto3\" json:\"cache_gc_interval,omitempty\"`\n\t// Configuration for the source of NPDS updates. Currently this field is not supported.\n\tNpdsConfig    *v3.ConfigSource `protobuf:\"bytes,16,opt,name=npds_config,json=npdsConfig,proto3\" json:\"npds_config,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *BpfMetadata) Reset() {\n\t*x = BpfMetadata{}\n\tmi := &file_cilium_api_bpf_metadata_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *BpfMetadata) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*BpfMetadata) ProtoMessage() {}\n\nfunc (x *BpfMetadata) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_bpf_metadata_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use BpfMetadata.ProtoReflect.Descriptor instead.\nfunc (*BpfMetadata) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_bpf_metadata_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *BpfMetadata) GetBpfRoot() string {\n\tif x != nil {\n\t\treturn x.BpfRoot\n\t}\n\treturn \"\"\n}\n\nfunc (x *BpfMetadata) GetIsIngress() bool {\n\tif x != nil {\n\t\treturn x.IsIngress\n\t}\n\treturn false\n}\n\nfunc (x *BpfMetadata) GetUseOriginalSourceAddress() bool {\n\tif x != nil {\n\t\treturn x.UseOriginalSourceAddress\n\t}\n\treturn false\n}\n\nfunc (x *BpfMetadata) GetIsL7Lb() bool {\n\tif x != nil {\n\t\treturn x.IsL7Lb\n\t}\n\treturn false\n}\n\nfunc (x *BpfMetadata) GetIpv4SourceAddress() string {\n\tif x != nil {\n\t\treturn x.Ipv4SourceAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *BpfMetadata) GetIpv6SourceAddress() string {\n\tif x != nil {\n\t\treturn x.Ipv6SourceAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *BpfMetadata) GetEnforcePolicyOnL7Lb() bool {\n\tif x != nil {\n\t\treturn x.EnforcePolicyOnL7Lb\n\t}\n\treturn false\n}\n\nfunc (x *BpfMetadata) GetProxyId() uint32 {\n\tif x != nil {\n\t\treturn x.ProxyId\n\t}\n\treturn 0\n}\n\nfunc (x *BpfMetadata) GetPolicyUpdateWarningLimit() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.PolicyUpdateWarningLimit\n\t}\n\treturn nil\n}\n\nfunc (x *BpfMetadata) GetL7LbPolicyName() string {\n\tif x != nil {\n\t\treturn x.L7LbPolicyName\n\t}\n\treturn \"\"\n}\n\nfunc (x *BpfMetadata) GetOriginalSourceSoLingerTime() uint32 {\n\tif x != nil && x.OriginalSourceSoLingerTime != nil {\n\t\treturn *x.OriginalSourceSoLingerTime\n\t}\n\treturn 0\n}\n\nfunc (x *BpfMetadata) GetIpcacheName() string {\n\tif x != nil {\n\t\treturn x.IpcacheName\n\t}\n\treturn \"\"\n}\n\nfunc (x *BpfMetadata) GetUseNphds() bool {\n\tif x != nil {\n\t\treturn x.UseNphds\n\t}\n\treturn false\n}\n\nfunc (x *BpfMetadata) GetCacheEntryTtl() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.CacheEntryTtl\n\t}\n\treturn nil\n}\n\nfunc (x *BpfMetadata) GetCacheGcInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.CacheGcInterval\n\t}\n\treturn nil\n}\n\nfunc (x *BpfMetadata) GetNpdsConfig() *v3.ConfigSource {\n\tif x != nil {\n\t\treturn x.NpdsConfig\n\t}\n\treturn nil\n}\n\nvar File_cilium_api_bpf_metadata_proto protoreflect.FileDescriptor\n\nconst file_cilium_api_bpf_metadata_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1dcilium/api/bpf_metadata.proto\\x12\\x06cilium\\x1a(envoy/config/core/v3/config_source.proto\\x1a\\x1egoogle/protobuf/duration.proto\\x1a\\x17validate/validate.proto\\\"\\xd9\\x06\\n\" +\n\t\"\\vBpfMetadata\\x12\\x19\\n\" +\n\t\"\\bbpf_root\\x18\\x01 \\x01(\\tR\\abpfRoot\\x12\\x1d\\n\" +\n\t\"\\n\" +\n\t\"is_ingress\\x18\\x02 \\x01(\\bR\\tisIngress\\x12=\\n\" +\n\t\"\\x1buse_original_source_address\\x18\\x03 \\x01(\\bR\\x18useOriginalSourceAddress\\x12\\x17\\n\" +\n\t\"\\ais_l7lb\\x18\\x04 \\x01(\\bR\\x06isL7lb\\x12.\\n\" +\n\t\"\\x13ipv4_source_address\\x18\\x05 \\x01(\\tR\\x11ipv4SourceAddress\\x12.\\n\" +\n\t\"\\x13ipv6_source_address\\x18\\x06 \\x01(\\tR\\x11ipv6SourceAddress\\x123\\n\" +\n\t\"\\x16enforce_policy_on_l7lb\\x18\\a \\x01(\\bR\\x13enforcePolicyOnL7lb\\x12$\\n\" +\n\t\"\\bproxy_id\\x18\\b \\x01(\\rB\\t\\xfaB\\x06*\\x04\\x18\\xff\\xff\\x03R\\aproxyId\\x12X\\n\" +\n\t\"\\x1bpolicy_update_warning_limit\\x18\\t \\x01(\\v2\\x19.google.protobuf.DurationR\\x18policyUpdateWarningLimit\\x12(\\n\" +\n\t\"\\x10l7lb_policy_name\\x18\\n\" +\n\t\" \\x01(\\tR\\x0el7lbPolicyName\\x12G\\n\" +\n\t\"\\x1eoriginal_source_so_linger_time\\x18\\v \\x01(\\rH\\x00R\\x1aoriginalSourceSoLingerTime\\x88\\x01\\x01\\x12!\\n\" +\n\t\"\\fipcache_name\\x18\\f \\x01(\\tR\\vipcacheName\\x12\\x1b\\n\" +\n\t\"\\tuse_nphds\\x18\\r \\x01(\\bR\\buseNphds\\x12A\\n\" +\n\t\"\\x0fcache_entry_ttl\\x18\\x0e \\x01(\\v2\\x19.google.protobuf.DurationR\\rcacheEntryTtl\\x12E\\n\" +\n\t\"\\x11cache_gc_interval\\x18\\x0f \\x01(\\v2\\x19.google.protobuf.DurationR\\x0fcacheGcInterval\\x12C\\n\" +\n\t\"\\vnpds_config\\x18\\x10 \\x01(\\v2\\\".envoy.config.core.v3.ConfigSourceR\\n\" +\n\t\"npdsConfigB!\\n\" +\n\t\"\\x1f_original_source_so_linger_timeB.Z,github.com/cilium/proxy/go/cilium/api;ciliumb\\x06proto3\"\n\nvar (\n\tfile_cilium_api_bpf_metadata_proto_rawDescOnce sync.Once\n\tfile_cilium_api_bpf_metadata_proto_rawDescData []byte\n)\n\nfunc file_cilium_api_bpf_metadata_proto_rawDescGZIP() []byte {\n\tfile_cilium_api_bpf_metadata_proto_rawDescOnce.Do(func() {\n\t\tfile_cilium_api_bpf_metadata_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cilium_api_bpf_metadata_proto_rawDesc), len(file_cilium_api_bpf_metadata_proto_rawDesc)))\n\t})\n\treturn file_cilium_api_bpf_metadata_proto_rawDescData\n}\n\nvar file_cilium_api_bpf_metadata_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_cilium_api_bpf_metadata_proto_goTypes = []any{\n\t(*BpfMetadata)(nil),         // 0: cilium.BpfMetadata\n\t(*durationpb.Duration)(nil), // 1: google.protobuf.Duration\n\t(*v3.ConfigSource)(nil),     // 2: envoy.config.core.v3.ConfigSource\n}\nvar file_cilium_api_bpf_metadata_proto_depIdxs = []int32{\n\t1, // 0: cilium.BpfMetadata.policy_update_warning_limit:type_name -> google.protobuf.Duration\n\t1, // 1: cilium.BpfMetadata.cache_entry_ttl:type_name -> google.protobuf.Duration\n\t1, // 2: cilium.BpfMetadata.cache_gc_interval:type_name -> google.protobuf.Duration\n\t2, // 3: cilium.BpfMetadata.npds_config:type_name -> envoy.config.core.v3.ConfigSource\n\t4, // [4:4] is the sub-list for method output_type\n\t4, // [4:4] is the sub-list for method input_type\n\t4, // [4:4] is the sub-list for extension type_name\n\t4, // [4:4] is the sub-list for extension extendee\n\t0, // [0:4] is the sub-list for field type_name\n}\n\nfunc init() { file_cilium_api_bpf_metadata_proto_init() }\nfunc file_cilium_api_bpf_metadata_proto_init() {\n\tif File_cilium_api_bpf_metadata_proto != nil {\n\t\treturn\n\t}\n\tfile_cilium_api_bpf_metadata_proto_msgTypes[0].OneofWrappers = []any{}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_cilium_api_bpf_metadata_proto_rawDesc), len(file_cilium_api_bpf_metadata_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_cilium_api_bpf_metadata_proto_goTypes,\n\t\tDependencyIndexes: file_cilium_api_bpf_metadata_proto_depIdxs,\n\t\tMessageInfos:      file_cilium_api_bpf_metadata_proto_msgTypes,\n\t}.Build()\n\tFile_cilium_api_bpf_metadata_proto = out.File\n\tfile_cilium_api_bpf_metadata_proto_goTypes = nil\n\tfile_cilium_api_bpf_metadata_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "go/cilium/api/bpf_metadata.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: cilium/api/bpf_metadata.proto\n\npackage cilium\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on BpfMetadata with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *BpfMetadata) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on BpfMetadata with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in BpfMetadataMultiError, or\n// nil if none found.\nfunc (m *BpfMetadata) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *BpfMetadata) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for BpfRoot\n\n\t// no validation rules for IsIngress\n\n\t// no validation rules for UseOriginalSourceAddress\n\n\t// no validation rules for IsL7Lb\n\n\t// no validation rules for Ipv4SourceAddress\n\n\t// no validation rules for Ipv6SourceAddress\n\n\t// no validation rules for EnforcePolicyOnL7Lb\n\n\tif m.GetProxyId() > 65535 {\n\t\terr := BpfMetadataValidationError{\n\t\t\tfield:  \"ProxyId\",\n\t\t\treason: \"value must be less than or equal to 65535\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPolicyUpdateWarningLimit()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, BpfMetadataValidationError{\n\t\t\t\t\tfield:  \"PolicyUpdateWarningLimit\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, BpfMetadataValidationError{\n\t\t\t\t\tfield:  \"PolicyUpdateWarningLimit\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPolicyUpdateWarningLimit()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn BpfMetadataValidationError{\n\t\t\t\tfield:  \"PolicyUpdateWarningLimit\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for L7LbPolicyName\n\n\t// no validation rules for IpcacheName\n\n\t// no validation rules for UseNphds\n\n\tif all {\n\t\tswitch v := interface{}(m.GetCacheEntryTtl()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, BpfMetadataValidationError{\n\t\t\t\t\tfield:  \"CacheEntryTtl\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, BpfMetadataValidationError{\n\t\t\t\t\tfield:  \"CacheEntryTtl\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetCacheEntryTtl()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn BpfMetadataValidationError{\n\t\t\t\tfield:  \"CacheEntryTtl\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetCacheGcInterval()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, BpfMetadataValidationError{\n\t\t\t\t\tfield:  \"CacheGcInterval\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, BpfMetadataValidationError{\n\t\t\t\t\tfield:  \"CacheGcInterval\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetCacheGcInterval()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn BpfMetadataValidationError{\n\t\t\t\tfield:  \"CacheGcInterval\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetNpdsConfig()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, BpfMetadataValidationError{\n\t\t\t\t\tfield:  \"NpdsConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, BpfMetadataValidationError{\n\t\t\t\t\tfield:  \"NpdsConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetNpdsConfig()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn BpfMetadataValidationError{\n\t\t\t\tfield:  \"NpdsConfig\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif m.OriginalSourceSoLingerTime != nil {\n\t\t// no validation rules for OriginalSourceSoLingerTime\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn BpfMetadataMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// BpfMetadataMultiError is an error wrapping multiple validation errors\n// returned by BpfMetadata.ValidateAll() if the designated constraints aren't met.\ntype BpfMetadataMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m BpfMetadataMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m BpfMetadataMultiError) AllErrors() []error { return m }\n\n// BpfMetadataValidationError is the validation error returned by\n// BpfMetadata.Validate if the designated constraints aren't met.\ntype BpfMetadataValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e BpfMetadataValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e BpfMetadataValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e BpfMetadataValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e BpfMetadataValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e BpfMetadataValidationError) ErrorName() string { return \"BpfMetadataValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e BpfMetadataValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sBpfMetadata.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = BpfMetadataValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = BpfMetadataValidationError{}\n"
  },
  {
    "path": "go/cilium/api/health_check_sink.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.11\n// \tprotoc        v6.33.2\n// source: cilium/api/health_check_sink.proto\n\npackage cilium\n\nimport (\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Health check event pipe sink.\n// The health check event will be streamed as binary protobufs.\ntype HealthCheckEventPipeSink struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Unix domain socket path where to connect to send health check events to.\n\tPath          string `protobuf:\"bytes,1,opt,name=path,proto3\" json:\"path,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HealthCheckEventPipeSink) Reset() {\n\t*x = HealthCheckEventPipeSink{}\n\tmi := &file_cilium_api_health_check_sink_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HealthCheckEventPipeSink) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HealthCheckEventPipeSink) ProtoMessage() {}\n\nfunc (x *HealthCheckEventPipeSink) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_health_check_sink_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HealthCheckEventPipeSink.ProtoReflect.Descriptor instead.\nfunc (*HealthCheckEventPipeSink) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_health_check_sink_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *HealthCheckEventPipeSink) GetPath() string {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn \"\"\n}\n\nvar File_cilium_api_health_check_sink_proto protoreflect.FileDescriptor\n\nconst file_cilium_api_health_check_sink_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\\"cilium/api/health_check_sink.proto\\x12\\x06cilium\\x1a\\x17validate/validate.proto\\\"7\\n\" +\n\t\"\\x18HealthCheckEventPipeSink\\x12\\x1b\\n\" +\n\t\"\\x04path\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04pathB.Z,github.com/cilium/proxy/go/cilium/api;ciliumb\\x06proto3\"\n\nvar (\n\tfile_cilium_api_health_check_sink_proto_rawDescOnce sync.Once\n\tfile_cilium_api_health_check_sink_proto_rawDescData []byte\n)\n\nfunc file_cilium_api_health_check_sink_proto_rawDescGZIP() []byte {\n\tfile_cilium_api_health_check_sink_proto_rawDescOnce.Do(func() {\n\t\tfile_cilium_api_health_check_sink_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cilium_api_health_check_sink_proto_rawDesc), len(file_cilium_api_health_check_sink_proto_rawDesc)))\n\t})\n\treturn file_cilium_api_health_check_sink_proto_rawDescData\n}\n\nvar file_cilium_api_health_check_sink_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_cilium_api_health_check_sink_proto_goTypes = []any{\n\t(*HealthCheckEventPipeSink)(nil), // 0: cilium.HealthCheckEventPipeSink\n}\nvar file_cilium_api_health_check_sink_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_cilium_api_health_check_sink_proto_init() }\nfunc file_cilium_api_health_check_sink_proto_init() {\n\tif File_cilium_api_health_check_sink_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_cilium_api_health_check_sink_proto_rawDesc), len(file_cilium_api_health_check_sink_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_cilium_api_health_check_sink_proto_goTypes,\n\t\tDependencyIndexes: file_cilium_api_health_check_sink_proto_depIdxs,\n\t\tMessageInfos:      file_cilium_api_health_check_sink_proto_msgTypes,\n\t}.Build()\n\tFile_cilium_api_health_check_sink_proto = out.File\n\tfile_cilium_api_health_check_sink_proto_goTypes = nil\n\tfile_cilium_api_health_check_sink_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "go/cilium/api/health_check_sink.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: cilium/api/health_check_sink.proto\n\npackage cilium\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on HealthCheckEventPipeSink with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HealthCheckEventPipeSink) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HealthCheckEventPipeSink with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HealthCheckEventPipeSinkMultiError, or nil if none found.\nfunc (m *HealthCheckEventPipeSink) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HealthCheckEventPipeSink) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetPath()) < 1 {\n\t\terr := HealthCheckEventPipeSinkValidationError{\n\t\t\tfield:  \"Path\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HealthCheckEventPipeSinkMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HealthCheckEventPipeSinkMultiError is an error wrapping multiple validation\n// errors returned by HealthCheckEventPipeSink.ValidateAll() if the designated\n// constraints aren't met.\ntype HealthCheckEventPipeSinkMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HealthCheckEventPipeSinkMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HealthCheckEventPipeSinkMultiError) AllErrors() []error { return m }\n\n// HealthCheckEventPipeSinkValidationError is the validation error returned by\n// HealthCheckEventPipeSink.Validate if the designated constraints aren't met.\ntype HealthCheckEventPipeSinkValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HealthCheckEventPipeSinkValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HealthCheckEventPipeSinkValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HealthCheckEventPipeSinkValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HealthCheckEventPipeSinkValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HealthCheckEventPipeSinkValidationError) ErrorName() string {\n\treturn \"HealthCheckEventPipeSinkValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HealthCheckEventPipeSinkValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHealthCheckEventPipeSink.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HealthCheckEventPipeSinkValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HealthCheckEventPipeSinkValidationError{}\n"
  },
  {
    "path": "go/cilium/api/l7policy.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.11\n// \tprotoc        v6.33.2\n// source: cilium/api/l7policy.proto\n\npackage cilium\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype L7Policy struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Path to the unix domain socket for the cilium access log.\n\tAccessLogPath string `protobuf:\"bytes,1,opt,name=access_log_path,json=accessLogPath,proto3\" json:\"access_log_path,omitempty\"`\n\t// HTTP response body message for 403 status code.\n\t// If empty, \"Access denied\" will be used.\n\tDenied_403Body string `protobuf:\"bytes,3,opt,name=denied_403_body,json=denied403Body,proto3\" json:\"denied_403_body,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *L7Policy) Reset() {\n\t*x = L7Policy{}\n\tmi := &file_cilium_api_l7policy_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *L7Policy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*L7Policy) ProtoMessage() {}\n\nfunc (x *L7Policy) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_l7policy_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use L7Policy.ProtoReflect.Descriptor instead.\nfunc (*L7Policy) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_l7policy_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *L7Policy) GetAccessLogPath() string {\n\tif x != nil {\n\t\treturn x.AccessLogPath\n\t}\n\treturn \"\"\n}\n\nfunc (x *L7Policy) GetDenied_403Body() string {\n\tif x != nil {\n\t\treturn x.Denied_403Body\n\t}\n\treturn \"\"\n}\n\nvar File_cilium_api_l7policy_proto protoreflect.FileDescriptor\n\nconst file_cilium_api_l7policy_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x19cilium/api/l7policy.proto\\x12\\x06cilium\\\"Z\\n\" +\n\t\"\\bL7Policy\\x12&\\n\" +\n\t\"\\x0faccess_log_path\\x18\\x01 \\x01(\\tR\\raccessLogPath\\x12&\\n\" +\n\t\"\\x0fdenied_403_body\\x18\\x03 \\x01(\\tR\\rdenied403BodyB.Z,github.com/cilium/proxy/go/cilium/api;ciliumb\\x06proto3\"\n\nvar (\n\tfile_cilium_api_l7policy_proto_rawDescOnce sync.Once\n\tfile_cilium_api_l7policy_proto_rawDescData []byte\n)\n\nfunc file_cilium_api_l7policy_proto_rawDescGZIP() []byte {\n\tfile_cilium_api_l7policy_proto_rawDescOnce.Do(func() {\n\t\tfile_cilium_api_l7policy_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cilium_api_l7policy_proto_rawDesc), len(file_cilium_api_l7policy_proto_rawDesc)))\n\t})\n\treturn file_cilium_api_l7policy_proto_rawDescData\n}\n\nvar file_cilium_api_l7policy_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_cilium_api_l7policy_proto_goTypes = []any{\n\t(*L7Policy)(nil), // 0: cilium.L7Policy\n}\nvar file_cilium_api_l7policy_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_cilium_api_l7policy_proto_init() }\nfunc file_cilium_api_l7policy_proto_init() {\n\tif File_cilium_api_l7policy_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_cilium_api_l7policy_proto_rawDesc), len(file_cilium_api_l7policy_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_cilium_api_l7policy_proto_goTypes,\n\t\tDependencyIndexes: file_cilium_api_l7policy_proto_depIdxs,\n\t\tMessageInfos:      file_cilium_api_l7policy_proto_msgTypes,\n\t}.Build()\n\tFile_cilium_api_l7policy_proto = out.File\n\tfile_cilium_api_l7policy_proto_goTypes = nil\n\tfile_cilium_api_l7policy_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "go/cilium/api/l7policy.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: cilium/api/l7policy.proto\n\npackage cilium\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on L7Policy with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *L7Policy) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on L7Policy with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in L7PolicyMultiError, or nil\n// if none found.\nfunc (m *L7Policy) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *L7Policy) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for AccessLogPath\n\n\t// no validation rules for Denied_403Body\n\n\tif len(errors) > 0 {\n\t\treturn L7PolicyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// L7PolicyMultiError is an error wrapping multiple validation errors returned\n// by L7Policy.ValidateAll() if the designated constraints aren't met.\ntype L7PolicyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m L7PolicyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m L7PolicyMultiError) AllErrors() []error { return m }\n\n// L7PolicyValidationError is the validation error returned by\n// L7Policy.Validate if the designated constraints aren't met.\ntype L7PolicyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e L7PolicyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e L7PolicyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e L7PolicyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e L7PolicyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e L7PolicyValidationError) ErrorName() string { return \"L7PolicyValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e L7PolicyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sL7Policy.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = L7PolicyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = L7PolicyValidationError{}\n"
  },
  {
    "path": "go/cilium/api/network_filter.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.11\n// \tprotoc        v6.33.2\n// source: cilium/api/network_filter.proto\n\npackage cilium\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype NetworkFilter struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Path to the proxylib to be opened\n\tProxylib string `protobuf:\"bytes,1,opt,name=proxylib,proto3\" json:\"proxylib,omitempty\"`\n\t// Transparent set of parameters provided for proxylib initialization\n\tProxylibParams map[string]string `protobuf:\"bytes,2,rep,name=proxylib_params,json=proxylibParams,proto3\" json:\"proxylib_params,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\t// Path to the unix domain socket for the cilium access log.\n\tAccessLogPath string `protobuf:\"bytes,5,opt,name=access_log_path,json=accessLogPath,proto3\" json:\"access_log_path,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *NetworkFilter) Reset() {\n\t*x = NetworkFilter{}\n\tmi := &file_cilium_api_network_filter_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *NetworkFilter) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*NetworkFilter) ProtoMessage() {}\n\nfunc (x *NetworkFilter) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_network_filter_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use NetworkFilter.ProtoReflect.Descriptor instead.\nfunc (*NetworkFilter) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_network_filter_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *NetworkFilter) GetProxylib() string {\n\tif x != nil {\n\t\treturn x.Proxylib\n\t}\n\treturn \"\"\n}\n\nfunc (x *NetworkFilter) GetProxylibParams() map[string]string {\n\tif x != nil {\n\t\treturn x.ProxylibParams\n\t}\n\treturn nil\n}\n\nfunc (x *NetworkFilter) GetAccessLogPath() string {\n\tif x != nil {\n\t\treturn x.AccessLogPath\n\t}\n\treturn \"\"\n}\n\nvar File_cilium_api_network_filter_proto protoreflect.FileDescriptor\n\nconst file_cilium_api_network_filter_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1fcilium/api/network_filter.proto\\x12\\x06cilium\\\"\\xea\\x01\\n\" +\n\t\"\\rNetworkFilter\\x12\\x1a\\n\" +\n\t\"\\bproxylib\\x18\\x01 \\x01(\\tR\\bproxylib\\x12R\\n\" +\n\t\"\\x0fproxylib_params\\x18\\x02 \\x03(\\v2).cilium.NetworkFilter.ProxylibParamsEntryR\\x0eproxylibParams\\x12&\\n\" +\n\t\"\\x0faccess_log_path\\x18\\x05 \\x01(\\tR\\raccessLogPath\\x1aA\\n\" +\n\t\"\\x13ProxylibParamsEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\tR\\x05value:\\x028\\x01B.Z,github.com/cilium/proxy/go/cilium/api;ciliumb\\x06proto3\"\n\nvar (\n\tfile_cilium_api_network_filter_proto_rawDescOnce sync.Once\n\tfile_cilium_api_network_filter_proto_rawDescData []byte\n)\n\nfunc file_cilium_api_network_filter_proto_rawDescGZIP() []byte {\n\tfile_cilium_api_network_filter_proto_rawDescOnce.Do(func() {\n\t\tfile_cilium_api_network_filter_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cilium_api_network_filter_proto_rawDesc), len(file_cilium_api_network_filter_proto_rawDesc)))\n\t})\n\treturn file_cilium_api_network_filter_proto_rawDescData\n}\n\nvar file_cilium_api_network_filter_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_cilium_api_network_filter_proto_goTypes = []any{\n\t(*NetworkFilter)(nil), // 0: cilium.NetworkFilter\n\tnil,                   // 1: cilium.NetworkFilter.ProxylibParamsEntry\n}\nvar file_cilium_api_network_filter_proto_depIdxs = []int32{\n\t1, // 0: cilium.NetworkFilter.proxylib_params:type_name -> cilium.NetworkFilter.ProxylibParamsEntry\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_cilium_api_network_filter_proto_init() }\nfunc file_cilium_api_network_filter_proto_init() {\n\tif File_cilium_api_network_filter_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_cilium_api_network_filter_proto_rawDesc), len(file_cilium_api_network_filter_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_cilium_api_network_filter_proto_goTypes,\n\t\tDependencyIndexes: file_cilium_api_network_filter_proto_depIdxs,\n\t\tMessageInfos:      file_cilium_api_network_filter_proto_msgTypes,\n\t}.Build()\n\tFile_cilium_api_network_filter_proto = out.File\n\tfile_cilium_api_network_filter_proto_goTypes = nil\n\tfile_cilium_api_network_filter_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "go/cilium/api/network_filter.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: cilium/api/network_filter.proto\n\npackage cilium\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on NetworkFilter with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *NetworkFilter) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on NetworkFilter with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in NetworkFilterMultiError, or\n// nil if none found.\nfunc (m *NetworkFilter) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *NetworkFilter) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Proxylib\n\n\t// no validation rules for ProxylibParams\n\n\t// no validation rules for AccessLogPath\n\n\tif len(errors) > 0 {\n\t\treturn NetworkFilterMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// NetworkFilterMultiError is an error wrapping multiple validation errors\n// returned by NetworkFilter.ValidateAll() if the designated constraints\n// aren't met.\ntype NetworkFilterMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m NetworkFilterMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m NetworkFilterMultiError) AllErrors() []error { return m }\n\n// NetworkFilterValidationError is the validation error returned by\n// NetworkFilter.Validate if the designated constraints aren't met.\ntype NetworkFilterValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e NetworkFilterValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e NetworkFilterValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e NetworkFilterValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e NetworkFilterValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e NetworkFilterValidationError) ErrorName() string { return \"NetworkFilterValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e NetworkFilterValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sNetworkFilter.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = NetworkFilterValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = NetworkFilterValidationError{}\n"
  },
  {
    "path": "go/cilium/api/npds.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.11\n// \tprotoc        v6.33.2\n// source: cilium/api/npds.proto\n\npackage cilium\n\nimport (\n\t_ \"github.com/envoyproxy/go-control-plane/envoy/annotations\"\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/config/core/v3\"\n\tv31 \"github.com/envoyproxy/go-control-plane/envoy/config/route/v3\"\n\tv33 \"github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3\"\n\tv32 \"github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Action specifies what to do when the header matches.\ntype HeaderMatch_MatchAction int32\n\nconst (\n\tHeaderMatch_CONTINUE_ON_MATCH HeaderMatch_MatchAction = 0 // Keep checking other matches (default)\n\tHeaderMatch_FAIL_ON_MATCH     HeaderMatch_MatchAction = 1 // Drop the request if no other rule matches\n\tHeaderMatch_DELETE_ON_MATCH   HeaderMatch_MatchAction = 2 // Remove the whole matching header\n)\n\n// Enum value maps for HeaderMatch_MatchAction.\nvar (\n\tHeaderMatch_MatchAction_name = map[int32]string{\n\t\t0: \"CONTINUE_ON_MATCH\",\n\t\t1: \"FAIL_ON_MATCH\",\n\t\t2: \"DELETE_ON_MATCH\",\n\t}\n\tHeaderMatch_MatchAction_value = map[string]int32{\n\t\t\"CONTINUE_ON_MATCH\": 0,\n\t\t\"FAIL_ON_MATCH\":     1,\n\t\t\"DELETE_ON_MATCH\":   2,\n\t}\n)\n\nfunc (x HeaderMatch_MatchAction) Enum() *HeaderMatch_MatchAction {\n\tp := new(HeaderMatch_MatchAction)\n\t*p = x\n\treturn p\n}\n\nfunc (x HeaderMatch_MatchAction) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (HeaderMatch_MatchAction) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_cilium_api_npds_proto_enumTypes[0].Descriptor()\n}\n\nfunc (HeaderMatch_MatchAction) Type() protoreflect.EnumType {\n\treturn &file_cilium_api_npds_proto_enumTypes[0]\n}\n\nfunc (x HeaderMatch_MatchAction) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use HeaderMatch_MatchAction.Descriptor instead.\nfunc (HeaderMatch_MatchAction) EnumDescriptor() ([]byte, []int) {\n\treturn file_cilium_api_npds_proto_rawDescGZIP(), []int{5, 0}\n}\n\ntype HeaderMatch_MismatchAction int32\n\nconst (\n\tHeaderMatch_FAIL_ON_MISMATCH     HeaderMatch_MismatchAction = 0 // Drop the request if no other rule matches (default)\n\tHeaderMatch_CONTINUE_ON_MISMATCH HeaderMatch_MismatchAction = 1 // Keep checking other matches, log the mismatch\n\tHeaderMatch_ADD_ON_MISMATCH      HeaderMatch_MismatchAction = 2 // Add 'value' to the multivalued header\n\tHeaderMatch_DELETE_ON_MISMATCH   HeaderMatch_MismatchAction = 3 // Remove the whole mismatching header\n\tHeaderMatch_REPLACE_ON_MISMATCH  HeaderMatch_MismatchAction = 4 // Replace the whole mismatching header with 'value'\n)\n\n// Enum value maps for HeaderMatch_MismatchAction.\nvar (\n\tHeaderMatch_MismatchAction_name = map[int32]string{\n\t\t0: \"FAIL_ON_MISMATCH\",\n\t\t1: \"CONTINUE_ON_MISMATCH\",\n\t\t2: \"ADD_ON_MISMATCH\",\n\t\t3: \"DELETE_ON_MISMATCH\",\n\t\t4: \"REPLACE_ON_MISMATCH\",\n\t}\n\tHeaderMatch_MismatchAction_value = map[string]int32{\n\t\t\"FAIL_ON_MISMATCH\":     0,\n\t\t\"CONTINUE_ON_MISMATCH\": 1,\n\t\t\"ADD_ON_MISMATCH\":      2,\n\t\t\"DELETE_ON_MISMATCH\":   3,\n\t\t\"REPLACE_ON_MISMATCH\":  4,\n\t}\n)\n\nfunc (x HeaderMatch_MismatchAction) Enum() *HeaderMatch_MismatchAction {\n\tp := new(HeaderMatch_MismatchAction)\n\t*p = x\n\treturn p\n}\n\nfunc (x HeaderMatch_MismatchAction) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (HeaderMatch_MismatchAction) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_cilium_api_npds_proto_enumTypes[1].Descriptor()\n}\n\nfunc (HeaderMatch_MismatchAction) Type() protoreflect.EnumType {\n\treturn &file_cilium_api_npds_proto_enumTypes[1]\n}\n\nfunc (x HeaderMatch_MismatchAction) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use HeaderMatch_MismatchAction.Descriptor instead.\nfunc (HeaderMatch_MismatchAction) EnumDescriptor() ([]byte, []int) {\n\treturn file_cilium_api_npds_proto_rawDescGZIP(), []int{5, 1}\n}\n\n// A network policy that is enforced by a filter on the network flows to/from\n// associated hosts.\ntype NetworkPolicy struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// IPs of the endpoint to which this policy applies.\n\t// Required.\n\tEndpointIps []string `protobuf:\"bytes,1,rep,name=endpoint_ips,json=endpointIps,proto3\" json:\"endpoint_ips,omitempty\"`\n\t// The endpoint identifier associated with the network policy.\n\t// Required.\n\tEndpointId uint64 `protobuf:\"varint,2,opt,name=endpoint_id,json=endpointId,proto3\" json:\"endpoint_id,omitempty\"`\n\t// The part of the policy to be enforced at ingress by the filter, as a set\n\t// of per-port network policies, one per destination L4 port.\n\t// Every PortNetworkPolicy element in this set has a unique port / protocol\n\t// combination.\n\t// Optional. If empty, all flows in this direction are denied.\n\tIngressPerPortPolicies []*PortNetworkPolicy `protobuf:\"bytes,3,rep,name=ingress_per_port_policies,json=ingressPerPortPolicies,proto3\" json:\"ingress_per_port_policies,omitempty\"`\n\t// The part of the policy to be enforced at egress by the filter, as a set\n\t// of per-port network policies, one per destination L4 port.\n\t// Every PortNetworkPolicy element in this set has a unique port / protocol\n\t// combination.\n\t// Optional. If empty, all flows in this direction are denied.\n\tEgressPerPortPolicies []*PortNetworkPolicy `protobuf:\"bytes,4,rep,name=egress_per_port_policies,json=egressPerPortPolicies,proto3\" json:\"egress_per_port_policies,omitempty\"`\n\tunknownFields         protoimpl.UnknownFields\n\tsizeCache             protoimpl.SizeCache\n}\n\nfunc (x *NetworkPolicy) Reset() {\n\t*x = NetworkPolicy{}\n\tmi := &file_cilium_api_npds_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *NetworkPolicy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*NetworkPolicy) ProtoMessage() {}\n\nfunc (x *NetworkPolicy) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_npds_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use NetworkPolicy.ProtoReflect.Descriptor instead.\nfunc (*NetworkPolicy) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_npds_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *NetworkPolicy) GetEndpointIps() []string {\n\tif x != nil {\n\t\treturn x.EndpointIps\n\t}\n\treturn nil\n}\n\nfunc (x *NetworkPolicy) GetEndpointId() uint64 {\n\tif x != nil {\n\t\treturn x.EndpointId\n\t}\n\treturn 0\n}\n\nfunc (x *NetworkPolicy) GetIngressPerPortPolicies() []*PortNetworkPolicy {\n\tif x != nil {\n\t\treturn x.IngressPerPortPolicies\n\t}\n\treturn nil\n}\n\nfunc (x *NetworkPolicy) GetEgressPerPortPolicies() []*PortNetworkPolicy {\n\tif x != nil {\n\t\treturn x.EgressPerPortPolicies\n\t}\n\treturn nil\n}\n\n// A network policy to whitelist flows to a specific destination L4 port,\n// as a conjunction of predicates on L3/L4/L7 flows.\n// If all the predicates of a policy match a flow, the flow is whitelisted.\ntype PortNetworkPolicy struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The flows' destination L4 port number, as an unsigned 16-bit integer.\n\t// If 0, all destination L4 port numbers are matched by this predicate.\n\tPort uint32 `protobuf:\"varint,1,opt,name=port,proto3\" json:\"port,omitempty\"`\n\t// The end of the destination port range, if non-zero.\n\tEndPort uint32 `protobuf:\"varint,4,opt,name=end_port,json=endPort,proto3\" json:\"end_port,omitempty\"`\n\t// The flows' L4 transport protocol.\n\t// Required.\n\tProtocol v3.SocketAddress_Protocol `protobuf:\"varint,2,opt,name=protocol,proto3,enum=envoy.config.core.v3.SocketAddress_Protocol\" json:\"protocol,omitempty\"`\n\t// The network policy rules to be enforced on the flows to the port.\n\t// Optional. A flow is matched by this predicate if either the set of\n\t// rules is empty or any of the rules matches it.\n\tRules         []*PortNetworkPolicyRule `protobuf:\"bytes,3,rep,name=rules,proto3\" json:\"rules,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *PortNetworkPolicy) Reset() {\n\t*x = PortNetworkPolicy{}\n\tmi := &file_cilium_api_npds_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *PortNetworkPolicy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PortNetworkPolicy) ProtoMessage() {}\n\nfunc (x *PortNetworkPolicy) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_npds_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use PortNetworkPolicy.ProtoReflect.Descriptor instead.\nfunc (*PortNetworkPolicy) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_npds_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *PortNetworkPolicy) GetPort() uint32 {\n\tif x != nil {\n\t\treturn x.Port\n\t}\n\treturn 0\n}\n\nfunc (x *PortNetworkPolicy) GetEndPort() uint32 {\n\tif x != nil {\n\t\treturn x.EndPort\n\t}\n\treturn 0\n}\n\nfunc (x *PortNetworkPolicy) GetProtocol() v3.SocketAddress_Protocol {\n\tif x != nil {\n\t\treturn x.Protocol\n\t}\n\treturn v3.SocketAddress_Protocol(0)\n}\n\nfunc (x *PortNetworkPolicy) GetRules() []*PortNetworkPolicyRule {\n\tif x != nil {\n\t\treturn x.Rules\n\t}\n\treturn nil\n}\n\ntype TLSContext struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// CA certificates. If present, the counterparty must provide a valid\n\t// certificate.\n\t// Deprecated, use 'validation_context_sds_secret' instead.\n\tTrustedCa string `protobuf:\"bytes,1,opt,name=trusted_ca,json=trustedCa,proto3\" json:\"trusted_ca,omitempty\"`\n\t// Certificate chain.\n\t// Deprecated, use 'tls_sds_secret' instead.\n\tCertificateChain string `protobuf:\"bytes,2,opt,name=certificate_chain,json=certificateChain,proto3\" json:\"certificate_chain,omitempty\"`\n\t// Private key\n\t// Deprecated, use 'tls_sds_secret' instead.\n\tPrivateKey string `protobuf:\"bytes,3,opt,name=private_key,json=privateKey,proto3\" json:\"private_key,omitempty\"`\n\t// Server Name Indicator. For downstream this helps choose the certificate to\n\t// present to the client. For upstream this will be used as the SNI on the\n\t// client connection.\n\tServerNames []string `protobuf:\"bytes,4,rep,name=server_names,json=serverNames,proto3\" json:\"server_names,omitempty\"`\n\t// Name of an SDS secret for CA certificates. Secret is fetched from the same gRPC source as\n\t// this Network Policy. If present, the counterparty must provide a valid certificate.\n\t// May not be used at the same time with 'trusted_ca'.\n\tValidationContextSdsSecret string `protobuf:\"bytes,5,opt,name=validation_context_sds_secret,json=validationContextSdsSecret,proto3\" json:\"validation_context_sds_secret,omitempty\"`\n\t// Name of an SDS secret for both TLS private key and certificate chain. Secret is fetched\n\t// from the same gRPC source as this Network Policy.\n\t// May not be used at the same time with 'certificate_chain' or 'private_key'.\n\tTlsSdsSecret string `protobuf:\"bytes,6,opt,name=tls_sds_secret,json=tlsSdsSecret,proto3\" json:\"tls_sds_secret,omitempty\"`\n\t// Set of ALPN protocols, e.g., [ “h2\", \"http/1.1” ] when both HTTP 1.1 and HTTP 2 are supported.\n\tAlpnProtocols []string `protobuf:\"bytes,7,rep,name=alpn_protocols,json=alpnProtocols,proto3\" json:\"alpn_protocols,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *TLSContext) Reset() {\n\t*x = TLSContext{}\n\tmi := &file_cilium_api_npds_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *TLSContext) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*TLSContext) ProtoMessage() {}\n\nfunc (x *TLSContext) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_npds_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use TLSContext.ProtoReflect.Descriptor instead.\nfunc (*TLSContext) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_npds_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *TLSContext) GetTrustedCa() string {\n\tif x != nil {\n\t\treturn x.TrustedCa\n\t}\n\treturn \"\"\n}\n\nfunc (x *TLSContext) GetCertificateChain() string {\n\tif x != nil {\n\t\treturn x.CertificateChain\n\t}\n\treturn \"\"\n}\n\nfunc (x *TLSContext) GetPrivateKey() string {\n\tif x != nil {\n\t\treturn x.PrivateKey\n\t}\n\treturn \"\"\n}\n\nfunc (x *TLSContext) GetServerNames() []string {\n\tif x != nil {\n\t\treturn x.ServerNames\n\t}\n\treturn nil\n}\n\nfunc (x *TLSContext) GetValidationContextSdsSecret() string {\n\tif x != nil {\n\t\treturn x.ValidationContextSdsSecret\n\t}\n\treturn \"\"\n}\n\nfunc (x *TLSContext) GetTlsSdsSecret() string {\n\tif x != nil {\n\t\treturn x.TlsSdsSecret\n\t}\n\treturn \"\"\n}\n\nfunc (x *TLSContext) GetAlpnProtocols() []string {\n\tif x != nil {\n\t\treturn x.AlpnProtocols\n\t}\n\treturn nil\n}\n\n// A network policy rule, as a conjunction of predicates on L3/L7 flows.\n// If all the predicates of a rule match a flow, the flow is matched by the\n// rule.\ntype PortNetworkPolicyRule struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Precedence level for this rule. Rules with **higher** numeric values take\n\t// precedence, even over deny rules of lower precedence level.\n\t// The lowest precedence (zero) is used when not specified.\n\tPrecedence uint32 `protobuf:\"varint,10,opt,name=precedence,proto3\" json:\"precedence,omitempty\"`\n\t// Optional verdict, mutually exclusive. If missing then the verdict is an allow.\n\t//\n\t// Types that are valid to be assigned to Verdict:\n\t//\n\t//\t*PortNetworkPolicyRule_PassPrecedence\n\t//\t*PortNetworkPolicyRule_Deny\n\tVerdict isPortNetworkPolicyRule_Verdict `protobuf_oneof:\"verdict\"`\n\t// ProxyID is non-zero if the rule was an allow rule with an explicit listener reference.\n\t// The given value corresponds to the 'proxy_id' value in the BpfMetadata listener filter\n\t// configuration.\n\t// This rule should be ignored if not executing in the referred listener.\n\tProxyId uint32 `protobuf:\"varint,9,opt,name=proxy_id,json=proxyId,proto3\" json:\"proxy_id,omitempty\"`\n\t// Optional name for the rule, can be used in logging and error messages.\n\tName string `protobuf:\"bytes,5,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// The set of numeric remote security IDs explicitly allowed or denied.\n\t// A flow is matched by this predicate if the identifier of the policy\n\t// applied on the flow's remote host is contained in this set.\n\t// Optional. If not specified, any remote host is matched by this predicate.\n\tRemotePolicies []uint32 `protobuf:\"varint,7,rep,packed,name=remote_policies,json=remotePolicies,proto3\" json:\"remote_policies,omitempty\"`\n\t// Optional downstream TLS context. If present, the incoming connection must\n\t// be a TLS connection.\n\tDownstreamTlsContext *TLSContext `protobuf:\"bytes,3,opt,name=downstream_tls_context,json=downstreamTlsContext,proto3\" json:\"downstream_tls_context,omitempty\"`\n\t// Optional upstream TLS context. If present, the outgoing connection will use\n\t// TLS.\n\tUpstreamTlsContext *TLSContext `protobuf:\"bytes,4,opt,name=upstream_tls_context,json=upstreamTlsContext,proto3\" json:\"upstream_tls_context,omitempty\"`\n\t// Optional allowed SNIs in TLS handshake.\n\t// The validation pattern here is synced with the corresponding k8s type in cilium/cilium.\n\t// The validation pattern consists of one or more dot-delimited subdomains, where each\n\t// subdomain can be:\n\t//   - '*',\n\t//   - '**', or\n\t//   - a pattern of one or more valid DNS name characters, optionally including non-consecutive\n\t//     wildcard specifiers ('*')\n\t//\n\t// The pattern consists of repeating parts:\n\t// <DNSCHARS> = \"[-a-zA-Z0-9_]\"\n\t// <SUBDOMAIN> = \"[*]?<DNSCHARS>+([*]<DNSCHARS>+)*[*]?\"\n\t// <SUBPATTERN> = \"([*]{1,2}|<SUBDOMAIN>)\"\n\t// PATTERN = \"^(<SUBPATTERN>[.])*<SUBPATTERN>$\"\n\tServerNames []string `protobuf:\"bytes,6,rep,name=server_names,json=serverNames,proto3\" json:\"server_names,omitempty\"`\n\t// Optional L7 protocol parser name. This is only used if the parser is not\n\t// one of the well knows ones. If specified, the l7 parser having this name\n\t// needs to be built in to libcilium.so.\n\tL7Proto string `protobuf:\"bytes,2,opt,name=l7_proto,json=l7Proto,proto3\" json:\"l7_proto,omitempty\"`\n\t// Optional. If not specified, any L7 request is matched by this predicate.\n\t// All rules on any given port must have the same type of L7 rules!\n\t//\n\t// Types that are valid to be assigned to L7:\n\t//\n\t//\t*PortNetworkPolicyRule_HttpRules\n\t//\t*PortNetworkPolicyRule_KafkaRules\n\t//\t*PortNetworkPolicyRule_L7Rules\n\tL7            isPortNetworkPolicyRule_L7 `protobuf_oneof:\"l7\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *PortNetworkPolicyRule) Reset() {\n\t*x = PortNetworkPolicyRule{}\n\tmi := &file_cilium_api_npds_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *PortNetworkPolicyRule) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PortNetworkPolicyRule) ProtoMessage() {}\n\nfunc (x *PortNetworkPolicyRule) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_npds_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use PortNetworkPolicyRule.ProtoReflect.Descriptor instead.\nfunc (*PortNetworkPolicyRule) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_npds_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *PortNetworkPolicyRule) GetPrecedence() uint32 {\n\tif x != nil {\n\t\treturn x.Precedence\n\t}\n\treturn 0\n}\n\nfunc (x *PortNetworkPolicyRule) GetVerdict() isPortNetworkPolicyRule_Verdict {\n\tif x != nil {\n\t\treturn x.Verdict\n\t}\n\treturn nil\n}\n\nfunc (x *PortNetworkPolicyRule) GetPassPrecedence() uint32 {\n\tif x != nil {\n\t\tif x, ok := x.Verdict.(*PortNetworkPolicyRule_PassPrecedence); ok {\n\t\t\treturn x.PassPrecedence\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (x *PortNetworkPolicyRule) GetDeny() bool {\n\tif x != nil {\n\t\tif x, ok := x.Verdict.(*PortNetworkPolicyRule_Deny); ok {\n\t\t\treturn x.Deny\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (x *PortNetworkPolicyRule) GetProxyId() uint32 {\n\tif x != nil {\n\t\treturn x.ProxyId\n\t}\n\treturn 0\n}\n\nfunc (x *PortNetworkPolicyRule) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *PortNetworkPolicyRule) GetRemotePolicies() []uint32 {\n\tif x != nil {\n\t\treturn x.RemotePolicies\n\t}\n\treturn nil\n}\n\nfunc (x *PortNetworkPolicyRule) GetDownstreamTlsContext() *TLSContext {\n\tif x != nil {\n\t\treturn x.DownstreamTlsContext\n\t}\n\treturn nil\n}\n\nfunc (x *PortNetworkPolicyRule) GetUpstreamTlsContext() *TLSContext {\n\tif x != nil {\n\t\treturn x.UpstreamTlsContext\n\t}\n\treturn nil\n}\n\nfunc (x *PortNetworkPolicyRule) GetServerNames() []string {\n\tif x != nil {\n\t\treturn x.ServerNames\n\t}\n\treturn nil\n}\n\nfunc (x *PortNetworkPolicyRule) GetL7Proto() string {\n\tif x != nil {\n\t\treturn x.L7Proto\n\t}\n\treturn \"\"\n}\n\nfunc (x *PortNetworkPolicyRule) GetL7() isPortNetworkPolicyRule_L7 {\n\tif x != nil {\n\t\treturn x.L7\n\t}\n\treturn nil\n}\n\nfunc (x *PortNetworkPolicyRule) GetHttpRules() *HttpNetworkPolicyRules {\n\tif x != nil {\n\t\tif x, ok := x.L7.(*PortNetworkPolicyRule_HttpRules); ok {\n\t\t\treturn x.HttpRules\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *PortNetworkPolicyRule) GetKafkaRules() *KafkaNetworkPolicyRules {\n\tif x != nil {\n\t\tif x, ok := x.L7.(*PortNetworkPolicyRule_KafkaRules); ok {\n\t\t\treturn x.KafkaRules\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *PortNetworkPolicyRule) GetL7Rules() *L7NetworkPolicyRules {\n\tif x != nil {\n\t\tif x, ok := x.L7.(*PortNetworkPolicyRule_L7Rules); ok {\n\t\t\treturn x.L7Rules\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isPortNetworkPolicyRule_Verdict interface {\n\tisPortNetworkPolicyRule_Verdict()\n}\n\ntype PortNetworkPolicyRule_PassPrecedence struct {\n\t// Precedence after which policy evaluation should be continued at for the selected\n\t// remotes_policies.\n\tPassPrecedence uint32 `protobuf:\"varint,1,opt,name=pass_precedence,json=passPrecedence,proto3,oneof\"`\n}\n\ntype PortNetworkPolicyRule_Deny struct {\n\t// Traffic on this port is denied for all `remote_policies` if true\n\tDeny bool `protobuf:\"varint,8,opt,name=deny,proto3,oneof\"`\n}\n\nfunc (*PortNetworkPolicyRule_PassPrecedence) isPortNetworkPolicyRule_Verdict() {}\n\nfunc (*PortNetworkPolicyRule_Deny) isPortNetworkPolicyRule_Verdict() {}\n\ntype isPortNetworkPolicyRule_L7 interface {\n\tisPortNetworkPolicyRule_L7()\n}\n\ntype PortNetworkPolicyRule_HttpRules struct {\n\t// The set of HTTP network policy rules.\n\t// An HTTP request is matched by this predicate if any of its rules matches\n\t// the request.\n\tHttpRules *HttpNetworkPolicyRules `protobuf:\"bytes,100,opt,name=http_rules,json=httpRules,proto3,oneof\"`\n}\n\ntype PortNetworkPolicyRule_KafkaRules struct {\n\t// The set of Kafka network policy rules.\n\t// A Kafka request is matched by this predicate if any of its rules matches\n\t// the request.\n\tKafkaRules *KafkaNetworkPolicyRules `protobuf:\"bytes,101,opt,name=kafka_rules,json=kafkaRules,proto3,oneof\"`\n}\n\ntype PortNetworkPolicyRule_L7Rules struct {\n\t// Set of Generic policy rules used when 'l7_proto' is defined.\n\t// Only to be used for l7 protocols for which a specific oneof\n\t// is not defined\n\tL7Rules *L7NetworkPolicyRules `protobuf:\"bytes,102,opt,name=l7_rules,json=l7Rules,proto3,oneof\"`\n}\n\nfunc (*PortNetworkPolicyRule_HttpRules) isPortNetworkPolicyRule_L7() {}\n\nfunc (*PortNetworkPolicyRule_KafkaRules) isPortNetworkPolicyRule_L7() {}\n\nfunc (*PortNetworkPolicyRule_L7Rules) isPortNetworkPolicyRule_L7() {}\n\n// A set of network policy rules that match HTTP requests.\ntype HttpNetworkPolicyRules struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The set of HTTP network policy rules.\n\t// An HTTP request is matched if any of its rules matches the request.\n\t// Required and may not be empty.\n\tHttpRules     []*HttpNetworkPolicyRule `protobuf:\"bytes,1,rep,name=http_rules,json=httpRules,proto3\" json:\"http_rules,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HttpNetworkPolicyRules) Reset() {\n\t*x = HttpNetworkPolicyRules{}\n\tmi := &file_cilium_api_npds_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpNetworkPolicyRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpNetworkPolicyRules) ProtoMessage() {}\n\nfunc (x *HttpNetworkPolicyRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_npds_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpNetworkPolicyRules.ProtoReflect.Descriptor instead.\nfunc (*HttpNetworkPolicyRules) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_npds_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *HttpNetworkPolicyRules) GetHttpRules() []*HttpNetworkPolicyRule {\n\tif x != nil {\n\t\treturn x.HttpRules\n\t}\n\treturn nil\n}\n\ntype HeaderMatch struct {\n\tstate          protoimpl.MessageState     `protogen:\"open.v1\"`\n\tName           string                     `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tValue          string                     `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"` // empty for presence match. For secret data use 'value_sds_secret' instead.\n\tMatchAction    HeaderMatch_MatchAction    `protobuf:\"varint,3,opt,name=match_action,json=matchAction,proto3,enum=cilium.HeaderMatch_MatchAction\" json:\"match_action,omitempty\"`\n\tMismatchAction HeaderMatch_MismatchAction `protobuf:\"varint,4,opt,name=mismatch_action,json=mismatchAction,proto3,enum=cilium.HeaderMatch_MismatchAction\" json:\"mismatch_action,omitempty\"`\n\t// Generic secret name for fetching value via SDS. Secret is fetched from the same gRPC source as\n\t// this Network Policy.\n\tValueSdsSecret string `protobuf:\"bytes,5,opt,name=value_sds_secret,json=valueSdsSecret,proto3\" json:\"value_sds_secret,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *HeaderMatch) Reset() {\n\t*x = HeaderMatch{}\n\tmi := &file_cilium_api_npds_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HeaderMatch) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HeaderMatch) ProtoMessage() {}\n\nfunc (x *HeaderMatch) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_npds_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HeaderMatch.ProtoReflect.Descriptor instead.\nfunc (*HeaderMatch) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_npds_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *HeaderMatch) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *HeaderMatch) GetValue() string {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn \"\"\n}\n\nfunc (x *HeaderMatch) GetMatchAction() HeaderMatch_MatchAction {\n\tif x != nil {\n\t\treturn x.MatchAction\n\t}\n\treturn HeaderMatch_CONTINUE_ON_MATCH\n}\n\nfunc (x *HeaderMatch) GetMismatchAction() HeaderMatch_MismatchAction {\n\tif x != nil {\n\t\treturn x.MismatchAction\n\t}\n\treturn HeaderMatch_FAIL_ON_MISMATCH\n}\n\nfunc (x *HeaderMatch) GetValueSdsSecret() string {\n\tif x != nil {\n\t\treturn x.ValueSdsSecret\n\t}\n\treturn \"\"\n}\n\n// An HTTP network policy rule, as a conjunction of predicates on HTTP requests.\n// If all the predicates of a rule match an HTTP request, the request is\n// allowed. Otherwise, it is denied.\ntype HttpNetworkPolicyRule struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// A set of matchers on the HTTP request's headers' names and values.\n\t// If all the matchers in this set match an HTTP request, the request is\n\t// allowed by this rule. Otherwise, it is denied.\n\t//\n\t// Some special header names are:\n\t//\n\t// * *:uri*: The HTTP request's URI.\n\t// * *:method*: The HTTP request's method.\n\t// * *:authority*: Also maps to the HTTP 1.1 *Host* header.\n\t//\n\t// Optional. If empty, matches any HTTP request.\n\tHeaders []*v31.HeaderMatcher `protobuf:\"bytes,1,rep,name=headers,proto3\" json:\"headers,omitempty\"`\n\t// header_matches is a set of HTTP header name and value pairs that\n\t// will be matched against the request headers, if all the other match\n\t// requirements in 'headers' are met. Each HeaderAction determines what to do\n\t// when there is a match or mismatch.\n\t//\n\t// Optional.\n\tHeaderMatches []*HeaderMatch `protobuf:\"bytes,2,rep,name=header_matches,json=headerMatches,proto3\" json:\"header_matches,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HttpNetworkPolicyRule) Reset() {\n\t*x = HttpNetworkPolicyRule{}\n\tmi := &file_cilium_api_npds_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpNetworkPolicyRule) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpNetworkPolicyRule) ProtoMessage() {}\n\nfunc (x *HttpNetworkPolicyRule) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_npds_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpNetworkPolicyRule.ProtoReflect.Descriptor instead.\nfunc (*HttpNetworkPolicyRule) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_npds_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *HttpNetworkPolicyRule) GetHeaders() []*v31.HeaderMatcher {\n\tif x != nil {\n\t\treturn x.Headers\n\t}\n\treturn nil\n}\n\nfunc (x *HttpNetworkPolicyRule) GetHeaderMatches() []*HeaderMatch {\n\tif x != nil {\n\t\treturn x.HeaderMatches\n\t}\n\treturn nil\n}\n\n// A set of network policy rules that match Kafka requests.\ntype KafkaNetworkPolicyRules struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The set of Kafka network policy rules.\n\t// A Kafka request is matched if any of its rules matches the request.\n\t// Required and may not be empty.\n\tKafkaRules    []*KafkaNetworkPolicyRule `protobuf:\"bytes,1,rep,name=kafka_rules,json=kafkaRules,proto3\" json:\"kafka_rules,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *KafkaNetworkPolicyRules) Reset() {\n\t*x = KafkaNetworkPolicyRules{}\n\tmi := &file_cilium_api_npds_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *KafkaNetworkPolicyRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*KafkaNetworkPolicyRules) ProtoMessage() {}\n\nfunc (x *KafkaNetworkPolicyRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_npds_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use KafkaNetworkPolicyRules.ProtoReflect.Descriptor instead.\nfunc (*KafkaNetworkPolicyRules) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_npds_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *KafkaNetworkPolicyRules) GetKafkaRules() []*KafkaNetworkPolicyRule {\n\tif x != nil {\n\t\treturn x.KafkaRules\n\t}\n\treturn nil\n}\n\n// A Kafka network policy rule, as a conjunction of predicates on Kafka\n// requests. If all the predicates of a rule match a Kafka request, the request\n// is allowed. Otherwise, it is denied.\ntype KafkaNetworkPolicyRule struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The Kafka request's API version.\n\t// If < 0, all Kafka requests are matched by this predicate.\n\tApiVersion int32 `protobuf:\"varint,1,opt,name=api_version,json=apiVersion,proto3\" json:\"api_version,omitempty\"`\n\t// Set of allowed API keys in the Kafka request.\n\t// If none, all Kafka requests are matched by this predicate.\n\tApiKeys []int32 `protobuf:\"varint,2,rep,packed,name=api_keys,json=apiKeys,proto3\" json:\"api_keys,omitempty\"`\n\t// The Kafka request's client ID.\n\t// Optional. If not specified, all Kafka requests are matched by this\n\t// predicate. If specified, this predicates only matches requests that contain\n\t// this client ID, and never matches requests that don't contain any client\n\t// ID.\n\tClientId string `protobuf:\"bytes,3,opt,name=client_id,json=clientId,proto3\" json:\"client_id,omitempty\"`\n\t// The Kafka request's topic.\n\t// Optional. If not specified, this rule will not consider the Kafka request's\n\t// topics. If specified, this predicates only matches requests that contain\n\t// this topic, and never matches requests that don't contain any topic.\n\t// However, messages that can not contain a topic will also me matched.\n\tTopic         string `protobuf:\"bytes,4,opt,name=topic,proto3\" json:\"topic,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *KafkaNetworkPolicyRule) Reset() {\n\t*x = KafkaNetworkPolicyRule{}\n\tmi := &file_cilium_api_npds_proto_msgTypes[8]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *KafkaNetworkPolicyRule) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*KafkaNetworkPolicyRule) ProtoMessage() {}\n\nfunc (x *KafkaNetworkPolicyRule) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_npds_proto_msgTypes[8]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use KafkaNetworkPolicyRule.ProtoReflect.Descriptor instead.\nfunc (*KafkaNetworkPolicyRule) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_npds_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *KafkaNetworkPolicyRule) GetApiVersion() int32 {\n\tif x != nil {\n\t\treturn x.ApiVersion\n\t}\n\treturn 0\n}\n\nfunc (x *KafkaNetworkPolicyRule) GetApiKeys() []int32 {\n\tif x != nil {\n\t\treturn x.ApiKeys\n\t}\n\treturn nil\n}\n\nfunc (x *KafkaNetworkPolicyRule) GetClientId() string {\n\tif x != nil {\n\t\treturn x.ClientId\n\t}\n\treturn \"\"\n}\n\nfunc (x *KafkaNetworkPolicyRule) GetTopic() string {\n\tif x != nil {\n\t\treturn x.Topic\n\t}\n\treturn \"\"\n}\n\n// A set of network policy rules that match generic L7 requests.\ntype L7NetworkPolicyRules struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The set of allowing l7 policy rules.\n\t// A request is allowed if any of these rules matches the request,\n\t// and the request does not match any of the deny rules.\n\t// Optional. If missing or empty then all requests are allowed, unless\n\t// denied by a deny rule.\n\tL7AllowRules []*L7NetworkPolicyRule `protobuf:\"bytes,1,rep,name=l7_allow_rules,json=l7AllowRules,proto3\" json:\"l7_allow_rules,omitempty\"`\n\t// The set of denying l7 policy rules.\n\t// A request is denied if any of these rules matches the request.\n\t// A request that is not denied may be allowed by 'l7_allow_rules'.\n\t// Optional.\n\tL7DenyRules   []*L7NetworkPolicyRule `protobuf:\"bytes,2,rep,name=l7_deny_rules,json=l7DenyRules,proto3\" json:\"l7_deny_rules,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *L7NetworkPolicyRules) Reset() {\n\t*x = L7NetworkPolicyRules{}\n\tmi := &file_cilium_api_npds_proto_msgTypes[9]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *L7NetworkPolicyRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*L7NetworkPolicyRules) ProtoMessage() {}\n\nfunc (x *L7NetworkPolicyRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_npds_proto_msgTypes[9]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use L7NetworkPolicyRules.ProtoReflect.Descriptor instead.\nfunc (*L7NetworkPolicyRules) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_npds_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *L7NetworkPolicyRules) GetL7AllowRules() []*L7NetworkPolicyRule {\n\tif x != nil {\n\t\treturn x.L7AllowRules\n\t}\n\treturn nil\n}\n\nfunc (x *L7NetworkPolicyRules) GetL7DenyRules() []*L7NetworkPolicyRule {\n\tif x != nil {\n\t\treturn x.L7DenyRules\n\t}\n\treturn nil\n}\n\n// A generic L7 policy rule, as a conjunction of predicates on l7 requests.\n// If all the predicates of a rule match a request, the request is allowed.\n// Otherwise, it is denied.\ntype L7NetworkPolicyRule struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Optional rule name, can be used in logging and error messages.\n\tName string `protobuf:\"bytes,3,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Generic rule for Go extensions.\n\t// Optional. If empty, matches any request. Not allowed if 'metadata_rule' is\n\t// present.\n\tRule map[string]string `protobuf:\"bytes,1,rep,name=rule,proto3\" json:\"rule,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\t// Generic rule for Envoy metadata enforcement. All matchers must match for\n\t// the rule to allow the request/connection. Optional. If empty, matches any\n\t// request. Not allowed if 'rule' is present.\n\tMetadataRule  []*v32.MetadataMatcher `protobuf:\"bytes,2,rep,name=metadata_rule,json=metadataRule,proto3\" json:\"metadata_rule,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *L7NetworkPolicyRule) Reset() {\n\t*x = L7NetworkPolicyRule{}\n\tmi := &file_cilium_api_npds_proto_msgTypes[10]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *L7NetworkPolicyRule) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*L7NetworkPolicyRule) ProtoMessage() {}\n\nfunc (x *L7NetworkPolicyRule) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_npds_proto_msgTypes[10]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use L7NetworkPolicyRule.ProtoReflect.Descriptor instead.\nfunc (*L7NetworkPolicyRule) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_npds_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *L7NetworkPolicyRule) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *L7NetworkPolicyRule) GetRule() map[string]string {\n\tif x != nil {\n\t\treturn x.Rule\n\t}\n\treturn nil\n}\n\nfunc (x *L7NetworkPolicyRule) GetMetadataRule() []*v32.MetadataMatcher {\n\tif x != nil {\n\t\treturn x.MetadataRule\n\t}\n\treturn nil\n}\n\n// Cilium's network policy manager fills this message with all currently known network policies.\ntype NetworkPoliciesConfigDump struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The loaded networkpolicy configs.\n\tNetworkpolicies []*NetworkPolicy `protobuf:\"bytes,1,rep,name=networkpolicies,proto3\" json:\"networkpolicies,omitempty\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *NetworkPoliciesConfigDump) Reset() {\n\t*x = NetworkPoliciesConfigDump{}\n\tmi := &file_cilium_api_npds_proto_msgTypes[11]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *NetworkPoliciesConfigDump) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*NetworkPoliciesConfigDump) ProtoMessage() {}\n\nfunc (x *NetworkPoliciesConfigDump) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_npds_proto_msgTypes[11]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use NetworkPoliciesConfigDump.ProtoReflect.Descriptor instead.\nfunc (*NetworkPoliciesConfigDump) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_npds_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *NetworkPoliciesConfigDump) GetNetworkpolicies() []*NetworkPolicy {\n\tif x != nil {\n\t\treturn x.Networkpolicies\n\t}\n\treturn nil\n}\n\nvar File_cilium_api_npds_proto protoreflect.FileDescriptor\n\nconst file_cilium_api_npds_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x15cilium/api/npds.proto\\x12\\x06cilium\\x1a\\\"envoy/config/core/v3/address.proto\\x1a,envoy/config/route/v3/route_components.proto\\x1a*envoy/service/discovery/v3/discovery.proto\\x1a$envoy/type/matcher/v3/metadata.proto\\x1a\\x1cgoogle/api/annotations.proto\\x1a envoy/annotations/resource.proto\\x1a\\x17validate/validate.proto\\\"\\x95\\x02\\n\" +\n\t\"\\rNetworkPolicy\\x123\\n\" +\n\t\"\\fendpoint_ips\\x18\\x01 \\x03(\\tB\\x10\\xfaB\\r\\x92\\x01\\n\" +\n\t\"\\b\\x01\\x10\\x02\\\"\\x04r\\x02\\x10\\x01R\\vendpointIps\\x12\\x1f\\n\" +\n\t\"\\vendpoint_id\\x18\\x02 \\x01(\\x04R\\n\" +\n\t\"endpointId\\x12T\\n\" +\n\t\"\\x19ingress_per_port_policies\\x18\\x03 \\x03(\\v2\\x19.cilium.PortNetworkPolicyR\\x16ingressPerPortPolicies\\x12R\\n\" +\n\t\"\\x18egress_per_port_policies\\x18\\x04 \\x03(\\v2\\x19.cilium.PortNetworkPolicyR\\x15egressPerPortPoliciesJ\\x04\\b\\x05\\x10\\x06\\\"\\xd7\\x01\\n\" +\n\t\"\\x11PortNetworkPolicy\\x12\\x1d\\n\" +\n\t\"\\x04port\\x18\\x01 \\x01(\\rB\\t\\xfaB\\x06*\\x04\\x18\\xff\\xff\\x03R\\x04port\\x12$\\n\" +\n\t\"\\bend_port\\x18\\x04 \\x01(\\rB\\t\\xfaB\\x06*\\x04\\x18\\xff\\xff\\x03R\\aendPort\\x12H\\n\" +\n\t\"\\bprotocol\\x18\\x02 \\x01(\\x0e2,.envoy.config.core.v3.SocketAddress.ProtocolR\\bprotocol\\x123\\n\" +\n\t\"\\x05rules\\x18\\x03 \\x03(\\v2\\x1d.cilium.PortNetworkPolicyRuleR\\x05rules\\\"\\xac\\x02\\n\" +\n\t\"\\n\" +\n\t\"TLSContext\\x12\\x1d\\n\" +\n\t\"\\n\" +\n\t\"trusted_ca\\x18\\x01 \\x01(\\tR\\ttrustedCa\\x12+\\n\" +\n\t\"\\x11certificate_chain\\x18\\x02 \\x01(\\tR\\x10certificateChain\\x12\\x1f\\n\" +\n\t\"\\vprivate_key\\x18\\x03 \\x01(\\tR\\n\" +\n\t\"privateKey\\x12!\\n\" +\n\t\"\\fserver_names\\x18\\x04 \\x03(\\tR\\vserverNames\\x12A\\n\" +\n\t\"\\x1dvalidation_context_sds_secret\\x18\\x05 \\x01(\\tR\\x1avalidationContextSdsSecret\\x12$\\n\" +\n\t\"\\x0etls_sds_secret\\x18\\x06 \\x01(\\tR\\ftlsSdsSecret\\x12%\\n\" +\n\t\"\\x0ealpn_protocols\\x18\\a \\x03(\\tR\\ralpnProtocols\\\"\\xfb\\x05\\n\" +\n\t\"\\x15PortNetworkPolicyRule\\x12\\x1e\\n\" +\n\t\"\\n\" +\n\t\"precedence\\x18\\n\" +\n\t\" \\x01(\\rR\\n\" +\n\t\"precedence\\x12)\\n\" +\n\t\"\\x0fpass_precedence\\x18\\x01 \\x01(\\rH\\x00R\\x0epassPrecedence\\x12\\x14\\n\" +\n\t\"\\x04deny\\x18\\b \\x01(\\bH\\x00R\\x04deny\\x12$\\n\" +\n\t\"\\bproxy_id\\x18\\t \\x01(\\rB\\t\\xfaB\\x06*\\x04\\x18\\xff\\xff\\x03R\\aproxyId\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x05 \\x01(\\tR\\x04name\\x12'\\n\" +\n\t\"\\x0fremote_policies\\x18\\a \\x03(\\rR\\x0eremotePolicies\\x12H\\n\" +\n\t\"\\x16downstream_tls_context\\x18\\x03 \\x01(\\v2\\x12.cilium.TLSContextR\\x14downstreamTlsContext\\x12D\\n\" +\n\t\"\\x14upstream_tls_context\\x18\\x04 \\x01(\\v2\\x12.cilium.TLSContextR\\x12upstreamTlsContext\\x12\\xa1\\x01\\n\" +\n\t\"\\fserver_names\\x18\\x06 \\x03(\\tB~\\xfaB{\\x92\\x01x\\\"vrt2r^(([*]{1,2}|[*]?[-a-zA-Z0-9_]+([*][-a-zA-Z0-9_]+)*[*]?)[.])*([*]{1,2}|[*]?[-a-zA-Z0-9_]+([*][-a-zA-Z0-9_]+)*[*]?)$R\\vserverNames\\x12\\x19\\n\" +\n\t\"\\bl7_proto\\x18\\x02 \\x01(\\tR\\al7Proto\\x12?\\n\" +\n\t\"\\n\" +\n\t\"http_rules\\x18d \\x01(\\v2\\x1e.cilium.HttpNetworkPolicyRulesH\\x01R\\thttpRules\\x12B\\n\" +\n\t\"\\vkafka_rules\\x18e \\x01(\\v2\\x1f.cilium.KafkaNetworkPolicyRulesH\\x01R\\n\" +\n\t\"kafkaRules\\x129\\n\" +\n\t\"\\bl7_rules\\x18f \\x01(\\v2\\x1c.cilium.L7NetworkPolicyRulesH\\x01R\\al7RulesB\\t\\n\" +\n\t\"\\averdictB\\x04\\n\" +\n\t\"\\x02l7\\\"`\\n\" +\n\t\"\\x16HttpNetworkPolicyRules\\x12F\\n\" +\n\t\"\\n\" +\n\t\"http_rules\\x18\\x01 \\x03(\\v2\\x1d.cilium.HttpNetworkPolicyRuleB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\thttpRules\\\"\\xd2\\x03\\n\" +\n\t\"\\vHeaderMatch\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\tR\\x05value\\x12B\\n\" +\n\t\"\\fmatch_action\\x18\\x03 \\x01(\\x0e2\\x1f.cilium.HeaderMatch.MatchActionR\\vmatchAction\\x12K\\n\" +\n\t\"\\x0fmismatch_action\\x18\\x04 \\x01(\\x0e2\\\".cilium.HeaderMatch.MismatchActionR\\x0emismatchAction\\x12(\\n\" +\n\t\"\\x10value_sds_secret\\x18\\x05 \\x01(\\tR\\x0evalueSdsSecret\\\"L\\n\" +\n\t\"\\vMatchAction\\x12\\x15\\n\" +\n\t\"\\x11CONTINUE_ON_MATCH\\x10\\x00\\x12\\x11\\n\" +\n\t\"\\rFAIL_ON_MATCH\\x10\\x01\\x12\\x13\\n\" +\n\t\"\\x0fDELETE_ON_MATCH\\x10\\x02\\\"\\x86\\x01\\n\" +\n\t\"\\x0eMismatchAction\\x12\\x14\\n\" +\n\t\"\\x10FAIL_ON_MISMATCH\\x10\\x00\\x12\\x18\\n\" +\n\t\"\\x14CONTINUE_ON_MISMATCH\\x10\\x01\\x12\\x13\\n\" +\n\t\"\\x0fADD_ON_MISMATCH\\x10\\x02\\x12\\x16\\n\" +\n\t\"\\x12DELETE_ON_MISMATCH\\x10\\x03\\x12\\x17\\n\" +\n\t\"\\x13REPLACE_ON_MISMATCH\\x10\\x04\\\"\\x93\\x01\\n\" +\n\t\"\\x15HttpNetworkPolicyRule\\x12>\\n\" +\n\t\"\\aheaders\\x18\\x01 \\x03(\\v2$.envoy.config.route.v3.HeaderMatcherR\\aheaders\\x12:\\n\" +\n\t\"\\x0eheader_matches\\x18\\x02 \\x03(\\v2\\x13.cilium.HeaderMatchR\\rheaderMatches\\\"d\\n\" +\n\t\"\\x17KafkaNetworkPolicyRules\\x12I\\n\" +\n\t\"\\vkafka_rules\\x18\\x01 \\x03(\\v2\\x1e.cilium.KafkaNetworkPolicyRuleB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\n\" +\n\t\"kafkaRules\\\"\\xbe\\x01\\n\" +\n\t\"\\x16KafkaNetworkPolicyRule\\x12\\x1f\\n\" +\n\t\"\\vapi_version\\x18\\x01 \\x01(\\x05R\\n\" +\n\t\"apiVersion\\x12\\x19\\n\" +\n\t\"\\bapi_keys\\x18\\x02 \\x03(\\x05R\\aapiKeys\\x125\\n\" +\n\t\"\\tclient_id\\x18\\x03 \\x01(\\tB\\x18\\xfaB\\x15r\\x132\\x11^[a-zA-Z0-9._-]*$R\\bclientId\\x121\\n\" +\n\t\"\\x05topic\\x18\\x04 \\x01(\\tB\\x1b\\xfaB\\x18r\\x16\\x18\\xff\\x012\\x11^[a-zA-Z0-9._-]*$R\\x05topic\\\"\\x9a\\x01\\n\" +\n\t\"\\x14L7NetworkPolicyRules\\x12A\\n\" +\n\t\"\\x0el7_allow_rules\\x18\\x01 \\x03(\\v2\\x1b.cilium.L7NetworkPolicyRuleR\\fl7AllowRules\\x12?\\n\" +\n\t\"\\rl7_deny_rules\\x18\\x02 \\x03(\\v2\\x1b.cilium.L7NetworkPolicyRuleR\\vl7DenyRules\\\"\\xea\\x01\\n\" +\n\t\"\\x13L7NetworkPolicyRule\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x03 \\x01(\\tR\\x04name\\x129\\n\" +\n\t\"\\x04rule\\x18\\x01 \\x03(\\v2%.cilium.L7NetworkPolicyRule.RuleEntryR\\x04rule\\x12K\\n\" +\n\t\"\\rmetadata_rule\\x18\\x02 \\x03(\\v2&.envoy.type.matcher.v3.MetadataMatcherR\\fmetadataRule\\x1a7\\n\" +\n\t\"\\tRuleEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\tR\\x05value:\\x028\\x01\\\"\\\\\\n\" +\n\t\"\\x19NetworkPoliciesConfigDump\\x12?\\n\" +\n\t\"\\x0fnetworkpolicies\\x18\\x01 \\x03(\\v2\\x15.cilium.NetworkPolicyR\\x0fnetworkpolicies2\\xda\\x02\\n\" +\n\t\"\\x1dNetworkPolicyDiscoveryService\\x12z\\n\" +\n\t\"\\x15StreamNetworkPolicies\\x12,.envoy.service.discovery.v3.DiscoveryRequest\\x1a-.envoy.service.discovery.v3.DiscoveryResponse\\\"\\x00(\\x010\\x01\\x12\\x9e\\x01\\n\" +\n\t\"\\x14FetchNetworkPolicies\\x12,.envoy.service.discovery.v3.DiscoveryRequest\\x1a-.envoy.service.discovery.v3.DiscoveryResponse\\\")\\x82\\xd3\\xe4\\x93\\x02#:\\x01*\\\"\\x1e/v3/discovery:network_policies\\x1a\\x1c\\x8a\\xa4\\x96\\xf3\\a\\x16\\n\" +\n\t\"\\x14cilium.NetworkPolicyB.Z,github.com/cilium/proxy/go/cilium/api;ciliumb\\x06proto3\"\n\nvar (\n\tfile_cilium_api_npds_proto_rawDescOnce sync.Once\n\tfile_cilium_api_npds_proto_rawDescData []byte\n)\n\nfunc file_cilium_api_npds_proto_rawDescGZIP() []byte {\n\tfile_cilium_api_npds_proto_rawDescOnce.Do(func() {\n\t\tfile_cilium_api_npds_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cilium_api_npds_proto_rawDesc), len(file_cilium_api_npds_proto_rawDesc)))\n\t})\n\treturn file_cilium_api_npds_proto_rawDescData\n}\n\nvar file_cilium_api_npds_proto_enumTypes = make([]protoimpl.EnumInfo, 2)\nvar file_cilium_api_npds_proto_msgTypes = make([]protoimpl.MessageInfo, 13)\nvar file_cilium_api_npds_proto_goTypes = []any{\n\t(HeaderMatch_MatchAction)(0),      // 0: cilium.HeaderMatch.MatchAction\n\t(HeaderMatch_MismatchAction)(0),   // 1: cilium.HeaderMatch.MismatchAction\n\t(*NetworkPolicy)(nil),             // 2: cilium.NetworkPolicy\n\t(*PortNetworkPolicy)(nil),         // 3: cilium.PortNetworkPolicy\n\t(*TLSContext)(nil),                // 4: cilium.TLSContext\n\t(*PortNetworkPolicyRule)(nil),     // 5: cilium.PortNetworkPolicyRule\n\t(*HttpNetworkPolicyRules)(nil),    // 6: cilium.HttpNetworkPolicyRules\n\t(*HeaderMatch)(nil),               // 7: cilium.HeaderMatch\n\t(*HttpNetworkPolicyRule)(nil),     // 8: cilium.HttpNetworkPolicyRule\n\t(*KafkaNetworkPolicyRules)(nil),   // 9: cilium.KafkaNetworkPolicyRules\n\t(*KafkaNetworkPolicyRule)(nil),    // 10: cilium.KafkaNetworkPolicyRule\n\t(*L7NetworkPolicyRules)(nil),      // 11: cilium.L7NetworkPolicyRules\n\t(*L7NetworkPolicyRule)(nil),       // 12: cilium.L7NetworkPolicyRule\n\t(*NetworkPoliciesConfigDump)(nil), // 13: cilium.NetworkPoliciesConfigDump\n\tnil,                               // 14: cilium.L7NetworkPolicyRule.RuleEntry\n\t(v3.SocketAddress_Protocol)(0),    // 15: envoy.config.core.v3.SocketAddress.Protocol\n\t(*v31.HeaderMatcher)(nil),         // 16: envoy.config.route.v3.HeaderMatcher\n\t(*v32.MetadataMatcher)(nil),       // 17: envoy.type.matcher.v3.MetadataMatcher\n\t(*v33.DiscoveryRequest)(nil),      // 18: envoy.service.discovery.v3.DiscoveryRequest\n\t(*v33.DiscoveryResponse)(nil),     // 19: envoy.service.discovery.v3.DiscoveryResponse\n}\nvar file_cilium_api_npds_proto_depIdxs = []int32{\n\t3,  // 0: cilium.NetworkPolicy.ingress_per_port_policies:type_name -> cilium.PortNetworkPolicy\n\t3,  // 1: cilium.NetworkPolicy.egress_per_port_policies:type_name -> cilium.PortNetworkPolicy\n\t15, // 2: cilium.PortNetworkPolicy.protocol:type_name -> envoy.config.core.v3.SocketAddress.Protocol\n\t5,  // 3: cilium.PortNetworkPolicy.rules:type_name -> cilium.PortNetworkPolicyRule\n\t4,  // 4: cilium.PortNetworkPolicyRule.downstream_tls_context:type_name -> cilium.TLSContext\n\t4,  // 5: cilium.PortNetworkPolicyRule.upstream_tls_context:type_name -> cilium.TLSContext\n\t6,  // 6: cilium.PortNetworkPolicyRule.http_rules:type_name -> cilium.HttpNetworkPolicyRules\n\t9,  // 7: cilium.PortNetworkPolicyRule.kafka_rules:type_name -> cilium.KafkaNetworkPolicyRules\n\t11, // 8: cilium.PortNetworkPolicyRule.l7_rules:type_name -> cilium.L7NetworkPolicyRules\n\t8,  // 9: cilium.HttpNetworkPolicyRules.http_rules:type_name -> cilium.HttpNetworkPolicyRule\n\t0,  // 10: cilium.HeaderMatch.match_action:type_name -> cilium.HeaderMatch.MatchAction\n\t1,  // 11: cilium.HeaderMatch.mismatch_action:type_name -> cilium.HeaderMatch.MismatchAction\n\t16, // 12: cilium.HttpNetworkPolicyRule.headers:type_name -> envoy.config.route.v3.HeaderMatcher\n\t7,  // 13: cilium.HttpNetworkPolicyRule.header_matches:type_name -> cilium.HeaderMatch\n\t10, // 14: cilium.KafkaNetworkPolicyRules.kafka_rules:type_name -> cilium.KafkaNetworkPolicyRule\n\t12, // 15: cilium.L7NetworkPolicyRules.l7_allow_rules:type_name -> cilium.L7NetworkPolicyRule\n\t12, // 16: cilium.L7NetworkPolicyRules.l7_deny_rules:type_name -> cilium.L7NetworkPolicyRule\n\t14, // 17: cilium.L7NetworkPolicyRule.rule:type_name -> cilium.L7NetworkPolicyRule.RuleEntry\n\t17, // 18: cilium.L7NetworkPolicyRule.metadata_rule:type_name -> envoy.type.matcher.v3.MetadataMatcher\n\t2,  // 19: cilium.NetworkPoliciesConfigDump.networkpolicies:type_name -> cilium.NetworkPolicy\n\t18, // 20: cilium.NetworkPolicyDiscoveryService.StreamNetworkPolicies:input_type -> envoy.service.discovery.v3.DiscoveryRequest\n\t18, // 21: cilium.NetworkPolicyDiscoveryService.FetchNetworkPolicies:input_type -> envoy.service.discovery.v3.DiscoveryRequest\n\t19, // 22: cilium.NetworkPolicyDiscoveryService.StreamNetworkPolicies:output_type -> envoy.service.discovery.v3.DiscoveryResponse\n\t19, // 23: cilium.NetworkPolicyDiscoveryService.FetchNetworkPolicies:output_type -> envoy.service.discovery.v3.DiscoveryResponse\n\t22, // [22:24] is the sub-list for method output_type\n\t20, // [20:22] is the sub-list for method input_type\n\t20, // [20:20] is the sub-list for extension type_name\n\t20, // [20:20] is the sub-list for extension extendee\n\t0,  // [0:20] is the sub-list for field type_name\n}\n\nfunc init() { file_cilium_api_npds_proto_init() }\nfunc file_cilium_api_npds_proto_init() {\n\tif File_cilium_api_npds_proto != nil {\n\t\treturn\n\t}\n\tfile_cilium_api_npds_proto_msgTypes[3].OneofWrappers = []any{\n\t\t(*PortNetworkPolicyRule_PassPrecedence)(nil),\n\t\t(*PortNetworkPolicyRule_Deny)(nil),\n\t\t(*PortNetworkPolicyRule_HttpRules)(nil),\n\t\t(*PortNetworkPolicyRule_KafkaRules)(nil),\n\t\t(*PortNetworkPolicyRule_L7Rules)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_cilium_api_npds_proto_rawDesc), len(file_cilium_api_npds_proto_rawDesc)),\n\t\t\tNumEnums:      2,\n\t\t\tNumMessages:   13,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_cilium_api_npds_proto_goTypes,\n\t\tDependencyIndexes: file_cilium_api_npds_proto_depIdxs,\n\t\tEnumInfos:         file_cilium_api_npds_proto_enumTypes,\n\t\tMessageInfos:      file_cilium_api_npds_proto_msgTypes,\n\t}.Build()\n\tFile_cilium_api_npds_proto = out.File\n\tfile_cilium_api_npds_proto_goTypes = nil\n\tfile_cilium_api_npds_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "go/cilium/api/npds.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: cilium/api/npds.proto\n\npackage cilium\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n\n\tcorev3 \"github.com/envoyproxy/go-control-plane/envoy/config/core/v3\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n\n\t_ = corev3.SocketAddress_Protocol(0)\n)\n\n// Validate checks the field values on NetworkPolicy with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *NetworkPolicy) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on NetworkPolicy with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in NetworkPolicyMultiError, or\n// nil if none found.\nfunc (m *NetworkPolicy) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *NetworkPolicy) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif l := len(m.GetEndpointIps()); l < 1 || l > 2 {\n\t\terr := NetworkPolicyValidationError{\n\t\t\tfield:  \"EndpointIps\",\n\t\t\treason: \"value must contain between 1 and 2 items, inclusive\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetEndpointIps() {\n\t\t_, _ = idx, item\n\n\t\tif utf8.RuneCountInString(item) < 1 {\n\t\t\terr := NetworkPolicyValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"EndpointIps[%v]\", idx),\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\t// no validation rules for EndpointId\n\n\tfor idx, item := range m.GetIngressPerPortPolicies() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, NetworkPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"IngressPerPortPolicies[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, NetworkPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"IngressPerPortPolicies[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn NetworkPolicyValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"IngressPerPortPolicies[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetEgressPerPortPolicies() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, NetworkPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"EgressPerPortPolicies[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, NetworkPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"EgressPerPortPolicies[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn NetworkPolicyValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"EgressPerPortPolicies[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn NetworkPolicyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// NetworkPolicyMultiError is an error wrapping multiple validation errors\n// returned by NetworkPolicy.ValidateAll() if the designated constraints\n// aren't met.\ntype NetworkPolicyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m NetworkPolicyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m NetworkPolicyMultiError) AllErrors() []error { return m }\n\n// NetworkPolicyValidationError is the validation error returned by\n// NetworkPolicy.Validate if the designated constraints aren't met.\ntype NetworkPolicyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e NetworkPolicyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e NetworkPolicyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e NetworkPolicyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e NetworkPolicyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e NetworkPolicyValidationError) ErrorName() string { return \"NetworkPolicyValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e NetworkPolicyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sNetworkPolicy.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = NetworkPolicyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = NetworkPolicyValidationError{}\n\n// Validate checks the field values on PortNetworkPolicy with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *PortNetworkPolicy) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on PortNetworkPolicy with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// PortNetworkPolicyMultiError, or nil if none found.\nfunc (m *PortNetworkPolicy) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *PortNetworkPolicy) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetPort() > 65535 {\n\t\terr := PortNetworkPolicyValidationError{\n\t\t\tfield:  \"Port\",\n\t\t\treason: \"value must be less than or equal to 65535\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif m.GetEndPort() > 65535 {\n\t\terr := PortNetworkPolicyValidationError{\n\t\t\tfield:  \"EndPort\",\n\t\t\treason: \"value must be less than or equal to 65535\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for Protocol\n\n\tfor idx, item := range m.GetRules() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, PortNetworkPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Rules[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, PortNetworkPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Rules[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn PortNetworkPolicyValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Rules[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn PortNetworkPolicyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// PortNetworkPolicyMultiError is an error wrapping multiple validation errors\n// returned by PortNetworkPolicy.ValidateAll() if the designated constraints\n// aren't met.\ntype PortNetworkPolicyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m PortNetworkPolicyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m PortNetworkPolicyMultiError) AllErrors() []error { return m }\n\n// PortNetworkPolicyValidationError is the validation error returned by\n// PortNetworkPolicy.Validate if the designated constraints aren't met.\ntype PortNetworkPolicyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e PortNetworkPolicyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e PortNetworkPolicyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e PortNetworkPolicyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e PortNetworkPolicyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e PortNetworkPolicyValidationError) ErrorName() string {\n\treturn \"PortNetworkPolicyValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e PortNetworkPolicyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sPortNetworkPolicy.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = PortNetworkPolicyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = PortNetworkPolicyValidationError{}\n\n// Validate checks the field values on TLSContext with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *TLSContext) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on TLSContext with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in TLSContextMultiError, or\n// nil if none found.\nfunc (m *TLSContext) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *TLSContext) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for TrustedCa\n\n\t// no validation rules for CertificateChain\n\n\t// no validation rules for PrivateKey\n\n\t// no validation rules for ValidationContextSdsSecret\n\n\t// no validation rules for TlsSdsSecret\n\n\tif len(errors) > 0 {\n\t\treturn TLSContextMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// TLSContextMultiError is an error wrapping multiple validation errors\n// returned by TLSContext.ValidateAll() if the designated constraints aren't met.\ntype TLSContextMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m TLSContextMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m TLSContextMultiError) AllErrors() []error { return m }\n\n// TLSContextValidationError is the validation error returned by\n// TLSContext.Validate if the designated constraints aren't met.\ntype TLSContextValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e TLSContextValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e TLSContextValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e TLSContextValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e TLSContextValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e TLSContextValidationError) ErrorName() string { return \"TLSContextValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e TLSContextValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sTLSContext.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = TLSContextValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = TLSContextValidationError{}\n\n// Validate checks the field values on PortNetworkPolicyRule with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *PortNetworkPolicyRule) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on PortNetworkPolicyRule with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// PortNetworkPolicyRuleMultiError, or nil if none found.\nfunc (m *PortNetworkPolicyRule) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *PortNetworkPolicyRule) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Precedence\n\n\tif m.GetProxyId() > 65535 {\n\t\terr := PortNetworkPolicyRuleValidationError{\n\t\t\tfield:  \"ProxyId\",\n\t\t\treason: \"value must be less than or equal to 65535\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for Name\n\n\tif all {\n\t\tswitch v := interface{}(m.GetDownstreamTlsContext()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, PortNetworkPolicyRuleValidationError{\n\t\t\t\t\tfield:  \"DownstreamTlsContext\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, PortNetworkPolicyRuleValidationError{\n\t\t\t\t\tfield:  \"DownstreamTlsContext\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetDownstreamTlsContext()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn PortNetworkPolicyRuleValidationError{\n\t\t\t\tfield:  \"DownstreamTlsContext\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetUpstreamTlsContext()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, PortNetworkPolicyRuleValidationError{\n\t\t\t\t\tfield:  \"UpstreamTlsContext\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, PortNetworkPolicyRuleValidationError{\n\t\t\t\t\tfield:  \"UpstreamTlsContext\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetUpstreamTlsContext()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn PortNetworkPolicyRuleValidationError{\n\t\t\t\tfield:  \"UpstreamTlsContext\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetServerNames() {\n\t\t_, _ = idx, item\n\n\t\tif !_PortNetworkPolicyRule_ServerNames_Pattern.MatchString(item) {\n\t\t\terr := PortNetworkPolicyRuleValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"ServerNames[%v]\", idx),\n\t\t\t\treason: \"value does not match regex pattern \\\"^(([*]{1,2}|[*]?[-a-zA-Z0-9_]+([*][-a-zA-Z0-9_]+)*[*]?)[.])*([*]{1,2}|[*]?[-a-zA-Z0-9_]+([*][-a-zA-Z0-9_]+)*[*]?)$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\t// no validation rules for L7Proto\n\n\tswitch v := m.Verdict.(type) {\n\tcase *PortNetworkPolicyRule_PassPrecedence:\n\t\tif v == nil {\n\t\t\terr := PortNetworkPolicyRuleValidationError{\n\t\t\t\tfield:  \"Verdict\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\t// no validation rules for PassPrecedence\n\tcase *PortNetworkPolicyRule_Deny:\n\t\tif v == nil {\n\t\t\terr := PortNetworkPolicyRuleValidationError{\n\t\t\t\tfield:  \"Verdict\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\t// no validation rules for Deny\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tswitch v := m.L7.(type) {\n\tcase *PortNetworkPolicyRule_HttpRules:\n\t\tif v == nil {\n\t\t\terr := PortNetworkPolicyRuleValidationError{\n\t\t\t\tfield:  \"L7\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetHttpRules()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, PortNetworkPolicyRuleValidationError{\n\t\t\t\t\t\tfield:  \"HttpRules\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, PortNetworkPolicyRuleValidationError{\n\t\t\t\t\t\tfield:  \"HttpRules\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetHttpRules()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn PortNetworkPolicyRuleValidationError{\n\t\t\t\t\tfield:  \"HttpRules\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *PortNetworkPolicyRule_KafkaRules:\n\t\tif v == nil {\n\t\t\terr := PortNetworkPolicyRuleValidationError{\n\t\t\t\tfield:  \"L7\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetKafkaRules()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, PortNetworkPolicyRuleValidationError{\n\t\t\t\t\t\tfield:  \"KafkaRules\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, PortNetworkPolicyRuleValidationError{\n\t\t\t\t\t\tfield:  \"KafkaRules\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetKafkaRules()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn PortNetworkPolicyRuleValidationError{\n\t\t\t\t\tfield:  \"KafkaRules\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *PortNetworkPolicyRule_L7Rules:\n\t\tif v == nil {\n\t\t\terr := PortNetworkPolicyRuleValidationError{\n\t\t\t\tfield:  \"L7\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetL7Rules()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, PortNetworkPolicyRuleValidationError{\n\t\t\t\t\t\tfield:  \"L7Rules\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, PortNetworkPolicyRuleValidationError{\n\t\t\t\t\t\tfield:  \"L7Rules\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetL7Rules()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn PortNetworkPolicyRuleValidationError{\n\t\t\t\t\tfield:  \"L7Rules\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn PortNetworkPolicyRuleMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// PortNetworkPolicyRuleMultiError is an error wrapping multiple validation\n// errors returned by PortNetworkPolicyRule.ValidateAll() if the designated\n// constraints aren't met.\ntype PortNetworkPolicyRuleMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m PortNetworkPolicyRuleMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m PortNetworkPolicyRuleMultiError) AllErrors() []error { return m }\n\n// PortNetworkPolicyRuleValidationError is the validation error returned by\n// PortNetworkPolicyRule.Validate if the designated constraints aren't met.\ntype PortNetworkPolicyRuleValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e PortNetworkPolicyRuleValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e PortNetworkPolicyRuleValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e PortNetworkPolicyRuleValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e PortNetworkPolicyRuleValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e PortNetworkPolicyRuleValidationError) ErrorName() string {\n\treturn \"PortNetworkPolicyRuleValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e PortNetworkPolicyRuleValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sPortNetworkPolicyRule.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = PortNetworkPolicyRuleValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = PortNetworkPolicyRuleValidationError{}\n\nvar _PortNetworkPolicyRule_ServerNames_Pattern = regexp.MustCompile(\"^(([*]{1,2}|[*]?[-a-zA-Z0-9_]+([*][-a-zA-Z0-9_]+)*[*]?)[.])*([*]{1,2}|[*]?[-a-zA-Z0-9_]+([*][-a-zA-Z0-9_]+)*[*]?)$\")\n\n// Validate checks the field values on HttpNetworkPolicyRules with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HttpNetworkPolicyRules) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpNetworkPolicyRules with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HttpNetworkPolicyRulesMultiError, or nil if none found.\nfunc (m *HttpNetworkPolicyRules) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpNetworkPolicyRules) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetHttpRules()) < 1 {\n\t\terr := HttpNetworkPolicyRulesValidationError{\n\t\t\tfield:  \"HttpRules\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetHttpRules() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HttpNetworkPolicyRulesValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"HttpRules[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HttpNetworkPolicyRulesValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"HttpRules[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HttpNetworkPolicyRulesValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"HttpRules[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HttpNetworkPolicyRulesMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpNetworkPolicyRulesMultiError is an error wrapping multiple validation\n// errors returned by HttpNetworkPolicyRules.ValidateAll() if the designated\n// constraints aren't met.\ntype HttpNetworkPolicyRulesMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpNetworkPolicyRulesMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpNetworkPolicyRulesMultiError) AllErrors() []error { return m }\n\n// HttpNetworkPolicyRulesValidationError is the validation error returned by\n// HttpNetworkPolicyRules.Validate if the designated constraints aren't met.\ntype HttpNetworkPolicyRulesValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpNetworkPolicyRulesValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpNetworkPolicyRulesValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpNetworkPolicyRulesValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpNetworkPolicyRulesValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpNetworkPolicyRulesValidationError) ErrorName() string {\n\treturn \"HttpNetworkPolicyRulesValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HttpNetworkPolicyRulesValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpNetworkPolicyRules.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpNetworkPolicyRulesValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpNetworkPolicyRulesValidationError{}\n\n// Validate checks the field values on HeaderMatch with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *HeaderMatch) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HeaderMatch with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in HeaderMatchMultiError, or\n// nil if none found.\nfunc (m *HeaderMatch) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HeaderMatch) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := HeaderMatchValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for Value\n\n\t// no validation rules for MatchAction\n\n\t// no validation rules for MismatchAction\n\n\t// no validation rules for ValueSdsSecret\n\n\tif len(errors) > 0 {\n\t\treturn HeaderMatchMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HeaderMatchMultiError is an error wrapping multiple validation errors\n// returned by HeaderMatch.ValidateAll() if the designated constraints aren't met.\ntype HeaderMatchMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HeaderMatchMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HeaderMatchMultiError) AllErrors() []error { return m }\n\n// HeaderMatchValidationError is the validation error returned by\n// HeaderMatch.Validate if the designated constraints aren't met.\ntype HeaderMatchValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HeaderMatchValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HeaderMatchValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HeaderMatchValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HeaderMatchValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HeaderMatchValidationError) ErrorName() string { return \"HeaderMatchValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e HeaderMatchValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHeaderMatch.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HeaderMatchValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HeaderMatchValidationError{}\n\n// Validate checks the field values on HttpNetworkPolicyRule with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HttpNetworkPolicyRule) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpNetworkPolicyRule with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HttpNetworkPolicyRuleMultiError, or nil if none found.\nfunc (m *HttpNetworkPolicyRule) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpNetworkPolicyRule) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetHeaders() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HttpNetworkPolicyRuleValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HttpNetworkPolicyRuleValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HttpNetworkPolicyRuleValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetHeaderMatches() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HttpNetworkPolicyRuleValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"HeaderMatches[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HttpNetworkPolicyRuleValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"HeaderMatches[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HttpNetworkPolicyRuleValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"HeaderMatches[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HttpNetworkPolicyRuleMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpNetworkPolicyRuleMultiError is an error wrapping multiple validation\n// errors returned by HttpNetworkPolicyRule.ValidateAll() if the designated\n// constraints aren't met.\ntype HttpNetworkPolicyRuleMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpNetworkPolicyRuleMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpNetworkPolicyRuleMultiError) AllErrors() []error { return m }\n\n// HttpNetworkPolicyRuleValidationError is the validation error returned by\n// HttpNetworkPolicyRule.Validate if the designated constraints aren't met.\ntype HttpNetworkPolicyRuleValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpNetworkPolicyRuleValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpNetworkPolicyRuleValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpNetworkPolicyRuleValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpNetworkPolicyRuleValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpNetworkPolicyRuleValidationError) ErrorName() string {\n\treturn \"HttpNetworkPolicyRuleValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HttpNetworkPolicyRuleValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpNetworkPolicyRule.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpNetworkPolicyRuleValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpNetworkPolicyRuleValidationError{}\n\n// Validate checks the field values on KafkaNetworkPolicyRules with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *KafkaNetworkPolicyRules) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on KafkaNetworkPolicyRules with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// KafkaNetworkPolicyRulesMultiError, or nil if none found.\nfunc (m *KafkaNetworkPolicyRules) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *KafkaNetworkPolicyRules) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetKafkaRules()) < 1 {\n\t\terr := KafkaNetworkPolicyRulesValidationError{\n\t\t\tfield:  \"KafkaRules\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetKafkaRules() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, KafkaNetworkPolicyRulesValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"KafkaRules[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, KafkaNetworkPolicyRulesValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"KafkaRules[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn KafkaNetworkPolicyRulesValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"KafkaRules[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn KafkaNetworkPolicyRulesMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// KafkaNetworkPolicyRulesMultiError is an error wrapping multiple validation\n// errors returned by KafkaNetworkPolicyRules.ValidateAll() if the designated\n// constraints aren't met.\ntype KafkaNetworkPolicyRulesMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m KafkaNetworkPolicyRulesMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m KafkaNetworkPolicyRulesMultiError) AllErrors() []error { return m }\n\n// KafkaNetworkPolicyRulesValidationError is the validation error returned by\n// KafkaNetworkPolicyRules.Validate if the designated constraints aren't met.\ntype KafkaNetworkPolicyRulesValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e KafkaNetworkPolicyRulesValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e KafkaNetworkPolicyRulesValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e KafkaNetworkPolicyRulesValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e KafkaNetworkPolicyRulesValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e KafkaNetworkPolicyRulesValidationError) ErrorName() string {\n\treturn \"KafkaNetworkPolicyRulesValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e KafkaNetworkPolicyRulesValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sKafkaNetworkPolicyRules.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = KafkaNetworkPolicyRulesValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = KafkaNetworkPolicyRulesValidationError{}\n\n// Validate checks the field values on KafkaNetworkPolicyRule with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *KafkaNetworkPolicyRule) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on KafkaNetworkPolicyRule with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// KafkaNetworkPolicyRuleMultiError, or nil if none found.\nfunc (m *KafkaNetworkPolicyRule) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *KafkaNetworkPolicyRule) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for ApiVersion\n\n\tif !_KafkaNetworkPolicyRule_ClientId_Pattern.MatchString(m.GetClientId()) {\n\t\terr := KafkaNetworkPolicyRuleValidationError{\n\t\t\tfield:  \"ClientId\",\n\t\t\treason: \"value does not match regex pattern \\\"^[a-zA-Z0-9._-]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif utf8.RuneCountInString(m.GetTopic()) > 255 {\n\t\terr := KafkaNetworkPolicyRuleValidationError{\n\t\t\tfield:  \"Topic\",\n\t\t\treason: \"value length must be at most 255 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif !_KafkaNetworkPolicyRule_Topic_Pattern.MatchString(m.GetTopic()) {\n\t\terr := KafkaNetworkPolicyRuleValidationError{\n\t\t\tfield:  \"Topic\",\n\t\t\treason: \"value does not match regex pattern \\\"^[a-zA-Z0-9._-]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn KafkaNetworkPolicyRuleMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// KafkaNetworkPolicyRuleMultiError is an error wrapping multiple validation\n// errors returned by KafkaNetworkPolicyRule.ValidateAll() if the designated\n// constraints aren't met.\ntype KafkaNetworkPolicyRuleMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m KafkaNetworkPolicyRuleMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m KafkaNetworkPolicyRuleMultiError) AllErrors() []error { return m }\n\n// KafkaNetworkPolicyRuleValidationError is the validation error returned by\n// KafkaNetworkPolicyRule.Validate if the designated constraints aren't met.\ntype KafkaNetworkPolicyRuleValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e KafkaNetworkPolicyRuleValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e KafkaNetworkPolicyRuleValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e KafkaNetworkPolicyRuleValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e KafkaNetworkPolicyRuleValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e KafkaNetworkPolicyRuleValidationError) ErrorName() string {\n\treturn \"KafkaNetworkPolicyRuleValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e KafkaNetworkPolicyRuleValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sKafkaNetworkPolicyRule.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = KafkaNetworkPolicyRuleValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = KafkaNetworkPolicyRuleValidationError{}\n\nvar _KafkaNetworkPolicyRule_ClientId_Pattern = regexp.MustCompile(\"^[a-zA-Z0-9._-]*$\")\n\nvar _KafkaNetworkPolicyRule_Topic_Pattern = regexp.MustCompile(\"^[a-zA-Z0-9._-]*$\")\n\n// Validate checks the field values on L7NetworkPolicyRules with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *L7NetworkPolicyRules) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on L7NetworkPolicyRules with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// L7NetworkPolicyRulesMultiError, or nil if none found.\nfunc (m *L7NetworkPolicyRules) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *L7NetworkPolicyRules) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetL7AllowRules() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, L7NetworkPolicyRulesValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"L7AllowRules[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, L7NetworkPolicyRulesValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"L7AllowRules[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn L7NetworkPolicyRulesValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"L7AllowRules[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetL7DenyRules() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, L7NetworkPolicyRulesValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"L7DenyRules[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, L7NetworkPolicyRulesValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"L7DenyRules[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn L7NetworkPolicyRulesValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"L7DenyRules[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn L7NetworkPolicyRulesMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// L7NetworkPolicyRulesMultiError is an error wrapping multiple validation\n// errors returned by L7NetworkPolicyRules.ValidateAll() if the designated\n// constraints aren't met.\ntype L7NetworkPolicyRulesMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m L7NetworkPolicyRulesMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m L7NetworkPolicyRulesMultiError) AllErrors() []error { return m }\n\n// L7NetworkPolicyRulesValidationError is the validation error returned by\n// L7NetworkPolicyRules.Validate if the designated constraints aren't met.\ntype L7NetworkPolicyRulesValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e L7NetworkPolicyRulesValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e L7NetworkPolicyRulesValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e L7NetworkPolicyRulesValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e L7NetworkPolicyRulesValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e L7NetworkPolicyRulesValidationError) ErrorName() string {\n\treturn \"L7NetworkPolicyRulesValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e L7NetworkPolicyRulesValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sL7NetworkPolicyRules.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = L7NetworkPolicyRulesValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = L7NetworkPolicyRulesValidationError{}\n\n// Validate checks the field values on L7NetworkPolicyRule with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *L7NetworkPolicyRule) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on L7NetworkPolicyRule with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// L7NetworkPolicyRuleMultiError, or nil if none found.\nfunc (m *L7NetworkPolicyRule) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *L7NetworkPolicyRule) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Name\n\n\t// no validation rules for Rule\n\n\tfor idx, item := range m.GetMetadataRule() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, L7NetworkPolicyRuleValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"MetadataRule[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, L7NetworkPolicyRuleValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"MetadataRule[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn L7NetworkPolicyRuleValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"MetadataRule[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn L7NetworkPolicyRuleMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// L7NetworkPolicyRuleMultiError is an error wrapping multiple validation\n// errors returned by L7NetworkPolicyRule.ValidateAll() if the designated\n// constraints aren't met.\ntype L7NetworkPolicyRuleMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m L7NetworkPolicyRuleMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m L7NetworkPolicyRuleMultiError) AllErrors() []error { return m }\n\n// L7NetworkPolicyRuleValidationError is the validation error returned by\n// L7NetworkPolicyRule.Validate if the designated constraints aren't met.\ntype L7NetworkPolicyRuleValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e L7NetworkPolicyRuleValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e L7NetworkPolicyRuleValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e L7NetworkPolicyRuleValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e L7NetworkPolicyRuleValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e L7NetworkPolicyRuleValidationError) ErrorName() string {\n\treturn \"L7NetworkPolicyRuleValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e L7NetworkPolicyRuleValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sL7NetworkPolicyRule.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = L7NetworkPolicyRuleValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = L7NetworkPolicyRuleValidationError{}\n\n// Validate checks the field values on NetworkPoliciesConfigDump with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *NetworkPoliciesConfigDump) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on NetworkPoliciesConfigDump with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// NetworkPoliciesConfigDumpMultiError, or nil if none found.\nfunc (m *NetworkPoliciesConfigDump) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *NetworkPoliciesConfigDump) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetNetworkpolicies() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, NetworkPoliciesConfigDumpValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Networkpolicies[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, NetworkPoliciesConfigDumpValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Networkpolicies[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn NetworkPoliciesConfigDumpValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Networkpolicies[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn NetworkPoliciesConfigDumpMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// NetworkPoliciesConfigDumpMultiError is an error wrapping multiple validation\n// errors returned by NetworkPoliciesConfigDump.ValidateAll() if the\n// designated constraints aren't met.\ntype NetworkPoliciesConfigDumpMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m NetworkPoliciesConfigDumpMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m NetworkPoliciesConfigDumpMultiError) AllErrors() []error { return m }\n\n// NetworkPoliciesConfigDumpValidationError is the validation error returned by\n// NetworkPoliciesConfigDump.Validate if the designated constraints aren't met.\ntype NetworkPoliciesConfigDumpValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e NetworkPoliciesConfigDumpValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e NetworkPoliciesConfigDumpValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e NetworkPoliciesConfigDumpValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e NetworkPoliciesConfigDumpValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e NetworkPoliciesConfigDumpValidationError) ErrorName() string {\n\treturn \"NetworkPoliciesConfigDumpValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e NetworkPoliciesConfigDumpValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sNetworkPoliciesConfigDump.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = NetworkPoliciesConfigDumpValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = NetworkPoliciesConfigDumpValidationError{}\n"
  },
  {
    "path": "go/cilium/api/npds_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.6.1\n// - protoc             v6.33.2\n// source: cilium/api/npds.proto\n\npackage cilium\n\nimport (\n\tcontext \"context\"\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.64.0 or later.\nconst _ = grpc.SupportPackageIsVersion9\n\nconst (\n\tNetworkPolicyDiscoveryService_StreamNetworkPolicies_FullMethodName = \"/cilium.NetworkPolicyDiscoveryService/StreamNetworkPolicies\"\n\tNetworkPolicyDiscoveryService_FetchNetworkPolicies_FullMethodName  = \"/cilium.NetworkPolicyDiscoveryService/FetchNetworkPolicies\"\n)\n\n// NetworkPolicyDiscoveryServiceClient is the client API for NetworkPolicyDiscoveryService service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\n//\n// Each resource name is a network policy identifier.\ntype NetworkPolicyDiscoveryServiceClient interface {\n\tStreamNetworkPolicies(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[v3.DiscoveryRequest, v3.DiscoveryResponse], error)\n\tFetchNetworkPolicies(ctx context.Context, in *v3.DiscoveryRequest, opts ...grpc.CallOption) (*v3.DiscoveryResponse, error)\n}\n\ntype networkPolicyDiscoveryServiceClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewNetworkPolicyDiscoveryServiceClient(cc grpc.ClientConnInterface) NetworkPolicyDiscoveryServiceClient {\n\treturn &networkPolicyDiscoveryServiceClient{cc}\n}\n\nfunc (c *networkPolicyDiscoveryServiceClient) StreamNetworkPolicies(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[v3.DiscoveryRequest, v3.DiscoveryResponse], error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tstream, err := c.cc.NewStream(ctx, &NetworkPolicyDiscoveryService_ServiceDesc.Streams[0], NetworkPolicyDiscoveryService_StreamNetworkPolicies_FullMethodName, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tx := &grpc.GenericClientStream[v3.DiscoveryRequest, v3.DiscoveryResponse]{ClientStream: stream}\n\treturn x, nil\n}\n\n// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.\ntype NetworkPolicyDiscoveryService_StreamNetworkPoliciesClient = grpc.BidiStreamingClient[v3.DiscoveryRequest, v3.DiscoveryResponse]\n\nfunc (c *networkPolicyDiscoveryServiceClient) FetchNetworkPolicies(ctx context.Context, in *v3.DiscoveryRequest, opts ...grpc.CallOption) (*v3.DiscoveryResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(v3.DiscoveryResponse)\n\terr := c.cc.Invoke(ctx, NetworkPolicyDiscoveryService_FetchNetworkPolicies_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// NetworkPolicyDiscoveryServiceServer is the server API for NetworkPolicyDiscoveryService service.\n// All implementations must embed UnimplementedNetworkPolicyDiscoveryServiceServer\n// for forward compatibility.\n//\n// Each resource name is a network policy identifier.\ntype NetworkPolicyDiscoveryServiceServer interface {\n\tStreamNetworkPolicies(grpc.BidiStreamingServer[v3.DiscoveryRequest, v3.DiscoveryResponse]) error\n\tFetchNetworkPolicies(context.Context, *v3.DiscoveryRequest) (*v3.DiscoveryResponse, error)\n\tmustEmbedUnimplementedNetworkPolicyDiscoveryServiceServer()\n}\n\n// UnimplementedNetworkPolicyDiscoveryServiceServer must be embedded to have\n// forward compatible implementations.\n//\n// NOTE: this should be embedded by value instead of pointer to avoid a nil\n// pointer dereference when methods are called.\ntype UnimplementedNetworkPolicyDiscoveryServiceServer struct{}\n\nfunc (UnimplementedNetworkPolicyDiscoveryServiceServer) StreamNetworkPolicies(grpc.BidiStreamingServer[v3.DiscoveryRequest, v3.DiscoveryResponse]) error {\n\treturn status.Error(codes.Unimplemented, \"method StreamNetworkPolicies not implemented\")\n}\nfunc (UnimplementedNetworkPolicyDiscoveryServiceServer) FetchNetworkPolicies(context.Context, *v3.DiscoveryRequest) (*v3.DiscoveryResponse, error) {\n\treturn nil, status.Error(codes.Unimplemented, \"method FetchNetworkPolicies not implemented\")\n}\nfunc (UnimplementedNetworkPolicyDiscoveryServiceServer) mustEmbedUnimplementedNetworkPolicyDiscoveryServiceServer() {\n}\nfunc (UnimplementedNetworkPolicyDiscoveryServiceServer) testEmbeddedByValue() {}\n\n// UnsafeNetworkPolicyDiscoveryServiceServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to NetworkPolicyDiscoveryServiceServer will\n// result in compilation errors.\ntype UnsafeNetworkPolicyDiscoveryServiceServer interface {\n\tmustEmbedUnimplementedNetworkPolicyDiscoveryServiceServer()\n}\n\nfunc RegisterNetworkPolicyDiscoveryServiceServer(s grpc.ServiceRegistrar, srv NetworkPolicyDiscoveryServiceServer) {\n\t// If the following call panics, it indicates UnimplementedNetworkPolicyDiscoveryServiceServer was\n\t// embedded by pointer and is nil.  This will cause panics if an\n\t// unimplemented method is ever invoked, so we test this at initialization\n\t// time to prevent it from happening at runtime later due to I/O.\n\tif t, ok := srv.(interface{ testEmbeddedByValue() }); ok {\n\t\tt.testEmbeddedByValue()\n\t}\n\ts.RegisterService(&NetworkPolicyDiscoveryService_ServiceDesc, srv)\n}\n\nfunc _NetworkPolicyDiscoveryService_StreamNetworkPolicies_Handler(srv interface{}, stream grpc.ServerStream) error {\n\treturn srv.(NetworkPolicyDiscoveryServiceServer).StreamNetworkPolicies(&grpc.GenericServerStream[v3.DiscoveryRequest, v3.DiscoveryResponse]{ServerStream: stream})\n}\n\n// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.\ntype NetworkPolicyDiscoveryService_StreamNetworkPoliciesServer = grpc.BidiStreamingServer[v3.DiscoveryRequest, v3.DiscoveryResponse]\n\nfunc _NetworkPolicyDiscoveryService_FetchNetworkPolicies_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(v3.DiscoveryRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(NetworkPolicyDiscoveryServiceServer).FetchNetworkPolicies(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: NetworkPolicyDiscoveryService_FetchNetworkPolicies_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(NetworkPolicyDiscoveryServiceServer).FetchNetworkPolicies(ctx, req.(*v3.DiscoveryRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\n// NetworkPolicyDiscoveryService_ServiceDesc is the grpc.ServiceDesc for NetworkPolicyDiscoveryService service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar NetworkPolicyDiscoveryService_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"cilium.NetworkPolicyDiscoveryService\",\n\tHandlerType: (*NetworkPolicyDiscoveryServiceServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"FetchNetworkPolicies\",\n\t\t\tHandler:    _NetworkPolicyDiscoveryService_FetchNetworkPolicies_Handler,\n\t\t},\n\t},\n\tStreams: []grpc.StreamDesc{\n\t\t{\n\t\t\tStreamName:    \"StreamNetworkPolicies\",\n\t\t\tHandler:       _NetworkPolicyDiscoveryService_StreamNetworkPolicies_Handler,\n\t\t\tServerStreams: true,\n\t\t\tClientStreams: true,\n\t\t},\n\t},\n\tMetadata: \"cilium/api/npds.proto\",\n}\n"
  },
  {
    "path": "go/cilium/api/nphds.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.11\n// \tprotoc        v6.33.2\n// source: cilium/api/nphds.proto\n\npackage cilium\n\nimport (\n\t_ \"github.com/envoyproxy/go-control-plane/envoy/annotations\"\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// The mapping of a network policy identifier to the IP addresses of all the\n// hosts on which the network policy is enforced.\n// A host may be associated only with one network policy.\ntype NetworkPolicyHosts struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The unique identifier of the network policy enforced on the hosts.\n\tPolicy uint64 `protobuf:\"varint,1,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n\t// The set of IP addresses of the hosts on which the network policy is\n\t// enforced. Optional. May be empty.\n\tHostAddresses []string `protobuf:\"bytes,2,rep,name=host_addresses,json=hostAddresses,proto3\" json:\"host_addresses,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *NetworkPolicyHosts) Reset() {\n\t*x = NetworkPolicyHosts{}\n\tmi := &file_cilium_api_nphds_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *NetworkPolicyHosts) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*NetworkPolicyHosts) ProtoMessage() {}\n\nfunc (x *NetworkPolicyHosts) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_nphds_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use NetworkPolicyHosts.ProtoReflect.Descriptor instead.\nfunc (*NetworkPolicyHosts) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_nphds_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *NetworkPolicyHosts) GetPolicy() uint64 {\n\tif x != nil {\n\t\treturn x.Policy\n\t}\n\treturn 0\n}\n\nfunc (x *NetworkPolicyHosts) GetHostAddresses() []string {\n\tif x != nil {\n\t\treturn x.HostAddresses\n\t}\n\treturn nil\n}\n\nvar File_cilium_api_nphds_proto protoreflect.FileDescriptor\n\nconst file_cilium_api_nphds_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x16cilium/api/nphds.proto\\x12\\x06cilium\\x1a*envoy/service/discovery/v3/discovery.proto\\x1a\\x1cgoogle/api/annotations.proto\\x1a envoy/annotations/resource.proto\\x1a\\x17validate/validate.proto\\\"c\\n\" +\n\t\"\\x12NetworkPolicyHosts\\x12\\x16\\n\" +\n\t\"\\x06policy\\x18\\x01 \\x01(\\x04R\\x06policy\\x125\\n\" +\n\t\"\\x0ehost_addresses\\x18\\x02 \\x03(\\tB\\x0e\\xfaB\\v\\x92\\x01\\b\\x18\\x01\\\"\\x04r\\x02\\x10\\x01R\\rhostAddresses2\\xee\\x02\\n\" +\n\t\"\\\"NetworkPolicyHostsDiscoveryService\\x12}\\n\" +\n\t\"\\x18StreamNetworkPolicyHosts\\x12,.envoy.service.discovery.v3.DiscoveryRequest\\x1a-.envoy.service.discovery.v3.DiscoveryResponse\\\"\\x00(\\x010\\x01\\x12\\xa5\\x01\\n\" +\n\t\"\\x17FetchNetworkPolicyHosts\\x12,.envoy.service.discovery.v3.DiscoveryRequest\\x1a-.envoy.service.discovery.v3.DiscoveryResponse\\\"-\\x82\\xd3\\xe4\\x93\\x02':\\x01*\\\"\\\"/v2/discovery:network_policy_hosts\\x1a!\\x8a\\xa4\\x96\\xf3\\a\\x1b\\n\" +\n\t\"\\x19cilium.NetworkPolicyHostsB.Z,github.com/cilium/proxy/go/cilium/api;ciliumb\\x06proto3\"\n\nvar (\n\tfile_cilium_api_nphds_proto_rawDescOnce sync.Once\n\tfile_cilium_api_nphds_proto_rawDescData []byte\n)\n\nfunc file_cilium_api_nphds_proto_rawDescGZIP() []byte {\n\tfile_cilium_api_nphds_proto_rawDescOnce.Do(func() {\n\t\tfile_cilium_api_nphds_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cilium_api_nphds_proto_rawDesc), len(file_cilium_api_nphds_proto_rawDesc)))\n\t})\n\treturn file_cilium_api_nphds_proto_rawDescData\n}\n\nvar file_cilium_api_nphds_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_cilium_api_nphds_proto_goTypes = []any{\n\t(*NetworkPolicyHosts)(nil),   // 0: cilium.NetworkPolicyHosts\n\t(*v3.DiscoveryRequest)(nil),  // 1: envoy.service.discovery.v3.DiscoveryRequest\n\t(*v3.DiscoveryResponse)(nil), // 2: envoy.service.discovery.v3.DiscoveryResponse\n}\nvar file_cilium_api_nphds_proto_depIdxs = []int32{\n\t1, // 0: cilium.NetworkPolicyHostsDiscoveryService.StreamNetworkPolicyHosts:input_type -> envoy.service.discovery.v3.DiscoveryRequest\n\t1, // 1: cilium.NetworkPolicyHostsDiscoveryService.FetchNetworkPolicyHosts:input_type -> envoy.service.discovery.v3.DiscoveryRequest\n\t2, // 2: cilium.NetworkPolicyHostsDiscoveryService.StreamNetworkPolicyHosts:output_type -> envoy.service.discovery.v3.DiscoveryResponse\n\t2, // 3: cilium.NetworkPolicyHostsDiscoveryService.FetchNetworkPolicyHosts:output_type -> envoy.service.discovery.v3.DiscoveryResponse\n\t2, // [2:4] is the sub-list for method output_type\n\t0, // [0:2] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_cilium_api_nphds_proto_init() }\nfunc file_cilium_api_nphds_proto_init() {\n\tif File_cilium_api_nphds_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_cilium_api_nphds_proto_rawDesc), len(file_cilium_api_nphds_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_cilium_api_nphds_proto_goTypes,\n\t\tDependencyIndexes: file_cilium_api_nphds_proto_depIdxs,\n\t\tMessageInfos:      file_cilium_api_nphds_proto_msgTypes,\n\t}.Build()\n\tFile_cilium_api_nphds_proto = out.File\n\tfile_cilium_api_nphds_proto_goTypes = nil\n\tfile_cilium_api_nphds_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "go/cilium/api/nphds.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: cilium/api/nphds.proto\n\npackage cilium\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on NetworkPolicyHosts with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *NetworkPolicyHosts) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on NetworkPolicyHosts with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// NetworkPolicyHostsMultiError, or nil if none found.\nfunc (m *NetworkPolicyHosts) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *NetworkPolicyHosts) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Policy\n\n\t_NetworkPolicyHosts_HostAddresses_Unique := make(map[string]struct{}, len(m.GetHostAddresses()))\n\n\tfor idx, item := range m.GetHostAddresses() {\n\t\t_, _ = idx, item\n\n\t\tif _, exists := _NetworkPolicyHosts_HostAddresses_Unique[item]; exists {\n\t\t\terr := NetworkPolicyHostsValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"HostAddresses[%v]\", idx),\n\t\t\t\treason: \"repeated value must contain unique items\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\t\t\t_NetworkPolicyHosts_HostAddresses_Unique[item] = struct{}{}\n\t\t}\n\n\t\tif utf8.RuneCountInString(item) < 1 {\n\t\t\terr := NetworkPolicyHostsValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"HostAddresses[%v]\", idx),\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn NetworkPolicyHostsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// NetworkPolicyHostsMultiError is an error wrapping multiple validation errors\n// returned by NetworkPolicyHosts.ValidateAll() if the designated constraints\n// aren't met.\ntype NetworkPolicyHostsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m NetworkPolicyHostsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m NetworkPolicyHostsMultiError) AllErrors() []error { return m }\n\n// NetworkPolicyHostsValidationError is the validation error returned by\n// NetworkPolicyHosts.Validate if the designated constraints aren't met.\ntype NetworkPolicyHostsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e NetworkPolicyHostsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e NetworkPolicyHostsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e NetworkPolicyHostsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e NetworkPolicyHostsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e NetworkPolicyHostsValidationError) ErrorName() string {\n\treturn \"NetworkPolicyHostsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e NetworkPolicyHostsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sNetworkPolicyHosts.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = NetworkPolicyHostsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = NetworkPolicyHostsValidationError{}\n"
  },
  {
    "path": "go/cilium/api/nphds_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.6.1\n// - protoc             v6.33.2\n// source: cilium/api/nphds.proto\n\npackage cilium\n\nimport (\n\tcontext \"context\"\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.64.0 or later.\nconst _ = grpc.SupportPackageIsVersion9\n\nconst (\n\tNetworkPolicyHostsDiscoveryService_StreamNetworkPolicyHosts_FullMethodName = \"/cilium.NetworkPolicyHostsDiscoveryService/StreamNetworkPolicyHosts\"\n\tNetworkPolicyHostsDiscoveryService_FetchNetworkPolicyHosts_FullMethodName  = \"/cilium.NetworkPolicyHostsDiscoveryService/FetchNetworkPolicyHosts\"\n)\n\n// NetworkPolicyHostsDiscoveryServiceClient is the client API for NetworkPolicyHostsDiscoveryService service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\n//\n// Each resource name is a network policy identifier in decimal, e.g. `123`.\ntype NetworkPolicyHostsDiscoveryServiceClient interface {\n\tStreamNetworkPolicyHosts(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[v3.DiscoveryRequest, v3.DiscoveryResponse], error)\n\tFetchNetworkPolicyHosts(ctx context.Context, in *v3.DiscoveryRequest, opts ...grpc.CallOption) (*v3.DiscoveryResponse, error)\n}\n\ntype networkPolicyHostsDiscoveryServiceClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewNetworkPolicyHostsDiscoveryServiceClient(cc grpc.ClientConnInterface) NetworkPolicyHostsDiscoveryServiceClient {\n\treturn &networkPolicyHostsDiscoveryServiceClient{cc}\n}\n\nfunc (c *networkPolicyHostsDiscoveryServiceClient) StreamNetworkPolicyHosts(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[v3.DiscoveryRequest, v3.DiscoveryResponse], error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tstream, err := c.cc.NewStream(ctx, &NetworkPolicyHostsDiscoveryService_ServiceDesc.Streams[0], NetworkPolicyHostsDiscoveryService_StreamNetworkPolicyHosts_FullMethodName, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tx := &grpc.GenericClientStream[v3.DiscoveryRequest, v3.DiscoveryResponse]{ClientStream: stream}\n\treturn x, nil\n}\n\n// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.\ntype NetworkPolicyHostsDiscoveryService_StreamNetworkPolicyHostsClient = grpc.BidiStreamingClient[v3.DiscoveryRequest, v3.DiscoveryResponse]\n\nfunc (c *networkPolicyHostsDiscoveryServiceClient) FetchNetworkPolicyHosts(ctx context.Context, in *v3.DiscoveryRequest, opts ...grpc.CallOption) (*v3.DiscoveryResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(v3.DiscoveryResponse)\n\terr := c.cc.Invoke(ctx, NetworkPolicyHostsDiscoveryService_FetchNetworkPolicyHosts_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// NetworkPolicyHostsDiscoveryServiceServer is the server API for NetworkPolicyHostsDiscoveryService service.\n// All implementations must embed UnimplementedNetworkPolicyHostsDiscoveryServiceServer\n// for forward compatibility.\n//\n// Each resource name is a network policy identifier in decimal, e.g. `123`.\ntype NetworkPolicyHostsDiscoveryServiceServer interface {\n\tStreamNetworkPolicyHosts(grpc.BidiStreamingServer[v3.DiscoveryRequest, v3.DiscoveryResponse]) error\n\tFetchNetworkPolicyHosts(context.Context, *v3.DiscoveryRequest) (*v3.DiscoveryResponse, error)\n\tmustEmbedUnimplementedNetworkPolicyHostsDiscoveryServiceServer()\n}\n\n// UnimplementedNetworkPolicyHostsDiscoveryServiceServer must be embedded to have\n// forward compatible implementations.\n//\n// NOTE: this should be embedded by value instead of pointer to avoid a nil\n// pointer dereference when methods are called.\ntype UnimplementedNetworkPolicyHostsDiscoveryServiceServer struct{}\n\nfunc (UnimplementedNetworkPolicyHostsDiscoveryServiceServer) StreamNetworkPolicyHosts(grpc.BidiStreamingServer[v3.DiscoveryRequest, v3.DiscoveryResponse]) error {\n\treturn status.Error(codes.Unimplemented, \"method StreamNetworkPolicyHosts not implemented\")\n}\nfunc (UnimplementedNetworkPolicyHostsDiscoveryServiceServer) FetchNetworkPolicyHosts(context.Context, *v3.DiscoveryRequest) (*v3.DiscoveryResponse, error) {\n\treturn nil, status.Error(codes.Unimplemented, \"method FetchNetworkPolicyHosts not implemented\")\n}\nfunc (UnimplementedNetworkPolicyHostsDiscoveryServiceServer) mustEmbedUnimplementedNetworkPolicyHostsDiscoveryServiceServer() {\n}\nfunc (UnimplementedNetworkPolicyHostsDiscoveryServiceServer) testEmbeddedByValue() {}\n\n// UnsafeNetworkPolicyHostsDiscoveryServiceServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to NetworkPolicyHostsDiscoveryServiceServer will\n// result in compilation errors.\ntype UnsafeNetworkPolicyHostsDiscoveryServiceServer interface {\n\tmustEmbedUnimplementedNetworkPolicyHostsDiscoveryServiceServer()\n}\n\nfunc RegisterNetworkPolicyHostsDiscoveryServiceServer(s grpc.ServiceRegistrar, srv NetworkPolicyHostsDiscoveryServiceServer) {\n\t// If the following call panics, it indicates UnimplementedNetworkPolicyHostsDiscoveryServiceServer was\n\t// embedded by pointer and is nil.  This will cause panics if an\n\t// unimplemented method is ever invoked, so we test this at initialization\n\t// time to prevent it from happening at runtime later due to I/O.\n\tif t, ok := srv.(interface{ testEmbeddedByValue() }); ok {\n\t\tt.testEmbeddedByValue()\n\t}\n\ts.RegisterService(&NetworkPolicyHostsDiscoveryService_ServiceDesc, srv)\n}\n\nfunc _NetworkPolicyHostsDiscoveryService_StreamNetworkPolicyHosts_Handler(srv interface{}, stream grpc.ServerStream) error {\n\treturn srv.(NetworkPolicyHostsDiscoveryServiceServer).StreamNetworkPolicyHosts(&grpc.GenericServerStream[v3.DiscoveryRequest, v3.DiscoveryResponse]{ServerStream: stream})\n}\n\n// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.\ntype NetworkPolicyHostsDiscoveryService_StreamNetworkPolicyHostsServer = grpc.BidiStreamingServer[v3.DiscoveryRequest, v3.DiscoveryResponse]\n\nfunc _NetworkPolicyHostsDiscoveryService_FetchNetworkPolicyHosts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(v3.DiscoveryRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(NetworkPolicyHostsDiscoveryServiceServer).FetchNetworkPolicyHosts(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: NetworkPolicyHostsDiscoveryService_FetchNetworkPolicyHosts_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(NetworkPolicyHostsDiscoveryServiceServer).FetchNetworkPolicyHosts(ctx, req.(*v3.DiscoveryRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\n// NetworkPolicyHostsDiscoveryService_ServiceDesc is the grpc.ServiceDesc for NetworkPolicyHostsDiscoveryService service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar NetworkPolicyHostsDiscoveryService_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"cilium.NetworkPolicyHostsDiscoveryService\",\n\tHandlerType: (*NetworkPolicyHostsDiscoveryServiceServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"FetchNetworkPolicyHosts\",\n\t\t\tHandler:    _NetworkPolicyHostsDiscoveryService_FetchNetworkPolicyHosts_Handler,\n\t\t},\n\t},\n\tStreams: []grpc.StreamDesc{\n\t\t{\n\t\t\tStreamName:    \"StreamNetworkPolicyHosts\",\n\t\t\tHandler:       _NetworkPolicyHostsDiscoveryService_StreamNetworkPolicyHosts_Handler,\n\t\t\tServerStreams: true,\n\t\t\tClientStreams: true,\n\t\t},\n\t},\n\tMetadata: \"cilium/api/nphds.proto\",\n}\n"
  },
  {
    "path": "go/cilium/api/tls_wrapper.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.11\n// \tprotoc        v6.33.2\n// source: cilium/api/tls_wrapper.proto\n\npackage cilium\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Empty configuration messages for Cilium TLS wrapper to make Envoy happy\ntype UpstreamTlsWrapperContext struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *UpstreamTlsWrapperContext) Reset() {\n\t*x = UpstreamTlsWrapperContext{}\n\tmi := &file_cilium_api_tls_wrapper_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *UpstreamTlsWrapperContext) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UpstreamTlsWrapperContext) ProtoMessage() {}\n\nfunc (x *UpstreamTlsWrapperContext) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_tls_wrapper_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UpstreamTlsWrapperContext.ProtoReflect.Descriptor instead.\nfunc (*UpstreamTlsWrapperContext) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_tls_wrapper_proto_rawDescGZIP(), []int{0}\n}\n\ntype DownstreamTlsWrapperContext struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DownstreamTlsWrapperContext) Reset() {\n\t*x = DownstreamTlsWrapperContext{}\n\tmi := &file_cilium_api_tls_wrapper_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DownstreamTlsWrapperContext) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DownstreamTlsWrapperContext) ProtoMessage() {}\n\nfunc (x *DownstreamTlsWrapperContext) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_tls_wrapper_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DownstreamTlsWrapperContext.ProtoReflect.Descriptor instead.\nfunc (*DownstreamTlsWrapperContext) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_tls_wrapper_proto_rawDescGZIP(), []int{1}\n}\n\nvar File_cilium_api_tls_wrapper_proto protoreflect.FileDescriptor\n\nconst file_cilium_api_tls_wrapper_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1ccilium/api/tls_wrapper.proto\\x12\\x06cilium\\\"\\x1b\\n\" +\n\t\"\\x19UpstreamTlsWrapperContext\\\"\\x1d\\n\" +\n\t\"\\x1bDownstreamTlsWrapperContextB.Z,github.com/cilium/proxy/go/cilium/api;ciliumb\\x06proto3\"\n\nvar (\n\tfile_cilium_api_tls_wrapper_proto_rawDescOnce sync.Once\n\tfile_cilium_api_tls_wrapper_proto_rawDescData []byte\n)\n\nfunc file_cilium_api_tls_wrapper_proto_rawDescGZIP() []byte {\n\tfile_cilium_api_tls_wrapper_proto_rawDescOnce.Do(func() {\n\t\tfile_cilium_api_tls_wrapper_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cilium_api_tls_wrapper_proto_rawDesc), len(file_cilium_api_tls_wrapper_proto_rawDesc)))\n\t})\n\treturn file_cilium_api_tls_wrapper_proto_rawDescData\n}\n\nvar file_cilium_api_tls_wrapper_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_cilium_api_tls_wrapper_proto_goTypes = []any{\n\t(*UpstreamTlsWrapperContext)(nil),   // 0: cilium.UpstreamTlsWrapperContext\n\t(*DownstreamTlsWrapperContext)(nil), // 1: cilium.DownstreamTlsWrapperContext\n}\nvar file_cilium_api_tls_wrapper_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_cilium_api_tls_wrapper_proto_init() }\nfunc file_cilium_api_tls_wrapper_proto_init() {\n\tif File_cilium_api_tls_wrapper_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_cilium_api_tls_wrapper_proto_rawDesc), len(file_cilium_api_tls_wrapper_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_cilium_api_tls_wrapper_proto_goTypes,\n\t\tDependencyIndexes: file_cilium_api_tls_wrapper_proto_depIdxs,\n\t\tMessageInfos:      file_cilium_api_tls_wrapper_proto_msgTypes,\n\t}.Build()\n\tFile_cilium_api_tls_wrapper_proto = out.File\n\tfile_cilium_api_tls_wrapper_proto_goTypes = nil\n\tfile_cilium_api_tls_wrapper_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "go/cilium/api/tls_wrapper.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: cilium/api/tls_wrapper.proto\n\npackage cilium\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on UpstreamTlsWrapperContext with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *UpstreamTlsWrapperContext) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on UpstreamTlsWrapperContext with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// UpstreamTlsWrapperContextMultiError, or nil if none found.\nfunc (m *UpstreamTlsWrapperContext) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *UpstreamTlsWrapperContext) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn UpstreamTlsWrapperContextMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// UpstreamTlsWrapperContextMultiError is an error wrapping multiple validation\n// errors returned by UpstreamTlsWrapperContext.ValidateAll() if the\n// designated constraints aren't met.\ntype UpstreamTlsWrapperContextMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m UpstreamTlsWrapperContextMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m UpstreamTlsWrapperContextMultiError) AllErrors() []error { return m }\n\n// UpstreamTlsWrapperContextValidationError is the validation error returned by\n// UpstreamTlsWrapperContext.Validate if the designated constraints aren't met.\ntype UpstreamTlsWrapperContextValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e UpstreamTlsWrapperContextValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e UpstreamTlsWrapperContextValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e UpstreamTlsWrapperContextValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e UpstreamTlsWrapperContextValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e UpstreamTlsWrapperContextValidationError) ErrorName() string {\n\treturn \"UpstreamTlsWrapperContextValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e UpstreamTlsWrapperContextValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sUpstreamTlsWrapperContext.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = UpstreamTlsWrapperContextValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = UpstreamTlsWrapperContextValidationError{}\n\n// Validate checks the field values on DownstreamTlsWrapperContext with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *DownstreamTlsWrapperContext) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DownstreamTlsWrapperContext with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// DownstreamTlsWrapperContextMultiError, or nil if none found.\nfunc (m *DownstreamTlsWrapperContext) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DownstreamTlsWrapperContext) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn DownstreamTlsWrapperContextMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DownstreamTlsWrapperContextMultiError is an error wrapping multiple\n// validation errors returned by DownstreamTlsWrapperContext.ValidateAll() if\n// the designated constraints aren't met.\ntype DownstreamTlsWrapperContextMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DownstreamTlsWrapperContextMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DownstreamTlsWrapperContextMultiError) AllErrors() []error { return m }\n\n// DownstreamTlsWrapperContextValidationError is the validation error returned\n// by DownstreamTlsWrapperContext.Validate if the designated constraints\n// aren't met.\ntype DownstreamTlsWrapperContextValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DownstreamTlsWrapperContextValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DownstreamTlsWrapperContextValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DownstreamTlsWrapperContextValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DownstreamTlsWrapperContextValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DownstreamTlsWrapperContextValidationError) ErrorName() string {\n\treturn \"DownstreamTlsWrapperContextValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e DownstreamTlsWrapperContextValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDownstreamTlsWrapperContext.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DownstreamTlsWrapperContextValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DownstreamTlsWrapperContextValidationError{}\n"
  },
  {
    "path": "go/cilium/api/websocket.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.11\n// \tprotoc        v6.33.2\n// source: cilium/api/websocket.proto\n\npackage cilium\n\nimport (\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype WebSocketClient struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Path to the unix domain socket for the cilium access log, if any.\n\tAccessLogPath string `protobuf:\"bytes,1,opt,name=access_log_path,json=accessLogPath,proto3\" json:\"access_log_path,omitempty\"`\n\t// Host header value, required.\n\tHost string `protobuf:\"bytes,2,opt,name=host,proto3\" json:\"host,omitempty\"`\n\t// Path value. Defaults to \"/\".\n\tPath string `protobuf:\"bytes,3,opt,name=path,proto3\" json:\"path,omitempty\"`\n\t// sec-websocket-key value to use, defaults to a random key.\n\tKey string `protobuf:\"bytes,4,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// Websocket version, defaults to \"13\".\n\tVersion string `protobuf:\"bytes,5,opt,name=version,proto3\" json:\"version,omitempty\"`\n\t// Origin header, if any.\n\tOrigin string `protobuf:\"bytes,6,opt,name=origin,proto3\" json:\"origin,omitempty\"`\n\t// Websocket handshake timeout, default is 5 seconds.\n\tHandshakeTimeout *durationpb.Duration `protobuf:\"bytes,7,opt,name=handshake_timeout,json=handshakeTimeout,proto3\" json:\"handshake_timeout,omitempty\"`\n\t// ping interval, default is 0 (disabled).\n\t// Connection is assumed dead if response is not received before the next ping is to be sent.\n\tPingInterval *durationpb.Duration `protobuf:\"bytes,8,opt,name=ping_interval,json=pingInterval,proto3\" json:\"ping_interval,omitempty\"`\n\t// ping only on when idle on both directions.\n\t// ping_interval must be non-zero when this is true.\n\tPingWhenIdle  bool `protobuf:\"varint,9,opt,name=ping_when_idle,json=pingWhenIdle,proto3\" json:\"ping_when_idle,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *WebSocketClient) Reset() {\n\t*x = WebSocketClient{}\n\tmi := &file_cilium_api_websocket_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *WebSocketClient) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*WebSocketClient) ProtoMessage() {}\n\nfunc (x *WebSocketClient) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_websocket_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use WebSocketClient.ProtoReflect.Descriptor instead.\nfunc (*WebSocketClient) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_websocket_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *WebSocketClient) GetAccessLogPath() string {\n\tif x != nil {\n\t\treturn x.AccessLogPath\n\t}\n\treturn \"\"\n}\n\nfunc (x *WebSocketClient) GetHost() string {\n\tif x != nil {\n\t\treturn x.Host\n\t}\n\treturn \"\"\n}\n\nfunc (x *WebSocketClient) GetPath() string {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn \"\"\n}\n\nfunc (x *WebSocketClient) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\nfunc (x *WebSocketClient) GetVersion() string {\n\tif x != nil {\n\t\treturn x.Version\n\t}\n\treturn \"\"\n}\n\nfunc (x *WebSocketClient) GetOrigin() string {\n\tif x != nil {\n\t\treturn x.Origin\n\t}\n\treturn \"\"\n}\n\nfunc (x *WebSocketClient) GetHandshakeTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.HandshakeTimeout\n\t}\n\treturn nil\n}\n\nfunc (x *WebSocketClient) GetPingInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.PingInterval\n\t}\n\treturn nil\n}\n\nfunc (x *WebSocketClient) GetPingWhenIdle() bool {\n\tif x != nil {\n\t\treturn x.PingWhenIdle\n\t}\n\treturn false\n}\n\ntype WebSocketServer struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Path to the unix domain socket for the cilium access log, if any.\n\tAccessLogPath string `protobuf:\"bytes,1,opt,name=access_log_path,json=accessLogPath,proto3\" json:\"access_log_path,omitempty\"`\n\t// Expected host header value, if any.\n\tHost string `protobuf:\"bytes,2,opt,name=host,proto3\" json:\"host,omitempty\"`\n\t// Expected path value, if any.\n\tPath string `protobuf:\"bytes,3,opt,name=path,proto3\" json:\"path,omitempty\"`\n\t// sec-websocket-key value to expect, if any.\n\tKey string `protobuf:\"bytes,4,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// Websocket version, ignored if omitted.\n\tVersion string `protobuf:\"bytes,5,opt,name=version,proto3\" json:\"version,omitempty\"`\n\t// Origin header, if any. Origin header is not allowed if omitted.\n\tOrigin string `protobuf:\"bytes,6,opt,name=origin,proto3\" json:\"origin,omitempty\"`\n\t// Websocket handshake timeout, default is 5 seconds.\n\tHandshakeTimeout *durationpb.Duration `protobuf:\"bytes,7,opt,name=handshake_timeout,json=handshakeTimeout,proto3\" json:\"handshake_timeout,omitempty\"`\n\t// ping interval, default is 0 (disabled).\n\t// Connection is assumed dead if response is not received before the next ping is to be sent.\n\tPingInterval *durationpb.Duration `protobuf:\"bytes,8,opt,name=ping_interval,json=pingInterval,proto3\" json:\"ping_interval,omitempty\"`\n\t// ping only on when idle on both directions.\n\t// ping_interval must be non-zero when this is true.\n\tPingWhenIdle  bool `protobuf:\"varint,9,opt,name=ping_when_idle,json=pingWhenIdle,proto3\" json:\"ping_when_idle,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *WebSocketServer) Reset() {\n\t*x = WebSocketServer{}\n\tmi := &file_cilium_api_websocket_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *WebSocketServer) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*WebSocketServer) ProtoMessage() {}\n\nfunc (x *WebSocketServer) ProtoReflect() protoreflect.Message {\n\tmi := &file_cilium_api_websocket_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use WebSocketServer.ProtoReflect.Descriptor instead.\nfunc (*WebSocketServer) Descriptor() ([]byte, []int) {\n\treturn file_cilium_api_websocket_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *WebSocketServer) GetAccessLogPath() string {\n\tif x != nil {\n\t\treturn x.AccessLogPath\n\t}\n\treturn \"\"\n}\n\nfunc (x *WebSocketServer) GetHost() string {\n\tif x != nil {\n\t\treturn x.Host\n\t}\n\treturn \"\"\n}\n\nfunc (x *WebSocketServer) GetPath() string {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn \"\"\n}\n\nfunc (x *WebSocketServer) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\nfunc (x *WebSocketServer) GetVersion() string {\n\tif x != nil {\n\t\treturn x.Version\n\t}\n\treturn \"\"\n}\n\nfunc (x *WebSocketServer) GetOrigin() string {\n\tif x != nil {\n\t\treturn x.Origin\n\t}\n\treturn \"\"\n}\n\nfunc (x *WebSocketServer) GetHandshakeTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.HandshakeTimeout\n\t}\n\treturn nil\n}\n\nfunc (x *WebSocketServer) GetPingInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.PingInterval\n\t}\n\treturn nil\n}\n\nfunc (x *WebSocketServer) GetPingWhenIdle() bool {\n\tif x != nil {\n\t\treturn x.PingWhenIdle\n\t}\n\treturn false\n}\n\nvar File_cilium_api_websocket_proto protoreflect.FileDescriptor\n\nconst file_cilium_api_websocket_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1acilium/api/websocket.proto\\x12\\x06cilium\\x1a\\x1egoogle/protobuf/duration.proto\\x1a\\x17validate/validate.proto\\\"\\xdc\\x02\\n\" +\n\t\"\\x0fWebSocketClient\\x12&\\n\" +\n\t\"\\x0faccess_log_path\\x18\\x01 \\x01(\\tR\\raccessLogPath\\x12\\x1b\\n\" +\n\t\"\\x04host\\x18\\x02 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x02R\\x04host\\x12\\x12\\n\" +\n\t\"\\x04path\\x18\\x03 \\x01(\\tR\\x04path\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x04 \\x01(\\tR\\x03key\\x12\\x18\\n\" +\n\t\"\\aversion\\x18\\x05 \\x01(\\tR\\aversion\\x12\\x16\\n\" +\n\t\"\\x06origin\\x18\\x06 \\x01(\\tR\\x06origin\\x12F\\n\" +\n\t\"\\x11handshake_timeout\\x18\\a \\x01(\\v2\\x19.google.protobuf.DurationR\\x10handshakeTimeout\\x12>\\n\" +\n\t\"\\rping_interval\\x18\\b \\x01(\\v2\\x19.google.protobuf.DurationR\\fpingInterval\\x12$\\n\" +\n\t\"\\x0eping_when_idle\\x18\\t \\x01(\\bR\\fpingWhenIdle\\\"\\xd3\\x02\\n\" +\n\t\"\\x0fWebSocketServer\\x12&\\n\" +\n\t\"\\x0faccess_log_path\\x18\\x01 \\x01(\\tR\\raccessLogPath\\x12\\x12\\n\" +\n\t\"\\x04host\\x18\\x02 \\x01(\\tR\\x04host\\x12\\x12\\n\" +\n\t\"\\x04path\\x18\\x03 \\x01(\\tR\\x04path\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x04 \\x01(\\tR\\x03key\\x12\\x18\\n\" +\n\t\"\\aversion\\x18\\x05 \\x01(\\tR\\aversion\\x12\\x16\\n\" +\n\t\"\\x06origin\\x18\\x06 \\x01(\\tR\\x06origin\\x12F\\n\" +\n\t\"\\x11handshake_timeout\\x18\\a \\x01(\\v2\\x19.google.protobuf.DurationR\\x10handshakeTimeout\\x12>\\n\" +\n\t\"\\rping_interval\\x18\\b \\x01(\\v2\\x19.google.protobuf.DurationR\\fpingInterval\\x12$\\n\" +\n\t\"\\x0eping_when_idle\\x18\\t \\x01(\\bR\\fpingWhenIdleB.Z,github.com/cilium/proxy/go/cilium/api;ciliumb\\x06proto3\"\n\nvar (\n\tfile_cilium_api_websocket_proto_rawDescOnce sync.Once\n\tfile_cilium_api_websocket_proto_rawDescData []byte\n)\n\nfunc file_cilium_api_websocket_proto_rawDescGZIP() []byte {\n\tfile_cilium_api_websocket_proto_rawDescOnce.Do(func() {\n\t\tfile_cilium_api_websocket_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cilium_api_websocket_proto_rawDesc), len(file_cilium_api_websocket_proto_rawDesc)))\n\t})\n\treturn file_cilium_api_websocket_proto_rawDescData\n}\n\nvar file_cilium_api_websocket_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_cilium_api_websocket_proto_goTypes = []any{\n\t(*WebSocketClient)(nil),     // 0: cilium.WebSocketClient\n\t(*WebSocketServer)(nil),     // 1: cilium.WebSocketServer\n\t(*durationpb.Duration)(nil), // 2: google.protobuf.Duration\n}\nvar file_cilium_api_websocket_proto_depIdxs = []int32{\n\t2, // 0: cilium.WebSocketClient.handshake_timeout:type_name -> google.protobuf.Duration\n\t2, // 1: cilium.WebSocketClient.ping_interval:type_name -> google.protobuf.Duration\n\t2, // 2: cilium.WebSocketServer.handshake_timeout:type_name -> google.protobuf.Duration\n\t2, // 3: cilium.WebSocketServer.ping_interval:type_name -> google.protobuf.Duration\n\t4, // [4:4] is the sub-list for method output_type\n\t4, // [4:4] is the sub-list for method input_type\n\t4, // [4:4] is the sub-list for extension type_name\n\t4, // [4:4] is the sub-list for extension extendee\n\t0, // [0:4] is the sub-list for field type_name\n}\n\nfunc init() { file_cilium_api_websocket_proto_init() }\nfunc file_cilium_api_websocket_proto_init() {\n\tif File_cilium_api_websocket_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_cilium_api_websocket_proto_rawDesc), len(file_cilium_api_websocket_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_cilium_api_websocket_proto_goTypes,\n\t\tDependencyIndexes: file_cilium_api_websocket_proto_depIdxs,\n\t\tMessageInfos:      file_cilium_api_websocket_proto_msgTypes,\n\t}.Build()\n\tFile_cilium_api_websocket_proto = out.File\n\tfile_cilium_api_websocket_proto_goTypes = nil\n\tfile_cilium_api_websocket_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "go/cilium/api/websocket.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: cilium/api/websocket.proto\n\npackage cilium\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on WebSocketClient with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *WebSocketClient) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on WebSocketClient with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// WebSocketClientMultiError, or nil if none found.\nfunc (m *WebSocketClient) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *WebSocketClient) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for AccessLogPath\n\n\tif utf8.RuneCountInString(m.GetHost()) < 2 {\n\t\terr := WebSocketClientValidationError{\n\t\t\tfield:  \"Host\",\n\t\t\treason: \"value length must be at least 2 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for Path\n\n\t// no validation rules for Key\n\n\t// no validation rules for Version\n\n\t// no validation rules for Origin\n\n\tif all {\n\t\tswitch v := interface{}(m.GetHandshakeTimeout()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, WebSocketClientValidationError{\n\t\t\t\t\tfield:  \"HandshakeTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, WebSocketClientValidationError{\n\t\t\t\t\tfield:  \"HandshakeTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetHandshakeTimeout()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn WebSocketClientValidationError{\n\t\t\t\tfield:  \"HandshakeTimeout\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPingInterval()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, WebSocketClientValidationError{\n\t\t\t\t\tfield:  \"PingInterval\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, WebSocketClientValidationError{\n\t\t\t\t\tfield:  \"PingInterval\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPingInterval()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn WebSocketClientValidationError{\n\t\t\t\tfield:  \"PingInterval\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for PingWhenIdle\n\n\tif len(errors) > 0 {\n\t\treturn WebSocketClientMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// WebSocketClientMultiError is an error wrapping multiple validation errors\n// returned by WebSocketClient.ValidateAll() if the designated constraints\n// aren't met.\ntype WebSocketClientMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m WebSocketClientMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m WebSocketClientMultiError) AllErrors() []error { return m }\n\n// WebSocketClientValidationError is the validation error returned by\n// WebSocketClient.Validate if the designated constraints aren't met.\ntype WebSocketClientValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e WebSocketClientValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e WebSocketClientValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e WebSocketClientValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e WebSocketClientValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e WebSocketClientValidationError) ErrorName() string { return \"WebSocketClientValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e WebSocketClientValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sWebSocketClient.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = WebSocketClientValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = WebSocketClientValidationError{}\n\n// Validate checks the field values on WebSocketServer with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *WebSocketServer) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on WebSocketServer with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// WebSocketServerMultiError, or nil if none found.\nfunc (m *WebSocketServer) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *WebSocketServer) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for AccessLogPath\n\n\t// no validation rules for Host\n\n\t// no validation rules for Path\n\n\t// no validation rules for Key\n\n\t// no validation rules for Version\n\n\t// no validation rules for Origin\n\n\tif all {\n\t\tswitch v := interface{}(m.GetHandshakeTimeout()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, WebSocketServerValidationError{\n\t\t\t\t\tfield:  \"HandshakeTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, WebSocketServerValidationError{\n\t\t\t\t\tfield:  \"HandshakeTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetHandshakeTimeout()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn WebSocketServerValidationError{\n\t\t\t\tfield:  \"HandshakeTimeout\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPingInterval()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, WebSocketServerValidationError{\n\t\t\t\t\tfield:  \"PingInterval\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, WebSocketServerValidationError{\n\t\t\t\t\tfield:  \"PingInterval\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPingInterval()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn WebSocketServerValidationError{\n\t\t\t\tfield:  \"PingInterval\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for PingWhenIdle\n\n\tif len(errors) > 0 {\n\t\treturn WebSocketServerMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// WebSocketServerMultiError is an error wrapping multiple validation errors\n// returned by WebSocketServer.ValidateAll() if the designated constraints\n// aren't met.\ntype WebSocketServerMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m WebSocketServerMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m WebSocketServerMultiError) AllErrors() []error { return m }\n\n// WebSocketServerValidationError is the validation error returned by\n// WebSocketServer.Validate if the designated constraints aren't met.\ntype WebSocketServerValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e WebSocketServerValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e WebSocketServerValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e WebSocketServerValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e WebSocketServerValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e WebSocketServerValidationError) ErrorName() string { return \"WebSocketServerValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e WebSocketServerValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sWebSocketServer.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = WebSocketServerValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = WebSocketServerValidationError{}\n"
  },
  {
    "path": "go.mod",
    "content": "module github.com/cilium/proxy\n\ngo 1.25.0\n\ntoolchain go1.26.3\n\nrequire (\n\tgithub.com/cilium/kafka v0.0.0-20180809090225-01ce283b732b\n\tgithub.com/envoyproxy/go-control-plane/envoy v1.37.0\n\tgithub.com/envoyproxy/protoc-gen-validate v1.3.3\n\tgithub.com/sirupsen/logrus v1.9.4\n\tgithub.com/stretchr/testify v1.11.1\n\tgolang.org/x/sys v0.44.0\n\tgoogle.golang.org/genproto/googleapis/api v0.0.0-20260511170946-3700d4141b60\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60\n\tgoogle.golang.org/grpc v1.81.0\n\tgoogle.golang.org/protobuf v1.36.11\n)\n\nrequire (\n\tcel.dev/expr v0.25.1 // indirect\n\tgithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 // indirect\n\tgithub.com/davecgh/go-spew v1.1.1 // indirect\n\tgithub.com/golang/snappy v0.0.4 // indirect\n\tgithub.com/iancoleman/strcase v0.3.0 // indirect\n\tgithub.com/lyft/protoc-gen-star/v2 v2.0.4 // indirect\n\tgithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.0 // indirect\n\tgithub.com/spf13/afero v1.15.0 // indirect\n\tgolang.org/x/mod v0.32.0 // indirect\n\tgolang.org/x/net v0.51.0 // indirect\n\tgolang.org/x/sync v0.20.0 // indirect\n\tgolang.org/x/text v0.34.0 // indirect\n\tgolang.org/x/tools v0.41.0 // indirect\n\tgoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.2 // indirect\n\tgopkg.in/yaml.v3 v3.0.1 // indirect\n)\n\ntool (\n\tgithub.com/envoyproxy/protoc-gen-validate\n\tgoogle.golang.org/grpc/cmd/protoc-gen-go-grpc\n\tgoogle.golang.org/protobuf/cmd/protoc-gen-go\n)\n"
  },
  {
    "path": "go.sum",
    "content": "cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=\ncel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=\ngithub.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=\ngithub.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/cilium/kafka v0.0.0-20180809090225-01ce283b732b h1:+bsFX/WOMIoaayXVyRem1awcpz3icz/HoL8Dxg/m6a4=\ngithub.com/cilium/kafka v0.0.0-20180809090225-01ce283b732b/go.mod h1:ktgizta3CPZBKz5uW272SJyjiro0vn4nOVP7Pk4RopA=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=\ngithub.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=\ngithub.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=\ngithub.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=\ngithub.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=\ngithub.com/lyft/protoc-gen-star/v2 v2.0.4 h1:JDlNKttNIRd68AAIychs0AqEpO8/I/WYi01OQ7Raw6Q=\ngithub.com/lyft/protoc-gen-star/v2 v2.0.4/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w=\ngithub.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g=\ngithub.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=\ngithub.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngo.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=\ngo.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=\ngo.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=\ngo.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=\ngo.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=\ngo.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=\ngo.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=\ngo.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=\ngo.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=\ngo.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=\ngo.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=\ngo.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=\ngolang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c=\ngolang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU=\ngolang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo=\ngolang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y=\ngolang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=\ngolang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=\ngolang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ=\ngolang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=\ngolang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=\ngolang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=\ngolang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc=\ngolang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg=\ngonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=\ngonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260511170946-3700d4141b60 h1:3WsB1FAbiRIf2tOxscWKs3pQBD9he1NsrnbhMuWfekc=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260511170946-3700d4141b60/go.mod h1:7yoXV7RIh5gblj/xVYoogxAWvA9wUeVbpsK/M694l00=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60 h1:seT2EwLWM78plQ7wcDfuWBc/4FAEAXDDiaSol4ku4qo=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=\ngoogle.golang.org/grpc v1.81.0 h1:W3G9N3KQf3BU+YuCtGKJk0CmxQNbAISICD/9AORxLIw=\ngoogle.golang.org/grpc v1.81.0/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.2 h1:rgSNvqscFZ1JgV/4wH5GOsZFSFkR2Eua9As3KIr2LlM=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.2/go.mod h1:iMEtFwDlAhjDU9L5mY6U1XLwlIId/G3h+QcBHDIvrJ8=\ngoogle.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=\ngoogle.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\n"
  },
  {
    "path": "linux/bpf.h",
    "content": "/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */\n/* Copyright (c) 2011-2014 PLUMgrid, http://plumgrid.com\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of version 2 of the GNU General Public\n * License as published by the Free Software Foundation.\n */\n#ifndef __LINUX_BPF_H__\n#define __LINUX_BPF_H__\n\n#include \"linux/type_mapper.h\"\n#include \"linux/bpf_common.h\"\n\n/* Extended instruction set based on top of classic BPF */\n\n/* instruction classes */\n#define BPF_ALU64\t0x07\t/* alu mode in double word width */\n\n/* ld/ldx fields */\n#define BPF_DW\t\t0x18\t/* double word (64-bit) */\n#define BPF_XADD\t0xc0\t/* exclusive add */\n\n/* alu/jmp fields */\n#define BPF_MOV\t\t0xb0\t/* mov reg to reg */\n#define BPF_ARSH\t0xc0\t/* sign extending arithmetic shift right */\n\n/* change endianness of a register */\n#define BPF_END\t\t0xd0\t/* flags for endianness conversion: */\n#define BPF_TO_LE\t0x00\t/* convert to little-endian */\n#define BPF_TO_BE\t0x08\t/* convert to big-endian */\n#define BPF_FROM_LE\tBPF_TO_LE\n#define BPF_FROM_BE\tBPF_TO_BE\n\n/* jmp encodings */\n#define BPF_JNE\t\t0x50\t/* jump != */\n#define BPF_JLT\t\t0xa0\t/* LT is unsigned, '<' */\n#define BPF_JLE\t\t0xb0\t/* LE is unsigned, '<=' */\n#define BPF_JSGT\t0x60\t/* SGT is signed '>', GT in x86 */\n#define BPF_JSGE\t0x70\t/* SGE is signed '>=', GE in x86 */\n#define BPF_JSLT\t0xc0\t/* SLT is signed, '<' */\n#define BPF_JSLE\t0xd0\t/* SLE is signed, '<=' */\n#define BPF_CALL\t0x80\t/* function call */\n#define BPF_EXIT\t0x90\t/* function return */\n\n/* Register numbers */\nenum {\n\tBPF_REG_0 = 0,\n\tBPF_REG_1,\n\tBPF_REG_2,\n\tBPF_REG_3,\n\tBPF_REG_4,\n\tBPF_REG_5,\n\tBPF_REG_6,\n\tBPF_REG_7,\n\tBPF_REG_8,\n\tBPF_REG_9,\n\tBPF_REG_10,\n\t__MAX_BPF_REG,\n};\n\n/* BPF has 10 general purpose 64-bit registers and stack frame. */\n#define MAX_BPF_REG\t__MAX_BPF_REG\n\nstruct bpf_insn {\n\t__u8\tcode;\t\t/* opcode */\n\t__u8\tdst_reg:4;\t/* dest register */\n\t__u8\tsrc_reg:4;\t/* source register */\n\t__s16\toff;\t\t/* signed offset */\n\t__s32\timm;\t\t/* signed immediate constant */\n};\n\n/* Key of an a BPF_MAP_TYPE_LPM_TRIE entry */\nstruct bpf_lpm_trie_key {\n\t__u32\tprefixlen;\t/* up to 32 for AF_INET, 128 for AF_INET6 */\n\t__u8\tdata[0];\t/* Arbitrary size */\n};\n\nstruct bpf_cgroup_storage_key {\n\t__u64\tcgroup_inode_id;\t/* cgroup inode id */\n\t__u32\tattach_type;\t\t/* program attach type */\n};\n\n/* BPF syscall commands, see bpf(2) man-page for details. */\nenum bpf_cmd {\n\tBPF_MAP_CREATE,\n\tBPF_MAP_LOOKUP_ELEM,\n\tBPF_MAP_UPDATE_ELEM,\n\tBPF_MAP_DELETE_ELEM,\n\tBPF_MAP_GET_NEXT_KEY,\n\tBPF_PROG_LOAD,\n\tBPF_OBJ_PIN,\n\tBPF_OBJ_GET,\n\tBPF_PROG_ATTACH,\n\tBPF_PROG_DETACH,\n\tBPF_PROG_TEST_RUN,\n\tBPF_PROG_GET_NEXT_ID,\n\tBPF_MAP_GET_NEXT_ID,\n\tBPF_PROG_GET_FD_BY_ID,\n\tBPF_MAP_GET_FD_BY_ID,\n\tBPF_OBJ_GET_INFO_BY_FD,\n\tBPF_PROG_QUERY,\n\tBPF_RAW_TRACEPOINT_OPEN,\n\tBPF_BTF_LOAD,\n\tBPF_BTF_GET_FD_BY_ID,\n\tBPF_TASK_FD_QUERY,\n};\n\nenum bpf_map_type {\n\tBPF_MAP_TYPE_UNSPEC,\n\tBPF_MAP_TYPE_HASH,\n\tBPF_MAP_TYPE_ARRAY,\n\tBPF_MAP_TYPE_PROG_ARRAY,\n\tBPF_MAP_TYPE_PERF_EVENT_ARRAY,\n\tBPF_MAP_TYPE_PERCPU_HASH,\n\tBPF_MAP_TYPE_PERCPU_ARRAY,\n\tBPF_MAP_TYPE_STACK_TRACE,\n\tBPF_MAP_TYPE_CGROUP_ARRAY,\n\tBPF_MAP_TYPE_LRU_HASH,\n\tBPF_MAP_TYPE_LRU_PERCPU_HASH,\n\tBPF_MAP_TYPE_LPM_TRIE,\n\tBPF_MAP_TYPE_ARRAY_OF_MAPS,\n\tBPF_MAP_TYPE_HASH_OF_MAPS,\n\tBPF_MAP_TYPE_DEVMAP,\n\tBPF_MAP_TYPE_SOCKMAP,\n\tBPF_MAP_TYPE_CPUMAP,\n\tBPF_MAP_TYPE_XSKMAP,\n\tBPF_MAP_TYPE_SOCKHASH,\n\tBPF_MAP_TYPE_CGROUP_STORAGE,\n\tBPF_MAP_TYPE_REUSEPORT_SOCKARRAY,\n};\n\nenum bpf_prog_type {\n\tBPF_PROG_TYPE_UNSPEC,\n\tBPF_PROG_TYPE_SOCKET_FILTER,\n\tBPF_PROG_TYPE_KPROBE,\n\tBPF_PROG_TYPE_SCHED_CLS,\n\tBPF_PROG_TYPE_SCHED_ACT,\n\tBPF_PROG_TYPE_TRACEPOINT,\n\tBPF_PROG_TYPE_XDP,\n\tBPF_PROG_TYPE_PERF_EVENT,\n\tBPF_PROG_TYPE_CGROUP_SKB,\n\tBPF_PROG_TYPE_CGROUP_SOCK,\n\tBPF_PROG_TYPE_LWT_IN,\n\tBPF_PROG_TYPE_LWT_OUT,\n\tBPF_PROG_TYPE_LWT_XMIT,\n\tBPF_PROG_TYPE_SOCK_OPS,\n\tBPF_PROG_TYPE_SK_SKB,\n\tBPF_PROG_TYPE_CGROUP_DEVICE,\n\tBPF_PROG_TYPE_SK_MSG,\n\tBPF_PROG_TYPE_RAW_TRACEPOINT,\n\tBPF_PROG_TYPE_CGROUP_SOCK_ADDR,\n\tBPF_PROG_TYPE_LWT_SEG6LOCAL,\n\tBPF_PROG_TYPE_LIRC_MODE2,\n\tBPF_PROG_TYPE_SK_REUSEPORT,\n};\n\nenum bpf_attach_type {\n\tBPF_CGROUP_INET_INGRESS,\n\tBPF_CGROUP_INET_EGRESS,\n\tBPF_CGROUP_INET_SOCK_CREATE,\n\tBPF_CGROUP_SOCK_OPS,\n\tBPF_SK_SKB_STREAM_PARSER,\n\tBPF_SK_SKB_STREAM_VERDICT,\n\tBPF_CGROUP_DEVICE,\n\tBPF_SK_MSG_VERDICT,\n\tBPF_CGROUP_INET4_BIND,\n\tBPF_CGROUP_INET6_BIND,\n\tBPF_CGROUP_INET4_CONNECT,\n\tBPF_CGROUP_INET6_CONNECT,\n\tBPF_CGROUP_INET4_POST_BIND,\n\tBPF_CGROUP_INET6_POST_BIND,\n\tBPF_CGROUP_UDP4_SENDMSG,\n\tBPF_CGROUP_UDP6_SENDMSG,\n\tBPF_LIRC_MODE2,\n\t__MAX_BPF_ATTACH_TYPE\n};\n\n#define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE\n\n/* cgroup-bpf attach flags used in BPF_PROG_ATTACH command\n *\n * NONE(default): No further bpf programs allowed in the subtree.\n *\n * BPF_F_ALLOW_OVERRIDE: If a sub-cgroup installs some bpf program,\n * the program in this cgroup yields to sub-cgroup program.\n *\n * BPF_F_ALLOW_MULTI: If a sub-cgroup installs some bpf program,\n * that cgroup program gets run in addition to the program in this cgroup.\n *\n * Only one program is allowed to be attached to a cgroup with\n * NONE or BPF_F_ALLOW_OVERRIDE flag.\n * Attaching another program on top of NONE or BPF_F_ALLOW_OVERRIDE will\n * release old program and attach the new one. Attach flags has to match.\n *\n * Multiple programs are allowed to be attached to a cgroup with\n * BPF_F_ALLOW_MULTI flag. They are executed in FIFO order\n * (those that were attached first, run first)\n * The programs of sub-cgroup are executed first, then programs of\n * this cgroup and then programs of parent cgroup.\n * When children program makes decision (like picking TCP CA or sock bind)\n * parent program has a chance to override it.\n *\n * A cgroup with MULTI or OVERRIDE flag allows any attach flags in sub-cgroups.\n * A cgroup with NONE doesn't allow any programs in sub-cgroups.\n * Ex1:\n * cgrp1 (MULTI progs A, B) ->\n *    cgrp2 (OVERRIDE prog C) ->\n *      cgrp3 (MULTI prog D) ->\n *        cgrp4 (OVERRIDE prog E) ->\n *          cgrp5 (NONE prog F)\n * the event in cgrp5 triggers execution of F,D,A,B in that order.\n * if prog F is detached, the execution is E,D,A,B\n * if prog F and D are detached, the execution is E,A,B\n * if prog F, E and D are detached, the execution is C,A,B\n *\n * All eligible programs are executed regardless of return code from\n * earlier programs.\n */\n#define BPF_F_ALLOW_OVERRIDE\t(1U << 0)\n#define BPF_F_ALLOW_MULTI\t(1U << 1)\n\n/* If BPF_F_STRICT_ALIGNMENT is used in BPF_PROG_LOAD command, the\n * verifier will perform strict alignment checking as if the kernel\n * has been built with CONFIG_EFFICIENT_UNALIGNED_ACCESS not set,\n * and NET_IP_ALIGN defined to 2.\n */\n#define BPF_F_STRICT_ALIGNMENT\t(1U << 0)\n\n/* when bpf_ldimm64->src_reg == BPF_PSEUDO_MAP_FD, bpf_ldimm64->imm == fd */\n#define BPF_PSEUDO_MAP_FD\t1\n\n/* when bpf_call->src_reg == BPF_PSEUDO_CALL, bpf_call->imm == pc-relative\n * offset to another bpf function\n */\n#define BPF_PSEUDO_CALL\t\t1\n\n/* flags for BPF_MAP_UPDATE_ELEM command */\n#define BPF_ANY\t\t0 /* create new element or update existing */\n#define BPF_NOEXIST\t1 /* create new element if it didn't exist */\n#define BPF_EXIST\t2 /* update existing element */\n\n/* flags for BPF_MAP_CREATE command */\n#define BPF_F_NO_PREALLOC\t(1U << 0)\n/* Instead of having one common LRU list in the\n * BPF_MAP_TYPE_LRU_[PERCPU_]HASH map, use a percpu LRU list\n * which can scale and perform better.\n * Note, the LRU nodes (including free nodes) cannot be moved\n * across different LRU lists.\n */\n#define BPF_F_NO_COMMON_LRU\t(1U << 1)\n/* Specify numa node during map creation */\n#define BPF_F_NUMA_NODE\t\t(1U << 2)\n\n/* flags for BPF_PROG_QUERY */\n#define BPF_F_QUERY_EFFECTIVE\t(1U << 0)\n\n#define BPF_OBJ_NAME_LEN 16U\n\n/* Flags for accessing BPF object */\n#define BPF_F_RDONLY\t\t(1U << 3)\n#define BPF_F_WRONLY\t\t(1U << 4)\n\n/* Flag for stack_map, store build_id+offset instead of pointer */\n#define BPF_F_STACK_BUILD_ID\t(1U << 5)\n\nenum bpf_stack_build_id_status {\n\t/* user space need an empty entry to identify end of a trace */\n\tBPF_STACK_BUILD_ID_EMPTY = 0,\n\t/* with valid build_id and offset */\n\tBPF_STACK_BUILD_ID_VALID = 1,\n\t/* couldn't get build_id, fallback to ip */\n\tBPF_STACK_BUILD_ID_IP = 2,\n};\n\n#define BPF_BUILD_ID_SIZE 20\nstruct bpf_stack_build_id {\n\t__s32\t\tstatus;\n\tunsigned char\tbuild_id[BPF_BUILD_ID_SIZE];\n\tunion {\n\t\t__u64\toffset;\n\t\t__u64\tip;\n\t};\n};\n\nunion bpf_attr {\n\tstruct { /* anonymous struct used by BPF_MAP_CREATE command */\n\t\t__u32\tmap_type;\t/* one of enum bpf_map_type */\n\t\t__u32\tkey_size;\t/* size of key in bytes */\n\t\t__u32\tvalue_size;\t/* size of value in bytes */\n\t\t__u32\tmax_entries;\t/* max number of entries in a map */\n\t\t__u32\tmap_flags;\t/* BPF_MAP_CREATE related\n\t\t\t\t\t * flags defined above.\n\t\t\t\t\t */\n\t\t__u32\tinner_map_fd;\t/* fd pointing to the inner map */\n\t\t__u32\tnuma_node;\t/* numa node (effective only if\n\t\t\t\t\t * BPF_F_NUMA_NODE is set).\n\t\t\t\t\t */\n\t\tchar\tmap_name[BPF_OBJ_NAME_LEN];\n\t\t__u32\tmap_ifindex;\t/* ifindex of netdev to create on */\n\t\t__u32\tbtf_fd;\t\t/* fd pointing to a BTF type data */\n\t\t__u32\tbtf_key_type_id;\t/* BTF type_id of the key */\n\t\t__u32\tbtf_value_type_id;\t/* BTF type_id of the value */\n\t};\n\n\tstruct { /* anonymous struct used by BPF_MAP_*_ELEM commands */\n\t\t__u32\t\tmap_fd;\n\t\t__aligned_u64\tkey;\n\t\tunion {\n\t\t\t__aligned_u64 value;\n\t\t\t__aligned_u64 next_key;\n\t\t};\n\t\t__u64\t\tflags;\n\t};\n\n\tstruct { /* anonymous struct used by BPF_PROG_LOAD command */\n\t\t__u32\t\tprog_type;\t/* one of enum bpf_prog_type */\n\t\t__u32\t\tinsn_cnt;\n\t\t__aligned_u64\tinsns;\n\t\t__aligned_u64\tlicense;\n\t\t__u32\t\tlog_level;\t/* verbosity level of verifier */\n\t\t__u32\t\tlog_size;\t/* size of user buffer */\n\t\t__aligned_u64\tlog_buf;\t/* user supplied buffer */\n\t\t__u32\t\tkern_version;\t/* checked when prog_type=kprobe */\n\t\t__u32\t\tprog_flags;\n\t\tchar\t\tprog_name[BPF_OBJ_NAME_LEN];\n\t\t__u32\t\tprog_ifindex;\t/* ifindex of netdev to prep for */\n\t\t/* For some prog types expected attach type must be known at\n\t\t * load time to verify attach type specific parts of prog\n\t\t * (context accesses, allowed helpers, etc).\n\t\t */\n\t\t__u32\t\texpected_attach_type;\n\t};\n\n\tstruct { /* anonymous struct used by BPF_OBJ_* commands */\n\t\t__aligned_u64\tpathname;\n\t\t__u32\t\tbpf_fd;\n\t\t__u32\t\tfile_flags;\n\t};\n\n\tstruct { /* anonymous struct used by BPF_PROG_ATTACH/DETACH commands */\n\t\t__u32\t\ttarget_fd;\t/* container object to attach to */\n\t\t__u32\t\tattach_bpf_fd;\t/* eBPF program to attach */\n\t\t__u32\t\tattach_type;\n\t\t__u32\t\tattach_flags;\n\t};\n\n\tstruct { /* anonymous struct used by BPF_PROG_TEST_RUN command */\n\t\t__u32\t\tprog_fd;\n\t\t__u32\t\tretval;\n\t\t__u32\t\tdata_size_in;\n\t\t__u32\t\tdata_size_out;\n\t\t__aligned_u64\tdata_in;\n\t\t__aligned_u64\tdata_out;\n\t\t__u32\t\trepeat;\n\t\t__u32\t\tduration;\n\t} test;\n\n\tstruct { /* anonymous struct used by BPF_*_GET_*_ID */\n\t\tunion {\n\t\t\t__u32\t\tstart_id;\n\t\t\t__u32\t\tprog_id;\n\t\t\t__u32\t\tmap_id;\n\t\t\t__u32\t\tbtf_id;\n\t\t};\n\t\t__u32\t\tnext_id;\n\t\t__u32\t\topen_flags;\n\t};\n\n\tstruct { /* anonymous struct used by BPF_OBJ_GET_INFO_BY_FD */\n\t\t__u32\t\tbpf_fd;\n\t\t__u32\t\tinfo_len;\n\t\t__aligned_u64\tinfo;\n\t} info;\n\n\tstruct { /* anonymous struct used by BPF_PROG_QUERY command */\n\t\t__u32\t\ttarget_fd;\t/* container object to query */\n\t\t__u32\t\tattach_type;\n\t\t__u32\t\tquery_flags;\n\t\t__u32\t\tattach_flags;\n\t\t__aligned_u64\tprog_ids;\n\t\t__u32\t\tprog_cnt;\n\t} query;\n\n\tstruct {\n\t\t__u64 name;\n\t\t__u32 prog_fd;\n\t} raw_tracepoint;\n\n\tstruct { /* anonymous struct for BPF_BTF_LOAD */\n\t\t__aligned_u64\tbtf;\n\t\t__aligned_u64\tbtf_log_buf;\n\t\t__u32\t\tbtf_size;\n\t\t__u32\t\tbtf_log_size;\n\t\t__u32\t\tbtf_log_level;\n\t};\n\n\tstruct {\n\t\t__u32\t\tpid;\t\t/* input: pid */\n\t\t__u32\t\tfd;\t\t/* input: fd */\n\t\t__u32\t\tflags;\t\t/* input: flags */\n\t\t__u32\t\tbuf_len;\t/* input/output: buf len */\n\t\t__aligned_u64\tbuf;\t\t/* input/output:\n\t\t\t\t\t\t *   tp_name for tracepoint\n\t\t\t\t\t\t *   symbol for kprobe\n\t\t\t\t\t\t *   filename for uprobe\n\t\t\t\t\t\t */\n\t\t__u32\t\tprog_id;\t/* output: prod_id */\n\t\t__u32\t\tfd_type;\t/* output: BPF_FD_TYPE_* */\n\t\t__u64\t\tprobe_offset;\t/* output: probe_offset */\n\t\t__u64\t\tprobe_addr;\t/* output: probe_addr */\n\t} task_fd_query;\n} __attribute__((aligned(8)));\n\n/* The description below is an attempt at providing documentation to eBPF\n * developers about the multiple available eBPF helper functions. It can be\n * parsed and used to produce a manual page. The workflow is the following,\n * and requires the rst2man utility:\n *\n *     $ ./scripts/bpf_helpers_doc.py \\\n *             --filename include/uapi/linux/bpf.h > /tmp/bpf-helpers.rst\n *     $ rst2man /tmp/bpf-helpers.rst > /tmp/bpf-helpers.7\n *     $ man /tmp/bpf-helpers.7\n *\n * Note that in order to produce this external documentation, some RST\n * formatting is used in the descriptions to get \"bold\" and \"italics\" in\n * manual pages. Also note that the few trailing white spaces are\n * intentional, removing them would break paragraphs for rst2man.\n *\n * Start of BPF helper function descriptions:\n *\n * void *bpf_map_lookup_elem(struct bpf_map *map, const void *key)\n * \tDescription\n * \t\tPerform a lookup in *map* for an entry associated to *key*.\n * \tReturn\n * \t\tMap value associated to *key*, or **NULL** if no entry was\n * \t\tfound.\n *\n * int bpf_map_update_elem(struct bpf_map *map, const void *key, const void *value, u64 flags)\n * \tDescription\n * \t\tAdd or update the value of the entry associated to *key* in\n * \t\t*map* with *value*. *flags* is one of:\n *\n * \t\t**BPF_NOEXIST**\n * \t\t\tThe entry for *key* must not exist in the map.\n * \t\t**BPF_EXIST**\n * \t\t\tThe entry for *key* must already exist in the map.\n * \t\t**BPF_ANY**\n * \t\t\tNo condition on the existence of the entry for *key*.\n *\n * \t\tFlag value **BPF_NOEXIST** cannot be used for maps of types\n * \t\t**BPF_MAP_TYPE_ARRAY** or **BPF_MAP_TYPE_PERCPU_ARRAY**  (all\n * \t\telements always exist), the helper would return an error.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_map_delete_elem(struct bpf_map *map, const void *key)\n * \tDescription\n * \t\tDelete entry with *key* from *map*.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_probe_read(void *dst, u32 size, const void *src)\n * \tDescription\n * \t\tFor tracing programs, safely attempt to read *size* bytes from\n * \t\taddress *src* and store the data in *dst*.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * u64 bpf_ktime_get_ns(void)\n * \tDescription\n * \t\tReturn the time elapsed since system boot, in nanoseconds.\n * \tReturn\n * \t\tCurrent *ktime*.\n *\n * int bpf_trace_printk(const char *fmt, u32 fmt_size, ...)\n * \tDescription\n * \t\tThis helper is a \"printk()-like\" facility for debugging. It\n * \t\tprints a message defined by format *fmt* (of size *fmt_size*)\n * \t\tto file *\\/sys/kernel/debug/tracing/trace* from DebugFS, if\n * \t\tavailable. It can take up to three additional **u64**\n * \t\targuments (as an eBPF helpers, the total number of arguments is\n * \t\tlimited to five).\n *\n * \t\tEach time the helper is called, it appends a line to the trace.\n * \t\tThe format of the trace is customizable, and the exact output\n * \t\tone will get depends on the options set in\n * \t\t*\\/sys/kernel/debug/tracing/trace_options* (see also the\n * \t\t*README* file under the same directory). However, it usually\n * \t\tdefaults to something like:\n *\n * \t\t::\n *\n * \t\t\ttelnet-470   [001] .N.. 419421.045894: 0x00000001: <formatted msg>\n *\n * \t\tIn the above:\n *\n * \t\t\t* ``telnet`` is the name of the current task.\n * \t\t\t* ``470`` is the PID of the current task.\n * \t\t\t* ``001`` is the CPU number on which the task is\n * \t\t\t  running.\n * \t\t\t* In ``.N..``, each character refers to a set of\n * \t\t\t  options (whether irqs are enabled, scheduling\n * \t\t\t  options, whether hard/softirqs are running, level of\n * \t\t\t  preempt_disabled respectively). **N** means that\n * \t\t\t  **TIF_NEED_RESCHED** and **PREEMPT_NEED_RESCHED**\n * \t\t\t  are set.\n * \t\t\t* ``419421.045894`` is a timestamp.\n * \t\t\t* ``0x00000001`` is a fake value used by BPF for the\n * \t\t\t  instruction pointer register.\n * \t\t\t* ``<formatted msg>`` is the message formatted with\n * \t\t\t  *fmt*.\n *\n * \t\tThe conversion specifiers supported by *fmt* are similar, but\n * \t\tmore limited than for printk(). They are **%d**, **%i**,\n * \t\t**%u**, **%x**, **%ld**, **%li**, **%lu**, **%lx**, **%lld**,\n * \t\t**%lli**, **%llu**, **%llx**, **%p**, **%s**. No modifier (size\n * \t\tof field, padding with zeroes, etc.) is available, and the\n * \t\thelper will return **-EINVAL** (but print nothing) if it\n * \t\tencounters an unknown specifier.\n *\n * \t\tAlso, note that **bpf_trace_printk**\\ () is slow, and should\n * \t\tonly be used for debugging purposes. For this reason, a notice\n * \t\tbloc (spanning several lines) is printed to kernel logs and\n * \t\tstates that the helper should not be used \"for production use\"\n * \t\tthe first time this helper is used (or more precisely, when\n * \t\t**trace_printk**\\ () buffers are allocated). For passing values\n * \t\tto user space, perf events should be preferred.\n * \tReturn\n * \t\tThe number of bytes written to the buffer, or a negative error\n * \t\tin case of failure.\n *\n * u32 bpf_get_prandom_u32(void)\n * \tDescription\n * \t\tGet a pseudo-random number.\n *\n * \t\tFrom a security point of view, this helper uses its own\n * \t\tpseudo-random internal state, and cannot be used to infer the\n * \t\tseed of other random functions in the kernel. However, it is\n * \t\tessential to note that the generator used by the helper is not\n * \t\tcryptographically secure.\n * \tReturn\n * \t\tA random 32-bit unsigned value.\n *\n * u32 bpf_get_smp_processor_id(void)\n * \tDescription\n * \t\tGet the SMP (symmetric multiprocessing) processor id. Note that\n * \t\tall programs run with preemption disabled, which means that the\n * \t\tSMP processor id is stable during all the execution of the\n * \t\tprogram.\n * \tReturn\n * \t\tThe SMP id of the processor running the program.\n *\n * int bpf_skb_store_bytes(struct sk_buff *skb, u32 offset, const void *from, u32 len, u64 flags)\n * \tDescription\n * \t\tStore *len* bytes from address *from* into the packet\n * \t\tassociated to *skb*, at *offset*. *flags* are a combination of\n * \t\t**BPF_F_RECOMPUTE_CSUM** (automatically recompute the\n * \t\tchecksum for the packet after storing the bytes) and\n * \t\t**BPF_F_INVALIDATE_HASH** (set *skb*\\ **->hash**, *skb*\\\n * \t\t**->swhash** and *skb*\\ **->l4hash** to 0).\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_l3_csum_replace(struct sk_buff *skb, u32 offset, u64 from, u64 to, u64 size)\n * \tDescription\n * \t\tRecompute the layer 3 (e.g. IP) checksum for the packet\n * \t\tassociated to *skb*. Computation is incremental, so the helper\n * \t\tmust know the former value of the header field that was\n * \t\tmodified (*from*), the new value of this field (*to*), and the\n * \t\tnumber of bytes (2 or 4) for this field, stored in *size*.\n * \t\tAlternatively, it is possible to store the difference between\n * \t\tthe previous and the new values of the header field in *to*, by\n * \t\tsetting *from* and *size* to 0. For both methods, *offset*\n * \t\tindicates the location of the IP checksum within the packet.\n *\n * \t\tThis helper works in combination with **bpf_csum_diff**\\ (),\n * \t\twhich does not update the checksum in-place, but offers more\n * \t\tflexibility and can handle sizes larger than 2 or 4 for the\n * \t\tchecksum to update.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_l4_csum_replace(struct sk_buff *skb, u32 offset, u64 from, u64 to, u64 flags)\n * \tDescription\n * \t\tRecompute the layer 4 (e.g. TCP, UDP or ICMP) checksum for the\n * \t\tpacket associated to *skb*. Computation is incremental, so the\n * \t\thelper must know the former value of the header field that was\n * \t\tmodified (*from*), the new value of this field (*to*), and the\n * \t\tnumber of bytes (2 or 4) for this field, stored on the lowest\n * \t\tfour bits of *flags*. Alternatively, it is possible to store\n * \t\tthe difference between the previous and the new values of the\n * \t\theader field in *to*, by setting *from* and the four lowest\n * \t\tbits of *flags* to 0. For both methods, *offset* indicates the\n * \t\tlocation of the IP checksum within the packet. In addition to\n * \t\tthe size of the field, *flags* can be added (bitwise OR) actual\n * \t\tflags. With **BPF_F_MARK_MANGLED_0**, a null checksum is left\n * \t\tuntouched (unless **BPF_F_MARK_ENFORCE** is added as well), and\n * \t\tfor updates resulting in a null checksum the value is set to\n * \t\t**CSUM_MANGLED_0** instead. Flag **BPF_F_PSEUDO_HDR** indicates\n * \t\tthe checksum is to be computed against a pseudo-header.\n *\n * \t\tThis helper works in combination with **bpf_csum_diff**\\ (),\n * \t\twhich does not update the checksum in-place, but offers more\n * \t\tflexibility and can handle sizes larger than 2 or 4 for the\n * \t\tchecksum to update.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_tail_call(void *ctx, struct bpf_map *prog_array_map, u32 index)\n * \tDescription\n * \t\tThis special helper is used to trigger a \"tail call\", or in\n * \t\tother words, to jump into another eBPF program. The same stack\n * \t\tframe is used (but values on stack and in registers for the\n * \t\tcaller are not accessible to the callee). This mechanism allows\n * \t\tfor program chaining, either for raising the maximum number of\n * \t\tavailable eBPF instructions, or to execute given programs in\n * \t\tconditional blocks. For security reasons, there is an upper\n * \t\tlimit to the number of successive tail calls that can be\n * \t\tperformed.\n *\n * \t\tUpon call of this helper, the program attempts to jump into a\n * \t\tprogram referenced at index *index* in *prog_array_map*, a\n * \t\tspecial map of type **BPF_MAP_TYPE_PROG_ARRAY**, and passes\n * \t\t*ctx*, a pointer to the context.\n *\n * \t\tIf the call succeeds, the kernel immediately runs the first\n * \t\tinstruction of the new program. This is not a function call,\n * \t\tand it never returns to the previous program. If the call\n * \t\tfails, then the helper has no effect, and the caller continues\n * \t\tto run its subsequent instructions. A call can fail if the\n * \t\tdestination program for the jump does not exist (i.e. *index*\n * \t\tis superior to the number of entries in *prog_array_map*), or\n * \t\tif the maximum number of tail calls has been reached for this\n * \t\tchain of programs. This limit is defined in the kernel by the\n * \t\tmacro **MAX_TAIL_CALL_CNT** (not accessible to user space),\n * \t\twhich is currently set to 32.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_clone_redirect(struct sk_buff *skb, u32 ifindex, u64 flags)\n * \tDescription\n * \t\tClone and redirect the packet associated to *skb* to another\n * \t\tnet device of index *ifindex*. Both ingress and egress\n * \t\tinterfaces can be used for redirection. The **BPF_F_INGRESS**\n * \t\tvalue in *flags* is used to make the distinction (ingress path\n * \t\tis selected if the flag is present, egress path otherwise).\n * \t\tThis is the only flag supported for now.\n *\n * \t\tIn comparison with **bpf_redirect**\\ () helper,\n * \t\t**bpf_clone_redirect**\\ () has the associated cost of\n * \t\tduplicating the packet buffer, but this can be executed out of\n * \t\tthe eBPF program. Conversely, **bpf_redirect**\\ () is more\n * \t\tefficient, but it is handled through an action code where the\n * \t\tredirection happens only after the eBPF program has returned.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * u64 bpf_get_current_pid_tgid(void)\n * \tReturn\n * \t\tA 64-bit integer containing the current tgid and pid, and\n * \t\tcreated as such:\n * \t\t*current_task*\\ **->tgid << 32 \\|**\n * \t\t*current_task*\\ **->pid**.\n *\n * u64 bpf_get_current_uid_gid(void)\n * \tReturn\n * \t\tA 64-bit integer containing the current GID and UID, and\n * \t\tcreated as such: *current_gid* **<< 32 \\|** *current_uid*.\n *\n * int bpf_get_current_comm(char *buf, u32 size_of_buf)\n * \tDescription\n * \t\tCopy the **comm** attribute of the current task into *buf* of\n * \t\t*size_of_buf*. The **comm** attribute contains the name of\n * \t\tthe executable (excluding the path) for the current task. The\n * \t\t*size_of_buf* must be strictly positive. On success, the\n * \t\thelper makes sure that the *buf* is NUL-terminated. On failure,\n * \t\tit is filled with zeroes.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * u32 bpf_get_cgroup_classid(struct sk_buff *skb)\n * \tDescription\n * \t\tRetrieve the classid for the current task, i.e. for the net_cls\n * \t\tcgroup to which *skb* belongs.\n *\n * \t\tThis helper can be used on TC egress path, but not on ingress.\n *\n * \t\tThe net_cls cgroup provides an interface to tag network packets\n * \t\tbased on a user-provided identifier for all traffic coming from\n * \t\tthe tasks belonging to the related cgroup. See also the related\n * \t\tkernel documentation, available from the Linux sources in file\n * \t\t*Documentation/cgroup-v1/net_cls.txt*.\n *\n * \t\tThe Linux kernel has two versions for cgroups: there are\n * \t\tcgroups v1 and cgroups v2. Both are available to users, who can\n * \t\tuse a mixture of them, but note that the net_cls cgroup is for\n * \t\tcgroup v1 only. This makes it incompatible with BPF programs\n * \t\trun on cgroups, which is a cgroup-v2-only feature (a socket can\n * \t\tonly hold data for one version of cgroups at a time).\n *\n * \t\tThis helper is only available is the kernel was compiled with\n * \t\tthe **CONFIG_CGROUP_NET_CLASSID** configuration option set to\n * \t\t\"**y**\" or to \"**m**\".\n * \tReturn\n * \t\tThe classid, or 0 for the default unconfigured classid.\n *\n * int bpf_skb_vlan_push(struct sk_buff *skb, __be16 vlan_proto, u16 vlan_tci)\n * \tDescription\n * \t\tPush a *vlan_tci* (VLAN tag control information) of protocol\n * \t\t*vlan_proto* to the packet associated to *skb*, then update\n * \t\tthe checksum. Note that if *vlan_proto* is different from\n * \t\t**ETH_P_8021Q** and **ETH_P_8021AD**, it is considered to\n * \t\tbe **ETH_P_8021Q**.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_skb_vlan_pop(struct sk_buff *skb)\n * \tDescription\n * \t\tPop a VLAN header from the packet associated to *skb*.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_skb_get_tunnel_key(struct sk_buff *skb, struct bpf_tunnel_key *key, u32 size, u64 flags)\n * \tDescription\n * \t\tGet tunnel metadata. This helper takes a pointer *key* to an\n * \t\tempty **struct bpf_tunnel_key** of **size**, that will be\n * \t\tfilled with tunnel metadata for the packet associated to *skb*.\n * \t\tThe *flags* can be set to **BPF_F_TUNINFO_IPV6**, which\n * \t\tindicates that the tunnel is based on IPv6 protocol instead of\n * \t\tIPv4.\n *\n * \t\tThe **struct bpf_tunnel_key** is an object that generalizes the\n * \t\tprincipal parameters used by various tunneling protocols into a\n * \t\tsingle struct. This way, it can be used to easily make a\n * \t\tdecision based on the contents of the encapsulation header,\n * \t\t\"summarized\" in this struct. In particular, it holds the IP\n * \t\taddress of the remote end (IPv4 or IPv6, depending on the case)\n * \t\tin *key*\\ **->remote_ipv4** or *key*\\ **->remote_ipv6**. Also,\n * \t\tthis struct exposes the *key*\\ **->tunnel_id**, which is\n * \t\tgenerally mapped to a VNI (Virtual Network Identifier), making\n * \t\tit programmable together with the **bpf_skb_set_tunnel_key**\\\n * \t\t() helper.\n *\n * \t\tLet's imagine that the following code is part of a program\n * \t\tattached to the TC ingress interface, on one end of a GRE\n * \t\ttunnel, and is supposed to filter out all messages coming from\n * \t\tremote ends with IPv4 address other than 10.0.0.1:\n *\n * \t\t::\n *\n * \t\t\tint ret;\n * \t\t\tstruct bpf_tunnel_key key = {};\n * \t\t\t\n * \t\t\tret = bpf_skb_get_tunnel_key(skb, &key, sizeof(key), 0);\n * \t\t\tif (ret < 0)\n * \t\t\t\treturn TC_ACT_SHOT;\t// drop packet\n * \t\t\t\n * \t\t\tif (key.remote_ipv4 != 0x0a000001)\n * \t\t\t\treturn TC_ACT_SHOT;\t// drop packet\n * \t\t\t\n * \t\t\treturn TC_ACT_OK;\t\t// accept packet\n *\n * \t\tThis interface can also be used with all encapsulation devices\n * \t\tthat can operate in \"collect metadata\" mode: instead of having\n * \t\tone network device per specific configuration, the \"collect\n * \t\tmetadata\" mode only requires a single device where the\n * \t\tconfiguration can be extracted from this helper.\n *\n * \t\tThis can be used together with various tunnels such as VXLan,\n * \t\tGeneve, GRE or IP in IP (IPIP).\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_skb_set_tunnel_key(struct sk_buff *skb, struct bpf_tunnel_key *key, u32 size, u64 flags)\n * \tDescription\n * \t\tPopulate tunnel metadata for packet associated to *skb.* The\n * \t\ttunnel metadata is set to the contents of *key*, of *size*. The\n * \t\t*flags* can be set to a combination of the following values:\n *\n * \t\t**BPF_F_TUNINFO_IPV6**\n * \t\t\tIndicate that the tunnel is based on IPv6 protocol\n * \t\t\tinstead of IPv4.\n * \t\t**BPF_F_ZERO_CSUM_TX**\n * \t\t\tFor IPv4 packets, add a flag to tunnel metadata\n * \t\t\tindicating that checksum computation should be skipped\n * \t\t\tand checksum set to zeroes.\n * \t\t**BPF_F_DONT_FRAGMENT**\n * \t\t\tAdd a flag to tunnel metadata indicating that the\n * \t\t\tpacket should not be fragmented.\n * \t\t**BPF_F_SEQ_NUMBER**\n * \t\t\tAdd a flag to tunnel metadata indicating that a\n * \t\t\tsequence number should be added to tunnel header before\n * \t\t\tsending the packet. This flag was added for GRE\n * \t\t\tencapsulation, but might be used with other protocols\n * \t\t\tas well in the future.\n *\n * \t\tHere is a typical usage on the transmit path:\n *\n * \t\t::\n *\n * \t\t\tstruct bpf_tunnel_key key;\n * \t\t\t     populate key ...\n * \t\t\tbpf_skb_set_tunnel_key(skb, &key, sizeof(key), 0);\n * \t\t\tbpf_clone_redirect(skb, vxlan_dev_ifindex, 0);\n *\n * \t\tSee also the description of the **bpf_skb_get_tunnel_key**\\ ()\n * \t\thelper for additional information.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * u64 bpf_perf_event_read(struct bpf_map *map, u64 flags)\n * \tDescription\n * \t\tRead the value of a perf event counter. This helper relies on a\n * \t\t*map* of type **BPF_MAP_TYPE_PERF_EVENT_ARRAY**. The nature of\n * \t\tthe perf event counter is selected when *map* is updated with\n * \t\tperf event file descriptors. The *map* is an array whose size\n * \t\tis the number of available CPUs, and each cell contains a value\n * \t\trelative to one CPU. The value to retrieve is indicated by\n * \t\t*flags*, that contains the index of the CPU to look up, masked\n * \t\twith **BPF_F_INDEX_MASK**. Alternatively, *flags* can be set to\n * \t\t**BPF_F_CURRENT_CPU** to indicate that the value for the\n * \t\tcurrent CPU should be retrieved.\n *\n * \t\tNote that before Linux 4.13, only hardware perf event can be\n * \t\tretrieved.\n *\n * \t\tAlso, be aware that the newer helper\n * \t\t**bpf_perf_event_read_value**\\ () is recommended over\n * \t\t**bpf_perf_event_read**\\ () in general. The latter has some ABI\n * \t\tquirks where error and counter value are used as a return code\n * \t\t(which is wrong to do since ranges may overlap). This issue is\n * \t\tfixed with **bpf_perf_event_read_value**\\ (), which at the same\n * \t\ttime provides more features over the **bpf_perf_event_read**\\\n * \t\t() interface. Please refer to the description of\n * \t\t**bpf_perf_event_read_value**\\ () for details.\n * \tReturn\n * \t\tThe value of the perf event counter read from the map, or a\n * \t\tnegative error code in case of failure.\n *\n * int bpf_redirect(u32 ifindex, u64 flags)\n * \tDescription\n * \t\tRedirect the packet to another net device of index *ifindex*.\n * \t\tThis helper is somewhat similar to **bpf_clone_redirect**\\\n * \t\t(), except that the packet is not cloned, which provides\n * \t\tincreased performance.\n *\n * \t\tExcept for XDP, both ingress and egress interfaces can be used\n * \t\tfor redirection. The **BPF_F_INGRESS** value in *flags* is used\n * \t\tto make the distinction (ingress path is selected if the flag\n * \t\tis present, egress path otherwise). Currently, XDP only\n * \t\tsupports redirection to the egress interface, and accepts no\n * \t\tflag at all.\n *\n * \t\tThe same effect can be attained with the more generic\n * \t\t**bpf_redirect_map**\\ (), which requires specific maps to be\n * \t\tused but offers better performance.\n * \tReturn\n * \t\tFor XDP, the helper returns **XDP_REDIRECT** on success or\n * \t\t**XDP_ABORTED** on error. For other program types, the values\n * \t\tare **TC_ACT_REDIRECT** on success or **TC_ACT_SHOT** on\n * \t\terror.\n *\n * u32 bpf_get_route_realm(struct sk_buff *skb)\n * \tDescription\n * \t\tRetrieve the realm or the route, that is to say the\n * \t\t**tclassid** field of the destination for the *skb*. The\n * \t\tindentifier retrieved is a user-provided tag, similar to the\n * \t\tone used with the net_cls cgroup (see description for\n * \t\t**bpf_get_cgroup_classid**\\ () helper), but here this tag is\n * \t\theld by a route (a destination entry), not by a task.\n *\n * \t\tRetrieving this identifier works with the clsact TC egress hook\n * \t\t(see also **tc-bpf(8)**), or alternatively on conventional\n * \t\tclassful egress qdiscs, but not on TC ingress path. In case of\n * \t\tclsact TC egress hook, this has the advantage that, internally,\n * \t\tthe destination entry has not been dropped yet in the transmit\n * \t\tpath. Therefore, the destination entry does not need to be\n * \t\tartificially held via **netif_keep_dst**\\ () for a classful\n * \t\tqdisc until the *skb* is freed.\n *\n * \t\tThis helper is available only if the kernel was compiled with\n * \t\t**CONFIG_IP_ROUTE_CLASSID** configuration option.\n * \tReturn\n * \t\tThe realm of the route for the packet associated to *skb*, or 0\n * \t\tif none was found.\n *\n * int bpf_perf_event_output(struct pt_reg *ctx, struct bpf_map *map, u64 flags, void *data, u64 size)\n * \tDescription\n * \t\tWrite raw *data* blob into a special BPF perf event held by\n * \t\t*map* of type **BPF_MAP_TYPE_PERF_EVENT_ARRAY**. This perf\n * \t\tevent must have the following attributes: **PERF_SAMPLE_RAW**\n * \t\tas **sample_type**, **PERF_TYPE_SOFTWARE** as **type**, and\n * \t\t**PERF_COUNT_SW_BPF_OUTPUT** as **config**.\n *\n * \t\tThe *flags* are used to indicate the index in *map* for which\n * \t\tthe value must be put, masked with **BPF_F_INDEX_MASK**.\n * \t\tAlternatively, *flags* can be set to **BPF_F_CURRENT_CPU**\n * \t\tto indicate that the index of the current CPU core should be\n * \t\tused.\n *\n * \t\tThe value to write, of *size*, is passed through eBPF stack and\n * \t\tpointed by *data*.\n *\n * \t\tThe context of the program *ctx* needs also be passed to the\n * \t\thelper.\n *\n * \t\tOn user space, a program willing to read the values needs to\n * \t\tcall **perf_event_open**\\ () on the perf event (either for\n * \t\tone or for all CPUs) and to store the file descriptor into the\n * \t\t*map*. This must be done before the eBPF program can send data\n * \t\tinto it. An example is available in file\n * \t\t*samples/bpf/trace_output_user.c* in the Linux kernel source\n * \t\ttree (the eBPF program counterpart is in\n * \t\t*samples/bpf/trace_output_kern.c*).\n *\n * \t\t**bpf_perf_event_output**\\ () achieves better performance\n * \t\tthan **bpf_trace_printk**\\ () for sharing data with user\n * \t\tspace, and is much better suitable for streaming data from eBPF\n * \t\tprograms.\n *\n * \t\tNote that this helper is not restricted to tracing use cases\n * \t\tand can be used with programs attached to TC or XDP as well,\n * \t\twhere it allows for passing data to user space listeners. Data\n * \t\tcan be:\n *\n * \t\t* Only custom structs,\n * \t\t* Only the packet payload, or\n * \t\t* A combination of both.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_skb_load_bytes(const struct sk_buff *skb, u32 offset, void *to, u32 len)\n * \tDescription\n * \t\tThis helper was provided as an easy way to load data from a\n * \t\tpacket. It can be used to load *len* bytes from *offset* from\n * \t\tthe packet associated to *skb*, into the buffer pointed by\n * \t\t*to*.\n *\n * \t\tSince Linux 4.7, usage of this helper has mostly been replaced\n * \t\tby \"direct packet access\", enabling packet data to be\n * \t\tmanipulated with *skb*\\ **->data** and *skb*\\ **->data_end**\n * \t\tpointing respectively to the first byte of packet data and to\n * \t\tthe byte after the last byte of packet data. However, it\n * \t\tremains useful if one wishes to read large quantities of data\n * \t\tat once from a packet into the eBPF stack.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_get_stackid(struct pt_reg *ctx, struct bpf_map *map, u64 flags)\n * \tDescription\n * \t\tWalk a user or a kernel stack and return its id. To achieve\n * \t\tthis, the helper needs *ctx*, which is a pointer to the context\n * \t\ton which the tracing program is executed, and a pointer to a\n * \t\t*map* of type **BPF_MAP_TYPE_STACK_TRACE**.\n *\n * \t\tThe last argument, *flags*, holds the number of stack frames to\n * \t\tskip (from 0 to 255), masked with\n * \t\t**BPF_F_SKIP_FIELD_MASK**. The next bits can be used to set\n * \t\ta combination of the following flags:\n *\n * \t\t**BPF_F_USER_STACK**\n * \t\t\tCollect a user space stack instead of a kernel stack.\n * \t\t**BPF_F_FAST_STACK_CMP**\n * \t\t\tCompare stacks by hash only.\n * \t\t**BPF_F_REUSE_STACKID**\n * \t\t\tIf two different stacks hash into the same *stackid*,\n * \t\t\tdiscard the old one.\n *\n * \t\tThe stack id retrieved is a 32 bit long integer handle which\n * \t\tcan be further combined with other data (including other stack\n * \t\tids) and used as a key into maps. This can be useful for\n * \t\tgenerating a variety of graphs (such as flame graphs or off-cpu\n * \t\tgraphs).\n *\n * \t\tFor walking a stack, this helper is an improvement over\n * \t\t**bpf_probe_read**\\ (), which can be used with unrolled loops\n * \t\tbut is not efficient and consumes a lot of eBPF instructions.\n * \t\tInstead, **bpf_get_stackid**\\ () can collect up to\n * \t\t**PERF_MAX_STACK_DEPTH** both kernel and user frames. Note that\n * \t\tthis limit can be controlled with the **sysctl** program, and\n * \t\tthat it should be manually increased in order to profile long\n * \t\tuser stacks (such as stacks for Java programs). To do so, use:\n *\n * \t\t::\n *\n * \t\t\t# sysctl kernel.perf_event_max_stack=<new value>\n * \tReturn\n * \t\tThe positive or null stack id on success, or a negative error\n * \t\tin case of failure.\n *\n * s64 bpf_csum_diff(__be32 *from, u32 from_size, __be32 *to, u32 to_size, __wsum seed)\n * \tDescription\n * \t\tCompute a checksum difference, from the raw buffer pointed by\n * \t\t*from*, of length *from_size* (that must be a multiple of 4),\n * \t\ttowards the raw buffer pointed by *to*, of size *to_size*\n * \t\t(same remark). An optional *seed* can be added to the value\n * \t\t(this can be cascaded, the seed may come from a previous call\n * \t\tto the helper).\n *\n * \t\tThis is flexible enough to be used in several ways:\n *\n * \t\t* With *from_size* == 0, *to_size* > 0 and *seed* set to\n * \t\t  checksum, it can be used when pushing new data.\n * \t\t* With *from_size* > 0, *to_size* == 0 and *seed* set to\n * \t\t  checksum, it can be used when removing data from a packet.\n * \t\t* With *from_size* > 0, *to_size* > 0 and *seed* set to 0, it\n * \t\t  can be used to compute a diff. Note that *from_size* and\n * \t\t  *to_size* do not need to be equal.\n *\n * \t\tThis helper can be used in combination with\n * \t\t**bpf_l3_csum_replace**\\ () and **bpf_l4_csum_replace**\\ (), to\n * \t\twhich one can feed in the difference computed with\n * \t\t**bpf_csum_diff**\\ ().\n * \tReturn\n * \t\tThe checksum result, or a negative error code in case of\n * \t\tfailure.\n *\n * int bpf_skb_get_tunnel_opt(struct sk_buff *skb, u8 *opt, u32 size)\n * \tDescription\n * \t\tRetrieve tunnel options metadata for the packet associated to\n * \t\t*skb*, and store the raw tunnel option data to the buffer *opt*\n * \t\tof *size*.\n *\n * \t\tThis helper can be used with encapsulation devices that can\n * \t\toperate in \"collect metadata\" mode (please refer to the related\n * \t\tnote in the description of **bpf_skb_get_tunnel_key**\\ () for\n * \t\tmore details). A particular example where this can be used is\n * \t\tin combination with the Geneve encapsulation protocol, where it\n * \t\tallows for pushing (with **bpf_skb_get_tunnel_opt**\\ () helper)\n * \t\tand retrieving arbitrary TLVs (Type-Length-Value headers) from\n * \t\tthe eBPF program. This allows for full customization of these\n * \t\theaders.\n * \tReturn\n * \t\tThe size of the option data retrieved.\n *\n * int bpf_skb_set_tunnel_opt(struct sk_buff *skb, u8 *opt, u32 size)\n * \tDescription\n * \t\tSet tunnel options metadata for the packet associated to *skb*\n * \t\tto the option data contained in the raw buffer *opt* of *size*.\n *\n * \t\tSee also the description of the **bpf_skb_get_tunnel_opt**\\ ()\n * \t\thelper for additional information.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_skb_change_proto(struct sk_buff *skb, __be16 proto, u64 flags)\n * \tDescription\n * \t\tChange the protocol of the *skb* to *proto*. Currently\n * \t\tsupported are transition from IPv4 to IPv6, and from IPv6 to\n * \t\tIPv4. The helper takes care of the groundwork for the\n * \t\ttransition, including resizing the socket buffer. The eBPF\n * \t\tprogram is expected to fill the new headers, if any, via\n * \t\t**skb_store_bytes**\\ () and to recompute the checksums with\n * \t\t**bpf_l3_csum_replace**\\ () and **bpf_l4_csum_replace**\\\n * \t\t(). The main case for this helper is to perform NAT64\n * \t\toperations out of an eBPF program.\n *\n * \t\tInternally, the GSO type is marked as dodgy so that headers are\n * \t\tchecked and segments are recalculated by the GSO/GRO engine.\n * \t\tThe size for GSO target is adapted as well.\n *\n * \t\tAll values for *flags* are reserved for future usage, and must\n * \t\tbe left at zero.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_skb_change_type(struct sk_buff *skb, u32 type)\n * \tDescription\n * \t\tChange the packet type for the packet associated to *skb*. This\n * \t\tcomes down to setting *skb*\\ **->pkt_type** to *type*, except\n * \t\tthe eBPF program does not have a write access to *skb*\\\n * \t\t**->pkt_type** beside this helper. Using a helper here allows\n * \t\tfor graceful handling of errors.\n *\n * \t\tThe major use case is to change incoming *skb*s to\n * \t\t**PACKET_HOST** in a programmatic way instead of having to\n * \t\trecirculate via **redirect**\\ (..., **BPF_F_INGRESS**), for\n * \t\texample.\n *\n * \t\tNote that *type* only allows certain values. At this time, they\n * \t\tare:\n *\n * \t\t**PACKET_HOST**\n * \t\t\tPacket is for us.\n * \t\t**PACKET_BROADCAST**\n * \t\t\tSend packet to all.\n * \t\t**PACKET_MULTICAST**\n * \t\t\tSend packet to group.\n * \t\t**PACKET_OTHERHOST**\n * \t\t\tSend packet to someone else.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_skb_under_cgroup(struct sk_buff *skb, struct bpf_map *map, u32 index)\n * \tDescription\n * \t\tCheck whether *skb* is a descendant of the cgroup2 held by\n * \t\t*map* of type **BPF_MAP_TYPE_CGROUP_ARRAY**, at *index*.\n * \tReturn\n * \t\tThe return value depends on the result of the test, and can be:\n *\n * \t\t* 0, if the *skb* failed the cgroup2 descendant test.\n * \t\t* 1, if the *skb* succeeded the cgroup2 descendant test.\n * \t\t* A negative error code, if an error occurred.\n *\n * u32 bpf_get_hash_recalc(struct sk_buff *skb)\n * \tDescription\n * \t\tRetrieve the hash of the packet, *skb*\\ **->hash**. If it is\n * \t\tnot set, in particular if the hash was cleared due to mangling,\n * \t\trecompute this hash. Later accesses to the hash can be done\n * \t\tdirectly with *skb*\\ **->hash**.\n *\n * \t\tCalling **bpf_set_hash_invalid**\\ (), changing a packet\n * \t\tprototype with **bpf_skb_change_proto**\\ (), or calling\n * \t\t**bpf_skb_store_bytes**\\ () with the\n * \t\t**BPF_F_INVALIDATE_HASH** are actions susceptible to clear\n * \t\tthe hash and to trigger a new computation for the next call to\n * \t\t**bpf_get_hash_recalc**\\ ().\n * \tReturn\n * \t\tThe 32-bit hash.\n *\n * u64 bpf_get_current_task(void)\n * \tReturn\n * \t\tA pointer to the current task struct.\n *\n * int bpf_probe_write_user(void *dst, const void *src, u32 len)\n * \tDescription\n * \t\tAttempt in a safe way to write *len* bytes from the buffer\n * \t\t*src* to *dst* in memory. It only works for threads that are in\n * \t\tuser context, and *dst* must be a valid user space address.\n *\n * \t\tThis helper should not be used to implement any kind of\n * \t\tsecurity mechanism because of TOC-TOU attacks, but rather to\n * \t\tdebug, divert, and manipulate execution of semi-cooperative\n * \t\tprocesses.\n *\n * \t\tKeep in mind that this feature is meant for experiments, and it\n * \t\thas a risk of crashing the system and running programs.\n * \t\tTherefore, when an eBPF program using this helper is attached,\n * \t\ta warning including PID and process name is printed to kernel\n * \t\tlogs.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_current_task_under_cgroup(struct bpf_map *map, u32 index)\n * \tDescription\n * \t\tCheck whether the probe is being run is the context of a given\n * \t\tsubset of the cgroup2 hierarchy. The cgroup2 to test is held by\n * \t\t*map* of type **BPF_MAP_TYPE_CGROUP_ARRAY**, at *index*.\n * \tReturn\n * \t\tThe return value depends on the result of the test, and can be:\n *\n * \t\t* 0, if the *skb* task belongs to the cgroup2.\n * \t\t* 1, if the *skb* task does not belong to the cgroup2.\n * \t\t* A negative error code, if an error occurred.\n *\n * int bpf_skb_change_tail(struct sk_buff *skb, u32 len, u64 flags)\n * \tDescription\n * \t\tResize (trim or grow) the packet associated to *skb* to the\n * \t\tnew *len*. The *flags* are reserved for future usage, and must\n * \t\tbe left at zero.\n *\n * \t\tThe basic idea is that the helper performs the needed work to\n * \t\tchange the size of the packet, then the eBPF program rewrites\n * \t\tthe rest via helpers like **bpf_skb_store_bytes**\\ (),\n * \t\t**bpf_l3_csum_replace**\\ (), **bpf_l3_csum_replace**\\ ()\n * \t\tand others. This helper is a slow path utility intended for\n * \t\treplies with control messages. And because it is targeted for\n * \t\tslow path, the helper itself can afford to be slow: it\n * \t\timplicitly linearizes, unclones and drops offloads from the\n * \t\t*skb*.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_skb_pull_data(struct sk_buff *skb, u32 len)\n * \tDescription\n * \t\tPull in non-linear data in case the *skb* is non-linear and not\n * \t\tall of *len* are part of the linear section. Make *len* bytes\n * \t\tfrom *skb* readable and writable. If a zero value is passed for\n * \t\t*len*, then the whole length of the *skb* is pulled.\n *\n * \t\tThis helper is only needed for reading and writing with direct\n * \t\tpacket access.\n *\n * \t\tFor direct packet access, testing that offsets to access\n * \t\tare within packet boundaries (test on *skb*\\ **->data_end**) is\n * \t\tsusceptible to fail if offsets are invalid, or if the requested\n * \t\tdata is in non-linear parts of the *skb*. On failure the\n * \t\tprogram can just bail out, or in the case of a non-linear\n * \t\tbuffer, use a helper to make the data available. The\n * \t\t**bpf_skb_load_bytes**\\ () helper is a first solution to access\n * \t\tthe data. Another one consists in using **bpf_skb_pull_data**\n * \t\tto pull in once the non-linear parts, then retesting and\n * \t\teventually access the data.\n *\n * \t\tAt the same time, this also makes sure the *skb* is uncloned,\n * \t\twhich is a necessary condition for direct write. As this needs\n * \t\tto be an invariant for the write part only, the verifier\n * \t\tdetects writes and adds a prologue that is calling\n * \t\t**bpf_skb_pull_data()** to effectively unclone the *skb* from\n * \t\tthe very beginning in case it is indeed cloned.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * s64 bpf_csum_update(struct sk_buff *skb, __wsum csum)\n * \tDescription\n * \t\tAdd the checksum *csum* into *skb*\\ **->csum** in case the\n * \t\tdriver has supplied a checksum for the entire packet into that\n * \t\tfield. Return an error otherwise. This helper is intended to be\n * \t\tused in combination with **bpf_csum_diff**\\ (), in particular\n * \t\twhen the checksum needs to be updated after data has been\n * \t\twritten into the packet through direct packet access.\n * \tReturn\n * \t\tThe checksum on success, or a negative error code in case of\n * \t\tfailure.\n *\n * void bpf_set_hash_invalid(struct sk_buff *skb)\n * \tDescription\n * \t\tInvalidate the current *skb*\\ **->hash**. It can be used after\n * \t\tmangling on headers through direct packet access, in order to\n * \t\tindicate that the hash is outdated and to trigger a\n * \t\trecalculation the next time the kernel tries to access this\n * \t\thash or when the **bpf_get_hash_recalc**\\ () helper is called.\n *\n * int bpf_get_numa_node_id(void)\n * \tDescription\n * \t\tReturn the id of the current NUMA node. The primary use case\n * \t\tfor this helper is the selection of sockets for the local NUMA\n * \t\tnode, when the program is attached to sockets using the\n * \t\t**SO_ATTACH_REUSEPORT_EBPF** option (see also **socket(7)**),\n * \t\tbut the helper is also available to other eBPF program types,\n * \t\tsimilarly to **bpf_get_smp_processor_id**\\ ().\n * \tReturn\n * \t\tThe id of current NUMA node.\n *\n * int bpf_skb_change_head(struct sk_buff *skb, u32 len, u64 flags)\n * \tDescription\n * \t\tGrows headroom of packet associated to *skb* and adjusts the\n * \t\toffset of the MAC header accordingly, adding *len* bytes of\n * \t\tspace. It automatically extends and reallocates memory as\n * \t\trequired.\n *\n * \t\tThis helper can be used on a layer 3 *skb* to push a MAC header\n * \t\tfor redirection into a layer 2 device.\n *\n * \t\tAll values for *flags* are reserved for future usage, and must\n * \t\tbe left at zero.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_xdp_adjust_head(struct xdp_buff *xdp_md, int delta)\n * \tDescription\n * \t\tAdjust (move) *xdp_md*\\ **->data** by *delta* bytes. Note that\n * \t\tit is possible to use a negative value for *delta*. This helper\n * \t\tcan be used to prepare the packet for pushing or popping\n * \t\theaders.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_probe_read_str(void *dst, int size, const void *unsafe_ptr)\n * \tDescription\n * \t\tCopy a NUL terminated string from an unsafe address\n * \t\t*unsafe_ptr* to *dst*. The *size* should include the\n * \t\tterminating NUL byte. In case the string length is smaller than\n * \t\t*size*, the target is not padded with further NUL bytes. If the\n * \t\tstring length is larger than *size*, just *size*-1 bytes are\n * \t\tcopied and the last byte is set to NUL.\n *\n * \t\tOn success, the length of the copied string is returned. This\n * \t\tmakes this helper useful in tracing programs for reading\n * \t\tstrings, and more importantly to get its length at runtime. See\n * \t\tthe following snippet:\n *\n * \t\t::\n *\n * \t\t\tSEC(\"kprobe/sys_open\")\n * \t\t\tvoid bpf_sys_open(struct pt_regs *ctx)\n * \t\t\t{\n * \t\t\t        char buf[PATHLEN]; // PATHLEN is defined to 256\n * \t\t\t        int res = bpf_probe_read_str(buf, sizeof(buf),\n * \t\t\t\t                             ctx->di);\n *\n * \t\t\t\t// Consume buf, for example push it to\n * \t\t\t\t// userspace via bpf_perf_event_output(); we\n * \t\t\t\t// can use res (the string length) as event\n * \t\t\t\t// size, after checking its boundaries.\n * \t\t\t}\n *\n * \t\tIn comparison, using **bpf_probe_read()** helper here instead\n * \t\tto read the string would require to estimate the length at\n * \t\tcompile time, and would often result in copying more memory\n * \t\tthan necessary.\n *\n * \t\tAnother useful use case is when parsing individual process\n * \t\targuments or individual environment variables navigating\n * \t\t*current*\\ **->mm->arg_start** and *current*\\\n * \t\t**->mm->env_start**: using this helper and the return value,\n * \t\tone can quickly iterate at the right offset of the memory area.\n * \tReturn\n * \t\tOn success, the strictly positive length of the string,\n * \t\tincluding the trailing NUL character. On error, a negative\n * \t\tvalue.\n *\n * u64 bpf_get_socket_cookie(struct sk_buff *skb)\n * \tDescription\n * \t\tIf the **struct sk_buff** pointed by *skb* has a known socket,\n * \t\tretrieve the cookie (generated by the kernel) of this socket.\n * \t\tIf no cookie has been set yet, generate a new cookie. Once\n * \t\tgenerated, the socket cookie remains stable for the life of the\n * \t\tsocket. This helper can be useful for monitoring per socket\n * \t\tnetworking traffic statistics as it provides a unique socket\n * \t\tidentifier per namespace.\n * \tReturn\n * \t\tA 8-byte long non-decreasing number on success, or 0 if the\n * \t\tsocket field is missing inside *skb*.\n *\n * u64 bpf_get_socket_cookie(struct bpf_sock_addr *ctx)\n * \tDescription\n * \t\tEquivalent to bpf_get_socket_cookie() helper that accepts\n * \t\t*skb*, but gets socket from **struct bpf_sock_addr** contex.\n * \tReturn\n * \t\tA 8-byte long non-decreasing number.\n *\n * u64 bpf_get_socket_cookie(struct bpf_sock_ops *ctx)\n * \tDescription\n * \t\tEquivalent to bpf_get_socket_cookie() helper that accepts\n * \t\t*skb*, but gets socket from **struct bpf_sock_ops** contex.\n * \tReturn\n * \t\tA 8-byte long non-decreasing number.\n *\n * u32 bpf_get_socket_uid(struct sk_buff *skb)\n * \tReturn\n * \t\tThe owner UID of the socket associated to *skb*. If the socket\n * \t\tis **NULL**, or if it is not a full socket (i.e. if it is a\n * \t\ttime-wait or a request socket instead), **overflowuid** value\n * \t\tis returned (note that **overflowuid** might also be the actual\n * \t\tUID value for the socket).\n *\n * u32 bpf_set_hash(struct sk_buff *skb, u32 hash)\n * \tDescription\n * \t\tSet the full hash for *skb* (set the field *skb*\\ **->hash**)\n * \t\tto value *hash*.\n * \tReturn\n * \t\t0\n *\n * int bpf_setsockopt(struct bpf_sock_ops *bpf_socket, int level, int optname, char *optval, int optlen)\n * \tDescription\n * \t\tEmulate a call to **setsockopt()** on the socket associated to\n * \t\t*bpf_socket*, which must be a full socket. The *level* at\n * \t\twhich the option resides and the name *optname* of the option\n * \t\tmust be specified, see **setsockopt(2)** for more information.\n * \t\tThe option value of length *optlen* is pointed by *optval*.\n *\n * \t\tThis helper actually implements a subset of **setsockopt()**.\n * \t\tIt supports the following *level*\\ s:\n *\n * \t\t* **SOL_SOCKET**, which supports the following *optname*\\ s:\n * \t\t  **SO_RCVBUF**, **SO_SNDBUF**, **SO_MAX_PACING_RATE**,\n * \t\t  **SO_PRIORITY**, **SO_RCVLOWAT**, **SO_MARK**.\n * \t\t* **IPPROTO_TCP**, which supports the following *optname*\\ s:\n * \t\t  **TCP_CONGESTION**, **TCP_BPF_IW**,\n * \t\t  **TCP_BPF_SNDCWND_CLAMP**.\n * \t\t* **IPPROTO_IP**, which supports *optname* **IP_TOS**.\n * \t\t* **IPPROTO_IPV6**, which supports *optname* **IPV6_TCLASS**.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_skb_adjust_room(struct sk_buff *skb, u32 len_diff, u32 mode, u64 flags)\n * \tDescription\n * \t\tGrow or shrink the room for data in the packet associated to\n * \t\t*skb* by *len_diff*, and according to the selected *mode*.\n *\n * \t\tThere is a single supported mode at this time:\n *\n * \t\t* **BPF_ADJ_ROOM_NET**: Adjust room at the network layer\n * \t\t  (room space is added or removed below the layer 3 header).\n *\n * \t\tAll values for *flags* are reserved for future usage, and must\n * \t\tbe left at zero.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_redirect_map(struct bpf_map *map, u32 key, u64 flags)\n * \tDescription\n * \t\tRedirect the packet to the endpoint referenced by *map* at\n * \t\tindex *key*. Depending on its type, this *map* can contain\n * \t\treferences to net devices (for forwarding packets through other\n * \t\tports), or to CPUs (for redirecting XDP frames to another CPU;\n * \t\tbut this is only implemented for native XDP (with driver\n * \t\tsupport) as of this writing).\n *\n * \t\tAll values for *flags* are reserved for future usage, and must\n * \t\tbe left at zero.\n *\n * \t\tWhen used to redirect packets to net devices, this helper\n * \t\tprovides a high performance increase over **bpf_redirect**\\ ().\n * \t\tThis is due to various implementation details of the underlying\n * \t\tmechanisms, one of which is the fact that **bpf_redirect_map**\\\n * \t\t() tries to send packet as a \"bulk\" to the device.\n * \tReturn\n * \t\t**XDP_REDIRECT** on success, or **XDP_ABORTED** on error.\n *\n * int bpf_sk_redirect_map(struct bpf_map *map, u32 key, u64 flags)\n * \tDescription\n * \t\tRedirect the packet to the socket referenced by *map* (of type\n * \t\t**BPF_MAP_TYPE_SOCKMAP**) at index *key*. Both ingress and\n * \t\tegress interfaces can be used for redirection. The\n * \t\t**BPF_F_INGRESS** value in *flags* is used to make the\n * \t\tdistinction (ingress path is selected if the flag is present,\n * \t\tegress path otherwise). This is the only flag supported for now.\n * \tReturn\n * \t\t**SK_PASS** on success, or **SK_DROP** on error.\n *\n * int bpf_sock_map_update(struct bpf_sock_ops *skops, struct bpf_map *map, void *key, u64 flags)\n * \tDescription\n * \t\tAdd an entry to, or update a *map* referencing sockets. The\n * \t\t*skops* is used as a new value for the entry associated to\n * \t\t*key*. *flags* is one of:\n *\n * \t\t**BPF_NOEXIST**\n * \t\t\tThe entry for *key* must not exist in the map.\n * \t\t**BPF_EXIST**\n * \t\t\tThe entry for *key* must already exist in the map.\n * \t\t**BPF_ANY**\n * \t\t\tNo condition on the existence of the entry for *key*.\n *\n * \t\tIf the *map* has eBPF programs (parser and verdict), those will\n * \t\tbe inherited by the socket being added. If the socket is\n * \t\talready attached to eBPF programs, this results in an error.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_xdp_adjust_meta(struct xdp_buff *xdp_md, int delta)\n * \tDescription\n * \t\tAdjust the address pointed by *xdp_md*\\ **->data_meta** by\n * \t\t*delta* (which can be positive or negative). Note that this\n * \t\toperation modifies the address stored in *xdp_md*\\ **->data**,\n * \t\tso the latter must be loaded only after the helper has been\n * \t\tcalled.\n *\n * \t\tThe use of *xdp_md*\\ **->data_meta** is optional and programs\n * \t\tare not required to use it. The rationale is that when the\n * \t\tpacket is processed with XDP (e.g. as DoS filter), it is\n * \t\tpossible to push further meta data along with it before passing\n * \t\tto the stack, and to give the guarantee that an ingress eBPF\n * \t\tprogram attached as a TC classifier on the same device can pick\n * \t\tthis up for further post-processing. Since TC works with socket\n * \t\tbuffers, it remains possible to set from XDP the **mark** or\n * \t\t**priority** pointers, or other pointers for the socket buffer.\n * \t\tHaving this scratch space generic and programmable allows for\n * \t\tmore flexibility as the user is free to store whatever meta\n * \t\tdata they need.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_perf_event_read_value(struct bpf_map *map, u64 flags, struct bpf_perf_event_value *buf, u32 buf_size)\n * \tDescription\n * \t\tRead the value of a perf event counter, and store it into *buf*\n * \t\tof size *buf_size*. This helper relies on a *map* of type\n * \t\t**BPF_MAP_TYPE_PERF_EVENT_ARRAY**. The nature of the perf event\n * \t\tcounter is selected when *map* is updated with perf event file\n * \t\tdescriptors. The *map* is an array whose size is the number of\n * \t\tavailable CPUs, and each cell contains a value relative to one\n * \t\tCPU. The value to retrieve is indicated by *flags*, that\n * \t\tcontains the index of the CPU to look up, masked with\n * \t\t**BPF_F_INDEX_MASK**. Alternatively, *flags* can be set to\n * \t\t**BPF_F_CURRENT_CPU** to indicate that the value for the\n * \t\tcurrent CPU should be retrieved.\n *\n * \t\tThis helper behaves in a way close to\n * \t\t**bpf_perf_event_read**\\ () helper, save that instead of\n * \t\tjust returning the value observed, it fills the *buf*\n * \t\tstructure. This allows for additional data to be retrieved: in\n * \t\tparticular, the enabled and running times (in *buf*\\\n * \t\t**->enabled** and *buf*\\ **->running**, respectively) are\n * \t\tcopied. In general, **bpf_perf_event_read_value**\\ () is\n * \t\trecommended over **bpf_perf_event_read**\\ (), which has some\n * \t\tABI issues and provides fewer functionalities.\n *\n * \t\tThese values are interesting, because hardware PMU (Performance\n * \t\tMonitoring Unit) counters are limited resources. When there are\n * \t\tmore PMU based perf events opened than available counters,\n * \t\tkernel will multiplex these events so each event gets certain\n * \t\tpercentage (but not all) of the PMU time. In case that\n * \t\tmultiplexing happens, the number of samples or counter value\n * \t\twill not reflect the case compared to when no multiplexing\n * \t\toccurs. This makes comparison between different runs difficult.\n * \t\tTypically, the counter value should be normalized before\n * \t\tcomparing to other experiments. The usual normalization is done\n * \t\tas follows.\n *\n * \t\t::\n *\n * \t\t\tnormalized_counter = counter * t_enabled / t_running\n *\n * \t\tWhere t_enabled is the time enabled for event and t_running is\n * \t\tthe time running for event since last normalization. The\n * \t\tenabled and running times are accumulated since the perf event\n * \t\topen. To achieve scaling factor between two invocations of an\n * \t\teBPF program, users can can use CPU id as the key (which is\n * \t\ttypical for perf array usage model) to remember the previous\n * \t\tvalue and do the calculation inside the eBPF program.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_perf_prog_read_value(struct bpf_perf_event_data *ctx, struct bpf_perf_event_value *buf, u32 buf_size)\n * \tDescription\n * \t\tFor en eBPF program attached to a perf event, retrieve the\n * \t\tvalue of the event counter associated to *ctx* and store it in\n * \t\tthe structure pointed by *buf* and of size *buf_size*. Enabled\n * \t\tand running times are also stored in the structure (see\n * \t\tdescription of helper **bpf_perf_event_read_value**\\ () for\n * \t\tmore details).\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_getsockopt(struct bpf_sock_ops *bpf_socket, int level, int optname, char *optval, int optlen)\n * \tDescription\n * \t\tEmulate a call to **getsockopt()** on the socket associated to\n * \t\t*bpf_socket*, which must be a full socket. The *level* at\n * \t\twhich the option resides and the name *optname* of the option\n * \t\tmust be specified, see **getsockopt(2)** for more information.\n * \t\tThe retrieved value is stored in the structure pointed by\n * \t\t*opval* and of length *optlen*.\n *\n * \t\tThis helper actually implements a subset of **getsockopt()**.\n * \t\tIt supports the following *level*\\ s:\n *\n * \t\t* **IPPROTO_TCP**, which supports *optname*\n * \t\t  **TCP_CONGESTION**.\n * \t\t* **IPPROTO_IP**, which supports *optname* **IP_TOS**.\n * \t\t* **IPPROTO_IPV6**, which supports *optname* **IPV6_TCLASS**.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_override_return(struct pt_reg *regs, u64 rc)\n * \tDescription\n * \t\tUsed for error injection, this helper uses kprobes to override\n * \t\tthe return value of the probed function, and to set it to *rc*.\n * \t\tThe first argument is the context *regs* on which the kprobe\n * \t\tworks.\n *\n * \t\tThis helper works by setting setting the PC (program counter)\n * \t\tto an override function which is run in place of the original\n * \t\tprobed function. This means the probed function is not run at\n * \t\tall. The replacement function just returns with the required\n * \t\tvalue.\n *\n * \t\tThis helper has security implications, and thus is subject to\n * \t\trestrictions. It is only available if the kernel was compiled\n * \t\twith the **CONFIG_BPF_KPROBE_OVERRIDE** configuration\n * \t\toption, and in this case it only works on functions tagged with\n * \t\t**ALLOW_ERROR_INJECTION** in the kernel code.\n *\n * \t\tAlso, the helper is only available for the architectures having\n * \t\tthe CONFIG_FUNCTION_ERROR_INJECTION option. As of this writing,\n * \t\tx86 architecture is the only one to support this feature.\n * \tReturn\n * \t\t0\n *\n * int bpf_sock_ops_cb_flags_set(struct bpf_sock_ops *bpf_sock, int argval)\n * \tDescription\n * \t\tAttempt to set the value of the **bpf_sock_ops_cb_flags** field\n * \t\tfor the full TCP socket associated to *bpf_sock_ops* to\n * \t\t*argval*.\n *\n * \t\tThe primary use of this field is to determine if there should\n * \t\tbe calls to eBPF programs of type\n * \t\t**BPF_PROG_TYPE_SOCK_OPS** at various points in the TCP\n * \t\tcode. A program of the same type can change its value, per\n * \t\tconnection and as necessary, when the connection is\n * \t\testablished. This field is directly accessible for reading, but\n * \t\tthis helper must be used for updates in order to return an\n * \t\terror if an eBPF program tries to set a callback that is not\n * \t\tsupported in the current kernel.\n *\n * \t\tThe supported callback values that *argval* can combine are:\n *\n * \t\t* **BPF_SOCK_OPS_RTO_CB_FLAG** (retransmission time out)\n * \t\t* **BPF_SOCK_OPS_RETRANS_CB_FLAG** (retransmission)\n * \t\t* **BPF_SOCK_OPS_STATE_CB_FLAG** (TCP state change)\n *\n * \t\tHere are some examples of where one could call such eBPF\n * \t\tprogram:\n *\n * \t\t* When RTO fires.\n * \t\t* When a packet is retransmitted.\n * \t\t* When the connection terminates.\n * \t\t* When a packet is sent.\n * \t\t* When a packet is received.\n * \tReturn\n * \t\tCode **-EINVAL** if the socket is not a full TCP socket;\n * \t\totherwise, a positive number containing the bits that could not\n * \t\tbe set is returned (which comes down to 0 if all bits were set\n * \t\tas required).\n *\n * int bpf_msg_redirect_map(struct sk_msg_buff *msg, struct bpf_map *map, u32 key, u64 flags)\n * \tDescription\n * \t\tThis helper is used in programs implementing policies at the\n * \t\tsocket level. If the message *msg* is allowed to pass (i.e. if\n * \t\tthe verdict eBPF program returns **SK_PASS**), redirect it to\n * \t\tthe socket referenced by *map* (of type\n * \t\t**BPF_MAP_TYPE_SOCKMAP**) at index *key*. Both ingress and\n * \t\tegress interfaces can be used for redirection. The\n * \t\t**BPF_F_INGRESS** value in *flags* is used to make the\n * \t\tdistinction (ingress path is selected if the flag is present,\n * \t\tegress path otherwise). This is the only flag supported for now.\n * \tReturn\n * \t\t**SK_PASS** on success, or **SK_DROP** on error.\n *\n * int bpf_msg_apply_bytes(struct sk_msg_buff *msg, u32 bytes)\n * \tDescription\n * \t\tFor socket policies, apply the verdict of the eBPF program to\n * \t\tthe next *bytes* (number of bytes) of message *msg*.\n *\n * \t\tFor example, this helper can be used in the following cases:\n *\n * \t\t* A single **sendmsg**\\ () or **sendfile**\\ () system call\n * \t\t  contains multiple logical messages that the eBPF program is\n * \t\t  supposed to read and for which it should apply a verdict.\n * \t\t* An eBPF program only cares to read the first *bytes* of a\n * \t\t  *msg*. If the message has a large payload, then setting up\n * \t\t  and calling the eBPF program repeatedly for all bytes, even\n * \t\t  though the verdict is already known, would create unnecessary\n * \t\t  overhead.\n *\n * \t\tWhen called from within an eBPF program, the helper sets a\n * \t\tcounter internal to the BPF infrastructure, that is used to\n * \t\tapply the last verdict to the next *bytes*. If *bytes* is\n * \t\tsmaller than the current data being processed from a\n * \t\t**sendmsg**\\ () or **sendfile**\\ () system call, the first\n * \t\t*bytes* will be sent and the eBPF program will be re-run with\n * \t\tthe pointer for start of data pointing to byte number *bytes*\n * \t\t**+ 1**. If *bytes* is larger than the current data being\n * \t\tprocessed, then the eBPF verdict will be applied to multiple\n * \t\t**sendmsg**\\ () or **sendfile**\\ () calls until *bytes* are\n * \t\tconsumed.\n *\n * \t\tNote that if a socket closes with the internal counter holding\n * \t\ta non-zero value, this is not a problem because data is not\n * \t\tbeing buffered for *bytes* and is sent as it is received.\n * \tReturn\n * \t\t0\n *\n * int bpf_msg_cork_bytes(struct sk_msg_buff *msg, u32 bytes)\n * \tDescription\n * \t\tFor socket policies, prevent the execution of the verdict eBPF\n * \t\tprogram for message *msg* until *bytes* (byte number) have been\n * \t\taccumulated.\n *\n * \t\tThis can be used when one needs a specific number of bytes\n * \t\tbefore a verdict can be assigned, even if the data spans\n * \t\tmultiple **sendmsg**\\ () or **sendfile**\\ () calls. The extreme\n * \t\tcase would be a user calling **sendmsg**\\ () repeatedly with\n * \t\t1-byte long message segments. Obviously, this is bad for\n * \t\tperformance, but it is still valid. If the eBPF program needs\n * \t\t*bytes* bytes to validate a header, this helper can be used to\n * \t\tprevent the eBPF program to be called again until *bytes* have\n * \t\tbeen accumulated.\n * \tReturn\n * \t\t0\n *\n * int bpf_msg_pull_data(struct sk_msg_buff *msg, u32 start, u32 end, u64 flags)\n * \tDescription\n * \t\tFor socket policies, pull in non-linear data from user space\n * \t\tfor *msg* and set pointers *msg*\\ **->data** and *msg*\\\n * \t\t**->data_end** to *start* and *end* bytes offsets into *msg*,\n * \t\trespectively.\n *\n * \t\tIf a program of type **BPF_PROG_TYPE_SK_MSG** is run on a\n * \t\t*msg* it can only parse data that the (**data**, **data_end**)\n * \t\tpointers have already consumed. For **sendmsg**\\ () hooks this\n * \t\tis likely the first scatterlist element. But for calls relying\n * \t\ton the **sendpage** handler (e.g. **sendfile**\\ ()) this will\n * \t\tbe the range (**0**, **0**) because the data is shared with\n * \t\tuser space and by default the objective is to avoid allowing\n * \t\tuser space to modify data while (or after) eBPF verdict is\n * \t\tbeing decided. This helper can be used to pull in data and to\n * \t\tset the start and end pointer to given values. Data will be\n * \t\tcopied if necessary (i.e. if data was not linear and if start\n * \t\tand end pointers do not point to the same chunk).\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n *\n * \t\tAll values for *flags* are reserved for future usage, and must\n * \t\tbe left at zero.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_bind(struct bpf_sock_addr *ctx, struct sockaddr *addr, int addr_len)\n * \tDescription\n * \t\tBind the socket associated to *ctx* to the address pointed by\n * \t\t*addr*, of length *addr_len*. This allows for making outgoing\n * \t\tconnection from the desired IP address, which can be useful for\n * \t\texample when all processes inside a cgroup should use one\n * \t\tsingle IP address on a host that has multiple IP configured.\n *\n * \t\tThis helper works for IPv4 and IPv6, TCP and UDP sockets. The\n * \t\tdomain (*addr*\\ **->sa_family**) must be **AF_INET** (or\n * \t\t**AF_INET6**). Looking for a free port to bind to can be\n * \t\texpensive, therefore binding to port is not permitted by the\n * \t\thelper: *addr*\\ **->sin_port** (or **sin6_port**, respectively)\n * \t\tmust be set to zero.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_xdp_adjust_tail(struct xdp_buff *xdp_md, int delta)\n * \tDescription\n * \t\tAdjust (move) *xdp_md*\\ **->data_end** by *delta* bytes. It is\n * \t\tonly possible to shrink the packet as of this writing,\n * \t\ttherefore *delta* must be a negative integer.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_skb_get_xfrm_state(struct sk_buff *skb, u32 index, struct bpf_xfrm_state *xfrm_state, u32 size, u64 flags)\n * \tDescription\n * \t\tRetrieve the XFRM state (IP transform framework, see also\n * \t\t**ip-xfrm(8)**) at *index* in XFRM \"security path\" for *skb*.\n *\n * \t\tThe retrieved value is stored in the **struct bpf_xfrm_state**\n * \t\tpointed by *xfrm_state* and of length *size*.\n *\n * \t\tAll values for *flags* are reserved for future usage, and must\n * \t\tbe left at zero.\n *\n * \t\tThis helper is available only if the kernel was compiled with\n * \t\t**CONFIG_XFRM** configuration option.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_get_stack(struct pt_regs *regs, void *buf, u32 size, u64 flags)\n * \tDescription\n * \t\tReturn a user or a kernel stack in bpf program provided buffer.\n * \t\tTo achieve this, the helper needs *ctx*, which is a pointer\n * \t\tto the context on which the tracing program is executed.\n * \t\tTo store the stacktrace, the bpf program provides *buf* with\n * \t\ta nonnegative *size*.\n *\n * \t\tThe last argument, *flags*, holds the number of stack frames to\n * \t\tskip (from 0 to 255), masked with\n * \t\t**BPF_F_SKIP_FIELD_MASK**. The next bits can be used to set\n * \t\tthe following flags:\n *\n * \t\t**BPF_F_USER_STACK**\n * \t\t\tCollect a user space stack instead of a kernel stack.\n * \t\t**BPF_F_USER_BUILD_ID**\n * \t\t\tCollect buildid+offset instead of ips for user stack,\n * \t\t\tonly valid if **BPF_F_USER_STACK** is also specified.\n *\n * \t\t**bpf_get_stack**\\ () can collect up to\n * \t\t**PERF_MAX_STACK_DEPTH** both kernel and user frames, subject\n * \t\tto sufficient large buffer size. Note that\n * \t\tthis limit can be controlled with the **sysctl** program, and\n * \t\tthat it should be manually increased in order to profile long\n * \t\tuser stacks (such as stacks for Java programs). To do so, use:\n *\n * \t\t::\n *\n * \t\t\t# sysctl kernel.perf_event_max_stack=<new value>\n * \tReturn\n * \t\tA non-negative value equal to or less than *size* on success,\n * \t\tor a negative error in case of failure.\n *\n * int bpf_skb_load_bytes_relative(const struct sk_buff *skb, u32 offset, void *to, u32 len, u32 start_header)\n * \tDescription\n * \t\tThis helper is similar to **bpf_skb_load_bytes**\\ () in that\n * \t\tit provides an easy way to load *len* bytes from *offset*\n * \t\tfrom the packet associated to *skb*, into the buffer pointed\n * \t\tby *to*. The difference to **bpf_skb_load_bytes**\\ () is that\n * \t\ta fifth argument *start_header* exists in order to select a\n * \t\tbase offset to start from. *start_header* can be one of:\n *\n * \t\t**BPF_HDR_START_MAC**\n * \t\t\tBase offset to load data from is *skb*'s mac header.\n * \t\t**BPF_HDR_START_NET**\n * \t\t\tBase offset to load data from is *skb*'s network header.\n *\n * \t\tIn general, \"direct packet access\" is the preferred method to\n * \t\taccess packet data, however, this helper is in particular useful\n * \t\tin socket filters where *skb*\\ **->data** does not always point\n * \t\tto the start of the mac header and where \"direct packet access\"\n * \t\tis not available.\n * \tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_fib_lookup(void *ctx, struct bpf_fib_lookup *params, int plen, u32 flags)\n *\tDescription\n *\t\tDo FIB lookup in kernel tables using parameters in *params*.\n *\t\tIf lookup is successful and result shows packet is to be\n *\t\tforwarded, the neighbor tables are searched for the nexthop.\n *\t\tIf successful (ie., FIB lookup shows forwarding and nexthop\n *\t\tis resolved), the nexthop address is returned in ipv4_dst\n *\t\tor ipv6_dst based on family, smac is set to mac address of\n *\t\tegress device, dmac is set to nexthop mac address, rt_metric\n *\t\tis set to metric from route (IPv4/IPv6 only), and ifindex\n *\t\tis set to the device index of the nexthop from the FIB lookup.\n *\n *             *plen* argument is the size of the passed in struct.\n *             *flags* argument can be a combination of one or more of the\n *             following values:\n *\n *\t\t**BPF_FIB_LOOKUP_DIRECT**\n *\t\t\tDo a direct table lookup vs full lookup using FIB\n *\t\t\trules.\n *\t\t**BPF_FIB_LOOKUP_OUTPUT**\n *\t\t\tPerform lookup from an egress perspective (default is\n *\t\t\tingress).\n *\n *             *ctx* is either **struct xdp_md** for XDP programs or\n *             **struct sk_buff** tc cls_act programs.\n *     Return\n *\t\t* < 0 if any input argument is invalid\n *\t\t*   0 on success (packet is forwarded, nexthop neighbor exists)\n *\t\t* > 0 one of **BPF_FIB_LKUP_RET_** codes explaining why the\n *\t\t  packet is not forwarded or needs assist from full stack\n *\n * int bpf_sock_hash_update(struct bpf_sock_ops_kern *skops, struct bpf_map *map, void *key, u64 flags)\n *\tDescription\n *\t\tAdd an entry to, or update a sockhash *map* referencing sockets.\n *\t\tThe *skops* is used as a new value for the entry associated to\n *\t\t*key*. *flags* is one of:\n *\n *\t\t**BPF_NOEXIST**\n *\t\t\tThe entry for *key* must not exist in the map.\n *\t\t**BPF_EXIST**\n *\t\t\tThe entry for *key* must already exist in the map.\n *\t\t**BPF_ANY**\n *\t\t\tNo condition on the existence of the entry for *key*.\n *\n *\t\tIf the *map* has eBPF programs (parser and verdict), those will\n *\t\tbe inherited by the socket being added. If the socket is\n *\t\talready attached to eBPF programs, this results in an error.\n *\tReturn\n *\t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_msg_redirect_hash(struct sk_msg_buff *msg, struct bpf_map *map, void *key, u64 flags)\n *\tDescription\n *\t\tThis helper is used in programs implementing policies at the\n *\t\tsocket level. If the message *msg* is allowed to pass (i.e. if\n *\t\tthe verdict eBPF program returns **SK_PASS**), redirect it to\n *\t\tthe socket referenced by *map* (of type\n *\t\t**BPF_MAP_TYPE_SOCKHASH**) using hash *key*. Both ingress and\n *\t\tegress interfaces can be used for redirection. The\n *\t\t**BPF_F_INGRESS** value in *flags* is used to make the\n *\t\tdistinction (ingress path is selected if the flag is present,\n *\t\tegress path otherwise). This is the only flag supported for now.\n *\tReturn\n *\t\t**SK_PASS** on success, or **SK_DROP** on error.\n *\n * int bpf_sk_redirect_hash(struct sk_buff *skb, struct bpf_map *map, void *key, u64 flags)\n *\tDescription\n *\t\tThis helper is used in programs implementing policies at the\n *\t\tskb socket level. If the sk_buff *skb* is allowed to pass (i.e.\n *\t\tif the verdeict eBPF program returns **SK_PASS**), redirect it\n *\t\tto the socket referenced by *map* (of type\n *\t\t**BPF_MAP_TYPE_SOCKHASH**) using hash *key*. Both ingress and\n *\t\tegress interfaces can be used for redirection. The\n *\t\t**BPF_F_INGRESS** value in *flags* is used to make the\n *\t\tdistinction (ingress path is selected if the flag is present,\n *\t\tegress otherwise). This is the only flag supported for now.\n *\tReturn\n *\t\t**SK_PASS** on success, or **SK_DROP** on error.\n *\n * int bpf_lwt_push_encap(struct sk_buff *skb, u32 type, void *hdr, u32 len)\n *\tDescription\n *\t\tEncapsulate the packet associated to *skb* within a Layer 3\n *\t\tprotocol header. This header is provided in the buffer at\n *\t\taddress *hdr*, with *len* its size in bytes. *type* indicates\n *\t\tthe protocol of the header and can be one of:\n *\n *\t\t**BPF_LWT_ENCAP_SEG6**\n *\t\t\tIPv6 encapsulation with Segment Routing Header\n *\t\t\t(**struct ipv6_sr_hdr**). *hdr* only contains the SRH,\n *\t\t\tthe IPv6 header is computed by the kernel.\n *\t\t**BPF_LWT_ENCAP_SEG6_INLINE**\n *\t\t\tOnly works if *skb* contains an IPv6 packet. Insert a\n *\t\t\tSegment Routing Header (**struct ipv6_sr_hdr**) inside\n *\t\t\tthe IPv6 header.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n *\tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_lwt_seg6_store_bytes(struct sk_buff *skb, u32 offset, const void *from, u32 len)\n *\tDescription\n *\t\tStore *len* bytes from address *from* into the packet\n *\t\tassociated to *skb*, at *offset*. Only the flags, tag and TLVs\n *\t\tinside the outermost IPv6 Segment Routing Header can be\n *\t\tmodified through this helper.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n *\tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_lwt_seg6_adjust_srh(struct sk_buff *skb, u32 offset, s32 delta)\n *\tDescription\n *\t\tAdjust the size allocated to TLVs in the outermost IPv6\n *\t\tSegment Routing Header contained in the packet associated to\n *\t\t*skb*, at position *offset* by *delta* bytes. Only offsets\n *\t\tafter the segments are accepted. *delta* can be as well\n *\t\tpositive (growing) as negative (shrinking).\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n *\tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_lwt_seg6_action(struct sk_buff *skb, u32 action, void *param, u32 param_len)\n *\tDescription\n *\t\tApply an IPv6 Segment Routing action of type *action* to the\n *\t\tpacket associated to *skb*. Each action takes a parameter\n *\t\tcontained at address *param*, and of length *param_len* bytes.\n *\t\t*action* can be one of:\n *\n *\t\t**SEG6_LOCAL_ACTION_END_X**\n *\t\t\tEnd.X action: Endpoint with Layer-3 cross-connect.\n *\t\t\tType of *param*: **struct in6_addr**.\n *\t\t**SEG6_LOCAL_ACTION_END_T**\n *\t\t\tEnd.T action: Endpoint with specific IPv6 table lookup.\n *\t\t\tType of *param*: **int**.\n *\t\t**SEG6_LOCAL_ACTION_END_B6**\n *\t\t\tEnd.B6 action: Endpoint bound to an SRv6 policy.\n *\t\t\tType of param: **struct ipv6_sr_hdr**.\n *\t\t**SEG6_LOCAL_ACTION_END_B6_ENCAP**\n *\t\t\tEnd.B6.Encap action: Endpoint bound to an SRv6\n *\t\t\tencapsulation policy.\n *\t\t\tType of param: **struct ipv6_sr_hdr**.\n *\n * \t\tA call to this helper is susceptible to change the underlaying\n * \t\tpacket buffer. Therefore, at load time, all checks on pointers\n * \t\tpreviously done by the verifier are invalidated and must be\n * \t\tperformed again, if the helper is used in combination with\n * \t\tdirect packet access.\n *\tReturn\n * \t\t0 on success, or a negative error in case of failure.\n *\n * int bpf_rc_keydown(void *ctx, u32 protocol, u64 scancode, u32 toggle)\n *\tDescription\n *\t\tThis helper is used in programs implementing IR decoding, to\n *\t\treport a successfully decoded key press with *scancode*,\n *\t\t*toggle* value in the given *protocol*. The scancode will be\n *\t\ttranslated to a keycode using the rc keymap, and reported as\n *\t\tan input key down event. After a period a key up event is\n *\t\tgenerated. This period can be extended by calling either\n *\t\t**bpf_rc_keydown** () again with the same values, or calling\n *\t\t**bpf_rc_repeat** ().\n *\n *\t\tSome protocols include a toggle bit, in case the button\twas\n *\t\treleased and pressed again between consecutive scancodes.\n *\n *\t\tThe *ctx* should point to the lirc sample as passed into\n *\t\tthe program.\n *\n *\t\tThe *protocol* is the decoded protocol number (see\n *\t\t**enum rc_proto** for some predefined values).\n *\n *\t\tThis helper is only available is the kernel was compiled with\n *\t\tthe **CONFIG_BPF_LIRC_MODE2** configuration option set to\n *\t\t\"**y**\".\n *\tReturn\n *\t\t0\n *\n * int bpf_rc_repeat(void *ctx)\n *\tDescription\n *\t\tThis helper is used in programs implementing IR decoding, to\n *\t\treport a successfully decoded repeat key message. This delays\n *\t\tthe generation of a key up event for previously generated\n *\t\tkey down event.\n *\n *\t\tSome IR protocols like NEC have a special IR message for\n *\t\trepeating last button, for when a button is held down.\n *\n *\t\tThe *ctx* should point to the lirc sample as passed into\n *\t\tthe program.\n *\n *\t\tThis helper is only available is the kernel was compiled with\n *\t\tthe **CONFIG_BPF_LIRC_MODE2** configuration option set to\n *\t\t\"**y**\".\n *\tReturn\n *\t\t0\n *\n * uint64_t bpf_skb_cgroup_id(struct sk_buff *skb)\n * \tDescription\n * \t\tReturn the cgroup v2 id of the socket associated with the *skb*.\n * \t\tThis is roughly similar to the **bpf_get_cgroup_classid**\\ ()\n * \t\thelper for cgroup v1 by providing a tag resp. identifier that\n * \t\tcan be matched on or used for map lookups e.g. to implement\n * \t\tpolicy. The cgroup v2 id of a given path in the hierarchy is\n * \t\texposed in user space through the f_handle API in order to get\n * \t\tto the same 64-bit id.\n *\n * \t\tThis helper can be used on TC egress path, but not on ingress,\n * \t\tand is available only if the kernel was compiled with the\n * \t\t**CONFIG_SOCK_CGROUP_DATA** configuration option.\n * \tReturn\n * \t\tThe id is returned or 0 in case the id could not be retrieved.\n *\n * u64 bpf_skb_ancestor_cgroup_id(struct sk_buff *skb, int ancestor_level)\n *\tDescription\n *\t\tReturn id of cgroup v2 that is ancestor of cgroup associated\n *\t\twith the *skb* at the *ancestor_level*.  The root cgroup is at\n *\t\t*ancestor_level* zero and each step down the hierarchy\n *\t\tincrements the level. If *ancestor_level* == level of cgroup\n *\t\tassociated with *skb*, then return value will be same as that\n *\t\tof **bpf_skb_cgroup_id**\\ ().\n *\n *\t\tThe helper is useful to implement policies based on cgroups\n *\t\tthat are upper in hierarchy than immediate cgroup associated\n *\t\twith *skb*.\n *\n *\t\tThe format of returned id and helper limitations are same as in\n *\t\t**bpf_skb_cgroup_id**\\ ().\n *\tReturn\n *\t\tThe id is returned or 0 in case the id could not be retrieved.\n *\n * u64 bpf_get_current_cgroup_id(void)\n * \tReturn\n * \t\tA 64-bit integer containing the current cgroup id based\n * \t\ton the cgroup within which the current task is running.\n *\n * void* get_local_storage(void *map, u64 flags)\n *\tDescription\n *\t\tGet the pointer to the local storage area.\n *\t\tThe type and the size of the local storage is defined\n *\t\tby the *map* argument.\n *\t\tThe *flags* meaning is specific for each map type,\n *\t\tand has to be 0 for cgroup local storage.\n *\n *\t\tDepending on the bpf program type, a local storage area\n *\t\tcan be shared between multiple instances of the bpf program,\n *\t\trunning simultaneously.\n *\n *\t\tA user should care about the synchronization by himself.\n *\t\tFor example, by using the BPF_STX_XADD instruction to alter\n *\t\tthe shared data.\n *\tReturn\n *\t\tPointer to the local storage area.\n *\n * int bpf_sk_select_reuseport(struct sk_reuseport_md *reuse, struct bpf_map *map, void *key, u64 flags)\n *\tDescription\n *\t\tSelect a SO_REUSEPORT sk from a\tBPF_MAP_TYPE_REUSEPORT_ARRAY map\n *\t\tIt checks the selected sk is matching the incoming\n *\t\trequest in the skb.\n *\tReturn\n *\t\t0 on success, or a negative error in case of failure.\n */\n#define __BPF_FUNC_MAPPER(FN)\t\t\\\n\tFN(unspec),\t\t\t\\\n\tFN(map_lookup_elem),\t\t\\\n\tFN(map_update_elem),\t\t\\\n\tFN(map_delete_elem),\t\t\\\n\tFN(probe_read),\t\t\t\\\n\tFN(ktime_get_ns),\t\t\\\n\tFN(trace_printk),\t\t\\\n\tFN(get_prandom_u32),\t\t\\\n\tFN(get_smp_processor_id),\t\\\n\tFN(skb_store_bytes),\t\t\\\n\tFN(l3_csum_replace),\t\t\\\n\tFN(l4_csum_replace),\t\t\\\n\tFN(tail_call),\t\t\t\\\n\tFN(clone_redirect),\t\t\\\n\tFN(get_current_pid_tgid),\t\\\n\tFN(get_current_uid_gid),\t\\\n\tFN(get_current_comm),\t\t\\\n\tFN(get_cgroup_classid),\t\t\\\n\tFN(skb_vlan_push),\t\t\\\n\tFN(skb_vlan_pop),\t\t\\\n\tFN(skb_get_tunnel_key),\t\t\\\n\tFN(skb_set_tunnel_key),\t\t\\\n\tFN(perf_event_read),\t\t\\\n\tFN(redirect),\t\t\t\\\n\tFN(get_route_realm),\t\t\\\n\tFN(perf_event_output),\t\t\\\n\tFN(skb_load_bytes),\t\t\\\n\tFN(get_stackid),\t\t\\\n\tFN(csum_diff),\t\t\t\\\n\tFN(skb_get_tunnel_opt),\t\t\\\n\tFN(skb_set_tunnel_opt),\t\t\\\n\tFN(skb_change_proto),\t\t\\\n\tFN(skb_change_type),\t\t\\\n\tFN(skb_under_cgroup),\t\t\\\n\tFN(get_hash_recalc),\t\t\\\n\tFN(get_current_task),\t\t\\\n\tFN(probe_write_user),\t\t\\\n\tFN(current_task_under_cgroup),\t\\\n\tFN(skb_change_tail),\t\t\\\n\tFN(skb_pull_data),\t\t\\\n\tFN(csum_update),\t\t\\\n\tFN(set_hash_invalid),\t\t\\\n\tFN(get_numa_node_id),\t\t\\\n\tFN(skb_change_head),\t\t\\\n\tFN(xdp_adjust_head),\t\t\\\n\tFN(probe_read_str),\t\t\\\n\tFN(get_socket_cookie),\t\t\\\n\tFN(get_socket_uid),\t\t\\\n\tFN(set_hash),\t\t\t\\\n\tFN(setsockopt),\t\t\t\\\n\tFN(skb_adjust_room),\t\t\\\n\tFN(redirect_map),\t\t\\\n\tFN(sk_redirect_map),\t\t\\\n\tFN(sock_map_update),\t\t\\\n\tFN(xdp_adjust_meta),\t\t\\\n\tFN(perf_event_read_value),\t\\\n\tFN(perf_prog_read_value),\t\\\n\tFN(getsockopt),\t\t\t\\\n\tFN(override_return),\t\t\\\n\tFN(sock_ops_cb_flags_set),\t\\\n\tFN(msg_redirect_map),\t\t\\\n\tFN(msg_apply_bytes),\t\t\\\n\tFN(msg_cork_bytes),\t\t\\\n\tFN(msg_pull_data),\t\t\\\n\tFN(bind),\t\t\t\\\n\tFN(xdp_adjust_tail),\t\t\\\n\tFN(skb_get_xfrm_state),\t\t\\\n\tFN(get_stack),\t\t\t\\\n\tFN(skb_load_bytes_relative),\t\\\n\tFN(fib_lookup),\t\t\t\\\n\tFN(sock_hash_update),\t\t\\\n\tFN(msg_redirect_hash),\t\t\\\n\tFN(sk_redirect_hash),\t\t\\\n\tFN(lwt_push_encap),\t\t\\\n\tFN(lwt_seg6_store_bytes),\t\\\n\tFN(lwt_seg6_adjust_srh),\t\\\n\tFN(lwt_seg6_action),\t\t\\\n\tFN(rc_repeat),\t\t\t\\\n\tFN(rc_keydown),\t\t\t\\\n\tFN(skb_cgroup_id),\t\t\\\n\tFN(get_current_cgroup_id),\t\\\n\tFN(get_local_storage),\t\t\\\n\tFN(sk_select_reuseport),\t\\\n\tFN(skb_ancestor_cgroup_id),\n\n/* integer value in 'imm' field of BPF_CALL instruction selects which helper\n * function eBPF program intends to call\n */\n#define __BPF_ENUM_FN(x) BPF_FUNC_ ## x\nenum bpf_func_id {\n\t__BPF_FUNC_MAPPER(__BPF_ENUM_FN)\n\t__BPF_FUNC_MAX_ID,\n};\n#undef __BPF_ENUM_FN\n\n/* All flags used by eBPF helper functions, placed here. */\n\n/* BPF_FUNC_skb_store_bytes flags. */\n#define BPF_F_RECOMPUTE_CSUM\t\t(1ULL << 0)\n#define BPF_F_INVALIDATE_HASH\t\t(1ULL << 1)\n\n/* BPF_FUNC_l3_csum_replace and BPF_FUNC_l4_csum_replace flags.\n * First 4 bits are for passing the header field size.\n */\n#define BPF_F_HDR_FIELD_MASK\t\t0xfULL\n\n/* BPF_FUNC_l4_csum_replace flags. */\n#define BPF_F_PSEUDO_HDR\t\t(1ULL << 4)\n#define BPF_F_MARK_MANGLED_0\t\t(1ULL << 5)\n#define BPF_F_MARK_ENFORCE\t\t(1ULL << 6)\n\n/* BPF_FUNC_clone_redirect and BPF_FUNC_redirect flags. */\n#define BPF_F_INGRESS\t\t\t(1ULL << 0)\n\n/* BPF_FUNC_skb_set_tunnel_key and BPF_FUNC_skb_get_tunnel_key flags. */\n#define BPF_F_TUNINFO_IPV6\t\t(1ULL << 0)\n\n/* flags for both BPF_FUNC_get_stackid and BPF_FUNC_get_stack. */\n#define BPF_F_SKIP_FIELD_MASK\t\t0xffULL\n#define BPF_F_USER_STACK\t\t(1ULL << 8)\n/* flags used by BPF_FUNC_get_stackid only. */\n#define BPF_F_FAST_STACK_CMP\t\t(1ULL << 9)\n#define BPF_F_REUSE_STACKID\t\t(1ULL << 10)\n/* flags used by BPF_FUNC_get_stack only. */\n#define BPF_F_USER_BUILD_ID\t\t(1ULL << 11)\n\n/* BPF_FUNC_skb_set_tunnel_key flags. */\n#define BPF_F_ZERO_CSUM_TX\t\t(1ULL << 1)\n#define BPF_F_DONT_FRAGMENT\t\t(1ULL << 2)\n#define BPF_F_SEQ_NUMBER\t\t(1ULL << 3)\n\n/* BPF_FUNC_perf_event_output, BPF_FUNC_perf_event_read and\n * BPF_FUNC_perf_event_read_value flags.\n */\n#define BPF_F_INDEX_MASK\t\t0xffffffffULL\n#define BPF_F_CURRENT_CPU\t\tBPF_F_INDEX_MASK\n/* BPF_FUNC_perf_event_output for sk_buff input context. */\n#define BPF_F_CTXLEN_MASK\t\t(0xfffffULL << 32)\n\n/* Mode for BPF_FUNC_skb_adjust_room helper. */\nenum bpf_adj_room_mode {\n\tBPF_ADJ_ROOM_NET,\n};\n\n/* Mode for BPF_FUNC_skb_load_bytes_relative helper. */\nenum bpf_hdr_start_off {\n\tBPF_HDR_START_MAC,\n\tBPF_HDR_START_NET,\n};\n\n/* Encapsulation type for BPF_FUNC_lwt_push_encap helper. */\nenum bpf_lwt_encap_mode {\n\tBPF_LWT_ENCAP_SEG6,\n\tBPF_LWT_ENCAP_SEG6_INLINE\n};\n\n/* user accessible mirror of in-kernel sk_buff.\n * new fields can only be added to the end of this structure\n */\nstruct __sk_buff {\n\t__u32 len;\n\t__u32 pkt_type;\n\t__u32 mark;\n\t__u32 queue_mapping;\n\t__u32 protocol;\n\t__u32 vlan_present;\n\t__u32 vlan_tci;\n\t__u32 vlan_proto;\n\t__u32 priority;\n\t__u32 ingress_ifindex;\n\t__u32 ifindex;\n\t__u32 tc_index;\n\t__u32 cb[5];\n\t__u32 hash;\n\t__u32 tc_classid;\n\t__u32 data;\n\t__u32 data_end;\n\t__u32 napi_id;\n\n\t/* Accessed by BPF_PROG_TYPE_sk_skb types from here to ... */\n\t__u32 family;\n\t__u32 remote_ip4;\t/* Stored in network byte order */\n\t__u32 local_ip4;\t/* Stored in network byte order */\n\t__u32 remote_ip6[4];\t/* Stored in network byte order */\n\t__u32 local_ip6[4];\t/* Stored in network byte order */\n\t__u32 remote_port;\t/* Stored in network byte order */\n\t__u32 local_port;\t/* stored in host byte order */\n\t/* ... here. */\n\n\t__u32 data_meta;\n};\n\nstruct bpf_tunnel_key {\n\t__u32 tunnel_id;\n\tunion {\n\t\t__u32 remote_ipv4;\n\t\t__u32 remote_ipv6[4];\n\t};\n\t__u8 tunnel_tos;\n\t__u8 tunnel_ttl;\n\t__u16 tunnel_ext;\t/* Padding, future use. */\n\t__u32 tunnel_label;\n};\n\n/* user accessible mirror of in-kernel xfrm_state.\n * new fields can only be added to the end of this structure\n */\nstruct bpf_xfrm_state {\n\t__u32 reqid;\n\t__u32 spi;\t/* Stored in network byte order */\n\t__u16 family;\n\t__u16 ext;\t/* Padding, future use. */\n\tunion {\n\t\t__u32 remote_ipv4;\t/* Stored in network byte order */\n\t\t__u32 remote_ipv6[4];\t/* Stored in network byte order */\n\t};\n};\n\n/* Generic BPF return codes which all BPF program types may support.\n * The values are binary compatible with their TC_ACT_* counter-part to\n * provide backwards compatibility with existing SCHED_CLS and SCHED_ACT\n * programs.\n *\n * XDP is handled seprately, see XDP_*.\n */\nenum bpf_ret_code {\n\tBPF_OK = 0,\n\t/* 1 reserved */\n\tBPF_DROP = 2,\n\t/* 3-6 reserved */\n\tBPF_REDIRECT = 7,\n\t/* >127 are reserved for prog type specific return codes */\n};\n\nstruct bpf_sock {\n\t__u32 bound_dev_if;\n\t__u32 family;\n\t__u32 type;\n\t__u32 protocol;\n\t__u32 mark;\n\t__u32 priority;\n\t__u32 src_ip4;\t\t/* Allows 1,2,4-byte read.\n\t\t\t\t * Stored in network byte order.\n\t\t\t\t */\n\t__u32 src_ip6[4];\t/* Allows 1,2,4-byte read.\n\t\t\t\t * Stored in network byte order.\n\t\t\t\t */\n\t__u32 src_port;\t\t/* Allows 4-byte read.\n\t\t\t\t * Stored in host byte order\n\t\t\t\t */\n};\n\n#define XDP_PACKET_HEADROOM 256\n\n/* User return codes for XDP prog type.\n * A valid XDP program must return one of these defined values. All other\n * return codes are reserved for future use. Unknown return codes will\n * result in packet drops and a warning via bpf_warn_invalid_xdp_action().\n */\nenum xdp_action {\n\tXDP_ABORTED = 0,\n\tXDP_DROP,\n\tXDP_PASS,\n\tXDP_TX,\n\tXDP_REDIRECT,\n};\n\n/* user accessible metadata for XDP packet hook\n * new fields must be added to the end of this structure\n */\nstruct xdp_md {\n\t__u32 data;\n\t__u32 data_end;\n\t__u32 data_meta;\n\t/* Below access go through struct xdp_rxq_info */\n\t__u32 ingress_ifindex; /* rxq->dev->ifindex */\n\t__u32 rx_queue_index;  /* rxq->queue_index  */\n};\n\nenum sk_action {\n\tSK_DROP = 0,\n\tSK_PASS,\n};\n\n/* user accessible metadata for SK_MSG packet hook, new fields must\n * be added to the end of this structure\n */\nstruct sk_msg_md {\n\tvoid *data;\n\tvoid *data_end;\n\n\t__u32 family;\n\t__u32 remote_ip4;\t/* Stored in network byte order */\n\t__u32 local_ip4;\t/* Stored in network byte order */\n\t__u32 remote_ip6[4];\t/* Stored in network byte order */\n\t__u32 local_ip6[4];\t/* Stored in network byte order */\n\t__u32 remote_port;\t/* Stored in network byte order */\n\t__u32 local_port;\t/* stored in host byte order */\n};\n\nstruct sk_reuseport_md {\n\t/*\n\t * Start of directly accessible data. It begins from\n\t * the tcp/udp header.\n\t */\n\tvoid *data;\n\tvoid *data_end;\t\t/* End of directly accessible data */\n\t/*\n\t * Total length of packet (starting from the tcp/udp header).\n\t * Note that the directly accessible bytes (data_end - data)\n\t * could be less than this \"len\".  Those bytes could be\n\t * indirectly read by a helper \"bpf_skb_load_bytes()\".\n\t */\n\t__u32 len;\n\t/*\n\t * Eth protocol in the mac header (network byte order). e.g.\n\t * ETH_P_IP(0x0800) and ETH_P_IPV6(0x86DD)\n\t */\n\t__u32 eth_protocol;\n\t__u32 ip_protocol;\t/* IP protocol. e.g. IPPROTO_TCP, IPPROTO_UDP */\n\t__u32 bind_inany;\t/* Is sock bound to an INANY address? */\n\t__u32 hash;\t\t/* A hash of the packet 4 tuples */\n};\n\n#define BPF_TAG_SIZE\t8\n\nstruct bpf_prog_info {\n\t__u32 type;\n\t__u32 id;\n\t__u8  tag[BPF_TAG_SIZE];\n\t__u32 jited_prog_len;\n\t__u32 xlated_prog_len;\n\t__aligned_u64 jited_prog_insns;\n\t__aligned_u64 xlated_prog_insns;\n\t__u64 load_time;\t/* ns since boottime */\n\t__u32 created_by_uid;\n\t__u32 nr_map_ids;\n\t__aligned_u64 map_ids;\n\tchar name[BPF_OBJ_NAME_LEN];\n\t__u32 ifindex;\n\t__u32 gpl_compatible:1;\n\t__u64 netns_dev;\n\t__u64 netns_ino;\n\t__u32 nr_jited_ksyms;\n\t__u32 nr_jited_func_lens;\n\t__aligned_u64 jited_ksyms;\n\t__aligned_u64 jited_func_lens;\n} __attribute__((aligned(8)));\n\nstruct bpf_map_info {\n\t__u32 type;\n\t__u32 id;\n\t__u32 key_size;\n\t__u32 value_size;\n\t__u32 max_entries;\n\t__u32 map_flags;\n\tchar  name[BPF_OBJ_NAME_LEN];\n\t__u32 ifindex;\n\t__u32 :32;\n\t__u64 netns_dev;\n\t__u64 netns_ino;\n\t__u32 btf_id;\n\t__u32 btf_key_type_id;\n\t__u32 btf_value_type_id;\n} __attribute__((aligned(8)));\n\nstruct bpf_btf_info {\n\t__aligned_u64 btf;\n\t__u32 btf_size;\n\t__u32 id;\n} __attribute__((aligned(8)));\n\n/* User bpf_sock_addr struct to access socket fields and sockaddr struct passed\n * by user and intended to be used by socket (e.g. to bind to, depends on\n * attach attach type).\n */\nstruct bpf_sock_addr {\n\t__u32 user_family;\t/* Allows 4-byte read, but no write. */\n\t__u32 user_ip4;\t\t/* Allows 1,2,4-byte read and 4-byte write.\n\t\t\t\t * Stored in network byte order.\n\t\t\t\t */\n\t__u32 user_ip6[4];\t/* Allows 1,2,4-byte read an 4-byte write.\n\t\t\t\t * Stored in network byte order.\n\t\t\t\t */\n\t__u32 user_port;\t/* Allows 4-byte read and write.\n\t\t\t\t * Stored in network byte order\n\t\t\t\t */\n\t__u32 family;\t\t/* Allows 4-byte read, but no write */\n\t__u32 type;\t\t/* Allows 4-byte read, but no write */\n\t__u32 protocol;\t\t/* Allows 4-byte read, but no write */\n\t__u32 msg_src_ip4;\t/* Allows 1,2,4-byte read an 4-byte write.\n\t\t\t\t * Stored in network byte order.\n\t\t\t\t */\n\t__u32 msg_src_ip6[4];\t/* Allows 1,2,4-byte read an 4-byte write.\n\t\t\t\t * Stored in network byte order.\n\t\t\t\t */\n};\n\n/* User bpf_sock_ops struct to access socket values and specify request ops\n * and their replies.\n * Some of this fields are in network (bigendian) byte order and may need\n * to be converted before use (bpf_ntohl() defined in samples/bpf/bpf_endian.h).\n * New fields can only be added at the end of this structure\n */\nstruct bpf_sock_ops {\n\t__u32 op;\n\tunion {\n\t\t__u32 args[4];\t\t/* Optionally passed to bpf program */\n\t\t__u32 reply;\t\t/* Returned by bpf program\t    */\n\t\t__u32 replylong[4];\t/* Optionally returned by bpf prog  */\n\t};\n\t__u32 family;\n\t__u32 remote_ip4;\t/* Stored in network byte order */\n\t__u32 local_ip4;\t/* Stored in network byte order */\n\t__u32 remote_ip6[4];\t/* Stored in network byte order */\n\t__u32 local_ip6[4];\t/* Stored in network byte order */\n\t__u32 remote_port;\t/* Stored in network byte order */\n\t__u32 local_port;\t/* stored in host byte order */\n\t__u32 is_fullsock;\t/* Some TCP fields are only valid if\n\t\t\t\t * there is a full socket. If not, the\n\t\t\t\t * fields read as zero.\n\t\t\t\t */\n\t__u32 snd_cwnd;\n\t__u32 srtt_us;\t\t/* Averaged RTT << 3 in usecs */\n\t__u32 bpf_sock_ops_cb_flags; /* flags defined in uapi/linux/tcp.h */\n\t__u32 state;\n\t__u32 rtt_min;\n\t__u32 snd_ssthresh;\n\t__u32 rcv_nxt;\n\t__u32 snd_nxt;\n\t__u32 snd_una;\n\t__u32 mss_cache;\n\t__u32 ecn_flags;\n\t__u32 rate_delivered;\n\t__u32 rate_interval_us;\n\t__u32 packets_out;\n\t__u32 retrans_out;\n\t__u32 total_retrans;\n\t__u32 segs_in;\n\t__u32 data_segs_in;\n\t__u32 segs_out;\n\t__u32 data_segs_out;\n\t__u32 lost_out;\n\t__u32 sacked_out;\n\t__u32 sk_txhash;\n\t__u64 bytes_received;\n\t__u64 bytes_acked;\n};\n\n/* Definitions for bpf_sock_ops_cb_flags */\n#define BPF_SOCK_OPS_RTO_CB_FLAG\t(1<<0)\n#define BPF_SOCK_OPS_RETRANS_CB_FLAG\t(1<<1)\n#define BPF_SOCK_OPS_STATE_CB_FLAG\t(1<<2)\n#define BPF_SOCK_OPS_ALL_CB_FLAGS       0x7\t\t/* Mask of all currently\n\t\t\t\t\t\t\t * supported cb flags\n\t\t\t\t\t\t\t */\n\n/* List of known BPF sock_ops operators.\n * New entries can only be added at the end\n */\nenum {\n\tBPF_SOCK_OPS_VOID,\n\tBPF_SOCK_OPS_TIMEOUT_INIT,\t/* Should return SYN-RTO value to use or\n\t\t\t\t\t * -1 if default value should be used\n\t\t\t\t\t */\n\tBPF_SOCK_OPS_RWND_INIT,\t\t/* Should return initial advertized\n\t\t\t\t\t * window (in packets) or -1 if default\n\t\t\t\t\t * value should be used\n\t\t\t\t\t */\n\tBPF_SOCK_OPS_TCP_CONNECT_CB,\t/* Calls BPF program right before an\n\t\t\t\t\t * active connection is initialized\n\t\t\t\t\t */\n\tBPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB,\t/* Calls BPF program when an\n\t\t\t\t\t\t * active connection is\n\t\t\t\t\t\t * established\n\t\t\t\t\t\t */\n\tBPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB,\t/* Calls BPF program when a\n\t\t\t\t\t\t * passive connection is\n\t\t\t\t\t\t * established\n\t\t\t\t\t\t */\n\tBPF_SOCK_OPS_NEEDS_ECN,\t\t/* If connection's congestion control\n\t\t\t\t\t * needs ECN\n\t\t\t\t\t */\n\tBPF_SOCK_OPS_BASE_RTT,\t\t/* Get base RTT. The correct value is\n\t\t\t\t\t * based on the path and may be\n\t\t\t\t\t * dependent on the congestion control\n\t\t\t\t\t * algorithm. In general it indicates\n\t\t\t\t\t * a congestion threshold. RTTs above\n\t\t\t\t\t * this indicate congestion\n\t\t\t\t\t */\n\tBPF_SOCK_OPS_RTO_CB,\t\t/* Called when an RTO has triggered.\n\t\t\t\t\t * Arg1: value of icsk_retransmits\n\t\t\t\t\t * Arg2: value of icsk_rto\n\t\t\t\t\t * Arg3: whether RTO has expired\n\t\t\t\t\t */\n\tBPF_SOCK_OPS_RETRANS_CB,\t/* Called when skb is retransmitted.\n\t\t\t\t\t * Arg1: sequence number of 1st byte\n\t\t\t\t\t * Arg2: # segments\n\t\t\t\t\t * Arg3: return value of\n\t\t\t\t\t *       tcp_transmit_skb (0 => success)\n\t\t\t\t\t */\n\tBPF_SOCK_OPS_STATE_CB,\t\t/* Called when TCP changes state.\n\t\t\t\t\t * Arg1: old_state\n\t\t\t\t\t * Arg2: new_state\n\t\t\t\t\t */\n\tBPF_SOCK_OPS_TCP_LISTEN_CB,\t/* Called on listen(2), right after\n\t\t\t\t\t * socket transition to LISTEN state.\n\t\t\t\t\t */\n};\n\n/* List of TCP states. There is a build check in net/ipv4/tcp.c to detect\n * changes between the TCP and BPF versions. Ideally this should never happen.\n * If it does, we need to add code to convert them before calling\n * the BPF sock_ops function.\n */\nenum {\n\tBPF_TCP_ESTABLISHED = 1,\n\tBPF_TCP_SYN_SENT,\n\tBPF_TCP_SYN_RECV,\n\tBPF_TCP_FIN_WAIT1,\n\tBPF_TCP_FIN_WAIT2,\n\tBPF_TCP_TIME_WAIT,\n\tBPF_TCP_CLOSE,\n\tBPF_TCP_CLOSE_WAIT,\n\tBPF_TCP_LAST_ACK,\n\tBPF_TCP_LISTEN,\n\tBPF_TCP_CLOSING,\t/* Now a valid state */\n\tBPF_TCP_NEW_SYN_RECV,\n\n\tBPF_TCP_MAX_STATES\t/* Leave at the end! */\n};\n\n#define TCP_BPF_IW\t\t1001\t/* Set TCP initial congestion window */\n#define TCP_BPF_SNDCWND_CLAMP\t1002\t/* Set sndcwnd_clamp */\n\nstruct bpf_perf_event_value {\n\t__u64 counter;\n\t__u64 enabled;\n\t__u64 running;\n};\n\n#define BPF_DEVCG_ACC_MKNOD\t(1ULL << 0)\n#define BPF_DEVCG_ACC_READ\t(1ULL << 1)\n#define BPF_DEVCG_ACC_WRITE\t(1ULL << 2)\n\n#define BPF_DEVCG_DEV_BLOCK\t(1ULL << 0)\n#define BPF_DEVCG_DEV_CHAR\t(1ULL << 1)\n\nstruct bpf_cgroup_dev_ctx {\n\t/* access_type encoded as (BPF_DEVCG_ACC_* << 16) | BPF_DEVCG_DEV_* */\n\t__u32 access_type;\n\t__u32 major;\n\t__u32 minor;\n};\n\nstruct bpf_raw_tracepoint_args {\n\t__u64 args[0];\n};\n\n/* DIRECT:  Skip the FIB rules and go to FIB table associated with device\n * OUTPUT:  Do lookup from egress perspective; default is ingress\n */\n#define BPF_FIB_LOOKUP_DIRECT  BIT(0)\n#define BPF_FIB_LOOKUP_OUTPUT  BIT(1)\n\nenum {\n\tBPF_FIB_LKUP_RET_SUCCESS,      /* lookup successful */\n\tBPF_FIB_LKUP_RET_BLACKHOLE,    /* dest is blackholed; can be dropped */\n\tBPF_FIB_LKUP_RET_UNREACHABLE,  /* dest is unreachable; can be dropped */\n\tBPF_FIB_LKUP_RET_PROHIBIT,     /* dest not allowed; can be dropped */\n\tBPF_FIB_LKUP_RET_NOT_FWDED,    /* packet is not forwarded */\n\tBPF_FIB_LKUP_RET_FWD_DISABLED, /* fwding is not enabled on ingress */\n\tBPF_FIB_LKUP_RET_UNSUPP_LWT,   /* fwd requires encapsulation */\n\tBPF_FIB_LKUP_RET_NO_NEIGH,     /* no neighbor entry for nh */\n\tBPF_FIB_LKUP_RET_FRAG_NEEDED,  /* fragmentation required to fwd */\n};\n\nstruct bpf_fib_lookup {\n\t/* input:  network family for lookup (AF_INET, AF_INET6)\n\t * output: network family of egress nexthop\n\t */\n\t__u8\tfamily;\n\n\t/* set if lookup is to consider L4 data - e.g., FIB rules */\n\t__u8\tl4_protocol;\n\t__be16\tsport;\n\t__be16\tdport;\n\n\t/* total length of packet from network header - used for MTU check */\n\t__u16\ttot_len;\n\n\t/* input: L3 device index for lookup\n\t * output: device index from FIB lookup\n\t */\n\t__u32\tifindex;\n\n\tunion {\n\t\t/* inputs to lookup */\n\t\t__u8\ttos;\t\t/* AF_INET  */\n\t\t__be32\tflowinfo;\t/* AF_INET6, flow_label + priority */\n\n\t\t/* output: metric of fib result (IPv4/IPv6 only) */\n\t\t__u32\trt_metric;\n\t};\n\n\tunion {\n\t\t__be32\t\tipv4_src;\n\t\t__u32\t\tipv6_src[4];  /* in6_addr; network order */\n\t};\n\n\t/* input to bpf_fib_lookup, ipv{4,6}_dst is destination address in\n\t * network header. output: bpf_fib_lookup sets to gateway address\n\t * if FIB lookup returns gateway route\n\t */\n\tunion {\n\t\t__be32\t\tipv4_dst;\n\t\t__u32\t\tipv6_dst[4];  /* in6_addr; network order */\n\t};\n\n\t/* output */\n\t__be16\th_vlan_proto;\n\t__be16\th_vlan_TCI;\n\t__u8\tsmac[6];     /* ETH_ALEN */\n\t__u8\tdmac[6];     /* ETH_ALEN */\n};\n\nenum bpf_task_fd_type {\n\tBPF_FD_TYPE_RAW_TRACEPOINT,\t/* tp name */\n\tBPF_FD_TYPE_TRACEPOINT,\t\t/* tp name */\n\tBPF_FD_TYPE_KPROBE,\t\t/* (symbol + offset) or addr */\n\tBPF_FD_TYPE_KRETPROBE,\t\t/* (symbol + offset) or addr */\n\tBPF_FD_TYPE_UPROBE,\t\t/* filename + offset */\n\tBPF_FD_TYPE_URETPROBE,\t\t/* filename + offset */\n};\n\n#endif /* __LINUX_BPF_H__ */\n"
  },
  {
    "path": "linux/bpf_common.h",
    "content": "#ifndef __LINUX_BPF_COMMON_H__\n#define __LINUX_BPF_COMMON_H__\n\n/* Instruction classes */\n#define BPF_CLASS(code) ((code) & 0x07)\n#define\t\tBPF_LD\t\t0x00\n#define\t\tBPF_LDX\t\t0x01\n#define\t\tBPF_ST\t\t0x02\n#define\t\tBPF_STX\t\t0x03\n#define\t\tBPF_ALU\t\t0x04\n#define\t\tBPF_JMP\t\t0x05\n#define\t\tBPF_RET\t\t0x06\n#define\t\tBPF_MISC        0x07\n\n/* ld/ldx fields */\n#define BPF_SIZE(code)  ((code) & 0x18)\n#define\t\tBPF_W\t\t0x00\n#define\t\tBPF_H\t\t0x08\n#define\t\tBPF_B\t\t0x10\n#define BPF_MODE(code)  ((code) & 0xe0)\n#define\t\tBPF_IMM\t\t0x00\n#define\t\tBPF_ABS\t\t0x20\n#define\t\tBPF_IND\t\t0x40\n#define\t\tBPF_MEM\t\t0x60\n#define\t\tBPF_LEN\t\t0x80\n#define\t\tBPF_MSH\t\t0xa0\n\n/* alu/jmp fields */\n#define BPF_OP(code)    ((code) & 0xf0)\n#define\t\tBPF_ADD\t\t0x00\n#define\t\tBPF_SUB\t\t0x10\n#define\t\tBPF_MUL\t\t0x20\n#define\t\tBPF_DIV\t\t0x30\n#define\t\tBPF_OR\t\t0x40\n#define\t\tBPF_AND\t\t0x50\n#define\t\tBPF_LSH\t\t0x60\n#define\t\tBPF_RSH\t\t0x70\n#define\t\tBPF_NEG\t\t0x80\n#define\t\tBPF_MOD\t\t0x90\n#define\t\tBPF_XOR\t\t0xa0\n\n#define\t\tBPF_JA\t\t0x00\n#define\t\tBPF_JEQ\t\t0x10\n#define\t\tBPF_JGT\t\t0x20\n#define\t\tBPF_JGE\t\t0x30\n#define\t\tBPF_JSET        0x40\n#define BPF_SRC(code)   ((code) & 0x08)\n#define\t\tBPF_K\t\t0x00\n#define\t\tBPF_X\t\t0x08\n\n#ifndef BPF_MAXINSNS\n#define BPF_MAXINSNS 4096\n#endif\n\n#endif /* __LINUX_BPF_COMMON_H__ */\n"
  },
  {
    "path": "linux/type_mapper.h",
    "content": "#ifndef __LINUX_TYPE_MAPPER_H__\n#define __LINUX_TYPE_MAPPER_H__\n\n#include <stdint.h>\n\n#define __u64 uint64_t\n#define __u32 uint32_t\n#define __u16 uint16_t\n#define __u8 uint8_t\n\n#define __s64 int64_t\n#define __s32 int32_t\n#define __s16 int16_t\n#define __s8 int8_t\n\n#if !defined(__aligned_u64)\n#define __aligned_u64 uint64_t\n#endif\n\n#define __be64 uint64_t\n#define __be32 uint32_t\n#define __be16 uint16_t\n\n#define __le64 uint64_t\n#define __le32 uint32_t\n#define __le16 uint16_t\n\n#define __sum16 uint16_t\n\n#endif\n\n"
  },
  {
    "path": "patches/0001-network-Add-callback-for-upstream-authorization.patch",
    "content": "From 27e683eb4e7acd3fae4a9bdf746ba8d2ba2c9f95 Mon Sep 17 00:00:00 2001\nFrom: Jarno Rajahalme <jarno@isovalent.com>\nDate: Mon, 5 May 2025 11:15:52 +1000\nSubject: [PATCH 1/7] network: Add callback for upstream authorization\n\nAdd new ReadFilterCallbacks addUpstreamCallback() and\niterateUpstreamCallbacks(). Network filters can add callbacks using\naddUpstreamCallback(), which will then get called after an upstream\nhost has been selected, but before the upstream connection is\nestablished.  If any of the callbacks returns 'false', the connection\nis not established. For HTTP the router will issue a 403 local\nresponse.\n\niterateUpstreamCallbacks() is also added to\nStreamDecoderFilterCallbacks so that the HTTP router filter can invoke\nthe added callbacks before a new connection is established.\n\nThese additions allow network read filters to perform network level\npolicy enforcement based on the selected upstream host.\n\nCallbacks can safely refer to memory held by the filter instance\nadding the callback, as the calls to the callbacks are only ever be\ndone from the tcp_proxy or router filter in the same filter chain.\n\nSigned-off-by: Jarno Rajahalme <jarno@isovalent.com>\n---\n envoy/http/filter.h                           |  8 ++++++\n envoy/network/filter.h                        | 28 +++++++++++++++++++\n envoy/tcp/upstream.h                          |  5 ++++\n source/common/http/async_client_impl.h        |  5 ++++\n source/common/http/conn_manager_impl.h        |  6 ++++\n source/common/http/filter_manager.cc          |  6 ++++\n source/common/http/filter_manager.h           |  8 ++++++\n source/common/network/filter_manager_impl.h   | 21 ++++++++++++++\n source/common/router/router.cc                |  8 ++++++\n source/common/router/upstream_request.h       |  5 ++++\n source/common/tcp_proxy/tcp_proxy.cc          |  7 +++++\n source/common/tcp_proxy/tcp_proxy.h           |  5 ++++\n source/common/tcp_proxy/upstream.cc           |  8 ++++++\n source/common/tcp_proxy/upstream.h            |  2 ++\n .../default_api_listener/api_listener_impl.h  |  3 ++\n 15 files changed, 125 insertions(+)\n\ndiff --git a/envoy/http/filter.h b/envoy/http/filter.h\nindex ff9e6e59e7..05c497c9de 100644\n--- a/envoy/http/filter.h\n+++ b/envoy/http/filter.h\n@@ -837,6 +837,14 @@ public:\n   virtual absl::optional<Upstream::LoadBalancerContext::OverrideHost>\n   upstreamOverrideHost() const PURE;\n \n+  /**\n+   * Invokes all the added network level callbacks before establishing a connection to the\n+   * selected upstream host.\n+   * Returns 'false' if any of the callbacks rejects the connection, 'true' otherwise.\n+   */\n+  virtual bool iterateUpstreamCallbacks(Upstream::HostDescriptionConstSharedPtr,\n+                                        StreamInfo::StreamInfo&) PURE;\n+\n   /**\n    * @return true if the filter should shed load based on the system pressure, typically memory.\n    */\ndiff --git a/envoy/network/filter.h b/envoy/network/filter.h\nindex 48d4909821..a91858a16c 100644\n--- a/envoy/network/filter.h\n+++ b/envoy/network/filter.h\n@@ -148,6 +148,22 @@ public:\n \n using WriteFilterSharedPtr = std::shared_ptr<WriteFilter>;\n \n+/**\n+ * UpstreamCallback can be used to reject upstream host selection made by the TCP proxy filter.\n+ * This callback is passed the Upstream::HostDescriptionConstSharedPtr, and StreamInfo.\n+ *\n+ * The callback is called just after the upstream host has been picked, but before a connection is\n+ * established. Here the callback can reject the selected upstream host and cause the be dropped.\n+\n+ * UpstreamCallback may not be called if the connection is dropped for another reason, such as\n+ * no route, cluster is not found, etc.\n+ *\n+ * Returning 'true' allows the connection to be established. Returning 'false' prevents the\n+ * connection to the selected host from being established.\n+ */\n+using UpstreamCallback = std::function<bool(Upstream::HostDescriptionConstSharedPtr,\n+                                            StreamInfo::StreamInfo&)>;\n+\n /**\n  * Callbacks used by individual read filter instances to communicate with the filter manager.\n  */\n@@ -207,6 +223,18 @@ public:\n    */\n   virtual bool startUpstreamSecureTransport() PURE;\n \n+  /*\n+   * Adds the given callback to be executed later via iterateUpstreamCallbacks().\n+   */\n+  virtual void addUpstreamCallback(const UpstreamCallback& cb) PURE;\n+\n+  /**\n+   * Invokes all the added callbacks before connecting to the selected upstream host.\n+   * Returns 'false' if any of the callbacks rejects the connection, 'true' otherwise.\n+   */\n+  virtual bool iterateUpstreamCallbacks(Upstream::HostDescriptionConstSharedPtr,\n+                                        StreamInfo::StreamInfo&) PURE;\n+\n   /**\n    * Control the filter close status for read filters.\n    *\ndiff --git a/envoy/tcp/upstream.h b/envoy/tcp/upstream.h\nindex fb8facfe63..2f19b5dfa9 100644\n--- a/envoy/tcp/upstream.h\n+++ b/envoy/tcp/upstream.h\n@@ -84,6 +84,11 @@ public:\n    * @param callbacks callbacks to communicate stream failure or creation on.\n    */\n   virtual void newStream(GenericConnectionPoolCallbacks& callbacks) PURE;\n+\n+  /**\n+   * @return Upstream::HostDescriptionConstSharedPtr the host for which connections are pooled.\n+   */\n+  virtual Upstream::HostDescriptionConstSharedPtr host() const PURE;\n };\n \n // An API for the UpstreamRequest to get callbacks from either an HTTP or TCP\ndiff --git a/source/common/http/async_client_impl.h b/source/common/http/async_client_impl.h\nindex a41d370544..982af7ecd1 100644\n--- a/source/common/http/async_client_impl.h\n+++ b/source/common/http/async_client_impl.h\n@@ -285,6 +285,11 @@ private:\n   ResponseHeaderMapOptRef responseHeaders() override { return {}; }\n   ResponseTrailerMapOptRef responseTrailers() override { return {}; }\n \n+  bool iterateUpstreamCallbacks(Upstream::HostDescriptionConstSharedPtr,\n+                            StreamInfo::StreamInfo&) override {\n+    return true;\n+  }\n+\n   // ScopeTrackedObject\n   void dumpState(std::ostream& os, int indent_level) const override {\n     const char* spaces = spacesForLevel(indent_level);\ndiff --git a/source/common/http/conn_manager_impl.h b/source/common/http/conn_manager_impl.h\nindex 5e783b97e1..7f5d20500e 100644\n--- a/source/common/http/conn_manager_impl.h\n+++ b/source/common/http/conn_manager_impl.h\n@@ -330,6 +330,12 @@ private:\n     }\n \n     absl::optional<Router::ConfigConstSharedPtr> routeConfig();\n+\n+    bool iterateUpstreamCallbacks(Upstream::HostDescriptionConstSharedPtr host,\n+          StreamInfo::StreamInfo& stream_info) const override {\n+      return connection_manager_.read_callbacks_->iterateUpstreamCallbacks(host, stream_info);\n+    }\n+\n     void traceRequest();\n \n     // Updates the snapped_route_config_ (by reselecting scoped route configuration), if a scope is\ndiff --git a/source/common/http/filter_manager.cc b/source/common/http/filter_manager.cc\nindex 4e55f0b05e..c1021de7cb 100644\n--- a/source/common/http/filter_manager.cc\n+++ b/source/common/http/filter_manager.cc\n@@ -1995,5 +1995,11 @@ ActiveStreamDecoderFilter::upstreamOverrideHost() const {\n       parent_.upstream_override_host_.second};\n }\n \n+bool ActiveStreamDecoderFilter::iterateUpstreamCallbacks(Upstream::HostDescriptionConstSharedPtr host,\n+                                                         StreamInfo::StreamInfo& stream_info) {\n+  return parent_.filter_manager_callbacks_.iterateUpstreamCallbacks(host, stream_info);\n+\n+}\n+\n } // namespace Http\n } // namespace Envoy\ndiff --git a/source/common/http/filter_manager.h b/source/common/http/filter_manager.h\nindex 5472bf001b..1db1b814f6 100644\n--- a/source/common/http/filter_manager.h\n+++ b/source/common/http/filter_manager.h\n@@ -300,6 +300,8 @@ struct ActiveStreamDecoderFilter : public ActiveStreamFilterBase,\n   void setUpstreamOverrideHost(Upstream::LoadBalancerContext::OverrideHost) override;\n   absl::optional<Upstream::LoadBalancerContext::OverrideHost> upstreamOverrideHost() const override;\n   bool shouldLoadShed() const override;\n+  bool iterateUpstreamCallbacks(Upstream::HostDescriptionConstSharedPtr host,\n+                              StreamInfo::StreamInfo& stream_info) override;\n   void sendGoAwayAndClose(bool graceful = false) override;\n\n   // Each decoder filter instance checks if the request passed to the filter is gRPC\n@@ -583,6 +585,12 @@ public:\n    * This is used for HTTP/1.1 codec.\n    */\n   virtual bool isHalfCloseEnabled() PURE;\n+\n+  /*\n+   * Returns whether connection to the selected upstream host is allowed.\n+   */\n+  virtual bool iterateUpstreamCallbacks(Upstream::HostDescriptionConstSharedPtr,\n+                                        StreamInfo::StreamInfo&) const PURE;\n };\n \n /**\ndiff --git a/source/common/network/filter_manager_impl.h b/source/common/network/filter_manager_impl.h\nindex 6453048610..d4132a33ca 100644\n--- a/source/common/network/filter_manager_impl.h\n+++ b/source/common/network/filter_manager_impl.h\n@@ -156,6 +156,13 @@ private:\n       parent_.host_description_ = host;\n     }\n     bool startUpstreamSecureTransport() override { return parent_.startUpstreamSecureTransport(); }\n+    void addUpstreamCallback(const UpstreamCallback& cb) override {\n+      parent_.addUpstreamCallback(cb);\n+    }\n+    bool iterateUpstreamCallbacks(Upstream::HostDescriptionConstSharedPtr host,\n+                                  StreamInfo::StreamInfo& stream_info) override {\n+      return parent_.iterateUpstreamCallbacks(host, stream_info);\n+    }\n \n     FilterManagerImpl& parent_;\n     ReadFilterSharedPtr filter_;\n@@ -190,6 +197,20 @@ private:\n   FilterStatus onWrite(ActiveWriteFilter* filter, WriteBufferSource& buffer_source);\n   void onResumeWriting(ActiveWriteFilter* filter, WriteBufferSource& buffer_source);\n \n+  void addUpstreamCallback(const UpstreamCallback& cb) {\n+    decoder_filter_upstream_cbs_.emplace_back(cb);\n+  }\n+\n+  bool iterateUpstreamCallbacks(Upstream::HostDescriptionConstSharedPtr host,\n+        StreamInfo::StreamInfo& stream_info) {\n+    bool accept = true;\n+    for (const auto& cb : decoder_filter_upstream_cbs_) {\n+      accept = accept && cb(host, stream_info);\n+    }\n+    return accept;\n+  }\n+\n+  std::vector<UpstreamCallback> decoder_filter_upstream_cbs_{};\n   FilterManagerConnection& connection_;\n   const ConnectionSocket& socket_;\n   Upstream::HostDescriptionConstSharedPtr host_description_;\ndiff --git a/source/common/router/router.cc b/source/common/router/router.cc\nindex 076a5116bd..40fa03786b 100644\n--- a/source/common/router/router.cc\n+++ b/source/common/router/router.cc\n@@ -780,6 +780,14 @@ bool Filter::continueDecodeHeaders(Upstream::ThreadLocalCluster* cluster,\n     return false;\n   }\n \n+  bool accepted = callbacks_->iterateUpstreamCallbacks(host, callbacks_->streamInfo());\n+  if (!accepted) {\n+    callbacks_->streamInfo().setResponseFlag(StreamInfo::CoreResponseFlag::UnauthorizedExternalService);\n+    callbacks_->sendLocalReply(Http::Code::Forbidden, \"Access denied\\r\\n\",\n+                               nullptr, absl::nullopt, absl::string_view());\n+    return false;\n+  }\n+\n   // Handle additional header processing.\n   const Http::HeaderEntry* header_max_stream_duration_entry =\n       headers.EnvoyUpstreamStreamDurationMs();\ndiff --git a/source/common/router/upstream_request.h b/source/common/router/upstream_request.h\nindex 7144b51a9d..fc46921952 100644\n--- a/source/common/router/upstream_request.h\n+++ b/source/common/router/upstream_request.h\n@@ -354,6 +354,11 @@ public:\n   }\n   OptRef<UpstreamStreamFilterCallbacks> upstreamCallbacks() override { return {*this}; }\n \n+  bool iterateUpstreamCallbacks(Upstream::HostDescriptionConstSharedPtr,\n+        StreamInfo::StreamInfo&) const override {\n+    return true;\n+  }\n+\n   // Http::UpstreamStreamFilterCallbacks\n   StreamInfo::StreamInfo& upstreamStreamInfo() override { return upstream_request_.streamInfo(); }\n   OptRef<GenericUpstream> upstream() override {\ndiff --git a/source/common/tcp_proxy/tcp_proxy.cc b/source/common/tcp_proxy/tcp_proxy.cc\nindex eb78400afb..b2d4d109cd 100644\n--- a/source/common/tcp_proxy/tcp_proxy.cc\n+++ b/source/common/tcp_proxy/tcp_proxy.cc\n@@ -773,6 +773,13 @@ bool Filter::maybeTunnel(Upstream::ThreadLocalCluster& cluster) {\n         upstream_decoder_filter_callbacks_, getStreamInfo());\n   }\n   if (generic_conn_pool_) {\n+    bool accepted = read_callbacks_->iterateUpstreamCallbacks(generic_conn_pool_->host(), getStreamInfo());\n+    if (!accepted) {\n+      getStreamInfo().setResponseFlag(StreamInfo::CoreResponseFlag::UnauthorizedExternalService);\n+      onInitFailure(UpstreamFailureReason::UnauthorizedExternalService);\n+      return true;\n+    }\n+\n     connecting_ = true;\n     connect_attempts_++;\n     getStreamInfo().setAttemptCount(connect_attempts_);\ndiff --git a/source/common/tcp_proxy/tcp_proxy.h b/source/common/tcp_proxy/tcp_proxy.h\nindex 0d10513638..3a83ed6eba 100644\n--- a/source/common/tcp_proxy/tcp_proxy.h\n+++ b/source/common/tcp_proxy/tcp_proxy.h\n@@ -608,6 +608,10 @@ public:\n       return absl::nullopt;\n     }\n     bool shouldLoadShed() const override { return false; }\n+    bool iterateUpstreamCallbacks(Upstream::HostDescriptionConstSharedPtr host,\n+                                                     StreamInfo::StreamInfo& stream_info) override {\n+      return parent_->upstream_decoder_filter_callbacks_.iterateUpstreamCallbacks(host, stream_info);\n+    }\n     void restoreContextOnContinue(ScopeTrackedObjectStack& tracked_object_stack) override {\n       tracked_object_stack.add(*this);\n     }\n@@ -651,6 +655,7 @@ protected:\n     NoHealthyUpstream,\n     ResourceLimitExceeded,\n     NoRoute,\n+    UnauthorizedExternalService,\n   };\n \n   // Callbacks for different error and success states during connection establishment\ndiff --git a/source/common/tcp_proxy/upstream.cc b/source/common/tcp_proxy/upstream.cc\nindex 58012be58f..578dc08927 100644\n--- a/source/common/tcp_proxy/upstream.cc\n+++ b/source/common/tcp_proxy/upstream.cc\n@@ -297,6 +297,10 @@ void TcpConnPool::newStream(GenericConnectionPoolCallbacks& callbacks) {\n   }\n }\n \n+Upstream::HostDescriptionConstSharedPtr TcpConnPool::host() const {\n+  return conn_pool_data_.value().host();\n+}\n+\n void TcpConnPool::onPoolFailure(ConnectionPool::PoolFailureReason reason,\n                                 absl::string_view failure_reason,\n                                 Upstream::HostDescriptionConstSharedPtr host) {\n@@ -403,6 +407,10 @@ void HttpConnPool::newStream(GenericConnectionPoolCallbacks& callbacks) {\n   }\n }\n \n+Upstream::HostDescriptionConstSharedPtr HttpConnPool::host() const {\n+  return conn_pool_data_.value().host();\n+}\n+\n void HttpConnPool::onPoolFailure(ConnectionPool::PoolFailureReason reason,\n                                  absl::string_view failure_reason,\n                                  Upstream::HostDescriptionConstSharedPtr host) {\ndiff --git a/source/common/tcp_proxy/upstream.h b/source/common/tcp_proxy/upstream.h\nindex 2fdf1bd373..9f1a0af392 100644\n--- a/source/common/tcp_proxy/upstream.h\n+++ b/source/common/tcp_proxy/upstream.h\n@@ -41,6 +41,7 @@ public:\n \n   // GenericConnPool\n   void newStream(GenericConnectionPoolCallbacks& callbacks) override;\n+  Upstream::HostDescriptionConstSharedPtr host() const override;\n \n   // Tcp::ConnectionPool::Callbacks\n   void onPoolFailure(ConnectionPool::PoolFailureReason reason,\n@@ -98,6 +99,7 @@ public:\n \n   // GenericConnPool\n   void newStream(GenericConnectionPoolCallbacks& callbacks) override;\n+  Upstream::HostDescriptionConstSharedPtr host() const override;\n \n   // Http::ConnectionPool::Callbacks,\n   void onPoolFailure(ConnectionPool::PoolFailureReason reason,\ndiff --git a/source/extensions/api_listeners/default_api_listener/api_listener_impl.h b/source/extensions/api_listeners/default_api_listener/api_listener_impl.h\nindex e6053dd0c2..0eeec9616f 100644\n--- a/source/extensions/api_listeners/default_api_listener/api_listener_impl.h\n+++ b/source/extensions/api_listeners/default_api_listener/api_listener_impl.h\n@@ -81,6 +81,9 @@ protected:\n     }\n     Network::Connection& connection() override { return connection_; }\n     const Network::ConnectionSocket& socket() override { PANIC(\"not implemented\"); }\n+    void addUpstreamCallback(const Network::UpstreamCallback&) override {}\n+    bool iterateUpstreamCallbacks(Upstream::HostDescriptionConstSharedPtr,\n+\t\t\t\t  StreamInfo::StreamInfo&) override { return true; }\n \n     // Synthetic class that acts as a stub for the connection backing the\n     // Network::ReadFilterCallbacks.\n-- \n2.43.0\n\n"
  },
  {
    "path": "patches/0002-listener-add-socket-options.patch",
    "content": "From 99208ff3152522cef2125815450e4bda12fab9ee Mon Sep 17 00:00:00 2001\nFrom: Jarno Rajahalme <jarno@isovalent.com>\nDate: Mon, 14 Aug 2023 10:01:21 +0300\nSubject: [PATCH 2/7] listener: add socket options\n\nThis reverts commit 170c89eb0b2afb7a39d44d0f8dfb77444ffc038f.\n\nSigned-off-by: Jarno Rajahalme <jarno@isovalent.com>\n---\n envoy/server/factory_context.h                  | 8 +++++++-\n source/common/listener_manager/listener_impl.cc | 3 +++\n source/common/listener_manager/listener_impl.h  | 9 +++++++++\n test/mocks/server/factory_context.h             | 1 +\n test/mocks/server/listener_factory_context.h    | 1 +\n 5 files changed, 21 insertions(+), 1 deletion(-)\n\ndiff --git a/envoy/server/factory_context.h b/envoy/server/factory_context.h\nindex ee9fa05618..d6b8c7e097 100644\n--- a/envoy/server/factory_context.h\n+++ b/envoy/server/factory_context.h\n@@ -341,7 +341,13 @@ public:\n  * An implementation of FactoryContext. The life time should cover the lifetime of the filter chains\n  * and connections. It can be used to create ListenerFilterChain.\n  */\n-class ListenerFactoryContext : public virtual FactoryContext {};\n+class ListenerFactoryContext : public virtual FactoryContext {\n+public:\n+  /**\n+   * Store socket options to be set on the listen socket before listening.\n+   */\n+  virtual void addListenSocketOptions(const Network::Socket::OptionsSharedPtr& options) PURE;\n+};\n \n /**\n  * FactoryContext for ProtocolOptionsFactory.\ndiff --git a/source/common/listener_manager/listener_impl.cc b/source/common/listener_manager/listener_impl.cc\nindex 2f8232a7a8..7008d08096 100644\n--- a/source/common/listener_manager/listener_impl.cc\n+++ b/source/common/listener_manager/listener_impl.cc\n@@ -954,6 +954,9 @@ Configuration::ServerFactoryContext& PerListenerFactoryContextImpl::serverFactor\n Stats::Scope& PerListenerFactoryContextImpl::listenerScope() {\n   return listener_factory_context_base_->listenerScope();\n }\n+void PerListenerFactoryContextImpl::addListenSocketOptions(const Network::Socket::OptionsSharedPtr& options) {\n+  listener_impl_.addListenSocketOptions(options);\n+}\n Init::Manager& PerListenerFactoryContextImpl::initManager() { return listener_impl_.initManager(); }\n \n bool ListenerImpl::createNetworkFilterChain(\ndiff --git a/source/common/listener_manager/listener_impl.h b/source/common/listener_manager/listener_impl.h\nindex 746043f3e0..42b19ecdf3 100644\n--- a/source/common/listener_manager/listener_impl.h\n+++ b/source/common/listener_manager/listener_impl.h\n@@ -185,6 +185,8 @@ public:\n \n   Stats::Scope& listenerScope() override;\n \n+  void addListenSocketOptions(const Network::Socket::OptionsSharedPtr& options) override;\n+\n   ListenerFactoryContextBaseImpl& parentFactoryContext() { return *listener_factory_context_base_; }\n   friend class ListenerImpl;\n \n@@ -332,6 +334,13 @@ public:\n     return listener_factory_context_->listener_factory_context_base_->listener_info_;\n   }\n \n+  void addListenSocketOptions(const Network::Socket::OptionsSharedPtr& append_options) {\n+    for (std::vector<Network::Address::InstanceConstSharedPtr>::size_type i = 0;\n+      i < addresses_.size(); i++) {\n+        addListenSocketOptions(listen_socket_options_list_[i], append_options);\n+      }\n+  }\n+\n   void ensureSocketOptions(Network::Socket::OptionsSharedPtr& options) {\n     if (options == nullptr) {\n       options = std::make_shared<std::vector<Network::Socket::OptionConstSharedPtr>>();\ndiff --git a/test/mocks/server/factory_context.h b/test/mocks/server/factory_context.h\nindex 9dec1cb0da..605ccf6c78 100644\n--- a/test/mocks/server/factory_context.h\n+++ b/test/mocks/server/factory_context.h\n@@ -30,6 +30,7 @@ public:\n   MOCK_METHOD(const Network::DrainDecision&, drainDecision, ());\n   MOCK_METHOD(Stats::Scope&, listenerScope, ());\n   MOCK_METHOD(const Network::ListenerInfo&, listenerInfo, (), (const));\n+  MOCK_METHOD(void, addListenSocketOptions, (const Network::Socket::OptionsSharedPtr&));\n \n   testing::NiceMock<MockServerFactoryContext> server_factory_context_;\n   testing::NiceMock<Init::MockManager> init_manager_;\ndiff --git a/test/mocks/server/listener_factory_context.h b/test/mocks/server/listener_factory_context.h\nindex dfdb937433..f78dcb90a5 100644\n--- a/test/mocks/server/listener_factory_context.h\n+++ b/test/mocks/server/listener_factory_context.h\n@@ -21,6 +21,7 @@ public:\n   MockListenerFactoryContext();\n   ~MockListenerFactoryContext() override;\n \n+  MOCK_METHOD(void, addListenSocketOptions, (const Network::Socket::OptionsSharedPtr&));\n   MOCK_METHOD(ServerFactoryContext&, serverFactoryContext, ());\n   MOCK_METHOD(const Network::DrainDecision&, drainDecision, ());\n   MOCK_METHOD(Init::Manager&, initManager, ());\n-- \n2.43.0\n\n"
  },
  {
    "path": "patches/0003-original_dst_cluster-Avoid-multiple-hosts-for-the-sa.patch",
    "content": "From 8c6ca69f1bdbc6697216e1831659da33c95282b9 Mon Sep 17 00:00:00 2001\nFrom: Jarno Rajahalme <jarno@isovalent.com>\nDate: Fri, 24 May 2024 18:27:28 +0200\nSubject: [PATCH 3/7] original_dst_cluster: Avoid multiple hosts for the same\n address\n\nConnection pool containers use HostSharedPtr as map keys, rather than the\naddress of the host. This leads to multiple connections when there are\nmultiple Host instances for the same address. This is breaking use of the\noriginal source address and port for upstream connections since only one\nsuch connection can exist at any one time.\n\nOriginal destination cluster implementation creates such duplicate Host\ninstances when two worker threads are racing to create a Host for the\nsame destination at the same time.\n\nFix this by keeping a separate 'updates_map' where each worker places a\nnewly created Host for the original destination. This map is used to look\nfor the Host is it can not be found from the shared read-only\n'host_map'. Access to 'updates_map' is syncronized so that it can be\nsafely shared by the worker threads. The main threads consolidates the\nupdates from the 'updates_map' to a new instance of the shared, read-only\nhosts map, so that the workers do not need to stall for possibly large\nmap updates.\n\nSigned-off-by: Jarno Rajahalme <jarno@isovalent.com>\n---\n .../original_dst/original_dst_cluster.cc      | 261 +++++++++++-------\n .../original_dst/original_dst_cluster.h       |  47 ++--\n 2 files changed, 192 insertions(+), 116 deletions(-)\n\ndiff --git a/source/extensions/clusters/original_dst/original_dst_cluster.cc b/source/extensions/clusters/original_dst/original_dst_cluster.cc\nindex 2536292562..eb2d9a30ad 100644\n--- a/source/extensions/clusters/original_dst/original_dst_cluster.cc\n+++ b/source/extensions/clusters/original_dst/original_dst_cluster.cc\n@@ -29,6 +29,19 @@ OriginalDstClusterHandle::~OriginalDstClusterHandle() {\n   dispatcher.post([cluster = std::move(cluster)]() mutable { cluster.reset(); });\n }\n \n+namespace {\n+HostConstSharedPtr findHost(const HostUseMap& map, const std::string& address) {\n+  auto it = map.find(address);\n+  if (it != map.cend()) {\n+    HostConstSharedPtr chost = it->second->host_;\n+    ENVOY_LOG_MISC(trace, \"Using existing host {}.\", *chost);\n+    it->second->used_ = true;\n+    return chost;\n+  }\n+  return nullptr;\n+}\n+} // namespace\n+\n HostSelectionResponse OriginalDstCluster::LoadBalancer::chooseHost(LoadBalancerContext* context) {\n   if (context) {\n     // Check if filter state override is present, if yes use it before anything else.\n@@ -59,42 +72,9 @@ HostSelectionResponse OriginalDstCluster::LoadBalancer::chooseHost(LoadBalancerC\n     if (dst_host) {\n       const Network::Address::Instance& dst_addr = *dst_host.get();\n       // Check if a host with the destination address is already in the host set.\n-      auto it = host_map_->find(dst_addr.asString());\n-      if (it != host_map_->end()) {\n-        HostConstSharedPtr host = it->second->host_;\n-        ENVOY_LOG(trace, \"Using existing host {} {}.\", *host, host->address()->asString());\n-        it->second->used_ = true;\n-        return host;\n-      }\n-      // Add a new host\n-      const Network::Address::Ip* dst_ip = dst_addr.ip();\n-      if (dst_ip) {\n-        Network::Address::InstanceConstSharedPtr host_ip_port(\n-            Network::Utility::copyInternetAddressAndPort(*dst_ip));\n-        // Create a host we can use immediately.\n-        auto info = parent_->cluster_->info();\n-        HostSharedPtr host(std::shared_ptr<HostImpl>(THROW_OR_RETURN_VALUE(\n-            HostImpl::create(\n-                info, info->name() + dst_addr.asString(), std::move(host_ip_port), nullptr, nullptr,\n-                1, std::make_shared<envoy::config::core::v3::Locality>(),\n-                envoy::config::endpoint::v3::Endpoint::HealthCheckConfig().default_instance(), 0,\n-                envoy::config::core::v3::UNKNOWN),\n-            std::unique_ptr<HostImpl>)));\n-        ENVOY_LOG(debug, \"Created host {} {}.\", *host, host->address()->asString());\n-\n-        // Tell the cluster about the new host\n-        // lambda cannot capture a member by value.\n-        std::weak_ptr<OriginalDstClusterHandle> post_parent = parent_;\n-        parent_->cluster_->dispatcher_.post([post_parent, host]() mutable {\n-          // The main cluster may have disappeared while this post was queued.\n-          if (std::shared_ptr<OriginalDstClusterHandle> parent = post_parent.lock()) {\n-            parent->cluster_->addHost(host);\n-          }\n-        });\n-        return {host};\n-      } else {\n-        ENVOY_LOG(debug, \"Failed to create host for {}.\", dst_addr.asString());\n-      }\n+      HostConstSharedPtr host = findHost(*host_map_.get(), dst_addr.asString());\n+      HostConstSharedPtr res = host ? host : parent_->cluster_->getHost(dst_addr);\n+      return {res};\n     }\n   }\n   // TODO(ramaraochavali): add a stat and move this log line to debug.\n@@ -198,7 +178,7 @@ OriginalDstCluster::OriginalDstCluster(const envoy::config::cluster::v3::Cluster\n       cleanup_interval_ms_(\n           std::chrono::milliseconds(PROTOBUF_GET_MS_OR_DEFAULT(config, cleanup_interval, 5000))),\n       cleanup_timer_(dispatcher_.createTimer([this]() -> void { cleanup(); })),\n-      host_map_(std::make_shared<HostMultiMap>()) {\n+      host_map_(std::make_shared<HostUseMap>()), updates_map_(std::make_unique<HostUseMap>()) {\n   if (config.has_original_dst_lb_config()) {\n     const auto& lb_config = config.original_dst_lb_config();\n     if (lb_config.use_http_header()) {\n@@ -216,47 +196,146 @@ OriginalDstCluster::OriginalDstCluster(const envoy::config::cluster::v3::Cluster\n   cleanup_timer_->enableTimer(cleanup_interval_ms_);\n }\n \n-void OriginalDstCluster::addHost(HostSharedPtr& host) {\n-  std::string address = host->address()->asString();\n-  HostMultiMapSharedPtr new_host_map = std::make_shared<HostMultiMap>(*getCurrentHostMap());\n-  auto it = new_host_map->find(address);\n-  if (it != new_host_map->end()) {\n-    // If the entry already exists, that means the worker that posted this host\n-    // had a stale host map. Because the host is potentially in that worker's\n-    // connection pools, we save the host in the host map hosts_ list and the\n-    // cluster priority set. Subsequently, the entire hosts_ list and the\n-    // primary host are removed collectively, once no longer in use.\n-    it->second->hosts_.push_back(host);\n-  } else {\n-    // The first worker that creates a host for the address defines the primary\n-    // host structure.\n-    new_host_map->emplace(address, std::make_shared<HostsForAddress>(host));\n-  }\n-  ENVOY_LOG(debug, \"addHost() adding {} {}.\", *host, address);\n-  setHostMap(new_host_map);\n+// getHost returns the host for the address. A new host is created when needed.\n+// Called from the worker threads.\n+// When multiple worker threads call this at the same time the updates of the\n+// updates map are serialized via updates_map_lock_. For any given address, only the\n+// first thread creates a new host for that address, so that at any time there is\n+// only one host for any given address. This is important as HostSharedPtr is used\n+// as a map key in connection pools.\n+// Returns a nullptr if the host cannot be added for the given address.\n+HostConstSharedPtr OriginalDstCluster::getHost(const Network::Address::Instance& dst_addr) {\n+  HostSharedPtr host;\n+  HostConstSharedPtr chost;\n+  auto address = dst_addr.asString();\n+  const Network::Address::Ip* dst_ip = dst_addr.ip();\n+\n+  if (dst_ip == nullptr) {\n+    ENVOY_LOG(debug, \"Cannot create host for non-IP address {}.\", address);\n+    return nullptr;\n+  }\n+\n+  // Scope the lock for reading the host_map_\n+  {\n+    absl::ReaderMutexLock lock(&host_map_lock_);\n+    // Check if a host with the destination address is already in the host map.\n+    // This may have been updated since the loadbalancer was created.\n+    chost = findHost(*host_map_.get(), address);\n+    if (chost) {\n+      return chost;\n+    }\n+\n+    // Not found, check the updates map and add a new entry if needed.\n+    // Note that the read lock is still held on the hosts_map_, so that it is not possible\n+    // for the main thread to move the host from updates_map_ to the hosts_map_ while we wait\n+    // for the lock here.\n+    // Scope the lock for reading the updates_map_\n+    {\n+      absl::ReaderMutexLock updates_lock(&updates_map_lock_);\n+      // Check if a host with the destination address is already in the updates map.\n+      // The main thread may have not had the opportinity to consolidate the maps yet.\n+      chost = findHost(*updates_map_.get(), address);\n+      if (chost) {\n+        return chost;\n+      }\n+    }\n+    // Not found, create a new host, take a writer lock and create a new host,\n+    // Unless another worker does it first.\n+    // Scope the lock for updating the updates_map_\n+    {\n+      absl::WriterMutexLock updates_lock(&updates_map_lock_);\n+      // Check if a host with the destination address is already in the updates map.\n+      // The main thread may have not had the opportinity to consolidate the maps yet.\n+      chost = findHost(*updates_map_.get(), address);\n+      if (chost) {\n+        return chost;\n+      }\n+\n+      // Not found, create a new host\n+      Network::Address::InstanceConstSharedPtr host_ip_port(\n+          Network::Utility::copyInternetAddressAndPort(*dst_ip));\n+      host = std::shared_ptr(THROW_OR_RETURN_VALUE(\n+          HostImpl::create(info(), info()->name() + \":\" + address, std::move(host_ip_port), nullptr,\n+          nullptr, 1, std::make_shared<envoy::config::core::v3::Locality>(),\n+          envoy::config::endpoint::v3::Endpoint::HealthCheckConfig().default_instance(), 0,\n+          envoy::config::core::v3::UNKNOWN), std::unique_ptr<HostImpl>));\n+      ENVOY_LOG(debug, \"Created host {}.\", *host);\n+\n+      // Add the new host\n+      updates_map_->emplace(address, std::make_shared<HostUse>(host));\n+    }\n+  }\n+\n+  // Tell cluster to update hosts.\n+  auto weak_this = weak_from_this();\n+  dispatcher_.post([weak_this]() mutable {\n+    // The main cluster may have disappeared while this post was queued.\n+    if (std::shared_ptr<OriginalDstCluster> cluster = weak_this.lock()) {\n+      cluster->updateHosts();\n+    }\n+  });\n+\n+  return host;\n+}\n+\n+// updateHosts updates the host map and the priotiry sets of the cluster.\n+void OriginalDstCluster::updateHosts() {\n+  ASSERT_IS_MAIN_OR_TEST_THREAD();\n+\n+  // Allocate new maps without keeping locks.\n+  // This is possible since the main thread is the only one updating the host map.\n+  auto new_host_map = std::make_shared<HostUseMap>(*getHostMap());\n+  auto empty_map = std::make_unique<HostUseMap>();\n+  HostVector new_hosts;\n+  new_hosts.reserve(4); // try avoid allocation while holding locks below\n+\n+  // Consolidate updates into the new host map\n+  // Loadbalancers can not add any updates while we keep these locks, so keep this short!\n+  {\n+    absl::WriterMutexLock lock(&host_map_lock_);\n+    absl::WriterMutexLock updates_lock(&updates_map_lock_);\n+\n+    if (updates_map_->empty()) {\n+      return; // nothing to do\n+    }\n+\n+    new_hosts.reserve(updates_map_->size());\n+\n+    for (const auto& [addr, host_use] : *updates_map_) {\n+      new_host_map->emplace(addr, host_use);\n+      new_hosts.emplace_back(host_use->host_);\n+    }\n+\n+    // Make available for load balancers\n+    host_map_ = new_host_map;\n+    updates_map_.swap(empty_map);\n+  }\n \n-  // Given the current config, only EDS clusters support multiple priorities.\n   ASSERT(priority_set_.hostSetsPerPriority().size() == 1);\n   const auto& first_host_set = priority_set_.getOrCreateHostSet(0);\n   HostVectorSharedPtr all_hosts(new HostVector(first_host_set.hosts()));\n-  all_hosts->emplace_back(host);\n+  for (auto host : new_hosts) {\n+    all_hosts->emplace_back(host);\n+  }\n   priority_set_.updateHosts(0,\n                             HostSetImpl::partitionHosts(all_hosts, HostsPerLocalityImpl::empty()),\n-                            {}, {std::move(host)}, {}, absl::nullopt, absl::nullopt);\n+                            {}, {std::move(new_hosts)}, {}, absl::nullopt, absl::nullopt);\n }\n \n void OriginalDstCluster::cleanup() {\n-  HostVectorSharedPtr keeping_hosts(new HostVector);\n-  HostVector to_be_removed;\n-  absl::flat_hash_set<absl::string_view> removed_addresses;\n-  auto host_map = getCurrentHostMap();\n+  ASSERT_IS_MAIN_OR_TEST_THREAD();\n+  const auto* host_map = getHostMap();\n+\n   if (!host_map->empty()) {\n+    HostVectorSharedPtr keeping_hosts = std::make_shared<HostVector>();\n+    HostVector to_be_removed;\n+    absl::flat_hash_set<absl::string_view> removed_addresses;\n+\n     ENVOY_LOG(trace, \"Cleaning up stale original dst hosts.\");\n-    for (const auto& [addr, hosts] : *host_map) {\n+    for (const auto& [addr, host_use] : *host_map) {\n       // Address is kept in the cluster if either of the two things happen:\n-      // 1) a host has been recently selected for the address; 2) none of the\n-      // hosts are currently in any of the connection pools.\n-      // The set of hosts for a single address are treated as a unit.\n+      // 1) a host has been recently selected for the address;\n+      // 2) a host is currently in a connection pool.\n       //\n       // Using the used_ bit is preserved for backwards compatibility and to\n       // add a delay between load balancers choosing a host and grabbing a\n@@ -271,49 +350,41 @@ void OriginalDstCluster::cleanup() {\n       // 3) will not delete h since it takes at least one cleanup_interval for\n       // the host to set used_ bit for h to false.\n       bool keep = false;\n-      if (hosts->used_) {\n+      if (host_use->used_) {\n         keep = true;\n-        hosts->used_ = false; // Mark to be removed during the next round.\n+        host_use->used_ = false; // Mark to be removed during the next round.\n       } else if (Runtime::runtimeFeatureEnabled(\n                      \"envoy.reloadable_features.original_dst_rely_on_idle_timeout\")) {\n-        // Check that all hosts (first, as well as others that may have been added concurrently)\n-        // are not in use by any connection pool.\n-        if (hosts->host_->used()) {\n+        // Check if the host is in use by any connection pool.\n+        if (host_use->host_->used()) {\n           keep = true;\n-        } else {\n-          for (const auto& host : hosts->hosts_) {\n-            if (host->used()) {\n-              keep = true;\n-              break;\n-            }\n-          }\n         }\n       }\n       if (keep) {\n         ENVOY_LOG(trace, \"Keeping active address {}.\", addr);\n-        keeping_hosts->emplace_back(hosts->host_);\n-        if (!hosts->hosts_.empty()) {\n-          keeping_hosts->insert(keeping_hosts->end(), hosts->hosts_.begin(), hosts->hosts_.end());\n-        }\n+        keeping_hosts->emplace_back(host_use->host_);\n       } else {\n         ENVOY_LOG(trace, \"Removing stale address {}.\", addr);\n         removed_addresses.insert(addr);\n-        to_be_removed.emplace_back(hosts->host_);\n-        if (!hosts->hosts_.empty()) {\n-          to_be_removed.insert(to_be_removed.end(), hosts->hosts_.begin(), hosts->hosts_.end());\n-        }\n+        to_be_removed.emplace_back(host_use->host_);\n       }\n     }\n-  }\n-  if (!to_be_removed.empty()) {\n-    HostMultiMapSharedPtr new_host_map = std::make_shared<HostMultiMap>(*host_map);\n-    for (const auto& addr : removed_addresses) {\n-      new_host_map->erase(addr);\n+\n+    if (!to_be_removed.empty()) {\n+      auto new_host_map = std::make_shared<HostUseMap>();\n+      new_host_map->reserve(host_map->size() - removed_addresses.size());\n+      for (const auto& [addr, host_use] : *host_map) {\n+        if (removed_addresses.find(addr) == removed_addresses.end()) {\n+          new_host_map->emplace(addr, host_use);\n+        }\n+      }\n+\n+      setHostMap(new_host_map);\n+\n+      priority_set_.updateHosts(\n+          0, HostSetImpl::partitionHosts(keeping_hosts, HostsPerLocalityImpl::empty()), {}, {},\n+          to_be_removed, false, absl::nullopt);\n     }\n-    setHostMap(new_host_map);\n-    priority_set_.updateHosts(\n-        0, HostSetImpl::partitionHosts(keeping_hosts, HostsPerLocalityImpl::empty()), {}, {},\n-        to_be_removed, false, absl::nullopt);\n   }\n \n   cleanup_timer_->enableTimer(cleanup_interval_ms_);\ndiff --git a/source/extensions/clusters/original_dst/original_dst_cluster.h b/source/extensions/clusters/original_dst/original_dst_cluster.h\nindex 55905560bd..3152af8664 100644\n--- a/source/extensions/clusters/original_dst/original_dst_cluster.h\n+++ b/source/extensions/clusters/original_dst/original_dst_cluster.h\n@@ -22,25 +22,21 @@ namespace Upstream {\n class OriginalDstClusterFactory;\n class OriginalDstClusterTest;\n \n-struct HostsForAddress {\n-  HostsForAddress(HostSharedPtr& host) : host_(host), used_(true) {}\n+// HostUse tracks the recent use of a host to avoid clearing out a host\n+// which is not recorded as used in any connection pool.\n+struct HostUse {\n+  HostUse(HostSharedPtr& host) : host_(host), used_(true) {}\n \n-  // Primary host for the address. This is set by the first worker that posts\n-  // to the main to add a host. The field is read by all workers.\n+  // The host for an address.\n   const HostSharedPtr host_;\n-  // Hosts that are added concurrently with host_ are stored in this list.\n-  // This is populated by the subsequent workers that have not received the\n-  // updated table with set host_. The field is only accessed from the main\n-  // thread.\n-  std::vector<HostSharedPtr> hosts_;\n   // Marks as recently used by load balancers.\n   std::atomic<bool> used_;\n };\n \n-using HostsForAddressSharedPtr = std::shared_ptr<HostsForAddress>;\n-using HostMultiMap = absl::flat_hash_map<std::string, HostsForAddressSharedPtr>;\n-using HostMultiMapSharedPtr = std::shared_ptr<HostMultiMap>;\n-using HostMultiMapConstSharedPtr = std::shared_ptr<const HostMultiMap>;\n+using HostUseSharedPtr = std::shared_ptr<HostUse>;\n+using HostUseMap = absl::flat_hash_map<std::string, HostUseSharedPtr>;\n+using HostUseMapUniquePtr = std::unique_ptr<HostUseMap>;\n+using HostUseMapConstSharedPtr = std::shared_ptr<const HostUseMap>;\n \n class OriginalDstCluster;\n \n@@ -65,7 +61,8 @@ using OriginalDstClusterHandleSharedPtr = std::shared_ptr<OriginalDstClusterHand\n  * cleaned up after they have not seen traffic for a configurable cleanup interval time\n  * (\"cleanup_interval_ms\").\n  */\n-class OriginalDstCluster : public ClusterImplBase {\n+class OriginalDstCluster : public ClusterImplBase,\n+                           public std::enable_shared_from_this<OriginalDstCluster> {\n public:\n   ~OriginalDstCluster() override {\n     ASSERT_IS_MAIN_OR_TEST_THREAD();\n@@ -120,7 +117,7 @@ public:\n     const absl::optional<Http::LowerCaseString>& http_header_name_;\n     const absl::optional<Config::MetadataKey>& metadata_key_;\n     const absl::optional<uint32_t> port_override_;\n-    HostMultiMapConstSharedPtr host_map_;\n+    HostUseMapConstSharedPtr host_map_;\n   };\n \n   const absl::optional<Http::LowerCaseString>& httpHeaderName() { return http_header_name_; }\n@@ -158,17 +155,23 @@ private:\n     const OriginalDstClusterHandleSharedPtr cluster_;\n   };\n \n-  HostMultiMapConstSharedPtr getCurrentHostMap() {\n-    absl::ReaderMutexLock lock(host_map_lock_);\n+  const HostUseMap* getHostMap() {\n+    absl::ReaderMutexLock lock(&host_map_lock_);\n+    return host_map_.get();\n+  }\n+\n+  HostUseMapConstSharedPtr getCurrentHostMap() {\n+    absl::ReaderMutexLock lock(&host_map_lock_);\n     return host_map_;\n   }\n \n-  void setHostMap(const HostMultiMapConstSharedPtr& new_host_map) {\n-    absl::WriterMutexLock lock(host_map_lock_);\n+  void setHostMap(const HostUseMapConstSharedPtr& new_host_map) {\n+    absl::WriterMutexLock lock(&host_map_lock_);\n     host_map_ = new_host_map;\n   }\n \n-  void addHost(HostSharedPtr&);\n+  HostConstSharedPtr getHost(const Network::Address::Instance&);\n+  void updateHosts();\n   void cleanup();\n \n   // ClusterImplBase\n@@ -179,7 +182,9 @@ private:\n   Event::TimerPtr cleanup_timer_;\n \n   absl::Mutex host_map_lock_;\n-  HostMultiMapConstSharedPtr host_map_ ABSL_GUARDED_BY(host_map_lock_);\n+  HostUseMapConstSharedPtr host_map_ ABSL_GUARDED_BY(host_map_lock_);\n+  absl::Mutex updates_map_lock_ ABSL_ACQUIRED_AFTER(host_map_lock_);\n+  HostUseMapUniquePtr updates_map_ ABSL_GUARDED_BY(updates_map_lock_);\n   absl::optional<Http::LowerCaseString> http_header_name_;\n   absl::optional<Config::MetadataKey> metadata_key_;\n   absl::optional<uint32_t> port_override_;\n-- \n2.43.0\n\n"
  },
  {
    "path": "patches/0004-thread_local-reset-slot-in-worker-threads-first.patch",
    "content": "From 7138d8e50ccfce757d080debd90f5f5dcfc57f40 Mon Sep 17 00:00:00 2001\nFrom: Jarno Rajahalme <jarno@isovalent.com>\nDate: Mon, 23 Dec 2024 22:43:15 +0100\nSubject: [PATCH 4/7] thread_local: reset slot in worker threads first\n\nThread local slots refer to their data via shared pointers. Reset the\nshared pointer first in the worker threads, and last in the main thread\nso that the referred object is destructed in the main thread instead of\nsome random worker thread. This prevents xDS stream synchronization bugs\nif the slot happens to refer to an SDS secret.\n\nSigned-off-by: Jarno Rajahalme <jarno@isovalent.com>\n---\n envoy/thread_local/thread_local.h             |  7 +++++\n .../common/thread_local/thread_local_impl.cc  | 26 +++++++++++++++++--\n .../common/thread_local/thread_local_impl.h   |  1 +\n test/mocks/thread_local/mocks.h               |  4 +++\n 4 files changed, 36 insertions(+), 2 deletions(-)\n\ndiff --git a/envoy/thread_local/thread_local.h b/envoy/thread_local/thread_local.h\nindex 13ff7496ff..da982ccea5 100644\n--- a/envoy/thread_local/thread_local.h\n+++ b/envoy/thread_local/thread_local.h\n@@ -248,6 +248,13 @@ public:\n    * @return true if global threading has been shutdown or false if not.\n    */\n   virtual bool isShutdown() const PURE;\n+\n+  /**\n+   * Run 'worker_cb' in all worker threads, and 'main_cb' in the main thread after all worker\n+   * threads have executed.\n+   */\n+  virtual void runOnAllWorkerThreads(std::function<void()> worker_cb, std::function<void()> main_cb) const PURE;\n+\n };\n \n } // namespace ThreadLocal\ndiff --git a/source/common/thread_local/thread_local_impl.cc b/source/common/thread_local/thread_local_impl.cc\nindex 2a49789a09..e57b2fd70d 100644\n--- a/source/common/thread_local/thread_local_impl.cc\n+++ b/source/common/thread_local/thread_local_impl.cc\n@@ -165,7 +165,8 @@ void InstanceImpl::removeSlot(uint32_t slot) {\n              free_slot_indexes_.end(),\n          fmt::format(\"slot index {} already in free slot set!\", slot));\n   free_slot_indexes_.push_back(slot);\n-  runOnAllThreads([slot]() -> void {\n+\n+  auto cb = [slot]() -> void {\n     // This runs on each thread and clears the slot, making it available for a new allocations.\n     // This is safe even if a new allocation comes in, because everything happens with post() and\n     // will be sequenced after this removal. It is also safe if there are callbacks pending on\n@@ -173,7 +174,12 @@ void InstanceImpl::removeSlot(uint32_t slot) {\n     if (slot < thread_local_data_.data_.size()) {\n       thread_local_data_.data_[slot] = nullptr;\n     }\n-  });\n+  };\n+  // 'cb' is called in the main thread after it has been called on all worker threads.\n+  // This makes sure the last shared pointer reference is released in the main thread,\n+  // so that the thread local data is destructed in the main thread instead of some random\n+  // worker thread.\n+  runOnAllWorkerThreads(cb, cb);\n }\n \n void InstanceImpl::runOnAllThreads(std::function<void()> cb) {\n@@ -208,6 +214,22 @@ void InstanceImpl::runOnAllThreads(std::function<void()> cb,\n   }\n }\n \n+void InstanceImpl::runOnAllWorkerThreads(std::function<void()> cb,\n+                                         std::function<void()> worker_threads_complete_cb) const {\n+  ASSERT_IS_MAIN_OR_TEST_THREAD();\n+  ASSERT(!shutdown_);\n+\n+  std::shared_ptr<std::function<void()>> cb_guard(\n+      new std::function<void()>(cb), [this, worker_threads_complete_cb](std::function<void()>* cb) {\n+        main_thread_dispatcher_->post(worker_threads_complete_cb);\n+        delete cb;\n+      });\n+\n+  for (Event::Dispatcher& dispatcher : registered_threads_) {\n+    dispatcher.post([cb_guard]() -> void { (*cb_guard)(); });\n+  }\n+}\n+\n void InstanceImpl::setThreadLocal(uint32_t index, ThreadLocalObjectSharedPtr object) {\n   if (thread_local_data_.data_.size() <= index) {\n     thread_local_data_.data_.resize(index + 1);\ndiff --git a/source/common/thread_local/thread_local_impl.h b/source/common/thread_local/thread_local_impl.h\nindex 719418991e..685457afe5 100644\n--- a/source/common/thread_local/thread_local_impl.h\n+++ b/source/common/thread_local/thread_local_impl.h\n@@ -29,6 +29,7 @@ public:\n   void shutdownThread() override;\n   Event::Dispatcher& dispatcher() override;\n   bool isShutdown() const override { return shutdown_; }\n+  void runOnAllWorkerThreads(std::function<void()> worker_cb, std::function<void()> main_cb) const override;\n \n private:\n   // On destruction returns the slot index to the deferred delete queue (detaches it). This allows\ndiff --git a/test/mocks/thread_local/mocks.h b/test/mocks/thread_local/mocks.h\nindex 09dff23777..88d7cea1a9 100644\n--- a/test/mocks/thread_local/mocks.h\n+++ b/test/mocks/thread_local/mocks.h\n@@ -27,6 +27,10 @@ public:\n   MOCK_METHOD(void, shutdownThread, ());\n   MOCK_METHOD(Event::Dispatcher&, dispatcher, ());\n   bool isShutdown() const override { return shutdown_; }\n+  void runOnAllWorkerThreads(std::function<void()> worker_cb, std::function<void()> main_cb) const override {\n+    worker_cb();\n+    main_cb();\n+  }\n \n   SlotPtr allocateSlotMock() { return SlotPtr{new SlotImpl(*this, current_slot_++)}; }\n   void runOnAllThreads1(std::function<void()> cb) { cb(); }\n-- \n2.43.0\n\n"
  },
  {
    "path": "patches/0005-http-header-expose-attribute.patch",
    "content": "From 4587532cfc962d2a22854bc7c45bad9517708ea0 Mon Sep 17 00:00:00 2001\nFrom: Tam Mach <sayboras@yahoo.com>\nDate: Wed, 19 Mar 2025 21:07:05 +1100\nSubject: [PATCH 5/7] Expose HTTP Header matcher attribute\n\nSigned-off-by: Tam Mach <sayboras@yahoo.com>\n---\n source/common/http/header_utility.h | 28 +++++++++++++++-------------\n 1 file changed, 15 insertions(+), 13 deletions(-)\n\ndiff --git a/source/common/http/header_utility.h b/source/common/http/header_utility.h\nindex 095cb4a191..0577910a35 100644\n--- a/source/common/http/header_utility.h\n+++ b/source/common/http/header_utility.h\n@@ -96,7 +96,6 @@ public:\n       return matchesHeaders(request_headers);\n     };\n \n-  private:\n     const LowerCaseString name_;\n     const bool invert_match_;\n     const bool treat_missing_as_empty_;\n@@ -158,12 +157,13 @@ public:\n       return invert_match_;\n     }\n \n-  protected:\n-    // A matcher specific implementation to match the given header_value.\n-    virtual bool specificMatchesHeaders(absl::string_view header_value) const PURE;\n     const LowerCaseString name_;\n     const bool invert_match_;\n     const bool treat_missing_as_empty_;\n+\n+  protected:\n+    // A matcher specific implementation to match the given header_value.\n+    virtual bool specificMatchesHeaders(absl::string_view header_value) const PURE;\n   };\n \n   // Corresponds to the exact_match from the HeaderMatchSpecifier proto in the RDS API.\n@@ -172,11 +172,12 @@ public:\n     HeaderDataExactMatch(const envoy::config::route::v3::HeaderMatcher& config)\n         : HeaderDataBaseImpl(config), expected_value_(config.exact_match()) {}\n \n+    const std::string expected_value_;\n+\n   private:\n     bool specificMatchesHeaders(absl::string_view header_value) const override {\n       return expected_value_.empty() || header_value == expected_value_;\n     };\n-    const std::string expected_value_;\n   };\n \n   // Corresponds to the safe_regex_match from the HeaderMatchSpecifier proto in the RDS API.\n@@ -191,6 +192,7 @@ public:\n       return std::unique_ptr<HeaderDataRegexMatch>(\n           new HeaderDataRegexMatch(config, std::move(*regex_or_error)));\n     }\n+    const Regex::CompiledMatcherPtr regex_;\n \n   protected:\n     HeaderDataRegexMatch(const envoy::config::route::v3::HeaderMatcher& config,\n@@ -201,7 +203,6 @@ public:\n     bool specificMatchesHeaders(absl::string_view header_value) const override {\n       return regex_->match(header_value);\n     };\n-    const Regex::CompiledMatcherPtr regex_;\n   };\n \n   // Corresponds to the range_match from the HeaderMatchSpecifier proto in the RDS API.\n@@ -211,15 +212,14 @@ public:\n         : HeaderDataBaseImpl(config), range_start_(config.range_match().start()),\n           range_end_(config.range_match().end()) {}\n \n+    const int64_t range_start_;\n+    const int64_t range_end_;\n   private:\n     bool specificMatchesHeaders(absl::string_view header_value) const override {\n       int64_t header_int_value = 0;\n       return absl::SimpleAtoi(header_value, &header_int_value) &&\n              header_int_value >= range_start_ && header_int_value < range_end_;\n     };\n-\n-    const int64_t range_start_;\n-    const int64_t range_end_;\n   };\n \n   // Corresponds to the prefix_match from the HeaderMatchSpecifier proto in the RDS API.\n@@ -228,11 +228,11 @@ public:\n     HeaderDataPrefixMatch(const envoy::config::route::v3::HeaderMatcher& config)\n         : HeaderDataBaseImpl(config), prefix_(config.prefix_match()) {}\n \n+    const std::string prefix_;\n   private:\n     bool specificMatchesHeaders(absl::string_view header_value) const override {\n       return absl::StartsWith(header_value, prefix_);\n     };\n-    const std::string prefix_;\n   };\n \n   // Corresponds to the suffix_match from the HeaderMatchSpecifier proto in the RDS API.\n@@ -241,11 +241,13 @@ public:\n     HeaderDataSuffixMatch(const envoy::config::route::v3::HeaderMatcher& config)\n         : HeaderDataBaseImpl(config), suffix_(config.suffix_match()) {}\n \n+\n+    const std::string suffix_;\n+\n   private:\n     bool specificMatchesHeaders(absl::string_view header_value) const override {\n       return absl::EndsWith(header_value, suffix_);\n     };\n-    const std::string suffix_;\n   };\n \n   // Corresponds to the contains_match from the HeaderMatchSpecifier proto in the RDS API.\n@@ -254,11 +256,11 @@ public:\n     HeaderDataContainsMatch(const envoy::config::route::v3::HeaderMatcher& config)\n         : HeaderDataBaseImpl(config), expected_substr_(config.contains_match()) {}\n \n+    const std::string expected_substr_;\n   private:\n     bool specificMatchesHeaders(absl::string_view header_value) const override {\n       return absl::StrContains(header_value, expected_substr_);\n     };\n-    const std::string expected_substr_;\n   };\n \n   // Corresponds to the string_match from the HeaderMatchSpecifier proto in the RDS API.\n@@ -269,11 +271,11 @@ public:\n         : HeaderDataBaseImpl(config), string_match_(std::make_unique<Matchers::StringMatcherImpl>(\n                                           config.string_match(), factory_context)) {}\n \n+    const Matchers::StringMatcherPtr string_match_;\n   private:\n     bool specificMatchesHeaders(absl::string_view header_value) const override {\n       return string_match_->match(header_value);\n     };\n-    const Matchers::StringMatcherPtr string_match_;\n   };\n \n   using HeaderDataPtr = std::unique_ptr<HeaderMatcher>;\n-- \n2.43.0\n\n"
  },
  {
    "path": "patches/0006-test-integration-Defer-fake-upstream-read-enable-un.patch",
    "content": "diff --git a/test/integration/fake_upstream.cc b/test/integration/fake_upstream.cc\n--- a/test/integration/fake_upstream.cc\n+++ b/test/integration/fake_upstream.cc\n@@ -436,6 +436,16 @@\n       Network::ReadFilterSharedPtr{new ReadFilter(*this)});\n }\n \n+void FakeHttpConnection::initialize() {\n+  FakeConnectionBase::initialize();\n+  if (shared_connection_.connected() && !shared_connection_.connection().readEnabled()) {\n+    // FakeUpstream::consumeConnection() may hand HTTP connections off before the codec/filter\n+    // stack is initialized. Re-enable reads only after initialize() has attached the HTTP read\n+    // filter, or early request bytes can be consumed without ever creating a FakeStream.\n+    shared_connection_.connection().readDisable(false);\n+  }\n+}\n+\n AssertionResult FakeConnectionBase::close(std::chrono::milliseconds timeout) {\n   ENVOY_LOG(trace, \"FakeConnectionBase close\");\n   if (!shared_connection_.connected()) {\n@@ -749,7 +756,8 @@\n   // not lazily create for HTTP/3\n   if (http_type_ == Http::CodecType::HTTP3) {\n     quic_connections_.push_back(std::make_unique<FakeHttpConnection>(\n-        *this, consumeConnection(), http_type_, time_system_, config_.max_request_headers_kb_,\n+        *this, consumeConnection(/*defer_read_enable=*/true), http_type_, time_system_,\n+        config_.max_request_headers_kb_,\n         config_.max_request_headers_count_, config_.headers_with_underscores_action_));\n     quic_connections_.back()->initialize();\n   }\n@@ -820,7 +828,8 @@\n   return runOnDispatcherThreadAndWait([&]() {\n     absl::MutexLock lock(lock_);\n     connection = std::make_unique<FakeHttpConnection>(\n-        *this, consumeConnection(), http_type_, time_system_, config_.max_request_headers_kb_,\n+        *this, consumeConnection(/*defer_read_enable=*/true), http_type_, time_system_,\n+        config_.max_request_headers_kb_,\n         config_.max_request_headers_count_, config_.headers_with_underscores_action_);\n     connection->initialize();\n     return AssertionSuccess();\n@@ -857,7 +866,8 @@\n       EXPECT_TRUE(upstream.runOnDispatcherThreadAndWait([&]() {\n         absl::MutexLock lock(upstream.lock_);\n         connection = std::make_unique<FakeHttpConnection>(\n-            upstream, upstream.consumeConnection(), upstream.http_type_, upstream.timeSystem(),\n+            upstream, upstream.consumeConnection(/*defer_read_enable=*/true),\n+            upstream.http_type_, upstream.timeSystem(),\n             Http::DEFAULT_MAX_REQUEST_HEADERS_KB, Http::DEFAULT_MAX_HEADERS_COUNT,\n             envoy::config::core::v3::HttpProtocolOptions::ALLOW);\n         connection->initialize();\n@@ -920,7 +930,7 @@\n   raw_connection.release();\n }\n \n-SharedConnectionWrapper& FakeUpstream::consumeConnection() {\n+SharedConnectionWrapper& FakeUpstream::consumeConnection(bool defer_read_enable) {\n   ASSERT(!new_connections_.empty());\n   auto* const connection_wrapper = new_connections_.front().get();\n   // Skip the thread safety check if the network connection has already been freed since there's no\n@@ -930,10 +940,11 @@\n   connection_wrapper->moveBetweenLists(new_connections_, consumed_connections_);\n   if (read_disable_on_new_connection_ && connection_wrapper->connected() &&\n       http_type_ != Http::CodecType::HTTP3 && !disable_and_do_not_enable_) {\n-    // Re-enable read and early close detection.\n     auto& connection = connection_wrapper->connection();\n     connection.detectEarlyCloseWhenReadDisabled(true);\n-    connection.readDisable(false);\n+    if (!defer_read_enable) {\n+      connection.readDisable(false);\n+    }\n   }\n   return *connection_wrapper;\n }\ndiff --git a/test/integration/fake_upstream.h b/test/integration/fake_upstream.h\n--- a/test/integration/fake_upstream.h\n+++ b/test/integration/fake_upstream.h\n@@ -547,6 +547,8 @@\n                      envoy::config::core::v3::HttpProtocolOptions::HeadersWithUnderscoresAction\n                          headers_with_underscores_action);\n \n+  void initialize() override;\n+\n   ABSL_MUST_USE_RESULT\n   testing::AssertionResult\n   waitForNewStream(Event::Dispatcher& client_dispatcher, FakeStreamPtr& stream,\n@@ -998,7 +1000,8 @@\n   };\n \n   void threadRoutine();\n-  SharedConnectionWrapper& consumeConnection() ABSL_EXCLUSIVE_LOCKS_REQUIRED(lock_);\n+  SharedConnectionWrapper& consumeConnection(bool defer_read_enable = false)\n+      ABSL_EXCLUSIVE_LOCKS_REQUIRED(lock_);\n   Network::FilterStatus onRecvDatagram(Network::UdpRecvData& data);\n   AssertionResult\n   runOnDispatcherThreadAndWait(std::function<AssertionResult()> cb,\n"
  },
  {
    "path": "patches/0008-repo-Make-yq-dependency-optional-for-CI-config-parsi.patch",
    "content": "From af2053dc1e3892a9f28d6eebf7f907c3d83ce536 Mon Sep 17 00:00:00 2001\nFrom: Tam Mach <sayboras@yahoo.com>\nDate: Sat, 14 Mar 2026 21:00:53 +1100\nSubject: [PATCH] repo: Make yq dependency optional for CI config parsing\n\nWhen yq is unavailable (e.g. in WORKSPACE mode due to aspect_bazel_lib\nhub repo symlink issues), fall back to placeholder container image\nvalues. This only affects RBE container references which are not needed\nfor local or Docker-based builds.\n\nSigned-off-by: Tam Mach <sayboras@yahoo.com>\n---\n bazel/repo.bzl | 38 +++++++++++++++++++++++++-------------\n 1 file changed, 25 insertions(+), 13 deletions(-)\n\ndiff --git a/bazel/repo.bzl b/bazel/repo.bzl\nindex 561c99b71c..a96fcd3757 100644\n--- a/bazel/repo.bzl\n+++ b/bazel/repo.bzl\n@@ -66,24 +66,36 @@ def _envoy_repo_impl(repository_ctx):\n     \"\"\"\n \n     # parse container information for use in RBE\n+    # Try to use yq, fall back to placeholder values if unavailable\n+    # (yq may not resolve in WORKSPACE mode due to aspect_bazel_lib hub repo symlink issues)\n     json_result = repository_ctx.execute([\n         repository_ctx.path(repository_ctx.attr.yq),\n         repository_ctx.path(repository_ctx.attr.envoy_ci_config),\n         \"-ojson\",\n     ])\n-    if json_result.return_code != 0:\n-        fail(\"yq failed: {}\".format(json_result.stderr))\n-    repository_ctx.file(\"ci-config.json\", json_result.stdout)\n-    config_data = json.decode(repository_ctx.read(\"ci-config.json\"))\n-    repository_ctx.file(\"containers.bzl\", CONTAINERS.format(\n-        repo = config_data[\"build-image\"][\"repo\"],\n-        repo_gcr = config_data[\"build-image\"][\"repo-gcr\"],\n-        sha = config_data[\"build-image\"][\"sha\"],\n-        sha_gcc = config_data[\"build-image\"][\"sha-gcc\"],\n-        sha_mobile = config_data[\"build-image\"][\"sha-mobile\"],\n-        sha_worker = config_data[\"build-image\"][\"sha-worker\"],\n-        tag = config_data[\"build-image\"][\"tag\"],\n-    ))\n+    if json_result.return_code == 0:\n+        repository_ctx.file(\"ci-config.json\", json_result.stdout)\n+        config_data = json.decode(repository_ctx.read(\"ci-config.json\"))\n+        repository_ctx.file(\"containers.bzl\", CONTAINERS.format(\n+            repo = config_data[\"build-image\"][\"repo\"],\n+            repo_gcr = config_data[\"build-image\"][\"repo-gcr\"],\n+            sha = config_data[\"build-image\"][\"sha\"],\n+            sha_gcc = config_data[\"build-image\"][\"sha-gcc\"],\n+            sha_mobile = config_data[\"build-image\"][\"sha-mobile\"],\n+            sha_worker = config_data[\"build-image\"][\"sha-worker\"],\n+            tag = config_data[\"build-image\"][\"tag\"],\n+        ))\n+    else:\n+        # yq unavailable - use placeholder values (RBE container refs won't work)\n+        repository_ctx.file(\"containers.bzl\", CONTAINERS.format(\n+            repo = \"envoyproxy/envoy-build-ubuntu\",\n+            repo_gcr = \"envoyproxy/envoy-build-ubuntu\",\n+            sha = \"0\" * 64,\n+            sha_gcc = \"0\" * 64,\n+            sha_mobile = \"0\" * 64,\n+            sha_worker = \"0\" * 64,\n+            tag = \"unknown\",\n+        ))\n     repo_version_path = repository_ctx.path(repository_ctx.attr.envoy_version)\n     api_version_path = repository_ctx.path(repository_ctx.attr.envoy_api_version)\n     version = repository_ctx.read(repo_version_path).strip()\n-- \n2.43.0\n\n"
  },
  {
    "path": "patches/BUILD",
    "content": "licenses([\"notice\"])  # Apache 2\n"
  },
  {
    "path": "pkg/policy/api/kafka/doc.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\n// +k8s:openapi-gen=true\n// +deepequal-gen=package\n\n// Package kafka defines the Kafka API of the Cilium network policy interface\n// +groupName=policy\npackage kafka\n"
  },
  {
    "path": "pkg/policy/api/kafka/kafka.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage kafka\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// PortRule is a list of Kafka protocol constraints. All fields are\n// optional, if all fields are empty or missing, the rule will match all\n// Kafka messages.\ntype PortRule struct {\n\t// Role is a case-insensitive string and describes a group of API keys\n\t// necessary to perform certain higher-level Kafka operations such as \"produce\"\n\t// or \"consume\". A Role automatically expands into all APIKeys required\n\t// to perform the specified higher-level operation.\n\t//\n\t// The following values are supported:\n\t//  - \"produce\": Allow producing to the topics specified in the rule\n\t//  - \"consume\": Allow consuming from the topics specified in the rule\n\t//\n\t// This field is incompatible with the APIKey field, i.e APIKey and Role\n\t// cannot both be specified in the same rule.\n\t//\n\t// If omitted or empty, and if APIKey is not specified, then all keys are\n\t// allowed.\n\t//\n\t// +kubebuilder:validation:Enum=produce;consume\n\t// +kubebuilder:validation:Optional\n\tRole string `json:\"role,omitempty\"`\n\n\t// APIKey is a case-insensitive string matched against the key of a\n\t// request, e.g. \"produce\", \"fetch\", \"createtopic\", \"deletetopic\", et al\n\t// Reference: https://kafka.apache.org/protocol#protocol_api_keys\n\t//\n\t// If omitted or empty, and if Role is not specified, then all keys are allowed.\n\t//\n\t// +kubebuilder:validation:Optional\n\tAPIKey string `json:\"apiKey,omitempty\"`\n\n\t// APIVersion is the version matched against the api version of the\n\t// Kafka message. If set, it has to be a string representing a positive\n\t// integer.\n\t//\n\t// If omitted or empty, all versions are allowed.\n\t//\n\t// +kubebuilder:validation:Optional\n\tAPIVersion string `json:\"apiVersion,omitempty\"`\n\n\t// ClientID is the client identifier as provided in the request.\n\t//\n\t// From Kafka protocol documentation:\n\t// This is a user supplied identifier for the client application. The\n\t// user can use any identifier they like and it will be used when\n\t// logging errors, monitoring aggregates, etc. For example, one might\n\t// want to monitor not just the requests per second overall, but the\n\t// number coming from each client application (each of which could\n\t// reside on multiple servers). This id acts as a logical grouping\n\t// across all requests from a particular client.\n\t//\n\t// If omitted or empty, all client identifiers are allowed.\n\t//\n\t// +kubebuilder:validation:Optional\n\tClientID string `json:\"clientID,omitempty\"`\n\n\t// Topic is the topic name contained in the message. If a Kafka request\n\t// contains multiple topics, then all topics must be allowed or the\n\t// message will be rejected.\n\t//\n\t// This constraint is ignored if the matched request message type\n\t// doesn't contain any topic. Maximum size of Topic can be 249\n\t// characters as per recent Kafka spec and allowed characters are\n\t// a-z, A-Z, 0-9, -, . and _.\n\t//\n\t// Older Kafka versions had longer topic lengths of 255, but in Kafka 0.10\n\t// version the length was changed from 255 to 249. For compatibility\n\t// reasons we are using 255.\n\t//\n\t// If omitted or empty, all topics are allowed.\n\t//\n\t// +kubebuilder:validation:MaxLength=255\n\t// +kubebuilder:validation:Optional\n\tTopic string `json:\"topic,omitempty\"`\n}\n\n// List of Kafka apiKeys which have a topic in their\n// request\nconst (\n\tProduceKey              = 0\n\tFetchKey                = 1\n\tOffsetsKey              = 2\n\tMetadataKey             = 3\n\tLeaderAndIsr            = 4\n\tStopReplica             = 5\n\tUpdateMetadata          = 6\n\tOffsetCommitKey         = 8\n\tOffsetFetchKey          = 9\n\tFindCoordinatorKey      = 10\n\tJoinGroupKey            = 11\n\tCreateTopicsKey         = 19\n\tDeleteTopicsKey         = 20\n\tDeleteRecordsKey        = 21\n\tOffsetForLeaderEpochKey = 23\n\tAddPartitionsToTxnKey   = 24\n\tWriteTxnMarkersKey      = 27\n\tTxnOffsetCommitKey      = 28\n\tAlterReplicaLogDirsKey  = 34\n\tDescribeLogDirsKey      = 35\n\tCreatePartitionsKey     = 37\n)\n\n// List of Kafka apiKey which are not associated with\n// any topic\nconst (\n\tHeartbeatKey   = 12\n\tLeaveGroupKey  = 13\n\tSyncgroupKey   = 14\n\tAPIVersionsKey = 18\n)\n\n// List of Kafka Roles\nconst (\n\tProduceRole = \"produce\"\n\tConsumeRole = \"consume\"\n)\n\n// APIKeyMap is the map of all allowed kafka API keys\n// with the key values.\n// Reference: https://kafka.apache.org/protocol#protocol_api_keys\nvar APIKeyMap = map[string]int16{\n\t\"produce\":              0,  /* Produce */\n\t\"fetch\":                1,  /* Fetch */\n\t\"offsets\":              2,  /* Offsets */\n\t\"metadata\":             3,  /* Metadata */\n\t\"leaderandisr\":         4,  /* LeaderAndIsr */\n\t\"stopreplica\":          5,  /* StopReplica */\n\t\"updatemetadata\":       6,  /* UpdateMetadata */\n\t\"controlledshutdown\":   7,  /* ControlledShutdown */\n\t\"offsetcommit\":         8,  /* OffsetCommit */\n\t\"offsetfetch\":          9,  /* OffsetFetch */\n\t\"findcoordinator\":      10, /* FindCoordinator */\n\t\"joingroup\":            11, /* JoinGroup */\n\t\"heartbeat\":            12, /* Heartbeat */\n\t\"leavegroup\":           13, /* LeaveGroup */\n\t\"syncgroup\":            14, /* SyncGroup */\n\t\"describegroups\":       15, /* DescribeGroups */\n\t\"listgroups\":           16, /* ListGroups */\n\t\"saslhandshake\":        17, /* SaslHandshake */\n\t\"apiversions\":          18, /* ApiVersions */\n\t\"createtopics\":         19, /* CreateTopics */\n\t\"deletetopics\":         20, /* DeleteTopics */\n\t\"deleterecords\":        21, /* DeleteRecords */\n\t\"initproducerid\":       22, /* InitProducerId */\n\t\"offsetforleaderepoch\": 23, /* OffsetForLeaderEpoch */\n\t\"addpartitionstotxn\":   24, /* AddPartitionsToTxn */\n\t\"addoffsetstotxn\":      25, /* AddOffsetsToTxn */\n\t\"endtxn\":               26, /* EndTxn */\n\t\"writetxnmarkers\":      27, /* WriteTxnMarkers */\n\t\"txnoffsetcommit\":      28, /* TxnOffsetCommit */\n\t\"describeacls\":         29, /* DescribeAcls */\n\t\"createacls\":           30, /* CreateAcls */\n\t\"deleteacls\":           31, /* DeleteAcls */\n\t\"describeconfigs\":      32, /* DescribeConfigs */\n\t\"alterconfigs\":         33, /* AlterConfigs */\n}\n\n// ReverseApiKeyMap is the map of all allowed kafka API keys\n// with the key values.\n// Reference: https://kafka.apache.org/protocol#protocol_api_keys\nvar ReverseAPIKeyMap = map[int16]string{\n\t0:  \"produce\",              /* Produce */\n\t1:  \"fetch\",                /* Fetch */\n\t2:  \"offsets\",              /* Offsets */\n\t3:  \"metadata\",             /* Metadata */\n\t4:  \"leaderandisr\",         /* LeaderAndIsr */\n\t5:  \"stopreplica\",          /* StopReplica */\n\t6:  \"updatemetadata\",       /* UpdateMetadata */\n\t7:  \"controlledshutdown\",   /* ControlledShutdown */\n\t8:  \"offsetcommit\",         /* OffsetCommit */\n\t9:  \"offsetfetch\",          /* OffsetFetch */\n\t10: \"findcoordinator\",      /* FindCoordinator */\n\t11: \"joingroup\",            /* JoinGroup */\n\t12: \"heartbeat\",            /* Heartbeat */\n\t13: \"leavegroup\",           /* LeaveGroup */\n\t14: \"syncgroup\",            /* SyncGroup */\n\t15: \"describegroups\",       /* DescribeGroups */\n\t16: \"listgroups\",           /* ListGroups */\n\t17: \"saslhandshake\",        /* SaslHandshake */\n\t18: \"apiversions\",          /* ApiVersions */\n\t19: \"createtopics\",         /* CreateTopics */\n\t20: \"deletetopics\",         /* DeleteTopics */\n\t21: \"deleterecords\",        /* DeleteRecords */\n\t22: \"initproducerid\",       /* InitProducerId */\n\t23: \"offsetforleaderepoch\", /* OffsetForLeaderEpoch */\n\t24: \"addpartitionstotxn\",   /* AddPartitionsToTxn */\n\t25: \"addoffsetstotxn\",      /* AddOffsetsToTxn */\n\t26: \"endtxn\",               /* EndTxn */\n\t27: \"writetxnmarkers\",      /* WriteTxnMarkers */\n\t28: \"txnoffsetcommit\",      /* TxnOffsetCommit */\n\t29: \"describeacls\",         /* DescribeAcls */\n\t30: \"createacls\",           /* CreateAcls */\n\t31: \"deleteacls\",           /* DeleteAcls */\n\t32: \"describeconfigs\",      /* DescribeConfigs */\n\t33: \"alterconfigs\",         /* AlterConfigs */\n}\n\nfunc ApiKeyToString(apiKey int16) string {\n\tif key, ok := ReverseAPIKeyMap[apiKey]; ok {\n\t\treturn key\n\t}\n\treturn fmt.Sprintf(\"%d\", apiKey)\n}\n\n// MaxTopicLen is the maximum character len of a topic.\n// Older Kafka versions had longer topic lengths of 255, in Kafka 0.10 version\n// the length was changed from 255 to 249. For compatibility reasons we are\n// using 255\nconst (\n\tMaxTopicLen = 255\n)\n\n// TopicValidChar is a one-time regex generation of all allowed characters\n// in kafka topic name.\nvar TopicValidChar = regexp.MustCompile(`^[a-zA-Z0-9\\\\._\\\\-]+$`)\n\n// Sanitize sanitizes Kafka rules\n// TODO we need to add support to check\n// wildcard and prefix/suffix later on.\nfunc (kr *PortRule) Sanitize() error {\n\tif (len(kr.APIKey) > 0) && (len(kr.Role) > 0) {\n\t\treturn fmt.Errorf(\"cannot set both Role %q and APIKey %q together\", kr.Role, kr.APIKey)\n\t}\n\n\tif len(kr.APIKey) > 0 {\n\t\tif _, ok := APIKeyMap[strings.ToLower(kr.APIKey)]; !ok {\n\t\t\treturn fmt.Errorf(\"invalid Kafka APIKey %q\", kr.APIKey)\n\t\t}\n\t}\n\n\tif len(kr.Role) > 0 {\n\t\tswitch strings.ToLower(kr.Role) {\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"invalid Kafka Role %q\", kr.Role)\n\t\tcase ProduceRole:\n\t\tcase ConsumeRole:\n\t\t}\n\t}\n\n\tif len(kr.APIVersion) > 0 {\n\t\tn, err := strconv.ParseInt(kr.APIVersion, 10, 16)\n\t\tif err != nil || n < 0 || n > math.MaxInt16 {\n\t\t\treturn fmt.Errorf(\"invalid Kafka APIVersion %q\", kr.APIVersion)\n\t\t}\n\t}\n\n\tif len(kr.Topic) > 0 {\n\t\tif len(kr.Topic) > MaxTopicLen {\n\t\t\treturn fmt.Errorf(\"kafka topic exceeds maximum len of %d\", MaxTopicLen)\n\t\t}\n\t\tif TopicValidChar.MatchString(kr.Topic) == false {\n\t\t\treturn fmt.Errorf(\"invalid Kafka Topic name %q\", kr.Topic)\n\t\t}\n\t}\n\treturn nil\n}\n\n// GetAPIVersion() returns the numeric API version for the PortRule\nfunc (kr *PortRule) GetAPIVersion() int32 {\n\tif kr.APIVersion != \"\" {\n\t\tn, err := strconv.ParseInt(kr.APIVersion, 10, 16)\n\t\tif err != nil || n < 0 || n > math.MaxInt16 {\n\t\t\tpanic(fmt.Sprintf(\"Unsanitized Kafka PortRule: %v\", kr))\n\t\t}\n\t\treturn int32(n)\n\t}\n\treturn -1 // any version is allowed\n}\n\n// GetAPIKeys() returns a slice of numeric apikeys for the PortRule\nfunc (kr *PortRule) GetAPIKeys() []int32 {\n\t// Expand the kr.apiKeyInt array based on the Role.\n\t// For produce role, we need to add mandatory apiKeys produce, metadata and\n\t// apiversions. While for consume, we need to add mandatory apiKeys like\n\t// fetch, offsets, offsetcommit, offsetfetch, apiversions, metadata,\n\t// findcoordinator, joingroup, heartbeat,\n\t// leavegroup and syncgroup.\n\tswitch strings.ToLower(kr.Role) {\n\tcase ProduceRole:\n\t\treturn []int32{int32(ProduceKey), int32(MetadataKey), int32(APIVersionsKey)}\n\tcase ConsumeRole:\n\t\treturn []int32{int32(FetchKey), int32(OffsetsKey), int32(MetadataKey),\n\t\t\tint32(OffsetCommitKey), int32(OffsetFetchKey), int32(FindCoordinatorKey),\n\t\t\tint32(JoinGroupKey), int32(HeartbeatKey), int32(LeaveGroupKey), int32(SyncgroupKey), int32(APIVersionsKey)}\n\tdefault:\n\t\tif kr.APIKey != \"\" {\n\t\t\tif apiKey, ok := APIKeyMap[strings.ToLower(kr.APIKey)]; ok {\n\t\t\t\treturn []int32{int32(apiKey)}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Exists returns true if the Kafka rule already exists in the list of rules\nfunc (k *PortRule) Exists(rules []PortRule) bool {\n\tfor _, existingRule := range rules {\n\t\tif *k == existingRule {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "pkg/policy/api/kafka/zz_generated.deepequal.go",
    "content": "//go:build !ignore_autogenerated\n// +build !ignore_autogenerated\n\n// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\n// Code generated by deepequal-gen. DO NOT EDIT.\n\npackage kafka\n\n// DeepEqual is an autogenerated deepequal function, deeply comparing the\n// receiver with other. in must be non-nil.\nfunc (in *PortRule) DeepEqual(other *PortRule) bool {\n\tif other == nil {\n\t\treturn false\n\t}\n\n\tif in.Role != other.Role {\n\t\treturn false\n\t}\n\tif in.APIKey != other.APIKey {\n\t\treturn false\n\t}\n\tif in.APIVersion != other.APIVersion {\n\t\treturn false\n\t}\n\tif in.ClientID != other.ClientID {\n\t\treturn false\n\t}\n\tif in.Topic != other.Topic {\n\t\treturn false\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "proxylib/BUILD",
    "content": "licenses([\"notice\"])  # Apache 2\n\nexports_files([\n    \"libcilium.h\",\n    \"types.h\",\n    \"libcilium.so\",\n])\n"
  },
  {
    "path": "proxylib/Makefile",
    "content": "# Copyright Authors of Cilium\n# SPDX-License-Identifier: Apache-2.0\n\ninclude ../Makefile.defs\n\n# Support CGO cross-compiling for amd64 and arm64 targets\nNATIVE_ARCH = $(shell GOARCH= $(GO) env GOARCH)\nCGO_CC =\nCROSS_ARCH =\nifneq ($(GOARCH),$(NATIVE_ARCH))\n    CROSS_ARCH = $(GOARCH)\nendif\nifeq ($(CROSS_ARCH),arm64)\n    CGO_CC = CC=aarch64-linux-gnu-gcc\nelse ifeq ($(CROSS_ARCH),amd64)\n    CGO_CC = CC=x86_64-linux-gnu-gcc\nendif\nGO_BUILD_WITH_CGO = CGO_ENABLED=1 $(CGO_CC) $(GO) build\n\nEXTRA_GO_BUILD_LDFLAGS = -extldflags -Wl,-soname,libcilium.so\n\nTARGET := libcilium.so\n\n.PHONY: all $(TARGET) clean header libcilium.h test\n\nall: $(TARGET)\n\n$(TARGET):\n\t$(QUIET)$(GO_BUILD_WITH_CGO) -ldflags '$(EXTRA_GO_BUILD_LDFLAGS)' -o $@ -buildmode=c-shared\n\nclean:\n\t-$(QUIET)rm -f $(TARGET)\n\t$(QUIET)$(GO_CLEAN)\n\nheader: libcilium.h\nlibcilium.h: proxylib.go\n\t$(GO) tool cgo -exportheader libcilium.h proxylib.go\n\ntest:\n\t$(GO) test -mod=vendor -cover ./...\n"
  },
  {
    "path": "proxylib/accesslog/client.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage accesslog\n\nimport (\n\t\"net\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/proto\"\n\t\"github.com/sirupsen/logrus\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n\t\"github.com/cilium/proxy/proxylib/proxylib\"\n)\n\ntype Client struct {\n\tconnected uint32 // Accessed atomically without locking\n\tpath      string\n\tmutex     sync.Mutex                   // Used to protect opening the connection\n\tconn      atomic.Pointer[net.UnixConn] // Read atomically without locking\n}\n\nfunc (cl *Client) connect() *net.UnixConn {\n\tif cl.path == \"\" {\n\t\treturn nil\n\t}\n\n\tif atomic.LoadUint32(&cl.connected) > 0 {\n\t\t// Guaranteed to be non-nil\n\t\treturn cl.conn.Load()\n\t}\n\n\tcl.mutex.Lock()\n\tdefer cl.mutex.Unlock()\n\n\tconn := cl.conn.Load()\n\n\t// Did someone else connect while we were contending on the lock?\n\t// cl.connected may be written to by others concurrently\n\tif atomic.LoadUint32(&cl.connected) > 0 {\n\t\treturn conn\n\t}\n\n\tif conn != nil {\n\t\tconn.Close() // not setting conn to nil!\n\t}\n\tlogrus.Debugf(\"Accesslog: Connecting to Cilium access log socket: %s\", cl.path)\n\tconn, err := net.DialUnix(\"unixpacket\", nil, &net.UnixAddr{Name: cl.path, Net: \"unixpacket\"})\n\tif err != nil {\n\t\tlogrus.WithError(err).Error(\"Accesslog: DialUnix() failed\")\n\t\treturn nil\n\t}\n\n\tcl.conn.Store(conn)\n\n\t// Always have a non-nil 'cl.conn' after 'cl.connected' is set for the first time!\n\tatomic.StoreUint32(&cl.connected, 1)\n\treturn conn\n}\n\nfunc (cl *Client) Log(pblog *cilium.LogEntry) {\n\tif conn := cl.connect(); conn != nil {\n\t\t// Encode\n\t\tlogmsg, err := proto.Marshal(pblog)\n\t\tif err != nil {\n\t\t\tlogrus.WithError(err).Error(\"Accesslog: Protobuf marshaling error\")\n\t\t\treturn\n\t\t}\n\n\t\t// Write\n\t\t_, err = conn.Write(logmsg)\n\t\tif err != nil {\n\t\t\tlogrus.WithError(err).Error(\"Accesslog: Write() failed\")\n\t\t\tatomic.StoreUint32(&cl.connected, 0) // Mark connection as broken\n\t\t}\n\t} else {\n\t\tlogrus.Debugf(\"Accesslog: No connection, cannot send: %s\", pblog.String())\n\t}\n}\n\nfunc (c *Client) Path() string {\n\treturn c.path\n}\n\nfunc NewClient(accessLogPath string) proxylib.AccessLogger {\n\tclient := &Client{\n\t\tpath: accessLogPath,\n\t}\n\tclient.connect()\n\treturn client\n}\n\nfunc (cl *Client) Close() {\n\tconn := cl.conn.Load()\n\tif conn != nil {\n\t\tconn.Close()\n\t}\n}\n"
  },
  {
    "path": "proxylib/cassandra/cassandraparser.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage cassandra\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n\t. \"github.com/cilium/proxy/proxylib/proxylib\"\n)\n\n//\n// Cassandra v3/v4 Parser\n//\n// Spec: https://github.com/apache/cassandra/blob/trunk/doc/native_protocol_v4.spec\n//\n\n// Current Cassandra parser supports filtering on messages where the opcode is 'query-like'\n// (i.e., opcode 'query', 'prepare', 'batch'.  In those scenarios, we match on query_action and query_table.\n// Examples:\n// query_action = 'select', query_table = 'system.*'\n// query_action = 'insert', query_table = 'attendance.daily_records'\n// query_action = 'select', query_table = 'deathstar.scrum_notes'\n// query_action = 'insert', query_table = 'covalent.foo'\n//\n// Batch requests are logged as invidual queries, but an entire batch request will be allowed\n// only if all requests are allowed.\n\n// Non-query client requests, including 'Options', 'Auth_Response', 'Startup', and 'Register'\n// are automatically allowed to simplify the policy language.\n\n// There are known changes in protocol v2 that are not compatible with this parser, see the\n// the \"Changes from v2\" in https://github.com/apache/cassandra/blob/trunk/doc/native_protocol_v3.spec\n\ntype CassandraRule struct {\n\tqueryActionExact   string\n\ttableRegexCompiled *regexp.Regexp\n}\n\nconst cassHdrLen = 9\nconst cassMaxLen = 268435456 // 256 MB, per spec\n\nconst unknownPreparedQueryPath = \"/unknown-prepared-query\"\n\nfunc (rule *CassandraRule) Matches(data interface{}) bool {\n\t// Cast 'data' to the type we give to 'Matches()'\n\n\tpath, ok := data.(string)\n\tif !ok {\n\t\tlogrus.Warning(\"Matches() called with type other than string\")\n\t\treturn false\n\t}\n\tlogrus.Debugf(\"Policy Match test for '%s'\", path)\n\tregexStr := \"\"\n\tif rule.tableRegexCompiled != nil {\n\t\tregexStr = rule.tableRegexCompiled.String()\n\t}\n\n\tlogrus.Debugf(\"Rule: action '%s', table '%s'\", rule.queryActionExact, regexStr)\n\tif path == unknownPreparedQueryPath {\n\t\tlogrus.Warning(\"Dropping execute for unknown prepared-id\")\n\t\treturn false\n\t}\n\tparts := strings.Split(path, \"/\")\n\tif len(parts) <= 2 {\n\t\t// this is not a query-like request, just allow\n\t\treturn true\n\t} else if len(parts) < 4 {\n\t\t// should never happen unless we've messed up internally\n\t\t// as path is either /<opcode> or /<opcode>/<action>/<table>\n\t\tlogrus.Errorf(\"Invalid parsed path: '%s'\", path)\n\t\treturn false\n\t}\n\tif rule.queryActionExact != \"\" && rule.queryActionExact != parts[2] {\n\t\tlogrus.Debugf(\"CassandraRule: query_action mismatch %v, %s\", rule.queryActionExact, parts[1])\n\t\treturn false\n\t}\n\tif len(parts[3]) > 0 &&\n\t\trule.tableRegexCompiled != nil &&\n\t\t!rule.tableRegexCompiled.MatchString(parts[3]) {\n\t\tlogrus.Debugf(\"CassandraRule: table_regex mismatch '%v', '%s'\", rule.tableRegexCompiled, parts[3])\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n// CassandraRuleParser parses protobuf L7 rules to enforcement objects\n// May panic\nfunc CassandraRuleParser(rule *cilium.PortNetworkPolicyRule) []L7NetworkPolicyRule {\n\tl7Rules := rule.GetL7Rules()\n\tif l7Rules == nil {\n\t\treturn nil\n\t}\n\n\tallowRules := l7Rules.GetL7AllowRules()\n\trules := make([]L7NetworkPolicyRule, 0, len(allowRules))\n\tfor _, l7Rule := range allowRules {\n\t\tvar cr CassandraRule\n\t\tfor k, v := range l7Rule.Rule {\n\t\t\tswitch k {\n\t\t\tcase \"query_action\":\n\t\t\t\tcr.queryActionExact = v\n\t\t\tcase \"query_table\":\n\t\t\t\tif v != \"\" {\n\t\t\t\t\tcr.tableRegexCompiled = regexp.MustCompile(v)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tParseError(fmt.Sprintf(\"Unsupported key: %s\", k), rule)\n\t\t\t}\n\t\t}\n\t\tif len(cr.queryActionExact) > 0 {\n\t\t\t// ensure this is a valid query action\n\t\t\tres := queryActionMap[cr.queryActionExact]\n\t\t\tif res == invalidAction {\n\t\t\t\tParseError(fmt.Sprintf(\"Unable to parse L7 cassandra rule with invalid query_action: '%s'\", cr.queryActionExact), rule)\n\t\t\t} else if res == actionNoTable && cr.tableRegexCompiled != nil {\n\t\t\t\tParseError(fmt.Sprintf(\"query_action '%s' is not compatible with a query_table match\", cr.queryActionExact), rule)\n\t\t\t}\n\n\t\t}\n\n\t\tlogrus.Debugf(\"Parsed CassandraRule pair: %v\", cr)\n\t\trules = append(rules, &cr)\n\t}\n\treturn rules\n}\n\ntype CassandraParserFactory struct{}\n\nvar cassandraParserFactory *CassandraParserFactory\n\nfunc init() {\n\tlogrus.Debug(\"init(): Registering cassandraParserFactory\")\n\tRegisterParserFactory(\"cassandra\", cassandraParserFactory)\n\tRegisterL7RuleParser(\"cassandra\", CassandraRuleParser)\n}\n\ntype CassandraParser struct {\n\tconnection *Connection\n\tkeyspace   string // stores current keyspace name from 'use' command\n\n\t// stores prepared query string while\n\t// waiting for 'prepared' reply from server\n\t// with a prepared id.\n\t// replies associated via stream-id\n\tpreparedQueryPathByStreamID map[uint16]string\n\n\t// allowing us to enforce policy on query\n\t// at the time of the execute command.\n\tpreparedQueryPathByPreparedID map[string]string // stores query string based on prepared-id,\n}\n\nfunc (pf *CassandraParserFactory) Create(connection *Connection) interface{} {\n\tlogrus.Debugf(\"CassandraParserFactory: Create: %v\", connection)\n\n\tp := CassandraParser{connection: connection}\n\tp.preparedQueryPathByStreamID = make(map[uint16]string)\n\tp.preparedQueryPathByPreparedID = make(map[string]string)\n\treturn &p\n}\n\nfunc (p *CassandraParser) OnData(reply, endStream bool, dataArray [][]byte) (OpType, int) {\n\n\t// inefficient, but simple for now\n\tdata := bytes.Join(dataArray, []byte{})\n\n\tif len(data) < cassHdrLen {\n\t\t// Partial header received, ask for more\n\t\tneeds := cassHdrLen - len(data)\n\t\tlogrus.Debugf(\"Did not receive full header, need %d more bytes\", needs)\n\t\treturn MORE, needs\n\t}\n\n\t// full header available, read full request length\n\trequestLen := binary.BigEndian.Uint32(data[5:9])\n\tlogrus.Debugf(\"Request length = %d\", requestLen)\n\tif requestLen > cassMaxLen {\n\t\tlogrus.Errorf(\"Request length of %d is greater than 256 MB\", requestLen)\n\t\treturn ERROR, int(ERROR_INVALID_FRAME_LENGTH)\n\t}\n\n\tdataMissing := (cassHdrLen + int(requestLen)) - len(data)\n\tif dataMissing > 0 {\n\t\t// full header received, but only partial request\n\n\t\tlogrus.Debugf(\"Hdr received, but need %d more bytes of request\", dataMissing)\n\t\treturn MORE, dataMissing\n\t}\n\n\t// we parse replies, but only to look for prepared-query-id responses\n\tif reply {\n\t\tif len(data) == 0 {\n\t\t\tlogrus.Debugf(\"ignoring zero length reply call to onData\")\n\t\t\treturn NOP, 0\n\n\t\t}\n\t\tcassandraParseReply(p, data[0:(cassHdrLen+requestLen)])\n\n\t\tlogrus.Debugf(\"reply, passing %d bytes\", (cassHdrLen + requestLen))\n\t\treturn PASS, (cassHdrLen + int(requestLen))\n\t}\n\n\terr, paths := cassandraParseRequest(p, data[0:(cassHdrLen+requestLen)])\n\tif err != 0 {\n\t\tlogrus.Errorf(\"Parsing error %d\", err)\n\t\treturn ERROR, int(err)\n\t}\n\n\tlogrus.Debugf(\"Request paths = %s\", paths)\n\n\tmatches := true\n\taccess_log_entry_type := cilium.EntryType_Request\n\tunpreparedQuery := false\n\n\tfor i := 0; i < len(paths); i++ {\n\t\tif strings.HasPrefix(paths[i], \"/query/use/\") ||\n\t\t\tstrings.HasPrefix(paths[i], \"/batch/use/\") ||\n\t\t\tstrings.HasPrefix(paths[i], \"/prepare/use/\") {\n\t\t\t// do not count a \"use\" query as a deny\n\t\t\tcontinue\n\t\t}\n\n\t\tif paths[i] == unknownPreparedQueryPath {\n\t\t\tmatches = false\n\t\t\tunpreparedQuery = true\n\t\t\taccess_log_entry_type = cilium.EntryType_Denied\n\t\t\tbreak\n\t\t}\n\n\t\tif !p.connection.Matches(paths[i]) {\n\t\t\tmatches = false\n\t\t\taccess_log_entry_type = cilium.EntryType_Denied\n\t\t\tbreak\n\t\t}\n\t}\n\n\tfor i := 0; i < len(paths); i++ {\n\t\tparts := strings.Split(paths[i], \"/\")\n\t\tfields := map[string]string{}\n\n\t\tif len(parts) >= 3 && parts[2] == \"use\" {\n\t\t\t// do not log 'use' queries\n\t\t\tcontinue\n\t\t} else if len(parts) == 4 {\n\t\t\tfields[\"query_action\"] = parts[2]\n\t\t\tfields[\"query_table\"] = parts[3]\n\t\t} else if unpreparedQuery {\n\t\t\tfields[\"error\"] = \"unknown prepared query id\"\n\t\t} else {\n\t\t\t// do not log non-query accesses\n\t\t\tcontinue\n\t\t}\n\n\t\tp.connection.Log(access_log_entry_type,\n\t\t\t&cilium.LogEntry_GenericL7{\n\t\t\t\tGenericL7: &cilium.L7LogEntry{\n\t\t\t\t\tProto:  \"cassandra\",\n\t\t\t\t\tFields: fields,\n\t\t\t\t},\n\t\t\t})\n\n\t}\n\n\tif !matches {\n\n\t\t// If we have already sent another error to the client,\n\t\t// do not send unauthorized message\n\t\tif !unpreparedQuery {\n\t\t\tunauthMsg := make([]byte, len(unauthMsgBase))\n\t\t\tcopy(unauthMsg, unauthMsgBase)\n\t\t\t// We want to use the same protocol and stream ID\n\t\t\t// as the incoming request.\n\t\t\t// update the protocol to match the request\n\t\t\tunauthMsg[0] = 0x80 | (data[0] & 0x07)\n\t\t\t// update the stream ID to match the request\n\t\t\tunauthMsg[2] = data[2]\n\t\t\tunauthMsg[3] = data[3]\n\t\t\tp.connection.Inject(true, unauthMsg)\n\t\t}\n\t\treturn DROP, int(cassHdrLen + requestLen)\n\t}\n\n\treturn PASS, int(cassHdrLen + requestLen)\n}\n\n// A full response (header + body) to be used as an\n// \"unauthorized\" error to be sent to cassandra client as part of policy\n// deny.   Array must be updated to ensure that reply has\n// protocol version and stream-id that matches the request.\n\nvar unauthMsgBase = []byte{\n\t0x0,      // version (uint8) - must be set before injection\n\t0x0,      // flags, (uint8)\n\t0x0, 0x0, // stream-id (uint16) - must be set before injection\n\t0x0,                 // opcode error (uint8)\n\t0x0, 0x0, 0x0, 0x1a, // request length (uint32) - update if text changes\n\t0x0, 0x0, 0x21, 0x00, // 'unauthorized error code' 0x2100 (uint32)\n\t0x0, 0x14, // length of error msg (uint16)  - update if text changes\n\t'R', 'e', 'q', 'u', 'e', 's', 't', ' ', 'U', 'n', 'a', 'u', 't', 'h', 'o', 'r', 'i', 'z', 'e', 'd',\n}\n\n// A full response (header + body) to be used as a\n// \"unprepared\" error to be sent to cassandra client if proxy\n// does not have the path for this prepare-query-id cached\n\nvar unpreparedMsgBase = []byte{\n\t0x0,      // version (uint8) - must be set before injection\n\t0x0,      // flags, (uint8)\n\t0x0, 0x0, // stream-id (uint16) - must be set before injection\n\t0x0,                // opcode error (uint8)\n\t0x0, 0x0, 0x0, 0x0, // request length (uint32) - must be set based on\n\t// of length of prepared query id\n\t0x0, 0x0, 0x25, 0x00, // 'unprepared error code' 0x2500 (uint32)\n\t// must append [short bytes] array of prepared query id.\n}\n\n// create reply byte buffer with error code 'unprepared' with code 0x2500\n// followed by a [short bytes] indicating the unknown ID\n// must set stream-id of the response to match the request\nfunc createUnpreparedMsg(version byte, streamID []byte, preparedID string) []byte {\n\n\tunpreparedMsg := make([]byte, len(unpreparedMsgBase))\n\tcopy(unpreparedMsg, unpreparedMsgBase)\n\tunpreparedMsg[0] = 0x80 | version\n\tunpreparedMsg[2] = streamID[0]\n\tunpreparedMsg[3] = streamID[1]\n\n\tidLen := len(preparedID)\n\tidLenBytes := make([]byte, 2)\n\tbinary.BigEndian.PutUint16(idLenBytes, uint16(idLen))\n\n\treqLen := 4 + 2 + idLen\n\treqLenBytes := make([]byte, 4)\n\tbinary.BigEndian.PutUint32(reqLenBytes, uint32(reqLen))\n\tunpreparedMsg[5] = reqLenBytes[0]\n\tunpreparedMsg[6] = reqLenBytes[1]\n\tunpreparedMsg[7] = reqLenBytes[2]\n\tunpreparedMsg[8] = reqLenBytes[3]\n\n\tres := append(unpreparedMsg, idLenBytes...)\n\treturn append(res, []byte(preparedID)...)\n}\n\nvar opcodeMap = map[byte]string{\n\t0x00: \"error\",\n\t0x01: \"startup\",\n\t0x02: \"ready\",\n\t0x03: \"authenticate\",\n\t0x05: \"options\",\n\t0x06: \"supported\",\n\t0x07: \"query\",\n\t0x08: \"result\",\n\t0x09: \"prepare\",\n\t0x0A: \"execute\",\n\t0x0B: \"register\",\n\t0x0C: \"event\",\n\t0x0D: \"batch\",\n\t0x0E: \"auth_challenge\",\n\t0x0F: \"auth_response\",\n\t0x10: \"auth_success\",\n}\n\n// map to test whether a 'query_action' is valid or not\n\nconst invalidAction = 0\nconst actionWithTable = 1\nconst actionNoTable = 2\n\nvar queryActionMap = map[string]int{\n\t\"select\":         actionWithTable,\n\t\"delete\":         actionWithTable,\n\t\"insert\":         actionWithTable,\n\t\"update\":         actionWithTable,\n\t\"create-table\":   actionWithTable,\n\t\"drop-table\":     actionWithTable,\n\t\"alter-table\":    actionWithTable,\n\t\"truncate-table\": actionWithTable,\n\n\t// these queries take a keyspace\n\t// and match against query_table\n\t\"use\":             actionWithTable,\n\t\"create-keyspace\": actionWithTable,\n\t\"alter-keyspace\":  actionWithTable,\n\t\"drop-keyspace\":   actionWithTable,\n\n\t\"drop-index\":               actionNoTable,\n\t\"create-index\":             actionNoTable, // TODO: we could tie this to table if we want\n\t\"create-materialized-view\": actionNoTable,\n\t\"drop-materialized-view\":   actionNoTable,\n\n\t// TODO: these admin ops could be bundled into meta roles\n\t// (e.g., role-mgmt, permission-mgmt)\n\t\"create-role\":       actionNoTable,\n\t\"alter-role\":        actionNoTable,\n\t\"drop-role\":         actionNoTable,\n\t\"grant-role\":        actionNoTable,\n\t\"revoke-role\":       actionNoTable,\n\t\"list-roles\":        actionNoTable,\n\t\"grant-permission\":  actionNoTable,\n\t\"revoke-permission\": actionNoTable,\n\t\"list-permissions\":  actionNoTable,\n\t\"create-user\":       actionNoTable,\n\t\"alter-user\":        actionNoTable,\n\t\"drop-user\":         actionNoTable,\n\t\"list-users\":        actionNoTable,\n\n\t\"create-function\":  actionNoTable,\n\t\"drop-function\":    actionNoTable,\n\t\"create-aggregate\": actionNoTable,\n\t\"drop-aggregate\":   actionNoTable,\n\t\"create-type\":      actionNoTable,\n\t\"alter-type\":       actionNoTable,\n\t\"drop-type\":        actionNoTable,\n\t\"create-trigger\":   actionNoTable,\n\t\"drop-trigger\":     actionNoTable,\n}\n\nfunc parseQuery(p *CassandraParser, query string) (string, string) {\n\tvar action string\n\tvar table string\n\n\tquery = strings.TrimRight(query, \";\")            // remove potential trailing ;\n\tfields := strings.Fields(strings.ToLower(query)) // handles all whitespace\n\n\t// we currently do not strip comments.  It seems like cqlsh does\n\t// strip comments, but its not clear if that can be assumed of all clients\n\t// It should not be possible to \"spoof\" the 'action' as this is assumed to be\n\t// the first token (leaving no room for a comment to start), but it could potentially\n\t// trick this parser into thinking we're accessing table X, when in fact the\n\t// query accesses table Y, which would obviously be a security vulnerability\n\t// As a result, we look at each token here, and if any of them match the comment\n\t// characters for cassandra, we fail parsing.\n\tfor i := 0; i < len(fields); i++ {\n\t\tif len(fields[i]) >= 2 &&\n\t\t\t(fields[i][:2] == \"--\" ||\n\t\t\t\tfields[i][:2] == \"/*\" ||\n\t\t\t\tfields[i][:2] == \"//\") {\n\n\t\t\tlogrus.Warnf(\"Unable to safely parse query with comments '%s'\", query)\n\t\t\treturn \"\", \"\"\n\t\t}\n\t}\n\tif len(fields) < 2 {\n\t\tgoto invalidQuery\n\t}\n\n\taction = fields[0]\n\tswitch action {\n\tcase \"select\", \"delete\":\n\t\tfor i := 1; i < len(fields); i++ {\n\t\t\tif fields[i] == \"from\" {\n\t\t\t\ttable = strings.ToLower(fields[i+1])\n\t\t\t}\n\t\t}\n\t\tif len(table) == 0 {\n\t\t\tlogrus.Warnf(\"Unable to parse table name from query '%s'\", query)\n\t\t\treturn \"\", \"\"\n\t\t}\n\tcase \"insert\":\n\t\t// INSERT into <table-name>\n\t\tif len(fields) < 3 {\n\t\t\tgoto invalidQuery\n\t\t}\n\t\ttable = strings.ToLower(fields[2])\n\tcase \"update\":\n\t\t// UPDATE <table-name>\n\t\ttable = strings.ToLower(fields[1])\n\tcase \"use\":\n\t\tp.keyspace = strings.Trim(fields[1], \"\\\"\\\\'\")\n\t\tlogrus.Debugf(\"Saving keyspace '%s'\", p.keyspace)\n\t\ttable = p.keyspace\n\tcase \"alter\", \"create\", \"drop\", \"truncate\", \"list\":\n\n\t\taction = strings.Join([]string{action, fields[1]}, \"-\")\n\t\tif fields[1] == \"table\" || fields[1] == \"keyspace\" {\n\n\t\t\tif len(fields) < 3 {\n\t\t\t\tgoto invalidQuery\n\t\t\t}\n\t\t\ttable = fields[2]\n\t\t\tif table == \"if\" {\n\t\t\t\tif action == \"create-table\" {\n\t\t\t\t\tif len(fields) < 6 {\n\t\t\t\t\t\tgoto invalidQuery\n\t\t\t\t\t}\n\t\t\t\t\t// handle optional \"IF NOT EXISTS\"\n\t\t\t\t\ttable = fields[5]\n\t\t\t\t} else if action == \"drop-table\" || action == \"drop-keyspace\" {\n\t\t\t\t\tif len(fields) < 5 {\n\t\t\t\t\t\tgoto invalidQuery\n\t\t\t\t\t}\n\t\t\t\t\t// handle optional \"IF EXISTS\"\n\t\t\t\t\ttable = fields[4]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif action == \"truncate\" && len(fields) == 2 {\n\t\t\t// special case, truncate can just be passed table name\n\t\t\ttable = fields[1]\n\t\t}\n\t\tif fields[1] == \"materialized\" {\n\t\t\taction = action + \"-view\"\n\t\t} else if fields[1] == \"custom\" {\n\t\t\taction = \"create-index\"\n\t\t}\n\tdefault:\n\t\tgoto invalidQuery\n\t}\n\n\tif len(table) > 0 && !strings.Contains(table, \".\") && action != \"use\" {\n\t\ttable = p.keyspace + \".\" + table\n\t}\n\treturn action, table\n\ninvalidQuery:\n\n\tlogrus.Errorf(\"Unable to parse query: '%s'\", query)\n\treturn \"\", \"\"\n}\n\nfunc cassandraParseRequest(p *CassandraParser, data []byte) (OpError, []string) {\n\n\tdirection := data[0] & 0x80 // top bit\n\tif direction != 0 {\n\t\tlogrus.Errorf(\"Direction bit is 'reply', but we are trying to parse a request\")\n\t\treturn ERROR_INVALID_FRAME_TYPE, nil\n\t}\n\n\tcompressionFlag := data[1] & 0x01\n\tif compressionFlag == 1 {\n\t\tlogrus.Errorf(\"Compression flag set, unable to parse request beyond the header\")\n\t\treturn ERROR_INVALID_FRAME_TYPE, nil\n\t}\n\n\topcode := data[4]\n\tpath := opcodeMap[opcode]\n\n\t// parse query string from query/prepare/batch requests\n\n\t// NOTE: parsing only prepare statements and passing all execute\n\t// statements requires that we 'invalidate' all execute statements\n\t// anytime policy changes, to ensure that no execute statements are\n\t// allowed that correspond to prepared queries that would no longer\n\t// be valid.   A better option might be to cache all prepared queries,\n\t// mapping the execution ID to allow/deny each time policy is changed.\n\tif opcode == 0x07 || opcode == 0x09 {\n\t\t// query || prepare\n\t\tqueryLen := binary.BigEndian.Uint32(data[9:13])\n\t\tendIndex := 13 + queryLen\n\t\tquery := string(data[13:endIndex])\n\t\taction, table := parseQuery(p, query)\n\n\t\tif action == \"\" {\n\t\t\treturn ERROR_INVALID_FRAME_TYPE, nil\n\t\t}\n\n\t\tpath = \"/\" + path + \"/\" + action + \"/\" + table\n\t\tif opcode == 0x09 {\n\t\t\t// stash 'path' for this prepared query based on stream id\n\t\t\t// rewrite 'opcode' portion of the path to be 'execute' rather than 'prepare'\n\t\t\tstreamID := binary.BigEndian.Uint16(data[2:4])\n\t\t\tlogrus.Debugf(\"Prepare query path '%s' with stream-id %d\", path, streamID)\n\t\t\tp.preparedQueryPathByStreamID[streamID] = strings.Replace(path, \"prepare\", \"execute\", 1)\n\t\t}\n\t\treturn 0, []string{path}\n\t} else if opcode == 0x0d {\n\t\t// batch\n\n\t\tnumQueries := binary.BigEndian.Uint16(data[10:12])\n\t\tpaths := make([]string, numQueries)\n\t\tlogrus.Debugf(\"batch query count = %d\", numQueries)\n\t\toffset := 12\n\t\tfor i := 0; i < int(numQueries); i++ {\n\t\t\tkind := data[offset]\n\t\t\tif kind == 0 {\n\t\t\t\t// full query string\n\t\t\t\tqueryLen := int(binary.BigEndian.Uint32(data[offset+1 : offset+5]))\n\n\t\t\t\tquery := string(data[offset+5 : offset+5+queryLen])\n\t\t\t\taction, table := parseQuery(p, query)\n\n\t\t\t\tif action == \"\" {\n\t\t\t\t\treturn ERROR_INVALID_FRAME_TYPE, nil\n\t\t\t\t}\n\t\t\t\tpath = \"/\" + path + \"/\" + action + \"/\" + table\n\t\t\t\tpaths[i] = path\n\t\t\t\tpath = \"batch\" // reset for next item\n\t\t\t\toffset = offset + 5 + queryLen\n\t\t\t\toffset = readPastBatchValues(data, offset)\n\t\t\t} else if kind == 1 {\n\t\t\t\t// prepared query id\n\n\t\t\t\tidLen := int(binary.BigEndian.Uint16(data[offset+1 : offset+3]))\n\t\t\t\tpreparedID := string(data[offset+3 : (offset + 3 + idLen)])\n\t\t\t\tlogrus.Debugf(\"Batch entry with prepared-id = '%s'\", preparedID)\n\t\t\t\tpath := p.preparedQueryPathByPreparedID[preparedID]\n\t\t\t\tif len(path) > 0 {\n\t\t\t\t\tpaths[i] = path\n\t\t\t\t} else {\n\t\t\t\t\tlogrus.Warnf(\"No cached entry for prepared-id = '%s' in batch\", preparedID)\n\t\t\t\t\tunpreparedMsg := createUnpreparedMsg(data[0], data[2:4], preparedID)\n\t\t\t\t\tp.connection.Inject(true, unpreparedMsg)\n\t\t\t\t\treturn 0, []string{unknownPreparedQueryPath}\n\t\t\t\t}\n\t\t\t\toffset = offset + 3 + idLen\n\n\t\t\t\toffset = readPastBatchValues(data, offset)\n\t\t\t} else {\n\t\t\t\tlogrus.Errorf(\"unexpected value of 'kind' in batch query: %d\", kind)\n\t\t\t\treturn ERROR_INVALID_FRAME_TYPE, nil\n\t\t\t}\n\t\t}\n\t\treturn 0, paths\n\t} else if opcode == 0x0a {\n\t\t// execute\n\n\t\t// parse out prepared query id, and then look up our\n\t\t// cached query path for policy evaluation.\n\t\tidLen := binary.BigEndian.Uint16(data[9:11])\n\t\tpreparedID := string(data[11:(11 + idLen)])\n\t\tlogrus.Debugf(\"Execute with prepared-id = '%s'\", preparedID)\n\t\tpath := p.preparedQueryPathByPreparedID[preparedID]\n\n\t\tif len(path) == 0 {\n\t\t\tlogrus.Warnf(\"No cached entry for prepared-id = '%s'\", preparedID)\n\t\t\tunpreparedMsg := createUnpreparedMsg(data[0], data[2:4], preparedID)\n\t\t\tp.connection.Inject(true, unpreparedMsg)\n\n\t\t\t// this path is special-cased in Matches() so that unknown\n\t\t\t// prepared IDs are dropped if any rules are defined\n\t\t\treturn 0, []string{unknownPreparedQueryPath}\n\t\t}\n\n\t\treturn 0, []string{path}\n\t} else {\n\t\t// other opcode, just return type of opcode\n\n\t\treturn 0, []string{\"/\" + path}\n\t}\n\n}\n\nfunc readPastBatchValues(data []byte, initialOffset int) int {\n\tnumValues := int(binary.BigEndian.Uint16(data[initialOffset : initialOffset+2]))\n\toffset := initialOffset + 2\n\tfor i := 0; i < numValues; i++ {\n\t\tvalueLen := int(binary.BigEndian.Uint32(data[offset : offset+4]))\n\t\t// handle 'null' (-1) and 'not set' (-2) case, where 0 bytes follow\n\t\tif valueLen >= 0 {\n\t\t\toffset = offset + 4 + valueLen\n\t\t}\n\t}\n\treturn offset\n}\n\n// reply parsing is very basic, just focusing on parsing RESULT messages that\n// contain prepared query IDs so that we can later enforce policy on \"execute\" requests.\nfunc cassandraParseReply(p *CassandraParser, data []byte) {\n\n\tdirection := data[0] & 0x80 // top bit\n\tif direction != 0x80 {\n\t\tlogrus.Errorf(\"Direction bit is 'request', but we are trying to parse a reply\")\n\t\treturn\n\t}\n\n\tcompressionFlag := data[1] & 0x01\n\tif compressionFlag == 1 {\n\t\tlogrus.Errorf(\"Compression flag set, unable to parse reply beyond the header\")\n\t\treturn\n\t}\n\n\tstreamID := binary.BigEndian.Uint16(data[2:4])\n\tlogrus.Debugf(\"Reply with opcode %d and stream-id %d\", data[4], streamID)\n\t// if this is an opcode == RESULT message of type 'prepared', associate the prepared\n\t// statement id with the full query string that was included in the\n\t// associated PREPARE request.  The stream-id in this reply allows us to\n\t// find the associated prepare query string.\n\tif data[4] == 0x08 {\n\t\tresultKind := binary.BigEndian.Uint32(data[9:13])\n\t\tlogrus.Debugf(\"resultKind = %d\", resultKind)\n\t\tif resultKind == 0x0004 {\n\t\t\tidLen := binary.BigEndian.Uint16(data[13:15])\n\t\t\tpreparedID := string(data[15 : 15+idLen])\n\t\t\tlogrus.Debugf(\"Result with prepared-id = '%s' for stream-id %d\", preparedID, streamID)\n\t\t\tpath := p.preparedQueryPathByStreamID[streamID]\n\t\t\tif len(path) > 0 {\n\t\t\t\t// found cached query path to associate with this preparedID\n\t\t\t\tp.preparedQueryPathByPreparedID[preparedID] = path\n\t\t\t\tlogrus.Debugf(\"Associating query path '%s' with prepared-id %s as part of stream-id %d\", path, preparedID, streamID)\n\t\t\t} else {\n\t\t\t\tlogrus.Warnf(\"Unable to find prepared query path associated with stream-id %d\", streamID)\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "proxylib/cassandra/cassandraparser_test.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage cassandra\n\nimport (\n\t\"encoding/hex\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/cilium/proxy/proxylib/accesslog\"\n\t\"github.com/cilium/proxy/proxylib/proxylib\"\n\t\"github.com/cilium/proxy/proxylib/test\"\n)\n\ntype CassandraSuite struct {\n\tlogServer *test.AccessLogServer\n\tins       *proxylib.Instance\n}\n\n// Set up access log server and Library instance for all the test cases\nfunc setUpCassandraSuite(tb testing.TB) *CassandraSuite {\n\ts := &CassandraSuite{}\n\ts.logServer = test.StartAccessLogServer(\"access_log.sock\", 10)\n\trequire.NotNil(tb, s.logServer)\n\ts.ins = proxylib.NewInstance(\"node1\", accesslog.NewClient(s.logServer.Path))\n\trequire.NotNil(tb, s.ins)\n\n\ttb.Cleanup(func() {\n\t\ts.logServer.Clear()\n\t\ts.logServer.Close()\n\t})\n\treturn s\n}\n\nfunc (s *CassandraSuite) checkAccessLogs(tb testing.TB, expPasses, expDrops int) {\n\tpasses, drops := s.logServer.Clear()\n\trequire.Equal(tb, expPasses, passes)\n\trequire.Equal(tb, expDrops, drops)\n}\n\n// util function used for Cassandra tests, as we have cassandra requests\n// as hex strings\nfunc hexData(tb testing.TB, dataHex ...string) [][]byte {\n\tdata := make([][]byte, 0, len(dataHex))\n\tfor i := range dataHex {\n\t\tdataRaw, err := hex.DecodeString(dataHex[i])\n\t\trequire.NoError(tb, err)\n\t\tdata = append(data, dataRaw)\n\t}\n\treturn data\n}\n\nfunc TestCassandraOnDataNoHeader(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"no-policy\")\n\tdata := hexData(t, \"0400\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{},\n\t\tproxylib.MORE, 9-len(data[0]))\n}\n\nfunc TestCassandraOnDataOptionsReq(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"cassandra\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"query_action\"\n\t\t\t  value: \"select\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\n\tdata := hexData(t, \"040000000500000000\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{},\n\t\tproxylib.PASS, len(data[0]),\n\t\tproxylib.MORE, 9)\n}\n\n// this passes a large query request that is missing just the last byte\nfunc TestCassandraOnDataPartialReq(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"cassandra\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"query_table\"\n\t\t\t  value: \".*\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tdata := hexData(t, \"0400000407000000760000006f53454c45435420636c75737465725f6e616d652c20646174615f63656e7465722c207261636b2c20746f6b656e732c20706172746974696f6e65722c20736368656d615f76657273696f6e2046524f4d2073797374656d2e6c6f63616c205748455245206b65793d276c6f63616c270001\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{},\n\t\tproxylib.MORE, 1)\n}\n\nfunc TestCassandraOnDataQueryReq(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"cassandra\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"query_table\"\n\t\t\t  value: \".*\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tdata := hexData(t, \"0400000407000000760000006f53454c45435420636c75737465725f6e616d652c20646174615f63656e7465722c207261636b2c20746f6b656e732c20706172746974696f6e65722c20736368656d615f76657273696f6e2046524f4d2073797374656d2e6c6f63616c205748455245206b65793d276c6f63616c27000100\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{},\n\t\tproxylib.PASS, len(data[0]),\n\t\tproxylib.MORE, 9)\n}\n\nfunc TestCassandraOnDataSplitQueryReq(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"cassandra\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"query_table\"\n\t\t\t  value: \".*\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tdata := hexData(t, \"04000004070000007600\", \"00006f53454c45435420636c75737465725f6e616d652c20646174615f63656e7465722c207261636b2c20746f6b656e732c20706172746974696f6e65722c20736368656d615f76657273696f6e2046524f4d2073797374656d2e6c6f63616c205748455245206b65793d276c6f63616c27000100\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{},\n\t\tproxylib.PASS, len(data[0])+len(data[1]),\n\t\tproxylib.MORE, 9)\n}\n\nfunc TestCassandraOnDataMultiReq(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"cassandra\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"query_table\"\n\t\t\t  value: \".*\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\n\tdata := hexData(t, \"040000000500000000\",\n\t\t\"0400000407000000760000006f53454c45435420636c75737465725f6e616d652c20646174615f63656e7465722c207261636b2c20746f6b656e732c20706172746974696f6e65722c20736368656d615f76657273696f6e2046524f4d2073797374656d2e6c6f63616c205748455245206b65793d276c6f63616c27000100\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{},\n\t\tproxylib.PASS, len(data[0]),\n\t\tproxylib.PASS, len(data[1]),\n\t\tproxylib.MORE, 9)\n}\n\nfunc TestSimpleCassandraPolicy(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"cassandra\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"query_table\"\n\t\t\t  value: \"no-match\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\n\tunauthMsg := createUnauthMsg(0x4)\n\tdata := hexData(t, \"040000000500000000\",\n\t\t\"0400000407000000760000006f53454c45435420636c75737465725f6e616d652c20646174615f63656e7465722c207261636b2c20746f6b656e732c20706172746974696f6e65722c20736368656d615f76657273696f6e2046524f4d2073797374656d2e6c6f63616c205748455245206b65793d276c6f63616c27000100\")\n\tconn.CheckOnDataOK(t, false, false, &data, unauthMsg,\n\t\tproxylib.PASS, len(data[0]),\n\t\tproxylib.DROP, len(data[1]),\n\t\tproxylib.MORE, 9)\n\n\t// All passes are not access-logged\n\ts.checkAccessLogs(t, 0, 1)\n}\n\nfunc createUnauthMsg(streamID byte) []byte {\n\tunauthMsg := make([]byte, len(unauthMsgBase))\n\tcopy(unauthMsg, unauthMsgBase)\n\tunauthMsg[0] = 0x84\n\tunauthMsg[2] = 0x0\n\tunauthMsg[3] = streamID\n\treturn unauthMsg\n}\n\n// this test confirms that we correctly parse and allow a valid batch requests\nfunc TestCassandraBatchRequestPolicy(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"cassandra\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"query_table\"\n\t\t\t  value: \"db1.*\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\n\tbatchMsg := []byte{\n\t\t0x04,     // version\n\t\t0x0,      // flags, (uint8)\n\t\t0x0, 0x4, // stream-id (uint16) (test request uses 0x0004 as stream ID)\n\t\t0x0d,                // opcode batch (uint8)\n\t\t0x0, 0x0, 0x0, 0x3c, // request length of 60 (uint32) - update if body changes\n\t\t0x0,      // batch type == logged\n\t\t0x0, 0x2, // two batch messages\n\n\t\t// first batch message\n\t\t0x0,                 // type: non-prepared query\n\t\t0x0, 0x0, 0x0, 0x14, // [long string] length (20)\n\t\t'S', 'E', 'L', 'E', 'C', 'T', ' ', '*', ' ', 'F', 'R', 'O', 'M', ' ', 'd', 'b', '1', '.', 't', '1',\n\t\t0x0, 0x0, // # of bound values\n\n\t\t// second batch message\n\t\t0x0,                 // type: non-prepared query\n\t\t0x0, 0x0, 0x0, 0x14, // [long string] length (20)\n\t\t'S', 'E', 'L', 'E', 'C', 'T', ' ', '*', ' ', 'F', 'R', 'O', 'M', ' ', 'd', 'b', '1', '.', 't', '2',\n\t\t0x0, 0x0, // # of bound values\n\n\t\t0x0, 0x0, // consistency level [short]\n\t\t0x0, // batch flags\n\t}\n\tdata := [][]byte{batchMsg}\n\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{},\n\t\tproxylib.PASS, len(data[0]),\n\t\tproxylib.MORE, 9)\n\n\t// batch requests are access-logged individually\n\ts.checkAccessLogs(t, 2, 0)\n}\n\n// this test confirms that we correctly parse and deny a batch request\n// if any of the requests are denied.\nfunc (s *CassandraSuite) TestCassandraBatchRequestPolicyDenied(c *testing.T) {\n\ts.ins.CheckInsertPolicyText(c, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"cassandra\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"query_table\"\n\t\t\t  value: \"db1.*\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tconn := s.ins.CheckNewConnectionOK(c, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\n\tbatchMsg := []byte{\n\t\t0x04,     // version\n\t\t0x0,      // flags, (uint8)\n\t\t0x0, 0x4, // stream-id (uint16) (test request uses 0x0004 as stream ID)\n\t\t0x0d,                // opcode batch (uint8)\n\t\t0x0, 0x0, 0x0, 0x3c, // request length of 60 (uint32) - update if body changes\n\t\t0x0,      // batch type == logged\n\t\t0x0, 0x2, // two batch messages\n\n\t\t// first batch message\n\t\t0x0,                 // type: non-prepared query\n\t\t0x0, 0x0, 0x0, 0x14, // [long string] length (20)\n\t\t'S', 'E', 'L', 'E', 'C', 'T', ' ', '*', ' ', 'F', 'R', 'O', 'M', ' ', 'd', 'b', '1', '.', 't', '1',\n\t\t0x0, 0x0, // # of bound values\n\n\t\t// second batch message (accesses db2.t2, which should be denied)\n\t\t0x0,                 // type: non-prepared query\n\t\t0x0, 0x0, 0x0, 0x14, // [long string] length (20)\n\t\t'S', 'E', 'L', 'E', 'C', 'T', ' ', '*', ' ', 'F', 'R', 'O', 'M', ' ', 'd', 'b', '2', '.', 't', '2',\n\t\t0x0, 0x0, // # of bound values\n\n\t\t0x0, 0x0, // consistency level [short]\n\t\t0x0, // batch flags\n\t}\n\tdata := [][]byte{batchMsg}\n\n\tunauthMsg := createUnauthMsg(0x4)\n\tconn.CheckOnDataOK(c, false, false, &data, unauthMsg,\n\t\tproxylib.DROP, len(data[0]),\n\t\tproxylib.MORE, 9)\n\n\t// batch requests are access-logged individually\n\t// Note: in this case, both accesses are denied, as a batch\n\t// request is either entirely allowed or denied\n\ts.checkAccessLogs(c, 0, 2)\n}\n\n// test batch requests with prepared statements\nfunc TestCassandraBatchRequestPreparedStatement(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"cassandra\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"query_table\"\n\t\t\t  value: \"db3.*\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\n\tcassParser, ok := (conn.Parser).(*CassandraParser)\n\tif !ok {\n\t\tpanic(\"failed to cast conn.Parser to *CassandraParser\\n\")\n\t}\n\tpreparedQueryID1 := \"aaaa\"\n\tcassParser.preparedQueryPathByPreparedID[preparedQueryID1] = \"/batch/select/db3.t1\"\n\tpreparedQueryID2 := \"bbbb\"\n\tcassParser.preparedQueryPathByPreparedID[preparedQueryID2] = \"/batch/select/db3.t2\"\n\n\tbatchMsg := []byte{\n\t\t0x04,     // version\n\t\t0x0,      // flags, (uint8)\n\t\t0x0, 0x4, // stream-id (uint16) (test request uses 0x0004 as stream ID)\n\t\t0x0d,                // opcode batch (uint8)\n\t\t0x0, 0x0, 0x0, 0x18, // request length of 60 (uint32) - update if body changes\n\t\t0x0,      // batch type == logged\n\t\t0x0, 0x2, // two batch messages\n\n\t\t// first batch message\n\t\t0x1,      // type: prepared query\n\t\t0x0, 0x4, // [short] length (4)\n\t\t'a', 'a', 'a', 'a',\n\t\t0x0, 0x0, // # of bound values\n\n\t\t// second batch message\n\t\t0x1,      // type: non-prepared query\n\t\t0x0, 0x4, // [short] length (4)\n\t\t'b', 'b', 'b', 'b',\n\t\t0x0, 0x0, // # of bound values\n\n\t\t0x0, 0x0, // consistency level [short]\n\t\t0x0, // batch flags\n\t}\n\tdata := [][]byte{batchMsg}\n\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{},\n\t\tproxylib.PASS, len(data[0]),\n\t\tproxylib.MORE, 9)\n\n\t// batch requests are access-logged individually\n\ts.checkAccessLogs(t, 2, 0)\n}\n\n// test batch requests with prepared statements, including a deny\nfunc TestCassandraBatchRequestPreparedStatementDenied(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"cassandra\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"query_table\"\n\t\t\t  value: \"db3.*\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\n\tcassParser, ok := (conn.Parser).(*CassandraParser)\n\tif !ok {\n\t\tpanic(\"failed to cast conn.Parser to *CassandraParser\\n\")\n\t}\n\tpreparedQueryID1 := \"aaaa\"\n\tcassParser.preparedQueryPathByPreparedID[preparedQueryID1] = \"/batch/select/db3.t1\"\n\tpreparedQueryID2 := \"bbbb\"\n\tcassParser.preparedQueryPathByPreparedID[preparedQueryID2] = \"/batch/select/db4.t2\"\n\n\tbatchMsg := []byte{\n\t\t0x04,     // version\n\t\t0x0,      // flags, (uint8)\n\t\t0x0, 0x4, // stream-id (uint16) (test request uses 0x0004 as stream ID)\n\t\t0x0d,                // opcode batch (uint8)\n\t\t0x0, 0x0, 0x0, 0x18, // request length of 60 (uint32) - update if body changes\n\t\t0x0,      // batch type == logged\n\t\t0x0, 0x2, // two batch messages\n\n\t\t// first batch message\n\t\t0x1,      // type: prepared query\n\t\t0x0, 0x4, // [short] length (4)\n\t\t'a', 'a', 'a', 'a',\n\t\t0x0, 0x0, // # of bound values\n\n\t\t// second batch message (accesses table db4, which should be denied)\n\t\t0x1,      // type: non-prepared query\n\t\t0x0, 0x4, // [short] length (4)\n\t\t'b', 'b', 'b', 'b',\n\t\t0x0, 0x0, // # of bound values\n\n\t\t0x0, 0x0, // consistency level [short]\n\t\t0x0, // batch flags\n\t}\n\tdata := [][]byte{batchMsg}\n\n\tunauthMsg := createUnauthMsg(0x4)\n\tconn.CheckOnDataOK(t, false, false, &data, unauthMsg,\n\t\tproxylib.DROP, len(data[0]),\n\t\tproxylib.MORE, 9)\n\n\t// batch requests are access-logged individually\n\ts.checkAccessLogs(t, 0, 2)\n}\n\n// test execute statement, allow request\nfunc TestCassandraExecutePreparedStatement(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"cassandra\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"query_table\"\n\t\t\t  value: \"db3.*\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\n\tcassParser, ok := (conn.Parser).(*CassandraParser)\n\tif !ok {\n\t\tpanic(\"failed to cast conn.Parser to *CassandraParser\\n\")\n\t}\n\tpreparedQueryID1 := \"aaaa\"\n\tcassParser.preparedQueryPathByPreparedID[preparedQueryID1] = \"/query/select/db3.t1\"\n\n\texecuteMsg := []byte{\n\t\t0x04,     // version\n\t\t0x0,      // flags, (uint8)\n\t\t0x0, 0x4, // stream-id (uint16) (test request uses 0x0004 as stream ID)\n\t\t0x0a,                // opcode execute (uint8)\n\t\t0x0, 0x0, 0x0, 0x09, // request length  (uint32) - update if body changes\n\n\t\t// Execute request\n\t\t0x0, 0x4, // short bytes len (4)\n\t\t'a', 'a', 'a', 'a',\n\n\t\t// the rest of this is values that can be ignored by our parser,\n\t\t// but we add some here to make sure that we're properly passing\n\t\t// based on total request length.\n\t\t'x', 'y', 'z',\n\t}\n\tdata := [][]byte{executeMsg}\n\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{},\n\t\tproxylib.PASS, len(data[0]),\n\t\tproxylib.MORE, 9)\n\n\ts.checkAccessLogs(t, 1, 0)\n}\n\n// test execute statement with unknown prepared-id\nfunc TestCassandraExecutePreparedStatementUnknownID(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"cp1\")\n\n\texecuteMsg := []byte{\n\t\t0x04,     // version\n\t\t0x0,      // flags, (uint8)\n\t\t0x0, 0x4, // stream-id (uint16) (test request uses 0x0004 as stream ID)\n\t\t0x0a,                // opcode execute (uint8)\n\t\t0x0, 0x0, 0x0, 0x06, // request length  (uint32) - update if body changes\n\n\t\t// Execute request\n\t\t0x0, 0x4, // short bytes len (4)\n\t\t'a', 'a', 'a', 'a',\n\t}\n\tdata := [][]byte{executeMsg}\n\n\tunpreparedMsg := createUnpreparedMsg(0x04, []byte{0x0, 0x4}, \"aaaa\")\n\n\tconn.CheckOnDataOK(t, false, false, &data, unpreparedMsg,\n\t\tproxylib.DROP, len(data[0]),\n\t\tproxylib.MORE, 9)\n\n\ts.checkAccessLogs(t, 0, 1)\n}\n\n// test parsing of a prepared query reply\nfunc TestCassandraPreparedResultReply(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"cp1\")\n\n\tcassParser, ok := (conn.Parser).(*CassandraParser)\n\tif !ok {\n\t\tpanic(\"failed to cast conn.Parser to *CassandraParser\\n\")\n\t}\n\n\t// make sure there is a stream-id (4) that matches the request below\n\t// this would have been populated by a \"prepare\" request\n\tcassParser.preparedQueryPathByStreamID[uint16(4)] = \"/query/select/db3.t1\"\n\n\tpreparedResultMsg := []byte{\n\t\t0x84,     // reply + version\n\t\t0x0,      // flags, (uint8)\n\t\t0x0, 0x4, // stream-id (uint16) (test request uses 0x0004 as stream ID)\n\t\t0x08,                // opcode result (uint8)\n\t\t0x0, 0x0, 0x0, 0x16, // request length 22 (uint32) - update if body changes\n\n\t\t// Prepared Result request\n\t\t0x0, 0x0, 0x0, 0x4, // [int] result type\n\t\t0x0, 0x4, // prepared-id len (short)\n\t\t'a', 'a', 'a', 'a', // prepared-id\n\t\t0x0, 0x0, 0x0, 0x0, // prepared results flags\n\t\t0x0, 0x0, 0x0, 0x0, // column-count\n\t\t0x0, 0x0, 0x0, 0x0, // pk-count\n\t}\n\tdata := [][]byte{preparedResultMsg}\n\n\tconn.CheckOnDataOK(t, true, false, &data, []byte{},\n\t\tproxylib.PASS, len(data[0]),\n\t\tproxylib.MORE, 9)\n\n\t// these replies are not access logged\n\ts.checkAccessLogs(t, 0, 0)\n}\n\n// test additional queries\nfunc TestCassandraAdditionalQueries(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"cassandra\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"query_table\"\n\t\t\t  value: \"db4.t1\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\n\tqueries := []string{\"CREATE TABLE db4.t1 (f1 varchar, f2 timeuuid, PRIMARY KEY ((f1), f2))\",\n\t\t\"INSERT INTO db4.t1 (f1, f2, f3) values ('dan', now(), 'Cilium!')\",\n\t\t\"UPDATE db4.t1 SET f1 = 'donald' where f2 in (1,2,3)\",\n\t\t\"DROP TABLE db4.t1\",\n\t\t\"TRUNCATE db4.t1\",\n\t\t\"CREATE TABLE IF NOT EXISTS db4.t1 (f1 varchar, PRIMARY KEY(f1))\",\n\t}\n\n\tqueryMsgBase := []byte{\n\t\t0x04,     // version\n\t\t0x0,      // flags, (uint8)\n\t\t0x0, 0x5, // stream-id (uint16) (test request uses 0x0005 as stream ID)\n\t\t0x07,               // opcode query (uint8)\n\t\t0x0, 0x0, 0x0, 0x0, // length of request - must be set\n\n\t\t// Query Req\n\t\t0x0, 0x0, 0x0, 0x0, // length of query (int) - must be set\n\t\t// query string goes here\n\t}\n\n\tdata := make([][]byte, len(queries))\n\tfor i := 0; i < len(queries); i++ {\n\t\tqueryLen := len(queries[i])\n\n\t\tqueryMsg := append(queryMsgBase, []byte(queries[i])...)\n\n\t\t// this works as long as query is less than 251 bytes\n\t\tqueryMsg[8] = byte(4 + queryLen)\n\t\tqueryMsg[12] = byte(queryLen)\n\n\t\tdata[i] = queryMsg\n\t}\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{},\n\t\tproxylib.PASS, len(data[0]),\n\t\tproxylib.PASS, len(data[1]),\n\t\tproxylib.PASS, len(data[2]),\n\t\tproxylib.PASS, len(data[3]),\n\t\tproxylib.PASS, len(data[4]),\n\t\tproxylib.PASS, len(data[5]),\n\t\tproxylib.MORE, 9)\n\n\ts.checkAccessLogs(t, 6, 0)\n}\n\n// test use query, following by query that does not include the keyspace\nfunc TestCassandraUseQuery(t *testing.T) {\n\ts := setUpCassandraSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"cassandra\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"query_table\"\n\t\t\t  value: \"db5.t1\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"cassandra\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\n\t// note: the second insert command intentionally does not include a keyspace, so that it will only\n\t// be allowed if we properly propagate the keyspace from the previous use command\n\tqueries := []string{\"USE db5\", \"INSERT INTO t1 (f1, f2, f3) values ('dan', now(), 'Cilium!')\"}\n\n\tqueryMsgBase := []byte{\n\t\t0x04,     // version\n\t\t0x0,      // flags, (uint8)\n\t\t0x0, 0x5, // stream-id (uint16) (test request uses 0x0005 as stream ID)\n\t\t0x07,               // opcode query (uint8)\n\t\t0x0, 0x0, 0x0, 0x0, // length of request - must be set\n\n\t\t// Query Req\n\t\t0x0, 0x0, 0x0, 0x0, // length of query (int) - must be set\n\t\t// query string goes here\n\t}\n\n\tdata := make([][]byte, len(queries))\n\tfor i := 0; i < len(queries); i++ {\n\t\tqueryLen := len(queries[i])\n\n\t\tqueryMsg := append(queryMsgBase, []byte(queries[i])...)\n\n\t\t// this works as long as query is less than 251 bytes\n\t\tqueryMsg[8] = byte(4 + queryLen)\n\t\tqueryMsg[12] = byte(queryLen)\n\n\t\tdata[i] = queryMsg\n\t}\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{},\n\t\tproxylib.PASS, len(data[0]),\n\t\tproxylib.PASS, len(data[1]),\n\t\tproxylib.MORE, 9)\n\n\t// use command will not show up in access log, so only expect one msg\n\ts.checkAccessLogs(t, 1, 0)\n}\n"
  },
  {
    "path": "proxylib/kafka/kafkalib/doc.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\n// Package kafkalib provides a library to parse Kafka requests and responses and\n// apply policy rules\npackage kafkalib\n"
  },
  {
    "path": "proxylib/kafka/kafkalib/error.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage kafkalib\n\n// List of possible Kafka error codes\n// Reference: https://kafka.apache.org/protocol#protocol_error_codes\nconst (\n\tErrUnknown                                 = -1\n\tErrNone                                    = 0\n\tErrOffsetOutOfRange                        = 1\n\tErrInvalidMessage                          = 2\n\tErrUnknownTopicOrPartition                 = 3\n\tErrInvalidMessageSize                      = 4\n\tErrLeaderNotAvailable                      = 5\n\tErrNotLeaderForPartition                   = 6\n\tErrRequestTimeout                          = 7\n\tErrBrokerNotAvailable                      = 8\n\tErrReplicaNotAvailable                     = 9\n\tErrMessageSizeTooLarge                     = 10\n\tErrScaleControllerEpoch                    = 11\n\tErrOffsetMetadataTooLarge                  = 12\n\tErrNetwork                                 = 13\n\tErrOffsetLoadInProgress                    = 14\n\tErrNoCoordinator                           = 15\n\tErrNotCoordinator                          = 16\n\tErrInvalidTopic                            = 17\n\tErrRecordListTooLarge                      = 18\n\tErrNotEnoughReplicas                       = 19\n\tErrNotEnoughReplicasAfterAppend            = 20\n\tErrInvalidRequiredAcks                     = 21\n\tErrIllegalGeneration                       = 22\n\tErrInconsistentPartitionAssignmentStrategy = 23\n\tErrUnknownParititonAssignmentStrategy      = 24\n\tErrUnknownConsumerID                       = 25\n\tErrInvalidSessionTimeout                   = 26\n\tErrRebalanceInProgress                     = 27\n\tErrInvalidCommitOffsetSize                 = 28\n\tErrTopicAuthorizationFailed                = 29\n\tErrGroupAuthorizationFailed                = 30\n\tErrClusterAuthorizationFailed              = 31\n\tErrInvalidTimeStamp                        = 32\n)\n"
  },
  {
    "path": "proxylib/kafka/kafkalib/policy.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage kafkalib\n\nimport (\n\t\"github.com/sirupsen/logrus\"\n\n\tapi \"github.com/cilium/proxy/pkg/policy/api/kafka\"\n)\n\ntype Rule struct {\n\t// ApiVersion is the allowed version, or < 0 if all versions\n\t// are to be allowed\n\tAPIVersion int16\n\n\t// ApiKeys is the set of all numerical apiKeys that are allowed.\n\t// If empty, all API keys are allowed.\n\tAPIKeys map[int16]struct{}\n\n\t// ClientID is the client identifier as provided in the request.\n\t//\n\t// From Kafka protocol documentation:\n\t// This is a user supplied identifier for the client application. The\n\t// user can use any identifier they like and it will be used when\n\t// logging errors, monitoring aggregates, etc. For example, one might\n\t// want to monitor not just the requests per second overall, but the\n\t// number coming from each client application (each of which could\n\t// reside on multiple servers). This id acts as a logical grouping\n\t// across all requests from a particular client.\n\t//\n\t// If empty, all client identifiers are allowed.\n\tClientID string\n\n\t// Topic is the topic name contained in the message. If a Kafka request\n\t// contains multiple topics, then all topics must be allowed or the\n\t// message will be rejected.\n\t//\n\t// This constraint is ignored if the matched request message type\n\t// doesn't contain any topic. Maximum size of Topic can be 249\n\t// characters as per recent Kafka spec and allowed characters are\n\t// a-z, A-Z, 0-9, -, . and _\n\t// Older Kafka versions had longer topic lengths of 255, but in Kafka 0.10\n\t// version the length was changed from 255 to 249. For compatibility\n\t// reasons we are allowing 255.\n\t//\n\t// If empty, all topics are allowed.\n\tTopic string\n}\n\n// NewRule creates a new rule from already sanitized inputs\nfunc NewRule(apiVersion int32, apiKeys []int32, clientID, topic string) Rule {\n\tr := Rule{\n\t\tAPIVersion: int16(apiVersion),\n\t\tClientID:   clientID,\n\t\tTopic:      topic,\n\t\tAPIKeys:    make(map[int16]struct{}, len(apiKeys)),\n\t}\n\tfor _, key := range apiKeys {\n\t\tr.APIKeys[int16(key)] = struct{}{}\n\t}\n\treturn r\n}\n\n// CheckAPIKeyRole checks the apiKey value in the request, and returns true if\n// it is allowed else false\nfunc (r *Rule) CheckAPIKeyRole(kind int16) bool {\n\t// wildcard expression\n\tif len(r.APIKeys) == 0 {\n\t\treturn true\n\t}\n\n\t// Check kind\n\t_, ok := r.APIKeys[kind]\n\treturn ok\n}\n\n// CheckAPIVersion returns true if 'apiVersion' is allowed\nfunc (r *Rule) CheckAPIVersion(apiVersion int16) bool {\n\treturn r.APIVersion < 0 || apiVersion == r.APIVersion\n}\n\n// CheckClientID returns true if 'clientID' is allowed\nfunc (r *Rule) CheckClientID(clientID string) bool {\n\treturn r.ClientID == \"\" || clientID == r.ClientID\n}\n\n// isTopicAPIKey returns true if kind is apiKey message type which contains a\n// topic in its request.\nfunc isTopicAPIKey(kind int16) bool {\n\tswitch kind {\n\tcase api.ProduceKey,\n\t\tapi.FetchKey,\n\t\tapi.OffsetsKey,\n\t\tapi.MetadataKey,\n\t\tapi.LeaderAndIsr,\n\t\tapi.StopReplica,\n\t\tapi.UpdateMetadata,\n\t\tapi.OffsetCommitKey,\n\t\tapi.OffsetFetchKey,\n\t\tapi.CreateTopicsKey,\n\t\tapi.DeleteTopicsKey,\n\t\tapi.DeleteRecordsKey,\n\t\tapi.OffsetForLeaderEpochKey,\n\t\tapi.AddPartitionsToTxnKey,\n\t\tapi.WriteTxnMarkersKey,\n\t\tapi.TxnOffsetCommitKey,\n\t\tapi.AlterReplicaLogDirsKey,\n\t\tapi.DescribeLogDirsKey,\n\t\tapi.CreatePartitionsKey:\n\n\t\treturn true\n\t}\n\treturn false\n}\n\n// Matches returns true if Rule matches the request and and all required topics have matched.\nfunc (r Rule) Matches(data interface{}) bool {\n\treq, ok := data.(*RequestMessage)\n\tif !ok {\n\t\tlogrus.Warningf(\"Matches() called with type other than Kafka RequestMessage: %v\", data)\n\t\treturn false\n\t}\n\n\tlogrus.Debugf(\"Matching Kafka request %s against rule %v\", req.String(), r)\n\n\tif !r.CheckAPIKeyRole(req.kind) {\n\t\treturn false\n\t}\n\n\tif !r.CheckAPIVersion(req.version) {\n\t\treturn false\n\t}\n\n\tif !r.CheckClientID(req.clientID) {\n\t\treturn false\n\t}\n\n\t// Last step, check topic if applicable.\n\t// Rule without a topic allows all topics and request types without topics\n\t// are allowed regardless the rule's topic.\n\tif r.Topic != \"\" && isTopicAPIKey(req.kind) {\n\t\t// Rule has a topic constraint and the request type carries topics.\n\t\t//\n\t\t// Check it this rule's topic is in the request, but keep matching\n\t\t// other rules (by returning false) even if this rule is satisfied\n\t\t// if there are other topics in the request not matched yet.\n\t\t//\n\t\t// (req.topics is initialized with all the topics in the request\n\t\t// before any rules are matched.)\n\t\tif _, exists := req.topics[r.Topic]; exists {\n\t\t\tdelete(req.topics, r.Topic)\n\t\t\tif len(req.topics) == 0 {\n\t\t\t\treturn true // all topics have matched\n\t\t\t}\n\t\t}\n\t\treturn false // more topic matches needed\n\t}\n\n\t// All rule's constraints are satisfied\n\treturn true\n}\n"
  },
  {
    "path": "proxylib/kafka/kafkalib/policy_test.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage kafkalib\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/cilium/kafka/proto\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/cilium/proxy/pkg/policy/api/kafka\"\n)\n\ntype kafkaTestSuite struct{}\n\nvar messages = make([]*proto.Message, 100)\n\nfunc setUpKafkaTestSuite(tb testing.TB) *kafkaTestSuite {\n\ttb.Helper()\n\tfor i := range messages {\n\t\tmessages[i] = &proto.Message{\n\t\t\tOffset: int64(i),\n\t\t\tCrc:    uint32(i),\n\t\t\tKey:    nil,\n\t\t\tValue:  []byte(`Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur.`),\n\t\t}\n\t}\n\treturn &kafkaTestSuite{}\n}\n\n// MatchesRule validates the Kafka request message against the provided list of\n// rules. The function will return true if the policy allows the message,\n// otherwise false is returned.\nfunc (req *RequestMessage) MatchesRule(rules []Rule) bool {\n\tfor _, rule := range rules {\n\t\tif rule.Matches(req) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc TestProduceRequest(c *testing.T) {\n\tsetUpKafkaTestSuite(c)\n\treq := &proto.ProduceReq{\n\t\tCorrelationID: 241,\n\t\tClientID:      \"test\",\n\t\tCompression:   proto.CompressionNone,\n\t\tRequiredAcks:  proto.RequiredAcksAll,\n\t\tTimeout:       time.Second,\n\t\tTopics: []proto.ProduceReqTopic{\n\t\t\t{\n\t\t\t\tName: \"foo\",\n\t\t\t\tPartitions: []proto.ProduceReqPartition{\n\t\t\t\t\t{\n\t\t\t\t\t\tID:       0,\n\t\t\t\t\t\tMessages: messages,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tName: \"bar\",\n\t\t\t\tPartitions: []proto.ProduceReqPartition{\n\t\t\t\t\t{\n\t\t\t\t\t\tID:       0,\n\t\t\t\t\t\tMessages: messages,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\treqMsg := RequestMessage{\n\t\trequest: req,\n\t}\n\n\t// empty rules should match nothing\n\treqMsg.setTopics()\n\trequire.False(c, reqMsg.MatchesRule([]Rule{}))\n\n\t// wildcard rule matches everything\n\treqMsg.setTopics()\n\trequire.True(c, reqMsg.MatchesRule([]Rule{{}}))\n\n\treqMsg.setTopics()\n\trequire.False(c, reqMsg.MatchesRule([]Rule{\n\t\tNewRule(-1, nil, \"\", \"foo\"),\n\t}))\n\n\treqMsg.setTopics()\n\trequire.True(c, reqMsg.MatchesRule([]Rule{\n\t\tNewRule(-1, nil, \"\", \"foo\"), NewRule(-1, nil, \"\", \"bar\"),\n\t}))\n\n\treqMsg.setTopics()\n\trequire.False(c, reqMsg.MatchesRule([]Rule{\n\t\tNewRule(-1, nil, \"\", \"foo\"), NewRule(-1, nil, \"\", \"baz\"),\n\t}))\n\n\treqMsg.setTopics()\n\trequire.False(c, reqMsg.MatchesRule([]Rule{\n\t\tNewRule(-1, nil, \"\", \"baz\"), NewRule(-1, nil, \"\", \"foo2\"),\n\t}))\n\n\treqMsg.setTopics()\n\trequire.True(c, reqMsg.MatchesRule([]Rule{\n\t\tNewRule(-1, nil, \"\", \"bar\"), NewRule(-1, nil, \"\", \"foo\"),\n\t}))\n\n\treqMsg.setTopics()\n\trequire.True(c, reqMsg.MatchesRule([]Rule{\n\t\tNewRule(-1, nil, \"\", \"bar\"), NewRule(-1, nil, \"\", \"foo\"), NewRule(-1, nil, \"\", \"baz\"),\n\t}))\n}\n\nfunc TestUnknownRequest(t *testing.T) {\n\tsetUpKafkaTestSuite(t)\n\treqMsg := RequestMessage{kind: 18} // ApiVersions request\n\n\t// Empty rule should disallow\n\trequire.False(t, reqMsg.MatchesRule([]Rule{}))\n\n\t// Whitelisting of unknown message\n\trule1 := NewRule(-1, []int32{int32(kafka.MetadataKey)}, \"\", \"\")\n\trule2 := NewRule(-1, []int32{int32(kafka.APIVersionsKey)}, \"\", \"\")\n\trequire.True(t, reqMsg.MatchesRule([]Rule{rule1, rule2}))\n\n\treqMsg = RequestMessage{kind: 19}\n\trequire.False(t, reqMsg.MatchesRule([]Rule{rule1, rule2}))\n}\n"
  },
  {
    "path": "proxylib/kafka/kafkalib/request.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage kafkalib\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/cilium/kafka/proto\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// RequestMessage represents a Kafka request message\ntype RequestMessage struct {\n\tkind     int16\n\tversion  int16\n\tclientID string\n\trawMsg   []byte\n\trequest  interface{}\n\t// Maintain a map of all topics in the request.  We should\n\t// allow the request only if all topics in the request are\n\t// allowed by the rules.\n\ttopics map[string]struct{}\n}\n\n// CorrelationID represents the correlation id as defined in the Kafka protocol\n// specification\ntype CorrelationID uint32\n\n// GetAPIKey returns the kind of Kafka request\nfunc (req *RequestMessage) GetAPIKey() int16 {\n\treturn req.kind\n}\n\n// GetRaw returns the raw Kafka request\nfunc (req *RequestMessage) GetRaw() []byte {\n\treturn req.rawMsg\n}\n\n// GetVersion returns the version Kafka request\nfunc (req *RequestMessage) GetVersion() int16 {\n\treturn req.version\n}\n\n// GetCorrelationID returns the Kafka request correlationID\nfunc (req *RequestMessage) GetCorrelationID() CorrelationID {\n\tif len(req.rawMsg) >= 12 {\n\t\treturn CorrelationID(binary.BigEndian.Uint32(req.rawMsg[8:12]))\n\t}\n\n\treturn CorrelationID(0)\n}\n\n// SetCorrelationID modified the correlation ID of the Kafka request\nfunc (req *RequestMessage) SetCorrelationID(id CorrelationID) {\n\tif len(req.rawMsg) >= 12 {\n\t\tbinary.BigEndian.PutUint32(req.rawMsg[8:12], uint32(id))\n\t}\n}\n\nfunc (req *RequestMessage) extractVersion() int16 {\n\treturn int16(binary.BigEndian.Uint16(req.rawMsg[6:8]))\n}\n\nfunc (req *RequestMessage) extractClientID() string {\n\tif req.version == 0 || len(req.rawMsg) < 14 {\n\t\treturn \"\" // 0 version has no client ID\n\t}\n\t// ref. https://kafka.apache.org/protocol#protocol_details\n\tlength := int16(binary.BigEndian.Uint16(req.rawMsg[12:14]))\n\tif length <= 0 || len(req.rawMsg) < 14+int(length) {\n\t\treturn \"\"\n\t}\n\treturn string(req.rawMsg[14 : 14+int(length)])\n}\n\n// String returns a human readable representation of the request message\nfunc (req *RequestMessage) String() string {\n\tb, err := json.Marshal(req.request)\n\tif err != nil {\n\t\treturn err.Error()\n\t}\n\n\treturn fmt.Sprintf(\"apiKey=%d,apiVersion=%d,len=%d: %s\",\n\t\treq.kind, req.version, len(req.rawMsg), string(b))\n}\n\n// GetTopics returns the Kafka request list of topics\nfunc (req *RequestMessage) GetTopics() []string {\n\tif req.request == nil {\n\t\treturn nil\n\t}\n\ttopics := make([]string, 0, len(req.topics))\n\tfor topic := range req.topics {\n\t\ttopics = append(topics, topic)\n\t}\n\treturn topics\n}\n\nfunc (req *RequestMessage) setTopics() {\n\tvar topics []string\n\tswitch val := req.request.(type) {\n\tcase *proto.ProduceReq:\n\t\ttopics = produceTopics(val)\n\tcase *proto.FetchReq:\n\t\ttopics = fetchTopics(val)\n\tcase *proto.OffsetReq:\n\t\ttopics = offsetTopics(val)\n\tcase *proto.MetadataReq:\n\t\ttopics = metadataTopics(val)\n\tcase *proto.OffsetCommitReq:\n\t\ttopics = offsetCommitTopics(val)\n\tcase *proto.OffsetFetchReq:\n\t\ttopics = offsetFetchTopics(val)\n\t}\n\treq.topics = make(map[string]struct{}, len(topics))\n\tfor _, topic := range topics {\n\t\treq.topics[topic] = struct{}{}\n\t}\n}\n\nfunc produceTopics(req *proto.ProduceReq) []string {\n\ttopics := make([]string, len(req.Topics))\n\tfor k, topic := range req.Topics {\n\t\ttopics[k] = topic.Name\n\t}\n\treturn topics\n}\n\nfunc fetchTopics(req *proto.FetchReq) []string {\n\ttopics := make([]string, len(req.Topics))\n\tfor k, topic := range req.Topics {\n\t\ttopics[k] = topic.Name\n\t}\n\treturn topics\n}\n\nfunc offsetTopics(req *proto.OffsetReq) []string {\n\ttopics := make([]string, len(req.Topics))\n\tfor k, topic := range req.Topics {\n\t\ttopics[k] = topic.Name\n\t}\n\treturn topics\n}\n\nfunc metadataTopics(req *proto.MetadataReq) []string {\n\ttopics := req.Topics\n\treturn topics\n}\n\nfunc offsetCommitTopics(req *proto.OffsetCommitReq) []string {\n\ttopics := make([]string, len(req.Topics))\n\tfor k, topic := range req.Topics {\n\t\ttopics[k] = topic.Name\n\t}\n\treturn topics\n}\n\nfunc offsetFetchTopics(req *proto.OffsetFetchReq) []string {\n\ttopics := make([]string, len(req.Topics))\n\tfor k, topic := range req.Topics {\n\t\ttopics[k] = topic.Name\n\t}\n\treturn topics\n}\n\n// CreateResponse creates a response message based on the provided request\n// message. The response will have the specified error code set in all topics\n// and embedded partitions.\nfunc (req *RequestMessage) CreateResponse(err error) (*ResponseMessage, error) {\n\tswitch val := req.request.(type) {\n\tcase *proto.ProduceReq:\n\t\treturn createProduceResponse(val, err)\n\tcase *proto.FetchReq:\n\t\treturn createFetchResponse(val, err)\n\tcase *proto.OffsetReq:\n\t\treturn createOffsetResponse(val, err)\n\tcase *proto.MetadataReq:\n\t\treturn createMetadataResponse(val, err)\n\tcase *proto.ConsumerMetadataReq:\n\t\treturn createConsumerMetadataResponse(val, err)\n\tcase *proto.OffsetCommitReq:\n\t\treturn createOffsetCommitResponse(val, err)\n\tcase *proto.OffsetFetchReq:\n\t\treturn createOffsetFetchResponse(val, err)\n\tcase nil:\n\t\treturn nil, fmt.Errorf(\"unsupported request API key %d\", req.kind)\n\tdefault:\n\t\t// The switch cases above must correspond exactly to the switch cases\n\t\t// in ReadRequest.\n\t\tlogrus.Panic(fmt.Sprintf(\"Kafka API key not handled: %d\", req.kind))\n\t}\n\treturn nil, nil\n}\n\n// CreateAuthErrorResponse creates Authorization error response message for 'req'\nfunc (req *RequestMessage) CreateAuthErrorResponse() (*ResponseMessage, error) {\n\treturn req.CreateResponse(proto.ErrTopicAuthorizationFailed)\n}\n\n// ReadRequest will read a Kafka request from an io.Reader and return the\n// message or an error.\nfunc ReadRequest(reader io.Reader) (*RequestMessage, error) {\n\treq := &RequestMessage{}\n\tvar err error\n\n\treq.kind, req.rawMsg, err = proto.ReadReq(reader)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(req.rawMsg) < 12 {\n\t\treturn nil, fmt.Errorf(\"unexpected end of request (length < 12 bytes)\")\n\t}\n\treq.version = req.extractVersion()\n\treq.clientID = req.extractClientID()\n\n\tvar nilSlice []byte\n\tbuf := bytes.NewBuffer(append(nilSlice, req.rawMsg...))\n\n\tswitch req.kind {\n\tcase proto.ProduceReqKind:\n\t\treq.request, err = proto.ReadProduceReq(buf)\n\tcase proto.FetchReqKind:\n\t\treq.request, err = proto.ReadFetchReq(buf)\n\tcase proto.OffsetReqKind:\n\t\treq.request, err = proto.ReadOffsetReq(buf)\n\tcase proto.MetadataReqKind:\n\t\treq.request, err = proto.ReadMetadataReq(buf)\n\tcase proto.ConsumerMetadataReqKind:\n\t\treq.request, err = proto.ReadConsumerMetadataReq(buf)\n\tcase proto.OffsetCommitReqKind:\n\t\treq.request, err = proto.ReadOffsetCommitReq(buf)\n\tcase proto.OffsetFetchReqKind:\n\t\treq.request, err = proto.ReadOffsetFetchReq(buf)\n\tdefault:\n\t\tlogrus.Debugf(\"Unknown Kafka request API key: %d in %s\", req.kind, req.String())\n\t}\n\n\tif err != nil {\n\t\tif logrus.IsLevelEnabled(logrus.DebugLevel) {\n\t\t\tlogrus.WithError(err).Debugf(\"Ignoring Kafka message %s due to parse error\", req.String())\n\t\t}\n\t\treturn nil, err\n\t}\n\n\treq.setTopics()\n\n\treturn req, nil\n}\n"
  },
  {
    "path": "proxylib/kafka/kafkalib/response.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage kafkalib\n\nimport (\n\t\"encoding/binary\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/cilium/kafka/proto\"\n)\n\n// ResponseMessage represents a Kafka response message.\ntype ResponseMessage struct {\n\trawMsg   []byte\n\tresponse interface{}\n}\n\n// GetCorrelationID returns the Kafka request correlationID\nfunc (res *ResponseMessage) GetCorrelationID() CorrelationID {\n\tif len(res.rawMsg) >= 8 {\n\t\treturn CorrelationID(binary.BigEndian.Uint32(res.rawMsg[4:8]))\n\t}\n\n\treturn CorrelationID(0)\n}\n\n// SetCorrelationID modified the correlation ID of the Kafka request\nfunc (res *ResponseMessage) SetCorrelationID(id CorrelationID) {\n\tif len(res.rawMsg) >= 8 {\n\t\tbinary.BigEndian.PutUint32(res.rawMsg[4:8], uint32(id))\n\t}\n}\n\n// GetRaw returns the raw Kafka response\nfunc (res *ResponseMessage) GetRaw() []byte {\n\treturn res.rawMsg\n}\n\n// String returns a human readable representation of the response message\nfunc (res *ResponseMessage) String() string {\n\tb, err := json.Marshal(res.response)\n\tif err != nil {\n\t\treturn err.Error()\n\t}\n\treturn string(b)\n}\n\n// ReadResponse will read a Kafka response from an io.Reader and return the\n// message or an error.\nfunc ReadResponse(reader io.Reader) (*ResponseMessage, error) {\n\trsp := &ResponseMessage{}\n\tvar err error\n\n\t_, rsp.rawMsg, err = proto.ReadResp(reader)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(rsp.rawMsg) < 6 {\n\t\treturn nil,\n\t\t\tfmt.Errorf(\"unexpected end of response (length < 6 bytes)\")\n\t}\n\n\treturn rsp, nil\n}\n\nfunc createProduceResponse(req *proto.ProduceReq, err error) (*ResponseMessage, error) {\n\tif req == nil {\n\t\treturn nil, fmt.Errorf(\"request is nil\")\n\t}\n\n\tresp := &proto.ProduceResp{\n\t\tCorrelationID: req.CorrelationID,\n\t\tTopics:        make([]proto.ProduceRespTopic, len(req.Topics)),\n\t}\n\n\tfor k, topic := range req.Topics {\n\t\tresp.Topics[k] = proto.ProduceRespTopic{\n\t\t\tName:       topic.Name,\n\t\t\tPartitions: make([]proto.ProduceRespPartition, len(topic.Partitions)),\n\t\t}\n\n\t\tfor k2, partition := range topic.Partitions {\n\t\t\tresp.Topics[k].Partitions[k2] = proto.ProduceRespPartition{\n\t\t\t\tID:  partition.ID,\n\t\t\t\tErr: err,\n\t\t\t}\n\t\t}\n\t}\n\n\tb, err := resp.Bytes(req.Version)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &ResponseMessage{\n\t\tresponse: resp,\n\t\trawMsg:   b,\n\t}, nil\n}\n\nfunc createFetchResponse(req *proto.FetchReq, err error) (*ResponseMessage, error) {\n\tif req == nil {\n\t\treturn nil, fmt.Errorf(\"request is nil\")\n\t}\n\n\tresp := &proto.FetchResp{\n\t\tCorrelationID: req.CorrelationID,\n\t\tTopics:        make([]proto.FetchRespTopic, len(req.Topics)),\n\t}\n\n\tfor k, topic := range req.Topics {\n\t\tresp.Topics[k] = proto.FetchRespTopic{\n\t\t\tName:       topic.Name,\n\t\t\tPartitions: make([]proto.FetchRespPartition, len(topic.Partitions)),\n\t\t}\n\n\t\tfor k2, partition := range topic.Partitions {\n\t\t\tresp.Topics[k].Partitions[k2] = proto.FetchRespPartition{\n\t\t\t\tID:                  partition.ID,\n\t\t\t\tErr:                 err,\n\t\t\t\tAbortedTransactions: nil, // nullable\n\t\t\t}\n\t\t}\n\t}\n\n\tb, err := resp.Bytes(req.Version)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &ResponseMessage{\n\t\tresponse: resp,\n\t\trawMsg:   b,\n\t}, nil\n}\n\nfunc createOffsetResponse(req *proto.OffsetReq, err error) (*ResponseMessage, error) {\n\tif req == nil {\n\t\treturn nil, fmt.Errorf(\"request is nil\")\n\t}\n\n\tresp := &proto.OffsetResp{\n\t\tCorrelationID: req.CorrelationID,\n\t\tTopics:        make([]proto.OffsetRespTopic, len(req.Topics)),\n\t}\n\n\tfor k, topic := range req.Topics {\n\t\tresp.Topics[k] = proto.OffsetRespTopic{\n\t\t\tName:       topic.Name,\n\t\t\tPartitions: make([]proto.OffsetRespPartition, len(topic.Partitions)),\n\t\t}\n\n\t\tfor k2, partition := range topic.Partitions {\n\t\t\tresp.Topics[k].Partitions[k2] = proto.OffsetRespPartition{\n\t\t\t\tID:      partition.ID,\n\t\t\t\tErr:     err,\n\t\t\t\tOffsets: make([]int64, 0), // Not nullable, so must never be nil.\n\t\t\t}\n\t\t}\n\t}\n\n\tb, err := resp.Bytes(req.Version)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &ResponseMessage{\n\t\tresponse: resp,\n\t\trawMsg:   b,\n\t}, nil\n}\n\nfunc createMetadataResponse(req *proto.MetadataReq, err error) (*ResponseMessage, error) {\n\tif req == nil {\n\t\treturn nil, fmt.Errorf(\"request is nil\")\n\t}\n\n\tvar topics []proto.MetadataRespTopic\n\tif req.Topics != nil {\n\t\ttopics = make([]proto.MetadataRespTopic, len(req.Topics))\n\t}\n\tresp := &proto.MetadataResp{\n\t\tCorrelationID: req.CorrelationID,\n\t\tBrokers:       make([]proto.MetadataRespBroker, 0), // Not nullable, so must never be nil.\n\t\tTopics:        topics,\n\t}\n\n\tfor k, topic := range req.Topics {\n\t\tresp.Topics[k] = proto.MetadataRespTopic{\n\t\t\tName:       topic,\n\t\t\tErr:        err,\n\t\t\tPartitions: make([]proto.MetadataRespPartition, 0), // Not nullable, so must never be nil.\n\t\t}\n\t}\n\n\tb, err := resp.Bytes(req.Version)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &ResponseMessage{\n\t\tresponse: resp,\n\t\trawMsg:   b,\n\t}, nil\n}\n\nfunc createConsumerMetadataResponse(req *proto.ConsumerMetadataReq, err error) (*ResponseMessage, error) {\n\tif req == nil {\n\t\treturn nil, fmt.Errorf(\"request is nil\")\n\t}\n\n\tresp := &proto.ConsumerMetadataResp{\n\t\tCorrelationID: req.CorrelationID,\n\t\tErr:           err,\n\t}\n\n\tb, err := resp.Bytes(req.Version)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &ResponseMessage{\n\t\tresponse: resp,\n\t\trawMsg:   b,\n\t}, nil\n}\n\nfunc createOffsetCommitResponse(req *proto.OffsetCommitReq, err error) (*ResponseMessage, error) {\n\tif req == nil {\n\t\treturn nil, fmt.Errorf(\"request is nil\")\n\t}\n\n\tresp := &proto.OffsetCommitResp{\n\t\tCorrelationID: req.CorrelationID,\n\t\tTopics:        make([]proto.OffsetCommitRespTopic, len(req.Topics)),\n\t}\n\n\tfor k, topic := range req.Topics {\n\t\tresp.Topics[k] = proto.OffsetCommitRespTopic{\n\t\t\tName:       topic.Name,\n\t\t\tPartitions: make([]proto.OffsetCommitRespPartition, len(topic.Partitions)),\n\t\t}\n\n\t\tfor k2, partition := range topic.Partitions {\n\t\t\tresp.Topics[k].Partitions[k2] = proto.OffsetCommitRespPartition{\n\t\t\t\tID:  partition.ID,\n\t\t\t\tErr: err,\n\t\t\t}\n\t\t}\n\t}\n\n\tb, err := resp.Bytes(req.Version)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &ResponseMessage{\n\t\tresponse: resp,\n\t\trawMsg:   b,\n\t}, nil\n}\n\nfunc createOffsetFetchResponse(req *proto.OffsetFetchReq, err error) (*ResponseMessage, error) {\n\tif req == nil {\n\t\treturn nil, fmt.Errorf(\"request is nil\")\n\t}\n\n\tvar topics []proto.OffsetFetchRespTopic\n\tif req.Topics != nil {\n\t\ttopics = make([]proto.OffsetFetchRespTopic, len(req.Topics))\n\t}\n\tresp := &proto.OffsetFetchResp{\n\t\tCorrelationID: req.CorrelationID,\n\t\tTopics:        topics,\n\t}\n\n\tfor k, topic := range req.Topics {\n\t\tresp.Topics[k] = proto.OffsetFetchRespTopic{\n\t\t\tName:       topic.Name,\n\t\t\tPartitions: make([]proto.OffsetFetchRespPartition, len(topic.Partitions)),\n\t\t}\n\n\t\tfor k2, partition := range topic.Partitions {\n\t\t\tresp.Topics[k].Partitions[k2] = proto.OffsetFetchRespPartition{\n\t\t\t\tID:  partition,\n\t\t\t\tErr: err,\n\t\t\t}\n\t\t}\n\t}\n\n\tb, err := resp.Bytes(req.Version)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &ResponseMessage{\n\t\tresponse: resp,\n\t\trawMsg:   b,\n\t}, nil\n}\n"
  },
  {
    "path": "proxylib/kafka/parser.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage kafka\n\nimport (\n\t\"encoding/binary\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n\t\"github.com/cilium/proxy/proxylib/kafka/kafkalib\"\n\t. \"github.com/cilium/proxy/proxylib/proxylib\"\n)\n\nconst (\n\tparserName = \"kafka\"\n)\n\n// KafkaRuleParser parses protobuf L7 rules to enforcement objects\n// May panic\nfunc KafkaRuleParser(rule *cilium.PortNetworkPolicyRule) []L7NetworkPolicyRule {\n\tl7Rules := rule.GetKafkaRules()\n\tif l7Rules == nil {\n\t\treturn nil\n\t}\n\n\tallowRules := l7Rules.GetKafkaRules()\n\trules := make([]L7NetworkPolicyRule, 0, len(allowRules))\n\tfor _, r := range allowRules {\n\t\trules = append(rules, kafkalib.NewRule(r.ApiVersion, r.ApiKeys, r.ClientId, r.Topic))\n\t}\n\treturn rules\n}\n\ntype KafkaParserFactory struct{}\n\nvar kafkaParserFactory *KafkaParserFactory\n\nfunc init() {\n\tlogrus.Info(\"init(): Registering kafkaParserFactory\")\n\tRegisterParserFactory(parserName, kafkaParserFactory)\n\tRegisterL7RuleParser(parserName, KafkaRuleParser)\n}\n\ntype KafkaParser struct {\n\tconnection *Connection\n}\n\nfunc (pf *KafkaParserFactory) Create(connection *Connection) interface{} {\n\tp := KafkaParser{connection: connection}\n\treturn &p\n}\n\nfunc (p *KafkaParser) OnData(reply bool, reader *Reader) (OpType, int) {\n\tlength := reader.Length()\n\tif length == 0 {\n\t\treturn NOP, 0\n\t}\n\n\tcorrelationID := int32(0)\n\tframelength := 4          // account for the length field\n\tlenbuf := make([]byte, 8) // Peek the first eight bytes\n\tn, err := reader.PeekFull(lenbuf)\n\tif err == nil {\n\t\tframelength += int(binary.BigEndian.Uint32(lenbuf[:4]))\n\t\tcorrelationID = int32(binary.BigEndian.Uint32(lenbuf[4:]))\n\t} else {\n\t\t// Need more data\n\t\treturn MORE, 8 - n\n\t}\n\n\tif reply {\n\t\t// Replies are always passed as-is. No need to parse them\n\t\t// on top of the frame length and correlation ID.\n\t\tp.connection.Log(cilium.EntryType_Response,\n\t\t\t&cilium.LogEntry_Kafka{Kafka: &cilium.KafkaLogEntry{\n\t\t\t\tCorrelationId: correlationID,\n\t\t\t}})\n\t\treturn PASS, framelength\n\t}\n\n\t// Ask for more if full frame has not been received yet\n\tif length < framelength {\n\t\t// Not enough data, ask for more and try again\n\t\treturn MORE, framelength - length\n\t}\n\n\treq, err := kafkalib.ReadRequest(reader)\n\tif err != nil {\n\t\tlogrus.WithError(err).Debug(\"Unable to parse Kafka request; closing Kafka connection\")\n\t\tp.connection.Log(cilium.EntryType_Denied,\n\t\t\t&cilium.LogEntry_Kafka{Kafka: &cilium.KafkaLogEntry{\n\t\t\t\tCorrelationId: correlationID,\n\t\t\t\tErrorCode:     kafkalib.ErrInvalidMessage,\n\t\t\t}})\n\t\treturn ERROR, int(ERROR_INVALID_FRAME_TYPE)\n\t}\n\n\tlogEntry := &cilium.LogEntry_Kafka{Kafka: &cilium.KafkaLogEntry{\n\t\tCorrelationId: correlationID,\n\t\tApiVersion:    int32(req.GetVersion()),\n\t\tApiKey:        int32(req.GetAPIKey()),\n\t\tTopics:        req.GetTopics(),\n\t}}\n\tif p.connection.Matches(req) {\n\t\tp.connection.Log(cilium.EntryType_Request, logEntry)\n\t\treturn PASS, framelength\n\t}\n\tlogEntry.Kafka.ErrorCode = kafkalib.ErrTopicAuthorizationFailed\n\n\tresp, err := req.CreateAuthErrorResponse()\n\tif err != nil {\n\t\tlogrus.WithError(err).Debug(\"Unable to create Kafka response\")\n\t} else {\n\t\t// inject response\n\t\tp.connection.Inject(!reply, resp.GetRaw())\n\t}\n\n\tp.connection.Log(cilium.EntryType_Denied, logEntry)\n\treturn DROP, framelength\n}\n"
  },
  {
    "path": "proxylib/kafka/parser_test.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage kafka\n\nimport (\n\t\"encoding/hex\"\n\t\"testing\"\n\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/cilium/proxy/proxylib/accesslog\"\n\t\"github.com/cilium/proxy/proxylib/proxylib\"\n\t\"github.com/cilium/proxy/proxylib/test\"\n)\n\ntype KafkaSuite struct {\n\tlogServer *test.AccessLogServer\n\tins       *proxylib.Instance\n}\n\n// Set up access log server and Library instance for all the test cases\nfunc setUpKafkaSuite(tb testing.TB) *KafkaSuite {\n\tlogrus.SetLevel(logrus.DebugLevel)\n\ts := &KafkaSuite{}\n\ts.logServer = test.StartAccessLogServer(\"access_log.sock\", 10)\n\trequire.NotNil(tb, s.logServer)\n\ts.ins = proxylib.NewInstance(\"node1\", accesslog.NewClient(s.logServer.Path))\n\trequire.NotNil(tb, s.ins)\n\ttb.Cleanup(func() {\n\t\ts.logServer.Clear()\n\t\ts.logServer.Close()\n\t})\n\treturn s\n}\n\nfunc (s *KafkaSuite) checkAccessLogs(tb testing.TB, expPasses, expDrops int) {\n\tpasses, drops := s.logServer.Clear()\n\trequire.Equal(tb, expPasses, passes, \"Unxpected number of passed access log messages\")\n\trequire.Equal(tb, expDrops, drops, \"Unxpected number of dropped access log messages\")\n}\n\n// util function used for Kafka tests, as we may have Kafka requests\n// as hex strings\nfunc hexData(tb testing.TB, dataHex ...string) [][]byte {\n\tdata := make([][]byte, 0, len(dataHex))\n\tfor i := range dataHex {\n\t\tdataRaw, err := hex.DecodeString(dataHex[i])\n\t\trequire.NoError(tb, err)\n\t\tdata = append(data, dataRaw)\n\t}\n\treturn data\n}\n\nfunc TestKafkaOnDataNoHeader(t *testing.T) {\n\ts := setUpKafkaSuite(t)\n\tconn := s.ins.CheckNewConnectionOK(t, \"kafka\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"no-policy\")\n\tdata := hexData(t, \"\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{})\n\tdata = hexData(t, \"00\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.MORE, 7)\n\tdata = hexData(t, \"0000\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.MORE, 6)\n\tdata = hexData(t, \"000001\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.MORE, 5)\n\tdata = hexData(t, \"00000100\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.MORE, 4)\n\tdata = hexData(t, \"00010000010203\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.MORE, 1)\n\tdata = hexData(t, \"000100000102030405060708\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.MORE, 65536-8)\n}\n\nvar testMessage1 = \"0000\" // length = 42 (0x2a), first half\n\nvar testMessage2 = \"002a\" + // length = 42 (0x2a), 2nd half\n\t\"0000\" + // APIkey = 0 (Produce)\n\t\"0003\" + // Version = 3 (KafkaV3)\n\t\"00010001\" + // CorrelationID = 65537\n\t\"0003414243\" + // ClientID (string) \"ABC\"\n\t\"000144\" + // TransactionalID (string) \"D\"\n\t\"0000\" + // RequiredAcks = 0\n\t\"000003\" // Timeout = 1000 ms, first 3 bytes\n\nvar testMessage3 = \"E8\" + // Timeout = 1000 ms, last byte\n\t\"00000002\" + // Array length = 2\n\t\"00024546\" + // - TopicName (string) \"EF\"\n\t\"00000000\" + //   ProduceReqPartition array length = 0\n\t\"00024748\" + // - TopicName (string) \"GH\"\n\t\"00000000\" //   ProduceReqPartition array length = 0\n\nvar testMessage3Fail = \"E8\" + // Timeout = 1000 ms, last byte\n\t\"20000002\" + // Array length = 0x20000002 (should cause failure\n\t\"00024546\" + // - TopicName (string) \"EF\"\n\t\"00000000\" + //   ProduceReqPartition array length = 0\n\t\"00024748\" + // - TopicName (string) \"GH\"\n\t\"00000000\" //   ProduceReqPartition array length = 0\n\nfunc TestKafkaOnDataSimpleHeaderMinimalPolicy(t *testing.T) {\n\ts := setUpKafkaSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"face::feed\"\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2000\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t>\n\t\t`})\n\n\tdata := hexData(t, testMessage1, testMessage2, testMessage3)\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"kafka\", true, 1000, 2000, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.PASS, 4+42)\n}\n\nfunc TestKafkaOnDataInvalidMessage(t *testing.T) {\n\ts := setUpKafkaSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2000\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t>\n\t\t`})\n\n\tdata := hexData(t, testMessage1, testMessage2, testMessage3Fail)\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"kafka\", true, 1000, 2000, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.ERROR, int(proxylib.ERROR_INVALID_FRAME_TYPE))\n\ts.checkAccessLogs(t, 0, 1)\n}\n\nfunc TestKafkaOnDataSimpleHeaderSimplePolicy(t *testing.T) {\n\ts := setUpKafkaSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2000\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1000\n\t\t    l7_proto: \"kafka\"\n\t\t  >\n\t\t>\n\t\t`})\n\n\tdata := hexData(t, testMessage1, testMessage2, testMessage3)\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"kafka\", true, 1000, 2000, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.PASS, 4+42)\n\ts.checkAccessLogs(t, 1, 0)\n}\n\nfunc TestKafkaOnDataSimpleHeaderWithPolicyDrop(t *testing.T) {\n\ts := setUpKafkaSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2000\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1000\n\t\t    l7_proto: \"kafka\"\n\t\t    kafka_rules: <\n\t\t      kafka_rules: <\n\t\t\tapi_version: -1\n\t\t\ttopic: \"EF\"\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tdata := hexData(t, testMessage1, testMessage2, testMessage3, \"0000\")\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"kafka\", true, 1000, 2000, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tconn.CheckOnDataOK(t, false, false, &data,\n\t\t// Error response:\n\t\t[]byte{0x0, 0x0, 0x0, 0x1c, // length\n\t\t\t0x0, 0x1, 0x0, 0x1, // Correlation ID (65537)\n\t\t\t0x0, 0x0, 0x0, 0x2, // 2 topics\n\t\t\t0x0, 0x2, 0x45, 0x46, // name: \"EF\"\n\t\t\t0x0, 0x0, 0x0, 0x0, // 0 partitions\n\t\t\t0x0, 0x2, 0x47, 0x48, // name: \"GH\"\n\t\t\t0x0, 0x0, 0x0, 0x0, // 0 partitions\n\t\t\t0x0, 0x0, 0x0, 0x0}, // ThrottleTime\n\t\tproxylib.DROP, 4+42,\n\t\tproxylib.MORE, 6)\n\ts.checkAccessLogs(t, 0, 1)\n}\n\nfunc TestKafkaOnDataSimpleHeaderWithPolicyAllow(t *testing.T) {\n\ts := setUpKafkaSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2000\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1000\n\t\t    l7_proto: \"kafka\"\n\t\t    kafka_rules: <\n\t\t      kafka_rules: <\n\t\t\tapi_version: -1\n\t\t\ttopic: \"EF\"\n\t\t      >\n\t\t      kafka_rules: <\n\t\t\tapi_version: -1\n\t\t\ttopic: \"GH\"\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tdata := hexData(t, testMessage1, testMessage2, testMessage3)\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"kafka\", true, 1000, 2000, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.PASS, 4+42)\n\ts.checkAccessLogs(t, 1, 0)\n}\n\nfunc TestKafkaOnDataSimpleHeaderWithClientIDAllow(t *testing.T) {\n\ts := setUpKafkaSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2000\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1000\n\t\t    l7_proto: \"kafka\"\n\t\t    kafka_rules: <\n\t\t      kafka_rules: <\n\t\t\tapi_version: -1\n\t\t\ttopic: \"EF\"\n\t\t\tclient_id: \"ABC\"\n\t\t      >\n\t\t      kafka_rules: <\n\t\t\tapi_version: -1\n\t\t\ttopic: \"GH\"\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tdata := hexData(t, testMessage1, testMessage2, testMessage3)\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"kafka\", true, 1000, 2000, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.PASS, 4+42)\n\ts.checkAccessLogs(t, 1, 0)\n}\n\nfunc TestKafkaOnDataSimpleHeaderWithClientID(t *testing.T) {\n\ts := setUpKafkaSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2000\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1000\n\t\t    l7_proto: \"kafka\"\n\t\t    kafka_rules: <\n\t\t      kafka_rules: <\n\t\t\tapi_version: -1\n\t\t\tclient_id: \"ABC\"\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tdata := hexData(t, testMessage1, testMessage2, testMessage3)\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"kafka\", true, 1000, 2000, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.PASS, 4+42)\n\ts.checkAccessLogs(t, 1, 0)\n}\n\nfunc TestKafkaOnDataSimpleHeaderWithApiKeys(t *testing.T) {\n\ts := setUpKafkaSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2000\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1000\n\t\t    l7_proto: \"kafka\"\n\t\t    kafka_rules: <\n\t\t      kafka_rules: <\n\t\t\tapi_version: -1\n\t\t\tapi_keys: 0\n\t\t\tclient_id: \"ABC\"\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tdata := hexData(t, testMessage1, testMessage2, testMessage3)\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"kafka\", true, 1000, 2000, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.PASS, 4+42)\n\ts.checkAccessLogs(t, 1, 0)\n}\n\nfunc TestKafkaOnDataSimpleHeaderWithApiKeysMismatch(t *testing.T) {\n\ts := setUpKafkaSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2000\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1000\n\t\t    l7_proto: \"kafka\"\n\t\t    kafka_rules: <\n\t\t      kafka_rules: <\n\t\t\tapi_version: -1\n\t\t\tapi_keys: 1\n\t\t\tclient_id: \"ABC\"\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tdata := hexData(t, testMessage1, testMessage2, testMessage3)\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"kafka\", true, 1000, 2000, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tconn.CheckOnDataOK(t, false, false, &data,\n\t\t// Error response:\n\t\t[]byte{0x0, 0x0, 0x0, 0x1c, // length\n\t\t\t0x0, 0x1, 0x0, 0x1, // Correlation ID (65537)\n\t\t\t0x0, 0x0, 0x0, 0x2, // 2 topics\n\t\t\t0x0, 0x2, 0x45, 0x46, // name: \"EF\"\n\t\t\t0x0, 0x0, 0x0, 0x0, // 0 partitions\n\t\t\t0x0, 0x2, 0x47, 0x48, // name: \"GH\"\n\t\t\t0x0, 0x0, 0x0, 0x0, // 0 partitions\n\t\t\t0x0, 0x0, 0x0, 0x0}, // ThrottleTime\n\t\tproxylib.DROP, 4+42)\n\ts.checkAccessLogs(t, 0, 1)\n}\n\nfunc TestKafkaOnDataSimpleHeaderWithApiVersion(t *testing.T) {\n\ts := setUpKafkaSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2000\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1000\n\t\t    l7_proto: \"kafka\"\n\t\t    kafka_rules: <\n\t\t      kafka_rules: <\n\t\t\tapi_version: 3\n\t\t\tclient_id: \"ABC\"\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tdata := hexData(t, testMessage1, testMessage2, testMessage3)\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"kafka\", true, 1000, 2000, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.PASS, 4+42)\n\ts.checkAccessLogs(t, 1, 0)\n}\n\nfunc TestKafkaOnDataSimpleHeaderWithApiVersionMismatch(t *testing.T) {\n\ts := setUpKafkaSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2000\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1000\n\t\t    l7_proto: \"kafka\"\n\t\t    kafka_rules: <\n\t\t      kafka_rules: <\n\t\t\tapi_version: 0\n\t\t\tclient_id: \"ABC\"\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tdata := hexData(t, testMessage1, testMessage2, testMessage3)\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"kafka\", true, 1000, 2000, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tconn.CheckOnDataOK(t, false, false, &data,\n\t\t// Error response:\n\t\t[]byte{0x0, 0x0, 0x0, 0x1c, // length\n\t\t\t0x0, 0x1, 0x0, 0x1, // Correlation ID (65537)\n\t\t\t0x0, 0x0, 0x0, 0x2, // 2 topics\n\t\t\t0x0, 0x2, 0x45, 0x46, // name: \"EF\"\n\t\t\t0x0, 0x0, 0x0, 0x0, // 0 partitions\n\t\t\t0x0, 0x2, 0x47, 0x48, // name: \"GH\"\n\t\t\t0x0, 0x0, 0x0, 0x0, // 0 partitions\n\t\t\t0x0, 0x0, 0x0, 0x0}, // ThrottleTime\n\t\tproxylib.DROP, 4+42)\n\ts.checkAccessLogs(t, 0, 1)\n}\n\nfunc TestKafkaOnDataSimpleHeaderWithClientIDDeny(t *testing.T) {\n\ts := setUpKafkaSuite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2000\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1000\n\t\t    l7_proto: \"kafka\"\n\t\t    kafka_rules: <\n\t\t      kafka_rules: <\n\t\t\tapi_version: -1\n\t\t\ttopic: \"EF\"\n\t\t\tclient_id: \"ABCD\"\n\t\t      >\n\t\t      kafka_rules: <\n\t\t\tapi_version: -1\n\t\t\ttopic: \"GH\"\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\tdata := hexData(t, testMessage1, testMessage2, testMessage3)\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"kafka\", true, 1000, 2000, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tconn.CheckOnDataOK(t, false, false, &data,\n\t\t// Error response:\n\t\t[]byte{0x0, 0x0, 0x0, 0x1c, // length\n\t\t\t0x0, 0x1, 0x0, 0x1, // Correlation ID (65537)\n\t\t\t0x0, 0x0, 0x0, 0x2, // 2 topics\n\t\t\t0x0, 0x2, 0x45, 0x46, // name: \"EF\"\n\t\t\t0x0, 0x0, 0x0, 0x0, // 0 partitions\n\t\t\t0x0, 0x2, 0x47, 0x48, // name: \"GH\"\n\t\t\t0x0, 0x0, 0x0, 0x0, // 0 partitions\n\t\t\t0x0, 0x0, 0x0, 0x0}, // ThrottleTime\n\t\tproxylib.DROP, 4+42)\n\ts.checkAccessLogs(t, 0, 1)\n}\n\nfunc TestKafkaOnDataResponse(t *testing.T) {\n\ts := setUpKafkaSuite(t)\n\tdata := [][]byte{\n\t\t{0x0, 0x0, 0x0, 0x1c}, // length\n\t\t{0x0, 0x1, 0x0, 0x1},  // Correlation ID (65537)\n\t\t{0x0, 0x0, 0x0, 0x2},  // 2 topics\n\t\t{0x0, 0x2, 0x45, 0x46, // name: \"EF\"\n\t\t\t0x0, 0x0, 0x0, 0x0}, // 0 partitions\n\t\t{0x0, 0x2, 0x47, 0x48, // name: \"GH\"\n\t\t\t0x0, 0x0, 0x0, 0x0}, // 0 partitions\n\t\t{0x0, 0x0, 0x0, 0x0}, // ThrottleTime\n\t}\n\n\tconn := s.ins.CheckNewConnectionOK(t, \"kafka\", true, 1000, 2000, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"\")\n\tconn.CheckOnDataOK(t, true, false, &data, []byte{}, proxylib.PASS, 4+28)\n\ts.checkAccessLogs(t, 1, 0)\n}\n"
  },
  {
    "path": "proxylib/libcilium/helpers_test.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage libcilium\n\n// These helpers must be defined in the main package so that the exported shared library functions\n// can be called, as the C types used in the prototypes are only available from within the main\n// package.\n//\n// These can not be defined in '_test.go' files, as Go test is not compatible with Cgo.\n\nimport (\n\t\"testing\"\n\n\t. \"github.com/cilium/proxy/proxylib/proxylib\"\n)\n\nfunc numConnections() int {\n\tmutex.Lock()\n\tdefer mutex.Unlock()\n\treturn len(connections)\n}\n\nfunc checkConnectionCount(t *testing.T, expConns int) {\n\tt.Helper()\n\tnConns := numConnections()\n\tif nConns != expConns {\n\t\tt.Errorf(\"Number of connections does not match (have %d, but should be %d)\", nConns, expConns)\n\t}\n}\n\nfunc checkConnections(t *testing.T, res, expected FilterResult, expConns int) {\n\tt.Helper()\n\tif res != expected {\n\t\tt.Errorf(\"OnNewConnection(): Invalid result, have %s, expected %s\", res.Error(), expected.Error())\n\t}\n\tcheckConnectionCount(t, expConns)\n}\n\nfunc CheckOnNewConnection(t *testing.T, instanceId uint64, proto string, connectionId uint64, ingress bool, srcId, dstId uint32, srcAddr, dstAddr, policyName string, bufSize int, expResult FilterResult, expNumConnections int) *byte {\n\tt.Helper()\n\torigBuf := make([]byte, 0, bufSize)\n\treplyBuf := make([]byte, 1, bufSize)\n\treplyBufAddr := &replyBuf[0]\n\treplyBuf = replyBuf[:0] // make the buffer empty again\n\n\tres := FilterResult(OnNewConnection(instanceId, proto, connectionId, ingress, srcId, dstId, srcAddr, dstAddr, policyName, &origBuf, &replyBuf))\n\tcheckConnections(t, res, expResult, expNumConnections)\n\n\treturn replyBufAddr\n}\n\nfunc CheckClose(t *testing.T, connectionId uint64, replyBufAddr *byte, n int) {\n\tt.Helper()\n\tcheckConnectionCount(t, n)\n\n\t// Find the connection\n\tmutex.Lock()\n\tconnection, ok := connections[connectionId]\n\tmutex.Unlock()\n\tif !ok {\n\t\tt.Errorf(\"OnData(): Connection %d not found!\", connectionId)\n\t} else if replyBufAddr != nil && len(*connection.ReplyBuf) > 0 && replyBufAddr != &(*connection.ReplyBuf)[0] {\n\t\tt.Error(\"OnData(): Reply injection buffer reallocated while it must not be!\")\n\t}\n\n\tClose(connectionId)\n\n\tcheckConnectionCount(t, n-1)\n}\n\ntype ExpFilterOp struct {\n\top      OpType\n\tn_bytes int\n}\n\nfunc checkOps(ops [][2]int64, exp []ExpFilterOp) bool {\n\tif len(ops) != len(exp) {\n\t\treturn false\n\t} else {\n\t\tfor i, op := range ops {\n\t\t\tif op[0] != int64(exp[i].op) || op[1] != int64(exp[i].n_bytes) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\nfunc checkBuf(t *testing.T, buf InjectBuf, expected string) {\n\tt.Helper()\n\tif len(*buf) < len(expected) {\n\t\tt.Log(\"Inject buffer too small, data truncated\")\n\t\texpected = expected[:len(*buf)] // truncate to buffer length\n\t}\n\tif string(*buf) != expected {\n\t\tt.Errorf(\"OnData(): Expected inject buffer to be %s, buf have: %s\", expected, *buf)\n\t}\n}\n\nfunc checkOnData(t *testing.T, res, expected FilterResult, ops [][2]int64, expOps []ExpFilterOp) {\n\tt.Helper()\n\tif res != expected {\n\t\tt.Errorf(\"OnData(): Invalid result, have %s, expected %s\", res.Error(), expected.Error())\n\t}\n\tif !checkOps(ops, expOps) {\n\t\tt.Errorf(\"OnData(): Unexpected filter operations: %v, expected %v\", ops, expOps)\n\t}\n}\n\nfunc CheckOnData(t *testing.T, connectionId uint64, reply, endStream bool, data *[][]byte, expOps []ExpFilterOp, expResult FilterResult, expReplyBuf string) {\n\tt.Helper()\n\n\t// Find the connection\n\tmutex.Lock()\n\tconnection, ok := connections[connectionId]\n\tmutex.Unlock()\n\tif !ok && expResult != UNKNOWN_CONNECTION {\n\t\tt.Errorf(\"OnData(): Connection %d not found!\", connectionId)\n\t}\n\n\tops := make([][2]int64, 0, 1+len(expOps)*2)\n\n\tres := FilterResult(OnData(connectionId, reply, endStream, data, &ops))\n\n\tcheckOnData(t, res, expResult, ops, expOps)\n\n\tif ok {\n\t\treplyBuf := connection.ReplyBuf\n\t\tcheckBuf(t, replyBuf, expReplyBuf)\n\t\t*replyBuf = (*replyBuf)[:0] // make empty again\n\t}\n}\n"
  },
  {
    "path": "proxylib/libcilium/proxylib.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage libcilium\n\nimport (\n\t\"sync\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\t\"github.com/cilium/proxy/proxylib/accesslog\"\n\t_ \"github.com/cilium/proxy/proxylib/cassandra\"\n\t_ \"github.com/cilium/proxy/proxylib/kafka\"\n\t_ \"github.com/cilium/proxy/proxylib/memcached\"\n\t\"github.com/cilium/proxy/proxylib/npds\"\n\t\"github.com/cilium/proxy/proxylib/proxylib\"\n\t_ \"github.com/cilium/proxy/proxylib/r2d2\"\n\t_ \"github.com/cilium/proxy/proxylib/testparsers\"\n)\n\nvar (\n\t// mutex protects connections\n\tmutex sync.RWMutex\n\t// Key uint64 is a connection ID allocated by Envoy, practically a monotonically increasing number\n\tconnections map[uint64]*proxylib.Connection = make(map[uint64]*proxylib.Connection)\n)\n\n// Copy value string from C-memory to Go-memory.\n// Go strings are immutable, but byte slices are not. Converting to a byte slice will thus\n// copy the memory.\nfunc strcpy(str string) string {\n\treturn string(([]byte(str))[0:])\n}\n\nfunc OnNewConnection(instanceId uint64, proto string, connectionId uint64, ingress bool, srcId, dstId uint32, srcAddr, dstAddr, policyName string, origBuf, replyBuf *[]byte) proxylib.FilterResult {\n\tinstance := proxylib.FindInstance(instanceId)\n\tif instance == nil {\n\t\treturn proxylib.INVALID_INSTANCE\n\t}\n\n\terr, conn := proxylib.NewConnection(instance, strcpy(proto), connectionId, ingress, srcId, dstId, strcpy(srcAddr), strcpy(dstAddr), strcpy(policyName), origBuf, replyBuf)\n\tif err == nil {\n\t\tmutex.Lock()\n\t\tconnections[connectionId] = conn\n\t\tmutex.Unlock()\n\t\treturn proxylib.OK\n\t}\n\tif res, ok := err.(proxylib.FilterResult); ok {\n\t\treturn res\n\t}\n\treturn proxylib.UNKNOWN_ERROR\n}\n\nfunc OnData(connectionId uint64, reply, endStream bool, data *[][]byte, filterOps *[][2]int64) proxylib.FilterResult {\n\t// Find the connection\n\tmutex.RLock()\n\tconnection, ok := connections[connectionId]\n\tmutex.RUnlock()\n\tif !ok {\n\t\treturn proxylib.UNKNOWN_CONNECTION\n\t}\n\n\treturn connection.OnData(reply, endStream, data, filterOps)\n}\n\nfunc Close(connectionId uint64) {\n\tmutex.Lock()\n\tdelete(connections, connectionId)\n\tmutex.Unlock()\n}\n\nfunc OpenModule(params [][2]string, debug bool) uint64 {\n\tvar accessLogPath, xdsPath, nodeID string\n\tfor i := range params {\n\t\tkey := params[i][0]\n\t\tvalue := strcpy(params[i][1])\n\n\t\tswitch key {\n\t\tcase \"access-log-path\":\n\t\t\taccessLogPath = value\n\t\tcase \"xds-path\":\n\t\t\txdsPath = value\n\t\tcase \"node-id\":\n\t\t\tnodeID = value\n\t\tdefault:\n\t\t\treturn 0\n\t\t}\n\t}\n\n\tif debug {\n\t\tmutex.Lock()\n\t\tlogrus.SetLevel(logrus.DebugLevel)\n\t\tmutex.Unlock()\n\t}\n\t// Copy strings from C-memory to Go-memory so that the string remains valid\n\t// also after this function returns\n\treturn proxylib.OpenInstance(nodeID, xdsPath, npds.NewClient, accessLogPath, accesslog.NewClient)\n}\n\nfunc CloseModule(id uint64) {\n\tproxylib.CloseInstance(id)\n}\n"
  },
  {
    "path": "proxylib/libcilium/proxylib_memcached_test.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage libcilium\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t_ \"github.com/cilium/proxy/proxylib/memcached\"\n\tbinarymemcache \"github.com/cilium/proxy/proxylib/memcached/binary\"\n\ttextmemcache \"github.com/cilium/proxy/proxylib/memcached/text\"\n\t\"github.com/cilium/proxy/proxylib/proxylib\"\n\t\"github.com/cilium/proxy/proxylib/test\"\n)\n\nvar setHelloText = []byte(\"set key 0 0 5\\r\\nhello\\r\\n\")\n\nvar getKeysText = []byte(\"get key1 key2 key3\\r\\n\")\nvar gatKeysText = []byte(\"gat 5 key1 key2 key3\\r\\n\")\nvar getResponse = []byte(\n\t\"VALUE key3 0 4\\r\\n\" +\n\t\t\"xDDD\\r\\n\" +\n\t\t\"VALUE key4 0 3\\r\\n\" +\n\t\t\"xDD\\r\\n\" +\n\t\t\"END\\r\\n\")\n\nvar deleteText = []byte(\"delete key\\r\\n\")\nvar incrText = []byte(\"incr key 5\\r\\n\")\nvar touchText = []byte(\"touch key 55\\r\\n\")\nvar slabsText = []byte(\"slabs automove 1\\r\\n\")\nvar okText = []byte(\"OK\\r\\n\")\nvar lruCrawlerText = []byte(\"lru_crawler metadump all\\r\\n\")\nvar statsText = []byte(\"stats\\r\\n\")\nvar flushAllText = []byte(\"flush_all 15\\r\\n\")\nvar watchText = []byte(\"watch mutations\\r\\n\")\n\nvar watchReply = []byte(\n\t\"OK\\r\\n\" +\n\t\t\"ts=1538135970.404892 gid=5 type=item_store key=key3 status=stored cmd=set ttl=500 clsid=1\\r\\n\" +\n\t\t\"ts=1538135970.404898 gid=6 type=item_store key=key4 status=stored cmd=set ttl=500 clsid=1\\r\\n\" +\n\t\t\"ts=1538135974.340708 gid=7 type=item_store key=key3 status=stored cmd=set ttl=500 clsid=1\\r\\n\" +\n\t\t\"ts=1538135974.340714 gid=8 type=item_store key=key4 status=stored cmd=set ttl=500 clsid=1\\r\\n\" +\n\t\t\"ts=1538135976.436863 gid=9 type=item_store key=key3 status=stored cmd=set ttl=500 clsid=1\\r\\n\")\n\nvar lruCrawlerResponse = []byte(\n\t\"key=key3 exp=1538047402 la=1538046902 cas=1 fetch=no cls=1 size=67\\r\\n\" +\n\t\t\"key=key4 exp=1538047402 la=1538046902 cas=2 fetch=no cls=1 size=66\\r\\n\" +\n\t\t\"END\\r\\n\")\n\nvar statsResponse = []byte(\n\t\"STAT evictions 0\\r\\n\" +\n\t\t\"STAT reclaimed 2\\r\\n\" +\n\t\t\"STAT crawler_reclaimed\\r\\n\" +\n\t\t\"STAT crawler_items_checked 18\\r\\n\" +\n\t\t\"STAT lrutail_reflocked 0\\r\\n\" +\n\t\t\"STAT moves_to_cold 6\\r\\n\" +\n\t\t\"STAT moves_to_warm 0\\r\\n\" +\n\t\t\"STAT moves_within_lru 0\\r\\n\" +\n\t\t\"STAT direct_reclaims 0\\r\\n\" +\n\t\t\"STAT lru_bumps_dropped 0\\r\\n\" +\n\t\t\"END\\r\\n\")\n\nvar notFound = []byte(\"NOT_FOUND\\r\\n\")\n\nvar stored = []byte(\"STORED\\r\\n\")\n\n// binary packets\nvar getHello = []byte{\n\t128, 0, 0, 5,\n\t0, 0, 0, 0,\n\t0, 0, 0, 5,\n\t0, 0, 0, 0,\n\t0, 0, 0, 0,\n\t0, 0, 0, 0,\n\t'H', 'e', 'l', 'l',\n\t'o',\n}\n\nvar getHelloResp = []byte{\n\t129, 0, 0, 0,\n\t4, 0, 0, 0,\n\t0, 0, 0, 9,\n\t0, 0, 0, 0,\n\t0, 0, 0, 0,\n\t0, 0, 0, 0,\n\t0, 0, 0, 0,\n\t'W', 'o', 'r', 'l',\n\t'd',\n}\n\nvar setHello = []byte{\n\t128, 1, 0, 5,\n\t8, 0, 0, 0,\n\t0, 0, 0, 18,\n\t0, 0, 0, 0,\n\t0, 0, 0, 0,\n\t0, 0, 0, 0,\n\t0, 0, 0, 0,\n\t0, 0, 0, 0,\n\t'H', 'e', 'l', 'l',\n\t'o', 'W', 'o', 'r',\n\t'l', 'd',\n}\n\nfunc TestMemcache(t *testing.T) {\n\tfor _, tc := range append(textTestCases, binaryTestCases...) {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\n\t\t\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\t\t\tdefer logServer.Close()\n\n\t\t\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, false)\n\t\t\tif mod == 0 {\n\t\t\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t\t\t} else {\n\t\t\t\tdefer CloseModule(mod)\n\t\t\t}\n\n\t\t\tinsertPolicyText(t, mod, \"1\", []string{fmt.Sprintf(`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n            l7_proto: \"memcache\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n%s\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`, tc.policy)})\n\n\t\t\tbuf := CheckOnNewConnection(t, mod, \"memcache\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\",\n\t\t\t\t30, proxylib.OK, 1)\n\n\t\t\ttc.onDataChecks(t)\n\n\t\t\tCheckClose(t, 1, buf, 1)\n\t\t})\n\t}\n}\n\ntype testCase struct {\n\tname         string\n\tpolicy       string\n\tonDataChecks func(*testing.T)\n}\n\nvar textTestCases = []testCase{\n\t{\n\t\t\"text set pass\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"set\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{setHelloText}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(setHelloText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\n\t\t\tCheckOnData(t, 1, true, false, &[][]byte{stored}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(stored)},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"text set drop\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"trolo\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"set\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{setHelloText}, []ExpFilterOp{\n\t\t\t\t{proxylib.DROP, len(setHelloText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, string(textmemcache.DeniedMsg))\n\t\t},\n\t},\n\t{\n\t\t\"text get pass\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"get\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{getKeysText, getKeysText}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(getKeysText)}, {proxylib.PASS, len(getKeysText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\t\t\tCheckOnData(t, 1, true, false, &[][]byte{getResponse, getResponse}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(getResponse)}, {proxylib.PASS, len(getResponse)},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"text get more\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"get\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{getResponse[:5]}, []ExpFilterOp{\n\t\t\t\t{proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"text get drop\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"set\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{getKeysText}, []ExpFilterOp{\n\t\t\t\t{proxylib.DROP, len(getKeysText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, string(textmemcache.DeniedMsg))\n\t\t},\n\t},\n\t{\n\t\t\"text gat pass\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"gat\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{gatKeysText, gatKeysText}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(gatKeysText)}, {proxylib.PASS, len(gatKeysText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\t\t\tCheckOnData(t, 1, true, false, &[][]byte{getResponse, getResponse}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(getResponse)}, {proxylib.PASS, len(getResponse)},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"text gat more\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"gat\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{getResponse[:5]}, []ExpFilterOp{\n\t\t\t\t{proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"text gat drop\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"set\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{gatKeysText}, []ExpFilterOp{\n\t\t\t\t{proxylib.DROP, len(gatKeysText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, string(textmemcache.DeniedMsg))\n\t\t},\n\t},\n\t{\n\t\t\"text delete pass\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"delete\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{deleteText}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(deleteText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\n\t\t\tCheckOnData(t, 1, true, false, &[][]byte{notFound}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(notFound)},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"text delete drop\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"set\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{deleteText}, []ExpFilterOp{\n\t\t\t\t{proxylib.DROP, len(deleteText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, string(textmemcache.DeniedMsg))\n\t\t},\n\t},\n\t{\n\t\t\"text incr pass\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"incr\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{incrText}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(incrText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\n\t\t\tCheckOnData(t, 1, true, false, &[][]byte{notFound}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(notFound)},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"text incr drop\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"otherKey\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"incr\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{incrText}, []ExpFilterOp{\n\t\t\t\t{proxylib.DROP, len(incrText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, string(textmemcache.DeniedMsg))\n\t\t},\n\t},\n\t{\n\t\t\"text touch pass\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"key\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"touch\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{touchText}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(touchText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\n\t\t\tCheckOnData(t, 1, true, false, &[][]byte{notFound}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(notFound)},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"text touch drop\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"otherKey\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"touch\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{touchText}, []ExpFilterOp{\n\t\t\t\t{proxylib.DROP, len(touchText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, string(textmemcache.DeniedMsg))\n\t\t},\n\t},\n\t{\n\t\t\"text slabs pass\",\n\t\t`\t\t        rule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"slabs\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{slabsText}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(slabsText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\n\t\t\tCheckOnData(t, 1, true, false, &[][]byte{okText}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(okText)},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"text slabs drop\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"otherKey\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"touch\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{slabsText}, []ExpFilterOp{\n\t\t\t\t{proxylib.DROP, len(slabsText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, string(textmemcache.DeniedMsg))\n\t\t},\n\t},\n\t{\n\t\t\"text lru_crawler response req more and pass\",\n\t\t`\t\t        rule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"lru_crawler\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{lruCrawlerText}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(lruCrawlerText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\n\t\t\tCheckOnData(t, 1, true, false, &[][]byte{lruCrawlerResponse[:5]}, []ExpFilterOp{\n\t\t\t\t{proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\t\t\tCheckOnData(t, 1, true, false, &[][]byte{lruCrawlerResponse}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(lruCrawlerResponse)},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"text stats response req more and pass\",\n\t\t`\t\t        rule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"stats\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{statsText}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(statsText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\n\t\t\tCheckOnData(t, 1, true, false, &[][]byte{statsResponse[:5]}, []ExpFilterOp{\n\t\t\t\t{proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\t\t\tCheckOnData(t, 1, true, false, &[][]byte{statsResponse}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(statsResponse)},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"text flush_all pass\",\n\t\t`\t\t        rule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"flush_all\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{flushAllText}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(flushAllText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\n\t\t},\n\t},\n\t{\n\t\t\"text flush_all denied\",\n\t\t`\t\t        rule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"get\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{flushAllText}, []ExpFilterOp{\n\t\t\t\t{proxylib.DROP, len(flushAllText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, string(textmemcache.DeniedMsg))\n\n\t\t},\n\t},\n\t{\n\t\t\"text watch passed\",\n\t\t`\t\t        rule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"watch\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{watchText}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(watchText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\n\t\t\tCheckOnData(t, 1, true, false, &[][]byte{watchReply}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, 4}, {proxylib.PASS, 91}, {proxylib.PASS, 91}, {proxylib.PASS, 91}, {proxylib.PASS, 91}, {proxylib.PASS, 91},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"text partial linefeed\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"set\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{getKeysText[:len(getKeysText)-1]}, []ExpFilterOp{\n\t\t\t\t{proxylib.MORE, 1},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"text set pass on empty rule\",\n\t\t\"\",\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{setHelloText}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(setHelloText)}, {proxylib.MORE, 2},\n\t\t\t}, proxylib.OK, \"\")\n\n\t\t\tCheckOnData(t, 1, true, false, &[][]byte{stored}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(stored)},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n}\n\nvar binaryTestCases = []testCase{\n\t{\n\t\t\"bin get pass exact key\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"Hello\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"get\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{getHello}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(getHello)}, {proxylib.MORE, 24},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"bin get pass prefix key\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyPrefix\"\n\t\t          value: \"Hell\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"get\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{getHello}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(getHello)}, {proxylib.MORE, 24},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"bin get pass regex key\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyRegex\"\n\t\t          value: \"^.el.o$\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"get\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{getHello}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(getHello)}, {proxylib.MORE, 24},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"bin get drop\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"set\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{getHello}, []ExpFilterOp{\n\t\t\t\t{proxylib.DROP, len(getHello)}, {proxylib.MORE, 24},\n\t\t\t}, proxylib.OK, string(binarymemcache.DeniedMsgBase))\n\t\t},\n\t},\n\t{\n\t\t\"bin get more\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"get\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tdata := getHello[:10]\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{data}, []ExpFilterOp{{proxylib.MORE, 14}}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"bin get split\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"get\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tdata := getHello\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{data[:10], data[10:]}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(data)}, {proxylib.MORE, 24},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"bin get remaining key\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"get\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tdata := getHello[:26]\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{data}, []ExpFilterOp{\n\t\t\t\t{proxylib.MORE, 3},\n\t\t\t}, proxylib.OK, \"\")\n\t\t},\n\t},\n\t{\n\t\t\"bin set drop and allow\",\n\t\t`\t\t        rule: <\n\t\t          key: \"keyExact\"\n\t\t          value: \"\"\n\t\t\t\t>\n\t\t\t\trule: <\n\t\t\t\t  key: \"command\"\n\t\t\t\t  value: \"set\"\n\t\t        >\n\t\t`,\n\t\tfunc(t *testing.T) {\n\t\t\tCheckOnData(t, 1, false, false, &[][]byte{setHello, getHello}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(setHello)}, {proxylib.DROP, len(getHello)}, {proxylib.MORE, 24},\n\t\t\t}, proxylib.OK, string(binarymemcache.DeniedMsgBase))\n\n\t\t\tCheckOnData(t, 1, true, false, &[][]byte{getHelloResp}, []ExpFilterOp{\n\t\t\t\t{proxylib.PASS, len(getHelloResp)}, {proxylib.INJECT, len(binarymemcache.DeniedMsgBase)},\n\t\t\t}, proxylib.OK, string(binarymemcache.DeniedMsgBase))\n\t\t},\n\t},\n}\n"
  },
  {
    "path": "proxylib/libcilium/proxylib_test.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage libcilium\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n\t\"github.com/cilium/proxy/proxylib/proxylib\"\n\t\"github.com/cilium/proxy/proxylib/test\"\n\t_ \"github.com/cilium/proxy/proxylib/testparsers\"\n)\n\nconst debug = false\n\nfunc TestOpenModule(t *testing.T) {\n\tmod1 := OpenModule([][2]string{}, debug)\n\tif mod1 == 0 {\n\t\tt.Error(\"OpenModule() with empty params failed\")\n\t} else {\n\t\tdefer CloseModule(mod1)\n\t}\n\tmod2 := OpenModule([][2]string{}, debug)\n\tif mod2 == 0 {\n\t\tt.Error(\"OpenModule() with empty params failed\")\n\t} else {\n\t\tdefer CloseModule(mod2)\n\t}\n\tif mod2 != mod1 {\n\t\tt.Error(\"OpenModule() with empty params called again opened a new module\")\n\t}\n\n\tmod3 := OpenModule([][2]string{{\"dummy-key\", \"dummy-value\"}, {\"key2\", \"value2\"}}, debug)\n\tif mod3 != 0 {\n\t\tt.Error(\"OpenModule() with unknown params accepted\")\n\t\tdefer CloseModule(mod3)\n\t}\n\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod4 := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod4 == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod4)\n\t}\n\tif mod4 == mod1 {\n\t\tt.Error(\"OpenModule() should have returned a different module\")\n\t}\n\n\tmod5 := OpenModule([][2]string{{\"access-log-path\", logServer.Path}, {\"node-id\", \"host~127.0.0.1~libcilium~localdomain\"}}, debug)\n\tif mod5 == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod5)\n\t}\n\tif mod5 == mod1 || mod5 == mod2 || mod5 == mod3 || mod5 == mod4 {\n\t\tt.Error(\"OpenModule() should have returned a different module\")\n\t}\n}\n\nfunc TestOnNewConnection(t *testing.T) {\n\tmod := OpenModule([][2]string{}, debug)\n\tif mod == 0 {\n\t\tt.Error(\"OpenModule() with empty params failed\")\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\t// Unkhown parser\n\tCheckOnNewConnection(t, mod, \"invalid-parser-should-not-exist\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\", 80, proxylib.UNKNOWN_PARSER, 0)\n\n\t// Non-numeric destination port\n\tCheckOnNewConnection(t, mod, \"test.passer\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:XYZ\", \"1.1.1.1\",\n\t\t80, proxylib.INVALID_ADDRESS, 0)\n\n\t// Missing Destination port\n\tCheckOnNewConnection(t, mod, \"test.passer\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2\", \"1.1.1.1\",\n\t\t80, proxylib.INVALID_ADDRESS, 0)\n\n\t// Zero Destination port is reserved for wildcarding\n\tCheckOnNewConnection(t, mod, \"test.passer\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:0\", \"1.1.1.1\",\n\t\t80, proxylib.INVALID_ADDRESS, 0)\n\n\t// L7 parser rejecting the connection based on connection metadata\n\tCheckOnNewConnection(t, mod, \"test.passer\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"invalid-policy\",\n\t\t80, proxylib.POLICY_DROP, 0)\n\n\t// Using test parser\n\tCheckOnNewConnection(t, mod, \"test.passer\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\",\n\t\t80, proxylib.OK, 1)\n\n\t// 2nd connection\n\tCheckOnNewConnection(t, mod, \"test.passer\", 12345678901234567890, false, 2, 1, \"10.0.0.2:80\", \"1.1.1.1:34567\", \"2.2.2.2\",\n\t\t80, proxylib.OK, 2)\n\n\tCheckClose(t, 1, nil, 2)\n\n\tCheckClose(t, 12345678901234567890, nil, 1)\n}\n\nfunc checkAccessLogs(t *testing.T, logServer *test.AccessLogServer, expPasses, expDrops int) {\n\tt.Helper()\n\tpasses, drops := 0, 0\n\tnWaits := 0\n\tdone := false\n\t// Loop until done or when the timeout has ticked 100 times without any logs being received\n\tfor !done && nWaits < 100 {\n\t\tselect {\n\t\tcase entryType := <-logServer.Logs:\n\t\t\tif entryType == cilium.EntryType_Denied {\n\t\t\t\tdrops++\n\t\t\t} else {\n\t\t\t\tpasses++\n\t\t\t}\n\t\t\t// Start the timeout again (for upto 5 seconds)\n\t\t\tnWaits = 0\n\t\tcase <-time.After(50 * time.Millisecond):\n\t\t\t// Count the number of times we have waited since the last log was received\n\t\t\tnWaits++\n\t\t\t// Finish when expected number of passes and drops have been collected\n\t\t\t// and there are no more logs in the channel for 50 milliseconds\n\t\t\tif passes == expPasses && drops == expDrops {\n\t\t\t\tdone = true\n\t\t\t}\n\t\t}\n\t}\n\n\tif !(passes == expPasses && drops == expDrops) {\n\t\tt.Errorf(\"OnData: Unexpected access log entries, expected %d passes (got %d) and %d drops (got %d).\", expPasses, passes, expDrops, drops)\n\t}\n}\n\nfunc TestOnDataNoPolicy(t *testing.T) {\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\t// Using headertester parser\n\tbuf := CheckOnNewConnection(t, mod, \"test.headerparser\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\",\n\t\t30, proxylib.OK, 1)\n\n\t// Original direction data, drops with remaining data\n\tline1, line2, line3 := \"No policy\\n\", \"Dropped\\n\", \"foo\"\n\tCheckOnData(t, 1, false, false, &[][]byte{[]byte(line1), []byte(line2 + line3)}, []ExpFilterOp{\n\t\t{proxylib.DROP, len(line1)},\n\t\t{proxylib.DROP, len(line2)},\n\t\t{proxylib.MORE, 1},\n\t}, proxylib.OK, \"Line dropped: \"+line1+\"Line dropped: \"+line2)\n\n\t// No new input\n\tCheckOnData(t, 1, false, false, &[][]byte{[]byte(line3)}, []ExpFilterOp{\n\t\t{proxylib.MORE, 1},\n\t}, proxylib.OK, \"\")\n\n\t// Empty\n\tCheckOnData(t, 1, false, false, &[][]byte{}, []ExpFilterOp{}, proxylib.OK, \"\")\n\n\texpPasses, expDrops := 0, 2\n\tcheckAccessLogs(t, logServer, expPasses, expDrops)\n\n\tCheckClose(t, 1, buf, 1)\n}\n\ntype PanicParserFactory struct{}\n\nvar panicParserFactory *PanicParserFactory\n\ntype PanicParser struct {\n\tconnection *proxylib.Connection\n}\n\nfunc (p *PanicParserFactory) Create(connection *proxylib.Connection) interface{} {\n\tlogrus.Debugf(\"PanicParserFactory: Create: %v\", connection)\n\treturn &PanicParser{connection: connection}\n}\n\n// Parses individual lines and verifies them against the policy\nfunc (p *PanicParser) OnData(reply, endStream bool, data [][]byte) (proxylib.OpType, int) {\n\tif !reply {\n\t\tpanic(fmt.Errorf(\"PanicParser OnData(reply=%t, endStream=%t, data=%v) panicing...\", reply, endStream, data))\n\t}\n\treturn proxylib.NOP, 0\n}\n\nfunc TestOnDataPanic(t *testing.T) {\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\t// This registation will remain after this test.\n\tproxylib.RegisterParserFactory(\"test.panicparser\", panicParserFactory)\n\n\t// Using headertester parser\n\tbuf := CheckOnNewConnection(t, mod, \"test.panicparser\", 11, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\",\n\t\t30, proxylib.OK, 1)\n\n\t// Original direction data, drops with remaining data\n\tCheckOnData(t, 11, false, false, &[][]byte{[]byte(\"foo\")}, []ExpFilterOp{}, proxylib.PARSER_ERROR, \"\")\n\n\texpPasses, expDrops := 0, 1\n\tcheckAccessLogs(t, logServer, expPasses, expDrops)\n\n\tCheckClose(t, 11, buf, 1)\n}\n\nfunc insertPolicyText(t *testing.T, mod uint64, version string, policies []string) bool {\n\treturn insertPolicyTextRaw(t, mod, version, policies, \"\") == nil\n}\n\nfunc insertPolicyTextRaw(t *testing.T, mod uint64, version string, policies []string, expectFail string) error {\n\tinstance := proxylib.FindInstance(mod)\n\tif instance == nil {\n\t\tt.Errorf(\"Policy Update failed to get the library instance.\")\n\t} else {\n\t\treturn instance.InsertPolicyText(version, policies, expectFail)\n\t}\n\treturn nil\n}\n\nfunc TestUnsupportedL7Drops(t *testing.T) {\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\tinsertPolicyText(t, mod, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    kafka_rules: <\n\t\t      kafka_rules: <\n\t\t\ttopic: \"Topic\"\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\t// Using headertester parser\n\tbuf := CheckOnNewConnection(t, mod, \"test.headerparser\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\",\n\t\t256, proxylib.OK, 1)\n\n\t// Original direction data, drops with remaining data\n\tline1, line2, line3, line4 := \"Beginning----\\n\", \"foo\\n\", \"----End\\n\", \"\\n\"\n\tdata := line1 + line2 + line3 + line4\n\tCheckOnData(t, 1, false, false, &[][]byte{[]byte(data)}, []ExpFilterOp{\n\t\t{proxylib.DROP, len(line1)},\n\t\t{proxylib.DROP, len(line2)},\n\t\t{proxylib.DROP, len(line3)},\n\t\t{proxylib.DROP, len(line4)},\n\t}, proxylib.OK, \"Line dropped: \"+line1+\"Line dropped: \"+line2+\"Line dropped: \"+line3+\"Line dropped: \"+line4)\n\n\texpPasses, expDrops := 0, 4\n\tcheckAccessLogs(t, logServer, expPasses, expDrops)\n\n\tCheckClose(t, 1, buf, 1)\n}\n\nfunc TestUnsupportedL7DropsGeneric(t *testing.T) {\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\tinsertPolicyText(t, mod, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"this-parser-does-not-exist\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t        rule: <\n\t\t          key: \"prefix\"\n\t\t          value: \"Beginning\"\n\t\t        >\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\t// Using headertester parser\n\tbuf := CheckOnNewConnection(t, mod, \"test.headerparser\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\",\n\t\t256, proxylib.OK, 1)\n\n\t// Original direction data, drops with remaining data\n\tline1, line2, line3, line4 := \"Beginning----\\n\", \"foo\\n\", \"----End\\n\", \"\\n\"\n\tdata := line1 + line2 + line3 + line4\n\tCheckOnData(t, 1, false, false, &[][]byte{[]byte(data)}, []ExpFilterOp{\n\t\t{proxylib.DROP, len(line1)},\n\t\t{proxylib.DROP, len(line2)},\n\t\t{proxylib.DROP, len(line3)},\n\t\t{proxylib.DROP, len(line4)},\n\t}, proxylib.OK, \"Line dropped: \"+line1+\"Line dropped: \"+line2+\"Line dropped: \"+line3+\"Line dropped: \"+line4)\n\n\texpPasses, expDrops := 0, 4\n\tcheckAccessLogs(t, logServer, expPasses, expDrops)\n\n\tCheckClose(t, 1, buf, 1)\n}\n\nfunc TestEnvoyL7DropsGeneric(t *testing.T) {\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\tinsertPolicyText(t, mod, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"envoy.filter.network.test\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t        rule: <\n\t\t          key: \"action\"\n\t\t          value: \"drop\"\n\t\t        >\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\t// Using headertester parser\n\tbuf := CheckOnNewConnection(t, mod, \"test.headerparser\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\",\n\t\t256, proxylib.OK, 1)\n\n\t// Original direction data, drops with remaining data\n\tline1, line2, line3, line4 := \"Beginning----\\n\", \"foo\\n\", \"----End\\n\", \"\\n\"\n\tdata := line1 + line2 + line3 + line4\n\tCheckOnData(t, 1, false, false, &[][]byte{[]byte(data)}, []ExpFilterOp{\n\t\t{proxylib.DROP, len(line1)},\n\t\t{proxylib.DROP, len(line2)},\n\t\t{proxylib.DROP, len(line3)},\n\t\t{proxylib.DROP, len(line4)},\n\t}, proxylib.OK, \"Line dropped: \"+line1+\"Line dropped: \"+line2+\"Line dropped: \"+line3+\"Line dropped: \"+line4)\n\n\texpPasses, expDrops := 0, 4\n\tcheckAccessLogs(t, logServer, expPasses, expDrops)\n\n\tCheckClose(t, 1, buf, 1)\n}\n\nfunc TestTwoRulesOnSamePortFirstNoL7(t *testing.T) {\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\tinsertPolicyText(t, mod, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 11\n\t\t  >\n\t\t  rules: <\n\t\t    remote_policies: 11\n\t\t    http_rules: <\n\t\t      http_rules: <\n\t\t\theaders: <\n\t\t\t  name: \":path\"\n\t\t\t  exact_match: \"/allowed\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n}\n\nfunc TestTwoRulesOnSamePortFirstNoL7Generic(t *testing.T) {\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\tinsertPolicyText(t, mod, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 11\n\t\t  >\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"test.headerparser\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t        rule: <\n\t\t          key: \"prefix\"\n\t\t          value: \"Beginning\"\n\t\t        >\n\t\t      >\n\t\t      l7_allow_rules: <\n\t\t        rule: <\n\t\t          key: \"suffix\"\n\t\t          value: \"End\"\n\t\t        >\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n}\n\nfunc TestTwoRulesOnSamePortMismatchingL7(t *testing.T) {\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\t// This registation will remain after this test.\n\tproxylib.RegisterL7RuleParser(\"PortNetworkPolicyRule_HttpRules\", func(*cilium.PortNetworkPolicyRule) []proxylib.L7NetworkPolicyRule {\n\t\treturn nil\n\t})\n\n\terr := insertPolicyTextRaw(t, mod, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 11\n\t\t    http_rules: <\n\t\t      http_rules: <\n\t\t\theaders: <\n\t\t\t  name: \":path\"\n\t\t\t  exact_match: \"/allowed\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"test.headerparser\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t        rule: <\n\t\t          key: \"prefix\"\n\t\t          value: \"Beginning\"\n\t\t        >\n\t\t      >\n\t\t      l7_allow_rules: <\n\t\t        rule: <\n\t\t          key: \"suffix\"\n\t\t          value: \"End\"\n\t\t        >\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`}, \"update\")\n\tif err == nil {\n\t\tt.Errorf(\"Expected Policy Update to fail due to mismatching L7 protocols on the same port, but it succeeded\")\n\t} else {\n\t\tlogrus.Debugf(\"Expected error: %s\", err)\n\t}\n}\n\nfunc TestSimplePolicy(t *testing.T) {\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\tinsertPolicyText(t, mod, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 1\n\t\t    remote_policies: 3\n\t\t    remote_policies: 4\n\t\t    l7_proto: \"test.headerparser\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t        rule: <\n\t\t          key: \"prefix\"\n\t\t          value: \"Beginning\"\n\t\t        >\n\t\t      >\n\t\t      l7_allow_rules: <\n\t\t        rule: <\n\t\t          key: \"suffix\"\n\t\t          value: \"End\"\n\t\t        >\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\t// Using headertester parser\n\tbuf := CheckOnNewConnection(t, mod, \"test.headerparser\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\",\n\t\t80, proxylib.OK, 1)\n\n\t// Original direction data, drops with remaining data\n\tline1, line2, line3, line4 := \"Beginning----\\n\", \"foo\\n\", \"----End\\n\", \"\\n\"\n\tdata := line1 + line2 + line3 + line4\n\tCheckOnData(t, 1, false, false, &[][]byte{[]byte(data)}, []ExpFilterOp{\n\t\t{proxylib.PASS, len(line1)},\n\t\t{proxylib.DROP, len(line2)},\n\t\t{proxylib.PASS, len(line3)},\n\t\t{proxylib.DROP, len(line4)},\n\t}, proxylib.OK, \"Line dropped: \"+line2+\"Line dropped: \"+line4)\n\n\texpPasses, expDrops := 2, 2\n\tcheckAccessLogs(t, logServer, expPasses, expDrops)\n\n\tCheckClose(t, 1, buf, 1)\n}\n\nfunc TestAllowAllPolicy(t *testing.T) {\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\tinsertPolicyText(t, mod, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    l7_proto: \"test.headerparser\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <>\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\t// Using headertester parser\n\tbuf := CheckOnNewConnection(t, mod, \"test.headerparser\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\",\n\t\t80, proxylib.OK, 1)\n\n\t// Original direction data, drops with remaining data\n\tline1, line2, line3, line4 := \"Beginning----\\n\", \"foo\\n\", \"----End\\n\", \"\\n\"\n\tdata := line1 + line2 + line3 + line4\n\tCheckOnData(t, 1, false, false, &[][]byte{[]byte(data)}, []ExpFilterOp{\n\t\t{proxylib.PASS, len(line1)},\n\t\t{proxylib.PASS, len(line2)},\n\t\t{proxylib.PASS, len(line3)},\n\t\t{proxylib.PASS, len(line4)},\n\t}, proxylib.OK, \"\")\n\n\texpPasses, expDrops := 4, 0\n\tcheckAccessLogs(t, logServer, expPasses, expDrops)\n\n\tCheckClose(t, 1, buf, 1)\n}\n\n// L3 drops happen before calling into proxylib, but here we test that the policy update does not\n// accidentally treat deny rules as allow rules.\nfunc TestDenyAllPolicy(t *testing.T) {\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\tinsertPolicyText(t, mod, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n                    remote_policies: 1\n\t\t    l7_proto: \"test.headerparser\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <>\n\t\t    >\n\t\t  >\n\t\t  rules: <\n                    deny: true\n                  >\n\t\t>\n\t\t`})\n\n\t// Using headertester parser\n\tbuf := CheckOnNewConnection(t, mod, \"test.headerparser\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\",\n\t\t80, proxylib.OK, 1)\n\n\t// Original direction data, drops with remaining data\n\tline1, line2, line3, line4 := \"Beginning----\\n\", \"foo\\n\", \"----End\\n\", \"\\n\"\n\tdata := line1 + line2 + line3 + line4\n\tCheckOnData(t, 1, false, false, &[][]byte{[]byte(data)}, []ExpFilterOp{\n\t\t{proxylib.DROP, len(line1)},\n\t\t{proxylib.DROP, len(line2)},\n\t\t{proxylib.DROP, len(line3)},\n\t\t{proxylib.DROP, len(line4)},\n\t}, proxylib.OK, \"Line dropped: \"+line1+\"Line dropped: \"+line2+\"Line dropped: \"+line3+\"Line dropped: \"+line4)\n\n\texpPasses, expDrops := 0, 4\n\tcheckAccessLogs(t, logServer, expPasses, expDrops)\n\n\tCheckClose(t, 1, buf, 1)\n}\n\nfunc TestDenyPolicy(t *testing.T) {\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\tinsertPolicyText(t, mod, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n                    remote_policies: 1\n\t\t    l7_proto: \"test.headerparser\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <>\n\t\t    >\n\t\t  >\n\t\t  rules: <\n                    remote_policies: 42\n                    deny: true\n                  >\n\t\t>\n\t\t`})\n\n\t// deny on ID 42 has no effect on traffic from 1\n\t// Using headertester parser\n\tbuf := CheckOnNewConnection(t, mod, \"test.headerparser\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\",\n\t\t80, proxylib.OK, 1)\n\n\t// Original direction data, drops with remaining data\n\tline1, line2, line3, line4 := \"Beginning----\\n\", \"foo\\n\", \"----End\\n\", \"\\n\"\n\tdata := line1 + line2 + line3 + line4\n\tCheckOnData(t, 1, false, false, &[][]byte{[]byte(data)}, []ExpFilterOp{\n\t\t{proxylib.PASS, len(line1)},\n\t\t{proxylib.PASS, len(line2)},\n\t\t{proxylib.PASS, len(line3)},\n\t\t{proxylib.PASS, len(line4)},\n\t}, proxylib.OK, \"\")\n\n\texpPasses, expDrops := 4, 0\n\tcheckAccessLogs(t, logServer, expPasses, expDrops)\n\n\tCheckClose(t, 1, buf, 1)\n}\n\nfunc TestAllowEmptyPolicy(t *testing.T) {\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\tinsertPolicyText(t, mod, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    l7_proto: \"test.headerparser\"\n\t\t  >\n\t\t>\n\t\t`})\n\n\t// Using headertester parser, policy name matches the policy\n\tbuf := CheckOnNewConnection(t, mod, \"test.headerparser\", 1, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\",\n\t\t80, proxylib.OK, 1)\n\n\t// Original direction data, drops with remaining data\n\tline1, line2, line3, line4 := \"Beginning----\\n\", \"foo\\n\", \"----End\\n\", \"\\n\"\n\tCheckOnData(t, 1, false, false, &[][]byte{[]byte(line1), []byte(line2), []byte(line3), []byte(line4)}, []ExpFilterOp{\n\t\t{proxylib.PASS, len(line1)},\n\t\t{proxylib.PASS, len(line2)},\n\t\t{proxylib.PASS, len(line3)},\n\t\t{proxylib.PASS, len(line4)},\n\t}, proxylib.OK, \"\")\n\n\t// Connection using a different policy name still drops\n\tCheckOnNewConnection(t, mod, \"test.headerparser\", 2, true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"2.2.2.2\",\n\t\t80, proxylib.OK, 2)\n\tCheckOnData(t, 2, false, false, &[][]byte{[]byte(line1)}, []ExpFilterOp{\n\t\t{proxylib.DROP, len(line1)},\n\t}, proxylib.OK, \"Line dropped: \"+line1)\n\n\texpPasses, expDrops := 4, 1\n\tcheckAccessLogs(t, logServer, expPasses, expDrops)\n\n\tCheckClose(t, 2, buf, 2)\n\tCheckClose(t, 1, buf, 1)\n}\n\nfunc TestAllowAllPolicyL3Egress(t *testing.T) {\n\tlogServer := test.StartAccessLogServer(\"access_log.sock\", 10)\n\tdefer logServer.Close()\n\n\tmod := OpenModule([][2]string{{\"access-log-path\", logServer.Path}}, debug)\n\tif mod == 0 {\n\t\tt.Errorf(\"OpenModule() with access log path %s failed\", logServer.Path)\n\t} else {\n\t\tdefer CloseModule(mod)\n\t}\n\n\t// logging.ToggleDebugLogs(true)\n\t// logrus.SetLevel(logrus.DebugLevel)\n\n\tinsertPolicyText(t, mod, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 42\n\t\tegress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    remote_policies: 2\n\t\t    l7_proto: \"test.headerparser\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <>\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\n\t// Using headertester parser\n\tbuf := CheckOnNewConnection(t, mod, \"test.headerparser\", 1, false, 42, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\",\n\t\t80, proxylib.OK, 1)\n\n\t// Original direction data, drops with remaining data\n\tline1, line2, line3, line4 := \"Beginning----\\n\", \"foo\\n\", \"----End\\n\", \"\\n\"\n\tdata := line1 + line2 + line3 + line4\n\tCheckOnData(t, 1, false, false, &[][]byte{[]byte(data)}, []ExpFilterOp{\n\t\t{proxylib.PASS, len(line1)},\n\t\t{proxylib.PASS, len(line2)},\n\t\t{proxylib.PASS, len(line3)},\n\t\t{proxylib.PASS, len(line4)},\n\t}, proxylib.OK, \"\")\n\n\texpPasses, expDrops := 4, 0\n\tcheckAccessLogs(t, logServer, expPasses, expDrops)\n\n\tCheckClose(t, 1, buf, 1)\n}\n"
  },
  {
    "path": "proxylib/libcilium.h",
    "content": "/* Code generated by cmd/cgo; DO NOT EDIT. */\n\n/* package github.com/cilium/proxy/proxylib */\n\n\n#line 1 \"cgo-builtin-export-prolog\"\n\n#include <stddef.h>\n\n#ifndef GO_CGO_EXPORT_PROLOGUE_H\n#define GO_CGO_EXPORT_PROLOGUE_H\n\n#ifndef GO_CGO_GOSTRING_TYPEDEF\ntypedef struct { const char *p; ptrdiff_t n; } _GoString_;\nextern size_t _GoStringLen(_GoString_ s);\nextern const char *_GoStringPtr(_GoString_ s);\n#endif\n\n#endif\n\n/* Start of preamble from import \"C\" comments.  */\n\n\n#line 9 \"proxylib.go\"\n\n#include \"types.h\"\n\n#line 1 \"cgo-generated-wrapper\"\n\n\n/* End of preamble from import \"C\" comments.  */\n\n\n/* Start of boilerplate cgo prologue.  */\n#line 1 \"cgo-gcc-export-header-prolog\"\n\n#ifndef GO_CGO_PROLOGUE_H\n#define GO_CGO_PROLOGUE_H\n\ntypedef signed char GoInt8;\ntypedef unsigned char GoUint8;\ntypedef short GoInt16;\ntypedef unsigned short GoUint16;\ntypedef int GoInt32;\ntypedef unsigned int GoUint32;\ntypedef long long GoInt64;\ntypedef unsigned long long GoUint64;\ntypedef GoInt64 GoInt;\ntypedef GoUint64 GoUint;\ntypedef size_t GoUintptr;\ntypedef float GoFloat32;\ntypedef double GoFloat64;\n#ifdef _MSC_VER\n#if !defined(__cplusplus) || _MSVC_LANG <= 201402L\n#include <complex.h>\ntypedef _Fcomplex GoComplex64;\ntypedef _Dcomplex GoComplex128;\n#else\n#include <complex>\ntypedef std::complex<float> GoComplex64;\ntypedef std::complex<double> GoComplex128;\n#endif\n#else\ntypedef float _Complex GoComplex64;\ntypedef double _Complex GoComplex128;\n#endif\n\n/*\n  static assertion to make sure the file is being used on architecture\n  at least with matching size of GoInt.\n*/\ntypedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1];\n\n#ifndef GO_CGO_GOSTRING_TYPEDEF\ntypedef _GoString_ GoString;\n#endif\ntypedef void *GoMap;\ntypedef void *GoChan;\ntypedef struct { void *t; void *v; } GoInterface;\ntypedef struct { void *data; GoInt len; GoInt cap; } GoSlice;\n\n#endif\n\n/* End of boilerplate cgo prologue.  */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n// OnNewConnection is used to register a new connection of protocol 'proto'.\n// Note that the 'origBuf' and replyBuf' type '*[]byte' corresponds to 'InjectBuf' type, but due to\n// cgo export restrictions we can't use the go type in the prototype.\n//\nextern FilterResult OnNewConnection(GoUint64 instanceId, GoString proto, GoUint64 connectionId, GoUint8 ingress, GoUint32 srcId, GoUint32 dstId, GoString srcAddr, GoString dstAddr, GoString policyName, GoSlice* origBuf, GoSlice* replyBuf);\n\n// Each connection is assumed to be called from a single thread, so accessing connection metadata\n// does not need protection.\n//\n// OnData gets all the unparsed data the datapath has received so far. The data is provided to the parser\n// associated with the connection, and the parser is expected to find if the data frame contains enough data\n// to make a PASS/DROP decision for the whole data frame. Note that the whole data frame need not be received,\n// if the decision including the length of the data frame in bytes can be determined based on the beginning of\n// the data frame only (e.g., headers including the length of the data frame). The parser returns a decision\n// with the number of bytes on which the decision applies. If more data is available, then the parser will be\n// called again with the remaining data. Parser needs to return MORE if a decision can't be made with\n// the available data, including the minimum number of additional bytes that is needed before the parser is\n// called again.\n//\n// The parser can also inject at arbitrary points in the data stream. This is indecated by an INJECT operation\n// with the number of bytes to be injected. The actual bytes to be injected are provided via an Inject()\n// callback prior to returning the INJECT operation. The Inject() callback operates on a limited size buffer\n// provided by the datapath, and multiple INJECT operations may be needed to inject large amounts of data.\n// Since we get the data on one direction at a time, any frames to be injected in the reverse direction\n// are placed in the reverse direction buffer, from where the datapath injects the data before calling\n// us again for the reverse direction input.\n//\nextern FilterResult OnData(GoUint64 connectionId, GoUint8 reply, GoUint8 endStream, GoSlice* data, GoSlice* filterOps);\n\n// Make this more general connection event callback\n//\nextern void Close(GoUint64 connectionId);\n\n// OpenModule is called before any other APIs.\n// Called concurrently by different filter instances.\n// Returns a library instance ID that must be passed to all other API calls.\n// Calls with the same parameters will return the same instance.\n// Zero return value indicates an error.\n//\nextern GoUint64 OpenModule(GoSlice params, GoUint8 debug);\nextern void CloseModule(GoUint64 id);\n\n#ifdef __cplusplus\n}\n#endif\n"
  },
  {
    "path": "proxylib/memcached/binary/parser.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage binary\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"strconv\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n\t\"github.com/cilium/proxy/proxylib/memcached/meta\"\n\t\"github.com/cilium/proxy/proxylib/proxylib\"\n)\n\n// ParserFactory implements proxylib.ParserFactory\ntype ParserFactory struct{}\n\n// Create creates binary memcached parser\nfunc (p *ParserFactory) Create(connection *proxylib.Connection) interface{} {\n\tlogrus.Debugf(\"ParserFactory: Create: %v\", connection)\n\treturn &Parser{connection: connection, injectQueue: make([]queuedInject, 0)}\n}\n\n// compile time check for interface implementation\nvar _ proxylib.ParserFactory = &ParserFactory{}\n\n// ParserFactoryInstance creates binary parser for unified parser\nvar ParserFactoryInstance *ParserFactory\n\n// Parser implements proxylib.Parser\ntype Parser struct {\n\tconnection *proxylib.Connection\n\n\trequestCount uint32\n\treplyCount   uint32\n\tinjectQueue  []queuedInject\n}\n\nvar _ proxylib.Parser = &Parser{}\n\nconst headerSize = 24\n\n// OnData parses binary memcached data\nfunc (p *Parser) OnData(reply, endStream bool, dataBuffers [][]byte) (proxylib.OpType, int) {\n\tif reply {\n\t\tif p.injectFromQueue() {\n\t\t\treturn proxylib.INJECT, len(DeniedMsgBase)\n\t\t}\n\t\tif len(dataBuffers) == 0 {\n\t\t\treturn proxylib.NOP, 0\n\t\t}\n\t}\n\n\t//TODO don't copy data from buffers\n\tdata := bytes.Join(dataBuffers, []byte{})\n\tlogrus.Debugf(\"Data length: %d\", len(data))\n\n\tif headerSize > len(data) {\n\t\theaderMissing := headerSize - len(data)\n\t\tlogrus.Debugf(\"Did not receive needed header data, need %d more bytes\", headerMissing)\n\t\treturn proxylib.MORE, headerMissing\n\t}\n\n\tbodyLength := binary.BigEndian.Uint32(data[8:12])\n\n\tkeyLength := binary.BigEndian.Uint16(data[2:4])\n\textrasLength := data[4]\n\n\tif keyLength > 0 {\n\t\tneededData := headerSize + int(keyLength) + int(extrasLength)\n\t\tif neededData > len(data) {\n\t\t\tkeyMissing := neededData - len(data)\n\t\t\tlogrus.Debugf(\"Did not receive enough bytes for key, need %d more bytes\", keyMissing)\n\t\t\treturn proxylib.MORE, keyMissing\n\t\t}\n\t}\n\n\topcode, key, err := p.getOpcodeAndKey(data, extrasLength, keyLength)\n\tif err != 0 {\n\t\treturn proxylib.ERROR, int(err)\n\t}\n\n\tlogEntry := &cilium.LogEntry_GenericL7{\n\t\tGenericL7: &cilium.L7LogEntry{\n\t\t\tProto: \"binarymemcached\",\n\t\t\tFields: map[string]string{\n\t\t\t\t\"opcode\": strconv.Itoa(int(opcode)),\n\t\t\t\t\"key\":    string(key),\n\t\t\t},\n\t\t},\n\t}\n\n\t// we don't filter reply traffic\n\tif reply {\n\t\tlogrus.Debugf(\"reply, passing %d bytes\", len(data))\n\t\tp.connection.Log(cilium.EntryType_Response, logEntry)\n\t\tp.replyCount++\n\t\treturn proxylib.PASS, int(bodyLength + headerSize)\n\t}\n\n\tp.requestCount++\n\n\tmatches := p.connection.Matches(meta.MemcacheMeta{\n\t\tOpcode: opcode,\n\t\tKeys:   [][]byte{key},\n\t})\n\tif matches {\n\t\tp.connection.Log(cilium.EntryType_Request, logEntry)\n\t\treturn proxylib.PASS, int(bodyLength + headerSize)\n\t}\n\n\tmagic := ResponseMagic | data[0]\n\n\t// This is done to ensure in-order replies\n\tif p.requestCount == p.replyCount+1 {\n\t\tp.injectDeniedMessage(magic)\n\t} else {\n\t\tp.injectQueue = append(p.injectQueue, queuedInject{magic, p.requestCount})\n\t}\n\n\tp.injectQueue = append(p.injectQueue, queuedInject{magic, p.requestCount})\n\n\tp.connection.Log(cilium.EntryType_Denied, logEntry)\n\treturn proxylib.DROP, int(bodyLength + headerSize)\n}\n\ntype queuedInject struct {\n\tmagic     byte\n\trequestID uint32\n}\n\nfunc (p *Parser) injectDeniedMessage(magic byte) {\n\tdeniedMsg := make([]byte, len(DeniedMsgBase))\n\tcopy(deniedMsg, DeniedMsgBase)\n\n\tdeniedMsg[0] = magic\n\n\tp.connection.Inject(true, deniedMsg)\n\tp.replyCount++\n}\n\nfunc (p *Parser) injectFromQueue() bool {\n\tif len(p.injectQueue) > 0 {\n\t\tif p.injectQueue[0].requestID == p.replyCount+1 {\n\t\t\tp.injectDeniedMessage(p.injectQueue[0].magic)\n\t\t\tp.injectQueue = p.injectQueue[1:]\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nconst (\n\t// RequestMagic says that memcache frame is a request\n\tRequestMagic = 0x80\n\t// ResponseMagic says that memcache frame is a response\n\tResponseMagic = 0x81\n)\n\nfunc (p *Parser) getOpcodeAndKey(data []byte, extrasLength byte, keyLength uint16) (byte, []byte, proxylib.OpError) {\n\tif data[0]&RequestMagic != RequestMagic {\n\t\tlogrus.Warnf(\"Direction bit is 'response', but memcached parser only parses requests\")\n\t\treturn 0, []byte{}, proxylib.ERROR_INVALID_FRAME_TYPE\n\t}\n\n\topcode := data[1]\n\tkey := getMemcacheKey(data, extrasLength, keyLength)\n\n\treturn opcode, key, 0\n}\n\nfunc getMemcacheKey(packet []byte, extrasLength byte, keyLength uint16) []byte {\n\tif keyLength == 0 {\n\t\treturn []byte{}\n\t}\n\treturn packet[headerSize+int(extrasLength) : headerSize+int(extrasLength)+int(keyLength)]\n}\n\n// DeniedMsgBase is sent if policy denies the request. Exported for tests\nvar DeniedMsgBase = []byte{\n\t0x81, 0, 0, 0,\n\t0, 0, 0, 8,\n\t0, 0, 0, 0x0d,\n\t0, 0, 0, 0,\n\t0, 0, 0, 0,\n\t0, 0, 0, 0,\n\t'a', 'c', 'c',\n\t'e', 's', 's',\n\t' ', 'd', 'e',\n\t'n', 'i', 'e',\n\t'd'}\n"
  },
  {
    "path": "proxylib/memcached/binary/parser_test.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage binary\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestMemcacheGetKey(c *testing.T) {\n\tpacket := []byte{\n\t\t0x80, 0, 0, 0x5,\n\t\t0, 0, 0, 0,\n\t\t0, 0, 0, 0x5,\n\t\t0, 0, 0, 0,\n\t\t0, 0, 0, 0,\n\t\t0, 0, 0, 0,\n\t\t'T', 'e', 's', 't',\n\t\t'1',\n\t}\n\n\tkey := getMemcacheKey(packet, 0, 5)\n\n\trequire.Equal(c, \"Test1\", string(key))\n\n\tpacket = []byte{\n\t\t0x80, 0, 0, 0x5,\n\t\t0x4, 0, 0, 0,\n\t\t0, 0, 0, 0x5,\n\t\t0, 0, 0, 0,\n\t\t0, 0, 0, 0,\n\t\t0, 0, 0, 0,\n\t\t'e', 'x', 't', 'r',\n\t\t'T', 'e', 's', 't',\n\t\t'1',\n\t}\n\n\tkey = getMemcacheKey(packet, 4, 5)\n\n\trequire.Equal(c, \"Test1\", string(key))\n\n\tpacket = []byte{\n\t\t0x80, 0x8, 0, 0x0,\n\t\t0x4, 0, 0, 0,\n\t\t0, 0, 0, 0x4,\n\t\t0, 0, 0, 0,\n\t\t0, 0, 0, 0,\n\t\t0, 0, 0, 0,\n\t\t0, 0, 0x1c, 0x20,\n\t}\n\n\tkey = getMemcacheKey(packet, 4, 0)\n\n\trequire.Equal(c, \"\", string(key))\n}\n"
  },
  {
    "path": "proxylib/memcached/meta/meta.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\n// text memcache protocol parser based on https://github.com/memcached/memcached/blob/master/doc/protocol.txt\n\npackage meta\n\n// MemcacheMeta gathers information about memcache frame for L7 rules matching\ntype MemcacheMeta struct {\n\t// for text protocol\n\tCommand string\n\t// for binary protocol\n\tOpcode byte\n\tKeys   [][]byte\n}\n\n// IsBinary tells whether meta instance is for text or binary protocol\nfunc (m *MemcacheMeta) IsBinary() bool {\n\treturn len(m.Command) == 0\n}\n"
  },
  {
    "path": "proxylib/memcached/parser.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\n// text memcache protocol parser based on https://github.com/memcached/memcached/blob/master/doc/protocol.txt\n\npackage memcache\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"regexp\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n\n\t\"github.com/cilium/proxy/proxylib/memcached/binary\"\n\t\"github.com/cilium/proxy/proxylib/memcached/meta\"\n\t\"github.com/cilium/proxy/proxylib/memcached/text\"\n\t\"github.com/cilium/proxy/proxylib/proxylib\"\n)\n\n// Rule matches against memcached requests\ntype Rule struct {\n\t// allowed commands\n\tcommands memcacheCommandSet\n\t// compiled regex\n\tkeyExact  []byte\n\tkeyPrefix []byte\n\tregex     *regexp.Regexp\n\n\tempty bool\n}\n\n// Matches returns true if the Rule matches\nfunc (rule *Rule) Matches(data interface{}) bool {\n\tlogrus.Debugf(\"memcache checking rule %v\", *rule)\n\n\tpacketMeta, ok := data.(meta.MemcacheMeta)\n\n\tif !ok {\n\t\tlogrus.Debugf(\"Wrong type supplied to Rule.Matches\")\n\t\treturn false\n\t}\n\n\tif rule.empty {\n\t\treturn true\n\t}\n\n\tif packetMeta.IsBinary() {\n\t\tif !rule.matchOpcode(packetMeta.Opcode) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tif !rule.matchCommand(packetMeta.Command) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif len(rule.keyExact) > 0 {\n\t\tfor _, key := range packetMeta.Keys {\n\t\t\tif !bytes.Equal(rule.keyExact, key) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\n\tif len(rule.keyPrefix) > 0 {\n\t\tfor _, key := range packetMeta.Keys {\n\t\t\tif !bytes.HasPrefix(key, rule.keyPrefix) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\n\tif rule.regex != nil {\n\t\tfor _, key := range packetMeta.Keys {\n\t\t\tif !rule.regex.Match(key) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\n\tlogrus.Debugf(\"No key rule specified, accepted by command match\")\n\treturn true\n}\n\nfunc (rule *Rule) matchCommand(cmd string) bool {\n\t_, ok := rule.commands.text[cmd]\n\treturn ok\n}\n\nfunc (rule *Rule) matchOpcode(code byte) bool {\n\t_, ok := rule.commands.binary[code]\n\treturn ok\n}\n\n// L7RuleParser parses protobuf L7 rules to and array of Rule\n// May panic\nfunc L7RuleParser(rule *cilium.PortNetworkPolicyRule) []proxylib.L7NetworkPolicyRule {\n\tl7Rules := rule.GetL7Rules()\n\tif l7Rules == nil {\n\t\treturn nil\n\t}\n\n\tallowRules := l7Rules.GetL7AllowRules()\n\trules := make([]proxylib.L7NetworkPolicyRule, 0, len(allowRules))\n\tfor _, l7Rule := range allowRules {\n\t\tvar br Rule\n\t\tvar commandFound = false\n\t\tfor k, v := range l7Rule.Rule {\n\t\t\tswitch k {\n\t\t\tcase \"command\":\n\t\t\t\tbr.commands, commandFound = MemcacheOpCodeMap[v]\n\t\t\tcase \"keyExact\":\n\t\t\t\tbr.keyExact = []byte(v)\n\t\t\tcase \"keyPrefix\":\n\t\t\t\tbr.keyPrefix = []byte(v)\n\t\t\tcase \"keyRegex\":\n\t\t\t\tbr.regex = regexp.MustCompile(v)\n\t\t\tdefault:\n\t\t\t\tproxylib.ParseError(fmt.Sprintf(\"Unsupported key: %s\", k), rule)\n\t\t\t}\n\t\t}\n\t\tif !commandFound {\n\t\t\tif len(br.keyExact) > 0 || len(br.keyPrefix) > 0 || br.regex != nil {\n\t\t\t\tproxylib.ParseError(\"command not specified but key was provided\", rule)\n\t\t\t} else {\n\t\t\t\tbr.empty = true\n\t\t\t}\n\t\t}\n\t\tlogrus.Debugf(\"Parsed Rule pair: %v\", br)\n\t\trules = append(rules, &br)\n\t}\n\treturn rules\n}\n\n// ParserFactory implements proxylib.ParserFactory\ntype ParserFactory struct{}\n\n// Create creates memcached parser\nfunc (p *ParserFactory) Create(connection *proxylib.Connection) interface{} {\n\tlogrus.Debugf(\"ParserFactory: Create: %v\", connection)\n\treturn &Parser{\n\t\tconnection: connection,\n\t}\n}\n\n// compile time check for interface implementation\nvar _ proxylib.ParserFactory = &ParserFactory{}\n\nvar memcacheParserFactory *ParserFactory\n\nconst (\n\tparserName = \"memcache\"\n)\n\nfunc init() {\n\tlogrus.Debug(\"init(): Registering memcacheParserFactory\")\n\tproxylib.RegisterParserFactory(parserName, memcacheParserFactory)\n\tproxylib.RegisterL7RuleParser(parserName, L7RuleParser)\n}\n\n// Parser implements proxylib.Parser\ntype Parser struct {\n\tconnection *proxylib.Connection\n\tparser     proxylib.Parser\n}\n\nvar _ proxylib.Parser = &Parser{}\n\n// OnData parses memcached data\nfunc (p *Parser) OnData(reply, endStream bool, dataBuffers [][]byte) (proxylib.OpType, int) {\n\tif p.parser == nil {\n\t\tvar magicByte byte\n\t\tif len(dataBuffers) > 0 && len(dataBuffers[0]) > 0 {\n\t\t\tmagicByte = dataBuffers[0][0]\n\t\t} else {\n\t\t\treturn proxylib.NOP, 0\n\t\t}\n\n\t\tif magicByte >= 128 {\n\t\t\tp.parser = binary.ParserFactoryInstance.Create(p.connection).(proxylib.Parser)\n\t\t} else {\n\t\t\tp.parser = text.ParserFactoryInstance.Create(p.connection).(proxylib.Parser)\n\t\t}\n\t}\n\treturn p.parser.OnData(reply, endStream, dataBuffers)\n}\n\ntype memcacheCommandSet struct {\n\ttext   map[string]struct{}\n\tbinary map[byte]struct{}\n}\n\n// empty var for filling map below which will be used as set\nvar e = struct{}{}\n\n// MemcacheOpCodeMap maps operation names and groups used in policy rules to sets of operation names and opcodes that are allowed in such a policy rule.\n// for more information on protocol check https://github.com/memcached/memcached/wiki/Protocols\nvar MemcacheOpCodeMap = map[string]memcacheCommandSet{\n\t\"add\": {\n\t\ttext:   map[string]struct{}{\"add\": e},\n\t\tbinary: map[byte]struct{}{2: e, 18: e},\n\t},\n\t\"set\": {\n\t\ttext:   map[string]struct{}{\"set\": e},\n\t\tbinary: map[byte]struct{}{1: e, 17: e},\n\t},\n\t\"replace\": {\n\t\ttext:   map[string]struct{}{\"replace\": e},\n\t\tbinary: map[byte]struct{}{3: e, 19: e},\n\t},\n\t\"append\": {\n\t\ttext:   map[string]struct{}{\"append\": e},\n\t\tbinary: map[byte]struct{}{14: e, 25: e},\n\t},\n\t\"prepend\": {\n\t\ttext:   map[string]struct{}{\"prepend\": e},\n\t\tbinary: map[byte]struct{}{15: e, 26: e},\n\t},\n\t\"cas\": {\n\t\ttext:   map[string]struct{}{\"cas\": e},\n\t\tbinary: map[byte]struct{}{},\n\t},\n\t\"incr\": {\n\t\ttext:   map[string]struct{}{\"incr\": e},\n\t\tbinary: map[byte]struct{}{5: e, 21: e},\n\t},\n\t\"decr\": {\n\t\ttext:   map[string]struct{}{\"decr\": e},\n\t\tbinary: map[byte]struct{}{6: e, 22: e},\n\t},\n\t\"storage\": {\n\t\ttext: map[string]struct{}{\n\t\t\t\"add\":     e,\n\t\t\t\"set\":     e,\n\t\t\t\"replace\": e,\n\t\t\t\"append\":  e,\n\t\t\t\"prepend\": e,\n\t\t\t\"cas\":     e,\n\t\t\t\"incr\":    e,\n\t\t\t\"decr\":    e,\n\t\t},\n\t\tbinary: map[byte]struct{}{\n\t\t\t1:  e,\n\t\t\t2:  e,\n\t\t\t3:  e,\n\t\t\t5:  e,\n\t\t\t6:  e,\n\t\t\t17: e,\n\t\t\t18: e,\n\t\t\t19: e,\n\t\t\t21: e,\n\t\t\t22: e,\n\t\t\t25: e,\n\t\t\t26: e,\n\t\t},\n\t},\n\n\t\"get\": {\n\t\ttext: map[string]struct{}{\"get\": e, \"gets\": e},\n\t\tbinary: map[byte]struct{}{\n\t\t\t0:  e,\n\t\t\t9:  e,\n\t\t\t12: e,\n\t\t\t13: e,\n\t\t},\n\t},\n\n\t\"delete\": {\n\t\ttext: map[string]struct{}{\"delete\": e},\n\t\tbinary: map[byte]struct{}{\n\t\t\t4:  e,\n\t\t\t20: e,\n\t\t},\n\t},\n\n\t\"touch\": {\n\t\ttext:   map[string]struct{}{\"touch\": e},\n\t\tbinary: map[byte]struct{}{28: e},\n\t},\n\n\t\"gat\": {\n\t\ttext:   map[string]struct{}{\"gat\": e, \"gats\": e},\n\t\tbinary: map[byte]struct{}{29: e, 30: e},\n\t},\n\n\t\"writeGroup\": {\n\t\ttext: map[string]struct{}{\n\t\t\t\"add\":     e,\n\t\t\t\"set\":     e,\n\t\t\t\"replace\": e,\n\t\t\t\"append\":  e,\n\t\t\t\"prepend\": e,\n\t\t\t\"cas\":     e,\n\t\t\t\"incr\":    e,\n\t\t\t\"decr\":    e,\n\t\t\t\"delete\":  e,\n\t\t\t\"touch\":   e,\n\t\t},\n\t\tbinary: map[byte]struct{}{\n\t\t\t1:  e,\n\t\t\t2:  e,\n\t\t\t3:  e,\n\t\t\t4:  e,\n\t\t\t5:  e,\n\t\t\t6:  e,\n\t\t\t17: e,\n\t\t\t18: e,\n\t\t\t19: e,\n\t\t\t20: e,\n\t\t\t21: e,\n\t\t\t22: e,\n\t\t\t25: e,\n\t\t\t26: e,\n\t\t\t28: e,\n\t\t},\n\t},\n\n\t\"slabs\": {\n\t\ttext:   map[string]struct{}{\"slabs\": e},\n\t\tbinary: map[byte]struct{}{},\n\t},\n\n\t\"lru\": {\n\t\ttext:   map[string]struct{}{\"lru\": e},\n\t\tbinary: map[byte]struct{}{},\n\t},\n\n\t\"lru_crawler\": {\n\t\ttext:   map[string]struct{}{\"lru_crawler\": e},\n\t\tbinary: map[byte]struct{}{},\n\t},\n\n\t\"watch\": {\n\t\ttext:   map[string]struct{}{\"watch\": e},\n\t\tbinary: map[byte]struct{}{},\n\t},\n\n\t\"stats\": {\n\t\ttext:   map[string]struct{}{\"stats\": e},\n\t\tbinary: map[byte]struct{}{16: e},\n\t},\n\n\t\"flush_all\": {\n\t\ttext:   map[string]struct{}{\"flush_all\": e},\n\t\tbinary: map[byte]struct{}{8: e, 24: e},\n\t},\n\n\t\"cache_memlimit\": {\n\t\ttext:   map[string]struct{}{\"cache_memlimit\": e},\n\t\tbinary: map[byte]struct{}{},\n\t},\n\n\t\"version\": {\n\t\ttext:   map[string]struct{}{\"version\": e},\n\t\tbinary: map[byte]struct{}{11: e},\n\t},\n\n\t\"misbehave\": {\n\t\ttext:   map[string]struct{}{\"misbehave\": e},\n\t\tbinary: map[byte]struct{}{},\n\t},\n\n\t\"quit\": {\n\t\ttext:   map[string]struct{}{\"quit\": e},\n\t\tbinary: map[byte]struct{}{7: e, 23: e},\n\t},\n\n\t\"noop\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{10: e},\n\t},\n\t\"verbosity\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{27: e},\n\t},\n\t\"sasl-list-mechs\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{32: e},\n\t},\n\t\"sasl-auth\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{33: e}},\n\t\"sasl-step\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{34: e}},\n\t\"rget\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{48: e}},\n\t\"rset\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{49: e}},\n\t\"rsetq\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{50: e}},\n\t\"rappend\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{51: e}},\n\t\"rappendq\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{52: e}},\n\t\"rprepend\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{53: e}},\n\t\"rprependq\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{54: e}},\n\t\"rdelete\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{55: e}},\n\t\"rdeleteq\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{56: e}},\n\t\"rincr\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{57: e}},\n\t\"rincrq\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{58: e}},\n\t\"rdecr\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{59: e}},\n\t\"rdecrq\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{60: e}},\n\t\"set-vbucket\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{61: e}},\n\t\"get-vbucket\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{62: e}},\n\t\"del-vbucket\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{63: e}},\n\t\"tap-connect\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{64: e}},\n\t\"tap-mutation\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{65: e}},\n\t\"tap-delete\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{66: e}},\n\t\"tap-flush\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{67: e}},\n\t\"tap-opaque\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{68: e}},\n\t\"tap-vbucket-set\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{69: e}},\n\t\"tap-checkpoint-start\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{70: e}},\n\t\"tap-checkpoint-end\": {\n\t\ttext:   map[string]struct{}{},\n\t\tbinary: map[byte]struct{}{71: e}},\n}\n"
  },
  {
    "path": "proxylib/memcached/text/parser.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\n// text memcache protocol parser based on https://github.com/memcached/memcached/blob/master/doc/protocol.txt\n\npackage text\n\nimport (\n\t\"bytes\"\n\t\"strconv\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n\n\t\"github.com/cilium/proxy/proxylib/memcached/meta\"\n\t\"github.com/cilium/proxy/proxylib/proxylib\"\n)\n\n// ParserFactory implements proxylib.ParserFactory\ntype ParserFactory struct{}\n\n// Create creates memcached parser\nfunc (p *ParserFactory) Create(connection *proxylib.Connection) interface{} {\n\tlogrus.Debugf(\"ParserFactory: Create: %v\", connection)\n\treturn &Parser{connection: connection, replyQueue: make([]*replyIntent, 0)}\n}\n\n// compile time check for interface implementation\nvar _ proxylib.ParserFactory = &ParserFactory{}\n\n// ParserFactoryInstance creates text parser for unified memcached parser\nvar ParserFactoryInstance *ParserFactory\n\n// Parser implements proxylib.Parser\ntype Parser struct {\n\tconnection *proxylib.Connection\n\n\treplyQueue []*replyIntent\n\n\t//set to true when watch command is observed\n\twatching bool\n}\n\ntype replyIntent struct {\n\tcommand []byte\n\tdenied  bool\n}\n\nvar _ proxylib.Parser = &Parser{}\n\n// consts indicating number of tokens in memcache command that indicates noreply command\nconst (\n\tcasWithNoreplyFields     = 7\n\tstorageWithNoreplyFields = 6\n\tdeleteWithNoreplyFields  = 3\n\tincrWithNoreplyFields    = 4\n\ttouchWithNoreplyFields   = 4\n)\n\n// OnData parses text memcached data\nfunc (p *Parser) OnData(reply, endStream bool, dataBuffers [][]byte) (proxylib.OpType, int) {\n\tif reply {\n\t\tinjected := p.injectFromQueue()\n\t\tif injected > 0 {\n\t\t\treturn proxylib.INJECT, injected\n\t\t}\n\t\tif len(dataBuffers) == 0 {\n\t\t\treturn proxylib.NOP, 0\n\t\t}\n\t}\n\n\t// TODO: don't copy data to new slices\n\tdata := (bytes.Join(dataBuffers, []byte{}))\n\tlogrus.Debugf(\"Data length: %d\", len(data))\n\n\tlinefeed := bytes.Index(data, []byte(\"\\r\\n\"))\n\tif linefeed < 0 {\n\t\tlogrus.Debugf(\"Did not receive full first line\")\n\t\tif len(data) > 0 && data[len(data)-1] == '\\r' {\n\t\t\treturn proxylib.MORE, 1\n\t\t}\n\t\treturn proxylib.MORE, 2\n\t}\n\n\t// TODO: iterate over data without copying it to new slices\n\t// Tokenizing in memcached is done by spaces: https://github.com/memcached/memcached/blob/master/memcached.c#L2978\n\ttokens := bytes.Fields(data[:linefeed])\n\n\tif !reply {\n\t\tmeta := meta.MemcacheMeta{\n\t\t\tCommand: string(tokens[0]),\n\t\t}\n\t\tcommand := tokens[0]\n\n\t\tframeLength := linefeed + 2\n\t\thasNoreply := false\n\t\tswitch {\n\t\tcase p.isCommandRetrieval(command):\n\t\t\t// get, gets, gat, gats\n\t\t\tif bytes.HasPrefix(command, []byte(\"get\")) {\n\t\t\t\tmeta.Keys = tokens[1:]\n\t\t\t} else if bytes.HasPrefix(command, []byte(\"gat\")) {\n\t\t\t\tmeta.Keys = tokens[2:]\n\t\t\t}\n\t\tcase p.isCommandStorage(command):\n\t\t\t// storage commands\n\t\t\tmeta.Keys = tokens[1:2]\n\t\t\tnBytes, err := strconv.Atoi(string(tokens[4]))\n\t\t\tif err != nil {\n\t\t\t\tlogrus.Error(\"Failed to parse storage payload length\")\n\t\t\t\treturn proxylib.ERROR, 0\n\t\t\t}\n\t\t\t// 2 additional bytes for terminating linefeed\n\t\t\tframeLength += nBytes + 2\n\n\t\t\tif command[0] == 'c' { //storage command is \"cas\"\n\t\t\t\thasNoreply = len(tokens) == casWithNoreplyFields\n\t\t\t} else {\n\t\t\t\thasNoreply = len(tokens) == storageWithNoreplyFields\n\t\t\t}\n\t\tcase p.isCommandDelete(command):\n\t\t\tmeta.Keys = tokens[1:2]\n\t\t\thasNoreply = len(tokens) == deleteWithNoreplyFields\n\t\tcase p.isCommandIncrDecr(command):\n\t\t\tmeta.Keys = tokens[1:2]\n\t\t\thasNoreply = len(tokens) == incrWithNoreplyFields\n\t\tcase bytes.Equal(command, []byte(\"touch\")):\n\t\t\tmeta.Keys = tokens[1:2]\n\t\t\thasNoreply = len(tokens) == touchWithNoreplyFields\n\t\tcase bytes.Equal(command, []byte(\"slabs\")),\n\t\t\tbytes.Equal(command, []byte(\"lru\")),\n\t\t\tbytes.Equal(command, []byte(\"lru_crawler\")),\n\t\t\tbytes.Equal(command, []byte(\"stats\")),\n\t\t\tbytes.Equal(command, []byte(\"version\")),\n\t\t\tbytes.Equal(command, []byte(\"misbehave\")):\n\n\t\t\tmeta.Keys = [][]byte{}\n\t\tcase bytes.Equal(command, []byte(\"flush_all\")),\n\t\t\tbytes.Equal(command, []byte(\"cache_memlimit\")):\n\t\t\tmeta.Keys = [][]byte{}\n\t\t\thasNoreply = bytes.Equal(tokens[len(tokens)-1], []byte(\"noreply\"))\n\t\tcase bytes.Equal(command, []byte(\"quit\")):\n\t\t\tmeta.Keys = [][]byte{}\n\t\t\thasNoreply = true\n\t\tcase bytes.Equal(command, []byte(\"watch\")):\n\t\t\tmeta.Keys = [][]byte{}\n\t\t\tp.watching = true\n\t\tdefault:\n\t\t\tlogrus.Error(\"Could not parse text memcache frame\")\n\t\t\treturn proxylib.ERROR, 0\n\t\t}\n\t\tlogEntry := &cilium.LogEntry_GenericL7{\n\t\t\tGenericL7: &cilium.L7LogEntry{\n\t\t\t\tProto: \"textmemcached\",\n\t\t\t\tFields: map[string]string{\n\t\t\t\t\t\"command\": meta.Command,\n\t\t\t\t\t\"keys\":    string(bytes.Join(meta.Keys, []byte(\", \"))),\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\n\t\tr := &replyIntent{\n\t\t\tcommand: command,\n\t\t}\n\n\t\tmatches := p.connection.Matches(meta)\n\n\t\tif matches {\n\t\t\tr.denied = false\n\t\t\tif !hasNoreply {\n\t\t\t\tp.replyQueue = append(p.replyQueue, r)\n\t\t\t}\n\t\t\tp.connection.Log(cilium.EntryType_Request, logEntry)\n\t\t\treturn proxylib.PASS, frameLength\n\t\t}\n\n\t\tr.denied = true\n\t\tif !hasNoreply {\n\t\t\tif len(p.replyQueue) == 0 {\n\t\t\t\tp.injectDeniedMessage()\n\t\t\t} else {\n\t\t\t\tp.replyQueue = append(p.replyQueue, r)\n\t\t\t}\n\t\t}\n\t\tp.connection.Log(cilium.EntryType_Denied, logEntry)\n\t\treturn proxylib.DROP, frameLength\n\t}\n\n\t//reply\n\tlogrus.Debugf(\"reply, parsing to figure out if we have it all\")\n\n\tintent := p.replyQueue[0]\n\n\tlogEntry := &cilium.LogEntry_GenericL7{\n\t\tGenericL7: &cilium.L7LogEntry{\n\t\t\tProto: \"textmemcached\",\n\t\t\tFields: map[string]string{\n\t\t\t\t\"command\": string(intent.command),\n\t\t\t},\n\t\t},\n\t}\n\tif p.watching {\n\t\t// in watch mode we pass all replied lines\n\t\treturn proxylib.PASS, linefeed + 2\n\t}\n\n\tswitch {\n\tcase p.isErrorReply(tokens[0]),\n\t\tp.isCommandStorage(intent.command),\n\t\tp.isCommandDelete(intent.command),\n\t\tp.isCommandIncrDecr(intent.command),\n\t\tbytes.Equal(intent.command, []byte(\"touch\")),\n\t\tbytes.Equal(intent.command, []byte(\"slabs\")),\n\t\tbytes.Equal(intent.command, []byte(\"lru\")),\n\t\tbytes.Equal(intent.command, []byte(\"flush_all\")),\n\t\tbytes.Equal(intent.command, []byte(\"cache_memlimit\")),\n\t\tbytes.Equal(intent.command, []byte(\"version\")),\n\t\tbytes.Equal(intent.command, []byte(\"misbehave\")):\n\n\t\t// passing one line of reply\n\t\tp.connection.Log(cilium.EntryType_Response, logEntry)\n\t\tp.replyQueue = p.replyQueue[1:]\n\t\treturn proxylib.PASS, linefeed + 2\n\tcase p.isCommandRetrieval(intent.command),\n\t\tbytes.Equal(intent.command, []byte(\"stats\")):\n\t\tt, nBytes := p.untilEnd(data)\n\t\tif t == proxylib.PASS {\n\t\t\tp.connection.Log(cilium.EntryType_Response, logEntry)\n\t\t\tp.replyQueue = p.replyQueue[1:]\n\t\t}\n\t\treturn t, nBytes\n\tcase bytes.Equal(intent.command, []byte(\"lru_crawler\")):\n\t\t// check if it's response line\n\t\tif bytes.Equal(tokens[0], []byte(\"OK\")) ||\n\t\t\tbytes.Equal(tokens[0], []byte(\"BUSY\")) ||\n\t\t\tbytes.Equal(tokens[0], []byte(\"BADCLASS\")) {\n\t\t\tp.connection.Log(cilium.EntryType_Response, logEntry)\n\t\t\tp.replyQueue = p.replyQueue[1:]\n\t\t\treturn proxylib.PASS, linefeed + 2\n\t\t}\n\n\t\tt, nBytes := p.untilEnd(data)\n\t\tif t == proxylib.PASS {\n\t\t\tp.connection.Log(cilium.EntryType_Response, logEntry)\n\t\t\tp.replyQueue = p.replyQueue[1:]\n\t\t}\n\t\treturn t, nBytes\n\t}\n\tlogrus.Error(\"Could not parse text memcache frame\")\n\treturn proxylib.ERROR, 0\n}\n\nconst payloadEnd = \"\\r\\nEND\\r\\n\"\n\nfunc (p *Parser) untilEnd(data []byte) (proxylib.OpType, int) {\n\t// TODO: optimise this to not ask per byte, but take VALUES lines into account\n\tendIndex := bytes.Index(data, []byte(payloadEnd))\n\tif endIndex > 0 {\n\t\treturn proxylib.PASS, endIndex + len(payloadEnd)\n\t}\n\treturn proxylib.MORE, 1\n}\n\nfunc (p *Parser) isCommandRetrieval(cmd []byte) bool {\n\treturn bytes.HasPrefix(cmd, []byte(\"get\")) ||\n\t\tbytes.HasPrefix(cmd, []byte(\"gat\"))\n}\n\nfunc (p *Parser) isCommandStorage(cmd []byte) bool {\n\treturn bytes.Equal(cmd, []byte(\"set\")) ||\n\t\tbytes.Equal(cmd, []byte(\"add\")) ||\n\t\tbytes.Equal(cmd, []byte(\"replace\")) ||\n\t\tbytes.Equal(cmd, []byte(\"append\")) ||\n\t\tbytes.Equal(cmd, []byte(\"prepend\")) ||\n\t\tbytes.Equal(cmd, []byte(\"cas\"))\n}\n\nfunc (p *Parser) isCommandDelete(cmd []byte) bool {\n\treturn bytes.Equal(cmd, []byte(\"delete\"))\n}\n\nfunc (p *Parser) isCommandIncrDecr(cmd []byte) bool {\n\treturn bytes.Equal(cmd, []byte(\"incr\")) ||\n\t\tbytes.Equal(cmd, []byte(\"decr\"))\n}\n\nfunc (p *Parser) isErrorReply(firstToken []byte) bool {\n\treturn bytes.Equal(firstToken, []byte(\"ERROR\")) ||\n\t\tbytes.Equal(firstToken, []byte(\"CLIENT_ERROR\")) ||\n\t\tbytes.Equal(firstToken, []byte(\"SERVER_ERROR\"))\n}\n\n// returns injected bytes\nfunc (p *Parser) injectFromQueue() int {\n\tinjected := 0\n\tfor _, rep := range p.replyQueue {\n\t\tif rep.denied {\n\t\t\tinjected++\n\t\t\tp.injectDeniedMessage()\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\n\t}\n\tif injected > 0 {\n\t\tp.replyQueue = p.replyQueue[injected:]\n\t}\n\treturn injected * len(DeniedMsg)\n}\n\nfunc (p *Parser) injectDeniedMessage() {\n\tp.connection.Inject(true, DeniedMsg)\n}\n\n// DeniedMsg is sent if policy denies the request. Exported for tests\nvar DeniedMsg = []byte(\"CLIENT_ERROR access denied\\r\\n\")\n\n// ErrorMsg is standard memcached error line\nvar ErrorMsg = []byte(\"ERROR\\r\\n\")\n"
  },
  {
    "path": "proxylib/npds/backoff.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage npds\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"math\"\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\n// exponentialBackoff implements an exponential backoff\ntype exponentialBackoff struct {\n\t// Min is the minimal backoff time, if unspecified, 1 second will be\n\t// used\n\tMin time.Duration\n\n\t// Max is the maximum backoff time, if unspecified, no maximum time is\n\t// applied\n\tMax time.Duration\n\n\t// Name is a free form string describing the operation subject to the\n\t// backoff, if unspecified, a UUID is generated. This string is used\n\t// for logging purposes.\n\tName string\n\n\tlastBackoffStart time.Time\n\n\tattempt int\n}\n\n// calculateDuration calculates the backoff duration based on minimum base\n// interval, exponential factor and number of failures.\nfunc calculateDuration(min, max time.Duration, factor float64, failures int) time.Duration {\n\tminFloat := float64(min)\n\tmaxFloat := float64(max)\n\n\tt := minFloat * math.Pow(factor, float64(failures))\n\tif max != time.Duration(0) && t > maxFloat {\n\t\tt = maxFloat\n\t}\n\n\treturn time.Duration(t)\n}\n\n// Reset backoff attempt counter\nfunc (b *exponentialBackoff) Reset() {\n\tb.attempt = 0\n}\n\n// Wait waits for the required time using an exponential backoff\nfunc (b *exponentialBackoff) Wait(ctx context.Context) error {\n\tif b.Name == \"\" {\n\t\tpanic(\"no name provided\")\n\t}\n\n\tb.lastBackoffStart = time.Now()\n\tb.attempt++\n\tt := b.duration(b.attempt)\n\n\tlogrus.WithFields(logrus.Fields{\n\t\t\"subsys\":  \"backoff\",\n\t\t\"time\":    t,\n\t\t\"attempt\": b.attempt,\n\t\t\"name\":    b.Name,\n\t}).Debug(\"Sleeping with exponential backoff\")\n\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn fmt.Errorf(\"exponential backoff cancelled via context: %s\", ctx.Err())\n\tcase <-time.After(t):\n\t}\n\n\treturn nil\n}\n\n// duration returns the wait duration for the nth attempt\nfunc (b *exponentialBackoff) duration(attempt int) time.Duration {\n\tmin := time.Duration(1) * time.Second\n\tif b.Min != time.Duration(0) {\n\t\tmin = b.Min\n\t}\n\n\tt := calculateDuration(min, b.Max, 2, attempt)\n\n\tif b.Max != time.Duration(0) && t > b.Max {\n\t\tt = b.Max\n\t}\n\n\treturn t\n}\n"
  },
  {
    "path": "proxylib/npds/client.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage npds\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n\t\"google.golang.org/genproto/googleapis/rpc/status\"\n\t\"google.golang.org/grpc\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n\t\"github.com/cilium/proxy/proxylib/proxylib\"\n\tenvoy_config_core \"github.com/envoyproxy/go-control-plane/envoy/config/core/v3\"\n\tenvoy_service_discovery \"github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3\"\n)\n\nconst (\n\tDialDelay    = 100 * time.Millisecond\n\tBackOffLimit = 100 // Max 100 times DialDelay\n\tNPDSTypeURL  = \"type.googleapis.com/cilium.NetworkPolicy\"\n)\n\ntype Client struct {\n\tupdater proxylib.PolicyUpdater\n\tmutex   sync.Mutex\n\tnodeId  string\n\tpath    string\n\tconn    *grpc.ClientConn\n\tstream  grpc.ClientStream\n\tclosing bool\n}\n\nfunc (c *Client) Close() {\n\tc.mutex.Lock()\n\tdefer c.mutex.Unlock()\n\tif !c.closing {\n\t\tlogrus.Debugf(\"NPDS: Client %s closing on %s\", c.nodeId, c.path)\n\t\tc.closing = true\n\t\tif c.stream != nil {\n\t\t\tc.stream.CloseSend()\n\t\t}\n\t\tif c.conn != nil {\n\t\t\tc.conn.Close()\n\t\t}\n\t}\n}\n\nfunc (c *Client) Path() string {\n\treturn c.path\n}\n\nfunc NewClient(path, nodeId string, updater proxylib.PolicyUpdater) proxylib.PolicyClient {\n\tif path == \"\" {\n\t\treturn nil\n\t}\n\tc := &Client{\n\t\tupdater: updater,\n\t\tpath:    path,\n\t\tnodeId:  nodeId,\n\t}\n\tlogrus.Debugf(\"NPDS: Client %s starting on %s\", c.nodeId, c.path)\n\n\t// These are used to return error if the 1st try fails\n\t// Only used for testing and logging, as we keep on trying anyway.\n\tstartErr := make(chan error) // Channel open as long as 'starting == true'\n\n\tgo func() {\n\t\tstarting := true\n\t\tbackOff := exponentialBackoff{\n\t\t\tMin:  DialDelay,\n\t\t\tMax:  BackOffLimit * DialDelay,\n\t\t\tName: \"proxylib NPDS client\",\n\t\t}\n\t\tfor {\n\t\t\terr := c.Run(func() {\n\t\t\t\t// Report successful start on the first try by closing the channel\n\t\t\t\tif starting {\n\t\t\t\t\tclose(startErr)\n\t\t\t\t\tstarting = false\n\t\t\t\t}\n\t\t\t\tlogrus.Debugf(\"NPDS: Client %s connected on %s\", c.nodeId, c.path)\n\t\t\t})\n\t\t\tc.mutex.Lock()\n\t\t\tclosing := c.closing\n\t\t\tc.mutex.Unlock()\n\n\t\t\tif err != nil {\n\t\t\t\tlogrus.Debug(err)\n\t\t\t\tif starting {\n\t\t\t\t\tstartErr <- err\n\t\t\t\t\tclose(startErr)\n\t\t\t\t\tstarting = false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Reset backoff after successful start\n\t\t\t\tbackOff.Reset()\n\t\t\t}\n\n\t\t\tif closing {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Back off before retrying\n\t\t\tbackOff.Wait(context.TODO())\n\t\t}\n\t}()\n\n\t// Block until we know if the first connection try succeeded or failed\n\t_ = <-startErr\n\treturn c\n}\n\nfunc (c *Client) Run(connected func()) (err error) {\n\tunixPath := \"unix://\" + c.path\n\n\tdefer func() {\n\t\t// Recover from any possible panics\n\t\tif r := recover(); r != nil {\n\t\t\terr = fmt.Errorf(\"NPDS Client %s: Panic: %v\", c.nodeId, r)\n\t\t}\n\t}()\n\n\t//\n\t// WithInsecure() is safe here because we are connecting to a Unix-domain socket,\n\t// data of whch is never on the wire and security for which can be managed with file permissions.\n\t//\n\tconn, err := grpc.Dial(unixPath, grpc.WithInsecure())\n\tif err != nil {\n\t\treturn fmt.Errorf(\"NPDS: Client %s grpc.Dial() on %s failed: %s\", c.nodeId, c.path, err)\n\t}\n\tclient := cilium.NewNetworkPolicyDiscoveryServiceClient(conn)\n\tstream, err := client.StreamNetworkPolicies(context.Background())\n\tif err != nil {\n\t\tconn.Close()\n\t\treturn fmt.Errorf(\"NPDS: Client %s stream failed on %s: %s\", c.nodeId, c.path, err)\n\t}\n\tc.mutex.Lock()\n\tc.conn = conn\n\tc.stream = stream\n\tc.mutex.Unlock()\n\tdefer func() {\n\t\tc.mutex.Lock()\n\t\tc.stream.CloseSend()\n\t\tc.conn.Close()\n\t\tc.mutex.Unlock()\n\t}()\n\n\t// VersionInfo must be empty as we have not received anything yet.\n\t// ResourceNames is empty to request for all policies.\n\t// ResponseNonce is copied from the response, initially empty.\n\treq := envoy_service_discovery.DiscoveryRequest{\n\t\tTypeUrl:       NPDSTypeURL,\n\t\tVersionInfo:   \"\",\n\t\tNode:          &envoy_config_core.Node{Id: c.nodeId},\n\t\tResourceNames: nil,\n\t\tResponseNonce: \"\",\n\t}\n\terr = stream.Send(&req)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"NPDS: Client %s stream.Send() failed on %s: %s\", c.nodeId, c.path, err)\n\t}\n\n\tconnected()\n\n\tfor {\n\t\t// Receive next policy configuration. This will block until the\n\t\t// server has a new version to send, which may take a long time.\n\t\tresp, err := stream.Recv()\n\t\tif errors.Is(err, io.EOF) || errors.Is(err, io.ErrUnexpectedEOF) {\n\t\t\tlogrus.Debugf(\"NPDS: Client %s stream on %s closed.\", c.nodeId, c.path)\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"NPDS: Client %s stream.Recv() on %s failed: %s\", c.nodeId, c.path, err)\n\t\t}\n\n\t\t// Validate the response\n\t\tif resp.TypeUrl != req.TypeUrl {\n\t\t\tmsg := fmt.Sprintf(\"NPDS: Client %s rejecting mismatching resource type on %s: %s\", c.nodeId, c.path, resp.TypeUrl)\n\t\t\treq.ErrorDetail = &status.Status{Message: msg}\n\t\t\tlogrus.Warning(msg)\n\t\t} else {\n\t\t\terr = c.updater.PolicyUpdate(resp)\n\t\t\tif err != nil {\n\t\t\t\tmsg := fmt.Sprintf(\"NPDS: Client %s rejecting invalid policy on %s: %s\", c.nodeId, c.path, err)\n\t\t\t\treq.ErrorDetail = &status.Status{Message: msg}\n\t\t\t\tlogrus.Warning(msg)\n\t\t\t} else {\n\t\t\t\t// Success, update the last applied version\n\t\t\t\tlogrus.Debugf(\"NPDS: Client %s acking new policy version on %s: %s\", c.nodeId, c.path, resp.VersionInfo)\n\t\t\t\treq.ErrorDetail = nil\n\t\t\t\treq.VersionInfo = resp.VersionInfo\n\t\t\t}\n\t\t}\n\t\treq.ResponseNonce = resp.Nonce\n\t\terr = stream.Send(&req)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"NPDS: Client %s stream.Send() failed on %s: %s\", c.nodeId, c.path, err)\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "proxylib/proxylib/connection.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage proxylib\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n)\n\n// A parser sees data from the underlying stream in both directions\n// (original, connection open direction and the opposite, the reply\n// direction). Each call to the filter returns an ordered set of\n// operations to be performed on the data in that direction. Any data\n// left over after the returned operations must be buffered by the\n// caller and passed in again when more data has been received on the\n// connection.\n\n// InjectBuf is a pointer to a slice header for an inject buffer allocated by\n// the proxylib caller. As data is placed into the buffer, the length\n// of the buffer in the slice header is increased correspondingly. To make\n// the the injected data visible to the caller we need to pass the slice header\n// by reference rather than by value, hence the pointer in the type.\n// As the caller is typically in a differnent memory management domain (not\n// subject to Go runtime garbage collection), the underlying buffer may never\n// be expanded or otherwise reallocated.\ntype InjectBuf *[]byte\n\n// Connection holds the connection metadata that is used both for\n// policy enforcement and access logging.\ntype Connection struct {\n\tInstance   *Instance // Holder of Policy protocol and access logging clients\n\tId         uint64    // Unique connection ID allocated by the caller\n\tIngress    bool      // 'true' for ingress, 'false' for egress\n\tSrcId      uint32    // Source security ID, may be mapped from the source IP address\n\tDstId      uint32    // Destination security ID, may be mapped from the destination IP address\n\tSrcAddr    string    // Source IP address in \"a.b.c.d:port\" or \"[A:...:C]:port\" format\n\tDstAddr    string    // Original destination IP address\n\tPolicyName string    // Identifies which policy instance applies to this connection\n\tPort       uint32    // (original) destination port number in numeric format\n\n\tParserName string      // Name of the parser\n\tParser     interface{} // Parser instance used on this connection\n\tReader     Reader\n\tOrigBuf    InjectBuf // Buffer for injected frames in original direction\n\tReplyBuf   InjectBuf // Buffer for injected frames in reply direction\n}\n\nfunc NewConnection(instance *Instance, proto string, connectionId uint64, ingress bool, srcId, dstId uint32, srcAddr, dstAddr, policyName string, origBuf, replyBuf *[]byte) (error, *Connection) {\n\t// Find the parser for the proto\n\tparserFactory := GetParserFactory(proto)\n\tif parserFactory == nil {\n\t\treturn UNKNOWN_PARSER, nil\n\t}\n\t_, port, err := net.SplitHostPort(dstAddr)\n\tif err != nil {\n\t\treturn INVALID_ADDRESS, nil\n\t}\n\tdstPort, err := strconv.ParseUint(port, 10, 32)\n\tif err != nil || dstPort == 0 {\n\t\treturn INVALID_ADDRESS, nil\n\t}\n\n\tconnection := &Connection{\n\t\tInstance:   instance,\n\t\tId:         connectionId,\n\t\tIngress:    ingress,\n\t\tSrcId:      srcId,\n\t\tDstId:      dstId,\n\t\tSrcAddr:    srcAddr,\n\t\tDstAddr:    dstAddr,\n\t\tPort:       uint32(dstPort),\n\t\tPolicyName: policyName,\n\t\tParserName: proto,\n\t\tOrigBuf:    origBuf,\n\t\tReplyBuf:   replyBuf,\n\t}\n\tconnection.Parser = parserFactory.Create(connection)\n\tif connection.Parser == nil {\n\t\t// Parser rejected the new connection based on the connection metadata\n\t\treturn POLICY_DROP, nil\n\t}\n\n\treturn nil, connection\n}\n\n// Skip bytes in input, or exhaust the input.\nfunc advanceInput(input [][]byte, bytes int) [][]byte {\n\tfor bytes > 0 && len(input) > 0 {\n\t\trem := len(input[0]) // this much data left in the first slice\n\t\tif bytes < rem {\n\t\t\tinput[0] = input[0][bytes:] // skip 'bytes' bytes\n\t\t\tbytes = 0\n\t\t} else { // go to the beginning of the next unit\n\t\t\tbytes -= rem\n\t\t\tinput = input[1:] // may result in an empty slice\n\t\t}\n\t}\n\treturn input\n}\n\nfunc (connection *Connection) OnData(reply, endStream bool, data *[][]byte, filterOps *[][2]int64) (res FilterResult) {\n\tdefer func() {\n\t\t// Recover from any possible parser datapath panics\n\t\tif r := recover(); r != nil {\n\t\t\t// Log the Panic into accesslog\n\t\t\tconnection.Log(cilium.EntryType_Denied,\n\t\t\t\t&cilium.LogEntry_GenericL7{\n\t\t\t\t\tGenericL7: &cilium.L7LogEntry{\n\t\t\t\t\t\tProto: connection.ParserName,\n\t\t\t\t\t\tFields: map[string]string{\n\t\t\t\t\t\t\t// \"status\" is shown in Cilium monitor\n\t\t\t\t\t\t\t\"status\": fmt.Sprintf(\"Panic: %s\", r),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\tres = PARSER_ERROR // Causes the connection to be dropped\n\t\t}\n\t}()\n\n\tif parser, ok := connection.Parser.(Parser); ok {\n\t\tinput := *data\n\t\t// Loop until `filterOps` becomes full, or parser is done with the data.\n\t\tfor len(*filterOps) < cap(*filterOps) {\n\t\t\top, bytes := parser.OnData(reply, endStream, input)\n\t\t\tif op == NOP {\n\t\t\t\tbreak // No operations after NOP\n\t\t\t}\n\t\t\tif bytes == 0 {\n\t\t\t\treturn PARSER_ERROR\n\t\t\t}\n\t\t\t*filterOps = append(*filterOps, [2]int64{int64(op), int64(bytes)})\n\n\t\t\tif op == MORE {\n\t\t\t\t// Need more data before can parse ahead.\n\t\t\t\t// Parser will see the unused data again in the next call, which will take place\n\t\t\t\t// after there are at least 'bytes' of additional data to parse.\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif op == PASS || op == DROP {\n\t\t\t\tinput = advanceInput(input, bytes)\n\t\t\t\t// Loop back to parser even if have no more data to allow the parser to\n\t\t\t\t// inject frames at the end of the input.\n\t\t\t}\n\n\t\t\t// Injection does not advance input data, but instructs the datapath to\n\t\t\t// send data the parser has placed in the inject buffer. We need to stop processing\n\t\t\t// if inject buffer becomes full as the parser in this case can't inject any more\n\t\t\t// data.\n\t\t\tif op == INJECT && connection.IsInjectBufFull(reply) {\n\t\t\t\t// return if inject buffer becomes full\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t} else if parser, ok := connection.Parser.(ReaderParser); ok {\n\t\tconnection.Reader = NewReader(*data, endStream)\n\t\t// Loop until `filterOps` becomes full, or parser is done with the data.\n\t\tfor len(*filterOps) < cap(*filterOps) {\n\t\t\top, bytes := parser.OnData(reply, &connection.Reader)\n\t\t\tif op == NOP {\n\t\t\t\tbreak // No operations after NOP\n\t\t\t}\n\t\t\tif bytes == 0 {\n\t\t\t\treturn PARSER_ERROR\n\t\t\t}\n\t\t\t*filterOps = append(*filterOps, [2]int64{int64(op), int64(bytes)})\n\n\t\t\tif op == MORE {\n\t\t\t\t// Need more data before can parse ahead.\n\t\t\t\t// Parser will see the unused data again in the next call, which will take place\n\t\t\t\t// after there are at least 'bytes' of additional data to parse.\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Get the current read count && reset for the next round\n\t\t\tread := connection.Reader.Reset()\n\n\t\t\tif op == PASS || op == DROP {\n\t\t\t\t// Andvance input if needed\n\t\t\t\tif bytes > read {\n\t\t\t\t\tconnection.Reader.AdvanceInput(bytes - read)\n\t\t\t\t}\n\t\t\t\t// Loop back to parser even if have no more data to allow the parser to\n\t\t\t\t// inject frames at the end of the input.\n\t\t\t}\n\n\t\t\t// Injection does not advance input data, but instructs the datapath to\n\t\t\t// send data the parser has placed in the inject buffer. We need to stop processing\n\t\t\t// if inject buffer becomes full as the parser in this case can't inject any more\n\t\t\t// data.\n\t\t\tif op == INJECT && connection.IsInjectBufFull(reply) {\n\t\t\t\t// return if inject buffer becomes full\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\treturn OK\n}\n\nfunc (connection *Connection) Matches(l7 interface{}) bool {\n\tlogrus.Debugf(\"proxylib: Matching policy on connection %v\", connection)\n\tremoteID := connection.DstId\n\tif connection.Ingress {\n\t\tremoteID = connection.SrcId\n\t}\n\treturn connection.Instance.PolicyMatches(connection.PolicyName, connection.Ingress, connection.Port, remoteID, l7)\n}\n\n// getInjectBuf return the pointer to the inject buffer slice header for the indicated direction\nfunc (connection *Connection) getInjectBuf(reply bool) InjectBuf {\n\tif reply {\n\t\treturn connection.ReplyBuf\n\t}\n\treturn connection.OrigBuf\n}\n\n// inject buffers data to be injected into the connection at the point of INJECT\nfunc (connection *Connection) Inject(reply bool, data []byte) int {\n\tbuf := connection.getInjectBuf(reply)\n\t// append data to C-provided buffer\n\toffset := len(*buf)\n\tn := copy((*buf)[offset:cap(*buf)], data)\n\t*buf = (*buf)[:offset+n] // update the buffer length\n\n\tlogrus.Debugf(\"proxylib: Injected %d bytes: %s (given: %s)\", n, string((*buf)[offset:offset+n]), string(data))\n\n\t// return the number of bytes injected. This may be less than the length of `data` is\n\t// the buffer becomes full.\n\t// Parser may opt dropping the connection via parser error in this case!\n\treturn n\n}\n\n// isInjectBufFull return true if the inject buffer for the indicated direction is full\nfunc (connection *Connection) IsInjectBufFull(reply bool) bool {\n\tbuf := connection.getInjectBuf(reply)\n\treturn len(*buf) == cap(*buf)\n}\n\nfunc (conn *Connection) Log(entryType cilium.EntryType, l7 cilium.IsLogEntry_L7) {\n\tpblog := &cilium.LogEntry{\n\t\tTimestamp:             uint64(time.Now().UnixNano()),\n\t\tIsIngress:             conn.Ingress,\n\t\tEntryType:             entryType,\n\t\tPolicyName:            conn.PolicyName,\n\t\tSourceSecurityId:      conn.SrcId,\n\t\tDestinationSecurityId: conn.DstId,\n\t\tSourceAddress:         conn.SrcAddr,\n\t\tDestinationAddress:    conn.DstAddr,\n\t\tL7:                    l7,\n\t}\n\tconn.Instance.Log(pblog)\n}\n"
  },
  {
    "path": "proxylib/proxylib/input_test.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage proxylib\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestAdvanceInput(t *testing.T) {\n\tinput := [][]byte{[]byte(\"ABCD\"), []byte(\"1234567890\"), []byte(\"abcdefghij\")}\n\n\trequire.Equal(t, byte('A'), input[0][0])\n\trequire.Len(t, input, 3) // Three slices in input\n\n\t// Advance to one byte before the end of the first slice\n\tinput = advanceInput(input, 3)\n\trequire.Len(t, input, 3) // Still in the first slice\n\trequire.Len(t, input[0], 1)\n\trequire.Equal(t, byte('D'), input[0][0])\n\n\t// Advance to the beginning of the next slice\n\tinput = advanceInput(input, 1)\n\trequire.Len(t, input, 2) // Moved to the next slice\n\trequire.Equal(t, byte('1'), input[0][0])\n\n\t// Advance 11 bytes, crossing to the next slice\n\tinput = advanceInput(input, 11)\n\trequire.Len(t, input, 1) // Moved to the 3rd slice\n\trequire.Equal(t, byte('b'), input[0][0])\n\n\t// Try to advance 11 bytes when only 9 remmain\n\tinput = advanceInput(input, 11)\n\trequire.Len(t, input, 0) // All data exhausted\n\n\t// Try advance on an empty slice\n\tinput = advanceInput(input, 1)\n\trequire.Len(t, input, 0)\n}\n"
  },
  {
    "path": "proxylib/proxylib/instance.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage proxylib\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/proto\"\n\t\"github.com/sirupsen/logrus\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n\tenvoy_service_discovery \"github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3\"\n)\n\ntype PolicyClient interface {\n\tClose()\n\tPath() string\n}\n\ntype AccessLogger interface {\n\tLog(pblog *cilium.LogEntry)\n\tClose()\n\tPath() string\n}\n\ntype PolicyUpdater interface {\n\tPolicyUpdate(resp *envoy_service_discovery.DiscoveryResponse) error\n}\n\ntype Instance struct {\n\tid           uint64\n\topenCount    uint64\n\tnodeID       string\n\taccessLogger AccessLogger\n\tpolicyClient PolicyClient\n\n\tpolicyMap atomic.Value // holds PolicyMap\n}\n\nvar (\n\t// mutex protects instances\n\tmutex sync.RWMutex\n\t// Key uint64 is a monotonically increasing instance ID\n\tinstances map[uint64]*Instance = make(map[uint64]*Instance)\n\t// Last instance ID used\n\tinstanceId uint64 = 0\n)\n\nfunc NewInstance(nodeID string, accessLogger AccessLogger) *Instance {\n\tinstanceId++\n\n\tif nodeID == \"\" {\n\t\tnodeID = fmt.Sprintf(\"host~127.0.0.2~libcilium-%d~localdomain\", instanceId)\n\t}\n\n\tins := &Instance{\n\t\tid:           instanceId,\n\t\topenCount:    1,\n\t\tnodeID:       nodeID,\n\t\taccessLogger: accessLogger,\n\t}\n\tins.setPolicyMap(newPolicyMap())\n\n\treturn ins\n}\n\n// OpenInstance creates a new instance or finds an existing one with equivalent parameters.\n// returns the instance id.\nfunc OpenInstance(nodeID string, xdsPath string, newPolicyClient func(path, nodeID string, updater PolicyUpdater) PolicyClient,\n\taccessLogPath string, newAccessLogger func(accessLogPath string) AccessLogger,\n) uint64 {\n\tmutex.Lock()\n\tdefer mutex.Unlock()\n\n\t// Check if have an instance with these params already\n\tfor id, old := range instances {\n\t\toldXdsPath := \"\"\n\t\tif old.policyClient != nil {\n\t\t\toldXdsPath = old.policyClient.Path()\n\t\t}\n\t\toldAccessLogPath := \"\"\n\t\tif old.accessLogger != nil {\n\t\t\toldAccessLogPath = old.accessLogger.Path()\n\t\t}\n\t\tif (nodeID == \"\" || old.nodeID == nodeID) && xdsPath == oldXdsPath && accessLogPath == oldAccessLogPath {\n\t\t\told.openCount++\n\t\t\tlogrus.Debugf(\"Opened existing library instance %d, open count: %d\", id, old.openCount)\n\t\t\treturn id\n\t\t}\n\t}\n\n\tins := NewInstance(nodeID, newAccessLogger(accessLogPath))\n\t// policy client needs the instance so we set it after instance has been created\n\tins.policyClient = newPolicyClient(xdsPath, ins.nodeID, ins)\n\n\tinstances[instanceId] = ins\n\n\tlogrus.Debugf(\"Opened new library instance %d\", instanceId)\n\n\treturn instanceId\n}\n\nfunc FindInstance(id uint64) *Instance {\n\tmutex.RLock()\n\tdefer mutex.RUnlock()\n\treturn instances[id]\n}\n\n// Close returns the new open count\nfunc CloseInstance(id uint64) uint64 {\n\tmutex.Lock()\n\tdefer mutex.Unlock()\n\n\tcount := uint64(0)\n\tif ins, ok := instances[id]; ok {\n\t\tins.openCount--\n\t\tcount = ins.openCount\n\t\tif count == 0 {\n\t\t\tif ins.policyClient != nil {\n\t\t\t\tins.policyClient.Close()\n\t\t\t}\n\t\t\tif ins.accessLogger != nil {\n\t\t\t\tins.accessLogger.Close()\n\t\t\t}\n\t\t\tdelete(instances, id)\n\t\t}\n\t\tlogrus.Debugf(\"CloseInstance(%d): Remaining open count: %d\", id, count)\n\t} else {\n\t\tlogrus.Debugf(\"CloseInstance(%d): Not found (closed already?)\", id)\n\t}\n\treturn count\n}\n\nfunc (ins *Instance) getPolicyMap() PolicyMap {\n\treturn ins.policyMap.Load().(PolicyMap)\n}\n\nfunc (ins *Instance) setPolicyMap(newMap PolicyMap) {\n\tins.policyMap.Store(newMap)\n}\n\nfunc (ins *Instance) PolicyMatches(endpointPolicyName string, ingress bool, port, remoteId uint32, l7 interface{}) bool {\n\t// Policy maps are never modified once published\n\tpolicy, found := ins.getPolicyMap()[endpointPolicyName]\n\tif !found {\n\t\tlogrus.Debugf(\"NPDS: Policy for %s not found\", endpointPolicyName)\n\t}\n\n\treturn found && policy.Matches(ingress, port, remoteId, l7)\n}\n\n// Update the PolicyMap from a protobuf. PolicyMap is only ever changed if the whole update is successful.\nfunc (ins *Instance) PolicyUpdate(resp *envoy_service_discovery.DiscoveryResponse) (err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tvar ok bool\n\t\t\tif err, ok = r.(error); !ok {\n\t\t\t\terr = fmt.Errorf(\"NPDS: Panic: %v\", r)\n\t\t\t}\n\t\t}\n\t}()\n\n\tlogrus.Debugf(\"NPDS: Updating policy for version %s\", resp.VersionInfo)\n\n\toldMap := ins.getPolicyMap()\n\tnewMap := newPolicyMap()\n\n\tfor _, any := range resp.Resources {\n\t\tif any.TypeUrl != resp.TypeUrl {\n\t\t\treturn fmt.Errorf(\"NPDS: Mismatching TypeUrls: %s != %s\", any.TypeUrl, resp.TypeUrl)\n\t\t}\n\t\tvar config cilium.NetworkPolicy\n\t\tif err = proto.Unmarshal(any.Value, &config); err != nil {\n\t\t\treturn fmt.Errorf(\"NPDS: Policy unmarshal error: %v\", err)\n\t\t}\n\n\t\tips := config.GetEndpointIps()\n\t\tif len(ips) == 0 {\n\t\t\treturn fmt.Errorf(\"NPDS: Policy has no endpoint_ips\")\n\t\t}\n\t\tfor _, ip := range ips {\n\t\t\tlogrus.Debugf(\"NPDS: Endpoint IP: %s\", ip)\n\t\t}\n\t\t// Locate the old version, if any\n\t\toldPolicy, found := oldMap[ips[0]]\n\t\tif found {\n\t\t\t// Check if the new policy is the same as the old one\n\t\t\tif proto.Equal(&config, oldPolicy.protobuf) {\n\t\t\t\tlogrus.Debugf(\"NPDS: New policy for Endpoint %d is equal to the old one, no need to change\", config.GetEndpointId())\n\t\t\t\tfor _, ip := range ips {\n\t\t\t\t\tnewMap[ip] = oldPolicy\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// Validate new config\n\t\tif err = config.Validate(); err != nil {\n\t\t\treturn fmt.Errorf(\"NPDS: Policy validation error for Endpoint %d: %v\", config.GetEndpointId(), err)\n\t\t}\n\n\t\t// Create new PolicyInstance, may panic. Takes ownership of 'config'.\n\t\tnewPolicy := newPolicyInstance(&config)\n\t\tfor _, ip := range ips {\n\t\t\tnewMap[ip] = newPolicy\n\t\t}\n\t}\n\n\t// Store the new policy map\n\tins.setPolicyMap(newMap)\n\n\tlogrus.Debugf(\"NPDS: Policy Update completed for instance %d: %v\", ins.id, newMap)\n\treturn\n}\n\nfunc (ins *Instance) Log(pblog *cilium.LogEntry) {\n\tins.accessLogger.Log(pblog)\n}\n"
  },
  {
    "path": "proxylib/proxylib/parserfactory.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage proxylib\n\nimport (\n\t\"github.com/sirupsen/logrus\"\n)\n\n// Parser is a paser instance used for each connection. OnData will be called from a single thread only.\ntype Parser interface {\n\t// OnData is called when input is available on the underlying connection. The Parser\n\t// instance is only ever used for processing data of a single connection, which allows\n\t// the parser instance to keep connection specific state. All OnData() calls for a\n\t// single connection (both directions) are made from a single thread, so that\n\t// no locking is needed for the parser instance if no other goroutines need to access\n\t// the parser instance. (Note that any L7 policy protocol rule parsing happens in\n\t// other goroutine so any such parsing should not access parser instances directly.)\n\t//\n\t// OnData() parameters are as follows:\n\t// 'reply' is 'false' for original direction of the connection, 'true' otherwise.\n\t// 'endStream' is true if there is no more data after 'data' in this direction.\n\t// 'data' is the available data in the current direction. The datapath buffers\n\t//        partial frames as instructed by the operations returned by the parser\n\t//        so that the 'data' always starts on a frame boundary. That is, whenever\n\t//        the parser returns `MORE` indicating it needs more input, the bytes\n\t//        not 'PASS'ed or 'DROP'ped are retained in a datapath buffer and those\n\t//        same bytes are passed to the parser again when more input is available.\n\t//        'data' may be an empty slice, but the slices contained are never empty.\n\t//\n\t// OnData() returns an operation and the number of bytes ('N') the operation applies.\n\t// The possible values for 'op' are:\n\t// 'MORE' -   Data currently in 'data' is to be retained by the datapath and passed\n\t//            again to OnData() after 'N' bytes more data is available.\n\t// 'PASS' -   Allow 'N' bytes.\n\t// 'DROP' -   Drop 'N' bytes and call OnData() again for the remaining data.\n\t// 'INJECT' - Insert 'N' bytes of data placed into the inject buffer in to the\n\t//            data stream in this direction.\n\t// 'NOP' -    Do nothing, to be used when it is known if no more input\n\t//            is to be expected.\n\t// 'ERROR' -  Protocol parsing failed and the connection should be closed.\n\t//\n\t// OnData() is called again after 'PASS', 'DROP', and 'INJECT' with the remaining\n\t// data even if none remains.\n\tOnData(reply, endStream bool, data [][]byte) (op OpType, N int)\n}\n\n// ReaderParser is an alternate parser instance is used for each connection. OnData will be called from a single thread only.\ntype ReaderParser interface {\n\t// OnData is called when input is available on the underlying connection. The Parser\n\t// instance is only ever used for processing data of a single connection, which allows\n\t// the parser instance to keep connection specific state. All OnData() calls for a\n\t// single connection (both directions) are made from a single thread, so that\n\t// no locking is needed for the parser instance if no other goroutines need to access\n\t// the parser instance. (Note that any L7 policy protocol rule parsing happens in\n\t// other goroutine so any such parsing should not access parser instances directly.)\n\t//\n\t// OnData() parameters are as follows:\n\t// 'reply' is 'false' for original direction of the connection, 'true' otherwise.\n\t// 'endStream' is true if there is no more data after 'data' in this direction.\n\t// 'data' is the available data in the current direction. The datapath buffers\n\t//        partial frames as instructed by the operations returned by the parser\n\t//        so that the 'data' always starts on a frame boundary. That is, whenever\n\t//        the parser returns `MORE` indicating it needs more input, the bytes\n\t//        not 'PASS'ed or 'DROP'ped are retained in a datapath buffer and those\n\t//        same bytes are passed to the parser again when more input is available.\n\t//        'data' may be an empty slice, but the slices contained are never empty.\n\t//\n\t// OnData() returns an operation and the number of bytes ('N') the operation applies.\n\t// The possible values for 'op' are:\n\t// 'MORE' -   Data currently in 'data' is to be retained by the datapath and passed\n\t//            again to OnData() after 'N' bytes more data is available.\n\t// 'PASS' -   Allow 'N' bytes.\n\t// 'DROP' -   Drop 'N' bytes and call OnData() again for the remaining data.\n\t// 'INJECT' - Insert 'N' bytes of data placed into the inject buffer in to the\n\t//            data stream in this direction.\n\t// 'NOP' -    Do nothing, to be used when it is known if no more input\n\t//            is to be expected.\n\t// 'ERROR' -  Protocol parsing failed and the connection should be closed.\n\t//\n\t// OnData() is called again after 'PASS', 'DROP', and 'INJECT' with the remaining\n\t// data even if none remains.\n\tOnData(reply bool, reader *Reader) (op OpType, N int)\n}\n\ntype ParserFactory interface {\n\tCreate(connection *Connection) interface{} // must be thread safe!\n}\n\n// const after initialization\nvar parserFactories map[string]ParserFactory = make(map[string]ParserFactory)\n\n// RegisterParserFactory adds a protocol parser factory to the map of known parsers.\n// This is called from parser init() functions while we are still single-threaded\nfunc RegisterParserFactory(name string, parserFactory ParserFactory) {\n\tlogrus.Debugf(\"proxylib: Registering L7 parser: %v\", name)\n\tparserFactories[name] = parserFactory\n}\n\nfunc GetParserFactory(name string) ParserFactory {\n\treturn parserFactories[name]\n}\n"
  },
  {
    "path": "proxylib/proxylib/policymap.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage proxylib\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n\tcore \"github.com/envoyproxy/go-control-plane/envoy/config/core/v3\"\n)\n\n// L7NetworkPolicyRule is the interface, which each L7 rule implements this interface\ntype L7NetworkPolicyRule interface {\n\tMatches(interface{}) bool\n}\n\n// L7RuleParser takes the protobuf and converts the one of relevant for the given L7 to an array\n// of L7 rules. A packet matches if the 'Matches' method of any of these rules matches the\n// 'l7' interface passed by the L7 implementation to PolicyMap.Matches() as the last parameter.\ntype L7RuleParser func(rule *cilium.PortNetworkPolicyRule) []L7NetworkPolicyRule\n\n// const after initialization\nvar l7RuleParsers map[string]L7RuleParser = make(map[string]L7RuleParser)\n\n// RegisterL7RuleParser adds a l7 policy protocol parser to the map of known l7 policy parsers.\n// This is called from parser init() functions while we are still single-threaded\nfunc RegisterL7RuleParser(l7PolicyTypeName string, parserFunc L7RuleParser) {\n\tlogrus.Debugf(\"NPDS: Registering L7 rule parser: %s\", l7PolicyTypeName)\n\tl7RuleParsers[l7PolicyTypeName] = parserFunc\n}\n\n// ParseError may be issued by Policy parsing code. The policy configuration change will\n// be graciously rejected by recovering from the panic.\nfunc ParseError(reason string, config interface{}) {\n\tpanic(fmt.Errorf(\"NPDS: %s (config: %v)\", reason, config))\n}\n\ntype PortNetworkPolicyRule struct {\n\tDeny    bool\n\tRemotes map[uint32]struct{}\n\tL7Rules []L7NetworkPolicyRule // only used when not denied\n}\n\nfunc newPortNetworkPolicyRule(config *cilium.PortNetworkPolicyRule) (PortNetworkPolicyRule, string, bool) {\n\trule := PortNetworkPolicyRule{\n\t\tDeny:    config.GetDeny(),\n\t\tRemotes: make(map[uint32]struct{}, len(config.RemotePolicies)),\n\t}\n\taction := \"Allowing\"\n\tif rule.Deny {\n\t\taction = \"Denying\"\n\t}\n\tfor _, remote := range config.GetRemotePolicies() {\n\t\tlogrus.Debugf(\"NPDS::PortNetworkPolicyRule: %s remote %d\", action, remote)\n\t\trule.Remotes[remote] = struct{}{}\n\t}\n\n\t// Each parser registers a parsing function to parse it's L7 rules\n\t// The registered name must match 'l7_proto', if included in the message,\n\t// or one of the oneof type names\n\tl7Name := config.L7Proto\n\tif l7Name == \"\" {\n\t\ttypeOf := reflect.TypeOf(config.L7)\n\t\tif typeOf != nil {\n\t\t\tl7Name = typeOf.Elem().Name()\n\t\t}\n\t}\n\tif strings.HasPrefix(l7Name, \"envoy.\") {\n\t\treturn rule, \"\", false // Silently drop Envoy filter traffic to this port if forwarded to proxylib\n\t}\n\tif l7Name != \"\" {\n\t\tl7Parser, ok := l7RuleParsers[l7Name]\n\t\tif ok {\n\t\t\tif logrus.IsLevelEnabled(logrus.DebugLevel) {\n\t\t\t\tlogrus.Debugf(\"NPDS::PortNetworkPolicyRule: Calling L7Parser %s on %v\", l7Name, config.String())\n\t\t\t}\n\t\t\trule.L7Rules = l7Parser(config)\n\t\t} else {\n\t\t\tlogrus.Debugf(\"NPDS::PortNetworkPolicyRule: Unknown L7 (%s), should drop everything.\", l7Name)\n\t\t}\n\t\t// Unknown parsers are expected, but will result in drop-all policy\n\t\treturn rule, l7Name, ok\n\t}\n\treturn rule, \"\", true // No L7 is ok\n}\n\nfunc (p *PortNetworkPolicyRule) Matches(remoteId uint32, l7 interface{}) (allowed, denied bool) {\n\t// Remote ID must match if we have any.\n\tif len(p.Remotes) > 0 {\n\t\t_, found := p.Remotes[remoteId]\n\t\tif !found {\n\t\t\tif logrus.IsLevelEnabled(logrus.DebugLevel) {\n\t\t\t\tlogrus.Debugf(\"NPDS::PortNetworkPolicyRule: No L3 match on (%v)\", *p)\n\t\t\t}\n\t\t\t// no remote ID match, does not allow or deny explicitly\n\t\t\treturn false, false\n\t\t}\n\t\tif p.Deny {\n\t\t\t// Explicit deny, not allowed even if another rule would allow.\n\t\t\treturn false, true\n\t\t}\n\t} else if p.Deny {\n\t\t// Deny with empty remotes denies all remotes explicitly\n\t\treturn false, true\n\t}\n\tif len(p.L7Rules) > 0 {\n\t\tfor _, rule := range p.L7Rules {\n\t\t\tif rule.Matches(l7) {\n\t\t\t\tif logrus.IsLevelEnabled(logrus.DebugLevel) {\n\t\t\t\t\tlogrus.Debugf(\"NPDS::PortNetworkPolicyRule: L7 rule matches (%v)\", *p)\n\t\t\t\t}\n\t\t\t\treturn true, false\n\t\t\t}\n\t\t}\n\t\treturn false, false\n\t}\n\t// Empty set matches any payload\n\tif logrus.IsLevelEnabled(logrus.DebugLevel) {\n\t\tlogrus.Debugf(\"NPDS::PortNetworkPolicyRule: Empty L7Rules matches (%v)\", *p)\n\t}\n\treturn true, false\n}\n\ntype PortNetworkPolicyRules struct {\n\tRules []PortNetworkPolicyRule\n}\n\nfunc newPortNetworkPolicyRules(config []*cilium.PortNetworkPolicyRule, port uint32) (PortNetworkPolicyRules, bool) {\n\trules := PortNetworkPolicyRules{\n\t\tRules: make([]PortNetworkPolicyRule, 0, len(config)),\n\t}\n\tif len(config) == 0 {\n\t\tlogrus.Debugf(\"NPDS::PortNetworkPolicyRules: No rules, will allow everything.\")\n\t}\n\tvar firstTypeName string\n\tfor _, rule := range config {\n\t\tnewRule, typeName, ok := newPortNetworkPolicyRule(rule)\n\t\tif !ok {\n\t\t\t// Unknown L7 parser, must drop all traffic\n\t\t\treturn PortNetworkPolicyRules{}, false\n\t\t}\n\t\tif typeName != \"\" {\n\t\t\tif firstTypeName == \"\" {\n\t\t\t\tfirstTypeName = typeName\n\t\t\t} else if typeName != firstTypeName {\n\t\t\t\tParseError(\"Mismatching L7 types on the same port\", config)\n\t\t\t}\n\t\t}\n\t\trules.Rules = append(rules.Rules, newRule)\n\t}\n\treturn rules, true\n}\n\nfunc (p *PortNetworkPolicyRules) Matches(remoteId uint32, l7 interface{}) bool {\n\t// Empty set matches any payload from anyone\n\tif len(p.Rules) == 0 {\n\t\tif logrus.IsLevelEnabled(logrus.DebugLevel) {\n\t\t\tlogrus.Debugf(\"NPDS::PortNetworkPolicyRules: No Rules; matches (%v)\", p)\n\t\t}\n\t\treturn true\n\t}\n\tvar allowed bool\n\tfor _, rule := range p.Rules {\n\t\tallow, deny := rule.Matches(remoteId, l7)\n\t\tif deny {\n\t\t\t// explicit deny\n\t\t\treturn false\n\t\t}\n\t\tif allow {\n\t\t\t// allowed if no other rule denies\n\t\t\tallowed = true\n\t\t}\n\t}\n\tif allowed {\n\t\tif logrus.IsLevelEnabled(logrus.DebugLevel) {\n\t\t\tlogrus.Debugf(\"NPDS::PortNetworkPolicyRules(remoteId=%d): rule matches (%v)\", remoteId, p)\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n\ntype PortNetworkPolicies struct {\n\tRules map[uint32]PortNetworkPolicyRules\n}\n\nfunc newPortNetworkPolicies(config []*cilium.PortNetworkPolicy, dir string) PortNetworkPolicies {\n\tpolicy := PortNetworkPolicies{\n\t\tRules: make(map[uint32]PortNetworkPolicyRules, len(config)),\n\t}\n\tfor _, rule := range config {\n\t\t// Ignore UDP policies\n\t\tif rule.GetProtocol() == core.SocketAddress_UDP {\n\t\t\tcontinue\n\t\t}\n\n\t\tport := rule.GetPort()\n\t\tif _, found := policy.Rules[port]; found {\n\t\t\tParseError(fmt.Sprintf(\"Duplicate port number %d in (rule: %v)\", port, rule), config)\n\t\t}\n\n\t\tif rule.GetProtocol() != core.SocketAddress_TCP {\n\t\t\tParseError(fmt.Sprintf(\"Invalid transport protocol %v\", rule.GetProtocol()), config)\n\t\t}\n\n\t\t// Skip the port if not 'ok'\n\t\trules, ok := newPortNetworkPolicyRules(rule.GetRules(), port)\n\t\tif ok {\n\t\t\tlogrus.Debugf(\"NPDS::PortNetworkPolicies(): installed %s TCP policy for port %d\", dir, port)\n\t\t\tpolicy.Rules[port] = rules\n\t\t} else {\n\t\t\tlogrus.Debugf(\"NPDS::PortNetworkPolicies(): Skipped %s port due to unsupported L7: %d\", dir, port)\n\t\t}\n\t}\n\treturn policy\n}\n\nfunc (p *PortNetworkPolicies) Matches(port, remoteId uint32, l7 interface{}) bool {\n\trules, found := p.Rules[port]\n\tif found {\n\t\tif rules.Matches(remoteId, l7) {\n\t\t\tif logrus.IsLevelEnabled(logrus.DebugLevel) {\n\t\t\t\tlogrus.Debugf(\"NPDS::PortNetworkPolicies(port=%d, remoteId=%d): rule matches (%v)\", port, remoteId, p)\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t}\n\t// No exact port match, try wildcard\n\trules, foundWc := p.Rules[0]\n\tif foundWc {\n\t\tif rules.Matches(remoteId, l7) {\n\t\t\tif logrus.IsLevelEnabled(logrus.DebugLevel) {\n\t\t\t\tlogrus.Debugf(\"NPDS::PortNetworkPolicies(port=*, remoteId=%d): rule matches (%v)\", remoteId, p)\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t}\n\n\t// No policy for the port was found. Cilium always creates a policy for redirects it\n\t// creates, so the host proxy never gets here.\n\t// TODO: Change back to false only when non-bpf datapath is supported?\n\n\t//\tlogrus.Debugf(\"NPDS::PortNetworkPolicies(port=%d, remoteId=%d): allowing traffic on port for which there is no policy, assuming L3/L4 has passed it! (%v)\", port, remoteId, p)\n\t//\treturn !(found || foundWc)\n\tif !(found || foundWc) {\n\t\tlogrus.Debugf(\"NPDS::PortNetworkPolicies(port=%d, remoteId=%d): Dropping traffic on port for which there is no policy! (%v)\", port, remoteId, p)\n\t}\n\treturn false\n}\n\ntype PolicyInstance struct {\n\tprotobuf *cilium.NetworkPolicy\n\tIngress  PortNetworkPolicies\n\tEgress   PortNetworkPolicies\n}\n\nfunc newPolicyInstance(config *cilium.NetworkPolicy) *PolicyInstance {\n\tlogrus.Debugf(\"NPDS::PolicyInstance: Inserting policy for %v\", config.EndpointIps)\n\treturn &PolicyInstance{\n\t\tprotobuf: config,\n\t\tIngress:  newPortNetworkPolicies(config.GetIngressPerPortPolicies(), \"ingress\"),\n\t\tEgress:   newPortNetworkPolicies(config.GetEgressPerPortPolicies(), \"egress\"),\n\t}\n}\n\nfunc (p *PolicyInstance) Matches(ingress bool, port, remoteId uint32, l7 interface{}) bool {\n\tif logrus.IsLevelEnabled(logrus.DebugLevel) {\n\t\tlogrus.Debugf(\"NPDS::PolicyInstance::Matches(ingress: %v, port: %d, remoteId: %d, l7: %v (policy: %s)\", ingress, port, remoteId, l7, p.protobuf.String())\n\t}\n\tif ingress {\n\t\treturn p.Ingress.Matches(port, remoteId, l7)\n\t}\n\treturn p.Egress.Matches(port, remoteId, l7)\n}\n\n// Network policies keyed by endpoint IPs\ntype PolicyMap map[string]*PolicyInstance\n\nfunc newPolicyMap() PolicyMap {\n\treturn make(PolicyMap)\n}\n"
  },
  {
    "path": "proxylib/proxylib/reader.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage proxylib\n\nimport (\n\t\"io\"\n)\n\ntype Reader struct {\n\tbuf       [][]byte // buffer that shrinks as data is being read\n\tread      int      // Number of byte read since last reset\n\tendStream bool     // connection is known to end (in this direction) after the current input\n}\n\nfunc NewReader(input [][]byte, endStream bool) Reader {\n\treturn Reader{\n\t\tbuf:       input,\n\t\tendStream: endStream,\n\t}\n}\n\nfunc (r *Reader) Reset() int {\n\tread := r.read\n\tr.read = 0\n\treturn read\n}\n\nfunc (r *Reader) Length() int {\n\tlength := 0\n\tfor i := 0; i < len(r.buf); i++ {\n\t\tlength += len(r.buf[i])\n\t}\n\treturn length\n}\n\nfunc (r *Reader) PeekFull(p []byte) (n int, err error) {\n\tn = 0\n\tslice := 0\n\tindex := 0\n\tfor n < len(p) && slice < len(r.buf) {\n\t\tbytes := len(r.buf[slice][index:])\n\t\tnc := copy(p[n:], r.buf[slice][index:])\n\t\tif nc == bytes {\n\t\t\t// next slice please\n\t\t\tslice++\n\t\t\tindex = 0\n\t\t} else {\n\t\t\t// move ahead in the same slice\n\t\t\tindex += nc\n\t\t}\n\t\tn += nc\n\t}\n\tif n < len(p) {\n\t\treturn n, io.EOF\n\t}\n\treturn n, nil\n}\n\nfunc (r *Reader) Read(p []byte) (n int, err error) {\n\tn = 0\n\tfor n < len(p) && len(r.buf) > 0 {\n\t\tnc := copy(p[n:], r.buf[0])\n\t\tif nc == len(r.buf[0]) {\n\t\t\t// next slice please\n\t\t\tr.buf = r.buf[1:]\n\t\t} else {\n\t\t\t// move ahead in the same slice\n\t\t\tr.buf[0] = r.buf[0][nc:]\n\t\t}\n\t\tn += nc\n\t}\n\tif n == 0 {\n\t\treturn 0, io.EOF\n\t}\n\tr.read += n\n\treturn n, nil\n}\n\n// Skip bytes in input, or exhaust the input.\nfunc (r *Reader) AdvanceInput(bytes int) {\n\tfor bytes > 0 && len(r.buf) > 0 {\n\t\trem := len(r.buf[0]) // this much data left in the first slice\n\t\tif bytes < rem {\n\t\t\tr.buf[0] = r.buf[0][bytes:] // skip 'bytes' bytes\n\t\t\treturn\n\t\t} else { // go to the beginning of the next unit\n\t\t\tbytes -= rem\n\t\t\tr.buf = r.buf[1:] // may result in an empty slice\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "proxylib/proxylib/test_util.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage proxylib\n\nimport (\n\t\"testing\"\n\n\t\"google.golang.org/protobuf/encoding/prototext\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/types/known/anypb\"\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/stretchr/testify/require\"\n\n\tenvoy_service_discovery \"github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n)\n\nvar LogFatal = func(format string, args ...interface{}) {\n\tlogrus.Fatalf(format, args...)\n}\n\nfunc (ins *Instance) CheckInsertPolicyText(tb testing.TB, version string, policies []string) {\n\terr := ins.InsertPolicyText(version, policies, \"\")\n\trequire.NoError(tb, err)\n}\n\nfunc (ins *Instance) InsertPolicyText(version string, policies []string, expectFail string) error {\n\ttypeUrl := \"type.googleapis.com/cilium.NetworkPolicy\"\n\tresources := make([]*anypb.Any, 0, len(policies))\n\n\tfor _, policy := range policies {\n\t\tpb := new(cilium.NetworkPolicy)\n\t\terr := prototext.Unmarshal([]byte(policy), pb)\n\t\tif err != nil {\n\t\t\tif expectFail != \"unmarshal\" {\n\t\t\t\tLogFatal(\"Policy UnmarshalText failed: %v\", err)\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t\tlogrus.Debugf(\"Text -> proto.Message: %s -> %v\", policy, pb)\n\t\tdata, err := proto.Marshal(pb)\n\t\tif err != nil {\n\t\t\tif expectFail != \"marshal\" {\n\t\t\t\tLogFatal(\"Policy marshal failed: %v\", err)\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\n\t\tresources = append(resources, &anypb.Any{\n\t\t\tTypeUrl: typeUrl,\n\t\t\tValue:   data,\n\t\t})\n\t}\n\n\tmsg := &envoy_service_discovery.DiscoveryResponse{\n\t\tVersionInfo: version,\n\t\tCanary:      false,\n\t\tTypeUrl:     typeUrl,\n\t\tNonce:       \"randomNonce1\",\n\t\tResources:   resources,\n\t}\n\n\terr := ins.PolicyUpdate(msg)\n\tif err != nil {\n\t\tif expectFail != \"update\" {\n\t\t\tLogFatal(\"Policy Update failed: %v\", err)\n\t\t}\n\t}\n\treturn err\n}\n\nvar connectionID uint64\n\nfunc (ins *Instance) CheckNewConnectionOK(tb testing.TB, proto string, ingress bool, srcId, dstId uint32, srcAddr, dstAddr, policyName string) *Connection {\n\terr, conn := ins.CheckNewConnection(proto, ingress, srcId, dstId, srcAddr, dstAddr, policyName)\n\trequire.NoError(tb, err)\n\trequire.NotNil(tb, conn)\n\treturn conn\n}\n\nfunc (ins *Instance) CheckNewConnection(proto string, ingress bool, srcId, dstId uint32, srcAddr, dstAddr, policyName string) (error, *Connection) {\n\tconnectionID++\n\tbufSize := 1024\n\torigBuf := make([]byte, 0, bufSize)\n\treplyBuf := make([]byte, 0, bufSize)\n\n\treturn NewConnection(ins, proto, connectionID, ingress, srcId, dstId, srcAddr, dstAddr, policyName, &origBuf, &replyBuf)\n}\n\nfunc (conn *Connection) CheckOnDataOK(tb testing.TB, reply, endStream bool, data *[][]byte, expReplyBuf []byte, expOps ...interface{}) {\n\tconn.CheckOnData(tb, reply, endStream, data, OK, expReplyBuf, expOps...)\n}\n\nfunc (conn *Connection) CheckOnData(tb testing.TB, reply, endStream bool, data *[][]byte, expResult FilterResult, expReplyBuf []byte, expOps ...interface{}) {\n\tops := make([][2]int64, 0, len(expOps)/2)\n\n\tres := conn.OnData(reply, endStream, data, &ops)\n\trequire.Equal(tb, expResult, res)\n\trequire.Equal(tb, len(expOps)/2, len(ops), \"Unexpected number of filter operations\")\n\n\tfor i, op := range ops {\n\t\tif i*2+1 < len(expOps) {\n\t\t\texpOp, ok := expOps[i*2].(OpType)\n\t\t\trequire.Truef(tb, ok, \"Invalid expected operation type\")\n\t\t\trequire.Equal(tb, int64(expOp), op[0], \"Unexpected filter operation\")\n\t\t\texpN, ok := expOps[i*2+1].(int)\n\t\t\trequire.Truef(tb, ok, \"Invalid expected operation length (must be int)\")\n\t\t\trequire.Equal(tb, int64(expN), op[1], \"Unexpected operation length\")\n\t\t}\n\t}\n\n\tbuf := conn.ReplyBuf\n\trequire.ElementsMatch(tb, expReplyBuf, *buf)\n\t*buf = (*buf)[:0] // make empty again\n\n\t// Clear the same-direction inject buffer, simulating the datapath forwarding the injected data\n\tinjectBuf := conn.getInjectBuf(reply)\n\t*injectBuf = (*injectBuf)[:0]\n\tlogrus.Debugf(\"proxylib test helper: Cleared inject buf, used %d/%d\", len(*injectBuf), cap(*injectBuf))\n}\n"
  },
  {
    "path": "proxylib/proxylib/types.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage proxylib\n\nimport \"fmt\"\n\n// OpType mirrors enum FilterOpType in types.h.\ntype OpType int64\n\nconst (\n\tMORE OpType = iota\n\tPASS\n\tDROP\n\tINJECT\n\tERROR\n\n\t// Internal types not exposed to Caller\n\tNOP OpType = 256\n)\n\n// OpError mirrors enum FilterOpError in types.h.\ntype OpError int64\n\nconst (\n\tERROR_INVALID_OP_LENGTH OpError = iota + 1\n\tERROR_INVALID_FRAME_TYPE\n\tERROR_INVALID_FRAME_LENGTH\n)\n\nfunc (op OpType) String() string {\n\tswitch op {\n\tcase MORE:\n\t\treturn \"MORE\"\n\tcase PASS:\n\t\treturn \"PASS\"\n\tcase DROP:\n\t\treturn \"DROP\"\n\tcase INJECT:\n\t\treturn \"INJECT\"\n\tcase ERROR:\n\t\treturn \"ERROR\"\n\tcase NOP:\n\t\treturn \"NOP\"\n\t}\n\treturn \"UNKNOWN_OP\"\n}\n\nfunc (opErr OpError) String() string {\n\tswitch opErr {\n\tcase ERROR_INVALID_OP_LENGTH:\n\t\treturn \"ERROR_INVALID_OP_LENGTH\"\n\tcase ERROR_INVALID_FRAME_TYPE:\n\t\treturn \"ERROR_INVALID_FRAME_TYPE\"\n\tcase ERROR_INVALID_FRAME_LENGTH:\n\t\treturn \"ERROR_INVALID_FRAME_LENGTH\"\n\t}\n\treturn \"UNKNOWN_OP_ERROR\"\n}\n\n// FilterResult mirrors enum FilterResult in types.h.\ntype FilterResult int\n\nconst (\n\tOK FilterResult = iota\n\tPOLICY_DROP\n\tPARSER_ERROR\n\tUNKNOWN_PARSER\n\tUNKNOWN_CONNECTION\n\tINVALID_ADDRESS\n\tINVALID_INSTANCE\n\tUNKNOWN_ERROR\n)\n\n// Error() implements the error interface for FilterResult\nfunc (r FilterResult) Error() string {\n\tswitch r {\n\tcase OK:\n\t\treturn \"OK\"\n\tcase POLICY_DROP:\n\t\treturn \"POLICY_DROP\"\n\tcase PARSER_ERROR:\n\t\treturn \"PARSER_ERROR\"\n\tcase UNKNOWN_PARSER:\n\t\treturn \"UNKNOWN_PARSER\"\n\tcase UNKNOWN_CONNECTION:\n\t\treturn \"UNKNOWN_CONNECTION\"\n\tcase INVALID_ADDRESS:\n\t\treturn \"INVALID_ADDRESS\"\n\tcase INVALID_INSTANCE:\n\t\treturn \"INVALID_INSTANCE\"\n\tcase UNKNOWN_ERROR:\n\t\treturn \"UNKNOWN_ERROR\"\n\t}\n\n\treturn fmt.Sprintf(\"%d\", r)\n}\n"
  },
  {
    "path": "proxylib/proxylib.go",
    "content": "// nolint:goheader\n// CGo injects a 'Code generated by ...' header here before AST parsing, ignore it.\n\n// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage main\n\n/*\n#include \"types.h\"\n*/\nimport \"C\"\n\nimport (\n\t\"github.com/sirupsen/logrus\"\n\n\t\"github.com/cilium/proxy/proxylib/libcilium\"\n)\n\nfunc init() {\n\tlogrus.Info(\"proxylib: Initializing library\")\n}\n\n// OnNewConnection is used to register a new connection of protocol 'proto'.\n// Note that the 'origBuf' and replyBuf' type '*[]byte' corresponds to 'InjectBuf' type, but due to\n// cgo export restrictions we can't use the go type in the prototype.\n//\n//export OnNewConnection\nfunc OnNewConnection(instanceId uint64, proto string, connectionId uint64, ingress bool, srcId, dstId uint32, srcAddr, dstAddr, policyName string, origBuf, replyBuf *[]byte) C.FilterResult {\n\treturn C.FilterResult(libcilium.OnNewConnection(instanceId, proto, connectionId, ingress, srcId, dstId, srcAddr, dstAddr, policyName, origBuf, replyBuf))\n}\n\n// Each connection is assumed to be called from a single thread, so accessing connection metadata\n// does not need protection.\n//\n// OnData gets all the unparsed data the datapath has received so far. The data is provided to the parser\n// associated with the connection, and the parser is expected to find if the data frame contains enough data\n// to make a PASS/DROP decision for the whole data frame. Note that the whole data frame need not be received,\n// if the decision including the length of the data frame in bytes can be determined based on the beginning of\n// the data frame only (e.g., headers including the length of the data frame). The parser returns a decision\n// with the number of bytes on which the decision applies. If more data is available, then the parser will be\n// called again with the remaining data. Parser needs to return MORE if a decision can't be made with\n// the available data, including the minimum number of additional bytes that is needed before the parser is\n// called again.\n//\n// The parser can also inject at arbitrary points in the data stream. This is indecated by an INJECT operation\n// with the number of bytes to be injected. The actual bytes to be injected are provided via an Inject()\n// callback prior to returning the INJECT operation. The Inject() callback operates on a limited size buffer\n// provided by the datapath, and multiple INJECT operations may be needed to inject large amounts of data.\n// Since we get the data on one direction at a time, any frames to be injected in the reverse direction\n// are placed in the reverse direction buffer, from where the datapath injects the data before calling\n// us again for the reverse direction input.\n//\n//export OnData\nfunc OnData(connectionId uint64, reply, endStream bool, data *[][]byte, filterOps *[][2]int64) C.FilterResult {\n\treturn C.FilterResult(libcilium.OnData(connectionId, reply, endStream, data, filterOps))\n}\n\n// Make this more general connection event callback\n//\n//export Close\nfunc Close(connectionId uint64) {\n\tlibcilium.Close(connectionId)\n}\n\n// OpenModule is called before any other APIs.\n// Called concurrently by different filter instances.\n// Returns a library instance ID that must be passed to all other API calls.\n// Calls with the same parameters will return the same instance.\n// Zero return value indicates an error.\n//\n//export OpenModule\nfunc OpenModule(params [][2]string, debug bool) uint64 {\n\treturn libcilium.OpenModule(params, debug)\n}\n\n//export CloseModule\nfunc CloseModule(id uint64) {\n\tlibcilium.CloseModule(id)\n}\n\n// Must have empty main\nfunc main() {}\n"
  },
  {
    "path": "proxylib/r2d2/r2d2parser.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage r2d2\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n\t\"github.com/cilium/proxy/proxylib/proxylib\"\n)\n\n//\n// R2D2 Parser\n//\n// This is a toy protocol to teach people how to build a Cilium golang proxy parser.\n//\n\n// Current R2D2 parser supports filtering on a basic text protocol with 4 request-types:\n// \"READ <filename>\\r\\n\"  - Read a file from the Droid\n// \"WRITE <filename>\\r\\n\" - Write a file to the Droid\n// \"HALT\\r\\n\" - Shutdown the Droid\n// \"RESET\\r\\n\" - Reset the Droid to factory settings\n//\n// Replies include a status of either \"OK\\r\\n\", \"ERROR\\r\\n\" for \"WRITE\", \"HALT\", or \"RESET\".\n//  Replies for \"READ\" are either \"OK <filedata>\\r\\n\" or \"ERROR\\r\\n\".\n//\n//\n// Policy Examples:\n// {cmd : \"READ\"}  - Allow all reads, no other commands.\n// {cmd : \"READ\", file : \"/public/.*\" }  - Allow reads that are in the public directory\n// {file : \"/public/.*\" } - Allow read/write on the public directory.\n// {cmd : \"HALT\"} - Allow shutdown, but no other actions.\n\ntype r2d2Rule struct {\n\tcmdExact          string\n\tfileRegexCompiled *regexp.Regexp\n}\n\ntype r2d2RequestData struct {\n\tcmd  string\n\tfile string\n}\n\nfunc (rule *r2d2Rule) Matches(data interface{}) bool {\n\t// Cast 'data' to the type we give to 'Matches()'\n\n\treqData, ok := data.(r2d2RequestData)\n\tregexStr := \"\"\n\tif rule.fileRegexCompiled != nil {\n\t\tregexStr = rule.fileRegexCompiled.String()\n\t}\n\n\tif !ok {\n\t\tlogrus.Warning(\"Matches() called with type other than R2d2RequestData\")\n\t\treturn false\n\t}\n\tif len(rule.cmdExact) > 0 && rule.cmdExact != reqData.cmd {\n\t\tlogrus.Debugf(\"R2d2Rule: cmd mismatch %s, %s\", rule.cmdExact, reqData.cmd)\n\t\treturn false\n\t}\n\tif rule.fileRegexCompiled != nil &&\n\t\t!rule.fileRegexCompiled.MatchString(reqData.file) {\n\t\tlogrus.Debugf(\"R2d2Rule: file mismatch %s, %s\", rule.fileRegexCompiled.String(), reqData.file)\n\t\treturn false\n\t}\n\tlogrus.Debugf(\"policy match for rule: '%s' '%s'\", rule.cmdExact, regexStr)\n\treturn true\n}\n\n// ruleParser parses protobuf L7 rules to enforcement objects\n// May panic\nfunc ruleParser(rule *cilium.PortNetworkPolicyRule) []proxylib.L7NetworkPolicyRule {\n\tl7Rules := rule.GetL7Rules()\n\tif l7Rules == nil {\n\t\treturn nil\n\t}\n\n\tallowRules := l7Rules.GetL7AllowRules()\n\trules := make([]proxylib.L7NetworkPolicyRule, 0, len(allowRules))\n\tfor _, l7Rule := range allowRules {\n\t\tvar rr r2d2Rule\n\t\tfor k, v := range l7Rule.Rule {\n\t\t\tswitch k {\n\t\t\tcase \"cmd\":\n\t\t\t\trr.cmdExact = v\n\t\t\tcase \"file\":\n\t\t\t\tif v != \"\" {\n\t\t\t\t\trr.fileRegexCompiled = regexp.MustCompile(v)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tproxylib.ParseError(fmt.Sprintf(\"Unsupported key: %s\", k), rule)\n\t\t\t}\n\t\t}\n\t\tif rr.cmdExact != \"\" &&\n\t\t\trr.cmdExact != \"READ\" &&\n\t\t\trr.cmdExact != \"WRITE\" &&\n\t\t\trr.cmdExact != \"HALT\" &&\n\t\t\trr.cmdExact != \"RESET\" {\n\t\t\tproxylib.ParseError(fmt.Sprintf(\"Unable to parse L7 r2d2 rule with invalid cmd: '%s'\", rr.cmdExact), rule)\n\t\t}\n\t\tif (rr.fileRegexCompiled != nil) && !(rr.cmdExact == \"\" || rr.cmdExact == \"READ\" || rr.cmdExact == \"WRITE\") {\n\t\t\tproxylib.ParseError(fmt.Sprintf(\"Unable to parse L7 r2d2 rule, cmd '%s' is not compatible with 'file'\", rr.cmdExact), rule)\n\t\t}\n\t\tregexStr := \"\"\n\t\tif rr.fileRegexCompiled != nil {\n\t\t\tregexStr = rr.fileRegexCompiled.String()\n\t\t}\n\t\tlogrus.Debugf(\"Parsed rule '%s' '%s'\", rr.cmdExact, regexStr)\n\t\trules = append(rules, &rr)\n\t}\n\treturn rules\n}\n\ntype factory struct{}\n\nfunc init() {\n\tlogrus.Debug(\"init(): Registering r2d2ParserFactory\")\n\tproxylib.RegisterParserFactory(\"r2d2\", &factory{})\n\tproxylib.RegisterL7RuleParser(\"r2d2\", ruleParser)\n}\n\ntype parser struct {\n\tconnection *proxylib.Connection\n}\n\nfunc (f *factory) Create(connection *proxylib.Connection) interface{} {\n\tlogrus.Debugf(\"R2d2ParserFactory: Create: %v\", connection)\n\n\treturn &parser{connection: connection}\n}\n\nfunc (p *parser) OnData(reply, endStream bool, dataArray [][]byte) (proxylib.OpType, int) {\n\n\t// inefficient, but simple\n\tdata := string(bytes.Join(dataArray, []byte{}))\n\n\tlogrus.Debugf(\"OnData: '%s'\", data)\n\tmsgLen := strings.Index(data, \"\\r\\n\")\n\tif msgLen < 0 {\n\t\t// No delimiter, request more data\n\t\tlogrus.Debugf(\"No delimiter found, requesting more bytes\")\n\t\treturn proxylib.MORE, 1\n\t}\n\n\tmsgStr := data[:msgLen] // read single request\n\tmsgLen += 2             // include \"\\r\\n\"\n\tlogrus.Debugf(\"Request = '%s'\", msgStr)\n\n\t// we don't process reply traffic for now\n\tif reply {\n\t\tlogrus.Debugf(\"reply, passing %d bytes\", msgLen)\n\t\treturn proxylib.PASS, msgLen\n\t}\n\n\tfields := strings.Split(msgStr, \" \")\n\tif len(fields) < 1 {\n\t\treturn proxylib.ERROR, int(proxylib.ERROR_INVALID_FRAME_TYPE)\n\t}\n\treqData := r2d2RequestData{cmd: fields[0]}\n\tif len(fields) == 2 {\n\t\treqData.file = fields[1]\n\t}\n\n\tmatches := true\n\taccess_log_entry_type := cilium.EntryType_Request\n\n\tif !p.connection.Matches(reqData) {\n\t\tmatches = false\n\t\taccess_log_entry_type = cilium.EntryType_Denied\n\t}\n\n\tp.connection.Log(access_log_entry_type,\n\t\t&cilium.LogEntry_GenericL7{\n\t\t\tGenericL7: &cilium.L7LogEntry{\n\t\t\t\tProto: \"r2d2\",\n\t\t\t\tFields: map[string]string{\n\t\t\t\t\t\"cmd\":  reqData.cmd,\n\t\t\t\t\t\"file\": reqData.file,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\tif !matches {\n\t\tp.connection.Inject(true, []byte(\"ERROR\\r\\n\"))\n\t\tlogrus.Debugf(\"Policy mismatch, dropping %d bytes\", msgLen)\n\t\treturn proxylib.DROP, msgLen\n\t}\n\n\treturn proxylib.PASS, msgLen\n}\n"
  },
  {
    "path": "proxylib/r2d2/r2d2parser_test.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage r2d2\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/cilium/proxy/proxylib/accesslog\"\n\t\"github.com/cilium/proxy/proxylib/proxylib\"\n\t\"github.com/cilium/proxy/proxylib/test\"\n)\n\ntype R2d2Suite struct {\n\tlogServer *test.AccessLogServer\n\tins       *proxylib.Instance\n}\n\n// Set up access log server and Library instance for all the test cases\nfunc setUpR2d2Suite(tb testing.TB) *R2d2Suite {\n\ts := &R2d2Suite{}\n\ts.logServer = test.StartAccessLogServer(\"access_log.sock\", 10)\n\trequire.NotNil(tb, s.logServer)\n\ts.ins = proxylib.NewInstance(\"node1\", accesslog.NewClient(s.logServer.Path))\n\trequire.NotNil(tb, s.ins)\n\ttb.Cleanup(func() {\n\t\ts.logServer.Clear()\n\t\ts.logServer.Close()\n\t})\n\treturn s\n}\n\nfunc TestR2d2OnDataIncomplete(t *testing.T) {\n\ts := setUpR2d2Suite(t)\n\tconn := s.ins.CheckNewConnectionOK(t, \"r2d2\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"no-policy\")\n\tdata := [][]byte{[]byte(\"READ xssss\")}\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{}, proxylib.MORE, 1)\n}\n\nfunc TestR2d2OnDataBasicPass(t *testing.T) {\n\ts := setUpR2d2Suite(t)\n\t// allow all rule\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    l7_proto: \"r2d2\"\n\t\t  >\n\t\t>\n\t\t`})\n\tconn := s.ins.CheckNewConnectionOK(t, \"r2d2\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tmsg1 := \"READ sssss\\r\\n\"\n\tmsg2 := \"WRITE sssss\\r\\n\"\n\tmsg3 := \"HALT\\r\\n\"\n\tmsg4 := \"RESET\\r\\n\"\n\tdata := [][]byte{[]byte(msg1 + msg2 + msg3 + msg4)}\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{},\n\t\tproxylib.PASS, len(msg1),\n\t\tproxylib.PASS, len(msg2),\n\t\tproxylib.PASS, len(msg3),\n\t\tproxylib.PASS, len(msg4),\n\t\tproxylib.MORE, 1)\n}\n\nfunc TestR2d2OnDataMultipleReq(t *testing.T) {\n\ts := setUpR2d2Suite(t)\n\t// allow all rule\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    l7_proto: \"r2d2\"\n\t\t  >\n\t\t>\n\t\t`})\n\tconn := s.ins.CheckNewConnectionOK(t, \"r2d2\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tmsg1Part1 := \"RE\"\n\tmsg1Part2 := \"SET\\r\\n\"\n\tdata := [][]byte{[]byte(msg1Part1), []byte(msg1Part2)}\n\tconn.CheckOnDataOK(t, false, false, &data, []byte{},\n\t\tproxylib.PASS, len(msg1Part1+msg1Part2),\n\t\tproxylib.MORE, 1)\n}\n\nfunc TestR2d2OnDataAllowDenyCmd(t *testing.T) {\n\ts := setUpR2d2Suite(t)\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    l7_proto: \"r2d2\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"cmd\"\n\t\t\t  value: \"READ\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\tconn := s.ins.CheckNewConnectionOK(t, \"r2d2\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tmsg1 := \"READ xssss\\r\\n\"\n\tmsg2 := \"WRITE xssss\\r\\n\"\n\tdata := [][]byte{[]byte(msg1 + msg2)}\n\tconn.CheckOnDataOK(t, false, false, &data, []byte(\"ERROR\\r\\n\"),\n\t\tproxylib.PASS, len(msg1),\n\t\tproxylib.DROP, len(msg2),\n\t\tproxylib.MORE, 1)\n}\n\nfunc (s *R2d2Suite) TestR2d2OnDataAllowDenyRegex(t *testing.T) {\n\n\ts.ins.CheckInsertPolicyText(t, \"1\", []string{`\n\t\tendpoint_ips: \"1.1.1.1\"\n\t\tendpoint_id: 2\n\t\tingress_per_port_policies: <\n\t\t  port: 80\n\t\t  rules: <\n\t\t    l7_proto: \"r2d2\"\n\t\t    l7_rules: <\n\t\t      l7_allow_rules: <\n\t\t\trule: <\n\t\t\t  key: \"file\"\n\t\t\t  value: \"s.*\"\n\t\t\t>\n\t\t      >\n\t\t    >\n\t\t  >\n\t\t>\n\t\t`})\n\tconn := s.ins.CheckNewConnectionOK(t, \"r2d2\", true, 1, 2, \"1.1.1.1:34567\", \"10.0.0.2:80\", \"1.1.1.1\")\n\tmsg1 := \"READ ssss\\r\\n\"\n\tmsg2 := \"WRITE yyyyy\\r\\n\"\n\tdata := [][]byte{[]byte(msg1 + msg2)}\n\tconn.CheckOnDataOK(t, false, false, &data, []byte(\"ERROR\\r\\n\"),\n\t\tproxylib.PASS, len(msg1),\n\t\tproxylib.DROP, len(msg2),\n\t\tproxylib.MORE, 1)\n}\n"
  },
  {
    "path": "proxylib/test/accesslog_server.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage test\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"net\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"google.golang.org/protobuf/proto\"\n\t\"github.com/sirupsen/logrus\"\n\t\"golang.org/x/sys/unix\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n)\n\ntype AccessLogServer struct {\n\tPath     string\n\tLogs     chan cilium.EntryType\n\tdone     chan struct{}\n\tlistener *net.UnixListener\n\tmu       sync.Mutex // protects conns\n\tconns    []*net.UnixConn\n}\n\n// Close removes the unix domain socket from the filesystem\nfunc (s *AccessLogServer) Close() {\n\tif s != nil {\n\t\tclose(s.done)\n\t\ts.listener.Close()\n\t\ts.mu.Lock()\n\t\tfor _, conn := range s.conns {\n\t\t\tconn.Close()\n\t\t}\n\t\ts.mu.Unlock()\n\t\tos.Remove(s.Path)\n\t}\n}\n\nfunc (s *AccessLogServer) isClosing() bool {\n\tselect {\n\tcase <-s.done:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Clear empties the access log server buffer, counting the passes and drops\nfunc (s *AccessLogServer) Clear() (passed, drops int) {\n\tpasses, drops := 0, 0\n\tempty := false\n\tfor !empty {\n\t\tselect {\n\t\tcase entryType := <-s.Logs:\n\t\t\tif entryType == cilium.EntryType_Denied {\n\t\t\t\tdrops++\n\t\t\t} else {\n\t\t\t\tpasses++\n\t\t\t}\n\t\tcase <-time.After(10 * time.Millisecond):\n\t\t\tempty = true\n\t\t}\n\t}\n\treturn passes, drops\n}\n\n// StartAccessLogServer starts the access log server.\nfunc StartAccessLogServer(accessLogName string, bufSize int) *AccessLogServer {\n\taccessLogPath := filepath.Join(Tmpdir, accessLogName)\n\n\tserver := &AccessLogServer{\n\t\tPath: accessLogPath,\n\t\tLogs: make(chan cilium.EntryType, bufSize),\n\t\tdone: make(chan struct{}),\n\t}\n\n\t// Create the access log listener\n\tos.Remove(accessLogPath) // Remove/Unlink the old unix domain socket, if any.\n\tvar err error\n\tserver.listener, err = net.ListenUnix(\"unixpacket\", &net.UnixAddr{Name: accessLogPath, Net: \"unixpacket\"})\n\tif err != nil {\n\t\tlogrus.Fatalf(\"Failed to open access log listen socket at %s: %v\", accessLogPath, err)\n\t}\n\tserver.listener.SetUnlinkOnClose(true)\n\n\t// Make the socket accessible by non-root Envoy proxies.\n\tif err = os.Chmod(accessLogPath, 0777); err != nil {\n\t\tlogrus.Fatalf(\"Failed to change mode of access log listen socket at %s: %v\", accessLogPath, err)\n\t}\n\n\tlogrus.Debug(\"Starting Access Log Server\")\n\tgo func() {\n\t\tfor {\n\t\t\t// Each Envoy listener opens a new connection over the Unix domain socket.\n\t\t\t// Multiple worker threads serving the listener share that same connection\n\t\t\tuc, err := server.listener.AcceptUnix()\n\t\t\tif err != nil {\n\t\t\t\t// These errors are expected when we are closing down\n\t\t\t\tif server.isClosing() ||\n\t\t\t\t\terrors.Is(err, net.ErrClosed) ||\n\t\t\t\t\terrors.Is(err, syscall.EINVAL) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tlogrus.WithError(err).Warn(\"Failed to accept access log connection\")\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif server.isClosing() {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tlogrus.Debug(\"Accepted access log connection\")\n\n\t\t\tserver.mu.Lock()\n\t\t\tserver.conns = append(server.conns, uc)\n\t\t\tserver.mu.Unlock()\n\t\t\t// Serve this access log socket in a goroutine, so we can serve multiple\n\t\t\t// connections concurrently.\n\t\t\tgo server.accessLogger(uc)\n\t\t}\n\t}()\n\n\treturn server\n}\n\n// isEOF returns true if the error message ends in \"EOF\". ReadMsgUnix returns extra info in the beginning.\nfunc isEOF(err error) bool {\n\tstrerr := err.Error()\n\terrlen := len(strerr)\n\treturn errlen >= 3 && strerr[errlen-3:] == io.EOF.Error()\n}\n\nfunc (s *AccessLogServer) accessLogger(conn *net.UnixConn) {\n\tdefer func() {\n\t\tlogrus.Debug(\"Closing access log connection\")\n\t\tconn.Close()\n\t}()\n\n\tbuf := make([]byte, 4096)\n\tfor {\n\t\tn, _, flags, _, err := conn.ReadMsgUnix(buf, nil)\n\t\tif err != nil {\n\t\t\tif !isEOF(err) && !s.isClosing() {\n\t\t\t\tlogrus.WithError(err).Error(\"Error while reading from access log connection\")\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tif flags&unix.MSG_TRUNC != 0 {\n\t\t\tlogrus.Warning(\"Discarded truncated access log message\")\n\t\t\tcontinue\n\t\t}\n\t\tpblog := cilium.LogEntry{}\n\t\terr = proto.Unmarshal(buf[:n], &pblog)\n\t\tif err != nil {\n\t\t\tlogrus.WithError(err).Warning(\"Discarded invalid access log message\")\n\t\t\tcontinue\n\t\t}\n\n\t\tlogrus.Debugf(\"Access log message: %s\", pblog.String())\n\t\ts.Logs <- pblog.EntryType\n\t}\n}\n"
  },
  {
    "path": "proxylib/test/tmpdir.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage test\n\nimport (\n\t\"os\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar Tmpdir string\n\nfunc init() {\n\tvar err error\n\tTmpdir, err = os.MkdirTemp(\"\", \"cilium_envoy_go_test\")\n\tif err != nil {\n\t\tlogrus.Fatal(\"Failed to create a temporary directory for testing\")\n\t}\n}\n"
  },
  {
    "path": "proxylib/testparsers/blockparser.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage testparsers\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n\t. \"github.com/cilium/proxy/proxylib/proxylib\"\n)\n\n//\n// Block parser used for testing\n//\n\ntype BlockParserFactory struct{}\n\nvar blockParserFactory *BlockParserFactory\n\nconst (\n\tblockParserName = \"test.blockparser\"\n)\n\nfunc init() {\n\tlogrus.Debug(\"init(): Registering blockParserFactory\")\n\tRegisterParserFactory(blockParserName, blockParserFactory)\n}\n\ntype BlockParser struct {\n\tconnection *Connection\n\tinserted   int\n}\n\nfunc (p *BlockParserFactory) Create(connection *Connection) interface{} {\n\tlogrus.Debugf(\"BlockParserFactory: Create: %v\", connection)\n\treturn &BlockParser{connection: connection}\n}\n\nfunc getBlock(data [][]byte) ([]byte, int, int, error) {\n\tvar block bytes.Buffer\n\n\toffset := 0\n\tblockLen := 0\n\thaveLength := false\n\tmissing := 0\n\n\tfor _, s := range data {\n\t\tif !haveLength {\n\t\t\tindex := bytes.IndexByte(s[offset:], ':')\n\t\t\tif index < 0 {\n\t\t\t\tblock.Write(s[offset:])\n\t\t\t\tif block.Len() > 0 {\n\t\t\t\t\tmissing = 1 // require at least one more if something was received\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tblock.Write(s[offset : offset+index])\n\t\t\t\toffset += index\n\n\t\t\t\t// Now 'block' contains everything before the ':', parse it as a decimal number\n\t\t\t\t// indicating the length of the frame AFTER the ':'\n\t\t\t\tif lenUint64, err := strconv.ParseUint(block.String(), 10, 64); err != nil {\n\t\t\t\t\treturn block.Bytes(), 0, 0, err\n\t\t\t\t} else if lenUint64 > math.MaxInt {\n\t\t\t\t\treturn block.Bytes(), 0, 0, fmt.Errorf(\"block length overflow\")\n\t\t\t\t} else {\n\t\t\t\t\tblockLen = int(lenUint64)\n\t\t\t\t}\n\t\t\t\tif blockLen <= block.Len() {\n\t\t\t\t\treturn block.Bytes(), 0, 0, fmt.Errorf(\"block length too short\")\n\t\t\t\t}\n\t\t\t\thaveLength = true\n\t\t\t\tmissing = blockLen - block.Len()\n\t\t\t}\n\t\t}\n\t\tif haveLength {\n\t\t\ts_len := len(s) - offset\n\n\t\t\tif missing <= s_len {\n\t\t\t\tblock.Write(s[offset : offset+missing])\n\t\t\t\treturn block.Bytes(), blockLen, 0, nil\n\t\t\t} else {\n\t\t\t\tblock.Write(s[offset:])\n\t\t\t\tmissing -= s_len\n\t\t\t}\n\t\t}\n\t\toffset = 0\n\t}\n\n\treturn block.Bytes(), blockLen, missing, nil\n}\n\n// Parses individual blocks that must start with one of:\n// \"PASS\" the block is passed\n// \"DROP\" the block is dropped\n// \"INJECT\" the block is injected in reverse direction\n// \"INSERT\" the block is injected in current direction\nfunc (p *BlockParser) OnData(reply, endStream bool, data [][]byte) (OpType, int) {\n\tblock, block_len, missing, err := getBlock(data)\n\tif err != nil {\n\t\tlogrus.WithError(err).Warnf(\"BlockParser: Invalid frame length\")\n\t\treturn ERROR, int(ERROR_INVALID_FRAME_LENGTH)\n\t}\n\n\tif p.inserted > 0 {\n\t\tif p.inserted == block_len {\n\t\t\tp.inserted = 0\n\t\t\treturn DROP, block_len\n\t\t}\n\t\t// partial insert in progress\n\t\tn := p.connection.Inject(reply, []byte(block)[p.inserted:])\n\t\t// Drop the INJECT block in the current direction\n\t\tp.inserted += n\n\t\treturn INJECT, n\n\t}\n\n\tif !reply {\n\t\tlogrus.Debugf(\"BlockParser: Request: %s\", block)\n\t} else {\n\t\tlogrus.Debugf(\"BlockParser: Response: %s\", block)\n\t}\n\n\tif missing == 0 && block_len == 0 {\n\t\t// Nothing received, don't know if more will be coming; do nothing\n\t\treturn NOP, 0\n\t}\n\n\tlogrus.Debugf(\"BlockParser: missing: %d\", missing)\n\n\tif bytes.Contains(block, []byte(\"PASS\")) {\n\t\tp.connection.Log(cilium.EntryType_Request, &cilium.LogEntry_GenericL7{\n\t\t\tGenericL7: &cilium.L7LogEntry{\n\t\t\t\tProto: blockParserName,\n\t\t\t\tFields: map[string]string{\n\t\t\t\t\t\"status\": \"200\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\treturn PASS, block_len\n\t}\n\tif bytes.Contains(block, []byte(\"DROP\")) {\n\t\tp.connection.Log(cilium.EntryType_Denied, &cilium.LogEntry_GenericL7{\n\t\t\tGenericL7: &cilium.L7LogEntry{\n\t\t\t\tProto: blockParserName,\n\t\t\t\tFields: map[string]string{\n\t\t\t\t\t\"status\": \"503\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\treturn DROP, block_len\n\t}\n\n\tif missing > 0 {\n\t\t// Partial block received, ask for more\n\t\treturn MORE, missing\n\t}\n\n\tif bytes.Contains(block, []byte(\"INJECT\")) {\n\t\t// Inject block in the reverse direction\n\t\tp.connection.Inject(!reply, []byte(block))\n\t\t// Drop the INJECT block in the current direction\n\t\treturn DROP, block_len\n\t}\n\tif bytes.Contains(block, []byte(\"INSERT\")) {\n\t\t// Inject the block in the current direction\n\t\tn := p.connection.Inject(reply, []byte(block))\n\t\t// Drop the INJECT block in the current direction\n\t\tp.inserted = n\n\t\treturn INJECT, n\n\t}\n\n\treturn ERROR, int(ERROR_INVALID_FRAME_TYPE)\n}\n"
  },
  {
    "path": "proxylib/testparsers/headerparser.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\n//\n// Accompanying file `headerparser.policy` contains an example policy\n// for this protocol. Install it with:\n// $ cilium policy import proxylib/testparsers/headerparser.policy\n//\n\npackage testparsers\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\tcilium \"github.com/cilium/proxy/go/cilium/api\"\n\t. \"github.com/cilium/proxy/proxylib/proxylib\"\n)\n\n//\n// Header parser used for testing\n//\n\ntype HeaderRule struct {\n\thasPrefix []byte\n\tcontains  []byte\n\thasSuffix []byte\n}\n\n// Matches returns true if the HeaderRule matches\nfunc (rule *HeaderRule) Matches(data interface{}) bool {\n\tlogrus.Debugf(\"headerparser checking rule %v\", *rule)\n\n\t// Trim whitespace from both ends\n\tbs := bytes.TrimSpace(data.([]byte))\n\n\tif len(rule.hasPrefix) > 0 && !bytes.HasPrefix(bs, rule.hasPrefix) {\n\t\tlogrus.Debugf(\"headerparser HasPrefix %s does not match %s\", bs, rule.hasPrefix)\n\t\treturn false\n\t}\n\n\tif len(rule.contains) > 0 && !bytes.Contains(bs, rule.contains) {\n\t\tlogrus.Debugf(\"headerparser Contains %s does not match %s\", bs, rule.contains)\n\t\treturn false\n\t}\n\n\tif len(rule.hasSuffix) > 0 && !bytes.HasSuffix(bs, rule.hasSuffix) {\n\t\tlogrus.Debugf(\"headerparser HasSuffix %s does not match %s\", bs, rule.hasSuffix)\n\t\treturn false\n\t}\n\tlogrus.Debug(\"headerparser rule matched!\")\n\n\treturn true\n}\n\n// L7HeaderRuleParser parses protobuf L7 rules to and array of HeaderRules\nfunc L7HeaderRuleParser(rule *cilium.PortNetworkPolicyRule) []L7NetworkPolicyRule {\n\tl7Rules := rule.GetL7Rules()\n\tif l7Rules == nil {\n\t\treturn nil\n\t}\n\n\tallowRules := l7Rules.GetL7AllowRules()\n\trules := make([]L7NetworkPolicyRule, 0, len(allowRules))\n\tfor _, l7Rule := range allowRules {\n\t\tvar hr HeaderRule\n\t\tfor k, v := range l7Rule.Rule {\n\t\t\tswitch k {\n\t\t\tcase \"prefix\":\n\t\t\t\thr.hasPrefix = []byte(v)\n\t\t\tcase \"contains\":\n\t\t\t\thr.contains = []byte(v)\n\t\t\tcase \"suffix\":\n\t\t\t\thr.hasSuffix = []byte(v)\n\t\t\tdefault:\n\t\t\t\tParseError(fmt.Sprintf(\"Unsupported key: %s\", k), rule)\n\t\t\t}\n\t\t}\n\t\tlogrus.Debugf(\"Parsed HeaderRule pair: %v\", hr)\n\t\trules = append(rules, &hr)\n\t}\n\treturn rules\n}\n\ntype HeaderParserFactory struct{}\n\nvar headerParserFactory *HeaderParserFactory\n\nconst (\n\tparserName = \"test.headerparser\"\n)\n\nfunc init() {\n\tlogrus.Debug(\"init(): Registering headerParserFactory\")\n\tRegisterParserFactory(parserName, headerParserFactory)\n\tRegisterL7RuleParser(parserName, L7HeaderRuleParser)\n}\n\ntype HeaderParser struct {\n\tconnection *Connection\n}\n\nfunc (p *HeaderParserFactory) Create(connection *Connection) interface{} {\n\tlogrus.Debugf(\"HeaderParserFactory: Create: %v\", connection)\n\treturn &HeaderParser{connection: connection}\n}\n\n// Parses individual lines and verifies them against the policy\nfunc (p *HeaderParser) OnData(reply, endStream bool, data [][]byte) (OpType, int) {\n\tline, ok := getLine(data)\n\tline_len := len(line)\n\n\tif !reply {\n\t\tlogrus.Debugf(\"HeaderParser: Request: %s\", line)\n\t} else {\n\t\tlogrus.Debugf(\"HeaderParser: Response: %s\", line)\n\t}\n\n\tif !ok {\n\t\tif line_len > 0 {\n\t\t\t// Partial line received, but no newline, ask for more\n\t\t\treturn MORE, 1\n\t\t} else {\n\t\t\t// Nothing received, don't know if more will be coming; do nothing\n\t\t\treturn NOP, 0\n\t\t}\n\t}\n\n\t// Replies pass unconditionally\n\tif reply || p.connection.Matches(line) {\n\t\tp.connection.Log(cilium.EntryType_Request,\n\t\t\t&cilium.LogEntry_GenericL7{\n\t\t\t\tGenericL7: &cilium.L7LogEntry{\n\t\t\t\t\tProto: parserName,\n\t\t\t\t\tFields: map[string]string{\n\t\t\t\t\t\t\"status\": \"PASS\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\treturn PASS, line_len\n\t}\n\n\t// Inject Error response to the reverse direction\n\tp.connection.Inject(!reply, []byte(fmt.Sprintf(\"Line dropped: %s\", line)))\n\t// Drop the line in the current direction\n\tp.connection.Log(cilium.EntryType_Denied,\n\t\t&cilium.LogEntry_GenericL7{\n\t\t\tGenericL7: &cilium.L7LogEntry{\n\t\t\t\tProto: parserName,\n\t\t\t\tFields: map[string]string{\n\t\t\t\t\t\"status\": \"DROP\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\treturn DROP, line_len\n}\n"
  },
  {
    "path": "proxylib/testparsers/headerparser.policy",
    "content": "[{\n    \"endpointSelector\": {\"matchLabels\":{\"id.echoserver\":\"\"}},\n    \"ingress\": [{\n        \"fromEndpoints\": [\n            {\"matchLabels\":{\"reserved:host\":\"\"}},\n            {\"matchLabels\":{\"id.client\":\"\"}}\n        ],\n        \"toPorts\": [{\n            \"ports\": [{\"port\": \"2701\", \"protocol\": \"tcp\"}],\n            \"rules\": {\n                \"l7proto\": \"test.headerparser\",\n                \"l7\": [{\n                    \"prefix\": \"foo\"\n                }]\n            }\n        }]\n    }]\n},{\n    \"endpointSelector\": {\"matchLabels\":{\"id.echoserver\":\"\"}},\n    \"ingress\": [{\n        \"fromEndpoints\": [\n            {\"matchLabels\":{\"reserved:host\":\"\"}},\n            {\"matchLabels\":{\"id.client\":\"\"}}\n        ],\n        \"toPorts\": [{\n            \"ports\": [{\"port\": \"2701\", \"protocol\": \"tcp\"}],\n            \"rules\": {\n                \"l7proto\": \"test.headerparser\",\n                \"l7\": [\n\t\t    {\"prefix\": \"bar\", \"contains\": \"beer\"},\n\t\t    {\"suffix\": \"end\"}\n                ]\n            }\n        }]\n    }]\n}]\n"
  },
  {
    "path": "proxylib/testparsers/lineparser.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage testparsers\n\nimport (\n\t\"bytes\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\t. \"github.com/cilium/proxy/proxylib/proxylib\"\n)\n\n//\n// Line parser used for testing\n//\n\ntype LineParserFactory struct{}\n\nvar lineParserFactory *LineParserFactory\n\nfunc init() {\n\tlogrus.Debug(\"init(): Registering lineParserFactory\")\n\tRegisterParserFactory(\"test.lineparser\", lineParserFactory)\n}\n\ntype LineParser struct {\n\tconnection *Connection\n\tinserted   bool\n}\n\nfunc (p *LineParserFactory) Create(connection *Connection) interface{} {\n\tlogrus.Debugf(\"LineParserFactory: Create: %v\", connection)\n\treturn &LineParser{connection: connection}\n}\n\nfunc getLine(data [][]byte) ([]byte, bool) {\n\tvar line bytes.Buffer\n\tfor i, s := range data {\n\t\tindex := bytes.IndexByte(s, '\\n')\n\t\tif index < 0 {\n\t\t\tline.Write(s)\n\t\t} else {\n\t\t\tlogrus.Debugf(\"getLine: unit: %d length: %d index: %d\", i, len(s), index)\n\t\t\tline.Write(s[:index+1])\n\t\t\treturn line.Bytes(), true\n\t\t}\n\t}\n\treturn line.Bytes(), false\n}\n\n// Parses individual lines that must start with one of:\n// \"PASS\" the line is passed\n// \"DROP\" the line is dropped\n// \"INJECT\" the line is injected in reverse direction\n// \"INSERT\" the line is injected in current direction\nfunc (p *LineParser) OnData(reply, endStream bool, data [][]byte) (OpType, int) {\n\tline, ok := getLine(data)\n\tline_len := len(line)\n\n\tif p.inserted {\n\t\tp.inserted = false\n\t\treturn DROP, line_len\n\t}\n\n\tif !reply {\n\t\tlogrus.Debugf(\"LineParser: Request: %s\", line)\n\t} else {\n\t\tlogrus.Debugf(\"LineParser: Response: %s\", line)\n\t}\n\n\tif !ok {\n\t\tif line_len > 0 {\n\t\t\t// Partial line received, but no newline, ask for more\n\t\t\treturn MORE, 1\n\t\t} else {\n\t\t\t// Nothing received, don't know if more will be coming; do nothing\n\t\t\treturn NOP, 0\n\t\t}\n\t}\n\n\tif bytes.HasPrefix(line, []byte(\"PASS\")) {\n\t\treturn PASS, line_len\n\t}\n\tif bytes.HasPrefix(line, []byte(\"DROP\")) {\n\t\treturn DROP, line_len\n\t}\n\tif bytes.HasPrefix(line, []byte(\"INJECT\")) {\n\t\t// Inject line in the reverse direction\n\t\tp.connection.Inject(!reply, []byte(line))\n\t\t// Drop the INJECT line in the current direction\n\t\treturn DROP, line_len\n\t}\n\tif bytes.HasPrefix(line, []byte(\"INSERT\")) {\n\t\t// Inject the line in the current direction\n\t\tp.connection.Inject(reply, []byte(line))\n\t\t// Drop the INJECT line in the current direction\n\t\tp.inserted = true\n\t\treturn INJECT, line_len\n\t}\n\n\treturn ERROR, int(ERROR_INVALID_FRAME_TYPE)\n}\n"
  },
  {
    "path": "proxylib/testparsers/passer.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n// Copyright Authors of Cilium\n\npackage testparsers\n\nimport (\n\t\"github.com/sirupsen/logrus\"\n\n\t. \"github.com/cilium/proxy/proxylib/proxylib\"\n)\n\ntype PasserParserFactory struct{}\n\nfunc init() {\n\tlogrus.Debug(\"init(): Registering PasserParserFactory\")\n\tRegisterParserFactory(\"test.passer\", &PasserParserFactory{})\n}\n\ntype PasserParser struct{}\n\nfunc (p *PasserParserFactory) Create(connection *Connection) interface{} {\n\t// Reject invalid policy name for testing purposes\n\tif connection.PolicyName == \"invalid-policy\" {\n\t\treturn nil\n\t}\n\n\tlogrus.Debugf(\"PasserParserFactory: Create: %v\", connection)\n\treturn &PasserParser{}\n}\n\n// OnData simply passes all data in either direction.\nfunc (p *PasserParser) OnData(reply, endStream bool, data [][]byte) (OpType, int) {\n\tn_bytes := 0\n\tfor _, s := range data {\n\t\tn_bytes += len(s)\n\t}\n\tif n_bytes == 0 {\n\t\treturn NOP, 0\n\t}\n\tif !reply {\n\t\tlogrus.Debugf(\"PasserParser: Request: %d bytes\", n_bytes)\n\t} else {\n\t\tlogrus.Debugf(\"PasserParser: Response: %d bytes\", n_bytes)\n\t}\n\treturn PASS, n_bytes\n}\n"
  },
  {
    "path": "proxylib/types.h",
    "content": "/*\n * Copyright 2018 Authors of Cilium\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef PROXYLIB_TYPES_H\n#define PROXYLIB_TYPES_H\n\n#include <stdint.h>\n\ntypedef enum {\n  FILTEROP_MORE,   // Need more data\n  FILTEROP_PASS,   // Pass N bytes\n  FILTEROP_DROP,   // Drop N bytes\n  FILTEROP_INJECT, // Inject N>0 bytes\n  FILTEROP_ERROR,  // Protocol parsing error\n} FilterOpType;\n\ntypedef enum {\n  FILTEROP_ERROR_INVALID_OP_LENGTH = 1,   // Parser returned invalid operation length\n  FILTEROP_ERROR_INVALID_FRAME_TYPE,\n  FILTEROP_ERROR_INVALID_FRAME_LENGTH,\n} FilterOpError;\n\ntypedef struct {\n  uint64_t op;      // FilterOpType\n  int64_t  n_bytes; // >0\n} FilterOp;\n\ntypedef enum {\n  FILTER_OK,                 // Operation was successful\n  FILTER_POLICY_DROP,        // Connection needs to be dropped due to (L3/L4) policy\n  FILTER_PARSER_ERROR,       // Connection needs to be dropped due to parser error\n  FILTER_UNKNOWN_PARSER,     // Connection needs to be dropped due to unknown parser\n  FILTER_UNKNOWN_CONNECTION, // Connection needs to be dropped due to it being unknown\n  FILTER_INVALID_ADDRESS,    // Destination address in invalid format\n  FILTER_INVALID_INSTANCE,   // Destination address in invalid format\n  FILTER_UNKNOWN_ERROR,      // Error type could not be cast to an error code\n} FilterResult;\n\n#endif\n"
  },
  {
    "path": "starter/BUILD",
    "content": "licenses([\"notice\"])  # Apache 2\n\ncc_library(\n    name = \"main_entry_lib\",\n    srcs = [\"main.cc\"],\n    visibility = [\"//visibility:public\"],\n    deps = [\n        \"privileged_service_server_lib\",\n    ],\n)\n\ncc_library(\n    name = \"privileged_service_protocol\",\n    srcs = [\"privileged_service_protocol.cc\"],\n    hdrs = [\"privileged_service_protocol.h\"],\n    visibility = [\"//visibility:public\"],\n)\n\ncc_library(\n    name = \"privileged_service_server_lib\",\n    srcs = [\"privileged_service_server.cc\"],\n    hdrs = [\"privileged_service_server.h\"],\n    deps = [\n        \"privileged_service_protocol\",\n    ],\n)\n"
  },
  {
    "path": "starter/main.cc",
    "content": "#if !defined(__linux__)\n#error \"Linux platform file is part of non-Linux build.\"\n#endif\n\n#include <cerrno>\n#include <cstring>\n#include <fstream>\n#include <stdlib.h>\t// NOLINT\n#include <iterator>\n#include <string>\n#include <string_view>\n#include <sys/prctl.h>\n#include <sys/wait.h>\n#include <unistd.h>\n#include <vector>\n#include <cstdint>\n#include <cstdio>\n#include <cstdlib>\n#include <sys/socket.h>\n#include <sys/syscall.h>\n\n#include <linux/capability.h>\n#include <linux/limits.h>\n#include <linux/prctl.h>\n\n#include \"starter/privileged_service_protocol.h\"\n#include \"starter/privileged_service_server.h\"\n\n// NOLINT(namespace-envoy)\n\n#define STARTER_SUFFIX \"-starter\"\n#define STARTER_SUFFIX_LEN (sizeof(STARTER_SUFFIX) - 1)\n\nnamespace {\n\nstd::string_view trimWhitespace(std::string_view input) {\n  constexpr std::string_view whitespace = \" \\t\\n\\r\\f\\v\";\n  size_t start = input.find_first_not_of(whitespace);\n  if (start == std::string_view::npos) {\n    return {};\n  }\n  size_t end = input.find_last_not_of(whitespace);\n  return input.substr(start, end - start + 1);\n}\n\nstd::string loadArgumentValueFromFile(const char* value_path) {\n  std::ifstream value_file(value_path);\n  if (!value_file.is_open()) {\n    fprintf(stderr, \"failed to open argument file '%s': %s\\n\", value_path, strerror(errno));\n    exit(1);\n  }\n\n  std::string value((std::istreambuf_iterator<char>(value_file)), std::istreambuf_iterator<char>());\n  if (value_file.bad()) {\n    fprintf(stderr, \"failed to read argument file '%s': %s\\n\", value_path, strerror(errno));\n    exit(1);\n  }\n\n  return std::string(trimWhitespace(value));\n}\n\nstd::string resolveArgumentValue(std::string_view arg_value) {\n  if (arg_value.empty()) {\n    return \"\";\n  }\n\n  if (arg_value[0] != '@') {\n    return std::string(arg_value);\n  }\n\n  if (arg_value.size() == 1) {\n    fprintf(stderr, \"argument file path cannot be empty\\n\");\n    exit(1);\n  }\n\n  if (arg_value[1] == '@') {\n    return std::string(arg_value.substr(1));\n  }\n\n  return loadArgumentValueFromFile(std::string(arg_value.substr(1)).c_str());\n}\n\n} // namespace\n\nint main(int argc, char** argv) {\n  // Get the path we're running from\n  char* path = new char[PATH_MAX];\n  constexpr size_t path_size = PATH_MAX;\n  int path_len = readlink(\"/proc/self/exe\", path, path_size);\n  if (path_len < 0 || path_len >= int(path_size)) {\n    fprintf(stderr, \"could not get path of the current executable: %s\\n\", strerror(errno));\n    exit(1);\n  }\n\n  // Remove the trailing \"-starter\" suffix.\n  // Check first that the executable name ends in the suffix\n  // and is not just the suffix.\n  if (size_t(path_len) > STARTER_SUFFIX_LEN && // more than suffix in path\n      strncmp(path + path_len - STARTER_SUFFIX_LEN, STARTER_SUFFIX, STARTER_SUFFIX_LEN) == 0 &&\n      path[path_len - STARTER_SUFFIX_LEN - 1] != '/' // slash not the last before suffix\n  ) {\n    path_len -= STARTER_SUFFIX_LEN;\n    path[path_len] = '\\0';\n  } else {\n    fprintf(stderr,\n            \"Executable name must end in \\\"\" STARTER_SUFFIX\n            \"\\\" and not be empty without it: \\\"%s\\\"\\n\",\n            path);\n    exit(1);\n  }\n\n  // Check that we have the required capabilities\n  uint64_t caps = Envoy::Cilium::PrivilegedService::getCapabilities(CAP_EFFECTIVE);\n  if ((caps & (1UL << CAP_NET_ADMIN)) == 0 ||\n      (caps & (1UL << CAP_SYS_ADMIN | 1UL << CAP_BPF)) == 0) {\n    fprintf(stderr, \"CAP_NET_ADMIN and either CAP_SYS_ADMIN or CAP_BPF capabilities are needed for \"\n                    \"Cilium datapath integration.\\n\");\n    exit(1);\n  }\n\n  bool delimiter_present = false;\n  std::vector<char*> args;\n\n  // skip first arg (program name)\n  for (int i = 1; i < argc; ++i) {\n    if (std::strcmp(argv[i], \"--\") == 0) {\n      delimiter_present = true;\n    }\n\n    args.push_back(argv[i]);\n  }\n\n  bool keep_cap_netbindservice = false;\n  std::vector<std::string> resolved_envoy_args;\n  resolved_envoy_args.reserve(args.size());\n  std::vector<char*> envoy_args;\n  envoy_args.push_back(path); // program\n\n  if (!delimiter_present) {\n    // backwards compatibility: handle all args as Envoys if delimiter isn't present\n    for (char* arg : args) {\n      resolved_envoy_args.push_back(resolveArgumentValue(arg));\n      envoy_args.push_back(const_cast<char*>(resolved_envoy_args.back().c_str()));\n    }\n  } else {\n    // parse arguments and split by delimiter \"--\"\n    // before: arguments for starter process\n    // after: pass to envoy process\n    bool delimiter_reached = false;\n    for (char* arg : args) {\n      if (delimiter_reached) {\n        // argument for Envoy\n        resolved_envoy_args.push_back(resolveArgumentValue(arg));\n        envoy_args.push_back(const_cast<char*>(resolved_envoy_args.back().c_str()));\n        continue;\n      }\n\n      if (std::strcmp(arg, \"--\") == 0) {\n        delimiter_reached = true;\n        continue;\n      }\n\n      if (std::strcmp(arg, \"--keep-cap-net-bind-service\") == 0) {\n        // keep CAP_NET_BIND_SERVICE if it's present in the effective capabilities\n        keep_cap_netbindservice = (caps & (1UL << CAP_NET_BIND_SERVICE)) != 0;\n        continue;\n      }\n\n      fprintf(stderr, \"Unknown starter argument '%s'.\\n\", arg);\n      exit(1);\n    }\n  }\n\n  int fds[2];\n  int rc = socketpair(AF_LOCAL, SOCK_SEQPACKET, 0, fds);\n  RELEASE_ASSERT(rc == 0, \"socketpair failed\");\n\n  int pid = fork();\n  RELEASE_ASSERT(pid != -1, \"fork failed\");\n\n  if (pid == 0) {\n    // in child process, close the parent end of the pipe\n    close(fds[0]);\n\n    // Unconditionally drop all capabilities\n    struct __user_cap_header_struct hdr{_LINUX_CAPABILITY_VERSION_3, 0};\n    struct __user_cap_data_struct data[2];\n    memset(&data, 0, sizeof(data));\n\n    if (keep_cap_netbindservice) {\n      data[0].permitted = (1UL << CAP_NET_BIND_SERVICE);\n      data[0].effective = data[0].permitted;\n    }\n\n    if (::syscall(SYS_capset, &hdr, &data, sizeof(data)) != 0) {\n      perror(\"capset\");\n      exit(1);\n    }\n\n    // Drop bounding set to prevent regaining dropped capabilities\n    if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) != 0) {\n      perror(\"prctl(PR_SET_NO_NEW_PRIVS)\");\n      exit(1);\n    }\n\n    uint64_t exp_eff_cap = 0;\n    uint64_t exp_perm_cap = 0;\n    if (keep_cap_netbindservice) {\n      exp_eff_cap = (1UL << CAP_NET_BIND_SERVICE);\n      exp_perm_cap = (1UL << CAP_NET_BIND_SERVICE);\n    }\n    RELEASE_ASSERT(\n        Envoy::Cilium::PrivilegedService::getCapabilities(CAP_EFFECTIVE) == exp_eff_cap &&\n            Envoy::Cilium::PrivilegedService::getCapabilities(CAP_PERMITTED) == exp_perm_cap &&\n            Envoy::Cilium::PrivilegedService::getCapabilities(CAP_INHERITABLE) == 0,\n        \"Failed dropping privileges\");\n\n    // Dup the client end to CILIUM_PRIVILEGED_SERVICE_FD\n    if (fds[1] != CILIUM_PRIVILEGED_SERVICE_FD) {\n      if (dup2(fds[1], CILIUM_PRIVILEGED_SERVICE_FD) < 0) {\n        perror(\"dup2\");\n        exit(1);\n      }\n      close(fds[1]);\n    }\n\n    envoy_args.push_back(nullptr);\n    execv(path, &envoy_args[0]);\n    perror(\"execv\");\n    exit(1);\n  }\n  delete[] path;\n\n  // in parent, close the child end of the pipe\n  close(fds[1]);\n\n  // Make sure the child process started\n  RELEASE_ASSERT(::waitpid(pid, nullptr, WNOHANG) == 0, \"Child process did not start!\");\n\n  Envoy::Cilium::PrivilegedService::ProtocolServer server(pid, fds[0]);\n  server.serve();\n  return 0;\n}\n"
  },
  {
    "path": "starter/privileged_service_protocol.cc",
    "content": "#if !defined(__linux__)\n#error \"Linux platform file is part of non-Linux build.\"\n#endif\n\n#include \"starter/privileged_service_protocol.h\"\n\n#include <asm-generic/socket.h>\n#include <bits/types/struct_iovec.h>\n#include <cerrno>\n#include <cstdint>\n#include <cstring>\n#include <linux/capability.h>\n#include <stdio.h>\t// NOLINT\n#include <stdlib.h>\t// NOLINT\n#include <sys/socket.h>\n#include <sys/syscall.h>\n#include <sys/unistd.h>\t// NOLINT\n#include <unistd.h>\t// NOLINT\n\nnamespace Envoy {\nnamespace Cilium {\nnamespace PrivilegedService {\n\n// Capabiilty names used in DumpCapabilities responses.\nstatic const char* cap_names[64] = {\n    \"CAP_CHOWN\",              //  0\n    \"CAP_DAC_OVERRIDE\",       //  1\n    \"CAP_DAC_READ_SEARCH\",    //  2\n    \"CAP_FOWNER\",             //  3\n    \"CAP_FSETID\",             //  4\n    \"CAP_KILL\",               //  5\n    \"CAP_SETGID\",             //  6\n    \"CAP_SETUID\",             //  7\n    \"CAP_SETPCAP\",            //  8\n    \"CAP_LINUX_IMMUTABLE\",    //  9\n    \"CAP_NET_BIND_SERVICE\",   // 10\n    \"CAP_NET_BROADCAST\",      // 11\n    \"CAP_NET_ADMIN\",          // 12\n    \"CAP_NET_RAW\",            // 13\n    \"CAP_IPC_LOCK\",           // 14\n    \"CAP_IPC_OWNER\",          // 15\n    \"CAP_SYS_MODULE\",         // 16\n    \"CAP_SYS_RAWIO\",          // 17\n    \"CAP_SYS_CHROOT\",         // 18\n    \"CAP_SYS_PTRACE\",         // 19\n    \"CAP_SYS_PACCT\",          // 20\n    \"CAP_SYS_ADMIN\",          // 21\n    \"CAP_SYS_BOOT\",           // 22\n    \"CAP_SYS_NICE\",           // 23\n    \"CAP_SYS_RESOURCE\",       // 24\n    \"CAP_SYS_TIME\",           // 25\n    \"CAP_SYS_TTY_CONFIG\",     // 26\n    \"CAP_MKNOD\",              // 27\n    \"CAP_LEASE\",              // 28\n    \"CAP_AUDIT_WRITE\",        // 29\n    \"CAP_AUDIT_CONTROL\",      // 30\n    \"CAP_SETFCAP\",            // 31\n    \"CAP_MAC_OVERRIDE\",       // 32\n    \"CAP_MAC_ADMIN\",          // 33\n    \"CAP_SYSLOG\",             // 34\n    \"CAP_WAKE_ALARM\",         // 35\n    \"CAP_BLOCK_SUSPEND\",      // 36\n    \"CAP_AUDIT_READ\",         // 37\n    \"CAP_PERFMON\",            // 38\n    \"CAP_BPF\",                // 39\n    \"CAP_CHECKPOINT_RESTORE\", // 40\n    \"CAP_41\",\n    \"CAP_42\",\n    \"CAP_43\",\n    \"CAP_44\",\n    \"CAP_45\",\n    \"CAP_46\",\n    \"CAP_47\",\n    \"CAP_48\",\n    \"CAP_49\",\n    \"CAP_50\",\n    \"CAP_51\",\n    \"CAP_52\",\n    \"CAP_53\",\n    \"CAP_54\",\n    \"CAP_55\",\n    \"CAP_56\",\n    \"CAP_57\",\n    \"CAP_58\",\n    \"CAP_59\",\n    \"CAP_60\",\n    \"CAP_61\",\n    \"CAP_62\",\n    \"CAP_63\",\n};\n\n// Get a 64-bit set of capabilities of the given kind\nuint64_t getCapabilities(cap_flag_t kind) {\n  struct __user_cap_header_struct hdr{_LINUX_CAPABILITY_VERSION_3, 0};\n  struct __user_cap_data_struct data[2];\n  memset(&data, 0, sizeof(data));\n  int rc = ::syscall(SYS_capget, &hdr, &data, sizeof(data));\n  if (rc != 0) {\n    perror(\"capget\");\n    exit(1);\n  }\n\n  if (kind == CAP_INHERITABLE) {\n    return data[0].inheritable | uint64_t(data[1].inheritable) << 32;\n  }\n  if (kind == CAP_PERMITTED) {\n    return data[0].permitted | uint64_t(data[1].permitted) << 32;\n  }\n  if (kind == CAP_EFFECTIVE) {\n    return data[0].effective | uint64_t(data[1].effective) << 32;\n  }\n  fprintf(stderr, \"getCapabilities: invalid kind: %d\\n\", kind);\n  ::abort();\n  return 0;\n}\n\n// dumpCaps returns the capabilities of the given kind in string form.\nsize_t dumpCapabilities(cap_flag_t kind, char* buf, size_t buf_size) {\n  size_t remaining = buf_size;\n  uint64_t caps = getCapabilities(kind);\n\n  auto append = [&](const char* str) {\n    auto len = strlen(str);\n    if (len < remaining) {\n      memcpy(buf, str, len);\n      remaining -= len;\n      buf += len;\n    }\n  };\n\n  for (int i = 0, n = 0; i < 64; i++) {\n    if (caps & (1UL << i)) {\n      if (n > 0) {\n        append(\", \");\n      }\n      append(cap_names[i]);\n      n++;\n    }\n  }\n\n  return buf_size - remaining;\n}\n\nProtocol::~Protocol() { close(); }\n\nProtocol::Protocol(int fd) : fd_(fd) {}\n\nvoid Protocol::close() {\n  if (fd_ != -1) {\n    ::close(fd_);\n  }\n  fd_ = -1;\n}\n\nnamespace {\n\nstatic inline struct msghdr initIov(struct iovec iov[2], const void* header, ssize_t headerlen,\n                                    const void* data, ssize_t datalen) {\n  struct msghdr msg{};\n  msg.msg_iov = iov;\n  msg.msg_iovlen = 1;\n  iov[0].iov_base = const_cast<void*>(header);\n  iov[0].iov_len = headerlen;\n  if (data && datalen > 0) {\n    msg.msg_iovlen = 2;\n    iov[1].iov_base = const_cast<void*>(data);\n    iov[1].iov_len = datalen;\n  }\n  return msg;\n}\n\n} // namespace\n\nssize_t Protocol::sendFdMsg(const void* header, ssize_t headerlen, const void* data,\n                              ssize_t datalen, int fd) {\n  struct iovec iov[2];\n  struct msghdr msg = initIov(iov, header, headerlen, data, datalen);\n  union {\n    struct cmsghdr cmsghdr;\n    char control[CMSG_SPACE(sizeof(int))];\n  } cmsgu;\n  struct cmsghdr* cmsg;\n\n  // set up msg control for an fd?\n  if (fd != -1) {\n    msg.msg_control = cmsgu.control;\n    msg.msg_controllen = sizeof(cmsgu.control);\n    cmsg = CMSG_FIRSTHDR(&msg);\n    cmsg->cmsg_len = CMSG_LEN(sizeof(int));\n    cmsg->cmsg_level = SOL_SOCKET;\n    cmsg->cmsg_type = SCM_RIGHTS;\n    *reinterpret_cast<int*>(CMSG_DATA(cmsg)) = fd;\n  }\n\n  // send the request\n  ssize_t size;\n  do {\n    size = sendmsg(fd_, &msg, 0);\n  } while (size < 0 && errno == EINTR);\n\n  if (size >= 0 && size != headerlen + datalen) {\n    fprintf(stderr, \"sendmsg truncated (%zd < %zd)\\n\", size, headerlen + datalen);\n  }\n  return size;\n}\n\nssize_t Protocol::recvFdMsg(const void* header, ssize_t headersize, const void* data,\n                              ssize_t datasize, int* fd) {\n  struct iovec iov[2];\n  struct msghdr msg = initIov(iov, header, headersize, data, datasize);\n  union {\n    struct cmsghdr cmsghdr;\n    char control[CMSG_SPACE(sizeof(int))];\n  } cmsgu;\n  msg.msg_control = cmsgu.control;\n  msg.msg_controllen = sizeof(cmsgu.control);\n\n  ssize_t size;\n  do {\n    size = recvmsg(fd_, &msg, 0);\n  } while (size < 0 && errno == EINTR);\n\n  if (size >= 0 && fd) {\n    struct cmsghdr* cmsg = CMSG_FIRSTHDR(&msg);\n    if (cmsg && cmsg->cmsg_len == CMSG_LEN(sizeof(int)) && cmsg->cmsg_level == SOL_SOCKET &&\n        cmsg->cmsg_type == SCM_RIGHTS) {\n      *fd = *reinterpret_cast<int*>(CMSG_DATA(cmsg));\n    } else {\n      *fd = -1;\n    }\n  }\n  return size;\n}\n\n} // namespace PrivilegedService\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "starter/privileged_service_protocol.h",
    "content": "#pragma once\n\n#if !defined(__linux__)\n#error \"Linux platform file is part of non-Linux build.\"\n#endif\n\n#include <linux/capability.h>\n#include <cstdint>\n#include <cstring>\n#include <stdio.h>\t// NOLINT\n#include <stdlib.h>\t// NOLINT\n#include <sys/socket.h>\n\n// Use Envoy version of this if defined, otherwise roll a simple stderr one without further\n// dependencies\n#ifndef RELEASE_ASSERT\n#define _ASSERT_IMPL(CONDITION, CONDITION_STR, DETAILS)                                            \\\n  do {                                                                                             \\\n    if (!(CONDITION)) {                                                                            \\\n      fprintf(stderr, \"assert failure: %s. Details: %s\", CONDITION_STR, (DETAILS));                \\\n      ::abort();                                                                                   \\\n    }                                                                                              \\\n  } while (false)\n#define RELEASE_ASSERT(X, DETAILS) _ASSERT_IMPL(X, #X, DETAILS)\n#endif\n\n// Kernel headers may miss CAP_BPF added in Linux 5.8\n#ifndef CAP_BPF\n#define CAP_BPF 39\n#endif\n\n#ifndef _SYS_CAPABILITY_H\n// These are normally defined in <sys/capability.h> added in libcap-dev package. Define these here\n// to avoid that dependency due to complications in cross-compilation for Intel/Arm.\ntypedef enum {                                             // NOLINT(modernize-use-using)\n  CAP_EFFECTIVE = 0,  /* Specifies the effective flag */   // NOLINT(readability-identifier-naming)\n  CAP_PERMITTED = 1,  /* Specifies the permitted flag */   // NOLINT(readability-identifier-naming)\n  CAP_INHERITABLE = 2 /* Specifies the inheritable flag */ // NOLINT(readability-identifier-naming)\n} cap_flag_t;\n#endif\n\nnamespace Envoy {\nnamespace Cilium {\nnamespace PrivilegedService {\n\nuint64_t getCapabilities(cap_flag_t kind);\nsize_t dumpCapabilities(cap_flag_t kind, char* buf, size_t buf_size);\n\n#define CILIUM_PRIVILEGED_SERVICE_FD 3\n\n// Communication with the privileged service is performed with a simple message protocol over a Unix\n// domain socket pair using the SOCK_SEQPACKET type, preserving record boundaries without explicitly\n// encoding a length field.\n// Each message starts with a 4-byte type and a 4-byte sequence number, both in the host byte order,\n// which are followed by message type specific variable length data.\n\n// Supported message types\nusing MessageType = enum {\n  TypeResponse = 1,\n  TypeDumpRequest = 2,\n  TypeBpfOpenRequest = 3,\n  TypeBpfLookupRequest = 4,\n  TypeSetSockOpt32Request = 5,\n};\n\n// Common message header\n// Note that C++ inheritance can not be used as all the data members need to be on the same struct\n// definition. This means that we must contain the MessageHeader as the first member of each message\n// definition.\nstruct MessageHeader {\n  uint32_t msg_type_ = 0;\n  uint32_t msg_seq_ = 0; // reflected in response\n\n  MessageHeader() = default;\n  MessageHeader(MessageType t) : msg_type_(t) {}\n};\n\n// Response passes the return value and errno code from the system call.\n// Note that file descriptor return value is passed using the message control channel (ref. man 2\n// recvmsg).\nstruct Response {\n  struct MessageHeader hdr_{};\n  int return_value_ = 0;\n  int errno_ = 0;\n};\n\n// Dump requests consists only of the message header, but with the TYPE_DUMP_REQUEST.\n// Response contains the effective capabilitites in a string form.\nstruct DumpRequest {\n  DumpRequest() : hdr_(TypeDumpRequest) {}\n\n  struct MessageHeader hdr_;\n};\n\n// BpfOpenRequest has a variable length path after the message header.\n// Path need not be 0-terminated.\n// Response must be a SyscallResponse. The file descriptor is returned in the message control\n// channel (see man 2 recvmsg).\nstruct BpfOpenRequest {\n  BpfOpenRequest() : hdr_(TypeBpfOpenRequest) {}\n\n  struct MessageHeader hdr_;\n  char path_[];\n};\n\n// BpfLookupRequest passes the expected value size and a variable length key.\n// Key size is not explicitly passed, as it is deduced from the message length.\n// In a successful case the response contains the value returned by the bpf map lookup.\nstruct BpfLookupRequest {\n  BpfLookupRequest(uint32_t value_size) : hdr_(TypeBpfLookupRequest), value_size_(value_size) {}\n\n  struct MessageHeader hdr_;\n  uint32_t value_size_;\n  uint8_t key_[];\n};\n\n// SetSockOptRequest only supports setting 4-byte options.\n// Response is SyscallResponse.\nstruct SetSockOptRequest {\n  SetSockOptRequest(int level, int optname, const void* optval, socklen_t optlen)\n      : hdr_(TypeSetSockOpt32Request), level_(level), optname_(optname) {\n    RELEASE_ASSERT(optlen == sizeof(uint32_t), \"optlen must be 4 bytes\");\n    memcpy(&optval_, optval, optlen);\n  }\n\n  struct MessageHeader hdr_;\n  int level_;\n  int optname_;\n  uint32_t optval_;\n};\n\n// Protocol implements the logic for communicating with the privileged service.\nclass Protocol {\npublic:\n  Protocol(int fd);\n  ~Protocol();\n\n  void close();\n  bool isOpen() const { return fd_ != -1; }\n\n  ssize_t sendFdMsg(const void* header, ssize_t headerlen, const void* data = nullptr,\n                      ssize_t datalen = 0, int fd = -1);\n  ssize_t recvFdMsg(const void* header, ssize_t headersize, const void* data = nullptr,\n                      ssize_t datasize = 0, int* fd = nullptr);\n\nprotected:\n  int fd_;\n};\n\n} // namespace PrivilegedService\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "starter/privileged_service_server.cc",
    "content": "#if !defined(__linux__)\n#error \"Linux platform file is part of non-Linux build.\"\n#endif\n\n#include \"starter/privileged_service_server.h\"\n\n#include <unistd.h>\n#include <algorithm>\n#include <cerrno>\n#include <climits>\n#include <cstdint>\n#include <cstring>\n#include <stdio.h> // NOLINT\n#include <sys/wait.h>\n#include <sys/syscall.h> // NOLINT\n\n#include \"starter/privileged_service_protocol.h\"\n\n#include <linux/bpf.h>\n\nnamespace Envoy {\nnamespace Cilium {\nnamespace PrivilegedService {\n\nProtocolServer::~ProtocolServer() {\n  // Wait for cilium-envoy to terminate\n  if (pid_ != 0) {\n    int rc;\n    do {\n      rc = ::waitpid(pid_, nullptr, 0);\n    } while (rc == -1 && errno == EINTR);\n  }\n}\n\nProtocolServer::ProtocolServer(int pid, int pipe) : Protocol(pipe), pid_(pid) {}\n\nvoid ProtocolServer::serve() {\n  Buffer msg = {};\n\n  while (true) {\n    // wait for message\n    int fd_in;\n    // Leave one byte to the end of the buffer so that we can always zero-terminate string data.\n    ssize_t size = recvFdMsg(&msg, sizeof(msg) - 1, nullptr, 0, &fd_in);\n    if (size < 0) {\n      perror(\"recvmsg\");\n      if (errno == EPIPE || errno == EPERM) {\n        break;\n      }\n      continue;\n    }\n    if (size == 0) {\n      // pipe shut down, exiting\n      break;\n    }\n    if (size_t(size) < sizeof(msg.hdr)) {\n      fprintf(stderr, \"received truncated request (%zd bytes), skipping\\n\", size);\n      continue;\n    }\n\n    size_t msg_len = size_t(size);\n    // Use the message buffer after request/response for the return value\n    size_t header_size = std::max(msg_len, sizeof(Response));\n    char* buf = msg.buf + header_size;\n    size_t buf_size = sizeof(msg) - header_size;\n    size_t value_len = 0; // set below to the actual length of the value to be returned\n    int rc = 0;\n    int fd_out = -1; // set below when 'rc' is a file descriptor\n\n    switch (msg.hdr.msg_type_) {\n    case TypeDumpRequest: // msg size == header size\n      value_len = dumpCapabilities(CAP_EFFECTIVE, buf, buf_size);\n      break;\n    case TypeBpfOpenRequest: // msg size == header size + path length\n      // zero terminate path name\n      msg.bpf_open_req.path_[msg_len - sizeof(msg.bpf_open_req)] = '\\0';\n      {\n        union bpf_attr attr = {};\n        attr.pathname = uintptr_t(msg.bpf_open_req.path_);\n        fd_out = rc = ::syscall(__NR_bpf, BPF_OBJ_GET, &attr, sizeof(attr));\n      }\n      break;\n    case TypeBpfLookupRequest: // key_size = msg_len - sizeof msg.bpf_lookup_req\n      // require at least one byte key\n      if (msg_len < sizeof(msg.bpf_lookup_req) + 1) {\n        fprintf(stderr, \"received truncated bpf lookup request (%zd bytes), skipping\\n\", msg_len);\n        rc = -1;\n        errno = EINVAL;\n        break;\n      }\n      value_len = msg.bpf_lookup_req.value_size_;\n      // Make sure the value fits into available space\n      if (buf_size < value_len) {\n        rc = -1;\n        errno = EINVAL;\n      } else {\n        union bpf_attr attr = {};\n        attr.map_fd = uint32_t(fd_in);\n        attr.key = uintptr_t(msg.bpf_lookup_req.key_);\n        attr.value = uintptr_t(buf);\n        rc = ::syscall(__NR_bpf, BPF_MAP_LOOKUP_ELEM, &attr, sizeof(attr));\n      }\n      if (rc != 0) {\n        value_len = 0;\n      }\n      break;\n    case TypeSetSockOpt32Request: // msg_len == sizeof msg.setsockopt_req\n      if (msg_len < sizeof(msg.setsockopt_req)) {\n        fprintf(stderr, \"received truncated setsockopt request (%zd bytes), skipping\\n\", msg_len);\n        rc = -1;\n        errno = EINVAL;\n        break;\n      }\n      rc = ::syscall(__NR_setsockopt, fd_in, msg.setsockopt_req.level_, msg.setsockopt_req.optname_,\n                     &msg.setsockopt_req.optval_, sizeof(msg.setsockopt_req.optval_));\n      break;\n    default:\n      fprintf(stderr, \"Unexpected privileged call type: %d\\n\", msg.hdr.msg_type_);\n      rc = -1;\n      errno = EINVAL;\n    }\n\n    // Close the received file descriptor\n    if (fd_in != -1) {\n      ::close(fd_in);\n    }\n\n    // Form the response in place\n    msg.response.hdr_.msg_type_ = TypeResponse;\n    if (fd_out != -1) {\n      // Pass a positive but invalid fd in return_value_, to be replaced with the passed\n      // fd by the receiver.\n      msg.response.return_value_ = INT_MAX;\n      msg.response.errno_ = 0;\n    } else {\n      msg.response.return_value_ = rc;\n      msg.response.errno_ = rc != -1 ? 0 : errno;\n    }\n    size = sendFdMsg(&msg, sizeof(msg.response), buf, value_len, fd_out);\n    if (size < ssize_t(sizeof(msg.response) + value_len)) {\n      perror(\"sendmsg\");\n    }\n\n    // Close the sent file descriptor\n    if (fd_out != -1) {\n      ::close(fd_out);\n    }\n  }\n}\n\n} // namespace PrivilegedService\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "starter/privileged_service_server.h",
    "content": "#pragma once\n\n#if !defined(__linux__)\n#error \"Linux platform file is part of non-Linux build.\"\n#endif\n\n#include <linux/limits.h>\n\n#include \"starter/privileged_service_protocol.h\"\n\nnamespace Envoy {\nnamespace Cilium {\nnamespace PrivilegedService {\n\n// ProtocolServer implements the privileged service server.\nclass ProtocolServer : public Protocol {\npublic:\n  ProtocolServer(int pid, int pipe);\n  ~ProtocolServer();\n\n  void serve();\n\nprivate:\n  // receive buffer type\n  union Buffer {\n    MessageHeader hdr;\n    DumpRequest dump_req;\n    BpfOpenRequest bpf_open_req;\n    BpfLookupRequest bpf_lookup_req;\n    SetSockOptRequest setsockopt_req;\n\n    // responses use the same buffer, so they inherit the message sequence number from the request\n    Response response;\n\n    // make space for the largest possible request\n    char buf[sizeof(BpfOpenRequest) + PATH_MAX + 1];\n  };\n\n  int pid_; // child pid\n};\n\n} // namespace PrivilegedService\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "tests/BUILD",
    "content": "load(\n    \"@envoy//bazel:envoy_build_system.bzl\",\n    \"envoy_cc_test\",\n    \"envoy_cc_test_library\",\n    \"envoy_package\",\n)\nload(\n    \"@envoy_api//bazel:api_build_system.bzl\",\n    \"api_cc_py_proto_library\",\n)\n\nlicenses([\"notice\"])  # Apache 2\n\nenvoy_package()\n\napi_cc_py_proto_library(\n    name = \"bpf_metadata\",\n    srcs = [\"bpf_metadata.proto\"],\n)\n\nenvoy_cc_test_library(\n    name = \"accesslog_server_lib\",\n    srcs = [\"accesslog_server.cc\"],\n    hdrs = [\"accesslog_server.h\"],\n    repository = \"@envoy\",\n    deps = [\n        \":uds_server_lib\",\n        \"//cilium/api:accesslog_proto_cc_proto\",\n        \"@envoy//test/test_common:utility_lib\",\n    ],\n)\n\nenvoy_cc_test_library(\n    name = \"uds_server_lib\",\n    srcs = [\"uds_server.cc\"],\n    hdrs = [\"uds_server.h\"],\n    repository = \"@envoy\",\n    deps = [\n        \"@envoy//source/common/common:logger_lib\",\n        \"@envoy//source/common/common:thread_lib\",\n        \"@envoy//source/common/network:address_lib\",\n        \"@envoy//test/test_common:thread_factory_for_test_lib\",\n    ],\n)\n\nenvoy_cc_test_library(\n    name = \"bpf_metadata_lib\",\n    srcs = [\"bpf_metadata.cc\"],\n    hdrs = [\"bpf_metadata.h\"],\n    repository = \"@envoy\",\n    deps = [\n        \":bpf_metadata_cc_proto\",\n        \"//cilium:bpf_metadata_lib\",\n        \"//cilium:network_policy_lib\",\n        \"//cilium:socket_option_lib\",\n        \"@envoy//source/extensions/config_subscription/filesystem:filesystem_subscription_lib\",\n        \"@envoy//test/test_common:environment_lib\",\n    ],\n)\n\nenvoy_cc_test_library(\n    name = \"cilium_http_integration_lib\",\n    srcs = [\"cilium_http_integration.cc\"],\n    hdrs = [\"cilium_http_integration.h\"],\n    repository = \"@envoy\",\n    deps = [\n        \":accesslog_server_lib\",\n        \":bpf_metadata_lib\",\n        \"@envoy//source/extensions/clusters/logical_dns:logical_dns_cluster_lib\",\n        \"@envoy//source/extensions/clusters/original_dst:original_dst_cluster_lib\",\n        \"@envoy//source/extensions/clusters/static:static_cluster_lib\",\n        \"@envoy//source/extensions/clusters/strict_dns:strict_dns_cluster_lib\",\n        \"@envoy//test/integration:http_integration_lib\",\n    ],\n)\n\nenvoy_cc_test_library(\n    name = \"cilium_tls_integration_lib\",\n    srcs = [\"cilium_tls_integration.cc\"],\n    hdrs = [\"cilium_tls_integration.h\"],\n    data = [\n        \"@envoy//test/config/integration/certs\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \"@envoy//source/extensions/clusters/logical_dns:logical_dns_cluster_lib\",\n        \"@envoy//source/extensions/clusters/original_dst:original_dst_cluster_lib\",\n        \"@envoy//source/extensions/clusters/static:static_cluster_lib\",\n        \"@envoy//source/extensions/clusters/strict_dns:strict_dns_cluster_lib\",\n        \"@envoy//source/extensions/filters/listener/tls_inspector:config\",\n        \"@envoy//source/extensions/filters/network/tcp_proxy:config\",\n        \"@envoy//test/integration:integration_lib\",\n    ],\n)\n\nenvoy_cc_test_library(\n    name = \"cilium_tcp_integration_lib\",\n    srcs = [\"cilium_tcp_integration.cc\"],\n    hdrs = [\"cilium_tcp_integration.h\"],\n    repository = \"@envoy\",\n    deps = [\n        \":accesslog_server_lib\",\n        \":bpf_metadata_lib\",\n        \"@envoy//source/extensions/clusters/logical_dns:logical_dns_cluster_lib\",\n        \"@envoy//source/extensions/clusters/original_dst:original_dst_cluster_lib\",\n        \"@envoy//source/extensions/clusters/static:static_cluster_lib\",\n        \"@envoy//source/extensions/clusters/strict_dns:strict_dns_cluster_lib\",\n        \"@envoy//source/extensions/filters/network/tcp_proxy:config\",\n        \"@envoy//test/integration:integration_lib\",\n        \"@envoy//test/integration/clusters:custom_static_cluster\",\n    ],\n)\n\nenvoy_cc_test(\n    name = \"cilium_network_policy_test\",\n    srcs = [\"cilium_network_policy_test.cc\"],\n    repository = \"@envoy\",\n    deps = [\n        \":bpf_metadata_lib\",\n        \"//cilium:network_policy_lib\",\n        \"@envoy//test/mocks/server:factory_context_mocks\",\n    ],\n)\n\nenvoy_cc_test(\n    name = \"bpf_metadata_config_test\",\n    srcs = [\"bpf_metadata_config_test.cc\"],\n    repository = \"@envoy\",\n    deps = [\n        \":bpf_metadata_lib\",\n        \"@envoy//envoy/network:filter_interface\",\n        \"@envoy//test/mocks/server:listener_factory_context_mocks\",\n    ],\n)\n\nenvoy_cc_test(\n    name = \"accesslog_test\",\n    srcs = [\"accesslog_test.cc\"],\n    repository = \"@envoy\",\n    deps = [\n        \"//cilium:accesslog_lib\",\n        \"@envoy//test/mocks/network:connection_mocks\",\n        \"@envoy//test/mocks/stream_info:stream_info_mocks\",\n        \"@envoy//test/test_common:utility_lib\",\n    ],\n)\n\nenvoy_cc_test(\n    name = \"cilium_tcp_integration_test\",\n    srcs = [\"cilium_tcp_integration_test.cc\"],\n    data = [\n        \"//proxylib:libcilium.so\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \":bpf_metadata_lib\",\n        \":cilium_tcp_integration_lib\",\n        \"//cilium:network_filter_lib\",\n        \"@envoy//source/extensions/clusters/logical_dns:logical_dns_cluster_lib\",\n        \"@envoy//source/extensions/clusters/original_dst:original_dst_cluster_lib\",\n        \"@envoy//source/extensions/clusters/static:static_cluster_lib\",\n        \"@envoy//source/extensions/clusters/strict_dns:strict_dns_cluster_lib\",\n        \"@envoy//test/integration/clusters:custom_static_cluster\",\n    ],\n)\n\nenvoy_cc_test(\n    name = \"cilium_tls_http_integration_test\",\n    srcs = [\"cilium_tls_http_integration_test.cc\"],\n    data = [\n        \"@envoy//test/config/integration/certs\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \":bpf_metadata_lib\",\n        \":cilium_http_integration_lib\",\n        \":cilium_tls_integration_lib\",\n        \"//cilium:l7policy_lib\",\n        \"//cilium:network_filter_lib\",\n        \"//cilium:tls_wrapper_lib\",\n        \"@envoy//source/extensions/clusters/logical_dns:logical_dns_cluster_lib\",\n        \"@envoy//source/extensions/clusters/original_dst:original_dst_cluster_lib\",\n        \"@envoy//source/extensions/clusters/static:static_cluster_lib\",\n        \"@envoy//source/extensions/clusters/strict_dns:strict_dns_cluster_lib\",\n    ],\n)\n\nenvoy_cc_test(\n    name = \"cilium_tls_tcp_integration_test\",\n    srcs = [\"cilium_tls_tcp_integration_test.cc\"],\n    data = [\n        \"//proxylib:libcilium.so\",\n        \"@envoy//test/config/integration/certs\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \":bpf_metadata_lib\",\n        \":cilium_tcp_integration_lib\",\n        \":cilium_tls_integration_lib\",\n        \"//cilium:l7policy_lib\",\n        \"//cilium:network_filter_lib\",\n        \"//cilium:tls_wrapper_lib\",\n        \"@envoy//source/extensions/clusters/logical_dns:logical_dns_cluster_lib\",\n        \"@envoy//source/extensions/clusters/original_dst:original_dst_cluster_lib\",\n        \"@envoy//source/extensions/clusters/static:static_cluster_lib\",\n        \"@envoy//source/extensions/clusters/strict_dns:strict_dns_cluster_lib\",\n    ],\n)\n\nenvoy_cc_test(\n    name = \"cilium_http_integration_test\",\n    srcs = [\"cilium_http_integration_test.cc\"],\n    data = [\n        \"//proxylib:libcilium.so\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \":bpf_metadata_lib\",\n        \":cilium_http_integration_lib\",\n        \"//cilium:l7policy_lib\",\n        \"//cilium:network_filter_lib\",\n        \"@envoy//source/extensions/clusters/logical_dns:logical_dns_cluster_lib\",\n        \"@envoy//source/extensions/clusters/original_dst:original_dst_cluster_lib\",\n        \"@envoy//source/extensions/clusters/static:static_cluster_lib\",\n        \"@envoy//source/extensions/clusters/strict_dns:strict_dns_cluster_lib\",\n        \"@envoy//test/integration/clusters:custom_static_cluster\",\n    ],\n)\n\nenvoy_cc_test(\n    name = \"cilium_http_upstream_integration_test\",\n    srcs = [\"cilium_http_upstream_integration_test.cc\"],\n    data = [\n        \"//proxylib:libcilium.so\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \":bpf_metadata_lib\",\n        \":cilium_http_integration_lib\",\n        \"//cilium:l7policy_lib\",\n        \"//cilium:network_filter_lib\",\n        \"@envoy//source/extensions/clusters/logical_dns:logical_dns_cluster_lib\",\n        \"@envoy//source/extensions/clusters/original_dst:original_dst_cluster_lib\",\n        \"@envoy//source/extensions/clusters/static:static_cluster_lib\",\n        \"@envoy//source/extensions/clusters/strict_dns:strict_dns_cluster_lib\",\n        \"@envoy//source/extensions/upstreams/http/http:config\",\n        \"@envoy//source/extensions/upstreams/http/http:upstream_request_lib\",\n        \"@envoy//test/integration/clusters:custom_static_cluster\",\n    ],\n)\n\nenvoy_cc_test(\n    name = \"cilium_websocket_decap_integration_test\",\n    srcs = [\"cilium_websocket_decap_integration_test.cc\"],\n    data = [\n        \"//proxylib:libcilium.so\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \":bpf_metadata_lib\",\n        \":cilium_http_integration_lib\",\n        \"//cilium:network_filter_lib\",\n        \"//cilium:websocket_lib\",\n        \"@envoy//source/extensions/clusters/logical_dns:logical_dns_cluster_lib\",\n        \"@envoy//source/extensions/clusters/original_dst:original_dst_cluster_lib\",\n        \"@envoy//source/extensions/clusters/static:static_cluster_lib\",\n        \"@envoy//source/extensions/clusters/strict_dns:strict_dns_cluster_lib\",\n        \"@envoy//source/extensions/filters/network/tcp_proxy:config\",\n    ],\n)\n\nenvoy_cc_test(\n    name = \"cilium_websocket_codec_integration_test\",\n    srcs = [\"cilium_websocket_codec_integration_test.cc\"],\n    data = [\n        \"//proxylib:libcilium.so\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \":bpf_metadata_lib\",\n        \":cilium_tcp_integration_lib\",\n        \"//cilium:network_filter_lib\",\n        \"//cilium:websocket_lib\",\n        \"@envoy//source/extensions/clusters/logical_dns:logical_dns_cluster_lib\",\n        \"@envoy//source/extensions/clusters/original_dst:original_dst_cluster_lib\",\n        \"@envoy//source/extensions/clusters/static:static_cluster_lib\",\n        \"@envoy//source/extensions/clusters/strict_dns:strict_dns_cluster_lib\",\n    ],\n)\n\nenvoy_cc_test(\n    name = \"cilium_websocket_policy_integration_test\",\n    srcs = [\"cilium_websocket_policy_integration_test.cc\"],\n    data = [\n        \"//proxylib:libcilium.so\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \":bpf_metadata_lib\",\n        \":cilium_http_integration_lib\",\n        \":cilium_tcp_integration_lib\",\n        \"//cilium:l7policy_lib\",\n        \"//cilium:network_filter_lib\",\n        \"//cilium:websocket_lib\",\n        \"@envoy//source/extensions/clusters/logical_dns:logical_dns_cluster_lib\",\n        \"@envoy//source/extensions/clusters/original_dst:original_dst_cluster_lib\",\n        \"@envoy//source/extensions/clusters/static:static_cluster_lib\",\n        \"@envoy//source/extensions/clusters/strict_dns:strict_dns_cluster_lib\",\n        \"@envoy//test/test_common:network_utility_lib\",\n    ],\n)\n\nenvoy_cc_test(\n    name = \"cilium_websocket_encap_integration_test\",\n    srcs = [\"cilium_websocket_encap_integration_test.cc\"],\n    data = [\n        \"//proxylib:libcilium.so\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \":bpf_metadata_lib\",\n        \":cilium_tcp_integration_lib\",\n        \"//cilium:network_filter_lib\",\n        \"//cilium:websocket_lib\",\n        \"@envoy//source/extensions/clusters/logical_dns:logical_dns_cluster_lib\",\n        \"@envoy//source/extensions/clusters/original_dst:original_dst_cluster_lib\",\n        \"@envoy//source/extensions/clusters/static:static_cluster_lib\",\n        \"@envoy//source/extensions/clusters/strict_dns:strict_dns_cluster_lib\",\n    ],\n)\n\nenvoy_cc_test(\n    name = \"bpf_metadata_integration_test\",\n    srcs = [\"bpf_metadata_integration_test.cc\"],\n    repository = \"@envoy\",\n    deps = [\n        \"//cilium:bpf_metadata_lib\",\n        \"//cilium/api:bpf_metadata_cc_proto\",\n        \"//cilium/api:npds_cc_proto\",\n        \"//cilium/api:nphds_cc_proto\",\n        \"@envoy//envoy/grpc:status\",\n        \"@envoy//source/extensions/clusters/original_dst:original_dst_cluster_lib\",\n        \"@envoy//source/extensions/clusters/static:static_cluster_lib\",\n        \"@envoy//source/extensions/filters/network/tcp_proxy:config\",\n        \"@envoy//test/common/grpc:grpc_client_integration_lib\",\n        \"@envoy//test/integration:integration_lib\",\n        \"@envoy//test/test_common:resources_lib\",\n        \"@envoy//test/test_common:utility_lib\",\n    ],\n)\n\nenvoy_cc_test(\n    name = \"health_check_sink_test\",\n    srcs = [\n        \"health_check_sink_server.cc\",\n        \"health_check_sink_server.h\",\n        \"health_check_sink_test.cc\",\n    ],\n    repository = \"@envoy\",\n    deps = [\n        \":uds_server_lib\",\n        \"//cilium:health_check_sink_lib\",\n        \"@envoy//envoy/grpc:status\",\n        \"@envoy//envoy/http:codec_interface\",\n        \"@envoy//envoy/network:address_interface\",\n        \"@envoy//source/common/common:assert_lib\",\n        \"@envoy//test/mocks/access_log:access_log_mocks\",\n        \"@envoy//test/mocks/server:health_checker_factory_context_mocks\",\n        \"@envoy//test/test_common:environment_lib\",\n        \"@envoy//test/test_common:utility_lib\",\n        \"@envoy_api//envoy/config/core/v3:pkg_cc_proto\",\n    ],\n)\n"
  },
  {
    "path": "tests/accesslog_server.cc",
    "content": "#include \"tests/accesslog_server.h\"\n\n#include <chrono>\n#include <functional>\n#include <string>\n\n#include \"source/common/common/logger.h\"\n\n#include \"absl/base/thread_annotations.h\"\n#include \"absl/synchronization/mutex.h\"\n#include \"absl/time/time.h\"\n#include \"absl/types/optional.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"tests/uds_server.h\"\n\nnamespace Envoy {\n\nAccessLogServer::AccessLogServer(const std::string path)\n    : UDSServer(path, std::bind(&AccessLogServer::msgCallback, this, std::placeholders::_1)) {\n  startServerThread();\n}\n\nAccessLogServer::~AccessLogServer() { shutdownServerThread(); }\n\nvoid AccessLogServer::clear() {\n  absl::MutexLock lock(&mutex_);\n  messages_.clear();\n}\n\nabsl::optional<::cilium::LogEntry>\nAccessLogServer::waitForMessage(::cilium::EntryType entry_type, std::chrono::milliseconds timeout) {\n  absl::MutexLock lock(&mutex_);\n  absl::optional<::cilium::LogEntry> entry;\n  auto predicate = [this, &entry, entry_type]() ABSL_SHARED_LOCKS_REQUIRED(mutex_) {\n    mutex_.AssertHeld();\n    for (auto& msg : messages_) {\n      if (msg.entry_type() == entry_type) {\n        entry = msg;\n        return true;\n      }\n    }\n    return false;\n  };\n  mutex_.AwaitWithTimeout(absl::Condition(&predicate), absl::Milliseconds(timeout.count()));\n  return entry;\n}\n\nvoid AccessLogServer::msgCallback(const std::string& data) {\n  ::cilium::LogEntry entry;\n  if (!entry.ParseFromString(data)) {\n    ENVOY_LOG(warn, \"Access log parse failed!\");\n  } else {\n    ENVOY_LOG(info, \"Access log entry: {}\", entry.DebugString());\n    absl::MutexLock lock(&mutex_);\n    messages_.emplace_back(entry);\n  }\n}\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/accesslog_server.h",
    "content": "#pragma once\n\n#include <chrono>\n#include <string>\n#include <vector>\n\n#include \"test/test_common/utility.h\"\n\n#include \"absl/base/thread_annotations.h\"\n#include \"absl/synchronization/mutex.h\"\n#include \"absl/types/optional.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"tests/uds_server.h\"\n\nnamespace Envoy {\n\nclass AccessLogServer : public UDSServer {\npublic:\n  AccessLogServer(const std::string path);\n  ~AccessLogServer() override;\n\n  void clear();\n  absl::optional<::cilium::LogEntry>\n  waitForMessage(::cilium::EntryType entry_type,\n                 std::chrono::milliseconds timeout = TestUtility::DefaultTimeout);\n\n  template <typename P>\n  bool expectRequestTo(P&& pred, std::chrono::milliseconds timeout = TestUtility::DefaultTimeout) {\n    auto maybe_entry = waitForMessage(::cilium::EntryType::Request, timeout);\n    if (maybe_entry.has_value()) {\n      return pred(maybe_entry.value());\n    }\n    return false;\n  }\n\n  template <typename P>\n  bool expectResponseTo(P&& pred, std::chrono::milliseconds timeout = TestUtility::DefaultTimeout) {\n    auto maybe_entry = waitForMessage(::cilium::EntryType::Response, timeout);\n    if (maybe_entry.has_value()) {\n      return pred(maybe_entry.value());\n    }\n    return false;\n  }\n\n  template <typename P>\n  bool expectDeniedTo(P&& pred, std::chrono::milliseconds timeout = TestUtility::DefaultTimeout) {\n    auto maybe_entry = waitForMessage(::cilium::EntryType::Denied, timeout);\n    if (maybe_entry.has_value()) {\n      return pred(maybe_entry.value());\n    }\n    return false;\n  }\n\nprivate:\n  void msgCallback(const std::string& data);\n\n  absl::Mutex mutex_;\n  std::vector<::cilium::LogEntry> messages_ ABSL_GUARDED_BY(mutex_);\n};\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/accesslog_test.cc",
    "content": "#include <memory>\n\n#include \"envoy/http/protocol.h\"\n\n#include \"source/common/network/address_impl.h\"\n\n#include \"test/mocks/network/connection.h\"\n#include \"test/mocks/upstream/cluster_info.h\"\n#include \"test/test_common/simulated_time_system.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"cilium/accesslog.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"gtest/gtest.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nclass CiliumTest : public testing::Test {\nprotected:\n  Event::SimulatedTimeSystem time_system_;\n};\n\nTEST_F(CiliumTest, AccessLog) {\n  Http::TestRequestHeaderMapImpl headers{{\":method\", \"GET\"},\n                                         {\":path\", \"/\"},\n                                         {\":authority\", \"host\"},\n                                         {\"x-forwarded-proto\", \"http\"},\n                                         {\"x-request-id\", \"ba41267c-cfc2-4a92-ad3e-cd084ab099b4\"}};\n  Network::MockConnection connection;\n  auto source_address = std::make_shared<Network::Address::Ipv4Instance>(\"5.6.7.8\", 45678);\n  auto destination_address = std::make_shared<Network::Address::Ipv4Instance>(\"1.2.3.4\", 80);\n  connection.stream_info_.protocol_ = Http::Protocol::Http11;\n  connection.stream_info_.start_time_ = time_system_.systemTime();\n  connection.stream_info_.downstream_connection_info_provider_->setRemoteAddress(source_address);\n  connection.stream_info_.downstream_connection_info_provider_->setLocalAddress(\n      destination_address);\n\n  AccessLog::Entry log;\n\n  log.initFromRequest(\"1.2.3.4\", 42, true, 1, source_address, 173, destination_address,\n                      connection.stream_info_, headers);\n\n  EXPECT_EQ(log.entry_.is_ingress(), true);\n  EXPECT_EQ(log.entry_.proxy_id(), 42);\n  EXPECT_EQ(log.entry_.entry_type(), ::cilium::EntryType::Request);\n  EXPECT_NE(log.entry_.timestamp(), 0);\n  EXPECT_STREQ(log.entry_.policy_name().c_str(), \"1.2.3.4\");\n  EXPECT_STREQ(\"1.2.3.4:80\", log.entry_.destination_address().c_str());\n  EXPECT_STREQ(\"5.6.7.8:45678\", log.entry_.source_address().c_str());\n  EXPECT_EQ(1, log.entry_.source_security_id());\n  EXPECT_EQ(173, log.entry_.destination_security_id());\n\n  EXPECT_EQ(log.entry_.has_http(), true);\n  EXPECT_EQ(::cilium::HttpProtocol::HTTP11, log.entry_.http().http_protocol());\n  EXPECT_STREQ(\"/\", log.entry_.http().path().c_str());\n  EXPECT_STREQ(\"GET\", log.entry_.http().method().c_str());\n  EXPECT_STREQ(\"host\", log.entry_.http().host().c_str());\n  EXPECT_STREQ(\"http\", log.entry_.http().scheme().c_str());\n\n  // Request headers not captured above\n  EXPECT_EQ(log.entry_.http().headers_size(), 1);\n  EXPECT_STREQ(log.entry_.http().headers(0).key().c_str(), \"x-request-id\");\n  EXPECT_STREQ(log.entry_.http().headers(0).value().c_str(),\n               \"ba41267c-cfc2-4a92-ad3e-cd084ab099b4\");\n\n  Http::TestResponseHeaderMapImpl response_headers{{\"my-response-header\", \"response\"}};\n\n  NiceMock<Event::SimulatedTimeSystem> time_source;\n  log.updateFromResponse(response_headers, time_source);\n\n  // Unmodified\n  EXPECT_EQ(log.entry_.has_http(), true);\n  EXPECT_EQ(::cilium::HttpProtocol::HTTP11, log.entry_.http().http_protocol());\n  EXPECT_STREQ(\"/\", log.entry_.http().path().c_str());\n  EXPECT_STREQ(\"GET\", log.entry_.http().method().c_str());\n  EXPECT_STREQ(\"host\", log.entry_.http().host().c_str());\n  EXPECT_STREQ(\"http\", log.entry_.http().scheme().c_str());\n\n  // x-request-id and response headers only\n  EXPECT_EQ(log.entry_.http().headers_size(), 2);\n  EXPECT_STREQ(log.entry_.http().headers(0).key().c_str(), \"x-request-id\");\n  EXPECT_STREQ(log.entry_.http().headers(0).value().c_str(),\n               \"ba41267c-cfc2-4a92-ad3e-cd084ab099b4\");\n  EXPECT_STREQ(log.entry_.http().headers(1).key().c_str(), \"my-response-header\");\n  EXPECT_STREQ(log.entry_.http().headers(1).value().c_str(), \"response\");\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "tests/bpf_metadata.cc",
    "content": "#include \"tests/bpf_metadata.h\"\n\n#include <cstdint>\n#include <memory>\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/common/exception.h\"\n#include \"envoy/config/core/v3/config_source.pb.h\"\n#include \"envoy/config/subscription.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/filter.h\"\n#include \"envoy/network/listen_socket.h\"\n#include \"envoy/registry/registry.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/server/filter_config.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/config/utility.h\"\n#include \"source/common/protobuf/message_validator_impl.h\"\n#include \"source/common/protobuf/protobuf.h\" // IWYU pragma: keep\n#include \"source/common/protobuf/utility.h\"\n#include \"source/extensions/config_subscription/filesystem/filesystem_subscription_impl.h\"\n\n#include \"test/test_common/environment.h\"\n\n#include \"absl/strings/string_view.h\"\n#include \"absl/types/optional.h\"\n#include \"cilium/api/bpf_metadata.pb.h\"\n#include \"cilium/bpf_metadata.h\"\n#include \"cilium/host_map.h\"\n#include \"cilium/network_policy.h\"\n#include \"cilium/secret_watcher.h\"\n#include \"fmt/printf.h\"\n#include \"tests/bpf_metadata.pb.h\"\n#include \"tests/bpf_metadata.pb.validate.h\" // IWYU pragma: keep\n\nnamespace Envoy {\n\nstd::string host_map_config = \"version_info: \\\"0\\\"\";\nstd::shared_ptr<const Cilium::PolicyHostMap> hostmap{nullptr}; // Keep reference to singleton\n\nNetwork::Address::InstanceConstSharedPtr original_dst_address;\nstd::shared_ptr<const Cilium::NetworkPolicyMap> npmap{nullptr}; // Keep reference to singleton\n\nstd::string policy_config = \"version_info: \\\"0\\\"\";\nstd::string policy_path = \"\";\n\nstd::vector<std::pair<std::string, std::string>> sds_configs{};\n\nnamespace {\n\nstd::shared_ptr<const Cilium::PolicyHostMap>\ncreateHostMap(const std::string& config, Server::Configuration::ListenerFactoryContext& context) {\n  return context.serverFactoryContext().singletonManager().getTyped<const Cilium::PolicyHostMap>(\n      \"cilium_host_map_singleton\", [&config, &context] {\n        std::string path = TestEnvironment::writeStringToFileForTest(\"host_map.yaml\", config);\n        ENVOY_LOG_MISC(debug, \"Loading Cilium Host Map from file \\'{}\\' instead of using gRPC\",\n                       path);\n\n        THROW_IF_NOT_OK(Envoy::Config::Utility::checkFilesystemSubscriptionBackingPath(\n            path, context.serverFactoryContext().api()));\n        Envoy::Config::SubscriptionStats stats =\n            Envoy::Config::Utility::generateStats(context.scope());\n        auto map = std::make_shared<Cilium::PolicyHostMap>(context.serverFactoryContext());\n        auto subscription = std::make_unique<Envoy::Config::FilesystemSubscriptionImpl>(\n            context.serverFactoryContext().mainThreadDispatcher(),\n            Envoy::Config::makePathConfigSource(path), *map,\n            std::make_shared<Cilium::PolicyHostDecoder>(), stats,\n            ProtobufMessage::getNullValidationVisitor(), context.serverFactoryContext().api());\n        map->startSubscription(std::move(subscription));\n        return map;\n      });\n}\n\nstd::shared_ptr<const Cilium::NetworkPolicyMap>\ncreatePolicyMap(const std::string& config,\n                const std::vector<std::pair<std::string, std::string>>& secret_configs,\n                Server::Configuration::FactoryContext& context) {\n  return context.serverFactoryContext().singletonManager().getTyped<const Cilium::NetworkPolicyMap>(\n      \"cilium_network_policy_singleton\", [&config, &secret_configs, &context] {\n        if (!secret_configs.empty()) {\n          for (const auto& sds_pair : secret_configs) {\n            auto& name = sds_pair.first;\n            auto& sds_config = sds_pair.second;\n            std::string sds_path = TestEnvironment::writeStringToFileForTest(\n                fmt::sprintf(\"secret-%s.yaml\", name), sds_config);\n            THROW_IF_NOT_OK(Envoy::Config::Utility::checkFilesystemSubscriptionBackingPath(\n                sds_path, context.serverFactoryContext().api()));\n          }\n          Cilium::setSDSConfigFunc([](const std::string& name,\n                                      const envoy::config::core::v3::ConfigSource&)\n                                       -> const envoy::config::core::v3::ConfigSource {\n            auto file_config = envoy::config::core::v3::ConfigSource();\n            /* initial_fetch_timeout left at default 15 seconds. */\n            file_config.set_resource_api_version(envoy::config::core::v3::ApiVersion::V3);\n            auto sds_path = TestEnvironment::temporaryPath(fmt::sprintf(\"secret-%s.yaml\", name));\n            *file_config.mutable_path_config_source() =\n                Envoy::Config::makePathConfigSource(sds_path);\n            return file_config;\n          });\n        }\n        // File subscription.\n        policy_path = TestEnvironment::writeStringToFileForTest(\"network_policy.yaml\", config);\n        ENVOY_LOG_MISC(debug,\n                       \"Loading Cilium Network Policy from file \\'{}\\' instead \"\n                       \"of using gRPC\",\n                       policy_path);\n        THROW_IF_NOT_OK(Envoy::Config::Utility::checkFilesystemSubscriptionBackingPath(\n            policy_path, context.serverFactoryContext().api()));\n        Envoy::Config::SubscriptionStats stats =\n            Envoy::Config::Utility::generateStats(context.scope());\n        auto map =\n            std::make_shared<Cilium::NetworkPolicyMap>(context, Cilium::CILIUM_XDS_API_CONFIG);\n        auto subscription = std::make_unique<Envoy::Config::FilesystemSubscriptionImpl>(\n            context.serverFactoryContext().mainThreadDispatcher(),\n            Envoy::Config::makePathConfigSource(policy_path), map->getImpl(),\n            std::make_shared<Cilium::NetworkPolicyDecoder>(), stats,\n            ProtobufMessage::getNullValidationVisitor(), context.serverFactoryContext().api());\n        map->startSubscription(std::move(subscription));\n        return map;\n      });\n}\n\n} // namespace\n\nvoid initTestMaps(Server::Configuration::ListenerFactoryContext& context) {\n  // Create the file-based policy map before the filter is created, so that the\n  // singleton is set before the gRPC subscription is attempted.\n  hostmap = createHostMap(host_map_config, context);\n  // Create the file-based policy map before the filter is created, so that the\n  // singleton is set before the gRPC subscription is attempted.\n  npmap = createPolicyMap(policy_config, sds_configs, context);\n}\n\nnamespace Cilium {\nnamespace BpfMetadata {\n\nnamespace {\n::cilium::BpfMetadata getTestConfig(const ::cilium::TestBpfMetadata& config) {\n  ::cilium::BpfMetadata test_config;\n  test_config.set_is_ingress(config.is_ingress());\n  test_config.set_is_l7lb(config.is_l7lb());\n  return test_config;\n}\n} // namespace\n\nTestConfig::TestConfig(const ::cilium::TestBpfMetadata& config,\n                       Server::Configuration::ListenerFactoryContext& context)\n    : Config(getTestConfig(config), context) {\n  hosts_ = hostmap;\n  npmap_ = npmap;\n}\n\nTestConfig::~TestConfig() {\n  hostmap.reset();\n  npmap.reset();\n}\n\nabsl::optional<Cilium::BpfMetadata::SocketMetadata>\nTestConfig::extractSocketMetadata(Network::ConnectionSocket& socket) {\n  // TLS filter chain matches this, make namespace part of this (e.g.,\n  // \"default\")?\n  socket.setDetectedTransportProtocol(\"cilium:default\");\n\n  // This must be the full domain name\n  socket.setRequestedServerName(\"localhost\");\n\n  std::string pod_ip;\n  std::uint64_t source_identity;\n  std::uint64_t destination_identity;\n  if (is_ingress_) {\n    source_identity = 1;\n    destination_identity = 173;\n    pod_ip = original_dst_address->ip()->addressAsString();\n    ENVOY_LOG_MISC(debug, \"INGRESS POD_IP: {}\", pod_ip);\n  } else {\n    source_identity = 173;\n    auto ip = socket.connectionInfoProvider().localAddress()->ip();\n    destination_identity = hosts_->resolve(ip);\n    pod_ip = ip->addressAsString();\n    ENVOY_LOG_MISC(debug, \"EGRESS POD_IP: {}\", pod_ip);\n  }\n  const auto& policy = getPolicy(pod_ip);\n  auto port = original_dst_address->ip()->port();\n\n  // Set metadata for policy based listener filter chain matching\n  // Note: tls_inspector may overwrite this value, if it executes after us!\n  std::string l7proto;\n  policy.useProxylib(is_ingress_, proxy_id_, is_ingress_ ? source_identity : destination_identity,\n                     port, l7proto);\n\n  return {Cilium::BpfMetadata::SocketMetadata(\n      0, 0, source_identity, is_ingress_, is_l7lb_, port, std::move(pod_ip), \"\", nullptr, nullptr,\n      nullptr, original_dst_address, shared_from_this(), 0, std::move(l7proto), \"\")};\n}\n\n} // namespace BpfMetadata\n} // namespace Cilium\n\nnamespace Server {\nnamespace Configuration {\n\nclass TestBpfMetadataConfigFactory : public NamedListenerFilterConfigFactory {\npublic:\n  // NamedListenerFilterConfigFactory\n  Network::ListenerFilterFactoryCb createListenerFilterFactoryFromProto(\n      const Protobuf::Message& proto_config,\n      const Network::ListenerFilterMatcherSharedPtr& listener_filter_matcher,\n      ListenerFactoryContext& context) override {\n\n    initTestMaps(context);\n\n    auto config = std::make_shared<Cilium::BpfMetadata::TestConfig>(\n        MessageUtil::downcastAndValidate<const ::cilium::TestBpfMetadata&>(\n            proto_config, context.messageValidationVisitor()),\n        context);\n\n    return [listener_filter_matcher,\n            config](Network::ListenerFilterManager& filter_manager) mutable -> void {\n      filter_manager.addAcceptFilter(listener_filter_matcher,\n                                     std::make_unique<Cilium::BpfMetadata::Instance>(config));\n    };\n  }\n\n  ProtobufTypes::MessagePtr createEmptyConfigProto() override {\n    return std::make_unique<::cilium::TestBpfMetadata>();\n  }\n\n  std::string name() const override { return \"test_bpf_metadata\"; }\n};\n\n/**\n * Static registration for the bpf metadata filter. @see RegisterFactory.\n */\nREGISTER_FACTORY(TestBpfMetadataConfigFactory, NamedListenerFilterConfigFactory);\n\n} // namespace Configuration\n} // namespace Server\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/bpf_metadata.h",
    "content": "#pragma once\n\n#include <memory>\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/network/address.h\"\n#include \"envoy/network/listen_socket.h\"\n#include \"envoy/server/factory_context.h\"\n\n#include \"absl/types/optional.h\"\n#include \"cilium/bpf_metadata.h\"\n#include \"cilium/host_map.h\"\n#include \"cilium/network_policy.h\"\n#include \"tests/bpf_metadata.pb.h\"\n\nnamespace Envoy {\n\nextern std::string host_map_config;\nextern std::shared_ptr<const Cilium::PolicyHostMap> hostmap;\n\nextern Network::Address::InstanceConstSharedPtr original_dst_address;\nextern std::shared_ptr<const Cilium::NetworkPolicyMap> npmap;\n\nextern std::string policy_config;\nextern std::string policy_path;\nextern std::vector<std::pair<std::string, std::string>> sds_configs;\n\nextern void initTestMaps(Server::Configuration::ListenerFactoryContext& context);\n\nnamespace Cilium {\nnamespace BpfMetadata {\n\nclass TestConfig : public Config {\npublic:\n  TestConfig(const ::cilium::TestBpfMetadata& config,\n             Server::Configuration::ListenerFactoryContext& context);\n  ~TestConfig() override;\n\n  absl::optional<Cilium::BpfMetadata::SocketMetadata>\n  extractSocketMetadata(Network::ConnectionSocket& socket) override;\n\n  // Prevent socket options that require NET_ADMIN privileges from being applied during test\n  // execution.\n  bool addPrivilegedSocketOptions() override { return false; };\n};\n\n} // namespace BpfMetadata\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "tests/bpf_metadata.proto",
    "content": "syntax = \"proto3\";\n\noption go_package = \"github.com/cilium/proxy/go/cilium/api;cilium\";\n\npackage cilium;\n\nmessage TestBpfMetadata {\n  // 'true' if the filter is on ingress listener, 'false' for egress listener.\n  bool is_ingress = 2;\n  bool is_l7lb = 4;\n}\n"
  },
  {
    "path": "tests/bpf_metadata_config_test.cc",
    "content": "#include <gmock/gmock-actions.h>\n#include <gmock/gmock-spec-builders.h>\n#include <gtest/gtest.h>\n#include <spdlog/common.h>\n\n#include <cstdint>\n#include <list>\n#include <memory>\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/api/api.h\"\n#include \"envoy/common/exception.h\"\n#include \"envoy/filesystem/watcher.h\"\n#include \"envoy/init/target.h\"\n#include \"envoy/init/watcher.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/network/socket.h\"\n\n#include \"source/common/common/base_logger.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/statusor.h\"\n#include \"source/common/init/watcher_impl.h\"\n#include \"source/common/network/address_impl.h\"\n#include \"source/common/network/socket_impl.h\"\n#include \"source/common/stats/isolated_store_impl.h\"\n\n#include \"test/mocks/filesystem/mocks.h\"\n#include \"test/mocks/network/connection.h\"\n#include \"test/mocks/network/io_handle.h\"\n#include \"test/mocks/network/mocks.h\"\n#include \"test/mocks/server/listener_factory_context.h\"\n#include \"test/mocks/server/server_factory_context.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"absl/status/status.h\"\n#include \"absl/strings/string_view.h\"\n#include \"cilium/accesslog.h\"\n#include \"cilium/api/bpf_metadata.pb.h\"\n#include \"cilium/bpf_metadata.h\"\n#include \"tests/bpf_metadata.h\"\n\nusing testing::Mock;\nusing testing::NiceMock;\nusing testing::ReturnRef;\n\nnamespace Envoy {\nnamespace Cilium {\nnamespace {\n\n// Test Cilium::BpfMetadata::Config filter config\n// (NOT Cilium::BpfMetadata::TestConfig)\n\nclass MetadataConfigTest : public testing::Test {\nprotected:\n  MetadataConfigTest() : api_(Api::createApiForTest()) {\n    for (Logger::Logger& logger : Logger::Registry::loggers()) {\n      logger.setLevel(spdlog::level::trace);\n    }\n\n    ON_CALL(context_.server_factory_context_, api()).WillByDefault(testing::ReturnRef(*api_));\n\n    ON_CALL(context_.server_factory_context_.dispatcher_, createFilesystemWatcher_())\n        .WillByDefault(Invoke([]() -> Filesystem::Watcher* {\n          auto watcher = new Filesystem::MockWatcher();\n          EXPECT_CALL(*watcher, addWatch(_, Filesystem::Watcher::Events::MovedTo, _))\n              .WillOnce(Invoke([](absl::string_view, std::uint32_t,\n                                  Filesystem::Watcher::OnChangedCb) { return absl::OkStatus(); }));\n          Mock::AllowLeak(watcher);\n          return watcher;\n        }));\n    ON_CALL(context_.init_manager_, add(_))\n        .WillByDefault(Invoke([this](const Init::Target& target) {\n          target_handles_.push_back(target.createHandle(\"test\"));\n        }));\n    ON_CALL(context_.init_manager_, initialize(_))\n        .WillByDefault(Invoke([this](const Init::Watcher& watcher) {\n          for (auto& handle : target_handles_) {\n            handle->initialize(watcher);\n          }\n        }));\n\n    options_ = std::make_shared<std::vector<Network::Socket::OptionConstSharedPtr>>();\n    ON_CALL(socket_, options()).WillByDefault(ReturnRef(options_));\n    ON_CALL(socket_, addOption_(_))\n        .WillByDefault(Invoke([this](const Network::Socket::OptionConstSharedPtr& option) {\n          options_->emplace_back(std::move(option));\n        }));\n    ON_CALL(socket_, addOptions_(_))\n        .WillByDefault(Invoke([this](const Network::Socket::OptionsSharedPtr& options) {\n          Network::Socket::appendOptions(options_, options);\n        }));\n    ON_CALL(socket_, ioHandle()).WillByDefault(ReturnRef(io_handle_));\n    ON_CALL(testing::Const(socket_), ioHandle()).WillByDefault(ReturnRef(io_handle_));\n\n    // Set up the original destination address.\n    // - for egress this the destination pod address\n    // - for ingress this is the pod IP\n    // - port is a \"well-known\" \"service\" port\n    original_dst_address = std::make_shared<Network::Address::Ipv4Instance>(\"10.2.2.2\", 80);\n    EXPECT_TRUE(original_dst_address);\n    EXPECT_NE(nullptr, original_dst_address->ip());\n    const auto original_dst_address_status =\n        StatusOr<Network::Address::InstanceConstSharedPtr>(original_dst_address);\n    // Set up the default local address.\n    // This is the \"tproxy\" address the listener is listening on:\n    // - IP is localhost\n    // - port is allocated from the ephemeral range\n    local_address_ = std::make_shared<Network::Address::Ipv4Instance>(\"127.0.0.1\", 23456);\n    EXPECT_TRUE(local_address_);\n    EXPECT_NE(nullptr, local_address_->ip());\n\n    // Set up the remote address.\n    // - for egress this the pod IP\n    // - for ingress this is the original source address\n    // - port is from the ephemeral range\n    remote_address_ = std::make_shared<Network::Address::Ipv4Instance>(\"10.1.1.1\", 41234);\n    EXPECT_TRUE(remote_address_);\n    EXPECT_NE(nullptr, remote_address_->ip());\n\n    ON_CALL(io_handle_, localAddress()).WillByDefault(testing::Return(original_dst_address_status));\n    EXPECT_EQ(&io_handle_, &socket_.ioHandle());\n    const auto addr = THROW_OR_RETURN_VALUE(socket_.ioHandle().localAddress(),\n                                            Network::Address::InstanceConstSharedPtr)\n                          .get();\n    EXPECT_NE(nullptr, addr);\n  }\n  ~MetadataConfigTest() override {\n    hostmap.reset();\n    npmap.reset();\n  }\n\n  void SetUp() override {\n    // Set up default host map\n    host_map_config = R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 111\n  host_addresses: [ \"10.1.1.1\", \"f00d::1:1:1\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 222\n  host_addresses: [ \"10.2.2.2\", \"f00d::2:2:2\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 1\n  host_addresses: [ \"127.0.0.0/8\", \"::1/128\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 8\n  host_addresses: [ \"10.1.1.42\", \"face::42\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 12345678\n  host_addresses: [ \"192.168.1.0/24\" ]\n)EOF\";\n\n    // Set up default policy\n    policy_config = R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '10.1.1.1'\n  - 'face::1:1:1'\n  endpoint_id: 2048\n  egress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 222 ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '10.2.2.2'\n  - 'face::2:2:2'\n  endpoint_id: 4096\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 111 ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '10.1.1.42'\n  - 'face::42'\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 0\n    rules:\n    - remote_policies: [ 9999, 12345678 ]\n  egress_per_port_policies:\n  - port: 0\n    rules:\n    - remote_policies: [ 222, 9999, 12345678 ]\n)EOF\";\n  }\n\n  void initialize(const ::cilium::BpfMetadata& config, std::string extra_host_map_config = \"\",\n                  std::string extra_policy_config = \"\") {\n    socket_.connection_info_provider_ =\n        std::make_shared<Network::ConnectionInfoSetterImpl>(local_address_, remote_address_);\n\n    host_map_config += extra_host_map_config;\n    policy_config += extra_policy_config;\n\n    initTestMaps(context_);\n\n    Init::WatcherImpl watcher(\"metadata test\", []() {});\n    context_.initManager().initialize(watcher);\n\n    config_ = std::make_shared<Cilium::BpfMetadata::Config>(config, context_);\n    config_->hosts_ = hostmap;\n    config_->npmap_ = npmap;\n  }\n\n  void TearDown() override {}\n\n  Api::ApiPtr api_;\n  Stats::IsolatedStoreImpl stats_;\n  NiceMock<Server::Configuration::MockTransportSocketFactoryContext>\n      transport_socket_factory_context_;\n  NiceMock<Server::Configuration::MockListenerFactoryContext> context_;\n  std::shared_ptr<Cilium::BpfMetadata::Config> config_;\n  Network::Address::InstanceConstSharedPtr local_address_;\n  Network::Address::InstanceConstSharedPtr remote_address_;\n  NiceMock<Network::MockConnection> conn_;\n  NiceMock<Network::MockConnectionSocket> socket_;\n  NiceMock<Network::MockIoHandle> io_handle_;\n  Network::Socket::OptionsSharedPtr options_;\n  std::list<Init::TargetHandlePtr> target_handles_;\n};\n\nTEST_F(MetadataConfigTest, NpdsConfigSupported) {\n  ::cilium::BpfMetadata config{};\n  config.mutable_npds_config()->mutable_api_config_source()->set_api_type(\n      envoy::config::core::v3::ApiConfigSource::GRPC);\n\n  EXPECT_NO_THROW(initialize(config));\n}\n\nTEST_F(MetadataConfigTest, EmptyConfig) {\n  ::cilium::BpfMetadata config{};\n\n  EXPECT_NO_THROW(initialize(config));\n}\n\nTEST_F(MetadataConfigTest, InvalidL7lbConfig) {\n  ::cilium::BpfMetadata config{};\n  config.set_is_ingress(true);\n  config.set_is_l7lb(true);\n\n  EXPECT_THROW_WITH_MESSAGE(initialize(config), EnvoyException,\n                            \"cilium.bpf_metadata: is_l7lb may not be set with is_ingress\");\n}\n\nTEST_F(MetadataConfigTest, InvalidIngressIpv4Address) {\n  ::cilium::BpfMetadata config{};\n  config.set_ipv4_source_address(\"invalid\");\n\n  EXPECT_THROW_WITH_MESSAGE(\n      initialize(config), EnvoyException,\n      \"cilium.bpf_metadata: ipv4_source_address is not an IPv4 address: invalid\");\n}\n\nTEST_F(MetadataConfigTest, InvalidIngressIpv6Address) {\n  ::cilium::BpfMetadata config{};\n  config.set_ipv6_source_address(\"invalid\");\n\n  EXPECT_THROW_WITH_MESSAGE(\n      initialize(config), EnvoyException,\n      \"cilium.bpf_metadata: ipv6_source_address is not an IPv6 address: invalid\");\n}\n\nTEST_F(MetadataConfigTest, EastWestL7LbConfig) {\n  ::cilium::BpfMetadata config{};\n  config.set_use_original_source_address(true);\n  config.set_is_l7lb(true);\n  config.set_ipv4_source_address(\"127.0.0.1\");\n  config.set_ipv6_source_address(\"::1\");\n\n  EXPECT_NO_THROW(initialize(config));\n}\n\nTEST_F(MetadataConfigTest, NorthSouthL7LbConfig) {\n  ::cilium::BpfMetadata config{};\n  config.set_is_l7lb(true);\n  config.set_ipv4_source_address(\"127.0.0.1\");\n  config.set_ipv6_source_address(\"::1\");\n\n  EXPECT_NO_THROW(initialize(config));\n}\n\n// LEGACY N/S without policy enforcement\nTEST_F(MetadataConfigTest, NorthSouthL7LbMetadata) {\n  // Use external remote address\n  remote_address_ = std::make_shared<Network::Address::Ipv4Instance>(\"192.168.1.1\", 12345);\n\n  ::cilium::BpfMetadata config{};\n  config.set_is_l7lb(true);\n  config.set_ipv4_source_address(\"10.1.1.42\");\n  config.set_ipv6_source_address(\"face::42\");\n\n  EXPECT_NO_THROW(initialize(config));\n\n  auto socket_metadata = config_->extractSocketMetadata(socket_);\n  EXPECT_TRUE(socket_metadata);\n\n  auto policy_fs = socket_metadata->buildCiliumPolicyFilterState();\n  EXPECT_NE(nullptr, policy_fs);\n\n  EXPECT_EQ(8, policy_fs->source_identity_);\n  EXPECT_EQ(false, policy_fs->ingress_);\n  EXPECT_EQ(true, policy_fs->is_l7lb_);\n  EXPECT_EQ(80, policy_fs->port_);\n  EXPECT_EQ(\"\", policy_fs->pod_ip_);\n  EXPECT_EQ(\"\", policy_fs->ingress_policy_name_);\n  EXPECT_EQ(0, policy_fs->ingress_source_identity_);\n\n  auto source_addresses_socket_option = socket_metadata->buildSourceAddressSocketOption(-1);\n  EXPECT_NE(nullptr, source_addresses_socket_option);\n  EXPECT_EQ(-1, source_addresses_socket_option->linger_time_);\n\n  EXPECT_EQ(nullptr, source_addresses_socket_option->original_source_address_);\n  EXPECT_EQ(\"10.1.1.42:0\", source_addresses_socket_option->ipv4_source_address_->asString());\n  EXPECT_EQ(\"[face::42]:0\", source_addresses_socket_option->ipv6_source_address_->asString());\n\n  auto cilium_mark_socket_option = socket_metadata->buildCiliumMarkSocketOption();\n  EXPECT_NE(nullptr, cilium_mark_socket_option);\n\n  // Check that Ingress security ID is used in the socket mark\n  EXPECT_TRUE((cilium_mark_socket_option->mark_ & 0xffff) == 0x0B00 &&\n              (cilium_mark_socket_option->mark_ >> 16) == 8);\n}\n\nTEST_F(MetadataConfigTest, NorthSouthL7LbIngressEnforcedMetadata) {\n  // Use external remote address\n  remote_address_ = std::make_shared<Network::Address::Ipv4Instance>(\"192.168.1.1\", 12345);\n\n  ::cilium::BpfMetadata config{};\n  config.set_is_l7lb(true);\n  config.set_ipv4_source_address(\"10.1.1.42\");\n  config.set_ipv6_source_address(\"face::42\");\n  config.set_enforce_policy_on_l7lb(true);\n  EXPECT_NO_THROW(initialize(config));\n\n  auto socket_metadata = config_->extractSocketMetadata(socket_);\n  EXPECT_TRUE(socket_metadata);\n\n  auto policy_fs = socket_metadata->buildCiliumPolicyFilterState();\n  EXPECT_NE(nullptr, policy_fs);\n\n  EXPECT_EQ(8, policy_fs->source_identity_);\n  EXPECT_EQ(false, policy_fs->ingress_);\n  EXPECT_EQ(true, policy_fs->is_l7lb_);\n  EXPECT_EQ(80, policy_fs->port_);\n  EXPECT_EQ(\"\", policy_fs->pod_ip_);\n  EXPECT_EQ(\"10.1.1.42\", policy_fs->ingress_policy_name_);\n  EXPECT_EQ(12345678, policy_fs->ingress_source_identity_);\n\n  AccessLog::Entry log_entry;\n  log_entry.entry_.set_policy_name(\"pod\");\n\n  // Expect policy accepts security ID 12345678 on ingress on port 80\n  bool use_proxy_lib;\n  std::string l7_proto;\n  EXPECT_TRUE(\n      policy_fs->enforceNetworkPolicy(conn_, 12345678, 80, \"\", use_proxy_lib, l7_proto, log_entry));\n  EXPECT_FALSE(use_proxy_lib);\n  EXPECT_EQ(\"\", l7_proto);\n  EXPECT_NE(\"pod\", log_entry.entry_.policy_name());\n\n  auto source_addresses_socket_option = socket_metadata->buildSourceAddressSocketOption(-1);\n  EXPECT_NE(nullptr, source_addresses_socket_option);\n  EXPECT_EQ(-1, source_addresses_socket_option->linger_time_);\n\n  EXPECT_EQ(nullptr, source_addresses_socket_option->original_source_address_);\n  EXPECT_EQ(\"10.1.1.42:0\", source_addresses_socket_option->ipv4_source_address_->asString());\n  EXPECT_EQ(\"[face::42]:0\", source_addresses_socket_option->ipv6_source_address_->asString());\n\n  auto cilium_mark_socket_option = socket_metadata->buildCiliumMarkSocketOption();\n  EXPECT_NE(nullptr, cilium_mark_socket_option);\n\n  // Check that Ingress security ID is used in the socket mark\n  EXPECT_TRUE((cilium_mark_socket_option->mark_ & 0xffff) == 0x0B00 &&\n              (cilium_mark_socket_option->mark_ >> 16) == 8);\n}\n\nTEST_F(MetadataConfigTest, NorthSouthL7LbPodAndIngressEnforcedMetadata) {\n  // Use external remote address\n  remote_address_ = std::make_shared<Network::Address::Ipv4Instance>(\"192.168.1.1\", 12345);\n\n  ::cilium::BpfMetadata config{};\n  config.set_is_l7lb(true);\n  config.set_ipv4_source_address(\"10.1.1.42\");\n  config.set_ipv6_source_address(\"face::42\");\n  config.set_enforce_policy_on_l7lb(true);\n\n  std::string extra_host_map_config = R\"EOF(- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 9999\n  host_addresses: [ \"192.168.1.1\" ]\n)EOF\";\n\n  std::string extra_policy_config = R\"EOF(- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '192.168.1.1'\n  - 'face:192:168:1:1'\n  endpoint_id: 3000\n  egress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 222, 333 ]\n)EOF\";\n\n  EXPECT_NO_THROW(initialize(config, extra_host_map_config, extra_policy_config));\n\n  auto socket_metadata = config_->extractSocketMetadata(socket_);\n  EXPECT_TRUE(socket_metadata);\n\n  auto policy_fs = socket_metadata->buildCiliumPolicyFilterState();\n  EXPECT_NE(nullptr, policy_fs);\n\n  EXPECT_EQ(8, policy_fs->source_identity_);\n  EXPECT_EQ(false, policy_fs->ingress_);\n  EXPECT_EQ(true, policy_fs->is_l7lb_);\n  EXPECT_EQ(80, policy_fs->port_);\n  EXPECT_EQ(\"192.168.1.1\", policy_fs->pod_ip_);\n  EXPECT_EQ(\"10.1.1.42\", policy_fs->ingress_policy_name_);\n  EXPECT_EQ(9999, policy_fs->ingress_source_identity_);\n\n  AccessLog::Entry log_entry;\n  log_entry.entry_.set_policy_name(\"pod\");\n\n  // Expect pod policy denies security ID 12345678 on port 80 (only 222 allowed)\n  bool use_proxy_lib;\n  std::string l7_proto;\n  EXPECT_FALSE(\n      policy_fs->enforceNetworkPolicy(conn_, 12345678, 80, \"\", use_proxy_lib, l7_proto, log_entry));\n  EXPECT_FALSE(use_proxy_lib);\n  EXPECT_EQ(\"\", l7_proto);\n  EXPECT_EQ(\"pod\", log_entry.entry_.policy_name());\n\n  // Expect pod policy allows egress to security ID 222 on port 80\n  // Ingress policy allows ingress from 9999 (pod's security ID)\n  // Ingress policy allows 222 egress\n  EXPECT_TRUE(\n      policy_fs->enforceNetworkPolicy(conn_, 222, 80, \"\", use_proxy_lib, l7_proto, log_entry));\n  EXPECT_FALSE(use_proxy_lib);\n  EXPECT_EQ(\"\", l7_proto);\n  EXPECT_NE(\"pod\", log_entry.entry_.policy_name());\n\n  // Expect pod policy allows egress to security ID 333 on port 80\n  // Ingress policy allows ingress from 9999\n  // Ingress policy denies 333 egress\n  EXPECT_FALSE(\n      policy_fs->enforceNetworkPolicy(conn_, 333, 80, \"\", use_proxy_lib, l7_proto, log_entry));\n  EXPECT_FALSE(use_proxy_lib);\n  EXPECT_EQ(\"\", l7_proto);\n  EXPECT_NE(\"pod\", log_entry.entry_.policy_name());\n\n  auto source_addresses_socket_option = socket_metadata->buildSourceAddressSocketOption(-1);\n  EXPECT_NE(nullptr, source_addresses_socket_option);\n  EXPECT_EQ(-1, source_addresses_socket_option->linger_time_);\n\n  EXPECT_EQ(nullptr, source_addresses_socket_option->original_source_address_);\n  EXPECT_EQ(\"10.1.1.42:0\", source_addresses_socket_option->ipv4_source_address_->asString());\n  EXPECT_EQ(\"[face::42]:0\", source_addresses_socket_option->ipv6_source_address_->asString());\n\n  auto cilium_mark_socket_option = socket_metadata->buildCiliumMarkSocketOption();\n  EXPECT_NE(nullptr, cilium_mark_socket_option);\n\n  // Check that Ingress security ID is used in the socket mark\n  EXPECT_TRUE((cilium_mark_socket_option->mark_ & 0xffff) == 0x0B00 &&\n              (cilium_mark_socket_option->mark_ >> 16) == 8);\n}\n\nTEST_F(MetadataConfigTest, NorthSouthL7LbIngressEnforcedCIDRMetadata) {\n  // Use external remote address\n  remote_address_ = std::make_shared<Network::Address::Ipv4Instance>(\"192.168.2.1\", 12345);\n\n  ::cilium::BpfMetadata config{};\n  config.set_is_l7lb(true);\n  config.set_ipv4_source_address(\"10.1.1.42\");\n  config.set_ipv6_source_address(\"face::42\");\n  config.set_enforce_policy_on_l7lb(true);\n  EXPECT_NO_THROW(initialize(config));\n\n  auto socket_metadata = config_->extractSocketMetadata(socket_);\n  EXPECT_TRUE(socket_metadata);\n\n  auto policy_fs = socket_metadata->buildCiliumPolicyFilterState();\n  EXPECT_NE(nullptr, policy_fs);\n\n  EXPECT_EQ(8, policy_fs->source_identity_);\n  EXPECT_EQ(false, policy_fs->ingress_);\n  EXPECT_EQ(true, policy_fs->is_l7lb_);\n  EXPECT_EQ(80, policy_fs->port_);\n  EXPECT_EQ(\"\", policy_fs->pod_ip_);\n  EXPECT_EQ(\"10.1.1.42\", policy_fs->ingress_policy_name_);\n  EXPECT_EQ(2, policy_fs->ingress_source_identity_);\n\n  AccessLog::Entry log_entry;\n  log_entry.entry_.set_policy_name(\"pod\");\n\n  // Expect policy does not accept security ID 2 on port 80\n  bool use_proxy_lib;\n  std::string l7_proto;\n  EXPECT_FALSE(\n      policy_fs->enforceNetworkPolicy(conn_, 2, 80, \"\", use_proxy_lib, l7_proto, log_entry));\n  EXPECT_FALSE(use_proxy_lib);\n  EXPECT_EQ(\"\", l7_proto);\n  EXPECT_NE(\"pod\", log_entry.entry_.policy_name());\n\n  auto source_addresses_socket_option = socket_metadata->buildSourceAddressSocketOption(-1);\n  EXPECT_NE(nullptr, source_addresses_socket_option);\n  EXPECT_EQ(-1, source_addresses_socket_option->linger_time_);\n\n  EXPECT_EQ(nullptr, source_addresses_socket_option->original_source_address_);\n  EXPECT_EQ(\"10.1.1.42:0\", source_addresses_socket_option->ipv4_source_address_->asString());\n  EXPECT_EQ(\"[face::42]:0\", source_addresses_socket_option->ipv6_source_address_->asString());\n\n  auto cilium_mark_socket_option = socket_metadata->buildCiliumMarkSocketOption();\n  EXPECT_NE(nullptr, cilium_mark_socket_option);\n\n  // Check that Ingress security ID is used in the socket mark\n  EXPECT_TRUE((cilium_mark_socket_option->mark_ & 0xffff) == 0x0B00 &&\n              (cilium_mark_socket_option->mark_ >> 16) == 8);\n}\n\n// Use external remote address, but config says to use original source address\nTEST_F(MetadataConfigTest, ExternalUseOriginalSourceL7LbMetadata) {\n  remote_address_ = std::make_shared<Network::Address::Ipv4Instance>(\"192.168.1.1\", 12345);\n\n  ::cilium::BpfMetadata config{};\n  config.set_is_l7lb(true);\n  config.set_use_original_source_address(true);\n  config.set_ipv4_source_address(\"10.1.1.42\");\n  config.set_ipv6_source_address(\"face::42\");\n\n  EXPECT_NO_THROW(initialize(config));\n\n  auto socket_metadata = config_->extractSocketMetadata(socket_);\n  EXPECT_FALSE(socket_metadata);\n}\n\nTEST_F(MetadataConfigTest, EastWestL7LbMetadata) {\n  ::cilium::BpfMetadata config{};\n  config.set_use_original_source_address(true);\n  config.set_is_l7lb(true);\n  config.set_ipv4_source_address(\"10.1.1.42\");\n  config.set_ipv6_source_address(\"face::42\");\n\n  EXPECT_NO_THROW(initialize(config));\n\n  auto socket_metadata = config_->extractSocketMetadata(socket_);\n  EXPECT_TRUE(socket_metadata);\n\n  auto policy_fs = socket_metadata->buildCiliumPolicyFilterState();\n  EXPECT_NE(nullptr, policy_fs);\n\n  EXPECT_EQ(111, policy_fs->source_identity_);\n  EXPECT_EQ(false, policy_fs->ingress_);\n  EXPECT_EQ(true, policy_fs->is_l7lb_);\n  EXPECT_EQ(80, policy_fs->port_);\n  EXPECT_EQ(\"10.1.1.1\", policy_fs->pod_ip_);\n  EXPECT_EQ(\"\", policy_fs->ingress_policy_name_);\n\n  // test with 1 second SO_LINGER option\n  auto source_addresses_socket_option = socket_metadata->buildSourceAddressSocketOption(1);\n  EXPECT_NE(nullptr, source_addresses_socket_option);\n  EXPECT_EQ(1, source_addresses_socket_option->linger_time_);\n\n  EXPECT_EQ(\"10.1.1.1:41234\", source_addresses_socket_option->original_source_address_->asString());\n  EXPECT_EQ(\"10.1.1.1:41234\", source_addresses_socket_option->ipv4_source_address_->asString());\n  EXPECT_EQ(\"[face::1:1:1]:41234\",\n            source_addresses_socket_option->ipv6_source_address_->asString());\n\n  auto cilium_mark_socket_option = socket_metadata->buildCiliumMarkSocketOption();\n  EXPECT_NE(nullptr, cilium_mark_socket_option);\n\n  // Check that Endpoint's ID is used in the socket mark\n  EXPECT_TRUE((cilium_mark_socket_option->mark_ & 0xffff) == 0x0900 &&\n              (cilium_mark_socket_option->mark_ >> 16) == 2048);\n}\n\n// When original source is not configured to be used, east/west traffic takes the north/south path\n// but retains local pod's IP as the \"policy name\" it found.\nTEST_F(MetadataConfigTest, EastWestL7LbMetadataNoOriginalSource) {\n  ::cilium::BpfMetadata config{};\n  config.set_is_l7lb(true);\n  config.set_ipv4_source_address(\"10.1.1.42\");\n  config.set_ipv6_source_address(\"face::42\");\n\n  EXPECT_NO_THROW(initialize(config));\n\n  auto socket_metadata = config_->extractSocketMetadata(socket_);\n  EXPECT_TRUE(socket_metadata);\n\n  auto policy_fs = socket_metadata->buildCiliumPolicyFilterState();\n  EXPECT_NE(nullptr, policy_fs);\n\n  EXPECT_EQ(8, policy_fs->source_identity_);\n  EXPECT_EQ(false, policy_fs->ingress_);\n  EXPECT_EQ(true, policy_fs->is_l7lb_);\n  EXPECT_EQ(80, policy_fs->port_);\n  EXPECT_EQ(\"10.1.1.1\", policy_fs->pod_ip_);\n  EXPECT_EQ(\"\", policy_fs->ingress_policy_name_);\n  EXPECT_EQ(0, policy_fs->ingress_source_identity_);\n\n  auto source_addresses_socket_option = socket_metadata->buildSourceAddressSocketOption(-1);\n  EXPECT_NE(nullptr, source_addresses_socket_option);\n  EXPECT_EQ(-1, source_addresses_socket_option->linger_time_);\n\n  EXPECT_EQ(nullptr, source_addresses_socket_option->original_source_address_);\n  EXPECT_EQ(\"10.1.1.42:0\", source_addresses_socket_option->ipv4_source_address_->asString());\n  EXPECT_EQ(\"[face::42]:0\", source_addresses_socket_option->ipv6_source_address_->asString());\n\n  auto cilium_mark_socket_option = socket_metadata->buildCiliumMarkSocketOption();\n  EXPECT_NE(nullptr, cilium_mark_socket_option);\n\n  // Check that Ingress ID is used in the socket mark\n  EXPECT_TRUE((cilium_mark_socket_option->mark_ & 0xffff) == 0x0B00 &&\n              (cilium_mark_socket_option->mark_ >> 16) == 8);\n}\n\nTEST_F(MetadataConfigTest, ProxyLibNotConfigured) {\n  ::cilium::BpfMetadata config{};\n\n  EXPECT_NO_THROW(initialize(config));\n\n  auto socket_metadata = config_->extractSocketMetadata(socket_);\n  EXPECT_TRUE(socket_metadata);\n\n  EXPECT_CALL(socket_, setRequestedApplicationProtocols(_)).Times(0);\n\n  socket_metadata->configureProxyLibApplicationProtocol(socket_);\n}\n\nTEST_F(MetadataConfigTest, ProxyLibConfigured) {\n  ::cilium::BpfMetadata config{};\n\n  EXPECT_NO_THROW(initialize(config));\n\n  auto socket_metadata = config_->extractSocketMetadata(socket_);\n  EXPECT_TRUE(socket_metadata);\n\n  // set proxylib proto manually\n  socket_metadata->proxylib_l7_proto_ = \"r2d2\";\n\n  std::vector<std::string> protocols = {\"h2c\"};\n  EXPECT_CALL(socket_, requestedApplicationProtocols).WillOnce(testing::ReturnRef(protocols));\n\n  // proxylib protocol should be appended to the list of existing requested application protocols\n  const auto protos = std::vector<absl::string_view>{\"h2c\", \"r2d2\"};\n  EXPECT_CALL(socket_, setRequestedApplicationProtocols(protos));\n\n  socket_metadata->configureProxyLibApplicationProtocol(socket_);\n}\n\nTEST_F(MetadataConfigTest, RestoreLocalAddress) {\n  ::cilium::BpfMetadata config{};\n\n  EXPECT_NO_THROW(initialize(config));\n\n  auto socket_metadata = config_->extractSocketMetadata(socket_);\n  EXPECT_TRUE(socket_metadata);\n\n  EXPECT_NE(socket_.connectionInfoProvider().localAddress(), original_dst_address);\n  EXPECT_FALSE(socket_.connectionInfoProvider().localAddressRestored());\n\n  socket_metadata->configureOriginalDstAddress(socket_);\n\n  EXPECT_EQ(socket_.connectionInfoProvider().localAddress(), original_dst_address);\n  EXPECT_TRUE(socket_.connectionInfoProvider().localAddressRestored());\n}\n\n} // namespace\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "tests/bpf_metadata_integration_test.cc",
    "content": "#include <fmt/format.h>\n\n#include <string>\n#include <vector>\n\n#include \"envoy/config/bootstrap/v3/bootstrap.pb.h\"\n#include \"envoy/config/core/v3/config_source.pb.h\"\n#include \"envoy/config/core/v3/grpc_service.pb.h\"\n#include \"envoy/config/listener/v3/listener.pb.h\"\n#include \"envoy/grpc/status.h\"\n#include \"envoy/http/codec.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/service/discovery/v3/discovery.pb.h\"\n\n#include \"source/common/common/assert.h\"\n#include \"source/common/protobuf/utility.h\"\n\n#include \"test/common/grpc/grpc_client_integration.h\"\n#include \"test/config/utility.h\"\n#include \"test/integration/base_integration_test.h\"\n#include \"test/integration/fake_upstream.h\"\n#include \"test/test_common/resources.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"cilium/api/bpf_metadata.pb.h\"\n#include \"cilium/api/npds.pb.h\"\n#include \"cilium/api/nphds.pb.h\"\n#include \"gtest/gtest.h\"\n\nnamespace Envoy {\nnamespace {\n\nconst std::string NetworkPolicyTypeUrl = \"type.googleapis.com/cilium.NetworkPolicy\";\n\nconst std::string NetworkPolicyHostsTypeUrl = \"type.googleapis.com/cilium.NetworkPolicyHosts\";\n\nconst std::string policy1 = R\"EOF(\n  endpoint_ips:\n  - '10.1.1.1'\n  - 'face::1:1:1'\n  endpoint_id: 2048\n  egress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 222 ]\n)EOF\";\n\nconst std::string policy2 = R\"EOF(\n  endpoint_ips:\n  - '10.2.2.2'\n  - 'face::2:2:2'\n  endpoint_id: 4096\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 111 ]\n)EOF\";\n\nconst std::string policy_host1 = R\"EOF(\n  policy: 111\n  host_addresses: [ \"10.1.1.1\", \"f00d::1:1:1\" ]\n)EOF\";\n\nconst std::string policy_host2 = R\"EOF(\n  policy: 222\n  host_addresses: [ \"10.2.2.2\", \"f00d::2:2:2\" ]\n)EOF\";\n\nclass BpfMetadataIntegrationTest : public BaseIntegrationTest,\n                                   public Grpc::GrpcClientIntegrationParamTest {\npublic:\n  BpfMetadataIntegrationTest()\n      : BaseIntegrationTest(ipVersion(), ConfigHelper::baseConfig() + R\"EOF(\n    filter_chains:\n    - filters:\n      - name: envoy.filters.network.tcp_proxy\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy\n          stat_prefix: tcp_stats\n          cluster: cluster_0\n)EOF\") {\n    skip_tag_extraction_rule_check_ = true;\n  }\n\n  ~BpfMetadataIntegrationTest() override { resetConnections(); }\n\n  void setGrpcServiceHelper(envoy::config::core::v3::GrpcService& grpc_service,\n                            const std::string& cluster_name,\n                            Network::Address::InstanceConstSharedPtr address) {\n    setGrpcService(grpc_service, cluster_name, address);\n  }\n\n  void setUpGrpcLds() {\n    config_helper_.addConfigModifier([this](envoy::config::bootstrap::v3::Bootstrap& bootstrap) {\n      listener_config_.Swap(bootstrap.mutable_static_resources()->mutable_listeners(0));\n      listener_config_.set_name(listener_name_);\n      bootstrap.mutable_static_resources()->mutable_listeners()->Clear();\n\n      auto* lds_config_source = bootstrap.mutable_dynamic_resources()->mutable_lds_config();\n      lds_config_source->set_resource_api_version(envoy::config::core::v3::ApiVersion::V3);\n      lds_config_source->mutable_ads();\n    });\n  }\n\n  // Inject the cilium.bpf_metadata listener filter with npds_config into the listener.\n  void addBpfMetadataListenerFilter(envoy::config::listener::v3::Listener& listener, bool) {\n    auto* listener_filter = listener.add_listener_filters();\n    listener_filter->set_name(\"cilium.bpf_metadata\");\n\n    ::cilium::BpfMetadata bpf_config;\n    bpf_config.set_is_ingress(false);\n    bpf_config.set_use_nphds(true);\n\n    auto* npds_config = bpf_config.mutable_npds_config();\n    npds_config->set_resource_api_version(envoy::config::core::v3::ApiVersion::V3);\n    npds_config->mutable_ads();\n\n    listener_filter->mutable_typed_config()->PackFrom(bpf_config);\n  }\n\n  void initialize() override {\n    use_lds_ = false;\n    setUpstreamCount(1);\n    defer_listener_finalization_ = true;\n\n    config_helper_.addConfigModifier([](envoy::config::bootstrap::v3::Bootstrap& bootstrap) {\n      // Add the ADS gRPC cluster.\n      auto* ads_cluster = bootstrap.mutable_static_resources()->add_clusters();\n      ads_cluster->MergeFrom(bootstrap.static_resources().clusters()[0]);\n      ads_cluster->set_name(\"ads_cluster\");\n      ConfigHelper::setHttp2(*ads_cluster);\n\n      auto* cds_config = bootstrap.mutable_dynamic_resources()->mutable_cds_config();\n      cds_config->set_resource_api_version(envoy::config::core::v3::ApiVersion::V3);\n      cds_config->mutable_ads();\n\n      // Configure ADS in bootstrap.\n      auto* ads_config = bootstrap.mutable_dynamic_resources()->mutable_ads_config();\n      ads_config->set_api_type(envoy::config::core::v3::ApiConfigSource::GRPC);\n      ads_config->set_transport_api_version(envoy::config::core::v3::V3);\n      envoy::config::core::v3::GrpcService* grpc_service = ads_config->add_grpc_services();\n      grpc_service->mutable_envoy_grpc()->set_cluster_name(\"ads_cluster\");\n      ads_config->set_set_node_on_first_message_only(true);\n    });\n\n    // Must be last modifier — it removes static listeners.\n    setUpGrpcLds();\n\n    BaseIntegrationTest::initialize();\n  }\n\n  void createUpstreams() override {\n    BaseIntegrationTest::createUpstreams();\n    // ADS upstream (fake_upstreams_[1]).\n    addFakeUpstream(Envoy::Http::CodecType::HTTP2);\n  }\n\n  FakeUpstream& getAdsFakeUpstream() const { return *fake_upstreams_[1]; }\n\n  void createAdsStream() {\n    AssertionResult result =\n        getAdsFakeUpstream().waitForHttpConnection(*dispatcher_, ads_connection_);\n    RELEASE_ASSERT(result, result.message());\n    auto result2 = ads_connection_->waitForNewStream(*dispatcher_, ads_stream_);\n    RELEASE_ASSERT(result2, result2.message());\n    ads_stream_->startGrpcStream();\n  }\n\n  void sendCdsResponse(const std::string& version) {\n    envoy::service::discovery::v3::DiscoveryResponse response;\n    response.set_version_info(version);\n    response.set_type_url(Envoy::Config::TestTypeUrl::get().Cluster);\n    ASSERT_NE(nullptr, ads_stream_);\n    ads_stream_->sendGrpcMessage(response);\n  }\n\n  void sendLdsResponse(const std::vector<envoy::config::listener::v3::Listener>& listener_configs,\n                       const std::string& version) {\n    envoy::service::discovery::v3::DiscoveryResponse response;\n    response.set_version_info(version);\n    response.set_type_url(Envoy::Config::TestTypeUrl::get().Listener);\n    for (const auto& listener_config : listener_configs) {\n      response.add_resources()->PackFrom(listener_config);\n    }\n    ASSERT_NE(nullptr, ads_stream_);\n    ads_stream_->sendGrpcMessage(response);\n  }\n\n  void sendLdsResponse(const std::vector<std::string>& listener_configs,\n                       const std::string& version) {\n    std::vector<envoy::config::listener::v3::Listener> proto_configs;\n    proto_configs.reserve(listener_configs.size());\n    for (const auto& listener_blob : listener_configs) {\n      proto_configs.emplace_back(\n          TestUtility::parseYaml<envoy::config::listener::v3::Listener>(listener_blob));\n    }\n    sendLdsResponse(proto_configs, version);\n  }\n\n  void sendNpdsResponse(const std::string& version) {\n    envoy::service::discovery::v3::DiscoveryResponse response;\n    response.set_version_info(version);\n    response.set_type_url(NetworkPolicyTypeUrl);\n    std::vector<cilium::NetworkPolicy> proto_configs;\n    proto_configs.emplace_back(TestUtility::parseYaml<cilium::NetworkPolicy>(policy1));\n    proto_configs.emplace_back(TestUtility::parseYaml<cilium::NetworkPolicy>(policy2));\n    for (const auto& policy_config : proto_configs) {\n      response.add_resources()->PackFrom(policy_config);\n    }\n    ASSERT_NE(nullptr, ads_stream_);\n    ads_stream_->sendGrpcMessage(response);\n  }\n\n  void sendNphdsResponse(const std::string& version) {\n    envoy::service::discovery::v3::DiscoveryResponse response;\n    response.set_version_info(version);\n    response.set_type_url(NetworkPolicyHostsTypeUrl);\n    std::vector<cilium::NetworkPolicyHosts> proto_configs;\n    proto_configs.emplace_back(TestUtility::parseYaml<cilium::NetworkPolicyHosts>(policy_host1));\n    proto_configs.emplace_back(TestUtility::parseYaml<cilium::NetworkPolicyHosts>(policy_host2));\n    for (const auto& policy_host_config : proto_configs) {\n      response.add_resources()->PackFrom(policy_host_config);\n    }\n    ASSERT_NE(nullptr, ads_stream_);\n    ads_stream_->sendGrpcMessage(response);\n  }\n\n  void resetConnections() {\n    if (ads_connection_ != nullptr) {\n      AssertionResult result = ads_connection_->close();\n      RELEASE_ASSERT(result, result.message());\n      result = ads_connection_->waitForDisconnect();\n      RELEASE_ASSERT(result, result.message());\n      ads_connection_.reset();\n    }\n  }\n\n  envoy::config::listener::v3::Listener listener_config_;\n  std::string listener_name_{\"testing-listener-0\"};\n  FakeHttpConnectionPtr ads_connection_;\n  FakeStreamPtr ads_stream_;\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersionsAndGrpcTypes, BpfMetadataIntegrationTest,\n                         GRPC_CLIENT_INTEGRATION_PARAMS);\n\nTEST_P(BpfMetadataIntegrationTest, BpfMetadataWithNpdsAndNpdhsViaAds) {\n  on_server_init_function_ = [&]() {\n    createAdsStream();\n    addBpfMetadataListenerFilter(listener_config_, /*use_ads=*/true);\n    EXPECT_TRUE(compareDiscoveryRequest(\n        Config::TestTypeUrl::get().Cluster, \"\", {}, {}, {},\n        /*expect_node=*/true, Envoy::Grpc::Status::WellKnownGrpcStatus::Ok, \"\", ads_stream_.get()));\n    sendCdsResponse(\"1\");\n    EXPECT_TRUE(compareDiscoveryRequest(\n        Config::TestTypeUrl::get().Listener, \"\", {}, {}, {}, /*expect_node=*/false,\n        Grpc::Status::WellKnownGrpcStatus::Ok, \"\", ads_stream_.get()));\n    sendLdsResponse({MessageUtil::getYamlStringFromMessage(listener_config_)}, \"1\");\n  };\n  initialize();\n\n  test_server_->waitForCounterGe(\"listener_manager.lds.update_success\", 1);\n  EXPECT_EQ(test_server_->server().listenerManager().listeners().size(), 1);\n  sendNpdsResponse(\"1\");\n  test_server_->waitForCounterGe(\"cilium.policy.update_success\", 1);\n  sendNphdsResponse(\"1\");\n  test_server_->waitForCounterGe(\"cilium.hostmap.update_success\", 1);\n}\n\n} // namespace\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_http_integration.cc",
    "content": "#include \"tests/cilium_http_integration.h\"\n\n#include <fmt/base.h>\n#include <fmt/format.h>\n#include <spdlog/common.h>\n\n#include <memory>\n#include <string>\n\n#include \"envoy/http/codec.h\" // IWYU pragma: keep\n#include \"envoy/network/address.h\"\n\n#include \"source/common/common/base_logger.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/http/codec_client.h\"\n#include \"source/common/network/address_impl.h\"\n\n#include \"test/integration/http_integration.h\"\n#include \"test/test_common/environment.h\"\n#include \"test/test_common/network_utility.h\"\n\n#include \"tests/bpf_metadata.h\"\n\nnamespace Envoy {\n\nCiliumHttpIntegrationTest::CiliumHttpIntegrationTest(const std::string& config)\n    : HttpIntegrationTest(Http::CodecClient::Type::HTTP1, GetParam(), config),\n      accessLogServer_(TestEnvironment::unixDomainSocketPath(\"access_log.sock\")) {\n#if 1\n  for (Logger::Logger& logger : Logger::Registry::loggers()) {\n    logger.setLevel(spdlog::level::trace);\n  }\n#endif\n}\n\nCiliumHttpIntegrationTest::~CiliumHttpIntegrationTest() {\n  // Shut down live downstream/upstream traffic before the access log UDS server member is\n  // destroyed. Otherwise the UDS sink can disappear while HttpIntegrationTest base teardown is\n  // still closing HTTP connections and the Envoy test server.\n  cleanupUpstreamAndDownstream();\n  codec_client_.reset();\n  test_server_.reset();\n  fake_upstreams_.clear();\n}\n\nvoid CiliumHttpIntegrationTest::createEnvoy() {\n  // fake upstreams have been created by now, use the port from the 1st upstream\n  // in policy.\n  auto port = fake_upstreams_[0]->localAddress()->ip()->port();\n  policy_config = fmt::format(fmt::runtime(testPolicyFmt()), port);\n  sds_configs = testSecrets();\n  // Pass the fake upstream address to the cilium bpf filter that will set it as\n  // an \"original destination address\".\n  if (GetParam() == Network::Address::IpVersion::v4) {\n    original_dst_address = std::make_shared<Network::Address::Ipv4Instance>(\n        Network::Test::getLoopbackAddressString(GetParam()), port);\n  } else {\n    original_dst_address = std::make_shared<Network::Address::Ipv6Instance>(\n        Network::Test::getLoopbackAddressString(GetParam()), port);\n  }\n  HttpIntegrationTest::createEnvoy();\n}\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_http_integration.h",
    "content": "#pragma once\n\n#include <gtest/gtest.h>\n\n#include <chrono>\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/common/pure.h\"\n#include \"envoy/http/header_map.h\"\n#include \"envoy/network/address.h\"\n\n#include \"source/common/protobuf/protobuf.h\" // IWYU pragma: keep\n\n#include \"test/integration/http_integration.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"absl/types/optional.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"tests/accesslog_server.h\"\n\nnamespace Envoy {\n\nclass CiliumHttpIntegrationTest : public HttpIntegrationTest,\n                                  public testing::TestWithParam<Network::Address::IpVersion> {\npublic:\n  CiliumHttpIntegrationTest(const std::string& config);\n  ~CiliumHttpIntegrationTest() override;\n\n  void createEnvoy() override;\n\n  void initialize() override {\n    accessLogServer_.clear();\n    HttpIntegrationTest::initialize();\n  }\n\n  virtual std::string testPolicyFmt() PURE;\n\n  virtual std::vector<std::pair<std::string, std::string>> testSecrets() {\n    return std::vector<std::pair<std::string, std::string>>{};\n  }\n\n  absl::optional<::cilium::LogEntry>\n  waitForAccessLogMessage(::cilium::EntryType entry_type,\n                          std::chrono::milliseconds timeout = TestUtility::DefaultTimeout) {\n    return accessLogServer_.waitForMessage(entry_type, timeout);\n  }\n\n  template <typename P> bool expectAccessLogRequestTo(P&& pred) {\n    return accessLogServer_.expectRequestTo(pred);\n  }\n\n  template <typename P> bool expectAccessLogResponseTo(P&& pred) {\n    return accessLogServer_.expectResponseTo(pred);\n  }\n\n  template <typename P> bool expectAccessLogDeniedTo(P&& pred) {\n    return accessLogServer_.expectDeniedTo(pred);\n  }\n\n  static absl::optional<std::string>\n  getHeader(const Protobuf::RepeatedPtrField<::cilium::KeyValue>& headers,\n            const std::string& name) {\n    for (const auto& entry : headers) {\n      if (Http::LowerCaseString(entry.key()) == Http::LowerCaseString(name)) {\n        return entry.value();\n      }\n    }\n    return absl::nullopt;\n  }\n\n  static bool hasHeader(const Protobuf::RepeatedPtrField<::cilium::KeyValue>& headers,\n                        const std::string& name, const std::string& value = \"\") {\n    for (const auto& entry : headers) {\n      if (Http::LowerCaseString(entry.key()) == Http::LowerCaseString(name) &&\n          (value.empty() || entry.value() == value)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  AccessLogServer accessLogServer_;\n};\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_http_integration_test.cc",
    "content": "// <gtest.h> TEST\n#include <fmt/base.h>\n#include <fmt/format.h>\n#include <gtest/gtest-param-test.h>\n#include <gtest/gtest.h>\n\n#include <cstdint>\n#include <memory>\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/common/exception.h\"\n#include \"envoy/network/address.h\"\n#include \"envoy/service/discovery/v3/discovery.pb.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/config/decoded_resource_impl.h\"\n#include \"source/common/network/address_impl.h\"\n#include \"source/common/network/utility.h\"\n#include \"source/common/protobuf/message_validator_impl.h\"\n#include \"source/common/protobuf/utility.h\"\n#include \"source/common/thread_local/thread_local_impl.h\"\n\n#include \"test/integration/http_integration.h\"\n#include \"test/test_common/environment.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"absl/time/clock.h\"\n#include \"absl/time/time.h\"\n#include \"absl/types/optional.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"cilium/host_map.h\"\n#include \"cilium/secret_watcher.h\"\n#include \"tests/bpf_metadata.h\" // host_map_config\n#include \"tests/cilium_http_integration.h\"\n\nnamespace Envoy {\n\n// params: destination port number\nconst std::string BASIC_POLICY_fmt = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  endpoint_id: 3\n  ingress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n        - headers:\n          - name: ':path'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*public$'\n        - headers:\n          - name: ':authority'\n            exact_match: 'allowedHOST'\n        - headers:\n          - name: ':authority'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*REGEX.*'\n        - headers:\n          - name: ':method'\n            exact_match: 'PUT'\n          - name: ':path'\n            exact_match: '/public/opinions'\n    - remote_policies: [ 2 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/only-2-allowed'\n  egress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n        - headers:\n          - name: ':path'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*public$'\n        - headers:\n          - name: ':authority'\n            exact_match: 'allowedHOST'\n        - headers:\n          - name: ':authority'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*REGEX.*'\n        - headers:\n          - name: ':method'\n            exact_match: 'PUT'\n          - name: ':path'\n            exact_match: '/public/opinions'\n    - remote_policies: [ 2 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/only-2-allowed'\n)EOF\";\n\nconst std::string SECRET_TOKEN_CONFIG = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret\n  name: bearer-token\n  generic_secret:\n    secret:\n      inline_string: \"d4ef0f5011f163ac\"\n)EOF\";\n\nconst std::string HEADER_ACTION_POLICY_fmt = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  endpoint_id: 3\n  ingress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n          header_matches:\n          - name: 'header42'\n            match_action: FAIL_ON_MATCH\n            mismatch_action: CONTINUE_ON_MISMATCH\n          - name: 'bearer-token'\n            value_sds_secret: 'bearer-token'\n            mismatch_action: REPLACE_ON_MISMATCH\n        - headers:\n          - name: ':path'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*public$'\n          header_matches:\n          - name: 'user-agent'\n            value: 'CuRL'\n            mismatch_action: DELETE_ON_MISMATCH\n        - headers:\n          - name: ':authority'\n            exact_match: 'allowedHOST'\n          header_matches:\n          - name: 'header2'\n            value: 'value2'\n            mismatch_action: ADD_ON_MISMATCH\n          - name: 'header42'\n            match_action: DELETE_ON_MATCH\n            mismatch_action: CONTINUE_ON_MISMATCH\n        - headers:\n          - name: ':authority'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*REGEX.*'\n          header_matches:\n          - name: 'header42'\n            value: '42'\n            mismatch_action: DELETE_ON_MISMATCH\n        - headers:\n          - name: ':method'\n            exact_match: 'PUT'\n          - name: ':path'\n            exact_match: '/public/opinions'\n    - remote_policies: [ 2 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/only-2-allowed'\n  egress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n        - headers:\n          - name: ':path'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*public$'\n        - headers:\n          - name: ':authority'\n            exact_match: 'allowedHOST'\n        - headers:\n          - name: ':authority'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*REGEX.*'\n        - headers:\n          - name: ':method'\n            exact_match: 'PUT'\n          - name: ':path'\n            exact_match: '/public/opinions'\n    - remote_policies: [ 2 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/only-2-allowed'\n)EOF\";\n\n// params: is_ingress (\"true\", \"false\")\nconst std::string cilium_proxy_config_fmt = R\"EOF(\nadmin:\n  address:\n    socket_address:\n      address: 127.0.0.1\n      port_value: 0\nstatic_resources:\n  clusters:\n  - name: cluster1\n    type: ORIGINAL_DST\n    lb_policy: CLUSTER_PROVIDED\n    connect_timeout:\n      seconds: 1\n  - name: xds-grpc-cilium\n    connect_timeout:\n      seconds: 5\n    type: STATIC\n    lb_policy: ROUND_ROBIN\n    http2_protocol_options:\n    load_assignment:\n      cluster_name: xds-grpc-cilium\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              pipe:\n                path: /var/run/cilium/xds.sock\n  listeners:\n    name: http\n    address:\n      socket_address:\n        address: 127.0.0.1\n        port_value: 0\n    listener_filters:\n      name: test_bpf_metadata\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.TestBpfMetadata\n        is_ingress: {0}\n    filter_chains:\n      filters:\n      - name: cilium.network\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.NetworkFilter\n          access_log_path: \"{{ test_udsdir }}/access_log.sock\"\n      - name: envoy.http_connection_manager\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager\n          stat_prefix: config_test\n          codec_type: auto\n          use_remote_address: true\n          skip_xff_append: true\n          http_filters:\n          - name: test_l7policy\n            typed_config:\n              \"@type\": type.googleapis.com/cilium.L7Policy\n              access_log_path: \"{{ test_udsdir }}/access_log.sock\"\n          - name: envoy.filters.http.router\n          route_config:\n            name: policy_enabled\n            virtual_hosts:\n              name: integration\n              domains: \"*\"\n              routes:\n              - route:\n                  cluster: cluster1\n                  max_grpc_timeout:\n                    seconds: 0\n                    nanos: 0\n                match:\n                  prefix: \"/\"\n)EOF\";\n\nclass CiliumIntegrationTest : public CiliumHttpIntegrationTest {\npublic:\n  CiliumIntegrationTest()\n      : CiliumHttpIntegrationTest(fmt::format(\n            fmt::runtime(TestEnvironment::substitute(cilium_proxy_config_fmt, GetParam())),\n            \"true\")) {}\n  CiliumIntegrationTest(const std::string& config) : CiliumHttpIntegrationTest(config) {}\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(HEADER_ACTION_POLICY_fmt, GetParam());\n  }\n\n  std::vector<std::pair<std::string, std::string>> testSecrets() override {\n    return std::vector<std::pair<std::string, std::string>>{\n        {\"bearer-token\", SECRET_TOKEN_CONFIG},\n    };\n  }\n\n  void initialize() override {\n    accessLogServer_.clear();\n    if (!initialized_) {\n      HttpIntegrationTest::initialize();\n      initialized_ = true;\n    }\n  }\n\n  void denied(Http::TestRequestHeaderMapImpl&& headers) {\n    initialize();\n    codec_client_ = makeHttpConnection(lookupPort(\"http\"));\n    auto response = codec_client_->makeHeaderOnlyRequest(headers);\n    ASSERT_TRUE(response->waitForEndStream());\n\n    // Validate that request access log message with x-request-id is logged\n    absl::optional<std::string> maybe_x_request_id;\n    EXPECT_TRUE(expectAccessLogDeniedTo([&maybe_x_request_id](const ::cilium::LogEntry& entry) {\n      maybe_x_request_id = getHeader(entry.http().headers(), \"x-request-id\");\n      return entry.http().status() == 0;\n    }));\n    ASSERT_TRUE(maybe_x_request_id.has_value());\n\n    // Validate that response x-request-id is the same as in request\n    absl::optional<std::string> maybe_x_request_id_resp;\n    EXPECT_TRUE(\n        expectAccessLogResponseTo([&maybe_x_request_id_resp](const ::cilium::LogEntry& entry) {\n          maybe_x_request_id_resp = getHeader(entry.http().headers(), \"x-request-id\");\n          return entry.http().status() == 403;\n        }));\n    ASSERT_TRUE(maybe_x_request_id_resp.has_value());\n    EXPECT_EQ(maybe_x_request_id.value(), maybe_x_request_id_resp.value());\n\n    EXPECT_TRUE(response->complete());\n    EXPECT_EQ(\"403\", response->headers().getStatusValue());\n    cleanupUpstreamAndDownstream();\n  }\n\n  void deniedL3(Http::TestRequestHeaderMapImpl&&) {\n    initialize();\n    codec_client_ = makeL3DeniedHttpConnection();\n    ASSERT_TRUE(codec_client_->waitForDisconnect());\n\n    // Validate that the deny access log message is logged.\n    EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry&) { return true; }));\n    cleanupUpstreamAndDownstream();\n  }\n\n  IntegrationCodecClientPtr makeL3DeniedHttpConnection() {\n    // L3/L4 policy denial happens in the network filter during connection setup, so the reset may\n    // reach the client before Envoy's HTTP test helper observes the connection as established.\n    return makeRawHttpConnection(makeClientConnection(lookupPort(\"http\")), absl::nullopt,\n                                 absl::nullopt, /*wait_till_connected=*/false);\n  }\n\n  void accepted(Http::TestRequestHeaderMapImpl&& headers) {\n    initialize();\n    codec_client_ = makeHttpConnection(lookupPort(\"http\"));\n    auto response = sendRequestAndWaitForResponse(headers, 0, default_response_headers_, 0);\n\n    // Validate that request access log message with x-request-id is logged\n    absl::optional<std::string> maybe_x_request_id;\n    EXPECT_TRUE(expectAccessLogRequestTo([&maybe_x_request_id](const ::cilium::LogEntry& entry) {\n      maybe_x_request_id = getHeader(entry.http().headers(), \"x-request-id\");\n      return entry.http().status() == 0;\n    }));\n    ASSERT_TRUE(maybe_x_request_id.has_value());\n\n    // Validate that response x-request-id is the same as in request\n    absl::optional<std::string> maybe_x_request_id_resp;\n    EXPECT_TRUE(\n        expectAccessLogResponseTo([&maybe_x_request_id_resp](const ::cilium::LogEntry& entry) {\n          maybe_x_request_id_resp = getHeader(entry.http().headers(), \"x-request-id\");\n          return entry.http().status() == 200;\n        }));\n    ASSERT_TRUE(maybe_x_request_id_resp.has_value());\n    EXPECT_EQ(maybe_x_request_id.value(), maybe_x_request_id_resp.value());\n\n    EXPECT_TRUE(response->complete());\n    EXPECT_EQ(\"200\", response->headers().getStatusValue());\n    EXPECT_TRUE(upstream_request_->complete());\n    EXPECT_EQ(0, upstream_request_->bodyLength());\n    cleanupUpstreamAndDownstream();\n  }\n\n  bool initialized_ = false;\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumIntegrationTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()));\n\nclass HostMapTest : public CiliumHttpIntegrationTest {\npublic:\n  HostMapTest()\n      : CiliumHttpIntegrationTest(fmt::format(\n            fmt::runtime(TestEnvironment::substitute(cilium_proxy_config_fmt, GetParam())),\n            \"true\")) {}\n\n  std::string testPolicyFmt() override { return \"version_info: \\\"0\\\"\"; }\n\n  void invalidHostMap(const std::string& config, const char* exmsg) {\n    std::string path = TestEnvironment::writeStringToFileForTest(\"host_map_fail.yaml\", config);\n    envoy::service::discovery::v3::DiscoveryResponse message;\n    ThreadLocal::InstanceImpl tls;\n    Cilium::PolicyHostDecoder host_decoder;\n\n    THROW_IF_NOT_OK(MessageUtil::loadFromFile(\n        path, message, ProtobufMessage::getNullValidationVisitor(), *api_.get()));\n    Envoy::Cilium::PolicyHostMap hmap(tls, api_->rootScope());\n    const auto decoded_resources =\n        THROW_OR_RETURN_VALUE(Config::DecodedResourcesWrapper::create(\n                                  host_decoder, message.resources(), message.version_info()),\n                              std::unique_ptr<Config::DecodedResourcesWrapper>);\n\n    EXPECT_THROW_WITH_MESSAGE(\n        EXPECT_TRUE(hmap.onConfigUpdate(decoded_resources->refvec_, message.version_info()).ok()),\n        EnvoyException, exmsg);\n\n    tls.shutdownGlobalThreading();\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, HostMapTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()));\n\nTEST_P(HostMapTest, HostMapValid) {\n  std::string config = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 173\n  host_addresses: [ \"192.168.0.1\", \"f00d::1\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 1\n  host_addresses: [ \"127.0.0.1/32\", \"::1/128\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"127.0.0.0/8\", \"beef::/63\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 12\n  host_addresses: [ \"0.0.0.0/0\", \"::/0\" ]\n)EOF\";\n\n  std::string path = TestEnvironment::writeStringToFileForTest(\"host_map_success.yaml\", config);\n  envoy::service::discovery::v3::DiscoveryResponse message;\n  ThreadLocal::InstanceImpl tls;\n  Cilium::PolicyHostDecoder host_decoder;\n\n  THROW_IF_NOT_OK(MessageUtil::loadFromFile(\n      path, message, ProtobufMessage::getNullValidationVisitor(), *api_.get()));\n  auto hmap = std::make_shared<Envoy::Cilium::PolicyHostMap>(tls, api_->rootScope());\n  const auto decoded_resources =\n      THROW_OR_RETURN_VALUE(Config::DecodedResourcesWrapper::create(\n                                host_decoder, message.resources(), message.version_info()),\n                            std::unique_ptr<Config::DecodedResourcesWrapper>);\n\n  EXPECT_TRUE(hmap->onConfigUpdate(decoded_resources->refvec_, message.version_info()).ok());\n\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv4Instance(\"192.168.0.1\").ip()), 173);\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv4Instance(\"192.168.0.0\").ip()), 12);\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv4Instance(\"192.168.0.2\").ip()), 12);\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv4Instance(\"127.0.0.1\").ip()), 1);\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv4Instance(\"127.0.0.2\").ip()), 11);\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv4Instance(\"126.0.0.2\").ip()), 12);\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv4Instance(\"128.0.0.0\").ip()), 12);\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv6Instance(\"::1\").ip()), 1);\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv6Instance(\"::\").ip()), 12);\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv6Instance(\"f00d::1\").ip()), 173);\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv6Instance(\"f00d::\").ip()), 12);\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv6Instance(\"beef::1.2.3.4\").ip()), 11);\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv6Instance(\"beef:0:0:1::\").ip()), 11);\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv6Instance(\"beef:0:0:1::42\").ip()), 11);\n  EXPECT_EQ(hmap->resolve(Network::Address::Ipv6Instance(\"beef:0:0:2::\").ip()), 12);\n\n  tls.shutdownGlobalThreading();\n}\n\nTEST_P(HostMapTest, HostMapInvalidNonCIDRBits) {\n  if (GetParam() == Network::Address::IpVersion::v4) {\n    invalidHostMap(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"127.0.0.1/32\", \"127.0.0.1/31\" ]\n)EOF\",\n                   \"NetworkPolicyHosts: Non-prefix bits set in '127.0.0.1/31'\");\n  } else {\n    invalidHostMap(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"::1/128\", \"::1/63\" ]\n)EOF\",\n                   \"NetworkPolicyHosts: Non-prefix bits set in '::1/63'\");\n  }\n}\n\nTEST_P(HostMapTest, HostMapInvalidPrefixLengths) {\n  if (GetParam() == Network::Address::IpVersion::v4) {\n    invalidHostMap(\n        R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"127.0.0.1\", \"127.0.0.0/8\", \"127.0.0.1/33\" ]\n)EOF\",\n        \"NetworkPolicyHosts: Invalid prefix length in '127.0.0.1/33'\");\n  } else {\n    invalidHostMap(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"::1/128\", \"f00f::/65\", \"::3/129\" ]\n)EOF\",\n                   \"NetworkPolicyHosts: Invalid prefix length in '::3/129'\");\n  }\n}\n\nTEST_P(HostMapTest, HostMapInvalidPrefixLengths2) {\n  if (GetParam() == Network::Address::IpVersion::v4) {\n    invalidHostMap(\n        R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"127.0.0.1\", \"127.0.0.0/8\", \"127.0.0.1/32a\" ]\n)EOF\",\n        \"NetworkPolicyHosts: Invalid prefix length in '127.0.0.1/32a'\");\n  } else {\n    invalidHostMap(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"::1/128\", \"f00f::/65\", \"::3/\" ]\n)EOF\",\n                   \"NetworkPolicyHosts: Invalid prefix length in '::3/'\");\n  }\n}\n\nTEST_P(HostMapTest, HostMapInvalidPrefixLengths3) {\n  if (GetParam() == Network::Address::IpVersion::v4) {\n    invalidHostMap(\n        R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"127.0.0.1\", \"127.0.0.0/8\", \"127.0.0.1/ 32\" ]\n)EOF\",\n        \"NetworkPolicyHosts: Invalid prefix length in '127.0.0.1/ 32'\");\n  } else {\n    invalidHostMap(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"::1/128\", \"f00f::/65\", \"::3/128 \" ]\n)EOF\",\n                   \"NetworkPolicyHosts: Invalid prefix length in '::3/128 '\");\n  }\n}\n\nTEST_P(HostMapTest, HostMapDuplicateEntry) {\n  if (GetParam() == Network::Address::IpVersion::v4) {\n    invalidHostMap(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"127.0.0.0/16\", \"127.0.0.1/32\", \"127.0.0.1\" ]\n)EOF\",\n                   \"NetworkPolicyHosts: Duplicate host entry '127.0.0.1' for \"\n                   \"policy 11, already mapped to 11\");\n  } else {\n    invalidHostMap(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"::1/128\", \"f00f::/65\", \"::1\" ]\n)EOF\",\n                   \"NetworkPolicyHosts: Duplicate host entry '::1' for policy \"\n                   \"11, already mapped to 11\");\n  }\n}\n\nTEST_P(HostMapTest, HostMapDuplicateEntry2) {\n  if (GetParam() == Network::Address::IpVersion::v4) {\n    invalidHostMap(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"127.0.0.0/16\", \"127.0.0.1/32\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 12\n  host_addresses: [ \"127.0.0.0/8\", \"127.0.0.1\" ]\n)EOF\",\n                   \"NetworkPolicyHosts: Duplicate host entry '127.0.0.1' for \"\n                   \"policy 12, already mapped to 11\");\n  } else {\n    invalidHostMap(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"::1/128\", \"f00f::/65\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 12\n  host_addresses: [ \"f00f::/16\", \"::1\" ]\n)EOF\",\n                   \"NetworkPolicyHosts: Duplicate host entry '::1' for policy \"\n                   \"12, already mapped to 11\");\n  }\n}\n\nTEST_P(HostMapTest, HostMapInvalidAddress) {\n  if (GetParam() == Network::Address::IpVersion::v4) {\n    invalidHostMap(\n        R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"127.0.0.0/16\", \"127.0.0.1/32\", \"255.256.0.0\" ]\n)EOF\",\n        \"NetworkPolicyHosts: Invalid host entry '255.256.0.0' for policy 11\");\n  } else {\n    invalidHostMap(\n        R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"::1/128\", \"f00f::/65\", \"fOOd::1\" ]\n)EOF\",\n        \"NetworkPolicyHosts: Invalid host entry 'fOOd::1' for policy 11\");\n  }\n}\n\nTEST_P(HostMapTest, HostMapInvalidAddress2) {\n  if (GetParam() == Network::Address::IpVersion::v4) {\n    invalidHostMap(\n        R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"127.0.0.0/16\", \"127.0.0.1/32\", \"255.255.0.0 \" ]\n)EOF\",\n        \"NetworkPolicyHosts: Invalid host entry '255.255.0.0 ' for policy 11\");\n  } else {\n    invalidHostMap(\n        R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"::1/128\", \"f00f::/65\", \"f00d:: 1\" ]\n)EOF\",\n        \"NetworkPolicyHosts: Invalid host entry 'f00d:: 1' for policy 11\");\n  }\n}\n\nTEST_P(HostMapTest, HostMapInvalidDefaults) {\n  if (GetParam() == Network::Address::IpVersion::v4) {\n    invalidHostMap(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"0.0.0.0/0\", \"128.0.0.0/0\" ]\n)EOF\",\n                   \"NetworkPolicyHosts: Non-prefix bits set in '128.0.0.0/0'\");\n  } else {\n    invalidHostMap(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 11\n  host_addresses: [ \"::/0\", \"8000::/0\" ]\n)EOF\",\n                   \"NetworkPolicyHosts: Non-prefix bits set in '8000::/0'\");\n  }\n}\n\nTEST_P(CiliumIntegrationTest, DeniedPathPrefix) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/prefix\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 0;\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedPathPrefix) {\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/allowed\"},\n            {\":authority\", \"host\"},\n            {\"bearer-token\", \"d4ef0f5011f163ac\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& missing = http.missing_headers();\n    return http.missing_headers_size() == 1 && hasHeader(missing, \"header42\") &&\n           http.rejected_headers_size() == 0 && !hasHeader(http.headers(), \"header42\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedPathPrefixWrongHeader) {\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/allowed\"},\n            {\":authority\", \"host\"},\n            {\"bearer-token\", \"wrong-value\"},\n            {\"x-envoy-original-dst-host\", \"1.1.1.1:9999\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& rejected = http.rejected_headers();\n    const auto& missing = http.missing_headers();\n    return http.rejected_headers_size() == 1 && hasHeader(rejected, \"bearer-token\", \"[redacted]\") &&\n           http.missing_headers_size() == 2 && hasHeader(missing, \"header42\") &&\n           hasHeader(missing, \"bearer-token\", \"[redacted]\") &&\n           // Check that logged headers have the replaced value\n           hasHeader(http.headers(), \"bearer-token\", \"d4ef0f5011f163ac\") &&\n           !hasHeader(http.headers(), \"header42\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, MultipleRequests) {\n  // 1st request\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/allowed\"},\n            {\":authority\", \"host\"},\n            {\"bearer-token\", \"d4ef0f5011f163ac\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& missing = http.missing_headers();\n    return http.missing_headers_size() == 1 && hasHeader(missing, \"header42\") &&\n           http.rejected_headers_size() == 0 && !hasHeader(http.headers(), \"header42\");\n  }));\n\n  // 2nd request\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/allowed\"},\n            {\":authority\", \"host\"},\n            {\"bearer-token\", \"wrong-value\"},\n            {\"x-envoy-original-dst-host\", \"1.1.1.1:9999\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& rejected = http.rejected_headers();\n    const auto& missing = http.missing_headers();\n    return http.rejected_headers_size() == 1 && hasHeader(rejected, \"bearer-token\", \"[redacted]\") &&\n           http.missing_headers_size() == 2 && hasHeader(missing, \"header42\") &&\n           hasHeader(missing, \"bearer-token\", \"[redacted]\") &&\n           // Check that logged headers have the replaced value\n           hasHeader(http.headers(), \"bearer-token\", \"d4ef0f5011f163ac\") &&\n           !hasHeader(http.headers(), \"header42\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedPathRegex) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/maybe/public\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.rejected_headers_size() == 0 && http.missing_headers_size() == 0;\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedPathRegexDeleteHeader) {\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/maybe/public\"},\n            {\":authority\", \"host\"},\n            {\"User-Agent\", \"test\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& rejected = http.rejected_headers();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 1 &&\n           hasHeader(rejected, \"user-agent\", \"test\") && !hasHeader(http.headers(), \"User-Agent\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedHostRegexDeleteHeader) {\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/maybe/private\"},\n            {\":authority\", \"hostREGEXname\"},\n            {\"header42\", \"test\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& rejected = http.rejected_headers();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 1 &&\n           hasHeader(rejected, \"header42\", \"test\") &&\n           !hasHeader(http.headers(), \"header42\", \"test\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, DeniedPath) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 0;\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedHostString) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"allowedHOST\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& missing = http.missing_headers();\n    return http.missing_headers_size() == 2 && hasHeader(missing, \"header2\", \"value2\") &&\n           hasHeader(missing, \"header42\") && http.rejected_headers_size() == 0 &&\n           !hasHeader(http.headers(), \"header42\") && hasHeader(http.headers(), \"header2\", \"value2\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedReplaced) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/allowed\"}, {\":authority\", \"allowedHOST\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& missing = http.missing_headers();\n    return http.missing_headers_size() == 3 && hasHeader(missing, \"bearer-token\", \"[redacted]\") &&\n           hasHeader(missing, \"header2\", \"value2\") && hasHeader(missing, \"header42\") &&\n           http.rejected_headers_size() == 0 && !hasHeader(http.headers(), \"header42\") &&\n           hasHeader(http.headers(), \"header2\", \"value2\") &&\n           hasHeader(http.headers(), \"bearer-token\", \"d4ef0f5011f163ac\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, Denied42) {\n  denied({{\":method\", \"GET\"},\n          {\":path\", \"/allowed\"},\n          {\":authority\", \"host\"},\n          {\"header42\", \"anything\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& missing = http.missing_headers();\n    const auto& rejected = http.rejected_headers();\n    return http.rejected_headers_size() == 1 && hasHeader(rejected, \"header42\") &&\n           http.missing_headers_size() == 1 && hasHeader(missing, \"bearer-token\", \"[redacted]\") &&\n           hasHeader(http.headers(), \"header42\") &&\n           hasHeader(http.headers(), \"bearer-token\", \"d4ef0f5011f163ac\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedReplacedAndDeleted) {\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/allowed\"},\n            {\":authority\", \"allowedHOST\"},\n            {\"header42\", \"anything\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& missing = http.missing_headers();\n    const auto& rejected = http.rejected_headers();\n    return http.rejected_headers_size() == 1 && hasHeader(rejected, \"header42\") &&\n           http.missing_headers_size() == 2 && hasHeader(missing, \"bearer-token\", \"[redacted]\") &&\n           hasHeader(missing, \"header2\", \"value2\") && !hasHeader(http.headers(), \"header42\") &&\n           hasHeader(http.headers(), \"header2\", \"value2\") &&\n           hasHeader(http.headers(), \"bearer-token\", \"d4ef0f5011f163ac\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedHostRegex) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"hostREGEXname\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 0;\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, DeniedMethod) {\n  denied({{\":method\", \"POST\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 0;\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AcceptedMethod) {\n  accepted({{\":method\", \"PUT\"}, {\":path\", \"/public/opinions\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 0;\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, L3DeniedPath) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/only-2-allowed\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 0;\n  }));\n}\n\nclass CiliumIntegrationPortTest : public CiliumIntegrationTest {\npublic:\n  CiliumIntegrationPortTest() = default;\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  endpoint_id: 3\n  ingress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/only-2-allowed'\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '/also-2-allowed'\n  egress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 2 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/only-2-allowed'\n)EOF\",\n                                       GetParam());\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumIntegrationPortTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()));\n\nTEST_P(CiliumIntegrationPortTest, DuplicatePortAllowedPath) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/only-2-allowed\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationPortTest, DuplicatePortAllowedPath2) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/also-2-allowed\"}, {\":authority\", \"host\"}});\n}\n\nclass CiliumIntegrationPortRangeTest : public CiliumIntegrationTest {\npublic:\n  CiliumIntegrationPortRangeTest() = default;\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(BASIC_POLICY_fmt + R\"EOF(  - end_port: {0}\n    rules:\n    - remote_policies: [ 2 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '/only-2-allowed'\n)EOF\",\n                                       GetParam());\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumIntegrationPortRangeTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()));\n\nTEST_P(CiliumIntegrationPortRangeTest, InvalidRange) {\n  initialize();\n\n  // This would normally be allowed, but since the policy fails, everything will\n  // be rejected.\n  codec_client_ = makeL3DeniedHttpConnection();\n  ASSERT_TRUE(codec_client_->waitForDisconnect());\n  cleanupUpstreamAndDownstream();\n}\n\nclass CiliumIntegrationEgressTest : public CiliumIntegrationTest {\npublic:\n  CiliumIntegrationEgressTest()\n      : CiliumIntegrationTest(fmt::format(\n            fmt::runtime(TestEnvironment::substitute(cilium_proxy_config_fmt, GetParam())),\n            \"false\")) {\n    host_map_config = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 173\n  host_addresses: [ \"192.168.0.1\", \"f00d::1\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 1\n  host_addresses: [ \"127.0.0.0/8\", \"::/104\" ]\n)EOF\";\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumIntegrationEgressTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()));\n\nTEST_P(CiliumIntegrationEgressTest, DeniedPathPrefix) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/prefix\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, AllowedPathPrefix) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/allowed\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, AllowedPathRegex) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/maybe/public\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, DeniedPath) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, AllowedHostString) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"allowedHOST\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, AllowedHostRegex) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"hostREGEXname\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, DeniedMethod) {\n  denied({{\":method\", \"POST\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, AcceptedMethod) {\n  accepted({{\":method\", \"PUT\"}, {\":path\", \"/public/opinions\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, L3DeniedPath) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/only-2-allowed\"}, {\":authority\", \"host\"}});\n}\n\n// This policy has no HTTP rules, and allows all traffic to identity 42\nconst std::string L34_POLICY_fmt = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  endpoint_id: 3\n  egress_per_port_policies:\n  - port: {0}\n    end_port: {0}\n    rules:\n    - remote_policies: [ 42 ]\n)EOF\";\n\nclass CiliumIntegrationEgressL34Test : public CiliumIntegrationEgressTest {\npublic:\n  CiliumIntegrationEgressL34Test() = default;\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(L34_POLICY_fmt, GetParam());\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumIntegrationEgressL34Test,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()));\n\nTEST_P(CiliumIntegrationEgressL34Test, DeniedPathPrefix) {\n  deniedL3({{\":method\", \"GET\"}, {\":path\", \"/prefix\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationEgressL34Test, DeniedPathPrefix2) {\n  deniedL3({{\":method\", \"GET\"}, {\":path\", \"/allowed\"}, {\":authority\", \"host\"}});\n}\n\nconst std::string HEADER_ACTION_MISSING_SDS_POLICY_fmt = R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  endpoint_id: 3\n  ingress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed2'\n    - remote_policies: [ 42 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/only42'\n)EOF\";\n\nconst std::string HEADER_ACTION_MISSING_SDS_POLICY2_fmt = R\"EOF(version_info: \"2\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  endpoint_id: 3\n  ingress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n          header_matches:\n          - name: 'header42'\n            match_action: FAIL_ON_MATCH\n            mismatch_action: CONTINUE_ON_MISMATCH\n          - name: 'bearer-token'\n            value_sds_secret: 'nonexisting-sds-secret'\n            mismatch_action: REPLACE_ON_MISMATCH\n)EOF\";\n\nclass SDSIntegrationTest : public CiliumIntegrationTest {\npublic:\n  SDSIntegrationTest() {\n    // switch back to SDS secrets so that we can test with a missing secret.\n    // File based secret fails if the file does not exist, while SDS should allow for secret to be\n    // created in future.\n    Cilium::resetSDSConfigFunc();\n\n    host_map_config = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 42\n  host_addresses: [ \"192.168.1.1\", \"f00d::1:1\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 1\n  host_addresses: [ \"127.0.0.0/8\", \"::/104\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 2\n  host_addresses: [ \"0.0.0.0/0\", \"::/0\" ]\n)EOF\";\n  }\n\n  std::string testPolicyFmt2() {\n    return TestEnvironment::substitute(HEADER_ACTION_MISSING_SDS_POLICY2_fmt, GetParam());\n  }\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(HEADER_ACTION_MISSING_SDS_POLICY_fmt, GetParam());\n  }\n\n  std::vector<std::pair<std::string, std::string>> testSecrets() override {\n    return std::vector<std::pair<std::string, std::string>>{}; // No secrets\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, SDSIntegrationTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()));\n\nTEST_P(SDSIntegrationTest, TestDeniedL3) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/only42\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    auto source_ip = Network::Utility::parseInternetAddressAndPortNoThrow(entry.source_address())\n                         ->ip()\n                         ->addressAsString();\n    const auto& http = entry.http();\n    ENVOY_LOG_MISC(info, \"Access Log entry: {}\", entry.DebugString());\n\n    return http.rejected_headers_size() == 0 && http.missing_headers_size() == 0 &&\n           entry.source_security_id() == 1 &&\n           source_ip == ((GetParam() == Network::Address::IpVersion::v4) ? \"127.0.0.1\" : \"::1\");\n  }));\n}\n\nTEST_P(SDSIntegrationTest, TestDeniedL3SpoofedXFF) {\n  denied({{\":method\", \"GET\"},\n          {\":path\", \"/only42\"},\n          {\":authority\", \"host\"},\n          {\"x-forwarded-for\", \"192.168.1.1\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    auto source_ip = Network::Utility::parseInternetAddressAndPortNoThrow(entry.source_address())\n                         ->ip()\n                         ->addressAsString();\n    const auto& http = entry.http();\n\n    ENVOY_LOG_MISC(info, \"Access Log entry: {}\", entry.DebugString());\n\n    return http.rejected_headers_size() == 0 && http.missing_headers_size() == 0 &&\n           entry.source_security_id() == 1 &&\n           source_ip == ((GetParam() == Network::Address::IpVersion::v4) ? \"127.0.0.1\" : \"::1\");\n  }));\n}\n\nTEST_P(SDSIntegrationTest, TestMissingSDSSecretOnUpdate) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/allowed2\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n\n    ENVOY_LOG_MISC(info, \"Access Log entry: {}\", entry.DebugString());\n\n    return http.rejected_headers_size() == 0 && http.missing_headers_size() == 0;\n  }));\n\n  // Update policy that still has the missing secret\n  auto port = fake_upstreams_[0]->localAddress()->ip()->port();\n  auto config = fmt::format(fmt::runtime(testPolicyFmt2()), port);\n  std::string temp_path =\n      TestEnvironment::writeStringToFileForTest(\"network_policy_tmp.yaml\", config);\n  std::string backup_path = policy_path + \".backup\";\n  TestEnvironment::renameFile(policy_path, backup_path);\n  TestEnvironment::renameFile(temp_path, policy_path);\n  ENVOY_LOG_MISC(debug,\n                 \"Updating Cilium Network Policy from file \\'{}\\'->\\'{}\\' instead \"\n                 \"of using gRPC\",\n                 temp_path, policy_path);\n\n  // Reduce flakiness by allowing some time for the policy to be updated before the following test\n  absl::SleepFor(absl::Milliseconds(100));\n\n  // 2nd round, on updated policy\n  denied({{\":method\", \"GET\"}, {\":path\", \"/allowed\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& missing = http.missing_headers();\n\n    ENVOY_LOG_MISC(info, \"Access Log entry: {}\", entry.DebugString());\n\n    return http.rejected_headers_size() == 0 && http.missing_headers_size() == 1 &&\n           hasHeader(missing, \"header42\");\n  }));\n\n  // 3rd round back to the initial policy\n  TestEnvironment::renameFile(backup_path, policy_path);\n  ENVOY_LOG_MISC(debug,\n                 \"Updating Cilium Network Policy from file \\'{}\\'->\\'{}\\' instead \"\n                 \"of using gRPC\",\n                 backup_path, policy_path);\n\n  // Reduce flakiness by allowing some time for the policy to be updated before the following test\n  absl::SleepFor(absl::Milliseconds(100));\n\n  denied({{\":method\", \"GET\"}, {\":path\", \"/allowed\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n\n    ENVOY_LOG_MISC(info, \"Access Log entry: {}\", entry.DebugString());\n\n    return http.rejected_headers_size() == 0 && http.missing_headers_size() == 0;\n  }));\n}\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_http_upstream_integration_test.cc",
    "content": "#include <fmt/base.h>\n#include <fmt/format.h>\n#include <gtest/gtest-param-test.h>\n#include <gtest/gtest.h>\n\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/network/address.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/network/utility.h\"\n\n#include \"test/integration/http_integration.h\"\n#include \"test/test_common/environment.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"absl/time/clock.h\"\n#include \"absl/time/time.h\"\n#include \"absl/types/optional.h\"\n#include \"cilium/api/accesslog.pb.h\"\n#include \"cilium/secret_watcher.h\"\n#include \"tests/bpf_metadata.h\" // host_map_config\n#include \"tests/cilium_http_integration.h\"\n\nnamespace Envoy {\n\n// params: destination port number\nconst std::string BASIC_POLICY_fmt = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  endpoint_id: 3\n  ingress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n        - headers:\n          - name: ':path'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*public$'\n        - headers:\n          - name: ':authority'\n            exact_match: 'allowedHOST'\n        - headers:\n          - name: ':authority'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*REGEX.*'\n        - headers:\n          - name: ':method'\n            exact_match: 'PUT'\n          - name: ':path'\n            exact_match: '/public/opinions'\n    - remote_policies: [ 2 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/only-2-allowed'\n  egress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n        - headers:\n          - name: ':path'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*public$'\n        - headers:\n          - name: ':authority'\n            exact_match: 'allowedHOST'\n        - headers:\n          - name: ':authority'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*REGEX.*'\n        - headers:\n          - name: ':method'\n            exact_match: 'PUT'\n          - name: ':path'\n            exact_match: '/public/opinions'\n    - remote_policies: [ 2 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/only-2-allowed'\n)EOF\";\n\nconst std::string SECRET_TOKEN_CONFIG = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret\n  name: bearer-token\n  generic_secret:\n    secret:\n      inline_string: \"d4ef0f5011f163ac\"\n)EOF\";\n\nconst std::string HEADER_ACTION_POLICY_fmt = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  endpoint_id: 3\n  ingress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n          header_matches:\n          - name: 'header42'\n            match_action: FAIL_ON_MATCH\n            mismatch_action: CONTINUE_ON_MISMATCH\n          - name: 'bearer-token'\n            value_sds_secret: 'bearer-token'\n            mismatch_action: REPLACE_ON_MISMATCH\n        - headers:\n          - name: ':path'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*public$'\n          header_matches:\n          - name: 'user-agent'\n            value: 'CuRL'\n            mismatch_action: DELETE_ON_MISMATCH\n        - headers:\n          - name: ':authority'\n            exact_match: 'allowedHOST'\n          header_matches:\n          - name: 'header2'\n            value: 'value2'\n            mismatch_action: ADD_ON_MISMATCH\n          - name: 'header42'\n            match_action: DELETE_ON_MATCH\n            mismatch_action: CONTINUE_ON_MISMATCH\n        - headers:\n          - name: ':authority'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*REGEX.*'\n          header_matches:\n          - name: 'header42'\n            value: '42'\n            mismatch_action: DELETE_ON_MISMATCH\n        - headers:\n          - name: ':method'\n            exact_match: 'PUT'\n          - name: ':path'\n            exact_match: '/public/opinions'\n    - remote_policies: [ 2 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/only-2-allowed'\n  egress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n          header_matches:\n          - name: 'header42'\n            match_action: FAIL_ON_MATCH\n            mismatch_action: CONTINUE_ON_MISMATCH\n          - name: 'bearer-token'\n            value_sds_secret: 'bearer-token'\n            mismatch_action: REPLACE_ON_MISMATCH\n        - headers:\n          - name: ':path'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*public$'\n          header_matches:\n          - name: 'user-agent'\n            value: 'CuRL'\n            mismatch_action: DELETE_ON_MISMATCH\n        - headers:\n          - name: ':authority'\n            exact_match: 'allowedHOST'\n          header_matches:\n          - name: 'header2'\n            value: 'value2'\n            mismatch_action: ADD_ON_MISMATCH\n          - name: 'header42'\n            match_action: DELETE_ON_MATCH\n            mismatch_action: CONTINUE_ON_MISMATCH\n        - headers:\n          - name: ':authority'\n            safe_regex_match:\n              google_re2: {{}}\n              regex: '.*REGEX.*'\n          header_matches:\n          - name: 'header42'\n            value: '42'\n            mismatch_action: DELETE_ON_MISMATCH\n        - headers:\n          - name: ':method'\n            exact_match: 'PUT'\n          - name: ':path'\n            exact_match: '/public/opinions'\n    - remote_policies: [ 2 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/only-2-allowed'\n)EOF\";\n\n// params: is_ingress (\"true\", \"false\")\nconst std::string cilium_upstream_config_fmt = R\"EOF(\nadmin:\n  address:\n    socket_address:\n      address: 127.0.0.1\n      port_value: 0\nstatic_resources:\n  clusters:\n  - name: cluster1\n    type: ORIGINAL_DST\n    lb_policy: CLUSTER_PROVIDED\n    connect_timeout:\n      seconds: 1\n    typed_extension_protocol_options:\n      envoy.extensions.upstreams.http.v3.HttpProtocolOptions:\n        \"@type\": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions\n        common_http_protocol_options:\n          max_requests_per_connection: 3\n        use_downstream_protocol_config: {{}}\n        http_filters:\n        - name: test_l7policy\n          typed_config:\n            \"@type\": type.googleapis.com/cilium.L7Policy\n            access_log_path: \"{{ test_udsdir }}/access_log.sock\"\n        - name: envoy.filters.http.upstream_codec\n          typed_config:\n            \"@type\": type.googleapis.com/envoy.extensions.filters.http.upstream_codec.v3.UpstreamCodec\n  - name: xds-grpc-cilium\n    connect_timeout:\n      seconds: 5\n    type: STATIC\n    lb_policy: ROUND_ROBIN\n    http2_protocol_options:\n    load_assignment:\n      cluster_name: xds-grpc-cilium\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              pipe:\n                path: /var/run/cilium/xds.sock\n  listeners:\n    name: http\n    address:\n      socket_address:\n        address: 127.0.0.1\n        port_value: 0\n    listener_filters:\n      name: test_bpf_metadata\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.TestBpfMetadata\n        is_ingress: {0}\n        is_l7lb: true\n    filter_chains:\n      filters:\n      - name: cilium.network\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.NetworkFilter\n      - name: envoy.http_connection_manager\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager\n          stat_prefix: config_test\n          codec_type: auto\n          use_remote_address: true\n          skip_xff_append: true\n          http_filters:\n          - name: test_l7policy\n            typed_config:\n              \"@type\": type.googleapis.com/cilium.L7Policy\n              access_log_path: \"{{ test_udsdir }}/access_log.sock\"\n          - name: envoy.filters.http.router\n            typed_config:\n              \"@type\": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router\n          route_config:\n            name: policy_enabled\n            virtual_hosts:\n              name: integration\n              domains: \"*\"\n              routes:\n              - route:\n                  cluster: cluster1\n                  max_grpc_timeout:\n                    seconds: 0\n                    nanos: 0\n                match:\n                  prefix: \"/\"\n)EOF\";\n\nclass CiliumIntegrationTest : public CiliumHttpIntegrationTest {\npublic:\n  CiliumIntegrationTest()\n      : CiliumHttpIntegrationTest(fmt::format(\n            fmt::runtime(TestEnvironment::substitute(cilium_upstream_config_fmt, GetParam())),\n            \"false\")) {\n    host_map_config = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 173\n  host_addresses: [ \"192.168.0.1\", \"f00d::1\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 1\n  host_addresses: [ \"127.0.0.0/8\", \"::/104\" ]\n)EOF\";\n  }\n  CiliumIntegrationTest(const std::string& config) : CiliumHttpIntegrationTest(config) {}\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(HEADER_ACTION_POLICY_fmt, GetParam());\n  }\n\n  std::vector<std::pair<std::string, std::string>> testSecrets() override {\n    return std::vector<std::pair<std::string, std::string>>{\n        {\"bearer-token\", SECRET_TOKEN_CONFIG},\n    };\n  }\n\n  void initialize() override {\n    accessLogServer_.clear();\n    if (!initialized_) {\n      HttpIntegrationTest::initialize();\n      initialized_ = true;\n    }\n  }\n\n  void denied(Http::TestRequestHeaderMapImpl&& headers) {\n    initialize();\n    codec_client_ = makeHttpConnection(lookupPort(\"http\"));\n    auto response = codec_client_->makeHeaderOnlyRequest(headers);\n    ASSERT_TRUE(response->waitForEndStream());\n\n    // Validate that request access log message with x-request-id is logged\n    absl::optional<std::string> maybe_x_request_id;\n    EXPECT_TRUE(expectAccessLogDeniedTo([&maybe_x_request_id](const ::cilium::LogEntry& entry) {\n      maybe_x_request_id = getHeader(entry.http().headers(), \"x-request-id\");\n      return entry.http().status() == 0;\n    }));\n    ASSERT_TRUE(maybe_x_request_id.has_value());\n\n    // Validate that response x-request-id is the same as in request\n    absl::optional<std::string> maybe_x_request_id_resp;\n    EXPECT_TRUE(\n        expectAccessLogResponseTo([&maybe_x_request_id_resp](const ::cilium::LogEntry& entry) {\n          maybe_x_request_id_resp = getHeader(entry.http().headers(), \"x-request-id\");\n          return entry.http().status() == 403;\n        }));\n    ASSERT_TRUE(maybe_x_request_id_resp.has_value());\n    EXPECT_EQ(maybe_x_request_id.value(), maybe_x_request_id_resp.value());\n\n    EXPECT_TRUE(response->complete());\n    EXPECT_EQ(\"403\", response->headers().getStatusValue());\n    cleanupUpstreamAndDownstream();\n  }\n\n  void accepted(Http::TestRequestHeaderMapImpl&& headers) {\n    initialize();\n    codec_client_ = makeHttpConnection(lookupPort(\"http\"));\n    auto response = sendRequestAndWaitForResponse(headers, 0, default_response_headers_, 0);\n\n    // Validate that request access log message with x-request-id is logged\n    absl::optional<std::string> maybe_x_request_id;\n    EXPECT_TRUE(expectAccessLogRequestTo([&maybe_x_request_id](const ::cilium::LogEntry& entry) {\n      maybe_x_request_id = getHeader(entry.http().headers(), \"x-request-id\");\n      return entry.http().status() == 0;\n    }));\n    ASSERT_TRUE(maybe_x_request_id.has_value());\n\n    // Validate that response x-request-id is the same as in request\n    absl::optional<std::string> maybe_x_request_id_resp;\n    EXPECT_TRUE(\n        expectAccessLogResponseTo([&maybe_x_request_id_resp](const ::cilium::LogEntry& entry) {\n          maybe_x_request_id_resp = getHeader(entry.http().headers(), \"x-request-id\");\n          return entry.http().status() == 200;\n        }));\n    ASSERT_TRUE(maybe_x_request_id_resp.has_value());\n    EXPECT_EQ(maybe_x_request_id.value(), maybe_x_request_id_resp.value());\n\n    EXPECT_TRUE(response->complete());\n    EXPECT_EQ(\"200\", response->headers().getStatusValue());\n    EXPECT_TRUE(upstream_request_->complete());\n    EXPECT_EQ(0, upstream_request_->bodyLength());\n    cleanupUpstreamAndDownstream();\n  }\n\n  bool initialized_ = false;\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumIntegrationTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()));\n\nTEST_P(CiliumIntegrationTest, DeniedPathPrefix) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/prefix\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 0;\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedPathPrefix) {\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/allowed\"},\n            {\":authority\", \"host\"},\n            {\"bearer-token\", \"d4ef0f5011f163ac\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& missing = http.missing_headers();\n    return http.missing_headers_size() == 1 && hasHeader(missing, \"header42\") &&\n           http.rejected_headers_size() == 0 && !hasHeader(http.headers(), \"header42\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedPathPrefixWrongHeader) {\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/allowed\"},\n            {\":authority\", \"host\"},\n            {\"bearer-token\", \"wrong-value\"},\n            {\"x-envoy-original-dst-host\", \"1.1.1.1:9999\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& rejected = http.rejected_headers();\n    const auto& missing = http.missing_headers();\n    return http.rejected_headers_size() == 1 && hasHeader(rejected, \"bearer-token\", \"[redacted]\") &&\n           http.missing_headers_size() == 2 && hasHeader(missing, \"header42\") &&\n           hasHeader(missing, \"bearer-token\", \"[redacted]\") &&\n           // Check that logged headers have the replaced value\n           hasHeader(http.headers(), \"bearer-token\", \"d4ef0f5011f163ac\") &&\n           !hasHeader(http.headers(), \"header42\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, MultipleRequests) {\n  // 1st request\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/allowed\"},\n            {\":authority\", \"host\"},\n            {\"bearer-token\", \"d4ef0f5011f163ac\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& missing = http.missing_headers();\n    return http.missing_headers_size() == 1 && hasHeader(missing, \"header42\") &&\n           http.rejected_headers_size() == 0 && !hasHeader(http.headers(), \"header42\");\n  }));\n\n  // 2nd request\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/allowed\"},\n            {\":authority\", \"host\"},\n            {\"bearer-token\", \"wrong-value\"},\n            {\"x-envoy-original-dst-host\", \"1.1.1.1:9999\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& rejected = http.rejected_headers();\n    const auto& missing = http.missing_headers();\n    return http.rejected_headers_size() == 1 && hasHeader(rejected, \"bearer-token\", \"[redacted]\") &&\n           http.missing_headers_size() == 2 && hasHeader(missing, \"header42\") &&\n           hasHeader(missing, \"bearer-token\", \"[redacted]\") &&\n           // Check that logged headers have the replaced value\n           hasHeader(http.headers(), \"bearer-token\", \"d4ef0f5011f163ac\") &&\n           !hasHeader(http.headers(), \"header42\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedPathRegex) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/maybe/public\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.rejected_headers_size() == 0 && http.missing_headers_size() == 0;\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedPathRegexDeleteHeader) {\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/maybe/public\"},\n            {\":authority\", \"host\"},\n            {\"User-Agent\", \"test\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& rejected = http.rejected_headers();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 1 &&\n           hasHeader(rejected, \"user-agent\", \"test\") && !hasHeader(http.headers(), \"User-Agent\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedHostRegexDeleteHeader) {\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/maybe/private\"},\n            {\":authority\", \"hostREGEXname\"},\n            {\"header42\", \"test\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& rejected = http.rejected_headers();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 1 &&\n           hasHeader(rejected, \"header42\", \"test\") &&\n           !hasHeader(http.headers(), \"header42\", \"test\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, DeniedPath) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 0;\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedHostString) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"allowedHOST\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& missing = http.missing_headers();\n    return http.missing_headers_size() == 2 && hasHeader(missing, \"header2\", \"value2\") &&\n           hasHeader(missing, \"header42\") && http.rejected_headers_size() == 0 &&\n           !hasHeader(http.headers(), \"header42\") && hasHeader(http.headers(), \"header2\", \"value2\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedReplaced) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/allowed\"}, {\":authority\", \"allowedHOST\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& missing = http.missing_headers();\n    return http.missing_headers_size() == 3 && hasHeader(missing, \"bearer-token\", \"[redacted]\") &&\n           hasHeader(missing, \"header2\", \"value2\") && hasHeader(missing, \"header42\") &&\n           http.rejected_headers_size() == 0 && !hasHeader(http.headers(), \"header42\") &&\n           hasHeader(http.headers(), \"header2\", \"value2\") &&\n           hasHeader(http.headers(), \"bearer-token\", \"d4ef0f5011f163ac\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, Denied42) {\n  denied({{\":method\", \"GET\"},\n          {\":path\", \"/allowed\"},\n          {\":authority\", \"host\"},\n          {\"header42\", \"anything\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& missing = http.missing_headers();\n    const auto& rejected = http.rejected_headers();\n    return http.rejected_headers_size() == 1 && hasHeader(rejected, \"header42\") &&\n           http.missing_headers_size() == 1 && hasHeader(missing, \"bearer-token\", \"[redacted]\") &&\n           hasHeader(http.headers(), \"header42\") &&\n           hasHeader(http.headers(), \"bearer-token\", \"d4ef0f5011f163ac\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedReplacedAndDeleted) {\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/allowed\"},\n            {\":authority\", \"allowedHOST\"},\n            {\"header42\", \"anything\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& missing = http.missing_headers();\n    const auto& rejected = http.rejected_headers();\n    return http.rejected_headers_size() == 1 && hasHeader(rejected, \"header42\") &&\n           http.missing_headers_size() == 2 && hasHeader(missing, \"bearer-token\", \"[redacted]\") &&\n           hasHeader(missing, \"header2\", \"value2\") && !hasHeader(http.headers(), \"header42\") &&\n           hasHeader(http.headers(), \"header2\", \"value2\") &&\n           hasHeader(http.headers(), \"bearer-token\", \"d4ef0f5011f163ac\");\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AllowedHostRegex) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"hostREGEXname\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 0;\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, DeniedMethod) {\n  denied({{\":method\", \"POST\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 0;\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, AcceptedMethod) {\n  accepted({{\":method\", \"PUT\"}, {\":path\", \"/public/opinions\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 0;\n  }));\n}\n\nTEST_P(CiliumIntegrationTest, L3DeniedPath) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/only-2-allowed\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.missing_headers_size() == 0 && http.rejected_headers_size() == 0;\n  }));\n}\n\nclass CiliumIntegrationEgressTest : public CiliumIntegrationTest {\npublic:\n  CiliumIntegrationEgressTest()\n      : CiliumIntegrationTest(fmt::format(\n            fmt::runtime(TestEnvironment::substitute(cilium_upstream_config_fmt, GetParam())),\n            \"false\")) {\n    host_map_config = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 173\n  host_addresses: [ \"192.168.0.1\", \"f00d::1\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 1\n  host_addresses: [ \"127.0.0.0/8\", \"::/104\" ]\n)EOF\";\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumIntegrationEgressTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()));\n\nTEST_P(CiliumIntegrationEgressTest, DeniedPathPrefix) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/prefix\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, AllowedPathPrefix) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/allowed\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, AllowedPathRegex) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/maybe/public\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, DeniedPath) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, AllowedHostString) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"allowedHOST\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, AllowedHostRegex) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"hostREGEXname\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, DeniedMethod) {\n  denied({{\":method\", \"POST\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, AcceptedMethod) {\n  accepted({{\":method\", \"PUT\"}, {\":path\", \"/public/opinions\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationEgressTest, L3DeniedPath) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/only-2-allowed\"}, {\":authority\", \"host\"}});\n}\n\nconst std::string L34_POLICY_fmt = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  endpoint_id: 3\n  egress_per_port_policies:\n  - port: {0}\n    end_port: {0}\n    rules:\n    - remote_policies: [ 42 ]\n)EOF\";\n\nclass CiliumIntegrationEgressL34Test : public CiliumIntegrationEgressTest {\npublic:\n  CiliumIntegrationEgressL34Test() = default;\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(L34_POLICY_fmt, GetParam());\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumIntegrationEgressL34Test,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()));\n\nTEST_P(CiliumIntegrationEgressL34Test, DeniedPathPrefix) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/prefix\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumIntegrationEgressL34Test, DeniedPathPrefix2) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/allowed\"}, {\":authority\", \"host\"}});\n}\n\nconst std::string HEADER_ACTION_MISSING_SDS_POLICY_fmt = R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  endpoint_id: 3\n  egress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed2'\n    - remote_policies: [ 42 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/only42'\n)EOF\";\n\nconst std::string HEADER_ACTION_MISSING_SDS_POLICY2_fmt = R\"EOF(version_info: \"2\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  endpoint_id: 3\n  egress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n          header_matches:\n          - name: 'header42'\n            match_action: FAIL_ON_MATCH\n            mismatch_action: CONTINUE_ON_MISMATCH\n          - name: 'bearer-token'\n            value_sds_secret: 'nonexisting-sds-secret'\n            mismatch_action: REPLACE_ON_MISMATCH\n)EOF\";\n\nclass SDSIntegrationTest : public CiliumIntegrationTest {\npublic:\n  SDSIntegrationTest() {\n    // switch back to SDS secrets so that we can test with a missing secret.\n    // File based secret fails if the file does not exist, while SDS should allow for secret to be\n    // created in future.\n    Cilium::resetSDSConfigFunc();\n\n    host_map_config = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 42\n  host_addresses: [ \"192.168.1.1\", \"f00d::1:1\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 1\n  host_addresses: [ \"127.0.0.0/8\", \"::/104\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 2\n  host_addresses: [ \"0.0.0.0/0\", \"::/0\" ]\n)EOF\";\n  }\n\n  std::string testPolicyFmt2() {\n    return TestEnvironment::substitute(HEADER_ACTION_MISSING_SDS_POLICY2_fmt, GetParam());\n  }\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(HEADER_ACTION_MISSING_SDS_POLICY_fmt, GetParam());\n  }\n\n  std::vector<std::pair<std::string, std::string>> testSecrets() override {\n    return std::vector<std::pair<std::string, std::string>>{}; // No secrets\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, SDSIntegrationTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()));\n\nTEST_P(SDSIntegrationTest, TestDeniedL3) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/only42\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    auto source_ip = Network::Utility::parseInternetAddressAndPortNoThrow(entry.source_address())\n                         ->ip()\n                         ->addressAsString();\n    const auto& http = entry.http();\n    return http.rejected_headers_size() == 0 && http.missing_headers_size() == 0 &&\n           entry.destination_security_id() == 1 &&\n           source_ip == ((GetParam() == Network::Address::IpVersion::v4) ? \"127.0.0.1\" : \"::1\");\n  }));\n}\n\nTEST_P(SDSIntegrationTest, TestDeniedL3SpoofedXFF) {\n  denied({{\":method\", \"GET\"},\n          {\":path\", \"/only42\"},\n          {\":authority\", \"host\"},\n          {\"x-forwarded-for\", \"192.168.1.1\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    auto source_ip = Network::Utility::parseInternetAddressAndPortNoThrow(entry.source_address())\n                         ->ip()\n                         ->addressAsString();\n    const auto& http = entry.http();\n    return http.rejected_headers_size() == 0 && http.missing_headers_size() == 0 &&\n           entry.destination_security_id() == 1 &&\n           source_ip == ((GetParam() == Network::Address::IpVersion::v4) ? \"127.0.0.1\" : \"::1\");\n  }));\n}\n\nTEST_P(SDSIntegrationTest, TestMissingSDSSecretOnUpdate) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/allowed2\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogRequestTo([](const ::cilium::LogEntry& entry) {\n    auto source_ip = Network::Utility::parseInternetAddressAndPortNoThrow(entry.source_address())\n                         ->ip()\n                         ->addressAsString();\n    const auto& http = entry.http();\n    return http.rejected_headers_size() == 0 && http.missing_headers_size() == 0;\n  }));\n\n  // Update policy that still has the missing secret\n  auto port = fake_upstreams_[0]->localAddress()->ip()->port();\n  auto config = fmt::format(fmt::runtime(testPolicyFmt2()), port);\n  std::string temp_path =\n      TestEnvironment::writeStringToFileForTest(\"network_policy_tmp.yaml\", config);\n  std::string backup_path = policy_path + \".backup\";\n  TestEnvironment::renameFile(policy_path, backup_path);\n  TestEnvironment::renameFile(temp_path, policy_path);\n  ENVOY_LOG_MISC(debug,\n                 \"Updating Cilium Network Policy from file \\'{}\\'->\\'{}\\' instead \"\n                 \"of using gRPC\",\n                 temp_path, policy_path);\n\n  // Reduce flakiness by allowing some time for the policy to be updated before the following test\n  absl::SleepFor(absl::Milliseconds(100));\n\n  // 2nd round, on updated policy\n  denied({{\":method\", \"GET\"}, {\":path\", \"/allowed\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    const auto& missing = http.missing_headers();\n    return http.rejected_headers_size() == 0 && http.missing_headers_size() == 1 &&\n           hasHeader(missing, \"header42\");\n  }));\n\n  // 3rd round back to the initial policy\n  TestEnvironment::renameFile(backup_path, policy_path);\n  ENVOY_LOG_MISC(debug,\n                 \"Updating Cilium Network Policy from file \\'{}\\'->\\'{}\\' instead \"\n                 \"of using gRPC\",\n                 backup_path, policy_path);\n\n  // Reduce flakiness by allowing some time for the policy to be updated before the following test\n  absl::SleepFor(absl::Milliseconds(100));\n\n  denied({{\":method\", \"GET\"}, {\":path\", \"/allowed\"}, {\":authority\", \"host\"}});\n\n  // Validate that missing headers are access logged correctly\n  EXPECT_TRUE(expectAccessLogDeniedTo([](const ::cilium::LogEntry& entry) {\n    const auto& http = entry.http();\n    return http.rejected_headers_size() == 0 && http.missing_headers_size() == 0;\n  }));\n}\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_network_policy_test.cc",
    "content": "#include <gmock/gmock-spec-builders.h>\n#include <gmock/gmock.h>\n#include <gtest/gtest.h>\n#include <spdlog/common.h>\n\n#include <cstdint>\n#include <memory>\n#include <string>\n#include <utility>\n\n#include \"envoy/common/exception.h\"\n#include \"envoy/common/optref.h\"\n#include \"envoy/config/core/v3/config_source.pb.h\"\n#include \"envoy/init/manager.h\"\n#include \"envoy/server/factory_context.h\"\n#include \"envoy/service/discovery/v3/discovery.pb.h\"\n#include \"envoy/ssl/context.h\"\n#include \"envoy/ssl/context_config.h\"\n\n#include \"source/common/common/assert.h\"\n#include \"source/common/common/base_logger.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/regex.h\"\n#include \"source/common/config/decoded_resource_impl.h\"\n#include \"source/common/protobuf/message_validator_impl.h\"\n#include \"source/common/protobuf/utility.h\"\n#include \"source/common/secret/sds_api.h\" // NOLINT\n\n#include \"test/common/stats/stat_test_utility.h\"\n#include \"test/mocks/secret/mocks.h\"\n#include \"test/mocks/server/admin.h\"\n#include \"test/mocks/server/factory_context.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"absl/strings/string_view.h\"\n#include \"cilium/accesslog.h\"\n#include \"cilium/network_policy.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\n// Cilium XDS API config source. Used for all Cilium XDS.\nextern const envoy::config::core::v3::ConfigSource CILIUM_XDS_API_CONFIG;\n\n#define ON_CALL_SDS_SECRET_PROVIDER(SECRET_MANAGER, PROVIDER_TYPE, API_TYPE)                       \\\n  ON_CALL(SECRET_MANAGER, findOrCreate##PROVIDER_TYPE##Provider(_, _, _, _))                       \\\n      .WillByDefault(Invoke([](const envoy::config::core::v3::ConfigSource& sds_config_source,     \\\n                               const std::string& config_name,                                     \\\n                               Server::Configuration::ServerFactoryContext& server_context,        \\\n                               Init::Manager& init_manager) {                                      \\\n        auto secret_provider = Secret::API_TYPE##SdsApi::create(                                   \\\n            server_context, sds_config_source, config_name, []() {}, false);                       \\\n        init_manager.add(*secret_provider->initTarget());                                          \\\n        return secret_provider;                                                                    \\\n      }))\n\n// TlsCertificateProvider has a different signature in envoy 1.37:\n// OptRef<Init::Manager> instead of Init::Manager&, plus bool warm.\n#define ON_CALL_SDS_TLS_CERTIFICATE_PROVIDER(SECRET_MANAGER, API_TYPE)                             \\\n  ON_CALL(SECRET_MANAGER, findOrCreateTlsCertificateProvider(_, _, _, _, _))                       \\\n      .WillByDefault(Invoke([](const envoy::config::core::v3::ConfigSource& sds_config_source,     \\\n                               const std::string& config_name,                                     \\\n                               Server::Configuration::ServerFactoryContext& server_context,        \\\n                               OptRef<Init::Manager> init_manager, bool /*warm*/) {                \\\n        auto secret_provider = Secret::API_TYPE##SdsApi::create(                                   \\\n            server_context, sds_config_source, config_name, []() {}, false);                       \\\n        if (init_manager.has_value()) {                                                            \\\n          init_manager->add(*secret_provider->initTarget());                                       \\\n        }                                                                                          \\\n        return secret_provider;                                                                    \\\n      }))\n\nclass CiliumNetworkPolicyTest : public ::testing::Test {\nprotected:\n  CiliumNetworkPolicyTest() {\n    for (Logger::Logger& logger : Logger::Registry::loggers()) {\n      logger.setLevel(spdlog::level::trace);\n    }\n  }\n  ~CiliumNetworkPolicyTest() override = default;\n\n  void SetUp() override {\n    // Mock SDS secrets with a real implementation, which will not return anything if there is no\n    // SDS server. This is only useful for testing functionality with a missing secret.\n    ON_CALL(factory_context_.server_factory_context_, secretManager())\n        .WillByDefault(ReturnRef(secret_manager_));\n\n    ON_CALL_SDS_TLS_CERTIFICATE_PROVIDER(secret_manager_, TlsCertificate);\n    ON_CALL_SDS_SECRET_PROVIDER(secret_manager_, CertificateValidationContext,\n                                CertificateValidationContext);\n    ON_CALL_SDS_SECRET_PROVIDER(secret_manager_, TlsSessionTicketKeysContext, TlsSessionTicketKeys);\n    ON_CALL_SDS_SECRET_PROVIDER(secret_manager_, GenericSecret, GenericSecret);\n\n    policy_map_ =\n        std::make_shared<NetworkPolicyMap>(factory_context_, Cilium::CILIUM_XDS_API_CONFIG);\n  }\n\n  void TearDown() override {\n    ASSERT(policy_map_.use_count() == 1);\n    policy_map_.reset();\n  }\n\n  std::string updateFromYaml(const std::string& config) {\n    envoy::service::discovery::v3::DiscoveryResponse message;\n    MessageUtil::loadFromYaml(config, message, ProtobufMessage::getNullValidationVisitor());\n    NetworkPolicyDecoder network_policy_decoder;\n    const auto decoded_resources_or_error = Config::DecodedResourcesWrapper::create(\n        network_policy_decoder, message.resources(), message.version_info());\n    THROW_IF_NOT_OK_REF(decoded_resources_or_error.status());\n    const auto decoded_resources = std::move(decoded_resources_or_error.value().get());\n\n    EXPECT_TRUE(policy_map_->getImpl()\n                    .onConfigUpdate(decoded_resources->refvec_, message.version_info())\n                    .ok());\n    return message.version_info();\n  }\n\n  testing::AssertionResult validate(const std::string& pod_ip, const std::string& expected) {\n    const auto& policy = policy_map_->getPolicyInstance(pod_ip, false);\n    auto str = policy.string();\n    if (str != expected) {\n      return testing::AssertionFailure() << \"Policy:\\n\"\n                                         << str << \"Does not match expected:\\n\"\n                                         << expected;\n    }\n    return testing::AssertionSuccess();\n  }\n\n  testing::AssertionResult allowed(bool ingress, const std::string& pod_ip, uint64_t remote_id,\n                                   uint16_t port, Http::TestRequestHeaderMapImpl&& headers) {\n    const auto& policy = policy_map_->getPolicyInstance(pod_ip, false);\n    // test network layer policy first\n    if (!policy.allowed(ingress, proxy_id_, remote_id, \"\", port)) {\n      return testing::AssertionFailure();\n    }\n    Cilium::AccessLog::Entry log_entry;\n    return policy.allowed(ingress, proxy_id_, remote_id, port, headers, log_entry)\n               ? testing::AssertionSuccess()\n               : testing::AssertionFailure();\n  }\n  testing::AssertionResult ingressAllowed(const std::string& pod_ip, uint64_t remote_id,\n                                          uint16_t port,\n                                          Http::TestRequestHeaderMapImpl&& headers = {}) {\n    return allowed(true, pod_ip, remote_id, port, std::move(headers));\n  }\n  testing::AssertionResult egressAllowed(const std::string& pod_ip, uint64_t remote_id,\n                                         uint16_t port,\n                                         Http::TestRequestHeaderMapImpl&& headers = {}) {\n    return allowed(false, pod_ip, remote_id, port, std::move(headers));\n  }\n\n  testing::AssertionResult tlsAllowed(bool ingress, const std::string& pod_ip, uint64_t remote_id,\n                                      uint16_t port, absl::string_view sni,\n                                      bool& tls_socket_required, bool& raw_socket_allowed) {\n    const auto& policy = policy_map_->getPolicyInstance(pod_ip, false);\n\n    auto port_policy = policy.findPortPolicy(ingress, port);\n    const Envoy::Ssl::ContextConfig* config = nullptr;\n\n    // TLS context lookup does not check SNI\n    tls_socket_required = false;\n    raw_socket_allowed = false;\n    Envoy::Ssl::ContextSharedPtr ctx =\n        !ingress\n            ? port_policy.getClientTlsContext(proxy_id_, remote_id, sni, config, raw_socket_allowed)\n            : port_policy.getServerTlsContext(proxy_id_, remote_id, sni, config,\n                                              raw_socket_allowed);\n\n    // separate policy lookup for validation\n    bool allowed = policy.allowed(ingress, proxy_id_, remote_id, sni, port);\n\n    // if connection is allowed without TLS socket then TLS context is not required\n    if (raw_socket_allowed) {\n      EXPECT_TRUE(ctx == nullptr && config == nullptr);\n      tls_socket_required = false;\n    }\n\n    // if TLS config or context is returned then connection is not allowed without TLS socket\n    if (ctx != nullptr || config != nullptr) {\n      EXPECT_FALSE(raw_socket_allowed);\n      tls_socket_required = true;\n    }\n\n    // config must exist if ctx is returned\n    if (ctx != nullptr) {\n      EXPECT_TRUE(config != nullptr);\n    }\n\n    EXPECT_TRUE(allowed == (tls_socket_required || raw_socket_allowed));\n\n    if (!allowed) {\n      return testing::AssertionFailure() << pod_ip << \" policy not allowing id \" << remote_id\n                                         << \" on port \" << port << \" with SNI \\\"\" << sni << \"\\\"\";\n    }\n\n    // sanity check\n    EXPECT_TRUE(!(tls_socket_required && raw_socket_allowed) &&\n                (tls_socket_required || raw_socket_allowed));\n\n    if (raw_socket_allowed) {\n      return testing::AssertionSuccess()\n             << pod_ip << \" policy allows id \" << remote_id << \" on port \" << port << \" with SNI \\\"\"\n             << sni << \"\\\" without TLS socket\";\n    }\n\n    if (tls_socket_required && ctx != nullptr) {\n      return testing::AssertionSuccess()\n             << pod_ip << \" policy allows id \" << remote_id << \" on port \" << port << \" with SNI \\\"\"\n             << sni << \"\\\" with TLS socket\";\n    }\n\n    if (tls_socket_required && ctx == nullptr) {\n      return testing::AssertionSuccess()\n             << pod_ip << \" policy allows id \" << remote_id << \" on port \" << port << \" with SNI \\\"\"\n             << sni << \"\\\" but missing TLS context\";\n    }\n\n    return testing::AssertionFailure();\n  }\n\n  testing::AssertionResult tlsIngressAllowed(const std::string& pod_ip, uint64_t remote_id,\n                                             uint16_t port, absl::string_view sni,\n                                             bool& tls_socket_required, bool& raw_socket_allowed) {\n    return tlsAllowed(true, pod_ip, remote_id, port, sni, tls_socket_required, raw_socket_allowed);\n  }\n\n  testing::AssertionResult tlsEgressAllowed(const std::string& pod_ip, uint64_t remote_id,\n                                            uint16_t port, absl::string_view sni,\n                                            bool& tls_socket_required, bool& raw_socket_allowed) {\n    return tlsAllowed(false, pod_ip, remote_id, port, sni, tls_socket_required, raw_socket_allowed);\n  }\n\n  std::string updatesRejectedStatName() {\n    return policy_map_->getImpl().stats_.updates_rejected_.name();\n  }\n\n  NiceMock<Server::Configuration::MockFactoryContext> factory_context_;\n  NiceMock<Secret::MockSecretManager> secret_manager_;\n  std::shared_ptr<NetworkPolicyMap> policy_map_;\n  NiceMock<Stats::TestUtil::TestStore> store_;\n  uint16_t proxy_id_ = 42;\n};\n\nTEST_F(CiliumNetworkPolicyTest, UpdatesRejectedStatName) {\n  EXPECT_EQ(\"cilium.policy.updates_rejected\", updatesRejectedStatName());\n}\n\nTEST_F(CiliumNetworkPolicyTest, EmptyPolicyUpdate) {\n  EXPECT_TRUE(policy_map_->getImpl().onConfigUpdate({}, \"1\").ok());\n  EXPECT_FALSE(validate(\"10.1.2.3\", \"\")); // Policy not found\n}\n\nTEST_F(CiliumNetworkPolicyTest, SimplePolicyUpdate) {\n  std::string version;\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"0\"\n)EOF\"));\n  EXPECT_EQ(version, \"0\");\n  EXPECT_FALSE(validate(\"10.1.2.3\", \"\")); // Policy not found\n}\n\nTEST_F(CiliumNetworkPolicyTest, OverlappingPortRange) {\n  EXPECT_NO_THROW(updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 23\n    rules:\n    - remote_policies: [ 42 ]\n    - remote_policies: [ 45 ]\n  - port: 80\n    rules:\n    - remote_policies: [ 44 ]\n  - port: 92\n    rules:\n    - deny: true\n  - port: 40\n    end_port: 99\n    rules:\n    - remote_policies: [ 43 ]\n)EOF\"));\n\n  std::string expected = R\"EOF(ingress:\n  rules:\n    [23-23]:\n    - rules:\n      - remotes: [45]\n      - remotes: [42]\n    [40-79]:\n    - rules:\n      - remotes: [43]\n    [80-80]:\n    - rules:\n      - remotes: [44]\n      - remotes: [43]\n    [81-91]:\n    - rules:\n      - remotes: [43]\n    [92-92]:\n    - rules:\n      - remotes: []\n        deny: true\n      - remotes: [43]\n    [93-99]:\n    - rules:\n      - remotes: [43]\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Ingress from 42 is allowed on port 23\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 42, 23));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 23));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 23));\n\n  // port 92 is denied from everyone\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 42, 92));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 92));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 92));\n\n  // Ingress from 43 is allowed on all ports of the range:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 39));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 40));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 79));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 81));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 99));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 100));\n\n  // 44 is only allowed to port 80\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 39));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 40));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 79));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 44, 80));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 81));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 99));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 100));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 8080));\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 44, 8080));\n\n  // Same with policies added in reverse order\n  EXPECT_NO_THROW(updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 40\n    end_port: 99\n    rules:\n    - remote_policies: [ 43 ]\n  - port: 92\n    rules:\n    - deny: true\n  - port: 80\n    rules:\n    - remote_policies: [ 44 ]\n  - port: 23\n    rules:\n    - remote_policies: [ 42 ]\n    - remote_policies: [ 45 ]\n)EOF\"));\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Ingress from 42 is allowed on port 23\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 42, 23));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 23));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 23));\n\n  // port 92 is denied from everyone\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 42, 92));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 92));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 92));\n\n  // Ingress from 43 is allowed on all ports of the range:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 39));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 40));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 79));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 81));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 99));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 100));\n\n  // 44 is only allowed to port 80\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 39));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 40));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 79));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 44, 80));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 81));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 99));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 100));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 8080));\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 44, 8080));\n}\n\nTEST_F(CiliumNetworkPolicyTest, OverlappingPortRanges) {\n  EXPECT_NO_THROW(updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    end_port: 8080\n    rules:\n    - remote_policies: [ 43 ]\n  - port: 4040\n    end_port: 9999\n    rules:\n    - remote_policies: [ 44 ]\n)EOF\"));\n\n  std::string expected = R\"EOF(ingress:\n  rules:\n    [80-4039]:\n    - rules:\n      - remotes: [43]\n    [4040-8080]:\n    - rules:\n      - remotes: [43]\n      - remotes: [44]\n    [8081-9999]:\n    - rules:\n      - remotes: [44]\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Ingress from 43 is allowed to ports 80-8080 only:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 79));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 81));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4039));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4040));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4041));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8079));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8080));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8081));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 9998));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 9999));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 10000));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 8080));\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 44, 8080));\n\n  // Same with policies added in reverse order\n  EXPECT_NO_THROW(updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 4040\n    end_port: 9999\n    rules:\n    - remote_policies: [ 44 ]\n  - port: 80\n    end_port: 8080\n    rules:\n    - remote_policies: [ 43 ]\n)EOF\"));\n\n  // remotes are in insertion order\n  expected = R\"EOF(ingress:\n  rules:\n    [80-4039]:\n    - rules:\n      - remotes: [43]\n    [4040-8080]:\n    - rules:\n      - remotes: [44]\n      - remotes: [43]\n    [8081-9999]:\n    - rules:\n      - remotes: [44]\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Ingress from 43 is allowed to ports 80-8080 only:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 79));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 81));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4039));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4040));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4041));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8079));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8080));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8081));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 9998));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 9999));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 10000));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 8080));\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 44, 8080));\n}\n\nTEST_F(CiliumNetworkPolicyTest, DuplicatePorts) {\n  EXPECT_NO_THROW(updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n)EOF\"));\n\n  std::string expected = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43]\n      - remotes: [43]\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Ingress from 43 is allowed on port 80 only:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 8080));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 80));\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 8080));\n}\n\nTEST_F(CiliumNetworkPolicyTest, DuplicatePortRange) {\n  EXPECT_NO_THROW(updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    end_port: 8080\n    rules:\n    - remote_policies: [ 43 ]\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n)EOF\"));\n\n  std::string expected = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43]\n      - remotes: [43]\n    [81-8080]:\n    - rules:\n      - remotes: [43]\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Ingress is allowed:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 79));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 81));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8079));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8080));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8081));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 8080));\n}\n\nTEST_F(CiliumNetworkPolicyTest, InvalidPortRange) {\n  EXPECT_THROW_WITH_MESSAGE(\n      updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    end_port: 60\n    rules:\n    - remote_policies: [ 43 ]\n  - port: 4040\n    end_port: 9999\n    rules:\n    - remote_policies: [ 43 ]\n)EOF\"),\n      EnvoyException,\n      \"PortNetworkPolicy: Invalid port range, end port is less than start port 80-60\");\n\n  // No ingress is allowed:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80));\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 8080));\n}\n\nTEST_F(CiliumNetworkPolicyTest, InvalidWildcardPortRange) {\n  EXPECT_THROW_WITH_MESSAGE(\n      updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 0\n    end_port: 80\n    rules:\n    - remote_policies: [ 43 ]\n  - port: 4040\n    end_port: 9999\n    rules:\n    - remote_policies: [ 43 ]\n)EOF\"),\n      EnvoyException,\n      \"PortNetworkPolicy: Invalid port range including the wildcard zero port 0-80\");\n\n  // No ingress is allowed:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80));\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 8080));\n}\n\n// Zero end port is treated as no range\nTEST_F(CiliumNetworkPolicyTest, ZeroPortRange) {\n  std::string version;\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    end_port: 0\n    rules:\n    - remote_policies: [ 43 ]\n  - port: 4040\n    end_port: 9999\n    rules:\n    - remote_policies: [ 43 ]\n)EOF\"));\n  EXPECT_EQ(version, \"1\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43]\n    [4040-9999]:\n    - rules:\n      - remotes: [43]\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80));\n  // Allowed port:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Path is ignored:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80));\n}\n\nTEST_F(CiliumNetworkPolicyTest, HttpPolicyUpdate) {\n  std::string version;\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"0\"\n)EOF\"));\n  EXPECT_EQ(version, \"0\");\n  EXPECT_FALSE(policy_map_->exists(\"10.1.2.3\"));\n  // No policy for the pod\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n\n  // 1st update\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n)EOF\"));\n  EXPECT_EQ(version, \"1\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Wrong path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n\n  // 2nd update\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"2\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n  egress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43, 44 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            safe_regex_match:\n              google_re2: {}\n              regex: '.*public$'\n)EOF\"));\n  EXPECT_EQ(version, \"2\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  expected = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\negress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43,44]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            regex: <hidden>\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Wrong path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/public\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/public\"}}));\n  // Wrong port:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/public\"}}));\n  // Wrong path:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/publicz\"}}));\n\n  // 3rd update with Ingress deny rules\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"3\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n  - port: 80\n    end_port: 10000\n    rules:\n    - deny: true\n  egress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43, 44 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            safe_regex_match:\n              google_re2: {}\n              regex: '.*public$'\n)EOF\"));\n  EXPECT_EQ(version, \"3\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  expected = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: []\n        deny: true\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\n    [81-10000]:\n    - rules:\n      - remotes: []\n        deny: true\negress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43,44]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            regex: <hidden>\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Denied remote ID, port, & path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Denied remote ID & wrong path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/public\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/public\"}}));\n  // Wrong port:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/public\"}}));\n  // Wrong path:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/publicz\"}}));\n\n  // 4th update with matching proxy_id in policy\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"4\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n  - port: 80\n    end_port: 10000\n    rules:\n    - proxy_id: 42\n  egress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43, 44 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            safe_regex_match:\n              google_re2: {}\n              regex: '.*public$'\n)EOF\"));\n  EXPECT_EQ(version, \"4\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  expected = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\n      - remotes: []\n        proxy_id: 42\n    [81-10000]:\n    - rules:\n      - remotes: []\n        proxy_id: 42\negress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43,44]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            regex: <hidden>\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Matching proxy ID:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Matching proxy ID:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Matching proxy ID:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // Port out of range:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 79, {{\":path\", \"/allowed\"}}));\n  // Port out of range:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 10001, {{\":path\", \"/notallowed\"}}));\n\n  // 5th update with non-matching proxy_id in policy\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"5\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n  - port: 80\n    end_port: 10000\n    rules:\n    - proxy_id: 99\n  egress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43, 44 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            safe_regex_match:\n              google_re2: {}\n              regex: '.*public$'\n)EOF\"));\n  EXPECT_EQ(version, \"5\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  expected = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\n      - remotes: []\n        proxy_id: 99\n    [81-10000]:\n    - rules:\n      - remotes: []\n        proxy_id: 99\negress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43,44]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            regex: <hidden>\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Non-matching proxy ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Non-matching proxy ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Non-matching proxy ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // Port out of range:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 79, {{\":path\", \"/allowed\"}}));\n  // Port out of range:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 10001, {{\":path\", \"/notallowed\"}}));\n}\n\nTEST_F(CiliumNetworkPolicyTest, Precedence) {\n  std::string version;\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"0\"\n)EOF\"));\n  EXPECT_EQ(version, \"0\");\n  EXPECT_FALSE(policy_map_->exists(\"10.1.2.3\"));\n  // No policy for the pod\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n\n  // pass_precedence must be lower than precedence\n  EXPECT_THROW_WITH_MESSAGE(\n      updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - precedence: 1000\n      pass_precedence: 2000\n      remote_policies: [ 43 ]\n)EOF\"),\n      EnvoyException,\n      \"PortNetworkPolicyRule: pass_precedence 2000 must be lower than precedence 1000\");\n\n  // deny and pass_precedence are mutually exclusive\n  EXPECT_THROW_WITH_REGEX(updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - deny: true\n      precedence: 1000\n      pass_precedence: 100\n      remote_policies: [ 43 ]\n)EOF\"),\n                          EnvoyException,\n                          \"Unable to parse JSON as proto.*INVALID_ARGUMENT:.*oneof\");\n\n  // pass rules on the same tier must use a consistent pass_precedence.\n  // \"pass_precedence\" defines the last (lowest) precedence on the \"tier\".\n  // any pass rules with precedence higher than the previous pass_precedence\n  // must have the same pass_precedence.\n  EXPECT_THROW_WITH_MESSAGE(updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - precedence: 1000\n      pass_precedence: 100\n      remote_policies: [ 43 ]\n    - precedence: 900\n      pass_precedence: 200\n      remote_policies: [ 44 ]\n)EOF\"),\n                            EnvoyException,\n                            \"PortNetworkPolicy: Inconsistent pass precedence 200 != 100\");\n\n  //\n  // 1st update: Default allow rule combining with an HTTP allow rule\n  //\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n  - port: 80\n)EOF\"));\n  EXPECT_EQ(version, \"1\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected1 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: []\n        name: \"default allow rule\"\n      - remotes: []\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected1));\n\n  // All remotes allowed on port 80\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/also-allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n\n  //\n  // 2nd update: Default allow rule combining with a pass rule.\n  //\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"2\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    end_port: 81\n    rules:\n    - precedence: 10\n      pass_precedence: 1\n  - port: 80\n)EOF\"));\n  EXPECT_EQ(version, \"2\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected2 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: []\n        name: \"default allow rule\"\n        precedence: 9\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected2));\n\n  // All remotes allowed on port 80\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/also-allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n\n  //\n  // 3rd update: Default allow rule combining with a pass rule on wildcard port.\n  //\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"3\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 0\n    rules:\n    - precedence: 10\n      pass_precedence: 1\n  - port: 80\n)EOF\"));\n  EXPECT_EQ(version, \"3\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected3 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: []\n        name: \"default allow rule\"\n        precedence: 9\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected3));\n\n  // All remotes allowed on port 80\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/also-allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n\n  //\n  // 4th update: higher precedence deny\n  //\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"4\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - precedence: 1000\n      deny: true\n    - precedence: 100\n      remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n)EOF\"));\n  EXPECT_EQ(version, \"4\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected4 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: []\n        deny: true\n        precedence: 1000\n      - remotes: [43]\n        precedence: 100\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected4));\n\n  // Denied remote ID, port, & path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Wrong path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n\n  //\n  // 5th update: higher precedence deny on wildcard port\n  //\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"5\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 0\n    rules:\n    - precedence: 1000\n      deny: true\n  - port: 80\n    rules:\n    - precedence: 100\n      remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n)EOF\"));\n  EXPECT_EQ(version, \"5\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected5 = R\"EOF(ingress:\n  rules:\n    [0-0]:\n    - rules:\n      - remotes: []\n        deny: true\n        precedence: 1000\n    [80-80]:\n    - rules:\n      - remotes: []\n        deny: true\n        precedence: 1000\n      - remotes: [43]\n        precedence: 100\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected5));\n\n  // Denied remote ID, port, & path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Wrong path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n\n  //\n  // 6th update: pass for '43'\n  //\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"6\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - precedence: 1000\n      pass_precedence: 501\n      remote_policies: [ 43 ]\n    - precedence: 900\n      deny: true\n    - precedence: 500\n      remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n)EOF\"));\n  EXPECT_EQ(version, \"6\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected6 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43]\n        precedence: 999\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\n      - remotes: []\n        deny: true\n        precedence: 900\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected6));\n\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Wrong path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n\n  //\n  // 7th update: pass with partial overlap\n  //\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"7\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - precedence: 1000\n      pass_precedence: 501\n      remote_policies: [ 43 ]\n    - precedence: 900\n      deny: true\n    - precedence: 500\n      remote_policies: [ 43, 44 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n)EOF\"));\n  EXPECT_EQ(version, \"7\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected7 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43]\n        precedence: 999\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\n      - remotes: []\n        deny: true\n        precedence: 900\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected7));\n\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Denied remote ID, port, & path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Wrong path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n\n  //\n  // 8th update: wildcard pass\n  //\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"8\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - precedence: 1000\n      pass_precedence: 501\n    - precedence: 900\n      deny: true\n    - precedence: 500\n      remote_policies: [ 43, 44 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n)EOF\"));\n  EXPECT_EQ(version, \"8\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected8 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43,44]\n        precedence: 999\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected8));\n\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Wrong path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n\n  //\n  // 9th update: split wildcard lower-precedence rule due to pass\n  //\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"9\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - precedence: 1000\n      pass_precedence: 501\n      remote_policies: [ 43 ]\n    - precedence: 900\n      deny: true\n    - precedence: 500\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n)EOF\"));\n  EXPECT_EQ(version, \"9\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected9 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43]\n        precedence: 999\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\n      - remotes: []\n        deny: true\n        precedence: 900\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected9));\n\n  // Remote 43 is promoted above deny by pass.\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Other remotes are still denied by the deny rule.\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/allowed\"}}));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 45, 80, {{\":path\", \"/allowed\"}}));\n\n  //\n  // 10th update: wildcard-port pass inherited by specific port rules\n  //\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"10\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 0\n    rules:\n    - precedence: 1000\n      pass_precedence: 501\n      remote_policies: [ 43 ]\n  - port: 80\n    rules:\n    - precedence: 900\n      deny: true\n    - precedence: 500\n      remote_policies: [ 43, 44 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n)EOF\"));\n  EXPECT_EQ(version, \"10\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected10 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43]\n        precedence: 999\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\n      - remotes: []\n        deny: true\n        precedence: 900\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected10));\n\n  // Pass from wildcard port should promote remote 43 above deny on port 80.\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Remote 44 is denied due to only 43 being promoted.\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/allowed\"}}));\n  // Unspecified remotes remain denied.\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 45, 80, {{\":path\", \"/allowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n\n  //\n  // 11th update: wildcard-port and specific-port pass rules at equal precedence\n  //\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"11\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 0\n    rules:\n    - precedence: 1000\n      pass_precedence: 501\n      remote_policies: [ 44 ]\n  - port: 80\n    rules:\n    - precedence: 1000\n      pass_precedence: 501\n      remote_policies: [ 43 ]\n    - precedence: 900\n      deny: true\n    - precedence: 500\n      remote_policies: [ 43, 44 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n)EOF\"));\n  EXPECT_EQ(version, \"11\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected11 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43,44]\n        precedence: 999\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\n      - remotes: []\n        deny: true\n        precedence: 900\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected11));\n\n  // Both IDs are passed to the lower allow despite the intermediate deny.\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/allowed\"}}));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 45, 80, {{\":path\", \"/allowed\"}}));\n\n  //\n  // 12th update: non-pass rule shadowing inside a pass tier\n  //\n  // The pass rule is required to enable tier processing, but it targets only\n  // remote 45 so the tier is not wildcard-pass and does not pre-shadow 43/44.\n  // Within this tier:\n  // - A higher-precedence deny for remote 44 establishes a final verdict for 44.\n  // - A lower-precedence allow for [43,44] must have 44 removed due to shadowing.\n  // - A second allow at the same precedence for [43] must keep 43, confirming\n  //   no same-precedence identity shadowing between allow rules.\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"12\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - precedence: 1000\n      pass_precedence: 701\n      remote_policies: [ 45 ]\n    - precedence: 900\n      deny: true\n      remote_policies: [ 44 ]\n    - precedence: 800\n      remote_policies: [ 43, 44 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allow-a'\n    - precedence: 800\n      remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allow-b'\n    - precedence: 700\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allow-c'\n)EOF\"));\n  EXPECT_EQ(version, \"12\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected12 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [45]\n        precedence: 999\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allow-c\"\n      - remotes: [44]\n        deny: true\n        precedence: 900\n      - remotes: [43]\n        precedence: 800\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allow-b\"\n      - remotes: [43]\n        precedence: 800\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allow-a\"\n      - remotes: []\n        precedence: 700\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allow-c\"\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected12));\n\n  // Remote 43 is not passed, but both same-precedence allow rules remain effective.\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allow-a\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allow-b\"}}));\n  // Remote 44 is denied by the higher-precedence deny and removed from allow-a.\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/allow-a\"}}));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/allow-b\"}}));\n  // Pass remote 45 does not match /allow-a because only /allow-c is promoted for it.\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 45, 80, {{\":path\", \"/allow-a\"}}));\n  // Wildcard allow at precedence 700 is promoted to precedence 999 only for pass remote 45.\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 45, 80, {{\":path\", \"/allow-c\"}}));\n  // Non-pass remotes not already denied at higher precedence still match the\n  // original wildcard rule at precedence 700.\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allow-c\"}}));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/allow-c\"}}));\n\n  //\n  // 13th update: inherited wildcard current-tier pass fully shadowed\n  //\n  // Wildcard port has a current-tier pass for remote 43, and specific port has\n  // a higher precedence pass for the same remote on the same tier. When the\n  // wildcard pass is inherited, it is fully shadowed and skipped, as evidenced by the\n  // precedence of the passed-to rule for remote 43, which is 999 rather than 899.\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"13\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 0\n    rules:\n    - precedence: 900\n      pass_precedence: 701\n      remote_policies: [ 43 ]\n  - port: 80\n    rules:\n    - precedence: 1000\n      pass_precedence: 701\n      remote_policies: [ 43 ]\n    - precedence: 800\n      deny: true\n    - precedence: 700\n      remote_policies: [ 43, 44 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/shadowed-inherited-pass'\n)EOF\"));\n  EXPECT_EQ(version, \"13\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected13 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43]\n        precedence: 999\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/shadowed-inherited-pass\"\n      - remotes: []\n        deny: true\n        precedence: 800\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected13));\n\n  // Remote 43 is promoted above deny due to the specific-port pass.\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/shadowed-inherited-pass\"}}));\n  // Remote 44 remains denied by the intermediate deny.\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/shadowed-inherited-pass\"}}));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 45, 80, {{\":path\", \"/shadowed-inherited-pass\"}}));\n\n  //\n  // 14th update: multiple wildcard pass tiers inherited by a specific port\n  //\n  // Wildcard port contributes two pass tiers:\n  // Tier boundaries are inclusive.\n  // - tier 1 pass (1300/1000) for remote 41: tier boundaries [1300..1000]\n  // - tier 2 pass (900/700) for remote 42: tier boundaries [999..700]\n  // For port 80:\n  // - deny at 850 is within tier 2, so it is promoted by tier 1 pass for remote 41 to 1150\n  // - allow [41,42,43] at 600 is split and promoted by both tiers:\n  //   - 41 to tier 1 precedence 900\n  //   - 42 to tier 2 precedence 800\n  //   - 43 remains at tier 3 at precedence 600\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"14\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 0\n    rules:\n    - precedence: 1300\n      pass_precedence: 1000\n      remote_policies: [ 41 ]\n    - precedence: 900\n      pass_precedence: 700\n      remote_policies: [ 42 ]\n  - port: 80\n    rules:\n    - precedence: 850\n      deny: true\n    - precedence: 600\n      remote_policies: [ 41, 42, 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/multi-tier'\n)EOF\"));\n  EXPECT_EQ(version, \"14\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected14 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [41]\n        deny: true\n        precedence: 1150\n      - remotes: []\n        deny: true\n        precedence: 850\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected14));\n\n  // Remote 41 hits the promoted deny from tier 1.\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 41, 80, {{\":path\", \"/multi-tier\"}}));\n  // Remote 42 is promoted by the lower wildcard tier, but remains below deny.\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 42, 80, {{\":path\", \"/multi-tier\"}}));\n  // Remote 43 is not promoted and is denied.\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/multi-tier\"}}));\n\n  //\n  // 15th update: inconsistent pass precedence via inherited wildcard + local pass\n  //\n  // Wildcard current-tier pass (900/700) is inherited for port 80 at local\n  // pass precedence 850. A local pass with pass_precedence 600 on the same tier\n  // must fail as inconsistent.\n  EXPECT_THROW_WITH_MESSAGE(updateFromYaml(R\"EOF(version_info: \"15\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 0\n    rules:\n    - precedence: 900\n      pass_precedence: 700\n      remote_policies: [ 50 ]\n  - port: 80\n    rules:\n    - precedence: 850\n      pass_precedence: 600\n      remote_policies: [ 51 ]\n    - precedence: 500\n      remote_policies: [ 50, 51 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/inconsistent-inherited-pass'\n)EOF\"),\n                            EnvoyException,\n                            \"PortNetworkPolicy: Inconsistent pass precedence 600 != 700\");\n\n  // Failed update must leave policy unchanged from version 10.\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected14));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 41, 80, {{\":path\", \"/multi-tier\"}}));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 42, 80, {{\":path\", \"/multi-tier\"}}));\n\n  //\n  // 16th update: inherited wildcard pass skips remaining rules on that tier\n  //\n  // Wildcard port has a wildcard pass (2000/700), which is inherited for port 80.\n  // Rules in that same tier [1999..700] are skipped; a lower-tier rule at 600 is\n  // retained and promoted to 1900 by the inherited wildcard pass.\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"16\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 0\n    rules:\n    - precedence: 2000\n      pass_precedence: 700\n  - port: 80\n    rules:\n    - precedence: 1200\n      deny: true\n      remote_policies: [ 43 ]\n    - precedence: 1100\n      remote_policies: [ 44 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/should-skip'\n    - precedence: 600\n      remote_policies: [ 43, 44 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/promoted-after-skip'\n)EOF\"));\n  EXPECT_EQ(version, \"16\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected16 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43,44]\n        precedence: 1900\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/promoted-after-skip\"\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected16));\n\n  // Both remotes are allowed by the promoted lower-tier rule.\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/promoted-after-skip\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/promoted-after-skip\"}}));\n  // Tier rule at 800 is skipped by inherited wildcard pass.\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/should-skip\"}}));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 45, 80, {{\":path\", \"/promoted-after-skip\"}}));\n\n  //\n  // 17th update: Shadowed rules are eliminated\n  //\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"17\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 0\n    rules:\n    - precedence: 1000\n      pass_precedence: 901\n  - port: 80\n    rules:\n    - precedence: 900\n      deny: true\n      remote_policies: [ 43 ]\n    - precedence: 800\n      remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/should-skip'\n    - precedence: 600\n      remote_policies: [ 43, 44 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/partially-skipped'\n)EOF\"));\n  EXPECT_EQ(version, \"17\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected17 = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43]\n        deny: true\n        precedence: 999\n      - remotes: [44]\n        precedence: 699\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/partially-skipped\"\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected17));\n\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/partially-skipped\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/partially-skipped\"}}));\n  // Rule at 800 is shadowed by higher precedence deny\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/should-skip\"}}));\n  // inapplicable identity\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 45, 80, {{\":path\", \"/partially-skipped\"}}));\n}\n\nTEST_F(CiliumNetworkPolicyTest, HttpOverlappingPortRanges) {\n  std::string version;\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"0\"\n)EOF\"));\n  EXPECT_EQ(version, \"0\");\n  EXPECT_FALSE(policy_map_->exists(\"10.1.2.3\"));\n  // No policy for the pod\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n\n  // 1st update\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':method'\n            exact_match: 'GET'\n)EOF\"));\n  EXPECT_EQ(version, \"1\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected = R\"EOF(ingress:\n  rules:\n    [80-80]:\n    - rules:\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":method\"\n            value: \"GET\"\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Allowed remote ID, port, & method OR path:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":method\", \"PUSH\"}, {\":path\", \"/allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":method\", \"GET\"}, {\":path\", \"/also_allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Wrong path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n\n  // 2nd update with overlapping port range and a single port\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"2\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 70\n    end_port: 90\n    rules:\n    - remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':method'\n            exact_match: 'GET'\n)EOF\"));\n  EXPECT_EQ(version, \"2\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  expected = R\"EOF(ingress:\n  rules:\n    [70-79]:\n    - rules:\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\n    [80-80]:\n    - rules:\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":method\"\n            value: \"GET\"\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\n    [81-90]:\n    - rules:\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Allowed remote ID, port, & method OR path:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 70, {{\":method\", \"PUSH\"}, {\":path\", \"/allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":method\", \"PUSH\"}, {\":path\", \"/allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 90, {{\":method\", \"PUSH\"}, {\":path\", \"/allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":method\", \"GET\"}, {\":path\", \"/also_allowed\"}}));\n  // wrong port for GET\n  EXPECT_FALSE(\n      ingressAllowed(\"10.1.2.3\", 43, 70, {{\":method\", \"GET\"}, {\":path\", \"/also_allowed\"}}));\n  EXPECT_FALSE(\n      ingressAllowed(\"10.1.2.3\", 43, 90, {{\":method\", \"GET\"}, {\":path\", \"/also_allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Wrong path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n\n  // 3rd update with overlapping port ranges\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"2\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 70\n    end_port: 90\n    rules:\n    - remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n  - port: 80\n    end_port: 8080\n    rules:\n    - remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':method'\n            exact_match: 'GET'\n)EOF\"));\n  EXPECT_EQ(version, \"2\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  expected = R\"EOF(ingress:\n  rules:\n    [70-79]:\n    - rules:\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\n    [80-90]:\n    - rules:\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":path\"\n            value: \"/allowed\"\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":method\"\n            value: \"GET\"\n    [91-8080]:\n    - rules:\n      - remotes: [43]\n        http_rules:\n        - headers:\n          - name: \":method\"\n            value: \"GET\"\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Allowed remote ID, port, & method OR path:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 70, {{\":method\", \"PUSH\"}, {\":path\", \"/allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":method\", \"PUSH\"}, {\":path\", \"/allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 90, {{\":method\", \"PUSH\"}, {\":path\", \"/allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":method\", \"GET\"}, {\":path\", \"/also_allowed\"}}));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 90, {{\":method\", \"GET\"}, {\":path\", \"/also_allowed\"}}));\n  EXPECT_TRUE(\n      ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":method\", \"GET\"}, {\":path\", \"/also_allowed\"}}));\n  // wrong port for GET\n  EXPECT_FALSE(\n      ingressAllowed(\"10.1.2.3\", 43, 70, {{\":method\", \"GET\"}, {\":path\", \"/also_allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Wrong path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n}\n\nTEST_F(CiliumNetworkPolicyTest, TcpPolicyUpdate) {\n  std::string version;\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"0\"\n)EOF\"));\n  EXPECT_EQ(version, \"0\");\n  EXPECT_FALSE(policy_map_->exists(\"10.1.2.3\"));\n  // No policy for the pod\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n\n  // 1st update\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n)EOF\"));\n  EXPECT_EQ(version, \"1\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n  // Allowed remote ID & port:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Path does not matter:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n\n  // 2nd update\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"2\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n  egress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43, 44 ]\n)EOF\"));\n  EXPECT_EQ(version, \"2\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n  // Allowed remote ID & port:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Path does not matter\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // Allowed remote ID & port:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n  // Allowed remote ID & port:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/public\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/public\"}}));\n  // Wrong port:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/public\"}}));\n  // Path does not matter:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/publicz\"}}));\n}\n\nTEST_F(CiliumNetworkPolicyTest, PortRanges) {\n  std::string version;\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"0\"\n)EOF\"));\n  EXPECT_EQ(version, \"0\");\n  EXPECT_FALSE(policy_map_->exists(\"10.1.2.3\"));\n  // No policy for the pod\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80));\n\n  // 1st update\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    end_port: 8080\n    rules:\n    - remote_policies: [ 43 ]\n)EOF\"));\n  EXPECT_EQ(version, \"1\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n  // Allowed remote ID & port:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80));\n  // Path does not matter\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n  // Port within the range:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4040));\n  // Port at the end of the range:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8080));\n  // Port out of range:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 79));\n  // Port out of range:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8081));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80));\n\n  // 2nd update\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"2\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    end_port: 8080\n    rules:\n    - remote_policies: [ 43 ]\n  - port: 9000\n    end_port: 9999\n    rules:\n    - remote_policies: [ 44 ]\n  egress_per_port_policies:\n  - port: 80\n    end_port: 90\n    rules:\n    - remote_policies: [ 43, 44 ]\n)EOF\"));\n  EXPECT_EQ(version, \"2\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  // Allowed remote ID & port:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80));\n  // Wrong remote ID:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 40, 80));\n  // Path does not matter\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n  // Port within the range:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4040));\n  // Port at the end of the range:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8080));\n  // Port out of range:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 79));\n  // Port out of range:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8081));\n\n  // Allowed remote ID & port:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 44, 9000));\n  // Port within the range:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 44, 9500));\n  // Port at the end of the range:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 44, 9999));\n  // Port out of range:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 8999));\n  // Port out of range:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 10000));\n\n  // Wrong remote IDs:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 44, 80));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 9000));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 9500));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 9999));\n\n  // Allowed remote ID & port:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 43, 80));\n  // Path does not matter:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/publicz\"}}));\n  // Allowed remote ID & port:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 44, 80));\n  // Wrong remote ID:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 40, 80));\n  // Port within the range:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 43, 85));\n  // Port at the end of the range:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 43, 90));\n  // Port out of range:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 79));\n  // Port out of range:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 91));\n\n  // 3rd update, ranges with HTTP\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"2\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    end_port: 8080\n    rules:\n    - remote_policies: [ 43 ]\n  - port: 9000\n    end_port: 9999\n    rules:\n    - remote_policies: [ 44 ]\n  egress_per_port_policies:\n  - port: 80\n    end_port: 90\n    rules:\n    - remote_policies: [ 43, 44 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n        - headers:\n          - name: ':path'\n            exact_match: '/allows'\n        - headers:\n          - name: ':path'\n            exact_match: '/public'\n)EOF\"));\n  EXPECT_EQ(version, \"2\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong path:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/publicz\"}}));\n  // Allowed remote ID & port:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 44, 80, {{\":path\", \"/allows\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/public\"}}));\n  // Port within the range:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 43, 85, {{\":path\", \"/allows\"}}));\n  // Port at the end of the range:\n  EXPECT_TRUE(egressAllowed(\"10.1.2.3\", 43, 90, {{\":path\", \"/public\"}}));\n  // Port out of range:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 79, {{\":path\", \"/allows\"}}));\n  // Port out of range:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 91, {{\":path\", \"/public\"}}));\n}\n\nTEST_F(CiliumNetworkPolicyTest, HttpPolicyUpdateToMissingSDS) {\n  std::string version;\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"0\"\n)EOF\"));\n  EXPECT_EQ(version, \"0\");\n  EXPECT_FALSE(policy_map_->exists(\"10.1.2.3\"));\n  // No policy for the pod\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n\n  // 1st update\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n)EOF\"));\n  EXPECT_EQ(version, \"1\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n  // Allowed remote ID, port, & path:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Wrong path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/public\"}}));\n\n  // 2nd update\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"2\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      http_rules:\n        http_rules:\n        - headers:\n          - name: ':path'\n            exact_match: '/allowed'\n          header_matches:\n          - name: 'bearer-token'\n            value_sds_secret: 'nonexisting-sds-secret'\n            mismatch_action: REPLACE_ON_MISMATCH\n)EOF\"));\n  EXPECT_EQ(version, \"2\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n  // Drop due to the missing SDS secret\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong remote ID:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 40, 80, {{\":path\", \"/allowed\"}}));\n  // Wrong port:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 8080, {{\":path\", \"/allowed\"}}));\n  // Wrong path:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80, {{\":path\", \"/notallowed\"}}));\n}\n\nTEST_F(CiliumNetworkPolicyTest, TlsPolicyUpdate) {\n  bool tls_socket_required;\n  bool raw_socket_allowed;\n\n  std::string version;\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"0\"\n)EOF\"));\n  EXPECT_EQ(version, \"0\");\n  EXPECT_FALSE(policy_map_->exists(\"10.1.2.3\"));\n  // No policy for the pod\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  // SNI does not make a difference\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n\n  // 1st update without TLS requirements\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n)EOF\"));\n  EXPECT_EQ(version, \"1\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  // Allowed remote ID & port:\n  EXPECT_TRUE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"example.com\", tls_socket_required,\n                                raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_TRUE(raw_socket_allowed);\n  // SNI does not matter:\n  EXPECT_TRUE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_TRUE(raw_socket_allowed);\n  // Wrong remote ID:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 40, 80, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Wrong port:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 8080, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // No egress is allowed:\n  EXPECT_FALSE(tlsEgressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // 2nd update without TLS requirements, with lower precedence wildcard port deny\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"2\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 0\n    rules:\n    - remote_policies: [ 43 ]\n      deny: true\n      precedence: 0\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      precedence: 1\n)EOF\"));\n  EXPECT_EQ(version, \"2\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  std::string expected2 = R\"EOF(ingress:\n  rules:\n    [0-0]:\n    - rules:\n      - remotes: [43]\n        deny: true\n    [80-80]:\n    - rules:\n      - remotes: [43]\n        precedence: 1\n      - remotes: [43]\n        deny: true\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected2));\n\n  // Allowed remote ID & port:\n  EXPECT_TRUE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"example.com\", tls_socket_required,\n                                raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_TRUE(raw_socket_allowed);\n  // SNI does not matter:\n  EXPECT_TRUE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_TRUE(raw_socket_allowed);\n  // Wrong remote ID:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 40, 80, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Wrong port:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 8080, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // No egress is allowed:\n  EXPECT_FALSE(tlsEgressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // 3rd update without TLS requirements, with same precedence wildcard port deny\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"3\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 0\n    rules:\n    - remote_policies: [ 43 ]\n      deny: true\n      precedence: 0\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      precedence: 0\n)EOF\"));\n  EXPECT_EQ(version, \"3\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  // Denied remote ID & port:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // SNI does not matter:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Wrong remote ID:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 40, 80, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Wrong port:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 8080, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // No egress is allowed:\n  EXPECT_FALSE(tlsEgressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // 4th update without TLS requirements, with higher precedence wildcard port deny\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"4\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 0\n    rules:\n    - remote_policies: [ 43 ]\n      deny: true\n      precedence: 1\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      precedence: 0\n)EOF\"));\n  EXPECT_EQ(version, \"4\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  // Denied remote ID & port:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // SNI does not matter:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Wrong remote ID:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 40, 80, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Wrong port:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 8080, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // No egress is allowed:\n  EXPECT_FALSE(tlsEgressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // 5th Update: TLS SNI update\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"5\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      server_names: [ \"cilium.io\", \"example.com\" ]\n)EOF\"));\n  EXPECT_EQ(version, \"5\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  // Allowed remote ID, port, SNI:\n  EXPECT_TRUE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"example.com\", tls_socket_required,\n                                raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_TRUE(raw_socket_allowed);\n  // Allowed remote ID, port, incorrect SNI:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"www.example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Allowed remote ID, port, SNI:\n  EXPECT_TRUE(\n      tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"cilium.io\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_TRUE(raw_socket_allowed);\n  // Missing SNI:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Wrong remote ID:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 40, 80, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Wrong port:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 8080, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // No egress is allowed:\n  EXPECT_FALSE(tlsEgressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // 6th update: TLS Interception update\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"6\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  egress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      server_names: [ \"cilium.io\", \"example.com\" ]\n      downstream_tls_context:\n        tls_sds_secret: \"secret1\"\n      upstream_tls_context:\n        validation_context_sds_secret: \"cacerts\"\n)EOF\"));\n  EXPECT_EQ(version, \"6\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  // Allowed remote ID, port, SNI:\n  EXPECT_TRUE(\n      tlsEgressAllowed(\"10.1.2.3\", 43, 80, \"example.com\", tls_socket_required, raw_socket_allowed));\n  EXPECT_TRUE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Allowed remote ID, port, incorrect SNI:\n  EXPECT_FALSE(tlsEgressAllowed(\"10.1.2.3\", 43, 80, \"www.example.com\", tls_socket_required,\n                                raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Allowed remote ID, port, SNI:\n  EXPECT_TRUE(\n      tlsEgressAllowed(\"10.1.2.3\", 43, 80, \"cilium.io\", tls_socket_required, raw_socket_allowed));\n  EXPECT_TRUE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Missing SNI:\n  EXPECT_FALSE(tlsEgressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Wrong remote ID:\n  EXPECT_FALSE(\n      tlsEgressAllowed(\"10.1.2.3\", 40, 80, \"example.com\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Wrong port:\n  EXPECT_FALSE(tlsEgressAllowed(\"10.1.2.3\", 43, 8080, \"example.com\", tls_socket_required,\n                                raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // No igress is allowed:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // 7th update: TLS Termination update\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"7\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      server_names: [ \"cilium.io\", \"example.com\" ]\n      downstream_tls_context:\n        tls_sds_secret: \"secret1\"\n)EOF\"));\n  EXPECT_EQ(version, \"7\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  // Allowed remote ID, port, SNI:\n  EXPECT_TRUE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"example.com\", tls_socket_required,\n                                raw_socket_allowed));\n  EXPECT_TRUE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Allowed remote ID, port, incorrect SNI:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"www.example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Allowed remote ID, port, SNI:\n  EXPECT_TRUE(\n      tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"cilium.io\", tls_socket_required, raw_socket_allowed));\n  EXPECT_TRUE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Missing SNI:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Wrong remote ID:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 40, 80, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Wrong port:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 8080, \"example.com\", tls_socket_required,\n                                 raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // No egress is allowed:\n  EXPECT_FALSE(tlsEgressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // 8th update: TLS Origination update\n  EXPECT_NO_THROW(version = updateFromYaml(R\"EOF(version_info: \"8\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  egress_per_port_policies:\n  - port: 80\n    rules:\n    - remote_policies: [ 43 ]\n      upstream_tls_context:\n        validation_context_sds_secret: \"cacerts\"\n)EOF\"));\n  EXPECT_EQ(version, \"8\");\n  EXPECT_TRUE(policy_map_->exists(\"10.1.2.3\"));\n\n  // Allowed remote ID, port, SNI:\n  EXPECT_TRUE(\n      tlsEgressAllowed(\"10.1.2.3\", 43, 80, \"example.com\", tls_socket_required, raw_socket_allowed));\n  EXPECT_TRUE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Allowed remote ID, port,  SNI:\n  EXPECT_TRUE(tlsEgressAllowed(\"10.1.2.3\", 43, 80, \"www.example.com\", tls_socket_required,\n                               raw_socket_allowed));\n  EXPECT_TRUE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Allowed remote ID, port, SNI:\n  EXPECT_TRUE(\n      tlsEgressAllowed(\"10.1.2.3\", 43, 80, \"cilium.io\", tls_socket_required, raw_socket_allowed));\n  EXPECT_TRUE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Empty SNI:\n  EXPECT_TRUE(tlsEgressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_TRUE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Wrong remote ID:\n  EXPECT_FALSE(\n      tlsEgressAllowed(\"10.1.2.3\", 40, 80, \"example.com\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n  // Wrong port:\n  EXPECT_FALSE(tlsEgressAllowed(\"10.1.2.3\", 43, 8080, \"example.com\", tls_socket_required,\n                                raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n\n  // No igress is allowed:\n  EXPECT_FALSE(tlsIngressAllowed(\"10.1.2.3\", 43, 80, \"\", tls_socket_required, raw_socket_allowed));\n  EXPECT_FALSE(tls_socket_required);\n  EXPECT_FALSE(raw_socket_allowed);\n}\n\nTEST_F(CiliumNetworkPolicyTest, EmptyRulesAllow) {\n  EXPECT_NO_THROW(updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies: [{}]\n)EOF\"));\n\n  std::string expected = R\"EOF(ingress:\n  rules:\n    [0-0]:\n    - rules:\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Ingress from 43 is denied to ports 80-4039, but allowed on ports 4040-9999:\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 79));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 80));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 81));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4039));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4040));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4041));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8079));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8080));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8081));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 9998));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 9999));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 10000));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 8080));\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 44, 8080));\n}\n\nTEST_F(CiliumNetworkPolicyTest, SNIPatternMatching) {\n  Regex::GoogleReEngine engine;\n\n  std::string exception_msg_regex = \"SniPattern: Unsupported match pattern .*\";\n  EXPECT_THROW_WITH_REGEX(SniPattern(engine, \"***\"), EnvoyException, exception_msg_regex)\n  EXPECT_THROW_WITH_REGEX(SniPattern(engine, \"example.***.com\"), EnvoyException,\n                          exception_msg_regex)\n  EXPECT_THROW_WITH_REGEX(SniPattern(engine, \"example.c**\"), EnvoyException, exception_msg_regex)\n  EXPECT_THROW_WITH_REGEX(SniPattern(engine, \"example.com.\"), EnvoyException, exception_msg_regex)\n  EXPECT_THROW_WITH_REGEX(SniPattern(engine, \"example..com\"), EnvoyException, exception_msg_regex)\n  EXPECT_THROW_WITH_REGEX(SniPattern(engine, \"^example.com$\"), EnvoyException, exception_msg_regex)\n  EXPECT_THROW_WITH_REGEX(SniPattern(engine, \".+example.com\"), EnvoyException, exception_msg_regex)\n  EXPECT_THROW_WITH_REGEX(SniPattern(engine, \"[a-zA-Z]*.example.com\"), EnvoyException,\n                          exception_msg_regex)\n  EXPECT_THROW_WITH_REGEX(SniPattern(engine, \"example.[a-zA-Z0-9]+\"), EnvoyException,\n                          exception_msg_regex)\n  EXPECT_THROW_WITH_REGEX(SniPattern(engine, \"(foo|bar|baz).example.com\"), EnvoyException,\n                          exception_msg_regex)\n\n  // Test empty pattern\n  SniPattern empty(engine, \"\");\n  EXPECT_FALSE(empty.matches(\"example.com\"));\n  EXPECT_FALSE(empty.matches(\"EXAMPLE.COM\"));\n  EXPECT_FALSE(empty.matches(\"www.example.com\"));\n  EXPECT_FALSE(empty.matches(\"notexample.com\"));\n  EXPECT_FALSE(empty.matches(\"\"));\n\n  // Test exact matches\n  SniPattern exact(engine, \"example.com\");\n  EXPECT_TRUE(exact.matches(\"example.com\"));\n  EXPECT_TRUE(exact.matches(\"EXaMpLE.COM\"));\n  EXPECT_FALSE(exact.matches(\"www.example.com\"));\n  EXPECT_FALSE(exact.matches(\"notexample.com\"));\n  EXPECT_FALSE(exact.matches(\"\"));\n\n  SniPattern exact_with_subdomain(engine, \"foo.bar.example.com\");\n  EXPECT_TRUE(exact_with_subdomain.matches(\"foo.bar.example.com\"));\n  EXPECT_TRUE(exact_with_subdomain.matches(\"foo.BaR.example.COM\"));\n  EXPECT_FALSE(exact_with_subdomain.matches(\"bar.example.com\"));\n  EXPECT_FALSE(exact_with_subdomain.matches(\"foo.bar.example.org\"));\n  EXPECT_FALSE(exact_with_subdomain.matches(\"\"));\n\n  // Test full wildcard pattern.\n  std::string full_wildcard_specifiers[] = {\"*\", \"**\"};\n  for (const std::string& pattern : full_wildcard_specifiers) {\n    SniPattern full_wildcard(engine, pattern);\n    EXPECT_TRUE(full_wildcard.matches(\"localhost\"));\n    EXPECT_TRUE(full_wildcard.matches(\"example.com\"));\n    EXPECT_TRUE(full_wildcard.matches(\"foo.007.example.com\"));\n    EXPECT_TRUE(full_wildcard.matches(\"foo.bar.example.com\"));\n    EXPECT_TRUE(full_wildcard.matches(\"foo.BaR.example.COM\"));\n    EXPECT_TRUE(full_wildcard.matches(\"foo-bar.example.com\"));\n    EXPECT_FALSE(full_wildcard.matches(\"example.com.\"));\n    EXPECT_FALSE(full_wildcard.matches(\"ex@mple.com\"));\n    EXPECT_FALSE(full_wildcard.matches(\"\"));\n  }\n\n  // Test subdomain wildcard matches\n  SniPattern subdomain_wildcard(engine, \"*.example.com\");\n  EXPECT_TRUE(subdomain_wildcard.matches(\"foo.example.com\"));\n  EXPECT_TRUE(subdomain_wildcard.matches(\"bar-007.example.com\"));\n  EXPECT_TRUE(subdomain_wildcard.matches(\"FOO.EXaMpLE.COM\"));\n  EXPECT_FALSE(subdomain_wildcard.matches(\"example.com\"));\n  EXPECT_FALSE(subdomain_wildcard.matches(\"foo.bar.example.com\"));\n  EXPECT_FALSE(subdomain_wildcard.matches(\"fooexample.com\"));\n  EXPECT_FALSE(subdomain_wildcard.matches(\"\"));\n\n  // Test wildcard label in between the subdomains\n  SniPattern wildcard_label(engine, \"sub.*.com\");\n  EXPECT_TRUE(wildcard_label.matches(\"sub.foo.com\"));\n  EXPECT_TRUE(wildcard_label.matches(\"sub.bar.com\"));\n  EXPECT_TRUE(wildcard_label.matches(\"sub.foobar.COM\"));\n  EXPECT_FALSE(wildcard_label.matches(\"test.sub.example.com\"));\n  EXPECT_FALSE(wildcard_label.matches(\"sub.com\"));\n  EXPECT_FALSE(wildcard_label.matches(\"fooexample.com\"));\n  EXPECT_FALSE(wildcard_label.matches(\"\"));\n\n  // Test wildcard label in between name\n  SniPattern mixed_wildcard_label(engine, \"sub.example-*.com\");\n  EXPECT_TRUE(mixed_wildcard_label.matches(\"sub.example-foo.com\"));\n  EXPECT_TRUE(mixed_wildcard_label.matches(\"sub.exAmPle-007.com\"));\n  EXPECT_TRUE(mixed_wildcard_label.matches(\"sub.example-foo-bar.com\"));\n  EXPECT_FALSE(mixed_wildcard_label.matches(\"sub.example.com\"));\n  EXPECT_FALSE(mixed_wildcard_label.matches(\"sub.example-foo.bar.com\"));\n\n  // Multiple wildcard labels\n  SniPattern multi_wildcard_labels(engine, \"sub.*.*.example.com\");\n  EXPECT_TRUE(multi_wildcard_labels.matches(\"sub.foo.bar.example.com\"));\n  EXPECT_TRUE(multi_wildcard_labels.matches(\"sub.foo.007.example.com\"));\n  EXPECT_FALSE(multi_wildcard_labels.matches(\"sub.foo.example.com\"));\n  EXPECT_FALSE(multi_wildcard_labels.matches(\"sub.example.com\"));\n  EXPECT_FALSE(multi_wildcard_labels.matches(\"\"));\n\n  // Test double wildcard matches\n  SniPattern double_wildcard(engine, \"sub.**.example.com\");\n  EXPECT_TRUE(double_wildcard.matches(\"sub.foo.example.com\"));\n  EXPECT_TRUE(double_wildcard.matches(\"sub.foo.bar-007.ExAmPle.com\"));\n  EXPECT_FALSE(double_wildcard.matches(\"sub.foo.example.com.extra\"));\n  EXPECT_FALSE(double_wildcard.matches(\"sub.example.com\"));\n  EXPECT_FALSE(double_wildcard.matches(\"sub..example.com\"));\n  EXPECT_FALSE(double_wildcard.matches(\"007.sub.ExAmPlE.com\"));\n  EXPECT_FALSE(double_wildcard.matches(\"foo.sub.example.com\"));\n  EXPECT_FALSE(double_wildcard.matches(\"\"));\n\n  // Test subdomain double wildcard matches\n  SniPattern subdomains_double_wildcard(engine, \"**.sub.example.com\");\n  EXPECT_TRUE(subdomains_double_wildcard.matches(\"foo.sub.example.com\"));\n  EXPECT_TRUE(subdomains_double_wildcard.matches(\"bar-007.sub.example.com\"));\n  EXPECT_TRUE(subdomains_double_wildcard.matches(\"foo.bar.sub.example.com\"));\n  EXPECT_TRUE(subdomains_double_wildcard.matches(\"007.sub.ExAmPlE.com\"));\n  EXPECT_FALSE(subdomains_double_wildcard.matches(\"sub.example.com\"));\n  EXPECT_FALSE(subdomains_double_wildcard.matches(\"foo.example.com\"));\n  EXPECT_FALSE(subdomains_double_wildcard.matches(\"\"));\n\n  // Multiple wildcard labels with multilevel subdomain prefix wildcard.\n  SniPattern all_wildcard_labels(engine, \"**.sub.*.ex*e.com\");\n  EXPECT_TRUE(all_wildcard_labels.matches(\"foo.sub.bar.example.com\"));\n  EXPECT_TRUE(all_wildcard_labels.matches(\"test.foo.sub.bar.example.com\"));\n  EXPECT_TRUE(all_wildcard_labels.matches(\"test.foo.sub.bar.exe.com\"));\n  EXPECT_FALSE(all_wildcard_labels.matches(\"test.sub.foobar.com\"));\n  EXPECT_FALSE(all_wildcard_labels.matches(\"test.sub.example.com\"));\n  EXPECT_FALSE(all_wildcard_labels.matches(\"sub.test.example.com\"));\n  EXPECT_FALSE(all_wildcard_labels.matches(\"\"));\n\n  // Multiple wildcard labels with multilevel subdomain prefix wildcard.\n  SniPattern multi_wildcard_label(engine, \"sub.*exa*.com\");\n  EXPECT_TRUE(multi_wildcard_label.matches(\"sub.example.com\"));\n  EXPECT_TRUE(multi_wildcard_label.matches(\"sub.examples.com\"));\n  EXPECT_TRUE(multi_wildcard_label.matches(\"sub.exa.com\"));\n  EXPECT_FALSE(multi_wildcard_label.matches(\"sub.foobar.com\"));\n  EXPECT_FALSE(multi_wildcard_label.matches(\"test.sub.example.com\"));\n  EXPECT_FALSE(multi_wildcard_label.matches(\"sub.test.example.com\"));\n  EXPECT_FALSE(multi_wildcard_label.matches(\"\"));\n}\n\nTEST_F(CiliumNetworkPolicyTest, OrderedRules) {\n  EXPECT_NO_THROW(updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 80\n    end_port: 8080\n    rules:\n    - remote_policies: [ 43 ]\n      precedence: 0\n      deny: true\n  - port: 4040\n    end_port: 9999\n    rules:\n    - remote_policies: [ 43 ]\n      precedence: 1\n)EOF\"));\n\n  std::string expected = R\"EOF(ingress:\n  rules:\n    [80-4039]:\n    - rules:\n      - remotes: [43]\n        deny: true\n    [4040-8080]:\n    - rules:\n      - remotes: [43]\n        precedence: 1\n      - remotes: [43]\n        deny: true\n    [8081-9999]:\n    - rules:\n      - remotes: [43]\n        precedence: 1\negress:\n  rules: []\n)EOF\";\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Ingress from 43 is denied to ports 80-4039, but allowed on ports 4040-9999:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 79));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 81));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 4039));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4040));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4041));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8079));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8080));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8081));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 9998));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 9999));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 10000));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 8080));\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 44, 8080));\n\n  // Same with policies added in reverse order\n  EXPECT_NO_THROW(updateFromYaml(R\"EOF(version_info: \"1\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - \"10.1.2.3\"\n  endpoint_id: 42\n  ingress_per_port_policies:\n  - port: 4040\n    end_port: 9999\n    rules:\n    - remote_policies: [ 43 ]\n      precedence: 1\n  - port: 80\n    end_port: 8080\n    rules:\n    - remote_policies: [ 43 ]\n      precedence: 0\n      deny: true\n)EOF\"));\n\n  EXPECT_TRUE(validate(\"10.1.2.3\", expected));\n\n  // Ingress from 43 is denied to ports 80-4039, but allowed on ports 4040-9999:\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 79));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 80));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 81));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 4039));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4040));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 4041));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8079));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8080));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 8081));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 9998));\n  EXPECT_TRUE(ingressAllowed(\"10.1.2.3\", 43, 9999));\n  EXPECT_FALSE(ingressAllowed(\"10.1.2.3\", 43, 10000));\n\n  // No egress is allowed:\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 43, 8080));\n  EXPECT_FALSE(egressAllowed(\"10.1.2.3\", 44, 8080));\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_tcp_integration.cc",
    "content": "#include \"tests/cilium_tcp_integration.h\"\n\n#include <fmt/base.h>\n#include <fmt/format.h>\n#include <spdlog/common.h>\n\n#include <memory>\n#include <string>\n\n#include \"envoy/network/address.h\"\n\n#include \"source/common/common/base_logger.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/network/address_impl.h\"\n\n#include \"test/integration/base_integration_test.h\"\n#include \"test/test_common/environment.h\"\n#include \"test/test_common/network_utility.h\"\n\n#include \"tests/bpf_metadata.h\"\n\nnamespace Envoy {\n\nconst std::string TCP_POLICY_fmt = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  policy: 3\n  ingress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      l7_proto: \"test.passer\"\n  egress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      l7_proto: \"test.passer\"\n)EOF\";\n\nCiliumTcpIntegrationTest::CiliumTcpIntegrationTest(const std::string& config)\n    : BaseIntegrationTest(GetParam(), config) {\n  enableHalfClose(true);\n#if 1\n  for (Logger::Logger& logger : Logger::Registry::loggers()) {\n    logger.setLevel(spdlog::level::trace);\n  }\n#endif\n}\n\nstd::string CiliumTcpIntegrationTest::testPolicyFmt() {\n  return TestEnvironment::substitute(TCP_POLICY_fmt, GetParam());\n}\n\nvoid CiliumTcpIntegrationTest::createEnvoy() {\n  // fake upstreams have been created by now, use the port from the 1st upstream\n  // in policy.\n  auto port = fake_upstreams_[0]->localAddress()->ip()->port();\n  policy_config = fmt::format(fmt::runtime(testPolicyFmt()), port);\n  // Pass the fake upstream address to the cilium bpf filter that will set it as\n  // an \"original destination address\".\n  if (GetParam() == Network::Address::IpVersion::v4) {\n    original_dst_address = std::make_shared<Network::Address::Ipv4Instance>(\n        Network::Test::getLoopbackAddressString(GetParam()), port);\n  } else {\n    original_dst_address = std::make_shared<Network::Address::Ipv6Instance>(\n        Network::Test::getLoopbackAddressString(GetParam()), port);\n  }\n  BaseIntegrationTest::createEnvoy();\n}\n\nvoid CiliumTcpIntegrationTest::initialize() {\n  config_helper_.renameListener(\"tcp_proxy\");\n  BaseIntegrationTest::initialize();\n}\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_tcp_integration.h",
    "content": "#pragma once\n\n#include <gtest/gtest.h>\n\n#include <string>\n\n#include \"envoy/network/address.h\"\n\n#include \"test/integration/base_integration_test.h\"\n\nnamespace Envoy {\n\nclass CiliumTcpIntegrationTest : public BaseIntegrationTest,\n                                 public testing::TestWithParam<Network::Address::IpVersion> {\npublic:\n  CiliumTcpIntegrationTest(const std::string& config);\n\n  void createEnvoy() override;\n\n  virtual std::string testPolicyFmt();\n\n  void initialize() override;\n};\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_tcp_integration_test.cc",
    "content": "#include <fmt/base.h>\n#include <fmt/format.h>\n#include <gtest/gtest-param-test.h>\n#include <gtest/gtest.h>\n\n#include <chrono>\n#include <cstdint>\n#include <cstring>\n#include <string>\n\n#include \"test/integration/fake_upstream.h\"\n#include \"test/integration/integration_tcp_client.h\"\n#include \"test/test_common/environment.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"absl/time/clock.h\"\n#include \"absl/time/time.h\"\n#include \"tests/cilium_tcp_integration.h\"\n\nnamespace Envoy {\n\n//\n// Cilium filters with TCP proxy\n//\n\n// params: is_ingress (\"true\", \"false\")\nconst std::string cilium_tcp_proxy_config_fmt = R\"EOF(\nadmin:\n  address:\n    socket_address:\n      address: 127.0.0.1\n      port_value: 0\nstatic_resources:\n  clusters:\n  - name: cluster1\n    type: ORIGINAL_DST\n    lb_policy: CLUSTER_PROVIDED\n    connect_timeout:\n      seconds: 1\n  - name: xds-grpc-cilium\n    connect_timeout:\n      seconds: 5\n    type: STATIC\n    lb_policy: ROUND_ROBIN\n    http2_protocol_options:\n    load_assignment:\n      cluster_name: xds-grpc-cilium\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              pipe:\n                path: /var/run/cilium/xds.sock\n  listeners:\n    name: listener_0\n    address:\n      socket_address:\n        address: 127.0.0.1\n        port_value: 0\n    listener_filters:\n      name: test_bpf_metadata\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.TestBpfMetadata\n        is_ingress: {0}\n    filter_chains:\n      filters:\n      - name: cilium.network\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.NetworkFilter\n          proxylib: \"proxylib/libcilium.so\"\n      - name: envoy.tcp_proxy\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy\n          stat_prefix: tcp_stats\n          cluster: cluster1\n)EOF\";\n\nclass CiliumTcpProxyIntegrationTest : public CiliumTcpIntegrationTest {\npublic:\n  CiliumTcpProxyIntegrationTest()\n      : CiliumTcpIntegrationTest(fmt::format(\n            fmt::runtime(TestEnvironment::substitute(cilium_tcp_proxy_config_fmt, GetParam())),\n            \"true\")) {}\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumTcpProxyIntegrationTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()),\n                         TestUtility::ipTestParamsToString);\n\n// Test upstream writing before downstream downstream does.\nTEST_P(CiliumTcpProxyIntegrationTest, CiliumTcpProxyUpstreamWritesFirst) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"hello\"));\n  tcp_client->waitForData(\"hello\");\n\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n  ASSERT_TRUE(fake_upstream_connection->waitForData(5));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\n// Test proxying data in both directions, and that all data is flushed properly\n// when there is an upstream disconnect.\nTEST_P(CiliumTcpProxyIntegrationTest, CiliumTcpProxyUpstreamDisconnect) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(5));\n  ASSERT_TRUE(fake_upstream_connection->write(\"world\"));\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  tcp_client->waitForHalfClose();\n  tcp_client->close();\n\n  EXPECT_EQ(\"world\", tcp_client->data());\n}\n\n// Test proxying data in both directions, and that all data is flushed properly\n// when the client disconnects.\nTEST_P(CiliumTcpProxyIntegrationTest, CiliumTcpProxyDownstreamDisconnect) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(5));\n  ASSERT_TRUE(fake_upstream_connection->write(\"world\"));\n  tcp_client->waitForData(\"world\");\n  ASSERT_TRUE(tcp_client->write(\"hello\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForData(10));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  tcp_client->waitForDisconnect();\n}\n\nTEST_P(CiliumTcpProxyIntegrationTest, CiliumTcpProxyLargeWrite) {\n  config_helper_.setBufferLimits(1024, 1024);\n  initialize();\n\n  std::string data(1024 * 16, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(data));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(data.size()));\n  ASSERT_TRUE(fake_upstream_connection->write(data));\n  tcp_client->waitForData(data);\n  tcp_client->close();\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n\n  uint32_t upstream_pauses =\n      test_server_->counter(\"cluster.cluster1.upstream_flow_control_paused_reading_total\")->value();\n  uint32_t upstream_resumes =\n      test_server_->counter(\"cluster.cluster1.upstream_flow_control_resumed_reading_total\")\n          ->value();\n  EXPECT_EQ(upstream_pauses, upstream_resumes);\n\n  uint32_t downstream_pauses =\n      test_server_->counter(\"tcp.tcp_stats.downstream_flow_control_paused_reading_total\")->value();\n  uint32_t downstream_resumes =\n      test_server_->counter(\"tcp.tcp_stats.downstream_flow_control_resumed_reading_total\")->value();\n  EXPECT_EQ(downstream_pauses, downstream_resumes);\n}\n\n// Test that a downstream flush works correctly (all data is flushed)\nTEST_P(CiliumTcpProxyIntegrationTest, CiliumTcpProxyDownstreamFlush) {\n  // Use a very large size to make sure it is larger than the kernel socket read\n  // buffer.\n  const uint32_t size = 50 * 1024 * 1024;\n  config_helper_.setBufferLimits(size / 4, size / 4);\n  initialize();\n\n  std::string data(size, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  tcp_client->readDisable(true);\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n\n  // This ensures that readDisable(true) has been run on it's thread\n  // before tcp_client starts writing.\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n\n  ASSERT_TRUE(fake_upstream_connection->write(data, true));\n\n  test_server_->waitForCounterGe(\"cluster.cluster1.upstream_flow_control_paused_reading_total\", 1);\n  EXPECT_EQ(test_server_->counter(\"cluster.cluster1.upstream_flow_control_resumed_reading_total\")\n                ->value(),\n            0);\n  tcp_client->readDisable(false);\n  tcp_client->waitForData(data);\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n\n  uint32_t upstream_pauses =\n      test_server_->counter(\"cluster.cluster1.upstream_flow_control_paused_reading_total\")->value();\n  uint32_t upstream_resumes =\n      test_server_->counter(\"cluster.cluster1.upstream_flow_control_resumed_reading_total\")\n          ->value();\n  EXPECT_GE(upstream_pauses, upstream_resumes);\n  EXPECT_GT(upstream_resumes, 0);\n}\n\n// Test that an upstream flush works correctly (all data is flushed)\nTEST_P(CiliumTcpProxyIntegrationTest, CiliumTcpProxyUpstreamFlush) {\n  // Use a very large size to make sure it is larger than the kernel socket read\n  // buffer.\n  const uint32_t size = 50 * 1024 * 1024;\n  config_helper_.setBufferLimits(size, size);\n  initialize();\n\n  std::string data(size, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->readDisable(true));\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n\n  // This ensures that fake_upstream_connection->readDisable has been run on\n  // it's thread before tcp_client starts writing.\n  tcp_client->waitForHalfClose();\n\n  ASSERT_TRUE(tcp_client->write(data, true, true, std::chrono::milliseconds(30000)));\n\n  test_server_->waitForGaugeEq(\"tcp.tcp_stats.upstream_flush_active\", 1);\n  ASSERT_TRUE(fake_upstream_connection->readDisable(false));\n  ASSERT_TRUE(fake_upstream_connection->waitForData(data.size()));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  tcp_client->waitForHalfClose();\n\n  EXPECT_EQ(test_server_->counter(\"tcp.tcp_stats.upstream_flush_total\")->value(), 1);\n  test_server_->waitForGaugeEq(\"tcp.tcp_stats.upstream_flush_active\", 0);\n}\n\n// Test that Envoy doesn't crash or assert when shutting down with an upstream\n// flush active\nTEST_P(CiliumTcpProxyIntegrationTest, CiliumTcpProxyUpstreamFlushEnvoyExit) {\n  // Use a very large size to make sure it is larger than the kernel socket read\n  // buffer.\n  const uint32_t size = 50 * 1024 * 1024;\n  config_helper_.setBufferLimits(size, size);\n  initialize();\n\n  std::string data(size, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->readDisable(true));\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n\n  // This ensures that fake_upstream_connection->readDisable has been run on\n  // it's thread before tcp_client starts writing.\n  tcp_client->waitForHalfClose();\n\n  ASSERT_TRUE(tcp_client->write(data, true));\n\n  test_server_->waitForGaugeEq(\"tcp.tcp_stats.upstream_flush_active\", 1);\n  test_server_.reset();\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n\n  // Success criteria is that no ASSERTs fire and there are no leaks.\n}\n\n//\n// Cilium Go test parser \"linetester\" with TCP proxy\n//\n\n// params: is_ingress (\"true\", \"false\")\nconst std::string cilium_linetester_config_fmt = R\"EOF(\nadmin:\n  address:\n    socket_address:\n      address: 127.0.0.1\n      port_value: 0\nstatic_resources:\n  clusters:\n  - name: cluster1\n    type: ORIGINAL_DST\n    lb_policy: CLUSTER_PROVIDED\n    connect_timeout:\n      seconds: 1\n  - name: xds-grpc-cilium\n    connect_timeout:\n      seconds: 5\n    type: STATIC\n    lb_policy: ROUND_ROBIN\n    http2_protocol_options:\n    load_assignment:\n      cluster_name: xds-grpc-cilium\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              pipe:\n                path: /var/run/cilium/xds.sock\n  listeners:\n    name: listener_0\n    address:\n      socket_address:\n        address: 127.0.0.1\n        port_value: 0\n    listener_filters:\n      name: test_bpf_metadata\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.TestBpfMetadata\n        is_ingress: {0}\n    filter_chains:\n      filters:\n      - name: cilium.network\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.NetworkFilter\n          proxylib: \"proxylib/libcilium.so\"\n      - name: envoy.tcp_proxy\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy\n          stat_prefix: tcp_stats\n          cluster: cluster1\n)EOF\";\n\nconst std::string TCP_POLICY_LINEPARSER_fmt = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  policy: 3\n  ingress_per_port_policies:\n  - port: 1\n    end_port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      l7_proto: \"test.lineparser\"\n  egress_per_port_policies:\n  - port: 1\n    end_port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      l7_proto: \"test.lineparser\"\n)EOF\";\n\nclass CiliumGoLinetesterIntegrationTest : public CiliumTcpIntegrationTest {\npublic:\n  CiliumGoLinetesterIntegrationTest()\n      : CiliumTcpIntegrationTest(fmt::format(\n            fmt::runtime(TestEnvironment::substitute(cilium_linetester_config_fmt, GetParam())),\n            \"true\")) {}\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(TCP_POLICY_LINEPARSER_fmt, GetParam());\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumGoLinetesterIntegrationTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()),\n                         TestUtility::ipTestParamsToString);\n\nstatic FakeRawConnection::ValidatorFunction noMatch(const char* data_to_not_match) {\n  return [data_to_not_match](const std::string& data) -> bool {\n    auto found = data.find(data_to_not_match);\n    return found == std::string::npos;\n  };\n}\n\nTEST_P(CiliumGoLinetesterIntegrationTest, CiliumGoLineParserUpstreamWritesFirst) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"DROP reply direction\\n\"));\n  ASSERT_TRUE(fake_upstream_connection->write(\"PASS reply direction\\n\"));\n  tcp_client->waitForData(\"PASS reply direction\\n\");\n\n  ASSERT_TRUE(tcp_client->write(\"PASS original direction\\n\"));\n  ASSERT_TRUE(\n      fake_upstream_connection->waitForData(FakeRawConnection::waitForInexactMatch(\"PASS\")));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\nTEST_P(CiliumGoLinetesterIntegrationTest, CiliumGoLineParserPartialLines) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"DROP reply \"));\n  absl::SleepFor(absl::Milliseconds(10));\n  ASSERT_TRUE(fake_upstream_connection->write(\"direction\\nPASS\"));\n  absl::SleepFor(absl::Milliseconds(10));\n  ASSERT_TRUE(fake_upstream_connection->write(\" reply direction\\n\"));\n  tcp_client->waitForData(\"PASS reply direction\\n\");\n\n  ASSERT_TRUE(tcp_client->write(\"PASS original direction\\n\"));\n  ASSERT_TRUE(fake_upstream_connection->waitForData(\n      FakeRawConnection::waitForInexactMatch(\"PASS original direction\\n\")));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\nTEST_P(CiliumGoLinetesterIntegrationTest, CiliumGoLineParserInject) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(tcp_client->write(\"INJECT reply direction\\n\"));\n  ASSERT_TRUE(tcp_client->write(\"PASS original direction\\n\"));\n  ASSERT_TRUE(fake_upstream_connection->write(\"PASS reply direction\\n\"));\n\n  // These can in principle arrive in either order\n  tcp_client->waitForData(\"PASS reply direction\\n\", false);\n  tcp_client->waitForData(\"INJECT reply direction\\n\", false);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(\n      FakeRawConnection::waitForInexactMatch(\"PASS original direction\\n\")));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\nTEST_P(CiliumGoLinetesterIntegrationTest, CiliumGoLineParserInjectPartial) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"PASS reply\"));\n  ASSERT_TRUE(tcp_client->write(\"INJECT reply direction\\n\"));\n  ASSERT_TRUE(tcp_client->write(\"PASS original direction\\n\"));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\" direction\\n\"));\n\n  // These can in principle arrive in either order\n  tcp_client->waitForData(\"PASS reply direction\\n\", false);\n  tcp_client->waitForData(\"INJECT reply direction\\n\", false);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(\n      FakeRawConnection::waitForInexactMatch(\"PASS original direction\\n\")));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\nTEST_P(CiliumGoLinetesterIntegrationTest, CiliumGoLineParserInjectPartialMultiple) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"PASS reply\"));\n  ASSERT_TRUE(tcp_client->write(\"INJECT reply direction\\n\"));\n  ASSERT_TRUE(tcp_client->write(\"DROP original direction\\n\"));\n  ASSERT_TRUE(tcp_client->write(\"INSERT original direction\\n\"));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\" direction\\n\"));\n\n  // These can in principle arrive in either order\n  absl::SleepFor(absl::Milliseconds(10));\n  tcp_client->waitForData(\"PASS reply direction\\n\", false);\n  absl::SleepFor(absl::Milliseconds(10));\n  tcp_client->waitForData(\"INJECT reply direction\\n\", false);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(\n      FakeRawConnection::waitForInexactMatch(\"INSERT original direction\\n\")));\n  ASSERT_TRUE(fake_upstream_connection->waitForData(noMatch(\"DROP\")));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"DROP reply direction\\n\"));\n  ASSERT_TRUE(fake_upstream_connection->write(\"PASS2 reply direction\\n\"));\n  tcp_client->waitForData(\"PASS2 reply direction\\n\", false);\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\n//\n// Cilium Go test parser \"blocktester\" with TCP proxy\n//\n\n// params: is_ingress (\"true\", \"false\")\nconst std::string cilium_blocktester_config_fmt = R\"EOF(\nadmin:\n  address:\n    socket_address:\n      address: 127.0.0.1\n      port_value: 0\nstatic_resources:\n  clusters:\n  - name: cluster1\n    type: ORIGINAL_DST\n    lb_policy: CLUSTER_PROVIDED\n    connect_timeout:\n      seconds: 1\n  - name: xds-grpc-cilium\n    connect_timeout:\n      seconds: 5\n    type: STATIC\n    lb_policy: ROUND_ROBIN\n    http2_protocol_options:\n    load_assignment:\n      cluster_name: xds-grpc-cilium\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              pipe:\n                path: /var/run/cilium/xds.sock\n  listeners:\n    name: listener_0\n    address:\n      socket_address:\n        address: 127.0.0.1\n        port_value: 0\n    listener_filters:\n      name: test_bpf_metadata\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.TestBpfMetadata\n        is_ingress: {0}\n    filter_chains:\n      filters:\n      - name: cilium.network\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.NetworkFilter\n          proxylib: \"proxylib/libcilium.so\"\n          proxylib_params:\n            access-log-path: \"{{ test_udsdir }}/access_log.sock\"\n      - name: envoy.tcp_proxy\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy\n          stat_prefix: tcp_stats\n          cluster: cluster1\n)EOF\";\n\nconst std::string TCP_POLICY_BLOCKPARSER_fmt = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  policy: 3\n  ingress_per_port_policies:\n  - port: 1\n    end_port: 65535\n    rules:\n    - remote_policies: [ 1 ]\n      l7_proto: \"test.blockparser\"\n  egress_per_port_policies:\n  - port: 1\n    end_port: 65535\n    rules:\n    - remote_policies: [ 1 ]\n      l7_proto: \"test.blockparser\"\n)EOF\";\n\nclass CiliumGoBlocktesterIntegrationTest : public CiliumTcpIntegrationTest {\npublic:\n  CiliumGoBlocktesterIntegrationTest()\n      : CiliumTcpIntegrationTest(fmt::format(\n            fmt::runtime(TestEnvironment::substitute(cilium_blocktester_config_fmt, GetParam())),\n            \"true\")) {}\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(TCP_POLICY_BLOCKPARSER_fmt, GetParam());\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumGoBlocktesterIntegrationTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()),\n                         TestUtility::ipTestParamsToString);\n\nTEST_P(CiliumGoBlocktesterIntegrationTest, CiliumGoBlockParserUpstreamWritesFirst) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"24:DROP reply direction\\n\"));\n  ASSERT_TRUE(fake_upstream_connection->write(\"24:PASS reply direction\\n\"));\n  tcp_client->waitForData(\"24:PASS reply direction\\n\");\n\n  ASSERT_TRUE(tcp_client->write(\"27:PASS original direction\\n\"));\n  ASSERT_TRUE(\n      fake_upstream_connection->waitForData(FakeRawConnection::waitForInexactMatch(\"PASS\")));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\nTEST_P(CiliumGoBlocktesterIntegrationTest, CiliumGoBlockParserPartialBlocks) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"24:DROP reply \"));\n  ASSERT_TRUE(fake_upstream_connection->write(\"direction\\n24:PASS\"));\n  ASSERT_TRUE(fake_upstream_connection->write(\" reply direction\\n\"));\n  tcp_client->waitForData(\"24:PASS reply direction\\n\");\n\n  ASSERT_TRUE(tcp_client->write(\"27:PASS original direction\\n\"));\n  ASSERT_TRUE(fake_upstream_connection->waitForData(\n      FakeRawConnection::waitForInexactMatch(\"27:PASS original direction\\n\")));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\nTEST_P(CiliumGoBlocktesterIntegrationTest, CiliumGoBlockParserInject) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(tcp_client->write(\"26:INJECT reply direction\\n\"));\n  ASSERT_TRUE(tcp_client->write(\"27:PASS original direction\\n\"));\n  ASSERT_TRUE(fake_upstream_connection->write(\"24:PASS reply direction\\n\"));\n\n  // These can in principle arrive in either order\n  absl::SleepFor(absl::Milliseconds(10));\n  tcp_client->waitForData(\"24:PASS reply direction\\n\", false);\n  absl::SleepFor(absl::Milliseconds(10));\n  tcp_client->waitForData(\"26:INJECT reply direction\\n\", false);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(\n      FakeRawConnection::waitForInexactMatch(\"27:PASS original direction\\n\")));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\nTEST_P(CiliumGoBlocktesterIntegrationTest, CiliumGoBlockParserInjectPartial) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"24:PASS reply\"));\n  ASSERT_TRUE(tcp_client->write(\"26:INJECT reply direction\\n\"));\n  ASSERT_TRUE(tcp_client->write(\"27:PASS original direction\\n\"));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\" direction\\n\"));\n\n  // These can in principle arrive in either order\n  tcp_client->waitForData(\"24:PASS reply direction\\n\", false);\n  tcp_client->waitForData(\"26:INJECT reply direction\\n\", false);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(\n      FakeRawConnection::waitForInexactMatch(\"27:PASS original direction\\n\")));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\nTEST_P(CiliumGoBlocktesterIntegrationTest, CiliumGoBlockParserInjectPartialMultiple) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"24:PASS reply\"));\n  ASSERT_TRUE(tcp_client->write(\"26:INJECT reply direction\\n\"));\n  ASSERT_TRUE(tcp_client->write(\"27:DROP original direction\\n\"));\n  ASSERT_TRUE(tcp_client->write(\"29:INSERT original direction\\n\"));\n\n  absl::SleepFor(absl::Milliseconds(100));\n  ASSERT_TRUE(fake_upstream_connection->write(\" dire\"));\n\n  absl::SleepFor(absl::Milliseconds(100));\n  ASSERT_TRUE(fake_upstream_connection->write(\"ction\\n\"));\n\n  // These can in principle arrive in either order\n  tcp_client->waitForData(\"24:PASS reply direction\\n\", false);\n  tcp_client->waitForData(\"26:INJECT reply direction\\n\", false);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(\n      FakeRawConnection::waitForInexactMatch(\"29:INSERT original direction\\n\")));\n  ASSERT_TRUE(fake_upstream_connection->waitForData(noMatch(\"DROP\")));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"24:DROP reply direction\\n\"));\n  ASSERT_TRUE(fake_upstream_connection->write(\"25:PASS2 reply direction\\n\"));\n  tcp_client->waitForData(\"25:PASS2 reply direction\\n\", false);\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\nTEST_P(CiliumGoBlocktesterIntegrationTest, CiliumGoBlockParserInjectBufferOverflow) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(tcp_client->write(\"26:INJECT reply direction\\n\"));\n  ASSERT_TRUE(tcp_client->write(\"27:DROP original direction\\n\"));\n\n  char buf[5000];\n  memset(buf, 'A', sizeof buf);\n  strncpy(buf, \"5000:INSERT original direction\", 30);\n  buf[sizeof buf - 1] = '\\n';\n\n  ASSERT_TRUE(tcp_client->write(buf));\n  tcp_client->waitForData(\"26:INJECT reply direction\\n\", false);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(\n      FakeRawConnection::waitForInexactMatch(\"INSERT original direction\")));\n  ASSERT_TRUE(fake_upstream_connection->waitForData(noMatch(\"DROP\")));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"24:DROP reply direction\\n\"));\n  ASSERT_TRUE(fake_upstream_connection->write(\"25:PASS2 reply direction\\n\"));\n  tcp_client->waitForData(\"25:PASS2 reply direction\\n\", false);\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_tls_http_integration_test.cc",
    "content": "#include <fmt/base.h>\n#include <fmt/format.h>\n#include <gtest/gtest-param-test.h>\n#include <gtest/gtest.h>\n\n#include <string>\n#include <utility>\n#include <vector>\n\n#include \"envoy/common/exception.h\"\n#include \"envoy/extensions/transport_sockets/tls/v3/tls.pb.h\"\n#include \"envoy/http/codec.h\" // IWYU pragma: keep\n#include \"envoy/network/address.h\"\n#include \"envoy/network/connection.h\"\n#include \"envoy/network/transport_socket.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/stats/isolated_store_impl.h\"\n#include \"source/common/tls/server_context_config_impl.h\"\n#include \"source/common/tls/server_ssl_socket.h\"\n\n#include \"test/integration/fake_upstream.h\"\n#include \"test/integration/ssl_utility.h\"\n#include \"test/test_common/environment.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"tests/cilium_http_integration.h\"\n#include \"tests/cilium_tls_integration.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\n//\n// Cilium filters with HTTP proxy & Downstream/Upstream TLS\n//\n\n// params: is_ingress (\"true\", \"false\")\nconst std::string cilium_tls_http_proxy_config_fmt = R\"EOF(\nadmin:\n  address:\n    socket_address:\n      address: 127.0.0.1\n      port_value: 0\nstatic_resources:\n  clusters:\n  - name: cluster1\n    type: ORIGINAL_DST\n    lb_policy: CLUSTER_PROVIDED\n    connect_timeout:\n      seconds: 1\n  - name: tls-cluster\n    type: ORIGINAL_DST\n    lb_policy: CLUSTER_PROVIDED\n    connect_timeout:\n      seconds: 1\n    transport_socket:\n      name: \"cilium.tls_wrapper\"\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.UpstreamTlsWrapperContext\n    typed_extension_protocol_options:\n      envoy.extensions.upstreams.http.v3.HttpProtocolOptions:\n        \"@type\": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions\n        upstream_http_protocol_options:\n          auto_sni: true\n          auto_san_validation: true\n        use_downstream_protocol_config: {{}}\n  - name: xds-grpc-cilium\n    connect_timeout:\n      seconds: 5\n    type: STATIC\n    lb_policy: ROUND_ROBIN\n    http2_protocol_options:\n    load_assignment:\n      cluster_name: xds-grpc-cilium\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              pipe:\n                path: /var/run/cilium/xds.sock\n  listeners:\n    name: http\n    address:\n      socket_address:\n        address: 127.0.0.1\n        port_value: 0\n    listener_filters:\n    - name: test_bpf_metadata\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.TestBpfMetadata\n        is_ingress: {0}\n    filter_chains:\n    - filters:\n      - name: cilium.network\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.NetworkFilter\n      - name: envoy.http_connection_manager\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager\n          stat_prefix: config_test\n          codec_type: auto\n          http_filters:\n          - name: test_l7policy\n            typed_config:\n              \"@type\": type.googleapis.com/cilium.L7Policy\n              access_log_path: \"{{ test_udsdir }}/access_log.sock\"\n          - name: envoy.filters.http.router\n          route_config:\n            name: policy_enabled\n            virtual_hosts:\n              name: integration\n              domains: \"*\"\n              routes:\n              - route:\n                  cluster: cluster1\n                  max_grpc_timeout:\n                    seconds: 0\n                    nanos: 0\n                match:\n                  prefix: \"/\"\n    - filter_chain_match:\n        transport_protocol: \"cilium:default\"\n        server_names: [ \"localhost\" ]\n      filters:\n      - name: cilium.network\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.NetworkFilter\n      - name: envoy.http_connection_manager\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager\n          stat_prefix: config_test\n          codec_type: auto\n          http_filters:\n          - name: test_l7policy\n            typed_config:\n              \"@type\": type.googleapis.com/cilium.L7Policy\n              access_log_path: \"{{ test_udsdir }}/access_log.sock\"\n          - name: envoy.filters.http.router\n          route_config:\n            name: policy_enabled\n            virtual_hosts:\n              name: integration\n              require_tls: ALL\n              domains: \"*\"\n              routes:\n              - route:\n                  cluster: tls-cluster\n                  max_grpc_timeout:\n                    seconds: 0\n                    nanos: 0\n                match:\n                  prefix: \"/\"\n      transport_socket:\n        name: \"cilium.tls_wrapper\"\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.DownstreamTlsWrapperContext\n)EOF\";\n\n// certificate_chain from test/config/integration/certs/servercert.pem\n// private_key from test/config/integration/certs/serverkey.pem\nconst std::string TLS_CERTS_CONFIG = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret\n  name: tls-certs\n  tls_certificate:\n    certificate_chain:\n      inline_string: \"-----BEGIN CERTIFICATE-----\\nMIIEhTCCA22gAwIBAgIUNzDvuqS9evGzfYlk2tSjLIefr2cwDQYJKoZIhvcNAQEL\\nBQAwdjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM\\nDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBEx5ZnQxGTAXBgNVBAsMEEx5ZnQgRW5n\\naW5lZXJpbmcxEDAOBgNVBAMMB1Rlc3QgQ0EwHhcNMjYwNDA4MTc0MTE1WhcNMjgw\\nNDA3MTc0MTE1WjCBpjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWEx\\nFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBEx5ZnQxGTAXBgNVBAsM\\nEEx5ZnQgRW5naW5lZXJpbmcxGjAYBgNVBAMMEVRlc3QgQmFja2VuZCBUZWFtMSQw\\nIgYJKoZIhvcNAQkBFhViYWNrZW5kLXRlYW1AbHlmdC5jb20wggEiMA0GCSqGSIb3\\nDQEBAQUAA4IBDwAwggEKAoIBAQCqDSZQksOORUPislq3jaHTTcw1D6ZoDSAlafDn\\n/CdSAdL97BvH7utG+PeJj0ysnfoJ0hvSE1jZOhJhoYv4JHq6ZNAxPsFTqg/rN41A\\nqXZU6rNh5qYo+s80pA4V5xe7QXuaCZb9egXq7EJR8Jhq3rMq6bbcs7P6y7Qpms/j\\nu/WNdrBVdnZneJu4eWWSjW4IFUafhYor+xuLVNy6VvUbAmGTKfi/q/0lhGRVMWHl\\n66YVQAutB748odDx2Xr2gtpIs/0kJWL4SEn7u9D9NmbX5dw8FhBQBfLJsK6exCYt\\n6liTKztSnzoS+IiqbO6tfOh0xecnPRSZPngBJylpKxfouL2BAgMBAAGjgdkwgdYw\\nDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIG\\nCCsGAQUFBwMBMFoGA1UdEQRTMFGGHnNwaWZmZTovL2x5ZnQuY29tL2JhY2tlbmQt\\ndGVhbYYXaHR0cDovL2JhY2tlbmQubHlmdC5jb22CCGx5ZnQuY29tggx3d3cubHlm\\ndC5jb20wHQYDVR0OBBYEFGFsycovKOCEx1XZynNB6OEqPaUGMB8GA1UdIwQYMBaA\\nFPmRww/tQ1LQH8ZMhrX2xn8yvmiUMA0GCSqGSIb3DQEBCwUAA4IBAQAvn7HxV9v8\\nXT4mgxXpG6hgdx2i8OtcUM029zO0uNvkmwtLIrMbbdmu1Ph+IXLaukzoD0Vj9GrQ\\nbXc6iqmH8SBLUwRcI5/WrGMnxvXi5o6fWWnjA/6TFFYGFq6s64aPdXBbZRR1Utxq\\ndkWt9DUbTSSkWXat/mo4/JfTdChlNR+ZXGwgCRRd0jYVpEXTaCMwhmjR7qfNTqjI\\nKHTHf+OYCDw2aOHU4YhfbSwt452lZJqPxSfu/aH3RtgyZlEx21vt2dZ5ZMeKy45a\\nsic7zafXL3KatSQ1K4F7DUXq5uU99uitx4aVgN8vLLgHzXks/jMyho/R9TbsGk24\\nWHrxMOOBWz1q\\n-----END CERTIFICATE-----\\n\"\n    private_key:\n      inline_string: \"-----BEGIN PRIVATE KEY-----\\nMIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAQCqDSZQksOORUPi\\nslq3jaHTTcw1D6ZoDSAlafDn/CdSAdL97BvH7utG+PeJj0ysnfoJ0hvSE1jZOhJh\\noYv4JHq6ZNAxPsFTqg/rN41AqXZU6rNh5qYo+s80pA4V5xe7QXuaCZb9egXq7EJR\\n8Jhq3rMq6bbcs7P6y7Qpms/ju/WNdrBVdnZneJu4eWWSjW4IFUafhYor+xuLVNy6\\nVvUbAmGTKfi/q/0lhGRVMWHl66YVQAutB748odDx2Xr2gtpIs/0kJWL4SEn7u9D9\\nNmbX5dw8FhBQBfLJsK6exCYt6liTKztSnzoS+IiqbO6tfOh0xecnPRSZPngBJylp\\nKxfouL2BAgMBAAECgf8G2HJyaFmhoIu+m5oZgmhPg/XJ17PiUcFkMfTrYdCIvJhI\\n56L9xeBrrMS8BOU01NHfhRzgtIMfHxPJBQYIGsUrWCq0Ca8iNi9DM3IuBKRiYyzH\\nPQjW5JcrquDJ1kOzooSJC1nIr8RijRIB81ES/EedsqAw+ydnMS+k0nML9+GAAhLC\\n/WKEdtPrxM0Uxllw5Vf9/M4zxcCDTpmD+gpchA1Ni5EqJsOILjkbQV3kM9fN93uw\\nuoEK2cMfzYAEakc1y+aizhFEw1PYA+CrOU9Vw81OsTRgwjKPsJYQdqUj3pA4vu5m\\npjCKXGv0T5pJepFBcDLoCgcSiMXoqTdAycx9vqUCgYEA3YlDGjlHdkkw30a1oNA8\\nfDEKN/CYQYTPhtMNc9YyXR7L7kfTg+33pl5dMgRu16DD4RnbYyajfPNu8TncJGGo\\n4KgYo4x+/cs+MrKrI2pnEPHfUVrLAjEkeQAkb/ujVJMs4veVfneO6CTUNKduWuEE\\njuLYRvqc+k4WiJ9/maJXLX0CgYEAxIF9sZB5/jI7avk5cOn94Tlm0VA4hEXqu5rd\\n2Xk8bxTM6lgykwXeuvlvawcZI9e+2hR4QmpV/Et3Ui0pYK1L+Zdd8rnUtd7V9i8u\\no0I8mTGEa8qsTLQwOPfIvflV+MSPl6RAwT8SPktgG6TPPIqkzfrbvx4g2CBYvoXx\\n961+n1UCgYBjxuenDvdFqi9N0J4LQN6NHNU6Xq1kjPmfAr2DV4y1biJxPn5gZDRv\\nBP86gM6fZXPzlV6/KG7n3wgvs1yYMjgKfwsh1ix4CCsKUHhN6iVjd1yaWqcmZJXF\\nva+rlA17ERJdYx88p4KAwd2lnWdRnRkddcPtLAC5p6P0gsnIm1piTQKBgQCH/4qr\\nUm9rwv4mafgcMoV3089Z++gxe2YakvMJaQOvaTjs0z+lS0G8K5e1/gKjMNSwf8w/\\nQvLhmqUpJYJmm2ligyUNMRmLCX8RU9Q2P0hLSd747xrSNz7Mnoi7Gg4rDnbGn3IF\\njI4muOn6F9UpdFbdC8n7+nEGw1RH/9HX9aYVxQKBgA1j72+E+gmFmw4xwKvQ34Ni\\nk2f/pHQCguaXiSezD/4+66tIQkD9scA4mnfuDz/GiO229+tRatW4vCEaC3i7VO2S\\nEX3MB3Cdzea9QB1agCXowt7d2PcdVmbf6j5i9iUzK8pj6fKcFGFcZHi3fy8j2TlP\\nyixlQCLUlSUGT4S7vVPu\\n-----END PRIVATE KEY-----\\n\"\n)EOF\";\n\n// trusted_ca from test/config/integration/certs/upstreamcacert.pem\nconst std::string CA_CERTS_CONFIG = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret\n  name: ca-certs\n  validation_context:\n    trusted_ca:\n      inline_string: \"-----BEGIN CERTIFICATE-----\\nMIID7zCCAtegAwIBAgIUJztoEG8UKqneO2edPl1Yiq2IjNkwDQYJKoZIhvcNAQEL\\nBQAwfzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM\\nDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBEx5ZnQxGTAXBgNVBAsMEEx5ZnQgRW5n\\naW5lZXJpbmcxGTAXBgNVBAMMEFRlc3QgVXBzdHJlYW0gQ0EwHhcNMjYwNDA4MTc0\\nMTE2WhcNMjgwNDA3MTc0MTE2WjB/MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2Fs\\naWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwETHlmdDEZ\\nMBcGA1UECwwQTHlmdCBFbmdpbmVlcmluZzEZMBcGA1UEAwwQVGVzdCBVcHN0cmVh\\nbSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKjZZotuzFxABURb\\nOSG22zv1GbghopySYNnD/JujZpP3GbHSx/urxT25AMRJYQu60m5cO7z9cL012mvx\\nLGAbSbrC1adMxCtVr/f18JHpSrzexWJNSwAFy0ZozTVmgI2jBCDhgj0e5lVqVY8Y\\nk1G3uehZqWgg5I/A+037jash82CRaJfDfzSwaZPaXsFMgUbP70cd2QKIofc2lFBv\\nk72YqvsfsyljucpxRtCKycyNiZCFxt5GicrRMg23EOUfeEjVpWTo0T+YVYGrIhnu\\n2ry5bOC9mC8zb/t/ofSkB4EpmV38liGVuN6RG2gL5gl4TIG6oAJiWcq1mbFIWlUP\\ndIXFbaMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw\\nHQYDVR0OBBYEFHJ9lGcvI3/c/MUKnEy2bFKvXgqpMB8GA1UdIwQYMBaAFHJ9lGcv\\nI3/c/MUKnEy2bFKvXgqpMA0GCSqGSIb3DQEBCwUAA4IBAQAWnA0xp1ZQS6clgBrN\\ndc9oc9qphYnNZssCNniAp9fQu+CF1FD9f3AqF9LzepVzh4X3E6Tpaxpf5xNVHg6S\\ngaAIWvvZfOilZUh2bT4+wUs9sARXOaO06YddMi5Mwjt3t+GeBQIfxFl33J4h3VT8\\nIrIlHHPdhiyWrOcGl3YYLlAvY28erq+KgqlMVbpmx/qkk3GPMZ9EswDxH92TU352\\nGtkc7QibmaK42LY+XrcoPgIMXlrELZ6lr/VPSexYgChUMJ2KoQ4NK1rgQK8+KqlX\\nDvkbWB0/CZa/wqno48cswMO0/rIhJOHXPpRmrCJC/ka+ywtMhRf1YYiROXs6iDPQ\\nOH5l\\n-----END CERTIFICATE-----\\n\"\n)EOF\";\n\nconst std::string BASIC_TLS_POLICY_fmt = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  policy: 3\n  ingress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers: [ {{ name: ':path', exact_match: '/allowed' }} ]\n        - headers: [ {{ name: ':path', safe_regex_match: {{ google_re2: {{}}, regex: '.*public$' }} }} ]\n        - headers: [ {{ name: ':authority', exact_match: 'allowedHOST' }} ]\n        - headers: [ {{ name: ':authority', safe_regex_match: {{ google_re2: {{}}, regex: '.*REGEX.*' }} }} ]\n        - headers: [ {{ name: ':method', exact_match: 'PUT' }}, {{ name: ':path', exact_match: '/public/opinions' }} ]\n      upstream_tls_context:\n        validation_context_sds_secret: ca-certs\n      downstream_tls_context:\n        tls_sds_secret: tls-certs\n        alpn_protocols: [ \"h2\", \"http/1.1\" ]\n    - remote_policies: [ 2 ]\n      http_rules:\n        http_rules:\n        - headers: [ {{ name: ':path', exact_match: '/only-2-allowed' }} ]\n  egress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      http_rules:\n        http_rules:\n        - headers: [ {{ name: ':path', exact_match: '/allowed' }} ]\n        - headers: [ {{ name: ':path', safe_regex_match: {{ google_re2: {{}}, regex: '.*public$' }} }} ]\n        - headers: [ {{ name: ':authority', exact_match: 'allowedHOST' }} ]\n        - headers: [ {{ name: ':authority', safe_regex_match: {{ google_re2: {{}}, regex: '.*REGEX.*' }} }} ]\n        - headers: [ {{ name: ':method', exact_match: 'PUT' }}, {{ name: ':path', exact_match: '/public/opinions' }} ]\n    - remote_policies: [ 2 ]\n      http_rules:\n        http_rules:\n        - headers: [ {{ name: ':path', exact_match: '/only-2-allowed' }} ]\n)EOF\";\n\n/*\n * Use filter_chain_match on a requestedServerName that is set by the cilium bpf\n * metadata filter based on the applicable network policy?\n * \"example.domain.name.namespace\"\n */\nclass CiliumHttpTLSIntegrationTest : public CiliumHttpIntegrationTest {\npublic:\n  CiliumHttpTLSIntegrationTest(const std::string& config) : CiliumHttpIntegrationTest(config) {}\n  ~CiliumHttpTLSIntegrationTest() override = default;\n\n  void initialize() override {\n    CiliumHttpIntegrationTest::initialize();\n\n    // Set up the SSL client.\n    Network::Address::InstanceConstSharedPtr address =\n        Ssl::getSslAddress(version_, lookupPort(\"http\"));\n    context_ = createClientSslTransportSocketFactory(context_manager_, *api_);\n    Network::ClientConnectionPtr ssl_client = dispatcher_->createClientConnection(\n        address, Network::Address::InstanceConstSharedPtr(),\n        context_->createTransportSocket(nullptr, nullptr), nullptr, nullptr);\n\n    ssl_client->enableHalfClose(true);\n    codec_client_ = makeHttpConnection(std::move(ssl_client));\n  }\n\n  void createUpstreams() override {\n    if (upstream_tls_) {\n      auto config = upstreamConfig();\n      config.upstream_protocol_ = FakeHttpConnection::Type::HTTP1;\n      config.enable_half_close_ = true;\n      fake_upstreams_.emplace_back(\n          new FakeUpstream(createUpstreamSslContext(), 0, version_, config));\n    } else {\n      CiliumHttpIntegrationTest::createUpstreams();\n    }\n  }\n\n  // TODO(mattklein123): This logic is duplicated in various places. Cleanup in\n  // a follow up.\n  Network::DownstreamTransportSocketFactoryPtr createUpstreamSslContext() {\n    envoy::extensions::transport_sockets::tls::v3::DownstreamTlsContext tls_context;\n    auto* common_tls_context = tls_context.mutable_common_tls_context();\n    auto* tls_cert = common_tls_context->add_tls_certificates();\n    tls_cert->mutable_certificate_chain()->set_filename(TestEnvironment::runfilesPath(\n        fmt::format(\"test/config/integration/certs/{}cert.pem\", upstream_cert_name_)));\n    tls_cert->mutable_private_key()->set_filename(TestEnvironment::runfilesPath(\n        fmt::format(\"test/config/integration/certs/{}key.pem\", upstream_cert_name_)));\n    ENVOY_LOG_MISC(debug, \"Fake Upstream Downstream TLS context: {}\", tls_context.DebugString());\n\n    auto server_config_or_error =\n        Extensions::TransportSockets::Tls::ServerContextConfigImpl::create(\n            tls_context, factory_context_, {}, false);\n    // NOLINTNEXTLINE(performance-unnecessary-copy-initialization)\n    THROW_IF_NOT_OK(server_config_or_error.status());\n    auto cfg = std::move(server_config_or_error.value());\n\n    static auto* upstream_stats_store = new Stats::IsolatedStoreImpl();\n    auto factory_or_error = Extensions::TransportSockets::Tls::ServerSslSocketFactory::create(\n        std::move(cfg), context_manager_, *upstream_stats_store->rootScope());\n    // NOLINTNEXTLINE(performance-unnecessary-copy-initialization)\n    THROW_IF_NOT_OK(factory_or_error.status());\n    return std::move(factory_or_error.value());\n  }\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(BASIC_TLS_POLICY_fmt, GetParam());\n  }\n\n  std::vector<std::pair<std::string, std::string>> testSecrets() override {\n    return std::vector<std::pair<std::string, std::string>>{\n        {\"tls-certs\", TLS_CERTS_CONFIG},\n        {\"ca-certs\", CA_CERTS_CONFIG},\n    };\n  }\n\n  void denied(Http::TestRequestHeaderMapImpl&& headers) {\n    initialize();\n    auto response = codec_client_->makeHeaderOnlyRequest(headers);\n    ASSERT_TRUE(response->waitForEndStream());\n\n    EXPECT_TRUE(response->complete());\n    EXPECT_EQ(\"403\", response->headers().getStatusValue());\n    cleanupUpstreamAndDownstream();\n  }\n\n  void failed(Http::TestRequestHeaderMapImpl&& headers) {\n    initialize();\n    auto response = codec_client_->makeHeaderOnlyRequest(headers);\n    ASSERT_TRUE(response->waitForEndStream());\n\n    EXPECT_TRUE(response->complete());\n    EXPECT_EQ(\"503\", response->headers().getStatusValue());\n    cleanupUpstreamAndDownstream();\n  }\n\n  void accepted(Http::TestRequestHeaderMapImpl&& headers) {\n    initialize();\n    auto response = sendRequestAndWaitForResponse(headers, 0, default_response_headers_, 0);\n\n    EXPECT_TRUE(response->complete());\n    EXPECT_EQ(\"200\", response->headers().getStatusValue());\n    EXPECT_TRUE(upstream_request_->complete());\n    EXPECT_EQ(0, upstream_request_->bodyLength());\n    cleanupUpstreamAndDownstream();\n  }\n\n  void acceptedWithSslGaugeCheck(Http::TestRequestHeaderMapImpl&& headers) {\n    initialize();\n    auto response = sendRequestAndWaitForResponse(headers, 0, default_response_headers_, 0);\n\n    EXPECT_TRUE(response->complete());\n    EXPECT_EQ(\"200\", response->headers().getStatusValue());\n    EXPECT_TRUE(upstream_request_->complete());\n    EXPECT_EQ(0, upstream_request_->bodyLength());\n\n    test_server_->waitForGaugeEq(\"http.config_test.downstream_cx_ssl_active\", 1);\n\n    cleanupUpstreamAndDownstream();\n\n    test_server_->waitForGaugeEq(\"http.config_test.downstream_cx_ssl_active\", 0);\n  }\n\n  // Upstream\n  bool upstream_tls_{true};\n  std::string upstream_cert_name_{\"upstreamlocalhost\"};\n\n  // Downstream\n  Network::UpstreamTransportSocketFactoryPtr context_;\n};\n\nclass CiliumTLSHttpIntegrationTest : public CiliumHttpTLSIntegrationTest {\npublic:\n  CiliumTLSHttpIntegrationTest()\n      : CiliumHttpTLSIntegrationTest(fmt::format(\n            fmt::runtime(TestEnvironment::substitute(cilium_tls_http_proxy_config_fmt, GetParam())),\n            \"true\")) {}\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumTLSHttpIntegrationTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()));\n\nTEST_P(CiliumTLSHttpIntegrationTest, DeniedPathPrefix) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/prefix\"}, {\":authority\", \"localhost\"}});\n}\n\nTEST_P(CiliumTLSHttpIntegrationTest, AllowedPathPrefix) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/allowed\"}, {\":authority\", \"localhost\"}});\n}\n\nTEST_P(CiliumTLSHttpIntegrationTest, AllowedPathPrefixTracksSslActiveGauge) {\n  acceptedWithSslGaugeCheck(\n      {{\":method\", \"GET\"}, {\":path\", \"/allowed\"}, {\":authority\", \"localhost\"}});\n}\n\nTEST_P(CiliumTLSHttpIntegrationTest, AllowedPathPrefixStrippedHeader) {\n  accepted({{\":method\", \"GET\"},\n            {\":path\", \"/allowed\"},\n            {\":authority\", \"localhost\"},\n            {\"x-envoy-original-dst-host\", \"1.1.1.1:9999\"}});\n}\n\nTEST_P(CiliumTLSHttpIntegrationTest, AllowedPathRegex) {\n  accepted({{\":method\", \"GET\"}, {\":path\", \"/maybe/public\"}, {\":authority\", \"localhost\"}});\n}\n\nTEST_P(CiliumTLSHttpIntegrationTest, DeniedPath) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"localhost\"}});\n}\n\nTEST_P(CiliumTLSHttpIntegrationTest, DeniedMethod) {\n  denied({{\":method\", \"POST\"}, {\":path\", \"/maybe/private\"}, {\":authority\", \"localhost\"}});\n}\n\nTEST_P(CiliumTLSHttpIntegrationTest, AcceptedMethod) {\n  accepted({{\":method\", \"PUT\"}, {\":path\", \"/public/opinions\"}, {\":authority\", \"localhost\"}});\n}\n\nTEST_P(CiliumTLSHttpIntegrationTest, L3DeniedPath) {\n  denied({{\":method\", \"GET\"}, {\":path\", \"/only-2-allowed\"}, {\":authority\", \"localhost\"}});\n}\n\n} // namespace Cilium\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_tls_integration.cc",
    "content": "#include \"tests/cilium_tls_integration.h\"\n\n#include <gmock/gmock-actions.h>\n#include <gmock/gmock-spec-builders.h>\n\n#include <string>\n#include <utility>\n\n#include \"envoy/api/api.h\"\n#include \"envoy/common/exception.h\"\n#include \"envoy/extensions/transport_sockets/tls/v3/tls.pb.h\"\n#include \"envoy/network/transport_socket.h\"\n#include \"envoy/ssl/context_manager.h\"\n\n#include \"source/common/tls/client_ssl_socket.h\"\n#include \"source/common/tls/context_config_impl.h\"\n\n#include \"test/integration/server.h\"\n#include \"test/mocks/server/admin.h\"\n#include \"test/mocks/server/server_factory_context.h\"\n#include \"test/test_common/environment.h\"\n#include \"test/test_common/utility.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nNetwork::UpstreamTransportSocketFactoryPtr\ncreateClientSslTransportSocketFactory(Ssl::ContextManager& context_manager, Api::Api& api) {\n  std::string yaml_plain = R\"EOF(\n  common_tls_context:\n    validation_context:\n      trusted_ca:\n        filename: \"{{ test_rundir }}/test/config/integration/certs/cacert.pem\"\n)EOF\";\n\n  envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext tls_context;\n  TestUtility::loadFromYaml(TestEnvironment::substitute(yaml_plain), tls_context);\n\n  NiceMock<Server::Configuration::MockTransportSocketFactoryContext> mock_factory_ctx;\n  ON_CALL(mock_factory_ctx.server_context_, api()).WillByDefault(testing::ReturnRef(api));\n  auto cfg_or_error = Extensions::TransportSockets::Tls::ClientContextConfigImpl::create(\n      tls_context, mock_factory_ctx);\n  // NOLINTNEXTLINE(performance-unnecessary-copy-initialization)\n  THROW_IF_NOT_OK(cfg_or_error.status());\n  auto cfg = std::move(cfg_or_error.value());\n  static auto* client_stats_store = new Stats::TestIsolatedStoreImpl();\n  auto factory_or_error = Extensions::TransportSockets::Tls::ClientSslSocketFactory::create(\n      std::move(cfg), context_manager, *client_stats_store->rootScope());\n  // NOLINTNEXTLINE(performance-unnecessary-copy-initialization)\n  THROW_IF_NOT_OK(factory_or_error.status());\n  return std::move(factory_or_error.value());\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_tls_integration.h",
    "content": "#pragma once\n\n#include \"envoy/api/api.h\"\n#include \"envoy/network/transport_socket.h\"\n#include \"envoy/ssl/context_manager.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nNetwork::UpstreamTransportSocketFactoryPtr\ncreateClientSslTransportSocketFactory(Ssl::ContextManager& context_manager, Api::Api& api);\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_tls_tcp_integration_test.cc",
    "content": "#include <fmt/base.h>\n#include <fmt/format.h>\n#include <gmock/gmock-cardinalities.h>\n#include <gmock/gmock-spec-builders.h>\n#include <gtest/gtest-param-test.h>\n#include <gtest/gtest.h>\n\n#include <chrono>\n#include <cstdint>\n#include <functional>\n#include <memory>\n#include <string>\n#include <vector>\n\n#include \"envoy/buffer/buffer.h\"\n#include \"envoy/event/dispatcher.h\"\n#include \"envoy/http/codec.h\" // IWYU pragma: keep\n#include \"envoy/network/address.h\"\n#include \"envoy/network/connection.h\"\n#include \"envoy/network/transport_socket.h\"\n#include \"envoy/ssl/connection.h\"\n\n#include \"source/common/buffer/buffer_impl.h\"\n#include \"source/common/buffer/watermark_buffer.h\"\n#include \"source/common/common/assert.h\"\n\n#include \"test/integration/fake_upstream.h\"\n#include \"test/integration/integration_tcp_client.h\"\n#include \"test/integration/ssl_utility.h\"\n#include \"test/integration/utility.h\"\n#include \"test/mocks/buffer/mocks.h\"\n#include \"test/mocks/server/admin.h\"\n#include \"test/test_common/environment.h\"\n#include \"test/test_common/test_time_system.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"tests/cilium_tcp_integration.h\"\n#include \"tests/cilium_tls_integration.h\"\n\nusing testing::AtLeast;\n\nnamespace Envoy {\nnamespace Cilium {\n\n//\n// Cilium filters with TCP proxy & Upstream TLS\n//\n\n// params: is_ingress (\"true\", \"false\")\nconst std::string cilium_tls_tcp_proxy_config_fmt = R\"EOF(\nadmin:\n  address:\n    socket_address:\n      address: 127.0.0.1\n      port_value: 0\nstatic_resources:\n  clusters:\n  - name: tls-cluster\n    type: ORIGINAL_DST\n    lb_policy: CLUSTER_PROVIDED\n    connect_timeout:\n      seconds: 1\n    transport_socket:\n      name: \"cilium.tls_wrapper\"\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.UpstreamTlsWrapperContext\n  - name: xds-grpc-cilium\n    connect_timeout:\n      seconds: 5\n    type: STATIC\n    lb_policy: ROUND_ROBIN\n    http2_protocol_options:\n    load_assignment:\n      cluster_name: xds-grpc-cilium\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              pipe:\n                path: /var/run/cilium/xds.sock\n  listeners:\n    name: listener_0\n    address:\n      socket_address:\n        address: 127.0.0.1\n        port_value: 0\n    listener_filters:\n    - name: test_bpf_metadata\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.TestBpfMetadata\n        is_ingress: {0}\n    filter_chains:\n    - filters:\n      - name: cilium.network\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.NetworkFilter\n          proxylib: \"proxylib/libcilium.so\"\n      - name: envoy.tcp_proxy\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy\n          stat_prefix: tcp_stats\n          cluster: tls-cluster\n)EOF\";\n\nclass CiliumTLSIntegrationTest : public CiliumTcpIntegrationTest {\npublic:\n  CiliumTLSIntegrationTest(const std::string& config) : CiliumTcpIntegrationTest(config) {\n#if 0\n    for (Logger::Logger& logger : Logger::Registry::loggers()) {\n      logger.setLevel(spdlog::level::trace);\n    }\n#endif\n  }\n\n  void initialize() override {\n    CiliumTcpIntegrationTest::initialize();\n\n    payload_reader_ = std::make_shared<WaitForPayloadReader>(*dispatcher_);\n  }\n\n  AssertionResult\n  waitForTlsHandshake(const FakeRawConnection& connection,\n                      std::chrono::milliseconds timeout = TestUtility::DefaultTimeout) {\n    Event::TestTimeSystem::RealTimeBound bound(timeout);\n    while (true) {\n      const auto downstream_timing = connection.connection().streamInfo().downstreamTiming();\n      if (downstream_timing.downstreamHandshakeComplete().has_value()) {\n        return AssertionSuccess();\n      }\n\n      // client-side TLS I/O will not progress unless the test-thread dispatcher runs\n      dispatcher_->run(Event::Dispatcher::RunType::NonBlock);\n\n      timeSystem().advanceTimeWait(std::chrono::milliseconds(1));\n\n      if (timeout != std::chrono::milliseconds::zero() && !bound.withinBound()) {\n        const Ssl::ConnectionInfoConstSharedPtr ssl = connection.connection().ssl();\n        return AssertionFailure() << \"Timed out waiting for TLS handshake. ssl=\" << (ssl != nullptr)\n                                  << \" handshake_complete=\"\n                                  << downstream_timing.downstreamHandshakeComplete().has_value()\n                                  << \" tls_version=\" << (ssl != nullptr ? ssl->tlsVersion() : \"\")\n                                  << \" ciphersuite=\"\n                                  << (ssl != nullptr ? ssl->ciphersuiteString() : \"\");\n      }\n    }\n  }\n\n  void createUpstreams() override {\n    auto config = upstreamConfig();\n    config.upstream_protocol_ = FakeHttpConnection::Type::HTTP1;\n    config.enable_half_close_ = true;\n    fake_upstreams_.emplace_back(new FakeUpstream(createUpstreamSslContext(), 0, version_, config));\n  }\n\n  Network::DownstreamTransportSocketFactoryPtr createUpstreamSslContext() {\n    return Ssl::createFakeUpstreamSslContext(upstream_cert_name_, context_manager_,\n                                             factory_context_);\n  }\n\n  void setupConnections() {\n    initialize();\n    fake_upstreams_[0]->setReadDisableOnNewConnection(false);\n\n    // Set up the mock buffer factory so the newly created SSL client will have\n    // a mock write buffer. This allows us to track the bytes actually written\n    // to the socket.\n\n    EXPECT_CALL(*mock_buffer_factory_, createBuffer_(_, _, _))\n        .Times(AtLeast(1))\n        .WillOnce(Invoke([&](std::function<void()> below_low, std::function<void()> above_high,\n                             std::function<void()> above_overflow) -> Buffer::Instance* {\n          client_write_buffer_ =\n              new NiceMock<MockWatermarkBuffer>(below_low, above_high, above_overflow);\n          ON_CALL(*client_write_buffer_, move(_))\n              .WillByDefault(Invoke(client_write_buffer_, &MockWatermarkBuffer::baseMove));\n          ON_CALL(*client_write_buffer_, drain(_))\n              .WillByDefault(Invoke(client_write_buffer_, &MockWatermarkBuffer::trackDrains));\n          return client_write_buffer_;\n        }))\n        .WillRepeatedly(Invoke([](std::function<void()> below_low, std::function<void()> above_high,\n                                  std::function<void()> above_overflow) -> Buffer::Instance* {\n          return new Buffer::WatermarkBuffer(below_low, above_high, above_overflow);\n        }));\n    // Set up the SSL client.\n    Network::Address::InstanceConstSharedPtr address =\n        Ssl::getSslAddress(version_, lookupPort(\"tcp_proxy\"));\n    context_ = createClientSslTransportSocketFactory(context_manager_, *api_);\n    ssl_client_ = dispatcher_->createClientConnection(\n        address, Network::Address::InstanceConstSharedPtr(),\n        context_->createTransportSocket(nullptr, nullptr), nullptr, nullptr);\n\n    // Perform the SSL handshake. Loopback is whitelisted in tcp_proxy.json for\n    // the ssl_auth filter so there will be no pause waiting on auth data.\n    ssl_client_->addConnectionCallbacks(connect_callbacks_);\n    ssl_client_->enableHalfClose(true);\n    ssl_client_->addReadFilter(payload_reader_);\n    ssl_client_->connect();\n    while (!connect_callbacks_.connected()) {\n      dispatcher_->run(Event::Dispatcher::RunType::NonBlock);\n    }\n  }\n\n  // Test proxying data in both directions with envoy doing TCP and TLS\n  // termination.\n  void sendAndReceiveTlsData(const std::string& data_to_send_upstream,\n                             const std::string& data_to_send_downstream) {\n    FakeRawConnectionPtr fake_upstream_connection;\n    AssertionResult result = fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection);\n    RELEASE_ASSERT(result, result.message());\n\n    // Wait for TLS handshake first to get a clear error signal if it never completes.\n    ASSERT_TRUE(waitForTlsHandshake(*fake_upstream_connection));\n\n    // Ship some data upstream.\n    Buffer::OwnedImpl buffer(data_to_send_upstream);\n    ssl_client_->write(buffer, false);\n    while (client_write_buffer_->bytesDrained() != data_to_send_upstream.size()) {\n      dispatcher_->run(Event::Dispatcher::RunType::NonBlock);\n    }\n\n    // Make sure the data makes it upstream.\n    ASSERT_TRUE(fake_upstream_connection->waitForData(data_to_send_upstream.size()));\n\n    // Now send data downstream and make sure it arrives.\n    ASSERT_TRUE(fake_upstream_connection->write(data_to_send_downstream));\n    payload_reader_->setDataToWaitFor(data_to_send_downstream);\n    ssl_client_->dispatcher().run(Event::Dispatcher::RunType::Block);\n\n    // Clean up.\n    Buffer::OwnedImpl empty_buffer;\n    ssl_client_->write(empty_buffer, true);\n    dispatcher_->run(Event::Dispatcher::RunType::NonBlock);\n    ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n    ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n    ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n    ssl_client_->dispatcher().run(Event::Dispatcher::RunType::Block);\n    EXPECT_TRUE(payload_reader_->readLastByte());\n    EXPECT_TRUE(connect_callbacks_.closed());\n\n    // FakeRawConnection removes its read filter on the fake-upstream dispatcher in its\n    // destructor, so drop it before we start tearing down the client side and the fixture.\n    fake_upstream_connection.reset();\n    teardownConnections();\n  }\n\n  void teardownConnections() {\n    ssl_client_.reset();\n    // Client connection teardown uses deferred delete on the test dispatcher. Flush one\n    // non-blocking pass before releasing the helper objects that were attached to the connection.\n    dispatcher_->run(Event::Dispatcher::RunType::NonBlock);\n    context_.reset();\n    client_write_buffer_ = nullptr;\n    payload_reader_.reset();\n    connect_callbacks_.reset();\n  }\n\n  // Upstream\n  std::string upstream_cert_name_{\"upstreamlocalhost\"};\n\n  // Downstream\n  std::shared_ptr<WaitForPayloadReader> payload_reader_;\n  MockWatermarkBuffer* client_write_buffer_;\n  Network::UpstreamTransportSocketFactoryPtr context_;\n  ConnectionStatusCallbacks connect_callbacks_;\n  Network::ClientConnectionPtr ssl_client_;\n};\n\n// upstream_tls_context tructed_ca from test/config/integration/certs/upstreamcacert.pem\n// downstream_tls_context certificate_chain from test/config/integration/certs/servercert.pem\n// downstream_tls_context private_key from test/config/integration/certs/serverkey.pem\nconst std::string TCP_POLICY_UPSTREAM_TLS_fmt = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  policy: 3\n  ingress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n      upstream_tls_context:\n        trusted_ca: \"-----BEGIN CERTIFICATE-----\\nMIID7zCCAtegAwIBAgIUJztoEG8UKqneO2edPl1Yiq2IjNkwDQYJKoZIhvcNAQEL\\nBQAwfzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM\\nDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBEx5ZnQxGTAXBgNVBAsMEEx5ZnQgRW5n\\naW5lZXJpbmcxGTAXBgNVBAMMEFRlc3QgVXBzdHJlYW0gQ0EwHhcNMjYwNDA4MTc0\\nMTE2WhcNMjgwNDA3MTc0MTE2WjB/MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2Fs\\naWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwETHlmdDEZ\\nMBcGA1UECwwQTHlmdCBFbmdpbmVlcmluZzEZMBcGA1UEAwwQVGVzdCBVcHN0cmVh\\nbSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKjZZotuzFxABURb\\nOSG22zv1GbghopySYNnD/JujZpP3GbHSx/urxT25AMRJYQu60m5cO7z9cL012mvx\\nLGAbSbrC1adMxCtVr/f18JHpSrzexWJNSwAFy0ZozTVmgI2jBCDhgj0e5lVqVY8Y\\nk1G3uehZqWgg5I/A+037jash82CRaJfDfzSwaZPaXsFMgUbP70cd2QKIofc2lFBv\\nk72YqvsfsyljucpxRtCKycyNiZCFxt5GicrRMg23EOUfeEjVpWTo0T+YVYGrIhnu\\n2ry5bOC9mC8zb/t/ofSkB4EpmV38liGVuN6RG2gL5gl4TIG6oAJiWcq1mbFIWlUP\\ndIXFbaMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw\\nHQYDVR0OBBYEFHJ9lGcvI3/c/MUKnEy2bFKvXgqpMB8GA1UdIwQYMBaAFHJ9lGcv\\nI3/c/MUKnEy2bFKvXgqpMA0GCSqGSIb3DQEBCwUAA4IBAQAWnA0xp1ZQS6clgBrN\\ndc9oc9qphYnNZssCNniAp9fQu+CF1FD9f3AqF9LzepVzh4X3E6Tpaxpf5xNVHg6S\\ngaAIWvvZfOilZUh2bT4+wUs9sARXOaO06YddMi5Mwjt3t+GeBQIfxFl33J4h3VT8\\nIrIlHHPdhiyWrOcGl3YYLlAvY28erq+KgqlMVbpmx/qkk3GPMZ9EswDxH92TU352\\nGtkc7QibmaK42LY+XrcoPgIMXlrELZ6lr/VPSexYgChUMJ2KoQ4NK1rgQK8+KqlX\\nDvkbWB0/CZa/wqno48cswMO0/rIhJOHXPpRmrCJC/ka+ywtMhRf1YYiROXs6iDPQ\\nOH5l\\n-----END CERTIFICATE-----\\n\"\n      downstream_tls_context:\n        certificate_chain: \"-----BEGIN CERTIFICATE-----\\nMIIEhTCCA22gAwIBAgIUNzDvuqS9evGzfYlk2tSjLIefr2cwDQYJKoZIhvcNAQEL\\nBQAwdjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM\\nDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBEx5ZnQxGTAXBgNVBAsMEEx5ZnQgRW5n\\naW5lZXJpbmcxEDAOBgNVBAMMB1Rlc3QgQ0EwHhcNMjYwNDA4MTc0MTE1WhcNMjgw\\nNDA3MTc0MTE1WjCBpjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWEx\\nFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBEx5ZnQxGTAXBgNVBAsM\\nEEx5ZnQgRW5naW5lZXJpbmcxGjAYBgNVBAMMEVRlc3QgQmFja2VuZCBUZWFtMSQw\\nIgYJKoZIhvcNAQkBFhViYWNrZW5kLXRlYW1AbHlmdC5jb20wggEiMA0GCSqGSIb3\\nDQEBAQUAA4IBDwAwggEKAoIBAQCqDSZQksOORUPislq3jaHTTcw1D6ZoDSAlafDn\\n/CdSAdL97BvH7utG+PeJj0ysnfoJ0hvSE1jZOhJhoYv4JHq6ZNAxPsFTqg/rN41A\\nqXZU6rNh5qYo+s80pA4V5xe7QXuaCZb9egXq7EJR8Jhq3rMq6bbcs7P6y7Qpms/j\\nu/WNdrBVdnZneJu4eWWSjW4IFUafhYor+xuLVNy6VvUbAmGTKfi/q/0lhGRVMWHl\\n66YVQAutB748odDx2Xr2gtpIs/0kJWL4SEn7u9D9NmbX5dw8FhBQBfLJsK6exCYt\\n6liTKztSnzoS+IiqbO6tfOh0xecnPRSZPngBJylpKxfouL2BAgMBAAGjgdkwgdYw\\nDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIG\\nCCsGAQUFBwMBMFoGA1UdEQRTMFGGHnNwaWZmZTovL2x5ZnQuY29tL2JhY2tlbmQt\\ndGVhbYYXaHR0cDovL2JhY2tlbmQubHlmdC5jb22CCGx5ZnQuY29tggx3d3cubHlm\\ndC5jb20wHQYDVR0OBBYEFGFsycovKOCEx1XZynNB6OEqPaUGMB8GA1UdIwQYMBaA\\nFPmRww/tQ1LQH8ZMhrX2xn8yvmiUMA0GCSqGSIb3DQEBCwUAA4IBAQAvn7HxV9v8\\nXT4mgxXpG6hgdx2i8OtcUM029zO0uNvkmwtLIrMbbdmu1Ph+IXLaukzoD0Vj9GrQ\\nbXc6iqmH8SBLUwRcI5/WrGMnxvXi5o6fWWnjA/6TFFYGFq6s64aPdXBbZRR1Utxq\\ndkWt9DUbTSSkWXat/mo4/JfTdChlNR+ZXGwgCRRd0jYVpEXTaCMwhmjR7qfNTqjI\\nKHTHf+OYCDw2aOHU4YhfbSwt452lZJqPxSfu/aH3RtgyZlEx21vt2dZ5ZMeKy45a\\nsic7zafXL3KatSQ1K4F7DUXq5uU99uitx4aVgN8vLLgHzXks/jMyho/R9TbsGk24\\nWHrxMOOBWz1q\\n-----END CERTIFICATE-----\\n\"\n        private_key: \"-----BEGIN PRIVATE KEY-----\\nMIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAQCqDSZQksOORUPi\\nslq3jaHTTcw1D6ZoDSAlafDn/CdSAdL97BvH7utG+PeJj0ysnfoJ0hvSE1jZOhJh\\noYv4JHq6ZNAxPsFTqg/rN41AqXZU6rNh5qYo+s80pA4V5xe7QXuaCZb9egXq7EJR\\n8Jhq3rMq6bbcs7P6y7Qpms/ju/WNdrBVdnZneJu4eWWSjW4IFUafhYor+xuLVNy6\\nVvUbAmGTKfi/q/0lhGRVMWHl66YVQAutB748odDx2Xr2gtpIs/0kJWL4SEn7u9D9\\nNmbX5dw8FhBQBfLJsK6exCYt6liTKztSnzoS+IiqbO6tfOh0xecnPRSZPngBJylp\\nKxfouL2BAgMBAAECgf8G2HJyaFmhoIu+m5oZgmhPg/XJ17PiUcFkMfTrYdCIvJhI\\n56L9xeBrrMS8BOU01NHfhRzgtIMfHxPJBQYIGsUrWCq0Ca8iNi9DM3IuBKRiYyzH\\nPQjW5JcrquDJ1kOzooSJC1nIr8RijRIB81ES/EedsqAw+ydnMS+k0nML9+GAAhLC\\n/WKEdtPrxM0Uxllw5Vf9/M4zxcCDTpmD+gpchA1Ni5EqJsOILjkbQV3kM9fN93uw\\nuoEK2cMfzYAEakc1y+aizhFEw1PYA+CrOU9Vw81OsTRgwjKPsJYQdqUj3pA4vu5m\\npjCKXGv0T5pJepFBcDLoCgcSiMXoqTdAycx9vqUCgYEA3YlDGjlHdkkw30a1oNA8\\nfDEKN/CYQYTPhtMNc9YyXR7L7kfTg+33pl5dMgRu16DD4RnbYyajfPNu8TncJGGo\\n4KgYo4x+/cs+MrKrI2pnEPHfUVrLAjEkeQAkb/ujVJMs4veVfneO6CTUNKduWuEE\\njuLYRvqc+k4WiJ9/maJXLX0CgYEAxIF9sZB5/jI7avk5cOn94Tlm0VA4hEXqu5rd\\n2Xk8bxTM6lgykwXeuvlvawcZI9e+2hR4QmpV/Et3Ui0pYK1L+Zdd8rnUtd7V9i8u\\no0I8mTGEa8qsTLQwOPfIvflV+MSPl6RAwT8SPktgG6TPPIqkzfrbvx4g2CBYvoXx\\n961+n1UCgYBjxuenDvdFqi9N0J4LQN6NHNU6Xq1kjPmfAr2DV4y1biJxPn5gZDRv\\nBP86gM6fZXPzlV6/KG7n3wgvs1yYMjgKfwsh1ix4CCsKUHhN6iVjd1yaWqcmZJXF\\nva+rlA17ERJdYx88p4KAwd2lnWdRnRkddcPtLAC5p6P0gsnIm1piTQKBgQCH/4qr\\nUm9rwv4mafgcMoV3089Z++gxe2YakvMJaQOvaTjs0z+lS0G8K5e1/gKjMNSwf8w/\\nQvLhmqUpJYJmm2ligyUNMRmLCX8RU9Q2P0hLSd747xrSNz7Mnoi7Gg4rDnbGn3IF\\njI4muOn6F9UpdFbdC8n7+nEGw1RH/9HX9aYVxQKBgA1j72+E+gmFmw4xwKvQ34Ni\\nk2f/pHQCguaXiSezD/4+66tIQkD9scA4mnfuDz/GiO229+tRatW4vCEaC3i7VO2S\\nEX3MB3Cdzea9QB1agCXowt7d2PcdVmbf6j5i9iUzK8pj6fKcFGFcZHi3fy8j2TlP\\nyixlQCLUlSUGT4S7vVPu\\n-----END PRIVATE KEY-----\\n\"\n  egress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n)EOF\";\n\nclass CiliumTLSProxyIntegrationTest : public CiliumTLSIntegrationTest {\npublic:\n  CiliumTLSProxyIntegrationTest()\n      : CiliumTLSIntegrationTest(fmt::format(\n            fmt::runtime(TestEnvironment::substitute(cilium_tls_tcp_proxy_config_fmt, GetParam())),\n            \"true\")) {}\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(TCP_POLICY_UPSTREAM_TLS_fmt, GetParam());\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumTLSProxyIntegrationTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()),\n                         TestUtility::ipTestParamsToString);\n\n// Test upstream writing before downstream does.\nTEST_P(CiliumTLSProxyIntegrationTest, CiliumTLSProxyUpstreamWritesFirst) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n  // Wait for TLS handshake first to get a clear error signal if it never completes.\n  ASSERT_TRUE(waitForTlsHandshake(*fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"hello\"));\n  tcp_client->waitForData(\"hello\");\n\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n  ASSERT_TRUE(fake_upstream_connection->waitForData(5));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\n// Test proxying data in both directions, and that all data is flushed properly\n// when there is an upstream disconnect.\nTEST_P(CiliumTLSProxyIntegrationTest, CiliumTLSProxyUpstreamDisconnect) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n  // Wait for TLS handshake first to get a clear error signal if it never completes.\n  ASSERT_TRUE(waitForTlsHandshake(*fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(5));\n  ASSERT_TRUE(fake_upstream_connection->write(\"world\"));\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  tcp_client->waitForHalfClose();\n  tcp_client->close();\n\n  EXPECT_EQ(\"world\", tcp_client->data());\n}\n\n// Test proxying data in both directions, and that all data is flushed properly\n// when the client disconnects.\nTEST_P(CiliumTLSProxyIntegrationTest, CiliumTcpProxyDownstreamDisconnect) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n  // Wait for TLS handshake first to get a clear error signal if it never completes.\n  ASSERT_TRUE(waitForTlsHandshake(*fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(5));\n  ASSERT_TRUE(fake_upstream_connection->write(\"world\"));\n  tcp_client->waitForData(\"world\");\n  ASSERT_TRUE(tcp_client->write(\"hello\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForData(10));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  tcp_client->waitForDisconnect();\n}\n\nTEST_P(CiliumTLSProxyIntegrationTest, CiliumTLSProxyLargeWrite) {\n  config_helper_.setBufferLimits(1024, 1024);\n  initialize();\n\n  std::string data(1024 * 16, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(data));\n\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n  // Wait for TLS handshake first to get a clear error signal if it never completes.\n  ASSERT_TRUE(waitForTlsHandshake(*fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(data.size()));\n  ASSERT_TRUE(fake_upstream_connection->write(data));\n  tcp_client->waitForData(data);\n  tcp_client->close();\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n\n  uint32_t upstream_pauses =\n      test_server_->counter(\"cluster.tls-cluster.upstream_flow_control_paused_reading_total\")\n          ->value();\n  uint32_t upstream_resumes =\n      test_server_->counter(\"cluster.tls-cluster.upstream_flow_control_resumed_reading_total\")\n          ->value();\n  EXPECT_EQ(upstream_pauses, upstream_resumes);\n\n  uint32_t downstream_pauses =\n      test_server_->counter(\"tcp.tcp_stats.downstream_flow_control_paused_reading_total\")->value();\n  uint32_t downstream_resumes =\n      test_server_->counter(\"tcp.tcp_stats.downstream_flow_control_resumed_reading_total\")->value();\n  EXPECT_EQ(downstream_pauses, downstream_resumes);\n}\n\n// Test that a downstream flush works correctly (all data is flushed)\nTEST_P(CiliumTLSProxyIntegrationTest, CiliumTLSProxyDownstreamFlush) {\n  // Use a very large size to make sure it is larger than the kernel socket read\n  // buffer.\n  const uint32_t size = 50 * 1024 * 1024;\n  config_helper_.setBufferLimits(size / 4, size / 4);\n  initialize();\n\n  std::string data(size, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  // Disabling read before the TLS handshake completes can stall the connection.\n  ASSERT_TRUE(waitForTlsHandshake(*fake_upstream_connection));\n\n  tcp_client->readDisable(true);\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n\n  // This ensures that readDisable(true) has been run on it's thread\n  // before tcp_client starts writing.\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n\n  ASSERT_TRUE(fake_upstream_connection->write(data, true));\n\n  test_server_->waitForCounterGe(\"cluster.tls-cluster.upstream_flow_control_paused_reading_total\",\n                                 1);\n  EXPECT_EQ(test_server_->counter(\"cluster.tls-cluster.upstream_flow_control_resumed_reading_total\")\n                ->value(),\n            0);\n  tcp_client->readDisable(false);\n  tcp_client->waitForData(data);\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n\n  uint32_t upstream_pauses =\n      test_server_->counter(\"cluster.tls-cluster.upstream_flow_control_paused_reading_total\")\n          ->value();\n  uint32_t upstream_resumes =\n      test_server_->counter(\"cluster.tls-cluster.upstream_flow_control_resumed_reading_total\")\n          ->value();\n  EXPECT_GE(upstream_pauses, upstream_resumes);\n  EXPECT_GT(upstream_resumes, 0);\n}\n\n// Test that an upstream flush works correctly (all data is flushed)\nTEST_P(CiliumTLSProxyIntegrationTest, CiliumTLSProxyUpstreamFlush) {\n  // Use a very large size to make sure it is larger than the kernel socket read\n  // buffer.\n  const uint32_t size = 50 * 1024 * 1024;\n  config_helper_.setBufferLimits(size, size);\n  initialize();\n\n  std::string data(size, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  // Disabling read before the TLS handshake completes can stall the connection.\n  ASSERT_TRUE(waitForTlsHandshake(*fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->readDisable(true));\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n\n  // This ensures that fake_upstream_connection->readDisable has been run on\n  // it's thread before tcp_client starts writing.\n  tcp_client->waitForHalfClose();\n\n  ASSERT_TRUE(tcp_client->write(data, true, true, std::chrono::milliseconds(30000)));\n\n  test_server_->waitForGaugeEq(\"tcp.tcp_stats.upstream_flush_active\", 1);\n  ASSERT_TRUE(fake_upstream_connection->readDisable(false));\n  ASSERT_TRUE(\n      fake_upstream_connection->waitForData(data.size(), nullptr, 3 * TestUtility::DefaultTimeout));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n\n  tcp_client->waitForHalfClose();\n\n  EXPECT_EQ(test_server_->counter(\"tcp.tcp_stats.upstream_flush_total\")->value(), 1);\n  test_server_->waitForGaugeEq(\"tcp.tcp_stats.upstream_flush_active\", 0);\n}\n\n// Test that Envoy doesn't crash or assert when shutting down with an upstream\n// flush active\nTEST_P(CiliumTLSProxyIntegrationTest, CiliumTLSProxyUpstreamFlushEnvoyExit) {\n  // Use a very large size to make sure it is larger than the kernel socket read\n  // buffer.\n  const uint32_t size = 50 * 1024 * 1024;\n  config_helper_.setBufferLimits(size, size);\n  initialize();\n\n  std::string data(size, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  // Disabling read before the TLS handshake completes can stall the connection.\n  ASSERT_TRUE(waitForTlsHandshake(*fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->readDisable(true));\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n\n  // This ensures that fake_upstream_connection->readDisable has been run on\n  // it's thread before tcp_client starts writing.\n  tcp_client->waitForHalfClose();\n\n  ASSERT_TRUE(tcp_client->write(data, true));\n\n  test_server_->waitForGaugeEq(\"tcp.tcp_stats.upstream_flush_active\", 1);\n  test_server_.reset();\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n\n  // Success criteria is that no ASSERTs fire and there are no leaks.\n}\n\n//\n// Cilium filters with TCP proxy & Upstream TLS\n//\n\n// params: is_ingress (\"true\", \"false\")\nconst std::string cilium_tls_downstream_tcp_proxy_config_fmt = R\"EOF(\nadmin:\n  address:\n    socket_address:\n      address: 127.0.0.1\n      port_value: 0\nstatic_resources:\n  clusters:\n  - name: tls-cluster\n    type: ORIGINAL_DST\n    lb_policy: CLUSTER_PROVIDED\n    connect_timeout:\n      seconds: 1\n    transport_socket:\n      name: \"cilium.tls_wrapper\"\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.UpstreamTlsWrapperContext\n  - name: xds-grpc-cilium\n    connect_timeout:\n      seconds: 5\n    type: STATIC\n    lb_policy: ROUND_ROBIN\n    http2_protocol_options:\n    load_assignment:\n      cluster_name: xds-grpc-cilium\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              pipe:\n                path: /var/run/cilium/xds.sock\n  listeners:\n    name: listener_0\n    address:\n      socket_address:\n        address: 127.0.0.1\n        port_value: 0\n    listener_filters:\n    - name: test_bpf_metadata\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.TestBpfMetadata\n        is_ingress: {0}\n    - name: \"envoy.filters.listener.tls_inspector\"\n      typed_config:\n        \"@type\": type.googleapis.com/envoy.extensions.filters.listener.tls_inspector.v3.TlsInspector\n    filter_chains:\n    - filters:\n      - name: cilium.network\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.NetworkFilter\n          proxylib: \"proxylib/libcilium.so\"\n      - name: envoy.tcp_proxy\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy\n          stat_prefix: tcp_stats\n          cluster: tls-cluster\n    - filter_chain_match:\n        transport_protocol: \"tls\"\n      transport_socket:\n        name: \"cilium.tls_wrapper\"\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.DownstreamTlsWrapperContext\n      filters:\n      - name: cilium.network\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.NetworkFilter\n          proxylib: \"proxylib/libcilium.so\"\n      - name: envoy.tcp_proxy\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy\n          stat_prefix: tcp_stats\n          cluster: tls-cluster\n)EOF\";\n\nclass CiliumDownstreamTLSIntegrationTest : public CiliumTLSIntegrationTest {\npublic:\n  CiliumDownstreamTLSIntegrationTest()\n      : CiliumTLSIntegrationTest(\n            fmt::format(fmt::runtime(TestEnvironment::substitute(\n                            cilium_tls_downstream_tcp_proxy_config_fmt, GetParam())),\n                        \"true\")) {}\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(TCP_POLICY_UPSTREAM_TLS_fmt, GetParam());\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumDownstreamTLSIntegrationTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()),\n                         TestUtility::ipTestParamsToString);\n\nTEST_P(CiliumDownstreamTLSIntegrationTest, SendTlsToTlsListener) {\n  setupConnections();\n  sendAndReceiveTlsData(\"hello\", \"world\");\n}\n\nTEST_P(CiliumDownstreamTLSIntegrationTest, LargeBidirectionalTlsWrites) {\n  setupConnections();\n  std::string large_data(1024 * 8, 'a');\n  sendAndReceiveTlsData(large_data, large_data);\n}\n\n// Test that a half-close on the downstream side is proxied correctly.\nTEST_P(CiliumDownstreamTLSIntegrationTest, DownstreamHalfClose) {\n  setupConnections();\n\n  FakeRawConnectionPtr fake_upstream_connection;\n  AssertionResult result = fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection);\n  RELEASE_ASSERT(result, result.message());\n  // Wait for TLS handshake first to get a clear error signal if it never completes.\n  ASSERT_TRUE(waitForTlsHandshake(*fake_upstream_connection));\n\n  Buffer::OwnedImpl empty_buffer;\n  ssl_client_->write(empty_buffer, true);\n  dispatcher_->run(Event::Dispatcher::RunType::NonBlock);\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n\n  const std::string data(\"data\");\n  ASSERT_TRUE(fake_upstream_connection->write(data, false));\n  payload_reader_->setDataToWaitFor(data);\n  ssl_client_->dispatcher().run(Event::Dispatcher::RunType::Block);\n  EXPECT_FALSE(payload_reader_->readLastByte());\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  ssl_client_->dispatcher().run(Event::Dispatcher::RunType::Block);\n  EXPECT_TRUE(payload_reader_->readLastByte());\n  EXPECT_TRUE(connect_callbacks_.closed());\n  // Drop the fake-upstream wrapper before client-side teardown so its read-filter removal runs\n  // while the fake-upstream dispatcher is still unquestionably alive.\n  fake_upstream_connection.reset();\n  teardownConnections();\n}\n\n// Test that a half-close on the upstream side is proxied correctly.\nTEST_P(CiliumDownstreamTLSIntegrationTest, UpstreamHalfClose) {\n  setupConnections();\n\n  FakeRawConnectionPtr fake_upstream_connection;\n  AssertionResult result = fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection);\n  RELEASE_ASSERT(result, result.message());\n  // Wait for TLS handshake first to get a clear error signal if it never completes.\n  ASSERT_TRUE(waitForTlsHandshake(*fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  ssl_client_->dispatcher().run(Event::Dispatcher::RunType::Block);\n  EXPECT_TRUE(payload_reader_->readLastByte());\n  EXPECT_FALSE(connect_callbacks_.closed());\n\n  const std::string& val(\"data\");\n  Buffer::OwnedImpl buffer(val);\n  ssl_client_->write(buffer, false);\n  while (client_write_buffer_->bytesDrained() != val.size()) {\n    dispatcher_->run(Event::Dispatcher::RunType::NonBlock);\n  }\n  ASSERT_TRUE(fake_upstream_connection->waitForData(val.size()));\n\n  Buffer::OwnedImpl empty_buffer;\n  ssl_client_->write(empty_buffer, true);\n  while (!connect_callbacks_.closed()) {\n    dispatcher_->run(Event::Dispatcher::RunType::NonBlock);\n  }\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  // Drop the fake-upstream wrapper before client-side teardown so its read-filter removal runs\n  // while the fake-upstream dispatcher is still unquestionably alive.\n  fake_upstream_connection.reset();\n  teardownConnections();\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_websocket_codec_integration_test.cc",
    "content": "#include <fmt/base.h>\n#include <fmt/format.h>\n#include <gtest/gtest-param-test.h>\n#include <gtest/gtest.h>\n\n#include <chrono>\n#include <cstdint>\n#include <string>\n\n#include \"test/integration/fake_upstream.h\"\n#include \"test/integration/integration_tcp_client.h\"\n#include \"test/test_common/environment.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"tests/cilium_tcp_integration.h\"\n\nnamespace Envoy {\n\n//\n// Cilium filters with TCP proxy\n//\n\n// params: is_ingress (\"true\", \"false\")\nconst std::string cilium_tcp_proxy_config_fmt = R\"EOF(\nadmin:\n  address:\n    socket_address:\n      address: 127.0.0.1\n      port_value: 0\nstatic_resources:\n  clusters:\n  - name: cluster1\n    type: ORIGINAL_DST\n    lb_policy: CLUSTER_PROVIDED\n    connect_timeout:\n      seconds: 1\n  - name: xds-grpc-cilium\n    connect_timeout:\n      seconds: 5\n    type: STATIC\n    lb_policy: ROUND_ROBIN\n    http2_protocol_options:\n    load_assignment:\n      cluster_name: xds-grpc-cilium\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              pipe:\n                path: /var/run/cilium/xds.sock\n  listeners:\n    name: listener_0\n    address:\n      socket_address:\n        address: 127.0.0.1\n        port_value: 0\n    listener_filters:\n      name: test_bpf_metadata\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.TestBpfMetadata\n        is_ingress: {0}\n    filter_chains:\n      filters:\n      - name: cilium.network\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.NetworkFilter\n      - name: cilium.network.websocket.client\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.WebSocketClient\n          access_log_path: \"{{ test_udsdir }}/access_log.sock\"\n          origin: \"jarno.cilium.rocks\"\n          host: \"jarno.cilium.rocks\"\n          ping_interval:\n            nanos: 1000000\n          ping_when_idle: true\n      - name: cilium.network.websocket.server\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.WebSocketServer\n          access_log_path: \"{{ test_udsdir }}/access_log.sock\"\n          origin: \"jarno.cilium.rocks\"\n      - name: envoy.tcp_proxy\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy\n          stat_prefix: tcp_stats\n          cluster: cluster1\n)EOF\";\n\nclass CiliumWebSocketIntegrationTest : public CiliumTcpIntegrationTest {\npublic:\n  CiliumWebSocketIntegrationTest()\n      : CiliumTcpIntegrationTest(fmt::format(\n            fmt::runtime(TestEnvironment::substitute(cilium_tcp_proxy_config_fmt, GetParam())),\n            \"true\")) {}\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  policy: 3\n  ingress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n  egress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n)EOF\",\n                                       GetParam());\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumWebSocketIntegrationTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()),\n                         TestUtility::ipTestParamsToString);\n\n// Test upstream writing before downstream downstream does.\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketUpstreamWritesFirst) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  test_server_->waitForCounterGe(\"websocket.ping_sent_count\", 1);\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"hello\"));\n  tcp_client->waitForData(\"hello\");\n\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n  std::string received;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(5, &received));\n  ASSERT_EQ(received, \"hello\");\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\n// Test proxying data in both directions, and that all data is flushed properly\n// when there is an upstream disconnect.\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketUpstreamDisconnect) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  std::string received;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(5, &received));\n  ASSERT_EQ(received, \"hello\");\n\n  test_server_->waitForCounterGe(\"websocket.ping_sent_count\", 1);\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"world\"));\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  tcp_client->waitForHalfClose();\n  tcp_client->close();\n\n  EXPECT_EQ(\"world\", tcp_client->data());\n}\n\n// Test proxying data in both directions, and that all data is flushed properly\n// when the client disconnects.\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketDownstreamDisconnect) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  std::string received;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(5, &received));\n  ASSERT_EQ(received, \"hello\");\n  ASSERT_TRUE(fake_upstream_connection->write(\"world\"));\n  tcp_client->waitForData(\"world\");\n\n  test_server_->waitForCounterGe(\"websocket.ping_sent_count\", 1);\n\n  ASSERT_TRUE(tcp_client->write(\"hello\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForData(10, &received));\n  ASSERT_EQ(received, \"hellohello\");\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  tcp_client->waitForDisconnect();\n}\n\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketLargeWrite) {\n  config_helper_.setBufferLimits(1024, 1024);\n  initialize();\n\n  std::string data(1024 * 16, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(data));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  std::string received;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(data.size(), &received));\n  ASSERT_EQ(received, data);\n  ASSERT_TRUE(fake_upstream_connection->write(data));\n  tcp_client->waitForData(data);\n\n  test_server_->waitForCounterGe(\"websocket.ping_sent_count\", 1);\n\n  tcp_client->close();\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n\n  uint32_t upstream_pauses =\n      test_server_->counter(\"cluster.cluster1.upstream_flow_control_paused_reading_total\")->value();\n  uint32_t upstream_resumes =\n      test_server_->counter(\"cluster.cluster1.upstream_flow_control_resumed_reading_total\")\n          ->value();\n  EXPECT_EQ(upstream_pauses, upstream_resumes);\n  uint32_t downstream_pauses =\n      test_server_->counter(\"tcp.tcp_stats.downstream_flow_control_paused_reading_total\")->value();\n  uint32_t downstream_resumes =\n      test_server_->counter(\"tcp.tcp_stats.downstream_flow_control_resumed_reading_total\")->value();\n  // Early data usually has downstream reads disabled before the upstream buffer hits high\n  // watermark, which suppresses the downstream pause metric. If scheduling lets the pause\n  // happen first, it must still be balanced by the resume below.\n  EXPECT_TRUE(downstream_pauses == 0 || downstream_pauses == downstream_resumes)\n      << \"downstream pauses: \" << downstream_pauses\n      << \", downstream resumes: \" << downstream_resumes;\n  EXPECT_EQ(downstream_resumes, 1);\n}\n\n// Test that a downstream flush works correctly (all data is flushed)\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketDownstreamFlush) {\n  // Use a very large size to make sure it is larger than the kernel socket read\n  // buffer.\n  const uint32_t size = 50 * 1024 * 1024;\n  config_helper_.setBufferLimits(size / 4, size / 4);\n  enableHalfClose(true);\n  initialize();\n\n  std::string data(size, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  test_server_->waitForCounterGe(\"websocket.ping_sent_count\", 1);\n\n  tcp_client->readDisable(true);\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n\n  // This ensures that readDisable(true) has been run on it's thread\n  // before tcp_client starts writing.\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n\n  ASSERT_TRUE(fake_upstream_connection->write(data, true));\n\n  test_server_->waitForCounterGe(\"cluster.cluster1.upstream_flow_control_paused_reading_total\", 1);\n  EXPECT_EQ(test_server_->counter(\"cluster.cluster1.upstream_flow_control_resumed_reading_total\")\n                ->value(),\n            0);\n  tcp_client->readDisable(false);\n  tcp_client->waitForData(data);\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n\n  uint32_t upstream_pauses =\n      test_server_->counter(\"cluster.cluster1.upstream_flow_control_paused_reading_total\")->value();\n  uint32_t upstream_resumes =\n      test_server_->counter(\"cluster.cluster1.upstream_flow_control_resumed_reading_total\")\n          ->value();\n  EXPECT_GE(upstream_pauses, upstream_resumes);\n  EXPECT_GT(upstream_resumes, 0);\n}\n\n// Test that an upstream flush works correctly (all data is flushed)\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketUpstreamFlush) {\n  // Use a very large size to make sure it is larger than the kernel socket read\n  // buffer.\n  const uint32_t size = 50 * 1024 * 1024;\n  config_helper_.setBufferLimits(size, size);\n  enableHalfClose(true);\n  initialize();\n\n  std::string data(size, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  test_server_->waitForCounterGe(\"websocket.ping_sent_count\", 1);\n\n  ASSERT_TRUE(fake_upstream_connection->readDisable(true));\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n\n  // This ensures that fake_upstream_connection->readDisable has been run on\n  // it's thread before tcp_client starts writing.\n  tcp_client->waitForHalfClose();\n\n  ASSERT_TRUE(tcp_client->write(data, true, true, std::chrono::milliseconds(30000)));\n\n  test_server_->waitForGaugeEq(\"tcp.tcp_stats.upstream_flush_active\", 1);\n\n  ASSERT_TRUE(fake_upstream_connection->readDisable(false));\n  std::string received;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(data.size(), &received));\n  ASSERT_EQ(received, data);\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  tcp_client->waitForHalfClose();\n\n  EXPECT_EQ(test_server_->counter(\"tcp.tcp_stats.upstream_flush_total\")->value(), 1);\n  test_server_->waitForGaugeEq(\"tcp.tcp_stats.upstream_flush_active\", 0);\n}\n\n// Test that Envoy doesn't crash or assert when shutting down with an upstream\n// flush active\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketUpstreamFlushEnvoyExit) {\n  // Use a very large size to make sure it is larger than the kernel socket read\n  // buffer.\n  const uint32_t size = 50 * 1024 * 1024;\n  config_helper_.setBufferLimits(size, size);\n  initialize();\n\n  std::string data(size, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  ASSERT_TRUE(fake_upstream_connection->readDisable(true));\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n\n  // This ensures that fake_upstream_connection->readDisable has been run on\n  // it's thread before tcp_client starts writing.\n  tcp_client->waitForHalfClose();\n\n  test_server_->waitForCounterGe(\"websocket.ping_sent_count\", 1);\n\n  ASSERT_TRUE(tcp_client->write(data, true));\n\n  test_server_->waitForGaugeEq(\"tcp.tcp_stats.upstream_flush_active\", 1);\n  test_server_.reset();\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n\n  // Success criteria is that no ASSERTs fire and there are no leaks.\n}\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_websocket_decap_integration_test.cc",
    "content": "#include <fmt/base.h>\n#include <fmt/format.h>\n#include <gtest/gtest-param-test.h>\n#include <gtest/gtest.h>\n\n#include <cstddef>\n#include <string>\n\n#include \"envoy/event/dispatcher.h\"\n\n#include \"source/common/buffer/buffer_impl.h\"\n\n#include \"test/integration/fake_upstream.h\"\n#include \"test/integration/integration_stream_decoder.h\"\n#include \"test/test_common/environment.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"absl/strings/string_view.h\"\n#include \"tests/bpf_metadata.h\" // host_map_config, original_dst_address\n#include \"tests/cilium_http_integration.h\"\n\nusing namespace std::literals;\n\nnamespace Envoy {\n\n// params: is_ingress (\"true\", \"false\")\nconst std::string cilium_tcp_proxy_config_fmt = R\"EOF(\nadmin:\n  address:\n    socket_address:\n      address: 127.0.0.1\n      port_value: 0\nstatic_resources:\n  clusters:\n  - name: cluster1\n    type: ORIGINAL_DST\n    lb_policy: CLUSTER_PROVIDED\n    connect_timeout:\n      seconds: 1\n  - name: xds-grpc-cilium\n    connect_timeout:\n      seconds: 5\n    type: STATIC\n    lb_policy: ROUND_ROBIN\n    http2_protocol_options:\n    load_assignment:\n      cluster_name: xds-grpc-cilium\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              pipe:\n                path: /var/run/cilium/xds.sock\n  listeners:\n    name: http\n    address:\n      socket_address:\n        address: 127.0.0.1\n        port_value: 0\n    listener_filters:\n      name: test_bpf_metadata\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.TestBpfMetadata\n        is_ingress: {0}\n    filter_chains:\n      filters:\n      - name: cilium.network.websocket.server\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.WebSocketServer\n          origin: \"jarno.cilium.rocks\"\n      - name: cilium.network\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.NetworkFilter\n      - name: envoy.tcp_proxy\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy\n          stat_prefix: tcp_stats\n          cluster: cluster1\n)EOF\";\n\nclass CiliumWebSocketIntegrationTest : public CiliumHttpIntegrationTest {\npublic:\n  CiliumWebSocketIntegrationTest()\n      : CiliumHttpIntegrationTest(fmt::format(\n            fmt::runtime(TestEnvironment::substitute(cilium_tcp_proxy_config_fmt, GetParam())),\n            \"false\")) {\n    host_map_config = R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 173\n  host_addresses: [ \"192.168.0.1\", \"f00d::1\" ]\n- \"@type\": type.googleapis.com/cilium.NetworkPolicyHosts\n  policy: 1\n  host_addresses: [ \"127.0.0.0/8\", \"::/104\" ]\n)EOF\";\n  }\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  policy: 3\n  ingress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n  egress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n)EOF\",\n                                       GetParam());\n  }\n\n  void denied(Http::TestRequestHeaderMapImpl&& headers) {\n    codec_client_ = makeHttpConnection(lookupPort(\"http\"));\n    auto response = codec_client_->makeHeaderOnlyRequest(headers);\n    ASSERT_TRUE(response->waitForEndStream());\n\n    EXPECT_TRUE(response->complete());\n    EXPECT_EQ(\"403\", response->headers().getStatusValue());\n    cleanupUpstreamAndDownstream();\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumWebSocketIntegrationTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()));\n\nTEST_P(CiliumWebSocketIntegrationTest, DeniedNonWebSocket) {\n  initialize();\n  denied({{\":method\", \"GET\"}, {\":path\", \"/\"}, {\":authority\", \"host\"}});\n}\n\nTEST_P(CiliumWebSocketIntegrationTest, AcceptedWebSocket) {\n  initialize();\n  auto request_headers = Http::TestRequestHeaderMapImpl{\n      {\":method\", \"GET\"},\n      {\":path\", \"/\"},\n      {\":authority\", \"host\"},\n      {\"Upgrade\", \"websocket\"},\n      {\"Connection\", \"Upgrade\"},\n      {\"Origin\", \"jarno.cilium.rocks\"},\n      {\"Sec-WebSocket-Key\", \"dGhlIHNhbXBsZSBub25jZQ==\"},\n      {\"Sec-WebSocket-Version\", \"13\"},\n      {\"x-request-id\", \"000000ff-0000-0000-0000-000000000001\"},\n      {\"x-envoy-original-dst-host\", original_dst_address->asString()}};\n  codec_client_ = makeHttpConnection(lookupPort(\"http\"));\n\n  IntegrationStreamDecoderPtr response = codec_client_->makeHeaderOnlyRequest(request_headers);\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n  // Wait for the response to be read by the codec client.\n  response->waitForHeaders();\n  EXPECT_EQ(\"101\", response->headers().getStatusValue());\n\n  auto client_conn = codec_client_->connection();\n\n  // Create websocket framed data & write it on the client connection\n  Buffer::OwnedImpl buf{\"\\x82\\x5\"\n                        \"hello\"};\n  client_conn->write(buf, false);\n  // Run the dispatcher so that the write event is handled\n  client_conn->dispatcher().run(Event::Dispatcher::RunType::NonBlock);\n\n  std::string data;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(5, &data));\n  ASSERT_EQ(data, \"hello\");\n  ASSERT_TRUE(fake_upstream_connection->write(\"world\"));\n  // There is no way to clear the fake upstream data, so we must keep track of how much of it\n  // we already saw.\n  auto seen_data_len = data.length();\n\n  response->waitForBodyData(7);\n  absl::string_view resp = response->body();\n  ASSERT_EQ(resp.substr(0, 7), \"\\x82\\x5\"\n                               \"world\");\n  response->clearBody();\n\n  // Send multiple frames back-to-back\n  ASSERT_EQ(buf.length(), 0);\n  buf.add(\"\\x82\\x6\"\n          \"hello2\"\n          \"\\x82\\x7\"\n          \"hello21\"\n          \"\\x82\\x3\"\n          \"foo\");\n  client_conn->write(buf, false);\n  // Run the dispatcher so that the write event is handled\n  client_conn->dispatcher().run(Event::Dispatcher::RunType::NonBlock);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(seen_data_len + 16, &data));\n  ASSERT_EQ(data.substr(seen_data_len), \"hello2hello21foo\");\n  seen_data_len = data.length();\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"bar\"));\n\n  response->waitForBodyData(5);\n  resp = response->body();\n  ASSERT_EQ(resp.substr(0, 5), \"\\x82\\x3\"\n                               \"bar\");\n  response->clearBody();\n\n  // Bigger size formats & multiple responses.\n  // Officially optimal length formats must be used, but our implementation\n  // accepts larger formats with less data, which makes testing easier.\n  ASSERT_EQ(buf.length(), 0);\n  absl::string_view frame16{\"\\x82\\x7e\\0\\x5\"\n                            \"len16\",\n                            9};\n  buf.add(frame16);\n  client_conn->write(buf, false);\n  // Run the dispatcher so that the write event is handled\n  client_conn->dispatcher().run(Event::Dispatcher::RunType::NonBlock);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(seen_data_len + 5, &data));\n  ASSERT_EQ(data.substr(seen_data_len), \"len16\");\n  seen_data_len = data.length();\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"foo\"));\n  response->waitForBodyData(5);\n  ASSERT_TRUE(fake_upstream_connection->write(\"bar\"));\n  response->waitForBodyData(10);\n  resp = response->body();\n  ASSERT_EQ(resp.substr(0, 5), \"\\x82\\x3\"\n                               \"foo\");\n  ASSERT_EQ(resp.substr(5, 5), \"\\x82\\x3\"\n                               \"bar\");\n  response->clearBody();\n\n  // 64-bit size format\n  // Officially optimal length formats must be used, but our implementation\n  // accepts larger formats with less data, which makes testing easier.\n  ASSERT_EQ(buf.length(), 0);\n  absl::string_view frame64{\"\\x82\\x7f\\0\\0\\0\\0\\0\\0\\0\\x5\"\n                            \"len64\",\n                            15};\n  buf.add(frame64);\n  client_conn->write(buf, false);\n  // Run the dispatcher so that the write event is handled\n  client_conn->dispatcher().run(Event::Dispatcher::RunType::NonBlock);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(seen_data_len + 5, &data));\n  ASSERT_EQ(data.substr(seen_data_len), \"len64\");\n  seen_data_len = data.length();\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"hello\"));\n  response->waitForBodyData(7);\n  resp = response->body();\n  ASSERT_EQ(resp.substr(0, 7), \"\\x82\\x5\"\n                               \"hello\");\n  response->clearBody();\n\n  // Gaps within a frame\n  ASSERT_EQ(buf.length(), 0);\n  buf.add(\"\\x82\\x5\"\n          \"hello\"\n          \"\\x82\\xe\"\n          \"gap \");\n  client_conn->write(buf, false);\n  // Run the dispatcher so that the write event is handled\n  client_conn->dispatcher().run(Event::Dispatcher::RunType::NonBlock);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(seen_data_len + 9, &data));\n  ASSERT_EQ(data.substr(seen_data_len), \"hellogap \");\n  seen_data_len = data.length();\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"bar42\"));\n\n  ASSERT_EQ(buf.length(), 0);\n  buf.add(\"in between\"\n          \"\\x82\\x3\"\n          \"foo\");\n  client_conn->write(buf, false);\n  // Run the dispatcher so that the write event is handled\n  client_conn->dispatcher().run(Event::Dispatcher::RunType::NonBlock);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(seen_data_len + 13, &data));\n  ASSERT_EQ(data.substr(seen_data_len), \"in betweenfoo\");\n  seen_data_len = data.length();\n\n  response->waitForBodyData(7);\n  resp = response->body();\n  ASSERT_EQ(resp.substr(0, 7), \"\\x82\\x5\"\n                               \"bar42\");\n  response->clearBody();\n\n  // Masked frames\n  ASSERT_EQ(buf.length(), 0);\n  auto msg = \"heello there\\r\\n\"s;\n  unsigned char mask[4] = {0x12, 0x34, 0x56, 0x78};\n  auto masked = msg;\n  for (size_t i = 0; i < msg.length(); i++) {\n    masked[i] = msg[i] ^ mask[i % 4];\n  }\n  buf.add(\"\\x82\\x8e\");\n  buf.add(mask, 4);\n  buf.add(masked.data(), masked.length());\n  client_conn->write(buf, false);\n  // Run the dispatcher so that the write event is handled\n  client_conn->dispatcher().run(Event::Dispatcher::RunType::NonBlock);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(seen_data_len + 14, &data));\n  ASSERT_EQ(data.substr(seen_data_len), msg);\n  seen_data_len = data.length();\n\n  ASSERT_TRUE(fake_upstream_connection->write(msg));\n\n  response->waitForBodyData(16);\n  ASSERT_EQ(response->body().length(), 16);\n  resp = response->body();\n  ASSERT_EQ(resp.substr(0, 16), \"\\x82\\xe\"\n                                \"heello there\\r\\n\");\n  response->clearBody();\n\n  // 2nd masked frame\n  ASSERT_EQ(buf.length(), 0);\n  auto msg2 = \"hello there\\r\\n\"s;\n  unsigned char mask2[4] = {0x90, 0xab, 0xcd, 0xef};\n  auto masked2 = msg2;\n  for (size_t i = 0; i < msg2.length(); i++) {\n    masked2[i] = msg2[i] ^ mask2[i % 4];\n  }\n  // Write frame header\n  buf.add(\"\\x82\\x8d\");\n  buf.add(mask2, 4);\n  client_conn->write(buf, false);\n  // Run the dispatcher so that the write event is handled\n  client_conn->dispatcher().run(Event::Dispatcher::RunType::NonBlock);\n\n  // Write 5 first bytes\n  buf.add(masked2.data(), 5);\n  client_conn->write(buf, false);\n  // Run the dispatcher so that the write event is handled\n  client_conn->dispatcher().run(Event::Dispatcher::RunType::NonBlock);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(seen_data_len + 5, &data));\n  ASSERT_EQ(data.substr(seen_data_len), absl::string_view(msg2.data(), 5));\n  seen_data_len = data.length();\n\n  // Write remaining bytes\n  buf.add(masked2.data() + 5, masked2.length() - 5);\n  client_conn->write(buf, false);\n  // Run the dispatcher so that the write event is handled\n  client_conn->dispatcher().run(Event::Dispatcher::RunType::NonBlock);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(seen_data_len + 13 - 5, &data));\n  ASSERT_EQ(data.substr(seen_data_len), msg2.data() + 5);\n  // seen_data_len = data.length(); // not used after, no need to update\n\n  ASSERT_TRUE(fake_upstream_connection->write(msg2));\n\n  response->waitForBodyData(15);\n  resp = response->body();\n\n  ASSERT_EQ(resp.substr(0, 15), \"\\x82\\xd\"\n                                \"hello there\\r\\n\");\n  response->clearBody();\n\n  // Close\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n\n  // Wait for websocket close frame, has to be exactly 2 bytes\n  response->waitForBodyData(2);\n  absl::string_view close_frame{\"\\x88\\0\", 2};\n  ASSERT_EQ(response->body(), close_frame);\n  codec_client_->close();\n}\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_websocket_encap_integration_test.cc",
    "content": "#include <fmt/base.h>\n#include <fmt/format.h>\n#include <gtest/gtest-param-test.h>\n#include <gtest/gtest.h>\n\n#include <chrono>\n#include <cstddef>\n#include <cstdint>\n#include <cstring>\n#include <string>\n\n#include \"test/integration/fake_upstream.h\"\n#include \"test/integration/integration_tcp_client.h\"\n#include \"test/test_common/environment.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"cilium/websocket_protocol.h\"\n#include \"tests/bpf_metadata.h\" // original_dst_address\n#include \"tests/cilium_tcp_integration.h\"\n\nusing namespace std::literals;\n\nnamespace Envoy {\n\n//\n// Cilium filters with TCP proxy\n//\n\n// params: is_ingress (\"true\", \"false\")\nconst std::string cilium_tcp_proxy_config_fmt = R\"EOF(\nadmin:\n  address:\n    socket_address:\n      address: 127.0.0.1\n      port_value: 0\nstatic_resources:\n  clusters:\n  - name: cluster1\n    type: ORIGINAL_DST\n    lb_policy: CLUSTER_PROVIDED\n    connect_timeout:\n      seconds: 1\n  - name: xds-grpc-cilium\n    connect_timeout:\n      seconds: 5\n    type: STATIC\n    lb_policy: ROUND_ROBIN\n    http2_protocol_options:\n    load_assignment:\n      cluster_name: xds-grpc-cilium\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              pipe:\n                path: /var/run/cilium/xds.sock\n  listeners:\n    stat_prefix: listener_0\n    name: listener_0\n    address:\n      socket_address:\n        address: 127.0.0.1\n        port_value: 0\n    listener_filters:\n      name: test_bpf_metadata\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.TestBpfMetadata\n        is_ingress: {0}\n    filter_chains:\n      filters:\n      - name: cilium.network.websocket.client\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.WebSocketClient\n          access_log_path: \"{{ test_udsdir }}/access_log.sock\"\n          version: \"13\"\n          path: \"/\"\n          origin: \"jarno.cilium.rocks\"\n          host: \"jarno.cilium.rocks\"\n          key: \"super-secret-key\"\n          handshake_timeout:\n            seconds: 5\n      - name: cilium.network\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.NetworkFilter\n          proxylib: \"proxylib/libcilium.so\"\n      - name: envoy.tcp_proxy\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy\n          stat_prefix: tcp_stats\n          cluster: cluster1\n)EOF\";\n\nclass CiliumWebSocketIntegrationTest : public CiliumTcpIntegrationTest {\npublic:\n  CiliumWebSocketIntegrationTest()\n      : CiliumTcpIntegrationTest(fmt::format(\n            fmt::runtime(TestEnvironment::substitute(cilium_tcp_proxy_config_fmt, GetParam())),\n            \"true\")) {}\n  size_t unmaskData(void* void_frame, size_t len, uint8_t opcode = OPCODE_BIN) {\n    uint8_t* frame = reinterpret_cast<uint8_t*>(void_frame);\n    if (frame[0] != (0x80 | opcode)) {\n      return 0;\n    }\n    size_t frame_offset = 2;\n    uint64_t data_len = frame[1] & ~0x80;\n    switch (data_len) {\n    case 126:\n      data_len = (frame[2] << 8) + frame[3];\n      frame_offset += sizeof(uint16_t);\n      break;\n    case 127:\n      data_len = 0;\n      for (size_t i = 0; i < sizeof(uint64_t); i++) {\n        data_len <<= 8;\n        data_len += frame[frame_offset + i];\n      }\n      frame_offset += sizeof(uint64_t);\n      break;\n    }\n    char mask[4];\n    bool masked = frame[1] & 0x80;\n    if (masked) {\n      memcpy(mask, frame + frame_offset, sizeof(mask)); // NOLINT(safe-memcpy)\n      frame_offset += sizeof(mask);\n    }\n    if (data_len != len - frame_offset) {\n      return 0;\n    }\n\n    if (masked) {\n      int mask_offset = 0;\n      for (size_t i = frame_offset; i < len; i++) {\n        frame[i] ^= mask[mask_offset++];\n        if (mask_offset == sizeof(mask)) {\n          mask_offset = 0;\n        }\n      }\n    }\n    return frame_offset;\n  }\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumWebSocketIntegrationTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()),\n                         TestUtility::ipTestParamsToString);\n\n#define X_REQUEST_ID_HEADER \"x-request-id\"\n#define HEADER_SEPARATOR \": \"\n#define X_REQUEST_ID_VALUE \"12345678-abcd-1234-5678-1234567890ab\"\n\n#define CRLF \"\\r\\n\"\nstatic const char EXPECTED_HANDSHAKE_FMT[] =\n    \"GET / HTTP/1.1\" CRLF \"host: jarno.cilium.rocks\" CRLF \"upgrade: websocket\" CRLF\n    \"connection: upgrade\" CRLF \"sec-websocket-key: c3VwZXItc2VjcmV0LWtleQ==\" CRLF\n    \"sec-websocket-version: 13\" CRLF \"origin: jarno.cilium.rocks\" CRLF\n    \"x-envoy-original-dst-host: {}\" CRLF X_REQUEST_ID_HEADER HEADER_SEPARATOR\n        X_REQUEST_ID_VALUE CRLF \"content-length: 0\" CRLF CRLF;\n\nnamespace {\n\nsize_t normalizeXRequestId(std::string& headers) {\n  auto idx = headers.find(X_REQUEST_ID_HEADER HEADER_SEPARATOR);\n  if (idx != std::string::npos) {\n    idx += sizeof(X_REQUEST_ID_HEADER HEADER_SEPARATOR) - 1; // w/o the \\0 in the end\n    auto lf = headers.find(CRLF, idx);\n    if (lf != std::string::npos) {\n      // replace\n      headers.replace(idx, lf - idx, X_REQUEST_ID_VALUE);\n      return lf - idx;\n    }\n  }\n  return 0;\n}\n\n} // namespace\n\n// Test Websocket handshake with missing handshake response\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketHandshakeNonHTTPResponse) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection,\n                                                       std::chrono::milliseconds(1000000)));\n\n  std::string expected_handshake =\n      fmt::format(fmt::runtime(EXPECTED_HANDSHAKE_FMT), original_dst_address->asString());\n  std::string received_handshake;\n\n  ASSERT_TRUE(fake_upstream_connection->waitForData(expected_handshake.length(),\n                                                    &received_handshake, std::chrono::seconds(10)));\n  ASSERT_EQ(normalizeXRequestId(received_handshake), sizeof(X_REQUEST_ID_VALUE) - 1);\n  ASSERT_EQ(received_handshake, expected_handshake);\n  ASSERT_TRUE(fake_upstream_connection->write(\"\\x82\\x5\"\n                                              \"world\"));\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  test_server_->waitForCounterGe(\"websocket.handshake_not_http\", 1);\n\n  // Handshake errors close the downstream with NoFlush, which may be observed as either a\n  // graceful FIN or an RST. The counter above is the behavior under test.\n  tcp_client->close();\n}\n\nstatic const char HANDSHAKE_RESPONSE_FMT[] =\n    \"HTTP/1.1 101 Switching Protocols\" CRLF \"Upgrade: websocket\" CRLF \"Connection: Upgrade\" CRLF\n    \"Sec-WebSocket-Accept: {}\" CRLF CRLF;\n\n// Test Websocket handshake with invalid accept key hash.\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketHandshakeInvalidResponse) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  std::string expected_handshake =\n      fmt::format(fmt::runtime(EXPECTED_HANDSHAKE_FMT), original_dst_address->asString());\n  std::string received_data;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(expected_handshake.length(), &received_data));\n  ASSERT_EQ(normalizeXRequestId(received_data), sizeof(X_REQUEST_ID_VALUE) - 1);\n  ASSERT_EQ(received_data, expected_handshake);\n\n  // Handshake response with invalid hash value\n  std::string handshake_response =\n      fmt::format(fmt::runtime(HANDSHAKE_RESPONSE_FMT), \"invalid-hash\");\n  ASSERT_TRUE(fake_upstream_connection->write(handshake_response));\n\n  test_server_->waitForCounterGe(\"websocket.handshake_invalid_websocket_response\", 1);\n\n  // Handshake errors close the downstream with NoFlush, which may be observed as either a\n  // graceful FIN or an RST. The counter above is the behavior under test.\n  tcp_client->close();\n}\n\n// Test successful handshake where client writes data first, right after connection has been\n// created.\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketHandshakeSuccess) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  std::string expected_handshake =\n      fmt::format(fmt::runtime(EXPECTED_HANDSHAKE_FMT), original_dst_address->asString());\n  std::string received_data;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(expected_handshake.length(), &received_data));\n  ASSERT_EQ(normalizeXRequestId(received_data), sizeof(X_REQUEST_ID_VALUE) - 1);\n  ASSERT_EQ(received_data, expected_handshake);\n\n  // Handshake response with the correct hash value\n  std::string handshake_response =\n      fmt::format(fmt::runtime(HANDSHAKE_RESPONSE_FMT), \"GjgmQ9MzNsn3h7+vuIzY25rbQ9M=\");\n  ASSERT_TRUE(fake_upstream_connection->write(handshake_response));\n\n  // check we get the hello in a websocket binary data frame\n  ASSERT_TRUE(\n      fake_upstream_connection->waitForData(expected_handshake.length() + 11, &received_data));\n  received_data.erase(0, expected_handshake.length()); // strip handshake\n  // unmask the payload\n  auto frame_offset = unmaskData(received_data.data(), received_data.size());\n  ASSERT_TRUE(frame_offset > 0);\n  ASSERT_EQ(received_data.substr(frame_offset, 5), \"hello\");\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\\x82\\x5\"\n                                              \"world\"));\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  tcp_client->waitForHalfClose();\n  tcp_client->close();\n\n  EXPECT_EQ(\"world\", tcp_client->data());\n}\n\n// Test successful handshake where client does not send any data, and the server side sends data\n// right after the handshake response.\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketHandshakeNoData) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  std::string expected_handshake =\n      fmt::format(fmt::runtime(EXPECTED_HANDSHAKE_FMT), original_dst_address->asString());\n  std::string received_data;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(expected_handshake.length(), &received_data));\n  ASSERT_EQ(normalizeXRequestId(received_data), sizeof(X_REQUEST_ID_VALUE) - 1);\n  ASSERT_EQ(received_data, expected_handshake);\n\n  // Handshake response with the correct hash value\n  std::string handshake_response =\n      fmt::format(fmt::runtime(HANDSHAKE_RESPONSE_FMT), \"GjgmQ9MzNsn3h7+vuIzY25rbQ9M=\");\n  ASSERT_TRUE(fake_upstream_connection->write(handshake_response));\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\\x82\\x5\"\n                                              \"world\"));\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  tcp_client->waitForHalfClose();\n  tcp_client->close();\n\n  EXPECT_EQ(\"world\", tcp_client->data());\n}\n\n// Test proxying data in both directions, and that all data is flushed properly\n// when the client disconnects.\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketDownstreamDisconnect) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  std::string expected_handshake =\n      fmt::format(fmt::runtime(EXPECTED_HANDSHAKE_FMT), original_dst_address->asString());\n  std::string received_data;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(expected_handshake.length(), &received_data));\n  ASSERT_EQ(normalizeXRequestId(received_data), sizeof(X_REQUEST_ID_VALUE) - 1);\n  ASSERT_EQ(received_data, expected_handshake);\n\n  // Handshake response with the correct hash value\n  std::string handshake_response =\n      fmt::format(fmt::runtime(HANDSHAKE_RESPONSE_FMT), \"GjgmQ9MzNsn3h7+vuIzY25rbQ9M=\");\n  ASSERT_TRUE(fake_upstream_connection->write(handshake_response));\n\n  ASSERT_TRUE(\n      fake_upstream_connection->waitForData(expected_handshake.length() + 11, &received_data));\n  received_data.erase(0, expected_handshake.length()); // strip handshake\n  // unmask the payload\n  auto frame_offset = unmaskData(received_data.data(), received_data.size());\n  ASSERT_TRUE(frame_offset > 0);\n  ASSERT_EQ(received_data.substr(frame_offset, 5), \"hello\");\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\\x82\\x5\"\n                                              \"world\"));\n  tcp_client->waitForData(\"world\");\n  ASSERT_TRUE(tcp_client->write(\"hell2\", true));\n  // 11 bytes for encoded \"hell2\" and 6 bytes for websocket close due to end stream == true\n  ASSERT_TRUE(\n      fake_upstream_connection->waitForData(expected_handshake.length() + 28, &received_data));\n  received_data.erase(0, expected_handshake.length() + 11); // strip handshake and 1st hello\n  // unmask the payload\n  frame_offset = unmaskData(received_data.data(), 11);\n  ASSERT_TRUE(frame_offset > 0);\n  ASSERT_EQ(received_data.substr(frame_offset, 5), \"hell2\");\n  // check for the close frame\n  received_data.erase(0, 11); // strip 2nd hello\n  frame_offset = unmaskData(received_data.data(), received_data.length(), OPCODE_CLOSE);\n  ASSERT_TRUE(frame_offset > 0);\n  ASSERT_EQ(frame_offset, 6);\n\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  tcp_client->waitForDisconnect();\n}\n\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketLargeWrite) {\n  config_helper_.setBufferLimits(1024, 1024);\n  initialize();\n\n  std::string data(1024 * 32, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(data));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  std::string expected_handshake =\n      fmt::format(fmt::runtime(EXPECTED_HANDSHAKE_FMT), original_dst_address->asString());\n  std::string received_data;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(expected_handshake.length(), &received_data));\n  ASSERT_EQ(normalizeXRequestId(received_data), sizeof(X_REQUEST_ID_VALUE) - 1);\n  ASSERT_EQ(received_data, expected_handshake);\n\n  // Handshake response with the correct hash value\n  std::string handshake_response =\n      fmt::format(fmt::runtime(HANDSHAKE_RESPONSE_FMT), \"GjgmQ9MzNsn3h7+vuIzY25rbQ9M=\");\n  ASSERT_TRUE(fake_upstream_connection->write(handshake_response));\n\n  // Data is split into 16k chunks, so there are 2 headers of 8 bytes each\n  ASSERT_TRUE(fake_upstream_connection->waitForData(\n      expected_handshake.length() + 2 * 8 + data.size(), &received_data));\n  received_data.erase(0, expected_handshake.length()); // strip handshake\n  // unmask the 1st frame\n  auto frame_offset = unmaskData(received_data.data(), 8 + 16 * 1024);\n  ASSERT_TRUE(frame_offset > 0);\n  ASSERT_EQ(received_data.substr(frame_offset, 16 * 1024), data.substr(0, 16 * 1024));\n  received_data.erase(0, frame_offset + 16 * 1024); // strip 1st frame\n  // unmask the 2nd frame\n  frame_offset = unmaskData(received_data.data(), 8 + 16 * 1024);\n  ASSERT_TRUE(frame_offset > 0);\n  ASSERT_EQ(received_data.substr(frame_offset, 16 * 1024), data.substr(16 * 1024, 16 * 1024));\n\n  // writing data in one large chunk\n  ASSERT_TRUE(fake_upstream_connection->write(\"\\x82\\x7e\\x80\\x00\"s));\n  ASSERT_TRUE(fake_upstream_connection->write(data));\n  tcp_client->waitForData(data);\n  tcp_client->close();\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n\n  uint32_t upstream_pauses =\n      test_server_->counter(\"cluster.cluster1.upstream_flow_control_paused_reading_total\")->value();\n  uint32_t upstream_resumes =\n      test_server_->counter(\"cluster.cluster1.upstream_flow_control_resumed_reading_total\")\n          ->value();\n  EXPECT_EQ(upstream_pauses, upstream_resumes);\n\n  uint32_t downstream_pauses =\n      test_server_->counter(\"tcp.tcp_stats.downstream_flow_control_paused_reading_total\")->value();\n  uint32_t downstream_resumes =\n      test_server_->counter(\"tcp.tcp_stats.downstream_flow_control_resumed_reading_total\")->value();\n  EXPECT_EQ(downstream_pauses, downstream_resumes);\n}\n\n// Test that a downstream flush works correctly (all data is flushed)\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketDownstreamFlush) {\n  // Use a very large size to make sure it is larger than the kernel socket read\n  // buffer.\n  const uint32_t size = 50 * 1024 * 1024;\n  config_helper_.setBufferLimits(size / 4, size / 4);\n  initialize();\n\n  std::string data(size, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  std::string expected_handshake =\n      fmt::format(fmt::runtime(EXPECTED_HANDSHAKE_FMT), original_dst_address->asString());\n  std::string received_data;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(expected_handshake.length(), &received_data));\n  ASSERT_EQ(normalizeXRequestId(received_data), sizeof(X_REQUEST_ID_VALUE) - 1);\n  ASSERT_EQ(received_data, expected_handshake);\n\n  // Handshake response with the correct hash value\n  std::string handshake_response =\n      fmt::format(fmt::runtime(HANDSHAKE_RESPONSE_FMT), \"GjgmQ9MzNsn3h7+vuIzY25rbQ9M=\");\n  ASSERT_TRUE(fake_upstream_connection->write(handshake_response));\n\n  tcp_client->readDisable(true);\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n\n  // This ensures that readDisable(true) has been run on it's thread\n  // before tcp_client starts writing.\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n\n  // writing data in one large chunk\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\\x82\\x7f\\x03\\x20\\0\\0\"s));\n  ASSERT_TRUE(fake_upstream_connection->write(data, true));\n\n  test_server_->waitForCounterGe(\"cluster.cluster1.upstream_flow_control_paused_reading_total\", 1);\n  EXPECT_EQ(test_server_->counter(\"cluster.cluster1.upstream_flow_control_resumed_reading_total\")\n                ->value(),\n            0);\n  tcp_client->readDisable(false);\n  tcp_client->waitForData(data);\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n\n  uint32_t upstream_pauses =\n      test_server_->counter(\"cluster.cluster1.upstream_flow_control_paused_reading_total\")->value();\n  uint32_t upstream_resumes =\n      test_server_->counter(\"cluster.cluster1.upstream_flow_control_resumed_reading_total\")\n          ->value();\n  EXPECT_GE(upstream_pauses, upstream_resumes);\n  EXPECT_GT(upstream_resumes, 0);\n}\n\n// Test that an upstream flush works correctly (all data is flushed)\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketUpstreamFlush) {\n  // Use a very large size to make sure it is larger than the kernel socket read\n  // buffer.\n  const uint32_t size = 50 * 1024 * 1024;\n  config_helper_.setBufferLimits(size, size);\n  initialize();\n\n  std::string data(size, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  std::string expected_handshake =\n      fmt::format(fmt::runtime(EXPECTED_HANDSHAKE_FMT), original_dst_address->asString());\n  std::string received_data;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(expected_handshake.length(), &received_data));\n  ASSERT_EQ(normalizeXRequestId(received_data), sizeof(X_REQUEST_ID_VALUE) - 1);\n  ASSERT_EQ(received_data, expected_handshake);\n\n  // Handshake response with the correct hash value\n  std::string handshake_response =\n      fmt::format(fmt::runtime(HANDSHAKE_RESPONSE_FMT), \"GjgmQ9MzNsn3h7+vuIzY25rbQ9M=\");\n  ASSERT_TRUE(fake_upstream_connection->write(handshake_response));\n\n  ASSERT_TRUE(fake_upstream_connection->readDisable(true));\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n\n  // This ensures that fake_upstream_connection->readDisable has been run on\n  // it's thread before tcp_client starts writing.\n  tcp_client->waitForHalfClose();\n\n  ASSERT_TRUE(tcp_client->write(data, true, true, std::chrono::milliseconds(30000)));\n\n  ASSERT_TRUE(fake_upstream_connection->readDisable(false));\n  size_t min_size = expected_handshake.length() + data.size() + 14 + 6;\n  ASSERT_TRUE(\n      fake_upstream_connection->waitForData(FakeRawConnection::waitForAtLeastBytes(min_size)));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  tcp_client->waitForHalfClose();\n\n  test_server_->waitForGaugeEq(\"tcp.tcp_stats.upstream_flush_active\", 0);\n  EXPECT_EQ(test_server_->counter(\"tcp.tcp_stats.upstream_flush_total\")->value(), 1);\n}\n\n// Test that Envoy doesn't crash or assert when shutting down with an upstream\n// flush active\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketUpstreamFlushEnvoyExit) {\n  // Use a very large size to make sure it is larger than the kernel socket read\n  // buffer.\n  const uint32_t size = 50 * 1024 * 1024;\n  config_helper_.setBufferLimits(size, size);\n  initialize();\n\n  std::string data(size, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  std::string expected_handshake =\n      fmt::format(fmt::runtime(EXPECTED_HANDSHAKE_FMT), original_dst_address->asString());\n  std::string received_data;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(expected_handshake.length(), &received_data));\n  ASSERT_EQ(normalizeXRequestId(received_data), sizeof(X_REQUEST_ID_VALUE) - 1);\n  ASSERT_EQ(received_data, expected_handshake);\n\n  // Handshake response with the correct hash value\n  std::string handshake_response =\n      fmt::format(fmt::runtime(HANDSHAKE_RESPONSE_FMT), \"GjgmQ9MzNsn3h7+vuIzY25rbQ9M=\");\n  ASSERT_TRUE(fake_upstream_connection->write(handshake_response));\n\n  ASSERT_TRUE(fake_upstream_connection->readDisable(true));\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n\n  // This ensures that fake_upstream_connection->readDisable has been run on\n  // it's thread before tcp_client starts writing.\n  tcp_client->waitForHalfClose();\n\n  ASSERT_TRUE(tcp_client->write(data, true));\n\n  // test_server_->waitForCounterGe(\"tcp.tcp_stats.upstream_flush_total\", 1);\n\n  test_server_.reset();\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n\n  // Success criteria is that no ASSERTs fire and there are no leaks.\n}\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/cilium_websocket_policy_integration_test.cc",
    "content": "#include <fmt/base.h>\n#include <fmt/format.h>\n#include <gtest/gtest-param-test.h>\n#include <gtest/gtest.h>\n\n#include <cstdint>\n#include <string>\n#include <utility>\n\n#include \"envoy/network/address.h\"\n#include \"envoy/network/socket.h\"\n\n#include \"test/integration/fake_upstream.h\"\n#include \"test/integration/integration_tcp_client.h\"\n#include \"test/test_common/environment.h\"\n#include \"test/test_common/network_utility.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"tests/cilium_tcp_integration.h\"\n\nnamespace Envoy {\n\n//\n// Cilium filters with TCP proxy\n//\n\n// params: is_ingress (\"true\", \"false\")\nconst std::string cilium_tcp_proxy_config_fmt = R\"EOF(\nadmin:\n  address:\n    socket_address:\n      address: 127.0.0.1\n      port_value: 0\nstatic_resources:\n  clusters:\n  - name: cluster1\n    connect_timeout: 5s\n    type: STATIC\n    load_assignment:\n      cluster_name: internal-cluster\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              socket_address:\n                address: 127.0.0.1\n                port_value: 0\n  - name: xds-grpc-cilium\n    connect_timeout:\n      seconds: 5\n    type: STATIC\n    lb_policy: ROUND_ROBIN\n    http2_protocol_options:\n    load_assignment:\n      cluster_name: xds-grpc-cilium\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              pipe:\n                path: /var/run/cilium/xds.sock\n  - name: internal-cluster\n    connect_timeout: 5s\n    type: STATIC\n    load_assignment:\n      cluster_name: internal-cluster\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              socket_address:\n                address: 127.0.0.1\n                port_value: {1}\n  - name: internal-cluster2\n    connect_timeout: 5s\n    type: STATIC\n    load_assignment:\n      cluster_name: internal-cluster2\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              socket_address:\n                address: 127.0.0.1\n                port_value: {2}\n  listeners:\n  - name: listener_0\n    address:\n      socket_address:\n        address: 127.0.0.1\n        port_value: 0\n    filter_chains:\n      filters:\n      - name: cilium.network.websocket.client\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.WebSocketClient\n          access_log_path: \"{{ test_udsdir }}/access_log.sock\"\n          origin: \"jarno.cilium.rocks\"\n          host: \"jarno.cilium.rocks\"\n          ping_interval:\n            nanos: 1000000\n          ping_when_idle: true\n      - name: envoy.tcp_proxy\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy\n          stat_prefix: tcp_stats\n          cluster: internal-cluster\n  - name: internal-listener\n    address:\n      socket_address:\n        address: 127.0.0.1\n        port_value: {1}\n    listener_filters:\n      name: test_bpf_metadata\n      typed_config:\n        \"@type\": type.googleapis.com/cilium.TestBpfMetadata\n        is_ingress: {0}\n    filter_chains:\n    - filters:\n      - name: cilium.network\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.NetworkFilter\n      - name: envoy.http_connection_manager\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager\n          stat_prefix: config_test\n          upgrade_configs:\n          - upgrade_type: websocket\n          codec_type: auto\n          use_remote_address: true\n          skip_xff_append: true\n          http_filters:\n          - name: test_l7policy\n            typed_config:\n              \"@type\": type.googleapis.com/cilium.L7Policy\n              access_log_path: \"{{ test_udsdir }}/access_log.sock\"\n          - name: envoy.filters.http.router\n            typed_config:\n              \"@type\": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router\n          route_config:\n            name: policy_enabled\n            virtual_hosts:\n              name: integration\n              domains: \"*\"\n              routes:\n              - route:\n                  cluster: internal-cluster2\n                  max_grpc_timeout:\n                    seconds: 0\n                    nanos: 0\n                match:\n                  prefix: \"/\"\n  - name: internal-listener2\n    address:\n      socket_address:\n        address: 127.0.0.1\n        port_value: {2}\n    filter_chains:\n    - filters:\n      - name: cilium.network.websocket.server\n        typed_config:\n          \"@type\": type.googleapis.com/cilium.WebSocketServer\n          access_log_path: \"{{ test_udsdir }}/access_log.sock\"\n          origin: \"jarno.cilium.rocks\"\n      - name: envoy.filters.network.tcp_proxy\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy\n          stat_prefix: tcp_stats\n          cluster: cluster1\n)EOF\";\n\nclass CiliumWebSocketIntegrationTest : public CiliumTcpIntegrationTest {\npublic:\n  CiliumWebSocketIntegrationTest()\n      : CiliumWebSocketIntegrationTest(reserveInternalListenerPorts(GetParam())) {}\n\n  void initialize() override {\n    CiliumTcpIntegrationTest::initialize();\n    reserved_internal_listener_ports_.release();\n  }\n\n  struct ReservedInternalListenerPorts {\n    ReservedInternalListenerPorts(uint32_t first_port, uint32_t second_port,\n                                  Network::SocketPtr first_socket, Network::SocketPtr second_socket)\n        : first_port_(first_port), second_port_(second_port),\n          first_socket_(std::move(first_socket)), second_socket_(std::move(second_socket)) {}\n\n    void release() {\n      first_socket_.reset();\n      second_socket_.reset();\n    }\n\n    const uint32_t first_port_;\n    const uint32_t second_port_;\n    Network::SocketPtr first_socket_;\n    Network::SocketPtr second_socket_;\n  };\n\n  static ReservedInternalListenerPorts\n  reserveInternalListenerPorts(Network::Address::IpVersion version) {\n    auto first_reserved =\n        Network::Test::bindFreeLoopbackPort(version, Network::Socket::Type::Stream, true);\n\n    constexpr uint32_t max_attempts = 16;\n    for (uint32_t attempt = 0; attempt < max_attempts; attempt++) {\n      auto second_reserved =\n          Network::Test::bindFreeLoopbackPort(version, Network::Socket::Type::Stream, true);\n\n      const uint32_t first_port = first_reserved.first->ip()->port();\n      const uint32_t second_port = second_reserved.first->ip()->port();\n      if (second_port != first_port) {\n        return {first_port, second_port, std::move(first_reserved.second),\n                std::move(second_reserved.second)};\n      }\n    }\n\n    ADD_FAILURE() << \"failed to reserve distinct loopback ports\";\n    return {0, 0, std::move(first_reserved.second), nullptr};\n  }\n\n  static std::string makeConfig(Network::Address::IpVersion version,\n                                const ReservedInternalListenerPorts& reserved_ports) {\n    return fmt::format(\n        fmt::runtime(TestEnvironment::substitute(cilium_tcp_proxy_config_fmt, version)), \"true\",\n        reserved_ports.first_port_, reserved_ports.second_port_);\n  }\n\n  std::string testPolicyFmt() override {\n    return TestEnvironment::substitute(R\"EOF(version_info: \"0\"\nresources:\n- \"@type\": type.googleapis.com/cilium.NetworkPolicy\n  endpoint_ips:\n  - '{{ ntop_ip_loopback_address }}'\n  policy: 3\n  ingress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n  egress_per_port_policies:\n  - port: {0}\n    rules:\n    - remote_policies: [ 1 ]\n)EOF\",\n                                       GetParam());\n  }\n\nprivate:\n  explicit CiliumWebSocketIntegrationTest(ReservedInternalListenerPorts reserved_ports)\n      : CiliumTcpIntegrationTest(makeConfig(GetParam(), reserved_ports)),\n        reserved_internal_listener_ports_(std::move(reserved_ports)) {}\n\n  ReservedInternalListenerPorts reserved_internal_listener_ports_;\n};\n\nINSTANTIATE_TEST_SUITE_P(IpVersions, CiliumWebSocketIntegrationTest,\n                         testing::ValuesIn(TestEnvironment::getIpVersionsForTest()),\n                         TestUtility::ipTestParamsToString);\n\n// Test upstream writing before downstream downstream does.\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketUpstreamWritesFirst) {\n  initialize();\n  // sample the ping count before connecting\n  const uint64_t previous_ping_count = test_server_->counter(\"websocket.ping_sent_count\")->value();\n\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  // wait for at least one more ping to arrive as proof that the handshake is ready\n  test_server_->waitForCounterGe(\"websocket.ping_sent_count\", previous_ping_count + 1);\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"hello\"));\n  tcp_client->waitForData(\"hello\");\n\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n  std::string received;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(5, &received));\n  ASSERT_EQ(received, \"hello\");\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  tcp_client->waitForHalfClose();\n  ASSERT_TRUE(tcp_client->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n}\n\n// Test proxying data in both directions, and that all data is flushed properly\n// when there is an upstream disconnect.\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketUpstreamDisconnect) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  std::string received;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(5, &received));\n  ASSERT_EQ(received, \"hello\");\n\n  ASSERT_TRUE(fake_upstream_connection->write(\"world\"));\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  tcp_client->waitForHalfClose();\n  tcp_client->close();\n\n  EXPECT_EQ(\"world\", tcp_client->data());\n}\n\n// Test proxying data in both directions, and that all data is flushed properly\n// when the client disconnects.\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketDownstreamDisconnect) {\n  initialize();\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(\"hello\"));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  std::string received;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(5, &received));\n  ASSERT_EQ(received, \"hello\");\n  ASSERT_TRUE(fake_upstream_connection->write(\"world\"));\n  tcp_client->waitForData(\"world\");\n\n  ASSERT_TRUE(tcp_client->write(\"hello\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForData(10, &received));\n  ASSERT_EQ(received, \"hellohello\");\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->write(\"\", true));\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n  tcp_client->waitForDisconnect();\n}\n\nTEST_P(CiliumWebSocketIntegrationTest, CiliumWebSocketLargeWrite) {\n  config_helper_.setBufferLimits(1024, 1024);\n  initialize();\n\n  std::string data(1024 * 16, 'a');\n  IntegrationTcpClientPtr tcp_client = makeTcpConnection(lookupPort(\"tcp_proxy\"));\n  ASSERT_TRUE(tcp_client->write(data));\n  FakeRawConnectionPtr fake_upstream_connection;\n  ASSERT_TRUE(fake_upstreams_[0]->waitForRawConnection(fake_upstream_connection));\n\n  std::string received;\n  ASSERT_TRUE(fake_upstream_connection->waitForData(data.size(), &received));\n  ASSERT_EQ(received, data);\n  ASSERT_TRUE(fake_upstream_connection->write(data));\n  tcp_client->waitForData(data);\n\n  tcp_client->close();\n  ASSERT_TRUE(fake_upstream_connection->waitForHalfClose());\n  ASSERT_TRUE(fake_upstream_connection->close());\n  ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());\n\n  uint32_t upstream_pauses =\n      test_server_->counter(\"cluster.cluster1.upstream_flow_control_paused_reading_total\")->value();\n  uint32_t upstream_resumes =\n      test_server_->counter(\"cluster.cluster1.upstream_flow_control_resumed_reading_total\")\n          ->value();\n  EXPECT_EQ(upstream_pauses, upstream_resumes);\n  uint32_t downstream_pauses =\n      test_server_->counter(\"tcp.tcp_stats.downstream_flow_control_paused_reading_total\")->value();\n  uint32_t downstream_resumes =\n      test_server_->counter(\"tcp.tcp_stats.downstream_flow_control_resumed_reading_total\")->value();\n  // Since we are receiving early data, downstream connection will already be read\n  // disabled so downstream pause metric is not emitted when upstream buffer hits high\n  // watermark. When the upstream buffer watermark goes down, downstream will be read\n  // enabled and downstream resume metric will be emitted.\n  EXPECT_EQ(downstream_pauses, 2);\n  EXPECT_EQ(downstream_resumes, 2);\n}\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/health_check_sink_server.cc",
    "content": "#include \"tests/health_check_sink_server.h\"\n\n#include <chrono>\n#include <functional>\n#include <string>\n\n#include \"envoy/data/core/v3/health_check_event.pb.h\"\n\n#include \"source/common/common/logger.h\"\n\n#include \"absl/base/thread_annotations.h\"\n#include \"absl/synchronization/mutex.h\"\n#include \"absl/time/time.h\"\n#include \"absl/types/optional.h\"\n#include \"tests/uds_server.h\"\n\nnamespace Envoy {\n\nHealthCheckSinkServer::HealthCheckSinkServer(const std::string path)\n    : UDSServer(path, std::bind(&HealthCheckSinkServer::msgCallback, this, std::placeholders::_1)) {\n  startServerThread();\n}\n\nHealthCheckSinkServer::~HealthCheckSinkServer() { shutdownServerThread(); }\n\nvoid HealthCheckSinkServer::clear() {\n  absl::MutexLock lock(&mutex_);\n  events_.clear();\n}\n\nabsl::optional<envoy::data::core::v3::HealthCheckEvent>\nHealthCheckSinkServer::waitForEvent(std::chrono::milliseconds timeout) {\n  absl::MutexLock lock(&mutex_);\n  auto predicate = [this]() ABSL_SHARED_LOCKS_REQUIRED(mutex_) {\n    mutex_.AssertHeld();\n    return !events_.empty();\n  };\n  mutex_.AwaitWithTimeout(absl::Condition(&predicate), absl::Milliseconds(timeout.count()));\n  auto event = events_.front();\n  events_.pop_front();\n  return event;\n}\n\nvoid HealthCheckSinkServer::msgCallback(const std::string& data) {\n  envoy::data::core::v3::HealthCheckEvent event;\n  if (!event.ParseFromString(data)) {\n    ENVOY_LOG(warn, \"Health check event parse failed!\");\n  } else {\n    ENVOY_LOG(info, \"Health check event: {}\", event.DebugString());\n    absl::MutexLock lock(&mutex_);\n    events_.emplace_back(event);\n  }\n}\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/health_check_sink_server.h",
    "content": "#pragma once\n\n#include <chrono>\n#include <list>\n#include <string>\n\n#include \"envoy/data/core/v3/health_check_event.pb.h\"\n#include \"envoy/data/core/v3/health_check_event.pb.validate.h\" // IWYU pragma: keep\n\n#include \"test/test_common/utility.h\"\n\n#include \"absl/base/thread_annotations.h\"\n#include \"absl/synchronization/mutex.h\"\n#include \"absl/types/optional.h\"\n#include \"tests/uds_server.h\"\n\nnamespace Envoy {\n\nclass HealthCheckSinkServer : public UDSServer {\npublic:\n  HealthCheckSinkServer(const std::string path);\n  ~HealthCheckSinkServer() override;\n\n  void clear();\n  absl::optional<envoy::data::core::v3::HealthCheckEvent>\n  waitForEvent(std::chrono::milliseconds timeout = TestUtility::DefaultTimeout);\n\n  template <typename P>\n  bool expectEventTo(P&& pred, std::chrono::milliseconds timeout = TestUtility::DefaultTimeout) {\n    auto maybe_event = waitForEvent(timeout);\n    if (maybe_event.has_value()) {\n      return pred(maybe_event.value());\n    }\n    return false;\n  }\n\nprivate:\n  void msgCallback(const std::string& data);\n\n  absl::Mutex mutex_;\n  std::list<envoy::data::core::v3::HealthCheckEvent> events_ ABSL_GUARDED_BY(mutex_);\n};\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/health_check_sink_test.cc",
    "content": "#include <spdlog/common.h>\n\n#include <string>\n\n#include \"envoy/data/core/v3/health_check_event.pb.h\"\n#include \"envoy/registry/registry.h\"\n#include \"envoy/upstream/health_check_event_sink.h\"\n\n#include \"source/common/common/base_logger.h\"\n#include \"source/common/common/logger.h\"\n#include \"source/common/protobuf/protobuf.h\" // IWYU pragma: keep\n\n#include \"test/mocks/server/admin.h\"\n#include \"test/mocks/server/health_checker_factory_context.h\"\n#include \"test/test_common/utility.h\"\n\n#include \"cilium/api/health_check_sink.pb.h\"\n#include \"cilium/api/health_check_sink.pb.validate.h\" // IWYU pragma: keep\n#include \"gtest/gtest.h\"\n#include \"tests/health_check_sink_server.h\"\n\nnamespace Envoy {\nnamespace Cilium {\n\nTEST(HealthCheckEventPipeSinkFactory, createEmptyHealthCheckEventSink) {\n  auto factory =\n      Envoy::Registry::FactoryRegistry<Upstream::HealthCheckEventSinkFactory>::getFactory(\n          \"cilium.health_check.event_sink.pipe\");\n  EXPECT_NE(factory, nullptr);\n  auto empty_proto = factory->createEmptyConfigProto();\n  auto config = *dynamic_cast<cilium::HealthCheckEventPipeSink*>(empty_proto.get());\n  EXPECT_TRUE(config.path().empty());\n}\n\nTEST(HealthCheckEventPipeSinkFactory, createHealthCheckEventSink) {\n  auto factory =\n      Envoy::Registry::FactoryRegistry<Upstream::HealthCheckEventSinkFactory>::getFactory(\n          \"cilium.health_check.event_sink.pipe\");\n  EXPECT_NE(factory, nullptr);\n\n  cilium::HealthCheckEventPipeSink config;\n  config.set_path(\"test_path\");\n  Envoy::Protobuf::Any typed_config;\n  typed_config.PackFrom(config);\n\n  NiceMock<Server::Configuration::MockHealthCheckerFactoryContext> context;\n  EXPECT_NE(factory->createHealthCheckEventSink(typed_config, context), nullptr);\n}\n\nTEST(HealthCheckEventPipeSink, logTest) {\n  for (Logger::Logger& logger : Logger::Registry::loggers()) {\n    logger.setLevel(spdlog::level::trace);\n  }\n\n  // Set up server\n  std::string normal_path(\"test_path\");\n  HealthCheckSinkServer event_sink(normal_path);\n\n  // Set up client factory\n  auto factory =\n      Envoy::Registry::FactoryRegistry<Upstream::HealthCheckEventSinkFactory>::getFactory(\n          \"cilium.health_check.event_sink.pipe\");\n  EXPECT_NE(factory, nullptr);\n\n  // Set up client\n  auto empty_proto = factory->createEmptyConfigProto();\n  auto config = *dynamic_cast<cilium::HealthCheckEventPipeSink*>(empty_proto.get());\n  EXPECT_TRUE(config.path().empty());\n  config.set_path(normal_path);\n  Envoy::Protobuf::Any typed_config;\n  typed_config.PackFrom(config);\n  NiceMock<Server::Configuration::MockHealthCheckerFactoryContext> context;\n  auto pipe_sink = factory->createHealthCheckEventSink(typed_config, context);\n  EXPECT_NE(pipe_sink, nullptr);\n\n  envoy::data::core::v3::HealthCheckEvent eject_event;\n  TestUtility::loadFromYaml(R\"EOF(\n  health_checker_type: HTTP\n  host:\n    socket_address:\n      protocol: TCP\n      address: 10.0.0.1\n      resolver_name: ''\n      ipv4_compat: false\n      port_value: 443\n  cluster_name: fake_cluster\n  eject_unhealthy_event:\n    failure_type: ACTIVE\n  timestamp: '2009-02-13T23:31:31.234Z'\n  )EOF\",\n                            eject_event);\n\n  pipe_sink->log(eject_event);\n  EXPECT_TRUE(\n      event_sink.expectEventTo([&](const envoy::data::core::v3::HealthCheckEvent& observed_event) {\n        return Protobuf::util::MessageDifferencer::Equals(observed_event, eject_event);\n      }));\n\n  // Set up 2nd client on the same socket\n  auto pipe_sink2 = factory->createHealthCheckEventSink(typed_config, context);\n  EXPECT_NE(pipe_sink2, nullptr);\n\n  envoy::data::core::v3::HealthCheckEvent add_event;\n  TestUtility::loadFromYaml(R\"EOF(\n  health_checker_type: HTTP\n  host:\n    socket_address:\n      protocol: TCP\n      address: 10.0.0.1\n      resolver_name: ''\n      ipv4_compat: false\n      port_value: 443\n  cluster_name: fake_cluster\n  add_healthy_event:\n    first_check: false\n  timestamp: '2009-02-13T23:31:31.234Z'\n  )EOF\",\n                            add_event);\n\n  pipe_sink2->log(add_event);\n  EXPECT_TRUE(\n      event_sink.expectEventTo([&](const envoy::data::core::v3::HealthCheckEvent& observed_event) {\n        return Protobuf::util::MessageDifferencer::Equals(observed_event, add_event);\n      }));\n\n  // Set up another server on a different socket in an abstract namespace\n  // Set up server\n#define ABSTRACT_PATH \"@another\\0test_path\"\n  std::string abstract_name(ABSTRACT_PATH, sizeof(ABSTRACT_PATH) - 1);\n  HealthCheckSinkServer event_sink3(abstract_name);\n\n  // Set up 3rd client on a different socket\n  cilium::HealthCheckEventPipeSink config3;\n  config3.set_path(abstract_name);\n  typed_config.PackFrom(config3);\n  auto pipe_sink3 = factory->createHealthCheckEventSink(typed_config, context);\n  EXPECT_NE(pipe_sink3, nullptr);\n\n  pipe_sink3->log(eject_event);\n  EXPECT_TRUE(\n      event_sink3.expectEventTo([&](const envoy::data::core::v3::HealthCheckEvent& observed_event) {\n        return Protobuf::util::MessageDifferencer::Equals(observed_event, eject_event);\n      }));\n}\n\n} // namespace Cilium\n} // namespace Envoy\n"
  },
  {
    "path": "tests/uds_server.cc",
    "content": "#include \"tests/uds_server.h\"\n\n#include <sys/socket.h>\n#include <sys/un.h>\n#include <unistd.h>\n\n#include <cerrno>\n#include <functional>\n#include <memory>\n#include <string>\n\n#include \"envoy/common/exception.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/common/utility.h\"\n#include \"source/common/network/address_impl.h\"\n\n#include \"test/test_common/thread_factory_for_test.h\"\n\nnamespace Envoy {\n\nUDSServer::UDSServer(const std::string& path, std::function<void(const std::string&)> cb)\n    : msg_cb_(cb), addr_(THROW_OR_RETURN_VALUE(Network::Address::PipeInstance::create(path),\n                                               std::unique_ptr<Network::Address::PipeInstance>)),\n      fd_(-1), fd2_(-1) {\n  ENVOY_LOG(trace, \"Creating unix domain socket server: {}\", addr_->asStringView());\n  if (!addr_->pipe()->abstractNamespace()) {\n    ::unlink(addr_->asString().c_str());\n  }\n  fd_ = ::socket(AF_UNIX, SOCK_SEQPACKET, 0);\n  if (fd_ == -1) {\n    ENVOY_LOG(error, \"Can't create socket: {}\", Envoy::errorDetails(errno));\n    return;\n  }\n\n  ENVOY_LOG(trace, \"Binding to {}\", addr_->asStringView());\n  if (::bind(fd_, addr_->sockAddr(), addr_->sockAddrLen()) == -1) {\n    ENVOY_LOG(warn, \"Bind to {} failed: {}\", addr_->asStringView(), Envoy::errorDetails(errno));\n    ::close(fd_);\n    fd_ = -1;\n    return;\n  }\n\n  ENVOY_LOG(trace, \"Listening on {}\", addr_->asStringView());\n  if (::listen(fd_, 5) == -1) {\n    ENVOY_LOG(warn, \"Listen on {} failed: {}\", addr_->asStringView(), Envoy::errorDetails(errno));\n    ::close(fd_);\n    fd_ = -1;\n    if (!addr_->pipe()->abstractNamespace()) {\n      ::unlink(addr_->asString().c_str());\n    }\n    return;\n  }\n}\n\nUDSServer::~UDSServer() { shutdownServerThread(); }\n\nvoid UDSServer::startServerThread() {\n  if (fd_ < 0 || thread_ != nullptr) {\n    return;\n  }\n  ENVOY_LOG(trace, \"Starting unix domain socket server thread fd: {}\", fd_.load());\n  thread_ = Thread::threadFactoryForTest().createThread([this]() { threadRoutine(); });\n}\n\nvoid UDSServer::shutdownServerThread() {\n  const int fd = fd_.exchange(-1);\n  const int fd2 = fd2_.exchange(-1);\n\n  if (fd2 >= 0) {\n    ::shutdown(fd2, SHUT_RD);\n    ::close(fd2);\n  }\n  if (fd >= 0) {\n    ::shutdown(fd, SHUT_RD);\n    errno = 0;\n    ::close(fd);\n  }\n  if (thread_ != nullptr) {\n    ENVOY_LOG(trace, \"Waiting on unix domain socket server to close: {}\",\n              Envoy::errorDetails(errno));\n    thread_->join();\n    thread_.reset();\n  }\n  if (!addr_->pipe()->abstractNamespace()) {\n    ::unlink(addr_->asString().c_str());\n  }\n}\n\nvoid UDSServer::threadRoutine() {\n  while (fd_ >= 0) {\n    ENVOY_LOG(debug, \"Unix domain socket server thread started on fd: {}\", fd_.load());\n    // Accept a new connection\n    struct sockaddr_un addr;\n    socklen_t addr_len = sizeof(addr);\n    ENVOY_LOG(trace, \"Unix domain socket server blocking accept on fd: {}\", fd_.load());\n    fd2_ = ::accept(fd_, reinterpret_cast<sockaddr*>(&addr), &addr_len);\n    if (fd2_ < 0) {\n      if (errno == EINVAL) {\n        return; // fd_ was closed\n      }\n      ENVOY_LOG(warn, \"Unix domain socket server accept on fd {} failed: {}\", fd_.load(),\n                Envoy::errorDetails(errno));\n      continue;\n    }\n    char buf[8192];\n    while (true) {\n      ENVOY_LOG(trace, \"Unix domain socket server blocking recv on fd: {}\", fd2_.load());\n      ssize_t received = ::recv(fd2_, buf, sizeof(buf), 0);\n      if (received < 0) {\n        if (errno == EINTR) {\n          continue;\n        }\n        ENVOY_LOG(warn, \"Unix domain socket server recv on fd {} failed: {}\", fd2_.load(),\n                  Envoy::errorDetails(errno));\n        break;\n      } else if (received == 0) {\n        ENVOY_LOG(trace, \"Unix domain socket server client on fd {} has closed socket\",\n                  fd2_.load());\n        break;\n      } else {\n        std::string data(buf, received);\n        if (msg_cb_) {\n          msg_cb_(data);\n        }\n      }\n    }\n    const int fd2 = fd2_.exchange(-1);\n    if (fd2 >= 0) {\n      ::close(fd2);\n    }\n  }\n}\n\n} // namespace Envoy\n"
  },
  {
    "path": "tests/uds_server.h",
    "content": "#pragma once\n\n#include <atomic>\n#include <functional>\n#include <memory>\n#include <string>\n\n#include \"envoy/thread/thread.h\"\n\n#include \"source/common/common/logger.h\"\n#include \"source/common/network/address_impl.h\"\n\nnamespace Envoy {\n\nclass UDSServer : public Logger::Loggable<Logger::Id::router> {\npublic:\n  UDSServer(const std::string& path, std::function<void(const std::string&)> cb);\n  virtual ~UDSServer();\n\nprotected:\n  // Derived classes bind callbacks into their own state, so start the server thread only after\n  // the derived object has finished constructing.\n  void startServerThread();\n  void shutdownServerThread();\n\nprivate:\n  void threadRoutine();\n\n  std::function<void(const std::string&)> msg_cb_;\n  std::shared_ptr<Network::Address::PipeInstance> addr_;\n  std::atomic<int> fd_;\n  std::atomic<int> fd2_;\n  Thread::ThreadPtr thread_;\n};\n\n} // namespace Envoy\n"
  },
  {
    "path": "tools/BUILD",
    "content": "load(\n    \"@envoy//bazel:envoy_build_system.bzl\",\n    \"envoy_package\",\n)\n\nlicenses([\"notice\"])  # Apache 2\n\nenvoy_package()\n\nexports_files([\n    \"check_repositories.sh\",\n    \"stack_decode.py\",\n])\n"
  },
  {
    "path": "tools/check_repositories.sh",
    "content": "#!/bin/bash\n\nset -eu\n\n# Check whether any git repositories are defined.\n# Git repository definition contains `commit` and `remote` fields.\nif git grep -n \"commit =\\|remote =\" -- '*.bzl'; then\n  echo \"Using git repositories is not allowed.\"\n  echo \"To ensure that all dependencies can be stored offline in distdir, only HTTP repositories are allowed.\"\n  exit 1\nfi\n\n# Check whether number of defined `url =` or `urls =` and `sha256 =` kwargs in\n# repository definitions is equal.\nurls_count=$(git grep -E \"\\<url(s)? =\" -- '*.bzl' | wc -l)\nsha256sums_count=$(git grep -E \"\\<sha256 =\" -- '*.bzl' | wc -l)\n\nif [[ $urls_count != \"$sha256sums_count\" ]]; then\n  echo \"Found more defined repository URLs than SHA256 sums, which means that there are some repositories without sums.\"\n  echo \"Dependencies without SHA256 sums cannot be stored in distdir.\"\n  echo \"Please ensure that every repository has a SHA256 sum.\"\n  echo \"Repositories are defined in the following files:\"\n  echo \"\"\n  echo \"    bazel/repository_locations.bzl\"\n  echo \"    api/bazel/repositories.bzl\"\n  exit 1\nfi\n"
  },
  {
    "path": "tools/code_format/config.yaml",
    "content": "suffixes:\n  # Suffixes to include in checking\n  included:\n  - BUILD\n  - WORKSPACE\n  - .bzl\n  - .cc\n  - .h\n  - .java\n  - .m\n  - .mm\n  - .proto\n\n  # Histogram names which are allowed to be suffixed with the unit symbol, all of the pre-existing\n  # ones were grandfathered as part of PR #8484 for backwards compatibility.\n  histogram_with_si:\n    include:\n    - cx_rtt_us\n    - cx_rtt_variance_us\n    - downstream_cx_length_ms\n    - downstream_cx_length_ms\n    - initialization_time_ms\n    - loop_duration_us\n    - poll_delay_us\n    - request_time_ms\n    - upstream_cx_connect_ms\n    - upstream_cx_length_ms\n\n  proto:\n  - .proto\n\n  repositories_bzl:\n  - bazel/repositories.bzl\n\npaths:\n  # Path prefixes to exclude from checking\n  # TODO(alyssawilk) unexclude mobile\n  excluded:\n  - .\n  - bazel/external/http_parser/\n  - bazel/rbe/toolchains/configs/\n  - bazel-\n  - build\n  - contrib/contrib_build_config.bzl\n  - examples/wasm-cc\n  - generated/\n  - mobile/\n  - source/extensions/common/wasm/ext\n  - source/extensions/extensions_build_config.bzl\n  - third_party/\n  - thirdparty/\n  - tools/dev/src\n  - tools/pyformat/\n  - tools/testdata/check_format/\n  - test/extensions/access_loggers/wasm/test_data\n  - test/extensions/bootstrap/wasm/test_data\n  - test/extensions/common/wasm/test_data\n  - test/extensions/filters/http/wasm/test_data\n  - test/extensions/filters/network/wasm/test_data\n  - test/extensions/stats_sinks/wasm/test_data\n\n  build_fixer:\n    exclude:\n    - BUILD\n    - bazel/BUILD\n    - bazel/external/\n    - bazel/toolchains/\n    - tools/clang_tools\n\n  # `build_urls`:\n  #   We want all URL references to exist in repository_locations.bzl files and have\n  #   metadata that conforms to the schema in ./api/bazel/external_deps.bzl. Below\n  #   we have some exceptions for either infrastructure files or places we fall\n  #   short today (Rust).\n  #\n  # NB: Please DO NOT extend the `build_urls` allow list without consulting\n  # @envoyproxy/dependency-shepherds.\n  build_urls:\n    include:\n    - api/bazel/envoy_git_repository.bzl\n    - api/bazel/envoy_http_archive.bzl\n    - api/bazel/repository_locations.bzl\n    - bazel/external/cargo/crates.bzl\n    - bazel/repository_locations.bzl\n\n  exception:\n    include:\n    # Header files that can throw exceptions. These should be limited; the only\n    # valid situation identified so far is template functions used for config\n    # processing.\n    - envoy/common/exception.h\n    - source/common/filter/config_discovery_impl.h\n    - source/common/config/utility.h\n    - source/common/matcher/matcher.h\n    - source/extensions/common/matcher/trie_matcher.h\n    - envoy/common/exception.h\n    - source/common/protobuf/utility.h\n    # legacy core files which throw exceptions. We can add to this list but strongly prefer\n    # StausOr where possible.\n    - source/common/watchdog/abort_action_config.cc\n    - source/extensions/watchdog/profile_action/config.cc\n    - source/common/router/route_config_update_receiver_impl.cc\n    - source/common/upstream/upstream_impl.cc\n    - source/common/network/listen_socket_impl.cc\n    - source/common/network/io_socket_handle_base_impl.cc\n    - source/common/network/address_impl.cc\n    - source/common/formatter/http_specific_formatter.cc\n    - source/common/formatter/stream_info_formatter.cc\n    - source/common/formatter/substitution_formatter.h\n    - source/common/formatter/substitution_formatter.cc\n    - source/common/stats/tag_extractor_impl.cc\n    - source/common/protobuf/yaml_utility.cc\n    - source/common/protobuf/utility.cc\n    - source/common/grpc/google_grpc_utils.cc\n    - source/common/tcp_proxy/tcp_proxy.cc\n    - source/common/listener_manager/lds_api.cc\n    - source/common/rds/common/route_config_provider_manager_impl.h\n    - source/common/rds/route_config_provider_manager.h\n    - source/common/json/json_internal.cc\n    - source/common/router/scoped_rds.cc\n    - source/common/router/config_impl.cc\n    - source/common/router/weighted_cluster_specifier.cc\n    - source/common/router/scoped_config_impl.cc\n    - source/common/common/utility.cc\n    - source/exe/stripped_main_base.cc\n    - source/common/http/header_utility.cc\n    - source/common/common/matchers.h\n    - source/server/options_impl.cc\n    - source/server/config_validation/server.cc\n    - source/server/admin/html/active_stats.js\n    - source/server/admin/runtime_handler.cc\n    - source/server/server.cc\n    - source/server/hot_restarting_base.cc\n    - source/server/hot_restart_impl.cc\n    - source/common/upstream/health_discovery_service.cc\n    - source/common/upstream/prod_cluster_info_factory.cc\n    - source/common/secret/sds_api.cc\n    - source/common/config/config_provider_impl.h\n    - source/common/grpc/google_grpc_creds_impl.cc\n    - source/server/drain_manager_impl.cc\n    - source/common/router/rds_impl.cc\n    - source/server/hot_restarting_parent.cc\n    - source/common/io/io_uring_worker_impl.cc\n    - source/common/event/file_event_impl.cc\n    - source/common/http/async_client_impl.cc\n    - source/common/grpc/google_async_client_impl.cc\n    # Extensions can exempt entire directories but new extensions\n    # points should ideally use StatusOr\n    - source/extensions/access_loggers\n    - source/extensions/clusters/eds/\n    - source/extensions/clusters/logical_dns\n    - source/extensions/clusters/original_dst\n    - source/extensions/clusters/redis\n    - source/extensions/clusters/static\n    - source/extensions/clusters/strict_dns\n    - source/extensions/common/async_files\n    - source/extensions/common/aws\n    - source/extensions/common/dubbo\n    - source/extensions/common/matcher\n    - source/extensions/common/tap\n    - source/extensions/common/wasm\n    - source/extensions/config/validators/minimum_clusters/minimum_clusters_validator.cc\n    - source/extensions/config_subscription\n    - source/extensions/compression/zstd/common/dictionary_manager.h\n    - source/extensions/filters/http/adaptive_concurrency/controller\n    - source/extensions/filters/http/basic_auth\n    - source/extensions/filters/http/cache\n    - source/extensions/filters/http/common\n    - source/extensions/filters/http/composite\n    - source/extensions/filters/http/ext_authz\n    - source/extensions/filters/http/ext_proc\n    - source/extensions/filters/http/file_system_buffer\n    - source/extensions/filters/http/gcp_authn\n    - source/extensions/filters/http/grpc_field_extraction\n    - source/extensions/filters/http/grpc_json_reverse_transcoder\n    - source/extensions/filters/http/grpc_json_transcoder\n    - source/extensions/filters/http/grpc_stats\n    - source/extensions/filters/http/health_check\n    - source/extensions/filters/http/json_to_metadata\n    - source/extensions/filters/http/jwt_authn\n    - source/extensions/filters/http/local_ratelimit\n    - source/extensions/filters/http/file_system_buffer\n    - source/extensions/filters/http/on_demand\n    - source/extensions/filters/http/json_to_metadata\n    - source/extensions/filters/http/json_to_metadata\n    - source/extensions/filters/http/thrift_to_metadata\n    - source/extensions/filters/http/lua\n    - source/extensions/filters/http/proto_message_extraction\n    - source/extensions/filters/http/rate_limit_quota\n    - source/extensions/filters/http/oauth2\n    - source/extensions/filters/http/wasm\n    - source/extensions/filters/network/dubbo_proxy\n    - source/extensions/filters/network/rbac\n    - source/extensions/filters/network/common\n    - source/extensions/filters/network/redis_proxy\n    - source/extensions/filters/network/zookeeper_proxy\n    - source/extensions/filters/network/ext_authz\n    - source/extensions/filters/network/ext_proc\n    - source/extensions/filters/network/mongo_proxy\n    - source/extensions/filters/network/thrift_proxy\n    - source/extensions/filters/network/generic_proxy\n    - source/extensions/filters/network/ratelimit\n    - source/extensions/filters/network/match_delegate\n    - source/extensions/filters/common\n    - source/extensions/filters/udp\n    - source/extensions/filters/listener\n    - source/extensions/formatter\n    - source/extensions/geoip_providers/maxmind/geoip_provider.cc\n    - source/extensions/grpc_credentials\n    - source/extensions/health_check/event_sinks/file/file_sink_impl.h\n    - source/extensions/health_checkers\n    - source/extensions/http/cache/file_system_http_cache/config.cc\n    - source/extensions/http/custom_response\n    - source/extensions/http/early_header_mutation\n    - source/extensions/http/injected_credentials\n    - source/extensions/http/stateful_session\n    - source/extensions/io_socket/user_space\n    - source/extensions/key_value\n    - source/extensions/load_balancing_policies/maglev\n    - source/extensions/load_balancing_policies/ring_hash\n    - source/extensions/load_balancing_policies/subset\n    - source/extensions/matching\n    - source/extensions/network/dns_resolver/cares/\n    - source/extensions/quic/server_preferred_address\n    - source/extensions/quic/connection_id_generator\n    - source/extensions/resource_monitors\n    - source/extensions/router/cluster_specifiers/lua/lua_cluster_specifier.cc\n    - source/extensions/string_matcher/lua/match.cc\n    - source/extensions/tracers\n    - source/extensions/transport_sockets/internal_upstream\n    - source/extensions/transport_sockets/tls/cert_validator\n    - source/extensions/transport_sockets/tcp_stats/config.cc\n\n  # Only one C++ file should instantiate grpc_init\n  grpc_init:\n    include:\n    - source/common/grpc/google_grpc_context.cc\n\n  # Files in these paths can use Protobuf::util::JsonStringToMessage\n  json_string_to_message:\n    include:\n    - source/common/protobuf/utility.cc\n    - source/common/protobuf/protobuf.h\n    - source/common/protobuf/yaml_utility.cc\n    - source/extensions/filters/http/proto_message_extraction/extraction_util/extraction_util.cc\n    - test/extensions/bootstrap/wasm/test_data/speed_cpp.cc\n\n  namespace_check:\n    exclude:\n    - tools/api_boost/testdata/\n\n  # Files that should not raise an error for using memcpy\n  memcpy:\n    include:\n    - source/common/common/mem_block_builder.h\n    - source/common/common/safe_memcpy.h\n\n  # Files in these paths can make reference to protobuf stuff directly\n  protobuf:\n    include:\n    - api/test\n    - api/bazel/cc_proto_descriptor_library\n    - ci/prebuilt\n    - source/common/protobuf\n    - source/extensions/filters/http/grpc_field_extraction\n    - source/extensions/filters/http/proto_message_extraction/extraction_util\n    - test/extensions/bootstrap/wasm/test_data\n\n  # Files that are allowed to use try without main thread assertion.\n  raw_try:\n    include:\n    - source/common/common/thread.h\n    - source/exe/terminate_handler.cc\n\n  # Files matching these exact names can reference real-world time. These include the class\n  # definitions for real-world time, the construction of them in main(), and perf annotation.\n  # For now it includes the validation server but that really should be injected too.\n  real_time:\n    include:\n    - source/common/common/perf_annotation.h\n    - source/common/common/utility.h\n    - source/common/event/real_time_system.cc\n    - source/common/event/real_time_system.h\n    - source/exe/main_common.cc\n    - source/exe/main_common.h\n    - source/extensions/common/aws/utility.cc\n    - source/server/config_validation/server.cc\n    - test/common/common/log_macros_test.cc\n    - test/common/protobuf/utility_test.cc\n    - test/integration/integration.h\n    - test/test_common/simulated_time_system.cc\n    - test/test_common/simulated_time_system.h\n    - test/test_common/test_random_generator.cc\n    - test/test_common/test_time.cc\n    - test/test_common/test_time.h\n    - test/test_common/utility.cc\n    - test/tools/wee8_compile/wee8_compile.cc\n    - test/extensions/filters/http/stateful_session/stateful_session_integration_test.cc\n\n  # Tests in these paths may make use of the Registry::RegisterFactory constructor or the\n  # REGISTER_FACTORY macro. Other locations should use the InjectFactory helper class to\n  # perform temporary registrations.\n  register_factory_test:\n    include:\n    - test/common/config/registry_test.cc\n    - test/extensions/transport_sockets/tls/\n    - test/integration/clusters/\n    - test/integration/filters/\n    - test/integration/load_balancers/\n\n  # Files in these paths can use MessageLite::SerializeAsString\n  serialize_as_string:\n    include:\n    - api/bazel/cc_proto_descriptor_library/file_descriptor_generator.cc\n    - contrib/config/source/kv_store_xds_delegate.cc\n    - source/common/protobuf/utility.h\n    - source/common/protobuf/utility.cc\n    - source/extensions/filters/http/grpc_json_transcoder/json_transcoder_filter.cc\n    - source/extensions/http/cache/file_system_http_cache/cache_file_header_proto_util.cc\n    - test/common/grpc/codec_fuzz_test.cc\n    - test/common/grpc/codec_test.cc\n    - test/common/protobuf/utility_test.cc\n    - source/extensions/common/tap/tap_config_base.cc\n    - test/extensions/bootstrap/wasm/test_data/speed_cpp.cc\n    - test/extensions/filters/common/expr/context_test.cc\n    - test/extensions/filters/http/common/fuzz/uber_filter.h\n    - test/extensions/http/cache/file_system_http_cache/cache_file_header_proto_util_test.cc\n    - test/tools/router_check/router_check.cc\n\n  # Files in these paths can use std::regex\n  std_regex:\n    include:\n    - source/common/common/regex.h\n    - source/common/common/regex.cc\n    - source/common/common/utility.cc\n    - source/common/formatter/http_specific_formatter.cc\n    - source/common/formatter/stream_info_formatter.cc\n    - source/common/formatter/substitution_formatter.h\n    - source/common/formatter/substitution_formatter.cc\n    - source/common/stats/tag_extractor_impl.h\n    - source/common/stats/tag_extractor_impl.cc\n    - source/common/version/version.cc\n    - source/server/admin/prometheus_stats.h\n    - source/server/admin/prometheus_stats.cc\n    - source/server/admin/stats_params.h\n    - source/server/admin/stats_request.cc\n    - source/server/admin/utils.h\n    - source/server/admin/utils.cc\n\n  # These are entire files that are allowed to use std::string_view vs. individual exclusions. Right\n  # now this is just WASM which makes use of std::string_view heavily so we need to convert to\n  # absl::string_view internally. Everywhere else should be using absl::string_view for additional\n  # safety.\n  std_string_view:\n    include:\n    - source/extensions/common/wasm/context.h\n    - source/extensions/common/wasm/context.cc\n    - source/extensions/common/wasm/foreign.cc\n    - source/extensions/common/wasm/wasm.h\n    - source/extensions/common/wasm/wasm.cc\n    - source/extensions/common/wasm/wasm_vm.h\n    - source/extensions/common/wasm/wasm_vm.cc\n    - test/extensions/bootstrap/wasm/wasm_speed_test.cc\n    - test/extensions/bootstrap/wasm/wasm_test.cc\n    - test/extensions/common/wasm/wasm_test.cc\n    - test/extensions/stats_sinks/wasm/wasm_stat_sink_test.cc\n    - test/test_common/wasm_base.h\n\ndir_order:\n- envoy\n- common\n- source\n- exe\n- server\n- extensions\n- test\n\nre:\n  codeowners_contrib: (/contrib/[^@]*\\s+)(@.*)\n  codeowners_extensions: .*(extensions[^@]*\\s+)(@.*)\n  comment: //|\\*\n  designated_initializer: \\{\\s*\\.\\w+\\s*\\=\n  # Check for punctuation in a terminal ref clause, e.g.\n  # :ref:`panic mode. <arch_overview_load_balancing_panic_threshold>`\n  dot_multi_space: \\. +\n  duration_value: \\b[Dd]uration\\(([0-9.]+)\n  # C++17 feature, lacks sufficient support across various libraries / compilers.\n  for_each_n: for_each_n\\(\n  histogram_si_suffix: (?<=HISTOGRAM\\()[a-zA-Z0-9_]+_(b|kb|mb|ns|us|ms|s)(?=,)\n  line_number: ^(\\d+)[a|c|d]?\\d*(?:,\\d+[a|c|d]?\\d*)?$\n  mangled_protobuf_name: envoy::[a-z0-9_:]+::[A-Z][a-z]\\w*_\\w*_[A-Z]{2}\n  maintainers: .*github.com.(.*)\\)\\)\n  old_mock_method: MOCK_METHOD\\d\n  owner: \"@\\\\S+\"\n  runtime_guard_flag: RUNTIME_GUARD\\((.*)\\);\n  test_name_starting_lc: TEST(_.\\(.*,\\s|\\()[a-z].*\\)\\s\\{\n  virtual_include_headers: \\#include.*/_virtual_includes/\n  x_envoy_used_directly: .*\\\"x-envoy-.*\\\".*\n\nre_multiline:\n  proto_package: ^package (\\S+);\\n*\n\nreplacements:\n  code_convention:\n    # We can't just remove Times(1) everywhere, since .Times(1).WillRepeatedly\n    # is a legitimate pattern. See\n    # https://github.com/google/googletest/blob/master/googlemock/docs/for_dummies.md#cardinalities-how-many-times-will-it-be-called\n    \".Times(1);\": \";\"\n    # These may miss some cases, due to line breaks, but should reduce the\n    # Times(1) noise.\n    \".Times(1).WillOnce\": \".WillOnce\"\n    \".Times(1).WillRepeatedly\": \".WillOnce\"\n    \"Stats::ScopePtr\": \"Stats::ScopeSharedPtr\"\n\n  libcxx:\n    \"absl::make_unique<\": \"std::make_unique<\"\n\n  protobuf_type_errors:\n    # Other common mis-namespacing of protobuf types.\n    \"ProtobufWkt::Map\": \"Protobuf::Map\"\n    \"ProtobufWkt::MapPair\": \"Protobuf::MapPair\"\n    \"ProtobufUtil::MessageDifferencer\": \"Protobuf::util::MessageDifferencer\"\n\ninclude_angle: \"#include <\"\nunsorted_flags:\n- envoy.reloadable_features.activate_timers_next_event_loop\n- envoy.reloadable_features.grpc_json_transcoder_adhere_to_buffer_limits\n- envoy.reloadable_features.sanitize_http_header_referer\n\n# https://github.com/envoyproxy/envoy/issues/20589\n# https://github.com/envoyproxy/envoy/issues/9953\n# PLEASE DO NOT ADD FILES TO THIS LIST WITHOUT SENIOR MAINTAINER APPROVAL\nvisibility_excludes:\n- source/extensions/clusters/eds/\n- source/extensions/clusters/strict_dns/\n- source/extensions/clusters/static/\n- source/extensions/clusters/original_dst/\n- source/extensions/clusters/logical_dns/\n- source/extensions/clusters/dns/\n- source/extensions/early_data/BUILD\n- source/extensions/filters/http/buffer/BUILD\n- source/extensions/filters/network/common/BUILD\n- source/extensions/filters/network/generic_proxy/interface/BUILD\n- source/extensions/http/header_validators/envoy_default/BUILD\n- source/extensions/transport_sockets/common/BUILD\n- source/extensions/transport_sockets/tap/BUILD\n- source/extensions/udp_packet_writer/default/BUILD\n- source/extensions/udp_packet_writer/gso/BUILD\n- source/extensions/path/uri_template_lib/BUILD\n- source/extensions/path/match/uri_template/BUILD\n- source/extensions/path/rewrite/uri_template/BUILD\n- source/extensions/quic/connection_id_generator/BUILD\n- source/extensions/quic/server_preferred_address/BUILD\n- source/extensions/listener_managers/listener_manager/BUILD\n- source/extensions/upstreams/tcp/BUILD\n- source/extensions/health_check/event_sinks/BUILD\n- source/extensions/health_checkers/BUILD\n- source/extensions/health_checkers/BUILD\n- source/extensions/health_checkers/BUILD\n- source/extensions/config_subscription/rest/BUILD\n- source/extensions/config_subscription/filesystem/BUILD\n- source/extensions/config_subscription/grpc/BUILD\n- source/extensions/load_balancing_policies/subset/BUILD\n- source/extensions/load_balancing_policies/ring_hash/BUILD\n- source/extensions/load_balancing_policies/round_robin/\n- source/extensions/load_balancing_policies/least_request/\n- source/extensions/load_balancing_policies/random/\n- source/extensions/load_balancing_policies/cluster_provided/\n- source/extensions/filters/http/match_delegate/\n- source/extensions/transport_sockets/tls/\n"
  },
  {
    "path": "tools/gen_compilation_database.py",
    "content": "#!/usr/bin/env python3\n\nimport argparse\nimport json\nimport os\nimport shlex\nimport subprocess\nfrom pathlib import Path\n\n\n# This method is equivalent to https://github.com/grailbio/bazel-compilation-database/blob/master/generate.py\ndef generate_compilation_database(args):\n    # We need to download all remote outputs for generated source code. This option lives here to override those\n    # specified in bazelrc.\n    bazel_startup_options = shlex.split(os.environ.get(\"BAZEL_STARTUP_OPTION_LIST\", \"\"))\n    bazel_options = shlex.split(os.environ.get(\"BAZEL_BUILD_OPTION_LIST\", \"\")) + [\n        \"--config=compdb\",\n        \"--remote_download_outputs=all\",\n    ]\n\n    source_dir_targets = args.bazel_targets\n    if args.exclude_contrib:\n        source_dir_targets.remove(\"//contrib/...\")\n\n    subprocess.check_call([\"bazel\", *bazel_startup_options, \"build\"] + bazel_options + [\n        \"--aspects=@bazel_compdb//:aspects.bzl%compilation_database_aspect\",\n        \"--output_groups=compdb_files,header_files\"\n    ] + source_dir_targets)\n\n    execroot = subprocess.check_output(\n        [\"bazel\", *bazel_startup_options, \"info\", *bazel_options,\n         \"execution_root\"]).decode().strip()\n\n    db_entries = []\n    for db in Path(execroot).glob('**/*.compile_commands.json'):\n        db_entries.extend(json.loads(db.read_text()))\n\n    def replace_execroot_marker(db_entry):\n        if 'directory' in db_entry and db_entry['directory'] == '__EXEC_ROOT__':\n            db_entry['directory'] = execroot\n        if 'command' in db_entry:\n            db_entry['command'] = (\n                db_entry['command'].replace('-isysroot __BAZEL_XCODE_SDKROOT__', ''))\n        return db_entry\n\n    return list(map(replace_execroot_marker, db_entries))\n\n\ndef is_header(filename):\n    for ext in (\".h\", \".hh\", \".hpp\", \".hxx\"):\n        if filename.endswith(ext):\n            return True\n    return False\n\n\ndef is_compile_target(target, args):\n    filename = target[\"file\"]\n    if is_header(filename):\n        if args.include_all:\n            return True\n        if not args.include_headers:\n            return False\n\n    if filename.startswith(\"bazel-out/\"):\n        if args.include_all:\n            return True\n        if not args.include_genfiles:\n            return False\n\n    if filename.startswith(\"external/\"):\n        if args.include_all:\n            return True\n        if not args.include_external:\n            return False\n\n    return True\n\n\ndef modify_compile_command(target, args):\n    cc, options = target[\"command\"].split(\" \", 1)\n\n    # Workaround for bazel added C++11 options, those doesn't affect build itself but\n    # clang-tidy will misinterpret them.\n    options = options.replace(\"-std=c++0x \", \"\")\n    options = options.replace(\"-std=c++11 \", \"\")\n\n    if args.vscode:\n        # Visual Studio Code doesn't seem to like \"-iquote\". Replace it with\n        # old-style \"-I\".\n        options = options.replace(\"-iquote \", \"-I \")\n\n    if args.system_clang:\n        if cc.find(\"clang\"):\n            cc = \"clang++\"\n\n    if is_header(target[\"file\"]):\n        options += \" -Wno-pragma-once-outside-header -Wno-unused-const-variable\"\n        options += \" -Wno-unused-function\"\n        # By treating external/envoy* as C++ files we are able to use this script from subrepos that\n        # depend on Envoy targets.\n        if not target[\"file\"].startswith(\"external/\") or target[\"file\"].startswith(\n                \"external/envoy\"):\n            # *.h file is treated as C header by default while our headers files are all C++20.\n            options = \"-x c++ -std=c++20 -fexceptions \" + options\n\n    target[\"command\"] = \" \".join([cc, options])\n    return target\n\n\ndef fix_compilation_database(args, db):\n    db = [modify_compile_command(target, args) for target in db if is_compile_target(target, args)]\n\n    with open(\"compile_commands.json\", \"w\") as db_file:\n        json.dump(db, db_file, indent=2)\n\n\nif __name__ == \"__main__\":\n    parser = argparse.ArgumentParser(description='Generate JSON compilation database')\n    parser.add_argument('--include_external', action='store_true')\n    parser.add_argument('--include_genfiles', action='store_true')\n    parser.add_argument('--include_headers', action='store_true')\n    parser.add_argument('--vscode', action='store_true')\n    parser.add_argument('--include_all', action='store_true')\n    parser.add_argument('--exclude_contrib', action='store_true')\n    parser.add_argument(\n        '--system-clang',\n        action='store_true',\n        help=\n        'Use `clang++` instead of the bazel wrapper for commands. This may help if `clangd` cannot find/run the tools.'\n    )\n    parser.add_argument(\n        'bazel_targets', nargs='*', default=[\n            \"//cilium/...\",\n            \"//starter/...\",\n            \"//tests/...\",\n        ])\n    args = parser.parse_args()\n    fix_compilation_database(args, generate_compilation_database(args))\n"
  },
  {
    "path": "tools/install_bazelisk.sh",
    "content": "#!/usr/bin/env bash\n\nif ! command -v sudo >/dev/null; then\n    SUDO=\nelse\n    SUDO=sudo\nfi\n\n# renovate: datasource=github-releases depName=bazelbuild/bazelisk\nBAZELISK_VERSION=v1.29.0\n\ninstalled_bazelisk_version=\"\"\n\nif [[ $(command -v bazel) ]]; then\n    installed_bazelisk_version=$(bazel version | grep 'Bazelisk' | cut -d ' ' -f 3)\nfi\n\necho \"Checking if Bazelisk ${BAZELISK_VERSION} needs to be installed...\"\nif [[ \"${installed_bazelisk_version}\" = \"${BAZELISK_VERSION}\" || \"${installed_bazelisk_version}\" = \"development\" ]]; then\n    echo \"Bazelisk ${BAZELISK_VERSION} (or development) already installed, skipping.\"\nelse\n    BAZEL=$(command -v bazel)\n    if [ -n \"${BAZEL}\" ] ; then\n        echo \"Removing old Bazel version at ${BAZEL}\"\n        ${SUDO} rm \"${BAZEL}\"\n    else\n        BAZEL=/usr/local/bin/bazel\n    fi\n    OS=$(uname -s | tr '[:upper:]' '[:lower:]')\n    ARCH=$(uname -m)\n    if [ \"$ARCH\" = \"x86_64\" ]; then\n        ARCH=\"amd64\"\n    elif [ \"$ARCH\" = \"aarch64\" ]; then\n        ARCH=\"arm64\"\n    fi\n    echo \"Downloading bazel-${BAZEL_VERSION}-${OS}-${ARCH} to ${BAZEL}\"\n    ${SUDO} curl -sfL \"https://github.com/bazelbuild/bazelisk/releases/download/${BAZELISK_VERSION}/bazelisk-${OS}-${ARCH}\" -o \"${BAZEL}\"\n    ${SUDO} chmod +x \"${BAZEL}\"\nfi\n"
  },
  {
    "path": "tools/push_manifest.sh",
    "content": "#!/bin/bash\nset -e\n\nIMAGE_NAME=${1:-}\nIMAGE_TAG=${2:-latest}\nDOCKER_REPOSITORY=${3:-cilium}\nDOCKER_REGISTRY=${4:-quay.io}\nMANIFEST_VERSION=${5:-v1.0.0}\n\nIMAGE_ARCH=(\"amd64\" \"arm64\")\n\nUPLOAD_IMAGE=\"false\"\n\n# override defaults from arguments\nwhile [ \"$1\" != \"\" ]; do\n    case $1 in\n        -i | --image-upload )\n            UPLOAD_IMAGE=\"true\"\n            echo \"Upload image: ${UPLOAD_IMAGE}\"\n            ;;\n        * )\n            break;; \n    esac\n    shift\ndone\n\nfunction using_help() {\n  echo \"Please specify a image name!\"\n  echo -e \"\\nUsage::\\n\\tpush_manifest.sh IMAGE_NAME [IMAGE_TAG] [DOCKER_REPOSITORY] [DOCKER_REGISTRY]\"\n  echo -e \"\\nExample::\\n\\tpush_manifest.sh cilium-envoy latest\"\n  exit 1\n}\n\n\nfunction install_manifest() {\n  if [ ! -f \"./manifest-tool\" ]\n  then\n     wget https://github.com/estesp/manifest-tool/releases/download/${MANIFEST_VERSION}/manifest-tool-linux-${ARCH} \\\n          -O manifest-tool\n     chmod +x ./manifest-tool\n  fi\n}\n\nif [ -z \"${IMAGE_NAME}\" ]\nthen\n  using_help\nfi\n\n# push images\nif [ \"${UPLOAD_IMAGE}\" = \"true\" ]; then\n  for arch in \"${IMAGE_ARCH[@]}\"\t\n  do\n    docker push ${DOCKER_REGISTRY}/${DOCKER_REPOSITORY}/${IMAGE_NAME}:${IMAGE_TAG}-${arch}\n  done\nfi\n\n# get hardware name\ncase `uname -m` in\n  'x86_64' )\n    ARCH=amd64\n    ;;\n  'aarch64' )\n    ARCH=arm64\n    ;;\nesac\n\n# install manifest-tool v1.0.0\ninstall_manifest\n\nfor arch in \"${IMAGE_ARCH[@]}\"\ndo\n  if [ -z \"$PLATFORMS\" ]; then\n    PLATFORMS=\"linux/${arch}\"\n  else\n    PLATFORMS=\"$PLATFORMS,linux/${arch}\"\n  fi\ndone\n\n./manifest-tool push from-args --platforms ${PLATFORMS} \\\n\t--template ${DOCKER_REGISTRY}/${DOCKER_REPOSITORY}/${IMAGE_NAME}:${IMAGE_TAG}-ARCH \\\n\t--target ${DOCKER_REGISTRY}/${DOCKER_REPOSITORY}/${IMAGE_NAME}:${IMAGE_TAG}\n"
  },
  {
    "path": "tools/stack_decode.py",
    "content": "#!/usr/bin/env python3\n\n# Call addr2line as needed to resolve addresses in a stack trace. The addresses\n# will be replaced if they can be resolved into file and line numbers. The\n# executable must include debugging information to get file and line numbers.\n#\n# Two ways to call:\n#   1) Execute binary as a subprocess: stack_decode.py executable_file [args]\n#   2) Read log data from stdin: stack_decode.py -s executable_file\n#\n# In each case this script will add file and line information to any backtrace log\n# lines found and echo back all non-Backtrace lines untouched.\n#\n# This has been found to work best if the envoy binary was built with gcc, and with\n# bazel option -c dbg\n# This can be used to decode a stack trace produced by a non-debug gcc build, if\n# the debug build passed to stack_decode.py is otherwise identical.\n\nimport re\nimport subprocess\nimport sys\n\n\n# Process the log output looking for stacktrace snippets, for each line found to\n# contain backtrace output extract the address and call add2line to get the file\n# and line information. Output appended to end of original backtrace line. Output\n# any nonmatching lines unmodified. End when EOF received.\ndef decode_stacktrace_log(object_file, input_source, address_offset=0):\n    # Match something like:\n    #     [backtrace] [bazel-out/local-dbg/bin/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:84]\n    backtrace_marker = \"\\[backtrace\\] [^\\s]+\"\n    # Match something like:\n    #     ${backtrace_marker} Address mapping: 010c0000-02a77000\n    offset_re = re.compile(\"%s Address mapping: ([0-9A-Fa-f]+)-([0-9A-Fa-f]+)\" % backtrace_marker)\n    # Match something like:\n    #     ${backtrace_marker} #10: SYMBOL [0xADDR]\n    # or:\n    #     ${backtrace_marker} #10: [0xADDR]\n    stackaddr_re = re.compile(\"%s #\\d+:(?: .*)? \\[(0x[0-9a-fA-F]+)\\]$\" % backtrace_marker)\n    # Match something like:\n    #     #10 0xLOCATION (BINARY+0xADDR)\n    asan_re = re.compile(\" *#\\d+ *0x[0-9a-fA-F]+ *\\([^+]*\\+(0x[0-9a-fA-F]+)\\)\")\n\n    try:\n        while True:\n            line = input_source.readline()\n            if line == \"\":\n                return  # EOF\n            offset_match = offset_re.search(line)\n            if offset_match:\n                address_offset = int(offset_match.groups()[0], 16)\n                sys.stdout.write(\"%s (used as address offset)\\n\" % line.strip())\n                continue\n            stackaddr_match = stackaddr_re.search(line)\n            if not stackaddr_match:\n                stackaddr_match = asan_re.search(line)\n            if stackaddr_match:\n                address = stackaddr_match.groups()[0]\n                if address_offset != 0:\n                    address = hex(int(address, 16) - address_offset)\n                file_and_line_number = run_addr2line(object_file, address)\n                file_and_line_number = trim_proc_cwd(file_and_line_number)\n                if address_offset != 0:\n                    sys.stdout.write(\"%s->[%s] %s\" % (line.strip(), address, file_and_line_number))\n                else:\n                    sys.stdout.write(\"%s %s\" % (line.strip(), file_and_line_number))\n                continue\n            else:\n                # Pass through print all other log lines:\n                sys.stdout.write(line)\n    except KeyboardInterrupt:\n        return\n\n\n# Execute addr2line with a particular object file and input string of addresses\n# to resolve, one per line.\n#\n# Returns list of result lines\ndef run_addr2line(obj_file, addr_to_resolve):\n    return subprocess.check_output([\"addr2line\", \"-Cpie\", obj_file,\n                                    addr_to_resolve]).decode('utf-8')\n\n\n# Because of how bazel compiles, addr2line reports file names that begin with\n# \"/proc/self/cwd/\" and sometimes even \"/proc/self/cwd/./\". This isn't particularly\n# useful information, so trim it out and make a perfectly useful relative path.\ndef trim_proc_cwd(file_and_line_number):\n    trim_regex = r'/proc/self/cwd/(\\./)?'\n    return re.sub(trim_regex, '', file_and_line_number)\n\n\n# Execute pmap with a pid to calculate the addr offset\n#\n# Returns list of extended process memory information.\ndef run_pmap(pid):\n    return subprocess.check_output(['pmap', '-qX', str(pid)]).decode('utf-8')[1:]\n\n\n# Find the virtual address offset of the process. This may be needed due ASLR.\n#\n# Returns the virtual address offset as an integer, or 0 if unable to determine.\ndef find_address_offset(pid):\n    try:\n        proc_memory = run_pmap(pid)\n        match = re.search(r'([a-f0-9]+)\\s+r-xp', proc_memory)\n        if match is None:\n            return 0\n        return int(match.group(1), 16)\n    except (subprocess.CalledProcessError, PermissionError):\n        return 0\n\n\n# When setting the logging level to trace, it's possible that we'll bump\n# into chars not accepted by the default encoding. It's fine to\n# ignore these and keep going (instead of giving up and exiting\n# while possibly bringing Envoy down).\ndef ignore_decoding_errors(io_wrapper):\n    # Only avail since 3.7.\n    # https://docs.python.org/3/library/io.html#io.TextIOWrapper.reconfigure\n    if hasattr(io_wrapper, 'reconfigure'):\n        try:\n            io_wrapper.reconfigure(errors='ignore')\n        except:\n            pass\n\n    return io_wrapper\n\n\nif __name__ == \"__main__\":\n    if len(sys.argv) > 2 and sys.argv[1] == '-s':\n        decode_stacktrace_log(sys.argv[2], ignore_decoding_errors(sys.stdin))\n        sys.exit(0)\n    elif len(sys.argv) > 1:\n        rununder = subprocess.Popen(\n            sys.argv[1:], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)\n        offset = find_address_offset(rununder.pid)\n        decode_stacktrace_log(sys.argv[1], ignore_decoding_errors(rununder.stdout), offset)\n        returncode = rununder.wait()\n        # negative return code means process terminated by signal\n        # if so, add 128 to signal value to follow convention.\n        # sys.exit casts to unsigned int so a negative value leads\n        # to unexpected exit code.\n        exitcode = returncode if returncode >= 0 else 128 + abs(returncode)\n        sys.exit(exitcode)  # Pass back test pass/fail result\n    else:\n        print(\"Usage (execute subprocess): stack_decode.py executable_file [additional args]\")\n        print(\"Usage (read from stdin): stack_decode.py -s executable_file\")\n        sys.exit(1)\n"
  },
  {
    "path": "tools/update_version_matrix.sh",
    "content": "#!/bin/bash\n\nset -eu\n\n# Script to automatically update the version compatibility matrix in README.md\n# This script fetches the last N supported minor versions of Cilium,\n# gets all patch releases for each, and extracts the Envoy version from\n# each Cilium Docker image.\n#\n# Usage:\n#   ./update_version_matrix.sh [OPTIONS]\n#\n# Options:\n#   -n, --dry-run     Show what would be updated without making changes\n#   -v, --verbose     Enable verbose output\n#   -h, --help        Show this help message\n#\n# Environment variables:\n#   SUPPORTED_MINOR_VERSIONS  Number of minor versions to include (default: 3)\n\nSCRIPT_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" && pwd)\"\nREPO_ROOT=\"$(cd \"${SCRIPT_DIR}/..\" && pwd)\"\nREADME_FILE=\"${REPO_ROOT}/README.md\"\n\n# Number of minor versions to support (Cilium supports last 3 minor versions)\nSUPPORTED_MINOR_VERSIONS=${SUPPORTED_MINOR_VERSIONS:-3}\n\n# Options\nDRY_RUN=false\nVERBOSE=false\n\n# Parse command line arguments\nwhile [[ $# -gt 0 ]]; do\n    case $1 in\n        -n|--dry-run)\n            DRY_RUN=true\n            shift\n            ;;\n        -v|--verbose)\n            VERBOSE=true\n            shift\n            ;;\n        -h|--help)\n            echo \"Update the version compatibility matrix in README.md\"\n            echo \"\"\n            echo \"Usage: $(basename \"$0\") [OPTIONS]\"\n            echo \"\"\n            echo \"Options:\"\n            echo \"  -n, --dry-run     Show what would be updated without making changes\"\n            echo \"  -v, --verbose     Enable verbose output\"\n            echo \"  -h, --help        Show this help message\"\n            echo \"\"\n            echo \"Environment variables:\"\n            echo \"  SUPPORTED_MINOR_VERSIONS  Number of minor versions to include (default: 3)\"\n            exit 0\n            ;;\n        *)\n            echo \"Unknown option: $1\"\n            exit 1\n            ;;\n    esac\ndone\n\nlog_verbose() {\n    if [[ \"${VERBOSE}\" == \"true\" ]]; then\n        echo \"$@\" >&2\n    fi\n}\n\n# Temporary file for building the matrix\nTEMP_MATRIX=$(mktemp)\ntrap \"rm -f ${TEMP_MATRIX}\" EXIT\n\necho \"Fetching Cilium releases...\"\n\n# Get all Cilium release tags from GitHub API\n# Filter to stable releases (vX.Y.Z format, no rc/beta/alpha)\nget_cilium_releases() {\n    local page=1\n    local releases=\"\"\n\n    while true; do\n        local response\n        response=$(curl -s \"https://api.github.com/repos/cilium/cilium/releases?per_page=100&page=${page}\")\n\n        # Check if we got any results\n        if [[ $(echo \"${response}\" | jq 'length') -eq 0 ]]; then\n            break\n        fi\n\n        # Extract tag names, filter stable releases only (vX.Y.Z)\n        local page_releases\n        page_releases=$(echo \"${response}\" | jq -r '.[].tag_name' | grep -E '^v[0-9]+\\.[0-9]+\\.[0-9]+$' || true)\n\n        if [[ -n \"${page_releases}\" ]]; then\n            releases=\"${releases}${page_releases}\"$'\\n'\n        fi\n\n        # Check if there are more pages\n        if [[ $(echo \"${response}\" | jq 'length') -lt 100 ]]; then\n            break\n        fi\n\n        page=$((page + 1))\n    done\n\n    echo \"${releases}\" | grep -v '^$' | sort -V -r\n}\n\n# Extract minor version from a full version string (e.g., v1.18.1 -> 1.18)\nget_minor_version() {\n    echo \"$1\" | sed -E 's/^v([0-9]+\\.[0-9]+)\\.[0-9]+$/\\1/'\n}\n\n# Get the main branch Envoy version from Cilium main branch Dockerfile\nget_main_envoy_version() {\n    local dockerfile_url=\"https://raw.githubusercontent.com/cilium/cilium/main/images/cilium/Dockerfile\"\n    local dockerfile_content\n    dockerfile_content=$(curl -sf \"${dockerfile_url}\" 2>/dev/null || true)\n\n    if [[ -n \"${dockerfile_content}\" ]]; then\n        # Extract version from CILIUM_ENVOY_IMAGE line and convert to vX.Y.x format\n        local version\n        version=$(echo \"${dockerfile_content}\" | grep -E \"CILIUM_ENVOY_IMAGE=\" | grep -oE 'cilium-envoy:v[0-9]+\\.[0-9]+\\.[0-9]+' | grep -oE '[0-9]+\\.[0-9]+' | head -1 || true)\n        if [[ -n \"${version}\" ]]; then\n            echo \"v${version}.x\"\n            return\n        fi\n    fi\n\n    echo \"  Warning: Could not fetch main branch Envoy version\" >&2\n    echo \"unknown\"\n}\n\n# Get the Envoy version from Cilium GitHub source (Dockerfile)\nget_envoy_version() {\n    local cilium_version=$1\n    local envoy_version\n\n    log_verbose \"  Fetching Envoy version for Cilium ${cilium_version} from GitHub...\"\n\n    # Fetch the Dockerfile from GitHub and extract CILIUM_ENVOY_IMAGE version\n    # Format: ARG CILIUM_ENVOY_IMAGE=quay.io/cilium/cilium-envoy:v1.35.9-...\n    local dockerfile_url=\"https://raw.githubusercontent.com/cilium/cilium/${cilium_version}/images/cilium/Dockerfile\"\n    local dockerfile_content\n    dockerfile_content=$(curl -sf \"${dockerfile_url}\" 2>/dev/null || true)\n\n    if [[ -z \"${dockerfile_content}\" ]]; then\n        echo \"  Warning: Failed to fetch Dockerfile for ${cilium_version}\" >&2\n        echo \"unknown\"\n        return\n    fi\n\n    # Extract version from CILIUM_ENVOY_IMAGE line\n    # Pattern: quay.io/cilium/cilium-envoy:vX.Y.Z-...\n    envoy_version=$(echo \"${dockerfile_content}\" | grep -E \"CILIUM_ENVOY_IMAGE=\" | grep -oE 'cilium-envoy:v[0-9]+\\.[0-9]+\\.[0-9]+' | grep -oE 'v[0-9]+\\.[0-9]+\\.[0-9]+' | head -1 || true)\n\n    if [[ -n \"${envoy_version}\" ]]; then\n        echo \"${envoy_version}\"\n        return\n    fi\n\n    echo \"  Warning: Could not extract Envoy version for ${cilium_version}\" >&2\n    echo \"unknown\"\n}\n\n# Get all releases\nALL_RELEASES=$(get_cilium_releases)\n\nif [[ -z \"${ALL_RELEASES}\" ]]; then\n    echo \"Error: Failed to fetch Cilium releases\"\n    exit 1\nfi\n\n# Get unique minor versions and select the latest N\nMINOR_VERSIONS=$(echo \"${ALL_RELEASES}\" | while read -r version; do\n    get_minor_version \"${version}\"\ndone | sort -V -r | uniq | head -n \"${SUPPORTED_MINOR_VERSIONS}\")\n\necho \"Supported minor versions: $(echo ${MINOR_VERSIONS} | tr '\\n' ' ')\"\n\n# Build the matrix\necho \"Building version matrix...\"\n\n# Collect all versions we need to process\nVERSIONS_TO_PROCESS=\"\"\nfor minor in ${MINOR_VERSIONS}; do\n    # Get all patch releases for this minor version\n    PATCH_RELEASES=$(echo \"${ALL_RELEASES}\" | grep \"^v${minor}\\.\" | sort -V -r)\n    VERSIONS_TO_PROCESS=\"${VERSIONS_TO_PROCESS}${PATCH_RELEASES}\"$'\\n'\ndone\n\n# Remove empty lines and process each version\necho \"${VERSIONS_TO_PROCESS}\" | grep -v '^$' | while read -r version; do\n    envoy_ver=$(get_envoy_version \"${version}\")\n    echo \"${version}|${envoy_ver}\"\ndone > \"${TEMP_MATRIX}\"\n\n# Generate the new table content\ngenerate_table() {\n    local main_envoy_version\n    main_envoy_version=$(get_main_envoy_version)\n\n    echo \"| Cilium Version | Envoy version |\"\n    echo \"|----------------|---------------|\"\n    printf \"| %-14s | %-13s |\\n\" \"(main)\" \"${main_envoy_version}\"\n\n    while IFS='|' read -r cilium_ver envoy_ver; do\n        printf \"| %-14s | %-13s |\\n\" \"${cilium_ver}\" \"${envoy_ver}\"\n    done < \"${TEMP_MATRIX}\"\n    echo \"\"\n}\n\n# Find the line numbers for the table\nTABLE_START=$(grep -n \"| Cilium Version | Envoy version |\" \"${README_FILE}\" | cut -d: -f1)\n\nif [[ -z \"${TABLE_START}\" ]]; then\n    echo \"Error: Could not find version matrix table in README.md\"\n    exit 1\nfi\n\n# Find where the table ends (first non-table line after the header)\nTABLE_END=$(tail -n +\"${TABLE_START}\" \"${README_FILE}\" | grep -n -m 1 \"^[^|]\" | cut -d: -f1)\nTABLE_END=$((TABLE_START + TABLE_END - 2))\n\nif [[ \"${DRY_RUN}\" == \"true\" ]]; then\n    echo \"\"\n    echo \"=== DRY RUN - Would update README.md with: ===\"\n    echo \"\"\n    generate_table\n    echo \"\"\n    echo \"=== End of table ===\"\n    echo \"\"\n    echo \"Versions collected:\"\n    cat \"${TEMP_MATRIX}\"\nelse\n    # Update the README.md\n    echo \"Updating README.md...\"\n\n    # Create new README content\n    {\n        head -n \"$((TABLE_START - 1))\" \"${README_FILE}\"\n        generate_table\n        tail -n \"+$((TABLE_END + 1))\" \"${README_FILE}\"\n    } > \"${README_FILE}.new\"\n\n    mv \"${README_FILE}.new\" \"${README_FILE}\"\n\n    echo \"Done! Version matrix updated in README.md\"\n    echo \"\"\n    echo \"Updated versions:\"\n    cat \"${TEMP_MATRIX}\"\nfi\n"
  },
  {
    "path": "vendor/cel.dev/expr/.bazelversion",
    "content": "7.3.2\n# Keep this pinned version in parity with cel-go\n"
  },
  {
    "path": "vendor/cel.dev/expr/.gitignore",
    "content": "bazel-*\nMODULE.bazel.lock\n"
  },
  {
    "path": "vendor/cel.dev/expr/BUILD.bazel",
    "content": "load(\"@io_bazel_rules_go//go:def.bzl\", \"go_library\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nlicenses([\"notice\"])  # Apache 2.0\n\ngo_library(\n    name = \"expr\",\n    srcs = [\n        \"checked.pb.go\",\n        \"eval.pb.go\",\n        \"explain.pb.go\",\n        \"syntax.pb.go\",\n        \"value.pb.go\",\n    ],\n    importpath = \"cel.dev/expr\",\n    visibility = [\"//visibility:public\"],\n    deps = [\n        \"@org_golang_google_protobuf//reflect/protoreflect\",\n        \"@org_golang_google_protobuf//runtime/protoimpl\",\n        \"@org_golang_google_protobuf//types/known/anypb\",\n        \"@org_golang_google_protobuf//types/known/durationpb\",\n        \"@org_golang_google_protobuf//types/known/emptypb\",\n        \"@org_golang_google_protobuf//types/known/structpb\",\n        \"@org_golang_google_protobuf//types/known/timestamppb\",\n    ],\n)\n\nalias(\n    name = \"go_default_library\",\n    actual = \":expr\",\n    visibility = [\"//visibility:public\"],\n)\n"
  },
  {
    "path": "vendor/cel.dev/expr/CODE_OF_CONDUCT.md",
    "content": "# Contributor Code of Conduct\n## Version 0.1.1 (adapted from 0.3b-angular)\n\nAs contributors and maintainers of the Common Expression Language\n(CEL) project, we pledge to respect everyone who contributes by\nposting issues, updating documentation, submitting pull requests,\nproviding feedback in comments, and any other activities.\n\nCommunication through any of CEL's channels (GitHub, Gitter, IRC,\nmailing lists, Google+, Twitter, etc.) must be constructive and never\nresort to personal attacks, trolling, public or private harassment,\ninsults, or other unprofessional conduct.\n\nWe promise to extend courtesy and respect to everyone involved in this\nproject regardless of gender, gender identity, sexual orientation,\ndisability, age, race, ethnicity, religion, or level of experience. We\nexpect anyone contributing to the project to do the same.\n\nIf any member of the community violates this code of conduct, the\nmaintainers of the CEL project may take action, removing issues,\ncomments, and PRs or blocking accounts as deemed appropriate.\n\nIf you are subject to or witness unacceptable behavior, or have any\nother concerns, please email us at\n[cel-conduct@google.com](mailto:cel-conduct@google.com).\n"
  },
  {
    "path": "vendor/cel.dev/expr/CONTRIBUTING.md",
    "content": "# How to Contribute\n\nWe'd love to accept your patches and contributions to this project. There are a\nfew guidelines you need to follow.\n\n## Contributor License Agreement\n\nContributions to this project must be accompanied by a Contributor License\nAgreement. You (or your employer) retain the copyright to your contribution,\nthis simply gives us permission to use and redistribute your contributions as\npart of the project. Head over to <https://cla.developers.google.com/> to see\nyour current agreements on file or to sign a new one.\n\nYou generally only need to submit a CLA once, so if you've already submitted one\n(even if it was for a different project), you probably don't need to do it\nagain.\n\n## Code reviews\n\nAll submissions, including submissions by project members, require review. We\nuse GitHub pull requests for this purpose. Consult\n[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more\ninformation on using pull requests.\n\n## What to expect from maintainers\n\nExpect maintainers to respond to new issues or pull requests within a week.\nFor outstanding and ongoing issues and particularly for long-running\npull requests, expect the maintainers to review within a week of a\ncontributor asking for a new review. There is no commitment to resolution --\nmerging or closing a pull request, or fixing or closing an issue -- because some\nissues will require more discussion than others.\n"
  },
  {
    "path": "vendor/cel.dev/expr/GOVERNANCE.md",
    "content": "# Project Governance\n\nThis document defines the governance process for the CEL language. CEL is\nGoogle-developed, but openly governed. Major contributors to the CEL\nspecification and its corresponding implementations constitute the CEL\nLanguage Council. New members may be added by a unanimous vote of the\nCouncil.\n\nThe MAINTAINERS.md file lists the members of the CEL Language Council, and\nunofficially indicates the \"areas of expertise\" of each member with respect\nto the publicly available CEL repos.\n\n## Code Changes\n\nCode changes must follow the standard pull request (PR) model documented in the\nCONTRIBUTING.md for each CEL repo. All fixes and features must be reviewed by a\nmaintainer. The maintainer reserves the right to request that any feature\nrequest (FR) or PR be reviewed by the language council.\n\n## Syntax and Semantic Changes\n\nSyntactic and semantic changes must be reviewed by the CEL Language Council.\nMaintainers may also request language council review at their discretion.\n\nThe review process is as follows:\n\n- Create a Feature Request in the CEL-Spec repo. The feature description will\n  serve as an abstract for the detailed design document.\n- Co-develop a design document with the Language Council.\n- Once the proposer gives the design document approval, the document will be\n  linked to the FR in the CEL-Spec repo and opened for comments to members of\n  the cel-lang-discuss@googlegroups.com.\n- The Language Council will review the design doc at the next council meeting\n  (once every three weeks) and the council decision included in the document.\n\nIf the proposal is approved, the spec will be updated by a maintainer (if\napplicable) and a rationale will be included in the CEL-Spec wiki to ensure\nfuture developers may follow CEL's growth and direction over time.\n\nApproved proposals may be implemented by the proposer or by the maintainers as\nthe parties see fit. At the discretion of the maintainer, changes from the\napproved design are permitted during implementation if they improve the user\nexperience and clarity of the feature.\n"
  },
  {
    "path": "vendor/cel.dev/expr/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/cel.dev/expr/MAINTAINERS.md",
    "content": "# CEL Language Council\n\n| Name            | Company      | Area of Expertise |\n|-----------------|--------------|-------------------|\n| Alfred Fuller   | Facebook     | cel-cpp, cel-spec |\n| Jim Larson      | Google       | cel-go, cel-spec  |\n| Matthais Blume  | Google       | cel-spec          |\n| Tristan Swadell | Google       | cel-go, cel-spec  |\n\n## Emeritus\n\n* Sanjay Ghemawat (Google)\n* Wolfgang Grieskamp (Facebook)\n"
  },
  {
    "path": "vendor/cel.dev/expr/MODULE.bazel",
    "content": "module(\n    name = \"cel-spec\",\n)\n\nbazel_dep(\n    name = \"bazel_skylib\",\n    version = \"1.7.1\",\n)\nbazel_dep(\n    name = \"gazelle\",\n    version = \"0.39.1\",\n    repo_name = \"bazel_gazelle\",\n)\nbazel_dep(\n    name = \"protobuf\",\n    version = \"27.1\",\n    repo_name = \"com_google_protobuf\",\n)\nbazel_dep(\n    name = \"rules_cc\",\n    version = \"0.0.17\",\n)\nbazel_dep(\n    name = \"rules_go\",\n    version = \"0.53.0\",\n    repo_name = \"io_bazel_rules_go\",\n)\nbazel_dep(\n    name = \"rules_java\",\n    version = \"7.6.5\",\n)\nbazel_dep(\n    name = \"rules_proto\",\n    version = \"7.0.2\",\n)\nbazel_dep(\n    name = \"rules_python\",\n    version = \"0.35.0\",\n)\n\n### PYTHON ###\npython = use_extension(\"@rules_python//python/extensions:python.bzl\", \"python\")\npython.toolchain(\n    ignore_root_user_error = True,\n    python_version = \"3.11\",\n)\n\ngo_sdk = use_extension(\"@io_bazel_rules_go//go:extensions.bzl\", \"go_sdk\")\ngo_sdk.download(version = \"1.23.0\")\n\ngo_deps = use_extension(\"@bazel_gazelle//:extensions.bzl\", \"go_deps\")\ngo_deps.from_file(go_mod = \"//:go.mod\")\nuse_repo(\n    go_deps,\n    \"org_golang_google_protobuf\",\n)\n"
  },
  {
    "path": "vendor/cel.dev/expr/README.md",
    "content": "# Common Expression Language\n\nThe Common Expression Language (CEL) implements common semantics for expression\nevaluation, enabling different applications to more easily interoperate.\n\nKey Applications\n\n*   Security policy: organizations have complex infrastructure and need common\n    tooling to reason about the system as a whole\n*   Protocols: expressions are a useful data type and require interoperability\n    across programming languages and platforms.\n\n\nGuiding philosophy:\n\n1.  Keep it small & fast.\n    *   CEL evaluates in linear time, is mutation free, and not Turing-complete.\n        This limitation is a feature of the language design, which allows the\n        implementation to evaluate orders of magnitude faster than equivalently\n        sandboxed JavaScript.\n2.  Make it extensible.\n    *   CEL is designed to be embedded in applications, and allows for\n        extensibility via its context which allows for functions and data to be\n        provided by the software that embeds it.\n3.  Developer-friendly.\n    *   The language is approachable to developers. The initial spec was based\n        on the experience of developing Firebase Rules and usability testing\n        many prior iterations.\n    *   The library itself and accompanying toolings should be easy to adopt by\n        teams that seek to integrate CEL into their platforms.\n\nThe required components of a system that supports CEL are:\n\n*   The textual representation of an expression as written by a developer. It is\n    of similar syntax to expressions in C/C++/Java/JavaScript\n*   A representation of the program's abstract syntax tree (AST).\n*   A compiler library that converts the textual representation to the binary\n    representation. This can be done ahead of time (in the control plane) or\n    just before evaluation (in the data plane).\n*   A context containing one or more typed variables, often protobuf messages.\n    Most use-cases will use `attribute_context.proto`\n*   An evaluator library that takes the binary format in the context and\n    produces a result, usually a Boolean.\n\nFor use cases which require persistence or cross-process communcation, it is\nhighly recommended to serialize the type-checked expression as a protocol\nbuffer. The CEL team will maintains canonical protocol buffers for ASTs and\nwill keep these versions identical and wire-compatible in perpetuity:\n\n*  [CEL canonical](https://github.com/google/cel-spec/tree/master/proto/cel/expr)\n*  [CEL v1alpha1](https://github.com/googleapis/googleapis/tree/master/google/api/expr/v1alpha1)\n\n\nExample of boolean conditions and object construction:\n\n``` c\n// Condition\naccount.balance >= transaction.withdrawal\n    || (account.overdraftProtection\n    && account.overdraftLimit >= transaction.withdrawal  - account.balance)\n\n// Object construction\ncommon.GeoPoint{ latitude: 10.0, longitude: -5.5 }\n```\n\nFor more detail, see:\n\n*   [Introduction](doc/intro.md)\n*   [Language Definition](doc/langdef.md)\n\nReleased under the [Apache License](LICENSE).\n"
  },
  {
    "path": "vendor/cel.dev/expr/WORKSPACE",
    "content": "load(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\n\nhttp_archive(\n    name = \"io_bazel_rules_go\",\n    sha256 = \"099a9fb96a376ccbbb7d291ed4ecbdfd42f6bc822ab77ae6f1b5cb9e914e94fa\",\n    urls = [\n        \"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.35.0/rules_go-v0.35.0.zip\",\n        \"https://github.com/bazelbuild/rules_go/releases/download/v0.35.0/rules_go-v0.35.0.zip\",\n    ],\n)\n\nhttp_archive(\n    name = \"bazel_gazelle\",\n    sha256 = \"ecba0f04f96b4960a5b250c8e8eeec42281035970aa8852dda73098274d14a1d\",\n    urls = [\n        \"https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.29.0/bazel-gazelle-v0.29.0.tar.gz\",\n        \"https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.29.0/bazel-gazelle-v0.29.0.tar.gz\",\n    ],\n)\n\nhttp_archive(\n    name = \"rules_proto\",\n    sha256 = \"e017528fd1c91c5a33f15493e3a398181a9e821a804eb7ff5acdd1d2d6c2b18d\",\n    strip_prefix = \"rules_proto-4.0.0-3.20.0\",\n    urls = [\n        \"https://github.com/bazelbuild/rules_proto/archive/refs/tags/4.0.0-3.20.0.tar.gz\",\n    ],\n)\n\n# googleapis as of 09/16/2024\nhttp_archive(\n    name = \"com_google_googleapis\",\n    strip_prefix = \"googleapis-4082d5e51e8481f6ccc384cacd896f4e78f19dee\",\n    sha256 = \"57319889d47578b3c89bf1b3f34888d796a8913d63b32d750a4cd12ed303c4e8\",\n    urls = [\n        \"https://github.com/googleapis/googleapis/archive/4082d5e51e8481f6ccc384cacd896f4e78f19dee.tar.gz\",\n    ],\n)\n\n# protobuf\nhttp_archive(\n    name = \"com_google_protobuf\",\n    sha256 = \"8242327e5df8c80ba49e4165250b8f79a76bd11765facefaaecfca7747dc8da2\",\n    strip_prefix = \"protobuf-3.21.5\",\n    urls = [\"https://github.com/protocolbuffers/protobuf/archive/v3.21.5.zip\"],\n)\n\n# googletest\nhttp_archive(\n     name = \"com_google_googletest\",\n     urls = [\"https://github.com/google/googletest/archive/master.zip\"],\n     strip_prefix = \"googletest-master\",\n)\n\n# gflags\nhttp_archive(\n    name = \"com_github_gflags_gflags\",\n    sha256 = \"6e16c8bc91b1310a44f3965e616383dbda48f83e8c1eaa2370a215057b00cabe\",\n    strip_prefix = \"gflags-77592648e3f3be87d6c7123eb81cbad75f9aef5a\",\n    urls = [\n        \"https://mirror.bazel.build/github.com/gflags/gflags/archive/77592648e3f3be87d6c7123eb81cbad75f9aef5a.tar.gz\",\n        \"https://github.com/gflags/gflags/archive/77592648e3f3be87d6c7123eb81cbad75f9aef5a.tar.gz\",\n    ],\n)\n\n# glog\nhttp_archive(\n    name = \"com_google_glog\",\n    sha256 = \"1ee310e5d0a19b9d584a855000434bb724aa744745d5b8ab1855c85bff8a8e21\",\n    strip_prefix = \"glog-028d37889a1e80e8a07da1b8945ac706259e5fd8\",\n    urls = [\n        \"https://mirror.bazel.build/github.com/google/glog/archive/028d37889a1e80e8a07da1b8945ac706259e5fd8.tar.gz\",\n        \"https://github.com/google/glog/archive/028d37889a1e80e8a07da1b8945ac706259e5fd8.tar.gz\",\n    ],\n)\n\n# absl\nhttp_archive(\n    name = \"com_google_absl\",\n    strip_prefix = \"abseil-cpp-master\",\n    urls = [\"https://github.com/abseil/abseil-cpp/archive/master.zip\"],\n)\n\nload(\"@io_bazel_rules_go//go:deps.bzl\", \"go_rules_dependencies\", \"go_register_toolchains\")\nload(\"@bazel_gazelle//:deps.bzl\", \"gazelle_dependencies\", \"go_repository\")\nload(\"@com_google_googleapis//:repository_rules.bzl\", \"switched_rules_by_language\")\nload(\"@rules_proto//proto:repositories.bzl\", \"rules_proto_dependencies\", \"rules_proto_toolchains\")\nload(\"@com_google_protobuf//:protobuf_deps.bzl\", \"protobuf_deps\")\n\nswitched_rules_by_language(\n    name = \"com_google_googleapis_imports\",\n    cc = True,\n)\n\n# Do *not* call *_dependencies(), etc, yet.  See comment at the end.\n\n# Generated Google APIs protos for Golang\n# Generated Google APIs protos for Golang 08/26/2024\ngo_repository(\n    name = \"org_golang_google_genproto_googleapis_api\",\n    build_file_proto_mode = \"disable_global\",\n    importpath = \"google.golang.org/genproto/googleapis/api\",\n    sum = \"h1:YcyjlL1PRr2Q17/I0dPk2JmYS5CDXfcdb2Z3YRioEbw=\",\n    version = \"v0.0.0-20240826202546-f6391c0de4c7\",\n)\n\n# Generated Google APIs protos for Golang 08/26/2024\ngo_repository(\n    name = \"org_golang_google_genproto_googleapis_rpc\",\n    build_file_proto_mode = \"disable_global\",\n    importpath = \"google.golang.org/genproto/googleapis/rpc\",\n    sum = \"h1:2035KHhUv+EpyB+hWgJnaWKJOdX1E95w2S8Rr4uWKTs=\",\n    version = \"v0.0.0-20240826202546-f6391c0de4c7\",\n)\n\n# gRPC deps\ngo_repository(\n    name = \"org_golang_google_grpc\",\n    build_file_proto_mode = \"disable_global\",\n    importpath = \"google.golang.org/grpc\",\n    tag = \"v1.49.0\",\n)\n\ngo_repository(\n    name = \"org_golang_x_net\",\n    importpath = \"golang.org/x/net\",\n    sum = \"h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=\",\n    version = \"v0.0.0-20190311183353-d8887717615a\",\n)\n\ngo_repository(\n    name = \"org_golang_x_text\",\n    importpath = \"golang.org/x/text\",\n    sum = \"h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=\",\n    version = \"v0.3.2\",\n)\n\n# Run the dependencies at the end.  These will silently try to import some\n# of the above repositories but at different versions, so ours must come first.\ngo_rules_dependencies()\ngo_register_toolchains(version = \"1.19.1\")\ngazelle_dependencies()\nrules_proto_dependencies()\nrules_proto_toolchains()\nprotobuf_deps()\n"
  },
  {
    "path": "vendor/cel.dev/expr/WORKSPACE.bzlmod",
    "content": ""
  },
  {
    "path": "vendor/cel.dev/expr/checked.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v5.27.1\n// source: cel/expr/checked.proto\n\npackage expr\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\temptypb \"google.golang.org/protobuf/types/known/emptypb\"\n\tstructpb \"google.golang.org/protobuf/types/known/structpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype Type_PrimitiveType int32\n\nconst (\n\tType_PRIMITIVE_TYPE_UNSPECIFIED Type_PrimitiveType = 0\n\tType_BOOL                       Type_PrimitiveType = 1\n\tType_INT64                      Type_PrimitiveType = 2\n\tType_UINT64                     Type_PrimitiveType = 3\n\tType_DOUBLE                     Type_PrimitiveType = 4\n\tType_STRING                     Type_PrimitiveType = 5\n\tType_BYTES                      Type_PrimitiveType = 6\n)\n\n// Enum value maps for Type_PrimitiveType.\nvar (\n\tType_PrimitiveType_name = map[int32]string{\n\t\t0: \"PRIMITIVE_TYPE_UNSPECIFIED\",\n\t\t1: \"BOOL\",\n\t\t2: \"INT64\",\n\t\t3: \"UINT64\",\n\t\t4: \"DOUBLE\",\n\t\t5: \"STRING\",\n\t\t6: \"BYTES\",\n\t}\n\tType_PrimitiveType_value = map[string]int32{\n\t\t\"PRIMITIVE_TYPE_UNSPECIFIED\": 0,\n\t\t\"BOOL\":                       1,\n\t\t\"INT64\":                      2,\n\t\t\"UINT64\":                     3,\n\t\t\"DOUBLE\":                     4,\n\t\t\"STRING\":                     5,\n\t\t\"BYTES\":                      6,\n\t}\n)\n\nfunc (x Type_PrimitiveType) Enum() *Type_PrimitiveType {\n\tp := new(Type_PrimitiveType)\n\t*p = x\n\treturn p\n}\n\nfunc (x Type_PrimitiveType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (Type_PrimitiveType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_cel_expr_checked_proto_enumTypes[0].Descriptor()\n}\n\nfunc (Type_PrimitiveType) Type() protoreflect.EnumType {\n\treturn &file_cel_expr_checked_proto_enumTypes[0]\n}\n\nfunc (x Type_PrimitiveType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use Type_PrimitiveType.Descriptor instead.\nfunc (Type_PrimitiveType) EnumDescriptor() ([]byte, []int) {\n\treturn file_cel_expr_checked_proto_rawDescGZIP(), []int{1, 0}\n}\n\ntype Type_WellKnownType int32\n\nconst (\n\tType_WELL_KNOWN_TYPE_UNSPECIFIED Type_WellKnownType = 0\n\tType_ANY                         Type_WellKnownType = 1\n\tType_TIMESTAMP                   Type_WellKnownType = 2\n\tType_DURATION                    Type_WellKnownType = 3\n)\n\n// Enum value maps for Type_WellKnownType.\nvar (\n\tType_WellKnownType_name = map[int32]string{\n\t\t0: \"WELL_KNOWN_TYPE_UNSPECIFIED\",\n\t\t1: \"ANY\",\n\t\t2: \"TIMESTAMP\",\n\t\t3: \"DURATION\",\n\t}\n\tType_WellKnownType_value = map[string]int32{\n\t\t\"WELL_KNOWN_TYPE_UNSPECIFIED\": 0,\n\t\t\"ANY\":                         1,\n\t\t\"TIMESTAMP\":                   2,\n\t\t\"DURATION\":                    3,\n\t}\n)\n\nfunc (x Type_WellKnownType) Enum() *Type_WellKnownType {\n\tp := new(Type_WellKnownType)\n\t*p = x\n\treturn p\n}\n\nfunc (x Type_WellKnownType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (Type_WellKnownType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_cel_expr_checked_proto_enumTypes[1].Descriptor()\n}\n\nfunc (Type_WellKnownType) Type() protoreflect.EnumType {\n\treturn &file_cel_expr_checked_proto_enumTypes[1]\n}\n\nfunc (x Type_WellKnownType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use Type_WellKnownType.Descriptor instead.\nfunc (Type_WellKnownType) EnumDescriptor() ([]byte, []int) {\n\treturn file_cel_expr_checked_proto_rawDescGZIP(), []int{1, 1}\n}\n\ntype CheckedExpr struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tReferenceMap  map[int64]*Reference   `protobuf:\"bytes,2,rep,name=reference_map,json=referenceMap,proto3\" json:\"reference_map,omitempty\" protobuf_key:\"varint,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\tTypeMap       map[int64]*Type        `protobuf:\"bytes,3,rep,name=type_map,json=typeMap,proto3\" json:\"type_map,omitempty\" protobuf_key:\"varint,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\tSourceInfo    *SourceInfo            `protobuf:\"bytes,5,opt,name=source_info,json=sourceInfo,proto3\" json:\"source_info,omitempty\"`\n\tExprVersion   string                 `protobuf:\"bytes,6,opt,name=expr_version,json=exprVersion,proto3\" json:\"expr_version,omitempty\"`\n\tExpr          *Expr                  `protobuf:\"bytes,4,opt,name=expr,proto3\" json:\"expr,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *CheckedExpr) Reset() {\n\t*x = CheckedExpr{}\n\tmi := &file_cel_expr_checked_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CheckedExpr) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CheckedExpr) ProtoMessage() {}\n\nfunc (x *CheckedExpr) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_checked_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CheckedExpr.ProtoReflect.Descriptor instead.\nfunc (*CheckedExpr) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_checked_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *CheckedExpr) GetReferenceMap() map[int64]*Reference {\n\tif x != nil {\n\t\treturn x.ReferenceMap\n\t}\n\treturn nil\n}\n\nfunc (x *CheckedExpr) GetTypeMap() map[int64]*Type {\n\tif x != nil {\n\t\treturn x.TypeMap\n\t}\n\treturn nil\n}\n\nfunc (x *CheckedExpr) GetSourceInfo() *SourceInfo {\n\tif x != nil {\n\t\treturn x.SourceInfo\n\t}\n\treturn nil\n}\n\nfunc (x *CheckedExpr) GetExprVersion() string {\n\tif x != nil {\n\t\treturn x.ExprVersion\n\t}\n\treturn \"\"\n}\n\nfunc (x *CheckedExpr) GetExpr() *Expr {\n\tif x != nil {\n\t\treturn x.Expr\n\t}\n\treturn nil\n}\n\ntype Type struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to TypeKind:\n\t//\n\t//\t*Type_Dyn\n\t//\t*Type_Null\n\t//\t*Type_Primitive\n\t//\t*Type_Wrapper\n\t//\t*Type_WellKnown\n\t//\t*Type_ListType_\n\t//\t*Type_MapType_\n\t//\t*Type_Function\n\t//\t*Type_MessageType\n\t//\t*Type_TypeParam\n\t//\t*Type_Type\n\t//\t*Type_Error\n\t//\t*Type_AbstractType_\n\tTypeKind      isType_TypeKind `protobuf_oneof:\"type_kind\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Type) Reset() {\n\t*x = Type{}\n\tmi := &file_cel_expr_checked_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Type) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Type) ProtoMessage() {}\n\nfunc (x *Type) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_checked_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Type.ProtoReflect.Descriptor instead.\nfunc (*Type) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_checked_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *Type) GetTypeKind() isType_TypeKind {\n\tif x != nil {\n\t\treturn x.TypeKind\n\t}\n\treturn nil\n}\n\nfunc (x *Type) GetDyn() *emptypb.Empty {\n\tif x != nil {\n\t\tif x, ok := x.TypeKind.(*Type_Dyn); ok {\n\t\t\treturn x.Dyn\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Type) GetNull() structpb.NullValue {\n\tif x != nil {\n\t\tif x, ok := x.TypeKind.(*Type_Null); ok {\n\t\t\treturn x.Null\n\t\t}\n\t}\n\treturn structpb.NullValue(0)\n}\n\nfunc (x *Type) GetPrimitive() Type_PrimitiveType {\n\tif x != nil {\n\t\tif x, ok := x.TypeKind.(*Type_Primitive); ok {\n\t\t\treturn x.Primitive\n\t\t}\n\t}\n\treturn Type_PRIMITIVE_TYPE_UNSPECIFIED\n}\n\nfunc (x *Type) GetWrapper() Type_PrimitiveType {\n\tif x != nil {\n\t\tif x, ok := x.TypeKind.(*Type_Wrapper); ok {\n\t\t\treturn x.Wrapper\n\t\t}\n\t}\n\treturn Type_PRIMITIVE_TYPE_UNSPECIFIED\n}\n\nfunc (x *Type) GetWellKnown() Type_WellKnownType {\n\tif x != nil {\n\t\tif x, ok := x.TypeKind.(*Type_WellKnown); ok {\n\t\t\treturn x.WellKnown\n\t\t}\n\t}\n\treturn Type_WELL_KNOWN_TYPE_UNSPECIFIED\n}\n\nfunc (x *Type) GetListType() *Type_ListType {\n\tif x != nil {\n\t\tif x, ok := x.TypeKind.(*Type_ListType_); ok {\n\t\t\treturn x.ListType\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Type) GetMapType() *Type_MapType {\n\tif x != nil {\n\t\tif x, ok := x.TypeKind.(*Type_MapType_); ok {\n\t\t\treturn x.MapType\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Type) GetFunction() *Type_FunctionType {\n\tif x != nil {\n\t\tif x, ok := x.TypeKind.(*Type_Function); ok {\n\t\t\treturn x.Function\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Type) GetMessageType() string {\n\tif x != nil {\n\t\tif x, ok := x.TypeKind.(*Type_MessageType); ok {\n\t\t\treturn x.MessageType\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *Type) GetTypeParam() string {\n\tif x != nil {\n\t\tif x, ok := x.TypeKind.(*Type_TypeParam); ok {\n\t\t\treturn x.TypeParam\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *Type) GetType() *Type {\n\tif x != nil {\n\t\tif x, ok := x.TypeKind.(*Type_Type); ok {\n\t\t\treturn x.Type\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Type) GetError() *emptypb.Empty {\n\tif x != nil {\n\t\tif x, ok := x.TypeKind.(*Type_Error); ok {\n\t\t\treturn x.Error\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Type) GetAbstractType() *Type_AbstractType {\n\tif x != nil {\n\t\tif x, ok := x.TypeKind.(*Type_AbstractType_); ok {\n\t\t\treturn x.AbstractType\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isType_TypeKind interface {\n\tisType_TypeKind()\n}\n\ntype Type_Dyn struct {\n\tDyn *emptypb.Empty `protobuf:\"bytes,1,opt,name=dyn,proto3,oneof\"`\n}\n\ntype Type_Null struct {\n\tNull structpb.NullValue `protobuf:\"varint,2,opt,name=null,proto3,enum=google.protobuf.NullValue,oneof\"`\n}\n\ntype Type_Primitive struct {\n\tPrimitive Type_PrimitiveType `protobuf:\"varint,3,opt,name=primitive,proto3,enum=cel.expr.Type_PrimitiveType,oneof\"`\n}\n\ntype Type_Wrapper struct {\n\tWrapper Type_PrimitiveType `protobuf:\"varint,4,opt,name=wrapper,proto3,enum=cel.expr.Type_PrimitiveType,oneof\"`\n}\n\ntype Type_WellKnown struct {\n\tWellKnown Type_WellKnownType `protobuf:\"varint,5,opt,name=well_known,json=wellKnown,proto3,enum=cel.expr.Type_WellKnownType,oneof\"`\n}\n\ntype Type_ListType_ struct {\n\tListType *Type_ListType `protobuf:\"bytes,6,opt,name=list_type,json=listType,proto3,oneof\"`\n}\n\ntype Type_MapType_ struct {\n\tMapType *Type_MapType `protobuf:\"bytes,7,opt,name=map_type,json=mapType,proto3,oneof\"`\n}\n\ntype Type_Function struct {\n\tFunction *Type_FunctionType `protobuf:\"bytes,8,opt,name=function,proto3,oneof\"`\n}\n\ntype Type_MessageType struct {\n\tMessageType string `protobuf:\"bytes,9,opt,name=message_type,json=messageType,proto3,oneof\"`\n}\n\ntype Type_TypeParam struct {\n\tTypeParam string `protobuf:\"bytes,10,opt,name=type_param,json=typeParam,proto3,oneof\"`\n}\n\ntype Type_Type struct {\n\tType *Type `protobuf:\"bytes,11,opt,name=type,proto3,oneof\"`\n}\n\ntype Type_Error struct {\n\tError *emptypb.Empty `protobuf:\"bytes,12,opt,name=error,proto3,oneof\"`\n}\n\ntype Type_AbstractType_ struct {\n\tAbstractType *Type_AbstractType `protobuf:\"bytes,14,opt,name=abstract_type,json=abstractType,proto3,oneof\"`\n}\n\nfunc (*Type_Dyn) isType_TypeKind() {}\n\nfunc (*Type_Null) isType_TypeKind() {}\n\nfunc (*Type_Primitive) isType_TypeKind() {}\n\nfunc (*Type_Wrapper) isType_TypeKind() {}\n\nfunc (*Type_WellKnown) isType_TypeKind() {}\n\nfunc (*Type_ListType_) isType_TypeKind() {}\n\nfunc (*Type_MapType_) isType_TypeKind() {}\n\nfunc (*Type_Function) isType_TypeKind() {}\n\nfunc (*Type_MessageType) isType_TypeKind() {}\n\nfunc (*Type_TypeParam) isType_TypeKind() {}\n\nfunc (*Type_Type) isType_TypeKind() {}\n\nfunc (*Type_Error) isType_TypeKind() {}\n\nfunc (*Type_AbstractType_) isType_TypeKind() {}\n\ntype Decl struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\tName  string                 `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Types that are valid to be assigned to DeclKind:\n\t//\n\t//\t*Decl_Ident\n\t//\t*Decl_Function\n\tDeclKind      isDecl_DeclKind `protobuf_oneof:\"decl_kind\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Decl) Reset() {\n\t*x = Decl{}\n\tmi := &file_cel_expr_checked_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Decl) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Decl) ProtoMessage() {}\n\nfunc (x *Decl) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_checked_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Decl.ProtoReflect.Descriptor instead.\nfunc (*Decl) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_checked_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *Decl) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *Decl) GetDeclKind() isDecl_DeclKind {\n\tif x != nil {\n\t\treturn x.DeclKind\n\t}\n\treturn nil\n}\n\nfunc (x *Decl) GetIdent() *Decl_IdentDecl {\n\tif x != nil {\n\t\tif x, ok := x.DeclKind.(*Decl_Ident); ok {\n\t\t\treturn x.Ident\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Decl) GetFunction() *Decl_FunctionDecl {\n\tif x != nil {\n\t\tif x, ok := x.DeclKind.(*Decl_Function); ok {\n\t\t\treturn x.Function\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isDecl_DeclKind interface {\n\tisDecl_DeclKind()\n}\n\ntype Decl_Ident struct {\n\tIdent *Decl_IdentDecl `protobuf:\"bytes,2,opt,name=ident,proto3,oneof\"`\n}\n\ntype Decl_Function struct {\n\tFunction *Decl_FunctionDecl `protobuf:\"bytes,3,opt,name=function,proto3,oneof\"`\n}\n\nfunc (*Decl_Ident) isDecl_DeclKind() {}\n\nfunc (*Decl_Function) isDecl_DeclKind() {}\n\ntype Reference struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tName          string                 `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tOverloadId    []string               `protobuf:\"bytes,3,rep,name=overload_id,json=overloadId,proto3\" json:\"overload_id,omitempty\"`\n\tValue         *Constant              `protobuf:\"bytes,4,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Reference) Reset() {\n\t*x = Reference{}\n\tmi := &file_cel_expr_checked_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Reference) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Reference) ProtoMessage() {}\n\nfunc (x *Reference) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_checked_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Reference.ProtoReflect.Descriptor instead.\nfunc (*Reference) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_checked_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *Reference) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *Reference) GetOverloadId() []string {\n\tif x != nil {\n\t\treturn x.OverloadId\n\t}\n\treturn nil\n}\n\nfunc (x *Reference) GetValue() *Constant {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\ntype Type_ListType struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tElemType      *Type                  `protobuf:\"bytes,1,opt,name=elem_type,json=elemType,proto3\" json:\"elem_type,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Type_ListType) Reset() {\n\t*x = Type_ListType{}\n\tmi := &file_cel_expr_checked_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Type_ListType) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Type_ListType) ProtoMessage() {}\n\nfunc (x *Type_ListType) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_checked_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Type_ListType.ProtoReflect.Descriptor instead.\nfunc (*Type_ListType) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_checked_proto_rawDescGZIP(), []int{1, 0}\n}\n\nfunc (x *Type_ListType) GetElemType() *Type {\n\tif x != nil {\n\t\treturn x.ElemType\n\t}\n\treturn nil\n}\n\ntype Type_MapType struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tKeyType       *Type                  `protobuf:\"bytes,1,opt,name=key_type,json=keyType,proto3\" json:\"key_type,omitempty\"`\n\tValueType     *Type                  `protobuf:\"bytes,2,opt,name=value_type,json=valueType,proto3\" json:\"value_type,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Type_MapType) Reset() {\n\t*x = Type_MapType{}\n\tmi := &file_cel_expr_checked_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Type_MapType) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Type_MapType) ProtoMessage() {}\n\nfunc (x *Type_MapType) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_checked_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Type_MapType.ProtoReflect.Descriptor instead.\nfunc (*Type_MapType) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_checked_proto_rawDescGZIP(), []int{1, 1}\n}\n\nfunc (x *Type_MapType) GetKeyType() *Type {\n\tif x != nil {\n\t\treturn x.KeyType\n\t}\n\treturn nil\n}\n\nfunc (x *Type_MapType) GetValueType() *Type {\n\tif x != nil {\n\t\treturn x.ValueType\n\t}\n\treturn nil\n}\n\ntype Type_FunctionType struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tResultType    *Type                  `protobuf:\"bytes,1,opt,name=result_type,json=resultType,proto3\" json:\"result_type,omitempty\"`\n\tArgTypes      []*Type                `protobuf:\"bytes,2,rep,name=arg_types,json=argTypes,proto3\" json:\"arg_types,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Type_FunctionType) Reset() {\n\t*x = Type_FunctionType{}\n\tmi := &file_cel_expr_checked_proto_msgTypes[8]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Type_FunctionType) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Type_FunctionType) ProtoMessage() {}\n\nfunc (x *Type_FunctionType) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_checked_proto_msgTypes[8]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Type_FunctionType.ProtoReflect.Descriptor instead.\nfunc (*Type_FunctionType) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_checked_proto_rawDescGZIP(), []int{1, 2}\n}\n\nfunc (x *Type_FunctionType) GetResultType() *Type {\n\tif x != nil {\n\t\treturn x.ResultType\n\t}\n\treturn nil\n}\n\nfunc (x *Type_FunctionType) GetArgTypes() []*Type {\n\tif x != nil {\n\t\treturn x.ArgTypes\n\t}\n\treturn nil\n}\n\ntype Type_AbstractType struct {\n\tstate          protoimpl.MessageState `protogen:\"open.v1\"`\n\tName           string                 `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tParameterTypes []*Type                `protobuf:\"bytes,2,rep,name=parameter_types,json=parameterTypes,proto3\" json:\"parameter_types,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *Type_AbstractType) Reset() {\n\t*x = Type_AbstractType{}\n\tmi := &file_cel_expr_checked_proto_msgTypes[9]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Type_AbstractType) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Type_AbstractType) ProtoMessage() {}\n\nfunc (x *Type_AbstractType) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_checked_proto_msgTypes[9]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Type_AbstractType.ProtoReflect.Descriptor instead.\nfunc (*Type_AbstractType) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_checked_proto_rawDescGZIP(), []int{1, 3}\n}\n\nfunc (x *Type_AbstractType) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *Type_AbstractType) GetParameterTypes() []*Type {\n\tif x != nil {\n\t\treturn x.ParameterTypes\n\t}\n\treturn nil\n}\n\ntype Decl_IdentDecl struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tType          *Type                  `protobuf:\"bytes,1,opt,name=type,proto3\" json:\"type,omitempty\"`\n\tValue         *Constant              `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tDoc           string                 `protobuf:\"bytes,3,opt,name=doc,proto3\" json:\"doc,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Decl_IdentDecl) Reset() {\n\t*x = Decl_IdentDecl{}\n\tmi := &file_cel_expr_checked_proto_msgTypes[10]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Decl_IdentDecl) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Decl_IdentDecl) ProtoMessage() {}\n\nfunc (x *Decl_IdentDecl) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_checked_proto_msgTypes[10]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Decl_IdentDecl.ProtoReflect.Descriptor instead.\nfunc (*Decl_IdentDecl) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_checked_proto_rawDescGZIP(), []int{2, 0}\n}\n\nfunc (x *Decl_IdentDecl) GetType() *Type {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn nil\n}\n\nfunc (x *Decl_IdentDecl) GetValue() *Constant {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nfunc (x *Decl_IdentDecl) GetDoc() string {\n\tif x != nil {\n\t\treturn x.Doc\n\t}\n\treturn \"\"\n}\n\ntype Decl_FunctionDecl struct {\n\tstate         protoimpl.MessageState        `protogen:\"open.v1\"`\n\tOverloads     []*Decl_FunctionDecl_Overload `protobuf:\"bytes,1,rep,name=overloads,proto3\" json:\"overloads,omitempty\"`\n\tDoc           string                        `protobuf:\"bytes,2,opt,name=doc,proto3\" json:\"doc,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Decl_FunctionDecl) Reset() {\n\t*x = Decl_FunctionDecl{}\n\tmi := &file_cel_expr_checked_proto_msgTypes[11]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Decl_FunctionDecl) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Decl_FunctionDecl) ProtoMessage() {}\n\nfunc (x *Decl_FunctionDecl) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_checked_proto_msgTypes[11]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Decl_FunctionDecl.ProtoReflect.Descriptor instead.\nfunc (*Decl_FunctionDecl) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_checked_proto_rawDescGZIP(), []int{2, 1}\n}\n\nfunc (x *Decl_FunctionDecl) GetOverloads() []*Decl_FunctionDecl_Overload {\n\tif x != nil {\n\t\treturn x.Overloads\n\t}\n\treturn nil\n}\n\nfunc (x *Decl_FunctionDecl) GetDoc() string {\n\tif x != nil {\n\t\treturn x.Doc\n\t}\n\treturn \"\"\n}\n\ntype Decl_FunctionDecl_Overload struct {\n\tstate              protoimpl.MessageState `protogen:\"open.v1\"`\n\tOverloadId         string                 `protobuf:\"bytes,1,opt,name=overload_id,json=overloadId,proto3\" json:\"overload_id,omitempty\"`\n\tParams             []*Type                `protobuf:\"bytes,2,rep,name=params,proto3\" json:\"params,omitempty\"`\n\tTypeParams         []string               `protobuf:\"bytes,3,rep,name=type_params,json=typeParams,proto3\" json:\"type_params,omitempty\"`\n\tResultType         *Type                  `protobuf:\"bytes,4,opt,name=result_type,json=resultType,proto3\" json:\"result_type,omitempty\"`\n\tIsInstanceFunction bool                   `protobuf:\"varint,5,opt,name=is_instance_function,json=isInstanceFunction,proto3\" json:\"is_instance_function,omitempty\"`\n\tDoc                string                 `protobuf:\"bytes,6,opt,name=doc,proto3\" json:\"doc,omitempty\"`\n\tunknownFields      protoimpl.UnknownFields\n\tsizeCache          protoimpl.SizeCache\n}\n\nfunc (x *Decl_FunctionDecl_Overload) Reset() {\n\t*x = Decl_FunctionDecl_Overload{}\n\tmi := &file_cel_expr_checked_proto_msgTypes[12]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Decl_FunctionDecl_Overload) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Decl_FunctionDecl_Overload) ProtoMessage() {}\n\nfunc (x *Decl_FunctionDecl_Overload) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_checked_proto_msgTypes[12]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Decl_FunctionDecl_Overload.ProtoReflect.Descriptor instead.\nfunc (*Decl_FunctionDecl_Overload) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_checked_proto_rawDescGZIP(), []int{2, 1, 0}\n}\n\nfunc (x *Decl_FunctionDecl_Overload) GetOverloadId() string {\n\tif x != nil {\n\t\treturn x.OverloadId\n\t}\n\treturn \"\"\n}\n\nfunc (x *Decl_FunctionDecl_Overload) GetParams() []*Type {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\nfunc (x *Decl_FunctionDecl_Overload) GetTypeParams() []string {\n\tif x != nil {\n\t\treturn x.TypeParams\n\t}\n\treturn nil\n}\n\nfunc (x *Decl_FunctionDecl_Overload) GetResultType() *Type {\n\tif x != nil {\n\t\treturn x.ResultType\n\t}\n\treturn nil\n}\n\nfunc (x *Decl_FunctionDecl_Overload) GetIsInstanceFunction() bool {\n\tif x != nil {\n\t\treturn x.IsInstanceFunction\n\t}\n\treturn false\n}\n\nfunc (x *Decl_FunctionDecl_Overload) GetDoc() string {\n\tif x != nil {\n\t\treturn x.Doc\n\t}\n\treturn \"\"\n}\n\nvar File_cel_expr_checked_proto protoreflect.FileDescriptor\n\nconst file_cel_expr_checked_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x16cel/expr/checked.proto\\x12\\bcel.expr\\x1a\\x15cel/expr/syntax.proto\\x1a\\x1bgoogle/protobuf/empty.proto\\x1a\\x1cgoogle/protobuf/struct.proto\\\"\\xba\\x03\\n\" +\n\t\"\\vCheckedExpr\\x12L\\n\" +\n\t\"\\rreference_map\\x18\\x02 \\x03(\\v2'.cel.expr.CheckedExpr.ReferenceMapEntryR\\freferenceMap\\x12=\\n\" +\n\t\"\\btype_map\\x18\\x03 \\x03(\\v2\\\".cel.expr.CheckedExpr.TypeMapEntryR\\atypeMap\\x125\\n\" +\n\t\"\\vsource_info\\x18\\x05 \\x01(\\v2\\x14.cel.expr.SourceInfoR\\n\" +\n\t\"sourceInfo\\x12!\\n\" +\n\t\"\\fexpr_version\\x18\\x06 \\x01(\\tR\\vexprVersion\\x12\\\"\\n\" +\n\t\"\\x04expr\\x18\\x04 \\x01(\\v2\\x0e.cel.expr.ExprR\\x04expr\\x1aT\\n\" +\n\t\"\\x11ReferenceMapEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\x03R\\x03key\\x12)\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x13.cel.expr.ReferenceR\\x05value:\\x028\\x01\\x1aJ\\n\" +\n\t\"\\fTypeMapEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\x03R\\x03key\\x12$\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x0e.cel.expr.TypeR\\x05value:\\x028\\x01\\\"\\xe6\\t\\n\" +\n\t\"\\x04Type\\x12*\\n\" +\n\t\"\\x03dyn\\x18\\x01 \\x01(\\v2\\x16.google.protobuf.EmptyH\\x00R\\x03dyn\\x120\\n\" +\n\t\"\\x04null\\x18\\x02 \\x01(\\x0e2\\x1a.google.protobuf.NullValueH\\x00R\\x04null\\x12<\\n\" +\n\t\"\\tprimitive\\x18\\x03 \\x01(\\x0e2\\x1c.cel.expr.Type.PrimitiveTypeH\\x00R\\tprimitive\\x128\\n\" +\n\t\"\\awrapper\\x18\\x04 \\x01(\\x0e2\\x1c.cel.expr.Type.PrimitiveTypeH\\x00R\\awrapper\\x12=\\n\" +\n\t\"\\n\" +\n\t\"well_known\\x18\\x05 \\x01(\\x0e2\\x1c.cel.expr.Type.WellKnownTypeH\\x00R\\twellKnown\\x126\\n\" +\n\t\"\\tlist_type\\x18\\x06 \\x01(\\v2\\x17.cel.expr.Type.ListTypeH\\x00R\\blistType\\x123\\n\" +\n\t\"\\bmap_type\\x18\\a \\x01(\\v2\\x16.cel.expr.Type.MapTypeH\\x00R\\amapType\\x129\\n\" +\n\t\"\\bfunction\\x18\\b \\x01(\\v2\\x1b.cel.expr.Type.FunctionTypeH\\x00R\\bfunction\\x12#\\n\" +\n\t\"\\fmessage_type\\x18\\t \\x01(\\tH\\x00R\\vmessageType\\x12\\x1f\\n\" +\n\t\"\\n\" +\n\t\"type_param\\x18\\n\" +\n\t\" \\x01(\\tH\\x00R\\ttypeParam\\x12$\\n\" +\n\t\"\\x04type\\x18\\v \\x01(\\v2\\x0e.cel.expr.TypeH\\x00R\\x04type\\x12.\\n\" +\n\t\"\\x05error\\x18\\f \\x01(\\v2\\x16.google.protobuf.EmptyH\\x00R\\x05error\\x12B\\n\" +\n\t\"\\rabstract_type\\x18\\x0e \\x01(\\v2\\x1b.cel.expr.Type.AbstractTypeH\\x00R\\fabstractType\\x1a7\\n\" +\n\t\"\\bListType\\x12+\\n\" +\n\t\"\\telem_type\\x18\\x01 \\x01(\\v2\\x0e.cel.expr.TypeR\\belemType\\x1ac\\n\" +\n\t\"\\aMapType\\x12)\\n\" +\n\t\"\\bkey_type\\x18\\x01 \\x01(\\v2\\x0e.cel.expr.TypeR\\akeyType\\x12-\\n\" +\n\t\"\\n\" +\n\t\"value_type\\x18\\x02 \\x01(\\v2\\x0e.cel.expr.TypeR\\tvalueType\\x1al\\n\" +\n\t\"\\fFunctionType\\x12/\\n\" +\n\t\"\\vresult_type\\x18\\x01 \\x01(\\v2\\x0e.cel.expr.TypeR\\n\" +\n\t\"resultType\\x12+\\n\" +\n\t\"\\targ_types\\x18\\x02 \\x03(\\v2\\x0e.cel.expr.TypeR\\bargTypes\\x1a[\\n\" +\n\t\"\\fAbstractType\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x127\\n\" +\n\t\"\\x0fparameter_types\\x18\\x02 \\x03(\\v2\\x0e.cel.expr.TypeR\\x0eparameterTypes\\\"s\\n\" +\n\t\"\\rPrimitiveType\\x12\\x1e\\n\" +\n\t\"\\x1aPRIMITIVE_TYPE_UNSPECIFIED\\x10\\x00\\x12\\b\\n\" +\n\t\"\\x04BOOL\\x10\\x01\\x12\\t\\n\" +\n\t\"\\x05INT64\\x10\\x02\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06UINT64\\x10\\x03\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06DOUBLE\\x10\\x04\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06STRING\\x10\\x05\\x12\\t\\n\" +\n\t\"\\x05BYTES\\x10\\x06\\\"V\\n\" +\n\t\"\\rWellKnownType\\x12\\x1f\\n\" +\n\t\"\\x1bWELL_KNOWN_TYPE_UNSPECIFIED\\x10\\x00\\x12\\a\\n\" +\n\t\"\\x03ANY\\x10\\x01\\x12\\r\\n\" +\n\t\"\\tTIMESTAMP\\x10\\x02\\x12\\f\\n\" +\n\t\"\\bDURATION\\x10\\x03B\\v\\n\" +\n\t\"\\ttype_kind\\\"\\xd4\\x04\\n\" +\n\t\"\\x04Decl\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x120\\n\" +\n\t\"\\x05ident\\x18\\x02 \\x01(\\v2\\x18.cel.expr.Decl.IdentDeclH\\x00R\\x05ident\\x129\\n\" +\n\t\"\\bfunction\\x18\\x03 \\x01(\\v2\\x1b.cel.expr.Decl.FunctionDeclH\\x00R\\bfunction\\x1ak\\n\" +\n\t\"\\tIdentDecl\\x12\\\"\\n\" +\n\t\"\\x04type\\x18\\x01 \\x01(\\v2\\x0e.cel.expr.TypeR\\x04type\\x12(\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x12.cel.expr.ConstantR\\x05value\\x12\\x10\\n\" +\n\t\"\\x03doc\\x18\\x03 \\x01(\\tR\\x03doc\\x1a\\xd0\\x02\\n\" +\n\t\"\\fFunctionDecl\\x12B\\n\" +\n\t\"\\toverloads\\x18\\x01 \\x03(\\v2$.cel.expr.Decl.FunctionDecl.OverloadR\\toverloads\\x12\\x10\\n\" +\n\t\"\\x03doc\\x18\\x02 \\x01(\\tR\\x03doc\\x1a\\xe9\\x01\\n\" +\n\t\"\\bOverload\\x12\\x1f\\n\" +\n\t\"\\voverload_id\\x18\\x01 \\x01(\\tR\\n\" +\n\t\"overloadId\\x12&\\n\" +\n\t\"\\x06params\\x18\\x02 \\x03(\\v2\\x0e.cel.expr.TypeR\\x06params\\x12\\x1f\\n\" +\n\t\"\\vtype_params\\x18\\x03 \\x03(\\tR\\n\" +\n\t\"typeParams\\x12/\\n\" +\n\t\"\\vresult_type\\x18\\x04 \\x01(\\v2\\x0e.cel.expr.TypeR\\n\" +\n\t\"resultType\\x120\\n\" +\n\t\"\\x14is_instance_function\\x18\\x05 \\x01(\\bR\\x12isInstanceFunction\\x12\\x10\\n\" +\n\t\"\\x03doc\\x18\\x06 \\x01(\\tR\\x03docB\\v\\n\" +\n\t\"\\tdecl_kind\\\"j\\n\" +\n\t\"\\tReference\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12\\x1f\\n\" +\n\t\"\\voverload_id\\x18\\x03 \\x03(\\tR\\n\" +\n\t\"overloadId\\x12(\\n\" +\n\t\"\\x05value\\x18\\x04 \\x01(\\v2\\x12.cel.expr.ConstantR\\x05valueB,\\n\" +\n\t\"\\fdev.cel.exprB\\tDeclProtoP\\x01Z\\fcel.dev/expr\\xf8\\x01\\x01b\\x06proto3\"\n\nvar (\n\tfile_cel_expr_checked_proto_rawDescOnce sync.Once\n\tfile_cel_expr_checked_proto_rawDescData []byte\n)\n\nfunc file_cel_expr_checked_proto_rawDescGZIP() []byte {\n\tfile_cel_expr_checked_proto_rawDescOnce.Do(func() {\n\t\tfile_cel_expr_checked_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cel_expr_checked_proto_rawDesc), len(file_cel_expr_checked_proto_rawDesc)))\n\t})\n\treturn file_cel_expr_checked_proto_rawDescData\n}\n\nvar file_cel_expr_checked_proto_enumTypes = make([]protoimpl.EnumInfo, 2)\nvar file_cel_expr_checked_proto_msgTypes = make([]protoimpl.MessageInfo, 13)\nvar file_cel_expr_checked_proto_goTypes = []any{\n\t(Type_PrimitiveType)(0),            // 0: cel.expr.Type.PrimitiveType\n\t(Type_WellKnownType)(0),            // 1: cel.expr.Type.WellKnownType\n\t(*CheckedExpr)(nil),                // 2: cel.expr.CheckedExpr\n\t(*Type)(nil),                       // 3: cel.expr.Type\n\t(*Decl)(nil),                       // 4: cel.expr.Decl\n\t(*Reference)(nil),                  // 5: cel.expr.Reference\n\tnil,                                // 6: cel.expr.CheckedExpr.ReferenceMapEntry\n\tnil,                                // 7: cel.expr.CheckedExpr.TypeMapEntry\n\t(*Type_ListType)(nil),              // 8: cel.expr.Type.ListType\n\t(*Type_MapType)(nil),               // 9: cel.expr.Type.MapType\n\t(*Type_FunctionType)(nil),          // 10: cel.expr.Type.FunctionType\n\t(*Type_AbstractType)(nil),          // 11: cel.expr.Type.AbstractType\n\t(*Decl_IdentDecl)(nil),             // 12: cel.expr.Decl.IdentDecl\n\t(*Decl_FunctionDecl)(nil),          // 13: cel.expr.Decl.FunctionDecl\n\t(*Decl_FunctionDecl_Overload)(nil), // 14: cel.expr.Decl.FunctionDecl.Overload\n\t(*SourceInfo)(nil),                 // 15: cel.expr.SourceInfo\n\t(*Expr)(nil),                       // 16: cel.expr.Expr\n\t(*emptypb.Empty)(nil),              // 17: google.protobuf.Empty\n\t(structpb.NullValue)(0),            // 18: google.protobuf.NullValue\n\t(*Constant)(nil),                   // 19: cel.expr.Constant\n}\nvar file_cel_expr_checked_proto_depIdxs = []int32{\n\t6,  // 0: cel.expr.CheckedExpr.reference_map:type_name -> cel.expr.CheckedExpr.ReferenceMapEntry\n\t7,  // 1: cel.expr.CheckedExpr.type_map:type_name -> cel.expr.CheckedExpr.TypeMapEntry\n\t15, // 2: cel.expr.CheckedExpr.source_info:type_name -> cel.expr.SourceInfo\n\t16, // 3: cel.expr.CheckedExpr.expr:type_name -> cel.expr.Expr\n\t17, // 4: cel.expr.Type.dyn:type_name -> google.protobuf.Empty\n\t18, // 5: cel.expr.Type.null:type_name -> google.protobuf.NullValue\n\t0,  // 6: cel.expr.Type.primitive:type_name -> cel.expr.Type.PrimitiveType\n\t0,  // 7: cel.expr.Type.wrapper:type_name -> cel.expr.Type.PrimitiveType\n\t1,  // 8: cel.expr.Type.well_known:type_name -> cel.expr.Type.WellKnownType\n\t8,  // 9: cel.expr.Type.list_type:type_name -> cel.expr.Type.ListType\n\t9,  // 10: cel.expr.Type.map_type:type_name -> cel.expr.Type.MapType\n\t10, // 11: cel.expr.Type.function:type_name -> cel.expr.Type.FunctionType\n\t3,  // 12: cel.expr.Type.type:type_name -> cel.expr.Type\n\t17, // 13: cel.expr.Type.error:type_name -> google.protobuf.Empty\n\t11, // 14: cel.expr.Type.abstract_type:type_name -> cel.expr.Type.AbstractType\n\t12, // 15: cel.expr.Decl.ident:type_name -> cel.expr.Decl.IdentDecl\n\t13, // 16: cel.expr.Decl.function:type_name -> cel.expr.Decl.FunctionDecl\n\t19, // 17: cel.expr.Reference.value:type_name -> cel.expr.Constant\n\t5,  // 18: cel.expr.CheckedExpr.ReferenceMapEntry.value:type_name -> cel.expr.Reference\n\t3,  // 19: cel.expr.CheckedExpr.TypeMapEntry.value:type_name -> cel.expr.Type\n\t3,  // 20: cel.expr.Type.ListType.elem_type:type_name -> cel.expr.Type\n\t3,  // 21: cel.expr.Type.MapType.key_type:type_name -> cel.expr.Type\n\t3,  // 22: cel.expr.Type.MapType.value_type:type_name -> cel.expr.Type\n\t3,  // 23: cel.expr.Type.FunctionType.result_type:type_name -> cel.expr.Type\n\t3,  // 24: cel.expr.Type.FunctionType.arg_types:type_name -> cel.expr.Type\n\t3,  // 25: cel.expr.Type.AbstractType.parameter_types:type_name -> cel.expr.Type\n\t3,  // 26: cel.expr.Decl.IdentDecl.type:type_name -> cel.expr.Type\n\t19, // 27: cel.expr.Decl.IdentDecl.value:type_name -> cel.expr.Constant\n\t14, // 28: cel.expr.Decl.FunctionDecl.overloads:type_name -> cel.expr.Decl.FunctionDecl.Overload\n\t3,  // 29: cel.expr.Decl.FunctionDecl.Overload.params:type_name -> cel.expr.Type\n\t3,  // 30: cel.expr.Decl.FunctionDecl.Overload.result_type:type_name -> cel.expr.Type\n\t31, // [31:31] is the sub-list for method output_type\n\t31, // [31:31] is the sub-list for method input_type\n\t31, // [31:31] is the sub-list for extension type_name\n\t31, // [31:31] is the sub-list for extension extendee\n\t0,  // [0:31] is the sub-list for field type_name\n}\n\nfunc init() { file_cel_expr_checked_proto_init() }\nfunc file_cel_expr_checked_proto_init() {\n\tif File_cel_expr_checked_proto != nil {\n\t\treturn\n\t}\n\tfile_cel_expr_syntax_proto_init()\n\tfile_cel_expr_checked_proto_msgTypes[1].OneofWrappers = []any{\n\t\t(*Type_Dyn)(nil),\n\t\t(*Type_Null)(nil),\n\t\t(*Type_Primitive)(nil),\n\t\t(*Type_Wrapper)(nil),\n\t\t(*Type_WellKnown)(nil),\n\t\t(*Type_ListType_)(nil),\n\t\t(*Type_MapType_)(nil),\n\t\t(*Type_Function)(nil),\n\t\t(*Type_MessageType)(nil),\n\t\t(*Type_TypeParam)(nil),\n\t\t(*Type_Type)(nil),\n\t\t(*Type_Error)(nil),\n\t\t(*Type_AbstractType_)(nil),\n\t}\n\tfile_cel_expr_checked_proto_msgTypes[2].OneofWrappers = []any{\n\t\t(*Decl_Ident)(nil),\n\t\t(*Decl_Function)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_cel_expr_checked_proto_rawDesc), len(file_cel_expr_checked_proto_rawDesc)),\n\t\t\tNumEnums:      2,\n\t\t\tNumMessages:   13,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_cel_expr_checked_proto_goTypes,\n\t\tDependencyIndexes: file_cel_expr_checked_proto_depIdxs,\n\t\tEnumInfos:         file_cel_expr_checked_proto_enumTypes,\n\t\tMessageInfos:      file_cel_expr_checked_proto_msgTypes,\n\t}.Build()\n\tFile_cel_expr_checked_proto = out.File\n\tfile_cel_expr_checked_proto_goTypes = nil\n\tfile_cel_expr_checked_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/cel.dev/expr/cloudbuild.yaml",
    "content": "steps:\n- name: 'gcr.io/cloud-builders/bazel:7.3.2'\n  entrypoint: bazel\n  args: ['build', '...']\n  id: bazel-build\n  waitFor: ['-']\ntimeout: 15m\noptions:\n  machineType: 'N1_HIGHCPU_32'\n"
  },
  {
    "path": "vendor/cel.dev/expr/eval.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v5.27.1\n// source: cel/expr/eval.proto\n\npackage expr\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype EvalState struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tValues        []*ExprValue           `protobuf:\"bytes,1,rep,name=values,proto3\" json:\"values,omitempty\"`\n\tResults       []*EvalState_Result    `protobuf:\"bytes,3,rep,name=results,proto3\" json:\"results,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *EvalState) Reset() {\n\t*x = EvalState{}\n\tmi := &file_cel_expr_eval_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EvalState) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EvalState) ProtoMessage() {}\n\nfunc (x *EvalState) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_eval_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EvalState.ProtoReflect.Descriptor instead.\nfunc (*EvalState) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_eval_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *EvalState) GetValues() []*ExprValue {\n\tif x != nil {\n\t\treturn x.Values\n\t}\n\treturn nil\n}\n\nfunc (x *EvalState) GetResults() []*EvalState_Result {\n\tif x != nil {\n\t\treturn x.Results\n\t}\n\treturn nil\n}\n\ntype ExprValue struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Kind:\n\t//\n\t//\t*ExprValue_Value\n\t//\t*ExprValue_Error\n\t//\t*ExprValue_Unknown\n\tKind          isExprValue_Kind `protobuf_oneof:\"kind\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ExprValue) Reset() {\n\t*x = ExprValue{}\n\tmi := &file_cel_expr_eval_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ExprValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ExprValue) ProtoMessage() {}\n\nfunc (x *ExprValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_eval_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ExprValue.ProtoReflect.Descriptor instead.\nfunc (*ExprValue) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_eval_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ExprValue) GetKind() isExprValue_Kind {\n\tif x != nil {\n\t\treturn x.Kind\n\t}\n\treturn nil\n}\n\nfunc (x *ExprValue) GetValue() *Value {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*ExprValue_Value); ok {\n\t\t\treturn x.Value\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *ExprValue) GetError() *ErrorSet {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*ExprValue_Error); ok {\n\t\t\treturn x.Error\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *ExprValue) GetUnknown() *UnknownSet {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*ExprValue_Unknown); ok {\n\t\t\treturn x.Unknown\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isExprValue_Kind interface {\n\tisExprValue_Kind()\n}\n\ntype ExprValue_Value struct {\n\tValue *Value `protobuf:\"bytes,1,opt,name=value,proto3,oneof\"`\n}\n\ntype ExprValue_Error struct {\n\tError *ErrorSet `protobuf:\"bytes,2,opt,name=error,proto3,oneof\"`\n}\n\ntype ExprValue_Unknown struct {\n\tUnknown *UnknownSet `protobuf:\"bytes,3,opt,name=unknown,proto3,oneof\"`\n}\n\nfunc (*ExprValue_Value) isExprValue_Kind() {}\n\nfunc (*ExprValue_Error) isExprValue_Kind() {}\n\nfunc (*ExprValue_Unknown) isExprValue_Kind() {}\n\ntype ErrorSet struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tErrors        []*Status              `protobuf:\"bytes,1,rep,name=errors,proto3\" json:\"errors,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ErrorSet) Reset() {\n\t*x = ErrorSet{}\n\tmi := &file_cel_expr_eval_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ErrorSet) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ErrorSet) ProtoMessage() {}\n\nfunc (x *ErrorSet) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_eval_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ErrorSet.ProtoReflect.Descriptor instead.\nfunc (*ErrorSet) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_eval_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *ErrorSet) GetErrors() []*Status {\n\tif x != nil {\n\t\treturn x.Errors\n\t}\n\treturn nil\n}\n\ntype Status struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tCode          int32                  `protobuf:\"varint,1,opt,name=code,proto3\" json:\"code,omitempty\"`\n\tMessage       string                 `protobuf:\"bytes,2,opt,name=message,proto3\" json:\"message,omitempty\"`\n\tDetails       []*anypb.Any           `protobuf:\"bytes,3,rep,name=details,proto3\" json:\"details,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Status) Reset() {\n\t*x = Status{}\n\tmi := &file_cel_expr_eval_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Status) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Status) ProtoMessage() {}\n\nfunc (x *Status) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_eval_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Status.ProtoReflect.Descriptor instead.\nfunc (*Status) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_eval_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *Status) GetCode() int32 {\n\tif x != nil {\n\t\treturn x.Code\n\t}\n\treturn 0\n}\n\nfunc (x *Status) GetMessage() string {\n\tif x != nil {\n\t\treturn x.Message\n\t}\n\treturn \"\"\n}\n\nfunc (x *Status) GetDetails() []*anypb.Any {\n\tif x != nil {\n\t\treturn x.Details\n\t}\n\treturn nil\n}\n\ntype UnknownSet struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tExprs         []int64                `protobuf:\"varint,1,rep,packed,name=exprs,proto3\" json:\"exprs,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *UnknownSet) Reset() {\n\t*x = UnknownSet{}\n\tmi := &file_cel_expr_eval_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *UnknownSet) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UnknownSet) ProtoMessage() {}\n\nfunc (x *UnknownSet) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_eval_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UnknownSet.ProtoReflect.Descriptor instead.\nfunc (*UnknownSet) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_eval_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *UnknownSet) GetExprs() []int64 {\n\tif x != nil {\n\t\treturn x.Exprs\n\t}\n\treturn nil\n}\n\ntype EvalState_Result struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tExpr          int64                  `protobuf:\"varint,1,opt,name=expr,proto3\" json:\"expr,omitempty\"`\n\tValue         int64                  `protobuf:\"varint,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *EvalState_Result) Reset() {\n\t*x = EvalState_Result{}\n\tmi := &file_cel_expr_eval_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EvalState_Result) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EvalState_Result) ProtoMessage() {}\n\nfunc (x *EvalState_Result) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_eval_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EvalState_Result.ProtoReflect.Descriptor instead.\nfunc (*EvalState_Result) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_eval_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *EvalState_Result) GetExpr() int64 {\n\tif x != nil {\n\t\treturn x.Expr\n\t}\n\treturn 0\n}\n\nfunc (x *EvalState_Result) GetValue() int64 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\nvar File_cel_expr_eval_proto protoreflect.FileDescriptor\n\nconst file_cel_expr_eval_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x13cel/expr/eval.proto\\x12\\bcel.expr\\x1a\\x19google/protobuf/any.proto\\x1a\\x14cel/expr/value.proto\\\"\\xa2\\x01\\n\" +\n\t\"\\tEvalState\\x12+\\n\" +\n\t\"\\x06values\\x18\\x01 \\x03(\\v2\\x13.cel.expr.ExprValueR\\x06values\\x124\\n\" +\n\t\"\\aresults\\x18\\x03 \\x03(\\v2\\x1a.cel.expr.EvalState.ResultR\\aresults\\x1a2\\n\" +\n\t\"\\x06Result\\x12\\x12\\n\" +\n\t\"\\x04expr\\x18\\x01 \\x01(\\x03R\\x04expr\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\x03R\\x05value\\\"\\x9a\\x01\\n\" +\n\t\"\\tExprValue\\x12'\\n\" +\n\t\"\\x05value\\x18\\x01 \\x01(\\v2\\x0f.cel.expr.ValueH\\x00R\\x05value\\x12*\\n\" +\n\t\"\\x05error\\x18\\x02 \\x01(\\v2\\x12.cel.expr.ErrorSetH\\x00R\\x05error\\x120\\n\" +\n\t\"\\aunknown\\x18\\x03 \\x01(\\v2\\x14.cel.expr.UnknownSetH\\x00R\\aunknownB\\x06\\n\" +\n\t\"\\x04kind\\\"4\\n\" +\n\t\"\\bErrorSet\\x12(\\n\" +\n\t\"\\x06errors\\x18\\x01 \\x03(\\v2\\x10.cel.expr.StatusR\\x06errors\\\"f\\n\" +\n\t\"\\x06Status\\x12\\x12\\n\" +\n\t\"\\x04code\\x18\\x01 \\x01(\\x05R\\x04code\\x12\\x18\\n\" +\n\t\"\\amessage\\x18\\x02 \\x01(\\tR\\amessage\\x12.\\n\" +\n\t\"\\adetails\\x18\\x03 \\x03(\\v2\\x14.google.protobuf.AnyR\\adetails\\\"\\\"\\n\" +\n\t\"\\n\" +\n\t\"UnknownSet\\x12\\x14\\n\" +\n\t\"\\x05exprs\\x18\\x01 \\x03(\\x03R\\x05exprsB,\\n\" +\n\t\"\\fdev.cel.exprB\\tEvalProtoP\\x01Z\\fcel.dev/expr\\xf8\\x01\\x01b\\x06proto3\"\n\nvar (\n\tfile_cel_expr_eval_proto_rawDescOnce sync.Once\n\tfile_cel_expr_eval_proto_rawDescData []byte\n)\n\nfunc file_cel_expr_eval_proto_rawDescGZIP() []byte {\n\tfile_cel_expr_eval_proto_rawDescOnce.Do(func() {\n\t\tfile_cel_expr_eval_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cel_expr_eval_proto_rawDesc), len(file_cel_expr_eval_proto_rawDesc)))\n\t})\n\treturn file_cel_expr_eval_proto_rawDescData\n}\n\nvar file_cel_expr_eval_proto_msgTypes = make([]protoimpl.MessageInfo, 6)\nvar file_cel_expr_eval_proto_goTypes = []any{\n\t(*EvalState)(nil),        // 0: cel.expr.EvalState\n\t(*ExprValue)(nil),        // 1: cel.expr.ExprValue\n\t(*ErrorSet)(nil),         // 2: cel.expr.ErrorSet\n\t(*Status)(nil),           // 3: cel.expr.Status\n\t(*UnknownSet)(nil),       // 4: cel.expr.UnknownSet\n\t(*EvalState_Result)(nil), // 5: cel.expr.EvalState.Result\n\t(*Value)(nil),            // 6: cel.expr.Value\n\t(*anypb.Any)(nil),        // 7: google.protobuf.Any\n}\nvar file_cel_expr_eval_proto_depIdxs = []int32{\n\t1, // 0: cel.expr.EvalState.values:type_name -> cel.expr.ExprValue\n\t5, // 1: cel.expr.EvalState.results:type_name -> cel.expr.EvalState.Result\n\t6, // 2: cel.expr.ExprValue.value:type_name -> cel.expr.Value\n\t2, // 3: cel.expr.ExprValue.error:type_name -> cel.expr.ErrorSet\n\t4, // 4: cel.expr.ExprValue.unknown:type_name -> cel.expr.UnknownSet\n\t3, // 5: cel.expr.ErrorSet.errors:type_name -> cel.expr.Status\n\t7, // 6: cel.expr.Status.details:type_name -> google.protobuf.Any\n\t7, // [7:7] is the sub-list for method output_type\n\t7, // [7:7] is the sub-list for method input_type\n\t7, // [7:7] is the sub-list for extension type_name\n\t7, // [7:7] is the sub-list for extension extendee\n\t0, // [0:7] is the sub-list for field type_name\n}\n\nfunc init() { file_cel_expr_eval_proto_init() }\nfunc file_cel_expr_eval_proto_init() {\n\tif File_cel_expr_eval_proto != nil {\n\t\treturn\n\t}\n\tfile_cel_expr_value_proto_init()\n\tfile_cel_expr_eval_proto_msgTypes[1].OneofWrappers = []any{\n\t\t(*ExprValue_Value)(nil),\n\t\t(*ExprValue_Error)(nil),\n\t\t(*ExprValue_Unknown)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_cel_expr_eval_proto_rawDesc), len(file_cel_expr_eval_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   6,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_cel_expr_eval_proto_goTypes,\n\t\tDependencyIndexes: file_cel_expr_eval_proto_depIdxs,\n\t\tMessageInfos:      file_cel_expr_eval_proto_msgTypes,\n\t}.Build()\n\tFile_cel_expr_eval_proto = out.File\n\tfile_cel_expr_eval_proto_goTypes = nil\n\tfile_cel_expr_eval_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/cel.dev/expr/explain.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v5.27.1\n// source: cel/expr/explain.proto\n\npackage expr\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Deprecated: Marked as deprecated in cel/expr/explain.proto.\ntype Explain struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tValues        []*Value               `protobuf:\"bytes,1,rep,name=values,proto3\" json:\"values,omitempty\"`\n\tExprSteps     []*Explain_ExprStep    `protobuf:\"bytes,2,rep,name=expr_steps,json=exprSteps,proto3\" json:\"expr_steps,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Explain) Reset() {\n\t*x = Explain{}\n\tmi := &file_cel_expr_explain_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Explain) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Explain) ProtoMessage() {}\n\nfunc (x *Explain) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_explain_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Explain.ProtoReflect.Descriptor instead.\nfunc (*Explain) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_explain_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Explain) GetValues() []*Value {\n\tif x != nil {\n\t\treturn x.Values\n\t}\n\treturn nil\n}\n\nfunc (x *Explain) GetExprSteps() []*Explain_ExprStep {\n\tif x != nil {\n\t\treturn x.ExprSteps\n\t}\n\treturn nil\n}\n\ntype Explain_ExprStep struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tId            int64                  `protobuf:\"varint,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tValueIndex    int32                  `protobuf:\"varint,2,opt,name=value_index,json=valueIndex,proto3\" json:\"value_index,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Explain_ExprStep) Reset() {\n\t*x = Explain_ExprStep{}\n\tmi := &file_cel_expr_explain_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Explain_ExprStep) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Explain_ExprStep) ProtoMessage() {}\n\nfunc (x *Explain_ExprStep) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_explain_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Explain_ExprStep.ProtoReflect.Descriptor instead.\nfunc (*Explain_ExprStep) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_explain_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *Explain_ExprStep) GetId() int64 {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn 0\n}\n\nfunc (x *Explain_ExprStep) GetValueIndex() int32 {\n\tif x != nil {\n\t\treturn x.ValueIndex\n\t}\n\treturn 0\n}\n\nvar File_cel_expr_explain_proto protoreflect.FileDescriptor\n\nconst file_cel_expr_explain_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x16cel/expr/explain.proto\\x12\\bcel.expr\\x1a\\x14cel/expr/value.proto\\\"\\xae\\x01\\n\" +\n\t\"\\aExplain\\x12'\\n\" +\n\t\"\\x06values\\x18\\x01 \\x03(\\v2\\x0f.cel.expr.ValueR\\x06values\\x129\\n\" +\n\t\"\\n\" +\n\t\"expr_steps\\x18\\x02 \\x03(\\v2\\x1a.cel.expr.Explain.ExprStepR\\texprSteps\\x1a;\\n\" +\n\t\"\\bExprStep\\x12\\x0e\\n\" +\n\t\"\\x02id\\x18\\x01 \\x01(\\x03R\\x02id\\x12\\x1f\\n\" +\n\t\"\\vvalue_index\\x18\\x02 \\x01(\\x05R\\n\" +\n\t\"valueIndex:\\x02\\x18\\x01B/\\n\" +\n\t\"\\fdev.cel.exprB\\fExplainProtoP\\x01Z\\fcel.dev/expr\\xf8\\x01\\x01b\\x06proto3\"\n\nvar (\n\tfile_cel_expr_explain_proto_rawDescOnce sync.Once\n\tfile_cel_expr_explain_proto_rawDescData []byte\n)\n\nfunc file_cel_expr_explain_proto_rawDescGZIP() []byte {\n\tfile_cel_expr_explain_proto_rawDescOnce.Do(func() {\n\t\tfile_cel_expr_explain_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cel_expr_explain_proto_rawDesc), len(file_cel_expr_explain_proto_rawDesc)))\n\t})\n\treturn file_cel_expr_explain_proto_rawDescData\n}\n\nvar file_cel_expr_explain_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_cel_expr_explain_proto_goTypes = []any{\n\t(*Explain)(nil),          // 0: cel.expr.Explain\n\t(*Explain_ExprStep)(nil), // 1: cel.expr.Explain.ExprStep\n\t(*Value)(nil),            // 2: cel.expr.Value\n}\nvar file_cel_expr_explain_proto_depIdxs = []int32{\n\t2, // 0: cel.expr.Explain.values:type_name -> cel.expr.Value\n\t1, // 1: cel.expr.Explain.expr_steps:type_name -> cel.expr.Explain.ExprStep\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_cel_expr_explain_proto_init() }\nfunc file_cel_expr_explain_proto_init() {\n\tif File_cel_expr_explain_proto != nil {\n\t\treturn\n\t}\n\tfile_cel_expr_value_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_cel_expr_explain_proto_rawDesc), len(file_cel_expr_explain_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_cel_expr_explain_proto_goTypes,\n\t\tDependencyIndexes: file_cel_expr_explain_proto_depIdxs,\n\t\tMessageInfos:      file_cel_expr_explain_proto_msgTypes,\n\t}.Build()\n\tFile_cel_expr_explain_proto = out.File\n\tfile_cel_expr_explain_proto_goTypes = nil\n\tfile_cel_expr_explain_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/cel.dev/expr/regen_go_proto.sh",
    "content": "#!/bin/sh\nbazel build //proto/cel/expr/conformance/...\nfiles=($(bazel aquery 'kind(proto, //proto/cel/expr/conformance/...)' | grep Outputs | grep \"[.]pb[.]go\" | sed 's/Outputs: \\[//' | sed 's/\\]//' | tr \",\" \"\\n\"))\nfor src in ${files[@]};\ndo\n  dst=$(echo $src | sed 's/\\(.*\\/cel.dev\\/expr\\/\\(.*\\)\\)/\\2/')\n  echo \"copying $dst\"\n  $(cp $src $dst)\ndone\n"
  },
  {
    "path": "vendor/cel.dev/expr/regen_go_proto_canonical_protos.sh",
    "content": "#!/usr/bin/env bash\nbazel build //proto/cel/expr:all\n\nrm -vf ./*.pb.go\n\nfiles=( $(bazel cquery //proto/cel/expr:expr_go_proto --output=starlark --starlark:expr=\"'\\n'.join([f.path for f in target.output_groups.go_generated_srcs.to_list()])\") )\nfor src in \"${files[@]}\";\ndo\n  cp -v \"${src}\" ./\ndone\n"
  },
  {
    "path": "vendor/cel.dev/expr/syntax.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v5.27.1\n// source: cel/expr/syntax.proto\n\npackage expr\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\tstructpb \"google.golang.org/protobuf/types/known/structpb\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype SourceInfo_Extension_Component int32\n\nconst (\n\tSourceInfo_Extension_COMPONENT_UNSPECIFIED  SourceInfo_Extension_Component = 0\n\tSourceInfo_Extension_COMPONENT_PARSER       SourceInfo_Extension_Component = 1\n\tSourceInfo_Extension_COMPONENT_TYPE_CHECKER SourceInfo_Extension_Component = 2\n\tSourceInfo_Extension_COMPONENT_RUNTIME      SourceInfo_Extension_Component = 3\n)\n\n// Enum value maps for SourceInfo_Extension_Component.\nvar (\n\tSourceInfo_Extension_Component_name = map[int32]string{\n\t\t0: \"COMPONENT_UNSPECIFIED\",\n\t\t1: \"COMPONENT_PARSER\",\n\t\t2: \"COMPONENT_TYPE_CHECKER\",\n\t\t3: \"COMPONENT_RUNTIME\",\n\t}\n\tSourceInfo_Extension_Component_value = map[string]int32{\n\t\t\"COMPONENT_UNSPECIFIED\":  0,\n\t\t\"COMPONENT_PARSER\":       1,\n\t\t\"COMPONENT_TYPE_CHECKER\": 2,\n\t\t\"COMPONENT_RUNTIME\":      3,\n\t}\n)\n\nfunc (x SourceInfo_Extension_Component) Enum() *SourceInfo_Extension_Component {\n\tp := new(SourceInfo_Extension_Component)\n\t*p = x\n\treturn p\n}\n\nfunc (x SourceInfo_Extension_Component) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (SourceInfo_Extension_Component) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_cel_expr_syntax_proto_enumTypes[0].Descriptor()\n}\n\nfunc (SourceInfo_Extension_Component) Type() protoreflect.EnumType {\n\treturn &file_cel_expr_syntax_proto_enumTypes[0]\n}\n\nfunc (x SourceInfo_Extension_Component) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use SourceInfo_Extension_Component.Descriptor instead.\nfunc (SourceInfo_Extension_Component) EnumDescriptor() ([]byte, []int) {\n\treturn file_cel_expr_syntax_proto_rawDescGZIP(), []int{3, 2, 0}\n}\n\ntype ParsedExpr struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tExpr          *Expr                  `protobuf:\"bytes,2,opt,name=expr,proto3\" json:\"expr,omitempty\"`\n\tSourceInfo    *SourceInfo            `protobuf:\"bytes,3,opt,name=source_info,json=sourceInfo,proto3\" json:\"source_info,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ParsedExpr) Reset() {\n\t*x = ParsedExpr{}\n\tmi := &file_cel_expr_syntax_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ParsedExpr) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ParsedExpr) ProtoMessage() {}\n\nfunc (x *ParsedExpr) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_syntax_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ParsedExpr.ProtoReflect.Descriptor instead.\nfunc (*ParsedExpr) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_syntax_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ParsedExpr) GetExpr() *Expr {\n\tif x != nil {\n\t\treturn x.Expr\n\t}\n\treturn nil\n}\n\nfunc (x *ParsedExpr) GetSourceInfo() *SourceInfo {\n\tif x != nil {\n\t\treturn x.SourceInfo\n\t}\n\treturn nil\n}\n\ntype Expr struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\tId    int64                  `protobuf:\"varint,2,opt,name=id,proto3\" json:\"id,omitempty\"`\n\t// Types that are valid to be assigned to ExprKind:\n\t//\n\t//\t*Expr_ConstExpr\n\t//\t*Expr_IdentExpr\n\t//\t*Expr_SelectExpr\n\t//\t*Expr_CallExpr\n\t//\t*Expr_ListExpr\n\t//\t*Expr_StructExpr\n\t//\t*Expr_ComprehensionExpr\n\tExprKind      isExpr_ExprKind `protobuf_oneof:\"expr_kind\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Expr) Reset() {\n\t*x = Expr{}\n\tmi := &file_cel_expr_syntax_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Expr) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr) ProtoMessage() {}\n\nfunc (x *Expr) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_syntax_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr.ProtoReflect.Descriptor instead.\nfunc (*Expr) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_syntax_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *Expr) GetId() int64 {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn 0\n}\n\nfunc (x *Expr) GetExprKind() isExpr_ExprKind {\n\tif x != nil {\n\t\treturn x.ExprKind\n\t}\n\treturn nil\n}\n\nfunc (x *Expr) GetConstExpr() *Constant {\n\tif x != nil {\n\t\tif x, ok := x.ExprKind.(*Expr_ConstExpr); ok {\n\t\t\treturn x.ConstExpr\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Expr) GetIdentExpr() *Expr_Ident {\n\tif x != nil {\n\t\tif x, ok := x.ExprKind.(*Expr_IdentExpr); ok {\n\t\t\treturn x.IdentExpr\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Expr) GetSelectExpr() *Expr_Select {\n\tif x != nil {\n\t\tif x, ok := x.ExprKind.(*Expr_SelectExpr); ok {\n\t\t\treturn x.SelectExpr\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Expr) GetCallExpr() *Expr_Call {\n\tif x != nil {\n\t\tif x, ok := x.ExprKind.(*Expr_CallExpr); ok {\n\t\t\treturn x.CallExpr\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Expr) GetListExpr() *Expr_CreateList {\n\tif x != nil {\n\t\tif x, ok := x.ExprKind.(*Expr_ListExpr); ok {\n\t\t\treturn x.ListExpr\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Expr) GetStructExpr() *Expr_CreateStruct {\n\tif x != nil {\n\t\tif x, ok := x.ExprKind.(*Expr_StructExpr); ok {\n\t\t\treturn x.StructExpr\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Expr) GetComprehensionExpr() *Expr_Comprehension {\n\tif x != nil {\n\t\tif x, ok := x.ExprKind.(*Expr_ComprehensionExpr); ok {\n\t\t\treturn x.ComprehensionExpr\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isExpr_ExprKind interface {\n\tisExpr_ExprKind()\n}\n\ntype Expr_ConstExpr struct {\n\tConstExpr *Constant `protobuf:\"bytes,3,opt,name=const_expr,json=constExpr,proto3,oneof\"`\n}\n\ntype Expr_IdentExpr struct {\n\tIdentExpr *Expr_Ident `protobuf:\"bytes,4,opt,name=ident_expr,json=identExpr,proto3,oneof\"`\n}\n\ntype Expr_SelectExpr struct {\n\tSelectExpr *Expr_Select `protobuf:\"bytes,5,opt,name=select_expr,json=selectExpr,proto3,oneof\"`\n}\n\ntype Expr_CallExpr struct {\n\tCallExpr *Expr_Call `protobuf:\"bytes,6,opt,name=call_expr,json=callExpr,proto3,oneof\"`\n}\n\ntype Expr_ListExpr struct {\n\tListExpr *Expr_CreateList `protobuf:\"bytes,7,opt,name=list_expr,json=listExpr,proto3,oneof\"`\n}\n\ntype Expr_StructExpr struct {\n\tStructExpr *Expr_CreateStruct `protobuf:\"bytes,8,opt,name=struct_expr,json=structExpr,proto3,oneof\"`\n}\n\ntype Expr_ComprehensionExpr struct {\n\tComprehensionExpr *Expr_Comprehension `protobuf:\"bytes,9,opt,name=comprehension_expr,json=comprehensionExpr,proto3,oneof\"`\n}\n\nfunc (*Expr_ConstExpr) isExpr_ExprKind() {}\n\nfunc (*Expr_IdentExpr) isExpr_ExprKind() {}\n\nfunc (*Expr_SelectExpr) isExpr_ExprKind() {}\n\nfunc (*Expr_CallExpr) isExpr_ExprKind() {}\n\nfunc (*Expr_ListExpr) isExpr_ExprKind() {}\n\nfunc (*Expr_StructExpr) isExpr_ExprKind() {}\n\nfunc (*Expr_ComprehensionExpr) isExpr_ExprKind() {}\n\ntype Constant struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to ConstantKind:\n\t//\n\t//\t*Constant_NullValue\n\t//\t*Constant_BoolValue\n\t//\t*Constant_Int64Value\n\t//\t*Constant_Uint64Value\n\t//\t*Constant_DoubleValue\n\t//\t*Constant_StringValue\n\t//\t*Constant_BytesValue\n\t//\t*Constant_DurationValue\n\t//\t*Constant_TimestampValue\n\tConstantKind  isConstant_ConstantKind `protobuf_oneof:\"constant_kind\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Constant) Reset() {\n\t*x = Constant{}\n\tmi := &file_cel_expr_syntax_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Constant) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Constant) ProtoMessage() {}\n\nfunc (x *Constant) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_syntax_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Constant.ProtoReflect.Descriptor instead.\nfunc (*Constant) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_syntax_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *Constant) GetConstantKind() isConstant_ConstantKind {\n\tif x != nil {\n\t\treturn x.ConstantKind\n\t}\n\treturn nil\n}\n\nfunc (x *Constant) GetNullValue() structpb.NullValue {\n\tif x != nil {\n\t\tif x, ok := x.ConstantKind.(*Constant_NullValue); ok {\n\t\t\treturn x.NullValue\n\t\t}\n\t}\n\treturn structpb.NullValue(0)\n}\n\nfunc (x *Constant) GetBoolValue() bool {\n\tif x != nil {\n\t\tif x, ok := x.ConstantKind.(*Constant_BoolValue); ok {\n\t\t\treturn x.BoolValue\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (x *Constant) GetInt64Value() int64 {\n\tif x != nil {\n\t\tif x, ok := x.ConstantKind.(*Constant_Int64Value); ok {\n\t\t\treturn x.Int64Value\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (x *Constant) GetUint64Value() uint64 {\n\tif x != nil {\n\t\tif x, ok := x.ConstantKind.(*Constant_Uint64Value); ok {\n\t\t\treturn x.Uint64Value\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (x *Constant) GetDoubleValue() float64 {\n\tif x != nil {\n\t\tif x, ok := x.ConstantKind.(*Constant_DoubleValue); ok {\n\t\t\treturn x.DoubleValue\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (x *Constant) GetStringValue() string {\n\tif x != nil {\n\t\tif x, ok := x.ConstantKind.(*Constant_StringValue); ok {\n\t\t\treturn x.StringValue\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *Constant) GetBytesValue() []byte {\n\tif x != nil {\n\t\tif x, ok := x.ConstantKind.(*Constant_BytesValue); ok {\n\t\t\treturn x.BytesValue\n\t\t}\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in cel/expr/syntax.proto.\nfunc (x *Constant) GetDurationValue() *durationpb.Duration {\n\tif x != nil {\n\t\tif x, ok := x.ConstantKind.(*Constant_DurationValue); ok {\n\t\t\treturn x.DurationValue\n\t\t}\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in cel/expr/syntax.proto.\nfunc (x *Constant) GetTimestampValue() *timestamppb.Timestamp {\n\tif x != nil {\n\t\tif x, ok := x.ConstantKind.(*Constant_TimestampValue); ok {\n\t\t\treturn x.TimestampValue\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isConstant_ConstantKind interface {\n\tisConstant_ConstantKind()\n}\n\ntype Constant_NullValue struct {\n\tNullValue structpb.NullValue `protobuf:\"varint,1,opt,name=null_value,json=nullValue,proto3,enum=google.protobuf.NullValue,oneof\"`\n}\n\ntype Constant_BoolValue struct {\n\tBoolValue bool `protobuf:\"varint,2,opt,name=bool_value,json=boolValue,proto3,oneof\"`\n}\n\ntype Constant_Int64Value struct {\n\tInt64Value int64 `protobuf:\"varint,3,opt,name=int64_value,json=int64Value,proto3,oneof\"`\n}\n\ntype Constant_Uint64Value struct {\n\tUint64Value uint64 `protobuf:\"varint,4,opt,name=uint64_value,json=uint64Value,proto3,oneof\"`\n}\n\ntype Constant_DoubleValue struct {\n\tDoubleValue float64 `protobuf:\"fixed64,5,opt,name=double_value,json=doubleValue,proto3,oneof\"`\n}\n\ntype Constant_StringValue struct {\n\tStringValue string `protobuf:\"bytes,6,opt,name=string_value,json=stringValue,proto3,oneof\"`\n}\n\ntype Constant_BytesValue struct {\n\tBytesValue []byte `protobuf:\"bytes,7,opt,name=bytes_value,json=bytesValue,proto3,oneof\"`\n}\n\ntype Constant_DurationValue struct {\n\t// Deprecated: Marked as deprecated in cel/expr/syntax.proto.\n\tDurationValue *durationpb.Duration `protobuf:\"bytes,8,opt,name=duration_value,json=durationValue,proto3,oneof\"`\n}\n\ntype Constant_TimestampValue struct {\n\t// Deprecated: Marked as deprecated in cel/expr/syntax.proto.\n\tTimestampValue *timestamppb.Timestamp `protobuf:\"bytes,9,opt,name=timestamp_value,json=timestampValue,proto3,oneof\"`\n}\n\nfunc (*Constant_NullValue) isConstant_ConstantKind() {}\n\nfunc (*Constant_BoolValue) isConstant_ConstantKind() {}\n\nfunc (*Constant_Int64Value) isConstant_ConstantKind() {}\n\nfunc (*Constant_Uint64Value) isConstant_ConstantKind() {}\n\nfunc (*Constant_DoubleValue) isConstant_ConstantKind() {}\n\nfunc (*Constant_StringValue) isConstant_ConstantKind() {}\n\nfunc (*Constant_BytesValue) isConstant_ConstantKind() {}\n\nfunc (*Constant_DurationValue) isConstant_ConstantKind() {}\n\nfunc (*Constant_TimestampValue) isConstant_ConstantKind() {}\n\ntype SourceInfo struct {\n\tstate         protoimpl.MessageState  `protogen:\"open.v1\"`\n\tSyntaxVersion string                  `protobuf:\"bytes,1,opt,name=syntax_version,json=syntaxVersion,proto3\" json:\"syntax_version,omitempty\"`\n\tLocation      string                  `protobuf:\"bytes,2,opt,name=location,proto3\" json:\"location,omitempty\"`\n\tLineOffsets   []int32                 `protobuf:\"varint,3,rep,packed,name=line_offsets,json=lineOffsets,proto3\" json:\"line_offsets,omitempty\"`\n\tPositions     map[int64]int32         `protobuf:\"bytes,4,rep,name=positions,proto3\" json:\"positions,omitempty\" protobuf_key:\"varint,1,opt,name=key\" protobuf_val:\"varint,2,opt,name=value\"`\n\tMacroCalls    map[int64]*Expr         `protobuf:\"bytes,5,rep,name=macro_calls,json=macroCalls,proto3\" json:\"macro_calls,omitempty\" protobuf_key:\"varint,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\tExtensions    []*SourceInfo_Extension `protobuf:\"bytes,6,rep,name=extensions,proto3\" json:\"extensions,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *SourceInfo) Reset() {\n\t*x = SourceInfo{}\n\tmi := &file_cel_expr_syntax_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SourceInfo) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SourceInfo) ProtoMessage() {}\n\nfunc (x *SourceInfo) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_syntax_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SourceInfo.ProtoReflect.Descriptor instead.\nfunc (*SourceInfo) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_syntax_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *SourceInfo) GetSyntaxVersion() string {\n\tif x != nil {\n\t\treturn x.SyntaxVersion\n\t}\n\treturn \"\"\n}\n\nfunc (x *SourceInfo) GetLocation() string {\n\tif x != nil {\n\t\treturn x.Location\n\t}\n\treturn \"\"\n}\n\nfunc (x *SourceInfo) GetLineOffsets() []int32 {\n\tif x != nil {\n\t\treturn x.LineOffsets\n\t}\n\treturn nil\n}\n\nfunc (x *SourceInfo) GetPositions() map[int64]int32 {\n\tif x != nil {\n\t\treturn x.Positions\n\t}\n\treturn nil\n}\n\nfunc (x *SourceInfo) GetMacroCalls() map[int64]*Expr {\n\tif x != nil {\n\t\treturn x.MacroCalls\n\t}\n\treturn nil\n}\n\nfunc (x *SourceInfo) GetExtensions() []*SourceInfo_Extension {\n\tif x != nil {\n\t\treturn x.Extensions\n\t}\n\treturn nil\n}\n\ntype Expr_Ident struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tName          string                 `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Expr_Ident) Reset() {\n\t*x = Expr_Ident{}\n\tmi := &file_cel_expr_syntax_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Expr_Ident) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr_Ident) ProtoMessage() {}\n\nfunc (x *Expr_Ident) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_syntax_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr_Ident.ProtoReflect.Descriptor instead.\nfunc (*Expr_Ident) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_syntax_proto_rawDescGZIP(), []int{1, 0}\n}\n\nfunc (x *Expr_Ident) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\ntype Expr_Select struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tOperand       *Expr                  `protobuf:\"bytes,1,opt,name=operand,proto3\" json:\"operand,omitempty\"`\n\tField         string                 `protobuf:\"bytes,2,opt,name=field,proto3\" json:\"field,omitempty\"`\n\tTestOnly      bool                   `protobuf:\"varint,3,opt,name=test_only,json=testOnly,proto3\" json:\"test_only,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Expr_Select) Reset() {\n\t*x = Expr_Select{}\n\tmi := &file_cel_expr_syntax_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Expr_Select) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr_Select) ProtoMessage() {}\n\nfunc (x *Expr_Select) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_syntax_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr_Select.ProtoReflect.Descriptor instead.\nfunc (*Expr_Select) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_syntax_proto_rawDescGZIP(), []int{1, 1}\n}\n\nfunc (x *Expr_Select) GetOperand() *Expr {\n\tif x != nil {\n\t\treturn x.Operand\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_Select) GetField() string {\n\tif x != nil {\n\t\treturn x.Field\n\t}\n\treturn \"\"\n}\n\nfunc (x *Expr_Select) GetTestOnly() bool {\n\tif x != nil {\n\t\treturn x.TestOnly\n\t}\n\treturn false\n}\n\ntype Expr_Call struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tTarget        *Expr                  `protobuf:\"bytes,1,opt,name=target,proto3\" json:\"target,omitempty\"`\n\tFunction      string                 `protobuf:\"bytes,2,opt,name=function,proto3\" json:\"function,omitempty\"`\n\tArgs          []*Expr                `protobuf:\"bytes,3,rep,name=args,proto3\" json:\"args,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Expr_Call) Reset() {\n\t*x = Expr_Call{}\n\tmi := &file_cel_expr_syntax_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Expr_Call) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr_Call) ProtoMessage() {}\n\nfunc (x *Expr_Call) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_syntax_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr_Call.ProtoReflect.Descriptor instead.\nfunc (*Expr_Call) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_syntax_proto_rawDescGZIP(), []int{1, 2}\n}\n\nfunc (x *Expr_Call) GetTarget() *Expr {\n\tif x != nil {\n\t\treturn x.Target\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_Call) GetFunction() string {\n\tif x != nil {\n\t\treturn x.Function\n\t}\n\treturn \"\"\n}\n\nfunc (x *Expr_Call) GetArgs() []*Expr {\n\tif x != nil {\n\t\treturn x.Args\n\t}\n\treturn nil\n}\n\ntype Expr_CreateList struct {\n\tstate           protoimpl.MessageState `protogen:\"open.v1\"`\n\tElements        []*Expr                `protobuf:\"bytes,1,rep,name=elements,proto3\" json:\"elements,omitempty\"`\n\tOptionalIndices []int32                `protobuf:\"varint,2,rep,packed,name=optional_indices,json=optionalIndices,proto3\" json:\"optional_indices,omitempty\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *Expr_CreateList) Reset() {\n\t*x = Expr_CreateList{}\n\tmi := &file_cel_expr_syntax_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Expr_CreateList) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr_CreateList) ProtoMessage() {}\n\nfunc (x *Expr_CreateList) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_syntax_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr_CreateList.ProtoReflect.Descriptor instead.\nfunc (*Expr_CreateList) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_syntax_proto_rawDescGZIP(), []int{1, 3}\n}\n\nfunc (x *Expr_CreateList) GetElements() []*Expr {\n\tif x != nil {\n\t\treturn x.Elements\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_CreateList) GetOptionalIndices() []int32 {\n\tif x != nil {\n\t\treturn x.OptionalIndices\n\t}\n\treturn nil\n}\n\ntype Expr_CreateStruct struct {\n\tstate         protoimpl.MessageState     `protogen:\"open.v1\"`\n\tMessageName   string                     `protobuf:\"bytes,1,opt,name=message_name,json=messageName,proto3\" json:\"message_name,omitempty\"`\n\tEntries       []*Expr_CreateStruct_Entry `protobuf:\"bytes,2,rep,name=entries,proto3\" json:\"entries,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Expr_CreateStruct) Reset() {\n\t*x = Expr_CreateStruct{}\n\tmi := &file_cel_expr_syntax_proto_msgTypes[8]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Expr_CreateStruct) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr_CreateStruct) ProtoMessage() {}\n\nfunc (x *Expr_CreateStruct) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_syntax_proto_msgTypes[8]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr_CreateStruct.ProtoReflect.Descriptor instead.\nfunc (*Expr_CreateStruct) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_syntax_proto_rawDescGZIP(), []int{1, 4}\n}\n\nfunc (x *Expr_CreateStruct) GetMessageName() string {\n\tif x != nil {\n\t\treturn x.MessageName\n\t}\n\treturn \"\"\n}\n\nfunc (x *Expr_CreateStruct) GetEntries() []*Expr_CreateStruct_Entry {\n\tif x != nil {\n\t\treturn x.Entries\n\t}\n\treturn nil\n}\n\ntype Expr_Comprehension struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tIterVar       string                 `protobuf:\"bytes,1,opt,name=iter_var,json=iterVar,proto3\" json:\"iter_var,omitempty\"`\n\tIterVar2      string                 `protobuf:\"bytes,8,opt,name=iter_var2,json=iterVar2,proto3\" json:\"iter_var2,omitempty\"`\n\tIterRange     *Expr                  `protobuf:\"bytes,2,opt,name=iter_range,json=iterRange,proto3\" json:\"iter_range,omitempty\"`\n\tAccuVar       string                 `protobuf:\"bytes,3,opt,name=accu_var,json=accuVar,proto3\" json:\"accu_var,omitempty\"`\n\tAccuInit      *Expr                  `protobuf:\"bytes,4,opt,name=accu_init,json=accuInit,proto3\" json:\"accu_init,omitempty\"`\n\tLoopCondition *Expr                  `protobuf:\"bytes,5,opt,name=loop_condition,json=loopCondition,proto3\" json:\"loop_condition,omitempty\"`\n\tLoopStep      *Expr                  `protobuf:\"bytes,6,opt,name=loop_step,json=loopStep,proto3\" json:\"loop_step,omitempty\"`\n\tResult        *Expr                  `protobuf:\"bytes,7,opt,name=result,proto3\" json:\"result,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Expr_Comprehension) Reset() {\n\t*x = Expr_Comprehension{}\n\tmi := &file_cel_expr_syntax_proto_msgTypes[9]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Expr_Comprehension) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr_Comprehension) ProtoMessage() {}\n\nfunc (x *Expr_Comprehension) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_syntax_proto_msgTypes[9]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr_Comprehension.ProtoReflect.Descriptor instead.\nfunc (*Expr_Comprehension) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_syntax_proto_rawDescGZIP(), []int{1, 5}\n}\n\nfunc (x *Expr_Comprehension) GetIterVar() string {\n\tif x != nil {\n\t\treturn x.IterVar\n\t}\n\treturn \"\"\n}\n\nfunc (x *Expr_Comprehension) GetIterVar2() string {\n\tif x != nil {\n\t\treturn x.IterVar2\n\t}\n\treturn \"\"\n}\n\nfunc (x *Expr_Comprehension) GetIterRange() *Expr {\n\tif x != nil {\n\t\treturn x.IterRange\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_Comprehension) GetAccuVar() string {\n\tif x != nil {\n\t\treturn x.AccuVar\n\t}\n\treturn \"\"\n}\n\nfunc (x *Expr_Comprehension) GetAccuInit() *Expr {\n\tif x != nil {\n\t\treturn x.AccuInit\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_Comprehension) GetLoopCondition() *Expr {\n\tif x != nil {\n\t\treturn x.LoopCondition\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_Comprehension) GetLoopStep() *Expr {\n\tif x != nil {\n\t\treturn x.LoopStep\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_Comprehension) GetResult() *Expr {\n\tif x != nil {\n\t\treturn x.Result\n\t}\n\treturn nil\n}\n\ntype Expr_CreateStruct_Entry struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\tId    int64                  `protobuf:\"varint,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\t// Types that are valid to be assigned to KeyKind:\n\t//\n\t//\t*Expr_CreateStruct_Entry_FieldKey\n\t//\t*Expr_CreateStruct_Entry_MapKey\n\tKeyKind       isExpr_CreateStruct_Entry_KeyKind `protobuf_oneof:\"key_kind\"`\n\tValue         *Expr                             `protobuf:\"bytes,4,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tOptionalEntry bool                              `protobuf:\"varint,5,opt,name=optional_entry,json=optionalEntry,proto3\" json:\"optional_entry,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Expr_CreateStruct_Entry) Reset() {\n\t*x = Expr_CreateStruct_Entry{}\n\tmi := &file_cel_expr_syntax_proto_msgTypes[10]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Expr_CreateStruct_Entry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr_CreateStruct_Entry) ProtoMessage() {}\n\nfunc (x *Expr_CreateStruct_Entry) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_syntax_proto_msgTypes[10]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr_CreateStruct_Entry.ProtoReflect.Descriptor instead.\nfunc (*Expr_CreateStruct_Entry) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_syntax_proto_rawDescGZIP(), []int{1, 4, 0}\n}\n\nfunc (x *Expr_CreateStruct_Entry) GetId() int64 {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn 0\n}\n\nfunc (x *Expr_CreateStruct_Entry) GetKeyKind() isExpr_CreateStruct_Entry_KeyKind {\n\tif x != nil {\n\t\treturn x.KeyKind\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_CreateStruct_Entry) GetFieldKey() string {\n\tif x != nil {\n\t\tif x, ok := x.KeyKind.(*Expr_CreateStruct_Entry_FieldKey); ok {\n\t\t\treturn x.FieldKey\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *Expr_CreateStruct_Entry) GetMapKey() *Expr {\n\tif x != nil {\n\t\tif x, ok := x.KeyKind.(*Expr_CreateStruct_Entry_MapKey); ok {\n\t\t\treturn x.MapKey\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_CreateStruct_Entry) GetValue() *Expr {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_CreateStruct_Entry) GetOptionalEntry() bool {\n\tif x != nil {\n\t\treturn x.OptionalEntry\n\t}\n\treturn false\n}\n\ntype isExpr_CreateStruct_Entry_KeyKind interface {\n\tisExpr_CreateStruct_Entry_KeyKind()\n}\n\ntype Expr_CreateStruct_Entry_FieldKey struct {\n\tFieldKey string `protobuf:\"bytes,2,opt,name=field_key,json=fieldKey,proto3,oneof\"`\n}\n\ntype Expr_CreateStruct_Entry_MapKey struct {\n\tMapKey *Expr `protobuf:\"bytes,3,opt,name=map_key,json=mapKey,proto3,oneof\"`\n}\n\nfunc (*Expr_CreateStruct_Entry_FieldKey) isExpr_CreateStruct_Entry_KeyKind() {}\n\nfunc (*Expr_CreateStruct_Entry_MapKey) isExpr_CreateStruct_Entry_KeyKind() {}\n\ntype SourceInfo_Extension struct {\n\tstate              protoimpl.MessageState           `protogen:\"open.v1\"`\n\tId                 string                           `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tAffectedComponents []SourceInfo_Extension_Component `protobuf:\"varint,2,rep,packed,name=affected_components,json=affectedComponents,proto3,enum=cel.expr.SourceInfo_Extension_Component\" json:\"affected_components,omitempty\"`\n\tVersion            *SourceInfo_Extension_Version    `protobuf:\"bytes,3,opt,name=version,proto3\" json:\"version,omitempty\"`\n\tunknownFields      protoimpl.UnknownFields\n\tsizeCache          protoimpl.SizeCache\n}\n\nfunc (x *SourceInfo_Extension) Reset() {\n\t*x = SourceInfo_Extension{}\n\tmi := &file_cel_expr_syntax_proto_msgTypes[13]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SourceInfo_Extension) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SourceInfo_Extension) ProtoMessage() {}\n\nfunc (x *SourceInfo_Extension) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_syntax_proto_msgTypes[13]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SourceInfo_Extension.ProtoReflect.Descriptor instead.\nfunc (*SourceInfo_Extension) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_syntax_proto_rawDescGZIP(), []int{3, 2}\n}\n\nfunc (x *SourceInfo_Extension) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\nfunc (x *SourceInfo_Extension) GetAffectedComponents() []SourceInfo_Extension_Component {\n\tif x != nil {\n\t\treturn x.AffectedComponents\n\t}\n\treturn nil\n}\n\nfunc (x *SourceInfo_Extension) GetVersion() *SourceInfo_Extension_Version {\n\tif x != nil {\n\t\treturn x.Version\n\t}\n\treturn nil\n}\n\ntype SourceInfo_Extension_Version struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tMajor         int64                  `protobuf:\"varint,1,opt,name=major,proto3\" json:\"major,omitempty\"`\n\tMinor         int64                  `protobuf:\"varint,2,opt,name=minor,proto3\" json:\"minor,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *SourceInfo_Extension_Version) Reset() {\n\t*x = SourceInfo_Extension_Version{}\n\tmi := &file_cel_expr_syntax_proto_msgTypes[14]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SourceInfo_Extension_Version) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SourceInfo_Extension_Version) ProtoMessage() {}\n\nfunc (x *SourceInfo_Extension_Version) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_syntax_proto_msgTypes[14]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SourceInfo_Extension_Version.ProtoReflect.Descriptor instead.\nfunc (*SourceInfo_Extension_Version) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_syntax_proto_rawDescGZIP(), []int{3, 2, 0}\n}\n\nfunc (x *SourceInfo_Extension_Version) GetMajor() int64 {\n\tif x != nil {\n\t\treturn x.Major\n\t}\n\treturn 0\n}\n\nfunc (x *SourceInfo_Extension_Version) GetMinor() int64 {\n\tif x != nil {\n\t\treturn x.Minor\n\t}\n\treturn 0\n}\n\nvar File_cel_expr_syntax_proto protoreflect.FileDescriptor\n\nconst file_cel_expr_syntax_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x15cel/expr/syntax.proto\\x12\\bcel.expr\\x1a\\x1egoogle/protobuf/duration.proto\\x1a\\x1cgoogle/protobuf/struct.proto\\x1a\\x1fgoogle/protobuf/timestamp.proto\\\"g\\n\" +\n\t\"\\n\" +\n\t\"ParsedExpr\\x12\\\"\\n\" +\n\t\"\\x04expr\\x18\\x02 \\x01(\\v2\\x0e.cel.expr.ExprR\\x04expr\\x125\\n\" +\n\t\"\\vsource_info\\x18\\x03 \\x01(\\v2\\x14.cel.expr.SourceInfoR\\n\" +\n\t\"sourceInfo\\\"\\x9a\\v\\n\" +\n\t\"\\x04Expr\\x12\\x0e\\n\" +\n\t\"\\x02id\\x18\\x02 \\x01(\\x03R\\x02id\\x123\\n\" +\n\t\"\\n\" +\n\t\"const_expr\\x18\\x03 \\x01(\\v2\\x12.cel.expr.ConstantH\\x00R\\tconstExpr\\x125\\n\" +\n\t\"\\n\" +\n\t\"ident_expr\\x18\\x04 \\x01(\\v2\\x14.cel.expr.Expr.IdentH\\x00R\\tidentExpr\\x128\\n\" +\n\t\"\\vselect_expr\\x18\\x05 \\x01(\\v2\\x15.cel.expr.Expr.SelectH\\x00R\\n\" +\n\t\"selectExpr\\x122\\n\" +\n\t\"\\tcall_expr\\x18\\x06 \\x01(\\v2\\x13.cel.expr.Expr.CallH\\x00R\\bcallExpr\\x128\\n\" +\n\t\"\\tlist_expr\\x18\\a \\x01(\\v2\\x19.cel.expr.Expr.CreateListH\\x00R\\blistExpr\\x12>\\n\" +\n\t\"\\vstruct_expr\\x18\\b \\x01(\\v2\\x1b.cel.expr.Expr.CreateStructH\\x00R\\n\" +\n\t\"structExpr\\x12M\\n\" +\n\t\"\\x12comprehension_expr\\x18\\t \\x01(\\v2\\x1c.cel.expr.Expr.ComprehensionH\\x00R\\x11comprehensionExpr\\x1a\\x1b\\n\" +\n\t\"\\x05Ident\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x1ae\\n\" +\n\t\"\\x06Select\\x12(\\n\" +\n\t\"\\aoperand\\x18\\x01 \\x01(\\v2\\x0e.cel.expr.ExprR\\aoperand\\x12\\x14\\n\" +\n\t\"\\x05field\\x18\\x02 \\x01(\\tR\\x05field\\x12\\x1b\\n\" +\n\t\"\\ttest_only\\x18\\x03 \\x01(\\bR\\btestOnly\\x1an\\n\" +\n\t\"\\x04Call\\x12&\\n\" +\n\t\"\\x06target\\x18\\x01 \\x01(\\v2\\x0e.cel.expr.ExprR\\x06target\\x12\\x1a\\n\" +\n\t\"\\bfunction\\x18\\x02 \\x01(\\tR\\bfunction\\x12\\\"\\n\" +\n\t\"\\x04args\\x18\\x03 \\x03(\\v2\\x0e.cel.expr.ExprR\\x04args\\x1ac\\n\" +\n\t\"\\n\" +\n\t\"CreateList\\x12*\\n\" +\n\t\"\\belements\\x18\\x01 \\x03(\\v2\\x0e.cel.expr.ExprR\\belements\\x12)\\n\" +\n\t\"\\x10optional_indices\\x18\\x02 \\x03(\\x05R\\x0foptionalIndices\\x1a\\xab\\x02\\n\" +\n\t\"\\fCreateStruct\\x12!\\n\" +\n\t\"\\fmessage_name\\x18\\x01 \\x01(\\tR\\vmessageName\\x12;\\n\" +\n\t\"\\aentries\\x18\\x02 \\x03(\\v2!.cel.expr.Expr.CreateStruct.EntryR\\aentries\\x1a\\xba\\x01\\n\" +\n\t\"\\x05Entry\\x12\\x0e\\n\" +\n\t\"\\x02id\\x18\\x01 \\x01(\\x03R\\x02id\\x12\\x1d\\n\" +\n\t\"\\tfield_key\\x18\\x02 \\x01(\\tH\\x00R\\bfieldKey\\x12)\\n\" +\n\t\"\\amap_key\\x18\\x03 \\x01(\\v2\\x0e.cel.expr.ExprH\\x00R\\x06mapKey\\x12$\\n\" +\n\t\"\\x05value\\x18\\x04 \\x01(\\v2\\x0e.cel.expr.ExprR\\x05value\\x12%\\n\" +\n\t\"\\x0eoptional_entry\\x18\\x05 \\x01(\\bR\\roptionalEntryB\\n\" +\n\t\"\\n\" +\n\t\"\\bkey_kind\\x1a\\xca\\x02\\n\" +\n\t\"\\rComprehension\\x12\\x19\\n\" +\n\t\"\\biter_var\\x18\\x01 \\x01(\\tR\\aiterVar\\x12\\x1b\\n\" +\n\t\"\\titer_var2\\x18\\b \\x01(\\tR\\biterVar2\\x12-\\n\" +\n\t\"\\n\" +\n\t\"iter_range\\x18\\x02 \\x01(\\v2\\x0e.cel.expr.ExprR\\titerRange\\x12\\x19\\n\" +\n\t\"\\baccu_var\\x18\\x03 \\x01(\\tR\\aaccuVar\\x12+\\n\" +\n\t\"\\taccu_init\\x18\\x04 \\x01(\\v2\\x0e.cel.expr.ExprR\\baccuInit\\x125\\n\" +\n\t\"\\x0eloop_condition\\x18\\x05 \\x01(\\v2\\x0e.cel.expr.ExprR\\rloopCondition\\x12+\\n\" +\n\t\"\\tloop_step\\x18\\x06 \\x01(\\v2\\x0e.cel.expr.ExprR\\bloopStep\\x12&\\n\" +\n\t\"\\x06result\\x18\\a \\x01(\\v2\\x0e.cel.expr.ExprR\\x06resultB\\v\\n\" +\n\t\"\\texpr_kind\\\"\\xc1\\x03\\n\" +\n\t\"\\bConstant\\x12;\\n\" +\n\t\"\\n\" +\n\t\"null_value\\x18\\x01 \\x01(\\x0e2\\x1a.google.protobuf.NullValueH\\x00R\\tnullValue\\x12\\x1f\\n\" +\n\t\"\\n\" +\n\t\"bool_value\\x18\\x02 \\x01(\\bH\\x00R\\tboolValue\\x12!\\n\" +\n\t\"\\vint64_value\\x18\\x03 \\x01(\\x03H\\x00R\\n\" +\n\t\"int64Value\\x12#\\n\" +\n\t\"\\fuint64_value\\x18\\x04 \\x01(\\x04H\\x00R\\vuint64Value\\x12#\\n\" +\n\t\"\\fdouble_value\\x18\\x05 \\x01(\\x01H\\x00R\\vdoubleValue\\x12#\\n\" +\n\t\"\\fstring_value\\x18\\x06 \\x01(\\tH\\x00R\\vstringValue\\x12!\\n\" +\n\t\"\\vbytes_value\\x18\\a \\x01(\\fH\\x00R\\n\" +\n\t\"bytesValue\\x12F\\n\" +\n\t\"\\x0eduration_value\\x18\\b \\x01(\\v2\\x19.google.protobuf.DurationB\\x02\\x18\\x01H\\x00R\\rdurationValue\\x12I\\n\" +\n\t\"\\x0ftimestamp_value\\x18\\t \\x01(\\v2\\x1a.google.protobuf.TimestampB\\x02\\x18\\x01H\\x00R\\x0etimestampValueB\\x0f\\n\" +\n\t\"\\rconstant_kind\\\"\\xac\\x06\\n\" +\n\t\"\\n\" +\n\t\"SourceInfo\\x12%\\n\" +\n\t\"\\x0esyntax_version\\x18\\x01 \\x01(\\tR\\rsyntaxVersion\\x12\\x1a\\n\" +\n\t\"\\blocation\\x18\\x02 \\x01(\\tR\\blocation\\x12!\\n\" +\n\t\"\\fline_offsets\\x18\\x03 \\x03(\\x05R\\vlineOffsets\\x12A\\n\" +\n\t\"\\tpositions\\x18\\x04 \\x03(\\v2#.cel.expr.SourceInfo.PositionsEntryR\\tpositions\\x12E\\n\" +\n\t\"\\vmacro_calls\\x18\\x05 \\x03(\\v2$.cel.expr.SourceInfo.MacroCallsEntryR\\n\" +\n\t\"macroCalls\\x12>\\n\" +\n\t\"\\n\" +\n\t\"extensions\\x18\\x06 \\x03(\\v2\\x1e.cel.expr.SourceInfo.ExtensionR\\n\" +\n\t\"extensions\\x1a<\\n\" +\n\t\"\\x0ePositionsEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\x03R\\x03key\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\x05R\\x05value:\\x028\\x01\\x1aM\\n\" +\n\t\"\\x0fMacroCallsEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\x03R\\x03key\\x12$\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x0e.cel.expr.ExprR\\x05value:\\x028\\x01\\x1a\\xe0\\x02\\n\" +\n\t\"\\tExtension\\x12\\x0e\\n\" +\n\t\"\\x02id\\x18\\x01 \\x01(\\tR\\x02id\\x12Y\\n\" +\n\t\"\\x13affected_components\\x18\\x02 \\x03(\\x0e2(.cel.expr.SourceInfo.Extension.ComponentR\\x12affectedComponents\\x12@\\n\" +\n\t\"\\aversion\\x18\\x03 \\x01(\\v2&.cel.expr.SourceInfo.Extension.VersionR\\aversion\\x1a5\\n\" +\n\t\"\\aVersion\\x12\\x14\\n\" +\n\t\"\\x05major\\x18\\x01 \\x01(\\x03R\\x05major\\x12\\x14\\n\" +\n\t\"\\x05minor\\x18\\x02 \\x01(\\x03R\\x05minor\\\"o\\n\" +\n\t\"\\tComponent\\x12\\x19\\n\" +\n\t\"\\x15COMPONENT_UNSPECIFIED\\x10\\x00\\x12\\x14\\n\" +\n\t\"\\x10COMPONENT_PARSER\\x10\\x01\\x12\\x1a\\n\" +\n\t\"\\x16COMPONENT_TYPE_CHECKER\\x10\\x02\\x12\\x15\\n\" +\n\t\"\\x11COMPONENT_RUNTIME\\x10\\x03B.\\n\" +\n\t\"\\fdev.cel.exprB\\vSyntaxProtoP\\x01Z\\fcel.dev/expr\\xf8\\x01\\x01b\\x06proto3\"\n\nvar (\n\tfile_cel_expr_syntax_proto_rawDescOnce sync.Once\n\tfile_cel_expr_syntax_proto_rawDescData []byte\n)\n\nfunc file_cel_expr_syntax_proto_rawDescGZIP() []byte {\n\tfile_cel_expr_syntax_proto_rawDescOnce.Do(func() {\n\t\tfile_cel_expr_syntax_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cel_expr_syntax_proto_rawDesc), len(file_cel_expr_syntax_proto_rawDesc)))\n\t})\n\treturn file_cel_expr_syntax_proto_rawDescData\n}\n\nvar file_cel_expr_syntax_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_cel_expr_syntax_proto_msgTypes = make([]protoimpl.MessageInfo, 15)\nvar file_cel_expr_syntax_proto_goTypes = []any{\n\t(SourceInfo_Extension_Component)(0),  // 0: cel.expr.SourceInfo.Extension.Component\n\t(*ParsedExpr)(nil),                   // 1: cel.expr.ParsedExpr\n\t(*Expr)(nil),                         // 2: cel.expr.Expr\n\t(*Constant)(nil),                     // 3: cel.expr.Constant\n\t(*SourceInfo)(nil),                   // 4: cel.expr.SourceInfo\n\t(*Expr_Ident)(nil),                   // 5: cel.expr.Expr.Ident\n\t(*Expr_Select)(nil),                  // 6: cel.expr.Expr.Select\n\t(*Expr_Call)(nil),                    // 7: cel.expr.Expr.Call\n\t(*Expr_CreateList)(nil),              // 8: cel.expr.Expr.CreateList\n\t(*Expr_CreateStruct)(nil),            // 9: cel.expr.Expr.CreateStruct\n\t(*Expr_Comprehension)(nil),           // 10: cel.expr.Expr.Comprehension\n\t(*Expr_CreateStruct_Entry)(nil),      // 11: cel.expr.Expr.CreateStruct.Entry\n\tnil,                                  // 12: cel.expr.SourceInfo.PositionsEntry\n\tnil,                                  // 13: cel.expr.SourceInfo.MacroCallsEntry\n\t(*SourceInfo_Extension)(nil),         // 14: cel.expr.SourceInfo.Extension\n\t(*SourceInfo_Extension_Version)(nil), // 15: cel.expr.SourceInfo.Extension.Version\n\t(structpb.NullValue)(0),              // 16: google.protobuf.NullValue\n\t(*durationpb.Duration)(nil),          // 17: google.protobuf.Duration\n\t(*timestamppb.Timestamp)(nil),        // 18: google.protobuf.Timestamp\n}\nvar file_cel_expr_syntax_proto_depIdxs = []int32{\n\t2,  // 0: cel.expr.ParsedExpr.expr:type_name -> cel.expr.Expr\n\t4,  // 1: cel.expr.ParsedExpr.source_info:type_name -> cel.expr.SourceInfo\n\t3,  // 2: cel.expr.Expr.const_expr:type_name -> cel.expr.Constant\n\t5,  // 3: cel.expr.Expr.ident_expr:type_name -> cel.expr.Expr.Ident\n\t6,  // 4: cel.expr.Expr.select_expr:type_name -> cel.expr.Expr.Select\n\t7,  // 5: cel.expr.Expr.call_expr:type_name -> cel.expr.Expr.Call\n\t8,  // 6: cel.expr.Expr.list_expr:type_name -> cel.expr.Expr.CreateList\n\t9,  // 7: cel.expr.Expr.struct_expr:type_name -> cel.expr.Expr.CreateStruct\n\t10, // 8: cel.expr.Expr.comprehension_expr:type_name -> cel.expr.Expr.Comprehension\n\t16, // 9: cel.expr.Constant.null_value:type_name -> google.protobuf.NullValue\n\t17, // 10: cel.expr.Constant.duration_value:type_name -> google.protobuf.Duration\n\t18, // 11: cel.expr.Constant.timestamp_value:type_name -> google.protobuf.Timestamp\n\t12, // 12: cel.expr.SourceInfo.positions:type_name -> cel.expr.SourceInfo.PositionsEntry\n\t13, // 13: cel.expr.SourceInfo.macro_calls:type_name -> cel.expr.SourceInfo.MacroCallsEntry\n\t14, // 14: cel.expr.SourceInfo.extensions:type_name -> cel.expr.SourceInfo.Extension\n\t2,  // 15: cel.expr.Expr.Select.operand:type_name -> cel.expr.Expr\n\t2,  // 16: cel.expr.Expr.Call.target:type_name -> cel.expr.Expr\n\t2,  // 17: cel.expr.Expr.Call.args:type_name -> cel.expr.Expr\n\t2,  // 18: cel.expr.Expr.CreateList.elements:type_name -> cel.expr.Expr\n\t11, // 19: cel.expr.Expr.CreateStruct.entries:type_name -> cel.expr.Expr.CreateStruct.Entry\n\t2,  // 20: cel.expr.Expr.Comprehension.iter_range:type_name -> cel.expr.Expr\n\t2,  // 21: cel.expr.Expr.Comprehension.accu_init:type_name -> cel.expr.Expr\n\t2,  // 22: cel.expr.Expr.Comprehension.loop_condition:type_name -> cel.expr.Expr\n\t2,  // 23: cel.expr.Expr.Comprehension.loop_step:type_name -> cel.expr.Expr\n\t2,  // 24: cel.expr.Expr.Comprehension.result:type_name -> cel.expr.Expr\n\t2,  // 25: cel.expr.Expr.CreateStruct.Entry.map_key:type_name -> cel.expr.Expr\n\t2,  // 26: cel.expr.Expr.CreateStruct.Entry.value:type_name -> cel.expr.Expr\n\t2,  // 27: cel.expr.SourceInfo.MacroCallsEntry.value:type_name -> cel.expr.Expr\n\t0,  // 28: cel.expr.SourceInfo.Extension.affected_components:type_name -> cel.expr.SourceInfo.Extension.Component\n\t15, // 29: cel.expr.SourceInfo.Extension.version:type_name -> cel.expr.SourceInfo.Extension.Version\n\t30, // [30:30] is the sub-list for method output_type\n\t30, // [30:30] is the sub-list for method input_type\n\t30, // [30:30] is the sub-list for extension type_name\n\t30, // [30:30] is the sub-list for extension extendee\n\t0,  // [0:30] is the sub-list for field type_name\n}\n\nfunc init() { file_cel_expr_syntax_proto_init() }\nfunc file_cel_expr_syntax_proto_init() {\n\tif File_cel_expr_syntax_proto != nil {\n\t\treturn\n\t}\n\tfile_cel_expr_syntax_proto_msgTypes[1].OneofWrappers = []any{\n\t\t(*Expr_ConstExpr)(nil),\n\t\t(*Expr_IdentExpr)(nil),\n\t\t(*Expr_SelectExpr)(nil),\n\t\t(*Expr_CallExpr)(nil),\n\t\t(*Expr_ListExpr)(nil),\n\t\t(*Expr_StructExpr)(nil),\n\t\t(*Expr_ComprehensionExpr)(nil),\n\t}\n\tfile_cel_expr_syntax_proto_msgTypes[2].OneofWrappers = []any{\n\t\t(*Constant_NullValue)(nil),\n\t\t(*Constant_BoolValue)(nil),\n\t\t(*Constant_Int64Value)(nil),\n\t\t(*Constant_Uint64Value)(nil),\n\t\t(*Constant_DoubleValue)(nil),\n\t\t(*Constant_StringValue)(nil),\n\t\t(*Constant_BytesValue)(nil),\n\t\t(*Constant_DurationValue)(nil),\n\t\t(*Constant_TimestampValue)(nil),\n\t}\n\tfile_cel_expr_syntax_proto_msgTypes[10].OneofWrappers = []any{\n\t\t(*Expr_CreateStruct_Entry_FieldKey)(nil),\n\t\t(*Expr_CreateStruct_Entry_MapKey)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_cel_expr_syntax_proto_rawDesc), len(file_cel_expr_syntax_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   15,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_cel_expr_syntax_proto_goTypes,\n\t\tDependencyIndexes: file_cel_expr_syntax_proto_depIdxs,\n\t\tEnumInfos:         file_cel_expr_syntax_proto_enumTypes,\n\t\tMessageInfos:      file_cel_expr_syntax_proto_msgTypes,\n\t}.Build()\n\tFile_cel_expr_syntax_proto = out.File\n\tfile_cel_expr_syntax_proto_goTypes = nil\n\tfile_cel_expr_syntax_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/cel.dev/expr/value.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v5.27.1\n// source: cel/expr/value.proto\n\npackage expr\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\tstructpb \"google.golang.org/protobuf/types/known/structpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype Value struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Kind:\n\t//\n\t//\t*Value_NullValue\n\t//\t*Value_BoolValue\n\t//\t*Value_Int64Value\n\t//\t*Value_Uint64Value\n\t//\t*Value_DoubleValue\n\t//\t*Value_StringValue\n\t//\t*Value_BytesValue\n\t//\t*Value_EnumValue\n\t//\t*Value_ObjectValue\n\t//\t*Value_MapValue\n\t//\t*Value_ListValue\n\t//\t*Value_TypeValue\n\tKind          isValue_Kind `protobuf_oneof:\"kind\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Value) Reset() {\n\t*x = Value{}\n\tmi := &file_cel_expr_value_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Value) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Value) ProtoMessage() {}\n\nfunc (x *Value) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_value_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Value.ProtoReflect.Descriptor instead.\nfunc (*Value) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_value_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Value) GetKind() isValue_Kind {\n\tif x != nil {\n\t\treturn x.Kind\n\t}\n\treturn nil\n}\n\nfunc (x *Value) GetNullValue() structpb.NullValue {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_NullValue); ok {\n\t\t\treturn x.NullValue\n\t\t}\n\t}\n\treturn structpb.NullValue(0)\n}\n\nfunc (x *Value) GetBoolValue() bool {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_BoolValue); ok {\n\t\t\treturn x.BoolValue\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (x *Value) GetInt64Value() int64 {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_Int64Value); ok {\n\t\t\treturn x.Int64Value\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (x *Value) GetUint64Value() uint64 {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_Uint64Value); ok {\n\t\t\treturn x.Uint64Value\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (x *Value) GetDoubleValue() float64 {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_DoubleValue); ok {\n\t\t\treturn x.DoubleValue\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (x *Value) GetStringValue() string {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_StringValue); ok {\n\t\t\treturn x.StringValue\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *Value) GetBytesValue() []byte {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_BytesValue); ok {\n\t\t\treturn x.BytesValue\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Value) GetEnumValue() *EnumValue {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_EnumValue); ok {\n\t\t\treturn x.EnumValue\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Value) GetObjectValue() *anypb.Any {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_ObjectValue); ok {\n\t\t\treturn x.ObjectValue\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Value) GetMapValue() *MapValue {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_MapValue); ok {\n\t\t\treturn x.MapValue\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Value) GetListValue() *ListValue {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_ListValue); ok {\n\t\t\treturn x.ListValue\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Value) GetTypeValue() string {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_TypeValue); ok {\n\t\t\treturn x.TypeValue\n\t\t}\n\t}\n\treturn \"\"\n}\n\ntype isValue_Kind interface {\n\tisValue_Kind()\n}\n\ntype Value_NullValue struct {\n\tNullValue structpb.NullValue `protobuf:\"varint,1,opt,name=null_value,json=nullValue,proto3,enum=google.protobuf.NullValue,oneof\"`\n}\n\ntype Value_BoolValue struct {\n\tBoolValue bool `protobuf:\"varint,2,opt,name=bool_value,json=boolValue,proto3,oneof\"`\n}\n\ntype Value_Int64Value struct {\n\tInt64Value int64 `protobuf:\"varint,3,opt,name=int64_value,json=int64Value,proto3,oneof\"`\n}\n\ntype Value_Uint64Value struct {\n\tUint64Value uint64 `protobuf:\"varint,4,opt,name=uint64_value,json=uint64Value,proto3,oneof\"`\n}\n\ntype Value_DoubleValue struct {\n\tDoubleValue float64 `protobuf:\"fixed64,5,opt,name=double_value,json=doubleValue,proto3,oneof\"`\n}\n\ntype Value_StringValue struct {\n\tStringValue string `protobuf:\"bytes,6,opt,name=string_value,json=stringValue,proto3,oneof\"`\n}\n\ntype Value_BytesValue struct {\n\tBytesValue []byte `protobuf:\"bytes,7,opt,name=bytes_value,json=bytesValue,proto3,oneof\"`\n}\n\ntype Value_EnumValue struct {\n\tEnumValue *EnumValue `protobuf:\"bytes,9,opt,name=enum_value,json=enumValue,proto3,oneof\"`\n}\n\ntype Value_ObjectValue struct {\n\tObjectValue *anypb.Any `protobuf:\"bytes,10,opt,name=object_value,json=objectValue,proto3,oneof\"`\n}\n\ntype Value_MapValue struct {\n\tMapValue *MapValue `protobuf:\"bytes,11,opt,name=map_value,json=mapValue,proto3,oneof\"`\n}\n\ntype Value_ListValue struct {\n\tListValue *ListValue `protobuf:\"bytes,12,opt,name=list_value,json=listValue,proto3,oneof\"`\n}\n\ntype Value_TypeValue struct {\n\tTypeValue string `protobuf:\"bytes,15,opt,name=type_value,json=typeValue,proto3,oneof\"`\n}\n\nfunc (*Value_NullValue) isValue_Kind() {}\n\nfunc (*Value_BoolValue) isValue_Kind() {}\n\nfunc (*Value_Int64Value) isValue_Kind() {}\n\nfunc (*Value_Uint64Value) isValue_Kind() {}\n\nfunc (*Value_DoubleValue) isValue_Kind() {}\n\nfunc (*Value_StringValue) isValue_Kind() {}\n\nfunc (*Value_BytesValue) isValue_Kind() {}\n\nfunc (*Value_EnumValue) isValue_Kind() {}\n\nfunc (*Value_ObjectValue) isValue_Kind() {}\n\nfunc (*Value_MapValue) isValue_Kind() {}\n\nfunc (*Value_ListValue) isValue_Kind() {}\n\nfunc (*Value_TypeValue) isValue_Kind() {}\n\ntype EnumValue struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tType          string                 `protobuf:\"bytes,1,opt,name=type,proto3\" json:\"type,omitempty\"`\n\tValue         int32                  `protobuf:\"varint,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *EnumValue) Reset() {\n\t*x = EnumValue{}\n\tmi := &file_cel_expr_value_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EnumValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumValue) ProtoMessage() {}\n\nfunc (x *EnumValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_value_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumValue.ProtoReflect.Descriptor instead.\nfunc (*EnumValue) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_value_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *EnumValue) GetType() string {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn \"\"\n}\n\nfunc (x *EnumValue) GetValue() int32 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\ntype ListValue struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tValues        []*Value               `protobuf:\"bytes,1,rep,name=values,proto3\" json:\"values,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ListValue) Reset() {\n\t*x = ListValue{}\n\tmi := &file_cel_expr_value_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ListValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ListValue) ProtoMessage() {}\n\nfunc (x *ListValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_value_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ListValue.ProtoReflect.Descriptor instead.\nfunc (*ListValue) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_value_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *ListValue) GetValues() []*Value {\n\tif x != nil {\n\t\treturn x.Values\n\t}\n\treturn nil\n}\n\ntype MapValue struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tEntries       []*MapValue_Entry      `protobuf:\"bytes,1,rep,name=entries,proto3\" json:\"entries,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *MapValue) Reset() {\n\t*x = MapValue{}\n\tmi := &file_cel_expr_value_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MapValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MapValue) ProtoMessage() {}\n\nfunc (x *MapValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_value_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MapValue.ProtoReflect.Descriptor instead.\nfunc (*MapValue) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_value_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *MapValue) GetEntries() []*MapValue_Entry {\n\tif x != nil {\n\t\treturn x.Entries\n\t}\n\treturn nil\n}\n\ntype MapValue_Entry struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tKey           *Value                 `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\tValue         *Value                 `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *MapValue_Entry) Reset() {\n\t*x = MapValue_Entry{}\n\tmi := &file_cel_expr_value_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MapValue_Entry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MapValue_Entry) ProtoMessage() {}\n\nfunc (x *MapValue_Entry) ProtoReflect() protoreflect.Message {\n\tmi := &file_cel_expr_value_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MapValue_Entry.ProtoReflect.Descriptor instead.\nfunc (*MapValue_Entry) Descriptor() ([]byte, []int) {\n\treturn file_cel_expr_value_proto_rawDescGZIP(), []int{3, 0}\n}\n\nfunc (x *MapValue_Entry) GetKey() *Value {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn nil\n}\n\nfunc (x *MapValue_Entry) GetValue() *Value {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nvar File_cel_expr_value_proto protoreflect.FileDescriptor\n\nconst file_cel_expr_value_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x14cel/expr/value.proto\\x12\\bcel.expr\\x1a\\x19google/protobuf/any.proto\\x1a\\x1cgoogle/protobuf/struct.proto\\\"\\x9d\\x04\\n\" +\n\t\"\\x05Value\\x12;\\n\" +\n\t\"\\n\" +\n\t\"null_value\\x18\\x01 \\x01(\\x0e2\\x1a.google.protobuf.NullValueH\\x00R\\tnullValue\\x12\\x1f\\n\" +\n\t\"\\n\" +\n\t\"bool_value\\x18\\x02 \\x01(\\bH\\x00R\\tboolValue\\x12!\\n\" +\n\t\"\\vint64_value\\x18\\x03 \\x01(\\x03H\\x00R\\n\" +\n\t\"int64Value\\x12#\\n\" +\n\t\"\\fuint64_value\\x18\\x04 \\x01(\\x04H\\x00R\\vuint64Value\\x12#\\n\" +\n\t\"\\fdouble_value\\x18\\x05 \\x01(\\x01H\\x00R\\vdoubleValue\\x12#\\n\" +\n\t\"\\fstring_value\\x18\\x06 \\x01(\\tH\\x00R\\vstringValue\\x12!\\n\" +\n\t\"\\vbytes_value\\x18\\a \\x01(\\fH\\x00R\\n\" +\n\t\"bytesValue\\x124\\n\" +\n\t\"\\n\" +\n\t\"enum_value\\x18\\t \\x01(\\v2\\x13.cel.expr.EnumValueH\\x00R\\tenumValue\\x129\\n\" +\n\t\"\\fobject_value\\x18\\n\" +\n\t\" \\x01(\\v2\\x14.google.protobuf.AnyH\\x00R\\vobjectValue\\x121\\n\" +\n\t\"\\tmap_value\\x18\\v \\x01(\\v2\\x12.cel.expr.MapValueH\\x00R\\bmapValue\\x124\\n\" +\n\t\"\\n\" +\n\t\"list_value\\x18\\f \\x01(\\v2\\x13.cel.expr.ListValueH\\x00R\\tlistValue\\x12\\x1f\\n\" +\n\t\"\\n\" +\n\t\"type_value\\x18\\x0f \\x01(\\tH\\x00R\\ttypeValueB\\x06\\n\" +\n\t\"\\x04kind\\\"5\\n\" +\n\t\"\\tEnumValue\\x12\\x12\\n\" +\n\t\"\\x04type\\x18\\x01 \\x01(\\tR\\x04type\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\x05R\\x05value\\\"4\\n\" +\n\t\"\\tListValue\\x12'\\n\" +\n\t\"\\x06values\\x18\\x01 \\x03(\\v2\\x0f.cel.expr.ValueR\\x06values\\\"\\x91\\x01\\n\" +\n\t\"\\bMapValue\\x122\\n\" +\n\t\"\\aentries\\x18\\x01 \\x03(\\v2\\x18.cel.expr.MapValue.EntryR\\aentries\\x1aQ\\n\" +\n\t\"\\x05Entry\\x12!\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\v2\\x0f.cel.expr.ValueR\\x03key\\x12%\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x0f.cel.expr.ValueR\\x05valueB-\\n\" +\n\t\"\\fdev.cel.exprB\\n\" +\n\t\"ValueProtoP\\x01Z\\fcel.dev/expr\\xf8\\x01\\x01b\\x06proto3\"\n\nvar (\n\tfile_cel_expr_value_proto_rawDescOnce sync.Once\n\tfile_cel_expr_value_proto_rawDescData []byte\n)\n\nfunc file_cel_expr_value_proto_rawDescGZIP() []byte {\n\tfile_cel_expr_value_proto_rawDescOnce.Do(func() {\n\t\tfile_cel_expr_value_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cel_expr_value_proto_rawDesc), len(file_cel_expr_value_proto_rawDesc)))\n\t})\n\treturn file_cel_expr_value_proto_rawDescData\n}\n\nvar file_cel_expr_value_proto_msgTypes = make([]protoimpl.MessageInfo, 5)\nvar file_cel_expr_value_proto_goTypes = []any{\n\t(*Value)(nil),           // 0: cel.expr.Value\n\t(*EnumValue)(nil),       // 1: cel.expr.EnumValue\n\t(*ListValue)(nil),       // 2: cel.expr.ListValue\n\t(*MapValue)(nil),        // 3: cel.expr.MapValue\n\t(*MapValue_Entry)(nil),  // 4: cel.expr.MapValue.Entry\n\t(structpb.NullValue)(0), // 5: google.protobuf.NullValue\n\t(*anypb.Any)(nil),       // 6: google.protobuf.Any\n}\nvar file_cel_expr_value_proto_depIdxs = []int32{\n\t5, // 0: cel.expr.Value.null_value:type_name -> google.protobuf.NullValue\n\t1, // 1: cel.expr.Value.enum_value:type_name -> cel.expr.EnumValue\n\t6, // 2: cel.expr.Value.object_value:type_name -> google.protobuf.Any\n\t3, // 3: cel.expr.Value.map_value:type_name -> cel.expr.MapValue\n\t2, // 4: cel.expr.Value.list_value:type_name -> cel.expr.ListValue\n\t0, // 5: cel.expr.ListValue.values:type_name -> cel.expr.Value\n\t4, // 6: cel.expr.MapValue.entries:type_name -> cel.expr.MapValue.Entry\n\t0, // 7: cel.expr.MapValue.Entry.key:type_name -> cel.expr.Value\n\t0, // 8: cel.expr.MapValue.Entry.value:type_name -> cel.expr.Value\n\t9, // [9:9] is the sub-list for method output_type\n\t9, // [9:9] is the sub-list for method input_type\n\t9, // [9:9] is the sub-list for extension type_name\n\t9, // [9:9] is the sub-list for extension extendee\n\t0, // [0:9] is the sub-list for field type_name\n}\n\nfunc init() { file_cel_expr_value_proto_init() }\nfunc file_cel_expr_value_proto_init() {\n\tif File_cel_expr_value_proto != nil {\n\t\treturn\n\t}\n\tfile_cel_expr_value_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*Value_NullValue)(nil),\n\t\t(*Value_BoolValue)(nil),\n\t\t(*Value_Int64Value)(nil),\n\t\t(*Value_Uint64Value)(nil),\n\t\t(*Value_DoubleValue)(nil),\n\t\t(*Value_StringValue)(nil),\n\t\t(*Value_BytesValue)(nil),\n\t\t(*Value_EnumValue)(nil),\n\t\t(*Value_ObjectValue)(nil),\n\t\t(*Value_MapValue)(nil),\n\t\t(*Value_ListValue)(nil),\n\t\t(*Value_TypeValue)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_cel_expr_value_proto_rawDesc), len(file_cel_expr_value_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   5,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_cel_expr_value_proto_goTypes,\n\t\tDependencyIndexes: file_cel_expr_value_proto_depIdxs,\n\t\tMessageInfos:      file_cel_expr_value_proto_msgTypes,\n\t}.Build()\n\tFile_cel_expr_value_proto = out.File\n\tfile_cel_expr_value_proto_goTypes = nil\n\tfile_cel_expr_value_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cilium/kafka/LICENSE",
    "content": "Copyright (c) 2015-2016 Optiopay\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/cilium/kafka/proto/doc.go",
    "content": "/*\n\nPackage proto provides kafka binary protocol implementation.\n\n*/\npackage proto\n"
  },
  {
    "path": "vendor/github.com/cilium/kafka/proto/errors.go",
    "content": "package proto\n\nimport (\n\t\"fmt\"\n)\n\nvar (\n\tErrUnknown                                 = &KafkaError{-1, \"unknown error\"}\n\tErrOffsetOutOfRange                        = &KafkaError{1, \"offset out of range\"}\n\tErrInvalidMessage                          = &KafkaError{2, \"invalid message\"}\n\tErrUnknownTopicOrPartition                 = &KafkaError{3, \"unknown topic or partition\"}\n\tErrInvalidMessageSize                      = &KafkaError{4, \"invalid message size\"}\n\tErrLeaderNotAvailable                      = &KafkaError{5, \"leader not available\"}\n\tErrNotLeaderForPartition                   = &KafkaError{6, \"not leader for partition\"}\n\tErrRequestTimeout                          = &KafkaError{7, \"request timeed out\"}\n\tErrBrokerNotAvailable                      = &KafkaError{8, \"broker not available\"}\n\tErrReplicaNotAvailable                     = &KafkaError{9, \"replica not available\"}\n\tErrMessageSizeTooLarge                     = &KafkaError{10, \"message size too large\"}\n\tErrScaleControllerEpoch                    = &KafkaError{11, \"scale controller epoch\"}\n\tErrOffsetMetadataTooLarge                  = &KafkaError{12, \"offset metadata too large\"}\n\tErrNetwork                                 = &KafkaError{13, \"server disconnected before response was received\"}\n\tErrOffsetLoadInProgress                    = &KafkaError{14, \"offsets load in progress\"}\n\tErrNoCoordinator                           = &KafkaError{15, \"consumer coordinator not available\"}\n\tErrNotCoordinator                          = &KafkaError{16, \"not coordinator for consumer\"}\n\tErrInvalidTopic                            = &KafkaError{17, \"operation on an invalid topic\"}\n\tErrRecordListTooLarge                      = &KafkaError{18, \"message batch larger than the configured segment size\"}\n\tErrNotEnoughReplicas                       = &KafkaError{19, \"not enough in-sync replicas\"}\n\tErrNotEnoughReplicasAfterAppend            = &KafkaError{20, \"messages are written to the log, but to fewer in-sync replicas than required\"}\n\tErrInvalidRequiredAcks                     = &KafkaError{21, \"invalid value for required acks\"}\n\tErrIllegalGeneration                       = &KafkaError{22, \"consumer generation id is not valid\"}\n\tErrInconsistentPartitionAssignmentStrategy = &KafkaError{23, \"partition assignment strategy does not match that of the group\"}\n\tErrUnknownParititonAssignmentStrategy      = &KafkaError{24, \"partition assignment strategy is unknown to the broker\"}\n\tErrUnknownConsumerID                       = &KafkaError{25, \"coordinator is not aware of this consumer\"}\n\tErrInvalidSessionTimeout                   = &KafkaError{26, \"invalid session timeout\"}\n\tErrRebalanceInProgress                     = &KafkaError{27, \"group is rebalancing, so a rejoin is needed\"}\n\tErrInvalidCommitOffsetSize                 = &KafkaError{28, \"offset data size is not valid\"}\n\tErrTopicAuthorizationFailed                = &KafkaError{29, \"topic authorization failed\"}\n\tErrGroupAuthorizationFailed                = &KafkaError{30, \"group authorization failed\"}\n\tErrClusterAuthorizationFailed              = &KafkaError{31, \"cluster authorization failed\"}\n\tErrInvalidTimeStamp                        = &KafkaError{32, \"timestamp of the message is out of acceptable range\"}\n\n\terrnoToErr = map[int16]error{\n\t\t-1: ErrUnknown,\n\t\t1:  ErrOffsetOutOfRange,\n\t\t2:  ErrInvalidMessage,\n\t\t3:  ErrUnknownTopicOrPartition,\n\t\t4:  ErrInvalidMessageSize,\n\t\t5:  ErrLeaderNotAvailable,\n\t\t6:  ErrNotLeaderForPartition,\n\t\t7:  ErrRequestTimeout,\n\t\t8:  ErrBrokerNotAvailable,\n\t\t9:  ErrReplicaNotAvailable,\n\t\t10: ErrMessageSizeTooLarge,\n\t\t11: ErrScaleControllerEpoch,\n\t\t12: ErrOffsetMetadataTooLarge,\n\t\t13: ErrNetwork,\n\t\t14: ErrOffsetLoadInProgress,\n\t\t15: ErrNoCoordinator,\n\t\t16: ErrNotCoordinator,\n\t\t17: ErrInvalidTopic,\n\t\t18: ErrRecordListTooLarge,\n\t\t19: ErrNotEnoughReplicas,\n\t\t20: ErrNotEnoughReplicasAfterAppend,\n\t\t21: ErrInvalidRequiredAcks,\n\t\t22: ErrIllegalGeneration,\n\t\t23: ErrInconsistentPartitionAssignmentStrategy,\n\t\t24: ErrUnknownParititonAssignmentStrategy,\n\t\t25: ErrUnknownConsumerID,\n\t\t26: ErrInvalidSessionTimeout,\n\t\t27: ErrRebalanceInProgress,\n\t\t28: ErrInvalidCommitOffsetSize,\n\t\t29: ErrTopicAuthorizationFailed,\n\t\t30: ErrGroupAuthorizationFailed,\n\t\t31: ErrClusterAuthorizationFailed,\n\t\t32: ErrInvalidCommitOffsetSize,\n\t}\n)\n\ntype KafkaError struct {\n\terrno   int16\n\tmessage string\n}\n\nfunc (err *KafkaError) Error() string {\n\treturn fmt.Sprintf(\"%s (%d)\", err.message, err.errno)\n}\n\nfunc (err *KafkaError) Errno() int {\n\treturn int(err.errno)\n}\n\nfunc errFromNo(errno int16) error {\n\tif errno == 0 {\n\t\treturn nil\n\t}\n\terr, ok := errnoToErr[errno]\n\tif !ok {\n\t\treturn fmt.Errorf(\"unknown kafka error %d\", errno)\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/cilium/kafka/proto/messages.go",
    "content": "package proto\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"hash/crc32\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"time\"\n\n\t\"github.com/golang/snappy\"\n)\n\n/*\n\nKafka wire protocol implemented as described in\nhttps://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-Messagesets\n\n*/\n\nconst (\n\tKafkaV0 int16 = iota\n\tKafkaV1\n\tKafkaV2\n\tKafkaV3\n\tKafkaV4\n\tKafkaV5\n)\n\nconst (\n\tProduceReqKind          = 0\n\tFetchReqKind            = 1\n\tOffsetReqKind           = 2\n\tMetadataReqKind         = 3\n\tOffsetCommitReqKind     = 8\n\tOffsetFetchReqKind      = 9\n\tConsumerMetadataReqKind = 10\n\n\t// receive the latest offset (i.e. the offset of the next coming message)\n\tOffsetReqTimeLatest = -1\n\n\t// receive the earliest available offset. Note that because offsets are\n\t// pulled in descending order, asking for the earliest offset will always\n\t// return you a single element.\n\tOffsetReqTimeEarliest = -2\n\n\t// Server will not send any response.\n\tRequiredAcksNone = 0\n\n\t// Server will block until the message is committed by all in sync replicas\n\t// before sending a response.\n\tRequiredAcksAll = -1\n\n\t// Server will wait the data is written to the local log before sending a\n\t// response.\n\tRequiredAcksLocal = 1\n)\n\ntype Compression int8\n\nconst (\n\tCompressionNone   Compression = 0\n\tCompressionGzip   Compression = 1\n\tCompressionSnappy Compression = 2\n)\n\n// ParserConfig is optional configuration for the parser. It can be configured via\n// SetParserConfig\ntype ParserConfig struct {\n\t// SimplifiedMessageSetParsing enables a simplified version of the\n\t// MessageSet parser which will not split MessageSet into slices of\n\t// Message structures. Instead, the entire MessageSet will be read\n\t// over. This mode improves parsing speed due to reduce memory read at\n\t// the cost of not providing access to the message payload after\n\t// parsing.\n\tSimplifiedMessageSetParsing bool\n}\n\nvar (\n\tconf ParserConfig\n)\n\n// ConfigureParser configures the parser. It must be called prior to parsing\n// any messages as the structure is currently not prepared for concurrent\n// access.\nfunc ConfigureParser(c ParserConfig) error {\n\tconf = c\n\treturn nil\n}\n\nfunc boolToInt8(val bool) int8 {\n\tres := int8(0)\n\tif val {\n\t\tres = 1\n\t}\n\treturn res\n}\n\n// discard tries to discard bytes\n// from the io.Reader in chunks of maxDiscardSize(4096) bytes\n// to avoid allocating huge amount of memory in\n// one go.\nfunc discard(r io.Reader, n int32) {\n\tremBytes := n\n\tvar delBytes int32\n\n\tdelBytes = 0\n\tfor remBytes > 0 {\n\t\tif remBytes > maxDiscardSize {\n\t\t\tdelBytes = maxDiscardSize\n\t\t\tremBytes = remBytes - maxDiscardSize\n\t\t} else {\n\t\t\tdelBytes = remBytes\n\t\t\tremBytes = 0\n\t\t}\n\t\tio.CopyN(ioutil.Discard, r, int64(delBytes))\n\t}\n}\n\n// ReadReq returns request kind ID and byte representation of the whole message\n// in wire protocol format.\nfunc ReadReq(r io.Reader) (requestKind int16, b []byte, err error) {\n\tdec := NewDecoder(r)\n\tmsgSize := dec.DecodeInt32()\n\tif err := dec.Err(); err != nil {\n\t\treturn 0, nil, err\n\t}\n\n\tif msgSize <= 0 {\n\t\treturn 0, nil, io.ErrUnexpectedEOF\n\t}\n\n\trequestKind = dec.DecodeInt16()\n\tif err := dec.Err(); err != nil {\n\t\tdiscard(r, msgSize)\n\t\treturn 0, nil, err\n\t}\n\t// size of the message + size of the message itself\n\tb, err = allocParseBuf(int(msgSize + 4))\n\tif err != nil {\n\t\tif msgSize > 2 {\n\t\t\t// We have already read the requestKind\n\t\t\tdiscard(r, msgSize-2)\n\t\t}\n\t\treturn 0, nil, err\n\t}\n\n\tbinary.BigEndian.PutUint32(b, uint32(msgSize))\n\n\t// only write back requestKind if it was included in messageSize\n\tif len(b) >= 6 {\n\t\tbinary.BigEndian.PutUint16(b[4:], uint16(requestKind))\n\t}\n\n\t// read rest of request into allocated buffer if we allocated for it\n\tif len(b) > 6 {\n\t\tif _, err := io.ReadFull(r, b[6:]); err != nil {\n\t\t\treturn 0, nil, err\n\t\t}\n\t}\n\n\treturn requestKind, b, nil\n}\n\n// ReadResp returns message correlation ID and byte representation of the whole\n// message in wire protocol that is returned when reading from given stream,\n// including 4 bytes of message size itself.\n// Byte representation returned by ReadResp can be parsed by all response\n// reeaders to transform it into specialized response structure.\nfunc ReadResp(r io.Reader) (correlationID int32, b []byte, err error) {\n\tdec := NewDecoder(r)\n\tmsgSize := dec.DecodeInt32()\n\tif err := dec.Err(); err != nil {\n\t\treturn 0, nil, err\n\t}\n\n\tif msgSize <= 0 {\n\t\treturn 0, nil, io.ErrUnexpectedEOF\n\t}\n\n\tcorrelationID = dec.DecodeInt32()\n\tif err := dec.Err(); err != nil {\n\t\tdiscard(r, msgSize)\n\t\treturn 0, nil, err\n\t}\n\t// size of the message + size of the message itself\n\tb, err = allocParseBuf(int(msgSize + 4))\n\tif err != nil {\n\t\tif msgSize > 4 {\n\t\t\t// We have already read the correlationID\n\t\t\tdiscard(r, msgSize-4)\n\t\t}\n\t\treturn 0, nil, err\n\t}\n\n\tbinary.BigEndian.PutUint32(b, uint32(msgSize))\n\tbinary.BigEndian.PutUint32(b[4:], uint32(correlationID))\n\t_, err = io.ReadFull(r, b[8:])\n\treturn correlationID, b, err\n}\n\n// Message represents single entity of message set.\ntype Message struct {\n\tKey       []byte\n\tValue     []byte\n\tOffset    int64  // set when fetching and after successful producing\n\tCrc       uint32 // set when fetching, ignored when producing\n\tTopic     string // set when fetching, ignored when producing\n\tPartition int32  // set when fetching, ignored when producing\n\tTipOffset int64  // set when fetching, ignored when processing\n}\n\n// ComputeCrc returns crc32 hash for given message content.\nfunc ComputeCrc(m *Message, compression Compression) uint32 {\n\tvar buf bytes.Buffer\n\tenc := NewEncoder(&buf)\n\tenc.EncodeInt8(0) // magic byte is always 0\n\tenc.EncodeInt8(int8(compression))\n\tenc.EncodeBytes(m.Key)\n\tenc.EncodeBytes(m.Value)\n\treturn crc32.ChecksumIEEE(buf.Bytes())\n}\n\n// writeMessageSet writes a Message Set into w.\n// It returns the number of bytes written and any error.\nfunc writeMessageSet(w io.Writer, messages []*Message, compression Compression) (int, error) {\n\t// The RECORDS type is nullable.\n\tif messages == nil {\n\t\treturn -1, nil\n\t}\n\n\tif len(messages) == 0 {\n\t\treturn 0, nil\n\t}\n\n\t// NOTE(caleb): it doesn't appear to be documented, but I observed that the\n\t// Java client sets the offset of the synthesized message set for a group of\n\t// compressed messages to be the offset of the last message in the set.\n\tcompressOffset := messages[len(messages)-1].Offset\n\tswitch compression {\n\tcase CompressionGzip:\n\t\tvar buf bytes.Buffer\n\t\tgz := gzip.NewWriter(&buf)\n\t\tif _, err := writeMessageSet(gz, messages, CompressionNone); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tif err := gz.Close(); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tmessages = []*Message{\n\t\t\t{\n\t\t\t\tValue:  buf.Bytes(),\n\t\t\t\tOffset: compressOffset,\n\t\t\t},\n\t\t}\n\tcase CompressionSnappy:\n\t\tvar buf bytes.Buffer\n\t\tif _, err := writeMessageSet(&buf, messages, CompressionNone); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tmessages = []*Message{\n\t\t\t{\n\t\t\t\tValue:  snappy.Encode(nil, buf.Bytes()),\n\t\t\t\tOffset: compressOffset,\n\t\t\t},\n\t\t}\n\t}\n\n\ttotalSize := 0\n\tb, err := newSliceWriter(0)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tfor _, message := range messages {\n\t\tbsize := 26 + len(message.Key) + len(message.Value)\n\t\tif err := b.Reset(bsize); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\n\t\tenc := NewEncoder(b)\n\t\tenc.EncodeInt64(message.Offset)\n\t\tmsize := int32(14 + len(message.Key) + len(message.Value))\n\t\tenc.EncodeInt32(msize)\n\t\tenc.EncodeUint32(0) // crc32 placeholder\n\t\tenc.EncodeInt8(0)   // magic byte\n\t\tenc.EncodeInt8(int8(compression))\n\t\tenc.EncodeBytes(message.Key)\n\t\tenc.EncodeBytes(message.Value)\n\n\t\tif err := enc.Err(); err != nil {\n\t\t\treturn totalSize, err\n\t\t}\n\n\t\tconst hsize = 8 + 4 + 4 // offset + message size + crc32\n\t\tconst crcoff = 8 + 4    // offset + message size\n\t\tbinary.BigEndian.PutUint32(b.buf[crcoff:crcoff+4], crc32.ChecksumIEEE(b.buf[hsize:bsize]))\n\n\t\tif n, err := w.Write(b.Slice()); err != nil {\n\t\t\treturn totalSize, err\n\t\t} else {\n\t\t\ttotalSize += n\n\t\t}\n\n\t}\n\treturn totalSize, nil\n}\n\ntype slicewriter struct {\n\tbuf  []byte\n\tpos  int\n\tsize int\n}\n\nfunc newSliceWriter(bufsize int) (*slicewriter, error) {\n\tbuf, err := allocParseBuf(bufsize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &slicewriter{\n\t\tbuf: buf,\n\t\tpos: 0,\n\t}, nil\n}\n\nfunc (w *slicewriter) Write(p []byte) (int, error) {\n\tif len(w.buf) < w.pos+len(p) {\n\t\treturn 0, errors.New(\"buffer too small\")\n\t}\n\tcopy(w.buf[w.pos:], p)\n\tw.pos += len(p)\n\treturn len(p), nil\n}\n\nfunc (w *slicewriter) Reset(size int) error {\n\tif size > len(w.buf) {\n\t\tvar err error\n\n\t\tw.buf, err = allocParseBuf(size + 1000) // allocate a bit more than required\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tw.size = size\n\tw.pos = 0\n\treturn nil\n}\n\nfunc (w *slicewriter) Slice() []byte {\n\treturn w.buf[:w.pos]\n}\n\n// readMessageSet reads and return messages from the stream.\n// The size is known before a message set is decoded.\n// Because kafka is sending message set directly from the drive, it might cut\n// off part of the last message. This also means that the last message can be\n// shorter than the header is saying. In such case just ignore the last\n// malformed message from the set and returned earlier data.\n// The version refers to the kafka version used for the requests and responses.\nfunc readMessageSet(r io.Reader, size int32, version int16) ([]*Message, error) {\n\t// The RECORDS type is nullable.\n\tif size < 0 { // null array\n\t\treturn nil, nil\n\t}\n\n\tif size > maxParseBufSize {\n\t\treturn nil, messageSizeError(int(size))\n\t}\n\n\trd := io.LimitReader(r, int64(size))\n\n\tif conf.SimplifiedMessageSetParsing {\n\t\tmsgbuf, err := allocParseBuf(int(size))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif _, err := io.ReadFull(rd, msgbuf); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn make([]*Message, 0, 0), nil\n\t}\n\n\tdec := NewDecoder(rd)\n\tset := make([]*Message, 0, 256)\n\n\tfor {\n\t\toffset := dec.DecodeInt64()\n\t\tif err := dec.Err(); err != nil {\n\t\t\tif err == io.EOF || err == io.ErrUnexpectedEOF {\n\t\t\t\treturn set, nil\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\t\t// single message size\n\t\tsize := dec.DecodeInt32()\n\t\tif err := dec.Err(); err != nil {\n\t\t\tif err == io.EOF || err == io.ErrUnexpectedEOF {\n\t\t\t\treturn set, nil\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// Skip over empty messages\n\t\tif size <= int32(0) {\n\t\t\treturn set, nil\n\t\t}\n\n\t\tmsgbuf, err := allocParseBuf(int(size))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif _, err := io.ReadFull(rd, msgbuf); err != nil {\n\t\t\tif err == io.EOF || err == io.ErrUnexpectedEOF {\n\t\t\t\treturn set, nil\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\t\tmsgdec := NewDecoder(bytes.NewBuffer(msgbuf))\n\n\t\tmsg := &Message{\n\t\t\tOffset: offset,\n\t\t\tCrc:    msgdec.DecodeUint32(),\n\t\t}\n\n\t\t// MessageSet with no payload\n\t\tif size <= int32(4) {\n\t\t\tset = append(set, msg)\n\t\t\treturn set, nil\n\t\t}\n\n\t\tif msg.Crc != crc32.ChecksumIEEE(msgbuf[4:]) {\n\t\t\t// ignore this message and because we want to have constant\n\t\t\t// history, do not process anything more\n\t\t\treturn set, nil\n\t\t}\n\n\t\t// magic byte\n\t\t_ = msgdec.DecodeInt8()\n\n\t\tattributes := msgdec.DecodeInt8()\n\n\t\tif version >= KafkaV1 {\n\t\t\t// timestamp\n\t\t\t_ = msgdec.DecodeInt64()\n\t\t}\n\n\t\tswitch compression := Compression(attributes & 3); compression {\n\t\tcase CompressionNone:\n\t\t\tmsg.Key = msgdec.DecodeBytes()\n\t\t\tmsg.Value = msgdec.DecodeBytes()\n\t\t\tif err := msgdec.Err(); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tset = append(set, msg)\n\t\tcase CompressionGzip, CompressionSnappy:\n\t\t\t_ = msgdec.DecodeBytes() // ignore key\n\t\t\tval := msgdec.DecodeBytes()\n\t\t\tif err := msgdec.Err(); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tvar decoded []byte\n\t\t\tswitch compression {\n\t\t\tcase CompressionGzip:\n\t\t\t\tcr, err := gzip.NewReader(bytes.NewReader(val))\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tdecoded, err = ioutil.ReadAll(cr)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\t_ = cr.Close()\n\t\t\tcase CompressionSnappy:\n\t\t\t\tvar err error\n\t\t\t\tdecoded, err = snappyDecode(val)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t}\n\t\t\tmsgs, err := readMessageSet(bytes.NewReader(decoded), int32(len(decoded)), version)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tset = append(set, msgs...)\n\t\tdefault:\n\t\t\treturn nil, err\n\t\t}\n\t}\n}\n\ntype MetadataReq struct {\n\tVersion                int16\n\tCorrelationID          int32\n\tClientID               string\n\tTopics                 []string\n\tAllowAutoTopicCreation bool // >= KafkaV4 only\n}\n\nfunc ReadMetadataReq(r io.Reader) (*MetadataReq, error) {\n\tvar req MetadataReq\n\tdec := NewDecoder(r)\n\n\t// total message size\n\t_ = dec.DecodeInt32()\n\t// api key\n\t_ = dec.DecodeInt16()\n\treq.Version = dec.DecodeInt16()\n\treq.CorrelationID = dec.DecodeInt32()\n\treq.ClientID = dec.DecodeString()\n\tlen, err := dec.DecodeArrayLen(true) // nullable\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len < 0 { // null array\n\t\treq.Topics = nil\n\t} else {\n\t\treq.Topics = make([]string, len)\n\t}\n\n\tfor i := range req.Topics {\n\t\treq.Topics[i] = dec.DecodeString()\n\t}\n\n\tif req.Version >= KafkaV4 {\n\t\treq.AllowAutoTopicCreation = dec.DecodeInt8() != 0\n\t}\n\n\tif dec.Err() != nil {\n\t\treturn nil, dec.Err()\n\t}\n\treturn &req, nil\n}\n\nfunc (r *MetadataReq) Bytes(version int16) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tenc := NewEncoder(&buf)\n\n\t// message size - for now just placeholder\n\tenc.Encode(int32(0))\n\tenc.Encode(int16(MetadataReqKind))\n\tenc.Encode(r.Version)\n\tenc.Encode(r.CorrelationID)\n\tenc.Encode(r.ClientID)\n\n\tenc.EncodeArrayLen(r.Topics)\n\tfor _, name := range r.Topics {\n\t\tenc.Encode(name)\n\t}\n\n\tif version >= KafkaV4 {\n\t\tenc.Encode(boolToInt8(r.AllowAutoTopicCreation))\n\t}\n\n\tif enc.Err() != nil {\n\t\treturn nil, enc.Err()\n\t}\n\n\t// update the message size information\n\tb := buf.Bytes()\n\tbinary.BigEndian.PutUint32(b, uint32(len(b)-4))\n\n\treturn b, nil\n}\n\nfunc (r *MetadataReq) WriteTo(w io.Writer, version int16) (int64, error) {\n\tb, err := r.Bytes(version)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tn, err := w.Write(b)\n\treturn int64(n), err\n}\n\ntype MetadataResp struct {\n\tCorrelationID int32\n\tThrottleTime  time.Duration // >= KafkaV3\n\tBrokers       []MetadataRespBroker\n\tClusterID     string // >= KafkaV2\n\tControllerID  int32  // >= KafkaV1\n\tTopics        []MetadataRespTopic\n}\n\ntype MetadataRespBroker struct {\n\tNodeID int32\n\tHost   string\n\tPort   int32\n\tRack   string // >= KafkaV1\n}\n\ntype MetadataRespTopic struct {\n\tName       string\n\tErr        error\n\tIsInternal bool // >= KafkaV1\n\tPartitions []MetadataRespPartition\n}\n\ntype MetadataRespPartition struct {\n\tErr      error\n\tID       int32\n\tLeader   int32\n\tReplicas []int32\n\tIsrs     []int32\n}\n\nfunc (r *MetadataResp) Bytes(version int16) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tenc := NewEncoder(&buf)\n\n\t// message size - for now just placeholder\n\tenc.Encode(int32(0))\n\tenc.Encode(r.CorrelationID)\n\n\tif version >= KafkaV3 {\n\t\tenc.Encode(r.ThrottleTime)\n\t}\n\n\tenc.EncodeArrayLen(r.Brokers)\n\tfor _, broker := range r.Brokers {\n\t\tenc.Encode(broker.NodeID)\n\t\tenc.Encode(broker.Host)\n\t\tenc.Encode(broker.Port)\n\n\t\tif version >= KafkaV1 {\n\t\t\tenc.Encode(broker.Rack)\n\t\t}\n\t}\n\n\tif version >= KafkaV2 {\n\t\tenc.Encode(r.ClusterID)\n\t}\n\n\tif version >= KafkaV1 {\n\t\tenc.Encode(r.ControllerID)\n\t}\n\n\tenc.EncodeArrayLen(r.Topics)\n\tfor _, topic := range r.Topics {\n\t\tenc.EncodeError(topic.Err)\n\t\tenc.Encode(topic.Name)\n\n\t\tif version >= KafkaV1 {\n\t\t\tenc.Encode(boolToInt8(topic.IsInternal))\n\t\t}\n\n\t\tenc.EncodeArrayLen(topic.Partitions)\n\t\tfor _, part := range topic.Partitions {\n\t\t\tenc.EncodeError(part.Err)\n\t\t\tenc.Encode(part.ID)\n\t\t\tenc.Encode(part.Leader)\n\t\t\tenc.Encode(part.Replicas)\n\t\t\tenc.Encode(part.Isrs)\n\t\t}\n\t}\n\n\tif enc.Err() != nil {\n\t\treturn nil, enc.Err()\n\t}\n\n\t// update the message size information\n\tb := buf.Bytes()\n\tbinary.BigEndian.PutUint32(b, uint32(len(b)-4))\n\n\treturn b, nil\n}\n\nfunc ReadMetadataResp(r io.Reader) (*MetadataResp, error) {\n\tvar resp MetadataResp\n\tdec := NewDecoder(r)\n\n\t// total message size\n\t_ = dec.DecodeInt32()\n\tresp.CorrelationID = dec.DecodeInt32()\n\n\tlen, err := dec.DecodeArrayLen(false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresp.Brokers = make([]MetadataRespBroker, len)\n\n\tfor i := range resp.Brokers {\n\t\tvar b = &resp.Brokers[i]\n\t\tb.NodeID = dec.DecodeInt32()\n\t\tb.Host = dec.DecodeString()\n\t\tb.Port = dec.DecodeInt32()\n\t}\n\n\tlen, err = dec.DecodeArrayLen(false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresp.Topics = make([]MetadataRespTopic, len)\n\n\tfor ti := range resp.Topics {\n\t\tvar t = &resp.Topics[ti]\n\t\tt.Err = errFromNo(dec.DecodeInt16())\n\t\tt.Name = dec.DecodeString()\n\t\tlen, err = dec.DecodeArrayLen(false)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tt.Partitions = make([]MetadataRespPartition, len)\n\n\t\tfor pi := range t.Partitions {\n\t\t\tvar p = &t.Partitions[pi]\n\t\t\tp.Err = errFromNo(dec.DecodeInt16())\n\t\t\tp.ID = dec.DecodeInt32()\n\t\t\tp.Leader = dec.DecodeInt32()\n\n\t\t\tlen, err = dec.DecodeArrayLen(false)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tp.Replicas = make([]int32, len)\n\n\t\t\tfor ri := range p.Replicas {\n\t\t\t\tp.Replicas[ri] = dec.DecodeInt32()\n\t\t\t}\n\n\t\t\tlen, err = dec.DecodeArrayLen(false)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tp.Isrs = make([]int32, len)\n\n\t\t\tfor ii := range p.Isrs {\n\t\t\t\tp.Isrs[ii] = dec.DecodeInt32()\n\t\t\t}\n\t\t}\n\t}\n\n\tif dec.Err() != nil {\n\t\treturn nil, dec.Err()\n\t}\n\treturn &resp, nil\n}\n\ntype FetchReq struct {\n\tVersion        int16\n\tCorrelationID  int32\n\tClientID       string\n\tReplicaID      int32\n\tMaxWaitTime    time.Duration\n\tMinBytes       int32\n\tMaxBytes       int32 // >= KafkaV3\n\tIsolationLevel int8  // >= KafkaV4\n\n\tTopics []FetchReqTopic\n}\n\ntype FetchReqTopic struct {\n\tName       string\n\tPartitions []FetchReqPartition\n}\n\ntype FetchReqPartition struct {\n\tID             int32\n\tFetchOffset    int64\n\tLogStartOffset int64 // >= KafkaV5\n\tMaxBytes       int32\n}\n\nfunc ReadFetchReq(r io.Reader) (*FetchReq, error) {\n\tvar req FetchReq\n\tdec := NewDecoder(r)\n\n\t// total message size\n\t_ = dec.DecodeInt32()\n\t// api key\n\t_ = dec.DecodeInt16()\n\treq.Version = dec.DecodeInt16()\n\treq.CorrelationID = dec.DecodeInt32()\n\treq.ClientID = dec.DecodeString()\n\n\treq.ReplicaID = dec.DecodeInt32()\n\treq.MaxWaitTime = dec.DecodeDuration32()\n\treq.MinBytes = dec.DecodeInt32()\n\n\tif req.Version >= KafkaV3 {\n\t\treq.MaxBytes = dec.DecodeInt32()\n\t}\n\n\tif req.Version >= KafkaV4 {\n\t\treq.IsolationLevel = dec.DecodeInt8()\n\t}\n\n\tlen, err := dec.DecodeArrayLen(false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treq.Topics = make([]FetchReqTopic, len)\n\n\tfor ti := range req.Topics {\n\t\tvar topic = &req.Topics[ti]\n\t\ttopic.Name = dec.DecodeString()\n\n\t\tlen, err = dec.DecodeArrayLen(false)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttopic.Partitions = make([]FetchReqPartition, len)\n\n\t\tfor pi := range topic.Partitions {\n\t\t\tvar part = &topic.Partitions[pi]\n\t\t\tpart.ID = dec.DecodeInt32()\n\t\t\tpart.FetchOffset = dec.DecodeInt64()\n\n\t\t\tif req.Version >= KafkaV5 {\n\t\t\t\tpart.LogStartOffset = dec.DecodeInt64()\n\t\t\t}\n\n\t\t\tpart.MaxBytes = dec.DecodeInt32()\n\t\t}\n\t}\n\n\tif dec.Err() != nil {\n\t\treturn nil, dec.Err()\n\t}\n\treturn &req, nil\n}\n\nfunc (r *FetchReq) Bytes(version int16) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tenc := NewEncoder(&buf)\n\n\t// message size - for now just placeholder\n\tenc.Encode(int32(0))\n\tenc.Encode(int16(FetchReqKind))\n\tenc.Encode(r.Version)\n\tenc.Encode(r.CorrelationID)\n\tenc.Encode(r.ClientID)\n\n\tenc.Encode(r.ReplicaID)\n\tenc.Encode(r.MaxWaitTime)\n\tenc.Encode(r.MinBytes)\n\n\tif version >= KafkaV3 {\n\t\tenc.Encode(r.MaxBytes)\n\t}\n\n\tif version >= KafkaV4 {\n\t\tenc.Encode(r.IsolationLevel)\n\t}\n\n\tenc.EncodeArrayLen(r.Topics)\n\tfor _, topic := range r.Topics {\n\t\tenc.Encode(topic.Name)\n\t\tenc.EncodeArrayLen(topic.Partitions)\n\t\tfor _, part := range topic.Partitions {\n\t\t\tenc.Encode(part.ID)\n\t\t\tenc.Encode(part.FetchOffset)\n\n\t\t\tif version >= KafkaV5 {\n\t\t\t\tenc.Encode(part.LogStartOffset)\n\t\t\t}\n\n\t\t\tenc.Encode(part.MaxBytes)\n\t\t}\n\t}\n\n\tif enc.Err() != nil {\n\t\treturn nil, enc.Err()\n\t}\n\n\t// update the message size information\n\tb := buf.Bytes()\n\tbinary.BigEndian.PutUint32(b, uint32(len(b)-4))\n\n\treturn b, nil\n}\n\nfunc (r *FetchReq) WriteTo(w io.Writer, version int16) (int64, error) {\n\tb, err := r.Bytes(version)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tn, err := w.Write(b)\n\treturn int64(n), err\n}\n\ntype FetchResp struct {\n\tCorrelationID int32\n\tThrottleTime  time.Duration\n\tTopics        []FetchRespTopic\n}\n\ntype FetchRespTopic struct {\n\tName       string\n\tPartitions []FetchRespPartition\n}\n\ntype FetchRespPartition struct {\n\tID                  int32\n\tErr                 error\n\tTipOffset           int64\n\tLastStableOffset    int64\n\tLogStartOffset      int64\n\tAbortedTransactions []FetchRespAbortedTransaction\n\tMessages            []*Message\n}\n\ntype FetchRespAbortedTransaction struct {\n\tProducerID  int64\n\tFirstOffset int64\n}\n\nfunc (r *FetchResp) Bytes(version int16) ([]byte, error) {\n\tvar buf buffer\n\tenc := NewEncoder(&buf)\n\n\tenc.Encode(int32(0)) // placeholder\n\tenc.Encode(r.CorrelationID)\n\n\tif version >= KafkaV1 {\n\t\tenc.Encode(r.ThrottleTime)\n\t}\n\n\tenc.EncodeArrayLen(r.Topics)\n\tfor _, topic := range r.Topics {\n\t\tenc.Encode(topic.Name)\n\t\tenc.EncodeArrayLen(topic.Partitions)\n\t\tfor _, part := range topic.Partitions {\n\t\t\tenc.Encode(part.ID)\n\t\t\tenc.EncodeError(part.Err)\n\t\t\tenc.Encode(part.TipOffset)\n\n\t\t\tif version >= KafkaV4 {\n\t\t\t\tenc.Encode(part.LastStableOffset)\n\n\t\t\t\tif version >= KafkaV5 {\n\t\t\t\t\tenc.Encode(part.LogStartOffset)\n\t\t\t\t}\n\n\t\t\t\tenc.EncodeArrayLen(part.AbortedTransactions)\n\t\t\t\tfor _, trans := range part.AbortedTransactions {\n\t\t\t\t\tenc.Encode(trans.ProducerID)\n\t\t\t\t\tenc.Encode(trans.FirstOffset)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti := len(buf)\n\t\t\tenc.Encode(int32(0)) // placeholder\n\t\t\t// NOTE(caleb): writing compressed fetch response isn't implemented\n\t\t\t// for now, since that's not needed for clients.\n\t\t\tn, err := writeMessageSet(&buf, part.Messages, CompressionNone)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tbinary.BigEndian.PutUint32(buf[i:i+4], uint32(n))\n\t\t}\n\t}\n\n\tif enc.Err() != nil {\n\t\treturn nil, enc.Err()\n\t}\n\n\tbinary.BigEndian.PutUint32(buf[:4], uint32(len(buf)-4))\n\treturn []byte(buf), nil\n}\n\nfunc ReadFetchResp(r io.Reader) (*FetchResp, error) {\n\tvar err error\n\tvar resp FetchResp\n\n\tdec := NewDecoder(r)\n\n\t// total message size\n\t_ = dec.DecodeInt32()\n\tresp.CorrelationID = dec.DecodeInt32()\n\n\tlen, err := dec.DecodeArrayLen(false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresp.Topics = make([]FetchRespTopic, len)\n\n\tfor ti := range resp.Topics {\n\t\tvar topic = &resp.Topics[ti]\n\t\ttopic.Name = dec.DecodeString()\n\n\t\tlen, err := dec.DecodeArrayLen(false)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttopic.Partitions = make([]FetchRespPartition, len)\n\n\t\tfor pi := range topic.Partitions {\n\t\t\tvar part = &topic.Partitions[pi]\n\t\t\tpart.ID = dec.DecodeInt32()\n\t\t\tpart.Err = errFromNo(dec.DecodeInt16())\n\t\t\tpart.TipOffset = dec.DecodeInt64()\n\t\t\tif dec.Err() != nil {\n\t\t\t\treturn nil, dec.Err()\n\t\t\t}\n\t\t\tmsgSetSize := dec.DecodeInt32()\n\t\t\tif dec.Err() != nil {\n\t\t\t\treturn nil, dec.Err()\n\t\t\t}\n\t\t\tif part.Messages, err = readMessageSet(r, msgSetSize, 0); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tfor _, msg := range part.Messages {\n\t\t\t\tmsg.Topic = topic.Name\n\t\t\t\tmsg.Partition = part.ID\n\t\t\t\tmsg.TipOffset = part.TipOffset\n\t\t\t}\n\t\t}\n\t}\n\n\tif dec.Err() != nil {\n\t\treturn nil, dec.Err()\n\t}\n\treturn &resp, nil\n}\n\nconst (\n\tCorrelationTypeGroup       int8 = 0\n\tCorrelationTypeTransaction      = 1\n)\n\ntype ConsumerMetadataReq struct {\n\tVersion         int16\n\tCorrelationID   int32\n\tClientID        string\n\tConsumerGroup   string\n\tCoordinatorType int8 // >= KafkaV1\n}\n\nfunc ReadConsumerMetadataReq(r io.Reader) (*ConsumerMetadataReq, error) {\n\tvar req ConsumerMetadataReq\n\tdec := NewDecoder(r)\n\n\t// total message size\n\t_ = dec.DecodeInt32()\n\t// api key\n\t_ = dec.DecodeInt16()\n\treq.Version = dec.DecodeInt16()\n\treq.CorrelationID = dec.DecodeInt32()\n\treq.ClientID = dec.DecodeString()\n\treq.ConsumerGroup = dec.DecodeString()\n\n\tif req.Version >= KafkaV1 {\n\t\treq.CoordinatorType = dec.DecodeInt8()\n\t}\n\n\tif dec.Err() != nil {\n\t\treturn nil, dec.Err()\n\t}\n\treturn &req, nil\n}\n\nfunc (r *ConsumerMetadataReq) Bytes(version int16) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tenc := NewEncoder(&buf)\n\n\t// message size - for now just placeholder\n\tenc.Encode(int32(0))\n\tenc.Encode(int16(ConsumerMetadataReqKind))\n\tenc.Encode(r.Version)\n\tenc.Encode(r.CorrelationID)\n\tenc.Encode(r.ClientID)\n\n\tenc.Encode(r.ConsumerGroup)\n\n\tif enc.Err() != nil {\n\t\treturn nil, enc.Err()\n\t}\n\n\t// update the message size information\n\tb := buf.Bytes()\n\tbinary.BigEndian.PutUint32(b, uint32(len(b)-4))\n\n\treturn b, nil\n}\n\nfunc (r *ConsumerMetadataReq) WriteTo(w io.Writer, version int16) (int64, error) {\n\tb, err := r.Bytes(version)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tn, err := w.Write(b)\n\treturn int64(n), err\n}\n\ntype ConsumerMetadataResp struct {\n\tCorrelationID   int32\n\tThrottleTime    time.Duration // >= KafkaV1\n\tErr             error\n\tErrMsg          string // >= KafkaV1\n\tCoordinatorID   int32\n\tCoordinatorHost string\n\tCoordinatorPort int32\n}\n\nfunc ReadConsumerMetadataResp(r io.Reader) (*ConsumerMetadataResp, error) {\n\tvar resp ConsumerMetadataResp\n\tdec := NewDecoder(r)\n\n\t// total message size\n\t_ = dec.DecodeInt32()\n\tresp.CorrelationID = dec.DecodeInt32()\n\tresp.Err = errFromNo(dec.DecodeInt16())\n\tresp.CoordinatorID = dec.DecodeInt32()\n\tresp.CoordinatorHost = dec.DecodeString()\n\tresp.CoordinatorPort = dec.DecodeInt32()\n\n\tif err := dec.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\nfunc (r *ConsumerMetadataResp) Bytes(version int16) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tenc := NewEncoder(&buf)\n\n\t// message size - for now just placeholder\n\tenc.Encode(int32(0))\n\tenc.Encode(r.CorrelationID)\n\n\tif version >= KafkaV1 {\n\t\tenc.Encode(r.ThrottleTime)\n\t}\n\n\tenc.EncodeError(r.Err)\n\n\tif version >= KafkaV1 {\n\t\tenc.Encode(r.ErrMsg)\n\t}\n\n\tenc.Encode(r.CoordinatorID)\n\tenc.Encode(r.CoordinatorHost)\n\tenc.Encode(r.CoordinatorPort)\n\n\tif enc.Err() != nil {\n\t\treturn nil, enc.Err()\n\t}\n\n\t// update the message size information\n\tb := buf.Bytes()\n\tbinary.BigEndian.PutUint32(b, uint32(len(b)-4))\n\n\treturn b, nil\n}\n\ntype OffsetCommitReq struct {\n\tVersion           int16\n\tCorrelationID     int32\n\tClientID          string\n\tConsumerGroup     string\n\tGroupGenerationID int32  // >= KafkaV1 only\n\tMemberID          string // >= KafkaV1 only\n\tRetentionTime     int64  // >= KafkaV2 only\n\tTopics            []OffsetCommitReqTopic\n}\n\ntype OffsetCommitReqTopic struct {\n\tName       string\n\tPartitions []OffsetCommitReqPartition\n}\n\ntype OffsetCommitReqPartition struct {\n\tID        int32\n\tOffset    int64\n\tTimeStamp time.Time // == KafkaV1 only\n\tMetadata  string\n}\n\nfunc ReadOffsetCommitReq(r io.Reader) (*OffsetCommitReq, error) {\n\tvar req OffsetCommitReq\n\tdec := NewDecoder(r)\n\n\t// total message size\n\t_ = dec.DecodeInt32()\n\t// api key\n\t_ = dec.DecodeInt16()\n\treq.Version = dec.DecodeInt16()\n\treq.CorrelationID = dec.DecodeInt32()\n\treq.ClientID = dec.DecodeString()\n\treq.ConsumerGroup = dec.DecodeString()\n\n\tif req.Version >= KafkaV1 {\n\t\treq.GroupGenerationID = dec.DecodeInt32()\n\t\treq.MemberID = dec.DecodeString()\n\t}\n\n\tif req.Version >= KafkaV2 {\n\t\treq.RetentionTime = dec.DecodeInt64()\n\t}\n\n\tlen, err := dec.DecodeArrayLen(false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treq.Topics = make([]OffsetCommitReqTopic, len)\n\n\tfor ti := range req.Topics {\n\t\tvar topic = &req.Topics[ti]\n\t\ttopic.Name = dec.DecodeString()\n\n\t\tlen, err := dec.DecodeArrayLen(false)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttopic.Partitions = make([]OffsetCommitReqPartition, len)\n\n\t\tfor pi := range topic.Partitions {\n\t\t\tvar part = &topic.Partitions[pi]\n\t\t\tpart.ID = dec.DecodeInt32()\n\t\t\tpart.Offset = dec.DecodeInt64()\n\n\t\t\tif req.Version == KafkaV1 {\n\t\t\t\tpart.TimeStamp = time.Unix(0, dec.DecodeInt64()*int64(time.Millisecond))\n\t\t\t}\n\n\t\t\tpart.Metadata = dec.DecodeString()\n\t\t}\n\t}\n\n\tif dec.Err() != nil {\n\t\treturn nil, dec.Err()\n\t}\n\treturn &req, nil\n}\n\nfunc (r *OffsetCommitReq) Bytes(version int16) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tenc := NewEncoder(&buf)\n\n\t// message size - for now just placeholder\n\tenc.Encode(int32(0))\n\tenc.Encode(int16(OffsetCommitReqKind))\n\tenc.Encode(r.Version)\n\tenc.Encode(r.CorrelationID)\n\tenc.Encode(r.ClientID)\n\n\tenc.Encode(r.ConsumerGroup)\n\n\tif version >= KafkaV1 {\n\t\tenc.Encode(r.GroupGenerationID)\n\t\tenc.Encode(r.MemberID)\n\t}\n\n\tif version >= KafkaV2 {\n\t\tenc.Encode(r.RetentionTime)\n\t}\n\n\tenc.EncodeArrayLen(r.Topics)\n\tfor _, topic := range r.Topics {\n\t\tenc.Encode(topic.Name)\n\t\tenc.EncodeArrayLen(topic.Partitions)\n\t\tfor _, part := range topic.Partitions {\n\t\t\tenc.Encode(part.ID)\n\t\t\tenc.Encode(part.Offset)\n\n\t\t\tif version == KafkaV1 {\n\t\t\t\t// TODO(husio) is this really in milliseconds?\n\t\t\t\tenc.Encode(part.TimeStamp.UnixNano() / int64(time.Millisecond))\n\t\t\t}\n\n\t\t\tenc.Encode(part.Metadata)\n\t\t}\n\t}\n\n\tif enc.Err() != nil {\n\t\treturn nil, enc.Err()\n\t}\n\n\t// update the message size information\n\tb := buf.Bytes()\n\tbinary.BigEndian.PutUint32(b, uint32(len(b)-4))\n\n\treturn b, nil\n}\n\nfunc (r *OffsetCommitReq) WriteTo(w io.Writer, version int16) (int64, error) {\n\tb, err := r.Bytes(version)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tn, err := w.Write(b)\n\treturn int64(n), err\n}\n\ntype OffsetCommitResp struct {\n\tCorrelationID int32\n\tThrottleTime  time.Duration // >= KafkaV3 only\n\tTopics        []OffsetCommitRespTopic\n}\n\ntype OffsetCommitRespTopic struct {\n\tName       string\n\tPartitions []OffsetCommitRespPartition\n}\n\ntype OffsetCommitRespPartition struct {\n\tID  int32\n\tErr error\n}\n\nfunc ReadOffsetCommitResp(r io.Reader) (*OffsetCommitResp, error) {\n\tvar resp OffsetCommitResp\n\tdec := NewDecoder(r)\n\n\t// total message size\n\t_ = dec.DecodeInt32()\n\tresp.CorrelationID = dec.DecodeInt32()\n\n\tlen, err := dec.DecodeArrayLen(false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresp.Topics = make([]OffsetCommitRespTopic, len)\n\n\tfor ti := range resp.Topics {\n\t\tvar t = &resp.Topics[ti]\n\t\tt.Name = dec.DecodeString()\n\n\t\tlen, err := dec.DecodeArrayLen(false)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tt.Partitions = make([]OffsetCommitRespPartition, len)\n\n\t\tfor pi := range t.Partitions {\n\t\t\tvar p = &t.Partitions[pi]\n\t\t\tp.ID = dec.DecodeInt32()\n\t\t\tp.Err = errFromNo(dec.DecodeInt16())\n\t\t}\n\t}\n\n\tif err := dec.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\nfunc (r *OffsetCommitResp) Bytes(version int16) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tenc := NewEncoder(&buf)\n\n\t// message size - for now just placeholder\n\tenc.Encode(int32(0))\n\tenc.Encode(r.CorrelationID)\n\n\tif version >= KafkaV3 {\n\t\tenc.Encode(r.ThrottleTime)\n\t}\n\n\tenc.EncodeArrayLen(r.Topics)\n\tfor _, t := range r.Topics {\n\t\tenc.Encode(t.Name)\n\t\tenc.EncodeArrayLen(t.Partitions)\n\t\tfor _, p := range t.Partitions {\n\t\t\tenc.Encode(p.ID)\n\t\t\tenc.EncodeError(p.Err)\n\t\t}\n\t}\n\n\tif enc.Err() != nil {\n\t\treturn nil, enc.Err()\n\t}\n\n\t// update the message size information\n\tb := buf.Bytes()\n\tbinary.BigEndian.PutUint32(b, uint32(len(b)-4))\n\n\treturn b, nil\n\n}\n\ntype OffsetFetchReq struct {\n\tVersion       int16\n\tCorrelationID int32\n\tClientID      string\n\tConsumerGroup string\n\tTopics        []OffsetFetchReqTopic\n}\n\ntype OffsetFetchReqTopic struct {\n\tName       string\n\tPartitions []int32\n}\n\nfunc ReadOffsetFetchReq(r io.Reader) (*OffsetFetchReq, error) {\n\tvar req OffsetFetchReq\n\tdec := NewDecoder(r)\n\n\t// total message size\n\t_ = dec.DecodeInt32()\n\t// api key\n\t_ = dec.DecodeInt16()\n\treq.Version = dec.DecodeInt16()\n\treq.CorrelationID = dec.DecodeInt32()\n\treq.ClientID = dec.DecodeString()\n\treq.ConsumerGroup = dec.DecodeString()\n\n\tlen, err := dec.DecodeArrayLen(true) // nullable\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len < 0 { // null array\n\t\treq.Topics = nil\n\t} else {\n\t\treq.Topics = make([]OffsetFetchReqTopic, len)\n\t}\n\n\tfor ti := range req.Topics {\n\t\tvar topic = &req.Topics[ti]\n\t\ttopic.Name = dec.DecodeString()\n\t\tlen, err = dec.DecodeArrayLen(false)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttopic.Partitions = make([]int32, len)\n\n\t\tfor pi := range topic.Partitions {\n\t\t\ttopic.Partitions[pi] = dec.DecodeInt32()\n\t\t}\n\t}\n\n\tif dec.Err() != nil {\n\t\treturn nil, dec.Err()\n\t}\n\treturn &req, nil\n}\n\nfunc (r *OffsetFetchReq) Bytes(version int16) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tenc := NewEncoder(&buf)\n\n\t// message size - for now just placeholder\n\tenc.Encode(int32(0))\n\tenc.Encode(int16(OffsetFetchReqKind))\n\tenc.Encode(r.Version)\n\tenc.Encode(r.CorrelationID)\n\tenc.Encode(r.ClientID)\n\n\tenc.Encode(r.ConsumerGroup)\n\tenc.EncodeArrayLen(r.Topics)\n\tfor _, t := range r.Topics {\n\t\tenc.Encode(t.Name)\n\t\tenc.EncodeArrayLen(t.Partitions)\n\t\tfor _, p := range t.Partitions {\n\t\t\tenc.Encode(p)\n\t\t}\n\t}\n\n\tif enc.Err() != nil {\n\t\treturn nil, enc.Err()\n\t}\n\n\t// update the message size information\n\tb := buf.Bytes()\n\tbinary.BigEndian.PutUint32(b, uint32(len(b)-4))\n\n\treturn b, nil\n}\n\nfunc (r *OffsetFetchReq) WriteTo(w io.Writer, version int16) (int64, error) {\n\tb, err := r.Bytes(version)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tn, err := w.Write(b)\n\treturn int64(n), err\n}\n\ntype OffsetFetchResp struct {\n\tCorrelationID int32\n\tThrottleTime  time.Duration // >= KafkaV3\n\tTopics        []OffsetFetchRespTopic\n\tErr           error // >= KafkaV2\n}\n\ntype OffsetFetchRespTopic struct {\n\tName       string\n\tPartitions []OffsetFetchRespPartition\n}\n\ntype OffsetFetchRespPartition struct {\n\tID       int32\n\tOffset   int64\n\tMetadata string\n\tErr      error\n}\n\nfunc ReadOffsetFetchResp(r io.Reader) (*OffsetFetchResp, error) {\n\tvar resp OffsetFetchResp\n\tdec := NewDecoder(r)\n\n\t// total message size\n\t_ = dec.DecodeInt32()\n\tresp.CorrelationID = dec.DecodeInt32()\n\n\tlen, err := dec.DecodeArrayLen(false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresp.Topics = make([]OffsetFetchRespTopic, len)\n\n\tfor ti := range resp.Topics {\n\t\tvar t = &resp.Topics[ti]\n\t\tt.Name = dec.DecodeString()\n\n\t\tlen, err = dec.DecodeArrayLen(false)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tt.Partitions = make([]OffsetFetchRespPartition, len)\n\n\t\tfor pi := range t.Partitions {\n\t\t\tvar p = &t.Partitions[pi]\n\t\t\tp.ID = dec.DecodeInt32()\n\t\t\tp.Offset = dec.DecodeInt64()\n\t\t\tp.Metadata = dec.DecodeString()\n\t\t\tp.Err = errFromNo(dec.DecodeInt16())\n\t\t}\n\t}\n\n\tif err := dec.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\nfunc (r *OffsetFetchResp) Bytes(version int16) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tenc := NewEncoder(&buf)\n\n\t// message size - for now just placeholder\n\tenc.Encode(int32(0))\n\tenc.Encode(r.CorrelationID)\n\n\tif version >= KafkaV3 {\n\t\tenc.Encode(r.ThrottleTime)\n\t}\n\n\tenc.EncodeArrayLen(r.Topics)\n\tfor _, topic := range r.Topics {\n\t\tenc.Encode(topic.Name)\n\t\tenc.EncodeArrayLen(topic.Partitions)\n\t\tfor _, part := range topic.Partitions {\n\t\t\tenc.Encode(part.ID)\n\t\t\tenc.Encode(part.Offset)\n\t\t\tenc.Encode(part.Metadata)\n\t\t\tenc.EncodeError(part.Err)\n\t\t}\n\t}\n\n\tif version >= KafkaV2 {\n\t\tenc.EncodeError(r.Err)\n\t}\n\n\tif enc.Err() != nil {\n\t\treturn nil, enc.Err()\n\t}\n\n\t// update the message size information\n\tb := buf.Bytes()\n\tbinary.BigEndian.PutUint32(b, uint32(len(b)-4))\n\n\treturn b, nil\n}\n\ntype ProduceReq struct {\n\tVersion         int16\n\tCorrelationID   int32\n\tClientID        string\n\tCompression     Compression // only used when sending ProduceReqs\n\tTransactionalID string\n\tRequiredAcks    int16\n\tTimeout         time.Duration\n\tTopics          []ProduceReqTopic\n}\n\ntype ProduceReqTopic struct {\n\tName       string\n\tPartitions []ProduceReqPartition\n}\n\ntype ProduceReqPartition struct {\n\tID       int32\n\tMessages []*Message\n}\n\nfunc ReadProduceReq(r io.Reader) (*ProduceReq, error) {\n\tvar req ProduceReq\n\tdec := NewDecoder(r)\n\n\t// total message size\n\t_ = dec.DecodeInt32()\n\t// api key\n\t_ = dec.DecodeInt16()\n\treq.Version = dec.DecodeInt16()\n\treq.CorrelationID = dec.DecodeInt32()\n\treq.ClientID = dec.DecodeString()\n\n\tif req.Version >= KafkaV3 {\n\t\treq.TransactionalID = dec.DecodeString()\n\t}\n\n\treq.RequiredAcks = dec.DecodeInt16()\n\treq.Timeout = time.Duration(dec.DecodeInt32()) * time.Millisecond\n\n\tlen, err := dec.DecodeArrayLen(false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treq.Topics = make([]ProduceReqTopic, len)\n\n\tfor ti := range req.Topics {\n\t\tvar topic = &req.Topics[ti]\n\t\ttopic.Name = dec.DecodeString()\n\n\t\tlen, err = dec.DecodeArrayLen(false)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttopic.Partitions = make([]ProduceReqPartition, len)\n\n\t\tfor pi := range topic.Partitions {\n\t\t\tvar part = &topic.Partitions[pi]\n\t\t\tpart.ID = dec.DecodeInt32()\n\t\t\tif dec.Err() != nil {\n\t\t\t\treturn nil, dec.Err()\n\t\t\t}\n\t\t\tmsgSetSize := dec.DecodeInt32()\n\t\t\tif dec.Err() != nil {\n\t\t\t\treturn nil, dec.Err()\n\t\t\t}\n\t\t\tvar err error\n\t\t\tif part.Messages, err = readMessageSet(r, msgSetSize, req.Version); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t}\n\n\tif dec.Err() != nil {\n\t\treturn nil, dec.Err()\n\t}\n\treturn &req, nil\n}\n\nfunc (r *ProduceReq) Bytes(version int16) ([]byte, error) {\n\tvar buf buffer\n\tenc := NewEncoder(&buf)\n\n\tenc.EncodeInt32(0) // placeholder\n\tenc.EncodeInt16(ProduceReqKind)\n\tenc.EncodeInt16(r.Version)\n\tenc.EncodeInt32(r.CorrelationID)\n\tenc.EncodeString(r.ClientID)\n\n\tif version >= KafkaV3 {\n\t\tenc.EncodeString(r.TransactionalID)\n\t}\n\n\tenc.EncodeInt16(r.RequiredAcks)\n\tenc.EncodeInt32(int32(r.Timeout / time.Millisecond))\n\tenc.EncodeArrayLen(r.Topics)\n\tfor _, t := range r.Topics {\n\t\tenc.EncodeString(t.Name)\n\t\tenc.EncodeArrayLen(t.Partitions)\n\t\tfor _, p := range t.Partitions {\n\t\t\tenc.EncodeInt32(p.ID)\n\t\t\ti := len(buf)\n\t\t\tenc.EncodeInt32(0) // placeholder\n\t\t\tn, err := writeMessageSet(&buf, p.Messages, r.Compression)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tbinary.BigEndian.PutUint32(buf[i:i+4], uint32(n))\n\t\t}\n\t}\n\n\tif enc.Err() != nil {\n\t\treturn nil, enc.Err()\n\t}\n\n\tbinary.BigEndian.PutUint32(buf[0:4], uint32(len(buf)-4))\n\treturn []byte(buf), nil\n}\n\nfunc (r *ProduceReq) WriteTo(w io.Writer, version int16) (int64, error) {\n\tb, err := r.Bytes(version)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tn, err := w.Write(b)\n\treturn int64(n), err\n}\n\ntype ProduceResp struct {\n\tCorrelationID int32\n\tTopics        []ProduceRespTopic\n\tThrottleTime  time.Duration\n}\n\ntype ProduceRespTopic struct {\n\tName       string\n\tPartitions []ProduceRespPartition\n}\n\ntype ProduceRespPartition struct {\n\tID            int32\n\tErr           error\n\tOffset        int64\n\tLogAppendTime int64\n}\n\nfunc (r *ProduceResp) Bytes(version int16) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tenc := NewEncoder(&buf)\n\n\t// message size - for now just placeholder\n\tenc.Encode(int32(0))\n\tenc.Encode(r.CorrelationID)\n\tenc.EncodeArrayLen(r.Topics)\n\tfor _, topic := range r.Topics {\n\t\tenc.Encode(topic.Name)\n\t\tenc.EncodeArrayLen(topic.Partitions)\n\t\tfor _, part := range topic.Partitions {\n\t\t\tenc.Encode(part.ID)\n\t\t\tenc.EncodeError(part.Err)\n\t\t\tenc.Encode(part.Offset)\n\n\t\t\tif version >= KafkaV2 {\n\t\t\t\tenc.Encode(part.LogAppendTime)\n\t\t\t}\n\t\t}\n\t}\n\n\tif version >= KafkaV1 {\n\t\tenc.Encode(r.ThrottleTime)\n\t}\n\n\tif enc.Err() != nil {\n\t\treturn nil, enc.Err()\n\t}\n\n\t// update the message size information\n\tb := buf.Bytes()\n\tbinary.BigEndian.PutUint32(b, uint32(len(b)-4))\n\n\treturn b, nil\n}\n\nfunc ReadProduceResp(r io.Reader) (*ProduceResp, error) {\n\tvar resp ProduceResp\n\tdec := NewDecoder(r)\n\n\t// total message size\n\t_ = dec.DecodeInt32()\n\tresp.CorrelationID = dec.DecodeInt32()\n\tlen, err := dec.DecodeArrayLen(false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresp.Topics = make([]ProduceRespTopic, len)\n\n\tfor ti := range resp.Topics {\n\t\tvar t = &resp.Topics[ti]\n\t\tt.Name = dec.DecodeString()\n\n\t\tlen, err = dec.DecodeArrayLen(false)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tt.Partitions = make([]ProduceRespPartition, len)\n\n\t\tfor pi := range t.Partitions {\n\t\t\tvar p = &t.Partitions[pi]\n\t\t\tp.ID = dec.DecodeInt32()\n\t\t\tp.Err = errFromNo(dec.DecodeInt16())\n\t\t\tp.Offset = dec.DecodeInt64()\n\t\t}\n\t}\n\n\tif err := dec.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\ntype OffsetReq struct {\n\tVersion        int16\n\tCorrelationID  int32\n\tClientID       string\n\tReplicaID      int32\n\tIsolationLevel int8\n\tTopics         []OffsetReqTopic\n}\n\ntype OffsetReqTopic struct {\n\tName       string\n\tPartitions []OffsetReqPartition\n}\n\ntype OffsetReqPartition struct {\n\tID         int32\n\tTimeMs     int64 // cannot be time.Time because of negative values\n\tMaxOffsets int32 // == KafkaV0 only\n}\n\nfunc ReadOffsetReq(r io.Reader) (*OffsetReq, error) {\n\tvar req OffsetReq\n\tdec := NewDecoder(r)\n\n\t// total message size\n\t_ = dec.DecodeInt32()\n\t// api key\n\t_ = dec.DecodeInt16()\n\treq.Version = dec.DecodeInt16()\n\treq.CorrelationID = dec.DecodeInt32()\n\treq.ClientID = dec.DecodeString()\n\treq.ReplicaID = dec.DecodeInt32()\n\n\tif req.Version >= KafkaV2 {\n\t\treq.IsolationLevel = dec.DecodeInt8()\n\t}\n\n\tlen, err := dec.DecodeArrayLen(false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treq.Topics = make([]OffsetReqTopic, len)\n\n\tfor ti := range req.Topics {\n\t\tvar topic = &req.Topics[ti]\n\t\ttopic.Name = dec.DecodeString()\n\n\t\tlen, err = dec.DecodeArrayLen(false)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttopic.Partitions = make([]OffsetReqPartition, len)\n\n\t\tfor pi := range topic.Partitions {\n\t\t\tvar part = &topic.Partitions[pi]\n\t\t\tpart.ID = dec.DecodeInt32()\n\t\t\tpart.TimeMs = dec.DecodeInt64()\n\n\t\t\tif req.Version == KafkaV0 {\n\t\t\t\tpart.MaxOffsets = dec.DecodeInt32()\n\t\t\t}\n\t\t}\n\t}\n\n\tif dec.Err() != nil {\n\t\treturn nil, dec.Err()\n\t}\n\treturn &req, nil\n}\n\nfunc (r *OffsetReq) Bytes(version int16) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tenc := NewEncoder(&buf)\n\n\t// message size - for now just placeholder\n\tenc.Encode(int32(0))\n\tenc.Encode(int16(OffsetReqKind))\n\tenc.Encode(r.Version)\n\tenc.Encode(r.CorrelationID)\n\tenc.Encode(r.ClientID)\n\n\tenc.Encode(r.ReplicaID)\n\n\tif version >= KafkaV2 {\n\t\tenc.Encode(r.IsolationLevel)\n\t}\n\n\tenc.EncodeArrayLen(r.Topics)\n\tfor _, topic := range r.Topics {\n\t\tenc.Encode(topic.Name)\n\t\tenc.EncodeArrayLen(topic.Partitions)\n\t\tfor _, part := range topic.Partitions {\n\t\t\tenc.Encode(part.ID)\n\t\t\tenc.Encode(part.TimeMs)\n\n\t\t\tif version == KafkaV0 {\n\t\t\t\tenc.Encode(part.MaxOffsets)\n\t\t\t}\n\t\t}\n\t}\n\n\tif enc.Err() != nil {\n\t\treturn nil, enc.Err()\n\t}\n\n\t// update the message size information\n\tb := buf.Bytes()\n\tbinary.BigEndian.PutUint32(b, uint32(len(b)-4))\n\n\treturn b, nil\n}\n\nfunc (r *OffsetReq) WriteTo(w io.Writer, version int16) (int64, error) {\n\tb, err := r.Bytes(version)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tn, err := w.Write(b)\n\treturn int64(n), err\n}\n\ntype OffsetResp struct {\n\tCorrelationID int32\n\tThrottleTime  time.Duration\n\tTopics        []OffsetRespTopic\n}\n\ntype OffsetRespTopic struct {\n\tName       string\n\tPartitions []OffsetRespPartition\n}\n\ntype OffsetRespPartition struct {\n\tID        int32\n\tErr       error\n\tTimeStamp time.Time // >= KafkaV1 only\n\tOffsets   []int64\n}\n\nfunc ReadOffsetResp(r io.Reader) (*OffsetResp, error) {\n\tvar resp OffsetResp\n\tdec := NewDecoder(r)\n\n\t// total message size\n\t_ = dec.DecodeInt32()\n\tresp.CorrelationID = dec.DecodeInt32()\n\n\tlen, err := dec.DecodeArrayLen(false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresp.Topics = make([]OffsetRespTopic, len)\n\n\tfor ti := range resp.Topics {\n\t\tvar t = &resp.Topics[ti]\n\t\tt.Name = dec.DecodeString()\n\n\t\tlen, err = dec.DecodeArrayLen(false)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tt.Partitions = make([]OffsetRespPartition, len)\n\n\t\tfor pi := range t.Partitions {\n\t\t\tvar p = &t.Partitions[pi]\n\t\t\tp.ID = dec.DecodeInt32()\n\t\t\tp.Err = errFromNo(dec.DecodeInt16())\n\t\t\tlen, err = dec.DecodeArrayLen(false)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tp.Offsets = make([]int64, len)\n\n\t\t\tfor oi := range p.Offsets {\n\t\t\t\tp.Offsets[oi] = dec.DecodeInt64()\n\t\t\t}\n\t\t}\n\t}\n\n\tif err := dec.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\nfunc (r *OffsetResp) Bytes(version int16) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tenc := NewEncoder(&buf)\n\n\t// message size - for now just placeholder\n\tenc.Encode(int32(0))\n\tenc.Encode(r.CorrelationID)\n\n\tif version >= KafkaV2 {\n\t\tenc.Encode(r.ThrottleTime)\n\t}\n\n\tenc.EncodeArrayLen(r.Topics)\n\tfor _, topic := range r.Topics {\n\t\tenc.Encode(topic.Name)\n\t\tenc.EncodeArrayLen(topic.Partitions)\n\t\tfor _, part := range topic.Partitions {\n\t\t\tenc.Encode(part.ID)\n\t\t\tenc.EncodeError(part.Err)\n\n\t\t\tif version >= KafkaV1 {\n\t\t\t\tenc.Encode(part.TimeStamp.UnixNano() / int64(time.Millisecond))\n\t\t\t}\n\n\t\t\tenc.EncodeArrayLen(part.Offsets)\n\t\t\tfor _, off := range part.Offsets {\n\t\t\t\tenc.Encode(off)\n\t\t\t}\n\t\t}\n\t}\n\n\tif enc.Err() != nil {\n\t\treturn nil, enc.Err()\n\t}\n\n\t// update the message size information\n\tb := buf.Bytes()\n\tbinary.BigEndian.PutUint32(b, uint32(len(b)-4))\n\n\treturn b, nil\n}\n\ntype buffer []byte\n\nfunc (b *buffer) Write(p []byte) (int, error) {\n\t*b = append(*b, p...)\n\treturn len(p), nil\n}\n"
  },
  {
    "path": "vendor/github.com/cilium/kafka/proto/serialization.go",
    "content": "package proto\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"time\"\n)\n\nconst (\n\tmaxParseArrayLen = 256\n)\n\nvar ErrNotEnoughData = errors.New(\"not enough data\")\nvar ErrInvalidArrayLen = errors.New(\"invalid array length\")\n\ntype decoder struct {\n\tbuf []byte\n\tr   io.Reader\n\terr error\n}\n\nfunc NewDecoder(r io.Reader) *decoder {\n\treturn &decoder{\n\t\tr:   r,\n\t\tbuf: make([]byte, 1024),\n\t}\n}\n\nfunc (d *decoder) DecodeInt8() int8 {\n\tif d.err != nil {\n\t\treturn 0\n\t}\n\tb := d.buf[:1]\n\tn, err := io.ReadFull(d.r, b)\n\tif err != nil {\n\t\td.err = err\n\t\treturn 0\n\t}\n\tif n != 1 {\n\t\td.err = ErrNotEnoughData\n\t\treturn 0\n\t}\n\treturn int8(b[0])\n}\n\nfunc (d *decoder) DecodeInt16() int16 {\n\tif d.err != nil {\n\t\treturn 0\n\t}\n\tb := d.buf[:2]\n\tn, err := io.ReadFull(d.r, b)\n\tif err != nil {\n\t\td.err = err\n\t\treturn 0\n\t}\n\tif n != 2 {\n\t\td.err = ErrNotEnoughData\n\t\treturn 0\n\t}\n\treturn int16(binary.BigEndian.Uint16(b))\n}\n\nfunc (d *decoder) DecodeInt32() int32 {\n\tif d.err != nil {\n\t\treturn 0\n\t}\n\tb := d.buf[:4]\n\tn, err := io.ReadFull(d.r, b)\n\tif err != nil {\n\t\td.err = err\n\t\treturn 0\n\t}\n\tif n != 4 {\n\t\td.err = ErrNotEnoughData\n\t\treturn 0\n\t}\n\treturn int32(binary.BigEndian.Uint32(b))\n}\n\nfunc (d *decoder) DecodeUint32() uint32 {\n\tif d.err != nil {\n\t\treturn 0\n\t}\n\tb := d.buf[:4]\n\tn, err := io.ReadFull(d.r, b)\n\tif err != nil {\n\t\td.err = err\n\t\treturn 0\n\t}\n\tif n != 4 {\n\t\td.err = ErrNotEnoughData\n\t\treturn 0\n\t}\n\treturn binary.BigEndian.Uint32(b)\n}\n\nfunc (d *decoder) DecodeInt64() int64 {\n\tif d.err != nil {\n\t\treturn 0\n\t}\n\tb := d.buf[:8]\n\tn, err := io.ReadFull(d.r, b)\n\tif err != nil {\n\t\td.err = err\n\t\treturn 0\n\t}\n\tif n != 8 {\n\t\td.err = ErrNotEnoughData\n\t\treturn 0\n\t}\n\treturn int64(binary.BigEndian.Uint64(b))\n}\n\nfunc (d *decoder) DecodeDuration32() time.Duration {\n\treturn time.Duration(d.DecodeInt32()) * time.Millisecond\n}\n\nfunc (d *decoder) DecodeString() string {\n\tif d.err != nil {\n\t\treturn \"\"\n\t}\n\tslen := d.DecodeInt16()\n\tif d.err != nil {\n\t\treturn \"\"\n\t}\n\tif slen < 1 {\n\t\treturn \"\"\n\t}\n\n\tvar b []byte\n\tif int(slen) > len(d.buf) {\n\t\tvar err error\n\t\tb, err = allocParseBuf(int(slen))\n\t\tif err != nil {\n\t\t\td.err = err\n\t\t\treturn \"\"\n\t\t}\n\t} else {\n\t\tb = d.buf[:int(slen)]\n\t}\n\tn, err := io.ReadFull(d.r, b)\n\tif err != nil {\n\t\td.err = err\n\t\treturn \"\"\n\t}\n\tif n != int(slen) {\n\t\td.err = ErrNotEnoughData\n\t\treturn \"\"\n\t}\n\treturn string(b)\n}\n\nfunc (d *decoder) DecodeArrayLen(nullable bool) (int, error) {\n\tlen := int(d.DecodeInt32())\n\n\tif len < 0 {\n\t\tif nullable { // null array.\n\t\t\treturn -1, nil\n\t\t} else {\n\t\t\treturn 0, ErrInvalidArrayLen\n\t\t}\n\t} else if len > maxParseBufSize {\n\t\treturn 0, ErrInvalidArrayLen\n\t}\n\n\treturn len, nil\n}\n\nfunc (d *decoder) DecodeBytes() []byte {\n\tif d.err != nil {\n\t\treturn nil\n\t}\n\tslen := d.DecodeInt32()\n\tif d.err != nil {\n\t\treturn nil\n\t}\n\tif slen < 1 {\n\t\treturn nil\n\t}\n\n\tb, err := allocParseBuf(int(slen))\n\tif err != nil {\n\t\td.err = err\n\t\treturn nil\n\t}\n\tn, err := io.ReadFull(d.r, b)\n\tif err != nil {\n\t\td.err = err\n\t\treturn nil\n\t}\n\tif n != int(slen) {\n\t\td.err = ErrNotEnoughData\n\t\treturn nil\n\t}\n\treturn b\n}\n\nfunc (d *decoder) Err() error {\n\treturn d.err\n}\n\ntype encoder struct {\n\tw   io.Writer\n\terr error\n\tbuf [8]byte\n}\n\nfunc NewEncoder(w io.Writer) *encoder {\n\treturn &encoder{w: w}\n}\n\nfunc (e *encoder) Encode(value interface{}) {\n\tif e.err != nil {\n\t\treturn\n\t}\n\tvar b []byte\n\n\tswitch val := value.(type) {\n\tcase int8:\n\t\t_, e.err = e.w.Write([]byte{byte(val)})\n\tcase int16:\n\t\tb = e.buf[:2]\n\t\tbinary.BigEndian.PutUint16(b, uint16(val))\n\tcase int32:\n\t\tb = e.buf[:4]\n\t\tbinary.BigEndian.PutUint32(b, uint32(val))\n\tcase int64:\n\t\tb = e.buf[:8]\n\t\tbinary.BigEndian.PutUint64(b, uint64(val))\n\tcase uint16:\n\t\tb = e.buf[:2]\n\t\tbinary.BigEndian.PutUint16(b, val)\n\tcase uint32:\n\t\tb = e.buf[:4]\n\t\tbinary.BigEndian.PutUint32(b, val)\n\tcase uint64:\n\t\tb = e.buf[:8]\n\t\tbinary.BigEndian.PutUint64(b, val)\n\tcase string:\n\t\tbuf := e.buf[:2]\n\t\tbinary.BigEndian.PutUint16(buf, uint16(len(val)))\n\t\te.err = writeAll(e.w, buf)\n\t\tif e.err == nil {\n\t\t\te.err = writeAll(e.w, []byte(val))\n\t\t}\n\tcase []byte:\n\t\tbuf := e.buf[:4]\n\n\t\tif val == nil {\n\t\t\tno := int32(-1)\n\t\t\tbinary.BigEndian.PutUint32(buf, uint32(no))\n\t\t\te.err = writeAll(e.w, buf)\n\t\t\treturn\n\t\t}\n\n\t\tbinary.BigEndian.PutUint32(buf, uint32(len(val)))\n\t\te.err = writeAll(e.w, buf)\n\t\tif e.err == nil {\n\t\t\te.err = writeAll(e.w, val)\n\t\t}\n\tcase []int32:\n\t\te.EncodeArrayLen(val)\n\t\tfor _, v := range val {\n\t\t\te.Encode(v)\n\t\t}\n\tcase time.Duration:\n\t\tintVal := uint32(val / time.Millisecond)\n\t\tb = e.buf[:4]\n\t\tbinary.BigEndian.PutUint32(b, intVal)\n\tdefault:\n\t\te.err = fmt.Errorf(\"cannot encode type %T\", value)\n\t}\n\n\tif b != nil {\n\t\te.err = writeAll(e.w, b)\n\t\treturn\n\t}\n}\n\nfunc (e *encoder) EncodeInt8(val int8) {\n\tif e.err != nil {\n\t\treturn\n\t}\n\n\t_, e.err = e.w.Write([]byte{byte(val)})\n}\n\nfunc (e *encoder) EncodeInt16(val int16) {\n\tif e.err != nil {\n\t\treturn\n\t}\n\n\tb := e.buf[:2]\n\tbinary.BigEndian.PutUint16(b, uint16(val))\n\te.err = writeAll(e.w, b)\n}\n\nfunc (e *encoder) EncodeInt32(val int32) {\n\tif e.err != nil {\n\t\treturn\n\t}\n\n\tb := e.buf[:4]\n\tbinary.BigEndian.PutUint32(b, uint32(val))\n\te.err = writeAll(e.w, b)\n}\n\nfunc (e *encoder) EncodeInt64(val int64) {\n\tif e.err != nil {\n\t\treturn\n\t}\n\n\tb := e.buf[:8]\n\tbinary.BigEndian.PutUint64(b, uint64(val))\n\te.err = writeAll(e.w, b)\n}\n\nfunc (e *encoder) EncodeUint32(val uint32) {\n\tif e.err != nil {\n\t\treturn\n\t}\n\n\tb := e.buf[:4]\n\tbinary.BigEndian.PutUint32(b, val)\n\te.err = writeAll(e.w, b)\n}\n\nfunc (e *encoder) EncodeBytes(val []byte) {\n\tif e.err != nil {\n\t\treturn\n\t}\n\n\tbuf := e.buf[:4]\n\n\tif val == nil {\n\t\tno := int32(-1)\n\t\tbinary.BigEndian.PutUint32(buf, uint32(no))\n\t\te.err = writeAll(e.w, buf)\n\t\treturn\n\t}\n\n\tbinary.BigEndian.PutUint32(buf, uint32(len(val)))\n\te.err = writeAll(e.w, buf)\n\tif e.err == nil {\n\t\te.err = writeAll(e.w, val)\n\t}\n}\n\nfunc (e *encoder) EncodeString(val string) {\n\tif e.err != nil {\n\t\treturn\n\t}\n\n\tbuf := e.buf[:2]\n\n\tbinary.BigEndian.PutUint16(buf, uint16(len(val)))\n\te.err = writeAll(e.w, buf)\n\tif e.err == nil {\n\t\te.err = writeAll(e.w, []byte(val))\n\t}\n}\n\nfunc (e *encoder) EncodeError(err error) {\n\tb := e.buf[:2]\n\n\tif err == nil {\n\t\tbinary.BigEndian.PutUint16(b, uint16(0))\n\t\te.err = writeAll(e.w, b)\n\t\treturn\n\t}\n\tkerr, ok := err.(*KafkaError)\n\tif !ok {\n\t\te.err = fmt.Errorf(\"cannot encode error of type %T\", err)\n\t}\n\n\tbinary.BigEndian.PutUint16(b, uint16(kerr.errno))\n\te.err = writeAll(e.w, b)\n}\n\nfunc (e *encoder) EncodeArrayLen(s interface{}) {\n\tv := reflect.ValueOf(s)\n\tif v.Type().Kind() != reflect.Slice {\n\t\tpanic(fmt.Sprintf(\"EncodeArraylen called with a non-slice argument: %v\", s))\n\t}\n\tif v.IsNil() {\n\t\te.EncodeInt32(-1)\n\t} else {\n\t\te.EncodeInt32(int32(v.Len()))\n\t}\n}\n\nfunc (e *encoder) Err() error {\n\treturn e.err\n}\n\nfunc writeAll(w io.Writer, b []byte) error {\n\tn, err := w.Write(b)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif n != len(b) {\n\t\treturn fmt.Errorf(\"cannot write %d: %d written\", len(b), n)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/cilium/kafka/proto/snappy.go",
    "content": "package proto\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\n\t\"github.com/golang/snappy\"\n)\n\n// Snappy-encoded messages from the official Java client are encoded using\n// snappy-java: see github.com/xerial/snappy-java.\n// This does its own non-standard framing. We can detect this encoding\n// by sniffing its special header.\n//\n// That library will still read plain (unframed) snappy-encoded messages,\n// so we don't need to implement that codec on the compression side.\n//\n// (This is the same behavior as several of the other popular Kafka clients.)\n\nvar snappyJavaMagic = []byte(\"\\x82SNAPPY\\x00\")\n\nfunc snappyDecode(b []byte) ([]byte, error) {\n\tif !bytes.HasPrefix(b, snappyJavaMagic) {\n\t\treturn snappy.Decode(nil, b)\n\t}\n\n\t// See https://github.com/xerial/snappy-java/blob/develop/src/main/java/org/xerial/snappy/SnappyInputStream.java\n\tversion := binary.BigEndian.Uint32(b[8:12])\n\tif version != 1 {\n\t\treturn nil, fmt.Errorf(\"cannot handle snappy-java codec version other than 1 (got %d)\", version)\n\t}\n\t// b[12:16] is the \"compatible version\"; ignore for now\n\tvar (\n\t\tdecoded = make([]byte, 0, len(b))\n\t\tchunk   []byte\n\t\terr     error\n\t)\n\tfor i := 16; i < len(b); {\n\t\tn := int(binary.BigEndian.Uint32(b[i : i+4]))\n\t\ti += 4\n\t\tchunk, err = snappy.Decode(chunk, b[i:i+n])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ti += n\n\t\tdecoded = append(decoded, chunk...)\n\t}\n\treturn decoded, nil\n}\n"
  },
  {
    "path": "vendor/github.com/cilium/kafka/proto/utils.go",
    "content": "package proto\n\nimport (\n\t\"fmt\"\n\t\"math\"\n)\n\nconst (\n\tmaxParseBufSize = 100 * math.MaxUint16\n\tmaxDiscardSize  = 4096\n)\n\nfunc messageSizeError(size int) error {\n\treturn fmt.Errorf(\"unreasonable message/block size %d (max:%d)\", size, maxParseBufSize)\n}\n\n// allocParseBuf is used to allocate buffers used for parsing\nfunc allocParseBuf(size int) ([]byte, error) {\n\tif size < 0 || size > maxParseBufSize {\n\t\treturn nil, messageSizeError(size)\n\t}\n\n\treturn make([]byte, size), nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/udpa/annotations/migrate.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: udpa/annotations/migrate.proto\n\npackage annotations\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype MigrateAnnotation struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tRename        string                 `protobuf:\"bytes,1,opt,name=rename,proto3\" json:\"rename,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *MigrateAnnotation) Reset() {\n\t*x = MigrateAnnotation{}\n\tmi := &file_udpa_annotations_migrate_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MigrateAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MigrateAnnotation) ProtoMessage() {}\n\nfunc (x *MigrateAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_udpa_annotations_migrate_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MigrateAnnotation.ProtoReflect.Descriptor instead.\nfunc (*MigrateAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_udpa_annotations_migrate_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *MigrateAnnotation) GetRename() string {\n\tif x != nil {\n\t\treturn x.Rename\n\t}\n\treturn \"\"\n}\n\ntype FieldMigrateAnnotation struct {\n\tstate          protoimpl.MessageState `protogen:\"open.v1\"`\n\tRename         string                 `protobuf:\"bytes,1,opt,name=rename,proto3\" json:\"rename,omitempty\"`\n\tOneofPromotion string                 `protobuf:\"bytes,2,opt,name=oneof_promotion,json=oneofPromotion,proto3\" json:\"oneof_promotion,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *FieldMigrateAnnotation) Reset() {\n\t*x = FieldMigrateAnnotation{}\n\tmi := &file_udpa_annotations_migrate_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FieldMigrateAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldMigrateAnnotation) ProtoMessage() {}\n\nfunc (x *FieldMigrateAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_udpa_annotations_migrate_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldMigrateAnnotation.ProtoReflect.Descriptor instead.\nfunc (*FieldMigrateAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_udpa_annotations_migrate_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *FieldMigrateAnnotation) GetRename() string {\n\tif x != nil {\n\t\treturn x.Rename\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldMigrateAnnotation) GetOneofPromotion() string {\n\tif x != nil {\n\t\treturn x.OneofPromotion\n\t}\n\treturn \"\"\n}\n\ntype FileMigrateAnnotation struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tMoveToPackage string                 `protobuf:\"bytes,2,opt,name=move_to_package,json=moveToPackage,proto3\" json:\"move_to_package,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *FileMigrateAnnotation) Reset() {\n\t*x = FileMigrateAnnotation{}\n\tmi := &file_udpa_annotations_migrate_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FileMigrateAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FileMigrateAnnotation) ProtoMessage() {}\n\nfunc (x *FileMigrateAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_udpa_annotations_migrate_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FileMigrateAnnotation.ProtoReflect.Descriptor instead.\nfunc (*FileMigrateAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_udpa_annotations_migrate_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *FileMigrateAnnotation) GetMoveToPackage() string {\n\tif x != nil {\n\t\treturn x.MoveToPackage\n\t}\n\treturn \"\"\n}\n\nvar file_udpa_annotations_migrate_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.MessageOptions)(nil),\n\t\tExtensionType: (*MigrateAnnotation)(nil),\n\t\tField:         171962766,\n\t\tName:          \"udpa.annotations.message_migrate\",\n\t\tTag:           \"bytes,171962766,opt,name=message_migrate\",\n\t\tFilename:      \"udpa/annotations/migrate.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: (*FieldMigrateAnnotation)(nil),\n\t\tField:         171962766,\n\t\tName:          \"udpa.annotations.field_migrate\",\n\t\tTag:           \"bytes,171962766,opt,name=field_migrate\",\n\t\tFilename:      \"udpa/annotations/migrate.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.EnumOptions)(nil),\n\t\tExtensionType: (*MigrateAnnotation)(nil),\n\t\tField:         171962766,\n\t\tName:          \"udpa.annotations.enum_migrate\",\n\t\tTag:           \"bytes,171962766,opt,name=enum_migrate\",\n\t\tFilename:      \"udpa/annotations/migrate.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.EnumValueOptions)(nil),\n\t\tExtensionType: (*MigrateAnnotation)(nil),\n\t\tField:         171962766,\n\t\tName:          \"udpa.annotations.enum_value_migrate\",\n\t\tTag:           \"bytes,171962766,opt,name=enum_value_migrate\",\n\t\tFilename:      \"udpa/annotations/migrate.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.FileOptions)(nil),\n\t\tExtensionType: (*FileMigrateAnnotation)(nil),\n\t\tField:         171962766,\n\t\tName:          \"udpa.annotations.file_migrate\",\n\t\tTag:           \"bytes,171962766,opt,name=file_migrate\",\n\t\tFilename:      \"udpa/annotations/migrate.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.MessageOptions.\nvar (\n\t// optional udpa.annotations.MigrateAnnotation message_migrate = 171962766;\n\tE_MessageMigrate = &file_udpa_annotations_migrate_proto_extTypes[0]\n)\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// optional udpa.annotations.FieldMigrateAnnotation field_migrate = 171962766;\n\tE_FieldMigrate = &file_udpa_annotations_migrate_proto_extTypes[1]\n)\n\n// Extension fields to descriptorpb.EnumOptions.\nvar (\n\t// optional udpa.annotations.MigrateAnnotation enum_migrate = 171962766;\n\tE_EnumMigrate = &file_udpa_annotations_migrate_proto_extTypes[2]\n)\n\n// Extension fields to descriptorpb.EnumValueOptions.\nvar (\n\t// optional udpa.annotations.MigrateAnnotation enum_value_migrate = 171962766;\n\tE_EnumValueMigrate = &file_udpa_annotations_migrate_proto_extTypes[3]\n)\n\n// Extension fields to descriptorpb.FileOptions.\nvar (\n\t// optional udpa.annotations.FileMigrateAnnotation file_migrate = 171962766;\n\tE_FileMigrate = &file_udpa_annotations_migrate_proto_extTypes[4]\n)\n\nvar File_udpa_annotations_migrate_proto protoreflect.FileDescriptor\n\nconst file_udpa_annotations_migrate_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1eudpa/annotations/migrate.proto\\x12\\x10udpa.annotations\\x1a google/protobuf/descriptor.proto\\\"+\\n\" +\n\t\"\\x11MigrateAnnotation\\x12\\x16\\n\" +\n\t\"\\x06rename\\x18\\x01 \\x01(\\tR\\x06rename\\\"Y\\n\" +\n\t\"\\x16FieldMigrateAnnotation\\x12\\x16\\n\" +\n\t\"\\x06rename\\x18\\x01 \\x01(\\tR\\x06rename\\x12'\\n\" +\n\t\"\\x0foneof_promotion\\x18\\x02 \\x01(\\tR\\x0eoneofPromotion\\\"?\\n\" +\n\t\"\\x15FileMigrateAnnotation\\x12&\\n\" +\n\t\"\\x0fmove_to_package\\x18\\x02 \\x01(\\tR\\rmoveToPackage:p\\n\" +\n\t\"\\x0fmessage_migrate\\x12\\x1f.google.protobuf.MessageOptions\\x18\\x8e\\xe3\\xffQ \\x01(\\v2#.udpa.annotations.MigrateAnnotationR\\x0emessageMigrate:o\\n\" +\n\t\"\\rfield_migrate\\x12\\x1d.google.protobuf.FieldOptions\\x18\\x8e\\xe3\\xffQ \\x01(\\v2(.udpa.annotations.FieldMigrateAnnotationR\\ffieldMigrate:g\\n\" +\n\t\"\\fenum_migrate\\x12\\x1c.google.protobuf.EnumOptions\\x18\\x8e\\xe3\\xffQ \\x01(\\v2#.udpa.annotations.MigrateAnnotationR\\venumMigrate:w\\n\" +\n\t\"\\x12enum_value_migrate\\x12!.google.protobuf.EnumValueOptions\\x18\\x8e\\xe3\\xffQ \\x01(\\v2#.udpa.annotations.MigrateAnnotationR\\x10enumValueMigrate:k\\n\" +\n\t\"\\ffile_migrate\\x12\\x1c.google.protobuf.FileOptions\\x18\\x8e\\xe3\\xffQ \\x01(\\v2'.udpa.annotations.FileMigrateAnnotationR\\vfileMigrateB)Z'github.com/cncf/xds/go/udpa/annotationsb\\x06proto3\"\n\nvar (\n\tfile_udpa_annotations_migrate_proto_rawDescOnce sync.Once\n\tfile_udpa_annotations_migrate_proto_rawDescData []byte\n)\n\nfunc file_udpa_annotations_migrate_proto_rawDescGZIP() []byte {\n\tfile_udpa_annotations_migrate_proto_rawDescOnce.Do(func() {\n\t\tfile_udpa_annotations_migrate_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_udpa_annotations_migrate_proto_rawDesc), len(file_udpa_annotations_migrate_proto_rawDesc)))\n\t})\n\treturn file_udpa_annotations_migrate_proto_rawDescData\n}\n\nvar file_udpa_annotations_migrate_proto_msgTypes = make([]protoimpl.MessageInfo, 3)\nvar file_udpa_annotations_migrate_proto_goTypes = []any{\n\t(*MigrateAnnotation)(nil),             // 0: udpa.annotations.MigrateAnnotation\n\t(*FieldMigrateAnnotation)(nil),        // 1: udpa.annotations.FieldMigrateAnnotation\n\t(*FileMigrateAnnotation)(nil),         // 2: udpa.annotations.FileMigrateAnnotation\n\t(*descriptorpb.MessageOptions)(nil),   // 3: google.protobuf.MessageOptions\n\t(*descriptorpb.FieldOptions)(nil),     // 4: google.protobuf.FieldOptions\n\t(*descriptorpb.EnumOptions)(nil),      // 5: google.protobuf.EnumOptions\n\t(*descriptorpb.EnumValueOptions)(nil), // 6: google.protobuf.EnumValueOptions\n\t(*descriptorpb.FileOptions)(nil),      // 7: google.protobuf.FileOptions\n}\nvar file_udpa_annotations_migrate_proto_depIdxs = []int32{\n\t3,  // 0: udpa.annotations.message_migrate:extendee -> google.protobuf.MessageOptions\n\t4,  // 1: udpa.annotations.field_migrate:extendee -> google.protobuf.FieldOptions\n\t5,  // 2: udpa.annotations.enum_migrate:extendee -> google.protobuf.EnumOptions\n\t6,  // 3: udpa.annotations.enum_value_migrate:extendee -> google.protobuf.EnumValueOptions\n\t7,  // 4: udpa.annotations.file_migrate:extendee -> google.protobuf.FileOptions\n\t0,  // 5: udpa.annotations.message_migrate:type_name -> udpa.annotations.MigrateAnnotation\n\t1,  // 6: udpa.annotations.field_migrate:type_name -> udpa.annotations.FieldMigrateAnnotation\n\t0,  // 7: udpa.annotations.enum_migrate:type_name -> udpa.annotations.MigrateAnnotation\n\t0,  // 8: udpa.annotations.enum_value_migrate:type_name -> udpa.annotations.MigrateAnnotation\n\t2,  // 9: udpa.annotations.file_migrate:type_name -> udpa.annotations.FileMigrateAnnotation\n\t10, // [10:10] is the sub-list for method output_type\n\t10, // [10:10] is the sub-list for method input_type\n\t5,  // [5:10] is the sub-list for extension type_name\n\t0,  // [0:5] is the sub-list for extension extendee\n\t0,  // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_udpa_annotations_migrate_proto_init() }\nfunc file_udpa_annotations_migrate_proto_init() {\n\tif File_udpa_annotations_migrate_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_udpa_annotations_migrate_proto_rawDesc), len(file_udpa_annotations_migrate_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   3,\n\t\t\tNumExtensions: 5,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_udpa_annotations_migrate_proto_goTypes,\n\t\tDependencyIndexes: file_udpa_annotations_migrate_proto_depIdxs,\n\t\tMessageInfos:      file_udpa_annotations_migrate_proto_msgTypes,\n\t\tExtensionInfos:    file_udpa_annotations_migrate_proto_extTypes,\n\t}.Build()\n\tFile_udpa_annotations_migrate_proto = out.File\n\tfile_udpa_annotations_migrate_proto_goTypes = nil\n\tfile_udpa_annotations_migrate_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/udpa/annotations/migrate.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: udpa/annotations/migrate.proto\n\npackage annotations\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on MigrateAnnotation with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *MigrateAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on MigrateAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// MigrateAnnotationMultiError, or nil if none found.\nfunc (m *MigrateAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *MigrateAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Rename\n\n\tif len(errors) > 0 {\n\t\treturn MigrateAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// MigrateAnnotationMultiError is an error wrapping multiple validation errors\n// returned by MigrateAnnotation.ValidateAll() if the designated constraints\n// aren't met.\ntype MigrateAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m MigrateAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m MigrateAnnotationMultiError) AllErrors() []error { return m }\n\n// MigrateAnnotationValidationError is the validation error returned by\n// MigrateAnnotation.Validate if the designated constraints aren't met.\ntype MigrateAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e MigrateAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e MigrateAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e MigrateAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e MigrateAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e MigrateAnnotationValidationError) ErrorName() string {\n\treturn \"MigrateAnnotationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e MigrateAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMigrateAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = MigrateAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = MigrateAnnotationValidationError{}\n\n// Validate checks the field values on FieldMigrateAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *FieldMigrateAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on FieldMigrateAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// FieldMigrateAnnotationMultiError, or nil if none found.\nfunc (m *FieldMigrateAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *FieldMigrateAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Rename\n\n\t// no validation rules for OneofPromotion\n\n\tif len(errors) > 0 {\n\t\treturn FieldMigrateAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// FieldMigrateAnnotationMultiError is an error wrapping multiple validation\n// errors returned by FieldMigrateAnnotation.ValidateAll() if the designated\n// constraints aren't met.\ntype FieldMigrateAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m FieldMigrateAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m FieldMigrateAnnotationMultiError) AllErrors() []error { return m }\n\n// FieldMigrateAnnotationValidationError is the validation error returned by\n// FieldMigrateAnnotation.Validate if the designated constraints aren't met.\ntype FieldMigrateAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e FieldMigrateAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e FieldMigrateAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e FieldMigrateAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e FieldMigrateAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e FieldMigrateAnnotationValidationError) ErrorName() string {\n\treturn \"FieldMigrateAnnotationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e FieldMigrateAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sFieldMigrateAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = FieldMigrateAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = FieldMigrateAnnotationValidationError{}\n\n// Validate checks the field values on FileMigrateAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *FileMigrateAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on FileMigrateAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// FileMigrateAnnotationMultiError, or nil if none found.\nfunc (m *FileMigrateAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *FileMigrateAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for MoveToPackage\n\n\tif len(errors) > 0 {\n\t\treturn FileMigrateAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// FileMigrateAnnotationMultiError is an error wrapping multiple validation\n// errors returned by FileMigrateAnnotation.ValidateAll() if the designated\n// constraints aren't met.\ntype FileMigrateAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m FileMigrateAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m FileMigrateAnnotationMultiError) AllErrors() []error { return m }\n\n// FileMigrateAnnotationValidationError is the validation error returned by\n// FileMigrateAnnotation.Validate if the designated constraints aren't met.\ntype FileMigrateAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e FileMigrateAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e FileMigrateAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e FileMigrateAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e FileMigrateAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e FileMigrateAnnotationValidationError) ErrorName() string {\n\treturn \"FileMigrateAnnotationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e FileMigrateAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sFileMigrateAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = FileMigrateAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = FileMigrateAnnotationValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/udpa/annotations/security.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: udpa/annotations/security.proto\n\npackage annotations\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype FieldSecurityAnnotation struct {\n\tstate                           protoimpl.MessageState `protogen:\"open.v1\"`\n\tConfigureForUntrustedDownstream bool                   `protobuf:\"varint,1,opt,name=configure_for_untrusted_downstream,json=configureForUntrustedDownstream,proto3\" json:\"configure_for_untrusted_downstream,omitempty\"`\n\tConfigureForUntrustedUpstream   bool                   `protobuf:\"varint,2,opt,name=configure_for_untrusted_upstream,json=configureForUntrustedUpstream,proto3\" json:\"configure_for_untrusted_upstream,omitempty\"`\n\tunknownFields                   protoimpl.UnknownFields\n\tsizeCache                       protoimpl.SizeCache\n}\n\nfunc (x *FieldSecurityAnnotation) Reset() {\n\t*x = FieldSecurityAnnotation{}\n\tmi := &file_udpa_annotations_security_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FieldSecurityAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldSecurityAnnotation) ProtoMessage() {}\n\nfunc (x *FieldSecurityAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_udpa_annotations_security_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldSecurityAnnotation.ProtoReflect.Descriptor instead.\nfunc (*FieldSecurityAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_udpa_annotations_security_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *FieldSecurityAnnotation) GetConfigureForUntrustedDownstream() bool {\n\tif x != nil {\n\t\treturn x.ConfigureForUntrustedDownstream\n\t}\n\treturn false\n}\n\nfunc (x *FieldSecurityAnnotation) GetConfigureForUntrustedUpstream() bool {\n\tif x != nil {\n\t\treturn x.ConfigureForUntrustedUpstream\n\t}\n\treturn false\n}\n\nvar file_udpa_annotations_security_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: (*FieldSecurityAnnotation)(nil),\n\t\tField:         11122993,\n\t\tName:          \"udpa.annotations.security\",\n\t\tTag:           \"bytes,11122993,opt,name=security\",\n\t\tFilename:      \"udpa/annotations/security.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// optional udpa.annotations.FieldSecurityAnnotation security = 11122993;\n\tE_Security = &file_udpa_annotations_security_proto_extTypes[0]\n)\n\nvar File_udpa_annotations_security_proto protoreflect.FileDescriptor\n\nconst file_udpa_annotations_security_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1fudpa/annotations/security.proto\\x12\\x10udpa.annotations\\x1a\\x1dudpa/annotations/status.proto\\x1a google/protobuf/descriptor.proto\\\"\\xaf\\x01\\n\" +\n\t\"\\x17FieldSecurityAnnotation\\x12K\\n\" +\n\t\"\\\"configure_for_untrusted_downstream\\x18\\x01 \\x01(\\bR\\x1fconfigureForUntrustedDownstream\\x12G\\n\" +\n\t\" configure_for_untrusted_upstream\\x18\\x02 \\x01(\\bR\\x1dconfigureForUntrustedUpstream:g\\n\" +\n\t\"\\bsecurity\\x12\\x1d.google.protobuf.FieldOptions\\x18\\xb1\\xf2\\xa6\\x05 \\x01(\\v2).udpa.annotations.FieldSecurityAnnotationR\\bsecurityB1\\xba\\x80\\xc8\\xd1\\x06\\x02\\b\\x01Z'github.com/cncf/xds/go/udpa/annotationsb\\x06proto3\"\n\nvar (\n\tfile_udpa_annotations_security_proto_rawDescOnce sync.Once\n\tfile_udpa_annotations_security_proto_rawDescData []byte\n)\n\nfunc file_udpa_annotations_security_proto_rawDescGZIP() []byte {\n\tfile_udpa_annotations_security_proto_rawDescOnce.Do(func() {\n\t\tfile_udpa_annotations_security_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_udpa_annotations_security_proto_rawDesc), len(file_udpa_annotations_security_proto_rawDesc)))\n\t})\n\treturn file_udpa_annotations_security_proto_rawDescData\n}\n\nvar file_udpa_annotations_security_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_udpa_annotations_security_proto_goTypes = []any{\n\t(*FieldSecurityAnnotation)(nil),   // 0: udpa.annotations.FieldSecurityAnnotation\n\t(*descriptorpb.FieldOptions)(nil), // 1: google.protobuf.FieldOptions\n}\nvar file_udpa_annotations_security_proto_depIdxs = []int32{\n\t1, // 0: udpa.annotations.security:extendee -> google.protobuf.FieldOptions\n\t0, // 1: udpa.annotations.security:type_name -> udpa.annotations.FieldSecurityAnnotation\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t1, // [1:2] is the sub-list for extension type_name\n\t0, // [0:1] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_udpa_annotations_security_proto_init() }\nfunc file_udpa_annotations_security_proto_init() {\n\tif File_udpa_annotations_security_proto != nil {\n\t\treturn\n\t}\n\tfile_udpa_annotations_status_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_udpa_annotations_security_proto_rawDesc), len(file_udpa_annotations_security_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_udpa_annotations_security_proto_goTypes,\n\t\tDependencyIndexes: file_udpa_annotations_security_proto_depIdxs,\n\t\tMessageInfos:      file_udpa_annotations_security_proto_msgTypes,\n\t\tExtensionInfos:    file_udpa_annotations_security_proto_extTypes,\n\t}.Build()\n\tFile_udpa_annotations_security_proto = out.File\n\tfile_udpa_annotations_security_proto_goTypes = nil\n\tfile_udpa_annotations_security_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/udpa/annotations/security.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: udpa/annotations/security.proto\n\npackage annotations\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on FieldSecurityAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *FieldSecurityAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on FieldSecurityAnnotation with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// FieldSecurityAnnotationMultiError, or nil if none found.\nfunc (m *FieldSecurityAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *FieldSecurityAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for ConfigureForUntrustedDownstream\n\n\t// no validation rules for ConfigureForUntrustedUpstream\n\n\tif len(errors) > 0 {\n\t\treturn FieldSecurityAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// FieldSecurityAnnotationMultiError is an error wrapping multiple validation\n// errors returned by FieldSecurityAnnotation.ValidateAll() if the designated\n// constraints aren't met.\ntype FieldSecurityAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m FieldSecurityAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m FieldSecurityAnnotationMultiError) AllErrors() []error { return m }\n\n// FieldSecurityAnnotationValidationError is the validation error returned by\n// FieldSecurityAnnotation.Validate if the designated constraints aren't met.\ntype FieldSecurityAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e FieldSecurityAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e FieldSecurityAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e FieldSecurityAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e FieldSecurityAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e FieldSecurityAnnotationValidationError) ErrorName() string {\n\treturn \"FieldSecurityAnnotationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e FieldSecurityAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sFieldSecurityAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = FieldSecurityAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = FieldSecurityAnnotationValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/udpa/annotations/sensitive.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: udpa/annotations/sensitive.proto\n\npackage annotations\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nvar file_udpa_annotations_sensitive_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: (*bool)(nil),\n\t\tField:         76569463,\n\t\tName:          \"udpa.annotations.sensitive\",\n\t\tTag:           \"varint,76569463,opt,name=sensitive\",\n\t\tFilename:      \"udpa/annotations/sensitive.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// optional bool sensitive = 76569463;\n\tE_Sensitive = &file_udpa_annotations_sensitive_proto_extTypes[0]\n)\n\nvar File_udpa_annotations_sensitive_proto protoreflect.FileDescriptor\n\nconst file_udpa_annotations_sensitive_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\" udpa/annotations/sensitive.proto\\x12\\x10udpa.annotations\\x1a google/protobuf/descriptor.proto:>\\n\" +\n\t\"\\tsensitive\\x12\\x1d.google.protobuf.FieldOptions\\x18\\xf7\\xb6\\xc1$ \\x01(\\bR\\tsensitiveB)Z'github.com/cncf/xds/go/udpa/annotationsb\\x06proto3\"\n\nvar file_udpa_annotations_sensitive_proto_goTypes = []any{\n\t(*descriptorpb.FieldOptions)(nil), // 0: google.protobuf.FieldOptions\n}\nvar file_udpa_annotations_sensitive_proto_depIdxs = []int32{\n\t0, // 0: udpa.annotations.sensitive:extendee -> google.protobuf.FieldOptions\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t0, // [0:1] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_udpa_annotations_sensitive_proto_init() }\nfunc file_udpa_annotations_sensitive_proto_init() {\n\tif File_udpa_annotations_sensitive_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_udpa_annotations_sensitive_proto_rawDesc), len(file_udpa_annotations_sensitive_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_udpa_annotations_sensitive_proto_goTypes,\n\t\tDependencyIndexes: file_udpa_annotations_sensitive_proto_depIdxs,\n\t\tExtensionInfos:    file_udpa_annotations_sensitive_proto_extTypes,\n\t}.Build()\n\tFile_udpa_annotations_sensitive_proto = out.File\n\tfile_udpa_annotations_sensitive_proto_goTypes = nil\n\tfile_udpa_annotations_sensitive_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/udpa/annotations/sensitive.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: udpa/annotations/sensitive.proto\n\npackage annotations\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/udpa/annotations/status.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: udpa/annotations/status.proto\n\npackage annotations\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype PackageVersionStatus int32\n\nconst (\n\tPackageVersionStatus_UNKNOWN                      PackageVersionStatus = 0\n\tPackageVersionStatus_FROZEN                       PackageVersionStatus = 1\n\tPackageVersionStatus_ACTIVE                       PackageVersionStatus = 2\n\tPackageVersionStatus_NEXT_MAJOR_VERSION_CANDIDATE PackageVersionStatus = 3\n)\n\n// Enum value maps for PackageVersionStatus.\nvar (\n\tPackageVersionStatus_name = map[int32]string{\n\t\t0: \"UNKNOWN\",\n\t\t1: \"FROZEN\",\n\t\t2: \"ACTIVE\",\n\t\t3: \"NEXT_MAJOR_VERSION_CANDIDATE\",\n\t}\n\tPackageVersionStatus_value = map[string]int32{\n\t\t\"UNKNOWN\":                      0,\n\t\t\"FROZEN\":                       1,\n\t\t\"ACTIVE\":                       2,\n\t\t\"NEXT_MAJOR_VERSION_CANDIDATE\": 3,\n\t}\n)\n\nfunc (x PackageVersionStatus) Enum() *PackageVersionStatus {\n\tp := new(PackageVersionStatus)\n\t*p = x\n\treturn p\n}\n\nfunc (x PackageVersionStatus) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (PackageVersionStatus) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_udpa_annotations_status_proto_enumTypes[0].Descriptor()\n}\n\nfunc (PackageVersionStatus) Type() protoreflect.EnumType {\n\treturn &file_udpa_annotations_status_proto_enumTypes[0]\n}\n\nfunc (x PackageVersionStatus) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use PackageVersionStatus.Descriptor instead.\nfunc (PackageVersionStatus) EnumDescriptor() ([]byte, []int) {\n\treturn file_udpa_annotations_status_proto_rawDescGZIP(), []int{0}\n}\n\ntype StatusAnnotation struct {\n\tstate                protoimpl.MessageState `protogen:\"open.v1\"`\n\tWorkInProgress       bool                   `protobuf:\"varint,1,opt,name=work_in_progress,json=workInProgress,proto3\" json:\"work_in_progress,omitempty\"`\n\tPackageVersionStatus PackageVersionStatus   `protobuf:\"varint,2,opt,name=package_version_status,json=packageVersionStatus,proto3,enum=udpa.annotations.PackageVersionStatus\" json:\"package_version_status,omitempty\"`\n\tunknownFields        protoimpl.UnknownFields\n\tsizeCache            protoimpl.SizeCache\n}\n\nfunc (x *StatusAnnotation) Reset() {\n\t*x = StatusAnnotation{}\n\tmi := &file_udpa_annotations_status_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *StatusAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*StatusAnnotation) ProtoMessage() {}\n\nfunc (x *StatusAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_udpa_annotations_status_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use StatusAnnotation.ProtoReflect.Descriptor instead.\nfunc (*StatusAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_udpa_annotations_status_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *StatusAnnotation) GetWorkInProgress() bool {\n\tif x != nil {\n\t\treturn x.WorkInProgress\n\t}\n\treturn false\n}\n\nfunc (x *StatusAnnotation) GetPackageVersionStatus() PackageVersionStatus {\n\tif x != nil {\n\t\treturn x.PackageVersionStatus\n\t}\n\treturn PackageVersionStatus_UNKNOWN\n}\n\nvar file_udpa_annotations_status_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FileOptions)(nil),\n\t\tExtensionType: (*StatusAnnotation)(nil),\n\t\tField:         222707719,\n\t\tName:          \"udpa.annotations.file_status\",\n\t\tTag:           \"bytes,222707719,opt,name=file_status\",\n\t\tFilename:      \"udpa/annotations/status.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FileOptions.\nvar (\n\t// optional udpa.annotations.StatusAnnotation file_status = 222707719;\n\tE_FileStatus = &file_udpa_annotations_status_proto_extTypes[0]\n)\n\nvar File_udpa_annotations_status_proto protoreflect.FileDescriptor\n\nconst file_udpa_annotations_status_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1dudpa/annotations/status.proto\\x12\\x10udpa.annotations\\x1a google/protobuf/descriptor.proto\\\"\\x9a\\x01\\n\" +\n\t\"\\x10StatusAnnotation\\x12(\\n\" +\n\t\"\\x10work_in_progress\\x18\\x01 \\x01(\\bR\\x0eworkInProgress\\x12\\\\\\n\" +\n\t\"\\x16package_version_status\\x18\\x02 \\x01(\\x0e2&.udpa.annotations.PackageVersionStatusR\\x14packageVersionStatus*]\\n\" +\n\t\"\\x14PackageVersionStatus\\x12\\v\\n\" +\n\t\"\\aUNKNOWN\\x10\\x00\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06FROZEN\\x10\\x01\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06ACTIVE\\x10\\x02\\x12 \\n\" +\n\t\"\\x1cNEXT_MAJOR_VERSION_CANDIDATE\\x10\\x03:d\\n\" +\n\t\"\\vfile_status\\x12\\x1c.google.protobuf.FileOptions\\x18\\x87\\x80\\x99j \\x01(\\v2\\\".udpa.annotations.StatusAnnotationR\\n\" +\n\t\"fileStatusB)Z'github.com/cncf/xds/go/udpa/annotationsb\\x06proto3\"\n\nvar (\n\tfile_udpa_annotations_status_proto_rawDescOnce sync.Once\n\tfile_udpa_annotations_status_proto_rawDescData []byte\n)\n\nfunc file_udpa_annotations_status_proto_rawDescGZIP() []byte {\n\tfile_udpa_annotations_status_proto_rawDescOnce.Do(func() {\n\t\tfile_udpa_annotations_status_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_udpa_annotations_status_proto_rawDesc), len(file_udpa_annotations_status_proto_rawDesc)))\n\t})\n\treturn file_udpa_annotations_status_proto_rawDescData\n}\n\nvar file_udpa_annotations_status_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_udpa_annotations_status_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_udpa_annotations_status_proto_goTypes = []any{\n\t(PackageVersionStatus)(0),        // 0: udpa.annotations.PackageVersionStatus\n\t(*StatusAnnotation)(nil),         // 1: udpa.annotations.StatusAnnotation\n\t(*descriptorpb.FileOptions)(nil), // 2: google.protobuf.FileOptions\n}\nvar file_udpa_annotations_status_proto_depIdxs = []int32{\n\t0, // 0: udpa.annotations.StatusAnnotation.package_version_status:type_name -> udpa.annotations.PackageVersionStatus\n\t2, // 1: udpa.annotations.file_status:extendee -> google.protobuf.FileOptions\n\t1, // 2: udpa.annotations.file_status:type_name -> udpa.annotations.StatusAnnotation\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t2, // [2:3] is the sub-list for extension type_name\n\t1, // [1:2] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_udpa_annotations_status_proto_init() }\nfunc file_udpa_annotations_status_proto_init() {\n\tif File_udpa_annotations_status_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_udpa_annotations_status_proto_rawDesc), len(file_udpa_annotations_status_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_udpa_annotations_status_proto_goTypes,\n\t\tDependencyIndexes: file_udpa_annotations_status_proto_depIdxs,\n\t\tEnumInfos:         file_udpa_annotations_status_proto_enumTypes,\n\t\tMessageInfos:      file_udpa_annotations_status_proto_msgTypes,\n\t\tExtensionInfos:    file_udpa_annotations_status_proto_extTypes,\n\t}.Build()\n\tFile_udpa_annotations_status_proto = out.File\n\tfile_udpa_annotations_status_proto_goTypes = nil\n\tfile_udpa_annotations_status_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/udpa/annotations/status.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: udpa/annotations/status.proto\n\npackage annotations\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on StatusAnnotation with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *StatusAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on StatusAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// StatusAnnotationMultiError, or nil if none found.\nfunc (m *StatusAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *StatusAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for WorkInProgress\n\n\t// no validation rules for PackageVersionStatus\n\n\tif len(errors) > 0 {\n\t\treturn StatusAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// StatusAnnotationMultiError is an error wrapping multiple validation errors\n// returned by StatusAnnotation.ValidateAll() if the designated constraints\n// aren't met.\ntype StatusAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m StatusAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m StatusAnnotationMultiError) AllErrors() []error { return m }\n\n// StatusAnnotationValidationError is the validation error returned by\n// StatusAnnotation.Validate if the designated constraints aren't met.\ntype StatusAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e StatusAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e StatusAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e StatusAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e StatusAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e StatusAnnotationValidationError) ErrorName() string { return \"StatusAnnotationValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e StatusAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sStatusAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = StatusAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = StatusAnnotationValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/udpa/annotations/versioning.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: udpa/annotations/versioning.proto\n\npackage annotations\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype VersioningAnnotation struct {\n\tstate               protoimpl.MessageState `protogen:\"open.v1\"`\n\tPreviousMessageType string                 `protobuf:\"bytes,1,opt,name=previous_message_type,json=previousMessageType,proto3\" json:\"previous_message_type,omitempty\"`\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\nfunc (x *VersioningAnnotation) Reset() {\n\t*x = VersioningAnnotation{}\n\tmi := &file_udpa_annotations_versioning_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *VersioningAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*VersioningAnnotation) ProtoMessage() {}\n\nfunc (x *VersioningAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_udpa_annotations_versioning_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use VersioningAnnotation.ProtoReflect.Descriptor instead.\nfunc (*VersioningAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_udpa_annotations_versioning_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *VersioningAnnotation) GetPreviousMessageType() string {\n\tif x != nil {\n\t\treturn x.PreviousMessageType\n\t}\n\treturn \"\"\n}\n\nvar file_udpa_annotations_versioning_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.MessageOptions)(nil),\n\t\tExtensionType: (*VersioningAnnotation)(nil),\n\t\tField:         7881811,\n\t\tName:          \"udpa.annotations.versioning\",\n\t\tTag:           \"bytes,7881811,opt,name=versioning\",\n\t\tFilename:      \"udpa/annotations/versioning.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.MessageOptions.\nvar (\n\t// optional udpa.annotations.VersioningAnnotation versioning = 7881811;\n\tE_Versioning = &file_udpa_annotations_versioning_proto_extTypes[0]\n)\n\nvar File_udpa_annotations_versioning_proto protoreflect.FileDescriptor\n\nconst file_udpa_annotations_versioning_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"!udpa/annotations/versioning.proto\\x12\\x10udpa.annotations\\x1a google/protobuf/descriptor.proto\\\"J\\n\" +\n\t\"\\x14VersioningAnnotation\\x122\\n\" +\n\t\"\\x15previous_message_type\\x18\\x01 \\x01(\\tR\\x13previousMessageType:j\\n\" +\n\t\"\\n\" +\n\t\"versioning\\x12\\x1f.google.protobuf.MessageOptions\\x18ӈ\\xe1\\x03 \\x01(\\v2&.udpa.annotations.VersioningAnnotationR\\n\" +\n\t\"versioningB)Z'github.com/cncf/xds/go/udpa/annotationsb\\x06proto3\"\n\nvar (\n\tfile_udpa_annotations_versioning_proto_rawDescOnce sync.Once\n\tfile_udpa_annotations_versioning_proto_rawDescData []byte\n)\n\nfunc file_udpa_annotations_versioning_proto_rawDescGZIP() []byte {\n\tfile_udpa_annotations_versioning_proto_rawDescOnce.Do(func() {\n\t\tfile_udpa_annotations_versioning_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_udpa_annotations_versioning_proto_rawDesc), len(file_udpa_annotations_versioning_proto_rawDesc)))\n\t})\n\treturn file_udpa_annotations_versioning_proto_rawDescData\n}\n\nvar file_udpa_annotations_versioning_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_udpa_annotations_versioning_proto_goTypes = []any{\n\t(*VersioningAnnotation)(nil),        // 0: udpa.annotations.VersioningAnnotation\n\t(*descriptorpb.MessageOptions)(nil), // 1: google.protobuf.MessageOptions\n}\nvar file_udpa_annotations_versioning_proto_depIdxs = []int32{\n\t1, // 0: udpa.annotations.versioning:extendee -> google.protobuf.MessageOptions\n\t0, // 1: udpa.annotations.versioning:type_name -> udpa.annotations.VersioningAnnotation\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t1, // [1:2] is the sub-list for extension type_name\n\t0, // [0:1] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_udpa_annotations_versioning_proto_init() }\nfunc file_udpa_annotations_versioning_proto_init() {\n\tif File_udpa_annotations_versioning_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_udpa_annotations_versioning_proto_rawDesc), len(file_udpa_annotations_versioning_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_udpa_annotations_versioning_proto_goTypes,\n\t\tDependencyIndexes: file_udpa_annotations_versioning_proto_depIdxs,\n\t\tMessageInfos:      file_udpa_annotations_versioning_proto_msgTypes,\n\t\tExtensionInfos:    file_udpa_annotations_versioning_proto_extTypes,\n\t}.Build()\n\tFile_udpa_annotations_versioning_proto = out.File\n\tfile_udpa_annotations_versioning_proto_goTypes = nil\n\tfile_udpa_annotations_versioning_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/udpa/annotations/versioning.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: udpa/annotations/versioning.proto\n\npackage annotations\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on VersioningAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *VersioningAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on VersioningAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// VersioningAnnotationMultiError, or nil if none found.\nfunc (m *VersioningAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *VersioningAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for PreviousMessageType\n\n\tif len(errors) > 0 {\n\t\treturn VersioningAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// VersioningAnnotationMultiError is an error wrapping multiple validation\n// errors returned by VersioningAnnotation.ValidateAll() if the designated\n// constraints aren't met.\ntype VersioningAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m VersioningAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m VersioningAnnotationMultiError) AllErrors() []error { return m }\n\n// VersioningAnnotationValidationError is the validation error returned by\n// VersioningAnnotation.Validate if the designated constraints aren't met.\ntype VersioningAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e VersioningAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e VersioningAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e VersioningAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e VersioningAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e VersioningAnnotationValidationError) ErrorName() string {\n\treturn \"VersioningAnnotationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e VersioningAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sVersioningAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = VersioningAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = VersioningAnnotationValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/annotations/v3/migrate.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/annotations/v3/migrate.proto\n\npackage v3\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype MigrateAnnotation struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tRename        string                 `protobuf:\"bytes,1,opt,name=rename,proto3\" json:\"rename,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *MigrateAnnotation) Reset() {\n\t*x = MigrateAnnotation{}\n\tmi := &file_xds_annotations_v3_migrate_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MigrateAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MigrateAnnotation) ProtoMessage() {}\n\nfunc (x *MigrateAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_annotations_v3_migrate_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MigrateAnnotation.ProtoReflect.Descriptor instead.\nfunc (*MigrateAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_xds_annotations_v3_migrate_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *MigrateAnnotation) GetRename() string {\n\tif x != nil {\n\t\treturn x.Rename\n\t}\n\treturn \"\"\n}\n\ntype FieldMigrateAnnotation struct {\n\tstate          protoimpl.MessageState `protogen:\"open.v1\"`\n\tRename         string                 `protobuf:\"bytes,1,opt,name=rename,proto3\" json:\"rename,omitempty\"`\n\tOneofPromotion string                 `protobuf:\"bytes,2,opt,name=oneof_promotion,json=oneofPromotion,proto3\" json:\"oneof_promotion,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *FieldMigrateAnnotation) Reset() {\n\t*x = FieldMigrateAnnotation{}\n\tmi := &file_xds_annotations_v3_migrate_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FieldMigrateAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldMigrateAnnotation) ProtoMessage() {}\n\nfunc (x *FieldMigrateAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_annotations_v3_migrate_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldMigrateAnnotation.ProtoReflect.Descriptor instead.\nfunc (*FieldMigrateAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_xds_annotations_v3_migrate_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *FieldMigrateAnnotation) GetRename() string {\n\tif x != nil {\n\t\treturn x.Rename\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldMigrateAnnotation) GetOneofPromotion() string {\n\tif x != nil {\n\t\treturn x.OneofPromotion\n\t}\n\treturn \"\"\n}\n\ntype FileMigrateAnnotation struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tMoveToPackage string                 `protobuf:\"bytes,2,opt,name=move_to_package,json=moveToPackage,proto3\" json:\"move_to_package,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *FileMigrateAnnotation) Reset() {\n\t*x = FileMigrateAnnotation{}\n\tmi := &file_xds_annotations_v3_migrate_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FileMigrateAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FileMigrateAnnotation) ProtoMessage() {}\n\nfunc (x *FileMigrateAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_annotations_v3_migrate_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FileMigrateAnnotation.ProtoReflect.Descriptor instead.\nfunc (*FileMigrateAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_xds_annotations_v3_migrate_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *FileMigrateAnnotation) GetMoveToPackage() string {\n\tif x != nil {\n\t\treturn x.MoveToPackage\n\t}\n\treturn \"\"\n}\n\nvar file_xds_annotations_v3_migrate_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.MessageOptions)(nil),\n\t\tExtensionType: (*MigrateAnnotation)(nil),\n\t\tField:         112948430,\n\t\tName:          \"xds.annotations.v3.message_migrate\",\n\t\tTag:           \"bytes,112948430,opt,name=message_migrate\",\n\t\tFilename:      \"xds/annotations/v3/migrate.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: (*FieldMigrateAnnotation)(nil),\n\t\tField:         112948430,\n\t\tName:          \"xds.annotations.v3.field_migrate\",\n\t\tTag:           \"bytes,112948430,opt,name=field_migrate\",\n\t\tFilename:      \"xds/annotations/v3/migrate.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.EnumOptions)(nil),\n\t\tExtensionType: (*MigrateAnnotation)(nil),\n\t\tField:         112948430,\n\t\tName:          \"xds.annotations.v3.enum_migrate\",\n\t\tTag:           \"bytes,112948430,opt,name=enum_migrate\",\n\t\tFilename:      \"xds/annotations/v3/migrate.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.EnumValueOptions)(nil),\n\t\tExtensionType: (*MigrateAnnotation)(nil),\n\t\tField:         112948430,\n\t\tName:          \"xds.annotations.v3.enum_value_migrate\",\n\t\tTag:           \"bytes,112948430,opt,name=enum_value_migrate\",\n\t\tFilename:      \"xds/annotations/v3/migrate.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.FileOptions)(nil),\n\t\tExtensionType: (*FileMigrateAnnotation)(nil),\n\t\tField:         112948430,\n\t\tName:          \"xds.annotations.v3.file_migrate\",\n\t\tTag:           \"bytes,112948430,opt,name=file_migrate\",\n\t\tFilename:      \"xds/annotations/v3/migrate.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.MessageOptions.\nvar (\n\t// optional xds.annotations.v3.MigrateAnnotation message_migrate = 112948430;\n\tE_MessageMigrate = &file_xds_annotations_v3_migrate_proto_extTypes[0]\n)\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// optional xds.annotations.v3.FieldMigrateAnnotation field_migrate = 112948430;\n\tE_FieldMigrate = &file_xds_annotations_v3_migrate_proto_extTypes[1]\n)\n\n// Extension fields to descriptorpb.EnumOptions.\nvar (\n\t// optional xds.annotations.v3.MigrateAnnotation enum_migrate = 112948430;\n\tE_EnumMigrate = &file_xds_annotations_v3_migrate_proto_extTypes[2]\n)\n\n// Extension fields to descriptorpb.EnumValueOptions.\nvar (\n\t// optional xds.annotations.v3.MigrateAnnotation enum_value_migrate = 112948430;\n\tE_EnumValueMigrate = &file_xds_annotations_v3_migrate_proto_extTypes[3]\n)\n\n// Extension fields to descriptorpb.FileOptions.\nvar (\n\t// optional xds.annotations.v3.FileMigrateAnnotation file_migrate = 112948430;\n\tE_FileMigrate = &file_xds_annotations_v3_migrate_proto_extTypes[4]\n)\n\nvar File_xds_annotations_v3_migrate_proto protoreflect.FileDescriptor\n\nconst file_xds_annotations_v3_migrate_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\" xds/annotations/v3/migrate.proto\\x12\\x12xds.annotations.v3\\x1a google/protobuf/descriptor.proto\\\"+\\n\" +\n\t\"\\x11MigrateAnnotation\\x12\\x16\\n\" +\n\t\"\\x06rename\\x18\\x01 \\x01(\\tR\\x06rename\\\"Y\\n\" +\n\t\"\\x16FieldMigrateAnnotation\\x12\\x16\\n\" +\n\t\"\\x06rename\\x18\\x01 \\x01(\\tR\\x06rename\\x12'\\n\" +\n\t\"\\x0foneof_promotion\\x18\\x02 \\x01(\\tR\\x0eoneofPromotion\\\"?\\n\" +\n\t\"\\x15FileMigrateAnnotation\\x12&\\n\" +\n\t\"\\x0fmove_to_package\\x18\\x02 \\x01(\\tR\\rmoveToPackage:r\\n\" +\n\t\"\\x0fmessage_migrate\\x12\\x1f.google.protobuf.MessageOptions\\x18\\xce\\xe9\\xed5 \\x01(\\v2%.xds.annotations.v3.MigrateAnnotationR\\x0emessageMigrate:q\\n\" +\n\t\"\\rfield_migrate\\x12\\x1d.google.protobuf.FieldOptions\\x18\\xce\\xe9\\xed5 \\x01(\\v2*.xds.annotations.v3.FieldMigrateAnnotationR\\ffieldMigrate:i\\n\" +\n\t\"\\fenum_migrate\\x12\\x1c.google.protobuf.EnumOptions\\x18\\xce\\xe9\\xed5 \\x01(\\v2%.xds.annotations.v3.MigrateAnnotationR\\venumMigrate:y\\n\" +\n\t\"\\x12enum_value_migrate\\x12!.google.protobuf.EnumValueOptions\\x18\\xce\\xe9\\xed5 \\x01(\\v2%.xds.annotations.v3.MigrateAnnotationR\\x10enumValueMigrate:m\\n\" +\n\t\"\\ffile_migrate\\x12\\x1c.google.protobuf.FileOptions\\x18\\xce\\xe9\\xed5 \\x01(\\v2).xds.annotations.v3.FileMigrateAnnotationR\\vfileMigrateB+Z)github.com/cncf/xds/go/xds/annotations/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_annotations_v3_migrate_proto_rawDescOnce sync.Once\n\tfile_xds_annotations_v3_migrate_proto_rawDescData []byte\n)\n\nfunc file_xds_annotations_v3_migrate_proto_rawDescGZIP() []byte {\n\tfile_xds_annotations_v3_migrate_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_annotations_v3_migrate_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_annotations_v3_migrate_proto_rawDesc), len(file_xds_annotations_v3_migrate_proto_rawDesc)))\n\t})\n\treturn file_xds_annotations_v3_migrate_proto_rawDescData\n}\n\nvar file_xds_annotations_v3_migrate_proto_msgTypes = make([]protoimpl.MessageInfo, 3)\nvar file_xds_annotations_v3_migrate_proto_goTypes = []any{\n\t(*MigrateAnnotation)(nil),             // 0: xds.annotations.v3.MigrateAnnotation\n\t(*FieldMigrateAnnotation)(nil),        // 1: xds.annotations.v3.FieldMigrateAnnotation\n\t(*FileMigrateAnnotation)(nil),         // 2: xds.annotations.v3.FileMigrateAnnotation\n\t(*descriptorpb.MessageOptions)(nil),   // 3: google.protobuf.MessageOptions\n\t(*descriptorpb.FieldOptions)(nil),     // 4: google.protobuf.FieldOptions\n\t(*descriptorpb.EnumOptions)(nil),      // 5: google.protobuf.EnumOptions\n\t(*descriptorpb.EnumValueOptions)(nil), // 6: google.protobuf.EnumValueOptions\n\t(*descriptorpb.FileOptions)(nil),      // 7: google.protobuf.FileOptions\n}\nvar file_xds_annotations_v3_migrate_proto_depIdxs = []int32{\n\t3,  // 0: xds.annotations.v3.message_migrate:extendee -> google.protobuf.MessageOptions\n\t4,  // 1: xds.annotations.v3.field_migrate:extendee -> google.protobuf.FieldOptions\n\t5,  // 2: xds.annotations.v3.enum_migrate:extendee -> google.protobuf.EnumOptions\n\t6,  // 3: xds.annotations.v3.enum_value_migrate:extendee -> google.protobuf.EnumValueOptions\n\t7,  // 4: xds.annotations.v3.file_migrate:extendee -> google.protobuf.FileOptions\n\t0,  // 5: xds.annotations.v3.message_migrate:type_name -> xds.annotations.v3.MigrateAnnotation\n\t1,  // 6: xds.annotations.v3.field_migrate:type_name -> xds.annotations.v3.FieldMigrateAnnotation\n\t0,  // 7: xds.annotations.v3.enum_migrate:type_name -> xds.annotations.v3.MigrateAnnotation\n\t0,  // 8: xds.annotations.v3.enum_value_migrate:type_name -> xds.annotations.v3.MigrateAnnotation\n\t2,  // 9: xds.annotations.v3.file_migrate:type_name -> xds.annotations.v3.FileMigrateAnnotation\n\t10, // [10:10] is the sub-list for method output_type\n\t10, // [10:10] is the sub-list for method input_type\n\t5,  // [5:10] is the sub-list for extension type_name\n\t0,  // [0:5] is the sub-list for extension extendee\n\t0,  // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_annotations_v3_migrate_proto_init() }\nfunc file_xds_annotations_v3_migrate_proto_init() {\n\tif File_xds_annotations_v3_migrate_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_annotations_v3_migrate_proto_rawDesc), len(file_xds_annotations_v3_migrate_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   3,\n\t\t\tNumExtensions: 5,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_annotations_v3_migrate_proto_goTypes,\n\t\tDependencyIndexes: file_xds_annotations_v3_migrate_proto_depIdxs,\n\t\tMessageInfos:      file_xds_annotations_v3_migrate_proto_msgTypes,\n\t\tExtensionInfos:    file_xds_annotations_v3_migrate_proto_extTypes,\n\t}.Build()\n\tFile_xds_annotations_v3_migrate_proto = out.File\n\tfile_xds_annotations_v3_migrate_proto_goTypes = nil\n\tfile_xds_annotations_v3_migrate_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/annotations/v3/migrate.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/annotations/v3/migrate.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on MigrateAnnotation with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *MigrateAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on MigrateAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// MigrateAnnotationMultiError, or nil if none found.\nfunc (m *MigrateAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *MigrateAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Rename\n\n\tif len(errors) > 0 {\n\t\treturn MigrateAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// MigrateAnnotationMultiError is an error wrapping multiple validation errors\n// returned by MigrateAnnotation.ValidateAll() if the designated constraints\n// aren't met.\ntype MigrateAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m MigrateAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m MigrateAnnotationMultiError) AllErrors() []error { return m }\n\n// MigrateAnnotationValidationError is the validation error returned by\n// MigrateAnnotation.Validate if the designated constraints aren't met.\ntype MigrateAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e MigrateAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e MigrateAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e MigrateAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e MigrateAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e MigrateAnnotationValidationError) ErrorName() string {\n\treturn \"MigrateAnnotationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e MigrateAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMigrateAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = MigrateAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = MigrateAnnotationValidationError{}\n\n// Validate checks the field values on FieldMigrateAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *FieldMigrateAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on FieldMigrateAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// FieldMigrateAnnotationMultiError, or nil if none found.\nfunc (m *FieldMigrateAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *FieldMigrateAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Rename\n\n\t// no validation rules for OneofPromotion\n\n\tif len(errors) > 0 {\n\t\treturn FieldMigrateAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// FieldMigrateAnnotationMultiError is an error wrapping multiple validation\n// errors returned by FieldMigrateAnnotation.ValidateAll() if the designated\n// constraints aren't met.\ntype FieldMigrateAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m FieldMigrateAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m FieldMigrateAnnotationMultiError) AllErrors() []error { return m }\n\n// FieldMigrateAnnotationValidationError is the validation error returned by\n// FieldMigrateAnnotation.Validate if the designated constraints aren't met.\ntype FieldMigrateAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e FieldMigrateAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e FieldMigrateAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e FieldMigrateAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e FieldMigrateAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e FieldMigrateAnnotationValidationError) ErrorName() string {\n\treturn \"FieldMigrateAnnotationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e FieldMigrateAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sFieldMigrateAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = FieldMigrateAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = FieldMigrateAnnotationValidationError{}\n\n// Validate checks the field values on FileMigrateAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *FileMigrateAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on FileMigrateAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// FileMigrateAnnotationMultiError, or nil if none found.\nfunc (m *FileMigrateAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *FileMigrateAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for MoveToPackage\n\n\tif len(errors) > 0 {\n\t\treturn FileMigrateAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// FileMigrateAnnotationMultiError is an error wrapping multiple validation\n// errors returned by FileMigrateAnnotation.ValidateAll() if the designated\n// constraints aren't met.\ntype FileMigrateAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m FileMigrateAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m FileMigrateAnnotationMultiError) AllErrors() []error { return m }\n\n// FileMigrateAnnotationValidationError is the validation error returned by\n// FileMigrateAnnotation.Validate if the designated constraints aren't met.\ntype FileMigrateAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e FileMigrateAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e FileMigrateAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e FileMigrateAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e FileMigrateAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e FileMigrateAnnotationValidationError) ErrorName() string {\n\treturn \"FileMigrateAnnotationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e FileMigrateAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sFileMigrateAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = FileMigrateAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = FileMigrateAnnotationValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/annotations/v3/security.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/annotations/v3/security.proto\n\npackage v3\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype FieldSecurityAnnotation struct {\n\tstate                           protoimpl.MessageState `protogen:\"open.v1\"`\n\tConfigureForUntrustedDownstream bool                   `protobuf:\"varint,1,opt,name=configure_for_untrusted_downstream,json=configureForUntrustedDownstream,proto3\" json:\"configure_for_untrusted_downstream,omitempty\"`\n\tConfigureForUntrustedUpstream   bool                   `protobuf:\"varint,2,opt,name=configure_for_untrusted_upstream,json=configureForUntrustedUpstream,proto3\" json:\"configure_for_untrusted_upstream,omitempty\"`\n\tunknownFields                   protoimpl.UnknownFields\n\tsizeCache                       protoimpl.SizeCache\n}\n\nfunc (x *FieldSecurityAnnotation) Reset() {\n\t*x = FieldSecurityAnnotation{}\n\tmi := &file_xds_annotations_v3_security_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FieldSecurityAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldSecurityAnnotation) ProtoMessage() {}\n\nfunc (x *FieldSecurityAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_annotations_v3_security_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldSecurityAnnotation.ProtoReflect.Descriptor instead.\nfunc (*FieldSecurityAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_xds_annotations_v3_security_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *FieldSecurityAnnotation) GetConfigureForUntrustedDownstream() bool {\n\tif x != nil {\n\t\treturn x.ConfigureForUntrustedDownstream\n\t}\n\treturn false\n}\n\nfunc (x *FieldSecurityAnnotation) GetConfigureForUntrustedUpstream() bool {\n\tif x != nil {\n\t\treturn x.ConfigureForUntrustedUpstream\n\t}\n\treturn false\n}\n\nvar file_xds_annotations_v3_security_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: (*FieldSecurityAnnotation)(nil),\n\t\tField:         99044135,\n\t\tName:          \"xds.annotations.v3.security\",\n\t\tTag:           \"bytes,99044135,opt,name=security\",\n\t\tFilename:      \"xds/annotations/v3/security.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// optional xds.annotations.v3.FieldSecurityAnnotation security = 99044135;\n\tE_Security = &file_xds_annotations_v3_security_proto_extTypes[0]\n)\n\nvar File_xds_annotations_v3_security_proto protoreflect.FileDescriptor\n\nconst file_xds_annotations_v3_security_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"!xds/annotations/v3/security.proto\\x12\\x12xds.annotations.v3\\x1a\\x1fxds/annotations/v3/status.proto\\x1a google/protobuf/descriptor.proto\\\"\\xaf\\x01\\n\" +\n\t\"\\x17FieldSecurityAnnotation\\x12K\\n\" +\n\t\"\\\"configure_for_untrusted_downstream\\x18\\x01 \\x01(\\bR\\x1fconfigureForUntrustedDownstream\\x12G\\n\" +\n\t\" configure_for_untrusted_upstream\\x18\\x02 \\x01(\\bR\\x1dconfigureForUntrustedUpstream:i\\n\" +\n\t\"\\bsecurity\\x12\\x1d.google.protobuf.FieldOptions\\x18\\xa7\\x96\\x9d/ \\x01(\\v2+.xds.annotations.v3.FieldSecurityAnnotationR\\bsecurityB3\\xd2Ƥ\\xe1\\x06\\x02\\b\\x01Z)github.com/cncf/xds/go/xds/annotations/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_annotations_v3_security_proto_rawDescOnce sync.Once\n\tfile_xds_annotations_v3_security_proto_rawDescData []byte\n)\n\nfunc file_xds_annotations_v3_security_proto_rawDescGZIP() []byte {\n\tfile_xds_annotations_v3_security_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_annotations_v3_security_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_annotations_v3_security_proto_rawDesc), len(file_xds_annotations_v3_security_proto_rawDesc)))\n\t})\n\treturn file_xds_annotations_v3_security_proto_rawDescData\n}\n\nvar file_xds_annotations_v3_security_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_xds_annotations_v3_security_proto_goTypes = []any{\n\t(*FieldSecurityAnnotation)(nil),   // 0: xds.annotations.v3.FieldSecurityAnnotation\n\t(*descriptorpb.FieldOptions)(nil), // 1: google.protobuf.FieldOptions\n}\nvar file_xds_annotations_v3_security_proto_depIdxs = []int32{\n\t1, // 0: xds.annotations.v3.security:extendee -> google.protobuf.FieldOptions\n\t0, // 1: xds.annotations.v3.security:type_name -> xds.annotations.v3.FieldSecurityAnnotation\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t1, // [1:2] is the sub-list for extension type_name\n\t0, // [0:1] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_annotations_v3_security_proto_init() }\nfunc file_xds_annotations_v3_security_proto_init() {\n\tif File_xds_annotations_v3_security_proto != nil {\n\t\treturn\n\t}\n\tfile_xds_annotations_v3_status_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_annotations_v3_security_proto_rawDesc), len(file_xds_annotations_v3_security_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_annotations_v3_security_proto_goTypes,\n\t\tDependencyIndexes: file_xds_annotations_v3_security_proto_depIdxs,\n\t\tMessageInfos:      file_xds_annotations_v3_security_proto_msgTypes,\n\t\tExtensionInfos:    file_xds_annotations_v3_security_proto_extTypes,\n\t}.Build()\n\tFile_xds_annotations_v3_security_proto = out.File\n\tfile_xds_annotations_v3_security_proto_goTypes = nil\n\tfile_xds_annotations_v3_security_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/annotations/v3/security.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/annotations/v3/security.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on FieldSecurityAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *FieldSecurityAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on FieldSecurityAnnotation with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// FieldSecurityAnnotationMultiError, or nil if none found.\nfunc (m *FieldSecurityAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *FieldSecurityAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for ConfigureForUntrustedDownstream\n\n\t// no validation rules for ConfigureForUntrustedUpstream\n\n\tif len(errors) > 0 {\n\t\treturn FieldSecurityAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// FieldSecurityAnnotationMultiError is an error wrapping multiple validation\n// errors returned by FieldSecurityAnnotation.ValidateAll() if the designated\n// constraints aren't met.\ntype FieldSecurityAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m FieldSecurityAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m FieldSecurityAnnotationMultiError) AllErrors() []error { return m }\n\n// FieldSecurityAnnotationValidationError is the validation error returned by\n// FieldSecurityAnnotation.Validate if the designated constraints aren't met.\ntype FieldSecurityAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e FieldSecurityAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e FieldSecurityAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e FieldSecurityAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e FieldSecurityAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e FieldSecurityAnnotationValidationError) ErrorName() string {\n\treturn \"FieldSecurityAnnotationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e FieldSecurityAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sFieldSecurityAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = FieldSecurityAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = FieldSecurityAnnotationValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/annotations/v3/sensitive.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/annotations/v3/sensitive.proto\n\npackage v3\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nvar file_xds_annotations_v3_sensitive_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: (*bool)(nil),\n\t\tField:         61008053,\n\t\tName:          \"xds.annotations.v3.sensitive\",\n\t\tTag:           \"varint,61008053,opt,name=sensitive\",\n\t\tFilename:      \"xds/annotations/v3/sensitive.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// optional bool sensitive = 61008053;\n\tE_Sensitive = &file_xds_annotations_v3_sensitive_proto_extTypes[0]\n)\n\nvar File_xds_annotations_v3_sensitive_proto protoreflect.FileDescriptor\n\nconst file_xds_annotations_v3_sensitive_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\\"xds/annotations/v3/sensitive.proto\\x12\\x12xds.annotations.v3\\x1a google/protobuf/descriptor.proto:>\\n\" +\n\t\"\\tsensitive\\x12\\x1d.google.protobuf.FieldOptions\\x18\\xb5ы\\x1d \\x01(\\bR\\tsensitiveB+Z)github.com/cncf/xds/go/xds/annotations/v3b\\x06proto3\"\n\nvar file_xds_annotations_v3_sensitive_proto_goTypes = []any{\n\t(*descriptorpb.FieldOptions)(nil), // 0: google.protobuf.FieldOptions\n}\nvar file_xds_annotations_v3_sensitive_proto_depIdxs = []int32{\n\t0, // 0: xds.annotations.v3.sensitive:extendee -> google.protobuf.FieldOptions\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t0, // [0:1] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_annotations_v3_sensitive_proto_init() }\nfunc file_xds_annotations_v3_sensitive_proto_init() {\n\tif File_xds_annotations_v3_sensitive_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_annotations_v3_sensitive_proto_rawDesc), len(file_xds_annotations_v3_sensitive_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_annotations_v3_sensitive_proto_goTypes,\n\t\tDependencyIndexes: file_xds_annotations_v3_sensitive_proto_depIdxs,\n\t\tExtensionInfos:    file_xds_annotations_v3_sensitive_proto_extTypes,\n\t}.Build()\n\tFile_xds_annotations_v3_sensitive_proto = out.File\n\tfile_xds_annotations_v3_sensitive_proto_goTypes = nil\n\tfile_xds_annotations_v3_sensitive_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/annotations/v3/sensitive.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/annotations/v3/sensitive.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/annotations/v3/status.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/annotations/v3/status.proto\n\npackage v3\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype PackageVersionStatus int32\n\nconst (\n\tPackageVersionStatus_UNKNOWN                      PackageVersionStatus = 0\n\tPackageVersionStatus_FROZEN                       PackageVersionStatus = 1\n\tPackageVersionStatus_ACTIVE                       PackageVersionStatus = 2\n\tPackageVersionStatus_NEXT_MAJOR_VERSION_CANDIDATE PackageVersionStatus = 3\n)\n\n// Enum value maps for PackageVersionStatus.\nvar (\n\tPackageVersionStatus_name = map[int32]string{\n\t\t0: \"UNKNOWN\",\n\t\t1: \"FROZEN\",\n\t\t2: \"ACTIVE\",\n\t\t3: \"NEXT_MAJOR_VERSION_CANDIDATE\",\n\t}\n\tPackageVersionStatus_value = map[string]int32{\n\t\t\"UNKNOWN\":                      0,\n\t\t\"FROZEN\":                       1,\n\t\t\"ACTIVE\":                       2,\n\t\t\"NEXT_MAJOR_VERSION_CANDIDATE\": 3,\n\t}\n)\n\nfunc (x PackageVersionStatus) Enum() *PackageVersionStatus {\n\tp := new(PackageVersionStatus)\n\t*p = x\n\treturn p\n}\n\nfunc (x PackageVersionStatus) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (PackageVersionStatus) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_xds_annotations_v3_status_proto_enumTypes[0].Descriptor()\n}\n\nfunc (PackageVersionStatus) Type() protoreflect.EnumType {\n\treturn &file_xds_annotations_v3_status_proto_enumTypes[0]\n}\n\nfunc (x PackageVersionStatus) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use PackageVersionStatus.Descriptor instead.\nfunc (PackageVersionStatus) EnumDescriptor() ([]byte, []int) {\n\treturn file_xds_annotations_v3_status_proto_rawDescGZIP(), []int{0}\n}\n\ntype FileStatusAnnotation struct {\n\tstate          protoimpl.MessageState `protogen:\"open.v1\"`\n\tWorkInProgress bool                   `protobuf:\"varint,1,opt,name=work_in_progress,json=workInProgress,proto3\" json:\"work_in_progress,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *FileStatusAnnotation) Reset() {\n\t*x = FileStatusAnnotation{}\n\tmi := &file_xds_annotations_v3_status_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FileStatusAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FileStatusAnnotation) ProtoMessage() {}\n\nfunc (x *FileStatusAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_annotations_v3_status_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FileStatusAnnotation.ProtoReflect.Descriptor instead.\nfunc (*FileStatusAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_xds_annotations_v3_status_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *FileStatusAnnotation) GetWorkInProgress() bool {\n\tif x != nil {\n\t\treturn x.WorkInProgress\n\t}\n\treturn false\n}\n\ntype MessageStatusAnnotation struct {\n\tstate          protoimpl.MessageState `protogen:\"open.v1\"`\n\tWorkInProgress bool                   `protobuf:\"varint,1,opt,name=work_in_progress,json=workInProgress,proto3\" json:\"work_in_progress,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *MessageStatusAnnotation) Reset() {\n\t*x = MessageStatusAnnotation{}\n\tmi := &file_xds_annotations_v3_status_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MessageStatusAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MessageStatusAnnotation) ProtoMessage() {}\n\nfunc (x *MessageStatusAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_annotations_v3_status_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MessageStatusAnnotation.ProtoReflect.Descriptor instead.\nfunc (*MessageStatusAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_xds_annotations_v3_status_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *MessageStatusAnnotation) GetWorkInProgress() bool {\n\tif x != nil {\n\t\treturn x.WorkInProgress\n\t}\n\treturn false\n}\n\ntype FieldStatusAnnotation struct {\n\tstate          protoimpl.MessageState `protogen:\"open.v1\"`\n\tWorkInProgress bool                   `protobuf:\"varint,1,opt,name=work_in_progress,json=workInProgress,proto3\" json:\"work_in_progress,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *FieldStatusAnnotation) Reset() {\n\t*x = FieldStatusAnnotation{}\n\tmi := &file_xds_annotations_v3_status_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FieldStatusAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldStatusAnnotation) ProtoMessage() {}\n\nfunc (x *FieldStatusAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_annotations_v3_status_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldStatusAnnotation.ProtoReflect.Descriptor instead.\nfunc (*FieldStatusAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_xds_annotations_v3_status_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *FieldStatusAnnotation) GetWorkInProgress() bool {\n\tif x != nil {\n\t\treturn x.WorkInProgress\n\t}\n\treturn false\n}\n\ntype StatusAnnotation struct {\n\tstate                protoimpl.MessageState `protogen:\"open.v1\"`\n\tWorkInProgress       bool                   `protobuf:\"varint,1,opt,name=work_in_progress,json=workInProgress,proto3\" json:\"work_in_progress,omitempty\"`\n\tPackageVersionStatus PackageVersionStatus   `protobuf:\"varint,2,opt,name=package_version_status,json=packageVersionStatus,proto3,enum=xds.annotations.v3.PackageVersionStatus\" json:\"package_version_status,omitempty\"`\n\tunknownFields        protoimpl.UnknownFields\n\tsizeCache            protoimpl.SizeCache\n}\n\nfunc (x *StatusAnnotation) Reset() {\n\t*x = StatusAnnotation{}\n\tmi := &file_xds_annotations_v3_status_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *StatusAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*StatusAnnotation) ProtoMessage() {}\n\nfunc (x *StatusAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_annotations_v3_status_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use StatusAnnotation.ProtoReflect.Descriptor instead.\nfunc (*StatusAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_xds_annotations_v3_status_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *StatusAnnotation) GetWorkInProgress() bool {\n\tif x != nil {\n\t\treturn x.WorkInProgress\n\t}\n\treturn false\n}\n\nfunc (x *StatusAnnotation) GetPackageVersionStatus() PackageVersionStatus {\n\tif x != nil {\n\t\treturn x.PackageVersionStatus\n\t}\n\treturn PackageVersionStatus_UNKNOWN\n}\n\nvar file_xds_annotations_v3_status_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FileOptions)(nil),\n\t\tExtensionType: (*FileStatusAnnotation)(nil),\n\t\tField:         226829418,\n\t\tName:          \"xds.annotations.v3.file_status\",\n\t\tTag:           \"bytes,226829418,opt,name=file_status\",\n\t\tFilename:      \"xds/annotations/v3/status.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.MessageOptions)(nil),\n\t\tExtensionType: (*MessageStatusAnnotation)(nil),\n\t\tField:         226829418,\n\t\tName:          \"xds.annotations.v3.message_status\",\n\t\tTag:           \"bytes,226829418,opt,name=message_status\",\n\t\tFilename:      \"xds/annotations/v3/status.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: (*FieldStatusAnnotation)(nil),\n\t\tField:         226829418,\n\t\tName:          \"xds.annotations.v3.field_status\",\n\t\tTag:           \"bytes,226829418,opt,name=field_status\",\n\t\tFilename:      \"xds/annotations/v3/status.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FileOptions.\nvar (\n\t// optional xds.annotations.v3.FileStatusAnnotation file_status = 226829418;\n\tE_FileStatus = &file_xds_annotations_v3_status_proto_extTypes[0]\n)\n\n// Extension fields to descriptorpb.MessageOptions.\nvar (\n\t// optional xds.annotations.v3.MessageStatusAnnotation message_status = 226829418;\n\tE_MessageStatus = &file_xds_annotations_v3_status_proto_extTypes[1]\n)\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// optional xds.annotations.v3.FieldStatusAnnotation field_status = 226829418;\n\tE_FieldStatus = &file_xds_annotations_v3_status_proto_extTypes[2]\n)\n\nvar File_xds_annotations_v3_status_proto protoreflect.FileDescriptor\n\nconst file_xds_annotations_v3_status_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1fxds/annotations/v3/status.proto\\x12\\x12xds.annotations.v3\\x1a google/protobuf/descriptor.proto\\\"@\\n\" +\n\t\"\\x14FileStatusAnnotation\\x12(\\n\" +\n\t\"\\x10work_in_progress\\x18\\x01 \\x01(\\bR\\x0eworkInProgress\\\"C\\n\" +\n\t\"\\x17MessageStatusAnnotation\\x12(\\n\" +\n\t\"\\x10work_in_progress\\x18\\x01 \\x01(\\bR\\x0eworkInProgress\\\"A\\n\" +\n\t\"\\x15FieldStatusAnnotation\\x12(\\n\" +\n\t\"\\x10work_in_progress\\x18\\x01 \\x01(\\bR\\x0eworkInProgress\\\"\\x9c\\x01\\n\" +\n\t\"\\x10StatusAnnotation\\x12(\\n\" +\n\t\"\\x10work_in_progress\\x18\\x01 \\x01(\\bR\\x0eworkInProgress\\x12^\\n\" +\n\t\"\\x16package_version_status\\x18\\x02 \\x01(\\x0e2(.xds.annotations.v3.PackageVersionStatusR\\x14packageVersionStatus*]\\n\" +\n\t\"\\x14PackageVersionStatus\\x12\\v\\n\" +\n\t\"\\aUNKNOWN\\x10\\x00\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06FROZEN\\x10\\x01\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06ACTIVE\\x10\\x02\\x12 \\n\" +\n\t\"\\x1cNEXT_MAJOR_VERSION_CANDIDATE\\x10\\x03:j\\n\" +\n\t\"\\vfile_status\\x12\\x1c.google.protobuf.FileOptions\\x18\\xeaȔl \\x01(\\v2(.xds.annotations.v3.FileStatusAnnotationR\\n\" +\n\t\"fileStatus:v\\n\" +\n\t\"\\x0emessage_status\\x12\\x1f.google.protobuf.MessageOptions\\x18\\xeaȔl \\x01(\\v2+.xds.annotations.v3.MessageStatusAnnotationR\\rmessageStatus:n\\n\" +\n\t\"\\ffield_status\\x12\\x1d.google.protobuf.FieldOptions\\x18\\xeaȔl \\x01(\\v2).xds.annotations.v3.FieldStatusAnnotationR\\vfieldStatusB+Z)github.com/cncf/xds/go/xds/annotations/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_annotations_v3_status_proto_rawDescOnce sync.Once\n\tfile_xds_annotations_v3_status_proto_rawDescData []byte\n)\n\nfunc file_xds_annotations_v3_status_proto_rawDescGZIP() []byte {\n\tfile_xds_annotations_v3_status_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_annotations_v3_status_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_annotations_v3_status_proto_rawDesc), len(file_xds_annotations_v3_status_proto_rawDesc)))\n\t})\n\treturn file_xds_annotations_v3_status_proto_rawDescData\n}\n\nvar file_xds_annotations_v3_status_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_xds_annotations_v3_status_proto_msgTypes = make([]protoimpl.MessageInfo, 4)\nvar file_xds_annotations_v3_status_proto_goTypes = []any{\n\t(PackageVersionStatus)(0),           // 0: xds.annotations.v3.PackageVersionStatus\n\t(*FileStatusAnnotation)(nil),        // 1: xds.annotations.v3.FileStatusAnnotation\n\t(*MessageStatusAnnotation)(nil),     // 2: xds.annotations.v3.MessageStatusAnnotation\n\t(*FieldStatusAnnotation)(nil),       // 3: xds.annotations.v3.FieldStatusAnnotation\n\t(*StatusAnnotation)(nil),            // 4: xds.annotations.v3.StatusAnnotation\n\t(*descriptorpb.FileOptions)(nil),    // 5: google.protobuf.FileOptions\n\t(*descriptorpb.MessageOptions)(nil), // 6: google.protobuf.MessageOptions\n\t(*descriptorpb.FieldOptions)(nil),   // 7: google.protobuf.FieldOptions\n}\nvar file_xds_annotations_v3_status_proto_depIdxs = []int32{\n\t0, // 0: xds.annotations.v3.StatusAnnotation.package_version_status:type_name -> xds.annotations.v3.PackageVersionStatus\n\t5, // 1: xds.annotations.v3.file_status:extendee -> google.protobuf.FileOptions\n\t6, // 2: xds.annotations.v3.message_status:extendee -> google.protobuf.MessageOptions\n\t7, // 3: xds.annotations.v3.field_status:extendee -> google.protobuf.FieldOptions\n\t1, // 4: xds.annotations.v3.file_status:type_name -> xds.annotations.v3.FileStatusAnnotation\n\t2, // 5: xds.annotations.v3.message_status:type_name -> xds.annotations.v3.MessageStatusAnnotation\n\t3, // 6: xds.annotations.v3.field_status:type_name -> xds.annotations.v3.FieldStatusAnnotation\n\t7, // [7:7] is the sub-list for method output_type\n\t7, // [7:7] is the sub-list for method input_type\n\t4, // [4:7] is the sub-list for extension type_name\n\t1, // [1:4] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_annotations_v3_status_proto_init() }\nfunc file_xds_annotations_v3_status_proto_init() {\n\tif File_xds_annotations_v3_status_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_annotations_v3_status_proto_rawDesc), len(file_xds_annotations_v3_status_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   4,\n\t\t\tNumExtensions: 3,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_annotations_v3_status_proto_goTypes,\n\t\tDependencyIndexes: file_xds_annotations_v3_status_proto_depIdxs,\n\t\tEnumInfos:         file_xds_annotations_v3_status_proto_enumTypes,\n\t\tMessageInfos:      file_xds_annotations_v3_status_proto_msgTypes,\n\t\tExtensionInfos:    file_xds_annotations_v3_status_proto_extTypes,\n\t}.Build()\n\tFile_xds_annotations_v3_status_proto = out.File\n\tfile_xds_annotations_v3_status_proto_goTypes = nil\n\tfile_xds_annotations_v3_status_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/annotations/v3/status.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/annotations/v3/status.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on FileStatusAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *FileStatusAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on FileStatusAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// FileStatusAnnotationMultiError, or nil if none found.\nfunc (m *FileStatusAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *FileStatusAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for WorkInProgress\n\n\tif len(errors) > 0 {\n\t\treturn FileStatusAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// FileStatusAnnotationMultiError is an error wrapping multiple validation\n// errors returned by FileStatusAnnotation.ValidateAll() if the designated\n// constraints aren't met.\ntype FileStatusAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m FileStatusAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m FileStatusAnnotationMultiError) AllErrors() []error { return m }\n\n// FileStatusAnnotationValidationError is the validation error returned by\n// FileStatusAnnotation.Validate if the designated constraints aren't met.\ntype FileStatusAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e FileStatusAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e FileStatusAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e FileStatusAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e FileStatusAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e FileStatusAnnotationValidationError) ErrorName() string {\n\treturn \"FileStatusAnnotationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e FileStatusAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sFileStatusAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = FileStatusAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = FileStatusAnnotationValidationError{}\n\n// Validate checks the field values on MessageStatusAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *MessageStatusAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on MessageStatusAnnotation with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// MessageStatusAnnotationMultiError, or nil if none found.\nfunc (m *MessageStatusAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *MessageStatusAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for WorkInProgress\n\n\tif len(errors) > 0 {\n\t\treturn MessageStatusAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// MessageStatusAnnotationMultiError is an error wrapping multiple validation\n// errors returned by MessageStatusAnnotation.ValidateAll() if the designated\n// constraints aren't met.\ntype MessageStatusAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m MessageStatusAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m MessageStatusAnnotationMultiError) AllErrors() []error { return m }\n\n// MessageStatusAnnotationValidationError is the validation error returned by\n// MessageStatusAnnotation.Validate if the designated constraints aren't met.\ntype MessageStatusAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e MessageStatusAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e MessageStatusAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e MessageStatusAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e MessageStatusAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e MessageStatusAnnotationValidationError) ErrorName() string {\n\treturn \"MessageStatusAnnotationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e MessageStatusAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMessageStatusAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = MessageStatusAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = MessageStatusAnnotationValidationError{}\n\n// Validate checks the field values on FieldStatusAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *FieldStatusAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on FieldStatusAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// FieldStatusAnnotationMultiError, or nil if none found.\nfunc (m *FieldStatusAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *FieldStatusAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for WorkInProgress\n\n\tif len(errors) > 0 {\n\t\treturn FieldStatusAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// FieldStatusAnnotationMultiError is an error wrapping multiple validation\n// errors returned by FieldStatusAnnotation.ValidateAll() if the designated\n// constraints aren't met.\ntype FieldStatusAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m FieldStatusAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m FieldStatusAnnotationMultiError) AllErrors() []error { return m }\n\n// FieldStatusAnnotationValidationError is the validation error returned by\n// FieldStatusAnnotation.Validate if the designated constraints aren't met.\ntype FieldStatusAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e FieldStatusAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e FieldStatusAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e FieldStatusAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e FieldStatusAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e FieldStatusAnnotationValidationError) ErrorName() string {\n\treturn \"FieldStatusAnnotationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e FieldStatusAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sFieldStatusAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = FieldStatusAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = FieldStatusAnnotationValidationError{}\n\n// Validate checks the field values on StatusAnnotation with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *StatusAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on StatusAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// StatusAnnotationMultiError, or nil if none found.\nfunc (m *StatusAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *StatusAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for WorkInProgress\n\n\t// no validation rules for PackageVersionStatus\n\n\tif len(errors) > 0 {\n\t\treturn StatusAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// StatusAnnotationMultiError is an error wrapping multiple validation errors\n// returned by StatusAnnotation.ValidateAll() if the designated constraints\n// aren't met.\ntype StatusAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m StatusAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m StatusAnnotationMultiError) AllErrors() []error { return m }\n\n// StatusAnnotationValidationError is the validation error returned by\n// StatusAnnotation.Validate if the designated constraints aren't met.\ntype StatusAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e StatusAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e StatusAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e StatusAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e StatusAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e StatusAnnotationValidationError) ErrorName() string { return \"StatusAnnotationValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e StatusAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sStatusAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = StatusAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = StatusAnnotationValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/annotations/v3/versioning.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/annotations/v3/versioning.proto\n\npackage v3\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype VersioningAnnotation struct {\n\tstate               protoimpl.MessageState `protogen:\"open.v1\"`\n\tPreviousMessageType string                 `protobuf:\"bytes,1,opt,name=previous_message_type,json=previousMessageType,proto3\" json:\"previous_message_type,omitempty\"`\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\nfunc (x *VersioningAnnotation) Reset() {\n\t*x = VersioningAnnotation{}\n\tmi := &file_xds_annotations_v3_versioning_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *VersioningAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*VersioningAnnotation) ProtoMessage() {}\n\nfunc (x *VersioningAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_annotations_v3_versioning_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use VersioningAnnotation.ProtoReflect.Descriptor instead.\nfunc (*VersioningAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_xds_annotations_v3_versioning_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *VersioningAnnotation) GetPreviousMessageType() string {\n\tif x != nil {\n\t\treturn x.PreviousMessageType\n\t}\n\treturn \"\"\n}\n\nvar file_xds_annotations_v3_versioning_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.MessageOptions)(nil),\n\t\tExtensionType: (*VersioningAnnotation)(nil),\n\t\tField:         92389011,\n\t\tName:          \"xds.annotations.v3.versioning\",\n\t\tTag:           \"bytes,92389011,opt,name=versioning\",\n\t\tFilename:      \"xds/annotations/v3/versioning.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.MessageOptions.\nvar (\n\t// optional xds.annotations.v3.VersioningAnnotation versioning = 92389011;\n\tE_Versioning = &file_xds_annotations_v3_versioning_proto_extTypes[0]\n)\n\nvar File_xds_annotations_v3_versioning_proto protoreflect.FileDescriptor\n\nconst file_xds_annotations_v3_versioning_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"#xds/annotations/v3/versioning.proto\\x12\\x12xds.annotations.v3\\x1a google/protobuf/descriptor.proto\\\"J\\n\" +\n\t\"\\x14VersioningAnnotation\\x122\\n\" +\n\t\"\\x15previous_message_type\\x18\\x01 \\x01(\\tR\\x13previousMessageType:l\\n\" +\n\t\"\\n\" +\n\t\"versioning\\x12\\x1f.google.protobuf.MessageOptions\\x18\\x93\\xfd\\x86, \\x01(\\v2(.xds.annotations.v3.VersioningAnnotationR\\n\" +\n\t\"versioningB+Z)github.com/cncf/xds/go/xds/annotations/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_annotations_v3_versioning_proto_rawDescOnce sync.Once\n\tfile_xds_annotations_v3_versioning_proto_rawDescData []byte\n)\n\nfunc file_xds_annotations_v3_versioning_proto_rawDescGZIP() []byte {\n\tfile_xds_annotations_v3_versioning_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_annotations_v3_versioning_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_annotations_v3_versioning_proto_rawDesc), len(file_xds_annotations_v3_versioning_proto_rawDesc)))\n\t})\n\treturn file_xds_annotations_v3_versioning_proto_rawDescData\n}\n\nvar file_xds_annotations_v3_versioning_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_xds_annotations_v3_versioning_proto_goTypes = []any{\n\t(*VersioningAnnotation)(nil),        // 0: xds.annotations.v3.VersioningAnnotation\n\t(*descriptorpb.MessageOptions)(nil), // 1: google.protobuf.MessageOptions\n}\nvar file_xds_annotations_v3_versioning_proto_depIdxs = []int32{\n\t1, // 0: xds.annotations.v3.versioning:extendee -> google.protobuf.MessageOptions\n\t0, // 1: xds.annotations.v3.versioning:type_name -> xds.annotations.v3.VersioningAnnotation\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t1, // [1:2] is the sub-list for extension type_name\n\t0, // [0:1] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_annotations_v3_versioning_proto_init() }\nfunc file_xds_annotations_v3_versioning_proto_init() {\n\tif File_xds_annotations_v3_versioning_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_annotations_v3_versioning_proto_rawDesc), len(file_xds_annotations_v3_versioning_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_annotations_v3_versioning_proto_goTypes,\n\t\tDependencyIndexes: file_xds_annotations_v3_versioning_proto_depIdxs,\n\t\tMessageInfos:      file_xds_annotations_v3_versioning_proto_msgTypes,\n\t\tExtensionInfos:    file_xds_annotations_v3_versioning_proto_extTypes,\n\t}.Build()\n\tFile_xds_annotations_v3_versioning_proto = out.File\n\tfile_xds_annotations_v3_versioning_proto_goTypes = nil\n\tfile_xds_annotations_v3_versioning_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/annotations/v3/versioning.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/annotations/v3/versioning.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on VersioningAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *VersioningAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on VersioningAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// VersioningAnnotationMultiError, or nil if none found.\nfunc (m *VersioningAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *VersioningAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for PreviousMessageType\n\n\tif len(errors) > 0 {\n\t\treturn VersioningAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// VersioningAnnotationMultiError is an error wrapping multiple validation\n// errors returned by VersioningAnnotation.ValidateAll() if the designated\n// constraints aren't met.\ntype VersioningAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m VersioningAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m VersioningAnnotationMultiError) AllErrors() []error { return m }\n\n// VersioningAnnotationValidationError is the validation error returned by\n// VersioningAnnotation.Validate if the designated constraints aren't met.\ntype VersioningAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e VersioningAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e VersioningAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e VersioningAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e VersioningAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e VersioningAnnotationValidationError) ErrorName() string {\n\treturn \"VersioningAnnotationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e VersioningAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sVersioningAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = VersioningAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = VersioningAnnotationValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/authority.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/core/v3/authority.proto\n\npackage v3\n\nimport (\n\t_ \"github.com/cncf/xds/go/xds/annotations/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype Authority struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tName          string                 `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Authority) Reset() {\n\t*x = Authority{}\n\tmi := &file_xds_core_v3_authority_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Authority) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Authority) ProtoMessage() {}\n\nfunc (x *Authority) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_core_v3_authority_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Authority.ProtoReflect.Descriptor instead.\nfunc (*Authority) Descriptor() ([]byte, []int) {\n\treturn file_xds_core_v3_authority_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Authority) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nvar File_xds_core_v3_authority_proto protoreflect.FileDescriptor\n\nconst file_xds_core_v3_authority_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1bxds/core/v3/authority.proto\\x12\\vxds.core.v3\\x1a\\x1fxds/annotations/v3/status.proto\\x1a\\x17validate/validate.proto\\\"(\\n\" +\n\t\"\\tAuthority\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04nameBV\\xd2Ƥ\\xe1\\x06\\x02\\b\\x01\\n\" +\n\t\"\\x16com.github.xds.core.v3B\\x0eAuthorityProtoP\\x01Z\\\"github.com/cncf/xds/go/xds/core/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_core_v3_authority_proto_rawDescOnce sync.Once\n\tfile_xds_core_v3_authority_proto_rawDescData []byte\n)\n\nfunc file_xds_core_v3_authority_proto_rawDescGZIP() []byte {\n\tfile_xds_core_v3_authority_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_core_v3_authority_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_core_v3_authority_proto_rawDesc), len(file_xds_core_v3_authority_proto_rawDesc)))\n\t})\n\treturn file_xds_core_v3_authority_proto_rawDescData\n}\n\nvar file_xds_core_v3_authority_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_xds_core_v3_authority_proto_goTypes = []any{\n\t(*Authority)(nil), // 0: xds.core.v3.Authority\n}\nvar file_xds_core_v3_authority_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_core_v3_authority_proto_init() }\nfunc file_xds_core_v3_authority_proto_init() {\n\tif File_xds_core_v3_authority_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_core_v3_authority_proto_rawDesc), len(file_xds_core_v3_authority_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_core_v3_authority_proto_goTypes,\n\t\tDependencyIndexes: file_xds_core_v3_authority_proto_depIdxs,\n\t\tMessageInfos:      file_xds_core_v3_authority_proto_msgTypes,\n\t}.Build()\n\tFile_xds_core_v3_authority_proto = out.File\n\tfile_xds_core_v3_authority_proto_goTypes = nil\n\tfile_xds_core_v3_authority_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/authority.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/core/v3/authority.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on Authority with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Authority) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Authority with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in AuthorityMultiError, or nil\n// if none found.\nfunc (m *Authority) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Authority) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := AuthorityValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn AuthorityMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// AuthorityMultiError is an error wrapping multiple validation errors returned\n// by Authority.ValidateAll() if the designated constraints aren't met.\ntype AuthorityMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m AuthorityMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m AuthorityMultiError) AllErrors() []error { return m }\n\n// AuthorityValidationError is the validation error returned by\n// Authority.Validate if the designated constraints aren't met.\ntype AuthorityValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e AuthorityValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e AuthorityValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e AuthorityValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e AuthorityValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e AuthorityValidationError) ErrorName() string { return \"AuthorityValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e AuthorityValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sAuthority.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = AuthorityValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = AuthorityValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/cidr.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/core/v3/cidr.proto\n\npackage v3\n\nimport (\n\t_ \"github.com/cncf/xds/go/xds/annotations/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype CidrRange struct {\n\tstate         protoimpl.MessageState  `protogen:\"open.v1\"`\n\tAddressPrefix string                  `protobuf:\"bytes,1,opt,name=address_prefix,json=addressPrefix,proto3\" json:\"address_prefix,omitempty\"`\n\tPrefixLen     *wrapperspb.UInt32Value `protobuf:\"bytes,2,opt,name=prefix_len,json=prefixLen,proto3\" json:\"prefix_len,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *CidrRange) Reset() {\n\t*x = CidrRange{}\n\tmi := &file_xds_core_v3_cidr_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CidrRange) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CidrRange) ProtoMessage() {}\n\nfunc (x *CidrRange) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_core_v3_cidr_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CidrRange.ProtoReflect.Descriptor instead.\nfunc (*CidrRange) Descriptor() ([]byte, []int) {\n\treturn file_xds_core_v3_cidr_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *CidrRange) GetAddressPrefix() string {\n\tif x != nil {\n\t\treturn x.AddressPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *CidrRange) GetPrefixLen() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.PrefixLen\n\t}\n\treturn nil\n}\n\nvar File_xds_core_v3_cidr_proto protoreflect.FileDescriptor\n\nconst file_xds_core_v3_cidr_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x16xds/core/v3/cidr.proto\\x12\\vxds.core.v3\\x1a\\x1fxds/annotations/v3/status.proto\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a\\x17validate/validate.proto\\\"\\x82\\x01\\n\" +\n\t\"\\tCidrRange\\x12.\\n\" +\n\t\"\\x0eaddress_prefix\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\raddressPrefix\\x12E\\n\" +\n\t\"\\n\" +\n\t\"prefix_len\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\b\\xfaB\\x05*\\x03\\x18\\x80\\x01R\\tprefixLenBN\\n\" +\n\t\"\\x16com.github.xds.core.v3B\\x0eCidrRangeProtoP\\x01Z\\\"github.com/cncf/xds/go/xds/core/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_core_v3_cidr_proto_rawDescOnce sync.Once\n\tfile_xds_core_v3_cidr_proto_rawDescData []byte\n)\n\nfunc file_xds_core_v3_cidr_proto_rawDescGZIP() []byte {\n\tfile_xds_core_v3_cidr_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_core_v3_cidr_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_core_v3_cidr_proto_rawDesc), len(file_xds_core_v3_cidr_proto_rawDesc)))\n\t})\n\treturn file_xds_core_v3_cidr_proto_rawDescData\n}\n\nvar file_xds_core_v3_cidr_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_xds_core_v3_cidr_proto_goTypes = []any{\n\t(*CidrRange)(nil),              // 0: xds.core.v3.CidrRange\n\t(*wrapperspb.UInt32Value)(nil), // 1: google.protobuf.UInt32Value\n}\nvar file_xds_core_v3_cidr_proto_depIdxs = []int32{\n\t1, // 0: xds.core.v3.CidrRange.prefix_len:type_name -> google.protobuf.UInt32Value\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_core_v3_cidr_proto_init() }\nfunc file_xds_core_v3_cidr_proto_init() {\n\tif File_xds_core_v3_cidr_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_core_v3_cidr_proto_rawDesc), len(file_xds_core_v3_cidr_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_core_v3_cidr_proto_goTypes,\n\t\tDependencyIndexes: file_xds_core_v3_cidr_proto_depIdxs,\n\t\tMessageInfos:      file_xds_core_v3_cidr_proto_msgTypes,\n\t}.Build()\n\tFile_xds_core_v3_cidr_proto = out.File\n\tfile_xds_core_v3_cidr_proto_goTypes = nil\n\tfile_xds_core_v3_cidr_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/cidr.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/core/v3/cidr.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on CidrRange with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *CidrRange) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CidrRange with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in CidrRangeMultiError, or nil\n// if none found.\nfunc (m *CidrRange) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CidrRange) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetAddressPrefix()) < 1 {\n\t\terr := CidrRangeValidationError{\n\t\t\tfield:  \"AddressPrefix\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif wrapper := m.GetPrefixLen(); wrapper != nil {\n\n\t\tif wrapper.GetValue() > 128 {\n\t\t\terr := CidrRangeValidationError{\n\t\t\t\tfield:  \"PrefixLen\",\n\t\t\t\treason: \"value must be less than or equal to 128\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn CidrRangeMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CidrRangeMultiError is an error wrapping multiple validation errors returned\n// by CidrRange.ValidateAll() if the designated constraints aren't met.\ntype CidrRangeMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CidrRangeMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CidrRangeMultiError) AllErrors() []error { return m }\n\n// CidrRangeValidationError is the validation error returned by\n// CidrRange.Validate if the designated constraints aren't met.\ntype CidrRangeValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CidrRangeValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CidrRangeValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CidrRangeValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CidrRangeValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CidrRangeValidationError) ErrorName() string { return \"CidrRangeValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e CidrRangeValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCidrRange.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CidrRangeValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CidrRangeValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/collection_entry.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/core/v3/collection_entry.proto\n\npackage v3\n\nimport (\n\t_ \"github.com/cncf/xds/go/xds/annotations/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype CollectionEntry struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to ResourceSpecifier:\n\t//\n\t//\t*CollectionEntry_Locator\n\t//\t*CollectionEntry_InlineEntry_\n\tResourceSpecifier isCollectionEntry_ResourceSpecifier `protobuf_oneof:\"resource_specifier\"`\n\tunknownFields     protoimpl.UnknownFields\n\tsizeCache         protoimpl.SizeCache\n}\n\nfunc (x *CollectionEntry) Reset() {\n\t*x = CollectionEntry{}\n\tmi := &file_xds_core_v3_collection_entry_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CollectionEntry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CollectionEntry) ProtoMessage() {}\n\nfunc (x *CollectionEntry) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_core_v3_collection_entry_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CollectionEntry.ProtoReflect.Descriptor instead.\nfunc (*CollectionEntry) Descriptor() ([]byte, []int) {\n\treturn file_xds_core_v3_collection_entry_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *CollectionEntry) GetResourceSpecifier() isCollectionEntry_ResourceSpecifier {\n\tif x != nil {\n\t\treturn x.ResourceSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *CollectionEntry) GetLocator() *ResourceLocator {\n\tif x != nil {\n\t\tif x, ok := x.ResourceSpecifier.(*CollectionEntry_Locator); ok {\n\t\t\treturn x.Locator\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *CollectionEntry) GetInlineEntry() *CollectionEntry_InlineEntry {\n\tif x != nil {\n\t\tif x, ok := x.ResourceSpecifier.(*CollectionEntry_InlineEntry_); ok {\n\t\t\treturn x.InlineEntry\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isCollectionEntry_ResourceSpecifier interface {\n\tisCollectionEntry_ResourceSpecifier()\n}\n\ntype CollectionEntry_Locator struct {\n\tLocator *ResourceLocator `protobuf:\"bytes,1,opt,name=locator,proto3,oneof\"`\n}\n\ntype CollectionEntry_InlineEntry_ struct {\n\tInlineEntry *CollectionEntry_InlineEntry `protobuf:\"bytes,2,opt,name=inline_entry,json=inlineEntry,proto3,oneof\"`\n}\n\nfunc (*CollectionEntry_Locator) isCollectionEntry_ResourceSpecifier() {}\n\nfunc (*CollectionEntry_InlineEntry_) isCollectionEntry_ResourceSpecifier() {}\n\ntype CollectionEntry_InlineEntry struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tName          string                 `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tVersion       string                 `protobuf:\"bytes,2,opt,name=version,proto3\" json:\"version,omitempty\"`\n\tResource      *anypb.Any             `protobuf:\"bytes,3,opt,name=resource,proto3\" json:\"resource,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *CollectionEntry_InlineEntry) Reset() {\n\t*x = CollectionEntry_InlineEntry{}\n\tmi := &file_xds_core_v3_collection_entry_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CollectionEntry_InlineEntry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CollectionEntry_InlineEntry) ProtoMessage() {}\n\nfunc (x *CollectionEntry_InlineEntry) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_core_v3_collection_entry_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CollectionEntry_InlineEntry.ProtoReflect.Descriptor instead.\nfunc (*CollectionEntry_InlineEntry) Descriptor() ([]byte, []int) {\n\treturn file_xds_core_v3_collection_entry_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *CollectionEntry_InlineEntry) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *CollectionEntry_InlineEntry) GetVersion() string {\n\tif x != nil {\n\t\treturn x.Version\n\t}\n\treturn \"\"\n}\n\nfunc (x *CollectionEntry_InlineEntry) GetResource() *anypb.Any {\n\tif x != nil {\n\t\treturn x.Resource\n\t}\n\treturn nil\n}\n\nvar File_xds_core_v3_collection_entry_proto protoreflect.FileDescriptor\n\nconst file_xds_core_v3_collection_entry_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\\"xds/core/v3/collection_entry.proto\\x12\\vxds.core.v3\\x1a\\x19google/protobuf/any.proto\\x1a\\x1fxds/annotations/v3/status.proto\\x1a\\\"xds/core/v3/resource_locator.proto\\x1a\\x17validate/validate.proto\\\"\\xc3\\x02\\n\" +\n\t\"\\x0fCollectionEntry\\x128\\n\" +\n\t\"\\alocator\\x18\\x01 \\x01(\\v2\\x1c.xds.core.v3.ResourceLocatorH\\x00R\\alocator\\x12M\\n\" +\n\t\"\\finline_entry\\x18\\x02 \\x01(\\v2(.xds.core.v3.CollectionEntry.InlineEntryH\\x00R\\vinlineEntry\\x1a\\x8b\\x01\\n\" +\n\t\"\\vInlineEntry\\x120\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\x1c\\xfaB\\x19r\\x172\\x15^[0-9a-zA-Z_\\\\-\\\\.~:]+$R\\x04name\\x12\\x18\\n\" +\n\t\"\\aversion\\x18\\x02 \\x01(\\tR\\aversion\\x120\\n\" +\n\t\"\\bresource\\x18\\x03 \\x01(\\v2\\x14.google.protobuf.AnyR\\bresourceB\\x19\\n\" +\n\t\"\\x12resource_specifier\\x12\\x03\\xf8B\\x01B\\\\\\xd2Ƥ\\xe1\\x06\\x02\\b\\x01\\n\" +\n\t\"\\x16com.github.xds.core.v3B\\x14CollectionEntryProtoP\\x01Z\\\"github.com/cncf/xds/go/xds/core/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_core_v3_collection_entry_proto_rawDescOnce sync.Once\n\tfile_xds_core_v3_collection_entry_proto_rawDescData []byte\n)\n\nfunc file_xds_core_v3_collection_entry_proto_rawDescGZIP() []byte {\n\tfile_xds_core_v3_collection_entry_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_core_v3_collection_entry_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_core_v3_collection_entry_proto_rawDesc), len(file_xds_core_v3_collection_entry_proto_rawDesc)))\n\t})\n\treturn file_xds_core_v3_collection_entry_proto_rawDescData\n}\n\nvar file_xds_core_v3_collection_entry_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_xds_core_v3_collection_entry_proto_goTypes = []any{\n\t(*CollectionEntry)(nil),             // 0: xds.core.v3.CollectionEntry\n\t(*CollectionEntry_InlineEntry)(nil), // 1: xds.core.v3.CollectionEntry.InlineEntry\n\t(*ResourceLocator)(nil),             // 2: xds.core.v3.ResourceLocator\n\t(*anypb.Any)(nil),                   // 3: google.protobuf.Any\n}\nvar file_xds_core_v3_collection_entry_proto_depIdxs = []int32{\n\t2, // 0: xds.core.v3.CollectionEntry.locator:type_name -> xds.core.v3.ResourceLocator\n\t1, // 1: xds.core.v3.CollectionEntry.inline_entry:type_name -> xds.core.v3.CollectionEntry.InlineEntry\n\t3, // 2: xds.core.v3.CollectionEntry.InlineEntry.resource:type_name -> google.protobuf.Any\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t3, // [3:3] is the sub-list for extension type_name\n\t3, // [3:3] is the sub-list for extension extendee\n\t0, // [0:3] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_core_v3_collection_entry_proto_init() }\nfunc file_xds_core_v3_collection_entry_proto_init() {\n\tif File_xds_core_v3_collection_entry_proto != nil {\n\t\treturn\n\t}\n\tfile_xds_core_v3_resource_locator_proto_init()\n\tfile_xds_core_v3_collection_entry_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*CollectionEntry_Locator)(nil),\n\t\t(*CollectionEntry_InlineEntry_)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_core_v3_collection_entry_proto_rawDesc), len(file_xds_core_v3_collection_entry_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_core_v3_collection_entry_proto_goTypes,\n\t\tDependencyIndexes: file_xds_core_v3_collection_entry_proto_depIdxs,\n\t\tMessageInfos:      file_xds_core_v3_collection_entry_proto_msgTypes,\n\t}.Build()\n\tFile_xds_core_v3_collection_entry_proto = out.File\n\tfile_xds_core_v3_collection_entry_proto_goTypes = nil\n\tfile_xds_core_v3_collection_entry_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/collection_entry.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/core/v3/collection_entry.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on CollectionEntry with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *CollectionEntry) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CollectionEntry with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// CollectionEntryMultiError, or nil if none found.\nfunc (m *CollectionEntry) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CollectionEntry) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofResourceSpecifierPresent := false\n\tswitch v := m.ResourceSpecifier.(type) {\n\tcase *CollectionEntry_Locator:\n\t\tif v == nil {\n\t\t\terr := CollectionEntryValidationError{\n\t\t\t\tfield:  \"ResourceSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofResourceSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetLocator()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, CollectionEntryValidationError{\n\t\t\t\t\t\tfield:  \"Locator\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, CollectionEntryValidationError{\n\t\t\t\t\t\tfield:  \"Locator\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetLocator()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn CollectionEntryValidationError{\n\t\t\t\t\tfield:  \"Locator\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *CollectionEntry_InlineEntry_:\n\t\tif v == nil {\n\t\t\terr := CollectionEntryValidationError{\n\t\t\t\tfield:  \"ResourceSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofResourceSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetInlineEntry()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, CollectionEntryValidationError{\n\t\t\t\t\t\tfield:  \"InlineEntry\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, CollectionEntryValidationError{\n\t\t\t\t\t\tfield:  \"InlineEntry\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetInlineEntry()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn CollectionEntryValidationError{\n\t\t\t\t\tfield:  \"InlineEntry\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofResourceSpecifierPresent {\n\t\terr := CollectionEntryValidationError{\n\t\t\tfield:  \"ResourceSpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn CollectionEntryMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CollectionEntryMultiError is an error wrapping multiple validation errors\n// returned by CollectionEntry.ValidateAll() if the designated constraints\n// aren't met.\ntype CollectionEntryMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CollectionEntryMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CollectionEntryMultiError) AllErrors() []error { return m }\n\n// CollectionEntryValidationError is the validation error returned by\n// CollectionEntry.Validate if the designated constraints aren't met.\ntype CollectionEntryValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CollectionEntryValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CollectionEntryValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CollectionEntryValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CollectionEntryValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CollectionEntryValidationError) ErrorName() string { return \"CollectionEntryValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e CollectionEntryValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCollectionEntry.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CollectionEntryValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CollectionEntryValidationError{}\n\n// Validate checks the field values on CollectionEntry_InlineEntry with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *CollectionEntry_InlineEntry) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CollectionEntry_InlineEntry with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// CollectionEntry_InlineEntryMultiError, or nil if none found.\nfunc (m *CollectionEntry_InlineEntry) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CollectionEntry_InlineEntry) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif !_CollectionEntry_InlineEntry_Name_Pattern.MatchString(m.GetName()) {\n\t\terr := CollectionEntry_InlineEntryValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value does not match regex pattern \\\"^[0-9a-zA-Z_\\\\\\\\-\\\\\\\\.~:]+$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for Version\n\n\tif all {\n\t\tswitch v := interface{}(m.GetResource()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, CollectionEntry_InlineEntryValidationError{\n\t\t\t\t\tfield:  \"Resource\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, CollectionEntry_InlineEntryValidationError{\n\t\t\t\t\tfield:  \"Resource\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetResource()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn CollectionEntry_InlineEntryValidationError{\n\t\t\t\tfield:  \"Resource\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn CollectionEntry_InlineEntryMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CollectionEntry_InlineEntryMultiError is an error wrapping multiple\n// validation errors returned by CollectionEntry_InlineEntry.ValidateAll() if\n// the designated constraints aren't met.\ntype CollectionEntry_InlineEntryMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CollectionEntry_InlineEntryMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CollectionEntry_InlineEntryMultiError) AllErrors() []error { return m }\n\n// CollectionEntry_InlineEntryValidationError is the validation error returned\n// by CollectionEntry_InlineEntry.Validate if the designated constraints\n// aren't met.\ntype CollectionEntry_InlineEntryValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CollectionEntry_InlineEntryValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CollectionEntry_InlineEntryValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CollectionEntry_InlineEntryValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CollectionEntry_InlineEntryValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CollectionEntry_InlineEntryValidationError) ErrorName() string {\n\treturn \"CollectionEntry_InlineEntryValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e CollectionEntry_InlineEntryValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCollectionEntry_InlineEntry.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CollectionEntry_InlineEntryValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CollectionEntry_InlineEntryValidationError{}\n\nvar _CollectionEntry_InlineEntry_Name_Pattern = regexp.MustCompile(\"^[0-9a-zA-Z_\\\\-\\\\.~:]+$\")\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/context_params.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/core/v3/context_params.proto\n\npackage v3\n\nimport (\n\t_ \"github.com/cncf/xds/go/xds/annotations/v3\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype ContextParams struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tParams        map[string]string      `protobuf:\"bytes,1,rep,name=params,proto3\" json:\"params,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ContextParams) Reset() {\n\t*x = ContextParams{}\n\tmi := &file_xds_core_v3_context_params_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ContextParams) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ContextParams) ProtoMessage() {}\n\nfunc (x *ContextParams) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_core_v3_context_params_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ContextParams.ProtoReflect.Descriptor instead.\nfunc (*ContextParams) Descriptor() ([]byte, []int) {\n\treturn file_xds_core_v3_context_params_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ContextParams) GetParams() map[string]string {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\nvar File_xds_core_v3_context_params_proto protoreflect.FileDescriptor\n\nconst file_xds_core_v3_context_params_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\" xds/core/v3/context_params.proto\\x12\\vxds.core.v3\\x1a\\x1fxds/annotations/v3/status.proto\\\"\\x8a\\x01\\n\" +\n\t\"\\rContextParams\\x12>\\n\" +\n\t\"\\x06params\\x18\\x01 \\x03(\\v2&.xds.core.v3.ContextParams.ParamsEntryR\\x06params\\x1a9\\n\" +\n\t\"\\vParamsEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\tR\\x05value:\\x028\\x01BZ\\xd2Ƥ\\xe1\\x06\\x02\\b\\x01\\n\" +\n\t\"\\x16com.github.xds.core.v3B\\x12ContextParamsProtoP\\x01Z\\\"github.com/cncf/xds/go/xds/core/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_core_v3_context_params_proto_rawDescOnce sync.Once\n\tfile_xds_core_v3_context_params_proto_rawDescData []byte\n)\n\nfunc file_xds_core_v3_context_params_proto_rawDescGZIP() []byte {\n\tfile_xds_core_v3_context_params_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_core_v3_context_params_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_core_v3_context_params_proto_rawDesc), len(file_xds_core_v3_context_params_proto_rawDesc)))\n\t})\n\treturn file_xds_core_v3_context_params_proto_rawDescData\n}\n\nvar file_xds_core_v3_context_params_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_xds_core_v3_context_params_proto_goTypes = []any{\n\t(*ContextParams)(nil), // 0: xds.core.v3.ContextParams\n\tnil,                   // 1: xds.core.v3.ContextParams.ParamsEntry\n}\nvar file_xds_core_v3_context_params_proto_depIdxs = []int32{\n\t1, // 0: xds.core.v3.ContextParams.params:type_name -> xds.core.v3.ContextParams.ParamsEntry\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_core_v3_context_params_proto_init() }\nfunc file_xds_core_v3_context_params_proto_init() {\n\tif File_xds_core_v3_context_params_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_core_v3_context_params_proto_rawDesc), len(file_xds_core_v3_context_params_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_core_v3_context_params_proto_goTypes,\n\t\tDependencyIndexes: file_xds_core_v3_context_params_proto_depIdxs,\n\t\tMessageInfos:      file_xds_core_v3_context_params_proto_msgTypes,\n\t}.Build()\n\tFile_xds_core_v3_context_params_proto = out.File\n\tfile_xds_core_v3_context_params_proto_goTypes = nil\n\tfile_xds_core_v3_context_params_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/context_params.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/core/v3/context_params.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on ContextParams with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *ContextParams) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ContextParams with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in ContextParamsMultiError, or\n// nil if none found.\nfunc (m *ContextParams) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ContextParams) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Params\n\n\tif len(errors) > 0 {\n\t\treturn ContextParamsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ContextParamsMultiError is an error wrapping multiple validation errors\n// returned by ContextParams.ValidateAll() if the designated constraints\n// aren't met.\ntype ContextParamsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ContextParamsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ContextParamsMultiError) AllErrors() []error { return m }\n\n// ContextParamsValidationError is the validation error returned by\n// ContextParams.Validate if the designated constraints aren't met.\ntype ContextParamsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ContextParamsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ContextParamsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ContextParamsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ContextParamsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ContextParamsValidationError) ErrorName() string { return \"ContextParamsValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e ContextParamsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sContextParams.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ContextParamsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ContextParamsValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/extension.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/core/v3/extension.proto\n\npackage v3\n\nimport (\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype TypedExtensionConfig struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tName          string                 `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tTypedConfig   *anypb.Any             `protobuf:\"bytes,2,opt,name=typed_config,json=typedConfig,proto3\" json:\"typed_config,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *TypedExtensionConfig) Reset() {\n\t*x = TypedExtensionConfig{}\n\tmi := &file_xds_core_v3_extension_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *TypedExtensionConfig) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*TypedExtensionConfig) ProtoMessage() {}\n\nfunc (x *TypedExtensionConfig) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_core_v3_extension_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use TypedExtensionConfig.ProtoReflect.Descriptor instead.\nfunc (*TypedExtensionConfig) Descriptor() ([]byte, []int) {\n\treturn file_xds_core_v3_extension_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *TypedExtensionConfig) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *TypedExtensionConfig) GetTypedConfig() *anypb.Any {\n\tif x != nil {\n\t\treturn x.TypedConfig\n\t}\n\treturn nil\n}\n\nvar File_xds_core_v3_extension_proto protoreflect.FileDescriptor\n\nconst file_xds_core_v3_extension_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1bxds/core/v3/extension.proto\\x12\\vxds.core.v3\\x1a\\x17validate/validate.proto\\x1a\\x19google/protobuf/any.proto\\\"v\\n\" +\n\t\"\\x14TypedExtensionConfig\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x12A\\n\" +\n\t\"\\ftyped_config\\x18\\x02 \\x01(\\v2\\x14.google.protobuf.AnyB\\b\\xfaB\\x05\\xa2\\x01\\x02\\b\\x01R\\vtypedConfigBN\\n\" +\n\t\"\\x16com.github.xds.core.v3B\\x0eExtensionProtoP\\x01Z\\\"github.com/cncf/xds/go/xds/core/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_core_v3_extension_proto_rawDescOnce sync.Once\n\tfile_xds_core_v3_extension_proto_rawDescData []byte\n)\n\nfunc file_xds_core_v3_extension_proto_rawDescGZIP() []byte {\n\tfile_xds_core_v3_extension_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_core_v3_extension_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_core_v3_extension_proto_rawDesc), len(file_xds_core_v3_extension_proto_rawDesc)))\n\t})\n\treturn file_xds_core_v3_extension_proto_rawDescData\n}\n\nvar file_xds_core_v3_extension_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_xds_core_v3_extension_proto_goTypes = []any{\n\t(*TypedExtensionConfig)(nil), // 0: xds.core.v3.TypedExtensionConfig\n\t(*anypb.Any)(nil),            // 1: google.protobuf.Any\n}\nvar file_xds_core_v3_extension_proto_depIdxs = []int32{\n\t1, // 0: xds.core.v3.TypedExtensionConfig.typed_config:type_name -> google.protobuf.Any\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_core_v3_extension_proto_init() }\nfunc file_xds_core_v3_extension_proto_init() {\n\tif File_xds_core_v3_extension_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_core_v3_extension_proto_rawDesc), len(file_xds_core_v3_extension_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_core_v3_extension_proto_goTypes,\n\t\tDependencyIndexes: file_xds_core_v3_extension_proto_depIdxs,\n\t\tMessageInfos:      file_xds_core_v3_extension_proto_msgTypes,\n\t}.Build()\n\tFile_xds_core_v3_extension_proto = out.File\n\tfile_xds_core_v3_extension_proto_goTypes = nil\n\tfile_xds_core_v3_extension_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/extension.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/core/v3/extension.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on TypedExtensionConfig with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *TypedExtensionConfig) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on TypedExtensionConfig with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// TypedExtensionConfigMultiError, or nil if none found.\nfunc (m *TypedExtensionConfig) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *TypedExtensionConfig) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := TypedExtensionConfigValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif m.GetTypedConfig() == nil {\n\t\terr := TypedExtensionConfigValidationError{\n\t\t\tfield:  \"TypedConfig\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif a := m.GetTypedConfig(); a != nil {\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn TypedExtensionConfigMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// TypedExtensionConfigMultiError is an error wrapping multiple validation\n// errors returned by TypedExtensionConfig.ValidateAll() if the designated\n// constraints aren't met.\ntype TypedExtensionConfigMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m TypedExtensionConfigMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m TypedExtensionConfigMultiError) AllErrors() []error { return m }\n\n// TypedExtensionConfigValidationError is the validation error returned by\n// TypedExtensionConfig.Validate if the designated constraints aren't met.\ntype TypedExtensionConfigValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e TypedExtensionConfigValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e TypedExtensionConfigValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e TypedExtensionConfigValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e TypedExtensionConfigValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e TypedExtensionConfigValidationError) ErrorName() string {\n\treturn \"TypedExtensionConfigValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e TypedExtensionConfigValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sTypedExtensionConfig.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = TypedExtensionConfigValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = TypedExtensionConfigValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/resource.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/core/v3/resource.proto\n\npackage v3\n\nimport (\n\t_ \"github.com/cncf/xds/go/xds/annotations/v3\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype Resource struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tName          *ResourceName          `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tVersion       string                 `protobuf:\"bytes,2,opt,name=version,proto3\" json:\"version,omitempty\"`\n\tResource      *anypb.Any             `protobuf:\"bytes,3,opt,name=resource,proto3\" json:\"resource,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Resource) Reset() {\n\t*x = Resource{}\n\tmi := &file_xds_core_v3_resource_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Resource) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Resource) ProtoMessage() {}\n\nfunc (x *Resource) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_core_v3_resource_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Resource.ProtoReflect.Descriptor instead.\nfunc (*Resource) Descriptor() ([]byte, []int) {\n\treturn file_xds_core_v3_resource_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Resource) GetName() *ResourceName {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn nil\n}\n\nfunc (x *Resource) GetVersion() string {\n\tif x != nil {\n\t\treturn x.Version\n\t}\n\treturn \"\"\n}\n\nfunc (x *Resource) GetResource() *anypb.Any {\n\tif x != nil {\n\t\treturn x.Resource\n\t}\n\treturn nil\n}\n\nvar File_xds_core_v3_resource_proto protoreflect.FileDescriptor\n\nconst file_xds_core_v3_resource_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1axds/core/v3/resource.proto\\x12\\vxds.core.v3\\x1a\\x19google/protobuf/any.proto\\x1a\\x1fxds/annotations/v3/status.proto\\x1a\\x1fxds/core/v3/resource_name.proto\\\"\\x85\\x01\\n\" +\n\t\"\\bResource\\x12-\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\v2\\x19.xds.core.v3.ResourceNameR\\x04name\\x12\\x18\\n\" +\n\t\"\\aversion\\x18\\x02 \\x01(\\tR\\aversion\\x120\\n\" +\n\t\"\\bresource\\x18\\x03 \\x01(\\v2\\x14.google.protobuf.AnyR\\bresourceBU\\xd2Ƥ\\xe1\\x06\\x02\\b\\x01\\n\" +\n\t\"\\x16com.github.xds.core.v3B\\rResourceProtoP\\x01Z\\\"github.com/cncf/xds/go/xds/core/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_core_v3_resource_proto_rawDescOnce sync.Once\n\tfile_xds_core_v3_resource_proto_rawDescData []byte\n)\n\nfunc file_xds_core_v3_resource_proto_rawDescGZIP() []byte {\n\tfile_xds_core_v3_resource_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_core_v3_resource_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_core_v3_resource_proto_rawDesc), len(file_xds_core_v3_resource_proto_rawDesc)))\n\t})\n\treturn file_xds_core_v3_resource_proto_rawDescData\n}\n\nvar file_xds_core_v3_resource_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_xds_core_v3_resource_proto_goTypes = []any{\n\t(*Resource)(nil),     // 0: xds.core.v3.Resource\n\t(*ResourceName)(nil), // 1: xds.core.v3.ResourceName\n\t(*anypb.Any)(nil),    // 2: google.protobuf.Any\n}\nvar file_xds_core_v3_resource_proto_depIdxs = []int32{\n\t1, // 0: xds.core.v3.Resource.name:type_name -> xds.core.v3.ResourceName\n\t2, // 1: xds.core.v3.Resource.resource:type_name -> google.protobuf.Any\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_core_v3_resource_proto_init() }\nfunc file_xds_core_v3_resource_proto_init() {\n\tif File_xds_core_v3_resource_proto != nil {\n\t\treturn\n\t}\n\tfile_xds_core_v3_resource_name_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_core_v3_resource_proto_rawDesc), len(file_xds_core_v3_resource_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_core_v3_resource_proto_goTypes,\n\t\tDependencyIndexes: file_xds_core_v3_resource_proto_depIdxs,\n\t\tMessageInfos:      file_xds_core_v3_resource_proto_msgTypes,\n\t}.Build()\n\tFile_xds_core_v3_resource_proto = out.File\n\tfile_xds_core_v3_resource_proto_goTypes = nil\n\tfile_xds_core_v3_resource_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/resource.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/core/v3/resource.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on Resource with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Resource) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Resource with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in ResourceMultiError, or nil\n// if none found.\nfunc (m *Resource) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Resource) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetName()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ResourceValidationError{\n\t\t\t\t\tfield:  \"Name\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ResourceValidationError{\n\t\t\t\t\tfield:  \"Name\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetName()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ResourceValidationError{\n\t\t\t\tfield:  \"Name\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for Version\n\n\tif all {\n\t\tswitch v := interface{}(m.GetResource()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ResourceValidationError{\n\t\t\t\t\tfield:  \"Resource\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ResourceValidationError{\n\t\t\t\t\tfield:  \"Resource\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetResource()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ResourceValidationError{\n\t\t\t\tfield:  \"Resource\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ResourceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ResourceMultiError is an error wrapping multiple validation errors returned\n// by Resource.ValidateAll() if the designated constraints aren't met.\ntype ResourceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ResourceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ResourceMultiError) AllErrors() []error { return m }\n\n// ResourceValidationError is the validation error returned by\n// Resource.Validate if the designated constraints aren't met.\ntype ResourceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ResourceValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ResourceValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ResourceValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ResourceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ResourceValidationError) ErrorName() string { return \"ResourceValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e ResourceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sResource.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ResourceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ResourceValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/resource_locator.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/core/v3/resource_locator.proto\n\npackage v3\n\nimport (\n\t_ \"github.com/cncf/xds/go/xds/annotations/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype ResourceLocator_Scheme int32\n\nconst (\n\tResourceLocator_XDSTP ResourceLocator_Scheme = 0\n\tResourceLocator_HTTP  ResourceLocator_Scheme = 1\n\tResourceLocator_FILE  ResourceLocator_Scheme = 2\n)\n\n// Enum value maps for ResourceLocator_Scheme.\nvar (\n\tResourceLocator_Scheme_name = map[int32]string{\n\t\t0: \"XDSTP\",\n\t\t1: \"HTTP\",\n\t\t2: \"FILE\",\n\t}\n\tResourceLocator_Scheme_value = map[string]int32{\n\t\t\"XDSTP\": 0,\n\t\t\"HTTP\":  1,\n\t\t\"FILE\":  2,\n\t}\n)\n\nfunc (x ResourceLocator_Scheme) Enum() *ResourceLocator_Scheme {\n\tp := new(ResourceLocator_Scheme)\n\t*p = x\n\treturn p\n}\n\nfunc (x ResourceLocator_Scheme) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ResourceLocator_Scheme) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_xds_core_v3_resource_locator_proto_enumTypes[0].Descriptor()\n}\n\nfunc (ResourceLocator_Scheme) Type() protoreflect.EnumType {\n\treturn &file_xds_core_v3_resource_locator_proto_enumTypes[0]\n}\n\nfunc (x ResourceLocator_Scheme) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ResourceLocator_Scheme.Descriptor instead.\nfunc (ResourceLocator_Scheme) EnumDescriptor() ([]byte, []int) {\n\treturn file_xds_core_v3_resource_locator_proto_rawDescGZIP(), []int{0, 0}\n}\n\ntype ResourceLocator struct {\n\tstate        protoimpl.MessageState `protogen:\"open.v1\"`\n\tScheme       ResourceLocator_Scheme `protobuf:\"varint,1,opt,name=scheme,proto3,enum=xds.core.v3.ResourceLocator_Scheme\" json:\"scheme,omitempty\"`\n\tId           string                 `protobuf:\"bytes,2,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tAuthority    string                 `protobuf:\"bytes,3,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n\tResourceType string                 `protobuf:\"bytes,4,opt,name=resource_type,json=resourceType,proto3\" json:\"resource_type,omitempty\"`\n\t// Types that are valid to be assigned to ContextParamSpecifier:\n\t//\n\t//\t*ResourceLocator_ExactContext\n\tContextParamSpecifier isResourceLocator_ContextParamSpecifier `protobuf_oneof:\"context_param_specifier\"`\n\tDirectives            []*ResourceLocator_Directive            `protobuf:\"bytes,6,rep,name=directives,proto3\" json:\"directives,omitempty\"`\n\tunknownFields         protoimpl.UnknownFields\n\tsizeCache             protoimpl.SizeCache\n}\n\nfunc (x *ResourceLocator) Reset() {\n\t*x = ResourceLocator{}\n\tmi := &file_xds_core_v3_resource_locator_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ResourceLocator) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ResourceLocator) ProtoMessage() {}\n\nfunc (x *ResourceLocator) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_core_v3_resource_locator_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ResourceLocator.ProtoReflect.Descriptor instead.\nfunc (*ResourceLocator) Descriptor() ([]byte, []int) {\n\treturn file_xds_core_v3_resource_locator_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ResourceLocator) GetScheme() ResourceLocator_Scheme {\n\tif x != nil {\n\t\treturn x.Scheme\n\t}\n\treturn ResourceLocator_XDSTP\n}\n\nfunc (x *ResourceLocator) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceLocator) GetAuthority() string {\n\tif x != nil {\n\t\treturn x.Authority\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceLocator) GetResourceType() string {\n\tif x != nil {\n\t\treturn x.ResourceType\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceLocator) GetContextParamSpecifier() isResourceLocator_ContextParamSpecifier {\n\tif x != nil {\n\t\treturn x.ContextParamSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *ResourceLocator) GetExactContext() *ContextParams {\n\tif x != nil {\n\t\tif x, ok := x.ContextParamSpecifier.(*ResourceLocator_ExactContext); ok {\n\t\t\treturn x.ExactContext\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *ResourceLocator) GetDirectives() []*ResourceLocator_Directive {\n\tif x != nil {\n\t\treturn x.Directives\n\t}\n\treturn nil\n}\n\ntype isResourceLocator_ContextParamSpecifier interface {\n\tisResourceLocator_ContextParamSpecifier()\n}\n\ntype ResourceLocator_ExactContext struct {\n\tExactContext *ContextParams `protobuf:\"bytes,5,opt,name=exact_context,json=exactContext,proto3,oneof\"`\n}\n\nfunc (*ResourceLocator_ExactContext) isResourceLocator_ContextParamSpecifier() {}\n\ntype ResourceLocator_Directive struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Directive:\n\t//\n\t//\t*ResourceLocator_Directive_Alt\n\t//\t*ResourceLocator_Directive_Entry\n\tDirective     isResourceLocator_Directive_Directive `protobuf_oneof:\"directive\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ResourceLocator_Directive) Reset() {\n\t*x = ResourceLocator_Directive{}\n\tmi := &file_xds_core_v3_resource_locator_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ResourceLocator_Directive) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ResourceLocator_Directive) ProtoMessage() {}\n\nfunc (x *ResourceLocator_Directive) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_core_v3_resource_locator_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ResourceLocator_Directive.ProtoReflect.Descriptor instead.\nfunc (*ResourceLocator_Directive) Descriptor() ([]byte, []int) {\n\treturn file_xds_core_v3_resource_locator_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *ResourceLocator_Directive) GetDirective() isResourceLocator_Directive_Directive {\n\tif x != nil {\n\t\treturn x.Directive\n\t}\n\treturn nil\n}\n\nfunc (x *ResourceLocator_Directive) GetAlt() *ResourceLocator {\n\tif x != nil {\n\t\tif x, ok := x.Directive.(*ResourceLocator_Directive_Alt); ok {\n\t\t\treturn x.Alt\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *ResourceLocator_Directive) GetEntry() string {\n\tif x != nil {\n\t\tif x, ok := x.Directive.(*ResourceLocator_Directive_Entry); ok {\n\t\t\treturn x.Entry\n\t\t}\n\t}\n\treturn \"\"\n}\n\ntype isResourceLocator_Directive_Directive interface {\n\tisResourceLocator_Directive_Directive()\n}\n\ntype ResourceLocator_Directive_Alt struct {\n\tAlt *ResourceLocator `protobuf:\"bytes,1,opt,name=alt,proto3,oneof\"`\n}\n\ntype ResourceLocator_Directive_Entry struct {\n\tEntry string `protobuf:\"bytes,2,opt,name=entry,proto3,oneof\"`\n}\n\nfunc (*ResourceLocator_Directive_Alt) isResourceLocator_Directive_Directive() {}\n\nfunc (*ResourceLocator_Directive_Entry) isResourceLocator_Directive_Directive() {}\n\nvar File_xds_core_v3_resource_locator_proto protoreflect.FileDescriptor\n\nconst file_xds_core_v3_resource_locator_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\\"xds/core/v3/resource_locator.proto\\x12\\vxds.core.v3\\x1a\\x1fxds/annotations/v3/status.proto\\x1a xds/core/v3/context_params.proto\\x1a\\x17validate/validate.proto\\\"\\x8e\\x04\\n\" +\n\t\"\\x0fResourceLocator\\x12E\\n\" +\n\t\"\\x06scheme\\x18\\x01 \\x01(\\x0e2#.xds.core.v3.ResourceLocator.SchemeB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\x06scheme\\x12\\x0e\\n\" +\n\t\"\\x02id\\x18\\x02 \\x01(\\tR\\x02id\\x12\\x1c\\n\" +\n\t\"\\tauthority\\x18\\x03 \\x01(\\tR\\tauthority\\x12,\\n\" +\n\t\"\\rresource_type\\x18\\x04 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\fresourceType\\x12A\\n\" +\n\t\"\\rexact_context\\x18\\x05 \\x01(\\v2\\x1a.xds.core.v3.ContextParamsH\\x00R\\fexactContext\\x12F\\n\" +\n\t\"\\n\" +\n\t\"directives\\x18\\x06 \\x03(\\v2&.xds.core.v3.ResourceLocator.DirectiveR\\n\" +\n\t\"directives\\x1a\\x88\\x01\\n\" +\n\t\"\\tDirective\\x120\\n\" +\n\t\"\\x03alt\\x18\\x01 \\x01(\\v2\\x1c.xds.core.v3.ResourceLocatorH\\x00R\\x03alt\\x127\\n\" +\n\t\"\\x05entry\\x18\\x02 \\x01(\\tB\\x1f\\xfaB\\x1cr\\x1a\\x10\\x012\\x16^[0-9a-zA-Z_\\\\-\\\\./~:]+$H\\x00R\\x05entryB\\x10\\n\" +\n\t\"\\tdirective\\x12\\x03\\xf8B\\x01\\\"'\\n\" +\n\t\"\\x06Scheme\\x12\\t\\n\" +\n\t\"\\x05XDSTP\\x10\\x00\\x12\\b\\n\" +\n\t\"\\x04HTTP\\x10\\x01\\x12\\b\\n\" +\n\t\"\\x04FILE\\x10\\x02B\\x19\\n\" +\n\t\"\\x17context_param_specifierB\\\\\\xd2Ƥ\\xe1\\x06\\x02\\b\\x01\\n\" +\n\t\"\\x16com.github.xds.core.v3B\\x14ResourceLocatorProtoP\\x01Z\\\"github.com/cncf/xds/go/xds/core/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_core_v3_resource_locator_proto_rawDescOnce sync.Once\n\tfile_xds_core_v3_resource_locator_proto_rawDescData []byte\n)\n\nfunc file_xds_core_v3_resource_locator_proto_rawDescGZIP() []byte {\n\tfile_xds_core_v3_resource_locator_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_core_v3_resource_locator_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_core_v3_resource_locator_proto_rawDesc), len(file_xds_core_v3_resource_locator_proto_rawDesc)))\n\t})\n\treturn file_xds_core_v3_resource_locator_proto_rawDescData\n}\n\nvar file_xds_core_v3_resource_locator_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_xds_core_v3_resource_locator_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_xds_core_v3_resource_locator_proto_goTypes = []any{\n\t(ResourceLocator_Scheme)(0),       // 0: xds.core.v3.ResourceLocator.Scheme\n\t(*ResourceLocator)(nil),           // 1: xds.core.v3.ResourceLocator\n\t(*ResourceLocator_Directive)(nil), // 2: xds.core.v3.ResourceLocator.Directive\n\t(*ContextParams)(nil),             // 3: xds.core.v3.ContextParams\n}\nvar file_xds_core_v3_resource_locator_proto_depIdxs = []int32{\n\t0, // 0: xds.core.v3.ResourceLocator.scheme:type_name -> xds.core.v3.ResourceLocator.Scheme\n\t3, // 1: xds.core.v3.ResourceLocator.exact_context:type_name -> xds.core.v3.ContextParams\n\t2, // 2: xds.core.v3.ResourceLocator.directives:type_name -> xds.core.v3.ResourceLocator.Directive\n\t1, // 3: xds.core.v3.ResourceLocator.Directive.alt:type_name -> xds.core.v3.ResourceLocator\n\t4, // [4:4] is the sub-list for method output_type\n\t4, // [4:4] is the sub-list for method input_type\n\t4, // [4:4] is the sub-list for extension type_name\n\t4, // [4:4] is the sub-list for extension extendee\n\t0, // [0:4] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_core_v3_resource_locator_proto_init() }\nfunc file_xds_core_v3_resource_locator_proto_init() {\n\tif File_xds_core_v3_resource_locator_proto != nil {\n\t\treturn\n\t}\n\tfile_xds_core_v3_context_params_proto_init()\n\tfile_xds_core_v3_resource_locator_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*ResourceLocator_ExactContext)(nil),\n\t}\n\tfile_xds_core_v3_resource_locator_proto_msgTypes[1].OneofWrappers = []any{\n\t\t(*ResourceLocator_Directive_Alt)(nil),\n\t\t(*ResourceLocator_Directive_Entry)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_core_v3_resource_locator_proto_rawDesc), len(file_xds_core_v3_resource_locator_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_core_v3_resource_locator_proto_goTypes,\n\t\tDependencyIndexes: file_xds_core_v3_resource_locator_proto_depIdxs,\n\t\tEnumInfos:         file_xds_core_v3_resource_locator_proto_enumTypes,\n\t\tMessageInfos:      file_xds_core_v3_resource_locator_proto_msgTypes,\n\t}.Build()\n\tFile_xds_core_v3_resource_locator_proto = out.File\n\tfile_xds_core_v3_resource_locator_proto_goTypes = nil\n\tfile_xds_core_v3_resource_locator_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/resource_locator.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/core/v3/resource_locator.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on ResourceLocator with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *ResourceLocator) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ResourceLocator with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ResourceLocatorMultiError, or nil if none found.\nfunc (m *ResourceLocator) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ResourceLocator) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif _, ok := ResourceLocator_Scheme_name[int32(m.GetScheme())]; !ok {\n\t\terr := ResourceLocatorValidationError{\n\t\t\tfield:  \"Scheme\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for Id\n\n\t// no validation rules for Authority\n\n\tif utf8.RuneCountInString(m.GetResourceType()) < 1 {\n\t\terr := ResourceLocatorValidationError{\n\t\t\tfield:  \"ResourceType\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetDirectives() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ResourceLocatorValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Directives[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ResourceLocatorValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Directives[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ResourceLocatorValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Directives[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tswitch v := m.ContextParamSpecifier.(type) {\n\tcase *ResourceLocator_ExactContext:\n\t\tif v == nil {\n\t\t\terr := ResourceLocatorValidationError{\n\t\t\t\tfield:  \"ContextParamSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetExactContext()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ResourceLocatorValidationError{\n\t\t\t\t\t\tfield:  \"ExactContext\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ResourceLocatorValidationError{\n\t\t\t\t\t\tfield:  \"ExactContext\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetExactContext()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ResourceLocatorValidationError{\n\t\t\t\t\tfield:  \"ExactContext\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ResourceLocatorMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ResourceLocatorMultiError is an error wrapping multiple validation errors\n// returned by ResourceLocator.ValidateAll() if the designated constraints\n// aren't met.\ntype ResourceLocatorMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ResourceLocatorMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ResourceLocatorMultiError) AllErrors() []error { return m }\n\n// ResourceLocatorValidationError is the validation error returned by\n// ResourceLocator.Validate if the designated constraints aren't met.\ntype ResourceLocatorValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ResourceLocatorValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ResourceLocatorValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ResourceLocatorValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ResourceLocatorValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ResourceLocatorValidationError) ErrorName() string { return \"ResourceLocatorValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e ResourceLocatorValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sResourceLocator.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ResourceLocatorValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ResourceLocatorValidationError{}\n\n// Validate checks the field values on ResourceLocator_Directive with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *ResourceLocator_Directive) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ResourceLocator_Directive with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ResourceLocator_DirectiveMultiError, or nil if none found.\nfunc (m *ResourceLocator_Directive) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ResourceLocator_Directive) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofDirectivePresent := false\n\tswitch v := m.Directive.(type) {\n\tcase *ResourceLocator_Directive_Alt:\n\t\tif v == nil {\n\t\t\terr := ResourceLocator_DirectiveValidationError{\n\t\t\t\tfield:  \"Directive\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofDirectivePresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetAlt()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ResourceLocator_DirectiveValidationError{\n\t\t\t\t\t\tfield:  \"Alt\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ResourceLocator_DirectiveValidationError{\n\t\t\t\t\t\tfield:  \"Alt\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetAlt()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ResourceLocator_DirectiveValidationError{\n\t\t\t\t\tfield:  \"Alt\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *ResourceLocator_Directive_Entry:\n\t\tif v == nil {\n\t\t\terr := ResourceLocator_DirectiveValidationError{\n\t\t\t\tfield:  \"Directive\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofDirectivePresent = true\n\n\t\tif utf8.RuneCountInString(m.GetEntry()) < 1 {\n\t\t\terr := ResourceLocator_DirectiveValidationError{\n\t\t\t\tfield:  \"Entry\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif !_ResourceLocator_Directive_Entry_Pattern.MatchString(m.GetEntry()) {\n\t\t\terr := ResourceLocator_DirectiveValidationError{\n\t\t\t\tfield:  \"Entry\",\n\t\t\t\treason: \"value does not match regex pattern \\\"^[0-9a-zA-Z_\\\\\\\\-\\\\\\\\./~:]+$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofDirectivePresent {\n\t\terr := ResourceLocator_DirectiveValidationError{\n\t\t\tfield:  \"Directive\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ResourceLocator_DirectiveMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ResourceLocator_DirectiveMultiError is an error wrapping multiple validation\n// errors returned by ResourceLocator_Directive.ValidateAll() if the\n// designated constraints aren't met.\ntype ResourceLocator_DirectiveMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ResourceLocator_DirectiveMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ResourceLocator_DirectiveMultiError) AllErrors() []error { return m }\n\n// ResourceLocator_DirectiveValidationError is the validation error returned by\n// ResourceLocator_Directive.Validate if the designated constraints aren't met.\ntype ResourceLocator_DirectiveValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ResourceLocator_DirectiveValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ResourceLocator_DirectiveValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ResourceLocator_DirectiveValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ResourceLocator_DirectiveValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ResourceLocator_DirectiveValidationError) ErrorName() string {\n\treturn \"ResourceLocator_DirectiveValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ResourceLocator_DirectiveValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sResourceLocator_Directive.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ResourceLocator_DirectiveValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ResourceLocator_DirectiveValidationError{}\n\nvar _ResourceLocator_Directive_Entry_Pattern = regexp.MustCompile(\"^[0-9a-zA-Z_\\\\-\\\\./~:]+$\")\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/resource_name.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/core/v3/resource_name.proto\n\npackage v3\n\nimport (\n\t_ \"github.com/cncf/xds/go/xds/annotations/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype ResourceName struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tId            string                 `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tAuthority     string                 `protobuf:\"bytes,2,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n\tResourceType  string                 `protobuf:\"bytes,3,opt,name=resource_type,json=resourceType,proto3\" json:\"resource_type,omitempty\"`\n\tContext       *ContextParams         `protobuf:\"bytes,4,opt,name=context,proto3\" json:\"context,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ResourceName) Reset() {\n\t*x = ResourceName{}\n\tmi := &file_xds_core_v3_resource_name_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ResourceName) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ResourceName) ProtoMessage() {}\n\nfunc (x *ResourceName) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_core_v3_resource_name_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ResourceName.ProtoReflect.Descriptor instead.\nfunc (*ResourceName) Descriptor() ([]byte, []int) {\n\treturn file_xds_core_v3_resource_name_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ResourceName) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceName) GetAuthority() string {\n\tif x != nil {\n\t\treturn x.Authority\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceName) GetResourceType() string {\n\tif x != nil {\n\t\treturn x.ResourceType\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceName) GetContext() *ContextParams {\n\tif x != nil {\n\t\treturn x.Context\n\t}\n\treturn nil\n}\n\nvar File_xds_core_v3_resource_name_proto protoreflect.FileDescriptor\n\nconst file_xds_core_v3_resource_name_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1fxds/core/v3/resource_name.proto\\x12\\vxds.core.v3\\x1a\\x1fxds/annotations/v3/status.proto\\x1a xds/core/v3/context_params.proto\\x1a\\x17validate/validate.proto\\\"\\xa0\\x01\\n\" +\n\t\"\\fResourceName\\x12\\x0e\\n\" +\n\t\"\\x02id\\x18\\x01 \\x01(\\tR\\x02id\\x12\\x1c\\n\" +\n\t\"\\tauthority\\x18\\x02 \\x01(\\tR\\tauthority\\x12,\\n\" +\n\t\"\\rresource_type\\x18\\x03 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\fresourceType\\x124\\n\" +\n\t\"\\acontext\\x18\\x04 \\x01(\\v2\\x1a.xds.core.v3.ContextParamsR\\acontextBY\\xd2Ƥ\\xe1\\x06\\x02\\b\\x01\\n\" +\n\t\"\\x16com.github.xds.core.v3B\\x11ResourceNameProtoP\\x01Z\\\"github.com/cncf/xds/go/xds/core/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_core_v3_resource_name_proto_rawDescOnce sync.Once\n\tfile_xds_core_v3_resource_name_proto_rawDescData []byte\n)\n\nfunc file_xds_core_v3_resource_name_proto_rawDescGZIP() []byte {\n\tfile_xds_core_v3_resource_name_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_core_v3_resource_name_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_core_v3_resource_name_proto_rawDesc), len(file_xds_core_v3_resource_name_proto_rawDesc)))\n\t})\n\treturn file_xds_core_v3_resource_name_proto_rawDescData\n}\n\nvar file_xds_core_v3_resource_name_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_xds_core_v3_resource_name_proto_goTypes = []any{\n\t(*ResourceName)(nil),  // 0: xds.core.v3.ResourceName\n\t(*ContextParams)(nil), // 1: xds.core.v3.ContextParams\n}\nvar file_xds_core_v3_resource_name_proto_depIdxs = []int32{\n\t1, // 0: xds.core.v3.ResourceName.context:type_name -> xds.core.v3.ContextParams\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_core_v3_resource_name_proto_init() }\nfunc file_xds_core_v3_resource_name_proto_init() {\n\tif File_xds_core_v3_resource_name_proto != nil {\n\t\treturn\n\t}\n\tfile_xds_core_v3_context_params_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_core_v3_resource_name_proto_rawDesc), len(file_xds_core_v3_resource_name_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_core_v3_resource_name_proto_goTypes,\n\t\tDependencyIndexes: file_xds_core_v3_resource_name_proto_depIdxs,\n\t\tMessageInfos:      file_xds_core_v3_resource_name_proto_msgTypes,\n\t}.Build()\n\tFile_xds_core_v3_resource_name_proto = out.File\n\tfile_xds_core_v3_resource_name_proto_goTypes = nil\n\tfile_xds_core_v3_resource_name_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/core/v3/resource_name.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/core/v3/resource_name.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on ResourceName with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *ResourceName) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ResourceName with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in ResourceNameMultiError, or\n// nil if none found.\nfunc (m *ResourceName) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ResourceName) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Id\n\n\t// no validation rules for Authority\n\n\tif utf8.RuneCountInString(m.GetResourceType()) < 1 {\n\t\terr := ResourceNameValidationError{\n\t\t\tfield:  \"ResourceType\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetContext()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ResourceNameValidationError{\n\t\t\t\t\tfield:  \"Context\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ResourceNameValidationError{\n\t\t\t\t\tfield:  \"Context\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetContext()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ResourceNameValidationError{\n\t\t\t\tfield:  \"Context\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ResourceNameMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ResourceNameMultiError is an error wrapping multiple validation errors\n// returned by ResourceName.ValidateAll() if the designated constraints aren't met.\ntype ResourceNameMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ResourceNameMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ResourceNameMultiError) AllErrors() []error { return m }\n\n// ResourceNameValidationError is the validation error returned by\n// ResourceName.Validate if the designated constraints aren't met.\ntype ResourceNameValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ResourceNameValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ResourceNameValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ResourceNameValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ResourceNameValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ResourceNameValidationError) ErrorName() string { return \"ResourceNameValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e ResourceNameValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sResourceName.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ResourceNameValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ResourceNameValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/cel.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/type/matcher/v3/cel.proto\n\npackage v3\n\nimport (\n\tv3 \"github.com/cncf/xds/go/xds/type/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype CelMatcher struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tExprMatch     *v3.CelExpression      `protobuf:\"bytes,1,opt,name=expr_match,json=exprMatch,proto3\" json:\"expr_match,omitempty\"`\n\tDescription   string                 `protobuf:\"bytes,2,opt,name=description,proto3\" json:\"description,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *CelMatcher) Reset() {\n\t*x = CelMatcher{}\n\tmi := &file_xds_type_matcher_v3_cel_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CelMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CelMatcher) ProtoMessage() {}\n\nfunc (x *CelMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_cel_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CelMatcher.ProtoReflect.Descriptor instead.\nfunc (*CelMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_cel_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *CelMatcher) GetExprMatch() *v3.CelExpression {\n\tif x != nil {\n\t\treturn x.ExprMatch\n\t}\n\treturn nil\n}\n\nfunc (x *CelMatcher) GetDescription() string {\n\tif x != nil {\n\t\treturn x.Description\n\t}\n\treturn \"\"\n}\n\nvar File_xds_type_matcher_v3_cel_proto protoreflect.FileDescriptor\n\nconst file_xds_type_matcher_v3_cel_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1dxds/type/matcher/v3/cel.proto\\x12\\x13xds.type.matcher.v3\\x1a\\x15xds/type/v3/cel.proto\\x1a\\x17validate/validate.proto\\\"s\\n\" +\n\t\"\\n\" +\n\t\"CelMatcher\\x12C\\n\" +\n\t\"\\n\" +\n\t\"expr_match\\x18\\x01 \\x01(\\v2\\x1a.xds.type.v3.CelExpressionB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\texprMatch\\x12 \\n\" +\n\t\"\\vdescription\\x18\\x02 \\x01(\\tR\\vdescriptionBX\\n\" +\n\t\"\\x1ecom.github.xds.type.matcher.v3B\\bCelProtoP\\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_type_matcher_v3_cel_proto_rawDescOnce sync.Once\n\tfile_xds_type_matcher_v3_cel_proto_rawDescData []byte\n)\n\nfunc file_xds_type_matcher_v3_cel_proto_rawDescGZIP() []byte {\n\tfile_xds_type_matcher_v3_cel_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_type_matcher_v3_cel_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_cel_proto_rawDesc), len(file_xds_type_matcher_v3_cel_proto_rawDesc)))\n\t})\n\treturn file_xds_type_matcher_v3_cel_proto_rawDescData\n}\n\nvar file_xds_type_matcher_v3_cel_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_xds_type_matcher_v3_cel_proto_goTypes = []any{\n\t(*CelMatcher)(nil),       // 0: xds.type.matcher.v3.CelMatcher\n\t(*v3.CelExpression)(nil), // 1: xds.type.v3.CelExpression\n}\nvar file_xds_type_matcher_v3_cel_proto_depIdxs = []int32{\n\t1, // 0: xds.type.matcher.v3.CelMatcher.expr_match:type_name -> xds.type.v3.CelExpression\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_type_matcher_v3_cel_proto_init() }\nfunc file_xds_type_matcher_v3_cel_proto_init() {\n\tif File_xds_type_matcher_v3_cel_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_cel_proto_rawDesc), len(file_xds_type_matcher_v3_cel_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_type_matcher_v3_cel_proto_goTypes,\n\t\tDependencyIndexes: file_xds_type_matcher_v3_cel_proto_depIdxs,\n\t\tMessageInfos:      file_xds_type_matcher_v3_cel_proto_msgTypes,\n\t}.Build()\n\tFile_xds_type_matcher_v3_cel_proto = out.File\n\tfile_xds_type_matcher_v3_cel_proto_goTypes = nil\n\tfile_xds_type_matcher_v3_cel_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/cel.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/type/matcher/v3/cel.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on CelMatcher with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *CelMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CelMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in CelMatcherMultiError, or\n// nil if none found.\nfunc (m *CelMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CelMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetExprMatch() == nil {\n\t\terr := CelMatcherValidationError{\n\t\t\tfield:  \"ExprMatch\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetExprMatch()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, CelMatcherValidationError{\n\t\t\t\t\tfield:  \"ExprMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, CelMatcherValidationError{\n\t\t\t\t\tfield:  \"ExprMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetExprMatch()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn CelMatcherValidationError{\n\t\t\t\tfield:  \"ExprMatch\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for Description\n\n\tif len(errors) > 0 {\n\t\treturn CelMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CelMatcherMultiError is an error wrapping multiple validation errors\n// returned by CelMatcher.ValidateAll() if the designated constraints aren't met.\ntype CelMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CelMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CelMatcherMultiError) AllErrors() []error { return m }\n\n// CelMatcherValidationError is the validation error returned by\n// CelMatcher.Validate if the designated constraints aren't met.\ntype CelMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CelMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CelMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CelMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CelMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CelMatcherValidationError) ErrorName() string { return \"CelMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e CelMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCelMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CelMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CelMatcherValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/domain.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/type/matcher/v3/domain.proto\n\npackage v3\n\nimport (\n\t_ \"github.com/cncf/xds/go/xds/annotations/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype ServerNameMatcher struct {\n\tstate          protoimpl.MessageState             `protogen:\"open.v1\"`\n\tDomainMatchers []*ServerNameMatcher_DomainMatcher `protobuf:\"bytes,1,rep,name=domain_matchers,json=domainMatchers,proto3\" json:\"domain_matchers,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *ServerNameMatcher) Reset() {\n\t*x = ServerNameMatcher{}\n\tmi := &file_xds_type_matcher_v3_domain_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ServerNameMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ServerNameMatcher) ProtoMessage() {}\n\nfunc (x *ServerNameMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_domain_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ServerNameMatcher.ProtoReflect.Descriptor instead.\nfunc (*ServerNameMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_domain_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ServerNameMatcher) GetDomainMatchers() []*ServerNameMatcher_DomainMatcher {\n\tif x != nil {\n\t\treturn x.DomainMatchers\n\t}\n\treturn nil\n}\n\ntype ServerNameMatcher_DomainMatcher struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tDomains       []string               `protobuf:\"bytes,1,rep,name=domains,proto3\" json:\"domains,omitempty\"`\n\tOnMatch       *Matcher_OnMatch       `protobuf:\"bytes,2,opt,name=on_match,json=onMatch,proto3\" json:\"on_match,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ServerNameMatcher_DomainMatcher) Reset() {\n\t*x = ServerNameMatcher_DomainMatcher{}\n\tmi := &file_xds_type_matcher_v3_domain_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ServerNameMatcher_DomainMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ServerNameMatcher_DomainMatcher) ProtoMessage() {}\n\nfunc (x *ServerNameMatcher_DomainMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_domain_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ServerNameMatcher_DomainMatcher.ProtoReflect.Descriptor instead.\nfunc (*ServerNameMatcher_DomainMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_domain_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *ServerNameMatcher_DomainMatcher) GetDomains() []string {\n\tif x != nil {\n\t\treturn x.Domains\n\t}\n\treturn nil\n}\n\nfunc (x *ServerNameMatcher_DomainMatcher) GetOnMatch() *Matcher_OnMatch {\n\tif x != nil {\n\t\treturn x.OnMatch\n\t}\n\treturn nil\n}\n\nvar File_xds_type_matcher_v3_domain_proto protoreflect.FileDescriptor\n\nconst file_xds_type_matcher_v3_domain_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\" xds/type/matcher/v3/domain.proto\\x12\\x13xds.type.matcher.v3\\x1a\\x1fxds/annotations/v3/status.proto\\x1a!xds/type/matcher/v3/matcher.proto\\x1a\\x17validate/validate.proto\\\"\\xe8\\x01\\n\" +\n\t\"\\x11ServerNameMatcher\\x12]\\n\" +\n\t\"\\x0fdomain_matchers\\x18\\x01 \\x03(\\v24.xds.type.matcher.v3.ServerNameMatcher.DomainMatcherR\\x0edomainMatchers\\x1at\\n\" +\n\t\"\\rDomainMatcher\\x12\\\"\\n\" +\n\t\"\\adomains\\x18\\x01 \\x03(\\tB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\adomains\\x12?\\n\" +\n\t\"\\bon_match\\x18\\x02 \\x01(\\v2$.xds.type.matcher.v3.Matcher.OnMatchR\\aonMatchBn\\xd2Ƥ\\xe1\\x06\\x02\\b\\x01\\n\" +\n\t\"\\x1ecom.github.xds.type.matcher.v3B\\x16ServerNameMatcherProtoP\\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_type_matcher_v3_domain_proto_rawDescOnce sync.Once\n\tfile_xds_type_matcher_v3_domain_proto_rawDescData []byte\n)\n\nfunc file_xds_type_matcher_v3_domain_proto_rawDescGZIP() []byte {\n\tfile_xds_type_matcher_v3_domain_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_type_matcher_v3_domain_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_domain_proto_rawDesc), len(file_xds_type_matcher_v3_domain_proto_rawDesc)))\n\t})\n\treturn file_xds_type_matcher_v3_domain_proto_rawDescData\n}\n\nvar file_xds_type_matcher_v3_domain_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_xds_type_matcher_v3_domain_proto_goTypes = []any{\n\t(*ServerNameMatcher)(nil),               // 0: xds.type.matcher.v3.ServerNameMatcher\n\t(*ServerNameMatcher_DomainMatcher)(nil), // 1: xds.type.matcher.v3.ServerNameMatcher.DomainMatcher\n\t(*Matcher_OnMatch)(nil),                 // 2: xds.type.matcher.v3.Matcher.OnMatch\n}\nvar file_xds_type_matcher_v3_domain_proto_depIdxs = []int32{\n\t1, // 0: xds.type.matcher.v3.ServerNameMatcher.domain_matchers:type_name -> xds.type.matcher.v3.ServerNameMatcher.DomainMatcher\n\t2, // 1: xds.type.matcher.v3.ServerNameMatcher.DomainMatcher.on_match:type_name -> xds.type.matcher.v3.Matcher.OnMatch\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_type_matcher_v3_domain_proto_init() }\nfunc file_xds_type_matcher_v3_domain_proto_init() {\n\tif File_xds_type_matcher_v3_domain_proto != nil {\n\t\treturn\n\t}\n\tfile_xds_type_matcher_v3_matcher_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_domain_proto_rawDesc), len(file_xds_type_matcher_v3_domain_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_type_matcher_v3_domain_proto_goTypes,\n\t\tDependencyIndexes: file_xds_type_matcher_v3_domain_proto_depIdxs,\n\t\tMessageInfos:      file_xds_type_matcher_v3_domain_proto_msgTypes,\n\t}.Build()\n\tFile_xds_type_matcher_v3_domain_proto = out.File\n\tfile_xds_type_matcher_v3_domain_proto_goTypes = nil\n\tfile_xds_type_matcher_v3_domain_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/domain.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/type/matcher/v3/domain.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on ServerNameMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *ServerNameMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ServerNameMatcher with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ServerNameMatcherMultiError, or nil if none found.\nfunc (m *ServerNameMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ServerNameMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetDomainMatchers() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ServerNameMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"DomainMatchers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ServerNameMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"DomainMatchers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ServerNameMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"DomainMatchers[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ServerNameMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ServerNameMatcherMultiError is an error wrapping multiple validation errors\n// returned by ServerNameMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype ServerNameMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ServerNameMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ServerNameMatcherMultiError) AllErrors() []error { return m }\n\n// ServerNameMatcherValidationError is the validation error returned by\n// ServerNameMatcher.Validate if the designated constraints aren't met.\ntype ServerNameMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ServerNameMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ServerNameMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ServerNameMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ServerNameMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ServerNameMatcherValidationError) ErrorName() string {\n\treturn \"ServerNameMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ServerNameMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sServerNameMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ServerNameMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ServerNameMatcherValidationError{}\n\n// Validate checks the field values on ServerNameMatcher_DomainMatcher with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *ServerNameMatcher_DomainMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ServerNameMatcher_DomainMatcher with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// ServerNameMatcher_DomainMatcherMultiError, or nil if none found.\nfunc (m *ServerNameMatcher_DomainMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ServerNameMatcher_DomainMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetDomains()) < 1 {\n\t\terr := ServerNameMatcher_DomainMatcherValidationError{\n\t\t\tfield:  \"Domains\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetOnMatch()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ServerNameMatcher_DomainMatcherValidationError{\n\t\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ServerNameMatcher_DomainMatcherValidationError{\n\t\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetOnMatch()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ServerNameMatcher_DomainMatcherValidationError{\n\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ServerNameMatcher_DomainMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ServerNameMatcher_DomainMatcherMultiError is an error wrapping multiple\n// validation errors returned by ServerNameMatcher_DomainMatcher.ValidateAll()\n// if the designated constraints aren't met.\ntype ServerNameMatcher_DomainMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ServerNameMatcher_DomainMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ServerNameMatcher_DomainMatcherMultiError) AllErrors() []error { return m }\n\n// ServerNameMatcher_DomainMatcherValidationError is the validation error\n// returned by ServerNameMatcher_DomainMatcher.Validate if the designated\n// constraints aren't met.\ntype ServerNameMatcher_DomainMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ServerNameMatcher_DomainMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ServerNameMatcher_DomainMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ServerNameMatcher_DomainMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ServerNameMatcher_DomainMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ServerNameMatcher_DomainMatcherValidationError) ErrorName() string {\n\treturn \"ServerNameMatcher_DomainMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ServerNameMatcher_DomainMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sServerNameMatcher_DomainMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ServerNameMatcher_DomainMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ServerNameMatcher_DomainMatcherValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/http_inputs.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/type/matcher/v3/http_inputs.proto\n\npackage v3\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype HttpAttributesCelMatchInput struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HttpAttributesCelMatchInput) Reset() {\n\t*x = HttpAttributesCelMatchInput{}\n\tmi := &file_xds_type_matcher_v3_http_inputs_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpAttributesCelMatchInput) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpAttributesCelMatchInput) ProtoMessage() {}\n\nfunc (x *HttpAttributesCelMatchInput) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_http_inputs_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpAttributesCelMatchInput.ProtoReflect.Descriptor instead.\nfunc (*HttpAttributesCelMatchInput) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_http_inputs_proto_rawDescGZIP(), []int{0}\n}\n\nvar File_xds_type_matcher_v3_http_inputs_proto protoreflect.FileDescriptor\n\nconst file_xds_type_matcher_v3_http_inputs_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"%xds/type/matcher/v3/http_inputs.proto\\x12\\x13xds.type.matcher.v3\\\"\\x1d\\n\" +\n\t\"\\x1bHttpAttributesCelMatchInputB_\\n\" +\n\t\"\\x1ecom.github.xds.type.matcher.v3B\\x0fHttpInputsProtoP\\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_type_matcher_v3_http_inputs_proto_rawDescOnce sync.Once\n\tfile_xds_type_matcher_v3_http_inputs_proto_rawDescData []byte\n)\n\nfunc file_xds_type_matcher_v3_http_inputs_proto_rawDescGZIP() []byte {\n\tfile_xds_type_matcher_v3_http_inputs_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_type_matcher_v3_http_inputs_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_http_inputs_proto_rawDesc), len(file_xds_type_matcher_v3_http_inputs_proto_rawDesc)))\n\t})\n\treturn file_xds_type_matcher_v3_http_inputs_proto_rawDescData\n}\n\nvar file_xds_type_matcher_v3_http_inputs_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_xds_type_matcher_v3_http_inputs_proto_goTypes = []any{\n\t(*HttpAttributesCelMatchInput)(nil), // 0: xds.type.matcher.v3.HttpAttributesCelMatchInput\n}\nvar file_xds_type_matcher_v3_http_inputs_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_type_matcher_v3_http_inputs_proto_init() }\nfunc file_xds_type_matcher_v3_http_inputs_proto_init() {\n\tif File_xds_type_matcher_v3_http_inputs_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_http_inputs_proto_rawDesc), len(file_xds_type_matcher_v3_http_inputs_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_type_matcher_v3_http_inputs_proto_goTypes,\n\t\tDependencyIndexes: file_xds_type_matcher_v3_http_inputs_proto_depIdxs,\n\t\tMessageInfos:      file_xds_type_matcher_v3_http_inputs_proto_msgTypes,\n\t}.Build()\n\tFile_xds_type_matcher_v3_http_inputs_proto = out.File\n\tfile_xds_type_matcher_v3_http_inputs_proto_goTypes = nil\n\tfile_xds_type_matcher_v3_http_inputs_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/http_inputs.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/type/matcher/v3/http_inputs.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on HttpAttributesCelMatchInput with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HttpAttributesCelMatchInput) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpAttributesCelMatchInput with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HttpAttributesCelMatchInputMultiError, or nil if none found.\nfunc (m *HttpAttributesCelMatchInput) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpAttributesCelMatchInput) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn HttpAttributesCelMatchInputMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpAttributesCelMatchInputMultiError is an error wrapping multiple\n// validation errors returned by HttpAttributesCelMatchInput.ValidateAll() if\n// the designated constraints aren't met.\ntype HttpAttributesCelMatchInputMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpAttributesCelMatchInputMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpAttributesCelMatchInputMultiError) AllErrors() []error { return m }\n\n// HttpAttributesCelMatchInputValidationError is the validation error returned\n// by HttpAttributesCelMatchInput.Validate if the designated constraints\n// aren't met.\ntype HttpAttributesCelMatchInputValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpAttributesCelMatchInputValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpAttributesCelMatchInputValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpAttributesCelMatchInputValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpAttributesCelMatchInputValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpAttributesCelMatchInputValidationError) ErrorName() string {\n\treturn \"HttpAttributesCelMatchInputValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HttpAttributesCelMatchInputValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpAttributesCelMatchInput.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpAttributesCelMatchInputValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpAttributesCelMatchInputValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/ip.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/type/matcher/v3/ip.proto\n\npackage v3\n\nimport (\n\t_ \"github.com/cncf/xds/go/xds/annotations/v3\"\n\tv3 \"github.com/cncf/xds/go/xds/core/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype IPMatcher struct {\n\tstate         protoimpl.MessageState      `protogen:\"open.v1\"`\n\tRangeMatchers []*IPMatcher_IPRangeMatcher `protobuf:\"bytes,1,rep,name=range_matchers,json=rangeMatchers,proto3\" json:\"range_matchers,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *IPMatcher) Reset() {\n\t*x = IPMatcher{}\n\tmi := &file_xds_type_matcher_v3_ip_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *IPMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*IPMatcher) ProtoMessage() {}\n\nfunc (x *IPMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_ip_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use IPMatcher.ProtoReflect.Descriptor instead.\nfunc (*IPMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_ip_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *IPMatcher) GetRangeMatchers() []*IPMatcher_IPRangeMatcher {\n\tif x != nil {\n\t\treturn x.RangeMatchers\n\t}\n\treturn nil\n}\n\ntype IPMatcher_IPRangeMatcher struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tRanges        []*v3.CidrRange        `protobuf:\"bytes,1,rep,name=ranges,proto3\" json:\"ranges,omitempty\"`\n\tOnMatch       *Matcher_OnMatch       `protobuf:\"bytes,2,opt,name=on_match,json=onMatch,proto3\" json:\"on_match,omitempty\"`\n\tExclusive     bool                   `protobuf:\"varint,3,opt,name=exclusive,proto3\" json:\"exclusive,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *IPMatcher_IPRangeMatcher) Reset() {\n\t*x = IPMatcher_IPRangeMatcher{}\n\tmi := &file_xds_type_matcher_v3_ip_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *IPMatcher_IPRangeMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*IPMatcher_IPRangeMatcher) ProtoMessage() {}\n\nfunc (x *IPMatcher_IPRangeMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_ip_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use IPMatcher_IPRangeMatcher.ProtoReflect.Descriptor instead.\nfunc (*IPMatcher_IPRangeMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_ip_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *IPMatcher_IPRangeMatcher) GetRanges() []*v3.CidrRange {\n\tif x != nil {\n\t\treturn x.Ranges\n\t}\n\treturn nil\n}\n\nfunc (x *IPMatcher_IPRangeMatcher) GetOnMatch() *Matcher_OnMatch {\n\tif x != nil {\n\t\treturn x.OnMatch\n\t}\n\treturn nil\n}\n\nfunc (x *IPMatcher_IPRangeMatcher) GetExclusive() bool {\n\tif x != nil {\n\t\treturn x.Exclusive\n\t}\n\treturn false\n}\n\nvar File_xds_type_matcher_v3_ip_proto protoreflect.FileDescriptor\n\nconst file_xds_type_matcher_v3_ip_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1cxds/type/matcher/v3/ip.proto\\x12\\x13xds.type.matcher.v3\\x1a\\x1fxds/annotations/v3/status.proto\\x1a\\x16xds/core/v3/cidr.proto\\x1a!xds/type/matcher/v3/matcher.proto\\x1a\\x17validate/validate.proto\\\"\\x8d\\x02\\n\" +\n\t\"\\tIPMatcher\\x12T\\n\" +\n\t\"\\x0erange_matchers\\x18\\x01 \\x03(\\v2-.xds.type.matcher.v3.IPMatcher.IPRangeMatcherR\\rrangeMatchers\\x1a\\xa9\\x01\\n\" +\n\t\"\\x0eIPRangeMatcher\\x128\\n\" +\n\t\"\\x06ranges\\x18\\x01 \\x03(\\v2\\x16.xds.core.v3.CidrRangeB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\x06ranges\\x12?\\n\" +\n\t\"\\bon_match\\x18\\x02 \\x01(\\v2$.xds.type.matcher.v3.Matcher.OnMatchR\\aonMatch\\x12\\x1c\\n\" +\n\t\"\\texclusive\\x18\\x03 \\x01(\\bR\\texclusiveBf\\xd2Ƥ\\xe1\\x06\\x02\\b\\x01\\n\" +\n\t\"\\x1ecom.github.xds.type.matcher.v3B\\x0eIPMatcherProtoP\\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_type_matcher_v3_ip_proto_rawDescOnce sync.Once\n\tfile_xds_type_matcher_v3_ip_proto_rawDescData []byte\n)\n\nfunc file_xds_type_matcher_v3_ip_proto_rawDescGZIP() []byte {\n\tfile_xds_type_matcher_v3_ip_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_type_matcher_v3_ip_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_ip_proto_rawDesc), len(file_xds_type_matcher_v3_ip_proto_rawDesc)))\n\t})\n\treturn file_xds_type_matcher_v3_ip_proto_rawDescData\n}\n\nvar file_xds_type_matcher_v3_ip_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_xds_type_matcher_v3_ip_proto_goTypes = []any{\n\t(*IPMatcher)(nil),                // 0: xds.type.matcher.v3.IPMatcher\n\t(*IPMatcher_IPRangeMatcher)(nil), // 1: xds.type.matcher.v3.IPMatcher.IPRangeMatcher\n\t(*v3.CidrRange)(nil),             // 2: xds.core.v3.CidrRange\n\t(*Matcher_OnMatch)(nil),          // 3: xds.type.matcher.v3.Matcher.OnMatch\n}\nvar file_xds_type_matcher_v3_ip_proto_depIdxs = []int32{\n\t1, // 0: xds.type.matcher.v3.IPMatcher.range_matchers:type_name -> xds.type.matcher.v3.IPMatcher.IPRangeMatcher\n\t2, // 1: xds.type.matcher.v3.IPMatcher.IPRangeMatcher.ranges:type_name -> xds.core.v3.CidrRange\n\t3, // 2: xds.type.matcher.v3.IPMatcher.IPRangeMatcher.on_match:type_name -> xds.type.matcher.v3.Matcher.OnMatch\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t3, // [3:3] is the sub-list for extension type_name\n\t3, // [3:3] is the sub-list for extension extendee\n\t0, // [0:3] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_type_matcher_v3_ip_proto_init() }\nfunc file_xds_type_matcher_v3_ip_proto_init() {\n\tif File_xds_type_matcher_v3_ip_proto != nil {\n\t\treturn\n\t}\n\tfile_xds_type_matcher_v3_matcher_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_ip_proto_rawDesc), len(file_xds_type_matcher_v3_ip_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_type_matcher_v3_ip_proto_goTypes,\n\t\tDependencyIndexes: file_xds_type_matcher_v3_ip_proto_depIdxs,\n\t\tMessageInfos:      file_xds_type_matcher_v3_ip_proto_msgTypes,\n\t}.Build()\n\tFile_xds_type_matcher_v3_ip_proto = out.File\n\tfile_xds_type_matcher_v3_ip_proto_goTypes = nil\n\tfile_xds_type_matcher_v3_ip_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/ip.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/type/matcher/v3/ip.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on IPMatcher with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *IPMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on IPMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in IPMatcherMultiError, or nil\n// if none found.\nfunc (m *IPMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *IPMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetRangeMatchers() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, IPMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RangeMatchers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, IPMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RangeMatchers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn IPMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RangeMatchers[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn IPMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// IPMatcherMultiError is an error wrapping multiple validation errors returned\n// by IPMatcher.ValidateAll() if the designated constraints aren't met.\ntype IPMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m IPMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m IPMatcherMultiError) AllErrors() []error { return m }\n\n// IPMatcherValidationError is the validation error returned by\n// IPMatcher.Validate if the designated constraints aren't met.\ntype IPMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e IPMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e IPMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e IPMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e IPMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e IPMatcherValidationError) ErrorName() string { return \"IPMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e IPMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sIPMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = IPMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = IPMatcherValidationError{}\n\n// Validate checks the field values on IPMatcher_IPRangeMatcher with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *IPMatcher_IPRangeMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on IPMatcher_IPRangeMatcher with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// IPMatcher_IPRangeMatcherMultiError, or nil if none found.\nfunc (m *IPMatcher_IPRangeMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *IPMatcher_IPRangeMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetRanges()) < 1 {\n\t\terr := IPMatcher_IPRangeMatcherValidationError{\n\t\t\tfield:  \"Ranges\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetRanges() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, IPMatcher_IPRangeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, IPMatcher_IPRangeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn IPMatcher_IPRangeMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetOnMatch()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, IPMatcher_IPRangeMatcherValidationError{\n\t\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, IPMatcher_IPRangeMatcherValidationError{\n\t\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetOnMatch()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn IPMatcher_IPRangeMatcherValidationError{\n\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for Exclusive\n\n\tif len(errors) > 0 {\n\t\treturn IPMatcher_IPRangeMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// IPMatcher_IPRangeMatcherMultiError is an error wrapping multiple validation\n// errors returned by IPMatcher_IPRangeMatcher.ValidateAll() if the designated\n// constraints aren't met.\ntype IPMatcher_IPRangeMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m IPMatcher_IPRangeMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m IPMatcher_IPRangeMatcherMultiError) AllErrors() []error { return m }\n\n// IPMatcher_IPRangeMatcherValidationError is the validation error returned by\n// IPMatcher_IPRangeMatcher.Validate if the designated constraints aren't met.\ntype IPMatcher_IPRangeMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e IPMatcher_IPRangeMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e IPMatcher_IPRangeMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e IPMatcher_IPRangeMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e IPMatcher_IPRangeMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e IPMatcher_IPRangeMatcherValidationError) ErrorName() string {\n\treturn \"IPMatcher_IPRangeMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e IPMatcher_IPRangeMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sIPMatcher_IPRangeMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = IPMatcher_IPRangeMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = IPMatcher_IPRangeMatcherValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/matcher.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/type/matcher/v3/matcher.proto\n\npackage v3\n\nimport (\n\tv3 \"github.com/cncf/xds/go/xds/core/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype Matcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to MatcherType:\n\t//\n\t//\t*Matcher_MatcherList_\n\t//\t*Matcher_MatcherTree_\n\tMatcherType   isMatcher_MatcherType `protobuf_oneof:\"matcher_type\"`\n\tOnNoMatch     *Matcher_OnMatch      `protobuf:\"bytes,3,opt,name=on_no_match,json=onNoMatch,proto3\" json:\"on_no_match,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Matcher) Reset() {\n\t*x = Matcher{}\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Matcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Matcher) ProtoMessage() {}\n\nfunc (x *Matcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Matcher.ProtoReflect.Descriptor instead.\nfunc (*Matcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_matcher_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Matcher) GetMatcherType() isMatcher_MatcherType {\n\tif x != nil {\n\t\treturn x.MatcherType\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher) GetMatcherList() *Matcher_MatcherList {\n\tif x != nil {\n\t\tif x, ok := x.MatcherType.(*Matcher_MatcherList_); ok {\n\t\t\treturn x.MatcherList\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher) GetMatcherTree() *Matcher_MatcherTree {\n\tif x != nil {\n\t\tif x, ok := x.MatcherType.(*Matcher_MatcherTree_); ok {\n\t\t\treturn x.MatcherTree\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher) GetOnNoMatch() *Matcher_OnMatch {\n\tif x != nil {\n\t\treturn x.OnNoMatch\n\t}\n\treturn nil\n}\n\ntype isMatcher_MatcherType interface {\n\tisMatcher_MatcherType()\n}\n\ntype Matcher_MatcherList_ struct {\n\tMatcherList *Matcher_MatcherList `protobuf:\"bytes,1,opt,name=matcher_list,json=matcherList,proto3,oneof\"`\n}\n\ntype Matcher_MatcherTree_ struct {\n\tMatcherTree *Matcher_MatcherTree `protobuf:\"bytes,2,opt,name=matcher_tree,json=matcherTree,proto3,oneof\"`\n}\n\nfunc (*Matcher_MatcherList_) isMatcher_MatcherType() {}\n\nfunc (*Matcher_MatcherTree_) isMatcher_MatcherType() {}\n\ntype Matcher_OnMatch struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to OnMatch:\n\t//\n\t//\t*Matcher_OnMatch_Matcher\n\t//\t*Matcher_OnMatch_Action\n\tOnMatch       isMatcher_OnMatch_OnMatch `protobuf_oneof:\"on_match\"`\n\tKeepMatching  bool                      `protobuf:\"varint,3,opt,name=keep_matching,json=keepMatching,proto3\" json:\"keep_matching,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Matcher_OnMatch) Reset() {\n\t*x = Matcher_OnMatch{}\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Matcher_OnMatch) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Matcher_OnMatch) ProtoMessage() {}\n\nfunc (x *Matcher_OnMatch) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Matcher_OnMatch.ProtoReflect.Descriptor instead.\nfunc (*Matcher_OnMatch) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_matcher_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *Matcher_OnMatch) GetOnMatch() isMatcher_OnMatch_OnMatch {\n\tif x != nil {\n\t\treturn x.OnMatch\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_OnMatch) GetMatcher() *Matcher {\n\tif x != nil {\n\t\tif x, ok := x.OnMatch.(*Matcher_OnMatch_Matcher); ok {\n\t\t\treturn x.Matcher\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_OnMatch) GetAction() *v3.TypedExtensionConfig {\n\tif x != nil {\n\t\tif x, ok := x.OnMatch.(*Matcher_OnMatch_Action); ok {\n\t\t\treturn x.Action\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_OnMatch) GetKeepMatching() bool {\n\tif x != nil {\n\t\treturn x.KeepMatching\n\t}\n\treturn false\n}\n\ntype isMatcher_OnMatch_OnMatch interface {\n\tisMatcher_OnMatch_OnMatch()\n}\n\ntype Matcher_OnMatch_Matcher struct {\n\tMatcher *Matcher `protobuf:\"bytes,1,opt,name=matcher,proto3,oneof\"`\n}\n\ntype Matcher_OnMatch_Action struct {\n\tAction *v3.TypedExtensionConfig `protobuf:\"bytes,2,opt,name=action,proto3,oneof\"`\n}\n\nfunc (*Matcher_OnMatch_Matcher) isMatcher_OnMatch_OnMatch() {}\n\nfunc (*Matcher_OnMatch_Action) isMatcher_OnMatch_OnMatch() {}\n\ntype Matcher_MatcherList struct {\n\tstate         protoimpl.MessageState              `protogen:\"open.v1\"`\n\tMatchers      []*Matcher_MatcherList_FieldMatcher `protobuf:\"bytes,1,rep,name=matchers,proto3\" json:\"matchers,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Matcher_MatcherList) Reset() {\n\t*x = Matcher_MatcherList{}\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Matcher_MatcherList) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Matcher_MatcherList) ProtoMessage() {}\n\nfunc (x *Matcher_MatcherList) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Matcher_MatcherList.ProtoReflect.Descriptor instead.\nfunc (*Matcher_MatcherList) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_matcher_proto_rawDescGZIP(), []int{0, 1}\n}\n\nfunc (x *Matcher_MatcherList) GetMatchers() []*Matcher_MatcherList_FieldMatcher {\n\tif x != nil {\n\t\treturn x.Matchers\n\t}\n\treturn nil\n}\n\ntype Matcher_MatcherTree struct {\n\tstate protoimpl.MessageState   `protogen:\"open.v1\"`\n\tInput *v3.TypedExtensionConfig `protobuf:\"bytes,1,opt,name=input,proto3\" json:\"input,omitempty\"`\n\t// Types that are valid to be assigned to TreeType:\n\t//\n\t//\t*Matcher_MatcherTree_ExactMatchMap\n\t//\t*Matcher_MatcherTree_PrefixMatchMap\n\t//\t*Matcher_MatcherTree_CustomMatch\n\tTreeType      isMatcher_MatcherTree_TreeType `protobuf_oneof:\"tree_type\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Matcher_MatcherTree) Reset() {\n\t*x = Matcher_MatcherTree{}\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Matcher_MatcherTree) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Matcher_MatcherTree) ProtoMessage() {}\n\nfunc (x *Matcher_MatcherTree) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Matcher_MatcherTree.ProtoReflect.Descriptor instead.\nfunc (*Matcher_MatcherTree) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_matcher_proto_rawDescGZIP(), []int{0, 2}\n}\n\nfunc (x *Matcher_MatcherTree) GetInput() *v3.TypedExtensionConfig {\n\tif x != nil {\n\t\treturn x.Input\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_MatcherTree) GetTreeType() isMatcher_MatcherTree_TreeType {\n\tif x != nil {\n\t\treturn x.TreeType\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_MatcherTree) GetExactMatchMap() *Matcher_MatcherTree_MatchMap {\n\tif x != nil {\n\t\tif x, ok := x.TreeType.(*Matcher_MatcherTree_ExactMatchMap); ok {\n\t\t\treturn x.ExactMatchMap\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_MatcherTree) GetPrefixMatchMap() *Matcher_MatcherTree_MatchMap {\n\tif x != nil {\n\t\tif x, ok := x.TreeType.(*Matcher_MatcherTree_PrefixMatchMap); ok {\n\t\t\treturn x.PrefixMatchMap\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_MatcherTree) GetCustomMatch() *v3.TypedExtensionConfig {\n\tif x != nil {\n\t\tif x, ok := x.TreeType.(*Matcher_MatcherTree_CustomMatch); ok {\n\t\t\treturn x.CustomMatch\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isMatcher_MatcherTree_TreeType interface {\n\tisMatcher_MatcherTree_TreeType()\n}\n\ntype Matcher_MatcherTree_ExactMatchMap struct {\n\tExactMatchMap *Matcher_MatcherTree_MatchMap `protobuf:\"bytes,2,opt,name=exact_match_map,json=exactMatchMap,proto3,oneof\"`\n}\n\ntype Matcher_MatcherTree_PrefixMatchMap struct {\n\tPrefixMatchMap *Matcher_MatcherTree_MatchMap `protobuf:\"bytes,3,opt,name=prefix_match_map,json=prefixMatchMap,proto3,oneof\"`\n}\n\ntype Matcher_MatcherTree_CustomMatch struct {\n\tCustomMatch *v3.TypedExtensionConfig `protobuf:\"bytes,4,opt,name=custom_match,json=customMatch,proto3,oneof\"`\n}\n\nfunc (*Matcher_MatcherTree_ExactMatchMap) isMatcher_MatcherTree_TreeType() {}\n\nfunc (*Matcher_MatcherTree_PrefixMatchMap) isMatcher_MatcherTree_TreeType() {}\n\nfunc (*Matcher_MatcherTree_CustomMatch) isMatcher_MatcherTree_TreeType() {}\n\ntype Matcher_MatcherList_Predicate struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to MatchType:\n\t//\n\t//\t*Matcher_MatcherList_Predicate_SinglePredicate_\n\t//\t*Matcher_MatcherList_Predicate_OrMatcher\n\t//\t*Matcher_MatcherList_Predicate_AndMatcher\n\t//\t*Matcher_MatcherList_Predicate_NotMatcher\n\tMatchType     isMatcher_MatcherList_Predicate_MatchType `protobuf_oneof:\"match_type\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Matcher_MatcherList_Predicate) Reset() {\n\t*x = Matcher_MatcherList_Predicate{}\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Matcher_MatcherList_Predicate) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Matcher_MatcherList_Predicate) ProtoMessage() {}\n\nfunc (x *Matcher_MatcherList_Predicate) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Matcher_MatcherList_Predicate.ProtoReflect.Descriptor instead.\nfunc (*Matcher_MatcherList_Predicate) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_matcher_proto_rawDescGZIP(), []int{0, 1, 0}\n}\n\nfunc (x *Matcher_MatcherList_Predicate) GetMatchType() isMatcher_MatcherList_Predicate_MatchType {\n\tif x != nil {\n\t\treturn x.MatchType\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_MatcherList_Predicate) GetSinglePredicate() *Matcher_MatcherList_Predicate_SinglePredicate {\n\tif x != nil {\n\t\tif x, ok := x.MatchType.(*Matcher_MatcherList_Predicate_SinglePredicate_); ok {\n\t\t\treturn x.SinglePredicate\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_MatcherList_Predicate) GetOrMatcher() *Matcher_MatcherList_Predicate_PredicateList {\n\tif x != nil {\n\t\tif x, ok := x.MatchType.(*Matcher_MatcherList_Predicate_OrMatcher); ok {\n\t\t\treturn x.OrMatcher\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_MatcherList_Predicate) GetAndMatcher() *Matcher_MatcherList_Predicate_PredicateList {\n\tif x != nil {\n\t\tif x, ok := x.MatchType.(*Matcher_MatcherList_Predicate_AndMatcher); ok {\n\t\t\treturn x.AndMatcher\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_MatcherList_Predicate) GetNotMatcher() *Matcher_MatcherList_Predicate {\n\tif x != nil {\n\t\tif x, ok := x.MatchType.(*Matcher_MatcherList_Predicate_NotMatcher); ok {\n\t\t\treturn x.NotMatcher\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isMatcher_MatcherList_Predicate_MatchType interface {\n\tisMatcher_MatcherList_Predicate_MatchType()\n}\n\ntype Matcher_MatcherList_Predicate_SinglePredicate_ struct {\n\tSinglePredicate *Matcher_MatcherList_Predicate_SinglePredicate `protobuf:\"bytes,1,opt,name=single_predicate,json=singlePredicate,proto3,oneof\"`\n}\n\ntype Matcher_MatcherList_Predicate_OrMatcher struct {\n\tOrMatcher *Matcher_MatcherList_Predicate_PredicateList `protobuf:\"bytes,2,opt,name=or_matcher,json=orMatcher,proto3,oneof\"`\n}\n\ntype Matcher_MatcherList_Predicate_AndMatcher struct {\n\tAndMatcher *Matcher_MatcherList_Predicate_PredicateList `protobuf:\"bytes,3,opt,name=and_matcher,json=andMatcher,proto3,oneof\"`\n}\n\ntype Matcher_MatcherList_Predicate_NotMatcher struct {\n\tNotMatcher *Matcher_MatcherList_Predicate `protobuf:\"bytes,4,opt,name=not_matcher,json=notMatcher,proto3,oneof\"`\n}\n\nfunc (*Matcher_MatcherList_Predicate_SinglePredicate_) isMatcher_MatcherList_Predicate_MatchType() {}\n\nfunc (*Matcher_MatcherList_Predicate_OrMatcher) isMatcher_MatcherList_Predicate_MatchType() {}\n\nfunc (*Matcher_MatcherList_Predicate_AndMatcher) isMatcher_MatcherList_Predicate_MatchType() {}\n\nfunc (*Matcher_MatcherList_Predicate_NotMatcher) isMatcher_MatcherList_Predicate_MatchType() {}\n\ntype Matcher_MatcherList_FieldMatcher struct {\n\tstate         protoimpl.MessageState         `protogen:\"open.v1\"`\n\tPredicate     *Matcher_MatcherList_Predicate `protobuf:\"bytes,1,opt,name=predicate,proto3\" json:\"predicate,omitempty\"`\n\tOnMatch       *Matcher_OnMatch               `protobuf:\"bytes,2,opt,name=on_match,json=onMatch,proto3\" json:\"on_match,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Matcher_MatcherList_FieldMatcher) Reset() {\n\t*x = Matcher_MatcherList_FieldMatcher{}\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Matcher_MatcherList_FieldMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Matcher_MatcherList_FieldMatcher) ProtoMessage() {}\n\nfunc (x *Matcher_MatcherList_FieldMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Matcher_MatcherList_FieldMatcher.ProtoReflect.Descriptor instead.\nfunc (*Matcher_MatcherList_FieldMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_matcher_proto_rawDescGZIP(), []int{0, 1, 1}\n}\n\nfunc (x *Matcher_MatcherList_FieldMatcher) GetPredicate() *Matcher_MatcherList_Predicate {\n\tif x != nil {\n\t\treturn x.Predicate\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_MatcherList_FieldMatcher) GetOnMatch() *Matcher_OnMatch {\n\tif x != nil {\n\t\treturn x.OnMatch\n\t}\n\treturn nil\n}\n\ntype Matcher_MatcherList_Predicate_SinglePredicate struct {\n\tstate protoimpl.MessageState   `protogen:\"open.v1\"`\n\tInput *v3.TypedExtensionConfig `protobuf:\"bytes,1,opt,name=input,proto3\" json:\"input,omitempty\"`\n\t// Types that are valid to be assigned to Matcher:\n\t//\n\t//\t*Matcher_MatcherList_Predicate_SinglePredicate_ValueMatch\n\t//\t*Matcher_MatcherList_Predicate_SinglePredicate_CustomMatch\n\tMatcher       isMatcher_MatcherList_Predicate_SinglePredicate_Matcher `protobuf_oneof:\"matcher\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Matcher_MatcherList_Predicate_SinglePredicate) Reset() {\n\t*x = Matcher_MatcherList_Predicate_SinglePredicate{}\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Matcher_MatcherList_Predicate_SinglePredicate) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Matcher_MatcherList_Predicate_SinglePredicate) ProtoMessage() {}\n\nfunc (x *Matcher_MatcherList_Predicate_SinglePredicate) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Matcher_MatcherList_Predicate_SinglePredicate.ProtoReflect.Descriptor instead.\nfunc (*Matcher_MatcherList_Predicate_SinglePredicate) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_matcher_proto_rawDescGZIP(), []int{0, 1, 0, 0}\n}\n\nfunc (x *Matcher_MatcherList_Predicate_SinglePredicate) GetInput() *v3.TypedExtensionConfig {\n\tif x != nil {\n\t\treturn x.Input\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_MatcherList_Predicate_SinglePredicate) GetMatcher() isMatcher_MatcherList_Predicate_SinglePredicate_Matcher {\n\tif x != nil {\n\t\treturn x.Matcher\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_MatcherList_Predicate_SinglePredicate) GetValueMatch() *StringMatcher {\n\tif x != nil {\n\t\tif x, ok := x.Matcher.(*Matcher_MatcherList_Predicate_SinglePredicate_ValueMatch); ok {\n\t\t\treturn x.ValueMatch\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Matcher_MatcherList_Predicate_SinglePredicate) GetCustomMatch() *v3.TypedExtensionConfig {\n\tif x != nil {\n\t\tif x, ok := x.Matcher.(*Matcher_MatcherList_Predicate_SinglePredicate_CustomMatch); ok {\n\t\t\treturn x.CustomMatch\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isMatcher_MatcherList_Predicate_SinglePredicate_Matcher interface {\n\tisMatcher_MatcherList_Predicate_SinglePredicate_Matcher()\n}\n\ntype Matcher_MatcherList_Predicate_SinglePredicate_ValueMatch struct {\n\tValueMatch *StringMatcher `protobuf:\"bytes,2,opt,name=value_match,json=valueMatch,proto3,oneof\"`\n}\n\ntype Matcher_MatcherList_Predicate_SinglePredicate_CustomMatch struct {\n\tCustomMatch *v3.TypedExtensionConfig `protobuf:\"bytes,3,opt,name=custom_match,json=customMatch,proto3,oneof\"`\n}\n\nfunc (*Matcher_MatcherList_Predicate_SinglePredicate_ValueMatch) isMatcher_MatcherList_Predicate_SinglePredicate_Matcher() {\n}\n\nfunc (*Matcher_MatcherList_Predicate_SinglePredicate_CustomMatch) isMatcher_MatcherList_Predicate_SinglePredicate_Matcher() {\n}\n\ntype Matcher_MatcherList_Predicate_PredicateList struct {\n\tstate         protoimpl.MessageState           `protogen:\"open.v1\"`\n\tPredicate     []*Matcher_MatcherList_Predicate `protobuf:\"bytes,1,rep,name=predicate,proto3\" json:\"predicate,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Matcher_MatcherList_Predicate_PredicateList) Reset() {\n\t*x = Matcher_MatcherList_Predicate_PredicateList{}\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Matcher_MatcherList_Predicate_PredicateList) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Matcher_MatcherList_Predicate_PredicateList) ProtoMessage() {}\n\nfunc (x *Matcher_MatcherList_Predicate_PredicateList) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Matcher_MatcherList_Predicate_PredicateList.ProtoReflect.Descriptor instead.\nfunc (*Matcher_MatcherList_Predicate_PredicateList) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_matcher_proto_rawDescGZIP(), []int{0, 1, 0, 1}\n}\n\nfunc (x *Matcher_MatcherList_Predicate_PredicateList) GetPredicate() []*Matcher_MatcherList_Predicate {\n\tif x != nil {\n\t\treturn x.Predicate\n\t}\n\treturn nil\n}\n\ntype Matcher_MatcherTree_MatchMap struct {\n\tstate         protoimpl.MessageState      `protogen:\"open.v1\"`\n\tMap           map[string]*Matcher_OnMatch `protobuf:\"bytes,1,rep,name=map,proto3\" json:\"map,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Matcher_MatcherTree_MatchMap) Reset() {\n\t*x = Matcher_MatcherTree_MatchMap{}\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[8]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Matcher_MatcherTree_MatchMap) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Matcher_MatcherTree_MatchMap) ProtoMessage() {}\n\nfunc (x *Matcher_MatcherTree_MatchMap) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_matcher_proto_msgTypes[8]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Matcher_MatcherTree_MatchMap.ProtoReflect.Descriptor instead.\nfunc (*Matcher_MatcherTree_MatchMap) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_matcher_proto_rawDescGZIP(), []int{0, 2, 0}\n}\n\nfunc (x *Matcher_MatcherTree_MatchMap) GetMap() map[string]*Matcher_OnMatch {\n\tif x != nil {\n\t\treturn x.Map\n\t}\n\treturn nil\n}\n\nvar File_xds_type_matcher_v3_matcher_proto protoreflect.FileDescriptor\n\nconst file_xds_type_matcher_v3_matcher_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"!xds/type/matcher/v3/matcher.proto\\x12\\x13xds.type.matcher.v3\\x1a\\x1bxds/core/v3/extension.proto\\x1a xds/type/matcher/v3/string.proto\\x1a\\x17validate/validate.proto\\\"\\x9b\\x10\\n\" +\n\t\"\\aMatcher\\x12M\\n\" +\n\t\"\\fmatcher_list\\x18\\x01 \\x01(\\v2(.xds.type.matcher.v3.Matcher.MatcherListH\\x00R\\vmatcherList\\x12M\\n\" +\n\t\"\\fmatcher_tree\\x18\\x02 \\x01(\\v2(.xds.type.matcher.v3.Matcher.MatcherTreeH\\x00R\\vmatcherTree\\x12D\\n\" +\n\t\"\\von_no_match\\x18\\x03 \\x01(\\v2$.xds.type.matcher.v3.Matcher.OnMatchR\\tonNoMatch\\x1a\\xb6\\x01\\n\" +\n\t\"\\aOnMatch\\x128\\n\" +\n\t\"\\amatcher\\x18\\x01 \\x01(\\v2\\x1c.xds.type.matcher.v3.MatcherH\\x00R\\amatcher\\x12;\\n\" +\n\t\"\\x06action\\x18\\x02 \\x01(\\v2!.xds.core.v3.TypedExtensionConfigH\\x00R\\x06action\\x12#\\n\" +\n\t\"\\rkeep_matching\\x18\\x03 \\x01(\\bR\\fkeepMatchingB\\x0f\\n\" +\n\t\"\\bon_match\\x12\\x03\\xf8B\\x01\\x1a\\xb6\\b\\n\" +\n\t\"\\vMatcherList\\x12[\\n\" +\n\t\"\\bmatchers\\x18\\x01 \\x03(\\v25.xds.type.matcher.v3.Matcher.MatcherList.FieldMatcherB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\bmatchers\\x1a\\x91\\x06\\n\" +\n\t\"\\tPredicate\\x12o\\n\" +\n\t\"\\x10single_predicate\\x18\\x01 \\x01(\\v2B.xds.type.matcher.v3.Matcher.MatcherList.Predicate.SinglePredicateH\\x00R\\x0fsinglePredicate\\x12a\\n\" +\n\t\"\\n\" +\n\t\"or_matcher\\x18\\x02 \\x01(\\v2@.xds.type.matcher.v3.Matcher.MatcherList.Predicate.PredicateListH\\x00R\\torMatcher\\x12c\\n\" +\n\t\"\\vand_matcher\\x18\\x03 \\x01(\\v2@.xds.type.matcher.v3.Matcher.MatcherList.Predicate.PredicateListH\\x00R\\n\" +\n\t\"andMatcher\\x12U\\n\" +\n\t\"\\vnot_matcher\\x18\\x04 \\x01(\\v22.xds.type.matcher.v3.Matcher.MatcherList.PredicateH\\x00R\\n\" +\n\t\"notMatcher\\x1a\\xf3\\x01\\n\" +\n\t\"\\x0fSinglePredicate\\x12A\\n\" +\n\t\"\\x05input\\x18\\x01 \\x01(\\v2!.xds.core.v3.TypedExtensionConfigB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\x05input\\x12E\\n\" +\n\t\"\\vvalue_match\\x18\\x02 \\x01(\\v2\\\".xds.type.matcher.v3.StringMatcherH\\x00R\\n\" +\n\t\"valueMatch\\x12F\\n\" +\n\t\"\\fcustom_match\\x18\\x03 \\x01(\\v2!.xds.core.v3.TypedExtensionConfigH\\x00R\\vcustomMatchB\\x0e\\n\" +\n\t\"\\amatcher\\x12\\x03\\xf8B\\x01\\x1ak\\n\" +\n\t\"\\rPredicateList\\x12Z\\n\" +\n\t\"\\tpredicate\\x18\\x01 \\x03(\\v22.xds.type.matcher.v3.Matcher.MatcherList.PredicateB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x02R\\tpredicateB\\x11\\n\" +\n\t\"\\n\" +\n\t\"match_type\\x12\\x03\\xf8B\\x01\\x1a\\xb5\\x01\\n\" +\n\t\"\\fFieldMatcher\\x12Z\\n\" +\n\t\"\\tpredicate\\x18\\x01 \\x01(\\v22.xds.type.matcher.v3.Matcher.MatcherList.PredicateB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\tpredicate\\x12I\\n\" +\n\t\"\\bon_match\\x18\\x02 \\x01(\\v2$.xds.type.matcher.v3.Matcher.OnMatchB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\aonMatch\\x1a\\xa9\\x04\\n\" +\n\t\"\\vMatcherTree\\x12A\\n\" +\n\t\"\\x05input\\x18\\x01 \\x01(\\v2!.xds.core.v3.TypedExtensionConfigB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\x05input\\x12[\\n\" +\n\t\"\\x0fexact_match_map\\x18\\x02 \\x01(\\v21.xds.type.matcher.v3.Matcher.MatcherTree.MatchMapH\\x00R\\rexactMatchMap\\x12]\\n\" +\n\t\"\\x10prefix_match_map\\x18\\x03 \\x01(\\v21.xds.type.matcher.v3.Matcher.MatcherTree.MatchMapH\\x00R\\x0eprefixMatchMap\\x12F\\n\" +\n\t\"\\fcustom_match\\x18\\x04 \\x01(\\v2!.xds.core.v3.TypedExtensionConfigH\\x00R\\vcustomMatch\\x1a\\xc0\\x01\\n\" +\n\t\"\\bMatchMap\\x12V\\n\" +\n\t\"\\x03map\\x18\\x01 \\x03(\\v2:.xds.type.matcher.v3.Matcher.MatcherTree.MatchMap.MapEntryB\\b\\xfaB\\x05\\x9a\\x01\\x02\\b\\x01R\\x03map\\x1a\\\\\\n\" +\n\t\"\\bMapEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12:\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2$.xds.type.matcher.v3.Matcher.OnMatchR\\x05value:\\x028\\x01B\\x10\\n\" +\n\t\"\\ttree_type\\x12\\x03\\xf8B\\x01B\\x0e\\n\" +\n\t\"\\fmatcher_typeB\\\\\\n\" +\n\t\"\\x1ecom.github.xds.type.matcher.v3B\\fMatcherProtoP\\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_type_matcher_v3_matcher_proto_rawDescOnce sync.Once\n\tfile_xds_type_matcher_v3_matcher_proto_rawDescData []byte\n)\n\nfunc file_xds_type_matcher_v3_matcher_proto_rawDescGZIP() []byte {\n\tfile_xds_type_matcher_v3_matcher_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_type_matcher_v3_matcher_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_matcher_proto_rawDesc), len(file_xds_type_matcher_v3_matcher_proto_rawDesc)))\n\t})\n\treturn file_xds_type_matcher_v3_matcher_proto_rawDescData\n}\n\nvar file_xds_type_matcher_v3_matcher_proto_msgTypes = make([]protoimpl.MessageInfo, 10)\nvar file_xds_type_matcher_v3_matcher_proto_goTypes = []any{\n\t(*Matcher)(nil),                                       // 0: xds.type.matcher.v3.Matcher\n\t(*Matcher_OnMatch)(nil),                               // 1: xds.type.matcher.v3.Matcher.OnMatch\n\t(*Matcher_MatcherList)(nil),                           // 2: xds.type.matcher.v3.Matcher.MatcherList\n\t(*Matcher_MatcherTree)(nil),                           // 3: xds.type.matcher.v3.Matcher.MatcherTree\n\t(*Matcher_MatcherList_Predicate)(nil),                 // 4: xds.type.matcher.v3.Matcher.MatcherList.Predicate\n\t(*Matcher_MatcherList_FieldMatcher)(nil),              // 5: xds.type.matcher.v3.Matcher.MatcherList.FieldMatcher\n\t(*Matcher_MatcherList_Predicate_SinglePredicate)(nil), // 6: xds.type.matcher.v3.Matcher.MatcherList.Predicate.SinglePredicate\n\t(*Matcher_MatcherList_Predicate_PredicateList)(nil),   // 7: xds.type.matcher.v3.Matcher.MatcherList.Predicate.PredicateList\n\t(*Matcher_MatcherTree_MatchMap)(nil),                  // 8: xds.type.matcher.v3.Matcher.MatcherTree.MatchMap\n\tnil,                                                   // 9: xds.type.matcher.v3.Matcher.MatcherTree.MatchMap.MapEntry\n\t(*v3.TypedExtensionConfig)(nil),                       // 10: xds.core.v3.TypedExtensionConfig\n\t(*StringMatcher)(nil),                                 // 11: xds.type.matcher.v3.StringMatcher\n}\nvar file_xds_type_matcher_v3_matcher_proto_depIdxs = []int32{\n\t2,  // 0: xds.type.matcher.v3.Matcher.matcher_list:type_name -> xds.type.matcher.v3.Matcher.MatcherList\n\t3,  // 1: xds.type.matcher.v3.Matcher.matcher_tree:type_name -> xds.type.matcher.v3.Matcher.MatcherTree\n\t1,  // 2: xds.type.matcher.v3.Matcher.on_no_match:type_name -> xds.type.matcher.v3.Matcher.OnMatch\n\t0,  // 3: xds.type.matcher.v3.Matcher.OnMatch.matcher:type_name -> xds.type.matcher.v3.Matcher\n\t10, // 4: xds.type.matcher.v3.Matcher.OnMatch.action:type_name -> xds.core.v3.TypedExtensionConfig\n\t5,  // 5: xds.type.matcher.v3.Matcher.MatcherList.matchers:type_name -> xds.type.matcher.v3.Matcher.MatcherList.FieldMatcher\n\t10, // 6: xds.type.matcher.v3.Matcher.MatcherTree.input:type_name -> xds.core.v3.TypedExtensionConfig\n\t8,  // 7: xds.type.matcher.v3.Matcher.MatcherTree.exact_match_map:type_name -> xds.type.matcher.v3.Matcher.MatcherTree.MatchMap\n\t8,  // 8: xds.type.matcher.v3.Matcher.MatcherTree.prefix_match_map:type_name -> xds.type.matcher.v3.Matcher.MatcherTree.MatchMap\n\t10, // 9: xds.type.matcher.v3.Matcher.MatcherTree.custom_match:type_name -> xds.core.v3.TypedExtensionConfig\n\t6,  // 10: xds.type.matcher.v3.Matcher.MatcherList.Predicate.single_predicate:type_name -> xds.type.matcher.v3.Matcher.MatcherList.Predicate.SinglePredicate\n\t7,  // 11: xds.type.matcher.v3.Matcher.MatcherList.Predicate.or_matcher:type_name -> xds.type.matcher.v3.Matcher.MatcherList.Predicate.PredicateList\n\t7,  // 12: xds.type.matcher.v3.Matcher.MatcherList.Predicate.and_matcher:type_name -> xds.type.matcher.v3.Matcher.MatcherList.Predicate.PredicateList\n\t4,  // 13: xds.type.matcher.v3.Matcher.MatcherList.Predicate.not_matcher:type_name -> xds.type.matcher.v3.Matcher.MatcherList.Predicate\n\t4,  // 14: xds.type.matcher.v3.Matcher.MatcherList.FieldMatcher.predicate:type_name -> xds.type.matcher.v3.Matcher.MatcherList.Predicate\n\t1,  // 15: xds.type.matcher.v3.Matcher.MatcherList.FieldMatcher.on_match:type_name -> xds.type.matcher.v3.Matcher.OnMatch\n\t10, // 16: xds.type.matcher.v3.Matcher.MatcherList.Predicate.SinglePredicate.input:type_name -> xds.core.v3.TypedExtensionConfig\n\t11, // 17: xds.type.matcher.v3.Matcher.MatcherList.Predicate.SinglePredicate.value_match:type_name -> xds.type.matcher.v3.StringMatcher\n\t10, // 18: xds.type.matcher.v3.Matcher.MatcherList.Predicate.SinglePredicate.custom_match:type_name -> xds.core.v3.TypedExtensionConfig\n\t4,  // 19: xds.type.matcher.v3.Matcher.MatcherList.Predicate.PredicateList.predicate:type_name -> xds.type.matcher.v3.Matcher.MatcherList.Predicate\n\t9,  // 20: xds.type.matcher.v3.Matcher.MatcherTree.MatchMap.map:type_name -> xds.type.matcher.v3.Matcher.MatcherTree.MatchMap.MapEntry\n\t1,  // 21: xds.type.matcher.v3.Matcher.MatcherTree.MatchMap.MapEntry.value:type_name -> xds.type.matcher.v3.Matcher.OnMatch\n\t22, // [22:22] is the sub-list for method output_type\n\t22, // [22:22] is the sub-list for method input_type\n\t22, // [22:22] is the sub-list for extension type_name\n\t22, // [22:22] is the sub-list for extension extendee\n\t0,  // [0:22] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_type_matcher_v3_matcher_proto_init() }\nfunc file_xds_type_matcher_v3_matcher_proto_init() {\n\tif File_xds_type_matcher_v3_matcher_proto != nil {\n\t\treturn\n\t}\n\tfile_xds_type_matcher_v3_string_proto_init()\n\tfile_xds_type_matcher_v3_matcher_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*Matcher_MatcherList_)(nil),\n\t\t(*Matcher_MatcherTree_)(nil),\n\t}\n\tfile_xds_type_matcher_v3_matcher_proto_msgTypes[1].OneofWrappers = []any{\n\t\t(*Matcher_OnMatch_Matcher)(nil),\n\t\t(*Matcher_OnMatch_Action)(nil),\n\t}\n\tfile_xds_type_matcher_v3_matcher_proto_msgTypes[3].OneofWrappers = []any{\n\t\t(*Matcher_MatcherTree_ExactMatchMap)(nil),\n\t\t(*Matcher_MatcherTree_PrefixMatchMap)(nil),\n\t\t(*Matcher_MatcherTree_CustomMatch)(nil),\n\t}\n\tfile_xds_type_matcher_v3_matcher_proto_msgTypes[4].OneofWrappers = []any{\n\t\t(*Matcher_MatcherList_Predicate_SinglePredicate_)(nil),\n\t\t(*Matcher_MatcherList_Predicate_OrMatcher)(nil),\n\t\t(*Matcher_MatcherList_Predicate_AndMatcher)(nil),\n\t\t(*Matcher_MatcherList_Predicate_NotMatcher)(nil),\n\t}\n\tfile_xds_type_matcher_v3_matcher_proto_msgTypes[6].OneofWrappers = []any{\n\t\t(*Matcher_MatcherList_Predicate_SinglePredicate_ValueMatch)(nil),\n\t\t(*Matcher_MatcherList_Predicate_SinglePredicate_CustomMatch)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_matcher_proto_rawDesc), len(file_xds_type_matcher_v3_matcher_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   10,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_type_matcher_v3_matcher_proto_goTypes,\n\t\tDependencyIndexes: file_xds_type_matcher_v3_matcher_proto_depIdxs,\n\t\tMessageInfos:      file_xds_type_matcher_v3_matcher_proto_msgTypes,\n\t}.Build()\n\tFile_xds_type_matcher_v3_matcher_proto = out.File\n\tfile_xds_type_matcher_v3_matcher_proto_goTypes = nil\n\tfile_xds_type_matcher_v3_matcher_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/matcher.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/type/matcher/v3/matcher.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on Matcher with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Matcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Matcher with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in MatcherMultiError, or nil if none found.\nfunc (m *Matcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Matcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetOnNoMatch()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, MatcherValidationError{\n\t\t\t\t\tfield:  \"OnNoMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, MatcherValidationError{\n\t\t\t\t\tfield:  \"OnNoMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetOnNoMatch()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn MatcherValidationError{\n\t\t\t\tfield:  \"OnNoMatch\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch v := m.MatcherType.(type) {\n\tcase *Matcher_MatcherList_:\n\t\tif v == nil {\n\t\t\terr := MatcherValidationError{\n\t\t\t\tfield:  \"MatcherType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetMatcherList()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, MatcherValidationError{\n\t\t\t\t\t\tfield:  \"MatcherList\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, MatcherValidationError{\n\t\t\t\t\t\tfield:  \"MatcherList\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetMatcherList()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn MatcherValidationError{\n\t\t\t\t\tfield:  \"MatcherList\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Matcher_MatcherTree_:\n\t\tif v == nil {\n\t\t\terr := MatcherValidationError{\n\t\t\t\tfield:  \"MatcherType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetMatcherTree()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, MatcherValidationError{\n\t\t\t\t\t\tfield:  \"MatcherTree\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, MatcherValidationError{\n\t\t\t\t\t\tfield:  \"MatcherTree\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetMatcherTree()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn MatcherValidationError{\n\t\t\t\t\tfield:  \"MatcherTree\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn MatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// MatcherMultiError is an error wrapping multiple validation errors returned\n// by Matcher.ValidateAll() if the designated constraints aren't met.\ntype MatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m MatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m MatcherMultiError) AllErrors() []error { return m }\n\n// MatcherValidationError is the validation error returned by Matcher.Validate\n// if the designated constraints aren't met.\ntype MatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e MatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e MatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e MatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e MatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e MatcherValidationError) ErrorName() string { return \"MatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e MatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = MatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = MatcherValidationError{}\n\n// Validate checks the field values on Matcher_OnMatch with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *Matcher_OnMatch) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Matcher_OnMatch with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// Matcher_OnMatchMultiError, or nil if none found.\nfunc (m *Matcher_OnMatch) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Matcher_OnMatch) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for KeepMatching\n\n\toneofOnMatchPresent := false\n\tswitch v := m.OnMatch.(type) {\n\tcase *Matcher_OnMatch_Matcher:\n\t\tif v == nil {\n\t\t\terr := Matcher_OnMatchValidationError{\n\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofOnMatchPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetMatcher()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_OnMatchValidationError{\n\t\t\t\t\t\tfield:  \"Matcher\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_OnMatchValidationError{\n\t\t\t\t\t\tfield:  \"Matcher\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetMatcher()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Matcher_OnMatchValidationError{\n\t\t\t\t\tfield:  \"Matcher\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Matcher_OnMatch_Action:\n\t\tif v == nil {\n\t\t\terr := Matcher_OnMatchValidationError{\n\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofOnMatchPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetAction()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_OnMatchValidationError{\n\t\t\t\t\t\tfield:  \"Action\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_OnMatchValidationError{\n\t\t\t\t\t\tfield:  \"Action\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetAction()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Matcher_OnMatchValidationError{\n\t\t\t\t\tfield:  \"Action\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofOnMatchPresent {\n\t\terr := Matcher_OnMatchValidationError{\n\t\t\tfield:  \"OnMatch\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Matcher_OnMatchMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Matcher_OnMatchMultiError is an error wrapping multiple validation errors\n// returned by Matcher_OnMatch.ValidateAll() if the designated constraints\n// aren't met.\ntype Matcher_OnMatchMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Matcher_OnMatchMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Matcher_OnMatchMultiError) AllErrors() []error { return m }\n\n// Matcher_OnMatchValidationError is the validation error returned by\n// Matcher_OnMatch.Validate if the designated constraints aren't met.\ntype Matcher_OnMatchValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Matcher_OnMatchValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Matcher_OnMatchValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Matcher_OnMatchValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Matcher_OnMatchValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Matcher_OnMatchValidationError) ErrorName() string { return \"Matcher_OnMatchValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e Matcher_OnMatchValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMatcher_OnMatch.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Matcher_OnMatchValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Matcher_OnMatchValidationError{}\n\n// Validate checks the field values on Matcher_MatcherList with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *Matcher_MatcherList) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Matcher_MatcherList with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// Matcher_MatcherListMultiError, or nil if none found.\nfunc (m *Matcher_MatcherList) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Matcher_MatcherList) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetMatchers()) < 1 {\n\t\terr := Matcher_MatcherListValidationError{\n\t\t\tfield:  \"Matchers\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetMatchers() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherListValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Matchers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherListValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Matchers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Matcher_MatcherListValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Matchers[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Matcher_MatcherListMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Matcher_MatcherListMultiError is an error wrapping multiple validation\n// errors returned by Matcher_MatcherList.ValidateAll() if the designated\n// constraints aren't met.\ntype Matcher_MatcherListMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Matcher_MatcherListMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Matcher_MatcherListMultiError) AllErrors() []error { return m }\n\n// Matcher_MatcherListValidationError is the validation error returned by\n// Matcher_MatcherList.Validate if the designated constraints aren't met.\ntype Matcher_MatcherListValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Matcher_MatcherListValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Matcher_MatcherListValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Matcher_MatcherListValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Matcher_MatcherListValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Matcher_MatcherListValidationError) ErrorName() string {\n\treturn \"Matcher_MatcherListValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Matcher_MatcherListValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMatcher_MatcherList.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Matcher_MatcherListValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Matcher_MatcherListValidationError{}\n\n// Validate checks the field values on Matcher_MatcherTree with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *Matcher_MatcherTree) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Matcher_MatcherTree with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// Matcher_MatcherTreeMultiError, or nil if none found.\nfunc (m *Matcher_MatcherTree) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Matcher_MatcherTree) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetInput() == nil {\n\t\terr := Matcher_MatcherTreeValidationError{\n\t\t\tfield:  \"Input\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetInput()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Matcher_MatcherTreeValidationError{\n\t\t\t\t\tfield:  \"Input\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Matcher_MatcherTreeValidationError{\n\t\t\t\t\tfield:  \"Input\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetInput()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Matcher_MatcherTreeValidationError{\n\t\t\t\tfield:  \"Input\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\toneofTreeTypePresent := false\n\tswitch v := m.TreeType.(type) {\n\tcase *Matcher_MatcherTree_ExactMatchMap:\n\t\tif v == nil {\n\t\t\terr := Matcher_MatcherTreeValidationError{\n\t\t\t\tfield:  \"TreeType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofTreeTypePresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetExactMatchMap()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherTreeValidationError{\n\t\t\t\t\t\tfield:  \"ExactMatchMap\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherTreeValidationError{\n\t\t\t\t\t\tfield:  \"ExactMatchMap\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetExactMatchMap()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Matcher_MatcherTreeValidationError{\n\t\t\t\t\tfield:  \"ExactMatchMap\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Matcher_MatcherTree_PrefixMatchMap:\n\t\tif v == nil {\n\t\t\terr := Matcher_MatcherTreeValidationError{\n\t\t\t\tfield:  \"TreeType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofTreeTypePresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetPrefixMatchMap()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherTreeValidationError{\n\t\t\t\t\t\tfield:  \"PrefixMatchMap\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherTreeValidationError{\n\t\t\t\t\t\tfield:  \"PrefixMatchMap\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetPrefixMatchMap()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Matcher_MatcherTreeValidationError{\n\t\t\t\t\tfield:  \"PrefixMatchMap\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Matcher_MatcherTree_CustomMatch:\n\t\tif v == nil {\n\t\t\terr := Matcher_MatcherTreeValidationError{\n\t\t\t\tfield:  \"TreeType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofTreeTypePresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetCustomMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherTreeValidationError{\n\t\t\t\t\t\tfield:  \"CustomMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherTreeValidationError{\n\t\t\t\t\t\tfield:  \"CustomMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetCustomMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Matcher_MatcherTreeValidationError{\n\t\t\t\t\tfield:  \"CustomMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofTreeTypePresent {\n\t\terr := Matcher_MatcherTreeValidationError{\n\t\t\tfield:  \"TreeType\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Matcher_MatcherTreeMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Matcher_MatcherTreeMultiError is an error wrapping multiple validation\n// errors returned by Matcher_MatcherTree.ValidateAll() if the designated\n// constraints aren't met.\ntype Matcher_MatcherTreeMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Matcher_MatcherTreeMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Matcher_MatcherTreeMultiError) AllErrors() []error { return m }\n\n// Matcher_MatcherTreeValidationError is the validation error returned by\n// Matcher_MatcherTree.Validate if the designated constraints aren't met.\ntype Matcher_MatcherTreeValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Matcher_MatcherTreeValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Matcher_MatcherTreeValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Matcher_MatcherTreeValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Matcher_MatcherTreeValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Matcher_MatcherTreeValidationError) ErrorName() string {\n\treturn \"Matcher_MatcherTreeValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Matcher_MatcherTreeValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMatcher_MatcherTree.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Matcher_MatcherTreeValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Matcher_MatcherTreeValidationError{}\n\n// Validate checks the field values on Matcher_MatcherList_Predicate with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *Matcher_MatcherList_Predicate) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Matcher_MatcherList_Predicate with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// Matcher_MatcherList_PredicateMultiError, or nil if none found.\nfunc (m *Matcher_MatcherList_Predicate) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Matcher_MatcherList_Predicate) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofMatchTypePresent := false\n\tswitch v := m.MatchType.(type) {\n\tcase *Matcher_MatcherList_Predicate_SinglePredicate_:\n\t\tif v == nil {\n\t\t\terr := Matcher_MatcherList_PredicateValidationError{\n\t\t\t\tfield:  \"MatchType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchTypePresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetSinglePredicate()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherList_PredicateValidationError{\n\t\t\t\t\t\tfield:  \"SinglePredicate\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherList_PredicateValidationError{\n\t\t\t\t\t\tfield:  \"SinglePredicate\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetSinglePredicate()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Matcher_MatcherList_PredicateValidationError{\n\t\t\t\t\tfield:  \"SinglePredicate\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Matcher_MatcherList_Predicate_OrMatcher:\n\t\tif v == nil {\n\t\t\terr := Matcher_MatcherList_PredicateValidationError{\n\t\t\t\tfield:  \"MatchType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchTypePresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetOrMatcher()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherList_PredicateValidationError{\n\t\t\t\t\t\tfield:  \"OrMatcher\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherList_PredicateValidationError{\n\t\t\t\t\t\tfield:  \"OrMatcher\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetOrMatcher()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Matcher_MatcherList_PredicateValidationError{\n\t\t\t\t\tfield:  \"OrMatcher\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Matcher_MatcherList_Predicate_AndMatcher:\n\t\tif v == nil {\n\t\t\terr := Matcher_MatcherList_PredicateValidationError{\n\t\t\t\tfield:  \"MatchType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchTypePresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetAndMatcher()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherList_PredicateValidationError{\n\t\t\t\t\t\tfield:  \"AndMatcher\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherList_PredicateValidationError{\n\t\t\t\t\t\tfield:  \"AndMatcher\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetAndMatcher()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Matcher_MatcherList_PredicateValidationError{\n\t\t\t\t\tfield:  \"AndMatcher\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Matcher_MatcherList_Predicate_NotMatcher:\n\t\tif v == nil {\n\t\t\terr := Matcher_MatcherList_PredicateValidationError{\n\t\t\t\tfield:  \"MatchType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchTypePresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetNotMatcher()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherList_PredicateValidationError{\n\t\t\t\t\t\tfield:  \"NotMatcher\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherList_PredicateValidationError{\n\t\t\t\t\t\tfield:  \"NotMatcher\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetNotMatcher()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Matcher_MatcherList_PredicateValidationError{\n\t\t\t\t\tfield:  \"NotMatcher\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofMatchTypePresent {\n\t\terr := Matcher_MatcherList_PredicateValidationError{\n\t\t\tfield:  \"MatchType\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Matcher_MatcherList_PredicateMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Matcher_MatcherList_PredicateMultiError is an error wrapping multiple\n// validation errors returned by Matcher_MatcherList_Predicate.ValidateAll()\n// if the designated constraints aren't met.\ntype Matcher_MatcherList_PredicateMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Matcher_MatcherList_PredicateMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Matcher_MatcherList_PredicateMultiError) AllErrors() []error { return m }\n\n// Matcher_MatcherList_PredicateValidationError is the validation error\n// returned by Matcher_MatcherList_Predicate.Validate if the designated\n// constraints aren't met.\ntype Matcher_MatcherList_PredicateValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Matcher_MatcherList_PredicateValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Matcher_MatcherList_PredicateValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Matcher_MatcherList_PredicateValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Matcher_MatcherList_PredicateValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Matcher_MatcherList_PredicateValidationError) ErrorName() string {\n\treturn \"Matcher_MatcherList_PredicateValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Matcher_MatcherList_PredicateValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMatcher_MatcherList_Predicate.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Matcher_MatcherList_PredicateValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Matcher_MatcherList_PredicateValidationError{}\n\n// Validate checks the field values on Matcher_MatcherList_FieldMatcher with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the first error encountered is returned, or nil if there are\n// no violations.\nfunc (m *Matcher_MatcherList_FieldMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Matcher_MatcherList_FieldMatcher with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// Matcher_MatcherList_FieldMatcherMultiError, or nil if none found.\nfunc (m *Matcher_MatcherList_FieldMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Matcher_MatcherList_FieldMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetPredicate() == nil {\n\t\terr := Matcher_MatcherList_FieldMatcherValidationError{\n\t\t\tfield:  \"Predicate\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPredicate()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Matcher_MatcherList_FieldMatcherValidationError{\n\t\t\t\t\tfield:  \"Predicate\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Matcher_MatcherList_FieldMatcherValidationError{\n\t\t\t\t\tfield:  \"Predicate\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPredicate()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Matcher_MatcherList_FieldMatcherValidationError{\n\t\t\t\tfield:  \"Predicate\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif m.GetOnMatch() == nil {\n\t\terr := Matcher_MatcherList_FieldMatcherValidationError{\n\t\t\tfield:  \"OnMatch\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetOnMatch()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Matcher_MatcherList_FieldMatcherValidationError{\n\t\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Matcher_MatcherList_FieldMatcherValidationError{\n\t\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetOnMatch()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Matcher_MatcherList_FieldMatcherValidationError{\n\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Matcher_MatcherList_FieldMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Matcher_MatcherList_FieldMatcherMultiError is an error wrapping multiple\n// validation errors returned by\n// Matcher_MatcherList_FieldMatcher.ValidateAll() if the designated\n// constraints aren't met.\ntype Matcher_MatcherList_FieldMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Matcher_MatcherList_FieldMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Matcher_MatcherList_FieldMatcherMultiError) AllErrors() []error { return m }\n\n// Matcher_MatcherList_FieldMatcherValidationError is the validation error\n// returned by Matcher_MatcherList_FieldMatcher.Validate if the designated\n// constraints aren't met.\ntype Matcher_MatcherList_FieldMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Matcher_MatcherList_FieldMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Matcher_MatcherList_FieldMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Matcher_MatcherList_FieldMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Matcher_MatcherList_FieldMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Matcher_MatcherList_FieldMatcherValidationError) ErrorName() string {\n\treturn \"Matcher_MatcherList_FieldMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Matcher_MatcherList_FieldMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMatcher_MatcherList_FieldMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Matcher_MatcherList_FieldMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Matcher_MatcherList_FieldMatcherValidationError{}\n\n// Validate checks the field values on\n// Matcher_MatcherList_Predicate_SinglePredicate with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Matcher_MatcherList_Predicate_SinglePredicate) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// Matcher_MatcherList_Predicate_SinglePredicate with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in\n// Matcher_MatcherList_Predicate_SinglePredicateMultiError, or nil if none found.\nfunc (m *Matcher_MatcherList_Predicate_SinglePredicate) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Matcher_MatcherList_Predicate_SinglePredicate) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetInput() == nil {\n\t\terr := Matcher_MatcherList_Predicate_SinglePredicateValidationError{\n\t\t\tfield:  \"Input\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetInput()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Matcher_MatcherList_Predicate_SinglePredicateValidationError{\n\t\t\t\t\tfield:  \"Input\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Matcher_MatcherList_Predicate_SinglePredicateValidationError{\n\t\t\t\t\tfield:  \"Input\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetInput()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Matcher_MatcherList_Predicate_SinglePredicateValidationError{\n\t\t\t\tfield:  \"Input\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\toneofMatcherPresent := false\n\tswitch v := m.Matcher.(type) {\n\tcase *Matcher_MatcherList_Predicate_SinglePredicate_ValueMatch:\n\t\tif v == nil {\n\t\t\terr := Matcher_MatcherList_Predicate_SinglePredicateValidationError{\n\t\t\t\tfield:  \"Matcher\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatcherPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetValueMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherList_Predicate_SinglePredicateValidationError{\n\t\t\t\t\t\tfield:  \"ValueMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherList_Predicate_SinglePredicateValidationError{\n\t\t\t\t\t\tfield:  \"ValueMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetValueMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Matcher_MatcherList_Predicate_SinglePredicateValidationError{\n\t\t\t\t\tfield:  \"ValueMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Matcher_MatcherList_Predicate_SinglePredicate_CustomMatch:\n\t\tif v == nil {\n\t\t\terr := Matcher_MatcherList_Predicate_SinglePredicateValidationError{\n\t\t\t\tfield:  \"Matcher\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatcherPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetCustomMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherList_Predicate_SinglePredicateValidationError{\n\t\t\t\t\t\tfield:  \"CustomMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherList_Predicate_SinglePredicateValidationError{\n\t\t\t\t\t\tfield:  \"CustomMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetCustomMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Matcher_MatcherList_Predicate_SinglePredicateValidationError{\n\t\t\t\t\tfield:  \"CustomMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofMatcherPresent {\n\t\terr := Matcher_MatcherList_Predicate_SinglePredicateValidationError{\n\t\t\tfield:  \"Matcher\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Matcher_MatcherList_Predicate_SinglePredicateMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Matcher_MatcherList_Predicate_SinglePredicateMultiError is an error wrapping\n// multiple validation errors returned by\n// Matcher_MatcherList_Predicate_SinglePredicate.ValidateAll() if the\n// designated constraints aren't met.\ntype Matcher_MatcherList_Predicate_SinglePredicateMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Matcher_MatcherList_Predicate_SinglePredicateMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Matcher_MatcherList_Predicate_SinglePredicateMultiError) AllErrors() []error { return m }\n\n// Matcher_MatcherList_Predicate_SinglePredicateValidationError is the\n// validation error returned by\n// Matcher_MatcherList_Predicate_SinglePredicate.Validate if the designated\n// constraints aren't met.\ntype Matcher_MatcherList_Predicate_SinglePredicateValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Matcher_MatcherList_Predicate_SinglePredicateValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Matcher_MatcherList_Predicate_SinglePredicateValidationError) Reason() string {\n\treturn e.reason\n}\n\n// Cause function returns cause value.\nfunc (e Matcher_MatcherList_Predicate_SinglePredicateValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Matcher_MatcherList_Predicate_SinglePredicateValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Matcher_MatcherList_Predicate_SinglePredicateValidationError) ErrorName() string {\n\treturn \"Matcher_MatcherList_Predicate_SinglePredicateValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Matcher_MatcherList_Predicate_SinglePredicateValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMatcher_MatcherList_Predicate_SinglePredicate.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Matcher_MatcherList_Predicate_SinglePredicateValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Matcher_MatcherList_Predicate_SinglePredicateValidationError{}\n\n// Validate checks the field values on\n// Matcher_MatcherList_Predicate_PredicateList with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Matcher_MatcherList_Predicate_PredicateList) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// Matcher_MatcherList_Predicate_PredicateList with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in\n// Matcher_MatcherList_Predicate_PredicateListMultiError, or nil if none found.\nfunc (m *Matcher_MatcherList_Predicate_PredicateList) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Matcher_MatcherList_Predicate_PredicateList) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetPredicate()) < 2 {\n\t\terr := Matcher_MatcherList_Predicate_PredicateListValidationError{\n\t\t\tfield:  \"Predicate\",\n\t\t\treason: \"value must contain at least 2 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetPredicate() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherList_Predicate_PredicateListValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Predicate[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Matcher_MatcherList_Predicate_PredicateListValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Predicate[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Matcher_MatcherList_Predicate_PredicateListValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Predicate[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Matcher_MatcherList_Predicate_PredicateListMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Matcher_MatcherList_Predicate_PredicateListMultiError is an error wrapping\n// multiple validation errors returned by\n// Matcher_MatcherList_Predicate_PredicateList.ValidateAll() if the designated\n// constraints aren't met.\ntype Matcher_MatcherList_Predicate_PredicateListMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Matcher_MatcherList_Predicate_PredicateListMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Matcher_MatcherList_Predicate_PredicateListMultiError) AllErrors() []error { return m }\n\n// Matcher_MatcherList_Predicate_PredicateListValidationError is the validation\n// error returned by Matcher_MatcherList_Predicate_PredicateList.Validate if\n// the designated constraints aren't met.\ntype Matcher_MatcherList_Predicate_PredicateListValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Matcher_MatcherList_Predicate_PredicateListValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Matcher_MatcherList_Predicate_PredicateListValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Matcher_MatcherList_Predicate_PredicateListValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Matcher_MatcherList_Predicate_PredicateListValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Matcher_MatcherList_Predicate_PredicateListValidationError) ErrorName() string {\n\treturn \"Matcher_MatcherList_Predicate_PredicateListValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Matcher_MatcherList_Predicate_PredicateListValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMatcher_MatcherList_Predicate_PredicateList.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Matcher_MatcherList_Predicate_PredicateListValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Matcher_MatcherList_Predicate_PredicateListValidationError{}\n\n// Validate checks the field values on Matcher_MatcherTree_MatchMap with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *Matcher_MatcherTree_MatchMap) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Matcher_MatcherTree_MatchMap with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// Matcher_MatcherTree_MatchMapMultiError, or nil if none found.\nfunc (m *Matcher_MatcherTree_MatchMap) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Matcher_MatcherTree_MatchMap) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetMap()) < 1 {\n\t\terr := Matcher_MatcherTree_MatchMapValidationError{\n\t\t\tfield:  \"Map\",\n\t\t\treason: \"value must contain at least 1 pair(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t{\n\t\tsorted_keys := make([]string, len(m.GetMap()))\n\t\ti := 0\n\t\tfor key := range m.GetMap() {\n\t\t\tsorted_keys[i] = key\n\t\t\ti++\n\t\t}\n\t\tsort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] })\n\t\tfor _, key := range sorted_keys {\n\t\t\tval := m.GetMap()[key]\n\t\t\t_ = val\n\n\t\t\t// no validation rules for Map[key]\n\n\t\t\tif all {\n\t\t\t\tswitch v := interface{}(val).(type) {\n\t\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\t\terrors = append(errors, Matcher_MatcherTree_MatchMapValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"Map[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\tcase interface{ Validate() error }:\n\t\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\t\terrors = append(errors, Matcher_MatcherTree_MatchMapValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"Map[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if v, ok := interface{}(val).(interface{ Validate() error }); ok {\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\treturn Matcher_MatcherTree_MatchMapValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Map[%v]\", key),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Matcher_MatcherTree_MatchMapMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Matcher_MatcherTree_MatchMapMultiError is an error wrapping multiple\n// validation errors returned by Matcher_MatcherTree_MatchMap.ValidateAll() if\n// the designated constraints aren't met.\ntype Matcher_MatcherTree_MatchMapMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Matcher_MatcherTree_MatchMapMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Matcher_MatcherTree_MatchMapMultiError) AllErrors() []error { return m }\n\n// Matcher_MatcherTree_MatchMapValidationError is the validation error returned\n// by Matcher_MatcherTree_MatchMap.Validate if the designated constraints\n// aren't met.\ntype Matcher_MatcherTree_MatchMapValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Matcher_MatcherTree_MatchMapValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Matcher_MatcherTree_MatchMapValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Matcher_MatcherTree_MatchMapValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Matcher_MatcherTree_MatchMapValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Matcher_MatcherTree_MatchMapValidationError) ErrorName() string {\n\treturn \"Matcher_MatcherTree_MatchMapValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Matcher_MatcherTree_MatchMapValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMatcher_MatcherTree_MatchMap.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Matcher_MatcherTree_MatchMapValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Matcher_MatcherTree_MatchMapValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/range.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/type/matcher/v3/range.proto\n\npackage v3\n\nimport (\n\tv3 \"github.com/cncf/xds/go/xds/type/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype Int64RangeMatcher struct {\n\tstate         protoimpl.MessageState            `protogen:\"open.v1\"`\n\tRangeMatchers []*Int64RangeMatcher_RangeMatcher `protobuf:\"bytes,1,rep,name=range_matchers,json=rangeMatchers,proto3\" json:\"range_matchers,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Int64RangeMatcher) Reset() {\n\t*x = Int64RangeMatcher{}\n\tmi := &file_xds_type_matcher_v3_range_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Int64RangeMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Int64RangeMatcher) ProtoMessage() {}\n\nfunc (x *Int64RangeMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_range_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Int64RangeMatcher.ProtoReflect.Descriptor instead.\nfunc (*Int64RangeMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_range_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Int64RangeMatcher) GetRangeMatchers() []*Int64RangeMatcher_RangeMatcher {\n\tif x != nil {\n\t\treturn x.RangeMatchers\n\t}\n\treturn nil\n}\n\ntype Int32RangeMatcher struct {\n\tstate         protoimpl.MessageState            `protogen:\"open.v1\"`\n\tRangeMatchers []*Int32RangeMatcher_RangeMatcher `protobuf:\"bytes,1,rep,name=range_matchers,json=rangeMatchers,proto3\" json:\"range_matchers,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Int32RangeMatcher) Reset() {\n\t*x = Int32RangeMatcher{}\n\tmi := &file_xds_type_matcher_v3_range_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Int32RangeMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Int32RangeMatcher) ProtoMessage() {}\n\nfunc (x *Int32RangeMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_range_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Int32RangeMatcher.ProtoReflect.Descriptor instead.\nfunc (*Int32RangeMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_range_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *Int32RangeMatcher) GetRangeMatchers() []*Int32RangeMatcher_RangeMatcher {\n\tif x != nil {\n\t\treturn x.RangeMatchers\n\t}\n\treturn nil\n}\n\ntype DoubleRangeMatcher struct {\n\tstate         protoimpl.MessageState             `protogen:\"open.v1\"`\n\tRangeMatchers []*DoubleRangeMatcher_RangeMatcher `protobuf:\"bytes,1,rep,name=range_matchers,json=rangeMatchers,proto3\" json:\"range_matchers,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DoubleRangeMatcher) Reset() {\n\t*x = DoubleRangeMatcher{}\n\tmi := &file_xds_type_matcher_v3_range_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DoubleRangeMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DoubleRangeMatcher) ProtoMessage() {}\n\nfunc (x *DoubleRangeMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_range_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DoubleRangeMatcher.ProtoReflect.Descriptor instead.\nfunc (*DoubleRangeMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_range_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *DoubleRangeMatcher) GetRangeMatchers() []*DoubleRangeMatcher_RangeMatcher {\n\tif x != nil {\n\t\treturn x.RangeMatchers\n\t}\n\treturn nil\n}\n\ntype Int64RangeMatcher_RangeMatcher struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tRanges        []*v3.Int64Range       `protobuf:\"bytes,1,rep,name=ranges,proto3\" json:\"ranges,omitempty\"`\n\tOnMatch       *Matcher_OnMatch       `protobuf:\"bytes,2,opt,name=on_match,json=onMatch,proto3\" json:\"on_match,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Int64RangeMatcher_RangeMatcher) Reset() {\n\t*x = Int64RangeMatcher_RangeMatcher{}\n\tmi := &file_xds_type_matcher_v3_range_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Int64RangeMatcher_RangeMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Int64RangeMatcher_RangeMatcher) ProtoMessage() {}\n\nfunc (x *Int64RangeMatcher_RangeMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_range_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Int64RangeMatcher_RangeMatcher.ProtoReflect.Descriptor instead.\nfunc (*Int64RangeMatcher_RangeMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_range_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *Int64RangeMatcher_RangeMatcher) GetRanges() []*v3.Int64Range {\n\tif x != nil {\n\t\treturn x.Ranges\n\t}\n\treturn nil\n}\n\nfunc (x *Int64RangeMatcher_RangeMatcher) GetOnMatch() *Matcher_OnMatch {\n\tif x != nil {\n\t\treturn x.OnMatch\n\t}\n\treturn nil\n}\n\ntype Int32RangeMatcher_RangeMatcher struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tRanges        []*v3.Int32Range       `protobuf:\"bytes,1,rep,name=ranges,proto3\" json:\"ranges,omitempty\"`\n\tOnMatch       *Matcher_OnMatch       `protobuf:\"bytes,2,opt,name=on_match,json=onMatch,proto3\" json:\"on_match,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Int32RangeMatcher_RangeMatcher) Reset() {\n\t*x = Int32RangeMatcher_RangeMatcher{}\n\tmi := &file_xds_type_matcher_v3_range_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Int32RangeMatcher_RangeMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Int32RangeMatcher_RangeMatcher) ProtoMessage() {}\n\nfunc (x *Int32RangeMatcher_RangeMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_range_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Int32RangeMatcher_RangeMatcher.ProtoReflect.Descriptor instead.\nfunc (*Int32RangeMatcher_RangeMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_range_proto_rawDescGZIP(), []int{1, 0}\n}\n\nfunc (x *Int32RangeMatcher_RangeMatcher) GetRanges() []*v3.Int32Range {\n\tif x != nil {\n\t\treturn x.Ranges\n\t}\n\treturn nil\n}\n\nfunc (x *Int32RangeMatcher_RangeMatcher) GetOnMatch() *Matcher_OnMatch {\n\tif x != nil {\n\t\treturn x.OnMatch\n\t}\n\treturn nil\n}\n\ntype DoubleRangeMatcher_RangeMatcher struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tRanges        []*v3.DoubleRange      `protobuf:\"bytes,1,rep,name=ranges,proto3\" json:\"ranges,omitempty\"`\n\tOnMatch       *Matcher_OnMatch       `protobuf:\"bytes,2,opt,name=on_match,json=onMatch,proto3\" json:\"on_match,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DoubleRangeMatcher_RangeMatcher) Reset() {\n\t*x = DoubleRangeMatcher_RangeMatcher{}\n\tmi := &file_xds_type_matcher_v3_range_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DoubleRangeMatcher_RangeMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DoubleRangeMatcher_RangeMatcher) ProtoMessage() {}\n\nfunc (x *DoubleRangeMatcher_RangeMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_range_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DoubleRangeMatcher_RangeMatcher.ProtoReflect.Descriptor instead.\nfunc (*DoubleRangeMatcher_RangeMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_range_proto_rawDescGZIP(), []int{2, 0}\n}\n\nfunc (x *DoubleRangeMatcher_RangeMatcher) GetRanges() []*v3.DoubleRange {\n\tif x != nil {\n\t\treturn x.Ranges\n\t}\n\treturn nil\n}\n\nfunc (x *DoubleRangeMatcher_RangeMatcher) GetOnMatch() *Matcher_OnMatch {\n\tif x != nil {\n\t\treturn x.OnMatch\n\t}\n\treturn nil\n}\n\nvar File_xds_type_matcher_v3_range_proto protoreflect.FileDescriptor\n\nconst file_xds_type_matcher_v3_range_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1fxds/type/matcher/v3/range.proto\\x12\\x13xds.type.matcher.v3\\x1a\\x17xds/type/v3/range.proto\\x1a!xds/type/matcher/v3/matcher.proto\\x1a\\x17validate/validate.proto\\\"\\xfc\\x01\\n\" +\n\t\"\\x11Int64RangeMatcher\\x12Z\\n\" +\n\t\"\\x0erange_matchers\\x18\\x01 \\x03(\\v23.xds.type.matcher.v3.Int64RangeMatcher.RangeMatcherR\\rrangeMatchers\\x1a\\x8a\\x01\\n\" +\n\t\"\\fRangeMatcher\\x129\\n\" +\n\t\"\\x06ranges\\x18\\x01 \\x03(\\v2\\x17.xds.type.v3.Int64RangeB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\x06ranges\\x12?\\n\" +\n\t\"\\bon_match\\x18\\x02 \\x01(\\v2$.xds.type.matcher.v3.Matcher.OnMatchR\\aonMatch\\\"\\xfc\\x01\\n\" +\n\t\"\\x11Int32RangeMatcher\\x12Z\\n\" +\n\t\"\\x0erange_matchers\\x18\\x01 \\x03(\\v23.xds.type.matcher.v3.Int32RangeMatcher.RangeMatcherR\\rrangeMatchers\\x1a\\x8a\\x01\\n\" +\n\t\"\\fRangeMatcher\\x129\\n\" +\n\t\"\\x06ranges\\x18\\x01 \\x03(\\v2\\x17.xds.type.v3.Int32RangeB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\x06ranges\\x12?\\n\" +\n\t\"\\bon_match\\x18\\x02 \\x01(\\v2$.xds.type.matcher.v3.Matcher.OnMatchR\\aonMatch\\\"\\xff\\x01\\n\" +\n\t\"\\x12DoubleRangeMatcher\\x12[\\n\" +\n\t\"\\x0erange_matchers\\x18\\x01 \\x03(\\v24.xds.type.matcher.v3.DoubleRangeMatcher.RangeMatcherR\\rrangeMatchers\\x1a\\x8b\\x01\\n\" +\n\t\"\\fRangeMatcher\\x12:\\n\" +\n\t\"\\x06ranges\\x18\\x01 \\x03(\\v2\\x18.xds.type.v3.DoubleRangeB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\x06ranges\\x12?\\n\" +\n\t\"\\bon_match\\x18\\x02 \\x01(\\v2$.xds.type.matcher.v3.Matcher.OnMatchR\\aonMatchBZ\\n\" +\n\t\"\\x1ecom.github.xds.type.matcher.v3B\\n\" +\n\t\"RangeProtoP\\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_type_matcher_v3_range_proto_rawDescOnce sync.Once\n\tfile_xds_type_matcher_v3_range_proto_rawDescData []byte\n)\n\nfunc file_xds_type_matcher_v3_range_proto_rawDescGZIP() []byte {\n\tfile_xds_type_matcher_v3_range_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_type_matcher_v3_range_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_range_proto_rawDesc), len(file_xds_type_matcher_v3_range_proto_rawDesc)))\n\t})\n\treturn file_xds_type_matcher_v3_range_proto_rawDescData\n}\n\nvar file_xds_type_matcher_v3_range_proto_msgTypes = make([]protoimpl.MessageInfo, 6)\nvar file_xds_type_matcher_v3_range_proto_goTypes = []any{\n\t(*Int64RangeMatcher)(nil),               // 0: xds.type.matcher.v3.Int64RangeMatcher\n\t(*Int32RangeMatcher)(nil),               // 1: xds.type.matcher.v3.Int32RangeMatcher\n\t(*DoubleRangeMatcher)(nil),              // 2: xds.type.matcher.v3.DoubleRangeMatcher\n\t(*Int64RangeMatcher_RangeMatcher)(nil),  // 3: xds.type.matcher.v3.Int64RangeMatcher.RangeMatcher\n\t(*Int32RangeMatcher_RangeMatcher)(nil),  // 4: xds.type.matcher.v3.Int32RangeMatcher.RangeMatcher\n\t(*DoubleRangeMatcher_RangeMatcher)(nil), // 5: xds.type.matcher.v3.DoubleRangeMatcher.RangeMatcher\n\t(*v3.Int64Range)(nil),                   // 6: xds.type.v3.Int64Range\n\t(*Matcher_OnMatch)(nil),                 // 7: xds.type.matcher.v3.Matcher.OnMatch\n\t(*v3.Int32Range)(nil),                   // 8: xds.type.v3.Int32Range\n\t(*v3.DoubleRange)(nil),                  // 9: xds.type.v3.DoubleRange\n}\nvar file_xds_type_matcher_v3_range_proto_depIdxs = []int32{\n\t3, // 0: xds.type.matcher.v3.Int64RangeMatcher.range_matchers:type_name -> xds.type.matcher.v3.Int64RangeMatcher.RangeMatcher\n\t4, // 1: xds.type.matcher.v3.Int32RangeMatcher.range_matchers:type_name -> xds.type.matcher.v3.Int32RangeMatcher.RangeMatcher\n\t5, // 2: xds.type.matcher.v3.DoubleRangeMatcher.range_matchers:type_name -> xds.type.matcher.v3.DoubleRangeMatcher.RangeMatcher\n\t6, // 3: xds.type.matcher.v3.Int64RangeMatcher.RangeMatcher.ranges:type_name -> xds.type.v3.Int64Range\n\t7, // 4: xds.type.matcher.v3.Int64RangeMatcher.RangeMatcher.on_match:type_name -> xds.type.matcher.v3.Matcher.OnMatch\n\t8, // 5: xds.type.matcher.v3.Int32RangeMatcher.RangeMatcher.ranges:type_name -> xds.type.v3.Int32Range\n\t7, // 6: xds.type.matcher.v3.Int32RangeMatcher.RangeMatcher.on_match:type_name -> xds.type.matcher.v3.Matcher.OnMatch\n\t9, // 7: xds.type.matcher.v3.DoubleRangeMatcher.RangeMatcher.ranges:type_name -> xds.type.v3.DoubleRange\n\t7, // 8: xds.type.matcher.v3.DoubleRangeMatcher.RangeMatcher.on_match:type_name -> xds.type.matcher.v3.Matcher.OnMatch\n\t9, // [9:9] is the sub-list for method output_type\n\t9, // [9:9] is the sub-list for method input_type\n\t9, // [9:9] is the sub-list for extension type_name\n\t9, // [9:9] is the sub-list for extension extendee\n\t0, // [0:9] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_type_matcher_v3_range_proto_init() }\nfunc file_xds_type_matcher_v3_range_proto_init() {\n\tif File_xds_type_matcher_v3_range_proto != nil {\n\t\treturn\n\t}\n\tfile_xds_type_matcher_v3_matcher_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_range_proto_rawDesc), len(file_xds_type_matcher_v3_range_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   6,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_type_matcher_v3_range_proto_goTypes,\n\t\tDependencyIndexes: file_xds_type_matcher_v3_range_proto_depIdxs,\n\t\tMessageInfos:      file_xds_type_matcher_v3_range_proto_msgTypes,\n\t}.Build()\n\tFile_xds_type_matcher_v3_range_proto = out.File\n\tfile_xds_type_matcher_v3_range_proto_goTypes = nil\n\tfile_xds_type_matcher_v3_range_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/range.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/type/matcher/v3/range.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on Int64RangeMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *Int64RangeMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Int64RangeMatcher with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// Int64RangeMatcherMultiError, or nil if none found.\nfunc (m *Int64RangeMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Int64RangeMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetRangeMatchers() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Int64RangeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RangeMatchers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Int64RangeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RangeMatchers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Int64RangeMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RangeMatchers[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Int64RangeMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Int64RangeMatcherMultiError is an error wrapping multiple validation errors\n// returned by Int64RangeMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype Int64RangeMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Int64RangeMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Int64RangeMatcherMultiError) AllErrors() []error { return m }\n\n// Int64RangeMatcherValidationError is the validation error returned by\n// Int64RangeMatcher.Validate if the designated constraints aren't met.\ntype Int64RangeMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Int64RangeMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Int64RangeMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Int64RangeMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Int64RangeMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Int64RangeMatcherValidationError) ErrorName() string {\n\treturn \"Int64RangeMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Int64RangeMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sInt64RangeMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Int64RangeMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Int64RangeMatcherValidationError{}\n\n// Validate checks the field values on Int32RangeMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *Int32RangeMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Int32RangeMatcher with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// Int32RangeMatcherMultiError, or nil if none found.\nfunc (m *Int32RangeMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Int32RangeMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetRangeMatchers() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Int32RangeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RangeMatchers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Int32RangeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RangeMatchers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Int32RangeMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RangeMatchers[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Int32RangeMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Int32RangeMatcherMultiError is an error wrapping multiple validation errors\n// returned by Int32RangeMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype Int32RangeMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Int32RangeMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Int32RangeMatcherMultiError) AllErrors() []error { return m }\n\n// Int32RangeMatcherValidationError is the validation error returned by\n// Int32RangeMatcher.Validate if the designated constraints aren't met.\ntype Int32RangeMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Int32RangeMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Int32RangeMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Int32RangeMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Int32RangeMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Int32RangeMatcherValidationError) ErrorName() string {\n\treturn \"Int32RangeMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Int32RangeMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sInt32RangeMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Int32RangeMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Int32RangeMatcherValidationError{}\n\n// Validate checks the field values on DoubleRangeMatcher with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *DoubleRangeMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DoubleRangeMatcher with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// DoubleRangeMatcherMultiError, or nil if none found.\nfunc (m *DoubleRangeMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DoubleRangeMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetRangeMatchers() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DoubleRangeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RangeMatchers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DoubleRangeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RangeMatchers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DoubleRangeMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RangeMatchers[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn DoubleRangeMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DoubleRangeMatcherMultiError is an error wrapping multiple validation errors\n// returned by DoubleRangeMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype DoubleRangeMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DoubleRangeMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DoubleRangeMatcherMultiError) AllErrors() []error { return m }\n\n// DoubleRangeMatcherValidationError is the validation error returned by\n// DoubleRangeMatcher.Validate if the designated constraints aren't met.\ntype DoubleRangeMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DoubleRangeMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DoubleRangeMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DoubleRangeMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DoubleRangeMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DoubleRangeMatcherValidationError) ErrorName() string {\n\treturn \"DoubleRangeMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e DoubleRangeMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDoubleRangeMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DoubleRangeMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DoubleRangeMatcherValidationError{}\n\n// Validate checks the field values on Int64RangeMatcher_RangeMatcher with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *Int64RangeMatcher_RangeMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Int64RangeMatcher_RangeMatcher with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// Int64RangeMatcher_RangeMatcherMultiError, or nil if none found.\nfunc (m *Int64RangeMatcher_RangeMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Int64RangeMatcher_RangeMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetRanges()) < 1 {\n\t\terr := Int64RangeMatcher_RangeMatcherValidationError{\n\t\t\tfield:  \"Ranges\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetRanges() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Int64RangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Int64RangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Int64RangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetOnMatch()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Int64RangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Int64RangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetOnMatch()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Int64RangeMatcher_RangeMatcherValidationError{\n\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Int64RangeMatcher_RangeMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Int64RangeMatcher_RangeMatcherMultiError is an error wrapping multiple\n// validation errors returned by Int64RangeMatcher_RangeMatcher.ValidateAll()\n// if the designated constraints aren't met.\ntype Int64RangeMatcher_RangeMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Int64RangeMatcher_RangeMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Int64RangeMatcher_RangeMatcherMultiError) AllErrors() []error { return m }\n\n// Int64RangeMatcher_RangeMatcherValidationError is the validation error\n// returned by Int64RangeMatcher_RangeMatcher.Validate if the designated\n// constraints aren't met.\ntype Int64RangeMatcher_RangeMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Int64RangeMatcher_RangeMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Int64RangeMatcher_RangeMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Int64RangeMatcher_RangeMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Int64RangeMatcher_RangeMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Int64RangeMatcher_RangeMatcherValidationError) ErrorName() string {\n\treturn \"Int64RangeMatcher_RangeMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Int64RangeMatcher_RangeMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sInt64RangeMatcher_RangeMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Int64RangeMatcher_RangeMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Int64RangeMatcher_RangeMatcherValidationError{}\n\n// Validate checks the field values on Int32RangeMatcher_RangeMatcher with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *Int32RangeMatcher_RangeMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Int32RangeMatcher_RangeMatcher with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// Int32RangeMatcher_RangeMatcherMultiError, or nil if none found.\nfunc (m *Int32RangeMatcher_RangeMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Int32RangeMatcher_RangeMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetRanges()) < 1 {\n\t\terr := Int32RangeMatcher_RangeMatcherValidationError{\n\t\t\tfield:  \"Ranges\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetRanges() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Int32RangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Int32RangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Int32RangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetOnMatch()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Int32RangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Int32RangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetOnMatch()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Int32RangeMatcher_RangeMatcherValidationError{\n\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Int32RangeMatcher_RangeMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Int32RangeMatcher_RangeMatcherMultiError is an error wrapping multiple\n// validation errors returned by Int32RangeMatcher_RangeMatcher.ValidateAll()\n// if the designated constraints aren't met.\ntype Int32RangeMatcher_RangeMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Int32RangeMatcher_RangeMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Int32RangeMatcher_RangeMatcherMultiError) AllErrors() []error { return m }\n\n// Int32RangeMatcher_RangeMatcherValidationError is the validation error\n// returned by Int32RangeMatcher_RangeMatcher.Validate if the designated\n// constraints aren't met.\ntype Int32RangeMatcher_RangeMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Int32RangeMatcher_RangeMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Int32RangeMatcher_RangeMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Int32RangeMatcher_RangeMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Int32RangeMatcher_RangeMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Int32RangeMatcher_RangeMatcherValidationError) ErrorName() string {\n\treturn \"Int32RangeMatcher_RangeMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Int32RangeMatcher_RangeMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sInt32RangeMatcher_RangeMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Int32RangeMatcher_RangeMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Int32RangeMatcher_RangeMatcherValidationError{}\n\n// Validate checks the field values on DoubleRangeMatcher_RangeMatcher with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *DoubleRangeMatcher_RangeMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DoubleRangeMatcher_RangeMatcher with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// DoubleRangeMatcher_RangeMatcherMultiError, or nil if none found.\nfunc (m *DoubleRangeMatcher_RangeMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DoubleRangeMatcher_RangeMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetRanges()) < 1 {\n\t\terr := DoubleRangeMatcher_RangeMatcherValidationError{\n\t\t\tfield:  \"Ranges\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetRanges() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DoubleRangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DoubleRangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DoubleRangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetOnMatch()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, DoubleRangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, DoubleRangeMatcher_RangeMatcherValidationError{\n\t\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetOnMatch()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn DoubleRangeMatcher_RangeMatcherValidationError{\n\t\t\t\tfield:  \"OnMatch\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn DoubleRangeMatcher_RangeMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DoubleRangeMatcher_RangeMatcherMultiError is an error wrapping multiple\n// validation errors returned by DoubleRangeMatcher_RangeMatcher.ValidateAll()\n// if the designated constraints aren't met.\ntype DoubleRangeMatcher_RangeMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DoubleRangeMatcher_RangeMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DoubleRangeMatcher_RangeMatcherMultiError) AllErrors() []error { return m }\n\n// DoubleRangeMatcher_RangeMatcherValidationError is the validation error\n// returned by DoubleRangeMatcher_RangeMatcher.Validate if the designated\n// constraints aren't met.\ntype DoubleRangeMatcher_RangeMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DoubleRangeMatcher_RangeMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DoubleRangeMatcher_RangeMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DoubleRangeMatcher_RangeMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DoubleRangeMatcher_RangeMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DoubleRangeMatcher_RangeMatcherValidationError) ErrorName() string {\n\treturn \"DoubleRangeMatcher_RangeMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e DoubleRangeMatcher_RangeMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDoubleRangeMatcher_RangeMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DoubleRangeMatcher_RangeMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DoubleRangeMatcher_RangeMatcherValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/regex.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/type/matcher/v3/regex.proto\n\npackage v3\n\nimport (\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype RegexMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to EngineType:\n\t//\n\t//\t*RegexMatcher_GoogleRe2\n\tEngineType    isRegexMatcher_EngineType `protobuf_oneof:\"engine_type\"`\n\tRegex         string                    `protobuf:\"bytes,2,opt,name=regex,proto3\" json:\"regex,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RegexMatcher) Reset() {\n\t*x = RegexMatcher{}\n\tmi := &file_xds_type_matcher_v3_regex_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RegexMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RegexMatcher) ProtoMessage() {}\n\nfunc (x *RegexMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_regex_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RegexMatcher.ProtoReflect.Descriptor instead.\nfunc (*RegexMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_regex_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *RegexMatcher) GetEngineType() isRegexMatcher_EngineType {\n\tif x != nil {\n\t\treturn x.EngineType\n\t}\n\treturn nil\n}\n\nfunc (x *RegexMatcher) GetGoogleRe2() *RegexMatcher_GoogleRE2 {\n\tif x != nil {\n\t\tif x, ok := x.EngineType.(*RegexMatcher_GoogleRe2); ok {\n\t\t\treturn x.GoogleRe2\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RegexMatcher) GetRegex() string {\n\tif x != nil {\n\t\treturn x.Regex\n\t}\n\treturn \"\"\n}\n\ntype isRegexMatcher_EngineType interface {\n\tisRegexMatcher_EngineType()\n}\n\ntype RegexMatcher_GoogleRe2 struct {\n\tGoogleRe2 *RegexMatcher_GoogleRE2 `protobuf:\"bytes,1,opt,name=google_re2,json=googleRe2,proto3,oneof\"`\n}\n\nfunc (*RegexMatcher_GoogleRe2) isRegexMatcher_EngineType() {}\n\ntype RegexMatcher_GoogleRE2 struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RegexMatcher_GoogleRE2) Reset() {\n\t*x = RegexMatcher_GoogleRE2{}\n\tmi := &file_xds_type_matcher_v3_regex_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RegexMatcher_GoogleRE2) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RegexMatcher_GoogleRE2) ProtoMessage() {}\n\nfunc (x *RegexMatcher_GoogleRE2) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_regex_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RegexMatcher_GoogleRE2.ProtoReflect.Descriptor instead.\nfunc (*RegexMatcher_GoogleRE2) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_regex_proto_rawDescGZIP(), []int{0, 0}\n}\n\nvar File_xds_type_matcher_v3_regex_proto protoreflect.FileDescriptor\n\nconst file_xds_type_matcher_v3_regex_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1fxds/type/matcher/v3/regex.proto\\x12\\x13xds.type.matcher.v3\\x1a\\x17validate/validate.proto\\\"\\xa6\\x01\\n\" +\n\t\"\\fRegexMatcher\\x12V\\n\" +\n\t\"\\n\" +\n\t\"google_re2\\x18\\x01 \\x01(\\v2+.xds.type.matcher.v3.RegexMatcher.GoogleRE2B\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01H\\x00R\\tgoogleRe2\\x12\\x1d\\n\" +\n\t\"\\x05regex\\x18\\x02 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x05regex\\x1a\\v\\n\" +\n\t\"\\tGoogleRE2B\\x12\\n\" +\n\t\"\\vengine_type\\x12\\x03\\xf8B\\x01BZ\\n\" +\n\t\"\\x1ecom.github.xds.type.matcher.v3B\\n\" +\n\t\"RegexProtoP\\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_type_matcher_v3_regex_proto_rawDescOnce sync.Once\n\tfile_xds_type_matcher_v3_regex_proto_rawDescData []byte\n)\n\nfunc file_xds_type_matcher_v3_regex_proto_rawDescGZIP() []byte {\n\tfile_xds_type_matcher_v3_regex_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_type_matcher_v3_regex_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_regex_proto_rawDesc), len(file_xds_type_matcher_v3_regex_proto_rawDesc)))\n\t})\n\treturn file_xds_type_matcher_v3_regex_proto_rawDescData\n}\n\nvar file_xds_type_matcher_v3_regex_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_xds_type_matcher_v3_regex_proto_goTypes = []any{\n\t(*RegexMatcher)(nil),           // 0: xds.type.matcher.v3.RegexMatcher\n\t(*RegexMatcher_GoogleRE2)(nil), // 1: xds.type.matcher.v3.RegexMatcher.GoogleRE2\n}\nvar file_xds_type_matcher_v3_regex_proto_depIdxs = []int32{\n\t1, // 0: xds.type.matcher.v3.RegexMatcher.google_re2:type_name -> xds.type.matcher.v3.RegexMatcher.GoogleRE2\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_type_matcher_v3_regex_proto_init() }\nfunc file_xds_type_matcher_v3_regex_proto_init() {\n\tif File_xds_type_matcher_v3_regex_proto != nil {\n\t\treturn\n\t}\n\tfile_xds_type_matcher_v3_regex_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*RegexMatcher_GoogleRe2)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_regex_proto_rawDesc), len(file_xds_type_matcher_v3_regex_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_type_matcher_v3_regex_proto_goTypes,\n\t\tDependencyIndexes: file_xds_type_matcher_v3_regex_proto_depIdxs,\n\t\tMessageInfos:      file_xds_type_matcher_v3_regex_proto_msgTypes,\n\t}.Build()\n\tFile_xds_type_matcher_v3_regex_proto = out.File\n\tfile_xds_type_matcher_v3_regex_proto_goTypes = nil\n\tfile_xds_type_matcher_v3_regex_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/regex.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/type/matcher/v3/regex.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on RegexMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *RegexMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RegexMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in RegexMatcherMultiError, or\n// nil if none found.\nfunc (m *RegexMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RegexMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetRegex()) < 1 {\n\t\terr := RegexMatcherValidationError{\n\t\t\tfield:  \"Regex\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\toneofEngineTypePresent := false\n\tswitch v := m.EngineType.(type) {\n\tcase *RegexMatcher_GoogleRe2:\n\t\tif v == nil {\n\t\t\terr := RegexMatcherValidationError{\n\t\t\t\tfield:  \"EngineType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofEngineTypePresent = true\n\n\t\tif m.GetGoogleRe2() == nil {\n\t\t\terr := RegexMatcherValidationError{\n\t\t\t\tfield:  \"GoogleRe2\",\n\t\t\t\treason: \"value is required\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetGoogleRe2()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RegexMatcherValidationError{\n\t\t\t\t\t\tfield:  \"GoogleRe2\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RegexMatcherValidationError{\n\t\t\t\t\t\tfield:  \"GoogleRe2\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetGoogleRe2()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RegexMatcherValidationError{\n\t\t\t\t\tfield:  \"GoogleRe2\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofEngineTypePresent {\n\t\terr := RegexMatcherValidationError{\n\t\t\tfield:  \"EngineType\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RegexMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RegexMatcherMultiError is an error wrapping multiple validation errors\n// returned by RegexMatcher.ValidateAll() if the designated constraints aren't met.\ntype RegexMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RegexMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RegexMatcherMultiError) AllErrors() []error { return m }\n\n// RegexMatcherValidationError is the validation error returned by\n// RegexMatcher.Validate if the designated constraints aren't met.\ntype RegexMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RegexMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RegexMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RegexMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RegexMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RegexMatcherValidationError) ErrorName() string { return \"RegexMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RegexMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRegexMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RegexMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RegexMatcherValidationError{}\n\n// Validate checks the field values on RegexMatcher_GoogleRE2 with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RegexMatcher_GoogleRE2) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RegexMatcher_GoogleRE2 with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RegexMatcher_GoogleRE2MultiError, or nil if none found.\nfunc (m *RegexMatcher_GoogleRE2) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RegexMatcher_GoogleRE2) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn RegexMatcher_GoogleRE2MultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RegexMatcher_GoogleRE2MultiError is an error wrapping multiple validation\n// errors returned by RegexMatcher_GoogleRE2.ValidateAll() if the designated\n// constraints aren't met.\ntype RegexMatcher_GoogleRE2MultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RegexMatcher_GoogleRE2MultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RegexMatcher_GoogleRE2MultiError) AllErrors() []error { return m }\n\n// RegexMatcher_GoogleRE2ValidationError is the validation error returned by\n// RegexMatcher_GoogleRE2.Validate if the designated constraints aren't met.\ntype RegexMatcher_GoogleRE2ValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RegexMatcher_GoogleRE2ValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RegexMatcher_GoogleRE2ValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RegexMatcher_GoogleRE2ValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RegexMatcher_GoogleRE2ValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RegexMatcher_GoogleRE2ValidationError) ErrorName() string {\n\treturn \"RegexMatcher_GoogleRE2ValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RegexMatcher_GoogleRE2ValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRegexMatcher_GoogleRE2.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RegexMatcher_GoogleRE2ValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RegexMatcher_GoogleRE2ValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/string.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/type/matcher/v3/string.proto\n\npackage v3\n\nimport (\n\tv3 \"github.com/cncf/xds/go/xds/core/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype StringMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to MatchPattern:\n\t//\n\t//\t*StringMatcher_Exact\n\t//\t*StringMatcher_Prefix\n\t//\t*StringMatcher_Suffix\n\t//\t*StringMatcher_SafeRegex\n\t//\t*StringMatcher_Contains\n\t//\t*StringMatcher_Custom\n\tMatchPattern  isStringMatcher_MatchPattern `protobuf_oneof:\"match_pattern\"`\n\tIgnoreCase    bool                         `protobuf:\"varint,6,opt,name=ignore_case,json=ignoreCase,proto3\" json:\"ignore_case,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *StringMatcher) Reset() {\n\t*x = StringMatcher{}\n\tmi := &file_xds_type_matcher_v3_string_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *StringMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*StringMatcher) ProtoMessage() {}\n\nfunc (x *StringMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_string_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use StringMatcher.ProtoReflect.Descriptor instead.\nfunc (*StringMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_string_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *StringMatcher) GetMatchPattern() isStringMatcher_MatchPattern {\n\tif x != nil {\n\t\treturn x.MatchPattern\n\t}\n\treturn nil\n}\n\nfunc (x *StringMatcher) GetExact() string {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*StringMatcher_Exact); ok {\n\t\t\treturn x.Exact\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *StringMatcher) GetPrefix() string {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*StringMatcher_Prefix); ok {\n\t\t\treturn x.Prefix\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *StringMatcher) GetSuffix() string {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*StringMatcher_Suffix); ok {\n\t\t\treturn x.Suffix\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *StringMatcher) GetSafeRegex() *RegexMatcher {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*StringMatcher_SafeRegex); ok {\n\t\t\treturn x.SafeRegex\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *StringMatcher) GetContains() string {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*StringMatcher_Contains); ok {\n\t\t\treturn x.Contains\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *StringMatcher) GetCustom() *v3.TypedExtensionConfig {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*StringMatcher_Custom); ok {\n\t\t\treturn x.Custom\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *StringMatcher) GetIgnoreCase() bool {\n\tif x != nil {\n\t\treturn x.IgnoreCase\n\t}\n\treturn false\n}\n\ntype isStringMatcher_MatchPattern interface {\n\tisStringMatcher_MatchPattern()\n}\n\ntype StringMatcher_Exact struct {\n\tExact string `protobuf:\"bytes,1,opt,name=exact,proto3,oneof\"`\n}\n\ntype StringMatcher_Prefix struct {\n\tPrefix string `protobuf:\"bytes,2,opt,name=prefix,proto3,oneof\"`\n}\n\ntype StringMatcher_Suffix struct {\n\tSuffix string `protobuf:\"bytes,3,opt,name=suffix,proto3,oneof\"`\n}\n\ntype StringMatcher_SafeRegex struct {\n\tSafeRegex *RegexMatcher `protobuf:\"bytes,5,opt,name=safe_regex,json=safeRegex,proto3,oneof\"`\n}\n\ntype StringMatcher_Contains struct {\n\tContains string `protobuf:\"bytes,7,opt,name=contains,proto3,oneof\"`\n}\n\ntype StringMatcher_Custom struct {\n\tCustom *v3.TypedExtensionConfig `protobuf:\"bytes,8,opt,name=custom,proto3,oneof\"`\n}\n\nfunc (*StringMatcher_Exact) isStringMatcher_MatchPattern() {}\n\nfunc (*StringMatcher_Prefix) isStringMatcher_MatchPattern() {}\n\nfunc (*StringMatcher_Suffix) isStringMatcher_MatchPattern() {}\n\nfunc (*StringMatcher_SafeRegex) isStringMatcher_MatchPattern() {}\n\nfunc (*StringMatcher_Contains) isStringMatcher_MatchPattern() {}\n\nfunc (*StringMatcher_Custom) isStringMatcher_MatchPattern() {}\n\ntype ListStringMatcher struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tPatterns      []*StringMatcher       `protobuf:\"bytes,1,rep,name=patterns,proto3\" json:\"patterns,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ListStringMatcher) Reset() {\n\t*x = ListStringMatcher{}\n\tmi := &file_xds_type_matcher_v3_string_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ListStringMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ListStringMatcher) ProtoMessage() {}\n\nfunc (x *ListStringMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_matcher_v3_string_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ListStringMatcher.ProtoReflect.Descriptor instead.\nfunc (*ListStringMatcher) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_matcher_v3_string_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ListStringMatcher) GetPatterns() []*StringMatcher {\n\tif x != nil {\n\t\treturn x.Patterns\n\t}\n\treturn nil\n}\n\nvar File_xds_type_matcher_v3_string_proto protoreflect.FileDescriptor\n\nconst file_xds_type_matcher_v3_string_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\" xds/type/matcher/v3/string.proto\\x12\\x13xds.type.matcher.v3\\x1a\\x1bxds/core/v3/extension.proto\\x1a\\x1fxds/type/matcher/v3/regex.proto\\x1a\\x17validate/validate.proto\\\"\\xd6\\x02\\n\" +\n\t\"\\rStringMatcher\\x12\\x16\\n\" +\n\t\"\\x05exact\\x18\\x01 \\x01(\\tH\\x00R\\x05exact\\x12!\\n\" +\n\t\"\\x06prefix\\x18\\x02 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01H\\x00R\\x06prefix\\x12!\\n\" +\n\t\"\\x06suffix\\x18\\x03 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01H\\x00R\\x06suffix\\x12L\\n\" +\n\t\"\\n\" +\n\t\"safe_regex\\x18\\x05 \\x01(\\v2!.xds.type.matcher.v3.RegexMatcherB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01H\\x00R\\tsafeRegex\\x12%\\n\" +\n\t\"\\bcontains\\x18\\a \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01H\\x00R\\bcontains\\x12;\\n\" +\n\t\"\\x06custom\\x18\\b \\x01(\\v2!.xds.core.v3.TypedExtensionConfigH\\x00R\\x06custom\\x12\\x1f\\n\" +\n\t\"\\vignore_case\\x18\\x06 \\x01(\\bR\\n\" +\n\t\"ignoreCaseB\\x14\\n\" +\n\t\"\\rmatch_pattern\\x12\\x03\\xf8B\\x01\\\"]\\n\" +\n\t\"\\x11ListStringMatcher\\x12H\\n\" +\n\t\"\\bpatterns\\x18\\x01 \\x03(\\v2\\\".xds.type.matcher.v3.StringMatcherB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\bpatternsB[\\n\" +\n\t\"\\x1ecom.github.xds.type.matcher.v3B\\vStringProtoP\\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_type_matcher_v3_string_proto_rawDescOnce sync.Once\n\tfile_xds_type_matcher_v3_string_proto_rawDescData []byte\n)\n\nfunc file_xds_type_matcher_v3_string_proto_rawDescGZIP() []byte {\n\tfile_xds_type_matcher_v3_string_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_type_matcher_v3_string_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_string_proto_rawDesc), len(file_xds_type_matcher_v3_string_proto_rawDesc)))\n\t})\n\treturn file_xds_type_matcher_v3_string_proto_rawDescData\n}\n\nvar file_xds_type_matcher_v3_string_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_xds_type_matcher_v3_string_proto_goTypes = []any{\n\t(*StringMatcher)(nil),           // 0: xds.type.matcher.v3.StringMatcher\n\t(*ListStringMatcher)(nil),       // 1: xds.type.matcher.v3.ListStringMatcher\n\t(*RegexMatcher)(nil),            // 2: xds.type.matcher.v3.RegexMatcher\n\t(*v3.TypedExtensionConfig)(nil), // 3: xds.core.v3.TypedExtensionConfig\n}\nvar file_xds_type_matcher_v3_string_proto_depIdxs = []int32{\n\t2, // 0: xds.type.matcher.v3.StringMatcher.safe_regex:type_name -> xds.type.matcher.v3.RegexMatcher\n\t3, // 1: xds.type.matcher.v3.StringMatcher.custom:type_name -> xds.core.v3.TypedExtensionConfig\n\t0, // 2: xds.type.matcher.v3.ListStringMatcher.patterns:type_name -> xds.type.matcher.v3.StringMatcher\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t3, // [3:3] is the sub-list for extension type_name\n\t3, // [3:3] is the sub-list for extension extendee\n\t0, // [0:3] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_type_matcher_v3_string_proto_init() }\nfunc file_xds_type_matcher_v3_string_proto_init() {\n\tif File_xds_type_matcher_v3_string_proto != nil {\n\t\treturn\n\t}\n\tfile_xds_type_matcher_v3_regex_proto_init()\n\tfile_xds_type_matcher_v3_string_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*StringMatcher_Exact)(nil),\n\t\t(*StringMatcher_Prefix)(nil),\n\t\t(*StringMatcher_Suffix)(nil),\n\t\t(*StringMatcher_SafeRegex)(nil),\n\t\t(*StringMatcher_Contains)(nil),\n\t\t(*StringMatcher_Custom)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_type_matcher_v3_string_proto_rawDesc), len(file_xds_type_matcher_v3_string_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_type_matcher_v3_string_proto_goTypes,\n\t\tDependencyIndexes: file_xds_type_matcher_v3_string_proto_depIdxs,\n\t\tMessageInfos:      file_xds_type_matcher_v3_string_proto_msgTypes,\n\t}.Build()\n\tFile_xds_type_matcher_v3_string_proto = out.File\n\tfile_xds_type_matcher_v3_string_proto_goTypes = nil\n\tfile_xds_type_matcher_v3_string_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/matcher/v3/string.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/type/matcher/v3/string.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on StringMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *StringMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on StringMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in StringMatcherMultiError, or\n// nil if none found.\nfunc (m *StringMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *StringMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for IgnoreCase\n\n\toneofMatchPatternPresent := false\n\tswitch v := m.MatchPattern.(type) {\n\tcase *StringMatcher_Exact:\n\t\tif v == nil {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\t\t// no validation rules for Exact\n\tcase *StringMatcher_Prefix:\n\t\tif v == nil {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif utf8.RuneCountInString(m.GetPrefix()) < 1 {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"Prefix\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *StringMatcher_Suffix:\n\t\tif v == nil {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif utf8.RuneCountInString(m.GetSuffix()) < 1 {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"Suffix\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *StringMatcher_SafeRegex:\n\t\tif v == nil {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif m.GetSafeRegex() == nil {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"SafeRegex\",\n\t\t\t\treason: \"value is required\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetSafeRegex()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, StringMatcherValidationError{\n\t\t\t\t\t\tfield:  \"SafeRegex\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, StringMatcherValidationError{\n\t\t\t\t\t\tfield:  \"SafeRegex\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetSafeRegex()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn StringMatcherValidationError{\n\t\t\t\t\tfield:  \"SafeRegex\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *StringMatcher_Contains:\n\t\tif v == nil {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif utf8.RuneCountInString(m.GetContains()) < 1 {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"Contains\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *StringMatcher_Custom:\n\t\tif v == nil {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetCustom()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, StringMatcherValidationError{\n\t\t\t\t\t\tfield:  \"Custom\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, StringMatcherValidationError{\n\t\t\t\t\t\tfield:  \"Custom\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetCustom()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn StringMatcherValidationError{\n\t\t\t\t\tfield:  \"Custom\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofMatchPatternPresent {\n\t\terr := StringMatcherValidationError{\n\t\t\tfield:  \"MatchPattern\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn StringMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// StringMatcherMultiError is an error wrapping multiple validation errors\n// returned by StringMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype StringMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m StringMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m StringMatcherMultiError) AllErrors() []error { return m }\n\n// StringMatcherValidationError is the validation error returned by\n// StringMatcher.Validate if the designated constraints aren't met.\ntype StringMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e StringMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e StringMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e StringMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e StringMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e StringMatcherValidationError) ErrorName() string { return \"StringMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e StringMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sStringMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = StringMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = StringMatcherValidationError{}\n\n// Validate checks the field values on ListStringMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *ListStringMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ListStringMatcher with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ListStringMatcherMultiError, or nil if none found.\nfunc (m *ListStringMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ListStringMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetPatterns()) < 1 {\n\t\terr := ListStringMatcherValidationError{\n\t\t\tfield:  \"Patterns\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetPatterns() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ListStringMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Patterns[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ListStringMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Patterns[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ListStringMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Patterns[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ListStringMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ListStringMatcherMultiError is an error wrapping multiple validation errors\n// returned by ListStringMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype ListStringMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ListStringMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ListStringMatcherMultiError) AllErrors() []error { return m }\n\n// ListStringMatcherValidationError is the validation error returned by\n// ListStringMatcher.Validate if the designated constraints aren't met.\ntype ListStringMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ListStringMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ListStringMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ListStringMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ListStringMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ListStringMatcherValidationError) ErrorName() string {\n\treturn \"ListStringMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ListStringMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sListStringMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ListStringMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ListStringMatcherValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/v3/cel.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/type/v3/cel.proto\n\npackage v3\n\nimport (\n\texpr \"cel.dev/expr\"\n\t_ \"github.com/cncf/xds/go/xds/annotations/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tv1alpha1 \"google.golang.org/genproto/googleapis/api/expr/v1alpha1\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype CelExpression struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to ExprSpecifier:\n\t//\n\t//\t*CelExpression_ParsedExpr\n\t//\t*CelExpression_CheckedExpr\n\tExprSpecifier  isCelExpression_ExprSpecifier `protobuf_oneof:\"expr_specifier\"`\n\tCelExprParsed  *expr.ParsedExpr              `protobuf:\"bytes,3,opt,name=cel_expr_parsed,json=celExprParsed,proto3\" json:\"cel_expr_parsed,omitempty\"`\n\tCelExprChecked *expr.CheckedExpr             `protobuf:\"bytes,4,opt,name=cel_expr_checked,json=celExprChecked,proto3\" json:\"cel_expr_checked,omitempty\"`\n\tCelExprString  string                        `protobuf:\"bytes,5,opt,name=cel_expr_string,json=celExprString,proto3\" json:\"cel_expr_string,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *CelExpression) Reset() {\n\t*x = CelExpression{}\n\tmi := &file_xds_type_v3_cel_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CelExpression) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CelExpression) ProtoMessage() {}\n\nfunc (x *CelExpression) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_v3_cel_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CelExpression.ProtoReflect.Descriptor instead.\nfunc (*CelExpression) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_v3_cel_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *CelExpression) GetExprSpecifier() isCelExpression_ExprSpecifier {\n\tif x != nil {\n\t\treturn x.ExprSpecifier\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in xds/type/v3/cel.proto.\nfunc (x *CelExpression) GetParsedExpr() *v1alpha1.ParsedExpr {\n\tif x != nil {\n\t\tif x, ok := x.ExprSpecifier.(*CelExpression_ParsedExpr); ok {\n\t\t\treturn x.ParsedExpr\n\t\t}\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in xds/type/v3/cel.proto.\nfunc (x *CelExpression) GetCheckedExpr() *v1alpha1.CheckedExpr {\n\tif x != nil {\n\t\tif x, ok := x.ExprSpecifier.(*CelExpression_CheckedExpr); ok {\n\t\t\treturn x.CheckedExpr\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *CelExpression) GetCelExprParsed() *expr.ParsedExpr {\n\tif x != nil {\n\t\treturn x.CelExprParsed\n\t}\n\treturn nil\n}\n\nfunc (x *CelExpression) GetCelExprChecked() *expr.CheckedExpr {\n\tif x != nil {\n\t\treturn x.CelExprChecked\n\t}\n\treturn nil\n}\n\nfunc (x *CelExpression) GetCelExprString() string {\n\tif x != nil {\n\t\treturn x.CelExprString\n\t}\n\treturn \"\"\n}\n\ntype isCelExpression_ExprSpecifier interface {\n\tisCelExpression_ExprSpecifier()\n}\n\ntype CelExpression_ParsedExpr struct {\n\t// Deprecated: Marked as deprecated in xds/type/v3/cel.proto.\n\tParsedExpr *v1alpha1.ParsedExpr `protobuf:\"bytes,1,opt,name=parsed_expr,json=parsedExpr,proto3,oneof\"`\n}\n\ntype CelExpression_CheckedExpr struct {\n\t// Deprecated: Marked as deprecated in xds/type/v3/cel.proto.\n\tCheckedExpr *v1alpha1.CheckedExpr `protobuf:\"bytes,2,opt,name=checked_expr,json=checkedExpr,proto3,oneof\"`\n}\n\nfunc (*CelExpression_ParsedExpr) isCelExpression_ExprSpecifier() {}\n\nfunc (*CelExpression_CheckedExpr) isCelExpression_ExprSpecifier() {}\n\ntype CelExtractString struct {\n\tstate         protoimpl.MessageState  `protogen:\"open.v1\"`\n\tExprExtract   *CelExpression          `protobuf:\"bytes,1,opt,name=expr_extract,json=exprExtract,proto3\" json:\"expr_extract,omitempty\"`\n\tDefaultValue  *wrapperspb.StringValue `protobuf:\"bytes,2,opt,name=default_value,json=defaultValue,proto3\" json:\"default_value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *CelExtractString) Reset() {\n\t*x = CelExtractString{}\n\tmi := &file_xds_type_v3_cel_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CelExtractString) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CelExtractString) ProtoMessage() {}\n\nfunc (x *CelExtractString) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_v3_cel_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CelExtractString.ProtoReflect.Descriptor instead.\nfunc (*CelExtractString) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_v3_cel_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *CelExtractString) GetExprExtract() *CelExpression {\n\tif x != nil {\n\t\treturn x.ExprExtract\n\t}\n\treturn nil\n}\n\nfunc (x *CelExtractString) GetDefaultValue() *wrapperspb.StringValue {\n\tif x != nil {\n\t\treturn x.DefaultValue\n\t}\n\treturn nil\n}\n\nvar File_xds_type_v3_cel_proto protoreflect.FileDescriptor\n\nconst file_xds_type_v3_cel_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x15xds/type/v3/cel.proto\\x12\\vxds.type.v3\\x1a&google/api/expr/v1alpha1/checked.proto\\x1a%google/api/expr/v1alpha1/syntax.proto\\x1a\\x16cel/expr/checked.proto\\x1a\\x15cel/expr/syntax.proto\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a\\x1fxds/annotations/v3/status.proto\\x1a\\x17validate/validate.proto\\\"\\xe5\\x02\\n\" +\n\t\"\\rCelExpression\\x12K\\n\" +\n\t\"\\vparsed_expr\\x18\\x01 \\x01(\\v2$.google.api.expr.v1alpha1.ParsedExprB\\x02\\x18\\x01H\\x00R\\n\" +\n\t\"parsedExpr\\x12N\\n\" +\n\t\"\\fchecked_expr\\x18\\x02 \\x01(\\v2%.google.api.expr.v1alpha1.CheckedExprB\\x02\\x18\\x01H\\x00R\\vcheckedExpr\\x12<\\n\" +\n\t\"\\x0fcel_expr_parsed\\x18\\x03 \\x01(\\v2\\x14.cel.expr.ParsedExprR\\rcelExprParsed\\x12?\\n\" +\n\t\"\\x10cel_expr_checked\\x18\\x04 \\x01(\\v2\\x15.cel.expr.CheckedExprR\\x0ecelExprChecked\\x12&\\n\" +\n\t\"\\x0fcel_expr_string\\x18\\x05 \\x01(\\tR\\rcelExprStringB\\x10\\n\" +\n\t\"\\x0eexpr_specifier\\\"\\x9e\\x01\\n\" +\n\t\"\\x10CelExtractString\\x12G\\n\" +\n\t\"\\fexpr_extract\\x18\\x01 \\x01(\\v2\\x1a.xds.type.v3.CelExpressionB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\vexprExtract\\x12A\\n\" +\n\t\"\\rdefault_value\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.StringValueR\\fdefaultValueBP\\xd2Ƥ\\xe1\\x06\\x02\\b\\x01\\n\" +\n\t\"\\x16com.github.xds.type.v3B\\bCelProtoP\\x01Z\\\"github.com/cncf/xds/go/xds/type/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_type_v3_cel_proto_rawDescOnce sync.Once\n\tfile_xds_type_v3_cel_proto_rawDescData []byte\n)\n\nfunc file_xds_type_v3_cel_proto_rawDescGZIP() []byte {\n\tfile_xds_type_v3_cel_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_type_v3_cel_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_type_v3_cel_proto_rawDesc), len(file_xds_type_v3_cel_proto_rawDesc)))\n\t})\n\treturn file_xds_type_v3_cel_proto_rawDescData\n}\n\nvar file_xds_type_v3_cel_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_xds_type_v3_cel_proto_goTypes = []any{\n\t(*CelExpression)(nil),          // 0: xds.type.v3.CelExpression\n\t(*CelExtractString)(nil),       // 1: xds.type.v3.CelExtractString\n\t(*v1alpha1.ParsedExpr)(nil),    // 2: google.api.expr.v1alpha1.ParsedExpr\n\t(*v1alpha1.CheckedExpr)(nil),   // 3: google.api.expr.v1alpha1.CheckedExpr\n\t(*expr.ParsedExpr)(nil),        // 4: cel.expr.ParsedExpr\n\t(*expr.CheckedExpr)(nil),       // 5: cel.expr.CheckedExpr\n\t(*wrapperspb.StringValue)(nil), // 6: google.protobuf.StringValue\n}\nvar file_xds_type_v3_cel_proto_depIdxs = []int32{\n\t2, // 0: xds.type.v3.CelExpression.parsed_expr:type_name -> google.api.expr.v1alpha1.ParsedExpr\n\t3, // 1: xds.type.v3.CelExpression.checked_expr:type_name -> google.api.expr.v1alpha1.CheckedExpr\n\t4, // 2: xds.type.v3.CelExpression.cel_expr_parsed:type_name -> cel.expr.ParsedExpr\n\t5, // 3: xds.type.v3.CelExpression.cel_expr_checked:type_name -> cel.expr.CheckedExpr\n\t0, // 4: xds.type.v3.CelExtractString.expr_extract:type_name -> xds.type.v3.CelExpression\n\t6, // 5: xds.type.v3.CelExtractString.default_value:type_name -> google.protobuf.StringValue\n\t6, // [6:6] is the sub-list for method output_type\n\t6, // [6:6] is the sub-list for method input_type\n\t6, // [6:6] is the sub-list for extension type_name\n\t6, // [6:6] is the sub-list for extension extendee\n\t0, // [0:6] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_type_v3_cel_proto_init() }\nfunc file_xds_type_v3_cel_proto_init() {\n\tif File_xds_type_v3_cel_proto != nil {\n\t\treturn\n\t}\n\tfile_xds_type_v3_cel_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*CelExpression_ParsedExpr)(nil),\n\t\t(*CelExpression_CheckedExpr)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_type_v3_cel_proto_rawDesc), len(file_xds_type_v3_cel_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_type_v3_cel_proto_goTypes,\n\t\tDependencyIndexes: file_xds_type_v3_cel_proto_depIdxs,\n\t\tMessageInfos:      file_xds_type_v3_cel_proto_msgTypes,\n\t}.Build()\n\tFile_xds_type_v3_cel_proto = out.File\n\tfile_xds_type_v3_cel_proto_goTypes = nil\n\tfile_xds_type_v3_cel_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/v3/cel.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/type/v3/cel.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on CelExpression with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *CelExpression) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CelExpression with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in CelExpressionMultiError, or\n// nil if none found.\nfunc (m *CelExpression) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CelExpression) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetCelExprParsed()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, CelExpressionValidationError{\n\t\t\t\t\tfield:  \"CelExprParsed\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, CelExpressionValidationError{\n\t\t\t\t\tfield:  \"CelExprParsed\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetCelExprParsed()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn CelExpressionValidationError{\n\t\t\t\tfield:  \"CelExprParsed\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetCelExprChecked()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, CelExpressionValidationError{\n\t\t\t\t\tfield:  \"CelExprChecked\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, CelExpressionValidationError{\n\t\t\t\t\tfield:  \"CelExprChecked\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetCelExprChecked()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn CelExpressionValidationError{\n\t\t\t\tfield:  \"CelExprChecked\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for CelExprString\n\n\tswitch v := m.ExprSpecifier.(type) {\n\tcase *CelExpression_ParsedExpr:\n\t\tif v == nil {\n\t\t\terr := CelExpressionValidationError{\n\t\t\t\tfield:  \"ExprSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetParsedExpr()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, CelExpressionValidationError{\n\t\t\t\t\t\tfield:  \"ParsedExpr\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, CelExpressionValidationError{\n\t\t\t\t\t\tfield:  \"ParsedExpr\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetParsedExpr()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn CelExpressionValidationError{\n\t\t\t\t\tfield:  \"ParsedExpr\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *CelExpression_CheckedExpr:\n\t\tif v == nil {\n\t\t\terr := CelExpressionValidationError{\n\t\t\t\tfield:  \"ExprSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetCheckedExpr()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, CelExpressionValidationError{\n\t\t\t\t\t\tfield:  \"CheckedExpr\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, CelExpressionValidationError{\n\t\t\t\t\t\tfield:  \"CheckedExpr\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetCheckedExpr()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn CelExpressionValidationError{\n\t\t\t\t\tfield:  \"CheckedExpr\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn CelExpressionMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CelExpressionMultiError is an error wrapping multiple validation errors\n// returned by CelExpression.ValidateAll() if the designated constraints\n// aren't met.\ntype CelExpressionMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CelExpressionMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CelExpressionMultiError) AllErrors() []error { return m }\n\n// CelExpressionValidationError is the validation error returned by\n// CelExpression.Validate if the designated constraints aren't met.\ntype CelExpressionValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CelExpressionValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CelExpressionValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CelExpressionValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CelExpressionValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CelExpressionValidationError) ErrorName() string { return \"CelExpressionValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e CelExpressionValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCelExpression.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CelExpressionValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CelExpressionValidationError{}\n\n// Validate checks the field values on CelExtractString with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *CelExtractString) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CelExtractString with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// CelExtractStringMultiError, or nil if none found.\nfunc (m *CelExtractString) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CelExtractString) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetExprExtract() == nil {\n\t\terr := CelExtractStringValidationError{\n\t\t\tfield:  \"ExprExtract\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetExprExtract()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, CelExtractStringValidationError{\n\t\t\t\t\tfield:  \"ExprExtract\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, CelExtractStringValidationError{\n\t\t\t\t\tfield:  \"ExprExtract\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetExprExtract()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn CelExtractStringValidationError{\n\t\t\t\tfield:  \"ExprExtract\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetDefaultValue()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, CelExtractStringValidationError{\n\t\t\t\t\tfield:  \"DefaultValue\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, CelExtractStringValidationError{\n\t\t\t\t\tfield:  \"DefaultValue\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetDefaultValue()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn CelExtractStringValidationError{\n\t\t\t\tfield:  \"DefaultValue\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn CelExtractStringMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CelExtractStringMultiError is an error wrapping multiple validation errors\n// returned by CelExtractString.ValidateAll() if the designated constraints\n// aren't met.\ntype CelExtractStringMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CelExtractStringMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CelExtractStringMultiError) AllErrors() []error { return m }\n\n// CelExtractStringValidationError is the validation error returned by\n// CelExtractString.Validate if the designated constraints aren't met.\ntype CelExtractStringValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CelExtractStringValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CelExtractStringValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CelExtractStringValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CelExtractStringValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CelExtractStringValidationError) ErrorName() string { return \"CelExtractStringValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e CelExtractStringValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCelExtractString.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CelExtractStringValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CelExtractStringValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/v3/range.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/type/v3/range.proto\n\npackage v3\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype Int64Range struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tStart         int64                  `protobuf:\"varint,1,opt,name=start,proto3\" json:\"start,omitempty\"`\n\tEnd           int64                  `protobuf:\"varint,2,opt,name=end,proto3\" json:\"end,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Int64Range) Reset() {\n\t*x = Int64Range{}\n\tmi := &file_xds_type_v3_range_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Int64Range) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Int64Range) ProtoMessage() {}\n\nfunc (x *Int64Range) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_v3_range_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Int64Range.ProtoReflect.Descriptor instead.\nfunc (*Int64Range) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_v3_range_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Int64Range) GetStart() int64 {\n\tif x != nil {\n\t\treturn x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *Int64Range) GetEnd() int64 {\n\tif x != nil {\n\t\treturn x.End\n\t}\n\treturn 0\n}\n\ntype Int32Range struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tStart         int32                  `protobuf:\"varint,1,opt,name=start,proto3\" json:\"start,omitempty\"`\n\tEnd           int32                  `protobuf:\"varint,2,opt,name=end,proto3\" json:\"end,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Int32Range) Reset() {\n\t*x = Int32Range{}\n\tmi := &file_xds_type_v3_range_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Int32Range) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Int32Range) ProtoMessage() {}\n\nfunc (x *Int32Range) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_v3_range_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Int32Range.ProtoReflect.Descriptor instead.\nfunc (*Int32Range) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_v3_range_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *Int32Range) GetStart() int32 {\n\tif x != nil {\n\t\treturn x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *Int32Range) GetEnd() int32 {\n\tif x != nil {\n\t\treturn x.End\n\t}\n\treturn 0\n}\n\ntype DoubleRange struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tStart         float64                `protobuf:\"fixed64,1,opt,name=start,proto3\" json:\"start,omitempty\"`\n\tEnd           float64                `protobuf:\"fixed64,2,opt,name=end,proto3\" json:\"end,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DoubleRange) Reset() {\n\t*x = DoubleRange{}\n\tmi := &file_xds_type_v3_range_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DoubleRange) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DoubleRange) ProtoMessage() {}\n\nfunc (x *DoubleRange) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_v3_range_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DoubleRange.ProtoReflect.Descriptor instead.\nfunc (*DoubleRange) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_v3_range_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *DoubleRange) GetStart() float64 {\n\tif x != nil {\n\t\treturn x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *DoubleRange) GetEnd() float64 {\n\tif x != nil {\n\t\treturn x.End\n\t}\n\treturn 0\n}\n\nvar File_xds_type_v3_range_proto protoreflect.FileDescriptor\n\nconst file_xds_type_v3_range_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x17xds/type/v3/range.proto\\x12\\vxds.type.v3\\\"4\\n\" +\n\t\"\\n\" +\n\t\"Int64Range\\x12\\x14\\n\" +\n\t\"\\x05start\\x18\\x01 \\x01(\\x03R\\x05start\\x12\\x10\\n\" +\n\t\"\\x03end\\x18\\x02 \\x01(\\x03R\\x03end\\\"4\\n\" +\n\t\"\\n\" +\n\t\"Int32Range\\x12\\x14\\n\" +\n\t\"\\x05start\\x18\\x01 \\x01(\\x05R\\x05start\\x12\\x10\\n\" +\n\t\"\\x03end\\x18\\x02 \\x01(\\x05R\\x03end\\\"5\\n\" +\n\t\"\\vDoubleRange\\x12\\x14\\n\" +\n\t\"\\x05start\\x18\\x01 \\x01(\\x01R\\x05start\\x12\\x10\\n\" +\n\t\"\\x03end\\x18\\x02 \\x01(\\x01R\\x03endBJ\\n\" +\n\t\"\\x16com.github.xds.type.v3B\\n\" +\n\t\"RangeProtoP\\x01Z\\\"github.com/cncf/xds/go/xds/type/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_type_v3_range_proto_rawDescOnce sync.Once\n\tfile_xds_type_v3_range_proto_rawDescData []byte\n)\n\nfunc file_xds_type_v3_range_proto_rawDescGZIP() []byte {\n\tfile_xds_type_v3_range_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_type_v3_range_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_type_v3_range_proto_rawDesc), len(file_xds_type_v3_range_proto_rawDesc)))\n\t})\n\treturn file_xds_type_v3_range_proto_rawDescData\n}\n\nvar file_xds_type_v3_range_proto_msgTypes = make([]protoimpl.MessageInfo, 3)\nvar file_xds_type_v3_range_proto_goTypes = []any{\n\t(*Int64Range)(nil),  // 0: xds.type.v3.Int64Range\n\t(*Int32Range)(nil),  // 1: xds.type.v3.Int32Range\n\t(*DoubleRange)(nil), // 2: xds.type.v3.DoubleRange\n}\nvar file_xds_type_v3_range_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_type_v3_range_proto_init() }\nfunc file_xds_type_v3_range_proto_init() {\n\tif File_xds_type_v3_range_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_type_v3_range_proto_rawDesc), len(file_xds_type_v3_range_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   3,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_type_v3_range_proto_goTypes,\n\t\tDependencyIndexes: file_xds_type_v3_range_proto_depIdxs,\n\t\tMessageInfos:      file_xds_type_v3_range_proto_msgTypes,\n\t}.Build()\n\tFile_xds_type_v3_range_proto = out.File\n\tfile_xds_type_v3_range_proto_goTypes = nil\n\tfile_xds_type_v3_range_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/v3/range.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/type/v3/range.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on Int64Range with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Int64Range) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Int64Range with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in Int64RangeMultiError, or\n// nil if none found.\nfunc (m *Int64Range) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Int64Range) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Start\n\n\t// no validation rules for End\n\n\tif len(errors) > 0 {\n\t\treturn Int64RangeMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Int64RangeMultiError is an error wrapping multiple validation errors\n// returned by Int64Range.ValidateAll() if the designated constraints aren't met.\ntype Int64RangeMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Int64RangeMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Int64RangeMultiError) AllErrors() []error { return m }\n\n// Int64RangeValidationError is the validation error returned by\n// Int64Range.Validate if the designated constraints aren't met.\ntype Int64RangeValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Int64RangeValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Int64RangeValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Int64RangeValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Int64RangeValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Int64RangeValidationError) ErrorName() string { return \"Int64RangeValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e Int64RangeValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sInt64Range.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Int64RangeValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Int64RangeValidationError{}\n\n// Validate checks the field values on Int32Range with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Int32Range) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Int32Range with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in Int32RangeMultiError, or\n// nil if none found.\nfunc (m *Int32Range) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Int32Range) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Start\n\n\t// no validation rules for End\n\n\tif len(errors) > 0 {\n\t\treturn Int32RangeMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Int32RangeMultiError is an error wrapping multiple validation errors\n// returned by Int32Range.ValidateAll() if the designated constraints aren't met.\ntype Int32RangeMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Int32RangeMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Int32RangeMultiError) AllErrors() []error { return m }\n\n// Int32RangeValidationError is the validation error returned by\n// Int32Range.Validate if the designated constraints aren't met.\ntype Int32RangeValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Int32RangeValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Int32RangeValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Int32RangeValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Int32RangeValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Int32RangeValidationError) ErrorName() string { return \"Int32RangeValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e Int32RangeValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sInt32Range.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Int32RangeValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Int32RangeValidationError{}\n\n// Validate checks the field values on DoubleRange with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *DoubleRange) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DoubleRange with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in DoubleRangeMultiError, or\n// nil if none found.\nfunc (m *DoubleRange) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DoubleRange) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Start\n\n\t// no validation rules for End\n\n\tif len(errors) > 0 {\n\t\treturn DoubleRangeMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DoubleRangeMultiError is an error wrapping multiple validation errors\n// returned by DoubleRange.ValidateAll() if the designated constraints aren't met.\ntype DoubleRangeMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DoubleRangeMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DoubleRangeMultiError) AllErrors() []error { return m }\n\n// DoubleRangeValidationError is the validation error returned by\n// DoubleRange.Validate if the designated constraints aren't met.\ntype DoubleRangeValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DoubleRangeValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DoubleRangeValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DoubleRangeValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DoubleRangeValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DoubleRangeValidationError) ErrorName() string { return \"DoubleRangeValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e DoubleRangeValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDoubleRange.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DoubleRangeValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DoubleRangeValidationError{}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/v3/typed_struct.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.1\n// source: xds/type/v3/typed_struct.proto\n\npackage v3\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tstructpb \"google.golang.org/protobuf/types/known/structpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype TypedStruct struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tTypeUrl       string                 `protobuf:\"bytes,1,opt,name=type_url,json=typeUrl,proto3\" json:\"type_url,omitempty\"`\n\tValue         *structpb.Struct       `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *TypedStruct) Reset() {\n\t*x = TypedStruct{}\n\tmi := &file_xds_type_v3_typed_struct_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *TypedStruct) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*TypedStruct) ProtoMessage() {}\n\nfunc (x *TypedStruct) ProtoReflect() protoreflect.Message {\n\tmi := &file_xds_type_v3_typed_struct_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use TypedStruct.ProtoReflect.Descriptor instead.\nfunc (*TypedStruct) Descriptor() ([]byte, []int) {\n\treturn file_xds_type_v3_typed_struct_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *TypedStruct) GetTypeUrl() string {\n\tif x != nil {\n\t\treturn x.TypeUrl\n\t}\n\treturn \"\"\n}\n\nfunc (x *TypedStruct) GetValue() *structpb.Struct {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nvar File_xds_type_v3_typed_struct_proto protoreflect.FileDescriptor\n\nconst file_xds_type_v3_typed_struct_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1exds/type/v3/typed_struct.proto\\x12\\vxds.type.v3\\x1a\\x1cgoogle/protobuf/struct.proto\\\"W\\n\" +\n\t\"\\vTypedStruct\\x12\\x19\\n\" +\n\t\"\\btype_url\\x18\\x01 \\x01(\\tR\\atypeUrl\\x12-\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x17.google.protobuf.StructR\\x05valueBP\\n\" +\n\t\"\\x16com.github.xds.type.v3B\\x10TypedStructProtoP\\x01Z\\\"github.com/cncf/xds/go/xds/type/v3b\\x06proto3\"\n\nvar (\n\tfile_xds_type_v3_typed_struct_proto_rawDescOnce sync.Once\n\tfile_xds_type_v3_typed_struct_proto_rawDescData []byte\n)\n\nfunc file_xds_type_v3_typed_struct_proto_rawDescGZIP() []byte {\n\tfile_xds_type_v3_typed_struct_proto_rawDescOnce.Do(func() {\n\t\tfile_xds_type_v3_typed_struct_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_xds_type_v3_typed_struct_proto_rawDesc), len(file_xds_type_v3_typed_struct_proto_rawDesc)))\n\t})\n\treturn file_xds_type_v3_typed_struct_proto_rawDescData\n}\n\nvar file_xds_type_v3_typed_struct_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_xds_type_v3_typed_struct_proto_goTypes = []any{\n\t(*TypedStruct)(nil),     // 0: xds.type.v3.TypedStruct\n\t(*structpb.Struct)(nil), // 1: google.protobuf.Struct\n}\nvar file_xds_type_v3_typed_struct_proto_depIdxs = []int32{\n\t1, // 0: xds.type.v3.TypedStruct.value:type_name -> google.protobuf.Struct\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_xds_type_v3_typed_struct_proto_init() }\nfunc file_xds_type_v3_typed_struct_proto_init() {\n\tif File_xds_type_v3_typed_struct_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_xds_type_v3_typed_struct_proto_rawDesc), len(file_xds_type_v3_typed_struct_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_xds_type_v3_typed_struct_proto_goTypes,\n\t\tDependencyIndexes: file_xds_type_v3_typed_struct_proto_depIdxs,\n\t\tMessageInfos:      file_xds_type_v3_typed_struct_proto_msgTypes,\n\t}.Build()\n\tFile_xds_type_v3_typed_struct_proto = out.File\n\tfile_xds_type_v3_typed_struct_proto_goTypes = nil\n\tfile_xds_type_v3_typed_struct_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/cncf/xds/go/xds/type/v3/typed_struct.pb.validate.go",
    "content": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: xds/type/v3/typed_struct.proto\n\npackage v3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on TypedStruct with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *TypedStruct) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on TypedStruct with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in TypedStructMultiError, or\n// nil if none found.\nfunc (m *TypedStruct) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *TypedStruct) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for TypeUrl\n\n\tif all {\n\t\tswitch v := interface{}(m.GetValue()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, TypedStructValidationError{\n\t\t\t\t\tfield:  \"Value\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, TypedStructValidationError{\n\t\t\t\t\tfield:  \"Value\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetValue()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn TypedStructValidationError{\n\t\t\t\tfield:  \"Value\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn TypedStructMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// TypedStructMultiError is an error wrapping multiple validation errors\n// returned by TypedStruct.ValidateAll() if the designated constraints aren't met.\ntype TypedStructMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m TypedStructMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m TypedStructMultiError) AllErrors() []error { return m }\n\n// TypedStructValidationError is the validation error returned by\n// TypedStruct.Validate if the designated constraints aren't met.\ntype TypedStructValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e TypedStructValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e TypedStructValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e TypedStructValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e TypedStructValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e TypedStructValidationError) ErrorName() string { return \"TypedStructValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e TypedStructValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sTypedStruct.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = TypedStructValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = TypedStructValidationError{}\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/LICENSE",
    "content": "ISC License\n\nCopyright (c) 2012-2016 Dave Collins <dave@davec.name>\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted, provided that the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\nOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/bypass.go",
    "content": "// Copyright (c) 2015-2016 Dave Collins <dave@davec.name>\n//\n// Permission to use, copy, modify, and distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n// NOTE: Due to the following build constraints, this file will only be compiled\n// when the code is not running on Google App Engine, compiled by GopherJS, and\n// \"-tags safe\" is not added to the go build command line.  The \"disableunsafe\"\n// tag is deprecated and thus should not be used.\n// Go versions prior to 1.4 are disabled because they use a different layout\n// for interfaces which make the implementation of unsafeReflectValue more complex.\n// +build !js,!appengine,!safe,!disableunsafe,go1.4\n\npackage spew\n\nimport (\n\t\"reflect\"\n\t\"unsafe\"\n)\n\nconst (\n\t// UnsafeDisabled is a build-time constant which specifies whether or\n\t// not access to the unsafe package is available.\n\tUnsafeDisabled = false\n\n\t// ptrSize is the size of a pointer on the current arch.\n\tptrSize = unsafe.Sizeof((*byte)(nil))\n)\n\ntype flag uintptr\n\nvar (\n\t// flagRO indicates whether the value field of a reflect.Value\n\t// is read-only.\n\tflagRO flag\n\n\t// flagAddr indicates whether the address of the reflect.Value's\n\t// value may be taken.\n\tflagAddr flag\n)\n\n// flagKindMask holds the bits that make up the kind\n// part of the flags field. In all the supported versions,\n// it is in the lower 5 bits.\nconst flagKindMask = flag(0x1f)\n\n// Different versions of Go have used different\n// bit layouts for the flags type. This table\n// records the known combinations.\nvar okFlags = []struct {\n\tro, addr flag\n}{{\n\t// From Go 1.4 to 1.5\n\tro:   1 << 5,\n\taddr: 1 << 7,\n}, {\n\t// Up to Go tip.\n\tro:   1<<5 | 1<<6,\n\taddr: 1 << 8,\n}}\n\nvar flagValOffset = func() uintptr {\n\tfield, ok := reflect.TypeOf(reflect.Value{}).FieldByName(\"flag\")\n\tif !ok {\n\t\tpanic(\"reflect.Value has no flag field\")\n\t}\n\treturn field.Offset\n}()\n\n// flagField returns a pointer to the flag field of a reflect.Value.\nfunc flagField(v *reflect.Value) *flag {\n\treturn (*flag)(unsafe.Pointer(uintptr(unsafe.Pointer(v)) + flagValOffset))\n}\n\n// unsafeReflectValue converts the passed reflect.Value into a one that bypasses\n// the typical safety restrictions preventing access to unaddressable and\n// unexported data.  It works by digging the raw pointer to the underlying\n// value out of the protected value and generating a new unprotected (unsafe)\n// reflect.Value to it.\n//\n// This allows us to check for implementations of the Stringer and error\n// interfaces to be used for pretty printing ordinarily unaddressable and\n// inaccessible values such as unexported struct fields.\nfunc unsafeReflectValue(v reflect.Value) reflect.Value {\n\tif !v.IsValid() || (v.CanInterface() && v.CanAddr()) {\n\t\treturn v\n\t}\n\tflagFieldPtr := flagField(&v)\n\t*flagFieldPtr &^= flagRO\n\t*flagFieldPtr |= flagAddr\n\treturn v\n}\n\n// Sanity checks against future reflect package changes\n// to the type or semantics of the Value.flag field.\nfunc init() {\n\tfield, ok := reflect.TypeOf(reflect.Value{}).FieldByName(\"flag\")\n\tif !ok {\n\t\tpanic(\"reflect.Value has no flag field\")\n\t}\n\tif field.Type.Kind() != reflect.TypeOf(flag(0)).Kind() {\n\t\tpanic(\"reflect.Value flag field has changed kind\")\n\t}\n\ttype t0 int\n\tvar t struct {\n\t\tA t0\n\t\t// t0 will have flagEmbedRO set.\n\t\tt0\n\t\t// a will have flagStickyRO set\n\t\ta t0\n\t}\n\tvA := reflect.ValueOf(t).FieldByName(\"A\")\n\tva := reflect.ValueOf(t).FieldByName(\"a\")\n\tvt0 := reflect.ValueOf(t).FieldByName(\"t0\")\n\n\t// Infer flagRO from the difference between the flags\n\t// for the (otherwise identical) fields in t.\n\tflagPublic := *flagField(&vA)\n\tflagWithRO := *flagField(&va) | *flagField(&vt0)\n\tflagRO = flagPublic ^ flagWithRO\n\n\t// Infer flagAddr from the difference between a value\n\t// taken from a pointer and not.\n\tvPtrA := reflect.ValueOf(&t).Elem().FieldByName(\"A\")\n\tflagNoPtr := *flagField(&vA)\n\tflagPtr := *flagField(&vPtrA)\n\tflagAddr = flagNoPtr ^ flagPtr\n\n\t// Check that the inferred flags tally with one of the known versions.\n\tfor _, f := range okFlags {\n\t\tif flagRO == f.ro && flagAddr == f.addr {\n\t\t\treturn\n\t\t}\n\t}\n\tpanic(\"reflect.Value read-only flag has changed semantics\")\n}\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/bypasssafe.go",
    "content": "// Copyright (c) 2015-2016 Dave Collins <dave@davec.name>\n//\n// Permission to use, copy, modify, and distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n// NOTE: Due to the following build constraints, this file will only be compiled\n// when the code is running on Google App Engine, compiled by GopherJS, or\n// \"-tags safe\" is added to the go build command line.  The \"disableunsafe\"\n// tag is deprecated and thus should not be used.\n// +build js appengine safe disableunsafe !go1.4\n\npackage spew\n\nimport \"reflect\"\n\nconst (\n\t// UnsafeDisabled is a build-time constant which specifies whether or\n\t// not access to the unsafe package is available.\n\tUnsafeDisabled = true\n)\n\n// unsafeReflectValue typically converts the passed reflect.Value into a one\n// that bypasses the typical safety restrictions preventing access to\n// unaddressable and unexported data.  However, doing this relies on access to\n// the unsafe package.  This is a stub version which simply returns the passed\n// reflect.Value when the unsafe package is not available.\nfunc unsafeReflectValue(v reflect.Value) reflect.Value {\n\treturn v\n}\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/common.go",
    "content": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\npackage spew\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n)\n\n// Some constants in the form of bytes to avoid string overhead.  This mirrors\n// the technique used in the fmt package.\nvar (\n\tpanicBytes            = []byte(\"(PANIC=\")\n\tplusBytes             = []byte(\"+\")\n\tiBytes                = []byte(\"i\")\n\ttrueBytes             = []byte(\"true\")\n\tfalseBytes            = []byte(\"false\")\n\tinterfaceBytes        = []byte(\"(interface {})\")\n\tcommaNewlineBytes     = []byte(\",\\n\")\n\tnewlineBytes          = []byte(\"\\n\")\n\topenBraceBytes        = []byte(\"{\")\n\topenBraceNewlineBytes = []byte(\"{\\n\")\n\tcloseBraceBytes       = []byte(\"}\")\n\tasteriskBytes         = []byte(\"*\")\n\tcolonBytes            = []byte(\":\")\n\tcolonSpaceBytes       = []byte(\": \")\n\topenParenBytes        = []byte(\"(\")\n\tcloseParenBytes       = []byte(\")\")\n\tspaceBytes            = []byte(\" \")\n\tpointerChainBytes     = []byte(\"->\")\n\tnilAngleBytes         = []byte(\"<nil>\")\n\tmaxNewlineBytes       = []byte(\"<max depth reached>\\n\")\n\tmaxShortBytes         = []byte(\"<max>\")\n\tcircularBytes         = []byte(\"<already shown>\")\n\tcircularShortBytes    = []byte(\"<shown>\")\n\tinvalidAngleBytes     = []byte(\"<invalid>\")\n\topenBracketBytes      = []byte(\"[\")\n\tcloseBracketBytes     = []byte(\"]\")\n\tpercentBytes          = []byte(\"%\")\n\tprecisionBytes        = []byte(\".\")\n\topenAngleBytes        = []byte(\"<\")\n\tcloseAngleBytes       = []byte(\">\")\n\topenMapBytes          = []byte(\"map[\")\n\tcloseMapBytes         = []byte(\"]\")\n\tlenEqualsBytes        = []byte(\"len=\")\n\tcapEqualsBytes        = []byte(\"cap=\")\n)\n\n// hexDigits is used to map a decimal value to a hex digit.\nvar hexDigits = \"0123456789abcdef\"\n\n// catchPanic handles any panics that might occur during the handleMethods\n// calls.\nfunc catchPanic(w io.Writer, v reflect.Value) {\n\tif err := recover(); err != nil {\n\t\tw.Write(panicBytes)\n\t\tfmt.Fprintf(w, \"%v\", err)\n\t\tw.Write(closeParenBytes)\n\t}\n}\n\n// handleMethods attempts to call the Error and String methods on the underlying\n// type the passed reflect.Value represents and outputes the result to Writer w.\n//\n// It handles panics in any called methods by catching and displaying the error\n// as the formatted value.\nfunc handleMethods(cs *ConfigState, w io.Writer, v reflect.Value) (handled bool) {\n\t// We need an interface to check if the type implements the error or\n\t// Stringer interface.  However, the reflect package won't give us an\n\t// interface on certain things like unexported struct fields in order\n\t// to enforce visibility rules.  We use unsafe, when it's available,\n\t// to bypass these restrictions since this package does not mutate the\n\t// values.\n\tif !v.CanInterface() {\n\t\tif UnsafeDisabled {\n\t\t\treturn false\n\t\t}\n\n\t\tv = unsafeReflectValue(v)\n\t}\n\n\t// Choose whether or not to do error and Stringer interface lookups against\n\t// the base type or a pointer to the base type depending on settings.\n\t// Technically calling one of these methods with a pointer receiver can\n\t// mutate the value, however, types which choose to satisify an error or\n\t// Stringer interface with a pointer receiver should not be mutating their\n\t// state inside these interface methods.\n\tif !cs.DisablePointerMethods && !UnsafeDisabled && !v.CanAddr() {\n\t\tv = unsafeReflectValue(v)\n\t}\n\tif v.CanAddr() {\n\t\tv = v.Addr()\n\t}\n\n\t// Is it an error or Stringer?\n\tswitch iface := v.Interface().(type) {\n\tcase error:\n\t\tdefer catchPanic(w, v)\n\t\tif cs.ContinueOnMethod {\n\t\t\tw.Write(openParenBytes)\n\t\t\tw.Write([]byte(iface.Error()))\n\t\t\tw.Write(closeParenBytes)\n\t\t\tw.Write(spaceBytes)\n\t\t\treturn false\n\t\t}\n\n\t\tw.Write([]byte(iface.Error()))\n\t\treturn true\n\n\tcase fmt.Stringer:\n\t\tdefer catchPanic(w, v)\n\t\tif cs.ContinueOnMethod {\n\t\t\tw.Write(openParenBytes)\n\t\t\tw.Write([]byte(iface.String()))\n\t\t\tw.Write(closeParenBytes)\n\t\t\tw.Write(spaceBytes)\n\t\t\treturn false\n\t\t}\n\t\tw.Write([]byte(iface.String()))\n\t\treturn true\n\t}\n\treturn false\n}\n\n// printBool outputs a boolean value as true or false to Writer w.\nfunc printBool(w io.Writer, val bool) {\n\tif val {\n\t\tw.Write(trueBytes)\n\t} else {\n\t\tw.Write(falseBytes)\n\t}\n}\n\n// printInt outputs a signed integer value to Writer w.\nfunc printInt(w io.Writer, val int64, base int) {\n\tw.Write([]byte(strconv.FormatInt(val, base)))\n}\n\n// printUint outputs an unsigned integer value to Writer w.\nfunc printUint(w io.Writer, val uint64, base int) {\n\tw.Write([]byte(strconv.FormatUint(val, base)))\n}\n\n// printFloat outputs a floating point value using the specified precision,\n// which is expected to be 32 or 64bit, to Writer w.\nfunc printFloat(w io.Writer, val float64, precision int) {\n\tw.Write([]byte(strconv.FormatFloat(val, 'g', -1, precision)))\n}\n\n// printComplex outputs a complex value using the specified float precision\n// for the real and imaginary parts to Writer w.\nfunc printComplex(w io.Writer, c complex128, floatPrecision int) {\n\tr := real(c)\n\tw.Write(openParenBytes)\n\tw.Write([]byte(strconv.FormatFloat(r, 'g', -1, floatPrecision)))\n\ti := imag(c)\n\tif i >= 0 {\n\t\tw.Write(plusBytes)\n\t}\n\tw.Write([]byte(strconv.FormatFloat(i, 'g', -1, floatPrecision)))\n\tw.Write(iBytes)\n\tw.Write(closeParenBytes)\n}\n\n// printHexPtr outputs a uintptr formatted as hexadecimal with a leading '0x'\n// prefix to Writer w.\nfunc printHexPtr(w io.Writer, p uintptr) {\n\t// Null pointer.\n\tnum := uint64(p)\n\tif num == 0 {\n\t\tw.Write(nilAngleBytes)\n\t\treturn\n\t}\n\n\t// Max uint64 is 16 bytes in hex + 2 bytes for '0x' prefix\n\tbuf := make([]byte, 18)\n\n\t// It's simpler to construct the hex string right to left.\n\tbase := uint64(16)\n\ti := len(buf) - 1\n\tfor num >= base {\n\t\tbuf[i] = hexDigits[num%base]\n\t\tnum /= base\n\t\ti--\n\t}\n\tbuf[i] = hexDigits[num]\n\n\t// Add '0x' prefix.\n\ti--\n\tbuf[i] = 'x'\n\ti--\n\tbuf[i] = '0'\n\n\t// Strip unused leading bytes.\n\tbuf = buf[i:]\n\tw.Write(buf)\n}\n\n// valuesSorter implements sort.Interface to allow a slice of reflect.Value\n// elements to be sorted.\ntype valuesSorter struct {\n\tvalues  []reflect.Value\n\tstrings []string // either nil or same len and values\n\tcs      *ConfigState\n}\n\n// newValuesSorter initializes a valuesSorter instance, which holds a set of\n// surrogate keys on which the data should be sorted.  It uses flags in\n// ConfigState to decide if and how to populate those surrogate keys.\nfunc newValuesSorter(values []reflect.Value, cs *ConfigState) sort.Interface {\n\tvs := &valuesSorter{values: values, cs: cs}\n\tif canSortSimply(vs.values[0].Kind()) {\n\t\treturn vs\n\t}\n\tif !cs.DisableMethods {\n\t\tvs.strings = make([]string, len(values))\n\t\tfor i := range vs.values {\n\t\t\tb := bytes.Buffer{}\n\t\t\tif !handleMethods(cs, &b, vs.values[i]) {\n\t\t\t\tvs.strings = nil\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvs.strings[i] = b.String()\n\t\t}\n\t}\n\tif vs.strings == nil && cs.SpewKeys {\n\t\tvs.strings = make([]string, len(values))\n\t\tfor i := range vs.values {\n\t\t\tvs.strings[i] = Sprintf(\"%#v\", vs.values[i].Interface())\n\t\t}\n\t}\n\treturn vs\n}\n\n// canSortSimply tests whether a reflect.Kind is a primitive that can be sorted\n// directly, or whether it should be considered for sorting by surrogate keys\n// (if the ConfigState allows it).\nfunc canSortSimply(kind reflect.Kind) bool {\n\t// This switch parallels valueSortLess, except for the default case.\n\tswitch kind {\n\tcase reflect.Bool:\n\t\treturn true\n\tcase reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int:\n\t\treturn true\n\tcase reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint:\n\t\treturn true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn true\n\tcase reflect.String:\n\t\treturn true\n\tcase reflect.Uintptr:\n\t\treturn true\n\tcase reflect.Array:\n\t\treturn true\n\t}\n\treturn false\n}\n\n// Len returns the number of values in the slice.  It is part of the\n// sort.Interface implementation.\nfunc (s *valuesSorter) Len() int {\n\treturn len(s.values)\n}\n\n// Swap swaps the values at the passed indices.  It is part of the\n// sort.Interface implementation.\nfunc (s *valuesSorter) Swap(i, j int) {\n\ts.values[i], s.values[j] = s.values[j], s.values[i]\n\tif s.strings != nil {\n\t\ts.strings[i], s.strings[j] = s.strings[j], s.strings[i]\n\t}\n}\n\n// valueSortLess returns whether the first value should sort before the second\n// value.  It is used by valueSorter.Less as part of the sort.Interface\n// implementation.\nfunc valueSortLess(a, b reflect.Value) bool {\n\tswitch a.Kind() {\n\tcase reflect.Bool:\n\t\treturn !a.Bool() && b.Bool()\n\tcase reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int:\n\t\treturn a.Int() < b.Int()\n\tcase reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint:\n\t\treturn a.Uint() < b.Uint()\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn a.Float() < b.Float()\n\tcase reflect.String:\n\t\treturn a.String() < b.String()\n\tcase reflect.Uintptr:\n\t\treturn a.Uint() < b.Uint()\n\tcase reflect.Array:\n\t\t// Compare the contents of both arrays.\n\t\tl := a.Len()\n\t\tfor i := 0; i < l; i++ {\n\t\t\tav := a.Index(i)\n\t\t\tbv := b.Index(i)\n\t\t\tif av.Interface() == bv.Interface() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn valueSortLess(av, bv)\n\t\t}\n\t}\n\treturn a.String() < b.String()\n}\n\n// Less returns whether the value at index i should sort before the\n// value at index j.  It is part of the sort.Interface implementation.\nfunc (s *valuesSorter) Less(i, j int) bool {\n\tif s.strings == nil {\n\t\treturn valueSortLess(s.values[i], s.values[j])\n\t}\n\treturn s.strings[i] < s.strings[j]\n}\n\n// sortValues is a sort function that handles both native types and any type that\n// can be converted to error or Stringer.  Other inputs are sorted according to\n// their Value.String() value to ensure display stability.\nfunc sortValues(values []reflect.Value, cs *ConfigState) {\n\tif len(values) == 0 {\n\t\treturn\n\t}\n\tsort.Sort(newValuesSorter(values, cs))\n}\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/config.go",
    "content": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\npackage spew\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n)\n\n// ConfigState houses the configuration options used by spew to format and\n// display values.  There is a global instance, Config, that is used to control\n// all top-level Formatter and Dump functionality.  Each ConfigState instance\n// provides methods equivalent to the top-level functions.\n//\n// The zero value for ConfigState provides no indentation.  You would typically\n// want to set it to a space or a tab.\n//\n// Alternatively, you can use NewDefaultConfig to get a ConfigState instance\n// with default settings.  See the documentation of NewDefaultConfig for default\n// values.\ntype ConfigState struct {\n\t// Indent specifies the string to use for each indentation level.  The\n\t// global config instance that all top-level functions use set this to a\n\t// single space by default.  If you would like more indentation, you might\n\t// set this to a tab with \"\\t\" or perhaps two spaces with \"  \".\n\tIndent string\n\n\t// MaxDepth controls the maximum number of levels to descend into nested\n\t// data structures.  The default, 0, means there is no limit.\n\t//\n\t// NOTE: Circular data structures are properly detected, so it is not\n\t// necessary to set this value unless you specifically want to limit deeply\n\t// nested data structures.\n\tMaxDepth int\n\n\t// DisableMethods specifies whether or not error and Stringer interfaces are\n\t// invoked for types that implement them.\n\tDisableMethods bool\n\n\t// DisablePointerMethods specifies whether or not to check for and invoke\n\t// error and Stringer interfaces on types which only accept a pointer\n\t// receiver when the current type is not a pointer.\n\t//\n\t// NOTE: This might be an unsafe action since calling one of these methods\n\t// with a pointer receiver could technically mutate the value, however,\n\t// in practice, types which choose to satisify an error or Stringer\n\t// interface with a pointer receiver should not be mutating their state\n\t// inside these interface methods.  As a result, this option relies on\n\t// access to the unsafe package, so it will not have any effect when\n\t// running in environments without access to the unsafe package such as\n\t// Google App Engine or with the \"safe\" build tag specified.\n\tDisablePointerMethods bool\n\n\t// DisablePointerAddresses specifies whether to disable the printing of\n\t// pointer addresses. This is useful when diffing data structures in tests.\n\tDisablePointerAddresses bool\n\n\t// DisableCapacities specifies whether to disable the printing of capacities\n\t// for arrays, slices, maps and channels. This is useful when diffing\n\t// data structures in tests.\n\tDisableCapacities bool\n\n\t// ContinueOnMethod specifies whether or not recursion should continue once\n\t// a custom error or Stringer interface is invoked.  The default, false,\n\t// means it will print the results of invoking the custom error or Stringer\n\t// interface and return immediately instead of continuing to recurse into\n\t// the internals of the data type.\n\t//\n\t// NOTE: This flag does not have any effect if method invocation is disabled\n\t// via the DisableMethods or DisablePointerMethods options.\n\tContinueOnMethod bool\n\n\t// SortKeys specifies map keys should be sorted before being printed. Use\n\t// this to have a more deterministic, diffable output.  Note that only\n\t// native types (bool, int, uint, floats, uintptr and string) and types\n\t// that support the error or Stringer interfaces (if methods are\n\t// enabled) are supported, with other types sorted according to the\n\t// reflect.Value.String() output which guarantees display stability.\n\tSortKeys bool\n\n\t// SpewKeys specifies that, as a last resort attempt, map keys should\n\t// be spewed to strings and sorted by those strings.  This is only\n\t// considered if SortKeys is true.\n\tSpewKeys bool\n}\n\n// Config is the active configuration of the top-level functions.\n// The configuration can be changed by modifying the contents of spew.Config.\nvar Config = ConfigState{Indent: \" \"}\n\n// Errorf is a wrapper for fmt.Errorf that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the formatted string as a value that satisfies error.  See NewFormatter\n// for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Errorf(format, c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Errorf(format string, a ...interface{}) (err error) {\n\treturn fmt.Errorf(format, c.convertArgs(a)...)\n}\n\n// Fprint is a wrapper for fmt.Fprint that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Fprint(w, c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Fprint(w io.Writer, a ...interface{}) (n int, err error) {\n\treturn fmt.Fprint(w, c.convertArgs(a)...)\n}\n\n// Fprintf is a wrapper for fmt.Fprintf that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Fprintf(w, format, c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) {\n\treturn fmt.Fprintf(w, format, c.convertArgs(a)...)\n}\n\n// Fprintln is a wrapper for fmt.Fprintln that treats each argument as if it\n// passed with a Formatter interface returned by c.NewFormatter.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Fprintln(w, c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Fprintln(w io.Writer, a ...interface{}) (n int, err error) {\n\treturn fmt.Fprintln(w, c.convertArgs(a)...)\n}\n\n// Print is a wrapper for fmt.Print that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Print(c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Print(a ...interface{}) (n int, err error) {\n\treturn fmt.Print(c.convertArgs(a)...)\n}\n\n// Printf is a wrapper for fmt.Printf that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Printf(format, c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Printf(format string, a ...interface{}) (n int, err error) {\n\treturn fmt.Printf(format, c.convertArgs(a)...)\n}\n\n// Println is a wrapper for fmt.Println that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Println(c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Println(a ...interface{}) (n int, err error) {\n\treturn fmt.Println(c.convertArgs(a)...)\n}\n\n// Sprint is a wrapper for fmt.Sprint that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the resulting string.  See NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Sprint(c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Sprint(a ...interface{}) string {\n\treturn fmt.Sprint(c.convertArgs(a)...)\n}\n\n// Sprintf is a wrapper for fmt.Sprintf that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the resulting string.  See NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Sprintf(format, c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Sprintf(format string, a ...interface{}) string {\n\treturn fmt.Sprintf(format, c.convertArgs(a)...)\n}\n\n// Sprintln is a wrapper for fmt.Sprintln that treats each argument as if it\n// were passed with a Formatter interface returned by c.NewFormatter.  It\n// returns the resulting string.  See NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Sprintln(c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Sprintln(a ...interface{}) string {\n\treturn fmt.Sprintln(c.convertArgs(a)...)\n}\n\n/*\nNewFormatter returns a custom formatter that satisfies the fmt.Formatter\ninterface.  As a result, it integrates cleanly with standard fmt package\nprinting functions.  The formatter is useful for inline printing of smaller data\ntypes similar to the standard %v format specifier.\n\nThe custom formatter only responds to the %v (most compact), %+v (adds pointer\naddresses), %#v (adds types), and %#+v (adds types and pointer addresses) verb\ncombinations.  Any other verbs such as %x and %q will be sent to the the\nstandard fmt package for formatting.  In addition, the custom formatter ignores\nthe width and precision arguments (however they will still work on the format\nspecifiers not handled by the custom formatter).\n\nTypically this function shouldn't be called directly.  It is much easier to make\nuse of the custom formatter by calling one of the convenience functions such as\nc.Printf, c.Println, or c.Printf.\n*/\nfunc (c *ConfigState) NewFormatter(v interface{}) fmt.Formatter {\n\treturn newFormatter(c, v)\n}\n\n// Fdump formats and displays the passed arguments to io.Writer w.  It formats\n// exactly the same as Dump.\nfunc (c *ConfigState) Fdump(w io.Writer, a ...interface{}) {\n\tfdump(c, w, a...)\n}\n\n/*\nDump displays the passed parameters to standard out with newlines, customizable\nindentation, and additional debug information such as complete types and all\npointer addresses used to indirect to the final value.  It provides the\nfollowing features over the built-in printing facilities provided by the fmt\npackage:\n\n\t* Pointers are dereferenced and followed\n\t* Circular data structures are detected and handled properly\n\t* Custom Stringer/error interfaces are optionally invoked, including\n\t  on unexported types\n\t* Custom types which only implement the Stringer/error interfaces via\n\t  a pointer receiver are optionally invoked when passing non-pointer\n\t  variables\n\t* Byte arrays and slices are dumped like the hexdump -C command which\n\t  includes offsets, byte values in hex, and ASCII output\n\nThe configuration options are controlled by modifying the public members\nof c.  See ConfigState for options documentation.\n\nSee Fdump if you would prefer dumping to an arbitrary io.Writer or Sdump to\nget the formatted result as a string.\n*/\nfunc (c *ConfigState) Dump(a ...interface{}) {\n\tfdump(c, os.Stdout, a...)\n}\n\n// Sdump returns a string with the passed arguments formatted exactly the same\n// as Dump.\nfunc (c *ConfigState) Sdump(a ...interface{}) string {\n\tvar buf bytes.Buffer\n\tfdump(c, &buf, a...)\n\treturn buf.String()\n}\n\n// convertArgs accepts a slice of arguments and returns a slice of the same\n// length with each argument converted to a spew Formatter interface using\n// the ConfigState associated with s.\nfunc (c *ConfigState) convertArgs(args []interface{}) (formatters []interface{}) {\n\tformatters = make([]interface{}, len(args))\n\tfor index, arg := range args {\n\t\tformatters[index] = newFormatter(c, arg)\n\t}\n\treturn formatters\n}\n\n// NewDefaultConfig returns a ConfigState with the following default settings.\n//\n// \tIndent: \" \"\n// \tMaxDepth: 0\n// \tDisableMethods: false\n// \tDisablePointerMethods: false\n// \tContinueOnMethod: false\n// \tSortKeys: false\nfunc NewDefaultConfig() *ConfigState {\n\treturn &ConfigState{Indent: \" \"}\n}\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/doc.go",
    "content": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\n/*\nPackage spew implements a deep pretty printer for Go data structures to aid in\ndebugging.\n\nA quick overview of the additional features spew provides over the built-in\nprinting facilities for Go data types are as follows:\n\n\t* Pointers are dereferenced and followed\n\t* Circular data structures are detected and handled properly\n\t* Custom Stringer/error interfaces are optionally invoked, including\n\t  on unexported types\n\t* Custom types which only implement the Stringer/error interfaces via\n\t  a pointer receiver are optionally invoked when passing non-pointer\n\t  variables\n\t* Byte arrays and slices are dumped like the hexdump -C command which\n\t  includes offsets, byte values in hex, and ASCII output (only when using\n\t  Dump style)\n\nThere are two different approaches spew allows for dumping Go data structures:\n\n\t* Dump style which prints with newlines, customizable indentation,\n\t  and additional debug information such as types and all pointer addresses\n\t  used to indirect to the final value\n\t* A custom Formatter interface that integrates cleanly with the standard fmt\n\t  package and replaces %v, %+v, %#v, and %#+v to provide inline printing\n\t  similar to the default %v while providing the additional functionality\n\t  outlined above and passing unsupported format verbs such as %x and %q\n\t  along to fmt\n\nQuick Start\n\nThis section demonstrates how to quickly get started with spew.  See the\nsections below for further details on formatting and configuration options.\n\nTo dump a variable with full newlines, indentation, type, and pointer\ninformation use Dump, Fdump, or Sdump:\n\tspew.Dump(myVar1, myVar2, ...)\n\tspew.Fdump(someWriter, myVar1, myVar2, ...)\n\tstr := spew.Sdump(myVar1, myVar2, ...)\n\nAlternatively, if you would prefer to use format strings with a compacted inline\nprinting style, use the convenience wrappers Printf, Fprintf, etc with\n%v (most compact), %+v (adds pointer addresses), %#v (adds types), or\n%#+v (adds types and pointer addresses):\n\tspew.Printf(\"myVar1: %v -- myVar2: %+v\", myVar1, myVar2)\n\tspew.Printf(\"myVar3: %#v -- myVar4: %#+v\", myVar3, myVar4)\n\tspew.Fprintf(someWriter, \"myVar1: %v -- myVar2: %+v\", myVar1, myVar2)\n\tspew.Fprintf(someWriter, \"myVar3: %#v -- myVar4: %#+v\", myVar3, myVar4)\n\nConfiguration Options\n\nConfiguration of spew is handled by fields in the ConfigState type.  For\nconvenience, all of the top-level functions use a global state available\nvia the spew.Config global.\n\nIt is also possible to create a ConfigState instance that provides methods\nequivalent to the top-level functions.  This allows concurrent configuration\noptions.  See the ConfigState documentation for more details.\n\nThe following configuration options are available:\n\t* Indent\n\t\tString to use for each indentation level for Dump functions.\n\t\tIt is a single space by default.  A popular alternative is \"\\t\".\n\n\t* MaxDepth\n\t\tMaximum number of levels to descend into nested data structures.\n\t\tThere is no limit by default.\n\n\t* DisableMethods\n\t\tDisables invocation of error and Stringer interface methods.\n\t\tMethod invocation is enabled by default.\n\n\t* DisablePointerMethods\n\t\tDisables invocation of error and Stringer interface methods on types\n\t\twhich only accept pointer receivers from non-pointer variables.\n\t\tPointer method invocation is enabled by default.\n\n\t* DisablePointerAddresses\n\t\tDisablePointerAddresses specifies whether to disable the printing of\n\t\tpointer addresses. This is useful when diffing data structures in tests.\n\n\t* DisableCapacities\n\t\tDisableCapacities specifies whether to disable the printing of\n\t\tcapacities for arrays, slices, maps and channels. This is useful when\n\t\tdiffing data structures in tests.\n\n\t* ContinueOnMethod\n\t\tEnables recursion into types after invoking error and Stringer interface\n\t\tmethods. Recursion after method invocation is disabled by default.\n\n\t* SortKeys\n\t\tSpecifies map keys should be sorted before being printed. Use\n\t\tthis to have a more deterministic, diffable output.  Note that\n\t\tonly native types (bool, int, uint, floats, uintptr and string)\n\t\tand types which implement error or Stringer interfaces are\n\t\tsupported with other types sorted according to the\n\t\treflect.Value.String() output which guarantees display\n\t\tstability.  Natural map order is used by default.\n\n\t* SpewKeys\n\t\tSpecifies that, as a last resort attempt, map keys should be\n\t\tspewed to strings and sorted by those strings.  This is only\n\t\tconsidered if SortKeys is true.\n\nDump Usage\n\nSimply call spew.Dump with a list of variables you want to dump:\n\n\tspew.Dump(myVar1, myVar2, ...)\n\nYou may also call spew.Fdump if you would prefer to output to an arbitrary\nio.Writer.  For example, to dump to standard error:\n\n\tspew.Fdump(os.Stderr, myVar1, myVar2, ...)\n\nA third option is to call spew.Sdump to get the formatted output as a string:\n\n\tstr := spew.Sdump(myVar1, myVar2, ...)\n\nSample Dump Output\n\nSee the Dump example for details on the setup of the types and variables being\nshown here.\n\n\t(main.Foo) {\n\t unexportedField: (*main.Bar)(0xf84002e210)({\n\t  flag: (main.Flag) flagTwo,\n\t  data: (uintptr) <nil>\n\t }),\n\t ExportedField: (map[interface {}]interface {}) (len=1) {\n\t  (string) (len=3) \"one\": (bool) true\n\t }\n\t}\n\nByte (and uint8) arrays and slices are displayed uniquely like the hexdump -C\ncommand as shown.\n\t([]uint8) (len=32 cap=32) {\n\t 00000000  11 12 13 14 15 16 17 18  19 1a 1b 1c 1d 1e 1f 20  |............... |\n\t 00000010  21 22 23 24 25 26 27 28  29 2a 2b 2c 2d 2e 2f 30  |!\"#$%&'()*+,-./0|\n\t 00000020  31 32                                             |12|\n\t}\n\nCustom Formatter\n\nSpew provides a custom formatter that implements the fmt.Formatter interface\nso that it integrates cleanly with standard fmt package printing functions. The\nformatter is useful for inline printing of smaller data types similar to the\nstandard %v format specifier.\n\nThe custom formatter only responds to the %v (most compact), %+v (adds pointer\naddresses), %#v (adds types), or %#+v (adds types and pointer addresses) verb\ncombinations.  Any other verbs such as %x and %q will be sent to the the\nstandard fmt package for formatting.  In addition, the custom formatter ignores\nthe width and precision arguments (however they will still work on the format\nspecifiers not handled by the custom formatter).\n\nCustom Formatter Usage\n\nThe simplest way to make use of the spew custom formatter is to call one of the\nconvenience functions such as spew.Printf, spew.Println, or spew.Printf.  The\nfunctions have syntax you are most likely already familiar with:\n\n\tspew.Printf(\"myVar1: %v -- myVar2: %+v\", myVar1, myVar2)\n\tspew.Printf(\"myVar3: %#v -- myVar4: %#+v\", myVar3, myVar4)\n\tspew.Println(myVar, myVar2)\n\tspew.Fprintf(os.Stderr, \"myVar1: %v -- myVar2: %+v\", myVar1, myVar2)\n\tspew.Fprintf(os.Stderr, \"myVar3: %#v -- myVar4: %#+v\", myVar3, myVar4)\n\nSee the Index for the full list convenience functions.\n\nSample Formatter Output\n\nDouble pointer to a uint8:\n\t  %v: <**>5\n\t %+v: <**>(0xf8400420d0->0xf8400420c8)5\n\t %#v: (**uint8)5\n\t%#+v: (**uint8)(0xf8400420d0->0xf8400420c8)5\n\nPointer to circular struct with a uint8 field and a pointer to itself:\n\t  %v: <*>{1 <*><shown>}\n\t %+v: <*>(0xf84003e260){ui8:1 c:<*>(0xf84003e260)<shown>}\n\t %#v: (*main.circular){ui8:(uint8)1 c:(*main.circular)<shown>}\n\t%#+v: (*main.circular)(0xf84003e260){ui8:(uint8)1 c:(*main.circular)(0xf84003e260)<shown>}\n\nSee the Printf example for details on the setup of variables being shown\nhere.\n\nErrors\n\nSince it is possible for custom Stringer/error interfaces to panic, spew\ndetects them and handles them internally by printing the panic information\ninline with the output.  Since spew is intended to provide deep pretty printing\ncapabilities on structures, it intentionally does not return any errors.\n*/\npackage spew\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/dump.go",
    "content": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\npackage spew\n\nimport (\n\t\"bytes\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nvar (\n\t// uint8Type is a reflect.Type representing a uint8.  It is used to\n\t// convert cgo types to uint8 slices for hexdumping.\n\tuint8Type = reflect.TypeOf(uint8(0))\n\n\t// cCharRE is a regular expression that matches a cgo char.\n\t// It is used to detect character arrays to hexdump them.\n\tcCharRE = regexp.MustCompile(`^.*\\._Ctype_char$`)\n\n\t// cUnsignedCharRE is a regular expression that matches a cgo unsigned\n\t// char.  It is used to detect unsigned character arrays to hexdump\n\t// them.\n\tcUnsignedCharRE = regexp.MustCompile(`^.*\\._Ctype_unsignedchar$`)\n\n\t// cUint8tCharRE is a regular expression that matches a cgo uint8_t.\n\t// It is used to detect uint8_t arrays to hexdump them.\n\tcUint8tCharRE = regexp.MustCompile(`^.*\\._Ctype_uint8_t$`)\n)\n\n// dumpState contains information about the state of a dump operation.\ntype dumpState struct {\n\tw                io.Writer\n\tdepth            int\n\tpointers         map[uintptr]int\n\tignoreNextType   bool\n\tignoreNextIndent bool\n\tcs               *ConfigState\n}\n\n// indent performs indentation according to the depth level and cs.Indent\n// option.\nfunc (d *dumpState) indent() {\n\tif d.ignoreNextIndent {\n\t\td.ignoreNextIndent = false\n\t\treturn\n\t}\n\td.w.Write(bytes.Repeat([]byte(d.cs.Indent), d.depth))\n}\n\n// unpackValue returns values inside of non-nil interfaces when possible.\n// This is useful for data types like structs, arrays, slices, and maps which\n// can contain varying types packed inside an interface.\nfunc (d *dumpState) unpackValue(v reflect.Value) reflect.Value {\n\tif v.Kind() == reflect.Interface && !v.IsNil() {\n\t\tv = v.Elem()\n\t}\n\treturn v\n}\n\n// dumpPtr handles formatting of pointers by indirecting them as necessary.\nfunc (d *dumpState) dumpPtr(v reflect.Value) {\n\t// Remove pointers at or below the current depth from map used to detect\n\t// circular refs.\n\tfor k, depth := range d.pointers {\n\t\tif depth >= d.depth {\n\t\t\tdelete(d.pointers, k)\n\t\t}\n\t}\n\n\t// Keep list of all dereferenced pointers to show later.\n\tpointerChain := make([]uintptr, 0)\n\n\t// Figure out how many levels of indirection there are by dereferencing\n\t// pointers and unpacking interfaces down the chain while detecting circular\n\t// references.\n\tnilFound := false\n\tcycleFound := false\n\tindirects := 0\n\tve := v\n\tfor ve.Kind() == reflect.Ptr {\n\t\tif ve.IsNil() {\n\t\t\tnilFound = true\n\t\t\tbreak\n\t\t}\n\t\tindirects++\n\t\taddr := ve.Pointer()\n\t\tpointerChain = append(pointerChain, addr)\n\t\tif pd, ok := d.pointers[addr]; ok && pd < d.depth {\n\t\t\tcycleFound = true\n\t\t\tindirects--\n\t\t\tbreak\n\t\t}\n\t\td.pointers[addr] = d.depth\n\n\t\tve = ve.Elem()\n\t\tif ve.Kind() == reflect.Interface {\n\t\t\tif ve.IsNil() {\n\t\t\t\tnilFound = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tve = ve.Elem()\n\t\t}\n\t}\n\n\t// Display type information.\n\td.w.Write(openParenBytes)\n\td.w.Write(bytes.Repeat(asteriskBytes, indirects))\n\td.w.Write([]byte(ve.Type().String()))\n\td.w.Write(closeParenBytes)\n\n\t// Display pointer information.\n\tif !d.cs.DisablePointerAddresses && len(pointerChain) > 0 {\n\t\td.w.Write(openParenBytes)\n\t\tfor i, addr := range pointerChain {\n\t\t\tif i > 0 {\n\t\t\t\td.w.Write(pointerChainBytes)\n\t\t\t}\n\t\t\tprintHexPtr(d.w, addr)\n\t\t}\n\t\td.w.Write(closeParenBytes)\n\t}\n\n\t// Display dereferenced value.\n\td.w.Write(openParenBytes)\n\tswitch {\n\tcase nilFound:\n\t\td.w.Write(nilAngleBytes)\n\n\tcase cycleFound:\n\t\td.w.Write(circularBytes)\n\n\tdefault:\n\t\td.ignoreNextType = true\n\t\td.dump(ve)\n\t}\n\td.w.Write(closeParenBytes)\n}\n\n// dumpSlice handles formatting of arrays and slices.  Byte (uint8 under\n// reflection) arrays and slices are dumped in hexdump -C fashion.\nfunc (d *dumpState) dumpSlice(v reflect.Value) {\n\t// Determine whether this type should be hex dumped or not.  Also,\n\t// for types which should be hexdumped, try to use the underlying data\n\t// first, then fall back to trying to convert them to a uint8 slice.\n\tvar buf []uint8\n\tdoConvert := false\n\tdoHexDump := false\n\tnumEntries := v.Len()\n\tif numEntries > 0 {\n\t\tvt := v.Index(0).Type()\n\t\tvts := vt.String()\n\t\tswitch {\n\t\t// C types that need to be converted.\n\t\tcase cCharRE.MatchString(vts):\n\t\t\tfallthrough\n\t\tcase cUnsignedCharRE.MatchString(vts):\n\t\t\tfallthrough\n\t\tcase cUint8tCharRE.MatchString(vts):\n\t\t\tdoConvert = true\n\n\t\t// Try to use existing uint8 slices and fall back to converting\n\t\t// and copying if that fails.\n\t\tcase vt.Kind() == reflect.Uint8:\n\t\t\t// We need an addressable interface to convert the type\n\t\t\t// to a byte slice.  However, the reflect package won't\n\t\t\t// give us an interface on certain things like\n\t\t\t// unexported struct fields in order to enforce\n\t\t\t// visibility rules.  We use unsafe, when available, to\n\t\t\t// bypass these restrictions since this package does not\n\t\t\t// mutate the values.\n\t\t\tvs := v\n\t\t\tif !vs.CanInterface() || !vs.CanAddr() {\n\t\t\t\tvs = unsafeReflectValue(vs)\n\t\t\t}\n\t\t\tif !UnsafeDisabled {\n\t\t\t\tvs = vs.Slice(0, numEntries)\n\n\t\t\t\t// Use the existing uint8 slice if it can be\n\t\t\t\t// type asserted.\n\t\t\t\tiface := vs.Interface()\n\t\t\t\tif slice, ok := iface.([]uint8); ok {\n\t\t\t\t\tbuf = slice\n\t\t\t\t\tdoHexDump = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// The underlying data needs to be converted if it can't\n\t\t\t// be type asserted to a uint8 slice.\n\t\t\tdoConvert = true\n\t\t}\n\n\t\t// Copy and convert the underlying type if needed.\n\t\tif doConvert && vt.ConvertibleTo(uint8Type) {\n\t\t\t// Convert and copy each element into a uint8 byte\n\t\t\t// slice.\n\t\t\tbuf = make([]uint8, numEntries)\n\t\t\tfor i := 0; i < numEntries; i++ {\n\t\t\t\tvv := v.Index(i)\n\t\t\t\tbuf[i] = uint8(vv.Convert(uint8Type).Uint())\n\t\t\t}\n\t\t\tdoHexDump = true\n\t\t}\n\t}\n\n\t// Hexdump the entire slice as needed.\n\tif doHexDump {\n\t\tindent := strings.Repeat(d.cs.Indent, d.depth)\n\t\tstr := indent + hex.Dump(buf)\n\t\tstr = strings.Replace(str, \"\\n\", \"\\n\"+indent, -1)\n\t\tstr = strings.TrimRight(str, d.cs.Indent)\n\t\td.w.Write([]byte(str))\n\t\treturn\n\t}\n\n\t// Recursively call dump for each item.\n\tfor i := 0; i < numEntries; i++ {\n\t\td.dump(d.unpackValue(v.Index(i)))\n\t\tif i < (numEntries - 1) {\n\t\t\td.w.Write(commaNewlineBytes)\n\t\t} else {\n\t\t\td.w.Write(newlineBytes)\n\t\t}\n\t}\n}\n\n// dump is the main workhorse for dumping a value.  It uses the passed reflect\n// value to figure out what kind of object we are dealing with and formats it\n// appropriately.  It is a recursive function, however circular data structures\n// are detected and handled properly.\nfunc (d *dumpState) dump(v reflect.Value) {\n\t// Handle invalid reflect values immediately.\n\tkind := v.Kind()\n\tif kind == reflect.Invalid {\n\t\td.w.Write(invalidAngleBytes)\n\t\treturn\n\t}\n\n\t// Handle pointers specially.\n\tif kind == reflect.Ptr {\n\t\td.indent()\n\t\td.dumpPtr(v)\n\t\treturn\n\t}\n\n\t// Print type information unless already handled elsewhere.\n\tif !d.ignoreNextType {\n\t\td.indent()\n\t\td.w.Write(openParenBytes)\n\t\td.w.Write([]byte(v.Type().String()))\n\t\td.w.Write(closeParenBytes)\n\t\td.w.Write(spaceBytes)\n\t}\n\td.ignoreNextType = false\n\n\t// Display length and capacity if the built-in len and cap functions\n\t// work with the value's kind and the len/cap itself is non-zero.\n\tvalueLen, valueCap := 0, 0\n\tswitch v.Kind() {\n\tcase reflect.Array, reflect.Slice, reflect.Chan:\n\t\tvalueLen, valueCap = v.Len(), v.Cap()\n\tcase reflect.Map, reflect.String:\n\t\tvalueLen = v.Len()\n\t}\n\tif valueLen != 0 || !d.cs.DisableCapacities && valueCap != 0 {\n\t\td.w.Write(openParenBytes)\n\t\tif valueLen != 0 {\n\t\t\td.w.Write(lenEqualsBytes)\n\t\t\tprintInt(d.w, int64(valueLen), 10)\n\t\t}\n\t\tif !d.cs.DisableCapacities && valueCap != 0 {\n\t\t\tif valueLen != 0 {\n\t\t\t\td.w.Write(spaceBytes)\n\t\t\t}\n\t\t\td.w.Write(capEqualsBytes)\n\t\t\tprintInt(d.w, int64(valueCap), 10)\n\t\t}\n\t\td.w.Write(closeParenBytes)\n\t\td.w.Write(spaceBytes)\n\t}\n\n\t// Call Stringer/error interfaces if they exist and the handle methods flag\n\t// is enabled\n\tif !d.cs.DisableMethods {\n\t\tif (kind != reflect.Invalid) && (kind != reflect.Interface) {\n\t\t\tif handled := handleMethods(d.cs, d.w, v); handled {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch kind {\n\tcase reflect.Invalid:\n\t\t// Do nothing.  We should never get here since invalid has already\n\t\t// been handled above.\n\n\tcase reflect.Bool:\n\t\tprintBool(d.w, v.Bool())\n\n\tcase reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int:\n\t\tprintInt(d.w, v.Int(), 10)\n\n\tcase reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint:\n\t\tprintUint(d.w, v.Uint(), 10)\n\n\tcase reflect.Float32:\n\t\tprintFloat(d.w, v.Float(), 32)\n\n\tcase reflect.Float64:\n\t\tprintFloat(d.w, v.Float(), 64)\n\n\tcase reflect.Complex64:\n\t\tprintComplex(d.w, v.Complex(), 32)\n\n\tcase reflect.Complex128:\n\t\tprintComplex(d.w, v.Complex(), 64)\n\n\tcase reflect.Slice:\n\t\tif v.IsNil() {\n\t\t\td.w.Write(nilAngleBytes)\n\t\t\tbreak\n\t\t}\n\t\tfallthrough\n\n\tcase reflect.Array:\n\t\td.w.Write(openBraceNewlineBytes)\n\t\td.depth++\n\t\tif (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) {\n\t\t\td.indent()\n\t\t\td.w.Write(maxNewlineBytes)\n\t\t} else {\n\t\t\td.dumpSlice(v)\n\t\t}\n\t\td.depth--\n\t\td.indent()\n\t\td.w.Write(closeBraceBytes)\n\n\tcase reflect.String:\n\t\td.w.Write([]byte(strconv.Quote(v.String())))\n\n\tcase reflect.Interface:\n\t\t// The only time we should get here is for nil interfaces due to\n\t\t// unpackValue calls.\n\t\tif v.IsNil() {\n\t\t\td.w.Write(nilAngleBytes)\n\t\t}\n\n\tcase reflect.Ptr:\n\t\t// Do nothing.  We should never get here since pointers have already\n\t\t// been handled above.\n\n\tcase reflect.Map:\n\t\t// nil maps should be indicated as different than empty maps\n\t\tif v.IsNil() {\n\t\t\td.w.Write(nilAngleBytes)\n\t\t\tbreak\n\t\t}\n\n\t\td.w.Write(openBraceNewlineBytes)\n\t\td.depth++\n\t\tif (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) {\n\t\t\td.indent()\n\t\t\td.w.Write(maxNewlineBytes)\n\t\t} else {\n\t\t\tnumEntries := v.Len()\n\t\t\tkeys := v.MapKeys()\n\t\t\tif d.cs.SortKeys {\n\t\t\t\tsortValues(keys, d.cs)\n\t\t\t}\n\t\t\tfor i, key := range keys {\n\t\t\t\td.dump(d.unpackValue(key))\n\t\t\t\td.w.Write(colonSpaceBytes)\n\t\t\t\td.ignoreNextIndent = true\n\t\t\t\td.dump(d.unpackValue(v.MapIndex(key)))\n\t\t\t\tif i < (numEntries - 1) {\n\t\t\t\t\td.w.Write(commaNewlineBytes)\n\t\t\t\t} else {\n\t\t\t\t\td.w.Write(newlineBytes)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\td.depth--\n\t\td.indent()\n\t\td.w.Write(closeBraceBytes)\n\n\tcase reflect.Struct:\n\t\td.w.Write(openBraceNewlineBytes)\n\t\td.depth++\n\t\tif (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) {\n\t\t\td.indent()\n\t\t\td.w.Write(maxNewlineBytes)\n\t\t} else {\n\t\t\tvt := v.Type()\n\t\t\tnumFields := v.NumField()\n\t\t\tfor i := 0; i < numFields; i++ {\n\t\t\t\td.indent()\n\t\t\t\tvtf := vt.Field(i)\n\t\t\t\td.w.Write([]byte(vtf.Name))\n\t\t\t\td.w.Write(colonSpaceBytes)\n\t\t\t\td.ignoreNextIndent = true\n\t\t\t\td.dump(d.unpackValue(v.Field(i)))\n\t\t\t\tif i < (numFields - 1) {\n\t\t\t\t\td.w.Write(commaNewlineBytes)\n\t\t\t\t} else {\n\t\t\t\t\td.w.Write(newlineBytes)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\td.depth--\n\t\td.indent()\n\t\td.w.Write(closeBraceBytes)\n\n\tcase reflect.Uintptr:\n\t\tprintHexPtr(d.w, uintptr(v.Uint()))\n\n\tcase reflect.UnsafePointer, reflect.Chan, reflect.Func:\n\t\tprintHexPtr(d.w, v.Pointer())\n\n\t// There were not any other types at the time this code was written, but\n\t// fall back to letting the default fmt package handle it in case any new\n\t// types are added.\n\tdefault:\n\t\tif v.CanInterface() {\n\t\t\tfmt.Fprintf(d.w, \"%v\", v.Interface())\n\t\t} else {\n\t\t\tfmt.Fprintf(d.w, \"%v\", v.String())\n\t\t}\n\t}\n}\n\n// fdump is a helper function to consolidate the logic from the various public\n// methods which take varying writers and config states.\nfunc fdump(cs *ConfigState, w io.Writer, a ...interface{}) {\n\tfor _, arg := range a {\n\t\tif arg == nil {\n\t\t\tw.Write(interfaceBytes)\n\t\t\tw.Write(spaceBytes)\n\t\t\tw.Write(nilAngleBytes)\n\t\t\tw.Write(newlineBytes)\n\t\t\tcontinue\n\t\t}\n\n\t\td := dumpState{w: w, cs: cs}\n\t\td.pointers = make(map[uintptr]int)\n\t\td.dump(reflect.ValueOf(arg))\n\t\td.w.Write(newlineBytes)\n\t}\n}\n\n// Fdump formats and displays the passed arguments to io.Writer w.  It formats\n// exactly the same as Dump.\nfunc Fdump(w io.Writer, a ...interface{}) {\n\tfdump(&Config, w, a...)\n}\n\n// Sdump returns a string with the passed arguments formatted exactly the same\n// as Dump.\nfunc Sdump(a ...interface{}) string {\n\tvar buf bytes.Buffer\n\tfdump(&Config, &buf, a...)\n\treturn buf.String()\n}\n\n/*\nDump displays the passed parameters to standard out with newlines, customizable\nindentation, and additional debug information such as complete types and all\npointer addresses used to indirect to the final value.  It provides the\nfollowing features over the built-in printing facilities provided by the fmt\npackage:\n\n\t* Pointers are dereferenced and followed\n\t* Circular data structures are detected and handled properly\n\t* Custom Stringer/error interfaces are optionally invoked, including\n\t  on unexported types\n\t* Custom types which only implement the Stringer/error interfaces via\n\t  a pointer receiver are optionally invoked when passing non-pointer\n\t  variables\n\t* Byte arrays and slices are dumped like the hexdump -C command which\n\t  includes offsets, byte values in hex, and ASCII output\n\nThe configuration options are controlled by an exported package global,\nspew.Config.  See ConfigState for options documentation.\n\nSee Fdump if you would prefer dumping to an arbitrary io.Writer or Sdump to\nget the formatted result as a string.\n*/\nfunc Dump(a ...interface{}) {\n\tfdump(&Config, os.Stdout, a...)\n}\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/format.go",
    "content": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\npackage spew\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// supportedFlags is a list of all the character flags supported by fmt package.\nconst supportedFlags = \"0-+# \"\n\n// formatState implements the fmt.Formatter interface and contains information\n// about the state of a formatting operation.  The NewFormatter function can\n// be used to get a new Formatter which can be used directly as arguments\n// in standard fmt package printing calls.\ntype formatState struct {\n\tvalue          interface{}\n\tfs             fmt.State\n\tdepth          int\n\tpointers       map[uintptr]int\n\tignoreNextType bool\n\tcs             *ConfigState\n}\n\n// buildDefaultFormat recreates the original format string without precision\n// and width information to pass in to fmt.Sprintf in the case of an\n// unrecognized type.  Unless new types are added to the language, this\n// function won't ever be called.\nfunc (f *formatState) buildDefaultFormat() (format string) {\n\tbuf := bytes.NewBuffer(percentBytes)\n\n\tfor _, flag := range supportedFlags {\n\t\tif f.fs.Flag(int(flag)) {\n\t\t\tbuf.WriteRune(flag)\n\t\t}\n\t}\n\n\tbuf.WriteRune('v')\n\n\tformat = buf.String()\n\treturn format\n}\n\n// constructOrigFormat recreates the original format string including precision\n// and width information to pass along to the standard fmt package.  This allows\n// automatic deferral of all format strings this package doesn't support.\nfunc (f *formatState) constructOrigFormat(verb rune) (format string) {\n\tbuf := bytes.NewBuffer(percentBytes)\n\n\tfor _, flag := range supportedFlags {\n\t\tif f.fs.Flag(int(flag)) {\n\t\t\tbuf.WriteRune(flag)\n\t\t}\n\t}\n\n\tif width, ok := f.fs.Width(); ok {\n\t\tbuf.WriteString(strconv.Itoa(width))\n\t}\n\n\tif precision, ok := f.fs.Precision(); ok {\n\t\tbuf.Write(precisionBytes)\n\t\tbuf.WriteString(strconv.Itoa(precision))\n\t}\n\n\tbuf.WriteRune(verb)\n\n\tformat = buf.String()\n\treturn format\n}\n\n// unpackValue returns values inside of non-nil interfaces when possible and\n// ensures that types for values which have been unpacked from an interface\n// are displayed when the show types flag is also set.\n// This is useful for data types like structs, arrays, slices, and maps which\n// can contain varying types packed inside an interface.\nfunc (f *formatState) unpackValue(v reflect.Value) reflect.Value {\n\tif v.Kind() == reflect.Interface {\n\t\tf.ignoreNextType = false\n\t\tif !v.IsNil() {\n\t\t\tv = v.Elem()\n\t\t}\n\t}\n\treturn v\n}\n\n// formatPtr handles formatting of pointers by indirecting them as necessary.\nfunc (f *formatState) formatPtr(v reflect.Value) {\n\t// Display nil if top level pointer is nil.\n\tshowTypes := f.fs.Flag('#')\n\tif v.IsNil() && (!showTypes || f.ignoreNextType) {\n\t\tf.fs.Write(nilAngleBytes)\n\t\treturn\n\t}\n\n\t// Remove pointers at or below the current depth from map used to detect\n\t// circular refs.\n\tfor k, depth := range f.pointers {\n\t\tif depth >= f.depth {\n\t\t\tdelete(f.pointers, k)\n\t\t}\n\t}\n\n\t// Keep list of all dereferenced pointers to possibly show later.\n\tpointerChain := make([]uintptr, 0)\n\n\t// Figure out how many levels of indirection there are by derferencing\n\t// pointers and unpacking interfaces down the chain while detecting circular\n\t// references.\n\tnilFound := false\n\tcycleFound := false\n\tindirects := 0\n\tve := v\n\tfor ve.Kind() == reflect.Ptr {\n\t\tif ve.IsNil() {\n\t\t\tnilFound = true\n\t\t\tbreak\n\t\t}\n\t\tindirects++\n\t\taddr := ve.Pointer()\n\t\tpointerChain = append(pointerChain, addr)\n\t\tif pd, ok := f.pointers[addr]; ok && pd < f.depth {\n\t\t\tcycleFound = true\n\t\t\tindirects--\n\t\t\tbreak\n\t\t}\n\t\tf.pointers[addr] = f.depth\n\n\t\tve = ve.Elem()\n\t\tif ve.Kind() == reflect.Interface {\n\t\t\tif ve.IsNil() {\n\t\t\t\tnilFound = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tve = ve.Elem()\n\t\t}\n\t}\n\n\t// Display type or indirection level depending on flags.\n\tif showTypes && !f.ignoreNextType {\n\t\tf.fs.Write(openParenBytes)\n\t\tf.fs.Write(bytes.Repeat(asteriskBytes, indirects))\n\t\tf.fs.Write([]byte(ve.Type().String()))\n\t\tf.fs.Write(closeParenBytes)\n\t} else {\n\t\tif nilFound || cycleFound {\n\t\t\tindirects += strings.Count(ve.Type().String(), \"*\")\n\t\t}\n\t\tf.fs.Write(openAngleBytes)\n\t\tf.fs.Write([]byte(strings.Repeat(\"*\", indirects)))\n\t\tf.fs.Write(closeAngleBytes)\n\t}\n\n\t// Display pointer information depending on flags.\n\tif f.fs.Flag('+') && (len(pointerChain) > 0) {\n\t\tf.fs.Write(openParenBytes)\n\t\tfor i, addr := range pointerChain {\n\t\t\tif i > 0 {\n\t\t\t\tf.fs.Write(pointerChainBytes)\n\t\t\t}\n\t\t\tprintHexPtr(f.fs, addr)\n\t\t}\n\t\tf.fs.Write(closeParenBytes)\n\t}\n\n\t// Display dereferenced value.\n\tswitch {\n\tcase nilFound:\n\t\tf.fs.Write(nilAngleBytes)\n\n\tcase cycleFound:\n\t\tf.fs.Write(circularShortBytes)\n\n\tdefault:\n\t\tf.ignoreNextType = true\n\t\tf.format(ve)\n\t}\n}\n\n// format is the main workhorse for providing the Formatter interface.  It\n// uses the passed reflect value to figure out what kind of object we are\n// dealing with and formats it appropriately.  It is a recursive function,\n// however circular data structures are detected and handled properly.\nfunc (f *formatState) format(v reflect.Value) {\n\t// Handle invalid reflect values immediately.\n\tkind := v.Kind()\n\tif kind == reflect.Invalid {\n\t\tf.fs.Write(invalidAngleBytes)\n\t\treturn\n\t}\n\n\t// Handle pointers specially.\n\tif kind == reflect.Ptr {\n\t\tf.formatPtr(v)\n\t\treturn\n\t}\n\n\t// Print type information unless already handled elsewhere.\n\tif !f.ignoreNextType && f.fs.Flag('#') {\n\t\tf.fs.Write(openParenBytes)\n\t\tf.fs.Write([]byte(v.Type().String()))\n\t\tf.fs.Write(closeParenBytes)\n\t}\n\tf.ignoreNextType = false\n\n\t// Call Stringer/error interfaces if they exist and the handle methods\n\t// flag is enabled.\n\tif !f.cs.DisableMethods {\n\t\tif (kind != reflect.Invalid) && (kind != reflect.Interface) {\n\t\t\tif handled := handleMethods(f.cs, f.fs, v); handled {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch kind {\n\tcase reflect.Invalid:\n\t\t// Do nothing.  We should never get here since invalid has already\n\t\t// been handled above.\n\n\tcase reflect.Bool:\n\t\tprintBool(f.fs, v.Bool())\n\n\tcase reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int:\n\t\tprintInt(f.fs, v.Int(), 10)\n\n\tcase reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint:\n\t\tprintUint(f.fs, v.Uint(), 10)\n\n\tcase reflect.Float32:\n\t\tprintFloat(f.fs, v.Float(), 32)\n\n\tcase reflect.Float64:\n\t\tprintFloat(f.fs, v.Float(), 64)\n\n\tcase reflect.Complex64:\n\t\tprintComplex(f.fs, v.Complex(), 32)\n\n\tcase reflect.Complex128:\n\t\tprintComplex(f.fs, v.Complex(), 64)\n\n\tcase reflect.Slice:\n\t\tif v.IsNil() {\n\t\t\tf.fs.Write(nilAngleBytes)\n\t\t\tbreak\n\t\t}\n\t\tfallthrough\n\n\tcase reflect.Array:\n\t\tf.fs.Write(openBracketBytes)\n\t\tf.depth++\n\t\tif (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) {\n\t\t\tf.fs.Write(maxShortBytes)\n\t\t} else {\n\t\t\tnumEntries := v.Len()\n\t\t\tfor i := 0; i < numEntries; i++ {\n\t\t\t\tif i > 0 {\n\t\t\t\t\tf.fs.Write(spaceBytes)\n\t\t\t\t}\n\t\t\t\tf.ignoreNextType = true\n\t\t\t\tf.format(f.unpackValue(v.Index(i)))\n\t\t\t}\n\t\t}\n\t\tf.depth--\n\t\tf.fs.Write(closeBracketBytes)\n\n\tcase reflect.String:\n\t\tf.fs.Write([]byte(v.String()))\n\n\tcase reflect.Interface:\n\t\t// The only time we should get here is for nil interfaces due to\n\t\t// unpackValue calls.\n\t\tif v.IsNil() {\n\t\t\tf.fs.Write(nilAngleBytes)\n\t\t}\n\n\tcase reflect.Ptr:\n\t\t// Do nothing.  We should never get here since pointers have already\n\t\t// been handled above.\n\n\tcase reflect.Map:\n\t\t// nil maps should be indicated as different than empty maps\n\t\tif v.IsNil() {\n\t\t\tf.fs.Write(nilAngleBytes)\n\t\t\tbreak\n\t\t}\n\n\t\tf.fs.Write(openMapBytes)\n\t\tf.depth++\n\t\tif (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) {\n\t\t\tf.fs.Write(maxShortBytes)\n\t\t} else {\n\t\t\tkeys := v.MapKeys()\n\t\t\tif f.cs.SortKeys {\n\t\t\t\tsortValues(keys, f.cs)\n\t\t\t}\n\t\t\tfor i, key := range keys {\n\t\t\t\tif i > 0 {\n\t\t\t\t\tf.fs.Write(spaceBytes)\n\t\t\t\t}\n\t\t\t\tf.ignoreNextType = true\n\t\t\t\tf.format(f.unpackValue(key))\n\t\t\t\tf.fs.Write(colonBytes)\n\t\t\t\tf.ignoreNextType = true\n\t\t\t\tf.format(f.unpackValue(v.MapIndex(key)))\n\t\t\t}\n\t\t}\n\t\tf.depth--\n\t\tf.fs.Write(closeMapBytes)\n\n\tcase reflect.Struct:\n\t\tnumFields := v.NumField()\n\t\tf.fs.Write(openBraceBytes)\n\t\tf.depth++\n\t\tif (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) {\n\t\t\tf.fs.Write(maxShortBytes)\n\t\t} else {\n\t\t\tvt := v.Type()\n\t\t\tfor i := 0; i < numFields; i++ {\n\t\t\t\tif i > 0 {\n\t\t\t\t\tf.fs.Write(spaceBytes)\n\t\t\t\t}\n\t\t\t\tvtf := vt.Field(i)\n\t\t\t\tif f.fs.Flag('+') || f.fs.Flag('#') {\n\t\t\t\t\tf.fs.Write([]byte(vtf.Name))\n\t\t\t\t\tf.fs.Write(colonBytes)\n\t\t\t\t}\n\t\t\t\tf.format(f.unpackValue(v.Field(i)))\n\t\t\t}\n\t\t}\n\t\tf.depth--\n\t\tf.fs.Write(closeBraceBytes)\n\n\tcase reflect.Uintptr:\n\t\tprintHexPtr(f.fs, uintptr(v.Uint()))\n\n\tcase reflect.UnsafePointer, reflect.Chan, reflect.Func:\n\t\tprintHexPtr(f.fs, v.Pointer())\n\n\t// There were not any other types at the time this code was written, but\n\t// fall back to letting the default fmt package handle it if any get added.\n\tdefault:\n\t\tformat := f.buildDefaultFormat()\n\t\tif v.CanInterface() {\n\t\t\tfmt.Fprintf(f.fs, format, v.Interface())\n\t\t} else {\n\t\t\tfmt.Fprintf(f.fs, format, v.String())\n\t\t}\n\t}\n}\n\n// Format satisfies the fmt.Formatter interface. See NewFormatter for usage\n// details.\nfunc (f *formatState) Format(fs fmt.State, verb rune) {\n\tf.fs = fs\n\n\t// Use standard formatting for verbs that are not v.\n\tif verb != 'v' {\n\t\tformat := f.constructOrigFormat(verb)\n\t\tfmt.Fprintf(fs, format, f.value)\n\t\treturn\n\t}\n\n\tif f.value == nil {\n\t\tif fs.Flag('#') {\n\t\t\tfs.Write(interfaceBytes)\n\t\t}\n\t\tfs.Write(nilAngleBytes)\n\t\treturn\n\t}\n\n\tf.format(reflect.ValueOf(f.value))\n}\n\n// newFormatter is a helper function to consolidate the logic from the various\n// public methods which take varying config states.\nfunc newFormatter(cs *ConfigState, v interface{}) fmt.Formatter {\n\tfs := &formatState{value: v, cs: cs}\n\tfs.pointers = make(map[uintptr]int)\n\treturn fs\n}\n\n/*\nNewFormatter returns a custom formatter that satisfies the fmt.Formatter\ninterface.  As a result, it integrates cleanly with standard fmt package\nprinting functions.  The formatter is useful for inline printing of smaller data\ntypes similar to the standard %v format specifier.\n\nThe custom formatter only responds to the %v (most compact), %+v (adds pointer\naddresses), %#v (adds types), or %#+v (adds types and pointer addresses) verb\ncombinations.  Any other verbs such as %x and %q will be sent to the the\nstandard fmt package for formatting.  In addition, the custom formatter ignores\nthe width and precision arguments (however they will still work on the format\nspecifiers not handled by the custom formatter).\n\nTypically this function shouldn't be called directly.  It is much easier to make\nuse of the custom formatter by calling one of the convenience functions such as\nPrintf, Println, or Fprintf.\n*/\nfunc NewFormatter(v interface{}) fmt.Formatter {\n\treturn newFormatter(&Config, v)\n}\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/spew.go",
    "content": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\npackage spew\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\n// Errorf is a wrapper for fmt.Errorf that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the formatted string as a value that satisfies error.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Errorf(format, spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Errorf(format string, a ...interface{}) (err error) {\n\treturn fmt.Errorf(format, convertArgs(a)...)\n}\n\n// Fprint is a wrapper for fmt.Fprint that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Fprint(w, spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Fprint(w io.Writer, a ...interface{}) (n int, err error) {\n\treturn fmt.Fprint(w, convertArgs(a)...)\n}\n\n// Fprintf is a wrapper for fmt.Fprintf that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Fprintf(w, format, spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) {\n\treturn fmt.Fprintf(w, format, convertArgs(a)...)\n}\n\n// Fprintln is a wrapper for fmt.Fprintln that treats each argument as if it\n// passed with a default Formatter interface returned by NewFormatter.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Fprintln(w, spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Fprintln(w io.Writer, a ...interface{}) (n int, err error) {\n\treturn fmt.Fprintln(w, convertArgs(a)...)\n}\n\n// Print is a wrapper for fmt.Print that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Print(spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Print(a ...interface{}) (n int, err error) {\n\treturn fmt.Print(convertArgs(a)...)\n}\n\n// Printf is a wrapper for fmt.Printf that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Printf(format, spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Printf(format string, a ...interface{}) (n int, err error) {\n\treturn fmt.Printf(format, convertArgs(a)...)\n}\n\n// Println is a wrapper for fmt.Println that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Println(spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Println(a ...interface{}) (n int, err error) {\n\treturn fmt.Println(convertArgs(a)...)\n}\n\n// Sprint is a wrapper for fmt.Sprint that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the resulting string.  See NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Sprint(spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Sprint(a ...interface{}) string {\n\treturn fmt.Sprint(convertArgs(a)...)\n}\n\n// Sprintf is a wrapper for fmt.Sprintf that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the resulting string.  See NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Sprintf(format, spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Sprintf(format string, a ...interface{}) string {\n\treturn fmt.Sprintf(format, convertArgs(a)...)\n}\n\n// Sprintln is a wrapper for fmt.Sprintln that treats each argument as if it\n// were passed with a default Formatter interface returned by NewFormatter.  It\n// returns the resulting string.  See NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Sprintln(spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Sprintln(a ...interface{}) string {\n\treturn fmt.Sprintln(convertArgs(a)...)\n}\n\n// convertArgs accepts a slice of arguments and returns a slice of the same\n// length with each argument converted to a default spew Formatter interface.\nfunc convertArgs(args []interface{}) (formatters []interface{}) {\n\tformatters = make([]interface{}, len(args))\n\tfor index, arg := range args {\n\t\tformatters[index] = NewFormatter(arg)\n\t}\n\treturn formatters\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} {name of copyright owner}\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/annotations/deprecation.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/annotations/deprecation.proto\n\npackage annotations\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nvar file_envoy_annotations_deprecation_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: (*bool)(nil),\n\t\tField:         189503207,\n\t\tName:          \"envoy.annotations.disallowed_by_default\",\n\t\tTag:           \"varint,189503207,opt,name=disallowed_by_default\",\n\t\tFilename:      \"envoy/annotations/deprecation.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: (*string)(nil),\n\t\tField:         157299826,\n\t\tName:          \"envoy.annotations.deprecated_at_minor_version\",\n\t\tTag:           \"bytes,157299826,opt,name=deprecated_at_minor_version\",\n\t\tFilename:      \"envoy/annotations/deprecation.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.EnumValueOptions)(nil),\n\t\tExtensionType: (*bool)(nil),\n\t\tField:         70100853,\n\t\tName:          \"envoy.annotations.disallowed_by_default_enum\",\n\t\tTag:           \"varint,70100853,opt,name=disallowed_by_default_enum\",\n\t\tFilename:      \"envoy/annotations/deprecation.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.EnumValueOptions)(nil),\n\t\tExtensionType: (*string)(nil),\n\t\tField:         181198657,\n\t\tName:          \"envoy.annotations.deprecated_at_minor_version_enum\",\n\t\tTag:           \"bytes,181198657,opt,name=deprecated_at_minor_version_enum\",\n\t\tFilename:      \"envoy/annotations/deprecation.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// optional bool disallowed_by_default = 189503207;\n\tE_DisallowedByDefault = &file_envoy_annotations_deprecation_proto_extTypes[0]\n\t// The API major and minor version on which the field was deprecated\n\t// (e.g., \"3.5\" for major version 3 and minor version 5).\n\t//\n\t// optional string deprecated_at_minor_version = 157299826;\n\tE_DeprecatedAtMinorVersion = &file_envoy_annotations_deprecation_proto_extTypes[1]\n)\n\n// Extension fields to descriptorpb.EnumValueOptions.\nvar (\n\t// optional bool disallowed_by_default_enum = 70100853;\n\tE_DisallowedByDefaultEnum = &file_envoy_annotations_deprecation_proto_extTypes[2]\n\t// The API major and minor version on which the enum value was deprecated\n\t// (e.g., \"3.5\" for major version 3 and minor version 5).\n\t//\n\t// optional string deprecated_at_minor_version_enum = 181198657;\n\tE_DeprecatedAtMinorVersionEnum = &file_envoy_annotations_deprecation_proto_extTypes[3]\n)\n\nvar File_envoy_annotations_deprecation_proto protoreflect.FileDescriptor\n\nconst file_envoy_annotations_deprecation_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"#envoy/annotations/deprecation.proto\\x12\\x11envoy.annotations\\x1a google/protobuf/descriptor.proto:T\\n\" +\n\t\"\\x15disallowed_by_default\\x12\\x1d.google.protobuf.FieldOptions\\x18筮Z \\x01(\\bR\\x13disallowedByDefault:_\\n\" +\n\t\"\\x1bdeprecated_at_minor_version\\x12\\x1d.google.protobuf.FieldOptions\\x18\\xf2\\xe8\\x80K \\x01(\\tR\\x18deprecatedAtMinorVersion:a\\n\" +\n\t\"\\x1adisallowed_by_default_enum\\x12!.google.protobuf.EnumValueOptions\\x18\\xf5ζ! \\x01(\\bR\\x17disallowedByDefaultEnum:l\\n\" +\n\t\" deprecated_at_minor_version_enum\\x12!.google.protobuf.EnumValueOptions\\x18\\xc1\\xbe\\xb3V \\x01(\\tR\\x1cdeprecatedAtMinorVersionEnumB:Z8github.com/envoyproxy/go-control-plane/envoy/annotationsb\\x06proto3\"\n\nvar file_envoy_annotations_deprecation_proto_goTypes = []any{\n\t(*descriptorpb.FieldOptions)(nil),     // 0: google.protobuf.FieldOptions\n\t(*descriptorpb.EnumValueOptions)(nil), // 1: google.protobuf.EnumValueOptions\n}\nvar file_envoy_annotations_deprecation_proto_depIdxs = []int32{\n\t0, // 0: envoy.annotations.disallowed_by_default:extendee -> google.protobuf.FieldOptions\n\t0, // 1: envoy.annotations.deprecated_at_minor_version:extendee -> google.protobuf.FieldOptions\n\t1, // 2: envoy.annotations.disallowed_by_default_enum:extendee -> google.protobuf.EnumValueOptions\n\t1, // 3: envoy.annotations.deprecated_at_minor_version_enum:extendee -> google.protobuf.EnumValueOptions\n\t4, // [4:4] is the sub-list for method output_type\n\t4, // [4:4] is the sub-list for method input_type\n\t4, // [4:4] is the sub-list for extension type_name\n\t0, // [0:4] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_annotations_deprecation_proto_init() }\nfunc file_envoy_annotations_deprecation_proto_init() {\n\tif File_envoy_annotations_deprecation_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_annotations_deprecation_proto_rawDesc), len(file_envoy_annotations_deprecation_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 4,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_annotations_deprecation_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_annotations_deprecation_proto_depIdxs,\n\t\tExtensionInfos:    file_envoy_annotations_deprecation_proto_extTypes,\n\t}.Build()\n\tFile_envoy_annotations_deprecation_proto = out.File\n\tfile_envoy_annotations_deprecation_proto_goTypes = nil\n\tfile_envoy_annotations_deprecation_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/annotations/deprecation.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/annotations/deprecation.proto\n\npackage annotations\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/annotations/resource.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/annotations/resource.proto\n\npackage annotations\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype ResourceAnnotation struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Annotation for xDS services that indicates the fully-qualified Protobuf type for the resource\n\t// type.\n\tType          string `protobuf:\"bytes,1,opt,name=type,proto3\" json:\"type,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ResourceAnnotation) Reset() {\n\t*x = ResourceAnnotation{}\n\tmi := &file_envoy_annotations_resource_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ResourceAnnotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ResourceAnnotation) ProtoMessage() {}\n\nfunc (x *ResourceAnnotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_annotations_resource_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ResourceAnnotation.ProtoReflect.Descriptor instead.\nfunc (*ResourceAnnotation) Descriptor() ([]byte, []int) {\n\treturn file_envoy_annotations_resource_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ResourceAnnotation) GetType() string {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn \"\"\n}\n\nvar file_envoy_annotations_resource_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.ServiceOptions)(nil),\n\t\tExtensionType: (*ResourceAnnotation)(nil),\n\t\tField:         265073217,\n\t\tName:          \"envoy.annotations.resource\",\n\t\tTag:           \"bytes,265073217,opt,name=resource\",\n\t\tFilename:      \"envoy/annotations/resource.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.ServiceOptions.\nvar (\n\t// optional envoy.annotations.ResourceAnnotation resource = 265073217;\n\tE_Resource = &file_envoy_annotations_resource_proto_extTypes[0]\n)\n\nvar File_envoy_annotations_resource_proto protoreflect.FileDescriptor\n\nconst file_envoy_annotations_resource_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\" envoy/annotations/resource.proto\\x12\\x11envoy.annotations\\x1a google/protobuf/descriptor.proto\\\"(\\n\" +\n\t\"\\x12ResourceAnnotation\\x12\\x12\\n\" +\n\t\"\\x04type\\x18\\x01 \\x01(\\tR\\x04type:e\\n\" +\n\t\"\\bresource\\x12\\x1f.google.protobuf.ServiceOptions\\x18\\xc1\\xe4\\xb2~ \\x01(\\v2%.envoy.annotations.ResourceAnnotationR\\bresourceB:Z8github.com/envoyproxy/go-control-plane/envoy/annotationsb\\x06proto3\"\n\nvar (\n\tfile_envoy_annotations_resource_proto_rawDescOnce sync.Once\n\tfile_envoy_annotations_resource_proto_rawDescData []byte\n)\n\nfunc file_envoy_annotations_resource_proto_rawDescGZIP() []byte {\n\tfile_envoy_annotations_resource_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_annotations_resource_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_annotations_resource_proto_rawDesc), len(file_envoy_annotations_resource_proto_rawDesc)))\n\t})\n\treturn file_envoy_annotations_resource_proto_rawDescData\n}\n\nvar file_envoy_annotations_resource_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_annotations_resource_proto_goTypes = []any{\n\t(*ResourceAnnotation)(nil),          // 0: envoy.annotations.ResourceAnnotation\n\t(*descriptorpb.ServiceOptions)(nil), // 1: google.protobuf.ServiceOptions\n}\nvar file_envoy_annotations_resource_proto_depIdxs = []int32{\n\t1, // 0: envoy.annotations.resource:extendee -> google.protobuf.ServiceOptions\n\t0, // 1: envoy.annotations.resource:type_name -> envoy.annotations.ResourceAnnotation\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t1, // [1:2] is the sub-list for extension type_name\n\t0, // [0:1] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_annotations_resource_proto_init() }\nfunc file_envoy_annotations_resource_proto_init() {\n\tif File_envoy_annotations_resource_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_annotations_resource_proto_rawDesc), len(file_envoy_annotations_resource_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_annotations_resource_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_annotations_resource_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_annotations_resource_proto_msgTypes,\n\t\tExtensionInfos:    file_envoy_annotations_resource_proto_extTypes,\n\t}.Build()\n\tFile_envoy_annotations_resource_proto = out.File\n\tfile_envoy_annotations_resource_proto_goTypes = nil\n\tfile_envoy_annotations_resource_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/annotations/resource.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/annotations/resource.proto\n\npackage annotations\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on ResourceAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *ResourceAnnotation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ResourceAnnotation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ResourceAnnotationMultiError, or nil if none found.\nfunc (m *ResourceAnnotation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ResourceAnnotation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Type\n\n\tif len(errors) > 0 {\n\t\treturn ResourceAnnotationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ResourceAnnotationMultiError is an error wrapping multiple validation errors\n// returned by ResourceAnnotation.ValidateAll() if the designated constraints\n// aren't met.\ntype ResourceAnnotationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ResourceAnnotationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ResourceAnnotationMultiError) AllErrors() []error { return m }\n\n// ResourceAnnotationValidationError is the validation error returned by\n// ResourceAnnotation.Validate if the designated constraints aren't met.\ntype ResourceAnnotationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ResourceAnnotationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ResourceAnnotationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ResourceAnnotationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ResourceAnnotationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ResourceAnnotationValidationError) ErrorName() string {\n\treturn \"ResourceAnnotationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ResourceAnnotationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sResourceAnnotation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ResourceAnnotationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ResourceAnnotationValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/annotations/resource_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/annotations/resource.proto\n\npackage annotations\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *ResourceAnnotation) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ResourceAnnotation) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ResourceAnnotation) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Type) > 0 {\n\t\ti -= len(m.Type)\n\t\tcopy(dAtA[i:], m.Type)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Type)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ResourceAnnotation) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Type)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/common/mutation_rules/v3/mutation_rules.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/common/mutation_rules/v3/mutation_rules.proto\n\npackage mutation_rulesv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tv31 \"github.com/envoyproxy/go-control-plane/envoy/config/core/v3\"\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// The HeaderMutationRules structure specifies what headers may be\n// manipulated by a processing filter. This set of rules makes it\n// possible to control which modifications a filter may make.\n//\n// By default, an external processing server may add, modify, or remove\n// any header except for an \"Envoy internal\" header (which is typically\n// denoted by an x-envoy prefix) or specific headers that may affect\n// further filter processing:\n//\n// * “host“\n// * “:authority“\n// * “:scheme“\n// * “:method“\n//\n// Every attempt to add, change, append, or remove a header will be\n// tested against the rules here. Disallowed header mutations will be\n// ignored unless “disallow_is_error“ is set to true.\n//\n// Attempts to remove headers are further constrained -- regardless of the\n// settings, system-defined headers (that start with “:“) and the “host“\n// header may never be removed.\n//\n// In addition, a counter will be incremented whenever a mutation is\n// rejected. In the ext_proc filter, that counter is named\n// “rejected_header_mutations“.\n// [#next-free-field: 8]\ntype HeaderMutationRules struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// By default, certain headers that could affect processing of subsequent\n\t// filters or request routing cannot be modified. These headers are\n\t// “host“, “:authority“, “:scheme“, and “:method“. Setting this parameter\n\t// to true allows these headers to be modified as well.\n\tAllowAllRouting *wrapperspb.BoolValue `protobuf:\"bytes,1,opt,name=allow_all_routing,json=allowAllRouting,proto3\" json:\"allow_all_routing,omitempty\"`\n\t// If true, allow modification of envoy internal headers. By default, these\n\t// start with “x-envoy“ but this may be overridden in the “Bootstrap“\n\t// configuration using the\n\t// :ref:`header_prefix <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.header_prefix>`\n\t// field. Default is false.\n\tAllowEnvoy *wrapperspb.BoolValue `protobuf:\"bytes,2,opt,name=allow_envoy,json=allowEnvoy,proto3\" json:\"allow_envoy,omitempty\"`\n\t// If true, prevent modification of any system header, defined as a header\n\t// that starts with a “:“ character, regardless of any other settings.\n\t// A processing server may still override the “:status“ of an HTTP response\n\t// using an “ImmediateResponse“ message. Default is false.\n\tDisallowSystem *wrapperspb.BoolValue `protobuf:\"bytes,3,opt,name=disallow_system,json=disallowSystem,proto3\" json:\"disallow_system,omitempty\"`\n\t// If true, prevent modifications of all header values, regardless of any\n\t// other settings. A processing server may still override the “:status“\n\t// of an HTTP response using an “ImmediateResponse“ message. Default is false.\n\tDisallowAll *wrapperspb.BoolValue `protobuf:\"bytes,4,opt,name=disallow_all,json=disallowAll,proto3\" json:\"disallow_all,omitempty\"`\n\t// If set, specifically allow any header that matches this regular\n\t// expression. This overrides all other settings except for\n\t// “disallow_expression“.\n\tAllowExpression *v3.RegexMatcher `protobuf:\"bytes,5,opt,name=allow_expression,json=allowExpression,proto3\" json:\"allow_expression,omitempty\"`\n\t// If set, specifically disallow any header that matches this regular\n\t// expression regardless of any other settings.\n\tDisallowExpression *v3.RegexMatcher `protobuf:\"bytes,6,opt,name=disallow_expression,json=disallowExpression,proto3\" json:\"disallow_expression,omitempty\"`\n\t// If true, and if the rules in this list cause a header mutation to be\n\t// disallowed, then the filter using this configuration will terminate the\n\t// request with a 500 error. In addition, regardless of the setting of this\n\t// parameter, any attempt to set, add, or modify a disallowed header will\n\t// cause the “rejected_header_mutations“ counter to be incremented.\n\t// Default is false.\n\tDisallowIsError *wrapperspb.BoolValue `protobuf:\"bytes,7,opt,name=disallow_is_error,json=disallowIsError,proto3\" json:\"disallow_is_error,omitempty\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *HeaderMutationRules) Reset() {\n\t*x = HeaderMutationRules{}\n\tmi := &file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HeaderMutationRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HeaderMutationRules) ProtoMessage() {}\n\nfunc (x *HeaderMutationRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HeaderMutationRules.ProtoReflect.Descriptor instead.\nfunc (*HeaderMutationRules) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *HeaderMutationRules) GetAllowAllRouting() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.AllowAllRouting\n\t}\n\treturn nil\n}\n\nfunc (x *HeaderMutationRules) GetAllowEnvoy() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.AllowEnvoy\n\t}\n\treturn nil\n}\n\nfunc (x *HeaderMutationRules) GetDisallowSystem() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.DisallowSystem\n\t}\n\treturn nil\n}\n\nfunc (x *HeaderMutationRules) GetDisallowAll() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.DisallowAll\n\t}\n\treturn nil\n}\n\nfunc (x *HeaderMutationRules) GetAllowExpression() *v3.RegexMatcher {\n\tif x != nil {\n\t\treturn x.AllowExpression\n\t}\n\treturn nil\n}\n\nfunc (x *HeaderMutationRules) GetDisallowExpression() *v3.RegexMatcher {\n\tif x != nil {\n\t\treturn x.DisallowExpression\n\t}\n\treturn nil\n}\n\nfunc (x *HeaderMutationRules) GetDisallowIsError() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.DisallowIsError\n\t}\n\treturn nil\n}\n\n// The HeaderMutation structure specifies an action that may be taken on HTTP\n// headers.\ntype HeaderMutation struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Action:\n\t//\n\t//\t*HeaderMutation_Remove\n\t//\t*HeaderMutation_Append\n\t//\t*HeaderMutation_RemoveOnMatch_\n\tAction        isHeaderMutation_Action `protobuf_oneof:\"action\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HeaderMutation) Reset() {\n\t*x = HeaderMutation{}\n\tmi := &file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HeaderMutation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HeaderMutation) ProtoMessage() {}\n\nfunc (x *HeaderMutation) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HeaderMutation.ProtoReflect.Descriptor instead.\nfunc (*HeaderMutation) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *HeaderMutation) GetAction() isHeaderMutation_Action {\n\tif x != nil {\n\t\treturn x.Action\n\t}\n\treturn nil\n}\n\nfunc (x *HeaderMutation) GetRemove() string {\n\tif x != nil {\n\t\tif x, ok := x.Action.(*HeaderMutation_Remove); ok {\n\t\t\treturn x.Remove\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *HeaderMutation) GetAppend() *v31.HeaderValueOption {\n\tif x != nil {\n\t\tif x, ok := x.Action.(*HeaderMutation_Append); ok {\n\t\t\treturn x.Append\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *HeaderMutation) GetRemoveOnMatch() *HeaderMutation_RemoveOnMatch {\n\tif x != nil {\n\t\tif x, ok := x.Action.(*HeaderMutation_RemoveOnMatch_); ok {\n\t\t\treturn x.RemoveOnMatch\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isHeaderMutation_Action interface {\n\tisHeaderMutation_Action()\n}\n\ntype HeaderMutation_Remove struct {\n\t// Remove the specified header if it exists.\n\tRemove string `protobuf:\"bytes,1,opt,name=remove,proto3,oneof\"`\n}\n\ntype HeaderMutation_Append struct {\n\t// Append new header by the specified HeaderValueOption.\n\tAppend *v31.HeaderValueOption `protobuf:\"bytes,2,opt,name=append,proto3,oneof\"`\n}\n\ntype HeaderMutation_RemoveOnMatch_ struct {\n\t// Remove the header if the key matches the specified string matcher.\n\tRemoveOnMatch *HeaderMutation_RemoveOnMatch `protobuf:\"bytes,3,opt,name=remove_on_match,json=removeOnMatch,proto3,oneof\"`\n}\n\nfunc (*HeaderMutation_Remove) isHeaderMutation_Action() {}\n\nfunc (*HeaderMutation_Append) isHeaderMutation_Action() {}\n\nfunc (*HeaderMutation_RemoveOnMatch_) isHeaderMutation_Action() {}\n\ntype HeaderMutation_RemoveOnMatch struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// A string matcher that will be applied to the header key. If the header key\n\t// matches, the header will be removed.\n\tKeyMatcher    *v3.StringMatcher `protobuf:\"bytes,1,opt,name=key_matcher,json=keyMatcher,proto3\" json:\"key_matcher,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HeaderMutation_RemoveOnMatch) Reset() {\n\t*x = HeaderMutation_RemoveOnMatch{}\n\tmi := &file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HeaderMutation_RemoveOnMatch) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HeaderMutation_RemoveOnMatch) ProtoMessage() {}\n\nfunc (x *HeaderMutation_RemoveOnMatch) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HeaderMutation_RemoveOnMatch.ProtoReflect.Descriptor instead.\nfunc (*HeaderMutation_RemoveOnMatch) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescGZIP(), []int{1, 0}\n}\n\nfunc (x *HeaderMutation_RemoveOnMatch) GetKeyMatcher() *v3.StringMatcher {\n\tif x != nil {\n\t\treturn x.KeyMatcher\n\t}\n\treturn nil\n}\n\nvar File_envoy_config_common_mutation_rules_v3_mutation_rules_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\":envoy/config/common/mutation_rules/v3/mutation_rules.proto\\x12%envoy.config.common.mutation_rules.v3\\x1a\\x1fenvoy/config/core/v3/base.proto\\x1a!envoy/type/matcher/v3/regex.proto\\x1a\\\"envoy/type/matcher/v3/string.proto\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a\\x17validate/validate.proto\\\"\\x8c\\x04\\n\" +\n\t\"\\x13HeaderMutationRules\\x12F\\n\" +\n\t\"\\x11allow_all_routing\\x18\\x01 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\x0fallowAllRouting\\x12;\\n\" +\n\t\"\\vallow_envoy\\x18\\x02 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\n\" +\n\t\"allowEnvoy\\x12C\\n\" +\n\t\"\\x0fdisallow_system\\x18\\x03 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\x0edisallowSystem\\x12=\\n\" +\n\t\"\\fdisallow_all\\x18\\x04 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\vdisallowAll\\x12N\\n\" +\n\t\"\\x10allow_expression\\x18\\x05 \\x01(\\v2#.envoy.type.matcher.v3.RegexMatcherR\\x0fallowExpression\\x12T\\n\" +\n\t\"\\x13disallow_expression\\x18\\x06 \\x01(\\v2#.envoy.type.matcher.v3.RegexMatcherR\\x12disallowExpression\\x12F\\n\" +\n\t\"\\x11disallow_is_error\\x18\\a \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\x0fdisallowIsError\\\"\\xda\\x02\\n\" +\n\t\"\\x0eHeaderMutation\\x12%\\n\" +\n\t\"\\x06remove\\x18\\x01 \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x02H\\x00R\\x06remove\\x12A\\n\" +\n\t\"\\x06append\\x18\\x02 \\x01(\\v2'.envoy.config.core.v3.HeaderValueOptionH\\x00R\\x06append\\x12m\\n\" +\n\t\"\\x0fremove_on_match\\x18\\x03 \\x01(\\v2C.envoy.config.common.mutation_rules.v3.HeaderMutation.RemoveOnMatchH\\x00R\\rremoveOnMatch\\x1a`\\n\" +\n\t\"\\rRemoveOnMatch\\x12O\\n\" +\n\t\"\\vkey_matcher\\x18\\x01 \\x01(\\v2$.envoy.type.matcher.v3.StringMatcherB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\n\" +\n\t\"keyMatcherB\\r\\n\" +\n\t\"\\x06action\\x12\\x03\\xf8B\\x01B\\xb2\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"3io.envoyproxy.envoy.config.common.mutation_rules.v3B\\x12MutationRulesProtoP\\x01Z]github.com/envoyproxy/go-control-plane/envoy/config/common/mutation_rules/v3;mutation_rulesv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescOnce sync.Once\n\tfile_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDesc), len(file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDescData\n}\n\nvar file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes = make([]protoimpl.MessageInfo, 3)\nvar file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_goTypes = []any{\n\t(*HeaderMutationRules)(nil),          // 0: envoy.config.common.mutation_rules.v3.HeaderMutationRules\n\t(*HeaderMutation)(nil),               // 1: envoy.config.common.mutation_rules.v3.HeaderMutation\n\t(*HeaderMutation_RemoveOnMatch)(nil), // 2: envoy.config.common.mutation_rules.v3.HeaderMutation.RemoveOnMatch\n\t(*wrapperspb.BoolValue)(nil),         // 3: google.protobuf.BoolValue\n\t(*v3.RegexMatcher)(nil),              // 4: envoy.type.matcher.v3.RegexMatcher\n\t(*v31.HeaderValueOption)(nil),        // 5: envoy.config.core.v3.HeaderValueOption\n\t(*v3.StringMatcher)(nil),             // 6: envoy.type.matcher.v3.StringMatcher\n}\nvar file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_depIdxs = []int32{\n\t3,  // 0: envoy.config.common.mutation_rules.v3.HeaderMutationRules.allow_all_routing:type_name -> google.protobuf.BoolValue\n\t3,  // 1: envoy.config.common.mutation_rules.v3.HeaderMutationRules.allow_envoy:type_name -> google.protobuf.BoolValue\n\t3,  // 2: envoy.config.common.mutation_rules.v3.HeaderMutationRules.disallow_system:type_name -> google.protobuf.BoolValue\n\t3,  // 3: envoy.config.common.mutation_rules.v3.HeaderMutationRules.disallow_all:type_name -> google.protobuf.BoolValue\n\t4,  // 4: envoy.config.common.mutation_rules.v3.HeaderMutationRules.allow_expression:type_name -> envoy.type.matcher.v3.RegexMatcher\n\t4,  // 5: envoy.config.common.mutation_rules.v3.HeaderMutationRules.disallow_expression:type_name -> envoy.type.matcher.v3.RegexMatcher\n\t3,  // 6: envoy.config.common.mutation_rules.v3.HeaderMutationRules.disallow_is_error:type_name -> google.protobuf.BoolValue\n\t5,  // 7: envoy.config.common.mutation_rules.v3.HeaderMutation.append:type_name -> envoy.config.core.v3.HeaderValueOption\n\t2,  // 8: envoy.config.common.mutation_rules.v3.HeaderMutation.remove_on_match:type_name -> envoy.config.common.mutation_rules.v3.HeaderMutation.RemoveOnMatch\n\t6,  // 9: envoy.config.common.mutation_rules.v3.HeaderMutation.RemoveOnMatch.key_matcher:type_name -> envoy.type.matcher.v3.StringMatcher\n\t10, // [10:10] is the sub-list for method output_type\n\t10, // [10:10] is the sub-list for method input_type\n\t10, // [10:10] is the sub-list for extension type_name\n\t10, // [10:10] is the sub-list for extension extendee\n\t0,  // [0:10] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_init() }\nfunc file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_init() {\n\tif File_envoy_config_common_mutation_rules_v3_mutation_rules_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes[1].OneofWrappers = []any{\n\t\t(*HeaderMutation_Remove)(nil),\n\t\t(*HeaderMutation_Append)(nil),\n\t\t(*HeaderMutation_RemoveOnMatch_)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDesc), len(file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   3,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_common_mutation_rules_v3_mutation_rules_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_common_mutation_rules_v3_mutation_rules_proto = out.File\n\tfile_envoy_config_common_mutation_rules_v3_mutation_rules_proto_goTypes = nil\n\tfile_envoy_config_common_mutation_rules_v3_mutation_rules_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/common/mutation_rules/v3/mutation_rules.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/common/mutation_rules/v3/mutation_rules.proto\n\npackage mutation_rulesv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on HeaderMutationRules with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HeaderMutationRules) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HeaderMutationRules with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HeaderMutationRulesMultiError, or nil if none found.\nfunc (m *HeaderMutationRules) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HeaderMutationRules) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetAllowAllRouting()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutationRulesValidationError{\n\t\t\t\t\tfield:  \"AllowAllRouting\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutationRulesValidationError{\n\t\t\t\t\tfield:  \"AllowAllRouting\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetAllowAllRouting()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HeaderMutationRulesValidationError{\n\t\t\t\tfield:  \"AllowAllRouting\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetAllowEnvoy()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutationRulesValidationError{\n\t\t\t\t\tfield:  \"AllowEnvoy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutationRulesValidationError{\n\t\t\t\t\tfield:  \"AllowEnvoy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetAllowEnvoy()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HeaderMutationRulesValidationError{\n\t\t\t\tfield:  \"AllowEnvoy\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetDisallowSystem()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutationRulesValidationError{\n\t\t\t\t\tfield:  \"DisallowSystem\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutationRulesValidationError{\n\t\t\t\t\tfield:  \"DisallowSystem\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetDisallowSystem()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HeaderMutationRulesValidationError{\n\t\t\t\tfield:  \"DisallowSystem\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetDisallowAll()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutationRulesValidationError{\n\t\t\t\t\tfield:  \"DisallowAll\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutationRulesValidationError{\n\t\t\t\t\tfield:  \"DisallowAll\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetDisallowAll()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HeaderMutationRulesValidationError{\n\t\t\t\tfield:  \"DisallowAll\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetAllowExpression()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutationRulesValidationError{\n\t\t\t\t\tfield:  \"AllowExpression\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutationRulesValidationError{\n\t\t\t\t\tfield:  \"AllowExpression\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetAllowExpression()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HeaderMutationRulesValidationError{\n\t\t\t\tfield:  \"AllowExpression\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetDisallowExpression()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutationRulesValidationError{\n\t\t\t\t\tfield:  \"DisallowExpression\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutationRulesValidationError{\n\t\t\t\t\tfield:  \"DisallowExpression\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetDisallowExpression()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HeaderMutationRulesValidationError{\n\t\t\t\tfield:  \"DisallowExpression\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetDisallowIsError()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutationRulesValidationError{\n\t\t\t\t\tfield:  \"DisallowIsError\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutationRulesValidationError{\n\t\t\t\t\tfield:  \"DisallowIsError\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetDisallowIsError()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HeaderMutationRulesValidationError{\n\t\t\t\tfield:  \"DisallowIsError\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HeaderMutationRulesMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HeaderMutationRulesMultiError is an error wrapping multiple validation\n// errors returned by HeaderMutationRules.ValidateAll() if the designated\n// constraints aren't met.\ntype HeaderMutationRulesMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HeaderMutationRulesMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HeaderMutationRulesMultiError) AllErrors() []error { return m }\n\n// HeaderMutationRulesValidationError is the validation error returned by\n// HeaderMutationRules.Validate if the designated constraints aren't met.\ntype HeaderMutationRulesValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HeaderMutationRulesValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HeaderMutationRulesValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HeaderMutationRulesValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HeaderMutationRulesValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HeaderMutationRulesValidationError) ErrorName() string {\n\treturn \"HeaderMutationRulesValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HeaderMutationRulesValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHeaderMutationRules.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HeaderMutationRulesValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HeaderMutationRulesValidationError{}\n\n// Validate checks the field values on HeaderMutation with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *HeaderMutation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HeaderMutation with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in HeaderMutationMultiError,\n// or nil if none found.\nfunc (m *HeaderMutation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HeaderMutation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofActionPresent := false\n\tswitch v := m.Action.(type) {\n\tcase *HeaderMutation_Remove:\n\t\tif v == nil {\n\t\t\terr := HeaderMutationValidationError{\n\t\t\t\tfield:  \"Action\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionPresent = true\n\n\t\tif !_HeaderMutation_Remove_Pattern.MatchString(m.GetRemove()) {\n\t\t\terr := HeaderMutationValidationError{\n\t\t\t\tfield:  \"Remove\",\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *HeaderMutation_Append:\n\t\tif v == nil {\n\t\t\terr := HeaderMutationValidationError{\n\t\t\t\tfield:  \"Action\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetAppend()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HeaderMutationValidationError{\n\t\t\t\t\t\tfield:  \"Append\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HeaderMutationValidationError{\n\t\t\t\t\t\tfield:  \"Append\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetAppend()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HeaderMutationValidationError{\n\t\t\t\t\tfield:  \"Append\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *HeaderMutation_RemoveOnMatch_:\n\t\tif v == nil {\n\t\t\terr := HeaderMutationValidationError{\n\t\t\t\tfield:  \"Action\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetRemoveOnMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HeaderMutationValidationError{\n\t\t\t\t\t\tfield:  \"RemoveOnMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HeaderMutationValidationError{\n\t\t\t\t\t\tfield:  \"RemoveOnMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetRemoveOnMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HeaderMutationValidationError{\n\t\t\t\t\tfield:  \"RemoveOnMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofActionPresent {\n\t\terr := HeaderMutationValidationError{\n\t\t\tfield:  \"Action\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HeaderMutationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HeaderMutationMultiError is an error wrapping multiple validation errors\n// returned by HeaderMutation.ValidateAll() if the designated constraints\n// aren't met.\ntype HeaderMutationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HeaderMutationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HeaderMutationMultiError) AllErrors() []error { return m }\n\n// HeaderMutationValidationError is the validation error returned by\n// HeaderMutation.Validate if the designated constraints aren't met.\ntype HeaderMutationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HeaderMutationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HeaderMutationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HeaderMutationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HeaderMutationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HeaderMutationValidationError) ErrorName() string { return \"HeaderMutationValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e HeaderMutationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHeaderMutation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HeaderMutationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HeaderMutationValidationError{}\n\nvar _HeaderMutation_Remove_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on HeaderMutation_RemoveOnMatch with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HeaderMutation_RemoveOnMatch) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HeaderMutation_RemoveOnMatch with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HeaderMutation_RemoveOnMatchMultiError, or nil if none found.\nfunc (m *HeaderMutation_RemoveOnMatch) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HeaderMutation_RemoveOnMatch) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetKeyMatcher() == nil {\n\t\terr := HeaderMutation_RemoveOnMatchValidationError{\n\t\t\tfield:  \"KeyMatcher\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetKeyMatcher()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutation_RemoveOnMatchValidationError{\n\t\t\t\t\tfield:  \"KeyMatcher\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HeaderMutation_RemoveOnMatchValidationError{\n\t\t\t\t\tfield:  \"KeyMatcher\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetKeyMatcher()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HeaderMutation_RemoveOnMatchValidationError{\n\t\t\t\tfield:  \"KeyMatcher\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HeaderMutation_RemoveOnMatchMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HeaderMutation_RemoveOnMatchMultiError is an error wrapping multiple\n// validation errors returned by HeaderMutation_RemoveOnMatch.ValidateAll() if\n// the designated constraints aren't met.\ntype HeaderMutation_RemoveOnMatchMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HeaderMutation_RemoveOnMatchMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HeaderMutation_RemoveOnMatchMultiError) AllErrors() []error { return m }\n\n// HeaderMutation_RemoveOnMatchValidationError is the validation error returned\n// by HeaderMutation_RemoveOnMatch.Validate if the designated constraints\n// aren't met.\ntype HeaderMutation_RemoveOnMatchValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HeaderMutation_RemoveOnMatchValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HeaderMutation_RemoveOnMatchValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HeaderMutation_RemoveOnMatchValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HeaderMutation_RemoveOnMatchValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HeaderMutation_RemoveOnMatchValidationError) ErrorName() string {\n\treturn \"HeaderMutation_RemoveOnMatchValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HeaderMutation_RemoveOnMatchValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHeaderMutation_RemoveOnMatch.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HeaderMutation_RemoveOnMatchValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HeaderMutation_RemoveOnMatchValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/common/mutation_rules/v3/mutation_rules_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/common/mutation_rules/v3/mutation_rules.proto\n\npackage mutation_rulesv3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\twrapperspb \"github.com/planetscale/vtprotobuf/types/known/wrapperspb\"\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *HeaderMutationRules) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HeaderMutationRules) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMutationRules) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.DisallowIsError != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.DisallowIsError).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif m.DisallowExpression != nil {\n\t\tif vtmsg, ok := interface{}(m.DisallowExpression).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.DisallowExpression)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif m.AllowExpression != nil {\n\t\tif vtmsg, ok := interface{}(m.AllowExpression).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.AllowExpression)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.DisallowAll != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.DisallowAll).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.DisallowSystem != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.DisallowSystem).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.AllowEnvoy != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.AllowEnvoy).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.AllowAllRouting != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.AllowAllRouting).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HeaderMutation_RemoveOnMatch) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HeaderMutation_RemoveOnMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMutation_RemoveOnMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.KeyMatcher != nil {\n\t\tif vtmsg, ok := interface{}(m.KeyMatcher).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.KeyMatcher)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HeaderMutation) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HeaderMutation) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMutation) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.Action.(*HeaderMutation_RemoveOnMatch_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Action.(*HeaderMutation_Append); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Action.(*HeaderMutation_Remove); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HeaderMutation_Remove) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMutation_Remove) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Remove)\n\tcopy(dAtA[i:], m.Remove)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Remove)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HeaderMutation_Append) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMutation_Append) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Append != nil {\n\t\tif vtmsg, ok := interface{}(m.Append).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Append)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HeaderMutation_RemoveOnMatch_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMutation_RemoveOnMatch_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RemoveOnMatch != nil {\n\t\tsize, err := m.RemoveOnMatch.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HeaderMutationRules) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.AllowAllRouting != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.AllowAllRouting).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.AllowEnvoy != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.AllowEnvoy).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.DisallowSystem != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.DisallowSystem).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.DisallowAll != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.DisallowAll).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.AllowExpression != nil {\n\t\tif size, ok := interface{}(m.AllowExpression).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.AllowExpression)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.DisallowExpression != nil {\n\t\tif size, ok := interface{}(m.DisallowExpression).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.DisallowExpression)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.DisallowIsError != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.DisallowIsError).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HeaderMutation_RemoveOnMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.KeyMatcher != nil {\n\t\tif size, ok := interface{}(m.KeyMatcher).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.KeyMatcher)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HeaderMutation) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Action.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HeaderMutation_Remove) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Remove)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *HeaderMutation_Append) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Append != nil {\n\t\tif size, ok := interface{}(m.Append).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Append)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *HeaderMutation_RemoveOnMatch_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RemoveOnMatch != nil {\n\t\tl = m.RemoveOnMatch.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/address.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/address.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/go-control-plane/envoy/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype SocketAddress_Protocol int32\n\nconst (\n\tSocketAddress_TCP SocketAddress_Protocol = 0\n\tSocketAddress_UDP SocketAddress_Protocol = 1\n)\n\n// Enum value maps for SocketAddress_Protocol.\nvar (\n\tSocketAddress_Protocol_name = map[int32]string{\n\t\t0: \"TCP\",\n\t\t1: \"UDP\",\n\t}\n\tSocketAddress_Protocol_value = map[string]int32{\n\t\t\"TCP\": 0,\n\t\t\"UDP\": 1,\n\t}\n)\n\nfunc (x SocketAddress_Protocol) Enum() *SocketAddress_Protocol {\n\tp := new(SocketAddress_Protocol)\n\t*p = x\n\treturn p\n}\n\nfunc (x SocketAddress_Protocol) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (SocketAddress_Protocol) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_core_v3_address_proto_enumTypes[0].Descriptor()\n}\n\nfunc (SocketAddress_Protocol) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_core_v3_address_proto_enumTypes[0]\n}\n\nfunc (x SocketAddress_Protocol) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use SocketAddress_Protocol.Descriptor instead.\nfunc (SocketAddress_Protocol) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_address_proto_rawDescGZIP(), []int{2, 0}\n}\n\ntype Pipe struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Unix Domain Socket path. On Linux, paths starting with '@' will use the\n\t// abstract namespace. The starting '@' is replaced by a null byte by Envoy.\n\t// Paths starting with '@' will result in an error in environments other than\n\t// Linux.\n\tPath string `protobuf:\"bytes,1,opt,name=path,proto3\" json:\"path,omitempty\"`\n\t// The mode for the Pipe. Not applicable for abstract sockets.\n\tMode          uint32 `protobuf:\"varint,2,opt,name=mode,proto3\" json:\"mode,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Pipe) Reset() {\n\t*x = Pipe{}\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Pipe) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Pipe) ProtoMessage() {}\n\nfunc (x *Pipe) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Pipe.ProtoReflect.Descriptor instead.\nfunc (*Pipe) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_address_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Pipe) GetPath() string {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn \"\"\n}\n\nfunc (x *Pipe) GetMode() uint32 {\n\tif x != nil {\n\t\treturn x.Mode\n\t}\n\treturn 0\n}\n\n// The address represents an envoy internal listener.\n// [#comment: TODO(asraa): When address available, remove workaround from test/server/server_fuzz_test.cc:30.]\ntype EnvoyInternalAddress struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to AddressNameSpecifier:\n\t//\n\t//\t*EnvoyInternalAddress_ServerListenerName\n\tAddressNameSpecifier isEnvoyInternalAddress_AddressNameSpecifier `protobuf_oneof:\"address_name_specifier\"`\n\t// Specifies an endpoint identifier to distinguish between multiple endpoints for the same internal listener in a\n\t// single upstream pool. Only used in the upstream addresses for tracking changes to individual endpoints. This, for\n\t// example, may be set to the final destination IP for the target internal listener.\n\tEndpointId    string `protobuf:\"bytes,2,opt,name=endpoint_id,json=endpointId,proto3\" json:\"endpoint_id,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *EnvoyInternalAddress) Reset() {\n\t*x = EnvoyInternalAddress{}\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EnvoyInternalAddress) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnvoyInternalAddress) ProtoMessage() {}\n\nfunc (x *EnvoyInternalAddress) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnvoyInternalAddress.ProtoReflect.Descriptor instead.\nfunc (*EnvoyInternalAddress) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_address_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *EnvoyInternalAddress) GetAddressNameSpecifier() isEnvoyInternalAddress_AddressNameSpecifier {\n\tif x != nil {\n\t\treturn x.AddressNameSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *EnvoyInternalAddress) GetServerListenerName() string {\n\tif x != nil {\n\t\tif x, ok := x.AddressNameSpecifier.(*EnvoyInternalAddress_ServerListenerName); ok {\n\t\t\treturn x.ServerListenerName\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *EnvoyInternalAddress) GetEndpointId() string {\n\tif x != nil {\n\t\treturn x.EndpointId\n\t}\n\treturn \"\"\n}\n\ntype isEnvoyInternalAddress_AddressNameSpecifier interface {\n\tisEnvoyInternalAddress_AddressNameSpecifier()\n}\n\ntype EnvoyInternalAddress_ServerListenerName struct {\n\t// Specifies the :ref:`name <envoy_v3_api_field_config.listener.v3.Listener.name>` of the\n\t// internal listener.\n\tServerListenerName string `protobuf:\"bytes,1,opt,name=server_listener_name,json=serverListenerName,proto3,oneof\"`\n}\n\nfunc (*EnvoyInternalAddress_ServerListenerName) isEnvoyInternalAddress_AddressNameSpecifier() {}\n\n// [#next-free-field: 8]\ntype SocketAddress struct {\n\tstate    protoimpl.MessageState `protogen:\"open.v1\"`\n\tProtocol SocketAddress_Protocol `protobuf:\"varint,1,opt,name=protocol,proto3,enum=envoy.config.core.v3.SocketAddress_Protocol\" json:\"protocol,omitempty\"`\n\t// The address for this socket. :ref:`Listeners <config_listeners>` will bind\n\t// to the address. An empty address is not allowed. Specify “0.0.0.0“ or “::“\n\t// to bind to any address. [#comment:TODO(zuercher) reinstate when implemented:\n\t// It is possible to distinguish a Listener address via the prefix/suffix matching\n\t// in :ref:`FilterChainMatch <envoy_v3_api_msg_config.listener.v3.FilterChainMatch>`.] When used\n\t// within an upstream :ref:`BindConfig <envoy_v3_api_msg_config.core.v3.BindConfig>`, the address\n\t// controls the source address of outbound connections. For :ref:`clusters\n\t// <envoy_v3_api_msg_config.cluster.v3.Cluster>`, the cluster type determines whether the\n\t// address must be an IP (“STATIC“ or “EDS“ clusters) or a hostname resolved by DNS\n\t// (“STRICT_DNS“ or “LOGICAL_DNS“ clusters). Address resolution can be customized\n\t// via :ref:`resolver_name <envoy_v3_api_field_config.core.v3.SocketAddress.resolver_name>`.\n\tAddress string `protobuf:\"bytes,2,opt,name=address,proto3\" json:\"address,omitempty\"`\n\t// Types that are valid to be assigned to PortSpecifier:\n\t//\n\t//\t*SocketAddress_PortValue\n\t//\t*SocketAddress_NamedPort\n\tPortSpecifier isSocketAddress_PortSpecifier `protobuf_oneof:\"port_specifier\"`\n\t// The name of the custom resolver. This must have been registered with Envoy. If\n\t// this is empty, a context dependent default applies. If the address is a concrete\n\t// IP address, no resolution will occur. If address is a hostname this\n\t// should be set for resolution other than DNS. Specifying a custom resolver with\n\t// “STRICT_DNS“ or “LOGICAL_DNS“ will generate an error at runtime.\n\tResolverName string `protobuf:\"bytes,5,opt,name=resolver_name,json=resolverName,proto3\" json:\"resolver_name,omitempty\"`\n\t// When binding to an IPv6 address above, this enables `IPv4 compatibility\n\t// <https://tools.ietf.org/html/rfc3493#page-11>`_. Binding to “::“ will\n\t// allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into\n\t// IPv6 space as “::FFFF:<IPv4-address>“.\n\tIpv4Compat bool `protobuf:\"varint,6,opt,name=ipv4_compat,json=ipv4Compat,proto3\" json:\"ipv4_compat,omitempty\"`\n\t// Filepath that specifies the Linux network namespace this socket will be created in (see “man 7\n\t// network_namespaces“). If this field is set, Envoy will create the socket in the specified\n\t// network namespace.\n\t//\n\t// .. note::\n\t//\n\t//\tSetting this parameter requires Envoy to run with the ``CAP_NET_ADMIN`` capability.\n\t//\n\t// .. attention::\n\t//\n\t//\tNetwork namespaces are only configurable on Linux. Otherwise, this field has no effect.\n\tNetworkNamespaceFilepath string `protobuf:\"bytes,7,opt,name=network_namespace_filepath,json=networkNamespaceFilepath,proto3\" json:\"network_namespace_filepath,omitempty\"`\n\tunknownFields            protoimpl.UnknownFields\n\tsizeCache                protoimpl.SizeCache\n}\n\nfunc (x *SocketAddress) Reset() {\n\t*x = SocketAddress{}\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SocketAddress) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SocketAddress) ProtoMessage() {}\n\nfunc (x *SocketAddress) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SocketAddress.ProtoReflect.Descriptor instead.\nfunc (*SocketAddress) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_address_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *SocketAddress) GetProtocol() SocketAddress_Protocol {\n\tif x != nil {\n\t\treturn x.Protocol\n\t}\n\treturn SocketAddress_TCP\n}\n\nfunc (x *SocketAddress) GetAddress() string {\n\tif x != nil {\n\t\treturn x.Address\n\t}\n\treturn \"\"\n}\n\nfunc (x *SocketAddress) GetPortSpecifier() isSocketAddress_PortSpecifier {\n\tif x != nil {\n\t\treturn x.PortSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *SocketAddress) GetPortValue() uint32 {\n\tif x != nil {\n\t\tif x, ok := x.PortSpecifier.(*SocketAddress_PortValue); ok {\n\t\t\treturn x.PortValue\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (x *SocketAddress) GetNamedPort() string {\n\tif x != nil {\n\t\tif x, ok := x.PortSpecifier.(*SocketAddress_NamedPort); ok {\n\t\t\treturn x.NamedPort\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *SocketAddress) GetResolverName() string {\n\tif x != nil {\n\t\treturn x.ResolverName\n\t}\n\treturn \"\"\n}\n\nfunc (x *SocketAddress) GetIpv4Compat() bool {\n\tif x != nil {\n\t\treturn x.Ipv4Compat\n\t}\n\treturn false\n}\n\nfunc (x *SocketAddress) GetNetworkNamespaceFilepath() string {\n\tif x != nil {\n\t\treturn x.NetworkNamespaceFilepath\n\t}\n\treturn \"\"\n}\n\ntype isSocketAddress_PortSpecifier interface {\n\tisSocketAddress_PortSpecifier()\n}\n\ntype SocketAddress_PortValue struct {\n\tPortValue uint32 `protobuf:\"varint,3,opt,name=port_value,json=portValue,proto3,oneof\"`\n}\n\ntype SocketAddress_NamedPort struct {\n\t// This is only valid if :ref:`resolver_name\n\t// <envoy_v3_api_field_config.core.v3.SocketAddress.resolver_name>` is specified below and the\n\t// named resolver is capable of named port resolution.\n\tNamedPort string `protobuf:\"bytes,4,opt,name=named_port,json=namedPort,proto3,oneof\"`\n}\n\nfunc (*SocketAddress_PortValue) isSocketAddress_PortSpecifier() {}\n\nfunc (*SocketAddress_NamedPort) isSocketAddress_PortSpecifier() {}\n\ntype TcpKeepalive struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Maximum number of keepalive probes to send without response before deciding\n\t// the connection is dead. Default is to use the OS level configuration (unless\n\t// overridden, Linux defaults to 9.) Setting this to “0“ disables TCP keepalive.\n\tKeepaliveProbes *wrapperspb.UInt32Value `protobuf:\"bytes,1,opt,name=keepalive_probes,json=keepaliveProbes,proto3\" json:\"keepalive_probes,omitempty\"`\n\t// The number of seconds a connection needs to be idle before keep-alive probes\n\t// start being sent. Default is to use the OS level configuration (unless\n\t// overridden, Linux defaults to 7200s (i.e., 2 hours.) Setting this to “0“ disables\n\t// TCP keepalive.\n\tKeepaliveTime *wrapperspb.UInt32Value `protobuf:\"bytes,2,opt,name=keepalive_time,json=keepaliveTime,proto3\" json:\"keepalive_time,omitempty\"`\n\t// The number of seconds between keep-alive probes. Default is to use the OS\n\t// level configuration (unless overridden, Linux defaults to 75s.) Setting this to\n\t// “0“ disables TCP keepalive.\n\tKeepaliveInterval *wrapperspb.UInt32Value `protobuf:\"bytes,3,opt,name=keepalive_interval,json=keepaliveInterval,proto3\" json:\"keepalive_interval,omitempty\"`\n\tunknownFields     protoimpl.UnknownFields\n\tsizeCache         protoimpl.SizeCache\n}\n\nfunc (x *TcpKeepalive) Reset() {\n\t*x = TcpKeepalive{}\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *TcpKeepalive) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*TcpKeepalive) ProtoMessage() {}\n\nfunc (x *TcpKeepalive) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use TcpKeepalive.ProtoReflect.Descriptor instead.\nfunc (*TcpKeepalive) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_address_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *TcpKeepalive) GetKeepaliveProbes() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.KeepaliveProbes\n\t}\n\treturn nil\n}\n\nfunc (x *TcpKeepalive) GetKeepaliveTime() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.KeepaliveTime\n\t}\n\treturn nil\n}\n\nfunc (x *TcpKeepalive) GetKeepaliveInterval() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.KeepaliveInterval\n\t}\n\treturn nil\n}\n\ntype ExtraSourceAddress struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The additional address to bind.\n\tAddress *SocketAddress `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n\t// Additional socket options that may not be present in Envoy source code or\n\t// precompiled binaries. If specified, this will override the\n\t// :ref:`socket_options <envoy_v3_api_field_config.core.v3.BindConfig.socket_options>`\n\t// in the BindConfig. If specified with no\n\t// :ref:`socket_options <envoy_v3_api_field_config.core.v3.SocketOptionsOverride.socket_options>`\n\t// or an empty list of :ref:`socket_options <envoy_v3_api_field_config.core.v3.SocketOptionsOverride.socket_options>`,\n\t// it means no socket option will apply.\n\tSocketOptions *SocketOptionsOverride `protobuf:\"bytes,2,opt,name=socket_options,json=socketOptions,proto3\" json:\"socket_options,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ExtraSourceAddress) Reset() {\n\t*x = ExtraSourceAddress{}\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ExtraSourceAddress) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ExtraSourceAddress) ProtoMessage() {}\n\nfunc (x *ExtraSourceAddress) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ExtraSourceAddress.ProtoReflect.Descriptor instead.\nfunc (*ExtraSourceAddress) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_address_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *ExtraSourceAddress) GetAddress() *SocketAddress {\n\tif x != nil {\n\t\treturn x.Address\n\t}\n\treturn nil\n}\n\nfunc (x *ExtraSourceAddress) GetSocketOptions() *SocketOptionsOverride {\n\tif x != nil {\n\t\treturn x.SocketOptions\n\t}\n\treturn nil\n}\n\n// [#next-free-field: 7]\ntype BindConfig struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The address to bind to when creating a socket.\n\tSourceAddress *SocketAddress `protobuf:\"bytes,1,opt,name=source_address,json=sourceAddress,proto3\" json:\"source_address,omitempty\"`\n\t// Whether to set the “IP_FREEBIND“ option when creating the socket. When this\n\t// flag is set to true, allows the :ref:`source_address\n\t// <envoy_v3_api_field_config.core.v3.BindConfig.source_address>` to be an IP address\n\t// that is not configured on the system running Envoy. When this flag is set\n\t// to false, the option “IP_FREEBIND“ is disabled on the socket. When this\n\t// flag is not set (default), the socket is not modified, i.e. the option is\n\t// neither enabled nor disabled.\n\tFreebind *wrapperspb.BoolValue `protobuf:\"bytes,2,opt,name=freebind,proto3\" json:\"freebind,omitempty\"`\n\t// Additional socket options that may not be present in Envoy source code or\n\t// precompiled binaries.\n\tSocketOptions []*SocketOption `protobuf:\"bytes,3,rep,name=socket_options,json=socketOptions,proto3\" json:\"socket_options,omitempty\"`\n\t// Extra source addresses appended to the address specified in the “source_address“\n\t// field. This enables to specify multiple source addresses.\n\t// The source address selection is determined by :ref:`local_address_selector\n\t// <envoy_v3_api_field_config.core.v3.BindConfig.local_address_selector>`.\n\tExtraSourceAddresses []*ExtraSourceAddress `protobuf:\"bytes,5,rep,name=extra_source_addresses,json=extraSourceAddresses,proto3\" json:\"extra_source_addresses,omitempty\"`\n\t// Deprecated by\n\t// :ref:`extra_source_addresses <envoy_v3_api_field_config.core.v3.BindConfig.extra_source_addresses>`\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/address.proto.\n\tAdditionalSourceAddresses []*SocketAddress `protobuf:\"bytes,4,rep,name=additional_source_addresses,json=additionalSourceAddresses,proto3\" json:\"additional_source_addresses,omitempty\"`\n\t// Custom local address selector to override the default (i.e.\n\t// :ref:`DefaultLocalAddressSelector\n\t// <envoy_v3_api_msg_config.upstream.local_address_selector.v3.DefaultLocalAddressSelector>`).\n\t// [#extension-category: envoy.upstream.local_address_selector]\n\tLocalAddressSelector *TypedExtensionConfig `protobuf:\"bytes,6,opt,name=local_address_selector,json=localAddressSelector,proto3\" json:\"local_address_selector,omitempty\"`\n\tunknownFields        protoimpl.UnknownFields\n\tsizeCache            protoimpl.SizeCache\n}\n\nfunc (x *BindConfig) Reset() {\n\t*x = BindConfig{}\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *BindConfig) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*BindConfig) ProtoMessage() {}\n\nfunc (x *BindConfig) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use BindConfig.ProtoReflect.Descriptor instead.\nfunc (*BindConfig) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_address_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *BindConfig) GetSourceAddress() *SocketAddress {\n\tif x != nil {\n\t\treturn x.SourceAddress\n\t}\n\treturn nil\n}\n\nfunc (x *BindConfig) GetFreebind() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.Freebind\n\t}\n\treturn nil\n}\n\nfunc (x *BindConfig) GetSocketOptions() []*SocketOption {\n\tif x != nil {\n\t\treturn x.SocketOptions\n\t}\n\treturn nil\n}\n\nfunc (x *BindConfig) GetExtraSourceAddresses() []*ExtraSourceAddress {\n\tif x != nil {\n\t\treturn x.ExtraSourceAddresses\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/core/v3/address.proto.\nfunc (x *BindConfig) GetAdditionalSourceAddresses() []*SocketAddress {\n\tif x != nil {\n\t\treturn x.AdditionalSourceAddresses\n\t}\n\treturn nil\n}\n\nfunc (x *BindConfig) GetLocalAddressSelector() *TypedExtensionConfig {\n\tif x != nil {\n\t\treturn x.LocalAddressSelector\n\t}\n\treturn nil\n}\n\n// Addresses specify either a logical or physical address and port, which are\n// used to tell Envoy where to bind/listen, connect to upstream and find\n// management servers.\ntype Address struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Address:\n\t//\n\t//\t*Address_SocketAddress\n\t//\t*Address_Pipe\n\t//\t*Address_EnvoyInternalAddress\n\tAddress       isAddress_Address `protobuf_oneof:\"address\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Address) Reset() {\n\t*x = Address{}\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Address) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Address) ProtoMessage() {}\n\nfunc (x *Address) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Address.ProtoReflect.Descriptor instead.\nfunc (*Address) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_address_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *Address) GetAddress() isAddress_Address {\n\tif x != nil {\n\t\treturn x.Address\n\t}\n\treturn nil\n}\n\nfunc (x *Address) GetSocketAddress() *SocketAddress {\n\tif x != nil {\n\t\tif x, ok := x.Address.(*Address_SocketAddress); ok {\n\t\t\treturn x.SocketAddress\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Address) GetPipe() *Pipe {\n\tif x != nil {\n\t\tif x, ok := x.Address.(*Address_Pipe); ok {\n\t\t\treturn x.Pipe\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Address) GetEnvoyInternalAddress() *EnvoyInternalAddress {\n\tif x != nil {\n\t\tif x, ok := x.Address.(*Address_EnvoyInternalAddress); ok {\n\t\t\treturn x.EnvoyInternalAddress\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isAddress_Address interface {\n\tisAddress_Address()\n}\n\ntype Address_SocketAddress struct {\n\tSocketAddress *SocketAddress `protobuf:\"bytes,1,opt,name=socket_address,json=socketAddress,proto3,oneof\"`\n}\n\ntype Address_Pipe struct {\n\tPipe *Pipe `protobuf:\"bytes,2,opt,name=pipe,proto3,oneof\"`\n}\n\ntype Address_EnvoyInternalAddress struct {\n\t// Specifies a user-space address handled by :ref:`internal listeners\n\t// <envoy_v3_api_field_config.listener.v3.Listener.internal_listener>`.\n\tEnvoyInternalAddress *EnvoyInternalAddress `protobuf:\"bytes,3,opt,name=envoy_internal_address,json=envoyInternalAddress,proto3,oneof\"`\n}\n\nfunc (*Address_SocketAddress) isAddress_Address() {}\n\nfunc (*Address_Pipe) isAddress_Address() {}\n\nfunc (*Address_EnvoyInternalAddress) isAddress_Address() {}\n\n// CidrRange specifies an IP Address and a prefix length to construct\n// the subnet mask for a `CIDR <https://tools.ietf.org/html/rfc4632>`_ range.\ntype CidrRange struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// IPv4 or IPv6 address, e.g. “192.0.0.0“ or “2001:db8::“.\n\tAddressPrefix string `protobuf:\"bytes,1,opt,name=address_prefix,json=addressPrefix,proto3\" json:\"address_prefix,omitempty\"`\n\t// Length of prefix, e.g. 0, 32. Defaults to 0 when unset.\n\tPrefixLen     *wrapperspb.UInt32Value `protobuf:\"bytes,2,opt,name=prefix_len,json=prefixLen,proto3\" json:\"prefix_len,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *CidrRange) Reset() {\n\t*x = CidrRange{}\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CidrRange) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CidrRange) ProtoMessage() {}\n\nfunc (x *CidrRange) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_address_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CidrRange.ProtoReflect.Descriptor instead.\nfunc (*CidrRange) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_address_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *CidrRange) GetAddressPrefix() string {\n\tif x != nil {\n\t\treturn x.AddressPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *CidrRange) GetPrefixLen() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.PrefixLen\n\t}\n\treturn nil\n}\n\nvar File_envoy_config_core_v3_address_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_address_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\\"envoy/config/core/v3/address.proto\\x12\\x14envoy.config.core.v3\\x1a$envoy/config/core/v3/extension.proto\\x1a(envoy/config/core/v3/socket_option.proto\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a#envoy/annotations/deprecation.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"`\\n\" +\n\t\"\\x04Pipe\\x12\\x1b\\n\" +\n\t\"\\x04path\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04path\\x12\\x1c\\n\" +\n\t\"\\x04mode\\x18\\x02 \\x01(\\rB\\b\\xfaB\\x05*\\x03\\x18\\xff\\x03R\\x04mode:\\x1d\\x9aň\\x1e\\x18\\n\" +\n\t\"\\x16envoy.api.v2.core.Pipe\\\"\\x8a\\x01\\n\" +\n\t\"\\x14EnvoyInternalAddress\\x122\\n\" +\n\t\"\\x14server_listener_name\\x18\\x01 \\x01(\\tH\\x00R\\x12serverListenerName\\x12\\x1f\\n\" +\n\t\"\\vendpoint_id\\x18\\x02 \\x01(\\tR\\n\" +\n\t\"endpointIdB\\x1d\\n\" +\n\t\"\\x16address_name_specifier\\x12\\x03\\xf8B\\x01\\\"\\xb4\\x03\\n\" +\n\t\"\\rSocketAddress\\x12R\\n\" +\n\t\"\\bprotocol\\x18\\x01 \\x01(\\x0e2,.envoy.config.core.v3.SocketAddress.ProtocolB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\bprotocol\\x12!\\n\" +\n\t\"\\aaddress\\x18\\x02 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\aaddress\\x12*\\n\" +\n\t\"\\n\" +\n\t\"port_value\\x18\\x03 \\x01(\\rB\\t\\xfaB\\x06*\\x04\\x18\\xff\\xff\\x03H\\x00R\\tportValue\\x12\\x1f\\n\" +\n\t\"\\n\" +\n\t\"named_port\\x18\\x04 \\x01(\\tH\\x00R\\tnamedPort\\x12#\\n\" +\n\t\"\\rresolver_name\\x18\\x05 \\x01(\\tR\\fresolverName\\x12\\x1f\\n\" +\n\t\"\\vipv4_compat\\x18\\x06 \\x01(\\bR\\n\" +\n\t\"ipv4Compat\\x12<\\n\" +\n\t\"\\x1anetwork_namespace_filepath\\x18\\a \\x01(\\tR\\x18networkNamespaceFilepath\\\"\\x1c\\n\" +\n\t\"\\bProtocol\\x12\\a\\n\" +\n\t\"\\x03TCP\\x10\\x00\\x12\\a\\n\" +\n\t\"\\x03UDP\\x10\\x01:&\\x9aň\\x1e!\\n\" +\n\t\"\\x1fenvoy.api.v2.core.SocketAddressB\\x15\\n\" +\n\t\"\\x0eport_specifier\\x12\\x03\\xf8B\\x01\\\"\\x90\\x02\\n\" +\n\t\"\\fTcpKeepalive\\x12G\\n\" +\n\t\"\\x10keepalive_probes\\x18\\x01 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR\\x0fkeepaliveProbes\\x12C\\n\" +\n\t\"\\x0ekeepalive_time\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR\\rkeepaliveTime\\x12K\\n\" +\n\t\"\\x12keepalive_interval\\x18\\x03 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR\\x11keepaliveInterval:%\\x9aň\\x1e \\n\" +\n\t\"\\x1eenvoy.api.v2.core.TcpKeepalive\\\"\\xb1\\x01\\n\" +\n\t\"\\x12ExtraSourceAddress\\x12G\\n\" +\n\t\"\\aaddress\\x18\\x01 \\x01(\\v2#.envoy.config.core.v3.SocketAddressB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\aaddress\\x12R\\n\" +\n\t\"\\x0esocket_options\\x18\\x02 \\x01(\\v2+.envoy.config.core.v3.SocketOptionsOverrideR\\rsocketOptions\\\"\\xb4\\x04\\n\" +\n\t\"\\n\" +\n\t\"BindConfig\\x12J\\n\" +\n\t\"\\x0esource_address\\x18\\x01 \\x01(\\v2#.envoy.config.core.v3.SocketAddressR\\rsourceAddress\\x126\\n\" +\n\t\"\\bfreebind\\x18\\x02 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\bfreebind\\x12I\\n\" +\n\t\"\\x0esocket_options\\x18\\x03 \\x03(\\v2\\\".envoy.config.core.v3.SocketOptionR\\rsocketOptions\\x12^\\n\" +\n\t\"\\x16extra_source_addresses\\x18\\x05 \\x03(\\v2(.envoy.config.core.v3.ExtraSourceAddressR\\x14extraSourceAddresses\\x12p\\n\" +\n\t\"\\x1badditional_source_addresses\\x18\\x04 \\x03(\\v2#.envoy.config.core.v3.SocketAddressB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x19additionalSourceAddresses\\x12`\\n\" +\n\t\"\\x16local_address_selector\\x18\\x06 \\x01(\\v2*.envoy.config.core.v3.TypedExtensionConfigR\\x14localAddressSelector:#\\x9aň\\x1e\\x1e\\n\" +\n\t\"\\x1cenvoy.api.v2.core.BindConfig\\\"\\x9f\\x02\\n\" +\n\t\"\\aAddress\\x12L\\n\" +\n\t\"\\x0esocket_address\\x18\\x01 \\x01(\\v2#.envoy.config.core.v3.SocketAddressH\\x00R\\rsocketAddress\\x120\\n\" +\n\t\"\\x04pipe\\x18\\x02 \\x01(\\v2\\x1a.envoy.config.core.v3.PipeH\\x00R\\x04pipe\\x12b\\n\" +\n\t\"\\x16envoy_internal_address\\x18\\x03 \\x01(\\v2*.envoy.config.core.v3.EnvoyInternalAddressH\\x00R\\x14envoyInternalAddress: \\x9aň\\x1e\\x1b\\n\" +\n\t\"\\x19envoy.api.v2.core.AddressB\\x0e\\n\" +\n\t\"\\aaddress\\x12\\x03\\xf8B\\x01\\\"\\xa6\\x01\\n\" +\n\t\"\\tCidrRange\\x12.\\n\" +\n\t\"\\x0eaddress_prefix\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\raddressPrefix\\x12E\\n\" +\n\t\"\\n\" +\n\t\"prefix_len\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\b\\xfaB\\x05*\\x03\\x18\\x80\\x01R\\tprefixLen:\\\"\\x9aň\\x1e\\x1d\\n\" +\n\t\"\\x1benvoy.api.v2.core.CidrRangeB\\x80\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\fAddressProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_address_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_address_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_address_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_address_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_address_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_address_proto_rawDesc), len(file_envoy_config_core_v3_address_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_address_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_address_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_envoy_config_core_v3_address_proto_msgTypes = make([]protoimpl.MessageInfo, 8)\nvar file_envoy_config_core_v3_address_proto_goTypes = []any{\n\t(SocketAddress_Protocol)(0),    // 0: envoy.config.core.v3.SocketAddress.Protocol\n\t(*Pipe)(nil),                   // 1: envoy.config.core.v3.Pipe\n\t(*EnvoyInternalAddress)(nil),   // 2: envoy.config.core.v3.EnvoyInternalAddress\n\t(*SocketAddress)(nil),          // 3: envoy.config.core.v3.SocketAddress\n\t(*TcpKeepalive)(nil),           // 4: envoy.config.core.v3.TcpKeepalive\n\t(*ExtraSourceAddress)(nil),     // 5: envoy.config.core.v3.ExtraSourceAddress\n\t(*BindConfig)(nil),             // 6: envoy.config.core.v3.BindConfig\n\t(*Address)(nil),                // 7: envoy.config.core.v3.Address\n\t(*CidrRange)(nil),              // 8: envoy.config.core.v3.CidrRange\n\t(*wrapperspb.UInt32Value)(nil), // 9: google.protobuf.UInt32Value\n\t(*SocketOptionsOverride)(nil),  // 10: envoy.config.core.v3.SocketOptionsOverride\n\t(*wrapperspb.BoolValue)(nil),   // 11: google.protobuf.BoolValue\n\t(*SocketOption)(nil),           // 12: envoy.config.core.v3.SocketOption\n\t(*TypedExtensionConfig)(nil),   // 13: envoy.config.core.v3.TypedExtensionConfig\n}\nvar file_envoy_config_core_v3_address_proto_depIdxs = []int32{\n\t0,  // 0: envoy.config.core.v3.SocketAddress.protocol:type_name -> envoy.config.core.v3.SocketAddress.Protocol\n\t9,  // 1: envoy.config.core.v3.TcpKeepalive.keepalive_probes:type_name -> google.protobuf.UInt32Value\n\t9,  // 2: envoy.config.core.v3.TcpKeepalive.keepalive_time:type_name -> google.protobuf.UInt32Value\n\t9,  // 3: envoy.config.core.v3.TcpKeepalive.keepalive_interval:type_name -> google.protobuf.UInt32Value\n\t3,  // 4: envoy.config.core.v3.ExtraSourceAddress.address:type_name -> envoy.config.core.v3.SocketAddress\n\t10, // 5: envoy.config.core.v3.ExtraSourceAddress.socket_options:type_name -> envoy.config.core.v3.SocketOptionsOverride\n\t3,  // 6: envoy.config.core.v3.BindConfig.source_address:type_name -> envoy.config.core.v3.SocketAddress\n\t11, // 7: envoy.config.core.v3.BindConfig.freebind:type_name -> google.protobuf.BoolValue\n\t12, // 8: envoy.config.core.v3.BindConfig.socket_options:type_name -> envoy.config.core.v3.SocketOption\n\t5,  // 9: envoy.config.core.v3.BindConfig.extra_source_addresses:type_name -> envoy.config.core.v3.ExtraSourceAddress\n\t3,  // 10: envoy.config.core.v3.BindConfig.additional_source_addresses:type_name -> envoy.config.core.v3.SocketAddress\n\t13, // 11: envoy.config.core.v3.BindConfig.local_address_selector:type_name -> envoy.config.core.v3.TypedExtensionConfig\n\t3,  // 12: envoy.config.core.v3.Address.socket_address:type_name -> envoy.config.core.v3.SocketAddress\n\t1,  // 13: envoy.config.core.v3.Address.pipe:type_name -> envoy.config.core.v3.Pipe\n\t2,  // 14: envoy.config.core.v3.Address.envoy_internal_address:type_name -> envoy.config.core.v3.EnvoyInternalAddress\n\t9,  // 15: envoy.config.core.v3.CidrRange.prefix_len:type_name -> google.protobuf.UInt32Value\n\t16, // [16:16] is the sub-list for method output_type\n\t16, // [16:16] is the sub-list for method input_type\n\t16, // [16:16] is the sub-list for extension type_name\n\t16, // [16:16] is the sub-list for extension extendee\n\t0,  // [0:16] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_address_proto_init() }\nfunc file_envoy_config_core_v3_address_proto_init() {\n\tif File_envoy_config_core_v3_address_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_core_v3_extension_proto_init()\n\tfile_envoy_config_core_v3_socket_option_proto_init()\n\tfile_envoy_config_core_v3_address_proto_msgTypes[1].OneofWrappers = []any{\n\t\t(*EnvoyInternalAddress_ServerListenerName)(nil),\n\t}\n\tfile_envoy_config_core_v3_address_proto_msgTypes[2].OneofWrappers = []any{\n\t\t(*SocketAddress_PortValue)(nil),\n\t\t(*SocketAddress_NamedPort)(nil),\n\t}\n\tfile_envoy_config_core_v3_address_proto_msgTypes[6].OneofWrappers = []any{\n\t\t(*Address_SocketAddress)(nil),\n\t\t(*Address_Pipe)(nil),\n\t\t(*Address_EnvoyInternalAddress)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_address_proto_rawDesc), len(file_envoy_config_core_v3_address_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   8,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_address_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_address_proto_depIdxs,\n\t\tEnumInfos:         file_envoy_config_core_v3_address_proto_enumTypes,\n\t\tMessageInfos:      file_envoy_config_core_v3_address_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_address_proto = out.File\n\tfile_envoy_config_core_v3_address_proto_goTypes = nil\n\tfile_envoy_config_core_v3_address_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/address.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/address.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on Pipe with the rules defined in the proto\n// definition for this message. If any rules are violated, the first error\n// encountered is returned, or nil if there are no violations.\nfunc (m *Pipe) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Pipe with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in PipeMultiError, or nil if none found.\nfunc (m *Pipe) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Pipe) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetPath()) < 1 {\n\t\terr := PipeValidationError{\n\t\t\tfield:  \"Path\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif m.GetMode() > 511 {\n\t\terr := PipeValidationError{\n\t\t\tfield:  \"Mode\",\n\t\t\treason: \"value must be less than or equal to 511\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn PipeMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// PipeMultiError is an error wrapping multiple validation errors returned by\n// Pipe.ValidateAll() if the designated constraints aren't met.\ntype PipeMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m PipeMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m PipeMultiError) AllErrors() []error { return m }\n\n// PipeValidationError is the validation error returned by Pipe.Validate if the\n// designated constraints aren't met.\ntype PipeValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e PipeValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e PipeValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e PipeValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e PipeValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e PipeValidationError) ErrorName() string { return \"PipeValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e PipeValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sPipe.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = PipeValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = PipeValidationError{}\n\n// Validate checks the field values on EnvoyInternalAddress with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *EnvoyInternalAddress) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on EnvoyInternalAddress with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// EnvoyInternalAddressMultiError, or nil if none found.\nfunc (m *EnvoyInternalAddress) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *EnvoyInternalAddress) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for EndpointId\n\n\toneofAddressNameSpecifierPresent := false\n\tswitch v := m.AddressNameSpecifier.(type) {\n\tcase *EnvoyInternalAddress_ServerListenerName:\n\t\tif v == nil {\n\t\t\terr := EnvoyInternalAddressValidationError{\n\t\t\t\tfield:  \"AddressNameSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofAddressNameSpecifierPresent = true\n\t\t// no validation rules for ServerListenerName\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofAddressNameSpecifierPresent {\n\t\terr := EnvoyInternalAddressValidationError{\n\t\t\tfield:  \"AddressNameSpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn EnvoyInternalAddressMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// EnvoyInternalAddressMultiError is an error wrapping multiple validation\n// errors returned by EnvoyInternalAddress.ValidateAll() if the designated\n// constraints aren't met.\ntype EnvoyInternalAddressMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m EnvoyInternalAddressMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m EnvoyInternalAddressMultiError) AllErrors() []error { return m }\n\n// EnvoyInternalAddressValidationError is the validation error returned by\n// EnvoyInternalAddress.Validate if the designated constraints aren't met.\ntype EnvoyInternalAddressValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e EnvoyInternalAddressValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e EnvoyInternalAddressValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e EnvoyInternalAddressValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e EnvoyInternalAddressValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e EnvoyInternalAddressValidationError) ErrorName() string {\n\treturn \"EnvoyInternalAddressValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e EnvoyInternalAddressValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sEnvoyInternalAddress.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = EnvoyInternalAddressValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = EnvoyInternalAddressValidationError{}\n\n// Validate checks the field values on SocketAddress with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *SocketAddress) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on SocketAddress with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in SocketAddressMultiError, or\n// nil if none found.\nfunc (m *SocketAddress) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *SocketAddress) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif _, ok := SocketAddress_Protocol_name[int32(m.GetProtocol())]; !ok {\n\t\terr := SocketAddressValidationError{\n\t\t\tfield:  \"Protocol\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif utf8.RuneCountInString(m.GetAddress()) < 1 {\n\t\terr := SocketAddressValidationError{\n\t\t\tfield:  \"Address\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for ResolverName\n\n\t// no validation rules for Ipv4Compat\n\n\t// no validation rules for NetworkNamespaceFilepath\n\n\toneofPortSpecifierPresent := false\n\tswitch v := m.PortSpecifier.(type) {\n\tcase *SocketAddress_PortValue:\n\t\tif v == nil {\n\t\t\terr := SocketAddressValidationError{\n\t\t\t\tfield:  \"PortSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPortSpecifierPresent = true\n\n\t\tif m.GetPortValue() > 65535 {\n\t\t\terr := SocketAddressValidationError{\n\t\t\t\tfield:  \"PortValue\",\n\t\t\t\treason: \"value must be less than or equal to 65535\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *SocketAddress_NamedPort:\n\t\tif v == nil {\n\t\t\terr := SocketAddressValidationError{\n\t\t\t\tfield:  \"PortSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPortSpecifierPresent = true\n\t\t// no validation rules for NamedPort\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofPortSpecifierPresent {\n\t\terr := SocketAddressValidationError{\n\t\t\tfield:  \"PortSpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn SocketAddressMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// SocketAddressMultiError is an error wrapping multiple validation errors\n// returned by SocketAddress.ValidateAll() if the designated constraints\n// aren't met.\ntype SocketAddressMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m SocketAddressMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m SocketAddressMultiError) AllErrors() []error { return m }\n\n// SocketAddressValidationError is the validation error returned by\n// SocketAddress.Validate if the designated constraints aren't met.\ntype SocketAddressValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e SocketAddressValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e SocketAddressValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e SocketAddressValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e SocketAddressValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e SocketAddressValidationError) ErrorName() string { return \"SocketAddressValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e SocketAddressValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sSocketAddress.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = SocketAddressValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = SocketAddressValidationError{}\n\n// Validate checks the field values on TcpKeepalive with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *TcpKeepalive) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on TcpKeepalive with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in TcpKeepaliveMultiError, or\n// nil if none found.\nfunc (m *TcpKeepalive) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *TcpKeepalive) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetKeepaliveProbes()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, TcpKeepaliveValidationError{\n\t\t\t\t\tfield:  \"KeepaliveProbes\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, TcpKeepaliveValidationError{\n\t\t\t\t\tfield:  \"KeepaliveProbes\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetKeepaliveProbes()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn TcpKeepaliveValidationError{\n\t\t\t\tfield:  \"KeepaliveProbes\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetKeepaliveTime()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, TcpKeepaliveValidationError{\n\t\t\t\t\tfield:  \"KeepaliveTime\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, TcpKeepaliveValidationError{\n\t\t\t\t\tfield:  \"KeepaliveTime\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetKeepaliveTime()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn TcpKeepaliveValidationError{\n\t\t\t\tfield:  \"KeepaliveTime\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetKeepaliveInterval()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, TcpKeepaliveValidationError{\n\t\t\t\t\tfield:  \"KeepaliveInterval\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, TcpKeepaliveValidationError{\n\t\t\t\t\tfield:  \"KeepaliveInterval\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetKeepaliveInterval()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn TcpKeepaliveValidationError{\n\t\t\t\tfield:  \"KeepaliveInterval\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn TcpKeepaliveMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// TcpKeepaliveMultiError is an error wrapping multiple validation errors\n// returned by TcpKeepalive.ValidateAll() if the designated constraints aren't met.\ntype TcpKeepaliveMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m TcpKeepaliveMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m TcpKeepaliveMultiError) AllErrors() []error { return m }\n\n// TcpKeepaliveValidationError is the validation error returned by\n// TcpKeepalive.Validate if the designated constraints aren't met.\ntype TcpKeepaliveValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e TcpKeepaliveValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e TcpKeepaliveValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e TcpKeepaliveValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e TcpKeepaliveValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e TcpKeepaliveValidationError) ErrorName() string { return \"TcpKeepaliveValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e TcpKeepaliveValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sTcpKeepalive.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = TcpKeepaliveValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = TcpKeepaliveValidationError{}\n\n// Validate checks the field values on ExtraSourceAddress with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *ExtraSourceAddress) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ExtraSourceAddress with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ExtraSourceAddressMultiError, or nil if none found.\nfunc (m *ExtraSourceAddress) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ExtraSourceAddress) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetAddress() == nil {\n\t\terr := ExtraSourceAddressValidationError{\n\t\t\tfield:  \"Address\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetAddress()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ExtraSourceAddressValidationError{\n\t\t\t\t\tfield:  \"Address\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ExtraSourceAddressValidationError{\n\t\t\t\t\tfield:  \"Address\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetAddress()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ExtraSourceAddressValidationError{\n\t\t\t\tfield:  \"Address\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetSocketOptions()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ExtraSourceAddressValidationError{\n\t\t\t\t\tfield:  \"SocketOptions\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ExtraSourceAddressValidationError{\n\t\t\t\t\tfield:  \"SocketOptions\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetSocketOptions()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ExtraSourceAddressValidationError{\n\t\t\t\tfield:  \"SocketOptions\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ExtraSourceAddressMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ExtraSourceAddressMultiError is an error wrapping multiple validation errors\n// returned by ExtraSourceAddress.ValidateAll() if the designated constraints\n// aren't met.\ntype ExtraSourceAddressMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ExtraSourceAddressMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ExtraSourceAddressMultiError) AllErrors() []error { return m }\n\n// ExtraSourceAddressValidationError is the validation error returned by\n// ExtraSourceAddress.Validate if the designated constraints aren't met.\ntype ExtraSourceAddressValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ExtraSourceAddressValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ExtraSourceAddressValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ExtraSourceAddressValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ExtraSourceAddressValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ExtraSourceAddressValidationError) ErrorName() string {\n\treturn \"ExtraSourceAddressValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ExtraSourceAddressValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sExtraSourceAddress.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ExtraSourceAddressValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ExtraSourceAddressValidationError{}\n\n// Validate checks the field values on BindConfig with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *BindConfig) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on BindConfig with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in BindConfigMultiError, or\n// nil if none found.\nfunc (m *BindConfig) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *BindConfig) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetSourceAddress()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, BindConfigValidationError{\n\t\t\t\t\tfield:  \"SourceAddress\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, BindConfigValidationError{\n\t\t\t\t\tfield:  \"SourceAddress\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetSourceAddress()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn BindConfigValidationError{\n\t\t\t\tfield:  \"SourceAddress\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetFreebind()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, BindConfigValidationError{\n\t\t\t\t\tfield:  \"Freebind\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, BindConfigValidationError{\n\t\t\t\t\tfield:  \"Freebind\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetFreebind()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn BindConfigValidationError{\n\t\t\t\tfield:  \"Freebind\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetSocketOptions() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, BindConfigValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"SocketOptions[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, BindConfigValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"SocketOptions[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn BindConfigValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"SocketOptions[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetExtraSourceAddresses() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, BindConfigValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ExtraSourceAddresses[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, BindConfigValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ExtraSourceAddresses[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn BindConfigValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ExtraSourceAddresses[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetAdditionalSourceAddresses() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, BindConfigValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"AdditionalSourceAddresses[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, BindConfigValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"AdditionalSourceAddresses[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn BindConfigValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"AdditionalSourceAddresses[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetLocalAddressSelector()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, BindConfigValidationError{\n\t\t\t\t\tfield:  \"LocalAddressSelector\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, BindConfigValidationError{\n\t\t\t\t\tfield:  \"LocalAddressSelector\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetLocalAddressSelector()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn BindConfigValidationError{\n\t\t\t\tfield:  \"LocalAddressSelector\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn BindConfigMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// BindConfigMultiError is an error wrapping multiple validation errors\n// returned by BindConfig.ValidateAll() if the designated constraints aren't met.\ntype BindConfigMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m BindConfigMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m BindConfigMultiError) AllErrors() []error { return m }\n\n// BindConfigValidationError is the validation error returned by\n// BindConfig.Validate if the designated constraints aren't met.\ntype BindConfigValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e BindConfigValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e BindConfigValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e BindConfigValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e BindConfigValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e BindConfigValidationError) ErrorName() string { return \"BindConfigValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e BindConfigValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sBindConfig.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = BindConfigValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = BindConfigValidationError{}\n\n// Validate checks the field values on Address with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Address) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Address with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in AddressMultiError, or nil if none found.\nfunc (m *Address) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Address) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofAddressPresent := false\n\tswitch v := m.Address.(type) {\n\tcase *Address_SocketAddress:\n\t\tif v == nil {\n\t\t\terr := AddressValidationError{\n\t\t\t\tfield:  \"Address\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofAddressPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetSocketAddress()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, AddressValidationError{\n\t\t\t\t\t\tfield:  \"SocketAddress\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, AddressValidationError{\n\t\t\t\t\t\tfield:  \"SocketAddress\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetSocketAddress()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn AddressValidationError{\n\t\t\t\t\tfield:  \"SocketAddress\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Address_Pipe:\n\t\tif v == nil {\n\t\t\terr := AddressValidationError{\n\t\t\t\tfield:  \"Address\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofAddressPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetPipe()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, AddressValidationError{\n\t\t\t\t\t\tfield:  \"Pipe\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, AddressValidationError{\n\t\t\t\t\t\tfield:  \"Pipe\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetPipe()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn AddressValidationError{\n\t\t\t\t\tfield:  \"Pipe\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Address_EnvoyInternalAddress:\n\t\tif v == nil {\n\t\t\terr := AddressValidationError{\n\t\t\t\tfield:  \"Address\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofAddressPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetEnvoyInternalAddress()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, AddressValidationError{\n\t\t\t\t\t\tfield:  \"EnvoyInternalAddress\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, AddressValidationError{\n\t\t\t\t\t\tfield:  \"EnvoyInternalAddress\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetEnvoyInternalAddress()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn AddressValidationError{\n\t\t\t\t\tfield:  \"EnvoyInternalAddress\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofAddressPresent {\n\t\terr := AddressValidationError{\n\t\t\tfield:  \"Address\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn AddressMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// AddressMultiError is an error wrapping multiple validation errors returned\n// by Address.ValidateAll() if the designated constraints aren't met.\ntype AddressMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m AddressMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m AddressMultiError) AllErrors() []error { return m }\n\n// AddressValidationError is the validation error returned by Address.Validate\n// if the designated constraints aren't met.\ntype AddressValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e AddressValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e AddressValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e AddressValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e AddressValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e AddressValidationError) ErrorName() string { return \"AddressValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e AddressValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sAddress.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = AddressValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = AddressValidationError{}\n\n// Validate checks the field values on CidrRange with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *CidrRange) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CidrRange with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in CidrRangeMultiError, or nil\n// if none found.\nfunc (m *CidrRange) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CidrRange) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetAddressPrefix()) < 1 {\n\t\terr := CidrRangeValidationError{\n\t\t\tfield:  \"AddressPrefix\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif wrapper := m.GetPrefixLen(); wrapper != nil {\n\n\t\tif wrapper.GetValue() > 128 {\n\t\t\terr := CidrRangeValidationError{\n\t\t\t\tfield:  \"PrefixLen\",\n\t\t\t\treason: \"value must be less than or equal to 128\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn CidrRangeMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CidrRangeMultiError is an error wrapping multiple validation errors returned\n// by CidrRange.ValidateAll() if the designated constraints aren't met.\ntype CidrRangeMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CidrRangeMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CidrRangeMultiError) AllErrors() []error { return m }\n\n// CidrRangeValidationError is the validation error returned by\n// CidrRange.Validate if the designated constraints aren't met.\ntype CidrRangeValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CidrRangeValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CidrRangeValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CidrRangeValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CidrRangeValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CidrRangeValidationError) ErrorName() string { return \"CidrRangeValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e CidrRangeValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCidrRange.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CidrRangeValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CidrRangeValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/address_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/address.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\twrapperspb \"github.com/planetscale/vtprotobuf/types/known/wrapperspb\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *Pipe) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Pipe) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Pipe) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Mode != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Mode))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.Path) > 0 {\n\t\ti -= len(m.Path)\n\t\tcopy(dAtA[i:], m.Path)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Path)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *EnvoyInternalAddress) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *EnvoyInternalAddress) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *EnvoyInternalAddress) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.EndpointId) > 0 {\n\t\ti -= len(m.EndpointId)\n\t\tcopy(dAtA[i:], m.EndpointId)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.EndpointId)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif msg, ok := m.AddressNameSpecifier.(*EnvoyInternalAddress_ServerListenerName); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *EnvoyInternalAddress_ServerListenerName) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *EnvoyInternalAddress_ServerListenerName) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.ServerListenerName)\n\tcopy(dAtA[i:], m.ServerListenerName)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ServerListenerName)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *SocketAddress) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SocketAddress) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SocketAddress) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.NetworkNamespaceFilepath) > 0 {\n\t\ti -= len(m.NetworkNamespaceFilepath)\n\t\tcopy(dAtA[i:], m.NetworkNamespaceFilepath)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.NetworkNamespaceFilepath)))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif m.Ipv4Compat {\n\t\ti--\n\t\tif m.Ipv4Compat {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif len(m.ResolverName) > 0 {\n\t\ti -= len(m.ResolverName)\n\t\tcopy(dAtA[i:], m.ResolverName)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ResolverName)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif msg, ok := m.PortSpecifier.(*SocketAddress_NamedPort); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.PortSpecifier.(*SocketAddress_PortValue); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Address) > 0 {\n\t\ti -= len(m.Address)\n\t\tcopy(dAtA[i:], m.Address)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Address)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Protocol != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Protocol))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SocketAddress_PortValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SocketAddress_PortValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.PortValue))\n\ti--\n\tdAtA[i] = 0x18\n\treturn len(dAtA) - i, nil\n}\nfunc (m *SocketAddress_NamedPort) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SocketAddress_NamedPort) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.NamedPort)\n\tcopy(dAtA[i:], m.NamedPort)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.NamedPort)))\n\ti--\n\tdAtA[i] = 0x22\n\treturn len(dAtA) - i, nil\n}\nfunc (m *TcpKeepalive) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *TcpKeepalive) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *TcpKeepalive) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.KeepaliveInterval != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.KeepaliveInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.KeepaliveTime != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.KeepaliveTime).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.KeepaliveProbes != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.KeepaliveProbes).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ExtraSourceAddress) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ExtraSourceAddress) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ExtraSourceAddress) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.SocketOptions != nil {\n\t\tsize, err := m.SocketOptions.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Address != nil {\n\t\tsize, err := m.Address.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *BindConfig) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *BindConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *BindConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.LocalAddressSelector != nil {\n\t\tsize, err := m.LocalAddressSelector.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.ExtraSourceAddresses) > 0 {\n\t\tfor iNdEx := len(m.ExtraSourceAddresses) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.ExtraSourceAddresses[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif len(m.AdditionalSourceAddresses) > 0 {\n\t\tfor iNdEx := len(m.AdditionalSourceAddresses) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.AdditionalSourceAddresses[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.SocketOptions) > 0 {\n\t\tfor iNdEx := len(m.SocketOptions) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.SocketOptions[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif m.Freebind != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.Freebind).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.SourceAddress != nil {\n\t\tsize, err := m.SourceAddress.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Address) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Address) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Address) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.Address.(*Address_EnvoyInternalAddress); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Address.(*Address_Pipe); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Address.(*Address_SocketAddress); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Address_SocketAddress) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Address_SocketAddress) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.SocketAddress != nil {\n\t\tsize, err := m.SocketAddress.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Address_Pipe) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Address_Pipe) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Pipe != nil {\n\t\tsize, err := m.Pipe.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Address_EnvoyInternalAddress) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Address_EnvoyInternalAddress) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.EnvoyInternalAddress != nil {\n\t\tsize, err := m.EnvoyInternalAddress.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *CidrRange) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CidrRange) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CidrRange) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.PrefixLen != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.PrefixLen).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.AddressPrefix) > 0 {\n\t\ti -= len(m.AddressPrefix)\n\t\tcopy(dAtA[i:], m.AddressPrefix)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.AddressPrefix)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Pipe) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Path)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Mode != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Mode))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *EnvoyInternalAddress) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.AddressNameSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tl = len(m.EndpointId)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *EnvoyInternalAddress_ServerListenerName) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.ServerListenerName)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *SocketAddress) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Protocol != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Protocol))\n\t}\n\tl = len(m.Address)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.PortSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tl = len(m.ResolverName)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Ipv4Compat {\n\t\tn += 2\n\t}\n\tl = len(m.NetworkNamespaceFilepath)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *SocketAddress_PortValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 1 + protohelpers.SizeOfVarint(uint64(m.PortValue))\n\treturn n\n}\nfunc (m *SocketAddress_NamedPort) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.NamedPort)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *TcpKeepalive) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.KeepaliveProbes != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.KeepaliveProbes).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.KeepaliveTime != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.KeepaliveTime).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.KeepaliveInterval != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.KeepaliveInterval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ExtraSourceAddress) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Address != nil {\n\t\tl = m.Address.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.SocketOptions != nil {\n\t\tl = m.SocketOptions.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *BindConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.SourceAddress != nil {\n\t\tl = m.SourceAddress.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Freebind != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.Freebind).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.SocketOptions) > 0 {\n\t\tfor _, e := range m.SocketOptions {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.AdditionalSourceAddresses) > 0 {\n\t\tfor _, e := range m.AdditionalSourceAddresses {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.ExtraSourceAddresses) > 0 {\n\t\tfor _, e := range m.ExtraSourceAddresses {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.LocalAddressSelector != nil {\n\t\tl = m.LocalAddressSelector.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Address) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Address.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Address_SocketAddress) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.SocketAddress != nil {\n\t\tl = m.SocketAddress.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *Address_Pipe) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Pipe != nil {\n\t\tl = m.Pipe.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *Address_EnvoyInternalAddress) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.EnvoyInternalAddress != nil {\n\t\tl = m.EnvoyInternalAddress.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *CidrRange) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.AddressPrefix)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.PrefixLen != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.PrefixLen).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/backoff.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/backoff.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Configuration defining a jittered exponential back off strategy.\ntype BackoffStrategy struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The base interval to be used for the next back off computation. It should\n\t// be greater than zero and less than or equal to :ref:`max_interval\n\t// <envoy_v3_api_field_config.core.v3.BackoffStrategy.max_interval>`.\n\tBaseInterval *durationpb.Duration `protobuf:\"bytes,1,opt,name=base_interval,json=baseInterval,proto3\" json:\"base_interval,omitempty\"`\n\t// Specifies the maximum interval between retries. This parameter is optional,\n\t// but must be greater than or equal to the :ref:`base_interval\n\t// <envoy_v3_api_field_config.core.v3.BackoffStrategy.base_interval>` if set. The default\n\t// is 10 times the :ref:`base_interval\n\t// <envoy_v3_api_field_config.core.v3.BackoffStrategy.base_interval>`.\n\tMaxInterval   *durationpb.Duration `protobuf:\"bytes,2,opt,name=max_interval,json=maxInterval,proto3\" json:\"max_interval,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *BackoffStrategy) Reset() {\n\t*x = BackoffStrategy{}\n\tmi := &file_envoy_config_core_v3_backoff_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *BackoffStrategy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*BackoffStrategy) ProtoMessage() {}\n\nfunc (x *BackoffStrategy) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_backoff_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use BackoffStrategy.ProtoReflect.Descriptor instead.\nfunc (*BackoffStrategy) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_backoff_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *BackoffStrategy) GetBaseInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.BaseInterval\n\t}\n\treturn nil\n}\n\nfunc (x *BackoffStrategy) GetMaxInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.MaxInterval\n\t}\n\treturn nil\n}\n\nvar File_envoy_config_core_v3_backoff_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_backoff_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\\"envoy/config/core/v3/backoff.proto\\x12\\x14envoy.config.core.v3\\x1a\\x1egoogle/protobuf/duration.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xd3\\x01\\n\" +\n\t\"\\x0fBackoffStrategy\\x12N\\n\" +\n\t\"\\rbase_interval\\x18\\x01 \\x01(\\v2\\x19.google.protobuf.DurationB\\x0e\\xfaB\\v\\xaa\\x01\\b\\b\\x012\\x04\\x10\\xc0\\x84=R\\fbaseInterval\\x12F\\n\" +\n\t\"\\fmax_interval\\x18\\x02 \\x01(\\v2\\x19.google.protobuf.DurationB\\b\\xfaB\\x05\\xaa\\x01\\x02*\\x00R\\vmaxInterval:(\\x9aň\\x1e#\\n\" +\n\t\"!envoy.api.v2.core.BackoffStrategyB\\x80\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\fBackoffProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_backoff_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_backoff_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_backoff_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_backoff_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_backoff_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_backoff_proto_rawDesc), len(file_envoy_config_core_v3_backoff_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_backoff_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_backoff_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_config_core_v3_backoff_proto_goTypes = []any{\n\t(*BackoffStrategy)(nil),     // 0: envoy.config.core.v3.BackoffStrategy\n\t(*durationpb.Duration)(nil), // 1: google.protobuf.Duration\n}\nvar file_envoy_config_core_v3_backoff_proto_depIdxs = []int32{\n\t1, // 0: envoy.config.core.v3.BackoffStrategy.base_interval:type_name -> google.protobuf.Duration\n\t1, // 1: envoy.config.core.v3.BackoffStrategy.max_interval:type_name -> google.protobuf.Duration\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_backoff_proto_init() }\nfunc file_envoy_config_core_v3_backoff_proto_init() {\n\tif File_envoy_config_core_v3_backoff_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_backoff_proto_rawDesc), len(file_envoy_config_core_v3_backoff_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_backoff_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_backoff_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_core_v3_backoff_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_backoff_proto = out.File\n\tfile_envoy_config_core_v3_backoff_proto_goTypes = nil\n\tfile_envoy_config_core_v3_backoff_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/backoff.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/backoff.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on BackoffStrategy with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *BackoffStrategy) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on BackoffStrategy with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// BackoffStrategyMultiError, or nil if none found.\nfunc (m *BackoffStrategy) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *BackoffStrategy) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetBaseInterval() == nil {\n\t\terr := BackoffStrategyValidationError{\n\t\t\tfield:  \"BaseInterval\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif d := m.GetBaseInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = BackoffStrategyValidationError{\n\t\t\t\tfield:  \"BaseInterval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgte := time.Duration(0*time.Second + 1000000*time.Nanosecond)\n\n\t\t\tif dur < gte {\n\t\t\t\terr := BackoffStrategyValidationError{\n\t\t\t\t\tfield:  \"BaseInterval\",\n\t\t\t\t\treason: \"value must be greater than or equal to 1ms\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif d := m.GetMaxInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = BackoffStrategyValidationError{\n\t\t\t\tfield:  \"MaxInterval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgt := time.Duration(0*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur <= gt {\n\t\t\t\terr := BackoffStrategyValidationError{\n\t\t\t\t\tfield:  \"MaxInterval\",\n\t\t\t\t\treason: \"value must be greater than 0s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn BackoffStrategyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// BackoffStrategyMultiError is an error wrapping multiple validation errors\n// returned by BackoffStrategy.ValidateAll() if the designated constraints\n// aren't met.\ntype BackoffStrategyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m BackoffStrategyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m BackoffStrategyMultiError) AllErrors() []error { return m }\n\n// BackoffStrategyValidationError is the validation error returned by\n// BackoffStrategy.Validate if the designated constraints aren't met.\ntype BackoffStrategyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e BackoffStrategyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e BackoffStrategyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e BackoffStrategyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e BackoffStrategyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e BackoffStrategyValidationError) ErrorName() string { return \"BackoffStrategyValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e BackoffStrategyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sBackoffStrategy.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = BackoffStrategyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = BackoffStrategyValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/backoff_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/backoff.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tdurationpb \"github.com/planetscale/vtprotobuf/types/known/durationpb\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *BackoffStrategy) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *BackoffStrategy) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *BackoffStrategy) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.MaxInterval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.MaxInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.BaseInterval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.BaseInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *BackoffStrategy) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.BaseInterval != nil {\n\t\tl = (*durationpb.Duration)(m.BaseInterval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxInterval != nil {\n\t\tl = (*durationpb.Duration)(m.MaxInterval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/base.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/base.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tv31 \"github.com/cncf/xds/go/xds/core/v3\"\n\t_ \"github.com/envoyproxy/go-control-plane/envoy/annotations\"\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/type/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\tstructpb \"google.golang.org/protobuf/types/known/structpb\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Envoy supports :ref:`upstream priority routing\n// <arch_overview_http_routing_priority>` both at the route and the virtual\n// cluster level. The current priority implementation uses different connection\n// pool and circuit breaking settings for each priority level. This means that\n// even for HTTP/2 requests, two physical connections will be used to an\n// upstream host. In the future Envoy will likely support true HTTP/2 priority\n// over a single upstream connection.\ntype RoutingPriority int32\n\nconst (\n\tRoutingPriority_DEFAULT RoutingPriority = 0\n\tRoutingPriority_HIGH    RoutingPriority = 1\n)\n\n// Enum value maps for RoutingPriority.\nvar (\n\tRoutingPriority_name = map[int32]string{\n\t\t0: \"DEFAULT\",\n\t\t1: \"HIGH\",\n\t}\n\tRoutingPriority_value = map[string]int32{\n\t\t\"DEFAULT\": 0,\n\t\t\"HIGH\":    1,\n\t}\n)\n\nfunc (x RoutingPriority) Enum() *RoutingPriority {\n\tp := new(RoutingPriority)\n\t*p = x\n\treturn p\n}\n\nfunc (x RoutingPriority) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (RoutingPriority) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_core_v3_base_proto_enumTypes[0].Descriptor()\n}\n\nfunc (RoutingPriority) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_core_v3_base_proto_enumTypes[0]\n}\n\nfunc (x RoutingPriority) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use RoutingPriority.Descriptor instead.\nfunc (RoutingPriority) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{0}\n}\n\n// HTTP request method.\ntype RequestMethod int32\n\nconst (\n\tRequestMethod_METHOD_UNSPECIFIED RequestMethod = 0\n\tRequestMethod_GET                RequestMethod = 1\n\tRequestMethod_HEAD               RequestMethod = 2\n\tRequestMethod_POST               RequestMethod = 3\n\tRequestMethod_PUT                RequestMethod = 4\n\tRequestMethod_DELETE             RequestMethod = 5\n\tRequestMethod_CONNECT            RequestMethod = 6\n\tRequestMethod_OPTIONS            RequestMethod = 7\n\tRequestMethod_TRACE              RequestMethod = 8\n\tRequestMethod_PATCH              RequestMethod = 9\n)\n\n// Enum value maps for RequestMethod.\nvar (\n\tRequestMethod_name = map[int32]string{\n\t\t0: \"METHOD_UNSPECIFIED\",\n\t\t1: \"GET\",\n\t\t2: \"HEAD\",\n\t\t3: \"POST\",\n\t\t4: \"PUT\",\n\t\t5: \"DELETE\",\n\t\t6: \"CONNECT\",\n\t\t7: \"OPTIONS\",\n\t\t8: \"TRACE\",\n\t\t9: \"PATCH\",\n\t}\n\tRequestMethod_value = map[string]int32{\n\t\t\"METHOD_UNSPECIFIED\": 0,\n\t\t\"GET\":                1,\n\t\t\"HEAD\":               2,\n\t\t\"POST\":               3,\n\t\t\"PUT\":                4,\n\t\t\"DELETE\":             5,\n\t\t\"CONNECT\":            6,\n\t\t\"OPTIONS\":            7,\n\t\t\"TRACE\":              8,\n\t\t\"PATCH\":              9,\n\t}\n)\n\nfunc (x RequestMethod) Enum() *RequestMethod {\n\tp := new(RequestMethod)\n\t*p = x\n\treturn p\n}\n\nfunc (x RequestMethod) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (RequestMethod) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_core_v3_base_proto_enumTypes[1].Descriptor()\n}\n\nfunc (RequestMethod) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_core_v3_base_proto_enumTypes[1]\n}\n\nfunc (x RequestMethod) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use RequestMethod.Descriptor instead.\nfunc (RequestMethod) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{1}\n}\n\n// Identifies the direction of the traffic relative to the local Envoy.\ntype TrafficDirection int32\n\nconst (\n\t// Default option is unspecified.\n\tTrafficDirection_UNSPECIFIED TrafficDirection = 0\n\t// The transport is used for incoming traffic.\n\tTrafficDirection_INBOUND TrafficDirection = 1\n\t// The transport is used for outgoing traffic.\n\tTrafficDirection_OUTBOUND TrafficDirection = 2\n)\n\n// Enum value maps for TrafficDirection.\nvar (\n\tTrafficDirection_name = map[int32]string{\n\t\t0: \"UNSPECIFIED\",\n\t\t1: \"INBOUND\",\n\t\t2: \"OUTBOUND\",\n\t}\n\tTrafficDirection_value = map[string]int32{\n\t\t\"UNSPECIFIED\": 0,\n\t\t\"INBOUND\":     1,\n\t\t\"OUTBOUND\":    2,\n\t}\n)\n\nfunc (x TrafficDirection) Enum() *TrafficDirection {\n\tp := new(TrafficDirection)\n\t*p = x\n\treturn p\n}\n\nfunc (x TrafficDirection) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (TrafficDirection) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_core_v3_base_proto_enumTypes[2].Descriptor()\n}\n\nfunc (TrafficDirection) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_core_v3_base_proto_enumTypes[2]\n}\n\nfunc (x TrafficDirection) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use TrafficDirection.Descriptor instead.\nfunc (TrafficDirection) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{2}\n}\n\n// Describes the supported actions types for key/value pair append action.\ntype KeyValueAppend_KeyValueAppendAction int32\n\nconst (\n\t// If the key already exists, this action will result in the following behavior:\n\t//\n\t// - Comma-concatenated value if multiple values are not allowed.\n\t// - New value added to the list of values if multiple values are allowed.\n\t//\n\t// If the key doesn't exist then this will add pair with specified key and value.\n\tKeyValueAppend_APPEND_IF_EXISTS_OR_ADD KeyValueAppend_KeyValueAppendAction = 0\n\t// This action will add the key/value pair if it doesn't already exist. If the\n\t// key already exists then this will be a no-op.\n\tKeyValueAppend_ADD_IF_ABSENT KeyValueAppend_KeyValueAppendAction = 1\n\t// This action will overwrite the specified value by discarding any existing\n\t// values if the key already exists. If the key doesn't exist then this will add\n\t// the pair with specified key and value.\n\tKeyValueAppend_OVERWRITE_IF_EXISTS_OR_ADD KeyValueAppend_KeyValueAppendAction = 2\n\t// This action will overwrite the specified value by discarding any existing\n\t// values if the key already exists. If the key doesn't exist then this will\n\t// be no-op.\n\tKeyValueAppend_OVERWRITE_IF_EXISTS KeyValueAppend_KeyValueAppendAction = 3\n)\n\n// Enum value maps for KeyValueAppend_KeyValueAppendAction.\nvar (\n\tKeyValueAppend_KeyValueAppendAction_name = map[int32]string{\n\t\t0: \"APPEND_IF_EXISTS_OR_ADD\",\n\t\t1: \"ADD_IF_ABSENT\",\n\t\t2: \"OVERWRITE_IF_EXISTS_OR_ADD\",\n\t\t3: \"OVERWRITE_IF_EXISTS\",\n\t}\n\tKeyValueAppend_KeyValueAppendAction_value = map[string]int32{\n\t\t\"APPEND_IF_EXISTS_OR_ADD\":    0,\n\t\t\"ADD_IF_ABSENT\":              1,\n\t\t\"OVERWRITE_IF_EXISTS_OR_ADD\": 2,\n\t\t\"OVERWRITE_IF_EXISTS\":        3,\n\t}\n)\n\nfunc (x KeyValueAppend_KeyValueAppendAction) Enum() *KeyValueAppend_KeyValueAppendAction {\n\tp := new(KeyValueAppend_KeyValueAppendAction)\n\t*p = x\n\treturn p\n}\n\nfunc (x KeyValueAppend_KeyValueAppendAction) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (KeyValueAppend_KeyValueAppendAction) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_core_v3_base_proto_enumTypes[3].Descriptor()\n}\n\nfunc (KeyValueAppend_KeyValueAppendAction) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_core_v3_base_proto_enumTypes[3]\n}\n\nfunc (x KeyValueAppend_KeyValueAppendAction) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use KeyValueAppend_KeyValueAppendAction.Descriptor instead.\nfunc (KeyValueAppend_KeyValueAppendAction) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{11, 0}\n}\n\n// Describes the supported actions types for header append action.\ntype HeaderValueOption_HeaderAppendAction int32\n\nconst (\n\t// If the header already exists, this action will result in:\n\t//\n\t// - Comma-concatenated for predefined inline headers.\n\t// - Duplicate header added in the “HeaderMap“ for other headers.\n\t//\n\t// If the header doesn't exist then this will add new header with specified key and value.\n\tHeaderValueOption_APPEND_IF_EXISTS_OR_ADD HeaderValueOption_HeaderAppendAction = 0\n\t// This action will add the header if it doesn't already exist. If the header\n\t// already exists then this will be a no-op.\n\tHeaderValueOption_ADD_IF_ABSENT HeaderValueOption_HeaderAppendAction = 1\n\t// This action will overwrite the specified value by discarding any existing values if\n\t// the header already exists. If the header doesn't exist then this will add the header\n\t// with specified key and value.\n\tHeaderValueOption_OVERWRITE_IF_EXISTS_OR_ADD HeaderValueOption_HeaderAppendAction = 2\n\t// This action will overwrite the specified value by discarding any existing values if\n\t// the header already exists. If the header doesn't exist then this will be no-op.\n\tHeaderValueOption_OVERWRITE_IF_EXISTS HeaderValueOption_HeaderAppendAction = 3\n)\n\n// Enum value maps for HeaderValueOption_HeaderAppendAction.\nvar (\n\tHeaderValueOption_HeaderAppendAction_name = map[int32]string{\n\t\t0: \"APPEND_IF_EXISTS_OR_ADD\",\n\t\t1: \"ADD_IF_ABSENT\",\n\t\t2: \"OVERWRITE_IF_EXISTS_OR_ADD\",\n\t\t3: \"OVERWRITE_IF_EXISTS\",\n\t}\n\tHeaderValueOption_HeaderAppendAction_value = map[string]int32{\n\t\t\"APPEND_IF_EXISTS_OR_ADD\":    0,\n\t\t\"ADD_IF_ABSENT\":              1,\n\t\t\"OVERWRITE_IF_EXISTS_OR_ADD\": 2,\n\t\t\"OVERWRITE_IF_EXISTS\":        3,\n\t}\n)\n\nfunc (x HeaderValueOption_HeaderAppendAction) Enum() *HeaderValueOption_HeaderAppendAction {\n\tp := new(HeaderValueOption_HeaderAppendAction)\n\t*p = x\n\treturn p\n}\n\nfunc (x HeaderValueOption_HeaderAppendAction) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (HeaderValueOption_HeaderAppendAction) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_core_v3_base_proto_enumTypes[4].Descriptor()\n}\n\nfunc (HeaderValueOption_HeaderAppendAction) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_core_v3_base_proto_enumTypes[4]\n}\n\nfunc (x HeaderValueOption_HeaderAppendAction) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use HeaderValueOption_HeaderAppendAction.Descriptor instead.\nfunc (HeaderValueOption_HeaderAppendAction) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{15, 0}\n}\n\n// Identifies location of where either Envoy runs or where upstream hosts run.\ntype Locality struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Region this :ref:`zone <envoy_v3_api_field_config.core.v3.Locality.zone>` belongs to.\n\tRegion string `protobuf:\"bytes,1,opt,name=region,proto3\" json:\"region,omitempty\"`\n\t// Defines the local service zone where Envoy is running. Though optional, it\n\t// should be set if discovery service routing is used and the discovery\n\t// service exposes :ref:`zone data <envoy_v3_api_field_config.endpoint.v3.LocalityLbEndpoints.locality>`,\n\t// either in this message or via :option:`--service-zone`. The meaning of zone\n\t// is context dependent, e.g. `Availability Zone (AZ)\n\t// <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html>`_\n\t// on AWS, `Zone <https://cloud.google.com/compute/docs/regions-zones/>`_ on\n\t// GCP, etc.\n\tZone string `protobuf:\"bytes,2,opt,name=zone,proto3\" json:\"zone,omitempty\"`\n\t// When used for locality of upstream hosts, this field further splits zone\n\t// into smaller chunks of sub-zones so they can be load balanced\n\t// independently.\n\tSubZone       string `protobuf:\"bytes,3,opt,name=sub_zone,json=subZone,proto3\" json:\"sub_zone,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Locality) Reset() {\n\t*x = Locality{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Locality) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Locality) ProtoMessage() {}\n\nfunc (x *Locality) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Locality.ProtoReflect.Descriptor instead.\nfunc (*Locality) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Locality) GetRegion() string {\n\tif x != nil {\n\t\treturn x.Region\n\t}\n\treturn \"\"\n}\n\nfunc (x *Locality) GetZone() string {\n\tif x != nil {\n\t\treturn x.Zone\n\t}\n\treturn \"\"\n}\n\nfunc (x *Locality) GetSubZone() string {\n\tif x != nil {\n\t\treturn x.SubZone\n\t}\n\treturn \"\"\n}\n\n// BuildVersion combines SemVer version of extension with free-form build information\n// (i.e. 'alpha', 'private-build') as a set of strings.\ntype BuildVersion struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// SemVer version of extension.\n\tVersion *v3.SemanticVersion `protobuf:\"bytes,1,opt,name=version,proto3\" json:\"version,omitempty\"`\n\t// Free-form build information.\n\t// Envoy defines several well known keys in the source/common/version/version.h file\n\tMetadata      *structpb.Struct `protobuf:\"bytes,2,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *BuildVersion) Reset() {\n\t*x = BuildVersion{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *BuildVersion) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*BuildVersion) ProtoMessage() {}\n\nfunc (x *BuildVersion) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use BuildVersion.ProtoReflect.Descriptor instead.\nfunc (*BuildVersion) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *BuildVersion) GetVersion() *v3.SemanticVersion {\n\tif x != nil {\n\t\treturn x.Version\n\t}\n\treturn nil\n}\n\nfunc (x *BuildVersion) GetMetadata() *structpb.Struct {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\n// Version and identification for an Envoy extension.\n// [#next-free-field: 7]\ntype Extension struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// This is the name of the Envoy filter as specified in the Envoy\n\t// configuration, e.g. envoy.filters.http.router, com.acme.widget.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Category of the extension.\n\t// Extension category names use reverse DNS notation. For instance \"envoy.filters.listener\"\n\t// for Envoy's built-in listener filters or \"com.acme.filters.http\" for HTTP filters from\n\t// acme.com vendor.\n\t// [#comment:TODO(yanavlasov): Link to the doc with existing envoy category names.]\n\tCategory string `protobuf:\"bytes,2,opt,name=category,proto3\" json:\"category,omitempty\"`\n\t// [#not-implemented-hide:] Type descriptor of extension configuration proto.\n\t// [#comment:TODO(yanavlasov): Link to the doc with existing configuration protos.]\n\t// [#comment:TODO(yanavlasov): Add tests when PR #9391 lands.]\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/base.proto.\n\tTypeDescriptor string `protobuf:\"bytes,3,opt,name=type_descriptor,json=typeDescriptor,proto3\" json:\"type_descriptor,omitempty\"`\n\t// The version is a property of the extension and maintained independently\n\t// of other extensions and the Envoy API.\n\t// This field is not set when extension did not provide version information.\n\tVersion *BuildVersion `protobuf:\"bytes,4,opt,name=version,proto3\" json:\"version,omitempty\"`\n\t// Indicates that the extension is present but was disabled via dynamic configuration.\n\tDisabled bool `protobuf:\"varint,5,opt,name=disabled,proto3\" json:\"disabled,omitempty\"`\n\t// Type URLs of extension configuration protos.\n\tTypeUrls      []string `protobuf:\"bytes,6,rep,name=type_urls,json=typeUrls,proto3\" json:\"type_urls,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Extension) Reset() {\n\t*x = Extension{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Extension) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Extension) ProtoMessage() {}\n\nfunc (x *Extension) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Extension.ProtoReflect.Descriptor instead.\nfunc (*Extension) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *Extension) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *Extension) GetCategory() string {\n\tif x != nil {\n\t\treturn x.Category\n\t}\n\treturn \"\"\n}\n\n// Deprecated: Marked as deprecated in envoy/config/core/v3/base.proto.\nfunc (x *Extension) GetTypeDescriptor() string {\n\tif x != nil {\n\t\treturn x.TypeDescriptor\n\t}\n\treturn \"\"\n}\n\nfunc (x *Extension) GetVersion() *BuildVersion {\n\tif x != nil {\n\t\treturn x.Version\n\t}\n\treturn nil\n}\n\nfunc (x *Extension) GetDisabled() bool {\n\tif x != nil {\n\t\treturn x.Disabled\n\t}\n\treturn false\n}\n\nfunc (x *Extension) GetTypeUrls() []string {\n\tif x != nil {\n\t\treturn x.TypeUrls\n\t}\n\treturn nil\n}\n\n// Identifies a specific Envoy instance. The node identifier is presented to the\n// management server, which may use this identifier to distinguish per Envoy\n// configuration for serving.\n// [#next-free-field: 13]\ntype Node struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// An opaque node identifier for the Envoy node. This also provides the local\n\t// service node name. It should be set if any of the following features are\n\t// used: :ref:`statsd <arch_overview_statistics>`, :ref:`CDS\n\t// <config_cluster_manager_cds>`, and :ref:`HTTP tracing\n\t// <arch_overview_tracing>`, either in this message or via\n\t// :option:`--service-node`.\n\tId string `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\t// Defines the local service cluster name where Envoy is running. Though\n\t// optional, it should be set if any of the following features are used:\n\t// :ref:`statsd <arch_overview_statistics>`, :ref:`health check cluster\n\t// verification\n\t// <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.service_name_matcher>`,\n\t// :ref:`runtime override directory <envoy_v3_api_msg_config.bootstrap.v3.Runtime>`,\n\t// :ref:`user agent addition\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.add_user_agent>`,\n\t// :ref:`HTTP global rate limiting <config_http_filters_rate_limit>`,\n\t// :ref:`CDS <config_cluster_manager_cds>`, and :ref:`HTTP tracing\n\t// <arch_overview_tracing>`, either in this message or via\n\t// :option:`--service-cluster`.\n\tCluster string `protobuf:\"bytes,2,opt,name=cluster,proto3\" json:\"cluster,omitempty\"`\n\t// Opaque metadata extending the node identifier. Envoy will pass this\n\t// directly to the management server.\n\tMetadata *structpb.Struct `protobuf:\"bytes,3,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n\t// Map from xDS resource type URL to dynamic context parameters. These may vary at runtime (unlike\n\t// other fields in this message). For example, the xDS client may have a shard identifier that\n\t// changes during the lifetime of the xDS client. In Envoy, this would be achieved by updating the\n\t// dynamic context on the Server::Instance's LocalInfo context provider. The shard ID dynamic\n\t// parameter then appears in this field during future discovery requests.\n\tDynamicParameters map[string]*v31.ContextParams `protobuf:\"bytes,12,rep,name=dynamic_parameters,json=dynamicParameters,proto3\" json:\"dynamic_parameters,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\t// Locality specifying where the Envoy instance is running.\n\tLocality *Locality `protobuf:\"bytes,4,opt,name=locality,proto3\" json:\"locality,omitempty\"`\n\t// Free-form string that identifies the entity requesting config.\n\t// E.g. \"envoy\" or \"grpc\"\n\tUserAgentName string `protobuf:\"bytes,6,opt,name=user_agent_name,json=userAgentName,proto3\" json:\"user_agent_name,omitempty\"`\n\t// Types that are valid to be assigned to UserAgentVersionType:\n\t//\n\t//\t*Node_UserAgentVersion\n\t//\t*Node_UserAgentBuildVersion\n\tUserAgentVersionType isNode_UserAgentVersionType `protobuf_oneof:\"user_agent_version_type\"`\n\t// List of extensions and their versions supported by the node.\n\tExtensions []*Extension `protobuf:\"bytes,9,rep,name=extensions,proto3\" json:\"extensions,omitempty\"`\n\t// Client feature support list. These are well known features described\n\t// in the Envoy API repository for a given major version of an API. Client features\n\t// use reverse DNS naming scheme, for example “com.acme.feature“.\n\t// See :ref:`the list of features <client_features>` that xDS client may\n\t// support.\n\tClientFeatures []string `protobuf:\"bytes,10,rep,name=client_features,json=clientFeatures,proto3\" json:\"client_features,omitempty\"`\n\t// Known listening ports on the node as a generic hint to the management server\n\t// for filtering :ref:`listeners <config_listeners>` to be returned. For example,\n\t// if there is a listener bound to port 80, the list can optionally contain the\n\t// SocketAddress “(0.0.0.0,80)“. The field is optional and just a hint.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/base.proto.\n\tListeningAddresses []*Address `protobuf:\"bytes,11,rep,name=listening_addresses,json=listeningAddresses,proto3\" json:\"listening_addresses,omitempty\"`\n\tunknownFields      protoimpl.UnknownFields\n\tsizeCache          protoimpl.SizeCache\n}\n\nfunc (x *Node) Reset() {\n\t*x = Node{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Node) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Node) ProtoMessage() {}\n\nfunc (x *Node) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Node.ProtoReflect.Descriptor instead.\nfunc (*Node) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *Node) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\nfunc (x *Node) GetCluster() string {\n\tif x != nil {\n\t\treturn x.Cluster\n\t}\n\treturn \"\"\n}\n\nfunc (x *Node) GetMetadata() *structpb.Struct {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\nfunc (x *Node) GetDynamicParameters() map[string]*v31.ContextParams {\n\tif x != nil {\n\t\treturn x.DynamicParameters\n\t}\n\treturn nil\n}\n\nfunc (x *Node) GetLocality() *Locality {\n\tif x != nil {\n\t\treturn x.Locality\n\t}\n\treturn nil\n}\n\nfunc (x *Node) GetUserAgentName() string {\n\tif x != nil {\n\t\treturn x.UserAgentName\n\t}\n\treturn \"\"\n}\n\nfunc (x *Node) GetUserAgentVersionType() isNode_UserAgentVersionType {\n\tif x != nil {\n\t\treturn x.UserAgentVersionType\n\t}\n\treturn nil\n}\n\nfunc (x *Node) GetUserAgentVersion() string {\n\tif x != nil {\n\t\tif x, ok := x.UserAgentVersionType.(*Node_UserAgentVersion); ok {\n\t\t\treturn x.UserAgentVersion\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *Node) GetUserAgentBuildVersion() *BuildVersion {\n\tif x != nil {\n\t\tif x, ok := x.UserAgentVersionType.(*Node_UserAgentBuildVersion); ok {\n\t\t\treturn x.UserAgentBuildVersion\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Node) GetExtensions() []*Extension {\n\tif x != nil {\n\t\treturn x.Extensions\n\t}\n\treturn nil\n}\n\nfunc (x *Node) GetClientFeatures() []string {\n\tif x != nil {\n\t\treturn x.ClientFeatures\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/core/v3/base.proto.\nfunc (x *Node) GetListeningAddresses() []*Address {\n\tif x != nil {\n\t\treturn x.ListeningAddresses\n\t}\n\treturn nil\n}\n\ntype isNode_UserAgentVersionType interface {\n\tisNode_UserAgentVersionType()\n}\n\ntype Node_UserAgentVersion struct {\n\t// Free-form string that identifies the version of the entity requesting config.\n\t// E.g. \"1.12.2\" or \"abcd1234\", or \"SpecialEnvoyBuild\"\n\tUserAgentVersion string `protobuf:\"bytes,7,opt,name=user_agent_version,json=userAgentVersion,proto3,oneof\"`\n}\n\ntype Node_UserAgentBuildVersion struct {\n\t// Structured version of the entity requesting config.\n\tUserAgentBuildVersion *BuildVersion `protobuf:\"bytes,8,opt,name=user_agent_build_version,json=userAgentBuildVersion,proto3,oneof\"`\n}\n\nfunc (*Node_UserAgentVersion) isNode_UserAgentVersionType() {}\n\nfunc (*Node_UserAgentBuildVersion) isNode_UserAgentVersionType() {}\n\n// Metadata provides additional inputs to filters based on matched listeners,\n// filter chains, routes and endpoints. It is structured as a map, usually from\n// filter name (in reverse DNS format) to metadata specific to the filter. Metadata\n// key-values for a filter are merged as connection and request handling occurs,\n// with later values for the same key overriding earlier values.\n//\n// An example use of metadata is providing additional values to\n// http_connection_manager in the envoy.http_connection_manager.access_log\n// namespace.\n//\n// Another example use of metadata is to per service config info in cluster metadata, which may get\n// consumed by multiple filters.\n//\n// For load balancing, Metadata provides a means to subset cluster endpoints.\n// Endpoints have a Metadata object associated and routes contain a Metadata\n// object to match against. There are some well defined metadata used today for\n// this purpose:\n//\n//   - “{\"envoy.lb\": {\"canary\": <bool> }}“ This indicates the canary status of an\n//     endpoint and is also used during header processing\n//     (x-envoy-upstream-canary) and for stats purposes.\n//\n// [#next-major-version: move to type/metadata/v2]\ntype Metadata struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Key is the reverse DNS filter name, e.g. com.acme.widget. The “envoy.*“\n\t// namespace is reserved for Envoy's built-in filters.\n\t// If both “filter_metadata“ and\n\t// :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>`\n\t// fields are present in the metadata with same keys,\n\t// only “typed_filter_metadata“ field will be parsed.\n\tFilterMetadata map[string]*structpb.Struct `protobuf:\"bytes,1,rep,name=filter_metadata,json=filterMetadata,proto3\" json:\"filter_metadata,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\t// Key is the reverse DNS filter name, e.g. com.acme.widget. The “envoy.*“\n\t// namespace is reserved for Envoy's built-in filters.\n\t// The value is encoded as google.protobuf.Any.\n\t// If both :ref:`filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.filter_metadata>`\n\t// and “typed_filter_metadata“ fields are present in the metadata with same keys,\n\t// only “typed_filter_metadata“ field will be parsed.\n\tTypedFilterMetadata map[string]*anypb.Any `protobuf:\"bytes,2,rep,name=typed_filter_metadata,json=typedFilterMetadata,proto3\" json:\"typed_filter_metadata,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\nfunc (x *Metadata) Reset() {\n\t*x = Metadata{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Metadata) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Metadata) ProtoMessage() {}\n\nfunc (x *Metadata) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Metadata.ProtoReflect.Descriptor instead.\nfunc (*Metadata) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *Metadata) GetFilterMetadata() map[string]*structpb.Struct {\n\tif x != nil {\n\t\treturn x.FilterMetadata\n\t}\n\treturn nil\n}\n\nfunc (x *Metadata) GetTypedFilterMetadata() map[string]*anypb.Any {\n\tif x != nil {\n\t\treturn x.TypedFilterMetadata\n\t}\n\treturn nil\n}\n\n// Runtime derived uint32 with a default when not specified.\ntype RuntimeUInt32 struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Default value if runtime value is not available.\n\tDefaultValue uint32 `protobuf:\"varint,2,opt,name=default_value,json=defaultValue,proto3\" json:\"default_value,omitempty\"`\n\t// Runtime key to get value for comparison. This value is used if defined.\n\tRuntimeKey    string `protobuf:\"bytes,3,opt,name=runtime_key,json=runtimeKey,proto3\" json:\"runtime_key,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RuntimeUInt32) Reset() {\n\t*x = RuntimeUInt32{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RuntimeUInt32) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RuntimeUInt32) ProtoMessage() {}\n\nfunc (x *RuntimeUInt32) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RuntimeUInt32.ProtoReflect.Descriptor instead.\nfunc (*RuntimeUInt32) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *RuntimeUInt32) GetDefaultValue() uint32 {\n\tif x != nil {\n\t\treturn x.DefaultValue\n\t}\n\treturn 0\n}\n\nfunc (x *RuntimeUInt32) GetRuntimeKey() string {\n\tif x != nil {\n\t\treturn x.RuntimeKey\n\t}\n\treturn \"\"\n}\n\n// Runtime derived percentage with a default when not specified.\ntype RuntimePercent struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Default value if runtime value is not available.\n\tDefaultValue *v3.Percent `protobuf:\"bytes,1,opt,name=default_value,json=defaultValue,proto3\" json:\"default_value,omitempty\"`\n\t// Runtime key to get value for comparison. This value is used if defined.\n\tRuntimeKey    string `protobuf:\"bytes,2,opt,name=runtime_key,json=runtimeKey,proto3\" json:\"runtime_key,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RuntimePercent) Reset() {\n\t*x = RuntimePercent{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RuntimePercent) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RuntimePercent) ProtoMessage() {}\n\nfunc (x *RuntimePercent) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RuntimePercent.ProtoReflect.Descriptor instead.\nfunc (*RuntimePercent) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *RuntimePercent) GetDefaultValue() *v3.Percent {\n\tif x != nil {\n\t\treturn x.DefaultValue\n\t}\n\treturn nil\n}\n\nfunc (x *RuntimePercent) GetRuntimeKey() string {\n\tif x != nil {\n\t\treturn x.RuntimeKey\n\t}\n\treturn \"\"\n}\n\n// Runtime derived double with a default when not specified.\ntype RuntimeDouble struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Default value if runtime value is not available.\n\tDefaultValue float64 `protobuf:\"fixed64,1,opt,name=default_value,json=defaultValue,proto3\" json:\"default_value,omitempty\"`\n\t// Runtime key to get value for comparison. This value is used if defined.\n\tRuntimeKey    string `protobuf:\"bytes,2,opt,name=runtime_key,json=runtimeKey,proto3\" json:\"runtime_key,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RuntimeDouble) Reset() {\n\t*x = RuntimeDouble{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RuntimeDouble) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RuntimeDouble) ProtoMessage() {}\n\nfunc (x *RuntimeDouble) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RuntimeDouble.ProtoReflect.Descriptor instead.\nfunc (*RuntimeDouble) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *RuntimeDouble) GetDefaultValue() float64 {\n\tif x != nil {\n\t\treturn x.DefaultValue\n\t}\n\treturn 0\n}\n\nfunc (x *RuntimeDouble) GetRuntimeKey() string {\n\tif x != nil {\n\t\treturn x.RuntimeKey\n\t}\n\treturn \"\"\n}\n\n// Runtime derived bool with a default when not specified.\ntype RuntimeFeatureFlag struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Default value if runtime value is not available.\n\tDefaultValue *wrapperspb.BoolValue `protobuf:\"bytes,1,opt,name=default_value,json=defaultValue,proto3\" json:\"default_value,omitempty\"`\n\t// Runtime key to get value for comparison. This value is used if defined. The boolean value must\n\t// be represented via its\n\t// `canonical JSON encoding <https://developers.google.com/protocol-buffers/docs/proto3#json>`_.\n\tRuntimeKey    string `protobuf:\"bytes,2,opt,name=runtime_key,json=runtimeKey,proto3\" json:\"runtime_key,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RuntimeFeatureFlag) Reset() {\n\t*x = RuntimeFeatureFlag{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[8]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RuntimeFeatureFlag) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RuntimeFeatureFlag) ProtoMessage() {}\n\nfunc (x *RuntimeFeatureFlag) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[8]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RuntimeFeatureFlag.ProtoReflect.Descriptor instead.\nfunc (*RuntimeFeatureFlag) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *RuntimeFeatureFlag) GetDefaultValue() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.DefaultValue\n\t}\n\treturn nil\n}\n\nfunc (x *RuntimeFeatureFlag) GetRuntimeKey() string {\n\tif x != nil {\n\t\treturn x.RuntimeKey\n\t}\n\treturn \"\"\n}\n\n// Please use :ref:`KeyValuePair <envoy_api_msg_config.core.v3.KeyValuePair>` instead.\n// [#not-implemented-hide:]\ntype KeyValue struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The key of the key/value pair.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/base.proto.\n\tKey string `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// The value of the key/value pair.\n\t//\n\t// The “bytes“ type is used. This means if JSON or YAML is used to to represent the\n\t// configuration, the value must be base64 encoded. This is unfriendly for users in most\n\t// use scenarios of this message.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/base.proto.\n\tValue         []byte `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *KeyValue) Reset() {\n\t*x = KeyValue{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[9]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *KeyValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*KeyValue) ProtoMessage() {}\n\nfunc (x *KeyValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[9]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use KeyValue.ProtoReflect.Descriptor instead.\nfunc (*KeyValue) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{9}\n}\n\n// Deprecated: Marked as deprecated in envoy/config/core/v3/base.proto.\nfunc (x *KeyValue) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\n// Deprecated: Marked as deprecated in envoy/config/core/v3/base.proto.\nfunc (x *KeyValue) GetValue() []byte {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\ntype KeyValuePair struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The key of the key/value pair.\n\tKey string `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// The value of the key/value pair.\n\tValue         *structpb.Value `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *KeyValuePair) Reset() {\n\t*x = KeyValuePair{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[10]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *KeyValuePair) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*KeyValuePair) ProtoMessage() {}\n\nfunc (x *KeyValuePair) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[10]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use KeyValuePair.ProtoReflect.Descriptor instead.\nfunc (*KeyValuePair) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *KeyValuePair) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\nfunc (x *KeyValuePair) GetValue() *structpb.Value {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\n// Key/value pair plus option to control append behavior. This is used to specify\n// key/value pairs that should be appended to a set of existing key/value pairs.\ntype KeyValueAppend struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The single key/value pair record to be appended or overridden. This field must be set.\n\tRecord *KeyValuePair `protobuf:\"bytes,3,opt,name=record,proto3\" json:\"record,omitempty\"`\n\t// Key/value pair entry that this option to append or overwrite. This field is deprecated\n\t// and please use :ref:`record <envoy_v3_api_field_config.core.v3.KeyValueAppend.record>`\n\t// as replacement.\n\t// [#not-implemented-hide:]\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/base.proto.\n\tEntry *KeyValue `protobuf:\"bytes,1,opt,name=entry,proto3\" json:\"entry,omitempty\"`\n\t// Describes the action taken to append/overwrite the given value for an existing\n\t// key or to only add this key if it's absent.\n\tAction        KeyValueAppend_KeyValueAppendAction `protobuf:\"varint,2,opt,name=action,proto3,enum=envoy.config.core.v3.KeyValueAppend_KeyValueAppendAction\" json:\"action,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *KeyValueAppend) Reset() {\n\t*x = KeyValueAppend{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[11]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *KeyValueAppend) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*KeyValueAppend) ProtoMessage() {}\n\nfunc (x *KeyValueAppend) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[11]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use KeyValueAppend.ProtoReflect.Descriptor instead.\nfunc (*KeyValueAppend) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *KeyValueAppend) GetRecord() *KeyValuePair {\n\tif x != nil {\n\t\treturn x.Record\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/core/v3/base.proto.\nfunc (x *KeyValueAppend) GetEntry() *KeyValue {\n\tif x != nil {\n\t\treturn x.Entry\n\t}\n\treturn nil\n}\n\nfunc (x *KeyValueAppend) GetAction() KeyValueAppend_KeyValueAppendAction {\n\tif x != nil {\n\t\treturn x.Action\n\t}\n\treturn KeyValueAppend_APPEND_IF_EXISTS_OR_ADD\n}\n\n// Key/value pair to append or remove.\ntype KeyValueMutation struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Key/value pair to append or overwrite. Only one of “append“ or “remove“ can be set or\n\t// the configuration will be rejected.\n\tAppend *KeyValueAppend `protobuf:\"bytes,1,opt,name=append,proto3\" json:\"append,omitempty\"`\n\t// Key to remove. Only one of “append“ or “remove“ can be set or the configuration will be\n\t// rejected.\n\tRemove        string `protobuf:\"bytes,2,opt,name=remove,proto3\" json:\"remove,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *KeyValueMutation) Reset() {\n\t*x = KeyValueMutation{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[12]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *KeyValueMutation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*KeyValueMutation) ProtoMessage() {}\n\nfunc (x *KeyValueMutation) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[12]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use KeyValueMutation.ProtoReflect.Descriptor instead.\nfunc (*KeyValueMutation) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *KeyValueMutation) GetAppend() *KeyValueAppend {\n\tif x != nil {\n\t\treturn x.Append\n\t}\n\treturn nil\n}\n\nfunc (x *KeyValueMutation) GetRemove() string {\n\tif x != nil {\n\t\treturn x.Remove\n\t}\n\treturn \"\"\n}\n\n// Query parameter name/value pair.\ntype QueryParameter struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The key of the query parameter. Case sensitive.\n\tKey string `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// The value of the query parameter.\n\tValue         string `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *QueryParameter) Reset() {\n\t*x = QueryParameter{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[13]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *QueryParameter) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryParameter) ProtoMessage() {}\n\nfunc (x *QueryParameter) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[13]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use QueryParameter.ProtoReflect.Descriptor instead.\nfunc (*QueryParameter) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{13}\n}\n\nfunc (x *QueryParameter) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryParameter) GetValue() string {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn \"\"\n}\n\n// Header name/value pair.\ntype HeaderValue struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Header name.\n\tKey string `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// Header value.\n\t//\n\t// The same :ref:`format specifier <config_access_log_format>` as used for\n\t// :ref:`HTTP access logging <config_access_log>` applies here, however\n\t// unknown header values are replaced with the empty string instead of “-“.\n\t// Header value is encoded as string. This does not work for non-utf8 characters.\n\t// Only one of “value“ or “raw_value“ can be set.\n\tValue string `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\t// Header value is encoded as bytes which can support non-utf8 characters.\n\t// Only one of “value“ or “raw_value“ can be set.\n\tRawValue      []byte `protobuf:\"bytes,3,opt,name=raw_value,json=rawValue,proto3\" json:\"raw_value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HeaderValue) Reset() {\n\t*x = HeaderValue{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[14]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HeaderValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HeaderValue) ProtoMessage() {}\n\nfunc (x *HeaderValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[14]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HeaderValue.ProtoReflect.Descriptor instead.\nfunc (*HeaderValue) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{14}\n}\n\nfunc (x *HeaderValue) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\nfunc (x *HeaderValue) GetValue() string {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn \"\"\n}\n\nfunc (x *HeaderValue) GetRawValue() []byte {\n\tif x != nil {\n\t\treturn x.RawValue\n\t}\n\treturn nil\n}\n\n// Header name/value pair plus option to control append behavior.\ntype HeaderValueOption struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Header name/value pair that this option applies to.\n\tHeader *HeaderValue `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// Should the value be appended? If true (default), the value is appended to\n\t// existing values. Otherwise it replaces any existing values.\n\t// This field is deprecated and please use\n\t// :ref:`append_action <envoy_v3_api_field_config.core.v3.HeaderValueOption.append_action>` as replacement.\n\t//\n\t// .. note::\n\t//\n\t//\tThe :ref:`external authorization service <envoy_v3_api_msg_service.auth.v3.CheckResponse>` and\n\t//\t:ref:`external processor service <envoy_v3_api_msg_service.ext_proc.v3.ProcessingResponse>` have\n\t//\tdefault value (``false``) for this field.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/base.proto.\n\tAppend *wrapperspb.BoolValue `protobuf:\"bytes,2,opt,name=append,proto3\" json:\"append,omitempty\"`\n\t// Describes the action taken to append/overwrite the given value for an existing header\n\t// or to only add this header if it's absent.\n\t// Value defaults to :ref:`APPEND_IF_EXISTS_OR_ADD\n\t// <envoy_v3_api_enum_value_config.core.v3.HeaderValueOption.HeaderAppendAction.APPEND_IF_EXISTS_OR_ADD>`.\n\tAppendAction HeaderValueOption_HeaderAppendAction `protobuf:\"varint,3,opt,name=append_action,json=appendAction,proto3,enum=envoy.config.core.v3.HeaderValueOption_HeaderAppendAction\" json:\"append_action,omitempty\"`\n\t// Is the header value allowed to be empty? If false (default), custom headers with empty values are dropped,\n\t// otherwise they are added.\n\tKeepEmptyValue bool `protobuf:\"varint,4,opt,name=keep_empty_value,json=keepEmptyValue,proto3\" json:\"keep_empty_value,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *HeaderValueOption) Reset() {\n\t*x = HeaderValueOption{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[15]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HeaderValueOption) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HeaderValueOption) ProtoMessage() {}\n\nfunc (x *HeaderValueOption) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[15]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HeaderValueOption.ProtoReflect.Descriptor instead.\nfunc (*HeaderValueOption) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{15}\n}\n\nfunc (x *HeaderValueOption) GetHeader() *HeaderValue {\n\tif x != nil {\n\t\treturn x.Header\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/core/v3/base.proto.\nfunc (x *HeaderValueOption) GetAppend() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.Append\n\t}\n\treturn nil\n}\n\nfunc (x *HeaderValueOption) GetAppendAction() HeaderValueOption_HeaderAppendAction {\n\tif x != nil {\n\t\treturn x.AppendAction\n\t}\n\treturn HeaderValueOption_APPEND_IF_EXISTS_OR_ADD\n}\n\nfunc (x *HeaderValueOption) GetKeepEmptyValue() bool {\n\tif x != nil {\n\t\treturn x.KeepEmptyValue\n\t}\n\treturn false\n}\n\n// Wrapper for a set of headers.\ntype HeaderMap struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// A list of header names and their values.\n\tHeaders       []*HeaderValue `protobuf:\"bytes,1,rep,name=headers,proto3\" json:\"headers,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HeaderMap) Reset() {\n\t*x = HeaderMap{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[16]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HeaderMap) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HeaderMap) ProtoMessage() {}\n\nfunc (x *HeaderMap) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[16]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HeaderMap.ProtoReflect.Descriptor instead.\nfunc (*HeaderMap) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{16}\n}\n\nfunc (x *HeaderMap) GetHeaders() []*HeaderValue {\n\tif x != nil {\n\t\treturn x.Headers\n\t}\n\treturn nil\n}\n\n// A directory that is watched for changes, e.g. by inotify on Linux. Move/rename\n// events inside this directory trigger the watch.\ntype WatchedDirectory struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Directory path to watch.\n\tPath          string `protobuf:\"bytes,1,opt,name=path,proto3\" json:\"path,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *WatchedDirectory) Reset() {\n\t*x = WatchedDirectory{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[17]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *WatchedDirectory) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*WatchedDirectory) ProtoMessage() {}\n\nfunc (x *WatchedDirectory) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[17]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use WatchedDirectory.ProtoReflect.Descriptor instead.\nfunc (*WatchedDirectory) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{17}\n}\n\nfunc (x *WatchedDirectory) GetPath() string {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn \"\"\n}\n\n// Data source consisting of a file, an inline value, or an environment variable.\n// [#next-free-field: 6]\ntype DataSource struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Specifier:\n\t//\n\t//\t*DataSource_Filename\n\t//\t*DataSource_InlineBytes\n\t//\t*DataSource_InlineString\n\t//\t*DataSource_EnvironmentVariable\n\tSpecifier isDataSource_Specifier `protobuf_oneof:\"specifier\"`\n\t// Watched directory that is watched for file changes. If this is set explicitly, the file\n\t// specified in the “filename“ field will be reloaded when relevant file move events occur.\n\t//\n\t// .. note::\n\t//\n\t//\tThis field only makes sense when the ``filename`` field is set.\n\t//\n\t// .. note::\n\t//\n\t//\tEnvoy only updates when the file is replaced by a file move, and not when the file is\n\t//\tedited in place.\n\t//\n\t// .. note::\n\t//\n\t//\tNot all use cases of ``DataSource`` support watching directories. It depends on the\n\t//\tspecific usage of the ``DataSource``. See the documentation of the parent message for\n\t//\tdetails.\n\tWatchedDirectory *WatchedDirectory `protobuf:\"bytes,5,opt,name=watched_directory,json=watchedDirectory,proto3\" json:\"watched_directory,omitempty\"`\n\tunknownFields    protoimpl.UnknownFields\n\tsizeCache        protoimpl.SizeCache\n}\n\nfunc (x *DataSource) Reset() {\n\t*x = DataSource{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[18]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DataSource) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DataSource) ProtoMessage() {}\n\nfunc (x *DataSource) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[18]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DataSource.ProtoReflect.Descriptor instead.\nfunc (*DataSource) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{18}\n}\n\nfunc (x *DataSource) GetSpecifier() isDataSource_Specifier {\n\tif x != nil {\n\t\treturn x.Specifier\n\t}\n\treturn nil\n}\n\nfunc (x *DataSource) GetFilename() string {\n\tif x != nil {\n\t\tif x, ok := x.Specifier.(*DataSource_Filename); ok {\n\t\t\treturn x.Filename\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *DataSource) GetInlineBytes() []byte {\n\tif x != nil {\n\t\tif x, ok := x.Specifier.(*DataSource_InlineBytes); ok {\n\t\t\treturn x.InlineBytes\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *DataSource) GetInlineString() string {\n\tif x != nil {\n\t\tif x, ok := x.Specifier.(*DataSource_InlineString); ok {\n\t\t\treturn x.InlineString\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *DataSource) GetEnvironmentVariable() string {\n\tif x != nil {\n\t\tif x, ok := x.Specifier.(*DataSource_EnvironmentVariable); ok {\n\t\t\treturn x.EnvironmentVariable\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *DataSource) GetWatchedDirectory() *WatchedDirectory {\n\tif x != nil {\n\t\treturn x.WatchedDirectory\n\t}\n\treturn nil\n}\n\ntype isDataSource_Specifier interface {\n\tisDataSource_Specifier()\n}\n\ntype DataSource_Filename struct {\n\t// Local filesystem data source.\n\tFilename string `protobuf:\"bytes,1,opt,name=filename,proto3,oneof\"`\n}\n\ntype DataSource_InlineBytes struct {\n\t// Bytes inlined in the configuration.\n\tInlineBytes []byte `protobuf:\"bytes,2,opt,name=inline_bytes,json=inlineBytes,proto3,oneof\"`\n}\n\ntype DataSource_InlineString struct {\n\t// String inlined in the configuration.\n\tInlineString string `protobuf:\"bytes,3,opt,name=inline_string,json=inlineString,proto3,oneof\"`\n}\n\ntype DataSource_EnvironmentVariable struct {\n\t// Environment variable data source.\n\tEnvironmentVariable string `protobuf:\"bytes,4,opt,name=environment_variable,json=environmentVariable,proto3,oneof\"`\n}\n\nfunc (*DataSource_Filename) isDataSource_Specifier() {}\n\nfunc (*DataSource_InlineBytes) isDataSource_Specifier() {}\n\nfunc (*DataSource_InlineString) isDataSource_Specifier() {}\n\nfunc (*DataSource_EnvironmentVariable) isDataSource_Specifier() {}\n\n// The message specifies the retry policy of remote data source when fetching fails.\n// [#next-free-field: 7]\ntype RetryPolicy struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies parameters that control :ref:`retry backoff strategy <envoy_v3_api_msg_config.core.v3.BackoffStrategy>`.\n\t// This parameter is optional, in which case the default base interval is 1000 milliseconds. The\n\t// default maximum interval is 10 times the base interval.\n\tRetryBackOff *BackoffStrategy `protobuf:\"bytes,1,opt,name=retry_back_off,json=retryBackOff,proto3\" json:\"retry_back_off,omitempty\"`\n\t// Specifies the allowed number of retries. This parameter is optional and\n\t// defaults to 1.\n\tNumRetries *wrapperspb.UInt32Value `protobuf:\"bytes,2,opt,name=num_retries,json=numRetries,proto3\" json:\"num_retries,omitempty\"`\n\t// For details, see :ref:`retry_on <envoy_v3_api_field_config.route.v3.RetryPolicy.retry_on>`.\n\tRetryOn string `protobuf:\"bytes,3,opt,name=retry_on,json=retryOn,proto3\" json:\"retry_on,omitempty\"`\n\t// For details, see :ref:`retry_priority <envoy_v3_api_field_config.route.v3.RetryPolicy.retry_priority>`.\n\tRetryPriority *RetryPolicy_RetryPriority `protobuf:\"bytes,4,opt,name=retry_priority,json=retryPriority,proto3\" json:\"retry_priority,omitempty\"`\n\t// For details, see :ref:`RetryHostPredicate <envoy_v3_api_field_config.route.v3.RetryPolicy.retry_host_predicate>`.\n\tRetryHostPredicate []*RetryPolicy_RetryHostPredicate `protobuf:\"bytes,5,rep,name=retry_host_predicate,json=retryHostPredicate,proto3\" json:\"retry_host_predicate,omitempty\"`\n\t// For details, see :ref:`host_selection_retry_max_attempts <envoy_v3_api_field_config.route.v3.RetryPolicy.host_selection_retry_max_attempts>`.\n\tHostSelectionRetryMaxAttempts int64 `protobuf:\"varint,6,opt,name=host_selection_retry_max_attempts,json=hostSelectionRetryMaxAttempts,proto3\" json:\"host_selection_retry_max_attempts,omitempty\"`\n\tunknownFields                 protoimpl.UnknownFields\n\tsizeCache                     protoimpl.SizeCache\n}\n\nfunc (x *RetryPolicy) Reset() {\n\t*x = RetryPolicy{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[19]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RetryPolicy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RetryPolicy) ProtoMessage() {}\n\nfunc (x *RetryPolicy) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[19]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead.\nfunc (*RetryPolicy) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{19}\n}\n\nfunc (x *RetryPolicy) GetRetryBackOff() *BackoffStrategy {\n\tif x != nil {\n\t\treturn x.RetryBackOff\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy) GetNumRetries() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.NumRetries\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy) GetRetryOn() string {\n\tif x != nil {\n\t\treturn x.RetryOn\n\t}\n\treturn \"\"\n}\n\nfunc (x *RetryPolicy) GetRetryPriority() *RetryPolicy_RetryPriority {\n\tif x != nil {\n\t\treturn x.RetryPriority\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy) GetRetryHostPredicate() []*RetryPolicy_RetryHostPredicate {\n\tif x != nil {\n\t\treturn x.RetryHostPredicate\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy) GetHostSelectionRetryMaxAttempts() int64 {\n\tif x != nil {\n\t\treturn x.HostSelectionRetryMaxAttempts\n\t}\n\treturn 0\n}\n\n// The message specifies how to fetch data from remote and how to verify it.\ntype RemoteDataSource struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The HTTP URI to fetch the remote data.\n\tHttpUri *HttpUri `protobuf:\"bytes,1,opt,name=http_uri,json=httpUri,proto3\" json:\"http_uri,omitempty\"`\n\t// SHA256 string for verifying data.\n\tSha256 string `protobuf:\"bytes,2,opt,name=sha256,proto3\" json:\"sha256,omitempty\"`\n\t// Retry policy for fetching remote data.\n\tRetryPolicy   *RetryPolicy `protobuf:\"bytes,3,opt,name=retry_policy,json=retryPolicy,proto3\" json:\"retry_policy,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RemoteDataSource) Reset() {\n\t*x = RemoteDataSource{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[20]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RemoteDataSource) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RemoteDataSource) ProtoMessage() {}\n\nfunc (x *RemoteDataSource) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[20]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RemoteDataSource.ProtoReflect.Descriptor instead.\nfunc (*RemoteDataSource) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{20}\n}\n\nfunc (x *RemoteDataSource) GetHttpUri() *HttpUri {\n\tif x != nil {\n\t\treturn x.HttpUri\n\t}\n\treturn nil\n}\n\nfunc (x *RemoteDataSource) GetSha256() string {\n\tif x != nil {\n\t\treturn x.Sha256\n\t}\n\treturn \"\"\n}\n\nfunc (x *RemoteDataSource) GetRetryPolicy() *RetryPolicy {\n\tif x != nil {\n\t\treturn x.RetryPolicy\n\t}\n\treturn nil\n}\n\n// Async data source which support async data fetch.\ntype AsyncDataSource struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Specifier:\n\t//\n\t//\t*AsyncDataSource_Local\n\t//\t*AsyncDataSource_Remote\n\tSpecifier     isAsyncDataSource_Specifier `protobuf_oneof:\"specifier\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *AsyncDataSource) Reset() {\n\t*x = AsyncDataSource{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[21]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *AsyncDataSource) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AsyncDataSource) ProtoMessage() {}\n\nfunc (x *AsyncDataSource) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[21]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use AsyncDataSource.ProtoReflect.Descriptor instead.\nfunc (*AsyncDataSource) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{21}\n}\n\nfunc (x *AsyncDataSource) GetSpecifier() isAsyncDataSource_Specifier {\n\tif x != nil {\n\t\treturn x.Specifier\n\t}\n\treturn nil\n}\n\nfunc (x *AsyncDataSource) GetLocal() *DataSource {\n\tif x != nil {\n\t\tif x, ok := x.Specifier.(*AsyncDataSource_Local); ok {\n\t\t\treturn x.Local\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *AsyncDataSource) GetRemote() *RemoteDataSource {\n\tif x != nil {\n\t\tif x, ok := x.Specifier.(*AsyncDataSource_Remote); ok {\n\t\t\treturn x.Remote\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isAsyncDataSource_Specifier interface {\n\tisAsyncDataSource_Specifier()\n}\n\ntype AsyncDataSource_Local struct {\n\t// Local async data source.\n\tLocal *DataSource `protobuf:\"bytes,1,opt,name=local,proto3,oneof\"`\n}\n\ntype AsyncDataSource_Remote struct {\n\t// Remote async data source.\n\tRemote *RemoteDataSource `protobuf:\"bytes,2,opt,name=remote,proto3,oneof\"`\n}\n\nfunc (*AsyncDataSource_Local) isAsyncDataSource_Specifier() {}\n\nfunc (*AsyncDataSource_Remote) isAsyncDataSource_Specifier() {}\n\n// Configuration for transport socket in :ref:`listeners <config_listeners>` and\n// :ref:`clusters <envoy_v3_api_msg_config.cluster.v3.Cluster>`. If the configuration is\n// empty, a default transport socket implementation and configuration will be\n// chosen based on the platform and existence of tls_context.\ntype TransportSocket struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the transport socket to instantiate. The name must match a supported transport\n\t// socket implementation.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Implementation specific configuration which depends on the implementation being instantiated.\n\t// See the supported transport socket implementations for further documentation.\n\t//\n\t// Types that are valid to be assigned to ConfigType:\n\t//\n\t//\t*TransportSocket_TypedConfig\n\tConfigType    isTransportSocket_ConfigType `protobuf_oneof:\"config_type\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *TransportSocket) Reset() {\n\t*x = TransportSocket{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[22]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *TransportSocket) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*TransportSocket) ProtoMessage() {}\n\nfunc (x *TransportSocket) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[22]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use TransportSocket.ProtoReflect.Descriptor instead.\nfunc (*TransportSocket) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{22}\n}\n\nfunc (x *TransportSocket) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *TransportSocket) GetConfigType() isTransportSocket_ConfigType {\n\tif x != nil {\n\t\treturn x.ConfigType\n\t}\n\treturn nil\n}\n\nfunc (x *TransportSocket) GetTypedConfig() *anypb.Any {\n\tif x != nil {\n\t\tif x, ok := x.ConfigType.(*TransportSocket_TypedConfig); ok {\n\t\t\treturn x.TypedConfig\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isTransportSocket_ConfigType interface {\n\tisTransportSocket_ConfigType()\n}\n\ntype TransportSocket_TypedConfig struct {\n\tTypedConfig *anypb.Any `protobuf:\"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof\"`\n}\n\nfunc (*TransportSocket_TypedConfig) isTransportSocket_ConfigType() {}\n\n// Runtime derived FractionalPercent with defaults for when the numerator or denominator is not\n// specified via a runtime key.\n//\n// .. note::\n//\n//\tParsing of the runtime key's data is implemented such that it may be represented as a\n//\t:ref:`FractionalPercent <envoy_v3_api_msg_type.v3.FractionalPercent>` proto represented as JSON/YAML\n//\tand may also be represented as an integer with the assumption that the value is an integral\n//\tpercentage out of 100. For instance, a runtime key lookup returning the value \"42\" would parse\n//\tas a ``FractionalPercent`` whose numerator is 42 and denominator is HUNDRED.\ntype RuntimeFractionalPercent struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Default value if the runtime value's for the numerator/denominator keys are not available.\n\tDefaultValue *v3.FractionalPercent `protobuf:\"bytes,1,opt,name=default_value,json=defaultValue,proto3\" json:\"default_value,omitempty\"`\n\t// Runtime key for a YAML representation of a FractionalPercent.\n\tRuntimeKey    string `protobuf:\"bytes,2,opt,name=runtime_key,json=runtimeKey,proto3\" json:\"runtime_key,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RuntimeFractionalPercent) Reset() {\n\t*x = RuntimeFractionalPercent{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[23]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RuntimeFractionalPercent) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RuntimeFractionalPercent) ProtoMessage() {}\n\nfunc (x *RuntimeFractionalPercent) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[23]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RuntimeFractionalPercent.ProtoReflect.Descriptor instead.\nfunc (*RuntimeFractionalPercent) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{23}\n}\n\nfunc (x *RuntimeFractionalPercent) GetDefaultValue() *v3.FractionalPercent {\n\tif x != nil {\n\t\treturn x.DefaultValue\n\t}\n\treturn nil\n}\n\nfunc (x *RuntimeFractionalPercent) GetRuntimeKey() string {\n\tif x != nil {\n\t\treturn x.RuntimeKey\n\t}\n\treturn \"\"\n}\n\n// Identifies a specific ControlPlane instance that Envoy is connected to.\ntype ControlPlane struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// An opaque control plane identifier that uniquely identifies an instance\n\t// of control plane. This can be used to identify which control plane instance,\n\t// the Envoy is connected to.\n\tIdentifier    string `protobuf:\"bytes,1,opt,name=identifier,proto3\" json:\"identifier,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ControlPlane) Reset() {\n\t*x = ControlPlane{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[24]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ControlPlane) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ControlPlane) ProtoMessage() {}\n\nfunc (x *ControlPlane) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[24]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ControlPlane.ProtoReflect.Descriptor instead.\nfunc (*ControlPlane) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{24}\n}\n\nfunc (x *ControlPlane) GetIdentifier() string {\n\tif x != nil {\n\t\treturn x.Identifier\n\t}\n\treturn \"\"\n}\n\n// See :ref:`RetryPriority <envoy_v3_api_field_config.route.v3.RetryPolicy.retry_priority>`.\ntype RetryPolicy_RetryPriority struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\tName  string                 `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Types that are valid to be assigned to ConfigType:\n\t//\n\t//\t*RetryPolicy_RetryPriority_TypedConfig\n\tConfigType    isRetryPolicy_RetryPriority_ConfigType `protobuf_oneof:\"config_type\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RetryPolicy_RetryPriority) Reset() {\n\t*x = RetryPolicy_RetryPriority{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[28]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RetryPolicy_RetryPriority) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RetryPolicy_RetryPriority) ProtoMessage() {}\n\nfunc (x *RetryPolicy_RetryPriority) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[28]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RetryPolicy_RetryPriority.ProtoReflect.Descriptor instead.\nfunc (*RetryPolicy_RetryPriority) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{19, 0}\n}\n\nfunc (x *RetryPolicy_RetryPriority) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *RetryPolicy_RetryPriority) GetConfigType() isRetryPolicy_RetryPriority_ConfigType {\n\tif x != nil {\n\t\treturn x.ConfigType\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy_RetryPriority) GetTypedConfig() *anypb.Any {\n\tif x != nil {\n\t\tif x, ok := x.ConfigType.(*RetryPolicy_RetryPriority_TypedConfig); ok {\n\t\t\treturn x.TypedConfig\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isRetryPolicy_RetryPriority_ConfigType interface {\n\tisRetryPolicy_RetryPriority_ConfigType()\n}\n\ntype RetryPolicy_RetryPriority_TypedConfig struct {\n\tTypedConfig *anypb.Any `protobuf:\"bytes,2,opt,name=typed_config,json=typedConfig,proto3,oneof\"`\n}\n\nfunc (*RetryPolicy_RetryPriority_TypedConfig) isRetryPolicy_RetryPriority_ConfigType() {}\n\n// See :ref:`RetryHostPredicate <envoy_v3_api_field_config.route.v3.RetryPolicy.retry_host_predicate>`.\ntype RetryPolicy_RetryHostPredicate struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\tName  string                 `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Types that are valid to be assigned to ConfigType:\n\t//\n\t//\t*RetryPolicy_RetryHostPredicate_TypedConfig\n\tConfigType    isRetryPolicy_RetryHostPredicate_ConfigType `protobuf_oneof:\"config_type\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RetryPolicy_RetryHostPredicate) Reset() {\n\t*x = RetryPolicy_RetryHostPredicate{}\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[29]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RetryPolicy_RetryHostPredicate) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RetryPolicy_RetryHostPredicate) ProtoMessage() {}\n\nfunc (x *RetryPolicy_RetryHostPredicate) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_base_proto_msgTypes[29]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RetryPolicy_RetryHostPredicate.ProtoReflect.Descriptor instead.\nfunc (*RetryPolicy_RetryHostPredicate) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_base_proto_rawDescGZIP(), []int{19, 1}\n}\n\nfunc (x *RetryPolicy_RetryHostPredicate) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *RetryPolicy_RetryHostPredicate) GetConfigType() isRetryPolicy_RetryHostPredicate_ConfigType {\n\tif x != nil {\n\t\treturn x.ConfigType\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy_RetryHostPredicate) GetTypedConfig() *anypb.Any {\n\tif x != nil {\n\t\tif x, ok := x.ConfigType.(*RetryPolicy_RetryHostPredicate_TypedConfig); ok {\n\t\t\treturn x.TypedConfig\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isRetryPolicy_RetryHostPredicate_ConfigType interface {\n\tisRetryPolicy_RetryHostPredicate_ConfigType()\n}\n\ntype RetryPolicy_RetryHostPredicate_TypedConfig struct {\n\tTypedConfig *anypb.Any `protobuf:\"bytes,2,opt,name=typed_config,json=typedConfig,proto3,oneof\"`\n}\n\nfunc (*RetryPolicy_RetryHostPredicate_TypedConfig) isRetryPolicy_RetryHostPredicate_ConfigType() {}\n\nvar File_envoy_config_core_v3_base_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_base_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1fenvoy/config/core/v3/base.proto\\x12\\x14envoy.config.core.v3\\x1a\\\"envoy/config/core/v3/address.proto\\x1a\\\"envoy/config/core/v3/backoff.proto\\x1a#envoy/config/core/v3/http_uri.proto\\x1a\\x1benvoy/type/v3/percent.proto\\x1a$envoy/type/v3/semantic_version.proto\\x1a\\x19google/protobuf/any.proto\\x1a\\x1cgoogle/protobuf/struct.proto\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a xds/core/v3/context_params.proto\\x1a#envoy/annotations/deprecation.proto\\x1a\\x1eudpa/annotations/migrate.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"t\\n\" +\n\t\"\\bLocality\\x12\\x16\\n\" +\n\t\"\\x06region\\x18\\x01 \\x01(\\tR\\x06region\\x12\\x12\\n\" +\n\t\"\\x04zone\\x18\\x02 \\x01(\\tR\\x04zone\\x12\\x19\\n\" +\n\t\"\\bsub_zone\\x18\\x03 \\x01(\\tR\\asubZone:!\\x9aň\\x1e\\x1c\\n\" +\n\t\"\\x1aenvoy.api.v2.core.Locality\\\"\\xa4\\x01\\n\" +\n\t\"\\fBuildVersion\\x128\\n\" +\n\t\"\\aversion\\x18\\x01 \\x01(\\v2\\x1e.envoy.type.v3.SemanticVersionR\\aversion\\x123\\n\" +\n\t\"\\bmetadata\\x18\\x02 \\x01(\\v2\\x17.google.protobuf.StructR\\bmetadata:%\\x9aň\\x1e \\n\" +\n\t\"\\x1eenvoy.api.v2.core.BuildVersion\\\"\\x8c\\x02\\n\" +\n\t\"\\tExtension\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12\\x1a\\n\" +\n\t\"\\bcategory\\x18\\x02 \\x01(\\tR\\bcategory\\x124\\n\" +\n\t\"\\x0ftype_descriptor\\x18\\x03 \\x01(\\tB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x0etypeDescriptor\\x12<\\n\" +\n\t\"\\aversion\\x18\\x04 \\x01(\\v2\\\".envoy.config.core.v3.BuildVersionR\\aversion\\x12\\x1a\\n\" +\n\t\"\\bdisabled\\x18\\x05 \\x01(\\bR\\bdisabled\\x12\\x1b\\n\" +\n\t\"\\ttype_urls\\x18\\x06 \\x03(\\tR\\btypeUrls:\\\"\\x9aň\\x1e\\x1d\\n\" +\n\t\"\\x1benvoy.api.v2.core.Extension\\\"\\xb2\\x06\\n\" +\n\t\"\\x04Node\\x12\\x0e\\n\" +\n\t\"\\x02id\\x18\\x01 \\x01(\\tR\\x02id\\x12\\x18\\n\" +\n\t\"\\acluster\\x18\\x02 \\x01(\\tR\\acluster\\x123\\n\" +\n\t\"\\bmetadata\\x18\\x03 \\x01(\\v2\\x17.google.protobuf.StructR\\bmetadata\\x12`\\n\" +\n\t\"\\x12dynamic_parameters\\x18\\f \\x03(\\v21.envoy.config.core.v3.Node.DynamicParametersEntryR\\x11dynamicParameters\\x12:\\n\" +\n\t\"\\blocality\\x18\\x04 \\x01(\\v2\\x1e.envoy.config.core.v3.LocalityR\\blocality\\x12&\\n\" +\n\t\"\\x0fuser_agent_name\\x18\\x06 \\x01(\\tR\\ruserAgentName\\x12.\\n\" +\n\t\"\\x12user_agent_version\\x18\\a \\x01(\\tH\\x00R\\x10userAgentVersion\\x12]\\n\" +\n\t\"\\x18user_agent_build_version\\x18\\b \\x01(\\v2\\\".envoy.config.core.v3.BuildVersionH\\x00R\\x15userAgentBuildVersion\\x12?\\n\" +\n\t\"\\n\" +\n\t\"extensions\\x18\\t \\x03(\\v2\\x1f.envoy.config.core.v3.ExtensionR\\n\" +\n\t\"extensions\\x12'\\n\" +\n\t\"\\x0fclient_features\\x18\\n\" +\n\t\" \\x03(\\tR\\x0eclientFeatures\\x12[\\n\" +\n\t\"\\x13listening_addresses\\x18\\v \\x03(\\v2\\x1d.envoy.config.core.v3.AddressB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x12listeningAddresses\\x1a`\\n\" +\n\t\"\\x16DynamicParametersEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x120\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x1a.xds.core.v3.ContextParamsR\\x05value:\\x028\\x01:\\x1d\\x9aň\\x1e\\x18\\n\" +\n\t\"\\x16envoy.api.v2.core.NodeB\\x19\\n\" +\n\t\"\\x17user_agent_version_typeJ\\x04\\b\\x05\\x10\\x06R\\rbuild_version\\\"\\xcd\\x03\\n\" +\n\t\"\\bMetadata\\x12i\\n\" +\n\t\"\\x0ffilter_metadata\\x18\\x01 \\x03(\\v22.envoy.config.core.v3.Metadata.FilterMetadataEntryB\\f\\xfaB\\t\\x9a\\x01\\x06\\\"\\x04r\\x02\\x10\\x01R\\x0efilterMetadata\\x12y\\n\" +\n\t\"\\x15typed_filter_metadata\\x18\\x02 \\x03(\\v27.envoy.config.core.v3.Metadata.TypedFilterMetadataEntryB\\f\\xfaB\\t\\x9a\\x01\\x06\\\"\\x04r\\x02\\x10\\x01R\\x13typedFilterMetadata\\x1aZ\\n\" +\n\t\"\\x13FilterMetadataEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12-\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x17.google.protobuf.StructR\\x05value:\\x028\\x01\\x1a\\\\\\n\" +\n\t\"\\x18TypedFilterMetadataEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12*\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x14.google.protobuf.AnyR\\x05value:\\x028\\x01:!\\x9aň\\x1e\\x1c\\n\" +\n\t\"\\x1aenvoy.api.v2.core.Metadata\\\"}\\n\" +\n\t\"\\rRuntimeUInt32\\x12#\\n\" +\n\t\"\\rdefault_value\\x18\\x02 \\x01(\\rR\\fdefaultValue\\x12\\x1f\\n\" +\n\t\"\\vruntime_key\\x18\\x03 \\x01(\\tR\\n\" +\n\t\"runtimeKey:&\\x9aň\\x1e!\\n\" +\n\t\"\\x1fenvoy.api.v2.core.RuntimeUInt32\\\"n\\n\" +\n\t\"\\x0eRuntimePercent\\x12;\\n\" +\n\t\"\\rdefault_value\\x18\\x01 \\x01(\\v2\\x16.envoy.type.v3.PercentR\\fdefaultValue\\x12\\x1f\\n\" +\n\t\"\\vruntime_key\\x18\\x02 \\x01(\\tR\\n\" +\n\t\"runtimeKey\\\"}\\n\" +\n\t\"\\rRuntimeDouble\\x12#\\n\" +\n\t\"\\rdefault_value\\x18\\x01 \\x01(\\x01R\\fdefaultValue\\x12\\x1f\\n\" +\n\t\"\\vruntime_key\\x18\\x02 \\x01(\\tR\\n\" +\n\t\"runtimeKey:&\\x9aň\\x1e!\\n\" +\n\t\"\\x1fenvoy.api.v2.core.RuntimeDouble\\\"\\xad\\x01\\n\" +\n\t\"\\x12RuntimeFeatureFlag\\x12I\\n\" +\n\t\"\\rdefault_value\\x18\\x01 \\x01(\\v2\\x1a.google.protobuf.BoolValueB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\fdefaultValue\\x12\\x1f\\n\" +\n\t\"\\vruntime_key\\x18\\x02 \\x01(\\tR\\n\" +\n\t\"runtimeKey:+\\x9aň\\x1e&\\n\" +\n\t\"$envoy.api.v2.core.RuntimeFeatureFlag\\\"W\\n\" +\n\t\"\\bKeyValue\\x12(\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tB\\x16\\xfaB\\br\\x06\\x10\\x01(\\x80\\x80\\x01\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x03key\\x12!\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\fB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x05value\\\"[\\n\" +\n\t\"\\fKeyValuePair\\x12\\x1d\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tB\\v\\xfaB\\br\\x06\\x10\\x01(\\x80\\x80\\x01R\\x03key\\x12,\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x16.google.protobuf.ValueR\\x05value\\\"\\xf5\\x02\\n\" +\n\t\"\\x0eKeyValueAppend\\x12:\\n\" +\n\t\"\\x06record\\x18\\x03 \\x01(\\v2\\\".envoy.config.core.v3.KeyValuePairR\\x06record\\x12I\\n\" +\n\t\"\\x05entry\\x18\\x01 \\x01(\\v2\\x1e.envoy.config.core.v3.KeyValueB\\x13\\xfaB\\x05\\x8a\\x01\\x02\\b\\x01\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x05entry\\x12[\\n\" +\n\t\"\\x06action\\x18\\x02 \\x01(\\x0e29.envoy.config.core.v3.KeyValueAppend.KeyValueAppendActionB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\x06action\\\"\\x7f\\n\" +\n\t\"\\x14KeyValueAppendAction\\x12\\x1b\\n\" +\n\t\"\\x17APPEND_IF_EXISTS_OR_ADD\\x10\\x00\\x12\\x11\\n\" +\n\t\"\\rADD_IF_ABSENT\\x10\\x01\\x12\\x1e\\n\" +\n\t\"\\x1aOVERWRITE_IF_EXISTS_OR_ADD\\x10\\x02\\x12\\x17\\n\" +\n\t\"\\x13OVERWRITE_IF_EXISTS\\x10\\x03\\\"s\\n\" +\n\t\"\\x10KeyValueMutation\\x12<\\n\" +\n\t\"\\x06append\\x18\\x01 \\x01(\\v2$.envoy.config.core.v3.KeyValueAppendR\\x06append\\x12!\\n\" +\n\t\"\\x06remove\\x18\\x02 \\x01(\\tB\\t\\xfaB\\x06r\\x04(\\x80\\x80\\x01R\\x06remove\\\"A\\n\" +\n\t\"\\x0eQueryParameter\\x12\\x19\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x03key\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\tR\\x05value\\\"\\xcd\\x01\\n\" +\n\t\"\\vHeaderValue\\x12#\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tB\\x11\\xfaB\\x0er\\f\\x10\\x01(\\x80\\x80\\x01\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x03key\\x127\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\tB!\\xfaB\\fr\\n\" +\n\t\"(\\x80\\x80\\x01\\xc8\\x01\\x00\\xc0\\x01\\x02\\xf2\\x98\\xfe\\x8f\\x05\\f\\x12\\n\" +\n\t\"value_typeR\\x05value\\x12:\\n\" +\n\t\"\\traw_value\\x18\\x03 \\x01(\\fB\\x1d\\xfaB\\bz\\x06\\x10\\x00\\x18\\x80\\x80\\x01\\xf2\\x98\\xfe\\x8f\\x05\\f\\x12\\n\" +\n\t\"value_typeR\\brawValue:$\\x9aň\\x1e\\x1f\\n\" +\n\t\"\\x1denvoy.api.v2.core.HeaderValue\\\"\\xd9\\x03\\n\" +\n\t\"\\x11HeaderValueOption\\x12C\\n\" +\n\t\"\\x06header\\x18\\x01 \\x01(\\v2!.envoy.config.core.v3.HeaderValueB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\x06header\\x12?\\n\" +\n\t\"\\x06append\\x18\\x02 \\x01(\\v2\\x1a.google.protobuf.BoolValueB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x06append\\x12i\\n\" +\n\t\"\\rappend_action\\x18\\x03 \\x01(\\x0e2:.envoy.config.core.v3.HeaderValueOption.HeaderAppendActionB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\fappendAction\\x12(\\n\" +\n\t\"\\x10keep_empty_value\\x18\\x04 \\x01(\\bR\\x0ekeepEmptyValue\\\"}\\n\" +\n\t\"\\x12HeaderAppendAction\\x12\\x1b\\n\" +\n\t\"\\x17APPEND_IF_EXISTS_OR_ADD\\x10\\x00\\x12\\x11\\n\" +\n\t\"\\rADD_IF_ABSENT\\x10\\x01\\x12\\x1e\\n\" +\n\t\"\\x1aOVERWRITE_IF_EXISTS_OR_ADD\\x10\\x02\\x12\\x17\\n\" +\n\t\"\\x13OVERWRITE_IF_EXISTS\\x10\\x03:*\\x9aň\\x1e%\\n\" +\n\t\"#envoy.api.v2.core.HeaderValueOption\\\"l\\n\" +\n\t\"\\tHeaderMap\\x12;\\n\" +\n\t\"\\aheaders\\x18\\x01 \\x03(\\v2!.envoy.config.core.v3.HeaderValueR\\aheaders:\\\"\\x9aň\\x1e\\x1d\\n\" +\n\t\"\\x1benvoy.api.v2.core.HeaderMap\\\"/\\n\" +\n\t\"\\x10WatchedDirectory\\x12\\x1b\\n\" +\n\t\"\\x04path\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04path\\\"\\xc9\\x02\\n\" +\n\t\"\\n\" +\n\t\"DataSource\\x12%\\n\" +\n\t\"\\bfilename\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01H\\x00R\\bfilename\\x12#\\n\" +\n\t\"\\finline_bytes\\x18\\x02 \\x01(\\fH\\x00R\\vinlineBytes\\x12%\\n\" +\n\t\"\\rinline_string\\x18\\x03 \\x01(\\tH\\x00R\\finlineString\\x12<\\n\" +\n\t\"\\x14environment_variable\\x18\\x04 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01H\\x00R\\x13environmentVariable\\x12S\\n\" +\n\t\"\\x11watched_directory\\x18\\x05 \\x01(\\v2&.envoy.config.core.v3.WatchedDirectoryR\\x10watchedDirectory:#\\x9aň\\x1e\\x1e\\n\" +\n\t\"\\x1cenvoy.api.v2.core.DataSourceB\\x10\\n\" +\n\t\"\\tspecifier\\x12\\x03\\xf8B\\x01\\\"\\xee\\x05\\n\" +\n\t\"\\vRetryPolicy\\x12K\\n\" +\n\t\"\\x0eretry_back_off\\x18\\x01 \\x01(\\v2%.envoy.config.core.v3.BackoffStrategyR\\fretryBackOff\\x12R\\n\" +\n\t\"\\vnum_retries\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\x13\\xf2\\x98\\xfe\\x8f\\x05\\r\\n\" +\n\t\"\\vmax_retriesR\\n\" +\n\t\"numRetries\\x12\\x19\\n\" +\n\t\"\\bretry_on\\x18\\x03 \\x01(\\tR\\aretryOn\\x12V\\n\" +\n\t\"\\x0eretry_priority\\x18\\x04 \\x01(\\v2/.envoy.config.core.v3.RetryPolicy.RetryPriorityR\\rretryPriority\\x12f\\n\" +\n\t\"\\x14retry_host_predicate\\x18\\x05 \\x03(\\v24.envoy.config.core.v3.RetryPolicy.RetryHostPredicateR\\x12retryHostPredicate\\x12H\\n\" +\n\t\"!host_selection_retry_max_attempts\\x18\\x06 \\x01(\\x03R\\x1dhostSelectionRetryMaxAttempts\\x1av\\n\" +\n\t\"\\rRetryPriority\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x129\\n\" +\n\t\"\\ftyped_config\\x18\\x02 \\x01(\\v2\\x14.google.protobuf.AnyH\\x00R\\vtypedConfigB\\r\\n\" +\n\t\"\\vconfig_type\\x1a{\\n\" +\n\t\"\\x12RetryHostPredicate\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x129\\n\" +\n\t\"\\ftyped_config\\x18\\x02 \\x01(\\v2\\x14.google.protobuf.AnyH\\x00R\\vtypedConfigB\\r\\n\" +\n\t\"\\vconfig_type:$\\x9aň\\x1e\\x1f\\n\" +\n\t\"\\x1denvoy.api.v2.core.RetryPolicy\\\"\\xe8\\x01\\n\" +\n\t\"\\x10RemoteDataSource\\x12B\\n\" +\n\t\"\\bhttp_uri\\x18\\x01 \\x01(\\v2\\x1d.envoy.config.core.v3.HttpUriB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\ahttpUri\\x12\\x1f\\n\" +\n\t\"\\x06sha256\\x18\\x02 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x06sha256\\x12D\\n\" +\n\t\"\\fretry_policy\\x18\\x03 \\x01(\\v2!.envoy.config.core.v3.RetryPolicyR\\vretryPolicy:)\\x9aň\\x1e$\\n\" +\n\t\"\\\"envoy.api.v2.core.RemoteDataSource\\\"\\xc9\\x01\\n\" +\n\t\"\\x0fAsyncDataSource\\x128\\n\" +\n\t\"\\x05local\\x18\\x01 \\x01(\\v2 .envoy.config.core.v3.DataSourceH\\x00R\\x05local\\x12@\\n\" +\n\t\"\\x06remote\\x18\\x02 \\x01(\\v2&.envoy.config.core.v3.RemoteDataSourceH\\x00R\\x06remote:(\\x9aň\\x1e#\\n\" +\n\t\"!envoy.api.v2.core.AsyncDataSourceB\\x10\\n\" +\n\t\"\\tspecifier\\x12\\x03\\xf8B\\x01\\\"\\xb0\\x01\\n\" +\n\t\"\\x0fTransportSocket\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x129\\n\" +\n\t\"\\ftyped_config\\x18\\x03 \\x01(\\v2\\x14.google.protobuf.AnyH\\x00R\\vtypedConfig:(\\x9aň\\x1e#\\n\" +\n\t\"!envoy.api.v2.core.TransportSocketB\\r\\n\" +\n\t\"\\vconfig_typeJ\\x04\\b\\x02\\x10\\x03R\\x06config\\\"\\xbf\\x01\\n\" +\n\t\"\\x18RuntimeFractionalPercent\\x12O\\n\" +\n\t\"\\rdefault_value\\x18\\x01 \\x01(\\v2 .envoy.type.v3.FractionalPercentB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\fdefaultValue\\x12\\x1f\\n\" +\n\t\"\\vruntime_key\\x18\\x02 \\x01(\\tR\\n\" +\n\t\"runtimeKey:1\\x9aň\\x1e,\\n\" +\n\t\"*envoy.api.v2.core.RuntimeFractionalPercent\\\"U\\n\" +\n\t\"\\fControlPlane\\x12\\x1e\\n\" +\n\t\"\\n\" +\n\t\"identifier\\x18\\x01 \\x01(\\tR\\n\" +\n\t\"identifier:%\\x9aň\\x1e \\n\" +\n\t\"\\x1eenvoy.api.v2.core.ControlPlane*(\\n\" +\n\t\"\\x0fRoutingPriority\\x12\\v\\n\" +\n\t\"\\aDEFAULT\\x10\\x00\\x12\\b\\n\" +\n\t\"\\x04HIGH\\x10\\x01*\\x89\\x01\\n\" +\n\t\"\\rRequestMethod\\x12\\x16\\n\" +\n\t\"\\x12METHOD_UNSPECIFIED\\x10\\x00\\x12\\a\\n\" +\n\t\"\\x03GET\\x10\\x01\\x12\\b\\n\" +\n\t\"\\x04HEAD\\x10\\x02\\x12\\b\\n\" +\n\t\"\\x04POST\\x10\\x03\\x12\\a\\n\" +\n\t\"\\x03PUT\\x10\\x04\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06DELETE\\x10\\x05\\x12\\v\\n\" +\n\t\"\\aCONNECT\\x10\\x06\\x12\\v\\n\" +\n\t\"\\aOPTIONS\\x10\\a\\x12\\t\\n\" +\n\t\"\\x05TRACE\\x10\\b\\x12\\t\\n\" +\n\t\"\\x05PATCH\\x10\\t*>\\n\" +\n\t\"\\x10TrafficDirection\\x12\\x0f\\n\" +\n\t\"\\vUNSPECIFIED\\x10\\x00\\x12\\v\\n\" +\n\t\"\\aINBOUND\\x10\\x01\\x12\\f\\n\" +\n\t\"\\bOUTBOUND\\x10\\x02B}\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\tBaseProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_base_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_base_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_base_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_base_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_base_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_base_proto_rawDesc), len(file_envoy_config_core_v3_base_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_base_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_base_proto_enumTypes = make([]protoimpl.EnumInfo, 5)\nvar file_envoy_config_core_v3_base_proto_msgTypes = make([]protoimpl.MessageInfo, 30)\nvar file_envoy_config_core_v3_base_proto_goTypes = []any{\n\t(RoutingPriority)(0),                      // 0: envoy.config.core.v3.RoutingPriority\n\t(RequestMethod)(0),                        // 1: envoy.config.core.v3.RequestMethod\n\t(TrafficDirection)(0),                     // 2: envoy.config.core.v3.TrafficDirection\n\t(KeyValueAppend_KeyValueAppendAction)(0),  // 3: envoy.config.core.v3.KeyValueAppend.KeyValueAppendAction\n\t(HeaderValueOption_HeaderAppendAction)(0), // 4: envoy.config.core.v3.HeaderValueOption.HeaderAppendAction\n\t(*Locality)(nil),                          // 5: envoy.config.core.v3.Locality\n\t(*BuildVersion)(nil),                      // 6: envoy.config.core.v3.BuildVersion\n\t(*Extension)(nil),                         // 7: envoy.config.core.v3.Extension\n\t(*Node)(nil),                              // 8: envoy.config.core.v3.Node\n\t(*Metadata)(nil),                          // 9: envoy.config.core.v3.Metadata\n\t(*RuntimeUInt32)(nil),                     // 10: envoy.config.core.v3.RuntimeUInt32\n\t(*RuntimePercent)(nil),                    // 11: envoy.config.core.v3.RuntimePercent\n\t(*RuntimeDouble)(nil),                     // 12: envoy.config.core.v3.RuntimeDouble\n\t(*RuntimeFeatureFlag)(nil),                // 13: envoy.config.core.v3.RuntimeFeatureFlag\n\t(*KeyValue)(nil),                          // 14: envoy.config.core.v3.KeyValue\n\t(*KeyValuePair)(nil),                      // 15: envoy.config.core.v3.KeyValuePair\n\t(*KeyValueAppend)(nil),                    // 16: envoy.config.core.v3.KeyValueAppend\n\t(*KeyValueMutation)(nil),                  // 17: envoy.config.core.v3.KeyValueMutation\n\t(*QueryParameter)(nil),                    // 18: envoy.config.core.v3.QueryParameter\n\t(*HeaderValue)(nil),                       // 19: envoy.config.core.v3.HeaderValue\n\t(*HeaderValueOption)(nil),                 // 20: envoy.config.core.v3.HeaderValueOption\n\t(*HeaderMap)(nil),                         // 21: envoy.config.core.v3.HeaderMap\n\t(*WatchedDirectory)(nil),                  // 22: envoy.config.core.v3.WatchedDirectory\n\t(*DataSource)(nil),                        // 23: envoy.config.core.v3.DataSource\n\t(*RetryPolicy)(nil),                       // 24: envoy.config.core.v3.RetryPolicy\n\t(*RemoteDataSource)(nil),                  // 25: envoy.config.core.v3.RemoteDataSource\n\t(*AsyncDataSource)(nil),                   // 26: envoy.config.core.v3.AsyncDataSource\n\t(*TransportSocket)(nil),                   // 27: envoy.config.core.v3.TransportSocket\n\t(*RuntimeFractionalPercent)(nil),          // 28: envoy.config.core.v3.RuntimeFractionalPercent\n\t(*ControlPlane)(nil),                      // 29: envoy.config.core.v3.ControlPlane\n\tnil,                                       // 30: envoy.config.core.v3.Node.DynamicParametersEntry\n\tnil,                                       // 31: envoy.config.core.v3.Metadata.FilterMetadataEntry\n\tnil,                                       // 32: envoy.config.core.v3.Metadata.TypedFilterMetadataEntry\n\t(*RetryPolicy_RetryPriority)(nil),         // 33: envoy.config.core.v3.RetryPolicy.RetryPriority\n\t(*RetryPolicy_RetryHostPredicate)(nil),    // 34: envoy.config.core.v3.RetryPolicy.RetryHostPredicate\n\t(*v3.SemanticVersion)(nil),                // 35: envoy.type.v3.SemanticVersion\n\t(*structpb.Struct)(nil),                   // 36: google.protobuf.Struct\n\t(*Address)(nil),                           // 37: envoy.config.core.v3.Address\n\t(*v3.Percent)(nil),                        // 38: envoy.type.v3.Percent\n\t(*wrapperspb.BoolValue)(nil),              // 39: google.protobuf.BoolValue\n\t(*structpb.Value)(nil),                    // 40: google.protobuf.Value\n\t(*BackoffStrategy)(nil),                   // 41: envoy.config.core.v3.BackoffStrategy\n\t(*wrapperspb.UInt32Value)(nil),            // 42: google.protobuf.UInt32Value\n\t(*HttpUri)(nil),                           // 43: envoy.config.core.v3.HttpUri\n\t(*anypb.Any)(nil),                         // 44: google.protobuf.Any\n\t(*v3.FractionalPercent)(nil),              // 45: envoy.type.v3.FractionalPercent\n\t(*v31.ContextParams)(nil),                 // 46: xds.core.v3.ContextParams\n}\nvar file_envoy_config_core_v3_base_proto_depIdxs = []int32{\n\t35, // 0: envoy.config.core.v3.BuildVersion.version:type_name -> envoy.type.v3.SemanticVersion\n\t36, // 1: envoy.config.core.v3.BuildVersion.metadata:type_name -> google.protobuf.Struct\n\t6,  // 2: envoy.config.core.v3.Extension.version:type_name -> envoy.config.core.v3.BuildVersion\n\t36, // 3: envoy.config.core.v3.Node.metadata:type_name -> google.protobuf.Struct\n\t30, // 4: envoy.config.core.v3.Node.dynamic_parameters:type_name -> envoy.config.core.v3.Node.DynamicParametersEntry\n\t5,  // 5: envoy.config.core.v3.Node.locality:type_name -> envoy.config.core.v3.Locality\n\t6,  // 6: envoy.config.core.v3.Node.user_agent_build_version:type_name -> envoy.config.core.v3.BuildVersion\n\t7,  // 7: envoy.config.core.v3.Node.extensions:type_name -> envoy.config.core.v3.Extension\n\t37, // 8: envoy.config.core.v3.Node.listening_addresses:type_name -> envoy.config.core.v3.Address\n\t31, // 9: envoy.config.core.v3.Metadata.filter_metadata:type_name -> envoy.config.core.v3.Metadata.FilterMetadataEntry\n\t32, // 10: envoy.config.core.v3.Metadata.typed_filter_metadata:type_name -> envoy.config.core.v3.Metadata.TypedFilterMetadataEntry\n\t38, // 11: envoy.config.core.v3.RuntimePercent.default_value:type_name -> envoy.type.v3.Percent\n\t39, // 12: envoy.config.core.v3.RuntimeFeatureFlag.default_value:type_name -> google.protobuf.BoolValue\n\t40, // 13: envoy.config.core.v3.KeyValuePair.value:type_name -> google.protobuf.Value\n\t15, // 14: envoy.config.core.v3.KeyValueAppend.record:type_name -> envoy.config.core.v3.KeyValuePair\n\t14, // 15: envoy.config.core.v3.KeyValueAppend.entry:type_name -> envoy.config.core.v3.KeyValue\n\t3,  // 16: envoy.config.core.v3.KeyValueAppend.action:type_name -> envoy.config.core.v3.KeyValueAppend.KeyValueAppendAction\n\t16, // 17: envoy.config.core.v3.KeyValueMutation.append:type_name -> envoy.config.core.v3.KeyValueAppend\n\t19, // 18: envoy.config.core.v3.HeaderValueOption.header:type_name -> envoy.config.core.v3.HeaderValue\n\t39, // 19: envoy.config.core.v3.HeaderValueOption.append:type_name -> google.protobuf.BoolValue\n\t4,  // 20: envoy.config.core.v3.HeaderValueOption.append_action:type_name -> envoy.config.core.v3.HeaderValueOption.HeaderAppendAction\n\t19, // 21: envoy.config.core.v3.HeaderMap.headers:type_name -> envoy.config.core.v3.HeaderValue\n\t22, // 22: envoy.config.core.v3.DataSource.watched_directory:type_name -> envoy.config.core.v3.WatchedDirectory\n\t41, // 23: envoy.config.core.v3.RetryPolicy.retry_back_off:type_name -> envoy.config.core.v3.BackoffStrategy\n\t42, // 24: envoy.config.core.v3.RetryPolicy.num_retries:type_name -> google.protobuf.UInt32Value\n\t33, // 25: envoy.config.core.v3.RetryPolicy.retry_priority:type_name -> envoy.config.core.v3.RetryPolicy.RetryPriority\n\t34, // 26: envoy.config.core.v3.RetryPolicy.retry_host_predicate:type_name -> envoy.config.core.v3.RetryPolicy.RetryHostPredicate\n\t43, // 27: envoy.config.core.v3.RemoteDataSource.http_uri:type_name -> envoy.config.core.v3.HttpUri\n\t24, // 28: envoy.config.core.v3.RemoteDataSource.retry_policy:type_name -> envoy.config.core.v3.RetryPolicy\n\t23, // 29: envoy.config.core.v3.AsyncDataSource.local:type_name -> envoy.config.core.v3.DataSource\n\t25, // 30: envoy.config.core.v3.AsyncDataSource.remote:type_name -> envoy.config.core.v3.RemoteDataSource\n\t44, // 31: envoy.config.core.v3.TransportSocket.typed_config:type_name -> google.protobuf.Any\n\t45, // 32: envoy.config.core.v3.RuntimeFractionalPercent.default_value:type_name -> envoy.type.v3.FractionalPercent\n\t46, // 33: envoy.config.core.v3.Node.DynamicParametersEntry.value:type_name -> xds.core.v3.ContextParams\n\t36, // 34: envoy.config.core.v3.Metadata.FilterMetadataEntry.value:type_name -> google.protobuf.Struct\n\t44, // 35: envoy.config.core.v3.Metadata.TypedFilterMetadataEntry.value:type_name -> google.protobuf.Any\n\t44, // 36: envoy.config.core.v3.RetryPolicy.RetryPriority.typed_config:type_name -> google.protobuf.Any\n\t44, // 37: envoy.config.core.v3.RetryPolicy.RetryHostPredicate.typed_config:type_name -> google.protobuf.Any\n\t38, // [38:38] is the sub-list for method output_type\n\t38, // [38:38] is the sub-list for method input_type\n\t38, // [38:38] is the sub-list for extension type_name\n\t38, // [38:38] is the sub-list for extension extendee\n\t0,  // [0:38] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_base_proto_init() }\nfunc file_envoy_config_core_v3_base_proto_init() {\n\tif File_envoy_config_core_v3_base_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_core_v3_address_proto_init()\n\tfile_envoy_config_core_v3_backoff_proto_init()\n\tfile_envoy_config_core_v3_http_uri_proto_init()\n\tfile_envoy_config_core_v3_base_proto_msgTypes[3].OneofWrappers = []any{\n\t\t(*Node_UserAgentVersion)(nil),\n\t\t(*Node_UserAgentBuildVersion)(nil),\n\t}\n\tfile_envoy_config_core_v3_base_proto_msgTypes[18].OneofWrappers = []any{\n\t\t(*DataSource_Filename)(nil),\n\t\t(*DataSource_InlineBytes)(nil),\n\t\t(*DataSource_InlineString)(nil),\n\t\t(*DataSource_EnvironmentVariable)(nil),\n\t}\n\tfile_envoy_config_core_v3_base_proto_msgTypes[21].OneofWrappers = []any{\n\t\t(*AsyncDataSource_Local)(nil),\n\t\t(*AsyncDataSource_Remote)(nil),\n\t}\n\tfile_envoy_config_core_v3_base_proto_msgTypes[22].OneofWrappers = []any{\n\t\t(*TransportSocket_TypedConfig)(nil),\n\t}\n\tfile_envoy_config_core_v3_base_proto_msgTypes[28].OneofWrappers = []any{\n\t\t(*RetryPolicy_RetryPriority_TypedConfig)(nil),\n\t}\n\tfile_envoy_config_core_v3_base_proto_msgTypes[29].OneofWrappers = []any{\n\t\t(*RetryPolicy_RetryHostPredicate_TypedConfig)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_base_proto_rawDesc), len(file_envoy_config_core_v3_base_proto_rawDesc)),\n\t\t\tNumEnums:      5,\n\t\t\tNumMessages:   30,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_base_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_base_proto_depIdxs,\n\t\tEnumInfos:         file_envoy_config_core_v3_base_proto_enumTypes,\n\t\tMessageInfos:      file_envoy_config_core_v3_base_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_base_proto = out.File\n\tfile_envoy_config_core_v3_base_proto_goTypes = nil\n\tfile_envoy_config_core_v3_base_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/base.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/base.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on Locality with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Locality) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Locality with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in LocalityMultiError, or nil\n// if none found.\nfunc (m *Locality) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Locality) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Region\n\n\t// no validation rules for Zone\n\n\t// no validation rules for SubZone\n\n\tif len(errors) > 0 {\n\t\treturn LocalityMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// LocalityMultiError is an error wrapping multiple validation errors returned\n// by Locality.ValidateAll() if the designated constraints aren't met.\ntype LocalityMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m LocalityMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m LocalityMultiError) AllErrors() []error { return m }\n\n// LocalityValidationError is the validation error returned by\n// Locality.Validate if the designated constraints aren't met.\ntype LocalityValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e LocalityValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e LocalityValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e LocalityValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e LocalityValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e LocalityValidationError) ErrorName() string { return \"LocalityValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e LocalityValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sLocality.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = LocalityValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = LocalityValidationError{}\n\n// Validate checks the field values on BuildVersion with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *BuildVersion) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on BuildVersion with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in BuildVersionMultiError, or\n// nil if none found.\nfunc (m *BuildVersion) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *BuildVersion) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetVersion()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, BuildVersionValidationError{\n\t\t\t\t\tfield:  \"Version\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, BuildVersionValidationError{\n\t\t\t\t\tfield:  \"Version\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetVersion()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn BuildVersionValidationError{\n\t\t\t\tfield:  \"Version\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMetadata()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, BuildVersionValidationError{\n\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, BuildVersionValidationError{\n\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMetadata()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn BuildVersionValidationError{\n\t\t\t\tfield:  \"Metadata\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn BuildVersionMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// BuildVersionMultiError is an error wrapping multiple validation errors\n// returned by BuildVersion.ValidateAll() if the designated constraints aren't met.\ntype BuildVersionMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m BuildVersionMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m BuildVersionMultiError) AllErrors() []error { return m }\n\n// BuildVersionValidationError is the validation error returned by\n// BuildVersion.Validate if the designated constraints aren't met.\ntype BuildVersionValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e BuildVersionValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e BuildVersionValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e BuildVersionValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e BuildVersionValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e BuildVersionValidationError) ErrorName() string { return \"BuildVersionValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e BuildVersionValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sBuildVersion.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = BuildVersionValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = BuildVersionValidationError{}\n\n// Validate checks the field values on Extension with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Extension) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Extension with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in ExtensionMultiError, or nil\n// if none found.\nfunc (m *Extension) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Extension) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Name\n\n\t// no validation rules for Category\n\n\t// no validation rules for TypeDescriptor\n\n\tif all {\n\t\tswitch v := interface{}(m.GetVersion()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ExtensionValidationError{\n\t\t\t\t\tfield:  \"Version\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ExtensionValidationError{\n\t\t\t\t\tfield:  \"Version\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetVersion()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ExtensionValidationError{\n\t\t\t\tfield:  \"Version\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for Disabled\n\n\tif len(errors) > 0 {\n\t\treturn ExtensionMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ExtensionMultiError is an error wrapping multiple validation errors returned\n// by Extension.ValidateAll() if the designated constraints aren't met.\ntype ExtensionMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ExtensionMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ExtensionMultiError) AllErrors() []error { return m }\n\n// ExtensionValidationError is the validation error returned by\n// Extension.Validate if the designated constraints aren't met.\ntype ExtensionValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ExtensionValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ExtensionValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ExtensionValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ExtensionValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ExtensionValidationError) ErrorName() string { return \"ExtensionValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e ExtensionValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sExtension.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ExtensionValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ExtensionValidationError{}\n\n// Validate checks the field values on Node with the rules defined in the proto\n// definition for this message. If any rules are violated, the first error\n// encountered is returned, or nil if there are no violations.\nfunc (m *Node) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Node with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in NodeMultiError, or nil if none found.\nfunc (m *Node) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Node) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Id\n\n\t// no validation rules for Cluster\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMetadata()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, NodeValidationError{\n\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, NodeValidationError{\n\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMetadata()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn NodeValidationError{\n\t\t\t\tfield:  \"Metadata\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t{\n\t\tsorted_keys := make([]string, len(m.GetDynamicParameters()))\n\t\ti := 0\n\t\tfor key := range m.GetDynamicParameters() {\n\t\t\tsorted_keys[i] = key\n\t\t\ti++\n\t\t}\n\t\tsort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] })\n\t\tfor _, key := range sorted_keys {\n\t\t\tval := m.GetDynamicParameters()[key]\n\t\t\t_ = val\n\n\t\t\t// no validation rules for DynamicParameters[key]\n\n\t\t\tif all {\n\t\t\t\tswitch v := interface{}(val).(type) {\n\t\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\t\terrors = append(errors, NodeValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"DynamicParameters[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\tcase interface{ Validate() error }:\n\t\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\t\terrors = append(errors, NodeValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"DynamicParameters[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if v, ok := interface{}(val).(interface{ Validate() error }); ok {\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\treturn NodeValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"DynamicParameters[%v]\", key),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetLocality()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, NodeValidationError{\n\t\t\t\t\tfield:  \"Locality\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, NodeValidationError{\n\t\t\t\t\tfield:  \"Locality\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetLocality()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn NodeValidationError{\n\t\t\t\tfield:  \"Locality\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for UserAgentName\n\n\tfor idx, item := range m.GetExtensions() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, NodeValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Extensions[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, NodeValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Extensions[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn NodeValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Extensions[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetListeningAddresses() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, NodeValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ListeningAddresses[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, NodeValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ListeningAddresses[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn NodeValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ListeningAddresses[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tswitch v := m.UserAgentVersionType.(type) {\n\tcase *Node_UserAgentVersion:\n\t\tif v == nil {\n\t\t\terr := NodeValidationError{\n\t\t\t\tfield:  \"UserAgentVersionType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\t// no validation rules for UserAgentVersion\n\tcase *Node_UserAgentBuildVersion:\n\t\tif v == nil {\n\t\t\terr := NodeValidationError{\n\t\t\t\tfield:  \"UserAgentVersionType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetUserAgentBuildVersion()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, NodeValidationError{\n\t\t\t\t\t\tfield:  \"UserAgentBuildVersion\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, NodeValidationError{\n\t\t\t\t\t\tfield:  \"UserAgentBuildVersion\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetUserAgentBuildVersion()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn NodeValidationError{\n\t\t\t\t\tfield:  \"UserAgentBuildVersion\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn NodeMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// NodeMultiError is an error wrapping multiple validation errors returned by\n// Node.ValidateAll() if the designated constraints aren't met.\ntype NodeMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m NodeMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m NodeMultiError) AllErrors() []error { return m }\n\n// NodeValidationError is the validation error returned by Node.Validate if the\n// designated constraints aren't met.\ntype NodeValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e NodeValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e NodeValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e NodeValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e NodeValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e NodeValidationError) ErrorName() string { return \"NodeValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e NodeValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sNode.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = NodeValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = NodeValidationError{}\n\n// Validate checks the field values on Metadata with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Metadata) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Metadata with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in MetadataMultiError, or nil\n// if none found.\nfunc (m *Metadata) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Metadata) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t{\n\t\tsorted_keys := make([]string, len(m.GetFilterMetadata()))\n\t\ti := 0\n\t\tfor key := range m.GetFilterMetadata() {\n\t\t\tsorted_keys[i] = key\n\t\t\ti++\n\t\t}\n\t\tsort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] })\n\t\tfor _, key := range sorted_keys {\n\t\t\tval := m.GetFilterMetadata()[key]\n\t\t\t_ = val\n\n\t\t\tif utf8.RuneCountInString(key) < 1 {\n\t\t\t\terr := MetadataValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"FilterMetadata[%v]\", key),\n\t\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t\tif all {\n\t\t\t\tswitch v := interface{}(val).(type) {\n\t\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\t\terrors = append(errors, MetadataValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"FilterMetadata[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\tcase interface{ Validate() error }:\n\t\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\t\terrors = append(errors, MetadataValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"FilterMetadata[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if v, ok := interface{}(val).(interface{ Validate() error }); ok {\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\treturn MetadataValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"FilterMetadata[%v]\", key),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\t{\n\t\tsorted_keys := make([]string, len(m.GetTypedFilterMetadata()))\n\t\ti := 0\n\t\tfor key := range m.GetTypedFilterMetadata() {\n\t\t\tsorted_keys[i] = key\n\t\t\ti++\n\t\t}\n\t\tsort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] })\n\t\tfor _, key := range sorted_keys {\n\t\t\tval := m.GetTypedFilterMetadata()[key]\n\t\t\t_ = val\n\n\t\t\tif utf8.RuneCountInString(key) < 1 {\n\t\t\t\terr := MetadataValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"TypedFilterMetadata[%v]\", key),\n\t\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t\tif all {\n\t\t\t\tswitch v := interface{}(val).(type) {\n\t\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\t\terrors = append(errors, MetadataValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedFilterMetadata[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\tcase interface{ Validate() error }:\n\t\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\t\terrors = append(errors, MetadataValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedFilterMetadata[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if v, ok := interface{}(val).(interface{ Validate() error }); ok {\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\treturn MetadataValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedFilterMetadata[%v]\", key),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn MetadataMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// MetadataMultiError is an error wrapping multiple validation errors returned\n// by Metadata.ValidateAll() if the designated constraints aren't met.\ntype MetadataMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m MetadataMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m MetadataMultiError) AllErrors() []error { return m }\n\n// MetadataValidationError is the validation error returned by\n// Metadata.Validate if the designated constraints aren't met.\ntype MetadataValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e MetadataValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e MetadataValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e MetadataValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e MetadataValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e MetadataValidationError) ErrorName() string { return \"MetadataValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e MetadataValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMetadata.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = MetadataValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = MetadataValidationError{}\n\n// Validate checks the field values on RuntimeUInt32 with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *RuntimeUInt32) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RuntimeUInt32 with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in RuntimeUInt32MultiError, or\n// nil if none found.\nfunc (m *RuntimeUInt32) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RuntimeUInt32) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for DefaultValue\n\n\t// no validation rules for RuntimeKey\n\n\tif len(errors) > 0 {\n\t\treturn RuntimeUInt32MultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RuntimeUInt32MultiError is an error wrapping multiple validation errors\n// returned by RuntimeUInt32.ValidateAll() if the designated constraints\n// aren't met.\ntype RuntimeUInt32MultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RuntimeUInt32MultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RuntimeUInt32MultiError) AllErrors() []error { return m }\n\n// RuntimeUInt32ValidationError is the validation error returned by\n// RuntimeUInt32.Validate if the designated constraints aren't met.\ntype RuntimeUInt32ValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RuntimeUInt32ValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RuntimeUInt32ValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RuntimeUInt32ValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RuntimeUInt32ValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RuntimeUInt32ValidationError) ErrorName() string { return \"RuntimeUInt32ValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RuntimeUInt32ValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRuntimeUInt32.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RuntimeUInt32ValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RuntimeUInt32ValidationError{}\n\n// Validate checks the field values on RuntimePercent with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *RuntimePercent) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RuntimePercent with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in RuntimePercentMultiError,\n// or nil if none found.\nfunc (m *RuntimePercent) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RuntimePercent) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetDefaultValue()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RuntimePercentValidationError{\n\t\t\t\t\tfield:  \"DefaultValue\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RuntimePercentValidationError{\n\t\t\t\t\tfield:  \"DefaultValue\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetDefaultValue()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RuntimePercentValidationError{\n\t\t\t\tfield:  \"DefaultValue\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for RuntimeKey\n\n\tif len(errors) > 0 {\n\t\treturn RuntimePercentMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RuntimePercentMultiError is an error wrapping multiple validation errors\n// returned by RuntimePercent.ValidateAll() if the designated constraints\n// aren't met.\ntype RuntimePercentMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RuntimePercentMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RuntimePercentMultiError) AllErrors() []error { return m }\n\n// RuntimePercentValidationError is the validation error returned by\n// RuntimePercent.Validate if the designated constraints aren't met.\ntype RuntimePercentValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RuntimePercentValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RuntimePercentValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RuntimePercentValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RuntimePercentValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RuntimePercentValidationError) ErrorName() string { return \"RuntimePercentValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RuntimePercentValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRuntimePercent.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RuntimePercentValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RuntimePercentValidationError{}\n\n// Validate checks the field values on RuntimeDouble with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *RuntimeDouble) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RuntimeDouble with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in RuntimeDoubleMultiError, or\n// nil if none found.\nfunc (m *RuntimeDouble) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RuntimeDouble) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for DefaultValue\n\n\t// no validation rules for RuntimeKey\n\n\tif len(errors) > 0 {\n\t\treturn RuntimeDoubleMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RuntimeDoubleMultiError is an error wrapping multiple validation errors\n// returned by RuntimeDouble.ValidateAll() if the designated constraints\n// aren't met.\ntype RuntimeDoubleMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RuntimeDoubleMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RuntimeDoubleMultiError) AllErrors() []error { return m }\n\n// RuntimeDoubleValidationError is the validation error returned by\n// RuntimeDouble.Validate if the designated constraints aren't met.\ntype RuntimeDoubleValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RuntimeDoubleValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RuntimeDoubleValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RuntimeDoubleValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RuntimeDoubleValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RuntimeDoubleValidationError) ErrorName() string { return \"RuntimeDoubleValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RuntimeDoubleValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRuntimeDouble.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RuntimeDoubleValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RuntimeDoubleValidationError{}\n\n// Validate checks the field values on RuntimeFeatureFlag with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RuntimeFeatureFlag) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RuntimeFeatureFlag with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RuntimeFeatureFlagMultiError, or nil if none found.\nfunc (m *RuntimeFeatureFlag) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RuntimeFeatureFlag) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetDefaultValue() == nil {\n\t\terr := RuntimeFeatureFlagValidationError{\n\t\t\tfield:  \"DefaultValue\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetDefaultValue()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RuntimeFeatureFlagValidationError{\n\t\t\t\t\tfield:  \"DefaultValue\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RuntimeFeatureFlagValidationError{\n\t\t\t\t\tfield:  \"DefaultValue\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetDefaultValue()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RuntimeFeatureFlagValidationError{\n\t\t\t\tfield:  \"DefaultValue\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for RuntimeKey\n\n\tif len(errors) > 0 {\n\t\treturn RuntimeFeatureFlagMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RuntimeFeatureFlagMultiError is an error wrapping multiple validation errors\n// returned by RuntimeFeatureFlag.ValidateAll() if the designated constraints\n// aren't met.\ntype RuntimeFeatureFlagMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RuntimeFeatureFlagMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RuntimeFeatureFlagMultiError) AllErrors() []error { return m }\n\n// RuntimeFeatureFlagValidationError is the validation error returned by\n// RuntimeFeatureFlag.Validate if the designated constraints aren't met.\ntype RuntimeFeatureFlagValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RuntimeFeatureFlagValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RuntimeFeatureFlagValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RuntimeFeatureFlagValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RuntimeFeatureFlagValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RuntimeFeatureFlagValidationError) ErrorName() string {\n\treturn \"RuntimeFeatureFlagValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RuntimeFeatureFlagValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRuntimeFeatureFlag.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RuntimeFeatureFlagValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RuntimeFeatureFlagValidationError{}\n\n// Validate checks the field values on KeyValue with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *KeyValue) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on KeyValue with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in KeyValueMultiError, or nil\n// if none found.\nfunc (m *KeyValue) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *KeyValue) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetKey()) < 1 {\n\t\terr := KeyValueValidationError{\n\t\t\tfield:  \"Key\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(m.GetKey()) > 16384 {\n\t\terr := KeyValueValidationError{\n\t\t\tfield:  \"Key\",\n\t\t\treason: \"value length must be at most 16384 bytes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for Value\n\n\tif len(errors) > 0 {\n\t\treturn KeyValueMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// KeyValueMultiError is an error wrapping multiple validation errors returned\n// by KeyValue.ValidateAll() if the designated constraints aren't met.\ntype KeyValueMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m KeyValueMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m KeyValueMultiError) AllErrors() []error { return m }\n\n// KeyValueValidationError is the validation error returned by\n// KeyValue.Validate if the designated constraints aren't met.\ntype KeyValueValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e KeyValueValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e KeyValueValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e KeyValueValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e KeyValueValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e KeyValueValidationError) ErrorName() string { return \"KeyValueValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e KeyValueValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sKeyValue.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = KeyValueValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = KeyValueValidationError{}\n\n// Validate checks the field values on KeyValuePair with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *KeyValuePair) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on KeyValuePair with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in KeyValuePairMultiError, or\n// nil if none found.\nfunc (m *KeyValuePair) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *KeyValuePair) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetKey()) < 1 {\n\t\terr := KeyValuePairValidationError{\n\t\t\tfield:  \"Key\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(m.GetKey()) > 16384 {\n\t\terr := KeyValuePairValidationError{\n\t\t\tfield:  \"Key\",\n\t\t\treason: \"value length must be at most 16384 bytes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetValue()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, KeyValuePairValidationError{\n\t\t\t\t\tfield:  \"Value\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, KeyValuePairValidationError{\n\t\t\t\t\tfield:  \"Value\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetValue()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn KeyValuePairValidationError{\n\t\t\t\tfield:  \"Value\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn KeyValuePairMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// KeyValuePairMultiError is an error wrapping multiple validation errors\n// returned by KeyValuePair.ValidateAll() if the designated constraints aren't met.\ntype KeyValuePairMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m KeyValuePairMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m KeyValuePairMultiError) AllErrors() []error { return m }\n\n// KeyValuePairValidationError is the validation error returned by\n// KeyValuePair.Validate if the designated constraints aren't met.\ntype KeyValuePairValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e KeyValuePairValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e KeyValuePairValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e KeyValuePairValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e KeyValuePairValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e KeyValuePairValidationError) ErrorName() string { return \"KeyValuePairValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e KeyValuePairValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sKeyValuePair.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = KeyValuePairValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = KeyValuePairValidationError{}\n\n// Validate checks the field values on KeyValueAppend with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *KeyValueAppend) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on KeyValueAppend with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in KeyValueAppendMultiError,\n// or nil if none found.\nfunc (m *KeyValueAppend) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *KeyValueAppend) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRecord()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, KeyValueAppendValidationError{\n\t\t\t\t\tfield:  \"Record\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, KeyValueAppendValidationError{\n\t\t\t\t\tfield:  \"Record\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRecord()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn KeyValueAppendValidationError{\n\t\t\t\tfield:  \"Record\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// skipping validation for entry\n\n\tif _, ok := KeyValueAppend_KeyValueAppendAction_name[int32(m.GetAction())]; !ok {\n\t\terr := KeyValueAppendValidationError{\n\t\t\tfield:  \"Action\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn KeyValueAppendMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// KeyValueAppendMultiError is an error wrapping multiple validation errors\n// returned by KeyValueAppend.ValidateAll() if the designated constraints\n// aren't met.\ntype KeyValueAppendMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m KeyValueAppendMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m KeyValueAppendMultiError) AllErrors() []error { return m }\n\n// KeyValueAppendValidationError is the validation error returned by\n// KeyValueAppend.Validate if the designated constraints aren't met.\ntype KeyValueAppendValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e KeyValueAppendValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e KeyValueAppendValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e KeyValueAppendValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e KeyValueAppendValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e KeyValueAppendValidationError) ErrorName() string { return \"KeyValueAppendValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e KeyValueAppendValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sKeyValueAppend.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = KeyValueAppendValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = KeyValueAppendValidationError{}\n\n// Validate checks the field values on KeyValueMutation with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *KeyValueMutation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on KeyValueMutation with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// KeyValueMutationMultiError, or nil if none found.\nfunc (m *KeyValueMutation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *KeyValueMutation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetAppend()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, KeyValueMutationValidationError{\n\t\t\t\t\tfield:  \"Append\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, KeyValueMutationValidationError{\n\t\t\t\t\tfield:  \"Append\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetAppend()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn KeyValueMutationValidationError{\n\t\t\t\tfield:  \"Append\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(m.GetRemove()) > 16384 {\n\t\terr := KeyValueMutationValidationError{\n\t\t\tfield:  \"Remove\",\n\t\t\treason: \"value length must be at most 16384 bytes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn KeyValueMutationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// KeyValueMutationMultiError is an error wrapping multiple validation errors\n// returned by KeyValueMutation.ValidateAll() if the designated constraints\n// aren't met.\ntype KeyValueMutationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m KeyValueMutationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m KeyValueMutationMultiError) AllErrors() []error { return m }\n\n// KeyValueMutationValidationError is the validation error returned by\n// KeyValueMutation.Validate if the designated constraints aren't met.\ntype KeyValueMutationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e KeyValueMutationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e KeyValueMutationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e KeyValueMutationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e KeyValueMutationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e KeyValueMutationValidationError) ErrorName() string { return \"KeyValueMutationValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e KeyValueMutationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sKeyValueMutation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = KeyValueMutationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = KeyValueMutationValidationError{}\n\n// Validate checks the field values on QueryParameter with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *QueryParameter) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on QueryParameter with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in QueryParameterMultiError,\n// or nil if none found.\nfunc (m *QueryParameter) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *QueryParameter) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetKey()) < 1 {\n\t\terr := QueryParameterValidationError{\n\t\t\tfield:  \"Key\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for Value\n\n\tif len(errors) > 0 {\n\t\treturn QueryParameterMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// QueryParameterMultiError is an error wrapping multiple validation errors\n// returned by QueryParameter.ValidateAll() if the designated constraints\n// aren't met.\ntype QueryParameterMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m QueryParameterMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m QueryParameterMultiError) AllErrors() []error { return m }\n\n// QueryParameterValidationError is the validation error returned by\n// QueryParameter.Validate if the designated constraints aren't met.\ntype QueryParameterValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e QueryParameterValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e QueryParameterValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e QueryParameterValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e QueryParameterValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e QueryParameterValidationError) ErrorName() string { return \"QueryParameterValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e QueryParameterValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sQueryParameter.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = QueryParameterValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = QueryParameterValidationError{}\n\n// Validate checks the field values on HeaderValue with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *HeaderValue) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HeaderValue with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in HeaderValueMultiError, or\n// nil if none found.\nfunc (m *HeaderValue) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HeaderValue) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetKey()) < 1 {\n\t\terr := HeaderValueValidationError{\n\t\t\tfield:  \"Key\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(m.GetKey()) > 16384 {\n\t\terr := HeaderValueValidationError{\n\t\t\tfield:  \"Key\",\n\t\t\treason: \"value length must be at most 16384 bytes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif !_HeaderValue_Key_Pattern.MatchString(m.GetKey()) {\n\t\terr := HeaderValueValidationError{\n\t\t\tfield:  \"Key\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(m.GetValue()) > 16384 {\n\t\terr := HeaderValueValidationError{\n\t\t\tfield:  \"Value\",\n\t\t\treason: \"value length must be at most 16384 bytes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif !_HeaderValue_Value_Pattern.MatchString(m.GetValue()) {\n\t\terr := HeaderValueValidationError{\n\t\t\tfield:  \"Value\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif l := len(m.GetRawValue()); l < 0 || l > 16384 {\n\t\terr := HeaderValueValidationError{\n\t\t\tfield:  \"RawValue\",\n\t\t\treason: \"value length must be between 0 and 16384 bytes, inclusive\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HeaderValueMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HeaderValueMultiError is an error wrapping multiple validation errors\n// returned by HeaderValue.ValidateAll() if the designated constraints aren't met.\ntype HeaderValueMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HeaderValueMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HeaderValueMultiError) AllErrors() []error { return m }\n\n// HeaderValueValidationError is the validation error returned by\n// HeaderValue.Validate if the designated constraints aren't met.\ntype HeaderValueValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HeaderValueValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HeaderValueValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HeaderValueValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HeaderValueValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HeaderValueValidationError) ErrorName() string { return \"HeaderValueValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e HeaderValueValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHeaderValue.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HeaderValueValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HeaderValueValidationError{}\n\nvar _HeaderValue_Key_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _HeaderValue_Value_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on HeaderValueOption with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *HeaderValueOption) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HeaderValueOption with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HeaderValueOptionMultiError, or nil if none found.\nfunc (m *HeaderValueOption) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HeaderValueOption) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetHeader() == nil {\n\t\terr := HeaderValueOptionValidationError{\n\t\t\tfield:  \"Header\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetHeader()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HeaderValueOptionValidationError{\n\t\t\t\t\tfield:  \"Header\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HeaderValueOptionValidationError{\n\t\t\t\t\tfield:  \"Header\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetHeader()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HeaderValueOptionValidationError{\n\t\t\t\tfield:  \"Header\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetAppend()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HeaderValueOptionValidationError{\n\t\t\t\t\tfield:  \"Append\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HeaderValueOptionValidationError{\n\t\t\t\t\tfield:  \"Append\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetAppend()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HeaderValueOptionValidationError{\n\t\t\t\tfield:  \"Append\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif _, ok := HeaderValueOption_HeaderAppendAction_name[int32(m.GetAppendAction())]; !ok {\n\t\terr := HeaderValueOptionValidationError{\n\t\t\tfield:  \"AppendAction\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for KeepEmptyValue\n\n\tif len(errors) > 0 {\n\t\treturn HeaderValueOptionMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HeaderValueOptionMultiError is an error wrapping multiple validation errors\n// returned by HeaderValueOption.ValidateAll() if the designated constraints\n// aren't met.\ntype HeaderValueOptionMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HeaderValueOptionMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HeaderValueOptionMultiError) AllErrors() []error { return m }\n\n// HeaderValueOptionValidationError is the validation error returned by\n// HeaderValueOption.Validate if the designated constraints aren't met.\ntype HeaderValueOptionValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HeaderValueOptionValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HeaderValueOptionValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HeaderValueOptionValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HeaderValueOptionValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HeaderValueOptionValidationError) ErrorName() string {\n\treturn \"HeaderValueOptionValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HeaderValueOptionValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHeaderValueOption.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HeaderValueOptionValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HeaderValueOptionValidationError{}\n\n// Validate checks the field values on HeaderMap with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *HeaderMap) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HeaderMap with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in HeaderMapMultiError, or nil\n// if none found.\nfunc (m *HeaderMap) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HeaderMap) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetHeaders() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HeaderMapValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HeaderMapValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HeaderMapValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HeaderMapMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HeaderMapMultiError is an error wrapping multiple validation errors returned\n// by HeaderMap.ValidateAll() if the designated constraints aren't met.\ntype HeaderMapMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HeaderMapMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HeaderMapMultiError) AllErrors() []error { return m }\n\n// HeaderMapValidationError is the validation error returned by\n// HeaderMap.Validate if the designated constraints aren't met.\ntype HeaderMapValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HeaderMapValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HeaderMapValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HeaderMapValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HeaderMapValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HeaderMapValidationError) ErrorName() string { return \"HeaderMapValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e HeaderMapValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHeaderMap.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HeaderMapValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HeaderMapValidationError{}\n\n// Validate checks the field values on WatchedDirectory with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *WatchedDirectory) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on WatchedDirectory with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// WatchedDirectoryMultiError, or nil if none found.\nfunc (m *WatchedDirectory) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *WatchedDirectory) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetPath()) < 1 {\n\t\terr := WatchedDirectoryValidationError{\n\t\t\tfield:  \"Path\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn WatchedDirectoryMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// WatchedDirectoryMultiError is an error wrapping multiple validation errors\n// returned by WatchedDirectory.ValidateAll() if the designated constraints\n// aren't met.\ntype WatchedDirectoryMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m WatchedDirectoryMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m WatchedDirectoryMultiError) AllErrors() []error { return m }\n\n// WatchedDirectoryValidationError is the validation error returned by\n// WatchedDirectory.Validate if the designated constraints aren't met.\ntype WatchedDirectoryValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e WatchedDirectoryValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e WatchedDirectoryValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e WatchedDirectoryValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e WatchedDirectoryValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e WatchedDirectoryValidationError) ErrorName() string { return \"WatchedDirectoryValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e WatchedDirectoryValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sWatchedDirectory.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = WatchedDirectoryValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = WatchedDirectoryValidationError{}\n\n// Validate checks the field values on DataSource with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *DataSource) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DataSource with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in DataSourceMultiError, or\n// nil if none found.\nfunc (m *DataSource) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DataSource) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetWatchedDirectory()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, DataSourceValidationError{\n\t\t\t\t\tfield:  \"WatchedDirectory\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, DataSourceValidationError{\n\t\t\t\t\tfield:  \"WatchedDirectory\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetWatchedDirectory()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn DataSourceValidationError{\n\t\t\t\tfield:  \"WatchedDirectory\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\toneofSpecifierPresent := false\n\tswitch v := m.Specifier.(type) {\n\tcase *DataSource_Filename:\n\t\tif v == nil {\n\t\t\terr := DataSourceValidationError{\n\t\t\t\tfield:  \"Specifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofSpecifierPresent = true\n\n\t\tif utf8.RuneCountInString(m.GetFilename()) < 1 {\n\t\t\terr := DataSourceValidationError{\n\t\t\t\tfield:  \"Filename\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *DataSource_InlineBytes:\n\t\tif v == nil {\n\t\t\terr := DataSourceValidationError{\n\t\t\t\tfield:  \"Specifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofSpecifierPresent = true\n\t\t// no validation rules for InlineBytes\n\tcase *DataSource_InlineString:\n\t\tif v == nil {\n\t\t\terr := DataSourceValidationError{\n\t\t\t\tfield:  \"Specifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofSpecifierPresent = true\n\t\t// no validation rules for InlineString\n\tcase *DataSource_EnvironmentVariable:\n\t\tif v == nil {\n\t\t\terr := DataSourceValidationError{\n\t\t\t\tfield:  \"Specifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofSpecifierPresent = true\n\n\t\tif utf8.RuneCountInString(m.GetEnvironmentVariable()) < 1 {\n\t\t\terr := DataSourceValidationError{\n\t\t\t\tfield:  \"EnvironmentVariable\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofSpecifierPresent {\n\t\terr := DataSourceValidationError{\n\t\t\tfield:  \"Specifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn DataSourceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DataSourceMultiError is an error wrapping multiple validation errors\n// returned by DataSource.ValidateAll() if the designated constraints aren't met.\ntype DataSourceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DataSourceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DataSourceMultiError) AllErrors() []error { return m }\n\n// DataSourceValidationError is the validation error returned by\n// DataSource.Validate if the designated constraints aren't met.\ntype DataSourceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DataSourceValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DataSourceValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DataSourceValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DataSourceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DataSourceValidationError) ErrorName() string { return \"DataSourceValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e DataSourceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDataSource.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DataSourceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DataSourceValidationError{}\n\n// Validate checks the field values on RetryPolicy with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *RetryPolicy) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RetryPolicy with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in RetryPolicyMultiError, or\n// nil if none found.\nfunc (m *RetryPolicy) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RetryPolicy) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRetryBackOff()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"RetryBackOff\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"RetryBackOff\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRetryBackOff()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RetryPolicyValidationError{\n\t\t\t\tfield:  \"RetryBackOff\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetNumRetries()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"NumRetries\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"NumRetries\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetNumRetries()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RetryPolicyValidationError{\n\t\t\t\tfield:  \"NumRetries\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for RetryOn\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRetryPriority()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"RetryPriority\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"RetryPriority\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRetryPriority()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RetryPolicyValidationError{\n\t\t\t\tfield:  \"RetryPriority\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetRetryHostPredicate() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RetryHostPredicate[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RetryHostPredicate[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RetryPolicyValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RetryHostPredicate[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// no validation rules for HostSelectionRetryMaxAttempts\n\n\tif len(errors) > 0 {\n\t\treturn RetryPolicyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RetryPolicyMultiError is an error wrapping multiple validation errors\n// returned by RetryPolicy.ValidateAll() if the designated constraints aren't met.\ntype RetryPolicyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RetryPolicyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RetryPolicyMultiError) AllErrors() []error { return m }\n\n// RetryPolicyValidationError is the validation error returned by\n// RetryPolicy.Validate if the designated constraints aren't met.\ntype RetryPolicyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RetryPolicyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RetryPolicyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RetryPolicyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RetryPolicyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RetryPolicyValidationError) ErrorName() string { return \"RetryPolicyValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RetryPolicyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRetryPolicy.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RetryPolicyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RetryPolicyValidationError{}\n\n// Validate checks the field values on RemoteDataSource with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *RemoteDataSource) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RemoteDataSource with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RemoteDataSourceMultiError, or nil if none found.\nfunc (m *RemoteDataSource) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RemoteDataSource) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetHttpUri() == nil {\n\t\terr := RemoteDataSourceValidationError{\n\t\t\tfield:  \"HttpUri\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetHttpUri()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RemoteDataSourceValidationError{\n\t\t\t\t\tfield:  \"HttpUri\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RemoteDataSourceValidationError{\n\t\t\t\t\tfield:  \"HttpUri\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetHttpUri()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RemoteDataSourceValidationError{\n\t\t\t\tfield:  \"HttpUri\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif utf8.RuneCountInString(m.GetSha256()) < 1 {\n\t\terr := RemoteDataSourceValidationError{\n\t\t\tfield:  \"Sha256\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRetryPolicy()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RemoteDataSourceValidationError{\n\t\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RemoteDataSourceValidationError{\n\t\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRetryPolicy()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RemoteDataSourceValidationError{\n\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RemoteDataSourceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RemoteDataSourceMultiError is an error wrapping multiple validation errors\n// returned by RemoteDataSource.ValidateAll() if the designated constraints\n// aren't met.\ntype RemoteDataSourceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RemoteDataSourceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RemoteDataSourceMultiError) AllErrors() []error { return m }\n\n// RemoteDataSourceValidationError is the validation error returned by\n// RemoteDataSource.Validate if the designated constraints aren't met.\ntype RemoteDataSourceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RemoteDataSourceValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RemoteDataSourceValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RemoteDataSourceValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RemoteDataSourceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RemoteDataSourceValidationError) ErrorName() string { return \"RemoteDataSourceValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RemoteDataSourceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRemoteDataSource.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RemoteDataSourceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RemoteDataSourceValidationError{}\n\n// Validate checks the field values on AsyncDataSource with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *AsyncDataSource) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on AsyncDataSource with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// AsyncDataSourceMultiError, or nil if none found.\nfunc (m *AsyncDataSource) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *AsyncDataSource) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofSpecifierPresent := false\n\tswitch v := m.Specifier.(type) {\n\tcase *AsyncDataSource_Local:\n\t\tif v == nil {\n\t\t\terr := AsyncDataSourceValidationError{\n\t\t\t\tfield:  \"Specifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetLocal()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, AsyncDataSourceValidationError{\n\t\t\t\t\t\tfield:  \"Local\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, AsyncDataSourceValidationError{\n\t\t\t\t\t\tfield:  \"Local\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetLocal()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn AsyncDataSourceValidationError{\n\t\t\t\t\tfield:  \"Local\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *AsyncDataSource_Remote:\n\t\tif v == nil {\n\t\t\terr := AsyncDataSourceValidationError{\n\t\t\t\tfield:  \"Specifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetRemote()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, AsyncDataSourceValidationError{\n\t\t\t\t\t\tfield:  \"Remote\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, AsyncDataSourceValidationError{\n\t\t\t\t\t\tfield:  \"Remote\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetRemote()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn AsyncDataSourceValidationError{\n\t\t\t\t\tfield:  \"Remote\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofSpecifierPresent {\n\t\terr := AsyncDataSourceValidationError{\n\t\t\tfield:  \"Specifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn AsyncDataSourceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// AsyncDataSourceMultiError is an error wrapping multiple validation errors\n// returned by AsyncDataSource.ValidateAll() if the designated constraints\n// aren't met.\ntype AsyncDataSourceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m AsyncDataSourceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m AsyncDataSourceMultiError) AllErrors() []error { return m }\n\n// AsyncDataSourceValidationError is the validation error returned by\n// AsyncDataSource.Validate if the designated constraints aren't met.\ntype AsyncDataSourceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e AsyncDataSourceValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e AsyncDataSourceValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e AsyncDataSourceValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e AsyncDataSourceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e AsyncDataSourceValidationError) ErrorName() string { return \"AsyncDataSourceValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e AsyncDataSourceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sAsyncDataSource.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = AsyncDataSourceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = AsyncDataSourceValidationError{}\n\n// Validate checks the field values on TransportSocket with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *TransportSocket) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on TransportSocket with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// TransportSocketMultiError, or nil if none found.\nfunc (m *TransportSocket) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *TransportSocket) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := TransportSocketValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tswitch v := m.ConfigType.(type) {\n\tcase *TransportSocket_TypedConfig:\n\t\tif v == nil {\n\t\t\terr := TransportSocketValidationError{\n\t\t\t\tfield:  \"ConfigType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetTypedConfig()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, TransportSocketValidationError{\n\t\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, TransportSocketValidationError{\n\t\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetTypedConfig()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn TransportSocketValidationError{\n\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn TransportSocketMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// TransportSocketMultiError is an error wrapping multiple validation errors\n// returned by TransportSocket.ValidateAll() if the designated constraints\n// aren't met.\ntype TransportSocketMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m TransportSocketMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m TransportSocketMultiError) AllErrors() []error { return m }\n\n// TransportSocketValidationError is the validation error returned by\n// TransportSocket.Validate if the designated constraints aren't met.\ntype TransportSocketValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e TransportSocketValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e TransportSocketValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e TransportSocketValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e TransportSocketValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e TransportSocketValidationError) ErrorName() string { return \"TransportSocketValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e TransportSocketValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sTransportSocket.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = TransportSocketValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = TransportSocketValidationError{}\n\n// Validate checks the field values on RuntimeFractionalPercent with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RuntimeFractionalPercent) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RuntimeFractionalPercent with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RuntimeFractionalPercentMultiError, or nil if none found.\nfunc (m *RuntimeFractionalPercent) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RuntimeFractionalPercent) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetDefaultValue() == nil {\n\t\terr := RuntimeFractionalPercentValidationError{\n\t\t\tfield:  \"DefaultValue\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetDefaultValue()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RuntimeFractionalPercentValidationError{\n\t\t\t\t\tfield:  \"DefaultValue\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RuntimeFractionalPercentValidationError{\n\t\t\t\t\tfield:  \"DefaultValue\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetDefaultValue()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RuntimeFractionalPercentValidationError{\n\t\t\t\tfield:  \"DefaultValue\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for RuntimeKey\n\n\tif len(errors) > 0 {\n\t\treturn RuntimeFractionalPercentMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RuntimeFractionalPercentMultiError is an error wrapping multiple validation\n// errors returned by RuntimeFractionalPercent.ValidateAll() if the designated\n// constraints aren't met.\ntype RuntimeFractionalPercentMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RuntimeFractionalPercentMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RuntimeFractionalPercentMultiError) AllErrors() []error { return m }\n\n// RuntimeFractionalPercentValidationError is the validation error returned by\n// RuntimeFractionalPercent.Validate if the designated constraints aren't met.\ntype RuntimeFractionalPercentValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RuntimeFractionalPercentValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RuntimeFractionalPercentValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RuntimeFractionalPercentValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RuntimeFractionalPercentValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RuntimeFractionalPercentValidationError) ErrorName() string {\n\treturn \"RuntimeFractionalPercentValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RuntimeFractionalPercentValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRuntimeFractionalPercent.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RuntimeFractionalPercentValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RuntimeFractionalPercentValidationError{}\n\n// Validate checks the field values on ControlPlane with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *ControlPlane) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ControlPlane with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in ControlPlaneMultiError, or\n// nil if none found.\nfunc (m *ControlPlane) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ControlPlane) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Identifier\n\n\tif len(errors) > 0 {\n\t\treturn ControlPlaneMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ControlPlaneMultiError is an error wrapping multiple validation errors\n// returned by ControlPlane.ValidateAll() if the designated constraints aren't met.\ntype ControlPlaneMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ControlPlaneMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ControlPlaneMultiError) AllErrors() []error { return m }\n\n// ControlPlaneValidationError is the validation error returned by\n// ControlPlane.Validate if the designated constraints aren't met.\ntype ControlPlaneValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ControlPlaneValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ControlPlaneValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ControlPlaneValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ControlPlaneValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ControlPlaneValidationError) ErrorName() string { return \"ControlPlaneValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e ControlPlaneValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sControlPlane.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ControlPlaneValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ControlPlaneValidationError{}\n\n// Validate checks the field values on RetryPolicy_RetryPriority with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RetryPolicy_RetryPriority) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RetryPolicy_RetryPriority with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RetryPolicy_RetryPriorityMultiError, or nil if none found.\nfunc (m *RetryPolicy_RetryPriority) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RetryPolicy_RetryPriority) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := RetryPolicy_RetryPriorityValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tswitch v := m.ConfigType.(type) {\n\tcase *RetryPolicy_RetryPriority_TypedConfig:\n\t\tif v == nil {\n\t\t\terr := RetryPolicy_RetryPriorityValidationError{\n\t\t\t\tfield:  \"ConfigType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetTypedConfig()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicy_RetryPriorityValidationError{\n\t\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicy_RetryPriorityValidationError{\n\t\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetTypedConfig()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RetryPolicy_RetryPriorityValidationError{\n\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RetryPolicy_RetryPriorityMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RetryPolicy_RetryPriorityMultiError is an error wrapping multiple validation\n// errors returned by RetryPolicy_RetryPriority.ValidateAll() if the\n// designated constraints aren't met.\ntype RetryPolicy_RetryPriorityMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RetryPolicy_RetryPriorityMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RetryPolicy_RetryPriorityMultiError) AllErrors() []error { return m }\n\n// RetryPolicy_RetryPriorityValidationError is the validation error returned by\n// RetryPolicy_RetryPriority.Validate if the designated constraints aren't met.\ntype RetryPolicy_RetryPriorityValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RetryPolicy_RetryPriorityValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RetryPolicy_RetryPriorityValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RetryPolicy_RetryPriorityValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RetryPolicy_RetryPriorityValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RetryPolicy_RetryPriorityValidationError) ErrorName() string {\n\treturn \"RetryPolicy_RetryPriorityValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RetryPolicy_RetryPriorityValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRetryPolicy_RetryPriority.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RetryPolicy_RetryPriorityValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RetryPolicy_RetryPriorityValidationError{}\n\n// Validate checks the field values on RetryPolicy_RetryHostPredicate with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RetryPolicy_RetryHostPredicate) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RetryPolicy_RetryHostPredicate with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// RetryPolicy_RetryHostPredicateMultiError, or nil if none found.\nfunc (m *RetryPolicy_RetryHostPredicate) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RetryPolicy_RetryHostPredicate) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := RetryPolicy_RetryHostPredicateValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tswitch v := m.ConfigType.(type) {\n\tcase *RetryPolicy_RetryHostPredicate_TypedConfig:\n\t\tif v == nil {\n\t\t\terr := RetryPolicy_RetryHostPredicateValidationError{\n\t\t\t\tfield:  \"ConfigType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetTypedConfig()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicy_RetryHostPredicateValidationError{\n\t\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicy_RetryHostPredicateValidationError{\n\t\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetTypedConfig()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RetryPolicy_RetryHostPredicateValidationError{\n\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RetryPolicy_RetryHostPredicateMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RetryPolicy_RetryHostPredicateMultiError is an error wrapping multiple\n// validation errors returned by RetryPolicy_RetryHostPredicate.ValidateAll()\n// if the designated constraints aren't met.\ntype RetryPolicy_RetryHostPredicateMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RetryPolicy_RetryHostPredicateMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RetryPolicy_RetryHostPredicateMultiError) AllErrors() []error { return m }\n\n// RetryPolicy_RetryHostPredicateValidationError is the validation error\n// returned by RetryPolicy_RetryHostPredicate.Validate if the designated\n// constraints aren't met.\ntype RetryPolicy_RetryHostPredicateValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RetryPolicy_RetryHostPredicateValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RetryPolicy_RetryHostPredicateValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RetryPolicy_RetryHostPredicateValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RetryPolicy_RetryHostPredicateValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RetryPolicy_RetryHostPredicateValidationError) ErrorName() string {\n\treturn \"RetryPolicy_RetryHostPredicateValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RetryPolicy_RetryHostPredicateValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRetryPolicy_RetryHostPredicate.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RetryPolicy_RetryHostPredicateValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RetryPolicy_RetryHostPredicateValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/base_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/base.proto\n\npackage corev3\n\nimport (\n\tbinary \"encoding/binary\"\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tanypb \"github.com/planetscale/vtprotobuf/types/known/anypb\"\n\tstructpb \"github.com/planetscale/vtprotobuf/types/known/structpb\"\n\twrapperspb \"github.com/planetscale/vtprotobuf/types/known/wrapperspb\"\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tmath \"math\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *Locality) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Locality) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Locality) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.SubZone) > 0 {\n\t\ti -= len(m.SubZone)\n\t\tcopy(dAtA[i:], m.SubZone)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SubZone)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Zone) > 0 {\n\t\ti -= len(m.Zone)\n\t\tcopy(dAtA[i:], m.Zone)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Zone)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Region) > 0 {\n\t\ti -= len(m.Region)\n\t\tcopy(dAtA[i:], m.Region)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Region)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *BuildVersion) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *BuildVersion) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *BuildVersion) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Metadata != nil {\n\t\tsize, err := (*structpb.Struct)(m.Metadata).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Version != nil {\n\t\tif vtmsg, ok := interface{}(m.Version).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Version)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Extension) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Extension) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Extension) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.TypeUrls) > 0 {\n\t\tfor iNdEx := len(m.TypeUrls) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.TypeUrls[iNdEx])\n\t\t\tcopy(dAtA[i:], m.TypeUrls[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TypeUrls[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t}\n\tif m.Disabled {\n\t\ti--\n\t\tif m.Disabled {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif m.Version != nil {\n\t\tsize, err := m.Version.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.TypeDescriptor) > 0 {\n\t\ti -= len(m.TypeDescriptor)\n\t\tcopy(dAtA[i:], m.TypeDescriptor)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TypeDescriptor)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Category) > 0 {\n\t\ti -= len(m.Category)\n\t\tcopy(dAtA[i:], m.Category)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Category)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Node) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Node) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Node) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.DynamicParameters) > 0 {\n\t\tfor k := range m.DynamicParameters {\n\t\t\tv := m.DynamicParameters[k]\n\t\t\tbaseI := i\n\t\t\tif vtmsg, ok := interface{}(v).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x62\n\t\t}\n\t}\n\tif len(m.ListeningAddresses) > 0 {\n\t\tfor iNdEx := len(m.ListeningAddresses) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.ListeningAddresses[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x5a\n\t\t}\n\t}\n\tif len(m.ClientFeatures) > 0 {\n\t\tfor iNdEx := len(m.ClientFeatures) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.ClientFeatures[iNdEx])\n\t\t\tcopy(dAtA[i:], m.ClientFeatures[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClientFeatures[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x52\n\t\t}\n\t}\n\tif len(m.Extensions) > 0 {\n\t\tfor iNdEx := len(m.Extensions) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Extensions[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x4a\n\t\t}\n\t}\n\tif msg, ok := m.UserAgentVersionType.(*Node_UserAgentBuildVersion); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.UserAgentVersionType.(*Node_UserAgentVersion); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.UserAgentName) > 0 {\n\t\ti -= len(m.UserAgentName)\n\t\tcopy(dAtA[i:], m.UserAgentName)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.UserAgentName)))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif m.Locality != nil {\n\t\tsize, err := m.Locality.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Metadata != nil {\n\t\tsize, err := (*structpb.Struct)(m.Metadata).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Cluster) > 0 {\n\t\ti -= len(m.Cluster)\n\t\tcopy(dAtA[i:], m.Cluster)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Cluster)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Id) > 0 {\n\t\ti -= len(m.Id)\n\t\tcopy(dAtA[i:], m.Id)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Id)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Node_UserAgentVersion) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Node_UserAgentVersion) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.UserAgentVersion)\n\tcopy(dAtA[i:], m.UserAgentVersion)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.UserAgentVersion)))\n\ti--\n\tdAtA[i] = 0x3a\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Node_UserAgentBuildVersion) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Node_UserAgentBuildVersion) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.UserAgentBuildVersion != nil {\n\t\tsize, err := m.UserAgentBuildVersion.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Metadata) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Metadata) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Metadata) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.TypedFilterMetadata) > 0 {\n\t\tfor k := range m.TypedFilterMetadata {\n\t\t\tv := m.TypedFilterMetadata[k]\n\t\t\tbaseI := i\n\t\t\tsize, err := (*anypb.Any)(v).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.FilterMetadata) > 0 {\n\t\tfor k := range m.FilterMetadata {\n\t\t\tv := m.FilterMetadata[k]\n\t\t\tbaseI := i\n\t\t\tsize, err := (*structpb.Struct)(v).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RuntimeUInt32) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RuntimeUInt32) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RuntimeUInt32) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.RuntimeKey) > 0 {\n\t\ti -= len(m.RuntimeKey)\n\t\tcopy(dAtA[i:], m.RuntimeKey)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RuntimeKey)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.DefaultValue != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.DefaultValue))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RuntimePercent) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RuntimePercent) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RuntimePercent) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.RuntimeKey) > 0 {\n\t\ti -= len(m.RuntimeKey)\n\t\tcopy(dAtA[i:], m.RuntimeKey)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RuntimeKey)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.DefaultValue != nil {\n\t\tif vtmsg, ok := interface{}(m.DefaultValue).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.DefaultValue)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RuntimeDouble) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RuntimeDouble) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RuntimeDouble) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.RuntimeKey) > 0 {\n\t\ti -= len(m.RuntimeKey)\n\t\tcopy(dAtA[i:], m.RuntimeKey)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RuntimeKey)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.DefaultValue != 0 {\n\t\ti -= 8\n\t\tbinary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.DefaultValue))))\n\t\ti--\n\t\tdAtA[i] = 0x9\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RuntimeFeatureFlag) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RuntimeFeatureFlag) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RuntimeFeatureFlag) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.RuntimeKey) > 0 {\n\t\ti -= len(m.RuntimeKey)\n\t\tcopy(dAtA[i:], m.RuntimeKey)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RuntimeKey)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.DefaultValue != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.DefaultValue).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *KeyValue) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *KeyValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *KeyValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *KeyValuePair) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *KeyValuePair) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *KeyValuePair) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Value != nil {\n\t\tsize, err := (*structpb.Value)(m.Value).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *KeyValueAppend) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *KeyValueAppend) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *KeyValueAppend) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Record != nil {\n\t\tsize, err := m.Record.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Action != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Action))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Entry != nil {\n\t\tsize, err := m.Entry.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *KeyValueMutation) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *KeyValueMutation) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *KeyValueMutation) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Remove) > 0 {\n\t\ti -= len(m.Remove)\n\t\tcopy(dAtA[i:], m.Remove)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Remove)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Append != nil {\n\t\tsize, err := m.Append.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryParameter) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryParameter) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *QueryParameter) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HeaderValue) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HeaderValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.RawValue) > 0 {\n\t\ti -= len(m.RawValue)\n\t\tcopy(dAtA[i:], m.RawValue)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RawValue)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HeaderValueOption) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HeaderValueOption) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderValueOption) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.KeepEmptyValue {\n\t\ti--\n\t\tif m.KeepEmptyValue {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.AppendAction != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.AppendAction))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.Append != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.Append).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Header != nil {\n\t\tsize, err := m.Header.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HeaderMap) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HeaderMap) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMap) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Headers) > 0 {\n\t\tfor iNdEx := len(m.Headers) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Headers[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *WatchedDirectory) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *WatchedDirectory) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *WatchedDirectory) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Path) > 0 {\n\t\ti -= len(m.Path)\n\t\tcopy(dAtA[i:], m.Path)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Path)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DataSource) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DataSource) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DataSource) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.WatchedDirectory != nil {\n\t\tsize, err := m.WatchedDirectory.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif msg, ok := m.Specifier.(*DataSource_EnvironmentVariable); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Specifier.(*DataSource_InlineString); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Specifier.(*DataSource_InlineBytes); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Specifier.(*DataSource_Filename); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DataSource_Filename) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DataSource_Filename) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Filename)\n\tcopy(dAtA[i:], m.Filename)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Filename)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *DataSource_InlineBytes) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DataSource_InlineBytes) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.InlineBytes)\n\tcopy(dAtA[i:], m.InlineBytes)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.InlineBytes)))\n\ti--\n\tdAtA[i] = 0x12\n\treturn len(dAtA) - i, nil\n}\nfunc (m *DataSource_InlineString) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DataSource_InlineString) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.InlineString)\n\tcopy(dAtA[i:], m.InlineString)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.InlineString)))\n\ti--\n\tdAtA[i] = 0x1a\n\treturn len(dAtA) - i, nil\n}\nfunc (m *DataSource_EnvironmentVariable) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DataSource_EnvironmentVariable) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.EnvironmentVariable)\n\tcopy(dAtA[i:], m.EnvironmentVariable)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.EnvironmentVariable)))\n\ti--\n\tdAtA[i] = 0x22\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RetryPolicy_RetryPriority) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RetryPolicy_RetryPriority) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RetryPolicy_RetryPriority) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.ConfigType.(*RetryPolicy_RetryPriority_TypedConfig); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RetryPolicy_RetryPriority_TypedConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RetryPolicy_RetryPriority_TypedConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.TypedConfig != nil {\n\t\tsize, err := (*anypb.Any)(m.TypedConfig).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RetryPolicy_RetryHostPredicate) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RetryPolicy_RetryHostPredicate) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RetryPolicy_RetryHostPredicate) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.ConfigType.(*RetryPolicy_RetryHostPredicate_TypedConfig); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RetryPolicy_RetryHostPredicate_TypedConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RetryPolicy_RetryHostPredicate_TypedConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.TypedConfig != nil {\n\t\tsize, err := (*anypb.Any)(m.TypedConfig).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RetryPolicy) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RetryPolicy) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RetryPolicy) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.HostSelectionRetryMaxAttempts != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.HostSelectionRetryMaxAttempts))\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif len(m.RetryHostPredicate) > 0 {\n\t\tfor iNdEx := len(m.RetryHostPredicate) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.RetryHostPredicate[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif m.RetryPriority != nil {\n\t\tsize, err := m.RetryPriority.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.RetryOn) > 0 {\n\t\ti -= len(m.RetryOn)\n\t\tcopy(dAtA[i:], m.RetryOn)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RetryOn)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.NumRetries != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.NumRetries).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.RetryBackOff != nil {\n\t\tsize, err := m.RetryBackOff.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RemoteDataSource) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RemoteDataSource) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RemoteDataSource) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.RetryPolicy != nil {\n\t\tsize, err := m.RetryPolicy.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Sha256) > 0 {\n\t\ti -= len(m.Sha256)\n\t\tcopy(dAtA[i:], m.Sha256)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Sha256)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.HttpUri != nil {\n\t\tsize, err := m.HttpUri.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AsyncDataSource) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AsyncDataSource) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *AsyncDataSource) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.Specifier.(*AsyncDataSource_Remote); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Specifier.(*AsyncDataSource_Local); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AsyncDataSource_Local) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *AsyncDataSource_Local) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Local != nil {\n\t\tsize, err := m.Local.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *AsyncDataSource_Remote) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *AsyncDataSource_Remote) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Remote != nil {\n\t\tsize, err := m.Remote.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *TransportSocket) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *TransportSocket) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *TransportSocket) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.ConfigType.(*TransportSocket_TypedConfig); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *TransportSocket_TypedConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *TransportSocket_TypedConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.TypedConfig != nil {\n\t\tsize, err := (*anypb.Any)(m.TypedConfig).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RuntimeFractionalPercent) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RuntimeFractionalPercent) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RuntimeFractionalPercent) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.RuntimeKey) > 0 {\n\t\ti -= len(m.RuntimeKey)\n\t\tcopy(dAtA[i:], m.RuntimeKey)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RuntimeKey)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.DefaultValue != nil {\n\t\tif vtmsg, ok := interface{}(m.DefaultValue).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.DefaultValue)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ControlPlane) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ControlPlane) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ControlPlane) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Identifier) > 0 {\n\t\ti -= len(m.Identifier)\n\t\tcopy(dAtA[i:], m.Identifier)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Identifier)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Locality) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Region)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Zone)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.SubZone)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *BuildVersion) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Version != nil {\n\t\tif size, ok := interface{}(m.Version).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Version)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Metadata != nil {\n\t\tl = (*structpb.Struct)(m.Metadata).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Extension) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Category)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.TypeDescriptor)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Version != nil {\n\t\tl = m.Version.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Disabled {\n\t\tn += 2\n\t}\n\tif len(m.TypeUrls) > 0 {\n\t\tfor _, s := range m.TypeUrls {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Node) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Id)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Cluster)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Metadata != nil {\n\t\tl = (*structpb.Struct)(m.Metadata).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Locality != nil {\n\t\tl = m.Locality.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.UserAgentName)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.UserAgentVersionType.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif len(m.Extensions) > 0 {\n\t\tfor _, e := range m.Extensions {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.ClientFeatures) > 0 {\n\t\tfor _, s := range m.ClientFeatures {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.ListeningAddresses) > 0 {\n\t\tfor _, e := range m.ListeningAddresses {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.DynamicParameters) > 0 {\n\t\tfor k, v := range m.DynamicParameters {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tl = 0\n\t\t\tif v != nil {\n\t\t\t\tif size, ok := interface{}(v).(interface {\n\t\t\t\t\tSizeVT() int\n\t\t\t\t}); ok {\n\t\t\t\t\tl = size.SizeVT()\n\t\t\t\t} else {\n\t\t\t\t\tl = proto.Size(v)\n\t\t\t\t}\n\t\t\t}\n\t\t\tl += 1 + protohelpers.SizeOfVarint(uint64(l))\n\t\t\tmapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + l\n\t\t\tn += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Node_UserAgentVersion) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.UserAgentVersion)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *Node_UserAgentBuildVersion) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.UserAgentBuildVersion != nil {\n\t\tl = m.UserAgentBuildVersion.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *Metadata) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.FilterMetadata) > 0 {\n\t\tfor k, v := range m.FilterMetadata {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tl = 0\n\t\t\tif v != nil {\n\t\t\t\tl = (*structpb.Struct)(v).SizeVT()\n\t\t\t}\n\t\t\tl += 1 + protohelpers.SizeOfVarint(uint64(l))\n\t\t\tmapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + l\n\t\t\tn += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))\n\t\t}\n\t}\n\tif len(m.TypedFilterMetadata) > 0 {\n\t\tfor k, v := range m.TypedFilterMetadata {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tl = 0\n\t\t\tif v != nil {\n\t\t\t\tl = (*anypb.Any)(v).SizeVT()\n\t\t\t}\n\t\t\tl += 1 + protohelpers.SizeOfVarint(uint64(l))\n\t\t\tmapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + l\n\t\t\tn += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RuntimeUInt32) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.DefaultValue != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.DefaultValue))\n\t}\n\tl = len(m.RuntimeKey)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RuntimePercent) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.DefaultValue != nil {\n\t\tif size, ok := interface{}(m.DefaultValue).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.DefaultValue)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.RuntimeKey)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RuntimeDouble) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.DefaultValue != 0 {\n\t\tn += 9\n\t}\n\tl = len(m.RuntimeKey)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RuntimeFeatureFlag) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.DefaultValue != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.DefaultValue).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.RuntimeKey)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *KeyValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Value)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *KeyValuePair) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Value != nil {\n\t\tl = (*structpb.Value)(m.Value).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *KeyValueAppend) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Entry != nil {\n\t\tl = m.Entry.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Action != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Action))\n\t}\n\tif m.Record != nil {\n\t\tl = m.Record.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *KeyValueMutation) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Append != nil {\n\t\tl = m.Append.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Remove)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *QueryParameter) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Value)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HeaderValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Value)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.RawValue)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HeaderValueOption) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Append != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.Append).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.AppendAction != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.AppendAction))\n\t}\n\tif m.KeepEmptyValue {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HeaderMap) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Headers) > 0 {\n\t\tfor _, e := range m.Headers {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *WatchedDirectory) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Path)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *DataSource) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Specifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.WatchedDirectory != nil {\n\t\tl = m.WatchedDirectory.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *DataSource_Filename) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Filename)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *DataSource_InlineBytes) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.InlineBytes)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *DataSource_InlineString) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.InlineString)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *DataSource_EnvironmentVariable) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.EnvironmentVariable)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *RetryPolicy_RetryPriority) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.ConfigType.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RetryPolicy_RetryPriority_TypedConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.TypedConfig != nil {\n\t\tl = (*anypb.Any)(m.TypedConfig).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RetryPolicy_RetryHostPredicate) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.ConfigType.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RetryPolicy_RetryHostPredicate_TypedConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.TypedConfig != nil {\n\t\tl = (*anypb.Any)(m.TypedConfig).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RetryPolicy) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RetryBackOff != nil {\n\t\tl = m.RetryBackOff.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.NumRetries != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.NumRetries).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.RetryOn)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.RetryPriority != nil {\n\t\tl = m.RetryPriority.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.RetryHostPredicate) > 0 {\n\t\tfor _, e := range m.RetryHostPredicate {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.HostSelectionRetryMaxAttempts != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.HostSelectionRetryMaxAttempts))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RemoteDataSource) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.HttpUri != nil {\n\t\tl = m.HttpUri.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Sha256)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.RetryPolicy != nil {\n\t\tl = m.RetryPolicy.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *AsyncDataSource) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Specifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *AsyncDataSource_Local) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Local != nil {\n\t\tl = m.Local.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *AsyncDataSource_Remote) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Remote != nil {\n\t\tl = m.Remote.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *TransportSocket) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.ConfigType.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *TransportSocket_TypedConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.TypedConfig != nil {\n\t\tl = (*anypb.Any)(m.TypedConfig).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RuntimeFractionalPercent) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.DefaultValue != nil {\n\t\tif size, ok := interface{}(m.DefaultValue).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.DefaultValue)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.RuntimeKey)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ControlPlane) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Identifier)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/cel.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/cel.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// CEL expression evaluation configuration.\n// These options control the behavior of the Common Expression Language runtime for\n// individual CEL expressions.\ntype CelExpressionConfig struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Enable string conversion functions for CEL expressions. When enabled, CEL expressions\n\t// can convert values to strings using the “string()“ function.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis option is disabled by default to avoid unbounded memory allocation.\n\t//\tCEL evaluation cost is typically bounded by the expression size, but converting\n\t//\tarbitrary values (e.g., large messages, lists, or maps) to strings may allocate\n\t//\tmemory proportional to input data size, which can be unbounded and lead to\n\t//\tmemory exhaustion.\n\tEnableStringConversion bool `protobuf:\"varint,1,opt,name=enable_string_conversion,json=enableStringConversion,proto3\" json:\"enable_string_conversion,omitempty\"`\n\t// Enable string concatenation for CEL expressions. When enabled, CEL expressions\n\t// can concatenate strings using the “+“ operator.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis option is disabled by default to avoid unbounded memory allocation.\n\t//\tWhile CEL normally bounds evaluation by expression size, enabling string\n\t//\tconcatenation allows building outputs whose size depends on input data,\n\t//\tpotentially causing large intermediate allocations and memory exhaustion.\n\tEnableStringConcat bool `protobuf:\"varint,2,opt,name=enable_string_concat,json=enableStringConcat,proto3\" json:\"enable_string_concat,omitempty\"`\n\t// Enable string manipulation functions for CEL expressions. When enabled, CEL\n\t// expressions can use additional string functions:\n\t//\n\t// * “replace(old, new)“ - Replaces all occurrences of “old“ with “new“.\n\t// * “split(separator)“ - Splits a string into a list of substrings.\n\t// * “lowerAscii()“ - Converts ASCII characters to lowercase.\n\t// * “upperAscii()“ - Converts ASCII characters to uppercase.\n\t//\n\t// .. note::\n\t//\n\t//\tStandard CEL string functions like ``contains()``, ``startsWith()``, and\n\t//\t``endsWith()`` are always available regardless of this setting.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis option is disabled by default to avoid unbounded memory allocation.\n\t//\tAlthough CEL generally bounds evaluation by expression size, functions such as\n\t//\t``replace``, ``split``, ``lowerAscii()``, and ``upperAscii()`` can allocate memory\n\t//\tproportional to input data size. Under adversarial inputs this can lead to\n\t//\tunbounded allocations and memory exhaustion.\n\tEnableStringFunctions bool `protobuf:\"varint,3,opt,name=enable_string_functions,json=enableStringFunctions,proto3\" json:\"enable_string_functions,omitempty\"`\n\tunknownFields         protoimpl.UnknownFields\n\tsizeCache             protoimpl.SizeCache\n}\n\nfunc (x *CelExpressionConfig) Reset() {\n\t*x = CelExpressionConfig{}\n\tmi := &file_envoy_config_core_v3_cel_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CelExpressionConfig) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CelExpressionConfig) ProtoMessage() {}\n\nfunc (x *CelExpressionConfig) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_cel_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CelExpressionConfig.ProtoReflect.Descriptor instead.\nfunc (*CelExpressionConfig) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_cel_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *CelExpressionConfig) GetEnableStringConversion() bool {\n\tif x != nil {\n\t\treturn x.EnableStringConversion\n\t}\n\treturn false\n}\n\nfunc (x *CelExpressionConfig) GetEnableStringConcat() bool {\n\tif x != nil {\n\t\treturn x.EnableStringConcat\n\t}\n\treturn false\n}\n\nfunc (x *CelExpressionConfig) GetEnableStringFunctions() bool {\n\tif x != nil {\n\t\treturn x.EnableStringFunctions\n\t}\n\treturn false\n}\n\nvar File_envoy_config_core_v3_cel_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_cel_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1eenvoy/config/core/v3/cel.proto\\x12\\x14envoy.config.core.v3\\x1a\\x1dudpa/annotations/status.proto\\\"\\xb9\\x01\\n\" +\n\t\"\\x13CelExpressionConfig\\x128\\n\" +\n\t\"\\x18enable_string_conversion\\x18\\x01 \\x01(\\bR\\x16enableStringConversion\\x120\\n\" +\n\t\"\\x14enable_string_concat\\x18\\x02 \\x01(\\bR\\x12enableStringConcat\\x126\\n\" +\n\t\"\\x17enable_string_functions\\x18\\x03 \\x01(\\bR\\x15enableStringFunctionsB|\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\bCelProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_cel_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_cel_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_cel_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_cel_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_cel_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_cel_proto_rawDesc), len(file_envoy_config_core_v3_cel_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_cel_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_cel_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_config_core_v3_cel_proto_goTypes = []any{\n\t(*CelExpressionConfig)(nil), // 0: envoy.config.core.v3.CelExpressionConfig\n}\nvar file_envoy_config_core_v3_cel_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_cel_proto_init() }\nfunc file_envoy_config_core_v3_cel_proto_init() {\n\tif File_envoy_config_core_v3_cel_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_cel_proto_rawDesc), len(file_envoy_config_core_v3_cel_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_cel_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_cel_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_core_v3_cel_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_cel_proto = out.File\n\tfile_envoy_config_core_v3_cel_proto_goTypes = nil\n\tfile_envoy_config_core_v3_cel_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/cel.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/cel.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on CelExpressionConfig with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *CelExpressionConfig) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CelExpressionConfig with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// CelExpressionConfigMultiError, or nil if none found.\nfunc (m *CelExpressionConfig) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CelExpressionConfig) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for EnableStringConversion\n\n\t// no validation rules for EnableStringConcat\n\n\t// no validation rules for EnableStringFunctions\n\n\tif len(errors) > 0 {\n\t\treturn CelExpressionConfigMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CelExpressionConfigMultiError is an error wrapping multiple validation\n// errors returned by CelExpressionConfig.ValidateAll() if the designated\n// constraints aren't met.\ntype CelExpressionConfigMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CelExpressionConfigMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CelExpressionConfigMultiError) AllErrors() []error { return m }\n\n// CelExpressionConfigValidationError is the validation error returned by\n// CelExpressionConfig.Validate if the designated constraints aren't met.\ntype CelExpressionConfigValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CelExpressionConfigValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CelExpressionConfigValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CelExpressionConfigValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CelExpressionConfigValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CelExpressionConfigValidationError) ErrorName() string {\n\treturn \"CelExpressionConfigValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e CelExpressionConfigValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCelExpressionConfig.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CelExpressionConfigValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CelExpressionConfigValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/cel_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/cel.proto\n\npackage corev3\n\nimport (\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *CelExpressionConfig) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CelExpressionConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CelExpressionConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.EnableStringFunctions {\n\t\ti--\n\t\tif m.EnableStringFunctions {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.EnableStringConcat {\n\t\ti--\n\t\tif m.EnableStringConcat {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.EnableStringConversion {\n\t\ti--\n\t\tif m.EnableStringConversion {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CelExpressionConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.EnableStringConversion {\n\t\tn += 2\n\t}\n\tif m.EnableStringConcat {\n\t\tn += 2\n\t}\n\tif m.EnableStringFunctions {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/config_source.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/config_source.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tv3 \"github.com/cncf/xds/go/xds/core/v3\"\n\t_ \"github.com/envoyproxy/go-control-plane/envoy/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// xDS API and non-xDS services version. This is used to describe both resource and transport\n// protocol versions (in distinct configuration fields).\ntype ApiVersion int32\n\nconst (\n\t// When not specified, we assume v3; it is the only supported version.\n\tApiVersion_AUTO ApiVersion = 0\n\t// Use xDS v2 API. This is no longer supported.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/config_source.proto.\n\tApiVersion_V2 ApiVersion = 1\n\t// Use xDS v3 API.\n\tApiVersion_V3 ApiVersion = 2\n)\n\n// Enum value maps for ApiVersion.\nvar (\n\tApiVersion_name = map[int32]string{\n\t\t0: \"AUTO\",\n\t\t1: \"V2\",\n\t\t2: \"V3\",\n\t}\n\tApiVersion_value = map[string]int32{\n\t\t\"AUTO\": 0,\n\t\t\"V2\":   1,\n\t\t\"V3\":   2,\n\t}\n)\n\nfunc (x ApiVersion) Enum() *ApiVersion {\n\tp := new(ApiVersion)\n\t*p = x\n\treturn p\n}\n\nfunc (x ApiVersion) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ApiVersion) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_core_v3_config_source_proto_enumTypes[0].Descriptor()\n}\n\nfunc (ApiVersion) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_core_v3_config_source_proto_enumTypes[0]\n}\n\nfunc (x ApiVersion) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ApiVersion.Descriptor instead.\nfunc (ApiVersion) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_config_source_proto_rawDescGZIP(), []int{0}\n}\n\n// APIs may be fetched via either REST or gRPC.\ntype ApiConfigSource_ApiType int32\n\nconst (\n\t// Ideally this would be 'reserved 0' but one can't reserve the default\n\t// value. Instead we throw an exception if this is ever used.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/config_source.proto.\n\tApiConfigSource_DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE ApiConfigSource_ApiType = 0\n\t// REST-JSON v2 API. The `canonical JSON encoding\n\t// <https://developers.google.com/protocol-buffers/docs/proto3#json>`_ for\n\t// the v2 protos is used.\n\tApiConfigSource_REST ApiConfigSource_ApiType = 1\n\t// SotW gRPC service.\n\tApiConfigSource_GRPC ApiConfigSource_ApiType = 2\n\t// Using the delta xDS gRPC service, i.e. DeltaDiscovery{Request,Response}\n\t// rather than Discovery{Request,Response}. Rather than sending Envoy the entire state\n\t// with every update, the xDS server only sends what has changed since the last update.\n\tApiConfigSource_DELTA_GRPC ApiConfigSource_ApiType = 3\n\t// SotW xDS gRPC with ADS. All resources which resolve to this configuration source will be\n\t// multiplexed on a single connection to an ADS endpoint.\n\t// [#not-implemented-hide:]\n\tApiConfigSource_AGGREGATED_GRPC ApiConfigSource_ApiType = 5\n\t// Delta xDS gRPC with ADS. All resources which resolve to this configuration source will be\n\t// multiplexed on a single connection to an ADS endpoint.\n\t// [#not-implemented-hide:]\n\tApiConfigSource_AGGREGATED_DELTA_GRPC ApiConfigSource_ApiType = 6\n)\n\n// Enum value maps for ApiConfigSource_ApiType.\nvar (\n\tApiConfigSource_ApiType_name = map[int32]string{\n\t\t0: \"DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE\",\n\t\t1: \"REST\",\n\t\t2: \"GRPC\",\n\t\t3: \"DELTA_GRPC\",\n\t\t5: \"AGGREGATED_GRPC\",\n\t\t6: \"AGGREGATED_DELTA_GRPC\",\n\t}\n\tApiConfigSource_ApiType_value = map[string]int32{\n\t\t\"DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE\": 0,\n\t\t\"REST\":                                  1,\n\t\t\"GRPC\":                                  2,\n\t\t\"DELTA_GRPC\":                            3,\n\t\t\"AGGREGATED_GRPC\":                       5,\n\t\t\"AGGREGATED_DELTA_GRPC\":                 6,\n\t}\n)\n\nfunc (x ApiConfigSource_ApiType) Enum() *ApiConfigSource_ApiType {\n\tp := new(ApiConfigSource_ApiType)\n\t*p = x\n\treturn p\n}\n\nfunc (x ApiConfigSource_ApiType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ApiConfigSource_ApiType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_core_v3_config_source_proto_enumTypes[1].Descriptor()\n}\n\nfunc (ApiConfigSource_ApiType) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_core_v3_config_source_proto_enumTypes[1]\n}\n\nfunc (x ApiConfigSource_ApiType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ApiConfigSource_ApiType.Descriptor instead.\nfunc (ApiConfigSource_ApiType) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_config_source_proto_rawDescGZIP(), []int{0, 0}\n}\n\n// API configuration source. This identifies the API type and cluster that Envoy\n// will use to fetch an xDS API.\n// [#next-free-field: 10]\ntype ApiConfigSource struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// API type (gRPC, REST, delta gRPC)\n\tApiType ApiConfigSource_ApiType `protobuf:\"varint,1,opt,name=api_type,json=apiType,proto3,enum=envoy.config.core.v3.ApiConfigSource_ApiType\" json:\"api_type,omitempty\"`\n\t// API version for xDS transport protocol. This describes the xDS gRPC/REST\n\t// endpoint and version of [Delta]DiscoveryRequest/Response used on the wire.\n\tTransportApiVersion ApiVersion `protobuf:\"varint,8,opt,name=transport_api_version,json=transportApiVersion,proto3,enum=envoy.config.core.v3.ApiVersion\" json:\"transport_api_version,omitempty\"`\n\t// Cluster names should be used only with REST. If > 1\n\t// cluster is defined, clusters will be cycled through if any kind of failure\n\t// occurs.\n\t//\n\t// .. note::\n\t//\n\t//\tThe cluster with name ``cluster_name`` must be statically defined and its\n\t//\ttype must not be ``EDS``.\n\tClusterNames []string `protobuf:\"bytes,2,rep,name=cluster_names,json=clusterNames,proto3\" json:\"cluster_names,omitempty\"`\n\t// Multiple gRPC services be provided for GRPC. If > 1 cluster is defined,\n\t// services will be cycled through if any kind of failure occurs.\n\tGrpcServices []*GrpcService `protobuf:\"bytes,4,rep,name=grpc_services,json=grpcServices,proto3\" json:\"grpc_services,omitempty\"`\n\t// For REST APIs, the delay between successive polls.\n\tRefreshDelay *durationpb.Duration `protobuf:\"bytes,3,opt,name=refresh_delay,json=refreshDelay,proto3\" json:\"refresh_delay,omitempty\"`\n\t// For REST APIs, the request timeout. If not set, a default value of 1s will be used.\n\tRequestTimeout *durationpb.Duration `protobuf:\"bytes,5,opt,name=request_timeout,json=requestTimeout,proto3\" json:\"request_timeout,omitempty\"`\n\t// For GRPC APIs, the rate limit settings. If present, discovery requests made by Envoy will be\n\t// rate limited.\n\tRateLimitSettings *RateLimitSettings `protobuf:\"bytes,6,opt,name=rate_limit_settings,json=rateLimitSettings,proto3\" json:\"rate_limit_settings,omitempty\"`\n\t// Skip the node identifier in subsequent discovery requests for streaming gRPC config types.\n\tSetNodeOnFirstMessageOnly bool `protobuf:\"varint,7,opt,name=set_node_on_first_message_only,json=setNodeOnFirstMessageOnly,proto3\" json:\"set_node_on_first_message_only,omitempty\"`\n\t// A list of config validators that will be executed when a new update is\n\t// received from the ApiConfigSource. Note that each validator handles a\n\t// specific xDS service type, and only the validators corresponding to the\n\t// type url (in “:ref: DiscoveryResponse“ or “:ref: DeltaDiscoveryResponse“)\n\t// will be invoked.\n\t// If the validator returns false or throws an exception, the config will be rejected by\n\t// the client, and a NACK will be sent.\n\t// [#extension-category: envoy.config.validators]\n\tConfigValidators []*TypedExtensionConfig `protobuf:\"bytes,9,rep,name=config_validators,json=configValidators,proto3\" json:\"config_validators,omitempty\"`\n\tunknownFields    protoimpl.UnknownFields\n\tsizeCache        protoimpl.SizeCache\n}\n\nfunc (x *ApiConfigSource) Reset() {\n\t*x = ApiConfigSource{}\n\tmi := &file_envoy_config_core_v3_config_source_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ApiConfigSource) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ApiConfigSource) ProtoMessage() {}\n\nfunc (x *ApiConfigSource) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_config_source_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ApiConfigSource.ProtoReflect.Descriptor instead.\nfunc (*ApiConfigSource) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_config_source_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ApiConfigSource) GetApiType() ApiConfigSource_ApiType {\n\tif x != nil {\n\t\treturn x.ApiType\n\t}\n\treturn ApiConfigSource_DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE\n}\n\nfunc (x *ApiConfigSource) GetTransportApiVersion() ApiVersion {\n\tif x != nil {\n\t\treturn x.TransportApiVersion\n\t}\n\treturn ApiVersion_AUTO\n}\n\nfunc (x *ApiConfigSource) GetClusterNames() []string {\n\tif x != nil {\n\t\treturn x.ClusterNames\n\t}\n\treturn nil\n}\n\nfunc (x *ApiConfigSource) GetGrpcServices() []*GrpcService {\n\tif x != nil {\n\t\treturn x.GrpcServices\n\t}\n\treturn nil\n}\n\nfunc (x *ApiConfigSource) GetRefreshDelay() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.RefreshDelay\n\t}\n\treturn nil\n}\n\nfunc (x *ApiConfigSource) GetRequestTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.RequestTimeout\n\t}\n\treturn nil\n}\n\nfunc (x *ApiConfigSource) GetRateLimitSettings() *RateLimitSettings {\n\tif x != nil {\n\t\treturn x.RateLimitSettings\n\t}\n\treturn nil\n}\n\nfunc (x *ApiConfigSource) GetSetNodeOnFirstMessageOnly() bool {\n\tif x != nil {\n\t\treturn x.SetNodeOnFirstMessageOnly\n\t}\n\treturn false\n}\n\nfunc (x *ApiConfigSource) GetConfigValidators() []*TypedExtensionConfig {\n\tif x != nil {\n\t\treturn x.ConfigValidators\n\t}\n\treturn nil\n}\n\n// Aggregated Discovery Service (ADS) options. This is currently empty, but when\n// set in :ref:`ConfigSource <envoy_v3_api_msg_config.core.v3.ConfigSource>` can be used to\n// specify that ADS is to be used.\ntype AggregatedConfigSource struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *AggregatedConfigSource) Reset() {\n\t*x = AggregatedConfigSource{}\n\tmi := &file_envoy_config_core_v3_config_source_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *AggregatedConfigSource) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AggregatedConfigSource) ProtoMessage() {}\n\nfunc (x *AggregatedConfigSource) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_config_source_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use AggregatedConfigSource.ProtoReflect.Descriptor instead.\nfunc (*AggregatedConfigSource) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_config_source_proto_rawDescGZIP(), []int{1}\n}\n\n// [#not-implemented-hide:]\n// Self-referencing config source options. This is currently empty, but when\n// set in :ref:`ConfigSource <envoy_v3_api_msg_config.core.v3.ConfigSource>` can be used to\n// specify that other data can be obtained from the same server.\ntype SelfConfigSource struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// API version for xDS transport protocol. This describes the xDS gRPC/REST\n\t// endpoint and version of [Delta]DiscoveryRequest/Response used on the wire.\n\tTransportApiVersion ApiVersion `protobuf:\"varint,1,opt,name=transport_api_version,json=transportApiVersion,proto3,enum=envoy.config.core.v3.ApiVersion\" json:\"transport_api_version,omitempty\"`\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\nfunc (x *SelfConfigSource) Reset() {\n\t*x = SelfConfigSource{}\n\tmi := &file_envoy_config_core_v3_config_source_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SelfConfigSource) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SelfConfigSource) ProtoMessage() {}\n\nfunc (x *SelfConfigSource) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_config_source_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SelfConfigSource.ProtoReflect.Descriptor instead.\nfunc (*SelfConfigSource) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_config_source_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *SelfConfigSource) GetTransportApiVersion() ApiVersion {\n\tif x != nil {\n\t\treturn x.TransportApiVersion\n\t}\n\treturn ApiVersion_AUTO\n}\n\n// Rate Limit settings to be applied for discovery requests made by Envoy.\ntype RateLimitSettings struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Maximum number of tokens to be used for rate limiting discovery request calls. If not set, a\n\t// default value of 100 will be used.\n\tMaxTokens *wrapperspb.UInt32Value `protobuf:\"bytes,1,opt,name=max_tokens,json=maxTokens,proto3\" json:\"max_tokens,omitempty\"`\n\t// Rate at which tokens will be filled per second. If not set, a default fill rate of 10 tokens\n\t// per second will be used. The minimal fill rate is once per year. Lower\n\t// fill rates will be set to once per year.\n\tFillRate      *wrapperspb.DoubleValue `protobuf:\"bytes,2,opt,name=fill_rate,json=fillRate,proto3\" json:\"fill_rate,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RateLimitSettings) Reset() {\n\t*x = RateLimitSettings{}\n\tmi := &file_envoy_config_core_v3_config_source_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimitSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimitSettings) ProtoMessage() {}\n\nfunc (x *RateLimitSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_config_source_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimitSettings.ProtoReflect.Descriptor instead.\nfunc (*RateLimitSettings) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_config_source_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *RateLimitSettings) GetMaxTokens() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxTokens\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimitSettings) GetFillRate() *wrapperspb.DoubleValue {\n\tif x != nil {\n\t\treturn x.FillRate\n\t}\n\treturn nil\n}\n\n// Local filesystem path configuration source.\ntype PathConfigSource struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Path on the filesystem to source and watch for configuration updates.\n\t// When sourcing configuration for a :ref:`secret <envoy_v3_api_msg_extensions.transport_sockets.tls.v3.Secret>`,\n\t// the certificate and key files are also watched for updates.\n\t//\n\t// .. note::\n\t//\n\t//\tThe path to the source must exist at config load time.\n\t//\n\t// .. note::\n\t//\n\t//\tIf ``watched_directory`` is *not* configured, Envoy will watch the file path for *moves*.\n\t//\tThis is because in general only moves are atomic. The same method of swapping files as is\n\t//\tdemonstrated in the :ref:`runtime documentation <config_runtime_symbolic_link_swap>` can be\n\t//\tused here also. If ``watched_directory`` is configured, no watch will be placed directly on\n\t//\tthis path. Instead, the configured ``watched_directory`` will be used to trigger reloads of\n\t//\tthis path. This is required in certain deployment scenarios. See below for more information.\n\tPath string `protobuf:\"bytes,1,opt,name=path,proto3\" json:\"path,omitempty\"`\n\t// If configured, this directory will be watched for *moves*. When an entry in this directory is\n\t// moved to, the “path“ will be reloaded. This is required in certain deployment scenarios.\n\t//\n\t// Specifically, if trying to load an xDS resource using a\n\t// `Kubernetes ConfigMap <https://kubernetes.io/docs/concepts/configuration/configmap/>`_, the\n\t// following configuration might be used:\n\t// 1. Store xds.yaml inside a ConfigMap.\n\t// 2. Mount the ConfigMap to “/config_map/xds“\n\t// 3. Configure path “/config_map/xds/xds.yaml“\n\t// 4. Configure watched directory “/config_map/xds“\n\t//\n\t// The above configuration will ensure that Envoy watches the owning directory for moves which is\n\t// required due to how Kubernetes manages ConfigMap symbolic links during atomic updates.\n\tWatchedDirectory *WatchedDirectory `protobuf:\"bytes,2,opt,name=watched_directory,json=watchedDirectory,proto3\" json:\"watched_directory,omitempty\"`\n\tunknownFields    protoimpl.UnknownFields\n\tsizeCache        protoimpl.SizeCache\n}\n\nfunc (x *PathConfigSource) Reset() {\n\t*x = PathConfigSource{}\n\tmi := &file_envoy_config_core_v3_config_source_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *PathConfigSource) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PathConfigSource) ProtoMessage() {}\n\nfunc (x *PathConfigSource) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_config_source_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use PathConfigSource.ProtoReflect.Descriptor instead.\nfunc (*PathConfigSource) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_config_source_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *PathConfigSource) GetPath() string {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn \"\"\n}\n\nfunc (x *PathConfigSource) GetWatchedDirectory() *WatchedDirectory {\n\tif x != nil {\n\t\treturn x.WatchedDirectory\n\t}\n\treturn nil\n}\n\n// Configuration for :ref:`listeners <config_listeners>`, :ref:`clusters\n// <config_cluster_manager>`, :ref:`routes\n// <envoy_v3_api_msg_config.route.v3.RouteConfiguration>`, :ref:`endpoints\n// <arch_overview_service_discovery>` etc. may either be sourced from the\n// filesystem or from an xDS API source. Filesystem configs are watched with\n// inotify for updates.\n// [#next-free-field: 9]\ntype ConfigSource struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Authorities that this config source may be used for. An authority specified in a xdstp:// URL\n\t// is resolved to a “ConfigSource“ prior to configuration fetch. This field provides the\n\t// association between authority name and configuration source.\n\t// [#not-implemented-hide:]\n\tAuthorities []*v3.Authority `protobuf:\"bytes,7,rep,name=authorities,proto3\" json:\"authorities,omitempty\"`\n\t// Types that are valid to be assigned to ConfigSourceSpecifier:\n\t//\n\t//\t*ConfigSource_Path\n\t//\t*ConfigSource_PathConfigSource\n\t//\t*ConfigSource_ApiConfigSource\n\t//\t*ConfigSource_Ads\n\t//\t*ConfigSource_Self\n\tConfigSourceSpecifier isConfigSource_ConfigSourceSpecifier `protobuf_oneof:\"config_source_specifier\"`\n\t// When this timeout is specified, Envoy will wait no longer than the specified time for first\n\t// config response on this xDS subscription during the :ref:`initialization process\n\t// <arch_overview_initialization>`. After reaching the timeout, Envoy will move to the next\n\t// initialization phase, even if the first config is not delivered yet. The timer is activated\n\t// when the xDS API subscription starts, and is disarmed on first config update or on error. 0\n\t// means no timeout - Envoy will wait indefinitely for the first xDS config (unless another\n\t// timeout applies). The default is 15s.\n\tInitialFetchTimeout *durationpb.Duration `protobuf:\"bytes,4,opt,name=initial_fetch_timeout,json=initialFetchTimeout,proto3\" json:\"initial_fetch_timeout,omitempty\"`\n\t// API version for xDS resources. This implies the type URLs that the client\n\t// will request for resources and the resource type that the client will in\n\t// turn expect to be delivered.\n\tResourceApiVersion ApiVersion `protobuf:\"varint,6,opt,name=resource_api_version,json=resourceApiVersion,proto3,enum=envoy.config.core.v3.ApiVersion\" json:\"resource_api_version,omitempty\"`\n\tunknownFields      protoimpl.UnknownFields\n\tsizeCache          protoimpl.SizeCache\n}\n\nfunc (x *ConfigSource) Reset() {\n\t*x = ConfigSource{}\n\tmi := &file_envoy_config_core_v3_config_source_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ConfigSource) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ConfigSource) ProtoMessage() {}\n\nfunc (x *ConfigSource) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_config_source_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ConfigSource.ProtoReflect.Descriptor instead.\nfunc (*ConfigSource) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_config_source_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *ConfigSource) GetAuthorities() []*v3.Authority {\n\tif x != nil {\n\t\treturn x.Authorities\n\t}\n\treturn nil\n}\n\nfunc (x *ConfigSource) GetConfigSourceSpecifier() isConfigSource_ConfigSourceSpecifier {\n\tif x != nil {\n\t\treturn x.ConfigSourceSpecifier\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/core/v3/config_source.proto.\nfunc (x *ConfigSource) GetPath() string {\n\tif x != nil {\n\t\tif x, ok := x.ConfigSourceSpecifier.(*ConfigSource_Path); ok {\n\t\t\treturn x.Path\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *ConfigSource) GetPathConfigSource() *PathConfigSource {\n\tif x != nil {\n\t\tif x, ok := x.ConfigSourceSpecifier.(*ConfigSource_PathConfigSource); ok {\n\t\t\treturn x.PathConfigSource\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *ConfigSource) GetApiConfigSource() *ApiConfigSource {\n\tif x != nil {\n\t\tif x, ok := x.ConfigSourceSpecifier.(*ConfigSource_ApiConfigSource); ok {\n\t\t\treturn x.ApiConfigSource\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *ConfigSource) GetAds() *AggregatedConfigSource {\n\tif x != nil {\n\t\tif x, ok := x.ConfigSourceSpecifier.(*ConfigSource_Ads); ok {\n\t\t\treturn x.Ads\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *ConfigSource) GetSelf() *SelfConfigSource {\n\tif x != nil {\n\t\tif x, ok := x.ConfigSourceSpecifier.(*ConfigSource_Self); ok {\n\t\t\treturn x.Self\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *ConfigSource) GetInitialFetchTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.InitialFetchTimeout\n\t}\n\treturn nil\n}\n\nfunc (x *ConfigSource) GetResourceApiVersion() ApiVersion {\n\tif x != nil {\n\t\treturn x.ResourceApiVersion\n\t}\n\treturn ApiVersion_AUTO\n}\n\ntype isConfigSource_ConfigSourceSpecifier interface {\n\tisConfigSource_ConfigSourceSpecifier()\n}\n\ntype ConfigSource_Path struct {\n\t// Deprecated in favor of “path_config_source“. Use that field instead.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/config_source.proto.\n\tPath string `protobuf:\"bytes,1,opt,name=path,proto3,oneof\"`\n}\n\ntype ConfigSource_PathConfigSource struct {\n\t// Local filesystem path configuration source.\n\tPathConfigSource *PathConfigSource `protobuf:\"bytes,8,opt,name=path_config_source,json=pathConfigSource,proto3,oneof\"`\n}\n\ntype ConfigSource_ApiConfigSource struct {\n\t// API configuration source.\n\tApiConfigSource *ApiConfigSource `protobuf:\"bytes,2,opt,name=api_config_source,json=apiConfigSource,proto3,oneof\"`\n}\n\ntype ConfigSource_Ads struct {\n\t// When set, ADS will be used to fetch resources. The ADS API configuration\n\t// source in the bootstrap configuration is used.\n\tAds *AggregatedConfigSource `protobuf:\"bytes,3,opt,name=ads,proto3,oneof\"`\n}\n\ntype ConfigSource_Self struct {\n\t// [#not-implemented-hide:]\n\t// When set, the client will access the resources from the same server it got the\n\t// ConfigSource from, although not necessarily from the same stream. This is similar to the\n\t// :ref:`ads<envoy_v3_api_field.ConfigSource.ads>` field, except that the client may use a\n\t// different stream to the same server. As a result, this field can be used for things\n\t// like LRS that cannot be sent on an ADS stream. It can also be used to link from (e.g.)\n\t// LDS to RDS on the same server without requiring the management server to know its name\n\t// or required credentials.\n\t// [#next-major-version: In xDS v3, consider replacing the ads field with this one, since\n\t// this field can implicitly mean to use the same stream in the case where the ConfigSource\n\t// is provided via ADS and the specified data can also be obtained via ADS.]\n\tSelf *SelfConfigSource `protobuf:\"bytes,5,opt,name=self,proto3,oneof\"`\n}\n\nfunc (*ConfigSource_Path) isConfigSource_ConfigSourceSpecifier() {}\n\nfunc (*ConfigSource_PathConfigSource) isConfigSource_ConfigSourceSpecifier() {}\n\nfunc (*ConfigSource_ApiConfigSource) isConfigSource_ConfigSourceSpecifier() {}\n\nfunc (*ConfigSource_Ads) isConfigSource_ConfigSourceSpecifier() {}\n\nfunc (*ConfigSource_Self) isConfigSource_ConfigSourceSpecifier() {}\n\n// Configuration source specifier for a late-bound extension configuration. The\n// parent resource is warmed until all the initial extension configurations are\n// received, unless the flag to apply the default configuration is set.\n// Subsequent extension updates are atomic on a per-worker basis. Once an\n// extension configuration is applied to a request or a connection, it remains\n// constant for the duration of processing. If the initial delivery of the\n// extension configuration fails, due to a timeout for example, the optional\n// default configuration is applied. Without a default configuration, the\n// extension is disabled, until an extension configuration is received. The\n// behavior of a disabled extension depends on the context. For example, a\n// filter chain with a disabled extension filter rejects all incoming streams.\ntype ExtensionConfigSource struct {\n\tstate        protoimpl.MessageState `protogen:\"open.v1\"`\n\tConfigSource *ConfigSource          `protobuf:\"bytes,1,opt,name=config_source,json=configSource,proto3\" json:\"config_source,omitempty\"`\n\t// Optional default configuration to use as the initial configuration if\n\t// there is a failure to receive the initial extension configuration or if\n\t// “apply_default_config_without_warming“ flag is set.\n\tDefaultConfig *anypb.Any `protobuf:\"bytes,2,opt,name=default_config,json=defaultConfig,proto3\" json:\"default_config,omitempty\"`\n\t// Use the default config as the initial configuration without warming and\n\t// waiting for the first discovery response. Requires the default configuration\n\t// to be supplied.\n\tApplyDefaultConfigWithoutWarming bool `protobuf:\"varint,3,opt,name=apply_default_config_without_warming,json=applyDefaultConfigWithoutWarming,proto3\" json:\"apply_default_config_without_warming,omitempty\"`\n\t// A set of permitted extension type URLs for the type encoded inside of the\n\t// :ref:`TypedExtensionConfig <envoy_v3_api_msg_config.core.v3.TypedExtensionConfig>`. Extension\n\t// configuration updates are rejected if they do not match any type URL in the set.\n\tTypeUrls      []string `protobuf:\"bytes,4,rep,name=type_urls,json=typeUrls,proto3\" json:\"type_urls,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ExtensionConfigSource) Reset() {\n\t*x = ExtensionConfigSource{}\n\tmi := &file_envoy_config_core_v3_config_source_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ExtensionConfigSource) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ExtensionConfigSource) ProtoMessage() {}\n\nfunc (x *ExtensionConfigSource) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_config_source_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ExtensionConfigSource.ProtoReflect.Descriptor instead.\nfunc (*ExtensionConfigSource) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_config_source_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *ExtensionConfigSource) GetConfigSource() *ConfigSource {\n\tif x != nil {\n\t\treturn x.ConfigSource\n\t}\n\treturn nil\n}\n\nfunc (x *ExtensionConfigSource) GetDefaultConfig() *anypb.Any {\n\tif x != nil {\n\t\treturn x.DefaultConfig\n\t}\n\treturn nil\n}\n\nfunc (x *ExtensionConfigSource) GetApplyDefaultConfigWithoutWarming() bool {\n\tif x != nil {\n\t\treturn x.ApplyDefaultConfigWithoutWarming\n\t}\n\treturn false\n}\n\nfunc (x *ExtensionConfigSource) GetTypeUrls() []string {\n\tif x != nil {\n\t\treturn x.TypeUrls\n\t}\n\treturn nil\n}\n\nvar File_envoy_config_core_v3_config_source_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_config_source_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"(envoy/config/core/v3/config_source.proto\\x12\\x14envoy.config.core.v3\\x1a\\x1fenvoy/config/core/v3/base.proto\\x1a$envoy/config/core/v3/extension.proto\\x1a'envoy/config/core/v3/grpc_service.proto\\x1a\\x19google/protobuf/any.proto\\x1a\\x1egoogle/protobuf/duration.proto\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a\\x1bxds/core/v3/authority.proto\\x1a#envoy/annotations/deprecation.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xf4\\x06\\n\" +\n\t\"\\x0fApiConfigSource\\x12R\\n\" +\n\t\"\\bapi_type\\x18\\x01 \\x01(\\x0e2-.envoy.config.core.v3.ApiConfigSource.ApiTypeB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\aapiType\\x12^\\n\" +\n\t\"\\x15transport_api_version\\x18\\b \\x01(\\x0e2 .envoy.config.core.v3.ApiVersionB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\x13transportApiVersion\\x12#\\n\" +\n\t\"\\rcluster_names\\x18\\x02 \\x03(\\tR\\fclusterNames\\x12F\\n\" +\n\t\"\\rgrpc_services\\x18\\x04 \\x03(\\v2!.envoy.config.core.v3.GrpcServiceR\\fgrpcServices\\x12>\\n\" +\n\t\"\\rrefresh_delay\\x18\\x03 \\x01(\\v2\\x19.google.protobuf.DurationR\\frefreshDelay\\x12L\\n\" +\n\t\"\\x0frequest_timeout\\x18\\x05 \\x01(\\v2\\x19.google.protobuf.DurationB\\b\\xfaB\\x05\\xaa\\x01\\x02*\\x00R\\x0erequestTimeout\\x12W\\n\" +\n\t\"\\x13rate_limit_settings\\x18\\x06 \\x01(\\v2'.envoy.config.core.v3.RateLimitSettingsR\\x11rateLimitSettings\\x12A\\n\" +\n\t\"\\x1eset_node_on_first_message_only\\x18\\a \\x01(\\bR\\x19setNodeOnFirstMessageOnly\\x12W\\n\" +\n\t\"\\x11config_validators\\x18\\t \\x03(\\v2*.envoy.config.core.v3.TypedExtensionConfigR\\x10configValidators\\\"\\x92\\x01\\n\" +\n\t\"\\aApiType\\x123\\n\" +\n\t\"%DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE\\x10\\x00\\x1a\\b\\xa8\\xf7\\xb4\\x8b\\x02\\x01\\b\\x01\\x12\\b\\n\" +\n\t\"\\x04REST\\x10\\x01\\x12\\b\\n\" +\n\t\"\\x04GRPC\\x10\\x02\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"DELTA_GRPC\\x10\\x03\\x12\\x13\\n\" +\n\t\"\\x0fAGGREGATED_GRPC\\x10\\x05\\x12\\x19\\n\" +\n\t\"\\x15AGGREGATED_DELTA_GRPC\\x10\\x06:(\\x9aň\\x1e#\\n\" +\n\t\"!envoy.api.v2.core.ApiConfigSource\\\"I\\n\" +\n\t\"\\x16AggregatedConfigSource:/\\x9aň\\x1e*\\n\" +\n\t\"(envoy.api.v2.core.AggregatedConfigSource\\\"\\x9d\\x01\\n\" +\n\t\"\\x10SelfConfigSource\\x12^\\n\" +\n\t\"\\x15transport_api_version\\x18\\x01 \\x01(\\x0e2 .envoy.config.core.v3.ApiVersionB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\x13transportApiVersion:)\\x9aň\\x1e$\\n\" +\n\t\"\\\"envoy.api.v2.core.SelfConfigSource\\\"\\xc7\\x01\\n\" +\n\t\"\\x11RateLimitSettings\\x12;\\n\" +\n\t\"\\n\" +\n\t\"max_tokens\\x18\\x01 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR\\tmaxTokens\\x12I\\n\" +\n\t\"\\tfill_rate\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.DoubleValueB\\x0e\\xfaB\\v\\x12\\t!\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00R\\bfillRate:*\\x9aň\\x1e%\\n\" +\n\t\"#envoy.api.v2.core.RateLimitSettings\\\"\\x84\\x01\\n\" +\n\t\"\\x10PathConfigSource\\x12\\x1b\\n\" +\n\t\"\\x04path\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04path\\x12S\\n\" +\n\t\"\\x11watched_directory\\x18\\x02 \\x01(\\v2&.envoy.config.core.v3.WatchedDirectoryR\\x10watchedDirectory\\\"\\x8c\\x05\\n\" +\n\t\"\\fConfigSource\\x128\\n\" +\n\t\"\\vauthorities\\x18\\a \\x03(\\v2\\x16.xds.core.v3.AuthorityR\\vauthorities\\x12!\\n\" +\n\t\"\\x04path\\x18\\x01 \\x01(\\tB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01H\\x00R\\x04path\\x12V\\n\" +\n\t\"\\x12path_config_source\\x18\\b \\x01(\\v2&.envoy.config.core.v3.PathConfigSourceH\\x00R\\x10pathConfigSource\\x12S\\n\" +\n\t\"\\x11api_config_source\\x18\\x02 \\x01(\\v2%.envoy.config.core.v3.ApiConfigSourceH\\x00R\\x0fapiConfigSource\\x12@\\n\" +\n\t\"\\x03ads\\x18\\x03 \\x01(\\v2,.envoy.config.core.v3.AggregatedConfigSourceH\\x00R\\x03ads\\x12<\\n\" +\n\t\"\\x04self\\x18\\x05 \\x01(\\v2&.envoy.config.core.v3.SelfConfigSourceH\\x00R\\x04self\\x12M\\n\" +\n\t\"\\x15initial_fetch_timeout\\x18\\x04 \\x01(\\v2\\x19.google.protobuf.DurationR\\x13initialFetchTimeout\\x12\\\\\\n\" +\n\t\"\\x14resource_api_version\\x18\\x06 \\x01(\\x0e2 .envoy.config.core.v3.ApiVersionB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\x12resourceApiVersion:%\\x9aň\\x1e \\n\" +\n\t\"\\x1eenvoy.api.v2.core.ConfigSourceB\\x1e\\n\" +\n\t\"\\x17config_source_specifier\\x12\\x03\\xf8B\\x01\\\"\\x9e\\x02\\n\" +\n\t\"\\x15ExtensionConfigSource\\x12Q\\n\" +\n\t\"\\rconfig_source\\x18\\x01 \\x01(\\v2\\\".envoy.config.core.v3.ConfigSourceB\\b\\xfaB\\x05\\xa2\\x01\\x02\\b\\x01R\\fconfigSource\\x12;\\n\" +\n\t\"\\x0edefault_config\\x18\\x02 \\x01(\\v2\\x14.google.protobuf.AnyR\\rdefaultConfig\\x12N\\n\" +\n\t\"$apply_default_config_without_warming\\x18\\x03 \\x01(\\bR applyDefaultConfigWithoutWarming\\x12%\\n\" +\n\t\"\\ttype_urls\\x18\\x04 \\x03(\\tB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\btypeUrls*3\\n\" +\n\t\"\\n\" +\n\t\"ApiVersion\\x12\\b\\n\" +\n\t\"\\x04AUTO\\x10\\x00\\x12\\x13\\n\" +\n\t\"\\x02V2\\x10\\x01\\x1a\\v\\x8a\\xf4\\x9b\\xb3\\x05\\x033.0\\b\\x01\\x12\\x06\\n\" +\n\t\"\\x02V3\\x10\\x02B\\x85\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\x11ConfigSourceProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_config_source_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_config_source_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_config_source_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_config_source_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_config_source_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_config_source_proto_rawDesc), len(file_envoy_config_core_v3_config_source_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_config_source_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_config_source_proto_enumTypes = make([]protoimpl.EnumInfo, 2)\nvar file_envoy_config_core_v3_config_source_proto_msgTypes = make([]protoimpl.MessageInfo, 7)\nvar file_envoy_config_core_v3_config_source_proto_goTypes = []any{\n\t(ApiVersion)(0),                // 0: envoy.config.core.v3.ApiVersion\n\t(ApiConfigSource_ApiType)(0),   // 1: envoy.config.core.v3.ApiConfigSource.ApiType\n\t(*ApiConfigSource)(nil),        // 2: envoy.config.core.v3.ApiConfigSource\n\t(*AggregatedConfigSource)(nil), // 3: envoy.config.core.v3.AggregatedConfigSource\n\t(*SelfConfigSource)(nil),       // 4: envoy.config.core.v3.SelfConfigSource\n\t(*RateLimitSettings)(nil),      // 5: envoy.config.core.v3.RateLimitSettings\n\t(*PathConfigSource)(nil),       // 6: envoy.config.core.v3.PathConfigSource\n\t(*ConfigSource)(nil),           // 7: envoy.config.core.v3.ConfigSource\n\t(*ExtensionConfigSource)(nil),  // 8: envoy.config.core.v3.ExtensionConfigSource\n\t(*GrpcService)(nil),            // 9: envoy.config.core.v3.GrpcService\n\t(*durationpb.Duration)(nil),    // 10: google.protobuf.Duration\n\t(*TypedExtensionConfig)(nil),   // 11: envoy.config.core.v3.TypedExtensionConfig\n\t(*wrapperspb.UInt32Value)(nil), // 12: google.protobuf.UInt32Value\n\t(*wrapperspb.DoubleValue)(nil), // 13: google.protobuf.DoubleValue\n\t(*WatchedDirectory)(nil),       // 14: envoy.config.core.v3.WatchedDirectory\n\t(*v3.Authority)(nil),           // 15: xds.core.v3.Authority\n\t(*anypb.Any)(nil),              // 16: google.protobuf.Any\n}\nvar file_envoy_config_core_v3_config_source_proto_depIdxs = []int32{\n\t1,  // 0: envoy.config.core.v3.ApiConfigSource.api_type:type_name -> envoy.config.core.v3.ApiConfigSource.ApiType\n\t0,  // 1: envoy.config.core.v3.ApiConfigSource.transport_api_version:type_name -> envoy.config.core.v3.ApiVersion\n\t9,  // 2: envoy.config.core.v3.ApiConfigSource.grpc_services:type_name -> envoy.config.core.v3.GrpcService\n\t10, // 3: envoy.config.core.v3.ApiConfigSource.refresh_delay:type_name -> google.protobuf.Duration\n\t10, // 4: envoy.config.core.v3.ApiConfigSource.request_timeout:type_name -> google.protobuf.Duration\n\t5,  // 5: envoy.config.core.v3.ApiConfigSource.rate_limit_settings:type_name -> envoy.config.core.v3.RateLimitSettings\n\t11, // 6: envoy.config.core.v3.ApiConfigSource.config_validators:type_name -> envoy.config.core.v3.TypedExtensionConfig\n\t0,  // 7: envoy.config.core.v3.SelfConfigSource.transport_api_version:type_name -> envoy.config.core.v3.ApiVersion\n\t12, // 8: envoy.config.core.v3.RateLimitSettings.max_tokens:type_name -> google.protobuf.UInt32Value\n\t13, // 9: envoy.config.core.v3.RateLimitSettings.fill_rate:type_name -> google.protobuf.DoubleValue\n\t14, // 10: envoy.config.core.v3.PathConfigSource.watched_directory:type_name -> envoy.config.core.v3.WatchedDirectory\n\t15, // 11: envoy.config.core.v3.ConfigSource.authorities:type_name -> xds.core.v3.Authority\n\t6,  // 12: envoy.config.core.v3.ConfigSource.path_config_source:type_name -> envoy.config.core.v3.PathConfigSource\n\t2,  // 13: envoy.config.core.v3.ConfigSource.api_config_source:type_name -> envoy.config.core.v3.ApiConfigSource\n\t3,  // 14: envoy.config.core.v3.ConfigSource.ads:type_name -> envoy.config.core.v3.AggregatedConfigSource\n\t4,  // 15: envoy.config.core.v3.ConfigSource.self:type_name -> envoy.config.core.v3.SelfConfigSource\n\t10, // 16: envoy.config.core.v3.ConfigSource.initial_fetch_timeout:type_name -> google.protobuf.Duration\n\t0,  // 17: envoy.config.core.v3.ConfigSource.resource_api_version:type_name -> envoy.config.core.v3.ApiVersion\n\t7,  // 18: envoy.config.core.v3.ExtensionConfigSource.config_source:type_name -> envoy.config.core.v3.ConfigSource\n\t16, // 19: envoy.config.core.v3.ExtensionConfigSource.default_config:type_name -> google.protobuf.Any\n\t20, // [20:20] is the sub-list for method output_type\n\t20, // [20:20] is the sub-list for method input_type\n\t20, // [20:20] is the sub-list for extension type_name\n\t20, // [20:20] is the sub-list for extension extendee\n\t0,  // [0:20] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_config_source_proto_init() }\nfunc file_envoy_config_core_v3_config_source_proto_init() {\n\tif File_envoy_config_core_v3_config_source_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_core_v3_base_proto_init()\n\tfile_envoy_config_core_v3_extension_proto_init()\n\tfile_envoy_config_core_v3_grpc_service_proto_init()\n\tfile_envoy_config_core_v3_config_source_proto_msgTypes[5].OneofWrappers = []any{\n\t\t(*ConfigSource_Path)(nil),\n\t\t(*ConfigSource_PathConfigSource)(nil),\n\t\t(*ConfigSource_ApiConfigSource)(nil),\n\t\t(*ConfigSource_Ads)(nil),\n\t\t(*ConfigSource_Self)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_config_source_proto_rawDesc), len(file_envoy_config_core_v3_config_source_proto_rawDesc)),\n\t\t\tNumEnums:      2,\n\t\t\tNumMessages:   7,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_config_source_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_config_source_proto_depIdxs,\n\t\tEnumInfos:         file_envoy_config_core_v3_config_source_proto_enumTypes,\n\t\tMessageInfos:      file_envoy_config_core_v3_config_source_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_config_source_proto = out.File\n\tfile_envoy_config_core_v3_config_source_proto_goTypes = nil\n\tfile_envoy_config_core_v3_config_source_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/config_source.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/config_source.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on ApiConfigSource with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *ApiConfigSource) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ApiConfigSource with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ApiConfigSourceMultiError, or nil if none found.\nfunc (m *ApiConfigSource) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ApiConfigSource) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif _, ok := ApiConfigSource_ApiType_name[int32(m.GetApiType())]; !ok {\n\t\terr := ApiConfigSourceValidationError{\n\t\t\tfield:  \"ApiType\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif _, ok := ApiVersion_name[int32(m.GetTransportApiVersion())]; !ok {\n\t\terr := ApiConfigSourceValidationError{\n\t\t\tfield:  \"TransportApiVersion\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetGrpcServices() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ApiConfigSourceValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"GrpcServices[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ApiConfigSourceValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"GrpcServices[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ApiConfigSourceValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"GrpcServices[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRefreshDelay()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ApiConfigSourceValidationError{\n\t\t\t\t\tfield:  \"RefreshDelay\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ApiConfigSourceValidationError{\n\t\t\t\t\tfield:  \"RefreshDelay\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRefreshDelay()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ApiConfigSourceValidationError{\n\t\t\t\tfield:  \"RefreshDelay\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif d := m.GetRequestTimeout(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = ApiConfigSourceValidationError{\n\t\t\t\tfield:  \"RequestTimeout\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgt := time.Duration(0*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur <= gt {\n\t\t\t\terr := ApiConfigSourceValidationError{\n\t\t\t\t\tfield:  \"RequestTimeout\",\n\t\t\t\t\treason: \"value must be greater than 0s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRateLimitSettings()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ApiConfigSourceValidationError{\n\t\t\t\t\tfield:  \"RateLimitSettings\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ApiConfigSourceValidationError{\n\t\t\t\t\tfield:  \"RateLimitSettings\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRateLimitSettings()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ApiConfigSourceValidationError{\n\t\t\t\tfield:  \"RateLimitSettings\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for SetNodeOnFirstMessageOnly\n\n\tfor idx, item := range m.GetConfigValidators() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ApiConfigSourceValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ConfigValidators[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ApiConfigSourceValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ConfigValidators[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ApiConfigSourceValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ConfigValidators[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ApiConfigSourceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ApiConfigSourceMultiError is an error wrapping multiple validation errors\n// returned by ApiConfigSource.ValidateAll() if the designated constraints\n// aren't met.\ntype ApiConfigSourceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ApiConfigSourceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ApiConfigSourceMultiError) AllErrors() []error { return m }\n\n// ApiConfigSourceValidationError is the validation error returned by\n// ApiConfigSource.Validate if the designated constraints aren't met.\ntype ApiConfigSourceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ApiConfigSourceValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ApiConfigSourceValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ApiConfigSourceValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ApiConfigSourceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ApiConfigSourceValidationError) ErrorName() string { return \"ApiConfigSourceValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e ApiConfigSourceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sApiConfigSource.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ApiConfigSourceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ApiConfigSourceValidationError{}\n\n// Validate checks the field values on AggregatedConfigSource with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *AggregatedConfigSource) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on AggregatedConfigSource with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// AggregatedConfigSourceMultiError, or nil if none found.\nfunc (m *AggregatedConfigSource) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *AggregatedConfigSource) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn AggregatedConfigSourceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// AggregatedConfigSourceMultiError is an error wrapping multiple validation\n// errors returned by AggregatedConfigSource.ValidateAll() if the designated\n// constraints aren't met.\ntype AggregatedConfigSourceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m AggregatedConfigSourceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m AggregatedConfigSourceMultiError) AllErrors() []error { return m }\n\n// AggregatedConfigSourceValidationError is the validation error returned by\n// AggregatedConfigSource.Validate if the designated constraints aren't met.\ntype AggregatedConfigSourceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e AggregatedConfigSourceValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e AggregatedConfigSourceValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e AggregatedConfigSourceValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e AggregatedConfigSourceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e AggregatedConfigSourceValidationError) ErrorName() string {\n\treturn \"AggregatedConfigSourceValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e AggregatedConfigSourceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sAggregatedConfigSource.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = AggregatedConfigSourceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = AggregatedConfigSourceValidationError{}\n\n// Validate checks the field values on SelfConfigSource with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *SelfConfigSource) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on SelfConfigSource with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// SelfConfigSourceMultiError, or nil if none found.\nfunc (m *SelfConfigSource) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *SelfConfigSource) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif _, ok := ApiVersion_name[int32(m.GetTransportApiVersion())]; !ok {\n\t\terr := SelfConfigSourceValidationError{\n\t\t\tfield:  \"TransportApiVersion\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn SelfConfigSourceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// SelfConfigSourceMultiError is an error wrapping multiple validation errors\n// returned by SelfConfigSource.ValidateAll() if the designated constraints\n// aren't met.\ntype SelfConfigSourceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m SelfConfigSourceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m SelfConfigSourceMultiError) AllErrors() []error { return m }\n\n// SelfConfigSourceValidationError is the validation error returned by\n// SelfConfigSource.Validate if the designated constraints aren't met.\ntype SelfConfigSourceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e SelfConfigSourceValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e SelfConfigSourceValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e SelfConfigSourceValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e SelfConfigSourceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e SelfConfigSourceValidationError) ErrorName() string { return \"SelfConfigSourceValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e SelfConfigSourceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sSelfConfigSource.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = SelfConfigSourceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = SelfConfigSourceValidationError{}\n\n// Validate checks the field values on RateLimitSettings with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *RateLimitSettings) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimitSettings with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RateLimitSettingsMultiError, or nil if none found.\nfunc (m *RateLimitSettings) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimitSettings) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxTokens()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RateLimitSettingsValidationError{\n\t\t\t\t\tfield:  \"MaxTokens\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RateLimitSettingsValidationError{\n\t\t\t\t\tfield:  \"MaxTokens\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxTokens()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RateLimitSettingsValidationError{\n\t\t\t\tfield:  \"MaxTokens\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif wrapper := m.GetFillRate(); wrapper != nil {\n\n\t\tif wrapper.GetValue() <= 0 {\n\t\t\terr := RateLimitSettingsValidationError{\n\t\t\t\tfield:  \"FillRate\",\n\t\t\t\treason: \"value must be greater than 0\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RateLimitSettingsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimitSettingsMultiError is an error wrapping multiple validation errors\n// returned by RateLimitSettings.ValidateAll() if the designated constraints\n// aren't met.\ntype RateLimitSettingsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimitSettingsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimitSettingsMultiError) AllErrors() []error { return m }\n\n// RateLimitSettingsValidationError is the validation error returned by\n// RateLimitSettings.Validate if the designated constraints aren't met.\ntype RateLimitSettingsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimitSettingsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimitSettingsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimitSettingsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimitSettingsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimitSettingsValidationError) ErrorName() string {\n\treturn \"RateLimitSettingsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimitSettingsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimitSettings.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimitSettingsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimitSettingsValidationError{}\n\n// Validate checks the field values on PathConfigSource with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *PathConfigSource) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on PathConfigSource with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// PathConfigSourceMultiError, or nil if none found.\nfunc (m *PathConfigSource) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *PathConfigSource) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetPath()) < 1 {\n\t\terr := PathConfigSourceValidationError{\n\t\t\tfield:  \"Path\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetWatchedDirectory()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, PathConfigSourceValidationError{\n\t\t\t\t\tfield:  \"WatchedDirectory\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, PathConfigSourceValidationError{\n\t\t\t\t\tfield:  \"WatchedDirectory\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetWatchedDirectory()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn PathConfigSourceValidationError{\n\t\t\t\tfield:  \"WatchedDirectory\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn PathConfigSourceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// PathConfigSourceMultiError is an error wrapping multiple validation errors\n// returned by PathConfigSource.ValidateAll() if the designated constraints\n// aren't met.\ntype PathConfigSourceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m PathConfigSourceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m PathConfigSourceMultiError) AllErrors() []error { return m }\n\n// PathConfigSourceValidationError is the validation error returned by\n// PathConfigSource.Validate if the designated constraints aren't met.\ntype PathConfigSourceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e PathConfigSourceValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e PathConfigSourceValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e PathConfigSourceValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e PathConfigSourceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e PathConfigSourceValidationError) ErrorName() string { return \"PathConfigSourceValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e PathConfigSourceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sPathConfigSource.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = PathConfigSourceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = PathConfigSourceValidationError{}\n\n// Validate checks the field values on ConfigSource with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *ConfigSource) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ConfigSource with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in ConfigSourceMultiError, or\n// nil if none found.\nfunc (m *ConfigSource) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ConfigSource) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetAuthorities() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ConfigSourceValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Authorities[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ConfigSourceValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Authorities[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ConfigSourceValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Authorities[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetInitialFetchTimeout()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ConfigSourceValidationError{\n\t\t\t\t\tfield:  \"InitialFetchTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ConfigSourceValidationError{\n\t\t\t\t\tfield:  \"InitialFetchTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetInitialFetchTimeout()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ConfigSourceValidationError{\n\t\t\t\tfield:  \"InitialFetchTimeout\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif _, ok := ApiVersion_name[int32(m.GetResourceApiVersion())]; !ok {\n\t\terr := ConfigSourceValidationError{\n\t\t\tfield:  \"ResourceApiVersion\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\toneofConfigSourceSpecifierPresent := false\n\tswitch v := m.ConfigSourceSpecifier.(type) {\n\tcase *ConfigSource_Path:\n\t\tif v == nil {\n\t\t\terr := ConfigSourceValidationError{\n\t\t\t\tfield:  \"ConfigSourceSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofConfigSourceSpecifierPresent = true\n\t\t// no validation rules for Path\n\tcase *ConfigSource_PathConfigSource:\n\t\tif v == nil {\n\t\t\terr := ConfigSourceValidationError{\n\t\t\t\tfield:  \"ConfigSourceSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofConfigSourceSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetPathConfigSource()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ConfigSourceValidationError{\n\t\t\t\t\t\tfield:  \"PathConfigSource\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ConfigSourceValidationError{\n\t\t\t\t\t\tfield:  \"PathConfigSource\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetPathConfigSource()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ConfigSourceValidationError{\n\t\t\t\t\tfield:  \"PathConfigSource\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *ConfigSource_ApiConfigSource:\n\t\tif v == nil {\n\t\t\terr := ConfigSourceValidationError{\n\t\t\t\tfield:  \"ConfigSourceSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofConfigSourceSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetApiConfigSource()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ConfigSourceValidationError{\n\t\t\t\t\t\tfield:  \"ApiConfigSource\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ConfigSourceValidationError{\n\t\t\t\t\t\tfield:  \"ApiConfigSource\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetApiConfigSource()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ConfigSourceValidationError{\n\t\t\t\t\tfield:  \"ApiConfigSource\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *ConfigSource_Ads:\n\t\tif v == nil {\n\t\t\terr := ConfigSourceValidationError{\n\t\t\t\tfield:  \"ConfigSourceSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofConfigSourceSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetAds()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ConfigSourceValidationError{\n\t\t\t\t\t\tfield:  \"Ads\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ConfigSourceValidationError{\n\t\t\t\t\t\tfield:  \"Ads\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetAds()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ConfigSourceValidationError{\n\t\t\t\t\tfield:  \"Ads\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *ConfigSource_Self:\n\t\tif v == nil {\n\t\t\terr := ConfigSourceValidationError{\n\t\t\t\tfield:  \"ConfigSourceSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofConfigSourceSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetSelf()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ConfigSourceValidationError{\n\t\t\t\t\t\tfield:  \"Self\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ConfigSourceValidationError{\n\t\t\t\t\t\tfield:  \"Self\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetSelf()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ConfigSourceValidationError{\n\t\t\t\t\tfield:  \"Self\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofConfigSourceSpecifierPresent {\n\t\terr := ConfigSourceValidationError{\n\t\t\tfield:  \"ConfigSourceSpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ConfigSourceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ConfigSourceMultiError is an error wrapping multiple validation errors\n// returned by ConfigSource.ValidateAll() if the designated constraints aren't met.\ntype ConfigSourceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ConfigSourceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ConfigSourceMultiError) AllErrors() []error { return m }\n\n// ConfigSourceValidationError is the validation error returned by\n// ConfigSource.Validate if the designated constraints aren't met.\ntype ConfigSourceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ConfigSourceValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ConfigSourceValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ConfigSourceValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ConfigSourceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ConfigSourceValidationError) ErrorName() string { return \"ConfigSourceValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e ConfigSourceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sConfigSource.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ConfigSourceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ConfigSourceValidationError{}\n\n// Validate checks the field values on ExtensionConfigSource with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *ExtensionConfigSource) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ExtensionConfigSource with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ExtensionConfigSourceMultiError, or nil if none found.\nfunc (m *ExtensionConfigSource) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ExtensionConfigSource) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetConfigSource() == nil {\n\t\terr := ExtensionConfigSourceValidationError{\n\t\t\tfield:  \"ConfigSource\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif a := m.GetConfigSource(); a != nil {\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetDefaultConfig()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ExtensionConfigSourceValidationError{\n\t\t\t\t\tfield:  \"DefaultConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ExtensionConfigSourceValidationError{\n\t\t\t\t\tfield:  \"DefaultConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetDefaultConfig()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ExtensionConfigSourceValidationError{\n\t\t\t\tfield:  \"DefaultConfig\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for ApplyDefaultConfigWithoutWarming\n\n\tif len(m.GetTypeUrls()) < 1 {\n\t\terr := ExtensionConfigSourceValidationError{\n\t\t\tfield:  \"TypeUrls\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ExtensionConfigSourceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ExtensionConfigSourceMultiError is an error wrapping multiple validation\n// errors returned by ExtensionConfigSource.ValidateAll() if the designated\n// constraints aren't met.\ntype ExtensionConfigSourceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ExtensionConfigSourceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ExtensionConfigSourceMultiError) AllErrors() []error { return m }\n\n// ExtensionConfigSourceValidationError is the validation error returned by\n// ExtensionConfigSource.Validate if the designated constraints aren't met.\ntype ExtensionConfigSourceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ExtensionConfigSourceValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ExtensionConfigSourceValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ExtensionConfigSourceValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ExtensionConfigSourceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ExtensionConfigSourceValidationError) ErrorName() string {\n\treturn \"ExtensionConfigSourceValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ExtensionConfigSourceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sExtensionConfigSource.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ExtensionConfigSourceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ExtensionConfigSourceValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/config_source_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/config_source.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tanypb \"github.com/planetscale/vtprotobuf/types/known/anypb\"\n\tdurationpb \"github.com/planetscale/vtprotobuf/types/known/durationpb\"\n\twrapperspb \"github.com/planetscale/vtprotobuf/types/known/wrapperspb\"\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *ApiConfigSource) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ApiConfigSource) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ApiConfigSource) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.ConfigValidators) > 0 {\n\t\tfor iNdEx := len(m.ConfigValidators) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.ConfigValidators[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x4a\n\t\t}\n\t}\n\tif m.TransportApiVersion != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.TransportApiVersion))\n\t\ti--\n\t\tdAtA[i] = 0x40\n\t}\n\tif m.SetNodeOnFirstMessageOnly {\n\t\ti--\n\t\tif m.SetNodeOnFirstMessageOnly {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x38\n\t}\n\tif m.RateLimitSettings != nil {\n\t\tsize, err := m.RateLimitSettings.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif m.RequestTimeout != nil {\n\t\tsize, err := (*durationpb.Duration)(m.RequestTimeout).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.GrpcServices) > 0 {\n\t\tfor iNdEx := len(m.GrpcServices) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.GrpcServices[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif m.RefreshDelay != nil {\n\t\tsize, err := (*durationpb.Duration)(m.RefreshDelay).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.ClusterNames) > 0 {\n\t\tfor iNdEx := len(m.ClusterNames) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.ClusterNames[iNdEx])\n\t\t\tcopy(dAtA[i:], m.ClusterNames[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClusterNames[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.ApiType != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.ApiType))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AggregatedConfigSource) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AggregatedConfigSource) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *AggregatedConfigSource) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SelfConfigSource) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SelfConfigSource) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SelfConfigSource) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.TransportApiVersion != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.TransportApiVersion))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimitSettings) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimitSettings) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimitSettings) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.FillRate != nil {\n\t\tsize, err := (*wrapperspb.DoubleValue)(m.FillRate).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.MaxTokens != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxTokens).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *PathConfigSource) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *PathConfigSource) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *PathConfigSource) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.WatchedDirectory != nil {\n\t\tsize, err := m.WatchedDirectory.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Path) > 0 {\n\t\ti -= len(m.Path)\n\t\tcopy(dAtA[i:], m.Path)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Path)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ConfigSource) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ConfigSource) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ConfigSource) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.ConfigSourceSpecifier.(*ConfigSource_PathConfigSource); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Authorities) > 0 {\n\t\tfor iNdEx := len(m.Authorities) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.Authorities[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.Authorities[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t}\n\tif m.ResourceApiVersion != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.ResourceApiVersion))\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif msg, ok := m.ConfigSourceSpecifier.(*ConfigSource_Self); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.InitialFetchTimeout != nil {\n\t\tsize, err := (*durationpb.Duration)(m.InitialFetchTimeout).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif msg, ok := m.ConfigSourceSpecifier.(*ConfigSource_Ads); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ConfigSourceSpecifier.(*ConfigSource_ApiConfigSource); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ConfigSourceSpecifier.(*ConfigSource_Path); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ConfigSource_Path) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ConfigSource_Path) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Path)\n\tcopy(dAtA[i:], m.Path)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Path)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ConfigSource_ApiConfigSource) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ConfigSource_ApiConfigSource) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ApiConfigSource != nil {\n\t\tsize, err := m.ApiConfigSource.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ConfigSource_Ads) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ConfigSource_Ads) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Ads != nil {\n\t\tsize, err := m.Ads.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ConfigSource_Self) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ConfigSource_Self) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Self != nil {\n\t\tsize, err := m.Self.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ConfigSource_PathConfigSource) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ConfigSource_PathConfigSource) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.PathConfigSource != nil {\n\t\tsize, err := m.PathConfigSource.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ExtensionConfigSource) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ExtensionConfigSource) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ExtensionConfigSource) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.TypeUrls) > 0 {\n\t\tfor iNdEx := len(m.TypeUrls) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.TypeUrls[iNdEx])\n\t\t\tcopy(dAtA[i:], m.TypeUrls[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TypeUrls[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif m.ApplyDefaultConfigWithoutWarming {\n\t\ti--\n\t\tif m.ApplyDefaultConfigWithoutWarming {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.DefaultConfig != nil {\n\t\tsize, err := (*anypb.Any)(m.DefaultConfig).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.ConfigSource != nil {\n\t\tsize, err := m.ConfigSource.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ApiConfigSource) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ApiType != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.ApiType))\n\t}\n\tif len(m.ClusterNames) > 0 {\n\t\tfor _, s := range m.ClusterNames {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.RefreshDelay != nil {\n\t\tl = (*durationpb.Duration)(m.RefreshDelay).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.GrpcServices) > 0 {\n\t\tfor _, e := range m.GrpcServices {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.RequestTimeout != nil {\n\t\tl = (*durationpb.Duration)(m.RequestTimeout).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.RateLimitSettings != nil {\n\t\tl = m.RateLimitSettings.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.SetNodeOnFirstMessageOnly {\n\t\tn += 2\n\t}\n\tif m.TransportApiVersion != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.TransportApiVersion))\n\t}\n\tif len(m.ConfigValidators) > 0 {\n\t\tfor _, e := range m.ConfigValidators {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *AggregatedConfigSource) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *SelfConfigSource) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.TransportApiVersion != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.TransportApiVersion))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimitSettings) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MaxTokens != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxTokens).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.FillRate != nil {\n\t\tl = (*wrapperspb.DoubleValue)(m.FillRate).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *PathConfigSource) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Path)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.WatchedDirectory != nil {\n\t\tl = m.WatchedDirectory.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ConfigSource) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.ConfigSourceSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.InitialFetchTimeout != nil {\n\t\tl = (*durationpb.Duration)(m.InitialFetchTimeout).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ResourceApiVersion != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.ResourceApiVersion))\n\t}\n\tif len(m.Authorities) > 0 {\n\t\tfor _, e := range m.Authorities {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ConfigSource_Path) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Path)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *ConfigSource_ApiConfigSource) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ApiConfigSource != nil {\n\t\tl = m.ApiConfigSource.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *ConfigSource_Ads) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Ads != nil {\n\t\tl = m.Ads.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *ConfigSource_Self) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Self != nil {\n\t\tl = m.Self.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *ConfigSource_PathConfigSource) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.PathConfigSource != nil {\n\t\tl = m.PathConfigSource.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *ExtensionConfigSource) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ConfigSource != nil {\n\t\tl = m.ConfigSource.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.DefaultConfig != nil {\n\t\tl = (*anypb.Any)(m.DefaultConfig).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ApplyDefaultConfigWithoutWarming {\n\t\tn += 2\n\t}\n\tif len(m.TypeUrls) > 0 {\n\t\tfor _, s := range m.TypeUrls {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/event_service_config.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/event_service_config.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// [#not-implemented-hide:]\n// Configuration of the event reporting service endpoint.\ntype EventServiceConfig struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to ConfigSourceSpecifier:\n\t//\n\t//\t*EventServiceConfig_GrpcService\n\tConfigSourceSpecifier isEventServiceConfig_ConfigSourceSpecifier `protobuf_oneof:\"config_source_specifier\"`\n\tunknownFields         protoimpl.UnknownFields\n\tsizeCache             protoimpl.SizeCache\n}\n\nfunc (x *EventServiceConfig) Reset() {\n\t*x = EventServiceConfig{}\n\tmi := &file_envoy_config_core_v3_event_service_config_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EventServiceConfig) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EventServiceConfig) ProtoMessage() {}\n\nfunc (x *EventServiceConfig) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_event_service_config_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EventServiceConfig.ProtoReflect.Descriptor instead.\nfunc (*EventServiceConfig) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_event_service_config_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *EventServiceConfig) GetConfigSourceSpecifier() isEventServiceConfig_ConfigSourceSpecifier {\n\tif x != nil {\n\t\treturn x.ConfigSourceSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *EventServiceConfig) GetGrpcService() *GrpcService {\n\tif x != nil {\n\t\tif x, ok := x.ConfigSourceSpecifier.(*EventServiceConfig_GrpcService); ok {\n\t\t\treturn x.GrpcService\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isEventServiceConfig_ConfigSourceSpecifier interface {\n\tisEventServiceConfig_ConfigSourceSpecifier()\n}\n\ntype EventServiceConfig_GrpcService struct {\n\t// Specifies the gRPC service that hosts the event reporting service.\n\tGrpcService *GrpcService `protobuf:\"bytes,1,opt,name=grpc_service,json=grpcService,proto3,oneof\"`\n}\n\nfunc (*EventServiceConfig_GrpcService) isEventServiceConfig_ConfigSourceSpecifier() {}\n\nvar File_envoy_config_core_v3_event_service_config_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_event_service_config_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"/envoy/config/core/v3/event_service_config.proto\\x12\\x14envoy.config.core.v3\\x1a'envoy/config/core/v3/grpc_service.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xa9\\x01\\n\" +\n\t\"\\x12EventServiceConfig\\x12F\\n\" +\n\t\"\\fgrpc_service\\x18\\x01 \\x01(\\v2!.envoy.config.core.v3.GrpcServiceH\\x00R\\vgrpcService:+\\x9aň\\x1e&\\n\" +\n\t\"$envoy.api.v2.core.EventServiceConfigB\\x1e\\n\" +\n\t\"\\x17config_source_specifier\\x12\\x03\\xf8B\\x01B\\x8b\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\x17EventServiceConfigProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_event_service_config_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_event_service_config_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_event_service_config_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_event_service_config_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_event_service_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_event_service_config_proto_rawDesc), len(file_envoy_config_core_v3_event_service_config_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_event_service_config_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_event_service_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_config_core_v3_event_service_config_proto_goTypes = []any{\n\t(*EventServiceConfig)(nil), // 0: envoy.config.core.v3.EventServiceConfig\n\t(*GrpcService)(nil),        // 1: envoy.config.core.v3.GrpcService\n}\nvar file_envoy_config_core_v3_event_service_config_proto_depIdxs = []int32{\n\t1, // 0: envoy.config.core.v3.EventServiceConfig.grpc_service:type_name -> envoy.config.core.v3.GrpcService\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_event_service_config_proto_init() }\nfunc file_envoy_config_core_v3_event_service_config_proto_init() {\n\tif File_envoy_config_core_v3_event_service_config_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_core_v3_grpc_service_proto_init()\n\tfile_envoy_config_core_v3_event_service_config_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*EventServiceConfig_GrpcService)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_event_service_config_proto_rawDesc), len(file_envoy_config_core_v3_event_service_config_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_event_service_config_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_event_service_config_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_core_v3_event_service_config_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_event_service_config_proto = out.File\n\tfile_envoy_config_core_v3_event_service_config_proto_goTypes = nil\n\tfile_envoy_config_core_v3_event_service_config_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/event_service_config.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/event_service_config.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on EventServiceConfig with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *EventServiceConfig) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on EventServiceConfig with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// EventServiceConfigMultiError, or nil if none found.\nfunc (m *EventServiceConfig) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *EventServiceConfig) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofConfigSourceSpecifierPresent := false\n\tswitch v := m.ConfigSourceSpecifier.(type) {\n\tcase *EventServiceConfig_GrpcService:\n\t\tif v == nil {\n\t\t\terr := EventServiceConfigValidationError{\n\t\t\t\tfield:  \"ConfigSourceSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofConfigSourceSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetGrpcService()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, EventServiceConfigValidationError{\n\t\t\t\t\t\tfield:  \"GrpcService\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, EventServiceConfigValidationError{\n\t\t\t\t\t\tfield:  \"GrpcService\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetGrpcService()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn EventServiceConfigValidationError{\n\t\t\t\t\tfield:  \"GrpcService\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofConfigSourceSpecifierPresent {\n\t\terr := EventServiceConfigValidationError{\n\t\t\tfield:  \"ConfigSourceSpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn EventServiceConfigMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// EventServiceConfigMultiError is an error wrapping multiple validation errors\n// returned by EventServiceConfig.ValidateAll() if the designated constraints\n// aren't met.\ntype EventServiceConfigMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m EventServiceConfigMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m EventServiceConfigMultiError) AllErrors() []error { return m }\n\n// EventServiceConfigValidationError is the validation error returned by\n// EventServiceConfig.Validate if the designated constraints aren't met.\ntype EventServiceConfigValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e EventServiceConfigValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e EventServiceConfigValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e EventServiceConfigValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e EventServiceConfigValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e EventServiceConfigValidationError) ErrorName() string {\n\treturn \"EventServiceConfigValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e EventServiceConfigValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sEventServiceConfig.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = EventServiceConfigValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = EventServiceConfigValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/event_service_config_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/event_service_config.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *EventServiceConfig) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *EventServiceConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *EventServiceConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.ConfigSourceSpecifier.(*EventServiceConfig_GrpcService); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *EventServiceConfig_GrpcService) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *EventServiceConfig_GrpcService) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.GrpcService != nil {\n\t\tsize, err := m.GrpcService.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *EventServiceConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.ConfigSourceSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *EventServiceConfig_GrpcService) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.GrpcService != nil {\n\t\tl = m.GrpcService.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/extension.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/extension.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Message type for extension configuration.\n// [#next-major-version: revisit all existing typed_config that doesn't use this wrapper.].\ntype TypedExtensionConfig struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of an extension. This is not used to select the extension, instead\n\t// it serves the role of an opaque identifier.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// The typed config for the extension. The type URL will be used to identify\n\t// the extension. In the case that the type URL is “xds.type.v3.TypedStruct“\n\t// (or, for historical reasons, “udpa.type.v1.TypedStruct“), the inner type\n\t// URL of “TypedStruct“ will be utilized. See the\n\t// :ref:`extension configuration overview\n\t// <config_overview_extension_configuration>` for further details.\n\tTypedConfig   *anypb.Any `protobuf:\"bytes,2,opt,name=typed_config,json=typedConfig,proto3\" json:\"typed_config,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *TypedExtensionConfig) Reset() {\n\t*x = TypedExtensionConfig{}\n\tmi := &file_envoy_config_core_v3_extension_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *TypedExtensionConfig) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*TypedExtensionConfig) ProtoMessage() {}\n\nfunc (x *TypedExtensionConfig) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_extension_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use TypedExtensionConfig.ProtoReflect.Descriptor instead.\nfunc (*TypedExtensionConfig) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_extension_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *TypedExtensionConfig) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *TypedExtensionConfig) GetTypedConfig() *anypb.Any {\n\tif x != nil {\n\t\treturn x.TypedConfig\n\t}\n\treturn nil\n}\n\nvar File_envoy_config_core_v3_extension_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_extension_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"$envoy/config/core/v3/extension.proto\\x12\\x14envoy.config.core.v3\\x1a\\x19google/protobuf/any.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a\\x17validate/validate.proto\\\"v\\n\" +\n\t\"\\x14TypedExtensionConfig\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x12A\\n\" +\n\t\"\\ftyped_config\\x18\\x02 \\x01(\\v2\\x14.google.protobuf.AnyB\\b\\xfaB\\x05\\xa2\\x01\\x02\\b\\x01R\\vtypedConfigB\\x82\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\x0eExtensionProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_extension_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_extension_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_extension_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_extension_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_extension_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_extension_proto_rawDesc), len(file_envoy_config_core_v3_extension_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_extension_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_extension_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_config_core_v3_extension_proto_goTypes = []any{\n\t(*TypedExtensionConfig)(nil), // 0: envoy.config.core.v3.TypedExtensionConfig\n\t(*anypb.Any)(nil),            // 1: google.protobuf.Any\n}\nvar file_envoy_config_core_v3_extension_proto_depIdxs = []int32{\n\t1, // 0: envoy.config.core.v3.TypedExtensionConfig.typed_config:type_name -> google.protobuf.Any\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_extension_proto_init() }\nfunc file_envoy_config_core_v3_extension_proto_init() {\n\tif File_envoy_config_core_v3_extension_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_extension_proto_rawDesc), len(file_envoy_config_core_v3_extension_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_extension_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_extension_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_core_v3_extension_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_extension_proto = out.File\n\tfile_envoy_config_core_v3_extension_proto_goTypes = nil\n\tfile_envoy_config_core_v3_extension_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/extension.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/extension.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on TypedExtensionConfig with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *TypedExtensionConfig) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on TypedExtensionConfig with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// TypedExtensionConfigMultiError, or nil if none found.\nfunc (m *TypedExtensionConfig) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *TypedExtensionConfig) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := TypedExtensionConfigValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif m.GetTypedConfig() == nil {\n\t\terr := TypedExtensionConfigValidationError{\n\t\t\tfield:  \"TypedConfig\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif a := m.GetTypedConfig(); a != nil {\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn TypedExtensionConfigMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// TypedExtensionConfigMultiError is an error wrapping multiple validation\n// errors returned by TypedExtensionConfig.ValidateAll() if the designated\n// constraints aren't met.\ntype TypedExtensionConfigMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m TypedExtensionConfigMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m TypedExtensionConfigMultiError) AllErrors() []error { return m }\n\n// TypedExtensionConfigValidationError is the validation error returned by\n// TypedExtensionConfig.Validate if the designated constraints aren't met.\ntype TypedExtensionConfigValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e TypedExtensionConfigValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e TypedExtensionConfigValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e TypedExtensionConfigValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e TypedExtensionConfigValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e TypedExtensionConfigValidationError) ErrorName() string {\n\treturn \"TypedExtensionConfigValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e TypedExtensionConfigValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sTypedExtensionConfig.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = TypedExtensionConfigValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = TypedExtensionConfigValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/extension_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/extension.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tanypb \"github.com/planetscale/vtprotobuf/types/known/anypb\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *TypedExtensionConfig) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *TypedExtensionConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *TypedExtensionConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.TypedConfig != nil {\n\t\tsize, err := (*anypb.Any)(m.TypedConfig).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *TypedExtensionConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.TypedConfig != nil {\n\t\tl = (*anypb.Any)(m.TypedConfig).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/grpc_method_list.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/grpc_method_list.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// A list of gRPC methods which can be used as an allowlist, for example.\ntype GrpcMethodList struct {\n\tstate         protoimpl.MessageState    `protogen:\"open.v1\"`\n\tServices      []*GrpcMethodList_Service `protobuf:\"bytes,1,rep,name=services,proto3\" json:\"services,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *GrpcMethodList) Reset() {\n\t*x = GrpcMethodList{}\n\tmi := &file_envoy_config_core_v3_grpc_method_list_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcMethodList) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcMethodList) ProtoMessage() {}\n\nfunc (x *GrpcMethodList) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_method_list_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcMethodList.ProtoReflect.Descriptor instead.\nfunc (*GrpcMethodList) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_method_list_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *GrpcMethodList) GetServices() []*GrpcMethodList_Service {\n\tif x != nil {\n\t\treturn x.Services\n\t}\n\treturn nil\n}\n\ntype GrpcMethodList_Service struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the gRPC service.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// The names of the gRPC methods in this service.\n\tMethodNames   []string `protobuf:\"bytes,2,rep,name=method_names,json=methodNames,proto3\" json:\"method_names,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *GrpcMethodList_Service) Reset() {\n\t*x = GrpcMethodList_Service{}\n\tmi := &file_envoy_config_core_v3_grpc_method_list_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcMethodList_Service) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcMethodList_Service) ProtoMessage() {}\n\nfunc (x *GrpcMethodList_Service) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_method_list_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcMethodList_Service.ProtoReflect.Descriptor instead.\nfunc (*GrpcMethodList_Service) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_method_list_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *GrpcMethodList_Service) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcMethodList_Service) GetMethodNames() []string {\n\tif x != nil {\n\t\treturn x.MethodNames\n\t}\n\treturn nil\n}\n\nvar File_envoy_config_core_v3_grpc_method_list_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_grpc_method_list_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"+envoy/config/core/v3/grpc_method_list.proto\\x12\\x14envoy.config.core.v3\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\x8a\\x02\\n\" +\n\t\"\\x0eGrpcMethodList\\x12H\\n\" +\n\t\"\\bservices\\x18\\x01 \\x03(\\v2,.envoy.config.core.v3.GrpcMethodList.ServiceR\\bservices\\x1a\\x84\\x01\\n\" +\n\t\"\\aService\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x12+\\n\" +\n\t\"\\fmethod_names\\x18\\x02 \\x03(\\tB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\vmethodNames:/\\x9aň\\x1e*\\n\" +\n\t\"(envoy.api.v2.core.GrpcMethodList.Service:'\\x9aň\\x1e\\\"\\n\" +\n\t\" envoy.api.v2.core.GrpcMethodListB\\x87\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\x13GrpcMethodListProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_grpc_method_list_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_grpc_method_list_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_grpc_method_list_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_grpc_method_list_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_grpc_method_list_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_grpc_method_list_proto_rawDesc), len(file_envoy_config_core_v3_grpc_method_list_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_grpc_method_list_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_grpc_method_list_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_envoy_config_core_v3_grpc_method_list_proto_goTypes = []any{\n\t(*GrpcMethodList)(nil),         // 0: envoy.config.core.v3.GrpcMethodList\n\t(*GrpcMethodList_Service)(nil), // 1: envoy.config.core.v3.GrpcMethodList.Service\n}\nvar file_envoy_config_core_v3_grpc_method_list_proto_depIdxs = []int32{\n\t1, // 0: envoy.config.core.v3.GrpcMethodList.services:type_name -> envoy.config.core.v3.GrpcMethodList.Service\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_grpc_method_list_proto_init() }\nfunc file_envoy_config_core_v3_grpc_method_list_proto_init() {\n\tif File_envoy_config_core_v3_grpc_method_list_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_grpc_method_list_proto_rawDesc), len(file_envoy_config_core_v3_grpc_method_list_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_grpc_method_list_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_grpc_method_list_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_core_v3_grpc_method_list_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_grpc_method_list_proto = out.File\n\tfile_envoy_config_core_v3_grpc_method_list_proto_goTypes = nil\n\tfile_envoy_config_core_v3_grpc_method_list_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/grpc_method_list.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/grpc_method_list.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on GrpcMethodList with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *GrpcMethodList) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on GrpcMethodList with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in GrpcMethodListMultiError,\n// or nil if none found.\nfunc (m *GrpcMethodList) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcMethodList) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetServices() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcMethodListValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Services[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcMethodListValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Services[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcMethodListValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Services[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn GrpcMethodListMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcMethodListMultiError is an error wrapping multiple validation errors\n// returned by GrpcMethodList.ValidateAll() if the designated constraints\n// aren't met.\ntype GrpcMethodListMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcMethodListMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcMethodListMultiError) AllErrors() []error { return m }\n\n// GrpcMethodListValidationError is the validation error returned by\n// GrpcMethodList.Validate if the designated constraints aren't met.\ntype GrpcMethodListValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcMethodListValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e GrpcMethodListValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e GrpcMethodListValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e GrpcMethodListValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e GrpcMethodListValidationError) ErrorName() string { return \"GrpcMethodListValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e GrpcMethodListValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcMethodList.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcMethodListValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcMethodListValidationError{}\n\n// Validate checks the field values on GrpcMethodList_Service with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *GrpcMethodList_Service) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on GrpcMethodList_Service with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// GrpcMethodList_ServiceMultiError, or nil if none found.\nfunc (m *GrpcMethodList_Service) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcMethodList_Service) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := GrpcMethodList_ServiceValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(m.GetMethodNames()) < 1 {\n\t\terr := GrpcMethodList_ServiceValidationError{\n\t\t\tfield:  \"MethodNames\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn GrpcMethodList_ServiceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcMethodList_ServiceMultiError is an error wrapping multiple validation\n// errors returned by GrpcMethodList_Service.ValidateAll() if the designated\n// constraints aren't met.\ntype GrpcMethodList_ServiceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcMethodList_ServiceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcMethodList_ServiceMultiError) AllErrors() []error { return m }\n\n// GrpcMethodList_ServiceValidationError is the validation error returned by\n// GrpcMethodList_Service.Validate if the designated constraints aren't met.\ntype GrpcMethodList_ServiceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcMethodList_ServiceValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e GrpcMethodList_ServiceValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e GrpcMethodList_ServiceValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e GrpcMethodList_ServiceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e GrpcMethodList_ServiceValidationError) ErrorName() string {\n\treturn \"GrpcMethodList_ServiceValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e GrpcMethodList_ServiceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcMethodList_Service.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcMethodList_ServiceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcMethodList_ServiceValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/grpc_method_list_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/grpc_method_list.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *GrpcMethodList_Service) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcMethodList_Service) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcMethodList_Service) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.MethodNames) > 0 {\n\t\tfor iNdEx := len(m.MethodNames) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.MethodNames[iNdEx])\n\t\t\tcopy(dAtA[i:], m.MethodNames[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.MethodNames[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcMethodList) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcMethodList) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcMethodList) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Services) > 0 {\n\t\tfor iNdEx := len(m.Services) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Services[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcMethodList_Service) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.MethodNames) > 0 {\n\t\tfor _, s := range m.MethodNames {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcMethodList) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Services) > 0 {\n\t\tfor _, e := range m.Services {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/grpc_service.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/grpc_service.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\temptypb \"google.golang.org/protobuf/types/known/emptypb\"\n\tstructpb \"google.golang.org/protobuf/types/known/structpb\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// gRPC service configuration. This is used by :ref:`ApiConfigSource\n// <envoy_v3_api_msg_config.core.v3.ApiConfigSource>` and filter configurations.\n// [#next-free-field: 7]\ntype GrpcService struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to TargetSpecifier:\n\t//\n\t//\t*GrpcService_EnvoyGrpc_\n\t//\t*GrpcService_GoogleGrpc_\n\tTargetSpecifier isGrpcService_TargetSpecifier `protobuf_oneof:\"target_specifier\"`\n\t// The timeout for the gRPC request. This is the timeout for a specific\n\t// request.\n\tTimeout *durationpb.Duration `protobuf:\"bytes,3,opt,name=timeout,proto3\" json:\"timeout,omitempty\"`\n\t// Additional metadata to include in streams initiated to the GrpcService. This can be used for\n\t// scenarios in which additional ad hoc authorization headers (e.g. “x-foo-bar: baz-key“) are to\n\t// be injected. For more information, including details on header value syntax, see the\n\t// documentation on :ref:`custom request headers\n\t// <config_http_conn_man_headers_custom_request_headers>`.\n\tInitialMetadata []*HeaderValue `protobuf:\"bytes,5,rep,name=initial_metadata,json=initialMetadata,proto3\" json:\"initial_metadata,omitempty\"`\n\t// Optional default retry policy for RPCs or streams initiated toward this gRPC service.\n\t//\n\t// If an async stream does not have a retry policy configured in its per‑stream options, this\n\t// policy is used as the default.\n\t//\n\t// .. note::\n\t//\n\t//\tThis field is only applied by Envoy gRPC (``envoy_grpc``) clients. Google gRPC\n\t//\t(``google_grpc``) clients currently ignore this field.\n\t//\n\t// If not specified, no default retry policy is applied at the client level and retries only occur\n\t// when explicitly configured in per‑stream options.\n\tRetryPolicy   *RetryPolicy `protobuf:\"bytes,6,opt,name=retry_policy,json=retryPolicy,proto3\" json:\"retry_policy,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *GrpcService) Reset() {\n\t*x = GrpcService{}\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcService) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcService) ProtoMessage() {}\n\nfunc (x *GrpcService) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcService.ProtoReflect.Descriptor instead.\nfunc (*GrpcService) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *GrpcService) GetTargetSpecifier() isGrpcService_TargetSpecifier {\n\tif x != nil {\n\t\treturn x.TargetSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService) GetEnvoyGrpc() *GrpcService_EnvoyGrpc {\n\tif x != nil {\n\t\tif x, ok := x.TargetSpecifier.(*GrpcService_EnvoyGrpc_); ok {\n\t\t\treturn x.EnvoyGrpc\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService) GetGoogleGrpc() *GrpcService_GoogleGrpc {\n\tif x != nil {\n\t\tif x, ok := x.TargetSpecifier.(*GrpcService_GoogleGrpc_); ok {\n\t\t\treturn x.GoogleGrpc\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService) GetTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Timeout\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService) GetInitialMetadata() []*HeaderValue {\n\tif x != nil {\n\t\treturn x.InitialMetadata\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService) GetRetryPolicy() *RetryPolicy {\n\tif x != nil {\n\t\treturn x.RetryPolicy\n\t}\n\treturn nil\n}\n\ntype isGrpcService_TargetSpecifier interface {\n\tisGrpcService_TargetSpecifier()\n}\n\ntype GrpcService_EnvoyGrpc_ struct {\n\t// Envoy's in-built gRPC client.\n\t// See the :ref:`gRPC services overview <arch_overview_grpc_services>`\n\t// documentation for discussion on gRPC client selection.\n\tEnvoyGrpc *GrpcService_EnvoyGrpc `protobuf:\"bytes,1,opt,name=envoy_grpc,json=envoyGrpc,proto3,oneof\"`\n}\n\ntype GrpcService_GoogleGrpc_ struct {\n\t// `Google C++ gRPC client <https://github.com/grpc/grpc>`_\n\t// See the :ref:`gRPC services overview <arch_overview_grpc_services>`\n\t// documentation for discussion on gRPC client selection.\n\tGoogleGrpc *GrpcService_GoogleGrpc `protobuf:\"bytes,2,opt,name=google_grpc,json=googleGrpc,proto3,oneof\"`\n}\n\nfunc (*GrpcService_EnvoyGrpc_) isGrpcService_TargetSpecifier() {}\n\nfunc (*GrpcService_GoogleGrpc_) isGrpcService_TargetSpecifier() {}\n\n// [#next-free-field: 6]\ntype GrpcService_EnvoyGrpc struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the upstream gRPC cluster. SSL credentials will be supplied\n\t// in the :ref:`Cluster <envoy_v3_api_msg_config.cluster.v3.Cluster>` :ref:`transport_socket\n\t// <envoy_v3_api_field_config.cluster.v3.Cluster.transport_socket>`.\n\tClusterName string `protobuf:\"bytes,1,opt,name=cluster_name,json=clusterName,proto3\" json:\"cluster_name,omitempty\"`\n\t// The “:authority“ header in the grpc request. If this field is not set, the authority header value will be “cluster_name“.\n\t// Note that this authority does not override the SNI. The SNI is provided by the transport socket of the cluster.\n\tAuthority string `protobuf:\"bytes,2,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n\t// Specifies the retry backoff policy for re-establishing long‑lived xDS gRPC streams.\n\t//\n\t// This field is optional. If “retry_back_off.max_interval“ is not provided, it will be set to\n\t// ten times the configured “retry_back_off.base_interval“.\n\t//\n\t// .. note::\n\t//\n\t//\tThis field is only honored for management‑plane xDS gRPC streams created from\n\t//\t:ref:`ApiConfigSource <envoy_v3_api_msg_config.core.v3.ApiConfigSource>` that use\n\t//\t``envoy_grpc``. Data‑plane gRPC clients (for example external authorization or external\n\t//\tprocessing filters) must use :ref:`GrpcService.retry_policy\n\t//\t<envoy_v3_api_field_config.core.v3.GrpcService.retry_policy>` instead.\n\t//\n\t// If not set, xDS gRPC streams default to a base interval of 500ms and a maximum interval of 30s.\n\tRetryPolicy *RetryPolicy `protobuf:\"bytes,3,opt,name=retry_policy,json=retryPolicy,proto3\" json:\"retry_policy,omitempty\"`\n\t// Maximum gRPC message size that is allowed to be received.\n\t// If a message over this limit is received, the gRPC stream is terminated with the RESOURCE_EXHAUSTED error.\n\t// This limit is applied to individual messages in the streaming response and not the total size of streaming response.\n\t// Defaults to 0, which means unlimited.\n\tMaxReceiveMessageLength *wrapperspb.UInt32Value `protobuf:\"bytes,4,opt,name=max_receive_message_length,json=maxReceiveMessageLength,proto3\" json:\"max_receive_message_length,omitempty\"`\n\t// This provides gRPC client level control over envoy generated headers.\n\t// If false, the header will be sent but it can be overridden by per stream option.\n\t// If true, the header will be removed and can not be overridden by per stream option.\n\t// Default to false.\n\tSkipEnvoyHeaders bool `protobuf:\"varint,5,opt,name=skip_envoy_headers,json=skipEnvoyHeaders,proto3\" json:\"skip_envoy_headers,omitempty\"`\n\tunknownFields    protoimpl.UnknownFields\n\tsizeCache        protoimpl.SizeCache\n}\n\nfunc (x *GrpcService_EnvoyGrpc) Reset() {\n\t*x = GrpcService_EnvoyGrpc{}\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcService_EnvoyGrpc) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcService_EnvoyGrpc) ProtoMessage() {}\n\nfunc (x *GrpcService_EnvoyGrpc) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcService_EnvoyGrpc.ProtoReflect.Descriptor instead.\nfunc (*GrpcService_EnvoyGrpc) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *GrpcService_EnvoyGrpc) GetClusterName() string {\n\tif x != nil {\n\t\treturn x.ClusterName\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_EnvoyGrpc) GetAuthority() string {\n\tif x != nil {\n\t\treturn x.Authority\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_EnvoyGrpc) GetRetryPolicy() *RetryPolicy {\n\tif x != nil {\n\t\treturn x.RetryPolicy\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_EnvoyGrpc) GetMaxReceiveMessageLength() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxReceiveMessageLength\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_EnvoyGrpc) GetSkipEnvoyHeaders() bool {\n\tif x != nil {\n\t\treturn x.SkipEnvoyHeaders\n\t}\n\treturn false\n}\n\n// [#next-free-field: 11]\ntype GrpcService_GoogleGrpc struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The target URI when using the `Google C++ gRPC client\n\t// <https://github.com/grpc/grpc>`_.\n\tTargetUri string `protobuf:\"bytes,1,opt,name=target_uri,json=targetUri,proto3\" json:\"target_uri,omitempty\"`\n\t// The channel credentials to use. See `channel credentials\n\t// <https://grpc.io/docs/guides/auth.html#credential-types>`_.\n\t// Ignored if “channel_credentials_plugin“ is set.\n\tChannelCredentials *GrpcService_GoogleGrpc_ChannelCredentials `protobuf:\"bytes,2,opt,name=channel_credentials,json=channelCredentials,proto3\" json:\"channel_credentials,omitempty\"`\n\t// A list of channel credentials plugins.\n\t// The data plane will iterate over the list in order and stop at the first credential type\n\t// that it supports. This provides a mechanism for starting to use new credential types that\n\t// are not yet supported by all data planes.\n\t// [#not-implemented-hide:]\n\tChannelCredentialsPlugin []*anypb.Any `protobuf:\"bytes,9,rep,name=channel_credentials_plugin,json=channelCredentialsPlugin,proto3\" json:\"channel_credentials_plugin,omitempty\"`\n\t// The call credentials to use. See `channel credentials\n\t// <https://grpc.io/docs/guides/auth.html#credential-types>`_.\n\t// Ignored if “call_credentials_plugin“ is set.\n\tCallCredentials []*GrpcService_GoogleGrpc_CallCredentials `protobuf:\"bytes,3,rep,name=call_credentials,json=callCredentials,proto3\" json:\"call_credentials,omitempty\"`\n\t// A list of call credentials plugins. All supported plugins will be used.\n\t// Unsupported plugin types will be ignored.\n\t// [#not-implemented-hide:]\n\tCallCredentialsPlugin []*anypb.Any `protobuf:\"bytes,10,rep,name=call_credentials_plugin,json=callCredentialsPlugin,proto3\" json:\"call_credentials_plugin,omitempty\"`\n\t// The human readable prefix to use when emitting statistics for the gRPC\n\t// service.\n\t//\n\t// .. csv-table::\n\t//\n\t//\t:header: Name, Type, Description\n\t//\t:widths: 1, 1, 2\n\t//\n\t//\tstreams_total, Counter, Total number of streams opened\n\t//\tstreams_closed_<gRPC status code>, Counter, Total streams closed with <gRPC status code>\n\tStatPrefix string `protobuf:\"bytes,4,opt,name=stat_prefix,json=statPrefix,proto3\" json:\"stat_prefix,omitempty\"`\n\t// The name of the Google gRPC credentials factory to use. This must have been registered with\n\t// Envoy. If this is empty, a default credentials factory will be used that sets up channel\n\t// credentials based on other configuration parameters.\n\tCredentialsFactoryName string `protobuf:\"bytes,5,opt,name=credentials_factory_name,json=credentialsFactoryName,proto3\" json:\"credentials_factory_name,omitempty\"`\n\t// Additional configuration for site-specific customizations of the Google\n\t// gRPC library.\n\tConfig *structpb.Struct `protobuf:\"bytes,6,opt,name=config,proto3\" json:\"config,omitempty\"`\n\t// How many bytes each stream can buffer internally.\n\t// If not set an implementation defined default is applied (1MiB).\n\tPerStreamBufferLimitBytes *wrapperspb.UInt32Value `protobuf:\"bytes,7,opt,name=per_stream_buffer_limit_bytes,json=perStreamBufferLimitBytes,proto3\" json:\"per_stream_buffer_limit_bytes,omitempty\"`\n\t// Custom channels args.\n\tChannelArgs   *GrpcService_GoogleGrpc_ChannelArgs `protobuf:\"bytes,8,opt,name=channel_args,json=channelArgs,proto3\" json:\"channel_args,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *GrpcService_GoogleGrpc) Reset() {\n\t*x = GrpcService_GoogleGrpc{}\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcService_GoogleGrpc) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcService_GoogleGrpc) ProtoMessage() {}\n\nfunc (x *GrpcService_GoogleGrpc) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcService_GoogleGrpc.ProtoReflect.Descriptor instead.\nfunc (*GrpcService_GoogleGrpc) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 1}\n}\n\nfunc (x *GrpcService_GoogleGrpc) GetTargetUri() string {\n\tif x != nil {\n\t\treturn x.TargetUri\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc) GetChannelCredentials() *GrpcService_GoogleGrpc_ChannelCredentials {\n\tif x != nil {\n\t\treturn x.ChannelCredentials\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc) GetChannelCredentialsPlugin() []*anypb.Any {\n\tif x != nil {\n\t\treturn x.ChannelCredentialsPlugin\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc) GetCallCredentials() []*GrpcService_GoogleGrpc_CallCredentials {\n\tif x != nil {\n\t\treturn x.CallCredentials\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc) GetCallCredentialsPlugin() []*anypb.Any {\n\tif x != nil {\n\t\treturn x.CallCredentialsPlugin\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc) GetStatPrefix() string {\n\tif x != nil {\n\t\treturn x.StatPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc) GetCredentialsFactoryName() string {\n\tif x != nil {\n\t\treturn x.CredentialsFactoryName\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc) GetConfig() *structpb.Struct {\n\tif x != nil {\n\t\treturn x.Config\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc) GetPerStreamBufferLimitBytes() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.PerStreamBufferLimitBytes\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc) GetChannelArgs() *GrpcService_GoogleGrpc_ChannelArgs {\n\tif x != nil {\n\t\treturn x.ChannelArgs\n\t}\n\treturn nil\n}\n\n// See https://grpc.io/grpc/cpp/structgrpc_1_1_ssl_credentials_options.html.\ntype GrpcService_GoogleGrpc_SslCredentials struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// PEM encoded server root certificates.\n\tRootCerts *DataSource `protobuf:\"bytes,1,opt,name=root_certs,json=rootCerts,proto3\" json:\"root_certs,omitempty\"`\n\t// PEM encoded client private key.\n\tPrivateKey *DataSource `protobuf:\"bytes,2,opt,name=private_key,json=privateKey,proto3\" json:\"private_key,omitempty\"`\n\t// PEM encoded client certificate chain.\n\tCertChain     *DataSource `protobuf:\"bytes,3,opt,name=cert_chain,json=certChain,proto3\" json:\"cert_chain,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *GrpcService_GoogleGrpc_SslCredentials) Reset() {\n\t*x = GrpcService_GoogleGrpc_SslCredentials{}\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcService_GoogleGrpc_SslCredentials) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcService_GoogleGrpc_SslCredentials) ProtoMessage() {}\n\nfunc (x *GrpcService_GoogleGrpc_SslCredentials) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcService_GoogleGrpc_SslCredentials.ProtoReflect.Descriptor instead.\nfunc (*GrpcService_GoogleGrpc_SslCredentials) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 1, 0}\n}\n\nfunc (x *GrpcService_GoogleGrpc_SslCredentials) GetRootCerts() *DataSource {\n\tif x != nil {\n\t\treturn x.RootCerts\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc_SslCredentials) GetPrivateKey() *DataSource {\n\tif x != nil {\n\t\treturn x.PrivateKey\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc_SslCredentials) GetCertChain() *DataSource {\n\tif x != nil {\n\t\treturn x.CertChain\n\t}\n\treturn nil\n}\n\n// Local channel credentials. Only UDS is supported for now.\n// See https://github.com/grpc/grpc/pull/15909.\ntype GrpcService_GoogleGrpc_GoogleLocalCredentials struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *GrpcService_GoogleGrpc_GoogleLocalCredentials) Reset() {\n\t*x = GrpcService_GoogleGrpc_GoogleLocalCredentials{}\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcService_GoogleGrpc_GoogleLocalCredentials) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcService_GoogleGrpc_GoogleLocalCredentials) ProtoMessage() {}\n\nfunc (x *GrpcService_GoogleGrpc_GoogleLocalCredentials) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcService_GoogleGrpc_GoogleLocalCredentials.ProtoReflect.Descriptor instead.\nfunc (*GrpcService_GoogleGrpc_GoogleLocalCredentials) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 1, 1}\n}\n\n// See https://grpc.io/docs/guides/auth.html#credential-types to understand Channel and Call\n// credential types.\ntype GrpcService_GoogleGrpc_ChannelCredentials struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to CredentialSpecifier:\n\t//\n\t//\t*GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials\n\t//\t*GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault\n\t//\t*GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials\n\tCredentialSpecifier isGrpcService_GoogleGrpc_ChannelCredentials_CredentialSpecifier `protobuf_oneof:\"credential_specifier\"`\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelCredentials) Reset() {\n\t*x = GrpcService_GoogleGrpc_ChannelCredentials{}\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelCredentials) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcService_GoogleGrpc_ChannelCredentials) ProtoMessage() {}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelCredentials) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcService_GoogleGrpc_ChannelCredentials.ProtoReflect.Descriptor instead.\nfunc (*GrpcService_GoogleGrpc_ChannelCredentials) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 1, 2}\n}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelCredentials) GetCredentialSpecifier() isGrpcService_GoogleGrpc_ChannelCredentials_CredentialSpecifier {\n\tif x != nil {\n\t\treturn x.CredentialSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelCredentials) GetSslCredentials() *GrpcService_GoogleGrpc_SslCredentials {\n\tif x != nil {\n\t\tif x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials); ok {\n\t\t\treturn x.SslCredentials\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelCredentials) GetGoogleDefault() *emptypb.Empty {\n\tif x != nil {\n\t\tif x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault); ok {\n\t\t\treturn x.GoogleDefault\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelCredentials) GetLocalCredentials() *GrpcService_GoogleGrpc_GoogleLocalCredentials {\n\tif x != nil {\n\t\tif x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials); ok {\n\t\t\treturn x.LocalCredentials\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isGrpcService_GoogleGrpc_ChannelCredentials_CredentialSpecifier interface {\n\tisGrpcService_GoogleGrpc_ChannelCredentials_CredentialSpecifier()\n}\n\ntype GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials struct {\n\tSslCredentials *GrpcService_GoogleGrpc_SslCredentials `protobuf:\"bytes,1,opt,name=ssl_credentials,json=sslCredentials,proto3,oneof\"`\n}\n\ntype GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault struct {\n\t// https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61\n\tGoogleDefault *emptypb.Empty `protobuf:\"bytes,2,opt,name=google_default,json=googleDefault,proto3,oneof\"`\n}\n\ntype GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials struct {\n\tLocalCredentials *GrpcService_GoogleGrpc_GoogleLocalCredentials `protobuf:\"bytes,3,opt,name=local_credentials,json=localCredentials,proto3,oneof\"`\n}\n\nfunc (*GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials) isGrpcService_GoogleGrpc_ChannelCredentials_CredentialSpecifier() {\n}\n\nfunc (*GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault) isGrpcService_GoogleGrpc_ChannelCredentials_CredentialSpecifier() {\n}\n\nfunc (*GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials) isGrpcService_GoogleGrpc_ChannelCredentials_CredentialSpecifier() {\n}\n\n// [#next-free-field: 8]\ntype GrpcService_GoogleGrpc_CallCredentials struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to CredentialSpecifier:\n\t//\n\t//\t*GrpcService_GoogleGrpc_CallCredentials_AccessToken\n\t//\t*GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine\n\t//\t*GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken\n\t//\t*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess\n\t//\t*GrpcService_GoogleGrpc_CallCredentials_GoogleIam\n\t//\t*GrpcService_GoogleGrpc_CallCredentials_FromPlugin\n\t//\t*GrpcService_GoogleGrpc_CallCredentials_StsService_\n\tCredentialSpecifier isGrpcService_GoogleGrpc_CallCredentials_CredentialSpecifier `protobuf_oneof:\"credential_specifier\"`\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials) Reset() {\n\t*x = GrpcService_GoogleGrpc_CallCredentials{}\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcService_GoogleGrpc_CallCredentials) ProtoMessage() {}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcService_GoogleGrpc_CallCredentials.ProtoReflect.Descriptor instead.\nfunc (*GrpcService_GoogleGrpc_CallCredentials) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 1, 3}\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials) GetCredentialSpecifier() isGrpcService_GoogleGrpc_CallCredentials_CredentialSpecifier {\n\tif x != nil {\n\t\treturn x.CredentialSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials) GetAccessToken() string {\n\tif x != nil {\n\t\tif x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_AccessToken); ok {\n\t\t\treturn x.AccessToken\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials) GetGoogleComputeEngine() *emptypb.Empty {\n\tif x != nil {\n\t\tif x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine); ok {\n\t\t\treturn x.GoogleComputeEngine\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials) GetGoogleRefreshToken() string {\n\tif x != nil {\n\t\tif x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken); ok {\n\t\t\treturn x.GoogleRefreshToken\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials) GetServiceAccountJwtAccess() *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials {\n\tif x != nil {\n\t\tif x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess); ok {\n\t\t\treturn x.ServiceAccountJwtAccess\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials) GetGoogleIam() *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials {\n\tif x != nil {\n\t\tif x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_GoogleIam); ok {\n\t\t\treturn x.GoogleIam\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials) GetFromPlugin() *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin {\n\tif x != nil {\n\t\tif x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_FromPlugin); ok {\n\t\t\treturn x.FromPlugin\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials) GetStsService() *GrpcService_GoogleGrpc_CallCredentials_StsService {\n\tif x != nil {\n\t\tif x, ok := x.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_StsService_); ok {\n\t\t\treturn x.StsService\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isGrpcService_GoogleGrpc_CallCredentials_CredentialSpecifier interface {\n\tisGrpcService_GoogleGrpc_CallCredentials_CredentialSpecifier()\n}\n\ntype GrpcService_GoogleGrpc_CallCredentials_AccessToken struct {\n\t// Access token credentials.\n\t// https://grpc.io/grpc/cpp/namespacegrpc.html#ad3a80da696ffdaea943f0f858d7a360d.\n\tAccessToken string `protobuf:\"bytes,1,opt,name=access_token,json=accessToken,proto3,oneof\"`\n}\n\ntype GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine struct {\n\t// Google Compute Engine credentials.\n\t// https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61\n\tGoogleComputeEngine *emptypb.Empty `protobuf:\"bytes,2,opt,name=google_compute_engine,json=googleComputeEngine,proto3,oneof\"`\n}\n\ntype GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken struct {\n\t// Google refresh token credentials.\n\t// https://grpc.io/grpc/cpp/namespacegrpc.html#a96901c997b91bc6513b08491e0dca37c.\n\tGoogleRefreshToken string `protobuf:\"bytes,3,opt,name=google_refresh_token,json=googleRefreshToken,proto3,oneof\"`\n}\n\ntype GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess struct {\n\t// Service Account JWT Access credentials.\n\t// https://grpc.io/grpc/cpp/namespacegrpc.html#a92a9f959d6102461f66ee973d8e9d3aa.\n\tServiceAccountJwtAccess *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials `protobuf:\"bytes,4,opt,name=service_account_jwt_access,json=serviceAccountJwtAccess,proto3,oneof\"`\n}\n\ntype GrpcService_GoogleGrpc_CallCredentials_GoogleIam struct {\n\t// Google IAM credentials.\n\t// https://grpc.io/grpc/cpp/namespacegrpc.html#a9fc1fc101b41e680d47028166e76f9d0.\n\tGoogleIam *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials `protobuf:\"bytes,5,opt,name=google_iam,json=googleIam,proto3,oneof\"`\n}\n\ntype GrpcService_GoogleGrpc_CallCredentials_FromPlugin struct {\n\t// Custom authenticator credentials.\n\t// https://grpc.io/grpc/cpp/namespacegrpc.html#a823c6a4b19ffc71fb33e90154ee2ad07.\n\t// https://grpc.io/docs/guides/auth.html#extending-grpc-to-support-other-authentication-mechanisms.\n\tFromPlugin *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin `protobuf:\"bytes,6,opt,name=from_plugin,json=fromPlugin,proto3,oneof\"`\n}\n\ntype GrpcService_GoogleGrpc_CallCredentials_StsService_ struct {\n\t// Custom security token service which implements OAuth 2.0 token exchange.\n\t// https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16\n\t// See https://github.com/grpc/grpc/pull/19587.\n\tStsService *GrpcService_GoogleGrpc_CallCredentials_StsService `protobuf:\"bytes,7,opt,name=sts_service,json=stsService,proto3,oneof\"`\n}\n\nfunc (*GrpcService_GoogleGrpc_CallCredentials_AccessToken) isGrpcService_GoogleGrpc_CallCredentials_CredentialSpecifier() {\n}\n\nfunc (*GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine) isGrpcService_GoogleGrpc_CallCredentials_CredentialSpecifier() {\n}\n\nfunc (*GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken) isGrpcService_GoogleGrpc_CallCredentials_CredentialSpecifier() {\n}\n\nfunc (*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess) isGrpcService_GoogleGrpc_CallCredentials_CredentialSpecifier() {\n}\n\nfunc (*GrpcService_GoogleGrpc_CallCredentials_GoogleIam) isGrpcService_GoogleGrpc_CallCredentials_CredentialSpecifier() {\n}\n\nfunc (*GrpcService_GoogleGrpc_CallCredentials_FromPlugin) isGrpcService_GoogleGrpc_CallCredentials_CredentialSpecifier() {\n}\n\nfunc (*GrpcService_GoogleGrpc_CallCredentials_StsService_) isGrpcService_GoogleGrpc_CallCredentials_CredentialSpecifier() {\n}\n\n// Channel arguments.\ntype GrpcService_GoogleGrpc_ChannelArgs struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// See grpc_types.h GRPC_ARG #defines for keys that work here.\n\tArgs          map[string]*GrpcService_GoogleGrpc_ChannelArgs_Value `protobuf:\"bytes,1,rep,name=args,proto3\" json:\"args,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelArgs) Reset() {\n\t*x = GrpcService_GoogleGrpc_ChannelArgs{}\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelArgs) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcService_GoogleGrpc_ChannelArgs) ProtoMessage() {}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelArgs) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcService_GoogleGrpc_ChannelArgs.ProtoReflect.Descriptor instead.\nfunc (*GrpcService_GoogleGrpc_ChannelArgs) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 1, 4}\n}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelArgs) GetArgs() map[string]*GrpcService_GoogleGrpc_ChannelArgs_Value {\n\tif x != nil {\n\t\treturn x.Args\n\t}\n\treturn nil\n}\n\ntype GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials struct {\n\tstate                protoimpl.MessageState `protogen:\"open.v1\"`\n\tJsonKey              string                 `protobuf:\"bytes,1,opt,name=json_key,json=jsonKey,proto3\" json:\"json_key,omitempty\"`\n\tTokenLifetimeSeconds uint64                 `protobuf:\"varint,2,opt,name=token_lifetime_seconds,json=tokenLifetimeSeconds,proto3\" json:\"token_lifetime_seconds,omitempty\"`\n\tunknownFields        protoimpl.UnknownFields\n\tsizeCache            protoimpl.SizeCache\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) Reset() {\n\t*x = GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials{}\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[8]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) ProtoMessage() {}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[8]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials.ProtoReflect.Descriptor instead.\nfunc (*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 1, 3, 0}\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) GetJsonKey() string {\n\tif x != nil {\n\t\treturn x.JsonKey\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) GetTokenLifetimeSeconds() uint64 {\n\tif x != nil {\n\t\treturn x.TokenLifetimeSeconds\n\t}\n\treturn 0\n}\n\ntype GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials struct {\n\tstate              protoimpl.MessageState `protogen:\"open.v1\"`\n\tAuthorizationToken string                 `protobuf:\"bytes,1,opt,name=authorization_token,json=authorizationToken,proto3\" json:\"authorization_token,omitempty\"`\n\tAuthoritySelector  string                 `protobuf:\"bytes,2,opt,name=authority_selector,json=authoritySelector,proto3\" json:\"authority_selector,omitempty\"`\n\tunknownFields      protoimpl.UnknownFields\n\tsizeCache          protoimpl.SizeCache\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) Reset() {\n\t*x = GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials{}\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[9]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) ProtoMessage() {}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[9]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials.ProtoReflect.Descriptor instead.\nfunc (*GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 1, 3, 1}\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) GetAuthorizationToken() string {\n\tif x != nil {\n\t\treturn x.AuthorizationToken\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) GetAuthoritySelector() string {\n\tif x != nil {\n\t\treturn x.AuthoritySelector\n\t}\n\treturn \"\"\n}\n\ntype GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\tName  string                 `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// [#extension-category: envoy.grpc_credentials]\n\t//\n\t// Types that are valid to be assigned to ConfigType:\n\t//\n\t//\t*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig\n\tConfigType    isGrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_ConfigType `protobuf_oneof:\"config_type\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) Reset() {\n\t*x = GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin{}\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[10]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) ProtoMessage() {}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[10]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin.ProtoReflect.Descriptor instead.\nfunc (*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 1, 3, 2}\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) GetConfigType() isGrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_ConfigType {\n\tif x != nil {\n\t\treturn x.ConfigType\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) GetTypedConfig() *anypb.Any {\n\tif x != nil {\n\t\tif x, ok := x.ConfigType.(*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig); ok {\n\t\t\treturn x.TypedConfig\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isGrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_ConfigType interface {\n\tisGrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_ConfigType()\n}\n\ntype GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig struct {\n\tTypedConfig *anypb.Any `protobuf:\"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof\"`\n}\n\nfunc (*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig) isGrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_ConfigType() {\n}\n\n// Security token service configuration that allows Google gRPC to\n// fetch security token from an OAuth 2.0 authorization server.\n// See https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16 and\n// https://github.com/grpc/grpc/pull/19587.\n// [#next-free-field: 10]\ntype GrpcService_GoogleGrpc_CallCredentials_StsService struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// URI of the token exchange service that handles token exchange requests.\n\t// [#comment:TODO(asraa): Add URI validation when implemented. Tracked by\n\t// https://github.com/bufbuild/protoc-gen-validate/issues/303]\n\tTokenExchangeServiceUri string `protobuf:\"bytes,1,opt,name=token_exchange_service_uri,json=tokenExchangeServiceUri,proto3\" json:\"token_exchange_service_uri,omitempty\"`\n\t// Location of the target service or resource where the client\n\t// intends to use the requested security token.\n\tResource string `protobuf:\"bytes,2,opt,name=resource,proto3\" json:\"resource,omitempty\"`\n\t// Logical name of the target service where the client intends to\n\t// use the requested security token.\n\tAudience string `protobuf:\"bytes,3,opt,name=audience,proto3\" json:\"audience,omitempty\"`\n\t// The desired scope of the requested security token in the\n\t// context of the service or resource where the token will be used.\n\tScope string `protobuf:\"bytes,4,opt,name=scope,proto3\" json:\"scope,omitempty\"`\n\t// Type of the requested security token.\n\tRequestedTokenType string `protobuf:\"bytes,5,opt,name=requested_token_type,json=requestedTokenType,proto3\" json:\"requested_token_type,omitempty\"`\n\t// The path of subject token, a security token that represents the\n\t// identity of the party on behalf of whom the request is being made.\n\tSubjectTokenPath string `protobuf:\"bytes,6,opt,name=subject_token_path,json=subjectTokenPath,proto3\" json:\"subject_token_path,omitempty\"`\n\t// Type of the subject token.\n\tSubjectTokenType string `protobuf:\"bytes,7,opt,name=subject_token_type,json=subjectTokenType,proto3\" json:\"subject_token_type,omitempty\"`\n\t// The path of actor token, a security token that represents the identity\n\t// of the acting party. The acting party is authorized to use the\n\t// requested security token and act on behalf of the subject.\n\tActorTokenPath string `protobuf:\"bytes,8,opt,name=actor_token_path,json=actorTokenPath,proto3\" json:\"actor_token_path,omitempty\"`\n\t// Type of the actor token.\n\tActorTokenType string `protobuf:\"bytes,9,opt,name=actor_token_type,json=actorTokenType,proto3\" json:\"actor_token_type,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_StsService) Reset() {\n\t*x = GrpcService_GoogleGrpc_CallCredentials_StsService{}\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[11]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_StsService) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcService_GoogleGrpc_CallCredentials_StsService) ProtoMessage() {}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_StsService) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[11]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcService_GoogleGrpc_CallCredentials_StsService.ProtoReflect.Descriptor instead.\nfunc (*GrpcService_GoogleGrpc_CallCredentials_StsService) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 1, 3, 3}\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_StsService) GetTokenExchangeServiceUri() string {\n\tif x != nil {\n\t\treturn x.TokenExchangeServiceUri\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_StsService) GetResource() string {\n\tif x != nil {\n\t\treturn x.Resource\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_StsService) GetAudience() string {\n\tif x != nil {\n\t\treturn x.Audience\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_StsService) GetScope() string {\n\tif x != nil {\n\t\treturn x.Scope\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_StsService) GetRequestedTokenType() string {\n\tif x != nil {\n\t\treturn x.RequestedTokenType\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_StsService) GetSubjectTokenPath() string {\n\tif x != nil {\n\t\treturn x.SubjectTokenPath\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_StsService) GetSubjectTokenType() string {\n\tif x != nil {\n\t\treturn x.SubjectTokenType\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_StsService) GetActorTokenPath() string {\n\tif x != nil {\n\t\treturn x.ActorTokenPath\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc_CallCredentials_StsService) GetActorTokenType() string {\n\tif x != nil {\n\t\treturn x.ActorTokenType\n\t}\n\treturn \"\"\n}\n\ntype GrpcService_GoogleGrpc_ChannelArgs_Value struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Pointer values are not supported, since they don't make any sense when\n\t// delivered via the API.\n\t//\n\t// Types that are valid to be assigned to ValueSpecifier:\n\t//\n\t//\t*GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue\n\t//\t*GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue\n\tValueSpecifier isGrpcService_GoogleGrpc_ChannelArgs_Value_ValueSpecifier `protobuf_oneof:\"value_specifier\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelArgs_Value) Reset() {\n\t*x = GrpcService_GoogleGrpc_ChannelArgs_Value{}\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[12]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelArgs_Value) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcService_GoogleGrpc_ChannelArgs_Value) ProtoMessage() {}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelArgs_Value) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_grpc_service_proto_msgTypes[12]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcService_GoogleGrpc_ChannelArgs_Value.ProtoReflect.Descriptor instead.\nfunc (*GrpcService_GoogleGrpc_ChannelArgs_Value) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_grpc_service_proto_rawDescGZIP(), []int{0, 1, 4, 0}\n}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelArgs_Value) GetValueSpecifier() isGrpcService_GoogleGrpc_ChannelArgs_Value_ValueSpecifier {\n\tif x != nil {\n\t\treturn x.ValueSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelArgs_Value) GetStringValue() string {\n\tif x != nil {\n\t\tif x, ok := x.ValueSpecifier.(*GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue); ok {\n\t\t\treturn x.StringValue\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrpcService_GoogleGrpc_ChannelArgs_Value) GetIntValue() int64 {\n\tif x != nil {\n\t\tif x, ok := x.ValueSpecifier.(*GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue); ok {\n\t\t\treturn x.IntValue\n\t\t}\n\t}\n\treturn 0\n}\n\ntype isGrpcService_GoogleGrpc_ChannelArgs_Value_ValueSpecifier interface {\n\tisGrpcService_GoogleGrpc_ChannelArgs_Value_ValueSpecifier()\n}\n\ntype GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue struct {\n\tStringValue string `protobuf:\"bytes,1,opt,name=string_value,json=stringValue,proto3,oneof\"`\n}\n\ntype GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue struct {\n\tIntValue int64 `protobuf:\"varint,2,opt,name=int_value,json=intValue,proto3,oneof\"`\n}\n\nfunc (*GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue) isGrpcService_GoogleGrpc_ChannelArgs_Value_ValueSpecifier() {\n}\n\nfunc (*GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue) isGrpcService_GoogleGrpc_ChannelArgs_Value_ValueSpecifier() {\n}\n\nvar File_envoy_config_core_v3_grpc_service_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_grpc_service_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"'envoy/config/core/v3/grpc_service.proto\\x12\\x14envoy.config.core.v3\\x1a\\x1fenvoy/config/core/v3/base.proto\\x1a\\x19google/protobuf/any.proto\\x1a\\x1egoogle/protobuf/duration.proto\\x1a\\x1bgoogle/protobuf/empty.proto\\x1a\\x1cgoogle/protobuf/struct.proto\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a udpa/annotations/sensitive.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xc3$\\n\" +\n\t\"\\vGrpcService\\x12L\\n\" +\n\t\"\\n\" +\n\t\"envoy_grpc\\x18\\x01 \\x01(\\v2+.envoy.config.core.v3.GrpcService.EnvoyGrpcH\\x00R\\tenvoyGrpc\\x12O\\n\" +\n\t\"\\vgoogle_grpc\\x18\\x02 \\x01(\\v2,.envoy.config.core.v3.GrpcService.GoogleGrpcH\\x00R\\n\" +\n\t\"googleGrpc\\x123\\n\" +\n\t\"\\atimeout\\x18\\x03 \\x01(\\v2\\x19.google.protobuf.DurationR\\atimeout\\x12L\\n\" +\n\t\"\\x10initial_metadata\\x18\\x05 \\x03(\\v2!.envoy.config.core.v3.HeaderValueR\\x0finitialMetadata\\x12D\\n\" +\n\t\"\\fretry_policy\\x18\\x06 \\x01(\\v2!.envoy.config.core.v3.RetryPolicyR\\vretryPolicy\\x1a\\xe7\\x02\\n\" +\n\t\"\\tEnvoyGrpc\\x12*\\n\" +\n\t\"\\fcluster_name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\vclusterName\\x12/\\n\" +\n\t\"\\tauthority\\x18\\x02 \\x01(\\tB\\x11\\xfaB\\x0er\\f\\x10\\x00(\\x80\\x80\\x01\\xc8\\x01\\x00\\xc0\\x01\\x02R\\tauthority\\x12D\\n\" +\n\t\"\\fretry_policy\\x18\\x03 \\x01(\\v2!.envoy.config.core.v3.RetryPolicyR\\vretryPolicy\\x12Y\\n\" +\n\t\"\\x1amax_receive_message_length\\x18\\x04 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR\\x17maxReceiveMessageLength\\x12,\\n\" +\n\t\"\\x12skip_envoy_headers\\x18\\x05 \\x01(\\bR\\x10skipEnvoyHeaders:.\\x9aň\\x1e)\\n\" +\n\t\"'envoy.api.v2.core.GrpcService.EnvoyGrpc\\x1a\\x9c\\x1e\\n\" +\n\t\"\\n\" +\n\t\"GoogleGrpc\\x12&\\n\" +\n\t\"\\n\" +\n\t\"target_uri\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\ttargetUri\\x12p\\n\" +\n\t\"\\x13channel_credentials\\x18\\x02 \\x01(\\v2?.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentialsR\\x12channelCredentials\\x12R\\n\" +\n\t\"\\x1achannel_credentials_plugin\\x18\\t \\x03(\\v2\\x14.google.protobuf.AnyR\\x18channelCredentialsPlugin\\x12g\\n\" +\n\t\"\\x10call_credentials\\x18\\x03 \\x03(\\v2<.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentialsR\\x0fcallCredentials\\x12L\\n\" +\n\t\"\\x17call_credentials_plugin\\x18\\n\" +\n\t\" \\x03(\\v2\\x14.google.protobuf.AnyR\\x15callCredentialsPlugin\\x12(\\n\" +\n\t\"\\vstat_prefix\\x18\\x04 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\n\" +\n\t\"statPrefix\\x128\\n\" +\n\t\"\\x18credentials_factory_name\\x18\\x05 \\x01(\\tR\\x16credentialsFactoryName\\x12/\\n\" +\n\t\"\\x06config\\x18\\x06 \\x01(\\v2\\x17.google.protobuf.StructR\\x06config\\x12^\\n\" +\n\t\"\\x1dper_stream_buffer_limit_bytes\\x18\\a \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR\\x19perStreamBufferLimitBytes\\x12[\\n\" +\n\t\"\\fchannel_args\\x18\\b \\x01(\\v28.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgsR\\vchannelArgs\\x1a\\x9d\\x02\\n\" +\n\t\"\\x0eSslCredentials\\x12?\\n\" +\n\t\"\\n\" +\n\t\"root_certs\\x18\\x01 \\x01(\\v2 .envoy.config.core.v3.DataSourceR\\trootCerts\\x12I\\n\" +\n\t\"\\vprivate_key\\x18\\x02 \\x01(\\v2 .envoy.config.core.v3.DataSourceB\\x06\\xb8\\xb7\\x8b\\xa4\\x02\\x01R\\n\" +\n\t\"privateKey\\x12?\\n\" +\n\t\"\\n\" +\n\t\"cert_chain\\x18\\x03 \\x01(\\v2 .envoy.config.core.v3.DataSourceR\\tcertChain:>\\x9aň\\x1e9\\n\" +\n\t\"7envoy.api.v2.core.GrpcService.GoogleGrpc.SslCredentials\\x1a`\\n\" +\n\t\"\\x16GoogleLocalCredentials:F\\x9aň\\x1eA\\n\" +\n\t\"?envoy.api.v2.core.GrpcService.GoogleGrpc.GoogleLocalCredentials\\x1a\\x92\\x03\\n\" +\n\t\"\\x12ChannelCredentials\\x12f\\n\" +\n\t\"\\x0fssl_credentials\\x18\\x01 \\x01(\\v2;.envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentialsH\\x00R\\x0esslCredentials\\x12?\\n\" +\n\t\"\\x0egoogle_default\\x18\\x02 \\x01(\\v2\\x16.google.protobuf.EmptyH\\x00R\\rgoogleDefault\\x12r\\n\" +\n\t\"\\x11local_credentials\\x18\\x03 \\x01(\\v2C.envoy.config.core.v3.GrpcService.GoogleGrpc.GoogleLocalCredentialsH\\x00R\\x10localCredentials:B\\x9aň\\x1e=\\n\" +\n\t\";envoy.api.v2.core.GrpcService.GoogleGrpc.ChannelCredentialsB\\x1b\\n\" +\n\t\"\\x14credential_specifier\\x12\\x03\\xf8B\\x01\\x1a\\x88\\x0f\\n\" +\n\t\"\\x0fCallCredentials\\x12#\\n\" +\n\t\"\\faccess_token\\x18\\x01 \\x01(\\tH\\x00R\\vaccessToken\\x12L\\n\" +\n\t\"\\x15google_compute_engine\\x18\\x02 \\x01(\\v2\\x16.google.protobuf.EmptyH\\x00R\\x13googleComputeEngine\\x122\\n\" +\n\t\"\\x14google_refresh_token\\x18\\x03 \\x01(\\tH\\x00R\\x12googleRefreshToken\\x12\\x9e\\x01\\n\" +\n\t\"\\x1aservice_account_jwt_access\\x18\\x04 \\x01(\\v2_.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.ServiceAccountJWTAccessCredentialsH\\x00R\\x17serviceAccountJwtAccess\\x12r\\n\" +\n\t\"\\n\" +\n\t\"google_iam\\x18\\x05 \\x01(\\v2Q.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.GoogleIAMCredentialsH\\x00R\\tgoogleIam\\x12}\\n\" +\n\t\"\\vfrom_plugin\\x18\\x06 \\x01(\\v2Z.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPluginH\\x00R\\n\" +\n\t\"fromPlugin\\x12j\\n\" +\n\t\"\\vsts_service\\x18\\a \\x01(\\v2G.envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.StsServiceH\\x00R\\n\" +\n\t\"stsService\\x1a\\xd9\\x01\\n\" +\n\t\"\\\"ServiceAccountJWTAccessCredentials\\x12\\x19\\n\" +\n\t\"\\bjson_key\\x18\\x01 \\x01(\\tR\\ajsonKey\\x124\\n\" +\n\t\"\\x16token_lifetime_seconds\\x18\\x02 \\x01(\\x04R\\x14tokenLifetimeSeconds:b\\x9aň\\x1e]\\n\" +\n\t\"[envoy.api.v2.core.GrpcService.GoogleGrpc.CallCredentials.ServiceAccountJWTAccessCredentials\\x1a\\xcc\\x01\\n\" +\n\t\"\\x14GoogleIAMCredentials\\x12/\\n\" +\n\t\"\\x13authorization_token\\x18\\x01 \\x01(\\tR\\x12authorizationToken\\x12-\\n\" +\n\t\"\\x12authority_selector\\x18\\x02 \\x01(\\tR\\x11authoritySelector:T\\x9aň\\x1eO\\n\" +\n\t\"Menvoy.api.v2.core.GrpcService.GoogleGrpc.CallCredentials.GoogleIAMCredentials\\x1a\\xea\\x01\\n\" +\n\t\"\\x1dMetadataCredentialsFromPlugin\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x129\\n\" +\n\t\"\\ftyped_config\\x18\\x03 \\x01(\\v2\\x14.google.protobuf.AnyH\\x00R\\vtypedConfig:]\\x9aň\\x1eX\\n\" +\n\t\"Venvoy.api.v2.core.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPluginB\\r\\n\" +\n\t\"\\vconfig_typeJ\\x04\\b\\x02\\x10\\x03R\\x06config\\x1a\\xd7\\x03\\n\" +\n\t\"\\n\" +\n\t\"StsService\\x12;\\n\" +\n\t\"\\x1atoken_exchange_service_uri\\x18\\x01 \\x01(\\tR\\x17tokenExchangeServiceUri\\x12\\x1a\\n\" +\n\t\"\\bresource\\x18\\x02 \\x01(\\tR\\bresource\\x12\\x1a\\n\" +\n\t\"\\baudience\\x18\\x03 \\x01(\\tR\\baudience\\x12\\x14\\n\" +\n\t\"\\x05scope\\x18\\x04 \\x01(\\tR\\x05scope\\x120\\n\" +\n\t\"\\x14requested_token_type\\x18\\x05 \\x01(\\tR\\x12requestedTokenType\\x125\\n\" +\n\t\"\\x12subject_token_path\\x18\\x06 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x10subjectTokenPath\\x125\\n\" +\n\t\"\\x12subject_token_type\\x18\\a \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x10subjectTokenType\\x12(\\n\" +\n\t\"\\x10actor_token_path\\x18\\b \\x01(\\tR\\x0eactorTokenPath\\x12(\\n\" +\n\t\"\\x10actor_token_type\\x18\\t \\x01(\\tR\\x0eactorTokenType:J\\x9aň\\x1eE\\n\" +\n\t\"Cenvoy.api.v2.core.GrpcService.GoogleGrpc.CallCredentials.StsService:?\\x9aň\\x1e:\\n\" +\n\t\"8envoy.api.v2.core.GrpcService.GoogleGrpc.CallCredentialsB\\x1b\\n\" +\n\t\"\\x14credential_specifier\\x12\\x03\\xf8B\\x01\\x1a\\xc3\\x02\\n\" +\n\t\"\\vChannelArgs\\x12V\\n\" +\n\t\"\\x04args\\x18\\x01 \\x03(\\v2B.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.ArgsEntryR\\x04args\\x1ac\\n\" +\n\t\"\\x05Value\\x12#\\n\" +\n\t\"\\fstring_value\\x18\\x01 \\x01(\\tH\\x00R\\vstringValue\\x12\\x1d\\n\" +\n\t\"\\tint_value\\x18\\x02 \\x01(\\x03H\\x00R\\bintValueB\\x16\\n\" +\n\t\"\\x0fvalue_specifier\\x12\\x03\\xf8B\\x01\\x1aw\\n\" +\n\t\"\\tArgsEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12T\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2>.envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.ValueR\\x05value:\\x028\\x01:/\\x9aň\\x1e*\\n\" +\n\t\"(envoy.api.v2.core.GrpcService.GoogleGrpc:$\\x9aň\\x1e\\x1f\\n\" +\n\t\"\\x1denvoy.api.v2.core.GrpcServiceB\\x17\\n\" +\n\t\"\\x10target_specifier\\x12\\x03\\xf8B\\x01J\\x04\\b\\x04\\x10\\x05B\\x84\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\x10GrpcServiceProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_grpc_service_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_grpc_service_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_grpc_service_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_grpc_service_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_grpc_service_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_grpc_service_proto_rawDesc), len(file_envoy_config_core_v3_grpc_service_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_grpc_service_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_grpc_service_proto_msgTypes = make([]protoimpl.MessageInfo, 14)\nvar file_envoy_config_core_v3_grpc_service_proto_goTypes = []any{\n\t(*GrpcService)(nil),                                                               // 0: envoy.config.core.v3.GrpcService\n\t(*GrpcService_EnvoyGrpc)(nil),                                                     // 1: envoy.config.core.v3.GrpcService.EnvoyGrpc\n\t(*GrpcService_GoogleGrpc)(nil),                                                    // 2: envoy.config.core.v3.GrpcService.GoogleGrpc\n\t(*GrpcService_GoogleGrpc_SslCredentials)(nil),                                     // 3: envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials\n\t(*GrpcService_GoogleGrpc_GoogleLocalCredentials)(nil),                             // 4: envoy.config.core.v3.GrpcService.GoogleGrpc.GoogleLocalCredentials\n\t(*GrpcService_GoogleGrpc_ChannelCredentials)(nil),                                 // 5: envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials\n\t(*GrpcService_GoogleGrpc_CallCredentials)(nil),                                    // 6: envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials\n\t(*GrpcService_GoogleGrpc_ChannelArgs)(nil),                                        // 7: envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs\n\t(*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials)(nil), // 8: envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.ServiceAccountJWTAccessCredentials\n\t(*GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials)(nil),               // 9: envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.GoogleIAMCredentials\n\t(*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin)(nil),      // 10: envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPlugin\n\t(*GrpcService_GoogleGrpc_CallCredentials_StsService)(nil),                         // 11: envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.StsService\n\t(*GrpcService_GoogleGrpc_ChannelArgs_Value)(nil),                                  // 12: envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.Value\n\tnil,                            // 13: envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.ArgsEntry\n\t(*durationpb.Duration)(nil),    // 14: google.protobuf.Duration\n\t(*HeaderValue)(nil),            // 15: envoy.config.core.v3.HeaderValue\n\t(*RetryPolicy)(nil),            // 16: envoy.config.core.v3.RetryPolicy\n\t(*wrapperspb.UInt32Value)(nil), // 17: google.protobuf.UInt32Value\n\t(*anypb.Any)(nil),              // 18: google.protobuf.Any\n\t(*structpb.Struct)(nil),        // 19: google.protobuf.Struct\n\t(*DataSource)(nil),             // 20: envoy.config.core.v3.DataSource\n\t(*emptypb.Empty)(nil),          // 21: google.protobuf.Empty\n}\nvar file_envoy_config_core_v3_grpc_service_proto_depIdxs = []int32{\n\t1,  // 0: envoy.config.core.v3.GrpcService.envoy_grpc:type_name -> envoy.config.core.v3.GrpcService.EnvoyGrpc\n\t2,  // 1: envoy.config.core.v3.GrpcService.google_grpc:type_name -> envoy.config.core.v3.GrpcService.GoogleGrpc\n\t14, // 2: envoy.config.core.v3.GrpcService.timeout:type_name -> google.protobuf.Duration\n\t15, // 3: envoy.config.core.v3.GrpcService.initial_metadata:type_name -> envoy.config.core.v3.HeaderValue\n\t16, // 4: envoy.config.core.v3.GrpcService.retry_policy:type_name -> envoy.config.core.v3.RetryPolicy\n\t16, // 5: envoy.config.core.v3.GrpcService.EnvoyGrpc.retry_policy:type_name -> envoy.config.core.v3.RetryPolicy\n\t17, // 6: envoy.config.core.v3.GrpcService.EnvoyGrpc.max_receive_message_length:type_name -> google.protobuf.UInt32Value\n\t5,  // 7: envoy.config.core.v3.GrpcService.GoogleGrpc.channel_credentials:type_name -> envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials\n\t18, // 8: envoy.config.core.v3.GrpcService.GoogleGrpc.channel_credentials_plugin:type_name -> google.protobuf.Any\n\t6,  // 9: envoy.config.core.v3.GrpcService.GoogleGrpc.call_credentials:type_name -> envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials\n\t18, // 10: envoy.config.core.v3.GrpcService.GoogleGrpc.call_credentials_plugin:type_name -> google.protobuf.Any\n\t19, // 11: envoy.config.core.v3.GrpcService.GoogleGrpc.config:type_name -> google.protobuf.Struct\n\t17, // 12: envoy.config.core.v3.GrpcService.GoogleGrpc.per_stream_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value\n\t7,  // 13: envoy.config.core.v3.GrpcService.GoogleGrpc.channel_args:type_name -> envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs\n\t20, // 14: envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials.root_certs:type_name -> envoy.config.core.v3.DataSource\n\t20, // 15: envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials.private_key:type_name -> envoy.config.core.v3.DataSource\n\t20, // 16: envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials.cert_chain:type_name -> envoy.config.core.v3.DataSource\n\t3,  // 17: envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials.ssl_credentials:type_name -> envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials\n\t21, // 18: envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials.google_default:type_name -> google.protobuf.Empty\n\t4,  // 19: envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials.local_credentials:type_name -> envoy.config.core.v3.GrpcService.GoogleGrpc.GoogleLocalCredentials\n\t21, // 20: envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.google_compute_engine:type_name -> google.protobuf.Empty\n\t8,  // 21: envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.service_account_jwt_access:type_name -> envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.ServiceAccountJWTAccessCredentials\n\t9,  // 22: envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.google_iam:type_name -> envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.GoogleIAMCredentials\n\t10, // 23: envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.from_plugin:type_name -> envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPlugin\n\t11, // 24: envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.sts_service:type_name -> envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.StsService\n\t13, // 25: envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.args:type_name -> envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.ArgsEntry\n\t18, // 26: envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPlugin.typed_config:type_name -> google.protobuf.Any\n\t12, // 27: envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.ArgsEntry.value:type_name -> envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.Value\n\t28, // [28:28] is the sub-list for method output_type\n\t28, // [28:28] is the sub-list for method input_type\n\t28, // [28:28] is the sub-list for extension type_name\n\t28, // [28:28] is the sub-list for extension extendee\n\t0,  // [0:28] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_grpc_service_proto_init() }\nfunc file_envoy_config_core_v3_grpc_service_proto_init() {\n\tif File_envoy_config_core_v3_grpc_service_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_core_v3_base_proto_init()\n\tfile_envoy_config_core_v3_grpc_service_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*GrpcService_EnvoyGrpc_)(nil),\n\t\t(*GrpcService_GoogleGrpc_)(nil),\n\t}\n\tfile_envoy_config_core_v3_grpc_service_proto_msgTypes[5].OneofWrappers = []any{\n\t\t(*GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials)(nil),\n\t\t(*GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault)(nil),\n\t\t(*GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials)(nil),\n\t}\n\tfile_envoy_config_core_v3_grpc_service_proto_msgTypes[6].OneofWrappers = []any{\n\t\t(*GrpcService_GoogleGrpc_CallCredentials_AccessToken)(nil),\n\t\t(*GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine)(nil),\n\t\t(*GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken)(nil),\n\t\t(*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess)(nil),\n\t\t(*GrpcService_GoogleGrpc_CallCredentials_GoogleIam)(nil),\n\t\t(*GrpcService_GoogleGrpc_CallCredentials_FromPlugin)(nil),\n\t\t(*GrpcService_GoogleGrpc_CallCredentials_StsService_)(nil),\n\t}\n\tfile_envoy_config_core_v3_grpc_service_proto_msgTypes[10].OneofWrappers = []any{\n\t\t(*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig)(nil),\n\t}\n\tfile_envoy_config_core_v3_grpc_service_proto_msgTypes[12].OneofWrappers = []any{\n\t\t(*GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue)(nil),\n\t\t(*GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_grpc_service_proto_rawDesc), len(file_envoy_config_core_v3_grpc_service_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   14,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_grpc_service_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_grpc_service_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_core_v3_grpc_service_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_grpc_service_proto = out.File\n\tfile_envoy_config_core_v3_grpc_service_proto_goTypes = nil\n\tfile_envoy_config_core_v3_grpc_service_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/grpc_service.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/grpc_service.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on GrpcService with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *GrpcService) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on GrpcService with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in GrpcServiceMultiError, or\n// nil if none found.\nfunc (m *GrpcService) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcService) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetTimeout()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, GrpcServiceValidationError{\n\t\t\t\t\tfield:  \"Timeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, GrpcServiceValidationError{\n\t\t\t\t\tfield:  \"Timeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetTimeout()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn GrpcServiceValidationError{\n\t\t\t\tfield:  \"Timeout\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetInitialMetadata() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcServiceValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"InitialMetadata[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcServiceValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"InitialMetadata[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcServiceValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"InitialMetadata[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRetryPolicy()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, GrpcServiceValidationError{\n\t\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, GrpcServiceValidationError{\n\t\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRetryPolicy()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn GrpcServiceValidationError{\n\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\toneofTargetSpecifierPresent := false\n\tswitch v := m.TargetSpecifier.(type) {\n\tcase *GrpcService_EnvoyGrpc_:\n\t\tif v == nil {\n\t\t\terr := GrpcServiceValidationError{\n\t\t\t\tfield:  \"TargetSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofTargetSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetEnvoyGrpc()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcServiceValidationError{\n\t\t\t\t\t\tfield:  \"EnvoyGrpc\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcServiceValidationError{\n\t\t\t\t\t\tfield:  \"EnvoyGrpc\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetEnvoyGrpc()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcServiceValidationError{\n\t\t\t\t\tfield:  \"EnvoyGrpc\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *GrpcService_GoogleGrpc_:\n\t\tif v == nil {\n\t\t\terr := GrpcServiceValidationError{\n\t\t\t\tfield:  \"TargetSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofTargetSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetGoogleGrpc()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcServiceValidationError{\n\t\t\t\t\t\tfield:  \"GoogleGrpc\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcServiceValidationError{\n\t\t\t\t\t\tfield:  \"GoogleGrpc\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetGoogleGrpc()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcServiceValidationError{\n\t\t\t\t\tfield:  \"GoogleGrpc\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofTargetSpecifierPresent {\n\t\terr := GrpcServiceValidationError{\n\t\t\tfield:  \"TargetSpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn GrpcServiceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcServiceMultiError is an error wrapping multiple validation errors\n// returned by GrpcService.ValidateAll() if the designated constraints aren't met.\ntype GrpcServiceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcServiceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcServiceMultiError) AllErrors() []error { return m }\n\n// GrpcServiceValidationError is the validation error returned by\n// GrpcService.Validate if the designated constraints aren't met.\ntype GrpcServiceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcServiceValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e GrpcServiceValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e GrpcServiceValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e GrpcServiceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e GrpcServiceValidationError) ErrorName() string { return \"GrpcServiceValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e GrpcServiceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcService.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcServiceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcServiceValidationError{}\n\n// Validate checks the field values on GrpcService_EnvoyGrpc with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *GrpcService_EnvoyGrpc) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on GrpcService_EnvoyGrpc with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// GrpcService_EnvoyGrpcMultiError, or nil if none found.\nfunc (m *GrpcService_EnvoyGrpc) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcService_EnvoyGrpc) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetClusterName()) < 1 {\n\t\terr := GrpcService_EnvoyGrpcValidationError{\n\t\t\tfield:  \"ClusterName\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif utf8.RuneCountInString(m.GetAuthority()) < 0 {\n\t\terr := GrpcService_EnvoyGrpcValidationError{\n\t\t\tfield:  \"Authority\",\n\t\t\treason: \"value length must be at least 0 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(m.GetAuthority()) > 16384 {\n\t\terr := GrpcService_EnvoyGrpcValidationError{\n\t\t\tfield:  \"Authority\",\n\t\t\treason: \"value length must be at most 16384 bytes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif !_GrpcService_EnvoyGrpc_Authority_Pattern.MatchString(m.GetAuthority()) {\n\t\terr := GrpcService_EnvoyGrpcValidationError{\n\t\t\tfield:  \"Authority\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRetryPolicy()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_EnvoyGrpcValidationError{\n\t\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_EnvoyGrpcValidationError{\n\t\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRetryPolicy()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn GrpcService_EnvoyGrpcValidationError{\n\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxReceiveMessageLength()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_EnvoyGrpcValidationError{\n\t\t\t\t\tfield:  \"MaxReceiveMessageLength\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_EnvoyGrpcValidationError{\n\t\t\t\t\tfield:  \"MaxReceiveMessageLength\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxReceiveMessageLength()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn GrpcService_EnvoyGrpcValidationError{\n\t\t\t\tfield:  \"MaxReceiveMessageLength\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for SkipEnvoyHeaders\n\n\tif len(errors) > 0 {\n\t\treturn GrpcService_EnvoyGrpcMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcService_EnvoyGrpcMultiError is an error wrapping multiple validation\n// errors returned by GrpcService_EnvoyGrpc.ValidateAll() if the designated\n// constraints aren't met.\ntype GrpcService_EnvoyGrpcMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcService_EnvoyGrpcMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcService_EnvoyGrpcMultiError) AllErrors() []error { return m }\n\n// GrpcService_EnvoyGrpcValidationError is the validation error returned by\n// GrpcService_EnvoyGrpc.Validate if the designated constraints aren't met.\ntype GrpcService_EnvoyGrpcValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcService_EnvoyGrpcValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e GrpcService_EnvoyGrpcValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e GrpcService_EnvoyGrpcValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e GrpcService_EnvoyGrpcValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e GrpcService_EnvoyGrpcValidationError) ErrorName() string {\n\treturn \"GrpcService_EnvoyGrpcValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e GrpcService_EnvoyGrpcValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcService_EnvoyGrpc.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcService_EnvoyGrpcValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcService_EnvoyGrpcValidationError{}\n\nvar _GrpcService_EnvoyGrpc_Authority_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on GrpcService_GoogleGrpc with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *GrpcService_GoogleGrpc) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on GrpcService_GoogleGrpc with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// GrpcService_GoogleGrpcMultiError, or nil if none found.\nfunc (m *GrpcService_GoogleGrpc) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcService_GoogleGrpc) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetTargetUri()) < 1 {\n\t\terr := GrpcService_GoogleGrpcValidationError{\n\t\t\tfield:  \"TargetUri\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetChannelCredentials()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\tfield:  \"ChannelCredentials\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\tfield:  \"ChannelCredentials\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetChannelCredentials()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn GrpcService_GoogleGrpcValidationError{\n\t\t\t\tfield:  \"ChannelCredentials\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetChannelCredentialsPlugin() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ChannelCredentialsPlugin[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ChannelCredentialsPlugin[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ChannelCredentialsPlugin[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetCallCredentials() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"CallCredentials[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"CallCredentials[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"CallCredentials[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetCallCredentialsPlugin() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"CallCredentialsPlugin[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"CallCredentialsPlugin[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"CallCredentialsPlugin[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif utf8.RuneCountInString(m.GetStatPrefix()) < 1 {\n\t\terr := GrpcService_GoogleGrpcValidationError{\n\t\t\tfield:  \"StatPrefix\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for CredentialsFactoryName\n\n\tif all {\n\t\tswitch v := interface{}(m.GetConfig()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\tfield:  \"Config\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\tfield:  \"Config\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetConfig()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn GrpcService_GoogleGrpcValidationError{\n\t\t\t\tfield:  \"Config\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPerStreamBufferLimitBytes()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\tfield:  \"PerStreamBufferLimitBytes\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\tfield:  \"PerStreamBufferLimitBytes\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPerStreamBufferLimitBytes()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn GrpcService_GoogleGrpcValidationError{\n\t\t\t\tfield:  \"PerStreamBufferLimitBytes\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetChannelArgs()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\tfield:  \"ChannelArgs\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_GoogleGrpcValidationError{\n\t\t\t\t\tfield:  \"ChannelArgs\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetChannelArgs()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn GrpcService_GoogleGrpcValidationError{\n\t\t\t\tfield:  \"ChannelArgs\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn GrpcService_GoogleGrpcMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcService_GoogleGrpcMultiError is an error wrapping multiple validation\n// errors returned by GrpcService_GoogleGrpc.ValidateAll() if the designated\n// constraints aren't met.\ntype GrpcService_GoogleGrpcMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcService_GoogleGrpcMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcService_GoogleGrpcMultiError) AllErrors() []error { return m }\n\n// GrpcService_GoogleGrpcValidationError is the validation error returned by\n// GrpcService_GoogleGrpc.Validate if the designated constraints aren't met.\ntype GrpcService_GoogleGrpcValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcService_GoogleGrpcValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e GrpcService_GoogleGrpcValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e GrpcService_GoogleGrpcValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e GrpcService_GoogleGrpcValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e GrpcService_GoogleGrpcValidationError) ErrorName() string {\n\treturn \"GrpcService_GoogleGrpcValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e GrpcService_GoogleGrpcValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcService_GoogleGrpc.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcService_GoogleGrpcValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcService_GoogleGrpcValidationError{}\n\n// Validate checks the field values on GrpcService_GoogleGrpc_SslCredentials\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the first error encountered is returned, or nil if\n// there are no violations.\nfunc (m *GrpcService_GoogleGrpc_SslCredentials) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on GrpcService_GoogleGrpc_SslCredentials\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// GrpcService_GoogleGrpc_SslCredentialsMultiError, or nil if none found.\nfunc (m *GrpcService_GoogleGrpc_SslCredentials) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcService_GoogleGrpc_SslCredentials) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRootCerts()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_SslCredentialsValidationError{\n\t\t\t\t\tfield:  \"RootCerts\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_SslCredentialsValidationError{\n\t\t\t\t\tfield:  \"RootCerts\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRootCerts()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn GrpcService_GoogleGrpc_SslCredentialsValidationError{\n\t\t\t\tfield:  \"RootCerts\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPrivateKey()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_SslCredentialsValidationError{\n\t\t\t\t\tfield:  \"PrivateKey\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_SslCredentialsValidationError{\n\t\t\t\t\tfield:  \"PrivateKey\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPrivateKey()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn GrpcService_GoogleGrpc_SslCredentialsValidationError{\n\t\t\t\tfield:  \"PrivateKey\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetCertChain()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_SslCredentialsValidationError{\n\t\t\t\t\tfield:  \"CertChain\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_SslCredentialsValidationError{\n\t\t\t\t\tfield:  \"CertChain\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetCertChain()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn GrpcService_GoogleGrpc_SslCredentialsValidationError{\n\t\t\t\tfield:  \"CertChain\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn GrpcService_GoogleGrpc_SslCredentialsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcService_GoogleGrpc_SslCredentialsMultiError is an error wrapping\n// multiple validation errors returned by\n// GrpcService_GoogleGrpc_SslCredentials.ValidateAll() if the designated\n// constraints aren't met.\ntype GrpcService_GoogleGrpc_SslCredentialsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcService_GoogleGrpc_SslCredentialsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcService_GoogleGrpc_SslCredentialsMultiError) AllErrors() []error { return m }\n\n// GrpcService_GoogleGrpc_SslCredentialsValidationError is the validation error\n// returned by GrpcService_GoogleGrpc_SslCredentials.Validate if the\n// designated constraints aren't met.\ntype GrpcService_GoogleGrpc_SslCredentialsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcService_GoogleGrpc_SslCredentialsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e GrpcService_GoogleGrpc_SslCredentialsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e GrpcService_GoogleGrpc_SslCredentialsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e GrpcService_GoogleGrpc_SslCredentialsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e GrpcService_GoogleGrpc_SslCredentialsValidationError) ErrorName() string {\n\treturn \"GrpcService_GoogleGrpc_SslCredentialsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e GrpcService_GoogleGrpc_SslCredentialsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcService_GoogleGrpc_SslCredentials.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcService_GoogleGrpc_SslCredentialsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcService_GoogleGrpc_SslCredentialsValidationError{}\n\n// Validate checks the field values on\n// GrpcService_GoogleGrpc_GoogleLocalCredentials with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *GrpcService_GoogleGrpc_GoogleLocalCredentials) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// GrpcService_GoogleGrpc_GoogleLocalCredentials with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in\n// GrpcService_GoogleGrpc_GoogleLocalCredentialsMultiError, or nil if none found.\nfunc (m *GrpcService_GoogleGrpc_GoogleLocalCredentials) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcService_GoogleGrpc_GoogleLocalCredentials) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn GrpcService_GoogleGrpc_GoogleLocalCredentialsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcService_GoogleGrpc_GoogleLocalCredentialsMultiError is an error wrapping\n// multiple validation errors returned by\n// GrpcService_GoogleGrpc_GoogleLocalCredentials.ValidateAll() if the\n// designated constraints aren't met.\ntype GrpcService_GoogleGrpc_GoogleLocalCredentialsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcService_GoogleGrpc_GoogleLocalCredentialsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcService_GoogleGrpc_GoogleLocalCredentialsMultiError) AllErrors() []error { return m }\n\n// GrpcService_GoogleGrpc_GoogleLocalCredentialsValidationError is the\n// validation error returned by\n// GrpcService_GoogleGrpc_GoogleLocalCredentials.Validate if the designated\n// constraints aren't met.\ntype GrpcService_GoogleGrpc_GoogleLocalCredentialsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcService_GoogleGrpc_GoogleLocalCredentialsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e GrpcService_GoogleGrpc_GoogleLocalCredentialsValidationError) Reason() string {\n\treturn e.reason\n}\n\n// Cause function returns cause value.\nfunc (e GrpcService_GoogleGrpc_GoogleLocalCredentialsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e GrpcService_GoogleGrpc_GoogleLocalCredentialsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e GrpcService_GoogleGrpc_GoogleLocalCredentialsValidationError) ErrorName() string {\n\treturn \"GrpcService_GoogleGrpc_GoogleLocalCredentialsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e GrpcService_GoogleGrpc_GoogleLocalCredentialsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcService_GoogleGrpc_GoogleLocalCredentials.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcService_GoogleGrpc_GoogleLocalCredentialsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcService_GoogleGrpc_GoogleLocalCredentialsValidationError{}\n\n// Validate checks the field values on\n// GrpcService_GoogleGrpc_ChannelCredentials with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// GrpcService_GoogleGrpc_ChannelCredentials with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in\n// GrpcService_GoogleGrpc_ChannelCredentialsMultiError, or nil if none found.\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofCredentialSpecifierPresent := false\n\tswitch v := m.CredentialSpecifier.(type) {\n\tcase *GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials:\n\t\tif v == nil {\n\t\t\terr := GrpcService_GoogleGrpc_ChannelCredentialsValidationError{\n\t\t\t\tfield:  \"CredentialSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofCredentialSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetSslCredentials()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_ChannelCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"SslCredentials\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_ChannelCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"SslCredentials\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetSslCredentials()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcService_GoogleGrpc_ChannelCredentialsValidationError{\n\t\t\t\t\tfield:  \"SslCredentials\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault:\n\t\tif v == nil {\n\t\t\terr := GrpcService_GoogleGrpc_ChannelCredentialsValidationError{\n\t\t\t\tfield:  \"CredentialSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofCredentialSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetGoogleDefault()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_ChannelCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"GoogleDefault\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_ChannelCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"GoogleDefault\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetGoogleDefault()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcService_GoogleGrpc_ChannelCredentialsValidationError{\n\t\t\t\t\tfield:  \"GoogleDefault\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials:\n\t\tif v == nil {\n\t\t\terr := GrpcService_GoogleGrpc_ChannelCredentialsValidationError{\n\t\t\t\tfield:  \"CredentialSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofCredentialSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetLocalCredentials()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_ChannelCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"LocalCredentials\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_ChannelCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"LocalCredentials\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetLocalCredentials()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcService_GoogleGrpc_ChannelCredentialsValidationError{\n\t\t\t\t\tfield:  \"LocalCredentials\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofCredentialSpecifierPresent {\n\t\terr := GrpcService_GoogleGrpc_ChannelCredentialsValidationError{\n\t\t\tfield:  \"CredentialSpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn GrpcService_GoogleGrpc_ChannelCredentialsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcService_GoogleGrpc_ChannelCredentialsMultiError is an error wrapping\n// multiple validation errors returned by\n// GrpcService_GoogleGrpc_ChannelCredentials.ValidateAll() if the designated\n// constraints aren't met.\ntype GrpcService_GoogleGrpc_ChannelCredentialsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcService_GoogleGrpc_ChannelCredentialsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcService_GoogleGrpc_ChannelCredentialsMultiError) AllErrors() []error { return m }\n\n// GrpcService_GoogleGrpc_ChannelCredentialsValidationError is the validation\n// error returned by GrpcService_GoogleGrpc_ChannelCredentials.Validate if the\n// designated constraints aren't met.\ntype GrpcService_GoogleGrpc_ChannelCredentialsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcService_GoogleGrpc_ChannelCredentialsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e GrpcService_GoogleGrpc_ChannelCredentialsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e GrpcService_GoogleGrpc_ChannelCredentialsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e GrpcService_GoogleGrpc_ChannelCredentialsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e GrpcService_GoogleGrpc_ChannelCredentialsValidationError) ErrorName() string {\n\treturn \"GrpcService_GoogleGrpc_ChannelCredentialsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e GrpcService_GoogleGrpc_ChannelCredentialsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcService_GoogleGrpc_ChannelCredentials.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcService_GoogleGrpc_ChannelCredentialsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcService_GoogleGrpc_ChannelCredentialsValidationError{}\n\n// Validate checks the field values on GrpcService_GoogleGrpc_CallCredentials\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the first error encountered is returned, or nil if\n// there are no violations.\nfunc (m *GrpcService_GoogleGrpc_CallCredentials) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// GrpcService_GoogleGrpc_CallCredentials with the rules defined in the proto\n// definition for this message. If any rules are violated, the result is a\n// list of violation errors wrapped in\n// GrpcService_GoogleGrpc_CallCredentialsMultiError, or nil if none found.\nfunc (m *GrpcService_GoogleGrpc_CallCredentials) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofCredentialSpecifierPresent := false\n\tswitch v := m.CredentialSpecifier.(type) {\n\tcase *GrpcService_GoogleGrpc_CallCredentials_AccessToken:\n\t\tif v == nil {\n\t\t\terr := GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\tfield:  \"CredentialSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofCredentialSpecifierPresent = true\n\t\t// no validation rules for AccessToken\n\tcase *GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine:\n\t\tif v == nil {\n\t\t\terr := GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\tfield:  \"CredentialSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofCredentialSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetGoogleComputeEngine()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"GoogleComputeEngine\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"GoogleComputeEngine\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetGoogleComputeEngine()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\tfield:  \"GoogleComputeEngine\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken:\n\t\tif v == nil {\n\t\t\terr := GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\tfield:  \"CredentialSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofCredentialSpecifierPresent = true\n\t\t// no validation rules for GoogleRefreshToken\n\tcase *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess:\n\t\tif v == nil {\n\t\t\terr := GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\tfield:  \"CredentialSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofCredentialSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetServiceAccountJwtAccess()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"ServiceAccountJwtAccess\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"ServiceAccountJwtAccess\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetServiceAccountJwtAccess()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\tfield:  \"ServiceAccountJwtAccess\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *GrpcService_GoogleGrpc_CallCredentials_GoogleIam:\n\t\tif v == nil {\n\t\t\terr := GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\tfield:  \"CredentialSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofCredentialSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetGoogleIam()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"GoogleIam\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"GoogleIam\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetGoogleIam()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\tfield:  \"GoogleIam\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *GrpcService_GoogleGrpc_CallCredentials_FromPlugin:\n\t\tif v == nil {\n\t\t\terr := GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\tfield:  \"CredentialSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofCredentialSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetFromPlugin()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"FromPlugin\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"FromPlugin\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetFromPlugin()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\tfield:  \"FromPlugin\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *GrpcService_GoogleGrpc_CallCredentials_StsService_:\n\t\tif v == nil {\n\t\t\terr := GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\tfield:  \"CredentialSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofCredentialSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetStsService()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"StsService\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\t\tfield:  \"StsService\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetStsService()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\t\t\tfield:  \"StsService\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofCredentialSpecifierPresent {\n\t\terr := GrpcService_GoogleGrpc_CallCredentialsValidationError{\n\t\t\tfield:  \"CredentialSpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn GrpcService_GoogleGrpc_CallCredentialsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcService_GoogleGrpc_CallCredentialsMultiError is an error wrapping\n// multiple validation errors returned by\n// GrpcService_GoogleGrpc_CallCredentials.ValidateAll() if the designated\n// constraints aren't met.\ntype GrpcService_GoogleGrpc_CallCredentialsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcService_GoogleGrpc_CallCredentialsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcService_GoogleGrpc_CallCredentialsMultiError) AllErrors() []error { return m }\n\n// GrpcService_GoogleGrpc_CallCredentialsValidationError is the validation\n// error returned by GrpcService_GoogleGrpc_CallCredentials.Validate if the\n// designated constraints aren't met.\ntype GrpcService_GoogleGrpc_CallCredentialsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcService_GoogleGrpc_CallCredentialsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e GrpcService_GoogleGrpc_CallCredentialsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e GrpcService_GoogleGrpc_CallCredentialsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e GrpcService_GoogleGrpc_CallCredentialsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e GrpcService_GoogleGrpc_CallCredentialsValidationError) ErrorName() string {\n\treturn \"GrpcService_GoogleGrpc_CallCredentialsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e GrpcService_GoogleGrpc_CallCredentialsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcService_GoogleGrpc_CallCredentials.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcService_GoogleGrpc_CallCredentialsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcService_GoogleGrpc_CallCredentialsValidationError{}\n\n// Validate checks the field values on GrpcService_GoogleGrpc_ChannelArgs with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the first error encountered is returned, or nil if there are\n// no violations.\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on GrpcService_GoogleGrpc_ChannelArgs\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// GrpcService_GoogleGrpc_ChannelArgsMultiError, or nil if none found.\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t{\n\t\tsorted_keys := make([]string, len(m.GetArgs()))\n\t\ti := 0\n\t\tfor key := range m.GetArgs() {\n\t\t\tsorted_keys[i] = key\n\t\t\ti++\n\t\t}\n\t\tsort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] })\n\t\tfor _, key := range sorted_keys {\n\t\t\tval := m.GetArgs()[key]\n\t\t\t_ = val\n\n\t\t\t// no validation rules for Args[key]\n\n\t\t\tif all {\n\t\t\t\tswitch v := interface{}(val).(type) {\n\t\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_ChannelArgsValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"Args[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\tcase interface{ Validate() error }:\n\t\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_ChannelArgsValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"Args[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if v, ok := interface{}(val).(interface{ Validate() error }); ok {\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\treturn GrpcService_GoogleGrpc_ChannelArgsValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Args[%v]\", key),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn GrpcService_GoogleGrpc_ChannelArgsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcService_GoogleGrpc_ChannelArgsMultiError is an error wrapping multiple\n// validation errors returned by\n// GrpcService_GoogleGrpc_ChannelArgs.ValidateAll() if the designated\n// constraints aren't met.\ntype GrpcService_GoogleGrpc_ChannelArgsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcService_GoogleGrpc_ChannelArgsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcService_GoogleGrpc_ChannelArgsMultiError) AllErrors() []error { return m }\n\n// GrpcService_GoogleGrpc_ChannelArgsValidationError is the validation error\n// returned by GrpcService_GoogleGrpc_ChannelArgs.Validate if the designated\n// constraints aren't met.\ntype GrpcService_GoogleGrpc_ChannelArgsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcService_GoogleGrpc_ChannelArgsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e GrpcService_GoogleGrpc_ChannelArgsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e GrpcService_GoogleGrpc_ChannelArgsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e GrpcService_GoogleGrpc_ChannelArgsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e GrpcService_GoogleGrpc_ChannelArgsValidationError) ErrorName() string {\n\treturn \"GrpcService_GoogleGrpc_ChannelArgsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e GrpcService_GoogleGrpc_ChannelArgsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcService_GoogleGrpc_ChannelArgs.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcService_GoogleGrpc_ChannelArgsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcService_GoogleGrpc_ChannelArgsValidationError{}\n\n// Validate checks the field values on\n// GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the first error encountered is returned, or nil if\n// there are no violations.\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsMultiError,\n// or nil if none found.\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for JsonKey\n\n\t// no validation rules for TokenLifetimeSeconds\n\n\tif len(errors) > 0 {\n\t\treturn GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsMultiError\n// is an error wrapping multiple validation errors returned by\n// GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials.ValidateAll()\n// if the designated constraints aren't met.\ntype GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsMultiError) AllErrors() []error {\n\treturn m\n}\n\n// GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsValidationError\n// is the validation error returned by\n// GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials.Validate\n// if the designated constraints aren't met.\ntype GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsValidationError) Field() string {\n\treturn e.field\n}\n\n// Reason function returns reason value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsValidationError) Reason() string {\n\treturn e.reason\n}\n\n// Cause function returns cause value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsValidationError) Cause() error {\n\treturn e.cause\n}\n\n// Key function returns key value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsValidationError) Key() bool {\n\treturn e.key\n}\n\n// ErrorName returns error name.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsValidationError) ErrorName() string {\n\treturn \"GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentialsValidationError{}\n\n// Validate checks the field values on\n// GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsMultiError, or\n// nil if none found.\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for AuthorizationToken\n\n\t// no validation rules for AuthoritySelector\n\n\tif len(errors) > 0 {\n\t\treturn GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsMultiError is an\n// error wrapping multiple validation errors returned by\n// GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials.ValidateAll()\n// if the designated constraints aren't met.\ntype GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsMultiError) AllErrors() []error {\n\treturn m\n}\n\n// GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsValidationError\n// is the validation error returned by\n// GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials.Validate if the\n// designated constraints aren't met.\ntype GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsValidationError) Field() string {\n\treturn e.field\n}\n\n// Reason function returns reason value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsValidationError) Reason() string {\n\treturn e.reason\n}\n\n// Cause function returns cause value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsValidationError) Cause() error {\n\treturn e.cause\n}\n\n// Key function returns key value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsValidationError) Key() bool {\n\treturn e.key\n}\n\n// ErrorName returns error name.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsValidationError) ErrorName() string {\n\treturn \"GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentialsValidationError{}\n\n// Validate checks the field values on\n// GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the first error encountered is returned, or nil if there are\n// no violations.\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginMultiError,\n// or nil if none found.\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Name\n\n\tswitch v := m.ConfigType.(type) {\n\tcase *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig:\n\t\tif v == nil {\n\t\t\terr := GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError{\n\t\t\t\tfield:  \"ConfigType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetTypedConfig()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError{\n\t\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError{\n\t\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetTypedConfig()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError{\n\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginMultiError\n// is an error wrapping multiple validation errors returned by\n// GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin.ValidateAll()\n// if the designated constraints aren't met.\ntype GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginMultiError) AllErrors() []error {\n\treturn m\n}\n\n// GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError\n// is the validation error returned by\n// GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin.Validate\n// if the designated constraints aren't met.\ntype GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError) Field() string {\n\treturn e.field\n}\n\n// Reason function returns reason value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError) Reason() string {\n\treturn e.reason\n}\n\n// Cause function returns cause value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError) Cause() error {\n\treturn e.cause\n}\n\n// Key function returns key value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError) Key() bool {\n\treturn e.key\n}\n\n// ErrorName returns error name.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError) ErrorName() string {\n\treturn \"GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPluginValidationError{}\n\n// Validate checks the field values on\n// GrpcService_GoogleGrpc_CallCredentials_StsService with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_StsService) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// GrpcService_GoogleGrpc_CallCredentials_StsService with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in\n// GrpcService_GoogleGrpc_CallCredentials_StsServiceMultiError, or nil if none found.\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_StsService) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_StsService) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for TokenExchangeServiceUri\n\n\t// no validation rules for Resource\n\n\t// no validation rules for Audience\n\n\t// no validation rules for Scope\n\n\t// no validation rules for RequestedTokenType\n\n\tif utf8.RuneCountInString(m.GetSubjectTokenPath()) < 1 {\n\t\terr := GrpcService_GoogleGrpc_CallCredentials_StsServiceValidationError{\n\t\t\tfield:  \"SubjectTokenPath\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif utf8.RuneCountInString(m.GetSubjectTokenType()) < 1 {\n\t\terr := GrpcService_GoogleGrpc_CallCredentials_StsServiceValidationError{\n\t\t\tfield:  \"SubjectTokenType\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for ActorTokenPath\n\n\t// no validation rules for ActorTokenType\n\n\tif len(errors) > 0 {\n\t\treturn GrpcService_GoogleGrpc_CallCredentials_StsServiceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcService_GoogleGrpc_CallCredentials_StsServiceMultiError is an error\n// wrapping multiple validation errors returned by\n// GrpcService_GoogleGrpc_CallCredentials_StsService.ValidateAll() if the\n// designated constraints aren't met.\ntype GrpcService_GoogleGrpc_CallCredentials_StsServiceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcService_GoogleGrpc_CallCredentials_StsServiceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcService_GoogleGrpc_CallCredentials_StsServiceMultiError) AllErrors() []error { return m }\n\n// GrpcService_GoogleGrpc_CallCredentials_StsServiceValidationError is the\n// validation error returned by\n// GrpcService_GoogleGrpc_CallCredentials_StsService.Validate if the\n// designated constraints aren't met.\ntype GrpcService_GoogleGrpc_CallCredentials_StsServiceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_StsServiceValidationError) Field() string {\n\treturn e.field\n}\n\n// Reason function returns reason value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_StsServiceValidationError) Reason() string {\n\treturn e.reason\n}\n\n// Cause function returns cause value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_StsServiceValidationError) Cause() error {\n\treturn e.cause\n}\n\n// Key function returns key value.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_StsServiceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e GrpcService_GoogleGrpc_CallCredentials_StsServiceValidationError) ErrorName() string {\n\treturn \"GrpcService_GoogleGrpc_CallCredentials_StsServiceValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e GrpcService_GoogleGrpc_CallCredentials_StsServiceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcService_GoogleGrpc_CallCredentials_StsService.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcService_GoogleGrpc_CallCredentials_StsServiceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcService_GoogleGrpc_CallCredentials_StsServiceValidationError{}\n\n// Validate checks the field values on GrpcService_GoogleGrpc_ChannelArgs_Value\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the first error encountered is returned, or nil if\n// there are no violations.\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs_Value) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// GrpcService_GoogleGrpc_ChannelArgs_Value with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in\n// GrpcService_GoogleGrpc_ChannelArgs_ValueMultiError, or nil if none found.\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs_Value) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs_Value) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofValueSpecifierPresent := false\n\tswitch v := m.ValueSpecifier.(type) {\n\tcase *GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue:\n\t\tif v == nil {\n\t\t\terr := GrpcService_GoogleGrpc_ChannelArgs_ValueValidationError{\n\t\t\t\tfield:  \"ValueSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofValueSpecifierPresent = true\n\t\t// no validation rules for StringValue\n\tcase *GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue:\n\t\tif v == nil {\n\t\t\terr := GrpcService_GoogleGrpc_ChannelArgs_ValueValidationError{\n\t\t\t\tfield:  \"ValueSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofValueSpecifierPresent = true\n\t\t// no validation rules for IntValue\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofValueSpecifierPresent {\n\t\terr := GrpcService_GoogleGrpc_ChannelArgs_ValueValidationError{\n\t\t\tfield:  \"ValueSpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn GrpcService_GoogleGrpc_ChannelArgs_ValueMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcService_GoogleGrpc_ChannelArgs_ValueMultiError is an error wrapping\n// multiple validation errors returned by\n// GrpcService_GoogleGrpc_ChannelArgs_Value.ValidateAll() if the designated\n// constraints aren't met.\ntype GrpcService_GoogleGrpc_ChannelArgs_ValueMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcService_GoogleGrpc_ChannelArgs_ValueMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcService_GoogleGrpc_ChannelArgs_ValueMultiError) AllErrors() []error { return m }\n\n// GrpcService_GoogleGrpc_ChannelArgs_ValueValidationError is the validation\n// error returned by GrpcService_GoogleGrpc_ChannelArgs_Value.Validate if the\n// designated constraints aren't met.\ntype GrpcService_GoogleGrpc_ChannelArgs_ValueValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcService_GoogleGrpc_ChannelArgs_ValueValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e GrpcService_GoogleGrpc_ChannelArgs_ValueValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e GrpcService_GoogleGrpc_ChannelArgs_ValueValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e GrpcService_GoogleGrpc_ChannelArgs_ValueValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e GrpcService_GoogleGrpc_ChannelArgs_ValueValidationError) ErrorName() string {\n\treturn \"GrpcService_GoogleGrpc_ChannelArgs_ValueValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e GrpcService_GoogleGrpc_ChannelArgs_ValueValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcService_GoogleGrpc_ChannelArgs_Value.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcService_GoogleGrpc_ChannelArgs_ValueValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcService_GoogleGrpc_ChannelArgs_ValueValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/grpc_service_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/grpc_service.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tanypb \"github.com/planetscale/vtprotobuf/types/known/anypb\"\n\tdurationpb \"github.com/planetscale/vtprotobuf/types/known/durationpb\"\n\temptypb \"github.com/planetscale/vtprotobuf/types/known/emptypb\"\n\tstructpb \"github.com/planetscale/vtprotobuf/types/known/structpb\"\n\twrapperspb \"github.com/planetscale/vtprotobuf/types/known/wrapperspb\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *GrpcService_EnvoyGrpc) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcService_EnvoyGrpc) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_EnvoyGrpc) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.SkipEnvoyHeaders {\n\t\ti--\n\t\tif m.SkipEnvoyHeaders {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif m.MaxReceiveMessageLength != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxReceiveMessageLength).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.RetryPolicy != nil {\n\t\tsize, err := m.RetryPolicy.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Authority) > 0 {\n\t\ti -= len(m.Authority)\n\t\tcopy(dAtA[i:], m.Authority)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Authority)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.ClusterName) > 0 {\n\t\ti -= len(m.ClusterName)\n\t\tcopy(dAtA[i:], m.ClusterName)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClusterName)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_SslCredentials) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_SslCredentials) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_SslCredentials) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.CertChain != nil {\n\t\tsize, err := m.CertChain.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.PrivateKey != nil {\n\t\tsize, err := m.PrivateKey.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.RootCerts != nil {\n\t\tsize, err := m.RootCerts.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_GoogleLocalCredentials) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_GoogleLocalCredentials) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_GoogleLocalCredentials) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.CredentialSpecifier.(*GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.CredentialSpecifier.(*GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.CredentialSpecifier.(*GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.SslCredentials != nil {\n\t\tsize, err := m.SslCredentials.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.GoogleDefault != nil {\n\t\tsize, err := (*emptypb.Empty)(m.GoogleDefault).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.LocalCredentials != nil {\n\t\tsize, err := m.LocalCredentials.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.TokenLifetimeSeconds != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.TokenLifetimeSeconds))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.JsonKey) > 0 {\n\t\ti -= len(m.JsonKey)\n\t\tcopy(dAtA[i:], m.JsonKey)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.JsonKey)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.AuthoritySelector) > 0 {\n\t\ti -= len(m.AuthoritySelector)\n\t\tcopy(dAtA[i:], m.AuthoritySelector)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.AuthoritySelector)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.AuthorizationToken) > 0 {\n\t\ti -= len(m.AuthorizationToken)\n\t\tcopy(dAtA[i:], m.AuthorizationToken)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.AuthorizationToken)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.ConfigType.(*GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.TypedConfig != nil {\n\t\tsize, err := (*anypb.Any)(m.TypedConfig).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_StsService) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_StsService) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_StsService) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.ActorTokenType) > 0 {\n\t\ti -= len(m.ActorTokenType)\n\t\tcopy(dAtA[i:], m.ActorTokenType)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ActorTokenType)))\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t}\n\tif len(m.ActorTokenPath) > 0 {\n\t\ti -= len(m.ActorTokenPath)\n\t\tcopy(dAtA[i:], m.ActorTokenPath)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ActorTokenPath)))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif len(m.SubjectTokenType) > 0 {\n\t\ti -= len(m.SubjectTokenType)\n\t\tcopy(dAtA[i:], m.SubjectTokenType)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SubjectTokenType)))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif len(m.SubjectTokenPath) > 0 {\n\t\ti -= len(m.SubjectTokenPath)\n\t\tcopy(dAtA[i:], m.SubjectTokenPath)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SubjectTokenPath)))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.RequestedTokenType) > 0 {\n\t\ti -= len(m.RequestedTokenType)\n\t\tcopy(dAtA[i:], m.RequestedTokenType)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RequestedTokenType)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.Scope) > 0 {\n\t\ti -= len(m.Scope)\n\t\tcopy(dAtA[i:], m.Scope)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Scope)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.Audience) > 0 {\n\t\ti -= len(m.Audience)\n\t\tcopy(dAtA[i:], m.Audience)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Audience)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Resource) > 0 {\n\t\ti -= len(m.Resource)\n\t\tcopy(dAtA[i:], m.Resource)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Resource)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.TokenExchangeServiceUri) > 0 {\n\t\ti -= len(m.TokenExchangeServiceUri)\n\t\tcopy(dAtA[i:], m.TokenExchangeServiceUri)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TokenExchangeServiceUri)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_StsService_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_FromPlugin); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_GoogleIam); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.CredentialSpecifier.(*GrpcService_GoogleGrpc_CallCredentials_AccessToken); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_AccessToken) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_AccessToken) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.AccessToken)\n\tcopy(dAtA[i:], m.AccessToken)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.AccessToken)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.GoogleComputeEngine != nil {\n\t\tsize, err := (*emptypb.Empty)(m.GoogleComputeEngine).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.GoogleRefreshToken)\n\tcopy(dAtA[i:], m.GoogleRefreshToken)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.GoogleRefreshToken)))\n\ti--\n\tdAtA[i] = 0x1a\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ServiceAccountJwtAccess != nil {\n\t\tsize, err := m.ServiceAccountJwtAccess.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleIam) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleIam) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.GoogleIam != nil {\n\t\tsize, err := m.GoogleIam.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_FromPlugin) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_FromPlugin) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.FromPlugin != nil {\n\t\tsize, err := m.FromPlugin.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_StsService_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_StsService_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.StsService != nil {\n\t\tsize, err := m.StsService.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs_Value) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs_Value) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs_Value) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.ValueSpecifier.(*GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ValueSpecifier.(*GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.StringValue)\n\tcopy(dAtA[i:], m.StringValue)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.StringValue)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.IntValue))\n\ti--\n\tdAtA[i] = 0x10\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Args) > 0 {\n\t\tfor k := range m.Args {\n\t\t\tv := m.Args[k]\n\t\t\tbaseI := i\n\t\t\tsize, err := v.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcService_GoogleGrpc) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcService_GoogleGrpc) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.CallCredentialsPlugin) > 0 {\n\t\tfor iNdEx := len(m.CallCredentialsPlugin) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := (*anypb.Any)(m.CallCredentialsPlugin[iNdEx]).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x52\n\t\t}\n\t}\n\tif len(m.ChannelCredentialsPlugin) > 0 {\n\t\tfor iNdEx := len(m.ChannelCredentialsPlugin) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := (*anypb.Any)(m.ChannelCredentialsPlugin[iNdEx]).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x4a\n\t\t}\n\t}\n\tif m.ChannelArgs != nil {\n\t\tsize, err := m.ChannelArgs.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif m.PerStreamBufferLimitBytes != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.PerStreamBufferLimitBytes).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif m.Config != nil {\n\t\tsize, err := (*structpb.Struct)(m.Config).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.CredentialsFactoryName) > 0 {\n\t\ti -= len(m.CredentialsFactoryName)\n\t\tcopy(dAtA[i:], m.CredentialsFactoryName)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.CredentialsFactoryName)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.StatPrefix) > 0 {\n\t\ti -= len(m.StatPrefix)\n\t\tcopy(dAtA[i:], m.StatPrefix)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.StatPrefix)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.CallCredentials) > 0 {\n\t\tfor iNdEx := len(m.CallCredentials) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.CallCredentials[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif m.ChannelCredentials != nil {\n\t\tsize, err := m.ChannelCredentials.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.TargetUri) > 0 {\n\t\ti -= len(m.TargetUri)\n\t\tcopy(dAtA[i:], m.TargetUri)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TargetUri)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcService) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcService) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.RetryPolicy != nil {\n\t\tsize, err := m.RetryPolicy.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.InitialMetadata) > 0 {\n\t\tfor iNdEx := len(m.InitialMetadata) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.InitialMetadata[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif m.Timeout != nil {\n\t\tsize, err := (*durationpb.Duration)(m.Timeout).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif msg, ok := m.TargetSpecifier.(*GrpcService_GoogleGrpc_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.TargetSpecifier.(*GrpcService_EnvoyGrpc_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcService_EnvoyGrpc_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_EnvoyGrpc_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.EnvoyGrpc != nil {\n\t\tsize, err := m.EnvoyGrpc.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_GoogleGrpc_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcService_GoogleGrpc_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.GoogleGrpc != nil {\n\t\tsize, err := m.GoogleGrpc.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *GrpcService_EnvoyGrpc) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.ClusterName)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Authority)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.RetryPolicy != nil {\n\t\tl = m.RetryPolicy.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxReceiveMessageLength != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxReceiveMessageLength).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.SkipEnvoyHeaders {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcService_GoogleGrpc_SslCredentials) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RootCerts != nil {\n\t\tl = m.RootCerts.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.PrivateKey != nil {\n\t\tl = m.PrivateKey.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.CertChain != nil {\n\t\tl = m.CertChain.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcService_GoogleGrpc_GoogleLocalCredentials) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.CredentialSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials_SslCredentials) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.SslCredentials != nil {\n\t\tl = m.SslCredentials.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials_GoogleDefault) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.GoogleDefault != nil {\n\t\tl = (*emptypb.Empty)(m.GoogleDefault).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *GrpcService_GoogleGrpc_ChannelCredentials_LocalCredentials) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.LocalCredentials != nil {\n\t\tl = m.LocalCredentials.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.JsonKey)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.TokenLifetimeSeconds != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.TokenLifetimeSeconds))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.AuthorizationToken)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.AuthoritySelector)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.ConfigType.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_TypedConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.TypedConfig != nil {\n\t\tl = (*anypb.Any)(m.TypedConfig).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_StsService) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.TokenExchangeServiceUri)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Resource)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Audience)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Scope)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.RequestedTokenType)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.SubjectTokenPath)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.SubjectTokenType)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.ActorTokenPath)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.ActorTokenType)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.CredentialSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_AccessToken) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.AccessToken)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleComputeEngine) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.GoogleComputeEngine != nil {\n\t\tl = (*emptypb.Empty)(m.GoogleComputeEngine).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleRefreshToken) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.GoogleRefreshToken)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJwtAccess) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ServiceAccountJwtAccess != nil {\n\t\tl = m.ServiceAccountJwtAccess.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_GoogleIam) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.GoogleIam != nil {\n\t\tl = m.GoogleIam.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_FromPlugin) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.FromPlugin != nil {\n\t\tl = m.FromPlugin.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *GrpcService_GoogleGrpc_CallCredentials_StsService_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.StsService != nil {\n\t\tl = m.StsService.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs_Value) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.ValueSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs_Value_StringValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.StringValue)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs_Value_IntValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 1 + protohelpers.SizeOfVarint(uint64(m.IntValue))\n\treturn n\n}\nfunc (m *GrpcService_GoogleGrpc_ChannelArgs) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Args) > 0 {\n\t\tfor k, v := range m.Args {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tl = 0\n\t\t\tif v != nil {\n\t\t\t\tl = v.SizeVT()\n\t\t\t}\n\t\t\tl += 1 + protohelpers.SizeOfVarint(uint64(l))\n\t\t\tmapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + l\n\t\t\tn += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcService_GoogleGrpc) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.TargetUri)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ChannelCredentials != nil {\n\t\tl = m.ChannelCredentials.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.CallCredentials) > 0 {\n\t\tfor _, e := range m.CallCredentials {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tl = len(m.StatPrefix)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.CredentialsFactoryName)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Config != nil {\n\t\tl = (*structpb.Struct)(m.Config).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.PerStreamBufferLimitBytes != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.PerStreamBufferLimitBytes).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ChannelArgs != nil {\n\t\tl = m.ChannelArgs.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.ChannelCredentialsPlugin) > 0 {\n\t\tfor _, e := range m.ChannelCredentialsPlugin {\n\t\t\tl = (*anypb.Any)(e).SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.CallCredentialsPlugin) > 0 {\n\t\tfor _, e := range m.CallCredentialsPlugin {\n\t\t\tl = (*anypb.Any)(e).SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcService) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.TargetSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.Timeout != nil {\n\t\tl = (*durationpb.Duration)(m.Timeout).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.InitialMetadata) > 0 {\n\t\tfor _, e := range m.InitialMetadata {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.RetryPolicy != nil {\n\t\tl = m.RetryPolicy.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcService_EnvoyGrpc_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.EnvoyGrpc != nil {\n\t\tl = m.EnvoyGrpc.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *GrpcService_GoogleGrpc_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.GoogleGrpc != nil {\n\t\tl = m.GoogleGrpc.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/health_check.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/health_check.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/go-control-plane/envoy/annotations\"\n\tv31 \"github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3\"\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/type/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\tstructpb \"google.golang.org/protobuf/types/known/structpb\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Endpoint health status.\ntype HealthStatus int32\n\nconst (\n\t// The health status is not known. This is interpreted by Envoy as “HEALTHY“.\n\tHealthStatus_UNKNOWN HealthStatus = 0\n\t// Healthy.\n\tHealthStatus_HEALTHY HealthStatus = 1\n\t// Unhealthy.\n\tHealthStatus_UNHEALTHY HealthStatus = 2\n\t// Connection draining in progress. E.g.,\n\t// `<https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/>`_\n\t// or\n\t// `<https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining>`_.\n\t// This is interpreted by Envoy as “UNHEALTHY“.\n\tHealthStatus_DRAINING HealthStatus = 3\n\t// Health check timed out. This is part of HDS and is interpreted by Envoy as\n\t// “UNHEALTHY“.\n\tHealthStatus_TIMEOUT HealthStatus = 4\n\t// Degraded.\n\tHealthStatus_DEGRADED HealthStatus = 5\n)\n\n// Enum value maps for HealthStatus.\nvar (\n\tHealthStatus_name = map[int32]string{\n\t\t0: \"UNKNOWN\",\n\t\t1: \"HEALTHY\",\n\t\t2: \"UNHEALTHY\",\n\t\t3: \"DRAINING\",\n\t\t4: \"TIMEOUT\",\n\t\t5: \"DEGRADED\",\n\t}\n\tHealthStatus_value = map[string]int32{\n\t\t\"UNKNOWN\":   0,\n\t\t\"HEALTHY\":   1,\n\t\t\"UNHEALTHY\": 2,\n\t\t\"DRAINING\":  3,\n\t\t\"TIMEOUT\":   4,\n\t\t\"DEGRADED\":  5,\n\t}\n)\n\nfunc (x HealthStatus) Enum() *HealthStatus {\n\tp := new(HealthStatus)\n\t*p = x\n\treturn p\n}\n\nfunc (x HealthStatus) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (HealthStatus) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_core_v3_health_check_proto_enumTypes[0].Descriptor()\n}\n\nfunc (HealthStatus) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_core_v3_health_check_proto_enumTypes[0]\n}\n\nfunc (x HealthStatus) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use HealthStatus.Descriptor instead.\nfunc (HealthStatus) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_health_check_proto_rawDescGZIP(), []int{0}\n}\n\ntype HealthStatusSet struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// An order-independent set of health status.\n\tStatuses      []HealthStatus `protobuf:\"varint,1,rep,packed,name=statuses,proto3,enum=envoy.config.core.v3.HealthStatus\" json:\"statuses,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HealthStatusSet) Reset() {\n\t*x = HealthStatusSet{}\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HealthStatusSet) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HealthStatusSet) ProtoMessage() {}\n\nfunc (x *HealthStatusSet) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HealthStatusSet.ProtoReflect.Descriptor instead.\nfunc (*HealthStatusSet) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_health_check_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *HealthStatusSet) GetStatuses() []HealthStatus {\n\tif x != nil {\n\t\treturn x.Statuses\n\t}\n\treturn nil\n}\n\n// [#next-free-field: 27]\ntype HealthCheck struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The time to wait for a health check response. If the timeout is reached the\n\t// health check attempt will be considered a failure.\n\tTimeout *durationpb.Duration `protobuf:\"bytes,1,opt,name=timeout,proto3\" json:\"timeout,omitempty\"`\n\t// The interval between health checks.\n\tInterval *durationpb.Duration `protobuf:\"bytes,2,opt,name=interval,proto3\" json:\"interval,omitempty\"`\n\t// An optional jitter amount in milliseconds. If specified, Envoy will start health\n\t// checking after for a random time in ms between 0 and initial_jitter. This only\n\t// applies to the first health check.\n\tInitialJitter *durationpb.Duration `protobuf:\"bytes,20,opt,name=initial_jitter,json=initialJitter,proto3\" json:\"initial_jitter,omitempty\"`\n\t// An optional jitter amount in milliseconds. If specified, during every\n\t// interval Envoy will add interval_jitter to the wait time.\n\tIntervalJitter *durationpb.Duration `protobuf:\"bytes,3,opt,name=interval_jitter,json=intervalJitter,proto3\" json:\"interval_jitter,omitempty\"`\n\t// An optional jitter amount as a percentage of interval_ms. If specified,\n\t// during every interval Envoy will add “interval_ms“ *\n\t// “interval_jitter_percent“ / 100 to the wait time.\n\t//\n\t// If interval_jitter_ms and interval_jitter_percent are both set, both of\n\t// them will be used to increase the wait time.\n\tIntervalJitterPercent uint32 `protobuf:\"varint,18,opt,name=interval_jitter_percent,json=intervalJitterPercent,proto3\" json:\"interval_jitter_percent,omitempty\"`\n\t// The number of unhealthy health checks required before a host is marked\n\t// unhealthy. Note that for “http“ health checking if a host responds with a code not in\n\t// :ref:`expected_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.expected_statuses>`\n\t// or :ref:`retriable_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.retriable_statuses>`,\n\t// this threshold is ignored and the host is considered immediately unhealthy.\n\tUnhealthyThreshold *wrapperspb.UInt32Value `protobuf:\"bytes,4,opt,name=unhealthy_threshold,json=unhealthyThreshold,proto3\" json:\"unhealthy_threshold,omitempty\"`\n\t// The number of healthy health checks required before a host is marked\n\t// healthy. Note that during startup, only a single successful health check is\n\t// required to mark a host healthy.\n\tHealthyThreshold *wrapperspb.UInt32Value `protobuf:\"bytes,5,opt,name=healthy_threshold,json=healthyThreshold,proto3\" json:\"healthy_threshold,omitempty\"`\n\t// [#not-implemented-hide:] Non-serving port for health checking.\n\tAltPort *wrapperspb.UInt32Value `protobuf:\"bytes,6,opt,name=alt_port,json=altPort,proto3\" json:\"alt_port,omitempty\"`\n\t// Reuse health check connection between health checks. Default is true.\n\tReuseConnection *wrapperspb.BoolValue `protobuf:\"bytes,7,opt,name=reuse_connection,json=reuseConnection,proto3\" json:\"reuse_connection,omitempty\"`\n\t// Types that are valid to be assigned to HealthChecker:\n\t//\n\t//\t*HealthCheck_HttpHealthCheck_\n\t//\t*HealthCheck_TcpHealthCheck_\n\t//\t*HealthCheck_GrpcHealthCheck_\n\t//\t*HealthCheck_CustomHealthCheck_\n\tHealthChecker isHealthCheck_HealthChecker `protobuf_oneof:\"health_checker\"`\n\t// The \"no traffic interval\" is a special health check interval that is used when a cluster has\n\t// never had traffic routed to it. This lower interval allows cluster information to be kept up to\n\t// date, without sending a potentially large amount of active health checking traffic for no\n\t// reason. Once a cluster has been used for traffic routing, Envoy will shift back to using the\n\t// standard health check interval that is defined. Note that this interval takes precedence over\n\t// any other.\n\t//\n\t// The default value for \"no traffic interval\" is 60 seconds.\n\tNoTrafficInterval *durationpb.Duration `protobuf:\"bytes,12,opt,name=no_traffic_interval,json=noTrafficInterval,proto3\" json:\"no_traffic_interval,omitempty\"`\n\t// The \"no traffic healthy interval\" is a special health check interval that\n\t// is used for hosts that are currently passing active health checking\n\t// (including new hosts) when the cluster has received no traffic.\n\t//\n\t// This is useful for when we want to send frequent health checks with\n\t// “no_traffic_interval“ but then revert to lower frequency “no_traffic_healthy_interval“ once\n\t// a host in the cluster is marked as healthy.\n\t//\n\t// Once a cluster has been used for traffic routing, Envoy will shift back to using the\n\t// standard health check interval that is defined.\n\t//\n\t// If no_traffic_healthy_interval is not set, it will default to the\n\t// no traffic interval and send that interval regardless of health state.\n\tNoTrafficHealthyInterval *durationpb.Duration `protobuf:\"bytes,24,opt,name=no_traffic_healthy_interval,json=noTrafficHealthyInterval,proto3\" json:\"no_traffic_healthy_interval,omitempty\"`\n\t// The \"unhealthy interval\" is a health check interval that is used for hosts that are marked as\n\t// unhealthy. As soon as the host is marked as healthy, Envoy will shift back to using the\n\t// standard health check interval that is defined.\n\t//\n\t// The default value for \"unhealthy interval\" is the same as \"interval\".\n\tUnhealthyInterval *durationpb.Duration `protobuf:\"bytes,14,opt,name=unhealthy_interval,json=unhealthyInterval,proto3\" json:\"unhealthy_interval,omitempty\"`\n\t// The \"unhealthy edge interval\" is a special health check interval that is used for the first\n\t// health check right after a host is marked as unhealthy. For subsequent health checks\n\t// Envoy will shift back to using either \"unhealthy interval\" if present or the standard health\n\t// check interval that is defined.\n\t//\n\t// The default value for \"unhealthy edge interval\" is the same as \"unhealthy interval\".\n\tUnhealthyEdgeInterval *durationpb.Duration `protobuf:\"bytes,15,opt,name=unhealthy_edge_interval,json=unhealthyEdgeInterval,proto3\" json:\"unhealthy_edge_interval,omitempty\"`\n\t// The \"healthy edge interval\" is a special health check interval that is used for the first\n\t// health check right after a host is marked as healthy. For subsequent health checks\n\t// Envoy will shift back to using the standard health check interval that is defined.\n\t//\n\t// The default value for \"healthy edge interval\" is the same as the default interval.\n\tHealthyEdgeInterval *durationpb.Duration `protobuf:\"bytes,16,opt,name=healthy_edge_interval,json=healthyEdgeInterval,proto3\" json:\"healthy_edge_interval,omitempty\"`\n\t// Specifies the path to the :ref:`health check event log <arch_overview_health_check_logging>`.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis field is deprecated in favor of the extension\n\t//\t:ref:`event_logger <envoy_v3_api_field_config.core.v3.HealthCheck.event_logger>` and\n\t//\t:ref:`event_log_path <envoy_v3_api_field_extensions.health_check.event_sinks.file.v3.HealthCheckEventFileSink.event_log_path>`\n\t//\tin the file sink extension.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/health_check.proto.\n\tEventLogPath string `protobuf:\"bytes,17,opt,name=event_log_path,json=eventLogPath,proto3\" json:\"event_log_path,omitempty\"`\n\t// A list of event log sinks to process the health check event.\n\t// [#extension-category: envoy.health_check.event_sinks]\n\tEventLogger []*TypedExtensionConfig `protobuf:\"bytes,25,rep,name=event_logger,json=eventLogger,proto3\" json:\"event_logger,omitempty\"`\n\t// [#not-implemented-hide:]\n\t// The gRPC service for the health check event service.\n\t// If empty, health check events won't be sent to a remote endpoint.\n\tEventService *EventServiceConfig `protobuf:\"bytes,22,opt,name=event_service,json=eventService,proto3\" json:\"event_service,omitempty\"`\n\t// If set to true, health check failure events will always be logged. If set to false, only the\n\t// initial health check failure event will be logged.\n\t// The default value is false.\n\tAlwaysLogHealthCheckFailures bool `protobuf:\"varint,19,opt,name=always_log_health_check_failures,json=alwaysLogHealthCheckFailures,proto3\" json:\"always_log_health_check_failures,omitempty\"`\n\t// If set to true, health check success events will always be logged. If set to false, only host addition event will be logged\n\t// if it is the first successful health check, or if the healthy threshold is reached.\n\t// The default value is false.\n\tAlwaysLogHealthCheckSuccess bool `protobuf:\"varint,26,opt,name=always_log_health_check_success,json=alwaysLogHealthCheckSuccess,proto3\" json:\"always_log_health_check_success,omitempty\"`\n\t// This allows overriding the cluster TLS settings, just for health check connections.\n\tTlsOptions *HealthCheck_TlsOptions `protobuf:\"bytes,21,opt,name=tls_options,json=tlsOptions,proto3\" json:\"tls_options,omitempty\"`\n\t// Optional key/value pairs that will be used to match a transport socket from those specified in the cluster's\n\t// :ref:`tranport socket matches <envoy_v3_api_field_config.cluster.v3.Cluster.transport_socket_matches>`.\n\t// For example, the following match criteria\n\t//\n\t// .. code-block:: yaml\n\t//\n\t//\ttransport_socket_match_criteria:\n\t//\t  useMTLS: true\n\t//\n\t// Will match the following :ref:`cluster socket match <envoy_v3_api_msg_config.cluster.v3.Cluster.TransportSocketMatch>`\n\t//\n\t// .. code-block:: yaml\n\t//\n\t//\ttransport_socket_matches:\n\t//\t- name: \"useMTLS\"\n\t//\t  match:\n\t//\t    useMTLS: true\n\t//\t  transport_socket:\n\t//\t    name: envoy.transport_sockets.tls\n\t//\t    config: { ... } # tls socket configuration\n\t//\n\t// If this field is set, then for health checks it will supersede an entry of “envoy.transport_socket“ in the\n\t// :ref:`LbEndpoint.Metadata <envoy_v3_api_field_config.endpoint.v3.LbEndpoint.metadata>`.\n\t// This allows using different transport socket capabilities for health checking versus proxying to the\n\t// endpoint.\n\t//\n\t// If the key/values pairs specified do not match any\n\t// :ref:`transport socket matches <envoy_v3_api_field_config.cluster.v3.Cluster.transport_socket_matches>`,\n\t// the cluster's :ref:`transport socket <envoy_v3_api_field_config.cluster.v3.Cluster.transport_socket>`\n\t// will be used for health check socket configuration.\n\tTransportSocketMatchCriteria *structpb.Struct `protobuf:\"bytes,23,opt,name=transport_socket_match_criteria,json=transportSocketMatchCriteria,proto3\" json:\"transport_socket_match_criteria,omitempty\"`\n\tunknownFields                protoimpl.UnknownFields\n\tsizeCache                    protoimpl.SizeCache\n}\n\nfunc (x *HealthCheck) Reset() {\n\t*x = HealthCheck{}\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HealthCheck) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HealthCheck) ProtoMessage() {}\n\nfunc (x *HealthCheck) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HealthCheck.ProtoReflect.Descriptor instead.\nfunc (*HealthCheck) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_health_check_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *HealthCheck) GetTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Timeout\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Interval\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetInitialJitter() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.InitialJitter\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetIntervalJitter() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.IntervalJitter\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetIntervalJitterPercent() uint32 {\n\tif x != nil {\n\t\treturn x.IntervalJitterPercent\n\t}\n\treturn 0\n}\n\nfunc (x *HealthCheck) GetUnhealthyThreshold() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.UnhealthyThreshold\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetHealthyThreshold() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.HealthyThreshold\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetAltPort() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.AltPort\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetReuseConnection() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.ReuseConnection\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetHealthChecker() isHealthCheck_HealthChecker {\n\tif x != nil {\n\t\treturn x.HealthChecker\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetHttpHealthCheck() *HealthCheck_HttpHealthCheck {\n\tif x != nil {\n\t\tif x, ok := x.HealthChecker.(*HealthCheck_HttpHealthCheck_); ok {\n\t\t\treturn x.HttpHealthCheck\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetTcpHealthCheck() *HealthCheck_TcpHealthCheck {\n\tif x != nil {\n\t\tif x, ok := x.HealthChecker.(*HealthCheck_TcpHealthCheck_); ok {\n\t\t\treturn x.TcpHealthCheck\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetGrpcHealthCheck() *HealthCheck_GrpcHealthCheck {\n\tif x != nil {\n\t\tif x, ok := x.HealthChecker.(*HealthCheck_GrpcHealthCheck_); ok {\n\t\t\treturn x.GrpcHealthCheck\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetCustomHealthCheck() *HealthCheck_CustomHealthCheck {\n\tif x != nil {\n\t\tif x, ok := x.HealthChecker.(*HealthCheck_CustomHealthCheck_); ok {\n\t\t\treturn x.CustomHealthCheck\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetNoTrafficInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.NoTrafficInterval\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetNoTrafficHealthyInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.NoTrafficHealthyInterval\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetUnhealthyInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.UnhealthyInterval\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetUnhealthyEdgeInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.UnhealthyEdgeInterval\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetHealthyEdgeInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.HealthyEdgeInterval\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/core/v3/health_check.proto.\nfunc (x *HealthCheck) GetEventLogPath() string {\n\tif x != nil {\n\t\treturn x.EventLogPath\n\t}\n\treturn \"\"\n}\n\nfunc (x *HealthCheck) GetEventLogger() []*TypedExtensionConfig {\n\tif x != nil {\n\t\treturn x.EventLogger\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetEventService() *EventServiceConfig {\n\tif x != nil {\n\t\treturn x.EventService\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetAlwaysLogHealthCheckFailures() bool {\n\tif x != nil {\n\t\treturn x.AlwaysLogHealthCheckFailures\n\t}\n\treturn false\n}\n\nfunc (x *HealthCheck) GetAlwaysLogHealthCheckSuccess() bool {\n\tif x != nil {\n\t\treturn x.AlwaysLogHealthCheckSuccess\n\t}\n\treturn false\n}\n\nfunc (x *HealthCheck) GetTlsOptions() *HealthCheck_TlsOptions {\n\tif x != nil {\n\t\treturn x.TlsOptions\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck) GetTransportSocketMatchCriteria() *structpb.Struct {\n\tif x != nil {\n\t\treturn x.TransportSocketMatchCriteria\n\t}\n\treturn nil\n}\n\ntype isHealthCheck_HealthChecker interface {\n\tisHealthCheck_HealthChecker()\n}\n\ntype HealthCheck_HttpHealthCheck_ struct {\n\t// HTTP health check.\n\tHttpHealthCheck *HealthCheck_HttpHealthCheck `protobuf:\"bytes,8,opt,name=http_health_check,json=httpHealthCheck,proto3,oneof\"`\n}\n\ntype HealthCheck_TcpHealthCheck_ struct {\n\t// TCP health check.\n\tTcpHealthCheck *HealthCheck_TcpHealthCheck `protobuf:\"bytes,9,opt,name=tcp_health_check,json=tcpHealthCheck,proto3,oneof\"`\n}\n\ntype HealthCheck_GrpcHealthCheck_ struct {\n\t// gRPC health check.\n\tGrpcHealthCheck *HealthCheck_GrpcHealthCheck `protobuf:\"bytes,11,opt,name=grpc_health_check,json=grpcHealthCheck,proto3,oneof\"`\n}\n\ntype HealthCheck_CustomHealthCheck_ struct {\n\t// Custom health check.\n\tCustomHealthCheck *HealthCheck_CustomHealthCheck `protobuf:\"bytes,13,opt,name=custom_health_check,json=customHealthCheck,proto3,oneof\"`\n}\n\nfunc (*HealthCheck_HttpHealthCheck_) isHealthCheck_HealthChecker() {}\n\nfunc (*HealthCheck_TcpHealthCheck_) isHealthCheck_HealthChecker() {}\n\nfunc (*HealthCheck_GrpcHealthCheck_) isHealthCheck_HealthChecker() {}\n\nfunc (*HealthCheck_CustomHealthCheck_) isHealthCheck_HealthChecker() {}\n\n// Describes the encoding of the payload bytes in the payload.\ntype HealthCheck_Payload struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Payload:\n\t//\n\t//\t*HealthCheck_Payload_Text\n\t//\t*HealthCheck_Payload_Binary\n\tPayload       isHealthCheck_Payload_Payload `protobuf_oneof:\"payload\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HealthCheck_Payload) Reset() {\n\t*x = HealthCheck_Payload{}\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HealthCheck_Payload) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HealthCheck_Payload) ProtoMessage() {}\n\nfunc (x *HealthCheck_Payload) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HealthCheck_Payload.ProtoReflect.Descriptor instead.\nfunc (*HealthCheck_Payload) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_health_check_proto_rawDescGZIP(), []int{1, 0}\n}\n\nfunc (x *HealthCheck_Payload) GetPayload() isHealthCheck_Payload_Payload {\n\tif x != nil {\n\t\treturn x.Payload\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck_Payload) GetText() string {\n\tif x != nil {\n\t\tif x, ok := x.Payload.(*HealthCheck_Payload_Text); ok {\n\t\t\treturn x.Text\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *HealthCheck_Payload) GetBinary() []byte {\n\tif x != nil {\n\t\tif x, ok := x.Payload.(*HealthCheck_Payload_Binary); ok {\n\t\t\treturn x.Binary\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isHealthCheck_Payload_Payload interface {\n\tisHealthCheck_Payload_Payload()\n}\n\ntype HealthCheck_Payload_Text struct {\n\t// Hex encoded payload. E.g., \"000000FF\".\n\tText string `protobuf:\"bytes,1,opt,name=text,proto3,oneof\"`\n}\n\ntype HealthCheck_Payload_Binary struct {\n\t// Binary payload.\n\tBinary []byte `protobuf:\"bytes,2,opt,name=binary,proto3,oneof\"`\n}\n\nfunc (*HealthCheck_Payload_Text) isHealthCheck_Payload_Payload() {}\n\nfunc (*HealthCheck_Payload_Binary) isHealthCheck_Payload_Payload() {}\n\n// [#next-free-field: 15]\ntype HealthCheck_HttpHealthCheck struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The value of the host header in the HTTP health check request. If\n\t// left empty (default value), the name of the cluster this health check is associated\n\t// with will be used. The host header can be customized for a specific endpoint by setting the\n\t// :ref:`hostname <envoy_v3_api_field_config.endpoint.v3.Endpoint.HealthCheckConfig.hostname>` field.\n\tHost string `protobuf:\"bytes,1,opt,name=host,proto3\" json:\"host,omitempty\"`\n\t// Specifies the HTTP path that will be requested during health checking. For example\n\t// “/healthcheck“.\n\tPath string `protobuf:\"bytes,2,opt,name=path,proto3\" json:\"path,omitempty\"`\n\t// HTTP specific payload to be sent as the request body during health checking.\n\t// If specified, the method should support a request body (POST, PUT, PATCH, etc.).\n\tSend *HealthCheck_Payload `protobuf:\"bytes,3,opt,name=send,proto3\" json:\"send,omitempty\"`\n\t// Specifies a list of HTTP expected responses to match in the first “response_buffer_size“ bytes of the response body.\n\t// If it is set, both the expected response check and status code determine the health check.\n\t// When checking the response, “fuzzy” matching is performed such that each payload block must be found,\n\t// and in the order specified, but not necessarily contiguous.\n\t//\n\t// .. note::\n\t//\n\t//\tIt is recommended to set ``response_buffer_size`` based on the total Payload size for efficiency.\n\t//\tThe default buffer size is 1024 bytes when it is not set.\n\tReceive []*HealthCheck_Payload `protobuf:\"bytes,4,rep,name=receive,proto3\" json:\"receive,omitempty\"`\n\t// Specifies the size of response buffer in bytes that is used to Payload match.\n\t// The default value is 1024. Setting to 0 implies that the Payload will be matched against the entire response.\n\tResponseBufferSize *wrapperspb.UInt64Value `protobuf:\"bytes,14,opt,name=response_buffer_size,json=responseBufferSize,proto3\" json:\"response_buffer_size,omitempty\"`\n\t// Specifies a list of HTTP headers that should be added to each request that is sent to the\n\t// health checked cluster. For more information, including details on header value syntax, see\n\t// the documentation on :ref:`custom request headers\n\t// <config_http_conn_man_headers_custom_request_headers>`.\n\tRequestHeadersToAdd []*HeaderValueOption `protobuf:\"bytes,6,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3\" json:\"request_headers_to_add,omitempty\"`\n\t// Specifies a list of HTTP headers that should be removed from each request that is sent to the\n\t// health checked cluster.\n\tRequestHeadersToRemove []string `protobuf:\"bytes,8,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3\" json:\"request_headers_to_remove,omitempty\"`\n\t// Specifies a list of HTTP response statuses considered healthy. If provided, replaces default\n\t// 200-only policy - 200 must be included explicitly as needed. Ranges follow half-open\n\t// semantics of :ref:`Int64Range <envoy_v3_api_msg_type.v3.Int64Range>`. The start and end of each\n\t// range are required. Only statuses in the range [100, 600) are allowed.\n\tExpectedStatuses []*v3.Int64Range `protobuf:\"bytes,9,rep,name=expected_statuses,json=expectedStatuses,proto3\" json:\"expected_statuses,omitempty\"`\n\t// Specifies a list of HTTP response statuses considered retriable. If provided, responses in this range\n\t// will count towards the configured :ref:`unhealthy_threshold <envoy_v3_api_field_config.core.v3.HealthCheck.unhealthy_threshold>`,\n\t// but will not result in the host being considered immediately unhealthy. Ranges follow half-open semantics of\n\t// :ref:`Int64Range <envoy_v3_api_msg_type.v3.Int64Range>`. The start and end of each range are required.\n\t// Only statuses in the range [100, 600) are allowed. The :ref:`expected_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.expected_statuses>`\n\t// field takes precedence for any range overlaps with this field i.e. if status code 200 is both retriable and expected, a 200 response will\n\t// be considered a successful health check. By default all responses not in\n\t// :ref:`expected_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.expected_statuses>` will result in\n\t// the host being considered immediately unhealthy i.e. if status code 200 is expected and there are no configured retriable statuses, any\n\t// non-200 response will result in the host being marked unhealthy.\n\tRetriableStatuses []*v3.Int64Range `protobuf:\"bytes,12,rep,name=retriable_statuses,json=retriableStatuses,proto3\" json:\"retriable_statuses,omitempty\"`\n\t// Use specified application protocol for health checks.\n\tCodecClientType v3.CodecClientType `protobuf:\"varint,10,opt,name=codec_client_type,json=codecClientType,proto3,enum=envoy.type.v3.CodecClientType\" json:\"codec_client_type,omitempty\"`\n\t// An optional service name parameter which is used to validate the identity of\n\t// the health checked cluster using a :ref:`StringMatcher\n\t// <envoy_v3_api_msg_type.matcher.v3.StringMatcher>`. See the :ref:`architecture overview\n\t// <arch_overview_health_checking_identity>` for more information.\n\tServiceNameMatcher *v31.StringMatcher `protobuf:\"bytes,11,opt,name=service_name_matcher,json=serviceNameMatcher,proto3\" json:\"service_name_matcher,omitempty\"`\n\t// HTTP Method that will be used for health checking, default is \"GET\".\n\t// GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, PATCH methods are supported.\n\t// Request body payloads are supported for POST, PUT, PATCH, and OPTIONS methods only.\n\t// CONNECT method is disallowed because it is not appropriate for health check request.\n\t// If a non-200 response is expected by the method, it needs to be set in :ref:`expected_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.expected_statuses>`.\n\tMethod        RequestMethod `protobuf:\"varint,13,opt,name=method,proto3,enum=envoy.config.core.v3.RequestMethod\" json:\"method,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HealthCheck_HttpHealthCheck) Reset() {\n\t*x = HealthCheck_HttpHealthCheck{}\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HealthCheck_HttpHealthCheck) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HealthCheck_HttpHealthCheck) ProtoMessage() {}\n\nfunc (x *HealthCheck_HttpHealthCheck) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HealthCheck_HttpHealthCheck.ProtoReflect.Descriptor instead.\nfunc (*HealthCheck_HttpHealthCheck) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_health_check_proto_rawDescGZIP(), []int{1, 1}\n}\n\nfunc (x *HealthCheck_HttpHealthCheck) GetHost() string {\n\tif x != nil {\n\t\treturn x.Host\n\t}\n\treturn \"\"\n}\n\nfunc (x *HealthCheck_HttpHealthCheck) GetPath() string {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn \"\"\n}\n\nfunc (x *HealthCheck_HttpHealthCheck) GetSend() *HealthCheck_Payload {\n\tif x != nil {\n\t\treturn x.Send\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck_HttpHealthCheck) GetReceive() []*HealthCheck_Payload {\n\tif x != nil {\n\t\treturn x.Receive\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck_HttpHealthCheck) GetResponseBufferSize() *wrapperspb.UInt64Value {\n\tif x != nil {\n\t\treturn x.ResponseBufferSize\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck_HttpHealthCheck) GetRequestHeadersToAdd() []*HeaderValueOption {\n\tif x != nil {\n\t\treturn x.RequestHeadersToAdd\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck_HttpHealthCheck) GetRequestHeadersToRemove() []string {\n\tif x != nil {\n\t\treturn x.RequestHeadersToRemove\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck_HttpHealthCheck) GetExpectedStatuses() []*v3.Int64Range {\n\tif x != nil {\n\t\treturn x.ExpectedStatuses\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck_HttpHealthCheck) GetRetriableStatuses() []*v3.Int64Range {\n\tif x != nil {\n\t\treturn x.RetriableStatuses\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck_HttpHealthCheck) GetCodecClientType() v3.CodecClientType {\n\tif x != nil {\n\t\treturn x.CodecClientType\n\t}\n\treturn v3.CodecClientType(0)\n}\n\nfunc (x *HealthCheck_HttpHealthCheck) GetServiceNameMatcher() *v31.StringMatcher {\n\tif x != nil {\n\t\treturn x.ServiceNameMatcher\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck_HttpHealthCheck) GetMethod() RequestMethod {\n\tif x != nil {\n\t\treturn x.Method\n\t}\n\treturn RequestMethod_METHOD_UNSPECIFIED\n}\n\ntype HealthCheck_TcpHealthCheck struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Empty payloads imply a connect-only health check.\n\tSend *HealthCheck_Payload `protobuf:\"bytes,1,opt,name=send,proto3\" json:\"send,omitempty\"`\n\t// When checking the response, “fuzzy” matching is performed such that each\n\t// payload block must be found, and in the order specified, but not\n\t// necessarily contiguous.\n\tReceive []*HealthCheck_Payload `protobuf:\"bytes,2,rep,name=receive,proto3\" json:\"receive,omitempty\"`\n\t// When setting this value, it tries to attempt health check request with ProxyProtocol.\n\t// When “send“ is presented, they are sent after preceding ProxyProtocol header.\n\t// Only ProxyProtocol header is sent when “send“ is not presented.\n\t// It allows to use both ProxyProtocol V1 and V2. In V1, it presents L3/L4. In V2, it includes\n\t// LOCAL command and doesn't include L3/L4.\n\tProxyProtocolConfig *ProxyProtocolConfig `protobuf:\"bytes,3,opt,name=proxy_protocol_config,json=proxyProtocolConfig,proto3\" json:\"proxy_protocol_config,omitempty\"`\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\nfunc (x *HealthCheck_TcpHealthCheck) Reset() {\n\t*x = HealthCheck_TcpHealthCheck{}\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HealthCheck_TcpHealthCheck) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HealthCheck_TcpHealthCheck) ProtoMessage() {}\n\nfunc (x *HealthCheck_TcpHealthCheck) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HealthCheck_TcpHealthCheck.ProtoReflect.Descriptor instead.\nfunc (*HealthCheck_TcpHealthCheck) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_health_check_proto_rawDescGZIP(), []int{1, 2}\n}\n\nfunc (x *HealthCheck_TcpHealthCheck) GetSend() *HealthCheck_Payload {\n\tif x != nil {\n\t\treturn x.Send\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck_TcpHealthCheck) GetReceive() []*HealthCheck_Payload {\n\tif x != nil {\n\t\treturn x.Receive\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck_TcpHealthCheck) GetProxyProtocolConfig() *ProxyProtocolConfig {\n\tif x != nil {\n\t\treturn x.ProxyProtocolConfig\n\t}\n\treturn nil\n}\n\ntype HealthCheck_RedisHealthCheck struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// If set, optionally perform “EXISTS <key>“ instead of “PING“. A return value\n\t// from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other\n\t// than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance\n\t// by setting the specified key to any value and waiting for traffic to drain.\n\tKey           string `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HealthCheck_RedisHealthCheck) Reset() {\n\t*x = HealthCheck_RedisHealthCheck{}\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HealthCheck_RedisHealthCheck) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HealthCheck_RedisHealthCheck) ProtoMessage() {}\n\nfunc (x *HealthCheck_RedisHealthCheck) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HealthCheck_RedisHealthCheck.ProtoReflect.Descriptor instead.\nfunc (*HealthCheck_RedisHealthCheck) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_health_check_proto_rawDescGZIP(), []int{1, 3}\n}\n\nfunc (x *HealthCheck_RedisHealthCheck) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\n// `grpc.health.v1.Health\n// <https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto>`_-based\n// healthcheck. See `gRPC doc <https://github.com/grpc/grpc/blob/master/doc/health-checking.md>`_\n// for details.\ntype HealthCheck_GrpcHealthCheck struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// An optional service name parameter which will be sent to gRPC service in\n\t// `grpc.health.v1.HealthCheckRequest\n\t// <https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto#L20>`_.\n\t// message. See `gRPC health-checking overview\n\t// <https://github.com/grpc/grpc/blob/master/doc/health-checking.md>`_ for more information.\n\tServiceName string `protobuf:\"bytes,1,opt,name=service_name,json=serviceName,proto3\" json:\"service_name,omitempty\"`\n\t// The value of the :authority header in the gRPC health check request. If\n\t// left empty (default value), the name of the cluster this health check is associated\n\t// with will be used. The authority header can be customized for a specific endpoint by setting\n\t// the :ref:`hostname <envoy_v3_api_field_config.endpoint.v3.Endpoint.HealthCheckConfig.hostname>` field.\n\tAuthority string `protobuf:\"bytes,2,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n\t// Specifies a list of key-value pairs that should be added to the metadata of each GRPC call\n\t// that is sent to the health checked cluster. For more information, including details on header value syntax,\n\t// see the documentation on :ref:`custom request headers\n\t// <config_http_conn_man_headers_custom_request_headers>`.\n\tInitialMetadata []*HeaderValueOption `protobuf:\"bytes,3,rep,name=initial_metadata,json=initialMetadata,proto3\" json:\"initial_metadata,omitempty\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *HealthCheck_GrpcHealthCheck) Reset() {\n\t*x = HealthCheck_GrpcHealthCheck{}\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HealthCheck_GrpcHealthCheck) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HealthCheck_GrpcHealthCheck) ProtoMessage() {}\n\nfunc (x *HealthCheck_GrpcHealthCheck) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HealthCheck_GrpcHealthCheck.ProtoReflect.Descriptor instead.\nfunc (*HealthCheck_GrpcHealthCheck) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_health_check_proto_rawDescGZIP(), []int{1, 4}\n}\n\nfunc (x *HealthCheck_GrpcHealthCheck) GetServiceName() string {\n\tif x != nil {\n\t\treturn x.ServiceName\n\t}\n\treturn \"\"\n}\n\nfunc (x *HealthCheck_GrpcHealthCheck) GetAuthority() string {\n\tif x != nil {\n\t\treturn x.Authority\n\t}\n\treturn \"\"\n}\n\nfunc (x *HealthCheck_GrpcHealthCheck) GetInitialMetadata() []*HeaderValueOption {\n\tif x != nil {\n\t\treturn x.InitialMetadata\n\t}\n\treturn nil\n}\n\n// Custom health check.\ntype HealthCheck_CustomHealthCheck struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The registered name of the custom health checker.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// A custom health checker specific configuration which depends on the custom health checker\n\t// being instantiated. See :api:`envoy/config/health_checker` for reference.\n\t// [#extension-category: envoy.health_checkers]\n\t//\n\t// Types that are valid to be assigned to ConfigType:\n\t//\n\t//\t*HealthCheck_CustomHealthCheck_TypedConfig\n\tConfigType    isHealthCheck_CustomHealthCheck_ConfigType `protobuf_oneof:\"config_type\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HealthCheck_CustomHealthCheck) Reset() {\n\t*x = HealthCheck_CustomHealthCheck{}\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HealthCheck_CustomHealthCheck) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HealthCheck_CustomHealthCheck) ProtoMessage() {}\n\nfunc (x *HealthCheck_CustomHealthCheck) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HealthCheck_CustomHealthCheck.ProtoReflect.Descriptor instead.\nfunc (*HealthCheck_CustomHealthCheck) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_health_check_proto_rawDescGZIP(), []int{1, 5}\n}\n\nfunc (x *HealthCheck_CustomHealthCheck) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *HealthCheck_CustomHealthCheck) GetConfigType() isHealthCheck_CustomHealthCheck_ConfigType {\n\tif x != nil {\n\t\treturn x.ConfigType\n\t}\n\treturn nil\n}\n\nfunc (x *HealthCheck_CustomHealthCheck) GetTypedConfig() *anypb.Any {\n\tif x != nil {\n\t\tif x, ok := x.ConfigType.(*HealthCheck_CustomHealthCheck_TypedConfig); ok {\n\t\t\treturn x.TypedConfig\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isHealthCheck_CustomHealthCheck_ConfigType interface {\n\tisHealthCheck_CustomHealthCheck_ConfigType()\n}\n\ntype HealthCheck_CustomHealthCheck_TypedConfig struct {\n\tTypedConfig *anypb.Any `protobuf:\"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof\"`\n}\n\nfunc (*HealthCheck_CustomHealthCheck_TypedConfig) isHealthCheck_CustomHealthCheck_ConfigType() {}\n\n// Health checks occur over the transport socket specified for the cluster. This implies that if a\n// cluster is using a TLS-enabled transport socket, the health check will also occur over TLS.\n//\n// This allows overriding the cluster TLS settings, just for health check connections.\ntype HealthCheck_TlsOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies the ALPN protocols for health check connections. This is useful if the\n\t// corresponding upstream is using ALPN-based :ref:`FilterChainMatch\n\t// <envoy_v3_api_msg_config.listener.v3.FilterChainMatch>` along with different protocols for health checks\n\t// versus data connections. If empty, no ALPN protocols will be set on health check connections.\n\tAlpnProtocols []string `protobuf:\"bytes,1,rep,name=alpn_protocols,json=alpnProtocols,proto3\" json:\"alpn_protocols,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HealthCheck_TlsOptions) Reset() {\n\t*x = HealthCheck_TlsOptions{}\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[8]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HealthCheck_TlsOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HealthCheck_TlsOptions) ProtoMessage() {}\n\nfunc (x *HealthCheck_TlsOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_health_check_proto_msgTypes[8]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HealthCheck_TlsOptions.ProtoReflect.Descriptor instead.\nfunc (*HealthCheck_TlsOptions) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_health_check_proto_rawDescGZIP(), []int{1, 6}\n}\n\nfunc (x *HealthCheck_TlsOptions) GetAlpnProtocols() []string {\n\tif x != nil {\n\t\treturn x.AlpnProtocols\n\t}\n\treturn nil\n}\n\nvar File_envoy_config_core_v3_health_check_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_health_check_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"'envoy/config/core/v3/health_check.proto\\x12\\x14envoy.config.core.v3\\x1a\\x1fenvoy/config/core/v3/base.proto\\x1a/envoy/config/core/v3/event_service_config.proto\\x1a$envoy/config/core/v3/extension.proto\\x1a)envoy/config/core/v3/proxy_protocol.proto\\x1a\\\"envoy/type/matcher/v3/string.proto\\x1a\\x18envoy/type/v3/http.proto\\x1a\\x19envoy/type/v3/range.proto\\x1a\\x19google/protobuf/any.proto\\x1a\\x1egoogle/protobuf/duration.proto\\x1a\\x1cgoogle/protobuf/struct.proto\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a#envoy/annotations/deprecation.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"`\\n\" +\n\t\"\\x0fHealthStatusSet\\x12M\\n\" +\n\t\"\\bstatuses\\x18\\x01 \\x03(\\x0e2\\\".envoy.config.core.v3.HealthStatusB\\r\\xfaB\\n\" +\n\t\"\\x92\\x01\\a\\\"\\x05\\x82\\x01\\x02\\x10\\x01R\\bstatuses\\\"\\x8c \\n\" +\n\t\"\\vHealthCheck\\x12?\\n\" +\n\t\"\\atimeout\\x18\\x01 \\x01(\\v2\\x19.google.protobuf.DurationB\\n\" +\n\t\"\\xfaB\\a\\xaa\\x01\\x04\\b\\x01*\\x00R\\atimeout\\x12A\\n\" +\n\t\"\\binterval\\x18\\x02 \\x01(\\v2\\x19.google.protobuf.DurationB\\n\" +\n\t\"\\xfaB\\a\\xaa\\x01\\x04\\b\\x01*\\x00R\\binterval\\x12@\\n\" +\n\t\"\\x0einitial_jitter\\x18\\x14 \\x01(\\v2\\x19.google.protobuf.DurationR\\rinitialJitter\\x12B\\n\" +\n\t\"\\x0finterval_jitter\\x18\\x03 \\x01(\\v2\\x19.google.protobuf.DurationR\\x0eintervalJitter\\x126\\n\" +\n\t\"\\x17interval_jitter_percent\\x18\\x12 \\x01(\\rR\\x15intervalJitterPercent\\x12W\\n\" +\n\t\"\\x13unhealthy_threshold\\x18\\x04 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\x12unhealthyThreshold\\x12S\\n\" +\n\t\"\\x11healthy_threshold\\x18\\x05 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\x10healthyThreshold\\x127\\n\" +\n\t\"\\balt_port\\x18\\x06 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR\\aaltPort\\x12E\\n\" +\n\t\"\\x10reuse_connection\\x18\\a \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\x0freuseConnection\\x12_\\n\" +\n\t\"\\x11http_health_check\\x18\\b \\x01(\\v21.envoy.config.core.v3.HealthCheck.HttpHealthCheckH\\x00R\\x0fhttpHealthCheck\\x12\\\\\\n\" +\n\t\"\\x10tcp_health_check\\x18\\t \\x01(\\v20.envoy.config.core.v3.HealthCheck.TcpHealthCheckH\\x00R\\x0etcpHealthCheck\\x12_\\n\" +\n\t\"\\x11grpc_health_check\\x18\\v \\x01(\\v21.envoy.config.core.v3.HealthCheck.GrpcHealthCheckH\\x00R\\x0fgrpcHealthCheck\\x12e\\n\" +\n\t\"\\x13custom_health_check\\x18\\r \\x01(\\v23.envoy.config.core.v3.HealthCheck.CustomHealthCheckH\\x00R\\x11customHealthCheck\\x12S\\n\" +\n\t\"\\x13no_traffic_interval\\x18\\f \\x01(\\v2\\x19.google.protobuf.DurationB\\b\\xfaB\\x05\\xaa\\x01\\x02*\\x00R\\x11noTrafficInterval\\x12b\\n\" +\n\t\"\\x1bno_traffic_healthy_interval\\x18\\x18 \\x01(\\v2\\x19.google.protobuf.DurationB\\b\\xfaB\\x05\\xaa\\x01\\x02*\\x00R\\x18noTrafficHealthyInterval\\x12R\\n\" +\n\t\"\\x12unhealthy_interval\\x18\\x0e \\x01(\\v2\\x19.google.protobuf.DurationB\\b\\xfaB\\x05\\xaa\\x01\\x02*\\x00R\\x11unhealthyInterval\\x12[\\n\" +\n\t\"\\x17unhealthy_edge_interval\\x18\\x0f \\x01(\\v2\\x19.google.protobuf.DurationB\\b\\xfaB\\x05\\xaa\\x01\\x02*\\x00R\\x15unhealthyEdgeInterval\\x12W\\n\" +\n\t\"\\x15healthy_edge_interval\\x18\\x10 \\x01(\\v2\\x19.google.protobuf.DurationB\\b\\xfaB\\x05\\xaa\\x01\\x02*\\x00R\\x13healthyEdgeInterval\\x121\\n\" +\n\t\"\\x0eevent_log_path\\x18\\x11 \\x01(\\tB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\feventLogPath\\x12M\\n\" +\n\t\"\\fevent_logger\\x18\\x19 \\x03(\\v2*.envoy.config.core.v3.TypedExtensionConfigR\\veventLogger\\x12M\\n\" +\n\t\"\\revent_service\\x18\\x16 \\x01(\\v2(.envoy.config.core.v3.EventServiceConfigR\\feventService\\x12F\\n\" +\n\t\" always_log_health_check_failures\\x18\\x13 \\x01(\\bR\\x1calwaysLogHealthCheckFailures\\x12D\\n\" +\n\t\"\\x1falways_log_health_check_success\\x18\\x1a \\x01(\\bR\\x1balwaysLogHealthCheckSuccess\\x12M\\n\" +\n\t\"\\vtls_options\\x18\\x15 \\x01(\\v2,.envoy.config.core.v3.HealthCheck.TlsOptionsR\\n\" +\n\t\"tlsOptions\\x12^\\n\" +\n\t\"\\x1ftransport_socket_match_criteria\\x18\\x17 \\x01(\\v2\\x17.google.protobuf.StructR\\x1ctransportSocketMatchCriteria\\x1a\\x80\\x01\\n\" +\n\t\"\\aPayload\\x12\\x1d\\n\" +\n\t\"\\x04text\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01H\\x00R\\x04text\\x12\\x18\\n\" +\n\t\"\\x06binary\\x18\\x02 \\x01(\\fH\\x00R\\x06binary:,\\x9aň\\x1e'\\n\" +\n\t\"%envoy.api.v2.core.HealthCheck.PayloadB\\x0e\\n\" +\n\t\"\\apayload\\x12\\x03\\xf8B\\x01\\x1a\\xc6\\a\\n\" +\n\t\"\\x0fHttpHealthCheck\\x12\\x1c\\n\" +\n\t\"\\x04host\\x18\\x01 \\x01(\\tB\\b\\xfaB\\x05r\\x03\\xc0\\x01\\x02R\\x04host\\x12\\x1e\\n\" +\n\t\"\\x04path\\x18\\x02 \\x01(\\tB\\n\" +\n\t\"\\xfaB\\ar\\x05\\x10\\x01\\xc0\\x01\\x02R\\x04path\\x12=\\n\" +\n\t\"\\x04send\\x18\\x03 \\x01(\\v2).envoy.config.core.v3.HealthCheck.PayloadR\\x04send\\x12C\\n\" +\n\t\"\\areceive\\x18\\x04 \\x03(\\v2).envoy.config.core.v3.HealthCheck.PayloadR\\areceive\\x12W\\n\" +\n\t\"\\x14response_buffer_size\\x18\\x0e \\x01(\\v2\\x1c.google.protobuf.UInt64ValueB\\a\\xfaB\\x042\\x02(\\x00R\\x12responseBufferSize\\x12g\\n\" +\n\t\"\\x16request_headers_to_add\\x18\\x06 \\x03(\\v2'.envoy.config.core.v3.HeaderValueOptionB\\t\\xfaB\\x06\\x92\\x01\\x03\\x10\\xe8\\aR\\x13requestHeadersToAdd\\x12K\\n\" +\n\t\"\\x19request_headers_to_remove\\x18\\b \\x03(\\tB\\x10\\xfaB\\r\\x92\\x01\\n\" +\n\t\"\\\"\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x16requestHeadersToRemove\\x12F\\n\" +\n\t\"\\x11expected_statuses\\x18\\t \\x03(\\v2\\x19.envoy.type.v3.Int64RangeR\\x10expectedStatuses\\x12H\\n\" +\n\t\"\\x12retriable_statuses\\x18\\f \\x03(\\v2\\x19.envoy.type.v3.Int64RangeR\\x11retriableStatuses\\x12T\\n\" +\n\t\"\\x11codec_client_type\\x18\\n\" +\n\t\" \\x01(\\x0e2\\x1e.envoy.type.v3.CodecClientTypeB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\x0fcodecClientType\\x12V\\n\" +\n\t\"\\x14service_name_matcher\\x18\\v \\x01(\\v2$.envoy.type.matcher.v3.StringMatcherR\\x12serviceNameMatcher\\x12G\\n\" +\n\t\"\\x06method\\x18\\r \\x01(\\x0e2#.envoy.config.core.v3.RequestMethodB\\n\" +\n\t\"\\xfaB\\a\\x82\\x01\\x04\\x10\\x01 \\x06R\\x06method:4\\x9aň\\x1e/\\n\" +\n\t\"-envoy.api.v2.core.HealthCheck.HttpHealthCheckJ\\x04\\b\\x05\\x10\\x06J\\x04\\b\\a\\x10\\bR\\fservice_nameR\\tuse_http2\\x1a\\xa8\\x02\\n\" +\n\t\"\\x0eTcpHealthCheck\\x12=\\n\" +\n\t\"\\x04send\\x18\\x01 \\x01(\\v2).envoy.config.core.v3.HealthCheck.PayloadR\\x04send\\x12C\\n\" +\n\t\"\\areceive\\x18\\x02 \\x03(\\v2).envoy.config.core.v3.HealthCheck.PayloadR\\areceive\\x12]\\n\" +\n\t\"\\x15proxy_protocol_config\\x18\\x03 \\x01(\\v2).envoy.config.core.v3.ProxyProtocolConfigR\\x13proxyProtocolConfig:3\\x9aň\\x1e.\\n\" +\n\t\",envoy.api.v2.core.HealthCheck.TcpHealthCheck\\x1a[\\n\" +\n\t\"\\x10RedisHealthCheck\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key:5\\x9aň\\x1e0\\n\" +\n\t\".envoy.api.v2.core.HealthCheck.RedisHealthCheck\\x1a\\xf4\\x01\\n\" +\n\t\"\\x0fGrpcHealthCheck\\x12!\\n\" +\n\t\"\\fservice_name\\x18\\x01 \\x01(\\tR\\vserviceName\\x12)\\n\" +\n\t\"\\tauthority\\x18\\x02 \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x02R\\tauthority\\x12]\\n\" +\n\t\"\\x10initial_metadata\\x18\\x03 \\x03(\\v2'.envoy.config.core.v3.HeaderValueOptionB\\t\\xfaB\\x06\\x92\\x01\\x03\\x10\\xe8\\aR\\x0finitialMetadata:4\\x9aň\\x1e/\\n\" +\n\t\"-envoy.api.v2.core.HealthCheck.GrpcHealthCheck\\x1a\\xc0\\x01\\n\" +\n\t\"\\x11CustomHealthCheck\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x129\\n\" +\n\t\"\\ftyped_config\\x18\\x03 \\x01(\\v2\\x14.google.protobuf.AnyH\\x00R\\vtypedConfig:6\\x9aň\\x1e1\\n\" +\n\t\"/envoy.api.v2.core.HealthCheck.CustomHealthCheckB\\r\\n\" +\n\t\"\\vconfig_typeJ\\x04\\b\\x02\\x10\\x03R\\x06config\\x1ad\\n\" +\n\t\"\\n\" +\n\t\"TlsOptions\\x12%\\n\" +\n\t\"\\x0ealpn_protocols\\x18\\x01 \\x03(\\tR\\ralpnProtocols:/\\x9aň\\x1e*\\n\" +\n\t\"(envoy.api.v2.core.HealthCheck.TlsOptions:$\\x9aň\\x1e\\x1f\\n\" +\n\t\"\\x1denvoy.api.v2.core.HealthCheckB\\x15\\n\" +\n\t\"\\x0ehealth_checker\\x12\\x03\\xf8B\\x01J\\x04\\b\\n\" +\n\t\"\\x10\\v*`\\n\" +\n\t\"\\fHealthStatus\\x12\\v\\n\" +\n\t\"\\aUNKNOWN\\x10\\x00\\x12\\v\\n\" +\n\t\"\\aHEALTHY\\x10\\x01\\x12\\r\\n\" +\n\t\"\\tUNHEALTHY\\x10\\x02\\x12\\f\\n\" +\n\t\"\\bDRAINING\\x10\\x03\\x12\\v\\n\" +\n\t\"\\aTIMEOUT\\x10\\x04\\x12\\f\\n\" +\n\t\"\\bDEGRADED\\x10\\x05B\\x84\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\x10HealthCheckProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_health_check_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_health_check_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_health_check_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_health_check_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_health_check_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_health_check_proto_rawDesc), len(file_envoy_config_core_v3_health_check_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_health_check_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_health_check_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_envoy_config_core_v3_health_check_proto_msgTypes = make([]protoimpl.MessageInfo, 9)\nvar file_envoy_config_core_v3_health_check_proto_goTypes = []any{\n\t(HealthStatus)(0),                     // 0: envoy.config.core.v3.HealthStatus\n\t(*HealthStatusSet)(nil),               // 1: envoy.config.core.v3.HealthStatusSet\n\t(*HealthCheck)(nil),                   // 2: envoy.config.core.v3.HealthCheck\n\t(*HealthCheck_Payload)(nil),           // 3: envoy.config.core.v3.HealthCheck.Payload\n\t(*HealthCheck_HttpHealthCheck)(nil),   // 4: envoy.config.core.v3.HealthCheck.HttpHealthCheck\n\t(*HealthCheck_TcpHealthCheck)(nil),    // 5: envoy.config.core.v3.HealthCheck.TcpHealthCheck\n\t(*HealthCheck_RedisHealthCheck)(nil),  // 6: envoy.config.core.v3.HealthCheck.RedisHealthCheck\n\t(*HealthCheck_GrpcHealthCheck)(nil),   // 7: envoy.config.core.v3.HealthCheck.GrpcHealthCheck\n\t(*HealthCheck_CustomHealthCheck)(nil), // 8: envoy.config.core.v3.HealthCheck.CustomHealthCheck\n\t(*HealthCheck_TlsOptions)(nil),        // 9: envoy.config.core.v3.HealthCheck.TlsOptions\n\t(*durationpb.Duration)(nil),           // 10: google.protobuf.Duration\n\t(*wrapperspb.UInt32Value)(nil),        // 11: google.protobuf.UInt32Value\n\t(*wrapperspb.BoolValue)(nil),          // 12: google.protobuf.BoolValue\n\t(*TypedExtensionConfig)(nil),          // 13: envoy.config.core.v3.TypedExtensionConfig\n\t(*EventServiceConfig)(nil),            // 14: envoy.config.core.v3.EventServiceConfig\n\t(*structpb.Struct)(nil),               // 15: google.protobuf.Struct\n\t(*wrapperspb.UInt64Value)(nil),        // 16: google.protobuf.UInt64Value\n\t(*HeaderValueOption)(nil),             // 17: envoy.config.core.v3.HeaderValueOption\n\t(*v3.Int64Range)(nil),                 // 18: envoy.type.v3.Int64Range\n\t(v3.CodecClientType)(0),               // 19: envoy.type.v3.CodecClientType\n\t(*v31.StringMatcher)(nil),             // 20: envoy.type.matcher.v3.StringMatcher\n\t(RequestMethod)(0),                    // 21: envoy.config.core.v3.RequestMethod\n\t(*ProxyProtocolConfig)(nil),           // 22: envoy.config.core.v3.ProxyProtocolConfig\n\t(*anypb.Any)(nil),                     // 23: google.protobuf.Any\n}\nvar file_envoy_config_core_v3_health_check_proto_depIdxs = []int32{\n\t0,  // 0: envoy.config.core.v3.HealthStatusSet.statuses:type_name -> envoy.config.core.v3.HealthStatus\n\t10, // 1: envoy.config.core.v3.HealthCheck.timeout:type_name -> google.protobuf.Duration\n\t10, // 2: envoy.config.core.v3.HealthCheck.interval:type_name -> google.protobuf.Duration\n\t10, // 3: envoy.config.core.v3.HealthCheck.initial_jitter:type_name -> google.protobuf.Duration\n\t10, // 4: envoy.config.core.v3.HealthCheck.interval_jitter:type_name -> google.protobuf.Duration\n\t11, // 5: envoy.config.core.v3.HealthCheck.unhealthy_threshold:type_name -> google.protobuf.UInt32Value\n\t11, // 6: envoy.config.core.v3.HealthCheck.healthy_threshold:type_name -> google.protobuf.UInt32Value\n\t11, // 7: envoy.config.core.v3.HealthCheck.alt_port:type_name -> google.protobuf.UInt32Value\n\t12, // 8: envoy.config.core.v3.HealthCheck.reuse_connection:type_name -> google.protobuf.BoolValue\n\t4,  // 9: envoy.config.core.v3.HealthCheck.http_health_check:type_name -> envoy.config.core.v3.HealthCheck.HttpHealthCheck\n\t5,  // 10: envoy.config.core.v3.HealthCheck.tcp_health_check:type_name -> envoy.config.core.v3.HealthCheck.TcpHealthCheck\n\t7,  // 11: envoy.config.core.v3.HealthCheck.grpc_health_check:type_name -> envoy.config.core.v3.HealthCheck.GrpcHealthCheck\n\t8,  // 12: envoy.config.core.v3.HealthCheck.custom_health_check:type_name -> envoy.config.core.v3.HealthCheck.CustomHealthCheck\n\t10, // 13: envoy.config.core.v3.HealthCheck.no_traffic_interval:type_name -> google.protobuf.Duration\n\t10, // 14: envoy.config.core.v3.HealthCheck.no_traffic_healthy_interval:type_name -> google.protobuf.Duration\n\t10, // 15: envoy.config.core.v3.HealthCheck.unhealthy_interval:type_name -> google.protobuf.Duration\n\t10, // 16: envoy.config.core.v3.HealthCheck.unhealthy_edge_interval:type_name -> google.protobuf.Duration\n\t10, // 17: envoy.config.core.v3.HealthCheck.healthy_edge_interval:type_name -> google.protobuf.Duration\n\t13, // 18: envoy.config.core.v3.HealthCheck.event_logger:type_name -> envoy.config.core.v3.TypedExtensionConfig\n\t14, // 19: envoy.config.core.v3.HealthCheck.event_service:type_name -> envoy.config.core.v3.EventServiceConfig\n\t9,  // 20: envoy.config.core.v3.HealthCheck.tls_options:type_name -> envoy.config.core.v3.HealthCheck.TlsOptions\n\t15, // 21: envoy.config.core.v3.HealthCheck.transport_socket_match_criteria:type_name -> google.protobuf.Struct\n\t3,  // 22: envoy.config.core.v3.HealthCheck.HttpHealthCheck.send:type_name -> envoy.config.core.v3.HealthCheck.Payload\n\t3,  // 23: envoy.config.core.v3.HealthCheck.HttpHealthCheck.receive:type_name -> envoy.config.core.v3.HealthCheck.Payload\n\t16, // 24: envoy.config.core.v3.HealthCheck.HttpHealthCheck.response_buffer_size:type_name -> google.protobuf.UInt64Value\n\t17, // 25: envoy.config.core.v3.HealthCheck.HttpHealthCheck.request_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption\n\t18, // 26: envoy.config.core.v3.HealthCheck.HttpHealthCheck.expected_statuses:type_name -> envoy.type.v3.Int64Range\n\t18, // 27: envoy.config.core.v3.HealthCheck.HttpHealthCheck.retriable_statuses:type_name -> envoy.type.v3.Int64Range\n\t19, // 28: envoy.config.core.v3.HealthCheck.HttpHealthCheck.codec_client_type:type_name -> envoy.type.v3.CodecClientType\n\t20, // 29: envoy.config.core.v3.HealthCheck.HttpHealthCheck.service_name_matcher:type_name -> envoy.type.matcher.v3.StringMatcher\n\t21, // 30: envoy.config.core.v3.HealthCheck.HttpHealthCheck.method:type_name -> envoy.config.core.v3.RequestMethod\n\t3,  // 31: envoy.config.core.v3.HealthCheck.TcpHealthCheck.send:type_name -> envoy.config.core.v3.HealthCheck.Payload\n\t3,  // 32: envoy.config.core.v3.HealthCheck.TcpHealthCheck.receive:type_name -> envoy.config.core.v3.HealthCheck.Payload\n\t22, // 33: envoy.config.core.v3.HealthCheck.TcpHealthCheck.proxy_protocol_config:type_name -> envoy.config.core.v3.ProxyProtocolConfig\n\t17, // 34: envoy.config.core.v3.HealthCheck.GrpcHealthCheck.initial_metadata:type_name -> envoy.config.core.v3.HeaderValueOption\n\t23, // 35: envoy.config.core.v3.HealthCheck.CustomHealthCheck.typed_config:type_name -> google.protobuf.Any\n\t36, // [36:36] is the sub-list for method output_type\n\t36, // [36:36] is the sub-list for method input_type\n\t36, // [36:36] is the sub-list for extension type_name\n\t36, // [36:36] is the sub-list for extension extendee\n\t0,  // [0:36] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_health_check_proto_init() }\nfunc file_envoy_config_core_v3_health_check_proto_init() {\n\tif File_envoy_config_core_v3_health_check_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_core_v3_base_proto_init()\n\tfile_envoy_config_core_v3_event_service_config_proto_init()\n\tfile_envoy_config_core_v3_extension_proto_init()\n\tfile_envoy_config_core_v3_proxy_protocol_proto_init()\n\tfile_envoy_config_core_v3_health_check_proto_msgTypes[1].OneofWrappers = []any{\n\t\t(*HealthCheck_HttpHealthCheck_)(nil),\n\t\t(*HealthCheck_TcpHealthCheck_)(nil),\n\t\t(*HealthCheck_GrpcHealthCheck_)(nil),\n\t\t(*HealthCheck_CustomHealthCheck_)(nil),\n\t}\n\tfile_envoy_config_core_v3_health_check_proto_msgTypes[2].OneofWrappers = []any{\n\t\t(*HealthCheck_Payload_Text)(nil),\n\t\t(*HealthCheck_Payload_Binary)(nil),\n\t}\n\tfile_envoy_config_core_v3_health_check_proto_msgTypes[7].OneofWrappers = []any{\n\t\t(*HealthCheck_CustomHealthCheck_TypedConfig)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_health_check_proto_rawDesc), len(file_envoy_config_core_v3_health_check_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   9,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_health_check_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_health_check_proto_depIdxs,\n\t\tEnumInfos:         file_envoy_config_core_v3_health_check_proto_enumTypes,\n\t\tMessageInfos:      file_envoy_config_core_v3_health_check_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_health_check_proto = out.File\n\tfile_envoy_config_core_v3_health_check_proto_goTypes = nil\n\tfile_envoy_config_core_v3_health_check_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/health_check.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/health_check.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/type/v3\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n\n\t_ = v3.CodecClientType(0)\n)\n\n// Validate checks the field values on HealthStatusSet with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *HealthStatusSet) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HealthStatusSet with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HealthStatusSetMultiError, or nil if none found.\nfunc (m *HealthStatusSet) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HealthStatusSet) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetStatuses() {\n\t\t_, _ = idx, item\n\n\t\tif _, ok := HealthStatus_name[int32(item)]; !ok {\n\t\t\terr := HealthStatusSetValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"Statuses[%v]\", idx),\n\t\t\t\treason: \"value must be one of the defined enum values\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HealthStatusSetMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HealthStatusSetMultiError is an error wrapping multiple validation errors\n// returned by HealthStatusSet.ValidateAll() if the designated constraints\n// aren't met.\ntype HealthStatusSetMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HealthStatusSetMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HealthStatusSetMultiError) AllErrors() []error { return m }\n\n// HealthStatusSetValidationError is the validation error returned by\n// HealthStatusSet.Validate if the designated constraints aren't met.\ntype HealthStatusSetValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HealthStatusSetValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HealthStatusSetValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HealthStatusSetValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HealthStatusSetValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HealthStatusSetValidationError) ErrorName() string { return \"HealthStatusSetValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e HealthStatusSetValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHealthStatusSet.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HealthStatusSetValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HealthStatusSetValidationError{}\n\n// Validate checks the field values on HealthCheck with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *HealthCheck) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HealthCheck with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in HealthCheckMultiError, or\n// nil if none found.\nfunc (m *HealthCheck) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HealthCheck) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetTimeout() == nil {\n\t\terr := HealthCheckValidationError{\n\t\t\tfield:  \"Timeout\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif d := m.GetTimeout(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = HealthCheckValidationError{\n\t\t\t\tfield:  \"Timeout\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgt := time.Duration(0*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur <= gt {\n\t\t\t\terr := HealthCheckValidationError{\n\t\t\t\t\tfield:  \"Timeout\",\n\t\t\t\t\treason: \"value must be greater than 0s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif m.GetInterval() == nil {\n\t\terr := HealthCheckValidationError{\n\t\t\tfield:  \"Interval\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif d := m.GetInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = HealthCheckValidationError{\n\t\t\t\tfield:  \"Interval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgt := time.Duration(0*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur <= gt {\n\t\t\t\terr := HealthCheckValidationError{\n\t\t\t\t\tfield:  \"Interval\",\n\t\t\t\t\treason: \"value must be greater than 0s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetInitialJitter()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"InitialJitter\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"InitialJitter\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetInitialJitter()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HealthCheckValidationError{\n\t\t\t\tfield:  \"InitialJitter\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetIntervalJitter()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"IntervalJitter\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"IntervalJitter\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetIntervalJitter()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HealthCheckValidationError{\n\t\t\t\tfield:  \"IntervalJitter\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for IntervalJitterPercent\n\n\tif m.GetUnhealthyThreshold() == nil {\n\t\terr := HealthCheckValidationError{\n\t\t\tfield:  \"UnhealthyThreshold\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetUnhealthyThreshold()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"UnhealthyThreshold\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"UnhealthyThreshold\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetUnhealthyThreshold()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HealthCheckValidationError{\n\t\t\t\tfield:  \"UnhealthyThreshold\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif m.GetHealthyThreshold() == nil {\n\t\terr := HealthCheckValidationError{\n\t\t\tfield:  \"HealthyThreshold\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetHealthyThreshold()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"HealthyThreshold\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"HealthyThreshold\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetHealthyThreshold()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HealthCheckValidationError{\n\t\t\t\tfield:  \"HealthyThreshold\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetAltPort()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"AltPort\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"AltPort\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetAltPort()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HealthCheckValidationError{\n\t\t\t\tfield:  \"AltPort\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetReuseConnection()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"ReuseConnection\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"ReuseConnection\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetReuseConnection()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HealthCheckValidationError{\n\t\t\t\tfield:  \"ReuseConnection\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif d := m.GetNoTrafficInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = HealthCheckValidationError{\n\t\t\t\tfield:  \"NoTrafficInterval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgt := time.Duration(0*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur <= gt {\n\t\t\t\terr := HealthCheckValidationError{\n\t\t\t\t\tfield:  \"NoTrafficInterval\",\n\t\t\t\t\treason: \"value must be greater than 0s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif d := m.GetNoTrafficHealthyInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = HealthCheckValidationError{\n\t\t\t\tfield:  \"NoTrafficHealthyInterval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgt := time.Duration(0*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur <= gt {\n\t\t\t\terr := HealthCheckValidationError{\n\t\t\t\t\tfield:  \"NoTrafficHealthyInterval\",\n\t\t\t\t\treason: \"value must be greater than 0s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif d := m.GetUnhealthyInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = HealthCheckValidationError{\n\t\t\t\tfield:  \"UnhealthyInterval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgt := time.Duration(0*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur <= gt {\n\t\t\t\terr := HealthCheckValidationError{\n\t\t\t\t\tfield:  \"UnhealthyInterval\",\n\t\t\t\t\treason: \"value must be greater than 0s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif d := m.GetUnhealthyEdgeInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = HealthCheckValidationError{\n\t\t\t\tfield:  \"UnhealthyEdgeInterval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgt := time.Duration(0*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur <= gt {\n\t\t\t\terr := HealthCheckValidationError{\n\t\t\t\t\tfield:  \"UnhealthyEdgeInterval\",\n\t\t\t\t\treason: \"value must be greater than 0s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif d := m.GetHealthyEdgeInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = HealthCheckValidationError{\n\t\t\t\tfield:  \"HealthyEdgeInterval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgt := time.Duration(0*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur <= gt {\n\t\t\t\terr := HealthCheckValidationError{\n\t\t\t\t\tfield:  \"HealthyEdgeInterval\",\n\t\t\t\t\treason: \"value must be greater than 0s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\t// no validation rules for EventLogPath\n\n\tfor idx, item := range m.GetEventLogger() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"EventLogger[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"EventLogger[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HealthCheckValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"EventLogger[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetEventService()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"EventService\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"EventService\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetEventService()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HealthCheckValidationError{\n\t\t\t\tfield:  \"EventService\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for AlwaysLogHealthCheckFailures\n\n\t// no validation rules for AlwaysLogHealthCheckSuccess\n\n\tif all {\n\t\tswitch v := interface{}(m.GetTlsOptions()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"TlsOptions\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"TlsOptions\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetTlsOptions()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HealthCheckValidationError{\n\t\t\t\tfield:  \"TlsOptions\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetTransportSocketMatchCriteria()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"TransportSocketMatchCriteria\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\tfield:  \"TransportSocketMatchCriteria\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetTransportSocketMatchCriteria()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HealthCheckValidationError{\n\t\t\t\tfield:  \"TransportSocketMatchCriteria\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\toneofHealthCheckerPresent := false\n\tswitch v := m.HealthChecker.(type) {\n\tcase *HealthCheck_HttpHealthCheck_:\n\t\tif v == nil {\n\t\t\terr := HealthCheckValidationError{\n\t\t\t\tfield:  \"HealthChecker\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofHealthCheckerPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetHttpHealthCheck()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\t\tfield:  \"HttpHealthCheck\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\t\tfield:  \"HttpHealthCheck\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetHttpHealthCheck()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HealthCheckValidationError{\n\t\t\t\t\tfield:  \"HttpHealthCheck\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *HealthCheck_TcpHealthCheck_:\n\t\tif v == nil {\n\t\t\terr := HealthCheckValidationError{\n\t\t\t\tfield:  \"HealthChecker\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofHealthCheckerPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetTcpHealthCheck()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\t\tfield:  \"TcpHealthCheck\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\t\tfield:  \"TcpHealthCheck\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetTcpHealthCheck()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HealthCheckValidationError{\n\t\t\t\t\tfield:  \"TcpHealthCheck\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *HealthCheck_GrpcHealthCheck_:\n\t\tif v == nil {\n\t\t\terr := HealthCheckValidationError{\n\t\t\t\tfield:  \"HealthChecker\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofHealthCheckerPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetGrpcHealthCheck()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\t\tfield:  \"GrpcHealthCheck\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\t\tfield:  \"GrpcHealthCheck\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetGrpcHealthCheck()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HealthCheckValidationError{\n\t\t\t\t\tfield:  \"GrpcHealthCheck\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *HealthCheck_CustomHealthCheck_:\n\t\tif v == nil {\n\t\t\terr := HealthCheckValidationError{\n\t\t\t\tfield:  \"HealthChecker\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofHealthCheckerPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetCustomHealthCheck()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\t\tfield:  \"CustomHealthCheck\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheckValidationError{\n\t\t\t\t\t\tfield:  \"CustomHealthCheck\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetCustomHealthCheck()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HealthCheckValidationError{\n\t\t\t\t\tfield:  \"CustomHealthCheck\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofHealthCheckerPresent {\n\t\terr := HealthCheckValidationError{\n\t\t\tfield:  \"HealthChecker\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HealthCheckMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HealthCheckMultiError is an error wrapping multiple validation errors\n// returned by HealthCheck.ValidateAll() if the designated constraints aren't met.\ntype HealthCheckMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HealthCheckMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HealthCheckMultiError) AllErrors() []error { return m }\n\n// HealthCheckValidationError is the validation error returned by\n// HealthCheck.Validate if the designated constraints aren't met.\ntype HealthCheckValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HealthCheckValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HealthCheckValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HealthCheckValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HealthCheckValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HealthCheckValidationError) ErrorName() string { return \"HealthCheckValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e HealthCheckValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHealthCheck.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HealthCheckValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HealthCheckValidationError{}\n\n// Validate checks the field values on HealthCheck_Payload with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HealthCheck_Payload) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HealthCheck_Payload with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HealthCheck_PayloadMultiError, or nil if none found.\nfunc (m *HealthCheck_Payload) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HealthCheck_Payload) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofPayloadPresent := false\n\tswitch v := m.Payload.(type) {\n\tcase *HealthCheck_Payload_Text:\n\t\tif v == nil {\n\t\t\terr := HealthCheck_PayloadValidationError{\n\t\t\t\tfield:  \"Payload\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPayloadPresent = true\n\n\t\tif utf8.RuneCountInString(m.GetText()) < 1 {\n\t\t\terr := HealthCheck_PayloadValidationError{\n\t\t\t\tfield:  \"Text\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *HealthCheck_Payload_Binary:\n\t\tif v == nil {\n\t\t\terr := HealthCheck_PayloadValidationError{\n\t\t\t\tfield:  \"Payload\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPayloadPresent = true\n\t\t// no validation rules for Binary\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofPayloadPresent {\n\t\terr := HealthCheck_PayloadValidationError{\n\t\t\tfield:  \"Payload\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HealthCheck_PayloadMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HealthCheck_PayloadMultiError is an error wrapping multiple validation\n// errors returned by HealthCheck_Payload.ValidateAll() if the designated\n// constraints aren't met.\ntype HealthCheck_PayloadMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HealthCheck_PayloadMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HealthCheck_PayloadMultiError) AllErrors() []error { return m }\n\n// HealthCheck_PayloadValidationError is the validation error returned by\n// HealthCheck_Payload.Validate if the designated constraints aren't met.\ntype HealthCheck_PayloadValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HealthCheck_PayloadValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HealthCheck_PayloadValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HealthCheck_PayloadValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HealthCheck_PayloadValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HealthCheck_PayloadValidationError) ErrorName() string {\n\treturn \"HealthCheck_PayloadValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HealthCheck_PayloadValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHealthCheck_Payload.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HealthCheck_PayloadValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HealthCheck_PayloadValidationError{}\n\n// Validate checks the field values on HealthCheck_HttpHealthCheck with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HealthCheck_HttpHealthCheck) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HealthCheck_HttpHealthCheck with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HealthCheck_HttpHealthCheckMultiError, or nil if none found.\nfunc (m *HealthCheck_HttpHealthCheck) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HealthCheck_HttpHealthCheck) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif !_HealthCheck_HttpHealthCheck_Host_Pattern.MatchString(m.GetHost()) {\n\t\terr := HealthCheck_HttpHealthCheckValidationError{\n\t\t\tfield:  \"Host\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00-\\\\b\\\\n-\\\\x1f\\\\x7f]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif utf8.RuneCountInString(m.GetPath()) < 1 {\n\t\terr := HealthCheck_HttpHealthCheckValidationError{\n\t\t\tfield:  \"Path\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif !_HealthCheck_HttpHealthCheck_Path_Pattern.MatchString(m.GetPath()) {\n\t\terr := HealthCheck_HttpHealthCheckValidationError{\n\t\t\tfield:  \"Path\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00-\\\\b\\\\n-\\\\x1f\\\\x7f]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetSend()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\tfield:  \"Send\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\tfield:  \"Send\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetSend()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\tfield:  \"Send\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetReceive() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Receive[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Receive[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Receive[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif wrapper := m.GetResponseBufferSize(); wrapper != nil {\n\n\t\tif wrapper.GetValue() < 0 {\n\t\t\terr := HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\tfield:  \"ResponseBufferSize\",\n\t\t\t\treason: \"value must be greater than or equal to 0\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(m.GetRequestHeadersToAdd()) > 1000 {\n\t\terr := HealthCheck_HttpHealthCheckValidationError{\n\t\t\tfield:  \"RequestHeadersToAdd\",\n\t\t\treason: \"value must contain no more than 1000 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetRequestHeadersToAdd() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetRequestHeadersToRemove() {\n\t\t_, _ = idx, item\n\n\t\tif !_HealthCheck_HttpHealthCheck_RequestHeadersToRemove_Pattern.MatchString(item) {\n\t\t\terr := HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToRemove[%v]\", idx),\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetExpectedStatuses() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ExpectedStatuses[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ExpectedStatuses[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ExpectedStatuses[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetRetriableStatuses() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RetriableStatuses[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RetriableStatuses[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RetriableStatuses[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif _, ok := v3.CodecClientType_name[int32(m.GetCodecClientType())]; !ok {\n\t\terr := HealthCheck_HttpHealthCheckValidationError{\n\t\t\tfield:  \"CodecClientType\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetServiceNameMatcher()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\tfield:  \"ServiceNameMatcher\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\t\tfield:  \"ServiceNameMatcher\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetServiceNameMatcher()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HealthCheck_HttpHealthCheckValidationError{\n\t\t\t\tfield:  \"ServiceNameMatcher\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif _, ok := _HealthCheck_HttpHealthCheck_Method_NotInLookup[m.GetMethod()]; ok {\n\t\terr := HealthCheck_HttpHealthCheckValidationError{\n\t\t\tfield:  \"Method\",\n\t\t\treason: \"value must not be in list [CONNECT]\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif _, ok := RequestMethod_name[int32(m.GetMethod())]; !ok {\n\t\terr := HealthCheck_HttpHealthCheckValidationError{\n\t\t\tfield:  \"Method\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HealthCheck_HttpHealthCheckMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HealthCheck_HttpHealthCheckMultiError is an error wrapping multiple\n// validation errors returned by HealthCheck_HttpHealthCheck.ValidateAll() if\n// the designated constraints aren't met.\ntype HealthCheck_HttpHealthCheckMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HealthCheck_HttpHealthCheckMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HealthCheck_HttpHealthCheckMultiError) AllErrors() []error { return m }\n\n// HealthCheck_HttpHealthCheckValidationError is the validation error returned\n// by HealthCheck_HttpHealthCheck.Validate if the designated constraints\n// aren't met.\ntype HealthCheck_HttpHealthCheckValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HealthCheck_HttpHealthCheckValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HealthCheck_HttpHealthCheckValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HealthCheck_HttpHealthCheckValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HealthCheck_HttpHealthCheckValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HealthCheck_HttpHealthCheckValidationError) ErrorName() string {\n\treturn \"HealthCheck_HttpHealthCheckValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HealthCheck_HttpHealthCheckValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHealthCheck_HttpHealthCheck.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HealthCheck_HttpHealthCheckValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HealthCheck_HttpHealthCheckValidationError{}\n\nvar _HealthCheck_HttpHealthCheck_Host_Pattern = regexp.MustCompile(\"^[^\\x00-\\b\\n-\\x1f\\x7f]*$\")\n\nvar _HealthCheck_HttpHealthCheck_Path_Pattern = regexp.MustCompile(\"^[^\\x00-\\b\\n-\\x1f\\x7f]*$\")\n\nvar _HealthCheck_HttpHealthCheck_RequestHeadersToRemove_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _HealthCheck_HttpHealthCheck_Method_NotInLookup = map[RequestMethod]struct{}{\n\t6: {},\n}\n\n// Validate checks the field values on HealthCheck_TcpHealthCheck with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HealthCheck_TcpHealthCheck) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HealthCheck_TcpHealthCheck with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HealthCheck_TcpHealthCheckMultiError, or nil if none found.\nfunc (m *HealthCheck_TcpHealthCheck) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HealthCheck_TcpHealthCheck) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetSend()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheck_TcpHealthCheckValidationError{\n\t\t\t\t\tfield:  \"Send\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheck_TcpHealthCheckValidationError{\n\t\t\t\t\tfield:  \"Send\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetSend()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HealthCheck_TcpHealthCheckValidationError{\n\t\t\t\tfield:  \"Send\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetReceive() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheck_TcpHealthCheckValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Receive[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheck_TcpHealthCheckValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Receive[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HealthCheck_TcpHealthCheckValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Receive[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetProxyProtocolConfig()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheck_TcpHealthCheckValidationError{\n\t\t\t\t\tfield:  \"ProxyProtocolConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HealthCheck_TcpHealthCheckValidationError{\n\t\t\t\t\tfield:  \"ProxyProtocolConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetProxyProtocolConfig()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HealthCheck_TcpHealthCheckValidationError{\n\t\t\t\tfield:  \"ProxyProtocolConfig\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HealthCheck_TcpHealthCheckMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HealthCheck_TcpHealthCheckMultiError is an error wrapping multiple\n// validation errors returned by HealthCheck_TcpHealthCheck.ValidateAll() if\n// the designated constraints aren't met.\ntype HealthCheck_TcpHealthCheckMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HealthCheck_TcpHealthCheckMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HealthCheck_TcpHealthCheckMultiError) AllErrors() []error { return m }\n\n// HealthCheck_TcpHealthCheckValidationError is the validation error returned\n// by HealthCheck_TcpHealthCheck.Validate if the designated constraints aren't met.\ntype HealthCheck_TcpHealthCheckValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HealthCheck_TcpHealthCheckValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HealthCheck_TcpHealthCheckValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HealthCheck_TcpHealthCheckValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HealthCheck_TcpHealthCheckValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HealthCheck_TcpHealthCheckValidationError) ErrorName() string {\n\treturn \"HealthCheck_TcpHealthCheckValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HealthCheck_TcpHealthCheckValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHealthCheck_TcpHealthCheck.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HealthCheck_TcpHealthCheckValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HealthCheck_TcpHealthCheckValidationError{}\n\n// Validate checks the field values on HealthCheck_RedisHealthCheck with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HealthCheck_RedisHealthCheck) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HealthCheck_RedisHealthCheck with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HealthCheck_RedisHealthCheckMultiError, or nil if none found.\nfunc (m *HealthCheck_RedisHealthCheck) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HealthCheck_RedisHealthCheck) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Key\n\n\tif len(errors) > 0 {\n\t\treturn HealthCheck_RedisHealthCheckMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HealthCheck_RedisHealthCheckMultiError is an error wrapping multiple\n// validation errors returned by HealthCheck_RedisHealthCheck.ValidateAll() if\n// the designated constraints aren't met.\ntype HealthCheck_RedisHealthCheckMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HealthCheck_RedisHealthCheckMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HealthCheck_RedisHealthCheckMultiError) AllErrors() []error { return m }\n\n// HealthCheck_RedisHealthCheckValidationError is the validation error returned\n// by HealthCheck_RedisHealthCheck.Validate if the designated constraints\n// aren't met.\ntype HealthCheck_RedisHealthCheckValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HealthCheck_RedisHealthCheckValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HealthCheck_RedisHealthCheckValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HealthCheck_RedisHealthCheckValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HealthCheck_RedisHealthCheckValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HealthCheck_RedisHealthCheckValidationError) ErrorName() string {\n\treturn \"HealthCheck_RedisHealthCheckValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HealthCheck_RedisHealthCheckValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHealthCheck_RedisHealthCheck.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HealthCheck_RedisHealthCheckValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HealthCheck_RedisHealthCheckValidationError{}\n\n// Validate checks the field values on HealthCheck_GrpcHealthCheck with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HealthCheck_GrpcHealthCheck) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HealthCheck_GrpcHealthCheck with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HealthCheck_GrpcHealthCheckMultiError, or nil if none found.\nfunc (m *HealthCheck_GrpcHealthCheck) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HealthCheck_GrpcHealthCheck) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for ServiceName\n\n\tif !_HealthCheck_GrpcHealthCheck_Authority_Pattern.MatchString(m.GetAuthority()) {\n\t\terr := HealthCheck_GrpcHealthCheckValidationError{\n\t\t\tfield:  \"Authority\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(m.GetInitialMetadata()) > 1000 {\n\t\terr := HealthCheck_GrpcHealthCheckValidationError{\n\t\t\tfield:  \"InitialMetadata\",\n\t\t\treason: \"value must contain no more than 1000 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetInitialMetadata() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheck_GrpcHealthCheckValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"InitialMetadata[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheck_GrpcHealthCheckValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"InitialMetadata[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HealthCheck_GrpcHealthCheckValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"InitialMetadata[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HealthCheck_GrpcHealthCheckMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HealthCheck_GrpcHealthCheckMultiError is an error wrapping multiple\n// validation errors returned by HealthCheck_GrpcHealthCheck.ValidateAll() if\n// the designated constraints aren't met.\ntype HealthCheck_GrpcHealthCheckMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HealthCheck_GrpcHealthCheckMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HealthCheck_GrpcHealthCheckMultiError) AllErrors() []error { return m }\n\n// HealthCheck_GrpcHealthCheckValidationError is the validation error returned\n// by HealthCheck_GrpcHealthCheck.Validate if the designated constraints\n// aren't met.\ntype HealthCheck_GrpcHealthCheckValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HealthCheck_GrpcHealthCheckValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HealthCheck_GrpcHealthCheckValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HealthCheck_GrpcHealthCheckValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HealthCheck_GrpcHealthCheckValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HealthCheck_GrpcHealthCheckValidationError) ErrorName() string {\n\treturn \"HealthCheck_GrpcHealthCheckValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HealthCheck_GrpcHealthCheckValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHealthCheck_GrpcHealthCheck.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HealthCheck_GrpcHealthCheckValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HealthCheck_GrpcHealthCheckValidationError{}\n\nvar _HealthCheck_GrpcHealthCheck_Authority_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on HealthCheck_CustomHealthCheck with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HealthCheck_CustomHealthCheck) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HealthCheck_CustomHealthCheck with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// HealthCheck_CustomHealthCheckMultiError, or nil if none found.\nfunc (m *HealthCheck_CustomHealthCheck) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HealthCheck_CustomHealthCheck) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := HealthCheck_CustomHealthCheckValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tswitch v := m.ConfigType.(type) {\n\tcase *HealthCheck_CustomHealthCheck_TypedConfig:\n\t\tif v == nil {\n\t\t\terr := HealthCheck_CustomHealthCheckValidationError{\n\t\t\t\tfield:  \"ConfigType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetTypedConfig()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheck_CustomHealthCheckValidationError{\n\t\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HealthCheck_CustomHealthCheckValidationError{\n\t\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetTypedConfig()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HealthCheck_CustomHealthCheckValidationError{\n\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HealthCheck_CustomHealthCheckMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HealthCheck_CustomHealthCheckMultiError is an error wrapping multiple\n// validation errors returned by HealthCheck_CustomHealthCheck.ValidateAll()\n// if the designated constraints aren't met.\ntype HealthCheck_CustomHealthCheckMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HealthCheck_CustomHealthCheckMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HealthCheck_CustomHealthCheckMultiError) AllErrors() []error { return m }\n\n// HealthCheck_CustomHealthCheckValidationError is the validation error\n// returned by HealthCheck_CustomHealthCheck.Validate if the designated\n// constraints aren't met.\ntype HealthCheck_CustomHealthCheckValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HealthCheck_CustomHealthCheckValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HealthCheck_CustomHealthCheckValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HealthCheck_CustomHealthCheckValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HealthCheck_CustomHealthCheckValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HealthCheck_CustomHealthCheckValidationError) ErrorName() string {\n\treturn \"HealthCheck_CustomHealthCheckValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HealthCheck_CustomHealthCheckValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHealthCheck_CustomHealthCheck.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HealthCheck_CustomHealthCheckValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HealthCheck_CustomHealthCheckValidationError{}\n\n// Validate checks the field values on HealthCheck_TlsOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HealthCheck_TlsOptions) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HealthCheck_TlsOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HealthCheck_TlsOptionsMultiError, or nil if none found.\nfunc (m *HealthCheck_TlsOptions) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HealthCheck_TlsOptions) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn HealthCheck_TlsOptionsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HealthCheck_TlsOptionsMultiError is an error wrapping multiple validation\n// errors returned by HealthCheck_TlsOptions.ValidateAll() if the designated\n// constraints aren't met.\ntype HealthCheck_TlsOptionsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HealthCheck_TlsOptionsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HealthCheck_TlsOptionsMultiError) AllErrors() []error { return m }\n\n// HealthCheck_TlsOptionsValidationError is the validation error returned by\n// HealthCheck_TlsOptions.Validate if the designated constraints aren't met.\ntype HealthCheck_TlsOptionsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HealthCheck_TlsOptionsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HealthCheck_TlsOptionsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HealthCheck_TlsOptionsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HealthCheck_TlsOptionsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HealthCheck_TlsOptionsValidationError) ErrorName() string {\n\treturn \"HealthCheck_TlsOptionsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HealthCheck_TlsOptionsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHealthCheck_TlsOptions.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HealthCheck_TlsOptionsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HealthCheck_TlsOptionsValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/health_check_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/health_check.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tanypb \"github.com/planetscale/vtprotobuf/types/known/anypb\"\n\tdurationpb \"github.com/planetscale/vtprotobuf/types/known/durationpb\"\n\tstructpb \"github.com/planetscale/vtprotobuf/types/known/structpb\"\n\twrapperspb \"github.com/planetscale/vtprotobuf/types/known/wrapperspb\"\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *HealthStatusSet) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HealthStatusSet) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthStatusSet) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Statuses) > 0 {\n\t\tvar pksize2 int\n\t\tfor _, num := range m.Statuses {\n\t\t\tpksize2 += protohelpers.SizeOfVarint(uint64(num))\n\t\t}\n\t\ti -= pksize2\n\t\tj1 := i\n\t\tfor _, num1 := range m.Statuses {\n\t\t\tnum := uint64(num1)\n\t\t\tfor num >= 1<<7 {\n\t\t\t\tdAtA[j1] = uint8(uint64(num)&0x7f | 0x80)\n\t\t\t\tnum >>= 7\n\t\t\t\tj1++\n\t\t\t}\n\t\t\tdAtA[j1] = uint8(num)\n\t\t\tj1++\n\t\t}\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(pksize2))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HealthCheck_Payload) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HealthCheck_Payload) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck_Payload) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.Payload.(*HealthCheck_Payload_Binary); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Payload.(*HealthCheck_Payload_Text); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HealthCheck_Payload_Text) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck_Payload_Text) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Text)\n\tcopy(dAtA[i:], m.Text)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Text)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HealthCheck_Payload_Binary) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck_Payload_Binary) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Binary)\n\tcopy(dAtA[i:], m.Binary)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Binary)))\n\ti--\n\tdAtA[i] = 0x12\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HealthCheck_HttpHealthCheck) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HealthCheck_HttpHealthCheck) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck_HttpHealthCheck) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.ResponseBufferSize != nil {\n\t\tsize, err := (*wrapperspb.UInt64Value)(m.ResponseBufferSize).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x72\n\t}\n\tif m.Method != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Method))\n\t\ti--\n\t\tdAtA[i] = 0x68\n\t}\n\tif len(m.RetriableStatuses) > 0 {\n\t\tfor iNdEx := len(m.RetriableStatuses) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.RetriableStatuses[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.RetriableStatuses[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x62\n\t\t}\n\t}\n\tif m.ServiceNameMatcher != nil {\n\t\tif vtmsg, ok := interface{}(m.ServiceNameMatcher).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.ServiceNameMatcher)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t}\n\tif m.CodecClientType != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.CodecClientType))\n\t\ti--\n\t\tdAtA[i] = 0x50\n\t}\n\tif len(m.ExpectedStatuses) > 0 {\n\t\tfor iNdEx := len(m.ExpectedStatuses) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.ExpectedStatuses[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.ExpectedStatuses[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x4a\n\t\t}\n\t}\n\tif len(m.RequestHeadersToRemove) > 0 {\n\t\tfor iNdEx := len(m.RequestHeadersToRemove) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.RequestHeadersToRemove[iNdEx])\n\t\t\tcopy(dAtA[i:], m.RequestHeadersToRemove[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RequestHeadersToRemove[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t}\n\tif len(m.RequestHeadersToAdd) > 0 {\n\t\tfor iNdEx := len(m.RequestHeadersToAdd) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.RequestHeadersToAdd[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t}\n\tif len(m.Receive) > 0 {\n\t\tfor iNdEx := len(m.Receive) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Receive[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif m.Send != nil {\n\t\tsize, err := m.Send.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Path) > 0 {\n\t\ti -= len(m.Path)\n\t\tcopy(dAtA[i:], m.Path)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Path)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Host) > 0 {\n\t\ti -= len(m.Host)\n\t\tcopy(dAtA[i:], m.Host)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Host)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HealthCheck_TcpHealthCheck) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HealthCheck_TcpHealthCheck) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck_TcpHealthCheck) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.ProxyProtocolConfig != nil {\n\t\tsize, err := m.ProxyProtocolConfig.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Receive) > 0 {\n\t\tfor iNdEx := len(m.Receive) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Receive[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Send != nil {\n\t\tsize, err := m.Send.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HealthCheck_RedisHealthCheck) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HealthCheck_RedisHealthCheck) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck_RedisHealthCheck) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HealthCheck_GrpcHealthCheck) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HealthCheck_GrpcHealthCheck) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck_GrpcHealthCheck) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.InitialMetadata) > 0 {\n\t\tfor iNdEx := len(m.InitialMetadata) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.InitialMetadata[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.Authority) > 0 {\n\t\ti -= len(m.Authority)\n\t\tcopy(dAtA[i:], m.Authority)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Authority)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.ServiceName) > 0 {\n\t\ti -= len(m.ServiceName)\n\t\tcopy(dAtA[i:], m.ServiceName)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ServiceName)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HealthCheck_CustomHealthCheck) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HealthCheck_CustomHealthCheck) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck_CustomHealthCheck) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.ConfigType.(*HealthCheck_CustomHealthCheck_TypedConfig); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HealthCheck_CustomHealthCheck_TypedConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck_CustomHealthCheck_TypedConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.TypedConfig != nil {\n\t\tsize, err := (*anypb.Any)(m.TypedConfig).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HealthCheck_TlsOptions) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HealthCheck_TlsOptions) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck_TlsOptions) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.AlpnProtocols) > 0 {\n\t\tfor iNdEx := len(m.AlpnProtocols) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.AlpnProtocols[iNdEx])\n\t\t\tcopy(dAtA[i:], m.AlpnProtocols[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.AlpnProtocols[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HealthCheck) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HealthCheck) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.AlwaysLogHealthCheckSuccess {\n\t\ti--\n\t\tif m.AlwaysLogHealthCheckSuccess {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xd0\n\t}\n\tif len(m.EventLogger) > 0 {\n\t\tfor iNdEx := len(m.EventLogger) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.EventLogger[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1\n\t\t\ti--\n\t\t\tdAtA[i] = 0xca\n\t\t}\n\t}\n\tif m.NoTrafficHealthyInterval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.NoTrafficHealthyInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xc2\n\t}\n\tif m.TransportSocketMatchCriteria != nil {\n\t\tsize, err := (*structpb.Struct)(m.TransportSocketMatchCriteria).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xba\n\t}\n\tif m.EventService != nil {\n\t\tsize, err := m.EventService.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xb2\n\t}\n\tif m.TlsOptions != nil {\n\t\tsize, err := m.TlsOptions.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xaa\n\t}\n\tif m.InitialJitter != nil {\n\t\tsize, err := (*durationpb.Duration)(m.InitialJitter).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xa2\n\t}\n\tif m.AlwaysLogHealthCheckFailures {\n\t\ti--\n\t\tif m.AlwaysLogHealthCheckFailures {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x98\n\t}\n\tif m.IntervalJitterPercent != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.IntervalJitterPercent))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x90\n\t}\n\tif len(m.EventLogPath) > 0 {\n\t\ti -= len(m.EventLogPath)\n\t\tcopy(dAtA[i:], m.EventLogPath)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.EventLogPath)))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x8a\n\t}\n\tif m.HealthyEdgeInterval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.HealthyEdgeInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x82\n\t}\n\tif m.UnhealthyEdgeInterval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.UnhealthyEdgeInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x7a\n\t}\n\tif m.UnhealthyInterval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.UnhealthyInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x72\n\t}\n\tif msg, ok := m.HealthChecker.(*HealthCheck_CustomHealthCheck_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.NoTrafficInterval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.NoTrafficInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x62\n\t}\n\tif msg, ok := m.HealthChecker.(*HealthCheck_GrpcHealthCheck_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.HealthChecker.(*HealthCheck_TcpHealthCheck_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.HealthChecker.(*HealthCheck_HttpHealthCheck_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.ReuseConnection != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.ReuseConnection).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif m.AltPort != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.AltPort).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif m.HealthyThreshold != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.HealthyThreshold).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.UnhealthyThreshold != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.UnhealthyThreshold).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.IntervalJitter != nil {\n\t\tsize, err := (*durationpb.Duration)(m.IntervalJitter).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Interval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.Interval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Timeout != nil {\n\t\tsize, err := (*durationpb.Duration)(m.Timeout).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HealthCheck_HttpHealthCheck_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck_HttpHealthCheck_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.HttpHealthCheck != nil {\n\t\tsize, err := m.HttpHealthCheck.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HealthCheck_TcpHealthCheck_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck_TcpHealthCheck_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.TcpHealthCheck != nil {\n\t\tsize, err := m.TcpHealthCheck.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HealthCheck_GrpcHealthCheck_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck_GrpcHealthCheck_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.GrpcHealthCheck != nil {\n\t\tsize, err := m.GrpcHealthCheck.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HealthCheck_CustomHealthCheck_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HealthCheck_CustomHealthCheck_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.CustomHealthCheck != nil {\n\t\tsize, err := m.CustomHealthCheck.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x6a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x6a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HealthStatusSet) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Statuses) > 0 {\n\t\tl = 0\n\t\tfor _, e := range m.Statuses {\n\t\t\tl += protohelpers.SizeOfVarint(uint64(e))\n\t\t}\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(l)) + l\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HealthCheck_Payload) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Payload.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HealthCheck_Payload_Text) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Text)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *HealthCheck_Payload_Binary) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Binary)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *HealthCheck_HttpHealthCheck) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Host)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Path)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Send != nil {\n\t\tl = m.Send.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.Receive) > 0 {\n\t\tfor _, e := range m.Receive {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.RequestHeadersToAdd) > 0 {\n\t\tfor _, e := range m.RequestHeadersToAdd {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.RequestHeadersToRemove) > 0 {\n\t\tfor _, s := range m.RequestHeadersToRemove {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.ExpectedStatuses) > 0 {\n\t\tfor _, e := range m.ExpectedStatuses {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.CodecClientType != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.CodecClientType))\n\t}\n\tif m.ServiceNameMatcher != nil {\n\t\tif size, ok := interface{}(m.ServiceNameMatcher).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.ServiceNameMatcher)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.RetriableStatuses) > 0 {\n\t\tfor _, e := range m.RetriableStatuses {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.Method != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Method))\n\t}\n\tif m.ResponseBufferSize != nil {\n\t\tl = (*wrapperspb.UInt64Value)(m.ResponseBufferSize).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HealthCheck_TcpHealthCheck) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Send != nil {\n\t\tl = m.Send.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.Receive) > 0 {\n\t\tfor _, e := range m.Receive {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.ProxyProtocolConfig != nil {\n\t\tl = m.ProxyProtocolConfig.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HealthCheck_RedisHealthCheck) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HealthCheck_GrpcHealthCheck) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.ServiceName)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Authority)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.InitialMetadata) > 0 {\n\t\tfor _, e := range m.InitialMetadata {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HealthCheck_CustomHealthCheck) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.ConfigType.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HealthCheck_CustomHealthCheck_TypedConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.TypedConfig != nil {\n\t\tl = (*anypb.Any)(m.TypedConfig).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *HealthCheck_TlsOptions) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.AlpnProtocols) > 0 {\n\t\tfor _, s := range m.AlpnProtocols {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HealthCheck) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Timeout != nil {\n\t\tl = (*durationpb.Duration)(m.Timeout).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Interval != nil {\n\t\tl = (*durationpb.Duration)(m.Interval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.IntervalJitter != nil {\n\t\tl = (*durationpb.Duration)(m.IntervalJitter).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.UnhealthyThreshold != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.UnhealthyThreshold).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.HealthyThreshold != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.HealthyThreshold).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.AltPort != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.AltPort).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ReuseConnection != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.ReuseConnection).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.HealthChecker.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.NoTrafficInterval != nil {\n\t\tl = (*durationpb.Duration)(m.NoTrafficInterval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.UnhealthyInterval != nil {\n\t\tl = (*durationpb.Duration)(m.UnhealthyInterval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.UnhealthyEdgeInterval != nil {\n\t\tl = (*durationpb.Duration)(m.UnhealthyEdgeInterval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.HealthyEdgeInterval != nil {\n\t\tl = (*durationpb.Duration)(m.HealthyEdgeInterval).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.EventLogPath)\n\tif l > 0 {\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.IntervalJitterPercent != 0 {\n\t\tn += 2 + protohelpers.SizeOfVarint(uint64(m.IntervalJitterPercent))\n\t}\n\tif m.AlwaysLogHealthCheckFailures {\n\t\tn += 3\n\t}\n\tif m.InitialJitter != nil {\n\t\tl = (*durationpb.Duration)(m.InitialJitter).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.TlsOptions != nil {\n\t\tl = m.TlsOptions.SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.EventService != nil {\n\t\tl = m.EventService.SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.TransportSocketMatchCriteria != nil {\n\t\tl = (*structpb.Struct)(m.TransportSocketMatchCriteria).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.NoTrafficHealthyInterval != nil {\n\t\tl = (*durationpb.Duration)(m.NoTrafficHealthyInterval).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.EventLogger) > 0 {\n\t\tfor _, e := range m.EventLogger {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.AlwaysLogHealthCheckSuccess {\n\t\tn += 3\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HealthCheck_HttpHealthCheck_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.HttpHealthCheck != nil {\n\t\tl = m.HttpHealthCheck.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *HealthCheck_TcpHealthCheck_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.TcpHealthCheck != nil {\n\t\tl = m.TcpHealthCheck.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *HealthCheck_GrpcHealthCheck_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.GrpcHealthCheck != nil {\n\t\tl = m.GrpcHealthCheck.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *HealthCheck_CustomHealthCheck_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.CustomHealthCheck != nil {\n\t\tl = m.CustomHealthCheck.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/http_service.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/http_service.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// HTTP service configuration.\ntype HttpService struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The service's HTTP URI. For example:\n\t//\n\t// .. code-block:: yaml\n\t//\n\t//\thttp_uri:\n\t//\t  uri: https://www.myserviceapi.com/v1/data\n\t//\t  cluster: www.myserviceapi.com|443\n\tHttpUri *HttpUri `protobuf:\"bytes,1,opt,name=http_uri,json=httpUri,proto3\" json:\"http_uri,omitempty\"`\n\t// Specifies a list of HTTP headers that should be added to each request\n\t// handled by this virtual host.\n\tRequestHeadersToAdd []*HeaderValueOption `protobuf:\"bytes,2,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3\" json:\"request_headers_to_add,omitempty\"`\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\nfunc (x *HttpService) Reset() {\n\t*x = HttpService{}\n\tmi := &file_envoy_config_core_v3_http_service_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpService) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpService) ProtoMessage() {}\n\nfunc (x *HttpService) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_http_service_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpService.ProtoReflect.Descriptor instead.\nfunc (*HttpService) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_http_service_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *HttpService) GetHttpUri() *HttpUri {\n\tif x != nil {\n\t\treturn x.HttpUri\n\t}\n\treturn nil\n}\n\nfunc (x *HttpService) GetRequestHeadersToAdd() []*HeaderValueOption {\n\tif x != nil {\n\t\treturn x.RequestHeadersToAdd\n\t}\n\treturn nil\n}\n\nvar File_envoy_config_core_v3_http_service_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_http_service_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"'envoy/config/core/v3/http_service.proto\\x12\\x14envoy.config.core.v3\\x1a\\x1fenvoy/config/core/v3/base.proto\\x1a#envoy/config/core/v3/http_uri.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a\\x17validate/validate.proto\\\"\\xb0\\x01\\n\" +\n\t\"\\vHttpService\\x128\\n\" +\n\t\"\\bhttp_uri\\x18\\x01 \\x01(\\v2\\x1d.envoy.config.core.v3.HttpUriR\\ahttpUri\\x12g\\n\" +\n\t\"\\x16request_headers_to_add\\x18\\x02 \\x03(\\v2'.envoy.config.core.v3.HeaderValueOptionB\\t\\xfaB\\x06\\x92\\x01\\x03\\x10\\xe8\\aR\\x13requestHeadersToAddB\\x84\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\x10HttpServiceProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_http_service_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_http_service_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_http_service_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_http_service_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_http_service_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_http_service_proto_rawDesc), len(file_envoy_config_core_v3_http_service_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_http_service_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_http_service_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_config_core_v3_http_service_proto_goTypes = []any{\n\t(*HttpService)(nil),       // 0: envoy.config.core.v3.HttpService\n\t(*HttpUri)(nil),           // 1: envoy.config.core.v3.HttpUri\n\t(*HeaderValueOption)(nil), // 2: envoy.config.core.v3.HeaderValueOption\n}\nvar file_envoy_config_core_v3_http_service_proto_depIdxs = []int32{\n\t1, // 0: envoy.config.core.v3.HttpService.http_uri:type_name -> envoy.config.core.v3.HttpUri\n\t2, // 1: envoy.config.core.v3.HttpService.request_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_http_service_proto_init() }\nfunc file_envoy_config_core_v3_http_service_proto_init() {\n\tif File_envoy_config_core_v3_http_service_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_core_v3_base_proto_init()\n\tfile_envoy_config_core_v3_http_uri_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_http_service_proto_rawDesc), len(file_envoy_config_core_v3_http_service_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_http_service_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_http_service_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_core_v3_http_service_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_http_service_proto = out.File\n\tfile_envoy_config_core_v3_http_service_proto_goTypes = nil\n\tfile_envoy_config_core_v3_http_service_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/http_service.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/http_service.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on HttpService with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *HttpService) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpService with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in HttpServiceMultiError, or\n// nil if none found.\nfunc (m *HttpService) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpService) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetHttpUri()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HttpServiceValidationError{\n\t\t\t\t\tfield:  \"HttpUri\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HttpServiceValidationError{\n\t\t\t\t\tfield:  \"HttpUri\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetHttpUri()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HttpServiceValidationError{\n\t\t\t\tfield:  \"HttpUri\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(m.GetRequestHeadersToAdd()) > 1000 {\n\t\terr := HttpServiceValidationError{\n\t\t\tfield:  \"RequestHeadersToAdd\",\n\t\t\treason: \"value must contain no more than 1000 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetRequestHeadersToAdd() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HttpServiceValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HttpServiceValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HttpServiceValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HttpServiceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpServiceMultiError is an error wrapping multiple validation errors\n// returned by HttpService.ValidateAll() if the designated constraints aren't met.\ntype HttpServiceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpServiceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpServiceMultiError) AllErrors() []error { return m }\n\n// HttpServiceValidationError is the validation error returned by\n// HttpService.Validate if the designated constraints aren't met.\ntype HttpServiceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpServiceValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpServiceValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpServiceValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpServiceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpServiceValidationError) ErrorName() string { return \"HttpServiceValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e HttpServiceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpService.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpServiceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpServiceValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/http_service_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/http_service.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *HttpService) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HttpService) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HttpService) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.RequestHeadersToAdd) > 0 {\n\t\tfor iNdEx := len(m.RequestHeadersToAdd) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.RequestHeadersToAdd[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.HttpUri != nil {\n\t\tsize, err := m.HttpUri.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HttpService) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.HttpUri != nil {\n\t\tl = m.HttpUri.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.RequestHeadersToAdd) > 0 {\n\t\tfor _, e := range m.RequestHeadersToAdd {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/http_uri.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/http_uri.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Envoy external URI descriptor\ntype HttpUri struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The HTTP server URI. It should be a full FQDN with protocol, host and path.\n\t//\n\t// Example:\n\t//\n\t// .. code-block:: yaml\n\t//\n\t//\turi: https://www.googleapis.com/oauth2/v1/certs\n\tUri string `protobuf:\"bytes,1,opt,name=uri,proto3\" json:\"uri,omitempty\"`\n\t// Specify how “uri“ is to be fetched. Today, this requires an explicit\n\t// cluster, but in the future we may support dynamic cluster creation or\n\t// inline DNS resolution. See `issue\n\t// <https://github.com/envoyproxy/envoy/issues/1606>`_.\n\t//\n\t// Types that are valid to be assigned to HttpUpstreamType:\n\t//\n\t//\t*HttpUri_Cluster\n\tHttpUpstreamType isHttpUri_HttpUpstreamType `protobuf_oneof:\"http_upstream_type\"`\n\t// Sets the maximum duration in milliseconds that a response can take to arrive upon request.\n\tTimeout       *durationpb.Duration `protobuf:\"bytes,3,opt,name=timeout,proto3\" json:\"timeout,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HttpUri) Reset() {\n\t*x = HttpUri{}\n\tmi := &file_envoy_config_core_v3_http_uri_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpUri) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpUri) ProtoMessage() {}\n\nfunc (x *HttpUri) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_http_uri_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpUri.ProtoReflect.Descriptor instead.\nfunc (*HttpUri) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_http_uri_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *HttpUri) GetUri() string {\n\tif x != nil {\n\t\treturn x.Uri\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpUri) GetHttpUpstreamType() isHttpUri_HttpUpstreamType {\n\tif x != nil {\n\t\treturn x.HttpUpstreamType\n\t}\n\treturn nil\n}\n\nfunc (x *HttpUri) GetCluster() string {\n\tif x != nil {\n\t\tif x, ok := x.HttpUpstreamType.(*HttpUri_Cluster); ok {\n\t\t\treturn x.Cluster\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpUri) GetTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Timeout\n\t}\n\treturn nil\n}\n\ntype isHttpUri_HttpUpstreamType interface {\n\tisHttpUri_HttpUpstreamType()\n}\n\ntype HttpUri_Cluster struct {\n\t// A cluster is created in the Envoy \"cluster_manager\" config\n\t// section. This field specifies the cluster name.\n\t//\n\t// Example:\n\t//\n\t// .. code-block:: yaml\n\t//\n\t//\tcluster: jwks_cluster\n\tCluster string `protobuf:\"bytes,2,opt,name=cluster,proto3,oneof\"`\n}\n\nfunc (*HttpUri_Cluster) isHttpUri_HttpUpstreamType() {}\n\nvar File_envoy_config_core_v3_http_uri_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_http_uri_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"#envoy/config/core/v3/http_uri.proto\\x12\\x14envoy.config.core.v3\\x1a\\x1egoogle/protobuf/duration.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xcf\\x01\\n\" +\n\t\"\\aHttpUri\\x12\\x19\\n\" +\n\t\"\\x03uri\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x03uri\\x12#\\n\" +\n\t\"\\acluster\\x18\\x02 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01H\\x00R\\acluster\\x12G\\n\" +\n\t\"\\atimeout\\x18\\x03 \\x01(\\v2\\x19.google.protobuf.DurationB\\x12\\xfaB\\x0f\\xaa\\x01\\f\\b\\x01\\x1a\\x06\\b\\x80\\x80\\x80\\x80\\x102\\x00R\\atimeout: \\x9aň\\x1e\\x1b\\n\" +\n\t\"\\x19envoy.api.v2.core.HttpUriB\\x19\\n\" +\n\t\"\\x12http_upstream_type\\x12\\x03\\xf8B\\x01B\\x80\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\fHttpUriProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_http_uri_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_http_uri_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_http_uri_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_http_uri_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_http_uri_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_http_uri_proto_rawDesc), len(file_envoy_config_core_v3_http_uri_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_http_uri_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_http_uri_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_config_core_v3_http_uri_proto_goTypes = []any{\n\t(*HttpUri)(nil),             // 0: envoy.config.core.v3.HttpUri\n\t(*durationpb.Duration)(nil), // 1: google.protobuf.Duration\n}\nvar file_envoy_config_core_v3_http_uri_proto_depIdxs = []int32{\n\t1, // 0: envoy.config.core.v3.HttpUri.timeout:type_name -> google.protobuf.Duration\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_http_uri_proto_init() }\nfunc file_envoy_config_core_v3_http_uri_proto_init() {\n\tif File_envoy_config_core_v3_http_uri_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_core_v3_http_uri_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*HttpUri_Cluster)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_http_uri_proto_rawDesc), len(file_envoy_config_core_v3_http_uri_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_http_uri_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_http_uri_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_core_v3_http_uri_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_http_uri_proto = out.File\n\tfile_envoy_config_core_v3_http_uri_proto_goTypes = nil\n\tfile_envoy_config_core_v3_http_uri_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/http_uri.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/http_uri.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on HttpUri with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *HttpUri) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpUri with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in HttpUriMultiError, or nil if none found.\nfunc (m *HttpUri) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpUri) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetUri()) < 1 {\n\t\terr := HttpUriValidationError{\n\t\t\tfield:  \"Uri\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif m.GetTimeout() == nil {\n\t\terr := HttpUriValidationError{\n\t\t\tfield:  \"Timeout\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif d := m.GetTimeout(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = HttpUriValidationError{\n\t\t\t\tfield:  \"Timeout\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tlt := time.Duration(4294967296*time.Second + 0*time.Nanosecond)\n\t\t\tgte := time.Duration(0*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur < gte || dur >= lt {\n\t\t\t\terr := HttpUriValidationError{\n\t\t\t\t\tfield:  \"Timeout\",\n\t\t\t\t\treason: \"value must be inside range [0s, 1193046h28m16s)\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\toneofHttpUpstreamTypePresent := false\n\tswitch v := m.HttpUpstreamType.(type) {\n\tcase *HttpUri_Cluster:\n\t\tif v == nil {\n\t\t\terr := HttpUriValidationError{\n\t\t\t\tfield:  \"HttpUpstreamType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofHttpUpstreamTypePresent = true\n\n\t\tif utf8.RuneCountInString(m.GetCluster()) < 1 {\n\t\t\terr := HttpUriValidationError{\n\t\t\t\tfield:  \"Cluster\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofHttpUpstreamTypePresent {\n\t\terr := HttpUriValidationError{\n\t\t\tfield:  \"HttpUpstreamType\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HttpUriMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpUriMultiError is an error wrapping multiple validation errors returned\n// by HttpUri.ValidateAll() if the designated constraints aren't met.\ntype HttpUriMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpUriMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpUriMultiError) AllErrors() []error { return m }\n\n// HttpUriValidationError is the validation error returned by HttpUri.Validate\n// if the designated constraints aren't met.\ntype HttpUriValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpUriValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpUriValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpUriValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpUriValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpUriValidationError) ErrorName() string { return \"HttpUriValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e HttpUriValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpUri.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpUriValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpUriValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/http_uri_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/http_uri.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tdurationpb \"github.com/planetscale/vtprotobuf/types/known/durationpb\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *HttpUri) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HttpUri) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HttpUri) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Timeout != nil {\n\t\tsize, err := (*durationpb.Duration)(m.Timeout).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif msg, ok := m.HttpUpstreamType.(*HttpUri_Cluster); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Uri) > 0 {\n\t\ti -= len(m.Uri)\n\t\tcopy(dAtA[i:], m.Uri)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Uri)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HttpUri_Cluster) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HttpUri_Cluster) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Cluster)\n\tcopy(dAtA[i:], m.Cluster)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Cluster)))\n\ti--\n\tdAtA[i] = 0x12\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HttpUri) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Uri)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.HttpUpstreamType.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.Timeout != nil {\n\t\tl = (*durationpb.Duration)(m.Timeout).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HttpUri_Cluster) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Cluster)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/protocol.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/protocol.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/cncf/xds/go/xds/annotations/v3\"\n\t_ \"github.com/envoyproxy/go-control-plane/envoy/annotations\"\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3\"\n\tv31 \"github.com/envoyproxy/go-control-plane/envoy/type/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Action to take when Envoy receives client request with header names containing underscore\n// characters.\n// Underscore character is allowed in header names by the RFC-7230 and this behavior is implemented\n// as a security measure due to systems that treat '_' and '-' as interchangeable. Envoy by default allows client request headers with underscore\n// characters.\ntype HttpProtocolOptions_HeadersWithUnderscoresAction int32\n\nconst (\n\t// Allow headers with underscores. This is the default behavior.\n\tHttpProtocolOptions_ALLOW HttpProtocolOptions_HeadersWithUnderscoresAction = 0\n\t// Reject client request. HTTP/1 requests are rejected with “HTTP 400“ status. HTTP/2 requests\n\t// end with the stream reset. The “httpN.requests_rejected_with_underscores_in_headers“ counter\n\t// is incremented for each rejected request.\n\tHttpProtocolOptions_REJECT_REQUEST HttpProtocolOptions_HeadersWithUnderscoresAction = 1\n\t// Drop the client header with name containing underscores. The header is dropped before the filter chain is\n\t// invoked and as such filters will not see dropped headers. The\n\t// “httpN.dropped_headers_with_underscores“ is incremented for each dropped header.\n\tHttpProtocolOptions_DROP_HEADER HttpProtocolOptions_HeadersWithUnderscoresAction = 2\n)\n\n// Enum value maps for HttpProtocolOptions_HeadersWithUnderscoresAction.\nvar (\n\tHttpProtocolOptions_HeadersWithUnderscoresAction_name = map[int32]string{\n\t\t0: \"ALLOW\",\n\t\t1: \"REJECT_REQUEST\",\n\t\t2: \"DROP_HEADER\",\n\t}\n\tHttpProtocolOptions_HeadersWithUnderscoresAction_value = map[string]int32{\n\t\t\"ALLOW\":          0,\n\t\t\"REJECT_REQUEST\": 1,\n\t\t\"DROP_HEADER\":    2,\n\t}\n)\n\nfunc (x HttpProtocolOptions_HeadersWithUnderscoresAction) Enum() *HttpProtocolOptions_HeadersWithUnderscoresAction {\n\tp := new(HttpProtocolOptions_HeadersWithUnderscoresAction)\n\t*p = x\n\treturn p\n}\n\nfunc (x HttpProtocolOptions_HeadersWithUnderscoresAction) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (HttpProtocolOptions_HeadersWithUnderscoresAction) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_core_v3_protocol_proto_enumTypes[0].Descriptor()\n}\n\nfunc (HttpProtocolOptions_HeadersWithUnderscoresAction) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_core_v3_protocol_proto_enumTypes[0]\n}\n\nfunc (x HttpProtocolOptions_HeadersWithUnderscoresAction) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use HttpProtocolOptions_HeadersWithUnderscoresAction.Descriptor instead.\nfunc (HttpProtocolOptions_HeadersWithUnderscoresAction) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{5, 0}\n}\n\n// [#not-implemented-hide:]\ntype TcpProtocolOptions struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *TcpProtocolOptions) Reset() {\n\t*x = TcpProtocolOptions{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *TcpProtocolOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*TcpProtocolOptions) ProtoMessage() {}\n\nfunc (x *TcpProtocolOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use TcpProtocolOptions.ProtoReflect.Descriptor instead.\nfunc (*TcpProtocolOptions) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{0}\n}\n\n// Config for keepalive probes in a QUIC connection.\n//\n// .. note::\n//\n//\tQUIC keep-alive probing packets work differently from HTTP/2 keep-alive PINGs in a sense that the probing packet\n//\titself doesn't timeout waiting for a probing response. QUIC has a shorter idle timeout than TCP, so it doesn't rely on such probing to discover dead connections. If the peer fails to respond, the connection will idle timeout eventually. Thus, they are configured differently from :ref:`connection_keepalive <envoy_v3_api_field_config.core.v3.Http2ProtocolOptions.connection_keepalive>`.\ntype QuicKeepAliveSettings struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The max interval for a connection to send keep-alive probing packets (with “PING“ or “PATH_RESPONSE“). The value should be smaller than :ref:`connection idle_timeout <envoy_v3_api_field_config.listener.v3.QuicProtocolOptions.idle_timeout>` to prevent idle timeout while not less than “1s“ to avoid throttling the connection or flooding the peer with probes.\n\t//\n\t// If :ref:`initial_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.initial_interval>` is absent or zero, a client connection will use this value to start probing.\n\t//\n\t// If zero, disable keepalive probing.\n\t// If absent, use the QUICHE default interval to probe.\n\tMaxInterval *durationpb.Duration `protobuf:\"bytes,1,opt,name=max_interval,json=maxInterval,proto3\" json:\"max_interval,omitempty\"`\n\t// The interval to send the first few keep-alive probing packets to prevent connection from hitting the idle timeout. Subsequent probes will be sent, each one with an interval exponentially longer than previous one, till it reaches :ref:`max_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.max_interval>`. And the probes afterwards will always use :ref:`max_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.max_interval>`.\n\t//\n\t// The value should be smaller than :ref:`connection idle_timeout <envoy_v3_api_field_config.listener.v3.QuicProtocolOptions.idle_timeout>` to prevent idle timeout and smaller than max_interval to take effect.\n\t//\n\t// If absent, disable keepalive probing for a server connection. For a client connection, if :ref:`max_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.max_interval>` is zero, do not keepalive, otherwise use max_interval or QUICHE default to probe all the time.\n\tInitialInterval *durationpb.Duration `protobuf:\"bytes,2,opt,name=initial_interval,json=initialInterval,proto3\" json:\"initial_interval,omitempty\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *QuicKeepAliveSettings) Reset() {\n\t*x = QuicKeepAliveSettings{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *QuicKeepAliveSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QuicKeepAliveSettings) ProtoMessage() {}\n\nfunc (x *QuicKeepAliveSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use QuicKeepAliveSettings.ProtoReflect.Descriptor instead.\nfunc (*QuicKeepAliveSettings) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *QuicKeepAliveSettings) GetMaxInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.MaxInterval\n\t}\n\treturn nil\n}\n\nfunc (x *QuicKeepAliveSettings) GetInitialInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.InitialInterval\n\t}\n\treturn nil\n}\n\n// QUIC protocol options which apply to both downstream and upstream connections.\n// [#next-free-field: 12]\ntype QuicProtocolOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Maximum number of streams that the client can negotiate per connection. “100“\n\t// if not specified.\n\tMaxConcurrentStreams *wrapperspb.UInt32Value `protobuf:\"bytes,1,opt,name=max_concurrent_streams,json=maxConcurrentStreams,proto3\" json:\"max_concurrent_streams,omitempty\"`\n\t// `Initial stream-level flow-control receive window\n\t// <https://tools.ietf.org/html/draft-ietf-quic-transport-34#section-4.1>`_ size. Valid values range from\n\t// “1“ to “16777216“ (“2^24“, maximum supported by QUICHE) and defaults to “16777216“ (“16 * 1024 * 1024“).\n\t//\n\t// .. note::\n\t//\n\t//\t``16384`` (``2^14``) is the minimum window size supported in Google QUIC. If configured smaller than it, we will use\n\t//\t``16384`` instead. QUICHE IETF QUIC implementation supports ``1`` byte window. We only support increasing the default\n\t//\twindow size now, so it's also the minimum.\n\t//\n\t// This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the\n\t// QUIC stream send and receive buffers. Once the buffer reaches this pointer, watermark callbacks will fire to\n\t// stop the flow of data to the stream buffers.\n\tInitialStreamWindowSize *wrapperspb.UInt32Value `protobuf:\"bytes,2,opt,name=initial_stream_window_size,json=initialStreamWindowSize,proto3\" json:\"initial_stream_window_size,omitempty\"`\n\t// Similar to “initial_stream_window_size“, but for connection-level\n\t// flow-control. Valid values range from “1“ to “25165824“ (“24MB“, maximum supported by QUICHE) and defaults\n\t// to “25165824“ (“24 * 1024 * 1024“).\n\t//\n\t// .. note::\n\t//\n\t//\t``16384`` (``2^14``) is the minimum window size supported in Google QUIC. We only support increasing the default\n\t//\twindow size now, so it's also the minimum.\n\tInitialConnectionWindowSize *wrapperspb.UInt32Value `protobuf:\"bytes,3,opt,name=initial_connection_window_size,json=initialConnectionWindowSize,proto3\" json:\"initial_connection_window_size,omitempty\"`\n\t// The number of timeouts that can occur before port migration is triggered for QUIC clients.\n\t// This defaults to “4“. If set to “0“, port migration will not occur on path degrading.\n\t// Timeout here refers to QUIC internal path degrading timeout mechanism, such as “PTO“.\n\t// This has no effect on server sessions.\n\tNumTimeoutsToTriggerPortMigration *wrapperspb.UInt32Value `protobuf:\"bytes,4,opt,name=num_timeouts_to_trigger_port_migration,json=numTimeoutsToTriggerPortMigration,proto3\" json:\"num_timeouts_to_trigger_port_migration,omitempty\"`\n\t// Probes the peer at the configured interval to solicit traffic, i.e. “ACK“ or “PATH_RESPONSE“, from the peer to push back connection idle timeout.\n\t// If absent, use the default keepalive behavior of which a client connection sends “PING“s every “15s“, and a server connection doesn't do anything.\n\tConnectionKeepalive *QuicKeepAliveSettings `protobuf:\"bytes,5,opt,name=connection_keepalive,json=connectionKeepalive,proto3\" json:\"connection_keepalive,omitempty\"`\n\t// A comma-separated list of strings representing QUIC connection options defined in\n\t// `QUICHE <https://github.com/google/quiche/blob/main/quiche/quic/core/crypto/crypto_protocol.h>`_ and to be sent by upstream connections.\n\tConnectionOptions string `protobuf:\"bytes,6,opt,name=connection_options,json=connectionOptions,proto3\" json:\"connection_options,omitempty\"`\n\t// A comma-separated list of strings representing QUIC client connection options defined in\n\t// `QUICHE <https://github.com/google/quiche/blob/main/quiche/quic/core/crypto/crypto_protocol.h>`_ and to be sent by upstream connections.\n\tClientConnectionOptions string `protobuf:\"bytes,7,opt,name=client_connection_options,json=clientConnectionOptions,proto3\" json:\"client_connection_options,omitempty\"`\n\t// The duration that a QUIC connection stays idle before it closes itself. If this field is not present, QUICHE\n\t// default “600s“ will be applied.\n\t// For internal corporate network, a long timeout is often fine.\n\t// But for client facing network, “30s“ is usually a good choice.\n\t// Do not add an upper bound here. A long idle timeout is useful for maintaining warm connections at non-front-line proxy for low QPS services.\n\tIdleNetworkTimeout *durationpb.Duration `protobuf:\"bytes,8,opt,name=idle_network_timeout,json=idleNetworkTimeout,proto3\" json:\"idle_network_timeout,omitempty\"`\n\t// Maximum packet length for QUIC connections. It refers to the largest size of a QUIC packet that can be transmitted over the connection.\n\t// If not specified, one of the `default values in QUICHE <https://github.com/google/quiche/blob/main/quiche/quic/core/quic_constants.h>`_ is used.\n\tMaxPacketLength *wrapperspb.UInt64Value `protobuf:\"bytes,9,opt,name=max_packet_length,json=maxPacketLength,proto3\" json:\"max_packet_length,omitempty\"`\n\t// A customized UDP socket and a QUIC packet writer using the socket for\n\t// client connections. i.e. Mobile uses its own implementation to interact\n\t// with platform socket APIs.\n\t// If not present, the default platform-independent socket and writer will be used.\n\t// [#extension-category: envoy.quic.client_packet_writer]\n\tClientPacketWriter *TypedExtensionConfig `protobuf:\"bytes,10,opt,name=client_packet_writer,json=clientPacketWriter,proto3\" json:\"client_packet_writer,omitempty\"`\n\t// Enable QUIC `connection migration\n\t// <https://datatracker.ietf.org/doc/html/rfc9000#name-connection-migration>`\n\t// to a different network interface when the current network is degrading or\n\t// has become bad.\n\t// In order to use a different network interface other than the platform's default one,\n\t// a customized :ref:`client_packet_writer <envoy_v3_api_field_config.core.v3.QuicProtocolOptions.client_packet_writer>` needs to be configured to\n\t// create UDP sockets on non-default networks.\n\t// Only takes effect when runtime key “envoy.reloadable_features.use_migration_in_quiche“ is true.\n\t// If absent, the feature will be disabled.\n\t// [#not-implemented-hide:]\n\tConnectionMigration *QuicProtocolOptions_ConnectionMigrationSettings `protobuf:\"bytes,11,opt,name=connection_migration,json=connectionMigration,proto3\" json:\"connection_migration,omitempty\"`\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\nfunc (x *QuicProtocolOptions) Reset() {\n\t*x = QuicProtocolOptions{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *QuicProtocolOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QuicProtocolOptions) ProtoMessage() {}\n\nfunc (x *QuicProtocolOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use QuicProtocolOptions.ProtoReflect.Descriptor instead.\nfunc (*QuicProtocolOptions) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *QuicProtocolOptions) GetMaxConcurrentStreams() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxConcurrentStreams\n\t}\n\treturn nil\n}\n\nfunc (x *QuicProtocolOptions) GetInitialStreamWindowSize() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.InitialStreamWindowSize\n\t}\n\treturn nil\n}\n\nfunc (x *QuicProtocolOptions) GetInitialConnectionWindowSize() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.InitialConnectionWindowSize\n\t}\n\treturn nil\n}\n\nfunc (x *QuicProtocolOptions) GetNumTimeoutsToTriggerPortMigration() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.NumTimeoutsToTriggerPortMigration\n\t}\n\treturn nil\n}\n\nfunc (x *QuicProtocolOptions) GetConnectionKeepalive() *QuicKeepAliveSettings {\n\tif x != nil {\n\t\treturn x.ConnectionKeepalive\n\t}\n\treturn nil\n}\n\nfunc (x *QuicProtocolOptions) GetConnectionOptions() string {\n\tif x != nil {\n\t\treturn x.ConnectionOptions\n\t}\n\treturn \"\"\n}\n\nfunc (x *QuicProtocolOptions) GetClientConnectionOptions() string {\n\tif x != nil {\n\t\treturn x.ClientConnectionOptions\n\t}\n\treturn \"\"\n}\n\nfunc (x *QuicProtocolOptions) GetIdleNetworkTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.IdleNetworkTimeout\n\t}\n\treturn nil\n}\n\nfunc (x *QuicProtocolOptions) GetMaxPacketLength() *wrapperspb.UInt64Value {\n\tif x != nil {\n\t\treturn x.MaxPacketLength\n\t}\n\treturn nil\n}\n\nfunc (x *QuicProtocolOptions) GetClientPacketWriter() *TypedExtensionConfig {\n\tif x != nil {\n\t\treturn x.ClientPacketWriter\n\t}\n\treturn nil\n}\n\nfunc (x *QuicProtocolOptions) GetConnectionMigration() *QuicProtocolOptions_ConnectionMigrationSettings {\n\tif x != nil {\n\t\treturn x.ConnectionMigration\n\t}\n\treturn nil\n}\n\ntype UpstreamHttpProtocolOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Set transport socket `SNI <https://en.wikipedia.org/wiki/Server_Name_Indication>`_ for new\n\t// upstream connections based on the downstream HTTP host/authority header or any other arbitrary\n\t// header when :ref:`override_auto_sni_header <envoy_v3_api_field_config.core.v3.UpstreamHttpProtocolOptions.override_auto_sni_header>`\n\t// is set, as seen by the :ref:`router filter <config_http_filters_router>`.\n\t// Does nothing if a filter before the http router filter sets the corresponding metadata.\n\t//\n\t// See :ref:`SNI configuration <start_quick_start_securing_sni_client>` for details on how this\n\t// interacts with other validation options.\n\tAutoSni bool `protobuf:\"varint,1,opt,name=auto_sni,json=autoSni,proto3\" json:\"auto_sni,omitempty\"`\n\t// Automatic validate upstream presented certificate for new upstream connections based on the\n\t// downstream HTTP host/authority header or any other arbitrary header when :ref:`override_auto_sni_header <envoy_v3_api_field_config.core.v3.UpstreamHttpProtocolOptions.override_auto_sni_header>`\n\t// is set, as seen by the :ref:`router filter <config_http_filters_router>`.\n\t// This field is intended to be set with “auto_sni“ field.\n\t// Does nothing if a filter before the http router filter sets the corresponding metadata.\n\t//\n\t// See :ref:`validation configuration <start_quick_start_securing_validation>` for how this interacts with\n\t// other validation options.\n\tAutoSanValidation bool `protobuf:\"varint,2,opt,name=auto_san_validation,json=autoSanValidation,proto3\" json:\"auto_san_validation,omitempty\"`\n\t// An optional alternative to the host/authority header to be used for setting the SNI value.\n\t// It should be a valid downstream HTTP header, as seen by the\n\t// :ref:`router filter <config_http_filters_router>`.\n\t// If unset, host/authority header will be used for populating the SNI. If the specified header\n\t// is not found or the value is empty, host/authority header will be used instead.\n\t// This field is intended to be set with “auto_sni“ and/or “auto_san_validation“ fields.\n\t// If none of these fields are set then setting this would be a no-op.\n\t// Does nothing if a filter before the http router filter sets the corresponding metadata.\n\tOverrideAutoSniHeader string `protobuf:\"bytes,3,opt,name=override_auto_sni_header,json=overrideAutoSniHeader,proto3\" json:\"override_auto_sni_header,omitempty\"`\n\tunknownFields         protoimpl.UnknownFields\n\tsizeCache             protoimpl.SizeCache\n}\n\nfunc (x *UpstreamHttpProtocolOptions) Reset() {\n\t*x = UpstreamHttpProtocolOptions{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *UpstreamHttpProtocolOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UpstreamHttpProtocolOptions) ProtoMessage() {}\n\nfunc (x *UpstreamHttpProtocolOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UpstreamHttpProtocolOptions.ProtoReflect.Descriptor instead.\nfunc (*UpstreamHttpProtocolOptions) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *UpstreamHttpProtocolOptions) GetAutoSni() bool {\n\tif x != nil {\n\t\treturn x.AutoSni\n\t}\n\treturn false\n}\n\nfunc (x *UpstreamHttpProtocolOptions) GetAutoSanValidation() bool {\n\tif x != nil {\n\t\treturn x.AutoSanValidation\n\t}\n\treturn false\n}\n\nfunc (x *UpstreamHttpProtocolOptions) GetOverrideAutoSniHeader() string {\n\tif x != nil {\n\t\treturn x.OverrideAutoSniHeader\n\t}\n\treturn \"\"\n}\n\n// Configures the alternate protocols cache which tracks alternate protocols that can be used to\n// make an HTTP connection to an origin server. See https://tools.ietf.org/html/rfc7838 for\n// HTTP Alternative Services and https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-04\n// for the \"HTTPS\" DNS resource record.\n// [#next-free-field: 6]\ntype AlternateProtocolsCacheOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the cache. Multiple named caches allow independent alternate protocols cache\n\t// configurations to operate within a single Envoy process using different configurations. All\n\t// alternate protocols cache options with the same name *must* be equal in all fields when\n\t// referenced from different configuration components. Configuration will fail to load if this is\n\t// not the case.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// The maximum number of entries that the cache will hold. If not specified defaults to “1024“.\n\t//\n\t// .. note::\n\t//\n\t//\tThe implementation is approximate and enforced independently on each worker thread, thus\n\t//\tit is possible for the maximum entries in the cache to go slightly above the configured\n\t//\tvalue depending on timing. This is similar to how other circuit breakers work.\n\tMaxEntries *wrapperspb.UInt32Value `protobuf:\"bytes,2,opt,name=max_entries,json=maxEntries,proto3\" json:\"max_entries,omitempty\"`\n\t// Allows configuring a persistent\n\t// :ref:`key value store <envoy_v3_api_msg_config.common.key_value.v3.KeyValueStoreConfig>` to flush\n\t// alternate protocols entries to disk.\n\t// This function is currently only supported if concurrency is 1\n\t// Cached entries will take precedence over pre-populated entries below.\n\tKeyValueStoreConfig *TypedExtensionConfig `protobuf:\"bytes,3,opt,name=key_value_store_config,json=keyValueStoreConfig,proto3\" json:\"key_value_store_config,omitempty\"`\n\t// Allows pre-populating the cache with entries, as described above.\n\tPrepopulatedEntries []*AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry `protobuf:\"bytes,4,rep,name=prepopulated_entries,json=prepopulatedEntries,proto3\" json:\"prepopulated_entries,omitempty\"`\n\t// Optional list of hostnames suffixes for which Alt-Svc entries can be shared. For example, if\n\t// this list contained the value “.c.example.com“, then an Alt-Svc entry for “foo.c.example.com“\n\t// could be shared with “bar.c.example.com“ but would not be shared with “baz.example.com“. On\n\t// the other hand, if the list contained the value “.example.com“ then all three hosts could share\n\t// Alt-Svc entries. Each entry must start with “.“. If a hostname matches multiple suffixes, the\n\t// first listed suffix will be used.\n\t//\n\t// Since lookup in this list is O(n), it is recommended that the number of suffixes be limited.\n\t// [#not-implemented-hide:]\n\tCanonicalSuffixes []string `protobuf:\"bytes,5,rep,name=canonical_suffixes,json=canonicalSuffixes,proto3\" json:\"canonical_suffixes,omitempty\"`\n\tunknownFields     protoimpl.UnknownFields\n\tsizeCache         protoimpl.SizeCache\n}\n\nfunc (x *AlternateProtocolsCacheOptions) Reset() {\n\t*x = AlternateProtocolsCacheOptions{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *AlternateProtocolsCacheOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AlternateProtocolsCacheOptions) ProtoMessage() {}\n\nfunc (x *AlternateProtocolsCacheOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use AlternateProtocolsCacheOptions.ProtoReflect.Descriptor instead.\nfunc (*AlternateProtocolsCacheOptions) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *AlternateProtocolsCacheOptions) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *AlternateProtocolsCacheOptions) GetMaxEntries() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxEntries\n\t}\n\treturn nil\n}\n\nfunc (x *AlternateProtocolsCacheOptions) GetKeyValueStoreConfig() *TypedExtensionConfig {\n\tif x != nil {\n\t\treturn x.KeyValueStoreConfig\n\t}\n\treturn nil\n}\n\nfunc (x *AlternateProtocolsCacheOptions) GetPrepopulatedEntries() []*AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry {\n\tif x != nil {\n\t\treturn x.PrepopulatedEntries\n\t}\n\treturn nil\n}\n\nfunc (x *AlternateProtocolsCacheOptions) GetCanonicalSuffixes() []string {\n\tif x != nil {\n\t\treturn x.CanonicalSuffixes\n\t}\n\treturn nil\n}\n\n// [#next-free-field: 8]\ntype HttpProtocolOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The idle timeout for connections. The idle timeout is defined as the\n\t// period in which there are no active requests. When the\n\t// idle timeout is reached the connection will be closed. If the connection is an HTTP/2\n\t// downstream connection a drain sequence will occur prior to closing the connection, see\n\t// :ref:`drain_timeout\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.drain_timeout>`.\n\t//\n\t// .. note::\n\t//\n\t//\tRequest based timeouts mean that HTTP/2 PINGs will not keep the connection alive.\n\t//\n\t// If not specified, this defaults to “1 hour“. To disable idle timeouts explicitly set this to “0“.\n\t//\n\t// .. warning::\n\t//\n\t//\tDisabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP\n\t//\tFIN packets, etc.\n\t//\n\t// If the :ref:`overload action <config_overload_manager_overload_actions>` \"envoy.overload_actions.reduce_timeouts\"\n\t// is configured, this timeout is scaled for downstream connections according to the value for\n\t// :ref:`HTTP_DOWNSTREAM_CONNECTION_IDLE <envoy_v3_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_CONNECTION_IDLE>`.\n\tIdleTimeout *durationpb.Duration `protobuf:\"bytes,1,opt,name=idle_timeout,json=idleTimeout,proto3\" json:\"idle_timeout,omitempty\"`\n\t// The maximum duration of a connection. The duration is defined as a period since a connection\n\t// was established. If not set, there is no max duration. When max_connection_duration is reached,\n\t// the drain sequence will kick-in. The connection will be closed after the drain timeout period\n\t// if there are no active streams. See :ref:`drain_timeout\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.drain_timeout>`.\n\tMaxConnectionDuration *durationpb.Duration `protobuf:\"bytes,3,opt,name=max_connection_duration,json=maxConnectionDuration,proto3\" json:\"max_connection_duration,omitempty\"`\n\t// The maximum number of headers (request headers if configured on HttpConnectionManager,\n\t// response headers when configured on a cluster).\n\t// If unconfigured, the default maximum number of headers allowed is “100“.\n\t// The default value for requests can be overridden by setting runtime key “envoy.reloadable_features.max_request_headers_count“.\n\t// The default value for responses can be overridden by setting runtime key “envoy.reloadable_features.max_response_headers_count“.\n\t// Downstream requests that exceed this limit will receive a “HTTP 431“ response for HTTP/1.x and cause a stream\n\t// reset for HTTP/2.\n\t// Upstream responses that exceed this limit will result in a “HTTP 502“ response.\n\tMaxHeadersCount *wrapperspb.UInt32Value `protobuf:\"bytes,2,opt,name=max_headers_count,json=maxHeadersCount,proto3\" json:\"max_headers_count,omitempty\"`\n\t// The maximum size of response headers.\n\t// If unconfigured, the default is “60 KiB“, except for HTTP/1 response headers which have a default\n\t// of “80 KiB“.\n\t// The default value can be overridden by setting runtime key “envoy.reloadable_features.max_response_headers_size_kb“.\n\t// Responses that exceed this limit will result in a “HTTP 503“ response.\n\t// In Envoy, this setting is only valid when configured on an upstream cluster, not on the\n\t// :ref:`HTTP Connection Manager\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.common_http_protocol_options>`.\n\t//\n\t// .. note::\n\t//\n\t//\tCurrently some protocol codecs impose limits on the maximum size of a single header.\n\t//\n\t//\t* HTTP/2 (when using ``nghttp2``) limits a single header to around ``100kb``.\n\t//\t* HTTP/3 limits a single header to around ``1024kb``.\n\tMaxResponseHeadersKb *wrapperspb.UInt32Value `protobuf:\"bytes,7,opt,name=max_response_headers_kb,json=maxResponseHeadersKb,proto3\" json:\"max_response_headers_kb,omitempty\"`\n\t// Total duration to keep alive an HTTP request/response stream. If the time limit is reached the stream will be\n\t// reset independent of any other timeouts. If not specified, this value is not set.\n\tMaxStreamDuration *durationpb.Duration `protobuf:\"bytes,4,opt,name=max_stream_duration,json=maxStreamDuration,proto3\" json:\"max_stream_duration,omitempty\"`\n\t// Action to take when a client request with a header name containing underscore characters is received.\n\t// If this setting is not specified, the value defaults to “ALLOW“.\n\t//\n\t// .. note::\n\t//\n\t//\tUpstream responses are not affected by this setting.\n\t//\n\t// .. note::\n\t//\n\t//\tThis only affects client headers. It does not affect headers added by Envoy filters and does not have any\n\t//\timpact if added to cluster config.\n\tHeadersWithUnderscoresAction HttpProtocolOptions_HeadersWithUnderscoresAction `protobuf:\"varint,5,opt,name=headers_with_underscores_action,json=headersWithUnderscoresAction,proto3,enum=envoy.config.core.v3.HttpProtocolOptions_HeadersWithUnderscoresAction\" json:\"headers_with_underscores_action,omitempty\"`\n\t// Optional maximum requests for both upstream and downstream connections.\n\t// If not specified, there is no limit.\n\t// Setting this parameter to “1“ will effectively disable keep alive.\n\t// For HTTP/2 and HTTP/3, due to concurrent stream processing, the limit is approximate.\n\tMaxRequestsPerConnection *wrapperspb.UInt32Value `protobuf:\"bytes,6,opt,name=max_requests_per_connection,json=maxRequestsPerConnection,proto3\" json:\"max_requests_per_connection,omitempty\"`\n\tunknownFields            protoimpl.UnknownFields\n\tsizeCache                protoimpl.SizeCache\n}\n\nfunc (x *HttpProtocolOptions) Reset() {\n\t*x = HttpProtocolOptions{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpProtocolOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpProtocolOptions) ProtoMessage() {}\n\nfunc (x *HttpProtocolOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpProtocolOptions.ProtoReflect.Descriptor instead.\nfunc (*HttpProtocolOptions) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *HttpProtocolOptions) GetIdleTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.IdleTimeout\n\t}\n\treturn nil\n}\n\nfunc (x *HttpProtocolOptions) GetMaxConnectionDuration() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.MaxConnectionDuration\n\t}\n\treturn nil\n}\n\nfunc (x *HttpProtocolOptions) GetMaxHeadersCount() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxHeadersCount\n\t}\n\treturn nil\n}\n\nfunc (x *HttpProtocolOptions) GetMaxResponseHeadersKb() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxResponseHeadersKb\n\t}\n\treturn nil\n}\n\nfunc (x *HttpProtocolOptions) GetMaxStreamDuration() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.MaxStreamDuration\n\t}\n\treturn nil\n}\n\nfunc (x *HttpProtocolOptions) GetHeadersWithUnderscoresAction() HttpProtocolOptions_HeadersWithUnderscoresAction {\n\tif x != nil {\n\t\treturn x.HeadersWithUnderscoresAction\n\t}\n\treturn HttpProtocolOptions_ALLOW\n}\n\nfunc (x *HttpProtocolOptions) GetMaxRequestsPerConnection() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxRequestsPerConnection\n\t}\n\treturn nil\n}\n\n// [#next-free-field: 12]\ntype Http1ProtocolOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Handle HTTP requests with absolute URLs in the requests. These requests\n\t// are generally sent by clients to forward/explicit proxies. This allows clients to configure\n\t// envoy as their HTTP proxy. In Unix, for example, this is typically done by setting the\n\t// “http_proxy“ environment variable.\n\tAllowAbsoluteUrl *wrapperspb.BoolValue `protobuf:\"bytes,1,opt,name=allow_absolute_url,json=allowAbsoluteUrl,proto3\" json:\"allow_absolute_url,omitempty\"`\n\t// Handle incoming HTTP/1.0 and HTTP/0.9 requests.\n\t// This is off by default, and not fully standards compliant. There is support for pre-HTTP/1.1\n\t// style connect logic, dechunking, and handling lack of client host iff\n\t// “default_host_for_http_10“ is configured.\n\tAcceptHttp_10 bool `protobuf:\"varint,2,opt,name=accept_http_10,json=acceptHttp10,proto3\" json:\"accept_http_10,omitempty\"`\n\t// A default host for HTTP/1.0 requests. This is highly suggested if “accept_http_10“ is true as\n\t// Envoy does not otherwise support HTTP/1.0 without a Host header.\n\t// This is a no-op if “accept_http_10“ is not true.\n\tDefaultHostForHttp_10 string `protobuf:\"bytes,3,opt,name=default_host_for_http_10,json=defaultHostForHttp10,proto3\" json:\"default_host_for_http_10,omitempty\"`\n\t// Describes how the keys for response headers should be formatted. By default, all header keys\n\t// are lower cased.\n\tHeaderKeyFormat *Http1ProtocolOptions_HeaderKeyFormat `protobuf:\"bytes,4,opt,name=header_key_format,json=headerKeyFormat,proto3\" json:\"header_key_format,omitempty\"`\n\t// Enables trailers for HTTP/1. By default the HTTP/1 codec drops proxied trailers.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis only happens when Envoy is chunk encoding which occurs when:\n\t//\t- The request is HTTP/1.1.\n\t//\t- Is neither a ``HEAD`` only request nor a HTTP Upgrade.\n\t//\t- Not a response to a ``HEAD`` request.\n\t//\t- The ``Content-Length`` header is not present.\n\tEnableTrailers bool `protobuf:\"varint,5,opt,name=enable_trailers,json=enableTrailers,proto3\" json:\"enable_trailers,omitempty\"`\n\t// Allows Envoy to process requests/responses with both “Content-Length“ and “Transfer-Encoding“\n\t// headers set. By default such messages are rejected, but if option is enabled - Envoy will\n\t// remove “Content-Length“ header and process message.\n\t// See `RFC7230, sec. 3.3.3 <https://tools.ietf.org/html/rfc7230#section-3.3.3>`_ for details.\n\t//\n\t// .. attention::\n\t//\n\t//\tEnabling this option might lead to request smuggling vulnerability, especially if traffic\n\t//\tis proxied via multiple layers of proxies.\n\t//\n\t// [#comment:TODO: This field is ignored when the\n\t// :ref:`header validation configuration <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.typed_header_validation_config>`\n\t// is present.]\n\tAllowChunkedLength bool `protobuf:\"varint,6,opt,name=allow_chunked_length,json=allowChunkedLength,proto3\" json:\"allow_chunked_length,omitempty\"`\n\t// Allows invalid HTTP messaging. When this option is false, then Envoy will terminate\n\t// HTTP/1.1 connections upon receiving an invalid HTTP message. However,\n\t// when this option is true, then Envoy will leave the HTTP/1.1 connection\n\t// open where possible.\n\t// If set, this overrides any HCM :ref:`stream_error_on_invalid_http_messaging\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_error_on_invalid_http_message>`.\n\tOverrideStreamErrorOnInvalidHttpMessage *wrapperspb.BoolValue `protobuf:\"bytes,7,opt,name=override_stream_error_on_invalid_http_message,json=overrideStreamErrorOnInvalidHttpMessage,proto3\" json:\"override_stream_error_on_invalid_http_message,omitempty\"`\n\t// Allows sending fully qualified URLs when proxying the first line of the\n\t// response. By default, Envoy will only send the path components in the first line.\n\t// If this is true, Envoy will create a fully qualified URI composing scheme\n\t// (inferred if not present), host (from the host/:authority header) and path\n\t// (from first line or :path header).\n\tSendFullyQualifiedUrl bool `protobuf:\"varint,8,opt,name=send_fully_qualified_url,json=sendFullyQualifiedUrl,proto3\" json:\"send_fully_qualified_url,omitempty\"`\n\t// [#not-implemented-hide:] Hiding so that field can be removed after BalsaParser is rolled out.\n\t// If set, force HTTP/1 parser: BalsaParser if true, http-parser if false.\n\t// If unset, HTTP/1 parser is selected based on\n\t// envoy.reloadable_features.http1_use_balsa_parser.\n\t// See issue #21245.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/protocol.proto.\n\tUseBalsaParser *wrapperspb.BoolValue `protobuf:\"bytes,9,opt,name=use_balsa_parser,json=useBalsaParser,proto3\" json:\"use_balsa_parser,omitempty\"`\n\t// [#not-implemented-hide:] Hiding so that field can be removed.\n\t// If true, and BalsaParser is used (either `use_balsa_parser` above is true,\n\t// or `envoy.reloadable_features.http1_use_balsa_parser` is true and\n\t// `use_balsa_parser` is unset), then every non-empty method with only valid\n\t// characters is accepted. Otherwise, methods not on the hard-coded list are\n\t// rejected.\n\t// Once UHV is enabled, this field should be removed, and BalsaParser should\n\t// allow any method. UHV validates the method, rejecting empty string or\n\t// invalid characters, and provides :ref:`restrict_http_methods\n\t// <envoy_v3_api_field_extensions.http.header_validators.envoy_default.v3.HeaderValidatorConfig.restrict_http_methods>`\n\t// to reject custom methods.\n\tAllowCustomMethods bool `protobuf:\"varint,10,opt,name=allow_custom_methods,json=allowCustomMethods,proto3\" json:\"allow_custom_methods,omitempty\"`\n\t// Ignore HTTP/1.1 upgrade values matching any of the supplied matchers.\n\t//\n\t// .. note::\n\t//\n\t//\t``h2c`` upgrades are always removed for backwards compatibility, regardless of the\n\t//\tvalue in this setting.\n\tIgnoreHttp_11Upgrade []*v3.StringMatcher `protobuf:\"bytes,11,rep,name=ignore_http_11_upgrade,json=ignoreHttp11Upgrade,proto3\" json:\"ignore_http_11_upgrade,omitempty\"`\n\tunknownFields        protoimpl.UnknownFields\n\tsizeCache            protoimpl.SizeCache\n}\n\nfunc (x *Http1ProtocolOptions) Reset() {\n\t*x = Http1ProtocolOptions{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Http1ProtocolOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Http1ProtocolOptions) ProtoMessage() {}\n\nfunc (x *Http1ProtocolOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Http1ProtocolOptions.ProtoReflect.Descriptor instead.\nfunc (*Http1ProtocolOptions) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *Http1ProtocolOptions) GetAllowAbsoluteUrl() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.AllowAbsoluteUrl\n\t}\n\treturn nil\n}\n\nfunc (x *Http1ProtocolOptions) GetAcceptHttp_10() bool {\n\tif x != nil {\n\t\treturn x.AcceptHttp_10\n\t}\n\treturn false\n}\n\nfunc (x *Http1ProtocolOptions) GetDefaultHostForHttp_10() string {\n\tif x != nil {\n\t\treturn x.DefaultHostForHttp_10\n\t}\n\treturn \"\"\n}\n\nfunc (x *Http1ProtocolOptions) GetHeaderKeyFormat() *Http1ProtocolOptions_HeaderKeyFormat {\n\tif x != nil {\n\t\treturn x.HeaderKeyFormat\n\t}\n\treturn nil\n}\n\nfunc (x *Http1ProtocolOptions) GetEnableTrailers() bool {\n\tif x != nil {\n\t\treturn x.EnableTrailers\n\t}\n\treturn false\n}\n\nfunc (x *Http1ProtocolOptions) GetAllowChunkedLength() bool {\n\tif x != nil {\n\t\treturn x.AllowChunkedLength\n\t}\n\treturn false\n}\n\nfunc (x *Http1ProtocolOptions) GetOverrideStreamErrorOnInvalidHttpMessage() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.OverrideStreamErrorOnInvalidHttpMessage\n\t}\n\treturn nil\n}\n\nfunc (x *Http1ProtocolOptions) GetSendFullyQualifiedUrl() bool {\n\tif x != nil {\n\t\treturn x.SendFullyQualifiedUrl\n\t}\n\treturn false\n}\n\n// Deprecated: Marked as deprecated in envoy/config/core/v3/protocol.proto.\nfunc (x *Http1ProtocolOptions) GetUseBalsaParser() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.UseBalsaParser\n\t}\n\treturn nil\n}\n\nfunc (x *Http1ProtocolOptions) GetAllowCustomMethods() bool {\n\tif x != nil {\n\t\treturn x.AllowCustomMethods\n\t}\n\treturn false\n}\n\nfunc (x *Http1ProtocolOptions) GetIgnoreHttp_11Upgrade() []*v3.StringMatcher {\n\tif x != nil {\n\t\treturn x.IgnoreHttp_11Upgrade\n\t}\n\treturn nil\n}\n\ntype KeepaliveSettings struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Send HTTP/2 PING frames at this period, in order to test that the connection is still alive.\n\t// If this is zero, interval PINGs will not be sent.\n\tInterval *durationpb.Duration `protobuf:\"bytes,1,opt,name=interval,proto3\" json:\"interval,omitempty\"`\n\t// How long to wait for a response to a keepalive PING. If a response is not received within this\n\t// time period, the connection will be aborted.\n\t//\n\t// .. note::\n\t//\n\t//\tIn order to prevent the influence of Head-of-line (HOL) blocking the timeout period is extended when *any* frame is received on\n\t//\tthe connection, under the assumption that if a frame is received the connection is healthy.\n\tTimeout *durationpb.Duration `protobuf:\"bytes,2,opt,name=timeout,proto3\" json:\"timeout,omitempty\"`\n\t// A random jitter amount as a percentage of interval that will be added to each interval.\n\t// A value of zero means there will be no jitter.\n\t// The default value is “15%“.\n\tIntervalJitter *v31.Percent `protobuf:\"bytes,3,opt,name=interval_jitter,json=intervalJitter,proto3\" json:\"interval_jitter,omitempty\"`\n\t// If the connection has been idle for this duration, send a HTTP/2 ping ahead\n\t// of new stream creation, to quickly detect dead connections.\n\t// If this is zero, this type of PING will not be sent.\n\t// If an interval ping is outstanding, a second ping will not be sent as the\n\t// interval ping will determine if the connection is dead.\n\t//\n\t// The same feature for HTTP/3 is given by inheritance from QUICHE which uses :ref:`connection idle_timeout <envoy_v3_api_field_config.listener.v3.QuicProtocolOptions.idle_timeout>` and the current PTO of the connection to decide whether to probe before sending a new request.\n\tConnectionIdleInterval *durationpb.Duration `protobuf:\"bytes,4,opt,name=connection_idle_interval,json=connectionIdleInterval,proto3\" json:\"connection_idle_interval,omitempty\"`\n\tunknownFields          protoimpl.UnknownFields\n\tsizeCache              protoimpl.SizeCache\n}\n\nfunc (x *KeepaliveSettings) Reset() {\n\t*x = KeepaliveSettings{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *KeepaliveSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*KeepaliveSettings) ProtoMessage() {}\n\nfunc (x *KeepaliveSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use KeepaliveSettings.ProtoReflect.Descriptor instead.\nfunc (*KeepaliveSettings) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *KeepaliveSettings) GetInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Interval\n\t}\n\treturn nil\n}\n\nfunc (x *KeepaliveSettings) GetTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Timeout\n\t}\n\treturn nil\n}\n\nfunc (x *KeepaliveSettings) GetIntervalJitter() *v31.Percent {\n\tif x != nil {\n\t\treturn x.IntervalJitter\n\t}\n\treturn nil\n}\n\nfunc (x *KeepaliveSettings) GetConnectionIdleInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.ConnectionIdleInterval\n\t}\n\treturn nil\n}\n\n// [#next-free-field: 19]\ntype Http2ProtocolOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// `Maximum table size <https://httpwg.org/specs/rfc7541.html#rfc.section.4.2>`_\n\t// (in octets) that the encoder is permitted to use for the dynamic HPACK table. Valid values\n\t// range from “0“ to “4294967295“ (“2^32 - 1“) and defaults to “4096“. “0“ effectively disables header\n\t// compression.\n\tHpackTableSize *wrapperspb.UInt32Value `protobuf:\"bytes,1,opt,name=hpack_table_size,json=hpackTableSize,proto3\" json:\"hpack_table_size,omitempty\"`\n\t// `Maximum concurrent streams <https://httpwg.org/specs/rfc7540.html#rfc.section.5.1.2>`_\n\t// allowed for peer on one HTTP/2 connection. Valid values range from “1“ to “2147483647“ (“2^31 - 1“)\n\t// and defaults to “1024“ for safety and should be sufficient for most use cases.\n\t//\n\t// For upstream connections, this also limits how many streams Envoy will initiate concurrently\n\t// on a single connection. If the limit is reached, Envoy may queue requests or establish\n\t// additional connections (as allowed per circuit breaker limits).\n\t//\n\t// This acts as an upper bound: Envoy will lower the max concurrent streams allowed on a given\n\t// connection based on upstream settings. Config dumps will reflect the configured upper bound,\n\t// not the per-connection negotiated limits.\n\tMaxConcurrentStreams *wrapperspb.UInt32Value `protobuf:\"bytes,2,opt,name=max_concurrent_streams,json=maxConcurrentStreams,proto3\" json:\"max_concurrent_streams,omitempty\"`\n\t// `Initial stream-level flow-control window\n\t// <https://httpwg.org/specs/rfc7540.html#rfc.section.6.9.2>`_ size. Valid values range from “65535“\n\t// (“2^16 - 1“, HTTP/2 default) to “2147483647“ (“2^31 - 1“, HTTP/2 maximum) and defaults to\n\t// “16MiB“ (“16 * 1024 * 1024“).\n\t//\n\t// .. note::\n\t//\n\t//\t``65535`` is the initial window size from HTTP/2 spec. We only support increasing the default window size now,\n\t//\tso it's also the minimum.\n\t//\n\t// This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the\n\t// HTTP/2 codec buffers. Once the buffer reaches this pointer, watermark callbacks will fire to\n\t// stop the flow of data to the codec buffers.\n\tInitialStreamWindowSize *wrapperspb.UInt32Value `protobuf:\"bytes,3,opt,name=initial_stream_window_size,json=initialStreamWindowSize,proto3\" json:\"initial_stream_window_size,omitempty\"`\n\t// Similar to “initial_stream_window_size“, but for connection-level flow-control\n\t// window. The default is “24MiB“ (“24 * 1024 * 1024“).\n\tInitialConnectionWindowSize *wrapperspb.UInt32Value `protobuf:\"bytes,4,opt,name=initial_connection_window_size,json=initialConnectionWindowSize,proto3\" json:\"initial_connection_window_size,omitempty\"`\n\t// Allows proxying Websocket and other upgrades over H2 connect.\n\tAllowConnect bool `protobuf:\"varint,5,opt,name=allow_connect,json=allowConnect,proto3\" json:\"allow_connect,omitempty\"`\n\t// [#not-implemented-hide:] Hiding until Envoy has full metadata support.\n\t// Still under implementation. DO NOT USE.\n\t//\n\t// Allows sending and receiving HTTP/2 METADATA frames. See [metadata\n\t// docs](https://github.com/envoyproxy/envoy/blob/main/source/docs/h2_metadata.md) for more\n\t// information.\n\tAllowMetadata bool `protobuf:\"varint,6,opt,name=allow_metadata,json=allowMetadata,proto3\" json:\"allow_metadata,omitempty\"`\n\t// Limit the number of pending outbound downstream frames of all types (frames that are waiting to\n\t// be written into the socket). Exceeding this limit triggers flood mitigation and connection is\n\t// terminated. The “http2.outbound_flood“ stat tracks the number of terminated connections due\n\t// to flood mitigation. The default limit is “10000“.\n\tMaxOutboundFrames *wrapperspb.UInt32Value `protobuf:\"bytes,7,opt,name=max_outbound_frames,json=maxOutboundFrames,proto3\" json:\"max_outbound_frames,omitempty\"`\n\t// Limit the number of pending outbound downstream frames of types “PING“, “SETTINGS“ and “RST_STREAM“,\n\t// preventing high memory utilization when receiving continuous stream of these frames. Exceeding\n\t// this limit triggers flood mitigation and connection is terminated. The\n\t// “http2.outbound_control_flood“ stat tracks the number of terminated connections due to flood\n\t// mitigation. The default limit is “1000“.\n\tMaxOutboundControlFrames *wrapperspb.UInt32Value `protobuf:\"bytes,8,opt,name=max_outbound_control_frames,json=maxOutboundControlFrames,proto3\" json:\"max_outbound_control_frames,omitempty\"`\n\t// Limit the number of consecutive inbound frames of types “HEADERS“, “CONTINUATION“ and “DATA“ with an\n\t// empty payload and no end stream flag. Those frames have no legitimate use and are abusive, but\n\t// might be a result of a broken HTTP/2 implementation. The “http2.inbound_empty_frames_flood“\n\t// stat tracks the number of connections terminated due to flood mitigation.\n\t// Setting this to “0“ will terminate connection upon receiving first frame with an empty payload\n\t// and no end stream flag. The default limit is “1“.\n\tMaxConsecutiveInboundFramesWithEmptyPayload *wrapperspb.UInt32Value `protobuf:\"bytes,9,opt,name=max_consecutive_inbound_frames_with_empty_payload,json=maxConsecutiveInboundFramesWithEmptyPayload,proto3\" json:\"max_consecutive_inbound_frames_with_empty_payload,omitempty\"`\n\t// Limit the number of inbound “PRIORITY“ frames allowed per each opened stream. If the number\n\t// of “PRIORITY“ frames received over the lifetime of connection exceeds the value calculated\n\t// using this formula::\n\t//\n\t//\t``max_inbound_priority_frames_per_stream`` * (1 + ``opened_streams``)\n\t//\n\t// the connection is terminated. For downstream connections the “opened_streams“ is incremented when\n\t// Envoy receives complete response headers from the upstream server. For upstream connection the\n\t// “opened_streams“ is incremented when Envoy sends the “HEADERS“ frame for a new stream. The\n\t// “http2.inbound_priority_frames_flood“ stat tracks\n\t// the number of connections terminated due to flood mitigation. The default limit is “100“.\n\tMaxInboundPriorityFramesPerStream *wrapperspb.UInt32Value `protobuf:\"bytes,10,opt,name=max_inbound_priority_frames_per_stream,json=maxInboundPriorityFramesPerStream,proto3\" json:\"max_inbound_priority_frames_per_stream,omitempty\"`\n\t// Limit the number of inbound “WINDOW_UPDATE“ frames allowed per “DATA“ frame sent. If the number\n\t// of “WINDOW_UPDATE“ frames received over the lifetime of connection exceeds the value calculated\n\t// using this formula::\n\t//\n\t//\t``5 + 2 * (opened_streams +\n\t//\t         max_inbound_window_update_frames_per_data_frame_sent * outbound_data_frames)``\n\t//\n\t// the connection is terminated. For downstream connections the “opened_streams“ is incremented when\n\t// Envoy receives complete response headers from the upstream server. For upstream connections the\n\t// “opened_streams“ is incremented when Envoy sends the “HEADERS“ frame for a new stream. The\n\t// “http2.inbound_priority_frames_flood“ stat tracks the number of connections terminated due to\n\t// flood mitigation. The default “max_inbound_window_update_frames_per_data_frame_sent“ value is “10“.\n\t// Setting this to “1“ should be enough to support HTTP/2 implementations with basic flow control,\n\t// but more complex implementations that try to estimate available bandwidth require at least “2“.\n\tMaxInboundWindowUpdateFramesPerDataFrameSent *wrapperspb.UInt32Value `protobuf:\"bytes,11,opt,name=max_inbound_window_update_frames_per_data_frame_sent,json=maxInboundWindowUpdateFramesPerDataFrameSent,proto3\" json:\"max_inbound_window_update_frames_per_data_frame_sent,omitempty\"`\n\t// Allows invalid HTTP messaging and headers. When this option is disabled (default), then\n\t// the whole HTTP/2 connection is terminated upon receiving invalid HEADERS frame. However,\n\t// when this option is enabled, only the offending stream is terminated.\n\t//\n\t// This is overridden by HCM :ref:`stream_error_on_invalid_http_messaging\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_error_on_invalid_http_message>`\n\t// iff present.\n\t//\n\t// This is deprecated in favor of :ref:`override_stream_error_on_invalid_http_message\n\t// <envoy_v3_api_field_config.core.v3.Http2ProtocolOptions.override_stream_error_on_invalid_http_message>`\n\t//\n\t// See `RFC7540, sec. 8.1 <https://tools.ietf.org/html/rfc7540#section-8.1>`_ for details.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/protocol.proto.\n\tStreamErrorOnInvalidHttpMessaging bool `protobuf:\"varint,12,opt,name=stream_error_on_invalid_http_messaging,json=streamErrorOnInvalidHttpMessaging,proto3\" json:\"stream_error_on_invalid_http_messaging,omitempty\"`\n\t// Allows invalid HTTP messaging and headers. When this option is disabled (default), then\n\t// the whole HTTP/2 connection is terminated upon receiving invalid HEADERS frame. However,\n\t// when this option is enabled, only the offending stream is terminated.\n\t//\n\t// This overrides any HCM :ref:`stream_error_on_invalid_http_messaging\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_error_on_invalid_http_message>`\n\t//\n\t// See `RFC7540, sec. 8.1 <https://tools.ietf.org/html/rfc7540#section-8.1>`_ for details.\n\tOverrideStreamErrorOnInvalidHttpMessage *wrapperspb.BoolValue `protobuf:\"bytes,14,opt,name=override_stream_error_on_invalid_http_message,json=overrideStreamErrorOnInvalidHttpMessage,proto3\" json:\"override_stream_error_on_invalid_http_message,omitempty\"`\n\t// [#not-implemented-hide:]\n\t// Specifies SETTINGS frame parameters to be sent to the peer, with two exceptions:\n\t//\n\t// 1. SETTINGS_ENABLE_PUSH (0x2) is not configurable as HTTP/2 server push is not supported by\n\t// Envoy.\n\t//\n\t// 2. SETTINGS_ENABLE_CONNECT_PROTOCOL (0x8) is only configurable through the named field\n\t// 'allow_connect'.\n\t//\n\t// .. note::\n\t//\n\t//\tCustom parameters specified through this field can not also be set in the\n\t//\tcorresponding named parameters:\n\t//\n\t// .. code-block:: text\n\t//\n\t//\tID    Field Name\n\t//\t----------------\n\t//\t0x1   hpack_table_size\n\t//\t0x3   max_concurrent_streams\n\t//\t0x4   initial_stream_window_size\n\t//\n\t// Collisions will trigger config validation failure on load/update. Likewise, inconsistencies\n\t// between custom parameters with the same identifier will trigger a failure.\n\t//\n\t// See `IANA HTTP/2 Settings\n\t// <https://www.iana.org/assignments/http2-parameters/http2-parameters.xhtml#settings>`_ for\n\t// standardized identifiers.\n\tCustomSettingsParameters []*Http2ProtocolOptions_SettingsParameter `protobuf:\"bytes,13,rep,name=custom_settings_parameters,json=customSettingsParameters,proto3\" json:\"custom_settings_parameters,omitempty\"`\n\t// Send HTTP/2 PING frames to verify that the connection is still healthy. If the remote peer\n\t// does not respond within the configured timeout, the connection will be aborted.\n\tConnectionKeepalive *KeepaliveSettings `protobuf:\"bytes,15,opt,name=connection_keepalive,json=connectionKeepalive,proto3\" json:\"connection_keepalive,omitempty\"`\n\t// [#not-implemented-hide:] Hiding so that the field can be removed after oghttp2 is rolled out.\n\t// If set, force use of a particular HTTP/2 codec: oghttp2 if true, nghttp2 if false.\n\t// If unset, HTTP/2 codec is selected based on envoy.reloadable_features.http2_use_oghttp2.\n\tUseOghttp2Codec *wrapperspb.BoolValue `protobuf:\"bytes,16,opt,name=use_oghttp2_codec,json=useOghttp2Codec,proto3\" json:\"use_oghttp2_codec,omitempty\"`\n\t// Configure the maximum amount of metadata than can be handled per stream. Defaults to “1 MB“.\n\tMaxMetadataSize *wrapperspb.UInt64Value `protobuf:\"bytes,17,opt,name=max_metadata_size,json=maxMetadataSize,proto3\" json:\"max_metadata_size,omitempty\"`\n\t// Controls whether to encode headers using huffman encoding.\n\t// This can be useful in cases where the cpu spent encoding the headers isn't\n\t// worth the network bandwidth saved e.g. for localhost.\n\t// If unset, uses the data plane's default value.\n\tEnableHuffmanEncoding *wrapperspb.BoolValue `protobuf:\"bytes,18,opt,name=enable_huffman_encoding,json=enableHuffmanEncoding,proto3\" json:\"enable_huffman_encoding,omitempty\"`\n\tunknownFields         protoimpl.UnknownFields\n\tsizeCache             protoimpl.SizeCache\n}\n\nfunc (x *Http2ProtocolOptions) Reset() {\n\t*x = Http2ProtocolOptions{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[8]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Http2ProtocolOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Http2ProtocolOptions) ProtoMessage() {}\n\nfunc (x *Http2ProtocolOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[8]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Http2ProtocolOptions.ProtoReflect.Descriptor instead.\nfunc (*Http2ProtocolOptions) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *Http2ProtocolOptions) GetHpackTableSize() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.HpackTableSize\n\t}\n\treturn nil\n}\n\nfunc (x *Http2ProtocolOptions) GetMaxConcurrentStreams() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxConcurrentStreams\n\t}\n\treturn nil\n}\n\nfunc (x *Http2ProtocolOptions) GetInitialStreamWindowSize() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.InitialStreamWindowSize\n\t}\n\treturn nil\n}\n\nfunc (x *Http2ProtocolOptions) GetInitialConnectionWindowSize() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.InitialConnectionWindowSize\n\t}\n\treturn nil\n}\n\nfunc (x *Http2ProtocolOptions) GetAllowConnect() bool {\n\tif x != nil {\n\t\treturn x.AllowConnect\n\t}\n\treturn false\n}\n\nfunc (x *Http2ProtocolOptions) GetAllowMetadata() bool {\n\tif x != nil {\n\t\treturn x.AllowMetadata\n\t}\n\treturn false\n}\n\nfunc (x *Http2ProtocolOptions) GetMaxOutboundFrames() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxOutboundFrames\n\t}\n\treturn nil\n}\n\nfunc (x *Http2ProtocolOptions) GetMaxOutboundControlFrames() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxOutboundControlFrames\n\t}\n\treturn nil\n}\n\nfunc (x *Http2ProtocolOptions) GetMaxConsecutiveInboundFramesWithEmptyPayload() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxConsecutiveInboundFramesWithEmptyPayload\n\t}\n\treturn nil\n}\n\nfunc (x *Http2ProtocolOptions) GetMaxInboundPriorityFramesPerStream() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxInboundPriorityFramesPerStream\n\t}\n\treturn nil\n}\n\nfunc (x *Http2ProtocolOptions) GetMaxInboundWindowUpdateFramesPerDataFrameSent() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxInboundWindowUpdateFramesPerDataFrameSent\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/core/v3/protocol.proto.\nfunc (x *Http2ProtocolOptions) GetStreamErrorOnInvalidHttpMessaging() bool {\n\tif x != nil {\n\t\treturn x.StreamErrorOnInvalidHttpMessaging\n\t}\n\treturn false\n}\n\nfunc (x *Http2ProtocolOptions) GetOverrideStreamErrorOnInvalidHttpMessage() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.OverrideStreamErrorOnInvalidHttpMessage\n\t}\n\treturn nil\n}\n\nfunc (x *Http2ProtocolOptions) GetCustomSettingsParameters() []*Http2ProtocolOptions_SettingsParameter {\n\tif x != nil {\n\t\treturn x.CustomSettingsParameters\n\t}\n\treturn nil\n}\n\nfunc (x *Http2ProtocolOptions) GetConnectionKeepalive() *KeepaliveSettings {\n\tif x != nil {\n\t\treturn x.ConnectionKeepalive\n\t}\n\treturn nil\n}\n\nfunc (x *Http2ProtocolOptions) GetUseOghttp2Codec() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.UseOghttp2Codec\n\t}\n\treturn nil\n}\n\nfunc (x *Http2ProtocolOptions) GetMaxMetadataSize() *wrapperspb.UInt64Value {\n\tif x != nil {\n\t\treturn x.MaxMetadataSize\n\t}\n\treturn nil\n}\n\nfunc (x *Http2ProtocolOptions) GetEnableHuffmanEncoding() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.EnableHuffmanEncoding\n\t}\n\treturn nil\n}\n\n// [#not-implemented-hide:]\ntype GrpcProtocolOptions struct {\n\tstate                protoimpl.MessageState `protogen:\"open.v1\"`\n\tHttp2ProtocolOptions *Http2ProtocolOptions  `protobuf:\"bytes,1,opt,name=http2_protocol_options,json=http2ProtocolOptions,proto3\" json:\"http2_protocol_options,omitempty\"`\n\tunknownFields        protoimpl.UnknownFields\n\tsizeCache            protoimpl.SizeCache\n}\n\nfunc (x *GrpcProtocolOptions) Reset() {\n\t*x = GrpcProtocolOptions{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[9]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcProtocolOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcProtocolOptions) ProtoMessage() {}\n\nfunc (x *GrpcProtocolOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[9]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcProtocolOptions.ProtoReflect.Descriptor instead.\nfunc (*GrpcProtocolOptions) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *GrpcProtocolOptions) GetHttp2ProtocolOptions() *Http2ProtocolOptions {\n\tif x != nil {\n\t\treturn x.Http2ProtocolOptions\n\t}\n\treturn nil\n}\n\n// A message which allows using HTTP/3.\n// [#next-free-field: 9]\ntype Http3ProtocolOptions struct {\n\tstate               protoimpl.MessageState `protogen:\"open.v1\"`\n\tQuicProtocolOptions *QuicProtocolOptions   `protobuf:\"bytes,1,opt,name=quic_protocol_options,json=quicProtocolOptions,proto3\" json:\"quic_protocol_options,omitempty\"`\n\t// Allows invalid HTTP messaging and headers. When this option is disabled (default), then\n\t// the whole HTTP/3 connection is terminated upon receiving invalid HEADERS frame. However,\n\t// when this option is enabled, only the offending stream is terminated.\n\t//\n\t// If set, this overrides any HCM :ref:`stream_error_on_invalid_http_messaging\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_error_on_invalid_http_message>`.\n\tOverrideStreamErrorOnInvalidHttpMessage *wrapperspb.BoolValue `protobuf:\"bytes,2,opt,name=override_stream_error_on_invalid_http_message,json=overrideStreamErrorOnInvalidHttpMessage,proto3\" json:\"override_stream_error_on_invalid_http_message,omitempty\"`\n\t// Allows proxying Websocket and other upgrades over HTTP/3 CONNECT using\n\t// the header mechanisms from the `HTTP/2 extended connect RFC\n\t// <https://datatracker.ietf.org/doc/html/rfc8441>`_\n\t// and settings `proposed for HTTP/3\n\t// <https://datatracker.ietf.org/doc/draft-ietf-httpbis-h3-websockets/>`_\n\t//\n\t// .. note::\n\t//\n\t//\tHTTP/3 CONNECT is not yet an RFC.\n\tAllowExtendedConnect bool `protobuf:\"varint,5,opt,name=allow_extended_connect,json=allowExtendedConnect,proto3\" json:\"allow_extended_connect,omitempty\"`\n\t// [#not-implemented-hide:] Hiding until Envoy has full metadata support.\n\t// Still under implementation. DO NOT USE.\n\t//\n\t// Allows sending and receiving HTTP/3 METADATA frames. See [metadata\n\t// docs](https://github.com/envoyproxy/envoy/blob/main/source/docs/h2_metadata.md) for more\n\t// information.\n\tAllowMetadata bool `protobuf:\"varint,6,opt,name=allow_metadata,json=allowMetadata,proto3\" json:\"allow_metadata,omitempty\"`\n\t// [#not-implemented-hide:] Hiding until Envoy has full HTTP/3 upstream support.\n\t// Still under implementation. DO NOT USE.\n\t//\n\t// Disables QPACK compression related features for HTTP/3 including:\n\t// No huffman encoding, zero dynamic table capacity and no cookie crumbling.\n\t// This can be useful for trading off CPU vs bandwidth when an upstream HTTP/3 connection multiplexes multiple downstream connections.\n\tDisableQpack bool `protobuf:\"varint,7,opt,name=disable_qpack,json=disableQpack,proto3\" json:\"disable_qpack,omitempty\"`\n\t// Disables connection level flow control for HTTP/3 streams. This is useful in situations where the streams share the same connection\n\t// but originate from different end-clients, so that each stream can make progress independently at non-front-line proxies.\n\tDisableConnectionFlowControlForStreams bool `protobuf:\"varint,8,opt,name=disable_connection_flow_control_for_streams,json=disableConnectionFlowControlForStreams,proto3\" json:\"disable_connection_flow_control_for_streams,omitempty\"`\n\tunknownFields                          protoimpl.UnknownFields\n\tsizeCache                              protoimpl.SizeCache\n}\n\nfunc (x *Http3ProtocolOptions) Reset() {\n\t*x = Http3ProtocolOptions{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[10]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Http3ProtocolOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Http3ProtocolOptions) ProtoMessage() {}\n\nfunc (x *Http3ProtocolOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[10]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Http3ProtocolOptions.ProtoReflect.Descriptor instead.\nfunc (*Http3ProtocolOptions) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *Http3ProtocolOptions) GetQuicProtocolOptions() *QuicProtocolOptions {\n\tif x != nil {\n\t\treturn x.QuicProtocolOptions\n\t}\n\treturn nil\n}\n\nfunc (x *Http3ProtocolOptions) GetOverrideStreamErrorOnInvalidHttpMessage() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.OverrideStreamErrorOnInvalidHttpMessage\n\t}\n\treturn nil\n}\n\nfunc (x *Http3ProtocolOptions) GetAllowExtendedConnect() bool {\n\tif x != nil {\n\t\treturn x.AllowExtendedConnect\n\t}\n\treturn false\n}\n\nfunc (x *Http3ProtocolOptions) GetAllowMetadata() bool {\n\tif x != nil {\n\t\treturn x.AllowMetadata\n\t}\n\treturn false\n}\n\nfunc (x *Http3ProtocolOptions) GetDisableQpack() bool {\n\tif x != nil {\n\t\treturn x.DisableQpack\n\t}\n\treturn false\n}\n\nfunc (x *Http3ProtocolOptions) GetDisableConnectionFlowControlForStreams() bool {\n\tif x != nil {\n\t\treturn x.DisableConnectionFlowControlForStreams\n\t}\n\treturn false\n}\n\n// A message to control transformations to the :scheme header\ntype SchemeHeaderTransformation struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Transformation:\n\t//\n\t//\t*SchemeHeaderTransformation_SchemeToOverwrite\n\tTransformation isSchemeHeaderTransformation_Transformation `protobuf_oneof:\"transformation\"`\n\t// Set the Scheme header to match the upstream transport protocol. For example, should a\n\t// request be sent to the upstream over TLS, the scheme header will be set to “\"https\"“. Should the\n\t// request be sent over plaintext, the scheme header will be set to “\"http\"“.\n\t// If “scheme_to_overwrite“ is set, this field is not used.\n\tMatchUpstream bool `protobuf:\"varint,2,opt,name=match_upstream,json=matchUpstream,proto3\" json:\"match_upstream,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *SchemeHeaderTransformation) Reset() {\n\t*x = SchemeHeaderTransformation{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[11]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SchemeHeaderTransformation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SchemeHeaderTransformation) ProtoMessage() {}\n\nfunc (x *SchemeHeaderTransformation) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[11]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SchemeHeaderTransformation.ProtoReflect.Descriptor instead.\nfunc (*SchemeHeaderTransformation) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *SchemeHeaderTransformation) GetTransformation() isSchemeHeaderTransformation_Transformation {\n\tif x != nil {\n\t\treturn x.Transformation\n\t}\n\treturn nil\n}\n\nfunc (x *SchemeHeaderTransformation) GetSchemeToOverwrite() string {\n\tif x != nil {\n\t\tif x, ok := x.Transformation.(*SchemeHeaderTransformation_SchemeToOverwrite); ok {\n\t\t\treturn x.SchemeToOverwrite\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *SchemeHeaderTransformation) GetMatchUpstream() bool {\n\tif x != nil {\n\t\treturn x.MatchUpstream\n\t}\n\treturn false\n}\n\ntype isSchemeHeaderTransformation_Transformation interface {\n\tisSchemeHeaderTransformation_Transformation()\n}\n\ntype SchemeHeaderTransformation_SchemeToOverwrite struct {\n\t// Overwrite any Scheme header with the contents of this string.\n\t// If set, takes precedence over “match_upstream“.\n\tSchemeToOverwrite string `protobuf:\"bytes,1,opt,name=scheme_to_overwrite,json=schemeToOverwrite,proto3,oneof\"`\n}\n\nfunc (*SchemeHeaderTransformation_SchemeToOverwrite) isSchemeHeaderTransformation_Transformation() {}\n\n// Config for QUIC connection migration across network interfaces, i.e. cellular to WIFI, upon\n// network change events from the platform, i.e. the current network gets\n// disconnected, or upon the QUIC detecting a bad connection. After migration, the\n// connection may be on a different network other than the default network\n// picked by the platform. Both iOS and Android will use a default network to interact with the internet, usually prefer unmetered network (WIFI)\n// over metered ones (cellular). And users can specify which network to be used as the default. A connection on non-default network is only allowed to\n// serve new requests for a certain period of time before being drained, and\n// meanwhile, QUIC will try to migrate to the default network if possible.\ntype QuicProtocolOptions_ConnectionMigrationSettings struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Config whether and how to migrate idle connections.\n\t// If absent, idle connections will not be migrated but be closed upon\n\t// migration signals.\n\tMigrateIdleConnections *QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings `protobuf:\"bytes,1,opt,name=migrate_idle_connections,json=migrateIdleConnections,proto3\" json:\"migrate_idle_connections,omitempty\"`\n\t// After migrating to a non-default network interface, the connection will\n\t// only be allowed to stay on that network for up to this period of time before\n\t// being drained unless it migrates to the default network or that network\n\t// gets picked as the default by the device by then.\n\t// Default to 128s.\n\tMaxTimeOnNonDefaultNetwork *durationpb.Duration `protobuf:\"bytes,2,opt,name=max_time_on_non_default_network,json=maxTimeOnNonDefaultNetwork,proto3\" json:\"max_time_on_non_default_network,omitempty\"`\n\tunknownFields              protoimpl.UnknownFields\n\tsizeCache                  protoimpl.SizeCache\n}\n\nfunc (x *QuicProtocolOptions_ConnectionMigrationSettings) Reset() {\n\t*x = QuicProtocolOptions_ConnectionMigrationSettings{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[12]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *QuicProtocolOptions_ConnectionMigrationSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QuicProtocolOptions_ConnectionMigrationSettings) ProtoMessage() {}\n\nfunc (x *QuicProtocolOptions_ConnectionMigrationSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[12]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use QuicProtocolOptions_ConnectionMigrationSettings.ProtoReflect.Descriptor instead.\nfunc (*QuicProtocolOptions_ConnectionMigrationSettings) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{2, 0}\n}\n\nfunc (x *QuicProtocolOptions_ConnectionMigrationSettings) GetMigrateIdleConnections() *QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings {\n\tif x != nil {\n\t\treturn x.MigrateIdleConnections\n\t}\n\treturn nil\n}\n\nfunc (x *QuicProtocolOptions_ConnectionMigrationSettings) GetMaxTimeOnNonDefaultNetwork() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.MaxTimeOnNonDefaultNetwork\n\t}\n\treturn nil\n}\n\n// Config for options to migrate idle connections which aren't serving any requests.\ntype QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// If idle connections are allowed to be migrated, only migrate the connection\n\t// if it hasn't been idle for longer than this idle period. Otherwise, the\n\t// connection will be closed instead.\n\t// Default to 30s.\n\tMaxIdleTimeBeforeMigration *durationpb.Duration `protobuf:\"bytes,1,opt,name=max_idle_time_before_migration,json=maxIdleTimeBeforeMigration,proto3\" json:\"max_idle_time_before_migration,omitempty\"`\n\tunknownFields              protoimpl.UnknownFields\n\tsizeCache                  protoimpl.SizeCache\n}\n\nfunc (x *QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings) Reset() {\n\t*x = QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[13]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings) ProtoMessage() {\n}\n\nfunc (x *QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[13]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings.ProtoReflect.Descriptor instead.\nfunc (*QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{2, 0, 0}\n}\n\nfunc (x *QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings) GetMaxIdleTimeBeforeMigration() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.MaxIdleTimeBeforeMigration\n\t}\n\treturn nil\n}\n\n// Allows pre-populating the cache with HTTP/3 alternate protocols entries with a 7 day lifetime.\n// This will cause Envoy to attempt HTTP/3 to those upstreams, even if the upstreams have not\n// advertised HTTP/3 support. These entries will be overwritten by alt-svc\n// response headers or cached values.\n// As with regular cached entries, if the origin response would result in clearing an existing\n// alternate protocol cache entry, pre-populated entries will also be cleared.\n// Adding a cache entry with hostname=foo.com port=123 is the equivalent of getting\n// response headers\n// alt-svc: h3=:\"123\"; ma=86400\" in a response to a request to foo.com:123\ntype AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The host name for the alternate protocol entry.\n\tHostname string `protobuf:\"bytes,1,opt,name=hostname,proto3\" json:\"hostname,omitempty\"`\n\t// The port for the alternate protocol entry.\n\tPort          uint32 `protobuf:\"varint,2,opt,name=port,proto3\" json:\"port,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry) Reset() {\n\t*x = AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[14]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry) ProtoMessage() {}\n\nfunc (x *AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[14]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry.ProtoReflect.Descriptor instead.\nfunc (*AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{4, 0}\n}\n\nfunc (x *AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry) GetHostname() string {\n\tif x != nil {\n\t\treturn x.Hostname\n\t}\n\treturn \"\"\n}\n\nfunc (x *AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry) GetPort() uint32 {\n\tif x != nil {\n\t\treturn x.Port\n\t}\n\treturn 0\n}\n\n// [#next-free-field: 9]\ntype Http1ProtocolOptions_HeaderKeyFormat struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to HeaderFormat:\n\t//\n\t//\t*Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_\n\t//\t*Http1ProtocolOptions_HeaderKeyFormat_StatefulFormatter\n\tHeaderFormat  isHttp1ProtocolOptions_HeaderKeyFormat_HeaderFormat `protobuf_oneof:\"header_format\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Http1ProtocolOptions_HeaderKeyFormat) Reset() {\n\t*x = Http1ProtocolOptions_HeaderKeyFormat{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[15]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Http1ProtocolOptions_HeaderKeyFormat) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Http1ProtocolOptions_HeaderKeyFormat) ProtoMessage() {}\n\nfunc (x *Http1ProtocolOptions_HeaderKeyFormat) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[15]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Http1ProtocolOptions_HeaderKeyFormat.ProtoReflect.Descriptor instead.\nfunc (*Http1ProtocolOptions_HeaderKeyFormat) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{6, 0}\n}\n\nfunc (x *Http1ProtocolOptions_HeaderKeyFormat) GetHeaderFormat() isHttp1ProtocolOptions_HeaderKeyFormat_HeaderFormat {\n\tif x != nil {\n\t\treturn x.HeaderFormat\n\t}\n\treturn nil\n}\n\nfunc (x *Http1ProtocolOptions_HeaderKeyFormat) GetProperCaseWords() *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords {\n\tif x != nil {\n\t\tif x, ok := x.HeaderFormat.(*Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_); ok {\n\t\t\treturn x.ProperCaseWords\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Http1ProtocolOptions_HeaderKeyFormat) GetStatefulFormatter() *TypedExtensionConfig {\n\tif x != nil {\n\t\tif x, ok := x.HeaderFormat.(*Http1ProtocolOptions_HeaderKeyFormat_StatefulFormatter); ok {\n\t\t\treturn x.StatefulFormatter\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isHttp1ProtocolOptions_HeaderKeyFormat_HeaderFormat interface {\n\tisHttp1ProtocolOptions_HeaderKeyFormat_HeaderFormat()\n}\n\ntype Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_ struct {\n\t// Formats the header by proper casing words: the first character and any character following\n\t// a special character will be capitalized if it's an alpha character. For example,\n\t// “\"content-type\"“ becomes “\"Content-Type\"“, and “\"foo$b#$are\"“ becomes “\"Foo$B#$Are\"“.\n\t//\n\t// .. note::\n\t//\n\t//\tWhile this results in most headers following conventional casing, certain headers\n\t//\tare not covered. For example, the ``\"TE\"`` header will be formatted as ``\"Te\"``.\n\tProperCaseWords *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords `protobuf:\"bytes,1,opt,name=proper_case_words,json=properCaseWords,proto3,oneof\"`\n}\n\ntype Http1ProtocolOptions_HeaderKeyFormat_StatefulFormatter struct {\n\t// Configuration for stateful formatter extensions that allow using received headers to\n\t// affect the output of encoding headers. E.g., preserving case during proxying.\n\t// [#extension-category: envoy.http.stateful_header_formatters]\n\tStatefulFormatter *TypedExtensionConfig `protobuf:\"bytes,8,opt,name=stateful_formatter,json=statefulFormatter,proto3,oneof\"`\n}\n\nfunc (*Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_) isHttp1ProtocolOptions_HeaderKeyFormat_HeaderFormat() {\n}\n\nfunc (*Http1ProtocolOptions_HeaderKeyFormat_StatefulFormatter) isHttp1ProtocolOptions_HeaderKeyFormat_HeaderFormat() {\n}\n\ntype Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords) Reset() {\n\t*x = Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[16]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords) ProtoMessage() {}\n\nfunc (x *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[16]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords.ProtoReflect.Descriptor instead.\nfunc (*Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{6, 0, 0}\n}\n\n// Defines a parameter to be sent in the SETTINGS frame.\n// See `RFC7540, sec. 6.5.1 <https://tools.ietf.org/html/rfc7540#section-6.5.1>`_ for details.\ntype Http2ProtocolOptions_SettingsParameter struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The 16 bit parameter identifier.\n\tIdentifier *wrapperspb.UInt32Value `protobuf:\"bytes,1,opt,name=identifier,proto3\" json:\"identifier,omitempty\"`\n\t// The 32 bit parameter value.\n\tValue         *wrapperspb.UInt32Value `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Http2ProtocolOptions_SettingsParameter) Reset() {\n\t*x = Http2ProtocolOptions_SettingsParameter{}\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[17]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Http2ProtocolOptions_SettingsParameter) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Http2ProtocolOptions_SettingsParameter) ProtoMessage() {}\n\nfunc (x *Http2ProtocolOptions_SettingsParameter) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_protocol_proto_msgTypes[17]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Http2ProtocolOptions_SettingsParameter.ProtoReflect.Descriptor instead.\nfunc (*Http2ProtocolOptions_SettingsParameter) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescGZIP(), []int{8, 0}\n}\n\nfunc (x *Http2ProtocolOptions_SettingsParameter) GetIdentifier() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.Identifier\n\t}\n\treturn nil\n}\n\nfunc (x *Http2ProtocolOptions_SettingsParameter) GetValue() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nvar File_envoy_config_core_v3_protocol_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_protocol_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"#envoy/config/core/v3/protocol.proto\\x12\\x14envoy.config.core.v3\\x1a$envoy/config/core/v3/extension.proto\\x1a\\\"envoy/type/matcher/v3/string.proto\\x1a\\x1benvoy/type/v3/percent.proto\\x1a\\x1egoogle/protobuf/duration.proto\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a\\x1fxds/annotations/v3/status.proto\\x1a#envoy/annotations/deprecation.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"A\\n\" +\n\t\"\\x12TcpProtocolOptions:+\\x9aň\\x1e&\\n\" +\n\t\"$envoy.api.v2.core.TcpProtocolOptions\\\"\\xab\\x01\\n\" +\n\t\"\\x15QuicKeepAliveSettings\\x12<\\n\" +\n\t\"\\fmax_interval\\x18\\x01 \\x01(\\v2\\x19.google.protobuf.DurationR\\vmaxInterval\\x12T\\n\" +\n\t\"\\x10initial_interval\\x18\\x02 \\x01(\\v2\\x19.google.protobuf.DurationB\\x0e\\xfaB\\v\\xaa\\x01\\b\\\"\\x002\\x04\\x10\\xc0\\x84=R\\x0finitialInterval\\\"\\xc7\\v\\n\" +\n\t\"\\x13QuicProtocolOptions\\x12[\\n\" +\n\t\"\\x16max_concurrent_streams\\x18\\x01 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\a\\xfaB\\x04*\\x02(\\x01R\\x14maxConcurrentStreams\\x12g\\n\" +\n\t\"\\x1ainitial_stream_window_size\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\f\\xfaB\\t*\\a\\x18\\x80\\x80\\x80\\b(\\x01R\\x17initialStreamWindowSize\\x12o\\n\" +\n\t\"\\x1einitial_connection_window_size\\x18\\x03 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\f\\xfaB\\t*\\a\\x18\\x80\\x80\\x80\\f(\\x01R\\x1binitialConnectionWindowSize\\x12z\\n\" +\n\t\"&num_timeouts_to_trigger_port_migration\\x18\\x04 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\t\\xfaB\\x06*\\x04\\x18\\x05(\\x00R!numTimeoutsToTriggerPortMigration\\x12^\\n\" +\n\t\"\\x14connection_keepalive\\x18\\x05 \\x01(\\v2+.envoy.config.core.v3.QuicKeepAliveSettingsR\\x13connectionKeepalive\\x12-\\n\" +\n\t\"\\x12connection_options\\x18\\x06 \\x01(\\tR\\x11connectionOptions\\x12:\\n\" +\n\t\"\\x19client_connection_options\\x18\\a \\x01(\\tR\\x17clientConnectionOptions\\x12W\\n\" +\n\t\"\\x14idle_network_timeout\\x18\\b \\x01(\\v2\\x19.google.protobuf.DurationB\\n\" +\n\t\"\\xfaB\\a\\xaa\\x01\\x042\\x02\\b\\x01R\\x12idleNetworkTimeout\\x12H\\n\" +\n\t\"\\x11max_packet_length\\x18\\t \\x01(\\v2\\x1c.google.protobuf.UInt64ValueR\\x0fmaxPacketLength\\x12\\\\\\n\" +\n\t\"\\x14client_packet_writer\\x18\\n\" +\n\t\" \\x01(\\v2*.envoy.config.core.v3.TypedExtensionConfigR\\x12clientPacketWriter\\x12x\\n\" +\n\t\"\\x14connection_migration\\x18\\v \\x01(\\v2E.envoy.config.core.v3.QuicProtocolOptions.ConnectionMigrationSettingsR\\x13connectionMigration\\x1a\\xb6\\x03\\n\" +\n\t\"\\x1bConnectionMigrationSettings\\x12\\x9d\\x01\\n\" +\n\t\"\\x18migrate_idle_connections\\x18\\x01 \\x01(\\v2c.envoy.config.core.v3.QuicProtocolOptions.ConnectionMigrationSettings.MigrateIdleConnectionSettingsR\\x16migrateIdleConnections\\x12j\\n\" +\n\t\"\\x1fmax_time_on_non_default_network\\x18\\x02 \\x01(\\v2\\x19.google.protobuf.DurationB\\n\" +\n\t\"\\xfaB\\a\\xaa\\x01\\x042\\x02\\b\\x01R\\x1amaxTimeOnNonDefaultNetwork\\x1a\\x8a\\x01\\n\" +\n\t\"\\x1dMigrateIdleConnectionSettings\\x12i\\n\" +\n\t\"\\x1emax_idle_time_before_migration\\x18\\x01 \\x01(\\v2\\x19.google.protobuf.DurationB\\n\" +\n\t\"\\xfaB\\a\\xaa\\x01\\x042\\x02\\b\\x01R\\x1amaxIdleTimeBeforeMigration\\\"\\xe4\\x01\\n\" +\n\t\"\\x1bUpstreamHttpProtocolOptions\\x12\\x19\\n\" +\n\t\"\\bauto_sni\\x18\\x01 \\x01(\\bR\\aautoSni\\x12.\\n\" +\n\t\"\\x13auto_san_validation\\x18\\x02 \\x01(\\bR\\x11autoSanValidation\\x12D\\n\" +\n\t\"\\x18override_auto_sni_header\\x18\\x03 \\x01(\\tB\\v\\xfaB\\br\\x06\\xd0\\x01\\x01\\xc0\\x01\\x01R\\x15overrideAutoSniHeader:4\\x9aň\\x1e/\\n\" +\n\t\"-envoy.api.v2.core.UpstreamHttpProtocolOptions\\\"\\x86\\x04\\n\" +\n\t\"\\x1eAlternateProtocolsCacheOptions\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x12F\\n\" +\n\t\"\\vmax_entries\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\a\\xfaB\\x04*\\x02 \\x00R\\n\" +\n\t\"maxEntries\\x12_\\n\" +\n\t\"\\x16key_value_store_config\\x18\\x03 \\x01(\\v2*.envoy.config.core.v3.TypedExtensionConfigR\\x13keyValueStoreConfig\\x12\\x84\\x01\\n\" +\n\t\"\\x14prepopulated_entries\\x18\\x04 \\x03(\\v2Q.envoy.config.core.v3.AlternateProtocolsCacheOptions.AlternateProtocolsCacheEntryR\\x13prepopulatedEntries\\x12-\\n\" +\n\t\"\\x12canonical_suffixes\\x18\\x05 \\x03(\\tR\\x11canonicalSuffixes\\x1ah\\n\" +\n\t\"\\x1cAlternateProtocolsCacheEntry\\x12'\\n\" +\n\t\"\\bhostname\\x18\\x01 \\x01(\\tB\\v\\xfaB\\br\\x06\\xd0\\x01\\x01\\xc0\\x01\\x01R\\bhostname\\x12\\x1f\\n\" +\n\t\"\\x04port\\x18\\x02 \\x01(\\rB\\v\\xfaB\\b*\\x06\\x10\\xff\\xff\\x03 \\x00R\\x04port\\\"\\x90\\x06\\n\" +\n\t\"\\x13HttpProtocolOptions\\x12<\\n\" +\n\t\"\\fidle_timeout\\x18\\x01 \\x01(\\v2\\x19.google.protobuf.DurationR\\vidleTimeout\\x12Q\\n\" +\n\t\"\\x17max_connection_duration\\x18\\x03 \\x01(\\v2\\x19.google.protobuf.DurationR\\x15maxConnectionDuration\\x12Q\\n\" +\n\t\"\\x11max_headers_count\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\a\\xfaB\\x04*\\x02(\\x01R\\x0fmaxHeadersCount\\x12_\\n\" +\n\t\"\\x17max_response_headers_kb\\x18\\a \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\n\" +\n\t\"\\xfaB\\a*\\x05\\x18\\x80@ \\x00R\\x14maxResponseHeadersKb\\x12I\\n\" +\n\t\"\\x13max_stream_duration\\x18\\x04 \\x01(\\v2\\x19.google.protobuf.DurationR\\x11maxStreamDuration\\x12\\x8d\\x01\\n\" +\n\t\"\\x1fheaders_with_underscores_action\\x18\\x05 \\x01(\\x0e2F.envoy.config.core.v3.HttpProtocolOptions.HeadersWithUnderscoresActionR\\x1cheadersWithUnderscoresAction\\x12[\\n\" +\n\t\"\\x1bmax_requests_per_connection\\x18\\x06 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR\\x18maxRequestsPerConnection\\\"N\\n\" +\n\t\"\\x1cHeadersWithUnderscoresAction\\x12\\t\\n\" +\n\t\"\\x05ALLOW\\x10\\x00\\x12\\x12\\n\" +\n\t\"\\x0eREJECT_REQUEST\\x10\\x01\\x12\\x0f\\n\" +\n\t\"\\vDROP_HEADER\\x10\\x02:,\\x9aň\\x1e'\\n\" +\n\t\"%envoy.api.v2.core.HttpProtocolOptions\\\"\\xf1\\t\\n\" +\n\t\"\\x14Http1ProtocolOptions\\x12H\\n\" +\n\t\"\\x12allow_absolute_url\\x18\\x01 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\x10allowAbsoluteUrl\\x12$\\n\" +\n\t\"\\x0eaccept_http_10\\x18\\x02 \\x01(\\bR\\facceptHttp10\\x126\\n\" +\n\t\"\\x18default_host_for_http_10\\x18\\x03 \\x01(\\tR\\x14defaultHostForHttp10\\x12f\\n\" +\n\t\"\\x11header_key_format\\x18\\x04 \\x01(\\v2:.envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormatR\\x0fheaderKeyFormat\\x12'\\n\" +\n\t\"\\x0fenable_trailers\\x18\\x05 \\x01(\\bR\\x0eenableTrailers\\x120\\n\" +\n\t\"\\x14allow_chunked_length\\x18\\x06 \\x01(\\bR\\x12allowChunkedLength\\x12z\\n\" +\n\t\"-override_stream_error_on_invalid_http_message\\x18\\a \\x01(\\v2\\x1a.google.protobuf.BoolValueR'overrideStreamErrorOnInvalidHttpMessage\\x127\\n\" +\n\t\"\\x18send_fully_qualified_url\\x18\\b \\x01(\\bR\\x15sendFullyQualifiedUrl\\x12Q\\n\" +\n\t\"\\x10use_balsa_parser\\x18\\t \\x01(\\v2\\x1a.google.protobuf.BoolValueB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x0euseBalsaParser\\x12:\\n\" +\n\t\"\\x14allow_custom_methods\\x18\\n\" +\n\t\" \\x01(\\bB\\b\\xd2Ƥ\\xe1\\x06\\x02\\b\\x01R\\x12allowCustomMethods\\x12Y\\n\" +\n\t\"\\x16ignore_http_11_upgrade\\x18\\v \\x03(\\v2$.envoy.type.matcher.v3.StringMatcherR\\x13ignoreHttp11Upgrade\\x1a\\x9f\\x03\\n\" +\n\t\"\\x0fHeaderKeyFormat\\x12x\\n\" +\n\t\"\\x11proper_case_words\\x18\\x01 \\x01(\\v2J.envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormat.ProperCaseWordsH\\x00R\\x0fproperCaseWords\\x12[\\n\" +\n\t\"\\x12stateful_formatter\\x18\\b \\x01(\\v2*.envoy.config.core.v3.TypedExtensionConfigH\\x00R\\x11statefulFormatter\\x1a`\\n\" +\n\t\"\\x0fProperCaseWords:M\\x9aň\\x1eH\\n\" +\n\t\"Fenvoy.api.v2.core.Http1ProtocolOptions.HeaderKeyFormat.ProperCaseWords:=\\x9aň\\x1e8\\n\" +\n\t\"6envoy.api.v2.core.Http1ProtocolOptions.HeaderKeyFormatB\\x14\\n\" +\n\t\"\\rheader_format\\x12\\x03\\xf8B\\x01:-\\x9aň\\x1e(\\n\" +\n\t\"&envoy.api.v2.core.Http1ProtocolOptions\\\"\\xc1\\x02\\n\" +\n\t\"\\x11KeepaliveSettings\\x12C\\n\" +\n\t\"\\binterval\\x18\\x01 \\x01(\\v2\\x19.google.protobuf.DurationB\\f\\xfaB\\t\\xaa\\x01\\x062\\x04\\x10\\xc0\\x84=R\\binterval\\x12C\\n\" +\n\t\"\\atimeout\\x18\\x02 \\x01(\\v2\\x19.google.protobuf.DurationB\\x0e\\xfaB\\v\\xaa\\x01\\b\\b\\x012\\x04\\x10\\xc0\\x84=R\\atimeout\\x12?\\n\" +\n\t\"\\x0finterval_jitter\\x18\\x03 \\x01(\\v2\\x16.envoy.type.v3.PercentR\\x0eintervalJitter\\x12a\\n\" +\n\t\"\\x18connection_idle_interval\\x18\\x04 \\x01(\\v2\\x19.google.protobuf.DurationB\\f\\xfaB\\t\\xaa\\x01\\x062\\x04\\x10\\xc0\\x84=R\\x16connectionIdleInterval\\\"\\xee\\x0f\\n\" +\n\t\"\\x14Http2ProtocolOptions\\x12F\\n\" +\n\t\"\\x10hpack_table_size\\x18\\x01 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR\\x0ehpackTableSize\\x12a\\n\" +\n\t\"\\x16max_concurrent_streams\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\r\\xfaB\\n\" +\n\t\"*\\b\\x18\\xff\\xff\\xff\\xff\\a(\\x01R\\x14maxConcurrentStreams\\x12j\\n\" +\n\t\"\\x1ainitial_stream_window_size\\x18\\x03 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\x0f\\xfaB\\f*\\n\" +\n\t\"\\x18\\xff\\xff\\xff\\xff\\a(\\xff\\xff\\x03R\\x17initialStreamWindowSize\\x12r\\n\" +\n\t\"\\x1einitial_connection_window_size\\x18\\x04 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\x0f\\xfaB\\f*\\n\" +\n\t\"\\x18\\xff\\xff\\xff\\xff\\a(\\xff\\xff\\x03R\\x1binitialConnectionWindowSize\\x12#\\n\" +\n\t\"\\rallow_connect\\x18\\x05 \\x01(\\bR\\fallowConnect\\x12%\\n\" +\n\t\"\\x0eallow_metadata\\x18\\x06 \\x01(\\bR\\rallowMetadata\\x12U\\n\" +\n\t\"\\x13max_outbound_frames\\x18\\a \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\a\\xfaB\\x04*\\x02(\\x01R\\x11maxOutboundFrames\\x12d\\n\" +\n\t\"\\x1bmax_outbound_control_frames\\x18\\b \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\a\\xfaB\\x04*\\x02(\\x01R\\x18maxOutboundControlFrames\\x12\\x84\\x01\\n\" +\n\t\"1max_consecutive_inbound_frames_with_empty_payload\\x18\\t \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR+maxConsecutiveInboundFramesWithEmptyPayload\\x12o\\n\" +\n\t\"&max_inbound_priority_frames_per_stream\\x18\\n\" +\n\t\" \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR!maxInboundPriorityFramesPerStream\\x12\\x91\\x01\\n\" +\n\t\"4max_inbound_window_update_frames_per_data_frame_sent\\x18\\v \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\a\\xfaB\\x04*\\x02(\\x01R,maxInboundWindowUpdateFramesPerDataFrameSent\\x12^\\n\" +\n\t\"&stream_error_on_invalid_http_messaging\\x18\\f \\x01(\\bB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R!streamErrorOnInvalidHttpMessaging\\x12z\\n\" +\n\t\"-override_stream_error_on_invalid_http_message\\x18\\x0e \\x01(\\v2\\x1a.google.protobuf.BoolValueR'overrideStreamErrorOnInvalidHttpMessage\\x12z\\n\" +\n\t\"\\x1acustom_settings_parameters\\x18\\r \\x03(\\v2<.envoy.config.core.v3.Http2ProtocolOptions.SettingsParameterR\\x18customSettingsParameters\\x12Z\\n\" +\n\t\"\\x14connection_keepalive\\x18\\x0f \\x01(\\v2'.envoy.config.core.v3.KeepaliveSettingsR\\x13connectionKeepalive\\x12P\\n\" +\n\t\"\\x11use_oghttp2_codec\\x18\\x10 \\x01(\\v2\\x1a.google.protobuf.BoolValueB\\b\\xd2Ƥ\\xe1\\x06\\x02\\b\\x01R\\x0fuseOghttp2Codec\\x12H\\n\" +\n\t\"\\x11max_metadata_size\\x18\\x11 \\x01(\\v2\\x1c.google.protobuf.UInt64ValueR\\x0fmaxMetadataSize\\x12R\\n\" +\n\t\"\\x17enable_huffman_encoding\\x18\\x12 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\x15enableHuffmanEncoding\\x1a\\xe2\\x01\\n\" +\n\t\"\\x11SettingsParameter\\x12N\\n\" +\n\t\"\\n\" +\n\t\"identifier\\x18\\x01 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\x10\\xfaB\\r\\x8a\\x01\\x02\\x10\\x01*\\x06\\x18\\xff\\xff\\x03(\\x00R\\n\" +\n\t\"identifier\\x12<\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\x05value:?\\x9aň\\x1e:\\n\" +\n\t\"8envoy.api.v2.core.Http2ProtocolOptions.SettingsParameter:-\\x9aň\\x1e(\\n\" +\n\t\"&envoy.api.v2.core.Http2ProtocolOptions\\\"\\xa5\\x01\\n\" +\n\t\"\\x13GrpcProtocolOptions\\x12`\\n\" +\n\t\"\\x16http2_protocol_options\\x18\\x01 \\x01(\\v2*.envoy.config.core.v3.Http2ProtocolOptionsR\\x14http2ProtocolOptions:,\\x9aň\\x1e'\\n\" +\n\t\"%envoy.api.v2.core.GrpcProtocolOptions\\\"\\xda\\x03\\n\" +\n\t\"\\x14Http3ProtocolOptions\\x12]\\n\" +\n\t\"\\x15quic_protocol_options\\x18\\x01 \\x01(\\v2).envoy.config.core.v3.QuicProtocolOptionsR\\x13quicProtocolOptions\\x12z\\n\" +\n\t\"-override_stream_error_on_invalid_http_message\\x18\\x02 \\x01(\\v2\\x1a.google.protobuf.BoolValueR'overrideStreamErrorOnInvalidHttpMessage\\x12>\\n\" +\n\t\"\\x16allow_extended_connect\\x18\\x05 \\x01(\\bB\\b\\xd2Ƥ\\xe1\\x06\\x02\\b\\x01R\\x14allowExtendedConnect\\x12%\\n\" +\n\t\"\\x0eallow_metadata\\x18\\x06 \\x01(\\bR\\rallowMetadata\\x12#\\n\" +\n\t\"\\rdisable_qpack\\x18\\a \\x01(\\bR\\fdisableQpack\\x12[\\n\" +\n\t\"+disable_connection_flow_control_for_streams\\x18\\b \\x01(\\bR&disableConnectionFlowControlForStreams\\\"\\x9b\\x01\\n\" +\n\t\"\\x1aSchemeHeaderTransformation\\x12D\\n\" +\n\t\"\\x13scheme_to_overwrite\\x18\\x01 \\x01(\\tB\\x12\\xfaB\\x0fr\\rR\\x04httpR\\x05httpsH\\x00R\\x11schemeToOverwrite\\x12%\\n\" +\n\t\"\\x0ematch_upstream\\x18\\x02 \\x01(\\bR\\rmatchUpstreamB\\x10\\n\" +\n\t\"\\x0etransformationB\\x81\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\rProtocolProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_protocol_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_protocol_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_protocol_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_protocol_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_protocol_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_protocol_proto_rawDesc), len(file_envoy_config_core_v3_protocol_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_protocol_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_protocol_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_envoy_config_core_v3_protocol_proto_msgTypes = make([]protoimpl.MessageInfo, 18)\nvar file_envoy_config_core_v3_protocol_proto_goTypes = []any{\n\t(HttpProtocolOptions_HeadersWithUnderscoresAction)(0),   // 0: envoy.config.core.v3.HttpProtocolOptions.HeadersWithUnderscoresAction\n\t(*TcpProtocolOptions)(nil),                              // 1: envoy.config.core.v3.TcpProtocolOptions\n\t(*QuicKeepAliveSettings)(nil),                           // 2: envoy.config.core.v3.QuicKeepAliveSettings\n\t(*QuicProtocolOptions)(nil),                             // 3: envoy.config.core.v3.QuicProtocolOptions\n\t(*UpstreamHttpProtocolOptions)(nil),                     // 4: envoy.config.core.v3.UpstreamHttpProtocolOptions\n\t(*AlternateProtocolsCacheOptions)(nil),                  // 5: envoy.config.core.v3.AlternateProtocolsCacheOptions\n\t(*HttpProtocolOptions)(nil),                             // 6: envoy.config.core.v3.HttpProtocolOptions\n\t(*Http1ProtocolOptions)(nil),                            // 7: envoy.config.core.v3.Http1ProtocolOptions\n\t(*KeepaliveSettings)(nil),                               // 8: envoy.config.core.v3.KeepaliveSettings\n\t(*Http2ProtocolOptions)(nil),                            // 9: envoy.config.core.v3.Http2ProtocolOptions\n\t(*GrpcProtocolOptions)(nil),                             // 10: envoy.config.core.v3.GrpcProtocolOptions\n\t(*Http3ProtocolOptions)(nil),                            // 11: envoy.config.core.v3.Http3ProtocolOptions\n\t(*SchemeHeaderTransformation)(nil),                      // 12: envoy.config.core.v3.SchemeHeaderTransformation\n\t(*QuicProtocolOptions_ConnectionMigrationSettings)(nil), // 13: envoy.config.core.v3.QuicProtocolOptions.ConnectionMigrationSettings\n\t(*QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings)(nil), // 14: envoy.config.core.v3.QuicProtocolOptions.ConnectionMigrationSettings.MigrateIdleConnectionSettings\n\t(*AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry)(nil),                   // 15: envoy.config.core.v3.AlternateProtocolsCacheOptions.AlternateProtocolsCacheEntry\n\t(*Http1ProtocolOptions_HeaderKeyFormat)(nil),                                          // 16: envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormat\n\t(*Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords)(nil),                          // 17: envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormat.ProperCaseWords\n\t(*Http2ProtocolOptions_SettingsParameter)(nil),                                        // 18: envoy.config.core.v3.Http2ProtocolOptions.SettingsParameter\n\t(*durationpb.Duration)(nil),                                                           // 19: google.protobuf.Duration\n\t(*wrapperspb.UInt32Value)(nil),                                                        // 20: google.protobuf.UInt32Value\n\t(*wrapperspb.UInt64Value)(nil),                                                        // 21: google.protobuf.UInt64Value\n\t(*TypedExtensionConfig)(nil),                                                          // 22: envoy.config.core.v3.TypedExtensionConfig\n\t(*wrapperspb.BoolValue)(nil),                                                          // 23: google.protobuf.BoolValue\n\t(*v3.StringMatcher)(nil),                                                              // 24: envoy.type.matcher.v3.StringMatcher\n\t(*v31.Percent)(nil),                                                                   // 25: envoy.type.v3.Percent\n}\nvar file_envoy_config_core_v3_protocol_proto_depIdxs = []int32{\n\t19, // 0: envoy.config.core.v3.QuicKeepAliveSettings.max_interval:type_name -> google.protobuf.Duration\n\t19, // 1: envoy.config.core.v3.QuicKeepAliveSettings.initial_interval:type_name -> google.protobuf.Duration\n\t20, // 2: envoy.config.core.v3.QuicProtocolOptions.max_concurrent_streams:type_name -> google.protobuf.UInt32Value\n\t20, // 3: envoy.config.core.v3.QuicProtocolOptions.initial_stream_window_size:type_name -> google.protobuf.UInt32Value\n\t20, // 4: envoy.config.core.v3.QuicProtocolOptions.initial_connection_window_size:type_name -> google.protobuf.UInt32Value\n\t20, // 5: envoy.config.core.v3.QuicProtocolOptions.num_timeouts_to_trigger_port_migration:type_name -> google.protobuf.UInt32Value\n\t2,  // 6: envoy.config.core.v3.QuicProtocolOptions.connection_keepalive:type_name -> envoy.config.core.v3.QuicKeepAliveSettings\n\t19, // 7: envoy.config.core.v3.QuicProtocolOptions.idle_network_timeout:type_name -> google.protobuf.Duration\n\t21, // 8: envoy.config.core.v3.QuicProtocolOptions.max_packet_length:type_name -> google.protobuf.UInt64Value\n\t22, // 9: envoy.config.core.v3.QuicProtocolOptions.client_packet_writer:type_name -> envoy.config.core.v3.TypedExtensionConfig\n\t13, // 10: envoy.config.core.v3.QuicProtocolOptions.connection_migration:type_name -> envoy.config.core.v3.QuicProtocolOptions.ConnectionMigrationSettings\n\t20, // 11: envoy.config.core.v3.AlternateProtocolsCacheOptions.max_entries:type_name -> google.protobuf.UInt32Value\n\t22, // 12: envoy.config.core.v3.AlternateProtocolsCacheOptions.key_value_store_config:type_name -> envoy.config.core.v3.TypedExtensionConfig\n\t15, // 13: envoy.config.core.v3.AlternateProtocolsCacheOptions.prepopulated_entries:type_name -> envoy.config.core.v3.AlternateProtocolsCacheOptions.AlternateProtocolsCacheEntry\n\t19, // 14: envoy.config.core.v3.HttpProtocolOptions.idle_timeout:type_name -> google.protobuf.Duration\n\t19, // 15: envoy.config.core.v3.HttpProtocolOptions.max_connection_duration:type_name -> google.protobuf.Duration\n\t20, // 16: envoy.config.core.v3.HttpProtocolOptions.max_headers_count:type_name -> google.protobuf.UInt32Value\n\t20, // 17: envoy.config.core.v3.HttpProtocolOptions.max_response_headers_kb:type_name -> google.protobuf.UInt32Value\n\t19, // 18: envoy.config.core.v3.HttpProtocolOptions.max_stream_duration:type_name -> google.protobuf.Duration\n\t0,  // 19: envoy.config.core.v3.HttpProtocolOptions.headers_with_underscores_action:type_name -> envoy.config.core.v3.HttpProtocolOptions.HeadersWithUnderscoresAction\n\t20, // 20: envoy.config.core.v3.HttpProtocolOptions.max_requests_per_connection:type_name -> google.protobuf.UInt32Value\n\t23, // 21: envoy.config.core.v3.Http1ProtocolOptions.allow_absolute_url:type_name -> google.protobuf.BoolValue\n\t16, // 22: envoy.config.core.v3.Http1ProtocolOptions.header_key_format:type_name -> envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormat\n\t23, // 23: envoy.config.core.v3.Http1ProtocolOptions.override_stream_error_on_invalid_http_message:type_name -> google.protobuf.BoolValue\n\t23, // 24: envoy.config.core.v3.Http1ProtocolOptions.use_balsa_parser:type_name -> google.protobuf.BoolValue\n\t24, // 25: envoy.config.core.v3.Http1ProtocolOptions.ignore_http_11_upgrade:type_name -> envoy.type.matcher.v3.StringMatcher\n\t19, // 26: envoy.config.core.v3.KeepaliveSettings.interval:type_name -> google.protobuf.Duration\n\t19, // 27: envoy.config.core.v3.KeepaliveSettings.timeout:type_name -> google.protobuf.Duration\n\t25, // 28: envoy.config.core.v3.KeepaliveSettings.interval_jitter:type_name -> envoy.type.v3.Percent\n\t19, // 29: envoy.config.core.v3.KeepaliveSettings.connection_idle_interval:type_name -> google.protobuf.Duration\n\t20, // 30: envoy.config.core.v3.Http2ProtocolOptions.hpack_table_size:type_name -> google.protobuf.UInt32Value\n\t20, // 31: envoy.config.core.v3.Http2ProtocolOptions.max_concurrent_streams:type_name -> google.protobuf.UInt32Value\n\t20, // 32: envoy.config.core.v3.Http2ProtocolOptions.initial_stream_window_size:type_name -> google.protobuf.UInt32Value\n\t20, // 33: envoy.config.core.v3.Http2ProtocolOptions.initial_connection_window_size:type_name -> google.protobuf.UInt32Value\n\t20, // 34: envoy.config.core.v3.Http2ProtocolOptions.max_outbound_frames:type_name -> google.protobuf.UInt32Value\n\t20, // 35: envoy.config.core.v3.Http2ProtocolOptions.max_outbound_control_frames:type_name -> google.protobuf.UInt32Value\n\t20, // 36: envoy.config.core.v3.Http2ProtocolOptions.max_consecutive_inbound_frames_with_empty_payload:type_name -> google.protobuf.UInt32Value\n\t20, // 37: envoy.config.core.v3.Http2ProtocolOptions.max_inbound_priority_frames_per_stream:type_name -> google.protobuf.UInt32Value\n\t20, // 38: envoy.config.core.v3.Http2ProtocolOptions.max_inbound_window_update_frames_per_data_frame_sent:type_name -> google.protobuf.UInt32Value\n\t23, // 39: envoy.config.core.v3.Http2ProtocolOptions.override_stream_error_on_invalid_http_message:type_name -> google.protobuf.BoolValue\n\t18, // 40: envoy.config.core.v3.Http2ProtocolOptions.custom_settings_parameters:type_name -> envoy.config.core.v3.Http2ProtocolOptions.SettingsParameter\n\t8,  // 41: envoy.config.core.v3.Http2ProtocolOptions.connection_keepalive:type_name -> envoy.config.core.v3.KeepaliveSettings\n\t23, // 42: envoy.config.core.v3.Http2ProtocolOptions.use_oghttp2_codec:type_name -> google.protobuf.BoolValue\n\t21, // 43: envoy.config.core.v3.Http2ProtocolOptions.max_metadata_size:type_name -> google.protobuf.UInt64Value\n\t23, // 44: envoy.config.core.v3.Http2ProtocolOptions.enable_huffman_encoding:type_name -> google.protobuf.BoolValue\n\t9,  // 45: envoy.config.core.v3.GrpcProtocolOptions.http2_protocol_options:type_name -> envoy.config.core.v3.Http2ProtocolOptions\n\t3,  // 46: envoy.config.core.v3.Http3ProtocolOptions.quic_protocol_options:type_name -> envoy.config.core.v3.QuicProtocolOptions\n\t23, // 47: envoy.config.core.v3.Http3ProtocolOptions.override_stream_error_on_invalid_http_message:type_name -> google.protobuf.BoolValue\n\t14, // 48: envoy.config.core.v3.QuicProtocolOptions.ConnectionMigrationSettings.migrate_idle_connections:type_name -> envoy.config.core.v3.QuicProtocolOptions.ConnectionMigrationSettings.MigrateIdleConnectionSettings\n\t19, // 49: envoy.config.core.v3.QuicProtocolOptions.ConnectionMigrationSettings.max_time_on_non_default_network:type_name -> google.protobuf.Duration\n\t19, // 50: envoy.config.core.v3.QuicProtocolOptions.ConnectionMigrationSettings.MigrateIdleConnectionSettings.max_idle_time_before_migration:type_name -> google.protobuf.Duration\n\t17, // 51: envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormat.proper_case_words:type_name -> envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormat.ProperCaseWords\n\t22, // 52: envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormat.stateful_formatter:type_name -> envoy.config.core.v3.TypedExtensionConfig\n\t20, // 53: envoy.config.core.v3.Http2ProtocolOptions.SettingsParameter.identifier:type_name -> google.protobuf.UInt32Value\n\t20, // 54: envoy.config.core.v3.Http2ProtocolOptions.SettingsParameter.value:type_name -> google.protobuf.UInt32Value\n\t55, // [55:55] is the sub-list for method output_type\n\t55, // [55:55] is the sub-list for method input_type\n\t55, // [55:55] is the sub-list for extension type_name\n\t55, // [55:55] is the sub-list for extension extendee\n\t0,  // [0:55] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_protocol_proto_init() }\nfunc file_envoy_config_core_v3_protocol_proto_init() {\n\tif File_envoy_config_core_v3_protocol_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_core_v3_extension_proto_init()\n\tfile_envoy_config_core_v3_protocol_proto_msgTypes[11].OneofWrappers = []any{\n\t\t(*SchemeHeaderTransformation_SchemeToOverwrite)(nil),\n\t}\n\tfile_envoy_config_core_v3_protocol_proto_msgTypes[15].OneofWrappers = []any{\n\t\t(*Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_)(nil),\n\t\t(*Http1ProtocolOptions_HeaderKeyFormat_StatefulFormatter)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_protocol_proto_rawDesc), len(file_envoy_config_core_v3_protocol_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   18,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_protocol_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_protocol_proto_depIdxs,\n\t\tEnumInfos:         file_envoy_config_core_v3_protocol_proto_enumTypes,\n\t\tMessageInfos:      file_envoy_config_core_v3_protocol_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_protocol_proto = out.File\n\tfile_envoy_config_core_v3_protocol_proto_goTypes = nil\n\tfile_envoy_config_core_v3_protocol_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/protocol.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/protocol.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on TcpProtocolOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *TcpProtocolOptions) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on TcpProtocolOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// TcpProtocolOptionsMultiError, or nil if none found.\nfunc (m *TcpProtocolOptions) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *TcpProtocolOptions) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn TcpProtocolOptionsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// TcpProtocolOptionsMultiError is an error wrapping multiple validation errors\n// returned by TcpProtocolOptions.ValidateAll() if the designated constraints\n// aren't met.\ntype TcpProtocolOptionsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m TcpProtocolOptionsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m TcpProtocolOptionsMultiError) AllErrors() []error { return m }\n\n// TcpProtocolOptionsValidationError is the validation error returned by\n// TcpProtocolOptions.Validate if the designated constraints aren't met.\ntype TcpProtocolOptionsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e TcpProtocolOptionsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e TcpProtocolOptionsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e TcpProtocolOptionsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e TcpProtocolOptionsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e TcpProtocolOptionsValidationError) ErrorName() string {\n\treturn \"TcpProtocolOptionsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e TcpProtocolOptionsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sTcpProtocolOptions.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = TcpProtocolOptionsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = TcpProtocolOptionsValidationError{}\n\n// Validate checks the field values on QuicKeepAliveSettings with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *QuicKeepAliveSettings) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on QuicKeepAliveSettings with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// QuicKeepAliveSettingsMultiError, or nil if none found.\nfunc (m *QuicKeepAliveSettings) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *QuicKeepAliveSettings) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxInterval()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, QuicKeepAliveSettingsValidationError{\n\t\t\t\t\tfield:  \"MaxInterval\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, QuicKeepAliveSettingsValidationError{\n\t\t\t\t\tfield:  \"MaxInterval\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxInterval()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn QuicKeepAliveSettingsValidationError{\n\t\t\t\tfield:  \"MaxInterval\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif d := m.GetInitialInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = QuicKeepAliveSettingsValidationError{\n\t\t\t\tfield:  \"InitialInterval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tlte := time.Duration(0*time.Second + 0*time.Nanosecond)\n\t\t\tgte := time.Duration(0*time.Second + 1000000*time.Nanosecond)\n\n\t\t\tif dur > lte && dur < gte {\n\t\t\t\terr := QuicKeepAliveSettingsValidationError{\n\t\t\t\t\tfield:  \"InitialInterval\",\n\t\t\t\t\treason: \"value must be outside range (0s, 1ms)\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn QuicKeepAliveSettingsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// QuicKeepAliveSettingsMultiError is an error wrapping multiple validation\n// errors returned by QuicKeepAliveSettings.ValidateAll() if the designated\n// constraints aren't met.\ntype QuicKeepAliveSettingsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m QuicKeepAliveSettingsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m QuicKeepAliveSettingsMultiError) AllErrors() []error { return m }\n\n// QuicKeepAliveSettingsValidationError is the validation error returned by\n// QuicKeepAliveSettings.Validate if the designated constraints aren't met.\ntype QuicKeepAliveSettingsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e QuicKeepAliveSettingsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e QuicKeepAliveSettingsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e QuicKeepAliveSettingsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e QuicKeepAliveSettingsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e QuicKeepAliveSettingsValidationError) ErrorName() string {\n\treturn \"QuicKeepAliveSettingsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e QuicKeepAliveSettingsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sQuicKeepAliveSettings.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = QuicKeepAliveSettingsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = QuicKeepAliveSettingsValidationError{}\n\n// Validate checks the field values on QuicProtocolOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *QuicProtocolOptions) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on QuicProtocolOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// QuicProtocolOptionsMultiError, or nil if none found.\nfunc (m *QuicProtocolOptions) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *QuicProtocolOptions) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif wrapper := m.GetMaxConcurrentStreams(); wrapper != nil {\n\n\t\tif wrapper.GetValue() < 1 {\n\t\t\terr := QuicProtocolOptionsValidationError{\n\t\t\t\tfield:  \"MaxConcurrentStreams\",\n\t\t\t\treason: \"value must be greater than or equal to 1\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif wrapper := m.GetInitialStreamWindowSize(); wrapper != nil {\n\n\t\tif val := wrapper.GetValue(); val < 1 || val > 16777216 {\n\t\t\terr := QuicProtocolOptionsValidationError{\n\t\t\t\tfield:  \"InitialStreamWindowSize\",\n\t\t\t\treason: \"value must be inside range [1, 16777216]\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif wrapper := m.GetInitialConnectionWindowSize(); wrapper != nil {\n\n\t\tif val := wrapper.GetValue(); val < 1 || val > 25165824 {\n\t\t\terr := QuicProtocolOptionsValidationError{\n\t\t\t\tfield:  \"InitialConnectionWindowSize\",\n\t\t\t\treason: \"value must be inside range [1, 25165824]\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif wrapper := m.GetNumTimeoutsToTriggerPortMigration(); wrapper != nil {\n\n\t\tif val := wrapper.GetValue(); val < 0 || val > 5 {\n\t\t\terr := QuicProtocolOptionsValidationError{\n\t\t\t\tfield:  \"NumTimeoutsToTriggerPortMigration\",\n\t\t\t\treason: \"value must be inside range [0, 5]\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetConnectionKeepalive()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, QuicProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"ConnectionKeepalive\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, QuicProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"ConnectionKeepalive\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetConnectionKeepalive()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn QuicProtocolOptionsValidationError{\n\t\t\t\tfield:  \"ConnectionKeepalive\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for ConnectionOptions\n\n\t// no validation rules for ClientConnectionOptions\n\n\tif d := m.GetIdleNetworkTimeout(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = QuicProtocolOptionsValidationError{\n\t\t\t\tfield:  \"IdleNetworkTimeout\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgte := time.Duration(1*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur < gte {\n\t\t\t\terr := QuicProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"IdleNetworkTimeout\",\n\t\t\t\t\treason: \"value must be greater than or equal to 1s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxPacketLength()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, QuicProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"MaxPacketLength\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, QuicProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"MaxPacketLength\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxPacketLength()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn QuicProtocolOptionsValidationError{\n\t\t\t\tfield:  \"MaxPacketLength\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetClientPacketWriter()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, QuicProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"ClientPacketWriter\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, QuicProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"ClientPacketWriter\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetClientPacketWriter()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn QuicProtocolOptionsValidationError{\n\t\t\t\tfield:  \"ClientPacketWriter\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetConnectionMigration()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, QuicProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"ConnectionMigration\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, QuicProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"ConnectionMigration\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetConnectionMigration()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn QuicProtocolOptionsValidationError{\n\t\t\t\tfield:  \"ConnectionMigration\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn QuicProtocolOptionsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// QuicProtocolOptionsMultiError is an error wrapping multiple validation\n// errors returned by QuicProtocolOptions.ValidateAll() if the designated\n// constraints aren't met.\ntype QuicProtocolOptionsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m QuicProtocolOptionsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m QuicProtocolOptionsMultiError) AllErrors() []error { return m }\n\n// QuicProtocolOptionsValidationError is the validation error returned by\n// QuicProtocolOptions.Validate if the designated constraints aren't met.\ntype QuicProtocolOptionsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e QuicProtocolOptionsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e QuicProtocolOptionsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e QuicProtocolOptionsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e QuicProtocolOptionsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e QuicProtocolOptionsValidationError) ErrorName() string {\n\treturn \"QuicProtocolOptionsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e QuicProtocolOptionsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sQuicProtocolOptions.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = QuicProtocolOptionsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = QuicProtocolOptionsValidationError{}\n\n// Validate checks the field values on UpstreamHttpProtocolOptions with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *UpstreamHttpProtocolOptions) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on UpstreamHttpProtocolOptions with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// UpstreamHttpProtocolOptionsMultiError, or nil if none found.\nfunc (m *UpstreamHttpProtocolOptions) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *UpstreamHttpProtocolOptions) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for AutoSni\n\n\t// no validation rules for AutoSanValidation\n\n\tif m.GetOverrideAutoSniHeader() != \"\" {\n\n\t\tif !_UpstreamHttpProtocolOptions_OverrideAutoSniHeader_Pattern.MatchString(m.GetOverrideAutoSniHeader()) {\n\t\t\terr := UpstreamHttpProtocolOptionsValidationError{\n\t\t\t\tfield:  \"OverrideAutoSniHeader\",\n\t\t\t\treason: \"value does not match regex pattern \\\"^:?[0-9a-zA-Z!#$%&'*+-.^_|~`]+$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn UpstreamHttpProtocolOptionsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// UpstreamHttpProtocolOptionsMultiError is an error wrapping multiple\n// validation errors returned by UpstreamHttpProtocolOptions.ValidateAll() if\n// the designated constraints aren't met.\ntype UpstreamHttpProtocolOptionsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m UpstreamHttpProtocolOptionsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m UpstreamHttpProtocolOptionsMultiError) AllErrors() []error { return m }\n\n// UpstreamHttpProtocolOptionsValidationError is the validation error returned\n// by UpstreamHttpProtocolOptions.Validate if the designated constraints\n// aren't met.\ntype UpstreamHttpProtocolOptionsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e UpstreamHttpProtocolOptionsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e UpstreamHttpProtocolOptionsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e UpstreamHttpProtocolOptionsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e UpstreamHttpProtocolOptionsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e UpstreamHttpProtocolOptionsValidationError) ErrorName() string {\n\treturn \"UpstreamHttpProtocolOptionsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e UpstreamHttpProtocolOptionsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sUpstreamHttpProtocolOptions.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = UpstreamHttpProtocolOptionsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = UpstreamHttpProtocolOptionsValidationError{}\n\nvar _UpstreamHttpProtocolOptions_OverrideAutoSniHeader_Pattern = regexp.MustCompile(\"^:?[0-9a-zA-Z!#$%&'*+-.^_|~`]+$\")\n\n// Validate checks the field values on AlternateProtocolsCacheOptions with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *AlternateProtocolsCacheOptions) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on AlternateProtocolsCacheOptions with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// AlternateProtocolsCacheOptionsMultiError, or nil if none found.\nfunc (m *AlternateProtocolsCacheOptions) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *AlternateProtocolsCacheOptions) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := AlternateProtocolsCacheOptionsValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif wrapper := m.GetMaxEntries(); wrapper != nil {\n\n\t\tif wrapper.GetValue() <= 0 {\n\t\t\terr := AlternateProtocolsCacheOptionsValidationError{\n\t\t\t\tfield:  \"MaxEntries\",\n\t\t\t\treason: \"value must be greater than 0\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetKeyValueStoreConfig()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, AlternateProtocolsCacheOptionsValidationError{\n\t\t\t\t\tfield:  \"KeyValueStoreConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, AlternateProtocolsCacheOptionsValidationError{\n\t\t\t\t\tfield:  \"KeyValueStoreConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetKeyValueStoreConfig()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn AlternateProtocolsCacheOptionsValidationError{\n\t\t\t\tfield:  \"KeyValueStoreConfig\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetPrepopulatedEntries() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, AlternateProtocolsCacheOptionsValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"PrepopulatedEntries[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, AlternateProtocolsCacheOptionsValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"PrepopulatedEntries[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn AlternateProtocolsCacheOptionsValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"PrepopulatedEntries[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn AlternateProtocolsCacheOptionsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// AlternateProtocolsCacheOptionsMultiError is an error wrapping multiple\n// validation errors returned by AlternateProtocolsCacheOptions.ValidateAll()\n// if the designated constraints aren't met.\ntype AlternateProtocolsCacheOptionsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m AlternateProtocolsCacheOptionsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m AlternateProtocolsCacheOptionsMultiError) AllErrors() []error { return m }\n\n// AlternateProtocolsCacheOptionsValidationError is the validation error\n// returned by AlternateProtocolsCacheOptions.Validate if the designated\n// constraints aren't met.\ntype AlternateProtocolsCacheOptionsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e AlternateProtocolsCacheOptionsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e AlternateProtocolsCacheOptionsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e AlternateProtocolsCacheOptionsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e AlternateProtocolsCacheOptionsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e AlternateProtocolsCacheOptionsValidationError) ErrorName() string {\n\treturn \"AlternateProtocolsCacheOptionsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e AlternateProtocolsCacheOptionsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sAlternateProtocolsCacheOptions.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = AlternateProtocolsCacheOptionsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = AlternateProtocolsCacheOptionsValidationError{}\n\n// Validate checks the field values on HttpProtocolOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HttpProtocolOptions) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpProtocolOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HttpProtocolOptionsMultiError, or nil if none found.\nfunc (m *HttpProtocolOptions) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpProtocolOptions) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetIdleTimeout()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HttpProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"IdleTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HttpProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"IdleTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetIdleTimeout()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HttpProtocolOptionsValidationError{\n\t\t\t\tfield:  \"IdleTimeout\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxConnectionDuration()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HttpProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"MaxConnectionDuration\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HttpProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"MaxConnectionDuration\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxConnectionDuration()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HttpProtocolOptionsValidationError{\n\t\t\t\tfield:  \"MaxConnectionDuration\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif wrapper := m.GetMaxHeadersCount(); wrapper != nil {\n\n\t\tif wrapper.GetValue() < 1 {\n\t\t\terr := HttpProtocolOptionsValidationError{\n\t\t\t\tfield:  \"MaxHeadersCount\",\n\t\t\t\treason: \"value must be greater than or equal to 1\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif wrapper := m.GetMaxResponseHeadersKb(); wrapper != nil {\n\n\t\tif val := wrapper.GetValue(); val <= 0 || val > 8192 {\n\t\t\terr := HttpProtocolOptionsValidationError{\n\t\t\t\tfield:  \"MaxResponseHeadersKb\",\n\t\t\t\treason: \"value must be inside range (0, 8192]\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxStreamDuration()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HttpProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"MaxStreamDuration\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HttpProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"MaxStreamDuration\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxStreamDuration()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HttpProtocolOptionsValidationError{\n\t\t\t\tfield:  \"MaxStreamDuration\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for HeadersWithUnderscoresAction\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxRequestsPerConnection()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HttpProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"MaxRequestsPerConnection\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HttpProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"MaxRequestsPerConnection\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxRequestsPerConnection()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HttpProtocolOptionsValidationError{\n\t\t\t\tfield:  \"MaxRequestsPerConnection\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HttpProtocolOptionsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpProtocolOptionsMultiError is an error wrapping multiple validation\n// errors returned by HttpProtocolOptions.ValidateAll() if the designated\n// constraints aren't met.\ntype HttpProtocolOptionsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpProtocolOptionsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpProtocolOptionsMultiError) AllErrors() []error { return m }\n\n// HttpProtocolOptionsValidationError is the validation error returned by\n// HttpProtocolOptions.Validate if the designated constraints aren't met.\ntype HttpProtocolOptionsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpProtocolOptionsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpProtocolOptionsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpProtocolOptionsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpProtocolOptionsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpProtocolOptionsValidationError) ErrorName() string {\n\treturn \"HttpProtocolOptionsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HttpProtocolOptionsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpProtocolOptions.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpProtocolOptionsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpProtocolOptionsValidationError{}\n\n// Validate checks the field values on Http1ProtocolOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *Http1ProtocolOptions) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Http1ProtocolOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// Http1ProtocolOptionsMultiError, or nil if none found.\nfunc (m *Http1ProtocolOptions) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Http1ProtocolOptions) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetAllowAbsoluteUrl()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http1ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"AllowAbsoluteUrl\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http1ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"AllowAbsoluteUrl\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetAllowAbsoluteUrl()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http1ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"AllowAbsoluteUrl\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for AcceptHttp_10\n\n\t// no validation rules for DefaultHostForHttp_10\n\n\tif all {\n\t\tswitch v := interface{}(m.GetHeaderKeyFormat()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http1ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"HeaderKeyFormat\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http1ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"HeaderKeyFormat\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetHeaderKeyFormat()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http1ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"HeaderKeyFormat\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for EnableTrailers\n\n\t// no validation rules for AllowChunkedLength\n\n\tif all {\n\t\tswitch v := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http1ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"OverrideStreamErrorOnInvalidHttpMessage\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http1ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"OverrideStreamErrorOnInvalidHttpMessage\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http1ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"OverrideStreamErrorOnInvalidHttpMessage\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for SendFullyQualifiedUrl\n\n\tif all {\n\t\tswitch v := interface{}(m.GetUseBalsaParser()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http1ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"UseBalsaParser\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http1ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"UseBalsaParser\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetUseBalsaParser()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http1ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"UseBalsaParser\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for AllowCustomMethods\n\n\tfor idx, item := range m.GetIgnoreHttp_11Upgrade() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Http1ProtocolOptionsValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"IgnoreHttp_11Upgrade[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Http1ProtocolOptionsValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"IgnoreHttp_11Upgrade[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Http1ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"IgnoreHttp_11Upgrade[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Http1ProtocolOptionsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Http1ProtocolOptionsMultiError is an error wrapping multiple validation\n// errors returned by Http1ProtocolOptions.ValidateAll() if the designated\n// constraints aren't met.\ntype Http1ProtocolOptionsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Http1ProtocolOptionsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Http1ProtocolOptionsMultiError) AllErrors() []error { return m }\n\n// Http1ProtocolOptionsValidationError is the validation error returned by\n// Http1ProtocolOptions.Validate if the designated constraints aren't met.\ntype Http1ProtocolOptionsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Http1ProtocolOptionsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Http1ProtocolOptionsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Http1ProtocolOptionsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Http1ProtocolOptionsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Http1ProtocolOptionsValidationError) ErrorName() string {\n\treturn \"Http1ProtocolOptionsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Http1ProtocolOptionsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttp1ProtocolOptions.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Http1ProtocolOptionsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Http1ProtocolOptionsValidationError{}\n\n// Validate checks the field values on KeepaliveSettings with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *KeepaliveSettings) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on KeepaliveSettings with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// KeepaliveSettingsMultiError, or nil if none found.\nfunc (m *KeepaliveSettings) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *KeepaliveSettings) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif d := m.GetInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = KeepaliveSettingsValidationError{\n\t\t\t\tfield:  \"Interval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgte := time.Duration(0*time.Second + 1000000*time.Nanosecond)\n\n\t\t\tif dur < gte {\n\t\t\t\terr := KeepaliveSettingsValidationError{\n\t\t\t\t\tfield:  \"Interval\",\n\t\t\t\t\treason: \"value must be greater than or equal to 1ms\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif m.GetTimeout() == nil {\n\t\terr := KeepaliveSettingsValidationError{\n\t\t\tfield:  \"Timeout\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif d := m.GetTimeout(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = KeepaliveSettingsValidationError{\n\t\t\t\tfield:  \"Timeout\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgte := time.Duration(0*time.Second + 1000000*time.Nanosecond)\n\n\t\t\tif dur < gte {\n\t\t\t\terr := KeepaliveSettingsValidationError{\n\t\t\t\t\tfield:  \"Timeout\",\n\t\t\t\t\treason: \"value must be greater than or equal to 1ms\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetIntervalJitter()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, KeepaliveSettingsValidationError{\n\t\t\t\t\tfield:  \"IntervalJitter\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, KeepaliveSettingsValidationError{\n\t\t\t\t\tfield:  \"IntervalJitter\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetIntervalJitter()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn KeepaliveSettingsValidationError{\n\t\t\t\tfield:  \"IntervalJitter\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif d := m.GetConnectionIdleInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = KeepaliveSettingsValidationError{\n\t\t\t\tfield:  \"ConnectionIdleInterval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgte := time.Duration(0*time.Second + 1000000*time.Nanosecond)\n\n\t\t\tif dur < gte {\n\t\t\t\terr := KeepaliveSettingsValidationError{\n\t\t\t\t\tfield:  \"ConnectionIdleInterval\",\n\t\t\t\t\treason: \"value must be greater than or equal to 1ms\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn KeepaliveSettingsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// KeepaliveSettingsMultiError is an error wrapping multiple validation errors\n// returned by KeepaliveSettings.ValidateAll() if the designated constraints\n// aren't met.\ntype KeepaliveSettingsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m KeepaliveSettingsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m KeepaliveSettingsMultiError) AllErrors() []error { return m }\n\n// KeepaliveSettingsValidationError is the validation error returned by\n// KeepaliveSettings.Validate if the designated constraints aren't met.\ntype KeepaliveSettingsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e KeepaliveSettingsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e KeepaliveSettingsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e KeepaliveSettingsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e KeepaliveSettingsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e KeepaliveSettingsValidationError) ErrorName() string {\n\treturn \"KeepaliveSettingsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e KeepaliveSettingsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sKeepaliveSettings.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = KeepaliveSettingsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = KeepaliveSettingsValidationError{}\n\n// Validate checks the field values on Http2ProtocolOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *Http2ProtocolOptions) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Http2ProtocolOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// Http2ProtocolOptionsMultiError, or nil if none found.\nfunc (m *Http2ProtocolOptions) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Http2ProtocolOptions) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetHpackTableSize()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"HpackTableSize\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"HpackTableSize\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetHpackTableSize()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http2ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"HpackTableSize\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif wrapper := m.GetMaxConcurrentStreams(); wrapper != nil {\n\n\t\tif val := wrapper.GetValue(); val < 1 || val > 2147483647 {\n\t\t\terr := Http2ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"MaxConcurrentStreams\",\n\t\t\t\treason: \"value must be inside range [1, 2147483647]\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif wrapper := m.GetInitialStreamWindowSize(); wrapper != nil {\n\n\t\tif val := wrapper.GetValue(); val < 65535 || val > 2147483647 {\n\t\t\terr := Http2ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"InitialStreamWindowSize\",\n\t\t\t\treason: \"value must be inside range [65535, 2147483647]\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif wrapper := m.GetInitialConnectionWindowSize(); wrapper != nil {\n\n\t\tif val := wrapper.GetValue(); val < 65535 || val > 2147483647 {\n\t\t\terr := Http2ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"InitialConnectionWindowSize\",\n\t\t\t\treason: \"value must be inside range [65535, 2147483647]\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\t// no validation rules for AllowConnect\n\n\t// no validation rules for AllowMetadata\n\n\tif wrapper := m.GetMaxOutboundFrames(); wrapper != nil {\n\n\t\tif wrapper.GetValue() < 1 {\n\t\t\terr := Http2ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"MaxOutboundFrames\",\n\t\t\t\treason: \"value must be greater than or equal to 1\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif wrapper := m.GetMaxOutboundControlFrames(); wrapper != nil {\n\n\t\tif wrapper.GetValue() < 1 {\n\t\t\terr := Http2ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"MaxOutboundControlFrames\",\n\t\t\t\treason: \"value must be greater than or equal to 1\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxConsecutiveInboundFramesWithEmptyPayload()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"MaxConsecutiveInboundFramesWithEmptyPayload\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"MaxConsecutiveInboundFramesWithEmptyPayload\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxConsecutiveInboundFramesWithEmptyPayload()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http2ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"MaxConsecutiveInboundFramesWithEmptyPayload\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxInboundPriorityFramesPerStream()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"MaxInboundPriorityFramesPerStream\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"MaxInboundPriorityFramesPerStream\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxInboundPriorityFramesPerStream()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http2ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"MaxInboundPriorityFramesPerStream\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif wrapper := m.GetMaxInboundWindowUpdateFramesPerDataFrameSent(); wrapper != nil {\n\n\t\tif wrapper.GetValue() < 1 {\n\t\t\terr := Http2ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"MaxInboundWindowUpdateFramesPerDataFrameSent\",\n\t\t\t\treason: \"value must be greater than or equal to 1\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\t// no validation rules for StreamErrorOnInvalidHttpMessaging\n\n\tif all {\n\t\tswitch v := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"OverrideStreamErrorOnInvalidHttpMessage\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"OverrideStreamErrorOnInvalidHttpMessage\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http2ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"OverrideStreamErrorOnInvalidHttpMessage\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetCustomSettingsParameters() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"CustomSettingsParameters[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"CustomSettingsParameters[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"CustomSettingsParameters[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetConnectionKeepalive()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"ConnectionKeepalive\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"ConnectionKeepalive\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetConnectionKeepalive()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http2ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"ConnectionKeepalive\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetUseOghttp2Codec()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"UseOghttp2Codec\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"UseOghttp2Codec\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetUseOghttp2Codec()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http2ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"UseOghttp2Codec\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxMetadataSize()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"MaxMetadataSize\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"MaxMetadataSize\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxMetadataSize()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http2ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"MaxMetadataSize\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetEnableHuffmanEncoding()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"EnableHuffmanEncoding\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"EnableHuffmanEncoding\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetEnableHuffmanEncoding()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http2ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"EnableHuffmanEncoding\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Http2ProtocolOptionsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Http2ProtocolOptionsMultiError is an error wrapping multiple validation\n// errors returned by Http2ProtocolOptions.ValidateAll() if the designated\n// constraints aren't met.\ntype Http2ProtocolOptionsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Http2ProtocolOptionsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Http2ProtocolOptionsMultiError) AllErrors() []error { return m }\n\n// Http2ProtocolOptionsValidationError is the validation error returned by\n// Http2ProtocolOptions.Validate if the designated constraints aren't met.\ntype Http2ProtocolOptionsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Http2ProtocolOptionsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Http2ProtocolOptionsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Http2ProtocolOptionsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Http2ProtocolOptionsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Http2ProtocolOptionsValidationError) ErrorName() string {\n\treturn \"Http2ProtocolOptionsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Http2ProtocolOptionsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttp2ProtocolOptions.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Http2ProtocolOptionsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Http2ProtocolOptionsValidationError{}\n\n// Validate checks the field values on GrpcProtocolOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *GrpcProtocolOptions) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on GrpcProtocolOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// GrpcProtocolOptionsMultiError, or nil if none found.\nfunc (m *GrpcProtocolOptions) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *GrpcProtocolOptions) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetHttp2ProtocolOptions()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, GrpcProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"Http2ProtocolOptions\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, GrpcProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"Http2ProtocolOptions\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetHttp2ProtocolOptions()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn GrpcProtocolOptionsValidationError{\n\t\t\t\tfield:  \"Http2ProtocolOptions\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn GrpcProtocolOptionsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// GrpcProtocolOptionsMultiError is an error wrapping multiple validation\n// errors returned by GrpcProtocolOptions.ValidateAll() if the designated\n// constraints aren't met.\ntype GrpcProtocolOptionsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m GrpcProtocolOptionsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m GrpcProtocolOptionsMultiError) AllErrors() []error { return m }\n\n// GrpcProtocolOptionsValidationError is the validation error returned by\n// GrpcProtocolOptions.Validate if the designated constraints aren't met.\ntype GrpcProtocolOptionsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e GrpcProtocolOptionsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e GrpcProtocolOptionsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e GrpcProtocolOptionsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e GrpcProtocolOptionsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e GrpcProtocolOptionsValidationError) ErrorName() string {\n\treturn \"GrpcProtocolOptionsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e GrpcProtocolOptionsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sGrpcProtocolOptions.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = GrpcProtocolOptionsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = GrpcProtocolOptionsValidationError{}\n\n// Validate checks the field values on Http3ProtocolOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *Http3ProtocolOptions) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Http3ProtocolOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// Http3ProtocolOptionsMultiError, or nil if none found.\nfunc (m *Http3ProtocolOptions) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Http3ProtocolOptions) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetQuicProtocolOptions()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http3ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"QuicProtocolOptions\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http3ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"QuicProtocolOptions\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetQuicProtocolOptions()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http3ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"QuicProtocolOptions\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http3ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"OverrideStreamErrorOnInvalidHttpMessage\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http3ProtocolOptionsValidationError{\n\t\t\t\t\tfield:  \"OverrideStreamErrorOnInvalidHttpMessage\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetOverrideStreamErrorOnInvalidHttpMessage()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http3ProtocolOptionsValidationError{\n\t\t\t\tfield:  \"OverrideStreamErrorOnInvalidHttpMessage\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for AllowExtendedConnect\n\n\t// no validation rules for AllowMetadata\n\n\t// no validation rules for DisableQpack\n\n\t// no validation rules for DisableConnectionFlowControlForStreams\n\n\tif len(errors) > 0 {\n\t\treturn Http3ProtocolOptionsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Http3ProtocolOptionsMultiError is an error wrapping multiple validation\n// errors returned by Http3ProtocolOptions.ValidateAll() if the designated\n// constraints aren't met.\ntype Http3ProtocolOptionsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Http3ProtocolOptionsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Http3ProtocolOptionsMultiError) AllErrors() []error { return m }\n\n// Http3ProtocolOptionsValidationError is the validation error returned by\n// Http3ProtocolOptions.Validate if the designated constraints aren't met.\ntype Http3ProtocolOptionsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Http3ProtocolOptionsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Http3ProtocolOptionsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Http3ProtocolOptionsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Http3ProtocolOptionsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Http3ProtocolOptionsValidationError) ErrorName() string {\n\treturn \"Http3ProtocolOptionsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Http3ProtocolOptionsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttp3ProtocolOptions.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Http3ProtocolOptionsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Http3ProtocolOptionsValidationError{}\n\n// Validate checks the field values on SchemeHeaderTransformation with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *SchemeHeaderTransformation) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on SchemeHeaderTransformation with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// SchemeHeaderTransformationMultiError, or nil if none found.\nfunc (m *SchemeHeaderTransformation) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *SchemeHeaderTransformation) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for MatchUpstream\n\n\tswitch v := m.Transformation.(type) {\n\tcase *SchemeHeaderTransformation_SchemeToOverwrite:\n\t\tif v == nil {\n\t\t\terr := SchemeHeaderTransformationValidationError{\n\t\t\t\tfield:  \"Transformation\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif _, ok := _SchemeHeaderTransformation_SchemeToOverwrite_InLookup[m.GetSchemeToOverwrite()]; !ok {\n\t\t\terr := SchemeHeaderTransformationValidationError{\n\t\t\t\tfield:  \"SchemeToOverwrite\",\n\t\t\t\treason: \"value must be in list [http https]\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn SchemeHeaderTransformationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// SchemeHeaderTransformationMultiError is an error wrapping multiple\n// validation errors returned by SchemeHeaderTransformation.ValidateAll() if\n// the designated constraints aren't met.\ntype SchemeHeaderTransformationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m SchemeHeaderTransformationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m SchemeHeaderTransformationMultiError) AllErrors() []error { return m }\n\n// SchemeHeaderTransformationValidationError is the validation error returned\n// by SchemeHeaderTransformation.Validate if the designated constraints aren't met.\ntype SchemeHeaderTransformationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e SchemeHeaderTransformationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e SchemeHeaderTransformationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e SchemeHeaderTransformationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e SchemeHeaderTransformationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e SchemeHeaderTransformationValidationError) ErrorName() string {\n\treturn \"SchemeHeaderTransformationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e SchemeHeaderTransformationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sSchemeHeaderTransformation.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = SchemeHeaderTransformationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = SchemeHeaderTransformationValidationError{}\n\nvar _SchemeHeaderTransformation_SchemeToOverwrite_InLookup = map[string]struct{}{\n\t\"http\":  {},\n\t\"https\": {},\n}\n\n// Validate checks the field values on\n// QuicProtocolOptions_ConnectionMigrationSettings with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *QuicProtocolOptions_ConnectionMigrationSettings) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// QuicProtocolOptions_ConnectionMigrationSettings with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in\n// QuicProtocolOptions_ConnectionMigrationSettingsMultiError, or nil if none found.\nfunc (m *QuicProtocolOptions_ConnectionMigrationSettings) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *QuicProtocolOptions_ConnectionMigrationSettings) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMigrateIdleConnections()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, QuicProtocolOptions_ConnectionMigrationSettingsValidationError{\n\t\t\t\t\tfield:  \"MigrateIdleConnections\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, QuicProtocolOptions_ConnectionMigrationSettingsValidationError{\n\t\t\t\t\tfield:  \"MigrateIdleConnections\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMigrateIdleConnections()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn QuicProtocolOptions_ConnectionMigrationSettingsValidationError{\n\t\t\t\tfield:  \"MigrateIdleConnections\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif d := m.GetMaxTimeOnNonDefaultNetwork(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = QuicProtocolOptions_ConnectionMigrationSettingsValidationError{\n\t\t\t\tfield:  \"MaxTimeOnNonDefaultNetwork\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgte := time.Duration(1*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur < gte {\n\t\t\t\terr := QuicProtocolOptions_ConnectionMigrationSettingsValidationError{\n\t\t\t\t\tfield:  \"MaxTimeOnNonDefaultNetwork\",\n\t\t\t\t\treason: \"value must be greater than or equal to 1s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn QuicProtocolOptions_ConnectionMigrationSettingsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// QuicProtocolOptions_ConnectionMigrationSettingsMultiError is an error\n// wrapping multiple validation errors returned by\n// QuicProtocolOptions_ConnectionMigrationSettings.ValidateAll() if the\n// designated constraints aren't met.\ntype QuicProtocolOptions_ConnectionMigrationSettingsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m QuicProtocolOptions_ConnectionMigrationSettingsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m QuicProtocolOptions_ConnectionMigrationSettingsMultiError) AllErrors() []error { return m }\n\n// QuicProtocolOptions_ConnectionMigrationSettingsValidationError is the\n// validation error returned by\n// QuicProtocolOptions_ConnectionMigrationSettings.Validate if the designated\n// constraints aren't met.\ntype QuicProtocolOptions_ConnectionMigrationSettingsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e QuicProtocolOptions_ConnectionMigrationSettingsValidationError) Field() string {\n\treturn e.field\n}\n\n// Reason function returns reason value.\nfunc (e QuicProtocolOptions_ConnectionMigrationSettingsValidationError) Reason() string {\n\treturn e.reason\n}\n\n// Cause function returns cause value.\nfunc (e QuicProtocolOptions_ConnectionMigrationSettingsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e QuicProtocolOptions_ConnectionMigrationSettingsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e QuicProtocolOptions_ConnectionMigrationSettingsValidationError) ErrorName() string {\n\treturn \"QuicProtocolOptions_ConnectionMigrationSettingsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e QuicProtocolOptions_ConnectionMigrationSettingsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sQuicProtocolOptions_ConnectionMigrationSettings.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = QuicProtocolOptions_ConnectionMigrationSettingsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = QuicProtocolOptions_ConnectionMigrationSettingsValidationError{}\n\n// Validate checks the field values on\n// QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the first error encountered is returned, or nil if\n// there are no violations.\nfunc (m *QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsMultiError,\n// or nil if none found.\nfunc (m *QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif d := m.GetMaxIdleTimeBeforeMigration(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsValidationError{\n\t\t\t\tfield:  \"MaxIdleTimeBeforeMigration\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgte := time.Duration(1*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur < gte {\n\t\t\t\terr := QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsValidationError{\n\t\t\t\t\tfield:  \"MaxIdleTimeBeforeMigration\",\n\t\t\t\t\treason: \"value must be greater than or equal to 1s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsMultiError\n// is an error wrapping multiple validation errors returned by\n// QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings.ValidateAll()\n// if the designated constraints aren't met.\ntype QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsMultiError) AllErrors() []error {\n\treturn m\n}\n\n// QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsValidationError\n// is the validation error returned by\n// QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings.Validate\n// if the designated constraints aren't met.\ntype QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsValidationError) Field() string {\n\treturn e.field\n}\n\n// Reason function returns reason value.\nfunc (e QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsValidationError) Reason() string {\n\treturn e.reason\n}\n\n// Cause function returns cause value.\nfunc (e QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsValidationError) Cause() error {\n\treturn e.cause\n}\n\n// Key function returns key value.\nfunc (e QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsValidationError) Key() bool {\n\treturn e.key\n}\n\n// ErrorName returns error name.\nfunc (e QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsValidationError) ErrorName() string {\n\treturn \"QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sQuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettingsValidationError{}\n\n// Validate checks the field values on\n// AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryMultiError, or\n// nil if none found.\nfunc (m *AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetHostname() != \"\" {\n\n\t\tif !_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_Hostname_Pattern.MatchString(m.GetHostname()) {\n\t\t\terr := AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryValidationError{\n\t\t\t\tfield:  \"Hostname\",\n\t\t\t\treason: \"value does not match regex pattern \\\"^:?[0-9a-zA-Z!#$%&'*+-.^_|~`]+$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif val := m.GetPort(); val <= 0 || val >= 65535 {\n\t\terr := AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryValidationError{\n\t\t\tfield:  \"Port\",\n\t\t\treason: \"value must be inside range (0, 65535)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryMultiError is an\n// error wrapping multiple validation errors returned by\n// AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry.ValidateAll()\n// if the designated constraints aren't met.\ntype AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryMultiError) AllErrors() []error {\n\treturn m\n}\n\n// AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryValidationError\n// is the validation error returned by\n// AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry.Validate if the\n// designated constraints aren't met.\ntype AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryValidationError) Field() string {\n\treturn e.field\n}\n\n// Reason function returns reason value.\nfunc (e AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryValidationError) Reason() string {\n\treturn e.reason\n}\n\n// Cause function returns cause value.\nfunc (e AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryValidationError) Cause() error {\n\treturn e.cause\n}\n\n// Key function returns key value.\nfunc (e AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryValidationError) Key() bool {\n\treturn e.key\n}\n\n// ErrorName returns error name.\nfunc (e AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryValidationError) ErrorName() string {\n\treturn \"AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sAlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntryValidationError{}\n\nvar _AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_Hostname_Pattern = regexp.MustCompile(\"^:?[0-9a-zA-Z!#$%&'*+-.^_|~`]+$\")\n\n// Validate checks the field values on Http1ProtocolOptions_HeaderKeyFormat\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the first error encountered is returned, or nil if\n// there are no violations.\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Http1ProtocolOptions_HeaderKeyFormat\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// Http1ProtocolOptions_HeaderKeyFormatMultiError, or nil if none found.\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofHeaderFormatPresent := false\n\tswitch v := m.HeaderFormat.(type) {\n\tcase *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_:\n\t\tif v == nil {\n\t\t\terr := Http1ProtocolOptions_HeaderKeyFormatValidationError{\n\t\t\t\tfield:  \"HeaderFormat\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofHeaderFormatPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetProperCaseWords()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Http1ProtocolOptions_HeaderKeyFormatValidationError{\n\t\t\t\t\t\tfield:  \"ProperCaseWords\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Http1ProtocolOptions_HeaderKeyFormatValidationError{\n\t\t\t\t\t\tfield:  \"ProperCaseWords\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetProperCaseWords()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Http1ProtocolOptions_HeaderKeyFormatValidationError{\n\t\t\t\t\tfield:  \"ProperCaseWords\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Http1ProtocolOptions_HeaderKeyFormat_StatefulFormatter:\n\t\tif v == nil {\n\t\t\terr := Http1ProtocolOptions_HeaderKeyFormatValidationError{\n\t\t\t\tfield:  \"HeaderFormat\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofHeaderFormatPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetStatefulFormatter()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, Http1ProtocolOptions_HeaderKeyFormatValidationError{\n\t\t\t\t\t\tfield:  \"StatefulFormatter\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, Http1ProtocolOptions_HeaderKeyFormatValidationError{\n\t\t\t\t\t\tfield:  \"StatefulFormatter\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetStatefulFormatter()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn Http1ProtocolOptions_HeaderKeyFormatValidationError{\n\t\t\t\t\tfield:  \"StatefulFormatter\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofHeaderFormatPresent {\n\t\terr := Http1ProtocolOptions_HeaderKeyFormatValidationError{\n\t\t\tfield:  \"HeaderFormat\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Http1ProtocolOptions_HeaderKeyFormatMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Http1ProtocolOptions_HeaderKeyFormatMultiError is an error wrapping multiple\n// validation errors returned by\n// Http1ProtocolOptions_HeaderKeyFormat.ValidateAll() if the designated\n// constraints aren't met.\ntype Http1ProtocolOptions_HeaderKeyFormatMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Http1ProtocolOptions_HeaderKeyFormatMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Http1ProtocolOptions_HeaderKeyFormatMultiError) AllErrors() []error { return m }\n\n// Http1ProtocolOptions_HeaderKeyFormatValidationError is the validation error\n// returned by Http1ProtocolOptions_HeaderKeyFormat.Validate if the designated\n// constraints aren't met.\ntype Http1ProtocolOptions_HeaderKeyFormatValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Http1ProtocolOptions_HeaderKeyFormatValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Http1ProtocolOptions_HeaderKeyFormatValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Http1ProtocolOptions_HeaderKeyFormatValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Http1ProtocolOptions_HeaderKeyFormatValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Http1ProtocolOptions_HeaderKeyFormatValidationError) ErrorName() string {\n\treturn \"Http1ProtocolOptions_HeaderKeyFormatValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Http1ProtocolOptions_HeaderKeyFormatValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttp1ProtocolOptions_HeaderKeyFormat.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Http1ProtocolOptions_HeaderKeyFormatValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Http1ProtocolOptions_HeaderKeyFormatValidationError{}\n\n// Validate checks the field values on\n// Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in\n// Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsMultiError, or nil if\n// none found.\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsMultiError is an error\n// wrapping multiple validation errors returned by\n// Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords.ValidateAll() if the\n// designated constraints aren't met.\ntype Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsMultiError) AllErrors() []error { return m }\n\n// Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsValidationError is the\n// validation error returned by\n// Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords.Validate if the\n// designated constraints aren't met.\ntype Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsValidationError) Field() string {\n\treturn e.field\n}\n\n// Reason function returns reason value.\nfunc (e Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsValidationError) Reason() string {\n\treturn e.reason\n}\n\n// Cause function returns cause value.\nfunc (e Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsValidationError) Cause() error {\n\treturn e.cause\n}\n\n// Key function returns key value.\nfunc (e Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsValidationError) ErrorName() string {\n\treturn \"Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttp1ProtocolOptions_HeaderKeyFormat_ProperCaseWords.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWordsValidationError{}\n\n// Validate checks the field values on Http2ProtocolOptions_SettingsParameter\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the first error encountered is returned, or nil if\n// there are no violations.\nfunc (m *Http2ProtocolOptions_SettingsParameter) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// Http2ProtocolOptions_SettingsParameter with the rules defined in the proto\n// definition for this message. If any rules are violated, the result is a\n// list of violation errors wrapped in\n// Http2ProtocolOptions_SettingsParameterMultiError, or nil if none found.\nfunc (m *Http2ProtocolOptions_SettingsParameter) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Http2ProtocolOptions_SettingsParameter) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif wrapper := m.GetIdentifier(); wrapper != nil {\n\n\t\tif val := wrapper.GetValue(); val < 0 || val > 65535 {\n\t\t\terr := Http2ProtocolOptions_SettingsParameterValidationError{\n\t\t\t\tfield:  \"Identifier\",\n\t\t\t\treason: \"value must be inside range [0, 65535]\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t} else {\n\t\terr := Http2ProtocolOptions_SettingsParameterValidationError{\n\t\t\tfield:  \"Identifier\",\n\t\t\treason: \"value is required and must not be nil.\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif m.GetValue() == nil {\n\t\terr := Http2ProtocolOptions_SettingsParameterValidationError{\n\t\t\tfield:  \"Value\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetValue()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptions_SettingsParameterValidationError{\n\t\t\t\t\tfield:  \"Value\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, Http2ProtocolOptions_SettingsParameterValidationError{\n\t\t\t\t\tfield:  \"Value\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetValue()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn Http2ProtocolOptions_SettingsParameterValidationError{\n\t\t\t\tfield:  \"Value\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Http2ProtocolOptions_SettingsParameterMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Http2ProtocolOptions_SettingsParameterMultiError is an error wrapping\n// multiple validation errors returned by\n// Http2ProtocolOptions_SettingsParameter.ValidateAll() if the designated\n// constraints aren't met.\ntype Http2ProtocolOptions_SettingsParameterMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Http2ProtocolOptions_SettingsParameterMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Http2ProtocolOptions_SettingsParameterMultiError) AllErrors() []error { return m }\n\n// Http2ProtocolOptions_SettingsParameterValidationError is the validation\n// error returned by Http2ProtocolOptions_SettingsParameter.Validate if the\n// designated constraints aren't met.\ntype Http2ProtocolOptions_SettingsParameterValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Http2ProtocolOptions_SettingsParameterValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Http2ProtocolOptions_SettingsParameterValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Http2ProtocolOptions_SettingsParameterValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Http2ProtocolOptions_SettingsParameterValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Http2ProtocolOptions_SettingsParameterValidationError) ErrorName() string {\n\treturn \"Http2ProtocolOptions_SettingsParameterValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Http2ProtocolOptions_SettingsParameterValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttp2ProtocolOptions_SettingsParameter.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Http2ProtocolOptions_SettingsParameterValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Http2ProtocolOptions_SettingsParameterValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/protocol_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/protocol.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tdurationpb \"github.com/planetscale/vtprotobuf/types/known/durationpb\"\n\twrapperspb \"github.com/planetscale/vtprotobuf/types/known/wrapperspb\"\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *TcpProtocolOptions) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *TcpProtocolOptions) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *TcpProtocolOptions) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QuicKeepAliveSettings) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QuicKeepAliveSettings) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *QuicKeepAliveSettings) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.InitialInterval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.InitialInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.MaxInterval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.MaxInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.MaxIdleTimeBeforeMigration != nil {\n\t\tsize, err := (*durationpb.Duration)(m.MaxIdleTimeBeforeMigration).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QuicProtocolOptions_ConnectionMigrationSettings) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QuicProtocolOptions_ConnectionMigrationSettings) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *QuicProtocolOptions_ConnectionMigrationSettings) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.MaxTimeOnNonDefaultNetwork != nil {\n\t\tsize, err := (*durationpb.Duration)(m.MaxTimeOnNonDefaultNetwork).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.MigrateIdleConnections != nil {\n\t\tsize, err := m.MigrateIdleConnections.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QuicProtocolOptions) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QuicProtocolOptions) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *QuicProtocolOptions) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.ConnectionMigration != nil {\n\t\tsize, err := m.ConnectionMigration.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t}\n\tif m.ClientPacketWriter != nil {\n\t\tsize, err := m.ClientPacketWriter.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x52\n\t}\n\tif m.MaxPacketLength != nil {\n\t\tsize, err := (*wrapperspb.UInt64Value)(m.MaxPacketLength).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t}\n\tif m.IdleNetworkTimeout != nil {\n\t\tsize, err := (*durationpb.Duration)(m.IdleNetworkTimeout).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif len(m.ClientConnectionOptions) > 0 {\n\t\ti -= len(m.ClientConnectionOptions)\n\t\tcopy(dAtA[i:], m.ClientConnectionOptions)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClientConnectionOptions)))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif len(m.ConnectionOptions) > 0 {\n\t\ti -= len(m.ConnectionOptions)\n\t\tcopy(dAtA[i:], m.ConnectionOptions)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ConnectionOptions)))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif m.ConnectionKeepalive != nil {\n\t\tsize, err := m.ConnectionKeepalive.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.NumTimeoutsToTriggerPortMigration != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.NumTimeoutsToTriggerPortMigration).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.InitialConnectionWindowSize != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.InitialConnectionWindowSize).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.InitialStreamWindowSize != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.InitialStreamWindowSize).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.MaxConcurrentStreams != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxConcurrentStreams).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UpstreamHttpProtocolOptions) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UpstreamHttpProtocolOptions) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *UpstreamHttpProtocolOptions) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.OverrideAutoSniHeader) > 0 {\n\t\ti -= len(m.OverrideAutoSniHeader)\n\t\tcopy(dAtA[i:], m.OverrideAutoSniHeader)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.OverrideAutoSniHeader)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.AutoSanValidation {\n\t\ti--\n\t\tif m.AutoSanValidation {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.AutoSni {\n\t\ti--\n\t\tif m.AutoSni {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Port != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Port))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.Hostname) > 0 {\n\t\ti -= len(m.Hostname)\n\t\tcopy(dAtA[i:], m.Hostname)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Hostname)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AlternateProtocolsCacheOptions) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AlternateProtocolsCacheOptions) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *AlternateProtocolsCacheOptions) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.CanonicalSuffixes) > 0 {\n\t\tfor iNdEx := len(m.CanonicalSuffixes) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.CanonicalSuffixes[iNdEx])\n\t\t\tcopy(dAtA[i:], m.CanonicalSuffixes[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.CanonicalSuffixes[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif len(m.PrepopulatedEntries) > 0 {\n\t\tfor iNdEx := len(m.PrepopulatedEntries) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.PrepopulatedEntries[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif m.KeyValueStoreConfig != nil {\n\t\tsize, err := m.KeyValueStoreConfig.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.MaxEntries != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxEntries).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HttpProtocolOptions) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HttpProtocolOptions) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HttpProtocolOptions) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.MaxResponseHeadersKb != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxResponseHeadersKb).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif m.MaxRequestsPerConnection != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxRequestsPerConnection).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif m.HeadersWithUnderscoresAction != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.HeadersWithUnderscoresAction))\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif m.MaxStreamDuration != nil {\n\t\tsize, err := (*durationpb.Duration)(m.MaxStreamDuration).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.MaxConnectionDuration != nil {\n\t\tsize, err := (*durationpb.Duration)(m.MaxConnectionDuration).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.MaxHeadersCount != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxHeadersCount).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.IdleTimeout != nil {\n\t\tsize, err := (*durationpb.Duration)(m.IdleTimeout).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.HeaderFormat.(*Http1ProtocolOptions_HeaderKeyFormat_StatefulFormatter); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.HeaderFormat.(*Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ProperCaseWords != nil {\n\t\tsize, err := m.ProperCaseWords.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat_StatefulFormatter) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat_StatefulFormatter) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.StatefulFormatter != nil {\n\t\tsize, err := m.StatefulFormatter.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Http1ProtocolOptions) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Http1ProtocolOptions) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Http1ProtocolOptions) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.IgnoreHttp_11Upgrade) > 0 {\n\t\tfor iNdEx := len(m.IgnoreHttp_11Upgrade) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.IgnoreHttp_11Upgrade[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.IgnoreHttp_11Upgrade[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x5a\n\t\t}\n\t}\n\tif m.AllowCustomMethods {\n\t\ti--\n\t\tif m.AllowCustomMethods {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x50\n\t}\n\tif m.UseBalsaParser != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.UseBalsaParser).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t}\n\tif m.SendFullyQualifiedUrl {\n\t\ti--\n\t\tif m.SendFullyQualifiedUrl {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x40\n\t}\n\tif m.OverrideStreamErrorOnInvalidHttpMessage != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.OverrideStreamErrorOnInvalidHttpMessage).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif m.AllowChunkedLength {\n\t\ti--\n\t\tif m.AllowChunkedLength {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif m.EnableTrailers {\n\t\ti--\n\t\tif m.EnableTrailers {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif m.HeaderKeyFormat != nil {\n\t\tsize, err := m.HeaderKeyFormat.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.DefaultHostForHttp_10) > 0 {\n\t\ti -= len(m.DefaultHostForHttp_10)\n\t\tcopy(dAtA[i:], m.DefaultHostForHttp_10)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DefaultHostForHttp_10)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.AcceptHttp_10 {\n\t\ti--\n\t\tif m.AcceptHttp_10 {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.AllowAbsoluteUrl != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.AllowAbsoluteUrl).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *KeepaliveSettings) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *KeepaliveSettings) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *KeepaliveSettings) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.ConnectionIdleInterval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.ConnectionIdleInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.IntervalJitter != nil {\n\t\tif vtmsg, ok := interface{}(m.IntervalJitter).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.IntervalJitter)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Timeout != nil {\n\t\tsize, err := (*durationpb.Duration)(m.Timeout).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Interval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.Interval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Http2ProtocolOptions_SettingsParameter) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Http2ProtocolOptions_SettingsParameter) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Http2ProtocolOptions_SettingsParameter) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Value != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.Value).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Identifier != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.Identifier).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Http2ProtocolOptions) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Http2ProtocolOptions) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Http2ProtocolOptions) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.EnableHuffmanEncoding != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.EnableHuffmanEncoding).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x92\n\t}\n\tif m.MaxMetadataSize != nil {\n\t\tsize, err := (*wrapperspb.UInt64Value)(m.MaxMetadataSize).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x8a\n\t}\n\tif m.UseOghttp2Codec != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.UseOghttp2Codec).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x82\n\t}\n\tif m.ConnectionKeepalive != nil {\n\t\tsize, err := m.ConnectionKeepalive.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x7a\n\t}\n\tif m.OverrideStreamErrorOnInvalidHttpMessage != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.OverrideStreamErrorOnInvalidHttpMessage).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x72\n\t}\n\tif len(m.CustomSettingsParameters) > 0 {\n\t\tfor iNdEx := len(m.CustomSettingsParameters) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.CustomSettingsParameters[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x6a\n\t\t}\n\t}\n\tif m.StreamErrorOnInvalidHttpMessaging {\n\t\ti--\n\t\tif m.StreamErrorOnInvalidHttpMessaging {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x60\n\t}\n\tif m.MaxInboundWindowUpdateFramesPerDataFrameSent != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxInboundWindowUpdateFramesPerDataFrameSent).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t}\n\tif m.MaxInboundPriorityFramesPerStream != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxInboundPriorityFramesPerStream).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x52\n\t}\n\tif m.MaxConsecutiveInboundFramesWithEmptyPayload != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxConsecutiveInboundFramesWithEmptyPayload).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t}\n\tif m.MaxOutboundControlFrames != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxOutboundControlFrames).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif m.MaxOutboundFrames != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxOutboundFrames).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif m.AllowMetadata {\n\t\ti--\n\t\tif m.AllowMetadata {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif m.AllowConnect {\n\t\ti--\n\t\tif m.AllowConnect {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif m.InitialConnectionWindowSize != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.InitialConnectionWindowSize).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.InitialStreamWindowSize != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.InitialStreamWindowSize).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.MaxConcurrentStreams != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxConcurrentStreams).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.HpackTableSize != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.HpackTableSize).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrpcProtocolOptions) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrpcProtocolOptions) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *GrpcProtocolOptions) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Http2ProtocolOptions != nil {\n\t\tsize, err := m.Http2ProtocolOptions.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Http3ProtocolOptions) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Http3ProtocolOptions) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Http3ProtocolOptions) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.DisableConnectionFlowControlForStreams {\n\t\ti--\n\t\tif m.DisableConnectionFlowControlForStreams {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x40\n\t}\n\tif m.DisableQpack {\n\t\ti--\n\t\tif m.DisableQpack {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x38\n\t}\n\tif m.AllowMetadata {\n\t\ti--\n\t\tif m.AllowMetadata {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif m.AllowExtendedConnect {\n\t\ti--\n\t\tif m.AllowExtendedConnect {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif m.OverrideStreamErrorOnInvalidHttpMessage != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.OverrideStreamErrorOnInvalidHttpMessage).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.QuicProtocolOptions != nil {\n\t\tsize, err := m.QuicProtocolOptions.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SchemeHeaderTransformation) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SchemeHeaderTransformation) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SchemeHeaderTransformation) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.MatchUpstream {\n\t\ti--\n\t\tif m.MatchUpstream {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif msg, ok := m.Transformation.(*SchemeHeaderTransformation_SchemeToOverwrite); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SchemeHeaderTransformation_SchemeToOverwrite) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SchemeHeaderTransformation_SchemeToOverwrite) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.SchemeToOverwrite)\n\tcopy(dAtA[i:], m.SchemeToOverwrite)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SchemeToOverwrite)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *TcpProtocolOptions) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *QuicKeepAliveSettings) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MaxInterval != nil {\n\t\tl = (*durationpb.Duration)(m.MaxInterval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.InitialInterval != nil {\n\t\tl = (*durationpb.Duration)(m.InitialInterval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *QuicProtocolOptions_ConnectionMigrationSettings_MigrateIdleConnectionSettings) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MaxIdleTimeBeforeMigration != nil {\n\t\tl = (*durationpb.Duration)(m.MaxIdleTimeBeforeMigration).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *QuicProtocolOptions_ConnectionMigrationSettings) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MigrateIdleConnections != nil {\n\t\tl = m.MigrateIdleConnections.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxTimeOnNonDefaultNetwork != nil {\n\t\tl = (*durationpb.Duration)(m.MaxTimeOnNonDefaultNetwork).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *QuicProtocolOptions) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MaxConcurrentStreams != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxConcurrentStreams).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.InitialStreamWindowSize != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.InitialStreamWindowSize).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.InitialConnectionWindowSize != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.InitialConnectionWindowSize).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.NumTimeoutsToTriggerPortMigration != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.NumTimeoutsToTriggerPortMigration).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ConnectionKeepalive != nil {\n\t\tl = m.ConnectionKeepalive.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.ConnectionOptions)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.ClientConnectionOptions)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.IdleNetworkTimeout != nil {\n\t\tl = (*durationpb.Duration)(m.IdleNetworkTimeout).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxPacketLength != nil {\n\t\tl = (*wrapperspb.UInt64Value)(m.MaxPacketLength).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ClientPacketWriter != nil {\n\t\tl = m.ClientPacketWriter.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ConnectionMigration != nil {\n\t\tl = m.ConnectionMigration.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *UpstreamHttpProtocolOptions) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.AutoSni {\n\t\tn += 2\n\t}\n\tif m.AutoSanValidation {\n\t\tn += 2\n\t}\n\tl = len(m.OverrideAutoSniHeader)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Hostname)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Port != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Port))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *AlternateProtocolsCacheOptions) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxEntries != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxEntries).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.KeyValueStoreConfig != nil {\n\t\tl = m.KeyValueStoreConfig.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.PrepopulatedEntries) > 0 {\n\t\tfor _, e := range m.PrepopulatedEntries {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.CanonicalSuffixes) > 0 {\n\t\tfor _, s := range m.CanonicalSuffixes {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HttpProtocolOptions) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.IdleTimeout != nil {\n\t\tl = (*durationpb.Duration)(m.IdleTimeout).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxHeadersCount != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxHeadersCount).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxConnectionDuration != nil {\n\t\tl = (*durationpb.Duration)(m.MaxConnectionDuration).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxStreamDuration != nil {\n\t\tl = (*durationpb.Duration)(m.MaxStreamDuration).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.HeadersWithUnderscoresAction != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.HeadersWithUnderscoresAction))\n\t}\n\tif m.MaxRequestsPerConnection != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxRequestsPerConnection).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxResponseHeadersKb != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxResponseHeadersKb).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.HeaderFormat.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ProperCaseWords != nil {\n\t\tl = m.ProperCaseWords.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *Http1ProtocolOptions_HeaderKeyFormat_StatefulFormatter) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.StatefulFormatter != nil {\n\t\tl = m.StatefulFormatter.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *Http1ProtocolOptions) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.AllowAbsoluteUrl != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.AllowAbsoluteUrl).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.AcceptHttp_10 {\n\t\tn += 2\n\t}\n\tl = len(m.DefaultHostForHttp_10)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.HeaderKeyFormat != nil {\n\t\tl = m.HeaderKeyFormat.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.EnableTrailers {\n\t\tn += 2\n\t}\n\tif m.AllowChunkedLength {\n\t\tn += 2\n\t}\n\tif m.OverrideStreamErrorOnInvalidHttpMessage != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.OverrideStreamErrorOnInvalidHttpMessage).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.SendFullyQualifiedUrl {\n\t\tn += 2\n\t}\n\tif m.UseBalsaParser != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.UseBalsaParser).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.AllowCustomMethods {\n\t\tn += 2\n\t}\n\tif len(m.IgnoreHttp_11Upgrade) > 0 {\n\t\tfor _, e := range m.IgnoreHttp_11Upgrade {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *KeepaliveSettings) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Interval != nil {\n\t\tl = (*durationpb.Duration)(m.Interval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Timeout != nil {\n\t\tl = (*durationpb.Duration)(m.Timeout).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.IntervalJitter != nil {\n\t\tif size, ok := interface{}(m.IntervalJitter).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.IntervalJitter)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ConnectionIdleInterval != nil {\n\t\tl = (*durationpb.Duration)(m.ConnectionIdleInterval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Http2ProtocolOptions_SettingsParameter) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Identifier != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.Identifier).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Value != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.Value).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Http2ProtocolOptions) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.HpackTableSize != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.HpackTableSize).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxConcurrentStreams != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxConcurrentStreams).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.InitialStreamWindowSize != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.InitialStreamWindowSize).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.InitialConnectionWindowSize != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.InitialConnectionWindowSize).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.AllowConnect {\n\t\tn += 2\n\t}\n\tif m.AllowMetadata {\n\t\tn += 2\n\t}\n\tif m.MaxOutboundFrames != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxOutboundFrames).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxOutboundControlFrames != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxOutboundControlFrames).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxConsecutiveInboundFramesWithEmptyPayload != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxConsecutiveInboundFramesWithEmptyPayload).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxInboundPriorityFramesPerStream != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxInboundPriorityFramesPerStream).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxInboundWindowUpdateFramesPerDataFrameSent != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxInboundWindowUpdateFramesPerDataFrameSent).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.StreamErrorOnInvalidHttpMessaging {\n\t\tn += 2\n\t}\n\tif len(m.CustomSettingsParameters) > 0 {\n\t\tfor _, e := range m.CustomSettingsParameters {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.OverrideStreamErrorOnInvalidHttpMessage != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.OverrideStreamErrorOnInvalidHttpMessage).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ConnectionKeepalive != nil {\n\t\tl = m.ConnectionKeepalive.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.UseOghttp2Codec != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.UseOghttp2Codec).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxMetadataSize != nil {\n\t\tl = (*wrapperspb.UInt64Value)(m.MaxMetadataSize).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.EnableHuffmanEncoding != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.EnableHuffmanEncoding).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *GrpcProtocolOptions) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Http2ProtocolOptions != nil {\n\t\tl = m.Http2ProtocolOptions.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Http3ProtocolOptions) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.QuicProtocolOptions != nil {\n\t\tl = m.QuicProtocolOptions.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.OverrideStreamErrorOnInvalidHttpMessage != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.OverrideStreamErrorOnInvalidHttpMessage).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.AllowExtendedConnect {\n\t\tn += 2\n\t}\n\tif m.AllowMetadata {\n\t\tn += 2\n\t}\n\tif m.DisableQpack {\n\t\tn += 2\n\t}\n\tif m.DisableConnectionFlowControlForStreams {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *SchemeHeaderTransformation) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Transformation.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.MatchUpstream {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *SchemeHeaderTransformation_SchemeToOverwrite) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.SchemeToOverwrite)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/proxy_protocol.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/proxy_protocol.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype ProxyProtocolPassThroughTLVs_PassTLVsMatchType int32\n\nconst (\n\t// Pass all TLVs.\n\tProxyProtocolPassThroughTLVs_INCLUDE_ALL ProxyProtocolPassThroughTLVs_PassTLVsMatchType = 0\n\t// Pass specific TLVs defined in tlv_type.\n\tProxyProtocolPassThroughTLVs_INCLUDE ProxyProtocolPassThroughTLVs_PassTLVsMatchType = 1\n)\n\n// Enum value maps for ProxyProtocolPassThroughTLVs_PassTLVsMatchType.\nvar (\n\tProxyProtocolPassThroughTLVs_PassTLVsMatchType_name = map[int32]string{\n\t\t0: \"INCLUDE_ALL\",\n\t\t1: \"INCLUDE\",\n\t}\n\tProxyProtocolPassThroughTLVs_PassTLVsMatchType_value = map[string]int32{\n\t\t\"INCLUDE_ALL\": 0,\n\t\t\"INCLUDE\":     1,\n\t}\n)\n\nfunc (x ProxyProtocolPassThroughTLVs_PassTLVsMatchType) Enum() *ProxyProtocolPassThroughTLVs_PassTLVsMatchType {\n\tp := new(ProxyProtocolPassThroughTLVs_PassTLVsMatchType)\n\t*p = x\n\treturn p\n}\n\nfunc (x ProxyProtocolPassThroughTLVs_PassTLVsMatchType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ProxyProtocolPassThroughTLVs_PassTLVsMatchType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_core_v3_proxy_protocol_proto_enumTypes[0].Descriptor()\n}\n\nfunc (ProxyProtocolPassThroughTLVs_PassTLVsMatchType) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_core_v3_proxy_protocol_proto_enumTypes[0]\n}\n\nfunc (x ProxyProtocolPassThroughTLVs_PassTLVsMatchType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ProxyProtocolPassThroughTLVs_PassTLVsMatchType.Descriptor instead.\nfunc (ProxyProtocolPassThroughTLVs_PassTLVsMatchType) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_proxy_protocol_proto_rawDescGZIP(), []int{0, 0}\n}\n\ntype ProxyProtocolConfig_Version int32\n\nconst (\n\t// PROXY protocol version 1. Human readable format.\n\tProxyProtocolConfig_V1 ProxyProtocolConfig_Version = 0\n\t// PROXY protocol version 2. Binary format.\n\tProxyProtocolConfig_V2 ProxyProtocolConfig_Version = 1\n)\n\n// Enum value maps for ProxyProtocolConfig_Version.\nvar (\n\tProxyProtocolConfig_Version_name = map[int32]string{\n\t\t0: \"V1\",\n\t\t1: \"V2\",\n\t}\n\tProxyProtocolConfig_Version_value = map[string]int32{\n\t\t\"V1\": 0,\n\t\t\"V2\": 1,\n\t}\n)\n\nfunc (x ProxyProtocolConfig_Version) Enum() *ProxyProtocolConfig_Version {\n\tp := new(ProxyProtocolConfig_Version)\n\t*p = x\n\treturn p\n}\n\nfunc (x ProxyProtocolConfig_Version) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ProxyProtocolConfig_Version) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_core_v3_proxy_protocol_proto_enumTypes[1].Descriptor()\n}\n\nfunc (ProxyProtocolConfig_Version) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_core_v3_proxy_protocol_proto_enumTypes[1]\n}\n\nfunc (x ProxyProtocolConfig_Version) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ProxyProtocolConfig_Version.Descriptor instead.\nfunc (ProxyProtocolConfig_Version) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_proxy_protocol_proto_rawDescGZIP(), []int{2, 0}\n}\n\ntype ProxyProtocolPassThroughTLVs struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The strategy to pass through TLVs. Default is INCLUDE_ALL.\n\t// If INCLUDE_ALL is set, all TLVs will be passed through no matter the tlv_type field.\n\tMatchType ProxyProtocolPassThroughTLVs_PassTLVsMatchType `protobuf:\"varint,1,opt,name=match_type,json=matchType,proto3,enum=envoy.config.core.v3.ProxyProtocolPassThroughTLVs_PassTLVsMatchType\" json:\"match_type,omitempty\"`\n\t// The TLV types that are applied based on match_type.\n\t// TLV type is defined as uint8_t in proxy protocol. See `the spec\n\t// <https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt>`_ for details.\n\tTlvType       []uint32 `protobuf:\"varint,2,rep,packed,name=tlv_type,json=tlvType,proto3\" json:\"tlv_type,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ProxyProtocolPassThroughTLVs) Reset() {\n\t*x = ProxyProtocolPassThroughTLVs{}\n\tmi := &file_envoy_config_core_v3_proxy_protocol_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ProxyProtocolPassThroughTLVs) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ProxyProtocolPassThroughTLVs) ProtoMessage() {}\n\nfunc (x *ProxyProtocolPassThroughTLVs) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_proxy_protocol_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ProxyProtocolPassThroughTLVs.ProtoReflect.Descriptor instead.\nfunc (*ProxyProtocolPassThroughTLVs) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_proxy_protocol_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ProxyProtocolPassThroughTLVs) GetMatchType() ProxyProtocolPassThroughTLVs_PassTLVsMatchType {\n\tif x != nil {\n\t\treturn x.MatchType\n\t}\n\treturn ProxyProtocolPassThroughTLVs_INCLUDE_ALL\n}\n\nfunc (x *ProxyProtocolPassThroughTLVs) GetTlvType() []uint32 {\n\tif x != nil {\n\t\treturn x.TlvType\n\t}\n\treturn nil\n}\n\n// Represents a single Type-Length-Value (TLV) entry.\ntype TlvEntry struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The type of the TLV. Must be a uint8 (0-255) as per the Proxy Protocol v2 specification.\n\tType uint32 `protobuf:\"varint,1,opt,name=type,proto3\" json:\"type,omitempty\"`\n\t// The static value of the TLV.\n\t// Only one of “value“ or “format_string“ may be set.\n\tValue []byte `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\t// Uses the :ref:`format string <config_access_log_format_strings>` to dynamically\n\t// populate the TLV value from stream information. This allows dynamic values\n\t// such as metadata, filter state, or other stream properties to be included in\n\t// the TLV.\n\t//\n\t// For example:\n\t//\n\t// .. code-block:: yaml\n\t//\n\t//\ttype: 0xF0\n\t//\tformat_string:\n\t//\t  text_format_source:\n\t//\t    inline_string: \"%DYNAMIC_METADATA(envoy.filters.network:key)%\"\n\t//\n\t// The formatted string will be used directly as the TLV value.\n\t// Only one of “value“ or “format_string“ may be set.\n\tFormatString  *SubstitutionFormatString `protobuf:\"bytes,3,opt,name=format_string,json=formatString,proto3\" json:\"format_string,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *TlvEntry) Reset() {\n\t*x = TlvEntry{}\n\tmi := &file_envoy_config_core_v3_proxy_protocol_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *TlvEntry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*TlvEntry) ProtoMessage() {}\n\nfunc (x *TlvEntry) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_proxy_protocol_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use TlvEntry.ProtoReflect.Descriptor instead.\nfunc (*TlvEntry) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_proxy_protocol_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *TlvEntry) GetType() uint32 {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn 0\n}\n\nfunc (x *TlvEntry) GetValue() []byte {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nfunc (x *TlvEntry) GetFormatString() *SubstitutionFormatString {\n\tif x != nil {\n\t\treturn x.FormatString\n\t}\n\treturn nil\n}\n\ntype ProxyProtocolConfig struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The PROXY protocol version to use. See https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt for details\n\tVersion ProxyProtocolConfig_Version `protobuf:\"varint,1,opt,name=version,proto3,enum=envoy.config.core.v3.ProxyProtocolConfig_Version\" json:\"version,omitempty\"`\n\t// This config controls which TLVs can be passed to upstream if it is Proxy Protocol\n\t// V2 header. If there is no setting for this field, no TLVs will be passed through.\n\tPassThroughTlvs *ProxyProtocolPassThroughTLVs `protobuf:\"bytes,2,opt,name=pass_through_tlvs,json=passThroughTlvs,proto3\" json:\"pass_through_tlvs,omitempty\"`\n\t// This config allows additional TLVs to be included in the upstream PROXY protocol\n\t// V2 header. Unlike “pass_through_tlvs“, which passes TLVs from the downstream request,\n\t// “added_tlvs“ provides an extension mechanism for defining new TLVs that are included\n\t// with the upstream request. These TLVs may not be present in the downstream request and\n\t// can be defined at either the transport socket level or the host level to provide more\n\t// granular control over the TLVs that are included in the upstream request.\n\t//\n\t// Host-level TLVs are specified in the “metadata.typed_filter_metadata“ field under the\n\t// “envoy.transport_sockets.proxy_protocol“ namespace.\n\t//\n\t// .. literalinclude:: /_configs/repo/proxy_protocol.yaml\n\t//\n\t//\t:language: yaml\n\t//\t:lines: 49-57\n\t//\t:linenos:\n\t//\t:lineno-start: 49\n\t//\t:caption: :download:`proxy_protocol.yaml </_configs/repo/proxy_protocol.yaml>`\n\t//\n\t// **Precedence behavior**:\n\t//\n\t//   - When a TLV is defined at both the host level and the transport socket level, the value\n\t//     from the host level configuration takes precedence. This allows users to define default TLVs\n\t//     at the transport socket level and override them at the host level.\n\t//   - Any TLV defined in the “pass_through_tlvs“ field will be overridden by either the host-level\n\t//     or transport socket-level TLV.\n\t//\n\t// If there are multiple TLVs with the same type, only the TLVs from the highest precedence level\n\t// will be used.\n\tAddedTlvs     []*TlvEntry `protobuf:\"bytes,3,rep,name=added_tlvs,json=addedTlvs,proto3\" json:\"added_tlvs,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ProxyProtocolConfig) Reset() {\n\t*x = ProxyProtocolConfig{}\n\tmi := &file_envoy_config_core_v3_proxy_protocol_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ProxyProtocolConfig) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ProxyProtocolConfig) ProtoMessage() {}\n\nfunc (x *ProxyProtocolConfig) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_proxy_protocol_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ProxyProtocolConfig.ProtoReflect.Descriptor instead.\nfunc (*ProxyProtocolConfig) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_proxy_protocol_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *ProxyProtocolConfig) GetVersion() ProxyProtocolConfig_Version {\n\tif x != nil {\n\t\treturn x.Version\n\t}\n\treturn ProxyProtocolConfig_V1\n}\n\nfunc (x *ProxyProtocolConfig) GetPassThroughTlvs() *ProxyProtocolPassThroughTLVs {\n\tif x != nil {\n\t\treturn x.PassThroughTlvs\n\t}\n\treturn nil\n}\n\nfunc (x *ProxyProtocolConfig) GetAddedTlvs() []*TlvEntry {\n\tif x != nil {\n\t\treturn x.AddedTlvs\n\t}\n\treturn nil\n}\n\ntype PerHostConfig struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Enables per-host configuration for Proxy Protocol.\n\tAddedTlvs     []*TlvEntry `protobuf:\"bytes,1,rep,name=added_tlvs,json=addedTlvs,proto3\" json:\"added_tlvs,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *PerHostConfig) Reset() {\n\t*x = PerHostConfig{}\n\tmi := &file_envoy_config_core_v3_proxy_protocol_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *PerHostConfig) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PerHostConfig) ProtoMessage() {}\n\nfunc (x *PerHostConfig) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_proxy_protocol_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use PerHostConfig.ProtoReflect.Descriptor instead.\nfunc (*PerHostConfig) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_proxy_protocol_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *PerHostConfig) GetAddedTlvs() []*TlvEntry {\n\tif x != nil {\n\t\treturn x.AddedTlvs\n\t}\n\treturn nil\n}\n\nvar File_envoy_config_core_v3_proxy_protocol_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_proxy_protocol_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\")envoy/config/core/v3/proxy_protocol.proto\\x12\\x14envoy.config.core.v3\\x1a5envoy/config/core/v3/substitution_format_string.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a\\x17validate/validate.proto\\\"\\xe0\\x01\\n\" +\n\t\"\\x1cProxyProtocolPassThroughTLVs\\x12c\\n\" +\n\t\"\\n\" +\n\t\"match_type\\x18\\x01 \\x01(\\x0e2D.envoy.config.core.v3.ProxyProtocolPassThroughTLVs.PassTLVsMatchTypeR\\tmatchType\\x12(\\n\" +\n\t\"\\btlv_type\\x18\\x02 \\x03(\\rB\\r\\xfaB\\n\" +\n\t\"\\x92\\x01\\a\\\"\\x05*\\x03\\x10\\x80\\x02R\\atlvType\\\"1\\n\" +\n\t\"\\x11PassTLVsMatchType\\x12\\x0f\\n\" +\n\t\"\\vINCLUDE_ALL\\x10\\x00\\x12\\v\\n\" +\n\t\"\\aINCLUDE\\x10\\x01\\\"\\x93\\x01\\n\" +\n\t\"\\bTlvEntry\\x12\\x1c\\n\" +\n\t\"\\x04type\\x18\\x01 \\x01(\\rB\\b\\xfaB\\x05*\\x03\\x10\\x80\\x02R\\x04type\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\fR\\x05value\\x12S\\n\" +\n\t\"\\rformat_string\\x18\\x03 \\x01(\\v2..envoy.config.core.v3.SubstitutionFormatStringR\\fformatString\\\"\\x9c\\x02\\n\" +\n\t\"\\x13ProxyProtocolConfig\\x12K\\n\" +\n\t\"\\aversion\\x18\\x01 \\x01(\\x0e21.envoy.config.core.v3.ProxyProtocolConfig.VersionR\\aversion\\x12^\\n\" +\n\t\"\\x11pass_through_tlvs\\x18\\x02 \\x01(\\v22.envoy.config.core.v3.ProxyProtocolPassThroughTLVsR\\x0fpassThroughTlvs\\x12=\\n\" +\n\t\"\\n\" +\n\t\"added_tlvs\\x18\\x03 \\x03(\\v2\\x1e.envoy.config.core.v3.TlvEntryR\\taddedTlvs\\\"\\x19\\n\" +\n\t\"\\aVersion\\x12\\x06\\n\" +\n\t\"\\x02V1\\x10\\x00\\x12\\x06\\n\" +\n\t\"\\x02V2\\x10\\x01\\\"N\\n\" +\n\t\"\\rPerHostConfig\\x12=\\n\" +\n\t\"\\n\" +\n\t\"added_tlvs\\x18\\x01 \\x03(\\v2\\x1e.envoy.config.core.v3.TlvEntryR\\taddedTlvsB\\x86\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\x12ProxyProtocolProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_proxy_protocol_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_proxy_protocol_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_proxy_protocol_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_proxy_protocol_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_proxy_protocol_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_proxy_protocol_proto_rawDesc), len(file_envoy_config_core_v3_proxy_protocol_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_proxy_protocol_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_proxy_protocol_proto_enumTypes = make([]protoimpl.EnumInfo, 2)\nvar file_envoy_config_core_v3_proxy_protocol_proto_msgTypes = make([]protoimpl.MessageInfo, 4)\nvar file_envoy_config_core_v3_proxy_protocol_proto_goTypes = []any{\n\t(ProxyProtocolPassThroughTLVs_PassTLVsMatchType)(0), // 0: envoy.config.core.v3.ProxyProtocolPassThroughTLVs.PassTLVsMatchType\n\t(ProxyProtocolConfig_Version)(0),                    // 1: envoy.config.core.v3.ProxyProtocolConfig.Version\n\t(*ProxyProtocolPassThroughTLVs)(nil),                // 2: envoy.config.core.v3.ProxyProtocolPassThroughTLVs\n\t(*TlvEntry)(nil),                                    // 3: envoy.config.core.v3.TlvEntry\n\t(*ProxyProtocolConfig)(nil),                         // 4: envoy.config.core.v3.ProxyProtocolConfig\n\t(*PerHostConfig)(nil),                               // 5: envoy.config.core.v3.PerHostConfig\n\t(*SubstitutionFormatString)(nil),                    // 6: envoy.config.core.v3.SubstitutionFormatString\n}\nvar file_envoy_config_core_v3_proxy_protocol_proto_depIdxs = []int32{\n\t0, // 0: envoy.config.core.v3.ProxyProtocolPassThroughTLVs.match_type:type_name -> envoy.config.core.v3.ProxyProtocolPassThroughTLVs.PassTLVsMatchType\n\t6, // 1: envoy.config.core.v3.TlvEntry.format_string:type_name -> envoy.config.core.v3.SubstitutionFormatString\n\t1, // 2: envoy.config.core.v3.ProxyProtocolConfig.version:type_name -> envoy.config.core.v3.ProxyProtocolConfig.Version\n\t2, // 3: envoy.config.core.v3.ProxyProtocolConfig.pass_through_tlvs:type_name -> envoy.config.core.v3.ProxyProtocolPassThroughTLVs\n\t3, // 4: envoy.config.core.v3.ProxyProtocolConfig.added_tlvs:type_name -> envoy.config.core.v3.TlvEntry\n\t3, // 5: envoy.config.core.v3.PerHostConfig.added_tlvs:type_name -> envoy.config.core.v3.TlvEntry\n\t6, // [6:6] is the sub-list for method output_type\n\t6, // [6:6] is the sub-list for method input_type\n\t6, // [6:6] is the sub-list for extension type_name\n\t6, // [6:6] is the sub-list for extension extendee\n\t0, // [0:6] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_proxy_protocol_proto_init() }\nfunc file_envoy_config_core_v3_proxy_protocol_proto_init() {\n\tif File_envoy_config_core_v3_proxy_protocol_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_core_v3_substitution_format_string_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_proxy_protocol_proto_rawDesc), len(file_envoy_config_core_v3_proxy_protocol_proto_rawDesc)),\n\t\t\tNumEnums:      2,\n\t\t\tNumMessages:   4,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_proxy_protocol_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_proxy_protocol_proto_depIdxs,\n\t\tEnumInfos:         file_envoy_config_core_v3_proxy_protocol_proto_enumTypes,\n\t\tMessageInfos:      file_envoy_config_core_v3_proxy_protocol_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_proxy_protocol_proto = out.File\n\tfile_envoy_config_core_v3_proxy_protocol_proto_goTypes = nil\n\tfile_envoy_config_core_v3_proxy_protocol_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/proxy_protocol.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/proxy_protocol.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on ProxyProtocolPassThroughTLVs with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *ProxyProtocolPassThroughTLVs) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ProxyProtocolPassThroughTLVs with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ProxyProtocolPassThroughTLVsMultiError, or nil if none found.\nfunc (m *ProxyProtocolPassThroughTLVs) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ProxyProtocolPassThroughTLVs) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for MatchType\n\n\tfor idx, item := range m.GetTlvType() {\n\t\t_, _ = idx, item\n\n\t\tif item >= 256 {\n\t\t\terr := ProxyProtocolPassThroughTLVsValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"TlvType[%v]\", idx),\n\t\t\t\treason: \"value must be less than 256\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ProxyProtocolPassThroughTLVsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ProxyProtocolPassThroughTLVsMultiError is an error wrapping multiple\n// validation errors returned by ProxyProtocolPassThroughTLVs.ValidateAll() if\n// the designated constraints aren't met.\ntype ProxyProtocolPassThroughTLVsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ProxyProtocolPassThroughTLVsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ProxyProtocolPassThroughTLVsMultiError) AllErrors() []error { return m }\n\n// ProxyProtocolPassThroughTLVsValidationError is the validation error returned\n// by ProxyProtocolPassThroughTLVs.Validate if the designated constraints\n// aren't met.\ntype ProxyProtocolPassThroughTLVsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ProxyProtocolPassThroughTLVsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ProxyProtocolPassThroughTLVsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ProxyProtocolPassThroughTLVsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ProxyProtocolPassThroughTLVsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ProxyProtocolPassThroughTLVsValidationError) ErrorName() string {\n\treturn \"ProxyProtocolPassThroughTLVsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ProxyProtocolPassThroughTLVsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sProxyProtocolPassThroughTLVs.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ProxyProtocolPassThroughTLVsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ProxyProtocolPassThroughTLVsValidationError{}\n\n// Validate checks the field values on TlvEntry with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *TlvEntry) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on TlvEntry with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in TlvEntryMultiError, or nil\n// if none found.\nfunc (m *TlvEntry) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *TlvEntry) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetType() >= 256 {\n\t\terr := TlvEntryValidationError{\n\t\t\tfield:  \"Type\",\n\t\t\treason: \"value must be less than 256\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for Value\n\n\tif all {\n\t\tswitch v := interface{}(m.GetFormatString()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, TlvEntryValidationError{\n\t\t\t\t\tfield:  \"FormatString\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, TlvEntryValidationError{\n\t\t\t\t\tfield:  \"FormatString\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetFormatString()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn TlvEntryValidationError{\n\t\t\t\tfield:  \"FormatString\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn TlvEntryMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// TlvEntryMultiError is an error wrapping multiple validation errors returned\n// by TlvEntry.ValidateAll() if the designated constraints aren't met.\ntype TlvEntryMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m TlvEntryMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m TlvEntryMultiError) AllErrors() []error { return m }\n\n// TlvEntryValidationError is the validation error returned by\n// TlvEntry.Validate if the designated constraints aren't met.\ntype TlvEntryValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e TlvEntryValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e TlvEntryValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e TlvEntryValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e TlvEntryValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e TlvEntryValidationError) ErrorName() string { return \"TlvEntryValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e TlvEntryValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sTlvEntry.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = TlvEntryValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = TlvEntryValidationError{}\n\n// Validate checks the field values on ProxyProtocolConfig with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *ProxyProtocolConfig) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ProxyProtocolConfig with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ProxyProtocolConfigMultiError, or nil if none found.\nfunc (m *ProxyProtocolConfig) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ProxyProtocolConfig) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Version\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPassThroughTlvs()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ProxyProtocolConfigValidationError{\n\t\t\t\t\tfield:  \"PassThroughTlvs\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ProxyProtocolConfigValidationError{\n\t\t\t\t\tfield:  \"PassThroughTlvs\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPassThroughTlvs()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ProxyProtocolConfigValidationError{\n\t\t\t\tfield:  \"PassThroughTlvs\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetAddedTlvs() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ProxyProtocolConfigValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"AddedTlvs[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ProxyProtocolConfigValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"AddedTlvs[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ProxyProtocolConfigValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"AddedTlvs[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ProxyProtocolConfigMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ProxyProtocolConfigMultiError is an error wrapping multiple validation\n// errors returned by ProxyProtocolConfig.ValidateAll() if the designated\n// constraints aren't met.\ntype ProxyProtocolConfigMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ProxyProtocolConfigMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ProxyProtocolConfigMultiError) AllErrors() []error { return m }\n\n// ProxyProtocolConfigValidationError is the validation error returned by\n// ProxyProtocolConfig.Validate if the designated constraints aren't met.\ntype ProxyProtocolConfigValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ProxyProtocolConfigValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ProxyProtocolConfigValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ProxyProtocolConfigValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ProxyProtocolConfigValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ProxyProtocolConfigValidationError) ErrorName() string {\n\treturn \"ProxyProtocolConfigValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ProxyProtocolConfigValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sProxyProtocolConfig.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ProxyProtocolConfigValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ProxyProtocolConfigValidationError{}\n\n// Validate checks the field values on PerHostConfig with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *PerHostConfig) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on PerHostConfig with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in PerHostConfigMultiError, or\n// nil if none found.\nfunc (m *PerHostConfig) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *PerHostConfig) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetAddedTlvs() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, PerHostConfigValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"AddedTlvs[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, PerHostConfigValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"AddedTlvs[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn PerHostConfigValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"AddedTlvs[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn PerHostConfigMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// PerHostConfigMultiError is an error wrapping multiple validation errors\n// returned by PerHostConfig.ValidateAll() if the designated constraints\n// aren't met.\ntype PerHostConfigMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m PerHostConfigMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m PerHostConfigMultiError) AllErrors() []error { return m }\n\n// PerHostConfigValidationError is the validation error returned by\n// PerHostConfig.Validate if the designated constraints aren't met.\ntype PerHostConfigValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e PerHostConfigValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e PerHostConfigValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e PerHostConfigValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e PerHostConfigValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e PerHostConfigValidationError) ErrorName() string { return \"PerHostConfigValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e PerHostConfigValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sPerHostConfig.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = PerHostConfigValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = PerHostConfigValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/proxy_protocol_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/proxy_protocol.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *ProxyProtocolPassThroughTLVs) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ProxyProtocolPassThroughTLVs) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ProxyProtocolPassThroughTLVs) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.TlvType) > 0 {\n\t\tvar pksize2 int\n\t\tfor _, num := range m.TlvType {\n\t\t\tpksize2 += protohelpers.SizeOfVarint(uint64(num))\n\t\t}\n\t\ti -= pksize2\n\t\tj1 := i\n\t\tfor _, num := range m.TlvType {\n\t\t\tfor num >= 1<<7 {\n\t\t\t\tdAtA[j1] = uint8(uint64(num)&0x7f | 0x80)\n\t\t\t\tnum >>= 7\n\t\t\t\tj1++\n\t\t\t}\n\t\t\tdAtA[j1] = uint8(num)\n\t\t\tj1++\n\t\t}\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(pksize2))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.MatchType != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.MatchType))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *TlvEntry) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *TlvEntry) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *TlvEntry) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.FormatString != nil {\n\t\tsize, err := m.FormatString.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Type != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Type))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ProxyProtocolConfig) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ProxyProtocolConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ProxyProtocolConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.AddedTlvs) > 0 {\n\t\tfor iNdEx := len(m.AddedTlvs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.AddedTlvs[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif m.PassThroughTlvs != nil {\n\t\tsize, err := m.PassThroughTlvs.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Version != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Version))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *PerHostConfig) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *PerHostConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *PerHostConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.AddedTlvs) > 0 {\n\t\tfor iNdEx := len(m.AddedTlvs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.AddedTlvs[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ProxyProtocolPassThroughTLVs) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MatchType != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.MatchType))\n\t}\n\tif len(m.TlvType) > 0 {\n\t\tl = 0\n\t\tfor _, e := range m.TlvType {\n\t\t\tl += protohelpers.SizeOfVarint(uint64(e))\n\t\t}\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(l)) + l\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *TlvEntry) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Type != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Type))\n\t}\n\tl = len(m.Value)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.FormatString != nil {\n\t\tl = m.FormatString.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ProxyProtocolConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Version != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Version))\n\t}\n\tif m.PassThroughTlvs != nil {\n\t\tl = m.PassThroughTlvs.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.AddedTlvs) > 0 {\n\t\tfor _, e := range m.AddedTlvs {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *PerHostConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.AddedTlvs) > 0 {\n\t\tfor _, e := range m.AddedTlvs {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/resolver.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/resolver.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Configuration of DNS resolver option flags which control the behavior of the DNS resolver.\ntype DnsResolverOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Use TCP for all DNS queries instead of the default protocol UDP.\n\tUseTcpForDnsLookups bool `protobuf:\"varint,1,opt,name=use_tcp_for_dns_lookups,json=useTcpForDnsLookups,proto3\" json:\"use_tcp_for_dns_lookups,omitempty\"`\n\t// Do not use the default search domains; only query hostnames as-is or as aliases.\n\tNoDefaultSearchDomain bool `protobuf:\"varint,2,opt,name=no_default_search_domain,json=noDefaultSearchDomain,proto3\" json:\"no_default_search_domain,omitempty\"`\n\tunknownFields         protoimpl.UnknownFields\n\tsizeCache             protoimpl.SizeCache\n}\n\nfunc (x *DnsResolverOptions) Reset() {\n\t*x = DnsResolverOptions{}\n\tmi := &file_envoy_config_core_v3_resolver_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DnsResolverOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DnsResolverOptions) ProtoMessage() {}\n\nfunc (x *DnsResolverOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_resolver_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DnsResolverOptions.ProtoReflect.Descriptor instead.\nfunc (*DnsResolverOptions) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_resolver_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *DnsResolverOptions) GetUseTcpForDnsLookups() bool {\n\tif x != nil {\n\t\treturn x.UseTcpForDnsLookups\n\t}\n\treturn false\n}\n\nfunc (x *DnsResolverOptions) GetNoDefaultSearchDomain() bool {\n\tif x != nil {\n\t\treturn x.NoDefaultSearchDomain\n\t}\n\treturn false\n}\n\n// DNS resolution configuration which includes the underlying dns resolver addresses and options.\ntype DnsResolutionConfig struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// A list of dns resolver addresses. If specified, the DNS client library will perform resolution\n\t// via the underlying DNS resolvers. Otherwise, the default system resolvers\n\t// (e.g., /etc/resolv.conf) will be used.\n\tResolvers []*Address `protobuf:\"bytes,1,rep,name=resolvers,proto3\" json:\"resolvers,omitempty\"`\n\t// Configuration of DNS resolver option flags which control the behavior of the DNS resolver.\n\tDnsResolverOptions *DnsResolverOptions `protobuf:\"bytes,2,opt,name=dns_resolver_options,json=dnsResolverOptions,proto3\" json:\"dns_resolver_options,omitempty\"`\n\tunknownFields      protoimpl.UnknownFields\n\tsizeCache          protoimpl.SizeCache\n}\n\nfunc (x *DnsResolutionConfig) Reset() {\n\t*x = DnsResolutionConfig{}\n\tmi := &file_envoy_config_core_v3_resolver_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DnsResolutionConfig) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DnsResolutionConfig) ProtoMessage() {}\n\nfunc (x *DnsResolutionConfig) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_resolver_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DnsResolutionConfig.ProtoReflect.Descriptor instead.\nfunc (*DnsResolutionConfig) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_resolver_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *DnsResolutionConfig) GetResolvers() []*Address {\n\tif x != nil {\n\t\treturn x.Resolvers\n\t}\n\treturn nil\n}\n\nfunc (x *DnsResolutionConfig) GetDnsResolverOptions() *DnsResolverOptions {\n\tif x != nil {\n\t\treturn x.DnsResolverOptions\n\t}\n\treturn nil\n}\n\nvar File_envoy_config_core_v3_resolver_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_resolver_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"#envoy/config/core/v3/resolver.proto\\x12\\x14envoy.config.core.v3\\x1a\\\"envoy/config/core/v3/address.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a\\x17validate/validate.proto\\\"\\x83\\x01\\n\" +\n\t\"\\x12DnsResolverOptions\\x124\\n\" +\n\t\"\\x17use_tcp_for_dns_lookups\\x18\\x01 \\x01(\\bR\\x13useTcpForDnsLookups\\x127\\n\" +\n\t\"\\x18no_default_search_domain\\x18\\x02 \\x01(\\bR\\x15noDefaultSearchDomain\\\"\\xb8\\x01\\n\" +\n\t\"\\x13DnsResolutionConfig\\x12E\\n\" +\n\t\"\\tresolvers\\x18\\x01 \\x03(\\v2\\x1d.envoy.config.core.v3.AddressB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\tresolvers\\x12Z\\n\" +\n\t\"\\x14dns_resolver_options\\x18\\x02 \\x01(\\v2(.envoy.config.core.v3.DnsResolverOptionsR\\x12dnsResolverOptionsB\\x81\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\rResolverProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_resolver_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_resolver_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_resolver_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_resolver_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_resolver_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_resolver_proto_rawDesc), len(file_envoy_config_core_v3_resolver_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_resolver_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_resolver_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_envoy_config_core_v3_resolver_proto_goTypes = []any{\n\t(*DnsResolverOptions)(nil),  // 0: envoy.config.core.v3.DnsResolverOptions\n\t(*DnsResolutionConfig)(nil), // 1: envoy.config.core.v3.DnsResolutionConfig\n\t(*Address)(nil),             // 2: envoy.config.core.v3.Address\n}\nvar file_envoy_config_core_v3_resolver_proto_depIdxs = []int32{\n\t2, // 0: envoy.config.core.v3.DnsResolutionConfig.resolvers:type_name -> envoy.config.core.v3.Address\n\t0, // 1: envoy.config.core.v3.DnsResolutionConfig.dns_resolver_options:type_name -> envoy.config.core.v3.DnsResolverOptions\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_resolver_proto_init() }\nfunc file_envoy_config_core_v3_resolver_proto_init() {\n\tif File_envoy_config_core_v3_resolver_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_core_v3_address_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_resolver_proto_rawDesc), len(file_envoy_config_core_v3_resolver_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_resolver_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_resolver_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_core_v3_resolver_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_resolver_proto = out.File\n\tfile_envoy_config_core_v3_resolver_proto_goTypes = nil\n\tfile_envoy_config_core_v3_resolver_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/resolver.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/resolver.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on DnsResolverOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *DnsResolverOptions) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DnsResolverOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// DnsResolverOptionsMultiError, or nil if none found.\nfunc (m *DnsResolverOptions) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DnsResolverOptions) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for UseTcpForDnsLookups\n\n\t// no validation rules for NoDefaultSearchDomain\n\n\tif len(errors) > 0 {\n\t\treturn DnsResolverOptionsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DnsResolverOptionsMultiError is an error wrapping multiple validation errors\n// returned by DnsResolverOptions.ValidateAll() if the designated constraints\n// aren't met.\ntype DnsResolverOptionsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DnsResolverOptionsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DnsResolverOptionsMultiError) AllErrors() []error { return m }\n\n// DnsResolverOptionsValidationError is the validation error returned by\n// DnsResolverOptions.Validate if the designated constraints aren't met.\ntype DnsResolverOptionsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DnsResolverOptionsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DnsResolverOptionsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DnsResolverOptionsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DnsResolverOptionsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DnsResolverOptionsValidationError) ErrorName() string {\n\treturn \"DnsResolverOptionsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e DnsResolverOptionsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDnsResolverOptions.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DnsResolverOptionsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DnsResolverOptionsValidationError{}\n\n// Validate checks the field values on DnsResolutionConfig with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *DnsResolutionConfig) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DnsResolutionConfig with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// DnsResolutionConfigMultiError, or nil if none found.\nfunc (m *DnsResolutionConfig) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DnsResolutionConfig) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetResolvers()) < 1 {\n\t\terr := DnsResolutionConfigValidationError{\n\t\t\tfield:  \"Resolvers\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetResolvers() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DnsResolutionConfigValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Resolvers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DnsResolutionConfigValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Resolvers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DnsResolutionConfigValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Resolvers[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetDnsResolverOptions()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, DnsResolutionConfigValidationError{\n\t\t\t\t\tfield:  \"DnsResolverOptions\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, DnsResolutionConfigValidationError{\n\t\t\t\t\tfield:  \"DnsResolverOptions\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetDnsResolverOptions()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn DnsResolutionConfigValidationError{\n\t\t\t\tfield:  \"DnsResolverOptions\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn DnsResolutionConfigMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DnsResolutionConfigMultiError is an error wrapping multiple validation\n// errors returned by DnsResolutionConfig.ValidateAll() if the designated\n// constraints aren't met.\ntype DnsResolutionConfigMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DnsResolutionConfigMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DnsResolutionConfigMultiError) AllErrors() []error { return m }\n\n// DnsResolutionConfigValidationError is the validation error returned by\n// DnsResolutionConfig.Validate if the designated constraints aren't met.\ntype DnsResolutionConfigValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DnsResolutionConfigValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DnsResolutionConfigValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DnsResolutionConfigValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DnsResolutionConfigValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DnsResolutionConfigValidationError) ErrorName() string {\n\treturn \"DnsResolutionConfigValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e DnsResolutionConfigValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDnsResolutionConfig.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DnsResolutionConfigValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DnsResolutionConfigValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/resolver_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/resolver.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *DnsResolverOptions) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DnsResolverOptions) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DnsResolverOptions) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.NoDefaultSearchDomain {\n\t\ti--\n\t\tif m.NoDefaultSearchDomain {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.UseTcpForDnsLookups {\n\t\ti--\n\t\tif m.UseTcpForDnsLookups {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DnsResolutionConfig) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DnsResolutionConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DnsResolutionConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.DnsResolverOptions != nil {\n\t\tsize, err := m.DnsResolverOptions.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Resolvers) > 0 {\n\t\tfor iNdEx := len(m.Resolvers) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Resolvers[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DnsResolverOptions) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.UseTcpForDnsLookups {\n\t\tn += 2\n\t}\n\tif m.NoDefaultSearchDomain {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *DnsResolutionConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Resolvers) > 0 {\n\t\tfor _, e := range m.Resolvers {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.DnsResolverOptions != nil {\n\t\tl = m.DnsResolverOptions.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/socket_cmsg_headers.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/socket_cmsg_headers.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Configuration for socket cmsg headers.\n// See `:ref:CMSG <https://man7.org/linux/man-pages/man3/cmsg.3.html>`_ for further information.\ntype SocketCmsgHeaders struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// cmsg level. Default is unset.\n\tLevel *wrapperspb.UInt32Value `protobuf:\"bytes,1,opt,name=level,proto3\" json:\"level,omitempty\"`\n\t// cmsg type. Default is unset.\n\tType *wrapperspb.UInt32Value `protobuf:\"bytes,2,opt,name=type,proto3\" json:\"type,omitempty\"`\n\t// Expected size of cmsg value. Default is zero.\n\tExpectedSize  uint32 `protobuf:\"varint,3,opt,name=expected_size,json=expectedSize,proto3\" json:\"expected_size,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *SocketCmsgHeaders) Reset() {\n\t*x = SocketCmsgHeaders{}\n\tmi := &file_envoy_config_core_v3_socket_cmsg_headers_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SocketCmsgHeaders) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SocketCmsgHeaders) ProtoMessage() {}\n\nfunc (x *SocketCmsgHeaders) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_socket_cmsg_headers_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SocketCmsgHeaders.ProtoReflect.Descriptor instead.\nfunc (*SocketCmsgHeaders) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_socket_cmsg_headers_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *SocketCmsgHeaders) GetLevel() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.Level\n\t}\n\treturn nil\n}\n\nfunc (x *SocketCmsgHeaders) GetType() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn nil\n}\n\nfunc (x *SocketCmsgHeaders) GetExpectedSize() uint32 {\n\tif x != nil {\n\t\treturn x.ExpectedSize\n\t}\n\treturn 0\n}\n\nvar File_envoy_config_core_v3_socket_cmsg_headers_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_socket_cmsg_headers_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\".envoy/config/core/v3/socket_cmsg_headers.proto\\x12\\x14envoy.config.core.v3\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a\\x1dudpa/annotations/status.proto\\\"\\x9e\\x01\\n\" +\n\t\"\\x11SocketCmsgHeaders\\x122\\n\" +\n\t\"\\x05level\\x18\\x01 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR\\x05level\\x120\\n\" +\n\t\"\\x04type\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR\\x04type\\x12#\\n\" +\n\t\"\\rexpected_size\\x18\\x03 \\x01(\\rR\\fexpectedSizeB\\x8a\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\x16SocketCmsgHeadersProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_socket_cmsg_headers_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_socket_cmsg_headers_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_socket_cmsg_headers_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_socket_cmsg_headers_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_socket_cmsg_headers_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_socket_cmsg_headers_proto_rawDesc), len(file_envoy_config_core_v3_socket_cmsg_headers_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_socket_cmsg_headers_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_socket_cmsg_headers_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_config_core_v3_socket_cmsg_headers_proto_goTypes = []any{\n\t(*SocketCmsgHeaders)(nil),      // 0: envoy.config.core.v3.SocketCmsgHeaders\n\t(*wrapperspb.UInt32Value)(nil), // 1: google.protobuf.UInt32Value\n}\nvar file_envoy_config_core_v3_socket_cmsg_headers_proto_depIdxs = []int32{\n\t1, // 0: envoy.config.core.v3.SocketCmsgHeaders.level:type_name -> google.protobuf.UInt32Value\n\t1, // 1: envoy.config.core.v3.SocketCmsgHeaders.type:type_name -> google.protobuf.UInt32Value\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_socket_cmsg_headers_proto_init() }\nfunc file_envoy_config_core_v3_socket_cmsg_headers_proto_init() {\n\tif File_envoy_config_core_v3_socket_cmsg_headers_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_socket_cmsg_headers_proto_rawDesc), len(file_envoy_config_core_v3_socket_cmsg_headers_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_socket_cmsg_headers_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_socket_cmsg_headers_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_core_v3_socket_cmsg_headers_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_socket_cmsg_headers_proto = out.File\n\tfile_envoy_config_core_v3_socket_cmsg_headers_proto_goTypes = nil\n\tfile_envoy_config_core_v3_socket_cmsg_headers_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/socket_cmsg_headers.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/socket_cmsg_headers.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on SocketCmsgHeaders with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *SocketCmsgHeaders) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on SocketCmsgHeaders with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// SocketCmsgHeadersMultiError, or nil if none found.\nfunc (m *SocketCmsgHeaders) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *SocketCmsgHeaders) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetLevel()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, SocketCmsgHeadersValidationError{\n\t\t\t\t\tfield:  \"Level\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, SocketCmsgHeadersValidationError{\n\t\t\t\t\tfield:  \"Level\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetLevel()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn SocketCmsgHeadersValidationError{\n\t\t\t\tfield:  \"Level\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetType()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, SocketCmsgHeadersValidationError{\n\t\t\t\t\tfield:  \"Type\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, SocketCmsgHeadersValidationError{\n\t\t\t\t\tfield:  \"Type\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetType()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn SocketCmsgHeadersValidationError{\n\t\t\t\tfield:  \"Type\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for ExpectedSize\n\n\tif len(errors) > 0 {\n\t\treturn SocketCmsgHeadersMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// SocketCmsgHeadersMultiError is an error wrapping multiple validation errors\n// returned by SocketCmsgHeaders.ValidateAll() if the designated constraints\n// aren't met.\ntype SocketCmsgHeadersMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m SocketCmsgHeadersMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m SocketCmsgHeadersMultiError) AllErrors() []error { return m }\n\n// SocketCmsgHeadersValidationError is the validation error returned by\n// SocketCmsgHeaders.Validate if the designated constraints aren't met.\ntype SocketCmsgHeadersValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e SocketCmsgHeadersValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e SocketCmsgHeadersValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e SocketCmsgHeadersValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e SocketCmsgHeadersValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e SocketCmsgHeadersValidationError) ErrorName() string {\n\treturn \"SocketCmsgHeadersValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e SocketCmsgHeadersValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sSocketCmsgHeaders.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = SocketCmsgHeadersValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = SocketCmsgHeadersValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/socket_cmsg_headers_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/socket_cmsg_headers.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\twrapperspb \"github.com/planetscale/vtprotobuf/types/known/wrapperspb\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *SocketCmsgHeaders) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SocketCmsgHeaders) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SocketCmsgHeaders) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.ExpectedSize != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.ExpectedSize))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.Type != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.Type).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Level != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.Level).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SocketCmsgHeaders) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Level != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.Level).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Type != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.Type).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ExpectedSize != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.ExpectedSize))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/socket_option.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/socket_option.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype SocketOption_SocketState int32\n\nconst (\n\t// Socket options are applied after socket creation but before binding the socket to a port\n\tSocketOption_STATE_PREBIND SocketOption_SocketState = 0\n\t// Socket options are applied after binding the socket to a port but before calling listen()\n\tSocketOption_STATE_BOUND SocketOption_SocketState = 1\n\t// Socket options are applied after calling listen()\n\tSocketOption_STATE_LISTENING SocketOption_SocketState = 2\n)\n\n// Enum value maps for SocketOption_SocketState.\nvar (\n\tSocketOption_SocketState_name = map[int32]string{\n\t\t0: \"STATE_PREBIND\",\n\t\t1: \"STATE_BOUND\",\n\t\t2: \"STATE_LISTENING\",\n\t}\n\tSocketOption_SocketState_value = map[string]int32{\n\t\t\"STATE_PREBIND\":   0,\n\t\t\"STATE_BOUND\":     1,\n\t\t\"STATE_LISTENING\": 2,\n\t}\n)\n\nfunc (x SocketOption_SocketState) Enum() *SocketOption_SocketState {\n\tp := new(SocketOption_SocketState)\n\t*p = x\n\treturn p\n}\n\nfunc (x SocketOption_SocketState) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (SocketOption_SocketState) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_core_v3_socket_option_proto_enumTypes[0].Descriptor()\n}\n\nfunc (SocketOption_SocketState) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_core_v3_socket_option_proto_enumTypes[0]\n}\n\nfunc (x SocketOption_SocketState) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use SocketOption_SocketState.Descriptor instead.\nfunc (SocketOption_SocketState) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_socket_option_proto_rawDescGZIP(), []int{0, 0}\n}\n\n// Generic socket option message. This would be used to set socket options that\n// might not exist in upstream kernels or precompiled Envoy binaries.\n//\n// For example:\n//\n// .. code-block:: json\n//\n//\t{\n//\t  \"description\": \"support tcp keep alive\",\n//\t  \"state\": 0,\n//\t  \"level\": 1,\n//\t  \"name\": 9,\n//\t  \"int_value\": 1,\n//\t}\n//\n// 1 means SOL_SOCKET and 9 means SO_KEEPALIVE on Linux.\n// With the above configuration, `TCP Keep-Alives <https://www.freesoft.org/CIE/RFC/1122/114.htm>`_\n// can be enabled in socket with Linux, which can be used in\n// :ref:`listener's<envoy_v3_api_field_config.listener.v3.Listener.socket_options>` or\n// :ref:`admin's <envoy_v3_api_field_config.bootstrap.v3.Admin.socket_options>` socket_options etc.\n//\n// It should be noted that the name or level may have different values on different platforms.\n// [#next-free-field: 8]\ntype SocketOption struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// An optional name to give this socket option for debugging, etc.\n\t// Uniqueness is not required and no special meaning is assumed.\n\tDescription string `protobuf:\"bytes,1,opt,name=description,proto3\" json:\"description,omitempty\"`\n\t// Corresponding to the level value passed to setsockopt, such as IPPROTO_TCP\n\tLevel int64 `protobuf:\"varint,2,opt,name=level,proto3\" json:\"level,omitempty\"`\n\t// The numeric name as passed to setsockopt\n\tName int64 `protobuf:\"varint,3,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Types that are valid to be assigned to Value:\n\t//\n\t//\t*SocketOption_IntValue\n\t//\t*SocketOption_BufValue\n\tValue isSocketOption_Value `protobuf_oneof:\"value\"`\n\t// The state in which the option will be applied. When used in BindConfig\n\t// STATE_PREBIND is currently the only valid value.\n\tState SocketOption_SocketState `protobuf:\"varint,6,opt,name=state,proto3,enum=envoy.config.core.v3.SocketOption_SocketState\" json:\"state,omitempty\"`\n\t// Apply the socket option to the specified `socket type <https://linux.die.net/man/2/socket>`_.\n\t// If not specified, the socket option will be applied to all socket types.\n\tType          *SocketOption_SocketType `protobuf:\"bytes,7,opt,name=type,proto3\" json:\"type,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *SocketOption) Reset() {\n\t*x = SocketOption{}\n\tmi := &file_envoy_config_core_v3_socket_option_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SocketOption) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SocketOption) ProtoMessage() {}\n\nfunc (x *SocketOption) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_socket_option_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SocketOption.ProtoReflect.Descriptor instead.\nfunc (*SocketOption) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_socket_option_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *SocketOption) GetDescription() string {\n\tif x != nil {\n\t\treturn x.Description\n\t}\n\treturn \"\"\n}\n\nfunc (x *SocketOption) GetLevel() int64 {\n\tif x != nil {\n\t\treturn x.Level\n\t}\n\treturn 0\n}\n\nfunc (x *SocketOption) GetName() int64 {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn 0\n}\n\nfunc (x *SocketOption) GetValue() isSocketOption_Value {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nfunc (x *SocketOption) GetIntValue() int64 {\n\tif x != nil {\n\t\tif x, ok := x.Value.(*SocketOption_IntValue); ok {\n\t\t\treturn x.IntValue\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (x *SocketOption) GetBufValue() []byte {\n\tif x != nil {\n\t\tif x, ok := x.Value.(*SocketOption_BufValue); ok {\n\t\t\treturn x.BufValue\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *SocketOption) GetState() SocketOption_SocketState {\n\tif x != nil {\n\t\treturn x.State\n\t}\n\treturn SocketOption_STATE_PREBIND\n}\n\nfunc (x *SocketOption) GetType() *SocketOption_SocketType {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn nil\n}\n\ntype isSocketOption_Value interface {\n\tisSocketOption_Value()\n}\n\ntype SocketOption_IntValue struct {\n\t// Because many sockopts take an int value.\n\tIntValue int64 `protobuf:\"varint,4,opt,name=int_value,json=intValue,proto3,oneof\"`\n}\n\ntype SocketOption_BufValue struct {\n\t// Otherwise it's a byte buffer.\n\tBufValue []byte `protobuf:\"bytes,5,opt,name=buf_value,json=bufValue,proto3,oneof\"`\n}\n\nfunc (*SocketOption_IntValue) isSocketOption_Value() {}\n\nfunc (*SocketOption_BufValue) isSocketOption_Value() {}\n\ntype SocketOptionsOverride struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tSocketOptions []*SocketOption        `protobuf:\"bytes,1,rep,name=socket_options,json=socketOptions,proto3\" json:\"socket_options,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *SocketOptionsOverride) Reset() {\n\t*x = SocketOptionsOverride{}\n\tmi := &file_envoy_config_core_v3_socket_option_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SocketOptionsOverride) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SocketOptionsOverride) ProtoMessage() {}\n\nfunc (x *SocketOptionsOverride) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_socket_option_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SocketOptionsOverride.ProtoReflect.Descriptor instead.\nfunc (*SocketOptionsOverride) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_socket_option_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *SocketOptionsOverride) GetSocketOptions() []*SocketOption {\n\tif x != nil {\n\t\treturn x.SocketOptions\n\t}\n\treturn nil\n}\n\n// The `socket type <https://linux.die.net/man/2/socket>`_ to apply the socket option to.\n// Only one field should be set. If multiple fields are set, the precedence order will determine\n// the selected one. If none of the fields is set, the socket option will be applied to all socket types.\n//\n// For example:\n// If :ref:`stream <envoy_v3_api_field_config.core.v3.SocketOption.SocketType.stream>` is set,\n// it takes precedence over :ref:`datagram <envoy_v3_api_field_config.core.v3.SocketOption.SocketType.datagram>`.\ntype SocketOption_SocketType struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Apply the socket option to the stream socket type.\n\tStream *SocketOption_SocketType_Stream `protobuf:\"bytes,1,opt,name=stream,proto3\" json:\"stream,omitempty\"`\n\t// Apply the socket option to the datagram socket type.\n\tDatagram      *SocketOption_SocketType_Datagram `protobuf:\"bytes,2,opt,name=datagram,proto3\" json:\"datagram,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *SocketOption_SocketType) Reset() {\n\t*x = SocketOption_SocketType{}\n\tmi := &file_envoy_config_core_v3_socket_option_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SocketOption_SocketType) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SocketOption_SocketType) ProtoMessage() {}\n\nfunc (x *SocketOption_SocketType) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_socket_option_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SocketOption_SocketType.ProtoReflect.Descriptor instead.\nfunc (*SocketOption_SocketType) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_socket_option_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *SocketOption_SocketType) GetStream() *SocketOption_SocketType_Stream {\n\tif x != nil {\n\t\treturn x.Stream\n\t}\n\treturn nil\n}\n\nfunc (x *SocketOption_SocketType) GetDatagram() *SocketOption_SocketType_Datagram {\n\tif x != nil {\n\t\treturn x.Datagram\n\t}\n\treturn nil\n}\n\n// The stream socket type.\ntype SocketOption_SocketType_Stream struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *SocketOption_SocketType_Stream) Reset() {\n\t*x = SocketOption_SocketType_Stream{}\n\tmi := &file_envoy_config_core_v3_socket_option_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SocketOption_SocketType_Stream) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SocketOption_SocketType_Stream) ProtoMessage() {}\n\nfunc (x *SocketOption_SocketType_Stream) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_socket_option_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SocketOption_SocketType_Stream.ProtoReflect.Descriptor instead.\nfunc (*SocketOption_SocketType_Stream) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_socket_option_proto_rawDescGZIP(), []int{0, 0, 0}\n}\n\n// The datagram socket type.\ntype SocketOption_SocketType_Datagram struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *SocketOption_SocketType_Datagram) Reset() {\n\t*x = SocketOption_SocketType_Datagram{}\n\tmi := &file_envoy_config_core_v3_socket_option_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SocketOption_SocketType_Datagram) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SocketOption_SocketType_Datagram) ProtoMessage() {}\n\nfunc (x *SocketOption_SocketType_Datagram) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_socket_option_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SocketOption_SocketType_Datagram.ProtoReflect.Descriptor instead.\nfunc (*SocketOption_SocketType_Datagram) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_socket_option_proto_rawDescGZIP(), []int{0, 0, 1}\n}\n\nvar File_envoy_config_core_v3_socket_option_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_socket_option_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"(envoy/config/core/v3/socket_option.proto\\x12\\x14envoy.config.core.v3\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xef\\x04\\n\" +\n\t\"\\fSocketOption\\x12 \\n\" +\n\t\"\\vdescription\\x18\\x01 \\x01(\\tR\\vdescription\\x12\\x14\\n\" +\n\t\"\\x05level\\x18\\x02 \\x01(\\x03R\\x05level\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x03 \\x01(\\x03R\\x04name\\x12\\x1d\\n\" +\n\t\"\\tint_value\\x18\\x04 \\x01(\\x03H\\x00R\\bintValue\\x12\\x1d\\n\" +\n\t\"\\tbuf_value\\x18\\x05 \\x01(\\fH\\x00R\\bbufValue\\x12N\\n\" +\n\t\"\\x05state\\x18\\x06 \\x01(\\x0e2..envoy.config.core.v3.SocketOption.SocketStateB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\x05state\\x12A\\n\" +\n\t\"\\x04type\\x18\\a \\x01(\\v2-.envoy.config.core.v3.SocketOption.SocketTypeR\\x04type\\x1a\\xc4\\x01\\n\" +\n\t\"\\n\" +\n\t\"SocketType\\x12L\\n\" +\n\t\"\\x06stream\\x18\\x01 \\x01(\\v24.envoy.config.core.v3.SocketOption.SocketType.StreamR\\x06stream\\x12R\\n\" +\n\t\"\\bdatagram\\x18\\x02 \\x01(\\v26.envoy.config.core.v3.SocketOption.SocketType.DatagramR\\bdatagram\\x1a\\b\\n\" +\n\t\"\\x06Stream\\x1a\\n\" +\n\t\"\\n\" +\n\t\"\\bDatagram\\\"F\\n\" +\n\t\"\\vSocketState\\x12\\x11\\n\" +\n\t\"\\rSTATE_PREBIND\\x10\\x00\\x12\\x0f\\n\" +\n\t\"\\vSTATE_BOUND\\x10\\x01\\x12\\x13\\n\" +\n\t\"\\x0fSTATE_LISTENING\\x10\\x02:%\\x9aň\\x1e \\n\" +\n\t\"\\x1eenvoy.api.v2.core.SocketOptionB\\f\\n\" +\n\t\"\\x05value\\x12\\x03\\xf8B\\x01\\\"b\\n\" +\n\t\"\\x15SocketOptionsOverride\\x12I\\n\" +\n\t\"\\x0esocket_options\\x18\\x01 \\x03(\\v2\\\".envoy.config.core.v3.SocketOptionR\\rsocketOptionsB\\x85\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\x11SocketOptionProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_socket_option_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_socket_option_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_socket_option_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_socket_option_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_socket_option_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_socket_option_proto_rawDesc), len(file_envoy_config_core_v3_socket_option_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_socket_option_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_socket_option_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_envoy_config_core_v3_socket_option_proto_msgTypes = make([]protoimpl.MessageInfo, 5)\nvar file_envoy_config_core_v3_socket_option_proto_goTypes = []any{\n\t(SocketOption_SocketState)(0),            // 0: envoy.config.core.v3.SocketOption.SocketState\n\t(*SocketOption)(nil),                     // 1: envoy.config.core.v3.SocketOption\n\t(*SocketOptionsOverride)(nil),            // 2: envoy.config.core.v3.SocketOptionsOverride\n\t(*SocketOption_SocketType)(nil),          // 3: envoy.config.core.v3.SocketOption.SocketType\n\t(*SocketOption_SocketType_Stream)(nil),   // 4: envoy.config.core.v3.SocketOption.SocketType.Stream\n\t(*SocketOption_SocketType_Datagram)(nil), // 5: envoy.config.core.v3.SocketOption.SocketType.Datagram\n}\nvar file_envoy_config_core_v3_socket_option_proto_depIdxs = []int32{\n\t0, // 0: envoy.config.core.v3.SocketOption.state:type_name -> envoy.config.core.v3.SocketOption.SocketState\n\t3, // 1: envoy.config.core.v3.SocketOption.type:type_name -> envoy.config.core.v3.SocketOption.SocketType\n\t1, // 2: envoy.config.core.v3.SocketOptionsOverride.socket_options:type_name -> envoy.config.core.v3.SocketOption\n\t4, // 3: envoy.config.core.v3.SocketOption.SocketType.stream:type_name -> envoy.config.core.v3.SocketOption.SocketType.Stream\n\t5, // 4: envoy.config.core.v3.SocketOption.SocketType.datagram:type_name -> envoy.config.core.v3.SocketOption.SocketType.Datagram\n\t5, // [5:5] is the sub-list for method output_type\n\t5, // [5:5] is the sub-list for method input_type\n\t5, // [5:5] is the sub-list for extension type_name\n\t5, // [5:5] is the sub-list for extension extendee\n\t0, // [0:5] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_socket_option_proto_init() }\nfunc file_envoy_config_core_v3_socket_option_proto_init() {\n\tif File_envoy_config_core_v3_socket_option_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_core_v3_socket_option_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*SocketOption_IntValue)(nil),\n\t\t(*SocketOption_BufValue)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_socket_option_proto_rawDesc), len(file_envoy_config_core_v3_socket_option_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   5,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_socket_option_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_socket_option_proto_depIdxs,\n\t\tEnumInfos:         file_envoy_config_core_v3_socket_option_proto_enumTypes,\n\t\tMessageInfos:      file_envoy_config_core_v3_socket_option_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_socket_option_proto = out.File\n\tfile_envoy_config_core_v3_socket_option_proto_goTypes = nil\n\tfile_envoy_config_core_v3_socket_option_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/socket_option.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/socket_option.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on SocketOption with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *SocketOption) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on SocketOption with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in SocketOptionMultiError, or\n// nil if none found.\nfunc (m *SocketOption) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *SocketOption) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Description\n\n\t// no validation rules for Level\n\n\t// no validation rules for Name\n\n\tif _, ok := SocketOption_SocketState_name[int32(m.GetState())]; !ok {\n\t\terr := SocketOptionValidationError{\n\t\t\tfield:  \"State\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetType()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, SocketOptionValidationError{\n\t\t\t\t\tfield:  \"Type\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, SocketOptionValidationError{\n\t\t\t\t\tfield:  \"Type\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetType()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn SocketOptionValidationError{\n\t\t\t\tfield:  \"Type\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\toneofValuePresent := false\n\tswitch v := m.Value.(type) {\n\tcase *SocketOption_IntValue:\n\t\tif v == nil {\n\t\t\terr := SocketOptionValidationError{\n\t\t\t\tfield:  \"Value\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofValuePresent = true\n\t\t// no validation rules for IntValue\n\tcase *SocketOption_BufValue:\n\t\tif v == nil {\n\t\t\terr := SocketOptionValidationError{\n\t\t\t\tfield:  \"Value\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofValuePresent = true\n\t\t// no validation rules for BufValue\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofValuePresent {\n\t\terr := SocketOptionValidationError{\n\t\t\tfield:  \"Value\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn SocketOptionMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// SocketOptionMultiError is an error wrapping multiple validation errors\n// returned by SocketOption.ValidateAll() if the designated constraints aren't met.\ntype SocketOptionMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m SocketOptionMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m SocketOptionMultiError) AllErrors() []error { return m }\n\n// SocketOptionValidationError is the validation error returned by\n// SocketOption.Validate if the designated constraints aren't met.\ntype SocketOptionValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e SocketOptionValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e SocketOptionValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e SocketOptionValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e SocketOptionValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e SocketOptionValidationError) ErrorName() string { return \"SocketOptionValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e SocketOptionValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sSocketOption.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = SocketOptionValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = SocketOptionValidationError{}\n\n// Validate checks the field values on SocketOptionsOverride with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *SocketOptionsOverride) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on SocketOptionsOverride with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// SocketOptionsOverrideMultiError, or nil if none found.\nfunc (m *SocketOptionsOverride) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *SocketOptionsOverride) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetSocketOptions() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, SocketOptionsOverrideValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"SocketOptions[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, SocketOptionsOverrideValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"SocketOptions[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn SocketOptionsOverrideValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"SocketOptions[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn SocketOptionsOverrideMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// SocketOptionsOverrideMultiError is an error wrapping multiple validation\n// errors returned by SocketOptionsOverride.ValidateAll() if the designated\n// constraints aren't met.\ntype SocketOptionsOverrideMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m SocketOptionsOverrideMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m SocketOptionsOverrideMultiError) AllErrors() []error { return m }\n\n// SocketOptionsOverrideValidationError is the validation error returned by\n// SocketOptionsOverride.Validate if the designated constraints aren't met.\ntype SocketOptionsOverrideValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e SocketOptionsOverrideValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e SocketOptionsOverrideValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e SocketOptionsOverrideValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e SocketOptionsOverrideValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e SocketOptionsOverrideValidationError) ErrorName() string {\n\treturn \"SocketOptionsOverrideValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e SocketOptionsOverrideValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sSocketOptionsOverride.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = SocketOptionsOverrideValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = SocketOptionsOverrideValidationError{}\n\n// Validate checks the field values on SocketOption_SocketType with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *SocketOption_SocketType) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on SocketOption_SocketType with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// SocketOption_SocketTypeMultiError, or nil if none found.\nfunc (m *SocketOption_SocketType) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *SocketOption_SocketType) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetStream()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, SocketOption_SocketTypeValidationError{\n\t\t\t\t\tfield:  \"Stream\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, SocketOption_SocketTypeValidationError{\n\t\t\t\t\tfield:  \"Stream\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetStream()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn SocketOption_SocketTypeValidationError{\n\t\t\t\tfield:  \"Stream\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetDatagram()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, SocketOption_SocketTypeValidationError{\n\t\t\t\t\tfield:  \"Datagram\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, SocketOption_SocketTypeValidationError{\n\t\t\t\t\tfield:  \"Datagram\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetDatagram()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn SocketOption_SocketTypeValidationError{\n\t\t\t\tfield:  \"Datagram\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn SocketOption_SocketTypeMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// SocketOption_SocketTypeMultiError is an error wrapping multiple validation\n// errors returned by SocketOption_SocketType.ValidateAll() if the designated\n// constraints aren't met.\ntype SocketOption_SocketTypeMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m SocketOption_SocketTypeMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m SocketOption_SocketTypeMultiError) AllErrors() []error { return m }\n\n// SocketOption_SocketTypeValidationError is the validation error returned by\n// SocketOption_SocketType.Validate if the designated constraints aren't met.\ntype SocketOption_SocketTypeValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e SocketOption_SocketTypeValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e SocketOption_SocketTypeValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e SocketOption_SocketTypeValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e SocketOption_SocketTypeValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e SocketOption_SocketTypeValidationError) ErrorName() string {\n\treturn \"SocketOption_SocketTypeValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e SocketOption_SocketTypeValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sSocketOption_SocketType.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = SocketOption_SocketTypeValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = SocketOption_SocketTypeValidationError{}\n\n// Validate checks the field values on SocketOption_SocketType_Stream with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *SocketOption_SocketType_Stream) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on SocketOption_SocketType_Stream with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// SocketOption_SocketType_StreamMultiError, or nil if none found.\nfunc (m *SocketOption_SocketType_Stream) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *SocketOption_SocketType_Stream) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn SocketOption_SocketType_StreamMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// SocketOption_SocketType_StreamMultiError is an error wrapping multiple\n// validation errors returned by SocketOption_SocketType_Stream.ValidateAll()\n// if the designated constraints aren't met.\ntype SocketOption_SocketType_StreamMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m SocketOption_SocketType_StreamMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m SocketOption_SocketType_StreamMultiError) AllErrors() []error { return m }\n\n// SocketOption_SocketType_StreamValidationError is the validation error\n// returned by SocketOption_SocketType_Stream.Validate if the designated\n// constraints aren't met.\ntype SocketOption_SocketType_StreamValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e SocketOption_SocketType_StreamValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e SocketOption_SocketType_StreamValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e SocketOption_SocketType_StreamValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e SocketOption_SocketType_StreamValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e SocketOption_SocketType_StreamValidationError) ErrorName() string {\n\treturn \"SocketOption_SocketType_StreamValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e SocketOption_SocketType_StreamValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sSocketOption_SocketType_Stream.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = SocketOption_SocketType_StreamValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = SocketOption_SocketType_StreamValidationError{}\n\n// Validate checks the field values on SocketOption_SocketType_Datagram with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the first error encountered is returned, or nil if there are\n// no violations.\nfunc (m *SocketOption_SocketType_Datagram) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on SocketOption_SocketType_Datagram with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// SocketOption_SocketType_DatagramMultiError, or nil if none found.\nfunc (m *SocketOption_SocketType_Datagram) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *SocketOption_SocketType_Datagram) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn SocketOption_SocketType_DatagramMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// SocketOption_SocketType_DatagramMultiError is an error wrapping multiple\n// validation errors returned by\n// SocketOption_SocketType_Datagram.ValidateAll() if the designated\n// constraints aren't met.\ntype SocketOption_SocketType_DatagramMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m SocketOption_SocketType_DatagramMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m SocketOption_SocketType_DatagramMultiError) AllErrors() []error { return m }\n\n// SocketOption_SocketType_DatagramValidationError is the validation error\n// returned by SocketOption_SocketType_Datagram.Validate if the designated\n// constraints aren't met.\ntype SocketOption_SocketType_DatagramValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e SocketOption_SocketType_DatagramValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e SocketOption_SocketType_DatagramValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e SocketOption_SocketType_DatagramValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e SocketOption_SocketType_DatagramValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e SocketOption_SocketType_DatagramValidationError) ErrorName() string {\n\treturn \"SocketOption_SocketType_DatagramValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e SocketOption_SocketType_DatagramValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sSocketOption_SocketType_Datagram.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = SocketOption_SocketType_DatagramValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = SocketOption_SocketType_DatagramValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/socket_option_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/socket_option.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *SocketOption_SocketType_Stream) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SocketOption_SocketType_Stream) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SocketOption_SocketType_Stream) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SocketOption_SocketType_Datagram) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SocketOption_SocketType_Datagram) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SocketOption_SocketType_Datagram) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SocketOption_SocketType) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SocketOption_SocketType) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SocketOption_SocketType) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Datagram != nil {\n\t\tsize, err := m.Datagram.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Stream != nil {\n\t\tsize, err := m.Stream.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SocketOption) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SocketOption) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SocketOption) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Type != nil {\n\t\tsize, err := m.Type.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif m.State != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.State))\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif msg, ok := m.Value.(*SocketOption_BufValue); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Value.(*SocketOption_IntValue); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.Name != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Name))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.Level != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Level))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.Description) > 0 {\n\t\ti -= len(m.Description)\n\t\tcopy(dAtA[i:], m.Description)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Description)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SocketOption_IntValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SocketOption_IntValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.IntValue))\n\ti--\n\tdAtA[i] = 0x20\n\treturn len(dAtA) - i, nil\n}\nfunc (m *SocketOption_BufValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SocketOption_BufValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.BufValue)\n\tcopy(dAtA[i:], m.BufValue)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.BufValue)))\n\ti--\n\tdAtA[i] = 0x2a\n\treturn len(dAtA) - i, nil\n}\nfunc (m *SocketOptionsOverride) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SocketOptionsOverride) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SocketOptionsOverride) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.SocketOptions) > 0 {\n\t\tfor iNdEx := len(m.SocketOptions) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.SocketOptions[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SocketOption_SocketType_Stream) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *SocketOption_SocketType_Datagram) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *SocketOption_SocketType) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Stream != nil {\n\t\tl = m.Stream.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Datagram != nil {\n\t\tl = m.Datagram.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *SocketOption) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Description)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Level != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Level))\n\t}\n\tif m.Name != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Name))\n\t}\n\tif vtmsg, ok := m.Value.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.State != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.State))\n\t}\n\tif m.Type != nil {\n\t\tl = m.Type.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *SocketOption_IntValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 1 + protohelpers.SizeOfVarint(uint64(m.IntValue))\n\treturn n\n}\nfunc (m *SocketOption_BufValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.BufValue)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *SocketOptionsOverride) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.SocketOptions) > 0 {\n\t\tfor _, e := range m.SocketOptions {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/substitution_format_string.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/substitution_format_string.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/go-control-plane/envoy/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tstructpb \"google.golang.org/protobuf/types/known/structpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Optional configuration options to be used with json_format.\ntype JsonFormatOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The output JSON string properties will be sorted.\n\t//\n\t// .. note::\n\t//\n\t//\tAs the properties are always sorted, this option has no effect and is deprecated.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/substitution_format_string.proto.\n\tSortProperties bool `protobuf:\"varint,1,opt,name=sort_properties,json=sortProperties,proto3\" json:\"sort_properties,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *JsonFormatOptions) Reset() {\n\t*x = JsonFormatOptions{}\n\tmi := &file_envoy_config_core_v3_substitution_format_string_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *JsonFormatOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*JsonFormatOptions) ProtoMessage() {}\n\nfunc (x *JsonFormatOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_substitution_format_string_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use JsonFormatOptions.ProtoReflect.Descriptor instead.\nfunc (*JsonFormatOptions) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_substitution_format_string_proto_rawDescGZIP(), []int{0}\n}\n\n// Deprecated: Marked as deprecated in envoy/config/core/v3/substitution_format_string.proto.\nfunc (x *JsonFormatOptions) GetSortProperties() bool {\n\tif x != nil {\n\t\treturn x.SortProperties\n\t}\n\treturn false\n}\n\n// Configuration to use multiple :ref:`command operators <config_access_log_command_operators>`\n// to generate a new string in either plain text or JSON format.\n// [#next-free-field: 8]\ntype SubstitutionFormatString struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Format:\n\t//\n\t//\t*SubstitutionFormatString_TextFormat\n\t//\t*SubstitutionFormatString_JsonFormat\n\t//\t*SubstitutionFormatString_TextFormatSource\n\tFormat isSubstitutionFormatString_Format `protobuf_oneof:\"format\"`\n\t// If set to true, when command operators are evaluated to null,\n\t//\n\t//   - for “text_format“, the output of the empty operator is changed from “-“ to an\n\t//     empty string, so that empty values are omitted entirely.\n\t//   - for “json_format“ the keys with null values are omitted in the output structure.\n\t//\n\t// .. note::\n\t//\n\t//\tThis option does not work perfectly with ``json_format`` as keys with ``null`` values\n\t//\twill still be included in the output. See https://github.com/envoyproxy/envoy/issues/37941\n\t//\tfor more details.\n\tOmitEmptyValues bool `protobuf:\"varint,3,opt,name=omit_empty_values,json=omitEmptyValues,proto3\" json:\"omit_empty_values,omitempty\"`\n\t// Specify a “content_type“ field.\n\t// If this field is not set then “text/plain“ is used for “text_format“ and\n\t// “application/json“ is used for “json_format“.\n\t//\n\t// .. validated-code-block:: yaml\n\t//\n\t//\t:type-name: envoy.config.core.v3.SubstitutionFormatString\n\t//\n\t//\tcontent_type: \"text/html; charset=UTF-8\"\n\tContentType string `protobuf:\"bytes,4,opt,name=content_type,json=contentType,proto3\" json:\"content_type,omitempty\"`\n\t// Specifies a collection of Formatter plugins that can be called from the access log configuration.\n\t// See the formatters extensions documentation for details.\n\t// [#extension-category: envoy.formatter]\n\tFormatters []*TypedExtensionConfig `protobuf:\"bytes,6,rep,name=formatters,proto3\" json:\"formatters,omitempty\"`\n\t// If json_format is used, the options will be applied to the output JSON string.\n\tJsonFormatOptions *JsonFormatOptions `protobuf:\"bytes,7,opt,name=json_format_options,json=jsonFormatOptions,proto3\" json:\"json_format_options,omitempty\"`\n\tunknownFields     protoimpl.UnknownFields\n\tsizeCache         protoimpl.SizeCache\n}\n\nfunc (x *SubstitutionFormatString) Reset() {\n\t*x = SubstitutionFormatString{}\n\tmi := &file_envoy_config_core_v3_substitution_format_string_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SubstitutionFormatString) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SubstitutionFormatString) ProtoMessage() {}\n\nfunc (x *SubstitutionFormatString) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_substitution_format_string_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SubstitutionFormatString.ProtoReflect.Descriptor instead.\nfunc (*SubstitutionFormatString) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_substitution_format_string_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *SubstitutionFormatString) GetFormat() isSubstitutionFormatString_Format {\n\tif x != nil {\n\t\treturn x.Format\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/core/v3/substitution_format_string.proto.\nfunc (x *SubstitutionFormatString) GetTextFormat() string {\n\tif x != nil {\n\t\tif x, ok := x.Format.(*SubstitutionFormatString_TextFormat); ok {\n\t\t\treturn x.TextFormat\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *SubstitutionFormatString) GetJsonFormat() *structpb.Struct {\n\tif x != nil {\n\t\tif x, ok := x.Format.(*SubstitutionFormatString_JsonFormat); ok {\n\t\t\treturn x.JsonFormat\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *SubstitutionFormatString) GetTextFormatSource() *DataSource {\n\tif x != nil {\n\t\tif x, ok := x.Format.(*SubstitutionFormatString_TextFormatSource); ok {\n\t\t\treturn x.TextFormatSource\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *SubstitutionFormatString) GetOmitEmptyValues() bool {\n\tif x != nil {\n\t\treturn x.OmitEmptyValues\n\t}\n\treturn false\n}\n\nfunc (x *SubstitutionFormatString) GetContentType() string {\n\tif x != nil {\n\t\treturn x.ContentType\n\t}\n\treturn \"\"\n}\n\nfunc (x *SubstitutionFormatString) GetFormatters() []*TypedExtensionConfig {\n\tif x != nil {\n\t\treturn x.Formatters\n\t}\n\treturn nil\n}\n\nfunc (x *SubstitutionFormatString) GetJsonFormatOptions() *JsonFormatOptions {\n\tif x != nil {\n\t\treturn x.JsonFormatOptions\n\t}\n\treturn nil\n}\n\ntype isSubstitutionFormatString_Format interface {\n\tisSubstitutionFormatString_Format()\n}\n\ntype SubstitutionFormatString_TextFormat struct {\n\t// Specify a format with command operators to form a text string.\n\t// Its details is described in :ref:`format string<config_access_log_format_strings>`.\n\t//\n\t// For example, setting “text_format“ like below,\n\t//\n\t// .. validated-code-block:: yaml\n\t//\n\t//\t:type-name: envoy.config.core.v3.SubstitutionFormatString\n\t//\n\t//\ttext_format: \"%LOCAL_REPLY_BODY%:%RESPONSE_CODE%:path=%REQ(:path)%\\n\"\n\t//\n\t// generates plain text similar to:\n\t//\n\t// .. code-block:: text\n\t//\n\t//\tupstream connect error:503:path=/foo\n\t//\n\t// Deprecated in favor of :ref:`text_format_source <envoy_v3_api_field_config.core.v3.SubstitutionFormatString.text_format_source>`. To migrate text format strings, use the :ref:`inline_string <envoy_v3_api_field_config.core.v3.DataSource.inline_string>` field.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/core/v3/substitution_format_string.proto.\n\tTextFormat string `protobuf:\"bytes,1,opt,name=text_format,json=textFormat,proto3,oneof\"`\n}\n\ntype SubstitutionFormatString_JsonFormat struct {\n\t// Specify a format with command operators to form a JSON string.\n\t// Its details is described in :ref:`format dictionary<config_access_log_format_dictionaries>`.\n\t// Values are rendered as strings, numbers, or boolean values as appropriate.\n\t// Nested JSON objects may be produced by some command operators (e.g. FILTER_STATE or DYNAMIC_METADATA).\n\t// See the documentation for a specific command operator for details.\n\t//\n\t// .. validated-code-block:: yaml\n\t//\n\t//\t:type-name: envoy.config.core.v3.SubstitutionFormatString\n\t//\n\t//\tjson_format:\n\t//\t  status: \"%RESPONSE_CODE%\"\n\t//\t  message: \"%LOCAL_REPLY_BODY%\"\n\t//\n\t// The following JSON object would be created:\n\t//\n\t// .. code-block:: json\n\t//\n\t//\t{\n\t//\t  \"status\": 500,\n\t//\t  \"message\": \"My error message\"\n\t//\t}\n\tJsonFormat *structpb.Struct `protobuf:\"bytes,2,opt,name=json_format,json=jsonFormat,proto3,oneof\"`\n}\n\ntype SubstitutionFormatString_TextFormatSource struct {\n\t// Specify a format with command operators to form a text string.\n\t// Its details is described in :ref:`format string<config_access_log_format_strings>`.\n\t//\n\t// For example, setting “text_format“ like below,\n\t//\n\t// .. validated-code-block:: yaml\n\t//\n\t//\t:type-name: envoy.config.core.v3.SubstitutionFormatString\n\t//\n\t//\ttext_format_source:\n\t//\t  inline_string: \"%LOCAL_REPLY_BODY%:%RESPONSE_CODE%:path=%REQ(:path)%\\n\"\n\t//\n\t// generates plain text similar to:\n\t//\n\t// .. code-block:: text\n\t//\n\t//\tupstream connect error:503:path=/foo\n\tTextFormatSource *DataSource `protobuf:\"bytes,5,opt,name=text_format_source,json=textFormatSource,proto3,oneof\"`\n}\n\nfunc (*SubstitutionFormatString_TextFormat) isSubstitutionFormatString_Format() {}\n\nfunc (*SubstitutionFormatString_JsonFormat) isSubstitutionFormatString_Format() {}\n\nfunc (*SubstitutionFormatString_TextFormatSource) isSubstitutionFormatString_Format() {}\n\nvar File_envoy_config_core_v3_substitution_format_string_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_substitution_format_string_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"5envoy/config/core/v3/substitution_format_string.proto\\x12\\x14envoy.config.core.v3\\x1a\\x1fenvoy/config/core/v3/base.proto\\x1a$envoy/config/core/v3/extension.proto\\x1a\\x1cgoogle/protobuf/struct.proto\\x1a#envoy/annotations/deprecation.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a\\x17validate/validate.proto\\\"I\\n\" +\n\t\"\\x11JsonFormatOptions\\x124\\n\" +\n\t\"\\x0fsort_properties\\x18\\x01 \\x01(\\bB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x0esortProperties\\\"\\xf2\\x03\\n\" +\n\t\"\\x18SubstitutionFormatString\\x12.\\n\" +\n\t\"\\vtext_format\\x18\\x01 \\x01(\\tB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01H\\x00R\\n\" +\n\t\"textFormat\\x12D\\n\" +\n\t\"\\vjson_format\\x18\\x02 \\x01(\\v2\\x17.google.protobuf.StructB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01H\\x00R\\n\" +\n\t\"jsonFormat\\x12P\\n\" +\n\t\"\\x12text_format_source\\x18\\x05 \\x01(\\v2 .envoy.config.core.v3.DataSourceH\\x00R\\x10textFormatSource\\x12*\\n\" +\n\t\"\\x11omit_empty_values\\x18\\x03 \\x01(\\bR\\x0fomitEmptyValues\\x12.\\n\" +\n\t\"\\fcontent_type\\x18\\x04 \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x02R\\vcontentType\\x12J\\n\" +\n\t\"\\n\" +\n\t\"formatters\\x18\\x06 \\x03(\\v2*.envoy.config.core.v3.TypedExtensionConfigR\\n\" +\n\t\"formatters\\x12W\\n\" +\n\t\"\\x13json_format_options\\x18\\a \\x01(\\v2'.envoy.config.core.v3.JsonFormatOptionsR\\x11jsonFormatOptionsB\\r\\n\" +\n\t\"\\x06format\\x12\\x03\\xf8B\\x01B\\x91\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\x1dSubstitutionFormatStringProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_substitution_format_string_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_substitution_format_string_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_substitution_format_string_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_substitution_format_string_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_substitution_format_string_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_substitution_format_string_proto_rawDesc), len(file_envoy_config_core_v3_substitution_format_string_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_substitution_format_string_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_substitution_format_string_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_envoy_config_core_v3_substitution_format_string_proto_goTypes = []any{\n\t(*JsonFormatOptions)(nil),        // 0: envoy.config.core.v3.JsonFormatOptions\n\t(*SubstitutionFormatString)(nil), // 1: envoy.config.core.v3.SubstitutionFormatString\n\t(*structpb.Struct)(nil),          // 2: google.protobuf.Struct\n\t(*DataSource)(nil),               // 3: envoy.config.core.v3.DataSource\n\t(*TypedExtensionConfig)(nil),     // 4: envoy.config.core.v3.TypedExtensionConfig\n}\nvar file_envoy_config_core_v3_substitution_format_string_proto_depIdxs = []int32{\n\t2, // 0: envoy.config.core.v3.SubstitutionFormatString.json_format:type_name -> google.protobuf.Struct\n\t3, // 1: envoy.config.core.v3.SubstitutionFormatString.text_format_source:type_name -> envoy.config.core.v3.DataSource\n\t4, // 2: envoy.config.core.v3.SubstitutionFormatString.formatters:type_name -> envoy.config.core.v3.TypedExtensionConfig\n\t0, // 3: envoy.config.core.v3.SubstitutionFormatString.json_format_options:type_name -> envoy.config.core.v3.JsonFormatOptions\n\t4, // [4:4] is the sub-list for method output_type\n\t4, // [4:4] is the sub-list for method input_type\n\t4, // [4:4] is the sub-list for extension type_name\n\t4, // [4:4] is the sub-list for extension extendee\n\t0, // [0:4] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_substitution_format_string_proto_init() }\nfunc file_envoy_config_core_v3_substitution_format_string_proto_init() {\n\tif File_envoy_config_core_v3_substitution_format_string_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_core_v3_base_proto_init()\n\tfile_envoy_config_core_v3_extension_proto_init()\n\tfile_envoy_config_core_v3_substitution_format_string_proto_msgTypes[1].OneofWrappers = []any{\n\t\t(*SubstitutionFormatString_TextFormat)(nil),\n\t\t(*SubstitutionFormatString_JsonFormat)(nil),\n\t\t(*SubstitutionFormatString_TextFormatSource)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_substitution_format_string_proto_rawDesc), len(file_envoy_config_core_v3_substitution_format_string_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_substitution_format_string_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_substitution_format_string_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_core_v3_substitution_format_string_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_substitution_format_string_proto = out.File\n\tfile_envoy_config_core_v3_substitution_format_string_proto_goTypes = nil\n\tfile_envoy_config_core_v3_substitution_format_string_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/substitution_format_string.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/substitution_format_string.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on JsonFormatOptions with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *JsonFormatOptions) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on JsonFormatOptions with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// JsonFormatOptionsMultiError, or nil if none found.\nfunc (m *JsonFormatOptions) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *JsonFormatOptions) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for SortProperties\n\n\tif len(errors) > 0 {\n\t\treturn JsonFormatOptionsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// JsonFormatOptionsMultiError is an error wrapping multiple validation errors\n// returned by JsonFormatOptions.ValidateAll() if the designated constraints\n// aren't met.\ntype JsonFormatOptionsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m JsonFormatOptionsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m JsonFormatOptionsMultiError) AllErrors() []error { return m }\n\n// JsonFormatOptionsValidationError is the validation error returned by\n// JsonFormatOptions.Validate if the designated constraints aren't met.\ntype JsonFormatOptionsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e JsonFormatOptionsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e JsonFormatOptionsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e JsonFormatOptionsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e JsonFormatOptionsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e JsonFormatOptionsValidationError) ErrorName() string {\n\treturn \"JsonFormatOptionsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e JsonFormatOptionsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sJsonFormatOptions.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = JsonFormatOptionsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = JsonFormatOptionsValidationError{}\n\n// Validate checks the field values on SubstitutionFormatString with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *SubstitutionFormatString) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on SubstitutionFormatString with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// SubstitutionFormatStringMultiError, or nil if none found.\nfunc (m *SubstitutionFormatString) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *SubstitutionFormatString) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for OmitEmptyValues\n\n\tif !_SubstitutionFormatString_ContentType_Pattern.MatchString(m.GetContentType()) {\n\t\terr := SubstitutionFormatStringValidationError{\n\t\t\tfield:  \"ContentType\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetFormatters() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, SubstitutionFormatStringValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Formatters[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, SubstitutionFormatStringValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Formatters[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn SubstitutionFormatStringValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Formatters[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetJsonFormatOptions()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, SubstitutionFormatStringValidationError{\n\t\t\t\t\tfield:  \"JsonFormatOptions\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, SubstitutionFormatStringValidationError{\n\t\t\t\t\tfield:  \"JsonFormatOptions\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetJsonFormatOptions()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn SubstitutionFormatStringValidationError{\n\t\t\t\tfield:  \"JsonFormatOptions\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\toneofFormatPresent := false\n\tswitch v := m.Format.(type) {\n\tcase *SubstitutionFormatString_TextFormat:\n\t\tif v == nil {\n\t\t\terr := SubstitutionFormatStringValidationError{\n\t\t\t\tfield:  \"Format\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofFormatPresent = true\n\t\t// no validation rules for TextFormat\n\tcase *SubstitutionFormatString_JsonFormat:\n\t\tif v == nil {\n\t\t\terr := SubstitutionFormatStringValidationError{\n\t\t\t\tfield:  \"Format\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofFormatPresent = true\n\n\t\tif m.GetJsonFormat() == nil {\n\t\t\terr := SubstitutionFormatStringValidationError{\n\t\t\t\tfield:  \"JsonFormat\",\n\t\t\t\treason: \"value is required\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetJsonFormat()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, SubstitutionFormatStringValidationError{\n\t\t\t\t\t\tfield:  \"JsonFormat\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, SubstitutionFormatStringValidationError{\n\t\t\t\t\t\tfield:  \"JsonFormat\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetJsonFormat()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn SubstitutionFormatStringValidationError{\n\t\t\t\t\tfield:  \"JsonFormat\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *SubstitutionFormatString_TextFormatSource:\n\t\tif v == nil {\n\t\t\terr := SubstitutionFormatStringValidationError{\n\t\t\t\tfield:  \"Format\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofFormatPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetTextFormatSource()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, SubstitutionFormatStringValidationError{\n\t\t\t\t\t\tfield:  \"TextFormatSource\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, SubstitutionFormatStringValidationError{\n\t\t\t\t\t\tfield:  \"TextFormatSource\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetTextFormatSource()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn SubstitutionFormatStringValidationError{\n\t\t\t\t\tfield:  \"TextFormatSource\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofFormatPresent {\n\t\terr := SubstitutionFormatStringValidationError{\n\t\t\tfield:  \"Format\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn SubstitutionFormatStringMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// SubstitutionFormatStringMultiError is an error wrapping multiple validation\n// errors returned by SubstitutionFormatString.ValidateAll() if the designated\n// constraints aren't met.\ntype SubstitutionFormatStringMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m SubstitutionFormatStringMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m SubstitutionFormatStringMultiError) AllErrors() []error { return m }\n\n// SubstitutionFormatStringValidationError is the validation error returned by\n// SubstitutionFormatString.Validate if the designated constraints aren't met.\ntype SubstitutionFormatStringValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e SubstitutionFormatStringValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e SubstitutionFormatStringValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e SubstitutionFormatStringValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e SubstitutionFormatStringValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e SubstitutionFormatStringValidationError) ErrorName() string {\n\treturn \"SubstitutionFormatStringValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e SubstitutionFormatStringValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sSubstitutionFormatString.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = SubstitutionFormatStringValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = SubstitutionFormatStringValidationError{}\n\nvar _SubstitutionFormatString_ContentType_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/substitution_format_string_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/substitution_format_string.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tstructpb \"github.com/planetscale/vtprotobuf/types/known/structpb\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *JsonFormatOptions) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *JsonFormatOptions) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *JsonFormatOptions) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.SortProperties {\n\t\ti--\n\t\tif m.SortProperties {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SubstitutionFormatString) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SubstitutionFormatString) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SubstitutionFormatString) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.JsonFormatOptions != nil {\n\t\tsize, err := m.JsonFormatOptions.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif len(m.Formatters) > 0 {\n\t\tfor iNdEx := len(m.Formatters) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Formatters[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t}\n\tif msg, ok := m.Format.(*SubstitutionFormatString_TextFormatSource); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.ContentType) > 0 {\n\t\ti -= len(m.ContentType)\n\t\tcopy(dAtA[i:], m.ContentType)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ContentType)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.OmitEmptyValues {\n\t\ti--\n\t\tif m.OmitEmptyValues {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif msg, ok := m.Format.(*SubstitutionFormatString_JsonFormat); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Format.(*SubstitutionFormatString_TextFormat); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SubstitutionFormatString_TextFormat) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SubstitutionFormatString_TextFormat) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.TextFormat)\n\tcopy(dAtA[i:], m.TextFormat)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TextFormat)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *SubstitutionFormatString_JsonFormat) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SubstitutionFormatString_JsonFormat) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.JsonFormat != nil {\n\t\tsize, err := (*structpb.Struct)(m.JsonFormat).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *SubstitutionFormatString_TextFormatSource) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SubstitutionFormatString_TextFormatSource) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.TextFormatSource != nil {\n\t\tsize, err := m.TextFormatSource.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *JsonFormatOptions) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.SortProperties {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *SubstitutionFormatString) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Format.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.OmitEmptyValues {\n\t\tn += 2\n\t}\n\tl = len(m.ContentType)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.Formatters) > 0 {\n\t\tfor _, e := range m.Formatters {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.JsonFormatOptions != nil {\n\t\tl = m.JsonFormatOptions.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *SubstitutionFormatString_TextFormat) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.TextFormat)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *SubstitutionFormatString_JsonFormat) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.JsonFormat != nil {\n\t\tl = (*structpb.Struct)(m.JsonFormat).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *SubstitutionFormatString_TextFormatSource) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.TextFormatSource != nil {\n\t\tl = m.TextFormatSource.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/udp_socket_config.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/core/v3/udp_socket_config.proto\n\npackage corev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Generic UDP socket configuration.\ntype UdpSocketConfig struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The maximum size of received UDP datagrams. Using a larger size will cause Envoy to allocate\n\t// more memory per socket. Received datagrams above this size will be dropped. If not set\n\t// defaults to 1500 bytes.\n\tMaxRxDatagramSize *wrapperspb.UInt64Value `protobuf:\"bytes,1,opt,name=max_rx_datagram_size,json=maxRxDatagramSize,proto3\" json:\"max_rx_datagram_size,omitempty\"`\n\t// Configures whether Generic Receive Offload (GRO)\n\t// <https://en.wikipedia.org/wiki/Large_receive_offload>_ is preferred when reading from the\n\t// UDP socket. The default is context dependent and is documented where UdpSocketConfig is used.\n\t// This option affects performance but not functionality. If GRO is not supported by the operating\n\t// system, non-GRO receive will be used.\n\tPreferGro     *wrapperspb.BoolValue `protobuf:\"bytes,2,opt,name=prefer_gro,json=preferGro,proto3\" json:\"prefer_gro,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *UdpSocketConfig) Reset() {\n\t*x = UdpSocketConfig{}\n\tmi := &file_envoy_config_core_v3_udp_socket_config_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *UdpSocketConfig) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UdpSocketConfig) ProtoMessage() {}\n\nfunc (x *UdpSocketConfig) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_core_v3_udp_socket_config_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UdpSocketConfig.ProtoReflect.Descriptor instead.\nfunc (*UdpSocketConfig) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_core_v3_udp_socket_config_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *UdpSocketConfig) GetMaxRxDatagramSize() *wrapperspb.UInt64Value {\n\tif x != nil {\n\t\treturn x.MaxRxDatagramSize\n\t}\n\treturn nil\n}\n\nfunc (x *UdpSocketConfig) GetPreferGro() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.PreferGro\n\t}\n\treturn nil\n}\n\nvar File_envoy_config_core_v3_udp_socket_config_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_core_v3_udp_socket_config_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\",envoy/config/core/v3/udp_socket_config.proto\\x12\\x14envoy.config.core.v3\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a\\x17validate/validate.proto\\\"\\xa8\\x01\\n\" +\n\t\"\\x0fUdpSocketConfig\\x12Z\\n\" +\n\t\"\\x14max_rx_datagram_size\\x18\\x01 \\x01(\\v2\\x1c.google.protobuf.UInt64ValueB\\v\\xfaB\\b2\\x06\\x10\\x80\\x80\\x04 \\x00R\\x11maxRxDatagramSize\\x129\\n\" +\n\t\"\\n\" +\n\t\"prefer_gro\\x18\\x02 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\tpreferGroB\\x88\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\\"io.envoyproxy.envoy.config.core.v3B\\x14UdpSocketConfigProtoP\\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_core_v3_udp_socket_config_proto_rawDescOnce sync.Once\n\tfile_envoy_config_core_v3_udp_socket_config_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_core_v3_udp_socket_config_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_core_v3_udp_socket_config_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_core_v3_udp_socket_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_udp_socket_config_proto_rawDesc), len(file_envoy_config_core_v3_udp_socket_config_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_core_v3_udp_socket_config_proto_rawDescData\n}\n\nvar file_envoy_config_core_v3_udp_socket_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_config_core_v3_udp_socket_config_proto_goTypes = []any{\n\t(*UdpSocketConfig)(nil),        // 0: envoy.config.core.v3.UdpSocketConfig\n\t(*wrapperspb.UInt64Value)(nil), // 1: google.protobuf.UInt64Value\n\t(*wrapperspb.BoolValue)(nil),   // 2: google.protobuf.BoolValue\n}\nvar file_envoy_config_core_v3_udp_socket_config_proto_depIdxs = []int32{\n\t1, // 0: envoy.config.core.v3.UdpSocketConfig.max_rx_datagram_size:type_name -> google.protobuf.UInt64Value\n\t2, // 1: envoy.config.core.v3.UdpSocketConfig.prefer_gro:type_name -> google.protobuf.BoolValue\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_core_v3_udp_socket_config_proto_init() }\nfunc file_envoy_config_core_v3_udp_socket_config_proto_init() {\n\tif File_envoy_config_core_v3_udp_socket_config_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_core_v3_udp_socket_config_proto_rawDesc), len(file_envoy_config_core_v3_udp_socket_config_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_core_v3_udp_socket_config_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_core_v3_udp_socket_config_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_core_v3_udp_socket_config_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_core_v3_udp_socket_config_proto = out.File\n\tfile_envoy_config_core_v3_udp_socket_config_proto_goTypes = nil\n\tfile_envoy_config_core_v3_udp_socket_config_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/udp_socket_config.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/core/v3/udp_socket_config.proto\n\npackage corev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on UdpSocketConfig with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *UdpSocketConfig) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on UdpSocketConfig with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// UdpSocketConfigMultiError, or nil if none found.\nfunc (m *UdpSocketConfig) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *UdpSocketConfig) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif wrapper := m.GetMaxRxDatagramSize(); wrapper != nil {\n\n\t\tif val := wrapper.GetValue(); val <= 0 || val >= 65536 {\n\t\t\terr := UdpSocketConfigValidationError{\n\t\t\t\tfield:  \"MaxRxDatagramSize\",\n\t\t\t\treason: \"value must be inside range (0, 65536)\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPreferGro()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, UdpSocketConfigValidationError{\n\t\t\t\t\tfield:  \"PreferGro\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, UdpSocketConfigValidationError{\n\t\t\t\t\tfield:  \"PreferGro\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPreferGro()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn UdpSocketConfigValidationError{\n\t\t\t\tfield:  \"PreferGro\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn UdpSocketConfigMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// UdpSocketConfigMultiError is an error wrapping multiple validation errors\n// returned by UdpSocketConfig.ValidateAll() if the designated constraints\n// aren't met.\ntype UdpSocketConfigMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m UdpSocketConfigMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m UdpSocketConfigMultiError) AllErrors() []error { return m }\n\n// UdpSocketConfigValidationError is the validation error returned by\n// UdpSocketConfig.Validate if the designated constraints aren't met.\ntype UdpSocketConfigValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e UdpSocketConfigValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e UdpSocketConfigValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e UdpSocketConfigValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e UdpSocketConfigValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e UdpSocketConfigValidationError) ErrorName() string { return \"UdpSocketConfigValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e UdpSocketConfigValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sUdpSocketConfig.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = UdpSocketConfigValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = UdpSocketConfigValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/core/v3/udp_socket_config_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/core/v3/udp_socket_config.proto\n\npackage corev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\twrapperspb \"github.com/planetscale/vtprotobuf/types/known/wrapperspb\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *UdpSocketConfig) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UdpSocketConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *UdpSocketConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.PreferGro != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.PreferGro).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.MaxRxDatagramSize != nil {\n\t\tsize, err := (*wrapperspb.UInt64Value)(m.MaxRxDatagramSize).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UdpSocketConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MaxRxDatagramSize != nil {\n\t\tl = (*wrapperspb.UInt64Value)(m.MaxRxDatagramSize).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.PreferGro != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.PreferGro).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/route/v3/route.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/route/v3/route.proto\n\npackage routev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/config/core/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// [#next-free-field: 19]\ntype RouteConfiguration struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the route configuration. For example, it might match\n\t// :ref:`route_config_name\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.Rds.route_config_name>` in\n\t// :ref:`envoy_v3_api_msg_extensions.filters.network.http_connection_manager.v3.Rds`.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// An array of virtual hosts that make up the route table.\n\tVirtualHosts []*VirtualHost `protobuf:\"bytes,2,rep,name=virtual_hosts,json=virtualHosts,proto3\" json:\"virtual_hosts,omitempty\"`\n\t// An array of virtual hosts will be dynamically loaded via the VHDS API.\n\t// Both “virtual_hosts“ and “vhds“ fields will be used when present. “virtual_hosts“ can be used\n\t// for a base routing table or for infrequently changing virtual hosts. “vhds“ is used for\n\t// on-demand discovery of virtual hosts. The contents of these two fields will be merged to\n\t// generate a routing table for a given RouteConfiguration, with “vhds“ derived configuration\n\t// taking precedence.\n\tVhds *Vhds `protobuf:\"bytes,9,opt,name=vhds,proto3\" json:\"vhds,omitempty\"`\n\t// Optionally specifies a list of HTTP headers that the connection manager\n\t// will consider to be internal only. If they are found on external requests they will be cleaned\n\t// prior to filter invocation. See :ref:`config_http_conn_man_headers_x-envoy-internal` for more\n\t// information.\n\tInternalOnlyHeaders []string `protobuf:\"bytes,3,rep,name=internal_only_headers,json=internalOnlyHeaders,proto3\" json:\"internal_only_headers,omitempty\"`\n\t// Specifies a list of HTTP headers that should be added to each response that\n\t// the connection manager encodes. Headers specified at this level are applied\n\t// after headers from any enclosed :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost` or\n\t// :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`. For more information, including details on\n\t// header value syntax, see the documentation on :ref:`custom request headers\n\t// <config_http_conn_man_headers_custom_request_headers>`.\n\tResponseHeadersToAdd []*v3.HeaderValueOption `protobuf:\"bytes,4,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3\" json:\"response_headers_to_add,omitempty\"`\n\t// Specifies a list of HTTP headers that should be removed from each response\n\t// that the connection manager encodes.\n\tResponseHeadersToRemove []string `protobuf:\"bytes,5,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3\" json:\"response_headers_to_remove,omitempty\"`\n\t// Specifies a list of HTTP headers that should be added to each request\n\t// routed by the HTTP connection manager. Headers specified at this level are\n\t// applied after headers from any enclosed :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost` or\n\t// :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`. For more information, including details on\n\t// header value syntax, see the documentation on :ref:`custom request headers\n\t// <config_http_conn_man_headers_custom_request_headers>`.\n\tRequestHeadersToAdd []*v3.HeaderValueOption `protobuf:\"bytes,6,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3\" json:\"request_headers_to_add,omitempty\"`\n\t// Specifies a list of HTTP headers that should be removed from each request\n\t// routed by the HTTP connection manager.\n\tRequestHeadersToRemove []string `protobuf:\"bytes,8,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3\" json:\"request_headers_to_remove,omitempty\"`\n\t// Headers mutations at all levels are evaluated, if specified. By default, the order is from most\n\t// specific (i.e. route entry level) to least specific (i.e. route configuration level). Later header\n\t// mutations may override earlier mutations.\n\t// This order can be reversed by setting this field to true. In other words, most specific level mutation\n\t// is evaluated last.\n\tMostSpecificHeaderMutationsWins bool `protobuf:\"varint,10,opt,name=most_specific_header_mutations_wins,json=mostSpecificHeaderMutationsWins,proto3\" json:\"most_specific_header_mutations_wins,omitempty\"`\n\t// An optional boolean that specifies whether the clusters that the route\n\t// table refers to will be validated by the cluster manager. If set to true\n\t// and a route refers to a non-existent cluster, the route table will not\n\t// load. If set to false and a route refers to a non-existent cluster, the\n\t// route table will load and the router filter will return a 404 if the route\n\t// is selected at runtime. This setting defaults to true if the route table\n\t// is statically defined via the :ref:`route_config\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.route_config>`\n\t// option. This setting default to false if the route table is loaded dynamically via the\n\t// :ref:`rds\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.rds>`\n\t// option. Users may wish to override the default behavior in certain cases (for example when\n\t// using CDS with a static route table).\n\tValidateClusters *wrapperspb.BoolValue `protobuf:\"bytes,7,opt,name=validate_clusters,json=validateClusters,proto3\" json:\"validate_clusters,omitempty\"`\n\t// The maximum bytes of the response :ref:`direct response body\n\t// <envoy_v3_api_field_config.route.v3.DirectResponseAction.body>` size. If not specified the default\n\t// is 4096.\n\t//\n\t// .. warning::\n\t//\n\t//\tEnvoy currently holds the content of :ref:`direct response body\n\t//\t<envoy_v3_api_field_config.route.v3.DirectResponseAction.body>` in memory. Be careful setting\n\t//\tthis to be larger than the default 4KB, since the allocated memory for direct response body\n\t//\tis not subject to data plane buffering controls.\n\tMaxDirectResponseBodySizeBytes *wrapperspb.UInt32Value `protobuf:\"bytes,11,opt,name=max_direct_response_body_size_bytes,json=maxDirectResponseBodySizeBytes,proto3\" json:\"max_direct_response_body_size_bytes,omitempty\"`\n\t// A list of plugins and their configurations which may be used by a\n\t// :ref:`cluster specifier plugin name <envoy_v3_api_field_config.route.v3.RouteAction.cluster_specifier_plugin>`\n\t// within the route. All “extension.name“ fields in this list must be unique.\n\tClusterSpecifierPlugins []*ClusterSpecifierPlugin `protobuf:\"bytes,12,rep,name=cluster_specifier_plugins,json=clusterSpecifierPlugins,proto3\" json:\"cluster_specifier_plugins,omitempty\"`\n\t// Specify a set of default request mirroring policies which apply to all routes under its virtual hosts.\n\t// Note that policies are not merged, the most specific non-empty one becomes the mirror policies.\n\tRequestMirrorPolicies []*RouteAction_RequestMirrorPolicy `protobuf:\"bytes,13,rep,name=request_mirror_policies,json=requestMirrorPolicies,proto3\" json:\"request_mirror_policies,omitempty\"`\n\t// By default, port in :authority header (if any) is used in host matching.\n\t// With this option enabled, Envoy will ignore the port number in the :authority header (if any) when picking VirtualHost.\n\t//\n\t// .. note::\n\t//\n\t//\tThis option will not strip the port number (if any) contained in route config\n\t//\t:ref:`envoy_v3_api_msg_config.route.v3.VirtualHost`.domains field.\n\tIgnorePortInHostMatching bool `protobuf:\"varint,14,opt,name=ignore_port_in_host_matching,json=ignorePortInHostMatching,proto3\" json:\"ignore_port_in_host_matching,omitempty\"`\n\t// Normally, virtual host matching is done using the :authority (or\n\t// Host: in HTTP < 2) HTTP header. Setting this will instead, use a\n\t// different HTTP header for this purpose.\n\tVhostHeader string `protobuf:\"bytes,18,opt,name=vhost_header,json=vhostHeader,proto3\" json:\"vhost_header,omitempty\"`\n\t// Ignore path-parameters in path-matching.\n\t// Before RFC3986, URI were like(RFC1808): <scheme>://<net_loc>/<path>;<params>?<query>#<fragment>\n\t// Envoy by default takes \":path\" as \"<path>;<params>\".\n\t// For users who want to only match path on the \"<path>\" portion, this option should be true.\n\tIgnorePathParametersInPathMatching bool `protobuf:\"varint,15,opt,name=ignore_path_parameters_in_path_matching,json=ignorePathParametersInPathMatching,proto3\" json:\"ignore_path_parameters_in_path_matching,omitempty\"`\n\t// This field can be used to provide RouteConfiguration level per filter config. The key should match the\n\t// :ref:`filter config name\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpFilter.name>`.\n\t// See :ref:`Http filter route specific config <arch_overview_http_filters_per_filter_config>`\n\t// for details.\n\t// [#comment: An entry's value may be wrapped in a\n\t// :ref:`FilterConfig<envoy_v3_api_msg_config.route.v3.FilterConfig>`\n\t// message to specify additional options.]\n\tTypedPerFilterConfig map[string]*anypb.Any `protobuf:\"bytes,16,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3\" json:\"typed_per_filter_config,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\t// The metadata field can be used to provide additional information\n\t// about the route configuration. It can be used for configuration, stats, and logging.\n\t// The metadata should go under the filter namespace that will need it.\n\t// For instance, if the metadata is intended for the Router filter,\n\t// the filter name should be specified as “envoy.filters.http.router“.\n\tMetadata      *v3.Metadata `protobuf:\"bytes,17,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteConfiguration) Reset() {\n\t*x = RouteConfiguration{}\n\tmi := &file_envoy_config_route_v3_route_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteConfiguration) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteConfiguration) ProtoMessage() {}\n\nfunc (x *RouteConfiguration) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteConfiguration.ProtoReflect.Descriptor instead.\nfunc (*RouteConfiguration) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *RouteConfiguration) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteConfiguration) GetVirtualHosts() []*VirtualHost {\n\tif x != nil {\n\t\treturn x.VirtualHosts\n\t}\n\treturn nil\n}\n\nfunc (x *RouteConfiguration) GetVhds() *Vhds {\n\tif x != nil {\n\t\treturn x.Vhds\n\t}\n\treturn nil\n}\n\nfunc (x *RouteConfiguration) GetInternalOnlyHeaders() []string {\n\tif x != nil {\n\t\treturn x.InternalOnlyHeaders\n\t}\n\treturn nil\n}\n\nfunc (x *RouteConfiguration) GetResponseHeadersToAdd() []*v3.HeaderValueOption {\n\tif x != nil {\n\t\treturn x.ResponseHeadersToAdd\n\t}\n\treturn nil\n}\n\nfunc (x *RouteConfiguration) GetResponseHeadersToRemove() []string {\n\tif x != nil {\n\t\treturn x.ResponseHeadersToRemove\n\t}\n\treturn nil\n}\n\nfunc (x *RouteConfiguration) GetRequestHeadersToAdd() []*v3.HeaderValueOption {\n\tif x != nil {\n\t\treturn x.RequestHeadersToAdd\n\t}\n\treturn nil\n}\n\nfunc (x *RouteConfiguration) GetRequestHeadersToRemove() []string {\n\tif x != nil {\n\t\treturn x.RequestHeadersToRemove\n\t}\n\treturn nil\n}\n\nfunc (x *RouteConfiguration) GetMostSpecificHeaderMutationsWins() bool {\n\tif x != nil {\n\t\treturn x.MostSpecificHeaderMutationsWins\n\t}\n\treturn false\n}\n\nfunc (x *RouteConfiguration) GetValidateClusters() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.ValidateClusters\n\t}\n\treturn nil\n}\n\nfunc (x *RouteConfiguration) GetMaxDirectResponseBodySizeBytes() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxDirectResponseBodySizeBytes\n\t}\n\treturn nil\n}\n\nfunc (x *RouteConfiguration) GetClusterSpecifierPlugins() []*ClusterSpecifierPlugin {\n\tif x != nil {\n\t\treturn x.ClusterSpecifierPlugins\n\t}\n\treturn nil\n}\n\nfunc (x *RouteConfiguration) GetRequestMirrorPolicies() []*RouteAction_RequestMirrorPolicy {\n\tif x != nil {\n\t\treturn x.RequestMirrorPolicies\n\t}\n\treturn nil\n}\n\nfunc (x *RouteConfiguration) GetIgnorePortInHostMatching() bool {\n\tif x != nil {\n\t\treturn x.IgnorePortInHostMatching\n\t}\n\treturn false\n}\n\nfunc (x *RouteConfiguration) GetVhostHeader() string {\n\tif x != nil {\n\t\treturn x.VhostHeader\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteConfiguration) GetIgnorePathParametersInPathMatching() bool {\n\tif x != nil {\n\t\treturn x.IgnorePathParametersInPathMatching\n\t}\n\treturn false\n}\n\nfunc (x *RouteConfiguration) GetTypedPerFilterConfig() map[string]*anypb.Any {\n\tif x != nil {\n\t\treturn x.TypedPerFilterConfig\n\t}\n\treturn nil\n}\n\nfunc (x *RouteConfiguration) GetMetadata() *v3.Metadata {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\ntype Vhds struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Configuration source specifier for VHDS.\n\tConfigSource  *v3.ConfigSource `protobuf:\"bytes,1,opt,name=config_source,json=configSource,proto3\" json:\"config_source,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Vhds) Reset() {\n\t*x = Vhds{}\n\tmi := &file_envoy_config_route_v3_route_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Vhds) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Vhds) ProtoMessage() {}\n\nfunc (x *Vhds) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Vhds.ProtoReflect.Descriptor instead.\nfunc (*Vhds) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *Vhds) GetConfigSource() *v3.ConfigSource {\n\tif x != nil {\n\t\treturn x.ConfigSource\n\t}\n\treturn nil\n}\n\nvar File_envoy_config_route_v3_route_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_route_v3_route_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"!envoy/config/route/v3/route.proto\\x12\\x15envoy.config.route.v3\\x1a\\x1fenvoy/config/core/v3/base.proto\\x1a(envoy/config/core/v3/config_source.proto\\x1a,envoy/config/route/v3/route_components.proto\\x1a\\x19google/protobuf/any.proto\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xac\\f\\n\" +\n\t\"\\x12RouteConfiguration\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12G\\n\" +\n\t\"\\rvirtual_hosts\\x18\\x02 \\x03(\\v2\\\".envoy.config.route.v3.VirtualHostR\\fvirtualHosts\\x12/\\n\" +\n\t\"\\x04vhds\\x18\\t \\x01(\\v2\\x1b.envoy.config.route.v3.VhdsR\\x04vhds\\x12D\\n\" +\n\t\"\\x15internal_only_headers\\x18\\x03 \\x03(\\tB\\x10\\xfaB\\r\\x92\\x01\\n\" +\n\t\"\\\"\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x13internalOnlyHeaders\\x12i\\n\" +\n\t\"\\x17response_headers_to_add\\x18\\x04 \\x03(\\v2'.envoy.config.core.v3.HeaderValueOptionB\\t\\xfaB\\x06\\x92\\x01\\x03\\x10\\xe8\\aR\\x14responseHeadersToAdd\\x12M\\n\" +\n\t\"\\x1aresponse_headers_to_remove\\x18\\x05 \\x03(\\tB\\x10\\xfaB\\r\\x92\\x01\\n\" +\n\t\"\\\"\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x17responseHeadersToRemove\\x12g\\n\" +\n\t\"\\x16request_headers_to_add\\x18\\x06 \\x03(\\v2'.envoy.config.core.v3.HeaderValueOptionB\\t\\xfaB\\x06\\x92\\x01\\x03\\x10\\xe8\\aR\\x13requestHeadersToAdd\\x12K\\n\" +\n\t\"\\x19request_headers_to_remove\\x18\\b \\x03(\\tB\\x10\\xfaB\\r\\x92\\x01\\n\" +\n\t\"\\\"\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x16requestHeadersToRemove\\x12L\\n\" +\n\t\"#most_specific_header_mutations_wins\\x18\\n\" +\n\t\" \\x01(\\bR\\x1fmostSpecificHeaderMutationsWins\\x12G\\n\" +\n\t\"\\x11validate_clusters\\x18\\a \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\x10validateClusters\\x12i\\n\" +\n\t\"#max_direct_response_body_size_bytes\\x18\\v \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR\\x1emaxDirectResponseBodySizeBytes\\x12i\\n\" +\n\t\"\\x19cluster_specifier_plugins\\x18\\f \\x03(\\v2-.envoy.config.route.v3.ClusterSpecifierPluginR\\x17clusterSpecifierPlugins\\x12n\\n\" +\n\t\"\\x17request_mirror_policies\\x18\\r \\x03(\\v26.envoy.config.route.v3.RouteAction.RequestMirrorPolicyR\\x15requestMirrorPolicies\\x12>\\n\" +\n\t\"\\x1cignore_port_in_host_matching\\x18\\x0e \\x01(\\bR\\x18ignorePortInHostMatching\\x12!\\n\" +\n\t\"\\fvhost_header\\x18\\x12 \\x01(\\tR\\vvhostHeader\\x12S\\n\" +\n\t\"'ignore_path_parameters_in_path_matching\\x18\\x0f \\x01(\\bR\\\"ignorePathParametersInPathMatching\\x12z\\n\" +\n\t\"\\x17typed_per_filter_config\\x18\\x10 \\x03(\\v2C.envoy.config.route.v3.RouteConfiguration.TypedPerFilterConfigEntryR\\x14typedPerFilterConfig\\x12:\\n\" +\n\t\"\\bmetadata\\x18\\x11 \\x01(\\v2\\x1e.envoy.config.core.v3.MetadataR\\bmetadata\\x1a]\\n\" +\n\t\"\\x19TypedPerFilterConfigEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12*\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x14.google.protobuf.AnyR\\x05value:\\x028\\x01:&\\x9aň\\x1e!\\n\" +\n\t\"\\x1fenvoy.api.v2.RouteConfiguration\\\"s\\n\" +\n\t\"\\x04Vhds\\x12Q\\n\" +\n\t\"\\rconfig_source\\x18\\x01 \\x01(\\v2\\\".envoy.config.core.v3.ConfigSourceB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\fconfigSource:\\x18\\x9aň\\x1e\\x13\\n\" +\n\t\"\\x11envoy.api.v2.VhdsB\\x81\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.config.route.v3B\\n\" +\n\t\"RouteProtoP\\x01ZDgithub.com/envoyproxy/go-control-plane/envoy/config/route/v3;routev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_route_v3_route_proto_rawDescOnce sync.Once\n\tfile_envoy_config_route_v3_route_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_route_v3_route_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_route_v3_route_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_route_v3_route_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_route_v3_route_proto_rawDesc), len(file_envoy_config_route_v3_route_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_route_v3_route_proto_rawDescData\n}\n\nvar file_envoy_config_route_v3_route_proto_msgTypes = make([]protoimpl.MessageInfo, 3)\nvar file_envoy_config_route_v3_route_proto_goTypes = []any{\n\t(*RouteConfiguration)(nil),              // 0: envoy.config.route.v3.RouteConfiguration\n\t(*Vhds)(nil),                            // 1: envoy.config.route.v3.Vhds\n\tnil,                                     // 2: envoy.config.route.v3.RouteConfiguration.TypedPerFilterConfigEntry\n\t(*VirtualHost)(nil),                     // 3: envoy.config.route.v3.VirtualHost\n\t(*v3.HeaderValueOption)(nil),            // 4: envoy.config.core.v3.HeaderValueOption\n\t(*wrapperspb.BoolValue)(nil),            // 5: google.protobuf.BoolValue\n\t(*wrapperspb.UInt32Value)(nil),          // 6: google.protobuf.UInt32Value\n\t(*ClusterSpecifierPlugin)(nil),          // 7: envoy.config.route.v3.ClusterSpecifierPlugin\n\t(*RouteAction_RequestMirrorPolicy)(nil), // 8: envoy.config.route.v3.RouteAction.RequestMirrorPolicy\n\t(*v3.Metadata)(nil),                     // 9: envoy.config.core.v3.Metadata\n\t(*v3.ConfigSource)(nil),                 // 10: envoy.config.core.v3.ConfigSource\n\t(*anypb.Any)(nil),                       // 11: google.protobuf.Any\n}\nvar file_envoy_config_route_v3_route_proto_depIdxs = []int32{\n\t3,  // 0: envoy.config.route.v3.RouteConfiguration.virtual_hosts:type_name -> envoy.config.route.v3.VirtualHost\n\t1,  // 1: envoy.config.route.v3.RouteConfiguration.vhds:type_name -> envoy.config.route.v3.Vhds\n\t4,  // 2: envoy.config.route.v3.RouteConfiguration.response_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption\n\t4,  // 3: envoy.config.route.v3.RouteConfiguration.request_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption\n\t5,  // 4: envoy.config.route.v3.RouteConfiguration.validate_clusters:type_name -> google.protobuf.BoolValue\n\t6,  // 5: envoy.config.route.v3.RouteConfiguration.max_direct_response_body_size_bytes:type_name -> google.protobuf.UInt32Value\n\t7,  // 6: envoy.config.route.v3.RouteConfiguration.cluster_specifier_plugins:type_name -> envoy.config.route.v3.ClusterSpecifierPlugin\n\t8,  // 7: envoy.config.route.v3.RouteConfiguration.request_mirror_policies:type_name -> envoy.config.route.v3.RouteAction.RequestMirrorPolicy\n\t2,  // 8: envoy.config.route.v3.RouteConfiguration.typed_per_filter_config:type_name -> envoy.config.route.v3.RouteConfiguration.TypedPerFilterConfigEntry\n\t9,  // 9: envoy.config.route.v3.RouteConfiguration.metadata:type_name -> envoy.config.core.v3.Metadata\n\t10, // 10: envoy.config.route.v3.Vhds.config_source:type_name -> envoy.config.core.v3.ConfigSource\n\t11, // 11: envoy.config.route.v3.RouteConfiguration.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any\n\t12, // [12:12] is the sub-list for method output_type\n\t12, // [12:12] is the sub-list for method input_type\n\t12, // [12:12] is the sub-list for extension type_name\n\t12, // [12:12] is the sub-list for extension extendee\n\t0,  // [0:12] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_route_v3_route_proto_init() }\nfunc file_envoy_config_route_v3_route_proto_init() {\n\tif File_envoy_config_route_v3_route_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_route_v3_route_proto_rawDesc), len(file_envoy_config_route_v3_route_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   3,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_route_v3_route_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_route_v3_route_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_route_v3_route_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_route_v3_route_proto = out.File\n\tfile_envoy_config_route_v3_route_proto_goTypes = nil\n\tfile_envoy_config_route_v3_route_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/route/v3/route.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/route/v3/route.proto\n\npackage routev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on RouteConfiguration with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RouteConfiguration) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteConfiguration with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RouteConfigurationMultiError, or nil if none found.\nfunc (m *RouteConfiguration) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteConfiguration) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Name\n\n\tfor idx, item := range m.GetVirtualHosts() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"VirtualHosts[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"VirtualHosts[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteConfigurationValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"VirtualHosts[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetVhds()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\tfield:  \"Vhds\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\tfield:  \"Vhds\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetVhds()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteConfigurationValidationError{\n\t\t\t\tfield:  \"Vhds\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetInternalOnlyHeaders() {\n\t\t_, _ = idx, item\n\n\t\tif !_RouteConfiguration_InternalOnlyHeaders_Pattern.MatchString(item) {\n\t\t\terr := RouteConfigurationValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"InternalOnlyHeaders[%v]\", idx),\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(m.GetResponseHeadersToAdd()) > 1000 {\n\t\terr := RouteConfigurationValidationError{\n\t\t\tfield:  \"ResponseHeadersToAdd\",\n\t\t\treason: \"value must contain no more than 1000 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetResponseHeadersToAdd() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteConfigurationValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToAdd[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetResponseHeadersToRemove() {\n\t\t_, _ = idx, item\n\n\t\tif !_RouteConfiguration_ResponseHeadersToRemove_Pattern.MatchString(item) {\n\t\t\terr := RouteConfigurationValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToRemove[%v]\", idx),\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(m.GetRequestHeadersToAdd()) > 1000 {\n\t\terr := RouteConfigurationValidationError{\n\t\t\tfield:  \"RequestHeadersToAdd\",\n\t\t\treason: \"value must contain no more than 1000 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetRequestHeadersToAdd() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteConfigurationValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetRequestHeadersToRemove() {\n\t\t_, _ = idx, item\n\n\t\tif !_RouteConfiguration_RequestHeadersToRemove_Pattern.MatchString(item) {\n\t\t\terr := RouteConfigurationValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToRemove[%v]\", idx),\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\t// no validation rules for MostSpecificHeaderMutationsWins\n\n\tif all {\n\t\tswitch v := interface{}(m.GetValidateClusters()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\tfield:  \"ValidateClusters\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\tfield:  \"ValidateClusters\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetValidateClusters()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteConfigurationValidationError{\n\t\t\t\tfield:  \"ValidateClusters\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxDirectResponseBodySizeBytes()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\tfield:  \"MaxDirectResponseBodySizeBytes\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\tfield:  \"MaxDirectResponseBodySizeBytes\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxDirectResponseBodySizeBytes()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteConfigurationValidationError{\n\t\t\t\tfield:  \"MaxDirectResponseBodySizeBytes\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetClusterSpecifierPlugins() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ClusterSpecifierPlugins[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ClusterSpecifierPlugins[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteConfigurationValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ClusterSpecifierPlugins[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetRequestMirrorPolicies() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestMirrorPolicies[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestMirrorPolicies[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteConfigurationValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RequestMirrorPolicies[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// no validation rules for IgnorePortInHostMatching\n\n\t// no validation rules for VhostHeader\n\n\t// no validation rules for IgnorePathParametersInPathMatching\n\n\t{\n\t\tsorted_keys := make([]string, len(m.GetTypedPerFilterConfig()))\n\t\ti := 0\n\t\tfor key := range m.GetTypedPerFilterConfig() {\n\t\t\tsorted_keys[i] = key\n\t\t\ti++\n\t\t}\n\t\tsort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] })\n\t\tfor _, key := range sorted_keys {\n\t\t\tval := m.GetTypedPerFilterConfig()[key]\n\t\t\t_ = val\n\n\t\t\t// no validation rules for TypedPerFilterConfig[key]\n\n\t\t\tif all {\n\t\t\t\tswitch v := interface{}(val).(type) {\n\t\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedPerFilterConfig[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\tcase interface{ Validate() error }:\n\t\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedPerFilterConfig[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if v, ok := interface{}(val).(interface{ Validate() error }); ok {\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\treturn RouteConfigurationValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedPerFilterConfig[%v]\", key),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMetadata()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteConfigurationValidationError{\n\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMetadata()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteConfigurationValidationError{\n\t\t\t\tfield:  \"Metadata\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteConfigurationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteConfigurationMultiError is an error wrapping multiple validation errors\n// returned by RouteConfiguration.ValidateAll() if the designated constraints\n// aren't met.\ntype RouteConfigurationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteConfigurationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteConfigurationMultiError) AllErrors() []error { return m }\n\n// RouteConfigurationValidationError is the validation error returned by\n// RouteConfiguration.Validate if the designated constraints aren't met.\ntype RouteConfigurationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteConfigurationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteConfigurationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteConfigurationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteConfigurationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteConfigurationValidationError) ErrorName() string {\n\treturn \"RouteConfigurationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteConfigurationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteConfiguration.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteConfigurationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteConfigurationValidationError{}\n\nvar _RouteConfiguration_InternalOnlyHeaders_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _RouteConfiguration_ResponseHeadersToRemove_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _RouteConfiguration_RequestHeadersToRemove_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on Vhds with the rules defined in the proto\n// definition for this message. If any rules are violated, the first error\n// encountered is returned, or nil if there are no violations.\nfunc (m *Vhds) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Vhds with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in VhdsMultiError, or nil if none found.\nfunc (m *Vhds) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Vhds) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetConfigSource() == nil {\n\t\terr := VhdsValidationError{\n\t\t\tfield:  \"ConfigSource\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetConfigSource()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, VhdsValidationError{\n\t\t\t\t\tfield:  \"ConfigSource\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, VhdsValidationError{\n\t\t\t\t\tfield:  \"ConfigSource\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetConfigSource()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn VhdsValidationError{\n\t\t\t\tfield:  \"ConfigSource\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn VhdsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// VhdsMultiError is an error wrapping multiple validation errors returned by\n// Vhds.ValidateAll() if the designated constraints aren't met.\ntype VhdsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m VhdsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m VhdsMultiError) AllErrors() []error { return m }\n\n// VhdsValidationError is the validation error returned by Vhds.Validate if the\n// designated constraints aren't met.\ntype VhdsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e VhdsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e VhdsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e VhdsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e VhdsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e VhdsValidationError) ErrorName() string { return \"VhdsValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e VhdsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sVhds.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = VhdsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = VhdsValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/route/v3/route_components.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/route/v3/route_components.proto\n\npackage routev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tv3 \"github.com/cncf/xds/go/xds/type/matcher/v3\"\n\t_ \"github.com/envoyproxy/go-control-plane/envoy/annotations\"\n\tv35 \"github.com/envoyproxy/go-control-plane/envoy/config/common/mutation_rules/v3\"\n\tv31 \"github.com/envoyproxy/go-control-plane/envoy/config/core/v3\"\n\tv32 \"github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3\"\n\tv36 \"github.com/envoyproxy/go-control-plane/envoy/type/metadata/v3\"\n\tv34 \"github.com/envoyproxy/go-control-plane/envoy/type/tracing/v3\"\n\tv33 \"github.com/envoyproxy/go-control-plane/envoy/type/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype VirtualHost_TlsRequirementType int32\n\nconst (\n\t// No TLS requirement for the virtual host.\n\tVirtualHost_NONE VirtualHost_TlsRequirementType = 0\n\t// External requests must use TLS. If a request is external and it is not\n\t// using TLS, a 301 redirect will be sent telling the client to use HTTPS.\n\tVirtualHost_EXTERNAL_ONLY VirtualHost_TlsRequirementType = 1\n\t// All requests must use TLS. If a request is not using TLS, a 301 redirect\n\t// will be sent telling the client to use HTTPS.\n\tVirtualHost_ALL VirtualHost_TlsRequirementType = 2\n)\n\n// Enum value maps for VirtualHost_TlsRequirementType.\nvar (\n\tVirtualHost_TlsRequirementType_name = map[int32]string{\n\t\t0: \"NONE\",\n\t\t1: \"EXTERNAL_ONLY\",\n\t\t2: \"ALL\",\n\t}\n\tVirtualHost_TlsRequirementType_value = map[string]int32{\n\t\t\"NONE\":          0,\n\t\t\"EXTERNAL_ONLY\": 1,\n\t\t\"ALL\":           2,\n\t}\n)\n\nfunc (x VirtualHost_TlsRequirementType) Enum() *VirtualHost_TlsRequirementType {\n\tp := new(VirtualHost_TlsRequirementType)\n\t*p = x\n\treturn p\n}\n\nfunc (x VirtualHost_TlsRequirementType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (VirtualHost_TlsRequirementType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_route_v3_route_components_proto_enumTypes[0].Descriptor()\n}\n\nfunc (VirtualHost_TlsRequirementType) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_route_v3_route_components_proto_enumTypes[0]\n}\n\nfunc (x VirtualHost_TlsRequirementType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use VirtualHost_TlsRequirementType.Descriptor instead.\nfunc (VirtualHost_TlsRequirementType) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{0, 0}\n}\n\ntype RouteAction_ClusterNotFoundResponseCode int32\n\nconst (\n\t// HTTP status code - 503 Service Unavailable.\n\tRouteAction_SERVICE_UNAVAILABLE RouteAction_ClusterNotFoundResponseCode = 0\n\t// HTTP status code - 404 Not Found.\n\tRouteAction_NOT_FOUND RouteAction_ClusterNotFoundResponseCode = 1\n\t// HTTP status code - 500 Internal Server Error.\n\tRouteAction_INTERNAL_SERVER_ERROR RouteAction_ClusterNotFoundResponseCode = 2\n)\n\n// Enum value maps for RouteAction_ClusterNotFoundResponseCode.\nvar (\n\tRouteAction_ClusterNotFoundResponseCode_name = map[int32]string{\n\t\t0: \"SERVICE_UNAVAILABLE\",\n\t\t1: \"NOT_FOUND\",\n\t\t2: \"INTERNAL_SERVER_ERROR\",\n\t}\n\tRouteAction_ClusterNotFoundResponseCode_value = map[string]int32{\n\t\t\"SERVICE_UNAVAILABLE\":   0,\n\t\t\"NOT_FOUND\":             1,\n\t\t\"INTERNAL_SERVER_ERROR\": 2,\n\t}\n)\n\nfunc (x RouteAction_ClusterNotFoundResponseCode) Enum() *RouteAction_ClusterNotFoundResponseCode {\n\tp := new(RouteAction_ClusterNotFoundResponseCode)\n\t*p = x\n\treturn p\n}\n\nfunc (x RouteAction_ClusterNotFoundResponseCode) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (RouteAction_ClusterNotFoundResponseCode) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_route_v3_route_components_proto_enumTypes[1].Descriptor()\n}\n\nfunc (RouteAction_ClusterNotFoundResponseCode) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_route_v3_route_components_proto_enumTypes[1]\n}\n\nfunc (x RouteAction_ClusterNotFoundResponseCode) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use RouteAction_ClusterNotFoundResponseCode.Descriptor instead.\nfunc (RouteAction_ClusterNotFoundResponseCode) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8, 0}\n}\n\n// Configures :ref:`internal redirect <arch_overview_internal_redirects>` behavior.\n// [#next-major-version: remove this definition - it's defined in the InternalRedirectPolicy message.]\n//\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\ntype RouteAction_InternalRedirectAction int32\n\nconst (\n\tRouteAction_PASS_THROUGH_INTERNAL_REDIRECT RouteAction_InternalRedirectAction = 0\n\tRouteAction_HANDLE_INTERNAL_REDIRECT       RouteAction_InternalRedirectAction = 1\n)\n\n// Enum value maps for RouteAction_InternalRedirectAction.\nvar (\n\tRouteAction_InternalRedirectAction_name = map[int32]string{\n\t\t0: \"PASS_THROUGH_INTERNAL_REDIRECT\",\n\t\t1: \"HANDLE_INTERNAL_REDIRECT\",\n\t}\n\tRouteAction_InternalRedirectAction_value = map[string]int32{\n\t\t\"PASS_THROUGH_INTERNAL_REDIRECT\": 0,\n\t\t\"HANDLE_INTERNAL_REDIRECT\":       1,\n\t}\n)\n\nfunc (x RouteAction_InternalRedirectAction) Enum() *RouteAction_InternalRedirectAction {\n\tp := new(RouteAction_InternalRedirectAction)\n\t*p = x\n\treturn p\n}\n\nfunc (x RouteAction_InternalRedirectAction) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (RouteAction_InternalRedirectAction) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_route_v3_route_components_proto_enumTypes[2].Descriptor()\n}\n\nfunc (RouteAction_InternalRedirectAction) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_route_v3_route_components_proto_enumTypes[2]\n}\n\nfunc (x RouteAction_InternalRedirectAction) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use RouteAction_InternalRedirectAction.Descriptor instead.\nfunc (RouteAction_InternalRedirectAction) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8, 1}\n}\n\ntype RetryPolicy_ResetHeaderFormat int32\n\nconst (\n\tRetryPolicy_SECONDS        RetryPolicy_ResetHeaderFormat = 0\n\tRetryPolicy_UNIX_TIMESTAMP RetryPolicy_ResetHeaderFormat = 1\n)\n\n// Enum value maps for RetryPolicy_ResetHeaderFormat.\nvar (\n\tRetryPolicy_ResetHeaderFormat_name = map[int32]string{\n\t\t0: \"SECONDS\",\n\t\t1: \"UNIX_TIMESTAMP\",\n\t}\n\tRetryPolicy_ResetHeaderFormat_value = map[string]int32{\n\t\t\"SECONDS\":        0,\n\t\t\"UNIX_TIMESTAMP\": 1,\n\t}\n)\n\nfunc (x RetryPolicy_ResetHeaderFormat) Enum() *RetryPolicy_ResetHeaderFormat {\n\tp := new(RetryPolicy_ResetHeaderFormat)\n\t*p = x\n\treturn p\n}\n\nfunc (x RetryPolicy_ResetHeaderFormat) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (RetryPolicy_ResetHeaderFormat) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_route_v3_route_components_proto_enumTypes[3].Descriptor()\n}\n\nfunc (RetryPolicy_ResetHeaderFormat) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_route_v3_route_components_proto_enumTypes[3]\n}\n\nfunc (x RetryPolicy_ResetHeaderFormat) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use RetryPolicy_ResetHeaderFormat.Descriptor instead.\nfunc (RetryPolicy_ResetHeaderFormat) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{9, 0}\n}\n\ntype RedirectAction_RedirectResponseCode int32\n\nconst (\n\t// Moved Permanently HTTP Status Code - 301.\n\tRedirectAction_MOVED_PERMANENTLY RedirectAction_RedirectResponseCode = 0\n\t// Found HTTP Status Code - 302.\n\tRedirectAction_FOUND RedirectAction_RedirectResponseCode = 1\n\t// See Other HTTP Status Code - 303.\n\tRedirectAction_SEE_OTHER RedirectAction_RedirectResponseCode = 2\n\t// Temporary Redirect HTTP Status Code - 307.\n\tRedirectAction_TEMPORARY_REDIRECT RedirectAction_RedirectResponseCode = 3\n\t// Permanent Redirect HTTP Status Code - 308.\n\tRedirectAction_PERMANENT_REDIRECT RedirectAction_RedirectResponseCode = 4\n)\n\n// Enum value maps for RedirectAction_RedirectResponseCode.\nvar (\n\tRedirectAction_RedirectResponseCode_name = map[int32]string{\n\t\t0: \"MOVED_PERMANENTLY\",\n\t\t1: \"FOUND\",\n\t\t2: \"SEE_OTHER\",\n\t\t3: \"TEMPORARY_REDIRECT\",\n\t\t4: \"PERMANENT_REDIRECT\",\n\t}\n\tRedirectAction_RedirectResponseCode_value = map[string]int32{\n\t\t\"MOVED_PERMANENTLY\":  0,\n\t\t\"FOUND\":              1,\n\t\t\"SEE_OTHER\":          2,\n\t\t\"TEMPORARY_REDIRECT\": 3,\n\t\t\"PERMANENT_REDIRECT\": 4,\n\t}\n)\n\nfunc (x RedirectAction_RedirectResponseCode) Enum() *RedirectAction_RedirectResponseCode {\n\tp := new(RedirectAction_RedirectResponseCode)\n\t*p = x\n\treturn p\n}\n\nfunc (x RedirectAction_RedirectResponseCode) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (RedirectAction_RedirectResponseCode) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_route_v3_route_components_proto_enumTypes[4].Descriptor()\n}\n\nfunc (RedirectAction_RedirectResponseCode) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_route_v3_route_components_proto_enumTypes[4]\n}\n\nfunc (x RedirectAction_RedirectResponseCode) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use RedirectAction_RedirectResponseCode.Descriptor instead.\nfunc (RedirectAction_RedirectResponseCode) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{11, 0}\n}\n\ntype RateLimit_Action_MetaData_Source int32\n\nconst (\n\t// Query :ref:`dynamic metadata <well_known_dynamic_metadata>`\n\tRateLimit_Action_MetaData_DYNAMIC RateLimit_Action_MetaData_Source = 0\n\t// Query :ref:`route entry metadata <envoy_v3_api_field_config.route.v3.Route.metadata>`\n\tRateLimit_Action_MetaData_ROUTE_ENTRY RateLimit_Action_MetaData_Source = 1\n)\n\n// Enum value maps for RateLimit_Action_MetaData_Source.\nvar (\n\tRateLimit_Action_MetaData_Source_name = map[int32]string{\n\t\t0: \"DYNAMIC\",\n\t\t1: \"ROUTE_ENTRY\",\n\t}\n\tRateLimit_Action_MetaData_Source_value = map[string]int32{\n\t\t\"DYNAMIC\":     0,\n\t\t\"ROUTE_ENTRY\": 1,\n\t}\n)\n\nfunc (x RateLimit_Action_MetaData_Source) Enum() *RateLimit_Action_MetaData_Source {\n\tp := new(RateLimit_Action_MetaData_Source)\n\t*p = x\n\treturn p\n}\n\nfunc (x RateLimit_Action_MetaData_Source) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (RateLimit_Action_MetaData_Source) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_config_route_v3_route_components_proto_enumTypes[5].Descriptor()\n}\n\nfunc (RateLimit_Action_MetaData_Source) Type() protoreflect.EnumType {\n\treturn &file_envoy_config_route_v3_route_components_proto_enumTypes[5]\n}\n\nfunc (x RateLimit_Action_MetaData_Source) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use RateLimit_Action_MetaData_Source.Descriptor instead.\nfunc (RateLimit_Action_MetaData_Source) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 0, 9, 0}\n}\n\n// The top level element in the routing configuration is a virtual host. Each virtual host has\n// a logical name as well as a set of domains that get routed to it based on the incoming request's\n// host header. This allows a single listener to service multiple top level domain path trees. Once\n// a virtual host is selected based on the domain, the routes are processed in order to see which\n// upstream cluster to route to or whether to perform a redirect.\n// [#next-free-field: 26]\ntype VirtualHost struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The logical name of the virtual host. This is used when emitting certain\n\t// statistics but is not relevant for routing.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// A list of domains (host/authority header) that will be matched to this\n\t// virtual host. Wildcard hosts are supported in the suffix or prefix form.\n\t//\n\t// Domain search order:\n\t//  1. Exact domain names: “www.foo.com“.\n\t//  2. Suffix domain wildcards: “*.foo.com“ or “*-bar.foo.com“.\n\t//  3. Prefix domain wildcards: “foo.*“ or “foo-*“.\n\t//  4. Special wildcard “*“ matching any domain.\n\t//\n\t// .. note::\n\t//\n\t//\tThe wildcard will not match the empty string.\n\t//\tFor example, ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``.\n\t//\tThe longest wildcards match first.\n\t//\tOnly a single virtual host in the entire route configuration can match on ``*``. A domain\n\t//\tmust be unique across all virtual hosts or the config will fail to load.\n\t//\n\t// Domains cannot contain control characters. This is validated by the well_known_regex HTTP_HEADER_VALUE.\n\tDomains []string `protobuf:\"bytes,2,rep,name=domains,proto3\" json:\"domains,omitempty\"`\n\t// The list of routes that will be matched, in order, for incoming requests.\n\t// The first route that matches will be used.\n\t// Only one of this and “matcher“ can be specified.\n\tRoutes []*Route `protobuf:\"bytes,3,rep,name=routes,proto3\" json:\"routes,omitempty\"`\n\t// The match tree to use when resolving route actions for incoming requests. Only one of this and “routes“\n\t// can be specified.\n\tMatcher *v3.Matcher `protobuf:\"bytes,21,opt,name=matcher,proto3\" json:\"matcher,omitempty\"`\n\t// Specifies the type of TLS enforcement the virtual host expects. If this option is not\n\t// specified, there is no TLS requirement for the virtual host.\n\tRequireTls VirtualHost_TlsRequirementType `protobuf:\"varint,4,opt,name=require_tls,json=requireTls,proto3,enum=envoy.config.route.v3.VirtualHost_TlsRequirementType\" json:\"require_tls,omitempty\"`\n\t// A list of virtual clusters defined for this virtual host. Virtual clusters\n\t// are used for additional statistics gathering.\n\tVirtualClusters []*VirtualCluster `protobuf:\"bytes,5,rep,name=virtual_clusters,json=virtualClusters,proto3\" json:\"virtual_clusters,omitempty\"`\n\t// Specifies a set of rate limit configurations that will be applied to the\n\t// virtual host.\n\tRateLimits []*RateLimit `protobuf:\"bytes,6,rep,name=rate_limits,json=rateLimits,proto3\" json:\"rate_limits,omitempty\"`\n\t// Specifies a list of HTTP headers that should be added to each request\n\t// handled by this virtual host. Headers specified at this level are applied\n\t// after headers from enclosed :ref:`envoy_v3_api_msg_config.route.v3.Route` and before headers from the\n\t// enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including\n\t// details on header value syntax, see the documentation on :ref:`custom request headers\n\t// <config_http_conn_man_headers_custom_request_headers>`.\n\tRequestHeadersToAdd []*v31.HeaderValueOption `protobuf:\"bytes,7,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3\" json:\"request_headers_to_add,omitempty\"`\n\t// Specifies a list of HTTP headers that should be removed from each request\n\t// handled by this virtual host.\n\tRequestHeadersToRemove []string `protobuf:\"bytes,13,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3\" json:\"request_headers_to_remove,omitempty\"`\n\t// Specifies a list of HTTP headers that should be added to each response\n\t// handled by this virtual host. Headers specified at this level are applied\n\t// after headers from enclosed :ref:`envoy_v3_api_msg_config.route.v3.Route` and before headers from the\n\t// enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including\n\t// details on header value syntax, see the documentation on :ref:`custom request headers\n\t// <config_http_conn_man_headers_custom_request_headers>`.\n\tResponseHeadersToAdd []*v31.HeaderValueOption `protobuf:\"bytes,10,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3\" json:\"response_headers_to_add,omitempty\"`\n\t// Specifies a list of HTTP headers that should be removed from each response\n\t// handled by this virtual host.\n\tResponseHeadersToRemove []string `protobuf:\"bytes,11,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3\" json:\"response_headers_to_remove,omitempty\"`\n\t// Indicates that the virtual host has a CORS policy. This field is ignored if related cors policy is\n\t// found in the\n\t// :ref:`VirtualHost.typed_per_filter_config<envoy_v3_api_field_config.route.v3.VirtualHost.typed_per_filter_config>`.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis option has been deprecated. Please use\n\t//\t:ref:`VirtualHost.typed_per_filter_config<envoy_v3_api_field_config.route.v3.VirtualHost.typed_per_filter_config>`\n\t//\tto configure the CORS HTTP filter.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tCors *CorsPolicy `protobuf:\"bytes,8,opt,name=cors,proto3\" json:\"cors,omitempty\"`\n\t// This field can be used to provide virtual host level per filter config. The key should match the\n\t// :ref:`filter config name\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpFilter.name>`.\n\t// See :ref:`HTTP filter route-specific config <arch_overview_http_filters_per_filter_config>`\n\t// for details.\n\t// [#comment: An entry's value may be wrapped in a\n\t// :ref:`FilterConfig<envoy_v3_api_msg_config.route.v3.FilterConfig>`\n\t// message to specify additional options.]\n\tTypedPerFilterConfig map[string]*anypb.Any `protobuf:\"bytes,15,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3\" json:\"typed_per_filter_config,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\t// Decides whether the :ref:`x-envoy-attempt-count\n\t// <config_http_filters_router_x-envoy-attempt-count>` header should be included\n\t// in the upstream request. Setting this option will cause it to override any existing header\n\t// value, so in the case of two Envoys on the request path with this option enabled, the upstream\n\t// will see the attempt count as perceived by the second Envoy.\n\t//\n\t// Defaults to “false“.\n\t//\n\t// This header is unaffected by the\n\t// :ref:`suppress_envoy_headers\n\t// <envoy_v3_api_field_extensions.filters.http.router.v3.Router.suppress_envoy_headers>` flag.\n\t//\n\t// [#next-major-version: rename to include_attempt_count_in_request.]\n\tIncludeRequestAttemptCount bool `protobuf:\"varint,14,opt,name=include_request_attempt_count,json=includeRequestAttemptCount,proto3\" json:\"include_request_attempt_count,omitempty\"`\n\t// Decides whether the :ref:`x-envoy-attempt-count\n\t// <config_http_filters_router_x-envoy-attempt-count>` header should be included\n\t// in the downstream response. Setting this option will cause the router to override any existing header\n\t// value, so in the case of two Envoys on the request path with this option enabled, the downstream\n\t// will see the attempt count as perceived by the Envoy closest upstream from itself.\n\t//\n\t// Defaults to “false“.\n\t//\n\t// This header is unaffected by the\n\t// :ref:`suppress_envoy_headers\n\t// <envoy_v3_api_field_extensions.filters.http.router.v3.Router.suppress_envoy_headers>` flag.\n\tIncludeAttemptCountInResponse bool `protobuf:\"varint,19,opt,name=include_attempt_count_in_response,json=includeAttemptCountInResponse,proto3\" json:\"include_attempt_count_in_response,omitempty\"`\n\t// Indicates the retry policy for all routes in this virtual host. Note that setting a\n\t// route level entry will take precedence over this config and it'll be treated\n\t// independently (e.g., values are not inherited).\n\tRetryPolicy *RetryPolicy `protobuf:\"bytes,16,opt,name=retry_policy,json=retryPolicy,proto3\" json:\"retry_policy,omitempty\"`\n\t// [#not-implemented-hide:]\n\t// Specifies the configuration for retry policy extension. Note that setting a route level entry\n\t// will take precedence over this config and it'll be treated independently (e.g., values are not\n\t// inherited). :ref:`Retry policy <envoy_v3_api_field_config.route.v3.VirtualHost.retry_policy>` should not be\n\t// set if this field is used.\n\tRetryPolicyTypedConfig *anypb.Any `protobuf:\"bytes,20,opt,name=retry_policy_typed_config,json=retryPolicyTypedConfig,proto3\" json:\"retry_policy_typed_config,omitempty\"`\n\t// Indicates the hedge policy for all routes in this virtual host. Note that setting a\n\t// route level entry will take precedence over this config and it'll be treated\n\t// independently (e.g., values are not inherited).\n\tHedgePolicy *HedgePolicy `protobuf:\"bytes,17,opt,name=hedge_policy,json=hedgePolicy,proto3\" json:\"hedge_policy,omitempty\"`\n\t// Decides whether to include the :ref:`x-envoy-is-timeout-retry <config_http_filters_router_x-envoy-is-timeout-retry>`\n\t// request header in retries initiated by per-try timeouts.\n\tIncludeIsTimeoutRetryHeader bool `protobuf:\"varint,23,opt,name=include_is_timeout_retry_header,json=includeIsTimeoutRetryHeader,proto3\" json:\"include_is_timeout_retry_header,omitempty\"`\n\t// The maximum bytes which will be buffered for retries and shadowing. If set, the bytes actually buffered will be\n\t// the minimum value of this and the listener “per_connection_buffer_limit_bytes“.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis field has been deprecated. Please use :ref:`request_body_buffer_limit\n\t//\t<envoy_v3_api_field_config.route.v3.VirtualHost.request_body_buffer_limit>` instead.\n\t//\tOnly one of ``per_request_buffer_limit_bytes`` and ``request_body_buffer_limit`` could be set.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tPerRequestBufferLimitBytes *wrapperspb.UInt32Value `protobuf:\"bytes,18,opt,name=per_request_buffer_limit_bytes,json=perRequestBufferLimitBytes,proto3\" json:\"per_request_buffer_limit_bytes,omitempty\"`\n\t// The maximum bytes which will be buffered for request bodies to support large request body\n\t// buffering beyond the “per_connection_buffer_limit_bytes“.\n\t//\n\t// This limit is specifically for the request body buffering and allows buffering larger payloads while maintaining\n\t// flow control.\n\t//\n\t// Buffer limit precedence (from highest to lowest priority):\n\t//\n\t//  1. If “request_body_buffer_limit“ is set, then “request_body_buffer_limit“ will be used.\n\t//  2. If :ref:`per_request_buffer_limit_bytes <envoy_v3_api_field_config.route.v3.VirtualHost.per_request_buffer_limit_bytes>`\n\t//     is set but “request_body_buffer_limit“ is not, then “min(per_request_buffer_limit_bytes, per_connection_buffer_limit_bytes)“\n\t//     will be used.\n\t//  3. If neither is set, then “per_connection_buffer_limit_bytes“ will be used.\n\t//\n\t// For flow control chunk sizes, “min(per_connection_buffer_limit_bytes, 16KB)“ will be used.\n\t//\n\t// Only one of :ref:`per_request_buffer_limit_bytes <envoy_v3_api_field_config.route.v3.VirtualHost.per_request_buffer_limit_bytes>`\n\t// and “request_body_buffer_limit“ could be set.\n\tRequestBodyBufferLimit *wrapperspb.UInt64Value `protobuf:\"bytes,25,opt,name=request_body_buffer_limit,json=requestBodyBufferLimit,proto3\" json:\"request_body_buffer_limit,omitempty\"`\n\t// Specify a set of default request mirroring policies for every route under this virtual host.\n\t// It takes precedence over the route config mirror policy entirely.\n\t// That is, policies are not merged, the most specific non-empty one becomes the mirror policies.\n\tRequestMirrorPolicies []*RouteAction_RequestMirrorPolicy `protobuf:\"bytes,22,rep,name=request_mirror_policies,json=requestMirrorPolicies,proto3\" json:\"request_mirror_policies,omitempty\"`\n\t// The metadata field can be used to provide additional information\n\t// about the virtual host. It can be used for configuration, stats, and logging.\n\t// The metadata should go under the filter namespace that will need it.\n\t// For instance, if the metadata is intended for the Router filter,\n\t// the filter name should be specified as “envoy.filters.http.router“.\n\tMetadata      *v31.Metadata `protobuf:\"bytes,24,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *VirtualHost) Reset() {\n\t*x = VirtualHost{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *VirtualHost) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*VirtualHost) ProtoMessage() {}\n\nfunc (x *VirtualHost) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use VirtualHost.ProtoReflect.Descriptor instead.\nfunc (*VirtualHost) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *VirtualHost) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *VirtualHost) GetDomains() []string {\n\tif x != nil {\n\t\treturn x.Domains\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetRoutes() []*Route {\n\tif x != nil {\n\t\treturn x.Routes\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetMatcher() *v3.Matcher {\n\tif x != nil {\n\t\treturn x.Matcher\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetRequireTls() VirtualHost_TlsRequirementType {\n\tif x != nil {\n\t\treturn x.RequireTls\n\t}\n\treturn VirtualHost_NONE\n}\n\nfunc (x *VirtualHost) GetVirtualClusters() []*VirtualCluster {\n\tif x != nil {\n\t\treturn x.VirtualClusters\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetRateLimits() []*RateLimit {\n\tif x != nil {\n\t\treturn x.RateLimits\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetRequestHeadersToAdd() []*v31.HeaderValueOption {\n\tif x != nil {\n\t\treturn x.RequestHeadersToAdd\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetRequestHeadersToRemove() []string {\n\tif x != nil {\n\t\treturn x.RequestHeadersToRemove\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetResponseHeadersToAdd() []*v31.HeaderValueOption {\n\tif x != nil {\n\t\treturn x.ResponseHeadersToAdd\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetResponseHeadersToRemove() []string {\n\tif x != nil {\n\t\treturn x.ResponseHeadersToRemove\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *VirtualHost) GetCors() *CorsPolicy {\n\tif x != nil {\n\t\treturn x.Cors\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetTypedPerFilterConfig() map[string]*anypb.Any {\n\tif x != nil {\n\t\treturn x.TypedPerFilterConfig\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetIncludeRequestAttemptCount() bool {\n\tif x != nil {\n\t\treturn x.IncludeRequestAttemptCount\n\t}\n\treturn false\n}\n\nfunc (x *VirtualHost) GetIncludeAttemptCountInResponse() bool {\n\tif x != nil {\n\t\treturn x.IncludeAttemptCountInResponse\n\t}\n\treturn false\n}\n\nfunc (x *VirtualHost) GetRetryPolicy() *RetryPolicy {\n\tif x != nil {\n\t\treturn x.RetryPolicy\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetRetryPolicyTypedConfig() *anypb.Any {\n\tif x != nil {\n\t\treturn x.RetryPolicyTypedConfig\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetHedgePolicy() *HedgePolicy {\n\tif x != nil {\n\t\treturn x.HedgePolicy\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetIncludeIsTimeoutRetryHeader() bool {\n\tif x != nil {\n\t\treturn x.IncludeIsTimeoutRetryHeader\n\t}\n\treturn false\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *VirtualHost) GetPerRequestBufferLimitBytes() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.PerRequestBufferLimitBytes\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetRequestBodyBufferLimit() *wrapperspb.UInt64Value {\n\tif x != nil {\n\t\treturn x.RequestBodyBufferLimit\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetRequestMirrorPolicies() []*RouteAction_RequestMirrorPolicy {\n\tif x != nil {\n\t\treturn x.RequestMirrorPolicies\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualHost) GetMetadata() *v31.Metadata {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\n// A filter-defined action type.\ntype FilterAction struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tAction        *anypb.Any             `protobuf:\"bytes,1,opt,name=action,proto3\" json:\"action,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *FilterAction) Reset() {\n\t*x = FilterAction{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FilterAction) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FilterAction) ProtoMessage() {}\n\nfunc (x *FilterAction) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FilterAction.ProtoReflect.Descriptor instead.\nfunc (*FilterAction) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *FilterAction) GetAction() *anypb.Any {\n\tif x != nil {\n\t\treturn x.Action\n\t}\n\treturn nil\n}\n\n// This can be used in route matcher :ref:`VirtualHost.matcher <envoy_v3_api_field_config.route.v3.VirtualHost.matcher>`.\n// When the matcher matches, routes will be matched and run.\ntype RouteList struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The list of routes that will be matched and run, in order. The first route that matches will be used.\n\tRoutes        []*Route `protobuf:\"bytes,1,rep,name=routes,proto3\" json:\"routes,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteList) Reset() {\n\t*x = RouteList{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteList) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteList) ProtoMessage() {}\n\nfunc (x *RouteList) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteList.ProtoReflect.Descriptor instead.\nfunc (*RouteList) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *RouteList) GetRoutes() []*Route {\n\tif x != nil {\n\t\treturn x.Routes\n\t}\n\treturn nil\n}\n\n// A route is both a specification of how to match a request as well as an indication of what to do\n// next (e.g., redirect, forward, rewrite, etc.).\n//\n// .. attention::\n//\n//\tEnvoy supports routing on HTTP method via :ref:`header matching\n//\t<envoy_v3_api_msg_config.route.v3.HeaderMatcher>`.\n//\n// [#next-free-field: 21]\ntype Route struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Name for the route.\n\tName string `protobuf:\"bytes,14,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Route matching parameters.\n\tMatch *RouteMatch `protobuf:\"bytes,1,opt,name=match,proto3\" json:\"match,omitempty\"`\n\t// Types that are valid to be assigned to Action:\n\t//\n\t//\t*Route_Route\n\t//\t*Route_Redirect\n\t//\t*Route_DirectResponse\n\t//\t*Route_FilterAction\n\t//\t*Route_NonForwardingAction\n\tAction isRoute_Action `protobuf_oneof:\"action\"`\n\t// The Metadata field can be used to provide additional information\n\t// about the route. It can be used for configuration, stats, and logging.\n\t// The metadata should go under the filter namespace that will need it.\n\t// For instance, if the metadata is intended for the Router filter,\n\t// the filter name should be specified as “envoy.filters.http.router“.\n\tMetadata *v31.Metadata `protobuf:\"bytes,4,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n\t// Decorator for the matched route.\n\tDecorator *Decorator `protobuf:\"bytes,5,opt,name=decorator,proto3\" json:\"decorator,omitempty\"`\n\t// This field can be used to provide route specific per filter config. The key should match the\n\t// :ref:`filter config name\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpFilter.name>`.\n\t// See :ref:`HTTP filter route-specific config <arch_overview_http_filters_per_filter_config>`\n\t// for details.\n\t// [#comment: An entry's value may be wrapped in a\n\t// :ref:`FilterConfig<envoy_v3_api_msg_config.route.v3.FilterConfig>`\n\t// message to specify additional options.]\n\tTypedPerFilterConfig map[string]*anypb.Any `protobuf:\"bytes,13,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3\" json:\"typed_per_filter_config,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\t// Specifies a set of headers that will be added to requests matching this\n\t// route. Headers specified at this level are applied before headers from the\n\t// enclosing :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost` and\n\t// :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including details on\n\t// header value syntax, see the documentation on :ref:`custom request headers\n\t// <config_http_conn_man_headers_custom_request_headers>`.\n\tRequestHeadersToAdd []*v31.HeaderValueOption `protobuf:\"bytes,9,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3\" json:\"request_headers_to_add,omitempty\"`\n\t// Specifies a list of HTTP headers that should be removed from each request\n\t// matching this route.\n\tRequestHeadersToRemove []string `protobuf:\"bytes,12,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3\" json:\"request_headers_to_remove,omitempty\"`\n\t// Specifies a set of headers that will be added to responses to requests\n\t// matching this route. Headers specified at this level are applied before\n\t// headers from the enclosing :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost` and\n\t// :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including\n\t// details on header value syntax, see the documentation on\n\t// :ref:`custom request headers <config_http_conn_man_headers_custom_request_headers>`.\n\tResponseHeadersToAdd []*v31.HeaderValueOption `protobuf:\"bytes,10,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3\" json:\"response_headers_to_add,omitempty\"`\n\t// Specifies a list of HTTP headers that should be removed from each response\n\t// to requests matching this route.\n\tResponseHeadersToRemove []string `protobuf:\"bytes,11,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3\" json:\"response_headers_to_remove,omitempty\"`\n\t// Presence of the object defines whether the connection manager's tracing configuration\n\t// is overridden by this route specific instance.\n\tTracing *Tracing `protobuf:\"bytes,15,opt,name=tracing,proto3\" json:\"tracing,omitempty\"`\n\t// The maximum bytes which will be buffered for retries and shadowing.\n\t// If set, the bytes actually buffered will be the minimum value of this and the\n\t// listener per_connection_buffer_limit_bytes.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis field has been deprecated. Please use :ref:`request_body_buffer_limit\n\t//\t<envoy_v3_api_field_config.route.v3.Route.request_body_buffer_limit>` instead.\n\t//\tOnly one of ``per_request_buffer_limit_bytes`` and ``request_body_buffer_limit`` may be set.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tPerRequestBufferLimitBytes *wrapperspb.UInt32Value `protobuf:\"bytes,16,opt,name=per_request_buffer_limit_bytes,json=perRequestBufferLimitBytes,proto3\" json:\"per_request_buffer_limit_bytes,omitempty\"`\n\t// The human readable prefix to use when emitting statistics for this endpoint.\n\t// The statistics are rooted at vhost.<virtual host name>.route.<stat_prefix>.\n\t// This should be set for highly critical\n\t// endpoints that one wishes to get “per-route” statistics on.\n\t// If not set, endpoint statistics are not generated.\n\t//\n\t// The emitted statistics are the same as those documented for :ref:`virtual clusters <config_http_filters_router_vcluster_stats>`.\n\t//\n\t// .. warning::\n\t//\n\t//\tWe do not recommend setting up a stat prefix for\n\t//\tevery application endpoint. This is both not easily maintainable and\n\t//\tstatistics use a non-trivial amount of memory (approximately 1KiB per route).\n\tStatPrefix string `protobuf:\"bytes,19,opt,name=stat_prefix,json=statPrefix,proto3\" json:\"stat_prefix,omitempty\"`\n\t// The maximum bytes which will be buffered for request bodies to support large request body\n\t// buffering beyond the “per_connection_buffer_limit_bytes“.\n\t//\n\t// This limit is specifically for the request body buffering and allows buffering larger payloads while maintaining\n\t// flow control.\n\t//\n\t// Buffer limit precedence (from highest to lowest priority):\n\t//\n\t//  1. If “request_body_buffer_limit“ is set: use “request_body_buffer_limit“\n\t//  2. If :ref:`per_request_buffer_limit_bytes <envoy_v3_api_field_config.route.v3.Route.per_request_buffer_limit_bytes>`\n\t//     is set but “request_body_buffer_limit“ is not: use “min(per_request_buffer_limit_bytes, per_connection_buffer_limit_bytes)“\n\t//  3. If neither is set: use “per_connection_buffer_limit_bytes“\n\t//\n\t// For flow control chunk sizes, use “min(per_connection_buffer_limit_bytes, 16KB)“.\n\t//\n\t// Only one of :ref:`per_request_buffer_limit_bytes <envoy_v3_api_field_config.route.v3.Route.per_request_buffer_limit_bytes>`\n\t// and “request_body_buffer_limit“ may be set.\n\tRequestBodyBufferLimit *wrapperspb.UInt64Value `protobuf:\"bytes,20,opt,name=request_body_buffer_limit,json=requestBodyBufferLimit,proto3\" json:\"request_body_buffer_limit,omitempty\"`\n\tunknownFields          protoimpl.UnknownFields\n\tsizeCache              protoimpl.SizeCache\n}\n\nfunc (x *Route) Reset() {\n\t*x = Route{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Route) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Route) ProtoMessage() {}\n\nfunc (x *Route) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Route.ProtoReflect.Descriptor instead.\nfunc (*Route) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *Route) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *Route) GetMatch() *RouteMatch {\n\tif x != nil {\n\t\treturn x.Match\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetAction() isRoute_Action {\n\tif x != nil {\n\t\treturn x.Action\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetRoute() *RouteAction {\n\tif x != nil {\n\t\tif x, ok := x.Action.(*Route_Route); ok {\n\t\t\treturn x.Route\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetRedirect() *RedirectAction {\n\tif x != nil {\n\t\tif x, ok := x.Action.(*Route_Redirect); ok {\n\t\t\treturn x.Redirect\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetDirectResponse() *DirectResponseAction {\n\tif x != nil {\n\t\tif x, ok := x.Action.(*Route_DirectResponse); ok {\n\t\t\treturn x.DirectResponse\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetFilterAction() *FilterAction {\n\tif x != nil {\n\t\tif x, ok := x.Action.(*Route_FilterAction); ok {\n\t\t\treturn x.FilterAction\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetNonForwardingAction() *NonForwardingAction {\n\tif x != nil {\n\t\tif x, ok := x.Action.(*Route_NonForwardingAction); ok {\n\t\t\treturn x.NonForwardingAction\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetMetadata() *v31.Metadata {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetDecorator() *Decorator {\n\tif x != nil {\n\t\treturn x.Decorator\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetTypedPerFilterConfig() map[string]*anypb.Any {\n\tif x != nil {\n\t\treturn x.TypedPerFilterConfig\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetRequestHeadersToAdd() []*v31.HeaderValueOption {\n\tif x != nil {\n\t\treturn x.RequestHeadersToAdd\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetRequestHeadersToRemove() []string {\n\tif x != nil {\n\t\treturn x.RequestHeadersToRemove\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetResponseHeadersToAdd() []*v31.HeaderValueOption {\n\tif x != nil {\n\t\treturn x.ResponseHeadersToAdd\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetResponseHeadersToRemove() []string {\n\tif x != nil {\n\t\treturn x.ResponseHeadersToRemove\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetTracing() *Tracing {\n\tif x != nil {\n\t\treturn x.Tracing\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *Route) GetPerRequestBufferLimitBytes() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.PerRequestBufferLimitBytes\n\t}\n\treturn nil\n}\n\nfunc (x *Route) GetStatPrefix() string {\n\tif x != nil {\n\t\treturn x.StatPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *Route) GetRequestBodyBufferLimit() *wrapperspb.UInt64Value {\n\tif x != nil {\n\t\treturn x.RequestBodyBufferLimit\n\t}\n\treturn nil\n}\n\ntype isRoute_Action interface {\n\tisRoute_Action()\n}\n\ntype Route_Route struct {\n\t// Route request to some upstream cluster.\n\tRoute *RouteAction `protobuf:\"bytes,2,opt,name=route,proto3,oneof\"`\n}\n\ntype Route_Redirect struct {\n\t// Return a redirect.\n\tRedirect *RedirectAction `protobuf:\"bytes,3,opt,name=redirect,proto3,oneof\"`\n}\n\ntype Route_DirectResponse struct {\n\t// Return an arbitrary HTTP response directly, without proxying.\n\tDirectResponse *DirectResponseAction `protobuf:\"bytes,7,opt,name=direct_response,json=directResponse,proto3,oneof\"`\n}\n\ntype Route_FilterAction struct {\n\t// [#not-implemented-hide:]\n\t// A filter-defined action (e.g., it could dynamically generate the RouteAction).\n\t// [#comment: TODO(samflattery): Remove cleanup in route_fuzz_test.cc when\n\t// implemented]\n\tFilterAction *FilterAction `protobuf:\"bytes,17,opt,name=filter_action,json=filterAction,proto3,oneof\"`\n}\n\ntype Route_NonForwardingAction struct {\n\t// [#not-implemented-hide:]\n\t// An action used when the route will generate a response directly,\n\t// without forwarding to an upstream host. This will be used in non-proxy\n\t// xDS clients like the gRPC server. It could also be used in the future\n\t// in Envoy for a filter that directly generates responses for requests.\n\tNonForwardingAction *NonForwardingAction `protobuf:\"bytes,18,opt,name=non_forwarding_action,json=nonForwardingAction,proto3,oneof\"`\n}\n\nfunc (*Route_Route) isRoute_Action() {}\n\nfunc (*Route_Redirect) isRoute_Action() {}\n\nfunc (*Route_DirectResponse) isRoute_Action() {}\n\nfunc (*Route_FilterAction) isRoute_Action() {}\n\nfunc (*Route_NonForwardingAction) isRoute_Action() {}\n\n// Compared to the :ref:`cluster <envoy_v3_api_field_config.route.v3.RouteAction.cluster>` field that specifies a\n// single upstream cluster as the target of a request, the :ref:`weighted_clusters\n// <envoy_v3_api_field_config.route.v3.RouteAction.weighted_clusters>` option allows for specification of\n// multiple upstream clusters along with weights that indicate the percentage of\n// traffic to be forwarded to each cluster. The router selects an upstream cluster based on the\n// weights.\n// [#next-free-field: 6]\ntype WeightedCluster struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies one or more upstream clusters associated with the route.\n\tClusters []*WeightedCluster_ClusterWeight `protobuf:\"bytes,1,rep,name=clusters,proto3\" json:\"clusters,omitempty\"`\n\t// Specifies the total weight across all clusters. The sum of all cluster weights must equal this\n\t// value, if this is greater than 0.\n\t// This field is now deprecated, and the client will use the sum of all\n\t// cluster weights. It is up to the management server to supply the correct weights.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tTotalWeight *wrapperspb.UInt32Value `protobuf:\"bytes,3,opt,name=total_weight,json=totalWeight,proto3\" json:\"total_weight,omitempty\"`\n\t// Specifies the runtime key prefix that should be used to construct the\n\t// runtime keys associated with each cluster. When the “runtime_key_prefix“ is\n\t// specified, the router will look for weights associated with each upstream\n\t// cluster under the key “runtime_key_prefix“ + “.“ + “cluster[i].name“ where\n\t// “cluster[i]“ denotes an entry in the clusters array field. If the runtime\n\t// key for the cluster does not exist, the value specified in the\n\t// configuration file will be used as the default weight. See the :ref:`runtime documentation\n\t// <operations_runtime>` for how key names map to the underlying implementation.\n\tRuntimeKeyPrefix string `protobuf:\"bytes,2,opt,name=runtime_key_prefix,json=runtimeKeyPrefix,proto3\" json:\"runtime_key_prefix,omitempty\"`\n\t// Types that are valid to be assigned to RandomValueSpecifier:\n\t//\n\t//\t*WeightedCluster_HeaderName\n\t//\t*WeightedCluster_UseHashPolicy\n\tRandomValueSpecifier isWeightedCluster_RandomValueSpecifier `protobuf_oneof:\"random_value_specifier\"`\n\tunknownFields        protoimpl.UnknownFields\n\tsizeCache            protoimpl.SizeCache\n}\n\nfunc (x *WeightedCluster) Reset() {\n\t*x = WeightedCluster{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *WeightedCluster) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*WeightedCluster) ProtoMessage() {}\n\nfunc (x *WeightedCluster) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use WeightedCluster.ProtoReflect.Descriptor instead.\nfunc (*WeightedCluster) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *WeightedCluster) GetClusters() []*WeightedCluster_ClusterWeight {\n\tif x != nil {\n\t\treturn x.Clusters\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *WeightedCluster) GetTotalWeight() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.TotalWeight\n\t}\n\treturn nil\n}\n\nfunc (x *WeightedCluster) GetRuntimeKeyPrefix() string {\n\tif x != nil {\n\t\treturn x.RuntimeKeyPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *WeightedCluster) GetRandomValueSpecifier() isWeightedCluster_RandomValueSpecifier {\n\tif x != nil {\n\t\treturn x.RandomValueSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *WeightedCluster) GetHeaderName() string {\n\tif x != nil {\n\t\tif x, ok := x.RandomValueSpecifier.(*WeightedCluster_HeaderName); ok {\n\t\t\treturn x.HeaderName\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *WeightedCluster) GetUseHashPolicy() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\tif x, ok := x.RandomValueSpecifier.(*WeightedCluster_UseHashPolicy); ok {\n\t\t\treturn x.UseHashPolicy\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isWeightedCluster_RandomValueSpecifier interface {\n\tisWeightedCluster_RandomValueSpecifier()\n}\n\ntype WeightedCluster_HeaderName struct {\n\t// Specifies the header name that is used to look up the random value passed in the request header.\n\t// This is used to ensure consistent cluster picking across multiple proxy levels for weighted traffic.\n\t// If header is not present or invalid, Envoy will fall back to use the internally generated random value.\n\t// This header is expected to be single-valued header as we only want to have one selected value throughout\n\t// the process for the consistency. And the value is a unsigned number between 0 and UINT64_MAX.\n\tHeaderName string `protobuf:\"bytes,4,opt,name=header_name,json=headerName,proto3,oneof\"`\n}\n\ntype WeightedCluster_UseHashPolicy struct {\n\t// When set to true, the hash policies will be used to generate the random value for weighted cluster selection.\n\t// This could ensure consistent cluster picking across multiple proxy levels for weighted traffic.\n\tUseHashPolicy *wrapperspb.BoolValue `protobuf:\"bytes,5,opt,name=use_hash_policy,json=useHashPolicy,proto3,oneof\"`\n}\n\nfunc (*WeightedCluster_HeaderName) isWeightedCluster_RandomValueSpecifier() {}\n\nfunc (*WeightedCluster_UseHashPolicy) isWeightedCluster_RandomValueSpecifier() {}\n\n// Configuration for a cluster specifier plugin.\ntype ClusterSpecifierPlugin struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the plugin and its opaque configuration.\n\t//\n\t// [#extension-category: envoy.router.cluster_specifier_plugin]\n\tExtension *v31.TypedExtensionConfig `protobuf:\"bytes,1,opt,name=extension,proto3\" json:\"extension,omitempty\"`\n\t// If is_optional is not set or is set to false and the plugin defined by this message is not a\n\t// supported type, the containing resource is NACKed. If is_optional is set to true, the resource\n\t// would not be NACKed for this reason. In this case, routes referencing this plugin's name would\n\t// not be treated as an illegal configuration, but would result in a failure if the route is\n\t// selected.\n\tIsOptional    bool `protobuf:\"varint,2,opt,name=is_optional,json=isOptional,proto3\" json:\"is_optional,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ClusterSpecifierPlugin) Reset() {\n\t*x = ClusterSpecifierPlugin{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ClusterSpecifierPlugin) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ClusterSpecifierPlugin) ProtoMessage() {}\n\nfunc (x *ClusterSpecifierPlugin) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ClusterSpecifierPlugin.ProtoReflect.Descriptor instead.\nfunc (*ClusterSpecifierPlugin) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *ClusterSpecifierPlugin) GetExtension() *v31.TypedExtensionConfig {\n\tif x != nil {\n\t\treturn x.Extension\n\t}\n\treturn nil\n}\n\nfunc (x *ClusterSpecifierPlugin) GetIsOptional() bool {\n\tif x != nil {\n\t\treturn x.IsOptional\n\t}\n\treturn false\n}\n\n// [#next-free-field: 18]\ntype RouteMatch struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to PathSpecifier:\n\t//\n\t//\t*RouteMatch_Prefix\n\t//\t*RouteMatch_Path\n\t//\t*RouteMatch_SafeRegex\n\t//\t*RouteMatch_ConnectMatcher_\n\t//\t*RouteMatch_PathSeparatedPrefix\n\t//\t*RouteMatch_PathMatchPolicy\n\tPathSpecifier isRouteMatch_PathSpecifier `protobuf_oneof:\"path_specifier\"`\n\t// Indicates that prefix/path matching should be case-sensitive. The default\n\t// is true. Ignored for safe_regex matching.\n\tCaseSensitive *wrapperspb.BoolValue `protobuf:\"bytes,4,opt,name=case_sensitive,json=caseSensitive,proto3\" json:\"case_sensitive,omitempty\"`\n\t// Indicates that the route should additionally match on a runtime key. Every time the route\n\t// is considered for a match, it must also fall under the percentage of matches indicated by\n\t// this field. For some fraction N/D, a random number in the range [0,D) is selected. If the\n\t// number is <= the value of the numerator N, or if the key is not present, the default\n\t// value, the router continues to evaluate the remaining match criteria. A runtime_fraction\n\t// route configuration can be used to roll out route changes in a gradual manner without full\n\t// code/config deploys. Refer to the :ref:`traffic shifting\n\t// <config_http_conn_man_route_table_traffic_splitting_shift>` docs for additional documentation.\n\t//\n\t// .. note::\n\t//\n\t//\tParsing this field is implemented such that the runtime key's data may be represented\n\t//\tas a FractionalPercent proto represented as JSON/YAML and may also be represented as an\n\t//\tinteger with the assumption that the value is an integral percentage out of 100. For\n\t//\tinstance, a runtime key lookup returning the value \"42\" would parse as a FractionalPercent\n\t//\twhose numerator is 42 and denominator is HUNDRED. This preserves legacy semantics.\n\tRuntimeFraction *v31.RuntimeFractionalPercent `protobuf:\"bytes,9,opt,name=runtime_fraction,json=runtimeFraction,proto3\" json:\"runtime_fraction,omitempty\"`\n\t// Specifies a set of headers that the route should match on. The router will\n\t// check the request’s headers against all the specified headers in the route\n\t// config. A match will happen if all the headers in the route are present in\n\t// the request with the same values (or based on presence if the value field\n\t// is not in the config).\n\tHeaders []*HeaderMatcher `protobuf:\"bytes,6,rep,name=headers,proto3\" json:\"headers,omitempty\"`\n\t// Specifies a set of URL query parameters on which the route should\n\t// match. The router will check the query string from the “path“ header\n\t// against all the specified query parameters. If the number of specified\n\t// query parameters is nonzero, they all must match the “path“ header's\n\t// query string for a match to occur. In the event query parameters are\n\t// repeated, only the first value for each key will be considered.\n\t//\n\t// .. note::\n\t//\n\t//\tIf query parameters are used to pass request message fields when\n\t//\t`grpc_json_transcoder <https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_json_transcoder_filter>`_\n\t//\tis used, the transcoded message fields may be different. The query parameters are\n\t//\tURL-encoded, but the message fields are not. For example, if a query\n\t//\tparameter is \"foo%20bar\", the message field will be \"foo bar\".\n\tQueryParameters []*QueryParameterMatcher `protobuf:\"bytes,7,rep,name=query_parameters,json=queryParameters,proto3\" json:\"query_parameters,omitempty\"`\n\t// Specifies a set of cookies on which the route should match. The router parses the “Cookie“\n\t// header and evaluates the named cookie against each matcher. If the number of specified cookie\n\t// matchers is nonzero, they all must match for the route to be selected.\n\tCookies []*CookieMatcher `protobuf:\"bytes,17,rep,name=cookies,proto3\" json:\"cookies,omitempty\"`\n\t// If specified, only gRPC requests will be matched. The router will check\n\t// that the “Content-Type“ header has “application/grpc“ or one of the various\n\t// “application/grpc+“ values.\n\tGrpc *RouteMatch_GrpcRouteMatchOptions `protobuf:\"bytes,8,opt,name=grpc,proto3\" json:\"grpc,omitempty\"`\n\t// If specified, the client tls context will be matched against the defined\n\t// match options.\n\t//\n\t// [#next-major-version: unify with RBAC]\n\tTlsContext *RouteMatch_TlsContextMatchOptions `protobuf:\"bytes,11,opt,name=tls_context,json=tlsContext,proto3\" json:\"tls_context,omitempty\"`\n\t// Specifies a set of dynamic metadata matchers on which the route should match.\n\t// The router will check the dynamic metadata against all the specified dynamic metadata matchers.\n\t// If the number of specified dynamic metadata matchers is nonzero, they all must match the\n\t// dynamic metadata for a match to occur.\n\tDynamicMetadata []*v32.MetadataMatcher `protobuf:\"bytes,13,rep,name=dynamic_metadata,json=dynamicMetadata,proto3\" json:\"dynamic_metadata,omitempty\"`\n\t// Specifies a set of filter state matchers on which the route should match.\n\t// The router will check the filter state against all the specified filter state matchers.\n\t// If the number of specified filter state matchers is nonzero, they all must match the\n\t// filter state for a match to occur.\n\tFilterState   []*v32.FilterStateMatcher `protobuf:\"bytes,16,rep,name=filter_state,json=filterState,proto3\" json:\"filter_state,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteMatch) Reset() {\n\t*x = RouteMatch{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteMatch) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteMatch) ProtoMessage() {}\n\nfunc (x *RouteMatch) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteMatch.ProtoReflect.Descriptor instead.\nfunc (*RouteMatch) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *RouteMatch) GetPathSpecifier() isRouteMatch_PathSpecifier {\n\tif x != nil {\n\t\treturn x.PathSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *RouteMatch) GetPrefix() string {\n\tif x != nil {\n\t\tif x, ok := x.PathSpecifier.(*RouteMatch_Prefix); ok {\n\t\t\treturn x.Prefix\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteMatch) GetPath() string {\n\tif x != nil {\n\t\tif x, ok := x.PathSpecifier.(*RouteMatch_Path); ok {\n\t\t\treturn x.Path\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteMatch) GetSafeRegex() *v32.RegexMatcher {\n\tif x != nil {\n\t\tif x, ok := x.PathSpecifier.(*RouteMatch_SafeRegex); ok {\n\t\t\treturn x.SafeRegex\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RouteMatch) GetConnectMatcher() *RouteMatch_ConnectMatcher {\n\tif x != nil {\n\t\tif x, ok := x.PathSpecifier.(*RouteMatch_ConnectMatcher_); ok {\n\t\t\treturn x.ConnectMatcher\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RouteMatch) GetPathSeparatedPrefix() string {\n\tif x != nil {\n\t\tif x, ok := x.PathSpecifier.(*RouteMatch_PathSeparatedPrefix); ok {\n\t\t\treturn x.PathSeparatedPrefix\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteMatch) GetPathMatchPolicy() *v31.TypedExtensionConfig {\n\tif x != nil {\n\t\tif x, ok := x.PathSpecifier.(*RouteMatch_PathMatchPolicy); ok {\n\t\t\treturn x.PathMatchPolicy\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RouteMatch) GetCaseSensitive() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.CaseSensitive\n\t}\n\treturn nil\n}\n\nfunc (x *RouteMatch) GetRuntimeFraction() *v31.RuntimeFractionalPercent {\n\tif x != nil {\n\t\treturn x.RuntimeFraction\n\t}\n\treturn nil\n}\n\nfunc (x *RouteMatch) GetHeaders() []*HeaderMatcher {\n\tif x != nil {\n\t\treturn x.Headers\n\t}\n\treturn nil\n}\n\nfunc (x *RouteMatch) GetQueryParameters() []*QueryParameterMatcher {\n\tif x != nil {\n\t\treturn x.QueryParameters\n\t}\n\treturn nil\n}\n\nfunc (x *RouteMatch) GetCookies() []*CookieMatcher {\n\tif x != nil {\n\t\treturn x.Cookies\n\t}\n\treturn nil\n}\n\nfunc (x *RouteMatch) GetGrpc() *RouteMatch_GrpcRouteMatchOptions {\n\tif x != nil {\n\t\treturn x.Grpc\n\t}\n\treturn nil\n}\n\nfunc (x *RouteMatch) GetTlsContext() *RouteMatch_TlsContextMatchOptions {\n\tif x != nil {\n\t\treturn x.TlsContext\n\t}\n\treturn nil\n}\n\nfunc (x *RouteMatch) GetDynamicMetadata() []*v32.MetadataMatcher {\n\tif x != nil {\n\t\treturn x.DynamicMetadata\n\t}\n\treturn nil\n}\n\nfunc (x *RouteMatch) GetFilterState() []*v32.FilterStateMatcher {\n\tif x != nil {\n\t\treturn x.FilterState\n\t}\n\treturn nil\n}\n\ntype isRouteMatch_PathSpecifier interface {\n\tisRouteMatch_PathSpecifier()\n}\n\ntype RouteMatch_Prefix struct {\n\t// If specified, the route is a prefix rule meaning that the prefix must\n\t// match the beginning of the “:path“ header.\n\tPrefix string `protobuf:\"bytes,1,opt,name=prefix,proto3,oneof\"`\n}\n\ntype RouteMatch_Path struct {\n\t// If specified, the route is an exact path rule meaning that the path must\n\t// exactly match the “:path“ header once the query string is removed.\n\tPath string `protobuf:\"bytes,2,opt,name=path,proto3,oneof\"`\n}\n\ntype RouteMatch_SafeRegex struct {\n\t// If specified, the route is a regular expression rule meaning that the\n\t// regex must match the “:path“ header once the query string is removed. The entire path\n\t// (without the query string) must match the regex. The rule will not match if only a\n\t// subsequence of the “:path“ header matches the regex.\n\t//\n\t// [#next-major-version: In the v3 API we should redo how path specification works such\n\t// that we utilize StringMatcher, and additionally have consistent options around whether we\n\t// strip query strings, do a case-sensitive match, etc. In the interim it will be too disruptive\n\t// to deprecate the existing options. We should even consider whether we want to do away with\n\t// path_specifier entirely and just rely on a set of header matchers which can already match\n\t// on :path, etc. The issue with that is it is unclear how to generically deal with query string\n\t// stripping. This needs more thought.]\n\tSafeRegex *v32.RegexMatcher `protobuf:\"bytes,10,opt,name=safe_regex,json=safeRegex,proto3,oneof\"`\n}\n\ntype RouteMatch_ConnectMatcher_ struct {\n\t// If this is used as the matcher, the matcher will only match CONNECT or CONNECT-UDP requests.\n\t// Note that this will not match other Extended CONNECT requests (WebSocket and the like) as\n\t// they are normalized in Envoy as HTTP/1.1 style upgrades.\n\t// This is the only way to match CONNECT requests for HTTP/1.1. For HTTP/2 and HTTP/3,\n\t// where Extended CONNECT requests may have a path, the path matchers will work if\n\t// there is a path present.\n\t// Note that CONNECT support is currently considered alpha in Envoy.\n\t// [#comment: TODO(htuch): Replace the above comment with an alpha tag.]\n\tConnectMatcher *RouteMatch_ConnectMatcher `protobuf:\"bytes,12,opt,name=connect_matcher,json=connectMatcher,proto3,oneof\"`\n}\n\ntype RouteMatch_PathSeparatedPrefix struct {\n\t// If specified, the route is a path-separated prefix rule meaning that the\n\t// “:path“ header (without the query string) must either exactly match the\n\t// “path_separated_prefix“ or have it as a prefix, followed by “/“\n\t//\n\t// For example, “/api/dev“ would match\n\t// “/api/dev“, “/api/dev/“, “/api/dev/v1“, and “/api/dev?param=true“\n\t// but would not match “/api/developer“\n\t//\n\t// Expect the value to not contain “?“ or “#“ and not to end in “/“\n\tPathSeparatedPrefix string `protobuf:\"bytes,14,opt,name=path_separated_prefix,json=pathSeparatedPrefix,proto3,oneof\"`\n}\n\ntype RouteMatch_PathMatchPolicy struct {\n\t// [#extension-category: envoy.path.match]\n\tPathMatchPolicy *v31.TypedExtensionConfig `protobuf:\"bytes,15,opt,name=path_match_policy,json=pathMatchPolicy,proto3,oneof\"`\n}\n\nfunc (*RouteMatch_Prefix) isRouteMatch_PathSpecifier() {}\n\nfunc (*RouteMatch_Path) isRouteMatch_PathSpecifier() {}\n\nfunc (*RouteMatch_SafeRegex) isRouteMatch_PathSpecifier() {}\n\nfunc (*RouteMatch_ConnectMatcher_) isRouteMatch_PathSpecifier() {}\n\nfunc (*RouteMatch_PathSeparatedPrefix) isRouteMatch_PathSpecifier() {}\n\nfunc (*RouteMatch_PathMatchPolicy) isRouteMatch_PathSpecifier() {}\n\n// Cors policy configuration.\n//\n// .. attention::\n//\n//\tThis message has been deprecated. Please use\n//\t:ref:`CorsPolicy in filter extension <envoy_v3_api_msg_extensions.filters.http.cors.v3.CorsPolicy>`\n//\tas as alternative.\n//\n// [#next-free-field: 14]\ntype CorsPolicy struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies string patterns that match allowed origins. An origin is allowed if any of the\n\t// string matchers match.\n\tAllowOriginStringMatch []*v32.StringMatcher `protobuf:\"bytes,11,rep,name=allow_origin_string_match,json=allowOriginStringMatch,proto3\" json:\"allow_origin_string_match,omitempty\"`\n\t// Specifies the content for the “access-control-allow-methods“ header.\n\tAllowMethods string `protobuf:\"bytes,2,opt,name=allow_methods,json=allowMethods,proto3\" json:\"allow_methods,omitempty\"`\n\t// Specifies the content for the “access-control-allow-headers“ header.\n\tAllowHeaders string `protobuf:\"bytes,3,opt,name=allow_headers,json=allowHeaders,proto3\" json:\"allow_headers,omitempty\"`\n\t// Specifies the content for the “access-control-expose-headers“ header.\n\tExposeHeaders string `protobuf:\"bytes,4,opt,name=expose_headers,json=exposeHeaders,proto3\" json:\"expose_headers,omitempty\"`\n\t// Specifies the content for the “access-control-max-age“ header.\n\tMaxAge string `protobuf:\"bytes,5,opt,name=max_age,json=maxAge,proto3\" json:\"max_age,omitempty\"`\n\t// Specifies whether the resource allows credentials.\n\tAllowCredentials *wrapperspb.BoolValue `protobuf:\"bytes,6,opt,name=allow_credentials,json=allowCredentials,proto3\" json:\"allow_credentials,omitempty\"`\n\t// Types that are valid to be assigned to EnabledSpecifier:\n\t//\n\t//\t*CorsPolicy_FilterEnabled\n\tEnabledSpecifier isCorsPolicy_EnabledSpecifier `protobuf_oneof:\"enabled_specifier\"`\n\t// Specifies the % of requests for which the CORS policies will be evaluated and tracked, but not\n\t// enforced.\n\t//\n\t// This field is intended to be used when “filter_enabled“ and “enabled“ are off. One of those\n\t// fields have to explicitly disable the filter in order for this setting to take effect.\n\t//\n\t// If :ref:`runtime_key <envoy_v3_api_field_config.core.v3.RuntimeFractionalPercent.runtime_key>` is specified,\n\t// Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate\n\t// and track the request's “Origin“ to determine if it's valid but will not enforce any policies.\n\tShadowEnabled *v31.RuntimeFractionalPercent `protobuf:\"bytes,10,opt,name=shadow_enabled,json=shadowEnabled,proto3\" json:\"shadow_enabled,omitempty\"`\n\t// Specify whether allow requests whose target server's IP address is more private than that from\n\t// which the request initiator was fetched.\n\t//\n\t// More details refer to https://developer.chrome.com/blog/private-network-access-preflight.\n\tAllowPrivateNetworkAccess *wrapperspb.BoolValue `protobuf:\"bytes,12,opt,name=allow_private_network_access,json=allowPrivateNetworkAccess,proto3\" json:\"allow_private_network_access,omitempty\"`\n\t// Specifies if preflight requests not matching the configured allowed origin should be forwarded\n\t// to the upstream. Default is “true“.\n\tForwardNotMatchingPreflights *wrapperspb.BoolValue `protobuf:\"bytes,13,opt,name=forward_not_matching_preflights,json=forwardNotMatchingPreflights,proto3\" json:\"forward_not_matching_preflights,omitempty\"`\n\tunknownFields                protoimpl.UnknownFields\n\tsizeCache                    protoimpl.SizeCache\n}\n\nfunc (x *CorsPolicy) Reset() {\n\t*x = CorsPolicy{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CorsPolicy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CorsPolicy) ProtoMessage() {}\n\nfunc (x *CorsPolicy) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CorsPolicy.ProtoReflect.Descriptor instead.\nfunc (*CorsPolicy) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *CorsPolicy) GetAllowOriginStringMatch() []*v32.StringMatcher {\n\tif x != nil {\n\t\treturn x.AllowOriginStringMatch\n\t}\n\treturn nil\n}\n\nfunc (x *CorsPolicy) GetAllowMethods() string {\n\tif x != nil {\n\t\treturn x.AllowMethods\n\t}\n\treturn \"\"\n}\n\nfunc (x *CorsPolicy) GetAllowHeaders() string {\n\tif x != nil {\n\t\treturn x.AllowHeaders\n\t}\n\treturn \"\"\n}\n\nfunc (x *CorsPolicy) GetExposeHeaders() string {\n\tif x != nil {\n\t\treturn x.ExposeHeaders\n\t}\n\treturn \"\"\n}\n\nfunc (x *CorsPolicy) GetMaxAge() string {\n\tif x != nil {\n\t\treturn x.MaxAge\n\t}\n\treturn \"\"\n}\n\nfunc (x *CorsPolicy) GetAllowCredentials() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.AllowCredentials\n\t}\n\treturn nil\n}\n\nfunc (x *CorsPolicy) GetEnabledSpecifier() isCorsPolicy_EnabledSpecifier {\n\tif x != nil {\n\t\treturn x.EnabledSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *CorsPolicy) GetFilterEnabled() *v31.RuntimeFractionalPercent {\n\tif x != nil {\n\t\tif x, ok := x.EnabledSpecifier.(*CorsPolicy_FilterEnabled); ok {\n\t\t\treturn x.FilterEnabled\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *CorsPolicy) GetShadowEnabled() *v31.RuntimeFractionalPercent {\n\tif x != nil {\n\t\treturn x.ShadowEnabled\n\t}\n\treturn nil\n}\n\nfunc (x *CorsPolicy) GetAllowPrivateNetworkAccess() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.AllowPrivateNetworkAccess\n\t}\n\treturn nil\n}\n\nfunc (x *CorsPolicy) GetForwardNotMatchingPreflights() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.ForwardNotMatchingPreflights\n\t}\n\treturn nil\n}\n\ntype isCorsPolicy_EnabledSpecifier interface {\n\tisCorsPolicy_EnabledSpecifier()\n}\n\ntype CorsPolicy_FilterEnabled struct {\n\t// Specifies the % of requests for which the CORS filter is enabled.\n\t//\n\t// If neither “enabled“, “filter_enabled“, nor “shadow_enabled“ are specified, the CORS\n\t// filter will be enabled for 100% of the requests.\n\t//\n\t// If :ref:`runtime_key <envoy_v3_api_field_config.core.v3.RuntimeFractionalPercent.runtime_key>` is\n\t// specified, Envoy will lookup the runtime key to get the percentage of requests to filter.\n\tFilterEnabled *v31.RuntimeFractionalPercent `protobuf:\"bytes,9,opt,name=filter_enabled,json=filterEnabled,proto3,oneof\"`\n}\n\nfunc (*CorsPolicy_FilterEnabled) isCorsPolicy_EnabledSpecifier() {}\n\n// [#next-free-field: 46]\ntype RouteAction struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to ClusterSpecifier:\n\t//\n\t//\t*RouteAction_Cluster\n\t//\t*RouteAction_ClusterHeader\n\t//\t*RouteAction_WeightedClusters\n\t//\t*RouteAction_ClusterSpecifierPlugin\n\t//\t*RouteAction_InlineClusterSpecifierPlugin\n\tClusterSpecifier isRouteAction_ClusterSpecifier `protobuf_oneof:\"cluster_specifier\"`\n\t// The HTTP status code to use when configured cluster is not found.\n\t// The default response code is 503 Service Unavailable.\n\tClusterNotFoundResponseCode RouteAction_ClusterNotFoundResponseCode `protobuf:\"varint,20,opt,name=cluster_not_found_response_code,json=clusterNotFoundResponseCode,proto3,enum=envoy.config.route.v3.RouteAction_ClusterNotFoundResponseCode\" json:\"cluster_not_found_response_code,omitempty\"`\n\t// Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints\n\t// in the upstream cluster with metadata matching what's set in this field will be considered\n\t// for load balancing. If using :ref:`weighted_clusters\n\t// <envoy_v3_api_field_config.route.v3.RouteAction.weighted_clusters>`, metadata will be merged, with values\n\t// provided there taking precedence. The filter name should be specified as “envoy.lb“.\n\tMetadataMatch *v31.Metadata `protobuf:\"bytes,4,opt,name=metadata_match,json=metadataMatch,proto3\" json:\"metadata_match,omitempty\"`\n\t// Indicates that during forwarding, the matched prefix (or path) should be\n\t// swapped with this value. This option allows application URLs to be rooted\n\t// at a different path from those exposed at the reverse proxy layer. The router filter will\n\t// place the original path before rewrite into the :ref:`x-envoy-original-path\n\t// <config_http_filters_router_x-envoy-original-path>` header.\n\t//\n\t// Only one of :ref:`regex_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.regex_rewrite>`,\n\t// :ref:`path_rewrite_policy <envoy_v3_api_field_config.route.v3.RouteAction.path_rewrite_policy>`,\n\t// :ref:`path_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.path_rewrite>`,\n\t// or :ref:`prefix_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.prefix_rewrite>`\n\t// may be specified.\n\t//\n\t// .. attention::\n\t//\n\t//\tPay careful attention to the use of trailing slashes in the\n\t//\t:ref:`route's match <envoy_v3_api_field_config.route.v3.Route.match>` prefix value.\n\t//\tStripping a prefix from a path requires multiple Routes to handle all cases. For example,\n\t//\trewriting ``/prefix`` to ``/`` and ``/prefix/etc`` to ``/etc`` cannot be done in a single\n\t//\t:ref:`Route <envoy_v3_api_msg_config.route.v3.Route>`, as shown by the below config entries:\n\t//\n\t//\t.. code-block:: yaml\n\t//\n\t//\t  - match:\n\t//\t      prefix: \"/prefix/\"\n\t//\t    route:\n\t//\t      prefix_rewrite: \"/\"\n\t//\t  - match:\n\t//\t      prefix: \"/prefix\"\n\t//\t    route:\n\t//\t      prefix_rewrite: \"/\"\n\t//\n\t//\tHaving above entries in the config, requests to ``/prefix`` will be stripped to ``/``, while\n\t//\trequests to ``/prefix/etc`` will be stripped to ``/etc``.\n\tPrefixRewrite string `protobuf:\"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3\" json:\"prefix_rewrite,omitempty\"`\n\t// Indicates that during forwarding, portions of the path that match the\n\t// pattern should be rewritten, even allowing the substitution of capture\n\t// groups from the pattern into the new path as specified by the rewrite\n\t// substitution string. This is useful to allow application paths to be\n\t// rewritten in a way that is aware of segments with variable content like\n\t// identifiers. The router filter will place the original path as it was\n\t// before the rewrite into the :ref:`x-envoy-original-path\n\t// <config_http_filters_router_x-envoy-original-path>` header.\n\t//\n\t// Only one of :ref:`regex_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.regex_rewrite>`,\n\t// :ref:`path_rewrite_policy <envoy_v3_api_field_config.route.v3.RouteAction.path_rewrite_policy>`,\n\t// :ref:`path_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.path_rewrite>`,\n\t// or :ref:`prefix_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.prefix_rewrite>`\n\t// may be specified.\n\t//\n\t// Examples using Google's `RE2 <https://github.com/google/re2>`_ engine:\n\t//\n\t//   - The path pattern “^/service/([^/]+)(/.*)$“ paired with a substitution\n\t//     string of “\\2/instance/\\1“ would transform “/service/foo/v1/api“\n\t//     into “/v1/api/instance/foo“.\n\t//\n\t//   - The pattern “one“ paired with a substitution string of “two“ would\n\t//     transform “/xxx/one/yyy/one/zzz“ into “/xxx/two/yyy/two/zzz“.\n\t//\n\t//   - The pattern “^(.*?)one(.*)$“ paired with a substitution string of\n\t//     “\\1two\\2“ would replace only the first occurrence of “one“,\n\t//     transforming path “/xxx/one/yyy/one/zzz“ into “/xxx/two/yyy/one/zzz“.\n\t//\n\t//   - The pattern “(?i)/xxx/“ paired with a substitution string of “/yyy/“\n\t//     would do a case-insensitive match and transform path “/aaa/XxX/bbb“ to\n\t//     “/aaa/yyy/bbb“.\n\tRegexRewrite *v32.RegexMatchAndSubstitute `protobuf:\"bytes,32,opt,name=regex_rewrite,json=regexRewrite,proto3\" json:\"regex_rewrite,omitempty\"`\n\t// [#extension-category: envoy.path.rewrite]\n\tPathRewritePolicy *v31.TypedExtensionConfig `protobuf:\"bytes,41,opt,name=path_rewrite_policy,json=pathRewritePolicy,proto3\" json:\"path_rewrite_policy,omitempty\"`\n\t// Rewrites the whole path (without query parameters) with the given path value.\n\t// The router filter will\n\t// place the original path before rewrite into the :ref:`x-envoy-original-path\n\t// <config_http_filters_router_x-envoy-original-path>` header.\n\t//\n\t// Only one of :ref:`regex_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.regex_rewrite>`,\n\t// :ref:`path_rewrite_policy <envoy_v3_api_field_config.route.v3.RouteAction.path_rewrite_policy>`,\n\t// :ref:`path_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.path_rewrite>`,\n\t// or :ref:`prefix_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.prefix_rewrite>`\n\t// may be specified.\n\t//\n\t// The :ref:`substitution format specifier <config_access_log_format>` could be applied here.\n\t// For example, with the following config:\n\t//\n\t//\t.. code-block:: yaml\n\t//\n\t//\t  path_rewrite: \"/new_path_prefix%REQ(custom-path-header-name)%\"\n\t//\n\t// Would rewrite the path to “/new_path_prefix/some_value“ given the header\n\t// “custom-path-header-name: some_value“. If the header is not present, the path will be\n\t// rewritten to “/new_path_prefix“.\n\t//\n\t// If the final output of the path rewrite is empty, then the update will be ignored and the\n\t// original path will be preserved.\n\tPathRewrite string `protobuf:\"bytes,45,opt,name=path_rewrite,json=pathRewrite,proto3\" json:\"path_rewrite,omitempty\"`\n\t// If one of the host rewrite specifiers is set and the\n\t// :ref:`suppress_envoy_headers\n\t// <envoy_v3_api_field_extensions.filters.http.router.v3.Router.suppress_envoy_headers>` flag is not\n\t// set to true, the router filter will place the original host header value before\n\t// rewriting into the :ref:`x-envoy-original-host\n\t// <config_http_filters_router_x-envoy-original-host>` header.\n\t//\n\t// And if the\n\t// :ref:`append_x_forwarded_host <envoy_v3_api_field_config.route.v3.RouteAction.append_x_forwarded_host>`\n\t// is set to true, the original host value will also be appended to the\n\t// :ref:`config_http_conn_man_headers_x-forwarded-host` header.\n\t//\n\t// Types that are valid to be assigned to HostRewriteSpecifier:\n\t//\n\t//\t*RouteAction_HostRewriteLiteral\n\t//\t*RouteAction_AutoHostRewrite\n\t//\t*RouteAction_HostRewriteHeader\n\t//\t*RouteAction_HostRewritePathRegex\n\t//\t*RouteAction_HostRewrite\n\tHostRewriteSpecifier isRouteAction_HostRewriteSpecifier `protobuf_oneof:\"host_rewrite_specifier\"`\n\t// If set, then a host rewrite action (one of\n\t// :ref:`host_rewrite_literal <envoy_v3_api_field_config.route.v3.RouteAction.host_rewrite_literal>`,\n\t// :ref:`auto_host_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.auto_host_rewrite>`,\n\t// :ref:`host_rewrite_header <envoy_v3_api_field_config.route.v3.RouteAction.host_rewrite_header>`, or\n\t// :ref:`host_rewrite_path_regex <envoy_v3_api_field_config.route.v3.RouteAction.host_rewrite_path_regex>`)\n\t// causes the original value of the host header, if any, to be appended to the\n\t// :ref:`config_http_conn_man_headers_x-forwarded-host` HTTP header if it is different to the last value appended.\n\tAppendXForwardedHost bool `protobuf:\"varint,38,opt,name=append_x_forwarded_host,json=appendXForwardedHost,proto3\" json:\"append_x_forwarded_host,omitempty\"`\n\t// Specifies the upstream timeout for the route. If not specified, the default is 15s. This\n\t// spans between the point at which the entire downstream request (i.e. end-of-stream) has been\n\t// processed and when the upstream response has been completely processed. A value of 0 will\n\t// disable the route's timeout.\n\t//\n\t// .. note::\n\t//\n\t//\tThis timeout includes all retries. See also\n\t//\t:ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`,\n\t//\t:ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the\n\t//\t:ref:`retry overview <arch_overview_http_routing_retry>`.\n\tTimeout *durationpb.Duration `protobuf:\"bytes,8,opt,name=timeout,proto3\" json:\"timeout,omitempty\"`\n\t// Specifies the idle timeout for the route. If not specified, there is no per-route idle timeout,\n\t// although the connection manager wide :ref:`stream_idle_timeout\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_idle_timeout>`\n\t// will still apply. A value of 0 will completely disable the route's idle timeout, even if a\n\t// connection manager stream idle timeout is configured.\n\t//\n\t// The idle timeout is distinct to :ref:`timeout\n\t// <envoy_v3_api_field_config.route.v3.RouteAction.timeout>`, which provides an upper bound\n\t// on the upstream response time; :ref:`idle_timeout\n\t// <envoy_v3_api_field_config.route.v3.RouteAction.idle_timeout>` instead bounds the amount\n\t// of time the request's stream may be idle.\n\t//\n\t// After header decoding, the idle timeout will apply on downstream and\n\t// upstream request events. Each time an encode/decode event for headers or\n\t// data is processed for the stream, the timer will be reset. If the timeout\n\t// fires, the stream is terminated with a 408 Request Timeout error code if no\n\t// upstream response header has been received, otherwise a stream reset\n\t// occurs.\n\t//\n\t// If the :ref:`overload action <config_overload_manager_overload_actions>` \"envoy.overload_actions.reduce_timeouts\"\n\t// is configured, this timeout is scaled according to the value for\n\t// :ref:`HTTP_DOWNSTREAM_STREAM_IDLE <envoy_v3_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_STREAM_IDLE>`.\n\t//\n\t// This timeout may also be used in place of “flush_timeout“ in very specific cases. See the\n\t// documentation for “flush_timeout“ for more details.\n\tIdleTimeout *durationpb.Duration `protobuf:\"bytes,24,opt,name=idle_timeout,json=idleTimeout,proto3\" json:\"idle_timeout,omitempty\"`\n\t// Specifies the codec stream flush timeout for the route.\n\t//\n\t// If not specified, the first preference is the global :ref:`stream_flush_timeout\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_flush_timeout>`,\n\t// but only if explicitly configured.\n\t//\n\t// If neither the explicit HCM-wide flush timeout nor this route-specific flush timeout is configured,\n\t// the route's stream idle timeout is reused for this timeout. This is for\n\t// backwards compatibility since both behaviors were historically controlled by the one timeout.\n\t//\n\t// If the route also does not have an idle timeout configured, the global :ref:`stream_idle_timeout\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_idle_timeout>`. used, again\n\t// for backwards compatibility. That timeout defaults to 5 minutes.\n\t//\n\t// A value of 0 via any of the above paths will completely disable the timeout for a given route.\n\tFlushTimeout *durationpb.Duration `protobuf:\"bytes,42,opt,name=flush_timeout,json=flushTimeout,proto3\" json:\"flush_timeout,omitempty\"`\n\t// Specifies how to send request over TLS early data.\n\t// If absent, allows `safe HTTP requests <https://www.rfc-editor.org/rfc/rfc7231#section-4.2.1>`_ to be sent on early data.\n\t// [#extension-category: envoy.route.early_data_policy]\n\tEarlyDataPolicy *v31.TypedExtensionConfig `protobuf:\"bytes,40,opt,name=early_data_policy,json=earlyDataPolicy,proto3\" json:\"early_data_policy,omitempty\"`\n\t// Indicates that the route has a retry policy. Note that if this is set,\n\t// it'll take precedence over the virtual host level retry policy entirely\n\t// (e.g., policies are not merged, the most internal one becomes the enforced policy).\n\tRetryPolicy *RetryPolicy `protobuf:\"bytes,9,opt,name=retry_policy,json=retryPolicy,proto3\" json:\"retry_policy,omitempty\"`\n\t// [#not-implemented-hide:]\n\t// Specifies the configuration for retry policy extension. Note that if this is set, it'll take\n\t// precedence over the virtual host level retry policy entirely (e.g., policies are not merged,\n\t// the most internal one becomes the enforced policy). :ref:`Retry policy <envoy_v3_api_field_config.route.v3.VirtualHost.retry_policy>`\n\t// should not be set if this field is used.\n\tRetryPolicyTypedConfig *anypb.Any `protobuf:\"bytes,33,opt,name=retry_policy_typed_config,json=retryPolicyTypedConfig,proto3\" json:\"retry_policy_typed_config,omitempty\"`\n\t// Specify a set of route request mirroring policies.\n\t// It takes precedence over the virtual host and route config mirror policy entirely.\n\t// That is, policies are not merged, the most specific non-empty one becomes the mirror policies.\n\tRequestMirrorPolicies []*RouteAction_RequestMirrorPolicy `protobuf:\"bytes,30,rep,name=request_mirror_policies,json=requestMirrorPolicies,proto3\" json:\"request_mirror_policies,omitempty\"`\n\t// Optionally specifies the :ref:`routing priority <arch_overview_http_routing_priority>`.\n\tPriority v31.RoutingPriority `protobuf:\"varint,11,opt,name=priority,proto3,enum=envoy.config.core.v3.RoutingPriority\" json:\"priority,omitempty\"`\n\t// Specifies a set of rate limit configurations that could be applied to the\n\t// route.\n\tRateLimits []*RateLimit `protobuf:\"bytes,13,rep,name=rate_limits,json=rateLimits,proto3\" json:\"rate_limits,omitempty\"`\n\t// Specifies if the rate limit filter should include the virtual host rate\n\t// limits. By default, if the route configured rate limits, the virtual host\n\t// :ref:`rate_limits <envoy_v3_api_field_config.route.v3.VirtualHost.rate_limits>` are not applied to the\n\t// request.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis field is deprecated. Please use :ref:`vh_rate_limits <envoy_v3_api_field_extensions.filters.http.ratelimit.v3.RateLimitPerRoute.vh_rate_limits>`\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tIncludeVhRateLimits *wrapperspb.BoolValue `protobuf:\"bytes,14,opt,name=include_vh_rate_limits,json=includeVhRateLimits,proto3\" json:\"include_vh_rate_limits,omitempty\"`\n\t// Specifies a list of hash policies to use for ring hash load balancing. Each\n\t// hash policy is evaluated individually and the combined result is used to\n\t// route the request. The method of combination is deterministic such that\n\t// identical lists of hash policies will produce the same hash. Since a hash\n\t// policy examines specific parts of a request, it can fail to produce a hash\n\t// (i.e. if the hashed header is not present). If (and only if) all configured\n\t// hash policies fail to generate a hash, no hash will be produced for\n\t// the route. In this case, the behavior is the same as if no hash policies\n\t// were specified (i.e. the ring hash load balancer will choose a random\n\t// backend). If a hash policy has the \"terminal\" attribute set to true, and\n\t// there is already a hash generated, the hash is returned immediately,\n\t// ignoring the rest of the hash policy list.\n\tHashPolicy []*RouteAction_HashPolicy `protobuf:\"bytes,15,rep,name=hash_policy,json=hashPolicy,proto3\" json:\"hash_policy,omitempty\"`\n\t// Indicates that the route has a CORS policy. This field is ignored if related cors policy is\n\t// found in the :ref:`Route.typed_per_filter_config<envoy_v3_api_field_config.route.v3.Route.typed_per_filter_config>` or\n\t// :ref:`WeightedCluster.ClusterWeight.typed_per_filter_config<envoy_v3_api_field_config.route.v3.WeightedCluster.ClusterWeight.typed_per_filter_config>`.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis option has been deprecated. Please use\n\t//\t:ref:`Route.typed_per_filter_config<envoy_v3_api_field_config.route.v3.Route.typed_per_filter_config>` or\n\t//\t:ref:`WeightedCluster.ClusterWeight.typed_per_filter_config<envoy_v3_api_field_config.route.v3.WeightedCluster.ClusterWeight.typed_per_filter_config>`\n\t//\tto configure the CORS HTTP filter.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tCors *CorsPolicy `protobuf:\"bytes,17,opt,name=cors,proto3\" json:\"cors,omitempty\"`\n\t// Deprecated by :ref:`grpc_timeout_header_max <envoy_v3_api_field_config.route.v3.RouteAction.MaxStreamDuration.grpc_timeout_header_max>`\n\t// If present, and the request is a gRPC request, use the\n\t// `grpc-timeout header <https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md>`_,\n\t// or its default value (infinity) instead of\n\t// :ref:`timeout <envoy_v3_api_field_config.route.v3.RouteAction.timeout>`, but limit the applied timeout\n\t// to the maximum value specified here. If configured as 0, the maximum allowed timeout for\n\t// gRPC requests is infinity. If not configured at all, the “grpc-timeout“ header is not used\n\t// and gRPC requests time out like any other requests using\n\t// :ref:`timeout <envoy_v3_api_field_config.route.v3.RouteAction.timeout>` or its default.\n\t// This can be used to prevent unexpected upstream request timeouts due to potentially long\n\t// time gaps between gRPC request and response in gRPC streaming mode.\n\t//\n\t// .. note::\n\t//\n\t//\tIf a timeout is specified using :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, it takes\n\t//\tprecedence over `grpc-timeout header <https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md>`_, when\n\t//\tboth are present. See also\n\t//\t:ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`,\n\t//\t:ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the\n\t//\t:ref:`retry overview <arch_overview_http_routing_retry>`.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tMaxGrpcTimeout *durationpb.Duration `protobuf:\"bytes,23,opt,name=max_grpc_timeout,json=maxGrpcTimeout,proto3\" json:\"max_grpc_timeout,omitempty\"`\n\t// Deprecated by :ref:`grpc_timeout_header_offset <envoy_v3_api_field_config.route.v3.RouteAction.MaxStreamDuration.grpc_timeout_header_offset>`.\n\t// If present, Envoy will adjust the timeout provided by the “grpc-timeout“ header by subtracting\n\t// the provided duration from the header. This is useful in allowing Envoy to set its global\n\t// timeout to be less than that of the deadline imposed by the calling client, which makes it more\n\t// likely that Envoy will handle the timeout instead of having the call canceled by the client.\n\t// The offset will only be applied if the provided grpc_timeout is greater than the offset. This\n\t// ensures that the offset will only ever decrease the timeout and never set it to 0 (meaning\n\t// infinity).\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tGrpcTimeoutOffset *durationpb.Duration         `protobuf:\"bytes,28,opt,name=grpc_timeout_offset,json=grpcTimeoutOffset,proto3\" json:\"grpc_timeout_offset,omitempty\"`\n\tUpgradeConfigs    []*RouteAction_UpgradeConfig `protobuf:\"bytes,25,rep,name=upgrade_configs,json=upgradeConfigs,proto3\" json:\"upgrade_configs,omitempty\"`\n\t// If present, Envoy will try to follow an upstream redirect response instead of proxying the\n\t// response back to the downstream. An upstream redirect response is defined\n\t// by :ref:`redirect_response_codes\n\t// <envoy_v3_api_field_config.route.v3.InternalRedirectPolicy.redirect_response_codes>`.\n\tInternalRedirectPolicy *InternalRedirectPolicy `protobuf:\"bytes,34,opt,name=internal_redirect_policy,json=internalRedirectPolicy,proto3\" json:\"internal_redirect_policy,omitempty\"`\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tInternalRedirectAction RouteAction_InternalRedirectAction `protobuf:\"varint,26,opt,name=internal_redirect_action,json=internalRedirectAction,proto3,enum=envoy.config.route.v3.RouteAction_InternalRedirectAction\" json:\"internal_redirect_action,omitempty\"`\n\t// An internal redirect is handled, iff the number of previous internal redirects that a\n\t// downstream request has encountered is lower than this value, and\n\t// :ref:`internal_redirect_action <envoy_v3_api_field_config.route.v3.RouteAction.internal_redirect_action>`\n\t// is set to :ref:`HANDLE_INTERNAL_REDIRECT\n\t// <envoy_v3_api_enum_value_config.route.v3.RouteAction.InternalRedirectAction.HANDLE_INTERNAL_REDIRECT>`\n\t// In the case where a downstream request is bounced among multiple routes by internal redirect,\n\t// the first route that hits this threshold, or has\n\t// :ref:`internal_redirect_action <envoy_v3_api_field_config.route.v3.RouteAction.internal_redirect_action>`\n\t// set to\n\t// :ref:`PASS_THROUGH_INTERNAL_REDIRECT\n\t// <envoy_v3_api_enum_value_config.route.v3.RouteAction.InternalRedirectAction.PASS_THROUGH_INTERNAL_REDIRECT>`\n\t// will pass the redirect back to downstream.\n\t//\n\t// If not specified, at most one redirect will be followed.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tMaxInternalRedirects *wrapperspb.UInt32Value `protobuf:\"bytes,31,opt,name=max_internal_redirects,json=maxInternalRedirects,proto3\" json:\"max_internal_redirects,omitempty\"`\n\t// Indicates that the route has a hedge policy. Note that if this is set,\n\t// it'll take precedence over the virtual host level hedge policy entirely\n\t// (e.g., policies are not merged, the most internal one becomes the enforced policy).\n\tHedgePolicy *HedgePolicy `protobuf:\"bytes,27,opt,name=hedge_policy,json=hedgePolicy,proto3\" json:\"hedge_policy,omitempty\"`\n\t// Specifies the maximum stream duration for this route.\n\tMaxStreamDuration *RouteAction_MaxStreamDuration `protobuf:\"bytes,36,opt,name=max_stream_duration,json=maxStreamDuration,proto3\" json:\"max_stream_duration,omitempty\"`\n\tunknownFields     protoimpl.UnknownFields\n\tsizeCache         protoimpl.SizeCache\n}\n\nfunc (x *RouteAction) Reset() {\n\t*x = RouteAction{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[8]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteAction) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteAction) ProtoMessage() {}\n\nfunc (x *RouteAction) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[8]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteAction.ProtoReflect.Descriptor instead.\nfunc (*RouteAction) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *RouteAction) GetClusterSpecifier() isRouteAction_ClusterSpecifier {\n\tif x != nil {\n\t\treturn x.ClusterSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetCluster() string {\n\tif x != nil {\n\t\tif x, ok := x.ClusterSpecifier.(*RouteAction_Cluster); ok {\n\t\t\treturn x.Cluster\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction) GetClusterHeader() string {\n\tif x != nil {\n\t\tif x, ok := x.ClusterSpecifier.(*RouteAction_ClusterHeader); ok {\n\t\t\treturn x.ClusterHeader\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction) GetWeightedClusters() *WeightedCluster {\n\tif x != nil {\n\t\tif x, ok := x.ClusterSpecifier.(*RouteAction_WeightedClusters); ok {\n\t\t\treturn x.WeightedClusters\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetClusterSpecifierPlugin() string {\n\tif x != nil {\n\t\tif x, ok := x.ClusterSpecifier.(*RouteAction_ClusterSpecifierPlugin); ok {\n\t\t\treturn x.ClusterSpecifierPlugin\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction) GetInlineClusterSpecifierPlugin() *ClusterSpecifierPlugin {\n\tif x != nil {\n\t\tif x, ok := x.ClusterSpecifier.(*RouteAction_InlineClusterSpecifierPlugin); ok {\n\t\t\treturn x.InlineClusterSpecifierPlugin\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetClusterNotFoundResponseCode() RouteAction_ClusterNotFoundResponseCode {\n\tif x != nil {\n\t\treturn x.ClusterNotFoundResponseCode\n\t}\n\treturn RouteAction_SERVICE_UNAVAILABLE\n}\n\nfunc (x *RouteAction) GetMetadataMatch() *v31.Metadata {\n\tif x != nil {\n\t\treturn x.MetadataMatch\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetPrefixRewrite() string {\n\tif x != nil {\n\t\treturn x.PrefixRewrite\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction) GetRegexRewrite() *v32.RegexMatchAndSubstitute {\n\tif x != nil {\n\t\treturn x.RegexRewrite\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetPathRewritePolicy() *v31.TypedExtensionConfig {\n\tif x != nil {\n\t\treturn x.PathRewritePolicy\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetPathRewrite() string {\n\tif x != nil {\n\t\treturn x.PathRewrite\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction) GetHostRewriteSpecifier() isRouteAction_HostRewriteSpecifier {\n\tif x != nil {\n\t\treturn x.HostRewriteSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetHostRewriteLiteral() string {\n\tif x != nil {\n\t\tif x, ok := x.HostRewriteSpecifier.(*RouteAction_HostRewriteLiteral); ok {\n\t\t\treturn x.HostRewriteLiteral\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction) GetAutoHostRewrite() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\tif x, ok := x.HostRewriteSpecifier.(*RouteAction_AutoHostRewrite); ok {\n\t\t\treturn x.AutoHostRewrite\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetHostRewriteHeader() string {\n\tif x != nil {\n\t\tif x, ok := x.HostRewriteSpecifier.(*RouteAction_HostRewriteHeader); ok {\n\t\t\treturn x.HostRewriteHeader\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction) GetHostRewritePathRegex() *v32.RegexMatchAndSubstitute {\n\tif x != nil {\n\t\tif x, ok := x.HostRewriteSpecifier.(*RouteAction_HostRewritePathRegex); ok {\n\t\t\treturn x.HostRewritePathRegex\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetHostRewrite() string {\n\tif x != nil {\n\t\tif x, ok := x.HostRewriteSpecifier.(*RouteAction_HostRewrite); ok {\n\t\t\treturn x.HostRewrite\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction) GetAppendXForwardedHost() bool {\n\tif x != nil {\n\t\treturn x.AppendXForwardedHost\n\t}\n\treturn false\n}\n\nfunc (x *RouteAction) GetTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Timeout\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetIdleTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.IdleTimeout\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetFlushTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.FlushTimeout\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetEarlyDataPolicy() *v31.TypedExtensionConfig {\n\tif x != nil {\n\t\treturn x.EarlyDataPolicy\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetRetryPolicy() *RetryPolicy {\n\tif x != nil {\n\t\treturn x.RetryPolicy\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetRetryPolicyTypedConfig() *anypb.Any {\n\tif x != nil {\n\t\treturn x.RetryPolicyTypedConfig\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetRequestMirrorPolicies() []*RouteAction_RequestMirrorPolicy {\n\tif x != nil {\n\t\treturn x.RequestMirrorPolicies\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetPriority() v31.RoutingPriority {\n\tif x != nil {\n\t\treturn x.Priority\n\t}\n\treturn v31.RoutingPriority(0)\n}\n\nfunc (x *RouteAction) GetRateLimits() []*RateLimit {\n\tif x != nil {\n\t\treturn x.RateLimits\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *RouteAction) GetIncludeVhRateLimits() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.IncludeVhRateLimits\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetHashPolicy() []*RouteAction_HashPolicy {\n\tif x != nil {\n\t\treturn x.HashPolicy\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *RouteAction) GetCors() *CorsPolicy {\n\tif x != nil {\n\t\treturn x.Cors\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *RouteAction) GetMaxGrpcTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.MaxGrpcTimeout\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *RouteAction) GetGrpcTimeoutOffset() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.GrpcTimeoutOffset\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetUpgradeConfigs() []*RouteAction_UpgradeConfig {\n\tif x != nil {\n\t\treturn x.UpgradeConfigs\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetInternalRedirectPolicy() *InternalRedirectPolicy {\n\tif x != nil {\n\t\treturn x.InternalRedirectPolicy\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *RouteAction) GetInternalRedirectAction() RouteAction_InternalRedirectAction {\n\tif x != nil {\n\t\treturn x.InternalRedirectAction\n\t}\n\treturn RouteAction_PASS_THROUGH_INTERNAL_REDIRECT\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *RouteAction) GetMaxInternalRedirects() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxInternalRedirects\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetHedgePolicy() *HedgePolicy {\n\tif x != nil {\n\t\treturn x.HedgePolicy\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction) GetMaxStreamDuration() *RouteAction_MaxStreamDuration {\n\tif x != nil {\n\t\treturn x.MaxStreamDuration\n\t}\n\treturn nil\n}\n\ntype isRouteAction_ClusterSpecifier interface {\n\tisRouteAction_ClusterSpecifier()\n}\n\ntype RouteAction_Cluster struct {\n\t// Indicates the upstream cluster to which the request should be routed\n\t// to.\n\tCluster string `protobuf:\"bytes,1,opt,name=cluster,proto3,oneof\"`\n}\n\ntype RouteAction_ClusterHeader struct {\n\t// Envoy will determine the cluster to route to by reading the value of the\n\t// HTTP header named by cluster_header from the request headers. If the\n\t// header is not found or the referenced cluster does not exist, Envoy will\n\t// return a 404 response.\n\t//\n\t// .. attention::\n\t//\n\t//\tInternally, Envoy always uses the HTTP/2 ``:authority`` header to represent the HTTP/1\n\t//\t``Host`` header. Thus, if attempting to match on ``Host``, match on ``:authority`` instead.\n\t//\n\t// .. note::\n\t//\n\t//\tIf the header appears multiple times only the first value is used.\n\tClusterHeader string `protobuf:\"bytes,2,opt,name=cluster_header,json=clusterHeader,proto3,oneof\"`\n}\n\ntype RouteAction_WeightedClusters struct {\n\t// Multiple upstream clusters can be specified for a given route. The\n\t// request is routed to one of the upstream clusters based on weights\n\t// assigned to each cluster. See\n\t// :ref:`traffic splitting <config_http_conn_man_route_table_traffic_splitting_split>`\n\t// for additional documentation.\n\tWeightedClusters *WeightedCluster `protobuf:\"bytes,3,opt,name=weighted_clusters,json=weightedClusters,proto3,oneof\"`\n}\n\ntype RouteAction_ClusterSpecifierPlugin struct {\n\t// Name of the cluster specifier plugin to use to determine the cluster for requests on this route.\n\t// The cluster specifier plugin name must be defined in the associated\n\t// :ref:`cluster specifier plugins <envoy_v3_api_field_config.route.v3.RouteConfiguration.cluster_specifier_plugins>`\n\t// in the :ref:`name <envoy_v3_api_field_config.core.v3.TypedExtensionConfig.name>` field.\n\tClusterSpecifierPlugin string `protobuf:\"bytes,37,opt,name=cluster_specifier_plugin,json=clusterSpecifierPlugin,proto3,oneof\"`\n}\n\ntype RouteAction_InlineClusterSpecifierPlugin struct {\n\t// Custom cluster specifier plugin configuration to use to determine the cluster for requests\n\t// on this route.\n\tInlineClusterSpecifierPlugin *ClusterSpecifierPlugin `protobuf:\"bytes,39,opt,name=inline_cluster_specifier_plugin,json=inlineClusterSpecifierPlugin,proto3,oneof\"`\n}\n\nfunc (*RouteAction_Cluster) isRouteAction_ClusterSpecifier() {}\n\nfunc (*RouteAction_ClusterHeader) isRouteAction_ClusterSpecifier() {}\n\nfunc (*RouteAction_WeightedClusters) isRouteAction_ClusterSpecifier() {}\n\nfunc (*RouteAction_ClusterSpecifierPlugin) isRouteAction_ClusterSpecifier() {}\n\nfunc (*RouteAction_InlineClusterSpecifierPlugin) isRouteAction_ClusterSpecifier() {}\n\ntype isRouteAction_HostRewriteSpecifier interface {\n\tisRouteAction_HostRewriteSpecifier()\n}\n\ntype RouteAction_HostRewriteLiteral struct {\n\t// Indicates that during forwarding, the host header will be swapped with\n\t// this value.\n\tHostRewriteLiteral string `protobuf:\"bytes,6,opt,name=host_rewrite_literal,json=hostRewriteLiteral,proto3,oneof\"`\n}\n\ntype RouteAction_AutoHostRewrite struct {\n\t// Indicates that during forwarding, the host header will be swapped with\n\t// the hostname of the upstream host chosen by the cluster manager. This\n\t// option is applicable only when the destination cluster for a route is of\n\t// type “strict_dns“ or “logical_dns“,\n\t// or when :ref:`hostname <envoy_v3_api_field_config.endpoint.v3.Endpoint.hostname>`\n\t// field is not empty. Setting this to true with other cluster types\n\t// has no effect.\n\tAutoHostRewrite *wrapperspb.BoolValue `protobuf:\"bytes,7,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof\"`\n}\n\ntype RouteAction_HostRewriteHeader struct {\n\t// Indicates that during forwarding, the host header will be swapped with the content of given\n\t// downstream or :ref:`custom <config_http_conn_man_headers_custom_request_headers>` header.\n\t// If header value is empty, host header is left intact.\n\t//\n\t// .. attention::\n\t//\n\t//\tPay attention to the potential security implications of using this option. Provided header\n\t//\tmust come from trusted source.\n\t//\n\t// .. note::\n\t//\n\t//\tIf the header appears multiple times only the first value is used.\n\tHostRewriteHeader string `protobuf:\"bytes,29,opt,name=host_rewrite_header,json=hostRewriteHeader,proto3,oneof\"`\n}\n\ntype RouteAction_HostRewritePathRegex struct {\n\t// Indicates that during forwarding, the host header will be swapped with\n\t// the result of the regex substitution executed on path value with query and fragment removed.\n\t// This is useful for transitioning variable content between path segment and subdomain.\n\t//\n\t// For example with the following config:\n\t//\n\t//\t.. code-block:: yaml\n\t//\n\t//\t  host_rewrite_path_regex:\n\t//\t    pattern:\n\t//\t      google_re2: {}\n\t//\t      regex: \"^/(.+)/.+$\"\n\t//\t    substitution: \\1\n\t//\n\t// Would rewrite the host header to “envoyproxy.io“ given the path “/envoyproxy.io/some/path“.\n\tHostRewritePathRegex *v32.RegexMatchAndSubstitute `protobuf:\"bytes,35,opt,name=host_rewrite_path_regex,json=hostRewritePathRegex,proto3,oneof\"`\n}\n\ntype RouteAction_HostRewrite struct {\n\t// Rewrites the host header with the value of this field. The router filter will\n\t// place the original host header value before rewriting into the :ref:`x-envoy-original-host\n\t// <config_http_filters_router_x-envoy-original-host>` header.\n\t//\n\t// The :ref:`substitution format specifier <config_access_log_format>` could be applied here.\n\t// For example, with the following config:\n\t//\n\t//\t.. code-block:: yaml\n\t//\n\t//\t  host_rewrite: \"prefix-%REQ(custom-host-header-name)%\"\n\t//\n\t// Would rewrite the host header to “prefix-some_value“ given the header\n\t// “custom-host-header-name: some_value“. If the header is not present, the host header will\n\t// be rewritten to an value of “prefix-“.\n\t//\n\t// If the final output of the host rewrite is empty, then the update will be ignored and the\n\t// original host header will be preserved.\n\tHostRewrite string `protobuf:\"bytes,44,opt,name=host_rewrite,json=hostRewrite,proto3,oneof\"`\n}\n\nfunc (*RouteAction_HostRewriteLiteral) isRouteAction_HostRewriteSpecifier() {}\n\nfunc (*RouteAction_AutoHostRewrite) isRouteAction_HostRewriteSpecifier() {}\n\nfunc (*RouteAction_HostRewriteHeader) isRouteAction_HostRewriteSpecifier() {}\n\nfunc (*RouteAction_HostRewritePathRegex) isRouteAction_HostRewriteSpecifier() {}\n\nfunc (*RouteAction_HostRewrite) isRouteAction_HostRewriteSpecifier() {}\n\n// HTTP retry :ref:`architecture overview <arch_overview_http_routing_retry>`.\n// [#next-free-field: 14]\ntype RetryPolicy struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies the conditions under which retry takes place. These are the same\n\t// conditions documented for :ref:`config_http_filters_router_x-envoy-retry-on` and\n\t// :ref:`config_http_filters_router_x-envoy-retry-grpc-on`.\n\tRetryOn string `protobuf:\"bytes,1,opt,name=retry_on,json=retryOn,proto3\" json:\"retry_on,omitempty\"`\n\t// Specifies the allowed number of retries. This parameter is optional and\n\t// defaults to 1. These are the same conditions documented for\n\t// :ref:`config_http_filters_router_x-envoy-max-retries`.\n\tNumRetries *wrapperspb.UInt32Value `protobuf:\"bytes,2,opt,name=num_retries,json=numRetries,proto3\" json:\"num_retries,omitempty\"`\n\t// Specifies a non-zero upstream timeout per retry attempt (including the initial attempt). This\n\t// parameter is optional. The same conditions documented for\n\t// :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms` apply.\n\t//\n\t// .. note::\n\t//\n\t//\tIf left unspecified, Envoy will use the global\n\t//\t:ref:`route timeout <envoy_v3_api_field_config.route.v3.RouteAction.timeout>` for the request.\n\t//\tConsequently, when using a :ref:`5xx <config_http_filters_router_x-envoy-retry-on>` based\n\t//\tretry policy, a request that times out will not be retried as the total timeout budget\n\t//\twould have been exhausted.\n\tPerTryTimeout *durationpb.Duration `protobuf:\"bytes,3,opt,name=per_try_timeout,json=perTryTimeout,proto3\" json:\"per_try_timeout,omitempty\"`\n\t// Specifies an upstream idle timeout per retry attempt (including the initial attempt). This\n\t// parameter is optional and if absent there is no per-try idle timeout. The semantics of the per-\n\t// try idle timeout are similar to the\n\t// :ref:`route idle timeout <envoy_v3_api_field_config.route.v3.RouteAction.timeout>` and\n\t// :ref:`stream idle timeout\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_idle_timeout>`\n\t// both enforced by the HTTP connection manager. The difference is that this idle timeout\n\t// is enforced by the router for each individual attempt and thus after all previous filters have\n\t// run, as opposed to *before* all previous filters run for the other idle timeouts. This timeout\n\t// is useful in cases in which total request timeout is bounded by a number of retries and a\n\t// :ref:`per_try_timeout <envoy_v3_api_field_config.route.v3.RetryPolicy.per_try_timeout>`, but\n\t// there is a desire to ensure each try is making incremental progress. Note also that similar\n\t// to :ref:`per_try_timeout <envoy_v3_api_field_config.route.v3.RetryPolicy.per_try_timeout>`,\n\t// this idle timeout does not start until after both the entire request has been received by the\n\t// router *and* a connection pool connection has been obtained. Unlike\n\t// :ref:`per_try_timeout <envoy_v3_api_field_config.route.v3.RetryPolicy.per_try_timeout>`,\n\t// the idle timer continues once the response starts streaming back to the downstream client.\n\t// This ensures that response data continues to make progress without using one of the HTTP\n\t// connection manager idle timeouts.\n\tPerTryIdleTimeout *durationpb.Duration `protobuf:\"bytes,13,opt,name=per_try_idle_timeout,json=perTryIdleTimeout,proto3\" json:\"per_try_idle_timeout,omitempty\"`\n\t// Specifies an implementation of a RetryPriority which is used to determine the\n\t// distribution of load across priorities used for retries. Refer to\n\t// :ref:`retry plugin configuration <arch_overview_http_retry_plugins>` for more details.\n\tRetryPriority *RetryPolicy_RetryPriority `protobuf:\"bytes,4,opt,name=retry_priority,json=retryPriority,proto3\" json:\"retry_priority,omitempty\"`\n\t// Specifies a collection of RetryHostPredicates that will be consulted when selecting a host\n\t// for retries. If any of the predicates reject the host, host selection will be reattempted.\n\t// Refer to :ref:`retry plugin configuration <arch_overview_http_retry_plugins>` for more\n\t// details.\n\tRetryHostPredicate []*RetryPolicy_RetryHostPredicate `protobuf:\"bytes,5,rep,name=retry_host_predicate,json=retryHostPredicate,proto3\" json:\"retry_host_predicate,omitempty\"`\n\t// Retry options predicates that will be applied prior to retrying a request. These predicates\n\t// allow customizing request behavior between retries.\n\t// [#comment: add [#extension-category: envoy.retry_options_predicates] when there are built-in extensions]\n\tRetryOptionsPredicates []*v31.TypedExtensionConfig `protobuf:\"bytes,12,rep,name=retry_options_predicates,json=retryOptionsPredicates,proto3\" json:\"retry_options_predicates,omitempty\"`\n\t// The maximum number of times host selection will be reattempted before giving up, at which\n\t// point the host that was last selected will be routed to. If unspecified, this will default to\n\t// retrying once.\n\tHostSelectionRetryMaxAttempts int64 `protobuf:\"varint,6,opt,name=host_selection_retry_max_attempts,json=hostSelectionRetryMaxAttempts,proto3\" json:\"host_selection_retry_max_attempts,omitempty\"`\n\t// HTTP status codes that should trigger a retry in addition to those specified by retry_on.\n\tRetriableStatusCodes []uint32 `protobuf:\"varint,7,rep,packed,name=retriable_status_codes,json=retriableStatusCodes,proto3\" json:\"retriable_status_codes,omitempty\"`\n\t// Specifies parameters that control exponential retry back off. This parameter is optional, in which case the\n\t// default base interval is 25 milliseconds or, if set, the current value of the\n\t// “upstream.base_retry_backoff_ms“ runtime parameter. The default maximum interval is 10 times\n\t// the base interval. The documentation for :ref:`config_http_filters_router_x-envoy-max-retries`\n\t// describes Envoy's back-off algorithm.\n\tRetryBackOff *RetryPolicy_RetryBackOff `protobuf:\"bytes,8,opt,name=retry_back_off,json=retryBackOff,proto3\" json:\"retry_back_off,omitempty\"`\n\t// Specifies parameters that control a retry back-off strategy that is used\n\t// when the request is rate limited by the upstream server. The server may\n\t// return a response header like “Retry-After“ or “X-RateLimit-Reset“ to\n\t// provide feedback to the client on how long to wait before retrying. If\n\t// configured, this back-off strategy will be used instead of the\n\t// default exponential back off strategy (configured using “retry_back_off“)\n\t// whenever a response includes the matching headers.\n\tRateLimitedRetryBackOff *RetryPolicy_RateLimitedRetryBackOff `protobuf:\"bytes,11,opt,name=rate_limited_retry_back_off,json=rateLimitedRetryBackOff,proto3\" json:\"rate_limited_retry_back_off,omitempty\"`\n\t// HTTP response headers that trigger a retry if present in the response. A retry will be\n\t// triggered if any of the header matches match the upstream response headers.\n\t// The field is only consulted if 'retriable-headers' retry policy is active.\n\tRetriableHeaders []*HeaderMatcher `protobuf:\"bytes,9,rep,name=retriable_headers,json=retriableHeaders,proto3\" json:\"retriable_headers,omitempty\"`\n\t// HTTP headers which must be present in the request for retries to be attempted.\n\tRetriableRequestHeaders []*HeaderMatcher `protobuf:\"bytes,10,rep,name=retriable_request_headers,json=retriableRequestHeaders,proto3\" json:\"retriable_request_headers,omitempty\"`\n\tunknownFields           protoimpl.UnknownFields\n\tsizeCache               protoimpl.SizeCache\n}\n\nfunc (x *RetryPolicy) Reset() {\n\t*x = RetryPolicy{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[9]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RetryPolicy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RetryPolicy) ProtoMessage() {}\n\nfunc (x *RetryPolicy) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[9]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead.\nfunc (*RetryPolicy) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *RetryPolicy) GetRetryOn() string {\n\tif x != nil {\n\t\treturn x.RetryOn\n\t}\n\treturn \"\"\n}\n\nfunc (x *RetryPolicy) GetNumRetries() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.NumRetries\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy) GetPerTryTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.PerTryTimeout\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy) GetPerTryIdleTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.PerTryIdleTimeout\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy) GetRetryPriority() *RetryPolicy_RetryPriority {\n\tif x != nil {\n\t\treturn x.RetryPriority\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy) GetRetryHostPredicate() []*RetryPolicy_RetryHostPredicate {\n\tif x != nil {\n\t\treturn x.RetryHostPredicate\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy) GetRetryOptionsPredicates() []*v31.TypedExtensionConfig {\n\tif x != nil {\n\t\treturn x.RetryOptionsPredicates\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy) GetHostSelectionRetryMaxAttempts() int64 {\n\tif x != nil {\n\t\treturn x.HostSelectionRetryMaxAttempts\n\t}\n\treturn 0\n}\n\nfunc (x *RetryPolicy) GetRetriableStatusCodes() []uint32 {\n\tif x != nil {\n\t\treturn x.RetriableStatusCodes\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy) GetRetryBackOff() *RetryPolicy_RetryBackOff {\n\tif x != nil {\n\t\treturn x.RetryBackOff\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy) GetRateLimitedRetryBackOff() *RetryPolicy_RateLimitedRetryBackOff {\n\tif x != nil {\n\t\treturn x.RateLimitedRetryBackOff\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy) GetRetriableHeaders() []*HeaderMatcher {\n\tif x != nil {\n\t\treturn x.RetriableHeaders\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy) GetRetriableRequestHeaders() []*HeaderMatcher {\n\tif x != nil {\n\t\treturn x.RetriableRequestHeaders\n\t}\n\treturn nil\n}\n\n// HTTP request hedging :ref:`architecture overview <arch_overview_http_routing_hedging>`.\ntype HedgePolicy struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies the number of initial requests that should be sent upstream.\n\t// Must be at least 1.\n\t//\n\t// Defaults to 1.\n\t// [#not-implemented-hide:]\n\tInitialRequests *wrapperspb.UInt32Value `protobuf:\"bytes,1,opt,name=initial_requests,json=initialRequests,proto3\" json:\"initial_requests,omitempty\"`\n\t// Specifies a probability that an additional upstream request should be sent\n\t// on top of what is specified by initial_requests.\n\t//\n\t// Defaults to 0.\n\t// [#not-implemented-hide:]\n\tAdditionalRequestChance *v33.FractionalPercent `protobuf:\"bytes,2,opt,name=additional_request_chance,json=additionalRequestChance,proto3\" json:\"additional_request_chance,omitempty\"`\n\t// Indicates that a hedged request should be sent when the per-try timeout is hit.\n\t// This means that a retry will be issued without resetting the original request, leaving multiple upstream requests in flight.\n\t// The first request to complete successfully will be the one returned to the caller.\n\t//\n\t//   - At any time, a successful response (i.e. not triggering any of the retry-on conditions) would be returned to the client.\n\t//   - Before per-try timeout, an error response (per retry-on conditions) would be retried immediately or returned to the client\n\t//     if there are no more retries left.\n\t//   - After per-try timeout, an error response would be discarded, as a retry in the form of a hedged request is already in progress.\n\t//\n\t// .. note::\n\t//\n\t//\tFor this to have effect, you must have a :ref:`RetryPolicy <envoy_v3_api_msg_config.route.v3.RetryPolicy>` that retries at least\n\t//\tone error code and specifies a maximum number of retries.\n\t//\n\t// Defaults to “false“.\n\tHedgeOnPerTryTimeout bool `protobuf:\"varint,3,opt,name=hedge_on_per_try_timeout,json=hedgeOnPerTryTimeout,proto3\" json:\"hedge_on_per_try_timeout,omitempty\"`\n\tunknownFields        protoimpl.UnknownFields\n\tsizeCache            protoimpl.SizeCache\n}\n\nfunc (x *HedgePolicy) Reset() {\n\t*x = HedgePolicy{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[10]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HedgePolicy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HedgePolicy) ProtoMessage() {}\n\nfunc (x *HedgePolicy) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[10]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HedgePolicy.ProtoReflect.Descriptor instead.\nfunc (*HedgePolicy) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *HedgePolicy) GetInitialRequests() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.InitialRequests\n\t}\n\treturn nil\n}\n\nfunc (x *HedgePolicy) GetAdditionalRequestChance() *v33.FractionalPercent {\n\tif x != nil {\n\t\treturn x.AdditionalRequestChance\n\t}\n\treturn nil\n}\n\nfunc (x *HedgePolicy) GetHedgeOnPerTryTimeout() bool {\n\tif x != nil {\n\t\treturn x.HedgeOnPerTryTimeout\n\t}\n\treturn false\n}\n\n// [#next-free-field: 10]\ntype RedirectAction struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// When the scheme redirection take place, the following rules apply:\n\t//  1. If the source URI scheme is “http“ and the port is explicitly\n\t//     set to “:80“, the port will be removed after the redirection\n\t//  2. If the source URI scheme is “https“ and the port is explicitly\n\t//     set to “:443“, the port will be removed after the redirection\n\t//\n\t// Types that are valid to be assigned to SchemeRewriteSpecifier:\n\t//\n\t//\t*RedirectAction_HttpsRedirect\n\t//\t*RedirectAction_SchemeRedirect\n\tSchemeRewriteSpecifier isRedirectAction_SchemeRewriteSpecifier `protobuf_oneof:\"scheme_rewrite_specifier\"`\n\t// The host portion of the URL will be swapped with this value.\n\tHostRedirect string `protobuf:\"bytes,1,opt,name=host_redirect,json=hostRedirect,proto3\" json:\"host_redirect,omitempty\"`\n\t// The port value of the URL will be swapped with this value.\n\tPortRedirect uint32 `protobuf:\"varint,8,opt,name=port_redirect,json=portRedirect,proto3\" json:\"port_redirect,omitempty\"`\n\t// Types that are valid to be assigned to PathRewriteSpecifier:\n\t//\n\t//\t*RedirectAction_PathRedirect\n\t//\t*RedirectAction_PrefixRewrite\n\t//\t*RedirectAction_RegexRewrite\n\tPathRewriteSpecifier isRedirectAction_PathRewriteSpecifier `protobuf_oneof:\"path_rewrite_specifier\"`\n\t// The HTTP status code to use in the redirect response. The default response\n\t// code is MOVED_PERMANENTLY (301).\n\tResponseCode RedirectAction_RedirectResponseCode `protobuf:\"varint,3,opt,name=response_code,json=responseCode,proto3,enum=envoy.config.route.v3.RedirectAction_RedirectResponseCode\" json:\"response_code,omitempty\"`\n\t// Indicates that during redirection, the query portion of the URL will\n\t// be removed. Default value is false.\n\tStripQuery    bool `protobuf:\"varint,6,opt,name=strip_query,json=stripQuery,proto3\" json:\"strip_query,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RedirectAction) Reset() {\n\t*x = RedirectAction{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[11]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RedirectAction) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RedirectAction) ProtoMessage() {}\n\nfunc (x *RedirectAction) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[11]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RedirectAction.ProtoReflect.Descriptor instead.\nfunc (*RedirectAction) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *RedirectAction) GetSchemeRewriteSpecifier() isRedirectAction_SchemeRewriteSpecifier {\n\tif x != nil {\n\t\treturn x.SchemeRewriteSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *RedirectAction) GetHttpsRedirect() bool {\n\tif x != nil {\n\t\tif x, ok := x.SchemeRewriteSpecifier.(*RedirectAction_HttpsRedirect); ok {\n\t\t\treturn x.HttpsRedirect\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (x *RedirectAction) GetSchemeRedirect() string {\n\tif x != nil {\n\t\tif x, ok := x.SchemeRewriteSpecifier.(*RedirectAction_SchemeRedirect); ok {\n\t\t\treturn x.SchemeRedirect\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *RedirectAction) GetHostRedirect() string {\n\tif x != nil {\n\t\treturn x.HostRedirect\n\t}\n\treturn \"\"\n}\n\nfunc (x *RedirectAction) GetPortRedirect() uint32 {\n\tif x != nil {\n\t\treturn x.PortRedirect\n\t}\n\treturn 0\n}\n\nfunc (x *RedirectAction) GetPathRewriteSpecifier() isRedirectAction_PathRewriteSpecifier {\n\tif x != nil {\n\t\treturn x.PathRewriteSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *RedirectAction) GetPathRedirect() string {\n\tif x != nil {\n\t\tif x, ok := x.PathRewriteSpecifier.(*RedirectAction_PathRedirect); ok {\n\t\t\treturn x.PathRedirect\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *RedirectAction) GetPrefixRewrite() string {\n\tif x != nil {\n\t\tif x, ok := x.PathRewriteSpecifier.(*RedirectAction_PrefixRewrite); ok {\n\t\t\treturn x.PrefixRewrite\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *RedirectAction) GetRegexRewrite() *v32.RegexMatchAndSubstitute {\n\tif x != nil {\n\t\tif x, ok := x.PathRewriteSpecifier.(*RedirectAction_RegexRewrite); ok {\n\t\t\treturn x.RegexRewrite\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RedirectAction) GetResponseCode() RedirectAction_RedirectResponseCode {\n\tif x != nil {\n\t\treturn x.ResponseCode\n\t}\n\treturn RedirectAction_MOVED_PERMANENTLY\n}\n\nfunc (x *RedirectAction) GetStripQuery() bool {\n\tif x != nil {\n\t\treturn x.StripQuery\n\t}\n\treturn false\n}\n\ntype isRedirectAction_SchemeRewriteSpecifier interface {\n\tisRedirectAction_SchemeRewriteSpecifier()\n}\n\ntype RedirectAction_HttpsRedirect struct {\n\t// The scheme portion of the URL will be swapped with \"https\".\n\tHttpsRedirect bool `protobuf:\"varint,4,opt,name=https_redirect,json=httpsRedirect,proto3,oneof\"`\n}\n\ntype RedirectAction_SchemeRedirect struct {\n\t// The scheme portion of the URL will be swapped with this value.\n\tSchemeRedirect string `protobuf:\"bytes,7,opt,name=scheme_redirect,json=schemeRedirect,proto3,oneof\"`\n}\n\nfunc (*RedirectAction_HttpsRedirect) isRedirectAction_SchemeRewriteSpecifier() {}\n\nfunc (*RedirectAction_SchemeRedirect) isRedirectAction_SchemeRewriteSpecifier() {}\n\ntype isRedirectAction_PathRewriteSpecifier interface {\n\tisRedirectAction_PathRewriteSpecifier()\n}\n\ntype RedirectAction_PathRedirect struct {\n\t// The path portion of the URL will be swapped with this value.\n\t// Please note that query string in path_redirect will override the\n\t// request's query string and will not be stripped.\n\t//\n\t// For example, let's say we have the following routes:\n\t//\n\t//   - match: { path: \"/old-path-1\" }\n\t//     redirect: { path_redirect: \"/new-path-1\" }\n\t//   - match: { path: \"/old-path-2\" }\n\t//     redirect: { path_redirect: \"/new-path-2\", strip-query: \"true\" }\n\t//   - match: { path: \"/old-path-3\" }\n\t//     redirect: { path_redirect: \"/new-path-3?foo=1\", strip_query: \"true\" }\n\t//\n\t// 1. if request uri is \"/old-path-1?bar=1\", users will be redirected to \"/new-path-1?bar=1\"\n\t// 2. if request uri is \"/old-path-2?bar=1\", users will be redirected to \"/new-path-2\"\n\t// 3. if request uri is \"/old-path-3?bar=1\", users will be redirected to \"/new-path-3?foo=1\"\n\tPathRedirect string `protobuf:\"bytes,2,opt,name=path_redirect,json=pathRedirect,proto3,oneof\"`\n}\n\ntype RedirectAction_PrefixRewrite struct {\n\t// Indicates that during redirection, the matched prefix (or path)\n\t// should be swapped with this value. This option allows redirect URLs be dynamically created\n\t// based on the request.\n\t//\n\t// .. attention::\n\t//\n\t//\tPay attention to the use of trailing slashes as mentioned in\n\t//\t:ref:`RouteAction's prefix_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.prefix_rewrite>`.\n\tPrefixRewrite string `protobuf:\"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3,oneof\"`\n}\n\ntype RedirectAction_RegexRewrite struct {\n\t// Indicates that during redirect, portions of the path that match the\n\t// pattern should be rewritten, even allowing the substitution of capture\n\t// groups from the pattern into the new path as specified by the rewrite\n\t// substitution string. This is useful to allow application paths to be\n\t// rewritten in a way that is aware of segments with variable content like\n\t// identifiers.\n\t//\n\t// Examples using Google's `RE2 <https://github.com/google/re2>`_ engine:\n\t//\n\t//   - The path pattern “^/service/([^/]+)(/.*)$“ paired with a substitution\n\t//     string of “\\2/instance/\\1“ would transform “/service/foo/v1/api“\n\t//     into “/v1/api/instance/foo“.\n\t//\n\t//   - The pattern “one“ paired with a substitution string of “two“ would\n\t//     transform “/xxx/one/yyy/one/zzz“ into “/xxx/two/yyy/two/zzz“.\n\t//\n\t//   - The pattern “^(.*?)one(.*)$“ paired with a substitution string of\n\t//     “\\1two\\2“ would replace only the first occurrence of “one“,\n\t//     transforming path “/xxx/one/yyy/one/zzz“ into “/xxx/two/yyy/one/zzz“.\n\t//\n\t//   - The pattern “(?i)/xxx/“ paired with a substitution string of “/yyy/“\n\t//     would do a case-insensitive match and transform path “/aaa/XxX/bbb“ to\n\t//     “/aaa/yyy/bbb“.\n\tRegexRewrite *v32.RegexMatchAndSubstitute `protobuf:\"bytes,9,opt,name=regex_rewrite,json=regexRewrite,proto3,oneof\"`\n}\n\nfunc (*RedirectAction_PathRedirect) isRedirectAction_PathRewriteSpecifier() {}\n\nfunc (*RedirectAction_PrefixRewrite) isRedirectAction_PathRewriteSpecifier() {}\n\nfunc (*RedirectAction_RegexRewrite) isRedirectAction_PathRewriteSpecifier() {}\n\ntype DirectResponseAction struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies the HTTP response status to be returned.\n\tStatus uint32 `protobuf:\"varint,1,opt,name=status,proto3\" json:\"status,omitempty\"`\n\t// Specifies the content of the response body. If this setting is omitted,\n\t// no body is included in the generated response.\n\t//\n\t// .. note::\n\t//\n\t//\tHeaders can be specified using ``response_headers_to_add`` in the enclosing\n\t//\t:ref:`envoy_v3_api_msg_config.route.v3.Route`, :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration` or\n\t//\t:ref:`envoy_v3_api_msg_config.route.v3.VirtualHost`.\n\tBody *v31.DataSource `protobuf:\"bytes,2,opt,name=body,proto3\" json:\"body,omitempty\"`\n\t// Specifies a format string for the response body. If present, the contents of\n\t// “body_format“ will be formatted and used as the response body, where the\n\t// contents of “body“ (may be empty) will be passed as the variable “%LOCAL_REPLY_BODY%“.\n\t// If neither are provided, no body is included in the generated response.\n\tBodyFormat    *v31.SubstitutionFormatString `protobuf:\"bytes,3,opt,name=body_format,json=bodyFormat,proto3\" json:\"body_format,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DirectResponseAction) Reset() {\n\t*x = DirectResponseAction{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[12]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DirectResponseAction) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DirectResponseAction) ProtoMessage() {}\n\nfunc (x *DirectResponseAction) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[12]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DirectResponseAction.ProtoReflect.Descriptor instead.\nfunc (*DirectResponseAction) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *DirectResponseAction) GetStatus() uint32 {\n\tif x != nil {\n\t\treturn x.Status\n\t}\n\treturn 0\n}\n\nfunc (x *DirectResponseAction) GetBody() *v31.DataSource {\n\tif x != nil {\n\t\treturn x.Body\n\t}\n\treturn nil\n}\n\nfunc (x *DirectResponseAction) GetBodyFormat() *v31.SubstitutionFormatString {\n\tif x != nil {\n\t\treturn x.BodyFormat\n\t}\n\treturn nil\n}\n\n// [#not-implemented-hide:]\ntype NonForwardingAction struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *NonForwardingAction) Reset() {\n\t*x = NonForwardingAction{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[13]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *NonForwardingAction) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*NonForwardingAction) ProtoMessage() {}\n\nfunc (x *NonForwardingAction) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[13]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use NonForwardingAction.ProtoReflect.Descriptor instead.\nfunc (*NonForwardingAction) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{13}\n}\n\ntype Decorator struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The operation name associated with the request matched to this route. If tracing is\n\t// enabled, this information will be used as the span name reported for this request.\n\t//\n\t// .. note::\n\t//\n\t//\tFor ingress (inbound) requests, or egress (outbound) responses, this value may be overridden\n\t//\tby the :ref:`x-envoy-decorator-operation\n\t//\t<config_http_filters_router_x-envoy-decorator-operation>` header.\n\tOperation string `protobuf:\"bytes,1,opt,name=operation,proto3\" json:\"operation,omitempty\"`\n\t// Whether the decorated details should be propagated to the other party. The default is “true“.\n\tPropagate     *wrapperspb.BoolValue `protobuf:\"bytes,2,opt,name=propagate,proto3\" json:\"propagate,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Decorator) Reset() {\n\t*x = Decorator{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[14]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Decorator) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Decorator) ProtoMessage() {}\n\nfunc (x *Decorator) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[14]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Decorator.ProtoReflect.Descriptor instead.\nfunc (*Decorator) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{14}\n}\n\nfunc (x *Decorator) GetOperation() string {\n\tif x != nil {\n\t\treturn x.Operation\n\t}\n\treturn \"\"\n}\n\nfunc (x *Decorator) GetPropagate() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.Propagate\n\t}\n\treturn nil\n}\n\n// [#next-free-field: 7]\ntype Tracing struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Target percentage of requests managed by this HTTP connection manager that will be force\n\t// traced if the :ref:`x-client-trace-id <config_http_conn_man_headers_x-client-trace-id>`\n\t// header is set. This field is a direct analog for the runtime variable\n\t// 'tracing.client_enabled' in the :ref:`HTTP Connection Manager\n\t// <config_http_conn_man_runtime>`.\n\t// Default: 100%\n\tClientSampling *v33.FractionalPercent `protobuf:\"bytes,1,opt,name=client_sampling,json=clientSampling,proto3\" json:\"client_sampling,omitempty\"`\n\t// Target percentage of requests managed by this HTTP connection manager that will be randomly\n\t// selected for trace generation, if not requested by the client or not forced. This field is\n\t// a direct analog for the runtime variable 'tracing.random_sampling' in the\n\t// :ref:`HTTP Connection Manager <config_http_conn_man_runtime>`.\n\t// Default: 100%\n\tRandomSampling *v33.FractionalPercent `protobuf:\"bytes,2,opt,name=random_sampling,json=randomSampling,proto3\" json:\"random_sampling,omitempty\"`\n\t// Target percentage of requests managed by this HTTP connection manager that will be traced\n\t// after all other sampling checks have been applied (client-directed, force tracing, random\n\t// sampling). This field functions as an upper limit on the total configured sampling rate. For\n\t// instance, setting client_sampling to 100% but overall_sampling to 1% will result in only 1%\n\t// of client requests with the appropriate headers to be force traced. This field is a direct\n\t// analog for the runtime variable 'tracing.global_enabled' in the\n\t// :ref:`HTTP Connection Manager <config_http_conn_man_runtime>`.\n\t// Default: 100%\n\tOverallSampling *v33.FractionalPercent `protobuf:\"bytes,3,opt,name=overall_sampling,json=overallSampling,proto3\" json:\"overall_sampling,omitempty\"`\n\t// A list of custom tags with unique tag name to create tags for the active span.\n\t// It will take effect after merging with the :ref:`corresponding configuration\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.Tracing.custom_tags>`\n\t// configured in the HTTP connection manager. If two tags with the same name are configured\n\t// each in the HTTP connection manager and the route level, the one configured here takes\n\t// priority.\n\tCustomTags []*v34.CustomTag `protobuf:\"bytes,4,rep,name=custom_tags,json=customTags,proto3\" json:\"custom_tags,omitempty\"`\n\t// The operation name of the span which will be used for tracing.\n\t//\n\t// The same :ref:`format specifier <config_access_log_format>` as used for\n\t// :ref:`HTTP access logging <config_access_log>` applies here, however\n\t// unknown specifier values are replaced with the empty string instead of “-“.\n\t//\n\t// This field will take precedence over and make following settings ineffective:\n\t//\n\t//   - :ref:`route decorator <envoy_v3_api_field_config.route.v3.Route.decorator>`.\n\t//   - :ref:`x-envoy-decorator-operation <config_http_filters_router_x-envoy-decorator-operation>`.\n\t//   - :ref:`HCM tracing operation\n\t//     <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.Tracing.operation>`.\n\tOperation string `protobuf:\"bytes,5,opt,name=operation,proto3\" json:\"operation,omitempty\"`\n\t// The operation name of the upstream span which will be used for tracing.\n\t// This only takes effect when “spawn_upstream_span“ is set to true and the upstream\n\t// span is created.\n\t//\n\t// The same :ref:`format specifier <config_access_log_format>` as used for\n\t// :ref:`HTTP access logging <config_access_log>` applies here, however\n\t// unknown specifier values are replaced with the empty string instead of “-“.\n\t//\n\t// This field will take precedence over and make following settings ineffective:\n\t//\n\t//   - :ref:`HCM tracing upstream operation\n\t//     <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.Tracing.upstream_operation>`\n\tUpstreamOperation string `protobuf:\"bytes,6,opt,name=upstream_operation,json=upstreamOperation,proto3\" json:\"upstream_operation,omitempty\"`\n\tunknownFields     protoimpl.UnknownFields\n\tsizeCache         protoimpl.SizeCache\n}\n\nfunc (x *Tracing) Reset() {\n\t*x = Tracing{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[15]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Tracing) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Tracing) ProtoMessage() {}\n\nfunc (x *Tracing) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[15]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Tracing.ProtoReflect.Descriptor instead.\nfunc (*Tracing) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{15}\n}\n\nfunc (x *Tracing) GetClientSampling() *v33.FractionalPercent {\n\tif x != nil {\n\t\treturn x.ClientSampling\n\t}\n\treturn nil\n}\n\nfunc (x *Tracing) GetRandomSampling() *v33.FractionalPercent {\n\tif x != nil {\n\t\treturn x.RandomSampling\n\t}\n\treturn nil\n}\n\nfunc (x *Tracing) GetOverallSampling() *v33.FractionalPercent {\n\tif x != nil {\n\t\treturn x.OverallSampling\n\t}\n\treturn nil\n}\n\nfunc (x *Tracing) GetCustomTags() []*v34.CustomTag {\n\tif x != nil {\n\t\treturn x.CustomTags\n\t}\n\treturn nil\n}\n\nfunc (x *Tracing) GetOperation() string {\n\tif x != nil {\n\t\treturn x.Operation\n\t}\n\treturn \"\"\n}\n\nfunc (x *Tracing) GetUpstreamOperation() string {\n\tif x != nil {\n\t\treturn x.UpstreamOperation\n\t}\n\treturn \"\"\n}\n\n// A virtual cluster is a way of specifying a regex matching rule against\n// certain important endpoints such that statistics are generated explicitly for\n// the matched requests. The reason this is useful is that when doing\n// prefix/path matching Envoy does not always know what the application\n// considers to be an endpoint. Thus, it’s impossible for Envoy to generically\n// emit per endpoint statistics. However, often systems have highly critical\n// endpoints that they wish to get “perfect” statistics on. Virtual cluster\n// statistics are perfect in the sense that they are emitted on the downstream\n// side such that they include network level failures.\n//\n// Documentation for :ref:`virtual cluster statistics <config_http_filters_router_vcluster_stats>`.\n//\n// .. note::\n//\n//\tVirtual clusters are a useful tool, but we do not recommend setting up a virtual cluster for\n//\tevery application endpoint. This is both not easily maintainable and as well the matching and\n//\tstatistics output are not free.\ntype VirtualCluster struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies a list of header matchers to use for matching requests. Each specified header must\n\t// match. The pseudo-headers “:path“ and “:method“ can be used to match the request path and\n\t// method, respectively.\n\tHeaders []*HeaderMatcher `protobuf:\"bytes,4,rep,name=headers,proto3\" json:\"headers,omitempty\"`\n\t// Specifies the name of the virtual cluster. The virtual cluster name as well\n\t// as the virtual host name are used when emitting statistics. The statistics are emitted by the\n\t// router filter and are documented :ref:`here <config_http_filters_router_stats>`.\n\tName          string `protobuf:\"bytes,2,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *VirtualCluster) Reset() {\n\t*x = VirtualCluster{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[16]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *VirtualCluster) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*VirtualCluster) ProtoMessage() {}\n\nfunc (x *VirtualCluster) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[16]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use VirtualCluster.ProtoReflect.Descriptor instead.\nfunc (*VirtualCluster) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{16}\n}\n\nfunc (x *VirtualCluster) GetHeaders() []*HeaderMatcher {\n\tif x != nil {\n\t\treturn x.Headers\n\t}\n\treturn nil\n}\n\nfunc (x *VirtualCluster) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\n// Global rate limiting :ref:`architecture overview <arch_overview_global_rate_limit>`.\n// Also applies to Local rate limiting :ref:`using descriptors <config_http_filters_local_rate_limit_descriptors>`.\n// [#next-free-field: 7]\ntype RateLimit struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Refers to the stage set in the filter. The rate limit configuration only\n\t// applies to filters with the same stage number. The default stage number is\n\t// 0.\n\t//\n\t// .. note::\n\t//\n\t//\tThe filter supports a range of 0 - 10 inclusively for stage numbers.\n\t//\n\t// .. note::\n\t//\n\t//\tThis is not supported if the rate limit action is configured in the ``typed_per_filter_config`` like\n\t//\t:ref:`VirtualHost.typed_per_filter_config<envoy_v3_api_field_config.route.v3.VirtualHost.typed_per_filter_config>` or\n\t//\t:ref:`Route.typed_per_filter_config<envoy_v3_api_field_config.route.v3.Route.typed_per_filter_config>`, etc.\n\tStage *wrapperspb.UInt32Value `protobuf:\"bytes,1,opt,name=stage,proto3\" json:\"stage,omitempty\"`\n\t// The key to be set in runtime to disable this rate limit configuration.\n\t//\n\t// .. note::\n\t//\n\t//\tThis is not supported if the rate limit action is configured in the ``typed_per_filter_config`` like\n\t//\t:ref:`VirtualHost.typed_per_filter_config<envoy_v3_api_field_config.route.v3.VirtualHost.typed_per_filter_config>` or\n\t//\t:ref:`Route.typed_per_filter_config<envoy_v3_api_field_config.route.v3.Route.typed_per_filter_config>`, etc.\n\tDisableKey string `protobuf:\"bytes,2,opt,name=disable_key,json=disableKey,proto3\" json:\"disable_key,omitempty\"`\n\t// A list of actions that are to be applied for this rate limit configuration.\n\t// Order matters as the actions are processed sequentially and the descriptor\n\t// is composed by appending descriptor entries in that sequence. If an action\n\t// cannot append a descriptor entry, no descriptor is generated for the\n\t// configuration. See :ref:`composing actions\n\t// <config_http_filters_rate_limit_composing_actions>` for additional documentation.\n\tActions []*RateLimit_Action `protobuf:\"bytes,3,rep,name=actions,proto3\" json:\"actions,omitempty\"`\n\t// An optional limit override to be appended to the descriptor produced by this\n\t// rate limit configuration. If the override value is invalid or cannot be resolved\n\t// from metadata, no override is provided. See :ref:`rate limit override\n\t// <config_http_filters_rate_limit_rate_limit_override>` for more information.\n\t//\n\t// .. note::\n\t//\n\t//\tThis is not supported if the rate limit action is configured in the ``typed_per_filter_config`` like\n\t//\t:ref:`VirtualHost.typed_per_filter_config<envoy_v3_api_field_config.route.v3.VirtualHost.typed_per_filter_config>` or\n\t//\t:ref:`Route.typed_per_filter_config<envoy_v3_api_field_config.route.v3.Route.typed_per_filter_config>`, etc.\n\tLimit *RateLimit_Override `protobuf:\"bytes,4,opt,name=limit,proto3\" json:\"limit,omitempty\"`\n\t// An optional hits addend to be appended to the descriptor produced by this rate limit\n\t// configuration.\n\t//\n\t// .. note::\n\t//\n\t//\tThis is only supported if the rate limit action is configured in the ``typed_per_filter_config`` like\n\t//\t:ref:`VirtualHost.typed_per_filter_config<envoy_v3_api_field_config.route.v3.VirtualHost.typed_per_filter_config>` or\n\t//\t:ref:`Route.typed_per_filter_config<envoy_v3_api_field_config.route.v3.Route.typed_per_filter_config>`, etc.\n\tHitsAddend *RateLimit_HitsAddend `protobuf:\"bytes,5,opt,name=hits_addend,json=hitsAddend,proto3\" json:\"hits_addend,omitempty\"`\n\t// If true, the rate limit request will be applied when the stream completes. The default value is false.\n\t// This is useful when the rate limit budget needs to reflect the response context that is not available\n\t// on the request path.\n\t//\n\t// For example, let's say the upstream service calculates the usage statistics and returns them in the response body\n\t// and we want to utilize these numbers to apply the rate limit action for the subsequent requests.\n\t// Combined with another filter that can set the desired addend based on the response (e.g. Lua filter),\n\t// this can be used to subtract the usage statistics from the rate limit budget.\n\t//\n\t// A rate limit applied on the stream completion is \"fire-and-forget\" by nature, and rate limit is not enforced by this config.\n\t// In other words, the current request won't be blocked when this is true, but the budget will be updated for the subsequent\n\t// requests based on the action with this field set to true. Users should ensure that the rate limit is enforced by the actions\n\t// applied on the request path, i.e. the ones with this field set to false.\n\t//\n\t// Currently, this is only supported by the HTTP global rate filter.\n\tApplyOnStreamDone bool `protobuf:\"varint,6,opt,name=apply_on_stream_done,json=applyOnStreamDone,proto3\" json:\"apply_on_stream_done,omitempty\"`\n\tunknownFields     protoimpl.UnknownFields\n\tsizeCache         protoimpl.SizeCache\n}\n\nfunc (x *RateLimit) Reset() {\n\t*x = RateLimit{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[17]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit) ProtoMessage() {}\n\nfunc (x *RateLimit) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[17]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit.ProtoReflect.Descriptor instead.\nfunc (*RateLimit) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17}\n}\n\nfunc (x *RateLimit) GetStage() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.Stage\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit) GetDisableKey() string {\n\tif x != nil {\n\t\treturn x.DisableKey\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit) GetActions() []*RateLimit_Action {\n\tif x != nil {\n\t\treturn x.Actions\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit) GetLimit() *RateLimit_Override {\n\tif x != nil {\n\t\treturn x.Limit\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit) GetHitsAddend() *RateLimit_HitsAddend {\n\tif x != nil {\n\t\treturn x.HitsAddend\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit) GetApplyOnStreamDone() bool {\n\tif x != nil {\n\t\treturn x.ApplyOnStreamDone\n\t}\n\treturn false\n}\n\n// .. attention::\n//\n//\tInternally, Envoy always uses the HTTP/2 ``:authority`` header to represent the HTTP/1 ``Host``\n//\theader. Thus, if attempting to match on ``Host``, match on ``:authority`` instead.\n//\n// .. attention::\n//\n//\tTo route on HTTP method, use the special HTTP/2 ``:method`` header. This works for both\n//\tHTTP/1 and HTTP/2 as Envoy normalizes headers. E.g.,\n//\n//\t.. code-block:: json\n//\n//\t  {\n//\t    \"name\": \":method\",\n//\t    \"string_match\": {\n//\t      \"exact\": \"POST\"\n//\t    }\n//\t  }\n//\n// .. attention::\n//\n//\t In the absence of any header match specifier, match will default to :ref:`present_match\n//\t <envoy_v3_api_field_config.route.v3.HeaderMatcher.present_match>`. i.e, a request that has the :ref:`name\n//\t <envoy_v3_api_field_config.route.v3.HeaderMatcher.name>` header will match, regardless of the header's\n//\t value.\n//\n//\t[#next-major-version: HeaderMatcher should be refactored to use StringMatcher.]\n//\n// [#next-free-field: 15]\ntype HeaderMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies the name of the header in the request.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Specifies how the header match will be performed to route the request.\n\t//\n\t// Types that are valid to be assigned to HeaderMatchSpecifier:\n\t//\n\t//\t*HeaderMatcher_ExactMatch\n\t//\t*HeaderMatcher_SafeRegexMatch\n\t//\t*HeaderMatcher_RangeMatch\n\t//\t*HeaderMatcher_PresentMatch\n\t//\t*HeaderMatcher_PrefixMatch\n\t//\t*HeaderMatcher_SuffixMatch\n\t//\t*HeaderMatcher_ContainsMatch\n\t//\t*HeaderMatcher_StringMatch\n\tHeaderMatchSpecifier isHeaderMatcher_HeaderMatchSpecifier `protobuf_oneof:\"header_match_specifier\"`\n\t// If specified, the match result will be inverted before checking.\n\t//\n\t// Defaults to “false“.\n\t//\n\t// Examples:\n\t//\n\t// * The regex “\\d{3}“ does not match the value “1234“, so it will match when inverted.\n\t// * The range [-10,0) will match the value -1, so it will not match when inverted.\n\tInvertMatch bool `protobuf:\"varint,8,opt,name=invert_match,json=invertMatch,proto3\" json:\"invert_match,omitempty\"`\n\t// If specified, for any header match rule, if the header match rule specified header\n\t// does not exist, this header value will be treated as empty.\n\t//\n\t// Defaults to “false“.\n\t//\n\t// Examples:\n\t//\n\t//   - The header match rule specified header \"header1\" to range match of [0, 10],\n\t//     :ref:`invert_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.invert_match>`\n\t//     is set to true and :ref:`treat_missing_header_as_empty <envoy_v3_api_field_config.route.v3.HeaderMatcher.treat_missing_header_as_empty>`\n\t//     is set to true; The \"header1\" header is not present. The match rule will\n\t//     treat the \"header1\" as an empty header. The empty header does not match the range,\n\t//     so it will match when inverted.\n\t//   - The header match rule specified header \"header2\" to range match of [0, 10],\n\t//     :ref:`invert_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.invert_match>`\n\t//     is set to true and :ref:`treat_missing_header_as_empty <envoy_v3_api_field_config.route.v3.HeaderMatcher.treat_missing_header_as_empty>`\n\t//     is set to false; The \"header2\" header is not present and the header\n\t//     matcher rule for \"header2\" will be ignored so it will not match.\n\t//   - The header match rule specified header \"header3\" to a string regex match\n\t//     “^$“ which means an empty string, and\n\t//     :ref:`treat_missing_header_as_empty <envoy_v3_api_field_config.route.v3.HeaderMatcher.treat_missing_header_as_empty>`\n\t//     is set to true; The \"header3\" header is not present.\n\t//     The match rule will treat the \"header3\" header as an empty header so it will match.\n\t//   - The header match rule specified header \"header4\" to a string regex match\n\t//     “^$“ which means an empty string, and\n\t//     :ref:`treat_missing_header_as_empty <envoy_v3_api_field_config.route.v3.HeaderMatcher.treat_missing_header_as_empty>`\n\t//     is set to false; The \"header4\" header is not present.\n\t//     The match rule for \"header4\" will be ignored so it will not match.\n\tTreatMissingHeaderAsEmpty bool `protobuf:\"varint,14,opt,name=treat_missing_header_as_empty,json=treatMissingHeaderAsEmpty,proto3\" json:\"treat_missing_header_as_empty,omitempty\"`\n\tunknownFields             protoimpl.UnknownFields\n\tsizeCache                 protoimpl.SizeCache\n}\n\nfunc (x *HeaderMatcher) Reset() {\n\t*x = HeaderMatcher{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[18]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HeaderMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HeaderMatcher) ProtoMessage() {}\n\nfunc (x *HeaderMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[18]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HeaderMatcher.ProtoReflect.Descriptor instead.\nfunc (*HeaderMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{18}\n}\n\nfunc (x *HeaderMatcher) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *HeaderMatcher) GetHeaderMatchSpecifier() isHeaderMatcher_HeaderMatchSpecifier {\n\tif x != nil {\n\t\treturn x.HeaderMatchSpecifier\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *HeaderMatcher) GetExactMatch() string {\n\tif x != nil {\n\t\tif x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_ExactMatch); ok {\n\t\t\treturn x.ExactMatch\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *HeaderMatcher) GetSafeRegexMatch() *v32.RegexMatcher {\n\tif x != nil {\n\t\tif x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_SafeRegexMatch); ok {\n\t\t\treturn x.SafeRegexMatch\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *HeaderMatcher) GetRangeMatch() *v33.Int64Range {\n\tif x != nil {\n\t\tif x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_RangeMatch); ok {\n\t\t\treturn x.RangeMatch\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *HeaderMatcher) GetPresentMatch() bool {\n\tif x != nil {\n\t\tif x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_PresentMatch); ok {\n\t\t\treturn x.PresentMatch\n\t\t}\n\t}\n\treturn false\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *HeaderMatcher) GetPrefixMatch() string {\n\tif x != nil {\n\t\tif x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_PrefixMatch); ok {\n\t\t\treturn x.PrefixMatch\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *HeaderMatcher) GetSuffixMatch() string {\n\tif x != nil {\n\t\tif x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_SuffixMatch); ok {\n\t\t\treturn x.SuffixMatch\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *HeaderMatcher) GetContainsMatch() string {\n\tif x != nil {\n\t\tif x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_ContainsMatch); ok {\n\t\t\treturn x.ContainsMatch\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *HeaderMatcher) GetStringMatch() *v32.StringMatcher {\n\tif x != nil {\n\t\tif x, ok := x.HeaderMatchSpecifier.(*HeaderMatcher_StringMatch); ok {\n\t\t\treturn x.StringMatch\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *HeaderMatcher) GetInvertMatch() bool {\n\tif x != nil {\n\t\treturn x.InvertMatch\n\t}\n\treturn false\n}\n\nfunc (x *HeaderMatcher) GetTreatMissingHeaderAsEmpty() bool {\n\tif x != nil {\n\t\treturn x.TreatMissingHeaderAsEmpty\n\t}\n\treturn false\n}\n\ntype isHeaderMatcher_HeaderMatchSpecifier interface {\n\tisHeaderMatcher_HeaderMatchSpecifier()\n}\n\ntype HeaderMatcher_ExactMatch struct {\n\t// If specified, header match will be performed based on the value of the header.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tExactMatch string `protobuf:\"bytes,4,opt,name=exact_match,json=exactMatch,proto3,oneof\"`\n}\n\ntype HeaderMatcher_SafeRegexMatch struct {\n\t// If specified, this regex string is a regular expression rule which implies the entire request\n\t// header value must match the regex. The rule will not match if only a subsequence of the\n\t// request header value matches the regex.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tSafeRegexMatch *v32.RegexMatcher `protobuf:\"bytes,11,opt,name=safe_regex_match,json=safeRegexMatch,proto3,oneof\"`\n}\n\ntype HeaderMatcher_RangeMatch struct {\n\t// If specified, header match will be performed based on range.\n\t// The rule will match if the request header value is within this range.\n\t// The entire request header value must represent an integer in base 10 notation: consisting of\n\t// an optional plus or minus sign followed by a sequence of digits. The rule will not match if\n\t// the header value does not represent an integer. Match will fail for empty values, floating\n\t// point numbers or if only a subsequence of the header value is an integer.\n\t//\n\t// Examples:\n\t//\n\t//   - For range [-10,0), route will match for header value -1, but not for 0, “somestring“, 10.9,\n\t//     “-1somestring“\n\tRangeMatch *v33.Int64Range `protobuf:\"bytes,6,opt,name=range_match,json=rangeMatch,proto3,oneof\"`\n}\n\ntype HeaderMatcher_PresentMatch struct {\n\t// If specified as true, header match will be performed based on whether the header is in the\n\t// request. If specified as false, header match will be performed based on whether the header is absent.\n\tPresentMatch bool `protobuf:\"varint,7,opt,name=present_match,json=presentMatch,proto3,oneof\"`\n}\n\ntype HeaderMatcher_PrefixMatch struct {\n\t// If specified, header match will be performed based on the prefix of the header value.\n\t//\n\t// .. note::\n\t//\n\t//\tEmpty prefix is not allowed. Please use ``present_match`` instead.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.\n\t//\n\t// Examples:\n\t//\n\t// * The prefix “abcd“ matches the value “abcdxyz“, but not for “abcxyz“.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tPrefixMatch string `protobuf:\"bytes,9,opt,name=prefix_match,json=prefixMatch,proto3,oneof\"`\n}\n\ntype HeaderMatcher_SuffixMatch struct {\n\t// If specified, header match will be performed based on the suffix of the header value.\n\t//\n\t// .. note::\n\t//\n\t//\tEmpty suffix is not allowed. Please use ``present_match`` instead.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.\n\t//\n\t// Examples:\n\t//\n\t// * The suffix “abcd“ matches the value “xyzabcd“, but not for “xyzbcd“.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tSuffixMatch string `protobuf:\"bytes,10,opt,name=suffix_match,json=suffixMatch,proto3,oneof\"`\n}\n\ntype HeaderMatcher_ContainsMatch struct {\n\t// If specified, header match will be performed based on whether the header value contains\n\t// the given value or not.\n\t//\n\t// .. note::\n\t//\n\t//\tEmpty contains match is not allowed. Please use ``present_match`` instead.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.\n\t//\n\t// Examples:\n\t//\n\t// * The value “abcd“ matches the value “xyzabcdpqr“, but not for “xyzbcdpqr“.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tContainsMatch string `protobuf:\"bytes,12,opt,name=contains_match,json=containsMatch,proto3,oneof\"`\n}\n\ntype HeaderMatcher_StringMatch struct {\n\t// If specified, header match will be performed based on the string match of the header value.\n\tStringMatch *v32.StringMatcher `protobuf:\"bytes,13,opt,name=string_match,json=stringMatch,proto3,oneof\"`\n}\n\nfunc (*HeaderMatcher_ExactMatch) isHeaderMatcher_HeaderMatchSpecifier() {}\n\nfunc (*HeaderMatcher_SafeRegexMatch) isHeaderMatcher_HeaderMatchSpecifier() {}\n\nfunc (*HeaderMatcher_RangeMatch) isHeaderMatcher_HeaderMatchSpecifier() {}\n\nfunc (*HeaderMatcher_PresentMatch) isHeaderMatcher_HeaderMatchSpecifier() {}\n\nfunc (*HeaderMatcher_PrefixMatch) isHeaderMatcher_HeaderMatchSpecifier() {}\n\nfunc (*HeaderMatcher_SuffixMatch) isHeaderMatcher_HeaderMatchSpecifier() {}\n\nfunc (*HeaderMatcher_ContainsMatch) isHeaderMatcher_HeaderMatchSpecifier() {}\n\nfunc (*HeaderMatcher_StringMatch) isHeaderMatcher_HeaderMatchSpecifier() {}\n\n// Query parameter matching treats the query string of a request's :path header\n// as an ampersand-separated list of keys and/or key=value elements.\n// [#next-free-field: 7]\ntype QueryParameterMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies the name of a key that must be present in the requested\n\t// “path“'s query string.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Types that are valid to be assigned to QueryParameterMatchSpecifier:\n\t//\n\t//\t*QueryParameterMatcher_StringMatch\n\t//\t*QueryParameterMatcher_PresentMatch\n\tQueryParameterMatchSpecifier isQueryParameterMatcher_QueryParameterMatchSpecifier `protobuf_oneof:\"query_parameter_match_specifier\"`\n\tunknownFields                protoimpl.UnknownFields\n\tsizeCache                    protoimpl.SizeCache\n}\n\nfunc (x *QueryParameterMatcher) Reset() {\n\t*x = QueryParameterMatcher{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[19]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *QueryParameterMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryParameterMatcher) ProtoMessage() {}\n\nfunc (x *QueryParameterMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[19]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use QueryParameterMatcher.ProtoReflect.Descriptor instead.\nfunc (*QueryParameterMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{19}\n}\n\nfunc (x *QueryParameterMatcher) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryParameterMatcher) GetQueryParameterMatchSpecifier() isQueryParameterMatcher_QueryParameterMatchSpecifier {\n\tif x != nil {\n\t\treturn x.QueryParameterMatchSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *QueryParameterMatcher) GetStringMatch() *v32.StringMatcher {\n\tif x != nil {\n\t\tif x, ok := x.QueryParameterMatchSpecifier.(*QueryParameterMatcher_StringMatch); ok {\n\t\t\treturn x.StringMatch\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *QueryParameterMatcher) GetPresentMatch() bool {\n\tif x != nil {\n\t\tif x, ok := x.QueryParameterMatchSpecifier.(*QueryParameterMatcher_PresentMatch); ok {\n\t\t\treturn x.PresentMatch\n\t\t}\n\t}\n\treturn false\n}\n\ntype isQueryParameterMatcher_QueryParameterMatchSpecifier interface {\n\tisQueryParameterMatcher_QueryParameterMatchSpecifier()\n}\n\ntype QueryParameterMatcher_StringMatch struct {\n\t// Specifies whether a query parameter value should match against a string.\n\tStringMatch *v32.StringMatcher `protobuf:\"bytes,5,opt,name=string_match,json=stringMatch,proto3,oneof\"`\n}\n\ntype QueryParameterMatcher_PresentMatch struct {\n\t// Specifies whether a query parameter should be present.\n\tPresentMatch bool `protobuf:\"varint,6,opt,name=present_match,json=presentMatch,proto3,oneof\"`\n}\n\nfunc (*QueryParameterMatcher_StringMatch) isQueryParameterMatcher_QueryParameterMatchSpecifier() {}\n\nfunc (*QueryParameterMatcher_PresentMatch) isQueryParameterMatcher_QueryParameterMatchSpecifier() {}\n\n// Cookie matching inspects individual name/value pairs parsed from the “Cookie“ header.\ntype CookieMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies the cookie name to evaluate.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Match the cookie value using :ref:`StringMatcher\n\t// <envoy_v3_api_msg_type.matcher.v3.StringMatcher>` semantics.\n\tStringMatch *v32.StringMatcher `protobuf:\"bytes,2,opt,name=string_match,json=stringMatch,proto3\" json:\"string_match,omitempty\"`\n\t// Invert the match result. If the cookie is not present, the match result is false, so\n\t// “invert_match“ will cause the matcher to succeed when the cookie is absent.\n\tInvertMatch   bool `protobuf:\"varint,3,opt,name=invert_match,json=invertMatch,proto3\" json:\"invert_match,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *CookieMatcher) Reset() {\n\t*x = CookieMatcher{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[20]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CookieMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CookieMatcher) ProtoMessage() {}\n\nfunc (x *CookieMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[20]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CookieMatcher.ProtoReflect.Descriptor instead.\nfunc (*CookieMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{20}\n}\n\nfunc (x *CookieMatcher) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *CookieMatcher) GetStringMatch() *v32.StringMatcher {\n\tif x != nil {\n\t\treturn x.StringMatch\n\t}\n\treturn nil\n}\n\nfunc (x *CookieMatcher) GetInvertMatch() bool {\n\tif x != nil {\n\t\treturn x.InvertMatch\n\t}\n\treturn false\n}\n\n// HTTP Internal Redirect :ref:`architecture overview <arch_overview_internal_redirects>`.\n// [#next-free-field: 6]\ntype InternalRedirectPolicy struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// An internal redirect is not handled, unless the number of previous internal redirects that a\n\t// downstream request has encountered is lower than this value.\n\t// In the case where a downstream request is bounced among multiple routes by internal redirect,\n\t// the first route that hits this threshold, or does not set :ref:`internal_redirect_policy\n\t// <envoy_v3_api_field_config.route.v3.RouteAction.internal_redirect_policy>`\n\t// will pass the redirect back to downstream.\n\t//\n\t// If not specified, at most one redirect will be followed.\n\tMaxInternalRedirects *wrapperspb.UInt32Value `protobuf:\"bytes,1,opt,name=max_internal_redirects,json=maxInternalRedirects,proto3\" json:\"max_internal_redirects,omitempty\"`\n\t// Defines what upstream response codes are allowed to trigger internal redirect. If unspecified,\n\t// only 302 will be treated as internal redirect.\n\t// Only 301, 302, 303, 307 and 308 are valid values. Any other codes will be ignored.\n\tRedirectResponseCodes []uint32 `protobuf:\"varint,2,rep,packed,name=redirect_response_codes,json=redirectResponseCodes,proto3\" json:\"redirect_response_codes,omitempty\"`\n\t// Specifies a list of predicates that are queried when an upstream response is deemed\n\t// to trigger an internal redirect by all other criteria. Any predicate in the list can reject\n\t// the redirect, causing the response to be proxied to downstream.\n\t// [#extension-category: envoy.internal_redirect_predicates]\n\tPredicates []*v31.TypedExtensionConfig `protobuf:\"bytes,3,rep,name=predicates,proto3\" json:\"predicates,omitempty\"`\n\t// Allow internal redirect to follow a target URI with a different scheme than the value of\n\t// x-forwarded-proto. The default is “false“.\n\tAllowCrossSchemeRedirect bool `protobuf:\"varint,4,opt,name=allow_cross_scheme_redirect,json=allowCrossSchemeRedirect,proto3\" json:\"allow_cross_scheme_redirect,omitempty\"`\n\t// Specifies a list of headers, by name, to copy from the internal redirect into the subsequent\n\t// request. If a header is specified here but not present in the redirect, it will be cleared in\n\t// the subsequent request.\n\tResponseHeadersToCopy []string `protobuf:\"bytes,5,rep,name=response_headers_to_copy,json=responseHeadersToCopy,proto3\" json:\"response_headers_to_copy,omitempty\"`\n\tunknownFields         protoimpl.UnknownFields\n\tsizeCache             protoimpl.SizeCache\n}\n\nfunc (x *InternalRedirectPolicy) Reset() {\n\t*x = InternalRedirectPolicy{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[21]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *InternalRedirectPolicy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*InternalRedirectPolicy) ProtoMessage() {}\n\nfunc (x *InternalRedirectPolicy) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[21]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use InternalRedirectPolicy.ProtoReflect.Descriptor instead.\nfunc (*InternalRedirectPolicy) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{21}\n}\n\nfunc (x *InternalRedirectPolicy) GetMaxInternalRedirects() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxInternalRedirects\n\t}\n\treturn nil\n}\n\nfunc (x *InternalRedirectPolicy) GetRedirectResponseCodes() []uint32 {\n\tif x != nil {\n\t\treturn x.RedirectResponseCodes\n\t}\n\treturn nil\n}\n\nfunc (x *InternalRedirectPolicy) GetPredicates() []*v31.TypedExtensionConfig {\n\tif x != nil {\n\t\treturn x.Predicates\n\t}\n\treturn nil\n}\n\nfunc (x *InternalRedirectPolicy) GetAllowCrossSchemeRedirect() bool {\n\tif x != nil {\n\t\treturn x.AllowCrossSchemeRedirect\n\t}\n\treturn false\n}\n\nfunc (x *InternalRedirectPolicy) GetResponseHeadersToCopy() []string {\n\tif x != nil {\n\t\treturn x.ResponseHeadersToCopy\n\t}\n\treturn nil\n}\n\n// A simple wrapper for an HTTP filter config. This is intended to be used as a wrapper for the\n// map value in\n// :ref:`VirtualHost.typed_per_filter_config<envoy_v3_api_field_config.route.v3.VirtualHost.typed_per_filter_config>`,\n// :ref:`Route.typed_per_filter_config<envoy_v3_api_field_config.route.v3.Route.typed_per_filter_config>`,\n// or :ref:`WeightedCluster.ClusterWeight.typed_per_filter_config<envoy_v3_api_field_config.route.v3.WeightedCluster.ClusterWeight.typed_per_filter_config>`\n// to add additional flags to the filter.\ntype FilterConfig struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The filter config.\n\tConfig *anypb.Any `protobuf:\"bytes,1,opt,name=config,proto3\" json:\"config,omitempty\"`\n\t// If true, the filter is optional, meaning that if the client does\n\t// not support the specified filter, it may ignore the map entry rather\n\t// than rejecting the config.\n\tIsOptional bool `protobuf:\"varint,2,opt,name=is_optional,json=isOptional,proto3\" json:\"is_optional,omitempty\"`\n\t// If true, the filter is disabled in the route or virtual host and the “config“ field is ignored.\n\t// See :ref:`route based filter chain <arch_overview_http_filters_route_based_filter_chain>`\n\t// for more details.\n\t//\n\t// .. note::\n\t//\n\t//\tThis field will take effect when the request arrive and filter chain is created for the request.\n\t//\tIf initial route is selected for the request and a filter is disabled in the initial route, then\n\t//\tthe filter will not be added to the filter chain.\n\t//\tAnd if the request is mutated later and re-match to another route, the disabled filter by the\n\t//\tinitial route will not be added back to the filter chain because the filter chain is already\n\t//\tcreated and it is too late to change the chain.\n\tDisabled      bool `protobuf:\"varint,3,opt,name=disabled,proto3\" json:\"disabled,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *FilterConfig) Reset() {\n\t*x = FilterConfig{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[22]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FilterConfig) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FilterConfig) ProtoMessage() {}\n\nfunc (x *FilterConfig) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[22]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FilterConfig.ProtoReflect.Descriptor instead.\nfunc (*FilterConfig) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{22}\n}\n\nfunc (x *FilterConfig) GetConfig() *anypb.Any {\n\tif x != nil {\n\t\treturn x.Config\n\t}\n\treturn nil\n}\n\nfunc (x *FilterConfig) GetIsOptional() bool {\n\tif x != nil {\n\t\treturn x.IsOptional\n\t}\n\treturn false\n}\n\nfunc (x *FilterConfig) GetDisabled() bool {\n\tif x != nil {\n\t\treturn x.Disabled\n\t}\n\treturn false\n}\n\n// [#next-free-field: 13]\ntype WeightedCluster_ClusterWeight struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Only one of “name“ and “cluster_header“ may be specified.\n\t// [#next-major-version: Need to add back the validation rule: (validate.rules).string = {min_len: 1}]\n\t// Name of the upstream cluster. The cluster must exist in the\n\t// :ref:`cluster manager configuration <config_cluster_manager>`.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Only one of “name“ and “cluster_header“ may be specified.\n\t// [#next-major-version: Need to add back the validation rule: (validate.rules).string = {min_len: 1 }]\n\t// Envoy will determine the cluster to route to by reading the value of the\n\t// HTTP header named by cluster_header from the request headers. If the\n\t// header is not found or the referenced cluster does not exist, Envoy will\n\t// return a 404 response.\n\t//\n\t// .. attention::\n\t//\n\t//\tInternally, Envoy always uses the HTTP/2 ``:authority`` header to represent the HTTP/1\n\t//\t``Host`` header. Thus, if attempting to match on ``Host``, match on ``:authority`` instead.\n\t//\n\t// .. note::\n\t//\n\t//\tIf the header appears multiple times only the first value is used.\n\tClusterHeader string `protobuf:\"bytes,12,opt,name=cluster_header,json=clusterHeader,proto3\" json:\"cluster_header,omitempty\"`\n\t// The weight of the cluster. This value is relative to the other clusters'\n\t// weights. When a request matches the route, the choice of an upstream cluster\n\t// is determined by its weight. The sum of weights across all\n\t// entries in the clusters array must be greater than 0, and must not exceed\n\t// uint32_t maximal value (4294967295).\n\tWeight *wrapperspb.UInt32Value `protobuf:\"bytes,2,opt,name=weight,proto3\" json:\"weight,omitempty\"`\n\t// Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints in\n\t// the upstream cluster with metadata matching what is set in this field will be considered for\n\t// load balancing. Note that this will be merged with what's provided in\n\t// :ref:`RouteAction.metadata_match <envoy_v3_api_field_config.route.v3.RouteAction.metadata_match>`, with\n\t// values here taking precedence. The filter name should be specified as “envoy.lb“.\n\tMetadataMatch *v31.Metadata `protobuf:\"bytes,3,opt,name=metadata_match,json=metadataMatch,proto3\" json:\"metadata_match,omitempty\"`\n\t// Specifies a list of headers to be added to requests when this cluster is selected\n\t// through the enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`.\n\t// Headers specified at this level are applied before headers from the enclosing\n\t// :ref:`envoy_v3_api_msg_config.route.v3.Route`, :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost`, and\n\t// :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including details on\n\t// header value syntax, see the documentation on :ref:`custom request headers\n\t// <config_http_conn_man_headers_custom_request_headers>`.\n\tRequestHeadersToAdd []*v31.HeaderValueOption `protobuf:\"bytes,4,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3\" json:\"request_headers_to_add,omitempty\"`\n\t// Specifies a list of HTTP headers that should be removed from each request when\n\t// this cluster is selected through the enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`.\n\tRequestHeadersToRemove []string `protobuf:\"bytes,9,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3\" json:\"request_headers_to_remove,omitempty\"`\n\t// Specifies a list of headers to be added to responses when this cluster is selected\n\t// through the enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`.\n\t// Headers specified at this level are applied before headers from the enclosing\n\t// :ref:`envoy_v3_api_msg_config.route.v3.Route`, :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost`, and\n\t// :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including details on\n\t// header value syntax, see the documentation on :ref:`custom request headers\n\t// <config_http_conn_man_headers_custom_request_headers>`.\n\tResponseHeadersToAdd []*v31.HeaderValueOption `protobuf:\"bytes,5,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3\" json:\"response_headers_to_add,omitempty\"`\n\t// Specifies a list of headers to be removed from responses when this cluster is selected\n\t// through the enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`.\n\tResponseHeadersToRemove []string `protobuf:\"bytes,6,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3\" json:\"response_headers_to_remove,omitempty\"`\n\t// This field can be used to provide weighted cluster specific per filter config. The key should match the\n\t// :ref:`filter config name\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpFilter.name>`.\n\t// See :ref:`HTTP filter route-specific config <arch_overview_http_filters_per_filter_config>`\n\t// for details.\n\t// [#comment: An entry's value may be wrapped in a\n\t// :ref:`FilterConfig<envoy_v3_api_msg_config.route.v3.FilterConfig>`\n\t// message to specify additional options.]\n\tTypedPerFilterConfig map[string]*anypb.Any `protobuf:\"bytes,10,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3\" json:\"typed_per_filter_config,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\t// Types that are valid to be assigned to HostRewriteSpecifier:\n\t//\n\t//\t*WeightedCluster_ClusterWeight_HostRewriteLiteral\n\tHostRewriteSpecifier isWeightedCluster_ClusterWeight_HostRewriteSpecifier `protobuf_oneof:\"host_rewrite_specifier\"`\n\tunknownFields        protoimpl.UnknownFields\n\tsizeCache            protoimpl.SizeCache\n}\n\nfunc (x *WeightedCluster_ClusterWeight) Reset() {\n\t*x = WeightedCluster_ClusterWeight{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[25]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *WeightedCluster_ClusterWeight) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*WeightedCluster_ClusterWeight) ProtoMessage() {}\n\nfunc (x *WeightedCluster_ClusterWeight) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[25]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use WeightedCluster_ClusterWeight.ProtoReflect.Descriptor instead.\nfunc (*WeightedCluster_ClusterWeight) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{4, 0}\n}\n\nfunc (x *WeightedCluster_ClusterWeight) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *WeightedCluster_ClusterWeight) GetClusterHeader() string {\n\tif x != nil {\n\t\treturn x.ClusterHeader\n\t}\n\treturn \"\"\n}\n\nfunc (x *WeightedCluster_ClusterWeight) GetWeight() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.Weight\n\t}\n\treturn nil\n}\n\nfunc (x *WeightedCluster_ClusterWeight) GetMetadataMatch() *v31.Metadata {\n\tif x != nil {\n\t\treturn x.MetadataMatch\n\t}\n\treturn nil\n}\n\nfunc (x *WeightedCluster_ClusterWeight) GetRequestHeadersToAdd() []*v31.HeaderValueOption {\n\tif x != nil {\n\t\treturn x.RequestHeadersToAdd\n\t}\n\treturn nil\n}\n\nfunc (x *WeightedCluster_ClusterWeight) GetRequestHeadersToRemove() []string {\n\tif x != nil {\n\t\treturn x.RequestHeadersToRemove\n\t}\n\treturn nil\n}\n\nfunc (x *WeightedCluster_ClusterWeight) GetResponseHeadersToAdd() []*v31.HeaderValueOption {\n\tif x != nil {\n\t\treturn x.ResponseHeadersToAdd\n\t}\n\treturn nil\n}\n\nfunc (x *WeightedCluster_ClusterWeight) GetResponseHeadersToRemove() []string {\n\tif x != nil {\n\t\treturn x.ResponseHeadersToRemove\n\t}\n\treturn nil\n}\n\nfunc (x *WeightedCluster_ClusterWeight) GetTypedPerFilterConfig() map[string]*anypb.Any {\n\tif x != nil {\n\t\treturn x.TypedPerFilterConfig\n\t}\n\treturn nil\n}\n\nfunc (x *WeightedCluster_ClusterWeight) GetHostRewriteSpecifier() isWeightedCluster_ClusterWeight_HostRewriteSpecifier {\n\tif x != nil {\n\t\treturn x.HostRewriteSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *WeightedCluster_ClusterWeight) GetHostRewriteLiteral() string {\n\tif x != nil {\n\t\tif x, ok := x.HostRewriteSpecifier.(*WeightedCluster_ClusterWeight_HostRewriteLiteral); ok {\n\t\t\treturn x.HostRewriteLiteral\n\t\t}\n\t}\n\treturn \"\"\n}\n\ntype isWeightedCluster_ClusterWeight_HostRewriteSpecifier interface {\n\tisWeightedCluster_ClusterWeight_HostRewriteSpecifier()\n}\n\ntype WeightedCluster_ClusterWeight_HostRewriteLiteral struct {\n\t// Indicates that during forwarding, the host header will be swapped with\n\t// this value.\n\tHostRewriteLiteral string `protobuf:\"bytes,11,opt,name=host_rewrite_literal,json=hostRewriteLiteral,proto3,oneof\"`\n}\n\nfunc (*WeightedCluster_ClusterWeight_HostRewriteLiteral) isWeightedCluster_ClusterWeight_HostRewriteSpecifier() {\n}\n\ntype RouteMatch_GrpcRouteMatchOptions struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteMatch_GrpcRouteMatchOptions) Reset() {\n\t*x = RouteMatch_GrpcRouteMatchOptions{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[27]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteMatch_GrpcRouteMatchOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteMatch_GrpcRouteMatchOptions) ProtoMessage() {}\n\nfunc (x *RouteMatch_GrpcRouteMatchOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[27]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteMatch_GrpcRouteMatchOptions.ProtoReflect.Descriptor instead.\nfunc (*RouteMatch_GrpcRouteMatchOptions) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 0}\n}\n\ntype RouteMatch_TlsContextMatchOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// If specified, the route will match against whether or not a certificate is presented.\n\t// If not specified, certificate presentation status (true or false) will not be considered when route matching.\n\tPresented *wrapperspb.BoolValue `protobuf:\"bytes,1,opt,name=presented,proto3\" json:\"presented,omitempty\"`\n\t// If specified, the route will match against whether or not a certificate is validated.\n\t// If not specified, certificate validation status (true or false) will not be considered when route matching.\n\t//\n\t// .. warning::\n\t//\n\t//\tClient certificate validation is not currently performed upon TLS session resumption. For\n\t//\ta resumed TLS session the route will match only when ``validated`` is false, regardless of\n\t//\twhether the client TLS certificate is valid.\n\t//\n\t//\tThe only known workaround for this issue is to disable TLS session resumption entirely, by\n\t//\tsetting both :ref:`disable_stateless_session_resumption <envoy_v3_api_field_extensions.transport_sockets.tls.v3.DownstreamTlsContext.disable_stateless_session_resumption>`\n\t//\tand :ref:`disable_stateful_session_resumption <envoy_v3_api_field_extensions.transport_sockets.tls.v3.DownstreamTlsContext.disable_stateful_session_resumption>` on the DownstreamTlsContext.\n\tValidated     *wrapperspb.BoolValue `protobuf:\"bytes,2,opt,name=validated,proto3\" json:\"validated,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteMatch_TlsContextMatchOptions) Reset() {\n\t*x = RouteMatch_TlsContextMatchOptions{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[28]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteMatch_TlsContextMatchOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteMatch_TlsContextMatchOptions) ProtoMessage() {}\n\nfunc (x *RouteMatch_TlsContextMatchOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[28]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteMatch_TlsContextMatchOptions.ProtoReflect.Descriptor instead.\nfunc (*RouteMatch_TlsContextMatchOptions) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 1}\n}\n\nfunc (x *RouteMatch_TlsContextMatchOptions) GetPresented() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.Presented\n\t}\n\treturn nil\n}\n\nfunc (x *RouteMatch_TlsContextMatchOptions) GetValidated() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.Validated\n\t}\n\treturn nil\n}\n\n// An extensible message for matching CONNECT or CONNECT-UDP requests.\ntype RouteMatch_ConnectMatcher struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteMatch_ConnectMatcher) Reset() {\n\t*x = RouteMatch_ConnectMatcher{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[29]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteMatch_ConnectMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteMatch_ConnectMatcher) ProtoMessage() {}\n\nfunc (x *RouteMatch_ConnectMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[29]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteMatch_ConnectMatcher.ProtoReflect.Descriptor instead.\nfunc (*RouteMatch_ConnectMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 2}\n}\n\n// The router is capable of shadowing traffic from one cluster to another. The current\n// implementation is \"fire and forget,\" meaning Envoy will not wait for the shadow cluster to\n// respond before returning the response from the primary cluster. All normal statistics are\n// collected for the shadow cluster making this feature useful for testing.\n//\n// During shadowing, the host/authority header is altered such that “-shadow“ is appended. This is\n// useful for logging. For example, “cluster1“ becomes “cluster1-shadow“. This behavior can be\n// disabled by setting “disable_shadow_host_suffix_append“ to “true“.\n//\n// .. note::\n//\n//\tShadowing will not be triggered if the primary cluster does not exist.\n//\n// .. note::\n//\n//\tShadowing doesn't support HTTP CONNECT and upgrades.\n//\n// [#next-free-field: 9]\ntype RouteAction_RequestMirrorPolicy struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Only one of “cluster“ and “cluster_header“ can be specified.\n\t// [#next-major-version: Need to add back the validation rule: (validate.rules).string = {min_len: 1}]\n\t// Specifies the cluster that requests will be mirrored to. The cluster must\n\t// exist in the cluster manager configuration.\n\tCluster string `protobuf:\"bytes,1,opt,name=cluster,proto3\" json:\"cluster,omitempty\"`\n\t// Only one of “cluster“ and “cluster_header“ can be specified.\n\t// Envoy will determine the cluster to route to by reading the value of the\n\t// HTTP header named by cluster_header from the request headers. Only the first value in header is used,\n\t// and no shadow request will happen if the value is not found in headers. Envoy will not wait for\n\t// the shadow cluster to respond before returning the response from the primary cluster.\n\t//\n\t// .. attention::\n\t//\n\t//\tInternally, Envoy always uses the HTTP/2 ``:authority`` header to represent the HTTP/1\n\t//\t``Host`` header. Thus, if attempting to match on ``Host``, match on ``:authority`` instead.\n\t//\n\t// .. note::\n\t//\n\t//\tIf the header appears multiple times only the first value is used.\n\tClusterHeader string `protobuf:\"bytes,5,opt,name=cluster_header,json=clusterHeader,proto3\" json:\"cluster_header,omitempty\"`\n\t// If not specified, all requests to the target cluster will be mirrored.\n\t//\n\t// If specified, this field takes precedence over the “runtime_key“ field and requests must also\n\t// fall under the percentage of matches indicated by this field.\n\t//\n\t// For some fraction N/D, a random number in the range [0,D) is selected. If the\n\t// number is <= the value of the numerator N, or if the key is not present, the default\n\t// value, the request will be mirrored.\n\tRuntimeFraction *v31.RuntimeFractionalPercent `protobuf:\"bytes,3,opt,name=runtime_fraction,json=runtimeFraction,proto3\" json:\"runtime_fraction,omitempty\"`\n\t// Specifies whether the trace span for the shadow request should be sampled. If this field is not explicitly set,\n\t// the shadow request will inherit the sampling decision of its parent span. This ensures consistency with the trace\n\t// sampling policy of the original request and prevents oversampling, especially in scenarios where runtime sampling\n\t// is disabled.\n\tTraceSampled *wrapperspb.BoolValue `protobuf:\"bytes,4,opt,name=trace_sampled,json=traceSampled,proto3\" json:\"trace_sampled,omitempty\"`\n\t// Disables appending the “-shadow“ suffix to the shadowed “Host“ header.\n\t//\n\t// Defaults to “false“.\n\tDisableShadowHostSuffixAppend bool `protobuf:\"varint,6,opt,name=disable_shadow_host_suffix_append,json=disableShadowHostSuffixAppend,proto3\" json:\"disable_shadow_host_suffix_append,omitempty\"`\n\t// Specifies a list of header mutations that should be applied to each mirrored request.\n\t// Header mutations are applied in the order they are specified. For more information, including\n\t// details on header value syntax, see the documentation on :ref:`custom request headers\n\t// <config_http_conn_man_headers_custom_request_headers>`.\n\tRequestHeadersMutations []*v35.HeaderMutation `protobuf:\"bytes,7,rep,name=request_headers_mutations,json=requestHeadersMutations,proto3\" json:\"request_headers_mutations,omitempty\"`\n\t// Indicates that during mirroring, the host header will be swapped with this value.\n\t// :ref:`disable_shadow_host_suffix_append\n\t// <envoy_v3_api_field_config.route.v3.RouteAction.RequestMirrorPolicy.disable_shadow_host_suffix_append>`\n\t// is implicitly enabled if this field is set.\n\tHostRewriteLiteral string `protobuf:\"bytes,8,opt,name=host_rewrite_literal,json=hostRewriteLiteral,proto3\" json:\"host_rewrite_literal,omitempty\"`\n\tunknownFields      protoimpl.UnknownFields\n\tsizeCache          protoimpl.SizeCache\n}\n\nfunc (x *RouteAction_RequestMirrorPolicy) Reset() {\n\t*x = RouteAction_RequestMirrorPolicy{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[30]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteAction_RequestMirrorPolicy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteAction_RequestMirrorPolicy) ProtoMessage() {}\n\nfunc (x *RouteAction_RequestMirrorPolicy) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[30]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteAction_RequestMirrorPolicy.ProtoReflect.Descriptor instead.\nfunc (*RouteAction_RequestMirrorPolicy) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8, 0}\n}\n\nfunc (x *RouteAction_RequestMirrorPolicy) GetCluster() string {\n\tif x != nil {\n\t\treturn x.Cluster\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction_RequestMirrorPolicy) GetClusterHeader() string {\n\tif x != nil {\n\t\treturn x.ClusterHeader\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction_RequestMirrorPolicy) GetRuntimeFraction() *v31.RuntimeFractionalPercent {\n\tif x != nil {\n\t\treturn x.RuntimeFraction\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction_RequestMirrorPolicy) GetTraceSampled() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.TraceSampled\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction_RequestMirrorPolicy) GetDisableShadowHostSuffixAppend() bool {\n\tif x != nil {\n\t\treturn x.DisableShadowHostSuffixAppend\n\t}\n\treturn false\n}\n\nfunc (x *RouteAction_RequestMirrorPolicy) GetRequestHeadersMutations() []*v35.HeaderMutation {\n\tif x != nil {\n\t\treturn x.RequestHeadersMutations\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction_RequestMirrorPolicy) GetHostRewriteLiteral() string {\n\tif x != nil {\n\t\treturn x.HostRewriteLiteral\n\t}\n\treturn \"\"\n}\n\n// Specifies the route's hashing policy if the upstream cluster uses a hashing :ref:`load balancer\n// <arch_overview_load_balancing_types>`.\n// [#next-free-field: 7]\ntype RouteAction_HashPolicy struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to PolicySpecifier:\n\t//\n\t//\t*RouteAction_HashPolicy_Header_\n\t//\t*RouteAction_HashPolicy_Cookie_\n\t//\t*RouteAction_HashPolicy_ConnectionProperties_\n\t//\t*RouteAction_HashPolicy_QueryParameter_\n\t//\t*RouteAction_HashPolicy_FilterState_\n\tPolicySpecifier isRouteAction_HashPolicy_PolicySpecifier `protobuf_oneof:\"policy_specifier\"`\n\t// The flag that short-circuits the hash computing. This field provides a\n\t// 'fallback' style of configuration: \"if a terminal policy doesn't work,\n\t// fallback to rest of the policy list\", it saves time when the terminal\n\t// policy works.\n\t//\n\t// If true, and there is already a hash computed, ignore rest of the\n\t// list of hash polices.\n\t// For example, if the following hash methods are configured:\n\t//\n\t//\t========= ========\n\t//\tspecifier terminal\n\t//\t========= ========\n\t//\tHeader A  true\n\t//\tHeader B  false\n\t//\tHeader C  false\n\t//\t========= ========\n\t//\n\t// The generateHash process ends if policy \"header A\" generates a hash, as\n\t// it's a terminal policy.\n\tTerminal      bool `protobuf:\"varint,4,opt,name=terminal,proto3\" json:\"terminal,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteAction_HashPolicy) Reset() {\n\t*x = RouteAction_HashPolicy{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[31]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteAction_HashPolicy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteAction_HashPolicy) ProtoMessage() {}\n\nfunc (x *RouteAction_HashPolicy) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[31]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteAction_HashPolicy.ProtoReflect.Descriptor instead.\nfunc (*RouteAction_HashPolicy) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8, 1}\n}\n\nfunc (x *RouteAction_HashPolicy) GetPolicySpecifier() isRouteAction_HashPolicy_PolicySpecifier {\n\tif x != nil {\n\t\treturn x.PolicySpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction_HashPolicy) GetHeader() *RouteAction_HashPolicy_Header {\n\tif x != nil {\n\t\tif x, ok := x.PolicySpecifier.(*RouteAction_HashPolicy_Header_); ok {\n\t\t\treturn x.Header\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction_HashPolicy) GetCookie() *RouteAction_HashPolicy_Cookie {\n\tif x != nil {\n\t\tif x, ok := x.PolicySpecifier.(*RouteAction_HashPolicy_Cookie_); ok {\n\t\t\treturn x.Cookie\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction_HashPolicy) GetConnectionProperties() *RouteAction_HashPolicy_ConnectionProperties {\n\tif x != nil {\n\t\tif x, ok := x.PolicySpecifier.(*RouteAction_HashPolicy_ConnectionProperties_); ok {\n\t\t\treturn x.ConnectionProperties\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction_HashPolicy) GetQueryParameter() *RouteAction_HashPolicy_QueryParameter {\n\tif x != nil {\n\t\tif x, ok := x.PolicySpecifier.(*RouteAction_HashPolicy_QueryParameter_); ok {\n\t\t\treturn x.QueryParameter\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction_HashPolicy) GetFilterState() *RouteAction_HashPolicy_FilterState {\n\tif x != nil {\n\t\tif x, ok := x.PolicySpecifier.(*RouteAction_HashPolicy_FilterState_); ok {\n\t\t\treturn x.FilterState\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction_HashPolicy) GetTerminal() bool {\n\tif x != nil {\n\t\treturn x.Terminal\n\t}\n\treturn false\n}\n\ntype isRouteAction_HashPolicy_PolicySpecifier interface {\n\tisRouteAction_HashPolicy_PolicySpecifier()\n}\n\ntype RouteAction_HashPolicy_Header_ struct {\n\t// Header hash policy.\n\tHeader *RouteAction_HashPolicy_Header `protobuf:\"bytes,1,opt,name=header,proto3,oneof\"`\n}\n\ntype RouteAction_HashPolicy_Cookie_ struct {\n\t// Cookie hash policy.\n\tCookie *RouteAction_HashPolicy_Cookie `protobuf:\"bytes,2,opt,name=cookie,proto3,oneof\"`\n}\n\ntype RouteAction_HashPolicy_ConnectionProperties_ struct {\n\t// Connection properties hash policy.\n\tConnectionProperties *RouteAction_HashPolicy_ConnectionProperties `protobuf:\"bytes,3,opt,name=connection_properties,json=connectionProperties,proto3,oneof\"`\n}\n\ntype RouteAction_HashPolicy_QueryParameter_ struct {\n\t// Query parameter hash policy.\n\tQueryParameter *RouteAction_HashPolicy_QueryParameter `protobuf:\"bytes,5,opt,name=query_parameter,json=queryParameter,proto3,oneof\"`\n}\n\ntype RouteAction_HashPolicy_FilterState_ struct {\n\t// Filter state hash policy.\n\tFilterState *RouteAction_HashPolicy_FilterState `protobuf:\"bytes,6,opt,name=filter_state,json=filterState,proto3,oneof\"`\n}\n\nfunc (*RouteAction_HashPolicy_Header_) isRouteAction_HashPolicy_PolicySpecifier() {}\n\nfunc (*RouteAction_HashPolicy_Cookie_) isRouteAction_HashPolicy_PolicySpecifier() {}\n\nfunc (*RouteAction_HashPolicy_ConnectionProperties_) isRouteAction_HashPolicy_PolicySpecifier() {}\n\nfunc (*RouteAction_HashPolicy_QueryParameter_) isRouteAction_HashPolicy_PolicySpecifier() {}\n\nfunc (*RouteAction_HashPolicy_FilterState_) isRouteAction_HashPolicy_PolicySpecifier() {}\n\n// Allows enabling and disabling upgrades on a per-route basis.\n// This overrides any enabled/disabled upgrade filter chain specified in the\n// HttpConnectionManager\n// :ref:`upgrade_configs\n// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.upgrade_configs>`\n// but does not affect any custom filter chain specified there.\ntype RouteAction_UpgradeConfig struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The case-insensitive name of this upgrade, for example, \"websocket\".\n\t// For each upgrade type present in upgrade_configs, requests with\n\t// Upgrade: [upgrade_type] will be proxied upstream.\n\tUpgradeType string `protobuf:\"bytes,1,opt,name=upgrade_type,json=upgradeType,proto3\" json:\"upgrade_type,omitempty\"`\n\t// Determines if upgrades are available on this route.\n\t//\n\t// Defaults to “true“.\n\tEnabled *wrapperspb.BoolValue `protobuf:\"bytes,2,opt,name=enabled,proto3\" json:\"enabled,omitempty\"`\n\t// Configuration for sending data upstream as a raw data payload. This is used for\n\t// CONNECT requests, when forwarding CONNECT payload as raw TCP.\n\t// Note that CONNECT support is currently considered alpha in Envoy.\n\t// [#comment: TODO(htuch): Replace the above comment with an alpha tag.]\n\tConnectConfig *RouteAction_UpgradeConfig_ConnectConfig `protobuf:\"bytes,3,opt,name=connect_config,json=connectConfig,proto3\" json:\"connect_config,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteAction_UpgradeConfig) Reset() {\n\t*x = RouteAction_UpgradeConfig{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[32]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteAction_UpgradeConfig) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteAction_UpgradeConfig) ProtoMessage() {}\n\nfunc (x *RouteAction_UpgradeConfig) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[32]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteAction_UpgradeConfig.ProtoReflect.Descriptor instead.\nfunc (*RouteAction_UpgradeConfig) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8, 2}\n}\n\nfunc (x *RouteAction_UpgradeConfig) GetUpgradeType() string {\n\tif x != nil {\n\t\treturn x.UpgradeType\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction_UpgradeConfig) GetEnabled() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.Enabled\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction_UpgradeConfig) GetConnectConfig() *RouteAction_UpgradeConfig_ConnectConfig {\n\tif x != nil {\n\t\treturn x.ConnectConfig\n\t}\n\treturn nil\n}\n\ntype RouteAction_MaxStreamDuration struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies the maximum duration allowed for streams on the route. If not specified, the value\n\t// from the :ref:`max_stream_duration\n\t// <envoy_v3_api_field_config.core.v3.HttpProtocolOptions.max_stream_duration>` field in\n\t// :ref:`HttpConnectionManager.common_http_protocol_options\n\t// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.common_http_protocol_options>`\n\t// is used. If this field is set explicitly to zero, any\n\t// HttpConnectionManager max_stream_duration timeout will be disabled for\n\t// this route.\n\tMaxStreamDuration *durationpb.Duration `protobuf:\"bytes,1,opt,name=max_stream_duration,json=maxStreamDuration,proto3\" json:\"max_stream_duration,omitempty\"`\n\t// If present, and the request contains a `grpc-timeout header\n\t// <https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md>`_, use that value as the\n\t// “max_stream_duration“, but limit the applied timeout to the maximum value specified here.\n\t// If set to 0, the “grpc-timeout“ header is used without modification.\n\tGrpcTimeoutHeaderMax *durationpb.Duration `protobuf:\"bytes,2,opt,name=grpc_timeout_header_max,json=grpcTimeoutHeaderMax,proto3\" json:\"grpc_timeout_header_max,omitempty\"`\n\t// If present, Envoy will adjust the timeout provided by the “grpc-timeout“ header by\n\t// subtracting the provided duration from the header. This is useful for allowing Envoy to set\n\t// its global timeout to be less than that of the deadline imposed by the calling client, which\n\t// makes it more likely that Envoy will handle the timeout instead of having the call canceled\n\t// by the client. If, after applying the offset, the resulting timeout is zero or negative,\n\t// the stream will timeout immediately.\n\tGrpcTimeoutHeaderOffset *durationpb.Duration `protobuf:\"bytes,3,opt,name=grpc_timeout_header_offset,json=grpcTimeoutHeaderOffset,proto3\" json:\"grpc_timeout_header_offset,omitempty\"`\n\tunknownFields           protoimpl.UnknownFields\n\tsizeCache               protoimpl.SizeCache\n}\n\nfunc (x *RouteAction_MaxStreamDuration) Reset() {\n\t*x = RouteAction_MaxStreamDuration{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[33]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteAction_MaxStreamDuration) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteAction_MaxStreamDuration) ProtoMessage() {}\n\nfunc (x *RouteAction_MaxStreamDuration) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[33]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteAction_MaxStreamDuration.ProtoReflect.Descriptor instead.\nfunc (*RouteAction_MaxStreamDuration) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8, 3}\n}\n\nfunc (x *RouteAction_MaxStreamDuration) GetMaxStreamDuration() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.MaxStreamDuration\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction_MaxStreamDuration) GetGrpcTimeoutHeaderMax() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.GrpcTimeoutHeaderMax\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction_MaxStreamDuration) GetGrpcTimeoutHeaderOffset() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.GrpcTimeoutHeaderOffset\n\t}\n\treturn nil\n}\n\ntype RouteAction_HashPolicy_Header struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the request header that will be used to obtain the hash\n\t// key. If the request header is not present, no hash will be produced.\n\tHeaderName string `protobuf:\"bytes,1,opt,name=header_name,json=headerName,proto3\" json:\"header_name,omitempty\"`\n\t// If specified, the request header value will be rewritten and used\n\t// to produce the hash key.\n\tRegexRewrite  *v32.RegexMatchAndSubstitute `protobuf:\"bytes,2,opt,name=regex_rewrite,json=regexRewrite,proto3\" json:\"regex_rewrite,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteAction_HashPolicy_Header) Reset() {\n\t*x = RouteAction_HashPolicy_Header{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[34]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteAction_HashPolicy_Header) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteAction_HashPolicy_Header) ProtoMessage() {}\n\nfunc (x *RouteAction_HashPolicy_Header) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[34]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteAction_HashPolicy_Header.ProtoReflect.Descriptor instead.\nfunc (*RouteAction_HashPolicy_Header) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8, 1, 0}\n}\n\nfunc (x *RouteAction_HashPolicy_Header) GetHeaderName() string {\n\tif x != nil {\n\t\treturn x.HeaderName\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction_HashPolicy_Header) GetRegexRewrite() *v32.RegexMatchAndSubstitute {\n\tif x != nil {\n\t\treturn x.RegexRewrite\n\t}\n\treturn nil\n}\n\n// CookieAttribute defines an API for adding additional attributes for a HTTP cookie.\ntype RouteAction_HashPolicy_CookieAttribute struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the cookie attribute.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// The optional value of the cookie attribute.\n\tValue         string `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteAction_HashPolicy_CookieAttribute) Reset() {\n\t*x = RouteAction_HashPolicy_CookieAttribute{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[35]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteAction_HashPolicy_CookieAttribute) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteAction_HashPolicy_CookieAttribute) ProtoMessage() {}\n\nfunc (x *RouteAction_HashPolicy_CookieAttribute) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[35]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteAction_HashPolicy_CookieAttribute.ProtoReflect.Descriptor instead.\nfunc (*RouteAction_HashPolicy_CookieAttribute) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8, 1, 1}\n}\n\nfunc (x *RouteAction_HashPolicy_CookieAttribute) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction_HashPolicy_CookieAttribute) GetValue() string {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn \"\"\n}\n\n// Envoy supports two types of cookie affinity:\n//\n//  1. Passive. Envoy takes a cookie that's present in the cookies header and\n//     hashes on its value.\n//\n//  2. Generated. Envoy generates and sets a cookie with an expiration (TTL)\n//     on the first request from the client in its response to the client,\n//     based on the endpoint the request gets sent to. The client then\n//     presents this on the next and all subsequent requests. The hash of\n//     this is sufficient to ensure these requests get sent to the same\n//     endpoint. The cookie is generated by hashing the source and\n//     destination ports and addresses so that multiple independent HTTP2\n//     streams on the same connection will independently receive the same\n//     cookie, even if they arrive at the Envoy simultaneously.\ntype RouteAction_HashPolicy_Cookie struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the cookie that will be used to obtain the hash key. If the\n\t// cookie is not present and ttl below is not set, no hash will be\n\t// produced.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// If specified, a cookie with the TTL will be generated if the cookie is\n\t// not present. If the TTL is present and zero, the generated cookie will\n\t// be a session cookie.\n\tTtl *durationpb.Duration `protobuf:\"bytes,2,opt,name=ttl,proto3\" json:\"ttl,omitempty\"`\n\t// The name of the path for the cookie. If no path is specified here, no path\n\t// will be set for the cookie.\n\tPath string `protobuf:\"bytes,3,opt,name=path,proto3\" json:\"path,omitempty\"`\n\t// Additional attributes for the cookie. They will be used when generating a new cookie.\n\tAttributes    []*RouteAction_HashPolicy_CookieAttribute `protobuf:\"bytes,4,rep,name=attributes,proto3\" json:\"attributes,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteAction_HashPolicy_Cookie) Reset() {\n\t*x = RouteAction_HashPolicy_Cookie{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[36]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteAction_HashPolicy_Cookie) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteAction_HashPolicy_Cookie) ProtoMessage() {}\n\nfunc (x *RouteAction_HashPolicy_Cookie) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[36]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteAction_HashPolicy_Cookie.ProtoReflect.Descriptor instead.\nfunc (*RouteAction_HashPolicy_Cookie) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8, 1, 2}\n}\n\nfunc (x *RouteAction_HashPolicy_Cookie) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction_HashPolicy_Cookie) GetTtl() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Ttl\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction_HashPolicy_Cookie) GetPath() string {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn \"\"\n}\n\nfunc (x *RouteAction_HashPolicy_Cookie) GetAttributes() []*RouteAction_HashPolicy_CookieAttribute {\n\tif x != nil {\n\t\treturn x.Attributes\n\t}\n\treturn nil\n}\n\ntype RouteAction_HashPolicy_ConnectionProperties struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Hash on source IP address.\n\tSourceIp      bool `protobuf:\"varint,1,opt,name=source_ip,json=sourceIp,proto3\" json:\"source_ip,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteAction_HashPolicy_ConnectionProperties) Reset() {\n\t*x = RouteAction_HashPolicy_ConnectionProperties{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[37]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteAction_HashPolicy_ConnectionProperties) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteAction_HashPolicy_ConnectionProperties) ProtoMessage() {}\n\nfunc (x *RouteAction_HashPolicy_ConnectionProperties) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[37]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteAction_HashPolicy_ConnectionProperties.ProtoReflect.Descriptor instead.\nfunc (*RouteAction_HashPolicy_ConnectionProperties) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8, 1, 3}\n}\n\nfunc (x *RouteAction_HashPolicy_ConnectionProperties) GetSourceIp() bool {\n\tif x != nil {\n\t\treturn x.SourceIp\n\t}\n\treturn false\n}\n\ntype RouteAction_HashPolicy_QueryParameter struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the URL query parameter that will be used to obtain the hash\n\t// key. If the parameter is not present, no hash will be produced. Query\n\t// parameter names are case-sensitive. If query parameters are repeated, only\n\t// the first value will be considered.\n\tName          string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteAction_HashPolicy_QueryParameter) Reset() {\n\t*x = RouteAction_HashPolicy_QueryParameter{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[38]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteAction_HashPolicy_QueryParameter) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteAction_HashPolicy_QueryParameter) ProtoMessage() {}\n\nfunc (x *RouteAction_HashPolicy_QueryParameter) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[38]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteAction_HashPolicy_QueryParameter.ProtoReflect.Descriptor instead.\nfunc (*RouteAction_HashPolicy_QueryParameter) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8, 1, 4}\n}\n\nfunc (x *RouteAction_HashPolicy_QueryParameter) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\ntype RouteAction_HashPolicy_FilterState struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the Object in the per-request filterState, which is an\n\t// Envoy::Hashable object. If there is no data associated with the key,\n\t// or the stored object is not Envoy::Hashable, no hash will be produced.\n\tKey           string `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteAction_HashPolicy_FilterState) Reset() {\n\t*x = RouteAction_HashPolicy_FilterState{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[39]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteAction_HashPolicy_FilterState) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteAction_HashPolicy_FilterState) ProtoMessage() {}\n\nfunc (x *RouteAction_HashPolicy_FilterState) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[39]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteAction_HashPolicy_FilterState.ProtoReflect.Descriptor instead.\nfunc (*RouteAction_HashPolicy_FilterState) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8, 1, 5}\n}\n\nfunc (x *RouteAction_HashPolicy_FilterState) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\n// Configuration for sending data upstream as a raw data payload. This is used for\n// CONNECT or POST requests, when forwarding request payload as raw TCP.\ntype RouteAction_UpgradeConfig_ConnectConfig struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// If present, the proxy protocol header will be prepended to the CONNECT payload sent upstream.\n\tProxyProtocolConfig *v31.ProxyProtocolConfig `protobuf:\"bytes,1,opt,name=proxy_protocol_config,json=proxyProtocolConfig,proto3\" json:\"proxy_protocol_config,omitempty\"`\n\t// If set, the route will also allow forwarding POST payload as raw TCP.\n\tAllowPost     bool `protobuf:\"varint,2,opt,name=allow_post,json=allowPost,proto3\" json:\"allow_post,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RouteAction_UpgradeConfig_ConnectConfig) Reset() {\n\t*x = RouteAction_UpgradeConfig_ConnectConfig{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[40]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RouteAction_UpgradeConfig_ConnectConfig) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RouteAction_UpgradeConfig_ConnectConfig) ProtoMessage() {}\n\nfunc (x *RouteAction_UpgradeConfig_ConnectConfig) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[40]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RouteAction_UpgradeConfig_ConnectConfig.ProtoReflect.Descriptor instead.\nfunc (*RouteAction_UpgradeConfig_ConnectConfig) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8, 2, 0}\n}\n\nfunc (x *RouteAction_UpgradeConfig_ConnectConfig) GetProxyProtocolConfig() *v31.ProxyProtocolConfig {\n\tif x != nil {\n\t\treturn x.ProxyProtocolConfig\n\t}\n\treturn nil\n}\n\nfunc (x *RouteAction_UpgradeConfig_ConnectConfig) GetAllowPost() bool {\n\tif x != nil {\n\t\treturn x.AllowPost\n\t}\n\treturn false\n}\n\ntype RetryPolicy_RetryPriority struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\tName  string                 `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// [#extension-category: envoy.retry_priorities]\n\t//\n\t// Types that are valid to be assigned to ConfigType:\n\t//\n\t//\t*RetryPolicy_RetryPriority_TypedConfig\n\tConfigType    isRetryPolicy_RetryPriority_ConfigType `protobuf_oneof:\"config_type\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RetryPolicy_RetryPriority) Reset() {\n\t*x = RetryPolicy_RetryPriority{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[41]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RetryPolicy_RetryPriority) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RetryPolicy_RetryPriority) ProtoMessage() {}\n\nfunc (x *RetryPolicy_RetryPriority) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[41]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RetryPolicy_RetryPriority.ProtoReflect.Descriptor instead.\nfunc (*RetryPolicy_RetryPriority) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{9, 0}\n}\n\nfunc (x *RetryPolicy_RetryPriority) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *RetryPolicy_RetryPriority) GetConfigType() isRetryPolicy_RetryPriority_ConfigType {\n\tif x != nil {\n\t\treturn x.ConfigType\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy_RetryPriority) GetTypedConfig() *anypb.Any {\n\tif x != nil {\n\t\tif x, ok := x.ConfigType.(*RetryPolicy_RetryPriority_TypedConfig); ok {\n\t\t\treturn x.TypedConfig\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isRetryPolicy_RetryPriority_ConfigType interface {\n\tisRetryPolicy_RetryPriority_ConfigType()\n}\n\ntype RetryPolicy_RetryPriority_TypedConfig struct {\n\tTypedConfig *anypb.Any `protobuf:\"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof\"`\n}\n\nfunc (*RetryPolicy_RetryPriority_TypedConfig) isRetryPolicy_RetryPriority_ConfigType() {}\n\ntype RetryPolicy_RetryHostPredicate struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\tName  string                 `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// [#extension-category: envoy.retry_host_predicates]\n\t//\n\t// Types that are valid to be assigned to ConfigType:\n\t//\n\t//\t*RetryPolicy_RetryHostPredicate_TypedConfig\n\tConfigType    isRetryPolicy_RetryHostPredicate_ConfigType `protobuf_oneof:\"config_type\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RetryPolicy_RetryHostPredicate) Reset() {\n\t*x = RetryPolicy_RetryHostPredicate{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[42]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RetryPolicy_RetryHostPredicate) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RetryPolicy_RetryHostPredicate) ProtoMessage() {}\n\nfunc (x *RetryPolicy_RetryHostPredicate) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[42]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RetryPolicy_RetryHostPredicate.ProtoReflect.Descriptor instead.\nfunc (*RetryPolicy_RetryHostPredicate) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{9, 1}\n}\n\nfunc (x *RetryPolicy_RetryHostPredicate) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *RetryPolicy_RetryHostPredicate) GetConfigType() isRetryPolicy_RetryHostPredicate_ConfigType {\n\tif x != nil {\n\t\treturn x.ConfigType\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy_RetryHostPredicate) GetTypedConfig() *anypb.Any {\n\tif x != nil {\n\t\tif x, ok := x.ConfigType.(*RetryPolicy_RetryHostPredicate_TypedConfig); ok {\n\t\t\treturn x.TypedConfig\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isRetryPolicy_RetryHostPredicate_ConfigType interface {\n\tisRetryPolicy_RetryHostPredicate_ConfigType()\n}\n\ntype RetryPolicy_RetryHostPredicate_TypedConfig struct {\n\tTypedConfig *anypb.Any `protobuf:\"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof\"`\n}\n\nfunc (*RetryPolicy_RetryHostPredicate_TypedConfig) isRetryPolicy_RetryHostPredicate_ConfigType() {}\n\ntype RetryPolicy_RetryBackOff struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies the base interval between retries. This parameter is required and must be greater\n\t// than zero. Values less than 1 ms are rounded up to 1 ms.\n\t// See :ref:`config_http_filters_router_x-envoy-max-retries` for a discussion of Envoy's\n\t// back-off algorithm.\n\tBaseInterval *durationpb.Duration `protobuf:\"bytes,1,opt,name=base_interval,json=baseInterval,proto3\" json:\"base_interval,omitempty\"`\n\t// Specifies the maximum interval between retries. This parameter is optional, but must be\n\t// greater than or equal to the “base_interval“ if set. The default is 10 times the\n\t// “base_interval“. See :ref:`config_http_filters_router_x-envoy-max-retries` for a discussion\n\t// of Envoy's back-off algorithm.\n\tMaxInterval   *durationpb.Duration `protobuf:\"bytes,2,opt,name=max_interval,json=maxInterval,proto3\" json:\"max_interval,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RetryPolicy_RetryBackOff) Reset() {\n\t*x = RetryPolicy_RetryBackOff{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[43]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RetryPolicy_RetryBackOff) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RetryPolicy_RetryBackOff) ProtoMessage() {}\n\nfunc (x *RetryPolicy_RetryBackOff) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[43]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RetryPolicy_RetryBackOff.ProtoReflect.Descriptor instead.\nfunc (*RetryPolicy_RetryBackOff) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{9, 2}\n}\n\nfunc (x *RetryPolicy_RetryBackOff) GetBaseInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.BaseInterval\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy_RetryBackOff) GetMaxInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.MaxInterval\n\t}\n\treturn nil\n}\n\ntype RetryPolicy_ResetHeader struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the reset header.\n\t//\n\t// .. note::\n\t//\n\t//\tIf the header appears multiple times only the first value is used.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// The format of the reset header.\n\tFormat        RetryPolicy_ResetHeaderFormat `protobuf:\"varint,2,opt,name=format,proto3,enum=envoy.config.route.v3.RetryPolicy_ResetHeaderFormat\" json:\"format,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RetryPolicy_ResetHeader) Reset() {\n\t*x = RetryPolicy_ResetHeader{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[44]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RetryPolicy_ResetHeader) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RetryPolicy_ResetHeader) ProtoMessage() {}\n\nfunc (x *RetryPolicy_ResetHeader) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[44]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RetryPolicy_ResetHeader.ProtoReflect.Descriptor instead.\nfunc (*RetryPolicy_ResetHeader) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{9, 3}\n}\n\nfunc (x *RetryPolicy_ResetHeader) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *RetryPolicy_ResetHeader) GetFormat() RetryPolicy_ResetHeaderFormat {\n\tif x != nil {\n\t\treturn x.Format\n\t}\n\treturn RetryPolicy_SECONDS\n}\n\n// A retry back-off strategy that applies when the upstream server rate limits\n// the request.\n//\n// Given this configuration:\n//\n// .. code-block:: yaml\n//\n//\trate_limited_retry_back_off:\n//\t  reset_headers:\n//\t  - name: Retry-After\n//\t    format: SECONDS\n//\t  - name: X-RateLimit-Reset\n//\t    format: UNIX_TIMESTAMP\n//\t  max_interval: \"300s\"\n//\n// The following algorithm will apply:\n//\n//  1. If the response contains the header “Retry-After“ its value must be on\n//     the form “120“ (an integer that represents the number of seconds to\n//     wait before retrying). If so, this value is used as the back-off interval.\n//  2. Otherwise, if the response contains the header “X-RateLimit-Reset“ its\n//     value must be on the form “1595320702“ (an integer that represents the\n//     point in time at which to retry, as a Unix timestamp in seconds). If so,\n//     the current time is subtracted from this value and the result is used as\n//     the back-off interval.\n//  3. Otherwise, Envoy will use the default\n//     :ref:`exponential back-off <envoy_v3_api_field_config.route.v3.RetryPolicy.retry_back_off>`\n//     strategy.\n//\n// No matter which format is used, if the resulting back-off interval exceeds\n// “max_interval“ it is discarded and the next header in “reset_headers“\n// is tried. If a request timeout is configured for the route it will further\n// limit how long the request will be allowed to run.\n//\n// To prevent many clients retrying at the same point in time jitter is added\n// to the back-off interval, so the resulting interval is decided by taking:\n// “random(interval, interval * 1.5)“.\n//\n// .. attention::\n//\n//\tConfiguring ``rate_limited_retry_back_off`` will not by itself cause a request\n//\tto be retried. You will still need to configure the right retry policy to match\n//\tthe responses from the upstream server.\ntype RetryPolicy_RateLimitedRetryBackOff struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies the reset headers (like “Retry-After“ or “X-RateLimit-Reset“)\n\t// to match against the response. Headers are tried in order, and matched case\n\t// insensitive. The first header to be parsed successfully is used. If no headers\n\t// match the default exponential back-off is used instead.\n\tResetHeaders []*RetryPolicy_ResetHeader `protobuf:\"bytes,1,rep,name=reset_headers,json=resetHeaders,proto3\" json:\"reset_headers,omitempty\"`\n\t// Specifies the maximum back off interval that Envoy will allow. If a reset\n\t// header contains an interval longer than this then it will be discarded and\n\t// the next header will be tried.\n\t//\n\t// Defaults to 300 seconds.\n\tMaxInterval   *durationpb.Duration `protobuf:\"bytes,2,opt,name=max_interval,json=maxInterval,proto3\" json:\"max_interval,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RetryPolicy_RateLimitedRetryBackOff) Reset() {\n\t*x = RetryPolicy_RateLimitedRetryBackOff{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[45]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RetryPolicy_RateLimitedRetryBackOff) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RetryPolicy_RateLimitedRetryBackOff) ProtoMessage() {}\n\nfunc (x *RetryPolicy_RateLimitedRetryBackOff) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[45]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RetryPolicy_RateLimitedRetryBackOff.ProtoReflect.Descriptor instead.\nfunc (*RetryPolicy_RateLimitedRetryBackOff) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{9, 4}\n}\n\nfunc (x *RetryPolicy_RateLimitedRetryBackOff) GetResetHeaders() []*RetryPolicy_ResetHeader {\n\tif x != nil {\n\t\treturn x.ResetHeaders\n\t}\n\treturn nil\n}\n\nfunc (x *RetryPolicy_RateLimitedRetryBackOff) GetMaxInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.MaxInterval\n\t}\n\treturn nil\n}\n\n// [#next-free-field: 13]\ntype RateLimit_Action struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to ActionSpecifier:\n\t//\n\t//\t*RateLimit_Action_SourceCluster_\n\t//\t*RateLimit_Action_DestinationCluster_\n\t//\t*RateLimit_Action_RequestHeaders_\n\t//\t*RateLimit_Action_QueryParameters_\n\t//\t*RateLimit_Action_RemoteAddress_\n\t//\t*RateLimit_Action_GenericKey_\n\t//\t*RateLimit_Action_HeaderValueMatch_\n\t//\t*RateLimit_Action_DynamicMetadata\n\t//\t*RateLimit_Action_Metadata\n\t//\t*RateLimit_Action_Extension\n\t//\t*RateLimit_Action_MaskedRemoteAddress_\n\t//\t*RateLimit_Action_QueryParameterValueMatch_\n\tActionSpecifier isRateLimit_Action_ActionSpecifier `protobuf_oneof:\"action_specifier\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_Action) Reset() {\n\t*x = RateLimit_Action{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[46]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_Action) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_Action) ProtoMessage() {}\n\nfunc (x *RateLimit_Action) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[46]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_Action.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_Action) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 0}\n}\n\nfunc (x *RateLimit_Action) GetActionSpecifier() isRateLimit_Action_ActionSpecifier {\n\tif x != nil {\n\t\treturn x.ActionSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action) GetSourceCluster() *RateLimit_Action_SourceCluster {\n\tif x != nil {\n\t\tif x, ok := x.ActionSpecifier.(*RateLimit_Action_SourceCluster_); ok {\n\t\t\treturn x.SourceCluster\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action) GetDestinationCluster() *RateLimit_Action_DestinationCluster {\n\tif x != nil {\n\t\tif x, ok := x.ActionSpecifier.(*RateLimit_Action_DestinationCluster_); ok {\n\t\t\treturn x.DestinationCluster\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action) GetRequestHeaders() *RateLimit_Action_RequestHeaders {\n\tif x != nil {\n\t\tif x, ok := x.ActionSpecifier.(*RateLimit_Action_RequestHeaders_); ok {\n\t\t\treturn x.RequestHeaders\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action) GetQueryParameters() *RateLimit_Action_QueryParameters {\n\tif x != nil {\n\t\tif x, ok := x.ActionSpecifier.(*RateLimit_Action_QueryParameters_); ok {\n\t\t\treturn x.QueryParameters\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action) GetRemoteAddress() *RateLimit_Action_RemoteAddress {\n\tif x != nil {\n\t\tif x, ok := x.ActionSpecifier.(*RateLimit_Action_RemoteAddress_); ok {\n\t\t\treturn x.RemoteAddress\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action) GetGenericKey() *RateLimit_Action_GenericKey {\n\tif x != nil {\n\t\tif x, ok := x.ActionSpecifier.(*RateLimit_Action_GenericKey_); ok {\n\t\t\treturn x.GenericKey\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action) GetHeaderValueMatch() *RateLimit_Action_HeaderValueMatch {\n\tif x != nil {\n\t\tif x, ok := x.ActionSpecifier.(*RateLimit_Action_HeaderValueMatch_); ok {\n\t\t\treturn x.HeaderValueMatch\n\t\t}\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\nfunc (x *RateLimit_Action) GetDynamicMetadata() *RateLimit_Action_DynamicMetaData {\n\tif x != nil {\n\t\tif x, ok := x.ActionSpecifier.(*RateLimit_Action_DynamicMetadata); ok {\n\t\t\treturn x.DynamicMetadata\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action) GetMetadata() *RateLimit_Action_MetaData {\n\tif x != nil {\n\t\tif x, ok := x.ActionSpecifier.(*RateLimit_Action_Metadata); ok {\n\t\t\treturn x.Metadata\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action) GetExtension() *v31.TypedExtensionConfig {\n\tif x != nil {\n\t\tif x, ok := x.ActionSpecifier.(*RateLimit_Action_Extension); ok {\n\t\t\treturn x.Extension\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action) GetMaskedRemoteAddress() *RateLimit_Action_MaskedRemoteAddress {\n\tif x != nil {\n\t\tif x, ok := x.ActionSpecifier.(*RateLimit_Action_MaskedRemoteAddress_); ok {\n\t\t\treturn x.MaskedRemoteAddress\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action) GetQueryParameterValueMatch() *RateLimit_Action_QueryParameterValueMatch {\n\tif x != nil {\n\t\tif x, ok := x.ActionSpecifier.(*RateLimit_Action_QueryParameterValueMatch_); ok {\n\t\t\treturn x.QueryParameterValueMatch\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isRateLimit_Action_ActionSpecifier interface {\n\tisRateLimit_Action_ActionSpecifier()\n}\n\ntype RateLimit_Action_SourceCluster_ struct {\n\t// Rate limit on source cluster.\n\tSourceCluster *RateLimit_Action_SourceCluster `protobuf:\"bytes,1,opt,name=source_cluster,json=sourceCluster,proto3,oneof\"`\n}\n\ntype RateLimit_Action_DestinationCluster_ struct {\n\t// Rate limit on destination cluster.\n\tDestinationCluster *RateLimit_Action_DestinationCluster `protobuf:\"bytes,2,opt,name=destination_cluster,json=destinationCluster,proto3,oneof\"`\n}\n\ntype RateLimit_Action_RequestHeaders_ struct {\n\t// Rate limit on request headers.\n\tRequestHeaders *RateLimit_Action_RequestHeaders `protobuf:\"bytes,3,opt,name=request_headers,json=requestHeaders,proto3,oneof\"`\n}\n\ntype RateLimit_Action_QueryParameters_ struct {\n\t// Rate limit on query parameters.\n\tQueryParameters *RateLimit_Action_QueryParameters `protobuf:\"bytes,12,opt,name=query_parameters,json=queryParameters,proto3,oneof\"`\n}\n\ntype RateLimit_Action_RemoteAddress_ struct {\n\t// Rate limit on remote address.\n\tRemoteAddress *RateLimit_Action_RemoteAddress `protobuf:\"bytes,4,opt,name=remote_address,json=remoteAddress,proto3,oneof\"`\n}\n\ntype RateLimit_Action_GenericKey_ struct {\n\t// Rate limit on a generic key.\n\tGenericKey *RateLimit_Action_GenericKey `protobuf:\"bytes,5,opt,name=generic_key,json=genericKey,proto3,oneof\"`\n}\n\ntype RateLimit_Action_HeaderValueMatch_ struct {\n\t// Rate limit on the existence of request headers.\n\tHeaderValueMatch *RateLimit_Action_HeaderValueMatch `protobuf:\"bytes,6,opt,name=header_value_match,json=headerValueMatch,proto3,oneof\"`\n}\n\ntype RateLimit_Action_DynamicMetadata struct {\n\t// Rate limit on dynamic metadata.\n\t//\n\t// .. attention::\n\t//\n\t//\tThis field has been deprecated in favor of the :ref:`metadata <envoy_v3_api_field_config.route.v3.RateLimit.Action.metadata>` field\n\t//\n\t// Deprecated: Marked as deprecated in envoy/config/route/v3/route_components.proto.\n\tDynamicMetadata *RateLimit_Action_DynamicMetaData `protobuf:\"bytes,7,opt,name=dynamic_metadata,json=dynamicMetadata,proto3,oneof\"`\n}\n\ntype RateLimit_Action_Metadata struct {\n\t// Rate limit on metadata.\n\tMetadata *RateLimit_Action_MetaData `protobuf:\"bytes,8,opt,name=metadata,proto3,oneof\"`\n}\n\ntype RateLimit_Action_Extension struct {\n\t// Rate limit descriptor extension. See the rate limit descriptor extensions documentation.\n\t//\n\t// :ref:`HTTP matching input functions <arch_overview_matching_api>` are\n\t// permitted as descriptor extensions. The input functions are only\n\t// looked up if there is no rate limit descriptor extension matching\n\t// the type URL.\n\t//\n\t// [#extension-category: envoy.rate_limit_descriptors]\n\tExtension *v31.TypedExtensionConfig `protobuf:\"bytes,9,opt,name=extension,proto3,oneof\"`\n}\n\ntype RateLimit_Action_MaskedRemoteAddress_ struct {\n\t// Rate limit on masked remote address.\n\tMaskedRemoteAddress *RateLimit_Action_MaskedRemoteAddress `protobuf:\"bytes,10,opt,name=masked_remote_address,json=maskedRemoteAddress,proto3,oneof\"`\n}\n\ntype RateLimit_Action_QueryParameterValueMatch_ struct {\n\t// Rate limit on the existence of query parameters.\n\tQueryParameterValueMatch *RateLimit_Action_QueryParameterValueMatch `protobuf:\"bytes,11,opt,name=query_parameter_value_match,json=queryParameterValueMatch,proto3,oneof\"`\n}\n\nfunc (*RateLimit_Action_SourceCluster_) isRateLimit_Action_ActionSpecifier() {}\n\nfunc (*RateLimit_Action_DestinationCluster_) isRateLimit_Action_ActionSpecifier() {}\n\nfunc (*RateLimit_Action_RequestHeaders_) isRateLimit_Action_ActionSpecifier() {}\n\nfunc (*RateLimit_Action_QueryParameters_) isRateLimit_Action_ActionSpecifier() {}\n\nfunc (*RateLimit_Action_RemoteAddress_) isRateLimit_Action_ActionSpecifier() {}\n\nfunc (*RateLimit_Action_GenericKey_) isRateLimit_Action_ActionSpecifier() {}\n\nfunc (*RateLimit_Action_HeaderValueMatch_) isRateLimit_Action_ActionSpecifier() {}\n\nfunc (*RateLimit_Action_DynamicMetadata) isRateLimit_Action_ActionSpecifier() {}\n\nfunc (*RateLimit_Action_Metadata) isRateLimit_Action_ActionSpecifier() {}\n\nfunc (*RateLimit_Action_Extension) isRateLimit_Action_ActionSpecifier() {}\n\nfunc (*RateLimit_Action_MaskedRemoteAddress_) isRateLimit_Action_ActionSpecifier() {}\n\nfunc (*RateLimit_Action_QueryParameterValueMatch_) isRateLimit_Action_ActionSpecifier() {}\n\ntype RateLimit_Override struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to OverrideSpecifier:\n\t//\n\t//\t*RateLimit_Override_DynamicMetadata_\n\tOverrideSpecifier isRateLimit_Override_OverrideSpecifier `protobuf_oneof:\"override_specifier\"`\n\tunknownFields     protoimpl.UnknownFields\n\tsizeCache         protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_Override) Reset() {\n\t*x = RateLimit_Override{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[47]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_Override) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_Override) ProtoMessage() {}\n\nfunc (x *RateLimit_Override) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[47]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_Override.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_Override) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 1}\n}\n\nfunc (x *RateLimit_Override) GetOverrideSpecifier() isRateLimit_Override_OverrideSpecifier {\n\tif x != nil {\n\t\treturn x.OverrideSpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Override) GetDynamicMetadata() *RateLimit_Override_DynamicMetadata {\n\tif x != nil {\n\t\tif x, ok := x.OverrideSpecifier.(*RateLimit_Override_DynamicMetadata_); ok {\n\t\t\treturn x.DynamicMetadata\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isRateLimit_Override_OverrideSpecifier interface {\n\tisRateLimit_Override_OverrideSpecifier()\n}\n\ntype RateLimit_Override_DynamicMetadata_ struct {\n\t// Limit override from dynamic metadata.\n\tDynamicMetadata *RateLimit_Override_DynamicMetadata `protobuf:\"bytes,1,opt,name=dynamic_metadata,json=dynamicMetadata,proto3,oneof\"`\n}\n\nfunc (*RateLimit_Override_DynamicMetadata_) isRateLimit_Override_OverrideSpecifier() {}\n\ntype RateLimit_HitsAddend struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Fixed number of hits to add to the rate limit descriptor.\n\t//\n\t// One of the “number“ or “format“ fields should be set but not both.\n\tNumber *wrapperspb.UInt64Value `protobuf:\"bytes,1,opt,name=number,proto3\" json:\"number,omitempty\"`\n\t// Substitution format string to extract the number of hits to add to the rate limit descriptor.\n\t// The same :ref:`format specifier <config_access_log_format>` as used for\n\t// :ref:`HTTP access logging <config_access_log>` applies here.\n\t//\n\t// .. note::\n\t//\n\t//\tThe format string must contains only single valid substitution field. If the format string\n\t//\tnot meets the requirement, the configuration will be rejected.\n\t//\n\t//\tThe substitution field should generates a non-negative number or string representation of\n\t//\ta non-negative number. The value of the non-negative number should be less than or equal\n\t//\tto 1000000000 like the ``number`` field. If the output of the substitution field not meet\n\t//\tthe requirement, this will be treated as an error and the current descriptor will be ignored.\n\t//\n\t// For example, the “%BYTES_RECEIVED%“ format string will be replaced with the number of bytes\n\t// received in the request.\n\t//\n\t// One of the “number“ or “format“ fields should be set but not both.\n\tFormat        string `protobuf:\"bytes,2,opt,name=format,proto3\" json:\"format,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_HitsAddend) Reset() {\n\t*x = RateLimit_HitsAddend{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[48]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_HitsAddend) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_HitsAddend) ProtoMessage() {}\n\nfunc (x *RateLimit_HitsAddend) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[48]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_HitsAddend.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_HitsAddend) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 2}\n}\n\nfunc (x *RateLimit_HitsAddend) GetNumber() *wrapperspb.UInt64Value {\n\tif x != nil {\n\t\treturn x.Number\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_HitsAddend) GetFormat() string {\n\tif x != nil {\n\t\treturn x.Format\n\t}\n\treturn \"\"\n}\n\n// The following descriptor entry is appended to the descriptor:\n//\n// .. code-block:: cpp\n//\n//\t(\"source_cluster\", \"<local service cluster>\")\n//\n// <local service cluster> is derived from the :option:`--service-cluster` option.\ntype RateLimit_Action_SourceCluster struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_Action_SourceCluster) Reset() {\n\t*x = RateLimit_Action_SourceCluster{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[49]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_Action_SourceCluster) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_Action_SourceCluster) ProtoMessage() {}\n\nfunc (x *RateLimit_Action_SourceCluster) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[49]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_Action_SourceCluster.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_Action_SourceCluster) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 0, 0}\n}\n\n// The following descriptor entry is appended to the descriptor:\n//\n// .. code-block:: cpp\n//\n//\t(\"destination_cluster\", \"<routed target cluster>\")\n//\n// Once a request matches against a route table rule, a routed cluster is determined by one of\n// the following :ref:`route table configuration <envoy_v3_api_msg_config.route.v3.RouteConfiguration>`\n// settings:\n//\n//   - :ref:`cluster <envoy_v3_api_field_config.route.v3.RouteAction.cluster>` indicates the upstream cluster\n//     to route to.\n//   - :ref:`weighted_clusters <envoy_v3_api_field_config.route.v3.RouteAction.weighted_clusters>`\n//     chooses a cluster randomly from a set of clusters with attributed weight.\n//   - :ref:`cluster_header <envoy_v3_api_field_config.route.v3.RouteAction.cluster_header>` indicates which\n//     header in the request contains the target cluster.\ntype RateLimit_Action_DestinationCluster struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_Action_DestinationCluster) Reset() {\n\t*x = RateLimit_Action_DestinationCluster{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[50]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_Action_DestinationCluster) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_Action_DestinationCluster) ProtoMessage() {}\n\nfunc (x *RateLimit_Action_DestinationCluster) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[50]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_Action_DestinationCluster.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_Action_DestinationCluster) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 0, 1}\n}\n\n// The following descriptor entry is appended when a header contains a key that matches the\n// “header_name“:\n//\n// .. code-block:: cpp\n//\n//\t(\"<descriptor_key>\", \"<header_value_queried_from_header>\")\ntype RateLimit_Action_RequestHeaders struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The header name to be queried from the request headers. The header’s\n\t// value is used to populate the value of the descriptor entry for the\n\t// descriptor_key.\n\tHeaderName string `protobuf:\"bytes,1,opt,name=header_name,json=headerName,proto3\" json:\"header_name,omitempty\"`\n\t// The key to use in the descriptor entry.\n\tDescriptorKey string `protobuf:\"bytes,2,opt,name=descriptor_key,json=descriptorKey,proto3\" json:\"descriptor_key,omitempty\"`\n\t// Controls the behavior when the specified header is not present in the request.\n\t//\n\t// If set to “false“ (default):\n\t//\n\t// * Envoy does **NOT** call the rate limiting service for this descriptor.\n\t// * Useful if the header is optional and you prefer to skip rate limiting when it's absent.\n\t//\n\t// If set to “true“:\n\t//\n\t// * Envoy calls the rate limiting service but omits this descriptor if the header is missing.\n\t// * Useful if you want Envoy to enforce rate limiting even when the header is not present.\n\tSkipIfAbsent  bool `protobuf:\"varint,3,opt,name=skip_if_absent,json=skipIfAbsent,proto3\" json:\"skip_if_absent,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_Action_RequestHeaders) Reset() {\n\t*x = RateLimit_Action_RequestHeaders{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[51]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_Action_RequestHeaders) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_Action_RequestHeaders) ProtoMessage() {}\n\nfunc (x *RateLimit_Action_RequestHeaders) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[51]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_Action_RequestHeaders.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_Action_RequestHeaders) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 0, 2}\n}\n\nfunc (x *RateLimit_Action_RequestHeaders) GetHeaderName() string {\n\tif x != nil {\n\t\treturn x.HeaderName\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_RequestHeaders) GetDescriptorKey() string {\n\tif x != nil {\n\t\treturn x.DescriptorKey\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_RequestHeaders) GetSkipIfAbsent() bool {\n\tif x != nil {\n\t\treturn x.SkipIfAbsent\n\t}\n\treturn false\n}\n\n// The following descriptor entry is appended when a query parameter contains a key that matches the\n// “query_parameter_name“:\n//\n// .. code-block:: cpp\n//\n//\t(\"<descriptor_key>\", \"<query_parameter_value_queried_from_query_parameter>\")\ntype RateLimit_Action_QueryParameters struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the query parameter to use for rate limiting. Value of this query parameter is used to populate\n\t// the value of the descriptor entry for the descriptor_key.\n\tQueryParameterName string `protobuf:\"bytes,1,opt,name=query_parameter_name,json=queryParameterName,proto3\" json:\"query_parameter_name,omitempty\"`\n\t// The key to use when creating the rate limit descriptor entry. This descriptor key will be used to identify the\n\t// rate limit rule in the rate limiting service.\n\tDescriptorKey string `protobuf:\"bytes,2,opt,name=descriptor_key,json=descriptorKey,proto3\" json:\"descriptor_key,omitempty\"`\n\t// Controls the behavior when the specified query parameter is not present in the request.\n\t//\n\t// If set to “false“ (default):\n\t//\n\t// * Envoy does **NOT** call the rate limiting service for this descriptor.\n\t// * Useful if the query parameter is optional and you prefer to skip rate limiting when it's absent.\n\t//\n\t// If set to “true“:\n\t//\n\t// * Envoy calls the rate limiting service but omits this descriptor if the query parameter is missing.\n\t// * Useful if you want Envoy to enforce rate limiting even when the query parameter is not present.\n\tSkipIfAbsent  bool `protobuf:\"varint,3,opt,name=skip_if_absent,json=skipIfAbsent,proto3\" json:\"skip_if_absent,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_Action_QueryParameters) Reset() {\n\t*x = RateLimit_Action_QueryParameters{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[52]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_Action_QueryParameters) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_Action_QueryParameters) ProtoMessage() {}\n\nfunc (x *RateLimit_Action_QueryParameters) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[52]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_Action_QueryParameters.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_Action_QueryParameters) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 0, 3}\n}\n\nfunc (x *RateLimit_Action_QueryParameters) GetQueryParameterName() string {\n\tif x != nil {\n\t\treturn x.QueryParameterName\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_QueryParameters) GetDescriptorKey() string {\n\tif x != nil {\n\t\treturn x.DescriptorKey\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_QueryParameters) GetSkipIfAbsent() bool {\n\tif x != nil {\n\t\treturn x.SkipIfAbsent\n\t}\n\treturn false\n}\n\n// The following descriptor entry is appended to the descriptor and is populated using the\n// trusted address from :ref:`x-forwarded-for <config_http_conn_man_headers_x-forwarded-for>`:\n//\n// .. code-block:: cpp\n//\n//\t(\"remote_address\", \"<trusted address from x-forwarded-for>\")\ntype RateLimit_Action_RemoteAddress struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_Action_RemoteAddress) Reset() {\n\t*x = RateLimit_Action_RemoteAddress{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[53]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_Action_RemoteAddress) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_Action_RemoteAddress) ProtoMessage() {}\n\nfunc (x *RateLimit_Action_RemoteAddress) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[53]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_Action_RemoteAddress.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_Action_RemoteAddress) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 0, 4}\n}\n\n// The following descriptor entry is appended to the descriptor and is populated using the\n// masked address from :ref:`x-forwarded-for <config_http_conn_man_headers_x-forwarded-for>`:\n//\n// .. code-block:: cpp\n//\n//\t(\"masked_remote_address\", \"<masked address from x-forwarded-for>\")\ntype RateLimit_Action_MaskedRemoteAddress struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Length of prefix mask len for IPv4 (e.g. 0, 32).\n\t//\n\t// Defaults to 32 when unset.\n\t//\n\t// For example, trusted address from x-forwarded-for is “192.168.1.1“,\n\t// the descriptor entry is (\"masked_remote_address\", \"192.168.1.1/32\");\n\t// if mask len is 24, the descriptor entry is (\"masked_remote_address\", \"192.168.1.0/24\").\n\tV4PrefixMaskLen *wrapperspb.UInt32Value `protobuf:\"bytes,1,opt,name=v4_prefix_mask_len,json=v4PrefixMaskLen,proto3\" json:\"v4_prefix_mask_len,omitempty\"`\n\t// Length of prefix mask len for IPv6 (e.g. 0, 128).\n\t//\n\t// Defaults to 128 when unset.\n\t//\n\t// For example, trusted address from x-forwarded-for is “2001:abcd:ef01:2345:6789:abcd:ef01:234“,\n\t// the descriptor entry is (\"masked_remote_address\", \"2001:abcd:ef01:2345:6789:abcd:ef01:234/128\");\n\t// if mask len is 64, the descriptor entry is (\"masked_remote_address\", \"2001:abcd:ef01:2345::/64\").\n\tV6PrefixMaskLen *wrapperspb.UInt32Value `protobuf:\"bytes,2,opt,name=v6_prefix_mask_len,json=v6PrefixMaskLen,proto3\" json:\"v6_prefix_mask_len,omitempty\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_Action_MaskedRemoteAddress) Reset() {\n\t*x = RateLimit_Action_MaskedRemoteAddress{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[54]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_Action_MaskedRemoteAddress) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_Action_MaskedRemoteAddress) ProtoMessage() {}\n\nfunc (x *RateLimit_Action_MaskedRemoteAddress) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[54]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_Action_MaskedRemoteAddress.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_Action_MaskedRemoteAddress) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 0, 5}\n}\n\nfunc (x *RateLimit_Action_MaskedRemoteAddress) GetV4PrefixMaskLen() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.V4PrefixMaskLen\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action_MaskedRemoteAddress) GetV6PrefixMaskLen() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.V6PrefixMaskLen\n\t}\n\treturn nil\n}\n\n// The following descriptor entry is appended to the descriptor:\n//\n// .. code-block:: cpp\n//\n//\t(\"generic_key\", \"<descriptor_value>\")\ntype RateLimit_Action_GenericKey struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Descriptor value of entry.\n\t//\n\t// The same :ref:`format specifier <config_access_log_format>` as used for\n\t// :ref:`HTTP access logging <config_access_log>` applies here, however\n\t// unknown specifier values are replaced with the empty string instead of “-“.\n\t//\n\t// .. note::\n\t//\n\t//\tFormatter parsing is controlled by the runtime feature flag\n\t//\t``envoy.reloadable_features.enable_formatter_for_ratelimit_action_descriptor_value``\n\t//\t(disabled by default).\n\t//\n\t//\tWhen enabled: The format string can contain multiple valid substitution\n\t//\tfields. If multiple substitution fields are present, their results will be concatenated\n\t//\tto form the final descriptor value. If it contains no substitution fields, the value\n\t//\twill be used as is. If the final concatenated result is empty and ``default_value`` is set,\n\t//\tthe ``default_value`` will be used. If ``default_value`` is not set and the result is\n\t//\tempty, this descriptor will be skipped and not included in the rate limit call.\n\t//\n\t//\tWhen disabled (default): The descriptor_value is used as a literal string without any formatter\n\t//\tparsing or substitution.\n\t//\n\t// For example, “static_value“ will be used as is since there are no substitution fields.\n\t// “%REQ(:method)%“ will be replaced with the HTTP method, and\n\t// “%REQ(:method)%%REQ(:path)%“ will be replaced with the concatenation of the HTTP method and path.\n\t// “%CEL(request.headers['user-id'])%“ will use CEL to extract the user ID from request headers.\n\tDescriptorValue string `protobuf:\"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3\" json:\"descriptor_value,omitempty\"`\n\t// An optional value to use if the final concatenated “descriptor_value“ result is empty.\n\t// Only applicable when formatter parsing is enabled by the runtime feature flag\n\t// “envoy.reloadable_features.enable_formatter_for_ratelimit_action_descriptor_value“ (disabled by default).\n\tDefaultValue string `protobuf:\"bytes,3,opt,name=default_value,json=defaultValue,proto3\" json:\"default_value,omitempty\"`\n\t// An optional key to use in the descriptor entry. If not set it defaults\n\t// to 'generic_key' as the descriptor key.\n\tDescriptorKey string `protobuf:\"bytes,2,opt,name=descriptor_key,json=descriptorKey,proto3\" json:\"descriptor_key,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_Action_GenericKey) Reset() {\n\t*x = RateLimit_Action_GenericKey{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[55]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_Action_GenericKey) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_Action_GenericKey) ProtoMessage() {}\n\nfunc (x *RateLimit_Action_GenericKey) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[55]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_Action_GenericKey.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_Action_GenericKey) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 0, 6}\n}\n\nfunc (x *RateLimit_Action_GenericKey) GetDescriptorValue() string {\n\tif x != nil {\n\t\treturn x.DescriptorValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_GenericKey) GetDefaultValue() string {\n\tif x != nil {\n\t\treturn x.DefaultValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_GenericKey) GetDescriptorKey() string {\n\tif x != nil {\n\t\treturn x.DescriptorKey\n\t}\n\treturn \"\"\n}\n\n// The following descriptor entry is appended to the descriptor:\n//\n// .. code-block:: cpp\n//\n//\t(\"header_match\", \"<descriptor_value>\")\n//\n// [#next-free-field: 6]\ntype RateLimit_Action_HeaderValueMatch struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Descriptor value of entry.\n\t//\n\t// The same :ref:`format specifier <config_access_log_format>` as used for\n\t// :ref:`HTTP access logging <config_access_log>` applies here, however\n\t// unknown specifier values are replaced with the empty string instead of “-“.\n\t//\n\t// .. note::\n\t//\n\t//\tFormatter parsing is controlled by the runtime feature flag\n\t//\t``envoy.reloadable_features.enable_formatter_for_ratelimit_action_descriptor_value``\n\t//\t(disabled by default).\n\t//\n\t//\tWhen enabled: The format string can contain multiple valid substitution\n\t//\tfields. If multiple substitution fields are present, their results will be concatenated\n\t//\tto form the final descriptor value. If it contains no substitution fields, the value\n\t//\twill be used as is. All substitution fields will be evaluated and their results\n\t//\tconcatenated. If the final concatenated result is empty and ``default_value`` is set,\n\t//\tthe ``default_value`` will be used. If ``default_value`` is not set and the result is\n\t//\tempty, this descriptor will be skipped and not included in the rate limit call.\n\t//\n\t//\tWhen disabled (default): The descriptor_value is used as a literal string without any formatter\n\t//\tparsing or substitution.\n\t//\n\t// For example, “static_value“ will be used as is since there are no substitution fields.\n\t// “%REQ(:method)%“ will be replaced with the HTTP method, and\n\t// “%REQ(:method)%%REQ(:path)%“ will be replaced with the concatenation of the HTTP method and path.\n\t// “%CEL(request.headers['user-id'])%“ will use CEL to extract the user ID from request headers.\n\tDescriptorValue string `protobuf:\"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3\" json:\"descriptor_value,omitempty\"`\n\t// An optional value to use if the final concatenated “descriptor_value“ result is empty.\n\t// Only applicable when formatter parsing is enabled by the runtime feature flag\n\t// “envoy.reloadable_features.enable_formatter_for_ratelimit_action_descriptor_value“ (disabled by default).\n\tDefaultValue string `protobuf:\"bytes,5,opt,name=default_value,json=defaultValue,proto3\" json:\"default_value,omitempty\"`\n\t// The key to use in the descriptor entry.\n\t//\n\t// Defaults to “header_match“.\n\tDescriptorKey string `protobuf:\"bytes,4,opt,name=descriptor_key,json=descriptorKey,proto3\" json:\"descriptor_key,omitempty\"`\n\t// If set to true, the action will append a descriptor entry when the\n\t// request matches the headers. If set to false, the action will append a\n\t// descriptor entry when the request does not match the headers. The\n\t// default value is true.\n\tExpectMatch *wrapperspb.BoolValue `protobuf:\"bytes,2,opt,name=expect_match,json=expectMatch,proto3\" json:\"expect_match,omitempty\"`\n\t// Specifies a set of headers that the rate limit action should match\n\t// on. The action will check the request's headers against all the\n\t// specified headers in the config. A match will happen if all the\n\t// headers in the config are present in the request with the same values\n\t// (or based on presence if the value field is not in the config).\n\tHeaders       []*HeaderMatcher `protobuf:\"bytes,3,rep,name=headers,proto3\" json:\"headers,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_Action_HeaderValueMatch) Reset() {\n\t*x = RateLimit_Action_HeaderValueMatch{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[56]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_Action_HeaderValueMatch) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_Action_HeaderValueMatch) ProtoMessage() {}\n\nfunc (x *RateLimit_Action_HeaderValueMatch) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[56]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_Action_HeaderValueMatch.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_Action_HeaderValueMatch) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 0, 7}\n}\n\nfunc (x *RateLimit_Action_HeaderValueMatch) GetDescriptorValue() string {\n\tif x != nil {\n\t\treturn x.DescriptorValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_HeaderValueMatch) GetDefaultValue() string {\n\tif x != nil {\n\t\treturn x.DefaultValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_HeaderValueMatch) GetDescriptorKey() string {\n\tif x != nil {\n\t\treturn x.DescriptorKey\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_HeaderValueMatch) GetExpectMatch() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.ExpectMatch\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action_HeaderValueMatch) GetHeaders() []*HeaderMatcher {\n\tif x != nil {\n\t\treturn x.Headers\n\t}\n\treturn nil\n}\n\n// The following descriptor entry is appended when the\n// :ref:`dynamic metadata <well_known_dynamic_metadata>` contains a key value:\n//\n// .. code-block:: cpp\n//\n//\t(\"<descriptor_key>\", \"<value_queried_from_dynamic_metadata>\")\n//\n// .. attention::\n//\n//\tThis action has been deprecated in favor of the :ref:`metadata <envoy_v3_api_msg_config.route.v3.RateLimit.Action.MetaData>` action\ntype RateLimit_Action_DynamicMetaData struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The key to use in the descriptor entry.\n\tDescriptorKey string `protobuf:\"bytes,1,opt,name=descriptor_key,json=descriptorKey,proto3\" json:\"descriptor_key,omitempty\"`\n\t// Metadata struct that defines the key and path to retrieve the string value. A match will\n\t// only happen if the value in the dynamic metadata is of type string.\n\tMetadataKey *v36.MetadataKey `protobuf:\"bytes,2,opt,name=metadata_key,json=metadataKey,proto3\" json:\"metadata_key,omitempty\"`\n\t// An optional value to use if “metadata_key“ is empty. If not set and\n\t// no value is present under the metadata_key then no descriptor is generated.\n\tDefaultValue  string `protobuf:\"bytes,3,opt,name=default_value,json=defaultValue,proto3\" json:\"default_value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_Action_DynamicMetaData) Reset() {\n\t*x = RateLimit_Action_DynamicMetaData{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[57]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_Action_DynamicMetaData) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_Action_DynamicMetaData) ProtoMessage() {}\n\nfunc (x *RateLimit_Action_DynamicMetaData) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[57]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_Action_DynamicMetaData.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_Action_DynamicMetaData) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 0, 8}\n}\n\nfunc (x *RateLimit_Action_DynamicMetaData) GetDescriptorKey() string {\n\tif x != nil {\n\t\treturn x.DescriptorKey\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_DynamicMetaData) GetMetadataKey() *v36.MetadataKey {\n\tif x != nil {\n\t\treturn x.MetadataKey\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action_DynamicMetaData) GetDefaultValue() string {\n\tif x != nil {\n\t\treturn x.DefaultValue\n\t}\n\treturn \"\"\n}\n\n// The following descriptor entry is appended when the metadata contains a key value:\n//\n// .. code-block:: cpp\n//\n//\t(\"<descriptor_key>\", \"<value_queried_from_metadata>\")\n//\n// [#next-free-field: 6]\ntype RateLimit_Action_MetaData struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The key to use in the descriptor entry.\n\tDescriptorKey string `protobuf:\"bytes,1,opt,name=descriptor_key,json=descriptorKey,proto3\" json:\"descriptor_key,omitempty\"`\n\t// Metadata struct that defines the key and path to retrieve the string value. A match will\n\t// only happen if the value in the metadata is of type string.\n\tMetadataKey *v36.MetadataKey `protobuf:\"bytes,2,opt,name=metadata_key,json=metadataKey,proto3\" json:\"metadata_key,omitempty\"`\n\t// An optional value to use if “metadata_key“ is empty. If not set and\n\t// no value is present under the metadata_key then “skip_if_absent“ is followed to\n\t// skip calling the rate limiting service or skip the descriptor.\n\tDefaultValue string `protobuf:\"bytes,3,opt,name=default_value,json=defaultValue,proto3\" json:\"default_value,omitempty\"`\n\t// Source of metadata\n\tSource RateLimit_Action_MetaData_Source `protobuf:\"varint,4,opt,name=source,proto3,enum=envoy.config.route.v3.RateLimit_Action_MetaData_Source\" json:\"source,omitempty\"`\n\t// Controls the behavior when the specified “metadata_key“ is empty and “default_value“ is not set.\n\t//\n\t// If set to “false“ (default):\n\t//\n\t// * Envoy does **NOT** call the rate limiting service for this descriptor.\n\t// * Useful if the metadata is optional and you prefer to skip rate limiting when it's absent.\n\t//\n\t// If set to “true“:\n\t//\n\t//   - Envoy calls the rate limiting service but omits this descriptor if the “metadata_key“ is empty and\n\t//     “default_value“ is missing.\n\t//   - Useful if you want Envoy to enforce rate limiting even when the metadata is not present.\n\tSkipIfAbsent  bool `protobuf:\"varint,5,opt,name=skip_if_absent,json=skipIfAbsent,proto3\" json:\"skip_if_absent,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_Action_MetaData) Reset() {\n\t*x = RateLimit_Action_MetaData{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[58]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_Action_MetaData) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_Action_MetaData) ProtoMessage() {}\n\nfunc (x *RateLimit_Action_MetaData) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[58]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_Action_MetaData.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_Action_MetaData) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 0, 9}\n}\n\nfunc (x *RateLimit_Action_MetaData) GetDescriptorKey() string {\n\tif x != nil {\n\t\treturn x.DescriptorKey\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_MetaData) GetMetadataKey() *v36.MetadataKey {\n\tif x != nil {\n\t\treturn x.MetadataKey\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action_MetaData) GetDefaultValue() string {\n\tif x != nil {\n\t\treturn x.DefaultValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_MetaData) GetSource() RateLimit_Action_MetaData_Source {\n\tif x != nil {\n\t\treturn x.Source\n\t}\n\treturn RateLimit_Action_MetaData_DYNAMIC\n}\n\nfunc (x *RateLimit_Action_MetaData) GetSkipIfAbsent() bool {\n\tif x != nil {\n\t\treturn x.SkipIfAbsent\n\t}\n\treturn false\n}\n\n// The following descriptor entry is appended to the descriptor:\n//\n// .. code-block:: cpp\n//\n//\t(\"query_match\", \"<descriptor_value>\")\n//\n// [#next-free-field: 6]\ntype RateLimit_Action_QueryParameterValueMatch struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Descriptor value of entry.\n\t//\n\t// The same :ref:`format specifier <config_access_log_format>` as used for\n\t// :ref:`HTTP access logging <config_access_log>` applies here, however\n\t// unknown specifier values are replaced with the empty string instead of “-“.\n\t//\n\t// .. note::\n\t//\n\t//\tFormatter parsing is controlled by the runtime feature flag\n\t//\t``envoy.reloadable_features.enable_formatter_for_ratelimit_action_descriptor_value``\n\t//\t(disabled by default).\n\t//\n\t//\tWhen enabled: The format string can contain multiple valid substitution\n\t//\tfields. If multiple substitution fields are present, their results will be concatenated\n\t//\tto form the final descriptor value. If it contains no substitution fields, the value\n\t//\twill be used as is. All substitution fields will be evaluated and their results\n\t//\tconcatenated. If the final concatenated result is empty and ``default_value`` is set,\n\t//\tthe ``default_value`` will be used. If ``default_value`` is not set and the result is\n\t//\tempty, this descriptor will be skipped and not included in the rate limit call.\n\t//\n\t//\tWhen disabled (default): The descriptor_value is used as a literal string without any formatter\n\t//\tparsing or substitution.\n\t//\n\t// For example, “static_value“ will be used as is since there are no substitution fields.\n\t// “%REQ(:method)%“ will be replaced with the HTTP method, and\n\t// “%REQ(:method)%%REQ(:path)%“ will be replaced with the concatenation of the HTTP method and path.\n\t// “%CEL(request.headers['user-id'])%“ will use CEL to extract the user ID from request headers.\n\tDescriptorValue string `protobuf:\"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3\" json:\"descriptor_value,omitempty\"`\n\t// An optional value to use if the final concatenated “descriptor_value“ result is empty.\n\t// Only applicable when formatter parsing is enabled by the runtime feature flag\n\t// “envoy.reloadable_features.enable_formatter_for_ratelimit_action_descriptor_value“ (disabled by default).\n\tDefaultValue string `protobuf:\"bytes,5,opt,name=default_value,json=defaultValue,proto3\" json:\"default_value,omitempty\"`\n\t// The key to use in the descriptor entry.\n\t//\n\t// Defaults to “query_match“.\n\tDescriptorKey string `protobuf:\"bytes,4,opt,name=descriptor_key,json=descriptorKey,proto3\" json:\"descriptor_key,omitempty\"`\n\t// If set to true, the action will append a descriptor entry when the\n\t// request matches the headers. If set to false, the action will append a\n\t// descriptor entry when the request does not match the headers. The\n\t// default value is true.\n\tExpectMatch *wrapperspb.BoolValue `protobuf:\"bytes,2,opt,name=expect_match,json=expectMatch,proto3\" json:\"expect_match,omitempty\"`\n\t// Specifies a set of query parameters that the rate limit action should match\n\t// on. The action will check the request's query parameters against all the\n\t// specified query parameters in the config. A match will happen if all the\n\t// query parameters in the config are present in the request with the same values\n\t// (or based on presence if the value field is not in the config).\n\tQueryParameters []*QueryParameterMatcher `protobuf:\"bytes,3,rep,name=query_parameters,json=queryParameters,proto3\" json:\"query_parameters,omitempty\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_Action_QueryParameterValueMatch) Reset() {\n\t*x = RateLimit_Action_QueryParameterValueMatch{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[59]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_Action_QueryParameterValueMatch) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_Action_QueryParameterValueMatch) ProtoMessage() {}\n\nfunc (x *RateLimit_Action_QueryParameterValueMatch) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[59]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_Action_QueryParameterValueMatch.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_Action_QueryParameterValueMatch) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 0, 10}\n}\n\nfunc (x *RateLimit_Action_QueryParameterValueMatch) GetDescriptorValue() string {\n\tif x != nil {\n\t\treturn x.DescriptorValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_QueryParameterValueMatch) GetDefaultValue() string {\n\tif x != nil {\n\t\treturn x.DefaultValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_QueryParameterValueMatch) GetDescriptorKey() string {\n\tif x != nil {\n\t\treturn x.DescriptorKey\n\t}\n\treturn \"\"\n}\n\nfunc (x *RateLimit_Action_QueryParameterValueMatch) GetExpectMatch() *wrapperspb.BoolValue {\n\tif x != nil {\n\t\treturn x.ExpectMatch\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimit_Action_QueryParameterValueMatch) GetQueryParameters() []*QueryParameterMatcher {\n\tif x != nil {\n\t\treturn x.QueryParameters\n\t}\n\treturn nil\n}\n\n// Fetches the override from the dynamic metadata.\ntype RateLimit_Override_DynamicMetadata struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Metadata struct that defines the key and path to retrieve the struct value.\n\t// The value must be a struct containing an integer \"requests_per_unit\" property\n\t// and a \"unit\" property with a value parseable to :ref:`RateLimitUnit\n\t// enum <envoy_v3_api_enum_type.v3.RateLimitUnit>`\n\tMetadataKey   *v36.MetadataKey `protobuf:\"bytes,1,opt,name=metadata_key,json=metadataKey,proto3\" json:\"metadata_key,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RateLimit_Override_DynamicMetadata) Reset() {\n\t*x = RateLimit_Override_DynamicMetadata{}\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[60]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimit_Override_DynamicMetadata) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimit_Override_DynamicMetadata) ProtoMessage() {}\n\nfunc (x *RateLimit_Override_DynamicMetadata) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_route_components_proto_msgTypes[60]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimit_Override_DynamicMetadata.ProtoReflect.Descriptor instead.\nfunc (*RateLimit_Override_DynamicMetadata) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17, 1, 0}\n}\n\nfunc (x *RateLimit_Override_DynamicMetadata) GetMetadataKey() *v36.MetadataKey {\n\tif x != nil {\n\t\treturn x.MetadataKey\n\t}\n\treturn nil\n}\n\nvar File_envoy_config_route_v3_route_components_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_route_v3_route_components_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\",envoy/config/route/v3/route_components.proto\\x12\\x15envoy.config.route.v3\\x1a:envoy/config/common/mutation_rules/v3/mutation_rules.proto\\x1a\\x1fenvoy/config/core/v3/base.proto\\x1a$envoy/config/core/v3/extension.proto\\x1a)envoy/config/core/v3/proxy_protocol.proto\\x1a5envoy/config/core/v3/substitution_format_string.proto\\x1a(envoy/type/matcher/v3/filter_state.proto\\x1a$envoy/type/matcher/v3/metadata.proto\\x1a!envoy/type/matcher/v3/regex.proto\\x1a\\\"envoy/type/matcher/v3/string.proto\\x1a%envoy/type/metadata/v3/metadata.proto\\x1a&envoy/type/tracing/v3/custom_tag.proto\\x1a\\x1benvoy/type/v3/percent.proto\\x1a\\x19envoy/type/v3/range.proto\\x1a\\x19google/protobuf/any.proto\\x1a\\x1egoogle/protobuf/duration.proto\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a!xds/type/matcher/v3/matcher.proto\\x1a#envoy/annotations/deprecation.proto\\x1a\\x1eudpa/annotations/migrate.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xad\\x10\\n\" +\n\t\"\\vVirtualHost\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x12,\\n\" +\n\t\"\\adomains\\x18\\x02 \\x03(\\tB\\x12\\xfaB\\x0f\\x92\\x01\\f\\b\\x01\\\"\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x02R\\adomains\\x12M\\n\" +\n\t\"\\x06routes\\x18\\x03 \\x03(\\v2\\x1c.envoy.config.route.v3.RouteB\\x17\\xf2\\x98\\xfe\\x8f\\x05\\x11\\x12\\x0froute_selectionR\\x06routes\\x12O\\n\" +\n\t\"\\amatcher\\x18\\x15 \\x01(\\v2\\x1c.xds.type.matcher.v3.MatcherB\\x17\\xf2\\x98\\xfe\\x8f\\x05\\x11\\x12\\x0froute_selectionR\\amatcher\\x12`\\n\" +\n\t\"\\vrequire_tls\\x18\\x04 \\x01(\\x0e25.envoy.config.route.v3.VirtualHost.TlsRequirementTypeB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\n\" +\n\t\"requireTls\\x12P\\n\" +\n\t\"\\x10virtual_clusters\\x18\\x05 \\x03(\\v2%.envoy.config.route.v3.VirtualClusterR\\x0fvirtualClusters\\x12A\\n\" +\n\t\"\\vrate_limits\\x18\\x06 \\x03(\\v2 .envoy.config.route.v3.RateLimitR\\n\" +\n\t\"rateLimits\\x12g\\n\" +\n\t\"\\x16request_headers_to_add\\x18\\a \\x03(\\v2'.envoy.config.core.v3.HeaderValueOptionB\\t\\xfaB\\x06\\x92\\x01\\x03\\x10\\xe8\\aR\\x13requestHeadersToAdd\\x12M\\n\" +\n\t\"\\x19request_headers_to_remove\\x18\\r \\x03(\\tB\\x12\\xfaB\\x0f\\x92\\x01\\f\\\"\\n\" +\n\t\"r\\b\\x10\\x01\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x16requestHeadersToRemove\\x12i\\n\" +\n\t\"\\x17response_headers_to_add\\x18\\n\" +\n\t\" \\x03(\\v2'.envoy.config.core.v3.HeaderValueOptionB\\t\\xfaB\\x06\\x92\\x01\\x03\\x10\\xe8\\aR\\x14responseHeadersToAdd\\x12O\\n\" +\n\t\"\\x1aresponse_headers_to_remove\\x18\\v \\x03(\\tB\\x12\\xfaB\\x0f\\x92\\x01\\f\\\"\\n\" +\n\t\"r\\b\\x10\\x01\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x17responseHeadersToRemove\\x12B\\n\" +\n\t\"\\x04cors\\x18\\b \\x01(\\v2!.envoy.config.route.v3.CorsPolicyB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x04cors\\x12s\\n\" +\n\t\"\\x17typed_per_filter_config\\x18\\x0f \\x03(\\v2<.envoy.config.route.v3.VirtualHost.TypedPerFilterConfigEntryR\\x14typedPerFilterConfig\\x12A\\n\" +\n\t\"\\x1dinclude_request_attempt_count\\x18\\x0e \\x01(\\bR\\x1aincludeRequestAttemptCount\\x12H\\n\" +\n\t\"!include_attempt_count_in_response\\x18\\x13 \\x01(\\bR\\x1dincludeAttemptCountInResponse\\x12E\\n\" +\n\t\"\\fretry_policy\\x18\\x10 \\x01(\\v2\\\".envoy.config.route.v3.RetryPolicyR\\vretryPolicy\\x12O\\n\" +\n\t\"\\x19retry_policy_typed_config\\x18\\x14 \\x01(\\v2\\x14.google.protobuf.AnyR\\x16retryPolicyTypedConfig\\x12E\\n\" +\n\t\"\\fhedge_policy\\x18\\x11 \\x01(\\v2\\\".envoy.config.route.v3.HedgePolicyR\\vhedgePolicy\\x12D\\n\" +\n\t\"\\x1finclude_is_timeout_retry_header\\x18\\x17 \\x01(\\bR\\x1bincludeIsTimeoutRetryHeader\\x12m\\n\" +\n\t\"\\x1eper_request_buffer_limit_bytes\\x18\\x12 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x1aperRequestBufferLimitBytes\\x12a\\n\" +\n\t\"\\x19request_body_buffer_limit\\x18\\x19 \\x01(\\v2\\x1c.google.protobuf.UInt64ValueB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x00R\\x16requestBodyBufferLimit\\x12n\\n\" +\n\t\"\\x17request_mirror_policies\\x18\\x16 \\x03(\\v26.envoy.config.route.v3.RouteAction.RequestMirrorPolicyR\\x15requestMirrorPolicies\\x12:\\n\" +\n\t\"\\bmetadata\\x18\\x18 \\x01(\\v2\\x1e.envoy.config.core.v3.MetadataR\\bmetadata\\x1a]\\n\" +\n\t\"\\x19TypedPerFilterConfigEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12*\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x14.google.protobuf.AnyR\\x05value:\\x028\\x01\\\":\\n\" +\n\t\"\\x12TlsRequirementType\\x12\\b\\n\" +\n\t\"\\x04NONE\\x10\\x00\\x12\\x11\\n\" +\n\t\"\\rEXTERNAL_ONLY\\x10\\x01\\x12\\a\\n\" +\n\t\"\\x03ALL\\x10\\x02:%\\x9aň\\x1e \\n\" +\n\t\"\\x1eenvoy.api.v2.route.VirtualHostJ\\x04\\b\\t\\x10\\n\" +\n\t\"J\\x04\\b\\f\\x10\\rR\\x11per_filter_config\\\"d\\n\" +\n\t\"\\fFilterAction\\x12,\\n\" +\n\t\"\\x06action\\x18\\x01 \\x01(\\v2\\x14.google.protobuf.AnyR\\x06action:&\\x9aň\\x1e!\\n\" +\n\t\"\\x1fenvoy.api.v2.route.FilterAction\\\"A\\n\" +\n\t\"\\tRouteList\\x124\\n\" +\n\t\"\\x06routes\\x18\\x01 \\x03(\\v2\\x1c.envoy.config.route.v3.RouteR\\x06routes\\\"\\x95\\f\\n\" +\n\t\"\\x05Route\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x0e \\x01(\\tR\\x04name\\x12A\\n\" +\n\t\"\\x05match\\x18\\x01 \\x01(\\v2!.envoy.config.route.v3.RouteMatchB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\x05match\\x12:\\n\" +\n\t\"\\x05route\\x18\\x02 \\x01(\\v2\\\".envoy.config.route.v3.RouteActionH\\x00R\\x05route\\x12C\\n\" +\n\t\"\\bredirect\\x18\\x03 \\x01(\\v2%.envoy.config.route.v3.RedirectActionH\\x00R\\bredirect\\x12V\\n\" +\n\t\"\\x0fdirect_response\\x18\\a \\x01(\\v2+.envoy.config.route.v3.DirectResponseActionH\\x00R\\x0edirectResponse\\x12J\\n\" +\n\t\"\\rfilter_action\\x18\\x11 \\x01(\\v2#.envoy.config.route.v3.FilterActionH\\x00R\\ffilterAction\\x12`\\n\" +\n\t\"\\x15non_forwarding_action\\x18\\x12 \\x01(\\v2*.envoy.config.route.v3.NonForwardingActionH\\x00R\\x13nonForwardingAction\\x12:\\n\" +\n\t\"\\bmetadata\\x18\\x04 \\x01(\\v2\\x1e.envoy.config.core.v3.MetadataR\\bmetadata\\x12>\\n\" +\n\t\"\\tdecorator\\x18\\x05 \\x01(\\v2 .envoy.config.route.v3.DecoratorR\\tdecorator\\x12m\\n\" +\n\t\"\\x17typed_per_filter_config\\x18\\r \\x03(\\v26.envoy.config.route.v3.Route.TypedPerFilterConfigEntryR\\x14typedPerFilterConfig\\x12g\\n\" +\n\t\"\\x16request_headers_to_add\\x18\\t \\x03(\\v2'.envoy.config.core.v3.HeaderValueOptionB\\t\\xfaB\\x06\\x92\\x01\\x03\\x10\\xe8\\aR\\x13requestHeadersToAdd\\x12M\\n\" +\n\t\"\\x19request_headers_to_remove\\x18\\f \\x03(\\tB\\x12\\xfaB\\x0f\\x92\\x01\\f\\\"\\n\" +\n\t\"r\\b\\x10\\x01\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x16requestHeadersToRemove\\x12i\\n\" +\n\t\"\\x17response_headers_to_add\\x18\\n\" +\n\t\" \\x03(\\v2'.envoy.config.core.v3.HeaderValueOptionB\\t\\xfaB\\x06\\x92\\x01\\x03\\x10\\xe8\\aR\\x14responseHeadersToAdd\\x12O\\n\" +\n\t\"\\x1aresponse_headers_to_remove\\x18\\v \\x03(\\tB\\x12\\xfaB\\x0f\\x92\\x01\\f\\\"\\n\" +\n\t\"r\\b\\x10\\x01\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x17responseHeadersToRemove\\x128\\n\" +\n\t\"\\atracing\\x18\\x0f \\x01(\\v2\\x1e.envoy.config.route.v3.TracingR\\atracing\\x12m\\n\" +\n\t\"\\x1eper_request_buffer_limit_bytes\\x18\\x10 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x1aperRequestBufferLimitBytes\\x12\\x1f\\n\" +\n\t\"\\vstat_prefix\\x18\\x13 \\x01(\\tR\\n\" +\n\t\"statPrefix\\x12W\\n\" +\n\t\"\\x19request_body_buffer_limit\\x18\\x14 \\x01(\\v2\\x1c.google.protobuf.UInt64ValueR\\x16requestBodyBufferLimit\\x1a]\\n\" +\n\t\"\\x19TypedPerFilterConfigEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12*\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x14.google.protobuf.AnyR\\x05value:\\x028\\x01:\\x1f\\x9aň\\x1e\\x1a\\n\" +\n\t\"\\x18envoy.api.v2.route.RouteB\\r\\n\" +\n\t\"\\x06action\\x12\\x03\\xf8B\\x01J\\x04\\b\\x06\\x10\\aJ\\x04\\b\\b\\x10\\tR\\x11per_filter_config\\\"\\xb9\\v\\n\" +\n\t\"\\x0fWeightedCluster\\x12Z\\n\" +\n\t\"\\bclusters\\x18\\x01 \\x03(\\v24.envoy.config.route.v3.WeightedCluster.ClusterWeightB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\bclusters\\x12L\\n\" +\n\t\"\\ftotal_weight\\x18\\x03 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\vtotalWeight\\x12,\\n\" +\n\t\"\\x12runtime_key_prefix\\x18\\x02 \\x01(\\tR\\x10runtimeKeyPrefix\\x12.\\n\" +\n\t\"\\vheader_name\\x18\\x04 \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01H\\x00R\\n\" +\n\t\"headerName\\x12D\\n\" +\n\t\"\\x0fuse_hash_policy\\x18\\x05 \\x01(\\v2\\x1a.google.protobuf.BoolValueH\\x00R\\ruseHashPolicy\\x1a\\x92\\b\\n\" +\n\t\"\\rClusterWeight\\x12-\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\x19\\xf2\\x98\\xfe\\x8f\\x05\\x13\\x12\\x11cluster_specifierR\\x04name\\x12K\\n\" +\n\t\"\\x0ecluster_header\\x18\\f \\x01(\\tB$\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01\\xf2\\x98\\xfe\\x8f\\x05\\x13\\x12\\x11cluster_specifierR\\rclusterHeader\\x124\\n\" +\n\t\"\\x06weight\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR\\x06weight\\x12E\\n\" +\n\t\"\\x0emetadata_match\\x18\\x03 \\x01(\\v2\\x1e.envoy.config.core.v3.MetadataR\\rmetadataMatch\\x12g\\n\" +\n\t\"\\x16request_headers_to_add\\x18\\x04 \\x03(\\v2'.envoy.config.core.v3.HeaderValueOptionB\\t\\xfaB\\x06\\x92\\x01\\x03\\x10\\xe8\\aR\\x13requestHeadersToAdd\\x12K\\n\" +\n\t\"\\x19request_headers_to_remove\\x18\\t \\x03(\\tB\\x10\\xfaB\\r\\x92\\x01\\n\" +\n\t\"\\\"\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x16requestHeadersToRemove\\x12i\\n\" +\n\t\"\\x17response_headers_to_add\\x18\\x05 \\x03(\\v2'.envoy.config.core.v3.HeaderValueOptionB\\t\\xfaB\\x06\\x92\\x01\\x03\\x10\\xe8\\aR\\x14responseHeadersToAdd\\x12M\\n\" +\n\t\"\\x1aresponse_headers_to_remove\\x18\\x06 \\x03(\\tB\\x10\\xfaB\\r\\x92\\x01\\n\" +\n\t\"\\\"\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x17responseHeadersToRemove\\x12\\x85\\x01\\n\" +\n\t\"\\x17typed_per_filter_config\\x18\\n\" +\n\t\" \\x03(\\v2N.envoy.config.route.v3.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntryR\\x14typedPerFilterConfig\\x12?\\n\" +\n\t\"\\x14host_rewrite_literal\\x18\\v \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x02H\\x00R\\x12hostRewriteLiteral\\x1a]\\n\" +\n\t\"\\x19TypedPerFilterConfigEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12*\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x14.google.protobuf.AnyR\\x05value:\\x028\\x01:7\\x9aň\\x1e2\\n\" +\n\t\"0envoy.api.v2.route.WeightedCluster.ClusterWeightB\\x18\\n\" +\n\t\"\\x16host_rewrite_specifierJ\\x04\\b\\a\\x10\\bJ\\x04\\b\\b\\x10\\tR\\x11per_filter_config:)\\x9aň\\x1e$\\n\" +\n\t\"\\\"envoy.api.v2.route.WeightedClusterB\\x18\\n\" +\n\t\"\\x16random_value_specifier\\\"\\x8d\\x01\\n\" +\n\t\"\\x16ClusterSpecifierPlugin\\x12R\\n\" +\n\t\"\\textension\\x18\\x01 \\x01(\\v2*.envoy.config.core.v3.TypedExtensionConfigB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\textension\\x12\\x1f\\n\" +\n\t\"\\vis_optional\\x18\\x02 \\x01(\\bR\\n\" +\n\t\"isOptional\\\"\\xd3\\v\\n\" +\n\t\"\\n\" +\n\t\"RouteMatch\\x12\\x18\\n\" +\n\t\"\\x06prefix\\x18\\x01 \\x01(\\tH\\x00R\\x06prefix\\x12\\x14\\n\" +\n\t\"\\x04path\\x18\\x02 \\x01(\\tH\\x00R\\x04path\\x12N\\n\" +\n\t\"\\n\" +\n\t\"safe_regex\\x18\\n\" +\n\t\" \\x01(\\v2#.envoy.type.matcher.v3.RegexMatcherB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01H\\x00R\\tsafeRegex\\x12[\\n\" +\n\t\"\\x0fconnect_matcher\\x18\\f \\x01(\\v20.envoy.config.route.v3.RouteMatch.ConnectMatcherH\\x00R\\x0econnectMatcher\\x12K\\n\" +\n\t\"\\x15path_separated_prefix\\x18\\x0e \\x01(\\tB\\x15\\xfaB\\x12r\\x102\\x0e^[^?#]+[^?#/]$H\\x00R\\x13pathSeparatedPrefix\\x12X\\n\" +\n\t\"\\x11path_match_policy\\x18\\x0f \\x01(\\v2*.envoy.config.core.v3.TypedExtensionConfigH\\x00R\\x0fpathMatchPolicy\\x12A\\n\" +\n\t\"\\x0ecase_sensitive\\x18\\x04 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\rcaseSensitive\\x12Y\\n\" +\n\t\"\\x10runtime_fraction\\x18\\t \\x01(\\v2..envoy.config.core.v3.RuntimeFractionalPercentR\\x0fruntimeFraction\\x12>\\n\" +\n\t\"\\aheaders\\x18\\x06 \\x03(\\v2$.envoy.config.route.v3.HeaderMatcherR\\aheaders\\x12W\\n\" +\n\t\"\\x10query_parameters\\x18\\a \\x03(\\v2,.envoy.config.route.v3.QueryParameterMatcherR\\x0fqueryParameters\\x12>\\n\" +\n\t\"\\acookies\\x18\\x11 \\x03(\\v2$.envoy.config.route.v3.CookieMatcherR\\acookies\\x12K\\n\" +\n\t\"\\x04grpc\\x18\\b \\x01(\\v27.envoy.config.route.v3.RouteMatch.GrpcRouteMatchOptionsR\\x04grpc\\x12Y\\n\" +\n\t\"\\vtls_context\\x18\\v \\x01(\\v28.envoy.config.route.v3.RouteMatch.TlsContextMatchOptionsR\\n\" +\n\t\"tlsContext\\x12Q\\n\" +\n\t\"\\x10dynamic_metadata\\x18\\r \\x03(\\v2&.envoy.type.matcher.v3.MetadataMatcherR\\x0fdynamicMetadata\\x12L\\n\" +\n\t\"\\ffilter_state\\x18\\x10 \\x03(\\v2).envoy.type.matcher.v3.FilterStateMatcherR\\vfilterState\\x1aS\\n\" +\n\t\"\\x15GrpcRouteMatchOptions::\\x9aň\\x1e5\\n\" +\n\t\"3envoy.api.v2.route.RouteMatch.GrpcRouteMatchOptions\\x1a\\xc9\\x01\\n\" +\n\t\"\\x16TlsContextMatchOptions\\x128\\n\" +\n\t\"\\tpresented\\x18\\x01 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\tpresented\\x128\\n\" +\n\t\"\\tvalidated\\x18\\x02 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\tvalidated:;\\x9aň\\x1e6\\n\" +\n\t\"4envoy.api.v2.route.RouteMatch.TlsContextMatchOptions\\x1a\\x10\\n\" +\n\t\"\\x0eConnectMatcher:$\\x9aň\\x1e\\x1f\\n\" +\n\t\"\\x1denvoy.api.v2.route.RouteMatchB\\x15\\n\" +\n\t\"\\x0epath_specifier\\x12\\x03\\xf8B\\x01J\\x04\\b\\x05\\x10\\x06J\\x04\\b\\x03\\x10\\x04R\\x05regex\\\"\\xa8\\x06\\n\" +\n\t\"\\n\" +\n\t\"CorsPolicy\\x12_\\n\" +\n\t\"\\x19allow_origin_string_match\\x18\\v \\x03(\\v2$.envoy.type.matcher.v3.StringMatcherR\\x16allowOriginStringMatch\\x12#\\n\" +\n\t\"\\rallow_methods\\x18\\x02 \\x01(\\tR\\fallowMethods\\x12#\\n\" +\n\t\"\\rallow_headers\\x18\\x03 \\x01(\\tR\\fallowHeaders\\x12%\\n\" +\n\t\"\\x0eexpose_headers\\x18\\x04 \\x01(\\tR\\rexposeHeaders\\x12\\x17\\n\" +\n\t\"\\amax_age\\x18\\x05 \\x01(\\tR\\x06maxAge\\x12G\\n\" +\n\t\"\\x11allow_credentials\\x18\\x06 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\x10allowCredentials\\x12W\\n\" +\n\t\"\\x0efilter_enabled\\x18\\t \\x01(\\v2..envoy.config.core.v3.RuntimeFractionalPercentH\\x00R\\rfilterEnabled\\x12U\\n\" +\n\t\"\\x0eshadow_enabled\\x18\\n\" +\n\t\" \\x01(\\v2..envoy.config.core.v3.RuntimeFractionalPercentR\\rshadowEnabled\\x12[\\n\" +\n\t\"\\x1callow_private_network_access\\x18\\f \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\x19allowPrivateNetworkAccess\\x12a\\n\" +\n\t\"\\x1fforward_not_matching_preflights\\x18\\r \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\x1cforwardNotMatchingPreflights:$\\x9aň\\x1e\\x1f\\n\" +\n\t\"\\x1denvoy.api.v2.route.CorsPolicyB\\x13\\n\" +\n\t\"\\x11enabled_specifierJ\\x04\\b\\x01\\x10\\x02J\\x04\\b\\b\\x10\\tJ\\x04\\b\\a\\x10\\bR\\fallow_originR\\x12allow_origin_regexR\\aenabled\\\"\\xeb/\\n\" +\n\t\"\\vRouteAction\\x12#\\n\" +\n\t\"\\acluster\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01H\\x00R\\acluster\\x126\\n\" +\n\t\"\\x0ecluster_header\\x18\\x02 \\x01(\\tB\\r\\xfaB\\n\" +\n\t\"r\\b\\x10\\x01\\xc8\\x01\\x00\\xc0\\x01\\x01H\\x00R\\rclusterHeader\\x12U\\n\" +\n\t\"\\x11weighted_clusters\\x18\\x03 \\x01(\\v2&.envoy.config.route.v3.WeightedClusterH\\x00R\\x10weightedClusters\\x12:\\n\" +\n\t\"\\x18cluster_specifier_plugin\\x18% \\x01(\\tH\\x00R\\x16clusterSpecifierPlugin\\x12v\\n\" +\n\t\"\\x1finline_cluster_specifier_plugin\\x18' \\x01(\\v2-.envoy.config.route.v3.ClusterSpecifierPluginH\\x00R\\x1cinlineClusterSpecifierPlugin\\x12\\x8e\\x01\\n\" +\n\t\"\\x1fcluster_not_found_response_code\\x18\\x14 \\x01(\\x0e2>.envoy.config.route.v3.RouteAction.ClusterNotFoundResponseCodeB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\x1bclusterNotFoundResponseCode\\x12E\\n\" +\n\t\"\\x0emetadata_match\\x18\\x04 \\x01(\\v2\\x1e.envoy.config.core.v3.MetadataR\\rmetadataMatch\\x122\\n\" +\n\t\"\\x0eprefix_rewrite\\x18\\x05 \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x02R\\rprefixRewrite\\x12S\\n\" +\n\t\"\\rregex_rewrite\\x18  \\x01(\\v2..envoy.type.matcher.v3.RegexMatchAndSubstituteR\\fregexRewrite\\x12Z\\n\" +\n\t\"\\x13path_rewrite_policy\\x18) \\x01(\\v2*.envoy.config.core.v3.TypedExtensionConfigR\\x11pathRewritePolicy\\x12!\\n\" +\n\t\"\\fpath_rewrite\\x18- \\x01(\\tR\\vpathRewrite\\x12?\\n\" +\n\t\"\\x14host_rewrite_literal\\x18\\x06 \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x02H\\x01R\\x12hostRewriteLiteral\\x12H\\n\" +\n\t\"\\x11auto_host_rewrite\\x18\\a \\x01(\\v2\\x1a.google.protobuf.BoolValueH\\x01R\\x0fautoHostRewrite\\x12=\\n\" +\n\t\"\\x13host_rewrite_header\\x18\\x1d \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01H\\x01R\\x11hostRewriteHeader\\x12g\\n\" +\n\t\"\\x17host_rewrite_path_regex\\x18# \\x01(\\v2..envoy.type.matcher.v3.RegexMatchAndSubstituteH\\x01R\\x14hostRewritePathRegex\\x12#\\n\" +\n\t\"\\fhost_rewrite\\x18, \\x01(\\tH\\x01R\\vhostRewrite\\x125\\n\" +\n\t\"\\x17append_x_forwarded_host\\x18& \\x01(\\bR\\x14appendXForwardedHost\\x123\\n\" +\n\t\"\\atimeout\\x18\\b \\x01(\\v2\\x19.google.protobuf.DurationR\\atimeout\\x12<\\n\" +\n\t\"\\fidle_timeout\\x18\\x18 \\x01(\\v2\\x19.google.protobuf.DurationR\\vidleTimeout\\x12>\\n\" +\n\t\"\\rflush_timeout\\x18* \\x01(\\v2\\x19.google.protobuf.DurationR\\fflushTimeout\\x12V\\n\" +\n\t\"\\x11early_data_policy\\x18( \\x01(\\v2*.envoy.config.core.v3.TypedExtensionConfigR\\x0fearlyDataPolicy\\x12E\\n\" +\n\t\"\\fretry_policy\\x18\\t \\x01(\\v2\\\".envoy.config.route.v3.RetryPolicyR\\vretryPolicy\\x12O\\n\" +\n\t\"\\x19retry_policy_typed_config\\x18! \\x01(\\v2\\x14.google.protobuf.AnyR\\x16retryPolicyTypedConfig\\x12n\\n\" +\n\t\"\\x17request_mirror_policies\\x18\\x1e \\x03(\\v26.envoy.config.route.v3.RouteAction.RequestMirrorPolicyR\\x15requestMirrorPolicies\\x12K\\n\" +\n\t\"\\bpriority\\x18\\v \\x01(\\x0e2%.envoy.config.core.v3.RoutingPriorityB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\bpriority\\x12A\\n\" +\n\t\"\\vrate_limits\\x18\\r \\x03(\\v2 .envoy.config.route.v3.RateLimitR\\n\" +\n\t\"rateLimits\\x12\\\\\\n\" +\n\t\"\\x16include_vh_rate_limits\\x18\\x0e \\x01(\\v2\\x1a.google.protobuf.BoolValueB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x13includeVhRateLimits\\x12N\\n\" +\n\t\"\\vhash_policy\\x18\\x0f \\x03(\\v2-.envoy.config.route.v3.RouteAction.HashPolicyR\\n\" +\n\t\"hashPolicy\\x12B\\n\" +\n\t\"\\x04cors\\x18\\x11 \\x01(\\v2!.envoy.config.route.v3.CorsPolicyB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x04cors\\x12P\\n\" +\n\t\"\\x10max_grpc_timeout\\x18\\x17 \\x01(\\v2\\x19.google.protobuf.DurationB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x0emaxGrpcTimeout\\x12V\\n\" +\n\t\"\\x13grpc_timeout_offset\\x18\\x1c \\x01(\\v2\\x19.google.protobuf.DurationB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x11grpcTimeoutOffset\\x12Y\\n\" +\n\t\"\\x0fupgrade_configs\\x18\\x19 \\x03(\\v20.envoy.config.route.v3.RouteAction.UpgradeConfigR\\x0eupgradeConfigs\\x12g\\n\" +\n\t\"\\x18internal_redirect_policy\\x18\\\" \\x01(\\v2-.envoy.config.route.v3.InternalRedirectPolicyR\\x16internalRedirectPolicy\\x12\\x80\\x01\\n\" +\n\t\"\\x18internal_redirect_action\\x18\\x1a \\x01(\\x0e29.envoy.config.route.v3.RouteAction.InternalRedirectActionB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x16internalRedirectAction\\x12_\\n\" +\n\t\"\\x16max_internal_redirects\\x18\\x1f \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x14maxInternalRedirects\\x12E\\n\" +\n\t\"\\fhedge_policy\\x18\\x1b \\x01(\\v2\\\".envoy.config.route.v3.HedgePolicyR\\vhedgePolicy\\x12d\\n\" +\n\t\"\\x13max_stream_duration\\x18$ \\x01(\\v24.envoy.config.route.v3.RouteAction.MaxStreamDurationR\\x11maxStreamDuration\\x1a\\x88\\x05\\n\" +\n\t\"\\x13RequestMirrorPolicy\\x123\\n\" +\n\t\"\\acluster\\x18\\x01 \\x01(\\tB\\x19\\xf2\\x98\\xfe\\x8f\\x05\\x13\\x12\\x11cluster_specifierR\\acluster\\x12K\\n\" +\n\t\"\\x0ecluster_header\\x18\\x05 \\x01(\\tB$\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01\\xf2\\x98\\xfe\\x8f\\x05\\x13\\x12\\x11cluster_specifierR\\rclusterHeader\\x12Y\\n\" +\n\t\"\\x10runtime_fraction\\x18\\x03 \\x01(\\v2..envoy.config.core.v3.RuntimeFractionalPercentR\\x0fruntimeFraction\\x12?\\n\" +\n\t\"\\rtrace_sampled\\x18\\x04 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\ftraceSampled\\x12H\\n\" +\n\t\"!disable_shadow_host_suffix_append\\x18\\x06 \\x01(\\bR\\x1ddisableShadowHostSuffixAppend\\x12|\\n\" +\n\t\"\\x19request_headers_mutations\\x18\\a \\x03(\\v25.envoy.config.common.mutation_rules.v3.HeaderMutationB\\t\\xfaB\\x06\\x92\\x01\\x03\\x10\\xe8\\aR\\x17requestHeadersMutations\\x12=\\n\" +\n\t\"\\x14host_rewrite_literal\\x18\\b \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x02R\\x12hostRewriteLiteral:9\\x9aň\\x1e4\\n\" +\n\t\"2envoy.api.v2.route.RouteAction.RequestMirrorPolicyJ\\x04\\b\\x02\\x10\\x03R\\vruntime_key\\x1a\\xd6\\v\\n\" +\n\t\"\\n\" +\n\t\"HashPolicy\\x12N\\n\" +\n\t\"\\x06header\\x18\\x01 \\x01(\\v24.envoy.config.route.v3.RouteAction.HashPolicy.HeaderH\\x00R\\x06header\\x12N\\n\" +\n\t\"\\x06cookie\\x18\\x02 \\x01(\\v24.envoy.config.route.v3.RouteAction.HashPolicy.CookieH\\x00R\\x06cookie\\x12y\\n\" +\n\t\"\\x15connection_properties\\x18\\x03 \\x01(\\v2B.envoy.config.route.v3.RouteAction.HashPolicy.ConnectionPropertiesH\\x00R\\x14connectionProperties\\x12g\\n\" +\n\t\"\\x0fquery_parameter\\x18\\x05 \\x01(\\v2<.envoy.config.route.v3.RouteAction.HashPolicy.QueryParameterH\\x00R\\x0equeryParameter\\x12^\\n\" +\n\t\"\\ffilter_state\\x18\\x06 \\x01(\\v29.envoy.config.route.v3.RouteAction.HashPolicy.FilterStateH\\x00R\\vfilterState\\x12\\x1a\\n\" +\n\t\"\\bterminal\\x18\\x04 \\x01(\\bR\\bterminal\\x1a\\xc6\\x01\\n\" +\n\t\"\\x06Header\\x12.\\n\" +\n\t\"\\vheader_name\\x18\\x01 \\x01(\\tB\\r\\xfaB\\n\" +\n\t\"r\\b\\x10\\x01\\xc8\\x01\\x00\\xc0\\x01\\x01R\\n\" +\n\t\"headerName\\x12S\\n\" +\n\t\"\\rregex_rewrite\\x18\\x02 \\x01(\\v2..envoy.type.matcher.v3.RegexMatchAndSubstituteR\\fregexRewrite:7\\x9aň\\x1e2\\n\" +\n\t\"0envoy.api.v2.route.RouteAction.HashPolicy.Header\\x1a_\\n\" +\n\t\"\\x0fCookieAttribute\\x12%\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\x11\\xfaB\\x0er\\f\\x10\\x01(\\x80\\x80\\x01\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x04name\\x12%\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\tB\\x0f\\xfaB\\fr\\n\" +\n\t\"(\\x80\\x80\\x01\\xc8\\x01\\x00\\xc0\\x01\\x02R\\x05value\\x1a\\xfe\\x01\\n\" +\n\t\"\\x06Cookie\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x12+\\n\" +\n\t\"\\x03ttl\\x18\\x02 \\x01(\\v2\\x19.google.protobuf.DurationR\\x03ttl\\x12\\x12\\n\" +\n\t\"\\x04path\\x18\\x03 \\x01(\\tR\\x04path\\x12]\\n\" +\n\t\"\\n\" +\n\t\"attributes\\x18\\x04 \\x03(\\v2=.envoy.config.route.v3.RouteAction.HashPolicy.CookieAttributeR\\n\" +\n\t\"attributes:7\\x9aň\\x1e2\\n\" +\n\t\"0envoy.api.v2.route.RouteAction.HashPolicy.Cookie\\x1az\\n\" +\n\t\"\\x14ConnectionProperties\\x12\\x1b\\n\" +\n\t\"\\tsource_ip\\x18\\x01 \\x01(\\bR\\bsourceIp:E\\x9aň\\x1e@\\n\" +\n\t\">envoy.api.v2.route.RouteAction.HashPolicy.ConnectionProperties\\x1an\\n\" +\n\t\"\\x0eQueryParameter\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name:?\\x9aň\\x1e:\\n\" +\n\t\"8envoy.api.v2.route.RouteAction.HashPolicy.QueryParameter\\x1af\\n\" +\n\t\"\\vFilterState\\x12\\x19\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x03key:<\\x9aň\\x1e7\\n\" +\n\t\"5envoy.api.v2.route.RouteAction.HashPolicy.FilterState:0\\x9aň\\x1e+\\n\" +\n\t\")envoy.api.v2.route.RouteAction.HashPolicyB\\x17\\n\" +\n\t\"\\x10policy_specifier\\x12\\x03\\xf8B\\x01\\x1a\\xa3\\x03\\n\" +\n\t\"\\rUpgradeConfig\\x120\\n\" +\n\t\"\\fupgrade_type\\x18\\x01 \\x01(\\tB\\r\\xfaB\\n\" +\n\t\"r\\b\\x10\\x01\\xc8\\x01\\x00\\xc0\\x01\\x02R\\vupgradeType\\x124\\n\" +\n\t\"\\aenabled\\x18\\x02 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\aenabled\\x12e\\n\" +\n\t\"\\x0econnect_config\\x18\\x03 \\x01(\\v2>.envoy.config.route.v3.RouteAction.UpgradeConfig.ConnectConfigR\\rconnectConfig\\x1a\\x8d\\x01\\n\" +\n\t\"\\rConnectConfig\\x12]\\n\" +\n\t\"\\x15proxy_protocol_config\\x18\\x01 \\x01(\\v2).envoy.config.core.v3.ProxyProtocolConfigR\\x13proxyProtocolConfig\\x12\\x1d\\n\" +\n\t\"\\n\" +\n\t\"allow_post\\x18\\x02 \\x01(\\bR\\tallowPost:3\\x9aň\\x1e.\\n\" +\n\t\",envoy.api.v2.route.RouteAction.UpgradeConfig\\x1a\\x88\\x02\\n\" +\n\t\"\\x11MaxStreamDuration\\x12I\\n\" +\n\t\"\\x13max_stream_duration\\x18\\x01 \\x01(\\v2\\x19.google.protobuf.DurationR\\x11maxStreamDuration\\x12P\\n\" +\n\t\"\\x17grpc_timeout_header_max\\x18\\x02 \\x01(\\v2\\x19.google.protobuf.DurationR\\x14grpcTimeoutHeaderMax\\x12V\\n\" +\n\t\"\\x1agrpc_timeout_header_offset\\x18\\x03 \\x01(\\v2\\x19.google.protobuf.DurationR\\x17grpcTimeoutHeaderOffset\\\"`\\n\" +\n\t\"\\x1bClusterNotFoundResponseCode\\x12\\x17\\n\" +\n\t\"\\x13SERVICE_UNAVAILABLE\\x10\\x00\\x12\\r\\n\" +\n\t\"\\tNOT_FOUND\\x10\\x01\\x12\\x19\\n\" +\n\t\"\\x15INTERNAL_SERVER_ERROR\\x10\\x02\\\"^\\n\" +\n\t\"\\x16InternalRedirectAction\\x12\\\"\\n\" +\n\t\"\\x1ePASS_THROUGH_INTERNAL_REDIRECT\\x10\\x00\\x12\\x1c\\n\" +\n\t\"\\x18HANDLE_INTERNAL_REDIRECT\\x10\\x01\\x1a\\x02\\x18\\x01:%\\x9aň\\x1e \\n\" +\n\t\"\\x1eenvoy.api.v2.route.RouteActionB\\x18\\n\" +\n\t\"\\x11cluster_specifier\\x12\\x03\\xf8B\\x01B\\x18\\n\" +\n\t\"\\x16host_rewrite_specifierJ\\x04\\b\\f\\x10\\rJ\\x04\\b\\x12\\x10\\x13J\\x04\\b\\x13\\x10\\x14J\\x04\\b\\x10\\x10\\x11J\\x04\\b\\x16\\x10\\x17J\\x04\\b\\x15\\x10\\x16J\\x04\\b\\n\" +\n\t\"\\x10\\vR\\x15request_mirror_policy\\\"\\xbf\\x10\\n\" +\n\t\"\\vRetryPolicy\\x12\\x19\\n\" +\n\t\"\\bretry_on\\x18\\x01 \\x01(\\tR\\aretryOn\\x12R\\n\" +\n\t\"\\vnum_retries\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\x13\\xf2\\x98\\xfe\\x8f\\x05\\r\\n\" +\n\t\"\\vmax_retriesR\\n\" +\n\t\"numRetries\\x12A\\n\" +\n\t\"\\x0fper_try_timeout\\x18\\x03 \\x01(\\v2\\x19.google.protobuf.DurationR\\rperTryTimeout\\x12J\\n\" +\n\t\"\\x14per_try_idle_timeout\\x18\\r \\x01(\\v2\\x19.google.protobuf.DurationR\\x11perTryIdleTimeout\\x12W\\n\" +\n\t\"\\x0eretry_priority\\x18\\x04 \\x01(\\v20.envoy.config.route.v3.RetryPolicy.RetryPriorityR\\rretryPriority\\x12g\\n\" +\n\t\"\\x14retry_host_predicate\\x18\\x05 \\x03(\\v25.envoy.config.route.v3.RetryPolicy.RetryHostPredicateR\\x12retryHostPredicate\\x12d\\n\" +\n\t\"\\x18retry_options_predicates\\x18\\f \\x03(\\v2*.envoy.config.core.v3.TypedExtensionConfigR\\x16retryOptionsPredicates\\x12H\\n\" +\n\t\"!host_selection_retry_max_attempts\\x18\\x06 \\x01(\\x03R\\x1dhostSelectionRetryMaxAttempts\\x124\\n\" +\n\t\"\\x16retriable_status_codes\\x18\\a \\x03(\\rR\\x14retriableStatusCodes\\x12U\\n\" +\n\t\"\\x0eretry_back_off\\x18\\b \\x01(\\v2/.envoy.config.route.v3.RetryPolicy.RetryBackOffR\\fretryBackOff\\x12x\\n\" +\n\t\"\\x1brate_limited_retry_back_off\\x18\\v \\x01(\\v2:.envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOffR\\x17rateLimitedRetryBackOff\\x12Q\\n\" +\n\t\"\\x11retriable_headers\\x18\\t \\x03(\\v2$.envoy.config.route.v3.HeaderMatcherR\\x10retriableHeaders\\x12`\\n\" +\n\t\"\\x19retriable_request_headers\\x18\\n\" +\n\t\" \\x03(\\v2$.envoy.config.route.v3.HeaderMatcherR\\x17retriableRequestHeaders\\x1a\\xb9\\x01\\n\" +\n\t\"\\rRetryPriority\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x129\\n\" +\n\t\"\\ftyped_config\\x18\\x03 \\x01(\\v2\\x14.google.protobuf.AnyH\\x00R\\vtypedConfig:3\\x9aň\\x1e.\\n\" +\n\t\",envoy.api.v2.route.RetryPolicy.RetryPriorityB\\r\\n\" +\n\t\"\\vconfig_typeJ\\x04\\b\\x02\\x10\\x03R\\x06config\\x1a\\xc3\\x01\\n\" +\n\t\"\\x12RetryHostPredicate\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x129\\n\" +\n\t\"\\ftyped_config\\x18\\x03 \\x01(\\v2\\x14.google.protobuf.AnyH\\x00R\\vtypedConfig:8\\x9aň\\x1e3\\n\" +\n\t\"1envoy.api.v2.route.RetryPolicy.RetryHostPredicateB\\r\\n\" +\n\t\"\\vconfig_typeJ\\x04\\b\\x02\\x10\\x03R\\x06config\\x1a\\xd6\\x01\\n\" +\n\t\"\\fRetryBackOff\\x12J\\n\" +\n\t\"\\rbase_interval\\x18\\x01 \\x01(\\v2\\x19.google.protobuf.DurationB\\n\" +\n\t\"\\xfaB\\a\\xaa\\x01\\x04\\b\\x01*\\x00R\\fbaseInterval\\x12F\\n\" +\n\t\"\\fmax_interval\\x18\\x02 \\x01(\\v2\\x19.google.protobuf.DurationB\\b\\xfaB\\x05\\xaa\\x01\\x02*\\x00R\\vmaxInterval:2\\x9aň\\x1e-\\n\" +\n\t\"+envoy.api.v2.route.RetryPolicy.RetryBackOff\\x1a\\x88\\x01\\n\" +\n\t\"\\vResetHeader\\x12!\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\r\\xfaB\\n\" +\n\t\"r\\b\\x10\\x01\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x04name\\x12V\\n\" +\n\t\"\\x06format\\x18\\x02 \\x01(\\x0e24.envoy.config.route.v3.RetryPolicy.ResetHeaderFormatB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\x06format\\x1a\\xc0\\x01\\n\" +\n\t\"\\x17RateLimitedRetryBackOff\\x12]\\n\" +\n\t\"\\rreset_headers\\x18\\x01 \\x03(\\v2..envoy.config.route.v3.RetryPolicy.ResetHeaderB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\fresetHeaders\\x12F\\n\" +\n\t\"\\fmax_interval\\x18\\x02 \\x01(\\v2\\x19.google.protobuf.DurationB\\b\\xfaB\\x05\\xaa\\x01\\x02*\\x00R\\vmaxInterval\\\"4\\n\" +\n\t\"\\x11ResetHeaderFormat\\x12\\v\\n\" +\n\t\"\\aSECONDS\\x10\\x00\\x12\\x12\\n\" +\n\t\"\\x0eUNIX_TIMESTAMP\\x10\\x01:%\\x9aň\\x1e \\n\" +\n\t\"\\x1eenvoy.api.v2.route.RetryPolicy\\\"\\x9c\\x02\\n\" +\n\t\"\\vHedgePolicy\\x12P\\n\" +\n\t\"\\x10initial_requests\\x18\\x01 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\a\\xfaB\\x04*\\x02(\\x01R\\x0finitialRequests\\x12\\\\\\n\" +\n\t\"\\x19additional_request_chance\\x18\\x02 \\x01(\\v2 .envoy.type.v3.FractionalPercentR\\x17additionalRequestChance\\x126\\n\" +\n\t\"\\x18hedge_on_per_try_timeout\\x18\\x03 \\x01(\\bR\\x14hedgeOnPerTryTimeout:%\\x9aň\\x1e \\n\" +\n\t\"\\x1eenvoy.api.v2.route.HedgePolicy\\\"\\xe1\\x05\\n\" +\n\t\"\\x0eRedirectAction\\x12'\\n\" +\n\t\"\\x0ehttps_redirect\\x18\\x04 \\x01(\\bH\\x00R\\rhttpsRedirect\\x12)\\n\" +\n\t\"\\x0fscheme_redirect\\x18\\a \\x01(\\tH\\x00R\\x0eschemeRedirect\\x120\\n\" +\n\t\"\\rhost_redirect\\x18\\x01 \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x02R\\fhostRedirect\\x12#\\n\" +\n\t\"\\rport_redirect\\x18\\b \\x01(\\rR\\fportRedirect\\x122\\n\" +\n\t\"\\rpath_redirect\\x18\\x02 \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x02H\\x01R\\fpathRedirect\\x124\\n\" +\n\t\"\\x0eprefix_rewrite\\x18\\x05 \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x02H\\x01R\\rprefixRewrite\\x12U\\n\" +\n\t\"\\rregex_rewrite\\x18\\t \\x01(\\v2..envoy.type.matcher.v3.RegexMatchAndSubstituteH\\x01R\\fregexRewrite\\x12i\\n\" +\n\t\"\\rresponse_code\\x18\\x03 \\x01(\\x0e2:.envoy.config.route.v3.RedirectAction.RedirectResponseCodeB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\fresponseCode\\x12\\x1f\\n\" +\n\t\"\\vstrip_query\\x18\\x06 \\x01(\\bR\\n\" +\n\t\"stripQuery\\\"w\\n\" +\n\t\"\\x14RedirectResponseCode\\x12\\x15\\n\" +\n\t\"\\x11MOVED_PERMANENTLY\\x10\\x00\\x12\\t\\n\" +\n\t\"\\x05FOUND\\x10\\x01\\x12\\r\\n\" +\n\t\"\\tSEE_OTHER\\x10\\x02\\x12\\x16\\n\" +\n\t\"\\x12TEMPORARY_REDIRECT\\x10\\x03\\x12\\x16\\n\" +\n\t\"\\x12PERMANENT_REDIRECT\\x10\\x04:(\\x9aň\\x1e#\\n\" +\n\t\"!envoy.api.v2.route.RedirectActionB\\x1a\\n\" +\n\t\"\\x18scheme_rewrite_specifierB\\x18\\n\" +\n\t\"\\x16path_rewrite_specifier\\\"\\xf2\\x01\\n\" +\n\t\"\\x14DirectResponseAction\\x12#\\n\" +\n\t\"\\x06status\\x18\\x01 \\x01(\\rB\\v\\xfaB\\b*\\x06\\x10\\xd8\\x04(\\xc8\\x01R\\x06status\\x124\\n\" +\n\t\"\\x04body\\x18\\x02 \\x01(\\v2 .envoy.config.core.v3.DataSourceR\\x04body\\x12O\\n\" +\n\t\"\\vbody_format\\x18\\x03 \\x01(\\v2..envoy.config.core.v3.SubstitutionFormatStringR\\n\" +\n\t\"bodyFormat:.\\x9aň\\x1e)\\n\" +\n\t\"'envoy.api.v2.route.DirectResponseAction\\\"\\x15\\n\" +\n\t\"\\x13NonForwardingAction\\\"\\x91\\x01\\n\" +\n\t\"\\tDecorator\\x12%\\n\" +\n\t\"\\toperation\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\toperation\\x128\\n\" +\n\t\"\\tpropagate\\x18\\x02 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\tpropagate:#\\x9aň\\x1e\\x1e\\n\" +\n\t\"\\x1cenvoy.api.v2.route.Decorator\\\"\\x9f\\x03\\n\" +\n\t\"\\aTracing\\x12I\\n\" +\n\t\"\\x0fclient_sampling\\x18\\x01 \\x01(\\v2 .envoy.type.v3.FractionalPercentR\\x0eclientSampling\\x12I\\n\" +\n\t\"\\x0frandom_sampling\\x18\\x02 \\x01(\\v2 .envoy.type.v3.FractionalPercentR\\x0erandomSampling\\x12K\\n\" +\n\t\"\\x10overall_sampling\\x18\\x03 \\x01(\\v2 .envoy.type.v3.FractionalPercentR\\x0foverallSampling\\x12A\\n\" +\n\t\"\\vcustom_tags\\x18\\x04 \\x03(\\v2 .envoy.type.tracing.v3.CustomTagR\\n\" +\n\t\"customTags\\x12\\x1c\\n\" +\n\t\"\\toperation\\x18\\x05 \\x01(\\tR\\toperation\\x12-\\n\" +\n\t\"\\x12upstream_operation\\x18\\x06 \\x01(\\tR\\x11upstreamOperation:!\\x9aň\\x1e\\x1c\\n\" +\n\t\"\\x1aenvoy.api.v2.route.Tracing\\\"\\xb4\\x01\\n\" +\n\t\"\\x0eVirtualCluster\\x12>\\n\" +\n\t\"\\aheaders\\x18\\x04 \\x03(\\v2$.envoy.config.route.v3.HeaderMatcherR\\aheaders\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x02 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name:(\\x9aň\\x1e#\\n\" +\n\t\"!envoy.api.v2.route.VirtualClusterJ\\x04\\b\\x01\\x10\\x02J\\x04\\b\\x03\\x10\\x04R\\apatternR\\x06method\\\"\\xbb!\\n\" +\n\t\"\\tRateLimit\\x12;\\n\" +\n\t\"\\x05stage\\x18\\x01 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\a\\xfaB\\x04*\\x02\\x18\\n\" +\n\t\"R\\x05stage\\x12\\x1f\\n\" +\n\t\"\\vdisable_key\\x18\\x02 \\x01(\\tR\\n\" +\n\t\"disableKey\\x12K\\n\" +\n\t\"\\aactions\\x18\\x03 \\x03(\\v2'.envoy.config.route.v3.RateLimit.ActionB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\aactions\\x12?\\n\" +\n\t\"\\x05limit\\x18\\x04 \\x01(\\v2).envoy.config.route.v3.RateLimit.OverrideR\\x05limit\\x12L\\n\" +\n\t\"\\vhits_addend\\x18\\x05 \\x01(\\v2+.envoy.config.route.v3.RateLimit.HitsAddendR\\n\" +\n\t\"hitsAddend\\x12/\\n\" +\n\t\"\\x14apply_on_stream_done\\x18\\x06 \\x01(\\bR\\x11applyOnStreamDone\\x1a\\xaf\\x1b\\n\" +\n\t\"\\x06Action\\x12^\\n\" +\n\t\"\\x0esource_cluster\\x18\\x01 \\x01(\\v25.envoy.config.route.v3.RateLimit.Action.SourceClusterH\\x00R\\rsourceCluster\\x12m\\n\" +\n\t\"\\x13destination_cluster\\x18\\x02 \\x01(\\v2:.envoy.config.route.v3.RateLimit.Action.DestinationClusterH\\x00R\\x12destinationCluster\\x12a\\n\" +\n\t\"\\x0frequest_headers\\x18\\x03 \\x01(\\v26.envoy.config.route.v3.RateLimit.Action.RequestHeadersH\\x00R\\x0erequestHeaders\\x12d\\n\" +\n\t\"\\x10query_parameters\\x18\\f \\x01(\\v27.envoy.config.route.v3.RateLimit.Action.QueryParametersH\\x00R\\x0fqueryParameters\\x12^\\n\" +\n\t\"\\x0eremote_address\\x18\\x04 \\x01(\\v25.envoy.config.route.v3.RateLimit.Action.RemoteAddressH\\x00R\\rremoteAddress\\x12U\\n\" +\n\t\"\\vgeneric_key\\x18\\x05 \\x01(\\v22.envoy.config.route.v3.RateLimit.Action.GenericKeyH\\x00R\\n\" +\n\t\"genericKey\\x12h\\n\" +\n\t\"\\x12header_value_match\\x18\\x06 \\x01(\\v28.envoy.config.route.v3.RateLimit.Action.HeaderValueMatchH\\x00R\\x10headerValueMatch\\x12w\\n\" +\n\t\"\\x10dynamic_metadata\\x18\\a \\x01(\\v27.envoy.config.route.v3.RateLimit.Action.DynamicMetaDataB\\x11\\x92ǆ\\xd8\\x04\\x033.0\\xb8\\xee\\xf2\\xd2\\x05\\x01\\x18\\x01H\\x00R\\x0fdynamicMetadata\\x12N\\n\" +\n\t\"\\bmetadata\\x18\\b \\x01(\\v20.envoy.config.route.v3.RateLimit.Action.MetaDataH\\x00R\\bmetadata\\x12J\\n\" +\n\t\"\\textension\\x18\\t \\x01(\\v2*.envoy.config.core.v3.TypedExtensionConfigH\\x00R\\textension\\x12q\\n\" +\n\t\"\\x15masked_remote_address\\x18\\n\" +\n\t\" \\x01(\\v2;.envoy.config.route.v3.RateLimit.Action.MaskedRemoteAddressH\\x00R\\x13maskedRemoteAddress\\x12\\x81\\x01\\n\" +\n\t\"\\x1bquery_parameter_value_match\\x18\\v \\x01(\\v2@.envoy.config.route.v3.RateLimit.Action.QueryParameterValueMatchH\\x00R\\x18queryParameterValueMatch\\x1aI\\n\" +\n\t\"\\rSourceCluster:8\\x9aň\\x1e3\\n\" +\n\t\"1envoy.api.v2.route.RateLimit.Action.SourceCluster\\x1aS\\n\" +\n\t\"\\x12DestinationCluster:=\\x9aň\\x1e8\\n\" +\n\t\"6envoy.api.v2.route.RateLimit.Action.DestinationCluster\\x1a\\xd1\\x01\\n\" +\n\t\"\\x0eRequestHeaders\\x12.\\n\" +\n\t\"\\vheader_name\\x18\\x01 \\x01(\\tB\\r\\xfaB\\n\" +\n\t\"r\\b\\x10\\x01\\xc8\\x01\\x00\\xc0\\x01\\x01R\\n\" +\n\t\"headerName\\x12.\\n\" +\n\t\"\\x0edescriptor_key\\x18\\x02 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\rdescriptorKey\\x12$\\n\" +\n\t\"\\x0eskip_if_absent\\x18\\x03 \\x01(\\bR\\fskipIfAbsent:9\\x9aň\\x1e4\\n\" +\n\t\"2envoy.api.v2.route.RateLimit.Action.RequestHeaders\\x1a\\xa2\\x01\\n\" +\n\t\"\\x0fQueryParameters\\x129\\n\" +\n\t\"\\x14query_parameter_name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x12queryParameterName\\x12.\\n\" +\n\t\"\\x0edescriptor_key\\x18\\x02 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\rdescriptorKey\\x12$\\n\" +\n\t\"\\x0eskip_if_absent\\x18\\x03 \\x01(\\bR\\fskipIfAbsent\\x1aI\\n\" +\n\t\"\\rRemoteAddress:8\\x9aň\\x1e3\\n\" +\n\t\"1envoy.api.v2.route.RateLimit.Action.RemoteAddress\\x1a\\xbe\\x01\\n\" +\n\t\"\\x13MaskedRemoteAddress\\x12R\\n\" +\n\t\"\\x12v4_prefix_mask_len\\x18\\x01 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\a\\xfaB\\x04*\\x02\\x18 R\\x0fv4PrefixMaskLen\\x12S\\n\" +\n\t\"\\x12v6_prefix_mask_len\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\b\\xfaB\\x05*\\x03\\x18\\x80\\x01R\\x0fv6PrefixMaskLen\\x1a\\xc3\\x01\\n\" +\n\t\"\\n\" +\n\t\"GenericKey\\x122\\n\" +\n\t\"\\x10descriptor_value\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x0fdescriptorValue\\x12#\\n\" +\n\t\"\\rdefault_value\\x18\\x03 \\x01(\\tR\\fdefaultValue\\x12%\\n\" +\n\t\"\\x0edescriptor_key\\x18\\x02 \\x01(\\tR\\rdescriptorKey:5\\x9aň\\x1e0\\n\" +\n\t\".envoy.api.v2.route.RateLimit.Action.GenericKey\\x1a\\xd8\\x02\\n\" +\n\t\"\\x10HeaderValueMatch\\x122\\n\" +\n\t\"\\x10descriptor_value\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x0fdescriptorValue\\x12#\\n\" +\n\t\"\\rdefault_value\\x18\\x05 \\x01(\\tR\\fdefaultValue\\x12%\\n\" +\n\t\"\\x0edescriptor_key\\x18\\x04 \\x01(\\tR\\rdescriptorKey\\x12=\\n\" +\n\t\"\\fexpect_match\\x18\\x02 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\vexpectMatch\\x12H\\n\" +\n\t\"\\aheaders\\x18\\x03 \\x03(\\v2$.envoy.config.route.v3.HeaderMatcherB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\aheaders:;\\x9aň\\x1e6\\n\" +\n\t\"4envoy.api.v2.route.RateLimit.Action.HeaderValueMatch\\x1a\\xb8\\x01\\n\" +\n\t\"\\x0fDynamicMetaData\\x12.\\n\" +\n\t\"\\x0edescriptor_key\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\rdescriptorKey\\x12P\\n\" +\n\t\"\\fmetadata_key\\x18\\x02 \\x01(\\v2#.envoy.type.metadata.v3.MetadataKeyB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\vmetadataKey\\x12#\\n\" +\n\t\"\\rdefault_value\\x18\\x03 \\x01(\\tR\\fdefaultValue\\x1a\\xda\\x02\\n\" +\n\t\"\\bMetaData\\x12.\\n\" +\n\t\"\\x0edescriptor_key\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\rdescriptorKey\\x12P\\n\" +\n\t\"\\fmetadata_key\\x18\\x02 \\x01(\\v2#.envoy.type.metadata.v3.MetadataKeyB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\vmetadataKey\\x12#\\n\" +\n\t\"\\rdefault_value\\x18\\x03 \\x01(\\tR\\fdefaultValue\\x12Y\\n\" +\n\t\"\\x06source\\x18\\x04 \\x01(\\x0e27.envoy.config.route.v3.RateLimit.Action.MetaData.SourceB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\x06source\\x12$\\n\" +\n\t\"\\x0eskip_if_absent\\x18\\x05 \\x01(\\bR\\fskipIfAbsent\\\"&\\n\" +\n\t\"\\x06Source\\x12\\v\\n\" +\n\t\"\\aDYNAMIC\\x10\\x00\\x12\\x0f\\n\" +\n\t\"\\vROUTE_ENTRY\\x10\\x01\\x1a\\xbc\\x02\\n\" +\n\t\"\\x18QueryParameterValueMatch\\x122\\n\" +\n\t\"\\x10descriptor_value\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x0fdescriptorValue\\x12#\\n\" +\n\t\"\\rdefault_value\\x18\\x05 \\x01(\\tR\\fdefaultValue\\x12%\\n\" +\n\t\"\\x0edescriptor_key\\x18\\x04 \\x01(\\tR\\rdescriptorKey\\x12=\\n\" +\n\t\"\\fexpect_match\\x18\\x02 \\x01(\\v2\\x1a.google.protobuf.BoolValueR\\vexpectMatch\\x12a\\n\" +\n\t\"\\x10query_parameters\\x18\\x03 \\x03(\\v2,.envoy.config.route.v3.QueryParameterMatcherB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\x0fqueryParameters:*\\x9aň\\x1e%\\n\" +\n\t\"#envoy.api.v2.route.RateLimit.ActionB\\x17\\n\" +\n\t\"\\x10action_specifier\\x12\\x03\\xf8B\\x01\\x1a\\xf2\\x01\\n\" +\n\t\"\\bOverride\\x12f\\n\" +\n\t\"\\x10dynamic_metadata\\x18\\x01 \\x01(\\v29.envoy.config.route.v3.RateLimit.Override.DynamicMetadataH\\x00R\\x0fdynamicMetadata\\x1ac\\n\" +\n\t\"\\x0fDynamicMetadata\\x12P\\n\" +\n\t\"\\fmetadata_key\\x18\\x01 \\x01(\\v2#.envoy.type.metadata.v3.MetadataKeyB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\vmetadataKeyB\\x19\\n\" +\n\t\"\\x12override_specifier\\x12\\x03\\xf8B\\x01\\x1aw\\n\" +\n\t\"\\n\" +\n\t\"HitsAddend\\x12A\\n\" +\n\t\"\\x06number\\x18\\x01 \\x01(\\v2\\x1c.google.protobuf.UInt64ValueB\\v\\xfaB\\b2\\x06\\x18\\x80\\x94\\xeb\\xdc\\x03R\\x06number\\x12&\\n\" +\n\t\"\\x06format\\x18\\x02 \\x01(\\tB\\x0e\\xfaB\\vr\\t:\\x01%B\\x01%\\xd0\\x01\\x01R\\x06format:#\\x9aň\\x1e\\x1e\\n\" +\n\t\"\\x1cenvoy.api.v2.route.RateLimit\\\"\\xe6\\x05\\n\" +\n\t\"\\rHeaderMatcher\\x12!\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\r\\xfaB\\n\" +\n\t\"r\\b\\x10\\x01\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x04name\\x12.\\n\" +\n\t\"\\vexact_match\\x18\\x04 \\x01(\\tB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01H\\x00R\\n\" +\n\t\"exactMatch\\x12\\\\\\n\" +\n\t\"\\x10safe_regex_match\\x18\\v \\x01(\\v2#.envoy.type.matcher.v3.RegexMatcherB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01H\\x00R\\x0esafeRegexMatch\\x12<\\n\" +\n\t\"\\vrange_match\\x18\\x06 \\x01(\\v2\\x19.envoy.type.v3.Int64RangeH\\x00R\\n\" +\n\t\"rangeMatch\\x12%\\n\" +\n\t\"\\rpresent_match\\x18\\a \\x01(\\bH\\x00R\\fpresentMatch\\x127\\n\" +\n\t\"\\fprefix_match\\x18\\t \\x01(\\tB\\x12\\xfaB\\x04r\\x02\\x10\\x01\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01H\\x00R\\vprefixMatch\\x127\\n\" +\n\t\"\\fsuffix_match\\x18\\n\" +\n\t\" \\x01(\\tB\\x12\\xfaB\\x04r\\x02\\x10\\x01\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01H\\x00R\\vsuffixMatch\\x12;\\n\" +\n\t\"\\x0econtains_match\\x18\\f \\x01(\\tB\\x12\\xfaB\\x04r\\x02\\x10\\x01\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01H\\x00R\\rcontainsMatch\\x12I\\n\" +\n\t\"\\fstring_match\\x18\\r \\x01(\\v2$.envoy.type.matcher.v3.StringMatcherH\\x00R\\vstringMatch\\x12!\\n\" +\n\t\"\\finvert_match\\x18\\b \\x01(\\bR\\vinvertMatch\\x12@\\n\" +\n\t\"\\x1dtreat_missing_header_as_empty\\x18\\x0e \\x01(\\bR\\x19treatMissingHeaderAsEmpty:'\\x9aň\\x1e\\\"\\n\" +\n\t\" envoy.api.v2.route.HeaderMatcherB\\x18\\n\" +\n\t\"\\x16header_match_specifierJ\\x04\\b\\x02\\x10\\x03J\\x04\\b\\x03\\x10\\x04J\\x04\\b\\x05\\x10\\x06R\\vregex_match\\\"\\xa1\\x02\\n\" +\n\t\"\\x15QueryParameterMatcher\\x12\\x1e\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\n\" +\n\t\"\\xfaB\\ar\\x05\\x10\\x01(\\x80\\bR\\x04name\\x12S\\n\" +\n\t\"\\fstring_match\\x18\\x05 \\x01(\\v2$.envoy.type.matcher.v3.StringMatcherB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01H\\x00R\\vstringMatch\\x12%\\n\" +\n\t\"\\rpresent_match\\x18\\x06 \\x01(\\bH\\x00R\\fpresentMatch:/\\x9aň\\x1e*\\n\" +\n\t\"(envoy.api.v2.route.QueryParameterMatcherB!\\n\" +\n\t\"\\x1fquery_parameter_match_specifierJ\\x04\\b\\x03\\x10\\x04J\\x04\\b\\x04\\x10\\x05R\\x05valueR\\x05regex\\\"\\xa5\\x01\\n\" +\n\t\"\\rCookieMatcher\\x12\\x1e\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\n\" +\n\t\"\\xfaB\\ar\\x05\\x10\\x01(\\x80\\bR\\x04name\\x12Q\\n\" +\n\t\"\\fstring_match\\x18\\x02 \\x01(\\v2$.envoy.type.matcher.v3.StringMatcherB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\vstringMatch\\x12!\\n\" +\n\t\"\\finvert_match\\x18\\x03 \\x01(\\bR\\vinvertMatch\\\"\\x86\\x03\\n\" +\n\t\"\\x16InternalRedirectPolicy\\x12R\\n\" +\n\t\"\\x16max_internal_redirects\\x18\\x01 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueR\\x14maxInternalRedirects\\x12@\\n\" +\n\t\"\\x17redirect_response_codes\\x18\\x02 \\x03(\\rB\\b\\xfaB\\x05\\x92\\x01\\x02\\x10\\x05R\\x15redirectResponseCodes\\x12J\\n\" +\n\t\"\\n\" +\n\t\"predicates\\x18\\x03 \\x03(\\v2*.envoy.config.core.v3.TypedExtensionConfigR\\n\" +\n\t\"predicates\\x12=\\n\" +\n\t\"\\x1ballow_cross_scheme_redirect\\x18\\x04 \\x01(\\bR\\x18allowCrossSchemeRedirect\\x12K\\n\" +\n\t\"\\x18response_headers_to_copy\\x18\\x05 \\x03(\\tB\\x12\\xfaB\\x0f\\x92\\x01\\f\\x18\\x01\\\"\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x15responseHeadersToCopy\\\"y\\n\" +\n\t\"\\fFilterConfig\\x12,\\n\" +\n\t\"\\x06config\\x18\\x01 \\x01(\\v2\\x14.google.protobuf.AnyR\\x06config\\x12\\x1f\\n\" +\n\t\"\\vis_optional\\x18\\x02 \\x01(\\bR\\n\" +\n\t\"isOptional\\x12\\x1a\\n\" +\n\t\"\\bdisabled\\x18\\x03 \\x01(\\bR\\bdisabledB\\x8b\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.config.route.v3B\\x14RouteComponentsProtoP\\x01ZDgithub.com/envoyproxy/go-control-plane/envoy/config/route/v3;routev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_route_v3_route_components_proto_rawDescOnce sync.Once\n\tfile_envoy_config_route_v3_route_components_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_route_v3_route_components_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_route_v3_route_components_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_route_v3_route_components_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_route_v3_route_components_proto_rawDesc), len(file_envoy_config_route_v3_route_components_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_route_v3_route_components_proto_rawDescData\n}\n\nvar file_envoy_config_route_v3_route_components_proto_enumTypes = make([]protoimpl.EnumInfo, 6)\nvar file_envoy_config_route_v3_route_components_proto_msgTypes = make([]protoimpl.MessageInfo, 61)\nvar file_envoy_config_route_v3_route_components_proto_goTypes = []any{\n\t(VirtualHost_TlsRequirementType)(0),                 // 0: envoy.config.route.v3.VirtualHost.TlsRequirementType\n\t(RouteAction_ClusterNotFoundResponseCode)(0),        // 1: envoy.config.route.v3.RouteAction.ClusterNotFoundResponseCode\n\t(RouteAction_InternalRedirectAction)(0),             // 2: envoy.config.route.v3.RouteAction.InternalRedirectAction\n\t(RetryPolicy_ResetHeaderFormat)(0),                  // 3: envoy.config.route.v3.RetryPolicy.ResetHeaderFormat\n\t(RedirectAction_RedirectResponseCode)(0),            // 4: envoy.config.route.v3.RedirectAction.RedirectResponseCode\n\t(RateLimit_Action_MetaData_Source)(0),               // 5: envoy.config.route.v3.RateLimit.Action.MetaData.Source\n\t(*VirtualHost)(nil),                                 // 6: envoy.config.route.v3.VirtualHost\n\t(*FilterAction)(nil),                                // 7: envoy.config.route.v3.FilterAction\n\t(*RouteList)(nil),                                   // 8: envoy.config.route.v3.RouteList\n\t(*Route)(nil),                                       // 9: envoy.config.route.v3.Route\n\t(*WeightedCluster)(nil),                             // 10: envoy.config.route.v3.WeightedCluster\n\t(*ClusterSpecifierPlugin)(nil),                      // 11: envoy.config.route.v3.ClusterSpecifierPlugin\n\t(*RouteMatch)(nil),                                  // 12: envoy.config.route.v3.RouteMatch\n\t(*CorsPolicy)(nil),                                  // 13: envoy.config.route.v3.CorsPolicy\n\t(*RouteAction)(nil),                                 // 14: envoy.config.route.v3.RouteAction\n\t(*RetryPolicy)(nil),                                 // 15: envoy.config.route.v3.RetryPolicy\n\t(*HedgePolicy)(nil),                                 // 16: envoy.config.route.v3.HedgePolicy\n\t(*RedirectAction)(nil),                              // 17: envoy.config.route.v3.RedirectAction\n\t(*DirectResponseAction)(nil),                        // 18: envoy.config.route.v3.DirectResponseAction\n\t(*NonForwardingAction)(nil),                         // 19: envoy.config.route.v3.NonForwardingAction\n\t(*Decorator)(nil),                                   // 20: envoy.config.route.v3.Decorator\n\t(*Tracing)(nil),                                     // 21: envoy.config.route.v3.Tracing\n\t(*VirtualCluster)(nil),                              // 22: envoy.config.route.v3.VirtualCluster\n\t(*RateLimit)(nil),                                   // 23: envoy.config.route.v3.RateLimit\n\t(*HeaderMatcher)(nil),                               // 24: envoy.config.route.v3.HeaderMatcher\n\t(*QueryParameterMatcher)(nil),                       // 25: envoy.config.route.v3.QueryParameterMatcher\n\t(*CookieMatcher)(nil),                               // 26: envoy.config.route.v3.CookieMatcher\n\t(*InternalRedirectPolicy)(nil),                      // 27: envoy.config.route.v3.InternalRedirectPolicy\n\t(*FilterConfig)(nil),                                // 28: envoy.config.route.v3.FilterConfig\n\tnil,                                                 // 29: envoy.config.route.v3.VirtualHost.TypedPerFilterConfigEntry\n\tnil,                                                 // 30: envoy.config.route.v3.Route.TypedPerFilterConfigEntry\n\t(*WeightedCluster_ClusterWeight)(nil),               // 31: envoy.config.route.v3.WeightedCluster.ClusterWeight\n\tnil,                                                 // 32: envoy.config.route.v3.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry\n\t(*RouteMatch_GrpcRouteMatchOptions)(nil),            // 33: envoy.config.route.v3.RouteMatch.GrpcRouteMatchOptions\n\t(*RouteMatch_TlsContextMatchOptions)(nil),           // 34: envoy.config.route.v3.RouteMatch.TlsContextMatchOptions\n\t(*RouteMatch_ConnectMatcher)(nil),                   // 35: envoy.config.route.v3.RouteMatch.ConnectMatcher\n\t(*RouteAction_RequestMirrorPolicy)(nil),             // 36: envoy.config.route.v3.RouteAction.RequestMirrorPolicy\n\t(*RouteAction_HashPolicy)(nil),                      // 37: envoy.config.route.v3.RouteAction.HashPolicy\n\t(*RouteAction_UpgradeConfig)(nil),                   // 38: envoy.config.route.v3.RouteAction.UpgradeConfig\n\t(*RouteAction_MaxStreamDuration)(nil),               // 39: envoy.config.route.v3.RouteAction.MaxStreamDuration\n\t(*RouteAction_HashPolicy_Header)(nil),               // 40: envoy.config.route.v3.RouteAction.HashPolicy.Header\n\t(*RouteAction_HashPolicy_CookieAttribute)(nil),      // 41: envoy.config.route.v3.RouteAction.HashPolicy.CookieAttribute\n\t(*RouteAction_HashPolicy_Cookie)(nil),               // 42: envoy.config.route.v3.RouteAction.HashPolicy.Cookie\n\t(*RouteAction_HashPolicy_ConnectionProperties)(nil), // 43: envoy.config.route.v3.RouteAction.HashPolicy.ConnectionProperties\n\t(*RouteAction_HashPolicy_QueryParameter)(nil),       // 44: envoy.config.route.v3.RouteAction.HashPolicy.QueryParameter\n\t(*RouteAction_HashPolicy_FilterState)(nil),          // 45: envoy.config.route.v3.RouteAction.HashPolicy.FilterState\n\t(*RouteAction_UpgradeConfig_ConnectConfig)(nil),     // 46: envoy.config.route.v3.RouteAction.UpgradeConfig.ConnectConfig\n\t(*RetryPolicy_RetryPriority)(nil),                   // 47: envoy.config.route.v3.RetryPolicy.RetryPriority\n\t(*RetryPolicy_RetryHostPredicate)(nil),              // 48: envoy.config.route.v3.RetryPolicy.RetryHostPredicate\n\t(*RetryPolicy_RetryBackOff)(nil),                    // 49: envoy.config.route.v3.RetryPolicy.RetryBackOff\n\t(*RetryPolicy_ResetHeader)(nil),                     // 50: envoy.config.route.v3.RetryPolicy.ResetHeader\n\t(*RetryPolicy_RateLimitedRetryBackOff)(nil),         // 51: envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOff\n\t(*RateLimit_Action)(nil),                            // 52: envoy.config.route.v3.RateLimit.Action\n\t(*RateLimit_Override)(nil),                          // 53: envoy.config.route.v3.RateLimit.Override\n\t(*RateLimit_HitsAddend)(nil),                        // 54: envoy.config.route.v3.RateLimit.HitsAddend\n\t(*RateLimit_Action_SourceCluster)(nil),              // 55: envoy.config.route.v3.RateLimit.Action.SourceCluster\n\t(*RateLimit_Action_DestinationCluster)(nil),         // 56: envoy.config.route.v3.RateLimit.Action.DestinationCluster\n\t(*RateLimit_Action_RequestHeaders)(nil),             // 57: envoy.config.route.v3.RateLimit.Action.RequestHeaders\n\t(*RateLimit_Action_QueryParameters)(nil),            // 58: envoy.config.route.v3.RateLimit.Action.QueryParameters\n\t(*RateLimit_Action_RemoteAddress)(nil),              // 59: envoy.config.route.v3.RateLimit.Action.RemoteAddress\n\t(*RateLimit_Action_MaskedRemoteAddress)(nil),        // 60: envoy.config.route.v3.RateLimit.Action.MaskedRemoteAddress\n\t(*RateLimit_Action_GenericKey)(nil),                 // 61: envoy.config.route.v3.RateLimit.Action.GenericKey\n\t(*RateLimit_Action_HeaderValueMatch)(nil),           // 62: envoy.config.route.v3.RateLimit.Action.HeaderValueMatch\n\t(*RateLimit_Action_DynamicMetaData)(nil),            // 63: envoy.config.route.v3.RateLimit.Action.DynamicMetaData\n\t(*RateLimit_Action_MetaData)(nil),                   // 64: envoy.config.route.v3.RateLimit.Action.MetaData\n\t(*RateLimit_Action_QueryParameterValueMatch)(nil),   // 65: envoy.config.route.v3.RateLimit.Action.QueryParameterValueMatch\n\t(*RateLimit_Override_DynamicMetadata)(nil),          // 66: envoy.config.route.v3.RateLimit.Override.DynamicMetadata\n\t(*v3.Matcher)(nil),                                  // 67: xds.type.matcher.v3.Matcher\n\t(*v31.HeaderValueOption)(nil),                       // 68: envoy.config.core.v3.HeaderValueOption\n\t(*anypb.Any)(nil),                                   // 69: google.protobuf.Any\n\t(*wrapperspb.UInt32Value)(nil),                      // 70: google.protobuf.UInt32Value\n\t(*wrapperspb.UInt64Value)(nil),                      // 71: google.protobuf.UInt64Value\n\t(*v31.Metadata)(nil),                                // 72: envoy.config.core.v3.Metadata\n\t(*wrapperspb.BoolValue)(nil),                        // 73: google.protobuf.BoolValue\n\t(*v31.TypedExtensionConfig)(nil),                    // 74: envoy.config.core.v3.TypedExtensionConfig\n\t(*v32.RegexMatcher)(nil),                            // 75: envoy.type.matcher.v3.RegexMatcher\n\t(*v31.RuntimeFractionalPercent)(nil),                // 76: envoy.config.core.v3.RuntimeFractionalPercent\n\t(*v32.MetadataMatcher)(nil),                         // 77: envoy.type.matcher.v3.MetadataMatcher\n\t(*v32.FilterStateMatcher)(nil),                      // 78: envoy.type.matcher.v3.FilterStateMatcher\n\t(*v32.StringMatcher)(nil),                           // 79: envoy.type.matcher.v3.StringMatcher\n\t(*v32.RegexMatchAndSubstitute)(nil),                 // 80: envoy.type.matcher.v3.RegexMatchAndSubstitute\n\t(*durationpb.Duration)(nil),                         // 81: google.protobuf.Duration\n\t(v31.RoutingPriority)(0),                            // 82: envoy.config.core.v3.RoutingPriority\n\t(*v33.FractionalPercent)(nil),                       // 83: envoy.type.v3.FractionalPercent\n\t(*v31.DataSource)(nil),                              // 84: envoy.config.core.v3.DataSource\n\t(*v31.SubstitutionFormatString)(nil),                // 85: envoy.config.core.v3.SubstitutionFormatString\n\t(*v34.CustomTag)(nil),                               // 86: envoy.type.tracing.v3.CustomTag\n\t(*v33.Int64Range)(nil),                              // 87: envoy.type.v3.Int64Range\n\t(*v35.HeaderMutation)(nil),                          // 88: envoy.config.common.mutation_rules.v3.HeaderMutation\n\t(*v31.ProxyProtocolConfig)(nil),                     // 89: envoy.config.core.v3.ProxyProtocolConfig\n\t(*v36.MetadataKey)(nil),                             // 90: envoy.type.metadata.v3.MetadataKey\n}\nvar file_envoy_config_route_v3_route_components_proto_depIdxs = []int32{\n\t9,   // 0: envoy.config.route.v3.VirtualHost.routes:type_name -> envoy.config.route.v3.Route\n\t67,  // 1: envoy.config.route.v3.VirtualHost.matcher:type_name -> xds.type.matcher.v3.Matcher\n\t0,   // 2: envoy.config.route.v3.VirtualHost.require_tls:type_name -> envoy.config.route.v3.VirtualHost.TlsRequirementType\n\t22,  // 3: envoy.config.route.v3.VirtualHost.virtual_clusters:type_name -> envoy.config.route.v3.VirtualCluster\n\t23,  // 4: envoy.config.route.v3.VirtualHost.rate_limits:type_name -> envoy.config.route.v3.RateLimit\n\t68,  // 5: envoy.config.route.v3.VirtualHost.request_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption\n\t68,  // 6: envoy.config.route.v3.VirtualHost.response_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption\n\t13,  // 7: envoy.config.route.v3.VirtualHost.cors:type_name -> envoy.config.route.v3.CorsPolicy\n\t29,  // 8: envoy.config.route.v3.VirtualHost.typed_per_filter_config:type_name -> envoy.config.route.v3.VirtualHost.TypedPerFilterConfigEntry\n\t15,  // 9: envoy.config.route.v3.VirtualHost.retry_policy:type_name -> envoy.config.route.v3.RetryPolicy\n\t69,  // 10: envoy.config.route.v3.VirtualHost.retry_policy_typed_config:type_name -> google.protobuf.Any\n\t16,  // 11: envoy.config.route.v3.VirtualHost.hedge_policy:type_name -> envoy.config.route.v3.HedgePolicy\n\t70,  // 12: envoy.config.route.v3.VirtualHost.per_request_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value\n\t71,  // 13: envoy.config.route.v3.VirtualHost.request_body_buffer_limit:type_name -> google.protobuf.UInt64Value\n\t36,  // 14: envoy.config.route.v3.VirtualHost.request_mirror_policies:type_name -> envoy.config.route.v3.RouteAction.RequestMirrorPolicy\n\t72,  // 15: envoy.config.route.v3.VirtualHost.metadata:type_name -> envoy.config.core.v3.Metadata\n\t69,  // 16: envoy.config.route.v3.FilterAction.action:type_name -> google.protobuf.Any\n\t9,   // 17: envoy.config.route.v3.RouteList.routes:type_name -> envoy.config.route.v3.Route\n\t12,  // 18: envoy.config.route.v3.Route.match:type_name -> envoy.config.route.v3.RouteMatch\n\t14,  // 19: envoy.config.route.v3.Route.route:type_name -> envoy.config.route.v3.RouteAction\n\t17,  // 20: envoy.config.route.v3.Route.redirect:type_name -> envoy.config.route.v3.RedirectAction\n\t18,  // 21: envoy.config.route.v3.Route.direct_response:type_name -> envoy.config.route.v3.DirectResponseAction\n\t7,   // 22: envoy.config.route.v3.Route.filter_action:type_name -> envoy.config.route.v3.FilterAction\n\t19,  // 23: envoy.config.route.v3.Route.non_forwarding_action:type_name -> envoy.config.route.v3.NonForwardingAction\n\t72,  // 24: envoy.config.route.v3.Route.metadata:type_name -> envoy.config.core.v3.Metadata\n\t20,  // 25: envoy.config.route.v3.Route.decorator:type_name -> envoy.config.route.v3.Decorator\n\t30,  // 26: envoy.config.route.v3.Route.typed_per_filter_config:type_name -> envoy.config.route.v3.Route.TypedPerFilterConfigEntry\n\t68,  // 27: envoy.config.route.v3.Route.request_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption\n\t68,  // 28: envoy.config.route.v3.Route.response_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption\n\t21,  // 29: envoy.config.route.v3.Route.tracing:type_name -> envoy.config.route.v3.Tracing\n\t70,  // 30: envoy.config.route.v3.Route.per_request_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value\n\t71,  // 31: envoy.config.route.v3.Route.request_body_buffer_limit:type_name -> google.protobuf.UInt64Value\n\t31,  // 32: envoy.config.route.v3.WeightedCluster.clusters:type_name -> envoy.config.route.v3.WeightedCluster.ClusterWeight\n\t70,  // 33: envoy.config.route.v3.WeightedCluster.total_weight:type_name -> google.protobuf.UInt32Value\n\t73,  // 34: envoy.config.route.v3.WeightedCluster.use_hash_policy:type_name -> google.protobuf.BoolValue\n\t74,  // 35: envoy.config.route.v3.ClusterSpecifierPlugin.extension:type_name -> envoy.config.core.v3.TypedExtensionConfig\n\t75,  // 36: envoy.config.route.v3.RouteMatch.safe_regex:type_name -> envoy.type.matcher.v3.RegexMatcher\n\t35,  // 37: envoy.config.route.v3.RouteMatch.connect_matcher:type_name -> envoy.config.route.v3.RouteMatch.ConnectMatcher\n\t74,  // 38: envoy.config.route.v3.RouteMatch.path_match_policy:type_name -> envoy.config.core.v3.TypedExtensionConfig\n\t73,  // 39: envoy.config.route.v3.RouteMatch.case_sensitive:type_name -> google.protobuf.BoolValue\n\t76,  // 40: envoy.config.route.v3.RouteMatch.runtime_fraction:type_name -> envoy.config.core.v3.RuntimeFractionalPercent\n\t24,  // 41: envoy.config.route.v3.RouteMatch.headers:type_name -> envoy.config.route.v3.HeaderMatcher\n\t25,  // 42: envoy.config.route.v3.RouteMatch.query_parameters:type_name -> envoy.config.route.v3.QueryParameterMatcher\n\t26,  // 43: envoy.config.route.v3.RouteMatch.cookies:type_name -> envoy.config.route.v3.CookieMatcher\n\t33,  // 44: envoy.config.route.v3.RouteMatch.grpc:type_name -> envoy.config.route.v3.RouteMatch.GrpcRouteMatchOptions\n\t34,  // 45: envoy.config.route.v3.RouteMatch.tls_context:type_name -> envoy.config.route.v3.RouteMatch.TlsContextMatchOptions\n\t77,  // 46: envoy.config.route.v3.RouteMatch.dynamic_metadata:type_name -> envoy.type.matcher.v3.MetadataMatcher\n\t78,  // 47: envoy.config.route.v3.RouteMatch.filter_state:type_name -> envoy.type.matcher.v3.FilterStateMatcher\n\t79,  // 48: envoy.config.route.v3.CorsPolicy.allow_origin_string_match:type_name -> envoy.type.matcher.v3.StringMatcher\n\t73,  // 49: envoy.config.route.v3.CorsPolicy.allow_credentials:type_name -> google.protobuf.BoolValue\n\t76,  // 50: envoy.config.route.v3.CorsPolicy.filter_enabled:type_name -> envoy.config.core.v3.RuntimeFractionalPercent\n\t76,  // 51: envoy.config.route.v3.CorsPolicy.shadow_enabled:type_name -> envoy.config.core.v3.RuntimeFractionalPercent\n\t73,  // 52: envoy.config.route.v3.CorsPolicy.allow_private_network_access:type_name -> google.protobuf.BoolValue\n\t73,  // 53: envoy.config.route.v3.CorsPolicy.forward_not_matching_preflights:type_name -> google.protobuf.BoolValue\n\t10,  // 54: envoy.config.route.v3.RouteAction.weighted_clusters:type_name -> envoy.config.route.v3.WeightedCluster\n\t11,  // 55: envoy.config.route.v3.RouteAction.inline_cluster_specifier_plugin:type_name -> envoy.config.route.v3.ClusterSpecifierPlugin\n\t1,   // 56: envoy.config.route.v3.RouteAction.cluster_not_found_response_code:type_name -> envoy.config.route.v3.RouteAction.ClusterNotFoundResponseCode\n\t72,  // 57: envoy.config.route.v3.RouteAction.metadata_match:type_name -> envoy.config.core.v3.Metadata\n\t80,  // 58: envoy.config.route.v3.RouteAction.regex_rewrite:type_name -> envoy.type.matcher.v3.RegexMatchAndSubstitute\n\t74,  // 59: envoy.config.route.v3.RouteAction.path_rewrite_policy:type_name -> envoy.config.core.v3.TypedExtensionConfig\n\t73,  // 60: envoy.config.route.v3.RouteAction.auto_host_rewrite:type_name -> google.protobuf.BoolValue\n\t80,  // 61: envoy.config.route.v3.RouteAction.host_rewrite_path_regex:type_name -> envoy.type.matcher.v3.RegexMatchAndSubstitute\n\t81,  // 62: envoy.config.route.v3.RouteAction.timeout:type_name -> google.protobuf.Duration\n\t81,  // 63: envoy.config.route.v3.RouteAction.idle_timeout:type_name -> google.protobuf.Duration\n\t81,  // 64: envoy.config.route.v3.RouteAction.flush_timeout:type_name -> google.protobuf.Duration\n\t74,  // 65: envoy.config.route.v3.RouteAction.early_data_policy:type_name -> envoy.config.core.v3.TypedExtensionConfig\n\t15,  // 66: envoy.config.route.v3.RouteAction.retry_policy:type_name -> envoy.config.route.v3.RetryPolicy\n\t69,  // 67: envoy.config.route.v3.RouteAction.retry_policy_typed_config:type_name -> google.protobuf.Any\n\t36,  // 68: envoy.config.route.v3.RouteAction.request_mirror_policies:type_name -> envoy.config.route.v3.RouteAction.RequestMirrorPolicy\n\t82,  // 69: envoy.config.route.v3.RouteAction.priority:type_name -> envoy.config.core.v3.RoutingPriority\n\t23,  // 70: envoy.config.route.v3.RouteAction.rate_limits:type_name -> envoy.config.route.v3.RateLimit\n\t73,  // 71: envoy.config.route.v3.RouteAction.include_vh_rate_limits:type_name -> google.protobuf.BoolValue\n\t37,  // 72: envoy.config.route.v3.RouteAction.hash_policy:type_name -> envoy.config.route.v3.RouteAction.HashPolicy\n\t13,  // 73: envoy.config.route.v3.RouteAction.cors:type_name -> envoy.config.route.v3.CorsPolicy\n\t81,  // 74: envoy.config.route.v3.RouteAction.max_grpc_timeout:type_name -> google.protobuf.Duration\n\t81,  // 75: envoy.config.route.v3.RouteAction.grpc_timeout_offset:type_name -> google.protobuf.Duration\n\t38,  // 76: envoy.config.route.v3.RouteAction.upgrade_configs:type_name -> envoy.config.route.v3.RouteAction.UpgradeConfig\n\t27,  // 77: envoy.config.route.v3.RouteAction.internal_redirect_policy:type_name -> envoy.config.route.v3.InternalRedirectPolicy\n\t2,   // 78: envoy.config.route.v3.RouteAction.internal_redirect_action:type_name -> envoy.config.route.v3.RouteAction.InternalRedirectAction\n\t70,  // 79: envoy.config.route.v3.RouteAction.max_internal_redirects:type_name -> google.protobuf.UInt32Value\n\t16,  // 80: envoy.config.route.v3.RouteAction.hedge_policy:type_name -> envoy.config.route.v3.HedgePolicy\n\t39,  // 81: envoy.config.route.v3.RouteAction.max_stream_duration:type_name -> envoy.config.route.v3.RouteAction.MaxStreamDuration\n\t70,  // 82: envoy.config.route.v3.RetryPolicy.num_retries:type_name -> google.protobuf.UInt32Value\n\t81,  // 83: envoy.config.route.v3.RetryPolicy.per_try_timeout:type_name -> google.protobuf.Duration\n\t81,  // 84: envoy.config.route.v3.RetryPolicy.per_try_idle_timeout:type_name -> google.protobuf.Duration\n\t47,  // 85: envoy.config.route.v3.RetryPolicy.retry_priority:type_name -> envoy.config.route.v3.RetryPolicy.RetryPriority\n\t48,  // 86: envoy.config.route.v3.RetryPolicy.retry_host_predicate:type_name -> envoy.config.route.v3.RetryPolicy.RetryHostPredicate\n\t74,  // 87: envoy.config.route.v3.RetryPolicy.retry_options_predicates:type_name -> envoy.config.core.v3.TypedExtensionConfig\n\t49,  // 88: envoy.config.route.v3.RetryPolicy.retry_back_off:type_name -> envoy.config.route.v3.RetryPolicy.RetryBackOff\n\t51,  // 89: envoy.config.route.v3.RetryPolicy.rate_limited_retry_back_off:type_name -> envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOff\n\t24,  // 90: envoy.config.route.v3.RetryPolicy.retriable_headers:type_name -> envoy.config.route.v3.HeaderMatcher\n\t24,  // 91: envoy.config.route.v3.RetryPolicy.retriable_request_headers:type_name -> envoy.config.route.v3.HeaderMatcher\n\t70,  // 92: envoy.config.route.v3.HedgePolicy.initial_requests:type_name -> google.protobuf.UInt32Value\n\t83,  // 93: envoy.config.route.v3.HedgePolicy.additional_request_chance:type_name -> envoy.type.v3.FractionalPercent\n\t80,  // 94: envoy.config.route.v3.RedirectAction.regex_rewrite:type_name -> envoy.type.matcher.v3.RegexMatchAndSubstitute\n\t4,   // 95: envoy.config.route.v3.RedirectAction.response_code:type_name -> envoy.config.route.v3.RedirectAction.RedirectResponseCode\n\t84,  // 96: envoy.config.route.v3.DirectResponseAction.body:type_name -> envoy.config.core.v3.DataSource\n\t85,  // 97: envoy.config.route.v3.DirectResponseAction.body_format:type_name -> envoy.config.core.v3.SubstitutionFormatString\n\t73,  // 98: envoy.config.route.v3.Decorator.propagate:type_name -> google.protobuf.BoolValue\n\t83,  // 99: envoy.config.route.v3.Tracing.client_sampling:type_name -> envoy.type.v3.FractionalPercent\n\t83,  // 100: envoy.config.route.v3.Tracing.random_sampling:type_name -> envoy.type.v3.FractionalPercent\n\t83,  // 101: envoy.config.route.v3.Tracing.overall_sampling:type_name -> envoy.type.v3.FractionalPercent\n\t86,  // 102: envoy.config.route.v3.Tracing.custom_tags:type_name -> envoy.type.tracing.v3.CustomTag\n\t24,  // 103: envoy.config.route.v3.VirtualCluster.headers:type_name -> envoy.config.route.v3.HeaderMatcher\n\t70,  // 104: envoy.config.route.v3.RateLimit.stage:type_name -> google.protobuf.UInt32Value\n\t52,  // 105: envoy.config.route.v3.RateLimit.actions:type_name -> envoy.config.route.v3.RateLimit.Action\n\t53,  // 106: envoy.config.route.v3.RateLimit.limit:type_name -> envoy.config.route.v3.RateLimit.Override\n\t54,  // 107: envoy.config.route.v3.RateLimit.hits_addend:type_name -> envoy.config.route.v3.RateLimit.HitsAddend\n\t75,  // 108: envoy.config.route.v3.HeaderMatcher.safe_regex_match:type_name -> envoy.type.matcher.v3.RegexMatcher\n\t87,  // 109: envoy.config.route.v3.HeaderMatcher.range_match:type_name -> envoy.type.v3.Int64Range\n\t79,  // 110: envoy.config.route.v3.HeaderMatcher.string_match:type_name -> envoy.type.matcher.v3.StringMatcher\n\t79,  // 111: envoy.config.route.v3.QueryParameterMatcher.string_match:type_name -> envoy.type.matcher.v3.StringMatcher\n\t79,  // 112: envoy.config.route.v3.CookieMatcher.string_match:type_name -> envoy.type.matcher.v3.StringMatcher\n\t70,  // 113: envoy.config.route.v3.InternalRedirectPolicy.max_internal_redirects:type_name -> google.protobuf.UInt32Value\n\t74,  // 114: envoy.config.route.v3.InternalRedirectPolicy.predicates:type_name -> envoy.config.core.v3.TypedExtensionConfig\n\t69,  // 115: envoy.config.route.v3.FilterConfig.config:type_name -> google.protobuf.Any\n\t69,  // 116: envoy.config.route.v3.VirtualHost.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any\n\t69,  // 117: envoy.config.route.v3.Route.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any\n\t70,  // 118: envoy.config.route.v3.WeightedCluster.ClusterWeight.weight:type_name -> google.protobuf.UInt32Value\n\t72,  // 119: envoy.config.route.v3.WeightedCluster.ClusterWeight.metadata_match:type_name -> envoy.config.core.v3.Metadata\n\t68,  // 120: envoy.config.route.v3.WeightedCluster.ClusterWeight.request_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption\n\t68,  // 121: envoy.config.route.v3.WeightedCluster.ClusterWeight.response_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption\n\t32,  // 122: envoy.config.route.v3.WeightedCluster.ClusterWeight.typed_per_filter_config:type_name -> envoy.config.route.v3.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry\n\t69,  // 123: envoy.config.route.v3.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any\n\t73,  // 124: envoy.config.route.v3.RouteMatch.TlsContextMatchOptions.presented:type_name -> google.protobuf.BoolValue\n\t73,  // 125: envoy.config.route.v3.RouteMatch.TlsContextMatchOptions.validated:type_name -> google.protobuf.BoolValue\n\t76,  // 126: envoy.config.route.v3.RouteAction.RequestMirrorPolicy.runtime_fraction:type_name -> envoy.config.core.v3.RuntimeFractionalPercent\n\t73,  // 127: envoy.config.route.v3.RouteAction.RequestMirrorPolicy.trace_sampled:type_name -> google.protobuf.BoolValue\n\t88,  // 128: envoy.config.route.v3.RouteAction.RequestMirrorPolicy.request_headers_mutations:type_name -> envoy.config.common.mutation_rules.v3.HeaderMutation\n\t40,  // 129: envoy.config.route.v3.RouteAction.HashPolicy.header:type_name -> envoy.config.route.v3.RouteAction.HashPolicy.Header\n\t42,  // 130: envoy.config.route.v3.RouteAction.HashPolicy.cookie:type_name -> envoy.config.route.v3.RouteAction.HashPolicy.Cookie\n\t43,  // 131: envoy.config.route.v3.RouteAction.HashPolicy.connection_properties:type_name -> envoy.config.route.v3.RouteAction.HashPolicy.ConnectionProperties\n\t44,  // 132: envoy.config.route.v3.RouteAction.HashPolicy.query_parameter:type_name -> envoy.config.route.v3.RouteAction.HashPolicy.QueryParameter\n\t45,  // 133: envoy.config.route.v3.RouteAction.HashPolicy.filter_state:type_name -> envoy.config.route.v3.RouteAction.HashPolicy.FilterState\n\t73,  // 134: envoy.config.route.v3.RouteAction.UpgradeConfig.enabled:type_name -> google.protobuf.BoolValue\n\t46,  // 135: envoy.config.route.v3.RouteAction.UpgradeConfig.connect_config:type_name -> envoy.config.route.v3.RouteAction.UpgradeConfig.ConnectConfig\n\t81,  // 136: envoy.config.route.v3.RouteAction.MaxStreamDuration.max_stream_duration:type_name -> google.protobuf.Duration\n\t81,  // 137: envoy.config.route.v3.RouteAction.MaxStreamDuration.grpc_timeout_header_max:type_name -> google.protobuf.Duration\n\t81,  // 138: envoy.config.route.v3.RouteAction.MaxStreamDuration.grpc_timeout_header_offset:type_name -> google.protobuf.Duration\n\t80,  // 139: envoy.config.route.v3.RouteAction.HashPolicy.Header.regex_rewrite:type_name -> envoy.type.matcher.v3.RegexMatchAndSubstitute\n\t81,  // 140: envoy.config.route.v3.RouteAction.HashPolicy.Cookie.ttl:type_name -> google.protobuf.Duration\n\t41,  // 141: envoy.config.route.v3.RouteAction.HashPolicy.Cookie.attributes:type_name -> envoy.config.route.v3.RouteAction.HashPolicy.CookieAttribute\n\t89,  // 142: envoy.config.route.v3.RouteAction.UpgradeConfig.ConnectConfig.proxy_protocol_config:type_name -> envoy.config.core.v3.ProxyProtocolConfig\n\t69,  // 143: envoy.config.route.v3.RetryPolicy.RetryPriority.typed_config:type_name -> google.protobuf.Any\n\t69,  // 144: envoy.config.route.v3.RetryPolicy.RetryHostPredicate.typed_config:type_name -> google.protobuf.Any\n\t81,  // 145: envoy.config.route.v3.RetryPolicy.RetryBackOff.base_interval:type_name -> google.protobuf.Duration\n\t81,  // 146: envoy.config.route.v3.RetryPolicy.RetryBackOff.max_interval:type_name -> google.protobuf.Duration\n\t3,   // 147: envoy.config.route.v3.RetryPolicy.ResetHeader.format:type_name -> envoy.config.route.v3.RetryPolicy.ResetHeaderFormat\n\t50,  // 148: envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOff.reset_headers:type_name -> envoy.config.route.v3.RetryPolicy.ResetHeader\n\t81,  // 149: envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOff.max_interval:type_name -> google.protobuf.Duration\n\t55,  // 150: envoy.config.route.v3.RateLimit.Action.source_cluster:type_name -> envoy.config.route.v3.RateLimit.Action.SourceCluster\n\t56,  // 151: envoy.config.route.v3.RateLimit.Action.destination_cluster:type_name -> envoy.config.route.v3.RateLimit.Action.DestinationCluster\n\t57,  // 152: envoy.config.route.v3.RateLimit.Action.request_headers:type_name -> envoy.config.route.v3.RateLimit.Action.RequestHeaders\n\t58,  // 153: envoy.config.route.v3.RateLimit.Action.query_parameters:type_name -> envoy.config.route.v3.RateLimit.Action.QueryParameters\n\t59,  // 154: envoy.config.route.v3.RateLimit.Action.remote_address:type_name -> envoy.config.route.v3.RateLimit.Action.RemoteAddress\n\t61,  // 155: envoy.config.route.v3.RateLimit.Action.generic_key:type_name -> envoy.config.route.v3.RateLimit.Action.GenericKey\n\t62,  // 156: envoy.config.route.v3.RateLimit.Action.header_value_match:type_name -> envoy.config.route.v3.RateLimit.Action.HeaderValueMatch\n\t63,  // 157: envoy.config.route.v3.RateLimit.Action.dynamic_metadata:type_name -> envoy.config.route.v3.RateLimit.Action.DynamicMetaData\n\t64,  // 158: envoy.config.route.v3.RateLimit.Action.metadata:type_name -> envoy.config.route.v3.RateLimit.Action.MetaData\n\t74,  // 159: envoy.config.route.v3.RateLimit.Action.extension:type_name -> envoy.config.core.v3.TypedExtensionConfig\n\t60,  // 160: envoy.config.route.v3.RateLimit.Action.masked_remote_address:type_name -> envoy.config.route.v3.RateLimit.Action.MaskedRemoteAddress\n\t65,  // 161: envoy.config.route.v3.RateLimit.Action.query_parameter_value_match:type_name -> envoy.config.route.v3.RateLimit.Action.QueryParameterValueMatch\n\t66,  // 162: envoy.config.route.v3.RateLimit.Override.dynamic_metadata:type_name -> envoy.config.route.v3.RateLimit.Override.DynamicMetadata\n\t71,  // 163: envoy.config.route.v3.RateLimit.HitsAddend.number:type_name -> google.protobuf.UInt64Value\n\t70,  // 164: envoy.config.route.v3.RateLimit.Action.MaskedRemoteAddress.v4_prefix_mask_len:type_name -> google.protobuf.UInt32Value\n\t70,  // 165: envoy.config.route.v3.RateLimit.Action.MaskedRemoteAddress.v6_prefix_mask_len:type_name -> google.protobuf.UInt32Value\n\t73,  // 166: envoy.config.route.v3.RateLimit.Action.HeaderValueMatch.expect_match:type_name -> google.protobuf.BoolValue\n\t24,  // 167: envoy.config.route.v3.RateLimit.Action.HeaderValueMatch.headers:type_name -> envoy.config.route.v3.HeaderMatcher\n\t90,  // 168: envoy.config.route.v3.RateLimit.Action.DynamicMetaData.metadata_key:type_name -> envoy.type.metadata.v3.MetadataKey\n\t90,  // 169: envoy.config.route.v3.RateLimit.Action.MetaData.metadata_key:type_name -> envoy.type.metadata.v3.MetadataKey\n\t5,   // 170: envoy.config.route.v3.RateLimit.Action.MetaData.source:type_name -> envoy.config.route.v3.RateLimit.Action.MetaData.Source\n\t73,  // 171: envoy.config.route.v3.RateLimit.Action.QueryParameterValueMatch.expect_match:type_name -> google.protobuf.BoolValue\n\t25,  // 172: envoy.config.route.v3.RateLimit.Action.QueryParameterValueMatch.query_parameters:type_name -> envoy.config.route.v3.QueryParameterMatcher\n\t90,  // 173: envoy.config.route.v3.RateLimit.Override.DynamicMetadata.metadata_key:type_name -> envoy.type.metadata.v3.MetadataKey\n\t174, // [174:174] is the sub-list for method output_type\n\t174, // [174:174] is the sub-list for method input_type\n\t174, // [174:174] is the sub-list for extension type_name\n\t174, // [174:174] is the sub-list for extension extendee\n\t0,   // [0:174] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_route_v3_route_components_proto_init() }\nfunc file_envoy_config_route_v3_route_components_proto_init() {\n\tif File_envoy_config_route_v3_route_components_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_msgTypes[3].OneofWrappers = []any{\n\t\t(*Route_Route)(nil),\n\t\t(*Route_Redirect)(nil),\n\t\t(*Route_DirectResponse)(nil),\n\t\t(*Route_FilterAction)(nil),\n\t\t(*Route_NonForwardingAction)(nil),\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_msgTypes[4].OneofWrappers = []any{\n\t\t(*WeightedCluster_HeaderName)(nil),\n\t\t(*WeightedCluster_UseHashPolicy)(nil),\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_msgTypes[6].OneofWrappers = []any{\n\t\t(*RouteMatch_Prefix)(nil),\n\t\t(*RouteMatch_Path)(nil),\n\t\t(*RouteMatch_SafeRegex)(nil),\n\t\t(*RouteMatch_ConnectMatcher_)(nil),\n\t\t(*RouteMatch_PathSeparatedPrefix)(nil),\n\t\t(*RouteMatch_PathMatchPolicy)(nil),\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_msgTypes[7].OneofWrappers = []any{\n\t\t(*CorsPolicy_FilterEnabled)(nil),\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_msgTypes[8].OneofWrappers = []any{\n\t\t(*RouteAction_Cluster)(nil),\n\t\t(*RouteAction_ClusterHeader)(nil),\n\t\t(*RouteAction_WeightedClusters)(nil),\n\t\t(*RouteAction_ClusterSpecifierPlugin)(nil),\n\t\t(*RouteAction_InlineClusterSpecifierPlugin)(nil),\n\t\t(*RouteAction_HostRewriteLiteral)(nil),\n\t\t(*RouteAction_AutoHostRewrite)(nil),\n\t\t(*RouteAction_HostRewriteHeader)(nil),\n\t\t(*RouteAction_HostRewritePathRegex)(nil),\n\t\t(*RouteAction_HostRewrite)(nil),\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_msgTypes[11].OneofWrappers = []any{\n\t\t(*RedirectAction_HttpsRedirect)(nil),\n\t\t(*RedirectAction_SchemeRedirect)(nil),\n\t\t(*RedirectAction_PathRedirect)(nil),\n\t\t(*RedirectAction_PrefixRewrite)(nil),\n\t\t(*RedirectAction_RegexRewrite)(nil),\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_msgTypes[18].OneofWrappers = []any{\n\t\t(*HeaderMatcher_ExactMatch)(nil),\n\t\t(*HeaderMatcher_SafeRegexMatch)(nil),\n\t\t(*HeaderMatcher_RangeMatch)(nil),\n\t\t(*HeaderMatcher_PresentMatch)(nil),\n\t\t(*HeaderMatcher_PrefixMatch)(nil),\n\t\t(*HeaderMatcher_SuffixMatch)(nil),\n\t\t(*HeaderMatcher_ContainsMatch)(nil),\n\t\t(*HeaderMatcher_StringMatch)(nil),\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_msgTypes[19].OneofWrappers = []any{\n\t\t(*QueryParameterMatcher_StringMatch)(nil),\n\t\t(*QueryParameterMatcher_PresentMatch)(nil),\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_msgTypes[25].OneofWrappers = []any{\n\t\t(*WeightedCluster_ClusterWeight_HostRewriteLiteral)(nil),\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_msgTypes[31].OneofWrappers = []any{\n\t\t(*RouteAction_HashPolicy_Header_)(nil),\n\t\t(*RouteAction_HashPolicy_Cookie_)(nil),\n\t\t(*RouteAction_HashPolicy_ConnectionProperties_)(nil),\n\t\t(*RouteAction_HashPolicy_QueryParameter_)(nil),\n\t\t(*RouteAction_HashPolicy_FilterState_)(nil),\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_msgTypes[41].OneofWrappers = []any{\n\t\t(*RetryPolicy_RetryPriority_TypedConfig)(nil),\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_msgTypes[42].OneofWrappers = []any{\n\t\t(*RetryPolicy_RetryHostPredicate_TypedConfig)(nil),\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_msgTypes[46].OneofWrappers = []any{\n\t\t(*RateLimit_Action_SourceCluster_)(nil),\n\t\t(*RateLimit_Action_DestinationCluster_)(nil),\n\t\t(*RateLimit_Action_RequestHeaders_)(nil),\n\t\t(*RateLimit_Action_QueryParameters_)(nil),\n\t\t(*RateLimit_Action_RemoteAddress_)(nil),\n\t\t(*RateLimit_Action_GenericKey_)(nil),\n\t\t(*RateLimit_Action_HeaderValueMatch_)(nil),\n\t\t(*RateLimit_Action_DynamicMetadata)(nil),\n\t\t(*RateLimit_Action_Metadata)(nil),\n\t\t(*RateLimit_Action_Extension)(nil),\n\t\t(*RateLimit_Action_MaskedRemoteAddress_)(nil),\n\t\t(*RateLimit_Action_QueryParameterValueMatch_)(nil),\n\t}\n\tfile_envoy_config_route_v3_route_components_proto_msgTypes[47].OneofWrappers = []any{\n\t\t(*RateLimit_Override_DynamicMetadata_)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_route_v3_route_components_proto_rawDesc), len(file_envoy_config_route_v3_route_components_proto_rawDesc)),\n\t\t\tNumEnums:      6,\n\t\t\tNumMessages:   61,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_route_v3_route_components_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_route_v3_route_components_proto_depIdxs,\n\t\tEnumInfos:         file_envoy_config_route_v3_route_components_proto_enumTypes,\n\t\tMessageInfos:      file_envoy_config_route_v3_route_components_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_route_v3_route_components_proto = out.File\n\tfile_envoy_config_route_v3_route_components_proto_goTypes = nil\n\tfile_envoy_config_route_v3_route_components_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/route/v3/route_components.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/route/v3/route_components.proto\n\npackage routev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/config/core/v3\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n\n\t_ = v3.RoutingPriority(0)\n)\n\n// Validate checks the field values on VirtualHost with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *VirtualHost) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on VirtualHost with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in VirtualHostMultiError, or\n// nil if none found.\nfunc (m *VirtualHost) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *VirtualHost) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := VirtualHostValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(m.GetDomains()) < 1 {\n\t\terr := VirtualHostValidationError{\n\t\t\tfield:  \"Domains\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetDomains() {\n\t\t_, _ = idx, item\n\n\t\tif !_VirtualHost_Domains_Pattern.MatchString(item) {\n\t\t\terr := VirtualHostValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"Domains[%v]\", idx),\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetRoutes() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Routes[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Routes[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn VirtualHostValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Routes[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMatcher()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"Matcher\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"Matcher\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMatcher()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn VirtualHostValidationError{\n\t\t\t\tfield:  \"Matcher\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif _, ok := VirtualHost_TlsRequirementType_name[int32(m.GetRequireTls())]; !ok {\n\t\terr := VirtualHostValidationError{\n\t\t\tfield:  \"RequireTls\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetVirtualClusters() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"VirtualClusters[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"VirtualClusters[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn VirtualHostValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"VirtualClusters[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetRateLimits() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RateLimits[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RateLimits[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn VirtualHostValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RateLimits[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(m.GetRequestHeadersToAdd()) > 1000 {\n\t\terr := VirtualHostValidationError{\n\t\t\tfield:  \"RequestHeadersToAdd\",\n\t\t\treason: \"value must contain no more than 1000 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetRequestHeadersToAdd() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn VirtualHostValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetRequestHeadersToRemove() {\n\t\t_, _ = idx, item\n\n\t\tif utf8.RuneCountInString(item) < 1 {\n\t\t\terr := VirtualHostValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToRemove[%v]\", idx),\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif !_VirtualHost_RequestHeadersToRemove_Pattern.MatchString(item) {\n\t\t\terr := VirtualHostValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToRemove[%v]\", idx),\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(m.GetResponseHeadersToAdd()) > 1000 {\n\t\terr := VirtualHostValidationError{\n\t\t\tfield:  \"ResponseHeadersToAdd\",\n\t\t\treason: \"value must contain no more than 1000 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetResponseHeadersToAdd() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn VirtualHostValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToAdd[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetResponseHeadersToRemove() {\n\t\t_, _ = idx, item\n\n\t\tif utf8.RuneCountInString(item) < 1 {\n\t\t\terr := VirtualHostValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToRemove[%v]\", idx),\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif !_VirtualHost_ResponseHeadersToRemove_Pattern.MatchString(item) {\n\t\t\terr := VirtualHostValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToRemove[%v]\", idx),\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetCors()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"Cors\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"Cors\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetCors()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn VirtualHostValidationError{\n\t\t\t\tfield:  \"Cors\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t{\n\t\tsorted_keys := make([]string, len(m.GetTypedPerFilterConfig()))\n\t\ti := 0\n\t\tfor key := range m.GetTypedPerFilterConfig() {\n\t\t\tsorted_keys[i] = key\n\t\t\ti++\n\t\t}\n\t\tsort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] })\n\t\tfor _, key := range sorted_keys {\n\t\t\tval := m.GetTypedPerFilterConfig()[key]\n\t\t\t_ = val\n\n\t\t\t// no validation rules for TypedPerFilterConfig[key]\n\n\t\t\tif all {\n\t\t\t\tswitch v := interface{}(val).(type) {\n\t\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedPerFilterConfig[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\tcase interface{ Validate() error }:\n\t\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedPerFilterConfig[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if v, ok := interface{}(val).(interface{ Validate() error }); ok {\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\treturn VirtualHostValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedPerFilterConfig[%v]\", key),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\t// no validation rules for IncludeRequestAttemptCount\n\n\t// no validation rules for IncludeAttemptCountInResponse\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRetryPolicy()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRetryPolicy()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn VirtualHostValidationError{\n\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRetryPolicyTypedConfig()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"RetryPolicyTypedConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"RetryPolicyTypedConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRetryPolicyTypedConfig()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn VirtualHostValidationError{\n\t\t\t\tfield:  \"RetryPolicyTypedConfig\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetHedgePolicy()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"HedgePolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"HedgePolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetHedgePolicy()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn VirtualHostValidationError{\n\t\t\t\tfield:  \"HedgePolicy\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for IncludeIsTimeoutRetryHeader\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPerRequestBufferLimitBytes()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"PerRequestBufferLimitBytes\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"PerRequestBufferLimitBytes\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPerRequestBufferLimitBytes()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn VirtualHostValidationError{\n\t\t\t\tfield:  \"PerRequestBufferLimitBytes\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRequestBodyBufferLimit()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"RequestBodyBufferLimit\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"RequestBodyBufferLimit\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRequestBodyBufferLimit()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn VirtualHostValidationError{\n\t\t\t\tfield:  \"RequestBodyBufferLimit\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetRequestMirrorPolicies() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestMirrorPolicies[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestMirrorPolicies[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn VirtualHostValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RequestMirrorPolicies[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMetadata()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, VirtualHostValidationError{\n\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMetadata()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn VirtualHostValidationError{\n\t\t\t\tfield:  \"Metadata\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn VirtualHostMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// VirtualHostMultiError is an error wrapping multiple validation errors\n// returned by VirtualHost.ValidateAll() if the designated constraints aren't met.\ntype VirtualHostMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m VirtualHostMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m VirtualHostMultiError) AllErrors() []error { return m }\n\n// VirtualHostValidationError is the validation error returned by\n// VirtualHost.Validate if the designated constraints aren't met.\ntype VirtualHostValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e VirtualHostValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e VirtualHostValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e VirtualHostValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e VirtualHostValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e VirtualHostValidationError) ErrorName() string { return \"VirtualHostValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e VirtualHostValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sVirtualHost.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = VirtualHostValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = VirtualHostValidationError{}\n\nvar _VirtualHost_Domains_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _VirtualHost_RequestHeadersToRemove_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _VirtualHost_ResponseHeadersToRemove_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on FilterAction with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *FilterAction) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on FilterAction with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in FilterActionMultiError, or\n// nil if none found.\nfunc (m *FilterAction) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *FilterAction) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetAction()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, FilterActionValidationError{\n\t\t\t\t\tfield:  \"Action\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, FilterActionValidationError{\n\t\t\t\t\tfield:  \"Action\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetAction()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn FilterActionValidationError{\n\t\t\t\tfield:  \"Action\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn FilterActionMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// FilterActionMultiError is an error wrapping multiple validation errors\n// returned by FilterAction.ValidateAll() if the designated constraints aren't met.\ntype FilterActionMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m FilterActionMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m FilterActionMultiError) AllErrors() []error { return m }\n\n// FilterActionValidationError is the validation error returned by\n// FilterAction.Validate if the designated constraints aren't met.\ntype FilterActionValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e FilterActionValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e FilterActionValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e FilterActionValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e FilterActionValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e FilterActionValidationError) ErrorName() string { return \"FilterActionValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e FilterActionValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sFilterAction.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = FilterActionValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = FilterActionValidationError{}\n\n// Validate checks the field values on RouteList with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *RouteList) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteList with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in RouteListMultiError, or nil\n// if none found.\nfunc (m *RouteList) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteList) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetRoutes() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteListValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Routes[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteListValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Routes[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteListValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Routes[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteListMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteListMultiError is an error wrapping multiple validation errors returned\n// by RouteList.ValidateAll() if the designated constraints aren't met.\ntype RouteListMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteListMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteListMultiError) AllErrors() []error { return m }\n\n// RouteListValidationError is the validation error returned by\n// RouteList.Validate if the designated constraints aren't met.\ntype RouteListValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteListValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteListValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteListValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteListValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteListValidationError) ErrorName() string { return \"RouteListValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RouteListValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteList.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteListValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteListValidationError{}\n\n// Validate checks the field values on Route with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Route) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Route with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in RouteMultiError, or nil if none found.\nfunc (m *Route) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Route) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Name\n\n\tif m.GetMatch() == nil {\n\t\terr := RouteValidationError{\n\t\t\tfield:  \"Match\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMatch()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\tfield:  \"Match\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\tfield:  \"Match\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMatch()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteValidationError{\n\t\t\t\tfield:  \"Match\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMetadata()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMetadata()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteValidationError{\n\t\t\t\tfield:  \"Metadata\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetDecorator()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\tfield:  \"Decorator\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\tfield:  \"Decorator\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetDecorator()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteValidationError{\n\t\t\t\tfield:  \"Decorator\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t{\n\t\tsorted_keys := make([]string, len(m.GetTypedPerFilterConfig()))\n\t\ti := 0\n\t\tfor key := range m.GetTypedPerFilterConfig() {\n\t\t\tsorted_keys[i] = key\n\t\t\ti++\n\t\t}\n\t\tsort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] })\n\t\tfor _, key := range sorted_keys {\n\t\t\tval := m.GetTypedPerFilterConfig()[key]\n\t\t\t_ = val\n\n\t\t\t// no validation rules for TypedPerFilterConfig[key]\n\n\t\t\tif all {\n\t\t\t\tswitch v := interface{}(val).(type) {\n\t\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedPerFilterConfig[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\tcase interface{ Validate() error }:\n\t\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedPerFilterConfig[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if v, ok := interface{}(val).(interface{ Validate() error }); ok {\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\treturn RouteValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedPerFilterConfig[%v]\", key),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif len(m.GetRequestHeadersToAdd()) > 1000 {\n\t\terr := RouteValidationError{\n\t\t\tfield:  \"RequestHeadersToAdd\",\n\t\t\treason: \"value must contain no more than 1000 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetRequestHeadersToAdd() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetRequestHeadersToRemove() {\n\t\t_, _ = idx, item\n\n\t\tif utf8.RuneCountInString(item) < 1 {\n\t\t\terr := RouteValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToRemove[%v]\", idx),\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif !_Route_RequestHeadersToRemove_Pattern.MatchString(item) {\n\t\t\terr := RouteValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToRemove[%v]\", idx),\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(m.GetResponseHeadersToAdd()) > 1000 {\n\t\terr := RouteValidationError{\n\t\t\tfield:  \"ResponseHeadersToAdd\",\n\t\t\treason: \"value must contain no more than 1000 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetResponseHeadersToAdd() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToAdd[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetResponseHeadersToRemove() {\n\t\t_, _ = idx, item\n\n\t\tif utf8.RuneCountInString(item) < 1 {\n\t\t\terr := RouteValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToRemove[%v]\", idx),\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif !_Route_ResponseHeadersToRemove_Pattern.MatchString(item) {\n\t\t\terr := RouteValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToRemove[%v]\", idx),\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetTracing()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\tfield:  \"Tracing\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\tfield:  \"Tracing\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetTracing()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteValidationError{\n\t\t\t\tfield:  \"Tracing\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPerRequestBufferLimitBytes()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\tfield:  \"PerRequestBufferLimitBytes\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\tfield:  \"PerRequestBufferLimitBytes\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPerRequestBufferLimitBytes()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteValidationError{\n\t\t\t\tfield:  \"PerRequestBufferLimitBytes\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for StatPrefix\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRequestBodyBufferLimit()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\tfield:  \"RequestBodyBufferLimit\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\tfield:  \"RequestBodyBufferLimit\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRequestBodyBufferLimit()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteValidationError{\n\t\t\t\tfield:  \"RequestBodyBufferLimit\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\toneofActionPresent := false\n\tswitch v := m.Action.(type) {\n\tcase *Route_Route:\n\t\tif v == nil {\n\t\t\terr := RouteValidationError{\n\t\t\t\tfield:  \"Action\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetRoute()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\tfield:  \"Route\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\tfield:  \"Route\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetRoute()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteValidationError{\n\t\t\t\t\tfield:  \"Route\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Route_Redirect:\n\t\tif v == nil {\n\t\t\terr := RouteValidationError{\n\t\t\t\tfield:  \"Action\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetRedirect()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\tfield:  \"Redirect\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\tfield:  \"Redirect\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetRedirect()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteValidationError{\n\t\t\t\t\tfield:  \"Redirect\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Route_DirectResponse:\n\t\tif v == nil {\n\t\t\terr := RouteValidationError{\n\t\t\t\tfield:  \"Action\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetDirectResponse()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\tfield:  \"DirectResponse\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\tfield:  \"DirectResponse\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetDirectResponse()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteValidationError{\n\t\t\t\t\tfield:  \"DirectResponse\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Route_FilterAction:\n\t\tif v == nil {\n\t\t\terr := RouteValidationError{\n\t\t\t\tfield:  \"Action\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetFilterAction()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\tfield:  \"FilterAction\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\tfield:  \"FilterAction\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetFilterAction()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteValidationError{\n\t\t\t\t\tfield:  \"FilterAction\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *Route_NonForwardingAction:\n\t\tif v == nil {\n\t\t\terr := RouteValidationError{\n\t\t\t\tfield:  \"Action\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetNonForwardingAction()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\tfield:  \"NonForwardingAction\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteValidationError{\n\t\t\t\t\t\tfield:  \"NonForwardingAction\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetNonForwardingAction()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteValidationError{\n\t\t\t\t\tfield:  \"NonForwardingAction\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofActionPresent {\n\t\terr := RouteValidationError{\n\t\t\tfield:  \"Action\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteMultiError is an error wrapping multiple validation errors returned by\n// Route.ValidateAll() if the designated constraints aren't met.\ntype RouteMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteMultiError) AllErrors() []error { return m }\n\n// RouteValidationError is the validation error returned by Route.Validate if\n// the designated constraints aren't met.\ntype RouteValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteValidationError) ErrorName() string { return \"RouteValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RouteValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRoute.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteValidationError{}\n\nvar _Route_RequestHeadersToRemove_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _Route_ResponseHeadersToRemove_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on WeightedCluster with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *WeightedCluster) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on WeightedCluster with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// WeightedClusterMultiError, or nil if none found.\nfunc (m *WeightedCluster) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *WeightedCluster) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetClusters()) < 1 {\n\t\terr := WeightedClusterValidationError{\n\t\t\tfield:  \"Clusters\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetClusters() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, WeightedClusterValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Clusters[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, WeightedClusterValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Clusters[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn WeightedClusterValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Clusters[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetTotalWeight()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, WeightedClusterValidationError{\n\t\t\t\t\tfield:  \"TotalWeight\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, WeightedClusterValidationError{\n\t\t\t\t\tfield:  \"TotalWeight\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetTotalWeight()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn WeightedClusterValidationError{\n\t\t\t\tfield:  \"TotalWeight\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for RuntimeKeyPrefix\n\n\tswitch v := m.RandomValueSpecifier.(type) {\n\tcase *WeightedCluster_HeaderName:\n\t\tif v == nil {\n\t\t\terr := WeightedClusterValidationError{\n\t\t\t\tfield:  \"RandomValueSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif !_WeightedCluster_HeaderName_Pattern.MatchString(m.GetHeaderName()) {\n\t\t\terr := WeightedClusterValidationError{\n\t\t\t\tfield:  \"HeaderName\",\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *WeightedCluster_UseHashPolicy:\n\t\tif v == nil {\n\t\t\terr := WeightedClusterValidationError{\n\t\t\t\tfield:  \"RandomValueSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetUseHashPolicy()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, WeightedClusterValidationError{\n\t\t\t\t\t\tfield:  \"UseHashPolicy\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, WeightedClusterValidationError{\n\t\t\t\t\t\tfield:  \"UseHashPolicy\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetUseHashPolicy()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn WeightedClusterValidationError{\n\t\t\t\t\tfield:  \"UseHashPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn WeightedClusterMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// WeightedClusterMultiError is an error wrapping multiple validation errors\n// returned by WeightedCluster.ValidateAll() if the designated constraints\n// aren't met.\ntype WeightedClusterMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m WeightedClusterMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m WeightedClusterMultiError) AllErrors() []error { return m }\n\n// WeightedClusterValidationError is the validation error returned by\n// WeightedCluster.Validate if the designated constraints aren't met.\ntype WeightedClusterValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e WeightedClusterValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e WeightedClusterValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e WeightedClusterValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e WeightedClusterValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e WeightedClusterValidationError) ErrorName() string { return \"WeightedClusterValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e WeightedClusterValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sWeightedCluster.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = WeightedClusterValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = WeightedClusterValidationError{}\n\nvar _WeightedCluster_HeaderName_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on ClusterSpecifierPlugin with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *ClusterSpecifierPlugin) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ClusterSpecifierPlugin with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ClusterSpecifierPluginMultiError, or nil if none found.\nfunc (m *ClusterSpecifierPlugin) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ClusterSpecifierPlugin) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetExtension() == nil {\n\t\terr := ClusterSpecifierPluginValidationError{\n\t\t\tfield:  \"Extension\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetExtension()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ClusterSpecifierPluginValidationError{\n\t\t\t\t\tfield:  \"Extension\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ClusterSpecifierPluginValidationError{\n\t\t\t\t\tfield:  \"Extension\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetExtension()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ClusterSpecifierPluginValidationError{\n\t\t\t\tfield:  \"Extension\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for IsOptional\n\n\tif len(errors) > 0 {\n\t\treturn ClusterSpecifierPluginMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ClusterSpecifierPluginMultiError is an error wrapping multiple validation\n// errors returned by ClusterSpecifierPlugin.ValidateAll() if the designated\n// constraints aren't met.\ntype ClusterSpecifierPluginMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ClusterSpecifierPluginMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ClusterSpecifierPluginMultiError) AllErrors() []error { return m }\n\n// ClusterSpecifierPluginValidationError is the validation error returned by\n// ClusterSpecifierPlugin.Validate if the designated constraints aren't met.\ntype ClusterSpecifierPluginValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ClusterSpecifierPluginValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ClusterSpecifierPluginValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ClusterSpecifierPluginValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ClusterSpecifierPluginValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ClusterSpecifierPluginValidationError) ErrorName() string {\n\treturn \"ClusterSpecifierPluginValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ClusterSpecifierPluginValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sClusterSpecifierPlugin.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ClusterSpecifierPluginValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ClusterSpecifierPluginValidationError{}\n\n// Validate checks the field values on RouteMatch with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *RouteMatch) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteMatch with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in RouteMatchMultiError, or\n// nil if none found.\nfunc (m *RouteMatch) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteMatch) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetCaseSensitive()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\tfield:  \"CaseSensitive\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\tfield:  \"CaseSensitive\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetCaseSensitive()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteMatchValidationError{\n\t\t\t\tfield:  \"CaseSensitive\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRuntimeFraction()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\tfield:  \"RuntimeFraction\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\tfield:  \"RuntimeFraction\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRuntimeFraction()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteMatchValidationError{\n\t\t\t\tfield:  \"RuntimeFraction\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetHeaders() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteMatchValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetQueryParameters() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"QueryParameters[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"QueryParameters[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteMatchValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"QueryParameters[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetCookies() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Cookies[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Cookies[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteMatchValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Cookies[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetGrpc()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\tfield:  \"Grpc\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\tfield:  \"Grpc\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetGrpc()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteMatchValidationError{\n\t\t\t\tfield:  \"Grpc\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetTlsContext()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\tfield:  \"TlsContext\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\tfield:  \"TlsContext\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetTlsContext()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteMatchValidationError{\n\t\t\t\tfield:  \"TlsContext\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetDynamicMetadata() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"DynamicMetadata[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"DynamicMetadata[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteMatchValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"DynamicMetadata[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetFilterState() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"FilterState[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"FilterState[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteMatchValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"FilterState[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\toneofPathSpecifierPresent := false\n\tswitch v := m.PathSpecifier.(type) {\n\tcase *RouteMatch_Prefix:\n\t\tif v == nil {\n\t\t\terr := RouteMatchValidationError{\n\t\t\t\tfield:  \"PathSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPathSpecifierPresent = true\n\t\t// no validation rules for Prefix\n\tcase *RouteMatch_Path:\n\t\tif v == nil {\n\t\t\terr := RouteMatchValidationError{\n\t\t\t\tfield:  \"PathSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPathSpecifierPresent = true\n\t\t// no validation rules for Path\n\tcase *RouteMatch_SafeRegex:\n\t\tif v == nil {\n\t\t\terr := RouteMatchValidationError{\n\t\t\t\tfield:  \"PathSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPathSpecifierPresent = true\n\n\t\tif m.GetSafeRegex() == nil {\n\t\t\terr := RouteMatchValidationError{\n\t\t\t\tfield:  \"SafeRegex\",\n\t\t\t\treason: \"value is required\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetSafeRegex()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  \"SafeRegex\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  \"SafeRegex\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetSafeRegex()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteMatchValidationError{\n\t\t\t\t\tfield:  \"SafeRegex\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RouteMatch_ConnectMatcher_:\n\t\tif v == nil {\n\t\t\terr := RouteMatchValidationError{\n\t\t\t\tfield:  \"PathSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPathSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetConnectMatcher()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  \"ConnectMatcher\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  \"ConnectMatcher\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetConnectMatcher()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteMatchValidationError{\n\t\t\t\t\tfield:  \"ConnectMatcher\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RouteMatch_PathSeparatedPrefix:\n\t\tif v == nil {\n\t\t\terr := RouteMatchValidationError{\n\t\t\t\tfield:  \"PathSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPathSpecifierPresent = true\n\n\t\tif !_RouteMatch_PathSeparatedPrefix_Pattern.MatchString(m.GetPathSeparatedPrefix()) {\n\t\t\terr := RouteMatchValidationError{\n\t\t\t\tfield:  \"PathSeparatedPrefix\",\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^?#]+[^?#/]$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *RouteMatch_PathMatchPolicy:\n\t\tif v == nil {\n\t\t\terr := RouteMatchValidationError{\n\t\t\t\tfield:  \"PathSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPathSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetPathMatchPolicy()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  \"PathMatchPolicy\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteMatchValidationError{\n\t\t\t\t\t\tfield:  \"PathMatchPolicy\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetPathMatchPolicy()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteMatchValidationError{\n\t\t\t\t\tfield:  \"PathMatchPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofPathSpecifierPresent {\n\t\terr := RouteMatchValidationError{\n\t\t\tfield:  \"PathSpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteMatchMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteMatchMultiError is an error wrapping multiple validation errors\n// returned by RouteMatch.ValidateAll() if the designated constraints aren't met.\ntype RouteMatchMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteMatchMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteMatchMultiError) AllErrors() []error { return m }\n\n// RouteMatchValidationError is the validation error returned by\n// RouteMatch.Validate if the designated constraints aren't met.\ntype RouteMatchValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteMatchValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteMatchValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteMatchValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteMatchValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteMatchValidationError) ErrorName() string { return \"RouteMatchValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RouteMatchValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteMatch.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteMatchValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteMatchValidationError{}\n\nvar _RouteMatch_PathSeparatedPrefix_Pattern = regexp.MustCompile(\"^[^?#]+[^?#/]$\")\n\n// Validate checks the field values on CorsPolicy with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *CorsPolicy) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CorsPolicy with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in CorsPolicyMultiError, or\n// nil if none found.\nfunc (m *CorsPolicy) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CorsPolicy) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetAllowOriginStringMatch() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, CorsPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"AllowOriginStringMatch[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, CorsPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"AllowOriginStringMatch[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn CorsPolicyValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"AllowOriginStringMatch[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// no validation rules for AllowMethods\n\n\t// no validation rules for AllowHeaders\n\n\t// no validation rules for ExposeHeaders\n\n\t// no validation rules for MaxAge\n\n\tif all {\n\t\tswitch v := interface{}(m.GetAllowCredentials()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, CorsPolicyValidationError{\n\t\t\t\t\tfield:  \"AllowCredentials\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, CorsPolicyValidationError{\n\t\t\t\t\tfield:  \"AllowCredentials\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetAllowCredentials()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn CorsPolicyValidationError{\n\t\t\t\tfield:  \"AllowCredentials\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetShadowEnabled()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, CorsPolicyValidationError{\n\t\t\t\t\tfield:  \"ShadowEnabled\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, CorsPolicyValidationError{\n\t\t\t\t\tfield:  \"ShadowEnabled\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetShadowEnabled()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn CorsPolicyValidationError{\n\t\t\t\tfield:  \"ShadowEnabled\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetAllowPrivateNetworkAccess()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, CorsPolicyValidationError{\n\t\t\t\t\tfield:  \"AllowPrivateNetworkAccess\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, CorsPolicyValidationError{\n\t\t\t\t\tfield:  \"AllowPrivateNetworkAccess\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetAllowPrivateNetworkAccess()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn CorsPolicyValidationError{\n\t\t\t\tfield:  \"AllowPrivateNetworkAccess\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetForwardNotMatchingPreflights()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, CorsPolicyValidationError{\n\t\t\t\t\tfield:  \"ForwardNotMatchingPreflights\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, CorsPolicyValidationError{\n\t\t\t\t\tfield:  \"ForwardNotMatchingPreflights\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetForwardNotMatchingPreflights()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn CorsPolicyValidationError{\n\t\t\t\tfield:  \"ForwardNotMatchingPreflights\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch v := m.EnabledSpecifier.(type) {\n\tcase *CorsPolicy_FilterEnabled:\n\t\tif v == nil {\n\t\t\terr := CorsPolicyValidationError{\n\t\t\t\tfield:  \"EnabledSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetFilterEnabled()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, CorsPolicyValidationError{\n\t\t\t\t\t\tfield:  \"FilterEnabled\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, CorsPolicyValidationError{\n\t\t\t\t\t\tfield:  \"FilterEnabled\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetFilterEnabled()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn CorsPolicyValidationError{\n\t\t\t\t\tfield:  \"FilterEnabled\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn CorsPolicyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CorsPolicyMultiError is an error wrapping multiple validation errors\n// returned by CorsPolicy.ValidateAll() if the designated constraints aren't met.\ntype CorsPolicyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CorsPolicyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CorsPolicyMultiError) AllErrors() []error { return m }\n\n// CorsPolicyValidationError is the validation error returned by\n// CorsPolicy.Validate if the designated constraints aren't met.\ntype CorsPolicyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CorsPolicyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CorsPolicyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CorsPolicyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CorsPolicyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CorsPolicyValidationError) ErrorName() string { return \"CorsPolicyValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e CorsPolicyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCorsPolicy.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CorsPolicyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CorsPolicyValidationError{}\n\n// Validate checks the field values on RouteAction with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *RouteAction) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteAction with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in RouteActionMultiError, or\n// nil if none found.\nfunc (m *RouteAction) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteAction) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif _, ok := RouteAction_ClusterNotFoundResponseCode_name[int32(m.GetClusterNotFoundResponseCode())]; !ok {\n\t\terr := RouteActionValidationError{\n\t\t\tfield:  \"ClusterNotFoundResponseCode\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMetadataMatch()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"MetadataMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"MetadataMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMetadataMatch()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"MetadataMatch\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif !_RouteAction_PrefixRewrite_Pattern.MatchString(m.GetPrefixRewrite()) {\n\t\terr := RouteActionValidationError{\n\t\t\tfield:  \"PrefixRewrite\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRegexRewrite()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"RegexRewrite\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"RegexRewrite\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRegexRewrite()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"RegexRewrite\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPathRewritePolicy()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"PathRewritePolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"PathRewritePolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPathRewritePolicy()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"PathRewritePolicy\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for PathRewrite\n\n\t// no validation rules for AppendXForwardedHost\n\n\tif all {\n\t\tswitch v := interface{}(m.GetTimeout()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"Timeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"Timeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetTimeout()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"Timeout\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetIdleTimeout()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"IdleTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"IdleTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetIdleTimeout()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"IdleTimeout\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetFlushTimeout()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"FlushTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"FlushTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetFlushTimeout()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"FlushTimeout\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetEarlyDataPolicy()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"EarlyDataPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"EarlyDataPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetEarlyDataPolicy()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"EarlyDataPolicy\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRetryPolicy()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRetryPolicy()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"RetryPolicy\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRetryPolicyTypedConfig()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"RetryPolicyTypedConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"RetryPolicyTypedConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRetryPolicyTypedConfig()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"RetryPolicyTypedConfig\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetRequestMirrorPolicies() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestMirrorPolicies[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestMirrorPolicies[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteActionValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RequestMirrorPolicies[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif _, ok := v3.RoutingPriority_name[int32(m.GetPriority())]; !ok {\n\t\terr := RouteActionValidationError{\n\t\t\tfield:  \"Priority\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetRateLimits() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RateLimits[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RateLimits[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteActionValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RateLimits[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetIncludeVhRateLimits()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"IncludeVhRateLimits\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"IncludeVhRateLimits\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetIncludeVhRateLimits()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"IncludeVhRateLimits\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetHashPolicy() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"HashPolicy[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"HashPolicy[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteActionValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"HashPolicy[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetCors()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"Cors\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"Cors\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetCors()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"Cors\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxGrpcTimeout()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"MaxGrpcTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"MaxGrpcTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxGrpcTimeout()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"MaxGrpcTimeout\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetGrpcTimeoutOffset()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"GrpcTimeoutOffset\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"GrpcTimeoutOffset\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetGrpcTimeoutOffset()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"GrpcTimeoutOffset\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetUpgradeConfigs() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"UpgradeConfigs[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"UpgradeConfigs[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteActionValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"UpgradeConfigs[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetInternalRedirectPolicy()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"InternalRedirectPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"InternalRedirectPolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetInternalRedirectPolicy()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"InternalRedirectPolicy\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for InternalRedirectAction\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxInternalRedirects()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"MaxInternalRedirects\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"MaxInternalRedirects\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxInternalRedirects()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"MaxInternalRedirects\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetHedgePolicy()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"HedgePolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"HedgePolicy\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetHedgePolicy()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"HedgePolicy\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxStreamDuration()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"MaxStreamDuration\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\tfield:  \"MaxStreamDuration\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxStreamDuration()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteActionValidationError{\n\t\t\t\tfield:  \"MaxStreamDuration\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\toneofClusterSpecifierPresent := false\n\tswitch v := m.ClusterSpecifier.(type) {\n\tcase *RouteAction_Cluster:\n\t\tif v == nil {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"ClusterSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofClusterSpecifierPresent = true\n\n\t\tif utf8.RuneCountInString(m.GetCluster()) < 1 {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"Cluster\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *RouteAction_ClusterHeader:\n\t\tif v == nil {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"ClusterSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofClusterSpecifierPresent = true\n\n\t\tif utf8.RuneCountInString(m.GetClusterHeader()) < 1 {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"ClusterHeader\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif !_RouteAction_ClusterHeader_Pattern.MatchString(m.GetClusterHeader()) {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"ClusterHeader\",\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *RouteAction_WeightedClusters:\n\t\tif v == nil {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"ClusterSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofClusterSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetWeightedClusters()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  \"WeightedClusters\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  \"WeightedClusters\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetWeightedClusters()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteActionValidationError{\n\t\t\t\t\tfield:  \"WeightedClusters\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RouteAction_ClusterSpecifierPlugin:\n\t\tif v == nil {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"ClusterSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofClusterSpecifierPresent = true\n\t\t// no validation rules for ClusterSpecifierPlugin\n\tcase *RouteAction_InlineClusterSpecifierPlugin:\n\t\tif v == nil {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"ClusterSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofClusterSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetInlineClusterSpecifierPlugin()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  \"InlineClusterSpecifierPlugin\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  \"InlineClusterSpecifierPlugin\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetInlineClusterSpecifierPlugin()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteActionValidationError{\n\t\t\t\t\tfield:  \"InlineClusterSpecifierPlugin\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofClusterSpecifierPresent {\n\t\terr := RouteActionValidationError{\n\t\t\tfield:  \"ClusterSpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\tswitch v := m.HostRewriteSpecifier.(type) {\n\tcase *RouteAction_HostRewriteLiteral:\n\t\tif v == nil {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"HostRewriteSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif !_RouteAction_HostRewriteLiteral_Pattern.MatchString(m.GetHostRewriteLiteral()) {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"HostRewriteLiteral\",\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *RouteAction_AutoHostRewrite:\n\t\tif v == nil {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"HostRewriteSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetAutoHostRewrite()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  \"AutoHostRewrite\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  \"AutoHostRewrite\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetAutoHostRewrite()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteActionValidationError{\n\t\t\t\t\tfield:  \"AutoHostRewrite\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RouteAction_HostRewriteHeader:\n\t\tif v == nil {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"HostRewriteSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif !_RouteAction_HostRewriteHeader_Pattern.MatchString(m.GetHostRewriteHeader()) {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"HostRewriteHeader\",\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *RouteAction_HostRewritePathRegex:\n\t\tif v == nil {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"HostRewriteSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetHostRewritePathRegex()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  \"HostRewritePathRegex\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteActionValidationError{\n\t\t\t\t\t\tfield:  \"HostRewritePathRegex\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetHostRewritePathRegex()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteActionValidationError{\n\t\t\t\t\tfield:  \"HostRewritePathRegex\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RouteAction_HostRewrite:\n\t\tif v == nil {\n\t\t\terr := RouteActionValidationError{\n\t\t\t\tfield:  \"HostRewriteSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\t// no validation rules for HostRewrite\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteActionMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteActionMultiError is an error wrapping multiple validation errors\n// returned by RouteAction.ValidateAll() if the designated constraints aren't met.\ntype RouteActionMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteActionMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteActionMultiError) AllErrors() []error { return m }\n\n// RouteActionValidationError is the validation error returned by\n// RouteAction.Validate if the designated constraints aren't met.\ntype RouteActionValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteActionValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteActionValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteActionValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteActionValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteActionValidationError) ErrorName() string { return \"RouteActionValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RouteActionValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteAction.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteActionValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteActionValidationError{}\n\nvar _RouteAction_ClusterHeader_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _RouteAction_PrefixRewrite_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _RouteAction_HostRewriteLiteral_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _RouteAction_HostRewriteHeader_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on RetryPolicy with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *RetryPolicy) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RetryPolicy with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in RetryPolicyMultiError, or\n// nil if none found.\nfunc (m *RetryPolicy) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RetryPolicy) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for RetryOn\n\n\tif all {\n\t\tswitch v := interface{}(m.GetNumRetries()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"NumRetries\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"NumRetries\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetNumRetries()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RetryPolicyValidationError{\n\t\t\t\tfield:  \"NumRetries\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPerTryTimeout()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"PerTryTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"PerTryTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPerTryTimeout()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RetryPolicyValidationError{\n\t\t\t\tfield:  \"PerTryTimeout\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPerTryIdleTimeout()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"PerTryIdleTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"PerTryIdleTimeout\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPerTryIdleTimeout()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RetryPolicyValidationError{\n\t\t\t\tfield:  \"PerTryIdleTimeout\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRetryPriority()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"RetryPriority\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"RetryPriority\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRetryPriority()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RetryPolicyValidationError{\n\t\t\t\tfield:  \"RetryPriority\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetRetryHostPredicate() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RetryHostPredicate[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RetryHostPredicate[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RetryPolicyValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RetryHostPredicate[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetRetryOptionsPredicates() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RetryOptionsPredicates[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RetryOptionsPredicates[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RetryPolicyValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RetryOptionsPredicates[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// no validation rules for HostSelectionRetryMaxAttempts\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRetryBackOff()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"RetryBackOff\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"RetryBackOff\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRetryBackOff()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RetryPolicyValidationError{\n\t\t\t\tfield:  \"RetryBackOff\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRateLimitedRetryBackOff()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"RateLimitedRetryBackOff\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\tfield:  \"RateLimitedRetryBackOff\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRateLimitedRetryBackOff()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RetryPolicyValidationError{\n\t\t\t\tfield:  \"RateLimitedRetryBackOff\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetRetriableHeaders() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RetriableHeaders[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RetriableHeaders[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RetryPolicyValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RetriableHeaders[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetRetriableRequestHeaders() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RetriableRequestHeaders[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RetriableRequestHeaders[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RetryPolicyValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RetriableRequestHeaders[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RetryPolicyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RetryPolicyMultiError is an error wrapping multiple validation errors\n// returned by RetryPolicy.ValidateAll() if the designated constraints aren't met.\ntype RetryPolicyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RetryPolicyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RetryPolicyMultiError) AllErrors() []error { return m }\n\n// RetryPolicyValidationError is the validation error returned by\n// RetryPolicy.Validate if the designated constraints aren't met.\ntype RetryPolicyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RetryPolicyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RetryPolicyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RetryPolicyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RetryPolicyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RetryPolicyValidationError) ErrorName() string { return \"RetryPolicyValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RetryPolicyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRetryPolicy.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RetryPolicyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RetryPolicyValidationError{}\n\n// Validate checks the field values on HedgePolicy with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *HedgePolicy) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HedgePolicy with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in HedgePolicyMultiError, or\n// nil if none found.\nfunc (m *HedgePolicy) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HedgePolicy) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif wrapper := m.GetInitialRequests(); wrapper != nil {\n\n\t\tif wrapper.GetValue() < 1 {\n\t\t\terr := HedgePolicyValidationError{\n\t\t\t\tfield:  \"InitialRequests\",\n\t\t\t\treason: \"value must be greater than or equal to 1\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetAdditionalRequestChance()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, HedgePolicyValidationError{\n\t\t\t\t\tfield:  \"AdditionalRequestChance\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, HedgePolicyValidationError{\n\t\t\t\t\tfield:  \"AdditionalRequestChance\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetAdditionalRequestChance()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn HedgePolicyValidationError{\n\t\t\t\tfield:  \"AdditionalRequestChance\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for HedgeOnPerTryTimeout\n\n\tif len(errors) > 0 {\n\t\treturn HedgePolicyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HedgePolicyMultiError is an error wrapping multiple validation errors\n// returned by HedgePolicy.ValidateAll() if the designated constraints aren't met.\ntype HedgePolicyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HedgePolicyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HedgePolicyMultiError) AllErrors() []error { return m }\n\n// HedgePolicyValidationError is the validation error returned by\n// HedgePolicy.Validate if the designated constraints aren't met.\ntype HedgePolicyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HedgePolicyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HedgePolicyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HedgePolicyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HedgePolicyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HedgePolicyValidationError) ErrorName() string { return \"HedgePolicyValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e HedgePolicyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHedgePolicy.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HedgePolicyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HedgePolicyValidationError{}\n\n// Validate checks the field values on RedirectAction with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *RedirectAction) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RedirectAction with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in RedirectActionMultiError,\n// or nil if none found.\nfunc (m *RedirectAction) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RedirectAction) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif !_RedirectAction_HostRedirect_Pattern.MatchString(m.GetHostRedirect()) {\n\t\terr := RedirectActionValidationError{\n\t\t\tfield:  \"HostRedirect\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for PortRedirect\n\n\tif _, ok := RedirectAction_RedirectResponseCode_name[int32(m.GetResponseCode())]; !ok {\n\t\terr := RedirectActionValidationError{\n\t\t\tfield:  \"ResponseCode\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for StripQuery\n\n\tswitch v := m.SchemeRewriteSpecifier.(type) {\n\tcase *RedirectAction_HttpsRedirect:\n\t\tif v == nil {\n\t\t\terr := RedirectActionValidationError{\n\t\t\t\tfield:  \"SchemeRewriteSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\t// no validation rules for HttpsRedirect\n\tcase *RedirectAction_SchemeRedirect:\n\t\tif v == nil {\n\t\t\terr := RedirectActionValidationError{\n\t\t\t\tfield:  \"SchemeRewriteSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\t// no validation rules for SchemeRedirect\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tswitch v := m.PathRewriteSpecifier.(type) {\n\tcase *RedirectAction_PathRedirect:\n\t\tif v == nil {\n\t\t\terr := RedirectActionValidationError{\n\t\t\t\tfield:  \"PathRewriteSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif !_RedirectAction_PathRedirect_Pattern.MatchString(m.GetPathRedirect()) {\n\t\t\terr := RedirectActionValidationError{\n\t\t\t\tfield:  \"PathRedirect\",\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *RedirectAction_PrefixRewrite:\n\t\tif v == nil {\n\t\t\terr := RedirectActionValidationError{\n\t\t\t\tfield:  \"PathRewriteSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif !_RedirectAction_PrefixRewrite_Pattern.MatchString(m.GetPrefixRewrite()) {\n\t\t\terr := RedirectActionValidationError{\n\t\t\t\tfield:  \"PrefixRewrite\",\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *RedirectAction_RegexRewrite:\n\t\tif v == nil {\n\t\t\terr := RedirectActionValidationError{\n\t\t\t\tfield:  \"PathRewriteSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetRegexRewrite()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RedirectActionValidationError{\n\t\t\t\t\t\tfield:  \"RegexRewrite\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RedirectActionValidationError{\n\t\t\t\t\t\tfield:  \"RegexRewrite\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetRegexRewrite()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RedirectActionValidationError{\n\t\t\t\t\tfield:  \"RegexRewrite\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RedirectActionMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RedirectActionMultiError is an error wrapping multiple validation errors\n// returned by RedirectAction.ValidateAll() if the designated constraints\n// aren't met.\ntype RedirectActionMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RedirectActionMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RedirectActionMultiError) AllErrors() []error { return m }\n\n// RedirectActionValidationError is the validation error returned by\n// RedirectAction.Validate if the designated constraints aren't met.\ntype RedirectActionValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RedirectActionValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RedirectActionValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RedirectActionValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RedirectActionValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RedirectActionValidationError) ErrorName() string { return \"RedirectActionValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RedirectActionValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRedirectAction.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RedirectActionValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RedirectActionValidationError{}\n\nvar _RedirectAction_HostRedirect_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _RedirectAction_PathRedirect_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _RedirectAction_PrefixRewrite_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on DirectResponseAction with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *DirectResponseAction) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DirectResponseAction with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// DirectResponseActionMultiError, or nil if none found.\nfunc (m *DirectResponseAction) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DirectResponseAction) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif val := m.GetStatus(); val < 200 || val >= 600 {\n\t\terr := DirectResponseActionValidationError{\n\t\t\tfield:  \"Status\",\n\t\t\treason: \"value must be inside range [200, 600)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetBody()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, DirectResponseActionValidationError{\n\t\t\t\t\tfield:  \"Body\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, DirectResponseActionValidationError{\n\t\t\t\t\tfield:  \"Body\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetBody()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn DirectResponseActionValidationError{\n\t\t\t\tfield:  \"Body\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetBodyFormat()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, DirectResponseActionValidationError{\n\t\t\t\t\tfield:  \"BodyFormat\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, DirectResponseActionValidationError{\n\t\t\t\t\tfield:  \"BodyFormat\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetBodyFormat()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn DirectResponseActionValidationError{\n\t\t\t\tfield:  \"BodyFormat\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn DirectResponseActionMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DirectResponseActionMultiError is an error wrapping multiple validation\n// errors returned by DirectResponseAction.ValidateAll() if the designated\n// constraints aren't met.\ntype DirectResponseActionMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DirectResponseActionMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DirectResponseActionMultiError) AllErrors() []error { return m }\n\n// DirectResponseActionValidationError is the validation error returned by\n// DirectResponseAction.Validate if the designated constraints aren't met.\ntype DirectResponseActionValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DirectResponseActionValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DirectResponseActionValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DirectResponseActionValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DirectResponseActionValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DirectResponseActionValidationError) ErrorName() string {\n\treturn \"DirectResponseActionValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e DirectResponseActionValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDirectResponseAction.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DirectResponseActionValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DirectResponseActionValidationError{}\n\n// Validate checks the field values on NonForwardingAction with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *NonForwardingAction) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on NonForwardingAction with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// NonForwardingActionMultiError, or nil if none found.\nfunc (m *NonForwardingAction) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *NonForwardingAction) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn NonForwardingActionMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// NonForwardingActionMultiError is an error wrapping multiple validation\n// errors returned by NonForwardingAction.ValidateAll() if the designated\n// constraints aren't met.\ntype NonForwardingActionMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m NonForwardingActionMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m NonForwardingActionMultiError) AllErrors() []error { return m }\n\n// NonForwardingActionValidationError is the validation error returned by\n// NonForwardingAction.Validate if the designated constraints aren't met.\ntype NonForwardingActionValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e NonForwardingActionValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e NonForwardingActionValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e NonForwardingActionValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e NonForwardingActionValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e NonForwardingActionValidationError) ErrorName() string {\n\treturn \"NonForwardingActionValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e NonForwardingActionValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sNonForwardingAction.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = NonForwardingActionValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = NonForwardingActionValidationError{}\n\n// Validate checks the field values on Decorator with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Decorator) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Decorator with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in DecoratorMultiError, or nil\n// if none found.\nfunc (m *Decorator) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Decorator) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetOperation()) < 1 {\n\t\terr := DecoratorValidationError{\n\t\t\tfield:  \"Operation\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPropagate()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, DecoratorValidationError{\n\t\t\t\t\tfield:  \"Propagate\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, DecoratorValidationError{\n\t\t\t\t\tfield:  \"Propagate\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPropagate()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn DecoratorValidationError{\n\t\t\t\tfield:  \"Propagate\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn DecoratorMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DecoratorMultiError is an error wrapping multiple validation errors returned\n// by Decorator.ValidateAll() if the designated constraints aren't met.\ntype DecoratorMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DecoratorMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DecoratorMultiError) AllErrors() []error { return m }\n\n// DecoratorValidationError is the validation error returned by\n// Decorator.Validate if the designated constraints aren't met.\ntype DecoratorValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DecoratorValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DecoratorValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DecoratorValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DecoratorValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DecoratorValidationError) ErrorName() string { return \"DecoratorValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e DecoratorValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDecorator.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DecoratorValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DecoratorValidationError{}\n\n// Validate checks the field values on Tracing with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Tracing) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Tracing with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in TracingMultiError, or nil if none found.\nfunc (m *Tracing) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Tracing) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetClientSampling()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, TracingValidationError{\n\t\t\t\t\tfield:  \"ClientSampling\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, TracingValidationError{\n\t\t\t\t\tfield:  \"ClientSampling\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetClientSampling()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn TracingValidationError{\n\t\t\t\tfield:  \"ClientSampling\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRandomSampling()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, TracingValidationError{\n\t\t\t\t\tfield:  \"RandomSampling\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, TracingValidationError{\n\t\t\t\t\tfield:  \"RandomSampling\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRandomSampling()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn TracingValidationError{\n\t\t\t\tfield:  \"RandomSampling\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetOverallSampling()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, TracingValidationError{\n\t\t\t\t\tfield:  \"OverallSampling\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, TracingValidationError{\n\t\t\t\t\tfield:  \"OverallSampling\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetOverallSampling()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn TracingValidationError{\n\t\t\t\tfield:  \"OverallSampling\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetCustomTags() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, TracingValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"CustomTags[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, TracingValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"CustomTags[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn TracingValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"CustomTags[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// no validation rules for Operation\n\n\t// no validation rules for UpstreamOperation\n\n\tif len(errors) > 0 {\n\t\treturn TracingMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// TracingMultiError is an error wrapping multiple validation errors returned\n// by Tracing.ValidateAll() if the designated constraints aren't met.\ntype TracingMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m TracingMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m TracingMultiError) AllErrors() []error { return m }\n\n// TracingValidationError is the validation error returned by Tracing.Validate\n// if the designated constraints aren't met.\ntype TracingValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e TracingValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e TracingValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e TracingValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e TracingValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e TracingValidationError) ErrorName() string { return \"TracingValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e TracingValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sTracing.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = TracingValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = TracingValidationError{}\n\n// Validate checks the field values on VirtualCluster with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *VirtualCluster) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on VirtualCluster with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in VirtualClusterMultiError,\n// or nil if none found.\nfunc (m *VirtualCluster) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *VirtualCluster) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetHeaders() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, VirtualClusterValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, VirtualClusterValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn VirtualClusterValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := VirtualClusterValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn VirtualClusterMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// VirtualClusterMultiError is an error wrapping multiple validation errors\n// returned by VirtualCluster.ValidateAll() if the designated constraints\n// aren't met.\ntype VirtualClusterMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m VirtualClusterMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m VirtualClusterMultiError) AllErrors() []error { return m }\n\n// VirtualClusterValidationError is the validation error returned by\n// VirtualCluster.Validate if the designated constraints aren't met.\ntype VirtualClusterValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e VirtualClusterValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e VirtualClusterValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e VirtualClusterValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e VirtualClusterValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e VirtualClusterValidationError) ErrorName() string { return \"VirtualClusterValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e VirtualClusterValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sVirtualCluster.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = VirtualClusterValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = VirtualClusterValidationError{}\n\n// Validate checks the field values on RateLimit with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *RateLimit) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in RateLimitMultiError, or nil\n// if none found.\nfunc (m *RateLimit) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif wrapper := m.GetStage(); wrapper != nil {\n\n\t\tif wrapper.GetValue() > 10 {\n\t\t\terr := RateLimitValidationError{\n\t\t\t\tfield:  \"Stage\",\n\t\t\t\treason: \"value must be less than or equal to 10\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\t// no validation rules for DisableKey\n\n\tif len(m.GetActions()) < 1 {\n\t\terr := RateLimitValidationError{\n\t\t\tfield:  \"Actions\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetActions() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimitValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Actions[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimitValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Actions[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimitValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Actions[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetLimit()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RateLimitValidationError{\n\t\t\t\t\tfield:  \"Limit\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RateLimitValidationError{\n\t\t\t\t\tfield:  \"Limit\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetLimit()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RateLimitValidationError{\n\t\t\t\tfield:  \"Limit\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetHitsAddend()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RateLimitValidationError{\n\t\t\t\t\tfield:  \"HitsAddend\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RateLimitValidationError{\n\t\t\t\t\tfield:  \"HitsAddend\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetHitsAddend()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RateLimitValidationError{\n\t\t\t\tfield:  \"HitsAddend\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for ApplyOnStreamDone\n\n\tif len(errors) > 0 {\n\t\treturn RateLimitMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimitMultiError is an error wrapping multiple validation errors returned\n// by RateLimit.ValidateAll() if the designated constraints aren't met.\ntype RateLimitMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimitMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimitMultiError) AllErrors() []error { return m }\n\n// RateLimitValidationError is the validation error returned by\n// RateLimit.Validate if the designated constraints aren't met.\ntype RateLimitValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimitValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimitValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimitValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimitValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimitValidationError) ErrorName() string { return \"RateLimitValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RateLimitValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimitValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimitValidationError{}\n\n// Validate checks the field values on HeaderMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *HeaderMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HeaderMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in HeaderMatcherMultiError, or\n// nil if none found.\nfunc (m *HeaderMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HeaderMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := HeaderMatcherValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif !_HeaderMatcher_Name_Pattern.MatchString(m.GetName()) {\n\t\terr := HeaderMatcherValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for InvertMatch\n\n\t// no validation rules for TreatMissingHeaderAsEmpty\n\n\tswitch v := m.HeaderMatchSpecifier.(type) {\n\tcase *HeaderMatcher_ExactMatch:\n\t\tif v == nil {\n\t\t\terr := HeaderMatcherValidationError{\n\t\t\t\tfield:  \"HeaderMatchSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\t// no validation rules for ExactMatch\n\tcase *HeaderMatcher_SafeRegexMatch:\n\t\tif v == nil {\n\t\t\terr := HeaderMatcherValidationError{\n\t\t\t\tfield:  \"HeaderMatchSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetSafeRegexMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HeaderMatcherValidationError{\n\t\t\t\t\t\tfield:  \"SafeRegexMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HeaderMatcherValidationError{\n\t\t\t\t\t\tfield:  \"SafeRegexMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetSafeRegexMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HeaderMatcherValidationError{\n\t\t\t\t\tfield:  \"SafeRegexMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *HeaderMatcher_RangeMatch:\n\t\tif v == nil {\n\t\t\terr := HeaderMatcherValidationError{\n\t\t\t\tfield:  \"HeaderMatchSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetRangeMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HeaderMatcherValidationError{\n\t\t\t\t\t\tfield:  \"RangeMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HeaderMatcherValidationError{\n\t\t\t\t\t\tfield:  \"RangeMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetRangeMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HeaderMatcherValidationError{\n\t\t\t\t\tfield:  \"RangeMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *HeaderMatcher_PresentMatch:\n\t\tif v == nil {\n\t\t\terr := HeaderMatcherValidationError{\n\t\t\t\tfield:  \"HeaderMatchSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\t// no validation rules for PresentMatch\n\tcase *HeaderMatcher_PrefixMatch:\n\t\tif v == nil {\n\t\t\terr := HeaderMatcherValidationError{\n\t\t\t\tfield:  \"HeaderMatchSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif utf8.RuneCountInString(m.GetPrefixMatch()) < 1 {\n\t\t\terr := HeaderMatcherValidationError{\n\t\t\t\tfield:  \"PrefixMatch\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *HeaderMatcher_SuffixMatch:\n\t\tif v == nil {\n\t\t\terr := HeaderMatcherValidationError{\n\t\t\t\tfield:  \"HeaderMatchSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif utf8.RuneCountInString(m.GetSuffixMatch()) < 1 {\n\t\t\terr := HeaderMatcherValidationError{\n\t\t\t\tfield:  \"SuffixMatch\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *HeaderMatcher_ContainsMatch:\n\t\tif v == nil {\n\t\t\terr := HeaderMatcherValidationError{\n\t\t\t\tfield:  \"HeaderMatchSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif utf8.RuneCountInString(m.GetContainsMatch()) < 1 {\n\t\t\terr := HeaderMatcherValidationError{\n\t\t\t\tfield:  \"ContainsMatch\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *HeaderMatcher_StringMatch:\n\t\tif v == nil {\n\t\t\terr := HeaderMatcherValidationError{\n\t\t\t\tfield:  \"HeaderMatchSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetStringMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HeaderMatcherValidationError{\n\t\t\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HeaderMatcherValidationError{\n\t\t\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetStringMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HeaderMatcherValidationError{\n\t\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HeaderMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HeaderMatcherMultiError is an error wrapping multiple validation errors\n// returned by HeaderMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype HeaderMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HeaderMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HeaderMatcherMultiError) AllErrors() []error { return m }\n\n// HeaderMatcherValidationError is the validation error returned by\n// HeaderMatcher.Validate if the designated constraints aren't met.\ntype HeaderMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HeaderMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HeaderMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HeaderMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HeaderMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HeaderMatcherValidationError) ErrorName() string { return \"HeaderMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e HeaderMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHeaderMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HeaderMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HeaderMatcherValidationError{}\n\nvar _HeaderMatcher_Name_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on QueryParameterMatcher with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *QueryParameterMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on QueryParameterMatcher with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// QueryParameterMatcherMultiError, or nil if none found.\nfunc (m *QueryParameterMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *QueryParameterMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := QueryParameterMatcherValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(m.GetName()) > 1024 {\n\t\terr := QueryParameterMatcherValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at most 1024 bytes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tswitch v := m.QueryParameterMatchSpecifier.(type) {\n\tcase *QueryParameterMatcher_StringMatch:\n\t\tif v == nil {\n\t\t\terr := QueryParameterMatcherValidationError{\n\t\t\t\tfield:  \"QueryParameterMatchSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif m.GetStringMatch() == nil {\n\t\t\terr := QueryParameterMatcherValidationError{\n\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\treason: \"value is required\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetStringMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, QueryParameterMatcherValidationError{\n\t\t\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, QueryParameterMatcherValidationError{\n\t\t\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetStringMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn QueryParameterMatcherValidationError{\n\t\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *QueryParameterMatcher_PresentMatch:\n\t\tif v == nil {\n\t\t\terr := QueryParameterMatcherValidationError{\n\t\t\t\tfield:  \"QueryParameterMatchSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\t// no validation rules for PresentMatch\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn QueryParameterMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// QueryParameterMatcherMultiError is an error wrapping multiple validation\n// errors returned by QueryParameterMatcher.ValidateAll() if the designated\n// constraints aren't met.\ntype QueryParameterMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m QueryParameterMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m QueryParameterMatcherMultiError) AllErrors() []error { return m }\n\n// QueryParameterMatcherValidationError is the validation error returned by\n// QueryParameterMatcher.Validate if the designated constraints aren't met.\ntype QueryParameterMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e QueryParameterMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e QueryParameterMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e QueryParameterMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e QueryParameterMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e QueryParameterMatcherValidationError) ErrorName() string {\n\treturn \"QueryParameterMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e QueryParameterMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sQueryParameterMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = QueryParameterMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = QueryParameterMatcherValidationError{}\n\n// Validate checks the field values on CookieMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *CookieMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CookieMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in CookieMatcherMultiError, or\n// nil if none found.\nfunc (m *CookieMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CookieMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := CookieMatcherValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(m.GetName()) > 1024 {\n\t\terr := CookieMatcherValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at most 1024 bytes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif m.GetStringMatch() == nil {\n\t\terr := CookieMatcherValidationError{\n\t\t\tfield:  \"StringMatch\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetStringMatch()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, CookieMatcherValidationError{\n\t\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, CookieMatcherValidationError{\n\t\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetStringMatch()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn CookieMatcherValidationError{\n\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for InvertMatch\n\n\tif len(errors) > 0 {\n\t\treturn CookieMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CookieMatcherMultiError is an error wrapping multiple validation errors\n// returned by CookieMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype CookieMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CookieMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CookieMatcherMultiError) AllErrors() []error { return m }\n\n// CookieMatcherValidationError is the validation error returned by\n// CookieMatcher.Validate if the designated constraints aren't met.\ntype CookieMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CookieMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CookieMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CookieMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CookieMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CookieMatcherValidationError) ErrorName() string { return \"CookieMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e CookieMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCookieMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CookieMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CookieMatcherValidationError{}\n\n// Validate checks the field values on InternalRedirectPolicy with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *InternalRedirectPolicy) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on InternalRedirectPolicy with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// InternalRedirectPolicyMultiError, or nil if none found.\nfunc (m *InternalRedirectPolicy) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *InternalRedirectPolicy) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxInternalRedirects()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, InternalRedirectPolicyValidationError{\n\t\t\t\t\tfield:  \"MaxInternalRedirects\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, InternalRedirectPolicyValidationError{\n\t\t\t\t\tfield:  \"MaxInternalRedirects\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxInternalRedirects()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn InternalRedirectPolicyValidationError{\n\t\t\t\tfield:  \"MaxInternalRedirects\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(m.GetRedirectResponseCodes()) > 5 {\n\t\terr := InternalRedirectPolicyValidationError{\n\t\t\tfield:  \"RedirectResponseCodes\",\n\t\t\treason: \"value must contain no more than 5 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetPredicates() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, InternalRedirectPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Predicates[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, InternalRedirectPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Predicates[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn InternalRedirectPolicyValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Predicates[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// no validation rules for AllowCrossSchemeRedirect\n\n\t_InternalRedirectPolicy_ResponseHeadersToCopy_Unique := make(map[string]struct{}, len(m.GetResponseHeadersToCopy()))\n\n\tfor idx, item := range m.GetResponseHeadersToCopy() {\n\t\t_, _ = idx, item\n\n\t\tif _, exists := _InternalRedirectPolicy_ResponseHeadersToCopy_Unique[item]; exists {\n\t\t\terr := InternalRedirectPolicyValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToCopy[%v]\", idx),\n\t\t\t\treason: \"repeated value must contain unique items\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\t\t\t_InternalRedirectPolicy_ResponseHeadersToCopy_Unique[item] = struct{}{}\n\t\t}\n\n\t\tif !_InternalRedirectPolicy_ResponseHeadersToCopy_Pattern.MatchString(item) {\n\t\t\terr := InternalRedirectPolicyValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToCopy[%v]\", idx),\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn InternalRedirectPolicyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// InternalRedirectPolicyMultiError is an error wrapping multiple validation\n// errors returned by InternalRedirectPolicy.ValidateAll() if the designated\n// constraints aren't met.\ntype InternalRedirectPolicyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m InternalRedirectPolicyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m InternalRedirectPolicyMultiError) AllErrors() []error { return m }\n\n// InternalRedirectPolicyValidationError is the validation error returned by\n// InternalRedirectPolicy.Validate if the designated constraints aren't met.\ntype InternalRedirectPolicyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e InternalRedirectPolicyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e InternalRedirectPolicyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e InternalRedirectPolicyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e InternalRedirectPolicyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e InternalRedirectPolicyValidationError) ErrorName() string {\n\treturn \"InternalRedirectPolicyValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e InternalRedirectPolicyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sInternalRedirectPolicy.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = InternalRedirectPolicyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = InternalRedirectPolicyValidationError{}\n\nvar _InternalRedirectPolicy_ResponseHeadersToCopy_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on FilterConfig with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *FilterConfig) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on FilterConfig with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in FilterConfigMultiError, or\n// nil if none found.\nfunc (m *FilterConfig) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *FilterConfig) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetConfig()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, FilterConfigValidationError{\n\t\t\t\t\tfield:  \"Config\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, FilterConfigValidationError{\n\t\t\t\t\tfield:  \"Config\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetConfig()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn FilterConfigValidationError{\n\t\t\t\tfield:  \"Config\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for IsOptional\n\n\t// no validation rules for Disabled\n\n\tif len(errors) > 0 {\n\t\treturn FilterConfigMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// FilterConfigMultiError is an error wrapping multiple validation errors\n// returned by FilterConfig.ValidateAll() if the designated constraints aren't met.\ntype FilterConfigMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m FilterConfigMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m FilterConfigMultiError) AllErrors() []error { return m }\n\n// FilterConfigValidationError is the validation error returned by\n// FilterConfig.Validate if the designated constraints aren't met.\ntype FilterConfigValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e FilterConfigValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e FilterConfigValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e FilterConfigValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e FilterConfigValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e FilterConfigValidationError) ErrorName() string { return \"FilterConfigValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e FilterConfigValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sFilterConfig.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = FilterConfigValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = FilterConfigValidationError{}\n\n// Validate checks the field values on WeightedCluster_ClusterWeight with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *WeightedCluster_ClusterWeight) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on WeightedCluster_ClusterWeight with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// WeightedCluster_ClusterWeightMultiError, or nil if none found.\nfunc (m *WeightedCluster_ClusterWeight) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *WeightedCluster_ClusterWeight) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Name\n\n\tif !_WeightedCluster_ClusterWeight_ClusterHeader_Pattern.MatchString(m.GetClusterHeader()) {\n\t\terr := WeightedCluster_ClusterWeightValidationError{\n\t\t\tfield:  \"ClusterHeader\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetWeight()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, WeightedCluster_ClusterWeightValidationError{\n\t\t\t\t\tfield:  \"Weight\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, WeightedCluster_ClusterWeightValidationError{\n\t\t\t\t\tfield:  \"Weight\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetWeight()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn WeightedCluster_ClusterWeightValidationError{\n\t\t\t\tfield:  \"Weight\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMetadataMatch()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, WeightedCluster_ClusterWeightValidationError{\n\t\t\t\t\tfield:  \"MetadataMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, WeightedCluster_ClusterWeightValidationError{\n\t\t\t\t\tfield:  \"MetadataMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMetadataMatch()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn WeightedCluster_ClusterWeightValidationError{\n\t\t\t\tfield:  \"MetadataMatch\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(m.GetRequestHeadersToAdd()) > 1000 {\n\t\terr := WeightedCluster_ClusterWeightValidationError{\n\t\t\tfield:  \"RequestHeadersToAdd\",\n\t\t\treason: \"value must contain no more than 1000 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetRequestHeadersToAdd() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, WeightedCluster_ClusterWeightValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, WeightedCluster_ClusterWeightValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn WeightedCluster_ClusterWeightValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToAdd[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetRequestHeadersToRemove() {\n\t\t_, _ = idx, item\n\n\t\tif !_WeightedCluster_ClusterWeight_RequestHeadersToRemove_Pattern.MatchString(item) {\n\t\t\terr := WeightedCluster_ClusterWeightValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersToRemove[%v]\", idx),\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(m.GetResponseHeadersToAdd()) > 1000 {\n\t\terr := WeightedCluster_ClusterWeightValidationError{\n\t\t\tfield:  \"ResponseHeadersToAdd\",\n\t\t\treason: \"value must contain no more than 1000 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetResponseHeadersToAdd() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, WeightedCluster_ClusterWeightValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, WeightedCluster_ClusterWeightValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToAdd[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn WeightedCluster_ClusterWeightValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToAdd[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetResponseHeadersToRemove() {\n\t\t_, _ = idx, item\n\n\t\tif !_WeightedCluster_ClusterWeight_ResponseHeadersToRemove_Pattern.MatchString(item) {\n\t\t\terr := WeightedCluster_ClusterWeightValidationError{\n\t\t\t\tfield:  fmt.Sprintf(\"ResponseHeadersToRemove[%v]\", idx),\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\t{\n\t\tsorted_keys := make([]string, len(m.GetTypedPerFilterConfig()))\n\t\ti := 0\n\t\tfor key := range m.GetTypedPerFilterConfig() {\n\t\t\tsorted_keys[i] = key\n\t\t\ti++\n\t\t}\n\t\tsort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] })\n\t\tfor _, key := range sorted_keys {\n\t\t\tval := m.GetTypedPerFilterConfig()[key]\n\t\t\t_ = val\n\n\t\t\t// no validation rules for TypedPerFilterConfig[key]\n\n\t\t\tif all {\n\t\t\t\tswitch v := interface{}(val).(type) {\n\t\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\t\terrors = append(errors, WeightedCluster_ClusterWeightValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedPerFilterConfig[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\tcase interface{ Validate() error }:\n\t\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\t\terrors = append(errors, WeightedCluster_ClusterWeightValidationError{\n\t\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedPerFilterConfig[%v]\", key),\n\t\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if v, ok := interface{}(val).(interface{ Validate() error }); ok {\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\treturn WeightedCluster_ClusterWeightValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"TypedPerFilterConfig[%v]\", key),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\tswitch v := m.HostRewriteSpecifier.(type) {\n\tcase *WeightedCluster_ClusterWeight_HostRewriteLiteral:\n\t\tif v == nil {\n\t\t\terr := WeightedCluster_ClusterWeightValidationError{\n\t\t\t\tfield:  \"HostRewriteSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif !_WeightedCluster_ClusterWeight_HostRewriteLiteral_Pattern.MatchString(m.GetHostRewriteLiteral()) {\n\t\t\terr := WeightedCluster_ClusterWeightValidationError{\n\t\t\t\tfield:  \"HostRewriteLiteral\",\n\t\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn WeightedCluster_ClusterWeightMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// WeightedCluster_ClusterWeightMultiError is an error wrapping multiple\n// validation errors returned by WeightedCluster_ClusterWeight.ValidateAll()\n// if the designated constraints aren't met.\ntype WeightedCluster_ClusterWeightMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m WeightedCluster_ClusterWeightMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m WeightedCluster_ClusterWeightMultiError) AllErrors() []error { return m }\n\n// WeightedCluster_ClusterWeightValidationError is the validation error\n// returned by WeightedCluster_ClusterWeight.Validate if the designated\n// constraints aren't met.\ntype WeightedCluster_ClusterWeightValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e WeightedCluster_ClusterWeightValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e WeightedCluster_ClusterWeightValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e WeightedCluster_ClusterWeightValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e WeightedCluster_ClusterWeightValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e WeightedCluster_ClusterWeightValidationError) ErrorName() string {\n\treturn \"WeightedCluster_ClusterWeightValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e WeightedCluster_ClusterWeightValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sWeightedCluster_ClusterWeight.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = WeightedCluster_ClusterWeightValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = WeightedCluster_ClusterWeightValidationError{}\n\nvar _WeightedCluster_ClusterWeight_ClusterHeader_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _WeightedCluster_ClusterWeight_RequestHeadersToRemove_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _WeightedCluster_ClusterWeight_ResponseHeadersToRemove_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _WeightedCluster_ClusterWeight_HostRewriteLiteral_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on RouteMatch_GrpcRouteMatchOptions with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the first error encountered is returned, or nil if there are\n// no violations.\nfunc (m *RouteMatch_GrpcRouteMatchOptions) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteMatch_GrpcRouteMatchOptions with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// RouteMatch_GrpcRouteMatchOptionsMultiError, or nil if none found.\nfunc (m *RouteMatch_GrpcRouteMatchOptions) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteMatch_GrpcRouteMatchOptions) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn RouteMatch_GrpcRouteMatchOptionsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteMatch_GrpcRouteMatchOptionsMultiError is an error wrapping multiple\n// validation errors returned by\n// RouteMatch_GrpcRouteMatchOptions.ValidateAll() if the designated\n// constraints aren't met.\ntype RouteMatch_GrpcRouteMatchOptionsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteMatch_GrpcRouteMatchOptionsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteMatch_GrpcRouteMatchOptionsMultiError) AllErrors() []error { return m }\n\n// RouteMatch_GrpcRouteMatchOptionsValidationError is the validation error\n// returned by RouteMatch_GrpcRouteMatchOptions.Validate if the designated\n// constraints aren't met.\ntype RouteMatch_GrpcRouteMatchOptionsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteMatch_GrpcRouteMatchOptionsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteMatch_GrpcRouteMatchOptionsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteMatch_GrpcRouteMatchOptionsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteMatch_GrpcRouteMatchOptionsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteMatch_GrpcRouteMatchOptionsValidationError) ErrorName() string {\n\treturn \"RouteMatch_GrpcRouteMatchOptionsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteMatch_GrpcRouteMatchOptionsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteMatch_GrpcRouteMatchOptions.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteMatch_GrpcRouteMatchOptionsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteMatch_GrpcRouteMatchOptionsValidationError{}\n\n// Validate checks the field values on RouteMatch_TlsContextMatchOptions with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the first error encountered is returned, or nil if there are\n// no violations.\nfunc (m *RouteMatch_TlsContextMatchOptions) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteMatch_TlsContextMatchOptions\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// RouteMatch_TlsContextMatchOptionsMultiError, or nil if none found.\nfunc (m *RouteMatch_TlsContextMatchOptions) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteMatch_TlsContextMatchOptions) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPresented()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteMatch_TlsContextMatchOptionsValidationError{\n\t\t\t\t\tfield:  \"Presented\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteMatch_TlsContextMatchOptionsValidationError{\n\t\t\t\t\tfield:  \"Presented\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPresented()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteMatch_TlsContextMatchOptionsValidationError{\n\t\t\t\tfield:  \"Presented\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetValidated()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteMatch_TlsContextMatchOptionsValidationError{\n\t\t\t\t\tfield:  \"Validated\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteMatch_TlsContextMatchOptionsValidationError{\n\t\t\t\t\tfield:  \"Validated\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetValidated()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteMatch_TlsContextMatchOptionsValidationError{\n\t\t\t\tfield:  \"Validated\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteMatch_TlsContextMatchOptionsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteMatch_TlsContextMatchOptionsMultiError is an error wrapping multiple\n// validation errors returned by\n// RouteMatch_TlsContextMatchOptions.ValidateAll() if the designated\n// constraints aren't met.\ntype RouteMatch_TlsContextMatchOptionsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteMatch_TlsContextMatchOptionsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteMatch_TlsContextMatchOptionsMultiError) AllErrors() []error { return m }\n\n// RouteMatch_TlsContextMatchOptionsValidationError is the validation error\n// returned by RouteMatch_TlsContextMatchOptions.Validate if the designated\n// constraints aren't met.\ntype RouteMatch_TlsContextMatchOptionsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteMatch_TlsContextMatchOptionsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteMatch_TlsContextMatchOptionsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteMatch_TlsContextMatchOptionsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteMatch_TlsContextMatchOptionsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteMatch_TlsContextMatchOptionsValidationError) ErrorName() string {\n\treturn \"RouteMatch_TlsContextMatchOptionsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteMatch_TlsContextMatchOptionsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteMatch_TlsContextMatchOptions.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteMatch_TlsContextMatchOptionsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteMatch_TlsContextMatchOptionsValidationError{}\n\n// Validate checks the field values on RouteMatch_ConnectMatcher with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RouteMatch_ConnectMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteMatch_ConnectMatcher with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RouteMatch_ConnectMatcherMultiError, or nil if none found.\nfunc (m *RouteMatch_ConnectMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteMatch_ConnectMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn RouteMatch_ConnectMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteMatch_ConnectMatcherMultiError is an error wrapping multiple validation\n// errors returned by RouteMatch_ConnectMatcher.ValidateAll() if the\n// designated constraints aren't met.\ntype RouteMatch_ConnectMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteMatch_ConnectMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteMatch_ConnectMatcherMultiError) AllErrors() []error { return m }\n\n// RouteMatch_ConnectMatcherValidationError is the validation error returned by\n// RouteMatch_ConnectMatcher.Validate if the designated constraints aren't met.\ntype RouteMatch_ConnectMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteMatch_ConnectMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteMatch_ConnectMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteMatch_ConnectMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteMatch_ConnectMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteMatch_ConnectMatcherValidationError) ErrorName() string {\n\treturn \"RouteMatch_ConnectMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteMatch_ConnectMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteMatch_ConnectMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteMatch_ConnectMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteMatch_ConnectMatcherValidationError{}\n\n// Validate checks the field values on RouteAction_RequestMirrorPolicy with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RouteAction_RequestMirrorPolicy) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteAction_RequestMirrorPolicy with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// RouteAction_RequestMirrorPolicyMultiError, or nil if none found.\nfunc (m *RouteAction_RequestMirrorPolicy) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteAction_RequestMirrorPolicy) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Cluster\n\n\tif !_RouteAction_RequestMirrorPolicy_ClusterHeader_Pattern.MatchString(m.GetClusterHeader()) {\n\t\terr := RouteAction_RequestMirrorPolicyValidationError{\n\t\t\tfield:  \"ClusterHeader\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRuntimeFraction()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_RequestMirrorPolicyValidationError{\n\t\t\t\t\tfield:  \"RuntimeFraction\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_RequestMirrorPolicyValidationError{\n\t\t\t\t\tfield:  \"RuntimeFraction\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRuntimeFraction()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteAction_RequestMirrorPolicyValidationError{\n\t\t\t\tfield:  \"RuntimeFraction\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetTraceSampled()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_RequestMirrorPolicyValidationError{\n\t\t\t\t\tfield:  \"TraceSampled\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_RequestMirrorPolicyValidationError{\n\t\t\t\t\tfield:  \"TraceSampled\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetTraceSampled()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteAction_RequestMirrorPolicyValidationError{\n\t\t\t\tfield:  \"TraceSampled\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for DisableShadowHostSuffixAppend\n\n\tif len(m.GetRequestHeadersMutations()) > 1000 {\n\t\terr := RouteAction_RequestMirrorPolicyValidationError{\n\t\t\tfield:  \"RequestHeadersMutations\",\n\t\t\treason: \"value must contain no more than 1000 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetRequestHeadersMutations() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteAction_RequestMirrorPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersMutations[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteAction_RequestMirrorPolicyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersMutations[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteAction_RequestMirrorPolicyValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RequestHeadersMutations[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif !_RouteAction_RequestMirrorPolicy_HostRewriteLiteral_Pattern.MatchString(m.GetHostRewriteLiteral()) {\n\t\terr := RouteAction_RequestMirrorPolicyValidationError{\n\t\t\tfield:  \"HostRewriteLiteral\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteAction_RequestMirrorPolicyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteAction_RequestMirrorPolicyMultiError is an error wrapping multiple\n// validation errors returned by RouteAction_RequestMirrorPolicy.ValidateAll()\n// if the designated constraints aren't met.\ntype RouteAction_RequestMirrorPolicyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteAction_RequestMirrorPolicyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteAction_RequestMirrorPolicyMultiError) AllErrors() []error { return m }\n\n// RouteAction_RequestMirrorPolicyValidationError is the validation error\n// returned by RouteAction_RequestMirrorPolicy.Validate if the designated\n// constraints aren't met.\ntype RouteAction_RequestMirrorPolicyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteAction_RequestMirrorPolicyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteAction_RequestMirrorPolicyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteAction_RequestMirrorPolicyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteAction_RequestMirrorPolicyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteAction_RequestMirrorPolicyValidationError) ErrorName() string {\n\treturn \"RouteAction_RequestMirrorPolicyValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteAction_RequestMirrorPolicyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteAction_RequestMirrorPolicy.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteAction_RequestMirrorPolicyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteAction_RequestMirrorPolicyValidationError{}\n\nvar _RouteAction_RequestMirrorPolicy_ClusterHeader_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _RouteAction_RequestMirrorPolicy_HostRewriteLiteral_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on RouteAction_HashPolicy with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RouteAction_HashPolicy) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteAction_HashPolicy with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RouteAction_HashPolicyMultiError, or nil if none found.\nfunc (m *RouteAction_HashPolicy) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteAction_HashPolicy) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Terminal\n\n\toneofPolicySpecifierPresent := false\n\tswitch v := m.PolicySpecifier.(type) {\n\tcase *RouteAction_HashPolicy_Header_:\n\t\tif v == nil {\n\t\t\terr := RouteAction_HashPolicyValidationError{\n\t\t\t\tfield:  \"PolicySpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPolicySpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetHeader()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteAction_HashPolicyValidationError{\n\t\t\t\t\t\tfield:  \"Header\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteAction_HashPolicyValidationError{\n\t\t\t\t\t\tfield:  \"Header\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetHeader()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteAction_HashPolicyValidationError{\n\t\t\t\t\tfield:  \"Header\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RouteAction_HashPolicy_Cookie_:\n\t\tif v == nil {\n\t\t\terr := RouteAction_HashPolicyValidationError{\n\t\t\t\tfield:  \"PolicySpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPolicySpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetCookie()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteAction_HashPolicyValidationError{\n\t\t\t\t\t\tfield:  \"Cookie\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteAction_HashPolicyValidationError{\n\t\t\t\t\t\tfield:  \"Cookie\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetCookie()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteAction_HashPolicyValidationError{\n\t\t\t\t\tfield:  \"Cookie\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RouteAction_HashPolicy_ConnectionProperties_:\n\t\tif v == nil {\n\t\t\terr := RouteAction_HashPolicyValidationError{\n\t\t\t\tfield:  \"PolicySpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPolicySpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetConnectionProperties()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteAction_HashPolicyValidationError{\n\t\t\t\t\t\tfield:  \"ConnectionProperties\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteAction_HashPolicyValidationError{\n\t\t\t\t\t\tfield:  \"ConnectionProperties\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetConnectionProperties()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteAction_HashPolicyValidationError{\n\t\t\t\t\tfield:  \"ConnectionProperties\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RouteAction_HashPolicy_QueryParameter_:\n\t\tif v == nil {\n\t\t\terr := RouteAction_HashPolicyValidationError{\n\t\t\t\tfield:  \"PolicySpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPolicySpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetQueryParameter()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteAction_HashPolicyValidationError{\n\t\t\t\t\t\tfield:  \"QueryParameter\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteAction_HashPolicyValidationError{\n\t\t\t\t\t\tfield:  \"QueryParameter\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetQueryParameter()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteAction_HashPolicyValidationError{\n\t\t\t\t\tfield:  \"QueryParameter\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RouteAction_HashPolicy_FilterState_:\n\t\tif v == nil {\n\t\t\terr := RouteAction_HashPolicyValidationError{\n\t\t\t\tfield:  \"PolicySpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPolicySpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetFilterState()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteAction_HashPolicyValidationError{\n\t\t\t\t\t\tfield:  \"FilterState\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteAction_HashPolicyValidationError{\n\t\t\t\t\t\tfield:  \"FilterState\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetFilterState()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteAction_HashPolicyValidationError{\n\t\t\t\t\tfield:  \"FilterState\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofPolicySpecifierPresent {\n\t\terr := RouteAction_HashPolicyValidationError{\n\t\t\tfield:  \"PolicySpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteAction_HashPolicyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteAction_HashPolicyMultiError is an error wrapping multiple validation\n// errors returned by RouteAction_HashPolicy.ValidateAll() if the designated\n// constraints aren't met.\ntype RouteAction_HashPolicyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteAction_HashPolicyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteAction_HashPolicyMultiError) AllErrors() []error { return m }\n\n// RouteAction_HashPolicyValidationError is the validation error returned by\n// RouteAction_HashPolicy.Validate if the designated constraints aren't met.\ntype RouteAction_HashPolicyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteAction_HashPolicyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteAction_HashPolicyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteAction_HashPolicyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteAction_HashPolicyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteAction_HashPolicyValidationError) ErrorName() string {\n\treturn \"RouteAction_HashPolicyValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteAction_HashPolicyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteAction_HashPolicy.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteAction_HashPolicyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteAction_HashPolicyValidationError{}\n\n// Validate checks the field values on RouteAction_UpgradeConfig with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RouteAction_UpgradeConfig) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteAction_UpgradeConfig with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RouteAction_UpgradeConfigMultiError, or nil if none found.\nfunc (m *RouteAction_UpgradeConfig) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteAction_UpgradeConfig) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetUpgradeType()) < 1 {\n\t\terr := RouteAction_UpgradeConfigValidationError{\n\t\t\tfield:  \"UpgradeType\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif !_RouteAction_UpgradeConfig_UpgradeType_Pattern.MatchString(m.GetUpgradeType()) {\n\t\terr := RouteAction_UpgradeConfigValidationError{\n\t\t\tfield:  \"UpgradeType\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetEnabled()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_UpgradeConfigValidationError{\n\t\t\t\t\tfield:  \"Enabled\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_UpgradeConfigValidationError{\n\t\t\t\t\tfield:  \"Enabled\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetEnabled()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteAction_UpgradeConfigValidationError{\n\t\t\t\tfield:  \"Enabled\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetConnectConfig()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_UpgradeConfigValidationError{\n\t\t\t\t\tfield:  \"ConnectConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_UpgradeConfigValidationError{\n\t\t\t\t\tfield:  \"ConnectConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetConnectConfig()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteAction_UpgradeConfigValidationError{\n\t\t\t\tfield:  \"ConnectConfig\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteAction_UpgradeConfigMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteAction_UpgradeConfigMultiError is an error wrapping multiple validation\n// errors returned by RouteAction_UpgradeConfig.ValidateAll() if the\n// designated constraints aren't met.\ntype RouteAction_UpgradeConfigMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteAction_UpgradeConfigMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteAction_UpgradeConfigMultiError) AllErrors() []error { return m }\n\n// RouteAction_UpgradeConfigValidationError is the validation error returned by\n// RouteAction_UpgradeConfig.Validate if the designated constraints aren't met.\ntype RouteAction_UpgradeConfigValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteAction_UpgradeConfigValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteAction_UpgradeConfigValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteAction_UpgradeConfigValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteAction_UpgradeConfigValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteAction_UpgradeConfigValidationError) ErrorName() string {\n\treturn \"RouteAction_UpgradeConfigValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteAction_UpgradeConfigValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteAction_UpgradeConfig.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteAction_UpgradeConfigValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteAction_UpgradeConfigValidationError{}\n\nvar _RouteAction_UpgradeConfig_UpgradeType_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on RouteAction_MaxStreamDuration with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RouteAction_MaxStreamDuration) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteAction_MaxStreamDuration with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// RouteAction_MaxStreamDurationMultiError, or nil if none found.\nfunc (m *RouteAction_MaxStreamDuration) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteAction_MaxStreamDuration) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxStreamDuration()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_MaxStreamDurationValidationError{\n\t\t\t\t\tfield:  \"MaxStreamDuration\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_MaxStreamDurationValidationError{\n\t\t\t\t\tfield:  \"MaxStreamDuration\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxStreamDuration()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteAction_MaxStreamDurationValidationError{\n\t\t\t\tfield:  \"MaxStreamDuration\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetGrpcTimeoutHeaderMax()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_MaxStreamDurationValidationError{\n\t\t\t\t\tfield:  \"GrpcTimeoutHeaderMax\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_MaxStreamDurationValidationError{\n\t\t\t\t\tfield:  \"GrpcTimeoutHeaderMax\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetGrpcTimeoutHeaderMax()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteAction_MaxStreamDurationValidationError{\n\t\t\t\tfield:  \"GrpcTimeoutHeaderMax\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetGrpcTimeoutHeaderOffset()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_MaxStreamDurationValidationError{\n\t\t\t\t\tfield:  \"GrpcTimeoutHeaderOffset\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_MaxStreamDurationValidationError{\n\t\t\t\t\tfield:  \"GrpcTimeoutHeaderOffset\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetGrpcTimeoutHeaderOffset()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteAction_MaxStreamDurationValidationError{\n\t\t\t\tfield:  \"GrpcTimeoutHeaderOffset\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteAction_MaxStreamDurationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteAction_MaxStreamDurationMultiError is an error wrapping multiple\n// validation errors returned by RouteAction_MaxStreamDuration.ValidateAll()\n// if the designated constraints aren't met.\ntype RouteAction_MaxStreamDurationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteAction_MaxStreamDurationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteAction_MaxStreamDurationMultiError) AllErrors() []error { return m }\n\n// RouteAction_MaxStreamDurationValidationError is the validation error\n// returned by RouteAction_MaxStreamDuration.Validate if the designated\n// constraints aren't met.\ntype RouteAction_MaxStreamDurationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteAction_MaxStreamDurationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteAction_MaxStreamDurationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteAction_MaxStreamDurationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteAction_MaxStreamDurationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteAction_MaxStreamDurationValidationError) ErrorName() string {\n\treturn \"RouteAction_MaxStreamDurationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteAction_MaxStreamDurationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteAction_MaxStreamDuration.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteAction_MaxStreamDurationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteAction_MaxStreamDurationValidationError{}\n\n// Validate checks the field values on RouteAction_HashPolicy_Header with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RouteAction_HashPolicy_Header) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteAction_HashPolicy_Header with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// RouteAction_HashPolicy_HeaderMultiError, or nil if none found.\nfunc (m *RouteAction_HashPolicy_Header) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteAction_HashPolicy_Header) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetHeaderName()) < 1 {\n\t\terr := RouteAction_HashPolicy_HeaderValidationError{\n\t\t\tfield:  \"HeaderName\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif !_RouteAction_HashPolicy_Header_HeaderName_Pattern.MatchString(m.GetHeaderName()) {\n\t\terr := RouteAction_HashPolicy_HeaderValidationError{\n\t\t\tfield:  \"HeaderName\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRegexRewrite()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_HashPolicy_HeaderValidationError{\n\t\t\t\t\tfield:  \"RegexRewrite\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_HashPolicy_HeaderValidationError{\n\t\t\t\t\tfield:  \"RegexRewrite\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRegexRewrite()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteAction_HashPolicy_HeaderValidationError{\n\t\t\t\tfield:  \"RegexRewrite\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteAction_HashPolicy_HeaderMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteAction_HashPolicy_HeaderMultiError is an error wrapping multiple\n// validation errors returned by RouteAction_HashPolicy_Header.ValidateAll()\n// if the designated constraints aren't met.\ntype RouteAction_HashPolicy_HeaderMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteAction_HashPolicy_HeaderMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteAction_HashPolicy_HeaderMultiError) AllErrors() []error { return m }\n\n// RouteAction_HashPolicy_HeaderValidationError is the validation error\n// returned by RouteAction_HashPolicy_Header.Validate if the designated\n// constraints aren't met.\ntype RouteAction_HashPolicy_HeaderValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteAction_HashPolicy_HeaderValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteAction_HashPolicy_HeaderValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteAction_HashPolicy_HeaderValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteAction_HashPolicy_HeaderValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteAction_HashPolicy_HeaderValidationError) ErrorName() string {\n\treturn \"RouteAction_HashPolicy_HeaderValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteAction_HashPolicy_HeaderValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteAction_HashPolicy_Header.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteAction_HashPolicy_HeaderValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteAction_HashPolicy_HeaderValidationError{}\n\nvar _RouteAction_HashPolicy_Header_HeaderName_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on RouteAction_HashPolicy_CookieAttribute\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the first error encountered is returned, or nil if\n// there are no violations.\nfunc (m *RouteAction_HashPolicy_CookieAttribute) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// RouteAction_HashPolicy_CookieAttribute with the rules defined in the proto\n// definition for this message. If any rules are violated, the result is a\n// list of violation errors wrapped in\n// RouteAction_HashPolicy_CookieAttributeMultiError, or nil if none found.\nfunc (m *RouteAction_HashPolicy_CookieAttribute) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteAction_HashPolicy_CookieAttribute) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := RouteAction_HashPolicy_CookieAttributeValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(m.GetName()) > 16384 {\n\t\terr := RouteAction_HashPolicy_CookieAttributeValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at most 16384 bytes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif !_RouteAction_HashPolicy_CookieAttribute_Name_Pattern.MatchString(m.GetName()) {\n\t\terr := RouteAction_HashPolicy_CookieAttributeValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(m.GetValue()) > 16384 {\n\t\terr := RouteAction_HashPolicy_CookieAttributeValidationError{\n\t\t\tfield:  \"Value\",\n\t\t\treason: \"value length must be at most 16384 bytes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif !_RouteAction_HashPolicy_CookieAttribute_Value_Pattern.MatchString(m.GetValue()) {\n\t\terr := RouteAction_HashPolicy_CookieAttributeValidationError{\n\t\t\tfield:  \"Value\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteAction_HashPolicy_CookieAttributeMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteAction_HashPolicy_CookieAttributeMultiError is an error wrapping\n// multiple validation errors returned by\n// RouteAction_HashPolicy_CookieAttribute.ValidateAll() if the designated\n// constraints aren't met.\ntype RouteAction_HashPolicy_CookieAttributeMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteAction_HashPolicy_CookieAttributeMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteAction_HashPolicy_CookieAttributeMultiError) AllErrors() []error { return m }\n\n// RouteAction_HashPolicy_CookieAttributeValidationError is the validation\n// error returned by RouteAction_HashPolicy_CookieAttribute.Validate if the\n// designated constraints aren't met.\ntype RouteAction_HashPolicy_CookieAttributeValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteAction_HashPolicy_CookieAttributeValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteAction_HashPolicy_CookieAttributeValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteAction_HashPolicy_CookieAttributeValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteAction_HashPolicy_CookieAttributeValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteAction_HashPolicy_CookieAttributeValidationError) ErrorName() string {\n\treturn \"RouteAction_HashPolicy_CookieAttributeValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteAction_HashPolicy_CookieAttributeValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteAction_HashPolicy_CookieAttribute.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteAction_HashPolicy_CookieAttributeValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteAction_HashPolicy_CookieAttributeValidationError{}\n\nvar _RouteAction_HashPolicy_CookieAttribute_Name_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\nvar _RouteAction_HashPolicy_CookieAttribute_Value_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on RouteAction_HashPolicy_Cookie with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RouteAction_HashPolicy_Cookie) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteAction_HashPolicy_Cookie with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// RouteAction_HashPolicy_CookieMultiError, or nil if none found.\nfunc (m *RouteAction_HashPolicy_Cookie) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteAction_HashPolicy_Cookie) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := RouteAction_HashPolicy_CookieValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetTtl()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_HashPolicy_CookieValidationError{\n\t\t\t\t\tfield:  \"Ttl\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_HashPolicy_CookieValidationError{\n\t\t\t\t\tfield:  \"Ttl\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetTtl()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteAction_HashPolicy_CookieValidationError{\n\t\t\t\tfield:  \"Ttl\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for Path\n\n\tfor idx, item := range m.GetAttributes() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteAction_HashPolicy_CookieValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Attributes[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RouteAction_HashPolicy_CookieValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Attributes[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RouteAction_HashPolicy_CookieValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Attributes[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteAction_HashPolicy_CookieMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteAction_HashPolicy_CookieMultiError is an error wrapping multiple\n// validation errors returned by RouteAction_HashPolicy_Cookie.ValidateAll()\n// if the designated constraints aren't met.\ntype RouteAction_HashPolicy_CookieMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteAction_HashPolicy_CookieMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteAction_HashPolicy_CookieMultiError) AllErrors() []error { return m }\n\n// RouteAction_HashPolicy_CookieValidationError is the validation error\n// returned by RouteAction_HashPolicy_Cookie.Validate if the designated\n// constraints aren't met.\ntype RouteAction_HashPolicy_CookieValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteAction_HashPolicy_CookieValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteAction_HashPolicy_CookieValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteAction_HashPolicy_CookieValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteAction_HashPolicy_CookieValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteAction_HashPolicy_CookieValidationError) ErrorName() string {\n\treturn \"RouteAction_HashPolicy_CookieValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteAction_HashPolicy_CookieValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteAction_HashPolicy_Cookie.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteAction_HashPolicy_CookieValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteAction_HashPolicy_CookieValidationError{}\n\n// Validate checks the field values on\n// RouteAction_HashPolicy_ConnectionProperties with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *RouteAction_HashPolicy_ConnectionProperties) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// RouteAction_HashPolicy_ConnectionProperties with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in\n// RouteAction_HashPolicy_ConnectionPropertiesMultiError, or nil if none found.\nfunc (m *RouteAction_HashPolicy_ConnectionProperties) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteAction_HashPolicy_ConnectionProperties) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for SourceIp\n\n\tif len(errors) > 0 {\n\t\treturn RouteAction_HashPolicy_ConnectionPropertiesMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteAction_HashPolicy_ConnectionPropertiesMultiError is an error wrapping\n// multiple validation errors returned by\n// RouteAction_HashPolicy_ConnectionProperties.ValidateAll() if the designated\n// constraints aren't met.\ntype RouteAction_HashPolicy_ConnectionPropertiesMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteAction_HashPolicy_ConnectionPropertiesMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteAction_HashPolicy_ConnectionPropertiesMultiError) AllErrors() []error { return m }\n\n// RouteAction_HashPolicy_ConnectionPropertiesValidationError is the validation\n// error returned by RouteAction_HashPolicy_ConnectionProperties.Validate if\n// the designated constraints aren't met.\ntype RouteAction_HashPolicy_ConnectionPropertiesValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteAction_HashPolicy_ConnectionPropertiesValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteAction_HashPolicy_ConnectionPropertiesValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteAction_HashPolicy_ConnectionPropertiesValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteAction_HashPolicy_ConnectionPropertiesValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteAction_HashPolicy_ConnectionPropertiesValidationError) ErrorName() string {\n\treturn \"RouteAction_HashPolicy_ConnectionPropertiesValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteAction_HashPolicy_ConnectionPropertiesValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteAction_HashPolicy_ConnectionProperties.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteAction_HashPolicy_ConnectionPropertiesValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteAction_HashPolicy_ConnectionPropertiesValidationError{}\n\n// Validate checks the field values on RouteAction_HashPolicy_QueryParameter\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the first error encountered is returned, or nil if\n// there are no violations.\nfunc (m *RouteAction_HashPolicy_QueryParameter) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteAction_HashPolicy_QueryParameter\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// RouteAction_HashPolicy_QueryParameterMultiError, or nil if none found.\nfunc (m *RouteAction_HashPolicy_QueryParameter) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteAction_HashPolicy_QueryParameter) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := RouteAction_HashPolicy_QueryParameterValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteAction_HashPolicy_QueryParameterMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteAction_HashPolicy_QueryParameterMultiError is an error wrapping\n// multiple validation errors returned by\n// RouteAction_HashPolicy_QueryParameter.ValidateAll() if the designated\n// constraints aren't met.\ntype RouteAction_HashPolicy_QueryParameterMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteAction_HashPolicy_QueryParameterMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteAction_HashPolicy_QueryParameterMultiError) AllErrors() []error { return m }\n\n// RouteAction_HashPolicy_QueryParameterValidationError is the validation error\n// returned by RouteAction_HashPolicy_QueryParameter.Validate if the\n// designated constraints aren't met.\ntype RouteAction_HashPolicy_QueryParameterValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteAction_HashPolicy_QueryParameterValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteAction_HashPolicy_QueryParameterValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteAction_HashPolicy_QueryParameterValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteAction_HashPolicy_QueryParameterValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteAction_HashPolicy_QueryParameterValidationError) ErrorName() string {\n\treturn \"RouteAction_HashPolicy_QueryParameterValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteAction_HashPolicy_QueryParameterValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteAction_HashPolicy_QueryParameter.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteAction_HashPolicy_QueryParameterValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteAction_HashPolicy_QueryParameterValidationError{}\n\n// Validate checks the field values on RouteAction_HashPolicy_FilterState with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the first error encountered is returned, or nil if there are\n// no violations.\nfunc (m *RouteAction_HashPolicy_FilterState) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RouteAction_HashPolicy_FilterState\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// RouteAction_HashPolicy_FilterStateMultiError, or nil if none found.\nfunc (m *RouteAction_HashPolicy_FilterState) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteAction_HashPolicy_FilterState) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetKey()) < 1 {\n\t\terr := RouteAction_HashPolicy_FilterStateValidationError{\n\t\t\tfield:  \"Key\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RouteAction_HashPolicy_FilterStateMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteAction_HashPolicy_FilterStateMultiError is an error wrapping multiple\n// validation errors returned by\n// RouteAction_HashPolicy_FilterState.ValidateAll() if the designated\n// constraints aren't met.\ntype RouteAction_HashPolicy_FilterStateMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteAction_HashPolicy_FilterStateMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteAction_HashPolicy_FilterStateMultiError) AllErrors() []error { return m }\n\n// RouteAction_HashPolicy_FilterStateValidationError is the validation error\n// returned by RouteAction_HashPolicy_FilterState.Validate if the designated\n// constraints aren't met.\ntype RouteAction_HashPolicy_FilterStateValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteAction_HashPolicy_FilterStateValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteAction_HashPolicy_FilterStateValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteAction_HashPolicy_FilterStateValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteAction_HashPolicy_FilterStateValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteAction_HashPolicy_FilterStateValidationError) ErrorName() string {\n\treturn \"RouteAction_HashPolicy_FilterStateValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteAction_HashPolicy_FilterStateValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteAction_HashPolicy_FilterState.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteAction_HashPolicy_FilterStateValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteAction_HashPolicy_FilterStateValidationError{}\n\n// Validate checks the field values on RouteAction_UpgradeConfig_ConnectConfig\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the first error encountered is returned, or nil if\n// there are no violations.\nfunc (m *RouteAction_UpgradeConfig_ConnectConfig) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// RouteAction_UpgradeConfig_ConnectConfig with the rules defined in the proto\n// definition for this message. If any rules are violated, the result is a\n// list of violation errors wrapped in\n// RouteAction_UpgradeConfig_ConnectConfigMultiError, or nil if none found.\nfunc (m *RouteAction_UpgradeConfig_ConnectConfig) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RouteAction_UpgradeConfig_ConnectConfig) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetProxyProtocolConfig()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_UpgradeConfig_ConnectConfigValidationError{\n\t\t\t\t\tfield:  \"ProxyProtocolConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RouteAction_UpgradeConfig_ConnectConfigValidationError{\n\t\t\t\t\tfield:  \"ProxyProtocolConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetProxyProtocolConfig()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RouteAction_UpgradeConfig_ConnectConfigValidationError{\n\t\t\t\tfield:  \"ProxyProtocolConfig\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for AllowPost\n\n\tif len(errors) > 0 {\n\t\treturn RouteAction_UpgradeConfig_ConnectConfigMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RouteAction_UpgradeConfig_ConnectConfigMultiError is an error wrapping\n// multiple validation errors returned by\n// RouteAction_UpgradeConfig_ConnectConfig.ValidateAll() if the designated\n// constraints aren't met.\ntype RouteAction_UpgradeConfig_ConnectConfigMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RouteAction_UpgradeConfig_ConnectConfigMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RouteAction_UpgradeConfig_ConnectConfigMultiError) AllErrors() []error { return m }\n\n// RouteAction_UpgradeConfig_ConnectConfigValidationError is the validation\n// error returned by RouteAction_UpgradeConfig_ConnectConfig.Validate if the\n// designated constraints aren't met.\ntype RouteAction_UpgradeConfig_ConnectConfigValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RouteAction_UpgradeConfig_ConnectConfigValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RouteAction_UpgradeConfig_ConnectConfigValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RouteAction_UpgradeConfig_ConnectConfigValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RouteAction_UpgradeConfig_ConnectConfigValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RouteAction_UpgradeConfig_ConnectConfigValidationError) ErrorName() string {\n\treturn \"RouteAction_UpgradeConfig_ConnectConfigValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RouteAction_UpgradeConfig_ConnectConfigValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRouteAction_UpgradeConfig_ConnectConfig.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RouteAction_UpgradeConfig_ConnectConfigValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RouteAction_UpgradeConfig_ConnectConfigValidationError{}\n\n// Validate checks the field values on RetryPolicy_RetryPriority with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RetryPolicy_RetryPriority) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RetryPolicy_RetryPriority with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RetryPolicy_RetryPriorityMultiError, or nil if none found.\nfunc (m *RetryPolicy_RetryPriority) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RetryPolicy_RetryPriority) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := RetryPolicy_RetryPriorityValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tswitch v := m.ConfigType.(type) {\n\tcase *RetryPolicy_RetryPriority_TypedConfig:\n\t\tif v == nil {\n\t\t\terr := RetryPolicy_RetryPriorityValidationError{\n\t\t\t\tfield:  \"ConfigType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetTypedConfig()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicy_RetryPriorityValidationError{\n\t\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicy_RetryPriorityValidationError{\n\t\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetTypedConfig()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RetryPolicy_RetryPriorityValidationError{\n\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RetryPolicy_RetryPriorityMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RetryPolicy_RetryPriorityMultiError is an error wrapping multiple validation\n// errors returned by RetryPolicy_RetryPriority.ValidateAll() if the\n// designated constraints aren't met.\ntype RetryPolicy_RetryPriorityMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RetryPolicy_RetryPriorityMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RetryPolicy_RetryPriorityMultiError) AllErrors() []error { return m }\n\n// RetryPolicy_RetryPriorityValidationError is the validation error returned by\n// RetryPolicy_RetryPriority.Validate if the designated constraints aren't met.\ntype RetryPolicy_RetryPriorityValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RetryPolicy_RetryPriorityValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RetryPolicy_RetryPriorityValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RetryPolicy_RetryPriorityValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RetryPolicy_RetryPriorityValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RetryPolicy_RetryPriorityValidationError) ErrorName() string {\n\treturn \"RetryPolicy_RetryPriorityValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RetryPolicy_RetryPriorityValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRetryPolicy_RetryPriority.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RetryPolicy_RetryPriorityValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RetryPolicy_RetryPriorityValidationError{}\n\n// Validate checks the field values on RetryPolicy_RetryHostPredicate with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RetryPolicy_RetryHostPredicate) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RetryPolicy_RetryHostPredicate with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// RetryPolicy_RetryHostPredicateMultiError, or nil if none found.\nfunc (m *RetryPolicy_RetryHostPredicate) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RetryPolicy_RetryHostPredicate) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := RetryPolicy_RetryHostPredicateValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tswitch v := m.ConfigType.(type) {\n\tcase *RetryPolicy_RetryHostPredicate_TypedConfig:\n\t\tif v == nil {\n\t\t\terr := RetryPolicy_RetryHostPredicateValidationError{\n\t\t\t\tfield:  \"ConfigType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetTypedConfig()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicy_RetryHostPredicateValidationError{\n\t\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicy_RetryHostPredicateValidationError{\n\t\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetTypedConfig()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RetryPolicy_RetryHostPredicateValidationError{\n\t\t\t\t\tfield:  \"TypedConfig\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RetryPolicy_RetryHostPredicateMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RetryPolicy_RetryHostPredicateMultiError is an error wrapping multiple\n// validation errors returned by RetryPolicy_RetryHostPredicate.ValidateAll()\n// if the designated constraints aren't met.\ntype RetryPolicy_RetryHostPredicateMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RetryPolicy_RetryHostPredicateMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RetryPolicy_RetryHostPredicateMultiError) AllErrors() []error { return m }\n\n// RetryPolicy_RetryHostPredicateValidationError is the validation error\n// returned by RetryPolicy_RetryHostPredicate.Validate if the designated\n// constraints aren't met.\ntype RetryPolicy_RetryHostPredicateValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RetryPolicy_RetryHostPredicateValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RetryPolicy_RetryHostPredicateValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RetryPolicy_RetryHostPredicateValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RetryPolicy_RetryHostPredicateValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RetryPolicy_RetryHostPredicateValidationError) ErrorName() string {\n\treturn \"RetryPolicy_RetryHostPredicateValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RetryPolicy_RetryHostPredicateValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRetryPolicy_RetryHostPredicate.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RetryPolicy_RetryHostPredicateValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RetryPolicy_RetryHostPredicateValidationError{}\n\n// Validate checks the field values on RetryPolicy_RetryBackOff with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RetryPolicy_RetryBackOff) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RetryPolicy_RetryBackOff with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RetryPolicy_RetryBackOffMultiError, or nil if none found.\nfunc (m *RetryPolicy_RetryBackOff) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RetryPolicy_RetryBackOff) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetBaseInterval() == nil {\n\t\terr := RetryPolicy_RetryBackOffValidationError{\n\t\t\tfield:  \"BaseInterval\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif d := m.GetBaseInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = RetryPolicy_RetryBackOffValidationError{\n\t\t\t\tfield:  \"BaseInterval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgt := time.Duration(0*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur <= gt {\n\t\t\t\terr := RetryPolicy_RetryBackOffValidationError{\n\t\t\t\t\tfield:  \"BaseInterval\",\n\t\t\t\t\treason: \"value must be greater than 0s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif d := m.GetMaxInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = RetryPolicy_RetryBackOffValidationError{\n\t\t\t\tfield:  \"MaxInterval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgt := time.Duration(0*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur <= gt {\n\t\t\t\terr := RetryPolicy_RetryBackOffValidationError{\n\t\t\t\t\tfield:  \"MaxInterval\",\n\t\t\t\t\treason: \"value must be greater than 0s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RetryPolicy_RetryBackOffMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RetryPolicy_RetryBackOffMultiError is an error wrapping multiple validation\n// errors returned by RetryPolicy_RetryBackOff.ValidateAll() if the designated\n// constraints aren't met.\ntype RetryPolicy_RetryBackOffMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RetryPolicy_RetryBackOffMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RetryPolicy_RetryBackOffMultiError) AllErrors() []error { return m }\n\n// RetryPolicy_RetryBackOffValidationError is the validation error returned by\n// RetryPolicy_RetryBackOff.Validate if the designated constraints aren't met.\ntype RetryPolicy_RetryBackOffValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RetryPolicy_RetryBackOffValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RetryPolicy_RetryBackOffValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RetryPolicy_RetryBackOffValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RetryPolicy_RetryBackOffValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RetryPolicy_RetryBackOffValidationError) ErrorName() string {\n\treturn \"RetryPolicy_RetryBackOffValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RetryPolicy_RetryBackOffValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRetryPolicy_RetryBackOff.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RetryPolicy_RetryBackOffValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RetryPolicy_RetryBackOffValidationError{}\n\n// Validate checks the field values on RetryPolicy_ResetHeader with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RetryPolicy_ResetHeader) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RetryPolicy_ResetHeader with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RetryPolicy_ResetHeaderMultiError, or nil if none found.\nfunc (m *RetryPolicy_ResetHeader) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RetryPolicy_ResetHeader) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := RetryPolicy_ResetHeaderValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif !_RetryPolicy_ResetHeader_Name_Pattern.MatchString(m.GetName()) {\n\t\terr := RetryPolicy_ResetHeaderValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif _, ok := RetryPolicy_ResetHeaderFormat_name[int32(m.GetFormat())]; !ok {\n\t\terr := RetryPolicy_ResetHeaderValidationError{\n\t\t\tfield:  \"Format\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RetryPolicy_ResetHeaderMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RetryPolicy_ResetHeaderMultiError is an error wrapping multiple validation\n// errors returned by RetryPolicy_ResetHeader.ValidateAll() if the designated\n// constraints aren't met.\ntype RetryPolicy_ResetHeaderMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RetryPolicy_ResetHeaderMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RetryPolicy_ResetHeaderMultiError) AllErrors() []error { return m }\n\n// RetryPolicy_ResetHeaderValidationError is the validation error returned by\n// RetryPolicy_ResetHeader.Validate if the designated constraints aren't met.\ntype RetryPolicy_ResetHeaderValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RetryPolicy_ResetHeaderValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RetryPolicy_ResetHeaderValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RetryPolicy_ResetHeaderValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RetryPolicy_ResetHeaderValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RetryPolicy_ResetHeaderValidationError) ErrorName() string {\n\treturn \"RetryPolicy_ResetHeaderValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RetryPolicy_ResetHeaderValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRetryPolicy_ResetHeader.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RetryPolicy_ResetHeaderValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RetryPolicy_ResetHeaderValidationError{}\n\nvar _RetryPolicy_ResetHeader_Name_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on RetryPolicy_RateLimitedRetryBackOff with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the first error encountered is returned, or nil if there are\n// no violations.\nfunc (m *RetryPolicy_RateLimitedRetryBackOff) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RetryPolicy_RateLimitedRetryBackOff\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// RetryPolicy_RateLimitedRetryBackOffMultiError, or nil if none found.\nfunc (m *RetryPolicy_RateLimitedRetryBackOff) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RetryPolicy_RateLimitedRetryBackOff) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetResetHeaders()) < 1 {\n\t\terr := RetryPolicy_RateLimitedRetryBackOffValidationError{\n\t\t\tfield:  \"ResetHeaders\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetResetHeaders() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicy_RateLimitedRetryBackOffValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResetHeaders[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RetryPolicy_RateLimitedRetryBackOffValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResetHeaders[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RetryPolicy_RateLimitedRetryBackOffValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ResetHeaders[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif d := m.GetMaxInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = RetryPolicy_RateLimitedRetryBackOffValidationError{\n\t\t\t\tfield:  \"MaxInterval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgt := time.Duration(0*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur <= gt {\n\t\t\t\terr := RetryPolicy_RateLimitedRetryBackOffValidationError{\n\t\t\t\t\tfield:  \"MaxInterval\",\n\t\t\t\t\treason: \"value must be greater than 0s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RetryPolicy_RateLimitedRetryBackOffMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RetryPolicy_RateLimitedRetryBackOffMultiError is an error wrapping multiple\n// validation errors returned by\n// RetryPolicy_RateLimitedRetryBackOff.ValidateAll() if the designated\n// constraints aren't met.\ntype RetryPolicy_RateLimitedRetryBackOffMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RetryPolicy_RateLimitedRetryBackOffMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RetryPolicy_RateLimitedRetryBackOffMultiError) AllErrors() []error { return m }\n\n// RetryPolicy_RateLimitedRetryBackOffValidationError is the validation error\n// returned by RetryPolicy_RateLimitedRetryBackOff.Validate if the designated\n// constraints aren't met.\ntype RetryPolicy_RateLimitedRetryBackOffValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RetryPolicy_RateLimitedRetryBackOffValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RetryPolicy_RateLimitedRetryBackOffValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RetryPolicy_RateLimitedRetryBackOffValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RetryPolicy_RateLimitedRetryBackOffValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RetryPolicy_RateLimitedRetryBackOffValidationError) ErrorName() string {\n\treturn \"RetryPolicy_RateLimitedRetryBackOffValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RetryPolicy_RateLimitedRetryBackOffValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRetryPolicy_RateLimitedRetryBackOff.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RetryPolicy_RateLimitedRetryBackOffValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RetryPolicy_RateLimitedRetryBackOffValidationError{}\n\n// Validate checks the field values on RateLimit_Action with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *RateLimit_Action) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit_Action with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RateLimit_ActionMultiError, or nil if none found.\nfunc (m *RateLimit_Action) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_Action) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofActionSpecifierPresent := false\n\tswitch v := m.ActionSpecifier.(type) {\n\tcase *RateLimit_Action_SourceCluster_:\n\t\tif v == nil {\n\t\t\terr := RateLimit_ActionValidationError{\n\t\t\t\tfield:  \"ActionSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetSourceCluster()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"SourceCluster\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"SourceCluster\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetSourceCluster()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_ActionValidationError{\n\t\t\t\t\tfield:  \"SourceCluster\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RateLimit_Action_DestinationCluster_:\n\t\tif v == nil {\n\t\t\terr := RateLimit_ActionValidationError{\n\t\t\t\tfield:  \"ActionSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetDestinationCluster()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"DestinationCluster\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"DestinationCluster\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetDestinationCluster()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_ActionValidationError{\n\t\t\t\t\tfield:  \"DestinationCluster\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RateLimit_Action_RequestHeaders_:\n\t\tif v == nil {\n\t\t\terr := RateLimit_ActionValidationError{\n\t\t\t\tfield:  \"ActionSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetRequestHeaders()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"RequestHeaders\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"RequestHeaders\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetRequestHeaders()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_ActionValidationError{\n\t\t\t\t\tfield:  \"RequestHeaders\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RateLimit_Action_QueryParameters_:\n\t\tif v == nil {\n\t\t\terr := RateLimit_ActionValidationError{\n\t\t\t\tfield:  \"ActionSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetQueryParameters()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"QueryParameters\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"QueryParameters\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetQueryParameters()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_ActionValidationError{\n\t\t\t\t\tfield:  \"QueryParameters\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RateLimit_Action_RemoteAddress_:\n\t\tif v == nil {\n\t\t\terr := RateLimit_ActionValidationError{\n\t\t\t\tfield:  \"ActionSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetRemoteAddress()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"RemoteAddress\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"RemoteAddress\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetRemoteAddress()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_ActionValidationError{\n\t\t\t\t\tfield:  \"RemoteAddress\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RateLimit_Action_GenericKey_:\n\t\tif v == nil {\n\t\t\terr := RateLimit_ActionValidationError{\n\t\t\t\tfield:  \"ActionSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetGenericKey()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"GenericKey\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"GenericKey\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetGenericKey()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_ActionValidationError{\n\t\t\t\t\tfield:  \"GenericKey\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RateLimit_Action_HeaderValueMatch_:\n\t\tif v == nil {\n\t\t\terr := RateLimit_ActionValidationError{\n\t\t\t\tfield:  \"ActionSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetHeaderValueMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"HeaderValueMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"HeaderValueMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetHeaderValueMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_ActionValidationError{\n\t\t\t\t\tfield:  \"HeaderValueMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RateLimit_Action_DynamicMetadata:\n\t\tif v == nil {\n\t\t\terr := RateLimit_ActionValidationError{\n\t\t\t\tfield:  \"ActionSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetDynamicMetadata()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"DynamicMetadata\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"DynamicMetadata\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetDynamicMetadata()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_ActionValidationError{\n\t\t\t\t\tfield:  \"DynamicMetadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RateLimit_Action_Metadata:\n\t\tif v == nil {\n\t\t\terr := RateLimit_ActionValidationError{\n\t\t\t\tfield:  \"ActionSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetMetadata()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetMetadata()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_ActionValidationError{\n\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RateLimit_Action_Extension:\n\t\tif v == nil {\n\t\t\terr := RateLimit_ActionValidationError{\n\t\t\t\tfield:  \"ActionSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetExtension()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"Extension\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"Extension\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetExtension()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_ActionValidationError{\n\t\t\t\t\tfield:  \"Extension\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RateLimit_Action_MaskedRemoteAddress_:\n\t\tif v == nil {\n\t\t\terr := RateLimit_ActionValidationError{\n\t\t\t\tfield:  \"ActionSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetMaskedRemoteAddress()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"MaskedRemoteAddress\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"MaskedRemoteAddress\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetMaskedRemoteAddress()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_ActionValidationError{\n\t\t\t\t\tfield:  \"MaskedRemoteAddress\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RateLimit_Action_QueryParameterValueMatch_:\n\t\tif v == nil {\n\t\t\terr := RateLimit_ActionValidationError{\n\t\t\t\tfield:  \"ActionSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofActionSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetQueryParameterValueMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"QueryParameterValueMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_ActionValidationError{\n\t\t\t\t\t\tfield:  \"QueryParameterValueMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetQueryParameterValueMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_ActionValidationError{\n\t\t\t\t\tfield:  \"QueryParameterValueMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofActionSpecifierPresent {\n\t\terr := RateLimit_ActionValidationError{\n\t\t\tfield:  \"ActionSpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_ActionMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_ActionMultiError is an error wrapping multiple validation errors\n// returned by RateLimit_Action.ValidateAll() if the designated constraints\n// aren't met.\ntype RateLimit_ActionMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_ActionMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_ActionMultiError) AllErrors() []error { return m }\n\n// RateLimit_ActionValidationError is the validation error returned by\n// RateLimit_Action.Validate if the designated constraints aren't met.\ntype RateLimit_ActionValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_ActionValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_ActionValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_ActionValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_ActionValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_ActionValidationError) ErrorName() string { return \"RateLimit_ActionValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_ActionValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_Action.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_ActionValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_ActionValidationError{}\n\n// Validate checks the field values on RateLimit_Override with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RateLimit_Override) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit_Override with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RateLimit_OverrideMultiError, or nil if none found.\nfunc (m *RateLimit_Override) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_Override) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofOverrideSpecifierPresent := false\n\tswitch v := m.OverrideSpecifier.(type) {\n\tcase *RateLimit_Override_DynamicMetadata_:\n\t\tif v == nil {\n\t\t\terr := RateLimit_OverrideValidationError{\n\t\t\t\tfield:  \"OverrideSpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofOverrideSpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetDynamicMetadata()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_OverrideValidationError{\n\t\t\t\t\t\tfield:  \"DynamicMetadata\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_OverrideValidationError{\n\t\t\t\t\t\tfield:  \"DynamicMetadata\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetDynamicMetadata()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_OverrideValidationError{\n\t\t\t\t\tfield:  \"DynamicMetadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofOverrideSpecifierPresent {\n\t\terr := RateLimit_OverrideValidationError{\n\t\t\tfield:  \"OverrideSpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_OverrideMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_OverrideMultiError is an error wrapping multiple validation errors\n// returned by RateLimit_Override.ValidateAll() if the designated constraints\n// aren't met.\ntype RateLimit_OverrideMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_OverrideMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_OverrideMultiError) AllErrors() []error { return m }\n\n// RateLimit_OverrideValidationError is the validation error returned by\n// RateLimit_Override.Validate if the designated constraints aren't met.\ntype RateLimit_OverrideValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_OverrideValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_OverrideValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_OverrideValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_OverrideValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_OverrideValidationError) ErrorName() string {\n\treturn \"RateLimit_OverrideValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_OverrideValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_Override.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_OverrideValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_OverrideValidationError{}\n\n// Validate checks the field values on RateLimit_HitsAddend with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RateLimit_HitsAddend) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit_HitsAddend with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RateLimit_HitsAddendMultiError, or nil if none found.\nfunc (m *RateLimit_HitsAddend) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_HitsAddend) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif wrapper := m.GetNumber(); wrapper != nil {\n\n\t\tif wrapper.GetValue() > 1000000000 {\n\t\t\terr := RateLimit_HitsAddendValidationError{\n\t\t\t\tfield:  \"Number\",\n\t\t\t\treason: \"value must be less than or equal to 1000000000\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif m.GetFormat() != \"\" {\n\n\t\tif !strings.HasPrefix(m.GetFormat(), \"%\") {\n\t\t\terr := RateLimit_HitsAddendValidationError{\n\t\t\t\tfield:  \"Format\",\n\t\t\t\treason: \"value does not have prefix \\\"%\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif !strings.HasSuffix(m.GetFormat(), \"%\") {\n\t\t\terr := RateLimit_HitsAddendValidationError{\n\t\t\t\tfield:  \"Format\",\n\t\t\t\treason: \"value does not have suffix \\\"%\\\"\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_HitsAddendMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_HitsAddendMultiError is an error wrapping multiple validation\n// errors returned by RateLimit_HitsAddend.ValidateAll() if the designated\n// constraints aren't met.\ntype RateLimit_HitsAddendMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_HitsAddendMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_HitsAddendMultiError) AllErrors() []error { return m }\n\n// RateLimit_HitsAddendValidationError is the validation error returned by\n// RateLimit_HitsAddend.Validate if the designated constraints aren't met.\ntype RateLimit_HitsAddendValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_HitsAddendValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_HitsAddendValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_HitsAddendValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_HitsAddendValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_HitsAddendValidationError) ErrorName() string {\n\treturn \"RateLimit_HitsAddendValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_HitsAddendValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_HitsAddend.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_HitsAddendValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_HitsAddendValidationError{}\n\n// Validate checks the field values on RateLimit_Action_SourceCluster with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RateLimit_Action_SourceCluster) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit_Action_SourceCluster with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// RateLimit_Action_SourceClusterMultiError, or nil if none found.\nfunc (m *RateLimit_Action_SourceCluster) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_Action_SourceCluster) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_Action_SourceClusterMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_Action_SourceClusterMultiError is an error wrapping multiple\n// validation errors returned by RateLimit_Action_SourceCluster.ValidateAll()\n// if the designated constraints aren't met.\ntype RateLimit_Action_SourceClusterMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_Action_SourceClusterMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_Action_SourceClusterMultiError) AllErrors() []error { return m }\n\n// RateLimit_Action_SourceClusterValidationError is the validation error\n// returned by RateLimit_Action_SourceCluster.Validate if the designated\n// constraints aren't met.\ntype RateLimit_Action_SourceClusterValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_Action_SourceClusterValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_Action_SourceClusterValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_Action_SourceClusterValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_Action_SourceClusterValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_Action_SourceClusterValidationError) ErrorName() string {\n\treturn \"RateLimit_Action_SourceClusterValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_Action_SourceClusterValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_Action_SourceCluster.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_Action_SourceClusterValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_Action_SourceClusterValidationError{}\n\n// Validate checks the field values on RateLimit_Action_DestinationCluster with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the first error encountered is returned, or nil if there are\n// no violations.\nfunc (m *RateLimit_Action_DestinationCluster) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit_Action_DestinationCluster\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// RateLimit_Action_DestinationClusterMultiError, or nil if none found.\nfunc (m *RateLimit_Action_DestinationCluster) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_Action_DestinationCluster) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_Action_DestinationClusterMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_Action_DestinationClusterMultiError is an error wrapping multiple\n// validation errors returned by\n// RateLimit_Action_DestinationCluster.ValidateAll() if the designated\n// constraints aren't met.\ntype RateLimit_Action_DestinationClusterMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_Action_DestinationClusterMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_Action_DestinationClusterMultiError) AllErrors() []error { return m }\n\n// RateLimit_Action_DestinationClusterValidationError is the validation error\n// returned by RateLimit_Action_DestinationCluster.Validate if the designated\n// constraints aren't met.\ntype RateLimit_Action_DestinationClusterValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_Action_DestinationClusterValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_Action_DestinationClusterValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_Action_DestinationClusterValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_Action_DestinationClusterValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_Action_DestinationClusterValidationError) ErrorName() string {\n\treturn \"RateLimit_Action_DestinationClusterValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_Action_DestinationClusterValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_Action_DestinationCluster.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_Action_DestinationClusterValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_Action_DestinationClusterValidationError{}\n\n// Validate checks the field values on RateLimit_Action_RequestHeaders with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RateLimit_Action_RequestHeaders) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit_Action_RequestHeaders with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// RateLimit_Action_RequestHeadersMultiError, or nil if none found.\nfunc (m *RateLimit_Action_RequestHeaders) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_Action_RequestHeaders) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetHeaderName()) < 1 {\n\t\terr := RateLimit_Action_RequestHeadersValidationError{\n\t\t\tfield:  \"HeaderName\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif !_RateLimit_Action_RequestHeaders_HeaderName_Pattern.MatchString(m.GetHeaderName()) {\n\t\terr := RateLimit_Action_RequestHeadersValidationError{\n\t\t\tfield:  \"HeaderName\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif utf8.RuneCountInString(m.GetDescriptorKey()) < 1 {\n\t\terr := RateLimit_Action_RequestHeadersValidationError{\n\t\t\tfield:  \"DescriptorKey\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for SkipIfAbsent\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_Action_RequestHeadersMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_Action_RequestHeadersMultiError is an error wrapping multiple\n// validation errors returned by RateLimit_Action_RequestHeaders.ValidateAll()\n// if the designated constraints aren't met.\ntype RateLimit_Action_RequestHeadersMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_Action_RequestHeadersMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_Action_RequestHeadersMultiError) AllErrors() []error { return m }\n\n// RateLimit_Action_RequestHeadersValidationError is the validation error\n// returned by RateLimit_Action_RequestHeaders.Validate if the designated\n// constraints aren't met.\ntype RateLimit_Action_RequestHeadersValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_Action_RequestHeadersValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_Action_RequestHeadersValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_Action_RequestHeadersValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_Action_RequestHeadersValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_Action_RequestHeadersValidationError) ErrorName() string {\n\treturn \"RateLimit_Action_RequestHeadersValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_Action_RequestHeadersValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_Action_RequestHeaders.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_Action_RequestHeadersValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_Action_RequestHeadersValidationError{}\n\nvar _RateLimit_Action_RequestHeaders_HeaderName_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on RateLimit_Action_QueryParameters with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the first error encountered is returned, or nil if there are\n// no violations.\nfunc (m *RateLimit_Action_QueryParameters) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit_Action_QueryParameters with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// RateLimit_Action_QueryParametersMultiError, or nil if none found.\nfunc (m *RateLimit_Action_QueryParameters) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_Action_QueryParameters) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetQueryParameterName()) < 1 {\n\t\terr := RateLimit_Action_QueryParametersValidationError{\n\t\t\tfield:  \"QueryParameterName\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif utf8.RuneCountInString(m.GetDescriptorKey()) < 1 {\n\t\terr := RateLimit_Action_QueryParametersValidationError{\n\t\t\tfield:  \"DescriptorKey\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for SkipIfAbsent\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_Action_QueryParametersMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_Action_QueryParametersMultiError is an error wrapping multiple\n// validation errors returned by\n// RateLimit_Action_QueryParameters.ValidateAll() if the designated\n// constraints aren't met.\ntype RateLimit_Action_QueryParametersMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_Action_QueryParametersMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_Action_QueryParametersMultiError) AllErrors() []error { return m }\n\n// RateLimit_Action_QueryParametersValidationError is the validation error\n// returned by RateLimit_Action_QueryParameters.Validate if the designated\n// constraints aren't met.\ntype RateLimit_Action_QueryParametersValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_Action_QueryParametersValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_Action_QueryParametersValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_Action_QueryParametersValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_Action_QueryParametersValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_Action_QueryParametersValidationError) ErrorName() string {\n\treturn \"RateLimit_Action_QueryParametersValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_Action_QueryParametersValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_Action_QueryParameters.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_Action_QueryParametersValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_Action_QueryParametersValidationError{}\n\n// Validate checks the field values on RateLimit_Action_RemoteAddress with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RateLimit_Action_RemoteAddress) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit_Action_RemoteAddress with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// RateLimit_Action_RemoteAddressMultiError, or nil if none found.\nfunc (m *RateLimit_Action_RemoteAddress) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_Action_RemoteAddress) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_Action_RemoteAddressMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_Action_RemoteAddressMultiError is an error wrapping multiple\n// validation errors returned by RateLimit_Action_RemoteAddress.ValidateAll()\n// if the designated constraints aren't met.\ntype RateLimit_Action_RemoteAddressMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_Action_RemoteAddressMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_Action_RemoteAddressMultiError) AllErrors() []error { return m }\n\n// RateLimit_Action_RemoteAddressValidationError is the validation error\n// returned by RateLimit_Action_RemoteAddress.Validate if the designated\n// constraints aren't met.\ntype RateLimit_Action_RemoteAddressValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_Action_RemoteAddressValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_Action_RemoteAddressValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_Action_RemoteAddressValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_Action_RemoteAddressValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_Action_RemoteAddressValidationError) ErrorName() string {\n\treturn \"RateLimit_Action_RemoteAddressValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_Action_RemoteAddressValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_Action_RemoteAddress.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_Action_RemoteAddressValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_Action_RemoteAddressValidationError{}\n\n// Validate checks the field values on RateLimit_Action_MaskedRemoteAddress\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the first error encountered is returned, or nil if\n// there are no violations.\nfunc (m *RateLimit_Action_MaskedRemoteAddress) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit_Action_MaskedRemoteAddress\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// RateLimit_Action_MaskedRemoteAddressMultiError, or nil if none found.\nfunc (m *RateLimit_Action_MaskedRemoteAddress) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_Action_MaskedRemoteAddress) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif wrapper := m.GetV4PrefixMaskLen(); wrapper != nil {\n\n\t\tif wrapper.GetValue() > 32 {\n\t\t\terr := RateLimit_Action_MaskedRemoteAddressValidationError{\n\t\t\t\tfield:  \"V4PrefixMaskLen\",\n\t\t\t\treason: \"value must be less than or equal to 32\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif wrapper := m.GetV6PrefixMaskLen(); wrapper != nil {\n\n\t\tif wrapper.GetValue() > 128 {\n\t\t\terr := RateLimit_Action_MaskedRemoteAddressValidationError{\n\t\t\t\tfield:  \"V6PrefixMaskLen\",\n\t\t\t\treason: \"value must be less than or equal to 128\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_Action_MaskedRemoteAddressMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_Action_MaskedRemoteAddressMultiError is an error wrapping multiple\n// validation errors returned by\n// RateLimit_Action_MaskedRemoteAddress.ValidateAll() if the designated\n// constraints aren't met.\ntype RateLimit_Action_MaskedRemoteAddressMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_Action_MaskedRemoteAddressMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_Action_MaskedRemoteAddressMultiError) AllErrors() []error { return m }\n\n// RateLimit_Action_MaskedRemoteAddressValidationError is the validation error\n// returned by RateLimit_Action_MaskedRemoteAddress.Validate if the designated\n// constraints aren't met.\ntype RateLimit_Action_MaskedRemoteAddressValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_Action_MaskedRemoteAddressValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_Action_MaskedRemoteAddressValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_Action_MaskedRemoteAddressValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_Action_MaskedRemoteAddressValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_Action_MaskedRemoteAddressValidationError) ErrorName() string {\n\treturn \"RateLimit_Action_MaskedRemoteAddressValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_Action_MaskedRemoteAddressValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_Action_MaskedRemoteAddress.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_Action_MaskedRemoteAddressValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_Action_MaskedRemoteAddressValidationError{}\n\n// Validate checks the field values on RateLimit_Action_GenericKey with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RateLimit_Action_GenericKey) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit_Action_GenericKey with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RateLimit_Action_GenericKeyMultiError, or nil if none found.\nfunc (m *RateLimit_Action_GenericKey) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_Action_GenericKey) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetDescriptorValue()) < 1 {\n\t\terr := RateLimit_Action_GenericKeyValidationError{\n\t\t\tfield:  \"DescriptorValue\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for DefaultValue\n\n\t// no validation rules for DescriptorKey\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_Action_GenericKeyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_Action_GenericKeyMultiError is an error wrapping multiple\n// validation errors returned by RateLimit_Action_GenericKey.ValidateAll() if\n// the designated constraints aren't met.\ntype RateLimit_Action_GenericKeyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_Action_GenericKeyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_Action_GenericKeyMultiError) AllErrors() []error { return m }\n\n// RateLimit_Action_GenericKeyValidationError is the validation error returned\n// by RateLimit_Action_GenericKey.Validate if the designated constraints\n// aren't met.\ntype RateLimit_Action_GenericKeyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_Action_GenericKeyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_Action_GenericKeyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_Action_GenericKeyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_Action_GenericKeyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_Action_GenericKeyValidationError) ErrorName() string {\n\treturn \"RateLimit_Action_GenericKeyValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_Action_GenericKeyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_Action_GenericKey.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_Action_GenericKeyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_Action_GenericKeyValidationError{}\n\n// Validate checks the field values on RateLimit_Action_HeaderValueMatch with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the first error encountered is returned, or nil if there are\n// no violations.\nfunc (m *RateLimit_Action_HeaderValueMatch) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit_Action_HeaderValueMatch\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// RateLimit_Action_HeaderValueMatchMultiError, or nil if none found.\nfunc (m *RateLimit_Action_HeaderValueMatch) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_Action_HeaderValueMatch) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetDescriptorValue()) < 1 {\n\t\terr := RateLimit_Action_HeaderValueMatchValidationError{\n\t\t\tfield:  \"DescriptorValue\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for DefaultValue\n\n\t// no validation rules for DescriptorKey\n\n\tif all {\n\t\tswitch v := interface{}(m.GetExpectMatch()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RateLimit_Action_HeaderValueMatchValidationError{\n\t\t\t\t\tfield:  \"ExpectMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RateLimit_Action_HeaderValueMatchValidationError{\n\t\t\t\t\tfield:  \"ExpectMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetExpectMatch()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RateLimit_Action_HeaderValueMatchValidationError{\n\t\t\t\tfield:  \"ExpectMatch\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(m.GetHeaders()) < 1 {\n\t\terr := RateLimit_Action_HeaderValueMatchValidationError{\n\t\t\tfield:  \"Headers\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetHeaders() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_Action_HeaderValueMatchValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_Action_HeaderValueMatchValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_Action_HeaderValueMatchValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Headers[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_Action_HeaderValueMatchMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_Action_HeaderValueMatchMultiError is an error wrapping multiple\n// validation errors returned by\n// RateLimit_Action_HeaderValueMatch.ValidateAll() if the designated\n// constraints aren't met.\ntype RateLimit_Action_HeaderValueMatchMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_Action_HeaderValueMatchMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_Action_HeaderValueMatchMultiError) AllErrors() []error { return m }\n\n// RateLimit_Action_HeaderValueMatchValidationError is the validation error\n// returned by RateLimit_Action_HeaderValueMatch.Validate if the designated\n// constraints aren't met.\ntype RateLimit_Action_HeaderValueMatchValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_Action_HeaderValueMatchValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_Action_HeaderValueMatchValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_Action_HeaderValueMatchValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_Action_HeaderValueMatchValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_Action_HeaderValueMatchValidationError) ErrorName() string {\n\treturn \"RateLimit_Action_HeaderValueMatchValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_Action_HeaderValueMatchValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_Action_HeaderValueMatch.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_Action_HeaderValueMatchValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_Action_HeaderValueMatchValidationError{}\n\n// Validate checks the field values on RateLimit_Action_DynamicMetaData with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the first error encountered is returned, or nil if there are\n// no violations.\nfunc (m *RateLimit_Action_DynamicMetaData) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit_Action_DynamicMetaData with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// RateLimit_Action_DynamicMetaDataMultiError, or nil if none found.\nfunc (m *RateLimit_Action_DynamicMetaData) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_Action_DynamicMetaData) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetDescriptorKey()) < 1 {\n\t\terr := RateLimit_Action_DynamicMetaDataValidationError{\n\t\t\tfield:  \"DescriptorKey\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif m.GetMetadataKey() == nil {\n\t\terr := RateLimit_Action_DynamicMetaDataValidationError{\n\t\t\tfield:  \"MetadataKey\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMetadataKey()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RateLimit_Action_DynamicMetaDataValidationError{\n\t\t\t\t\tfield:  \"MetadataKey\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RateLimit_Action_DynamicMetaDataValidationError{\n\t\t\t\t\tfield:  \"MetadataKey\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMetadataKey()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RateLimit_Action_DynamicMetaDataValidationError{\n\t\t\t\tfield:  \"MetadataKey\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for DefaultValue\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_Action_DynamicMetaDataMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_Action_DynamicMetaDataMultiError is an error wrapping multiple\n// validation errors returned by\n// RateLimit_Action_DynamicMetaData.ValidateAll() if the designated\n// constraints aren't met.\ntype RateLimit_Action_DynamicMetaDataMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_Action_DynamicMetaDataMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_Action_DynamicMetaDataMultiError) AllErrors() []error { return m }\n\n// RateLimit_Action_DynamicMetaDataValidationError is the validation error\n// returned by RateLimit_Action_DynamicMetaData.Validate if the designated\n// constraints aren't met.\ntype RateLimit_Action_DynamicMetaDataValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_Action_DynamicMetaDataValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_Action_DynamicMetaDataValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_Action_DynamicMetaDataValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_Action_DynamicMetaDataValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_Action_DynamicMetaDataValidationError) ErrorName() string {\n\treturn \"RateLimit_Action_DynamicMetaDataValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_Action_DynamicMetaDataValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_Action_DynamicMetaData.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_Action_DynamicMetaDataValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_Action_DynamicMetaDataValidationError{}\n\n// Validate checks the field values on RateLimit_Action_MetaData with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RateLimit_Action_MetaData) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit_Action_MetaData with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RateLimit_Action_MetaDataMultiError, or nil if none found.\nfunc (m *RateLimit_Action_MetaData) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_Action_MetaData) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetDescriptorKey()) < 1 {\n\t\terr := RateLimit_Action_MetaDataValidationError{\n\t\t\tfield:  \"DescriptorKey\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif m.GetMetadataKey() == nil {\n\t\terr := RateLimit_Action_MetaDataValidationError{\n\t\t\tfield:  \"MetadataKey\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMetadataKey()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RateLimit_Action_MetaDataValidationError{\n\t\t\t\t\tfield:  \"MetadataKey\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RateLimit_Action_MetaDataValidationError{\n\t\t\t\t\tfield:  \"MetadataKey\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMetadataKey()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RateLimit_Action_MetaDataValidationError{\n\t\t\t\tfield:  \"MetadataKey\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for DefaultValue\n\n\tif _, ok := RateLimit_Action_MetaData_Source_name[int32(m.GetSource())]; !ok {\n\t\terr := RateLimit_Action_MetaDataValidationError{\n\t\t\tfield:  \"Source\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for SkipIfAbsent\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_Action_MetaDataMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_Action_MetaDataMultiError is an error wrapping multiple validation\n// errors returned by RateLimit_Action_MetaData.ValidateAll() if the\n// designated constraints aren't met.\ntype RateLimit_Action_MetaDataMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_Action_MetaDataMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_Action_MetaDataMultiError) AllErrors() []error { return m }\n\n// RateLimit_Action_MetaDataValidationError is the validation error returned by\n// RateLimit_Action_MetaData.Validate if the designated constraints aren't met.\ntype RateLimit_Action_MetaDataValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_Action_MetaDataValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_Action_MetaDataValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_Action_MetaDataValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_Action_MetaDataValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_Action_MetaDataValidationError) ErrorName() string {\n\treturn \"RateLimit_Action_MetaDataValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_Action_MetaDataValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_Action_MetaData.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_Action_MetaDataValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_Action_MetaDataValidationError{}\n\n// Validate checks the field values on\n// RateLimit_Action_QueryParameterValueMatch with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *RateLimit_Action_QueryParameterValueMatch) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// RateLimit_Action_QueryParameterValueMatch with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in\n// RateLimit_Action_QueryParameterValueMatchMultiError, or nil if none found.\nfunc (m *RateLimit_Action_QueryParameterValueMatch) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_Action_QueryParameterValueMatch) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetDescriptorValue()) < 1 {\n\t\terr := RateLimit_Action_QueryParameterValueMatchValidationError{\n\t\t\tfield:  \"DescriptorValue\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for DefaultValue\n\n\t// no validation rules for DescriptorKey\n\n\tif all {\n\t\tswitch v := interface{}(m.GetExpectMatch()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RateLimit_Action_QueryParameterValueMatchValidationError{\n\t\t\t\t\tfield:  \"ExpectMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RateLimit_Action_QueryParameterValueMatchValidationError{\n\t\t\t\t\tfield:  \"ExpectMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetExpectMatch()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RateLimit_Action_QueryParameterValueMatchValidationError{\n\t\t\t\tfield:  \"ExpectMatch\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(m.GetQueryParameters()) < 1 {\n\t\terr := RateLimit_Action_QueryParameterValueMatchValidationError{\n\t\t\tfield:  \"QueryParameters\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetQueryParameters() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_Action_QueryParameterValueMatchValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"QueryParameters[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimit_Action_QueryParameterValueMatchValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"QueryParameters[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimit_Action_QueryParameterValueMatchValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"QueryParameters[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_Action_QueryParameterValueMatchMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_Action_QueryParameterValueMatchMultiError is an error wrapping\n// multiple validation errors returned by\n// RateLimit_Action_QueryParameterValueMatch.ValidateAll() if the designated\n// constraints aren't met.\ntype RateLimit_Action_QueryParameterValueMatchMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_Action_QueryParameterValueMatchMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_Action_QueryParameterValueMatchMultiError) AllErrors() []error { return m }\n\n// RateLimit_Action_QueryParameterValueMatchValidationError is the validation\n// error returned by RateLimit_Action_QueryParameterValueMatch.Validate if the\n// designated constraints aren't met.\ntype RateLimit_Action_QueryParameterValueMatchValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_Action_QueryParameterValueMatchValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_Action_QueryParameterValueMatchValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_Action_QueryParameterValueMatchValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_Action_QueryParameterValueMatchValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_Action_QueryParameterValueMatchValidationError) ErrorName() string {\n\treturn \"RateLimit_Action_QueryParameterValueMatchValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_Action_QueryParameterValueMatchValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_Action_QueryParameterValueMatch.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_Action_QueryParameterValueMatchValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_Action_QueryParameterValueMatchValidationError{}\n\n// Validate checks the field values on RateLimit_Override_DynamicMetadata with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the first error encountered is returned, or nil if there are\n// no violations.\nfunc (m *RateLimit_Override_DynamicMetadata) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimit_Override_DynamicMetadata\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// RateLimit_Override_DynamicMetadataMultiError, or nil if none found.\nfunc (m *RateLimit_Override_DynamicMetadata) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimit_Override_DynamicMetadata) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetMetadataKey() == nil {\n\t\terr := RateLimit_Override_DynamicMetadataValidationError{\n\t\t\tfield:  \"MetadataKey\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMetadataKey()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RateLimit_Override_DynamicMetadataValidationError{\n\t\t\t\t\tfield:  \"MetadataKey\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RateLimit_Override_DynamicMetadataValidationError{\n\t\t\t\t\tfield:  \"MetadataKey\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMetadataKey()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RateLimit_Override_DynamicMetadataValidationError{\n\t\t\t\tfield:  \"MetadataKey\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RateLimit_Override_DynamicMetadataMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimit_Override_DynamicMetadataMultiError is an error wrapping multiple\n// validation errors returned by\n// RateLimit_Override_DynamicMetadata.ValidateAll() if the designated\n// constraints aren't met.\ntype RateLimit_Override_DynamicMetadataMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimit_Override_DynamicMetadataMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimit_Override_DynamicMetadataMultiError) AllErrors() []error { return m }\n\n// RateLimit_Override_DynamicMetadataValidationError is the validation error\n// returned by RateLimit_Override_DynamicMetadata.Validate if the designated\n// constraints aren't met.\ntype RateLimit_Override_DynamicMetadataValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimit_Override_DynamicMetadataValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimit_Override_DynamicMetadataValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimit_Override_DynamicMetadataValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimit_Override_DynamicMetadataValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimit_Override_DynamicMetadataValidationError) ErrorName() string {\n\treturn \"RateLimit_Override_DynamicMetadataValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimit_Override_DynamicMetadataValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimit_Override_DynamicMetadata.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimit_Override_DynamicMetadataValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimit_Override_DynamicMetadataValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/route/v3/route_components_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/route/v3/route_components.proto\n\npackage routev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tanypb \"github.com/planetscale/vtprotobuf/types/known/anypb\"\n\tdurationpb \"github.com/planetscale/vtprotobuf/types/known/durationpb\"\n\twrapperspb \"github.com/planetscale/vtprotobuf/types/known/wrapperspb\"\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *VirtualHost) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *VirtualHost) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *VirtualHost) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.RequestBodyBufferLimit != nil {\n\t\tsize, err := (*wrapperspb.UInt64Value)(m.RequestBodyBufferLimit).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xca\n\t}\n\tif m.Metadata != nil {\n\t\tif vtmsg, ok := interface{}(m.Metadata).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Metadata)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xc2\n\t}\n\tif m.IncludeIsTimeoutRetryHeader {\n\t\ti--\n\t\tif m.IncludeIsTimeoutRetryHeader {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xb8\n\t}\n\tif len(m.RequestMirrorPolicies) > 0 {\n\t\tfor iNdEx := len(m.RequestMirrorPolicies) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.RequestMirrorPolicies[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1\n\t\t\ti--\n\t\t\tdAtA[i] = 0xb2\n\t\t}\n\t}\n\tif m.Matcher != nil {\n\t\tif vtmsg, ok := interface{}(m.Matcher).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Matcher)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xaa\n\t}\n\tif m.RetryPolicyTypedConfig != nil {\n\t\tsize, err := (*anypb.Any)(m.RetryPolicyTypedConfig).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xa2\n\t}\n\tif m.IncludeAttemptCountInResponse {\n\t\ti--\n\t\tif m.IncludeAttemptCountInResponse {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x98\n\t}\n\tif m.PerRequestBufferLimitBytes != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.PerRequestBufferLimitBytes).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x92\n\t}\n\tif m.HedgePolicy != nil {\n\t\tsize, err := m.HedgePolicy.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x8a\n\t}\n\tif m.RetryPolicy != nil {\n\t\tsize, err := m.RetryPolicy.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x82\n\t}\n\tif len(m.TypedPerFilterConfig) > 0 {\n\t\tfor k := range m.TypedPerFilterConfig {\n\t\t\tv := m.TypedPerFilterConfig[k]\n\t\t\tbaseI := i\n\t\t\tsize, err := (*anypb.Any)(v).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x7a\n\t\t}\n\t}\n\tif m.IncludeRequestAttemptCount {\n\t\ti--\n\t\tif m.IncludeRequestAttemptCount {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x70\n\t}\n\tif len(m.RequestHeadersToRemove) > 0 {\n\t\tfor iNdEx := len(m.RequestHeadersToRemove) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.RequestHeadersToRemove[iNdEx])\n\t\t\tcopy(dAtA[i:], m.RequestHeadersToRemove[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RequestHeadersToRemove[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x6a\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToRemove) > 0 {\n\t\tfor iNdEx := len(m.ResponseHeadersToRemove) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.ResponseHeadersToRemove[iNdEx])\n\t\t\tcopy(dAtA[i:], m.ResponseHeadersToRemove[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ResponseHeadersToRemove[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x5a\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToAdd) > 0 {\n\t\tfor iNdEx := len(m.ResponseHeadersToAdd) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.ResponseHeadersToAdd[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.ResponseHeadersToAdd[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x52\n\t\t}\n\t}\n\tif m.Cors != nil {\n\t\tsize, err := m.Cors.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif len(m.RequestHeadersToAdd) > 0 {\n\t\tfor iNdEx := len(m.RequestHeadersToAdd) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.RequestHeadersToAdd[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.RequestHeadersToAdd[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t}\n\tif len(m.RateLimits) > 0 {\n\t\tfor iNdEx := len(m.RateLimits) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.RateLimits[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t}\n\tif len(m.VirtualClusters) > 0 {\n\t\tfor iNdEx := len(m.VirtualClusters) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.VirtualClusters[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif m.RequireTls != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.RequireTls))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif len(m.Routes) > 0 {\n\t\tfor iNdEx := len(m.Routes) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Routes[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.Domains) > 0 {\n\t\tfor iNdEx := len(m.Domains) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Domains[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Domains[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Domains[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *FilterAction) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *FilterAction) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *FilterAction) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Action != nil {\n\t\tsize, err := (*anypb.Any)(m.Action).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteList) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteList) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteList) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Routes) > 0 {\n\t\tfor iNdEx := len(m.Routes) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Routes[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Route) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Route) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Route) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.RequestBodyBufferLimit != nil {\n\t\tsize, err := (*wrapperspb.UInt64Value)(m.RequestBodyBufferLimit).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xa2\n\t}\n\tif len(m.StatPrefix) > 0 {\n\t\ti -= len(m.StatPrefix)\n\t\tcopy(dAtA[i:], m.StatPrefix)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.StatPrefix)))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x9a\n\t}\n\tif msg, ok := m.Action.(*Route_NonForwardingAction); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Action.(*Route_FilterAction); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.PerRequestBufferLimitBytes != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.PerRequestBufferLimitBytes).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x82\n\t}\n\tif m.Tracing != nil {\n\t\tsize, err := m.Tracing.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x7a\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0x72\n\t}\n\tif len(m.TypedPerFilterConfig) > 0 {\n\t\tfor k := range m.TypedPerFilterConfig {\n\t\t\tv := m.TypedPerFilterConfig[k]\n\t\t\tbaseI := i\n\t\t\tsize, err := (*anypb.Any)(v).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x6a\n\t\t}\n\t}\n\tif len(m.RequestHeadersToRemove) > 0 {\n\t\tfor iNdEx := len(m.RequestHeadersToRemove) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.RequestHeadersToRemove[iNdEx])\n\t\t\tcopy(dAtA[i:], m.RequestHeadersToRemove[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RequestHeadersToRemove[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x62\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToRemove) > 0 {\n\t\tfor iNdEx := len(m.ResponseHeadersToRemove) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.ResponseHeadersToRemove[iNdEx])\n\t\t\tcopy(dAtA[i:], m.ResponseHeadersToRemove[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ResponseHeadersToRemove[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x5a\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToAdd) > 0 {\n\t\tfor iNdEx := len(m.ResponseHeadersToAdd) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.ResponseHeadersToAdd[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.ResponseHeadersToAdd[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x52\n\t\t}\n\t}\n\tif len(m.RequestHeadersToAdd) > 0 {\n\t\tfor iNdEx := len(m.RequestHeadersToAdd) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.RequestHeadersToAdd[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.RequestHeadersToAdd[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x4a\n\t\t}\n\t}\n\tif msg, ok := m.Action.(*Route_DirectResponse); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.Decorator != nil {\n\t\tsize, err := m.Decorator.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.Metadata != nil {\n\t\tif vtmsg, ok := interface{}(m.Metadata).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Metadata)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif msg, ok := m.Action.(*Route_Redirect); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Action.(*Route_Route); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.Match != nil {\n\t\tsize, err := m.Match.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Route_Route) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Route_Route) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Route != nil {\n\t\tsize, err := m.Route.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Route_Redirect) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Route_Redirect) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Redirect != nil {\n\t\tsize, err := m.Redirect.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Route_DirectResponse) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Route_DirectResponse) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.DirectResponse != nil {\n\t\tsize, err := m.DirectResponse.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Route_FilterAction) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Route_FilterAction) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.FilterAction != nil {\n\t\tsize, err := m.FilterAction.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x8a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x8a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Route_NonForwardingAction) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Route_NonForwardingAction) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.NonForwardingAction != nil {\n\t\tsize, err := m.NonForwardingAction.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x92\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x92\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *WeightedCluster_ClusterWeight) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *WeightedCluster_ClusterWeight) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *WeightedCluster_ClusterWeight) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.ClusterHeader) > 0 {\n\t\ti -= len(m.ClusterHeader)\n\t\tcopy(dAtA[i:], m.ClusterHeader)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClusterHeader)))\n\t\ti--\n\t\tdAtA[i] = 0x62\n\t}\n\tif msg, ok := m.HostRewriteSpecifier.(*WeightedCluster_ClusterWeight_HostRewriteLiteral); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.TypedPerFilterConfig) > 0 {\n\t\tfor k := range m.TypedPerFilterConfig {\n\t\t\tv := m.TypedPerFilterConfig[k]\n\t\t\tbaseI := i\n\t\t\tsize, err := (*anypb.Any)(v).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x52\n\t\t}\n\t}\n\tif len(m.RequestHeadersToRemove) > 0 {\n\t\tfor iNdEx := len(m.RequestHeadersToRemove) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.RequestHeadersToRemove[iNdEx])\n\t\t\tcopy(dAtA[i:], m.RequestHeadersToRemove[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RequestHeadersToRemove[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x4a\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToRemove) > 0 {\n\t\tfor iNdEx := len(m.ResponseHeadersToRemove) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.ResponseHeadersToRemove[iNdEx])\n\t\t\tcopy(dAtA[i:], m.ResponseHeadersToRemove[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ResponseHeadersToRemove[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToAdd) > 0 {\n\t\tfor iNdEx := len(m.ResponseHeadersToAdd) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.ResponseHeadersToAdd[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.ResponseHeadersToAdd[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif len(m.RequestHeadersToAdd) > 0 {\n\t\tfor iNdEx := len(m.RequestHeadersToAdd) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.RequestHeadersToAdd[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.RequestHeadersToAdd[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif m.MetadataMatch != nil {\n\t\tif vtmsg, ok := interface{}(m.MetadataMatch).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.MetadataMatch)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Weight != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.Weight).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *WeightedCluster_ClusterWeight_HostRewriteLiteral) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *WeightedCluster_ClusterWeight_HostRewriteLiteral) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.HostRewriteLiteral)\n\tcopy(dAtA[i:], m.HostRewriteLiteral)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HostRewriteLiteral)))\n\ti--\n\tdAtA[i] = 0x5a\n\treturn len(dAtA) - i, nil\n}\nfunc (m *WeightedCluster) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *WeightedCluster) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *WeightedCluster) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.RandomValueSpecifier.(*WeightedCluster_UseHashPolicy); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.RandomValueSpecifier.(*WeightedCluster_HeaderName); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.TotalWeight != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.TotalWeight).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.RuntimeKeyPrefix) > 0 {\n\t\ti -= len(m.RuntimeKeyPrefix)\n\t\tcopy(dAtA[i:], m.RuntimeKeyPrefix)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RuntimeKeyPrefix)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Clusters) > 0 {\n\t\tfor iNdEx := len(m.Clusters) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Clusters[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *WeightedCluster_HeaderName) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *WeightedCluster_HeaderName) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.HeaderName)\n\tcopy(dAtA[i:], m.HeaderName)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HeaderName)))\n\ti--\n\tdAtA[i] = 0x22\n\treturn len(dAtA) - i, nil\n}\nfunc (m *WeightedCluster_UseHashPolicy) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *WeightedCluster_UseHashPolicy) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.UseHashPolicy != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.UseHashPolicy).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ClusterSpecifierPlugin) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ClusterSpecifierPlugin) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ClusterSpecifierPlugin) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.IsOptional {\n\t\ti--\n\t\tif m.IsOptional {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Extension != nil {\n\t\tif vtmsg, ok := interface{}(m.Extension).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Extension)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteMatch_GrpcRouteMatchOptions) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteMatch_GrpcRouteMatchOptions) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteMatch_GrpcRouteMatchOptions) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteMatch_TlsContextMatchOptions) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteMatch_TlsContextMatchOptions) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteMatch_TlsContextMatchOptions) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Validated != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.Validated).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Presented != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.Presented).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteMatch_ConnectMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteMatch_ConnectMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteMatch_ConnectMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteMatch) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Cookies) > 0 {\n\t\tfor iNdEx := len(m.Cookies) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Cookies[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8a\n\t\t}\n\t}\n\tif len(m.FilterState) > 0 {\n\t\tfor iNdEx := len(m.FilterState) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.FilterState[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.FilterState[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1\n\t\t\ti--\n\t\t\tdAtA[i] = 0x82\n\t\t}\n\t}\n\tif msg, ok := m.PathSpecifier.(*RouteMatch_PathMatchPolicy); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.PathSpecifier.(*RouteMatch_PathSeparatedPrefix); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.DynamicMetadata) > 0 {\n\t\tfor iNdEx := len(m.DynamicMetadata) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.DynamicMetadata[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.DynamicMetadata[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x6a\n\t\t}\n\t}\n\tif msg, ok := m.PathSpecifier.(*RouteMatch_ConnectMatcher_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.TlsContext != nil {\n\t\tsize, err := m.TlsContext.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t}\n\tif msg, ok := m.PathSpecifier.(*RouteMatch_SafeRegex); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.RuntimeFraction != nil {\n\t\tif vtmsg, ok := interface{}(m.RuntimeFraction).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.RuntimeFraction)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t}\n\tif m.Grpc != nil {\n\t\tsize, err := m.Grpc.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif len(m.QueryParameters) > 0 {\n\t\tfor iNdEx := len(m.QueryParameters) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.QueryParameters[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t}\n\tif len(m.Headers) > 0 {\n\t\tfor iNdEx := len(m.Headers) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Headers[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t}\n\tif m.CaseSensitive != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.CaseSensitive).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif msg, ok := m.PathSpecifier.(*RouteMatch_Path); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.PathSpecifier.(*RouteMatch_Prefix); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteMatch_Prefix) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteMatch_Prefix) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Prefix)\n\tcopy(dAtA[i:], m.Prefix)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Prefix)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteMatch_Path) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteMatch_Path) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Path)\n\tcopy(dAtA[i:], m.Path)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Path)))\n\ti--\n\tdAtA[i] = 0x12\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteMatch_SafeRegex) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteMatch_SafeRegex) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.SafeRegex != nil {\n\t\tif vtmsg, ok := interface{}(m.SafeRegex).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.SafeRegex)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x52\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x52\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteMatch_ConnectMatcher_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteMatch_ConnectMatcher_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ConnectMatcher != nil {\n\t\tsize, err := m.ConnectMatcher.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x62\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x62\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteMatch_PathSeparatedPrefix) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteMatch_PathSeparatedPrefix) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.PathSeparatedPrefix)\n\tcopy(dAtA[i:], m.PathSeparatedPrefix)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PathSeparatedPrefix)))\n\ti--\n\tdAtA[i] = 0x72\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteMatch_PathMatchPolicy) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteMatch_PathMatchPolicy) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.PathMatchPolicy != nil {\n\t\tif vtmsg, ok := interface{}(m.PathMatchPolicy).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.PathMatchPolicy)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x7a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x7a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *CorsPolicy) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CorsPolicy) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CorsPolicy) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.ForwardNotMatchingPreflights != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.ForwardNotMatchingPreflights).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x6a\n\t}\n\tif m.AllowPrivateNetworkAccess != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.AllowPrivateNetworkAccess).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x62\n\t}\n\tif len(m.AllowOriginStringMatch) > 0 {\n\t\tfor iNdEx := len(m.AllowOriginStringMatch) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.AllowOriginStringMatch[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.AllowOriginStringMatch[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x5a\n\t\t}\n\t}\n\tif m.ShadowEnabled != nil {\n\t\tif vtmsg, ok := interface{}(m.ShadowEnabled).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.ShadowEnabled)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x52\n\t}\n\tif msg, ok := m.EnabledSpecifier.(*CorsPolicy_FilterEnabled); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.AllowCredentials != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.AllowCredentials).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.MaxAge) > 0 {\n\t\ti -= len(m.MaxAge)\n\t\tcopy(dAtA[i:], m.MaxAge)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.MaxAge)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.ExposeHeaders) > 0 {\n\t\ti -= len(m.ExposeHeaders)\n\t\tcopy(dAtA[i:], m.ExposeHeaders)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ExposeHeaders)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.AllowHeaders) > 0 {\n\t\ti -= len(m.AllowHeaders)\n\t\tcopy(dAtA[i:], m.AllowHeaders)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.AllowHeaders)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.AllowMethods) > 0 {\n\t\ti -= len(m.AllowMethods)\n\t\tcopy(dAtA[i:], m.AllowMethods)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.AllowMethods)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CorsPolicy_FilterEnabled) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CorsPolicy_FilterEnabled) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.FilterEnabled != nil {\n\t\tif vtmsg, ok := interface{}(m.FilterEnabled).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.FilterEnabled)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_RequestMirrorPolicy) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteAction_RequestMirrorPolicy) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_RequestMirrorPolicy) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.HostRewriteLiteral) > 0 {\n\t\ti -= len(m.HostRewriteLiteral)\n\t\tcopy(dAtA[i:], m.HostRewriteLiteral)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HostRewriteLiteral)))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif len(m.RequestHeadersMutations) > 0 {\n\t\tfor iNdEx := len(m.RequestHeadersMutations) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.RequestHeadersMutations[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.RequestHeadersMutations[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t}\n\tif m.DisableShadowHostSuffixAppend {\n\t\ti--\n\t\tif m.DisableShadowHostSuffixAppend {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif len(m.ClusterHeader) > 0 {\n\t\ti -= len(m.ClusterHeader)\n\t\tcopy(dAtA[i:], m.ClusterHeader)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClusterHeader)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.TraceSampled != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.TraceSampled).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.RuntimeFraction != nil {\n\t\tif vtmsg, ok := interface{}(m.RuntimeFraction).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.RuntimeFraction)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Cluster) > 0 {\n\t\ti -= len(m.Cluster)\n\t\tcopy(dAtA[i:], m.Cluster)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Cluster)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteAction_HashPolicy_Header) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteAction_HashPolicy_Header) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HashPolicy_Header) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.RegexRewrite != nil {\n\t\tif vtmsg, ok := interface{}(m.RegexRewrite).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.RegexRewrite)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.HeaderName) > 0 {\n\t\ti -= len(m.HeaderName)\n\t\tcopy(dAtA[i:], m.HeaderName)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HeaderName)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteAction_HashPolicy_CookieAttribute) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteAction_HashPolicy_CookieAttribute) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HashPolicy_CookieAttribute) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteAction_HashPolicy_Cookie) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteAction_HashPolicy_Cookie) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HashPolicy_Cookie) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Attributes) > 0 {\n\t\tfor iNdEx := len(m.Attributes) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Attributes[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.Path) > 0 {\n\t\ti -= len(m.Path)\n\t\tcopy(dAtA[i:], m.Path)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Path)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Ttl != nil {\n\t\tsize, err := (*durationpb.Duration)(m.Ttl).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteAction_HashPolicy_ConnectionProperties) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteAction_HashPolicy_ConnectionProperties) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HashPolicy_ConnectionProperties) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.SourceIp {\n\t\ti--\n\t\tif m.SourceIp {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteAction_HashPolicy_QueryParameter) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteAction_HashPolicy_QueryParameter) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HashPolicy_QueryParameter) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteAction_HashPolicy_FilterState) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteAction_HashPolicy_FilterState) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HashPolicy_FilterState) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteAction_HashPolicy) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteAction_HashPolicy) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HashPolicy) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.PolicySpecifier.(*RouteAction_HashPolicy_FilterState_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.PolicySpecifier.(*RouteAction_HashPolicy_QueryParameter_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.Terminal {\n\t\ti--\n\t\tif m.Terminal {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif msg, ok := m.PolicySpecifier.(*RouteAction_HashPolicy_ConnectionProperties_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.PolicySpecifier.(*RouteAction_HashPolicy_Cookie_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.PolicySpecifier.(*RouteAction_HashPolicy_Header_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteAction_HashPolicy_Header_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HashPolicy_Header_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Header != nil {\n\t\tsize, err := m.Header.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_HashPolicy_Cookie_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HashPolicy_Cookie_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Cookie != nil {\n\t\tsize, err := m.Cookie.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_HashPolicy_ConnectionProperties_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HashPolicy_ConnectionProperties_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ConnectionProperties != nil {\n\t\tsize, err := m.ConnectionProperties.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_HashPolicy_QueryParameter_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HashPolicy_QueryParameter_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.QueryParameter != nil {\n\t\tsize, err := m.QueryParameter.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_HashPolicy_FilterState_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HashPolicy_FilterState_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.FilterState != nil {\n\t\tsize, err := m.FilterState.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_UpgradeConfig_ConnectConfig) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteAction_UpgradeConfig_ConnectConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_UpgradeConfig_ConnectConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.AllowPost {\n\t\ti--\n\t\tif m.AllowPost {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.ProxyProtocolConfig != nil {\n\t\tif vtmsg, ok := interface{}(m.ProxyProtocolConfig).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.ProxyProtocolConfig)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteAction_UpgradeConfig) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteAction_UpgradeConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_UpgradeConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.ConnectConfig != nil {\n\t\tsize, err := m.ConnectConfig.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Enabled != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.Enabled).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.UpgradeType) > 0 {\n\t\ti -= len(m.UpgradeType)\n\t\tcopy(dAtA[i:], m.UpgradeType)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.UpgradeType)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteAction_MaxStreamDuration) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteAction_MaxStreamDuration) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_MaxStreamDuration) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.GrpcTimeoutHeaderOffset != nil {\n\t\tsize, err := (*durationpb.Duration)(m.GrpcTimeoutHeaderOffset).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.GrpcTimeoutHeaderMax != nil {\n\t\tsize, err := (*durationpb.Duration)(m.GrpcTimeoutHeaderMax).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.MaxStreamDuration != nil {\n\t\tsize, err := (*durationpb.Duration)(m.MaxStreamDuration).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteAction) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteAction) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.PathRewrite) > 0 {\n\t\ti -= len(m.PathRewrite)\n\t\tcopy(dAtA[i:], m.PathRewrite)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PathRewrite)))\n\t\ti--\n\t\tdAtA[i] = 0x2\n\t\ti--\n\t\tdAtA[i] = 0xea\n\t}\n\tif msg, ok := m.HostRewriteSpecifier.(*RouteAction_HostRewrite); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.FlushTimeout != nil {\n\t\tsize, err := (*durationpb.Duration)(m.FlushTimeout).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2\n\t\ti--\n\t\tdAtA[i] = 0xd2\n\t}\n\tif m.PathRewritePolicy != nil {\n\t\tif vtmsg, ok := interface{}(m.PathRewritePolicy).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.PathRewritePolicy)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x2\n\t\ti--\n\t\tdAtA[i] = 0xca\n\t}\n\tif m.EarlyDataPolicy != nil {\n\t\tif vtmsg, ok := interface{}(m.EarlyDataPolicy).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.EarlyDataPolicy)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x2\n\t\ti--\n\t\tdAtA[i] = 0xc2\n\t}\n\tif msg, ok := m.ClusterSpecifier.(*RouteAction_InlineClusterSpecifierPlugin); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.AppendXForwardedHost {\n\t\ti--\n\t\tif m.AppendXForwardedHost {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x2\n\t\ti--\n\t\tdAtA[i] = 0xb0\n\t}\n\tif msg, ok := m.ClusterSpecifier.(*RouteAction_ClusterSpecifierPlugin); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.MaxStreamDuration != nil {\n\t\tsize, err := m.MaxStreamDuration.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2\n\t\ti--\n\t\tdAtA[i] = 0xa2\n\t}\n\tif msg, ok := m.HostRewriteSpecifier.(*RouteAction_HostRewritePathRegex); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.InternalRedirectPolicy != nil {\n\t\tsize, err := m.InternalRedirectPolicy.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2\n\t\ti--\n\t\tdAtA[i] = 0x92\n\t}\n\tif m.RetryPolicyTypedConfig != nil {\n\t\tsize, err := (*anypb.Any)(m.RetryPolicyTypedConfig).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2\n\t\ti--\n\t\tdAtA[i] = 0x8a\n\t}\n\tif m.RegexRewrite != nil {\n\t\tif vtmsg, ok := interface{}(m.RegexRewrite).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.RegexRewrite)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x2\n\t\ti--\n\t\tdAtA[i] = 0x82\n\t}\n\tif m.MaxInternalRedirects != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxInternalRedirects).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xfa\n\t}\n\tif len(m.RequestMirrorPolicies) > 0 {\n\t\tfor iNdEx := len(m.RequestMirrorPolicies) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.RequestMirrorPolicies[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1\n\t\t\ti--\n\t\t\tdAtA[i] = 0xf2\n\t\t}\n\t}\n\tif msg, ok := m.HostRewriteSpecifier.(*RouteAction_HostRewriteHeader); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.GrpcTimeoutOffset != nil {\n\t\tsize, err := (*durationpb.Duration)(m.GrpcTimeoutOffset).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xe2\n\t}\n\tif m.HedgePolicy != nil {\n\t\tsize, err := m.HedgePolicy.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xda\n\t}\n\tif m.InternalRedirectAction != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.InternalRedirectAction))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xd0\n\t}\n\tif len(m.UpgradeConfigs) > 0 {\n\t\tfor iNdEx := len(m.UpgradeConfigs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.UpgradeConfigs[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1\n\t\t\ti--\n\t\t\tdAtA[i] = 0xca\n\t\t}\n\t}\n\tif m.IdleTimeout != nil {\n\t\tsize, err := (*durationpb.Duration)(m.IdleTimeout).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xc2\n\t}\n\tif m.MaxGrpcTimeout != nil {\n\t\tsize, err := (*durationpb.Duration)(m.MaxGrpcTimeout).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xba\n\t}\n\tif m.ClusterNotFoundResponseCode != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.ClusterNotFoundResponseCode))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xa0\n\t}\n\tif m.Cors != nil {\n\t\tsize, err := m.Cors.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x8a\n\t}\n\tif len(m.HashPolicy) > 0 {\n\t\tfor iNdEx := len(m.HashPolicy) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.HashPolicy[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x7a\n\t\t}\n\t}\n\tif m.IncludeVhRateLimits != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.IncludeVhRateLimits).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x72\n\t}\n\tif len(m.RateLimits) > 0 {\n\t\tfor iNdEx := len(m.RateLimits) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.RateLimits[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x6a\n\t\t}\n\t}\n\tif m.Priority != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Priority))\n\t\ti--\n\t\tdAtA[i] = 0x58\n\t}\n\tif m.RetryPolicy != nil {\n\t\tsize, err := m.RetryPolicy.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t}\n\tif m.Timeout != nil {\n\t\tsize, err := (*durationpb.Duration)(m.Timeout).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif msg, ok := m.HostRewriteSpecifier.(*RouteAction_AutoHostRewrite); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.HostRewriteSpecifier.(*RouteAction_HostRewriteLiteral); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.PrefixRewrite) > 0 {\n\t\ti -= len(m.PrefixRewrite)\n\t\tcopy(dAtA[i:], m.PrefixRewrite)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PrefixRewrite)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.MetadataMatch != nil {\n\t\tif vtmsg, ok := interface{}(m.MetadataMatch).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.MetadataMatch)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif msg, ok := m.ClusterSpecifier.(*RouteAction_WeightedClusters); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ClusterSpecifier.(*RouteAction_ClusterHeader); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ClusterSpecifier.(*RouteAction_Cluster); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteAction_Cluster) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_Cluster) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Cluster)\n\tcopy(dAtA[i:], m.Cluster)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Cluster)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_ClusterHeader) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_ClusterHeader) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.ClusterHeader)\n\tcopy(dAtA[i:], m.ClusterHeader)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClusterHeader)))\n\ti--\n\tdAtA[i] = 0x12\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_WeightedClusters) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_WeightedClusters) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.WeightedClusters != nil {\n\t\tsize, err := m.WeightedClusters.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_HostRewriteLiteral) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HostRewriteLiteral) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.HostRewriteLiteral)\n\tcopy(dAtA[i:], m.HostRewriteLiteral)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HostRewriteLiteral)))\n\ti--\n\tdAtA[i] = 0x32\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_AutoHostRewrite) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_AutoHostRewrite) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.AutoHostRewrite != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.AutoHostRewrite).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_HostRewriteHeader) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HostRewriteHeader) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.HostRewriteHeader)\n\tcopy(dAtA[i:], m.HostRewriteHeader)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HostRewriteHeader)))\n\ti--\n\tdAtA[i] = 0x1\n\ti--\n\tdAtA[i] = 0xea\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_HostRewritePathRegex) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HostRewritePathRegex) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.HostRewritePathRegex != nil {\n\t\tif vtmsg, ok := interface{}(m.HostRewritePathRegex).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.HostRewritePathRegex)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x2\n\t\ti--\n\t\tdAtA[i] = 0x9a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x2\n\t\ti--\n\t\tdAtA[i] = 0x9a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_ClusterSpecifierPlugin) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_ClusterSpecifierPlugin) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.ClusterSpecifierPlugin)\n\tcopy(dAtA[i:], m.ClusterSpecifierPlugin)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClusterSpecifierPlugin)))\n\ti--\n\tdAtA[i] = 0x2\n\ti--\n\tdAtA[i] = 0xaa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_InlineClusterSpecifierPlugin) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_InlineClusterSpecifierPlugin) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.InlineClusterSpecifierPlugin != nil {\n\t\tsize, err := m.InlineClusterSpecifierPlugin.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2\n\t\ti--\n\t\tdAtA[i] = 0xba\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x2\n\t\ti--\n\t\tdAtA[i] = 0xba\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RouteAction_HostRewrite) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteAction_HostRewrite) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.HostRewrite)\n\tcopy(dAtA[i:], m.HostRewrite)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HostRewrite)))\n\ti--\n\tdAtA[i] = 0x2\n\ti--\n\tdAtA[i] = 0xe2\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RetryPolicy_RetryPriority) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RetryPolicy_RetryPriority) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RetryPolicy_RetryPriority) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.ConfigType.(*RetryPolicy_RetryPriority_TypedConfig); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RetryPolicy_RetryPriority_TypedConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RetryPolicy_RetryPriority_TypedConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.TypedConfig != nil {\n\t\tsize, err := (*anypb.Any)(m.TypedConfig).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RetryPolicy_RetryHostPredicate) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RetryPolicy_RetryHostPredicate) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RetryPolicy_RetryHostPredicate) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.ConfigType.(*RetryPolicy_RetryHostPredicate_TypedConfig); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RetryPolicy_RetryHostPredicate_TypedConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RetryPolicy_RetryHostPredicate_TypedConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.TypedConfig != nil {\n\t\tsize, err := (*anypb.Any)(m.TypedConfig).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RetryPolicy_RetryBackOff) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RetryPolicy_RetryBackOff) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RetryPolicy_RetryBackOff) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.MaxInterval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.MaxInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.BaseInterval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.BaseInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RetryPolicy_ResetHeader) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RetryPolicy_ResetHeader) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RetryPolicy_ResetHeader) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Format != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Format))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RetryPolicy_RateLimitedRetryBackOff) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RetryPolicy_RateLimitedRetryBackOff) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RetryPolicy_RateLimitedRetryBackOff) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.MaxInterval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.MaxInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.ResetHeaders) > 0 {\n\t\tfor iNdEx := len(m.ResetHeaders) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.ResetHeaders[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RetryPolicy) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RetryPolicy) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RetryPolicy) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.PerTryIdleTimeout != nil {\n\t\tsize, err := (*durationpb.Duration)(m.PerTryIdleTimeout).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x6a\n\t}\n\tif len(m.RetryOptionsPredicates) > 0 {\n\t\tfor iNdEx := len(m.RetryOptionsPredicates) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.RetryOptionsPredicates[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.RetryOptionsPredicates[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x62\n\t\t}\n\t}\n\tif m.RateLimitedRetryBackOff != nil {\n\t\tsize, err := m.RateLimitedRetryBackOff.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t}\n\tif len(m.RetriableRequestHeaders) > 0 {\n\t\tfor iNdEx := len(m.RetriableRequestHeaders) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.RetriableRequestHeaders[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x52\n\t\t}\n\t}\n\tif len(m.RetriableHeaders) > 0 {\n\t\tfor iNdEx := len(m.RetriableHeaders) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.RetriableHeaders[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x4a\n\t\t}\n\t}\n\tif m.RetryBackOff != nil {\n\t\tsize, err := m.RetryBackOff.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif len(m.RetriableStatusCodes) > 0 {\n\t\tvar pksize2 int\n\t\tfor _, num := range m.RetriableStatusCodes {\n\t\t\tpksize2 += protohelpers.SizeOfVarint(uint64(num))\n\t\t}\n\t\ti -= pksize2\n\t\tj1 := i\n\t\tfor _, num := range m.RetriableStatusCodes {\n\t\t\tfor num >= 1<<7 {\n\t\t\t\tdAtA[j1] = uint8(uint64(num)&0x7f | 0x80)\n\t\t\t\tnum >>= 7\n\t\t\t\tj1++\n\t\t\t}\n\t\t\tdAtA[j1] = uint8(num)\n\t\t\tj1++\n\t\t}\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(pksize2))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif m.HostSelectionRetryMaxAttempts != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.HostSelectionRetryMaxAttempts))\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif len(m.RetryHostPredicate) > 0 {\n\t\tfor iNdEx := len(m.RetryHostPredicate) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.RetryHostPredicate[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif m.RetryPriority != nil {\n\t\tsize, err := m.RetryPriority.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.PerTryTimeout != nil {\n\t\tsize, err := (*durationpb.Duration)(m.PerTryTimeout).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.NumRetries != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.NumRetries).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.RetryOn) > 0 {\n\t\ti -= len(m.RetryOn)\n\t\tcopy(dAtA[i:], m.RetryOn)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RetryOn)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HedgePolicy) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HedgePolicy) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HedgePolicy) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.HedgeOnPerTryTimeout {\n\t\ti--\n\t\tif m.HedgeOnPerTryTimeout {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.AdditionalRequestChance != nil {\n\t\tif vtmsg, ok := interface{}(m.AdditionalRequestChance).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.AdditionalRequestChance)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.InitialRequests != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.InitialRequests).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RedirectAction) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RedirectAction) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RedirectAction) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.PathRewriteSpecifier.(*RedirectAction_RegexRewrite); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.PortRedirect != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.PortRedirect))\n\t\ti--\n\t\tdAtA[i] = 0x40\n\t}\n\tif msg, ok := m.SchemeRewriteSpecifier.(*RedirectAction_SchemeRedirect); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.StripQuery {\n\t\ti--\n\t\tif m.StripQuery {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif msg, ok := m.PathRewriteSpecifier.(*RedirectAction_PrefixRewrite); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.SchemeRewriteSpecifier.(*RedirectAction_HttpsRedirect); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.ResponseCode != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.ResponseCode))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif msg, ok := m.PathRewriteSpecifier.(*RedirectAction_PathRedirect); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.HostRedirect) > 0 {\n\t\ti -= len(m.HostRedirect)\n\t\tcopy(dAtA[i:], m.HostRedirect)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HostRedirect)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RedirectAction_PathRedirect) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RedirectAction_PathRedirect) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.PathRedirect)\n\tcopy(dAtA[i:], m.PathRedirect)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PathRedirect)))\n\ti--\n\tdAtA[i] = 0x12\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RedirectAction_HttpsRedirect) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RedirectAction_HttpsRedirect) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti--\n\tif m.HttpsRedirect {\n\t\tdAtA[i] = 1\n\t} else {\n\t\tdAtA[i] = 0\n\t}\n\ti--\n\tdAtA[i] = 0x20\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RedirectAction_PrefixRewrite) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RedirectAction_PrefixRewrite) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.PrefixRewrite)\n\tcopy(dAtA[i:], m.PrefixRewrite)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PrefixRewrite)))\n\ti--\n\tdAtA[i] = 0x2a\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RedirectAction_SchemeRedirect) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RedirectAction_SchemeRedirect) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.SchemeRedirect)\n\tcopy(dAtA[i:], m.SchemeRedirect)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SchemeRedirect)))\n\ti--\n\tdAtA[i] = 0x3a\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RedirectAction_RegexRewrite) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RedirectAction_RegexRewrite) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RegexRewrite != nil {\n\t\tif vtmsg, ok := interface{}(m.RegexRewrite).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.RegexRewrite)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *DirectResponseAction) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DirectResponseAction) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DirectResponseAction) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.BodyFormat != nil {\n\t\tif vtmsg, ok := interface{}(m.BodyFormat).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.BodyFormat)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Body != nil {\n\t\tif vtmsg, ok := interface{}(m.Body).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Body)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Status != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Status))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *NonForwardingAction) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *NonForwardingAction) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *NonForwardingAction) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Decorator) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Decorator) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Decorator) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Propagate != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.Propagate).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Operation) > 0 {\n\t\ti -= len(m.Operation)\n\t\tcopy(dAtA[i:], m.Operation)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Operation)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Tracing) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Tracing) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Tracing) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.UpstreamOperation) > 0 {\n\t\ti -= len(m.UpstreamOperation)\n\t\tcopy(dAtA[i:], m.UpstreamOperation)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.UpstreamOperation)))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.Operation) > 0 {\n\t\ti -= len(m.Operation)\n\t\tcopy(dAtA[i:], m.Operation)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Operation)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.CustomTags) > 0 {\n\t\tfor iNdEx := len(m.CustomTags) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.CustomTags[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.CustomTags[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif m.OverallSampling != nil {\n\t\tif vtmsg, ok := interface{}(m.OverallSampling).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.OverallSampling)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.RandomSampling != nil {\n\t\tif vtmsg, ok := interface{}(m.RandomSampling).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.RandomSampling)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.ClientSampling != nil {\n\t\tif vtmsg, ok := interface{}(m.ClientSampling).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.ClientSampling)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *VirtualCluster) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *VirtualCluster) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *VirtualCluster) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Headers) > 0 {\n\t\tfor iNdEx := len(m.Headers) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Headers[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Action_SourceCluster) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_Action_SourceCluster) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_SourceCluster) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Action_DestinationCluster) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_Action_DestinationCluster) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_DestinationCluster) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Action_RequestHeaders) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_Action_RequestHeaders) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_RequestHeaders) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.SkipIfAbsent {\n\t\ti--\n\t\tif m.SkipIfAbsent {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.DescriptorKey) > 0 {\n\t\ti -= len(m.DescriptorKey)\n\t\tcopy(dAtA[i:], m.DescriptorKey)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DescriptorKey)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.HeaderName) > 0 {\n\t\ti -= len(m.HeaderName)\n\t\tcopy(dAtA[i:], m.HeaderName)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HeaderName)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Action_QueryParameters) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_Action_QueryParameters) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_QueryParameters) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.SkipIfAbsent {\n\t\ti--\n\t\tif m.SkipIfAbsent {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.DescriptorKey) > 0 {\n\t\ti -= len(m.DescriptorKey)\n\t\tcopy(dAtA[i:], m.DescriptorKey)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DescriptorKey)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.QueryParameterName) > 0 {\n\t\ti -= len(m.QueryParameterName)\n\t\tcopy(dAtA[i:], m.QueryParameterName)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.QueryParameterName)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Action_RemoteAddress) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_Action_RemoteAddress) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_RemoteAddress) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Action_MaskedRemoteAddress) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_Action_MaskedRemoteAddress) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_MaskedRemoteAddress) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.V6PrefixMaskLen != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.V6PrefixMaskLen).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.V4PrefixMaskLen != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.V4PrefixMaskLen).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Action_GenericKey) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_Action_GenericKey) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_GenericKey) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.DefaultValue) > 0 {\n\t\ti -= len(m.DefaultValue)\n\t\tcopy(dAtA[i:], m.DefaultValue)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DefaultValue)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.DescriptorKey) > 0 {\n\t\ti -= len(m.DescriptorKey)\n\t\tcopy(dAtA[i:], m.DescriptorKey)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DescriptorKey)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DescriptorValue) > 0 {\n\t\ti -= len(m.DescriptorValue)\n\t\tcopy(dAtA[i:], m.DescriptorValue)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DescriptorValue)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Action_HeaderValueMatch) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_Action_HeaderValueMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_HeaderValueMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.DefaultValue) > 0 {\n\t\ti -= len(m.DefaultValue)\n\t\tcopy(dAtA[i:], m.DefaultValue)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DefaultValue)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.DescriptorKey) > 0 {\n\t\ti -= len(m.DescriptorKey)\n\t\tcopy(dAtA[i:], m.DescriptorKey)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DescriptorKey)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.Headers) > 0 {\n\t\tfor iNdEx := len(m.Headers) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Headers[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif m.ExpectMatch != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.ExpectMatch).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DescriptorValue) > 0 {\n\t\ti -= len(m.DescriptorValue)\n\t\tcopy(dAtA[i:], m.DescriptorValue)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DescriptorValue)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Action_DynamicMetaData) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_Action_DynamicMetaData) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_DynamicMetaData) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.DefaultValue) > 0 {\n\t\ti -= len(m.DefaultValue)\n\t\tcopy(dAtA[i:], m.DefaultValue)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DefaultValue)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.MetadataKey != nil {\n\t\tif vtmsg, ok := interface{}(m.MetadataKey).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.MetadataKey)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DescriptorKey) > 0 {\n\t\ti -= len(m.DescriptorKey)\n\t\tcopy(dAtA[i:], m.DescriptorKey)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DescriptorKey)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Action_MetaData) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_Action_MetaData) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_MetaData) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.SkipIfAbsent {\n\t\ti--\n\t\tif m.SkipIfAbsent {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif m.Source != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Source))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif len(m.DefaultValue) > 0 {\n\t\ti -= len(m.DefaultValue)\n\t\tcopy(dAtA[i:], m.DefaultValue)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DefaultValue)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.MetadataKey != nil {\n\t\tif vtmsg, ok := interface{}(m.MetadataKey).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.MetadataKey)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DescriptorKey) > 0 {\n\t\ti -= len(m.DescriptorKey)\n\t\tcopy(dAtA[i:], m.DescriptorKey)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DescriptorKey)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Action_QueryParameterValueMatch) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_Action_QueryParameterValueMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_QueryParameterValueMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.DefaultValue) > 0 {\n\t\ti -= len(m.DefaultValue)\n\t\tcopy(dAtA[i:], m.DefaultValue)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DefaultValue)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.DescriptorKey) > 0 {\n\t\ti -= len(m.DescriptorKey)\n\t\tcopy(dAtA[i:], m.DescriptorKey)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DescriptorKey)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.QueryParameters) > 0 {\n\t\tfor iNdEx := len(m.QueryParameters) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.QueryParameters[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif m.ExpectMatch != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.ExpectMatch).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DescriptorValue) > 0 {\n\t\ti -= len(m.DescriptorValue)\n\t\tcopy(dAtA[i:], m.DescriptorValue)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DescriptorValue)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Action) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_Action) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.ActionSpecifier.(*RateLimit_Action_QueryParameters_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ActionSpecifier.(*RateLimit_Action_QueryParameterValueMatch_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ActionSpecifier.(*RateLimit_Action_MaskedRemoteAddress_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ActionSpecifier.(*RateLimit_Action_Extension); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ActionSpecifier.(*RateLimit_Action_Metadata); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ActionSpecifier.(*RateLimit_Action_DynamicMetadata); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ActionSpecifier.(*RateLimit_Action_HeaderValueMatch_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ActionSpecifier.(*RateLimit_Action_GenericKey_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ActionSpecifier.(*RateLimit_Action_RemoteAddress_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ActionSpecifier.(*RateLimit_Action_RequestHeaders_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ActionSpecifier.(*RateLimit_Action_DestinationCluster_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ActionSpecifier.(*RateLimit_Action_SourceCluster_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Action_SourceCluster_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_SourceCluster_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.SourceCluster != nil {\n\t\tsize, err := m.SourceCluster.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimit_Action_DestinationCluster_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_DestinationCluster_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.DestinationCluster != nil {\n\t\tsize, err := m.DestinationCluster.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimit_Action_RequestHeaders_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_RequestHeaders_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RequestHeaders != nil {\n\t\tsize, err := m.RequestHeaders.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimit_Action_RemoteAddress_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_RemoteAddress_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RemoteAddress != nil {\n\t\tsize, err := m.RemoteAddress.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimit_Action_GenericKey_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_GenericKey_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.GenericKey != nil {\n\t\tsize, err := m.GenericKey.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimit_Action_HeaderValueMatch_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_HeaderValueMatch_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.HeaderValueMatch != nil {\n\t\tsize, err := m.HeaderValueMatch.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimit_Action_DynamicMetadata) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_DynamicMetadata) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.DynamicMetadata != nil {\n\t\tsize, err := m.DynamicMetadata.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimit_Action_Metadata) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_Metadata) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Metadata != nil {\n\t\tsize, err := m.Metadata.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimit_Action_Extension) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_Extension) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Extension != nil {\n\t\tif vtmsg, ok := interface{}(m.Extension).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Extension)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimit_Action_MaskedRemoteAddress_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_MaskedRemoteAddress_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.MaskedRemoteAddress != nil {\n\t\tsize, err := m.MaskedRemoteAddress.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x52\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x52\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimit_Action_QueryParameterValueMatch_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_QueryParameterValueMatch_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.QueryParameterValueMatch != nil {\n\t\tsize, err := m.QueryParameterValueMatch.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimit_Action_QueryParameters_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Action_QueryParameters_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.QueryParameters != nil {\n\t\tsize, err := m.QueryParameters.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x62\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x62\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimit_Override_DynamicMetadata) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_Override_DynamicMetadata) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Override_DynamicMetadata) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.MetadataKey != nil {\n\t\tif vtmsg, ok := interface{}(m.MetadataKey).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.MetadataKey)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Override) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_Override) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Override) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.OverrideSpecifier.(*RateLimit_Override_DynamicMetadata_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit_Override_DynamicMetadata_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_Override_DynamicMetadata_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.DynamicMetadata != nil {\n\t\tsize, err := m.DynamicMetadata.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimit_HitsAddend) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit_HitsAddend) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit_HitsAddend) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Format) > 0 {\n\t\ti -= len(m.Format)\n\t\tcopy(dAtA[i:], m.Format)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Format)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Number != nil {\n\t\tsize, err := (*wrapperspb.UInt64Value)(m.Number).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimit) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimit) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimit) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.ApplyOnStreamDone {\n\t\ti--\n\t\tif m.ApplyOnStreamDone {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif m.HitsAddend != nil {\n\t\tsize, err := m.HitsAddend.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.Limit != nil {\n\t\tsize, err := m.Limit.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.Actions) > 0 {\n\t\tfor iNdEx := len(m.Actions) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Actions[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.DisableKey) > 0 {\n\t\ti -= len(m.DisableKey)\n\t\tcopy(dAtA[i:], m.DisableKey)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DisableKey)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Stage != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.Stage).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HeaderMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HeaderMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.TreatMissingHeaderAsEmpty {\n\t\ti--\n\t\tif m.TreatMissingHeaderAsEmpty {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x70\n\t}\n\tif msg, ok := m.HeaderMatchSpecifier.(*HeaderMatcher_StringMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.HeaderMatchSpecifier.(*HeaderMatcher_ContainsMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.HeaderMatchSpecifier.(*HeaderMatcher_SafeRegexMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.HeaderMatchSpecifier.(*HeaderMatcher_SuffixMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.HeaderMatchSpecifier.(*HeaderMatcher_PrefixMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.InvertMatch {\n\t\ti--\n\t\tif m.InvertMatch {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x40\n\t}\n\tif msg, ok := m.HeaderMatchSpecifier.(*HeaderMatcher_PresentMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.HeaderMatchSpecifier.(*HeaderMatcher_RangeMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.HeaderMatchSpecifier.(*HeaderMatcher_ExactMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HeaderMatcher_ExactMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMatcher_ExactMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.ExactMatch)\n\tcopy(dAtA[i:], m.ExactMatch)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ExactMatch)))\n\ti--\n\tdAtA[i] = 0x22\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HeaderMatcher_RangeMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMatcher_RangeMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RangeMatch != nil {\n\t\tif vtmsg, ok := interface{}(m.RangeMatch).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.RangeMatch)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HeaderMatcher_PresentMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMatcher_PresentMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti--\n\tif m.PresentMatch {\n\t\tdAtA[i] = 1\n\t} else {\n\t\tdAtA[i] = 0\n\t}\n\ti--\n\tdAtA[i] = 0x38\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HeaderMatcher_PrefixMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMatcher_PrefixMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.PrefixMatch)\n\tcopy(dAtA[i:], m.PrefixMatch)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PrefixMatch)))\n\ti--\n\tdAtA[i] = 0x4a\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HeaderMatcher_SuffixMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMatcher_SuffixMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.SuffixMatch)\n\tcopy(dAtA[i:], m.SuffixMatch)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SuffixMatch)))\n\ti--\n\tdAtA[i] = 0x52\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HeaderMatcher_SafeRegexMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMatcher_SafeRegexMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.SafeRegexMatch != nil {\n\t\tif vtmsg, ok := interface{}(m.SafeRegexMatch).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.SafeRegexMatch)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HeaderMatcher_ContainsMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMatcher_ContainsMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.ContainsMatch)\n\tcopy(dAtA[i:], m.ContainsMatch)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ContainsMatch)))\n\ti--\n\tdAtA[i] = 0x62\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HeaderMatcher_StringMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HeaderMatcher_StringMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.StringMatch != nil {\n\t\tif vtmsg, ok := interface{}(m.StringMatch).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.StringMatch)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x6a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x6a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *QueryParameterMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryParameterMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *QueryParameterMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.QueryParameterMatchSpecifier.(*QueryParameterMatcher_PresentMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.QueryParameterMatchSpecifier.(*QueryParameterMatcher_StringMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryParameterMatcher_StringMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *QueryParameterMatcher_StringMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.StringMatch != nil {\n\t\tif vtmsg, ok := interface{}(m.StringMatch).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.StringMatch)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *QueryParameterMatcher_PresentMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *QueryParameterMatcher_PresentMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti--\n\tif m.PresentMatch {\n\t\tdAtA[i] = 1\n\t} else {\n\t\tdAtA[i] = 0\n\t}\n\ti--\n\tdAtA[i] = 0x30\n\treturn len(dAtA) - i, nil\n}\nfunc (m *CookieMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CookieMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CookieMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.InvertMatch {\n\t\ti--\n\t\tif m.InvertMatch {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.StringMatch != nil {\n\t\tif vtmsg, ok := interface{}(m.StringMatch).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.StringMatch)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *InternalRedirectPolicy) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *InternalRedirectPolicy) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *InternalRedirectPolicy) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.ResponseHeadersToCopy) > 0 {\n\t\tfor iNdEx := len(m.ResponseHeadersToCopy) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.ResponseHeadersToCopy[iNdEx])\n\t\t\tcopy(dAtA[i:], m.ResponseHeadersToCopy[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ResponseHeadersToCopy[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif m.AllowCrossSchemeRedirect {\n\t\ti--\n\t\tif m.AllowCrossSchemeRedirect {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif len(m.Predicates) > 0 {\n\t\tfor iNdEx := len(m.Predicates) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.Predicates[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.Predicates[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.RedirectResponseCodes) > 0 {\n\t\tvar pksize2 int\n\t\tfor _, num := range m.RedirectResponseCodes {\n\t\t\tpksize2 += protohelpers.SizeOfVarint(uint64(num))\n\t\t}\n\t\ti -= pksize2\n\t\tj1 := i\n\t\tfor _, num := range m.RedirectResponseCodes {\n\t\t\tfor num >= 1<<7 {\n\t\t\t\tdAtA[j1] = uint8(uint64(num)&0x7f | 0x80)\n\t\t\t\tnum >>= 7\n\t\t\t\tj1++\n\t\t\t}\n\t\t\tdAtA[j1] = uint8(num)\n\t\t\tj1++\n\t\t}\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(pksize2))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.MaxInternalRedirects != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxInternalRedirects).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *FilterConfig) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *FilterConfig) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *FilterConfig) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Disabled {\n\t\ti--\n\t\tif m.Disabled {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.IsOptional {\n\t\ti--\n\t\tif m.IsOptional {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Config != nil {\n\t\tsize, err := (*anypb.Any)(m.Config).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *VirtualHost) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.Domains) > 0 {\n\t\tfor _, s := range m.Domains {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.Routes) > 0 {\n\t\tfor _, e := range m.Routes {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.RequireTls != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.RequireTls))\n\t}\n\tif len(m.VirtualClusters) > 0 {\n\t\tfor _, e := range m.VirtualClusters {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.RateLimits) > 0 {\n\t\tfor _, e := range m.RateLimits {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.RequestHeadersToAdd) > 0 {\n\t\tfor _, e := range m.RequestHeadersToAdd {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.Cors != nil {\n\t\tl = m.Cors.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.ResponseHeadersToAdd) > 0 {\n\t\tfor _, e := range m.ResponseHeadersToAdd {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToRemove) > 0 {\n\t\tfor _, s := range m.ResponseHeadersToRemove {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.RequestHeadersToRemove) > 0 {\n\t\tfor _, s := range m.RequestHeadersToRemove {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.IncludeRequestAttemptCount {\n\t\tn += 2\n\t}\n\tif len(m.TypedPerFilterConfig) > 0 {\n\t\tfor k, v := range m.TypedPerFilterConfig {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tl = 0\n\t\t\tif v != nil {\n\t\t\t\tl = (*anypb.Any)(v).SizeVT()\n\t\t\t}\n\t\t\tl += 1 + protohelpers.SizeOfVarint(uint64(l))\n\t\t\tmapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + l\n\t\t\tn += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))\n\t\t}\n\t}\n\tif m.RetryPolicy != nil {\n\t\tl = m.RetryPolicy.SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.HedgePolicy != nil {\n\t\tl = m.HedgePolicy.SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.PerRequestBufferLimitBytes != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.PerRequestBufferLimitBytes).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.IncludeAttemptCountInResponse {\n\t\tn += 3\n\t}\n\tif m.RetryPolicyTypedConfig != nil {\n\t\tl = (*anypb.Any)(m.RetryPolicyTypedConfig).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Matcher != nil {\n\t\tif size, ok := interface{}(m.Matcher).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Matcher)\n\t\t}\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.RequestMirrorPolicies) > 0 {\n\t\tfor _, e := range m.RequestMirrorPolicies {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.IncludeIsTimeoutRetryHeader {\n\t\tn += 3\n\t}\n\tif m.Metadata != nil {\n\t\tif size, ok := interface{}(m.Metadata).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Metadata)\n\t\t}\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.RequestBodyBufferLimit != nil {\n\t\tl = (*wrapperspb.UInt64Value)(m.RequestBodyBufferLimit).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *FilterAction) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Action != nil {\n\t\tl = (*anypb.Any)(m.Action).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteList) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Routes) > 0 {\n\t\tfor _, e := range m.Routes {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Route) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Match != nil {\n\t\tl = m.Match.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.Action.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.Metadata != nil {\n\t\tif size, ok := interface{}(m.Metadata).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Metadata)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Decorator != nil {\n\t\tl = m.Decorator.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.RequestHeadersToAdd) > 0 {\n\t\tfor _, e := range m.RequestHeadersToAdd {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToAdd) > 0 {\n\t\tfor _, e := range m.ResponseHeadersToAdd {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToRemove) > 0 {\n\t\tfor _, s := range m.ResponseHeadersToRemove {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.RequestHeadersToRemove) > 0 {\n\t\tfor _, s := range m.RequestHeadersToRemove {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.TypedPerFilterConfig) > 0 {\n\t\tfor k, v := range m.TypedPerFilterConfig {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tl = 0\n\t\t\tif v != nil {\n\t\t\t\tl = (*anypb.Any)(v).SizeVT()\n\t\t\t}\n\t\t\tl += 1 + protohelpers.SizeOfVarint(uint64(l))\n\t\t\tmapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + l\n\t\t\tn += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))\n\t\t}\n\t}\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Tracing != nil {\n\t\tl = m.Tracing.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.PerRequestBufferLimitBytes != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.PerRequestBufferLimitBytes).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.StatPrefix)\n\tif l > 0 {\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.RequestBodyBufferLimit != nil {\n\t\tl = (*wrapperspb.UInt64Value)(m.RequestBodyBufferLimit).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Route_Route) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Route != nil {\n\t\tl = m.Route.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *Route_Redirect) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Redirect != nil {\n\t\tl = m.Redirect.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *Route_DirectResponse) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.DirectResponse != nil {\n\t\tl = m.DirectResponse.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *Route_FilterAction) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.FilterAction != nil {\n\t\tl = m.FilterAction.SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 3\n\t}\n\treturn n\n}\nfunc (m *Route_NonForwardingAction) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.NonForwardingAction != nil {\n\t\tl = m.NonForwardingAction.SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 3\n\t}\n\treturn n\n}\nfunc (m *WeightedCluster_ClusterWeight) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Weight != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.Weight).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MetadataMatch != nil {\n\t\tif size, ok := interface{}(m.MetadataMatch).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.MetadataMatch)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.RequestHeadersToAdd) > 0 {\n\t\tfor _, e := range m.RequestHeadersToAdd {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToAdd) > 0 {\n\t\tfor _, e := range m.ResponseHeadersToAdd {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToRemove) > 0 {\n\t\tfor _, s := range m.ResponseHeadersToRemove {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.RequestHeadersToRemove) > 0 {\n\t\tfor _, s := range m.RequestHeadersToRemove {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.TypedPerFilterConfig) > 0 {\n\t\tfor k, v := range m.TypedPerFilterConfig {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tl = 0\n\t\t\tif v != nil {\n\t\t\t\tl = (*anypb.Any)(v).SizeVT()\n\t\t\t}\n\t\t\tl += 1 + protohelpers.SizeOfVarint(uint64(l))\n\t\t\tmapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + l\n\t\t\tn += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))\n\t\t}\n\t}\n\tif vtmsg, ok := m.HostRewriteSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tl = len(m.ClusterHeader)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *WeightedCluster_ClusterWeight_HostRewriteLiteral) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.HostRewriteLiteral)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *WeightedCluster) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Clusters) > 0 {\n\t\tfor _, e := range m.Clusters {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tl = len(m.RuntimeKeyPrefix)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.TotalWeight != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.TotalWeight).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.RandomValueSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *WeightedCluster_HeaderName) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.HeaderName)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *WeightedCluster_UseHashPolicy) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.UseHashPolicy != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.UseHashPolicy).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *ClusterSpecifierPlugin) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Extension != nil {\n\t\tif size, ok := interface{}(m.Extension).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Extension)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.IsOptional {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteMatch_GrpcRouteMatchOptions) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteMatch_TlsContextMatchOptions) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Presented != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.Presented).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Validated != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.Validated).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteMatch_ConnectMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.PathSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.CaseSensitive != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.CaseSensitive).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.Headers) > 0 {\n\t\tfor _, e := range m.Headers {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.QueryParameters) > 0 {\n\t\tfor _, e := range m.QueryParameters {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.Grpc != nil {\n\t\tl = m.Grpc.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.RuntimeFraction != nil {\n\t\tif size, ok := interface{}(m.RuntimeFraction).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.RuntimeFraction)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.TlsContext != nil {\n\t\tl = m.TlsContext.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.DynamicMetadata) > 0 {\n\t\tfor _, e := range m.DynamicMetadata {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.FilterState) > 0 {\n\t\tfor _, e := range m.FilterState {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.Cookies) > 0 {\n\t\tfor _, e := range m.Cookies {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteMatch_Prefix) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Prefix)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *RouteMatch_Path) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Path)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *RouteMatch_SafeRegex) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.SafeRegex != nil {\n\t\tif size, ok := interface{}(m.SafeRegex).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.SafeRegex)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RouteMatch_ConnectMatcher_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ConnectMatcher != nil {\n\t\tl = m.ConnectMatcher.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RouteMatch_PathSeparatedPrefix) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.PathSeparatedPrefix)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *RouteMatch_PathMatchPolicy) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.PathMatchPolicy != nil {\n\t\tif size, ok := interface{}(m.PathMatchPolicy).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.PathMatchPolicy)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *CorsPolicy) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.AllowMethods)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.AllowHeaders)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.ExposeHeaders)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.MaxAge)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.AllowCredentials != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.AllowCredentials).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.EnabledSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.ShadowEnabled != nil {\n\t\tif size, ok := interface{}(m.ShadowEnabled).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.ShadowEnabled)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.AllowOriginStringMatch) > 0 {\n\t\tfor _, e := range m.AllowOriginStringMatch {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.AllowPrivateNetworkAccess != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.AllowPrivateNetworkAccess).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ForwardNotMatchingPreflights != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.ForwardNotMatchingPreflights).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *CorsPolicy_FilterEnabled) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.FilterEnabled != nil {\n\t\tif size, ok := interface{}(m.FilterEnabled).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.FilterEnabled)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RouteAction_RequestMirrorPolicy) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Cluster)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.RuntimeFraction != nil {\n\t\tif size, ok := interface{}(m.RuntimeFraction).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.RuntimeFraction)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.TraceSampled != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.TraceSampled).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.ClusterHeader)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.DisableShadowHostSuffixAppend {\n\t\tn += 2\n\t}\n\tif len(m.RequestHeadersMutations) > 0 {\n\t\tfor _, e := range m.RequestHeadersMutations {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tl = len(m.HostRewriteLiteral)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteAction_HashPolicy_Header) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.HeaderName)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.RegexRewrite != nil {\n\t\tif size, ok := interface{}(m.RegexRewrite).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.RegexRewrite)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteAction_HashPolicy_CookieAttribute) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Value)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteAction_HashPolicy_Cookie) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Ttl != nil {\n\t\tl = (*durationpb.Duration)(m.Ttl).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Path)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.Attributes) > 0 {\n\t\tfor _, e := range m.Attributes {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteAction_HashPolicy_ConnectionProperties) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.SourceIp {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteAction_HashPolicy_QueryParameter) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteAction_HashPolicy_FilterState) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteAction_HashPolicy) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.PolicySpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.Terminal {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteAction_HashPolicy_Header_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RouteAction_HashPolicy_Cookie_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Cookie != nil {\n\t\tl = m.Cookie.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RouteAction_HashPolicy_ConnectionProperties_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ConnectionProperties != nil {\n\t\tl = m.ConnectionProperties.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RouteAction_HashPolicy_QueryParameter_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.QueryParameter != nil {\n\t\tl = m.QueryParameter.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RouteAction_HashPolicy_FilterState_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.FilterState != nil {\n\t\tl = m.FilterState.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RouteAction_UpgradeConfig_ConnectConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ProxyProtocolConfig != nil {\n\t\tif size, ok := interface{}(m.ProxyProtocolConfig).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.ProxyProtocolConfig)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.AllowPost {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteAction_UpgradeConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.UpgradeType)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Enabled != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.Enabled).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ConnectConfig != nil {\n\t\tl = m.ConnectConfig.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteAction_MaxStreamDuration) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MaxStreamDuration != nil {\n\t\tl = (*durationpb.Duration)(m.MaxStreamDuration).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.GrpcTimeoutHeaderMax != nil {\n\t\tl = (*durationpb.Duration)(m.GrpcTimeoutHeaderMax).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.GrpcTimeoutHeaderOffset != nil {\n\t\tl = (*durationpb.Duration)(m.GrpcTimeoutHeaderOffset).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteAction) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.ClusterSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.MetadataMatch != nil {\n\t\tif size, ok := interface{}(m.MetadataMatch).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.MetadataMatch)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.PrefixRewrite)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.HostRewriteSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.Timeout != nil {\n\t\tl = (*durationpb.Duration)(m.Timeout).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.RetryPolicy != nil {\n\t\tl = m.RetryPolicy.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Priority != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Priority))\n\t}\n\tif len(m.RateLimits) > 0 {\n\t\tfor _, e := range m.RateLimits {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.IncludeVhRateLimits != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.IncludeVhRateLimits).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.HashPolicy) > 0 {\n\t\tfor _, e := range m.HashPolicy {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.Cors != nil {\n\t\tl = m.Cors.SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ClusterNotFoundResponseCode != 0 {\n\t\tn += 2 + protohelpers.SizeOfVarint(uint64(m.ClusterNotFoundResponseCode))\n\t}\n\tif m.MaxGrpcTimeout != nil {\n\t\tl = (*durationpb.Duration)(m.MaxGrpcTimeout).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.IdleTimeout != nil {\n\t\tl = (*durationpb.Duration)(m.IdleTimeout).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.UpgradeConfigs) > 0 {\n\t\tfor _, e := range m.UpgradeConfigs {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.InternalRedirectAction != 0 {\n\t\tn += 2 + protohelpers.SizeOfVarint(uint64(m.InternalRedirectAction))\n\t}\n\tif m.HedgePolicy != nil {\n\t\tl = m.HedgePolicy.SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.GrpcTimeoutOffset != nil {\n\t\tl = (*durationpb.Duration)(m.GrpcTimeoutOffset).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.RequestMirrorPolicies) > 0 {\n\t\tfor _, e := range m.RequestMirrorPolicies {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.MaxInternalRedirects != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxInternalRedirects).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.RegexRewrite != nil {\n\t\tif size, ok := interface{}(m.RegexRewrite).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.RegexRewrite)\n\t\t}\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.RetryPolicyTypedConfig != nil {\n\t\tl = (*anypb.Any)(m.RetryPolicyTypedConfig).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.InternalRedirectPolicy != nil {\n\t\tl = m.InternalRedirectPolicy.SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxStreamDuration != nil {\n\t\tl = m.MaxStreamDuration.SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.AppendXForwardedHost {\n\t\tn += 3\n\t}\n\tif m.EarlyDataPolicy != nil {\n\t\tif size, ok := interface{}(m.EarlyDataPolicy).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.EarlyDataPolicy)\n\t\t}\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.PathRewritePolicy != nil {\n\t\tif size, ok := interface{}(m.PathRewritePolicy).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.PathRewritePolicy)\n\t\t}\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.FlushTimeout != nil {\n\t\tl = (*durationpb.Duration)(m.FlushTimeout).SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.PathRewrite)\n\tif l > 0 {\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RouteAction_Cluster) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Cluster)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *RouteAction_ClusterHeader) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.ClusterHeader)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *RouteAction_WeightedClusters) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.WeightedClusters != nil {\n\t\tl = m.WeightedClusters.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RouteAction_HostRewriteLiteral) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.HostRewriteLiteral)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *RouteAction_AutoHostRewrite) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.AutoHostRewrite != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.AutoHostRewrite).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RouteAction_HostRewriteHeader) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.HostRewriteHeader)\n\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *RouteAction_HostRewritePathRegex) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.HostRewritePathRegex != nil {\n\t\tif size, ok := interface{}(m.HostRewritePathRegex).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.HostRewritePathRegex)\n\t\t}\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 3\n\t}\n\treturn n\n}\nfunc (m *RouteAction_ClusterSpecifierPlugin) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.ClusterSpecifierPlugin)\n\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *RouteAction_InlineClusterSpecifierPlugin) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.InlineClusterSpecifierPlugin != nil {\n\t\tl = m.InlineClusterSpecifierPlugin.SizeVT()\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 3\n\t}\n\treturn n\n}\nfunc (m *RouteAction_HostRewrite) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.HostRewrite)\n\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *RetryPolicy_RetryPriority) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.ConfigType.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RetryPolicy_RetryPriority_TypedConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.TypedConfig != nil {\n\t\tl = (*anypb.Any)(m.TypedConfig).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RetryPolicy_RetryHostPredicate) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.ConfigType.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RetryPolicy_RetryHostPredicate_TypedConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.TypedConfig != nil {\n\t\tl = (*anypb.Any)(m.TypedConfig).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RetryPolicy_RetryBackOff) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.BaseInterval != nil {\n\t\tl = (*durationpb.Duration)(m.BaseInterval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MaxInterval != nil {\n\t\tl = (*durationpb.Duration)(m.MaxInterval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RetryPolicy_ResetHeader) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Format != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Format))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RetryPolicy_RateLimitedRetryBackOff) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.ResetHeaders) > 0 {\n\t\tfor _, e := range m.ResetHeaders {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.MaxInterval != nil {\n\t\tl = (*durationpb.Duration)(m.MaxInterval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RetryPolicy) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.RetryOn)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.NumRetries != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.NumRetries).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.PerTryTimeout != nil {\n\t\tl = (*durationpb.Duration)(m.PerTryTimeout).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.RetryPriority != nil {\n\t\tl = m.RetryPriority.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.RetryHostPredicate) > 0 {\n\t\tfor _, e := range m.RetryHostPredicate {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.HostSelectionRetryMaxAttempts != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.HostSelectionRetryMaxAttempts))\n\t}\n\tif len(m.RetriableStatusCodes) > 0 {\n\t\tl = 0\n\t\tfor _, e := range m.RetriableStatusCodes {\n\t\t\tl += protohelpers.SizeOfVarint(uint64(e))\n\t\t}\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(l)) + l\n\t}\n\tif m.RetryBackOff != nil {\n\t\tl = m.RetryBackOff.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.RetriableHeaders) > 0 {\n\t\tfor _, e := range m.RetriableHeaders {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.RetriableRequestHeaders) > 0 {\n\t\tfor _, e := range m.RetriableRequestHeaders {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.RateLimitedRetryBackOff != nil {\n\t\tl = m.RateLimitedRetryBackOff.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.RetryOptionsPredicates) > 0 {\n\t\tfor _, e := range m.RetryOptionsPredicates {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.PerTryIdleTimeout != nil {\n\t\tl = (*durationpb.Duration)(m.PerTryIdleTimeout).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HedgePolicy) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.InitialRequests != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.InitialRequests).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.AdditionalRequestChance != nil {\n\t\tif size, ok := interface{}(m.AdditionalRequestChance).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.AdditionalRequestChance)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.HedgeOnPerTryTimeout {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RedirectAction) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.HostRedirect)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.PathRewriteSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.ResponseCode != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.ResponseCode))\n\t}\n\tif vtmsg, ok := m.SchemeRewriteSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.StripQuery {\n\t\tn += 2\n\t}\n\tif m.PortRedirect != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.PortRedirect))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RedirectAction_PathRedirect) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.PathRedirect)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *RedirectAction_HttpsRedirect) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 2\n\treturn n\n}\nfunc (m *RedirectAction_PrefixRewrite) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.PrefixRewrite)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *RedirectAction_SchemeRedirect) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.SchemeRedirect)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *RedirectAction_RegexRewrite) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RegexRewrite != nil {\n\t\tif size, ok := interface{}(m.RegexRewrite).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.RegexRewrite)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *DirectResponseAction) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Status != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Status))\n\t}\n\tif m.Body != nil {\n\t\tif size, ok := interface{}(m.Body).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Body)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.BodyFormat != nil {\n\t\tif size, ok := interface{}(m.BodyFormat).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.BodyFormat)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *NonForwardingAction) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Decorator) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Operation)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Propagate != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.Propagate).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Tracing) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ClientSampling != nil {\n\t\tif size, ok := interface{}(m.ClientSampling).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.ClientSampling)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.RandomSampling != nil {\n\t\tif size, ok := interface{}(m.RandomSampling).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.RandomSampling)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.OverallSampling != nil {\n\t\tif size, ok := interface{}(m.OverallSampling).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.OverallSampling)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.CustomTags) > 0 {\n\t\tfor _, e := range m.CustomTags {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tl = len(m.Operation)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.UpstreamOperation)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *VirtualCluster) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.Headers) > 0 {\n\t\tfor _, e := range m.Headers {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Action_SourceCluster) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Action_DestinationCluster) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Action_RequestHeaders) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.HeaderName)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.DescriptorKey)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.SkipIfAbsent {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Action_QueryParameters) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.QueryParameterName)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.DescriptorKey)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.SkipIfAbsent {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Action_RemoteAddress) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Action_MaskedRemoteAddress) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.V4PrefixMaskLen != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.V4PrefixMaskLen).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.V6PrefixMaskLen != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.V6PrefixMaskLen).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Action_GenericKey) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DescriptorValue)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.DescriptorKey)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.DefaultValue)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Action_HeaderValueMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DescriptorValue)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ExpectMatch != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.ExpectMatch).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.Headers) > 0 {\n\t\tfor _, e := range m.Headers {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tl = len(m.DescriptorKey)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.DefaultValue)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Action_DynamicMetaData) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DescriptorKey)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MetadataKey != nil {\n\t\tif size, ok := interface{}(m.MetadataKey).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.MetadataKey)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.DefaultValue)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Action_MetaData) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DescriptorKey)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MetadataKey != nil {\n\t\tif size, ok := interface{}(m.MetadataKey).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.MetadataKey)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.DefaultValue)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Source != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Source))\n\t}\n\tif m.SkipIfAbsent {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Action_QueryParameterValueMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DescriptorValue)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ExpectMatch != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.ExpectMatch).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.QueryParameters) > 0 {\n\t\tfor _, e := range m.QueryParameters {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tl = len(m.DescriptorKey)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.DefaultValue)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Action) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.ActionSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Action_SourceCluster_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.SourceCluster != nil {\n\t\tl = m.SourceCluster.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RateLimit_Action_DestinationCluster_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.DestinationCluster != nil {\n\t\tl = m.DestinationCluster.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RateLimit_Action_RequestHeaders_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RequestHeaders != nil {\n\t\tl = m.RequestHeaders.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RateLimit_Action_RemoteAddress_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RemoteAddress != nil {\n\t\tl = m.RemoteAddress.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RateLimit_Action_GenericKey_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.GenericKey != nil {\n\t\tl = m.GenericKey.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RateLimit_Action_HeaderValueMatch_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.HeaderValueMatch != nil {\n\t\tl = m.HeaderValueMatch.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RateLimit_Action_DynamicMetadata) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.DynamicMetadata != nil {\n\t\tl = m.DynamicMetadata.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RateLimit_Action_Metadata) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Metadata != nil {\n\t\tl = m.Metadata.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RateLimit_Action_Extension) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Extension != nil {\n\t\tif size, ok := interface{}(m.Extension).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Extension)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RateLimit_Action_MaskedRemoteAddress_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MaskedRemoteAddress != nil {\n\t\tl = m.MaskedRemoteAddress.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RateLimit_Action_QueryParameterValueMatch_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.QueryParameterValueMatch != nil {\n\t\tl = m.QueryParameterValueMatch.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RateLimit_Action_QueryParameters_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.QueryParameters != nil {\n\t\tl = m.QueryParameters.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RateLimit_Override_DynamicMetadata) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MetadataKey != nil {\n\t\tif size, ok := interface{}(m.MetadataKey).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.MetadataKey)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Override) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.OverrideSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit_Override_DynamicMetadata_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.DynamicMetadata != nil {\n\t\tl = m.DynamicMetadata.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RateLimit_HitsAddend) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Number != nil {\n\t\tl = (*wrapperspb.UInt64Value)(m.Number).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Format)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimit) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Stage != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.Stage).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.DisableKey)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.Actions) > 0 {\n\t\tfor _, e := range m.Actions {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.Limit != nil {\n\t\tl = m.Limit.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.HitsAddend != nil {\n\t\tl = m.HitsAddend.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ApplyOnStreamDone {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HeaderMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.HeaderMatchSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.InvertMatch {\n\t\tn += 2\n\t}\n\tif m.TreatMissingHeaderAsEmpty {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HeaderMatcher_ExactMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.ExactMatch)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *HeaderMatcher_RangeMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RangeMatch != nil {\n\t\tif size, ok := interface{}(m.RangeMatch).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.RangeMatch)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *HeaderMatcher_PresentMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 2\n\treturn n\n}\nfunc (m *HeaderMatcher_PrefixMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.PrefixMatch)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *HeaderMatcher_SuffixMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.SuffixMatch)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *HeaderMatcher_SafeRegexMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.SafeRegexMatch != nil {\n\t\tif size, ok := interface{}(m.SafeRegexMatch).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.SafeRegexMatch)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *HeaderMatcher_ContainsMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.ContainsMatch)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *HeaderMatcher_StringMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.StringMatch != nil {\n\t\tif size, ok := interface{}(m.StringMatch).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.StringMatch)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *QueryParameterMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.QueryParameterMatchSpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *QueryParameterMatcher_StringMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.StringMatch != nil {\n\t\tif size, ok := interface{}(m.StringMatch).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.StringMatch)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *QueryParameterMatcher_PresentMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 2\n\treturn n\n}\nfunc (m *CookieMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.StringMatch != nil {\n\t\tif size, ok := interface{}(m.StringMatch).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.StringMatch)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.InvertMatch {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *InternalRedirectPolicy) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MaxInternalRedirects != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxInternalRedirects).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.RedirectResponseCodes) > 0 {\n\t\tl = 0\n\t\tfor _, e := range m.RedirectResponseCodes {\n\t\t\tl += protohelpers.SizeOfVarint(uint64(e))\n\t\t}\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(l)) + l\n\t}\n\tif len(m.Predicates) > 0 {\n\t\tfor _, e := range m.Predicates {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.AllowCrossSchemeRedirect {\n\t\tn += 2\n\t}\n\tif len(m.ResponseHeadersToCopy) > 0 {\n\t\tfor _, s := range m.ResponseHeadersToCopy {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *FilterConfig) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Config != nil {\n\t\tl = (*anypb.Any)(m.Config).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.IsOptional {\n\t\tn += 2\n\t}\n\tif m.Disabled {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/route/v3/route_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/route/v3/route.proto\n\npackage routev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tanypb \"github.com/planetscale/vtprotobuf/types/known/anypb\"\n\twrapperspb \"github.com/planetscale/vtprotobuf/types/known/wrapperspb\"\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *RouteConfiguration) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RouteConfiguration) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RouteConfiguration) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.VhostHeader) > 0 {\n\t\ti -= len(m.VhostHeader)\n\t\tcopy(dAtA[i:], m.VhostHeader)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.VhostHeader)))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x92\n\t}\n\tif m.Metadata != nil {\n\t\tif vtmsg, ok := interface{}(m.Metadata).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Metadata)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x8a\n\t}\n\tif len(m.TypedPerFilterConfig) > 0 {\n\t\tfor k := range m.TypedPerFilterConfig {\n\t\t\tv := m.TypedPerFilterConfig[k]\n\t\t\tbaseI := i\n\t\t\tsize, err := (*anypb.Any)(v).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1\n\t\t\ti--\n\t\t\tdAtA[i] = 0x82\n\t\t}\n\t}\n\tif m.IgnorePathParametersInPathMatching {\n\t\ti--\n\t\tif m.IgnorePathParametersInPathMatching {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x78\n\t}\n\tif m.IgnorePortInHostMatching {\n\t\ti--\n\t\tif m.IgnorePortInHostMatching {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x70\n\t}\n\tif len(m.RequestMirrorPolicies) > 0 {\n\t\tfor iNdEx := len(m.RequestMirrorPolicies) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.RequestMirrorPolicies[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x6a\n\t\t}\n\t}\n\tif len(m.ClusterSpecifierPlugins) > 0 {\n\t\tfor iNdEx := len(m.ClusterSpecifierPlugins) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.ClusterSpecifierPlugins[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x62\n\t\t}\n\t}\n\tif m.MaxDirectResponseBodySizeBytes != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxDirectResponseBodySizeBytes).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t}\n\tif m.MostSpecificHeaderMutationsWins {\n\t\ti--\n\t\tif m.MostSpecificHeaderMutationsWins {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x50\n\t}\n\tif m.Vhds != nil {\n\t\tsize, err := m.Vhds.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t}\n\tif len(m.RequestHeadersToRemove) > 0 {\n\t\tfor iNdEx := len(m.RequestHeadersToRemove) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.RequestHeadersToRemove[iNdEx])\n\t\t\tcopy(dAtA[i:], m.RequestHeadersToRemove[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RequestHeadersToRemove[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t}\n\tif m.ValidateClusters != nil {\n\t\tsize, err := (*wrapperspb.BoolValue)(m.ValidateClusters).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif len(m.RequestHeadersToAdd) > 0 {\n\t\tfor iNdEx := len(m.RequestHeadersToAdd) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.RequestHeadersToAdd[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.RequestHeadersToAdd[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToRemove) > 0 {\n\t\tfor iNdEx := len(m.ResponseHeadersToRemove) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.ResponseHeadersToRemove[iNdEx])\n\t\t\tcopy(dAtA[i:], m.ResponseHeadersToRemove[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ResponseHeadersToRemove[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToAdd) > 0 {\n\t\tfor iNdEx := len(m.ResponseHeadersToAdd) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.ResponseHeadersToAdd[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.ResponseHeadersToAdd[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.InternalOnlyHeaders) > 0 {\n\t\tfor iNdEx := len(m.InternalOnlyHeaders) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.InternalOnlyHeaders[iNdEx])\n\t\t\tcopy(dAtA[i:], m.InternalOnlyHeaders[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.InternalOnlyHeaders[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.VirtualHosts) > 0 {\n\t\tfor iNdEx := len(m.VirtualHosts) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.VirtualHosts[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Vhds) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Vhds) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Vhds) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.ConfigSource != nil {\n\t\tif vtmsg, ok := interface{}(m.ConfigSource).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.ConfigSource)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RouteConfiguration) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.VirtualHosts) > 0 {\n\t\tfor _, e := range m.VirtualHosts {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.InternalOnlyHeaders) > 0 {\n\t\tfor _, s := range m.InternalOnlyHeaders {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToAdd) > 0 {\n\t\tfor _, e := range m.ResponseHeadersToAdd {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.ResponseHeadersToRemove) > 0 {\n\t\tfor _, s := range m.ResponseHeadersToRemove {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.RequestHeadersToAdd) > 0 {\n\t\tfor _, e := range m.RequestHeadersToAdd {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.ValidateClusters != nil {\n\t\tl = (*wrapperspb.BoolValue)(m.ValidateClusters).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.RequestHeadersToRemove) > 0 {\n\t\tfor _, s := range m.RequestHeadersToRemove {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.Vhds != nil {\n\t\tl = m.Vhds.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MostSpecificHeaderMutationsWins {\n\t\tn += 2\n\t}\n\tif m.MaxDirectResponseBodySizeBytes != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxDirectResponseBodySizeBytes).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.ClusterSpecifierPlugins) > 0 {\n\t\tfor _, e := range m.ClusterSpecifierPlugins {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.RequestMirrorPolicies) > 0 {\n\t\tfor _, e := range m.RequestMirrorPolicies {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.IgnorePortInHostMatching {\n\t\tn += 2\n\t}\n\tif m.IgnorePathParametersInPathMatching {\n\t\tn += 2\n\t}\n\tif len(m.TypedPerFilterConfig) > 0 {\n\t\tfor k, v := range m.TypedPerFilterConfig {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tl = 0\n\t\t\tif v != nil {\n\t\t\t\tl = (*anypb.Any)(v).SizeVT()\n\t\t\t}\n\t\t\tl += 1 + protohelpers.SizeOfVarint(uint64(l))\n\t\t\tmapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + l\n\t\t\tn += mapEntrySize + 2 + protohelpers.SizeOfVarint(uint64(mapEntrySize))\n\t\t}\n\t}\n\tif m.Metadata != nil {\n\t\tif size, ok := interface{}(m.Metadata).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Metadata)\n\t\t}\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.VhostHeader)\n\tif l > 0 {\n\t\tn += 2 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Vhds) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ConfigSource != nil {\n\t\tif size, ok := interface{}(m.ConfigSource).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.ConfigSource)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/route/v3/scoped_route.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/config/route/v3/scoped_route.proto\n\npackage routev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Specifies a routing scope, which associates a\n// :ref:`Key<envoy_v3_api_msg_config.route.v3.ScopedRouteConfiguration.Key>` to a\n// :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`.\n// The :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration` can be obtained dynamically\n// via RDS (:ref:`route_configuration_name<envoy_v3_api_field_config.route.v3.ScopedRouteConfiguration.route_configuration_name>`)\n// or specified inline (:ref:`route_configuration<envoy_v3_api_field_config.route.v3.ScopedRouteConfiguration.route_configuration>`).\n//\n// The HTTP connection manager builds up a table consisting of these Key to\n// RouteConfiguration mappings, and looks up the RouteConfiguration to use per\n// request according to the algorithm specified in the\n// :ref:`scope_key_builder<envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.ScopedRoutes.scope_key_builder>`\n// assigned to the HttpConnectionManager.\n//\n// For example, with the following configurations (in YAML):\n//\n// HttpConnectionManager config:\n//\n// .. code::\n//\n//\t...\n//\tscoped_routes:\n//\t  name: foo-scoped-routes\n//\t  scope_key_builder:\n//\t    fragments:\n//\t      - header_value_extractor:\n//\t          name: X-Route-Selector\n//\t          element_separator: \",\"\n//\t          element:\n//\t            separator: =\n//\t            key: vip\n//\n// ScopedRouteConfiguration resources (specified statically via\n// :ref:`scoped_route_configurations_list<envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.ScopedRoutes.scoped_route_configurations_list>`\n// or obtained dynamically via SRDS):\n//\n// .. code::\n//\n//\t(1)\n//\t name: route-scope1\n//\t route_configuration_name: route-config1\n//\t key:\n//\t    fragments:\n//\t      - string_key: 172.10.10.20\n//\n//\t(2)\n//\t name: route-scope2\n//\t route_configuration_name: route-config2\n//\t key:\n//\t   fragments:\n//\t     - string_key: 172.20.20.30\n//\n// A request from a client such as:\n//\n// .. code::\n//\n//\tGET / HTTP/1.1\n//\tHost: foo.com\n//\tX-Route-Selector: vip=172.10.10.20\n//\n// would result in the routing table defined by the “route-config1“\n// RouteConfiguration being assigned to the HTTP request/stream.\n//\n// [#next-free-field: 6]\ntype ScopedRouteConfiguration struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Whether the RouteConfiguration should be loaded on demand.\n\tOnDemand bool `protobuf:\"varint,4,opt,name=on_demand,json=onDemand,proto3\" json:\"on_demand,omitempty\"`\n\t// The name assigned to the routing scope.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// The resource name to use for a :ref:`envoy_v3_api_msg_service.discovery.v3.DiscoveryRequest` to an\n\t// RDS server to fetch the :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration` associated\n\t// with this scope.\n\tRouteConfigurationName string `protobuf:\"bytes,2,opt,name=route_configuration_name,json=routeConfigurationName,proto3\" json:\"route_configuration_name,omitempty\"`\n\t// The :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration` associated with the scope.\n\tRouteConfiguration *RouteConfiguration `protobuf:\"bytes,5,opt,name=route_configuration,json=routeConfiguration,proto3\" json:\"route_configuration,omitempty\"`\n\t// The key to match against.\n\tKey           *ScopedRouteConfiguration_Key `protobuf:\"bytes,3,opt,name=key,proto3\" json:\"key,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ScopedRouteConfiguration) Reset() {\n\t*x = ScopedRouteConfiguration{}\n\tmi := &file_envoy_config_route_v3_scoped_route_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ScopedRouteConfiguration) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ScopedRouteConfiguration) ProtoMessage() {}\n\nfunc (x *ScopedRouteConfiguration) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_scoped_route_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ScopedRouteConfiguration.ProtoReflect.Descriptor instead.\nfunc (*ScopedRouteConfiguration) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_scoped_route_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ScopedRouteConfiguration) GetOnDemand() bool {\n\tif x != nil {\n\t\treturn x.OnDemand\n\t}\n\treturn false\n}\n\nfunc (x *ScopedRouteConfiguration) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *ScopedRouteConfiguration) GetRouteConfigurationName() string {\n\tif x != nil {\n\t\treturn x.RouteConfigurationName\n\t}\n\treturn \"\"\n}\n\nfunc (x *ScopedRouteConfiguration) GetRouteConfiguration() *RouteConfiguration {\n\tif x != nil {\n\t\treturn x.RouteConfiguration\n\t}\n\treturn nil\n}\n\nfunc (x *ScopedRouteConfiguration) GetKey() *ScopedRouteConfiguration_Key {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn nil\n}\n\n// Specifies a key which is matched against the output of the\n// :ref:`scope_key_builder<envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.ScopedRoutes.scope_key_builder>`\n// specified in the HttpConnectionManager. The matching is done per HTTP\n// request and is dependent on the order of the fragments contained in the\n// Key.\ntype ScopedRouteConfiguration_Key struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The ordered set of fragments to match against. The order must match the\n\t// fragments in the corresponding\n\t// :ref:`scope_key_builder<envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.ScopedRoutes.scope_key_builder>`.\n\tFragments     []*ScopedRouteConfiguration_Key_Fragment `protobuf:\"bytes,1,rep,name=fragments,proto3\" json:\"fragments,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ScopedRouteConfiguration_Key) Reset() {\n\t*x = ScopedRouteConfiguration_Key{}\n\tmi := &file_envoy_config_route_v3_scoped_route_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ScopedRouteConfiguration_Key) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ScopedRouteConfiguration_Key) ProtoMessage() {}\n\nfunc (x *ScopedRouteConfiguration_Key) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_scoped_route_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ScopedRouteConfiguration_Key.ProtoReflect.Descriptor instead.\nfunc (*ScopedRouteConfiguration_Key) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_scoped_route_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *ScopedRouteConfiguration_Key) GetFragments() []*ScopedRouteConfiguration_Key_Fragment {\n\tif x != nil {\n\t\treturn x.Fragments\n\t}\n\treturn nil\n}\n\ntype ScopedRouteConfiguration_Key_Fragment struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Type:\n\t//\n\t//\t*ScopedRouteConfiguration_Key_Fragment_StringKey\n\tType          isScopedRouteConfiguration_Key_Fragment_Type `protobuf_oneof:\"type\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ScopedRouteConfiguration_Key_Fragment) Reset() {\n\t*x = ScopedRouteConfiguration_Key_Fragment{}\n\tmi := &file_envoy_config_route_v3_scoped_route_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ScopedRouteConfiguration_Key_Fragment) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ScopedRouteConfiguration_Key_Fragment) ProtoMessage() {}\n\nfunc (x *ScopedRouteConfiguration_Key_Fragment) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_config_route_v3_scoped_route_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ScopedRouteConfiguration_Key_Fragment.ProtoReflect.Descriptor instead.\nfunc (*ScopedRouteConfiguration_Key_Fragment) Descriptor() ([]byte, []int) {\n\treturn file_envoy_config_route_v3_scoped_route_proto_rawDescGZIP(), []int{0, 0, 0}\n}\n\nfunc (x *ScopedRouteConfiguration_Key_Fragment) GetType() isScopedRouteConfiguration_Key_Fragment_Type {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn nil\n}\n\nfunc (x *ScopedRouteConfiguration_Key_Fragment) GetStringKey() string {\n\tif x != nil {\n\t\tif x, ok := x.Type.(*ScopedRouteConfiguration_Key_Fragment_StringKey); ok {\n\t\t\treturn x.StringKey\n\t\t}\n\t}\n\treturn \"\"\n}\n\ntype isScopedRouteConfiguration_Key_Fragment_Type interface {\n\tisScopedRouteConfiguration_Key_Fragment_Type()\n}\n\ntype ScopedRouteConfiguration_Key_Fragment_StringKey struct {\n\t// A string to match against.\n\tStringKey string `protobuf:\"bytes,1,opt,name=string_key,json=stringKey,proto3,oneof\"`\n}\n\nfunc (*ScopedRouteConfiguration_Key_Fragment_StringKey) isScopedRouteConfiguration_Key_Fragment_Type() {\n}\n\nvar File_envoy_config_route_v3_scoped_route_proto protoreflect.FileDescriptor\n\nconst file_envoy_config_route_v3_scoped_route_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"(envoy/config/route/v3/scoped_route.proto\\x12\\x15envoy.config.route.v3\\x1a!envoy/config/route/v3/route.proto\\x1a\\x1eudpa/annotations/migrate.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xaa\\x05\\n\" +\n\t\"\\x18ScopedRouteConfiguration\\x12\\x1b\\n\" +\n\t\"\\ton_demand\\x18\\x04 \\x01(\\bR\\bonDemand\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x12N\\n\" +\n\t\"\\x18route_configuration_name\\x18\\x02 \\x01(\\tB\\x14\\xf2\\x98\\xfe\\x8f\\x05\\x0e\\x12\\froute_configR\\x16routeConfigurationName\\x12p\\n\" +\n\t\"\\x13route_configuration\\x18\\x05 \\x01(\\v2).envoy.config.route.v3.RouteConfigurationB\\x14\\xf2\\x98\\xfe\\x8f\\x05\\x0e\\x12\\froute_configR\\x12routeConfiguration\\x12O\\n\" +\n\t\"\\x03key\\x18\\x03 \\x01(\\v23.envoy.config.route.v3.ScopedRouteConfiguration.KeyB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\x03key\\x1a\\x92\\x02\\n\" +\n\t\"\\x03Key\\x12d\\n\" +\n\t\"\\tfragments\\x18\\x01 \\x03(\\v2<.envoy.config.route.v3.ScopedRouteConfiguration.Key.FragmentB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\tfragments\\x1as\\n\" +\n\t\"\\bFragment\\x12\\x1f\\n\" +\n\t\"\\n\" +\n\t\"string_key\\x18\\x01 \\x01(\\tH\\x00R\\tstringKey:9\\x9aň\\x1e4\\n\" +\n\t\"2envoy.api.v2.ScopedRouteConfiguration.Key.FragmentB\\v\\n\" +\n\t\"\\x04type\\x12\\x03\\xf8B\\x01:0\\x9aň\\x1e+\\n\" +\n\t\")envoy.api.v2.ScopedRouteConfiguration.Key:,\\x9aň\\x1e'\\n\" +\n\t\"%envoy.api.v2.ScopedRouteConfigurationB\\x87\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.config.route.v3B\\x10ScopedRouteProtoP\\x01ZDgithub.com/envoyproxy/go-control-plane/envoy/config/route/v3;routev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_config_route_v3_scoped_route_proto_rawDescOnce sync.Once\n\tfile_envoy_config_route_v3_scoped_route_proto_rawDescData []byte\n)\n\nfunc file_envoy_config_route_v3_scoped_route_proto_rawDescGZIP() []byte {\n\tfile_envoy_config_route_v3_scoped_route_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_config_route_v3_scoped_route_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_route_v3_scoped_route_proto_rawDesc), len(file_envoy_config_route_v3_scoped_route_proto_rawDesc)))\n\t})\n\treturn file_envoy_config_route_v3_scoped_route_proto_rawDescData\n}\n\nvar file_envoy_config_route_v3_scoped_route_proto_msgTypes = make([]protoimpl.MessageInfo, 3)\nvar file_envoy_config_route_v3_scoped_route_proto_goTypes = []any{\n\t(*ScopedRouteConfiguration)(nil),              // 0: envoy.config.route.v3.ScopedRouteConfiguration\n\t(*ScopedRouteConfiguration_Key)(nil),          // 1: envoy.config.route.v3.ScopedRouteConfiguration.Key\n\t(*ScopedRouteConfiguration_Key_Fragment)(nil), // 2: envoy.config.route.v3.ScopedRouteConfiguration.Key.Fragment\n\t(*RouteConfiguration)(nil),                    // 3: envoy.config.route.v3.RouteConfiguration\n}\nvar file_envoy_config_route_v3_scoped_route_proto_depIdxs = []int32{\n\t3, // 0: envoy.config.route.v3.ScopedRouteConfiguration.route_configuration:type_name -> envoy.config.route.v3.RouteConfiguration\n\t1, // 1: envoy.config.route.v3.ScopedRouteConfiguration.key:type_name -> envoy.config.route.v3.ScopedRouteConfiguration.Key\n\t2, // 2: envoy.config.route.v3.ScopedRouteConfiguration.Key.fragments:type_name -> envoy.config.route.v3.ScopedRouteConfiguration.Key.Fragment\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t3, // [3:3] is the sub-list for extension type_name\n\t3, // [3:3] is the sub-list for extension extendee\n\t0, // [0:3] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_config_route_v3_scoped_route_proto_init() }\nfunc file_envoy_config_route_v3_scoped_route_proto_init() {\n\tif File_envoy_config_route_v3_scoped_route_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_config_route_v3_route_proto_init()\n\tfile_envoy_config_route_v3_scoped_route_proto_msgTypes[2].OneofWrappers = []any{\n\t\t(*ScopedRouteConfiguration_Key_Fragment_StringKey)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_route_v3_scoped_route_proto_rawDesc), len(file_envoy_config_route_v3_scoped_route_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   3,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_config_route_v3_scoped_route_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_config_route_v3_scoped_route_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_config_route_v3_scoped_route_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_config_route_v3_scoped_route_proto = out.File\n\tfile_envoy_config_route_v3_scoped_route_proto_goTypes = nil\n\tfile_envoy_config_route_v3_scoped_route_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/route/v3/scoped_route.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/config/route/v3/scoped_route.proto\n\npackage routev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on ScopedRouteConfiguration with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *ScopedRouteConfiguration) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ScopedRouteConfiguration with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ScopedRouteConfigurationMultiError, or nil if none found.\nfunc (m *ScopedRouteConfiguration) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ScopedRouteConfiguration) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for OnDemand\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := ScopedRouteConfigurationValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for RouteConfigurationName\n\n\tif all {\n\t\tswitch v := interface{}(m.GetRouteConfiguration()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ScopedRouteConfigurationValidationError{\n\t\t\t\t\tfield:  \"RouteConfiguration\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ScopedRouteConfigurationValidationError{\n\t\t\t\t\tfield:  \"RouteConfiguration\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetRouteConfiguration()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ScopedRouteConfigurationValidationError{\n\t\t\t\tfield:  \"RouteConfiguration\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif m.GetKey() == nil {\n\t\terr := ScopedRouteConfigurationValidationError{\n\t\t\tfield:  \"Key\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetKey()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ScopedRouteConfigurationValidationError{\n\t\t\t\t\tfield:  \"Key\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ScopedRouteConfigurationValidationError{\n\t\t\t\t\tfield:  \"Key\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetKey()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ScopedRouteConfigurationValidationError{\n\t\t\t\tfield:  \"Key\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ScopedRouteConfigurationMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ScopedRouteConfigurationMultiError is an error wrapping multiple validation\n// errors returned by ScopedRouteConfiguration.ValidateAll() if the designated\n// constraints aren't met.\ntype ScopedRouteConfigurationMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ScopedRouteConfigurationMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ScopedRouteConfigurationMultiError) AllErrors() []error { return m }\n\n// ScopedRouteConfigurationValidationError is the validation error returned by\n// ScopedRouteConfiguration.Validate if the designated constraints aren't met.\ntype ScopedRouteConfigurationValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ScopedRouteConfigurationValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ScopedRouteConfigurationValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ScopedRouteConfigurationValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ScopedRouteConfigurationValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ScopedRouteConfigurationValidationError) ErrorName() string {\n\treturn \"ScopedRouteConfigurationValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ScopedRouteConfigurationValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sScopedRouteConfiguration.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ScopedRouteConfigurationValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ScopedRouteConfigurationValidationError{}\n\n// Validate checks the field values on ScopedRouteConfiguration_Key with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *ScopedRouteConfiguration_Key) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ScopedRouteConfiguration_Key with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ScopedRouteConfiguration_KeyMultiError, or nil if none found.\nfunc (m *ScopedRouteConfiguration_Key) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ScopedRouteConfiguration_Key) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetFragments()) < 1 {\n\t\terr := ScopedRouteConfiguration_KeyValidationError{\n\t\t\tfield:  \"Fragments\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetFragments() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ScopedRouteConfiguration_KeyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Fragments[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ScopedRouteConfiguration_KeyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Fragments[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ScopedRouteConfiguration_KeyValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Fragments[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ScopedRouteConfiguration_KeyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ScopedRouteConfiguration_KeyMultiError is an error wrapping multiple\n// validation errors returned by ScopedRouteConfiguration_Key.ValidateAll() if\n// the designated constraints aren't met.\ntype ScopedRouteConfiguration_KeyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ScopedRouteConfiguration_KeyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ScopedRouteConfiguration_KeyMultiError) AllErrors() []error { return m }\n\n// ScopedRouteConfiguration_KeyValidationError is the validation error returned\n// by ScopedRouteConfiguration_Key.Validate if the designated constraints\n// aren't met.\ntype ScopedRouteConfiguration_KeyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ScopedRouteConfiguration_KeyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ScopedRouteConfiguration_KeyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ScopedRouteConfiguration_KeyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ScopedRouteConfiguration_KeyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ScopedRouteConfiguration_KeyValidationError) ErrorName() string {\n\treturn \"ScopedRouteConfiguration_KeyValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ScopedRouteConfiguration_KeyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sScopedRouteConfiguration_Key.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ScopedRouteConfiguration_KeyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ScopedRouteConfiguration_KeyValidationError{}\n\n// Validate checks the field values on ScopedRouteConfiguration_Key_Fragment\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the first error encountered is returned, or nil if\n// there are no violations.\nfunc (m *ScopedRouteConfiguration_Key_Fragment) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ScopedRouteConfiguration_Key_Fragment\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// ScopedRouteConfiguration_Key_FragmentMultiError, or nil if none found.\nfunc (m *ScopedRouteConfiguration_Key_Fragment) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ScopedRouteConfiguration_Key_Fragment) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofTypePresent := false\n\tswitch v := m.Type.(type) {\n\tcase *ScopedRouteConfiguration_Key_Fragment_StringKey:\n\t\tif v == nil {\n\t\t\terr := ScopedRouteConfiguration_Key_FragmentValidationError{\n\t\t\t\tfield:  \"Type\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofTypePresent = true\n\t\t// no validation rules for StringKey\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofTypePresent {\n\t\terr := ScopedRouteConfiguration_Key_FragmentValidationError{\n\t\t\tfield:  \"Type\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ScopedRouteConfiguration_Key_FragmentMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ScopedRouteConfiguration_Key_FragmentMultiError is an error wrapping\n// multiple validation errors returned by\n// ScopedRouteConfiguration_Key_Fragment.ValidateAll() if the designated\n// constraints aren't met.\ntype ScopedRouteConfiguration_Key_FragmentMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ScopedRouteConfiguration_Key_FragmentMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ScopedRouteConfiguration_Key_FragmentMultiError) AllErrors() []error { return m }\n\n// ScopedRouteConfiguration_Key_FragmentValidationError is the validation error\n// returned by ScopedRouteConfiguration_Key_Fragment.Validate if the\n// designated constraints aren't met.\ntype ScopedRouteConfiguration_Key_FragmentValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ScopedRouteConfiguration_Key_FragmentValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ScopedRouteConfiguration_Key_FragmentValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ScopedRouteConfiguration_Key_FragmentValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ScopedRouteConfiguration_Key_FragmentValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ScopedRouteConfiguration_Key_FragmentValidationError) ErrorName() string {\n\treturn \"ScopedRouteConfiguration_Key_FragmentValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ScopedRouteConfiguration_Key_FragmentValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sScopedRouteConfiguration_Key_Fragment.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ScopedRouteConfiguration_Key_FragmentValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ScopedRouteConfiguration_Key_FragmentValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/config/route/v3/scoped_route_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/config/route/v3/scoped_route.proto\n\npackage routev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *ScopedRouteConfiguration_Key_Fragment) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ScopedRouteConfiguration_Key_Fragment) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ScopedRouteConfiguration_Key_Fragment) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.Type.(*ScopedRouteConfiguration_Key_Fragment_StringKey); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ScopedRouteConfiguration_Key_Fragment_StringKey) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ScopedRouteConfiguration_Key_Fragment_StringKey) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.StringKey)\n\tcopy(dAtA[i:], m.StringKey)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.StringKey)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ScopedRouteConfiguration_Key) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ScopedRouteConfiguration_Key) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ScopedRouteConfiguration_Key) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Fragments) > 0 {\n\t\tfor iNdEx := len(m.Fragments) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Fragments[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ScopedRouteConfiguration) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ScopedRouteConfiguration) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ScopedRouteConfiguration) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.RouteConfiguration != nil {\n\t\tsize, err := m.RouteConfiguration.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.OnDemand {\n\t\ti--\n\t\tif m.OnDemand {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.Key != nil {\n\t\tsize, err := m.Key.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.RouteConfigurationName) > 0 {\n\t\ti -= len(m.RouteConfigurationName)\n\t\tcopy(dAtA[i:], m.RouteConfigurationName)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RouteConfigurationName)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ScopedRouteConfiguration_Key_Fragment) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Type.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ScopedRouteConfiguration_Key_Fragment_StringKey) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.StringKey)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *ScopedRouteConfiguration_Key) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Fragments) > 0 {\n\t\tfor _, e := range m.Fragments {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ScopedRouteConfiguration) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.RouteConfigurationName)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Key != nil {\n\t\tl = m.Key.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.OnDemand {\n\t\tn += 2\n\t}\n\tif m.RouteConfiguration != nil {\n\t\tl = m.RouteConfiguration.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3/ads.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/service/discovery/v3/ads.proto\n\npackage discoveryv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// [#not-implemented-hide:] Not configuration. Workaround c++ protobuf issue with importing\n// services: https://github.com/google/protobuf/issues/4221\ntype AdsDummy struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *AdsDummy) Reset() {\n\t*x = AdsDummy{}\n\tmi := &file_envoy_service_discovery_v3_ads_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *AdsDummy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AdsDummy) ProtoMessage() {}\n\nfunc (x *AdsDummy) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_service_discovery_v3_ads_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use AdsDummy.ProtoReflect.Descriptor instead.\nfunc (*AdsDummy) Descriptor() ([]byte, []int) {\n\treturn file_envoy_service_discovery_v3_ads_proto_rawDescGZIP(), []int{0}\n}\n\nvar File_envoy_service_discovery_v3_ads_proto protoreflect.FileDescriptor\n\nconst file_envoy_service_discovery_v3_ads_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"$envoy/service/discovery/v3/ads.proto\\x12\\x1aenvoy.service.discovery.v3\\x1a*envoy/service/discovery/v3/discovery.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\\"6\\n\" +\n\t\"\\bAdsDummy:*\\x9aň\\x1e%\\n\" +\n\t\"#envoy.service.discovery.v2.AdsDummy2\\xa6\\x02\\n\" +\n\t\"\\x1aAggregatedDiscoveryService\\x12~\\n\" +\n\t\"\\x19StreamAggregatedResources\\x12,.envoy.service.discovery.v3.DiscoveryRequest\\x1a-.envoy.service.discovery.v3.DiscoveryResponse\\\"\\x00(\\x010\\x01\\x12\\x87\\x01\\n\" +\n\t\"\\x18DeltaAggregatedResources\\x121.envoy.service.discovery.v3.DeltaDiscoveryRequest\\x1a2.envoy.service.discovery.v3.DeltaDiscoveryResponse\\\"\\x00(\\x010\\x01B\\x8d\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"(io.envoyproxy.envoy.service.discovery.v3B\\bAdsProtoP\\x01ZMgithub.com/envoyproxy/go-control-plane/envoy/service/discovery/v3;discoveryv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_service_discovery_v3_ads_proto_rawDescOnce sync.Once\n\tfile_envoy_service_discovery_v3_ads_proto_rawDescData []byte\n)\n\nfunc file_envoy_service_discovery_v3_ads_proto_rawDescGZIP() []byte {\n\tfile_envoy_service_discovery_v3_ads_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_service_discovery_v3_ads_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_service_discovery_v3_ads_proto_rawDesc), len(file_envoy_service_discovery_v3_ads_proto_rawDesc)))\n\t})\n\treturn file_envoy_service_discovery_v3_ads_proto_rawDescData\n}\n\nvar file_envoy_service_discovery_v3_ads_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_service_discovery_v3_ads_proto_goTypes = []any{\n\t(*AdsDummy)(nil),               // 0: envoy.service.discovery.v3.AdsDummy\n\t(*DiscoveryRequest)(nil),       // 1: envoy.service.discovery.v3.DiscoveryRequest\n\t(*DeltaDiscoveryRequest)(nil),  // 2: envoy.service.discovery.v3.DeltaDiscoveryRequest\n\t(*DiscoveryResponse)(nil),      // 3: envoy.service.discovery.v3.DiscoveryResponse\n\t(*DeltaDiscoveryResponse)(nil), // 4: envoy.service.discovery.v3.DeltaDiscoveryResponse\n}\nvar file_envoy_service_discovery_v3_ads_proto_depIdxs = []int32{\n\t1, // 0: envoy.service.discovery.v3.AggregatedDiscoveryService.StreamAggregatedResources:input_type -> envoy.service.discovery.v3.DiscoveryRequest\n\t2, // 1: envoy.service.discovery.v3.AggregatedDiscoveryService.DeltaAggregatedResources:input_type -> envoy.service.discovery.v3.DeltaDiscoveryRequest\n\t3, // 2: envoy.service.discovery.v3.AggregatedDiscoveryService.StreamAggregatedResources:output_type -> envoy.service.discovery.v3.DiscoveryResponse\n\t4, // 3: envoy.service.discovery.v3.AggregatedDiscoveryService.DeltaAggregatedResources:output_type -> envoy.service.discovery.v3.DeltaDiscoveryResponse\n\t2, // [2:4] is the sub-list for method output_type\n\t0, // [0:2] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_service_discovery_v3_ads_proto_init() }\nfunc file_envoy_service_discovery_v3_ads_proto_init() {\n\tif File_envoy_service_discovery_v3_ads_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_service_discovery_v3_discovery_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_service_discovery_v3_ads_proto_rawDesc), len(file_envoy_service_discovery_v3_ads_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_envoy_service_discovery_v3_ads_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_service_discovery_v3_ads_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_service_discovery_v3_ads_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_service_discovery_v3_ads_proto = out.File\n\tfile_envoy_service_discovery_v3_ads_proto_goTypes = nil\n\tfile_envoy_service_discovery_v3_ads_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3/ads.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/service/discovery/v3/ads.proto\n\npackage discoveryv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on AdsDummy with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *AdsDummy) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on AdsDummy with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in AdsDummyMultiError, or nil\n// if none found.\nfunc (m *AdsDummy) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *AdsDummy) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn AdsDummyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// AdsDummyMultiError is an error wrapping multiple validation errors returned\n// by AdsDummy.ValidateAll() if the designated constraints aren't met.\ntype AdsDummyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m AdsDummyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m AdsDummyMultiError) AllErrors() []error { return m }\n\n// AdsDummyValidationError is the validation error returned by\n// AdsDummy.Validate if the designated constraints aren't met.\ntype AdsDummyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e AdsDummyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e AdsDummyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e AdsDummyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e AdsDummyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e AdsDummyValidationError) ErrorName() string { return \"AdsDummyValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e AdsDummyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sAdsDummy.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = AdsDummyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = AdsDummyValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3/ads_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc             v6.33.2\n// source: envoy/service/discovery/v3/ads.proto\n\npackage discoveryv3\n\nimport (\n\tcontext \"context\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.32.0 or later.\nconst _ = grpc.SupportPackageIsVersion7\n\nconst (\n\tAggregatedDiscoveryService_StreamAggregatedResources_FullMethodName = \"/envoy.service.discovery.v3.AggregatedDiscoveryService/StreamAggregatedResources\"\n\tAggregatedDiscoveryService_DeltaAggregatedResources_FullMethodName  = \"/envoy.service.discovery.v3.AggregatedDiscoveryService/DeltaAggregatedResources\"\n)\n\n// AggregatedDiscoveryServiceClient is the client API for AggregatedDiscoveryService service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\ntype AggregatedDiscoveryServiceClient interface {\n\t// This is a gRPC-only API.\n\tStreamAggregatedResources(ctx context.Context, opts ...grpc.CallOption) (AggregatedDiscoveryService_StreamAggregatedResourcesClient, error)\n\tDeltaAggregatedResources(ctx context.Context, opts ...grpc.CallOption) (AggregatedDiscoveryService_DeltaAggregatedResourcesClient, error)\n}\n\ntype aggregatedDiscoveryServiceClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewAggregatedDiscoveryServiceClient(cc grpc.ClientConnInterface) AggregatedDiscoveryServiceClient {\n\treturn &aggregatedDiscoveryServiceClient{cc}\n}\n\nfunc (c *aggregatedDiscoveryServiceClient) StreamAggregatedResources(ctx context.Context, opts ...grpc.CallOption) (AggregatedDiscoveryService_StreamAggregatedResourcesClient, error) {\n\tstream, err := c.cc.NewStream(ctx, &AggregatedDiscoveryService_ServiceDesc.Streams[0], AggregatedDiscoveryService_StreamAggregatedResources_FullMethodName, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tx := &aggregatedDiscoveryServiceStreamAggregatedResourcesClient{stream}\n\treturn x, nil\n}\n\ntype AggregatedDiscoveryService_StreamAggregatedResourcesClient interface {\n\tSend(*DiscoveryRequest) error\n\tRecv() (*DiscoveryResponse, error)\n\tgrpc.ClientStream\n}\n\ntype aggregatedDiscoveryServiceStreamAggregatedResourcesClient struct {\n\tgrpc.ClientStream\n}\n\nfunc (x *aggregatedDiscoveryServiceStreamAggregatedResourcesClient) Send(m *DiscoveryRequest) error {\n\treturn x.ClientStream.SendMsg(m)\n}\n\nfunc (x *aggregatedDiscoveryServiceStreamAggregatedResourcesClient) Recv() (*DiscoveryResponse, error) {\n\tm := new(DiscoveryResponse)\n\tif err := x.ClientStream.RecvMsg(m); err != nil {\n\t\treturn nil, err\n\t}\n\treturn m, nil\n}\n\nfunc (c *aggregatedDiscoveryServiceClient) DeltaAggregatedResources(ctx context.Context, opts ...grpc.CallOption) (AggregatedDiscoveryService_DeltaAggregatedResourcesClient, error) {\n\tstream, err := c.cc.NewStream(ctx, &AggregatedDiscoveryService_ServiceDesc.Streams[1], AggregatedDiscoveryService_DeltaAggregatedResources_FullMethodName, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tx := &aggregatedDiscoveryServiceDeltaAggregatedResourcesClient{stream}\n\treturn x, nil\n}\n\ntype AggregatedDiscoveryService_DeltaAggregatedResourcesClient interface {\n\tSend(*DeltaDiscoveryRequest) error\n\tRecv() (*DeltaDiscoveryResponse, error)\n\tgrpc.ClientStream\n}\n\ntype aggregatedDiscoveryServiceDeltaAggregatedResourcesClient struct {\n\tgrpc.ClientStream\n}\n\nfunc (x *aggregatedDiscoveryServiceDeltaAggregatedResourcesClient) Send(m *DeltaDiscoveryRequest) error {\n\treturn x.ClientStream.SendMsg(m)\n}\n\nfunc (x *aggregatedDiscoveryServiceDeltaAggregatedResourcesClient) Recv() (*DeltaDiscoveryResponse, error) {\n\tm := new(DeltaDiscoveryResponse)\n\tif err := x.ClientStream.RecvMsg(m); err != nil {\n\t\treturn nil, err\n\t}\n\treturn m, nil\n}\n\n// AggregatedDiscoveryServiceServer is the server API for AggregatedDiscoveryService service.\n// All implementations should embed UnimplementedAggregatedDiscoveryServiceServer\n// for forward compatibility\ntype AggregatedDiscoveryServiceServer interface {\n\t// This is a gRPC-only API.\n\tStreamAggregatedResources(AggregatedDiscoveryService_StreamAggregatedResourcesServer) error\n\tDeltaAggregatedResources(AggregatedDiscoveryService_DeltaAggregatedResourcesServer) error\n}\n\n// UnimplementedAggregatedDiscoveryServiceServer should be embedded to have forward compatible implementations.\ntype UnimplementedAggregatedDiscoveryServiceServer struct {\n}\n\nfunc (UnimplementedAggregatedDiscoveryServiceServer) StreamAggregatedResources(AggregatedDiscoveryService_StreamAggregatedResourcesServer) error {\n\treturn status.Errorf(codes.Unimplemented, \"method StreamAggregatedResources not implemented\")\n}\nfunc (UnimplementedAggregatedDiscoveryServiceServer) DeltaAggregatedResources(AggregatedDiscoveryService_DeltaAggregatedResourcesServer) error {\n\treturn status.Errorf(codes.Unimplemented, \"method DeltaAggregatedResources not implemented\")\n}\n\n// UnsafeAggregatedDiscoveryServiceServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to AggregatedDiscoveryServiceServer will\n// result in compilation errors.\ntype UnsafeAggregatedDiscoveryServiceServer interface {\n\tmustEmbedUnimplementedAggregatedDiscoveryServiceServer()\n}\n\nfunc RegisterAggregatedDiscoveryServiceServer(s grpc.ServiceRegistrar, srv AggregatedDiscoveryServiceServer) {\n\ts.RegisterService(&AggregatedDiscoveryService_ServiceDesc, srv)\n}\n\nfunc _AggregatedDiscoveryService_StreamAggregatedResources_Handler(srv interface{}, stream grpc.ServerStream) error {\n\treturn srv.(AggregatedDiscoveryServiceServer).StreamAggregatedResources(&aggregatedDiscoveryServiceStreamAggregatedResourcesServer{stream})\n}\n\ntype AggregatedDiscoveryService_StreamAggregatedResourcesServer interface {\n\tSend(*DiscoveryResponse) error\n\tRecv() (*DiscoveryRequest, error)\n\tgrpc.ServerStream\n}\n\ntype aggregatedDiscoveryServiceStreamAggregatedResourcesServer struct {\n\tgrpc.ServerStream\n}\n\nfunc (x *aggregatedDiscoveryServiceStreamAggregatedResourcesServer) Send(m *DiscoveryResponse) error {\n\treturn x.ServerStream.SendMsg(m)\n}\n\nfunc (x *aggregatedDiscoveryServiceStreamAggregatedResourcesServer) Recv() (*DiscoveryRequest, error) {\n\tm := new(DiscoveryRequest)\n\tif err := x.ServerStream.RecvMsg(m); err != nil {\n\t\treturn nil, err\n\t}\n\treturn m, nil\n}\n\nfunc _AggregatedDiscoveryService_DeltaAggregatedResources_Handler(srv interface{}, stream grpc.ServerStream) error {\n\treturn srv.(AggregatedDiscoveryServiceServer).DeltaAggregatedResources(&aggregatedDiscoveryServiceDeltaAggregatedResourcesServer{stream})\n}\n\ntype AggregatedDiscoveryService_DeltaAggregatedResourcesServer interface {\n\tSend(*DeltaDiscoveryResponse) error\n\tRecv() (*DeltaDiscoveryRequest, error)\n\tgrpc.ServerStream\n}\n\ntype aggregatedDiscoveryServiceDeltaAggregatedResourcesServer struct {\n\tgrpc.ServerStream\n}\n\nfunc (x *aggregatedDiscoveryServiceDeltaAggregatedResourcesServer) Send(m *DeltaDiscoveryResponse) error {\n\treturn x.ServerStream.SendMsg(m)\n}\n\nfunc (x *aggregatedDiscoveryServiceDeltaAggregatedResourcesServer) Recv() (*DeltaDiscoveryRequest, error) {\n\tm := new(DeltaDiscoveryRequest)\n\tif err := x.ServerStream.RecvMsg(m); err != nil {\n\t\treturn nil, err\n\t}\n\treturn m, nil\n}\n\n// AggregatedDiscoveryService_ServiceDesc is the grpc.ServiceDesc for AggregatedDiscoveryService service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar AggregatedDiscoveryService_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"envoy.service.discovery.v3.AggregatedDiscoveryService\",\n\tHandlerType: (*AggregatedDiscoveryServiceServer)(nil),\n\tMethods:     []grpc.MethodDesc{},\n\tStreams: []grpc.StreamDesc{\n\t\t{\n\t\t\tStreamName:    \"StreamAggregatedResources\",\n\t\t\tHandler:       _AggregatedDiscoveryService_StreamAggregatedResources_Handler,\n\t\t\tServerStreams: true,\n\t\t\tClientStreams: true,\n\t\t},\n\t\t{\n\t\t\tStreamName:    \"DeltaAggregatedResources\",\n\t\t\tHandler:       _AggregatedDiscoveryService_DeltaAggregatedResources_Handler,\n\t\t\tServerStreams: true,\n\t\t\tClientStreams: true,\n\t\t},\n\t},\n\tMetadata: \"envoy/service/discovery/v3/ads.proto\",\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3/ads_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/service/discovery/v3/ads.proto\n\npackage discoveryv3\n\nimport (\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *AdsDummy) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AdsDummy) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *AdsDummy) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AdsDummy) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3/discovery.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/service/discovery/v3/discovery.proto\n\npackage discoveryv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/config/core/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tstatus \"google.golang.org/genproto/googleapis/rpc/status\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Specifies a resource to be subscribed to.\ntype ResourceLocator struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The resource name to subscribe to.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// A set of dynamic parameters used to match against the dynamic parameter\n\t// constraints on the resource. This allows clients to select between\n\t// multiple variants of the same resource.\n\tDynamicParameters map[string]string `protobuf:\"bytes,2,rep,name=dynamic_parameters,json=dynamicParameters,proto3\" json:\"dynamic_parameters,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\tunknownFields     protoimpl.UnknownFields\n\tsizeCache         protoimpl.SizeCache\n}\n\nfunc (x *ResourceLocator) Reset() {\n\t*x = ResourceLocator{}\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ResourceLocator) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ResourceLocator) ProtoMessage() {}\n\nfunc (x *ResourceLocator) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ResourceLocator.ProtoReflect.Descriptor instead.\nfunc (*ResourceLocator) Descriptor() ([]byte, []int) {\n\treturn file_envoy_service_discovery_v3_discovery_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ResourceLocator) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceLocator) GetDynamicParameters() map[string]string {\n\tif x != nil {\n\t\treturn x.DynamicParameters\n\t}\n\treturn nil\n}\n\n// Specifies a concrete resource name.\ntype ResourceName struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the resource.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Dynamic parameter constraints associated with this resource. To be used by client-side caches\n\t// (including xDS proxies) when matching subscribed resource locators.\n\tDynamicParameterConstraints *DynamicParameterConstraints `protobuf:\"bytes,2,opt,name=dynamic_parameter_constraints,json=dynamicParameterConstraints,proto3\" json:\"dynamic_parameter_constraints,omitempty\"`\n\tunknownFields               protoimpl.UnknownFields\n\tsizeCache                   protoimpl.SizeCache\n}\n\nfunc (x *ResourceName) Reset() {\n\t*x = ResourceName{}\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ResourceName) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ResourceName) ProtoMessage() {}\n\nfunc (x *ResourceName) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ResourceName.ProtoReflect.Descriptor instead.\nfunc (*ResourceName) Descriptor() ([]byte, []int) {\n\treturn file_envoy_service_discovery_v3_discovery_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ResourceName) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceName) GetDynamicParameterConstraints() *DynamicParameterConstraints {\n\tif x != nil {\n\t\treturn x.DynamicParameterConstraints\n\t}\n\treturn nil\n}\n\n// [#not-implemented-hide:]\n// An error associated with a specific resource name, returned to the\n// client by the server.\ntype ResourceError struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the resource.\n\tResourceName *ResourceName `protobuf:\"bytes,1,opt,name=resource_name,json=resourceName,proto3\" json:\"resource_name,omitempty\"`\n\t// The error reported for the resource.\n\tErrorDetail   *status.Status `protobuf:\"bytes,2,opt,name=error_detail,json=errorDetail,proto3\" json:\"error_detail,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ResourceError) Reset() {\n\t*x = ResourceError{}\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ResourceError) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ResourceError) ProtoMessage() {}\n\nfunc (x *ResourceError) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ResourceError.ProtoReflect.Descriptor instead.\nfunc (*ResourceError) Descriptor() ([]byte, []int) {\n\treturn file_envoy_service_discovery_v3_discovery_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *ResourceError) GetResourceName() *ResourceName {\n\tif x != nil {\n\t\treturn x.ResourceName\n\t}\n\treturn nil\n}\n\nfunc (x *ResourceError) GetErrorDetail() *status.Status {\n\tif x != nil {\n\t\treturn x.ErrorDetail\n\t}\n\treturn nil\n}\n\n// A DiscoveryRequest requests a set of versioned resources of the same type for\n// a given Envoy node on some API.\n// [#next-free-field: 8]\ntype DiscoveryRequest struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The “version_info“ provided in the request messages will be the “version_info“\n\t// received with the most recent successfully processed response or empty on\n\t// the first request. It is expected that no new request is sent after a\n\t// response is received until the Envoy instance is ready to ACK/NACK the new\n\t// configuration. ACK/NACK takes place by returning the new API config version\n\t// as applied or the previous API config version respectively. Each “type_url“\n\t// (see below) has an independent version associated with it.\n\tVersionInfo string `protobuf:\"bytes,1,opt,name=version_info,json=versionInfo,proto3\" json:\"version_info,omitempty\"`\n\t// The node making the request.\n\tNode *v3.Node `protobuf:\"bytes,2,opt,name=node,proto3\" json:\"node,omitempty\"`\n\t// List of resources to subscribe to, e.g. list of cluster names or a route\n\t// configuration name. If this is empty, all resources for the API are\n\t// returned. LDS/CDS may have empty “resource_names“, which will cause all\n\t// resources for the Envoy instance to be returned. The LDS and CDS responses\n\t// will then imply a number of resources that need to be fetched via EDS/RDS,\n\t// which will be explicitly enumerated in “resource_names“.\n\tResourceNames []string `protobuf:\"bytes,3,rep,name=resource_names,json=resourceNames,proto3\" json:\"resource_names,omitempty\"`\n\t// [#not-implemented-hide:]\n\t// Alternative to “resource_names“ field that allows specifying dynamic\n\t// parameters along with each resource name. Clients that populate this\n\t// field must be able to handle responses from the server where resources\n\t// are wrapped in a Resource message.\n\t//\n\t// .. note::\n\t//\n\t//\tIt is legal for a request to have some resources listed\n\t//\tin ``resource_names`` and others in ``resource_locators``.\n\tResourceLocators []*ResourceLocator `protobuf:\"bytes,7,rep,name=resource_locators,json=resourceLocators,proto3\" json:\"resource_locators,omitempty\"`\n\t// Type of the resource that is being requested, e.g.\n\t// “type.googleapis.com/envoy.api.v2.ClusterLoadAssignment“. This is implicit\n\t// in requests made via singleton xDS APIs such as CDS, LDS, etc. but is\n\t// required for ADS.\n\tTypeUrl string `protobuf:\"bytes,4,opt,name=type_url,json=typeUrl,proto3\" json:\"type_url,omitempty\"`\n\t// nonce corresponding to “DiscoveryResponse“ being ACK/NACKed. See above\n\t// discussion on “version_info“ and the “DiscoveryResponse“ nonce comment. This\n\t// may be empty only if:\n\t//\n\t//   - This is a non-persistent-stream xDS such as HTTP, or\n\t//   - The client has not yet accepted an update in this xDS stream (unlike\n\t//     delta, where it is populated only for new explicit ACKs).\n\tResponseNonce string `protobuf:\"bytes,5,opt,name=response_nonce,json=responseNonce,proto3\" json:\"response_nonce,omitempty\"`\n\t// This is populated when the previous :ref:`DiscoveryResponse <envoy_v3_api_msg_service.discovery.v3.DiscoveryResponse>`\n\t// failed to update configuration. The “message“ field in “error_details“ provides the Envoy\n\t// internal exception related to the failure. It is only intended for consumption during manual\n\t// debugging, the string provided is not guaranteed to be stable across Envoy versions.\n\tErrorDetail   *status.Status `protobuf:\"bytes,6,opt,name=error_detail,json=errorDetail,proto3\" json:\"error_detail,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DiscoveryRequest) Reset() {\n\t*x = DiscoveryRequest{}\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DiscoveryRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DiscoveryRequest) ProtoMessage() {}\n\nfunc (x *DiscoveryRequest) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DiscoveryRequest.ProtoReflect.Descriptor instead.\nfunc (*DiscoveryRequest) Descriptor() ([]byte, []int) {\n\treturn file_envoy_service_discovery_v3_discovery_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *DiscoveryRequest) GetVersionInfo() string {\n\tif x != nil {\n\t\treturn x.VersionInfo\n\t}\n\treturn \"\"\n}\n\nfunc (x *DiscoveryRequest) GetNode() *v3.Node {\n\tif x != nil {\n\t\treturn x.Node\n\t}\n\treturn nil\n}\n\nfunc (x *DiscoveryRequest) GetResourceNames() []string {\n\tif x != nil {\n\t\treturn x.ResourceNames\n\t}\n\treturn nil\n}\n\nfunc (x *DiscoveryRequest) GetResourceLocators() []*ResourceLocator {\n\tif x != nil {\n\t\treturn x.ResourceLocators\n\t}\n\treturn nil\n}\n\nfunc (x *DiscoveryRequest) GetTypeUrl() string {\n\tif x != nil {\n\t\treturn x.TypeUrl\n\t}\n\treturn \"\"\n}\n\nfunc (x *DiscoveryRequest) GetResponseNonce() string {\n\tif x != nil {\n\t\treturn x.ResponseNonce\n\t}\n\treturn \"\"\n}\n\nfunc (x *DiscoveryRequest) GetErrorDetail() *status.Status {\n\tif x != nil {\n\t\treturn x.ErrorDetail\n\t}\n\treturn nil\n}\n\n// [#next-free-field: 8]\ntype DiscoveryResponse struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The version of the response data.\n\tVersionInfo string `protobuf:\"bytes,1,opt,name=version_info,json=versionInfo,proto3\" json:\"version_info,omitempty\"`\n\t// The response resources. These resources are typed and depend on the API being called.\n\tResources []*anypb.Any `protobuf:\"bytes,2,rep,name=resources,proto3\" json:\"resources,omitempty\"`\n\t// [#not-implemented-hide:]\n\t// Canary is used to support two Envoy command line flags:\n\t//\n\t//   - “--terminate-on-canary-transition-failure“. When set, Envoy is able to\n\t//     terminate if it detects that configuration is stuck at canary. Consider\n\t//     this example sequence of updates:\n\t//\n\t//   - Management server applies a canary config successfully.\n\t//\n\t//   - Management server rolls back to a production config.\n\t//\n\t//   - Envoy rejects the new production config.\n\t//\n\t//     Since there is no sensible way to continue receiving configuration\n\t//     updates, Envoy will then terminate and apply production config from a\n\t//     clean slate.\n\t//\n\t//   - “--dry-run-canary“. When set, a canary response will never be applied, only\n\t//     validated via a dry run.\n\tCanary bool `protobuf:\"varint,3,opt,name=canary,proto3\" json:\"canary,omitempty\"`\n\t// Type URL for resources. Identifies the xDS API when muxing over ADS.\n\t// Must be consistent with the “type_url“ in the 'resources' repeated Any (if non-empty).\n\tTypeUrl string `protobuf:\"bytes,4,opt,name=type_url,json=typeUrl,proto3\" json:\"type_url,omitempty\"`\n\t// For gRPC based subscriptions, the nonce provides a way to explicitly ack a\n\t// specific “DiscoveryResponse“ in a following “DiscoveryRequest“. Additional\n\t// messages may have been sent by Envoy to the management server for the\n\t// previous version on the stream prior to this “DiscoveryResponse“, that were\n\t// unprocessed at response send time. The nonce allows the management server\n\t// to ignore any further “DiscoveryRequests“ for the previous version until a\n\t// “DiscoveryRequest“ bearing the nonce. The nonce is optional and is not\n\t// required for non-stream based xDS implementations.\n\tNonce string `protobuf:\"bytes,5,opt,name=nonce,proto3\" json:\"nonce,omitempty\"`\n\t// The control plane instance that sent the response.\n\tControlPlane *v3.ControlPlane `protobuf:\"bytes,6,opt,name=control_plane,json=controlPlane,proto3\" json:\"control_plane,omitempty\"`\n\t// [#not-implemented-hide:]\n\t// Errors associated with specific resources. Clients are expected to\n\t// remember the most recent error for a given resource across responses;\n\t// the error condition is not considered to be cleared until a response is\n\t// received that contains the resource in the 'resources' field.\n\tResourceErrors []*ResourceError `protobuf:\"bytes,7,rep,name=resource_errors,json=resourceErrors,proto3\" json:\"resource_errors,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *DiscoveryResponse) Reset() {\n\t*x = DiscoveryResponse{}\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DiscoveryResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DiscoveryResponse) ProtoMessage() {}\n\nfunc (x *DiscoveryResponse) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DiscoveryResponse.ProtoReflect.Descriptor instead.\nfunc (*DiscoveryResponse) Descriptor() ([]byte, []int) {\n\treturn file_envoy_service_discovery_v3_discovery_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *DiscoveryResponse) GetVersionInfo() string {\n\tif x != nil {\n\t\treturn x.VersionInfo\n\t}\n\treturn \"\"\n}\n\nfunc (x *DiscoveryResponse) GetResources() []*anypb.Any {\n\tif x != nil {\n\t\treturn x.Resources\n\t}\n\treturn nil\n}\n\nfunc (x *DiscoveryResponse) GetCanary() bool {\n\tif x != nil {\n\t\treturn x.Canary\n\t}\n\treturn false\n}\n\nfunc (x *DiscoveryResponse) GetTypeUrl() string {\n\tif x != nil {\n\t\treturn x.TypeUrl\n\t}\n\treturn \"\"\n}\n\nfunc (x *DiscoveryResponse) GetNonce() string {\n\tif x != nil {\n\t\treturn x.Nonce\n\t}\n\treturn \"\"\n}\n\nfunc (x *DiscoveryResponse) GetControlPlane() *v3.ControlPlane {\n\tif x != nil {\n\t\treturn x.ControlPlane\n\t}\n\treturn nil\n}\n\nfunc (x *DiscoveryResponse) GetResourceErrors() []*ResourceError {\n\tif x != nil {\n\t\treturn x.ResourceErrors\n\t}\n\treturn nil\n}\n\n// DeltaDiscoveryRequest and DeltaDiscoveryResponse are used in a new gRPC\n// endpoint for Delta xDS.\n//\n// With Delta xDS, the DeltaDiscoveryResponses do not need to include a full\n// snapshot of the tracked resources. Instead, DeltaDiscoveryResponses are a\n// diff to the state of a xDS client.\n// In Delta XDS there are per-resource versions, which allow tracking state at\n// the resource granularity.\n// An xDS Delta session is always in the context of a gRPC bidirectional\n// stream. This allows the xDS server to keep track of the state of xDS clients\n// connected to it.\n//\n// In Delta xDS the nonce field is required and used to pair\n// “DeltaDiscoveryResponse“ to a “DeltaDiscoveryRequest“ ACK or NACK.\n// Optionally, a response message level “system_version_info“ is present for\n// debugging purposes only.\n//\n// “DeltaDiscoveryRequest“ plays two independent roles. Any “DeltaDiscoveryRequest“\n// can be either or both of:\n//\n//   - Informing the server of what resources the client has gained/lost interest in\n//     (using “resource_names_subscribe“ and “resource_names_unsubscribe“), or\n//   - (N)ACKing an earlier resource update from the server (using “response_nonce“,\n//     with presence of “error_detail“ making it a NACK).\n//\n// Additionally, the first message (for a given “type_url“) of a reconnected gRPC stream\n// has a third role: informing the server of the resources (and their versions)\n// that the client already possesses, using the “initial_resource_versions“ field.\n//\n// As with state-of-the-world, when multiple resource types are multiplexed (ADS),\n// all requests/acknowledgments/updates are logically walled off by “type_url“:\n// a Cluster ACK exists in a completely separate world from a prior Route NACK.\n// In particular, “initial_resource_versions“ being sent at the \"start\" of every\n// gRPC stream actually entails a message for each “type_url“, each with its own\n// “initial_resource_versions“.\n// [#next-free-field: 10]\ntype DeltaDiscoveryRequest struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The node making the request.\n\tNode *v3.Node `protobuf:\"bytes,1,opt,name=node,proto3\" json:\"node,omitempty\"`\n\t// Type of the resource that is being requested, e.g.\n\t// “type.googleapis.com/envoy.api.v2.ClusterLoadAssignment“. This does not need to be set if\n\t// resources are only referenced via “xds_resource_subscribe“ and\n\t// “xds_resources_unsubscribe“.\n\tTypeUrl string `protobuf:\"bytes,2,opt,name=type_url,json=typeUrl,proto3\" json:\"type_url,omitempty\"`\n\t// DeltaDiscoveryRequests allow the client to add or remove individual\n\t// resources to the set of tracked resources in the context of a stream.\n\t// All resource names in the “resource_names_subscribe“ list are added to the\n\t// set of tracked resources and all resource names in the “resource_names_unsubscribe“\n\t// list are removed from the set of tracked resources.\n\t//\n\t// *Unlike* state-of-the-world xDS, an empty “resource_names_subscribe“ or\n\t// “resource_names_unsubscribe“ list simply means that no resources are to be\n\t// added or removed to the resource list.\n\t// *Like* state-of-the-world xDS, the server must send updates for all tracked\n\t// resources, but can also send updates for resources the client has not subscribed to.\n\t//\n\t// .. note::\n\t//\n\t//\tThe server must respond with all resources listed in ``resource_names_subscribe``,\n\t//\teven if it believes the client has the most recent version of them. The reason:\n\t//\tthe client may have dropped them, but then regained interest before it had a chance\n\t//\tto send the unsubscribe message. See DeltaSubscriptionStateTest.RemoveThenAdd.\n\t//\n\t// These two fields can be set in any “DeltaDiscoveryRequest“, including ACKs\n\t// and “initial_resource_versions“.\n\t//\n\t// A list of Resource names to add to the list of tracked resources.\n\tResourceNamesSubscribe []string `protobuf:\"bytes,3,rep,name=resource_names_subscribe,json=resourceNamesSubscribe,proto3\" json:\"resource_names_subscribe,omitempty\"`\n\t// A list of Resource names to remove from the list of tracked resources.\n\tResourceNamesUnsubscribe []string `protobuf:\"bytes,4,rep,name=resource_names_unsubscribe,json=resourceNamesUnsubscribe,proto3\" json:\"resource_names_unsubscribe,omitempty\"`\n\t// [#not-implemented-hide:]\n\t// Alternative to “resource_names_subscribe“ field that allows specifying dynamic parameters\n\t// along with each resource name.\n\t//\n\t// .. note::\n\t//\n\t//\tIt is legal for a request to have some resources listed\n\t//\tin ``resource_names_subscribe`` and others in ``resource_locators_subscribe``.\n\tResourceLocatorsSubscribe []*ResourceLocator `protobuf:\"bytes,8,rep,name=resource_locators_subscribe,json=resourceLocatorsSubscribe,proto3\" json:\"resource_locators_subscribe,omitempty\"`\n\t// [#not-implemented-hide:]\n\t// Alternative to “resource_names_unsubscribe“ field that allows specifying dynamic parameters\n\t// along with each resource name.\n\t//\n\t// .. note::\n\t//\n\t//\tIt is legal for a request to have some resources listed\n\t//\tin ``resource_names_unsubscribe`` and others in ``resource_locators_unsubscribe``.\n\tResourceLocatorsUnsubscribe []*ResourceLocator `protobuf:\"bytes,9,rep,name=resource_locators_unsubscribe,json=resourceLocatorsUnsubscribe,proto3\" json:\"resource_locators_unsubscribe,omitempty\"`\n\t// Informs the server of the versions of the resources the xDS client knows of, to enable the\n\t// client to continue the same logical xDS session even in the face of gRPC stream reconnection.\n\t// It will not be populated:\n\t//\n\t//   - In the very first stream of a session, since the client will not yet have any resources.\n\t//   - In any message after the first in a stream (for a given “type_url“), since the server will\n\t//     already be correctly tracking the client's state.\n\t//\n\t// (In ADS, the first message “of each type_url“ of a reconnected stream populates this map.)\n\t// The map's keys are names of xDS resources known to the xDS client.\n\t// The map's values are opaque resource versions.\n\tInitialResourceVersions map[string]string `protobuf:\"bytes,5,rep,name=initial_resource_versions,json=initialResourceVersions,proto3\" json:\"initial_resource_versions,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\t// When the “DeltaDiscoveryRequest“ is a ACK or NACK message in response\n\t// to a previous “DeltaDiscoveryResponse“, the “response_nonce“ must be the\n\t// nonce in the “DeltaDiscoveryResponse“.\n\t// Otherwise (unlike in “DiscoveryRequest“) “response_nonce“ must be omitted.\n\tResponseNonce string `protobuf:\"bytes,6,opt,name=response_nonce,json=responseNonce,proto3\" json:\"response_nonce,omitempty\"`\n\t// This is populated when the previous :ref:`DiscoveryResponse <envoy_v3_api_msg_service.discovery.v3.DiscoveryResponse>`\n\t// failed to update configuration. The “message“ field in “error_details“\n\t// provides the Envoy internal exception related to the failure.\n\tErrorDetail   *status.Status `protobuf:\"bytes,7,opt,name=error_detail,json=errorDetail,proto3\" json:\"error_detail,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DeltaDiscoveryRequest) Reset() {\n\t*x = DeltaDiscoveryRequest{}\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DeltaDiscoveryRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DeltaDiscoveryRequest) ProtoMessage() {}\n\nfunc (x *DeltaDiscoveryRequest) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DeltaDiscoveryRequest.ProtoReflect.Descriptor instead.\nfunc (*DeltaDiscoveryRequest) Descriptor() ([]byte, []int) {\n\treturn file_envoy_service_discovery_v3_discovery_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *DeltaDiscoveryRequest) GetNode() *v3.Node {\n\tif x != nil {\n\t\treturn x.Node\n\t}\n\treturn nil\n}\n\nfunc (x *DeltaDiscoveryRequest) GetTypeUrl() string {\n\tif x != nil {\n\t\treturn x.TypeUrl\n\t}\n\treturn \"\"\n}\n\nfunc (x *DeltaDiscoveryRequest) GetResourceNamesSubscribe() []string {\n\tif x != nil {\n\t\treturn x.ResourceNamesSubscribe\n\t}\n\treturn nil\n}\n\nfunc (x *DeltaDiscoveryRequest) GetResourceNamesUnsubscribe() []string {\n\tif x != nil {\n\t\treturn x.ResourceNamesUnsubscribe\n\t}\n\treturn nil\n}\n\nfunc (x *DeltaDiscoveryRequest) GetResourceLocatorsSubscribe() []*ResourceLocator {\n\tif x != nil {\n\t\treturn x.ResourceLocatorsSubscribe\n\t}\n\treturn nil\n}\n\nfunc (x *DeltaDiscoveryRequest) GetResourceLocatorsUnsubscribe() []*ResourceLocator {\n\tif x != nil {\n\t\treturn x.ResourceLocatorsUnsubscribe\n\t}\n\treturn nil\n}\n\nfunc (x *DeltaDiscoveryRequest) GetInitialResourceVersions() map[string]string {\n\tif x != nil {\n\t\treturn x.InitialResourceVersions\n\t}\n\treturn nil\n}\n\nfunc (x *DeltaDiscoveryRequest) GetResponseNonce() string {\n\tif x != nil {\n\t\treturn x.ResponseNonce\n\t}\n\treturn \"\"\n}\n\nfunc (x *DeltaDiscoveryRequest) GetErrorDetail() *status.Status {\n\tif x != nil {\n\t\treturn x.ErrorDetail\n\t}\n\treturn nil\n}\n\n// [#next-free-field: 10]\ntype DeltaDiscoveryResponse struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The version of the response data (used for debugging).\n\tSystemVersionInfo string `protobuf:\"bytes,1,opt,name=system_version_info,json=systemVersionInfo,proto3\" json:\"system_version_info,omitempty\"`\n\t// The response resources. These are typed resources, whose types must match\n\t// the “type_url“ field.\n\tResources []*Resource `protobuf:\"bytes,2,rep,name=resources,proto3\" json:\"resources,omitempty\"`\n\t// Type URL for resources. Identifies the xDS API when muxing over ADS.\n\t// Must be consistent with the “type_url“ in the Any within 'resources' if 'resources' is non-empty.\n\tTypeUrl string `protobuf:\"bytes,4,opt,name=type_url,json=typeUrl,proto3\" json:\"type_url,omitempty\"`\n\t// Resource names of resources that have been deleted and to be removed from the xDS Client.\n\t// Removed resources for missing resources can be ignored.\n\tRemovedResources []string `protobuf:\"bytes,6,rep,name=removed_resources,json=removedResources,proto3\" json:\"removed_resources,omitempty\"`\n\t// Alternative to “removed_resources“ that allows specifying which variant of\n\t// a resource is being removed. This variant must be used for any resource\n\t// for which dynamic parameter constraints were sent to the client.\n\tRemovedResourceNames []*ResourceName `protobuf:\"bytes,8,rep,name=removed_resource_names,json=removedResourceNames,proto3\" json:\"removed_resource_names,omitempty\"`\n\t// The nonce provides a way for “DeltaDiscoveryRequests“ to uniquely\n\t// reference a “DeltaDiscoveryResponse“ when (N)ACKing. The nonce is required.\n\tNonce string `protobuf:\"bytes,5,opt,name=nonce,proto3\" json:\"nonce,omitempty\"`\n\t// [#not-implemented-hide:]\n\t// The control plane instance that sent the response.\n\tControlPlane *v3.ControlPlane `protobuf:\"bytes,7,opt,name=control_plane,json=controlPlane,proto3\" json:\"control_plane,omitempty\"`\n\t// [#not-implemented-hide:]\n\t// Errors associated with specific resources.\n\t//\n\t// .. note::\n\t//\n\t//\tA resource in this field with a status of NOT_FOUND should be treated the same as\n\t//\ta resource listed in the ``removed_resources`` or ``removed_resource_names`` fields.\n\tResourceErrors []*ResourceError `protobuf:\"bytes,9,rep,name=resource_errors,json=resourceErrors,proto3\" json:\"resource_errors,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *DeltaDiscoveryResponse) Reset() {\n\t*x = DeltaDiscoveryResponse{}\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DeltaDiscoveryResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DeltaDiscoveryResponse) ProtoMessage() {}\n\nfunc (x *DeltaDiscoveryResponse) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DeltaDiscoveryResponse.ProtoReflect.Descriptor instead.\nfunc (*DeltaDiscoveryResponse) Descriptor() ([]byte, []int) {\n\treturn file_envoy_service_discovery_v3_discovery_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *DeltaDiscoveryResponse) GetSystemVersionInfo() string {\n\tif x != nil {\n\t\treturn x.SystemVersionInfo\n\t}\n\treturn \"\"\n}\n\nfunc (x *DeltaDiscoveryResponse) GetResources() []*Resource {\n\tif x != nil {\n\t\treturn x.Resources\n\t}\n\treturn nil\n}\n\nfunc (x *DeltaDiscoveryResponse) GetTypeUrl() string {\n\tif x != nil {\n\t\treturn x.TypeUrl\n\t}\n\treturn \"\"\n}\n\nfunc (x *DeltaDiscoveryResponse) GetRemovedResources() []string {\n\tif x != nil {\n\t\treturn x.RemovedResources\n\t}\n\treturn nil\n}\n\nfunc (x *DeltaDiscoveryResponse) GetRemovedResourceNames() []*ResourceName {\n\tif x != nil {\n\t\treturn x.RemovedResourceNames\n\t}\n\treturn nil\n}\n\nfunc (x *DeltaDiscoveryResponse) GetNonce() string {\n\tif x != nil {\n\t\treturn x.Nonce\n\t}\n\treturn \"\"\n}\n\nfunc (x *DeltaDiscoveryResponse) GetControlPlane() *v3.ControlPlane {\n\tif x != nil {\n\t\treturn x.ControlPlane\n\t}\n\treturn nil\n}\n\nfunc (x *DeltaDiscoveryResponse) GetResourceErrors() []*ResourceError {\n\tif x != nil {\n\t\treturn x.ResourceErrors\n\t}\n\treturn nil\n}\n\n// A set of dynamic parameter constraints associated with a variant of an individual xDS resource.\n// These constraints determine whether the resource matches a subscription based on the set of\n// dynamic parameters in the subscription, as specified in the\n// :ref:`ResourceLocator.dynamic_parameters <envoy_v3_api_field_service.discovery.v3.ResourceLocator.dynamic_parameters>`\n// field. This allows xDS implementations (clients, servers, and caching proxies) to determine\n// which variant of a resource is appropriate for a given client.\ntype DynamicParameterConstraints struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Type:\n\t//\n\t//\t*DynamicParameterConstraints_Constraint\n\t//\t*DynamicParameterConstraints_OrConstraints\n\t//\t*DynamicParameterConstraints_AndConstraints\n\t//\t*DynamicParameterConstraints_NotConstraints\n\tType          isDynamicParameterConstraints_Type `protobuf_oneof:\"type\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DynamicParameterConstraints) Reset() {\n\t*x = DynamicParameterConstraints{}\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DynamicParameterConstraints) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DynamicParameterConstraints) ProtoMessage() {}\n\nfunc (x *DynamicParameterConstraints) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DynamicParameterConstraints.ProtoReflect.Descriptor instead.\nfunc (*DynamicParameterConstraints) Descriptor() ([]byte, []int) {\n\treturn file_envoy_service_discovery_v3_discovery_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *DynamicParameterConstraints) GetType() isDynamicParameterConstraints_Type {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn nil\n}\n\nfunc (x *DynamicParameterConstraints) GetConstraint() *DynamicParameterConstraints_SingleConstraint {\n\tif x != nil {\n\t\tif x, ok := x.Type.(*DynamicParameterConstraints_Constraint); ok {\n\t\t\treturn x.Constraint\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *DynamicParameterConstraints) GetOrConstraints() *DynamicParameterConstraints_ConstraintList {\n\tif x != nil {\n\t\tif x, ok := x.Type.(*DynamicParameterConstraints_OrConstraints); ok {\n\t\t\treturn x.OrConstraints\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *DynamicParameterConstraints) GetAndConstraints() *DynamicParameterConstraints_ConstraintList {\n\tif x != nil {\n\t\tif x, ok := x.Type.(*DynamicParameterConstraints_AndConstraints); ok {\n\t\t\treturn x.AndConstraints\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *DynamicParameterConstraints) GetNotConstraints() *DynamicParameterConstraints {\n\tif x != nil {\n\t\tif x, ok := x.Type.(*DynamicParameterConstraints_NotConstraints); ok {\n\t\t\treturn x.NotConstraints\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isDynamicParameterConstraints_Type interface {\n\tisDynamicParameterConstraints_Type()\n}\n\ntype DynamicParameterConstraints_Constraint struct {\n\t// A single constraint to evaluate.\n\tConstraint *DynamicParameterConstraints_SingleConstraint `protobuf:\"bytes,1,opt,name=constraint,proto3,oneof\"`\n}\n\ntype DynamicParameterConstraints_OrConstraints struct {\n\t// A list of constraints that match if any one constraint in the list\n\t// matches.\n\tOrConstraints *DynamicParameterConstraints_ConstraintList `protobuf:\"bytes,2,opt,name=or_constraints,json=orConstraints,proto3,oneof\"`\n}\n\ntype DynamicParameterConstraints_AndConstraints struct {\n\t// A list of constraints that must all match.\n\tAndConstraints *DynamicParameterConstraints_ConstraintList `protobuf:\"bytes,3,opt,name=and_constraints,json=andConstraints,proto3,oneof\"`\n}\n\ntype DynamicParameterConstraints_NotConstraints struct {\n\t// The inverse (NOT) of a set of constraints.\n\tNotConstraints *DynamicParameterConstraints `protobuf:\"bytes,4,opt,name=not_constraints,json=notConstraints,proto3,oneof\"`\n}\n\nfunc (*DynamicParameterConstraints_Constraint) isDynamicParameterConstraints_Type() {}\n\nfunc (*DynamicParameterConstraints_OrConstraints) isDynamicParameterConstraints_Type() {}\n\nfunc (*DynamicParameterConstraints_AndConstraints) isDynamicParameterConstraints_Type() {}\n\nfunc (*DynamicParameterConstraints_NotConstraints) isDynamicParameterConstraints_Type() {}\n\n// [#next-free-field: 10]\ntype Resource struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The resource's name, to distinguish it from others of the same type of resource.\n\t// Only one of “name“ or “resource_name“ may be set.\n\tName string `protobuf:\"bytes,3,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Alternative to the “name“ field, to be used when the server supports\n\t// multiple variants of the named resource that are differentiated by\n\t// dynamic parameter constraints.\n\t// Only one of “name“ or “resource_name“ may be set.\n\tResourceName *ResourceName `protobuf:\"bytes,8,opt,name=resource_name,json=resourceName,proto3\" json:\"resource_name,omitempty\"`\n\t// The aliases are a list of other names that this resource can go by.\n\tAliases []string `protobuf:\"bytes,4,rep,name=aliases,proto3\" json:\"aliases,omitempty\"`\n\t// The resource level version. It allows xDS to track the state of individual\n\t// resources.\n\tVersion string `protobuf:\"bytes,1,opt,name=version,proto3\" json:\"version,omitempty\"`\n\t// The resource being tracked.\n\tResource *anypb.Any `protobuf:\"bytes,2,opt,name=resource,proto3\" json:\"resource,omitempty\"`\n\t// Time-to-live value for the resource. For each resource, a timer is started. The timer is\n\t// reset each time the resource is received with a new TTL. If the resource is received with\n\t// no TTL set, the timer is removed for the resource. Upon expiration of the timer, the\n\t// configuration for the resource will be removed.\n\t//\n\t// The TTL can be refreshed or changed by sending a response that doesn't change the resource\n\t// version. In this case the “resource“ field does not need to be populated, which allows for\n\t// light-weight \"heartbeat\" updates to keep a resource with a TTL alive.\n\t//\n\t// The TTL feature is meant to support configurations that should be removed in the event of\n\t// a management server failure. For example, the feature may be used for fault injection\n\t// testing where the fault injection should be terminated in the event that Envoy loses contact\n\t// with the management server.\n\tTtl *durationpb.Duration `protobuf:\"bytes,6,opt,name=ttl,proto3\" json:\"ttl,omitempty\"`\n\t// Cache control properties for the resource.\n\t// [#not-implemented-hide:]\n\tCacheControl *Resource_CacheControl `protobuf:\"bytes,7,opt,name=cache_control,json=cacheControl,proto3\" json:\"cache_control,omitempty\"`\n\t// The Metadata field can be used to provide additional information for the resource.\n\t// E.g. the trace data for debugging.\n\tMetadata      *v3.Metadata `protobuf:\"bytes,9,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Resource) Reset() {\n\t*x = Resource{}\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[8]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Resource) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Resource) ProtoMessage() {}\n\nfunc (x *Resource) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[8]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Resource.ProtoReflect.Descriptor instead.\nfunc (*Resource) Descriptor() ([]byte, []int) {\n\treturn file_envoy_service_discovery_v3_discovery_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *Resource) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *Resource) GetResourceName() *ResourceName {\n\tif x != nil {\n\t\treturn x.ResourceName\n\t}\n\treturn nil\n}\n\nfunc (x *Resource) GetAliases() []string {\n\tif x != nil {\n\t\treturn x.Aliases\n\t}\n\treturn nil\n}\n\nfunc (x *Resource) GetVersion() string {\n\tif x != nil {\n\t\treturn x.Version\n\t}\n\treturn \"\"\n}\n\nfunc (x *Resource) GetResource() *anypb.Any {\n\tif x != nil {\n\t\treturn x.Resource\n\t}\n\treturn nil\n}\n\nfunc (x *Resource) GetTtl() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Ttl\n\t}\n\treturn nil\n}\n\nfunc (x *Resource) GetCacheControl() *Resource_CacheControl {\n\tif x != nil {\n\t\treturn x.CacheControl\n\t}\n\treturn nil\n}\n\nfunc (x *Resource) GetMetadata() *v3.Metadata {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\n// A single constraint for a given key.\ntype DynamicParameterConstraints_SingleConstraint struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The key to match against.\n\tKey string `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// Types that are valid to be assigned to ConstraintType:\n\t//\n\t//\t*DynamicParameterConstraints_SingleConstraint_Value\n\t//\t*DynamicParameterConstraints_SingleConstraint_Exists_\n\tConstraintType isDynamicParameterConstraints_SingleConstraint_ConstraintType `protobuf_oneof:\"constraint_type\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *DynamicParameterConstraints_SingleConstraint) Reset() {\n\t*x = DynamicParameterConstraints_SingleConstraint{}\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[11]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DynamicParameterConstraints_SingleConstraint) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DynamicParameterConstraints_SingleConstraint) ProtoMessage() {}\n\nfunc (x *DynamicParameterConstraints_SingleConstraint) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[11]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DynamicParameterConstraints_SingleConstraint.ProtoReflect.Descriptor instead.\nfunc (*DynamicParameterConstraints_SingleConstraint) Descriptor() ([]byte, []int) {\n\treturn file_envoy_service_discovery_v3_discovery_proto_rawDescGZIP(), []int{7, 0}\n}\n\nfunc (x *DynamicParameterConstraints_SingleConstraint) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\nfunc (x *DynamicParameterConstraints_SingleConstraint) GetConstraintType() isDynamicParameterConstraints_SingleConstraint_ConstraintType {\n\tif x != nil {\n\t\treturn x.ConstraintType\n\t}\n\treturn nil\n}\n\nfunc (x *DynamicParameterConstraints_SingleConstraint) GetValue() string {\n\tif x != nil {\n\t\tif x, ok := x.ConstraintType.(*DynamicParameterConstraints_SingleConstraint_Value); ok {\n\t\t\treturn x.Value\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *DynamicParameterConstraints_SingleConstraint) GetExists() *DynamicParameterConstraints_SingleConstraint_Exists {\n\tif x != nil {\n\t\tif x, ok := x.ConstraintType.(*DynamicParameterConstraints_SingleConstraint_Exists_); ok {\n\t\t\treturn x.Exists\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isDynamicParameterConstraints_SingleConstraint_ConstraintType interface {\n\tisDynamicParameterConstraints_SingleConstraint_ConstraintType()\n}\n\ntype DynamicParameterConstraints_SingleConstraint_Value struct {\n\t// Matches this exact value.\n\tValue string `protobuf:\"bytes,2,opt,name=value,proto3,oneof\"`\n}\n\ntype DynamicParameterConstraints_SingleConstraint_Exists_ struct {\n\t// Key is present (matches any value except for the key being absent).\n\t// This allows setting a default constraint for clients that do\n\t// not send a key at all, while there may be other clients that need\n\t// special configuration based on that key.\n\tExists *DynamicParameterConstraints_SingleConstraint_Exists `protobuf:\"bytes,3,opt,name=exists,proto3,oneof\"`\n}\n\nfunc (*DynamicParameterConstraints_SingleConstraint_Value) isDynamicParameterConstraints_SingleConstraint_ConstraintType() {\n}\n\nfunc (*DynamicParameterConstraints_SingleConstraint_Exists_) isDynamicParameterConstraints_SingleConstraint_ConstraintType() {\n}\n\ntype DynamicParameterConstraints_ConstraintList struct {\n\tstate         protoimpl.MessageState         `protogen:\"open.v1\"`\n\tConstraints   []*DynamicParameterConstraints `protobuf:\"bytes,1,rep,name=constraints,proto3\" json:\"constraints,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DynamicParameterConstraints_ConstraintList) Reset() {\n\t*x = DynamicParameterConstraints_ConstraintList{}\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[12]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DynamicParameterConstraints_ConstraintList) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DynamicParameterConstraints_ConstraintList) ProtoMessage() {}\n\nfunc (x *DynamicParameterConstraints_ConstraintList) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[12]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DynamicParameterConstraints_ConstraintList.ProtoReflect.Descriptor instead.\nfunc (*DynamicParameterConstraints_ConstraintList) Descriptor() ([]byte, []int) {\n\treturn file_envoy_service_discovery_v3_discovery_proto_rawDescGZIP(), []int{7, 1}\n}\n\nfunc (x *DynamicParameterConstraints_ConstraintList) GetConstraints() []*DynamicParameterConstraints {\n\tif x != nil {\n\t\treturn x.Constraints\n\t}\n\treturn nil\n}\n\ntype DynamicParameterConstraints_SingleConstraint_Exists struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DynamicParameterConstraints_SingleConstraint_Exists) Reset() {\n\t*x = DynamicParameterConstraints_SingleConstraint_Exists{}\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[13]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DynamicParameterConstraints_SingleConstraint_Exists) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DynamicParameterConstraints_SingleConstraint_Exists) ProtoMessage() {}\n\nfunc (x *DynamicParameterConstraints_SingleConstraint_Exists) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[13]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DynamicParameterConstraints_SingleConstraint_Exists.ProtoReflect.Descriptor instead.\nfunc (*DynamicParameterConstraints_SingleConstraint_Exists) Descriptor() ([]byte, []int) {\n\treturn file_envoy_service_discovery_v3_discovery_proto_rawDescGZIP(), []int{7, 0, 0}\n}\n\n// Cache control properties for the resource.\n// [#not-implemented-hide:]\ntype Resource_CacheControl struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// If true, xDS proxies may not cache this resource.\n\t//\n\t// .. note::\n\t//\n\t//\tThis does not apply to clients other than xDS proxies, which must cache resources\n\t//\tfor their own use, regardless of the value of this field.\n\tDoNotCache    bool `protobuf:\"varint,1,opt,name=do_not_cache,json=doNotCache,proto3\" json:\"do_not_cache,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Resource_CacheControl) Reset() {\n\t*x = Resource_CacheControl{}\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[14]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Resource_CacheControl) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Resource_CacheControl) ProtoMessage() {}\n\nfunc (x *Resource_CacheControl) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_service_discovery_v3_discovery_proto_msgTypes[14]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Resource_CacheControl.ProtoReflect.Descriptor instead.\nfunc (*Resource_CacheControl) Descriptor() ([]byte, []int) {\n\treturn file_envoy_service_discovery_v3_discovery_proto_rawDescGZIP(), []int{8, 0}\n}\n\nfunc (x *Resource_CacheControl) GetDoNotCache() bool {\n\tif x != nil {\n\t\treturn x.DoNotCache\n\t}\n\treturn false\n}\n\nvar File_envoy_service_discovery_v3_discovery_proto protoreflect.FileDescriptor\n\nconst file_envoy_service_discovery_v3_discovery_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"*envoy/service/discovery/v3/discovery.proto\\x12\\x1aenvoy.service.discovery.v3\\x1a\\x1fenvoy/config/core/v3/base.proto\\x1a\\x19google/protobuf/any.proto\\x1a\\x1egoogle/protobuf/duration.proto\\x1a\\x17google/rpc/status.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xde\\x01\\n\" +\n\t\"\\x0fResourceLocator\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12q\\n\" +\n\t\"\\x12dynamic_parameters\\x18\\x02 \\x03(\\v2B.envoy.service.discovery.v3.ResourceLocator.DynamicParametersEntryR\\x11dynamicParameters\\x1aD\\n\" +\n\t\"\\x16DynamicParametersEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\tR\\x05value:\\x028\\x01\\\"\\x9f\\x01\\n\" +\n\t\"\\fResourceName\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12{\\n\" +\n\t\"\\x1ddynamic_parameter_constraints\\x18\\x02 \\x01(\\v27.envoy.service.discovery.v3.DynamicParameterConstraintsR\\x1bdynamicParameterConstraints\\\"\\x95\\x01\\n\" +\n\t\"\\rResourceError\\x12M\\n\" +\n\t\"\\rresource_name\\x18\\x01 \\x01(\\v2(.envoy.service.discovery.v3.ResourceNameR\\fresourceName\\x125\\n\" +\n\t\"\\ferror_detail\\x18\\x02 \\x01(\\v2\\x12.google.rpc.StatusR\\verrorDetail\\\"\\x85\\x03\\n\" +\n\t\"\\x10DiscoveryRequest\\x12!\\n\" +\n\t\"\\fversion_info\\x18\\x01 \\x01(\\tR\\vversionInfo\\x12.\\n\" +\n\t\"\\x04node\\x18\\x02 \\x01(\\v2\\x1a.envoy.config.core.v3.NodeR\\x04node\\x12%\\n\" +\n\t\"\\x0eresource_names\\x18\\x03 \\x03(\\tR\\rresourceNames\\x12X\\n\" +\n\t\"\\x11resource_locators\\x18\\a \\x03(\\v2+.envoy.service.discovery.v3.ResourceLocatorR\\x10resourceLocators\\x12\\x19\\n\" +\n\t\"\\btype_url\\x18\\x04 \\x01(\\tR\\atypeUrl\\x12%\\n\" +\n\t\"\\x0eresponse_nonce\\x18\\x05 \\x01(\\tR\\rresponseNonce\\x125\\n\" +\n\t\"\\ferror_detail\\x18\\x06 \\x01(\\v2\\x12.google.rpc.StatusR\\verrorDetail:$\\x9aň\\x1e\\x1f\\n\" +\n\t\"\\x1denvoy.api.v2.DiscoveryRequest\\\"\\xf7\\x02\\n\" +\n\t\"\\x11DiscoveryResponse\\x12!\\n\" +\n\t\"\\fversion_info\\x18\\x01 \\x01(\\tR\\vversionInfo\\x122\\n\" +\n\t\"\\tresources\\x18\\x02 \\x03(\\v2\\x14.google.protobuf.AnyR\\tresources\\x12\\x16\\n\" +\n\t\"\\x06canary\\x18\\x03 \\x01(\\bR\\x06canary\\x12\\x19\\n\" +\n\t\"\\btype_url\\x18\\x04 \\x01(\\tR\\atypeUrl\\x12\\x14\\n\" +\n\t\"\\x05nonce\\x18\\x05 \\x01(\\tR\\x05nonce\\x12G\\n\" +\n\t\"\\rcontrol_plane\\x18\\x06 \\x01(\\v2\\\".envoy.config.core.v3.ControlPlaneR\\fcontrolPlane\\x12R\\n\" +\n\t\"\\x0fresource_errors\\x18\\a \\x03(\\v2).envoy.service.discovery.v3.ResourceErrorR\\x0eresourceErrors:%\\x9aň\\x1e \\n\" +\n\t\"\\x1eenvoy.api.v2.DiscoveryResponse\\\"\\x9a\\x06\\n\" +\n\t\"\\x15DeltaDiscoveryRequest\\x12.\\n\" +\n\t\"\\x04node\\x18\\x01 \\x01(\\v2\\x1a.envoy.config.core.v3.NodeR\\x04node\\x12\\x19\\n\" +\n\t\"\\btype_url\\x18\\x02 \\x01(\\tR\\atypeUrl\\x128\\n\" +\n\t\"\\x18resource_names_subscribe\\x18\\x03 \\x03(\\tR\\x16resourceNamesSubscribe\\x12<\\n\" +\n\t\"\\x1aresource_names_unsubscribe\\x18\\x04 \\x03(\\tR\\x18resourceNamesUnsubscribe\\x12k\\n\" +\n\t\"\\x1bresource_locators_subscribe\\x18\\b \\x03(\\v2+.envoy.service.discovery.v3.ResourceLocatorR\\x19resourceLocatorsSubscribe\\x12o\\n\" +\n\t\"\\x1dresource_locators_unsubscribe\\x18\\t \\x03(\\v2+.envoy.service.discovery.v3.ResourceLocatorR\\x1bresourceLocatorsUnsubscribe\\x12\\x8a\\x01\\n\" +\n\t\"\\x19initial_resource_versions\\x18\\x05 \\x03(\\v2N.envoy.service.discovery.v3.DeltaDiscoveryRequest.InitialResourceVersionsEntryR\\x17initialResourceVersions\\x12%\\n\" +\n\t\"\\x0eresponse_nonce\\x18\\x06 \\x01(\\tR\\rresponseNonce\\x125\\n\" +\n\t\"\\ferror_detail\\x18\\a \\x01(\\v2\\x12.google.rpc.StatusR\\verrorDetail\\x1aJ\\n\" +\n\t\"\\x1cInitialResourceVersionsEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\tR\\x05value:\\x028\\x01:)\\x9aň\\x1e$\\n\" +\n\t\"\\\"envoy.api.v2.DeltaDiscoveryRequest\\\"\\x93\\x04\\n\" +\n\t\"\\x16DeltaDiscoveryResponse\\x12.\\n\" +\n\t\"\\x13system_version_info\\x18\\x01 \\x01(\\tR\\x11systemVersionInfo\\x12B\\n\" +\n\t\"\\tresources\\x18\\x02 \\x03(\\v2$.envoy.service.discovery.v3.ResourceR\\tresources\\x12\\x19\\n\" +\n\t\"\\btype_url\\x18\\x04 \\x01(\\tR\\atypeUrl\\x12+\\n\" +\n\t\"\\x11removed_resources\\x18\\x06 \\x03(\\tR\\x10removedResources\\x12^\\n\" +\n\t\"\\x16removed_resource_names\\x18\\b \\x03(\\v2(.envoy.service.discovery.v3.ResourceNameR\\x14removedResourceNames\\x12\\x14\\n\" +\n\t\"\\x05nonce\\x18\\x05 \\x01(\\tR\\x05nonce\\x12G\\n\" +\n\t\"\\rcontrol_plane\\x18\\a \\x01(\\v2\\\".envoy.config.core.v3.ControlPlaneR\\fcontrolPlane\\x12R\\n\" +\n\t\"\\x0fresource_errors\\x18\\t \\x03(\\v2).envoy.service.discovery.v3.ResourceErrorR\\x0eresourceErrors:*\\x9aň\\x1e%\\n\" +\n\t\"#envoy.api.v2.DeltaDiscoveryResponse\\\"\\x92\\x06\\n\" +\n\t\"\\x1bDynamicParameterConstraints\\x12j\\n\" +\n\t\"\\n\" +\n\t\"constraint\\x18\\x01 \\x01(\\v2H.envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraintH\\x00R\\n\" +\n\t\"constraint\\x12o\\n\" +\n\t\"\\x0eor_constraints\\x18\\x02 \\x01(\\v2F.envoy.service.discovery.v3.DynamicParameterConstraints.ConstraintListH\\x00R\\rorConstraints\\x12q\\n\" +\n\t\"\\x0fand_constraints\\x18\\x03 \\x01(\\v2F.envoy.service.discovery.v3.DynamicParameterConstraints.ConstraintListH\\x00R\\x0eandConstraints\\x12b\\n\" +\n\t\"\\x0fnot_constraints\\x18\\x04 \\x01(\\v27.envoy.service.discovery.v3.DynamicParameterConstraintsH\\x00R\\x0enotConstraints\\x1a\\xc9\\x01\\n\" +\n\t\"\\x10SingleConstraint\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12\\x16\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\tH\\x00R\\x05value\\x12i\\n\" +\n\t\"\\x06exists\\x18\\x03 \\x01(\\v2O.envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraint.ExistsH\\x00R\\x06exists\\x1a\\b\\n\" +\n\t\"\\x06ExistsB\\x16\\n\" +\n\t\"\\x0fconstraint_type\\x12\\x03\\xf8B\\x01\\x1ak\\n\" +\n\t\"\\x0eConstraintList\\x12Y\\n\" +\n\t\"\\vconstraints\\x18\\x01 \\x03(\\v27.envoy.service.discovery.v3.DynamicParameterConstraintsR\\vconstraintsB\\x06\\n\" +\n\t\"\\x04type\\\"\\xe4\\x03\\n\" +\n\t\"\\bResource\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x03 \\x01(\\tR\\x04name\\x12M\\n\" +\n\t\"\\rresource_name\\x18\\b \\x01(\\v2(.envoy.service.discovery.v3.ResourceNameR\\fresourceName\\x12\\x18\\n\" +\n\t\"\\aaliases\\x18\\x04 \\x03(\\tR\\aaliases\\x12\\x18\\n\" +\n\t\"\\aversion\\x18\\x01 \\x01(\\tR\\aversion\\x120\\n\" +\n\t\"\\bresource\\x18\\x02 \\x01(\\v2\\x14.google.protobuf.AnyR\\bresource\\x12+\\n\" +\n\t\"\\x03ttl\\x18\\x06 \\x01(\\v2\\x19.google.protobuf.DurationR\\x03ttl\\x12V\\n\" +\n\t\"\\rcache_control\\x18\\a \\x01(\\v21.envoy.service.discovery.v3.Resource.CacheControlR\\fcacheControl\\x12:\\n\" +\n\t\"\\bmetadata\\x18\\t \\x01(\\v2\\x1e.envoy.config.core.v3.MetadataR\\bmetadata\\x1a0\\n\" +\n\t\"\\fCacheControl\\x12 \\n\" +\n\t\"\\fdo_not_cache\\x18\\x01 \\x01(\\bR\\n\" +\n\t\"doNotCache:\\x1c\\x9aň\\x1e\\x17\\n\" +\n\t\"\\x15envoy.api.v2.ResourceB\\x93\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"(io.envoyproxy.envoy.service.discovery.v3B\\x0eDiscoveryProtoP\\x01ZMgithub.com/envoyproxy/go-control-plane/envoy/service/discovery/v3;discoveryv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_service_discovery_v3_discovery_proto_rawDescOnce sync.Once\n\tfile_envoy_service_discovery_v3_discovery_proto_rawDescData []byte\n)\n\nfunc file_envoy_service_discovery_v3_discovery_proto_rawDescGZIP() []byte {\n\tfile_envoy_service_discovery_v3_discovery_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_service_discovery_v3_discovery_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_service_discovery_v3_discovery_proto_rawDesc), len(file_envoy_service_discovery_v3_discovery_proto_rawDesc)))\n\t})\n\treturn file_envoy_service_discovery_v3_discovery_proto_rawDescData\n}\n\nvar file_envoy_service_discovery_v3_discovery_proto_msgTypes = make([]protoimpl.MessageInfo, 15)\nvar file_envoy_service_discovery_v3_discovery_proto_goTypes = []any{\n\t(*ResourceLocator)(nil),             // 0: envoy.service.discovery.v3.ResourceLocator\n\t(*ResourceName)(nil),                // 1: envoy.service.discovery.v3.ResourceName\n\t(*ResourceError)(nil),               // 2: envoy.service.discovery.v3.ResourceError\n\t(*DiscoveryRequest)(nil),            // 3: envoy.service.discovery.v3.DiscoveryRequest\n\t(*DiscoveryResponse)(nil),           // 4: envoy.service.discovery.v3.DiscoveryResponse\n\t(*DeltaDiscoveryRequest)(nil),       // 5: envoy.service.discovery.v3.DeltaDiscoveryRequest\n\t(*DeltaDiscoveryResponse)(nil),      // 6: envoy.service.discovery.v3.DeltaDiscoveryResponse\n\t(*DynamicParameterConstraints)(nil), // 7: envoy.service.discovery.v3.DynamicParameterConstraints\n\t(*Resource)(nil),                    // 8: envoy.service.discovery.v3.Resource\n\tnil,                                 // 9: envoy.service.discovery.v3.ResourceLocator.DynamicParametersEntry\n\tnil,                                 // 10: envoy.service.discovery.v3.DeltaDiscoveryRequest.InitialResourceVersionsEntry\n\t(*DynamicParameterConstraints_SingleConstraint)(nil),        // 11: envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraint\n\t(*DynamicParameterConstraints_ConstraintList)(nil),          // 12: envoy.service.discovery.v3.DynamicParameterConstraints.ConstraintList\n\t(*DynamicParameterConstraints_SingleConstraint_Exists)(nil), // 13: envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraint.Exists\n\t(*Resource_CacheControl)(nil),                               // 14: envoy.service.discovery.v3.Resource.CacheControl\n\t(*status.Status)(nil),                                       // 15: google.rpc.Status\n\t(*v3.Node)(nil),                                             // 16: envoy.config.core.v3.Node\n\t(*anypb.Any)(nil),                                           // 17: google.protobuf.Any\n\t(*v3.ControlPlane)(nil),                                     // 18: envoy.config.core.v3.ControlPlane\n\t(*durationpb.Duration)(nil),                                 // 19: google.protobuf.Duration\n\t(*v3.Metadata)(nil),                                         // 20: envoy.config.core.v3.Metadata\n}\nvar file_envoy_service_discovery_v3_discovery_proto_depIdxs = []int32{\n\t9,  // 0: envoy.service.discovery.v3.ResourceLocator.dynamic_parameters:type_name -> envoy.service.discovery.v3.ResourceLocator.DynamicParametersEntry\n\t7,  // 1: envoy.service.discovery.v3.ResourceName.dynamic_parameter_constraints:type_name -> envoy.service.discovery.v3.DynamicParameterConstraints\n\t1,  // 2: envoy.service.discovery.v3.ResourceError.resource_name:type_name -> envoy.service.discovery.v3.ResourceName\n\t15, // 3: envoy.service.discovery.v3.ResourceError.error_detail:type_name -> google.rpc.Status\n\t16, // 4: envoy.service.discovery.v3.DiscoveryRequest.node:type_name -> envoy.config.core.v3.Node\n\t0,  // 5: envoy.service.discovery.v3.DiscoveryRequest.resource_locators:type_name -> envoy.service.discovery.v3.ResourceLocator\n\t15, // 6: envoy.service.discovery.v3.DiscoveryRequest.error_detail:type_name -> google.rpc.Status\n\t17, // 7: envoy.service.discovery.v3.DiscoveryResponse.resources:type_name -> google.protobuf.Any\n\t18, // 8: envoy.service.discovery.v3.DiscoveryResponse.control_plane:type_name -> envoy.config.core.v3.ControlPlane\n\t2,  // 9: envoy.service.discovery.v3.DiscoveryResponse.resource_errors:type_name -> envoy.service.discovery.v3.ResourceError\n\t16, // 10: envoy.service.discovery.v3.DeltaDiscoveryRequest.node:type_name -> envoy.config.core.v3.Node\n\t0,  // 11: envoy.service.discovery.v3.DeltaDiscoveryRequest.resource_locators_subscribe:type_name -> envoy.service.discovery.v3.ResourceLocator\n\t0,  // 12: envoy.service.discovery.v3.DeltaDiscoveryRequest.resource_locators_unsubscribe:type_name -> envoy.service.discovery.v3.ResourceLocator\n\t10, // 13: envoy.service.discovery.v3.DeltaDiscoveryRequest.initial_resource_versions:type_name -> envoy.service.discovery.v3.DeltaDiscoveryRequest.InitialResourceVersionsEntry\n\t15, // 14: envoy.service.discovery.v3.DeltaDiscoveryRequest.error_detail:type_name -> google.rpc.Status\n\t8,  // 15: envoy.service.discovery.v3.DeltaDiscoveryResponse.resources:type_name -> envoy.service.discovery.v3.Resource\n\t1,  // 16: envoy.service.discovery.v3.DeltaDiscoveryResponse.removed_resource_names:type_name -> envoy.service.discovery.v3.ResourceName\n\t18, // 17: envoy.service.discovery.v3.DeltaDiscoveryResponse.control_plane:type_name -> envoy.config.core.v3.ControlPlane\n\t2,  // 18: envoy.service.discovery.v3.DeltaDiscoveryResponse.resource_errors:type_name -> envoy.service.discovery.v3.ResourceError\n\t11, // 19: envoy.service.discovery.v3.DynamicParameterConstraints.constraint:type_name -> envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraint\n\t12, // 20: envoy.service.discovery.v3.DynamicParameterConstraints.or_constraints:type_name -> envoy.service.discovery.v3.DynamicParameterConstraints.ConstraintList\n\t12, // 21: envoy.service.discovery.v3.DynamicParameterConstraints.and_constraints:type_name -> envoy.service.discovery.v3.DynamicParameterConstraints.ConstraintList\n\t7,  // 22: envoy.service.discovery.v3.DynamicParameterConstraints.not_constraints:type_name -> envoy.service.discovery.v3.DynamicParameterConstraints\n\t1,  // 23: envoy.service.discovery.v3.Resource.resource_name:type_name -> envoy.service.discovery.v3.ResourceName\n\t17, // 24: envoy.service.discovery.v3.Resource.resource:type_name -> google.protobuf.Any\n\t19, // 25: envoy.service.discovery.v3.Resource.ttl:type_name -> google.protobuf.Duration\n\t14, // 26: envoy.service.discovery.v3.Resource.cache_control:type_name -> envoy.service.discovery.v3.Resource.CacheControl\n\t20, // 27: envoy.service.discovery.v3.Resource.metadata:type_name -> envoy.config.core.v3.Metadata\n\t13, // 28: envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraint.exists:type_name -> envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraint.Exists\n\t7,  // 29: envoy.service.discovery.v3.DynamicParameterConstraints.ConstraintList.constraints:type_name -> envoy.service.discovery.v3.DynamicParameterConstraints\n\t30, // [30:30] is the sub-list for method output_type\n\t30, // [30:30] is the sub-list for method input_type\n\t30, // [30:30] is the sub-list for extension type_name\n\t30, // [30:30] is the sub-list for extension extendee\n\t0,  // [0:30] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_service_discovery_v3_discovery_proto_init() }\nfunc file_envoy_service_discovery_v3_discovery_proto_init() {\n\tif File_envoy_service_discovery_v3_discovery_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_service_discovery_v3_discovery_proto_msgTypes[7].OneofWrappers = []any{\n\t\t(*DynamicParameterConstraints_Constraint)(nil),\n\t\t(*DynamicParameterConstraints_OrConstraints)(nil),\n\t\t(*DynamicParameterConstraints_AndConstraints)(nil),\n\t\t(*DynamicParameterConstraints_NotConstraints)(nil),\n\t}\n\tfile_envoy_service_discovery_v3_discovery_proto_msgTypes[11].OneofWrappers = []any{\n\t\t(*DynamicParameterConstraints_SingleConstraint_Value)(nil),\n\t\t(*DynamicParameterConstraints_SingleConstraint_Exists_)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_service_discovery_v3_discovery_proto_rawDesc), len(file_envoy_service_discovery_v3_discovery_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   15,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_service_discovery_v3_discovery_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_service_discovery_v3_discovery_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_service_discovery_v3_discovery_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_service_discovery_v3_discovery_proto = out.File\n\tfile_envoy_service_discovery_v3_discovery_proto_goTypes = nil\n\tfile_envoy_service_discovery_v3_discovery_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3/discovery.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/service/discovery/v3/discovery.proto\n\npackage discoveryv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on ResourceLocator with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *ResourceLocator) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ResourceLocator with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ResourceLocatorMultiError, or nil if none found.\nfunc (m *ResourceLocator) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ResourceLocator) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Name\n\n\t// no validation rules for DynamicParameters\n\n\tif len(errors) > 0 {\n\t\treturn ResourceLocatorMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ResourceLocatorMultiError is an error wrapping multiple validation errors\n// returned by ResourceLocator.ValidateAll() if the designated constraints\n// aren't met.\ntype ResourceLocatorMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ResourceLocatorMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ResourceLocatorMultiError) AllErrors() []error { return m }\n\n// ResourceLocatorValidationError is the validation error returned by\n// ResourceLocator.Validate if the designated constraints aren't met.\ntype ResourceLocatorValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ResourceLocatorValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ResourceLocatorValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ResourceLocatorValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ResourceLocatorValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ResourceLocatorValidationError) ErrorName() string { return \"ResourceLocatorValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e ResourceLocatorValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sResourceLocator.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ResourceLocatorValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ResourceLocatorValidationError{}\n\n// Validate checks the field values on ResourceName with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *ResourceName) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ResourceName with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in ResourceNameMultiError, or\n// nil if none found.\nfunc (m *ResourceName) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ResourceName) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Name\n\n\tif all {\n\t\tswitch v := interface{}(m.GetDynamicParameterConstraints()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ResourceNameValidationError{\n\t\t\t\t\tfield:  \"DynamicParameterConstraints\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ResourceNameValidationError{\n\t\t\t\t\tfield:  \"DynamicParameterConstraints\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetDynamicParameterConstraints()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ResourceNameValidationError{\n\t\t\t\tfield:  \"DynamicParameterConstraints\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ResourceNameMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ResourceNameMultiError is an error wrapping multiple validation errors\n// returned by ResourceName.ValidateAll() if the designated constraints aren't met.\ntype ResourceNameMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ResourceNameMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ResourceNameMultiError) AllErrors() []error { return m }\n\n// ResourceNameValidationError is the validation error returned by\n// ResourceName.Validate if the designated constraints aren't met.\ntype ResourceNameValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ResourceNameValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ResourceNameValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ResourceNameValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ResourceNameValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ResourceNameValidationError) ErrorName() string { return \"ResourceNameValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e ResourceNameValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sResourceName.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ResourceNameValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ResourceNameValidationError{}\n\n// Validate checks the field values on ResourceError with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *ResourceError) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ResourceError with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in ResourceErrorMultiError, or\n// nil if none found.\nfunc (m *ResourceError) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ResourceError) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetResourceName()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ResourceErrorValidationError{\n\t\t\t\t\tfield:  \"ResourceName\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ResourceErrorValidationError{\n\t\t\t\t\tfield:  \"ResourceName\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetResourceName()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ResourceErrorValidationError{\n\t\t\t\tfield:  \"ResourceName\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetErrorDetail()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ResourceErrorValidationError{\n\t\t\t\t\tfield:  \"ErrorDetail\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ResourceErrorValidationError{\n\t\t\t\t\tfield:  \"ErrorDetail\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetErrorDetail()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ResourceErrorValidationError{\n\t\t\t\tfield:  \"ErrorDetail\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ResourceErrorMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ResourceErrorMultiError is an error wrapping multiple validation errors\n// returned by ResourceError.ValidateAll() if the designated constraints\n// aren't met.\ntype ResourceErrorMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ResourceErrorMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ResourceErrorMultiError) AllErrors() []error { return m }\n\n// ResourceErrorValidationError is the validation error returned by\n// ResourceError.Validate if the designated constraints aren't met.\ntype ResourceErrorValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ResourceErrorValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ResourceErrorValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ResourceErrorValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ResourceErrorValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ResourceErrorValidationError) ErrorName() string { return \"ResourceErrorValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e ResourceErrorValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sResourceError.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ResourceErrorValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ResourceErrorValidationError{}\n\n// Validate checks the field values on DiscoveryRequest with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *DiscoveryRequest) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DiscoveryRequest with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// DiscoveryRequestMultiError, or nil if none found.\nfunc (m *DiscoveryRequest) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DiscoveryRequest) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for VersionInfo\n\n\tif all {\n\t\tswitch v := interface{}(m.GetNode()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, DiscoveryRequestValidationError{\n\t\t\t\t\tfield:  \"Node\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, DiscoveryRequestValidationError{\n\t\t\t\t\tfield:  \"Node\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetNode()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn DiscoveryRequestValidationError{\n\t\t\t\tfield:  \"Node\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetResourceLocators() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DiscoveryRequestValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceLocators[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DiscoveryRequestValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceLocators[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DiscoveryRequestValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceLocators[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// no validation rules for TypeUrl\n\n\t// no validation rules for ResponseNonce\n\n\tif all {\n\t\tswitch v := interface{}(m.GetErrorDetail()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, DiscoveryRequestValidationError{\n\t\t\t\t\tfield:  \"ErrorDetail\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, DiscoveryRequestValidationError{\n\t\t\t\t\tfield:  \"ErrorDetail\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetErrorDetail()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn DiscoveryRequestValidationError{\n\t\t\t\tfield:  \"ErrorDetail\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn DiscoveryRequestMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DiscoveryRequestMultiError is an error wrapping multiple validation errors\n// returned by DiscoveryRequest.ValidateAll() if the designated constraints\n// aren't met.\ntype DiscoveryRequestMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DiscoveryRequestMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DiscoveryRequestMultiError) AllErrors() []error { return m }\n\n// DiscoveryRequestValidationError is the validation error returned by\n// DiscoveryRequest.Validate if the designated constraints aren't met.\ntype DiscoveryRequestValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DiscoveryRequestValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DiscoveryRequestValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DiscoveryRequestValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DiscoveryRequestValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DiscoveryRequestValidationError) ErrorName() string { return \"DiscoveryRequestValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e DiscoveryRequestValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDiscoveryRequest.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DiscoveryRequestValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DiscoveryRequestValidationError{}\n\n// Validate checks the field values on DiscoveryResponse with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *DiscoveryResponse) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DiscoveryResponse with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// DiscoveryResponseMultiError, or nil if none found.\nfunc (m *DiscoveryResponse) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DiscoveryResponse) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for VersionInfo\n\n\tfor idx, item := range m.GetResources() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DiscoveryResponseValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Resources[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DiscoveryResponseValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Resources[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DiscoveryResponseValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Resources[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// no validation rules for Canary\n\n\t// no validation rules for TypeUrl\n\n\t// no validation rules for Nonce\n\n\tif all {\n\t\tswitch v := interface{}(m.GetControlPlane()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, DiscoveryResponseValidationError{\n\t\t\t\t\tfield:  \"ControlPlane\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, DiscoveryResponseValidationError{\n\t\t\t\t\tfield:  \"ControlPlane\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetControlPlane()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn DiscoveryResponseValidationError{\n\t\t\t\tfield:  \"ControlPlane\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetResourceErrors() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DiscoveryResponseValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceErrors[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DiscoveryResponseValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceErrors[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DiscoveryResponseValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceErrors[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn DiscoveryResponseMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DiscoveryResponseMultiError is an error wrapping multiple validation errors\n// returned by DiscoveryResponse.ValidateAll() if the designated constraints\n// aren't met.\ntype DiscoveryResponseMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DiscoveryResponseMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DiscoveryResponseMultiError) AllErrors() []error { return m }\n\n// DiscoveryResponseValidationError is the validation error returned by\n// DiscoveryResponse.Validate if the designated constraints aren't met.\ntype DiscoveryResponseValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DiscoveryResponseValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DiscoveryResponseValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DiscoveryResponseValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DiscoveryResponseValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DiscoveryResponseValidationError) ErrorName() string {\n\treturn \"DiscoveryResponseValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e DiscoveryResponseValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDiscoveryResponse.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DiscoveryResponseValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DiscoveryResponseValidationError{}\n\n// Validate checks the field values on DeltaDiscoveryRequest with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *DeltaDiscoveryRequest) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DeltaDiscoveryRequest with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// DeltaDiscoveryRequestMultiError, or nil if none found.\nfunc (m *DeltaDiscoveryRequest) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DeltaDiscoveryRequest) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetNode()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, DeltaDiscoveryRequestValidationError{\n\t\t\t\t\tfield:  \"Node\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, DeltaDiscoveryRequestValidationError{\n\t\t\t\t\tfield:  \"Node\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetNode()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn DeltaDiscoveryRequestValidationError{\n\t\t\t\tfield:  \"Node\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for TypeUrl\n\n\tfor idx, item := range m.GetResourceLocatorsSubscribe() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DeltaDiscoveryRequestValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceLocatorsSubscribe[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DeltaDiscoveryRequestValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceLocatorsSubscribe[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DeltaDiscoveryRequestValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceLocatorsSubscribe[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfor idx, item := range m.GetResourceLocatorsUnsubscribe() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DeltaDiscoveryRequestValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceLocatorsUnsubscribe[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DeltaDiscoveryRequestValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceLocatorsUnsubscribe[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DeltaDiscoveryRequestValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceLocatorsUnsubscribe[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// no validation rules for InitialResourceVersions\n\n\t// no validation rules for ResponseNonce\n\n\tif all {\n\t\tswitch v := interface{}(m.GetErrorDetail()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, DeltaDiscoveryRequestValidationError{\n\t\t\t\t\tfield:  \"ErrorDetail\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, DeltaDiscoveryRequestValidationError{\n\t\t\t\t\tfield:  \"ErrorDetail\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetErrorDetail()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn DeltaDiscoveryRequestValidationError{\n\t\t\t\tfield:  \"ErrorDetail\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn DeltaDiscoveryRequestMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DeltaDiscoveryRequestMultiError is an error wrapping multiple validation\n// errors returned by DeltaDiscoveryRequest.ValidateAll() if the designated\n// constraints aren't met.\ntype DeltaDiscoveryRequestMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DeltaDiscoveryRequestMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DeltaDiscoveryRequestMultiError) AllErrors() []error { return m }\n\n// DeltaDiscoveryRequestValidationError is the validation error returned by\n// DeltaDiscoveryRequest.Validate if the designated constraints aren't met.\ntype DeltaDiscoveryRequestValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DeltaDiscoveryRequestValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DeltaDiscoveryRequestValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DeltaDiscoveryRequestValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DeltaDiscoveryRequestValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DeltaDiscoveryRequestValidationError) ErrorName() string {\n\treturn \"DeltaDiscoveryRequestValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e DeltaDiscoveryRequestValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDeltaDiscoveryRequest.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DeltaDiscoveryRequestValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DeltaDiscoveryRequestValidationError{}\n\n// Validate checks the field values on DeltaDiscoveryResponse with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *DeltaDiscoveryResponse) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DeltaDiscoveryResponse with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// DeltaDiscoveryResponseMultiError, or nil if none found.\nfunc (m *DeltaDiscoveryResponse) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DeltaDiscoveryResponse) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for SystemVersionInfo\n\n\tfor idx, item := range m.GetResources() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DeltaDiscoveryResponseValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Resources[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DeltaDiscoveryResponseValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Resources[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DeltaDiscoveryResponseValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Resources[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// no validation rules for TypeUrl\n\n\tfor idx, item := range m.GetRemovedResourceNames() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DeltaDiscoveryResponseValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RemovedResourceNames[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DeltaDiscoveryResponseValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"RemovedResourceNames[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DeltaDiscoveryResponseValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"RemovedResourceNames[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// no validation rules for Nonce\n\n\tif all {\n\t\tswitch v := interface{}(m.GetControlPlane()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, DeltaDiscoveryResponseValidationError{\n\t\t\t\t\tfield:  \"ControlPlane\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, DeltaDiscoveryResponseValidationError{\n\t\t\t\t\tfield:  \"ControlPlane\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetControlPlane()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn DeltaDiscoveryResponseValidationError{\n\t\t\t\tfield:  \"ControlPlane\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetResourceErrors() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DeltaDiscoveryResponseValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceErrors[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DeltaDiscoveryResponseValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceErrors[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DeltaDiscoveryResponseValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ResourceErrors[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn DeltaDiscoveryResponseMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DeltaDiscoveryResponseMultiError is an error wrapping multiple validation\n// errors returned by DeltaDiscoveryResponse.ValidateAll() if the designated\n// constraints aren't met.\ntype DeltaDiscoveryResponseMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DeltaDiscoveryResponseMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DeltaDiscoveryResponseMultiError) AllErrors() []error { return m }\n\n// DeltaDiscoveryResponseValidationError is the validation error returned by\n// DeltaDiscoveryResponse.Validate if the designated constraints aren't met.\ntype DeltaDiscoveryResponseValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DeltaDiscoveryResponseValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DeltaDiscoveryResponseValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DeltaDiscoveryResponseValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DeltaDiscoveryResponseValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DeltaDiscoveryResponseValidationError) ErrorName() string {\n\treturn \"DeltaDiscoveryResponseValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e DeltaDiscoveryResponseValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDeltaDiscoveryResponse.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DeltaDiscoveryResponseValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DeltaDiscoveryResponseValidationError{}\n\n// Validate checks the field values on DynamicParameterConstraints with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *DynamicParameterConstraints) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DynamicParameterConstraints with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// DynamicParameterConstraintsMultiError, or nil if none found.\nfunc (m *DynamicParameterConstraints) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DynamicParameterConstraints) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tswitch v := m.Type.(type) {\n\tcase *DynamicParameterConstraints_Constraint:\n\t\tif v == nil {\n\t\t\terr := DynamicParameterConstraintsValidationError{\n\t\t\t\tfield:  \"Type\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetConstraint()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DynamicParameterConstraintsValidationError{\n\t\t\t\t\t\tfield:  \"Constraint\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DynamicParameterConstraintsValidationError{\n\t\t\t\t\t\tfield:  \"Constraint\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetConstraint()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DynamicParameterConstraintsValidationError{\n\t\t\t\t\tfield:  \"Constraint\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *DynamicParameterConstraints_OrConstraints:\n\t\tif v == nil {\n\t\t\terr := DynamicParameterConstraintsValidationError{\n\t\t\t\tfield:  \"Type\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetOrConstraints()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DynamicParameterConstraintsValidationError{\n\t\t\t\t\t\tfield:  \"OrConstraints\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DynamicParameterConstraintsValidationError{\n\t\t\t\t\t\tfield:  \"OrConstraints\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetOrConstraints()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DynamicParameterConstraintsValidationError{\n\t\t\t\t\tfield:  \"OrConstraints\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *DynamicParameterConstraints_AndConstraints:\n\t\tif v == nil {\n\t\t\terr := DynamicParameterConstraintsValidationError{\n\t\t\t\tfield:  \"Type\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetAndConstraints()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DynamicParameterConstraintsValidationError{\n\t\t\t\t\t\tfield:  \"AndConstraints\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DynamicParameterConstraintsValidationError{\n\t\t\t\t\t\tfield:  \"AndConstraints\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetAndConstraints()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DynamicParameterConstraintsValidationError{\n\t\t\t\t\tfield:  \"AndConstraints\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *DynamicParameterConstraints_NotConstraints:\n\t\tif v == nil {\n\t\t\terr := DynamicParameterConstraintsValidationError{\n\t\t\t\tfield:  \"Type\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetNotConstraints()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DynamicParameterConstraintsValidationError{\n\t\t\t\t\t\tfield:  \"NotConstraints\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DynamicParameterConstraintsValidationError{\n\t\t\t\t\t\tfield:  \"NotConstraints\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetNotConstraints()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DynamicParameterConstraintsValidationError{\n\t\t\t\t\tfield:  \"NotConstraints\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn DynamicParameterConstraintsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DynamicParameterConstraintsMultiError is an error wrapping multiple\n// validation errors returned by DynamicParameterConstraints.ValidateAll() if\n// the designated constraints aren't met.\ntype DynamicParameterConstraintsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DynamicParameterConstraintsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DynamicParameterConstraintsMultiError) AllErrors() []error { return m }\n\n// DynamicParameterConstraintsValidationError is the validation error returned\n// by DynamicParameterConstraints.Validate if the designated constraints\n// aren't met.\ntype DynamicParameterConstraintsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DynamicParameterConstraintsValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DynamicParameterConstraintsValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DynamicParameterConstraintsValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DynamicParameterConstraintsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DynamicParameterConstraintsValidationError) ErrorName() string {\n\treturn \"DynamicParameterConstraintsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e DynamicParameterConstraintsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDynamicParameterConstraints.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DynamicParameterConstraintsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DynamicParameterConstraintsValidationError{}\n\n// Validate checks the field values on Resource with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Resource) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Resource with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in ResourceMultiError, or nil\n// if none found.\nfunc (m *Resource) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Resource) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Name\n\n\tif all {\n\t\tswitch v := interface{}(m.GetResourceName()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ResourceValidationError{\n\t\t\t\t\tfield:  \"ResourceName\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ResourceValidationError{\n\t\t\t\t\tfield:  \"ResourceName\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetResourceName()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ResourceValidationError{\n\t\t\t\tfield:  \"ResourceName\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for Version\n\n\tif all {\n\t\tswitch v := interface{}(m.GetResource()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ResourceValidationError{\n\t\t\t\t\tfield:  \"Resource\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ResourceValidationError{\n\t\t\t\t\tfield:  \"Resource\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetResource()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ResourceValidationError{\n\t\t\t\tfield:  \"Resource\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetTtl()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ResourceValidationError{\n\t\t\t\t\tfield:  \"Ttl\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ResourceValidationError{\n\t\t\t\t\tfield:  \"Ttl\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetTtl()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ResourceValidationError{\n\t\t\t\tfield:  \"Ttl\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetCacheControl()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ResourceValidationError{\n\t\t\t\t\tfield:  \"CacheControl\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ResourceValidationError{\n\t\t\t\t\tfield:  \"CacheControl\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetCacheControl()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ResourceValidationError{\n\t\t\t\tfield:  \"CacheControl\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMetadata()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, ResourceValidationError{\n\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, ResourceValidationError{\n\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMetadata()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn ResourceValidationError{\n\t\t\t\tfield:  \"Metadata\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ResourceMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ResourceMultiError is an error wrapping multiple validation errors returned\n// by Resource.ValidateAll() if the designated constraints aren't met.\ntype ResourceMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ResourceMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ResourceMultiError) AllErrors() []error { return m }\n\n// ResourceValidationError is the validation error returned by\n// Resource.Validate if the designated constraints aren't met.\ntype ResourceValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ResourceValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ResourceValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ResourceValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ResourceValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ResourceValidationError) ErrorName() string { return \"ResourceValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e ResourceValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sResource.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ResourceValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ResourceValidationError{}\n\n// Validate checks the field values on\n// DynamicParameterConstraints_SingleConstraint with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *DynamicParameterConstraints_SingleConstraint) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// DynamicParameterConstraints_SingleConstraint with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in\n// DynamicParameterConstraints_SingleConstraintMultiError, or nil if none found.\nfunc (m *DynamicParameterConstraints_SingleConstraint) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DynamicParameterConstraints_SingleConstraint) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Key\n\n\toneofConstraintTypePresent := false\n\tswitch v := m.ConstraintType.(type) {\n\tcase *DynamicParameterConstraints_SingleConstraint_Value:\n\t\tif v == nil {\n\t\t\terr := DynamicParameterConstraints_SingleConstraintValidationError{\n\t\t\t\tfield:  \"ConstraintType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofConstraintTypePresent = true\n\t\t// no validation rules for Value\n\tcase *DynamicParameterConstraints_SingleConstraint_Exists_:\n\t\tif v == nil {\n\t\t\terr := DynamicParameterConstraints_SingleConstraintValidationError{\n\t\t\t\tfield:  \"ConstraintType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofConstraintTypePresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetExists()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DynamicParameterConstraints_SingleConstraintValidationError{\n\t\t\t\t\t\tfield:  \"Exists\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DynamicParameterConstraints_SingleConstraintValidationError{\n\t\t\t\t\t\tfield:  \"Exists\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetExists()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DynamicParameterConstraints_SingleConstraintValidationError{\n\t\t\t\t\tfield:  \"Exists\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofConstraintTypePresent {\n\t\terr := DynamicParameterConstraints_SingleConstraintValidationError{\n\t\t\tfield:  \"ConstraintType\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn DynamicParameterConstraints_SingleConstraintMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DynamicParameterConstraints_SingleConstraintMultiError is an error wrapping\n// multiple validation errors returned by\n// DynamicParameterConstraints_SingleConstraint.ValidateAll() if the\n// designated constraints aren't met.\ntype DynamicParameterConstraints_SingleConstraintMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DynamicParameterConstraints_SingleConstraintMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DynamicParameterConstraints_SingleConstraintMultiError) AllErrors() []error { return m }\n\n// DynamicParameterConstraints_SingleConstraintValidationError is the\n// validation error returned by\n// DynamicParameterConstraints_SingleConstraint.Validate if the designated\n// constraints aren't met.\ntype DynamicParameterConstraints_SingleConstraintValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DynamicParameterConstraints_SingleConstraintValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DynamicParameterConstraints_SingleConstraintValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DynamicParameterConstraints_SingleConstraintValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DynamicParameterConstraints_SingleConstraintValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DynamicParameterConstraints_SingleConstraintValidationError) ErrorName() string {\n\treturn \"DynamicParameterConstraints_SingleConstraintValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e DynamicParameterConstraints_SingleConstraintValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDynamicParameterConstraints_SingleConstraint.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DynamicParameterConstraints_SingleConstraintValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DynamicParameterConstraints_SingleConstraintValidationError{}\n\n// Validate checks the field values on\n// DynamicParameterConstraints_ConstraintList with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *DynamicParameterConstraints_ConstraintList) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// DynamicParameterConstraints_ConstraintList with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in\n// DynamicParameterConstraints_ConstraintListMultiError, or nil if none found.\nfunc (m *DynamicParameterConstraints_ConstraintList) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DynamicParameterConstraints_ConstraintList) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetConstraints() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DynamicParameterConstraints_ConstraintListValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Constraints[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DynamicParameterConstraints_ConstraintListValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Constraints[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DynamicParameterConstraints_ConstraintListValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Constraints[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn DynamicParameterConstraints_ConstraintListMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DynamicParameterConstraints_ConstraintListMultiError is an error wrapping\n// multiple validation errors returned by\n// DynamicParameterConstraints_ConstraintList.ValidateAll() if the designated\n// constraints aren't met.\ntype DynamicParameterConstraints_ConstraintListMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DynamicParameterConstraints_ConstraintListMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DynamicParameterConstraints_ConstraintListMultiError) AllErrors() []error { return m }\n\n// DynamicParameterConstraints_ConstraintListValidationError is the validation\n// error returned by DynamicParameterConstraints_ConstraintList.Validate if\n// the designated constraints aren't met.\ntype DynamicParameterConstraints_ConstraintListValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DynamicParameterConstraints_ConstraintListValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DynamicParameterConstraints_ConstraintListValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DynamicParameterConstraints_ConstraintListValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DynamicParameterConstraints_ConstraintListValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DynamicParameterConstraints_ConstraintListValidationError) ErrorName() string {\n\treturn \"DynamicParameterConstraints_ConstraintListValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e DynamicParameterConstraints_ConstraintListValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDynamicParameterConstraints_ConstraintList.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DynamicParameterConstraints_ConstraintListValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DynamicParameterConstraints_ConstraintListValidationError{}\n\n// Validate checks the field values on\n// DynamicParameterConstraints_SingleConstraint_Exists with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *DynamicParameterConstraints_SingleConstraint_Exists) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on\n// DynamicParameterConstraints_SingleConstraint_Exists with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in\n// DynamicParameterConstraints_SingleConstraint_ExistsMultiError, or nil if\n// none found.\nfunc (m *DynamicParameterConstraints_SingleConstraint_Exists) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DynamicParameterConstraints_SingleConstraint_Exists) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn DynamicParameterConstraints_SingleConstraint_ExistsMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DynamicParameterConstraints_SingleConstraint_ExistsMultiError is an error\n// wrapping multiple validation errors returned by\n// DynamicParameterConstraints_SingleConstraint_Exists.ValidateAll() if the\n// designated constraints aren't met.\ntype DynamicParameterConstraints_SingleConstraint_ExistsMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DynamicParameterConstraints_SingleConstraint_ExistsMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DynamicParameterConstraints_SingleConstraint_ExistsMultiError) AllErrors() []error { return m }\n\n// DynamicParameterConstraints_SingleConstraint_ExistsValidationError is the\n// validation error returned by\n// DynamicParameterConstraints_SingleConstraint_Exists.Validate if the\n// designated constraints aren't met.\ntype DynamicParameterConstraints_SingleConstraint_ExistsValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DynamicParameterConstraints_SingleConstraint_ExistsValidationError) Field() string {\n\treturn e.field\n}\n\n// Reason function returns reason value.\nfunc (e DynamicParameterConstraints_SingleConstraint_ExistsValidationError) Reason() string {\n\treturn e.reason\n}\n\n// Cause function returns cause value.\nfunc (e DynamicParameterConstraints_SingleConstraint_ExistsValidationError) Cause() error {\n\treturn e.cause\n}\n\n// Key function returns key value.\nfunc (e DynamicParameterConstraints_SingleConstraint_ExistsValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DynamicParameterConstraints_SingleConstraint_ExistsValidationError) ErrorName() string {\n\treturn \"DynamicParameterConstraints_SingleConstraint_ExistsValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e DynamicParameterConstraints_SingleConstraint_ExistsValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDynamicParameterConstraints_SingleConstraint_Exists.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DynamicParameterConstraints_SingleConstraint_ExistsValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DynamicParameterConstraints_SingleConstraint_ExistsValidationError{}\n\n// Validate checks the field values on Resource_CacheControl with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *Resource_CacheControl) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Resource_CacheControl with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// Resource_CacheControlMultiError, or nil if none found.\nfunc (m *Resource_CacheControl) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Resource_CacheControl) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for DoNotCache\n\n\tif len(errors) > 0 {\n\t\treturn Resource_CacheControlMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Resource_CacheControlMultiError is an error wrapping multiple validation\n// errors returned by Resource_CacheControl.ValidateAll() if the designated\n// constraints aren't met.\ntype Resource_CacheControlMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Resource_CacheControlMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Resource_CacheControlMultiError) AllErrors() []error { return m }\n\n// Resource_CacheControlValidationError is the validation error returned by\n// Resource_CacheControl.Validate if the designated constraints aren't met.\ntype Resource_CacheControlValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Resource_CacheControlValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Resource_CacheControlValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Resource_CacheControlValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Resource_CacheControlValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Resource_CacheControlValidationError) ErrorName() string {\n\treturn \"Resource_CacheControlValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e Resource_CacheControlValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sResource_CacheControl.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Resource_CacheControlValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Resource_CacheControlValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3/discovery_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/service/discovery/v3/discovery.proto\n\npackage discoveryv3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tanypb \"github.com/planetscale/vtprotobuf/types/known/anypb\"\n\tdurationpb \"github.com/planetscale/vtprotobuf/types/known/durationpb\"\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *ResourceLocator) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ResourceLocator) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ResourceLocator) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.DynamicParameters) > 0 {\n\t\tfor k := range m.DynamicParameters {\n\t\t\tv := m.DynamicParameters[k]\n\t\t\tbaseI := i\n\t\t\ti -= len(v)\n\t\t\tcopy(dAtA[i:], v)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(v)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ResourceName) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ResourceName) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ResourceName) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.DynamicParameterConstraints != nil {\n\t\tsize, err := m.DynamicParameterConstraints.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ResourceError) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ResourceError) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ResourceError) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.ErrorDetail != nil {\n\t\tif vtmsg, ok := interface{}(m.ErrorDetail).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.ErrorDetail)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.ResourceName != nil {\n\t\tsize, err := m.ResourceName.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DiscoveryRequest) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DiscoveryRequest) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DiscoveryRequest) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.ResourceLocators) > 0 {\n\t\tfor iNdEx := len(m.ResourceLocators) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.ResourceLocators[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t}\n\tif m.ErrorDetail != nil {\n\t\tif vtmsg, ok := interface{}(m.ErrorDetail).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.ErrorDetail)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.ResponseNonce) > 0 {\n\t\ti -= len(m.ResponseNonce)\n\t\tcopy(dAtA[i:], m.ResponseNonce)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ResponseNonce)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.TypeUrl) > 0 {\n\t\ti -= len(m.TypeUrl)\n\t\tcopy(dAtA[i:], m.TypeUrl)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TypeUrl)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.ResourceNames) > 0 {\n\t\tfor iNdEx := len(m.ResourceNames) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.ResourceNames[iNdEx])\n\t\t\tcopy(dAtA[i:], m.ResourceNames[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ResourceNames[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif m.Node != nil {\n\t\tif vtmsg, ok := interface{}(m.Node).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Node)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.VersionInfo) > 0 {\n\t\ti -= len(m.VersionInfo)\n\t\tcopy(dAtA[i:], m.VersionInfo)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.VersionInfo)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DiscoveryResponse) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DiscoveryResponse) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DiscoveryResponse) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.ResourceErrors) > 0 {\n\t\tfor iNdEx := len(m.ResourceErrors) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.ResourceErrors[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t}\n\tif m.ControlPlane != nil {\n\t\tif vtmsg, ok := interface{}(m.ControlPlane).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.ControlPlane)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.Nonce) > 0 {\n\t\ti -= len(m.Nonce)\n\t\tcopy(dAtA[i:], m.Nonce)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Nonce)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.TypeUrl) > 0 {\n\t\ti -= len(m.TypeUrl)\n\t\tcopy(dAtA[i:], m.TypeUrl)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TypeUrl)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Canary {\n\t\ti--\n\t\tif m.Canary {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.Resources) > 0 {\n\t\tfor iNdEx := len(m.Resources) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := (*anypb.Any)(m.Resources[iNdEx]).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.VersionInfo) > 0 {\n\t\ti -= len(m.VersionInfo)\n\t\tcopy(dAtA[i:], m.VersionInfo)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.VersionInfo)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DeltaDiscoveryRequest) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DeltaDiscoveryRequest) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DeltaDiscoveryRequest) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.ResourceLocatorsUnsubscribe) > 0 {\n\t\tfor iNdEx := len(m.ResourceLocatorsUnsubscribe) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.ResourceLocatorsUnsubscribe[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x4a\n\t\t}\n\t}\n\tif len(m.ResourceLocatorsSubscribe) > 0 {\n\t\tfor iNdEx := len(m.ResourceLocatorsSubscribe) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.ResourceLocatorsSubscribe[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t}\n\tif m.ErrorDetail != nil {\n\t\tif vtmsg, ok := interface{}(m.ErrorDetail).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.ErrorDetail)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif len(m.ResponseNonce) > 0 {\n\t\ti -= len(m.ResponseNonce)\n\t\tcopy(dAtA[i:], m.ResponseNonce)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ResponseNonce)))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.InitialResourceVersions) > 0 {\n\t\tfor k := range m.InitialResourceVersions {\n\t\t\tv := m.InitialResourceVersions[k]\n\t\t\tbaseI := i\n\t\t\ti -= len(v)\n\t\t\tcopy(dAtA[i:], v)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(v)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif len(m.ResourceNamesUnsubscribe) > 0 {\n\t\tfor iNdEx := len(m.ResourceNamesUnsubscribe) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.ResourceNamesUnsubscribe[iNdEx])\n\t\t\tcopy(dAtA[i:], m.ResourceNamesUnsubscribe[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ResourceNamesUnsubscribe[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.ResourceNamesSubscribe) > 0 {\n\t\tfor iNdEx := len(m.ResourceNamesSubscribe) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.ResourceNamesSubscribe[iNdEx])\n\t\t\tcopy(dAtA[i:], m.ResourceNamesSubscribe[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ResourceNamesSubscribe[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.TypeUrl) > 0 {\n\t\ti -= len(m.TypeUrl)\n\t\tcopy(dAtA[i:], m.TypeUrl)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TypeUrl)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Node != nil {\n\t\tif vtmsg, ok := interface{}(m.Node).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Node)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DeltaDiscoveryResponse) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DeltaDiscoveryResponse) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DeltaDiscoveryResponse) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.ResourceErrors) > 0 {\n\t\tfor iNdEx := len(m.ResourceErrors) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.ResourceErrors[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x4a\n\t\t}\n\t}\n\tif len(m.RemovedResourceNames) > 0 {\n\t\tfor iNdEx := len(m.RemovedResourceNames) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.RemovedResourceNames[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t}\n\tif m.ControlPlane != nil {\n\t\tif vtmsg, ok := interface{}(m.ControlPlane).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.ControlPlane)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif len(m.RemovedResources) > 0 {\n\t\tfor iNdEx := len(m.RemovedResources) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.RemovedResources[iNdEx])\n\t\t\tcopy(dAtA[i:], m.RemovedResources[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.RemovedResources[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t}\n\tif len(m.Nonce) > 0 {\n\t\ti -= len(m.Nonce)\n\t\tcopy(dAtA[i:], m.Nonce)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Nonce)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.TypeUrl) > 0 {\n\t\ti -= len(m.TypeUrl)\n\t\tcopy(dAtA[i:], m.TypeUrl)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TypeUrl)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.Resources) > 0 {\n\t\tfor iNdEx := len(m.Resources) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Resources[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.SystemVersionInfo) > 0 {\n\t\ti -= len(m.SystemVersionInfo)\n\t\tcopy(dAtA[i:], m.SystemVersionInfo)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SystemVersionInfo)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DynamicParameterConstraints_SingleConstraint_Exists) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DynamicParameterConstraints_SingleConstraint_Exists) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DynamicParameterConstraints_SingleConstraint_Exists) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DynamicParameterConstraints_SingleConstraint) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DynamicParameterConstraints_SingleConstraint) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DynamicParameterConstraints_SingleConstraint) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.ConstraintType.(*DynamicParameterConstraints_SingleConstraint_Exists_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.ConstraintType.(*DynamicParameterConstraints_SingleConstraint_Value); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DynamicParameterConstraints_SingleConstraint_Value) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DynamicParameterConstraints_SingleConstraint_Value) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Value)\n\tcopy(dAtA[i:], m.Value)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Value)))\n\ti--\n\tdAtA[i] = 0x12\n\treturn len(dAtA) - i, nil\n}\nfunc (m *DynamicParameterConstraints_SingleConstraint_Exists_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DynamicParameterConstraints_SingleConstraint_Exists_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Exists != nil {\n\t\tsize, err := m.Exists.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *DynamicParameterConstraints_ConstraintList) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DynamicParameterConstraints_ConstraintList) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DynamicParameterConstraints_ConstraintList) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Constraints) > 0 {\n\t\tfor iNdEx := len(m.Constraints) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Constraints[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DynamicParameterConstraints) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DynamicParameterConstraints) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DynamicParameterConstraints) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.Type.(*DynamicParameterConstraints_NotConstraints); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Type.(*DynamicParameterConstraints_AndConstraints); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Type.(*DynamicParameterConstraints_OrConstraints); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Type.(*DynamicParameterConstraints_Constraint); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DynamicParameterConstraints_Constraint) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DynamicParameterConstraints_Constraint) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Constraint != nil {\n\t\tsize, err := m.Constraint.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *DynamicParameterConstraints_OrConstraints) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DynamicParameterConstraints_OrConstraints) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.OrConstraints != nil {\n\t\tsize, err := m.OrConstraints.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *DynamicParameterConstraints_AndConstraints) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DynamicParameterConstraints_AndConstraints) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.AndConstraints != nil {\n\t\tsize, err := m.AndConstraints.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *DynamicParameterConstraints_NotConstraints) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DynamicParameterConstraints_NotConstraints) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.NotConstraints != nil {\n\t\tsize, err := m.NotConstraints.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Resource_CacheControl) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Resource_CacheControl) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Resource_CacheControl) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.DoNotCache {\n\t\ti--\n\t\tif m.DoNotCache {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Resource) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Resource) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Resource) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Metadata != nil {\n\t\tif vtmsg, ok := interface{}(m.Metadata).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Metadata)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t}\n\tif m.ResourceName != nil {\n\t\tsize, err := m.ResourceName.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif m.CacheControl != nil {\n\t\tsize, err := m.CacheControl.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif m.Ttl != nil {\n\t\tsize, err := (*durationpb.Duration)(m.Ttl).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.Aliases) > 0 {\n\t\tfor iNdEx := len(m.Aliases) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Aliases[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Aliases[iNdEx])\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Aliases[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Resource != nil {\n\t\tsize, err := (*anypb.Any)(m.Resource).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Version) > 0 {\n\t\ti -= len(m.Version)\n\t\tcopy(dAtA[i:], m.Version)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Version)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ResourceLocator) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.DynamicParameters) > 0 {\n\t\tfor k, v := range m.DynamicParameters {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tmapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + 1 + len(v) + protohelpers.SizeOfVarint(uint64(len(v)))\n\t\t\tn += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ResourceName) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.DynamicParameterConstraints != nil {\n\t\tl = m.DynamicParameterConstraints.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ResourceError) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ResourceName != nil {\n\t\tl = m.ResourceName.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ErrorDetail != nil {\n\t\tif size, ok := interface{}(m.ErrorDetail).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.ErrorDetail)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *DiscoveryRequest) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.VersionInfo)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Node != nil {\n\t\tif size, ok := interface{}(m.Node).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Node)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.ResourceNames) > 0 {\n\t\tfor _, s := range m.ResourceNames {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tl = len(m.TypeUrl)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.ResponseNonce)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ErrorDetail != nil {\n\t\tif size, ok := interface{}(m.ErrorDetail).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.ErrorDetail)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.ResourceLocators) > 0 {\n\t\tfor _, e := range m.ResourceLocators {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *DiscoveryResponse) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.VersionInfo)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.Resources) > 0 {\n\t\tfor _, e := range m.Resources {\n\t\t\tl = (*anypb.Any)(e).SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.Canary {\n\t\tn += 2\n\t}\n\tl = len(m.TypeUrl)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Nonce)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ControlPlane != nil {\n\t\tif size, ok := interface{}(m.ControlPlane).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.ControlPlane)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.ResourceErrors) > 0 {\n\t\tfor _, e := range m.ResourceErrors {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *DeltaDiscoveryRequest) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Node != nil {\n\t\tif size, ok := interface{}(m.Node).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Node)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.TypeUrl)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.ResourceNamesSubscribe) > 0 {\n\t\tfor _, s := range m.ResourceNamesSubscribe {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.ResourceNamesUnsubscribe) > 0 {\n\t\tfor _, s := range m.ResourceNamesUnsubscribe {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.InitialResourceVersions) > 0 {\n\t\tfor k, v := range m.InitialResourceVersions {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tmapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + 1 + len(v) + protohelpers.SizeOfVarint(uint64(len(v)))\n\t\t\tn += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))\n\t\t}\n\t}\n\tl = len(m.ResponseNonce)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ErrorDetail != nil {\n\t\tif size, ok := interface{}(m.ErrorDetail).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.ErrorDetail)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.ResourceLocatorsSubscribe) > 0 {\n\t\tfor _, e := range m.ResourceLocatorsSubscribe {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.ResourceLocatorsUnsubscribe) > 0 {\n\t\tfor _, e := range m.ResourceLocatorsUnsubscribe {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *DeltaDiscoveryResponse) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.SystemVersionInfo)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.Resources) > 0 {\n\t\tfor _, e := range m.Resources {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tl = len(m.TypeUrl)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Nonce)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.RemovedResources) > 0 {\n\t\tfor _, s := range m.RemovedResources {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.ControlPlane != nil {\n\t\tif size, ok := interface{}(m.ControlPlane).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.ControlPlane)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.RemovedResourceNames) > 0 {\n\t\tfor _, e := range m.RemovedResourceNames {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif len(m.ResourceErrors) > 0 {\n\t\tfor _, e := range m.ResourceErrors {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *DynamicParameterConstraints_SingleConstraint_Exists) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *DynamicParameterConstraints_SingleConstraint) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.ConstraintType.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *DynamicParameterConstraints_SingleConstraint_Value) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Value)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *DynamicParameterConstraints_SingleConstraint_Exists_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Exists != nil {\n\t\tl = m.Exists.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *DynamicParameterConstraints_ConstraintList) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Constraints) > 0 {\n\t\tfor _, e := range m.Constraints {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *DynamicParameterConstraints) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Type.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *DynamicParameterConstraints_Constraint) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Constraint != nil {\n\t\tl = m.Constraint.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *DynamicParameterConstraints_OrConstraints) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.OrConstraints != nil {\n\t\tl = m.OrConstraints.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *DynamicParameterConstraints_AndConstraints) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.AndConstraints != nil {\n\t\tl = m.AndConstraints.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *DynamicParameterConstraints_NotConstraints) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.NotConstraints != nil {\n\t\tl = m.NotConstraints.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *Resource_CacheControl) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.DoNotCache {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Resource) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Version)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Resource != nil {\n\t\tl = (*anypb.Any)(m.Resource).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.Aliases) > 0 {\n\t\tfor _, s := range m.Aliases {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.Ttl != nil {\n\t\tl = (*durationpb.Duration)(m.Ttl).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.CacheControl != nil {\n\t\tl = m.CacheControl.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.ResourceName != nil {\n\t\tl = m.ResourceName.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Metadata != nil {\n\t\tif size, ok := interface{}(m.Metadata).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Metadata)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/address.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/matcher/v3/address.proto\n\npackage matcherv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tv3 \"github.com/cncf/xds/go/xds/core/v3\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Match an IP against a repeated CIDR range. This matcher is intended to be\n// used in other matchers, for example in the filter state matcher to match a\n// filter state object as an IP.\ntype AddressMatcher struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tRanges        []*v3.CidrRange        `protobuf:\"bytes,1,rep,name=ranges,proto3\" json:\"ranges,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *AddressMatcher) Reset() {\n\t*x = AddressMatcher{}\n\tmi := &file_envoy_type_matcher_v3_address_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *AddressMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AddressMatcher) ProtoMessage() {}\n\nfunc (x *AddressMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_address_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use AddressMatcher.ProtoReflect.Descriptor instead.\nfunc (*AddressMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_address_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *AddressMatcher) GetRanges() []*v3.CidrRange {\n\tif x != nil {\n\t\treturn x.Ranges\n\t}\n\treturn nil\n}\n\nvar File_envoy_type_matcher_v3_address_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_matcher_v3_address_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"#envoy/type/matcher/v3/address.proto\\x12\\x15envoy.type.matcher.v3\\x1a\\x16xds/core/v3/cidr.proto\\x1a\\x1dudpa/annotations/status.proto\\\"@\\n\" +\n\t\"\\x0eAddressMatcher\\x12.\\n\" +\n\t\"\\x06ranges\\x18\\x01 \\x03(\\v2\\x16.xds.core.v3.CidrRangeR\\x06rangesB\\x85\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.type.matcher.v3B\\fAddressProtoP\\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_matcher_v3_address_proto_rawDescOnce sync.Once\n\tfile_envoy_type_matcher_v3_address_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_matcher_v3_address_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_matcher_v3_address_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_matcher_v3_address_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_address_proto_rawDesc), len(file_envoy_type_matcher_v3_address_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_matcher_v3_address_proto_rawDescData\n}\n\nvar file_envoy_type_matcher_v3_address_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_type_matcher_v3_address_proto_goTypes = []any{\n\t(*AddressMatcher)(nil), // 0: envoy.type.matcher.v3.AddressMatcher\n\t(*v3.CidrRange)(nil),   // 1: xds.core.v3.CidrRange\n}\nvar file_envoy_type_matcher_v3_address_proto_depIdxs = []int32{\n\t1, // 0: envoy.type.matcher.v3.AddressMatcher.ranges:type_name -> xds.core.v3.CidrRange\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_matcher_v3_address_proto_init() }\nfunc file_envoy_type_matcher_v3_address_proto_init() {\n\tif File_envoy_type_matcher_v3_address_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_address_proto_rawDesc), len(file_envoy_type_matcher_v3_address_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_matcher_v3_address_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_matcher_v3_address_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_matcher_v3_address_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_matcher_v3_address_proto = out.File\n\tfile_envoy_type_matcher_v3_address_proto_goTypes = nil\n\tfile_envoy_type_matcher_v3_address_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/address.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/matcher/v3/address.proto\n\npackage matcherv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on AddressMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *AddressMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on AddressMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in AddressMatcherMultiError,\n// or nil if none found.\nfunc (m *AddressMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *AddressMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tfor idx, item := range m.GetRanges() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, AddressMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, AddressMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn AddressMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Ranges[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn AddressMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// AddressMatcherMultiError is an error wrapping multiple validation errors\n// returned by AddressMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype AddressMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m AddressMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m AddressMatcherMultiError) AllErrors() []error { return m }\n\n// AddressMatcherValidationError is the validation error returned by\n// AddressMatcher.Validate if the designated constraints aren't met.\ntype AddressMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e AddressMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e AddressMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e AddressMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e AddressMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e AddressMatcherValidationError) ErrorName() string { return \"AddressMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e AddressMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sAddressMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = AddressMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = AddressMatcherValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/address_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/matcher/v3/address.proto\n\npackage matcherv3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *AddressMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AddressMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *AddressMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Ranges) > 0 {\n\t\tfor iNdEx := len(m.Ranges) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tif vtmsg, ok := interface{}(m.Ranges[iNdEx]).(interface {\n\t\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t\t}); ok {\n\t\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\t} else {\n\t\t\t\tencoded, err := proto.Marshal(m.Ranges[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AddressMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Ranges) > 0 {\n\t\tfor _, e := range m.Ranges {\n\t\t\tif size, ok := interface{}(e).(interface {\n\t\t\t\tSizeVT() int\n\t\t\t}); ok {\n\t\t\t\tl = size.SizeVT()\n\t\t\t} else {\n\t\t\t\tl = proto.Size(e)\n\t\t\t}\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/filter_state.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/matcher/v3/filter_state.proto\n\npackage matcherv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// FilterStateMatcher provides a general interface for matching the filter state objects.\ntype FilterStateMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The filter state key to retrieve the object.\n\tKey string `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// Types that are valid to be assigned to Matcher:\n\t//\n\t//\t*FilterStateMatcher_StringMatch\n\t//\t*FilterStateMatcher_AddressMatch\n\tMatcher       isFilterStateMatcher_Matcher `protobuf_oneof:\"matcher\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *FilterStateMatcher) Reset() {\n\t*x = FilterStateMatcher{}\n\tmi := &file_envoy_type_matcher_v3_filter_state_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FilterStateMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FilterStateMatcher) ProtoMessage() {}\n\nfunc (x *FilterStateMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_filter_state_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FilterStateMatcher.ProtoReflect.Descriptor instead.\nfunc (*FilterStateMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_filter_state_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *FilterStateMatcher) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\nfunc (x *FilterStateMatcher) GetMatcher() isFilterStateMatcher_Matcher {\n\tif x != nil {\n\t\treturn x.Matcher\n\t}\n\treturn nil\n}\n\nfunc (x *FilterStateMatcher) GetStringMatch() *StringMatcher {\n\tif x != nil {\n\t\tif x, ok := x.Matcher.(*FilterStateMatcher_StringMatch); ok {\n\t\t\treturn x.StringMatch\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *FilterStateMatcher) GetAddressMatch() *AddressMatcher {\n\tif x != nil {\n\t\tif x, ok := x.Matcher.(*FilterStateMatcher_AddressMatch); ok {\n\t\t\treturn x.AddressMatch\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isFilterStateMatcher_Matcher interface {\n\tisFilterStateMatcher_Matcher()\n}\n\ntype FilterStateMatcher_StringMatch struct {\n\t// Matches the filter state object as a string value.\n\tStringMatch *StringMatcher `protobuf:\"bytes,2,opt,name=string_match,json=stringMatch,proto3,oneof\"`\n}\n\ntype FilterStateMatcher_AddressMatch struct {\n\t// Matches the filter state object as a ip Instance.\n\tAddressMatch *AddressMatcher `protobuf:\"bytes,3,opt,name=address_match,json=addressMatch,proto3,oneof\"`\n}\n\nfunc (*FilterStateMatcher_StringMatch) isFilterStateMatcher_Matcher() {}\n\nfunc (*FilterStateMatcher_AddressMatch) isFilterStateMatcher_Matcher() {}\n\nvar File_envoy_type_matcher_v3_filter_state_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_matcher_v3_filter_state_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"(envoy/type/matcher/v3/filter_state.proto\\x12\\x15envoy.type.matcher.v3\\x1a#envoy/type/matcher/v3/address.proto\\x1a\\\"envoy/type/matcher/v3/string.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a\\x17validate/validate.proto\\\"\\xd8\\x01\\n\" +\n\t\"\\x12FilterStateMatcher\\x12\\x19\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x03key\\x12I\\n\" +\n\t\"\\fstring_match\\x18\\x02 \\x01(\\v2$.envoy.type.matcher.v3.StringMatcherH\\x00R\\vstringMatch\\x12L\\n\" +\n\t\"\\raddress_match\\x18\\x03 \\x01(\\v2%.envoy.type.matcher.v3.AddressMatcherH\\x00R\\faddressMatchB\\x0e\\n\" +\n\t\"\\amatcher\\x12\\x03\\xf8B\\x01B\\x89\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.type.matcher.v3B\\x10FilterStateProtoP\\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_matcher_v3_filter_state_proto_rawDescOnce sync.Once\n\tfile_envoy_type_matcher_v3_filter_state_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_matcher_v3_filter_state_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_matcher_v3_filter_state_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_matcher_v3_filter_state_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_filter_state_proto_rawDesc), len(file_envoy_type_matcher_v3_filter_state_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_matcher_v3_filter_state_proto_rawDescData\n}\n\nvar file_envoy_type_matcher_v3_filter_state_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_type_matcher_v3_filter_state_proto_goTypes = []any{\n\t(*FilterStateMatcher)(nil), // 0: envoy.type.matcher.v3.FilterStateMatcher\n\t(*StringMatcher)(nil),      // 1: envoy.type.matcher.v3.StringMatcher\n\t(*AddressMatcher)(nil),     // 2: envoy.type.matcher.v3.AddressMatcher\n}\nvar file_envoy_type_matcher_v3_filter_state_proto_depIdxs = []int32{\n\t1, // 0: envoy.type.matcher.v3.FilterStateMatcher.string_match:type_name -> envoy.type.matcher.v3.StringMatcher\n\t2, // 1: envoy.type.matcher.v3.FilterStateMatcher.address_match:type_name -> envoy.type.matcher.v3.AddressMatcher\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_matcher_v3_filter_state_proto_init() }\nfunc file_envoy_type_matcher_v3_filter_state_proto_init() {\n\tif File_envoy_type_matcher_v3_filter_state_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_type_matcher_v3_address_proto_init()\n\tfile_envoy_type_matcher_v3_string_proto_init()\n\tfile_envoy_type_matcher_v3_filter_state_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*FilterStateMatcher_StringMatch)(nil),\n\t\t(*FilterStateMatcher_AddressMatch)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_filter_state_proto_rawDesc), len(file_envoy_type_matcher_v3_filter_state_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_matcher_v3_filter_state_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_matcher_v3_filter_state_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_matcher_v3_filter_state_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_matcher_v3_filter_state_proto = out.File\n\tfile_envoy_type_matcher_v3_filter_state_proto_goTypes = nil\n\tfile_envoy_type_matcher_v3_filter_state_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/filter_state.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/matcher/v3/filter_state.proto\n\npackage matcherv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on FilterStateMatcher with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *FilterStateMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on FilterStateMatcher with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// FilterStateMatcherMultiError, or nil if none found.\nfunc (m *FilterStateMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *FilterStateMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetKey()) < 1 {\n\t\terr := FilterStateMatcherValidationError{\n\t\t\tfield:  \"Key\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\toneofMatcherPresent := false\n\tswitch v := m.Matcher.(type) {\n\tcase *FilterStateMatcher_StringMatch:\n\t\tif v == nil {\n\t\t\terr := FilterStateMatcherValidationError{\n\t\t\t\tfield:  \"Matcher\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatcherPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetStringMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, FilterStateMatcherValidationError{\n\t\t\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, FilterStateMatcherValidationError{\n\t\t\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetStringMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn FilterStateMatcherValidationError{\n\t\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *FilterStateMatcher_AddressMatch:\n\t\tif v == nil {\n\t\t\terr := FilterStateMatcherValidationError{\n\t\t\t\tfield:  \"Matcher\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatcherPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetAddressMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, FilterStateMatcherValidationError{\n\t\t\t\t\t\tfield:  \"AddressMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, FilterStateMatcherValidationError{\n\t\t\t\t\t\tfield:  \"AddressMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetAddressMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn FilterStateMatcherValidationError{\n\t\t\t\t\tfield:  \"AddressMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofMatcherPresent {\n\t\terr := FilterStateMatcherValidationError{\n\t\t\tfield:  \"Matcher\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn FilterStateMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// FilterStateMatcherMultiError is an error wrapping multiple validation errors\n// returned by FilterStateMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype FilterStateMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m FilterStateMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m FilterStateMatcherMultiError) AllErrors() []error { return m }\n\n// FilterStateMatcherValidationError is the validation error returned by\n// FilterStateMatcher.Validate if the designated constraints aren't met.\ntype FilterStateMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e FilterStateMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e FilterStateMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e FilterStateMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e FilterStateMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e FilterStateMatcherValidationError) ErrorName() string {\n\treturn \"FilterStateMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e FilterStateMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sFilterStateMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = FilterStateMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = FilterStateMatcherValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/filter_state_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/matcher/v3/filter_state.proto\n\npackage matcherv3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *FilterStateMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *FilterStateMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *FilterStateMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.Matcher.(*FilterStateMatcher_AddressMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Matcher.(*FilterStateMatcher_StringMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *FilterStateMatcher_StringMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *FilterStateMatcher_StringMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.StringMatch != nil {\n\t\tsize, err := m.StringMatch.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *FilterStateMatcher_AddressMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *FilterStateMatcher_AddressMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.AddressMatch != nil {\n\t\tsize, err := m.AddressMatch.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *FilterStateMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.Matcher.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *FilterStateMatcher_StringMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.StringMatch != nil {\n\t\tl = m.StringMatch.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *FilterStateMatcher_AddressMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.AddressMatch != nil {\n\t\tl = m.AddressMatch.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/http_inputs.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/matcher/v3/http_inputs.proto\n\npackage matcherv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Match input indicates that matching should be done on a specific request header.\n// The resulting input string will be all headers for the given key joined by a comma,\n// e.g. if the request contains two 'foo' headers with value 'bar' and 'baz', the input\n// string will be 'bar,baz'.\n// [#comment:TODO(snowp): Link to unified matching docs.]\n// [#extension: envoy.matching.inputs.request_headers]\ntype HttpRequestHeaderMatchInput struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The request header to match on.\n\tHeaderName    string `protobuf:\"bytes,1,opt,name=header_name,json=headerName,proto3\" json:\"header_name,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HttpRequestHeaderMatchInput) Reset() {\n\t*x = HttpRequestHeaderMatchInput{}\n\tmi := &file_envoy_type_matcher_v3_http_inputs_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpRequestHeaderMatchInput) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpRequestHeaderMatchInput) ProtoMessage() {}\n\nfunc (x *HttpRequestHeaderMatchInput) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_http_inputs_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpRequestHeaderMatchInput.ProtoReflect.Descriptor instead.\nfunc (*HttpRequestHeaderMatchInput) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_http_inputs_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *HttpRequestHeaderMatchInput) GetHeaderName() string {\n\tif x != nil {\n\t\treturn x.HeaderName\n\t}\n\treturn \"\"\n}\n\n// Match input indicates that matching should be done on a specific request trailer.\n// The resulting input string will be all headers for the given key joined by a comma,\n// e.g. if the request contains two 'foo' headers with value 'bar' and 'baz', the input\n// string will be 'bar,baz'.\n// [#comment:TODO(snowp): Link to unified matching docs.]\n// [#extension: envoy.matching.inputs.request_trailers]\ntype HttpRequestTrailerMatchInput struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The request trailer to match on.\n\tHeaderName    string `protobuf:\"bytes,1,opt,name=header_name,json=headerName,proto3\" json:\"header_name,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HttpRequestTrailerMatchInput) Reset() {\n\t*x = HttpRequestTrailerMatchInput{}\n\tmi := &file_envoy_type_matcher_v3_http_inputs_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpRequestTrailerMatchInput) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpRequestTrailerMatchInput) ProtoMessage() {}\n\nfunc (x *HttpRequestTrailerMatchInput) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_http_inputs_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpRequestTrailerMatchInput.ProtoReflect.Descriptor instead.\nfunc (*HttpRequestTrailerMatchInput) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_http_inputs_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *HttpRequestTrailerMatchInput) GetHeaderName() string {\n\tif x != nil {\n\t\treturn x.HeaderName\n\t}\n\treturn \"\"\n}\n\n// Match input indicating that matching should be done on a specific response header.\n// The resulting input string will be all headers for the given key joined by a comma,\n// e.g. if the response contains two 'foo' headers with value 'bar' and 'baz', the input\n// string will be 'bar,baz'.\n// [#comment:TODO(snowp): Link to unified matching docs.]\n// [#extension: envoy.matching.inputs.response_headers]\ntype HttpResponseHeaderMatchInput struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The response header to match on.\n\tHeaderName    string `protobuf:\"bytes,1,opt,name=header_name,json=headerName,proto3\" json:\"header_name,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HttpResponseHeaderMatchInput) Reset() {\n\t*x = HttpResponseHeaderMatchInput{}\n\tmi := &file_envoy_type_matcher_v3_http_inputs_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpResponseHeaderMatchInput) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpResponseHeaderMatchInput) ProtoMessage() {}\n\nfunc (x *HttpResponseHeaderMatchInput) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_http_inputs_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpResponseHeaderMatchInput.ProtoReflect.Descriptor instead.\nfunc (*HttpResponseHeaderMatchInput) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_http_inputs_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *HttpResponseHeaderMatchInput) GetHeaderName() string {\n\tif x != nil {\n\t\treturn x.HeaderName\n\t}\n\treturn \"\"\n}\n\n// Match input indicates that matching should be done on a specific response trailer.\n// The resulting input string will be all headers for the given key joined by a comma,\n// e.g. if the request contains two 'foo' headers with value 'bar' and 'baz', the input\n// string will be 'bar,baz'.\n// [#comment:TODO(snowp): Link to unified matching docs.]\n// [#extension: envoy.matching.inputs.response_trailers]\ntype HttpResponseTrailerMatchInput struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The response trailer to match on.\n\tHeaderName    string `protobuf:\"bytes,1,opt,name=header_name,json=headerName,proto3\" json:\"header_name,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HttpResponseTrailerMatchInput) Reset() {\n\t*x = HttpResponseTrailerMatchInput{}\n\tmi := &file_envoy_type_matcher_v3_http_inputs_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpResponseTrailerMatchInput) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpResponseTrailerMatchInput) ProtoMessage() {}\n\nfunc (x *HttpResponseTrailerMatchInput) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_http_inputs_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpResponseTrailerMatchInput.ProtoReflect.Descriptor instead.\nfunc (*HttpResponseTrailerMatchInput) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_http_inputs_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *HttpResponseTrailerMatchInput) GetHeaderName() string {\n\tif x != nil {\n\t\treturn x.HeaderName\n\t}\n\treturn \"\"\n}\n\n// Match input indicates that matching should be done on a specific query parameter.\n// The resulting input string will be the first query parameter for the value\n// 'query_param'.\n// [#extension: envoy.matching.inputs.query_params]\ntype HttpRequestQueryParamMatchInput struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The query parameter to match on.\n\tQueryParam    string `protobuf:\"bytes,1,opt,name=query_param,json=queryParam,proto3\" json:\"query_param,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HttpRequestQueryParamMatchInput) Reset() {\n\t*x = HttpRequestQueryParamMatchInput{}\n\tmi := &file_envoy_type_matcher_v3_http_inputs_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpRequestQueryParamMatchInput) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpRequestQueryParamMatchInput) ProtoMessage() {}\n\nfunc (x *HttpRequestQueryParamMatchInput) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_http_inputs_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpRequestQueryParamMatchInput.ProtoReflect.Descriptor instead.\nfunc (*HttpRequestQueryParamMatchInput) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_http_inputs_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *HttpRequestQueryParamMatchInput) GetQueryParam() string {\n\tif x != nil {\n\t\treturn x.QueryParam\n\t}\n\treturn \"\"\n}\n\nvar File_envoy_type_matcher_v3_http_inputs_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_matcher_v3_http_inputs_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"'envoy/type/matcher/v3/http_inputs.proto\\x12\\x15envoy.type.matcher.v3\\x1a\\x1dudpa/annotations/status.proto\\x1a\\x17validate/validate.proto\\\"K\\n\" +\n\t\"\\x1bHttpRequestHeaderMatchInput\\x12,\\n\" +\n\t\"\\vheader_name\\x18\\x01 \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01R\\n\" +\n\t\"headerName\\\"L\\n\" +\n\t\"\\x1cHttpRequestTrailerMatchInput\\x12,\\n\" +\n\t\"\\vheader_name\\x18\\x01 \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01R\\n\" +\n\t\"headerName\\\"L\\n\" +\n\t\"\\x1cHttpResponseHeaderMatchInput\\x12,\\n\" +\n\t\"\\vheader_name\\x18\\x01 \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01R\\n\" +\n\t\"headerName\\\"M\\n\" +\n\t\"\\x1dHttpResponseTrailerMatchInput\\x12,\\n\" +\n\t\"\\vheader_name\\x18\\x01 \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x01R\\n\" +\n\t\"headerName\\\"K\\n\" +\n\t\"\\x1fHttpRequestQueryParamMatchInput\\x12(\\n\" +\n\t\"\\vquery_param\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\n\" +\n\t\"queryParamB\\x88\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.type.matcher.v3B\\x0fHttpInputsProtoP\\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_matcher_v3_http_inputs_proto_rawDescOnce sync.Once\n\tfile_envoy_type_matcher_v3_http_inputs_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_matcher_v3_http_inputs_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_matcher_v3_http_inputs_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_matcher_v3_http_inputs_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_http_inputs_proto_rawDesc), len(file_envoy_type_matcher_v3_http_inputs_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_matcher_v3_http_inputs_proto_rawDescData\n}\n\nvar file_envoy_type_matcher_v3_http_inputs_proto_msgTypes = make([]protoimpl.MessageInfo, 5)\nvar file_envoy_type_matcher_v3_http_inputs_proto_goTypes = []any{\n\t(*HttpRequestHeaderMatchInput)(nil),     // 0: envoy.type.matcher.v3.HttpRequestHeaderMatchInput\n\t(*HttpRequestTrailerMatchInput)(nil),    // 1: envoy.type.matcher.v3.HttpRequestTrailerMatchInput\n\t(*HttpResponseHeaderMatchInput)(nil),    // 2: envoy.type.matcher.v3.HttpResponseHeaderMatchInput\n\t(*HttpResponseTrailerMatchInput)(nil),   // 3: envoy.type.matcher.v3.HttpResponseTrailerMatchInput\n\t(*HttpRequestQueryParamMatchInput)(nil), // 4: envoy.type.matcher.v3.HttpRequestQueryParamMatchInput\n}\nvar file_envoy_type_matcher_v3_http_inputs_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_matcher_v3_http_inputs_proto_init() }\nfunc file_envoy_type_matcher_v3_http_inputs_proto_init() {\n\tif File_envoy_type_matcher_v3_http_inputs_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_http_inputs_proto_rawDesc), len(file_envoy_type_matcher_v3_http_inputs_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   5,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_matcher_v3_http_inputs_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_matcher_v3_http_inputs_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_matcher_v3_http_inputs_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_matcher_v3_http_inputs_proto = out.File\n\tfile_envoy_type_matcher_v3_http_inputs_proto_goTypes = nil\n\tfile_envoy_type_matcher_v3_http_inputs_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/http_inputs.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/matcher/v3/http_inputs.proto\n\npackage matcherv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on HttpRequestHeaderMatchInput with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HttpRequestHeaderMatchInput) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpRequestHeaderMatchInput with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HttpRequestHeaderMatchInputMultiError, or nil if none found.\nfunc (m *HttpRequestHeaderMatchInput) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpRequestHeaderMatchInput) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif !_HttpRequestHeaderMatchInput_HeaderName_Pattern.MatchString(m.GetHeaderName()) {\n\t\terr := HttpRequestHeaderMatchInputValidationError{\n\t\t\tfield:  \"HeaderName\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HttpRequestHeaderMatchInputMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpRequestHeaderMatchInputMultiError is an error wrapping multiple\n// validation errors returned by HttpRequestHeaderMatchInput.ValidateAll() if\n// the designated constraints aren't met.\ntype HttpRequestHeaderMatchInputMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpRequestHeaderMatchInputMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpRequestHeaderMatchInputMultiError) AllErrors() []error { return m }\n\n// HttpRequestHeaderMatchInputValidationError is the validation error returned\n// by HttpRequestHeaderMatchInput.Validate if the designated constraints\n// aren't met.\ntype HttpRequestHeaderMatchInputValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpRequestHeaderMatchInputValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpRequestHeaderMatchInputValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpRequestHeaderMatchInputValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpRequestHeaderMatchInputValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpRequestHeaderMatchInputValidationError) ErrorName() string {\n\treturn \"HttpRequestHeaderMatchInputValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HttpRequestHeaderMatchInputValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpRequestHeaderMatchInput.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpRequestHeaderMatchInputValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpRequestHeaderMatchInputValidationError{}\n\nvar _HttpRequestHeaderMatchInput_HeaderName_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on HttpRequestTrailerMatchInput with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HttpRequestTrailerMatchInput) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpRequestTrailerMatchInput with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HttpRequestTrailerMatchInputMultiError, or nil if none found.\nfunc (m *HttpRequestTrailerMatchInput) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpRequestTrailerMatchInput) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif !_HttpRequestTrailerMatchInput_HeaderName_Pattern.MatchString(m.GetHeaderName()) {\n\t\terr := HttpRequestTrailerMatchInputValidationError{\n\t\t\tfield:  \"HeaderName\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HttpRequestTrailerMatchInputMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpRequestTrailerMatchInputMultiError is an error wrapping multiple\n// validation errors returned by HttpRequestTrailerMatchInput.ValidateAll() if\n// the designated constraints aren't met.\ntype HttpRequestTrailerMatchInputMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpRequestTrailerMatchInputMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpRequestTrailerMatchInputMultiError) AllErrors() []error { return m }\n\n// HttpRequestTrailerMatchInputValidationError is the validation error returned\n// by HttpRequestTrailerMatchInput.Validate if the designated constraints\n// aren't met.\ntype HttpRequestTrailerMatchInputValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpRequestTrailerMatchInputValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpRequestTrailerMatchInputValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpRequestTrailerMatchInputValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpRequestTrailerMatchInputValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpRequestTrailerMatchInputValidationError) ErrorName() string {\n\treturn \"HttpRequestTrailerMatchInputValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HttpRequestTrailerMatchInputValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpRequestTrailerMatchInput.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpRequestTrailerMatchInputValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpRequestTrailerMatchInputValidationError{}\n\nvar _HttpRequestTrailerMatchInput_HeaderName_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on HttpResponseHeaderMatchInput with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HttpResponseHeaderMatchInput) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpResponseHeaderMatchInput with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HttpResponseHeaderMatchInputMultiError, or nil if none found.\nfunc (m *HttpResponseHeaderMatchInput) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpResponseHeaderMatchInput) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif !_HttpResponseHeaderMatchInput_HeaderName_Pattern.MatchString(m.GetHeaderName()) {\n\t\terr := HttpResponseHeaderMatchInputValidationError{\n\t\t\tfield:  \"HeaderName\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HttpResponseHeaderMatchInputMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpResponseHeaderMatchInputMultiError is an error wrapping multiple\n// validation errors returned by HttpResponseHeaderMatchInput.ValidateAll() if\n// the designated constraints aren't met.\ntype HttpResponseHeaderMatchInputMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpResponseHeaderMatchInputMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpResponseHeaderMatchInputMultiError) AllErrors() []error { return m }\n\n// HttpResponseHeaderMatchInputValidationError is the validation error returned\n// by HttpResponseHeaderMatchInput.Validate if the designated constraints\n// aren't met.\ntype HttpResponseHeaderMatchInputValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpResponseHeaderMatchInputValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpResponseHeaderMatchInputValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpResponseHeaderMatchInputValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpResponseHeaderMatchInputValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpResponseHeaderMatchInputValidationError) ErrorName() string {\n\treturn \"HttpResponseHeaderMatchInputValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HttpResponseHeaderMatchInputValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpResponseHeaderMatchInput.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpResponseHeaderMatchInputValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpResponseHeaderMatchInputValidationError{}\n\nvar _HttpResponseHeaderMatchInput_HeaderName_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on HttpResponseTrailerMatchInput with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HttpResponseTrailerMatchInput) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpResponseTrailerMatchInput with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// HttpResponseTrailerMatchInputMultiError, or nil if none found.\nfunc (m *HttpResponseTrailerMatchInput) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpResponseTrailerMatchInput) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif !_HttpResponseTrailerMatchInput_HeaderName_Pattern.MatchString(m.GetHeaderName()) {\n\t\terr := HttpResponseTrailerMatchInputValidationError{\n\t\t\tfield:  \"HeaderName\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HttpResponseTrailerMatchInputMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpResponseTrailerMatchInputMultiError is an error wrapping multiple\n// validation errors returned by HttpResponseTrailerMatchInput.ValidateAll()\n// if the designated constraints aren't met.\ntype HttpResponseTrailerMatchInputMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpResponseTrailerMatchInputMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpResponseTrailerMatchInputMultiError) AllErrors() []error { return m }\n\n// HttpResponseTrailerMatchInputValidationError is the validation error\n// returned by HttpResponseTrailerMatchInput.Validate if the designated\n// constraints aren't met.\ntype HttpResponseTrailerMatchInputValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpResponseTrailerMatchInputValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpResponseTrailerMatchInputValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpResponseTrailerMatchInputValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpResponseTrailerMatchInputValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpResponseTrailerMatchInputValidationError) ErrorName() string {\n\treturn \"HttpResponseTrailerMatchInputValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HttpResponseTrailerMatchInputValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpResponseTrailerMatchInput.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpResponseTrailerMatchInputValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpResponseTrailerMatchInputValidationError{}\n\nvar _HttpResponseTrailerMatchInput_HeaderName_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on HttpRequestQueryParamMatchInput with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HttpRequestQueryParamMatchInput) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpRequestQueryParamMatchInput with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// HttpRequestQueryParamMatchInputMultiError, or nil if none found.\nfunc (m *HttpRequestQueryParamMatchInput) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpRequestQueryParamMatchInput) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetQueryParam()) < 1 {\n\t\terr := HttpRequestQueryParamMatchInputValidationError{\n\t\t\tfield:  \"QueryParam\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HttpRequestQueryParamMatchInputMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpRequestQueryParamMatchInputMultiError is an error wrapping multiple\n// validation errors returned by HttpRequestQueryParamMatchInput.ValidateAll()\n// if the designated constraints aren't met.\ntype HttpRequestQueryParamMatchInputMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpRequestQueryParamMatchInputMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpRequestQueryParamMatchInputMultiError) AllErrors() []error { return m }\n\n// HttpRequestQueryParamMatchInputValidationError is the validation error\n// returned by HttpRequestQueryParamMatchInput.Validate if the designated\n// constraints aren't met.\ntype HttpRequestQueryParamMatchInputValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpRequestQueryParamMatchInputValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpRequestQueryParamMatchInputValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpRequestQueryParamMatchInputValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpRequestQueryParamMatchInputValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpRequestQueryParamMatchInputValidationError) ErrorName() string {\n\treturn \"HttpRequestQueryParamMatchInputValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HttpRequestQueryParamMatchInputValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpRequestQueryParamMatchInput.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpRequestQueryParamMatchInputValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpRequestQueryParamMatchInputValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/http_inputs_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/matcher/v3/http_inputs.proto\n\npackage matcherv3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *HttpRequestHeaderMatchInput) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HttpRequestHeaderMatchInput) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HttpRequestHeaderMatchInput) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.HeaderName) > 0 {\n\t\ti -= len(m.HeaderName)\n\t\tcopy(dAtA[i:], m.HeaderName)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HeaderName)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HttpRequestTrailerMatchInput) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HttpRequestTrailerMatchInput) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HttpRequestTrailerMatchInput) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.HeaderName) > 0 {\n\t\ti -= len(m.HeaderName)\n\t\tcopy(dAtA[i:], m.HeaderName)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HeaderName)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HttpResponseHeaderMatchInput) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HttpResponseHeaderMatchInput) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HttpResponseHeaderMatchInput) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.HeaderName) > 0 {\n\t\ti -= len(m.HeaderName)\n\t\tcopy(dAtA[i:], m.HeaderName)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HeaderName)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HttpResponseTrailerMatchInput) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HttpResponseTrailerMatchInput) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HttpResponseTrailerMatchInput) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.HeaderName) > 0 {\n\t\ti -= len(m.HeaderName)\n\t\tcopy(dAtA[i:], m.HeaderName)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HeaderName)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HttpRequestQueryParamMatchInput) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HttpRequestQueryParamMatchInput) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HttpRequestQueryParamMatchInput) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.QueryParam) > 0 {\n\t\ti -= len(m.QueryParam)\n\t\tcopy(dAtA[i:], m.QueryParam)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.QueryParam)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HttpRequestHeaderMatchInput) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.HeaderName)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HttpRequestTrailerMatchInput) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.HeaderName)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HttpResponseHeaderMatchInput) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.HeaderName)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HttpResponseTrailerMatchInput) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.HeaderName)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HttpRequestQueryParamMatchInput) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.QueryParam)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/metadata.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/matcher/v3/metadata.proto\n\npackage matcherv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// [#next-major-version: MetadataMatcher should use StructMatcher]\ntype MetadataMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The filter name to retrieve the “Struct“ from the “Metadata“.\n\tFilter string `protobuf:\"bytes,1,opt,name=filter,proto3\" json:\"filter,omitempty\"`\n\t// The path to retrieve the “Value“ from the “Struct“.\n\tPath []*MetadataMatcher_PathSegment `protobuf:\"bytes,2,rep,name=path,proto3\" json:\"path,omitempty\"`\n\t// The “MetadataMatcher“ is matched if the value retrieved by path is matched to this value.\n\tValue *ValueMatcher `protobuf:\"bytes,3,opt,name=value,proto3\" json:\"value,omitempty\"`\n\t// If true, the match result will be inverted.\n\tInvert        bool `protobuf:\"varint,4,opt,name=invert,proto3\" json:\"invert,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *MetadataMatcher) Reset() {\n\t*x = MetadataMatcher{}\n\tmi := &file_envoy_type_matcher_v3_metadata_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MetadataMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MetadataMatcher) ProtoMessage() {}\n\nfunc (x *MetadataMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_metadata_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MetadataMatcher.ProtoReflect.Descriptor instead.\nfunc (*MetadataMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_metadata_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *MetadataMatcher) GetFilter() string {\n\tif x != nil {\n\t\treturn x.Filter\n\t}\n\treturn \"\"\n}\n\nfunc (x *MetadataMatcher) GetPath() []*MetadataMatcher_PathSegment {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn nil\n}\n\nfunc (x *MetadataMatcher) GetValue() *ValueMatcher {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nfunc (x *MetadataMatcher) GetInvert() bool {\n\tif x != nil {\n\t\treturn x.Invert\n\t}\n\treturn false\n}\n\n// Specifies the segment in a path to retrieve value from “Metadata“.\n//\n// .. note::\n//\n//\tCurrently it's not supported to retrieve a value from a list in ``Metadata``. This means that\n//\tif the segment key refers to a list, it has to be the last segment in a path.\ntype MetadataMatcher_PathSegment struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Segment:\n\t//\n\t//\t*MetadataMatcher_PathSegment_Key\n\tSegment       isMetadataMatcher_PathSegment_Segment `protobuf_oneof:\"segment\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *MetadataMatcher_PathSegment) Reset() {\n\t*x = MetadataMatcher_PathSegment{}\n\tmi := &file_envoy_type_matcher_v3_metadata_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MetadataMatcher_PathSegment) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MetadataMatcher_PathSegment) ProtoMessage() {}\n\nfunc (x *MetadataMatcher_PathSegment) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_metadata_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MetadataMatcher_PathSegment.ProtoReflect.Descriptor instead.\nfunc (*MetadataMatcher_PathSegment) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_metadata_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *MetadataMatcher_PathSegment) GetSegment() isMetadataMatcher_PathSegment_Segment {\n\tif x != nil {\n\t\treturn x.Segment\n\t}\n\treturn nil\n}\n\nfunc (x *MetadataMatcher_PathSegment) GetKey() string {\n\tif x != nil {\n\t\tif x, ok := x.Segment.(*MetadataMatcher_PathSegment_Key); ok {\n\t\t\treturn x.Key\n\t\t}\n\t}\n\treturn \"\"\n}\n\ntype isMetadataMatcher_PathSegment_Segment interface {\n\tisMetadataMatcher_PathSegment_Segment()\n}\n\ntype MetadataMatcher_PathSegment_Key struct {\n\t// If specified, use the key to retrieve the value in a “Struct“.\n\tKey string `protobuf:\"bytes,1,opt,name=key,proto3,oneof\"`\n}\n\nfunc (*MetadataMatcher_PathSegment_Key) isMetadataMatcher_PathSegment_Segment() {}\n\nvar File_envoy_type_matcher_v3_metadata_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_matcher_v3_metadata_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"$envoy/type/matcher/v3/metadata.proto\\x12\\x15envoy.type.matcher.v3\\x1a!envoy/type/matcher/v3/value.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xff\\x02\\n\" +\n\t\"\\x0fMetadataMatcher\\x12\\x1f\\n\" +\n\t\"\\x06filter\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x06filter\\x12P\\n\" +\n\t\"\\x04path\\x18\\x02 \\x03(\\v22.envoy.type.matcher.v3.MetadataMatcher.PathSegmentB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\x04path\\x12C\\n\" +\n\t\"\\x05value\\x18\\x03 \\x01(\\v2#.envoy.type.matcher.v3.ValueMatcherB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\x05value\\x12\\x16\\n\" +\n\t\"\\x06invert\\x18\\x04 \\x01(\\bR\\x06invert\\x1aq\\n\" +\n\t\"\\vPathSegment\\x12\\x1b\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01H\\x00R\\x03key:5\\x9aň\\x1e0\\n\" +\n\t\".envoy.type.matcher.MetadataMatcher.PathSegmentB\\x0e\\n\" +\n\t\"\\asegment\\x12\\x03\\xf8B\\x01:)\\x9aň\\x1e$\\n\" +\n\t\"\\\"envoy.type.matcher.MetadataMatcherB\\x86\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.type.matcher.v3B\\rMetadataProtoP\\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_matcher_v3_metadata_proto_rawDescOnce sync.Once\n\tfile_envoy_type_matcher_v3_metadata_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_matcher_v3_metadata_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_matcher_v3_metadata_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_matcher_v3_metadata_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_metadata_proto_rawDesc), len(file_envoy_type_matcher_v3_metadata_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_matcher_v3_metadata_proto_rawDescData\n}\n\nvar file_envoy_type_matcher_v3_metadata_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_envoy_type_matcher_v3_metadata_proto_goTypes = []any{\n\t(*MetadataMatcher)(nil),             // 0: envoy.type.matcher.v3.MetadataMatcher\n\t(*MetadataMatcher_PathSegment)(nil), // 1: envoy.type.matcher.v3.MetadataMatcher.PathSegment\n\t(*ValueMatcher)(nil),                // 2: envoy.type.matcher.v3.ValueMatcher\n}\nvar file_envoy_type_matcher_v3_metadata_proto_depIdxs = []int32{\n\t1, // 0: envoy.type.matcher.v3.MetadataMatcher.path:type_name -> envoy.type.matcher.v3.MetadataMatcher.PathSegment\n\t2, // 1: envoy.type.matcher.v3.MetadataMatcher.value:type_name -> envoy.type.matcher.v3.ValueMatcher\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_matcher_v3_metadata_proto_init() }\nfunc file_envoy_type_matcher_v3_metadata_proto_init() {\n\tif File_envoy_type_matcher_v3_metadata_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_type_matcher_v3_value_proto_init()\n\tfile_envoy_type_matcher_v3_metadata_proto_msgTypes[1].OneofWrappers = []any{\n\t\t(*MetadataMatcher_PathSegment_Key)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_metadata_proto_rawDesc), len(file_envoy_type_matcher_v3_metadata_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_matcher_v3_metadata_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_matcher_v3_metadata_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_matcher_v3_metadata_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_matcher_v3_metadata_proto = out.File\n\tfile_envoy_type_matcher_v3_metadata_proto_goTypes = nil\n\tfile_envoy_type_matcher_v3_metadata_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/metadata.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/matcher/v3/metadata.proto\n\npackage matcherv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on MetadataMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *MetadataMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on MetadataMatcher with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// MetadataMatcherMultiError, or nil if none found.\nfunc (m *MetadataMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *MetadataMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetFilter()) < 1 {\n\t\terr := MetadataMatcherValidationError{\n\t\t\tfield:  \"Filter\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(m.GetPath()) < 1 {\n\t\terr := MetadataMatcherValidationError{\n\t\t\tfield:  \"Path\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetPath() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, MetadataMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Path[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, MetadataMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Path[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn MetadataMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Path[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif m.GetValue() == nil {\n\t\terr := MetadataMatcherValidationError{\n\t\t\tfield:  \"Value\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetValue()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, MetadataMatcherValidationError{\n\t\t\t\t\tfield:  \"Value\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, MetadataMatcherValidationError{\n\t\t\t\t\tfield:  \"Value\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetValue()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn MetadataMatcherValidationError{\n\t\t\t\tfield:  \"Value\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for Invert\n\n\tif len(errors) > 0 {\n\t\treturn MetadataMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// MetadataMatcherMultiError is an error wrapping multiple validation errors\n// returned by MetadataMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype MetadataMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m MetadataMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m MetadataMatcherMultiError) AllErrors() []error { return m }\n\n// MetadataMatcherValidationError is the validation error returned by\n// MetadataMatcher.Validate if the designated constraints aren't met.\ntype MetadataMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e MetadataMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e MetadataMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e MetadataMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e MetadataMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e MetadataMatcherValidationError) ErrorName() string { return \"MetadataMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e MetadataMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMetadataMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = MetadataMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = MetadataMatcherValidationError{}\n\n// Validate checks the field values on MetadataMatcher_PathSegment with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *MetadataMatcher_PathSegment) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on MetadataMatcher_PathSegment with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// MetadataMatcher_PathSegmentMultiError, or nil if none found.\nfunc (m *MetadataMatcher_PathSegment) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *MetadataMatcher_PathSegment) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofSegmentPresent := false\n\tswitch v := m.Segment.(type) {\n\tcase *MetadataMatcher_PathSegment_Key:\n\t\tif v == nil {\n\t\t\terr := MetadataMatcher_PathSegmentValidationError{\n\t\t\t\tfield:  \"Segment\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofSegmentPresent = true\n\n\t\tif utf8.RuneCountInString(m.GetKey()) < 1 {\n\t\t\terr := MetadataMatcher_PathSegmentValidationError{\n\t\t\t\tfield:  \"Key\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofSegmentPresent {\n\t\terr := MetadataMatcher_PathSegmentValidationError{\n\t\t\tfield:  \"Segment\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn MetadataMatcher_PathSegmentMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// MetadataMatcher_PathSegmentMultiError is an error wrapping multiple\n// validation errors returned by MetadataMatcher_PathSegment.ValidateAll() if\n// the designated constraints aren't met.\ntype MetadataMatcher_PathSegmentMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m MetadataMatcher_PathSegmentMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m MetadataMatcher_PathSegmentMultiError) AllErrors() []error { return m }\n\n// MetadataMatcher_PathSegmentValidationError is the validation error returned\n// by MetadataMatcher_PathSegment.Validate if the designated constraints\n// aren't met.\ntype MetadataMatcher_PathSegmentValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e MetadataMatcher_PathSegmentValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e MetadataMatcher_PathSegmentValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e MetadataMatcher_PathSegmentValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e MetadataMatcher_PathSegmentValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e MetadataMatcher_PathSegmentValidationError) ErrorName() string {\n\treturn \"MetadataMatcher_PathSegmentValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e MetadataMatcher_PathSegmentValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMetadataMatcher_PathSegment.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = MetadataMatcher_PathSegmentValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = MetadataMatcher_PathSegmentValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/metadata_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/matcher/v3/metadata.proto\n\npackage matcherv3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *MetadataMatcher_PathSegment) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MetadataMatcher_PathSegment) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataMatcher_PathSegment) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.Segment.(*MetadataMatcher_PathSegment_Key); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MetadataMatcher_PathSegment_Key) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataMatcher_PathSegment_Key) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Key)\n\tcopy(dAtA[i:], m.Key)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Key)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *MetadataMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MetadataMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Invert {\n\t\ti--\n\t\tif m.Invert {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.Value != nil {\n\t\tsize, err := m.Value.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Path) > 0 {\n\t\tfor iNdEx := len(m.Path) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Path[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Filter) > 0 {\n\t\ti -= len(m.Filter)\n\t\tcopy(dAtA[i:], m.Filter)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Filter)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MetadataMatcher_PathSegment) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Segment.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *MetadataMatcher_PathSegment_Key) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *MetadataMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Filter)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.Path) > 0 {\n\t\tfor _, e := range m.Path {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.Value != nil {\n\t\tl = m.Value.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.Invert {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/node.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/matcher/v3/node.proto\n\npackage matcherv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Specifies the way to match a Node.\n// The match follows AND semantics.\ntype NodeMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies match criteria on the node id.\n\tNodeId *StringMatcher `protobuf:\"bytes,1,opt,name=node_id,json=nodeId,proto3\" json:\"node_id,omitempty\"`\n\t// Specifies match criteria on the node metadata.\n\tNodeMetadatas []*StructMatcher `protobuf:\"bytes,2,rep,name=node_metadatas,json=nodeMetadatas,proto3\" json:\"node_metadatas,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *NodeMatcher) Reset() {\n\t*x = NodeMatcher{}\n\tmi := &file_envoy_type_matcher_v3_node_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *NodeMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*NodeMatcher) ProtoMessage() {}\n\nfunc (x *NodeMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_node_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use NodeMatcher.ProtoReflect.Descriptor instead.\nfunc (*NodeMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_node_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *NodeMatcher) GetNodeId() *StringMatcher {\n\tif x != nil {\n\t\treturn x.NodeId\n\t}\n\treturn nil\n}\n\nfunc (x *NodeMatcher) GetNodeMetadatas() []*StructMatcher {\n\tif x != nil {\n\t\treturn x.NodeMetadatas\n\t}\n\treturn nil\n}\n\nvar File_envoy_type_matcher_v3_node_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_matcher_v3_node_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\" envoy/type/matcher/v3/node.proto\\x12\\x15envoy.type.matcher.v3\\x1a\\\"envoy/type/matcher/v3/string.proto\\x1a\\\"envoy/type/matcher/v3/struct.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\\"\\xc0\\x01\\n\" +\n\t\"\\vNodeMatcher\\x12=\\n\" +\n\t\"\\anode_id\\x18\\x01 \\x01(\\v2$.envoy.type.matcher.v3.StringMatcherR\\x06nodeId\\x12K\\n\" +\n\t\"\\x0enode_metadatas\\x18\\x02 \\x03(\\v2$.envoy.type.matcher.v3.StructMatcherR\\rnodeMetadatas:%\\x9aň\\x1e \\n\" +\n\t\"\\x1eenvoy.type.matcher.NodeMatcherB\\x82\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.type.matcher.v3B\\tNodeProtoP\\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_matcher_v3_node_proto_rawDescOnce sync.Once\n\tfile_envoy_type_matcher_v3_node_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_matcher_v3_node_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_matcher_v3_node_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_matcher_v3_node_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_node_proto_rawDesc), len(file_envoy_type_matcher_v3_node_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_matcher_v3_node_proto_rawDescData\n}\n\nvar file_envoy_type_matcher_v3_node_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_type_matcher_v3_node_proto_goTypes = []any{\n\t(*NodeMatcher)(nil),   // 0: envoy.type.matcher.v3.NodeMatcher\n\t(*StringMatcher)(nil), // 1: envoy.type.matcher.v3.StringMatcher\n\t(*StructMatcher)(nil), // 2: envoy.type.matcher.v3.StructMatcher\n}\nvar file_envoy_type_matcher_v3_node_proto_depIdxs = []int32{\n\t1, // 0: envoy.type.matcher.v3.NodeMatcher.node_id:type_name -> envoy.type.matcher.v3.StringMatcher\n\t2, // 1: envoy.type.matcher.v3.NodeMatcher.node_metadatas:type_name -> envoy.type.matcher.v3.StructMatcher\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_matcher_v3_node_proto_init() }\nfunc file_envoy_type_matcher_v3_node_proto_init() {\n\tif File_envoy_type_matcher_v3_node_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_type_matcher_v3_string_proto_init()\n\tfile_envoy_type_matcher_v3_struct_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_node_proto_rawDesc), len(file_envoy_type_matcher_v3_node_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_matcher_v3_node_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_matcher_v3_node_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_matcher_v3_node_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_matcher_v3_node_proto = out.File\n\tfile_envoy_type_matcher_v3_node_proto_goTypes = nil\n\tfile_envoy_type_matcher_v3_node_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/node.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/matcher/v3/node.proto\n\npackage matcherv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on NodeMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *NodeMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on NodeMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in NodeMatcherMultiError, or\n// nil if none found.\nfunc (m *NodeMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *NodeMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetNodeId()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, NodeMatcherValidationError{\n\t\t\t\t\tfield:  \"NodeId\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, NodeMatcherValidationError{\n\t\t\t\t\tfield:  \"NodeId\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetNodeId()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn NodeMatcherValidationError{\n\t\t\t\tfield:  \"NodeId\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, item := range m.GetNodeMetadatas() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, NodeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"NodeMetadatas[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, NodeMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"NodeMetadatas[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn NodeMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"NodeMetadatas[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn NodeMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// NodeMatcherMultiError is an error wrapping multiple validation errors\n// returned by NodeMatcher.ValidateAll() if the designated constraints aren't met.\ntype NodeMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m NodeMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m NodeMatcherMultiError) AllErrors() []error { return m }\n\n// NodeMatcherValidationError is the validation error returned by\n// NodeMatcher.Validate if the designated constraints aren't met.\ntype NodeMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e NodeMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e NodeMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e NodeMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e NodeMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e NodeMatcherValidationError) ErrorName() string { return \"NodeMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e NodeMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sNodeMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = NodeMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = NodeMatcherValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/node_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/matcher/v3/node.proto\n\npackage matcherv3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *NodeMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *NodeMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *NodeMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.NodeMetadatas) > 0 {\n\t\tfor iNdEx := len(m.NodeMetadatas) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.NodeMetadatas[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.NodeId != nil {\n\t\tsize, err := m.NodeId.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *NodeMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.NodeId != nil {\n\t\tl = m.NodeId.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.NodeMetadatas) > 0 {\n\t\tfor _, e := range m.NodeMetadatas {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/number.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/matcher/v3/number.proto\n\npackage matcherv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/type/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Specifies the way to match a double value.\ntype DoubleMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to MatchPattern:\n\t//\n\t//\t*DoubleMatcher_Range\n\t//\t*DoubleMatcher_Exact\n\tMatchPattern  isDoubleMatcher_MatchPattern `protobuf_oneof:\"match_pattern\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DoubleMatcher) Reset() {\n\t*x = DoubleMatcher{}\n\tmi := &file_envoy_type_matcher_v3_number_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DoubleMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DoubleMatcher) ProtoMessage() {}\n\nfunc (x *DoubleMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_number_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DoubleMatcher.ProtoReflect.Descriptor instead.\nfunc (*DoubleMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_number_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *DoubleMatcher) GetMatchPattern() isDoubleMatcher_MatchPattern {\n\tif x != nil {\n\t\treturn x.MatchPattern\n\t}\n\treturn nil\n}\n\nfunc (x *DoubleMatcher) GetRange() *v3.DoubleRange {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*DoubleMatcher_Range); ok {\n\t\t\treturn x.Range\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *DoubleMatcher) GetExact() float64 {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*DoubleMatcher_Exact); ok {\n\t\t\treturn x.Exact\n\t\t}\n\t}\n\treturn 0\n}\n\ntype isDoubleMatcher_MatchPattern interface {\n\tisDoubleMatcher_MatchPattern()\n}\n\ntype DoubleMatcher_Range struct {\n\t// If specified, the input double value must be in the range specified here.\n\t// Note: The range is using half-open interval semantics [start, end).\n\tRange *v3.DoubleRange `protobuf:\"bytes,1,opt,name=range,proto3,oneof\"`\n}\n\ntype DoubleMatcher_Exact struct {\n\t// If specified, the input double value must be equal to the value specified here.\n\tExact float64 `protobuf:\"fixed64,2,opt,name=exact,proto3,oneof\"`\n}\n\nfunc (*DoubleMatcher_Range) isDoubleMatcher_MatchPattern() {}\n\nfunc (*DoubleMatcher_Exact) isDoubleMatcher_MatchPattern() {}\n\nvar File_envoy_type_matcher_v3_number_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_matcher_v3_number_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\\"envoy/type/matcher/v3/number.proto\\x12\\x15envoy.type.matcher.v3\\x1a\\x19envoy/type/v3/range.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\x9a\\x01\\n\" +\n\t\"\\rDoubleMatcher\\x122\\n\" +\n\t\"\\x05range\\x18\\x01 \\x01(\\v2\\x1a.envoy.type.v3.DoubleRangeH\\x00R\\x05range\\x12\\x16\\n\" +\n\t\"\\x05exact\\x18\\x02 \\x01(\\x01H\\x00R\\x05exact:'\\x9aň\\x1e\\\"\\n\" +\n\t\" envoy.type.matcher.DoubleMatcherB\\x14\\n\" +\n\t\"\\rmatch_pattern\\x12\\x03\\xf8B\\x01B\\x84\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.type.matcher.v3B\\vNumberProtoP\\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_matcher_v3_number_proto_rawDescOnce sync.Once\n\tfile_envoy_type_matcher_v3_number_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_matcher_v3_number_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_matcher_v3_number_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_matcher_v3_number_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_number_proto_rawDesc), len(file_envoy_type_matcher_v3_number_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_matcher_v3_number_proto_rawDescData\n}\n\nvar file_envoy_type_matcher_v3_number_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_type_matcher_v3_number_proto_goTypes = []any{\n\t(*DoubleMatcher)(nil),  // 0: envoy.type.matcher.v3.DoubleMatcher\n\t(*v3.DoubleRange)(nil), // 1: envoy.type.v3.DoubleRange\n}\nvar file_envoy_type_matcher_v3_number_proto_depIdxs = []int32{\n\t1, // 0: envoy.type.matcher.v3.DoubleMatcher.range:type_name -> envoy.type.v3.DoubleRange\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_matcher_v3_number_proto_init() }\nfunc file_envoy_type_matcher_v3_number_proto_init() {\n\tif File_envoy_type_matcher_v3_number_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_type_matcher_v3_number_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*DoubleMatcher_Range)(nil),\n\t\t(*DoubleMatcher_Exact)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_number_proto_rawDesc), len(file_envoy_type_matcher_v3_number_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_matcher_v3_number_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_matcher_v3_number_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_matcher_v3_number_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_matcher_v3_number_proto = out.File\n\tfile_envoy_type_matcher_v3_number_proto_goTypes = nil\n\tfile_envoy_type_matcher_v3_number_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/number.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/matcher/v3/number.proto\n\npackage matcherv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on DoubleMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *DoubleMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DoubleMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in DoubleMatcherMultiError, or\n// nil if none found.\nfunc (m *DoubleMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DoubleMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofMatchPatternPresent := false\n\tswitch v := m.MatchPattern.(type) {\n\tcase *DoubleMatcher_Range:\n\t\tif v == nil {\n\t\t\terr := DoubleMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetRange()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, DoubleMatcherValidationError{\n\t\t\t\t\t\tfield:  \"Range\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, DoubleMatcherValidationError{\n\t\t\t\t\t\tfield:  \"Range\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn DoubleMatcherValidationError{\n\t\t\t\t\tfield:  \"Range\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *DoubleMatcher_Exact:\n\t\tif v == nil {\n\t\t\terr := DoubleMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\t\t// no validation rules for Exact\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofMatchPatternPresent {\n\t\terr := DoubleMatcherValidationError{\n\t\t\tfield:  \"MatchPattern\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn DoubleMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DoubleMatcherMultiError is an error wrapping multiple validation errors\n// returned by DoubleMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype DoubleMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DoubleMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DoubleMatcherMultiError) AllErrors() []error { return m }\n\n// DoubleMatcherValidationError is the validation error returned by\n// DoubleMatcher.Validate if the designated constraints aren't met.\ntype DoubleMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DoubleMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DoubleMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DoubleMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DoubleMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DoubleMatcherValidationError) ErrorName() string { return \"DoubleMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e DoubleMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDoubleMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DoubleMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DoubleMatcherValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/number_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/matcher/v3/number.proto\n\npackage matcherv3\n\nimport (\n\tbinary \"encoding/binary\"\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tmath \"math\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *DoubleMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DoubleMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DoubleMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.MatchPattern.(*DoubleMatcher_Exact); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.MatchPattern.(*DoubleMatcher_Range); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DoubleMatcher_Range) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DoubleMatcher_Range) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Range != nil {\n\t\tif vtmsg, ok := interface{}(m.Range).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Range)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *DoubleMatcher_Exact) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DoubleMatcher_Exact) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= 8\n\tbinary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Exact))))\n\ti--\n\tdAtA[i] = 0x11\n\treturn len(dAtA) - i, nil\n}\nfunc (m *DoubleMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.MatchPattern.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *DoubleMatcher_Range) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Range != nil {\n\t\tif size, ok := interface{}(m.Range).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Range)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *DoubleMatcher_Exact) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 9\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/path.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/matcher/v3/path.proto\n\npackage matcherv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Specifies the way to match a path on HTTP request.\ntype PathMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Rule:\n\t//\n\t//\t*PathMatcher_Path\n\tRule          isPathMatcher_Rule `protobuf_oneof:\"rule\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *PathMatcher) Reset() {\n\t*x = PathMatcher{}\n\tmi := &file_envoy_type_matcher_v3_path_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *PathMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PathMatcher) ProtoMessage() {}\n\nfunc (x *PathMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_path_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use PathMatcher.ProtoReflect.Descriptor instead.\nfunc (*PathMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_path_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *PathMatcher) GetRule() isPathMatcher_Rule {\n\tif x != nil {\n\t\treturn x.Rule\n\t}\n\treturn nil\n}\n\nfunc (x *PathMatcher) GetPath() *StringMatcher {\n\tif x != nil {\n\t\tif x, ok := x.Rule.(*PathMatcher_Path); ok {\n\t\t\treturn x.Path\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isPathMatcher_Rule interface {\n\tisPathMatcher_Rule()\n}\n\ntype PathMatcher_Path struct {\n\t// The “path“ must match the URL path portion of the :path header. The query and fragment\n\t// string (if present) are removed in the URL path portion.\n\t// For example, the path “/data“ will match the “:path“ header “/data#fragment?param=value“.\n\tPath *StringMatcher `protobuf:\"bytes,1,opt,name=path,proto3,oneof\"`\n}\n\nfunc (*PathMatcher_Path) isPathMatcher_Rule() {}\n\nvar File_envoy_type_matcher_v3_path_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_matcher_v3_path_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\" envoy/type/matcher/v3/path.proto\\x12\\x15envoy.type.matcher.v3\\x1a\\\"envoy/type/matcher/v3/string.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\x87\\x01\\n\" +\n\t\"\\vPathMatcher\\x12D\\n\" +\n\t\"\\x04path\\x18\\x01 \\x01(\\v2$.envoy.type.matcher.v3.StringMatcherB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01H\\x00R\\x04path:%\\x9aň\\x1e \\n\" +\n\t\"\\x1eenvoy.type.matcher.PathMatcherB\\v\\n\" +\n\t\"\\x04rule\\x12\\x03\\xf8B\\x01B\\x82\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.type.matcher.v3B\\tPathProtoP\\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_matcher_v3_path_proto_rawDescOnce sync.Once\n\tfile_envoy_type_matcher_v3_path_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_matcher_v3_path_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_matcher_v3_path_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_matcher_v3_path_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_path_proto_rawDesc), len(file_envoy_type_matcher_v3_path_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_matcher_v3_path_proto_rawDescData\n}\n\nvar file_envoy_type_matcher_v3_path_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_type_matcher_v3_path_proto_goTypes = []any{\n\t(*PathMatcher)(nil),   // 0: envoy.type.matcher.v3.PathMatcher\n\t(*StringMatcher)(nil), // 1: envoy.type.matcher.v3.StringMatcher\n}\nvar file_envoy_type_matcher_v3_path_proto_depIdxs = []int32{\n\t1, // 0: envoy.type.matcher.v3.PathMatcher.path:type_name -> envoy.type.matcher.v3.StringMatcher\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_matcher_v3_path_proto_init() }\nfunc file_envoy_type_matcher_v3_path_proto_init() {\n\tif File_envoy_type_matcher_v3_path_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_type_matcher_v3_string_proto_init()\n\tfile_envoy_type_matcher_v3_path_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*PathMatcher_Path)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_path_proto_rawDesc), len(file_envoy_type_matcher_v3_path_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_matcher_v3_path_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_matcher_v3_path_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_matcher_v3_path_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_matcher_v3_path_proto = out.File\n\tfile_envoy_type_matcher_v3_path_proto_goTypes = nil\n\tfile_envoy_type_matcher_v3_path_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/path.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/matcher/v3/path.proto\n\npackage matcherv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on PathMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *PathMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on PathMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in PathMatcherMultiError, or\n// nil if none found.\nfunc (m *PathMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *PathMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofRulePresent := false\n\tswitch v := m.Rule.(type) {\n\tcase *PathMatcher_Path:\n\t\tif v == nil {\n\t\t\terr := PathMatcherValidationError{\n\t\t\t\tfield:  \"Rule\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofRulePresent = true\n\n\t\tif m.GetPath() == nil {\n\t\t\terr := PathMatcherValidationError{\n\t\t\t\tfield:  \"Path\",\n\t\t\t\treason: \"value is required\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetPath()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, PathMatcherValidationError{\n\t\t\t\t\t\tfield:  \"Path\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, PathMatcherValidationError{\n\t\t\t\t\t\tfield:  \"Path\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetPath()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn PathMatcherValidationError{\n\t\t\t\t\tfield:  \"Path\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofRulePresent {\n\t\terr := PathMatcherValidationError{\n\t\t\tfield:  \"Rule\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn PathMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// PathMatcherMultiError is an error wrapping multiple validation errors\n// returned by PathMatcher.ValidateAll() if the designated constraints aren't met.\ntype PathMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m PathMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m PathMatcherMultiError) AllErrors() []error { return m }\n\n// PathMatcherValidationError is the validation error returned by\n// PathMatcher.Validate if the designated constraints aren't met.\ntype PathMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e PathMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e PathMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e PathMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e PathMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e PathMatcherValidationError) ErrorName() string { return \"PathMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e PathMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sPathMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = PathMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = PathMatcherValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/path_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/matcher/v3/path.proto\n\npackage matcherv3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *PathMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *PathMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *PathMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.Rule.(*PathMatcher_Path); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *PathMatcher_Path) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *PathMatcher_Path) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Path != nil {\n\t\tsize, err := m.Path.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PathMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Rule.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *PathMatcher_Path) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Path != nil {\n\t\tl = m.Path.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/regex.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/matcher/v3/regex.proto\n\npackage matcherv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/go-control-plane/envoy/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// A regex matcher designed for safety when used with untrusted input.\ntype RegexMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to EngineType:\n\t//\n\t//\t*RegexMatcher_GoogleRe2\n\tEngineType isRegexMatcher_EngineType `protobuf_oneof:\"engine_type\"`\n\t// The regex match string. The string must be supported by the configured engine. The regex is matched\n\t// against the full string, not as a partial match.\n\tRegex         string `protobuf:\"bytes,2,opt,name=regex,proto3\" json:\"regex,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RegexMatcher) Reset() {\n\t*x = RegexMatcher{}\n\tmi := &file_envoy_type_matcher_v3_regex_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RegexMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RegexMatcher) ProtoMessage() {}\n\nfunc (x *RegexMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_regex_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RegexMatcher.ProtoReflect.Descriptor instead.\nfunc (*RegexMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_regex_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *RegexMatcher) GetEngineType() isRegexMatcher_EngineType {\n\tif x != nil {\n\t\treturn x.EngineType\n\t}\n\treturn nil\n}\n\n// Deprecated: Marked as deprecated in envoy/type/matcher/v3/regex.proto.\nfunc (x *RegexMatcher) GetGoogleRe2() *RegexMatcher_GoogleRE2 {\n\tif x != nil {\n\t\tif x, ok := x.EngineType.(*RegexMatcher_GoogleRe2); ok {\n\t\t\treturn x.GoogleRe2\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RegexMatcher) GetRegex() string {\n\tif x != nil {\n\t\treturn x.Regex\n\t}\n\treturn \"\"\n}\n\ntype isRegexMatcher_EngineType interface {\n\tisRegexMatcher_EngineType()\n}\n\ntype RegexMatcher_GoogleRe2 struct {\n\t// Google's RE2 regex engine.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/type/matcher/v3/regex.proto.\n\tGoogleRe2 *RegexMatcher_GoogleRE2 `protobuf:\"bytes,1,opt,name=google_re2,json=googleRe2,proto3,oneof\"`\n}\n\nfunc (*RegexMatcher_GoogleRe2) isRegexMatcher_EngineType() {}\n\n// Describes how to match a string and then produce a new string using a regular\n// expression and a substitution string.\ntype RegexMatchAndSubstitute struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The regular expression used to find portions of a string (hereafter called\n\t// the \"subject string\") that should be replaced. When a new string is\n\t// produced during the substitution operation, the new string is initially\n\t// the same as the subject string, but then all matches in the subject string\n\t// are replaced by the substitution string. If replacing all matches isn't\n\t// desired, regular expression anchors can be used to ensure a single match,\n\t// so as to replace just one occurrence of a pattern. Capture groups can be\n\t// used in the pattern to extract portions of the subject string, and then\n\t// referenced in the substitution string.\n\tPattern *RegexMatcher `protobuf:\"bytes,1,opt,name=pattern,proto3\" json:\"pattern,omitempty\"`\n\t// The string that should be substituted into matching portions of the\n\t// subject string during a substitution operation to produce a new string.\n\t// Capture groups in the pattern can be referenced in the substitution\n\t// string. Note, however, that the syntax for referring to capture groups is\n\t// defined by the chosen regular expression engine. Google's `RE2\n\t// <https://github.com/google/re2>`_ regular expression engine uses a\n\t// backslash followed by the capture group number to denote a numbered\n\t// capture group. E.g., “\\1“ refers to capture group 1, and “\\2“ refers\n\t// to capture group 2.\n\tSubstitution  string `protobuf:\"bytes,2,opt,name=substitution,proto3\" json:\"substitution,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RegexMatchAndSubstitute) Reset() {\n\t*x = RegexMatchAndSubstitute{}\n\tmi := &file_envoy_type_matcher_v3_regex_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RegexMatchAndSubstitute) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RegexMatchAndSubstitute) ProtoMessage() {}\n\nfunc (x *RegexMatchAndSubstitute) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_regex_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RegexMatchAndSubstitute.ProtoReflect.Descriptor instead.\nfunc (*RegexMatchAndSubstitute) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_regex_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *RegexMatchAndSubstitute) GetPattern() *RegexMatcher {\n\tif x != nil {\n\t\treturn x.Pattern\n\t}\n\treturn nil\n}\n\nfunc (x *RegexMatchAndSubstitute) GetSubstitution() string {\n\tif x != nil {\n\t\treturn x.Substitution\n\t}\n\treturn \"\"\n}\n\n// Google's `RE2 <https://github.com/google/re2>`_ regex engine. The regex string must adhere to\n// the documented `syntax <https://github.com/google/re2/wiki/Syntax>`_. The engine is designed\n// to complete execution in linear time as well as limit the amount of memory used.\n//\n// Envoy supports program size checking via runtime. The runtime keys “re2.max_program_size.error_level“\n// and “re2.max_program_size.warn_level“ can be set to integers as the maximum program size or\n// complexity that a compiled regex can have before an exception is thrown or a warning is\n// logged, respectively. “re2.max_program_size.error_level“ defaults to 100, and\n// “re2.max_program_size.warn_level“ has no default if unset (will not check/log a warning).\n//\n// Envoy emits two stats for tracking the program size of regexes: the histogram “re2.program_size“,\n// which records the program size, and the counter “re2.exceeded_warn_level“, which is incremented\n// each time the program size exceeds the warn level threshold.\ntype RegexMatcher_GoogleRE2 struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// This field controls the RE2 \"program size\" which is a rough estimate of how complex a\n\t// compiled regex is to evaluate. A regex that has a program size greater than the configured\n\t// value will fail to compile. In this case, the configured max program size can be increased\n\t// or the regex can be simplified. If not specified, the default is 100.\n\t//\n\t// This field is deprecated; regexp validation should be performed on the management server\n\t// instead of being done by each individual client.\n\t//\n\t// .. note::\n\t//\n\t//\tAlthough this field is deprecated, the program size will still be checked against the\n\t//\tglobal ``re2.max_program_size.error_level`` runtime value.\n\t//\n\t// Deprecated: Marked as deprecated in envoy/type/matcher/v3/regex.proto.\n\tMaxProgramSize *wrapperspb.UInt32Value `protobuf:\"bytes,1,opt,name=max_program_size,json=maxProgramSize,proto3\" json:\"max_program_size,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *RegexMatcher_GoogleRE2) Reset() {\n\t*x = RegexMatcher_GoogleRE2{}\n\tmi := &file_envoy_type_matcher_v3_regex_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RegexMatcher_GoogleRE2) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RegexMatcher_GoogleRE2) ProtoMessage() {}\n\nfunc (x *RegexMatcher_GoogleRE2) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_regex_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RegexMatcher_GoogleRE2.ProtoReflect.Descriptor instead.\nfunc (*RegexMatcher_GoogleRE2) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_regex_proto_rawDescGZIP(), []int{0, 0}\n}\n\n// Deprecated: Marked as deprecated in envoy/type/matcher/v3/regex.proto.\nfunc (x *RegexMatcher_GoogleRE2) GetMaxProgramSize() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.MaxProgramSize\n\t}\n\treturn nil\n}\n\nvar File_envoy_type_matcher_v3_regex_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_matcher_v3_regex_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"!envoy/type/matcher/v3/regex.proto\\x12\\x15envoy.type.matcher.v3\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a#envoy/annotations/deprecation.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xd6\\x02\\n\" +\n\t\"\\fRegexMatcher\\x12[\\n\" +\n\t\"\\n\" +\n\t\"google_re2\\x18\\x01 \\x01(\\v2-.envoy.type.matcher.v3.RegexMatcher.GoogleRE2B\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01H\\x00R\\tgoogleRe2\\x12\\x1d\\n\" +\n\t\"\\x05regex\\x18\\x02 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x05regex\\x1a\\x92\\x01\\n\" +\n\t\"\\tGoogleRE2\\x12S\\n\" +\n\t\"\\x10max_program_size\\x18\\x01 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\v\\x92ǆ\\xd8\\x04\\x033.0\\x18\\x01R\\x0emaxProgramSize:0\\x9aň\\x1e+\\n\" +\n\t\")envoy.type.matcher.RegexMatcher.GoogleRE2:&\\x9aň\\x1e!\\n\" +\n\t\"\\x1fenvoy.type.matcher.RegexMatcherB\\r\\n\" +\n\t\"\\vengine_type\\\"\\xc6\\x01\\n\" +\n\t\"\\x17RegexMatchAndSubstitute\\x12G\\n\" +\n\t\"\\apattern\\x18\\x01 \\x01(\\v2#.envoy.type.matcher.v3.RegexMatcherB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\apattern\\x12/\\n\" +\n\t\"\\fsubstitution\\x18\\x02 \\x01(\\tB\\v\\xfaB\\br\\x06\\xc8\\x01\\x00\\xc0\\x01\\x02R\\fsubstitution:1\\x9aň\\x1e,\\n\" +\n\t\"*envoy.type.matcher.RegexMatchAndSubstituteB\\x83\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.type.matcher.v3B\\n\" +\n\t\"RegexProtoP\\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_matcher_v3_regex_proto_rawDescOnce sync.Once\n\tfile_envoy_type_matcher_v3_regex_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_matcher_v3_regex_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_matcher_v3_regex_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_matcher_v3_regex_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_regex_proto_rawDesc), len(file_envoy_type_matcher_v3_regex_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_matcher_v3_regex_proto_rawDescData\n}\n\nvar file_envoy_type_matcher_v3_regex_proto_msgTypes = make([]protoimpl.MessageInfo, 3)\nvar file_envoy_type_matcher_v3_regex_proto_goTypes = []any{\n\t(*RegexMatcher)(nil),            // 0: envoy.type.matcher.v3.RegexMatcher\n\t(*RegexMatchAndSubstitute)(nil), // 1: envoy.type.matcher.v3.RegexMatchAndSubstitute\n\t(*RegexMatcher_GoogleRE2)(nil),  // 2: envoy.type.matcher.v3.RegexMatcher.GoogleRE2\n\t(*wrapperspb.UInt32Value)(nil),  // 3: google.protobuf.UInt32Value\n}\nvar file_envoy_type_matcher_v3_regex_proto_depIdxs = []int32{\n\t2, // 0: envoy.type.matcher.v3.RegexMatcher.google_re2:type_name -> envoy.type.matcher.v3.RegexMatcher.GoogleRE2\n\t0, // 1: envoy.type.matcher.v3.RegexMatchAndSubstitute.pattern:type_name -> envoy.type.matcher.v3.RegexMatcher\n\t3, // 2: envoy.type.matcher.v3.RegexMatcher.GoogleRE2.max_program_size:type_name -> google.protobuf.UInt32Value\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t3, // [3:3] is the sub-list for extension type_name\n\t3, // [3:3] is the sub-list for extension extendee\n\t0, // [0:3] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_matcher_v3_regex_proto_init() }\nfunc file_envoy_type_matcher_v3_regex_proto_init() {\n\tif File_envoy_type_matcher_v3_regex_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_type_matcher_v3_regex_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*RegexMatcher_GoogleRe2)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_regex_proto_rawDesc), len(file_envoy_type_matcher_v3_regex_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   3,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_matcher_v3_regex_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_matcher_v3_regex_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_matcher_v3_regex_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_matcher_v3_regex_proto = out.File\n\tfile_envoy_type_matcher_v3_regex_proto_goTypes = nil\n\tfile_envoy_type_matcher_v3_regex_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/regex.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/matcher/v3/regex.proto\n\npackage matcherv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on RegexMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *RegexMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RegexMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in RegexMatcherMultiError, or\n// nil if none found.\nfunc (m *RegexMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RegexMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetRegex()) < 1 {\n\t\terr := RegexMatcherValidationError{\n\t\t\tfield:  \"Regex\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tswitch v := m.EngineType.(type) {\n\tcase *RegexMatcher_GoogleRe2:\n\t\tif v == nil {\n\t\t\terr := RegexMatcherValidationError{\n\t\t\t\tfield:  \"EngineType\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetGoogleRe2()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RegexMatcherValidationError{\n\t\t\t\t\t\tfield:  \"GoogleRe2\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RegexMatcherValidationError{\n\t\t\t\t\t\tfield:  \"GoogleRe2\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetGoogleRe2()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RegexMatcherValidationError{\n\t\t\t\t\tfield:  \"GoogleRe2\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RegexMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RegexMatcherMultiError is an error wrapping multiple validation errors\n// returned by RegexMatcher.ValidateAll() if the designated constraints aren't met.\ntype RegexMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RegexMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RegexMatcherMultiError) AllErrors() []error { return m }\n\n// RegexMatcherValidationError is the validation error returned by\n// RegexMatcher.Validate if the designated constraints aren't met.\ntype RegexMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RegexMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RegexMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RegexMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RegexMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RegexMatcherValidationError) ErrorName() string { return \"RegexMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e RegexMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRegexMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RegexMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RegexMatcherValidationError{}\n\n// Validate checks the field values on RegexMatchAndSubstitute with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RegexMatchAndSubstitute) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RegexMatchAndSubstitute with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RegexMatchAndSubstituteMultiError, or nil if none found.\nfunc (m *RegexMatchAndSubstitute) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RegexMatchAndSubstitute) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetPattern() == nil {\n\t\terr := RegexMatchAndSubstituteValidationError{\n\t\t\tfield:  \"Pattern\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetPattern()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RegexMatchAndSubstituteValidationError{\n\t\t\t\t\tfield:  \"Pattern\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RegexMatchAndSubstituteValidationError{\n\t\t\t\t\tfield:  \"Pattern\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetPattern()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RegexMatchAndSubstituteValidationError{\n\t\t\t\tfield:  \"Pattern\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif !_RegexMatchAndSubstitute_Substitution_Pattern.MatchString(m.GetSubstitution()) {\n\t\terr := RegexMatchAndSubstituteValidationError{\n\t\t\tfield:  \"Substitution\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RegexMatchAndSubstituteMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RegexMatchAndSubstituteMultiError is an error wrapping multiple validation\n// errors returned by RegexMatchAndSubstitute.ValidateAll() if the designated\n// constraints aren't met.\ntype RegexMatchAndSubstituteMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RegexMatchAndSubstituteMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RegexMatchAndSubstituteMultiError) AllErrors() []error { return m }\n\n// RegexMatchAndSubstituteValidationError is the validation error returned by\n// RegexMatchAndSubstitute.Validate if the designated constraints aren't met.\ntype RegexMatchAndSubstituteValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RegexMatchAndSubstituteValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RegexMatchAndSubstituteValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RegexMatchAndSubstituteValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RegexMatchAndSubstituteValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RegexMatchAndSubstituteValidationError) ErrorName() string {\n\treturn \"RegexMatchAndSubstituteValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RegexMatchAndSubstituteValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRegexMatchAndSubstitute.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RegexMatchAndSubstituteValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RegexMatchAndSubstituteValidationError{}\n\nvar _RegexMatchAndSubstitute_Substitution_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on RegexMatcher_GoogleRE2 with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *RegexMatcher_GoogleRE2) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RegexMatcher_GoogleRE2 with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RegexMatcher_GoogleRE2MultiError, or nil if none found.\nfunc (m *RegexMatcher_GoogleRE2) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RegexMatcher_GoogleRE2) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMaxProgramSize()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, RegexMatcher_GoogleRE2ValidationError{\n\t\t\t\t\tfield:  \"MaxProgramSize\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, RegexMatcher_GoogleRE2ValidationError{\n\t\t\t\t\tfield:  \"MaxProgramSize\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMaxProgramSize()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn RegexMatcher_GoogleRE2ValidationError{\n\t\t\t\tfield:  \"MaxProgramSize\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RegexMatcher_GoogleRE2MultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RegexMatcher_GoogleRE2MultiError is an error wrapping multiple validation\n// errors returned by RegexMatcher_GoogleRE2.ValidateAll() if the designated\n// constraints aren't met.\ntype RegexMatcher_GoogleRE2MultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RegexMatcher_GoogleRE2MultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RegexMatcher_GoogleRE2MultiError) AllErrors() []error { return m }\n\n// RegexMatcher_GoogleRE2ValidationError is the validation error returned by\n// RegexMatcher_GoogleRE2.Validate if the designated constraints aren't met.\ntype RegexMatcher_GoogleRE2ValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RegexMatcher_GoogleRE2ValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RegexMatcher_GoogleRE2ValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RegexMatcher_GoogleRE2ValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RegexMatcher_GoogleRE2ValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RegexMatcher_GoogleRE2ValidationError) ErrorName() string {\n\treturn \"RegexMatcher_GoogleRE2ValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RegexMatcher_GoogleRE2ValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRegexMatcher_GoogleRE2.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RegexMatcher_GoogleRE2ValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RegexMatcher_GoogleRE2ValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/regex_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/matcher/v3/regex.proto\n\npackage matcherv3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\twrapperspb \"github.com/planetscale/vtprotobuf/types/known/wrapperspb\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *RegexMatcher_GoogleRE2) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RegexMatcher_GoogleRE2) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RegexMatcher_GoogleRE2) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.MaxProgramSize != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.MaxProgramSize).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RegexMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RegexMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RegexMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Regex) > 0 {\n\t\ti -= len(m.Regex)\n\t\tcopy(dAtA[i:], m.Regex)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Regex)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif msg, ok := m.EngineType.(*RegexMatcher_GoogleRe2); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RegexMatcher_GoogleRe2) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RegexMatcher_GoogleRe2) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.GoogleRe2 != nil {\n\t\tsize, err := m.GoogleRe2.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RegexMatchAndSubstitute) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RegexMatchAndSubstitute) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RegexMatchAndSubstitute) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Substitution) > 0 {\n\t\ti -= len(m.Substitution)\n\t\tcopy(dAtA[i:], m.Substitution)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Substitution)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Pattern != nil {\n\t\tsize, err := m.Pattern.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RegexMatcher_GoogleRE2) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MaxProgramSize != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.MaxProgramSize).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RegexMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.EngineType.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tl = len(m.Regex)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RegexMatcher_GoogleRe2) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.GoogleRe2 != nil {\n\t\tl = m.GoogleRe2.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RegexMatchAndSubstitute) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Pattern != nil {\n\t\tl = m.Pattern.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Substitution)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/status_code_input.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/matcher/v3/status_code_input.proto\n\npackage matcherv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Match input indicates that matching should be done on the response status\n// code.\ntype HttpResponseStatusCodeMatchInput struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HttpResponseStatusCodeMatchInput) Reset() {\n\t*x = HttpResponseStatusCodeMatchInput{}\n\tmi := &file_envoy_type_matcher_v3_status_code_input_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpResponseStatusCodeMatchInput) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpResponseStatusCodeMatchInput) ProtoMessage() {}\n\nfunc (x *HttpResponseStatusCodeMatchInput) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_status_code_input_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpResponseStatusCodeMatchInput.ProtoReflect.Descriptor instead.\nfunc (*HttpResponseStatusCodeMatchInput) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_status_code_input_proto_rawDescGZIP(), []int{0}\n}\n\n// Match input indicates that the matching should be done on the class of the\n// response status code. For eg: 1xx, 2xx, 3xx, 4xx or 5xx.\ntype HttpResponseStatusCodeClassMatchInput struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HttpResponseStatusCodeClassMatchInput) Reset() {\n\t*x = HttpResponseStatusCodeClassMatchInput{}\n\tmi := &file_envoy_type_matcher_v3_status_code_input_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpResponseStatusCodeClassMatchInput) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpResponseStatusCodeClassMatchInput) ProtoMessage() {}\n\nfunc (x *HttpResponseStatusCodeClassMatchInput) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_status_code_input_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpResponseStatusCodeClassMatchInput.ProtoReflect.Descriptor instead.\nfunc (*HttpResponseStatusCodeClassMatchInput) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_status_code_input_proto_rawDescGZIP(), []int{1}\n}\n\nvar File_envoy_type_matcher_v3_status_code_input_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_matcher_v3_status_code_input_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"-envoy/type/matcher/v3/status_code_input.proto\\x12\\x15envoy.type.matcher.v3\\x1a\\x1dudpa/annotations/status.proto\\\"\\\"\\n\" +\n\t\" HttpResponseStatusCodeMatchInput\\\"'\\n\" +\n\t\"%HttpResponseStatusCodeClassMatchInputB\\x8d\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.type.matcher.v3B\\x14StatusCodeInputProtoP\\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_matcher_v3_status_code_input_proto_rawDescOnce sync.Once\n\tfile_envoy_type_matcher_v3_status_code_input_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_matcher_v3_status_code_input_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_matcher_v3_status_code_input_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_matcher_v3_status_code_input_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_status_code_input_proto_rawDesc), len(file_envoy_type_matcher_v3_status_code_input_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_matcher_v3_status_code_input_proto_rawDescData\n}\n\nvar file_envoy_type_matcher_v3_status_code_input_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_envoy_type_matcher_v3_status_code_input_proto_goTypes = []any{\n\t(*HttpResponseStatusCodeMatchInput)(nil),      // 0: envoy.type.matcher.v3.HttpResponseStatusCodeMatchInput\n\t(*HttpResponseStatusCodeClassMatchInput)(nil), // 1: envoy.type.matcher.v3.HttpResponseStatusCodeClassMatchInput\n}\nvar file_envoy_type_matcher_v3_status_code_input_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_matcher_v3_status_code_input_proto_init() }\nfunc file_envoy_type_matcher_v3_status_code_input_proto_init() {\n\tif File_envoy_type_matcher_v3_status_code_input_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_status_code_input_proto_rawDesc), len(file_envoy_type_matcher_v3_status_code_input_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_matcher_v3_status_code_input_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_matcher_v3_status_code_input_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_matcher_v3_status_code_input_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_matcher_v3_status_code_input_proto = out.File\n\tfile_envoy_type_matcher_v3_status_code_input_proto_goTypes = nil\n\tfile_envoy_type_matcher_v3_status_code_input_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/status_code_input.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/matcher/v3/status_code_input.proto\n\npackage matcherv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on HttpResponseStatusCodeMatchInput with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the first error encountered is returned, or nil if there are\n// no violations.\nfunc (m *HttpResponseStatusCodeMatchInput) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpResponseStatusCodeMatchInput with\n// the rules defined in the proto definition for this message. If any rules\n// are violated, the result is a list of violation errors wrapped in\n// HttpResponseStatusCodeMatchInputMultiError, or nil if none found.\nfunc (m *HttpResponseStatusCodeMatchInput) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpResponseStatusCodeMatchInput) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn HttpResponseStatusCodeMatchInputMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpResponseStatusCodeMatchInputMultiError is an error wrapping multiple\n// validation errors returned by\n// HttpResponseStatusCodeMatchInput.ValidateAll() if the designated\n// constraints aren't met.\ntype HttpResponseStatusCodeMatchInputMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpResponseStatusCodeMatchInputMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpResponseStatusCodeMatchInputMultiError) AllErrors() []error { return m }\n\n// HttpResponseStatusCodeMatchInputValidationError is the validation error\n// returned by HttpResponseStatusCodeMatchInput.Validate if the designated\n// constraints aren't met.\ntype HttpResponseStatusCodeMatchInputValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpResponseStatusCodeMatchInputValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpResponseStatusCodeMatchInputValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpResponseStatusCodeMatchInputValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpResponseStatusCodeMatchInputValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpResponseStatusCodeMatchInputValidationError) ErrorName() string {\n\treturn \"HttpResponseStatusCodeMatchInputValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HttpResponseStatusCodeMatchInputValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpResponseStatusCodeMatchInput.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpResponseStatusCodeMatchInputValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpResponseStatusCodeMatchInputValidationError{}\n\n// Validate checks the field values on HttpResponseStatusCodeClassMatchInput\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the first error encountered is returned, or nil if\n// there are no violations.\nfunc (m *HttpResponseStatusCodeClassMatchInput) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpResponseStatusCodeClassMatchInput\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// HttpResponseStatusCodeClassMatchInputMultiError, or nil if none found.\nfunc (m *HttpResponseStatusCodeClassMatchInput) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpResponseStatusCodeClassMatchInput) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn HttpResponseStatusCodeClassMatchInputMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpResponseStatusCodeClassMatchInputMultiError is an error wrapping\n// multiple validation errors returned by\n// HttpResponseStatusCodeClassMatchInput.ValidateAll() if the designated\n// constraints aren't met.\ntype HttpResponseStatusCodeClassMatchInputMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpResponseStatusCodeClassMatchInputMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpResponseStatusCodeClassMatchInputMultiError) AllErrors() []error { return m }\n\n// HttpResponseStatusCodeClassMatchInputValidationError is the validation error\n// returned by HttpResponseStatusCodeClassMatchInput.Validate if the\n// designated constraints aren't met.\ntype HttpResponseStatusCodeClassMatchInputValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpResponseStatusCodeClassMatchInputValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpResponseStatusCodeClassMatchInputValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpResponseStatusCodeClassMatchInputValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpResponseStatusCodeClassMatchInputValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpResponseStatusCodeClassMatchInputValidationError) ErrorName() string {\n\treturn \"HttpResponseStatusCodeClassMatchInputValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HttpResponseStatusCodeClassMatchInputValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpResponseStatusCodeClassMatchInput.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpResponseStatusCodeClassMatchInputValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpResponseStatusCodeClassMatchInputValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/status_code_input_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/matcher/v3/status_code_input.proto\n\npackage matcherv3\n\nimport (\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *HttpResponseStatusCodeMatchInput) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HttpResponseStatusCodeMatchInput) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HttpResponseStatusCodeMatchInput) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HttpResponseStatusCodeClassMatchInput) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HttpResponseStatusCodeClassMatchInput) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HttpResponseStatusCodeClassMatchInput) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HttpResponseStatusCodeMatchInput) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HttpResponseStatusCodeClassMatchInput) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/string.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/matcher/v3/string.proto\n\npackage matcherv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tv3 \"github.com/cncf/xds/go/xds/core/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Specifies the way to match a string.\n// [#next-free-field: 9]\ntype StringMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to MatchPattern:\n\t//\n\t//\t*StringMatcher_Exact\n\t//\t*StringMatcher_Prefix\n\t//\t*StringMatcher_Suffix\n\t//\t*StringMatcher_SafeRegex\n\t//\t*StringMatcher_Contains\n\t//\t*StringMatcher_Custom\n\tMatchPattern isStringMatcher_MatchPattern `protobuf_oneof:\"match_pattern\"`\n\t// If “true“, indicates the exact/prefix/suffix/contains matching should be case insensitive. This\n\t// has no effect for the “safe_regex“ match.\n\t// For example, the matcher “data“ will match both input string “Data“ and “data“ if this option\n\t// is set to “true“.\n\tIgnoreCase    bool `protobuf:\"varint,6,opt,name=ignore_case,json=ignoreCase,proto3\" json:\"ignore_case,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *StringMatcher) Reset() {\n\t*x = StringMatcher{}\n\tmi := &file_envoy_type_matcher_v3_string_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *StringMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*StringMatcher) ProtoMessage() {}\n\nfunc (x *StringMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_string_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use StringMatcher.ProtoReflect.Descriptor instead.\nfunc (*StringMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_string_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *StringMatcher) GetMatchPattern() isStringMatcher_MatchPattern {\n\tif x != nil {\n\t\treturn x.MatchPattern\n\t}\n\treturn nil\n}\n\nfunc (x *StringMatcher) GetExact() string {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*StringMatcher_Exact); ok {\n\t\t\treturn x.Exact\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *StringMatcher) GetPrefix() string {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*StringMatcher_Prefix); ok {\n\t\t\treturn x.Prefix\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *StringMatcher) GetSuffix() string {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*StringMatcher_Suffix); ok {\n\t\t\treturn x.Suffix\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *StringMatcher) GetSafeRegex() *RegexMatcher {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*StringMatcher_SafeRegex); ok {\n\t\t\treturn x.SafeRegex\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *StringMatcher) GetContains() string {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*StringMatcher_Contains); ok {\n\t\t\treturn x.Contains\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *StringMatcher) GetCustom() *v3.TypedExtensionConfig {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*StringMatcher_Custom); ok {\n\t\t\treturn x.Custom\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *StringMatcher) GetIgnoreCase() bool {\n\tif x != nil {\n\t\treturn x.IgnoreCase\n\t}\n\treturn false\n}\n\ntype isStringMatcher_MatchPattern interface {\n\tisStringMatcher_MatchPattern()\n}\n\ntype StringMatcher_Exact struct {\n\t// The input string must match exactly the string specified here.\n\t//\n\t// Examples:\n\t//\n\t// * “abc“ only matches the value “abc“.\n\tExact string `protobuf:\"bytes,1,opt,name=exact,proto3,oneof\"`\n}\n\ntype StringMatcher_Prefix struct {\n\t// The input string must have the prefix specified here.\n\t//\n\t// .. note::\n\t//\n\t//\tEmpty prefix match is not allowed, please use ``safe_regex`` instead.\n\t//\n\t// Examples:\n\t//\n\t// * “abc“ matches the value “abc.xyz“\n\tPrefix string `protobuf:\"bytes,2,opt,name=prefix,proto3,oneof\"`\n}\n\ntype StringMatcher_Suffix struct {\n\t// The input string must have the suffix specified here.\n\t//\n\t// .. note::\n\t//\n\t//\tEmpty suffix match is not allowed, please use ``safe_regex`` instead.\n\t//\n\t// Examples:\n\t//\n\t// * “abc“ matches the value “xyz.abc“\n\tSuffix string `protobuf:\"bytes,3,opt,name=suffix,proto3,oneof\"`\n}\n\ntype StringMatcher_SafeRegex struct {\n\t// The input string must match the regular expression specified here.\n\tSafeRegex *RegexMatcher `protobuf:\"bytes,5,opt,name=safe_regex,json=safeRegex,proto3,oneof\"`\n}\n\ntype StringMatcher_Contains struct {\n\t// The input string must have the substring specified here.\n\t//\n\t// .. note::\n\t//\n\t//\tEmpty contains match is not allowed, please use ``safe_regex`` instead.\n\t//\n\t// Examples:\n\t//\n\t// * “abc“ matches the value “xyz.abc.def“\n\tContains string `protobuf:\"bytes,7,opt,name=contains,proto3,oneof\"`\n}\n\ntype StringMatcher_Custom struct {\n\t// Use an extension as the matcher type.\n\t// [#extension-category: envoy.string_matcher]\n\tCustom *v3.TypedExtensionConfig `protobuf:\"bytes,8,opt,name=custom,proto3,oneof\"`\n}\n\nfunc (*StringMatcher_Exact) isStringMatcher_MatchPattern() {}\n\nfunc (*StringMatcher_Prefix) isStringMatcher_MatchPattern() {}\n\nfunc (*StringMatcher_Suffix) isStringMatcher_MatchPattern() {}\n\nfunc (*StringMatcher_SafeRegex) isStringMatcher_MatchPattern() {}\n\nfunc (*StringMatcher_Contains) isStringMatcher_MatchPattern() {}\n\nfunc (*StringMatcher_Custom) isStringMatcher_MatchPattern() {}\n\n// Specifies a list of ways to match a string.\ntype ListStringMatcher struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tPatterns      []*StringMatcher       `protobuf:\"bytes,1,rep,name=patterns,proto3\" json:\"patterns,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ListStringMatcher) Reset() {\n\t*x = ListStringMatcher{}\n\tmi := &file_envoy_type_matcher_v3_string_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ListStringMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ListStringMatcher) ProtoMessage() {}\n\nfunc (x *ListStringMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_string_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ListStringMatcher.ProtoReflect.Descriptor instead.\nfunc (*ListStringMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_string_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ListStringMatcher) GetPatterns() []*StringMatcher {\n\tif x != nil {\n\t\treturn x.Patterns\n\t}\n\treturn nil\n}\n\nvar File_envoy_type_matcher_v3_string_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_matcher_v3_string_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\\"envoy/type/matcher/v3/string.proto\\x12\\x15envoy.type.matcher.v3\\x1a!envoy/type/matcher/v3/regex.proto\\x1a\\x1bxds/core/v3/extension.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\x8e\\x03\\n\" +\n\t\"\\rStringMatcher\\x12\\x16\\n\" +\n\t\"\\x05exact\\x18\\x01 \\x01(\\tH\\x00R\\x05exact\\x12!\\n\" +\n\t\"\\x06prefix\\x18\\x02 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01H\\x00R\\x06prefix\\x12!\\n\" +\n\t\"\\x06suffix\\x18\\x03 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01H\\x00R\\x06suffix\\x12N\\n\" +\n\t\"\\n\" +\n\t\"safe_regex\\x18\\x05 \\x01(\\v2#.envoy.type.matcher.v3.RegexMatcherB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01H\\x00R\\tsafeRegex\\x12%\\n\" +\n\t\"\\bcontains\\x18\\a \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01H\\x00R\\bcontains\\x12;\\n\" +\n\t\"\\x06custom\\x18\\b \\x01(\\v2!.xds.core.v3.TypedExtensionConfigH\\x00R\\x06custom\\x12\\x1f\\n\" +\n\t\"\\vignore_case\\x18\\x06 \\x01(\\bR\\n\" +\n\t\"ignoreCase:'\\x9aň\\x1e\\\"\\n\" +\n\t\" envoy.type.matcher.StringMatcherB\\x14\\n\" +\n\t\"\\rmatch_pattern\\x12\\x03\\xf8B\\x01J\\x04\\b\\x04\\x10\\x05R\\x05regex\\\"\\x8c\\x01\\n\" +\n\t\"\\x11ListStringMatcher\\x12J\\n\" +\n\t\"\\bpatterns\\x18\\x01 \\x03(\\v2$.envoy.type.matcher.v3.StringMatcherB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\bpatterns:+\\x9aň\\x1e&\\n\" +\n\t\"$envoy.type.matcher.ListStringMatcherB\\x84\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.type.matcher.v3B\\vStringProtoP\\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_matcher_v3_string_proto_rawDescOnce sync.Once\n\tfile_envoy_type_matcher_v3_string_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_matcher_v3_string_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_matcher_v3_string_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_matcher_v3_string_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_string_proto_rawDesc), len(file_envoy_type_matcher_v3_string_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_matcher_v3_string_proto_rawDescData\n}\n\nvar file_envoy_type_matcher_v3_string_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_envoy_type_matcher_v3_string_proto_goTypes = []any{\n\t(*StringMatcher)(nil),           // 0: envoy.type.matcher.v3.StringMatcher\n\t(*ListStringMatcher)(nil),       // 1: envoy.type.matcher.v3.ListStringMatcher\n\t(*RegexMatcher)(nil),            // 2: envoy.type.matcher.v3.RegexMatcher\n\t(*v3.TypedExtensionConfig)(nil), // 3: xds.core.v3.TypedExtensionConfig\n}\nvar file_envoy_type_matcher_v3_string_proto_depIdxs = []int32{\n\t2, // 0: envoy.type.matcher.v3.StringMatcher.safe_regex:type_name -> envoy.type.matcher.v3.RegexMatcher\n\t3, // 1: envoy.type.matcher.v3.StringMatcher.custom:type_name -> xds.core.v3.TypedExtensionConfig\n\t0, // 2: envoy.type.matcher.v3.ListStringMatcher.patterns:type_name -> envoy.type.matcher.v3.StringMatcher\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t3, // [3:3] is the sub-list for extension type_name\n\t3, // [3:3] is the sub-list for extension extendee\n\t0, // [0:3] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_matcher_v3_string_proto_init() }\nfunc file_envoy_type_matcher_v3_string_proto_init() {\n\tif File_envoy_type_matcher_v3_string_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_type_matcher_v3_regex_proto_init()\n\tfile_envoy_type_matcher_v3_string_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*StringMatcher_Exact)(nil),\n\t\t(*StringMatcher_Prefix)(nil),\n\t\t(*StringMatcher_Suffix)(nil),\n\t\t(*StringMatcher_SafeRegex)(nil),\n\t\t(*StringMatcher_Contains)(nil),\n\t\t(*StringMatcher_Custom)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_string_proto_rawDesc), len(file_envoy_type_matcher_v3_string_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_matcher_v3_string_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_matcher_v3_string_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_matcher_v3_string_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_matcher_v3_string_proto = out.File\n\tfile_envoy_type_matcher_v3_string_proto_goTypes = nil\n\tfile_envoy_type_matcher_v3_string_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/string.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/matcher/v3/string.proto\n\npackage matcherv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on StringMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *StringMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on StringMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in StringMatcherMultiError, or\n// nil if none found.\nfunc (m *StringMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *StringMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for IgnoreCase\n\n\toneofMatchPatternPresent := false\n\tswitch v := m.MatchPattern.(type) {\n\tcase *StringMatcher_Exact:\n\t\tif v == nil {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\t\t// no validation rules for Exact\n\tcase *StringMatcher_Prefix:\n\t\tif v == nil {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif utf8.RuneCountInString(m.GetPrefix()) < 1 {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"Prefix\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *StringMatcher_Suffix:\n\t\tif v == nil {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif utf8.RuneCountInString(m.GetSuffix()) < 1 {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"Suffix\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *StringMatcher_SafeRegex:\n\t\tif v == nil {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif m.GetSafeRegex() == nil {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"SafeRegex\",\n\t\t\t\treason: \"value is required\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetSafeRegex()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, StringMatcherValidationError{\n\t\t\t\t\t\tfield:  \"SafeRegex\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, StringMatcherValidationError{\n\t\t\t\t\t\tfield:  \"SafeRegex\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetSafeRegex()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn StringMatcherValidationError{\n\t\t\t\t\tfield:  \"SafeRegex\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *StringMatcher_Contains:\n\t\tif v == nil {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif utf8.RuneCountInString(m.GetContains()) < 1 {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"Contains\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *StringMatcher_Custom:\n\t\tif v == nil {\n\t\t\terr := StringMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetCustom()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, StringMatcherValidationError{\n\t\t\t\t\t\tfield:  \"Custom\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, StringMatcherValidationError{\n\t\t\t\t\t\tfield:  \"Custom\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetCustom()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn StringMatcherValidationError{\n\t\t\t\t\tfield:  \"Custom\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofMatchPatternPresent {\n\t\terr := StringMatcherValidationError{\n\t\t\tfield:  \"MatchPattern\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn StringMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// StringMatcherMultiError is an error wrapping multiple validation errors\n// returned by StringMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype StringMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m StringMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m StringMatcherMultiError) AllErrors() []error { return m }\n\n// StringMatcherValidationError is the validation error returned by\n// StringMatcher.Validate if the designated constraints aren't met.\ntype StringMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e StringMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e StringMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e StringMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e StringMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e StringMatcherValidationError) ErrorName() string { return \"StringMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e StringMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sStringMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = StringMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = StringMatcherValidationError{}\n\n// Validate checks the field values on ListStringMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *ListStringMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ListStringMatcher with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ListStringMatcherMultiError, or nil if none found.\nfunc (m *ListStringMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ListStringMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetPatterns()) < 1 {\n\t\terr := ListStringMatcherValidationError{\n\t\t\tfield:  \"Patterns\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetPatterns() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ListStringMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Patterns[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ListStringMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Patterns[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ListStringMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Patterns[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ListStringMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ListStringMatcherMultiError is an error wrapping multiple validation errors\n// returned by ListStringMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype ListStringMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ListStringMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ListStringMatcherMultiError) AllErrors() []error { return m }\n\n// ListStringMatcherValidationError is the validation error returned by\n// ListStringMatcher.Validate if the designated constraints aren't met.\ntype ListStringMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ListStringMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ListStringMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ListStringMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ListStringMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ListStringMatcherValidationError) ErrorName() string {\n\treturn \"ListStringMatcherValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ListStringMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sListStringMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ListStringMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ListStringMatcherValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/string_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/matcher/v3/string.proto\n\npackage matcherv3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *StringMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *StringMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *StringMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.MatchPattern.(*StringMatcher_Custom); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.MatchPattern.(*StringMatcher_Contains); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m.IgnoreCase {\n\t\ti--\n\t\tif m.IgnoreCase {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif msg, ok := m.MatchPattern.(*StringMatcher_SafeRegex); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.MatchPattern.(*StringMatcher_Suffix); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.MatchPattern.(*StringMatcher_Prefix); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.MatchPattern.(*StringMatcher_Exact); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *StringMatcher_Exact) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *StringMatcher_Exact) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Exact)\n\tcopy(dAtA[i:], m.Exact)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Exact)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *StringMatcher_Prefix) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *StringMatcher_Prefix) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Prefix)\n\tcopy(dAtA[i:], m.Prefix)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Prefix)))\n\ti--\n\tdAtA[i] = 0x12\n\treturn len(dAtA) - i, nil\n}\nfunc (m *StringMatcher_Suffix) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *StringMatcher_Suffix) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Suffix)\n\tcopy(dAtA[i:], m.Suffix)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Suffix)))\n\ti--\n\tdAtA[i] = 0x1a\n\treturn len(dAtA) - i, nil\n}\nfunc (m *StringMatcher_SafeRegex) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *StringMatcher_SafeRegex) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.SafeRegex != nil {\n\t\tsize, err := m.SafeRegex.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *StringMatcher_Contains) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *StringMatcher_Contains) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Contains)\n\tcopy(dAtA[i:], m.Contains)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Contains)))\n\ti--\n\tdAtA[i] = 0x3a\n\treturn len(dAtA) - i, nil\n}\nfunc (m *StringMatcher_Custom) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *StringMatcher_Custom) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Custom != nil {\n\t\tif vtmsg, ok := interface{}(m.Custom).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Custom)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ListStringMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ListStringMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ListStringMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Patterns) > 0 {\n\t\tfor iNdEx := len(m.Patterns) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Patterns[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *StringMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.MatchPattern.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tif m.IgnoreCase {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *StringMatcher_Exact) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Exact)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *StringMatcher_Prefix) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Prefix)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *StringMatcher_Suffix) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Suffix)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *StringMatcher_SafeRegex) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.SafeRegex != nil {\n\t\tl = m.SafeRegex.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *StringMatcher_Contains) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Contains)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *StringMatcher_Custom) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Custom != nil {\n\t\tif size, ok := interface{}(m.Custom).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Custom)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *ListStringMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Patterns) > 0 {\n\t\tfor _, e := range m.Patterns {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/struct.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/matcher/v3/struct.proto\n\npackage matcherv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// StructMatcher provides a general interface to check if a given value is matched in\n// google.protobuf.Struct. It uses “path“ to retrieve the value\n// from the struct and then check if it's matched to the specified value.\n//\n// For example, for the following Struct:\n//\n// .. code-block:: yaml\n//\n//\tfields:\n//\t  a:\n//\t    struct_value:\n//\t      fields:\n//\t        b:\n//\t          struct_value:\n//\t            fields:\n//\t              c:\n//\t                string_value: pro\n//\t        t:\n//\t          list_value:\n//\t            values:\n//\t              - string_value: m\n//\t              - string_value: n\n//\n// The following MetadataMatcher is matched as the path [a, b, c] will retrieve a string value \"pro\"\n// from the Metadata which is matched to the specified prefix match.\n//\n// .. code-block:: yaml\n//\n//\tpath:\n//\t- key: a\n//\t- key: b\n//\t- key: c\n//\tvalue:\n//\t  string_match:\n//\t    prefix: pr\n//\n// The following StructMatcher is matched as the code will match one of the string values in the\n// list at the path [a, t].\n//\n// .. code-block:: yaml\n//\n//\tpath:\n//\t- key: a\n//\t- key: t\n//\tvalue:\n//\t  list_match:\n//\t    one_of:\n//\t      string_match:\n//\t        exact: m\n//\n// An example use of StructMatcher is to match metadata in envoy.v*.core.Node.\ntype StructMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The path to retrieve the Value from the Struct.\n\tPath []*StructMatcher_PathSegment `protobuf:\"bytes,2,rep,name=path,proto3\" json:\"path,omitempty\"`\n\t// The StructMatcher is matched if the value retrieved by path is matched to this value.\n\tValue         *ValueMatcher `protobuf:\"bytes,3,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *StructMatcher) Reset() {\n\t*x = StructMatcher{}\n\tmi := &file_envoy_type_matcher_v3_struct_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *StructMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*StructMatcher) ProtoMessage() {}\n\nfunc (x *StructMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_struct_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use StructMatcher.ProtoReflect.Descriptor instead.\nfunc (*StructMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_struct_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *StructMatcher) GetPath() []*StructMatcher_PathSegment {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn nil\n}\n\nfunc (x *StructMatcher) GetValue() *ValueMatcher {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\n// Specifies the segment in a path to retrieve value from Struct.\ntype StructMatcher_PathSegment struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Segment:\n\t//\n\t//\t*StructMatcher_PathSegment_Key\n\tSegment       isStructMatcher_PathSegment_Segment `protobuf_oneof:\"segment\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *StructMatcher_PathSegment) Reset() {\n\t*x = StructMatcher_PathSegment{}\n\tmi := &file_envoy_type_matcher_v3_struct_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *StructMatcher_PathSegment) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*StructMatcher_PathSegment) ProtoMessage() {}\n\nfunc (x *StructMatcher_PathSegment) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_struct_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use StructMatcher_PathSegment.ProtoReflect.Descriptor instead.\nfunc (*StructMatcher_PathSegment) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_struct_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *StructMatcher_PathSegment) GetSegment() isStructMatcher_PathSegment_Segment {\n\tif x != nil {\n\t\treturn x.Segment\n\t}\n\treturn nil\n}\n\nfunc (x *StructMatcher_PathSegment) GetKey() string {\n\tif x != nil {\n\t\tif x, ok := x.Segment.(*StructMatcher_PathSegment_Key); ok {\n\t\t\treturn x.Key\n\t\t}\n\t}\n\treturn \"\"\n}\n\ntype isStructMatcher_PathSegment_Segment interface {\n\tisStructMatcher_PathSegment_Segment()\n}\n\ntype StructMatcher_PathSegment_Key struct {\n\t// If specified, use the key to retrieve the value in a Struct.\n\tKey string `protobuf:\"bytes,1,opt,name=key,proto3,oneof\"`\n}\n\nfunc (*StructMatcher_PathSegment_Key) isStructMatcher_PathSegment_Segment() {}\n\nvar File_envoy_type_matcher_v3_struct_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_matcher_v3_struct_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\\"envoy/type/matcher/v3/struct.proto\\x12\\x15envoy.type.matcher.v3\\x1a!envoy/type/matcher/v3/value.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xbe\\x02\\n\" +\n\t\"\\rStructMatcher\\x12N\\n\" +\n\t\"\\x04path\\x18\\x02 \\x03(\\v20.envoy.type.matcher.v3.StructMatcher.PathSegmentB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\x04path\\x12C\\n\" +\n\t\"\\x05value\\x18\\x03 \\x01(\\v2#.envoy.type.matcher.v3.ValueMatcherB\\b\\xfaB\\x05\\x8a\\x01\\x02\\x10\\x01R\\x05value\\x1ao\\n\" +\n\t\"\\vPathSegment\\x12\\x1b\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01H\\x00R\\x03key:3\\x9aň\\x1e.\\n\" +\n\t\",envoy.type.matcher.StructMatcher.PathSegmentB\\x0e\\n\" +\n\t\"\\asegment\\x12\\x03\\xf8B\\x01:'\\x9aň\\x1e\\\"\\n\" +\n\t\" envoy.type.matcher.StructMatcherB\\x84\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.type.matcher.v3B\\vStructProtoP\\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_matcher_v3_struct_proto_rawDescOnce sync.Once\n\tfile_envoy_type_matcher_v3_struct_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_matcher_v3_struct_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_matcher_v3_struct_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_matcher_v3_struct_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_struct_proto_rawDesc), len(file_envoy_type_matcher_v3_struct_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_matcher_v3_struct_proto_rawDescData\n}\n\nvar file_envoy_type_matcher_v3_struct_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_envoy_type_matcher_v3_struct_proto_goTypes = []any{\n\t(*StructMatcher)(nil),             // 0: envoy.type.matcher.v3.StructMatcher\n\t(*StructMatcher_PathSegment)(nil), // 1: envoy.type.matcher.v3.StructMatcher.PathSegment\n\t(*ValueMatcher)(nil),              // 2: envoy.type.matcher.v3.ValueMatcher\n}\nvar file_envoy_type_matcher_v3_struct_proto_depIdxs = []int32{\n\t1, // 0: envoy.type.matcher.v3.StructMatcher.path:type_name -> envoy.type.matcher.v3.StructMatcher.PathSegment\n\t2, // 1: envoy.type.matcher.v3.StructMatcher.value:type_name -> envoy.type.matcher.v3.ValueMatcher\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_matcher_v3_struct_proto_init() }\nfunc file_envoy_type_matcher_v3_struct_proto_init() {\n\tif File_envoy_type_matcher_v3_struct_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_type_matcher_v3_value_proto_init()\n\tfile_envoy_type_matcher_v3_struct_proto_msgTypes[1].OneofWrappers = []any{\n\t\t(*StructMatcher_PathSegment_Key)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_struct_proto_rawDesc), len(file_envoy_type_matcher_v3_struct_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_matcher_v3_struct_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_matcher_v3_struct_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_matcher_v3_struct_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_matcher_v3_struct_proto = out.File\n\tfile_envoy_type_matcher_v3_struct_proto_goTypes = nil\n\tfile_envoy_type_matcher_v3_struct_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/struct.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/matcher/v3/struct.proto\n\npackage matcherv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on StructMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *StructMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on StructMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in StructMatcherMultiError, or\n// nil if none found.\nfunc (m *StructMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *StructMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetPath()) < 1 {\n\t\terr := StructMatcherValidationError{\n\t\t\tfield:  \"Path\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetPath() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, StructMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Path[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, StructMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Path[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn StructMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Path[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif m.GetValue() == nil {\n\t\terr := StructMatcherValidationError{\n\t\t\tfield:  \"Value\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetValue()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, StructMatcherValidationError{\n\t\t\t\t\tfield:  \"Value\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, StructMatcherValidationError{\n\t\t\t\t\tfield:  \"Value\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetValue()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn StructMatcherValidationError{\n\t\t\t\tfield:  \"Value\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn StructMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// StructMatcherMultiError is an error wrapping multiple validation errors\n// returned by StructMatcher.ValidateAll() if the designated constraints\n// aren't met.\ntype StructMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m StructMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m StructMatcherMultiError) AllErrors() []error { return m }\n\n// StructMatcherValidationError is the validation error returned by\n// StructMatcher.Validate if the designated constraints aren't met.\ntype StructMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e StructMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e StructMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e StructMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e StructMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e StructMatcherValidationError) ErrorName() string { return \"StructMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e StructMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sStructMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = StructMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = StructMatcherValidationError{}\n\n// Validate checks the field values on StructMatcher_PathSegment with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *StructMatcher_PathSegment) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on StructMatcher_PathSegment with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// StructMatcher_PathSegmentMultiError, or nil if none found.\nfunc (m *StructMatcher_PathSegment) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *StructMatcher_PathSegment) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofSegmentPresent := false\n\tswitch v := m.Segment.(type) {\n\tcase *StructMatcher_PathSegment_Key:\n\t\tif v == nil {\n\t\t\terr := StructMatcher_PathSegmentValidationError{\n\t\t\t\tfield:  \"Segment\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofSegmentPresent = true\n\n\t\tif utf8.RuneCountInString(m.GetKey()) < 1 {\n\t\t\terr := StructMatcher_PathSegmentValidationError{\n\t\t\t\tfield:  \"Key\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofSegmentPresent {\n\t\terr := StructMatcher_PathSegmentValidationError{\n\t\t\tfield:  \"Segment\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn StructMatcher_PathSegmentMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// StructMatcher_PathSegmentMultiError is an error wrapping multiple validation\n// errors returned by StructMatcher_PathSegment.ValidateAll() if the\n// designated constraints aren't met.\ntype StructMatcher_PathSegmentMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m StructMatcher_PathSegmentMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m StructMatcher_PathSegmentMultiError) AllErrors() []error { return m }\n\n// StructMatcher_PathSegmentValidationError is the validation error returned by\n// StructMatcher_PathSegment.Validate if the designated constraints aren't met.\ntype StructMatcher_PathSegmentValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e StructMatcher_PathSegmentValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e StructMatcher_PathSegmentValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e StructMatcher_PathSegmentValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e StructMatcher_PathSegmentValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e StructMatcher_PathSegmentValidationError) ErrorName() string {\n\treturn \"StructMatcher_PathSegmentValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e StructMatcher_PathSegmentValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sStructMatcher_PathSegment.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = StructMatcher_PathSegmentValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = StructMatcher_PathSegmentValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/struct_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/matcher/v3/struct.proto\n\npackage matcherv3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *StructMatcher_PathSegment) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *StructMatcher_PathSegment) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *StructMatcher_PathSegment) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.Segment.(*StructMatcher_PathSegment_Key); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *StructMatcher_PathSegment_Key) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *StructMatcher_PathSegment_Key) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Key)\n\tcopy(dAtA[i:], m.Key)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Key)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *StructMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *StructMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *StructMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Value != nil {\n\t\tsize, err := m.Value.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Path) > 0 {\n\t\tfor iNdEx := len(m.Path) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Path[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *StructMatcher_PathSegment) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Segment.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *StructMatcher_PathSegment_Key) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *StructMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Path) > 0 {\n\t\tfor _, e := range m.Path {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tif m.Value != nil {\n\t\tl = m.Value.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/value.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/matcher/v3/value.proto\n\npackage matcherv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Specifies the way to match a Protobuf::Value. Primitive values and ListValue are supported.\n// StructValue is not supported and is always not matched.\n// [#next-free-field: 8]\ntype ValueMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies how to match a value.\n\t//\n\t// Types that are valid to be assigned to MatchPattern:\n\t//\n\t//\t*ValueMatcher_NullMatch_\n\t//\t*ValueMatcher_DoubleMatch\n\t//\t*ValueMatcher_StringMatch\n\t//\t*ValueMatcher_BoolMatch\n\t//\t*ValueMatcher_PresentMatch\n\t//\t*ValueMatcher_ListMatch\n\t//\t*ValueMatcher_OrMatch\n\tMatchPattern  isValueMatcher_MatchPattern `protobuf_oneof:\"match_pattern\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ValueMatcher) Reset() {\n\t*x = ValueMatcher{}\n\tmi := &file_envoy_type_matcher_v3_value_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ValueMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ValueMatcher) ProtoMessage() {}\n\nfunc (x *ValueMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_value_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ValueMatcher.ProtoReflect.Descriptor instead.\nfunc (*ValueMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_value_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ValueMatcher) GetMatchPattern() isValueMatcher_MatchPattern {\n\tif x != nil {\n\t\treturn x.MatchPattern\n\t}\n\treturn nil\n}\n\nfunc (x *ValueMatcher) GetNullMatch() *ValueMatcher_NullMatch {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*ValueMatcher_NullMatch_); ok {\n\t\t\treturn x.NullMatch\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *ValueMatcher) GetDoubleMatch() *DoubleMatcher {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*ValueMatcher_DoubleMatch); ok {\n\t\t\treturn x.DoubleMatch\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *ValueMatcher) GetStringMatch() *StringMatcher {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*ValueMatcher_StringMatch); ok {\n\t\t\treturn x.StringMatch\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *ValueMatcher) GetBoolMatch() bool {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*ValueMatcher_BoolMatch); ok {\n\t\t\treturn x.BoolMatch\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (x *ValueMatcher) GetPresentMatch() bool {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*ValueMatcher_PresentMatch); ok {\n\t\t\treturn x.PresentMatch\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (x *ValueMatcher) GetListMatch() *ListMatcher {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*ValueMatcher_ListMatch); ok {\n\t\t\treturn x.ListMatch\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *ValueMatcher) GetOrMatch() *OrMatcher {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*ValueMatcher_OrMatch); ok {\n\t\t\treturn x.OrMatch\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isValueMatcher_MatchPattern interface {\n\tisValueMatcher_MatchPattern()\n}\n\ntype ValueMatcher_NullMatch_ struct {\n\t// If specified, a match occurs if and only if the target value is a NullValue.\n\tNullMatch *ValueMatcher_NullMatch `protobuf:\"bytes,1,opt,name=null_match,json=nullMatch,proto3,oneof\"`\n}\n\ntype ValueMatcher_DoubleMatch struct {\n\t// If specified, a match occurs if and only if the target value is a double value and is\n\t// matched to this field.\n\tDoubleMatch *DoubleMatcher `protobuf:\"bytes,2,opt,name=double_match,json=doubleMatch,proto3,oneof\"`\n}\n\ntype ValueMatcher_StringMatch struct {\n\t// If specified, a match occurs if and only if the target value is a string value and is\n\t// matched to this field.\n\tStringMatch *StringMatcher `protobuf:\"bytes,3,opt,name=string_match,json=stringMatch,proto3,oneof\"`\n}\n\ntype ValueMatcher_BoolMatch struct {\n\t// If specified, a match occurs if and only if the target value is a bool value and is equal\n\t// to this field.\n\tBoolMatch bool `protobuf:\"varint,4,opt,name=bool_match,json=boolMatch,proto3,oneof\"`\n}\n\ntype ValueMatcher_PresentMatch struct {\n\t// If specified, value match will be performed based on whether the path is referring to a\n\t// valid primitive value in the metadata. If the path is referring to a non-primitive value,\n\t// the result is always not matched.\n\tPresentMatch bool `protobuf:\"varint,5,opt,name=present_match,json=presentMatch,proto3,oneof\"`\n}\n\ntype ValueMatcher_ListMatch struct {\n\t// If specified, a match occurs if and only if the target value is a list value and\n\t// is matched to this field.\n\tListMatch *ListMatcher `protobuf:\"bytes,6,opt,name=list_match,json=listMatch,proto3,oneof\"`\n}\n\ntype ValueMatcher_OrMatch struct {\n\t// If specified, a match occurs if and only if any of the alternatives in the match accept the value.\n\tOrMatch *OrMatcher `protobuf:\"bytes,7,opt,name=or_match,json=orMatch,proto3,oneof\"`\n}\n\nfunc (*ValueMatcher_NullMatch_) isValueMatcher_MatchPattern() {}\n\nfunc (*ValueMatcher_DoubleMatch) isValueMatcher_MatchPattern() {}\n\nfunc (*ValueMatcher_StringMatch) isValueMatcher_MatchPattern() {}\n\nfunc (*ValueMatcher_BoolMatch) isValueMatcher_MatchPattern() {}\n\nfunc (*ValueMatcher_PresentMatch) isValueMatcher_MatchPattern() {}\n\nfunc (*ValueMatcher_ListMatch) isValueMatcher_MatchPattern() {}\n\nfunc (*ValueMatcher_OrMatch) isValueMatcher_MatchPattern() {}\n\n// Specifies the way to match a list value.\ntype ListMatcher struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to MatchPattern:\n\t//\n\t//\t*ListMatcher_OneOf\n\tMatchPattern  isListMatcher_MatchPattern `protobuf_oneof:\"match_pattern\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ListMatcher) Reset() {\n\t*x = ListMatcher{}\n\tmi := &file_envoy_type_matcher_v3_value_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ListMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ListMatcher) ProtoMessage() {}\n\nfunc (x *ListMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_value_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ListMatcher.ProtoReflect.Descriptor instead.\nfunc (*ListMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_value_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ListMatcher) GetMatchPattern() isListMatcher_MatchPattern {\n\tif x != nil {\n\t\treturn x.MatchPattern\n\t}\n\treturn nil\n}\n\nfunc (x *ListMatcher) GetOneOf() *ValueMatcher {\n\tif x != nil {\n\t\tif x, ok := x.MatchPattern.(*ListMatcher_OneOf); ok {\n\t\t\treturn x.OneOf\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isListMatcher_MatchPattern interface {\n\tisListMatcher_MatchPattern()\n}\n\ntype ListMatcher_OneOf struct {\n\t// If specified, at least one of the values in the list must match the value specified.\n\tOneOf *ValueMatcher `protobuf:\"bytes,1,opt,name=one_of,json=oneOf,proto3,oneof\"`\n}\n\nfunc (*ListMatcher_OneOf) isListMatcher_MatchPattern() {}\n\n// Specifies a list of alternatives for the match.\ntype OrMatcher struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tValueMatchers []*ValueMatcher        `protobuf:\"bytes,1,rep,name=value_matchers,json=valueMatchers,proto3\" json:\"value_matchers,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *OrMatcher) Reset() {\n\t*x = OrMatcher{}\n\tmi := &file_envoy_type_matcher_v3_value_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *OrMatcher) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OrMatcher) ProtoMessage() {}\n\nfunc (x *OrMatcher) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_value_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OrMatcher.ProtoReflect.Descriptor instead.\nfunc (*OrMatcher) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_value_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *OrMatcher) GetValueMatchers() []*ValueMatcher {\n\tif x != nil {\n\t\treturn x.ValueMatchers\n\t}\n\treturn nil\n}\n\n// NullMatch is an empty message to specify a null value.\ntype ValueMatcher_NullMatch struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ValueMatcher_NullMatch) Reset() {\n\t*x = ValueMatcher_NullMatch{}\n\tmi := &file_envoy_type_matcher_v3_value_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ValueMatcher_NullMatch) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ValueMatcher_NullMatch) ProtoMessage() {}\n\nfunc (x *ValueMatcher_NullMatch) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_matcher_v3_value_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ValueMatcher_NullMatch.ProtoReflect.Descriptor instead.\nfunc (*ValueMatcher_NullMatch) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_matcher_v3_value_proto_rawDescGZIP(), []int{0, 0}\n}\n\nvar File_envoy_type_matcher_v3_value_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_matcher_v3_value_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"!envoy/type/matcher/v3/value.proto\\x12\\x15envoy.type.matcher.v3\\x1a\\\"envoy/type/matcher/v3/number.proto\\x1a\\\"envoy/type/matcher/v3/string.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xbd\\x04\\n\" +\n\t\"\\fValueMatcher\\x12N\\n\" +\n\t\"\\n\" +\n\t\"null_match\\x18\\x01 \\x01(\\v2-.envoy.type.matcher.v3.ValueMatcher.NullMatchH\\x00R\\tnullMatch\\x12I\\n\" +\n\t\"\\fdouble_match\\x18\\x02 \\x01(\\v2$.envoy.type.matcher.v3.DoubleMatcherH\\x00R\\vdoubleMatch\\x12I\\n\" +\n\t\"\\fstring_match\\x18\\x03 \\x01(\\v2$.envoy.type.matcher.v3.StringMatcherH\\x00R\\vstringMatch\\x12\\x1f\\n\" +\n\t\"\\n\" +\n\t\"bool_match\\x18\\x04 \\x01(\\bH\\x00R\\tboolMatch\\x12%\\n\" +\n\t\"\\rpresent_match\\x18\\x05 \\x01(\\bH\\x00R\\fpresentMatch\\x12C\\n\" +\n\t\"\\n\" +\n\t\"list_match\\x18\\x06 \\x01(\\v2\\\".envoy.type.matcher.v3.ListMatcherH\\x00R\\tlistMatch\\x12=\\n\" +\n\t\"\\bor_match\\x18\\a \\x01(\\v2 .envoy.type.matcher.v3.OrMatcherH\\x00R\\aorMatch\\x1a=\\n\" +\n\t\"\\tNullMatch:0\\x9aň\\x1e+\\n\" +\n\t\")envoy.type.matcher.ValueMatcher.NullMatch:&\\x9aň\\x1e!\\n\" +\n\t\"\\x1fenvoy.type.matcher.ValueMatcherB\\x14\\n\" +\n\t\"\\rmatch_pattern\\x12\\x03\\xf8B\\x01\\\"\\x88\\x01\\n\" +\n\t\"\\vListMatcher\\x12<\\n\" +\n\t\"\\x06one_of\\x18\\x01 \\x01(\\v2#.envoy.type.matcher.v3.ValueMatcherH\\x00R\\x05oneOf:%\\x9aň\\x1e \\n\" +\n\t\"\\x1eenvoy.type.matcher.ListMatcherB\\x14\\n\" +\n\t\"\\rmatch_pattern\\x12\\x03\\xf8B\\x01\\\"a\\n\" +\n\t\"\\tOrMatcher\\x12T\\n\" +\n\t\"\\x0evalue_matchers\\x18\\x01 \\x03(\\v2#.envoy.type.matcher.v3.ValueMatcherB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x02R\\rvalueMatchersB\\x83\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.type.matcher.v3B\\n\" +\n\t\"ValueProtoP\\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_matcher_v3_value_proto_rawDescOnce sync.Once\n\tfile_envoy_type_matcher_v3_value_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_matcher_v3_value_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_matcher_v3_value_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_matcher_v3_value_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_value_proto_rawDesc), len(file_envoy_type_matcher_v3_value_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_matcher_v3_value_proto_rawDescData\n}\n\nvar file_envoy_type_matcher_v3_value_proto_msgTypes = make([]protoimpl.MessageInfo, 4)\nvar file_envoy_type_matcher_v3_value_proto_goTypes = []any{\n\t(*ValueMatcher)(nil),           // 0: envoy.type.matcher.v3.ValueMatcher\n\t(*ListMatcher)(nil),            // 1: envoy.type.matcher.v3.ListMatcher\n\t(*OrMatcher)(nil),              // 2: envoy.type.matcher.v3.OrMatcher\n\t(*ValueMatcher_NullMatch)(nil), // 3: envoy.type.matcher.v3.ValueMatcher.NullMatch\n\t(*DoubleMatcher)(nil),          // 4: envoy.type.matcher.v3.DoubleMatcher\n\t(*StringMatcher)(nil),          // 5: envoy.type.matcher.v3.StringMatcher\n}\nvar file_envoy_type_matcher_v3_value_proto_depIdxs = []int32{\n\t3, // 0: envoy.type.matcher.v3.ValueMatcher.null_match:type_name -> envoy.type.matcher.v3.ValueMatcher.NullMatch\n\t4, // 1: envoy.type.matcher.v3.ValueMatcher.double_match:type_name -> envoy.type.matcher.v3.DoubleMatcher\n\t5, // 2: envoy.type.matcher.v3.ValueMatcher.string_match:type_name -> envoy.type.matcher.v3.StringMatcher\n\t1, // 3: envoy.type.matcher.v3.ValueMatcher.list_match:type_name -> envoy.type.matcher.v3.ListMatcher\n\t2, // 4: envoy.type.matcher.v3.ValueMatcher.or_match:type_name -> envoy.type.matcher.v3.OrMatcher\n\t0, // 5: envoy.type.matcher.v3.ListMatcher.one_of:type_name -> envoy.type.matcher.v3.ValueMatcher\n\t0, // 6: envoy.type.matcher.v3.OrMatcher.value_matchers:type_name -> envoy.type.matcher.v3.ValueMatcher\n\t7, // [7:7] is the sub-list for method output_type\n\t7, // [7:7] is the sub-list for method input_type\n\t7, // [7:7] is the sub-list for extension type_name\n\t7, // [7:7] is the sub-list for extension extendee\n\t0, // [0:7] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_matcher_v3_value_proto_init() }\nfunc file_envoy_type_matcher_v3_value_proto_init() {\n\tif File_envoy_type_matcher_v3_value_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_type_matcher_v3_number_proto_init()\n\tfile_envoy_type_matcher_v3_string_proto_init()\n\tfile_envoy_type_matcher_v3_value_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*ValueMatcher_NullMatch_)(nil),\n\t\t(*ValueMatcher_DoubleMatch)(nil),\n\t\t(*ValueMatcher_StringMatch)(nil),\n\t\t(*ValueMatcher_BoolMatch)(nil),\n\t\t(*ValueMatcher_PresentMatch)(nil),\n\t\t(*ValueMatcher_ListMatch)(nil),\n\t\t(*ValueMatcher_OrMatch)(nil),\n\t}\n\tfile_envoy_type_matcher_v3_value_proto_msgTypes[1].OneofWrappers = []any{\n\t\t(*ListMatcher_OneOf)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_matcher_v3_value_proto_rawDesc), len(file_envoy_type_matcher_v3_value_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   4,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_matcher_v3_value_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_matcher_v3_value_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_matcher_v3_value_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_matcher_v3_value_proto = out.File\n\tfile_envoy_type_matcher_v3_value_proto_goTypes = nil\n\tfile_envoy_type_matcher_v3_value_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/value.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/matcher/v3/value.proto\n\npackage matcherv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on ValueMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *ValueMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ValueMatcher with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in ValueMatcherMultiError, or\n// nil if none found.\nfunc (m *ValueMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ValueMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofMatchPatternPresent := false\n\tswitch v := m.MatchPattern.(type) {\n\tcase *ValueMatcher_NullMatch_:\n\t\tif v == nil {\n\t\t\terr := ValueMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetNullMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ValueMatcherValidationError{\n\t\t\t\t\t\tfield:  \"NullMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ValueMatcherValidationError{\n\t\t\t\t\t\tfield:  \"NullMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetNullMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ValueMatcherValidationError{\n\t\t\t\t\tfield:  \"NullMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *ValueMatcher_DoubleMatch:\n\t\tif v == nil {\n\t\t\terr := ValueMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetDoubleMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ValueMatcherValidationError{\n\t\t\t\t\t\tfield:  \"DoubleMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ValueMatcherValidationError{\n\t\t\t\t\t\tfield:  \"DoubleMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetDoubleMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ValueMatcherValidationError{\n\t\t\t\t\tfield:  \"DoubleMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *ValueMatcher_StringMatch:\n\t\tif v == nil {\n\t\t\terr := ValueMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetStringMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ValueMatcherValidationError{\n\t\t\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ValueMatcherValidationError{\n\t\t\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetStringMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ValueMatcherValidationError{\n\t\t\t\t\tfield:  \"StringMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *ValueMatcher_BoolMatch:\n\t\tif v == nil {\n\t\t\terr := ValueMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\t\t// no validation rules for BoolMatch\n\tcase *ValueMatcher_PresentMatch:\n\t\tif v == nil {\n\t\t\terr := ValueMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\t\t// no validation rules for PresentMatch\n\tcase *ValueMatcher_ListMatch:\n\t\tif v == nil {\n\t\t\terr := ValueMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetListMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ValueMatcherValidationError{\n\t\t\t\t\t\tfield:  \"ListMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ValueMatcherValidationError{\n\t\t\t\t\t\tfield:  \"ListMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetListMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ValueMatcherValidationError{\n\t\t\t\t\tfield:  \"ListMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *ValueMatcher_OrMatch:\n\t\tif v == nil {\n\t\t\terr := ValueMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetOrMatch()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ValueMatcherValidationError{\n\t\t\t\t\t\tfield:  \"OrMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ValueMatcherValidationError{\n\t\t\t\t\t\tfield:  \"OrMatch\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetOrMatch()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ValueMatcherValidationError{\n\t\t\t\t\tfield:  \"OrMatch\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofMatchPatternPresent {\n\t\terr := ValueMatcherValidationError{\n\t\t\tfield:  \"MatchPattern\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ValueMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ValueMatcherMultiError is an error wrapping multiple validation errors\n// returned by ValueMatcher.ValidateAll() if the designated constraints aren't met.\ntype ValueMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ValueMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ValueMatcherMultiError) AllErrors() []error { return m }\n\n// ValueMatcherValidationError is the validation error returned by\n// ValueMatcher.Validate if the designated constraints aren't met.\ntype ValueMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ValueMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ValueMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ValueMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ValueMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ValueMatcherValidationError) ErrorName() string { return \"ValueMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e ValueMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sValueMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ValueMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ValueMatcherValidationError{}\n\n// Validate checks the field values on ListMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *ListMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ListMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in ListMatcherMultiError, or\n// nil if none found.\nfunc (m *ListMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ListMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofMatchPatternPresent := false\n\tswitch v := m.MatchPattern.(type) {\n\tcase *ListMatcher_OneOf:\n\t\tif v == nil {\n\t\t\terr := ListMatcherValidationError{\n\t\t\t\tfield:  \"MatchPattern\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofMatchPatternPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetOneOf()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, ListMatcherValidationError{\n\t\t\t\t\t\tfield:  \"OneOf\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, ListMatcherValidationError{\n\t\t\t\t\t\tfield:  \"OneOf\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetOneOf()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn ListMatcherValidationError{\n\t\t\t\t\tfield:  \"OneOf\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofMatchPatternPresent {\n\t\terr := ListMatcherValidationError{\n\t\t\tfield:  \"MatchPattern\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn ListMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ListMatcherMultiError is an error wrapping multiple validation errors\n// returned by ListMatcher.ValidateAll() if the designated constraints aren't met.\ntype ListMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ListMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ListMatcherMultiError) AllErrors() []error { return m }\n\n// ListMatcherValidationError is the validation error returned by\n// ListMatcher.Validate if the designated constraints aren't met.\ntype ListMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ListMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ListMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ListMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ListMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ListMatcherValidationError) ErrorName() string { return \"ListMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e ListMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sListMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ListMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ListMatcherValidationError{}\n\n// Validate checks the field values on OrMatcher with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *OrMatcher) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on OrMatcher with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in OrMatcherMultiError, or nil\n// if none found.\nfunc (m *OrMatcher) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *OrMatcher) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(m.GetValueMatchers()) < 2 {\n\t\terr := OrMatcherValidationError{\n\t\t\tfield:  \"ValueMatchers\",\n\t\t\treason: \"value must contain at least 2 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetValueMatchers() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, OrMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ValueMatchers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, OrMatcherValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"ValueMatchers[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn OrMatcherValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"ValueMatchers[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn OrMatcherMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// OrMatcherMultiError is an error wrapping multiple validation errors returned\n// by OrMatcher.ValidateAll() if the designated constraints aren't met.\ntype OrMatcherMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m OrMatcherMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m OrMatcherMultiError) AllErrors() []error { return m }\n\n// OrMatcherValidationError is the validation error returned by\n// OrMatcher.Validate if the designated constraints aren't met.\ntype OrMatcherValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e OrMatcherValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e OrMatcherValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e OrMatcherValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e OrMatcherValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e OrMatcherValidationError) ErrorName() string { return \"OrMatcherValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e OrMatcherValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sOrMatcher.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = OrMatcherValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = OrMatcherValidationError{}\n\n// Validate checks the field values on ValueMatcher_NullMatch with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *ValueMatcher_NullMatch) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on ValueMatcher_NullMatch with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// ValueMatcher_NullMatchMultiError, or nil if none found.\nfunc (m *ValueMatcher_NullMatch) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *ValueMatcher_NullMatch) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn ValueMatcher_NullMatchMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// ValueMatcher_NullMatchMultiError is an error wrapping multiple validation\n// errors returned by ValueMatcher_NullMatch.ValidateAll() if the designated\n// constraints aren't met.\ntype ValueMatcher_NullMatchMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m ValueMatcher_NullMatchMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m ValueMatcher_NullMatchMultiError) AllErrors() []error { return m }\n\n// ValueMatcher_NullMatchValidationError is the validation error returned by\n// ValueMatcher_NullMatch.Validate if the designated constraints aren't met.\ntype ValueMatcher_NullMatchValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e ValueMatcher_NullMatchValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e ValueMatcher_NullMatchValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e ValueMatcher_NullMatchValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e ValueMatcher_NullMatchValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e ValueMatcher_NullMatchValidationError) ErrorName() string {\n\treturn \"ValueMatcher_NullMatchValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e ValueMatcher_NullMatchValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sValueMatcher_NullMatch.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = ValueMatcher_NullMatchValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = ValueMatcher_NullMatchValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3/value_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/matcher/v3/value.proto\n\npackage matcherv3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *ValueMatcher_NullMatch) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ValueMatcher_NullMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ValueMatcher_NullMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ValueMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ValueMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ValueMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.MatchPattern.(*ValueMatcher_OrMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.MatchPattern.(*ValueMatcher_ListMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.MatchPattern.(*ValueMatcher_PresentMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.MatchPattern.(*ValueMatcher_BoolMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.MatchPattern.(*ValueMatcher_StringMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.MatchPattern.(*ValueMatcher_DoubleMatch); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.MatchPattern.(*ValueMatcher_NullMatch_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ValueMatcher_NullMatch_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ValueMatcher_NullMatch_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.NullMatch != nil {\n\t\tsize, err := m.NullMatch.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ValueMatcher_DoubleMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ValueMatcher_DoubleMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.DoubleMatch != nil {\n\t\tsize, err := m.DoubleMatch.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ValueMatcher_StringMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ValueMatcher_StringMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.StringMatch != nil {\n\t\tsize, err := m.StringMatch.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ValueMatcher_BoolMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ValueMatcher_BoolMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti--\n\tif m.BoolMatch {\n\t\tdAtA[i] = 1\n\t} else {\n\t\tdAtA[i] = 0\n\t}\n\ti--\n\tdAtA[i] = 0x20\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ValueMatcher_PresentMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ValueMatcher_PresentMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti--\n\tif m.PresentMatch {\n\t\tdAtA[i] = 1\n\t} else {\n\t\tdAtA[i] = 0\n\t}\n\ti--\n\tdAtA[i] = 0x28\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ValueMatcher_ListMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ValueMatcher_ListMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ListMatch != nil {\n\t\tsize, err := m.ListMatch.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ValueMatcher_OrMatch) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ValueMatcher_OrMatch) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.OrMatch != nil {\n\t\tsize, err := m.OrMatch.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ListMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ListMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ListMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.MatchPattern.(*ListMatcher_OneOf); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ListMatcher_OneOf) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ListMatcher_OneOf) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.OneOf != nil {\n\t\tsize, err := m.OneOf.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *OrMatcher) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *OrMatcher) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *OrMatcher) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.ValueMatchers) > 0 {\n\t\tfor iNdEx := len(m.ValueMatchers) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.ValueMatchers[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ValueMatcher_NullMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ValueMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.MatchPattern.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ValueMatcher_NullMatch_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.NullMatch != nil {\n\t\tl = m.NullMatch.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *ValueMatcher_DoubleMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.DoubleMatch != nil {\n\t\tl = m.DoubleMatch.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *ValueMatcher_StringMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.StringMatch != nil {\n\t\tl = m.StringMatch.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *ValueMatcher_BoolMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 2\n\treturn n\n}\nfunc (m *ValueMatcher_PresentMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 2\n\treturn n\n}\nfunc (m *ValueMatcher_ListMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ListMatch != nil {\n\t\tl = m.ListMatch.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *ValueMatcher_OrMatch) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.OrMatch != nil {\n\t\tl = m.OrMatch.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *ListMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.MatchPattern.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ListMatcher_OneOf) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.OneOf != nil {\n\t\tl = m.OneOf.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *OrMatcher) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.ValueMatchers) > 0 {\n\t\tfor _, e := range m.ValueMatchers {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/metadata/v3/metadata.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/metadata/v3/metadata.proto\n\npackage metadatav3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// MetadataKey provides a way to retrieve values from\n// :ref:`Metadata <envoy_v3_api_msg_config.core.v3.Metadata>` using a “key“ and a “path“.\n//\n// For example, consider the following Metadata:\n//\n// .. code-block:: yaml\n//\n//\tfilter_metadata:\n//\t  envoy.xxx:\n//\t    prop:\n//\t      foo: bar\n//\t      xyz:\n//\t        hello: envoy\n//\n// The following MetadataKey would retrieve the string value \"bar\" from the Metadata:\n//\n// .. code-block:: yaml\n//\n//\tkey: envoy.xxx\n//\tpath:\n//\t- key: prop\n//\t- key: foo\ntype MetadataKey struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The key name of the Metadata from which to retrieve the Struct.\n\t// This typically represents a builtin subsystem or custom extension.\n\tKey string `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// The path used to retrieve a specific Value from the Struct.\n\t// This can be either a prefix or a full path, depending on the use case.\n\t// For example, “[prop, xyz]“ would retrieve a struct or “[prop, foo]“ would retrieve a string\n\t// in the example above.\n\t//\n\t// .. note::\n\t//\n\t//\tSince only key-type segments are supported, a path cannot specify a list\n\t//\tunless the list is the last segment.\n\tPath          []*MetadataKey_PathSegment `protobuf:\"bytes,2,rep,name=path,proto3\" json:\"path,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *MetadataKey) Reset() {\n\t*x = MetadataKey{}\n\tmi := &file_envoy_type_metadata_v3_metadata_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MetadataKey) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MetadataKey) ProtoMessage() {}\n\nfunc (x *MetadataKey) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_metadata_v3_metadata_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MetadataKey.ProtoReflect.Descriptor instead.\nfunc (*MetadataKey) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_metadata_v3_metadata_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *MetadataKey) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\nfunc (x *MetadataKey) GetPath() []*MetadataKey_PathSegment {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn nil\n}\n\n// Describes different types of metadata sources.\ntype MetadataKind struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Kind:\n\t//\n\t//\t*MetadataKind_Request_\n\t//\t*MetadataKind_Route_\n\t//\t*MetadataKind_Cluster_\n\t//\t*MetadataKind_Host_\n\tKind          isMetadataKind_Kind `protobuf_oneof:\"kind\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *MetadataKind) Reset() {\n\t*x = MetadataKind{}\n\tmi := &file_envoy_type_metadata_v3_metadata_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MetadataKind) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MetadataKind) ProtoMessage() {}\n\nfunc (x *MetadataKind) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_metadata_v3_metadata_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MetadataKind.ProtoReflect.Descriptor instead.\nfunc (*MetadataKind) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_metadata_v3_metadata_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *MetadataKind) GetKind() isMetadataKind_Kind {\n\tif x != nil {\n\t\treturn x.Kind\n\t}\n\treturn nil\n}\n\nfunc (x *MetadataKind) GetRequest() *MetadataKind_Request {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*MetadataKind_Request_); ok {\n\t\t\treturn x.Request\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *MetadataKind) GetRoute() *MetadataKind_Route {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*MetadataKind_Route_); ok {\n\t\t\treturn x.Route\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *MetadataKind) GetCluster() *MetadataKind_Cluster {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*MetadataKind_Cluster_); ok {\n\t\t\treturn x.Cluster\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *MetadataKind) GetHost() *MetadataKind_Host {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*MetadataKind_Host_); ok {\n\t\t\treturn x.Host\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isMetadataKind_Kind interface {\n\tisMetadataKind_Kind()\n}\n\ntype MetadataKind_Request_ struct {\n\t// Request kind of metadata.\n\tRequest *MetadataKind_Request `protobuf:\"bytes,1,opt,name=request,proto3,oneof\"`\n}\n\ntype MetadataKind_Route_ struct {\n\t// Route kind of metadata.\n\tRoute *MetadataKind_Route `protobuf:\"bytes,2,opt,name=route,proto3,oneof\"`\n}\n\ntype MetadataKind_Cluster_ struct {\n\t// Cluster kind of metadata.\n\tCluster *MetadataKind_Cluster `protobuf:\"bytes,3,opt,name=cluster,proto3,oneof\"`\n}\n\ntype MetadataKind_Host_ struct {\n\t// Host kind of metadata.\n\tHost *MetadataKind_Host `protobuf:\"bytes,4,opt,name=host,proto3,oneof\"`\n}\n\nfunc (*MetadataKind_Request_) isMetadataKind_Kind() {}\n\nfunc (*MetadataKind_Route_) isMetadataKind_Kind() {}\n\nfunc (*MetadataKind_Cluster_) isMetadataKind_Kind() {}\n\nfunc (*MetadataKind_Host_) isMetadataKind_Kind() {}\n\n// Specifies a segment in a path for retrieving values from Metadata.\n// Currently, only key-based segments (field names) are supported.\ntype MetadataKey_PathSegment struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Segment:\n\t//\n\t//\t*MetadataKey_PathSegment_Key\n\tSegment       isMetadataKey_PathSegment_Segment `protobuf_oneof:\"segment\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *MetadataKey_PathSegment) Reset() {\n\t*x = MetadataKey_PathSegment{}\n\tmi := &file_envoy_type_metadata_v3_metadata_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MetadataKey_PathSegment) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MetadataKey_PathSegment) ProtoMessage() {}\n\nfunc (x *MetadataKey_PathSegment) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_metadata_v3_metadata_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MetadataKey_PathSegment.ProtoReflect.Descriptor instead.\nfunc (*MetadataKey_PathSegment) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_metadata_v3_metadata_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *MetadataKey_PathSegment) GetSegment() isMetadataKey_PathSegment_Segment {\n\tif x != nil {\n\t\treturn x.Segment\n\t}\n\treturn nil\n}\n\nfunc (x *MetadataKey_PathSegment) GetKey() string {\n\tif x != nil {\n\t\tif x, ok := x.Segment.(*MetadataKey_PathSegment_Key); ok {\n\t\t\treturn x.Key\n\t\t}\n\t}\n\treturn \"\"\n}\n\ntype isMetadataKey_PathSegment_Segment interface {\n\tisMetadataKey_PathSegment_Segment()\n}\n\ntype MetadataKey_PathSegment_Key struct {\n\t// If specified, use this key to retrieve the value in a Struct.\n\tKey string `protobuf:\"bytes,1,opt,name=key,proto3,oneof\"`\n}\n\nfunc (*MetadataKey_PathSegment_Key) isMetadataKey_PathSegment_Segment() {}\n\n// Represents dynamic metadata associated with the request.\ntype MetadataKind_Request struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *MetadataKind_Request) Reset() {\n\t*x = MetadataKind_Request{}\n\tmi := &file_envoy_type_metadata_v3_metadata_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MetadataKind_Request) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MetadataKind_Request) ProtoMessage() {}\n\nfunc (x *MetadataKind_Request) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_metadata_v3_metadata_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MetadataKind_Request.ProtoReflect.Descriptor instead.\nfunc (*MetadataKind_Request) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_metadata_v3_metadata_proto_rawDescGZIP(), []int{1, 0}\n}\n\n// Represents metadata from :ref:`the route<envoy_v3_api_field_config.route.v3.Route.metadata>`.\ntype MetadataKind_Route struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *MetadataKind_Route) Reset() {\n\t*x = MetadataKind_Route{}\n\tmi := &file_envoy_type_metadata_v3_metadata_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MetadataKind_Route) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MetadataKind_Route) ProtoMessage() {}\n\nfunc (x *MetadataKind_Route) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_metadata_v3_metadata_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MetadataKind_Route.ProtoReflect.Descriptor instead.\nfunc (*MetadataKind_Route) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_metadata_v3_metadata_proto_rawDescGZIP(), []int{1, 1}\n}\n\n// Represents metadata from :ref:`the upstream cluster<envoy_v3_api_field_config.cluster.v3.Cluster.metadata>`.\ntype MetadataKind_Cluster struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *MetadataKind_Cluster) Reset() {\n\t*x = MetadataKind_Cluster{}\n\tmi := &file_envoy_type_metadata_v3_metadata_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MetadataKind_Cluster) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MetadataKind_Cluster) ProtoMessage() {}\n\nfunc (x *MetadataKind_Cluster) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_metadata_v3_metadata_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MetadataKind_Cluster.ProtoReflect.Descriptor instead.\nfunc (*MetadataKind_Cluster) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_metadata_v3_metadata_proto_rawDescGZIP(), []int{1, 2}\n}\n\n// Represents metadata from :ref:`the upstream\n// host<envoy_v3_api_field_config.endpoint.v3.LbEndpoint.metadata>`.\ntype MetadataKind_Host struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *MetadataKind_Host) Reset() {\n\t*x = MetadataKind_Host{}\n\tmi := &file_envoy_type_metadata_v3_metadata_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MetadataKind_Host) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MetadataKind_Host) ProtoMessage() {}\n\nfunc (x *MetadataKind_Host) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_metadata_v3_metadata_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MetadataKind_Host.ProtoReflect.Descriptor instead.\nfunc (*MetadataKind_Host) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_metadata_v3_metadata_proto_rawDescGZIP(), []int{1, 3}\n}\n\nvar File_envoy_type_metadata_v3_metadata_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_metadata_v3_metadata_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"%envoy/type/metadata/v3/metadata.proto\\x12\\x16envoy.type.metadata.v3\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\x95\\x02\\n\" +\n\t\"\\vMetadataKey\\x12\\x19\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x03key\\x12M\\n\" +\n\t\"\\x04path\\x18\\x02 \\x03(\\v2/.envoy.type.metadata.v3.MetadataKey.PathSegmentB\\b\\xfaB\\x05\\x92\\x01\\x02\\b\\x01R\\x04path\\x1aq\\n\" +\n\t\"\\vPathSegment\\x12\\x1b\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01H\\x00R\\x03key:5\\x9aň\\x1e0\\n\" +\n\t\".envoy.type.metadata.v2.MetadataKey.PathSegmentB\\x0e\\n\" +\n\t\"\\asegment\\x12\\x03\\xf8B\\x01:)\\x9aň\\x1e$\\n\" +\n\t\"\\\"envoy.type.metadata.v2.MetadataKey\\\"\\xd2\\x04\\n\" +\n\t\"\\fMetadataKind\\x12H\\n\" +\n\t\"\\arequest\\x18\\x01 \\x01(\\v2,.envoy.type.metadata.v3.MetadataKind.RequestH\\x00R\\arequest\\x12B\\n\" +\n\t\"\\x05route\\x18\\x02 \\x01(\\v2*.envoy.type.metadata.v3.MetadataKind.RouteH\\x00R\\x05route\\x12H\\n\" +\n\t\"\\acluster\\x18\\x03 \\x01(\\v2,.envoy.type.metadata.v3.MetadataKind.ClusterH\\x00R\\acluster\\x12?\\n\" +\n\t\"\\x04host\\x18\\x04 \\x01(\\v2).envoy.type.metadata.v3.MetadataKind.HostH\\x00R\\x04host\\x1a=\\n\" +\n\t\"\\aRequest:2\\x9aň\\x1e-\\n\" +\n\t\"+envoy.type.metadata.v2.MetadataKind.Request\\x1a9\\n\" +\n\t\"\\x05Route:0\\x9aň\\x1e+\\n\" +\n\t\")envoy.type.metadata.v2.MetadataKind.Route\\x1a=\\n\" +\n\t\"\\aCluster:2\\x9aň\\x1e-\\n\" +\n\t\"+envoy.type.metadata.v2.MetadataKind.Cluster\\x1a7\\n\" +\n\t\"\\x04Host:/\\x9aň\\x1e*\\n\" +\n\t\"(envoy.type.metadata.v2.MetadataKind.Host:*\\x9aň\\x1e%\\n\" +\n\t\"#envoy.type.metadata.v2.MetadataKindB\\v\\n\" +\n\t\"\\x04kind\\x12\\x03\\xf8B\\x01B\\x89\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"$io.envoyproxy.envoy.type.metadata.v3B\\rMetadataProtoP\\x01ZHgithub.com/envoyproxy/go-control-plane/envoy/type/metadata/v3;metadatav3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_metadata_v3_metadata_proto_rawDescOnce sync.Once\n\tfile_envoy_type_metadata_v3_metadata_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_metadata_v3_metadata_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_metadata_v3_metadata_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_metadata_v3_metadata_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_metadata_v3_metadata_proto_rawDesc), len(file_envoy_type_metadata_v3_metadata_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_metadata_v3_metadata_proto_rawDescData\n}\n\nvar file_envoy_type_metadata_v3_metadata_proto_msgTypes = make([]protoimpl.MessageInfo, 7)\nvar file_envoy_type_metadata_v3_metadata_proto_goTypes = []any{\n\t(*MetadataKey)(nil),             // 0: envoy.type.metadata.v3.MetadataKey\n\t(*MetadataKind)(nil),            // 1: envoy.type.metadata.v3.MetadataKind\n\t(*MetadataKey_PathSegment)(nil), // 2: envoy.type.metadata.v3.MetadataKey.PathSegment\n\t(*MetadataKind_Request)(nil),    // 3: envoy.type.metadata.v3.MetadataKind.Request\n\t(*MetadataKind_Route)(nil),      // 4: envoy.type.metadata.v3.MetadataKind.Route\n\t(*MetadataKind_Cluster)(nil),    // 5: envoy.type.metadata.v3.MetadataKind.Cluster\n\t(*MetadataKind_Host)(nil),       // 6: envoy.type.metadata.v3.MetadataKind.Host\n}\nvar file_envoy_type_metadata_v3_metadata_proto_depIdxs = []int32{\n\t2, // 0: envoy.type.metadata.v3.MetadataKey.path:type_name -> envoy.type.metadata.v3.MetadataKey.PathSegment\n\t3, // 1: envoy.type.metadata.v3.MetadataKind.request:type_name -> envoy.type.metadata.v3.MetadataKind.Request\n\t4, // 2: envoy.type.metadata.v3.MetadataKind.route:type_name -> envoy.type.metadata.v3.MetadataKind.Route\n\t5, // 3: envoy.type.metadata.v3.MetadataKind.cluster:type_name -> envoy.type.metadata.v3.MetadataKind.Cluster\n\t6, // 4: envoy.type.metadata.v3.MetadataKind.host:type_name -> envoy.type.metadata.v3.MetadataKind.Host\n\t5, // [5:5] is the sub-list for method output_type\n\t5, // [5:5] is the sub-list for method input_type\n\t5, // [5:5] is the sub-list for extension type_name\n\t5, // [5:5] is the sub-list for extension extendee\n\t0, // [0:5] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_metadata_v3_metadata_proto_init() }\nfunc file_envoy_type_metadata_v3_metadata_proto_init() {\n\tif File_envoy_type_metadata_v3_metadata_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_type_metadata_v3_metadata_proto_msgTypes[1].OneofWrappers = []any{\n\t\t(*MetadataKind_Request_)(nil),\n\t\t(*MetadataKind_Route_)(nil),\n\t\t(*MetadataKind_Cluster_)(nil),\n\t\t(*MetadataKind_Host_)(nil),\n\t}\n\tfile_envoy_type_metadata_v3_metadata_proto_msgTypes[2].OneofWrappers = []any{\n\t\t(*MetadataKey_PathSegment_Key)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_metadata_v3_metadata_proto_rawDesc), len(file_envoy_type_metadata_v3_metadata_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   7,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_metadata_v3_metadata_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_metadata_v3_metadata_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_metadata_v3_metadata_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_metadata_v3_metadata_proto = out.File\n\tfile_envoy_type_metadata_v3_metadata_proto_goTypes = nil\n\tfile_envoy_type_metadata_v3_metadata_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/metadata/v3/metadata.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/metadata/v3/metadata.proto\n\npackage metadatav3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on MetadataKey with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *MetadataKey) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on MetadataKey with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in MetadataKeyMultiError, or\n// nil if none found.\nfunc (m *MetadataKey) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *MetadataKey) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetKey()) < 1 {\n\t\terr := MetadataKeyValidationError{\n\t\t\tfield:  \"Key\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(m.GetPath()) < 1 {\n\t\terr := MetadataKeyValidationError{\n\t\t\tfield:  \"Path\",\n\t\t\treason: \"value must contain at least 1 item(s)\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tfor idx, item := range m.GetPath() {\n\t\t_, _ = idx, item\n\n\t\tif all {\n\t\t\tswitch v := interface{}(item).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, MetadataKeyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Path[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, MetadataKeyValidationError{\n\t\t\t\t\t\tfield:  fmt.Sprintf(\"Path[%v]\", idx),\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn MetadataKeyValidationError{\n\t\t\t\t\tfield:  fmt.Sprintf(\"Path[%v]\", idx),\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn MetadataKeyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// MetadataKeyMultiError is an error wrapping multiple validation errors\n// returned by MetadataKey.ValidateAll() if the designated constraints aren't met.\ntype MetadataKeyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m MetadataKeyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m MetadataKeyMultiError) AllErrors() []error { return m }\n\n// MetadataKeyValidationError is the validation error returned by\n// MetadataKey.Validate if the designated constraints aren't met.\ntype MetadataKeyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e MetadataKeyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e MetadataKeyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e MetadataKeyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e MetadataKeyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e MetadataKeyValidationError) ErrorName() string { return \"MetadataKeyValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e MetadataKeyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMetadataKey.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = MetadataKeyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = MetadataKeyValidationError{}\n\n// Validate checks the field values on MetadataKind with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *MetadataKind) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on MetadataKind with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in MetadataKindMultiError, or\n// nil if none found.\nfunc (m *MetadataKind) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *MetadataKind) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofKindPresent := false\n\tswitch v := m.Kind.(type) {\n\tcase *MetadataKind_Request_:\n\t\tif v == nil {\n\t\t\terr := MetadataKindValidationError{\n\t\t\t\tfield:  \"Kind\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofKindPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetRequest()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, MetadataKindValidationError{\n\t\t\t\t\t\tfield:  \"Request\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, MetadataKindValidationError{\n\t\t\t\t\t\tfield:  \"Request\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetRequest()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn MetadataKindValidationError{\n\t\t\t\t\tfield:  \"Request\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *MetadataKind_Route_:\n\t\tif v == nil {\n\t\t\terr := MetadataKindValidationError{\n\t\t\t\tfield:  \"Kind\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofKindPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetRoute()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, MetadataKindValidationError{\n\t\t\t\t\t\tfield:  \"Route\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, MetadataKindValidationError{\n\t\t\t\t\t\tfield:  \"Route\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetRoute()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn MetadataKindValidationError{\n\t\t\t\t\tfield:  \"Route\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *MetadataKind_Cluster_:\n\t\tif v == nil {\n\t\t\terr := MetadataKindValidationError{\n\t\t\t\tfield:  \"Kind\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofKindPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetCluster()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, MetadataKindValidationError{\n\t\t\t\t\t\tfield:  \"Cluster\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, MetadataKindValidationError{\n\t\t\t\t\t\tfield:  \"Cluster\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetCluster()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn MetadataKindValidationError{\n\t\t\t\t\tfield:  \"Cluster\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *MetadataKind_Host_:\n\t\tif v == nil {\n\t\t\terr := MetadataKindValidationError{\n\t\t\t\tfield:  \"Kind\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofKindPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetHost()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, MetadataKindValidationError{\n\t\t\t\t\t\tfield:  \"Host\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, MetadataKindValidationError{\n\t\t\t\t\t\tfield:  \"Host\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetHost()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn MetadataKindValidationError{\n\t\t\t\t\tfield:  \"Host\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofKindPresent {\n\t\terr := MetadataKindValidationError{\n\t\t\tfield:  \"Kind\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn MetadataKindMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// MetadataKindMultiError is an error wrapping multiple validation errors\n// returned by MetadataKind.ValidateAll() if the designated constraints aren't met.\ntype MetadataKindMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m MetadataKindMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m MetadataKindMultiError) AllErrors() []error { return m }\n\n// MetadataKindValidationError is the validation error returned by\n// MetadataKind.Validate if the designated constraints aren't met.\ntype MetadataKindValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e MetadataKindValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e MetadataKindValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e MetadataKindValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e MetadataKindValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e MetadataKindValidationError) ErrorName() string { return \"MetadataKindValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e MetadataKindValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMetadataKind.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = MetadataKindValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = MetadataKindValidationError{}\n\n// Validate checks the field values on MetadataKey_PathSegment with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *MetadataKey_PathSegment) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on MetadataKey_PathSegment with the\n// rules defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// MetadataKey_PathSegmentMultiError, or nil if none found.\nfunc (m *MetadataKey_PathSegment) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *MetadataKey_PathSegment) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofSegmentPresent := false\n\tswitch v := m.Segment.(type) {\n\tcase *MetadataKey_PathSegment_Key:\n\t\tif v == nil {\n\t\t\terr := MetadataKey_PathSegmentValidationError{\n\t\t\t\tfield:  \"Segment\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofSegmentPresent = true\n\n\t\tif utf8.RuneCountInString(m.GetKey()) < 1 {\n\t\t\terr := MetadataKey_PathSegmentValidationError{\n\t\t\t\tfield:  \"Key\",\n\t\t\t\treason: \"value length must be at least 1 runes\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofSegmentPresent {\n\t\terr := MetadataKey_PathSegmentValidationError{\n\t\t\tfield:  \"Segment\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn MetadataKey_PathSegmentMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// MetadataKey_PathSegmentMultiError is an error wrapping multiple validation\n// errors returned by MetadataKey_PathSegment.ValidateAll() if the designated\n// constraints aren't met.\ntype MetadataKey_PathSegmentMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m MetadataKey_PathSegmentMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m MetadataKey_PathSegmentMultiError) AllErrors() []error { return m }\n\n// MetadataKey_PathSegmentValidationError is the validation error returned by\n// MetadataKey_PathSegment.Validate if the designated constraints aren't met.\ntype MetadataKey_PathSegmentValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e MetadataKey_PathSegmentValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e MetadataKey_PathSegmentValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e MetadataKey_PathSegmentValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e MetadataKey_PathSegmentValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e MetadataKey_PathSegmentValidationError) ErrorName() string {\n\treturn \"MetadataKey_PathSegmentValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e MetadataKey_PathSegmentValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMetadataKey_PathSegment.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = MetadataKey_PathSegmentValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = MetadataKey_PathSegmentValidationError{}\n\n// Validate checks the field values on MetadataKind_Request with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *MetadataKind_Request) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on MetadataKind_Request with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// MetadataKind_RequestMultiError, or nil if none found.\nfunc (m *MetadataKind_Request) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *MetadataKind_Request) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn MetadataKind_RequestMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// MetadataKind_RequestMultiError is an error wrapping multiple validation\n// errors returned by MetadataKind_Request.ValidateAll() if the designated\n// constraints aren't met.\ntype MetadataKind_RequestMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m MetadataKind_RequestMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m MetadataKind_RequestMultiError) AllErrors() []error { return m }\n\n// MetadataKind_RequestValidationError is the validation error returned by\n// MetadataKind_Request.Validate if the designated constraints aren't met.\ntype MetadataKind_RequestValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e MetadataKind_RequestValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e MetadataKind_RequestValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e MetadataKind_RequestValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e MetadataKind_RequestValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e MetadataKind_RequestValidationError) ErrorName() string {\n\treturn \"MetadataKind_RequestValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e MetadataKind_RequestValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMetadataKind_Request.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = MetadataKind_RequestValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = MetadataKind_RequestValidationError{}\n\n// Validate checks the field values on MetadataKind_Route with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *MetadataKind_Route) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on MetadataKind_Route with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// MetadataKind_RouteMultiError, or nil if none found.\nfunc (m *MetadataKind_Route) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *MetadataKind_Route) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn MetadataKind_RouteMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// MetadataKind_RouteMultiError is an error wrapping multiple validation errors\n// returned by MetadataKind_Route.ValidateAll() if the designated constraints\n// aren't met.\ntype MetadataKind_RouteMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m MetadataKind_RouteMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m MetadataKind_RouteMultiError) AllErrors() []error { return m }\n\n// MetadataKind_RouteValidationError is the validation error returned by\n// MetadataKind_Route.Validate if the designated constraints aren't met.\ntype MetadataKind_RouteValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e MetadataKind_RouteValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e MetadataKind_RouteValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e MetadataKind_RouteValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e MetadataKind_RouteValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e MetadataKind_RouteValidationError) ErrorName() string {\n\treturn \"MetadataKind_RouteValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e MetadataKind_RouteValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMetadataKind_Route.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = MetadataKind_RouteValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = MetadataKind_RouteValidationError{}\n\n// Validate checks the field values on MetadataKind_Cluster with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *MetadataKind_Cluster) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on MetadataKind_Cluster with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// MetadataKind_ClusterMultiError, or nil if none found.\nfunc (m *MetadataKind_Cluster) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *MetadataKind_Cluster) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn MetadataKind_ClusterMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// MetadataKind_ClusterMultiError is an error wrapping multiple validation\n// errors returned by MetadataKind_Cluster.ValidateAll() if the designated\n// constraints aren't met.\ntype MetadataKind_ClusterMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m MetadataKind_ClusterMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m MetadataKind_ClusterMultiError) AllErrors() []error { return m }\n\n// MetadataKind_ClusterValidationError is the validation error returned by\n// MetadataKind_Cluster.Validate if the designated constraints aren't met.\ntype MetadataKind_ClusterValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e MetadataKind_ClusterValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e MetadataKind_ClusterValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e MetadataKind_ClusterValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e MetadataKind_ClusterValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e MetadataKind_ClusterValidationError) ErrorName() string {\n\treturn \"MetadataKind_ClusterValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e MetadataKind_ClusterValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMetadataKind_Cluster.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = MetadataKind_ClusterValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = MetadataKind_ClusterValidationError{}\n\n// Validate checks the field values on MetadataKind_Host with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *MetadataKind_Host) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on MetadataKind_Host with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// MetadataKind_HostMultiError, or nil if none found.\nfunc (m *MetadataKind_Host) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *MetadataKind_Host) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn MetadataKind_HostMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// MetadataKind_HostMultiError is an error wrapping multiple validation errors\n// returned by MetadataKind_Host.ValidateAll() if the designated constraints\n// aren't met.\ntype MetadataKind_HostMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m MetadataKind_HostMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m MetadataKind_HostMultiError) AllErrors() []error { return m }\n\n// MetadataKind_HostValidationError is the validation error returned by\n// MetadataKind_Host.Validate if the designated constraints aren't met.\ntype MetadataKind_HostValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e MetadataKind_HostValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e MetadataKind_HostValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e MetadataKind_HostValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e MetadataKind_HostValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e MetadataKind_HostValidationError) ErrorName() string {\n\treturn \"MetadataKind_HostValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e MetadataKind_HostValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sMetadataKind_Host.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = MetadataKind_HostValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = MetadataKind_HostValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/metadata/v3/metadata_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/metadata/v3/metadata.proto\n\npackage metadatav3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *MetadataKey_PathSegment) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MetadataKey_PathSegment) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataKey_PathSegment) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.Segment.(*MetadataKey_PathSegment_Key); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MetadataKey_PathSegment_Key) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataKey_PathSegment_Key) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Key)\n\tcopy(dAtA[i:], m.Key)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Key)))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\nfunc (m *MetadataKey) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MetadataKey) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataKey) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Path) > 0 {\n\t\tfor iNdEx := len(m.Path) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Path[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MetadataKind_Request) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MetadataKind_Request) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataKind_Request) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MetadataKind_Route) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MetadataKind_Route) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataKind_Route) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MetadataKind_Cluster) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MetadataKind_Cluster) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataKind_Cluster) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MetadataKind_Host) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MetadataKind_Host) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataKind_Host) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MetadataKind) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MetadataKind) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataKind) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.Kind.(*MetadataKind_Host_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Kind.(*MetadataKind_Cluster_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Kind.(*MetadataKind_Route_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Kind.(*MetadataKind_Request_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MetadataKind_Request_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataKind_Request_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Request != nil {\n\t\tsize, err := m.Request.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *MetadataKind_Route_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataKind_Route_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Route != nil {\n\t\tsize, err := m.Route.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *MetadataKind_Cluster_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataKind_Cluster_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Cluster != nil {\n\t\tsize, err := m.Cluster.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *MetadataKind_Host_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *MetadataKind_Host_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Host != nil {\n\t\tsize, err := m.Host.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *MetadataKey_PathSegment) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Segment.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *MetadataKey_PathSegment_Key) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *MetadataKey) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif len(m.Path) > 0 {\n\t\tfor _, e := range m.Path {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *MetadataKind_Request) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *MetadataKind_Route) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *MetadataKind_Cluster) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *MetadataKind_Host) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *MetadataKind) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Kind.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *MetadataKind_Request_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Request != nil {\n\t\tl = m.Request.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *MetadataKind_Route_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Route != nil {\n\t\tl = m.Route.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *MetadataKind_Cluster_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Cluster != nil {\n\t\tl = m.Cluster.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *MetadataKind_Host_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Host != nil {\n\t\tl = m.Host.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/tracing/v3/custom_tag.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/tracing/v3/custom_tag.proto\n\npackage tracingv3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tv3 \"github.com/envoyproxy/go-control-plane/envoy/type/metadata/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Describes custom tags for the active span.\n// [#next-free-field: 7]\ntype CustomTag struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Used to populate the tag name.\n\tTag string `protobuf:\"bytes,1,opt,name=tag,proto3\" json:\"tag,omitempty\"`\n\t// Used to specify what kind of custom tag.\n\t//\n\t// Types that are valid to be assigned to Type:\n\t//\n\t//\t*CustomTag_Literal_\n\t//\t*CustomTag_Environment_\n\t//\t*CustomTag_RequestHeader\n\t//\t*CustomTag_Metadata_\n\t//\t*CustomTag_Value\n\tType          isCustomTag_Type `protobuf_oneof:\"type\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *CustomTag) Reset() {\n\t*x = CustomTag{}\n\tmi := &file_envoy_type_tracing_v3_custom_tag_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CustomTag) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CustomTag) ProtoMessage() {}\n\nfunc (x *CustomTag) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_tracing_v3_custom_tag_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CustomTag.ProtoReflect.Descriptor instead.\nfunc (*CustomTag) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_tracing_v3_custom_tag_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *CustomTag) GetTag() string {\n\tif x != nil {\n\t\treturn x.Tag\n\t}\n\treturn \"\"\n}\n\nfunc (x *CustomTag) GetType() isCustomTag_Type {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn nil\n}\n\nfunc (x *CustomTag) GetLiteral() *CustomTag_Literal {\n\tif x != nil {\n\t\tif x, ok := x.Type.(*CustomTag_Literal_); ok {\n\t\t\treturn x.Literal\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *CustomTag) GetEnvironment() *CustomTag_Environment {\n\tif x != nil {\n\t\tif x, ok := x.Type.(*CustomTag_Environment_); ok {\n\t\t\treturn x.Environment\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *CustomTag) GetRequestHeader() *CustomTag_Header {\n\tif x != nil {\n\t\tif x, ok := x.Type.(*CustomTag_RequestHeader); ok {\n\t\t\treturn x.RequestHeader\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *CustomTag) GetMetadata() *CustomTag_Metadata {\n\tif x != nil {\n\t\tif x, ok := x.Type.(*CustomTag_Metadata_); ok {\n\t\t\treturn x.Metadata\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *CustomTag) GetValue() string {\n\tif x != nil {\n\t\tif x, ok := x.Type.(*CustomTag_Value); ok {\n\t\t\treturn x.Value\n\t\t}\n\t}\n\treturn \"\"\n}\n\ntype isCustomTag_Type interface {\n\tisCustomTag_Type()\n}\n\ntype CustomTag_Literal_ struct {\n\t// A literal custom tag.\n\tLiteral *CustomTag_Literal `protobuf:\"bytes,2,opt,name=literal,proto3,oneof\"`\n}\n\ntype CustomTag_Environment_ struct {\n\t// An environment custom tag.\n\tEnvironment *CustomTag_Environment `protobuf:\"bytes,3,opt,name=environment,proto3,oneof\"`\n}\n\ntype CustomTag_RequestHeader struct {\n\t// A request header custom tag.\n\tRequestHeader *CustomTag_Header `protobuf:\"bytes,4,opt,name=request_header,json=requestHeader,proto3,oneof\"`\n}\n\ntype CustomTag_Metadata_ struct {\n\t// A custom tag to obtain tag value from the metadata.\n\tMetadata *CustomTag_Metadata `protobuf:\"bytes,5,opt,name=metadata,proto3,oneof\"`\n}\n\ntype CustomTag_Value struct {\n\t// Custom tag value.\n\t//\n\t// The same :ref:`format specifier <config_access_log_format>` as used for\n\t// :ref:`HTTP access logging <config_access_log>` applies here, however\n\t// unknown specifier values are replaced with the empty string instead of “-“.\n\tValue string `protobuf:\"bytes,6,opt,name=value,proto3,oneof\"`\n}\n\nfunc (*CustomTag_Literal_) isCustomTag_Type() {}\n\nfunc (*CustomTag_Environment_) isCustomTag_Type() {}\n\nfunc (*CustomTag_RequestHeader) isCustomTag_Type() {}\n\nfunc (*CustomTag_Metadata_) isCustomTag_Type() {}\n\nfunc (*CustomTag_Value) isCustomTag_Type() {}\n\n// Literal type custom tag with static value for the tag value.\ntype CustomTag_Literal struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Static literal value to populate the tag value.\n\tValue         string `protobuf:\"bytes,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *CustomTag_Literal) Reset() {\n\t*x = CustomTag_Literal{}\n\tmi := &file_envoy_type_tracing_v3_custom_tag_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CustomTag_Literal) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CustomTag_Literal) ProtoMessage() {}\n\nfunc (x *CustomTag_Literal) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_tracing_v3_custom_tag_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CustomTag_Literal.ProtoReflect.Descriptor instead.\nfunc (*CustomTag_Literal) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_tracing_v3_custom_tag_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *CustomTag_Literal) GetValue() string {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn \"\"\n}\n\n// Environment type custom tag with environment name and default value.\ntype CustomTag_Environment struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Environment variable name to obtain the value to populate the tag value.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// When the environment variable is not found,\n\t// the tag value will be populated with this default value if specified,\n\t// otherwise no tag will be populated.\n\tDefaultValue  string `protobuf:\"bytes,2,opt,name=default_value,json=defaultValue,proto3\" json:\"default_value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *CustomTag_Environment) Reset() {\n\t*x = CustomTag_Environment{}\n\tmi := &file_envoy_type_tracing_v3_custom_tag_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CustomTag_Environment) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CustomTag_Environment) ProtoMessage() {}\n\nfunc (x *CustomTag_Environment) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_tracing_v3_custom_tag_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CustomTag_Environment.ProtoReflect.Descriptor instead.\nfunc (*CustomTag_Environment) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_tracing_v3_custom_tag_proto_rawDescGZIP(), []int{0, 1}\n}\n\nfunc (x *CustomTag_Environment) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *CustomTag_Environment) GetDefaultValue() string {\n\tif x != nil {\n\t\treturn x.DefaultValue\n\t}\n\treturn \"\"\n}\n\n// Header type custom tag with header name and default value.\ntype CustomTag_Header struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Header name to obtain the value to populate the tag value.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// When the header does not exist,\n\t// the tag value will be populated with this default value if specified,\n\t// otherwise no tag will be populated.\n\tDefaultValue  string `protobuf:\"bytes,2,opt,name=default_value,json=defaultValue,proto3\" json:\"default_value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *CustomTag_Header) Reset() {\n\t*x = CustomTag_Header{}\n\tmi := &file_envoy_type_tracing_v3_custom_tag_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CustomTag_Header) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CustomTag_Header) ProtoMessage() {}\n\nfunc (x *CustomTag_Header) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_tracing_v3_custom_tag_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CustomTag_Header.ProtoReflect.Descriptor instead.\nfunc (*CustomTag_Header) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_tracing_v3_custom_tag_proto_rawDescGZIP(), []int{0, 2}\n}\n\nfunc (x *CustomTag_Header) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *CustomTag_Header) GetDefaultValue() string {\n\tif x != nil {\n\t\treturn x.DefaultValue\n\t}\n\treturn \"\"\n}\n\n// Metadata type custom tag using\n// :ref:`MetadataKey <envoy_v3_api_msg_type.metadata.v3.MetadataKey>` to retrieve the protobuf value\n// from :ref:`Metadata <envoy_v3_api_msg_config.core.v3.Metadata>`, and populate the tag value with\n// `the canonical JSON <https://developers.google.com/protocol-buffers/docs/proto3#json>`_\n// representation of it.\ntype CustomTag_Metadata struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specify what kind of metadata to obtain tag value from.\n\tKind *v3.MetadataKind `protobuf:\"bytes,1,opt,name=kind,proto3\" json:\"kind,omitempty\"`\n\t// Metadata key to define the path to retrieve the tag value.\n\tMetadataKey *v3.MetadataKey `protobuf:\"bytes,2,opt,name=metadata_key,json=metadataKey,proto3\" json:\"metadata_key,omitempty\"`\n\t// When no valid metadata is found,\n\t// the tag value would be populated with this default value if specified,\n\t// otherwise no tag would be populated.\n\tDefaultValue  string `protobuf:\"bytes,3,opt,name=default_value,json=defaultValue,proto3\" json:\"default_value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *CustomTag_Metadata) Reset() {\n\t*x = CustomTag_Metadata{}\n\tmi := &file_envoy_type_tracing_v3_custom_tag_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CustomTag_Metadata) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CustomTag_Metadata) ProtoMessage() {}\n\nfunc (x *CustomTag_Metadata) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_tracing_v3_custom_tag_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CustomTag_Metadata.ProtoReflect.Descriptor instead.\nfunc (*CustomTag_Metadata) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_tracing_v3_custom_tag_proto_rawDescGZIP(), []int{0, 3}\n}\n\nfunc (x *CustomTag_Metadata) GetKind() *v3.MetadataKind {\n\tif x != nil {\n\t\treturn x.Kind\n\t}\n\treturn nil\n}\n\nfunc (x *CustomTag_Metadata) GetMetadataKey() *v3.MetadataKey {\n\tif x != nil {\n\t\treturn x.MetadataKey\n\t}\n\treturn nil\n}\n\nfunc (x *CustomTag_Metadata) GetDefaultValue() string {\n\tif x != nil {\n\t\treturn x.DefaultValue\n\t}\n\treturn \"\"\n}\n\nvar File_envoy_type_tracing_v3_custom_tag_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_tracing_v3_custom_tag_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"&envoy/type/tracing/v3/custom_tag.proto\\x12\\x15envoy.type.tracing.v3\\x1a%envoy/type/metadata/v3/metadata.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xec\\a\\n\" +\n\t\"\\tCustomTag\\x12\\x19\\n\" +\n\t\"\\x03tag\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x03tag\\x12D\\n\" +\n\t\"\\aliteral\\x18\\x02 \\x01(\\v2(.envoy.type.tracing.v3.CustomTag.LiteralH\\x00R\\aliteral\\x12P\\n\" +\n\t\"\\venvironment\\x18\\x03 \\x01(\\v2,.envoy.type.tracing.v3.CustomTag.EnvironmentH\\x00R\\venvironment\\x12P\\n\" +\n\t\"\\x0erequest_header\\x18\\x04 \\x01(\\v2'.envoy.type.tracing.v3.CustomTag.HeaderH\\x00R\\rrequestHeader\\x12G\\n\" +\n\t\"\\bmetadata\\x18\\x05 \\x01(\\v2).envoy.type.tracing.v3.CustomTag.MetadataH\\x00R\\bmetadata\\x12\\x16\\n\" +\n\t\"\\x05value\\x18\\x06 \\x01(\\tH\\x00R\\x05value\\x1aX\\n\" +\n\t\"\\aLiteral\\x12\\x1d\\n\" +\n\t\"\\x05value\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x05value:.\\x9aň\\x1e)\\n\" +\n\t\"'envoy.type.tracing.v2.CustomTag.Literal\\x1a\\x83\\x01\\n\" +\n\t\"\\vEnvironment\\x12\\x1b\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x04name\\x12#\\n\" +\n\t\"\\rdefault_value\\x18\\x02 \\x01(\\tR\\fdefaultValue:2\\x9aň\\x1e-\\n\" +\n\t\"+envoy.type.tracing.v2.CustomTag.Environment\\x1a\\x7f\\n\" +\n\t\"\\x06Header\\x12!\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tB\\r\\xfaB\\n\" +\n\t\"r\\b\\x10\\x01\\xc8\\x01\\x00\\xc0\\x01\\x01R\\x04name\\x12#\\n\" +\n\t\"\\rdefault_value\\x18\\x02 \\x01(\\tR\\fdefaultValue:-\\x9aň\\x1e(\\n\" +\n\t\"&envoy.type.tracing.v2.CustomTag.Header\\x1a\\xe2\\x01\\n\" +\n\t\"\\bMetadata\\x128\\n\" +\n\t\"\\x04kind\\x18\\x01 \\x01(\\v2$.envoy.type.metadata.v3.MetadataKindR\\x04kind\\x12F\\n\" +\n\t\"\\fmetadata_key\\x18\\x02 \\x01(\\v2#.envoy.type.metadata.v3.MetadataKeyR\\vmetadataKey\\x12#\\n\" +\n\t\"\\rdefault_value\\x18\\x03 \\x01(\\tR\\fdefaultValue:/\\x9aň\\x1e*\\n\" +\n\t\"(envoy.type.tracing.v2.CustomTag.Metadata:&\\x9aň\\x1e!\\n\" +\n\t\"\\x1fenvoy.type.tracing.v2.CustomTagB\\v\\n\" +\n\t\"\\x04type\\x12\\x03\\xf8B\\x01B\\x87\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"#io.envoyproxy.envoy.type.tracing.v3B\\x0eCustomTagProtoP\\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/tracing/v3;tracingv3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_tracing_v3_custom_tag_proto_rawDescOnce sync.Once\n\tfile_envoy_type_tracing_v3_custom_tag_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_tracing_v3_custom_tag_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_tracing_v3_custom_tag_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_tracing_v3_custom_tag_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_tracing_v3_custom_tag_proto_rawDesc), len(file_envoy_type_tracing_v3_custom_tag_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_tracing_v3_custom_tag_proto_rawDescData\n}\n\nvar file_envoy_type_tracing_v3_custom_tag_proto_msgTypes = make([]protoimpl.MessageInfo, 5)\nvar file_envoy_type_tracing_v3_custom_tag_proto_goTypes = []any{\n\t(*CustomTag)(nil),             // 0: envoy.type.tracing.v3.CustomTag\n\t(*CustomTag_Literal)(nil),     // 1: envoy.type.tracing.v3.CustomTag.Literal\n\t(*CustomTag_Environment)(nil), // 2: envoy.type.tracing.v3.CustomTag.Environment\n\t(*CustomTag_Header)(nil),      // 3: envoy.type.tracing.v3.CustomTag.Header\n\t(*CustomTag_Metadata)(nil),    // 4: envoy.type.tracing.v3.CustomTag.Metadata\n\t(*v3.MetadataKind)(nil),       // 5: envoy.type.metadata.v3.MetadataKind\n\t(*v3.MetadataKey)(nil),        // 6: envoy.type.metadata.v3.MetadataKey\n}\nvar file_envoy_type_tracing_v3_custom_tag_proto_depIdxs = []int32{\n\t1, // 0: envoy.type.tracing.v3.CustomTag.literal:type_name -> envoy.type.tracing.v3.CustomTag.Literal\n\t2, // 1: envoy.type.tracing.v3.CustomTag.environment:type_name -> envoy.type.tracing.v3.CustomTag.Environment\n\t3, // 2: envoy.type.tracing.v3.CustomTag.request_header:type_name -> envoy.type.tracing.v3.CustomTag.Header\n\t4, // 3: envoy.type.tracing.v3.CustomTag.metadata:type_name -> envoy.type.tracing.v3.CustomTag.Metadata\n\t5, // 4: envoy.type.tracing.v3.CustomTag.Metadata.kind:type_name -> envoy.type.metadata.v3.MetadataKind\n\t6, // 5: envoy.type.tracing.v3.CustomTag.Metadata.metadata_key:type_name -> envoy.type.metadata.v3.MetadataKey\n\t6, // [6:6] is the sub-list for method output_type\n\t6, // [6:6] is the sub-list for method input_type\n\t6, // [6:6] is the sub-list for extension type_name\n\t6, // [6:6] is the sub-list for extension extendee\n\t0, // [0:6] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_tracing_v3_custom_tag_proto_init() }\nfunc file_envoy_type_tracing_v3_custom_tag_proto_init() {\n\tif File_envoy_type_tracing_v3_custom_tag_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_type_tracing_v3_custom_tag_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*CustomTag_Literal_)(nil),\n\t\t(*CustomTag_Environment_)(nil),\n\t\t(*CustomTag_RequestHeader)(nil),\n\t\t(*CustomTag_Metadata_)(nil),\n\t\t(*CustomTag_Value)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_tracing_v3_custom_tag_proto_rawDesc), len(file_envoy_type_tracing_v3_custom_tag_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   5,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_tracing_v3_custom_tag_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_tracing_v3_custom_tag_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_tracing_v3_custom_tag_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_tracing_v3_custom_tag_proto = out.File\n\tfile_envoy_type_tracing_v3_custom_tag_proto_goTypes = nil\n\tfile_envoy_type_tracing_v3_custom_tag_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/tracing/v3/custom_tag.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/tracing/v3/custom_tag.proto\n\npackage tracingv3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on CustomTag with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *CustomTag) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CustomTag with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in CustomTagMultiError, or nil\n// if none found.\nfunc (m *CustomTag) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CustomTag) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetTag()) < 1 {\n\t\terr := CustomTagValidationError{\n\t\t\tfield:  \"Tag\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\toneofTypePresent := false\n\tswitch v := m.Type.(type) {\n\tcase *CustomTag_Literal_:\n\t\tif v == nil {\n\t\t\terr := CustomTagValidationError{\n\t\t\t\tfield:  \"Type\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofTypePresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetLiteral()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, CustomTagValidationError{\n\t\t\t\t\t\tfield:  \"Literal\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, CustomTagValidationError{\n\t\t\t\t\t\tfield:  \"Literal\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetLiteral()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn CustomTagValidationError{\n\t\t\t\t\tfield:  \"Literal\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *CustomTag_Environment_:\n\t\tif v == nil {\n\t\t\terr := CustomTagValidationError{\n\t\t\t\tfield:  \"Type\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofTypePresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetEnvironment()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, CustomTagValidationError{\n\t\t\t\t\t\tfield:  \"Environment\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, CustomTagValidationError{\n\t\t\t\t\t\tfield:  \"Environment\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetEnvironment()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn CustomTagValidationError{\n\t\t\t\t\tfield:  \"Environment\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *CustomTag_RequestHeader:\n\t\tif v == nil {\n\t\t\terr := CustomTagValidationError{\n\t\t\t\tfield:  \"Type\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofTypePresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetRequestHeader()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, CustomTagValidationError{\n\t\t\t\t\t\tfield:  \"RequestHeader\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, CustomTagValidationError{\n\t\t\t\t\t\tfield:  \"RequestHeader\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetRequestHeader()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn CustomTagValidationError{\n\t\t\t\t\tfield:  \"RequestHeader\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *CustomTag_Metadata_:\n\t\tif v == nil {\n\t\t\terr := CustomTagValidationError{\n\t\t\t\tfield:  \"Type\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofTypePresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetMetadata()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, CustomTagValidationError{\n\t\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, CustomTagValidationError{\n\t\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetMetadata()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn CustomTagValidationError{\n\t\t\t\t\tfield:  \"Metadata\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *CustomTag_Value:\n\t\tif v == nil {\n\t\t\terr := CustomTagValidationError{\n\t\t\t\tfield:  \"Type\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofTypePresent = true\n\t\t// no validation rules for Value\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofTypePresent {\n\t\terr := CustomTagValidationError{\n\t\t\tfield:  \"Type\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn CustomTagMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CustomTagMultiError is an error wrapping multiple validation errors returned\n// by CustomTag.ValidateAll() if the designated constraints aren't met.\ntype CustomTagMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CustomTagMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CustomTagMultiError) AllErrors() []error { return m }\n\n// CustomTagValidationError is the validation error returned by\n// CustomTag.Validate if the designated constraints aren't met.\ntype CustomTagValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CustomTagValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CustomTagValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CustomTagValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CustomTagValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CustomTagValidationError) ErrorName() string { return \"CustomTagValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e CustomTagValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCustomTag.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CustomTagValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CustomTagValidationError{}\n\n// Validate checks the field values on CustomTag_Literal with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *CustomTag_Literal) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CustomTag_Literal with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// CustomTag_LiteralMultiError, or nil if none found.\nfunc (m *CustomTag_Literal) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CustomTag_Literal) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetValue()) < 1 {\n\t\terr := CustomTag_LiteralValidationError{\n\t\t\tfield:  \"Value\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn CustomTag_LiteralMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CustomTag_LiteralMultiError is an error wrapping multiple validation errors\n// returned by CustomTag_Literal.ValidateAll() if the designated constraints\n// aren't met.\ntype CustomTag_LiteralMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CustomTag_LiteralMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CustomTag_LiteralMultiError) AllErrors() []error { return m }\n\n// CustomTag_LiteralValidationError is the validation error returned by\n// CustomTag_Literal.Validate if the designated constraints aren't met.\ntype CustomTag_LiteralValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CustomTag_LiteralValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CustomTag_LiteralValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CustomTag_LiteralValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CustomTag_LiteralValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CustomTag_LiteralValidationError) ErrorName() string {\n\treturn \"CustomTag_LiteralValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e CustomTag_LiteralValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCustomTag_Literal.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CustomTag_LiteralValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CustomTag_LiteralValidationError{}\n\n// Validate checks the field values on CustomTag_Environment with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *CustomTag_Environment) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CustomTag_Environment with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// CustomTag_EnvironmentMultiError, or nil if none found.\nfunc (m *CustomTag_Environment) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CustomTag_Environment) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := CustomTag_EnvironmentValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for DefaultValue\n\n\tif len(errors) > 0 {\n\t\treturn CustomTag_EnvironmentMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CustomTag_EnvironmentMultiError is an error wrapping multiple validation\n// errors returned by CustomTag_Environment.ValidateAll() if the designated\n// constraints aren't met.\ntype CustomTag_EnvironmentMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CustomTag_EnvironmentMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CustomTag_EnvironmentMultiError) AllErrors() []error { return m }\n\n// CustomTag_EnvironmentValidationError is the validation error returned by\n// CustomTag_Environment.Validate if the designated constraints aren't met.\ntype CustomTag_EnvironmentValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CustomTag_EnvironmentValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CustomTag_EnvironmentValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CustomTag_EnvironmentValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CustomTag_EnvironmentValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CustomTag_EnvironmentValidationError) ErrorName() string {\n\treturn \"CustomTag_EnvironmentValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e CustomTag_EnvironmentValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCustomTag_Environment.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CustomTag_EnvironmentValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CustomTag_EnvironmentValidationError{}\n\n// Validate checks the field values on CustomTag_Header with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *CustomTag_Header) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CustomTag_Header with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// CustomTag_HeaderMultiError, or nil if none found.\nfunc (m *CustomTag_Header) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CustomTag_Header) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetName()) < 1 {\n\t\terr := CustomTag_HeaderValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif !_CustomTag_Header_Name_Pattern.MatchString(m.GetName()) {\n\t\terr := CustomTag_HeaderValidationError{\n\t\t\tfield:  \"Name\",\n\t\t\treason: \"value does not match regex pattern \\\"^[^\\\\x00\\\\n\\\\r]*$\\\"\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\t// no validation rules for DefaultValue\n\n\tif len(errors) > 0 {\n\t\treturn CustomTag_HeaderMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CustomTag_HeaderMultiError is an error wrapping multiple validation errors\n// returned by CustomTag_Header.ValidateAll() if the designated constraints\n// aren't met.\ntype CustomTag_HeaderMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CustomTag_HeaderMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CustomTag_HeaderMultiError) AllErrors() []error { return m }\n\n// CustomTag_HeaderValidationError is the validation error returned by\n// CustomTag_Header.Validate if the designated constraints aren't met.\ntype CustomTag_HeaderValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CustomTag_HeaderValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CustomTag_HeaderValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CustomTag_HeaderValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CustomTag_HeaderValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CustomTag_HeaderValidationError) ErrorName() string { return \"CustomTag_HeaderValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e CustomTag_HeaderValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCustomTag_Header.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CustomTag_HeaderValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CustomTag_HeaderValidationError{}\n\nvar _CustomTag_Header_Name_Pattern = regexp.MustCompile(\"^[^\\x00\\n\\r]*$\")\n\n// Validate checks the field values on CustomTag_Metadata with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *CustomTag_Metadata) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on CustomTag_Metadata with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// CustomTag_MetadataMultiError, or nil if none found.\nfunc (m *CustomTag_Metadata) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *CustomTag_Metadata) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif all {\n\t\tswitch v := interface{}(m.GetKind()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, CustomTag_MetadataValidationError{\n\t\t\t\t\tfield:  \"Kind\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, CustomTag_MetadataValidationError{\n\t\t\t\t\tfield:  \"Kind\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetKind()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn CustomTag_MetadataValidationError{\n\t\t\t\tfield:  \"Kind\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif all {\n\t\tswitch v := interface{}(m.GetMetadataKey()).(type) {\n\t\tcase interface{ ValidateAll() error }:\n\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\terrors = append(errors, CustomTag_MetadataValidationError{\n\t\t\t\t\tfield:  \"MetadataKey\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\tcase interface{ Validate() error }:\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\terrors = append(errors, CustomTag_MetadataValidationError{\n\t\t\t\t\tfield:  \"MetadataKey\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else if v, ok := interface{}(m.GetMetadataKey()).(interface{ Validate() error }); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\treturn CustomTag_MetadataValidationError{\n\t\t\t\tfield:  \"MetadataKey\",\n\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t}\n\t}\n\n\t// no validation rules for DefaultValue\n\n\tif len(errors) > 0 {\n\t\treturn CustomTag_MetadataMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// CustomTag_MetadataMultiError is an error wrapping multiple validation errors\n// returned by CustomTag_Metadata.ValidateAll() if the designated constraints\n// aren't met.\ntype CustomTag_MetadataMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m CustomTag_MetadataMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m CustomTag_MetadataMultiError) AllErrors() []error { return m }\n\n// CustomTag_MetadataValidationError is the validation error returned by\n// CustomTag_Metadata.Validate if the designated constraints aren't met.\ntype CustomTag_MetadataValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e CustomTag_MetadataValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e CustomTag_MetadataValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e CustomTag_MetadataValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e CustomTag_MetadataValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e CustomTag_MetadataValidationError) ErrorName() string {\n\treturn \"CustomTag_MetadataValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e CustomTag_MetadataValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sCustomTag_Metadata.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = CustomTag_MetadataValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = CustomTag_MetadataValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/tracing/v3/custom_tag_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/tracing/v3/custom_tag.proto\n\npackage tracingv3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *CustomTag_Literal) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CustomTag_Literal) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CustomTag_Literal) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CustomTag_Environment) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CustomTag_Environment) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CustomTag_Environment) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.DefaultValue) > 0 {\n\t\ti -= len(m.DefaultValue)\n\t\tcopy(dAtA[i:], m.DefaultValue)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DefaultValue)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CustomTag_Header) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CustomTag_Header) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CustomTag_Header) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.DefaultValue) > 0 {\n\t\ti -= len(m.DefaultValue)\n\t\tcopy(dAtA[i:], m.DefaultValue)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DefaultValue)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CustomTag_Metadata) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CustomTag_Metadata) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CustomTag_Metadata) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.DefaultValue) > 0 {\n\t\ti -= len(m.DefaultValue)\n\t\tcopy(dAtA[i:], m.DefaultValue)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.DefaultValue)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.MetadataKey != nil {\n\t\tif vtmsg, ok := interface{}(m.MetadataKey).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.MetadataKey)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Kind != nil {\n\t\tif vtmsg, ok := interface{}(m.Kind).(interface {\n\t\t\tMarshalToSizedBufferVTStrict([]byte) (int, error)\n\t\t}); ok {\n\t\t\tsize, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t} else {\n\t\t\tencoded, err := proto.Marshal(m.Kind)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CustomTag) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CustomTag) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CustomTag) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.Type.(*CustomTag_Value); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Type.(*CustomTag_Metadata_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Type.(*CustomTag_RequestHeader); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Type.(*CustomTag_Environment_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Type.(*CustomTag_Literal_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif len(m.Tag) > 0 {\n\t\ti -= len(m.Tag)\n\t\tcopy(dAtA[i:], m.Tag)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Tag)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CustomTag_Literal_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CustomTag_Literal_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Literal != nil {\n\t\tsize, err := m.Literal.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *CustomTag_Environment_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CustomTag_Environment_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Environment != nil {\n\t\tsize, err := m.Environment.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *CustomTag_RequestHeader) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CustomTag_RequestHeader) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RequestHeader != nil {\n\t\tsize, err := m.RequestHeader.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *CustomTag_Metadata_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CustomTag_Metadata_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Metadata != nil {\n\t\tsize, err := m.Metadata.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *CustomTag_Value) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *CustomTag_Value) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.Value)\n\tcopy(dAtA[i:], m.Value)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Value)))\n\ti--\n\tdAtA[i] = 0x32\n\treturn len(dAtA) - i, nil\n}\nfunc (m *CustomTag_Literal) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Value)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *CustomTag_Environment) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.DefaultValue)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *CustomTag_Header) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.DefaultValue)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *CustomTag_Metadata) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Kind != nil {\n\t\tif size, ok := interface{}(m.Kind).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.Kind)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.MetadataKey != nil {\n\t\tif size, ok := interface{}(m.MetadataKey).(interface {\n\t\t\tSizeVT() int\n\t\t}); ok {\n\t\t\tl = size.SizeVT()\n\t\t} else {\n\t\t\tl = proto.Size(m.MetadataKey)\n\t\t}\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.DefaultValue)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *CustomTag) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Tag)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif vtmsg, ok := m.Type.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *CustomTag_Literal_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Literal != nil {\n\t\tl = m.Literal.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *CustomTag_Environment_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Environment != nil {\n\t\tl = m.Environment.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *CustomTag_RequestHeader) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RequestHeader != nil {\n\t\tl = m.RequestHeader.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *CustomTag_Metadata_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Metadata != nil {\n\t\tl = m.Metadata.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *CustomTag_Value) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Value)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/hash_policy.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/v3/hash_policy.proto\n\npackage typev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Specifies the hash policy\ntype HashPolicy struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to PolicySpecifier:\n\t//\n\t//\t*HashPolicy_SourceIp_\n\t//\t*HashPolicy_FilterState_\n\tPolicySpecifier isHashPolicy_PolicySpecifier `protobuf_oneof:\"policy_specifier\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *HashPolicy) Reset() {\n\t*x = HashPolicy{}\n\tmi := &file_envoy_type_v3_hash_policy_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HashPolicy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HashPolicy) ProtoMessage() {}\n\nfunc (x *HashPolicy) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_v3_hash_policy_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HashPolicy.ProtoReflect.Descriptor instead.\nfunc (*HashPolicy) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_hash_policy_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *HashPolicy) GetPolicySpecifier() isHashPolicy_PolicySpecifier {\n\tif x != nil {\n\t\treturn x.PolicySpecifier\n\t}\n\treturn nil\n}\n\nfunc (x *HashPolicy) GetSourceIp() *HashPolicy_SourceIp {\n\tif x != nil {\n\t\tif x, ok := x.PolicySpecifier.(*HashPolicy_SourceIp_); ok {\n\t\t\treturn x.SourceIp\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *HashPolicy) GetFilterState() *HashPolicy_FilterState {\n\tif x != nil {\n\t\tif x, ok := x.PolicySpecifier.(*HashPolicy_FilterState_); ok {\n\t\t\treturn x.FilterState\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isHashPolicy_PolicySpecifier interface {\n\tisHashPolicy_PolicySpecifier()\n}\n\ntype HashPolicy_SourceIp_ struct {\n\tSourceIp *HashPolicy_SourceIp `protobuf:\"bytes,1,opt,name=source_ip,json=sourceIp,proto3,oneof\"`\n}\n\ntype HashPolicy_FilterState_ struct {\n\tFilterState *HashPolicy_FilterState `protobuf:\"bytes,2,opt,name=filter_state,json=filterState,proto3,oneof\"`\n}\n\nfunc (*HashPolicy_SourceIp_) isHashPolicy_PolicySpecifier() {}\n\nfunc (*HashPolicy_FilterState_) isHashPolicy_PolicySpecifier() {}\n\n// The source IP will be used to compute the hash used by hash-based load balancing\n// algorithms.\ntype HashPolicy_SourceIp struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HashPolicy_SourceIp) Reset() {\n\t*x = HashPolicy_SourceIp{}\n\tmi := &file_envoy_type_v3_hash_policy_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HashPolicy_SourceIp) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HashPolicy_SourceIp) ProtoMessage() {}\n\nfunc (x *HashPolicy_SourceIp) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_v3_hash_policy_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HashPolicy_SourceIp.ProtoReflect.Descriptor instead.\nfunc (*HashPolicy_SourceIp) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_hash_policy_proto_rawDescGZIP(), []int{0, 0}\n}\n\n// An Object in the :ref:`filterState <arch_overview_data_sharing_between_filters>` will be used\n// to compute the hash used by hash-based load balancing algorithms.\ntype HashPolicy_FilterState struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The name of the Object in the filterState, which is an Envoy::Hashable object. If there is no\n\t// data associated with the key, or the stored object is not Envoy::Hashable, no hash will be\n\t// produced.\n\tKey           string `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HashPolicy_FilterState) Reset() {\n\t*x = HashPolicy_FilterState{}\n\tmi := &file_envoy_type_v3_hash_policy_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HashPolicy_FilterState) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HashPolicy_FilterState) ProtoMessage() {}\n\nfunc (x *HashPolicy_FilterState) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_v3_hash_policy_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HashPolicy_FilterState.ProtoReflect.Descriptor instead.\nfunc (*HashPolicy_FilterState) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_hash_policy_proto_rawDescGZIP(), []int{0, 1}\n}\n\nfunc (x *HashPolicy_FilterState) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\nvar File_envoy_type_v3_hash_policy_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_v3_hash_policy_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1fenvoy/type/v3/hash_policy.proto\\x12\\renvoy.type.v3\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xaf\\x02\\n\" +\n\t\"\\n\" +\n\t\"HashPolicy\\x12A\\n\" +\n\t\"\\tsource_ip\\x18\\x01 \\x01(\\v2\\\".envoy.type.v3.HashPolicy.SourceIpH\\x00R\\bsourceIp\\x12J\\n\" +\n\t\"\\ffilter_state\\x18\\x02 \\x01(\\v2%.envoy.type.v3.HashPolicy.FilterStateH\\x00R\\vfilterState\\x1a1\\n\" +\n\t\"\\bSourceIp:%\\x9aň\\x1e \\n\" +\n\t\"\\x1eenvoy.type.HashPolicy.SourceIp\\x1a(\\n\" +\n\t\"\\vFilterState\\x12\\x19\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tB\\a\\xfaB\\x04r\\x02\\x10\\x01R\\x03key:\\x1c\\x9aň\\x1e\\x17\\n\" +\n\t\"\\x15envoy.type.HashPolicyB\\x17\\n\" +\n\t\"\\x10policy_specifier\\x12\\x03\\xf8B\\x01Bu\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\x1bio.envoyproxy.envoy.type.v3B\\x0fHashPolicyProtoP\\x01Z;github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_v3_hash_policy_proto_rawDescOnce sync.Once\n\tfile_envoy_type_v3_hash_policy_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_v3_hash_policy_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_v3_hash_policy_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_v3_hash_policy_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_v3_hash_policy_proto_rawDesc), len(file_envoy_type_v3_hash_policy_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_v3_hash_policy_proto_rawDescData\n}\n\nvar file_envoy_type_v3_hash_policy_proto_msgTypes = make([]protoimpl.MessageInfo, 3)\nvar file_envoy_type_v3_hash_policy_proto_goTypes = []any{\n\t(*HashPolicy)(nil),             // 0: envoy.type.v3.HashPolicy\n\t(*HashPolicy_SourceIp)(nil),    // 1: envoy.type.v3.HashPolicy.SourceIp\n\t(*HashPolicy_FilterState)(nil), // 2: envoy.type.v3.HashPolicy.FilterState\n}\nvar file_envoy_type_v3_hash_policy_proto_depIdxs = []int32{\n\t1, // 0: envoy.type.v3.HashPolicy.source_ip:type_name -> envoy.type.v3.HashPolicy.SourceIp\n\t2, // 1: envoy.type.v3.HashPolicy.filter_state:type_name -> envoy.type.v3.HashPolicy.FilterState\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_v3_hash_policy_proto_init() }\nfunc file_envoy_type_v3_hash_policy_proto_init() {\n\tif File_envoy_type_v3_hash_policy_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_type_v3_hash_policy_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*HashPolicy_SourceIp_)(nil),\n\t\t(*HashPolicy_FilterState_)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_v3_hash_policy_proto_rawDesc), len(file_envoy_type_v3_hash_policy_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   3,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_v3_hash_policy_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_v3_hash_policy_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_v3_hash_policy_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_v3_hash_policy_proto = out.File\n\tfile_envoy_type_v3_hash_policy_proto_goTypes = nil\n\tfile_envoy_type_v3_hash_policy_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/hash_policy.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/v3/hash_policy.proto\n\npackage typev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on HashPolicy with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *HashPolicy) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HashPolicy with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in HashPolicyMultiError, or\n// nil if none found.\nfunc (m *HashPolicy) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HashPolicy) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofPolicySpecifierPresent := false\n\tswitch v := m.PolicySpecifier.(type) {\n\tcase *HashPolicy_SourceIp_:\n\t\tif v == nil {\n\t\t\terr := HashPolicyValidationError{\n\t\t\t\tfield:  \"PolicySpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPolicySpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetSourceIp()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HashPolicyValidationError{\n\t\t\t\t\t\tfield:  \"SourceIp\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HashPolicyValidationError{\n\t\t\t\t\t\tfield:  \"SourceIp\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetSourceIp()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HashPolicyValidationError{\n\t\t\t\t\tfield:  \"SourceIp\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *HashPolicy_FilterState_:\n\t\tif v == nil {\n\t\t\terr := HashPolicyValidationError{\n\t\t\t\tfield:  \"PolicySpecifier\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofPolicySpecifierPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetFilterState()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, HashPolicyValidationError{\n\t\t\t\t\t\tfield:  \"FilterState\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, HashPolicyValidationError{\n\t\t\t\t\t\tfield:  \"FilterState\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetFilterState()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn HashPolicyValidationError{\n\t\t\t\t\tfield:  \"FilterState\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofPolicySpecifierPresent {\n\t\terr := HashPolicyValidationError{\n\t\t\tfield:  \"PolicySpecifier\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HashPolicyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HashPolicyMultiError is an error wrapping multiple validation errors\n// returned by HashPolicy.ValidateAll() if the designated constraints aren't met.\ntype HashPolicyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HashPolicyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HashPolicyMultiError) AllErrors() []error { return m }\n\n// HashPolicyValidationError is the validation error returned by\n// HashPolicy.Validate if the designated constraints aren't met.\ntype HashPolicyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HashPolicyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HashPolicyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HashPolicyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HashPolicyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HashPolicyValidationError) ErrorName() string { return \"HashPolicyValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e HashPolicyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHashPolicy.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HashPolicyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HashPolicyValidationError{}\n\n// Validate checks the field values on HashPolicy_SourceIp with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HashPolicy_SourceIp) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HashPolicy_SourceIp with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HashPolicy_SourceIpMultiError, or nil if none found.\nfunc (m *HashPolicy_SourceIp) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HashPolicy_SourceIp) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif len(errors) > 0 {\n\t\treturn HashPolicy_SourceIpMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HashPolicy_SourceIpMultiError is an error wrapping multiple validation\n// errors returned by HashPolicy_SourceIp.ValidateAll() if the designated\n// constraints aren't met.\ntype HashPolicy_SourceIpMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HashPolicy_SourceIpMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HashPolicy_SourceIpMultiError) AllErrors() []error { return m }\n\n// HashPolicy_SourceIpValidationError is the validation error returned by\n// HashPolicy_SourceIp.Validate if the designated constraints aren't met.\ntype HashPolicy_SourceIpValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HashPolicy_SourceIpValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HashPolicy_SourceIpValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HashPolicy_SourceIpValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HashPolicy_SourceIpValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HashPolicy_SourceIpValidationError) ErrorName() string {\n\treturn \"HashPolicy_SourceIpValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HashPolicy_SourceIpValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHashPolicy_SourceIp.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HashPolicy_SourceIpValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HashPolicy_SourceIpValidationError{}\n\n// Validate checks the field values on HashPolicy_FilterState with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the first error encountered is returned, or nil if there are no violations.\nfunc (m *HashPolicy_FilterState) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HashPolicy_FilterState with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// HashPolicy_FilterStateMultiError, or nil if none found.\nfunc (m *HashPolicy_FilterState) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HashPolicy_FilterState) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif utf8.RuneCountInString(m.GetKey()) < 1 {\n\t\terr := HashPolicy_FilterStateValidationError{\n\t\t\tfield:  \"Key\",\n\t\t\treason: \"value length must be at least 1 runes\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HashPolicy_FilterStateMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HashPolicy_FilterStateMultiError is an error wrapping multiple validation\n// errors returned by HashPolicy_FilterState.ValidateAll() if the designated\n// constraints aren't met.\ntype HashPolicy_FilterStateMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HashPolicy_FilterStateMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HashPolicy_FilterStateMultiError) AllErrors() []error { return m }\n\n// HashPolicy_FilterStateValidationError is the validation error returned by\n// HashPolicy_FilterState.Validate if the designated constraints aren't met.\ntype HashPolicy_FilterStateValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HashPolicy_FilterStateValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HashPolicy_FilterStateValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HashPolicy_FilterStateValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HashPolicy_FilterStateValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HashPolicy_FilterStateValidationError) ErrorName() string {\n\treturn \"HashPolicy_FilterStateValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e HashPolicy_FilterStateValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHashPolicy_FilterState.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HashPolicy_FilterStateValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HashPolicy_FilterStateValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/hash_policy_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/v3/hash_policy.proto\n\npackage typev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *HashPolicy_SourceIp) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HashPolicy_SourceIp) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HashPolicy_SourceIp) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HashPolicy_FilterState) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HashPolicy_FilterState) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HashPolicy_FilterState) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HashPolicy) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HashPolicy) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HashPolicy) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.PolicySpecifier.(*HashPolicy_FilterState_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.PolicySpecifier.(*HashPolicy_SourceIp_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HashPolicy_SourceIp_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HashPolicy_SourceIp_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.SourceIp != nil {\n\t\tsize, err := m.SourceIp.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HashPolicy_FilterState_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HashPolicy_FilterState_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.FilterState != nil {\n\t\tsize, err := m.FilterState.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *HashPolicy_SourceIp) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HashPolicy_FilterState) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HashPolicy) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.PolicySpecifier.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HashPolicy_SourceIp_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.SourceIp != nil {\n\t\tl = m.SourceIp.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *HashPolicy_FilterState_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.FilterState != nil {\n\t\tl = m.FilterState.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/http.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/v3/http.proto\n\npackage typev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype CodecClientType int32\n\nconst (\n\tCodecClientType_HTTP1 CodecClientType = 0\n\tCodecClientType_HTTP2 CodecClientType = 1\n\t// [#not-implemented-hide:] QUIC implementation is not production ready yet. Use this enum with\n\t// caution to prevent accidental execution of QUIC code. I.e. `!= HTTP2` is no longer sufficient\n\t// to distinguish HTTP1 and HTTP2 traffic.\n\tCodecClientType_HTTP3 CodecClientType = 2\n)\n\n// Enum value maps for CodecClientType.\nvar (\n\tCodecClientType_name = map[int32]string{\n\t\t0: \"HTTP1\",\n\t\t1: \"HTTP2\",\n\t\t2: \"HTTP3\",\n\t}\n\tCodecClientType_value = map[string]int32{\n\t\t\"HTTP1\": 0,\n\t\t\"HTTP2\": 1,\n\t\t\"HTTP3\": 2,\n\t}\n)\n\nfunc (x CodecClientType) Enum() *CodecClientType {\n\tp := new(CodecClientType)\n\t*p = x\n\treturn p\n}\n\nfunc (x CodecClientType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (CodecClientType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_type_v3_http_proto_enumTypes[0].Descriptor()\n}\n\nfunc (CodecClientType) Type() protoreflect.EnumType {\n\treturn &file_envoy_type_v3_http_proto_enumTypes[0]\n}\n\nfunc (x CodecClientType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use CodecClientType.Descriptor instead.\nfunc (CodecClientType) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_http_proto_rawDescGZIP(), []int{0}\n}\n\nvar File_envoy_type_v3_http_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_v3_http_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x18envoy/type/v3/http.proto\\x12\\renvoy.type.v3\\x1a\\x1dudpa/annotations/status.proto*2\\n\" +\n\t\"\\x0fCodecClientType\\x12\\t\\n\" +\n\t\"\\x05HTTP1\\x10\\x00\\x12\\t\\n\" +\n\t\"\\x05HTTP2\\x10\\x01\\x12\\t\\n\" +\n\t\"\\x05HTTP3\\x10\\x02Bo\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\x1bio.envoyproxy.envoy.type.v3B\\tHttpProtoP\\x01Z;github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_v3_http_proto_rawDescOnce sync.Once\n\tfile_envoy_type_v3_http_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_v3_http_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_v3_http_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_v3_http_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_v3_http_proto_rawDesc), len(file_envoy_type_v3_http_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_v3_http_proto_rawDescData\n}\n\nvar file_envoy_type_v3_http_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_envoy_type_v3_http_proto_goTypes = []any{\n\t(CodecClientType)(0), // 0: envoy.type.v3.CodecClientType\n}\nvar file_envoy_type_v3_http_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_v3_http_proto_init() }\nfunc file_envoy_type_v3_http_proto_init() {\n\tif File_envoy_type_v3_http_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_v3_http_proto_rawDesc), len(file_envoy_type_v3_http_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_v3_http_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_v3_http_proto_depIdxs,\n\t\tEnumInfos:         file_envoy_type_v3_http_proto_enumTypes,\n\t}.Build()\n\tFile_envoy_type_v3_http_proto = out.File\n\tfile_envoy_type_v3_http_proto_goTypes = nil\n\tfile_envoy_type_v3_http_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/http.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/v3/http.proto\n\npackage typev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/http_status.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/v3/http_status.proto\n\npackage typev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// HTTP response codes supported in Envoy.\n// For more details: https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml\ntype StatusCode int32\n\nconst (\n\t// Empty - This code not part of the HTTP status code specification, but it is needed for proto\n\t// `enum` type.\n\tStatusCode_Empty StatusCode = 0\n\t// Continue - “100“ status code.\n\tStatusCode_Continue StatusCode = 100\n\t// OK - “200“ status code.\n\tStatusCode_OK StatusCode = 200\n\t// Created - “201“ status code.\n\tStatusCode_Created StatusCode = 201\n\t// Accepted - “202“ status code.\n\tStatusCode_Accepted StatusCode = 202\n\t// NonAuthoritativeInformation - “203“ status code.\n\tStatusCode_NonAuthoritativeInformation StatusCode = 203\n\t// NoContent - “204“ status code.\n\tStatusCode_NoContent StatusCode = 204\n\t// ResetContent - “205“ status code.\n\tStatusCode_ResetContent StatusCode = 205\n\t// PartialContent - “206“ status code.\n\tStatusCode_PartialContent StatusCode = 206\n\t// MultiStatus - “207“ status code.\n\tStatusCode_MultiStatus StatusCode = 207\n\t// AlreadyReported - “208“ status code.\n\tStatusCode_AlreadyReported StatusCode = 208\n\t// IMUsed - “226“ status code.\n\tStatusCode_IMUsed StatusCode = 226\n\t// MultipleChoices - “300“ status code.\n\tStatusCode_MultipleChoices StatusCode = 300\n\t// MovedPermanently - “301“ status code.\n\tStatusCode_MovedPermanently StatusCode = 301\n\t// Found - “302“ status code.\n\tStatusCode_Found StatusCode = 302\n\t// SeeOther - “303“ status code.\n\tStatusCode_SeeOther StatusCode = 303\n\t// NotModified - “304“ status code.\n\tStatusCode_NotModified StatusCode = 304\n\t// UseProxy - “305“ status code.\n\tStatusCode_UseProxy StatusCode = 305\n\t// TemporaryRedirect - “307“ status code.\n\tStatusCode_TemporaryRedirect StatusCode = 307\n\t// PermanentRedirect - “308“ status code.\n\tStatusCode_PermanentRedirect StatusCode = 308\n\t// BadRequest - “400“ status code.\n\tStatusCode_BadRequest StatusCode = 400\n\t// Unauthorized - “401“ status code.\n\tStatusCode_Unauthorized StatusCode = 401\n\t// PaymentRequired - “402“ status code.\n\tStatusCode_PaymentRequired StatusCode = 402\n\t// Forbidden - “403“ status code.\n\tStatusCode_Forbidden StatusCode = 403\n\t// NotFound - “404“ status code.\n\tStatusCode_NotFound StatusCode = 404\n\t// MethodNotAllowed - “405“ status code.\n\tStatusCode_MethodNotAllowed StatusCode = 405\n\t// NotAcceptable - “406“ status code.\n\tStatusCode_NotAcceptable StatusCode = 406\n\t// ProxyAuthenticationRequired - “407“ status code.\n\tStatusCode_ProxyAuthenticationRequired StatusCode = 407\n\t// RequestTimeout - “408“ status code.\n\tStatusCode_RequestTimeout StatusCode = 408\n\t// Conflict - “409“ status code.\n\tStatusCode_Conflict StatusCode = 409\n\t// Gone - “410“ status code.\n\tStatusCode_Gone StatusCode = 410\n\t// LengthRequired - “411“ status code.\n\tStatusCode_LengthRequired StatusCode = 411\n\t// PreconditionFailed - “412“ status code.\n\tStatusCode_PreconditionFailed StatusCode = 412\n\t// PayloadTooLarge - “413“ status code.\n\tStatusCode_PayloadTooLarge StatusCode = 413\n\t// URITooLong - “414“ status code.\n\tStatusCode_URITooLong StatusCode = 414\n\t// UnsupportedMediaType - “415“ status code.\n\tStatusCode_UnsupportedMediaType StatusCode = 415\n\t// RangeNotSatisfiable - “416“ status code.\n\tStatusCode_RangeNotSatisfiable StatusCode = 416\n\t// ExpectationFailed - “417“ status code.\n\tStatusCode_ExpectationFailed StatusCode = 417\n\t// MisdirectedRequest - “421“ status code.\n\tStatusCode_MisdirectedRequest StatusCode = 421\n\t// UnprocessableEntity - “422“ status code.\n\tStatusCode_UnprocessableEntity StatusCode = 422\n\t// Locked - “423“ status code.\n\tStatusCode_Locked StatusCode = 423\n\t// FailedDependency - “424“ status code.\n\tStatusCode_FailedDependency StatusCode = 424\n\t// UpgradeRequired - “426“ status code.\n\tStatusCode_UpgradeRequired StatusCode = 426\n\t// PreconditionRequired - “428“ status code.\n\tStatusCode_PreconditionRequired StatusCode = 428\n\t// TooManyRequests - “429“ status code.\n\tStatusCode_TooManyRequests StatusCode = 429\n\t// RequestHeaderFieldsTooLarge - “431“ status code.\n\tStatusCode_RequestHeaderFieldsTooLarge StatusCode = 431\n\t// InternalServerError - “500“ status code.\n\tStatusCode_InternalServerError StatusCode = 500\n\t// NotImplemented - “501“ status code.\n\tStatusCode_NotImplemented StatusCode = 501\n\t// BadGateway - “502“ status code.\n\tStatusCode_BadGateway StatusCode = 502\n\t// ServiceUnavailable - “503“ status code.\n\tStatusCode_ServiceUnavailable StatusCode = 503\n\t// GatewayTimeout - “504“ status code.\n\tStatusCode_GatewayTimeout StatusCode = 504\n\t// HTTPVersionNotSupported - “505“ status code.\n\tStatusCode_HTTPVersionNotSupported StatusCode = 505\n\t// VariantAlsoNegotiates - “506“ status code.\n\tStatusCode_VariantAlsoNegotiates StatusCode = 506\n\t// InsufficientStorage - “507“ status code.\n\tStatusCode_InsufficientStorage StatusCode = 507\n\t// LoopDetected - “508“ status code.\n\tStatusCode_LoopDetected StatusCode = 508\n\t// NotExtended - “510“ status code.\n\tStatusCode_NotExtended StatusCode = 510\n\t// NetworkAuthenticationRequired - “511“ status code.\n\tStatusCode_NetworkAuthenticationRequired StatusCode = 511\n)\n\n// Enum value maps for StatusCode.\nvar (\n\tStatusCode_name = map[int32]string{\n\t\t0:   \"Empty\",\n\t\t100: \"Continue\",\n\t\t200: \"OK\",\n\t\t201: \"Created\",\n\t\t202: \"Accepted\",\n\t\t203: \"NonAuthoritativeInformation\",\n\t\t204: \"NoContent\",\n\t\t205: \"ResetContent\",\n\t\t206: \"PartialContent\",\n\t\t207: \"MultiStatus\",\n\t\t208: \"AlreadyReported\",\n\t\t226: \"IMUsed\",\n\t\t300: \"MultipleChoices\",\n\t\t301: \"MovedPermanently\",\n\t\t302: \"Found\",\n\t\t303: \"SeeOther\",\n\t\t304: \"NotModified\",\n\t\t305: \"UseProxy\",\n\t\t307: \"TemporaryRedirect\",\n\t\t308: \"PermanentRedirect\",\n\t\t400: \"BadRequest\",\n\t\t401: \"Unauthorized\",\n\t\t402: \"PaymentRequired\",\n\t\t403: \"Forbidden\",\n\t\t404: \"NotFound\",\n\t\t405: \"MethodNotAllowed\",\n\t\t406: \"NotAcceptable\",\n\t\t407: \"ProxyAuthenticationRequired\",\n\t\t408: \"RequestTimeout\",\n\t\t409: \"Conflict\",\n\t\t410: \"Gone\",\n\t\t411: \"LengthRequired\",\n\t\t412: \"PreconditionFailed\",\n\t\t413: \"PayloadTooLarge\",\n\t\t414: \"URITooLong\",\n\t\t415: \"UnsupportedMediaType\",\n\t\t416: \"RangeNotSatisfiable\",\n\t\t417: \"ExpectationFailed\",\n\t\t421: \"MisdirectedRequest\",\n\t\t422: \"UnprocessableEntity\",\n\t\t423: \"Locked\",\n\t\t424: \"FailedDependency\",\n\t\t426: \"UpgradeRequired\",\n\t\t428: \"PreconditionRequired\",\n\t\t429: \"TooManyRequests\",\n\t\t431: \"RequestHeaderFieldsTooLarge\",\n\t\t500: \"InternalServerError\",\n\t\t501: \"NotImplemented\",\n\t\t502: \"BadGateway\",\n\t\t503: \"ServiceUnavailable\",\n\t\t504: \"GatewayTimeout\",\n\t\t505: \"HTTPVersionNotSupported\",\n\t\t506: \"VariantAlsoNegotiates\",\n\t\t507: \"InsufficientStorage\",\n\t\t508: \"LoopDetected\",\n\t\t510: \"NotExtended\",\n\t\t511: \"NetworkAuthenticationRequired\",\n\t}\n\tStatusCode_value = map[string]int32{\n\t\t\"Empty\":                         0,\n\t\t\"Continue\":                      100,\n\t\t\"OK\":                            200,\n\t\t\"Created\":                       201,\n\t\t\"Accepted\":                      202,\n\t\t\"NonAuthoritativeInformation\":   203,\n\t\t\"NoContent\":                     204,\n\t\t\"ResetContent\":                  205,\n\t\t\"PartialContent\":                206,\n\t\t\"MultiStatus\":                   207,\n\t\t\"AlreadyReported\":               208,\n\t\t\"IMUsed\":                        226,\n\t\t\"MultipleChoices\":               300,\n\t\t\"MovedPermanently\":              301,\n\t\t\"Found\":                         302,\n\t\t\"SeeOther\":                      303,\n\t\t\"NotModified\":                   304,\n\t\t\"UseProxy\":                      305,\n\t\t\"TemporaryRedirect\":             307,\n\t\t\"PermanentRedirect\":             308,\n\t\t\"BadRequest\":                    400,\n\t\t\"Unauthorized\":                  401,\n\t\t\"PaymentRequired\":               402,\n\t\t\"Forbidden\":                     403,\n\t\t\"NotFound\":                      404,\n\t\t\"MethodNotAllowed\":              405,\n\t\t\"NotAcceptable\":                 406,\n\t\t\"ProxyAuthenticationRequired\":   407,\n\t\t\"RequestTimeout\":                408,\n\t\t\"Conflict\":                      409,\n\t\t\"Gone\":                          410,\n\t\t\"LengthRequired\":                411,\n\t\t\"PreconditionFailed\":            412,\n\t\t\"PayloadTooLarge\":               413,\n\t\t\"URITooLong\":                    414,\n\t\t\"UnsupportedMediaType\":          415,\n\t\t\"RangeNotSatisfiable\":           416,\n\t\t\"ExpectationFailed\":             417,\n\t\t\"MisdirectedRequest\":            421,\n\t\t\"UnprocessableEntity\":           422,\n\t\t\"Locked\":                        423,\n\t\t\"FailedDependency\":              424,\n\t\t\"UpgradeRequired\":               426,\n\t\t\"PreconditionRequired\":          428,\n\t\t\"TooManyRequests\":               429,\n\t\t\"RequestHeaderFieldsTooLarge\":   431,\n\t\t\"InternalServerError\":           500,\n\t\t\"NotImplemented\":                501,\n\t\t\"BadGateway\":                    502,\n\t\t\"ServiceUnavailable\":            503,\n\t\t\"GatewayTimeout\":                504,\n\t\t\"HTTPVersionNotSupported\":       505,\n\t\t\"VariantAlsoNegotiates\":         506,\n\t\t\"InsufficientStorage\":           507,\n\t\t\"LoopDetected\":                  508,\n\t\t\"NotExtended\":                   510,\n\t\t\"NetworkAuthenticationRequired\": 511,\n\t}\n)\n\nfunc (x StatusCode) Enum() *StatusCode {\n\tp := new(StatusCode)\n\t*p = x\n\treturn p\n}\n\nfunc (x StatusCode) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (StatusCode) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_type_v3_http_status_proto_enumTypes[0].Descriptor()\n}\n\nfunc (StatusCode) Type() protoreflect.EnumType {\n\treturn &file_envoy_type_v3_http_status_proto_enumTypes[0]\n}\n\nfunc (x StatusCode) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use StatusCode.Descriptor instead.\nfunc (StatusCode) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_http_status_proto_rawDescGZIP(), []int{0}\n}\n\n// HTTP status.\ntype HttpStatus struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Supplies HTTP response code.\n\tCode          StatusCode `protobuf:\"varint,1,opt,name=code,proto3,enum=envoy.type.v3.StatusCode\" json:\"code,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *HttpStatus) Reset() {\n\t*x = HttpStatus{}\n\tmi := &file_envoy_type_v3_http_status_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *HttpStatus) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpStatus) ProtoMessage() {}\n\nfunc (x *HttpStatus) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_v3_http_status_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpStatus.ProtoReflect.Descriptor instead.\nfunc (*HttpStatus) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_http_status_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *HttpStatus) GetCode() StatusCode {\n\tif x != nil {\n\t\treturn x.Code\n\t}\n\treturn StatusCode_Empty\n}\n\nvar File_envoy_type_v3_http_status_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_v3_http_status_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1fenvoy/type/v3/http_status.proto\\x12\\renvoy.type.v3\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"e\\n\" +\n\t\"\\n\" +\n\t\"HttpStatus\\x129\\n\" +\n\t\"\\x04code\\x18\\x01 \\x01(\\x0e2\\x19.envoy.type.v3.StatusCodeB\\n\" +\n\t\"\\xfaB\\a\\x82\\x01\\x04\\x10\\x01 \\x00R\\x04code:\\x1c\\x9aň\\x1e\\x17\\n\" +\n\t\"\\x15envoy.type.HttpStatus*\\xb5\\t\\n\" +\n\t\"\\n\" +\n\t\"StatusCode\\x12\\t\\n\" +\n\t\"\\x05Empty\\x10\\x00\\x12\\f\\n\" +\n\t\"\\bContinue\\x10d\\x12\\a\\n\" +\n\t\"\\x02OK\\x10\\xc8\\x01\\x12\\f\\n\" +\n\t\"\\aCreated\\x10\\xc9\\x01\\x12\\r\\n\" +\n\t\"\\bAccepted\\x10\\xca\\x01\\x12 \\n\" +\n\t\"\\x1bNonAuthoritativeInformation\\x10\\xcb\\x01\\x12\\x0e\\n\" +\n\t\"\\tNoContent\\x10\\xcc\\x01\\x12\\x11\\n\" +\n\t\"\\fResetContent\\x10\\xcd\\x01\\x12\\x13\\n\" +\n\t\"\\x0ePartialContent\\x10\\xce\\x01\\x12\\x10\\n\" +\n\t\"\\vMultiStatus\\x10\\xcf\\x01\\x12\\x14\\n\" +\n\t\"\\x0fAlreadyReported\\x10\\xd0\\x01\\x12\\v\\n\" +\n\t\"\\x06IMUsed\\x10\\xe2\\x01\\x12\\x14\\n\" +\n\t\"\\x0fMultipleChoices\\x10\\xac\\x02\\x12\\x15\\n\" +\n\t\"\\x10MovedPermanently\\x10\\xad\\x02\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x05Found\\x10\\xae\\x02\\x12\\r\\n\" +\n\t\"\\bSeeOther\\x10\\xaf\\x02\\x12\\x10\\n\" +\n\t\"\\vNotModified\\x10\\xb0\\x02\\x12\\r\\n\" +\n\t\"\\bUseProxy\\x10\\xb1\\x02\\x12\\x16\\n\" +\n\t\"\\x11TemporaryRedirect\\x10\\xb3\\x02\\x12\\x16\\n\" +\n\t\"\\x11PermanentRedirect\\x10\\xb4\\x02\\x12\\x0f\\n\" +\n\t\"\\n\" +\n\t\"BadRequest\\x10\\x90\\x03\\x12\\x11\\n\" +\n\t\"\\fUnauthorized\\x10\\x91\\x03\\x12\\x14\\n\" +\n\t\"\\x0fPaymentRequired\\x10\\x92\\x03\\x12\\x0e\\n\" +\n\t\"\\tForbidden\\x10\\x93\\x03\\x12\\r\\n\" +\n\t\"\\bNotFound\\x10\\x94\\x03\\x12\\x15\\n\" +\n\t\"\\x10MethodNotAllowed\\x10\\x95\\x03\\x12\\x12\\n\" +\n\t\"\\rNotAcceptable\\x10\\x96\\x03\\x12 \\n\" +\n\t\"\\x1bProxyAuthenticationRequired\\x10\\x97\\x03\\x12\\x13\\n\" +\n\t\"\\x0eRequestTimeout\\x10\\x98\\x03\\x12\\r\\n\" +\n\t\"\\bConflict\\x10\\x99\\x03\\x12\\t\\n\" +\n\t\"\\x04Gone\\x10\\x9a\\x03\\x12\\x13\\n\" +\n\t\"\\x0eLengthRequired\\x10\\x9b\\x03\\x12\\x17\\n\" +\n\t\"\\x12PreconditionFailed\\x10\\x9c\\x03\\x12\\x14\\n\" +\n\t\"\\x0fPayloadTooLarge\\x10\\x9d\\x03\\x12\\x0f\\n\" +\n\t\"\\n\" +\n\t\"URITooLong\\x10\\x9e\\x03\\x12\\x19\\n\" +\n\t\"\\x14UnsupportedMediaType\\x10\\x9f\\x03\\x12\\x18\\n\" +\n\t\"\\x13RangeNotSatisfiable\\x10\\xa0\\x03\\x12\\x16\\n\" +\n\t\"\\x11ExpectationFailed\\x10\\xa1\\x03\\x12\\x17\\n\" +\n\t\"\\x12MisdirectedRequest\\x10\\xa5\\x03\\x12\\x18\\n\" +\n\t\"\\x13UnprocessableEntity\\x10\\xa6\\x03\\x12\\v\\n\" +\n\t\"\\x06Locked\\x10\\xa7\\x03\\x12\\x15\\n\" +\n\t\"\\x10FailedDependency\\x10\\xa8\\x03\\x12\\x14\\n\" +\n\t\"\\x0fUpgradeRequired\\x10\\xaa\\x03\\x12\\x19\\n\" +\n\t\"\\x14PreconditionRequired\\x10\\xac\\x03\\x12\\x14\\n\" +\n\t\"\\x0fTooManyRequests\\x10\\xad\\x03\\x12 \\n\" +\n\t\"\\x1bRequestHeaderFieldsTooLarge\\x10\\xaf\\x03\\x12\\x18\\n\" +\n\t\"\\x13InternalServerError\\x10\\xf4\\x03\\x12\\x13\\n\" +\n\t\"\\x0eNotImplemented\\x10\\xf5\\x03\\x12\\x0f\\n\" +\n\t\"\\n\" +\n\t\"BadGateway\\x10\\xf6\\x03\\x12\\x17\\n\" +\n\t\"\\x12ServiceUnavailable\\x10\\xf7\\x03\\x12\\x13\\n\" +\n\t\"\\x0eGatewayTimeout\\x10\\xf8\\x03\\x12\\x1c\\n\" +\n\t\"\\x17HTTPVersionNotSupported\\x10\\xf9\\x03\\x12\\x1a\\n\" +\n\t\"\\x15VariantAlsoNegotiates\\x10\\xfa\\x03\\x12\\x18\\n\" +\n\t\"\\x13InsufficientStorage\\x10\\xfb\\x03\\x12\\x11\\n\" +\n\t\"\\fLoopDetected\\x10\\xfc\\x03\\x12\\x10\\n\" +\n\t\"\\vNotExtended\\x10\\xfe\\x03\\x12\\\"\\n\" +\n\t\"\\x1dNetworkAuthenticationRequired\\x10\\xff\\x03Bu\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\x1bio.envoyproxy.envoy.type.v3B\\x0fHttpStatusProtoP\\x01Z;github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_v3_http_status_proto_rawDescOnce sync.Once\n\tfile_envoy_type_v3_http_status_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_v3_http_status_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_v3_http_status_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_v3_http_status_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_v3_http_status_proto_rawDesc), len(file_envoy_type_v3_http_status_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_v3_http_status_proto_rawDescData\n}\n\nvar file_envoy_type_v3_http_status_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_envoy_type_v3_http_status_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_type_v3_http_status_proto_goTypes = []any{\n\t(StatusCode)(0),    // 0: envoy.type.v3.StatusCode\n\t(*HttpStatus)(nil), // 1: envoy.type.v3.HttpStatus\n}\nvar file_envoy_type_v3_http_status_proto_depIdxs = []int32{\n\t0, // 0: envoy.type.v3.HttpStatus.code:type_name -> envoy.type.v3.StatusCode\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_v3_http_status_proto_init() }\nfunc file_envoy_type_v3_http_status_proto_init() {\n\tif File_envoy_type_v3_http_status_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_v3_http_status_proto_rawDesc), len(file_envoy_type_v3_http_status_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_v3_http_status_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_v3_http_status_proto_depIdxs,\n\t\tEnumInfos:         file_envoy_type_v3_http_status_proto_enumTypes,\n\t\tMessageInfos:      file_envoy_type_v3_http_status_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_v3_http_status_proto = out.File\n\tfile_envoy_type_v3_http_status_proto_goTypes = nil\n\tfile_envoy_type_v3_http_status_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/http_status.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/v3/http_status.proto\n\npackage typev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on HttpStatus with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *HttpStatus) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on HttpStatus with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in HttpStatusMultiError, or\n// nil if none found.\nfunc (m *HttpStatus) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *HttpStatus) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif _, ok := _HttpStatus_Code_NotInLookup[m.GetCode()]; ok {\n\t\terr := HttpStatusValidationError{\n\t\t\tfield:  \"Code\",\n\t\t\treason: \"value must not be in list [Empty]\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif _, ok := StatusCode_name[int32(m.GetCode())]; !ok {\n\t\terr := HttpStatusValidationError{\n\t\t\tfield:  \"Code\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn HttpStatusMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// HttpStatusMultiError is an error wrapping multiple validation errors\n// returned by HttpStatus.ValidateAll() if the designated constraints aren't met.\ntype HttpStatusMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m HttpStatusMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m HttpStatusMultiError) AllErrors() []error { return m }\n\n// HttpStatusValidationError is the validation error returned by\n// HttpStatus.Validate if the designated constraints aren't met.\ntype HttpStatusValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e HttpStatusValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e HttpStatusValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e HttpStatusValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e HttpStatusValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e HttpStatusValidationError) ErrorName() string { return \"HttpStatusValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e HttpStatusValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sHttpStatus.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = HttpStatusValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = HttpStatusValidationError{}\n\nvar _HttpStatus_Code_NotInLookup = map[StatusCode]struct{}{\n\t0: {},\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/http_status_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/v3/http_status.proto\n\npackage typev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *HttpStatus) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HttpStatus) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *HttpStatus) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Code != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Code))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HttpStatus) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Code != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Code))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/percent.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/v3/percent.proto\n\npackage typev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Fraction percentages support several fixed denominator values.\ntype FractionalPercent_DenominatorType int32\n\nconst (\n\t// 100.\n\t//\n\t// **Example**: 1/100 = 1%.\n\tFractionalPercent_HUNDRED FractionalPercent_DenominatorType = 0\n\t// 10,000.\n\t//\n\t// **Example**: 1/10000 = 0.01%.\n\tFractionalPercent_TEN_THOUSAND FractionalPercent_DenominatorType = 1\n\t// 1,000,000.\n\t//\n\t// **Example**: 1/1000000 = 0.0001%.\n\tFractionalPercent_MILLION FractionalPercent_DenominatorType = 2\n)\n\n// Enum value maps for FractionalPercent_DenominatorType.\nvar (\n\tFractionalPercent_DenominatorType_name = map[int32]string{\n\t\t0: \"HUNDRED\",\n\t\t1: \"TEN_THOUSAND\",\n\t\t2: \"MILLION\",\n\t}\n\tFractionalPercent_DenominatorType_value = map[string]int32{\n\t\t\"HUNDRED\":      0,\n\t\t\"TEN_THOUSAND\": 1,\n\t\t\"MILLION\":      2,\n\t}\n)\n\nfunc (x FractionalPercent_DenominatorType) Enum() *FractionalPercent_DenominatorType {\n\tp := new(FractionalPercent_DenominatorType)\n\t*p = x\n\treturn p\n}\n\nfunc (x FractionalPercent_DenominatorType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FractionalPercent_DenominatorType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_type_v3_percent_proto_enumTypes[0].Descriptor()\n}\n\nfunc (FractionalPercent_DenominatorType) Type() protoreflect.EnumType {\n\treturn &file_envoy_type_v3_percent_proto_enumTypes[0]\n}\n\nfunc (x FractionalPercent_DenominatorType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use FractionalPercent_DenominatorType.Descriptor instead.\nfunc (FractionalPercent_DenominatorType) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_percent_proto_rawDescGZIP(), []int{1, 0}\n}\n\n// Identifies a percentage, in the range [0.0, 100.0].\ntype Percent struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tValue         float64                `protobuf:\"fixed64,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Percent) Reset() {\n\t*x = Percent{}\n\tmi := &file_envoy_type_v3_percent_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Percent) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Percent) ProtoMessage() {}\n\nfunc (x *Percent) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_v3_percent_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Percent.ProtoReflect.Descriptor instead.\nfunc (*Percent) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_percent_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Percent) GetValue() float64 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\n// A fractional percentage is used in cases in which for performance reasons performing floating\n// point to integer conversions during randomness calculations is undesirable. The message includes\n// both a numerator and denominator that together determine the final fractional value.\n//\n// * **Example**: 1/100 = 1%.\n// * **Example**: 3/10000 = 0.03%.\ntype FractionalPercent struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Specifies the numerator. Defaults to 0.\n\tNumerator uint32 `protobuf:\"varint,1,opt,name=numerator,proto3\" json:\"numerator,omitempty\"`\n\t// Specifies the denominator. If the denominator specified is less than the numerator, the final\n\t// fractional percentage is capped at 1 (100%).\n\tDenominator   FractionalPercent_DenominatorType `protobuf:\"varint,2,opt,name=denominator,proto3,enum=envoy.type.v3.FractionalPercent_DenominatorType\" json:\"denominator,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *FractionalPercent) Reset() {\n\t*x = FractionalPercent{}\n\tmi := &file_envoy_type_v3_percent_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FractionalPercent) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FractionalPercent) ProtoMessage() {}\n\nfunc (x *FractionalPercent) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_v3_percent_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FractionalPercent.ProtoReflect.Descriptor instead.\nfunc (*FractionalPercent) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_percent_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *FractionalPercent) GetNumerator() uint32 {\n\tif x != nil {\n\t\treturn x.Numerator\n\t}\n\treturn 0\n}\n\nfunc (x *FractionalPercent) GetDenominator() FractionalPercent_DenominatorType {\n\tif x != nil {\n\t\treturn x.Denominator\n\t}\n\treturn FractionalPercent_HUNDRED\n}\n\nvar File_envoy_type_v3_percent_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_v3_percent_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1benvoy/type/v3/percent.proto\\x12\\renvoy.type.v3\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"S\\n\" +\n\t\"\\aPercent\\x12-\\n\" +\n\t\"\\x05value\\x18\\x01 \\x01(\\x01B\\x17\\xfaB\\x14\\x12\\x12\\x19\\x00\\x00\\x00\\x00\\x00\\x00Y@)\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00R\\x05value:\\x19\\x9aň\\x1e\\x14\\n\" +\n\t\"\\x12envoy.type.Percent\\\"\\xf3\\x01\\n\" +\n\t\"\\x11FractionalPercent\\x12\\x1c\\n\" +\n\t\"\\tnumerator\\x18\\x01 \\x01(\\rR\\tnumerator\\x12\\\\\\n\" +\n\t\"\\vdenominator\\x18\\x02 \\x01(\\x0e20.envoy.type.v3.FractionalPercent.DenominatorTypeB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\vdenominator\\\"=\\n\" +\n\t\"\\x0fDenominatorType\\x12\\v\\n\" +\n\t\"\\aHUNDRED\\x10\\x00\\x12\\x10\\n\" +\n\t\"\\fTEN_THOUSAND\\x10\\x01\\x12\\v\\n\" +\n\t\"\\aMILLION\\x10\\x02:#\\x9aň\\x1e\\x1e\\n\" +\n\t\"\\x1cenvoy.type.FractionalPercentBr\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\x1bio.envoyproxy.envoy.type.v3B\\fPercentProtoP\\x01Z;github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_v3_percent_proto_rawDescOnce sync.Once\n\tfile_envoy_type_v3_percent_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_v3_percent_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_v3_percent_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_v3_percent_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_v3_percent_proto_rawDesc), len(file_envoy_type_v3_percent_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_v3_percent_proto_rawDescData\n}\n\nvar file_envoy_type_v3_percent_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_envoy_type_v3_percent_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_envoy_type_v3_percent_proto_goTypes = []any{\n\t(FractionalPercent_DenominatorType)(0), // 0: envoy.type.v3.FractionalPercent.DenominatorType\n\t(*Percent)(nil),                        // 1: envoy.type.v3.Percent\n\t(*FractionalPercent)(nil),              // 2: envoy.type.v3.FractionalPercent\n}\nvar file_envoy_type_v3_percent_proto_depIdxs = []int32{\n\t0, // 0: envoy.type.v3.FractionalPercent.denominator:type_name -> envoy.type.v3.FractionalPercent.DenominatorType\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_v3_percent_proto_init() }\nfunc file_envoy_type_v3_percent_proto_init() {\n\tif File_envoy_type_v3_percent_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_v3_percent_proto_rawDesc), len(file_envoy_type_v3_percent_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_v3_percent_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_v3_percent_proto_depIdxs,\n\t\tEnumInfos:         file_envoy_type_v3_percent_proto_enumTypes,\n\t\tMessageInfos:      file_envoy_type_v3_percent_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_v3_percent_proto = out.File\n\tfile_envoy_type_v3_percent_proto_goTypes = nil\n\tfile_envoy_type_v3_percent_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/percent.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/v3/percent.proto\n\npackage typev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on Percent with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Percent) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Percent with the rules defined in the\n// proto definition for this message. If any rules are violated, the result is\n// a list of violation errors wrapped in PercentMultiError, or nil if none found.\nfunc (m *Percent) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Percent) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif val := m.GetValue(); val < 0 || val > 100 {\n\t\terr := PercentValidationError{\n\t\t\tfield:  \"Value\",\n\t\t\treason: \"value must be inside range [0, 100]\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn PercentMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// PercentMultiError is an error wrapping multiple validation errors returned\n// by Percent.ValidateAll() if the designated constraints aren't met.\ntype PercentMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m PercentMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m PercentMultiError) AllErrors() []error { return m }\n\n// PercentValidationError is the validation error returned by Percent.Validate\n// if the designated constraints aren't met.\ntype PercentValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e PercentValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e PercentValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e PercentValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e PercentValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e PercentValidationError) ErrorName() string { return \"PercentValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e PercentValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sPercent.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = PercentValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = PercentValidationError{}\n\n// Validate checks the field values on FractionalPercent with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *FractionalPercent) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on FractionalPercent with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// FractionalPercentMultiError, or nil if none found.\nfunc (m *FractionalPercent) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *FractionalPercent) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Numerator\n\n\tif _, ok := FractionalPercent_DenominatorType_name[int32(m.GetDenominator())]; !ok {\n\t\terr := FractionalPercentValidationError{\n\t\t\tfield:  \"Denominator\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn FractionalPercentMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// FractionalPercentMultiError is an error wrapping multiple validation errors\n// returned by FractionalPercent.ValidateAll() if the designated constraints\n// aren't met.\ntype FractionalPercentMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m FractionalPercentMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m FractionalPercentMultiError) AllErrors() []error { return m }\n\n// FractionalPercentValidationError is the validation error returned by\n// FractionalPercent.Validate if the designated constraints aren't met.\ntype FractionalPercentValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e FractionalPercentValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e FractionalPercentValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e FractionalPercentValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e FractionalPercentValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e FractionalPercentValidationError) ErrorName() string {\n\treturn \"FractionalPercentValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e FractionalPercentValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sFractionalPercent.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = FractionalPercentValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = FractionalPercentValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/percent_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/v3/percent.proto\n\npackage typev3\n\nimport (\n\tbinary \"encoding/binary\"\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tmath \"math\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *Percent) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Percent) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Percent) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Value != 0 {\n\t\ti -= 8\n\t\tbinary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Value))))\n\t\ti--\n\t\tdAtA[i] = 0x9\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *FractionalPercent) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *FractionalPercent) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *FractionalPercent) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Denominator != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Denominator))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Numerator != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Numerator))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Percent) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\tn += 9\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *FractionalPercent) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Numerator != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Numerator))\n\t}\n\tif m.Denominator != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Denominator))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/range.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/v3/range.proto\n\npackage typev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Specifies the int64 start and end of the range using half-open interval semantics [start,\n// end).\ntype Int64Range struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// start of the range (inclusive)\n\tStart int64 `protobuf:\"varint,1,opt,name=start,proto3\" json:\"start,omitempty\"`\n\t// end of the range (exclusive)\n\tEnd           int64 `protobuf:\"varint,2,opt,name=end,proto3\" json:\"end,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Int64Range) Reset() {\n\t*x = Int64Range{}\n\tmi := &file_envoy_type_v3_range_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Int64Range) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Int64Range) ProtoMessage() {}\n\nfunc (x *Int64Range) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_v3_range_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Int64Range.ProtoReflect.Descriptor instead.\nfunc (*Int64Range) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_range_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Int64Range) GetStart() int64 {\n\tif x != nil {\n\t\treturn x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *Int64Range) GetEnd() int64 {\n\tif x != nil {\n\t\treturn x.End\n\t}\n\treturn 0\n}\n\n// Specifies the int32 start and end of the range using half-open interval semantics [start,\n// end).\ntype Int32Range struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// start of the range (inclusive)\n\tStart int32 `protobuf:\"varint,1,opt,name=start,proto3\" json:\"start,omitempty\"`\n\t// end of the range (exclusive)\n\tEnd           int32 `protobuf:\"varint,2,opt,name=end,proto3\" json:\"end,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Int32Range) Reset() {\n\t*x = Int32Range{}\n\tmi := &file_envoy_type_v3_range_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Int32Range) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Int32Range) ProtoMessage() {}\n\nfunc (x *Int32Range) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_v3_range_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Int32Range.ProtoReflect.Descriptor instead.\nfunc (*Int32Range) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_range_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *Int32Range) GetStart() int32 {\n\tif x != nil {\n\t\treturn x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *Int32Range) GetEnd() int32 {\n\tif x != nil {\n\t\treturn x.End\n\t}\n\treturn 0\n}\n\n// Specifies the double start and end of the range using half-open interval semantics [start,\n// end).\ntype DoubleRange struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// start of the range (inclusive)\n\tStart float64 `protobuf:\"fixed64,1,opt,name=start,proto3\" json:\"start,omitempty\"`\n\t// end of the range (exclusive)\n\tEnd           float64 `protobuf:\"fixed64,2,opt,name=end,proto3\" json:\"end,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DoubleRange) Reset() {\n\t*x = DoubleRange{}\n\tmi := &file_envoy_type_v3_range_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DoubleRange) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DoubleRange) ProtoMessage() {}\n\nfunc (x *DoubleRange) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_v3_range_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DoubleRange.ProtoReflect.Descriptor instead.\nfunc (*DoubleRange) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_range_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *DoubleRange) GetStart() float64 {\n\tif x != nil {\n\t\treturn x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *DoubleRange) GetEnd() float64 {\n\tif x != nil {\n\t\treturn x.End\n\t}\n\treturn 0\n}\n\nvar File_envoy_type_v3_range_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_v3_range_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x19envoy/type/v3/range.proto\\x12\\renvoy.type.v3\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\\"R\\n\" +\n\t\"\\n\" +\n\t\"Int64Range\\x12\\x14\\n\" +\n\t\"\\x05start\\x18\\x01 \\x01(\\x03R\\x05start\\x12\\x10\\n\" +\n\t\"\\x03end\\x18\\x02 \\x01(\\x03R\\x03end:\\x1c\\x9aň\\x1e\\x17\\n\" +\n\t\"\\x15envoy.type.Int64Range\\\"R\\n\" +\n\t\"\\n\" +\n\t\"Int32Range\\x12\\x14\\n\" +\n\t\"\\x05start\\x18\\x01 \\x01(\\x05R\\x05start\\x12\\x10\\n\" +\n\t\"\\x03end\\x18\\x02 \\x01(\\x05R\\x03end:\\x1c\\x9aň\\x1e\\x17\\n\" +\n\t\"\\x15envoy.type.Int32Range\\\"T\\n\" +\n\t\"\\vDoubleRange\\x12\\x14\\n\" +\n\t\"\\x05start\\x18\\x01 \\x01(\\x01R\\x05start\\x12\\x10\\n\" +\n\t\"\\x03end\\x18\\x02 \\x01(\\x01R\\x03end:\\x1d\\x9aň\\x1e\\x18\\n\" +\n\t\"\\x16envoy.type.DoubleRangeBp\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\x1bio.envoyproxy.envoy.type.v3B\\n\" +\n\t\"RangeProtoP\\x01Z;github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_v3_range_proto_rawDescOnce sync.Once\n\tfile_envoy_type_v3_range_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_v3_range_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_v3_range_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_v3_range_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_v3_range_proto_rawDesc), len(file_envoy_type_v3_range_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_v3_range_proto_rawDescData\n}\n\nvar file_envoy_type_v3_range_proto_msgTypes = make([]protoimpl.MessageInfo, 3)\nvar file_envoy_type_v3_range_proto_goTypes = []any{\n\t(*Int64Range)(nil),  // 0: envoy.type.v3.Int64Range\n\t(*Int32Range)(nil),  // 1: envoy.type.v3.Int32Range\n\t(*DoubleRange)(nil), // 2: envoy.type.v3.DoubleRange\n}\nvar file_envoy_type_v3_range_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_v3_range_proto_init() }\nfunc file_envoy_type_v3_range_proto_init() {\n\tif File_envoy_type_v3_range_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_v3_range_proto_rawDesc), len(file_envoy_type_v3_range_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   3,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_v3_range_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_v3_range_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_v3_range_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_v3_range_proto = out.File\n\tfile_envoy_type_v3_range_proto_goTypes = nil\n\tfile_envoy_type_v3_range_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/range.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/v3/range.proto\n\npackage typev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on Int64Range with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Int64Range) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Int64Range with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in Int64RangeMultiError, or\n// nil if none found.\nfunc (m *Int64Range) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Int64Range) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Start\n\n\t// no validation rules for End\n\n\tif len(errors) > 0 {\n\t\treturn Int64RangeMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Int64RangeMultiError is an error wrapping multiple validation errors\n// returned by Int64Range.ValidateAll() if the designated constraints aren't met.\ntype Int64RangeMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Int64RangeMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Int64RangeMultiError) AllErrors() []error { return m }\n\n// Int64RangeValidationError is the validation error returned by\n// Int64Range.Validate if the designated constraints aren't met.\ntype Int64RangeValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Int64RangeValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Int64RangeValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Int64RangeValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Int64RangeValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Int64RangeValidationError) ErrorName() string { return \"Int64RangeValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e Int64RangeValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sInt64Range.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Int64RangeValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Int64RangeValidationError{}\n\n// Validate checks the field values on Int32Range with the rules defined in the\n// proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *Int32Range) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on Int32Range with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in Int32RangeMultiError, or\n// nil if none found.\nfunc (m *Int32Range) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *Int32Range) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Start\n\n\t// no validation rules for End\n\n\tif len(errors) > 0 {\n\t\treturn Int32RangeMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// Int32RangeMultiError is an error wrapping multiple validation errors\n// returned by Int32Range.ValidateAll() if the designated constraints aren't met.\ntype Int32RangeMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m Int32RangeMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m Int32RangeMultiError) AllErrors() []error { return m }\n\n// Int32RangeValidationError is the validation error returned by\n// Int32Range.Validate if the designated constraints aren't met.\ntype Int32RangeValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e Int32RangeValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e Int32RangeValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e Int32RangeValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e Int32RangeValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e Int32RangeValidationError) ErrorName() string { return \"Int32RangeValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e Int32RangeValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sInt32Range.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = Int32RangeValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = Int32RangeValidationError{}\n\n// Validate checks the field values on DoubleRange with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *DoubleRange) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on DoubleRange with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in DoubleRangeMultiError, or\n// nil if none found.\nfunc (m *DoubleRange) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *DoubleRange) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for Start\n\n\t// no validation rules for End\n\n\tif len(errors) > 0 {\n\t\treturn DoubleRangeMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// DoubleRangeMultiError is an error wrapping multiple validation errors\n// returned by DoubleRange.ValidateAll() if the designated constraints aren't met.\ntype DoubleRangeMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m DoubleRangeMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m DoubleRangeMultiError) AllErrors() []error { return m }\n\n// DoubleRangeValidationError is the validation error returned by\n// DoubleRange.Validate if the designated constraints aren't met.\ntype DoubleRangeValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e DoubleRangeValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e DoubleRangeValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e DoubleRangeValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e DoubleRangeValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e DoubleRangeValidationError) ErrorName() string { return \"DoubleRangeValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e DoubleRangeValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sDoubleRange.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = DoubleRangeValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = DoubleRangeValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/range_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/v3/range.proto\n\npackage typev3\n\nimport (\n\tbinary \"encoding/binary\"\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tmath \"math\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *Int64Range) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Int64Range) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Int64Range) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.End != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.End))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Start != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Start))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Int32Range) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Int32Range) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Int32Range) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.End != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.End))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Start != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Start))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DoubleRange) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DoubleRange) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DoubleRange) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.End != 0 {\n\t\ti -= 8\n\t\tbinary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.End))))\n\t\ti--\n\t\tdAtA[i] = 0x11\n\t}\n\tif m.Start != 0 {\n\t\ti -= 8\n\t\tbinary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Start))))\n\t\ti--\n\t\tdAtA[i] = 0x9\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Int64Range) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Start != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Start))\n\t}\n\tif m.End != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.End))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Int32Range) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Start != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Start))\n\t}\n\tif m.End != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.End))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *DoubleRange) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Start != 0 {\n\t\tn += 9\n\t}\n\tif m.End != 0 {\n\t\tn += 9\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/ratelimit_strategy.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/v3/ratelimit_strategy.proto\n\npackage typev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/cncf/xds/go/xds/annotations/v3\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Choose between allow all and deny all.\ntype RateLimitStrategy_BlanketRule int32\n\nconst (\n\tRateLimitStrategy_ALLOW_ALL RateLimitStrategy_BlanketRule = 0\n\tRateLimitStrategy_DENY_ALL  RateLimitStrategy_BlanketRule = 1\n)\n\n// Enum value maps for RateLimitStrategy_BlanketRule.\nvar (\n\tRateLimitStrategy_BlanketRule_name = map[int32]string{\n\t\t0: \"ALLOW_ALL\",\n\t\t1: \"DENY_ALL\",\n\t}\n\tRateLimitStrategy_BlanketRule_value = map[string]int32{\n\t\t\"ALLOW_ALL\": 0,\n\t\t\"DENY_ALL\":  1,\n\t}\n)\n\nfunc (x RateLimitStrategy_BlanketRule) Enum() *RateLimitStrategy_BlanketRule {\n\tp := new(RateLimitStrategy_BlanketRule)\n\t*p = x\n\treturn p\n}\n\nfunc (x RateLimitStrategy_BlanketRule) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (RateLimitStrategy_BlanketRule) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_type_v3_ratelimit_strategy_proto_enumTypes[0].Descriptor()\n}\n\nfunc (RateLimitStrategy_BlanketRule) Type() protoreflect.EnumType {\n\treturn &file_envoy_type_v3_ratelimit_strategy_proto_enumTypes[0]\n}\n\nfunc (x RateLimitStrategy_BlanketRule) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use RateLimitStrategy_BlanketRule.Descriptor instead.\nfunc (RateLimitStrategy_BlanketRule) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_ratelimit_strategy_proto_rawDescGZIP(), []int{0, 0}\n}\n\ntype RateLimitStrategy struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Types that are valid to be assigned to Strategy:\n\t//\n\t//\t*RateLimitStrategy_BlanketRule_\n\t//\t*RateLimitStrategy_RequestsPerTimeUnit_\n\t//\t*RateLimitStrategy_TokenBucket\n\tStrategy      isRateLimitStrategy_Strategy `protobuf_oneof:\"strategy\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RateLimitStrategy) Reset() {\n\t*x = RateLimitStrategy{}\n\tmi := &file_envoy_type_v3_ratelimit_strategy_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimitStrategy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimitStrategy) ProtoMessage() {}\n\nfunc (x *RateLimitStrategy) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_v3_ratelimit_strategy_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimitStrategy.ProtoReflect.Descriptor instead.\nfunc (*RateLimitStrategy) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_ratelimit_strategy_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *RateLimitStrategy) GetStrategy() isRateLimitStrategy_Strategy {\n\tif x != nil {\n\t\treturn x.Strategy\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimitStrategy) GetBlanketRule() RateLimitStrategy_BlanketRule {\n\tif x != nil {\n\t\tif x, ok := x.Strategy.(*RateLimitStrategy_BlanketRule_); ok {\n\t\t\treturn x.BlanketRule\n\t\t}\n\t}\n\treturn RateLimitStrategy_ALLOW_ALL\n}\n\nfunc (x *RateLimitStrategy) GetRequestsPerTimeUnit() *RateLimitStrategy_RequestsPerTimeUnit {\n\tif x != nil {\n\t\tif x, ok := x.Strategy.(*RateLimitStrategy_RequestsPerTimeUnit_); ok {\n\t\t\treturn x.RequestsPerTimeUnit\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *RateLimitStrategy) GetTokenBucket() *TokenBucket {\n\tif x != nil {\n\t\tif x, ok := x.Strategy.(*RateLimitStrategy_TokenBucket); ok {\n\t\t\treturn x.TokenBucket\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isRateLimitStrategy_Strategy interface {\n\tisRateLimitStrategy_Strategy()\n}\n\ntype RateLimitStrategy_BlanketRule_ struct {\n\t// Allow or Deny the requests.\n\t// If unset, allow all.\n\tBlanketRule RateLimitStrategy_BlanketRule `protobuf:\"varint,1,opt,name=blanket_rule,json=blanketRule,proto3,enum=envoy.type.v3.RateLimitStrategy_BlanketRule,oneof\"`\n}\n\ntype RateLimitStrategy_RequestsPerTimeUnit_ struct {\n\t// Best-effort limit of the number of requests per time unit, f.e. requests per second.\n\t// Does not prescribe any specific rate limiting algorithm, see :ref:`RequestsPerTimeUnit\n\t// <envoy_v3_api_msg_type.v3.RateLimitStrategy.RequestsPerTimeUnit>` for details.\n\tRequestsPerTimeUnit *RateLimitStrategy_RequestsPerTimeUnit `protobuf:\"bytes,2,opt,name=requests_per_time_unit,json=requestsPerTimeUnit,proto3,oneof\"`\n}\n\ntype RateLimitStrategy_TokenBucket struct {\n\t// Limit the requests by consuming tokens from the Token Bucket.\n\t// Allow the same number of requests as the number of tokens available in\n\t// the token bucket.\n\tTokenBucket *TokenBucket `protobuf:\"bytes,3,opt,name=token_bucket,json=tokenBucket,proto3,oneof\"`\n}\n\nfunc (*RateLimitStrategy_BlanketRule_) isRateLimitStrategy_Strategy() {}\n\nfunc (*RateLimitStrategy_RequestsPerTimeUnit_) isRateLimitStrategy_Strategy() {}\n\nfunc (*RateLimitStrategy_TokenBucket) isRateLimitStrategy_Strategy() {}\n\n// Best-effort limit of the number of requests per time unit.\n//\n// Allows to specify the desired requests per second (RPS, QPS), requests per minute (QPM, RPM),\n// etc., without specifying a rate limiting algorithm implementation.\n//\n// “RequestsPerTimeUnit“ strategy does not demand any specific rate limiting algorithm to be\n// used (in contrast to the :ref:`TokenBucket <envoy_v3_api_msg_type.v3.TokenBucket>`,\n// for example). It implies that the implementation details of rate limiting algorithm are\n// irrelevant as long as the configured number of \"requests per time unit\" is achieved.\n//\n// Note that the “TokenBucket“ is still a valid implementation of the “RequestsPerTimeUnit“\n// strategy, and may be chosen to enforce the rate limit. However, there's no guarantee it will be\n// the “TokenBucket“ in particular, and not the Leaky Bucket, the Sliding Window, or any other\n// rate limiting algorithm that fulfills the requirements.\ntype RateLimitStrategy_RequestsPerTimeUnit struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The desired number of requests per :ref:`time_unit\n\t// <envoy_v3_api_field_type.v3.RateLimitStrategy.RequestsPerTimeUnit.time_unit>` to allow.\n\t// If set to “0“, deny all (equivalent to “BlanketRule.DENY_ALL“).\n\t//\n\t// .. note::\n\t//\n\t//\tNote that the algorithm implementation determines the course of action for the requests\n\t//\tover the limit. As long as the ``requests_per_time_unit`` converges on the desired value,\n\t//\tit's allowed to treat this field as a soft-limit: allow bursts, redistribute the allowance\n\t//\tover time, etc.\n\tRequestsPerTimeUnit uint64 `protobuf:\"varint,1,opt,name=requests_per_time_unit,json=requestsPerTimeUnit,proto3\" json:\"requests_per_time_unit,omitempty\"`\n\t// The unit of time. Ignored when :ref:`requests_per_time_unit\n\t// <envoy_v3_api_field_type.v3.RateLimitStrategy.RequestsPerTimeUnit.requests_per_time_unit>`\n\t// is “0“ (deny all).\n\tTimeUnit      RateLimitUnit `protobuf:\"varint,2,opt,name=time_unit,json=timeUnit,proto3,enum=envoy.type.v3.RateLimitUnit\" json:\"time_unit,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *RateLimitStrategy_RequestsPerTimeUnit) Reset() {\n\t*x = RateLimitStrategy_RequestsPerTimeUnit{}\n\tmi := &file_envoy_type_v3_ratelimit_strategy_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *RateLimitStrategy_RequestsPerTimeUnit) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RateLimitStrategy_RequestsPerTimeUnit) ProtoMessage() {}\n\nfunc (x *RateLimitStrategy_RequestsPerTimeUnit) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_v3_ratelimit_strategy_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RateLimitStrategy_RequestsPerTimeUnit.ProtoReflect.Descriptor instead.\nfunc (*RateLimitStrategy_RequestsPerTimeUnit) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_ratelimit_strategy_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *RateLimitStrategy_RequestsPerTimeUnit) GetRequestsPerTimeUnit() uint64 {\n\tif x != nil {\n\t\treturn x.RequestsPerTimeUnit\n\t}\n\treturn 0\n}\n\nfunc (x *RateLimitStrategy_RequestsPerTimeUnit) GetTimeUnit() RateLimitUnit {\n\tif x != nil {\n\t\treturn x.TimeUnit\n\t}\n\treturn RateLimitUnit_UNKNOWN\n}\n\nvar File_envoy_type_v3_ratelimit_strategy_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_v3_ratelimit_strategy_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"&envoy/type/v3/ratelimit_strategy.proto\\x12\\renvoy.type.v3\\x1a\\\"envoy/type/v3/ratelimit_unit.proto\\x1a envoy/type/v3/token_bucket.proto\\x1a\\x1fxds/annotations/v3/status.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a\\x17validate/validate.proto\\\"\\xed\\x03\\n\" +\n\t\"\\x11RateLimitStrategy\\x12[\\n\" +\n\t\"\\fblanket_rule\\x18\\x01 \\x01(\\x0e2,.envoy.type.v3.RateLimitStrategy.BlanketRuleB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01H\\x00R\\vblanketRule\\x12k\\n\" +\n\t\"\\x16requests_per_time_unit\\x18\\x02 \\x01(\\v24.envoy.type.v3.RateLimitStrategy.RequestsPerTimeUnitH\\x00R\\x13requestsPerTimeUnit\\x12?\\n\" +\n\t\"\\ftoken_bucket\\x18\\x03 \\x01(\\v2\\x1a.envoy.type.v3.TokenBucketH\\x00R\\vtokenBucket\\x1a\\x8f\\x01\\n\" +\n\t\"\\x13RequestsPerTimeUnit\\x123\\n\" +\n\t\"\\x16requests_per_time_unit\\x18\\x01 \\x01(\\x04R\\x13requestsPerTimeUnit\\x12C\\n\" +\n\t\"\\ttime_unit\\x18\\x02 \\x01(\\x0e2\\x1c.envoy.type.v3.RateLimitUnitB\\b\\xfaB\\x05\\x82\\x01\\x02\\x10\\x01R\\btimeUnit\\\"*\\n\" +\n\t\"\\vBlanketRule\\x12\\r\\n\" +\n\t\"\\tALLOW_ALL\\x10\\x00\\x12\\f\\n\" +\n\t\"\\bDENY_ALL\\x10\\x01B\\x0f\\n\" +\n\t\"\\bstrategy\\x12\\x03\\xf8B\\x01B\\x84\\x01\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\xd2Ƥ\\xe1\\x06\\x02\\b\\x01\\n\" +\n\t\"\\x1bio.envoyproxy.envoy.type.v3B\\x16RatelimitStrategyProtoP\\x01Z;github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_v3_ratelimit_strategy_proto_rawDescOnce sync.Once\n\tfile_envoy_type_v3_ratelimit_strategy_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_v3_ratelimit_strategy_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_v3_ratelimit_strategy_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_v3_ratelimit_strategy_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_v3_ratelimit_strategy_proto_rawDesc), len(file_envoy_type_v3_ratelimit_strategy_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_v3_ratelimit_strategy_proto_rawDescData\n}\n\nvar file_envoy_type_v3_ratelimit_strategy_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_envoy_type_v3_ratelimit_strategy_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_envoy_type_v3_ratelimit_strategy_proto_goTypes = []any{\n\t(RateLimitStrategy_BlanketRule)(0),            // 0: envoy.type.v3.RateLimitStrategy.BlanketRule\n\t(*RateLimitStrategy)(nil),                     // 1: envoy.type.v3.RateLimitStrategy\n\t(*RateLimitStrategy_RequestsPerTimeUnit)(nil), // 2: envoy.type.v3.RateLimitStrategy.RequestsPerTimeUnit\n\t(*TokenBucket)(nil),                           // 3: envoy.type.v3.TokenBucket\n\t(RateLimitUnit)(0),                            // 4: envoy.type.v3.RateLimitUnit\n}\nvar file_envoy_type_v3_ratelimit_strategy_proto_depIdxs = []int32{\n\t0, // 0: envoy.type.v3.RateLimitStrategy.blanket_rule:type_name -> envoy.type.v3.RateLimitStrategy.BlanketRule\n\t2, // 1: envoy.type.v3.RateLimitStrategy.requests_per_time_unit:type_name -> envoy.type.v3.RateLimitStrategy.RequestsPerTimeUnit\n\t3, // 2: envoy.type.v3.RateLimitStrategy.token_bucket:type_name -> envoy.type.v3.TokenBucket\n\t4, // 3: envoy.type.v3.RateLimitStrategy.RequestsPerTimeUnit.time_unit:type_name -> envoy.type.v3.RateLimitUnit\n\t4, // [4:4] is the sub-list for method output_type\n\t4, // [4:4] is the sub-list for method input_type\n\t4, // [4:4] is the sub-list for extension type_name\n\t4, // [4:4] is the sub-list for extension extendee\n\t0, // [0:4] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_v3_ratelimit_strategy_proto_init() }\nfunc file_envoy_type_v3_ratelimit_strategy_proto_init() {\n\tif File_envoy_type_v3_ratelimit_strategy_proto != nil {\n\t\treturn\n\t}\n\tfile_envoy_type_v3_ratelimit_unit_proto_init()\n\tfile_envoy_type_v3_token_bucket_proto_init()\n\tfile_envoy_type_v3_ratelimit_strategy_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*RateLimitStrategy_BlanketRule_)(nil),\n\t\t(*RateLimitStrategy_RequestsPerTimeUnit_)(nil),\n\t\t(*RateLimitStrategy_TokenBucket)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_v3_ratelimit_strategy_proto_rawDesc), len(file_envoy_type_v3_ratelimit_strategy_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_v3_ratelimit_strategy_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_v3_ratelimit_strategy_proto_depIdxs,\n\t\tEnumInfos:         file_envoy_type_v3_ratelimit_strategy_proto_enumTypes,\n\t\tMessageInfos:      file_envoy_type_v3_ratelimit_strategy_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_v3_ratelimit_strategy_proto = out.File\n\tfile_envoy_type_v3_ratelimit_strategy_proto_goTypes = nil\n\tfile_envoy_type_v3_ratelimit_strategy_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/ratelimit_strategy.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/v3/ratelimit_strategy.proto\n\npackage typev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on RateLimitStrategy with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *RateLimitStrategy) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimitStrategy with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// RateLimitStrategyMultiError, or nil if none found.\nfunc (m *RateLimitStrategy) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimitStrategy) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\toneofStrategyPresent := false\n\tswitch v := m.Strategy.(type) {\n\tcase *RateLimitStrategy_BlanketRule_:\n\t\tif v == nil {\n\t\t\terr := RateLimitStrategyValidationError{\n\t\t\t\tfield:  \"Strategy\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofStrategyPresent = true\n\n\t\tif _, ok := RateLimitStrategy_BlanketRule_name[int32(m.GetBlanketRule())]; !ok {\n\t\t\terr := RateLimitStrategyValidationError{\n\t\t\t\tfield:  \"BlanketRule\",\n\t\t\t\treason: \"value must be one of the defined enum values\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\tcase *RateLimitStrategy_RequestsPerTimeUnit_:\n\t\tif v == nil {\n\t\t\terr := RateLimitStrategyValidationError{\n\t\t\t\tfield:  \"Strategy\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofStrategyPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetRequestsPerTimeUnit()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimitStrategyValidationError{\n\t\t\t\t\t\tfield:  \"RequestsPerTimeUnit\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimitStrategyValidationError{\n\t\t\t\t\t\tfield:  \"RequestsPerTimeUnit\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetRequestsPerTimeUnit()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimitStrategyValidationError{\n\t\t\t\t\tfield:  \"RequestsPerTimeUnit\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase *RateLimitStrategy_TokenBucket:\n\t\tif v == nil {\n\t\t\terr := RateLimitStrategyValidationError{\n\t\t\t\tfield:  \"Strategy\",\n\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\t\toneofStrategyPresent = true\n\n\t\tif all {\n\t\t\tswitch v := interface{}(m.GetTokenBucket()).(type) {\n\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimitStrategyValidationError{\n\t\t\t\t\t\tfield:  \"TokenBucket\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\tcase interface{ Validate() error }:\n\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\terrors = append(errors, RateLimitStrategyValidationError{\n\t\t\t\t\t\tfield:  \"TokenBucket\",\n\t\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\t\tcause:  err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}(m.GetTokenBucket()).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn RateLimitStrategyValidationError{\n\t\t\t\t\tfield:  \"TokenBucket\",\n\t\t\t\t\treason: \"embedded message failed validation\",\n\t\t\t\t\tcause:  err,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\t_ = v // ensures v is used\n\t}\n\tif !oneofStrategyPresent {\n\t\terr := RateLimitStrategyValidationError{\n\t\t\tfield:  \"Strategy\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RateLimitStrategyMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimitStrategyMultiError is an error wrapping multiple validation errors\n// returned by RateLimitStrategy.ValidateAll() if the designated constraints\n// aren't met.\ntype RateLimitStrategyMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimitStrategyMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimitStrategyMultiError) AllErrors() []error { return m }\n\n// RateLimitStrategyValidationError is the validation error returned by\n// RateLimitStrategy.Validate if the designated constraints aren't met.\ntype RateLimitStrategyValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimitStrategyValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimitStrategyValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimitStrategyValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimitStrategyValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimitStrategyValidationError) ErrorName() string {\n\treturn \"RateLimitStrategyValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimitStrategyValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimitStrategy.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimitStrategyValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimitStrategyValidationError{}\n\n// Validate checks the field values on RateLimitStrategy_RequestsPerTimeUnit\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the first error encountered is returned, or nil if\n// there are no violations.\nfunc (m *RateLimitStrategy_RequestsPerTimeUnit) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on RateLimitStrategy_RequestsPerTimeUnit\n// with the rules defined in the proto definition for this message. If any\n// rules are violated, the result is a list of violation errors wrapped in\n// RateLimitStrategy_RequestsPerTimeUnitMultiError, or nil if none found.\nfunc (m *RateLimitStrategy_RequestsPerTimeUnit) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *RateLimitStrategy_RequestsPerTimeUnit) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for RequestsPerTimeUnit\n\n\tif _, ok := RateLimitUnit_name[int32(m.GetTimeUnit())]; !ok {\n\t\terr := RateLimitStrategy_RequestsPerTimeUnitValidationError{\n\t\t\tfield:  \"TimeUnit\",\n\t\t\treason: \"value must be one of the defined enum values\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn RateLimitStrategy_RequestsPerTimeUnitMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// RateLimitStrategy_RequestsPerTimeUnitMultiError is an error wrapping\n// multiple validation errors returned by\n// RateLimitStrategy_RequestsPerTimeUnit.ValidateAll() if the designated\n// constraints aren't met.\ntype RateLimitStrategy_RequestsPerTimeUnitMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m RateLimitStrategy_RequestsPerTimeUnitMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m RateLimitStrategy_RequestsPerTimeUnitMultiError) AllErrors() []error { return m }\n\n// RateLimitStrategy_RequestsPerTimeUnitValidationError is the validation error\n// returned by RateLimitStrategy_RequestsPerTimeUnit.Validate if the\n// designated constraints aren't met.\ntype RateLimitStrategy_RequestsPerTimeUnitValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e RateLimitStrategy_RequestsPerTimeUnitValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e RateLimitStrategy_RequestsPerTimeUnitValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e RateLimitStrategy_RequestsPerTimeUnitValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e RateLimitStrategy_RequestsPerTimeUnitValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e RateLimitStrategy_RequestsPerTimeUnitValidationError) ErrorName() string {\n\treturn \"RateLimitStrategy_RequestsPerTimeUnitValidationError\"\n}\n\n// Error satisfies the builtin error interface\nfunc (e RateLimitStrategy_RequestsPerTimeUnitValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sRateLimitStrategy_RequestsPerTimeUnit.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = RateLimitStrategy_RequestsPerTimeUnitValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = RateLimitStrategy_RequestsPerTimeUnitValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/ratelimit_strategy_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/v3/ratelimit_strategy.proto\n\npackage typev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *RateLimitStrategy_RequestsPerTimeUnit) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimitStrategy_RequestsPerTimeUnit) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimitStrategy_RequestsPerTimeUnit) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.TimeUnit != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.TimeUnit))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.RequestsPerTimeUnit != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.RequestsPerTimeUnit))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimitStrategy) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RateLimitStrategy) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimitStrategy) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif msg, ok := m.Strategy.(*RateLimitStrategy_TokenBucket); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Strategy.(*RateLimitStrategy_RequestsPerTimeUnit_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif msg, ok := m.Strategy.(*RateLimitStrategy_BlanketRule_); ok {\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RateLimitStrategy_BlanketRule_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimitStrategy_BlanketRule_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.BlanketRule))\n\ti--\n\tdAtA[i] = 0x8\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimitStrategy_RequestsPerTimeUnit_) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimitStrategy_RequestsPerTimeUnit_) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RequestsPerTimeUnit != nil {\n\t\tsize, err := m.RequestsPerTimeUnit.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimitStrategy_TokenBucket) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *RateLimitStrategy_TokenBucket) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.TokenBucket != nil {\n\t\tsize, err := m.TokenBucket.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RateLimitStrategy_RequestsPerTimeUnit) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RequestsPerTimeUnit != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.RequestsPerTimeUnit))\n\t}\n\tif m.TimeUnit != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.TimeUnit))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimitStrategy) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif vtmsg, ok := m.Strategy.(interface{ SizeVT() int }); ok {\n\t\tn += vtmsg.SizeVT()\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *RateLimitStrategy_BlanketRule_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 1 + protohelpers.SizeOfVarint(uint64(m.BlanketRule))\n\treturn n\n}\nfunc (m *RateLimitStrategy_RequestsPerTimeUnit_) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RequestsPerTimeUnit != nil {\n\t\tl = m.RequestsPerTimeUnit.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\nfunc (m *RateLimitStrategy_TokenBucket) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.TokenBucket != nil {\n\t\tl = m.TokenBucket.SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 2\n\t}\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/ratelimit_unit.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/v3/ratelimit_unit.proto\n\npackage typev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Identifies the unit of of time for rate limit.\ntype RateLimitUnit int32\n\nconst (\n\t// The time unit is not known.\n\tRateLimitUnit_UNKNOWN RateLimitUnit = 0\n\t// The time unit representing a second.\n\tRateLimitUnit_SECOND RateLimitUnit = 1\n\t// The time unit representing a minute.\n\tRateLimitUnit_MINUTE RateLimitUnit = 2\n\t// The time unit representing an hour.\n\tRateLimitUnit_HOUR RateLimitUnit = 3\n\t// The time unit representing a day.\n\tRateLimitUnit_DAY RateLimitUnit = 4\n\t// The time unit representing a month.\n\tRateLimitUnit_MONTH RateLimitUnit = 5\n\t// The time unit representing a year.\n\tRateLimitUnit_YEAR RateLimitUnit = 6\n)\n\n// Enum value maps for RateLimitUnit.\nvar (\n\tRateLimitUnit_name = map[int32]string{\n\t\t0: \"UNKNOWN\",\n\t\t1: \"SECOND\",\n\t\t2: \"MINUTE\",\n\t\t3: \"HOUR\",\n\t\t4: \"DAY\",\n\t\t5: \"MONTH\",\n\t\t6: \"YEAR\",\n\t}\n\tRateLimitUnit_value = map[string]int32{\n\t\t\"UNKNOWN\": 0,\n\t\t\"SECOND\":  1,\n\t\t\"MINUTE\":  2,\n\t\t\"HOUR\":    3,\n\t\t\"DAY\":     4,\n\t\t\"MONTH\":   5,\n\t\t\"YEAR\":    6,\n\t}\n)\n\nfunc (x RateLimitUnit) Enum() *RateLimitUnit {\n\tp := new(RateLimitUnit)\n\t*p = x\n\treturn p\n}\n\nfunc (x RateLimitUnit) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (RateLimitUnit) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_envoy_type_v3_ratelimit_unit_proto_enumTypes[0].Descriptor()\n}\n\nfunc (RateLimitUnit) Type() protoreflect.EnumType {\n\treturn &file_envoy_type_v3_ratelimit_unit_proto_enumTypes[0]\n}\n\nfunc (x RateLimitUnit) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use RateLimitUnit.Descriptor instead.\nfunc (RateLimitUnit) EnumDescriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_ratelimit_unit_proto_rawDescGZIP(), []int{0}\n}\n\nvar File_envoy_type_v3_ratelimit_unit_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_v3_ratelimit_unit_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\\"envoy/type/v3/ratelimit_unit.proto\\x12\\renvoy.type.v3\\x1a\\x1dudpa/annotations/status.proto*\\\\\\n\" +\n\t\"\\rRateLimitUnit\\x12\\v\\n\" +\n\t\"\\aUNKNOWN\\x10\\x00\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06SECOND\\x10\\x01\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06MINUTE\\x10\\x02\\x12\\b\\n\" +\n\t\"\\x04HOUR\\x10\\x03\\x12\\a\\n\" +\n\t\"\\x03DAY\\x10\\x04\\x12\\t\\n\" +\n\t\"\\x05MONTH\\x10\\x05\\x12\\b\\n\" +\n\t\"\\x04YEAR\\x10\\x06Bx\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\x1bio.envoyproxy.envoy.type.v3B\\x12RatelimitUnitProtoP\\x01Z;github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_v3_ratelimit_unit_proto_rawDescOnce sync.Once\n\tfile_envoy_type_v3_ratelimit_unit_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_v3_ratelimit_unit_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_v3_ratelimit_unit_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_v3_ratelimit_unit_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_v3_ratelimit_unit_proto_rawDesc), len(file_envoy_type_v3_ratelimit_unit_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_v3_ratelimit_unit_proto_rawDescData\n}\n\nvar file_envoy_type_v3_ratelimit_unit_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_envoy_type_v3_ratelimit_unit_proto_goTypes = []any{\n\t(RateLimitUnit)(0), // 0: envoy.type.v3.RateLimitUnit\n}\nvar file_envoy_type_v3_ratelimit_unit_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_v3_ratelimit_unit_proto_init() }\nfunc file_envoy_type_v3_ratelimit_unit_proto_init() {\n\tif File_envoy_type_v3_ratelimit_unit_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_v3_ratelimit_unit_proto_rawDesc), len(file_envoy_type_v3_ratelimit_unit_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_v3_ratelimit_unit_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_v3_ratelimit_unit_proto_depIdxs,\n\t\tEnumInfos:         file_envoy_type_v3_ratelimit_unit_proto_enumTypes,\n\t}.Build()\n\tFile_envoy_type_v3_ratelimit_unit_proto = out.File\n\tfile_envoy_type_v3_ratelimit_unit_proto_goTypes = nil\n\tfile_envoy_type_v3_ratelimit_unit_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/ratelimit_unit.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/v3/ratelimit_unit.proto\n\npackage typev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/semantic_version.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/v3/semantic_version.proto\n\npackage typev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Envoy uses SemVer (https://semver.org/). Major/minor versions indicate\n// expected behaviors and APIs, the patch version field is used only\n// for security fixes and can be generally ignored.\ntype SemanticVersion struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tMajorNumber   uint32                 `protobuf:\"varint,1,opt,name=major_number,json=majorNumber,proto3\" json:\"major_number,omitempty\"`\n\tMinorNumber   uint32                 `protobuf:\"varint,2,opt,name=minor_number,json=minorNumber,proto3\" json:\"minor_number,omitempty\"`\n\tPatch         uint32                 `protobuf:\"varint,3,opt,name=patch,proto3\" json:\"patch,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *SemanticVersion) Reset() {\n\t*x = SemanticVersion{}\n\tmi := &file_envoy_type_v3_semantic_version_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SemanticVersion) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SemanticVersion) ProtoMessage() {}\n\nfunc (x *SemanticVersion) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_v3_semantic_version_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SemanticVersion.ProtoReflect.Descriptor instead.\nfunc (*SemanticVersion) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_semantic_version_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *SemanticVersion) GetMajorNumber() uint32 {\n\tif x != nil {\n\t\treturn x.MajorNumber\n\t}\n\treturn 0\n}\n\nfunc (x *SemanticVersion) GetMinorNumber() uint32 {\n\tif x != nil {\n\t\treturn x.MinorNumber\n\t}\n\treturn 0\n}\n\nfunc (x *SemanticVersion) GetPatch() uint32 {\n\tif x != nil {\n\t\treturn x.Patch\n\t}\n\treturn 0\n}\n\nvar File_envoy_type_v3_semantic_version_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_v3_semantic_version_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"$envoy/type/v3/semantic_version.proto\\x12\\renvoy.type.v3\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\\"\\x90\\x01\\n\" +\n\t\"\\x0fSemanticVersion\\x12!\\n\" +\n\t\"\\fmajor_number\\x18\\x01 \\x01(\\rR\\vmajorNumber\\x12!\\n\" +\n\t\"\\fminor_number\\x18\\x02 \\x01(\\rR\\vminorNumber\\x12\\x14\\n\" +\n\t\"\\x05patch\\x18\\x03 \\x01(\\rR\\x05patch:!\\x9aň\\x1e\\x1c\\n\" +\n\t\"\\x1aenvoy.type.SemanticVersionBz\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\x1bio.envoyproxy.envoy.type.v3B\\x14SemanticVersionProtoP\\x01Z;github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_v3_semantic_version_proto_rawDescOnce sync.Once\n\tfile_envoy_type_v3_semantic_version_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_v3_semantic_version_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_v3_semantic_version_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_v3_semantic_version_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_v3_semantic_version_proto_rawDesc), len(file_envoy_type_v3_semantic_version_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_v3_semantic_version_proto_rawDescData\n}\n\nvar file_envoy_type_v3_semantic_version_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_type_v3_semantic_version_proto_goTypes = []any{\n\t(*SemanticVersion)(nil), // 0: envoy.type.v3.SemanticVersion\n}\nvar file_envoy_type_v3_semantic_version_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_v3_semantic_version_proto_init() }\nfunc file_envoy_type_v3_semantic_version_proto_init() {\n\tif File_envoy_type_v3_semantic_version_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_v3_semantic_version_proto_rawDesc), len(file_envoy_type_v3_semantic_version_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_v3_semantic_version_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_v3_semantic_version_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_v3_semantic_version_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_v3_semantic_version_proto = out.File\n\tfile_envoy_type_v3_semantic_version_proto_goTypes = nil\n\tfile_envoy_type_v3_semantic_version_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/semantic_version.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/v3/semantic_version.proto\n\npackage typev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on SemanticVersion with the rules defined\n// in the proto definition for this message. If any rules are violated, the\n// first error encountered is returned, or nil if there are no violations.\nfunc (m *SemanticVersion) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on SemanticVersion with the rules\n// defined in the proto definition for this message. If any rules are\n// violated, the result is a list of violation errors wrapped in\n// SemanticVersionMultiError, or nil if none found.\nfunc (m *SemanticVersion) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *SemanticVersion) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\t// no validation rules for MajorNumber\n\n\t// no validation rules for MinorNumber\n\n\t// no validation rules for Patch\n\n\tif len(errors) > 0 {\n\t\treturn SemanticVersionMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// SemanticVersionMultiError is an error wrapping multiple validation errors\n// returned by SemanticVersion.ValidateAll() if the designated constraints\n// aren't met.\ntype SemanticVersionMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m SemanticVersionMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m SemanticVersionMultiError) AllErrors() []error { return m }\n\n// SemanticVersionValidationError is the validation error returned by\n// SemanticVersion.Validate if the designated constraints aren't met.\ntype SemanticVersionValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e SemanticVersionValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e SemanticVersionValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e SemanticVersionValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e SemanticVersionValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e SemanticVersionValidationError) ErrorName() string { return \"SemanticVersionValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e SemanticVersionValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sSemanticVersion.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = SemanticVersionValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = SemanticVersionValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/semantic_version_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/v3/semantic_version.proto\n\npackage typev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *SemanticVersion) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SemanticVersion) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *SemanticVersion) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Patch != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Patch))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.MinorNumber != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.MinorNumber))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.MajorNumber != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.MajorNumber))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SemanticVersion) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MajorNumber != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.MajorNumber))\n\t}\n\tif m.MinorNumber != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.MinorNumber))\n\t}\n\tif m.Patch != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Patch))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/token_bucket.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.10\n// \tprotoc        v6.33.2\n// source: envoy/type/v3/token_bucket.proto\n\npackage typev3\n\nimport (\n\t_ \"github.com/cncf/xds/go/udpa/annotations\"\n\t_ \"github.com/envoyproxy/protoc-gen-validate/validate\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Configures a token bucket, typically used for rate limiting.\ntype TokenBucket struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The maximum tokens that the bucket can hold. This is also the number of tokens that the bucket\n\t// initially contains.\n\tMaxTokens uint32 `protobuf:\"varint,1,opt,name=max_tokens,json=maxTokens,proto3\" json:\"max_tokens,omitempty\"`\n\t// The number of tokens added to the bucket during each fill interval. If not specified, defaults\n\t// to a single token.\n\tTokensPerFill *wrapperspb.UInt32Value `protobuf:\"bytes,2,opt,name=tokens_per_fill,json=tokensPerFill,proto3\" json:\"tokens_per_fill,omitempty\"`\n\t// The fill interval that tokens are added to the bucket. During each fill interval\n\t// “tokens_per_fill“ are added to the bucket. The bucket will never contain more than\n\t// “max_tokens“ tokens.\n\tFillInterval  *durationpb.Duration `protobuf:\"bytes,3,opt,name=fill_interval,json=fillInterval,proto3\" json:\"fill_interval,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *TokenBucket) Reset() {\n\t*x = TokenBucket{}\n\tmi := &file_envoy_type_v3_token_bucket_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *TokenBucket) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*TokenBucket) ProtoMessage() {}\n\nfunc (x *TokenBucket) ProtoReflect() protoreflect.Message {\n\tmi := &file_envoy_type_v3_token_bucket_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use TokenBucket.ProtoReflect.Descriptor instead.\nfunc (*TokenBucket) Descriptor() ([]byte, []int) {\n\treturn file_envoy_type_v3_token_bucket_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *TokenBucket) GetMaxTokens() uint32 {\n\tif x != nil {\n\t\treturn x.MaxTokens\n\t}\n\treturn 0\n}\n\nfunc (x *TokenBucket) GetTokensPerFill() *wrapperspb.UInt32Value {\n\tif x != nil {\n\t\treturn x.TokensPerFill\n\t}\n\treturn nil\n}\n\nfunc (x *TokenBucket) GetFillInterval() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.FillInterval\n\t}\n\treturn nil\n}\n\nvar File_envoy_type_v3_token_bucket_proto protoreflect.FileDescriptor\n\nconst file_envoy_type_v3_token_bucket_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\" envoy/type/v3/token_bucket.proto\\x12\\renvoy.type.v3\\x1a\\x1egoogle/protobuf/duration.proto\\x1a\\x1egoogle/protobuf/wrappers.proto\\x1a\\x1dudpa/annotations/status.proto\\x1a!udpa/annotations/versioning.proto\\x1a\\x17validate/validate.proto\\\"\\xef\\x01\\n\" +\n\t\"\\vTokenBucket\\x12&\\n\" +\n\t\"\\n\" +\n\t\"max_tokens\\x18\\x01 \\x01(\\rB\\a\\xfaB\\x04*\\x02 \\x00R\\tmaxTokens\\x12M\\n\" +\n\t\"\\x0ftokens_per_fill\\x18\\x02 \\x01(\\v2\\x1c.google.protobuf.UInt32ValueB\\a\\xfaB\\x04*\\x02 \\x00R\\rtokensPerFill\\x12J\\n\" +\n\t\"\\rfill_interval\\x18\\x03 \\x01(\\v2\\x19.google.protobuf.DurationB\\n\" +\n\t\"\\xfaB\\a\\xaa\\x01\\x04\\b\\x01*\\x00R\\ffillInterval:\\x1d\\x9aň\\x1e\\x18\\n\" +\n\t\"\\x16envoy.type.TokenBucketBv\\xba\\x80\\xc8\\xd1\\x06\\x02\\x10\\x02\\n\" +\n\t\"\\x1bio.envoyproxy.envoy.type.v3B\\x10TokenBucketProtoP\\x01Z;github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3b\\x06proto3\"\n\nvar (\n\tfile_envoy_type_v3_token_bucket_proto_rawDescOnce sync.Once\n\tfile_envoy_type_v3_token_bucket_proto_rawDescData []byte\n)\n\nfunc file_envoy_type_v3_token_bucket_proto_rawDescGZIP() []byte {\n\tfile_envoy_type_v3_token_bucket_proto_rawDescOnce.Do(func() {\n\t\tfile_envoy_type_v3_token_bucket_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_type_v3_token_bucket_proto_rawDesc), len(file_envoy_type_v3_token_bucket_proto_rawDesc)))\n\t})\n\treturn file_envoy_type_v3_token_bucket_proto_rawDescData\n}\n\nvar file_envoy_type_v3_token_bucket_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_envoy_type_v3_token_bucket_proto_goTypes = []any{\n\t(*TokenBucket)(nil),            // 0: envoy.type.v3.TokenBucket\n\t(*wrapperspb.UInt32Value)(nil), // 1: google.protobuf.UInt32Value\n\t(*durationpb.Duration)(nil),    // 2: google.protobuf.Duration\n}\nvar file_envoy_type_v3_token_bucket_proto_depIdxs = []int32{\n\t1, // 0: envoy.type.v3.TokenBucket.tokens_per_fill:type_name -> google.protobuf.UInt32Value\n\t2, // 1: envoy.type.v3.TokenBucket.fill_interval:type_name -> google.protobuf.Duration\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_envoy_type_v3_token_bucket_proto_init() }\nfunc file_envoy_type_v3_token_bucket_proto_init() {\n\tif File_envoy_type_v3_token_bucket_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_type_v3_token_bucket_proto_rawDesc), len(file_envoy_type_v3_token_bucket_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_envoy_type_v3_token_bucket_proto_goTypes,\n\t\tDependencyIndexes: file_envoy_type_v3_token_bucket_proto_depIdxs,\n\t\tMessageInfos:      file_envoy_type_v3_token_bucket_proto_msgTypes,\n\t}.Build()\n\tFile_envoy_type_v3_token_bucket_proto = out.File\n\tfile_envoy_type_v3_token_bucket_proto_goTypes = nil\n\tfile_envoy_type_v3_token_bucket_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/token_bucket.pb.validate.go",
    "content": "//go:build !disable_pgv\n// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: envoy/type/v3/token_bucket.proto\n\npackage typev3\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n)\n\n// Validate checks the field values on TokenBucket with the rules defined in\n// the proto definition for this message. If any rules are violated, the first\n// error encountered is returned, or nil if there are no violations.\nfunc (m *TokenBucket) Validate() error {\n\treturn m.validate(false)\n}\n\n// ValidateAll checks the field values on TokenBucket with the rules defined in\n// the proto definition for this message. If any rules are violated, the\n// result is a list of violation errors wrapped in TokenBucketMultiError, or\n// nil if none found.\nfunc (m *TokenBucket) ValidateAll() error {\n\treturn m.validate(true)\n}\n\nfunc (m *TokenBucket) validate(all bool) error {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar errors []error\n\n\tif m.GetMaxTokens() <= 0 {\n\t\terr := TokenBucketValidationError{\n\t\t\tfield:  \"MaxTokens\",\n\t\t\treason: \"value must be greater than 0\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif wrapper := m.GetTokensPerFill(); wrapper != nil {\n\n\t\tif wrapper.GetValue() <= 0 {\n\t\t\terr := TokenBucketValidationError{\n\t\t\t\tfield:  \"TokensPerFill\",\n\t\t\t\treason: \"value must be greater than 0\",\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t}\n\n\t}\n\n\tif m.GetFillInterval() == nil {\n\t\terr := TokenBucketValidationError{\n\t\t\tfield:  \"FillInterval\",\n\t\t\treason: \"value is required\",\n\t\t}\n\t\tif !all {\n\t\t\treturn err\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\n\tif d := m.GetFillInterval(); d != nil {\n\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\tif err != nil {\n\t\t\terr = TokenBucketValidationError{\n\t\t\t\tfield:  \"FillInterval\",\n\t\t\t\treason: \"value is not a valid duration\",\n\t\t\t\tcause:  err,\n\t\t\t}\n\t\t\tif !all {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terrors = append(errors, err)\n\t\t} else {\n\n\t\t\tgt := time.Duration(0*time.Second + 0*time.Nanosecond)\n\n\t\t\tif dur <= gt {\n\t\t\t\terr := TokenBucketValidationError{\n\t\t\t\t\tfield:  \"FillInterval\",\n\t\t\t\t\treason: \"value must be greater than 0s\",\n\t\t\t\t}\n\t\t\t\tif !all {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn TokenBucketMultiError(errors)\n\t}\n\n\treturn nil\n}\n\n// TokenBucketMultiError is an error wrapping multiple validation errors\n// returned by TokenBucket.ValidateAll() if the designated constraints aren't met.\ntype TokenBucketMultiError []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m TokenBucketMultiError) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m TokenBucketMultiError) AllErrors() []error { return m }\n\n// TokenBucketValidationError is the validation error returned by\n// TokenBucket.Validate if the designated constraints aren't met.\ntype TokenBucketValidationError struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e TokenBucketValidationError) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e TokenBucketValidationError) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e TokenBucketValidationError) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e TokenBucketValidationError) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e TokenBucketValidationError) ErrorName() string { return \"TokenBucketValidationError\" }\n\n// Error satisfies the builtin error interface\nfunc (e TokenBucketValidationError) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %sTokenBucket.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = TokenBucketValidationError{}\n\nvar _ interface {\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = TokenBucketValidationError{}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/go-control-plane/envoy/type/v3/token_bucket_vtproto.pb.go",
    "content": "//go:build vtprotobuf\n// +build vtprotobuf\n\n// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// source: envoy/type/v3/token_bucket.proto\n\npackage typev3\n\nimport (\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tdurationpb \"github.com/planetscale/vtprotobuf/types/known/durationpb\"\n\twrapperspb \"github.com/planetscale/vtprotobuf/types/known/wrapperspb\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *TokenBucket) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *TokenBucket) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *TokenBucket) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.FillInterval != nil {\n\t\tsize, err := (*durationpb.Duration)(m.FillInterval).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.TokensPerFill != nil {\n\t\tsize, err := (*wrapperspb.UInt32Value)(m.TokensPerFill).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.MaxTokens != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.MaxTokens))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *TokenBucket) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MaxTokens != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.MaxTokens))\n\t}\n\tif m.TokensPerFill != nil {\n\t\tl = (*wrapperspb.UInt32Value)(m.TokensPerFill).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tif m.FillInterval != nil {\n\t\tl = (*durationpb.Duration)(m.FillInterval).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/.bazelrc",
    "content": "# TODO: Add support for bzlmod\ncommon --enable_bzlmod=false\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/.bazelversion",
    "content": "7.1.2\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/.clang-format",
    "content": "---\nLanguage:        Cpp\nAccessModifierOffset: -2\nColumnLimit: 100\nDerivePointerAlignment: false\nPointerAlignment: Left\nSortIncludes: false\n...\n\n---\nLanguage: Proto\nColumnLimit: 100\nSpacesInContainerLiterals: false\nAllowShortFunctionsOnASingleLine: false\nReflowComments: false\n...\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/.gitignore",
    "content": "bazel-*\n**/.DS_Store\n!vendor/*\n\n/bin\n/cmd/protoc-gen-validate-cpp/protoc-gen-validate-cpp\n/cmd/protoc-gen-validate-go/protoc-gen-validate-go\n/cmd/protoc-gen-validate-java/protoc-gen-validate-java\n/dist/\n/protoc-gen-validate\n\n/python/LICENSE\n/python/validate.proto\n/python/dist/\n*.egg-info/\n__pycache__/\n*.py[cod]\n\n/tests/harness/cases/go\n/tests/harness/cases/gogo\n/tests/harness/cases/other_package/go\n/tests/harness/cases/other_package/gogo\n/tests/harness/cases/yet_another_package/go\n/tests/harness/cases/yet_another_package/gogo\n/tests/harness/cases/sort/go\n/tests/harness/cases/sort/gogo\n/tests/harness/go/harness.pb.go\n/tests/harness/go/main/go-harness\n/tests/harness/go/main/go-harness.exe\n/tests/harness/gogo/harness.pb.go\n/tests/harness/gogo/main/go-harness\n/tests/harness/gogo/main/go-harness.exe\n/tests/harness/cc/cc-harness\n/tests/harness/cc/cc-harness.exe\n\n/validate/__pycache__\n\n/tests/harness/cases/**/*.cc\n/tests/harness/cases/**/*.h\n\n/java/.idea\n/java/**/*.class\n/java/**/*.iml\n/java/**/.project\n/java/**/dependency-reduced-pom.xml\n/java/**/target\n.vscode\n.project\n.classpath\n.settings\n.idea/\n.ijwb/\n\n# Local cache directory.\n.cache\n\n# Local build directory.\n/build\n\n# Generated test cases Go files.\n/tests/harness/**/*.pb.go\n/tests/harness/**/*.pb.validate.go\n\n# Harness test binary.\n/tests/harness/**/*-harness\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/BUILD.bazel",
    "content": "load(\"@bazel_gazelle//:def.bzl\", \"gazelle\")\nload(\"@io_bazel_rules_go//go:def.bzl\", \"go_binary\", \"go_library\")\n\n# gazelle:prefix github.com/envoyproxy/protoc-gen-validate\n# gazelle:exclude tests\n# gazelle:exclude example-workspace\n# gazelle:exclude validate/validate.h\n# gazelle:go_naming_convention import_alias\ngazelle(name = \"gazelle\")\n\ngo_binary(\n    name = \"protoc-gen-validate\",\n    embed = [\":protoc-gen-validate_lib\"],\n    importpath = \"github.com/envoyproxy/protoc-gen-validate\",\n    visibility = [\"//visibility:public\"],\n)\n\ngo_library(\n    name = \"protoc-gen-validate_lib\",\n    srcs = [\"main.go\"],\n    importpath = \"github.com/envoyproxy/protoc-gen-validate\",\n    visibility = [\"//visibility:private\"],\n    deps = [\n        \"//module\",\n        \"@com_github_lyft_protoc_gen_star_v2//:protoc-gen-star\",\n        \"@com_github_lyft_protoc_gen_star_v2//lang/go\",\n        \"@org_golang_google_protobuf//types/pluginpb\",\n    ],\n)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/Dockerfile",
    "content": "FROM ubuntu:jammy\n\nENV DEBIAN_FRONTEND=noninteractive\n# apt packages\nENV INSTALL_DEPS \\\n  ca-certificates \\\n  git \\\n  make \\\n  zip \\\n  unzip \\\n  g++ \\\n  wget \\\n  maven \\\n  patch \\\n  python3.10 \\\n  python3.10-venv \\\n  python3-pip \\\n  apt-transport-https \\\n  curl \\\n  openjdk-11-jdk \\\n  gnupg\n\nRUN apt update \\\n  && apt install -y -q --no-install-recommends ${INSTALL_DEPS} \\\n  && apt clean\n\n# bazel\nENV BAZEL_VER=6.1.1\nRUN wget -q -O bazel https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VER}/bazel-${BAZEL_VER}-linux-$([ $(uname -m) = \"aarch64\" ] && echo \"arm64\" || echo \"x86_64\") \\\n  && chmod +x bazel \\\n  && mv bazel usr/local/bin/bazel\n\n# protoc\nENV PROTOC_VER=24.3\nRUN export PROTOC_REL=protoc-${PROTOC_VER}-linux-$([ $(uname -m) = \"aarch64\" ] && echo \"aarch\" || echo \"x86\")_64.zip \\\n  && wget -q https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VER}/${PROTOC_REL} \\\n  && unzip ${PROTOC_REL} -d protoc \\\n  && mv protoc /usr/local \\\n  && ln -s /usr/local/protoc/bin/protoc /usr/local/bin \\\n  && rm ${PROTOC_REL}\n\n# go\nENV GOROOT /usr/local/go\nENV GOPATH /go\nENV PATH $GOPATH/bin:$GOROOT/bin:$PATH\nRUN export GORELEASE=go1.24.1.linux-$([ $(uname -m) = \"aarch64\" ] && echo \"arm64\" || echo \"amd64\").tar.gz \\\n  && wget -q https://dl.google.com/go/$GORELEASE \\\n  && tar -C $(dirname $GOROOT) -xzf $GORELEASE \\\n  && rm $GORELEASE \\\n  && mkdir -p $GOPATH/{src,bin,pkg}\n\n# protoc-gen-go\nENV PGG_VER=v1.31.0\nRUN go install google.golang.org/protobuf/cmd/protoc-gen-go@${PGG_VER} \\\n  && rm -rf $(go env GOCACHE) \\\n  && rm -rf $(go env GOMODCACHE)\n\n# buildozer\nENV BDR_VER=6.0.1\nRUN go install github.com/bazelbuild/buildtools/buildozer@${BDR_VER} \\\n  && rm -rf $(go env GOCACHE) \\\n  && rm -rf $(go env GOMODCACHE)\n\n# python must be on PATH for the execution of py_binary bazel targets, but\n# the distribution we installed doesn't provide this alias\nRUN ln -s /usr/bin/python3.10 /usr/bin/python\n\nWORKDIR ${GOPATH}/src/github.com/envoyproxy/protoc-gen-validate\n\n# python tooling for linting and uploading to PyPI\nCOPY requirements.txt .\nRUN python3.10 -m pip install -r requirements.txt\n\nCOPY . .\n\nRUN make build\n\nENTRYPOINT [\"make\"]\nCMD [\"build\"]\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/Makefile",
    "content": "empty :=\nspace := $(empty) $(empty)\nPACKAGE := github.com/envoyproxy/protoc-gen-validate\n\n# protoc-gen-go parameters for properly generating the import path for PGV\nVALIDATE_IMPORT := Mvalidate/validate.proto=${PACKAGE}/validate\nGO_IMPORT_SPACES := ${VALIDATE_IMPORT},\\\n\tMgoogle/protobuf/any.proto=google.golang.org/protobuf/types/known/anypb,\\\n\tMgoogle/protobuf/duration.proto=google.golang.org/protobuf/types/known/durationpb,\\\n\tMgoogle/protobuf/struct.proto=google.golang.org/protobuf/types/known/structpb,\\\n\tMgoogle/protobuf/timestamp.proto=google.golang.org/protobuf/types/known/timestamppb,\\\n\tMgoogle/protobuf/wrappers.proto=google.golang.org/protobuf/types/known/wrapperspb,\\\n\tMgoogle/protobuf/descriptor.proto=google.golang.org/protobuf/types/descriptorpb\nGO_IMPORT:=$(subst $(space),,$(GO_IMPORT_SPACES))\n\n.DEFAULT_GOAL := help\n\n.PHONY: help\nhelp: Makefile\n\t@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = \":.*?## \"}; {printf \"\\033[36m%-30s\\033[0m %s\\n\", $$1, $$2}'\n\n.PHONY: build\nbuild: validate/validate.pb.go ## generates the PGV binary and installs it into $$GOPATH/bin\n\tgo install .\n\n.PHONY: bazel\nbazel: ## generate the PGV plugin with Bazel\n\tbazel build //cmd/... //tests/...\n\n.PHONY: build_generation_tests\nbuild_generation_tests:\n\tbazel build //tests/generation/...\n\n.PHONY: gazelle\ngazelle: ## runs gazelle against the codebase to generate Bazel BUILD files\n\tbazel run //:gazelle -- update-repos -from_file=go.mod -prune -to_macro=dependencies.bzl%go_third_party\n\tbazel run //:gazelle\n\n.PHONY: lint\nlint: bin/golangci-lint ## lints the package for common code smells\n\t$(shell pwd)/bin/golangci-lint run ./...\n\t# lints the python code for style enforcement\n\tflake8 --config=python/setup.cfg python/protoc_gen_validate/validator.py\n\tisort --check-only python/protoc_gen_validate/validator.py\n\nbin/golangci-lint:\n\tGOBIN=$(shell pwd)/bin go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.64.5\n\nbin/protoc-gen-go:\n\tGOBIN=$(shell pwd)/bin go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.30.0\n\nbin/harness:\n\tcd tests && go build -o ../bin/harness ./harness/executor\n\n.PHONY: harness\nharness: testcases tests/harness/go/harness.pb.go tests/harness/go/main/go-harness tests/harness/cc/cc-harness bin/harness ## runs the test harness, validating a series of test cases in all supported languages\n\t./bin/harness -go -cc\n\n.PHONY: bazel-tests\nbazel-tests: ## runs all tests with Bazel\n\tbazel test //tests/... --test_output=errors\n\n.PHONY: example-workspace\nexample-workspace: ## run all tests in the example workspace\n\tcd example-workspace && bazel test //... --test_output=errors\n\n.PHONY: testcases\ntestcases: bin/protoc-gen-go ## generate the test harness case protos\n\trm -r tests/harness/cases/go || true\n\tmkdir tests/harness/cases/go\n\trm -r tests/harness/cases/other_package/go || true\n\tmkdir tests/harness/cases/other_package/go\n\trm -r tests/harness/cases/yet_another_package/go || true\n\tmkdir tests/harness/cases/yet_another_package/go\n\trm -r tests/harness/cases/sort/go || true\n\tmkdir tests/harness/cases/sort/go\n\t# protoc-gen-go makes us go a package at a time\n\tcd tests/harness/cases/other_package && \\\n\tprotoc \\\n\t\t-I . \\\n\t\t-I ../../../.. \\\n\t\t--go_out=\"module=${PACKAGE}/tests/harness/cases/other_package/go,${GO_IMPORT}:./go\" \\\n\t\t--plugin=protoc-gen-go=$(shell pwd)/bin/protoc-gen-go \\\n\t\t--validate_out=\"module=${PACKAGE}/tests/harness/cases/other_package/go,lang=go:./go\" \\\n\t\t./*.proto\n\tcd tests/harness/cases/yet_another_package && \\\n\tprotoc \\\n\t\t-I . \\\n\t\t-I ../../../.. \\\n\t\t--go_out=\"module=${PACKAGE}/tests/harness/cases/yet_another_package/go,${GO_IMPORT}:./go\" \\\n\t\t--plugin=protoc-gen-go=$(shell pwd)/bin/protoc-gen-go \\\n\t\t--validate_out=\"module=${PACKAGE}/tests/harness/cases/yet_another_package/go,lang=go:./go\" \\\n\t\t./*.proto\n\tcd tests/harness/cases/sort && \\\n\tprotoc \\\n\t\t-I . \\\n\t\t-I ../../../.. \\\n\t\t--go_out=\"module=${PACKAGE}/tests/harness/cases/sort/go,${GO_IMPORT}:./go\" \\\n\t\t--plugin=protoc-gen-go=$(shell pwd)/bin/protoc-gen-go \\\n\t\t--validate_out=\"module=${PACKAGE}/tests/harness/cases/sort/go,lang=go:./go\" \\\n\t\t./*.proto\n\tcd tests/harness/cases && \\\n\tprotoc \\\n\t\t-I . \\\n\t\t-I ../../.. \\\n\t\t--go_out=\"module=${PACKAGE}/tests/harness/cases/go,Mtests/harness/cases/other_package/embed.proto=${PACKAGE}/tests/harness/cases/other_package/go;other_package,Mtests/harness/cases/yet_another_package/embed.proto=${PACKAGE}/tests/harness/cases/yet_another_package/go,${GO_IMPORT}:./go\" \\\n\t\t--plugin=protoc-gen-go=$(shell pwd)/bin/protoc-gen-go \\\n\t\t--validate_out=\"module=${PACKAGE}/tests/harness/cases/go,lang=go,Mtests/harness/cases/other_package/embed.proto=${PACKAGE}/tests/harness/cases/other_package/go,Mtests/harness/cases/yet_another_package/embed.proto=${PACKAGE}/tests/harness/cases/yet_another_package/go:./go\" \\\n\t\t./*.proto\n\nvalidate/validate.pb.go: bin/protoc-gen-go validate/validate.proto\n\tprotoc -I . \\\n\t\t--plugin=protoc-gen-go=$(shell pwd)/bin/protoc-gen-go \\\n\t\t--go_opt=paths=source_relative \\\n\t\t--go_out=\"${GO_IMPORT}:.\" validate/validate.proto\n\ntests/harness/go/harness.pb.go: bin/protoc-gen-go tests/harness/harness.proto\n\t# generates the test harness protos\n\tcd tests/harness && protoc -I . \\\n\t\t--plugin=protoc-gen-go=$(shell pwd)/bin/protoc-gen-go \\\n\t\t--go_out=\"module=${PACKAGE}/tests/harness/go,${GO_IMPORT}:./go\" harness.proto\n\ntests/harness/go/main/go-harness:\n\t# generates the go-specific test harness\n\tcd tests && go build -o ./harness/go/main/go-harness ./harness/go/main\n\ntests/harness/cc/cc-harness: tests/harness/cc/harness.cc\n\t# generates the C++-specific test harness\n\t# use bazel which knows how to pull in the C++ common proto libraries\n\tbazel build //tests/harness/cc:cc-harness\n\tcp bazel-bin/tests/harness/cc/cc-harness $@\n\tchmod 0755 $@\n\ntests/harness/java/java-harness:\n\t# generates the Java-specific test harness\n\tmvn -q -f java/pom.xml clean package -DskipTests\n\n.PHONY: prepare-python-release\nprepare-python-release:\n\tcp validate/validate.proto python/\n\tcp LICENSE python/\n\n.PHONY: python-release\npython-release: prepare-python-release\n\trm -rf python/dist\n\tpython3.10 -m build --no-isolation --sdist python\n\t# the below command should be identical to `python3.10 -m build --wheel`\n\t# however that returns mysterious `error: could not create 'build': File exists`.\n\t# setuptools copies source and data files to a temporary build directory,\n\t# but why there's a collision or why setuptools stopped respecting the `build_lib` flag is unclear.\n\t# As a workaround, we build a source distribution and then separately build a wheel from it.\n\tpython3.10 -m pip wheel --wheel-dir python/dist --no-deps python/dist/*\n\tpython3.10 -m twine upload --verbose --skip-existing --repository ${PYPI_REPO} --username \"__token__\" --password ${PGV_PYPI_TOKEN} python/dist/*\n\n.PHONY: check-generated\ncheck-generated: ## run during CI; this checks that the checked-in generated code matches the generated version.\n\tfor f in validate/validate.pb.go ; do \\\n\t  mv $$f $$f.original ; \\\n\t  make $$f ; \\\n\t  mv $$f $$f.generated ; \\\n\t  cp $$f.original $$f ; \\\n\t  diff $$f.original $$f.generated ; \\\n\tdone\n\n.PHONY: ci\nci: lint bazel testcases bazel-tests build_generation_tests example-workspace check-generated\n\n.PHONY: clean\nclean: ## clean up generated files\n\t(which bazel && bazel clean) || true\n\trm -f \\\n\t\tbin/protoc-gen-go \\\n\t\tbin/harness \\\n\t\ttests/harness/cc/cc-harness \\\n\t\ttests/harness/go/main/go-harness \\\n\t\ttests/harness/go/harness.pb.go\n\trm -rf \\\n\t\ttests/harness/cases/go \\\n\t\ttests/harness/cases/other_package/go \\\n\t\ttests/harness/cases/yet_another_package/go\n\trm -rf \\\n\t\tpython/dist \\\n\t\tpython/*.egg-info\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/Next.mk",
    "content": "# Licensed under the Apache License, Version 2.0 (the \"License\")\n\n# Plugin name.\nname := protoc-gen-validate\n\n# Root dir returns absolute path of current directory. It has a trailing \"/\".\nroot_dir := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))\n\n# Local cache directory.\ncache_dir := $(root_dir).cache\n\n# Directory of Go tools.\ngo_tools_dir := $(cache_dir)/tools/go\n\n# Directory of prepackaged tools (e.g. protoc).\nprepackaged_tools_dir := $(cache_dir)/tools/prepackaged\n\n# Currently we resolve Go using `which`. But more sophisticated approach is to use infer GOROOT.\ngo     := $(shell which go)\ngoarch := $(shell $(go) env GOARCH)\ngoexe  := $(shell $(go) env GOEXE)\ngoos   := $(shell $(go) env GOOS)\n\n# The current binary location for the current runtime (goos, goarch). We install our plugin here.\ncurrent_binary_path := build/$(name)_$(goos)_$(goarch)\ncurrent_binary      := $(current_binary_path)/$(name)$(goexe)\n\n# This makes sure protoc can access the installed plugins.\nexport PATH := $(root_dir)$(current_binary_path):$(go_tools_dir)/bin:$(prepackaged_tools_dir)/bin:$(PATH)\n\n# The main generated file.\nvalidate_pb_go := validate/validate.pb.go\n\n# List of harness test cases.\ntests_harness_cases := \\\n\t/harness \\\n\t/harness/cases \\\n\t/harness/cases/other_package \\\n\t/harness/cases/yet_another_package\n\n# Include versions of tools we build on-demand\ninclude Tools.mk\n# This provides the \"help\" target.\ninclude tools/build/Help.mk\n# This sets some required environment variables.\ninclude tools/build/Env.mk\n\n# Path to the installed protocol buffer compiler.\nprotoc := $(prepackaged_tools_dir)/bin/protoc\n\n# Go based tools.\nbazel         := $(go_tools_dir)/bin/bazelisk\nprotoc-gen-go := $(go_tools_dir)/bin/protoc-gen-go\n\ntest: $(bazel) $(tests_harness_cases) ## Run tests\n\t@$(bazel) test //tests/... --test_output=errors\n\nbuild: $(current_binary) ## Build the plugin\n\nclean: ## Clean all build and test artifacts\n\t@rm -f $(validate_pb_go)\n\t@rm -f $(current_binary)\n\ncheck: ## Verify contents of last commit\n\t@# Make sure the check-in is clean\n\t@if [ ! -z \"`git status -s`\" ]; then \\\n\t\techo \"The following differences will fail CI until committed:\"; \\\n\t\tgit diff --exit-code; \\\n\tfi\n\n# This provides shortcut to various bazel related targets.\nsanity: bazel-build bazel-build-tests-generation bazel-test-example-workspace\n\nbazel-build: $(bazel) ## Build the plugin using bazel\n\t@$(bazel) build //:$(name)\n\t@mkdir -p $(current_binary_path)\n\t@cp -f bazel-bin/$(name)_/$(name)$(goexe) $(current_binary)\n\nbazel-build-tests-generation: $(bazel) ## Build tests generation using bazel\n\t@$(bazel) build //tests/generation/...\n\nbazel-test-example-workspace: $(bazel) ## Test example workspace using bazel\n\t@cd example-workspace && bazel test //... --test_output=errors\n\n# Generate validate/validate.pb.go from validate/validate.proto.\n$(validate_pb_go): $(protoc) $(protoc-gen-go) validate/validate.proto\n\t@$(protoc) -I . --go_opt=paths=source_relative --go_out=. $(filter %.proto,$^)\n\n# Build target for current binary.\nbuild/$(name)_%/$(name)$(goexe): $(validate_pb_go)\n\t@GOBIN=$(root_dir)$(current_binary_path) $(go) install .\n\n# Generate all required files for harness tests in Go.\n$(tests_harness_cases): $(current_binary)\n\t$(call generate-test-cases-go,tests$@)\n\n# Generates a test-case for Go.\ndefine generate-test-cases-go\n\t@cd $1 && \\\n\tmkdir -p go && \\\n\t$(protoc) \\\n\t\t-I . \\\n\t\t-I $(root_dir) \\\n\t\t--go_opt=paths=source_relative \\\n\t\t--go_out=go \\\n\t\t--validate_opt=paths=source_relative \\\n\t\t--validate_out=lang=go:go \\\n\t\t*.proto\nendef\n\ninclude tools/build/Installer.mk\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/README.md",
    "content": "# [![](./.github/buf-logo.svg)][buf] protoc-gen-validate (PGV)\n\n![License](https://img.shields.io/github/license/bufbuild/protoc-gen-validate?color=blue)\n![Release](https://img.shields.io/github/v/release/bufbuild/protoc-gen-validate?include_prereleases)\n![Slack](https://img.shields.io/badge/slack-buf-%23e01563)\n\n> [!IMPORTANT]\n> protoc-gen-validate (PGV) has reached a stable state and is in maintenance mode.\n>\n> We recommend that new and existing projects transition to using [`protovalidate`][pv].\n> Our [migration guide][migration-guide] walks you through the process.\n> \n> Read [our blog post][pv-announce] if you want to learn more about the limitations of protoc-gen-validate and\n> how we have designed [`protovalidate`][pv] to be better.\n\nPGV is a protoc plugin to generate polyglot message validators. While protocol\nbuffers effectively guarantee the types of structured data, they cannot enforce\nsemantic rules for values. This plugin adds support to protoc-generated code to\nvalidate such constraints.\n\nDevelopers import the PGV extension and annotate the messages and fields in\ntheir proto files with constraint rules:\n\n```protobuf\nsyntax = \"proto3\";\n\npackage examplepb;\n\nimport \"validate/validate.proto\";\n\nmessage Person {\n  uint64 id = 1 [(validate.rules).uint64.gt = 999];\n\n  string email = 2 [(validate.rules).string.email = true];\n\n  string name = 3 [(validate.rules).string = {\n    pattern:   \"^[A-Za-z]+( [A-Za-z]+)*$\",\n    max_bytes: 256,\n  }];\n\n  Location home = 4 [(validate.rules).message.required = true];\n\n  message Location {\n    double lat = 1 [(validate.rules).double = {gte: -90,  lte: 90}];\n    double lng = 2 [(validate.rules).double = {gte: -180, lte: 180}];\n  }\n}\n```\n\nExecuting `protoc` with PGV and the target language's default plugin will\ncreate `Validate` methods on the generated types:\n\n```go\np := new(Person)\n\nerr := p.Validate() // err: Id must be greater than 999\np.Id = 1000\n\nerr = p.Validate() // err: Email must be a valid email address\np.Email = \"example@bufbuild.com\"\n\nerr = p.Validate() // err: Name must match pattern '^[A-Za-z]+( [A-Za-z]+)*$'\np.Name = \"Protocol Buffer\"\n\nerr = p.Validate() // err: Home is required\np.Home = &Location{37.7, 999}\n\nerr = p.Validate() // err: Home.Lng must be within [-180, 180]\np.Home.Lng = -122.4\n\nerr = p.Validate() // err: nil\n```\n\n## Usage\n\n### Dependencies\n\n- `go` toolchain (≥ v1.7)\n- `protoc` compiler in `$PATH`\n- `protoc-gen-validate` in `$PATH`\n- official language-specific plugin for target language(s)\n- **Only `proto3` syntax is currently supported.**\n\n### Installation\n\n#### Download from GitHub Releases\n\nDownload assets from [GitHub Releases](https://github.com/bufbuild/protoc-gen-validate/releases) and unarchive them and add plugins into `$PATH`.\n\n#### Build from source\n\n```sh\n# fetches this repo into $GOPATH\ngo get -d github.com/envoyproxy/protoc-gen-validate\n```\n\n> #### 💡 Yes, our go module path is `github.com/envoyproxy/protoc-gen-validate` **not** `bufbuild` this is intentional.\n> Changing the module path is effectively creating a new, independent module. We\n> would prefer not to break our users. The Go team are working on\n> better `cmd/go`\n> support for modules that change paths, but progress is slow. Until then, we\n> will\n> continue to use the `envoyproxy` module path.\n\n```\ngit clone https://github.com/bufbuild/protoc-gen-validate.git\n# installs PGV into $GOPATH/bin\ncd protoc-gen-validate && make build\n```\n\n### Parameters\n\n- **`lang`**: specify the target language to generate. Currently, the only\n  supported options are:\n    - `go`\n    - `cc` for c++ (partially implemented)\n    - `java`\n- Note: Python works via runtime code generation. There's no compile-time\n  generation. See the Python section for details.\n\n### Examples\n\n#### Go\n\nGo generation should occur into the same output path as the official plugin. For\na proto file `example.proto`, the corresponding validation code is generated\ninto `../generated/example.pb.validate.go`:\n\n```sh\nprotoc \\\n  -I . \\\n  -I path/to/validate/ \\\n  --go_out=\":../generated\" \\\n  --validate_out=\"lang=go:../generated\" \\\n  example.proto\n```\n\nAll messages generated include the following methods:\n\n- `Validate() error` which returns the first error encountered during\n  validation.\n- `ValidateAll() error` which returns all errors encountered during validation.\n\nPGV requires no additional runtime dependencies from the existing generated\ncode.\n\n**Note**: by default **example.pb.validate.go** is nested in a directory\nstructure that matches your `option go_package` name. You can change this using\nthe protoc parameter `paths=source_relative:.`, as like `--validate_out=\"lang=go,paths=source_relative:../generated\"`. Then `--validate_out` will\noutput the file where it is expected. See Google's protobuf documentation\nor [packages and input paths](https://github.com/golang/protobuf#packages-and-input-paths)\nor [parameters](https://github.com/golang/protobuf#parameters) for more\ninformation.\n\nThere's also support for the `module=example.com/foo`\nflag [described here](https://developers.google.com/protocol-buffers/docs/reference/go-generated#invocation)\n.\n\nWith newer Buf CLI versions (>v1.9.0), you can use the new plugin key instead of using the `protoc` command directly:\n\n```\n# buf.gen.yaml\n\nversion: v1\nplugins:\n  - plugin: buf.build/bufbuild/validate-go\n    out: gen\n```\n\n```\n# proto/buf.yaml\n\nversion: v1\ndeps:\n  - buf.build/envoyproxy/protoc-gen-validate\n```\n\n#### Java\n\nJava generation is integrated with the existing protobuf toolchain for java\nprojects. For Maven projects, add the\nfollowing to your pom.xml or build.gradle.\n\n```xml\n\n<dependencies>\n    <dependency>\n        <groupId>build.buf.protoc-gen-validate</groupId>\n        <artifactId>pgv-java-stub</artifactId>\n        <version>${pgv.version}</version>\n    </dependency>\n</dependencies>\n\n<build>\n<extensions>\n    <extension>\n        <groupId>kr.motd.maven</groupId>\n        <artifactId>os-maven-plugin</artifactId>\n        <version>1.4.1.Final</version>\n    </extension>\n</extensions>\n<plugins>\n    <plugin>\n        <groupId>org.xolstice.maven.plugins</groupId>\n        <artifactId>protobuf-maven-plugin</artifactId>\n        <version>0.6.1</version>\n        <configuration>\n            <protocArtifact>\n                com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}\n            </protocArtifact>\n        </configuration>\n        <executions>\n            <execution>\n                <id>protoc-java-pgv</id>\n                <goals>\n                    <goal>compile-custom</goal>\n                </goals>\n                <configuration>\n                    <pluginParameter>lang=java</pluginParameter>\n                    <pluginId>java-pgv</pluginId>\n                    <pluginArtifact>\n                        build.buf.protoc-gen-validate:protoc-gen-validate:${pgv.version}:exe:${os.detected.classifier}\n                    </pluginArtifact>\n                </configuration>\n            </execution>\n        </executions>\n    </plugin>\n</plugins>\n</build>\n```\n\n```gradle\nplugins {\n    ...\n    id \"com.google.protobuf\" version \"${protobuf.version}\"\n    ...\n}\n\nprotobuf {\n    protoc {\n        artifact = \"com.google.protobuf:protoc:${protoc.version}\"\n    }\n\n    plugins {\n        javapgv {\n            artifact = \"build.buf.protoc-gen-validate:protoc-gen-validate:${pgv.version}\"\n        }\n    }\n\n    generateProtoTasks {\n        all()*.plugins {\n            javapgv {\n                option \"lang=java\"\n            }\n        }\n    }\n}\n```\n\n```java\n// Create a validator index that reflectively loads generated validators\nValidatorIndex index = new ReflectiveValidatorIndex();\n// Assert that a message is valid\nindex.validatorFor(message.getClass()).assertValid(message);\n\n// Create a gRPC client and server interceptor to automatically validate messages (requires pgv-java-grpc module)\nclientStub = clientStub.withInterceptors(new ValidatingClientInterceptor(index));\nserverBuilder.addService(ServerInterceptors.intercept(svc, new ValidatingServerInterceptor(index)));\n```\n\n#### Python\n\nThe python implementation works via JIT code generation. In other words,\nthe `validate(msg)` function is written\non-demand and [exec-ed](https://docs.python.org/3/library/functions.html#exec).\nAn LRU-cache improves performance by\nstoring generated functions per descriptor.\n\nThe python package is available\non [PyPI](https://pypi.org/project/protoc-gen-validate).\n\nTo run `validate()`, do the following:\n\n```python\nfrom entities_pb2 import Person\nfrom protoc_gen_validate.validator import validate, ValidationFailed\n\np = Person(first_name=\"Foo\", last_name=\"Bar\", age=42)\ntry:\n    validate(p)\nexcept ValidationFailed as err:\n    print(err)\n```\n\nYou can view what code has been generated by using the `print_validate()`\nfunction.\n\n## Constraint Rules\n\n[The provided constraints](validate/validate.proto) are modeled largerly after\nthose in JSON Schema. PGV rules can be mixed for the same field; the plugin\nensures the rules applied to a field cannot contradict before code generation.\n\nCheck the [constraint rule comparison matrix](rule_comparison.md) for\nlanguage-specific constraint capabilities.\n\n### Numerics\n\n> All numeric types (`float`, `double`, `int32`, `int64`, `uint32`, `uint64`\n> , `sint32`, `sint64`, `fixed32`, `fixed64`, `sfixed32`, `sfixed64`) share the\n> same rules.\n\n- **const**: the field must be _exactly_ the specified value.\n\n  ```protobuf\n  // x must equal 1.23 exactly\n  float x = 1 [(validate.rules).float.const = 1.23];\n  ```\n\n- **lt/lte/gt/gte**: these inequalities (`<`, `<=`, `>`, `>=`, respectively)\n  allow for deriving ranges in which the field must reside.\n\n  ```protobuf\n  // x must be less than 10\n  int32 x = 1 [(validate.rules).int32.lt = 10];\n\n  // x must be greater than or equal to 20\n  uint64 x = 1 [(validate.rules).uint64.gte = 20];\n\n  // x must be in the range [30, 40)\n  fixed32 x = 1 [(validate.rules).fixed32 = {gte:30, lt: 40}];\n  ```\n\n  Inverting the values of `lt(e)` and `gt(e)` is valid and creates an exclusive\n  range.\n\n  ```protobuf\n  // x must be outside the range [30, 40)\n  double x = 1 [(validate.rules).double = {lt:30, gte:40}];\n  ```\n\n- **in/not_in**: these two rules permit specifying allow/denylists for the\n  values of a field.\n\n  ```protobuf\n  // x must be either 1, 2, or 3\n  uint32 x = 1 [(validate.rules).uint32 = {in: [1,2,3]}];\n\n  // x cannot be 0 nor 0.99\n  float x = 1 [(validate.rules).float = {not_in: [0, 0.99]}];\n  ```\n\n- **ignore_empty**: this rule specifies that if field is empty or set to the\n  default value, to ignore any validation rules. These are typically useful\n  where being able to unset a field in an update request, or to skip validation\n  for optional fields where switching to WKTs is not feasible.\n\n  ```protobuf\n  uint32 x = 1 [(validate.rules).uint32 = {ignore_empty: true, gte: 200}];\n  ```\n\n### Bools\n\n- **const**: the field must be _exactly_ the specified value.\n\n  ```protobuf\n  // x must be set to true\n  bool x = 1 [(validate.rules).bool.const = true];\n\n  // x cannot be set to true\n  bool x = 1 [(validate.rules).bool.const = false];\n  ```\n\n### Strings\n\n- **const**: the field must be _exactly_ the specified value.\n\n  ```protobuf\n  // x must be set to \"foo\"\n  string x = 1 [(validate.rules).string.const = \"foo\"];\n  ```\n\n- **len/min_len/max_len**: these rules constrain the number of characters (\n  Unicode code points) in the field. Note that the number of characters may\n  differ from the number of bytes in the string. The string is considered as-is,\n  and does not normalize.\n\n  ```protobuf\n  // x must be exactly 5 characters long\n  string x = 1 [(validate.rules).string.len = 5];\n\n  // x must be at least 3 characters long\n  string x = 1 [(validate.rules).string.min_len = 3];\n\n  // x must be between 5 and 10 characters, inclusive\n  string x = 1 [(validate.rules).string = {min_len: 5, max_len: 10}];\n  ```\n\n- **min_bytes/max_bytes**: these rules constrain the number of bytes in the\n  field.\n\n  ```protobuf\n  // x must be at most 15 bytes long\n  string x = 1 [(validate.rules).string.max_bytes = 15];\n\n  // x must be between 128 and 1024 bytes long\n  string x = 1 [(validate.rules).string = {min_bytes: 128, max_bytes: 1024}];\n  ```\n\n- **pattern**: the field must match the specified [RE2-compliant][re2] regular\n  expression. The included expression should elide any delimiters (ie, `/\\d+/`\n  should just be `\\d+`).\n\n  ```protobuf\n  // x must be a non-empty, case-insensitive hexadecimal string\n  string x = 1 [(validate.rules).string.pattern = \"(?i)^[0-9a-f]+$\"];\n  ```\n\n- **prefix/suffix/contains/not_contains**: the field must contain the specified\n  substring in an optionally explicit location, or not contain the specified\n  substring.\n\n  ```protobuf\n  // x must begin with \"foo\"\n  string x = 1 [(validate.rules).string.prefix = \"foo\"];\n\n  // x must end with \"bar\"\n  string x = 1 [(validate.rules).string.suffix = \"bar\"];\n\n  // x must contain \"baz\" anywhere inside it\n  string x = 1 [(validate.rules).string.contains = \"baz\"];\n\n  // x cannot contain \"baz\" anywhere inside it\n  string x = 1 [(validate.rules).string.not_contains = \"baz\"];\n\n  // x must begin with \"fizz\" and end with \"buzz\"\n  string x = 1 [(validate.rules).string = {prefix: \"fizz\", suffix: \"buzz\"}];\n\n  // x must end with \".proto\" and be less than 64 characters\n  string x = 1 [(validate.rules).string = {suffix: \".proto\", max_len:64}];\n  ```\n\n- **in/not_in**: these two rules permit specifying allow/denylists for the\n  values of a field.\n\n  ```protobuf\n  // x must be either \"foo\", \"bar\", or \"baz\"\n  string x = 1 [(validate.rules).string = {in: [\"foo\", \"bar\", \"baz\"]}];\n\n  // x cannot be \"fizz\" nor \"buzz\"\n  string x = 1 [(validate.rules).string = {not_in: [\"fizz\", \"buzz\"]}];\n  ```\n\n- **ignore_empty**: this rule specifies that if field is empty or set to the\n  default value, to ignore any validation rules. These are typically useful\n  where being able to unset a field in an update request, or to skip validation\n  for optional fields where switching to WKTs is not feasible.\n\n  ```protobuf\n  string CountryCode = 1 [(validate.rules).string = {ignore_empty: true, len: 2}];\n  ```\n\n- **well-known formats**: these rules provide advanced constraints for common\n  string patterns. These constraints will typically be more permissive and\n  performant than equivalent regular expression patterns, while providing more\n  explanatory failure descriptions.\n\n  ```protobuf\n  // x must be a valid email address (via RFC 5322)\n  string x = 1 [(validate.rules).string.email = true];\n\n  // x must be a valid address (IP or Hostname).\n  string x = 1 [(validate.rules).string.address = true];\n\n  // x must be a valid hostname (via RFC 1034)\n  string x = 1 [(validate.rules).string.hostname = true];\n\n  // x must be a valid IP address (either v4 or v6)\n  string x = 1 [(validate.rules).string.ip = true];\n\n  // x must be a valid IPv4 address\n  // eg: \"192.168.0.1\"\n  string x = 1 [(validate.rules).string.ipv4 = true];\n\n  // x must be a valid IPv6 address\n  // eg: \"fe80::3\"\n  string x = 1 [(validate.rules).string.ipv6 = true];\n\n  // x must be a valid absolute URI (via RFC 3986)\n  string x = 1 [(validate.rules).string.uri = true];\n\n  // x must be a valid URI reference (either absolute or relative)\n  string x = 1 [(validate.rules).string.uri_ref = true];\n\n  // x must be a valid UUID (via RFC 4122)\n  string x = 1 [(validate.rules).string.uuid = true];\n\n  // x must conform to a well known regex for HTTP header names (via RFC 7230)\n  string x = 1 [(validate.rules).string.well_known_regex = HTTP_HEADER_NAME]\n\n  // x must conform to a well known regex for HTTP header values (via RFC 7230)\n  string x = 1 [(validate.rules).string.well_known_regex = HTTP_HEADER_VALUE];\n\n  // x must conform to a well known regex for headers, disallowing \\r\\n\\0 characters.\n  string x = 1 [(validate.rules).string {well_known_regex: HTTP_HEADER_VALUE, strict: false}];\n  ```\n\n### Bytes\n\n> Literal values should be expressed with strings, using escaping where\n> necessary.\n\n- **const**: the field must be _exactly_ the specified value.\n\n  ```protobuf\n  // x must be set to \"foo\" (\"\\x66\\x6f\\x6f\")\n  bytes x = 1 [(validate.rules).bytes.const = \"foo\"];\n\n  // x must be set to \"\\xf0\\x90\\x28\\xbc\"\n  bytes x = 1 [(validate.rules).bytes.const = \"\\xf0\\x90\\x28\\xbc\"];\n  ```\n\n- **len/min_len/max_len**: these rules constrain the number of bytes in the\n  field.\n\n  ```protobuf\n  // x must be exactly 3 bytes\n  bytes x = 1 [(validate.rules).bytes.len = 3];\n\n  // x must be at least 3 bytes long\n  bytes x = 1 [(validate.rules).bytes.min_len = 3];\n\n  // x must be between 5 and 10 bytes, inclusive\n  bytes x = 1 [(validate.rules).bytes = {min_len: 5, max_len: 10}];\n  ```\n\n- **pattern**: the field must match the specified [RE2-compliant][re2] regular\n  expression. The included expression should elide any delimiters (ie, `/\\d+/`\n  should just be `\\d+`).\n\n  ```protobuf\n  // x must be a non-empty, ASCII byte sequence\n  bytes x = 1 [(validate.rules).bytes.pattern = \"^[\\x00-\\x7F]+$\"];\n  ```\n\n- **prefix/suffix/contains**: the field must contain the specified byte sequence\n  in an optionally explicit location.\n\n  ```protobuf\n  // x must begin with \"\\x99\"\n  bytes x = 1 [(validate.rules).bytes.prefix = \"\\x99\"];\n\n  // x must end with \"buz\\x7a\"\n  bytes x = 1 [(validate.rules).bytes.suffix = \"buz\\x7a\"];\n\n  // x must contain \"baz\" anywhere inside it\n  bytes x = 1 [(validate.rules).bytes.contains = \"baz\"];\n  ```\n\n- **in/not_in**: these two rules permit specifying allow/denylists for the\n  values of a field.\n\n  ```protobuf\n  // x must be either \"foo\", \"bar\", or \"baz\"\n  bytes x = 1 [(validate.rules).bytes = {in: [\"foo\", \"bar\", \"baz\"]}];\n\n  // x cannot be \"fizz\" nor \"buzz\"\n  bytes x = 1 [(validate.rules).bytes = {not_in: [\"fizz\", \"buzz\"]}];\n  ```\n\n- **ignore_empty**: this rule specifies that if field is empty or set to the\n  default value, to ignore any validation rules. These are typically useful\n  where being able to unset a field in an update request, or to skip validation\n  for optional fields where switching to WKTs is not feasible.\n\n  ```protobuf\n  bytes x = 1 [(validate.rules).bytes = {ignore_empty: true, in: [\"foo\", \"bar\", \"baz\"]}];\n  ```\n\n- **well-known formats**: these rules provide advanced constraints for common\n  patterns. These constraints will typically be more permissive and performant\n  than equivalent regular expression patterns, while providing more explanatory\n  failure descriptions.\n\n  ```protobuf\n  // x must be a valid IP address (either v4 or v6) in byte format\n  bytes x = 1 [(validate.rules).bytes.ip = true];\n\n  // x must be a valid IPv4 address in byte format\n  // eg: \"\\xC0\\xA8\\x00\\x01\"\n  bytes x = 1 [(validate.rules).bytes.ipv4 = true];\n\n  // x must be a valid IPv6 address in byte format\n  // eg: \"\\x20\\x01\\x0D\\xB8\\x85\\xA3\\x00\\x00\\x00\\x00\\x8A\\x2E\\x03\\x70\\x73\\x34\"\n  bytes x = 1 [(validate.rules).bytes.ipv6 = true];\n  ```\n\n### Enums\n\n> All literal values should use the numeric (int32) value as defined in the enum\n> descriptor.\n\nThe following examples use this `State` enum\n\n```protobuf\nenum State {\n  INACTIVE = 0;\n  PENDING = 1;\n  ACTIVE = 2;\n}\n```\n\n- **const**: the field must be _exactly_ the specified value.\n\n  ```protobuf\n  // x must be set to ACTIVE (2)\n  State x = 1 [(validate.rules).enum.const = 2];\n  ```\n\n- **defined_only**: the field must be one of the specified values in the enum\n  descriptor.\n\n  ```protobuf\n  // x can only be INACTIVE, PENDING, or ACTIVE\n  State x = 1 [(validate.rules).enum.defined_only = true];\n  ```\n\n- **in/not_in**: these two rules permit specifying allow/denylists for the\n  values of a field.\n\n  ```protobuf\n  // x must be either INACTIVE (0) or ACTIVE (2)\n  State x = 1 [(validate.rules).enum = {in: [0,2]}];\n\n  // x cannot be PENDING (1)\n  State x = 1 [(validate.rules).enum = {not_in: [1]}];\n  ```\n\n### Messages\n\n> If a field contains a message and the message has been generated with PGV,\n> validation will be performed recursively. Message's not generated with PGV are\n> skipped.\n\n```protobuf\n// if Person was generated with PGV and x is set,\n// x's fields will be validated.\n    Person x = 1;\n```\n\n- **skip**: this rule specifies that the validation rules of this field should\n  not be evaluated.\n\n  ```protobuf\n  // The fields on Person x will not be validated.\n  Person x = 1 [(validate.rules).message.skip = true];\n  ```\n\n- **required**: this rule specifies that the field cannot be unset.\n\n  ```protobuf\n  // x cannot be unset\n  Person x = 1 [(validate.rules).message.required = true];\n\n  // x cannot be unset, but the validations on x will not be performed\n  Person x = 1 [(validate.rules).message = {required: true, skip: true}];\n  ```\n\n### Repeated\n\n- **min_items/max_items**: these rules control how many elements are contained\n  in the field\n\n  ```protobuf\n  // x must contain at least 3 elements\n  repeated int32 x = 1 [(validate.rules).repeated.min_items = 3];\n\n  // x must contain between 5 and 10 Persons, inclusive\n  repeated Person x = 1 [(validate.rules).repeated = {min_items: 5, max_items: 10}];\n\n  // x must contain exactly 7 elements\n  repeated double x = 1 [(validate.rules).repeated = {min_items: 7, max_items: 7}];\n  ```\n\n- **unique**: this rule requires that all elements in the field must be unique.\n  This rule does not support repeated messages.\n\n  ```protobuf\n  // x must contain unique int64 values\n  repeated int64 x = 1 [(validate.rules).repeated.unique = true];\n  ```\n\n- **items**: this rule specifies constraints that should be applied to each\n  element in the field. Repeated message fields also have their validation rules\n  applied unless `skip` is specified on this constraint.\n\n  ```protobuf\n  // x must contain positive float values\n  repeated float x = 1 [(validate.rules).repeated.items.float.gt = 0];\n\n  // x must contain Persons but don't validate them\n  repeated Person x = 1 [(validate.rules).repeated.items.message.skip = true];\n  ```\n\n- **ignore_empty**: this rule specifies that if field is empty or set to the\n  default value, to ignore any validation rules. These are typically useful\n  where being able to unset a field in an update request, or to skip validation\n  for optional fields where switching to WKTs is not feasible.\n\n  ```protobuf\n  repeated int64 x = 1 [(validate.rules).repeated = {ignore_empty: true, items: {int64: {gt: 200}}}];\n  ```\n\n### Maps\n\n- **min_pairs/max_pairs**: these rules control how many KV pairs are contained\n  in this field\n\n  ```protobuf\n  // x must contain at least 3 KV pairs\n  map<string, uint64> x = 1 [(validate.rules).map.min_pairs = 3];\n\n  // x must contain between 5 and 10 KV pairs\n  map<string, string> x = 1 [(validate.rules).map = {min_pairs: 5, max_pairs: 10}];\n\n  // x must contain exactly 7 KV pairs\n  map<string, Person> x = 1 [(validate.rules).map = {min_pairs: 7, max_pairs: 7}];\n  ```\n\n- **no_sparse**: for map fields with message values, setting this rule to true\n  disallows keys with unset values.\n\n  ```protobuf\n  // all values in x must be set\n  map<uint64, Person> x = 1 [(validate.rules).map.no_sparse = true];\n  ```\n\n- **keys**: this rule specifies constraints that are applied to the keys in the\n  field.\n\n  ```protobuf\n  // x's keys must all be negative\n  <sint32, string> x = [(validate.rules).map.keys.sint32.lt = 0];\n  ```\n\n- **values**: this rule specifies constraints that are be applied to each value\n  in the field. Repeated message fields also have their validation rules applied\n  unless `skip` is specified on this constraint.\n\n  ```protobuf\n  // x must contain strings of at least 3 characters\n  map<string, string> x = 1 [(validate.rules).map.values.string.min_len = 3];\n\n  // x must contain Persons but doesn't validate them\n  map<string, Person> x = 1 [(validate.rules).map.values.message.skip = true];\n  ```\n\n- **ignore_empty**: this rule specifies that if field is empty or set to the\n  default value, to ignore any validation rules. These are typically useful\n  where being able to unset a field in an update request, or to skip validation\n  for optional fields where switching to WKTs is not feasible.\n\n  ```protobuf\n  map<string, string> x = 1 [(validate.rules).map = {ignore_empty: true, values: {string: {min_len: 3}}}];\n  ```\n\n### Well-Known Types (WKTs)\n\nA set of [WKTs][wkts] are packaged with protoc and common message patterns\nuseful in many domains.\n\n#### Scalar Value Wrappers\n\nIn the `proto3` syntax, there is no way of distinguishing between unset and the\nzero value of a scalar field. The value WKTs permit this differentiation by\nwrapping them in a message. PGV permits using the same scalar rules that the\nwrapper encapsulates.\n\n```protobuf\n// if it is set, x must be greater than 3\n    google.protobuf.Int32Value x = 1 [(validate.rules).int32.gt = 3];\n```\n\nMessage Rules can also be used with scalar Well-Known Types (WKTs):\n\n```protobuf\n// Ensures that if a value is not set for age, it would not pass the validation despite its zero value being 0.\nmessage X {google.protobuf.Int32Value age = 1 [(validate.rules).int32.gt = -1, (validate.rules).message.required = true];}\n```\n\n#### Anys\n\n- **required**: this rule specifies that the field must be set\n\n  ```protobuf\n  // x cannot be unset\n  google.protobuf.Any x = 1 [(validate.rules).any.required = true];\n  ```\n\n- **in/not_in**: these two rules permit specifying allow/denylists for\n  the `type_url` value in this field. Consider using a `oneof` union instead\n  of `in` if possible.\n\n  ```protobuf\n  // x must not be the Duration or Timestamp WKT\n  google.protobuf.Any x = 1 [(validate.rules).any = {not_in: [\n      \"type.googleapis.com/google.protobuf.Duration\",\n      \"type.googleapis.com/google.protobuf.Timestamp\"\n    ]}];\n  ```\n\n#### Durations\n\n- **required**: this rule specifies that the field must be set\n\n  ```protobuf\n  // x cannot be unset\n  google.protobuf.Duration x = 1 [(validate.rules).duration.required = true];\n  ```\n\n- **const**: the field must be _exactly_ the specified value.\n\n  ```protobuf\n  // x must equal 1.5s exactly\n  google.protobuf.Duration x = 1 [(validate.rules).duration.const = {\n      seconds: 1,\n      nanos:   500000000\n    }];\n  ```\n\n- **lt/lte/gt/gte**: these inequalities (`<`, `<=`, `>`, `>=`, respectively)\n  allow for deriving ranges in which the field must reside.\n\n  ```protobuf\n  // x must be less than 10s\n  google.protobuf.Duration x = 1 [(validate.rules).duration.lt.seconds = 10];\n\n  // x must be greater than or equal to 20ns\n  google.protobuf.Duration x = 1 [(validate.rules).duration.gte.nanos = 20];\n\n  // x must be in the range [0s, 1s)\n  google.protobuf.Duration x = 1 [(validate.rules).duration = {\n      gte: {},\n      lt:  {seconds: 1}\n    }];\n  ```\n\n  Inverting the values of `lt(e)` and `gt(e)` is valid and creates an exclusive\n  range.\n\n  ```protobuf\n  // x must be outside the range [0s, 1s)\n  google.protobuf.Duration x = 1 [(validate.rules).duration = {\n      lt:  {},\n      gte: {seconds: 1}\n    }];\n  ```\n\n- **in/not_in**: these two rules permit specifying allow/denylists for the\n  values of a field.\n\n  ```protobuf\n  // x must be either 0s or 1s\n  google.protobuf.Duration x = 1 [(validate.rules).duration = {in: [\n      {},\n      {seconds: 1}\n    ]}];\n\n  // x cannot be 20s nor 500ns\n  google.protobuf.Duration x = 1 [(validate.rules).duration = {not_in: [\n      {seconds: 20},\n      {nanos: 500}\n    ]}];\n  ```\n\n#### Timestamps\n\n- **required**: this rule specifies that the field must be set\n\n  ```protobuf\n  // x cannot be unset\n  google.protobuf.Timestamp x = 1 [(validate.rules).timestamp.required = true];\n  ```\n\n- **const**: the field must be _exactly_ the specified value.\n\n  ```protobuf\n  // x must equal 2009/11/10T23:00:00.500Z exactly\n  google.protobuf.Timestamp x = 1 [(validate.rules).timestamp.const = {\n      seconds: 63393490800,\n      nanos:   500000000\n    }];\n  ```\n\n- **lt/lte/gt/gte**: these inequalities (`<`, `<=`, `>`, `>=`, respectively)\n  allow for deriving ranges in which the field must reside.\n\n  ```protobuf\n  // x must be less than the Unix Epoch\n  google.protobuf.Timestamp x = 1 [(validate.rules).timestamp.lt.seconds = 0];\n\n  // x must be greater than or equal to 2009/11/10T23:00:00Z\n  google.protobuf.Timestamp x = 1 [(validate.rules).timestamp.gte.seconds = 63393490800];\n\n  // x must be in the range [epoch, 2009/11/10T23:00:00Z)\n  google.protobuf.Timestamp x = 1 [(validate.rules).timestamp = {\n      gte: {},\n      lt:  {seconds: 63393490800}\n    }];\n  ```\n\n  Inverting the values of `lt(e)` and `gt(e)` is valid and creates an exclusive\n  range.\n\n  ```protobuf\n  // x must be outside the range [epoch, 2009/11/10T23:00:00Z)\n  google.protobuf.Timestamp x = 1 [(validate.rules).timestamp = {\n      lt:  {},\n      gte: {seconds: 63393490800}\n    }];\n  ```\n\n- **lt_now/gt_now**: these inequalities allow for ranges relative to the current\n  time. These rules cannot be used with the absolute rules above.\n\n  ```protobuf\n  // x must be less than the current timestamp\n  google.protobuf.Timestamp x = 1 [(validate.rules).timestamp.lt_now = true];\n  ```\n- **within**: this rule specifies that the field's value should be within a\n  duration of the current time. This rule can be used in conjunction\n  with `lt_now` and `gt_now` to control those ranges.\n\n  ```protobuf\n  // x must be within ±1s of the current time\n  google.protobuf.Timestamp x = 1 [(validate.rules).timestamp.within.seconds = 1];\n\n  // x must be within the range (now, now+1h)\n  google.protobuf.Timestamp x = 1 [(validate.rules).timestamp = {\n      gt_now: true,\n      within: {seconds: 3600}\n    }];\n  ```\n\n### Message-Global\n\n- **disabled**: All validation rules for the fields on a message can be\n  nullified, including any message fields that support validation themselves.\n\n  ```protobuf\n  message Person {\n    option (validate.disabled) = true;\n\n    // x will not be required to be greater than 123\n    uint64 x = 1 [(validate.rules).uint64.gt = 123];\n\n    // y's fields will not be validated\n    Person y = 2;\n  }\n  ```\n\n- **ignored**: Don't generate a validate method or any related validation code\n  for this message.\n\n  ```protobuf\n  message Person {\n    option (validate.ignored) = true;\n\n    // x will not be required to be greater than 123\n    uint64 x = 1 [(validate.rules).uint64.gt = 123];\n\n    // y's fields will not be validated\n    Person y = 2;\n  }\n  ```\n\n### OneOfs\n\n- **required**: require that one of the fields in a `oneof` must be set. By\n  default, none or one of the unioned fields can be set. Enabling this rules\n  disallows having all of them unset.\n\n  ```protobuf\n  oneof id {\n    // either x, y, or z must be set.\n    option (validate.required) = true;\n\n    string x = 1;\n    int32  y = 2;\n    Person z = 3;\n  }\n  ```\n\n## Development\n\nPGV is written in Go on top of the [protoc-gen-star][pg*] framework and compiles\nto a standalone binary.\n\n### Dependencies\n\nAll PGV dependencies are currently checked into the project. To test\nPGV, `protoc` must be installed, either from [source][protoc-source], the\nprovided [releases][protoc-releases], or a package manager. The official protoc\nplugin for the target language(s) should be installed as well.\n\n### Make Targets\n\n- **`make build`**: generates the constraints proto and compiles PGV\n  into `$GOPATH/bin`\n\n- **`make lint`**: runs static-analysis rules against the PGV codebase,\n  including `golint`, `go vet`, and `gofmt -s`\n\n- **`make testcases`**: generates the proto files\n  in [`/tests/harness/cases`](/tests/harness/cases). These are used by the test\n  harness to verify the validation rules generated for each language.\n\n- **`make harness`**: executes the test-cases against each language's test\n  harness.\n\n### Run all tests under Bazel\n\nEnsure that your `PATH` is setup to include `protoc-gen-go` and `protoc`, then:\n\n```\nbazel test //tests/...\n```\n\n### Docker\n\nPGV comes with a [Dockerfile](/Dockerfile) for consistent development tooling\nand CI. The main entrypoint is `make` with `build` as the default target.\n\n```sh\n# build the image\ndocker build -t bufbuild/protoc-gen-validate .\n\n# executes the default make target: build\ndocker run --rm \\\n  bufbuild/protoc-gen-validate\n\n# executes the 'ci' make target\ndocker run --rm \\\n  bufbuild/protoc-gen-validate ci\n\n# executes the 'build' & 'testcases' make targets\ndocker run --rm \\\n  bufbuild/protoc-gen-validate build testcases\n\n# override the entrypoint and interact with the container directly\n# this can be useful when wanting to run bazel commands without\n# bazel installed locally.\ndocker run --rm \\\n -it --entrypoint=/bin/bash \\\n bufbuild/protoc-gen-validate\n```\n\n[buf]:             https://buf.build\n[protoc-source]:   https://github.com/google/protobuf\n[protoc-releases]: https://github.com/google/protobuf/releases\n[pg*]:             https://github.com/bufbuild/protoc-gen-star\n[re2]:             https://github.com/google/re2/wiki/Syntax\n[wkts]:            https://developers.google.com/protocol-buffers/docs/reference/google.protobuf\n[pv]:              https://github.com/bufbuild/protovalidate\n[pv-announce]:     https://buf.build/blog/protoc-gen-validate-v1-and-v2/\n[migration-guide]: https://buf.build/docs/migration-guides/migrate-from-protoc-gen-validate/\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/Tools.mk",
    "content": "# Licensed under the Apache License, Version 2.0 (the \"License\")\n\nbazelisk@v      := github.com/bazelbuild/bazelisk@v1.15.0\nprotoc@v        := github.com/protocolbuffers/protobuf@v24.3\nprotoc-gen-go@v := google.golang.org/protobuf/cmd/protoc-gen-go@v1.31.0\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/WORKSPACE",
    "content": "workspace(name = \"com_envoyproxy_protoc_gen_validate\")\n\nload(\"//bazel:repositories.bzl\", \"pgv_dependencies\")\n\npgv_dependencies()\n\nload(\"@rules_python//python:repositories.bzl\", \"py_repositories\")\n\npy_repositories()\n\nload(\"//bazel:dependency_imports.bzl\", \"pgv_dependency_imports\")\n\npgv_dependency_imports()\n\nload(\"//bazel:extra_dependency_imports.bzl\", \"pgv_extra_dependency_imports\")\n\npgv_extra_dependency_imports()\n\nload(\"@maven//:defs.bzl\", \"pinned_maven_install\")\n\npinned_maven_install()\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/dependencies.bzl",
    "content": "load(\"@bazel_gazelle//:deps.bzl\", \"go_repository\")\n\ndef go_third_party():\n    go_repository(\n        name = \"co_honnef_go_tools\",\n        importpath = \"honnef.co/go/tools\",\n        sum = \"h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8=\",\n        version = \"v0.0.1-2020.1.4\",\n    )\n    go_repository(\n        name = \"com_github_burntsushi_toml\",\n        importpath = \"github.com/BurntSushi/toml\",\n        sum = \"h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=\",\n        version = \"v0.3.1\",\n    )\n    go_repository(\n        name = \"com_github_burntsushi_xgb\",\n        importpath = \"github.com/BurntSushi/xgb\",\n        sum = \"h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc=\",\n        version = \"v0.0.0-20160522181843-27f122750802\",\n    )\n    go_repository(\n        name = \"com_github_census_instrumentation_opencensus_proto\",\n        importpath = \"github.com/census-instrumentation/opencensus-proto\",\n        sum = \"h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk=\",\n        version = \"v0.2.1\",\n    )\n    go_repository(\n        name = \"com_github_chzyer_logex\",\n        importpath = \"github.com/chzyer/logex\",\n        sum = \"h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=\",\n        version = \"v1.1.10\",\n    )\n    go_repository(\n        name = \"com_github_chzyer_readline\",\n        importpath = \"github.com/chzyer/readline\",\n        sum = \"h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=\",\n        version = \"v0.0.0-20180603132655-2972be24d48e\",\n    )\n    go_repository(\n        name = \"com_github_chzyer_test\",\n        importpath = \"github.com/chzyer/test\",\n        sum = \"h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8=\",\n        version = \"v0.0.0-20180213035817-a1ea475d72b1\",\n    )\n    go_repository(\n        name = \"com_github_client9_misspell\",\n        importpath = \"github.com/client9/misspell\",\n        sum = \"h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=\",\n        version = \"v0.3.4\",\n    )\n    go_repository(\n        name = \"com_github_cncf_udpa_go\",\n        importpath = \"github.com/cncf/udpa/go\",\n        sum = \"h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M=\",\n        version = \"v0.0.0-20201120205902-5459f2c99403\",\n    )\n\n    go_repository(\n        name = \"com_github_davecgh_go_spew\",\n        importpath = \"github.com/davecgh/go-spew\",\n        sum = \"h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=\",\n        version = \"v1.1.0\",\n    )\n    go_repository(\n        name = \"com_github_envoyproxy_go_control_plane\",\n        importpath = \"github.com/envoyproxy/go-control-plane\",\n        sum = \"h1:EmNYJhPYy0pOFjCx2PrgtaBXmee0iUX9hLlxE1xHOJE=\",\n        version = \"v0.9.9-0.20201210154907-fd9021fe5dad\",\n    )\n    go_repository(\n        name = \"com_github_go_gl_glfw\",\n        importpath = \"github.com/go-gl/glfw\",\n        sum = \"h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0=\",\n        version = \"v0.0.0-20190409004039-e6da0acd62b1\",\n    )\n    go_repository(\n        name = \"com_github_go_gl_glfw_v3_3_glfw\",\n        importpath = \"github.com/go-gl/glfw/v3.3/glfw\",\n        sum = \"h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I=\",\n        version = \"v0.0.0-20200222043503-6f7a984d4dc4\",\n    )\n    go_repository(\n        name = \"com_github_golang_glog\",\n        importpath = \"github.com/golang/glog\",\n        sum = \"h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=\",\n        version = \"v0.0.0-20160126235308-23def4e6c14b\",\n    )\n    go_repository(\n        name = \"com_github_golang_groupcache\",\n        importpath = \"github.com/golang/groupcache\",\n        sum = \"h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=\",\n        version = \"v0.0.0-20200121045136-8c9f03a8e57e\",\n    )\n    go_repository(\n        name = \"com_github_golang_mock\",\n        importpath = \"github.com/golang/mock\",\n        sum = \"h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc=\",\n        version = \"v1.4.4\",\n    )\n\n    go_repository(\n        name = \"com_github_golang_protobuf\",\n        importpath = \"github.com/golang/protobuf\",\n        sum = \"h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4=\",\n        version = \"v1.5.0\",\n    )\n    go_repository(\n        name = \"com_github_google_btree\",\n        importpath = \"github.com/google/btree\",\n        sum = \"h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=\",\n        version = \"v1.0.0\",\n    )\n\n    go_repository(\n        name = \"com_github_google_go_cmp\",\n        importpath = \"github.com/google/go-cmp\",\n        sum = \"h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=\",\n        version = \"v0.5.5\",\n    )\n    go_repository(\n        name = \"com_github_google_martian\",\n        importpath = \"github.com/google/martian\",\n        sum = \"h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=\",\n        version = \"v2.1.0+incompatible\",\n    )\n    go_repository(\n        name = \"com_github_google_martian_v3\",\n        importpath = \"github.com/google/martian/v3\",\n        sum = \"h1:wCKgOCHuUEVfsaQLpPSJb7VdYCdTVZQAuOdYm1yc/60=\",\n        version = \"v3.1.0\",\n    )\n    go_repository(\n        name = \"com_github_google_pprof\",\n        importpath = \"github.com/google/pprof\",\n        sum = \"h1:LR89qFljJ48s990kEKGsk213yIJDPI4205OKOzbURK8=\",\n        version = \"v0.0.0-20201218002935-b9804c9f04c2\",\n    )\n    go_repository(\n        name = \"com_github_google_renameio\",\n        importpath = \"github.com/google/renameio\",\n        sum = \"h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA=\",\n        version = \"v0.1.0\",\n    )\n    go_repository(\n        name = \"com_github_google_uuid\",\n        importpath = \"github.com/google/uuid\",\n        sum = \"h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=\",\n        version = \"v1.1.2\",\n    )\n    go_repository(\n        name = \"com_github_googleapis_gax_go_v2\",\n        importpath = \"github.com/googleapis/gax-go/v2\",\n        sum = \"h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=\",\n        version = \"v2.0.5\",\n    )\n    go_repository(\n        name = \"com_github_googleapis_google_cloud_go_testing\",\n        importpath = \"github.com/googleapis/google-cloud-go-testing\",\n        sum = \"h1:tlyzajkF3030q6M8SvmJSemC9DTHL/xaMa18b65+JM4=\",\n        version = \"v0.0.0-20200911160855-bcd43fbb19e8\",\n    )\n    go_repository(\n        name = \"com_github_hashicorp_golang_lru\",\n        importpath = \"github.com/hashicorp/golang-lru\",\n        sum = \"h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=\",\n        version = \"v0.5.1\",\n    )\n\n    go_repository(\n        name = \"com_github_iancoleman_strcase\",\n        importpath = \"github.com/iancoleman/strcase\",\n        sum = \"h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=\",\n        version = \"v0.3.0\",\n    )\n    go_repository(\n        name = \"com_github_ianlancetaylor_demangle\",\n        importpath = \"github.com/ianlancetaylor/demangle\",\n        sum = \"h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI=\",\n        version = \"v0.0.0-20200824232613-28f6c0f3b639\",\n    )\n    go_repository(\n        name = \"com_github_jstemmer_go_junit_report\",\n        importpath = \"github.com/jstemmer/go-junit-report\",\n        sum = \"h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=\",\n        version = \"v0.9.1\",\n    )\n    go_repository(\n        name = \"com_github_kisielk_gotool\",\n        importpath = \"github.com/kisielk/gotool\",\n        sum = \"h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=\",\n        version = \"v1.0.0\",\n    )\n\n    go_repository(\n        name = \"com_github_kr_fs\",\n        importpath = \"github.com/kr/fs\",\n        sum = \"h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=\",\n        version = \"v0.1.0\",\n    )\n    go_repository(\n        name = \"com_github_kr_pretty\",\n        importpath = \"github.com/kr/pretty\",\n        sum = \"h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=\",\n        version = \"v0.1.0\",\n    )\n    go_repository(\n        name = \"com_github_kr_pty\",\n        importpath = \"github.com/kr/pty\",\n        sum = \"h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=\",\n        version = \"v1.1.1\",\n    )\n    go_repository(\n        name = \"com_github_kr_text\",\n        importpath = \"github.com/kr/text\",\n        sum = \"h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=\",\n        version = \"v0.1.0\",\n    )\n\n    go_repository(\n        name = \"com_github_lyft_protoc_gen_star_v2\",\n        importpath = \"github.com/lyft/protoc-gen-star/v2\",\n        sum = \"h1:sIXJOMrYnQZJu7OB7ANSF4MYri2fTEGIsRLz6LwI4xE=\",\n        version = \"v2.0.4-0.20230330145011-496ad1ac90a4\",\n    )\n    go_repository(\n        name = \"com_github_pkg_errors\",\n        importpath = \"github.com/pkg/errors\",\n        sum = \"h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=\",\n        version = \"v0.9.1\",\n    )\n    go_repository(\n        name = \"com_github_pkg_sftp\",\n        importpath = \"github.com/pkg/sftp\",\n        sum = \"h1:I2qBYMChEhIjOgazfJmV3/mZM256btk6wkCDRmW7JYs=\",\n        version = \"v1.13.1\",\n    )\n    go_repository(\n        name = \"com_github_pmezard_go_difflib\",\n        importpath = \"github.com/pmezard/go-difflib\",\n        sum = \"h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\",\n        version = \"v1.0.0\",\n    )\n    go_repository(\n        name = \"com_github_prometheus_client_model\",\n        importpath = \"github.com/prometheus/client_model\",\n        sum = \"h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM=\",\n        version = \"v0.0.0-20190812154241-14fe0d1b01d4\",\n    )\n    go_repository(\n        name = \"com_github_rogpeppe_go_internal\",\n        importpath = \"github.com/rogpeppe/go-internal\",\n        sum = \"h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk=\",\n        version = \"v1.3.0\",\n    )\n\n    go_repository(\n        name = \"com_github_spf13_afero\",\n        importpath = \"github.com/spf13/afero\",\n        sum = \"h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY=\",\n        version = \"v1.10.0\",\n    )\n    go_repository(\n        name = \"com_github_stretchr_objx\",\n        importpath = \"github.com/stretchr/objx\",\n        sum = \"h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=\",\n        version = \"v0.1.0\",\n    )\n    go_repository(\n        name = \"com_github_stretchr_testify\",\n        importpath = \"github.com/stretchr/testify\",\n        sum = \"h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=\",\n        version = \"v1.7.0\",\n    )\n    go_repository(\n        name = \"com_github_yuin_goldmark\",\n        importpath = \"github.com/yuin/goldmark\",\n        sum = \"h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE=\",\n        version = \"v1.4.13\",\n    )\n    go_repository(\n        name = \"com_google_cloud_go\",\n        importpath = \"cloud.google.com/go\",\n        sum = \"h1:XgtDnVJRCPEUG21gjFiRPz4zI1Mjg16R+NYQjfmU4XY=\",\n        version = \"v0.75.0\",\n    )\n    go_repository(\n        name = \"com_google_cloud_go_bigquery\",\n        importpath = \"cloud.google.com/go/bigquery\",\n        sum = \"h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712DPA=\",\n        version = \"v1.8.0\",\n    )\n    go_repository(\n        name = \"com_google_cloud_go_datastore\",\n        importpath = \"cloud.google.com/go/datastore\",\n        sum = \"h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ=\",\n        version = \"v1.1.0\",\n    )\n    go_repository(\n        name = \"com_google_cloud_go_pubsub\",\n        importpath = \"cloud.google.com/go/pubsub\",\n        sum = \"h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU=\",\n        version = \"v1.3.1\",\n    )\n    go_repository(\n        name = \"com_google_cloud_go_storage\",\n        importpath = \"cloud.google.com/go/storage\",\n        sum = \"h1:6RRlFMv1omScs6iq2hfE3IvgE+l6RfJPampq8UZc5TU=\",\n        version = \"v1.14.0\",\n    )\n    go_repository(\n        name = \"com_shuralyov_dmitri_gpu_mtl\",\n        importpath = \"dmitri.shuralyov.com/gpu/mtl\",\n        sum = \"h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY=\",\n        version = \"v0.0.0-20190408044501-666a987793e9\",\n    )\n\n    go_repository(\n        name = \"in_gopkg_check_v1\",\n        importpath = \"gopkg.in/check.v1\",\n        sum = \"h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=\",\n        version = \"v1.0.0-20180628173108-788fd7840127\",\n    )\n    go_repository(\n        name = \"in_gopkg_errgo_v2\",\n        importpath = \"gopkg.in/errgo.v2\",\n        sum = \"h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8=\",\n        version = \"v2.1.0\",\n    )\n\n    go_repository(\n        name = \"in_gopkg_yaml_v2\",\n        importpath = \"gopkg.in/yaml.v2\",\n        sum = \"h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=\",\n        version = \"v2.2.2\",\n    )\n    go_repository(\n        name = \"in_gopkg_yaml_v3\",\n        importpath = \"gopkg.in/yaml.v3\",\n        sum = \"h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=\",\n        version = \"v3.0.0-20200313102051-9f266ea9e77c\",\n    )\n    go_repository(\n        name = \"io_opencensus_go\",\n        importpath = \"go.opencensus.io\",\n        sum = \"h1:dntmOdLpSpHlVqbW5Eay97DelsZHe+55D+xC6i0dDS0=\",\n        version = \"v0.22.5\",\n    )\n    go_repository(\n        name = \"io_rsc_binaryregexp\",\n        importpath = \"rsc.io/binaryregexp\",\n        sum = \"h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=\",\n        version = \"v0.2.0\",\n    )\n    go_repository(\n        name = \"io_rsc_quote_v3\",\n        importpath = \"rsc.io/quote/v3\",\n        sum = \"h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY=\",\n        version = \"v3.1.0\",\n    )\n    go_repository(\n        name = \"io_rsc_sampler\",\n        importpath = \"rsc.io/sampler\",\n        sum = \"h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=\",\n        version = \"v1.3.0\",\n    )\n    go_repository(\n        name = \"org_golang_google_api\",\n        importpath = \"google.golang.org/api\",\n        sum = \"h1:uWrpz12dpVPn7cojP82mk02XDgTJLDPc2KbVTxrWb4A=\",\n        version = \"v0.40.0\",\n    )\n    go_repository(\n        name = \"org_golang_google_appengine\",\n        importpath = \"google.golang.org/appengine\",\n        sum = \"h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=\",\n        version = \"v1.6.7\",\n    )\n    go_repository(\n        name = \"org_golang_google_genproto\",\n        importpath = \"google.golang.org/genproto\",\n        sum = \"h1:PYBmACG+YEv8uQPW0r1kJj8tR+gkF0UWq7iFdUezwEw=\",\n        version = \"v0.0.0-20210226172003-ab064af71705\",\n    )\n    go_repository(\n        name = \"org_golang_google_grpc\",\n        importpath = \"google.golang.org/grpc\",\n        sum = \"h1:TwIQcH3es+MojMVojxxfQ3l3OF2KzlRxML2xZq0kRo8=\",\n        version = \"v1.35.0\",\n    )\n\n    go_repository(\n        name = \"org_golang_google_protobuf\",\n        importpath = \"google.golang.org/protobuf\",\n        sum = \"h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=\",\n        version = \"v1.31.0\",\n    )\n    go_repository(\n        name = \"org_golang_x_crypto\",\n        importpath = \"golang.org/x/crypto\",\n        sum = \"h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck=\",\n        version = \"v0.13.0\",\n    )\n    go_repository(\n        name = \"org_golang_x_exp\",\n        importpath = \"golang.org/x/exp\",\n        sum = \"h1:QE6XYQK6naiK1EPAe1g/ILLxN5RBoH5xkJk3CqlMI/Y=\",\n        version = \"v0.0.0-20200224162631-6cc2880d07d6\",\n    )\n    go_repository(\n        name = \"org_golang_x_image\",\n        importpath = \"golang.org/x/image\",\n        sum = \"h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4=\",\n        version = \"v0.0.0-20190802002840-cff245a6509b\",\n    )\n\n    go_repository(\n        name = \"org_golang_x_lint\",\n        importpath = \"golang.org/x/lint\",\n        sum = \"h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug=\",\n        version = \"v0.0.0-20210508222113-6edffad5e616\",\n    )\n    go_repository(\n        name = \"org_golang_x_mobile\",\n        importpath = \"golang.org/x/mobile\",\n        sum = \"h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs=\",\n        version = \"v0.0.0-20190719004257-d2bd2a29d028\",\n    )\n\n    go_repository(\n        name = \"org_golang_x_mod\",\n        importpath = \"golang.org/x/mod\",\n        sum = \"h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=\",\n        version = \"v0.12.0\",\n    )\n    go_repository(\n        name = \"org_golang_x_net\",\n        importpath = \"golang.org/x/net\",\n        sum = \"h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8=\",\n        version = \"v0.15.0\",\n    )\n    go_repository(\n        name = \"org_golang_x_oauth2\",\n        importpath = \"golang.org/x/oauth2\",\n        sum = \"h1:5vD4XjIc0X5+kHZjx4UecYdjA6mJo+XXNoaW0EjU5Os=\",\n        version = \"v0.0.0-20210218202405-ba52d332ba99\",\n    )\n\n    go_repository(\n        name = \"org_golang_x_sync\",\n        importpath = \"golang.org/x/sync\",\n        sum = \"h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=\",\n        version = \"v0.3.0\",\n    )\n    go_repository(\n        name = \"org_golang_x_sys\",\n        importpath = \"golang.org/x/sys\",\n        sum = \"h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=\",\n        version = \"v0.12.0\",\n    )\n    go_repository(\n        name = \"org_golang_x_term\",\n        importpath = \"golang.org/x/term\",\n        sum = \"h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU=\",\n        version = \"v0.12.0\",\n    )\n\n    go_repository(\n        name = \"org_golang_x_text\",\n        importpath = \"golang.org/x/text\",\n        sum = \"h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=\",\n        version = \"v0.13.0\",\n    )\n    go_repository(\n        name = \"org_golang_x_time\",\n        importpath = \"golang.org/x/time\",\n        sum = \"h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs=\",\n        version = \"v0.0.0-20191024005414-555d28b269f0\",\n    )\n\n    go_repository(\n        name = \"org_golang_x_tools\",\n        importpath = \"golang.org/x/tools\",\n        sum = \"h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ=\",\n        version = \"v0.13.0\",\n    )\n    go_repository(\n        name = \"org_golang_x_xerrors\",\n        importpath = \"golang.org/x/xerrors\",\n        sum = \"h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=\",\n        version = \"v0.0.0-20200804184101-5ec99f83aff1\",\n    )\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/main.go",
    "content": "package main\n\nimport (\n\tpgs \"github.com/lyft/protoc-gen-star/v2\"\n\tpgsgo \"github.com/lyft/protoc-gen-star/v2/lang/go\"\n\t\"google.golang.org/protobuf/types/pluginpb\"\n\n\t\"github.com/envoyproxy/protoc-gen-validate/module\"\n)\n\nfunc main() {\n\toptional := uint64(pluginpb.CodeGeneratorResponse_FEATURE_PROTO3_OPTIONAL)\n\tpgs.\n\t\tInit(pgs.DebugEnv(\"DEBUG_PGV\"), pgs.SupportedFeatures(&optional)).\n\t\tRegisterModule(module.Validator()).\n\t\tRegisterPostProcessor(pgsgo.GoFmt()).\n\t\tRender()\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/module/BUILD",
    "content": "load(\"@io_bazel_rules_go//go:def.bzl\", \"go_library\")\n\ngo_library(\n    name = \"module\",\n    srcs = [\n        \"checker.go\",\n        \"validate.go\",\n    ],\n    importpath = \"github.com/envoyproxy/protoc-gen-validate/module\",\n    visibility = [\"//visibility:public\"],\n    deps = [\n        \"//templates\",\n        \"//templates/java\",\n        \"//validate:validate_go\",\n        \"@com_github_lyft_protoc_gen_star_v2//:protoc-gen-star\",\n        \"@com_github_lyft_protoc_gen_star_v2//lang/go\",\n        \"@org_golang_google_protobuf//proto\",\n        \"@org_golang_google_protobuf//types/known/durationpb\",\n        \"@org_golang_google_protobuf//types/known/timestamppb\",\n    ],\n)\n\nalias(\n    name = \"go_default_library\",\n    actual = \":module\",\n    deprecation = \"Use :module instead of :go_default_library.  Details about the new naming convention: https://github.com/bazelbuild/bazel-gazelle/pull/863\",\n    visibility = [\"//visibility:public\"],\n)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/module/checker.go",
    "content": "package module\n\nimport (\n\t\"reflect\"\n\t\"regexp\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\tpgs \"github.com/lyft/protoc-gen-star/v2\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/types/known/durationpb\"\n\t\"google.golang.org/protobuf/types/known/timestamppb\"\n\n\t\"github.com/envoyproxy/protoc-gen-validate/validate\"\n)\n\nvar (\n\tunknown         = \"\"\n\thttpHeaderName  = \"^:?[0-9a-zA-Z!#$%&'*+-.^_|~\\x60]+$\"\n\thttpHeaderValue = \"^[^\\u0000-\\u0008\\u000A-\\u001F\\u007F]*$\"\n\theaderString    = \"^[^\\u0000\\u000A\\u000D]*$\" // For non-strict validation.\n)\n\n// Map from well known regex to regex pattern.\nvar regex_map = map[string]*string{\n\t\"UNKNOWN\":           &unknown,\n\t\"HTTP_HEADER_NAME\":  &httpHeaderName,\n\t\"HTTP_HEADER_VALUE\": &httpHeaderValue,\n\t\"HEADER_STRING\":     &headerString,\n}\n\ntype FieldType interface {\n\tProtoType() pgs.ProtoType\n\tEmbed() pgs.Message\n}\n\ntype Repeatable interface {\n\tIsRepeated() bool\n}\n\nfunc (m *Module) CheckRules(msg pgs.Message) {\n\tm.Push(\"msg: \" + msg.Name().String())\n\tdefer m.Pop()\n\n\tvar disabled bool\n\t_, err := msg.Extension(validate.E_Disabled, &disabled)\n\tm.CheckErr(err, \"unable to read validation extension from message\")\n\n\tif disabled {\n\t\tm.Debug(\"validation disabled, skipping checks\")\n\t\treturn\n\t}\n\n\tfor _, f := range msg.Fields() {\n\t\tm.Push(f.Name().String())\n\n\t\tvar rules validate.FieldRules\n\t\t_, err = f.Extension(validate.E_Rules, &rules)\n\t\tm.CheckErr(err, \"unable to read validation rules from field\")\n\n\t\tif rules.GetMessage() != nil {\n\t\t\tm.MustType(f.Type(), pgs.MessageT, pgs.UnknownWKT)\n\t\t\tm.CheckMessage(f, &rules)\n\t\t}\n\n\t\tm.CheckFieldRules(f.Type(), &rules)\n\n\t\tm.Pop()\n\t}\n}\n\nfunc (m *Module) CheckFieldRules(typ FieldType, rules *validate.FieldRules) {\n\tif rules == nil {\n\t\treturn\n\t}\n\n\tswitch r := rules.Type.(type) {\n\tcase *validate.FieldRules_Float:\n\t\tm.MustType(typ, pgs.FloatT, pgs.FloatValueWKT)\n\t\tm.CheckFloat(r.Float)\n\tcase *validate.FieldRules_Double:\n\t\tm.MustType(typ, pgs.DoubleT, pgs.DoubleValueWKT)\n\t\tm.CheckDouble(r.Double)\n\tcase *validate.FieldRules_Int32:\n\t\tm.MustType(typ, pgs.Int32T, pgs.Int32ValueWKT)\n\t\tm.CheckInt32(r.Int32)\n\tcase *validate.FieldRules_Int64:\n\t\tm.MustType(typ, pgs.Int64T, pgs.Int64ValueWKT)\n\t\tm.CheckInt64(r.Int64)\n\tcase *validate.FieldRules_Uint32:\n\t\tm.MustType(typ, pgs.UInt32T, pgs.UInt32ValueWKT)\n\t\tm.CheckUInt32(r.Uint32)\n\tcase *validate.FieldRules_Uint64:\n\t\tm.MustType(typ, pgs.UInt64T, pgs.UInt64ValueWKT)\n\t\tm.CheckUInt64(r.Uint64)\n\tcase *validate.FieldRules_Sint32:\n\t\tm.MustType(typ, pgs.SInt32, pgs.UnknownWKT)\n\t\tm.CheckSInt32(r.Sint32)\n\tcase *validate.FieldRules_Sint64:\n\t\tm.MustType(typ, pgs.SInt64, pgs.UnknownWKT)\n\t\tm.CheckSInt64(r.Sint64)\n\tcase *validate.FieldRules_Fixed32:\n\t\tm.MustType(typ, pgs.Fixed32T, pgs.UnknownWKT)\n\t\tm.CheckFixed32(r.Fixed32)\n\tcase *validate.FieldRules_Fixed64:\n\t\tm.MustType(typ, pgs.Fixed64T, pgs.UnknownWKT)\n\t\tm.CheckFixed64(r.Fixed64)\n\tcase *validate.FieldRules_Sfixed32:\n\t\tm.MustType(typ, pgs.SFixed32, pgs.UnknownWKT)\n\t\tm.CheckSFixed32(r.Sfixed32)\n\tcase *validate.FieldRules_Sfixed64:\n\t\tm.MustType(typ, pgs.SFixed64, pgs.UnknownWKT)\n\t\tm.CheckSFixed64(r.Sfixed64)\n\tcase *validate.FieldRules_Bool:\n\t\tm.MustType(typ, pgs.BoolT, pgs.BoolValueWKT)\n\tcase *validate.FieldRules_String_:\n\t\tm.MustType(typ, pgs.StringT, pgs.StringValueWKT)\n\t\tm.CheckString(r.String_)\n\tcase *validate.FieldRules_Bytes:\n\t\tm.MustType(typ, pgs.BytesT, pgs.BytesValueWKT)\n\t\tm.CheckBytes(r.Bytes)\n\tcase *validate.FieldRules_Enum:\n\t\tm.MustType(typ, pgs.EnumT, pgs.UnknownWKT)\n\t\tm.CheckEnum(typ, r.Enum)\n\tcase *validate.FieldRules_Repeated:\n\t\tm.CheckRepeated(typ, r.Repeated)\n\tcase *validate.FieldRules_Map:\n\t\tm.CheckMap(typ, r.Map)\n\tcase *validate.FieldRules_Any:\n\t\tm.CheckAny(typ, r.Any)\n\tcase *validate.FieldRules_Duration:\n\t\tm.CheckDuration(typ, r.Duration)\n\tcase *validate.FieldRules_Timestamp:\n\t\tm.CheckTimestamp(typ, r.Timestamp)\n\tcase nil: // noop\n\tdefault:\n\t\tm.Failf(\"unknown rule type (%T)\", rules.Type)\n\t}\n}\n\nfunc (m *Module) MustType(typ FieldType, pt pgs.ProtoType, wrapper pgs.WellKnownType) {\n\tif emb := typ.Embed(); emb != nil && emb.IsWellKnown() && emb.WellKnownType() == wrapper {\n\t\tm.MustType(emb.Fields()[0].Type(), pt, pgs.UnknownWKT)\n\t\treturn\n\t}\n\n\tif typ, ok := typ.(Repeatable); ok {\n\t\tm.Assert(!typ.IsRepeated(),\n\t\t\t\"repeated rule should be used for repeated fields\")\n\t}\n\n\tm.Assert(typ.ProtoType() == pt,\n\t\t\" expected rules for \",\n\t\ttyp.ProtoType().Proto(),\n\t\t\" but got \",\n\t\tpt.Proto(),\n\t)\n}\n\nfunc (m *Module) CheckFloat(r *validate.FloatRules) {\n\tm.checkNums(len(r.In), len(r.NotIn), r.Const, r.Lt, r.Lte, r.Gt, r.Gte)\n}\n\nfunc (m *Module) CheckDouble(r *validate.DoubleRules) {\n\tm.checkNums(len(r.In), len(r.NotIn), r.Const, r.Lt, r.Lte, r.Gt, r.Gte)\n}\n\nfunc (m *Module) CheckInt32(r *validate.Int32Rules) {\n\tm.checkNums(len(r.In), len(r.NotIn), r.Const, r.Lt, r.Lte, r.Gt, r.Gte)\n}\n\nfunc (m *Module) CheckInt64(r *validate.Int64Rules) {\n\tm.checkNums(len(r.In), len(r.NotIn), r.Const, r.Lt, r.Lte, r.Gt, r.Gte)\n}\n\nfunc (m *Module) CheckUInt32(r *validate.UInt32Rules) {\n\tm.checkNums(len(r.In), len(r.NotIn), r.Const, r.Lt, r.Lte, r.Gt, r.Gte)\n}\n\nfunc (m *Module) CheckUInt64(r *validate.UInt64Rules) {\n\tm.checkNums(len(r.In), len(r.NotIn), r.Const, r.Lt, r.Lte, r.Gt, r.Gte)\n}\n\nfunc (m *Module) CheckSInt32(r *validate.SInt32Rules) {\n\tm.checkNums(len(r.In), len(r.NotIn), r.Const, r.Lt, r.Lte, r.Gt, r.Gte)\n}\n\nfunc (m *Module) CheckSInt64(r *validate.SInt64Rules) {\n\tm.checkNums(len(r.In), len(r.NotIn), r.Const, r.Lt, r.Lte, r.Gt, r.Gte)\n}\n\nfunc (m *Module) CheckFixed32(r *validate.Fixed32Rules) {\n\tm.checkNums(len(r.In), len(r.NotIn), r.Const, r.Lt, r.Lte, r.Gt, r.Gte)\n}\n\nfunc (m *Module) CheckFixed64(r *validate.Fixed64Rules) {\n\tm.checkNums(len(r.In), len(r.NotIn), r.Const, r.Lt, r.Lte, r.Gt, r.Gte)\n}\n\nfunc (m *Module) CheckSFixed32(r *validate.SFixed32Rules) {\n\tm.checkNums(len(r.In), len(r.NotIn), r.Const, r.Lt, r.Lte, r.Gt, r.Gte)\n}\n\nfunc (m *Module) CheckSFixed64(r *validate.SFixed64Rules) {\n\tm.checkNums(len(r.In), len(r.NotIn), r.Const, r.Lt, r.Lte, r.Gt, r.Gte)\n}\n\nfunc (m *Module) CheckString(r *validate.StringRules) {\n\tm.checkLen(r.Len, r.MinLen, r.MaxLen)\n\tm.checkLen(r.LenBytes, r.MinBytes, r.MaxBytes)\n\tm.checkMinMax(r.MinLen, r.MaxLen)\n\tm.checkMinMax(r.MinBytes, r.MaxBytes)\n\tm.checkIns(len(r.In), len(r.NotIn))\n\tm.checkWellKnownRegex(r.GetWellKnownRegex(), r)\n\tm.checkPattern(r.Pattern, len(r.In))\n\n\tif r.MaxLen != nil {\n\t\tmax := int(r.GetMaxLen())\n\t\tm.Assert(utf8.RuneCountInString(r.GetPrefix()) <= max, \"`prefix` length exceeds the `max_len`\")\n\t\tm.Assert(utf8.RuneCountInString(r.GetSuffix()) <= max, \"`suffix` length exceeds the `max_len`\")\n\t\tm.Assert(utf8.RuneCountInString(r.GetContains()) <= max, \"`contains` length exceeds the `max_len`\")\n\n\t\tm.Assert(\n\t\t\tr.MaxBytes == nil || r.GetMaxBytes() >= r.GetMaxLen(),\n\t\t\t\"`max_len` cannot exceed `max_bytes`\")\n\t}\n\n\tif r.MaxBytes != nil {\n\t\tmax := int(r.GetMaxBytes())\n\t\tm.Assert(len(r.GetPrefix()) <= max, \"`prefix` length exceeds the `max_bytes`\")\n\t\tm.Assert(len(r.GetSuffix()) <= max, \"`suffix` length exceeds the `max_bytes`\")\n\t\tm.Assert(len(r.GetContains()) <= max, \"`contains` length exceeds the `max_bytes`\")\n\t}\n}\n\nfunc (m *Module) CheckBytes(r *validate.BytesRules) {\n\tm.checkMinMax(r.MinLen, r.MaxLen)\n\tm.checkIns(len(r.In), len(r.NotIn))\n\tm.checkPattern(r.Pattern, len(r.In))\n\n\tif r.MaxLen != nil {\n\t\tmax := int(r.GetMaxLen())\n\t\tm.Assert(len(r.GetPrefix()) <= max, \"`prefix` length exceeds the `max_len`\")\n\t\tm.Assert(len(r.GetSuffix()) <= max, \"`suffix` length exceeds the `max_len`\")\n\t\tm.Assert(len(r.GetContains()) <= max, \"`contains` length exceeds the `max_len`\")\n\t}\n}\n\nfunc (m *Module) CheckEnum(ft FieldType, r *validate.EnumRules) {\n\tm.checkIns(len(r.In), len(r.NotIn))\n\n\tif r.GetDefinedOnly() && len(r.In) > 0 {\n\t\ttyp, ok := ft.(interface {\n\t\t\tEnum() pgs.Enum\n\t\t})\n\n\t\tif !ok {\n\t\t\tm.Failf(\"unexpected field type (%T)\", ft)\n\t\t}\n\n\t\tdefined := typ.Enum().Values()\n\t\tvals := make(map[int32]struct{}, len(defined))\n\n\t\tfor _, val := range defined {\n\t\t\tvals[val.Value()] = struct{}{}\n\t\t}\n\n\t\tfor _, in := range r.In {\n\t\t\tif _, ok = vals[in]; !ok {\n\t\t\t\tm.Failf(\"undefined `in` value (%d) conflicts with `defined_only` rule\")\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (m *Module) CheckMessage(f pgs.Field, rules *validate.FieldRules) {\n\tm.Assert(f.Type().IsEmbed(), \"field is not embedded but got message rules\")\n\temb := f.Type().Embed()\n\tif emb != nil && emb.IsWellKnown() {\n\t\tswitch emb.WellKnownType() {\n\t\tcase pgs.AnyWKT:\n\t\t\tm.Failf(\"Any rules should be used for Any fields\")\n\t\tcase pgs.DurationWKT:\n\t\t\tm.Failf(\"Duration rules should be used for Duration fields\")\n\t\tcase pgs.TimestampWKT:\n\t\t\tm.Failf(\"Timestamp rules should be used for Timestamp fields\")\n\t\t}\n\t}\n\n\tif rules.Type != nil && rules.GetMessage().GetSkip() {\n\t\tm.Failf(\"Skip should not be used with WKT scalar rules\")\n\t}\n}\n\nfunc (m *Module) CheckRepeated(ft FieldType, r *validate.RepeatedRules) {\n\ttyp := m.mustFieldType(ft)\n\n\tm.Assert(typ.IsRepeated(), \"field is not repeated but got repeated rules\")\n\n\tm.checkMinMax(r.MinItems, r.MaxItems)\n\n\tif r.GetUnique() {\n\t\tm.Assert(\n\t\t\t!typ.Element().IsEmbed(),\n\t\t\t\"unique rule is only applicable for scalar types\")\n\t}\n\n\tm.Push(\"items\")\n\tm.CheckFieldRules(typ.Element(), r.Items)\n\tm.Pop()\n}\n\nfunc (m *Module) CheckMap(ft FieldType, r *validate.MapRules) {\n\ttyp := m.mustFieldType(ft)\n\n\tm.Assert(typ.IsMap(), \"field is not a map but got map rules\")\n\n\tm.checkMinMax(r.MinPairs, r.MaxPairs)\n\n\tif r.GetNoSparse() {\n\t\tm.Assert(\n\t\t\ttyp.Element().IsEmbed(),\n\t\t\t\"no_sparse rule is only applicable for embedded message types\",\n\t\t)\n\t}\n\n\tm.Push(\"keys\")\n\tm.CheckFieldRules(typ.Key(), r.Keys)\n\tm.Pop()\n\n\tm.Push(\"values\")\n\tm.CheckFieldRules(typ.Element(), r.Values)\n\tm.Pop()\n}\n\nfunc (m *Module) CheckAny(ft FieldType, r *validate.AnyRules) {\n\tm.checkIns(len(r.In), len(r.NotIn))\n}\n\nfunc (m *Module) CheckDuration(ft FieldType, r *validate.DurationRules) {\n\tm.checkNums(\n\t\tlen(r.GetIn()),\n\t\tlen(r.GetNotIn()),\n\t\tm.checkDur(r.GetConst()),\n\t\tm.checkDur(r.GetLt()),\n\t\tm.checkDur(r.GetLte()),\n\t\tm.checkDur(r.GetGt()),\n\t\tm.checkDur(r.GetGte()))\n\n\tfor _, v := range r.GetIn() {\n\t\tm.Assert(v != nil, \"cannot have nil values in `in`\")\n\t\tm.checkDur(v)\n\t}\n\n\tfor _, v := range r.GetNotIn() {\n\t\tm.Assert(v != nil, \"cannot have nil values in `not_in`\")\n\t\tm.checkDur(v)\n\t}\n}\n\nfunc (m *Module) CheckTimestamp(ft FieldType, r *validate.TimestampRules) {\n\tm.checkNums(0, 0,\n\t\tm.checkTS(r.GetConst()),\n\t\tm.checkTS(r.GetLt()),\n\t\tm.checkTS(r.GetLte()),\n\t\tm.checkTS(r.GetGt()),\n\t\tm.checkTS(r.GetGte()))\n\n\tm.Assert(\n\t\t(r.LtNow == nil && r.GtNow == nil) || (r.Lt == nil && r.Lte == nil && r.Gt == nil && r.Gte == nil),\n\t\t\"`now` rules cannot be mixed with absolute `lt/gt` rules\")\n\n\tm.Assert(\n\t\tr.Within == nil || (r.Lt == nil && r.Lte == nil && r.Gt == nil && r.Gte == nil),\n\t\t\"`within` rule cannot be used with absolute `lt/gt` rules\")\n\n\tm.Assert(\n\t\tr.LtNow == nil || r.GtNow == nil,\n\t\t\"both `now` rules cannot be used together\")\n\n\tdur := m.checkDur(r.Within)\n\tm.Assert(\n\t\tdur == nil || *dur > 0,\n\t\t\"`within` rule must be positive and non-zero\")\n}\n\nfunc (m *Module) mustFieldType(ft FieldType) pgs.FieldType {\n\ttyp, ok := ft.(pgs.FieldType)\n\tif !ok {\n\t\tm.Failf(\"unexpected field type (%T)\", ft)\n\t}\n\n\treturn typ\n}\n\nfunc (m *Module) checkNums(in, notIn int, ci, lti, ltei, gti, gtei interface{}) {\n\tm.checkIns(in, notIn)\n\n\tc := reflect.ValueOf(ci)\n\tlt, lte := reflect.ValueOf(lti), reflect.ValueOf(ltei)\n\tgt, gte := reflect.ValueOf(gti), reflect.ValueOf(gtei)\n\n\tm.Assert(\n\t\tc.IsNil() ||\n\t\t\tin == 0 && notIn == 0 &&\n\t\t\t\tlt.IsNil() && lte.IsNil() &&\n\t\t\t\tgt.IsNil() && gte.IsNil(),\n\t\t\"`const` can be the only rule on a field\",\n\t)\n\n\tm.Assert(\n\t\tin == 0 ||\n\t\t\tlt.IsNil() && lte.IsNil() &&\n\t\t\t\tgt.IsNil() && gte.IsNil(),\n\t\t\"cannot have both `in` and range constraint rules on the same field\",\n\t)\n\n\tm.Assert(\n\t\tlt.IsNil() || lte.IsNil(),\n\t\t\"cannot have both `lt` and `lte` rules on the same field\",\n\t)\n\n\tm.Assert(\n\t\tgt.IsNil() || gte.IsNil(),\n\t\t\"cannot have both `gt` and `gte` rules on the same field\",\n\t)\n\n\tif !lt.IsNil() {\n\t\tm.Assert(gt.IsNil() || !reflect.DeepEqual(lti, gti),\n\t\t\t\"cannot have equal `gt` and `lt` rules on the same field\")\n\t\tm.Assert(gte.IsNil() || !reflect.DeepEqual(lti, gtei),\n\t\t\t\"cannot have equal `gte` and `lt` rules on the same field\")\n\t} else if !lte.IsNil() {\n\t\tm.Assert(gt.IsNil() || !reflect.DeepEqual(ltei, gti),\n\t\t\t\"cannot have equal `gt` and `lte` rules on the same field\")\n\t\tm.Assert(gte.IsNil() || !reflect.DeepEqual(ltei, gtei),\n\t\t\t\"use `const` instead of equal `lte` and `gte` rules\")\n\t}\n}\n\nfunc (m *Module) checkIns(in, notIn int) {\n\tm.Assert(\n\t\tin == 0 || notIn == 0,\n\t\t\"cannot have both `in` and `not_in` rules on the same field\")\n}\n\nfunc (m *Module) checkMinMax(min, max *uint64) {\n\tif min == nil || max == nil {\n\t\treturn\n\t}\n\n\tm.Assert(\n\t\t*min <= *max,\n\t\t\"`min` value is greater than `max` value\")\n}\n\nfunc (m *Module) checkLen(len, min, max *uint64) {\n\tif len == nil {\n\t\treturn\n\t}\n\n\tm.Assert(\n\t\tmin == nil,\n\t\t\"cannot have both `len` and `min_len` rules on the same field\")\n\n\tm.Assert(\n\t\tmax == nil,\n\t\t\"cannot have both `len` and `max_len` rules on the same field\")\n}\n\nfunc (m *Module) checkWellKnownRegex(wk validate.KnownRegex, r *validate.StringRules) {\n\tif wk != 0 {\n\t\tm.Assert(r.Pattern == nil, \"regex `well_known_regex` and regex `pattern` are incompatible\")\n\t\tnon_strict := r.Strict != nil && !*r.Strict\n\t\tif (wk.String() == \"HTTP_HEADER_NAME\" || wk.String() == \"HTTP_HEADER_VALUE\") && non_strict {\n\t\t\t// Use non-strict header validation.\n\t\t\tr.Pattern = regex_map[\"HEADER_STRING\"]\n\t\t} else {\n\t\t\tr.Pattern = regex_map[wk.String()]\n\t\t}\n\t}\n}\n\nfunc (m *Module) checkPattern(p *string, in int) {\n\tif p != nil {\n\t\tm.Assert(in == 0, \"regex `pattern` and `in` rules are incompatible\")\n\t\t_, err := regexp.Compile(*p)\n\t\tm.CheckErr(err, \"unable to parse regex `pattern`\")\n\t}\n}\n\nfunc (m *Module) checkDur(d *durationpb.Duration) *time.Duration {\n\tif d == nil {\n\t\treturn nil\n\t}\n\n\tdur, err := d.AsDuration(), d.CheckValid()\n\tm.CheckErr(err, \"could not resolve duration\")\n\treturn &dur\n}\n\nfunc (m *Module) checkTS(ts *timestamppb.Timestamp) *int64 {\n\tif ts == nil {\n\t\treturn nil\n\t}\n\n\tt, err := ts.AsTime(), ts.CheckValid()\n\tm.CheckErr(err, \"could not resolve timestamp\")\n\treturn proto.Int64(t.UnixNano())\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/module/validate.go",
    "content": "package module\n\nimport (\n\t\"path/filepath\"\n\t\"strings\"\n\n\tpgs \"github.com/lyft/protoc-gen-star/v2\"\n\tpgsgo \"github.com/lyft/protoc-gen-star/v2/lang/go\"\n\n\t\"github.com/envoyproxy/protoc-gen-validate/templates\"\n\t\"github.com/envoyproxy/protoc-gen-validate/templates/java\"\n)\n\nconst (\n\tvalidatorName = \"validator\"\n\tlangParam     = \"lang\"\n\tmoduleParam   = \"module\"\n)\n\ntype Module struct {\n\t*pgs.ModuleBase\n\tctx pgsgo.Context\n\t// lang contains the selected language (one of 'cc', 'go', 'java').\n\t// It is initialized in ValidatorForLanguage.\n\t// If unset, it will be parsed as the 'lang' parameter.\n\tlang string\n}\n\nfunc Validator() pgs.Module { return &Module{ModuleBase: &pgs.ModuleBase{}} }\n\nfunc ValidatorForLanguage(lang string) pgs.Module {\n\treturn &Module{lang: lang, ModuleBase: &pgs.ModuleBase{}}\n}\n\nfunc (m *Module) InitContext(ctx pgs.BuildContext) {\n\tm.ModuleBase.InitContext(ctx)\n\tm.ctx = pgsgo.InitContext(ctx.Parameters())\n}\n\nfunc (m *Module) Name() string { return validatorName }\n\nfunc (m *Module) Execute(targets map[string]pgs.File, pkgs map[string]pgs.Package) []pgs.Artifact {\n\tlang := m.lang\n\tlangParamValue := m.Parameters().Str(langParam)\n\tif lang == \"\" {\n\t\tlang = langParamValue\n\t\tm.Assert(lang != \"\", \"`lang` parameter must be set\")\n\t} else if langParamValue != \"\" {\n\t\tm.Fail(\"unknown `lang` parameter\")\n\t}\n\n\tmodule := m.Parameters().Str(moduleParam)\n\n\t// Process file-level templates\n\ttpls := templates.Template(m.Parameters())[lang]\n\tm.Assert(tpls != nil, \"could not find templates for `lang`: \", lang)\n\n\tfor _, f := range targets {\n\t\tm.Push(f.Name().String())\n\n\t\tfor _, msg := range f.AllMessages() {\n\t\t\tm.CheckRules(msg)\n\t\t}\n\n\t\tfor _, tpl := range tpls {\n\t\t\tout := templates.FilePathFor(tpl)(f, m.ctx, tpl)\n\n\t\t\t// A nil path means no output should be generated for this file - as controlled by\n\t\t\t// implementation-specific FilePathFor implementations.\n\t\t\t// Ex: Don't generate Java validators for files that don't reference PGV.\n\t\t\tif out != nil {\n\t\t\t\toutPath := strings.TrimLeft(strings.ReplaceAll(filepath.ToSlash(out.String()), module, \"\"), \"/\")\n\n\t\t\t\tif opts := f.Descriptor().GetOptions(); opts != nil && opts.GetJavaMultipleFiles() && lang == \"java\" {\n\t\t\t\t\t// TODO: Only Java supports multiple file generation. If more languages add multiple file generation\n\t\t\t\t\t// support, the implementation should be made more inderect.\n\t\t\t\t\tfor _, msg := range f.Messages() {\n\t\t\t\t\t\tm.AddGeneratorTemplateFile(java.JavaMultiFilePath(f, msg).String(), tpl, msg)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tm.AddGeneratorTemplateFile(outPath, tpl, f)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tm.Pop()\n\t}\n\n\treturn m.Artifacts()\n}\n\nvar _ pgs.Module = (*Module)(nil)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/requirements.txt",
    "content": "# Requirements for linting, building, and uploading the PGV python package to PyPI.\n# The package's own requirements are in python/setup.cfg (and also in python/requirements.in).\nflake8==7.3.0\nisort==7.0.0\nbuild==1.4.0\ntwine==6.2.0\nwheel==0.46.3\nsetuptools==80.10.2\nprotobuf==6.33.4\nsetuptools_scm[toml]>=6.2\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/rule_comparison.md",
    "content": "# Constraint Rule Comparison\n## Global\n| Constraint Rule | Go | GoGo | C++ | Java | Python |\n| ---| :---: | :---: | :---: | :---: | :---: |\n| disabled               |✅|✅|✅|✅|✅|\n\n## Numerics\n| Constraint Rule | Go | GoGo | C++ | Java | Python |\n| ---| :---: | :---: | :---: | :---: | :---: |\n| const                  |✅|✅|✅|✅|✅|\n| lt/lte/gt/gte          |✅|✅|✅|✅|✅|\n| in/not_in              |✅|✅|✅|✅|✅|\n\n## Bools\n| Constraint Rule | Go | GoGo | C++ | Java | Python |\n| ---| :---: | :---: | :---: | :---: | :---: |\n| const                  |✅|✅|✅|✅|✅|\n\n## Strings\n| Constraint Rule | Go | GoGo | C++ | Java | Python |\n| ---| :---: | :---: | :---: | :---: | :---: |\n| const                  |✅|✅|✅|✅|✅|\n| len/min\\_len/max_len   |✅|✅|✅|✅|✅|\n| min\\_bytes/max\\_bytes  |✅|✅|✅|✅|✅|\n| pattern                |✅|✅|✅|✅|✅|\n| prefix/suffix/contains |✅|✅|✅|✅|✅|\n| contains/not_contains  |✅|✅|✅|✅|✅|\n| in/not_in              |✅|✅|✅|✅|✅|\n| email                  |✅|✅|❌|✅|✅|\n| hostname               |✅|✅|✅|✅|✅|\n| address                |✅|✅|✅|✅|✅|\n| ip                     |✅|✅|✅|✅|✅|\n| ipv4                   |✅|✅|✅|✅|✅|\n| ipv6                   |✅|✅|✅|✅|✅|\n| uri                    |✅|✅|❌|✅|✅|\n| uri_ref                |✅|✅|❌|✅|✅|\n| uuid                   |✅|✅|✅|✅|✅|\n| well_known_regex       |✅|✅|✅|✅|✅|\n\n## Bytes\n| Constraint Rule | Go | GoGo | C++ | Java | Python |\n| ---| :---: | :---: | :---: | :---: | :---: |\n| const                  |✅|✅|✅|✅|✅|\n| len/min\\_len/max_len   |✅|✅|✅|✅|✅|\n| pattern                |✅|✅|✅|✅|✅|\n| prefix/suffix/contains |✅|✅|✅|✅|✅|\n| in/not_in              |✅|✅|✅|✅|✅|\n| ip                     |✅|✅|❌|✅|✅|\n| ipv4                   |✅|✅|❌|✅|✅|\n| ipv6                   |✅|✅|❌|✅|✅|\n\n## Enums\n| Constraint Rule | Go | GoGo | C++ | Java | Python |\n| ---| :---: | :---: | :---: | :---: | :---: |\n| const                  |✅|✅|✅|✅|✅|\n| defined_only           |✅|✅|✅|✅|✅|\n| in/not_in              |✅|✅|✅|✅|✅|\n\n## Messages\n| Constraint Rule | Go | GoGo | C++ | Java | Python |\n| ---| :---: | :---: | :---: | :---: | :---: |\n| skip                   |✅|✅|✅|✅|✅|\n| required               |✅|✅|✅|✅|✅|\n\n## Repeated\n| Constraint Rule | Go | GoGo | C++ | Java | Python |\n| ---| :---: | :---: | :---: | :---: | :---: |\n| min\\_items/max_items   |✅|✅|✅|✅|✅|\n| unique                 |✅|✅|✅|✅|✅|\n| items                  |✅|✅|❌|✅|✅|\n\n## Maps\n| Constraint Rule | Go | GoGo | C++ | Java | Python |\n| ---| :---: | :---: | :---: | :---: | :---: |\n| min\\_pairs/max_pairs   |✅|✅|✅|✅|✅|\n| no_sparse              |✅|✅|❌|❌|❌|\n| keys                   |✅|✅|❌|✅|✅|\n| values                 |✅|✅|❌|✅|✅|\n\n## OneOf\n| Constraint Rule | Go | GoGo | C++ | Java | Python |\n| ---| :---: | :---: | :---: | :---: | :---: |\n| required               |✅|✅|✅|✅|✅|\n\n## WKT Scalar Value Wrappers\n| Constraint Rule | Go | GoGo | C++ | Java | Python |\n| ---| :---: | :---: | :---: | :---: | :---: |\n| wrapper validation     |✅|✅|✅|✅|✅|\n\n## WKT Any\n| Constraint Rule | Go | GoGo | C++ | Java | Python |\n| ---| :---: | :---: | :---: | :---: | :---: |\n| required               |✅|✅|✅|✅|✅|\n| in/not_in              |✅|✅|✅|✅|✅|\n\n## WKT Duration\n| Constraint Rule | Go | GoGo | C++ | Java | Python |\n| ---| :---: | :---: | :---: | :---: | :---: |\n| required               |✅|✅|✅|✅|✅|\n| const                  |✅|✅|✅|✅|✅|\n| lt/lte/gt/gte          |✅|✅|✅|✅|✅|\n| in/not_in              |✅|✅|✅|✅|✅|\n\n## WKT Timestamp\n| Constraint Rule | Go | GoGo | C++ | Java | Python |\n| ---| :---: | :---: | :---: | :---: | :---: |\n| required               |✅|✅|❌|✅|✅|\n| const                  |✅|✅|❌|✅|✅|\n| lt/lte/gt/gte          |✅|✅|❌|✅|✅|\n| lt_now/gt_now          |✅|✅|❌|✅|✅|\n| within                 |✅|✅|❌|✅|✅|\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/BUILD.bazel",
    "content": "load(\"@io_bazel_rules_go//go:def.bzl\", \"go_library\")\n\ngo_library(\n    name = \"templates\",\n    srcs = [\"pkg.go\"],\n    importpath = \"github.com/envoyproxy/protoc-gen-validate/templates\",\n    visibility = [\"//visibility:public\"],\n    deps = [\n        \"//templates/cc\",\n        \"//templates/ccnop\",\n        \"//templates/go\",\n        \"//templates/java\",\n        \"//templates/shared\",\n        \"@com_github_lyft_protoc_gen_star_v2//:protoc-gen-star\",\n        \"@com_github_lyft_protoc_gen_star_v2//lang/go\",\n    ],\n)\n\nalias(\n    name = \"go_default_library\",\n    actual = \":templates\",\n    deprecation = \"Use :templates instead of :go_default_library.  Details about the new naming convention: https://github.com/bazelbuild/bazel-gazelle/pull/863\",\n    visibility = [\"//visibility:public\"],\n)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/BUILD.bazel",
    "content": "load(\"@io_bazel_rules_go//go:def.bzl\", \"go_library\")\n\ngo_library(\n    name = \"cc\",\n    srcs = [\n        \"any.go\",\n        \"bytes.go\",\n        \"const.go\",\n        \"duration.go\",\n        \"enum.go\",\n        \"file.go\",\n        \"in.go\",\n        \"known.go\",\n        \"ltgt.go\",\n        \"map.go\",\n        \"message.go\",\n        \"msg.go\",\n        \"none.go\",\n        \"num.go\",\n        \"register.go\",\n        \"repeated.go\",\n        \"string.go\",\n        \"timestamp.go\",\n        \"wrapper.go\",\n    ],\n    importpath = \"github.com/envoyproxy/protoc-gen-validate/templates/cc\",\n    visibility = [\"//visibility:public\"],\n    deps = [\n        \"//templates/shared\",\n        \"@com_github_iancoleman_strcase//:strcase\",\n        \"@com_github_lyft_protoc_gen_star_v2//:protoc-gen-star\",\n        \"@com_github_lyft_protoc_gen_star_v2//lang/go\",\n        \"@org_golang_google_protobuf//types/known/durationpb\",\n        \"@org_golang_google_protobuf//types/known/timestamppb\",\n    ],\n)\n\nalias(\n    name = \"go_default_library\",\n    actual = \":cc\",\n    deprecation = \"Use :cc instead of :go_default_library.  Details about the new naming convention: https://github.com/bazelbuild/bazel-gazelle/pull/863\",\n    visibility = [\"//visibility:public\"],\n)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/any.go",
    "content": "package cc\n\nconst anyTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n\t{{ template \"required\" . }}\n\n\t{{ if $r.In }}\n\t\t{{ $table := lookup $f \"InLookup\" }}\n\t\tif ({{ hasAccessor . }} && {{ $table }}.find({{ accessor . }}.type_url()) == {{ $table }}.end()) {\n\t\t\t{{ err . \"type URL must be in list \" $r.In }}\n\t\t}\n\t{{ else if $r.NotIn }}\n\t\t{{ $table := lookup $f \"NotInLookup\" }}\n\t\tif ({{ hasAccessor . }} && {{ $table }}.find({{ accessor . }}.type_url()) != {{ $table }}.end()) {\n\t\t\t{{ err . \"type URL must not be in list \" $r.NotIn }}\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/bytes.go",
    "content": "package cc\n\nconst bytesTpl = `\n\t{{ $f := .Field }}{{ $r := .Rules }}\n\t{{ if $r.GetIgnoreEmpty }}\n\t\tif ({{ accessor . }}.size() > 0) {\n\t{{ end }}\n\t{{ template \"const\" . }}\n\t{{ template \"in\" . }}\n\n\t{{ if or $r.Len (and $r.MinLen $r.MaxLen (eq $r.GetMinLen $r.GetMaxLen)) }}\n\t{\n\t\tconst auto length = {{ accessor . }}.size();\n\t\t{{ if $r.Len }}\n\t\t\tif (length != {{ $r.GetLen }}) {\n\t\t\t\t{{ err . \"value length must be \" $r.GetLen \" bytes\" }}\n\t\t\t}\n\t\t{{ else }}\n\t\t\tif (length != {{ $r.GetMinLen }}) {\n\t\t\t\t{{ err . \"value length must be \" $r.GetMinLen \" bytes\" }}\n\t\t\t}\n\t\t{{ end }}\n\t}\n\t{{ else if $r.MinLen }}\n\t{\n\t\tconst auto length = {{ accessor . }}.size();\n\t\t{{ if $r.MaxLen }}\n\t\t\tif (length < {{ $r.GetMinLen }} || length > {{ $r.GetMaxLen }}) {\n\t\t\t\t{{ err . \"value length must be between \" $r.GetMinLen \" and \" $r.GetMaxLen \" bytes, inclusive\" }}\n\t\t\t}\n\t\t{{ else }}\n\t\t\tif (length < {{ $r.GetMinLen }}) {\n\t\t\t\t{{ err . \"value length must be at least \" $r.GetMinLen \" bytes\" }}\n\t\t\t}\n\t\t{{ end }}\n\t}\n\t{{ else if $r.MaxLen }}\n\t\tif ({{ accessor . }}.size() > {{ $r.GetMaxLen }}) {\n\t\t\t{{ err . \"value length must be at most \" $r.GetMaxLen \" bytes\" }}\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.Prefix }}\n\t{\n\t\tconst std::string prefix = {{ lit $r.GetPrefix }};\n\t\tif (!pgv::IsPrefix(prefix, {{ accessor . }})) {\n\t\t\t{{ err . \"value does not have prefix \" (lit $r.GetPrefix) }}\n\t\t}\n\t}\n\t{{ end }}\n\n\t{{ if $r.Suffix }}\n\t{\n\t\tconst std::string suffix = {{ lit $r.GetSuffix }};\n\t\tif (!pgv::IsSuffix(suffix, {{ accessor .}})) {\n\t\t\t{{ err . \"value does not have suffix \" (lit $r.GetSuffix) }}\n\t\t}\n\t}\n\t{{ end }}\n\n\t{{ if $r.Contains }}\n\t{\n\t\tif (!pgv::Contains({{ accessor . }}, {{ lit $r.GetContains }})) {\n\t\t\t{{ err . \"value does not contain substring \" (lit $r.GetContains) }}\n\t\t}\n\t}\n\t{{ end }}\n\n        {{ if $r.Pattern }}\n        {\n                if (!RE2::FullMatch(re2::StringPiece({{ accessor . }}.c_str(), {{ accessor . }}.size()),\n                                    {{ lookup $f \"Pattern\" }})) {\n\t\t        {{ err . \"value does not match regex pattern \" (lit $r.GetPattern) }}\n\t        }\n        }\n\t{{ end }}\n\n\t{{ if $r.GetIp }}\n\t\t{{ unimplemented \"C++ ip address validation is not implemented\" }}\n\t\t{{/* TODO(akonradi) implement all of this\n\t\tif ip := net.IP({{ accessor . }}); ip.To16() == nil {\n\t\t\treturn {{ err . \"value must be a valid IP address\" }}\n\t\t}\n\t\t*/}}\n\t{{ else if $r.GetIpv4 }}\n\t\t{{ unimplemented \"C++ ip address validation is not implemented\" }}\n\t\t{{/* TODO(akonradi) implement all of this\n\t\tif ip := net.IP({{ accessor . }}); ip.To4() == nil {\n\t\t\treturn {{ err . \"value must be a valid IPv4 address\" }}\n\t\t}\n\t\t*/}}\n\t{{ else if $r.GetIpv6 }}\n\t\t{{ unimplemented \"C++ ip address validation is not implemented\" }}\n\t\t{{/* TODO(akonradi) implement all of this\n\t\tif ip := net.IP({{ accessor . }}); ip.To16() == nil || ip.To4() != nil {\n\t\t\treturn {{ err . \"value must be a valid IPv6 address\" }}\n\t\t}\n\t\t*/}}\n\t{{ end }}\n\t{{ if $r.GetIgnoreEmpty }}\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/const.go",
    "content": "package cc\n\nconst constTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n\t{{ if $r.Const }}\n\t\tif ({{ accessor . }} != {{ lit $r.GetConst }}) {\n\t\t\t{{- if isEnum $f }}\n\t\t\t{{ err . \"value must equal \" (enumVal $f $r.GetConst) }}\n\t\t\t{{- else }}\n\t\t\t{{ err . \"value must equal \" (lit $r.GetConst) }}\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/duration.go",
    "content": "package cc\n\nconst durationTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n\t{{ template \"required\" . }}\n\n\t{{ if or $r.In $r.NotIn $r.Lt $r.Lte $r.Gt $r.Gte $r.Const }}\n\t    {\n\t        if ({{ hasAccessor . }}) {\n\t\t\tconst pgv::protobuf_wkt::Duration& dur = {{ accessor . }};\n\n\t\t\tif (dur.nanos() > 999999999 || dur.nanos() < -999999999 ||\n\t\t\t    dur.seconds() > pgv::protobuf::util::TimeUtil::kDurationMaxSeconds ||\n\t\t\t    dur.seconds() < pgv::protobuf::util::TimeUtil::kDurationMinSeconds)\n\t\t\t\t{{ errCause . \"err\" \"value is not a valid duration\" }}\n\n\n\t\t\t{{  if $r.Const }}\n\t\t\t\tif (dur != {{ durLit $r.Const }})\n\t\t\t\t\t{{ err . \"value must equal \" (durStr $r.Const) }}\n\t\t\t{{ end }}\n\n\t\t\t{{  if $r.Lt }}  const pgv::protobuf_wkt::Duration lt  = {{ durLit $r.Lt }};  {{ end }}\n\t\t\t{{- if $r.Lte }} const pgv::protobuf_wkt::Duration lte = {{ durLit $r.Lte }}; {{ end }}\n\t\t\t{{- if $r.Gt }}  const pgv::protobuf_wkt::Duration gt  = {{ durLit $r.Gt }};  {{ end }}\n\t\t\t{{- if $r.Gte }} const pgv::protobuf_wkt::Duration gte = {{ durLit $r.Gte }}; {{ end }}\n\n\t\t\t{{ if $r.Lt }}\n\t\t\t\t{{ if $r.Gt }}\n\t\t\t\t\t{{  if durGt $r.GetLt $r.GetGt }}\n\t\t\t\t\t\tif (dur <= gt || dur >= lt)\n\t\t\t\t\t\t\t{{ err . \"value must be inside range (\" (durStr $r.GetGt) \", \" (durStr $r.GetLt) \")\" }}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif (dur >= lt && dur <= gt)\n\t\t\t\t\t\t\t{{ err . \"value must be outside range [\" (durStr $r.GetLt) \", \" (durStr $r.GetGt) \"]\" }}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else if $r.Gte }}\n\t\t\t\t\t{{  if durGt $r.GetLt $r.GetGte }}\n\t\t\t\t\t\tif (dur < gte || dur >= lt)\n\t\t\t\t\t\t\t{{ err . \"value must be inside range [\" (durStr $r.GetGte) \", \" (durStr $r.GetLt) \")\" }}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif (dur >= lt && dur < gte)\n\t\t\t\t\t\t\t{{ err . \"value must be outside range [\" (durStr $r.GetLt) \", \" (durStr $r.GetGte) \")\" }}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else }}\n\t\t\t\t\tif (dur >= lt)\n\t\t\t\t\t\t{{ err . \"value must be less than \" (durStr $r.GetLt) }}\n\t\t\t\t{{ end }}\n\t\t\t{{ else if $r.Lte }}\n\t\t\t\t{{ if $r.Gt }}\n\t\t\t\t\t{{  if durGt $r.GetLte $r.GetGt }}\n\t\t\t\t\t\tif (dur <= gt || dur > lte)\n\t\t\t\t\t\t\t{{ err . \"value must be inside range (\" (durStr $r.GetGt) \", \" (durStr $r.GetLte) \"]\" }}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif (dur > lte && dur <= gt)\n\t\t\t\t\t\t\t{{ err . \"value must be outside range (\" (durStr $r.GetLte) \", \" (durStr $r.GetGt) \"]\" }}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else if $r.Gte }}\n\t\t\t\t\t{{ if durGt $r.GetLte $r.GetGte }}\n\t\t\t\t\t\tif (dur < gte || dur > lte)\n\t\t\t\t\t\t\t{{ err . \"value must be inside range [\" (durStr $r.GetGte) \", \" (durStr $r.GetLte) \"]\" }}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif (dur > lte && dur < gte)\n\t\t\t\t\t\t\t{{ err . \"value must be outside range (\" (durStr $r.GetLte) \", \" (durStr $r.GetGte) \")\" }}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else }}\n\t\t\t\t\tif (dur > lte)\n\t\t\t\t\t\t{{ err . \"value must be less than or equal to \" (durStr $r.GetLte) }}\n\t\t\t\t{{ end }}\n\t\t\t{{ else if $r.Gt }}\n\t\t\t\tif (dur <= gt)\n\t\t\t\t\t{{ err . \"value must be greater than \" (durStr $r.GetGt) }}\n\t\t\t{{ else if $r.Gte }}\n\t\t\t\tif (dur < gte)\n\t\t\t\t\t{{ err . \"value must be greater than or equal to \" (durStr $r.GetGte) }}\n\t\t\t{{ end }}\n\n\n\t\t\t{{ if $r.In }}\n\t\t\t\tif ({{ lookup $f \"InLookup\" }}.find(dur) == {{ lookup $f \"InLookup\" }}.end())\n\t\t\t\t\t{{ err . \"value must be in list \" $r.In }}\n\t\t\t{{ else if $r.NotIn }}\n\t\t\t\tif ({{ lookup $f \"NotInLookup\" }}.find(dur) != {{ lookup $f \"NotInLookup\" }}.end())\n\t\t\t\t\t{{ err . \"value must not be in list \" $r.NotIn }}\n\t\t\t{{ end }}\n\t        }\n\t    }\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/enum.go",
    "content": "package cc\n\nconst enumTpl = `\n\t\t{{ $f := .Field }}{{ $r := .Rules }}\n\t\t{{ template \"const\" . }}\n\t\t{{ template \"in\" . }}\n\n\t\t{{ if $r.GetDefinedOnly }}\n\t\t\t{{ if or $f.Type.IsRepeated $f.Type.IsMap }}\n\t\t\t\tif (!{{ class $f.Type.Element.Enum }}_IsValid({{ accessor . }})) {\n\t\t\t{{ else }}\n\t\t\t\tif (!{{ class $f.Type.Enum }}_IsValid({{ accessor . }})) {\n\t\t\t{{ end }}\n\t\t\t\t{{ err . \"value must be one of the defined enum values\" }}\n\t\t\t}\n\t\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/file.go",
    "content": "package cc\n\nconst moduleFileTpl = `// Code generated by protoc-gen-validate\n// source: {{ .InputPath }}\n// DO NOT EDIT!!!\n\n#include \"{{ output .File \".validate.h\" }}\"\n\n#include <google/protobuf/message.h>\n#include <google/protobuf/util/time_util.h>\n#include \"re2/re2.h\"\n\nnamespace pgv {\n\nnamespace protobuf = google::protobuf;\nnamespace protobuf_wkt = google::protobuf;\n\nnamespace validate {\nusing std::string;\n\n// define the regex for a UUID once up-front\nconst re2::RE2 _uuidPattern(\"^[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}$\");\n\n{{ range .AllMessages }}\n{{- if not (ignored .) -}}\n{{- if not (disabled .) -}}\n\npgv::Validator<{{ class . }}> {{ staticVarName . }}(static_cast<bool(*)(const {{ class .}}&, pgv::ValidationMsg*)>({{ package .}}::Validate));\n\n{{- end -}}\n{{ end }}\n{{ end }}\n\n} // namespace validate\n} // namespace pgv\n\n{{ range .Package.ProtoName.SplitOnDot }}\nnamespace {{ . }} {\n{{- end }}\n\n{{ range .AllMessages }}\n\t{{- template \"msg\" . }}\n{{ end }}\n\n{{ range .Package.ProtoName.SplitOnDot -}}\n} // namespace\n{{ end }}\n`\n\nconst headerFileTpl = `// Code generated by protoc-gen-validate\n// source: {{ .InputPath }}\n// DO NOT EDIT!!!\n\n#pragma once\n\n#include <algorithm>\n#include <string>\n#include <sstream>\n#include <unordered_set>\n#include <vector>\n\n#include \"validate/validate.h\"\n#include \"{{ output .File \".h\" }}\"\n\n{{ range .Package.ProtoName.SplitOnDot }}\nnamespace {{ . }} {\n{{- end }}\n\nusing std::string;\n\n{{ range .AllMessages }}\n\t{{- template \"decl\" . }}\n{{ end }}\n\n{{ range .Package.ProtoName.SplitOnDot -}}\n} // namespace\n{{ end }}\n\n#define X_{{ .Package.ProtoName.ScreamingSnakeCase }}_{{ .File.InputPath.BaseName | screaming_snake_case }}(X) \\\n{{ range .AllMessages -}}\n{{- if not (ignored .) -}}\n\tX({{class . }}) \\\n{{ end -}}\n{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/in.go",
    "content": "package cc\n\nconst inTpl = `{{ $f := .Field -}}{{ $r := .Rules -}}\n\t{{- if $r.In }}\n\t\tif ({{ lookup $f \"InLookup\" }}.find(static_cast<decltype({{ lookup $f \"InLookup\" }})::key_type>({{ accessor . }})) == {{ lookup $f \"InLookup\" }}.end()) {\n\t\t\t{{- if isEnum $f }}\n\t\t\t{{ err . \"value must be in list \" (enumList $f $r.In) }}\n\t\t\t{{- else }}\n\t\t\t{{ err . \"value must be in list \" $r.In }}\n\t\t\t{{- end }}\n\t\t}\n\t{{- else if $r.NotIn }}\n\t\tif ({{ lookup $f \"NotInLookup\" }}.find(static_cast<decltype({{ lookup $f \"NotInLookup\" }})::key_type>({{ accessor . }})) != {{ lookup $f \"NotInLookup\" }}.end()) {\n\t\t\t{{- if isEnum $f }}\n\t\t\t{{ err . \"value must not be in list \" (enumList $f $r.NotIn) }}\n\t\t\t{{- else }}\n\t\t\t{{ err . \"value must not be in list \" $r.NotIn }}\n\t\t\t{{- end }}\n\t\t}\n\t{{- end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/known.go",
    "content": "package cc\n\nconst hostTpl = `\n\tfunc (m {{ .TypeName.Pointer }}) _validateHostname(host string) error {\n\t\ts := strings.TrimSuffix(host, \".\")\n\n\t\tif len(host) > 253 {\n\t\t\treturn errors.New(\"hostname cannot exceed 253 characters\")\n\t\t}\n\n\t\tfor _, part := range strings.Split(s, \".\") {\n\t\t\tif l := len(part); l == 0 || l > 63 {\n\t\t\t\treturn errors.New(\"hostname part must be non-empty and cannot exceed 63 characters\")\n\t\t\t}\n\n\t\t\tif s[0] == '-' {\n\t\t\t\treturn errors.New(\"hostname parts cannot begin with hyphens\")\n\t\t\t}\n\n\t\t\tif s[len(s)-1] == '-' {\n\t\t\t\treturn errors.New(\"hostname parts cannot end with hyphens\")\n\t\t\t}\n\n\t\t\tfor _, r := range s {\n\t\t\t\tif (r < 'A' || r > 'Z') && (r < 'a' || r > 'z') && (r < '0' || r > '9') && r != '-' {\n\t\t\t\t\treturn errors.New(\"hostname parts can only contain alphanumeric characters or hyphens\")\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nil\n\t}\n`\n\nconst emailTpl = `\n\tfunc (m {{ .TypeName.Pointer }}) _validateEmail(addr string) error {\n\t\tif len(addr) > 254 {\n\t\t\treturn errors.New(\"email addresses cannot exceed 254 characters\")\n\t\t}\n\n\t\ta, err := mail.ParseAddress(addr)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddr = a.Address\n\n\t\tparts := strings.SplitN(addr, \"@\", 2)\n\n\t\tif len(parts[0]) > 64 {\n\t\t\treturn errors.New(\"email address local phrase cannot exceed 64 characters\")\n\t\t}\n\n\t\treturn m._validateHostname(parts[1])\n\t}\n`\n\nconst uuidTpl = `\n\tfunc (m {{ .TypeName.Pointer }}) _validateUuid(uuid string) error {\n                if matched := _{{ .File.InputPath.BaseName }}_uuidPattern.MatchString(uuid); !matched {\n                        return errors.New(\"invalid uuid format\")\n                }\n\n                return nil\n        }\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/ltgt.go",
    "content": "package cc\n\nconst ltgtTpl = `{{ $f := .Field }}{{ $r := .Rules }}{{ $v := (accessor .) }}\n\t{{ if $r.Lt }}\n\t\t{{ if $r.Gt }}\n\t\t\t{{  if gt $r.GetLt $r.GetGt }}\n\t\t\t\tif ({{ $v }} <= {{ $r.Gt }} || {{ $v }} >= {{ $r.Lt }}) {\n\t\t\t\t\t{{ err . \"value must be inside range (\" $r.GetGt \", \" $r.GetLt \")\" }}\n\t\t\t\t}\n\t\t\t{{ else }}\n\t\t\t\tif ({{ $v }} >= {{ $r.Lt }} && {{ $v }} <= {{ $r.Gt }}) {\n\t\t\t\t\t{{ err . \"value must be outside range [\" $r.GetLt \", \" $r.GetGt \"]\" }}\n\t\t\t\t}\n\t\t\t{{ end }}\n\t\t{{ else if $r.Gte }}\n\t\t\t{{  if gt $r.GetLt $r.GetGte }}\n\t\t\t\tif ({{ $v }} < {{ $r.Gte }} || {{ $v }} >= {{ $r.Lt }}) {\n\t\t\t\t\t{{ err . \"value must be inside range [\" $r.GetGte \", \" $r.GetLt \")\" }}\n\t\t\t\t}\n\t\t\t{{ else }}\n\t\t\t\tif ({{ $v }} >= {{ $r.Lt }} && {{ $v }} < {{ $r.Gte }}) {\n\t\t\t\t\t{{ err . \"value must be outside range [\" $r.GetLt \", \" $r.GetGte \")\" }}\n\t\t\t\t}\n\t\t\t{{ end }}\n\t\t{{ else }}\n\t\t\tif ({{ accessor . }} >= {{ $r.Lt }}) {\n\t\t\t\t{{ err . \"value must be less than \" $r.GetLt }}\n\t\t\t}\n\t\t{{ end }}\n\t{{ else if $r.Lte }}\n\t\t{{ if $r.Gt }}\n\t\t\t{{  if gt $r.GetLte $r.GetGt }}\n\t\t\t\tif ({{ $v }} <= {{ $r.Gt }} || {{ $v }} > {{ $r.Lte }}) {\n\t\t\t\t\t{{ err . \"value must be inside range (\" $r.GetGt \", \" $r.GetLte \"]\" }}\n\t\t\t\t}\n\t\t\t{{ else }}\n\t\t\t\tif ({{ $v }} > {{ $r.Lte }} && {{ $v }} <= {{ $r.Gt }}) {\n\t\t\t\t\t{{ err . \"value must be outside range (\" $r.GetLte \", \" $r.GetGt \"]\" }}\n\t\t\t\t}\n\t\t\t{{ end }}\n\t\t{{ else if $r.Gte }}\n\t\t\t{{ if gt $r.GetLte $r.GetGte }}\n\t\t\t\tif ({{ $v }} < {{ $r.Gte }} || {{ $v }} > {{ $r.Lte }}) {\n\t\t\t\t\t{{ err . \"value must be inside range [\" $r.GetGte \", \" $r.GetLte \"]\" }}\n\t\t\t\t}\n\t\t\t{{ else }}\n\t\t\t\tif ({{ $v }} > {{ $r.Lte }} && {{ $v }} < {{ $r.Gte }}) {\n\t\t\t\t\t{{ err . \"value must be outside range (\" $r.GetLte \", \" $r.GetGte \")\" }}\n\t\t\t\t}\n\t\t\t{{ end }}\n\t\t{{ else }}\n\t\t\tif ({{ accessor . }} > {{ $r.Lte }}) {\n\t\t\t\t{{ err . \"value must be less than or equal to \" $r.GetLte }}\n\t\t\t}\n\t\t{{ end }}\n\t{{ else if $r.Gt }}\n\t\tif ({{ accessor . }} <= {{ $r.Gt }}) {\n\t\t\t{{ err . \"value must be greater than \" $r.GetGt }}\n\t\t}\n\t{{ else if $r.Gte }}\n\t\tif ({{ accessor . }} < {{ $r.Gte }}) {\n\t\t\t{{ err . \"value must be greater than or equal to \" $r.GetGte }}\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/map.go",
    "content": "package cc\n\nconst mapTpl = `\n\t{{ $f := .Field }}{{ $r := .Rules }}\n\n\t{{ if $r.GetIgnoreEmpty }}\n\t\tif ({{ accessor . }}.size() > 0) {\n\t{{ end }}\n\t{{ if $r.GetMinPairs }}\n\t\t{\n\t\tconst auto size = {{ accessor . }}.size();\n\t\t{{ if eq $r.GetMinPairs $r.GetMaxPairs }}\n\t\t\tif (size != {{ $r.GetMinPairs }}) {\n\t\t\t\t{{ err . \"value must contain exactly \" $r.GetMinPairs \" pair(s)\" }}\n\t\t\t}\n\t\t{{ else if $r.MaxPairs }}\n\t\t\tif (size < {{ $r.GetMinPairs }} || size > {{ $r.GetMaxPairs }}) {\n\t\t\t\t{{ err . \"value must contain between \" $r.GetMinPairs \" and \" $r.GetMaxPairs \" pairs, inclusive\" }}\n\t\t\t}\n\t\t{{ else }}\n\t\t\tif (size < {{ $r.GetMinPairs }}) {\n\t\t\t\t{{ err . \"value must contain at least \" $r.GetMinPairs \" pair(s)\" }}\n\t\t\t}\n\t\t{{ end }}\n\t}\n\t{{ else if $r.MaxPairs }}\n\t\t{\n\t\tconst auto size = {{ accessor . }}.size();\n\t\tif (size > {{ $r.GetMaxPairs }}) {\n\t\t\t{{ err . \"value must contain no more than \" $r.GetMaxPairs \" pair(s)\" }}\n\t\t}\n\t}\n\t{{ end }}\n\n\t{{ if or $r.GetNoSparse (ne (.Elem \"\" \"\").Typ \"none\") (ne (.Key \"\" \"\").Typ \"none\") }}\n\t\tfor (const auto& kv : {{ accessor . }}) {\n\t\t\tconst auto& key = kv.first;\n\t\t\tconst auto& val = kv.second;\n\t\t\t(void)key;\n\t\t\t(void)val;\n\n\t\t\t{{ render (.Key \"key\" \"key\") }}\n\n\t\t\t{{ render (.Elem \"val\" \"key\") }}\n\t\t}\n\n\t\t{{ if $r.GetNoSparse }}\n\t\t\t{{ unimplemented \"no_sparse validation is not implemented for C++ because protobuf maps cannot be sparse in C++\" }}\n\t\t{{ end }}\n\t{{ end }}\n\t{{ if $r.GetIgnoreEmpty }}\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/message.go",
    "content": "package cc\n\nconst messageTpl = `\n\t{{ $f := .Field }}{{ $r := .Rules }}\n\t{{ template \"required\" . }}\n\t{{ if .MessageRules.GetSkip }}\n\t\t// skipping validation for {{ $f.Name }}\n\t{{ else }}\n\t{\n\t\tpgv::ValidationMsg inner_err;\n\t\tif ({{ hasAccessor .}} && !pgv::BaseValidator::AbstractCheckMessage({{ accessor . }}, &inner_err)) {\n\t\t\t{{ errCause . \"inner_err\" \"embedded message failed validation\" }}\n\t\t}\n\t}\n\t{{ end }}\n`\n\nconst requiredTpl = `\n\t{{ if .Rules.GetRequired }}\n\t\tif (!{{ hasAccessor . }}) {\n\t\t\t{{ err . \"value is required\" }}\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/msg.go",
    "content": "package cc\n\nconst declTpl = `\n{{ if not (ignored .) -}}\nextern bool Validate(const {{ class . }}& m, pgv::ValidationMsg* err);\n{{- end -}}\n`\n\nconst msgTpl = `\n{{ if not (ignored .) -}}\n{{ if disabled . -}}\n\t{{ cmt \"Validate is disabled for \" (class .) \". This method will always return true.\" }}\n{{- else -}}\n\t{{ cmt \"Validate checks the field values on \" (class .) \" with the rules defined in the proto definition for this message. If any rules are violated, the return value is false and an error message is written to the input string argument.\" }}\n{{- end -}}\n\n{{ range .Fields }}{{ with (context .) }}{{ $f := .Field }}\n\t{{ if has .Rules \"In\" }}{{ if .Rules.In }}\n\tconst std::set<{{ inType .Field .Rules.In }}> {{ lookup .Field \"InLookup\" }} = {\n\t\t\t{{- range .Rules.In }}\n\t\t\t\t{{ inKey $f . }},\n\t\t\t{{- end }}\n\t\t};\n\t{{ end }}{{ end }}\n\n\t{{ if has .Rules \"NotIn\" }}{{ if .Rules.NotIn }}\n\tconst std::set<{{ inType .Field .Rules.NotIn }}> {{ lookup .Field \"NotInLookup\" }} = {\n\t\t\t{{- range .Rules.NotIn }}\n\t\t\t\t{{ inKey $f . }},\n\t\t\t{{- end }}\n\t\t};\n\t{{ end }}{{ end }}\n\n\t{{ if has .Rules \"Items\"}}{{ if .Rules.Items }}\n\t{{ if has .Rules.Items.GetString_ \"In\" }} {{ if .Rules.Items.GetString_.In }}\n\tconst std::set<string> {{ lookup .Field \"InLookup\" }} = {\n\t\t\t{{- range .Rules.Items.GetString_.In }}\n\t\t\t\t{{ inKey $f . }},\n\t\t\t{{- end }}\n\t\t};\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetInt64 \"In\" }} {{ if .Rules.Items.GetInt64.In }}\n\tconst std::set<int64_t> {{ lookup .Field \"InLookup\" }} = {\n\t\t\t{{- range .Rules.Items.GetInt64.In }}\n\t\t\t\t{{ inKey $f . }},\n\t\t\t{{- end }}\n\t\t};\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetInt32 \"In\" }} {{ if .Rules.Items.GetInt32.In }}\n\tconst std::set<int32_t> {{ lookup .Field \"InLookup\" }} = {\n\t\t\t{{- range .Rules.Items.GetInt32.In }}\n\t\t\t\t{{ inKey $f . }},\n\t\t\t{{- end }}\n\t\t};\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetEnum \"In\" }} {{ if .Rules.Items.GetEnum.In }}\n\tconst std::set<{{ inType .Field .Rules.Items.GetEnum.In }}> {{ lookup .Field \"InLookup\" }} = {\n\t\t\t{{- range .Rules.Items.GetEnum.In }}\n\t\t\t\t{{ inKey $f . }},\n\t\t\t{{- end }}\n\t\t};\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetAny \"In\" }} {{ if .Rules.Items.GetAny.In }}\n\tconst std::set<string> {{ lookup .Field \"InLookup\" }} = {\n\t\t\t{{- range .Rules.Items.GetAny.In }}\n\t\t\t\t{{ inKey $f . }},\n\t\t\t{{- end }}\n\t\t};\n\t{{ end }}{{ end }}\n\t{{ end }}{{ end }}\n\n\t{{ if has .Rules \"Items\"}}{{ if .Rules.Items }}\n\t{{ if has .Rules.Items.GetString_ \"NotIn\" }} {{ if .Rules.Items.GetString_.NotIn }}\n\tconst std::set<string> {{ lookup .Field \"NotInLookup\" }} = {\n\t\t\t{{- range .Rules.Items.GetString_.NotIn }}\n\t\t\t\t{{ inKey $f . }},\n\t\t\t{{- end }}\n\t\t};\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetInt64 \"NotIn\" }} {{ if .Rules.Items.GetInt64.NotIn }}\n\tconst std::set<int64_t> {{ lookup .Field \"NotInLookup\" }} = {\n\t\t\t{{- range .Rules.Items.GetInt64.NotIn }}\n\t\t\t\t{{ inKey $f . }},\n\t\t\t{{- end }}\n\t\t};\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetInt32 \"NotIn\" }} {{ if .Rules.Items.GetInt32.NotIn }}\n\tconst std::set<int32_t> {{ lookup .Field \"NotInLookup\" }} = {\n\t\t\t{{- range .Rules.Items.GetInt32.NotIn }}\n\t\t\t\t{{ inKey $f . }},\n\t\t\t{{- end }}\n\t\t};\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetEnum \"NotIn\" }} {{ if .Rules.Items.GetEnum.NotIn }}\n\tconst std::set<{{ inType .Field .Rules.Items.GetEnum.NotIn }}> {{ lookup .Field \"NotInLookup\" }} = {\n\t\t\t{{- range .Rules.Items.GetEnum.NotIn }}\n\t\t\t\t{{ inKey $f . }},\n\t\t\t{{- end }}\n\t\t};\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetAny \"NotIn\" }} {{ if .Rules.Items.GetAny.NotIn }}\n\tconst std::set<string> {{ lookup .Field \"NotInLookup\" }} = {\n\t\t\t{{- range .Rules.Items.GetAny.NotIn }}\n\t\t\t\t{{ inKey $f . }},\n\t\t\t{{- end }}\n\t\t};\n\t{{ end }}{{ end }}\n\t{{ end }}{{ end }}\n\n        {{ if has .Rules \"Pattern\"}}{{ if .Rules.Pattern }}\n               const re2::RE2 {{ lookup .Field \"Pattern\" }}(re2::StringPiece({{ lit .Rules.GetPattern }},\n                                                            sizeof({{ lit .Rules.GetPattern }}) - 1));\n\t{{ end }}{{ end }}\n\n\t{{ if has .Rules \"Items\"}}{{ if .Rules.Items }}\n        {{ if has .Rules.Items.GetString_ \"Pattern\" }} {{ if .Rules.Items.GetString_.Pattern }}\n               const re2::RE2 {{ lookup .Field \"Pattern\" }}(re2::StringPiece({{ lit .Rules.Items.GetString_.GetPattern }},\n                                              sizeof({{ lit .Rules.Items.GetString_.GetPattern }}) - 1));\n\t{{ end }}{{ end }}\n        {{ end }}{{ end }}\n\n\t{{ if has .Rules \"Keys\"}}{{ if .Rules.Keys }}\n\t{{ if has .Rules.Keys.GetString_ \"In\" }} {{ if .Rules.Keys.GetString_.In }}\n\tconst std::set<string> {{ lookup .Field \"InLookup\" }} = {\n\t\t\t{{- range .Rules.Keys.GetString_.In }}\n\t\t\t\t{{ inKey $f . }},\n\t\t\t{{- end }}\n\t\t};\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Keys.GetString_ \"NotIn\" }} {{ if .Rules.Keys.GetString_.NotIn }}\n\tconst std::set<string> {{ lookup .Field \"NotInLookup\" }} = {\n\t\t\t{{- range .Rules.Keys.GetString_.NotIn }}\n\t\t\t\t{{ inKey $f . }},\n\t\t\t{{- end }}\n\t\t};\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Keys.GetString_ \"Pattern\" }} {{ if .Rules.Keys.GetString_.Pattern }}\n\t\tconst re2::RE2 {{ lookup .Field \"Pattern\" }}(re2::StringPiece({{ lit .Rules.Keys.GetString_.GetPattern }},\n                                              sizeof({{ lit .Rules.Keys.GetString_.GetPattern }}) - 1));\n\t{{ end }}{{ end }}\n\t{{ end }}{{ end }}\n\n\t{{ if has .Rules \"Values\"}}{{ if .Rules.Values }}\n\t{{ if has .Rules.Values.GetString_ \"Pattern\" }} {{ if .Rules.Values.GetString_.Pattern }}\n\t\tconst re2::RE2 {{ lookup .Field \"Pattern\" }}(re2::StringPiece({{ lit .Rules.Values.GetString_.GetPattern }},\n                                              sizeof({{ lit .Rules.Values.GetString_.GetPattern }}) - 1));\n\t{{ end }}{{ end }}\n\t{{ end }}{{ end }}\n\n{{ end }}{{ end }}\n\nbool Validate(const {{ class . }}& m, pgv::ValidationMsg* err) {\n\t(void)m;\n\t(void)err;\n{{- if disabled . }}\n\treturn true;\n{{ else -}}\n\t\t{{ range .NonOneOfFields }}\n\t\t\t{{- render (context .) -}}\n\t\t{{ end -}}\n\t\t{{ range .SyntheticOneOfFields }}\n\t\t\tif ({{ hasAccessor (context .) }}) {\n\t\t\t\t{{ render (context .) }}\n\t\t\t}\n\t\t{{ end }}\n\t\t{{ range .RealOneOfs }}\n\t\t\tswitch (m.{{ .Name }}_case()) {\n\t\t\t\t{{ range .Fields -}}\n\t\t\t\t\tcase {{ oneof . }}:\n\t\t\t\t\t\t{{ render (context .) }}\n\t\t\t\t\t\tbreak;\n\t\t\t\t{{ end -}}\n\t\t\t\t\tdefault:\n\t\t\t\t{{- if required . }}\n\t\t\t\t\t\t*err = \"field: \" {{ .Name | quote | lit }} \", reason: is required\";\n\t\t\t\t\t\treturn false;\n\t\t\t\t{{ end }}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t{{ end }}\n\treturn true;\n{{ end -}}\n}\n{{- end -}}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/none.go",
    "content": "package cc\n\nconst noneTpl = `// no validation rules for {{ .Field.Name }}\n\t{{- if .Index }}[{{ .Index }}]{{ end }}\n\t{{- if .OnKey }} (key){{ end }}`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/num.go",
    "content": "package cc\n\nconst numTpl = `\n\t{{ if .Rules.GetIgnoreEmpty }}\n\t\tif ({{ accessor . }} != 0) {\n\t{{ end }}\n\t{{ template \"const\" . }}\n\t{{ template \"ltgt\" . }}\n\t{{ template \"in\" . }}\n\t{{ if .Rules.GetIgnoreEmpty }}\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/register.go",
    "content": "package cc\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"text/template\"\n\n\t\"github.com/iancoleman/strcase\"\n\tpgs \"github.com/lyft/protoc-gen-star/v2\"\n\tpgsgo \"github.com/lyft/protoc-gen-star/v2/lang/go\"\n\t\"google.golang.org/protobuf/types/known/durationpb\"\n\t\"google.golang.org/protobuf/types/known/timestamppb\"\n\n\t\"github.com/envoyproxy/protoc-gen-validate/templates/shared\"\n)\n\nfunc RegisterModule(tpl *template.Template, params pgs.Parameters) {\n\tfns := CCFuncs{pgsgo.InitContext(params)}\n\n\ttpl.Funcs(map[string]interface{}{\n\t\t\"accessor\":      fns.accessor,\n\t\t\"byteStr\":       fns.byteStr,\n\t\t\"class\":         fns.className,\n\t\t\"cmt\":           pgs.C80,\n\t\t\"ctype\":         fns.cType,\n\t\t\"durGt\":         fns.durGt,\n\t\t\"durLit\":        fns.durLit,\n\t\t\"durStr\":        fns.durStr,\n\t\t\"err\":           fns.err,\n\t\t\"errCause\":      fns.errCause,\n\t\t\"errIdx\":        fns.errIdx,\n\t\t\"errIdxCause\":   fns.errIdxCause,\n\t\t\"hasAccessor\":   fns.hasAccessor,\n\t\t\"inKey\":         fns.inKey,\n\t\t\"inType\":        fns.inType,\n\t\t\"isBytes\":       fns.isBytes,\n\t\t\"lit\":           fns.lit,\n\t\t\"lookup\":        fns.lookup,\n\t\t\"oneof\":         fns.oneofTypeName,\n\t\t\"output\":        fns.output,\n\t\t\"package\":       fns.packageName,\n\t\t\"quote\":         fns.quote,\n\t\t\"staticVarName\": fns.staticVarName,\n\t\t\"tsGt\":          fns.tsGt,\n\t\t\"tsLit\":         fns.tsLit,\n\t\t\"tsStr\":         fns.tsStr,\n\t\t\"typ\":           fns.Type,\n\t\t\"unimplemented\": fns.failUnimplemented,\n\t\t\"unwrap\":        fns.unwrap,\n\t})\n\ttemplate.Must(tpl.Parse(moduleFileTpl))\n\ttemplate.Must(tpl.New(\"msg\").Parse(msgTpl))\n\ttemplate.Must(tpl.New(\"const\").Parse(constTpl))\n\ttemplate.Must(tpl.New(\"ltgt\").Parse(ltgtTpl))\n\ttemplate.Must(tpl.New(\"in\").Parse(inTpl))\n\ttemplate.Must(tpl.New(\"required\").Parse(requiredTpl))\n\n\ttemplate.Must(tpl.New(\"none\").Parse(noneTpl))\n\ttemplate.Must(tpl.New(\"float\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"double\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"int32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"int64\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"uint32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"uint64\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"sint32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"sint64\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"fixed32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"fixed64\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"sfixed32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"sfixed64\").Parse(numTpl))\n\n\ttemplate.Must(tpl.New(\"bool\").Parse(constTpl))\n\ttemplate.Must(tpl.New(\"string\").Parse(strTpl))\n\ttemplate.Must(tpl.New(\"bytes\").Parse(bytesTpl))\n\n\ttemplate.Must(tpl.New(\"email\").Parse(emailTpl))\n\ttemplate.Must(tpl.New(\"hostname\").Parse(hostTpl))\n\ttemplate.Must(tpl.New(\"address\").Parse(hostTpl))\n\ttemplate.Must(tpl.New(\"uuid\").Parse(uuidTpl))\n\n\ttemplate.Must(tpl.New(\"enum\").Parse(enumTpl))\n\ttemplate.Must(tpl.New(\"message\").Parse(messageTpl))\n\ttemplate.Must(tpl.New(\"repeated\").Parse(repTpl))\n\ttemplate.Must(tpl.New(\"map\").Parse(mapTpl))\n\n\ttemplate.Must(tpl.New(\"any\").Parse(anyTpl))\n\ttemplate.Must(tpl.New(\"duration\").Parse(durationTpl))\n\ttemplate.Must(tpl.New(\"timestamp\").Parse(timestampTpl))\n\n\ttemplate.Must(tpl.New(\"wrapper\").Parse(wrapperTpl))\n}\n\nfunc RegisterHeader(tpl *template.Template, params pgs.Parameters) {\n\tfns := CCFuncs{pgsgo.InitContext(params)}\n\n\ttpl.Funcs(map[string]interface{}{\n\t\t\"class\":                fns.className,\n\t\t\"output\":               fns.output,\n\t\t\"screaming_snake_case\": strcase.ToScreamingSnake,\n\t})\n\n\ttemplate.Must(tpl.Parse(headerFileTpl))\n\ttemplate.Must(tpl.New(\"decl\").Parse(declTpl))\n}\n\n// TODO(rodaine): break pgsgo dependency here (with equivalent pgscc subpackage)\ntype CCFuncs struct{ pgsgo.Context }\n\nfunc CcFilePath(f pgs.File, ctx pgsgo.Context, tpl *template.Template) *pgs.FilePath {\n\tout := pgs.FilePath(f.Name().String())\n\tout = out.SetExt(\".pb.validate.\" + tpl.Name())\n\treturn &out\n}\n\nfunc (fns CCFuncs) methodName(name interface{}) string {\n\tnameStr := fmt.Sprintf(\"%s\", name)\n\tswitch nameStr {\n\tcase \"concept\":\n\t\treturn \"concept_\"\n\tcase \"requires\":\n\t\treturn \"requires_\"\n\tcase \"const\":\n\t\treturn \"const_\"\n\tcase \"inline\":\n\t\treturn \"inline_\"\n\tdefault:\n\t\treturn nameStr\n\t}\n}\n\nfunc (fns CCFuncs) accessor(ctx shared.RuleContext) string {\n\tif ctx.AccessorOverride != \"\" {\n\t\treturn ctx.AccessorOverride\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"m.%s()\",\n\t\tfns.methodName(ctx.Field.Name()))\n}\n\nfunc (fns CCFuncs) hasAccessor(ctx shared.RuleContext) string {\n\tif ctx.AccessorOverride != \"\" {\n\t\treturn \"true\"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"m.has_%s()\",\n\t\tfns.methodName(ctx.Field.Name()))\n}\n\ntype childEntity interface {\n\tpgs.Entity\n\tParent() pgs.ParentEntity\n}\n\nfunc (fns CCFuncs) classBaseName(ent childEntity) string {\n\tif m, ok := ent.Parent().(pgs.Message); ok {\n\t\treturn fmt.Sprintf(\"%s_%s\", fns.classBaseName(m), ent.Name().String())\n\t}\n\treturn ent.Name().String()\n}\n\nfunc (fns CCFuncs) className(ent childEntity) string {\n\treturn fns.packageName(ent) + \"::\" + fns.classBaseName(ent)\n}\n\nfunc (fns CCFuncs) packageName(msg pgs.Entity) string {\n\treturn \"::\" + strings.Join(msg.Package().ProtoName().SplitOnDot(), \"::\")\n}\n\nfunc (fns CCFuncs) quote(s interface {\n\tString() string\n},\n) string {\n\treturn strconv.Quote(s.String())\n}\n\nfunc (fns CCFuncs) err(ctx shared.RuleContext, reason ...interface{}) string {\n\treturn fns.errIdxCause(ctx, \"\", \"nil\", reason...)\n}\n\nfunc (fns CCFuncs) errCause(ctx shared.RuleContext, cause string, reason ...interface{}) string {\n\treturn fns.errIdxCause(ctx, \"\", cause, reason...)\n}\n\nfunc (fns CCFuncs) errIdx(ctx shared.RuleContext, idx string, reason ...interface{}) string {\n\treturn fns.errIdxCause(ctx, idx, \"nil\", reason...)\n}\n\nfunc (fns CCFuncs) errIdxCause(ctx shared.RuleContext, idx, cause string, reason ...interface{}) string {\n\tf := ctx.Field\n\terrName := fmt.Sprintf(\"%sValidationError\", f.Message().Name())\n\n\toutput := []string{\n\t\t\"{\",\n\t\t`std::ostringstream msg(\"invalid \");`,\n\t}\n\n\tif ctx.OnKey {\n\t\toutput = append(output, `msg << \"key for \";`)\n\t}\n\toutput = append(output,\n\t\tfmt.Sprintf(`msg << %q << \".\" << %s;`,\n\t\t\terrName, fns.lit(pgsgo.PGGUpperCamelCase(f.Name()))))\n\n\tif idx != \"\" {\n\t\toutput = append(output, fmt.Sprintf(`msg << \"[\" << %s << \"]\";`, idx))\n\t} else if ctx.Index != \"\" {\n\t\toutput = append(output, fmt.Sprintf(`msg << \"[\" << %s << \"]\";`, ctx.Index))\n\t}\n\n\toutput = append(output, fmt.Sprintf(`msg << \": \" << %q;`, fmt.Sprint(reason...)))\n\n\tif cause != \"nil\" && cause != \"\" {\n\t\toutput = append(output, fmt.Sprintf(`msg << \" | caused by \" << %s;`, cause))\n\t}\n\n\toutput = append(output, \"*err = msg.str();\",\n\t\t\"return false;\",\n\t\t\"}\")\n\treturn strings.Join(output, \"\\n\")\n}\n\nfunc (fns CCFuncs) lookup(f pgs.Field, name string) string {\n\treturn fmt.Sprintf(\n\t\t\"_%s_%s_%s\",\n\t\tpgsgo.PGGUpperCamelCase(f.Message().Name()),\n\t\tpgsgo.PGGUpperCamelCase(f.Name()),\n\t\tname,\n\t)\n}\n\nfunc (fns CCFuncs) lit(x interface{}) string {\n\tval := reflect.ValueOf(x)\n\n\tif val.Kind() == reflect.Interface {\n\t\tval = val.Elem()\n\t}\n\n\tif val.Kind() == reflect.Ptr {\n\t\tval = val.Elem()\n\t}\n\n\tswitch val.Kind() {\n\tcase reflect.String:\n\t\treturn fmt.Sprintf(\"%q\", x)\n\tcase reflect.Uint8:\n\t\treturn fmt.Sprintf(\"%d\", x)\n\tcase reflect.Slice:\n\t\tels := make([]string, val.Len())\n\t\tswitch reflect.TypeOf(x).Elem().Kind() {\n\t\tcase reflect.Uint8:\n\t\t\tfor i, l := 0, val.Len(); i < l; i++ {\n\t\t\t\tels[i] = fmt.Sprintf(\"\\\\x%x\", val.Index(i).Interface())\n\t\t\t}\n\t\t\treturn fmt.Sprintf(\"\\\"%s\\\"\", strings.Join(els, \"\"))\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"don't know how to format literals of type %v\", val.Kind()))\n\t\t}\n\tcase reflect.Float32:\n\t\treturn fmt.Sprintf(\"%fF\", x)\n\tdefault:\n\t\treturn fmt.Sprint(x)\n\t}\n}\n\nfunc (fns CCFuncs) isBytes(f interface {\n\tProtoType() pgs.ProtoType\n},\n) bool {\n\treturn f.ProtoType() == pgs.BytesT\n}\n\nfunc (fns CCFuncs) byteStr(x []byte) string {\n\telms := make([]string, len(x))\n\tfor i, b := range x {\n\t\telms[i] = fmt.Sprintf(`\\x%X`, b)\n\t}\n\n\treturn fmt.Sprintf(`\"%s\"`, strings.Join(elms, \"\"))\n}\n\nfunc (fns CCFuncs) oneofTypeName(f pgs.Field) pgsgo.TypeName {\n\treturn pgsgo.TypeName(fmt.Sprintf(\"%s::%sCase::k%s\",\n\t\tfns.className(f.Message()),\n\t\tpgsgo.PGGUpperCamelCase(f.OneOf().Name()),\n\t\tstrings.ReplaceAll(pgsgo.PGGUpperCamelCase(f.Name()).String(), \"_\", \"\")))\n}\n\nfunc (fns CCFuncs) inType(f pgs.Field, x interface{}) string {\n\tswitch f.Type().ProtoType() {\n\tcase pgs.BytesT:\n\t\treturn \"string\"\n\tcase pgs.MessageT:\n\t\tswitch x.(type) {\n\t\tcase []string:\n\t\t\treturn \"string\"\n\t\tcase []*durationpb.Duration:\n\t\t\treturn \"pgv::protobuf_wkt::Duration\"\n\t\tdefault:\n\t\t\treturn fns.className(f.Type().Element().Embed())\n\t\t}\n\tcase pgs.EnumT:\n\t\tfldEn := f.Type().Enum()\n\t\tif f.Type().IsRepeated() {\n\t\t\tfldEn = f.Type().Element().Enum()\n\t\t}\n\n\t\tif fns.ImportPath(f) == fns.ImportPath(fldEn) {\n\t\t\tif f.Type().IsRepeated() {\n\t\t\t\treturn fns.cTypeOfString(fns.Type(f).Value().String()[2:])\n\t\t\t}\n\t\t\treturn fns.cTypeOfString(fns.Type(f).Value().String())\n\t\t}\n\n\t\treturn fns.PackageName(fldEn).String() + \"::\" + fns.Type(f).Value().String()\n\tdefault:\n\t\treturn fns.cType(f.Type())\n\t}\n}\n\nfunc (fns CCFuncs) cType(t pgs.FieldType) string {\n\tif t.IsEmbed() {\n\t\treturn fns.className(t.Embed())\n\t}\n\tif t.IsRepeated() {\n\t\tif t.ProtoType() == pgs.MessageT {\n\t\t\treturn fns.className(t.Element().Embed())\n\t\t}\n\t\t// Strip the leading []\n\t\treturn fns.cTypeOfString(fns.Type(t.Field()).String()[2:])\n\t} else if t.IsMap() {\n\t\tif t.Element().IsEmbed() {\n\t\t\treturn fns.className(t.Element().Embed())\n\t\t}\n\n\t\treturn fns.cTypeOfString(fns.Type(t.Field()).Element().String())\n\t}\n\n\t// Use Value() to strip any potential pointer type.\n\treturn fns.cTypeOfString(fns.Type(t.Field()).Value().String())\n}\n\nfunc (fns CCFuncs) cTypeOfString(s string) string {\n\tswitch s {\n\tcase \"float32\":\n\t\treturn \"float\"\n\tcase \"float64\":\n\t\treturn \"double\"\n\tcase \"int32\":\n\t\treturn \"int32_t\"\n\tcase \"int64\":\n\t\treturn \"int64_t\"\n\tcase \"uint32\":\n\t\treturn \"uint32_t\"\n\tcase \"uint64\":\n\t\treturn \"uint64_t\"\n\tcase \"[]byte\":\n\t\treturn \"string\"\n\tdefault:\n\t\treturn s\n\t}\n}\n\nfunc (fns CCFuncs) inKey(f pgs.Field, x interface{}) string {\n\tswitch f.Type().ProtoType() {\n\tcase pgs.BytesT:\n\t\treturn fns.byteStr(x.([]byte))\n\tcase pgs.MessageT:\n\t\tswitch x := x.(type) {\n\t\tcase *durationpb.Duration:\n\t\t\treturn fns.durLit(x)\n\t\tdefault:\n\t\t\treturn fns.lit(x)\n\t\t}\n\tcase pgs.EnumT:\n\t\treturn fmt.Sprintf(\"%s(%d)\", fns.inType(f, x), x.(int32))\n\tdefault:\n\t\treturn fns.lit(x)\n\t}\n}\n\nfunc (fns CCFuncs) durLit(dur *durationpb.Duration) string {\n\treturn fmt.Sprintf(\n\t\t\"pgv::protobuf::util::TimeUtil::SecondsToDuration(%d) + pgv::protobuf::util::TimeUtil::NanosecondsToDuration(%d)\",\n\t\tdur.GetSeconds(), dur.GetNanos())\n}\n\nfunc (fns CCFuncs) durStr(dur *durationpb.Duration) string {\n\td := dur.AsDuration()\n\treturn d.String()\n}\n\nfunc (fns CCFuncs) durGt(a, b *durationpb.Duration) bool {\n\tad := a.AsDuration()\n\tbd := b.AsDuration()\n\n\treturn ad > bd\n}\n\nfunc (fns CCFuncs) tsLit(ts *timestamppb.Timestamp) string {\n\treturn fmt.Sprintf(\n\t\t\"time.Unix(%d, %d)\",\n\t\tts.GetSeconds(), ts.GetNanos(),\n\t)\n}\n\nfunc (fns CCFuncs) tsGt(a, b *timestamppb.Timestamp) bool {\n\tat := a.AsTime()\n\tbt := b.AsTime()\n\n\treturn !bt.Before(at)\n}\n\nfunc (fns CCFuncs) tsStr(ts *timestamppb.Timestamp) string {\n\tt := ts.AsTime()\n\treturn t.String()\n}\n\nfunc (fns CCFuncs) unwrap(ctx shared.RuleContext, name string) (shared.RuleContext, error) {\n\tctx, err := ctx.Unwrap(\"wrapper\")\n\tif err != nil {\n\t\treturn ctx, err\n\t}\n\n\tctx.AccessorOverride = fmt.Sprintf(\"%s.%s()\", name,\n\t\tctx.Field.Type().Embed().Fields()[0].Name())\n\n\treturn ctx, nil\n}\n\nfunc (fns CCFuncs) failUnimplemented(message string) string {\n\tif len(message) == 0 {\n\t\treturn \"throw pgv::UnimplementedException();\"\n\t}\n\n\treturn fmt.Sprintf(`throw pgv::UnimplementedException(%q);`, message)\n}\n\nfunc (fns CCFuncs) staticVarName(msg pgs.Message) string {\n\treturn \"validator_\" + strings.ReplaceAll(fns.className(msg), \":\", \"_\")\n}\n\nfunc (fns CCFuncs) output(file pgs.File, ext string) string {\n\treturn pgs.FilePath(file.Name().String()).SetExt(\".pb\" + ext).String()\n}\n\nfunc (fns CCFuncs) Type(f pgs.Field) pgsgo.TypeName {\n\ttyp := fns.Context.Type(f)\n\n\t// Adaptation of repeated types\n\tif f.Type().ProtoType() == pgs.EnumT {\n\t\tparts := strings.Split(typ.String(), \".\")\n\t\ttyp = pgsgo.TypeName(parts[len(parts)-1])\n\t}\n\n\treturn typ\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/repeated.go",
    "content": "package cc\n\nconst repTpl = `\n\t{{ $f := .Field }}{{ $r := .Rules }}{{ $typ := inType $f nil }}\n\t{{ if $r.GetIgnoreEmpty }}\n\t\tif ({{ accessor . }}.size() > 0) {\n\t{{ end }}\n\t{{ if $r.GetMinItems }}\n\t\t{{ if eq $r.GetMinItems $r.GetMaxItems }}\n\t\t\tif ({{ accessor . }}.size() != {{ $r.GetMinItems }}) {\n\t\t\t\t{{ err . \"value must contain exactly \" $r.GetMinItems \" item(s)\" }}\n\t\t\t}\n\t\t{{ else if $r.MaxItems }}\n\t\t\tif ({{ accessor . }}.size() < {{ $r.GetMinItems }} || {{ accessor . }}.size() > {{ $r.GetMaxItems }}) {\n\t\t\t \t{{ err . \"value must contain between \" $r.GetMinItems \" and \" $r.GetMaxItems \" items, inclusive\" }}\n\t\t\t}\n\t\t{{ else }}\n\t\t\tif ({{ accessor . }}.size() < {{ $r.GetMinItems }}) {\n\t\t\t\t{{ err . \"value must contain at least \" $r.GetMinItems \" item(s)\" }}\n\t\t\t}\n\t\t{{ end }}\n\t{{ else if $r.MaxItems }}\n\t\tif ({{ accessor . }}.size() > {{ $r.GetMaxItems }}) {\n\t\t\t{{ err . \"value must contain no more than \" $r.GetMaxItems \" item(s)\" }}\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.GetUnique }}\n\t// Implement comparison for wrapped reference types\n\tstruct cmp {\n\t\tbool operator() (const std::reference_wrapper<{{ $typ }}> lhs, const std::reference_wrapper<{{ $typ }}> rhs) const {\n\t\t\treturn lhs.get() == rhs.get();\n\t\t}\n\t};\n\n\t// Implement hashing for wrapped reference types\n\tstruct hash {\n\t\tstd::hash<{{ $typ }}> hash_fn;\n\t\tbool operator() (const std::reference_wrapper<{{ $typ }}> ref) const {\n\t\t\treturn hash_fn(ref.get());\n\t\t}\n\t};\n\n\t// Save a set of references to avoid copying overhead\n\tstd::unordered_set<std::reference_wrapper<{{ $typ }}>, hash, cmp> {{ lookup $f \"Unique\" }};\n\t{{ end }}\n\n\t{{ if or $r.GetUnique (ne (.Elem \"\" \"\").Typ \"none\") }}\n\t\tfor (int i = 0; i < {{ accessor . }}.size(); i++) {\n\t\t\tconst auto& item = {{ accessor . }}.Get(i);\n\t\t\t(void)item;\n\n\t\t\t{{ if $r.GetUnique }}\n\t\t\t\tauto p = {{ lookup $f \"Unique\" }}.emplace(const_cast<{{ $typ }}&>(item));\n\t\t\t\tif (p.second == false) {\n\t\t\t\t\t{{ errIdx . \"i\" \"repeated value must contain unique items\" }}\n\t\t\t\t}\n\t\t\t{{ end }}\n\n\t\t\t{{ render (.Elem \"item\" \"i\") }}\n\t\t}\n\t{{ end }}\n\t{{ if $r.GetIgnoreEmpty }}\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/string.go",
    "content": "package cc\n\nconst strTpl = `\n\t{{ $f := .Field }}{{ $r := .Rules }}\n\t{{ if $r.GetIgnoreEmpty }}\n\t\tif ({{ accessor . }} != \"\") {\n\t{{ end }}\n\t{{ template \"const\" . }}\n\t{{ template \"in\" . }}\n\t{{ if or $r.Len (and $r.MinLen $r.MaxLen (eq $r.GetMinLen $r.GetMaxLen)) }}\n\t\t{{ if $r.Len }}\n\t\t\tif (pgv::Utf8Len({{ accessor . }}) != {{ $r.GetLen }}) {\n\t\t\t\t{{ err . \"value must be \" $r.GetLen \" characters\" }}\n\t\t\t}\n\t\t{{ else }}\n\t\t\tif (pgv::Utf8Len({{ accessor . }}) != {{ $r.GetMinLen }}) {\n\t\t\t\t{{ err . \"value must be \" $r.GetMinLen \" characters\" }}\n\t\t\t}\n\t\t{{ end }}\n\t{{ else if $r.MinLen }}\n\t\t{{ if $r.MaxLen }}\n\t\t\t{\n\t\t\t\tconst auto length = pgv::Utf8Len({{ accessor . }});\n\t\t\t\tif (length < {{ $r.GetMinLen }} || length > {{ $r.GetMaxLen }}) {\n\t\t\t\t\t{{ err . \"value must have between \" $r.GetMinLen \" and \" $r.GetMaxLen \" characters inclusive\" }}\n\t\t\t\t}\n\t\t\t}\n\t\t{{ else }}\n\t\t\tif (pgv::Utf8Len({{ accessor . }}) < {{ $r.GetMinLen }}) {\n\t\t\t\t{{ err . \"value length must be at least \" $r.GetMinLen \" characters\" }}\n\t\t\t}\n\t\t{{ end }}\n\t{{ else if $r.MaxLen }}\n\t\tif (pgv::Utf8Len({{ accessor . }}) > {{ $r.GetMaxLen }}) {\n\t\t\t{{ err . \"value length must be at most \" $r.GetMaxLen \" characters\" }}\n\t\t}\n\t{{ end }}\n\n\t{{ if or $r.LenBytes (and $r.MinBytes $r.MaxBytes (eq $r.GetMinBytes $r.GetMaxBytes)) }}\n\t{\n\t\tconst auto length = {{ accessor . }}.size();\n\t\t{{ if $r.LenBytes }}\n\t\t\tif (length != {{ $r.GetLenBytes }}) {\n\t\t\t\t{{ err . \"value length must be \" $r.GetLenBytes \" bytes\" }}\n\t\t\t}\n\t\t{{ else }}\n\t\t\tif (length != {{ $r.GetMinBytes }}) {\n\t\t\t\t{{ err . \"value length must be \" $r.GetMinBytes \" bytes\" }}\n\t\t\t}\n\t\t{{ end }}\n\t}\n\t{{ else if $r.MinBytes }}\n\t{\n\t\tconst auto length = {{ accessor . }}.size();\n\t\t{{ if $r.MaxBytes }}\n\t\t\t{{ if eq $r.GetMinBytes $r.GetMaxBytes }}\n\t\t\t\tif (length != {{ $r.GetMinBytes }}) {\n\t\t\t\t\t{{ err . \"value length must be \" $r.GetMinBytes \" bytes\" }}\n\t\t\t\t}\n\t\t\t{{ else }}\n\t\t\t\tif (length < {{ $r.GetMinBytes }} || length > {{ $r.GetMaxBytes }}) {\n\t\t\t\t\t{{ err . \"value length must be between \" $r.GetMinBytes \" and \" $r.GetMaxBytes \" bytes, inclusive\" }}\n\t\t\t\t}\n\t\t\t{{ end }}\n\t\t{{ else }}\n\t\t\tif (length < {{ $r.GetMinBytes }}) {\n\t\t\t\t{{ err . \"value length must be at least \" $r.GetMinBytes \" bytes\" }}\n\t\t\t}\n\t\t{{ end }}\n\t}\n\t{{ else if $r.MaxBytes }}\n\t\tif ({{ accessor . }}.size() > {{ $r.GetMaxBytes }}) {\n\t\t\t{{ err . \"value length must be at most \" $r.GetMaxBytes \" bytes\" }}\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.Prefix }}\n\t{\n\t\tconst std::string prefix = {{ lit $r.GetPrefix }};\n\t\tif (!pgv::IsPrefix(prefix, {{ accessor . }})) {\n\t\t\t{{ err . \"value does not have prefix \" (lit $r.GetPrefix) }}\n\t\t}\n\t}\n\t{{ end }}\n\n\t{{ if $r.Suffix }}\n\t{\n\t\tconst std::string suffix = {{ lit $r.GetSuffix }};\n\t\tconst std::string& value = {{ accessor . }};\n\t\tif (!pgv::IsSuffix(suffix, value)) {\n\t\t\t{{ err . \"value does not have suffix \" (lit $r.GetSuffix) }}\n\t\t}\n\t}\n\t{{ end }}\n\n\t{{ if $r.Contains }}\n\t{\n\t\tif (!pgv::Contains({{ accessor . }}, {{ lit $r.GetContains }})) {\n\t\t\t{{ err . \"value does not contain substring \" (lit $r.GetContains) }}\n\t\t}\n\t}\n        {{ end }}\n\n\t{{ if $r.NotContains }}\n\t{\n\t\tif (pgv::Contains({{ accessor . }}, {{ lit $r.GetNotContains }})) {\n\t\t\t{{ err . \"value contains substring \" (lit $r.GetNotContains) }}\n\t\t}\n\t}\n\t{{ end }}\n\n        {{ if $r.Pattern }}\n        {\n                if (!RE2::FullMatch(re2::StringPiece({{ accessor . }}.c_str(), {{ accessor . }}.size()),\n                                    {{ lookup $f \"Pattern\" }})) {\n\t\t        {{ err . \"value does not match regex pattern \" (lit $r.GetPattern) }}\n\t        }\n        }\n\t{{ end }}\n\n\t{{ if $r.GetIp }}\n\t{\n\t\tconst std::string& value = {{ accessor . }};\n\t\tif (!pgv::IsIp(value)) {\n\t\t\t{{ err . \"value must be a valid IP Address\" }}\n\t\t}\n\t}\n\t{{ else if $r.GetIpv4 }}\n\t{\n\t\tconst std::string& value = {{ accessor . }};\n\t\tif (!pgv::IsIpv4(value)) {\n\t\t\t{{ err . \"value must be a valid IPv4 Address\" }}\n\t\t}\n\t}\n\t{{ else if $r.GetIpv6 }}\n\t{\n\t\tconst std::string& value = {{ accessor . }};\n\t\tif (!pgv::IsIpv6(value)) {\n\t\t\t{{ err . \"value must be a valid IPv6 Address\" }}\n\t\t}\n\t}\n\t{{ else if $r.GetEmail }}\n\t\t{{ unimplemented \"C++ email address validation is not implemented\" }}\n\t\t{{/* TODO(akonradi) implement email address constraints\n\t\tif err := m._validateEmail({{ accessor . }}); err != nil {\n\t\t\treturn {{ errCause . \"err\" \"value must be a valid email address\" }}\n\t\t}\n\t\t*/}}\n\t{{ else if $r.GetAddress }}\n\t{\n\t\tconst std::string& value = {{ accessor . }};\n\n\t\tif (!pgv::IsHostname(value) && !pgv::IsIp(value)) {\n\t\t\t{{ err . \"value must be an ip address, or a hostname.\" }}\n\t\t}\n\t}\n\t{{ else if $r.GetHostname }}\n\t{\n\t\tconst std::string& value = {{ accessor . }};\n\n\t\tif (!pgv::IsHostname(value)) {\n\t\t\t{{ err . \"value must be a valid hostname\" }}\n\t\t}\n\t}\n\t{{ else if $r.GetUri }}\n\t\t{{ unimplemented \"C++ URI validation is not implemented\" }}\n\t\t{{/* TODO(akonradi) implement URI constraints\n\t\tif uri, err := url.Parse({{ accessor . }}); err != nil {\n\t\t\treturn {{ errCause . \"err\" \"value must be a valid URI\" }}\n\t\t} else if !uri.IsAbs() {\n\t\t\treturn {{ err . \"value must be absolute\" }}\n\t\t}\n\t\t*/}}\n\t{{ else if $r.GetUriRef }}\n\t\t{{ unimplemented \"C++ URI validation is not implemented\" }}\n\t\t{{/* TODO(akonradi) implement URI constraints\n\t\tif _, err := url.Parse({{ accessor . }}); err != nil {\n\t\t\treturn {{ errCause . \"err\" \"value must be a valid URI\" }}\n\t\t}\n\t\t*/}}\n\t{{ else if $r.GetUuid }}\n                if (!RE2::FullMatch(re2::StringPiece({{ accessor . }}), pgv::validate::_uuidPattern)) {\n                        {{ err . \"value must be a valid UUID\" }}\n                }\n\t{{ end }}\n\t{{ if $r.GetIgnoreEmpty }}\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/timestamp.go",
    "content": "package cc\n\nconst timestampTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n\t{{ template \"required\" . }}\n\n\t{{ if or $r.Lt $r.Lte $r.Gt $r.Gte $r.LtNow $r.GtNow $r.Within $r.Const }}\n\t\t{{ unimplemented \"C++ timestamp comparison validations are not implemented\" }}\n\t\t{{/*\n\t\tif t := {{ accessor . }}; t != nil {\n\t\t\tts, err := ptypes.Timestamp(t)\n\t\t\tif err != nil { return {{ errCause . \"err\" \"value is not a valid timestamp\" }} }\n\n\t\t\t{{ if or $r.LtNow $r.GtNow $r.Within }} now := time.Now(); {{ end }}\n\t\t\t{{- if $r.Lt }}  lt  := {{ tsLit $r.Lt }};  {{ end }}\n\t\t\t{{- if $r.Lte }} lte := {{ tsLit $r.Lte }}; {{ end }}\n\t\t\t{{- if $r.Gt }}  gt  := {{ tsLit $r.Gt }};  {{ end }}\n\t\t\t{{- if $r.Gte }} gte := {{ tsLit $r.Gte }}; {{ end }}\n\t\t\t{{- if $r.Within }} within := {{ durLit $r.Within }}; {{ end }}\n\n\t\t\t{{ if $r.Lt }}\n\t\t\t\t{{ if $r.Gt }}\n\t\t\t\t\t{{  if tsGt $r.GetLt $r.GetGt }}\n\t\t\t\t\t\tif ts.Sub(gt) <= 0 || ts.Sub(lt) >= 0 {\n\t\t\t\t\t\t\treturn {{ err . \"value must be inside range (\" (tsStr $r.GetGt) \", \" (tsStr $r.GetLt) \")\" }}\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif ts.Sub(lt) >= 0 && ts.Sub(gt) <= 0 {\n\t\t\t\t\t\t\treturn {{ err . \"value must be outside range [\" (tsStr $r.GetLt) \", \" (tsStr $r.GetGt) \"]\" }}\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else if $r.Gte }}\n\t\t\t\t\t{{  if tsGt $r.GetLt $r.GetGte }}\n\t\t\t\t\t\tif ts.Sub(gte) < 0 || ts.Sub(lt) >= 0 {\n\t\t\t\t\t\t\treturn {{ err . \"value must be inside range [\" (tsStr $r.GetGte) \", \" (tsStr $r.GetLt) \")\" }}\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif ts.Sub(lt) >= 0 && ts.Sub(gte) < 0 {\n\t\t\t\t\t\t\treturn {{ err . \"value must be outside range [\" (tsStr $r.GetLt) \", \" (tsStr $r.GetGte) \")\" }}\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else }}\n\t\t\t\t\tif ts.Sub(lt) >= 0 {\n\t\t\t\t\t\treturn {{ err . \"value must be less than \" (tsStr $r.GetLt) }}\n\t\t\t\t\t}\n\t\t\t\t{{ end }}\n\t\t\t{{ else if $r.Lte }}\n\t\t\t\t{{ if $r.Gt }}\n\t\t\t\t\t{{  if tsGt $r.GetLte $r.GetGt }}\n\t\t\t\t\t\tif ts.Sub(gt) <= 0 || ts.Sub(lte) > 0 {\n\t\t\t\t\t\t\treturn {{ err . \"value must be inside range (\" (tsStr $r.GetGt) \", \" (tsStr $r.GetLte) \"]\" }}\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif ts.Sub(lte) > 0 && ts.Sub(gt) <= 0 {\n\t\t\t\t\t\t\treturn {{ err . \"value must be outside range (\" (tsStr $r.GetLte) \", \" (tsStr $r.GetGt) \"]\" }}\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else if $r.Gte }}\n\t\t\t\t\t{{ if tsGt $r.GetLte $r.GetGte }}\n\t\t\t\t\t\tif ts.Sub(gte) < 0 || ts.Sub(lte) > 0 {\n\t\t\t\t\t\t\treturn {{ err . \"value must be inside range [\" (tsStr $r.GetGte) \", \" (tsStr $r.GetLte) \"]\" }}\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif ts.Sub(lte) > 0 && ts.Sub(gte) < 0 {\n\t\t\t\t\t\t\treturn {{ err . \"value must be outside range (\" (tsStr $r.GetLte) \", \" (tsStr $r.GetGte) \")\" }}\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else }}\n\t\t\t\t\tif ts.Sub(lte) > 0 {\n\t\t\t\t\t\treturn {{ err . \"value must be less than or equal to \" (tsStr $r.GetLte) }}\n\t\t\t\t\t}\n\t\t\t\t{{ end }}\n\t\t\t{{ else if $r.Gt }}\n\t\t\t\tif ts.Sub(gt) <= 0 {\n\t\t\t\t\treturn {{ err . \"value must be greater than \" (tsStr $r.GetGt) }}\n\t\t\t\t}\n\t\t\t{{ else if $r.Gte }}\n\t\t\t\tif ts.Sub(gte) < 0 {\n\t\t\t\t\treturn {{ err . \"value must be greater than or equal to \" (tsStr $r.GetGte) }}\n\t\t\t\t}\n\t\t\t{{ else if $r.LtNow }}\n\t\t\t\t{{ if $r.Within }}\n\t\t\t\t\tif ts.Sub(now) >= 0 || ts.Sub(now.Add(-within)) < 0 {\n\t\t\t\t\t\treturn {{ err . \"value must be less than now within \" (durStr $r.GetWithin) }}\n\t\t\t\t\t}\n\t\t\t\t{{ else }}\n\t\t\t\t\tif ts.Sub(now) >= 0 {\n\t\t\t\t\t\treturn {{ err . \"value must be less than now\" }}\n\t\t\t\t\t}\n\t\t\t\t{{ end }}\n\t\t\t{{ else if $r.GtNow }}\n\t\t\t\t{{ if $r.Within }}\n\t\t\t\t\tif ts.Sub(now) >= 0 || ts.Sub(now.Add(within)) > 0 {\n\t\t\t\t\t\treturn {{ err . \"value must be greater than now within \" (durStr $r.GetWithin) }}\n\t\t\t\t\t}\n\t\t\t\t{{ else }}\n\t\t\t\t\tif ts.Sub(now) <= 0 {\n\t\t\t\t\t\treturn {{ err . \"value must be greater than now\" }}\n\t\t\t\t\t}\n\t\t\t\t{{ end }}\n\t\t\t{{ else if $r.Within }}\n\t\t\t\tif ts.Sub(now.Add(within)) >= 0 || ts.Sub(now.Add(-within)) <= 0 {\n\t\t\t\t\treturn {{ err . \"value must be within \" (durStr $r.GetWithin) \" of now\" }}\n\t\t\t\t}\n\t\t\t{{ end }}\n\t\t}\n\t\t*/}}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/cc/wrapper.go",
    "content": "package cc\n\nconst wrapperTpl = `\n\t{{ $f := .Field }}{{ $r := .Rules }}\n\n\tif ({{ hasAccessor . }}) {\n\t\tconst auto wrapped = {{ accessor . }};\n\t\t{{ render (unwrap . \"wrapped\") }}\n\t} {{ if .MessageRules.GetRequired }} else {\n\t\t{{ err . \"value is required and must not be nil.\" }}\n\t} {{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/ccnop/BUILD.bazel",
    "content": "load(\"@io_bazel_rules_go//go:def.bzl\", \"go_library\")\n\ngo_library(\n    name = \"ccnop\",\n    srcs = [\n        \"file.go\",\n        \"register.go\",\n    ],\n    importpath = \"github.com/envoyproxy/protoc-gen-validate/templates/ccnop\",\n    visibility = [\"//visibility:public\"],\n    deps = [\n        \"//templates/cc\",\n        \"@com_github_lyft_protoc_gen_star_v2//:protoc-gen-star\",\n    ],\n)\n\nalias(\n    name = \"go_default_library\",\n    actual = \":ccnop\",\n    visibility = [\"//visibility:public\"],\n)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/ccnop/file.go",
    "content": "package ccnop\n\nconst headerFileTpl = `// Code generated by protoc-gen-validate\n// source: {{ .InputPath }}\n// DO NOT EDIT!!!\n\n#pragma once\n\n#include <string>\n\n#include \"validate/validate.h\"\n#include \"{{ output .File \".h\" }}\"\n\n{{ range .Package.ProtoName.SplitOnDot }}\nnamespace {{ . }} {\n{{- end }}\n\nusing std::string;\n\n{{ range .AllMessages }}\n\textern inline bool Validate(__attribute__((unused)) const {{ class . }}& m, __attribute__((unused)) pgv::ValidationMsg* err) { return true; }\n{{ end }}\n\n{{ range .Package.ProtoName.SplitOnDot -}}\n} // namespace\n{{ end }}\n\n{{ range .AllMessages -}}\n{{- if not (ignored .) -}}\n{{ end -}}\n{{ end }}\n`\n\nconst moduleFileTpl = `// Code generated by protoc-gen-validate\n// source: {{ .InputPath }}\n// DO NOT EDIT!!!\n\nnamespace pgv {\nnamespace validate {\n\n} // namespace validate\n} // namespace pgv\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/ccnop/register.go",
    "content": "package ccnop\n\nimport (\n\t\"text/template\"\n\n\tpgs \"github.com/lyft/protoc-gen-star/v2\"\n\n\t\"github.com/envoyproxy/protoc-gen-validate/templates/cc\"\n)\n\nfunc RegisterModule(tpl *template.Template, params pgs.Parameters) {\n\tcc.RegisterModule(tpl, params)\n\ttemplate.Must(tpl.Parse(moduleFileTpl))\n}\n\nfunc RegisterHeader(tpl *template.Template, params pgs.Parameters) {\n\tcc.RegisterHeader(tpl, params)\n\ttemplate.Must(tpl.Parse(headerFileTpl))\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/go/BUILD.bazel",
    "content": "load(\"@io_bazel_rules_go//go:def.bzl\", \"go_library\")\n\ngo_library(\n    name = \"go\",\n    srcs = [\n        \"duration.go\",\n        \"file.go\",\n        \"message.go\",\n        \"register.go\",\n        \"required.go\",\n        \"timestamp.go\",\n    ],\n    importpath = \"github.com/envoyproxy/protoc-gen-validate/templates/go\",\n    visibility = [\"//visibility:public\"],\n    deps = [\n        \"//templates/goshared\",\n        \"@com_github_lyft_protoc_gen_star_v2//:protoc-gen-star\",\n    ],\n)\n\nalias(\n    name = \"go_default_library\",\n    actual = \":go\",\n    deprecation = \"Use :go instead of :go_default_library.  Details about the new naming convention: https://github.com/bazelbuild/bazel-gazelle/pull/863\",\n    visibility = [\"//visibility:public\"],\n)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/go/duration.go",
    "content": "package golang\n\nconst durationTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n\t{{ template \"required\" . }}\n\n\t{{ if or $r.In $r.NotIn $r.Lt $r.Lte $r.Gt $r.Gte $r.Const }}\n\t\tif d := {{ accessor . }}; d != nil {\n\t\t\tdur, err := d.AsDuration(), d.CheckValid()\n\t\t\tif err != nil {\n\t\t\t\terr = {{ errCause . \"err\" \"value is not a valid duration\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t} else {\n\t\t\t\t{{ template \"durationcmp\" . }}\n\t\t\t}\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/go/file.go",
    "content": "package golang\n\nconst fileTpl = `// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: {{ .InputPath }}\n\npackage {{ pkg . }}\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/mail\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/types/known/anypb\"\n\n\t{{ range $pkg, $enum := enumPackages (externalEnums .) }}\n\t\t{{ $pkg }} \"{{ $enum.FilePath }}\"\n\t{{ end }}\n)\n\n// ensure the imports are used\nvar (\n\t_ = bytes.MinRead\n\t_ = errors.New(\"\")\n\t_ = fmt.Print\n\t_ = utf8.UTFMax\n\t_ = (*regexp.Regexp)(nil)\n\t_ = (*strings.Reader)(nil)\n\t_ = net.IPv4len\n\t_ = time.Duration(0)\n\t_ = (*url.URL)(nil)\n\t_ = (*mail.Address)(nil)\n\t_ = anypb.Any{}\n\t_ = sort.Sort\n\n\t{{ range $pkg, $enum := enumPackages (externalEnums .) }}\n\t_ = {{ $pkg }}.{{ $enum.Name }}(0)\n\t{{ end }}\n)\n\n{{- if fileneeds . \"uuid\" }}\n// define the regex for a UUID once up-front\nvar _{{ snakeCase .File.InputPath.BaseName }}_uuidPattern = regexp.MustCompile(\"^[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}$\")\n{{ end }}\n\n{{ range .AllMessages }}\n\t{{ template \"msg\" . }}\n{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/go/message.go",
    "content": "package golang\n\n// Embedded message validation.\nconst messageTpl = `\n\t{{ $f := .Field }}{{ $r := .Rules }}\n\t{{ template \"required\" . }}\n\n\t{{ if .MessageRules.GetSkip }}\n\t\t// skipping validation for {{ $f.Name }}\n\t{{ else }}\n\t\tif all {\n\t\t\tswitch v := interface{}({{ accessor . }}).(type) {\n\t\t\t\tcase interface{ ValidateAll() error }:\n\t\t\t\t\tif err := v.ValidateAll(); err != nil {\n\t\t\t\t\t\terrors = append(errors, {{ errCause . \"err\" \"embedded message failed validation\" }})\n\t\t\t\t\t}\n\t\t\t\tcase interface{ Validate() error }:\n\t\t\t\t\t{{- /* Support legacy validation for messages that were generated with a plugin version prior to existence of ValidateAll() */ -}}\n\t\t\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\t\t\terrors = append(errors, {{ errCause . \"err\" \"embedded message failed validation\" }})\n\t\t\t\t\t}\n\t\t\t}\n\t\t} else if v, ok := interface{}({{ accessor . }}).(interface{ Validate() error }); ok {\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\treturn {{ errCause . \"err\" \"embedded message failed validation\" }}\n\t\t\t}\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/go/register.go",
    "content": "package golang\n\nimport (\n\t\"text/template\"\n\n\tpgs \"github.com/lyft/protoc-gen-star/v2\"\n\n\t\"github.com/envoyproxy/protoc-gen-validate/templates/goshared\"\n)\n\nfunc Register(tpl *template.Template, params pgs.Parameters) {\n\tgoshared.Register(tpl, params)\n\ttemplate.Must(tpl.Parse(fileTpl))\n\ttemplate.Must(tpl.New(\"required\").Parse(requiredTpl))\n\ttemplate.Must(tpl.New(\"timestamp\").Parse(timestampTpl))\n\ttemplate.Must(tpl.New(\"duration\").Parse(durationTpl))\n\ttemplate.Must(tpl.New(\"message\").Parse(messageTpl))\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/go/required.go",
    "content": "package golang\n\nconst requiredTpl = `\n\t{{ if .Rules.GetRequired }}\n\t\tif {{ accessor . }} == nil {\n\t\t\terr := {{ err . \"value is required\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/go/timestamp.go",
    "content": "package golang\n\nconst timestampTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n\t{{ template \"required\" . }}\n\n\t{{ if or $r.Lt $r.Lte $r.Gt $r.Gte $r.LtNow $r.GtNow $r.Within $r.Const }}\n\t\tif t := {{ accessor . }}; t != nil {\n\t\t\tts, err := t.AsTime(), t.CheckValid()\n\t\t\tif err != nil {\n\t\t\t\terr = {{ errCause . \"err\" \"value is not a valid timestamp\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t} else {\n\t\t\t\t{{ template \"timestampcmp\" . }}\n\t\t\t}\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/BUILD.bazel",
    "content": "load(\"@io_bazel_rules_go//go:def.bzl\", \"go_library\")\n\ngo_library(\n    name = \"goshared\",\n    srcs = [\n        \"any.go\",\n        \"bytes.go\",\n        \"const.go\",\n        \"duration.go\",\n        \"enum.go\",\n        \"in.go\",\n        \"known.go\",\n        \"ltgt.go\",\n        \"map.go\",\n        \"msg.go\",\n        \"none.go\",\n        \"num.go\",\n        \"register.go\",\n        \"repeated.go\",\n        \"string.go\",\n        \"timestamp.go\",\n        \"wrapper.go\",\n    ],\n    importpath = \"github.com/envoyproxy/protoc-gen-validate/templates/goshared\",\n    visibility = [\"//visibility:public\"],\n    deps = [\n        \"//templates/shared\",\n        \"@com_github_iancoleman_strcase//:strcase\",\n        \"@com_github_lyft_protoc_gen_star_v2//:protoc-gen-star\",\n        \"@com_github_lyft_protoc_gen_star_v2//lang/go\",\n        \"@org_golang_google_protobuf//types/known/durationpb\",\n        \"@org_golang_google_protobuf//types/known/timestamppb\",\n    ],\n)\n\nalias(\n    name = \"go_default_library\",\n    actual = \":goshared\",\n    deprecation = \"Use :goshared instead of :go_default_library.  Details about the new naming convention: https://github.com/bazelbuild/bazel-gazelle/pull/863\",\n    visibility = [\"//visibility:public\"],\n)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/any.go",
    "content": "package goshared\n\nconst anyTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n\t{{ template \"required\" . }}\n\n\tif a := {{ accessor . }}; a != nil {\n\t\t{{ if $r.In }}\n\t\t\tif _, ok := {{ lookup $f \"InLookup\" }}[a.GetTypeUrl()]; !ok {\n\t\t\t\terr := {{ err . \"type URL must be in list \" $r.In }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ else if $r.NotIn }}\n\t\t\tif _, ok := {{ lookup $f \"NotInLookup\" }}[a.GetTypeUrl()]; ok {\n\t\t\t\terr := {{ err . \"type URL must not be in list \" $r.NotIn }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ end }}\n\t}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/bytes.go",
    "content": "package goshared\n\nconst bytesTpl = `\n\t{{ $f := .Field }}{{ $r := .Rules }}\n\n\t{{ if $r.GetIgnoreEmpty }}\n\t\tif len({{ accessor . }}) > 0 {\n\t{{ end }}\n\n\t{{ if or $r.Len (and $r.MinLen $r.MaxLen (eq $r.GetMinLen $r.GetMaxLen)) }}\n\t\t{{ if $r.Len }}\n\t\t\tif len({{ accessor . }}) != {{ $r.GetLen }} {\n\t\t\t\terr := {{ err . \"value length must be \" $r.GetLen \" bytes\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ else }}\n\t\t\tif len({{ accessor . }}) != {{ $r.GetMinLen }} {\n\t\t\t\terr := {{ err . \"value length must be \" $r.GetMinLen \" bytes\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ end }}\n\t{{ else if $r.MinLen }}\n\t\t{{ if $r.MaxLen }}\n\t\t\tif l := len({{ accessor . }}); l < {{ $r.GetMinLen }} || l > {{ $r.GetMaxLen }} {\n\t\t\t\terr := {{ err . \"value length must be between \" $r.GetMinLen \" and \" $r.GetMaxLen \" bytes, inclusive\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ else }}\n\t\t\tif len({{ accessor . }}) < {{ $r.GetMinLen }} {\n\t\t\t\terr := {{ err . \"value length must be at least \" $r.GetMinLen \" bytes\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ end }}\n\t{{ else if $r.MaxLen }}\n\t\tif len({{ accessor . }}) > {{ $r.GetMaxLen }} {\n\t\t\terr := {{ err . \"value length must be at most \" $r.GetMaxLen \" bytes\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.Prefix }}\n\t\tif !bytes.HasPrefix({{ accessor . }}, {{ lit $r.GetPrefix }}) {\n\t\t\terr := {{ err . \"value does not have prefix \" (byteStr $r.GetPrefix) }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.Suffix }}\n\t\tif !bytes.HasSuffix({{ accessor . }}, {{ lit $r.GetSuffix }}) {\n\t\t\terr := {{ err . \"value does not have suffix \" (byteStr $r.GetSuffix) }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.Contains }}\n\t\tif !bytes.Contains({{ accessor . }}, {{ lit $r.GetContains }}) {\n\t\t\terr := {{ err . \"value does not contain \" (byteStr $r.GetContains) }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.In }}\n\t\tif _, ok := {{ lookup $f \"InLookup\" }}[string({{ accessor . }})]; !ok {\n\t\t\terr := {{ err . \"value must be in list \" $r.In }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ else if $r.NotIn }}\n\t\tif _, ok := {{ lookup $f \"NotInLookup\" }}[string({{ accessor . }})]; ok {\n\t\t\terr := {{ err . \"value must not be in list \" $r.NotIn }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.Const }}\n\t\tif !bytes.Equal({{ accessor . }}, {{ lit $r.Const }}) {\n\t\t\terr := {{ err . \"value must equal \" $r.Const }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.GetIp }}\n\t\tif ip := net.IP({{ accessor . }}); ip.To16() == nil {\n\t\t\terr := {{ err . \"value must be a valid IP address\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ else if $r.GetIpv4 }}\n\t\tif ip := net.IP({{ accessor . }}); ip.To4() == nil {\n\t\t\terr := {{ err . \"value must be a valid IPv4 address\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ else if $r.GetIpv6 }}\n\t\tif ip := net.IP({{ accessor . }}); ip.To16() == nil || ip.To4() != nil {\n\t\t\terr := {{ err . \"value must be a valid IPv6 address\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.Pattern }}\n\tif !{{ lookup $f \"Pattern\" }}.Match({{ accessor . }}) {\n\t\terr := {{ err . \"value does not match regex pattern \" (lit $r.GetPattern) }}\n\t\tif !all { return err }\n\t\terrors = append(errors, err)\n\t}\n\t{{ end }}\n\n\t{{ if $r.GetIgnoreEmpty }}\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/const.go",
    "content": "package goshared\n\nconst constTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n\t{{ if $r.Const }}\n\t\tif {{ accessor . }} != {{ lit $r.GetConst }} {\n\t\t\t{{- if isEnum $f }}\n\t\t\terr := {{ err . \"value must equal \" (enumVal $f $r.GetConst) }}\n\t\t\t{{- else }}\n\t\t\terr := {{ err . \"value must equal \" $r.GetConst }}\n\t\t\t{{- end }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/duration.go",
    "content": "package goshared\n\nconst durationcmpTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n\t\t\t{{  if $r.Const }}\n\t\t\t\tif dur != {{ durLit $r.Const }} {\n\t\t\t\t\terr := {{ err . \"value must equal \" (durStr $r.Const) }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ end }}\n\n\n\t\t\t{{  if $r.Lt }}  lt  := {{ durLit $r.Lt }};  {{ end }}\n\t\t\t{{- if $r.Lte }} lte := {{ durLit $r.Lte }}; {{ end }}\n\t\t\t{{- if $r.Gt }}  gt  := {{ durLit $r.Gt }};  {{ end }}\n\t\t\t{{- if $r.Gte }} gte := {{ durLit $r.Gte }}; {{ end }}\n\n\t\t\t{{ if $r.Lt }}\n\t\t\t\t{{ if $r.Gt }}\n\t\t\t\t\t{{  if durGt $r.GetLt $r.GetGt }}\n\t\t\t\t\t\tif dur <= gt || dur >= lt {\n\t\t\t\t\t\t\terr := {{ err . \"value must be inside range (\" (durStr $r.GetGt) \", \" (durStr $r.GetLt) \")\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif dur >= lt && dur <= gt {\n\t\t\t\t\t\t\terr := {{ err . \"value must be outside range [\" (durStr $r.GetLt) \", \" (durStr $r.GetGt) \"]\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else if $r.Gte }}\n\t\t\t\t\t{{  if durGt $r.GetLt $r.GetGte }}\n\t\t\t\t\t\tif dur < gte || dur >= lt {\n\t\t\t\t\t\t\terr := {{ err . \"value must be inside range [\" (durStr $r.GetGte) \", \" (durStr $r.GetLt) \")\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif dur >= lt && dur < gte {\n\t\t\t\t\t\t\terr := {{ err . \"value must be outside range [\" (durStr $r.GetLt) \", \" (durStr $r.GetGte) \")\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else }}\n\t\t\t\t\tif dur >= lt {\n\t\t\t\t\t\terr := {{ err . \"value must be less than \" (durStr $r.GetLt) }}\n\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t}\n\t\t\t\t{{ end }}\n\t\t\t{{ else if $r.Lte }}\n\t\t\t\t{{ if $r.Gt }}\n\t\t\t\t\t{{  if durGt $r.GetLte $r.GetGt }}\n\t\t\t\t\t\tif dur <= gt || dur > lte {\n\t\t\t\t\t\t\terr := {{ err . \"value must be inside range (\" (durStr $r.GetGt) \", \" (durStr $r.GetLte) \"]\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif dur > lte && dur <= gt {\n\t\t\t\t\t\t\terr := {{ err . \"value must be outside range (\" (durStr $r.GetLte) \", \" (durStr $r.GetGt) \"]\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else if $r.Gte }}\n\t\t\t\t\t{{ if durGt $r.GetLte $r.GetGte }}\n\t\t\t\t\t\tif dur < gte || dur > lte {\n\t\t\t\t\t\t\terr := {{ err . \"value must be inside range [\" (durStr $r.GetGte) \", \" (durStr $r.GetLte) \"]\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif dur > lte && dur < gte {\n\t\t\t\t\t\t\terr := {{ err . \"value must be outside range (\" (durStr $r.GetLte) \", \" (durStr $r.GetGte) \")\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else }}\n\t\t\t\t\tif dur > lte {\n\t\t\t\t\t\terr := {{ err . \"value must be less than or equal to \" (durStr $r.GetLte) }}\n\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t}\n\t\t\t\t{{ end }}\n\t\t\t{{ else if $r.Gt }}\n\t\t\t\tif dur <= gt {\n\t\t\t\t\terr := {{ err . \"value must be greater than \" (durStr $r.GetGt) }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ else if $r.Gte }}\n\t\t\t\tif dur < gte {\n\t\t\t\t\terr := {{ err . \"value must be greater than or equal to \" (durStr $r.GetGte) }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ end }}\n\n\n\t\t\t{{ if $r.In }}\n\t\t\t\tif _, ok := {{ lookup $f \"InLookup\" }}[dur]; !ok {\n\t\t\t\t\terr := {{ err . \"value must be in list \" $r.In }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ else if $r.NotIn }}\n\t\t\t\tif _, ok := {{ lookup $f \"NotInLookup\" }}[dur]; ok {\n\t\t\t\t\terr := {{ err . \"value must not be in list \" $r.NotIn }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/enum.go",
    "content": "package goshared\n\nconst enumTpl = `\n\t\t{{ $f := .Field }}{{ $r := .Rules }}\n\t\t{{ template \"const\" . }}\n\t\t{{ template \"in\" . }}\n\n\t\t{{ if $r.GetDefinedOnly }}\n\t\t\tif _, ok := {{ (typ $f).Element.Value }}_name[int32({{ accessor . }})]; !ok {\n\t\t\t\terr := {{ err . \"value must be one of the defined enum values\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/in.go",
    "content": "package goshared\n\nconst inTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n\t{{ if $r.In }}\n\t\tif _, ok := {{ lookup $f \"InLookup\" }}[{{ accessor . }}]; !ok {\n\t\t\t{{- if isEnum $f }}\n\t\t\terr := {{ err . \"value must be in list \" (enumList $f $r.In) }}\n\t\t\t{{- else }}\n\t\t\terr := {{ err . \"value must be in list \" $r.In }}\n\t\t\t{{- end }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ else if $r.NotIn }}\n\t\tif _, ok := {{ lookup $f \"NotInLookup\" }}[{{ accessor . }}]; ok {\n\t\t\t{{- if isEnum $f }}\n\t\t\terr := {{ err . \"value must not be in list \" (enumList $f $r.NotIn) }}\n\t\t\t{{- else }}\n\t\t\terr := {{ err . \"value must not be in list \" $r.NotIn }}\n\t\t\t{{- end }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/known.go",
    "content": "package goshared\n\nconst hostTpl = `\n\tfunc (m {{ (msgTyp .).Pointer }}) _validateHostname(host string) error {\n\t\ts := strings.ToLower(strings.TrimSuffix(host, \".\"))\n\n\t\tif len(host) > 253 {\n\t\t\treturn errors.New(\"hostname cannot exceed 253 characters\")\n\t\t}\n\n\t\tfor _, part := range strings.Split(s, \".\") {\n\t\t\tif l := len(part); l == 0 || l > 63 {\n\t\t\t\treturn errors.New(\"hostname part must be non-empty and cannot exceed 63 characters\")\n\t\t\t}\n\n\t\t\tif part[0] == '-' {\n\t\t\t\treturn errors.New(\"hostname parts cannot begin with hyphens\")\n\t\t\t}\n\n\t\t\tif part[len(part)-1] == '-' {\n\t\t\t\treturn errors.New(\"hostname parts cannot end with hyphens\")\n\t\t\t}\n\n\t\t\tfor _, r := range part {\n\t\t\t\tif (r < 'a' || r > 'z') && (r < '0' || r > '9') && r != '-' {\n\t\t\t\t\treturn fmt.Errorf(\"hostname parts can only contain alphanumeric characters or hyphens, got %q\", string(r))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nil\n\t}\n`\n\nconst emailTpl = `\n\tfunc (m {{ (msgTyp .).Pointer }}) _validateEmail(addr string) error {\n\t\ta, err := mail.ParseAddress(addr)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddr = a.Address\n\n\t\tif len(addr) > 254 {\n\t\t\treturn errors.New(\"email addresses cannot exceed 254 characters\")\n\t\t}\n\n\t\tparts := strings.SplitN(addr, \"@\", 2)\n\n\t\tif len(parts[0]) > 64 {\n\t\t\treturn errors.New(\"email address local phrase cannot exceed 64 characters\")\n\t\t}\n\n\t\treturn m._validateHostname(parts[1])\n\t}\n`\n\nconst uuidTpl = `\n\tfunc (m {{ (msgTyp .).Pointer }}) _validateUuid(uuid string) error {\n\t\tif matched := _{{ snakeCase .File.InputPath.BaseName }}_uuidPattern.MatchString(uuid); !matched {\n\t\t\treturn errors.New(\"invalid uuid format\")\n\t\t}\n\n\t\treturn nil\n\t}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/ltgt.go",
    "content": "package goshared\n\nconst ltgtTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n\t{{ if $r.Lt }}\n\t\t{{ if $r.Gt }}\n\t\t\t{{  if gt $r.GetLt $r.GetGt }}\n\t\t\t\tif val := {{ accessor . }};  val <= {{ $r.Gt }} || val >= {{ $r.Lt }} {\n\t\t\t\t\terr := {{ err . \"value must be inside range (\" $r.GetGt \", \" $r.GetLt \")\" }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ else }}\n\t\t\t\tif val := {{ accessor . }}; val >= {{ $r.Lt }} && val <= {{ $r.Gt }} {\n\t\t\t\t\terr := {{ err . \"value must be outside range [\" $r.GetLt \", \" $r.GetGt \"]\" }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ end }}\n\t\t{{ else if $r.Gte }}\n\t\t\t{{  if gt $r.GetLt $r.GetGte }}\n\t\t\t\tif val := {{ accessor . }};  val < {{ $r.Gte }} || val >= {{ $r.Lt }} {\n\t\t\t\t\terr := {{ err . \"value must be inside range [\" $r.GetGte \", \" $r.GetLt \")\" }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ else }}\n\t\t\t\tif val := {{ accessor . }}; val >= {{ $r.Lt }} && val < {{ $r.Gte }} {\n\t\t\t\t\terr := {{ err . \"value must be outside range [\" $r.GetLt \", \" $r.GetGte \")\" }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ end }}\n\t\t{{ else }}\n\t\t\tif {{ accessor . }} >= {{ $r.Lt }} {\n\t\t\t\terr := {{ err . \"value must be less than \" $r.GetLt }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ end }}\n\t{{ else if $r.Lte }}\n\t\t{{ if $r.Gt }}\n\t\t\t{{  if gt $r.GetLte $r.GetGt }}\n\t\t\t\tif val := {{ accessor . }};  val <= {{ $r.Gt }} || val > {{ $r.Lte }} {\n\t\t\t\t\terr := {{ err . \"value must be inside range (\" $r.GetGt \", \" $r.GetLte \"]\" }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ else }}\n\t\t\t\tif val := {{ accessor . }}; val > {{ $r.Lte }} && val <= {{ $r.Gt }} {\n\t\t\t\t\terr := {{ err . \"value must be outside range (\" $r.GetLte \", \" $r.GetGt \"]\" }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ end }}\n\t\t{{ else if $r.Gte }}\n\t\t\t{{ if gt $r.GetLte $r.GetGte }}\n\t\t\t\tif val := {{ accessor . }};  val < {{ $r.Gte }} || val > {{ $r.Lte }} {\n\t\t\t\t\terr := {{ err . \"value must be inside range [\" $r.GetGte \", \" $r.GetLte \"]\" }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ else }}\n\t\t\t\tif val := {{ accessor . }}; val > {{ $r.Lte }} && val < {{ $r.Gte }} {\n\t\t\t\t\terr := {{ err . \"value must be outside range (\" $r.GetLte \", \" $r.GetGte \")\" }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ end }}\n\t\t{{ else }}\n\t\t\tif {{ accessor . }} > {{ $r.Lte }} {\n\t\t\t\terr := {{ err . \"value must be less than or equal to \" $r.GetLte }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ end }}\n\t{{ else if $r.Gt }}\n\t\tif {{ accessor . }} <= {{ $r.Gt }} {\n\t\t\terr := {{ err . \"value must be greater than \" $r.GetGt }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ else if $r.Gte }}\n\t\tif {{ accessor . }} < {{ $r.Gte }} {\n\t\t\terr := {{ err . \"value must be greater than or equal to \" $r.GetGte }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/map.go",
    "content": "package goshared\n\nconst mapTpl = `\n\t{{ $f := .Field }}{{ $r := .Rules }}\n\n\t{{ if $r.GetIgnoreEmpty }}\n\t\tif len({{ accessor . }}) > 0 {\n\t{{ end }}\n\n\t{{ if $r.GetMinPairs }}\n\t\t{{ if eq $r.GetMinPairs $r.GetMaxPairs }}\n\t\t\tif len({{ accessor . }}) != {{ $r.GetMinPairs }} {\n\t\t\t\terr := {{ err . \"value must contain exactly \" $r.GetMinPairs \" pair(s)\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ else if $r.MaxPairs }}\n\t\t\tif l := len({{ accessor . }}); l < {{ $r.GetMinPairs }} || l > {{ $r.GetMaxPairs }} {\n\t\t\t\terr := {{ err . \"value must contain between \" $r.GetMinPairs \" and \" $r.GetMaxPairs \" pairs, inclusive\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ else }}\n\t\t\tif len({{ accessor . }}) < {{ $r.GetMinPairs }} {\n\t\t\t\terr := {{ err . \"value must contain at least \" $r.GetMinPairs \" pair(s)\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ end }}\n\t{{ else if $r.MaxPairs }}\n\t\tif len({{ accessor . }}) > {{ $r.GetMaxPairs }} {\n\t\t\terr := {{ err . \"value must contain no more than \" $r.GetMaxPairs \" pair(s)\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if or $r.GetNoSparse (ne (.Elem \"\" \"\").Typ \"none\") (ne (.Key \"\" \"\").Typ \"none\") }}\n\t\t{{- /* Sort the keys to make the iteration order (and therefore failure output) deterministic. */ -}}\n\t\t{\n\t\t\tsorted_keys := make([]{{ (typ .Field).Key }}, len({{ accessor . }}))\n\t\t\ti := 0\n\t\t\tfor key := range {{ accessor . }} {\n\t\t\t\tsorted_keys[i] = key\n\t\t\t\ti++\n\t\t\t}\n\t\t\tsort.Slice(sorted_keys, func (i, j int) bool { return sorted_keys[i] < sorted_keys[j] })\n\t\t\tfor _, key := range sorted_keys {\n\t\t\t\tval := {{ accessor .}}[key]\n\t\t\t\t_ = val\n\n\t\t\t\t{{ if $r.GetNoSparse }}\n\t\t\t\t\tif val == nil {\n\t\t\t\t\t\terr := {{ errIdx . \"key\" \"value cannot be sparse, all pairs must be non-nil\" }}\n\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t}\n\t\t\t\t{{ end }}\n\n\t\t\t\t{{ render (.Key \"key\" \"key\") }}\n\n\t\t\t\t{{ render (.Elem \"val\" \"key\") }}\n\t\t\t}\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.GetIgnoreEmpty }}\n\t\t}\n\t{{ end }}\n\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/msg.go",
    "content": "package goshared\n\nconst msgTpl = `\n{{ if not (ignored .) -}}\n{{ if disabled . -}}\n\t{{ cmt \"Validate is disabled for \" (msgTyp .) \". This method will always return nil.\" }}\n{{- else -}}\n\t{{ cmt \"Validate checks the field values on \" (msgTyp .) \" with the rules defined in the proto definition for this message. If any rules are violated, the first error encountered is returned, or nil if there are no violations.\" }}\n{{- end -}}\nfunc (m {{ (msgTyp .).Pointer }}) Validate() error {\n\treturn m.validate(false)\n}\n\n{{ if disabled . -}}\n\t{{ cmt \"ValidateAll is disabled for \" (msgTyp .) \". This method will always return nil.\" }}\n{{- else -}}\n\t{{ cmt \"ValidateAll checks the field values on \" (msgTyp .) \" with the rules defined in the proto definition for this message. If any rules are violated, the result is a list of violation errors wrapped in \" (multierrname .) \", or nil if none found.\" }}\n{{- end -}}\nfunc (m {{ (msgTyp .).Pointer }}) ValidateAll() error {\n\treturn m.validate(true)\n}\n\n{{/* Unexported function to handle validation. If the need arises to add more exported functions, please consider the functional option approach outlined in protoc-gen-validate#47. */}}\nfunc (m {{ (msgTyp .).Pointer }}) validate(all bool) error {\n\t{{ if disabled . -}}\n\t\treturn nil\n\t{{ else -}}\n\t\tif m == nil { return nil }\n\n\t\tvar errors []error\n\n\t\t{{ range .NonOneOfFields }}\n\t\t\t{{ render (context .) }}\n\t\t{{ end }}\n\n\t\t{{ range .RealOneOfs }}\n\t\t\t{{- $oneof := . }}\n\t\t\t{{- if required . }}\n\t\t\toneof{{ name $oneof }}Present := false\n\t\t\t{{- end }}\n\t\t\tswitch v := m.{{ name . }}.(type) {\n\t\t\t\t{{- range .Fields }}\n\t\t\t\t\t{{- $context := (context .) }}\n\t\t\t\t\tcase {{ oneof . }}:\n\t\t\t\t\t\tif v == nil {\n\t\t\t\t\t\t\terr := {{ errname .Message }}{\n\t\t\t\t\t\t\t\tfield: \"{{ name $oneof }}\",\n\t\t\t\t\t\t\t\treason: \"oneof value cannot be a typed-nil\",\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{{- if required $oneof }}\n\t\t\t\t\t\toneof{{ name $oneof }}Present = true\n\t\t\t\t\t\t{{- end }}\n\t\t\t\t\t\t{{ render $context }}\n\t\t\t\t{{- end }}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t_ = v // ensures v is used\n\t\t\t}\n\t\t\t{{- if required . }}\n\t\t\tif !oneof{{ name $oneof }}Present {\n\t\t\t\terr := {{ errname .Message }}{\n\t\t\t\t\tfield: \"{{ name $oneof }}\",\n\t\t\t\t\treason: \"value is required\",\n\t\t\t\t}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t\t{{- end }}\n\t\t{{- end }}\n\n\t\t{{ range .SyntheticOneOfFields }}\n\t\t\tif m.{{ name . }} != nil {\n\t\t\t\t{{ render (context .) }}\n\t\t\t}\n\t\t{{ end }}\n\n\t\tif len(errors) > 0 {\n\t\t\treturn {{ multierrname . }}(errors)\n\t\t}\n\n\t\treturn nil\n\t{{ end -}}\n}\n\n{{ if needs . \"hostname\" }}{{ template \"hostname\" . }}{{ end }}\n\n{{ if needs . \"email\" }}{{ template \"email\" . }}{{ end }}\n\n{{ if needs . \"uuid\" }}{{ template \"uuid\" . }}{{ end }}\n\n{{ cmt (multierrname .) \" is an error wrapping multiple validation errors returned by \" (msgTyp .) \".ValidateAll() if the designated constraints aren't met.\" -}}\ntype {{ multierrname . }} []error\n\n// Error returns a concatenation of all the error messages it wraps.\nfunc (m {{ multierrname . }}) Error() string {\n\tmsgs := make([]string, 0, len(m))\n\tfor _, err := range m {\n\t\tmsgs = append(msgs, err.Error())\n\t}\n\treturn strings.Join(msgs, \"; \")\n}\n\n// AllErrors returns a list of validation violation errors.\nfunc (m {{ multierrname . }}) AllErrors() []error { return m }\n\n{{ cmt (errname .) \" is the validation error returned by \" (msgTyp .) \".Validate if the designated constraints aren't met.\" -}}\ntype {{ errname . }} struct {\n\tfield  string\n\treason string\n\tcause  error\n\tkey    bool\n}\n\n// Field function returns field value.\nfunc (e {{ errname . }}) Field() string { return e.field }\n\n// Reason function returns reason value.\nfunc (e {{ errname . }}) Reason() string { return e.reason }\n\n// Cause function returns cause value.\nfunc (e {{ errname . }}) Cause() error { return e.cause }\n\n// Key function returns key value.\nfunc (e {{ errname . }}) Key() bool { return e.key }\n\n// ErrorName returns error name.\nfunc (e {{ errname . }}) ErrorName() string { return \"{{ errname . }}\" }\n\n// Error satisfies the builtin error interface\nfunc (e {{ errname . }}) Error() string {\n\tcause := \"\"\n\tif e.cause != nil {\n\t\tcause = fmt.Sprintf(\" | caused by: %v\", e.cause)\n\t}\n\n\tkey := \"\"\n\tif e.key {\n\t\tkey = \"key for \"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"invalid %s{{ (msgTyp .) }}.%s: %s%s\",\n\t\tkey,\n\t\te.field,\n\t\te.reason,\n\t\tcause)\n}\n\nvar _ error = {{ errname . }}{}\n\nvar _ interface{\n\tField() string\n\tReason() string\n\tKey() bool\n\tCause() error\n\tErrorName() string\n} = {{ errname . }}{}\n\n{{ range .Fields }}{{ with (context .) }}{{ $f := .Field }}\n\t{{ if has .Rules \"In\" }}{{ if .Rules.In }}\n\t\tvar {{ lookup .Field \"InLookup\" }} = map[{{ inType .Field .Rules.In }}]struct{}{\n\t\t\t{{- range .Rules.In }}\n\t\t\t\t{{ inKey $f . }}: {},\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}{{ end }}\n\n\t{{ if has .Rules \"NotIn\" }}{{ if .Rules.NotIn }}\n\t\tvar {{ lookup .Field \"NotInLookup\" }} = map[{{ inType .Field .Rules.In }}]struct{}{\n\t\t\t{{- range .Rules.NotIn }}\n\t\t\t\t{{ inKey $f . }}: {},\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}{{ end }}\n\n\t{{ if has .Rules \"Pattern\"}}{{ if .Rules.Pattern }}\n\t\tvar {{ lookup .Field \"Pattern\" }} = regexp.MustCompile({{ lit .Rules.GetPattern }})\n\t{{ end }}{{ end }}\n\n\t{{ if has .Rules \"Items\"}}{{ if .Rules.Items }}\n\t{{ if has .Rules.Items.GetString_ \"Pattern\" }} {{ if .Rules.Items.GetString_.Pattern }}\n\t\tvar {{ lookup .Field \"Pattern\" }} = regexp.MustCompile({{ lit .Rules.Items.GetString_.GetPattern }})\n\t{{ end }}{{ end }}\n\t{{ end }}{{ end }}\n\n\t{{ if has .Rules \"Items\"}}{{ if .Rules.Items }}\n\t{{ if has .Rules.Items.GetString_ \"In\" }} {{ if .Rules.Items.GetString_.In }}\n\t\tvar {{ lookup .Field \"InLookup\" }} = map[string]struct{}{\n\t\t\t{{- range .Rules.Items.GetString_.In }}\n\t\t\t\t{{ inKey $f . }}: {},\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetEnum \"In\" }} {{ if .Rules.Items.GetEnum.In }}\n\t\tvar {{ lookup .Field \"InLookup\" }} = map[{{ inType .Field .Rules.Items.GetEnum.In }}]struct{}{\n\t\t\t{{- range .Rules.Items.GetEnum.In }}\n\t\t\t\t{{ inKey $f . }}: {},\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetInt64 \"In\" }} {{ if .Rules.Items.GetInt64.In }}\n\t\tvar {{ lookup .Field \"InLookup\" }} = map[int64]struct{}{\n\t\t\t{{- range .Rules.Items.GetInt64.In }}\n\t\t\t\t{{ inKey $f . }}: {},\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetInt64 \"NotIn\" }} {{ if .Rules.Items.GetInt64.NotIn }}\n\t\tvar {{ lookup .Field \"NotInLookup\" }} = map[int64]struct{}{\n\t\t\t{{- range .Rules.Items.GetInt64.NotIn }}\n\t\t\t\t{{ inKey $f . }}: {},\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetInt32 \"In\" }} {{ if .Rules.Items.GetInt32.In }}\n\t\tvar {{ lookup .Field \"InLookup\" }} = map[int32]struct{}{\n\t\t\t{{- range .Rules.Items.GetInt32.In }}\n\t\t\t\t{{ inKey $f . }}: {},\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetInt32 \"NotIn\" }} {{ if .Rules.Items.GetInt32.NotIn }}\n\t\tvar {{ lookup .Field \"NotInLookup\" }} = map[int32]struct{}{\n\t\t\t{{- range .Rules.Items.GetInt32.NotIn }}\n\t\t\t\t{{ inKey $f . }}: {},\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetAny \"In\" }} {{ if .Rules.Items.GetAny.In }}\n\t\tvar {{ lookup .Field \"InLookup\" }} = map[string]struct{}{\n\t\t\t{{- range .Rules.Items.GetAny.In }}\n\t\t\t\t{{ inKey $f . }}: {},\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}{{ end }}\n\t{{ end }}{{ end }}\n\n\t{{ if has .Rules \"Items\"}}{{ if .Rules.Items }}\n\t{{ if has .Rules.Items.GetString_ \"NotIn\" }} {{ if .Rules.Items.GetString_.NotIn }}\n\t\tvar {{ lookup .Field \"NotInLookup\" }} = map[string]struct{}{\n\t\t\t{{- range .Rules.Items.GetString_.NotIn }}\n\t\t\t\t{{ inKey $f . }}: {},\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetEnum \"NotIn\" }} {{ if .Rules.Items.GetEnum.NotIn }}\n\t\tvar {{ lookup .Field \"NotInLookup\" }} = map[{{ inType .Field .Rules.Items.GetEnum.NotIn }}]struct{}{\n\t\t\t{{- range .Rules.Items.GetEnum.NotIn }}\n\t\t\t\t{{ inKey $f . }}: {},\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Items.GetAny \"NotIn\" }} {{ if .Rules.Items.GetAny.NotIn }}\n\t\tvar {{ lookup .Field \"NotInLookup\" }} = map[string]struct{}{\n\t\t\t{{- range .Rules.Items.GetAny.NotIn }}\n\t\t\t\t{{ inKey $f . }}: {},\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}{{ end }}\n\t{{ end }}{{ end }}\n\n\t{{ if has .Rules \"Keys\"}}{{ if .Rules.Keys }}\n\t{{ if has .Rules.Keys.GetString_ \"In\" }} {{ if .Rules.Keys.GetString_.In }}\n\t\tvar {{ lookup .Field \"InLookup\" }} = map[{{ inType .Field .Rules.Keys.GetString_.In }}]struct{}{\n\t\t\t{{- range .Rules.Keys.GetString_.In }}\n\t\t\t\t{{ inKey $f . }}: {},\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Keys.GetString_ \"NotIn\" }} {{ if .Rules.Keys.GetString_.NotIn }}\n\t\tvar {{ lookup .Field \"NotInLookup\" }} = map[{{ inType .Field .Rules.Keys.GetString_.NotIn }}]struct{}{\n\t\t\t{{- range .Rules.Keys.GetString_.NotIn }}\n\t\t\t\t{{ inKey $f . }}: {},\n\t\t\t{{- end }}\n\t\t}\n\t{{ end }}{{ end }}\n\t{{ if has .Rules.Keys.GetString_ \"Pattern\" }} {{ if .Rules.Keys.GetString_.Pattern }}\n\t\tvar {{ lookup .Field \"Pattern\" }} = regexp.MustCompile({{ lit .Rules.Keys.GetString_.GetPattern }})\n\t{{ end }}{{ end }}\n\t{{ end }}{{ end }}\n\n\t{{ if has .Rules \"Values\"}}{{ if .Rules.Values }}\n\t{{ if has .Rules.Values.GetString_ \"Pattern\" }} {{ if .Rules.Values.GetString_.Pattern }}\n\t\tvar {{ lookup .Field \"Pattern\" }} = regexp.MustCompile({{ lit .Rules.Values.GetString_.GetPattern }})\n\t{{ end }}{{ end }}\n\t{{ end }}{{ end }}\n\n{{ end }}{{ end }}\n{{- end -}}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/none.go",
    "content": "package goshared\n\nconst noneTpl = `// no validation rules for {{ name .Field }}\n\t{{- if .Index }}[{{ .Index }}]{{ end }}\n\t{{- if .OnKey }} (key){{ end }}`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/num.go",
    "content": "package goshared\n\nconst numTpl = `\n\t{{ if .Rules.GetIgnoreEmpty }}\n\t\tif {{ accessor . }} != 0 {\n\t{{ end }}\n\n\t{{ template \"const\" . }}\n\t{{ template \"ltgt\" . }}\n\t{{ template \"in\" . }}\n\n\t{{ if .Rules.GetIgnoreEmpty }}\n\t\t}\n\t{{ end }}\n\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/register.go",
    "content": "package goshared\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"text/template\"\n\n\t\"github.com/iancoleman/strcase\"\n\tpgs \"github.com/lyft/protoc-gen-star/v2\"\n\tpgsgo \"github.com/lyft/protoc-gen-star/v2/lang/go\"\n\t\"google.golang.org/protobuf/types/known/durationpb\"\n\t\"google.golang.org/protobuf/types/known/timestamppb\"\n\n\t\"github.com/envoyproxy/protoc-gen-validate/templates/shared\"\n)\n\nfunc Register(tpl *template.Template, params pgs.Parameters) {\n\tfns := goSharedFuncs{pgsgo.InitContext(params)}\n\n\ttpl.Funcs(map[string]interface{}{\n\t\t\"accessor\":      fns.accessor,\n\t\t\"byteStr\":       fns.byteStr,\n\t\t\"cmt\":           pgs.C80,\n\t\t\"durGt\":         fns.durGt,\n\t\t\"durLit\":        fns.durLit,\n\t\t\"durStr\":        fns.durStr,\n\t\t\"err\":           fns.err,\n\t\t\"errCause\":      fns.errCause,\n\t\t\"errIdx\":        fns.errIdx,\n\t\t\"errIdxCause\":   fns.errIdxCause,\n\t\t\"errname\":       fns.errName,\n\t\t\"multierrname\":  fns.multiErrName,\n\t\t\"inKey\":         fns.inKey,\n\t\t\"inType\":        fns.inType,\n\t\t\"isBytes\":       fns.isBytes,\n\t\t\"lit\":           fns.lit,\n\t\t\"lookup\":        fns.lookup,\n\t\t\"msgTyp\":        fns.msgTyp,\n\t\t\"name\":          fns.Name,\n\t\t\"oneof\":         fns.oneofTypeName,\n\t\t\"pkg\":           fns.PackageName,\n\t\t\"snakeCase\":     fns.snakeCase,\n\t\t\"tsGt\":          fns.tsGt,\n\t\t\"tsLit\":         fns.tsLit,\n\t\t\"tsStr\":         fns.tsStr,\n\t\t\"typ\":           fns.Type,\n\t\t\"unwrap\":        fns.unwrap,\n\t\t\"externalEnums\": fns.externalEnums,\n\t\t\"enumName\":      fns.enumName,\n\t\t\"enumPackages\":  fns.enumPackages,\n\t})\n\n\ttemplate.Must(tpl.New(\"msg\").Parse(msgTpl))\n\ttemplate.Must(tpl.New(\"const\").Parse(constTpl))\n\ttemplate.Must(tpl.New(\"ltgt\").Parse(ltgtTpl))\n\ttemplate.Must(tpl.New(\"in\").Parse(inTpl))\n\n\ttemplate.Must(tpl.New(\"none\").Parse(noneTpl))\n\ttemplate.Must(tpl.New(\"float\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"double\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"int32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"int64\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"uint32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"uint64\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"sint32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"sint64\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"fixed32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"fixed64\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"sfixed32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"sfixed64\").Parse(numTpl))\n\n\ttemplate.Must(tpl.New(\"bool\").Parse(constTpl))\n\ttemplate.Must(tpl.New(\"string\").Parse(strTpl))\n\ttemplate.Must(tpl.New(\"bytes\").Parse(bytesTpl))\n\n\ttemplate.Must(tpl.New(\"email\").Parse(emailTpl))\n\ttemplate.Must(tpl.New(\"hostname\").Parse(hostTpl))\n\ttemplate.Must(tpl.New(\"address\").Parse(hostTpl))\n\ttemplate.Must(tpl.New(\"uuid\").Parse(uuidTpl))\n\n\ttemplate.Must(tpl.New(\"enum\").Parse(enumTpl))\n\ttemplate.Must(tpl.New(\"repeated\").Parse(repTpl))\n\ttemplate.Must(tpl.New(\"map\").Parse(mapTpl))\n\n\ttemplate.Must(tpl.New(\"any\").Parse(anyTpl))\n\ttemplate.Must(tpl.New(\"timestampcmp\").Parse(timestampcmpTpl))\n\ttemplate.Must(tpl.New(\"durationcmp\").Parse(durationcmpTpl))\n\n\ttemplate.Must(tpl.New(\"wrapper\").Parse(wrapperTpl))\n}\n\ntype goSharedFuncs struct{ pgsgo.Context }\n\nfunc (fns goSharedFuncs) accessor(ctx shared.RuleContext) string {\n\tif ctx.AccessorOverride != \"\" {\n\t\treturn ctx.AccessorOverride\n\t}\n\n\treturn fmt.Sprintf(\"m.Get%s()\", fns.Name(ctx.Field))\n}\n\nfunc (fns goSharedFuncs) errName(m pgs.Message) pgs.Name {\n\treturn fns.Name(m) + \"ValidationError\"\n}\n\nfunc (fns goSharedFuncs) multiErrName(m pgs.Message) pgs.Name {\n\treturn fns.Name(m) + \"MultiError\"\n}\n\nfunc (fns goSharedFuncs) errIdxCause(ctx shared.RuleContext, idx, cause string, reason ...interface{}) string {\n\tf := ctx.Field\n\tn := fns.Name(f)\n\n\tvar fld string\n\tswitch {\n\tcase idx != \"\":\n\t\tfld = fmt.Sprintf(`fmt.Sprintf(\"%s[%%v]\", %s)`, n, idx)\n\tcase ctx.Index != \"\":\n\t\tfld = fmt.Sprintf(`fmt.Sprintf(\"%s[%%v]\", %s)`, n, ctx.Index)\n\tdefault:\n\t\tfld = fmt.Sprintf(\"%q\", n)\n\t}\n\n\tcauseFld := \"\"\n\tif cause != \"nil\" && cause != \"\" {\n\t\tcauseFld = fmt.Sprintf(\"cause: %s,\", cause)\n\t}\n\n\tkeyFld := \"\"\n\tif ctx.OnKey {\n\t\tkeyFld = \"key: true,\"\n\t}\n\n\treturn fmt.Sprintf(`%s{\n\t\tfield: %s,\n\t\treason: %q,\n\t\t%s%s\n\t}`,\n\t\tfns.errName(f.Message()),\n\t\tfld,\n\t\tfmt.Sprint(reason...),\n\t\tcauseFld,\n\t\tkeyFld)\n}\n\nfunc (fns goSharedFuncs) err(ctx shared.RuleContext, reason ...interface{}) string {\n\treturn fns.errIdxCause(ctx, \"\", \"nil\", reason...)\n}\n\nfunc (fns goSharedFuncs) errCause(ctx shared.RuleContext, cause string, reason ...interface{}) string {\n\treturn fns.errIdxCause(ctx, \"\", cause, reason...)\n}\n\nfunc (fns goSharedFuncs) errIdx(ctx shared.RuleContext, idx string, reason ...interface{}) string {\n\treturn fns.errIdxCause(ctx, idx, \"nil\", reason...)\n}\n\nfunc (fns goSharedFuncs) lookup(f pgs.Field, name string) string {\n\treturn fmt.Sprintf(\n\t\t\"_%s_%s_%s\",\n\t\tfns.Name(f.Message()),\n\t\tfns.Name(f),\n\t\tname,\n\t)\n}\n\nfunc (fns goSharedFuncs) lit(x interface{}) string {\n\tval := reflect.ValueOf(x)\n\n\tif val.Kind() == reflect.Interface {\n\t\tval = val.Elem()\n\t}\n\n\tif val.Kind() == reflect.Ptr {\n\t\tval = val.Elem()\n\t}\n\n\tswitch val.Kind() {\n\tcase reflect.String:\n\t\treturn fmt.Sprintf(\"%q\", x)\n\tcase reflect.Uint8:\n\t\treturn fmt.Sprintf(\"0x%X\", x)\n\tcase reflect.Slice:\n\t\tels := make([]string, val.Len())\n\t\tfor i, l := 0, val.Len(); i < l; i++ {\n\t\t\tels[i] = fns.lit(val.Index(i).Interface())\n\t\t}\n\t\treturn fmt.Sprintf(\"%T{%s}\", val.Interface(), strings.Join(els, \", \"))\n\tdefault:\n\t\treturn fmt.Sprint(x)\n\t}\n}\n\nfunc (fns goSharedFuncs) isBytes(f interface {\n\tProtoType() pgs.ProtoType\n},\n) bool {\n\treturn f.ProtoType() == pgs.BytesT\n}\n\nfunc (fns goSharedFuncs) byteStr(x []byte) string {\n\telms := make([]string, len(x))\n\tfor i, b := range x {\n\t\telms[i] = fmt.Sprintf(`\\x%X`, b)\n\t}\n\n\treturn fmt.Sprintf(`\"%s\"`, strings.Join(elms, \"\"))\n}\n\nfunc (fns goSharedFuncs) oneofTypeName(f pgs.Field) pgsgo.TypeName {\n\treturn pgsgo.TypeName(fns.OneofOption(f)).Pointer()\n}\n\nfunc (fns goSharedFuncs) inType(f pgs.Field, x interface{}) string {\n\tswitch f.Type().ProtoType() {\n\tcase pgs.BytesT:\n\t\treturn \"string\"\n\tcase pgs.MessageT:\n\t\tswitch x.(type) {\n\t\tcase []*durationpb.Duration:\n\t\t\treturn \"time.Duration\"\n\t\tdefault:\n\t\t\treturn pgsgo.TypeName(fmt.Sprintf(\"%T\", x)).Element().String()\n\t\t}\n\tcase pgs.EnumT:\n\t\tens := fns.enumPackages(fns.externalEnums(f.File()))\n\t\t// Check if the imported name of the enum has collided and been renamed\n\t\tif len(ens) != 0 {\n\t\t\tenType := f.Type().Enum()\n\t\t\tif f.Type().IsRepeated() {\n\t\t\t\tenType = f.Type().Element().Enum()\n\t\t\t}\n\n\t\t\tenImportPath := fns.ImportPath(enType)\n\t\t\tfor pkg, en := range ens {\n\t\t\t\tif en.FilePath == enImportPath {\n\t\t\t\t\treturn pkg.String() + \".\" + fns.enumName(enType)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif f.Type().IsRepeated() {\n\t\t\treturn strings.TrimLeft(fns.Type(f).String(), \"[]\")\n\t\t} else {\n\t\t\t// Use Value() to strip any potential pointer type.\n\t\t\treturn fns.Type(f).Value().String()\n\t\t}\n\tdefault:\n\t\t// Use Value() to strip any potential pointer type.\n\t\treturn fns.Type(f).Value().String()\n\t}\n}\n\nfunc (fns goSharedFuncs) inKey(f pgs.Field, x interface{}) string {\n\tswitch f.Type().ProtoType() {\n\tcase pgs.BytesT:\n\t\treturn fns.byteStr(x.([]byte))\n\tcase pgs.MessageT:\n\t\tswitch x := x.(type) {\n\t\tcase *durationpb.Duration:\n\t\t\tdur := x.AsDuration()\n\t\t\treturn fns.lit(int64(dur))\n\t\tdefault:\n\t\t\treturn fns.lit(x)\n\t\t}\n\tdefault:\n\t\treturn fns.lit(x)\n\t}\n}\n\nfunc (fns goSharedFuncs) durLit(dur *durationpb.Duration) string {\n\treturn fmt.Sprintf(\n\t\t\"time.Duration(%d * time.Second + %d * time.Nanosecond)\",\n\t\tdur.GetSeconds(), dur.GetNanos())\n}\n\nfunc (fns goSharedFuncs) durStr(dur *durationpb.Duration) string {\n\td := dur.AsDuration()\n\treturn d.String()\n}\n\nfunc (fns goSharedFuncs) durGt(a, b *durationpb.Duration) bool {\n\tad := a.AsDuration()\n\tbd := b.AsDuration()\n\n\treturn ad > bd\n}\n\nfunc (fns goSharedFuncs) tsLit(ts *timestamppb.Timestamp) string {\n\treturn fmt.Sprintf(\n\t\t\"time.Unix(%d, %d)\",\n\t\tts.GetSeconds(), ts.GetNanos(),\n\t)\n}\n\nfunc (fns goSharedFuncs) tsGt(a, b *timestamppb.Timestamp) bool {\n\tat := a.AsTime()\n\tbt := b.AsTime()\n\n\treturn bt.Before(at)\n}\n\nfunc (fns goSharedFuncs) tsStr(ts *timestamppb.Timestamp) string {\n\tt := ts.AsTime()\n\treturn t.String()\n}\n\nfunc (fns goSharedFuncs) unwrap(ctx shared.RuleContext, name string) (shared.RuleContext, error) {\n\tctx, err := ctx.Unwrap(\"wrapper\")\n\tif err != nil {\n\t\treturn ctx, err\n\t}\n\n\tctx.AccessorOverride = fmt.Sprintf(\"%s.Get%s()\", name,\n\t\tpgsgo.PGGUpperCamelCase(ctx.Field.Type().Embed().Fields()[0].Name()))\n\n\treturn ctx, nil\n}\n\nfunc (fns goSharedFuncs) msgTyp(message pgs.Message) pgsgo.TypeName {\n\treturn pgsgo.TypeName(fns.Name(message))\n}\n\nfunc (fns goSharedFuncs) externalEnums(file pgs.File) []pgs.Enum {\n\tvar out []pgs.Enum\n\n\tfor _, msg := range file.AllMessages() {\n\t\tfor _, fld := range msg.Fields() {\n\t\t\tvar en pgs.Enum\n\n\t\t\tif fld.Type().IsEnum() {\n\t\t\t\ten = fld.Type().Enum()\n\t\t\t}\n\n\t\t\tif fld.Type().IsRepeated() {\n\t\t\t\ten = fld.Type().Element().Enum()\n\t\t\t}\n\n\t\t\tif en != nil && en.File().Package().ProtoName() != msg.File().Package().ProtoName() {\n\t\t\t\tout = append(out, en)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out\n}\n\nfunc (fns goSharedFuncs) enumName(enum pgs.Enum) string {\n\tout := string(enum.Name())\n\tparent := enum.Parent()\n\tfor {\n\t\tmessage, ok := parent.(pgs.Message)\n\t\tif ok {\n\t\t\tout = string(message.Name()) + \"_\" + out\n\t\t\tparent = message.Parent()\n\t\t} else {\n\t\t\treturn out\n\t\t}\n\t}\n}\n\ntype NormalizedEnum struct {\n\tFilePath pgs.FilePath\n\tName     string\n}\n\nfunc (fns goSharedFuncs) enumPackages(enums []pgs.Enum) map[pgs.Name]NormalizedEnum {\n\tout := make(map[pgs.Name]NormalizedEnum, len(enums))\n\n\t// Start point from ./templates/go/file.go\n\tnameCollision := map[pgs.Name]int{\n\t\t\"bytes\":   0,\n\t\t\"errors\":  0,\n\t\t\"fmt\":     0,\n\t\t\"net\":     0,\n\t\t\"mail\":    0,\n\t\t\"url\":     0,\n\t\t\"regexp\":  0,\n\t\t\"sort\":    0,\n\t\t\"strings\": 0,\n\t\t\"time\":    0,\n\t\t\"utf8\":    0,\n\t\t\"anypb\":   0,\n\t}\n\tnameNormalized := make(map[pgs.FilePath]struct{})\n\n\tfor _, en := range enums {\n\t\tenImportPath := fns.ImportPath(en)\n\t\tif _, ok := nameNormalized[enImportPath]; ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tpkgName := fns.PackageName(en)\n\n\t\tif collision, ok := nameCollision[pkgName]; ok {\n\t\t\tnameCollision[pkgName] = collision + 1\n\t\t\tpkgName += pgs.Name(strconv.Itoa(nameCollision[pkgName]))\n\t\t} else {\n\t\t\tnameCollision[pkgName] = 0\n\t\t}\n\n\t\tnameNormalized[enImportPath] = struct{}{}\n\t\tout[pkgName] = NormalizedEnum{\n\t\t\tName:     fns.enumName(en),\n\t\t\tFilePath: enImportPath,\n\t\t}\n\n\t}\n\n\treturn out\n}\n\nfunc (fns goSharedFuncs) snakeCase(name string) string {\n\treturn strcase.ToSnake(name)\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/repeated.go",
    "content": "package goshared\n\nconst repTpl = `\n\t{{ $f := .Field }}{{ $r := .Rules }}\n\n\t{{ if $r.GetIgnoreEmpty }}\n\t\tif len({{ accessor . }}) > 0 {\n\t{{ end }}\n\n\t{{ if $r.GetMinItems }}\n\t\t{{ if eq $r.GetMinItems $r.GetMaxItems }}\n\t\t\tif len({{ accessor . }}) != {{ $r.GetMinItems }} {\n\t\t\t\terr := {{ err . \"value must contain exactly \" $r.GetMinItems \" item(s)\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ else if $r.MaxItems }}\n\t\t\tif l := len({{ accessor . }}); l < {{ $r.GetMinItems }} || l > {{ $r.GetMaxItems }} {\n\t\t\t\terr := {{ err . \"value must contain between \" $r.GetMinItems \" and \" $r.GetMaxItems \" items, inclusive\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ else }}\n\t\t\tif len({{ accessor . }}) < {{ $r.GetMinItems }} {\n\t\t\t\terr := {{ err . \"value must contain at least \" $r.GetMinItems \" item(s)\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ end }}\n\t{{ else if $r.MaxItems }}\n\t\tif len({{ accessor . }}) > {{ $r.GetMaxItems }} {\n\t\t\terr := {{ err . \"value must contain no more than \" $r.GetMaxItems \" item(s)\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.GetUnique }}\n\t\t{{ lookup $f \"Unique\" }} := {{ if isBytes $f.Type.Element -}}\n\t\t\tmake(map[string]struct{}, len({{ accessor . }}))\n\t\t{{ else -}}\n\t\t\tmake(map[{{ (typ $f).Element }}]struct{}, len({{ accessor . }}))\n\t\t{{ end -}}\n\t{{ end }}\n\n\t{{ if or $r.GetUnique (ne (.Elem \"\" \"\").Typ \"none\") }}\n\t\tfor idx, item := range {{ accessor . }} {\n\t\t\t_, _ = idx, item\n\t\t\t{{ if $r.GetUnique }}\n\t\t\t\tif _, exists := {{ lookup $f \"Unique\" }}[{{ if isBytes $f.Type.Element }}string(item){{ else }}item{{ end }}]; exists {\n\t\t\t\t\terr := {{ errIdx . \"idx\" \"repeated value must contain unique items\" }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t} else {\n\t\t\t\t\t{{ lookup $f \"Unique\" }}[{{ if isBytes $f.Type.Element }}string(item){{ else }}item{{ end }}] = struct{}{}\n\t\t\t\t}\n\t\t\t{{ end }}\n\n\t\t\t{{ render (.Elem \"item\" \"idx\") }}\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.GetIgnoreEmpty }}\n\t\t}\n\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/string.go",
    "content": "package goshared\n\nconst strTpl = `\n\t{{ $f := .Field }}{{ $r := .Rules }}\n\n\t{{ if $r.GetIgnoreEmpty }}\n\t\tif {{ accessor . }} != \"\" {\n\t{{ end }}\n\n\t{{ template \"const\" . }}\n\t{{ template \"in\" . }}\n\n\t{{ if or $r.Len (and $r.MinLen $r.MaxLen (eq $r.GetMinLen $r.GetMaxLen)) }}\n\t\t{{ if $r.Len }}\n\t\tif utf8.RuneCountInString({{ accessor . }}) != {{ $r.GetLen }} {\n\t\t\terr := {{ err . \"value length must be \" $r.GetLen \" runes\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t{{ else }}\n\t\tif utf8.RuneCountInString({{ accessor . }}) != {{ $r.GetMinLen }} {\n\t\t\terr := {{ err . \"value length must be \" $r.GetMinLen \" runes\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t{{ end }}\n\t}\n\t{{ else if $r.MinLen }}\n\t\t{{ if $r.MaxLen }}\n\t\t\tif l := utf8.RuneCountInString({{ accessor . }}); l < {{ $r.GetMinLen }} || l > {{ $r.GetMaxLen }} {\n\t\t\t\terr := {{ err . \"value length must be between \" $r.GetMinLen \" and \" $r.GetMaxLen \" runes, inclusive\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ else }}\n\t\t\tif utf8.RuneCountInString({{ accessor . }}) < {{ $r.GetMinLen }} {\n\t\t\t\terr := {{ err . \"value length must be at least \" $r.GetMinLen \" runes\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ end }}\n\t{{ else if $r.MaxLen }}\n\t\tif utf8.RuneCountInString({{ accessor . }}) > {{ $r.GetMaxLen }} {\n\t\t\terr := {{ err . \"value length must be at most \" $r.GetMaxLen \" runes\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if or $r.LenBytes (and $r.MinBytes $r.MaxBytes (eq $r.GetMinBytes $r.GetMaxBytes)) }}\n\t\t{{ if $r.LenBytes }}\n\t\t\tif len({{ accessor . }}) != {{ $r.GetLenBytes }} {\n\t\t\t\terr := {{ err . \"value length must be \" $r.GetLenBytes \" bytes\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ else }}\n\t\t\tif len({{ accessor . }}) != {{ $r.GetMinBytes }} {\n\t\t\t\terr := {{ err . \"value length must be \" $r.GetMinBytes \" bytes\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ end }}\n\t{{ else if $r.MinBytes }}\n\t\t{{ if $r.MaxBytes }}\n\t\t\tif l := len({{ accessor . }}); l < {{ $r.GetMinBytes }} || l > {{ $r.GetMaxBytes }} {\n\t\t\t\t\terr := {{ err . \"value length must be between \" $r.GetMinBytes \" and \" $r.GetMaxBytes \" bytes, inclusive\" }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ else }}\n\t\t\tif len({{ accessor . }}) < {{ $r.GetMinBytes }} {\n\t\t\t\terr := {{ err . \"value length must be at least \" $r.GetMinBytes \" bytes\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t{{ end }}\n\t{{ else if $r.MaxBytes }}\n\t\tif len({{ accessor . }}) > {{ $r.GetMaxBytes }} {\n\t\t\terr := {{ err . \"value length must be at most \" $r.GetMaxBytes \" bytes\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.Prefix }}\n\t\tif !strings.HasPrefix({{ accessor . }}, {{ lit $r.GetPrefix }}) {\n\t\t\terr := {{ err . \"value does not have prefix \" (lit $r.GetPrefix) }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.Suffix }}\n\t\tif !strings.HasSuffix({{ accessor . }}, {{ lit $r.GetSuffix }}) {\n\t\t\terr := {{ err . \"value does not have suffix \" (lit $r.GetSuffix) }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.Contains }}\n\t\tif !strings.Contains({{ accessor . }}, {{ lit $r.GetContains }}) {\n\t\t\terr := {{ err . \"value does not contain substring \" (lit $r.GetContains) }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.NotContains }}\n\t\tif strings.Contains({{ accessor . }}, {{ lit $r.GetNotContains }}) {\n\t\t\terr := {{ err . \"value contains substring \" (lit $r.GetNotContains) }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.GetIp }}\n\t\tif ip := net.ParseIP({{ accessor . }}); ip == nil {\n\t\t\terr := {{ err . \"value must be a valid IP address\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ else if $r.GetIpv4 }}\n\t\tif ip := net.ParseIP({{ accessor . }}); ip == nil || ip.To4() == nil {\n\t\t\terr := {{ err . \"value must be a valid IPv4 address\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ else if $r.GetIpv6 }}\n\t\tif ip := net.ParseIP({{ accessor . }}); ip == nil || ip.To4() != nil {\n\t\t\terr := {{ err . \"value must be a valid IPv6 address\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ else if $r.GetEmail }}\n\t\tif err := m._validateEmail({{ accessor . }}); err != nil {\n\t\t\terr = {{ errCause . \"err\" \"value must be a valid email address\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ else if $r.GetHostname }}\n\t\tif err := m._validateHostname({{ accessor . }}); err != nil {\n\t\t\terr = {{ errCause . \"err\" \"value must be a valid hostname\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ else if $r.GetAddress }}\n\t\tif err := m._validateHostname({{ accessor . }}); err != nil {\n\t\t\tif ip := net.ParseIP({{ accessor . }}); ip == nil {\n\t\t\t\terr := {{ err . \"value must be a valid hostname, or ip address\" }}\n\t\t\t\tif !all { return err }\n\t\t\t\terrors = append(errors, err)\n\t\t\t}\n\t\t}\n\t{{ else if $r.GetUri }}\n\t\tif uri, err := url.Parse({{ accessor . }}); err != nil {\n\t\t\terr = {{ errCause . \"err\" \"value must be a valid URI\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t} else if !uri.IsAbs() {\n\t\t\terr := {{ err . \"value must be absolute\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ else if $r.GetUriRef }}\n\t\tif _, err := url.Parse({{ accessor . }}); err != nil {\n\t\t\terr = {{ errCause . \"err\" \"value must be a valid URI\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ else if $r.GetUuid }}\n\t\tif err := m._validateUuid({{ accessor . }}); err != nil {\n\t\t\terr = {{ errCause . \"err\" \"value must be a valid UUID\" }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.Pattern }}\n\t\tif !{{ lookup $f \"Pattern\" }}.MatchString({{ accessor . }}) {\n\t\t\terr := {{ err . \"value does not match regex pattern \" (lit $r.GetPattern) }}\n\t\t\tif !all { return err }\n\t\t\terrors = append(errors, err)\n\t\t}\n\t{{ end }}\n\n\t{{ if $r.GetIgnoreEmpty }}\n\t\t}\n\t{{ end }}\n\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/timestamp.go",
    "content": "package goshared\n\nconst timestampcmpTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n\t\t\t{{  if $r.Const }}\n\t\t\t\tif !ts.Equal({{ tsLit $r.Const }}) {\n\t\t\t\t\terr := {{ err . \"value must equal \" (tsStr $r.Const) }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ end }}\n\n\t\t\t{{ if or $r.LtNow $r.GtNow $r.Within }} now := time.Now(); {{ end }}\n\t\t\t{{- if $r.Lt }}  lt  := {{ tsLit $r.Lt }};  {{ end }}\n\t\t\t{{- if $r.Lte }} lte := {{ tsLit $r.Lte }}; {{ end }}\n\t\t\t{{- if $r.Gt }}  gt  := {{ tsLit $r.Gt }};  {{ end }}\n\t\t\t{{- if $r.Gte }} gte := {{ tsLit $r.Gte }}; {{ end }}\n\t\t\t{{- if $r.Within }} within := {{ durLit $r.Within }}; {{ end }}\n\n\t\t\t{{ if $r.Lt }}\n\t\t\t\t{{ if $r.Gt }}\n\t\t\t\t\t{{  if tsGt $r.GetLt $r.GetGt }}\n\t\t\t\t\t\tif ts.Sub(gt) <= 0 || ts.Sub(lt) >= 0 {\n\t\t\t\t\t\t\terr := {{ err . \"value must be inside range (\" (tsStr $r.GetGt) \", \" (tsStr $r.GetLt) \")\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif ts.Sub(lt) >= 0 && ts.Sub(gt) <= 0 {\n\t\t\t\t\t\t\terr := {{ err . \"value must be outside range [\" (tsStr $r.GetLt) \", \" (tsStr $r.GetGt) \"]\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else if $r.Gte }}\n\t\t\t\t\t{{  if tsGt $r.GetLt $r.GetGte }}\n\t\t\t\t\t\tif ts.Sub(gte) < 0 || ts.Sub(lt) >= 0 {\n\t\t\t\t\t\t\terr := {{ err . \"value must be inside range [\" (tsStr $r.GetGte) \", \" (tsStr $r.GetLt) \")\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif ts.Sub(lt) >= 0 && ts.Sub(gte) < 0 {\n\t\t\t\t\t\t\terr := {{ err . \"value must be outside range [\" (tsStr $r.GetLt) \", \" (tsStr $r.GetGte) \")\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else }}\n\t\t\t\t\tif ts.Sub(lt) >= 0 {\n\t\t\t\t\t\terr := {{ err . \"value must be less than \" (tsStr $r.GetLt) }}\n\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t}\n\t\t\t\t{{ end }}\n\t\t\t{{ else if $r.Lte }}\n\t\t\t\t{{ if $r.Gt }}\n\t\t\t\t\t{{  if tsGt $r.GetLte $r.GetGt }}\n\t\t\t\t\t\tif ts.Sub(gt) <= 0 || ts.Sub(lte) > 0 {\n\t\t\t\t\t\t\terr := {{ err . \"value must be inside range (\" (tsStr $r.GetGt) \", \" (tsStr $r.GetLte) \"]\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif ts.Sub(lte) > 0 && ts.Sub(gt) <= 0 {\n\t\t\t\t\t\t\terr := {{ err . \"value must be outside range (\" (tsStr $r.GetLte) \", \" (tsStr $r.GetGt) \"]\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else if $r.Gte }}\n\t\t\t\t\t{{ if tsGt $r.GetLte $r.GetGte }}\n\t\t\t\t\t\tif ts.Sub(gte) < 0 || ts.Sub(lte) > 0 {\n\t\t\t\t\t\t\terr := {{ err . \"value must be inside range [\" (tsStr $r.GetGte) \", \" (tsStr $r.GetLte) \"]\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ else }}\n\t\t\t\t\t\tif ts.Sub(lte) > 0 && ts.Sub(gte) < 0 {\n\t\t\t\t\t\t\terr := {{ err . \"value must be outside range (\" (tsStr $r.GetLte) \", \" (tsStr $r.GetGte) \")\" }}\n\t\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t\t}\n\t\t\t\t\t{{ end }}\n\t\t\t\t{{ else }}\n\t\t\t\t\tif ts.Sub(lte) > 0 {\n\t\t\t\t\t\terr := {{ err . \"value must be less than or equal to \" (tsStr $r.GetLte) }}\n\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t}\n\t\t\t\t{{ end }}\n\t\t\t{{ else if $r.Gt }}\n\t\t\t\tif ts.Sub(gt) <= 0 {\n\t\t\t\t\terr := {{ err . \"value must be greater than \" (tsStr $r.GetGt) }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ else if $r.Gte }}\n\t\t\t\tif ts.Sub(gte) < 0 {\n\t\t\t\t\terr := {{ err . \"value must be greater than or equal to \" (tsStr $r.GetGte) }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ else if $r.LtNow }}\n\t\t\t\t{{ if $r.Within }}\n\t\t\t\t\tif ts.Sub(now) >= 0 || ts.Sub(now.Add(-within)) < 0 {\n\t\t\t\t\t\terr := {{ err . \"value must be less than now within \" (durStr $r.GetWithin) }}\n\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t}\n\t\t\t\t{{ else }}\n\t\t\t\t\tif ts.Sub(now) >= 0 {\n\t\t\t\t\t\terr := {{ err . \"value must be less than now\" }}\n\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t}\n\t\t\t\t{{ end }}\n\t\t\t{{ else if $r.GtNow }}\n\t\t\t\t{{ if $r.Within }}\n\t\t\t\t\tif ts.Sub(now) <= 0 || ts.Sub(now.Add(within)) > 0 {\n\t\t\t\t\t\terr := {{ err . \"value must be greater than now within \" (durStr $r.GetWithin) }}\n\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t}\n\t\t\t\t{{ else }}\n\t\t\t\t\tif ts.Sub(now) <= 0 {\n\t\t\t\t\t\terr := {{ err . \"value must be greater than now\" }}\n\t\t\t\t\t\tif !all { return err }\n\t\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t\t}\n\t\t\t\t{{ end }}\n\t\t\t{{ else if $r.Within }}\n\t\t\t\tif ts.Sub(now.Add(within)) >= 0 || ts.Sub(now.Add(-within)) <= 0 {\n\t\t\t\t\terr := {{ err . \"value must be within \" (durStr $r.GetWithin) \" of now\" }}\n\t\t\t\t\tif !all { return err }\n\t\t\t\t\terrors = append(errors, err)\n\t\t\t\t}\n\t\t\t{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/goshared/wrapper.go",
    "content": "package goshared\n\nconst wrapperTpl = `\n\t{{ $f := .Field }}{{ $r := .Rules }}\n\n\tif wrapper := {{ accessor . }}; wrapper != nil {\n\t\t{{ render (unwrap . \"wrapper\") }}\n\t} {{ if .MessageRules.GetRequired }} else {\n\t\terr := {{ err . \"value is required and must not be nil.\" }}\n\t\tif !all { return err }\n\t\terrors = append(errors, err)\n\t} {{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/BUILD.bazel",
    "content": "load(\"@io_bazel_rules_go//go:def.bzl\", \"go_library\")\n\ngo_library(\n    name = \"java\",\n    srcs = [\n        \"any.go\",\n        \"bool.go\",\n        \"bytes.go\",\n        \"duration.go\",\n        \"enum.go\",\n        \"file.go\",\n        \"map.go\",\n        \"message.go\",\n        \"msg.go\",\n        \"none.go\",\n        \"num.go\",\n        \"oneof.go\",\n        \"register.go\",\n        \"repeated.go\",\n        \"required.go\",\n        \"string.go\",\n        \"timestamp.go\",\n        \"wrapper.go\",\n    ],\n    importpath = \"github.com/envoyproxy/protoc-gen-validate/templates/java\",\n    visibility = [\"//visibility:public\"],\n    deps = [\n        \"//templates/shared\",\n        \"@com_github_iancoleman_strcase//:strcase\",\n        \"@com_github_lyft_protoc_gen_star_v2//:protoc-gen-star\",\n        \"@com_github_lyft_protoc_gen_star_v2//lang/go\",\n        \"@org_golang_google_protobuf//types/known/durationpb\",\n        \"@org_golang_google_protobuf//types/known/timestamppb\",\n    ],\n)\n\nalias(\n    name = \"go_default_library\",\n    actual = \":java\",\n    deprecation = \"Use :java instead of :go_default_library.  Details about the new naming convention: https://github.com/bazelbuild/bazel-gazelle/pull/863\",\n    visibility = [\"//visibility:public\"],\n)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/any.go",
    "content": "package java\n\nconst anyConstTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n{{- if $r.In }}\n\t\tprivate final String[] {{ constantName . \"In\" }} = new String[]{\n\t\t\t{{- range $r.In }}\n\t\t\t\"{{ . }}\",\n\t\t\t{{- end }}\n\t\t};\n{{- end -}}\n{{- if $r.NotIn }}\n\t\tprivate final String[] {{ constantName . \"NotIn\" }} = new String[]{\n\t\t\t{{- range $r.NotIn }}\n\t\t\t\"{{ . }}\",\n\t\t\t{{- end }}\n\t\t};\n{{- end -}}`\n\nconst anyTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n\t{{- template \"required\" . -}}\n\n\t{{- if $r.In }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.CollectiveValidation.in(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}.getTypeUrl(), {{ constantName . \"In\" }});\n\t{{- end -}}\n\t{{- if $r.NotIn }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.CollectiveValidation.notIn(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}.getTypeUrl(), {{ constantName . \"NotIn\" }});\n\t{{- end -}}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/bool.go",
    "content": "package java\n\nconst boolTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{- if $r.Const }}\n\t\t\tio.envoyproxy.pgv.ConstantValidation.constant(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ $r.GetConst }});\n{{- end }}`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/bytes.go",
    "content": "package java\n\nconst bytesConstTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{- if $r.Const }}\n\t\tprivate final com.google.protobuf.ByteString {{ constantName . \"Const\" }} = com.google.protobuf.ByteString.copyFrom({{ byteArrayLit $r.GetConst }});\n{{- end -}}\n{{- if $r.In }}\n\t\tprivate final com.google.protobuf.ByteString[] {{ constantName . \"In\" }} = new com.google.protobuf.ByteString[]{\n\t\t\t{{- range $r.In }}\n\t\t\tcom.google.protobuf.ByteString.copyFrom({{ byteArrayLit . }}),\n\t\t\t{{- end }}\n\t\t};\n{{- end -}}\n{{- if $r.NotIn }}\n\t\tprivate final com.google.protobuf.ByteString[] {{ constantName . \"NotIn\" }} = new com.google.protobuf.ByteString[]{\n\t\t\t{{- range $r.NotIn }}\n\t\t\tcom.google.protobuf.ByteString.copyFrom({{ byteArrayLit . }}),\n\t\t\t{{- end }}\n\t\t};\n{{- end -}}\n{{- if $r.Pattern }}\n\t\tprivate final com.google.re2j.Pattern {{ constantName . \"Pattern\" }} = com.google.re2j.Pattern.compile({{ javaStringEscape $r.GetPattern }});\n{{- end -}}\n{{- if $r.Prefix }}\n\t\tprivate final byte[] {{ constantName . \"Prefix\" }} = {{ byteArrayLit $r.GetPrefix }};\n{{- end -}}\n{{- if $r.Contains }}\n\t\tprivate final byte[] {{ constantName . \"Contains\" }} = {{ byteArrayLit $r.GetContains }};\n{{- end -}}\n{{- if $r.Suffix }}\n\t\tprivate final byte[] {{ constantName . \"Suffix\" }} = {{ byteArrayLit $r.GetSuffix }};\n{{- end -}}`\n\nconst bytesTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{- if $r.GetIgnoreEmpty }}\n\t\t\tif ( !{{ accessor . }}.isEmpty() ) {\n{{- end -}}\n{{- if $r.Const }}\n\t\t\tio.envoyproxy.pgv.ConstantValidation.constant(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Const\" }});\n{{- end -}}\n{{- if $r.Len }}\n\t\t\tio.envoyproxy.pgv.BytesValidation.length(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ $r.GetLen }});\n{{- end -}}\n{{- if $r.MinLen }}\n\t\t\tio.envoyproxy.pgv.BytesValidation.minLength(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ $r.GetMinLen }});\n{{- end -}}\n{{- if $r.MaxLen }}\n\t\t\tio.envoyproxy.pgv.BytesValidation.maxLength(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ $r.GetMaxLen }});\n{{- end -}}\n{{- if $r.Pattern }}\n\t\t\tio.envoyproxy.pgv.BytesValidation.pattern(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Pattern\" }});\n{{- end -}}\n{{- if $r.Prefix }}\n\t\t\tio.envoyproxy.pgv.BytesValidation.prefix(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Prefix\" }});\n{{- end -}}\n{{- if $r.Contains }}\n\t\t\tio.envoyproxy.pgv.BytesValidation.contains(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Contains\" }});\n{{- end -}}\n{{- if $r.Suffix }}\n\t\t\tio.envoyproxy.pgv.BytesValidation.suffix(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Suffix\" }});\n{{- end -}}\n{{- if $r.GetIp }}\n\t\t\tio.envoyproxy.pgv.BytesValidation.ip(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end -}}\n{{- if $r.GetIpv4 }}\n\t\t\tio.envoyproxy.pgv.BytesValidation.ipv4(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end -}}\n{{- if $r.GetIpv6 }}\n\t\t\tio.envoyproxy.pgv.BytesValidation.ipv6(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end -}}\n{{- if $r.In }}\n\t\t\tio.envoyproxy.pgv.CollectiveValidation.in(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"In\" }});\n{{- end -}}\n{{- if $r.NotIn }}\n\t\t\tio.envoyproxy.pgv.CollectiveValidation.notIn(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"NotIn\" }});\n{{- end -}}\n{{- if $r.GetIgnoreEmpty }}\n\t\t\t}\n{{- end -}}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/duration.go",
    "content": "package java\n\nconst durationConstTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{- if $r.Const }}\n\t\tprivate final com.google.protobuf.Duration {{ constantName . \"Const\" }} = {{ durLit $r.GetConst }};\n{{- end -}}\n{{- if $r.Lt }}\n\t\tprivate final com.google.protobuf.Duration {{ constantName . \"Lt\" }} = {{ durLit $r.GetLt }};\n{{- end -}}\n{{- if $r.Lte }}\n\t\tprivate final com.google.protobuf.Duration {{ constantName . \"Lte\" }} = {{ durLit $r.GetLte }};\n{{- end -}}\n{{- if $r.Gt }}\n\t\tprivate final com.google.protobuf.Duration {{ constantName . \"Gt\" }} = {{ durLit $r.GetGt }};\n{{- end -}}\n{{- if $r.Gte }}\n\t\tprivate final com.google.protobuf.Duration {{ constantName . \"Gte\" }} = {{ durLit $r.GetGte }};\n{{- end -}}\n{{- if $r.In }}\n\t\tprivate final com.google.protobuf.Duration[] {{ constantName . \"In\" }} = new com.google.protobuf.Duration[]{\n\t\t\t{{- range $r.In }}\n\t\t\t{{ durLit . }},\n\t\t\t{{- end }}\n\t\t};\n{{- end -}}\n{{- if $r.NotIn }}\n\t\tprivate final com.google.protobuf.Duration[] {{ constantName . \"NotIn\" }} = new com.google.protobuf.Duration[]{\n\t\t\t{{- range $r.NotIn }}\n\t\t\t{{ durLit . }},\n\t\t\t{{- end }}\n\t\t};\n{{- end -}}`\n\nconst durationTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{- template \"required\" . -}}\n\n{{- if $r.Const }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.ConstantValidation.constant(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Const\" }});\n{{- end -}}\n{{- if and (or $r.Lt $r.Lte) (or $r.Gt $r.Gte)}}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.ComparativeValidation.range(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ if $r.Lt }}{{ constantName . \"Lt\" }}{{ else }}null{{ end }}, {{ if $r.Lte }}{{ constantName . \"Lte\" }}{{ else }}null{{ end }}, {{ if $r.Gt }}{{ constantName . \"Gt\" }}{{ else }}null{{ end }}, {{ if $r.Gte }}{{ constantName . \"Gte\" }}{{ else }}null{{ end }}, com.google.protobuf.util.Durations.comparator());\n{{- else -}}\n{{- if $r.Lt }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.ComparativeValidation.lessThan(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Lt\" }}, com.google.protobuf.util.Durations.comparator());\n{{- end -}}\n{{- if $r.Lte }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.ComparativeValidation.lessThanOrEqual(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Lte\" }}, com.google.protobuf.util.Durations.comparator());\n{{- end -}}\n{{- if $r.Gt }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.ComparativeValidation.greaterThan(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Gt\" }}, com.google.protobuf.util.Durations.comparator());\n{{- end -}}\n{{- if $r.Gte }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.ComparativeValidation.greaterThanOrEqual(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Gte\" }}, com.google.protobuf.util.Durations.comparator());\n{{- end -}}\n{{- end -}}\n{{- if $r.In }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.CollectiveValidation.in(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"In\" }});\n{{- end -}}\n{{- if $r.NotIn }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.CollectiveValidation.notIn(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"NotIn\" }});\n{{- end -}}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/enum.go",
    "content": "package java\n\nconst enumConstTpl = `{{ $ctx := . }}{{ $f := .Field }}{{ $r := .Rules -}}\n{{- if $r.In }}\n\t\tprivate final {{ javaTypeFor . }}[] {{ constantName . \"In\" }} = new {{ javaTypeFor . }}[]{\n\t\t\t{{- range $r.In }}\n\t\t\t{{ javaTypeFor $ctx }}.forNumber({{- sprintf \"%v\" . -}}),\n\t\t\t{{- end }}\n\t\t};\n{{- end -}}\n{{- if $r.NotIn }}\n\t\tprivate final {{ javaTypeFor . }}[] {{ constantName . \"NotIn\" }} = new {{ javaTypeFor . }}[]{\n\t\t\t{{- range $r.NotIn }}\n\t\t\t{{ javaTypeFor $ctx }}.forNumber({{- sprintf \"%v\" . -}}),\n\t\t\t{{- end }}\n\t\t};\n{{- end -}}`\n\nconst enumTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{- if $r.Const }}\n\t\t\tio.envoyproxy.pgv.ConstantValidation.constant(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, \n\t\t\t\t{{ javaTypeFor . }}.forNumber({{ $r.GetConst }}));\n{{- end -}}\n{{- if $r.GetDefinedOnly }}\n\t\t\tio.envoyproxy.pgv.EnumValidation.definedOnly(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end -}}\n{{- if $r.In }}\n\t\t\tio.envoyproxy.pgv.CollectiveValidation.in(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"In\" }});\n{{- end -}}\n{{- if $r.NotIn }}\n\t\t\tio.envoyproxy.pgv.CollectiveValidation.notIn(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"NotIn\" }});\n{{- end -}}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/file.go",
    "content": "package java\n\nconst fileTpl = `// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: {{ .File.InputPath }}\n\npackage {{ javaPackage .File }};\n\n{{ if isOfFileType . }}\n@SuppressWarnings(\"all\")\npublic class {{ classNameFile . }}Validator {\n\tpublic static io.envoyproxy.pgv.ValidatorImpl validatorFor(Class clazz) {\n\t\t{{ range .AllMessages }}\n\t\t{{ if not (ignored .) -}}\n\t\tif (clazz.equals({{ qualifiedName . }}.class)) return new {{ simpleName .}}Validator();\n\t\t{{- end }}\n\t\t{{- end }}\n\t\treturn null;\n\t}\n\n{{ range .AllMessages -}}\n\t{{- template \"msg\" . -}}\n{{- end }}\n}\n{{ else }}\n/**\n* Validates {@code {{ simpleName . }}} protobuf objects.\n*/\n@SuppressWarnings(\"all\")\npublic class {{ classNameMessage .}}Validator implements io.envoyproxy.pgv.ValidatorImpl<{{ qualifiedName . }}>{\n\tpublic static io.envoyproxy.pgv.ValidatorImpl validatorFor(Class clazz) {\n\t\tif (clazz.equals({{ qualifiedName . }}.class)) return new {{ simpleName .}}Validator();\n\t\t{{ range .AllMessages }}\n\t\t{{ if not (ignored .) -}}\n\t\tif (clazz.equals({{ qualifiedName . }}.class)) return new {{ simpleName .}}Validator();\n\t\t{{- end }}\n\t\t{{- end }}\n\t\treturn null;\n\t}\n\t{{- template \"msgInner\" . -}}\n\t{{ range .AllMessages -}}\n\t{{- template \"msg\" . -}}\n\t{{- end }}\n}\n{{ end }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/map.go",
    "content": "package java\n\nconst mapConstTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{ if or (ne (.Elem \"\" \"\").Typ \"none\") (ne (.Key \"\" \"\").Typ \"none\") }}\n\t\t{{ renderConstants (.Key \"key\" \"Key\") }}\n\t\t{{ renderConstants (.Elem \"value\" \"Value\") }}\n{{- end -}}\n`\n\nconst mapTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{- if $r.GetIgnoreEmpty }}\n\t\t\tif ( !{{ accessor . }}.isEmpty() ) {\n{{- end -}}\n{{- if $r.GetMinPairs }}\n\t\t\tio.envoyproxy.pgv.MapValidation.min(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ $r.GetMinPairs }});\n{{- end -}}\n{{- if $r.GetMaxPairs }}\n\t\t\tio.envoyproxy.pgv.MapValidation.max(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ $r.GetMaxPairs }});\n{{- end -}}\n{{- if $r.GetNoSparse }}\n\t\t\tio.envoyproxy.pgv.MapValidation.noSparse(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end -}}\n{{ if or (ne (.Elem \"\" \"\").Typ \"none\") (ne (.Key \"\" \"\").Typ \"none\") }}\n\t\t\tio.envoyproxy.pgv.MapValidation.validateParts({{ accessor . }}.keySet(), key -> {\n\t\t\t\t{{ render (.Key \"key\" \"Key\") }}\n\t\t\t});\n\t\t\tio.envoyproxy.pgv.MapValidation.validateParts({{ accessor . }}.values(), value -> {\n\t\t\t\t{{ render (.Elem \"value\" \"Value\") }}\n\t\t\t});\n{{- end -}}\n{{- if $r.GetIgnoreEmpty }}\n\t\t\t}\n{{- end -}}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/message.go",
    "content": "package java\n\nconst messageTpl = `{{ $f := .Field }}{{ $r := .Rules }}\n\t{{- if .MessageRules.GetSkip }}\n\t\t\t// skipping validation for {{ $f.Name }}\n\t{{- else -}}\n\t\t{{- template \"required\" . }}\n\t\t{{- if (isOfMessageType $f) }}\n\t\t\t// Validate {{ $f.Name }}\n\t\t\tif ({{ hasAccessor . }}) index.validatorFor({{ accessor . }}).assertValid({{ accessor . }});\n\t\t{{- end -}}\n\t{{- end -}}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/msg.go",
    "content": "package java\n\nconst msgTpl = `\n{{ if not (ignored .) -}}\n\t/**\n\t * Validates {@code {{ simpleName . }}} protobuf objects.\n\t */\n\tpublic static class {{ simpleName . }}Validator implements io.envoyproxy.pgv.ValidatorImpl<{{ qualifiedName . }}> {\n\t\t{{- template \"msgInner\" . -}}\n\t}\n{{- end -}}\n`\n\nconst msgInnerTpl = `\n\t{{- range .NonOneOfFields }}\n\t\t{{ renderConstants (context .) }}\n\t{{ end }}\n\t{{ range .SyntheticOneOfFields }}\n\t\t{{ renderConstants (context .) }}\n\t{{ end }}\n\t{{ range .RealOneOfs }}\n\t\t{{ template \"oneOfConst\" . }}\n\t{{ end }}\n\n\tpublic void assertValid({{ qualifiedName . }} proto, io.envoyproxy.pgv.ValidatorIndex index) throws io.envoyproxy.pgv.ValidationException {\n\t{{ if disabled . }}\n\t\t// Validate is disabled for {{ simpleName . }}\n\t\treturn;\n\t{{- else -}}\n\t{{ range .NonOneOfFields -}}\n\t\t{{ render (context .) }}\n\t{{ end -}}\n\t{{ range .SyntheticOneOfFields }}\n\t\tif ({{ hasAccessor (context .) }}) {\n\t\t\t{{ render (context .) }}\n\t\t}\n\t{{ end }}\n\t{{ range .RealOneOfs }}\n\t\t{{ template \"oneOf\" . }}\n\t{{- end -}}\n\t{{- end }}\n\t}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/none.go",
    "content": "package java\n\nconst noneTpl = `// no validation rules for {{ simpleName .Field }}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/num.go",
    "content": "package java\n\nconst numConstTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{- if $r.Const }}\n\t\tprivate final {{ javaTypeFor .}} {{ constantName . \"Const\" }} = {{ $r.GetConst }}{{ javaTypeLiteralSuffixFor . }};\n{{- end -}}\n{{- if $r.Lt }}\n\t\tprivate final {{ javaTypeFor .}} {{ constantName . \"Lt\" }} = {{ $r.GetLt }}{{ javaTypeLiteralSuffixFor . }};\n{{- end -}}\n{{- if $r.Lte }}\n\t\tprivate final {{ javaTypeFor .}} {{ constantName . \"Lte\" }} = {{ $r.GetLte }}{{ javaTypeLiteralSuffixFor . }};\n{{- end -}}\n{{- if $r.Gt }}\n\t\tprivate final {{ javaTypeFor .}} {{ constantName . \"Gt\" }} = {{ $r.GetGt }}{{ javaTypeLiteralSuffixFor . }};\n{{- end -}}\n{{- if $r.Gte }}\n\t\tprivate final {{ javaTypeFor .}} {{ constantName . \"Gte\" }} = {{ $r.GetGte }}{{ javaTypeLiteralSuffixFor . }};\n{{- end -}}\n{{- if $r.In }}\n\t\tprivate final {{ javaTypeFor . }}[] {{ constantName . \"In\" }} = new {{ javaTypeFor . }}[]{\n\t\t\t{{- range $r.In -}}\n\t\t\t\t{{- sprintf \"%v\" . -}}{{ javaTypeLiteralSuffixFor $ }},\n\t\t\t{{- end -}}\n\t\t};\n{{- end -}}\n{{- if $r.NotIn }}\n\t\tprivate final {{ javaTypeFor . }}[] {{ constantName . \"NotIn\" }} = new {{ javaTypeFor . }}[]{\n\t\t\t{{- range $r.NotIn -}}\n\t\t\t\t{{- sprintf \"%v\" . -}}{{ javaTypeLiteralSuffixFor $ }},\n\t\t\t{{- end -}}\n\t\t};\n{{- end -}}`\n\nconst numTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{- if $r.GetIgnoreEmpty }}\n\t\t\tif ( {{ accessor . }} != 0 ) {\n{{- end -}}\n{{- if $r.Const }}\n\t\t\tio.envoyproxy.pgv.ConstantValidation.constant(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Const\" }});\n{{- end -}}\n{{- if and (or $r.Lt $r.Lte) (or $r.Gt $r.Gte)}}\n\t\t\tio.envoyproxy.pgv.ComparativeValidation.range(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ if $r.Lt }}{{ constantName . \"Lt\" }}{{ else }}null{{ end }}, {{ if $r.Lte }}{{ constantName . \"Lte\" }}{{ else }}null{{ end }}, {{ if $r.Gt }}{{ constantName . \"Gt\" }}{{ else }}null{{ end }}, {{ if $r.Gte }}{{ constantName . \"Gte\" }}{{ else }}null{{ end }}, java.util.Comparator.naturalOrder());\n{{- else -}}\n{{- if $r.Lt }}\n\t\t\tio.envoyproxy.pgv.ComparativeValidation.lessThan(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Lt\" }}, java.util.Comparator.naturalOrder());\n{{- end -}}\n{{- if $r.Lte }}\n\t\t\tio.envoyproxy.pgv.ComparativeValidation.lessThanOrEqual(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Lte\" }}, java.util.Comparator.naturalOrder());\n{{- end -}}\n{{- if $r.Gt }}\n\t\t\tio.envoyproxy.pgv.ComparativeValidation.greaterThan(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Gt\" }}, java.util.Comparator.naturalOrder());\n{{- end -}}\n{{- if $r.Gte }}\n\t\t\tio.envoyproxy.pgv.ComparativeValidation.greaterThanOrEqual(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Gte\" }}, java.util.Comparator.naturalOrder());\n{{- end -}}\n{{- end -}}\n{{- if $r.In }}\n\t\t\tio.envoyproxy.pgv.CollectiveValidation.in(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"In\" }});\n{{- end -}}\n{{- if $r.NotIn }}\n\t\t\tio.envoyproxy.pgv.CollectiveValidation.notIn(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"NotIn\" }});\n{{- end -}}\n{{- if $r.GetIgnoreEmpty }}\n\t\t\t}\n{{- end -}}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/oneof.go",
    "content": "package java\n\nconst oneOfConstTpl = `\n{{ range .Fields }}{{ renderConstants (context .) }}{{ end }}\n`\n\nconst oneOfTpl = `\n\t\t\tswitch (proto.get{{camelCase .Name }}Case()) {\n\t\t\t\t{{ range .Fields -}}\n\t\t\t\tcase {{ oneof . }}:\n\t\t\t\t\t{{ render (context .) }}\n\t\t\t\t\tbreak;\n\t\t\t\t{{ end -}}\n\t\t\t\t{{- if required . }}\n\t\t\t\tdefault: \n\t\t\t\t\tio.envoyproxy.pgv.RequiredValidation.required(\"{{ .FullyQualifiedName }}\", null);\n\t\t\t\t{{- end }}\n\t\t\t}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/register.go",
    "content": "package java\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\t\"text/template\"\n\t\"unicode\"\n\n\t\"github.com/iancoleman/strcase\"\n\tpgs \"github.com/lyft/protoc-gen-star/v2\"\n\tpgsgo \"github.com/lyft/protoc-gen-star/v2/lang/go\"\n\t\"google.golang.org/protobuf/types/known/durationpb\"\n\t\"google.golang.org/protobuf/types/known/timestamppb\"\n\n\t\"github.com/envoyproxy/protoc-gen-validate/templates/shared\"\n)\n\nfunc RegisterIndex(tpl *template.Template, params pgs.Parameters) {\n\tfns := javaFuncs{pgsgo.InitContext(params)}\n\n\ttpl.Funcs(map[string]interface{}{\n\t\t\"classNameFile\": classNameFile,\n\t\t\"importsPvg\":    importsPvg,\n\t\t\"javaPackage\":   javaPackage,\n\t\t\"simpleName\":    fns.Name,\n\t\t\"qualifiedName\": fns.qualifiedName,\n\t})\n}\n\nfunc Register(tpl *template.Template, params pgs.Parameters) {\n\tfns := javaFuncs{pgsgo.InitContext(params)}\n\n\ttpl.Funcs(map[string]interface{}{\n\t\t\"accessor\":                 fns.accessor,\n\t\t\"byteArrayLit\":             fns.byteArrayLit,\n\t\t\"camelCase\":                fns.camelCase,\n\t\t\"classNameFile\":            classNameFile,\n\t\t\"classNameMessage\":         classNameMessage,\n\t\t\"durLit\":                   fns.durLit,\n\t\t\"fieldName\":                fns.fieldName,\n\t\t\"javaPackage\":              javaPackage,\n\t\t\"javaStringEscape\":         fns.javaStringEscape,\n\t\t\"javaTypeFor\":              fns.javaTypeFor,\n\t\t\"javaTypeLiteralSuffixFor\": fns.javaTypeLiteralSuffixFor,\n\t\t\"hasAccessor\":              fns.hasAccessor,\n\t\t\"oneof\":                    fns.oneofTypeName,\n\t\t\"sprintf\":                  fmt.Sprintf,\n\t\t\"simpleName\":               fns.Name,\n\t\t\"tsLit\":                    fns.tsLit,\n\t\t\"qualifiedName\":            fns.qualifiedName,\n\t\t\"isOfFileType\":             fns.isOfFileType,\n\t\t\"isOfMessageType\":          fns.isOfMessageType,\n\t\t\"isOfStringType\":           fns.isOfStringType,\n\t\t\"unwrap\":                   fns.unwrap,\n\t\t\"renderConstants\":          fns.renderConstants(tpl),\n\t\t\"constantName\":             fns.constantName,\n\t})\n\n\ttemplate.Must(tpl.Parse(fileTpl))\n\ttemplate.Must(tpl.New(\"msg\").Parse(msgTpl))\n\ttemplate.Must(tpl.New(\"msgInner\").Parse(msgInnerTpl))\n\n\ttemplate.Must(tpl.New(\"none\").Parse(noneTpl))\n\n\ttemplate.Must(tpl.New(\"float\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"floatConst\").Parse(numConstTpl))\n\ttemplate.Must(tpl.New(\"double\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"doubleConst\").Parse(numConstTpl))\n\ttemplate.Must(tpl.New(\"int32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"int32Const\").Parse(numConstTpl))\n\ttemplate.Must(tpl.New(\"int64\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"int64Const\").Parse(numConstTpl))\n\ttemplate.Must(tpl.New(\"uint32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"uint32Const\").Parse(numConstTpl))\n\ttemplate.Must(tpl.New(\"uint64\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"uint64Const\").Parse(numConstTpl))\n\ttemplate.Must(tpl.New(\"sint32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"sint32Const\").Parse(numConstTpl))\n\ttemplate.Must(tpl.New(\"sint64\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"sint64Const\").Parse(numConstTpl))\n\ttemplate.Must(tpl.New(\"fixed32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"fixed32Const\").Parse(numConstTpl))\n\ttemplate.Must(tpl.New(\"fixed64\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"fixed64Const\").Parse(numConstTpl))\n\ttemplate.Must(tpl.New(\"sfixed32\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"sfixed32Const\").Parse(numConstTpl))\n\ttemplate.Must(tpl.New(\"sfixed64\").Parse(numTpl))\n\ttemplate.Must(tpl.New(\"sfixed64Const\").Parse(numConstTpl))\n\n\ttemplate.Must(tpl.New(\"bool\").Parse(boolTpl))\n\ttemplate.Must(tpl.New(\"string\").Parse(stringTpl))\n\ttemplate.Must(tpl.New(\"stringConst\").Parse(stringConstTpl))\n\ttemplate.Must(tpl.New(\"bytes\").Parse(bytesTpl))\n\ttemplate.Must(tpl.New(\"bytesConst\").Parse(bytesConstTpl))\n\n\ttemplate.Must(tpl.New(\"any\").Parse(anyTpl))\n\ttemplate.Must(tpl.New(\"anyConst\").Parse(anyConstTpl))\n\ttemplate.Must(tpl.New(\"enum\").Parse(enumTpl))\n\ttemplate.Must(tpl.New(\"enumConst\").Parse(enumConstTpl))\n\ttemplate.Must(tpl.New(\"message\").Parse(messageTpl))\n\ttemplate.Must(tpl.New(\"repeated\").Parse(repeatedTpl))\n\ttemplate.Must(tpl.New(\"repeatedConst\").Parse(repeatedConstTpl))\n\ttemplate.Must(tpl.New(\"map\").Parse(mapTpl))\n\ttemplate.Must(tpl.New(\"mapConst\").Parse(mapConstTpl))\n\ttemplate.Must(tpl.New(\"oneOf\").Parse(oneOfTpl))\n\ttemplate.Must(tpl.New(\"oneOfConst\").Parse(oneOfConstTpl))\n\n\ttemplate.Must(tpl.New(\"required\").Parse(requiredTpl))\n\ttemplate.Must(tpl.New(\"timestamp\").Parse(timestampTpl))\n\ttemplate.Must(tpl.New(\"timestampConst\").Parse(timestampConstTpl))\n\ttemplate.Must(tpl.New(\"duration\").Parse(durationTpl))\n\ttemplate.Must(tpl.New(\"durationConst\").Parse(durationConstTpl))\n\ttemplate.Must(tpl.New(\"wrapper\").Parse(wrapperTpl))\n\ttemplate.Must(tpl.New(\"wrapperConst\").Parse(wrapperConstTpl))\n}\n\ntype javaFuncs struct{ pgsgo.Context }\n\nfunc JavaFilePath(f pgs.File, ctx pgsgo.Context, tpl *template.Template) *pgs.FilePath {\n\t// Don't generate validators for files that don't import PGV\n\tif !importsPvg(f) {\n\t\treturn nil\n\t}\n\n\tfullPath := strings.ReplaceAll(javaPackage(f), \".\", string(os.PathSeparator))\n\tfileName := classNameFile(f) + \"Validator.java\"\n\tfilePath := pgs.JoinPaths(fullPath, fileName)\n\treturn &filePath\n}\n\nfunc JavaMultiFilePath(f pgs.File, m pgs.Message) pgs.FilePath {\n\tfullPath := strings.ReplaceAll(javaPackage(f), \".\", string(os.PathSeparator))\n\tfileName := classNameMessage(m) + \"Validator.java\"\n\tfilePath := pgs.JoinPaths(fullPath, fileName)\n\treturn filePath\n}\n\nfunc importsPvg(f pgs.File) bool {\n\tfor _, dep := range f.Descriptor().Dependency {\n\t\tif strings.HasSuffix(dep, \"validate.proto\") {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc classNameFile(f pgs.File) string {\n\t// Explicit outer class name overrides implicit name\n\toptions := f.Descriptor().GetOptions()\n\tif options != nil && !options.GetJavaMultipleFiles() && options.JavaOuterClassname != nil {\n\t\treturn options.GetJavaOuterClassname()\n\t}\n\n\tprotoName := pgs.FilePath(f.Name().String()).BaseName()\n\n\tclassName := sanitizeClassName(protoName)\n\tclassName = appendOuterClassName(className, f)\n\n\treturn className\n}\n\nfunc classNameMessage(m pgs.Message) string {\n\tclassName := m.Name().String()\n\t// This is really silly, but when the multiple files option is true, protoc puts underscores in file names.\n\t// When multiple files is false, underscores are stripped. Short of rewriting all the name sanitization\n\t// logic for java, using \"UnderscoreUnderscoreUnderscore\" is an escape sequence seems to work with an extremely\n\t// small likelihood of name conflict.\n\tclassName = strings.ReplaceAll(className, \"_\", \"UnderscoreUnderscoreUnderscore\")\n\tclassName = sanitizeClassName(className)\n\tclassName = strings.ReplaceAll(className, \"UnderscoreUnderscoreUnderscore\", \"_\")\n\treturn className\n}\n\nfunc sanitizeClassName(className string) string {\n\tclassName = makeInvalidClassnameCharactersUnderscores(className)\n\tclassName = underscoreBetweenConsecutiveUppercase(className)\n\tclassName = strcase.ToCamel(strcase.ToSnake(className))\n\tclassName = upperCaseAfterNumber(className)\n\treturn className\n}\n\nfunc javaPackage(file pgs.File) string {\n\t// Explicit java package overrides implicit package\n\toptions := file.Descriptor().GetOptions()\n\tif options != nil && options.JavaPackage != nil {\n\t\treturn options.GetJavaPackage()\n\t}\n\treturn file.Package().ProtoName().String()\n}\n\nfunc (fns javaFuncs) qualifiedName(entity pgs.Entity) string {\n\tfile, isFile := entity.(pgs.File)\n\tif isFile {\n\t\tname := javaPackage(file)\n\t\tif file.Descriptor().GetOptions() != nil {\n\t\t\tif !file.Descriptor().GetOptions().GetJavaMultipleFiles() {\n\t\t\t\tname += (\".\" + classNameFile(file))\n\t\t\t}\n\t\t} else {\n\t\t\tname += (\".\" + classNameFile(file))\n\t\t}\n\t\treturn name\n\t}\n\n\tmessage, isMessage := entity.(pgs.Message)\n\tif isMessage && message.Parent() != nil {\n\t\t// recurse\n\t\treturn fns.qualifiedName(message.Parent()) + \".\" + entity.Name().String()\n\t}\n\n\tenum, isEnum := entity.(pgs.Enum)\n\tif isEnum && enum.Parent() != nil {\n\t\t// recurse\n\t\treturn fns.qualifiedName(enum.Parent()) + \".\" + entity.Name().String()\n\t}\n\n\treturn entity.Name().String()\n}\n\n// Replace invalid identifier characters with an underscore\nfunc makeInvalidClassnameCharactersUnderscores(name string) string {\n\tvar sb string\n\tfor _, c := range name {\n\t\tswitch {\n\t\tcase c >= '0' && c <= '9':\n\t\t\tsb += string(c)\n\t\tcase c >= 'a' && c <= 'z':\n\t\t\tsb += string(c)\n\t\tcase c >= 'A' && c <= 'Z':\n\t\t\tsb += string(c)\n\t\tdefault:\n\t\t\tsb += \"_\"\n\t\t}\n\t}\n\treturn sb\n}\n\nfunc upperCaseAfterNumber(name string) string {\n\tvar sb string\n\tvar p rune\n\n\tfor _, c := range name {\n\t\tif unicode.IsDigit(p) {\n\t\t\tsb += string(unicode.ToUpper(c))\n\t\t} else {\n\t\t\tsb += string(c)\n\t\t}\n\t\tp = c\n\t}\n\treturn sb\n}\n\nfunc underscoreBetweenConsecutiveUppercase(name string) string {\n\tvar sb string\n\tvar p rune\n\n\tfor _, c := range name {\n\t\tif unicode.IsUpper(p) && unicode.IsUpper(c) {\n\t\t\tsb += \"_\" + string(c)\n\t\t} else {\n\t\t\tsb += string(c)\n\t\t}\n\t\tp = c\n\t}\n\treturn sb\n}\n\nfunc appendOuterClassName(outerClassName string, file pgs.File) string {\n\tconflict := false\n\n\tfor _, enum := range file.AllEnums() {\n\t\tif enum.Name().String() == outerClassName {\n\t\t\tconflict = true\n\t\t}\n\t}\n\n\tfor _, message := range file.AllMessages() {\n\t\tif message.Name().String() == outerClassName {\n\t\t\tconflict = true\n\t\t}\n\t}\n\n\tfor _, service := range file.Services() {\n\t\tif service.Name().String() == outerClassName {\n\t\t\tconflict = true\n\t\t}\n\t}\n\n\tif conflict {\n\t\treturn outerClassName + \"OuterClass\"\n\t} else {\n\t\treturn outerClassName\n\t}\n}\n\nfunc (fns javaFuncs) accessor(ctx shared.RuleContext) string {\n\tif ctx.AccessorOverride != \"\" {\n\t\treturn ctx.AccessorOverride\n\t}\n\treturn fns.fieldAccessor(ctx.Field)\n}\n\nfunc (fns javaFuncs) fieldAccessor(f pgs.Field) string {\n\tfieldName := strcase.ToCamel(f.Name().String())\n\tif f.Type().IsMap() {\n\t\tfieldName += \"Map\"\n\t}\n\tif f.Type().IsRepeated() {\n\t\tfieldName += \"List\"\n\t}\n\n\tfieldName = upperCaseAfterNumber(fieldName)\n\treturn fmt.Sprintf(\"proto.get%s()\", fieldName)\n}\n\nfunc (fns javaFuncs) hasAccessor(ctx shared.RuleContext) string {\n\tif ctx.AccessorOverride != \"\" {\n\t\treturn \"true\"\n\t}\n\tfiedlName := strcase.ToCamel(ctx.Field.Name().String())\n\tfiedlName = upperCaseAfterNumber(fiedlName)\n\treturn \"proto.has\" + fiedlName + \"()\"\n}\n\nfunc (fns javaFuncs) fieldName(ctx shared.RuleContext) string {\n\treturn ctx.Field.Name().String()\n}\n\nfunc (fns javaFuncs) javaTypeFor(ctx shared.RuleContext) string {\n\tt := ctx.Field.Type()\n\n\t// Map key and value types\n\tif t.IsMap() {\n\t\tswitch ctx.AccessorOverride {\n\t\tcase \"key\":\n\t\t\treturn fns.javaTypeForProtoType(t.Key().ProtoType())\n\t\tcase \"value\":\n\t\t\treturn fns.javaTypeForProtoType(t.Element().ProtoType())\n\t\t}\n\t}\n\n\tif t.IsEmbed() {\n\t\tif embed := t.Embed(); embed.IsWellKnown() {\n\t\t\tswitch embed.WellKnownType() {\n\t\t\tcase pgs.AnyWKT:\n\t\t\t\treturn \"String\"\n\t\t\tcase pgs.DurationWKT:\n\t\t\t\treturn \"com.google.protobuf.Duration\"\n\t\t\tcase pgs.TimestampWKT:\n\t\t\t\treturn \"com.google.protobuf.Timestamp\"\n\t\t\tcase pgs.Int32ValueWKT, pgs.UInt32ValueWKT:\n\t\t\t\treturn \"Integer\"\n\t\t\tcase pgs.Int64ValueWKT, pgs.UInt64ValueWKT:\n\t\t\t\treturn \"Long\"\n\t\t\tcase pgs.DoubleValueWKT:\n\t\t\t\treturn \"Double\"\n\t\t\tcase pgs.FloatValueWKT:\n\t\t\t\treturn \"Float\"\n\t\t\t}\n\t\t}\n\t}\n\n\tif t.IsRepeated() {\n\t\tif t.ProtoType() == pgs.MessageT {\n\t\t\treturn fns.qualifiedName(t.Element().Embed())\n\t\t} else if t.ProtoType() == pgs.EnumT {\n\t\t\treturn fns.qualifiedName(t.Element().Enum())\n\t\t}\n\t}\n\n\tif t.IsEnum() {\n\t\treturn fns.qualifiedName(t.Enum())\n\t}\n\n\treturn fns.javaTypeForProtoType(t.ProtoType())\n}\n\nfunc (fns javaFuncs) javaTypeForProtoType(t pgs.ProtoType) string {\n\tswitch t {\n\tcase pgs.Int32T, pgs.UInt32T, pgs.SInt32, pgs.Fixed32T, pgs.SFixed32:\n\t\treturn \"Integer\"\n\tcase pgs.Int64T, pgs.UInt64T, pgs.SInt64, pgs.Fixed64T, pgs.SFixed64:\n\t\treturn \"Long\"\n\tcase pgs.DoubleT:\n\t\treturn \"Double\"\n\tcase pgs.FloatT:\n\t\treturn \"Float\"\n\tcase pgs.BoolT:\n\t\treturn \"Boolean\"\n\tcase pgs.StringT:\n\t\treturn \"String\"\n\tcase pgs.BytesT:\n\t\treturn \"com.google.protobuf.ByteString\"\n\tdefault:\n\t\treturn \"Object\"\n\t}\n}\n\nfunc (fns javaFuncs) javaTypeLiteralSuffixFor(ctx shared.RuleContext) string {\n\tt := ctx.Field.Type()\n\n\tif t.IsMap() {\n\t\tswitch ctx.AccessorOverride {\n\t\tcase \"key\":\n\t\t\treturn fns.javaTypeLiteralSuffixForPrototype(t.Key().ProtoType())\n\t\tcase \"value\":\n\t\t\treturn fns.javaTypeLiteralSuffixForPrototype(t.Element().ProtoType())\n\t\t}\n\t}\n\n\tif t.IsEmbed() {\n\t\tif embed := t.Embed(); embed.IsWellKnown() {\n\t\t\tswitch embed.WellKnownType() {\n\t\t\tcase pgs.Int64ValueWKT, pgs.UInt64ValueWKT:\n\t\t\t\treturn \"L\"\n\t\t\tcase pgs.FloatValueWKT:\n\t\t\t\treturn \"F\"\n\t\t\tcase pgs.DoubleValueWKT:\n\t\t\t\treturn \"D\"\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fns.javaTypeLiteralSuffixForPrototype(t.ProtoType())\n}\n\nfunc (fns javaFuncs) javaTypeLiteralSuffixForPrototype(t pgs.ProtoType) string {\n\tswitch t {\n\tcase pgs.Int64T, pgs.UInt64T, pgs.SInt64, pgs.Fixed64T, pgs.SFixed64:\n\t\treturn \"L\"\n\tcase pgs.FloatT:\n\t\treturn \"F\"\n\tcase pgs.DoubleT:\n\t\treturn \"D\"\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\nfunc (fns javaFuncs) javaStringEscape(s string) string {\n\ts = fmt.Sprintf(\"%q\", s)\n\ts = s[1 : len(s)-1]\n\ts = strings.ReplaceAll(s, `\\u00`, `\\x`)\n\ts = strings.ReplaceAll(s, `\\x`, `\\\\x`)\n\t// s = strings.ReplaceAll(s, `\\`, `\\\\`)\n\ts = strings.ReplaceAll(s, `\"`, `\\\"`)\n\treturn `\"` + s + `\"`\n}\n\nfunc (fns javaFuncs) camelCase(name pgs.Name) string {\n\treturn strcase.ToCamel(name.String())\n}\n\nfunc (fns javaFuncs) byteArrayLit(bytes []uint8) string {\n\tvar sb string\n\tsb += \"new byte[]{\"\n\tfor _, b := range bytes {\n\t\tsb += fmt.Sprintf(\"(byte)%#x,\", b)\n\t}\n\tsb += \"}\"\n\n\treturn sb\n}\n\nfunc (fns javaFuncs) durLit(dur *durationpb.Duration) string {\n\treturn fmt.Sprintf(\n\t\t\"io.envoyproxy.pgv.TimestampValidation.toDuration(%dL,%d)\",\n\t\tdur.GetSeconds(), dur.GetNanos())\n}\n\nfunc (fns javaFuncs) tsLit(ts *timestamppb.Timestamp) string {\n\treturn fmt.Sprintf(\n\t\t\"io.envoyproxy.pgv.TimestampValidation.toTimestamp(%dL,%d)\",\n\t\tts.GetSeconds(), ts.GetNanos())\n}\n\nfunc (fns javaFuncs) oneofTypeName(f pgs.Field) pgsgo.TypeName {\n\treturn pgsgo.TypeName(strings.ToUpper(f.Name().String()))\n}\n\nfunc (fns javaFuncs) isOfFileType(o interface{}) bool {\n\tswitch o.(type) {\n\tcase pgs.File:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc (fns javaFuncs) isOfMessageType(f pgs.Field) bool {\n\treturn f.Type().ProtoType() == pgs.MessageT\n}\n\nfunc (fns javaFuncs) isOfStringType(f pgs.Field) bool {\n\treturn f.Type().ProtoType() == pgs.StringT\n}\n\nfunc (fns javaFuncs) unwrap(ctx shared.RuleContext) (shared.RuleContext, error) {\n\tctx, err := ctx.Unwrap(\"wrapped\")\n\tif err != nil {\n\t\treturn ctx, err\n\t}\n\tctx.AccessorOverride = fmt.Sprintf(\"%s.get%s()\", fns.fieldAccessor(ctx.Field),\n\t\tfns.camelCase(ctx.Field.Type().Embed().Fields()[0].Name()))\n\treturn ctx, nil\n}\n\nfunc (fns javaFuncs) renderConstants(tpl *template.Template) func(ctx shared.RuleContext) (string, error) {\n\treturn func(ctx shared.RuleContext) (string, error) {\n\t\tvar b bytes.Buffer\n\t\tvar err error\n\n\t\thasConstTemplate := false\n\t\tfor _, t := range tpl.Templates() {\n\t\t\tif t.Name() == ctx.Typ+\"Const\" {\n\t\t\t\thasConstTemplate = true\n\t\t\t}\n\t\t}\n\n\t\tif hasConstTemplate {\n\t\t\terr = tpl.ExecuteTemplate(&b, ctx.Typ+\"Const\", ctx)\n\t\t}\n\n\t\treturn b.String(), err\n\t}\n}\n\nfunc (fns javaFuncs) constantName(ctx shared.RuleContext, rule string) string {\n\treturn strcase.ToScreamingSnake(ctx.Field.Name().String() + \"_\" + ctx.Index + \"_\" + rule)\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/repeated.go",
    "content": "package java\n\nconst repeatedConstTpl = `{{ renderConstants (.Elem \"\" \"\") }}`\n\nconst repeatedTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{- if $r.GetIgnoreEmpty }}\n\t\t\tif ( !{{ accessor . }}.isEmpty() ) {\n{{- end -}}\n{{- if $r.GetMinItems }}\n\t\t\tio.envoyproxy.pgv.RepeatedValidation.minItems(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ $r.GetMinItems }});\n{{- end -}}\n{{- if $r.GetMaxItems }}\n\t\t\tio.envoyproxy.pgv.RepeatedValidation.maxItems(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ $r.GetMaxItems }});\n{{- end -}}\n{{- if $r.GetUnique }}\n\t\t\tio.envoyproxy.pgv.RepeatedValidation.unique(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end }}\n\t\t\tio.envoyproxy.pgv.RepeatedValidation.forEach({{ accessor . }}, item -> {\n\t\t\t\t{{ render (.Elem \"item\" \"\") }}\n\t\t\t});\n{{- if $r.GetIgnoreEmpty }}\n\t\t\t}\n{{- end -}}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/required.go",
    "content": "package java\n\nconst requiredTpl = `{{ $f := .Field }}\n\t{{- if .Rules.GetRequired }}\n\t\tif ({{ hasAccessor . }}) {\n\t\t\tio.envoyproxy.pgv.RequiredValidation.required(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n\t\t} else {\n\t\t\tio.envoyproxy.pgv.RequiredValidation.required(\"{{ $f.FullyQualifiedName }}\", null);\n\t\t};\n\t{{- end -}}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/string.go",
    "content": "package java\n\nconst stringConstTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{- if $r.In }}\n\t\tprivate final {{ javaTypeFor . }}[] {{ constantName . \"In\" }} = new {{ javaTypeFor . }}[]{\n\t\t\t{{- range $r.In -}}\n\t\t\t\t\"{{- sprintf \"%v\" . -}}\",\n\t\t\t{{- end -}}\n\t\t};\n{{- end -}}\n{{- if $r.NotIn }}\n\t\tprivate final {{ javaTypeFor . }}[] {{ constantName . \"NotIn\" }} = new {{ javaTypeFor . }}[]{\n\t\t\t{{- range $r.NotIn -}}\n\t\t\t\t\"{{- sprintf \"%v\" . -}}\",\n\t\t\t{{- end -}}\n\t\t};\n{{- end -}}\n{{- if $r.Pattern }}\n\t\tcom.google.re2j.Pattern {{ constantName . \"Pattern\" }} = com.google.re2j.Pattern.compile({{ javaStringEscape $r.GetPattern }});\n{{- end -}}`\n\nconst stringTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{- if $r.GetIgnoreEmpty }}\n\t\t\tif ( !{{ accessor . }}.isEmpty() ) {\n{{- end -}}\n{{- if $r.Const }}\n\t\t\tio.envoyproxy.pgv.ConstantValidation.constant(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, \"{{ $r.GetConst }}\");\n{{- end -}}\n{{- if $r.In }}\n\t\t\tio.envoyproxy.pgv.CollectiveValidation.in(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"In\" }});\n{{- end -}}\n{{- if $r.NotIn }}\n\t\t\tio.envoyproxy.pgv.CollectiveValidation.notIn(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"NotIn\" }});\n{{- end -}}\n{{- if $r.Len }}\n\t\t\tio.envoyproxy.pgv.StringValidation.length(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ $r.GetLen }});\n{{- end -}}\n{{- if $r.MinLen }}\n\t\t\tio.envoyproxy.pgv.StringValidation.minLength(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ $r.GetMinLen }});\n{{- end -}}\n{{- if $r.MaxLen }}\n\t\t\tio.envoyproxy.pgv.StringValidation.maxLength(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ $r.GetMaxLen }});\n{{- end -}}\n{{- if $r.LenBytes }}\n\t\t\tio.envoyproxy.pgv.StringValidation.lenBytes(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ $r.GetLenBytes }});\n{{- end -}}\n{{- if $r.MinBytes }}\n\t\t\tio.envoyproxy.pgv.StringValidation.minBytes(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ $r.GetMinBytes }});\n{{- end -}}\n{{- if $r.MaxBytes }}\n\t\t\tio.envoyproxy.pgv.StringValidation.maxBytes(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ $r.GetMaxBytes }});\n{{- end -}}\n{{- if $r.Pattern }}\n\t\t\tio.envoyproxy.pgv.StringValidation.pattern(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Pattern\" }});\n{{- end -}}\n{{- if $r.Prefix }}\n\t\t\tio.envoyproxy.pgv.StringValidation.prefix(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, \"{{ $r.GetPrefix }}\");\n{{- end -}}\n{{- if $r.Contains }}\n\t\t\tio.envoyproxy.pgv.StringValidation.contains(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, \"{{ $r.GetContains }}\");\n{{- end -}}\n{{- if $r.NotContains }}\n\t\t\tio.envoyproxy.pgv.StringValidation.notContains(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, \"{{ $r.GetNotContains }}\");\n{{- end -}}\n{{- if $r.Suffix }}\n\t\t\tio.envoyproxy.pgv.StringValidation.suffix(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, \"{{ $r.GetSuffix }}\");\n{{- end -}}\n{{- if $r.GetEmail }}\n\t\t\tio.envoyproxy.pgv.StringValidation.email(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end -}}\n{{- if $r.GetAddress }}\n\t\t\tio.envoyproxy.pgv.StringValidation.address(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end -}}\n{{- if $r.GetHostname }}\n\t\t\tio.envoyproxy.pgv.StringValidation.hostName(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end -}}\n{{- if $r.GetIp }}\n\t\t\tio.envoyproxy.pgv.StringValidation.ip(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end -}}\n{{- if $r.GetIpv4 }}\n\t\t\tio.envoyproxy.pgv.StringValidation.ipv4(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end -}}\n{{- if $r.GetIpv6 }}\n\t\t\tio.envoyproxy.pgv.StringValidation.ipv6(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end -}}\n{{- if $r.GetUri }}\n\t\t\tio.envoyproxy.pgv.StringValidation.uri(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end -}}\n{{- if $r.GetUriRef }}\n\t\t\tio.envoyproxy.pgv.StringValidation.uriRef(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end -}}\n{{- if $r.GetUuid }}\n\t\t\tio.envoyproxy.pgv.StringValidation.uuid(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }});\n{{- end -}}\n{{- if $r.GetIgnoreEmpty }}\n\t\t\t}\n{{- end -}}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/timestamp.go",
    "content": "package java\n\nconst timestampConstTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{- if $r.Const }}\n\t\tprivate final com.google.protobuf.Timestamp {{ constantName . \"Const\" }} = {{ tsLit $r.GetConst }};\n{{- end -}}\n{{- if $r.Lt }}\n\t\tprivate final com.google.protobuf.Timestamp {{ constantName . \"Lt\" }} = {{ tsLit $r.GetLt }};\n{{- end -}}\n{{- if $r.Lte }}\n\t\tprivate final com.google.protobuf.Timestamp {{ constantName . \"Lte\" }} = {{ tsLit $r.Lte }};\n{{- end -}}\n{{- if $r.Gt }}\n\t\tprivate final com.google.protobuf.Timestamp {{ constantName . \"Gt\" }} = {{ tsLit $r.GetGt }};\n{{- end -}}\n{{- if $r.Gte }}\n\t\tprivate final com.google.protobuf.Timestamp {{ constantName . \"Gte\" }} = {{ tsLit $r.GetGte }};\n{{- end -}}\n{{- if $r.Within }}\n\t\tprivate final com.google.protobuf.Duration {{ constantName . \"Within\" }} = {{ durLit $r.GetWithin }};\n{{- end -}}`\n\nconst timestampTpl = `{{ $f := .Field }}{{ $r := .Rules -}}\n{{- template \"required\" . -}}\n\n{{- if $r.Const }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.ConstantValidation.constant(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Const\" }});\n{{- end -}}\n{{- if and (or $r.Lt $r.Lte) (or $r.Gt $r.Gte)}}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.ComparativeValidation.range(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ if $r.Lt }}{{ constantName . \"Lt\" }}{{ else }}null{{ end }}, {{ if $r.Lte }}{{ constantName . \"Lte\" }}{{ else }}null{{ end }}, {{ if $r.Gt }}{{ constantName . \"Gt\" }}{{ else }}null{{ end }}, {{ if $r.Gte }}{{ constantName . \"Gte\" }}{{ else }}null{{ end }}, com.google.protobuf.util.Timestamps.comparator());\n{{- else -}}\n{{- if $r.Lt }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.ComparativeValidation.lessThan(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Lt\" }}, com.google.protobuf.util.Timestamps.comparator());\n{{- end -}}\n{{- if $r.Lte }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.ComparativeValidation.lessThanOrEqual(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Lte\" }}, com.google.protobuf.util.Timestamps.comparator());\n{{- end -}}\n{{- if $r.Gt }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.ComparativeValidation.greaterThan(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Gt\" }}, com.google.protobuf.util.Timestamps.comparator());\n{{- end -}}\n{{- if $r.Gte }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.ComparativeValidation.greaterThanOrEqual(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Gte\" }}, com.google.protobuf.util.Timestamps.comparator());\n{{- end -}}\n{{- end -}}\n{{- if $r.LtNow }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.ComparativeValidation.lessThan(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, io.envoyproxy.pgv.TimestampValidation.currentTimestamp(), com.google.protobuf.util.Timestamps.comparator());\n{{- end -}}\n{{- if $r.GtNow }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.ComparativeValidation.greaterThan(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, io.envoyproxy.pgv.TimestampValidation.currentTimestamp(), com.google.protobuf.util.Timestamps.comparator());\n{{- end -}}\n{{- if $r.Within }}\n\t\t\tif ({{ hasAccessor . }}) io.envoyproxy.pgv.TimestampValidation.within(\"{{ $f.FullyQualifiedName }}\", {{ accessor . }}, {{ constantName . \"Within\" }}, io.envoyproxy.pgv.TimestampValidation.currentTimestamp());\n{{- end -}}\n`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/java/wrapper.go",
    "content": "package java\n\nconst wrapperConstTpl = `{{ $f := .Field }}{{ $r := .Rules }}\t\t\t\n\t\t\t{{- renderConstants (unwrap .) }}`\n\nconst wrapperTpl = `{{ $f := .Field }}{{ $r := .Rules }}\t\t\t\n\t\t\tif ({{ hasAccessor . }}) {\n\t\t\t\t{{- render (unwrap .) }}\n\t\t\t}\n\t\t\t{{ if .MessageRules.GetRequired }} else {\n\t\t\t\tthrow new io.envoyproxy.pgv.ValidationException(\"{{ $f }}\", \"null\", \"is required\");\n\t\t\t} {{ end }}`\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/pkg.go",
    "content": "package templates\n\nimport (\n\t\"text/template\"\n\n\tpgs \"github.com/lyft/protoc-gen-star/v2\"\n\tpgsgo \"github.com/lyft/protoc-gen-star/v2/lang/go\"\n\n\t\"github.com/envoyproxy/protoc-gen-validate/templates/cc\"\n\t\"github.com/envoyproxy/protoc-gen-validate/templates/ccnop\"\n\t\"github.com/envoyproxy/protoc-gen-validate/templates/go\"\n\t\"github.com/envoyproxy/protoc-gen-validate/templates/java\"\n\t\"github.com/envoyproxy/protoc-gen-validate/templates/shared\"\n)\n\ntype (\n\tRegisterFn func(tpl *template.Template, params pgs.Parameters)\n\tFilePathFn func(f pgs.File, ctx pgsgo.Context, tpl *template.Template) *pgs.FilePath\n)\n\nfunc makeTemplate(ext string, fn RegisterFn, params pgs.Parameters) *template.Template {\n\ttpl := template.New(ext)\n\tshared.RegisterFunctions(tpl, params)\n\tfn(tpl, params)\n\treturn tpl\n}\n\nfunc Template(params pgs.Parameters) map[string][]*template.Template {\n\treturn map[string][]*template.Template{\n\t\t\"cc\":    {makeTemplate(\"h\", cc.RegisterHeader, params), makeTemplate(\"cc\", cc.RegisterModule, params)},\n\t\t\"ccnop\": {makeTemplate(\"h\", ccnop.RegisterHeader, params), makeTemplate(\"cc\", ccnop.RegisterModule, params)},\n\t\t\"go\":    {makeTemplate(\"go\", golang.Register, params)},\n\t\t\"java\":  {makeTemplate(\"java\", java.Register, params)},\n\t}\n}\n\nfunc FilePathFor(tpl *template.Template) FilePathFn {\n\tswitch tpl.Name() {\n\tcase \"h\":\n\t\treturn cc.CcFilePath\n\tcase \"ccnop\":\n\t\treturn cc.CcFilePath\n\tcase \"cc\":\n\t\treturn cc.CcFilePath\n\tcase \"java\":\n\t\treturn java.JavaFilePath\n\tdefault:\n\t\treturn func(f pgs.File, ctx pgsgo.Context, tpl *template.Template) *pgs.FilePath {\n\t\t\tout := ctx.OutputPath(f)\n\t\t\tout = out.SetExt(\".validate.\" + tpl.Name())\n\t\t\treturn &out\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/shared/BUILD.bazel",
    "content": "load(\"@io_bazel_rules_go//go:def.bzl\", \"go_library\")\n\ngo_library(\n    name = \"shared\",\n    srcs = [\n        \"context.go\",\n        \"disabled.go\",\n        \"enums.go\",\n        \"functions.go\",\n        \"reflection.go\",\n        \"well_known.go\",\n    ],\n    importpath = \"github.com/envoyproxy/protoc-gen-validate/templates/shared\",\n    visibility = [\"//visibility:public\"],\n    deps = [\n        \"//validate:validate_go\",\n        \"@com_github_lyft_protoc_gen_star_v2//:protoc-gen-star\",\n        \"@org_golang_google_protobuf//proto\",\n    ],\n)\n\nalias(\n    name = \"go_default_library\",\n    actual = \":shared\",\n    deprecation = \"Use :shared instead of :go_default_library.  Details about the new naming convention: https://github.com/bazelbuild/bazel-gazelle/pull/863\",\n    visibility = [\"//visibility:public\"],\n)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/shared/context.go",
    "content": "package shared\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"text/template\"\n\n\tpgs \"github.com/lyft/protoc-gen-star/v2\"\n\t\"google.golang.org/protobuf/proto\"\n\n\t\"github.com/envoyproxy/protoc-gen-validate/validate\"\n)\n\ntype RuleContext struct {\n\tField        pgs.Field\n\tRules        proto.Message\n\tMessageRules *validate.MessageRules\n\n\tTyp        string\n\tWrapperTyp string\n\n\tOnKey            bool\n\tIndex            string\n\tAccessorOverride string\n}\n\nfunc rulesContext(f pgs.Field) (out RuleContext, err error) {\n\tout.Field = f\n\n\tvar rules validate.FieldRules\n\tif _, err = f.Extension(validate.E_Rules, &rules); err != nil {\n\t\treturn\n\t}\n\n\tvar wrapped bool\n\tif out.Typ, out.Rules, out.MessageRules, wrapped = resolveRules(f.Type(), &rules); wrapped {\n\t\tout.WrapperTyp = out.Typ\n\t\tout.Typ = \"wrapper\"\n\t}\n\n\tif out.Typ == \"error\" {\n\t\terr = fmt.Errorf(\"unknown rule type (%T)\", rules.Type)\n\t}\n\n\treturn\n}\n\nfunc (ctx RuleContext) Key(name, idx string) (out RuleContext, err error) {\n\trules, ok := ctx.Rules.(*validate.MapRules)\n\tif !ok {\n\t\terr = fmt.Errorf(\"cannot get Key RuleContext from %T\", ctx.Field)\n\t\treturn\n\t}\n\n\tout.Field = ctx.Field\n\tout.AccessorOverride = name\n\tout.Index = idx\n\n\tout.Typ, out.Rules, out.MessageRules, _ = resolveRules(ctx.Field.Type().Key(), rules.GetKeys())\n\n\tif out.Typ == \"error\" {\n\t\terr = fmt.Errorf(\"unknown rule type (%T)\", rules)\n\t}\n\n\treturn\n}\n\nfunc (ctx RuleContext) Elem(name, idx string) (out RuleContext, err error) {\n\tout.Field = ctx.Field\n\tout.AccessorOverride = name\n\tout.Index = idx\n\n\tvar rules *validate.FieldRules\n\tswitch r := ctx.Rules.(type) {\n\tcase *validate.MapRules:\n\t\trules = r.GetValues()\n\tcase *validate.RepeatedRules:\n\t\trules = r.GetItems()\n\tdefault:\n\t\terr = fmt.Errorf(\"cannot get Elem RuleContext from %T\", ctx.Field)\n\t\treturn\n\t}\n\n\tvar wrapped bool\n\tif out.Typ, out.Rules, out.MessageRules, wrapped = resolveRules(ctx.Field.Type().Element(), rules); wrapped {\n\t\tout.WrapperTyp = out.Typ\n\t\tout.Typ = \"wrapper\"\n\t}\n\n\tif out.Typ == \"error\" {\n\t\terr = fmt.Errorf(\"unknown rule type (%T)\", rules)\n\t}\n\n\treturn\n}\n\nfunc (ctx RuleContext) Unwrap(name string) (out RuleContext, err error) {\n\tif ctx.Typ != \"wrapper\" {\n\t\terr = fmt.Errorf(\"cannot unwrap non-wrapper type %q\", ctx.Typ)\n\t\treturn\n\t}\n\n\treturn RuleContext{\n\t\tField:            ctx.Field,\n\t\tRules:            ctx.Rules,\n\t\tMessageRules:     ctx.MessageRules,\n\t\tTyp:              ctx.WrapperTyp,\n\t\tAccessorOverride: name,\n\t}, nil\n}\n\nfunc Render(tpl *template.Template) func(ctx RuleContext) (string, error) {\n\treturn func(ctx RuleContext) (string, error) {\n\t\tvar b bytes.Buffer\n\t\terr := tpl.ExecuteTemplate(&b, ctx.Typ, ctx)\n\t\treturn b.String(), err\n\t}\n}\n\nfunc resolveRules(typ interface{ IsEmbed() bool }, rules *validate.FieldRules) (ruleType string, rule proto.Message, messageRule *validate.MessageRules, wrapped bool) {\n\tswitch r := rules.GetType().(type) {\n\tcase *validate.FieldRules_Float:\n\t\truleType, rule, wrapped = \"float\", r.Float, typ.IsEmbed()\n\tcase *validate.FieldRules_Double:\n\t\truleType, rule, wrapped = \"double\", r.Double, typ.IsEmbed()\n\tcase *validate.FieldRules_Int32:\n\t\truleType, rule, wrapped = \"int32\", r.Int32, typ.IsEmbed()\n\tcase *validate.FieldRules_Int64:\n\t\truleType, rule, wrapped = \"int64\", r.Int64, typ.IsEmbed()\n\tcase *validate.FieldRules_Uint32:\n\t\truleType, rule, wrapped = \"uint32\", r.Uint32, typ.IsEmbed()\n\tcase *validate.FieldRules_Uint64:\n\t\truleType, rule, wrapped = \"uint64\", r.Uint64, typ.IsEmbed()\n\tcase *validate.FieldRules_Sint32:\n\t\truleType, rule, wrapped = \"sint32\", r.Sint32, false\n\tcase *validate.FieldRules_Sint64:\n\t\truleType, rule, wrapped = \"sint64\", r.Sint64, false\n\tcase *validate.FieldRules_Fixed32:\n\t\truleType, rule, wrapped = \"fixed32\", r.Fixed32, false\n\tcase *validate.FieldRules_Fixed64:\n\t\truleType, rule, wrapped = \"fixed64\", r.Fixed64, false\n\tcase *validate.FieldRules_Sfixed32:\n\t\truleType, rule, wrapped = \"sfixed32\", r.Sfixed32, false\n\tcase *validate.FieldRules_Sfixed64:\n\t\truleType, rule, wrapped = \"sfixed64\", r.Sfixed64, false\n\tcase *validate.FieldRules_Bool:\n\t\truleType, rule, wrapped = \"bool\", r.Bool, typ.IsEmbed()\n\tcase *validate.FieldRules_String_:\n\t\truleType, rule, wrapped = \"string\", r.String_, typ.IsEmbed()\n\tcase *validate.FieldRules_Bytes:\n\t\truleType, rule, wrapped = \"bytes\", r.Bytes, typ.IsEmbed()\n\tcase *validate.FieldRules_Enum:\n\t\truleType, rule, wrapped = \"enum\", r.Enum, false\n\tcase *validate.FieldRules_Repeated:\n\t\truleType, rule, wrapped = \"repeated\", r.Repeated, false\n\tcase *validate.FieldRules_Map:\n\t\truleType, rule, wrapped = \"map\", r.Map, false\n\tcase *validate.FieldRules_Any:\n\t\truleType, rule, wrapped = \"any\", r.Any, false\n\tcase *validate.FieldRules_Duration:\n\t\truleType, rule, wrapped = \"duration\", r.Duration, false\n\tcase *validate.FieldRules_Timestamp:\n\t\truleType, rule, wrapped = \"timestamp\", r.Timestamp, false\n\tcase nil:\n\t\tif ft, ok := typ.(pgs.FieldType); ok && ft.IsRepeated() {\n\t\t\treturn \"repeated\", &validate.RepeatedRules{}, rules.Message, false\n\t\t} else if ok && ft.IsMap() && ft.Element().IsEmbed() {\n\t\t\treturn \"map\", &validate.MapRules{}, rules.Message, false\n\t\t} else if typ.IsEmbed() {\n\t\t\treturn \"message\", rules.GetMessage(), rules.GetMessage(), false\n\t\t}\n\t\treturn \"none\", nil, nil, false\n\tdefault:\n\t\truleType, rule, wrapped = \"error\", nil, false\n\t}\n\n\treturn ruleType, rule, rules.Message, wrapped\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/shared/disabled.go",
    "content": "package shared\n\nimport (\n\tpgs \"github.com/lyft/protoc-gen-star/v2\"\n\n\t\"github.com/envoyproxy/protoc-gen-validate/validate\"\n)\n\n// Disabled returns true if validations are disabled for msg\nfunc Disabled(msg pgs.Message) (disabled bool, err error) {\n\t_, err = msg.Extension(validate.E_Disabled, &disabled)\n\treturn\n}\n\n// Ignore returns true if validations aren't to be generated for msg\nfunc Ignored(msg pgs.Message) (ignored bool, err error) {\n\t_, err = msg.Extension(validate.E_Ignored, &ignored)\n\treturn\n}\n\n// RequiredOneOf returns true if the oneof field requires a field to be set\nfunc RequiredOneOf(oo pgs.OneOf) (required bool, err error) {\n\t_, err = oo.Extension(validate.E_Required, &required)\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/shared/enums.go",
    "content": "package shared\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\tpgs \"github.com/lyft/protoc-gen-star/v2\"\n)\n\nfunc isEnum(f pgs.Field) bool {\n\treturn f.Type().IsEnum()\n}\n\nfunc enumNamesMap(values []pgs.EnumValue) (m map[int32]string) {\n\tm = make(map[int32]string)\n\tfor _, v := range values {\n\t\tif _, exists := m[v.Value()]; !exists {\n\t\t\tm[v.Value()] = v.Name().String()\n\t\t}\n\t}\n\treturn m\n}\n\n// enumList - if type is ENUM, enum values are returned\nfunc enumList(f pgs.Field, list []int32) string {\n\tstringList := make([]string, 0, len(list))\n\tif enum := f.Type().Enum(); enum != nil {\n\t\tnames := enumNamesMap(enum.Values())\n\t\tfor _, n := range list {\n\t\t\tstringList = append(stringList, names[n])\n\t\t}\n\t} else {\n\t\tfor _, n := range list {\n\t\t\tstringList = append(stringList, fmt.Sprint(n))\n\t\t}\n\t}\n\treturn \"[\" + strings.Join(stringList, \" \") + \"]\"\n}\n\n// enumVal - if type is ENUM, enum value is returned\nfunc enumVal(f pgs.Field, val int32) string {\n\tif enum := f.Type().Enum(); enum != nil {\n\t\treturn enumNamesMap(enum.Values())[val]\n\t}\n\treturn fmt.Sprint(val)\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/shared/functions.go",
    "content": "package shared\n\nimport (\n\t\"text/template\"\n\n\tpgs \"github.com/lyft/protoc-gen-star/v2\"\n)\n\nfunc RegisterFunctions(tpl *template.Template, params pgs.Parameters) {\n\ttpl.Funcs(map[string]interface{}{\n\t\t\"disabled\":  Disabled,\n\t\t\"ignored\":   Ignored,\n\t\t\"required\":  RequiredOneOf,\n\t\t\"context\":   rulesContext,\n\t\t\"render\":    Render(tpl),\n\t\t\"has\":       Has,\n\t\t\"needs\":     Needs,\n\t\t\"fileneeds\": FileNeeds,\n\t\t\"isEnum\":    isEnum,\n\t\t\"enumList\":  enumList,\n\t\t\"enumVal\":   enumVal,\n\t})\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/shared/reflection.go",
    "content": "package shared\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/proto\"\n)\n\nfunc extractVal(r proto.Message) reflect.Value {\n\tval := reflect.ValueOf(r)\n\n\tif val.Kind() == reflect.Interface {\n\t\tval = val.Elem()\n\t}\n\n\tif val.Kind() == reflect.Ptr {\n\t\tval = val.Elem()\n\t}\n\n\treturn val\n}\n\n// Has returns true if the provided Message has the a field fld.\nfunc Has(msg proto.Message, fld string) bool {\n\tval := extractVal(msg)\n\treturn val.IsValid() &&\n\t\tval.FieldByName(fld).IsValid()\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/templates/shared/well_known.go",
    "content": "package shared\n\nimport (\n\tpgs \"github.com/lyft/protoc-gen-star/v2\"\n\n\t\"github.com/envoyproxy/protoc-gen-validate/validate\"\n)\n\ntype WellKnown string\n\nconst (\n\tEmail    WellKnown = \"email\"\n\tHostname WellKnown = \"hostname\"\n\tUUID     WellKnown = \"uuid\"\n)\n\nfunc FileNeeds(f pgs.File, wk WellKnown) bool {\n\tfor _, msg := range f.AllMessages() {\n\t\tneeded := Needs(msg, wk)\n\t\tif needed {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// Needs returns true if a well-known string validator is needed for this\n// message.\nfunc Needs(m pgs.Message, wk WellKnown) bool {\n\tfor _, f := range m.Fields() {\n\t\tvar rules validate.FieldRules\n\t\tif _, err := f.Extension(validate.E_Rules, &rules); err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch {\n\t\tcase f.Type().IsRepeated() && f.Type().Element().ProtoType() == pgs.StringT:\n\t\t\tif strRulesNeeds(rules.GetRepeated().GetItems().GetString_(), wk) {\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase f.Type().IsMap():\n\t\t\tif f.Type().Key().ProtoType() == pgs.StringT &&\n\t\t\t\tstrRulesNeeds(rules.GetMap().GetKeys().GetString_(), wk) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif f.Type().Element().ProtoType() == pgs.StringT &&\n\t\t\t\tstrRulesNeeds(rules.GetMap().GetValues().GetString_(), wk) {\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase f.Type().ProtoType() == pgs.StringT:\n\t\t\tif strRulesNeeds(rules.GetString_(), wk) {\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase f.Type().ProtoType() == pgs.MessageT && f.Type().IsEmbed() && f.Type().Embed().WellKnownType() == pgs.StringValueWKT:\n\t\t\tif strRulesNeeds(rules.GetString_(), wk) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc strRulesNeeds(rules *validate.StringRules, wk WellKnown) bool {\n\tswitch wk {\n\tcase Email:\n\t\tif rules.GetEmail() {\n\t\t\treturn true\n\t\t}\n\tcase Hostname:\n\t\tif rules.GetEmail() || rules.GetHostname() || rules.GetAddress() {\n\t\t\treturn true\n\t\t}\n\tcase UUID:\n\t\tif rules.GetUuid() {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/tools.go",
    "content": "//go:build tools\n// +build tools\n\npackage main\n\nimport (\n\t_ \"golang.org/x/net/context\"\n\t_ \"google.golang.org/protobuf/cmd/protoc-gen-go\"\n)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/validate/BUILD",
    "content": "load(\"@com_google_protobuf//bazel:cc_proto_library.bzl\", \"cc_proto_library\")\nload(\"@com_google_protobuf//bazel:java_proto_library.bzl\", \"java_proto_library\")\nload(\"@com_google_protobuf//bazel:proto_library.bzl\", \"proto_library\")\nload(\"@com_google_protobuf//bazel:py_proto_library.bzl\", \"py_proto_library\")\nload(\"@io_bazel_rules_go//go:def.bzl\", \"go_library\")\nload(\"@io_bazel_rules_go//proto:def.bzl\", \"go_proto_library\")\nload(\"@rules_cc//cc:defs.bzl\", \"cc_library\")\n\npackage(\n    default_visibility =\n        [\"//visibility:public\"],\n)\n\nproto_library(\n    name = \"validate_proto\",\n    srcs = [\"validate.proto\"],\n    deps = [\n        \"@com_google_protobuf//:descriptor_proto\",\n        \"@com_google_protobuf//:duration_proto\",\n        \"@com_google_protobuf//:timestamp_proto\",\n    ],\n)\n\ncc_proto_library(\n    name = \"validate_cc\",\n    deps = [\":validate_proto\"],\n)\n\npy_proto_library(\n    name = \"validate_py\",\n    deps = [\":validate_proto\"],\n)\n\ngo_proto_library(\n    name = \"validate_go_proto\",\n    importpath = \"github.com/envoyproxy/protoc-gen-validate/validate\",\n    proto = \":validate_proto\",\n)\n\ncc_library(\n    name = \"cc_validate\",\n    hdrs = [\"validate.h\"],\n)\n\ngo_library(\n    name = \"validate_go\",\n    embed = [\":validate_go_proto\"],\n    importpath = \"github.com/envoyproxy/protoc-gen-validate/validate\",\n)\n\njava_proto_library(\n    name = \"validate_java\",\n    deps = [\":validate_proto\"],\n)\n\nfilegroup(\n    name = \"validate_src\",\n    srcs = [\"validate.proto\"],\n)\n\nalias(\n    name = \"go_default_library\",\n    actual = \":validate\",\n    deprecation = \"Use :validate instead of :go_default_library.  Details about the new naming convention: https://github.com/bazelbuild/bazel-gazelle/pull/863\",\n    visibility = [\"//visibility:public\"],\n)\n\n# this alias allows build files generated with Gazelle in other repositories\n# to find validate as an external dependency\nalias(\n    name = \"validate\",\n    actual = \":validate_go\",\n    visibility = [\"//visibility:public\"],\n)\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/validate/validate.h",
    "content": "#ifndef _VALIDATE_H\n#define _VALIDATE_H\n\n#include <functional>\n#include <regex>\n#include <stdexcept>\n#include <string>\n#include <typeindex>\n#include <typeinfo>\n#include <unordered_map>\n\n#if !defined(_WIN32)\n#include <arpa/inet.h>\n#else\n#include <winsock2.h>\n#include <ws2tcpip.h>\n\n// <windows.h> uses macros to #define a ton of symbols,\n// many of which interfere with our code here and down\n// the line in various extensions.\n#undef DELETE\n#undef ERROR\n#undef GetMessage\n#undef interface\n#undef TRUE\n#undef min\n\n#endif\n\n#include \"google/protobuf/message.h\"\n\nnamespace pgv {\nusing std::string;\n\nclass UnimplementedException : public std::runtime_error {\npublic:\n  UnimplementedException() : std::runtime_error(\"not yet implemented\") {}\n  UnimplementedException(const std::string& message) : std::runtime_error(message) {}\n  // Thrown by C++ validation code that is not yet implemented.\n};\n\nusing ValidationMsg = std::string;\n\nclass BaseValidator {\npublic:\n  /**\n   * Validate/check a generic message object with a registered validator for the concrete message\n   * type.\n   * @param m supplies the message to check.\n   * @param err supplies the place to return error information.\n   * @return true if the validation passes OR there is no registered validator for the concrete\n   *         message type. false is returned if validation explicitly fails.\n   */\n  static bool AbstractCheckMessage(const google::protobuf::Message& m, ValidationMsg* err) {\n    // Polymorphic lookup is used to see if there is a matching concrete validator. If so, call it.\n    // Otherwise return success.\n    auto it = abstractValidators().find(std::type_index(typeid(m)));\n    if (it == abstractValidators().end()) {\n      return true;\n    }\n    return it->second(m, err);\n  }\n\nprotected:\n  // Used to implement AbstractCheckMessage() above. Every message that is linked into the binary\n  // will register itself by type_index, allowing for polymorphic lookup later.\n  static std::unordered_map<std::type_index,\n                            std::function<bool(const google::protobuf::Message&, ValidationMsg*)>>&\n  abstractValidators() {\n    static auto* validator_map = new std::unordered_map<\n        std::type_index, std::function<bool(const google::protobuf::Message&, ValidationMsg*)>>();\n    return *validator_map;\n  }\n};\n\ntemplate <typename T> class Validator : public BaseValidator {\npublic:\n  Validator(std::function<bool(const T&, ValidationMsg*)> check) : check_(check) {\n    abstractValidators()[std::type_index(typeid(T))] = [this](const google::protobuf::Message& m,\n                                                              ValidationMsg* err) -> bool {\n      return check_(dynamic_cast<const T&>(m), err);\n    };\n  }\n\nprivate:\n  std::function<bool(const T&, ValidationMsg*)> check_;\n};\n\nstatic inline std::string String(const ValidationMsg& msg) { return std::string(msg); }\n\nstatic inline bool IsPrefix(const string& maybe_prefix, const string& search_in) {\n  return search_in.compare(0, maybe_prefix.size(), maybe_prefix) == 0;\n}\n\nstatic inline bool IsSuffix(const string& maybe_suffix, const string& search_in) {\n  return maybe_suffix.size() <= search_in.size() &&\n         search_in.compare(search_in.size() - maybe_suffix.size(), maybe_suffix.size(),\n                           maybe_suffix) == 0;\n}\n\nstatic inline bool Contains(const string& search_in, const string& to_find) {\n  return search_in.find(to_find) != string::npos;\n}\n\nstatic inline bool NotContains(const string& search_in, const string& to_find) {\n  return !Contains(search_in, to_find);\n}\n\nstatic inline bool IsIpv4(const string& to_validate) {\n  struct sockaddr_in sa;\n  return !(inet_pton(AF_INET, to_validate.c_str(), &sa.sin_addr) < 1);\n}\n\nstatic inline bool IsIpv6(const string& to_validate) {\n  struct sockaddr_in6 sa_six;\n  return !(inet_pton(AF_INET6, to_validate.c_str(), &sa_six.sin6_addr) < 1);\n}\n\nstatic inline bool IsIp(const string& to_validate) {\n  return IsIpv4(to_validate) || IsIpv6(to_validate);\n}\n\nstatic inline bool IsHostname(const string& to_validate) {\n  if (to_validate.length() > 253) {\n    return false;\n  }\n\n  const std::regex dot_regex{\"\\\\.\"};\n  const auto iter_end = std::sregex_token_iterator();\n  auto iter = std::sregex_token_iterator(to_validate.begin(), to_validate.end(), dot_regex, -1);\n  for (; iter != iter_end; ++iter) {\n    const std::string& part = *iter;\n    if (part.empty() || part.length() > 63) {\n      return false;\n    }\n    if (part.at(0) == '-') {\n      return false;\n    }\n    if (part.at(part.length() - 1) == '-') {\n      return false;\n    }\n    for (const auto& character : part) {\n      if ((character < 'A' || character > 'Z') && (character < 'a' || character > 'z') &&\n          (character < '0' || character > '9') && character != '-') {\n        return false;\n      }\n    }\n  }\n\n  return true;\n}\n\nnamespace {\n\ninline int OneCharLen(const char* src) {\n  return \"\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\2\\2\\3\\4\"[(*src & 0xFF) >> 4];\n}\n\ninline int UTF8FirstLetterNumBytes(const char *utf8_str, int str_len) {\n  if (str_len == 0)\n    return 0;\n  return OneCharLen(utf8_str);\n}\n\ninline size_t Utf8Len(const string& narrow_string) {\n  const char* str_char = narrow_string.c_str();\n  ptrdiff_t byte_len = narrow_string.length();\n  size_t unicode_len = 0;\n  int char_len = 1;\n  while (byte_len > 0 && char_len > 0) {\n    char_len = UTF8FirstLetterNumBytes(str_char, byte_len);\n    str_char += char_len;\n    byte_len -= char_len;\n    ++unicode_len;\n  }\n  return unicode_len;\n}\n\n} // namespace\n\n} // namespace pgv\n\n#endif // _VALIDATE_H\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/validate/validate.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.30.0\n// \tprotoc        v3.21.12\n// source: validate/validate.proto\n\npackage validate\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// WellKnownRegex contain some well-known patterns.\ntype KnownRegex int32\n\nconst (\n\tKnownRegex_UNKNOWN KnownRegex = 0\n\t// HTTP header name as defined by RFC 7230.\n\tKnownRegex_HTTP_HEADER_NAME KnownRegex = 1\n\t// HTTP header value as defined by RFC 7230.\n\tKnownRegex_HTTP_HEADER_VALUE KnownRegex = 2\n)\n\n// Enum value maps for KnownRegex.\nvar (\n\tKnownRegex_name = map[int32]string{\n\t\t0: \"UNKNOWN\",\n\t\t1: \"HTTP_HEADER_NAME\",\n\t\t2: \"HTTP_HEADER_VALUE\",\n\t}\n\tKnownRegex_value = map[string]int32{\n\t\t\"UNKNOWN\":           0,\n\t\t\"HTTP_HEADER_NAME\":  1,\n\t\t\"HTTP_HEADER_VALUE\": 2,\n\t}\n)\n\nfunc (x KnownRegex) Enum() *KnownRegex {\n\tp := new(KnownRegex)\n\t*p = x\n\treturn p\n}\n\nfunc (x KnownRegex) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (KnownRegex) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_validate_validate_proto_enumTypes[0].Descriptor()\n}\n\nfunc (KnownRegex) Type() protoreflect.EnumType {\n\treturn &file_validate_validate_proto_enumTypes[0]\n}\n\nfunc (x KnownRegex) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *KnownRegex) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = KnownRegex(num)\n\treturn nil\n}\n\n// Deprecated: Use KnownRegex.Descriptor instead.\nfunc (KnownRegex) EnumDescriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{0}\n}\n\n// FieldRules encapsulates the rules for each type of field. Depending on the\n// field, the correct set should be used to ensure proper validations.\ntype FieldRules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tMessage *MessageRules `protobuf:\"bytes,17,opt,name=message\" json:\"message,omitempty\"`\n\t// Types that are assignable to Type:\n\t//\n\t//\t*FieldRules_Float\n\t//\t*FieldRules_Double\n\t//\t*FieldRules_Int32\n\t//\t*FieldRules_Int64\n\t//\t*FieldRules_Uint32\n\t//\t*FieldRules_Uint64\n\t//\t*FieldRules_Sint32\n\t//\t*FieldRules_Sint64\n\t//\t*FieldRules_Fixed32\n\t//\t*FieldRules_Fixed64\n\t//\t*FieldRules_Sfixed32\n\t//\t*FieldRules_Sfixed64\n\t//\t*FieldRules_Bool\n\t//\t*FieldRules_String_\n\t//\t*FieldRules_Bytes\n\t//\t*FieldRules_Enum\n\t//\t*FieldRules_Repeated\n\t//\t*FieldRules_Map\n\t//\t*FieldRules_Any\n\t//\t*FieldRules_Duration\n\t//\t*FieldRules_Timestamp\n\tType isFieldRules_Type `protobuf_oneof:\"type\"`\n}\n\nfunc (x *FieldRules) Reset() {\n\t*x = FieldRules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FieldRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldRules) ProtoMessage() {}\n\nfunc (x *FieldRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldRules.ProtoReflect.Descriptor instead.\nfunc (*FieldRules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *FieldRules) GetMessage() *MessageRules {\n\tif x != nil {\n\t\treturn x.Message\n\t}\n\treturn nil\n}\n\nfunc (m *FieldRules) GetType() isFieldRules_Type {\n\tif m != nil {\n\t\treturn m.Type\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetFloat() *FloatRules {\n\tif x, ok := x.GetType().(*FieldRules_Float); ok {\n\t\treturn x.Float\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetDouble() *DoubleRules {\n\tif x, ok := x.GetType().(*FieldRules_Double); ok {\n\t\treturn x.Double\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetInt32() *Int32Rules {\n\tif x, ok := x.GetType().(*FieldRules_Int32); ok {\n\t\treturn x.Int32\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetInt64() *Int64Rules {\n\tif x, ok := x.GetType().(*FieldRules_Int64); ok {\n\t\treturn x.Int64\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetUint32() *UInt32Rules {\n\tif x, ok := x.GetType().(*FieldRules_Uint32); ok {\n\t\treturn x.Uint32\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetUint64() *UInt64Rules {\n\tif x, ok := x.GetType().(*FieldRules_Uint64); ok {\n\t\treturn x.Uint64\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetSint32() *SInt32Rules {\n\tif x, ok := x.GetType().(*FieldRules_Sint32); ok {\n\t\treturn x.Sint32\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetSint64() *SInt64Rules {\n\tif x, ok := x.GetType().(*FieldRules_Sint64); ok {\n\t\treturn x.Sint64\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetFixed32() *Fixed32Rules {\n\tif x, ok := x.GetType().(*FieldRules_Fixed32); ok {\n\t\treturn x.Fixed32\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetFixed64() *Fixed64Rules {\n\tif x, ok := x.GetType().(*FieldRules_Fixed64); ok {\n\t\treturn x.Fixed64\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetSfixed32() *SFixed32Rules {\n\tif x, ok := x.GetType().(*FieldRules_Sfixed32); ok {\n\t\treturn x.Sfixed32\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetSfixed64() *SFixed64Rules {\n\tif x, ok := x.GetType().(*FieldRules_Sfixed64); ok {\n\t\treturn x.Sfixed64\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetBool() *BoolRules {\n\tif x, ok := x.GetType().(*FieldRules_Bool); ok {\n\t\treturn x.Bool\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetString_() *StringRules {\n\tif x, ok := x.GetType().(*FieldRules_String_); ok {\n\t\treturn x.String_\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetBytes() *BytesRules {\n\tif x, ok := x.GetType().(*FieldRules_Bytes); ok {\n\t\treturn x.Bytes\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetEnum() *EnumRules {\n\tif x, ok := x.GetType().(*FieldRules_Enum); ok {\n\t\treturn x.Enum\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetRepeated() *RepeatedRules {\n\tif x, ok := x.GetType().(*FieldRules_Repeated); ok {\n\t\treturn x.Repeated\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetMap() *MapRules {\n\tif x, ok := x.GetType().(*FieldRules_Map); ok {\n\t\treturn x.Map\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetAny() *AnyRules {\n\tif x, ok := x.GetType().(*FieldRules_Any); ok {\n\t\treturn x.Any\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetDuration() *DurationRules {\n\tif x, ok := x.GetType().(*FieldRules_Duration); ok {\n\t\treturn x.Duration\n\t}\n\treturn nil\n}\n\nfunc (x *FieldRules) GetTimestamp() *TimestampRules {\n\tif x, ok := x.GetType().(*FieldRules_Timestamp); ok {\n\t\treturn x.Timestamp\n\t}\n\treturn nil\n}\n\ntype isFieldRules_Type interface {\n\tisFieldRules_Type()\n}\n\ntype FieldRules_Float struct {\n\t// Scalar Field Types\n\tFloat *FloatRules `protobuf:\"bytes,1,opt,name=float,oneof\"`\n}\n\ntype FieldRules_Double struct {\n\tDouble *DoubleRules `protobuf:\"bytes,2,opt,name=double,oneof\"`\n}\n\ntype FieldRules_Int32 struct {\n\tInt32 *Int32Rules `protobuf:\"bytes,3,opt,name=int32,oneof\"`\n}\n\ntype FieldRules_Int64 struct {\n\tInt64 *Int64Rules `protobuf:\"bytes,4,opt,name=int64,oneof\"`\n}\n\ntype FieldRules_Uint32 struct {\n\tUint32 *UInt32Rules `protobuf:\"bytes,5,opt,name=uint32,oneof\"`\n}\n\ntype FieldRules_Uint64 struct {\n\tUint64 *UInt64Rules `protobuf:\"bytes,6,opt,name=uint64,oneof\"`\n}\n\ntype FieldRules_Sint32 struct {\n\tSint32 *SInt32Rules `protobuf:\"bytes,7,opt,name=sint32,oneof\"`\n}\n\ntype FieldRules_Sint64 struct {\n\tSint64 *SInt64Rules `protobuf:\"bytes,8,opt,name=sint64,oneof\"`\n}\n\ntype FieldRules_Fixed32 struct {\n\tFixed32 *Fixed32Rules `protobuf:\"bytes,9,opt,name=fixed32,oneof\"`\n}\n\ntype FieldRules_Fixed64 struct {\n\tFixed64 *Fixed64Rules `protobuf:\"bytes,10,opt,name=fixed64,oneof\"`\n}\n\ntype FieldRules_Sfixed32 struct {\n\tSfixed32 *SFixed32Rules `protobuf:\"bytes,11,opt,name=sfixed32,oneof\"`\n}\n\ntype FieldRules_Sfixed64 struct {\n\tSfixed64 *SFixed64Rules `protobuf:\"bytes,12,opt,name=sfixed64,oneof\"`\n}\n\ntype FieldRules_Bool struct {\n\tBool *BoolRules `protobuf:\"bytes,13,opt,name=bool,oneof\"`\n}\n\ntype FieldRules_String_ struct {\n\tString_ *StringRules `protobuf:\"bytes,14,opt,name=string,oneof\"`\n}\n\ntype FieldRules_Bytes struct {\n\tBytes *BytesRules `protobuf:\"bytes,15,opt,name=bytes,oneof\"`\n}\n\ntype FieldRules_Enum struct {\n\t// Complex Field Types\n\tEnum *EnumRules `protobuf:\"bytes,16,opt,name=enum,oneof\"`\n}\n\ntype FieldRules_Repeated struct {\n\tRepeated *RepeatedRules `protobuf:\"bytes,18,opt,name=repeated,oneof\"`\n}\n\ntype FieldRules_Map struct {\n\tMap *MapRules `protobuf:\"bytes,19,opt,name=map,oneof\"`\n}\n\ntype FieldRules_Any struct {\n\t// Well-Known Field Types\n\tAny *AnyRules `protobuf:\"bytes,20,opt,name=any,oneof\"`\n}\n\ntype FieldRules_Duration struct {\n\tDuration *DurationRules `protobuf:\"bytes,21,opt,name=duration,oneof\"`\n}\n\ntype FieldRules_Timestamp struct {\n\tTimestamp *TimestampRules `protobuf:\"bytes,22,opt,name=timestamp,oneof\"`\n}\n\nfunc (*FieldRules_Float) isFieldRules_Type() {}\n\nfunc (*FieldRules_Double) isFieldRules_Type() {}\n\nfunc (*FieldRules_Int32) isFieldRules_Type() {}\n\nfunc (*FieldRules_Int64) isFieldRules_Type() {}\n\nfunc (*FieldRules_Uint32) isFieldRules_Type() {}\n\nfunc (*FieldRules_Uint64) isFieldRules_Type() {}\n\nfunc (*FieldRules_Sint32) isFieldRules_Type() {}\n\nfunc (*FieldRules_Sint64) isFieldRules_Type() {}\n\nfunc (*FieldRules_Fixed32) isFieldRules_Type() {}\n\nfunc (*FieldRules_Fixed64) isFieldRules_Type() {}\n\nfunc (*FieldRules_Sfixed32) isFieldRules_Type() {}\n\nfunc (*FieldRules_Sfixed64) isFieldRules_Type() {}\n\nfunc (*FieldRules_Bool) isFieldRules_Type() {}\n\nfunc (*FieldRules_String_) isFieldRules_Type() {}\n\nfunc (*FieldRules_Bytes) isFieldRules_Type() {}\n\nfunc (*FieldRules_Enum) isFieldRules_Type() {}\n\nfunc (*FieldRules_Repeated) isFieldRules_Type() {}\n\nfunc (*FieldRules_Map) isFieldRules_Type() {}\n\nfunc (*FieldRules_Any) isFieldRules_Type() {}\n\nfunc (*FieldRules_Duration) isFieldRules_Type() {}\n\nfunc (*FieldRules_Timestamp) isFieldRules_Type() {}\n\n// FloatRules describes the constraints applied to `float` values\ntype FloatRules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *float32 `protobuf:\"fixed32,1,opt,name=const\" json:\"const,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// exclusive\n\tLt *float32 `protobuf:\"fixed32,2,opt,name=lt\" json:\"lt,omitempty\"`\n\t// Lte specifies that this field must be less than or equal to the\n\t// specified value, inclusive\n\tLte *float32 `protobuf:\"fixed32,3,opt,name=lte\" json:\"lte,omitempty\"`\n\t// Gt specifies that this field must be greater than the specified value,\n\t// exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n\t// range is reversed.\n\tGt *float32 `protobuf:\"fixed32,4,opt,name=gt\" json:\"gt,omitempty\"`\n\t// Gte specifies that this field must be greater than or equal to the\n\t// specified value, inclusive. If the value of Gte is larger than a\n\t// specified Lt or Lte, the range is reversed.\n\tGte *float32 `protobuf:\"fixed32,5,opt,name=gte\" json:\"gte,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []float32 `protobuf:\"fixed32,6,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []float32 `protobuf:\"fixed32,7,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,8,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *FloatRules) Reset() {\n\t*x = FloatRules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FloatRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FloatRules) ProtoMessage() {}\n\nfunc (x *FloatRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FloatRules.ProtoReflect.Descriptor instead.\nfunc (*FloatRules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *FloatRules) GetConst() float32 {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn 0\n}\n\nfunc (x *FloatRules) GetLt() float32 {\n\tif x != nil && x.Lt != nil {\n\t\treturn *x.Lt\n\t}\n\treturn 0\n}\n\nfunc (x *FloatRules) GetLte() float32 {\n\tif x != nil && x.Lte != nil {\n\t\treturn *x.Lte\n\t}\n\treturn 0\n}\n\nfunc (x *FloatRules) GetGt() float32 {\n\tif x != nil && x.Gt != nil {\n\t\treturn *x.Gt\n\t}\n\treturn 0\n}\n\nfunc (x *FloatRules) GetGte() float32 {\n\tif x != nil && x.Gte != nil {\n\t\treturn *x.Gte\n\t}\n\treturn 0\n}\n\nfunc (x *FloatRules) GetIn() []float32 {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *FloatRules) GetNotIn() []float32 {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\nfunc (x *FloatRules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\n// DoubleRules describes the constraints applied to `double` values\ntype DoubleRules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *float64 `protobuf:\"fixed64,1,opt,name=const\" json:\"const,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// exclusive\n\tLt *float64 `protobuf:\"fixed64,2,opt,name=lt\" json:\"lt,omitempty\"`\n\t// Lte specifies that this field must be less than or equal to the\n\t// specified value, inclusive\n\tLte *float64 `protobuf:\"fixed64,3,opt,name=lte\" json:\"lte,omitempty\"`\n\t// Gt specifies that this field must be greater than the specified value,\n\t// exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n\t// range is reversed.\n\tGt *float64 `protobuf:\"fixed64,4,opt,name=gt\" json:\"gt,omitempty\"`\n\t// Gte specifies that this field must be greater than or equal to the\n\t// specified value, inclusive. If the value of Gte is larger than a\n\t// specified Lt or Lte, the range is reversed.\n\tGte *float64 `protobuf:\"fixed64,5,opt,name=gte\" json:\"gte,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []float64 `protobuf:\"fixed64,6,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []float64 `protobuf:\"fixed64,7,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,8,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *DoubleRules) Reset() {\n\t*x = DoubleRules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DoubleRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DoubleRules) ProtoMessage() {}\n\nfunc (x *DoubleRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DoubleRules.ProtoReflect.Descriptor instead.\nfunc (*DoubleRules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *DoubleRules) GetConst() float64 {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn 0\n}\n\nfunc (x *DoubleRules) GetLt() float64 {\n\tif x != nil && x.Lt != nil {\n\t\treturn *x.Lt\n\t}\n\treturn 0\n}\n\nfunc (x *DoubleRules) GetLte() float64 {\n\tif x != nil && x.Lte != nil {\n\t\treturn *x.Lte\n\t}\n\treturn 0\n}\n\nfunc (x *DoubleRules) GetGt() float64 {\n\tif x != nil && x.Gt != nil {\n\t\treturn *x.Gt\n\t}\n\treturn 0\n}\n\nfunc (x *DoubleRules) GetGte() float64 {\n\tif x != nil && x.Gte != nil {\n\t\treturn *x.Gte\n\t}\n\treturn 0\n}\n\nfunc (x *DoubleRules) GetIn() []float64 {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *DoubleRules) GetNotIn() []float64 {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\nfunc (x *DoubleRules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\n// Int32Rules describes the constraints applied to `int32` values\ntype Int32Rules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *int32 `protobuf:\"varint,1,opt,name=const\" json:\"const,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// exclusive\n\tLt *int32 `protobuf:\"varint,2,opt,name=lt\" json:\"lt,omitempty\"`\n\t// Lte specifies that this field must be less than or equal to the\n\t// specified value, inclusive\n\tLte *int32 `protobuf:\"varint,3,opt,name=lte\" json:\"lte,omitempty\"`\n\t// Gt specifies that this field must be greater than the specified value,\n\t// exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n\t// range is reversed.\n\tGt *int32 `protobuf:\"varint,4,opt,name=gt\" json:\"gt,omitempty\"`\n\t// Gte specifies that this field must be greater than or equal to the\n\t// specified value, inclusive. If the value of Gte is larger than a\n\t// specified Lt or Lte, the range is reversed.\n\tGte *int32 `protobuf:\"varint,5,opt,name=gte\" json:\"gte,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []int32 `protobuf:\"varint,6,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []int32 `protobuf:\"varint,7,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,8,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *Int32Rules) Reset() {\n\t*x = Int32Rules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Int32Rules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Int32Rules) ProtoMessage() {}\n\nfunc (x *Int32Rules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Int32Rules.ProtoReflect.Descriptor instead.\nfunc (*Int32Rules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *Int32Rules) GetConst() int32 {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn 0\n}\n\nfunc (x *Int32Rules) GetLt() int32 {\n\tif x != nil && x.Lt != nil {\n\t\treturn *x.Lt\n\t}\n\treturn 0\n}\n\nfunc (x *Int32Rules) GetLte() int32 {\n\tif x != nil && x.Lte != nil {\n\t\treturn *x.Lte\n\t}\n\treturn 0\n}\n\nfunc (x *Int32Rules) GetGt() int32 {\n\tif x != nil && x.Gt != nil {\n\t\treturn *x.Gt\n\t}\n\treturn 0\n}\n\nfunc (x *Int32Rules) GetGte() int32 {\n\tif x != nil && x.Gte != nil {\n\t\treturn *x.Gte\n\t}\n\treturn 0\n}\n\nfunc (x *Int32Rules) GetIn() []int32 {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *Int32Rules) GetNotIn() []int32 {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\nfunc (x *Int32Rules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\n// Int64Rules describes the constraints applied to `int64` values\ntype Int64Rules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *int64 `protobuf:\"varint,1,opt,name=const\" json:\"const,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// exclusive\n\tLt *int64 `protobuf:\"varint,2,opt,name=lt\" json:\"lt,omitempty\"`\n\t// Lte specifies that this field must be less than or equal to the\n\t// specified value, inclusive\n\tLte *int64 `protobuf:\"varint,3,opt,name=lte\" json:\"lte,omitempty\"`\n\t// Gt specifies that this field must be greater than the specified value,\n\t// exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n\t// range is reversed.\n\tGt *int64 `protobuf:\"varint,4,opt,name=gt\" json:\"gt,omitempty\"`\n\t// Gte specifies that this field must be greater than or equal to the\n\t// specified value, inclusive. If the value of Gte is larger than a\n\t// specified Lt or Lte, the range is reversed.\n\tGte *int64 `protobuf:\"varint,5,opt,name=gte\" json:\"gte,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []int64 `protobuf:\"varint,6,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []int64 `protobuf:\"varint,7,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,8,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *Int64Rules) Reset() {\n\t*x = Int64Rules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Int64Rules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Int64Rules) ProtoMessage() {}\n\nfunc (x *Int64Rules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Int64Rules.ProtoReflect.Descriptor instead.\nfunc (*Int64Rules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *Int64Rules) GetConst() int64 {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn 0\n}\n\nfunc (x *Int64Rules) GetLt() int64 {\n\tif x != nil && x.Lt != nil {\n\t\treturn *x.Lt\n\t}\n\treturn 0\n}\n\nfunc (x *Int64Rules) GetLte() int64 {\n\tif x != nil && x.Lte != nil {\n\t\treturn *x.Lte\n\t}\n\treturn 0\n}\n\nfunc (x *Int64Rules) GetGt() int64 {\n\tif x != nil && x.Gt != nil {\n\t\treturn *x.Gt\n\t}\n\treturn 0\n}\n\nfunc (x *Int64Rules) GetGte() int64 {\n\tif x != nil && x.Gte != nil {\n\t\treturn *x.Gte\n\t}\n\treturn 0\n}\n\nfunc (x *Int64Rules) GetIn() []int64 {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *Int64Rules) GetNotIn() []int64 {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\nfunc (x *Int64Rules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\n// UInt32Rules describes the constraints applied to `uint32` values\ntype UInt32Rules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *uint32 `protobuf:\"varint,1,opt,name=const\" json:\"const,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// exclusive\n\tLt *uint32 `protobuf:\"varint,2,opt,name=lt\" json:\"lt,omitempty\"`\n\t// Lte specifies that this field must be less than or equal to the\n\t// specified value, inclusive\n\tLte *uint32 `protobuf:\"varint,3,opt,name=lte\" json:\"lte,omitempty\"`\n\t// Gt specifies that this field must be greater than the specified value,\n\t// exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n\t// range is reversed.\n\tGt *uint32 `protobuf:\"varint,4,opt,name=gt\" json:\"gt,omitempty\"`\n\t// Gte specifies that this field must be greater than or equal to the\n\t// specified value, inclusive. If the value of Gte is larger than a\n\t// specified Lt or Lte, the range is reversed.\n\tGte *uint32 `protobuf:\"varint,5,opt,name=gte\" json:\"gte,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []uint32 `protobuf:\"varint,6,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []uint32 `protobuf:\"varint,7,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,8,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *UInt32Rules) Reset() {\n\t*x = UInt32Rules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UInt32Rules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UInt32Rules) ProtoMessage() {}\n\nfunc (x *UInt32Rules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UInt32Rules.ProtoReflect.Descriptor instead.\nfunc (*UInt32Rules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *UInt32Rules) GetConst() uint32 {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn 0\n}\n\nfunc (x *UInt32Rules) GetLt() uint32 {\n\tif x != nil && x.Lt != nil {\n\t\treturn *x.Lt\n\t}\n\treturn 0\n}\n\nfunc (x *UInt32Rules) GetLte() uint32 {\n\tif x != nil && x.Lte != nil {\n\t\treturn *x.Lte\n\t}\n\treturn 0\n}\n\nfunc (x *UInt32Rules) GetGt() uint32 {\n\tif x != nil && x.Gt != nil {\n\t\treturn *x.Gt\n\t}\n\treturn 0\n}\n\nfunc (x *UInt32Rules) GetGte() uint32 {\n\tif x != nil && x.Gte != nil {\n\t\treturn *x.Gte\n\t}\n\treturn 0\n}\n\nfunc (x *UInt32Rules) GetIn() []uint32 {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *UInt32Rules) GetNotIn() []uint32 {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\nfunc (x *UInt32Rules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\n// UInt64Rules describes the constraints applied to `uint64` values\ntype UInt64Rules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *uint64 `protobuf:\"varint,1,opt,name=const\" json:\"const,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// exclusive\n\tLt *uint64 `protobuf:\"varint,2,opt,name=lt\" json:\"lt,omitempty\"`\n\t// Lte specifies that this field must be less than or equal to the\n\t// specified value, inclusive\n\tLte *uint64 `protobuf:\"varint,3,opt,name=lte\" json:\"lte,omitempty\"`\n\t// Gt specifies that this field must be greater than the specified value,\n\t// exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n\t// range is reversed.\n\tGt *uint64 `protobuf:\"varint,4,opt,name=gt\" json:\"gt,omitempty\"`\n\t// Gte specifies that this field must be greater than or equal to the\n\t// specified value, inclusive. If the value of Gte is larger than a\n\t// specified Lt or Lte, the range is reversed.\n\tGte *uint64 `protobuf:\"varint,5,opt,name=gte\" json:\"gte,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []uint64 `protobuf:\"varint,6,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []uint64 `protobuf:\"varint,7,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,8,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *UInt64Rules) Reset() {\n\t*x = UInt64Rules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UInt64Rules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UInt64Rules) ProtoMessage() {}\n\nfunc (x *UInt64Rules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UInt64Rules.ProtoReflect.Descriptor instead.\nfunc (*UInt64Rules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *UInt64Rules) GetConst() uint64 {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn 0\n}\n\nfunc (x *UInt64Rules) GetLt() uint64 {\n\tif x != nil && x.Lt != nil {\n\t\treturn *x.Lt\n\t}\n\treturn 0\n}\n\nfunc (x *UInt64Rules) GetLte() uint64 {\n\tif x != nil && x.Lte != nil {\n\t\treturn *x.Lte\n\t}\n\treturn 0\n}\n\nfunc (x *UInt64Rules) GetGt() uint64 {\n\tif x != nil && x.Gt != nil {\n\t\treturn *x.Gt\n\t}\n\treturn 0\n}\n\nfunc (x *UInt64Rules) GetGte() uint64 {\n\tif x != nil && x.Gte != nil {\n\t\treturn *x.Gte\n\t}\n\treturn 0\n}\n\nfunc (x *UInt64Rules) GetIn() []uint64 {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *UInt64Rules) GetNotIn() []uint64 {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\nfunc (x *UInt64Rules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\n// SInt32Rules describes the constraints applied to `sint32` values\ntype SInt32Rules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *int32 `protobuf:\"zigzag32,1,opt,name=const\" json:\"const,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// exclusive\n\tLt *int32 `protobuf:\"zigzag32,2,opt,name=lt\" json:\"lt,omitempty\"`\n\t// Lte specifies that this field must be less than or equal to the\n\t// specified value, inclusive\n\tLte *int32 `protobuf:\"zigzag32,3,opt,name=lte\" json:\"lte,omitempty\"`\n\t// Gt specifies that this field must be greater than the specified value,\n\t// exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n\t// range is reversed.\n\tGt *int32 `protobuf:\"zigzag32,4,opt,name=gt\" json:\"gt,omitempty\"`\n\t// Gte specifies that this field must be greater than or equal to the\n\t// specified value, inclusive. If the value of Gte is larger than a\n\t// specified Lt or Lte, the range is reversed.\n\tGte *int32 `protobuf:\"zigzag32,5,opt,name=gte\" json:\"gte,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []int32 `protobuf:\"zigzag32,6,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []int32 `protobuf:\"zigzag32,7,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,8,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *SInt32Rules) Reset() {\n\t*x = SInt32Rules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SInt32Rules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SInt32Rules) ProtoMessage() {}\n\nfunc (x *SInt32Rules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SInt32Rules.ProtoReflect.Descriptor instead.\nfunc (*SInt32Rules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *SInt32Rules) GetConst() int32 {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn 0\n}\n\nfunc (x *SInt32Rules) GetLt() int32 {\n\tif x != nil && x.Lt != nil {\n\t\treturn *x.Lt\n\t}\n\treturn 0\n}\n\nfunc (x *SInt32Rules) GetLte() int32 {\n\tif x != nil && x.Lte != nil {\n\t\treturn *x.Lte\n\t}\n\treturn 0\n}\n\nfunc (x *SInt32Rules) GetGt() int32 {\n\tif x != nil && x.Gt != nil {\n\t\treturn *x.Gt\n\t}\n\treturn 0\n}\n\nfunc (x *SInt32Rules) GetGte() int32 {\n\tif x != nil && x.Gte != nil {\n\t\treturn *x.Gte\n\t}\n\treturn 0\n}\n\nfunc (x *SInt32Rules) GetIn() []int32 {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *SInt32Rules) GetNotIn() []int32 {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\nfunc (x *SInt32Rules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\n// SInt64Rules describes the constraints applied to `sint64` values\ntype SInt64Rules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *int64 `protobuf:\"zigzag64,1,opt,name=const\" json:\"const,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// exclusive\n\tLt *int64 `protobuf:\"zigzag64,2,opt,name=lt\" json:\"lt,omitempty\"`\n\t// Lte specifies that this field must be less than or equal to the\n\t// specified value, inclusive\n\tLte *int64 `protobuf:\"zigzag64,3,opt,name=lte\" json:\"lte,omitempty\"`\n\t// Gt specifies that this field must be greater than the specified value,\n\t// exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n\t// range is reversed.\n\tGt *int64 `protobuf:\"zigzag64,4,opt,name=gt\" json:\"gt,omitempty\"`\n\t// Gte specifies that this field must be greater than or equal to the\n\t// specified value, inclusive. If the value of Gte is larger than a\n\t// specified Lt or Lte, the range is reversed.\n\tGte *int64 `protobuf:\"zigzag64,5,opt,name=gte\" json:\"gte,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []int64 `protobuf:\"zigzag64,6,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []int64 `protobuf:\"zigzag64,7,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,8,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *SInt64Rules) Reset() {\n\t*x = SInt64Rules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SInt64Rules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SInt64Rules) ProtoMessage() {}\n\nfunc (x *SInt64Rules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SInt64Rules.ProtoReflect.Descriptor instead.\nfunc (*SInt64Rules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *SInt64Rules) GetConst() int64 {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn 0\n}\n\nfunc (x *SInt64Rules) GetLt() int64 {\n\tif x != nil && x.Lt != nil {\n\t\treturn *x.Lt\n\t}\n\treturn 0\n}\n\nfunc (x *SInt64Rules) GetLte() int64 {\n\tif x != nil && x.Lte != nil {\n\t\treturn *x.Lte\n\t}\n\treturn 0\n}\n\nfunc (x *SInt64Rules) GetGt() int64 {\n\tif x != nil && x.Gt != nil {\n\t\treturn *x.Gt\n\t}\n\treturn 0\n}\n\nfunc (x *SInt64Rules) GetGte() int64 {\n\tif x != nil && x.Gte != nil {\n\t\treturn *x.Gte\n\t}\n\treturn 0\n}\n\nfunc (x *SInt64Rules) GetIn() []int64 {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *SInt64Rules) GetNotIn() []int64 {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\nfunc (x *SInt64Rules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\n// Fixed32Rules describes the constraints applied to `fixed32` values\ntype Fixed32Rules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *uint32 `protobuf:\"fixed32,1,opt,name=const\" json:\"const,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// exclusive\n\tLt *uint32 `protobuf:\"fixed32,2,opt,name=lt\" json:\"lt,omitempty\"`\n\t// Lte specifies that this field must be less than or equal to the\n\t// specified value, inclusive\n\tLte *uint32 `protobuf:\"fixed32,3,opt,name=lte\" json:\"lte,omitempty\"`\n\t// Gt specifies that this field must be greater than the specified value,\n\t// exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n\t// range is reversed.\n\tGt *uint32 `protobuf:\"fixed32,4,opt,name=gt\" json:\"gt,omitempty\"`\n\t// Gte specifies that this field must be greater than or equal to the\n\t// specified value, inclusive. If the value of Gte is larger than a\n\t// specified Lt or Lte, the range is reversed.\n\tGte *uint32 `protobuf:\"fixed32,5,opt,name=gte\" json:\"gte,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []uint32 `protobuf:\"fixed32,6,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []uint32 `protobuf:\"fixed32,7,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,8,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *Fixed32Rules) Reset() {\n\t*x = Fixed32Rules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Fixed32Rules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Fixed32Rules) ProtoMessage() {}\n\nfunc (x *Fixed32Rules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Fixed32Rules.ProtoReflect.Descriptor instead.\nfunc (*Fixed32Rules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *Fixed32Rules) GetConst() uint32 {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn 0\n}\n\nfunc (x *Fixed32Rules) GetLt() uint32 {\n\tif x != nil && x.Lt != nil {\n\t\treturn *x.Lt\n\t}\n\treturn 0\n}\n\nfunc (x *Fixed32Rules) GetLte() uint32 {\n\tif x != nil && x.Lte != nil {\n\t\treturn *x.Lte\n\t}\n\treturn 0\n}\n\nfunc (x *Fixed32Rules) GetGt() uint32 {\n\tif x != nil && x.Gt != nil {\n\t\treturn *x.Gt\n\t}\n\treturn 0\n}\n\nfunc (x *Fixed32Rules) GetGte() uint32 {\n\tif x != nil && x.Gte != nil {\n\t\treturn *x.Gte\n\t}\n\treturn 0\n}\n\nfunc (x *Fixed32Rules) GetIn() []uint32 {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *Fixed32Rules) GetNotIn() []uint32 {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\nfunc (x *Fixed32Rules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\n// Fixed64Rules describes the constraints applied to `fixed64` values\ntype Fixed64Rules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *uint64 `protobuf:\"fixed64,1,opt,name=const\" json:\"const,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// exclusive\n\tLt *uint64 `protobuf:\"fixed64,2,opt,name=lt\" json:\"lt,omitempty\"`\n\t// Lte specifies that this field must be less than or equal to the\n\t// specified value, inclusive\n\tLte *uint64 `protobuf:\"fixed64,3,opt,name=lte\" json:\"lte,omitempty\"`\n\t// Gt specifies that this field must be greater than the specified value,\n\t// exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n\t// range is reversed.\n\tGt *uint64 `protobuf:\"fixed64,4,opt,name=gt\" json:\"gt,omitempty\"`\n\t// Gte specifies that this field must be greater than or equal to the\n\t// specified value, inclusive. If the value of Gte is larger than a\n\t// specified Lt or Lte, the range is reversed.\n\tGte *uint64 `protobuf:\"fixed64,5,opt,name=gte\" json:\"gte,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []uint64 `protobuf:\"fixed64,6,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []uint64 `protobuf:\"fixed64,7,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,8,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *Fixed64Rules) Reset() {\n\t*x = Fixed64Rules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Fixed64Rules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Fixed64Rules) ProtoMessage() {}\n\nfunc (x *Fixed64Rules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Fixed64Rules.ProtoReflect.Descriptor instead.\nfunc (*Fixed64Rules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *Fixed64Rules) GetConst() uint64 {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn 0\n}\n\nfunc (x *Fixed64Rules) GetLt() uint64 {\n\tif x != nil && x.Lt != nil {\n\t\treturn *x.Lt\n\t}\n\treturn 0\n}\n\nfunc (x *Fixed64Rules) GetLte() uint64 {\n\tif x != nil && x.Lte != nil {\n\t\treturn *x.Lte\n\t}\n\treturn 0\n}\n\nfunc (x *Fixed64Rules) GetGt() uint64 {\n\tif x != nil && x.Gt != nil {\n\t\treturn *x.Gt\n\t}\n\treturn 0\n}\n\nfunc (x *Fixed64Rules) GetGte() uint64 {\n\tif x != nil && x.Gte != nil {\n\t\treturn *x.Gte\n\t}\n\treturn 0\n}\n\nfunc (x *Fixed64Rules) GetIn() []uint64 {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *Fixed64Rules) GetNotIn() []uint64 {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\nfunc (x *Fixed64Rules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\n// SFixed32Rules describes the constraints applied to `sfixed32` values\ntype SFixed32Rules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *int32 `protobuf:\"fixed32,1,opt,name=const\" json:\"const,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// exclusive\n\tLt *int32 `protobuf:\"fixed32,2,opt,name=lt\" json:\"lt,omitempty\"`\n\t// Lte specifies that this field must be less than or equal to the\n\t// specified value, inclusive\n\tLte *int32 `protobuf:\"fixed32,3,opt,name=lte\" json:\"lte,omitempty\"`\n\t// Gt specifies that this field must be greater than the specified value,\n\t// exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n\t// range is reversed.\n\tGt *int32 `protobuf:\"fixed32,4,opt,name=gt\" json:\"gt,omitempty\"`\n\t// Gte specifies that this field must be greater than or equal to the\n\t// specified value, inclusive. If the value of Gte is larger than a\n\t// specified Lt or Lte, the range is reversed.\n\tGte *int32 `protobuf:\"fixed32,5,opt,name=gte\" json:\"gte,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []int32 `protobuf:\"fixed32,6,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []int32 `protobuf:\"fixed32,7,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,8,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *SFixed32Rules) Reset() {\n\t*x = SFixed32Rules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SFixed32Rules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SFixed32Rules) ProtoMessage() {}\n\nfunc (x *SFixed32Rules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SFixed32Rules.ProtoReflect.Descriptor instead.\nfunc (*SFixed32Rules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *SFixed32Rules) GetConst() int32 {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn 0\n}\n\nfunc (x *SFixed32Rules) GetLt() int32 {\n\tif x != nil && x.Lt != nil {\n\t\treturn *x.Lt\n\t}\n\treturn 0\n}\n\nfunc (x *SFixed32Rules) GetLte() int32 {\n\tif x != nil && x.Lte != nil {\n\t\treturn *x.Lte\n\t}\n\treturn 0\n}\n\nfunc (x *SFixed32Rules) GetGt() int32 {\n\tif x != nil && x.Gt != nil {\n\t\treturn *x.Gt\n\t}\n\treturn 0\n}\n\nfunc (x *SFixed32Rules) GetGte() int32 {\n\tif x != nil && x.Gte != nil {\n\t\treturn *x.Gte\n\t}\n\treturn 0\n}\n\nfunc (x *SFixed32Rules) GetIn() []int32 {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *SFixed32Rules) GetNotIn() []int32 {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\nfunc (x *SFixed32Rules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\n// SFixed64Rules describes the constraints applied to `sfixed64` values\ntype SFixed64Rules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *int64 `protobuf:\"fixed64,1,opt,name=const\" json:\"const,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// exclusive\n\tLt *int64 `protobuf:\"fixed64,2,opt,name=lt\" json:\"lt,omitempty\"`\n\t// Lte specifies that this field must be less than or equal to the\n\t// specified value, inclusive\n\tLte *int64 `protobuf:\"fixed64,3,opt,name=lte\" json:\"lte,omitempty\"`\n\t// Gt specifies that this field must be greater than the specified value,\n\t// exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n\t// range is reversed.\n\tGt *int64 `protobuf:\"fixed64,4,opt,name=gt\" json:\"gt,omitempty\"`\n\t// Gte specifies that this field must be greater than or equal to the\n\t// specified value, inclusive. If the value of Gte is larger than a\n\t// specified Lt or Lte, the range is reversed.\n\tGte *int64 `protobuf:\"fixed64,5,opt,name=gte\" json:\"gte,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []int64 `protobuf:\"fixed64,6,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []int64 `protobuf:\"fixed64,7,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,8,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *SFixed64Rules) Reset() {\n\t*x = SFixed64Rules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[12]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SFixed64Rules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SFixed64Rules) ProtoMessage() {}\n\nfunc (x *SFixed64Rules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[12]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SFixed64Rules.ProtoReflect.Descriptor instead.\nfunc (*SFixed64Rules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *SFixed64Rules) GetConst() int64 {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn 0\n}\n\nfunc (x *SFixed64Rules) GetLt() int64 {\n\tif x != nil && x.Lt != nil {\n\t\treturn *x.Lt\n\t}\n\treturn 0\n}\n\nfunc (x *SFixed64Rules) GetLte() int64 {\n\tif x != nil && x.Lte != nil {\n\t\treturn *x.Lte\n\t}\n\treturn 0\n}\n\nfunc (x *SFixed64Rules) GetGt() int64 {\n\tif x != nil && x.Gt != nil {\n\t\treturn *x.Gt\n\t}\n\treturn 0\n}\n\nfunc (x *SFixed64Rules) GetGte() int64 {\n\tif x != nil && x.Gte != nil {\n\t\treturn *x.Gte\n\t}\n\treturn 0\n}\n\nfunc (x *SFixed64Rules) GetIn() []int64 {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *SFixed64Rules) GetNotIn() []int64 {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\nfunc (x *SFixed64Rules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\n// BoolRules describes the constraints applied to `bool` values\ntype BoolRules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *bool `protobuf:\"varint,1,opt,name=const\" json:\"const,omitempty\"`\n}\n\nfunc (x *BoolRules) Reset() {\n\t*x = BoolRules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[13]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *BoolRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*BoolRules) ProtoMessage() {}\n\nfunc (x *BoolRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[13]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use BoolRules.ProtoReflect.Descriptor instead.\nfunc (*BoolRules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{13}\n}\n\nfunc (x *BoolRules) GetConst() bool {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn false\n}\n\n// StringRules describe the constraints applied to `string` values\ntype StringRules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *string `protobuf:\"bytes,1,opt,name=const\" json:\"const,omitempty\"`\n\t// Len specifies that this field must be the specified number of\n\t// characters (Unicode code points). Note that the number of\n\t// characters may differ from the number of bytes in the string.\n\tLen *uint64 `protobuf:\"varint,19,opt,name=len\" json:\"len,omitempty\"`\n\t// MinLen specifies that this field must be the specified number of\n\t// characters (Unicode code points) at a minimum. Note that the number of\n\t// characters may differ from the number of bytes in the string.\n\tMinLen *uint64 `protobuf:\"varint,2,opt,name=min_len,json=minLen\" json:\"min_len,omitempty\"`\n\t// MaxLen specifies that this field must be the specified number of\n\t// characters (Unicode code points) at a maximum. Note that the number of\n\t// characters may differ from the number of bytes in the string.\n\tMaxLen *uint64 `protobuf:\"varint,3,opt,name=max_len,json=maxLen\" json:\"max_len,omitempty\"`\n\t// LenBytes specifies that this field must be the specified number of bytes\n\tLenBytes *uint64 `protobuf:\"varint,20,opt,name=len_bytes,json=lenBytes\" json:\"len_bytes,omitempty\"`\n\t// MinBytes specifies that this field must be the specified number of bytes\n\t// at a minimum\n\tMinBytes *uint64 `protobuf:\"varint,4,opt,name=min_bytes,json=minBytes\" json:\"min_bytes,omitempty\"`\n\t// MaxBytes specifies that this field must be the specified number of bytes\n\t// at a maximum\n\tMaxBytes *uint64 `protobuf:\"varint,5,opt,name=max_bytes,json=maxBytes\" json:\"max_bytes,omitempty\"`\n\t// Pattern specifies that this field must match against the specified\n\t// regular expression (RE2 syntax). The included expression should elide\n\t// any delimiters.\n\tPattern *string `protobuf:\"bytes,6,opt,name=pattern\" json:\"pattern,omitempty\"`\n\t// Prefix specifies that this field must have the specified substring at\n\t// the beginning of the string.\n\tPrefix *string `protobuf:\"bytes,7,opt,name=prefix\" json:\"prefix,omitempty\"`\n\t// Suffix specifies that this field must have the specified substring at\n\t// the end of the string.\n\tSuffix *string `protobuf:\"bytes,8,opt,name=suffix\" json:\"suffix,omitempty\"`\n\t// Contains specifies that this field must have the specified substring\n\t// anywhere in the string.\n\tContains *string `protobuf:\"bytes,9,opt,name=contains\" json:\"contains,omitempty\"`\n\t// NotContains specifies that this field cannot have the specified substring\n\t// anywhere in the string.\n\tNotContains *string `protobuf:\"bytes,23,opt,name=not_contains,json=notContains\" json:\"not_contains,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []string `protobuf:\"bytes,10,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []string `protobuf:\"bytes,11,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n\t// WellKnown rules provide advanced constraints against common string\n\t// patterns\n\t//\n\t// Types that are assignable to WellKnown:\n\t//\n\t//\t*StringRules_Email\n\t//\t*StringRules_Hostname\n\t//\t*StringRules_Ip\n\t//\t*StringRules_Ipv4\n\t//\t*StringRules_Ipv6\n\t//\t*StringRules_Uri\n\t//\t*StringRules_UriRef\n\t//\t*StringRules_Address\n\t//\t*StringRules_Uuid\n\t//\t*StringRules_WellKnownRegex\n\tWellKnown isStringRules_WellKnown `protobuf_oneof:\"well_known\"`\n\t// This applies to regexes HTTP_HEADER_NAME and HTTP_HEADER_VALUE to enable\n\t// strict header validation.\n\t// By default, this is true, and HTTP header validations are RFC-compliant.\n\t// Setting to false will enable a looser validations that only disallows\n\t// \\r\\n\\0 characters, which can be used to bypass header matching rules.\n\tStrict *bool `protobuf:\"varint,25,opt,name=strict,def=1\" json:\"strict,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,26,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\n// Default values for StringRules fields.\nconst (\n\tDefault_StringRules_Strict = bool(true)\n)\n\nfunc (x *StringRules) Reset() {\n\t*x = StringRules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[14]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *StringRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*StringRules) ProtoMessage() {}\n\nfunc (x *StringRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[14]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use StringRules.ProtoReflect.Descriptor instead.\nfunc (*StringRules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{14}\n}\n\nfunc (x *StringRules) GetConst() string {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn \"\"\n}\n\nfunc (x *StringRules) GetLen() uint64 {\n\tif x != nil && x.Len != nil {\n\t\treturn *x.Len\n\t}\n\treturn 0\n}\n\nfunc (x *StringRules) GetMinLen() uint64 {\n\tif x != nil && x.MinLen != nil {\n\t\treturn *x.MinLen\n\t}\n\treturn 0\n}\n\nfunc (x *StringRules) GetMaxLen() uint64 {\n\tif x != nil && x.MaxLen != nil {\n\t\treturn *x.MaxLen\n\t}\n\treturn 0\n}\n\nfunc (x *StringRules) GetLenBytes() uint64 {\n\tif x != nil && x.LenBytes != nil {\n\t\treturn *x.LenBytes\n\t}\n\treturn 0\n}\n\nfunc (x *StringRules) GetMinBytes() uint64 {\n\tif x != nil && x.MinBytes != nil {\n\t\treturn *x.MinBytes\n\t}\n\treturn 0\n}\n\nfunc (x *StringRules) GetMaxBytes() uint64 {\n\tif x != nil && x.MaxBytes != nil {\n\t\treturn *x.MaxBytes\n\t}\n\treturn 0\n}\n\nfunc (x *StringRules) GetPattern() string {\n\tif x != nil && x.Pattern != nil {\n\t\treturn *x.Pattern\n\t}\n\treturn \"\"\n}\n\nfunc (x *StringRules) GetPrefix() string {\n\tif x != nil && x.Prefix != nil {\n\t\treturn *x.Prefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *StringRules) GetSuffix() string {\n\tif x != nil && x.Suffix != nil {\n\t\treturn *x.Suffix\n\t}\n\treturn \"\"\n}\n\nfunc (x *StringRules) GetContains() string {\n\tif x != nil && x.Contains != nil {\n\t\treturn *x.Contains\n\t}\n\treturn \"\"\n}\n\nfunc (x *StringRules) GetNotContains() string {\n\tif x != nil && x.NotContains != nil {\n\t\treturn *x.NotContains\n\t}\n\treturn \"\"\n}\n\nfunc (x *StringRules) GetIn() []string {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *StringRules) GetNotIn() []string {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\nfunc (m *StringRules) GetWellKnown() isStringRules_WellKnown {\n\tif m != nil {\n\t\treturn m.WellKnown\n\t}\n\treturn nil\n}\n\nfunc (x *StringRules) GetEmail() bool {\n\tif x, ok := x.GetWellKnown().(*StringRules_Email); ok {\n\t\treturn x.Email\n\t}\n\treturn false\n}\n\nfunc (x *StringRules) GetHostname() bool {\n\tif x, ok := x.GetWellKnown().(*StringRules_Hostname); ok {\n\t\treturn x.Hostname\n\t}\n\treturn false\n}\n\nfunc (x *StringRules) GetIp() bool {\n\tif x, ok := x.GetWellKnown().(*StringRules_Ip); ok {\n\t\treturn x.Ip\n\t}\n\treturn false\n}\n\nfunc (x *StringRules) GetIpv4() bool {\n\tif x, ok := x.GetWellKnown().(*StringRules_Ipv4); ok {\n\t\treturn x.Ipv4\n\t}\n\treturn false\n}\n\nfunc (x *StringRules) GetIpv6() bool {\n\tif x, ok := x.GetWellKnown().(*StringRules_Ipv6); ok {\n\t\treturn x.Ipv6\n\t}\n\treturn false\n}\n\nfunc (x *StringRules) GetUri() bool {\n\tif x, ok := x.GetWellKnown().(*StringRules_Uri); ok {\n\t\treturn x.Uri\n\t}\n\treturn false\n}\n\nfunc (x *StringRules) GetUriRef() bool {\n\tif x, ok := x.GetWellKnown().(*StringRules_UriRef); ok {\n\t\treturn x.UriRef\n\t}\n\treturn false\n}\n\nfunc (x *StringRules) GetAddress() bool {\n\tif x, ok := x.GetWellKnown().(*StringRules_Address); ok {\n\t\treturn x.Address\n\t}\n\treturn false\n}\n\nfunc (x *StringRules) GetUuid() bool {\n\tif x, ok := x.GetWellKnown().(*StringRules_Uuid); ok {\n\t\treturn x.Uuid\n\t}\n\treturn false\n}\n\nfunc (x *StringRules) GetWellKnownRegex() KnownRegex {\n\tif x, ok := x.GetWellKnown().(*StringRules_WellKnownRegex); ok {\n\t\treturn x.WellKnownRegex\n\t}\n\treturn KnownRegex_UNKNOWN\n}\n\nfunc (x *StringRules) GetStrict() bool {\n\tif x != nil && x.Strict != nil {\n\t\treturn *x.Strict\n\t}\n\treturn Default_StringRules_Strict\n}\n\nfunc (x *StringRules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\ntype isStringRules_WellKnown interface {\n\tisStringRules_WellKnown()\n}\n\ntype StringRules_Email struct {\n\t// Email specifies that the field must be a valid email address as\n\t// defined by RFC 5322\n\tEmail bool `protobuf:\"varint,12,opt,name=email,oneof\"`\n}\n\ntype StringRules_Hostname struct {\n\t// Hostname specifies that the field must be a valid hostname as\n\t// defined by RFC 1034. This constraint does not support\n\t// internationalized domain names (IDNs).\n\tHostname bool `protobuf:\"varint,13,opt,name=hostname,oneof\"`\n}\n\ntype StringRules_Ip struct {\n\t// Ip specifies that the field must be a valid IP (v4 or v6) address.\n\t// Valid IPv6 addresses should not include surrounding square brackets.\n\tIp bool `protobuf:\"varint,14,opt,name=ip,oneof\"`\n}\n\ntype StringRules_Ipv4 struct {\n\t// Ipv4 specifies that the field must be a valid IPv4 address.\n\tIpv4 bool `protobuf:\"varint,15,opt,name=ipv4,oneof\"`\n}\n\ntype StringRules_Ipv6 struct {\n\t// Ipv6 specifies that the field must be a valid IPv6 address. Valid\n\t// IPv6 addresses should not include surrounding square brackets.\n\tIpv6 bool `protobuf:\"varint,16,opt,name=ipv6,oneof\"`\n}\n\ntype StringRules_Uri struct {\n\t// Uri specifies that the field must be a valid, absolute URI as defined\n\t// by RFC 3986\n\tUri bool `protobuf:\"varint,17,opt,name=uri,oneof\"`\n}\n\ntype StringRules_UriRef struct {\n\t// UriRef specifies that the field must be a valid URI as defined by RFC\n\t// 3986 and may be relative or absolute.\n\tUriRef bool `protobuf:\"varint,18,opt,name=uri_ref,json=uriRef,oneof\"`\n}\n\ntype StringRules_Address struct {\n\t// Address specifies that the field must be either a valid hostname as\n\t// defined by RFC 1034 (which does not support internationalized domain\n\t// names or IDNs), or it can be a valid IP (v4 or v6).\n\tAddress bool `protobuf:\"varint,21,opt,name=address,oneof\"`\n}\n\ntype StringRules_Uuid struct {\n\t// Uuid specifies that the field must be a valid UUID as defined by\n\t// RFC 4122\n\tUuid bool `protobuf:\"varint,22,opt,name=uuid,oneof\"`\n}\n\ntype StringRules_WellKnownRegex struct {\n\t// WellKnownRegex specifies a common well known pattern defined as a regex.\n\tWellKnownRegex KnownRegex `protobuf:\"varint,24,opt,name=well_known_regex,json=wellKnownRegex,enum=validate.KnownRegex,oneof\"`\n}\n\nfunc (*StringRules_Email) isStringRules_WellKnown() {}\n\nfunc (*StringRules_Hostname) isStringRules_WellKnown() {}\n\nfunc (*StringRules_Ip) isStringRules_WellKnown() {}\n\nfunc (*StringRules_Ipv4) isStringRules_WellKnown() {}\n\nfunc (*StringRules_Ipv6) isStringRules_WellKnown() {}\n\nfunc (*StringRules_Uri) isStringRules_WellKnown() {}\n\nfunc (*StringRules_UriRef) isStringRules_WellKnown() {}\n\nfunc (*StringRules_Address) isStringRules_WellKnown() {}\n\nfunc (*StringRules_Uuid) isStringRules_WellKnown() {}\n\nfunc (*StringRules_WellKnownRegex) isStringRules_WellKnown() {}\n\n// BytesRules describe the constraints applied to `bytes` values\ntype BytesRules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst []byte `protobuf:\"bytes,1,opt,name=const\" json:\"const,omitempty\"`\n\t// Len specifies that this field must be the specified number of bytes\n\tLen *uint64 `protobuf:\"varint,13,opt,name=len\" json:\"len,omitempty\"`\n\t// MinLen specifies that this field must be the specified number of bytes\n\t// at a minimum\n\tMinLen *uint64 `protobuf:\"varint,2,opt,name=min_len,json=minLen\" json:\"min_len,omitempty\"`\n\t// MaxLen specifies that this field must be the specified number of bytes\n\t// at a maximum\n\tMaxLen *uint64 `protobuf:\"varint,3,opt,name=max_len,json=maxLen\" json:\"max_len,omitempty\"`\n\t// Pattern specifies that this field must match against the specified\n\t// regular expression (RE2 syntax). The included expression should elide\n\t// any delimiters.\n\tPattern *string `protobuf:\"bytes,4,opt,name=pattern\" json:\"pattern,omitempty\"`\n\t// Prefix specifies that this field must have the specified bytes at the\n\t// beginning of the string.\n\tPrefix []byte `protobuf:\"bytes,5,opt,name=prefix\" json:\"prefix,omitempty\"`\n\t// Suffix specifies that this field must have the specified bytes at the\n\t// end of the string.\n\tSuffix []byte `protobuf:\"bytes,6,opt,name=suffix\" json:\"suffix,omitempty\"`\n\t// Contains specifies that this field must have the specified bytes\n\t// anywhere in the string.\n\tContains []byte `protobuf:\"bytes,7,opt,name=contains\" json:\"contains,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn [][]byte `protobuf:\"bytes,8,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn [][]byte `protobuf:\"bytes,9,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n\t// WellKnown rules provide advanced constraints against common byte\n\t// patterns\n\t//\n\t// Types that are assignable to WellKnown:\n\t//\n\t//\t*BytesRules_Ip\n\t//\t*BytesRules_Ipv4\n\t//\t*BytesRules_Ipv6\n\tWellKnown isBytesRules_WellKnown `protobuf_oneof:\"well_known\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,14,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *BytesRules) Reset() {\n\t*x = BytesRules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[15]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *BytesRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*BytesRules) ProtoMessage() {}\n\nfunc (x *BytesRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[15]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use BytesRules.ProtoReflect.Descriptor instead.\nfunc (*BytesRules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{15}\n}\n\nfunc (x *BytesRules) GetConst() []byte {\n\tif x != nil {\n\t\treturn x.Const\n\t}\n\treturn nil\n}\n\nfunc (x *BytesRules) GetLen() uint64 {\n\tif x != nil && x.Len != nil {\n\t\treturn *x.Len\n\t}\n\treturn 0\n}\n\nfunc (x *BytesRules) GetMinLen() uint64 {\n\tif x != nil && x.MinLen != nil {\n\t\treturn *x.MinLen\n\t}\n\treturn 0\n}\n\nfunc (x *BytesRules) GetMaxLen() uint64 {\n\tif x != nil && x.MaxLen != nil {\n\t\treturn *x.MaxLen\n\t}\n\treturn 0\n}\n\nfunc (x *BytesRules) GetPattern() string {\n\tif x != nil && x.Pattern != nil {\n\t\treturn *x.Pattern\n\t}\n\treturn \"\"\n}\n\nfunc (x *BytesRules) GetPrefix() []byte {\n\tif x != nil {\n\t\treturn x.Prefix\n\t}\n\treturn nil\n}\n\nfunc (x *BytesRules) GetSuffix() []byte {\n\tif x != nil {\n\t\treturn x.Suffix\n\t}\n\treturn nil\n}\n\nfunc (x *BytesRules) GetContains() []byte {\n\tif x != nil {\n\t\treturn x.Contains\n\t}\n\treturn nil\n}\n\nfunc (x *BytesRules) GetIn() [][]byte {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *BytesRules) GetNotIn() [][]byte {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\nfunc (m *BytesRules) GetWellKnown() isBytesRules_WellKnown {\n\tif m != nil {\n\t\treturn m.WellKnown\n\t}\n\treturn nil\n}\n\nfunc (x *BytesRules) GetIp() bool {\n\tif x, ok := x.GetWellKnown().(*BytesRules_Ip); ok {\n\t\treturn x.Ip\n\t}\n\treturn false\n}\n\nfunc (x *BytesRules) GetIpv4() bool {\n\tif x, ok := x.GetWellKnown().(*BytesRules_Ipv4); ok {\n\t\treturn x.Ipv4\n\t}\n\treturn false\n}\n\nfunc (x *BytesRules) GetIpv6() bool {\n\tif x, ok := x.GetWellKnown().(*BytesRules_Ipv6); ok {\n\t\treturn x.Ipv6\n\t}\n\treturn false\n}\n\nfunc (x *BytesRules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\ntype isBytesRules_WellKnown interface {\n\tisBytesRules_WellKnown()\n}\n\ntype BytesRules_Ip struct {\n\t// Ip specifies that the field must be a valid IP (v4 or v6) address in\n\t// byte format\n\tIp bool `protobuf:\"varint,10,opt,name=ip,oneof\"`\n}\n\ntype BytesRules_Ipv4 struct {\n\t// Ipv4 specifies that the field must be a valid IPv4 address in byte\n\t// format\n\tIpv4 bool `protobuf:\"varint,11,opt,name=ipv4,oneof\"`\n}\n\ntype BytesRules_Ipv6 struct {\n\t// Ipv6 specifies that the field must be a valid IPv6 address in byte\n\t// format\n\tIpv6 bool `protobuf:\"varint,12,opt,name=ipv6,oneof\"`\n}\n\nfunc (*BytesRules_Ip) isBytesRules_WellKnown() {}\n\nfunc (*BytesRules_Ipv4) isBytesRules_WellKnown() {}\n\nfunc (*BytesRules_Ipv6) isBytesRules_WellKnown() {}\n\n// EnumRules describe the constraints applied to enum values\ntype EnumRules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Const specifies that this field must be exactly the specified value\n\tConst *int32 `protobuf:\"varint,1,opt,name=const\" json:\"const,omitempty\"`\n\t// DefinedOnly specifies that this field must be only one of the defined\n\t// values for this enum, failing on any undefined value.\n\tDefinedOnly *bool `protobuf:\"varint,2,opt,name=defined_only,json=definedOnly\" json:\"defined_only,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []int32 `protobuf:\"varint,3,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []int32 `protobuf:\"varint,4,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n}\n\nfunc (x *EnumRules) Reset() {\n\t*x = EnumRules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[16]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EnumRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumRules) ProtoMessage() {}\n\nfunc (x *EnumRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[16]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumRules.ProtoReflect.Descriptor instead.\nfunc (*EnumRules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{16}\n}\n\nfunc (x *EnumRules) GetConst() int32 {\n\tif x != nil && x.Const != nil {\n\t\treturn *x.Const\n\t}\n\treturn 0\n}\n\nfunc (x *EnumRules) GetDefinedOnly() bool {\n\tif x != nil && x.DefinedOnly != nil {\n\t\treturn *x.DefinedOnly\n\t}\n\treturn false\n}\n\nfunc (x *EnumRules) GetIn() []int32 {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *EnumRules) GetNotIn() []int32 {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\n// MessageRules describe the constraints applied to embedded message values.\n// For message-type fields, validation is performed recursively.\ntype MessageRules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Skip specifies that the validation rules of this field should not be\n\t// evaluated\n\tSkip *bool `protobuf:\"varint,1,opt,name=skip\" json:\"skip,omitempty\"`\n\t// Required specifies that this field must be set\n\tRequired *bool `protobuf:\"varint,2,opt,name=required\" json:\"required,omitempty\"`\n}\n\nfunc (x *MessageRules) Reset() {\n\t*x = MessageRules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[17]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MessageRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MessageRules) ProtoMessage() {}\n\nfunc (x *MessageRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[17]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MessageRules.ProtoReflect.Descriptor instead.\nfunc (*MessageRules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{17}\n}\n\nfunc (x *MessageRules) GetSkip() bool {\n\tif x != nil && x.Skip != nil {\n\t\treturn *x.Skip\n\t}\n\treturn false\n}\n\nfunc (x *MessageRules) GetRequired() bool {\n\tif x != nil && x.Required != nil {\n\t\treturn *x.Required\n\t}\n\treturn false\n}\n\n// RepeatedRules describe the constraints applied to `repeated` values\ntype RepeatedRules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// MinItems specifies that this field must have the specified number of\n\t// items at a minimum\n\tMinItems *uint64 `protobuf:\"varint,1,opt,name=min_items,json=minItems\" json:\"min_items,omitempty\"`\n\t// MaxItems specifies that this field must have the specified number of\n\t// items at a maximum\n\tMaxItems *uint64 `protobuf:\"varint,2,opt,name=max_items,json=maxItems\" json:\"max_items,omitempty\"`\n\t// Unique specifies that all elements in this field must be unique. This\n\t// constraint is only applicable to scalar and enum types (messages are not\n\t// supported).\n\tUnique *bool `protobuf:\"varint,3,opt,name=unique\" json:\"unique,omitempty\"`\n\t// Items specifies the constraints to be applied to each item in the field.\n\t// Repeated message fields will still execute validation against each item\n\t// unless skip is specified here.\n\tItems *FieldRules `protobuf:\"bytes,4,opt,name=items\" json:\"items,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,5,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *RepeatedRules) Reset() {\n\t*x = RepeatedRules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[18]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RepeatedRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RepeatedRules) ProtoMessage() {}\n\nfunc (x *RepeatedRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[18]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RepeatedRules.ProtoReflect.Descriptor instead.\nfunc (*RepeatedRules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{18}\n}\n\nfunc (x *RepeatedRules) GetMinItems() uint64 {\n\tif x != nil && x.MinItems != nil {\n\t\treturn *x.MinItems\n\t}\n\treturn 0\n}\n\nfunc (x *RepeatedRules) GetMaxItems() uint64 {\n\tif x != nil && x.MaxItems != nil {\n\t\treturn *x.MaxItems\n\t}\n\treturn 0\n}\n\nfunc (x *RepeatedRules) GetUnique() bool {\n\tif x != nil && x.Unique != nil {\n\t\treturn *x.Unique\n\t}\n\treturn false\n}\n\nfunc (x *RepeatedRules) GetItems() *FieldRules {\n\tif x != nil {\n\t\treturn x.Items\n\t}\n\treturn nil\n}\n\nfunc (x *RepeatedRules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\n// MapRules describe the constraints applied to `map` values\ntype MapRules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// MinPairs specifies that this field must have the specified number of\n\t// KVs at a minimum\n\tMinPairs *uint64 `protobuf:\"varint,1,opt,name=min_pairs,json=minPairs\" json:\"min_pairs,omitempty\"`\n\t// MaxPairs specifies that this field must have the specified number of\n\t// KVs at a maximum\n\tMaxPairs *uint64 `protobuf:\"varint,2,opt,name=max_pairs,json=maxPairs\" json:\"max_pairs,omitempty\"`\n\t// NoSparse specifies values in this field cannot be unset. This only\n\t// applies to map's with message value types.\n\tNoSparse *bool `protobuf:\"varint,3,opt,name=no_sparse,json=noSparse\" json:\"no_sparse,omitempty\"`\n\t// Keys specifies the constraints to be applied to each key in the field.\n\tKeys *FieldRules `protobuf:\"bytes,4,opt,name=keys\" json:\"keys,omitempty\"`\n\t// Values specifies the constraints to be applied to the value of each key\n\t// in the field. Message values will still have their validations evaluated\n\t// unless skip is specified here.\n\tValues *FieldRules `protobuf:\"bytes,5,opt,name=values\" json:\"values,omitempty\"`\n\t// IgnoreEmpty specifies that the validation rules of this field should be\n\t// evaluated only if the field is not empty\n\tIgnoreEmpty *bool `protobuf:\"varint,6,opt,name=ignore_empty,json=ignoreEmpty\" json:\"ignore_empty,omitempty\"`\n}\n\nfunc (x *MapRules) Reset() {\n\t*x = MapRules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[19]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MapRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MapRules) ProtoMessage() {}\n\nfunc (x *MapRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[19]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MapRules.ProtoReflect.Descriptor instead.\nfunc (*MapRules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{19}\n}\n\nfunc (x *MapRules) GetMinPairs() uint64 {\n\tif x != nil && x.MinPairs != nil {\n\t\treturn *x.MinPairs\n\t}\n\treturn 0\n}\n\nfunc (x *MapRules) GetMaxPairs() uint64 {\n\tif x != nil && x.MaxPairs != nil {\n\t\treturn *x.MaxPairs\n\t}\n\treturn 0\n}\n\nfunc (x *MapRules) GetNoSparse() bool {\n\tif x != nil && x.NoSparse != nil {\n\t\treturn *x.NoSparse\n\t}\n\treturn false\n}\n\nfunc (x *MapRules) GetKeys() *FieldRules {\n\tif x != nil {\n\t\treturn x.Keys\n\t}\n\treturn nil\n}\n\nfunc (x *MapRules) GetValues() *FieldRules {\n\tif x != nil {\n\t\treturn x.Values\n\t}\n\treturn nil\n}\n\nfunc (x *MapRules) GetIgnoreEmpty() bool {\n\tif x != nil && x.IgnoreEmpty != nil {\n\t\treturn *x.IgnoreEmpty\n\t}\n\treturn false\n}\n\n// AnyRules describe constraints applied exclusively to the\n// `google.protobuf.Any` well-known type\ntype AnyRules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Required specifies that this field must be set\n\tRequired *bool `protobuf:\"varint,1,opt,name=required\" json:\"required,omitempty\"`\n\t// In specifies that this field's `type_url` must be equal to one of the\n\t// specified values.\n\tIn []string `protobuf:\"bytes,2,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field's `type_url` must not be equal to any of\n\t// the specified values.\n\tNotIn []string `protobuf:\"bytes,3,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n}\n\nfunc (x *AnyRules) Reset() {\n\t*x = AnyRules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[20]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *AnyRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AnyRules) ProtoMessage() {}\n\nfunc (x *AnyRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[20]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use AnyRules.ProtoReflect.Descriptor instead.\nfunc (*AnyRules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{20}\n}\n\nfunc (x *AnyRules) GetRequired() bool {\n\tif x != nil && x.Required != nil {\n\t\treturn *x.Required\n\t}\n\treturn false\n}\n\nfunc (x *AnyRules) GetIn() []string {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *AnyRules) GetNotIn() []string {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\n// DurationRules describe the constraints applied exclusively to the\n// `google.protobuf.Duration` well-known type\ntype DurationRules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Required specifies that this field must be set\n\tRequired *bool `protobuf:\"varint,1,opt,name=required\" json:\"required,omitempty\"`\n\t// Const specifies that this field must be exactly the specified value\n\tConst *durationpb.Duration `protobuf:\"bytes,2,opt,name=const\" json:\"const,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// exclusive\n\tLt *durationpb.Duration `protobuf:\"bytes,3,opt,name=lt\" json:\"lt,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// inclusive\n\tLte *durationpb.Duration `protobuf:\"bytes,4,opt,name=lte\" json:\"lte,omitempty\"`\n\t// Gt specifies that this field must be greater than the specified value,\n\t// exclusive\n\tGt *durationpb.Duration `protobuf:\"bytes,5,opt,name=gt\" json:\"gt,omitempty\"`\n\t// Gte specifies that this field must be greater than the specified value,\n\t// inclusive\n\tGte *durationpb.Duration `protobuf:\"bytes,6,opt,name=gte\" json:\"gte,omitempty\"`\n\t// In specifies that this field must be equal to one of the specified\n\t// values\n\tIn []*durationpb.Duration `protobuf:\"bytes,7,rep,name=in\" json:\"in,omitempty\"`\n\t// NotIn specifies that this field cannot be equal to one of the specified\n\t// values\n\tNotIn []*durationpb.Duration `protobuf:\"bytes,8,rep,name=not_in,json=notIn\" json:\"not_in,omitempty\"`\n}\n\nfunc (x *DurationRules) Reset() {\n\t*x = DurationRules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[21]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DurationRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DurationRules) ProtoMessage() {}\n\nfunc (x *DurationRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[21]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DurationRules.ProtoReflect.Descriptor instead.\nfunc (*DurationRules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{21}\n}\n\nfunc (x *DurationRules) GetRequired() bool {\n\tif x != nil && x.Required != nil {\n\t\treturn *x.Required\n\t}\n\treturn false\n}\n\nfunc (x *DurationRules) GetConst() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Const\n\t}\n\treturn nil\n}\n\nfunc (x *DurationRules) GetLt() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Lt\n\t}\n\treturn nil\n}\n\nfunc (x *DurationRules) GetLte() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Lte\n\t}\n\treturn nil\n}\n\nfunc (x *DurationRules) GetGt() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Gt\n\t}\n\treturn nil\n}\n\nfunc (x *DurationRules) GetGte() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Gte\n\t}\n\treturn nil\n}\n\nfunc (x *DurationRules) GetIn() []*durationpb.Duration {\n\tif x != nil {\n\t\treturn x.In\n\t}\n\treturn nil\n}\n\nfunc (x *DurationRules) GetNotIn() []*durationpb.Duration {\n\tif x != nil {\n\t\treturn x.NotIn\n\t}\n\treturn nil\n}\n\n// TimestampRules describe the constraints applied exclusively to the\n// `google.protobuf.Timestamp` well-known type\ntype TimestampRules struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Required specifies that this field must be set\n\tRequired *bool `protobuf:\"varint,1,opt,name=required\" json:\"required,omitempty\"`\n\t// Const specifies that this field must be exactly the specified value\n\tConst *timestamppb.Timestamp `protobuf:\"bytes,2,opt,name=const\" json:\"const,omitempty\"`\n\t// Lt specifies that this field must be less than the specified value,\n\t// exclusive\n\tLt *timestamppb.Timestamp `protobuf:\"bytes,3,opt,name=lt\" json:\"lt,omitempty\"`\n\t// Lte specifies that this field must be less than the specified value,\n\t// inclusive\n\tLte *timestamppb.Timestamp `protobuf:\"bytes,4,opt,name=lte\" json:\"lte,omitempty\"`\n\t// Gt specifies that this field must be greater than the specified value,\n\t// exclusive\n\tGt *timestamppb.Timestamp `protobuf:\"bytes,5,opt,name=gt\" json:\"gt,omitempty\"`\n\t// Gte specifies that this field must be greater than the specified value,\n\t// inclusive\n\tGte *timestamppb.Timestamp `protobuf:\"bytes,6,opt,name=gte\" json:\"gte,omitempty\"`\n\t// LtNow specifies that this must be less than the current time. LtNow\n\t// can only be used with the Within rule.\n\tLtNow *bool `protobuf:\"varint,7,opt,name=lt_now,json=ltNow\" json:\"lt_now,omitempty\"`\n\t// GtNow specifies that this must be greater than the current time. GtNow\n\t// can only be used with the Within rule.\n\tGtNow *bool `protobuf:\"varint,8,opt,name=gt_now,json=gtNow\" json:\"gt_now,omitempty\"`\n\t// Within specifies that this field must be within this duration of the\n\t// current time. This constraint can be used alone or with the LtNow and\n\t// GtNow rules.\n\tWithin *durationpb.Duration `protobuf:\"bytes,9,opt,name=within\" json:\"within,omitempty\"`\n}\n\nfunc (x *TimestampRules) Reset() {\n\t*x = TimestampRules{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_validate_validate_proto_msgTypes[22]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *TimestampRules) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*TimestampRules) ProtoMessage() {}\n\nfunc (x *TimestampRules) ProtoReflect() protoreflect.Message {\n\tmi := &file_validate_validate_proto_msgTypes[22]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use TimestampRules.ProtoReflect.Descriptor instead.\nfunc (*TimestampRules) Descriptor() ([]byte, []int) {\n\treturn file_validate_validate_proto_rawDescGZIP(), []int{22}\n}\n\nfunc (x *TimestampRules) GetRequired() bool {\n\tif x != nil && x.Required != nil {\n\t\treturn *x.Required\n\t}\n\treturn false\n}\n\nfunc (x *TimestampRules) GetConst() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.Const\n\t}\n\treturn nil\n}\n\nfunc (x *TimestampRules) GetLt() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.Lt\n\t}\n\treturn nil\n}\n\nfunc (x *TimestampRules) GetLte() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.Lte\n\t}\n\treturn nil\n}\n\nfunc (x *TimestampRules) GetGt() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.Gt\n\t}\n\treturn nil\n}\n\nfunc (x *TimestampRules) GetGte() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.Gte\n\t}\n\treturn nil\n}\n\nfunc (x *TimestampRules) GetLtNow() bool {\n\tif x != nil && x.LtNow != nil {\n\t\treturn *x.LtNow\n\t}\n\treturn false\n}\n\nfunc (x *TimestampRules) GetGtNow() bool {\n\tif x != nil && x.GtNow != nil {\n\t\treturn *x.GtNow\n\t}\n\treturn false\n}\n\nfunc (x *TimestampRules) GetWithin() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Within\n\t}\n\treturn nil\n}\n\nvar file_validate_validate_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.MessageOptions)(nil),\n\t\tExtensionType: (*bool)(nil),\n\t\tField:         1071,\n\t\tName:          \"validate.disabled\",\n\t\tTag:           \"varint,1071,opt,name=disabled\",\n\t\tFilename:      \"validate/validate.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.MessageOptions)(nil),\n\t\tExtensionType: (*bool)(nil),\n\t\tField:         1072,\n\t\tName:          \"validate.ignored\",\n\t\tTag:           \"varint,1072,opt,name=ignored\",\n\t\tFilename:      \"validate/validate.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.OneofOptions)(nil),\n\t\tExtensionType: (*bool)(nil),\n\t\tField:         1071,\n\t\tName:          \"validate.required\",\n\t\tTag:           \"varint,1071,opt,name=required\",\n\t\tFilename:      \"validate/validate.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: (*FieldRules)(nil),\n\t\tField:         1071,\n\t\tName:          \"validate.rules\",\n\t\tTag:           \"bytes,1071,opt,name=rules\",\n\t\tFilename:      \"validate/validate.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.MessageOptions.\nvar (\n\t// Disabled nullifies any validation rules for this message, including any\n\t// message fields associated with it that do support validation.\n\t//\n\t// optional bool disabled = 1071;\n\tE_Disabled = &file_validate_validate_proto_extTypes[0]\n\t// Ignore skips generation of validation methods for this message.\n\t//\n\t// optional bool ignored = 1072;\n\tE_Ignored = &file_validate_validate_proto_extTypes[1]\n)\n\n// Extension fields to descriptorpb.OneofOptions.\nvar (\n\t// Required ensures that exactly one the field options in a oneof is set;\n\t// validation fails if no fields in the oneof are set.\n\t//\n\t// optional bool required = 1071;\n\tE_Required = &file_validate_validate_proto_extTypes[2]\n)\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// Rules specify the validations to be performed on this field. By default,\n\t// no validation is performed against a field.\n\t//\n\t// optional validate.FieldRules rules = 1071;\n\tE_Rules = &file_validate_validate_proto_extTypes[3]\n)\n\nvar File_validate_validate_proto protoreflect.FileDescriptor\n\nvar file_validate_validate_proto_rawDesc = []byte{\n\t0x0a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64,\n\t0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64,\n\t0x61, 0x74, 0x65, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc8, 0x08, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64,\n\t0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,\n\t0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,\n\t0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x07,\n\t0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,\n\t0x65, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x05,\n\t0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18,\n\t0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,\n\t0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x06,\n\t0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,\n\t0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,\n\t0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x05, 0x69,\n\t0x6e, 0x74, 0x33, 0x32, 0x12, 0x2c, 0x0a, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x04, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x49,\n\t0x6e, 0x74, 0x36, 0x34, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x74,\n\t0x36, 0x34, 0x12, 0x2f, 0x0a, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x05, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x55, 0x49,\n\t0x6e, 0x74, 0x33, 0x32, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x06, 0x75, 0x69, 0x6e,\n\t0x74, 0x33, 0x32, 0x12, 0x2f, 0x0a, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x55,\n\t0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x06, 0x75, 0x69,\n\t0x6e, 0x74, 0x36, 0x34, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x07,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e,\n\t0x53, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x06, 0x73,\n\t0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,\n\t0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,\n\t0x2e, 0x53, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x06,\n\t0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x32, 0x0a, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,\n\t0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,\n\t0x74, 0x65, 0x2e, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48,\n\t0x00, 0x52, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x32, 0x0a, 0x07, 0x66, 0x69,\n\t0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x61,\n\t0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x52, 0x75,\n\t0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x07, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x35,\n\t0x0a, 0x08, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x17, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x46, 0x69, 0x78,\n\t0x65, 0x64, 0x33, 0x32, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x08, 0x73, 0x66, 0x69,\n\t0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x35, 0x0a, 0x08, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,\n\t0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,\n\t0x74, 0x65, 0x2e, 0x53, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x52, 0x75, 0x6c, 0x65, 0x73,\n\t0x48, 0x00, 0x52, 0x08, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x04,\n\t0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x61, 0x6c,\n\t0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48,\n\t0x00, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e,\n\t0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,\n\t0x74, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00,\n\t0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2c, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65,\n\t0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,\n\t0x74, 0x65, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52,\n\t0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x10,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e,\n\t0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75,\n\t0x6d, 0x12, 0x35, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x12, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x52,\n\t0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x08,\n\t0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18,\n\t0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,\n\t0x2e, 0x4d, 0x61, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70,\n\t0x12, 0x26, 0x0a, 0x03, 0x61, 0x6e, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,\n\t0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x75, 0x6c, 0x65,\n\t0x73, 0x48, 0x00, 0x52, 0x03, 0x61, 0x6e, 0x79, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x61, 0x6c,\n\t0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75,\n\t0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,\n\t0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x16, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x69,\n\t0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x09,\n\t0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70,\n\t0x65, 0x22, 0xb0, 0x01, 0x0a, 0x0a, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x73,\n\t0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52,\n\t0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x02, 0x52, 0x02, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18, 0x03, 0x20,\n\t0x01, 0x28, 0x02, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x04,\n\t0x20, 0x01, 0x28, 0x02, 0x52, 0x02, 0x67, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18,\n\t0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x67, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e,\n\t0x18, 0x06, 0x20, 0x03, 0x28, 0x02, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x6f,\n\t0x74, 0x5f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x02, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x49,\n\t0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74,\n\t0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45,\n\t0x6d, 0x70, 0x74, 0x79, 0x22, 0xb1, 0x01, 0x0a, 0x0b, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x52,\n\t0x75, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x01, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x74,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x02, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x74,\n\t0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02,\n\t0x67, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x02, 0x67, 0x74, 0x12, 0x10, 0x0a, 0x03,\n\t0x67, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x67, 0x74, 0x65, 0x12, 0x0e,\n\t0x0a, 0x02, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x01, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x15,\n\t0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x01, 0x52, 0x05,\n\t0x6e, 0x6f, 0x74, 0x49, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f,\n\t0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x67, 0x6e,\n\t0x6f, 0x72, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xb0, 0x01, 0x0a, 0x0a, 0x49, 0x6e, 0x74,\n\t0x33, 0x32, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x12, 0x0e, 0x0a,\n\t0x02, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x74, 0x12, 0x10, 0x0a,\n\t0x03, 0x6c, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x12,\n\t0x0e, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x67, 0x74, 0x12,\n\t0x10, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x67, 0x74,\n\t0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x02, 0x69,\n\t0x6e, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28,\n\t0x05, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x49, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x67, 0x6e, 0x6f,\n\t0x72, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b,\n\t0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xb0, 0x01, 0x0a, 0x0a,\n\t0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f,\n\t0x6e, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74,\n\t0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x6c, 0x74,\n\t0x12, 0x10, 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6c,\n\t0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02,\n\t0x67, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,\n\t0x03, 0x67, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x03,\n\t0x52, 0x02, 0x69, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x07,\n\t0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x49, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69,\n\t0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28,\n\t0x08, 0x52, 0x0b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xb1,\n\t0x01, 0x0a, 0x0b, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x14,\n\t0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63,\n\t0x6f, 0x6e, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d,\n\t0x52, 0x02, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,\n\t0x0d, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x04, 0x20, 0x01,\n\t0x28, 0x0d, 0x52, 0x02, 0x67, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x05, 0x20,\n\t0x01, 0x28, 0x0d, 0x52, 0x03, 0x67, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x06,\n\t0x20, 0x03, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x5f,\n\t0x69, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x49, 0x6e, 0x12,\n\t0x21, 0x0a, 0x0c, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18,\n\t0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45, 0x6d, 0x70,\n\t0x74, 0x79, 0x22, 0xb1, 0x01, 0x0a, 0x0b, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x75, 0x6c,\n\t0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x04, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18,\n\t0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x67, 0x74,\n\t0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x67, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x74,\n\t0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x67, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02,\n\t0x69, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x15, 0x0a, 0x06,\n\t0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f,\n\t0x74, 0x49, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x6d,\n\t0x70, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x67, 0x6e, 0x6f, 0x72,\n\t0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xb1, 0x01, 0x0a, 0x0b, 0x53, 0x49, 0x6e, 0x74, 0x33,\n\t0x32, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02,\n\t0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x02, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03,\n\t0x6c, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x12, 0x0e,\n\t0x0a, 0x02, 0x67, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x02, 0x67, 0x74, 0x12, 0x10,\n\t0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x03, 0x67, 0x74, 0x65,\n\t0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x11, 0x52, 0x02, 0x69, 0x6e,\n\t0x12, 0x15, 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x11,\n\t0x52, 0x05, 0x6e, 0x6f, 0x74, 0x49, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x67, 0x6e, 0x6f, 0x72,\n\t0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69,\n\t0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xb1, 0x01, 0x0a, 0x0b, 0x53,\n\t0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f,\n\t0x6e, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74,\n\t0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x02, 0x6c, 0x74,\n\t0x12, 0x10, 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x03, 0x6c,\n\t0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x02,\n\t0x67, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x12, 0x52,\n\t0x03, 0x67, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x12,\n\t0x52, 0x02, 0x69, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x07,\n\t0x20, 0x03, 0x28, 0x12, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x49, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69,\n\t0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28,\n\t0x08, 0x52, 0x0b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xb2,\n\t0x01, 0x0a, 0x0c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12,\n\t0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05,\n\t0x63, 0x6f, 0x6e, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x07, 0x52, 0x02, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01,\n\t0x28, 0x07, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x04, 0x20,\n\t0x01, 0x28, 0x07, 0x52, 0x02, 0x67, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x05,\n\t0x20, 0x01, 0x28, 0x07, 0x52, 0x03, 0x67, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18,\n\t0x06, 0x20, 0x03, 0x28, 0x07, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x6f, 0x74,\n\t0x5f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x07, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x49, 0x6e,\n\t0x12, 0x21, 0x0a, 0x0c, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79,\n\t0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45, 0x6d,\n\t0x70, 0x74, 0x79, 0x22, 0xb2, 0x01, 0x0a, 0x0c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x52,\n\t0x75, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x06, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x74,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x06, 0x52, 0x02, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x74,\n\t0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x06, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02,\n\t0x67, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x06, 0x52, 0x02, 0x67, 0x74, 0x12, 0x10, 0x0a, 0x03,\n\t0x67, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x06, 0x52, 0x03, 0x67, 0x74, 0x65, 0x12, 0x0e,\n\t0x0a, 0x02, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x06, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x15,\n\t0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x06, 0x52, 0x05,\n\t0x6e, 0x6f, 0x74, 0x49, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f,\n\t0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x67, 0x6e,\n\t0x6f, 0x72, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xb3, 0x01, 0x0a, 0x0d, 0x53, 0x46, 0x69,\n\t0x78, 0x65, 0x64, 0x33, 0x32, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f,\n\t0x6e, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74,\n\t0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x02, 0x6c, 0x74,\n\t0x12, 0x10, 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x03, 0x6c,\n\t0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x02,\n\t0x67, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0f, 0x52,\n\t0x03, 0x67, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0f,\n\t0x52, 0x02, 0x69, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x07,\n\t0x20, 0x03, 0x28, 0x0f, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x49, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69,\n\t0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28,\n\t0x08, 0x52, 0x0b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xb3,\n\t0x01, 0x0a, 0x0d, 0x53, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x52, 0x75, 0x6c, 0x65, 0x73,\n\t0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x10, 0x52,\n\t0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x10, 0x52, 0x02, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18, 0x03, 0x20,\n\t0x01, 0x28, 0x10, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x04,\n\t0x20, 0x01, 0x28, 0x10, 0x52, 0x02, 0x67, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18,\n\t0x05, 0x20, 0x01, 0x28, 0x10, 0x52, 0x03, 0x67, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e,\n\t0x18, 0x06, 0x20, 0x03, 0x28, 0x10, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x6f,\n\t0x74, 0x5f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x10, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x49,\n\t0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74,\n\t0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45,\n\t0x6d, 0x70, 0x74, 0x79, 0x22, 0x21, 0x0a, 0x09, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x75, 0x6c, 0x65,\n\t0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,\n\t0x52, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x22, 0xd4, 0x05, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69,\n\t0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x12, 0x10, 0x0a,\n\t0x03, 0x6c, 0x65, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6c, 0x65, 0x6e, 0x12,\n\t0x17, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,\n\t0x52, 0x06, 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f,\n\t0x6c, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x4c, 0x65,\n\t0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x14,\n\t0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6c, 0x65, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1b,\n\t0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,\n\t0x04, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d,\n\t0x61, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08,\n\t0x6d, 0x61, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74,\n\t0x65, 0x72, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65,\n\t0x72, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x07, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75,\n\t0x66, 0x66, 0x69, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x66, 0x66,\n\t0x69, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x09,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x21,\n\t0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x17,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,\n\t0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x02, 0x69,\n\t0x6e, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28,\n\t0x09, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x49, 0x6e, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69,\n\t0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c,\n\t0x12, 0x1c, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01,\n\t0x28, 0x08, 0x48, 0x00, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10,\n\t0x0a, 0x02, 0x69, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x02, 0x69, 0x70,\n\t0x12, 0x14, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00,\n\t0x52, 0x04, 0x69, 0x70, 0x76, 0x34, 0x12, 0x14, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x36, 0x18, 0x10,\n\t0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x69, 0x70, 0x76, 0x36, 0x12, 0x12, 0x0a, 0x03,\n\t0x75, 0x72, 0x69, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x69,\n\t0x12, 0x19, 0x0a, 0x07, 0x75, 0x72, 0x69, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x12, 0x20, 0x01, 0x28,\n\t0x08, 0x48, 0x00, 0x52, 0x06, 0x75, 0x72, 0x69, 0x52, 0x65, 0x66, 0x12, 0x1a, 0x0a, 0x07, 0x61,\n\t0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07,\n\t0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18,\n\t0x16, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x40, 0x0a,\n\t0x10, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x72, 0x65, 0x67, 0x65,\n\t0x78, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,\n\t0x74, 0x65, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x48, 0x00, 0x52,\n\t0x0e, 0x77, 0x65, 0x6c, 0x6c, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12,\n\t0x1c, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x3a,\n\t0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x12, 0x21, 0x0a,\n\t0x0c, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x1a, 0x20,\n\t0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79,\n\t0x42, 0x0c, 0x0a, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x22, 0xe2,\n\t0x02, 0x0a, 0x0a, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a,\n\t0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x63, 0x6f,\n\t0x6e, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x65, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04,\n\t0x52, 0x03, 0x6c, 0x65, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x12, 0x17,\n\t0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,\n\t0x06, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65,\n\t0x72, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,\n\t0x6e, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28,\n\t0x0c, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x66,\n\t0x66, 0x69, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x75, 0x66, 0x66, 0x69,\n\t0x78, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20,\n\t0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x0e, 0x0a,\n\t0x02, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x15, 0x0a,\n\t0x06, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x05, 0x6e,\n\t0x6f, 0x74, 0x49, 0x6e, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08,\n\t0x48, 0x00, 0x52, 0x02, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x18, 0x0b,\n\t0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x69, 0x70, 0x76, 0x34, 0x12, 0x14, 0x0a, 0x04,\n\t0x69, 0x70, 0x76, 0x36, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x69, 0x70,\n\t0x76, 0x36, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x6d, 0x70,\n\t0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65,\n\t0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x6b, 0x6e,\n\t0x6f, 0x77, 0x6e, 0x22, 0x6b, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x75, 0x6c, 0x65, 0x73,\n\t0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,\n\t0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65,\n\t0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x64, 0x65,\n\t0x66, 0x69, 0x6e, 0x65, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18,\n\t0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x6f, 0x74,\n\t0x5f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x49, 0x6e,\n\t0x22, 0x3e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73,\n\t0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04,\n\t0x73, 0x6b, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,\n\t0x22, 0xb0, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, 0x75, 0x6c,\n\t0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12,\n\t0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x04, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06,\n\t0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x6e,\n\t0x69, 0x71, 0x75, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x46,\n\t0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,\n\t0x12, 0x21, 0x0a, 0x0c, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79,\n\t0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45, 0x6d,\n\t0x70, 0x74, 0x79, 0x22, 0xdc, 0x01, 0x0a, 0x08, 0x4d, 0x61, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x73,\n\t0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x1b, 0x0a,\n\t0x09, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,\n\t0x52, 0x08, 0x6d, 0x61, 0x78, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f,\n\t0x5f, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e,\n\t0x6f, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18,\n\t0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,\n\t0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x04, 0x6b, 0x65, 0x79,\n\t0x73, 0x12, 0x2c, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x14, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x46, 0x69, 0x65,\n\t0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12,\n\t0x21, 0x0a, 0x0c, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18,\n\t0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x45, 0x6d, 0x70,\n\t0x74, 0x79, 0x22, 0x4d, 0x0a, 0x08, 0x41, 0x6e, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x1a,\n\t0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,\n\t0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e,\n\t0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x6f,\n\t0x74, 0x5f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x49,\n\t0x6e, 0x22, 0xe9, 0x02, 0x0a, 0x0d, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75,\n\t0x6c, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12,\n\t0x2f, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,\n\t0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74,\n\t0x12, 0x29, 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,\n\t0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x6c, 0x74, 0x12, 0x2b, 0x0a, 0x03, 0x6c,\n\t0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x05,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,\n\t0x02, 0x67, 0x74, 0x12, 0x2b, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x67, 0x74, 0x65,\n\t0x12, 0x29, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,\n\t0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x06, 0x6e,\n\t0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75,\n\t0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x49, 0x6e, 0x22, 0xf3, 0x02,\n\t0x0a, 0x0e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x73,\n\t0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x05,\n\t0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,\n\t0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x12, 0x2a,\n\t0x0a, 0x02, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,\n\t0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x02, 0x6c, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x6c, 0x74,\n\t0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,\n\t0x61, 0x6d, 0x70, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x05,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,\n\t0x52, 0x02, 0x67, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x67,\n\t0x74, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x74, 0x5f, 0x6e, 0x6f, 0x77, 0x18, 0x07, 0x20, 0x01,\n\t0x28, 0x08, 0x52, 0x05, 0x6c, 0x74, 0x4e, 0x6f, 0x77, 0x12, 0x15, 0x0a, 0x06, 0x67, 0x74, 0x5f,\n\t0x6e, 0x6f, 0x77, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x67, 0x74, 0x4e, 0x6f, 0x77,\n\t0x12, 0x31, 0x0a, 0x06, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x77, 0x69, 0x74,\n\t0x68, 0x69, 0x6e, 0x2a, 0x46, 0x0a, 0x0a, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x67, 0x65,\n\t0x78, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14,\n\t0x0a, 0x10, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x4e, 0x41,\n\t0x4d, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x48, 0x45, 0x41,\n\t0x44, 0x45, 0x52, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x02, 0x3a, 0x3c, 0x0a, 0x08, 0x64,\n\t0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,\n\t0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xaf, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52,\n\t0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x3a, 0x3a, 0x0a, 0x07, 0x69, 0x67, 0x6e,\n\t0x6f, 0x72, 0x65, 0x64, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb0, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x67,\n\t0x6e, 0x6f, 0x72, 0x65, 0x64, 0x3a, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,\n\t0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,\n\t0x18, 0xaf, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,\n\t0x64, 0x3a, 0x4a, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,\n\t0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xaf, 0x08, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x14, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x46, 0x69, 0x65, 0x6c,\n\t0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x42, 0x50, 0x0a,\n\t0x1a, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x70,\n\t0x67, 0x76, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5a, 0x32, 0x67, 0x69, 0x74,\n\t0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f,\n\t0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61,\n\t0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,\n}\n\nvar (\n\tfile_validate_validate_proto_rawDescOnce sync.Once\n\tfile_validate_validate_proto_rawDescData = file_validate_validate_proto_rawDesc\n)\n\nfunc file_validate_validate_proto_rawDescGZIP() []byte {\n\tfile_validate_validate_proto_rawDescOnce.Do(func() {\n\t\tfile_validate_validate_proto_rawDescData = protoimpl.X.CompressGZIP(file_validate_validate_proto_rawDescData)\n\t})\n\treturn file_validate_validate_proto_rawDescData\n}\n\nvar file_validate_validate_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_validate_validate_proto_msgTypes = make([]protoimpl.MessageInfo, 23)\nvar file_validate_validate_proto_goTypes = []interface{}{\n\t(KnownRegex)(0),                     // 0: validate.KnownRegex\n\t(*FieldRules)(nil),                  // 1: validate.FieldRules\n\t(*FloatRules)(nil),                  // 2: validate.FloatRules\n\t(*DoubleRules)(nil),                 // 3: validate.DoubleRules\n\t(*Int32Rules)(nil),                  // 4: validate.Int32Rules\n\t(*Int64Rules)(nil),                  // 5: validate.Int64Rules\n\t(*UInt32Rules)(nil),                 // 6: validate.UInt32Rules\n\t(*UInt64Rules)(nil),                 // 7: validate.UInt64Rules\n\t(*SInt32Rules)(nil),                 // 8: validate.SInt32Rules\n\t(*SInt64Rules)(nil),                 // 9: validate.SInt64Rules\n\t(*Fixed32Rules)(nil),                // 10: validate.Fixed32Rules\n\t(*Fixed64Rules)(nil),                // 11: validate.Fixed64Rules\n\t(*SFixed32Rules)(nil),               // 12: validate.SFixed32Rules\n\t(*SFixed64Rules)(nil),               // 13: validate.SFixed64Rules\n\t(*BoolRules)(nil),                   // 14: validate.BoolRules\n\t(*StringRules)(nil),                 // 15: validate.StringRules\n\t(*BytesRules)(nil),                  // 16: validate.BytesRules\n\t(*EnumRules)(nil),                   // 17: validate.EnumRules\n\t(*MessageRules)(nil),                // 18: validate.MessageRules\n\t(*RepeatedRules)(nil),               // 19: validate.RepeatedRules\n\t(*MapRules)(nil),                    // 20: validate.MapRules\n\t(*AnyRules)(nil),                    // 21: validate.AnyRules\n\t(*DurationRules)(nil),               // 22: validate.DurationRules\n\t(*TimestampRules)(nil),              // 23: validate.TimestampRules\n\t(*durationpb.Duration)(nil),         // 24: google.protobuf.Duration\n\t(*timestamppb.Timestamp)(nil),       // 25: google.protobuf.Timestamp\n\t(*descriptorpb.MessageOptions)(nil), // 26: google.protobuf.MessageOptions\n\t(*descriptorpb.OneofOptions)(nil),   // 27: google.protobuf.OneofOptions\n\t(*descriptorpb.FieldOptions)(nil),   // 28: google.protobuf.FieldOptions\n}\nvar file_validate_validate_proto_depIdxs = []int32{\n\t18, // 0: validate.FieldRules.message:type_name -> validate.MessageRules\n\t2,  // 1: validate.FieldRules.float:type_name -> validate.FloatRules\n\t3,  // 2: validate.FieldRules.double:type_name -> validate.DoubleRules\n\t4,  // 3: validate.FieldRules.int32:type_name -> validate.Int32Rules\n\t5,  // 4: validate.FieldRules.int64:type_name -> validate.Int64Rules\n\t6,  // 5: validate.FieldRules.uint32:type_name -> validate.UInt32Rules\n\t7,  // 6: validate.FieldRules.uint64:type_name -> validate.UInt64Rules\n\t8,  // 7: validate.FieldRules.sint32:type_name -> validate.SInt32Rules\n\t9,  // 8: validate.FieldRules.sint64:type_name -> validate.SInt64Rules\n\t10, // 9: validate.FieldRules.fixed32:type_name -> validate.Fixed32Rules\n\t11, // 10: validate.FieldRules.fixed64:type_name -> validate.Fixed64Rules\n\t12, // 11: validate.FieldRules.sfixed32:type_name -> validate.SFixed32Rules\n\t13, // 12: validate.FieldRules.sfixed64:type_name -> validate.SFixed64Rules\n\t14, // 13: validate.FieldRules.bool:type_name -> validate.BoolRules\n\t15, // 14: validate.FieldRules.string:type_name -> validate.StringRules\n\t16, // 15: validate.FieldRules.bytes:type_name -> validate.BytesRules\n\t17, // 16: validate.FieldRules.enum:type_name -> validate.EnumRules\n\t19, // 17: validate.FieldRules.repeated:type_name -> validate.RepeatedRules\n\t20, // 18: validate.FieldRules.map:type_name -> validate.MapRules\n\t21, // 19: validate.FieldRules.any:type_name -> validate.AnyRules\n\t22, // 20: validate.FieldRules.duration:type_name -> validate.DurationRules\n\t23, // 21: validate.FieldRules.timestamp:type_name -> validate.TimestampRules\n\t0,  // 22: validate.StringRules.well_known_regex:type_name -> validate.KnownRegex\n\t1,  // 23: validate.RepeatedRules.items:type_name -> validate.FieldRules\n\t1,  // 24: validate.MapRules.keys:type_name -> validate.FieldRules\n\t1,  // 25: validate.MapRules.values:type_name -> validate.FieldRules\n\t24, // 26: validate.DurationRules.const:type_name -> google.protobuf.Duration\n\t24, // 27: validate.DurationRules.lt:type_name -> google.protobuf.Duration\n\t24, // 28: validate.DurationRules.lte:type_name -> google.protobuf.Duration\n\t24, // 29: validate.DurationRules.gt:type_name -> google.protobuf.Duration\n\t24, // 30: validate.DurationRules.gte:type_name -> google.protobuf.Duration\n\t24, // 31: validate.DurationRules.in:type_name -> google.protobuf.Duration\n\t24, // 32: validate.DurationRules.not_in:type_name -> google.protobuf.Duration\n\t25, // 33: validate.TimestampRules.const:type_name -> google.protobuf.Timestamp\n\t25, // 34: validate.TimestampRules.lt:type_name -> google.protobuf.Timestamp\n\t25, // 35: validate.TimestampRules.lte:type_name -> google.protobuf.Timestamp\n\t25, // 36: validate.TimestampRules.gt:type_name -> google.protobuf.Timestamp\n\t25, // 37: validate.TimestampRules.gte:type_name -> google.protobuf.Timestamp\n\t24, // 38: validate.TimestampRules.within:type_name -> google.protobuf.Duration\n\t26, // 39: validate.disabled:extendee -> google.protobuf.MessageOptions\n\t26, // 40: validate.ignored:extendee -> google.protobuf.MessageOptions\n\t27, // 41: validate.required:extendee -> google.protobuf.OneofOptions\n\t28, // 42: validate.rules:extendee -> google.protobuf.FieldOptions\n\t1,  // 43: validate.rules:type_name -> validate.FieldRules\n\t44, // [44:44] is the sub-list for method output_type\n\t44, // [44:44] is the sub-list for method input_type\n\t43, // [43:44] is the sub-list for extension type_name\n\t39, // [39:43] is the sub-list for extension extendee\n\t0,  // [0:39] is the sub-list for field type_name\n}\n\nfunc init() { file_validate_validate_proto_init() }\nfunc file_validate_validate_proto_init() {\n\tif File_validate_validate_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_validate_validate_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FieldRules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FloatRules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DoubleRules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Int32Rules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Int64Rules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UInt32Rules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UInt64Rules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SInt32Rules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SInt64Rules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Fixed32Rules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Fixed64Rules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SFixed32Rules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SFixed64Rules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*BoolRules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*StringRules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*BytesRules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EnumRules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MessageRules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RepeatedRules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MapRules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*AnyRules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DurationRules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_validate_validate_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*TimestampRules); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tfile_validate_validate_proto_msgTypes[0].OneofWrappers = []interface{}{\n\t\t(*FieldRules_Float)(nil),\n\t\t(*FieldRules_Double)(nil),\n\t\t(*FieldRules_Int32)(nil),\n\t\t(*FieldRules_Int64)(nil),\n\t\t(*FieldRules_Uint32)(nil),\n\t\t(*FieldRules_Uint64)(nil),\n\t\t(*FieldRules_Sint32)(nil),\n\t\t(*FieldRules_Sint64)(nil),\n\t\t(*FieldRules_Fixed32)(nil),\n\t\t(*FieldRules_Fixed64)(nil),\n\t\t(*FieldRules_Sfixed32)(nil),\n\t\t(*FieldRules_Sfixed64)(nil),\n\t\t(*FieldRules_Bool)(nil),\n\t\t(*FieldRules_String_)(nil),\n\t\t(*FieldRules_Bytes)(nil),\n\t\t(*FieldRules_Enum)(nil),\n\t\t(*FieldRules_Repeated)(nil),\n\t\t(*FieldRules_Map)(nil),\n\t\t(*FieldRules_Any)(nil),\n\t\t(*FieldRules_Duration)(nil),\n\t\t(*FieldRules_Timestamp)(nil),\n\t}\n\tfile_validate_validate_proto_msgTypes[14].OneofWrappers = []interface{}{\n\t\t(*StringRules_Email)(nil),\n\t\t(*StringRules_Hostname)(nil),\n\t\t(*StringRules_Ip)(nil),\n\t\t(*StringRules_Ipv4)(nil),\n\t\t(*StringRules_Ipv6)(nil),\n\t\t(*StringRules_Uri)(nil),\n\t\t(*StringRules_UriRef)(nil),\n\t\t(*StringRules_Address)(nil),\n\t\t(*StringRules_Uuid)(nil),\n\t\t(*StringRules_WellKnownRegex)(nil),\n\t}\n\tfile_validate_validate_proto_msgTypes[15].OneofWrappers = []interface{}{\n\t\t(*BytesRules_Ip)(nil),\n\t\t(*BytesRules_Ipv4)(nil),\n\t\t(*BytesRules_Ipv6)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_validate_validate_proto_rawDesc,\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   23,\n\t\t\tNumExtensions: 4,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_validate_validate_proto_goTypes,\n\t\tDependencyIndexes: file_validate_validate_proto_depIdxs,\n\t\tEnumInfos:         file_validate_validate_proto_enumTypes,\n\t\tMessageInfos:      file_validate_validate_proto_msgTypes,\n\t\tExtensionInfos:    file_validate_validate_proto_extTypes,\n\t}.Build()\n\tFile_validate_validate_proto = out.File\n\tfile_validate_validate_proto_rawDesc = nil\n\tfile_validate_validate_proto_goTypes = nil\n\tfile_validate_validate_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/envoyproxy/protoc-gen-validate/validate/validate.proto",
    "content": "syntax = \"proto2\";\npackage validate;\n\noption go_package = \"github.com/envoyproxy/protoc-gen-validate/validate\";\noption java_package = \"io.envoyproxy.pgv.validate\";\n\nimport \"google/protobuf/descriptor.proto\";\nimport \"google/protobuf/duration.proto\";\nimport \"google/protobuf/timestamp.proto\";\n\n// Validation rules applied at the message level\nextend google.protobuf.MessageOptions {\n    // Disabled nullifies any validation rules for this message, including any\n    // message fields associated with it that do support validation.\n    optional bool disabled = 1071;\n    // Ignore skips generation of validation methods for this message.\n    optional bool ignored = 1072;\n}\n\n// Validation rules applied at the oneof level\nextend google.protobuf.OneofOptions {\n    // Required ensures that exactly one the field options in a oneof is set;\n    // validation fails if no fields in the oneof are set.\n    optional bool required = 1071;\n}\n\n// Validation rules applied at the field level\nextend google.protobuf.FieldOptions {\n    // Rules specify the validations to be performed on this field. By default,\n    // no validation is performed against a field.\n    optional FieldRules rules = 1071;\n}\n\n// FieldRules encapsulates the rules for each type of field. Depending on the\n// field, the correct set should be used to ensure proper validations.\nmessage FieldRules {\n    optional MessageRules message = 17;\n    oneof type {\n        // Scalar Field Types\n        FloatRules    float    = 1;\n        DoubleRules   double   = 2;\n        Int32Rules    int32    = 3;\n        Int64Rules    int64    = 4;\n        UInt32Rules   uint32   = 5;\n        UInt64Rules   uint64   = 6;\n        SInt32Rules   sint32   = 7;\n        SInt64Rules   sint64   = 8;\n        Fixed32Rules  fixed32  = 9;\n        Fixed64Rules  fixed64  = 10;\n        SFixed32Rules sfixed32 = 11;\n        SFixed64Rules sfixed64 = 12;\n        BoolRules     bool     = 13;\n        StringRules   string   = 14;\n        BytesRules    bytes    = 15;\n\n        // Complex Field Types\n        EnumRules     enum     = 16;\n        RepeatedRules repeated = 18;\n        MapRules      map      = 19;\n\n        // Well-Known Field Types\n        AnyRules       any       = 20;\n        DurationRules  duration  = 21;\n        TimestampRules timestamp = 22;\n    }\n}\n\n// FloatRules describes the constraints applied to `float` values\nmessage FloatRules {\n    // Const specifies that this field must be exactly the specified value\n    optional float const = 1;\n\n    // Lt specifies that this field must be less than the specified value,\n    // exclusive\n    optional float lt = 2;\n\n    // Lte specifies that this field must be less than or equal to the\n    // specified value, inclusive\n    optional float lte = 3;\n\n    // Gt specifies that this field must be greater than the specified value,\n    // exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n    // range is reversed.\n    optional float gt = 4;\n\n    // Gte specifies that this field must be greater than or equal to the\n    // specified value, inclusive. If the value of Gte is larger than a\n    // specified Lt or Lte, the range is reversed.\n    optional float gte = 5;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated float in = 6;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated float not_in = 7;\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 8;\n}\n\n// DoubleRules describes the constraints applied to `double` values\nmessage DoubleRules {\n    // Const specifies that this field must be exactly the specified value\n    optional double const = 1;\n\n    // Lt specifies that this field must be less than the specified value,\n    // exclusive\n    optional double lt = 2;\n\n    // Lte specifies that this field must be less than or equal to the\n    // specified value, inclusive\n    optional double lte = 3;\n\n    // Gt specifies that this field must be greater than the specified value,\n    // exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n    // range is reversed.\n    optional double gt = 4;\n\n    // Gte specifies that this field must be greater than or equal to the\n    // specified value, inclusive. If the value of Gte is larger than a\n    // specified Lt or Lte, the range is reversed.\n    optional double gte = 5;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated double in = 6;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated double not_in = 7;\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 8;\n}\n\n// Int32Rules describes the constraints applied to `int32` values\nmessage Int32Rules {\n    // Const specifies that this field must be exactly the specified value\n    optional int32 const = 1;\n\n    // Lt specifies that this field must be less than the specified value,\n    // exclusive\n    optional int32 lt = 2;\n\n    // Lte specifies that this field must be less than or equal to the\n    // specified value, inclusive\n    optional int32 lte = 3;\n\n    // Gt specifies that this field must be greater than the specified value,\n    // exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n    // range is reversed.\n    optional int32 gt = 4;\n\n    // Gte specifies that this field must be greater than or equal to the\n    // specified value, inclusive. If the value of Gte is larger than a\n    // specified Lt or Lte, the range is reversed.\n    optional int32 gte = 5;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated int32 in = 6;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated int32 not_in = 7;\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 8;\n}\n\n// Int64Rules describes the constraints applied to `int64` values\nmessage Int64Rules {\n    // Const specifies that this field must be exactly the specified value\n    optional int64 const = 1;\n\n    // Lt specifies that this field must be less than the specified value,\n    // exclusive\n    optional int64 lt = 2;\n\n    // Lte specifies that this field must be less than or equal to the\n    // specified value, inclusive\n    optional int64 lte = 3;\n\n    // Gt specifies that this field must be greater than the specified value,\n    // exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n    // range is reversed.\n    optional int64 gt = 4;\n\n    // Gte specifies that this field must be greater than or equal to the\n    // specified value, inclusive. If the value of Gte is larger than a\n    // specified Lt or Lte, the range is reversed.\n    optional int64 gte = 5;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated int64 in = 6;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated int64 not_in = 7;\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 8;\n}\n\n// UInt32Rules describes the constraints applied to `uint32` values\nmessage UInt32Rules {\n    // Const specifies that this field must be exactly the specified value\n    optional uint32 const = 1;\n\n    // Lt specifies that this field must be less than the specified value,\n    // exclusive\n    optional uint32 lt = 2;\n\n    // Lte specifies that this field must be less than or equal to the\n    // specified value, inclusive\n    optional uint32 lte = 3;\n\n    // Gt specifies that this field must be greater than the specified value,\n    // exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n    // range is reversed.\n    optional uint32 gt = 4;\n\n    // Gte specifies that this field must be greater than or equal to the\n    // specified value, inclusive. If the value of Gte is larger than a\n    // specified Lt or Lte, the range is reversed.\n    optional uint32 gte = 5;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated uint32 in = 6;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated uint32 not_in = 7;\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 8;\n}\n\n// UInt64Rules describes the constraints applied to `uint64` values\nmessage UInt64Rules {\n    // Const specifies that this field must be exactly the specified value\n    optional uint64 const = 1;\n\n    // Lt specifies that this field must be less than the specified value,\n    // exclusive\n    optional uint64 lt = 2;\n\n    // Lte specifies that this field must be less than or equal to the\n    // specified value, inclusive\n    optional uint64 lte = 3;\n\n    // Gt specifies that this field must be greater than the specified value,\n    // exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n    // range is reversed.\n    optional uint64 gt = 4;\n\n    // Gte specifies that this field must be greater than or equal to the\n    // specified value, inclusive. If the value of Gte is larger than a\n    // specified Lt or Lte, the range is reversed.\n    optional uint64 gte = 5;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated uint64 in = 6;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated uint64 not_in = 7;\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 8;\n}\n\n// SInt32Rules describes the constraints applied to `sint32` values\nmessage SInt32Rules {\n    // Const specifies that this field must be exactly the specified value\n    optional sint32 const = 1;\n\n    // Lt specifies that this field must be less than the specified value,\n    // exclusive\n    optional sint32 lt = 2;\n\n    // Lte specifies that this field must be less than or equal to the\n    // specified value, inclusive\n    optional sint32 lte = 3;\n\n    // Gt specifies that this field must be greater than the specified value,\n    // exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n    // range is reversed.\n    optional sint32 gt = 4;\n\n    // Gte specifies that this field must be greater than or equal to the\n    // specified value, inclusive. If the value of Gte is larger than a\n    // specified Lt or Lte, the range is reversed.\n    optional sint32 gte = 5;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated sint32 in = 6;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated sint32 not_in = 7;\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 8;\n}\n\n// SInt64Rules describes the constraints applied to `sint64` values\nmessage SInt64Rules {\n    // Const specifies that this field must be exactly the specified value\n    optional sint64 const = 1;\n\n    // Lt specifies that this field must be less than the specified value,\n    // exclusive\n    optional sint64 lt = 2;\n\n    // Lte specifies that this field must be less than or equal to the\n    // specified value, inclusive\n    optional sint64 lte = 3;\n\n    // Gt specifies that this field must be greater than the specified value,\n    // exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n    // range is reversed.\n    optional sint64 gt = 4;\n\n    // Gte specifies that this field must be greater than or equal to the\n    // specified value, inclusive. If the value of Gte is larger than a\n    // specified Lt or Lte, the range is reversed.\n    optional sint64 gte = 5;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated sint64 in = 6;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated sint64 not_in = 7;\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 8;\n}\n\n// Fixed32Rules describes the constraints applied to `fixed32` values\nmessage Fixed32Rules {\n    // Const specifies that this field must be exactly the specified value\n    optional fixed32 const = 1;\n\n    // Lt specifies that this field must be less than the specified value,\n    // exclusive\n    optional fixed32 lt = 2;\n\n    // Lte specifies that this field must be less than or equal to the\n    // specified value, inclusive\n    optional fixed32 lte = 3;\n\n    // Gt specifies that this field must be greater than the specified value,\n    // exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n    // range is reversed.\n    optional fixed32 gt = 4;\n\n    // Gte specifies that this field must be greater than or equal to the\n    // specified value, inclusive. If the value of Gte is larger than a\n    // specified Lt or Lte, the range is reversed.\n    optional fixed32 gte = 5;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated fixed32 in = 6;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated fixed32 not_in = 7;\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 8;\n}\n\n// Fixed64Rules describes the constraints applied to `fixed64` values\nmessage Fixed64Rules {\n    // Const specifies that this field must be exactly the specified value\n    optional fixed64 const = 1;\n\n    // Lt specifies that this field must be less than the specified value,\n    // exclusive\n    optional fixed64 lt = 2;\n\n    // Lte specifies that this field must be less than or equal to the\n    // specified value, inclusive\n    optional fixed64 lte = 3;\n\n    // Gt specifies that this field must be greater than the specified value,\n    // exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n    // range is reversed.\n    optional fixed64 gt = 4;\n\n    // Gte specifies that this field must be greater than or equal to the\n    // specified value, inclusive. If the value of Gte is larger than a\n    // specified Lt or Lte, the range is reversed.\n    optional fixed64 gte = 5;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated fixed64 in = 6;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated fixed64 not_in = 7;\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 8;\n}\n\n// SFixed32Rules describes the constraints applied to `sfixed32` values\nmessage SFixed32Rules {\n    // Const specifies that this field must be exactly the specified value\n    optional sfixed32 const = 1;\n\n    // Lt specifies that this field must be less than the specified value,\n    // exclusive\n    optional sfixed32 lt = 2;\n\n    // Lte specifies that this field must be less than or equal to the\n    // specified value, inclusive\n    optional sfixed32 lte = 3;\n\n    // Gt specifies that this field must be greater than the specified value,\n    // exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n    // range is reversed.\n    optional sfixed32 gt = 4;\n\n    // Gte specifies that this field must be greater than or equal to the\n    // specified value, inclusive. If the value of Gte is larger than a\n    // specified Lt or Lte, the range is reversed.\n    optional sfixed32 gte = 5;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated sfixed32 in = 6;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated sfixed32 not_in = 7;\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 8;\n}\n\n// SFixed64Rules describes the constraints applied to `sfixed64` values\nmessage SFixed64Rules {\n    // Const specifies that this field must be exactly the specified value\n    optional sfixed64 const = 1;\n\n    // Lt specifies that this field must be less than the specified value,\n    // exclusive\n    optional sfixed64 lt = 2;\n\n    // Lte specifies that this field must be less than or equal to the\n    // specified value, inclusive\n    optional sfixed64 lte = 3;\n\n    // Gt specifies that this field must be greater than the specified value,\n    // exclusive. If the value of Gt is larger than a specified Lt or Lte, the\n    // range is reversed.\n    optional sfixed64 gt = 4;\n\n    // Gte specifies that this field must be greater than or equal to the\n    // specified value, inclusive. If the value of Gte is larger than a\n    // specified Lt or Lte, the range is reversed.\n    optional sfixed64 gte = 5;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated sfixed64 in = 6;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated sfixed64 not_in = 7;\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 8;\n}\n\n// BoolRules describes the constraints applied to `bool` values\nmessage BoolRules {\n    // Const specifies that this field must be exactly the specified value\n    optional bool const = 1;\n}\n\n// StringRules describe the constraints applied to `string` values\nmessage StringRules {\n    // Const specifies that this field must be exactly the specified value\n    optional string const = 1;\n\n    // Len specifies that this field must be the specified number of\n    // characters (Unicode code points). Note that the number of\n    // characters may differ from the number of bytes in the string.\n    optional uint64 len = 19;\n\n    // MinLen specifies that this field must be the specified number of\n    // characters (Unicode code points) at a minimum. Note that the number of\n    // characters may differ from the number of bytes in the string.\n    optional uint64 min_len = 2;\n\n    // MaxLen specifies that this field must be the specified number of\n    // characters (Unicode code points) at a maximum. Note that the number of\n    // characters may differ from the number of bytes in the string.\n    optional uint64 max_len = 3;\n\n    // LenBytes specifies that this field must be the specified number of bytes\n    optional uint64 len_bytes = 20;\n\n    // MinBytes specifies that this field must be the specified number of bytes\n    // at a minimum\n    optional uint64 min_bytes = 4;\n\n    // MaxBytes specifies that this field must be the specified number of bytes\n    // at a maximum\n    optional uint64 max_bytes = 5;\n\n    // Pattern specifies that this field must match against the specified\n    // regular expression (RE2 syntax). The included expression should elide\n    // any delimiters.\n    optional string pattern  = 6;\n\n    // Prefix specifies that this field must have the specified substring at\n    // the beginning of the string.\n    optional string prefix   = 7;\n\n    // Suffix specifies that this field must have the specified substring at\n    // the end of the string.\n    optional string suffix   = 8;\n\n    // Contains specifies that this field must have the specified substring\n    // anywhere in the string.\n    optional string contains = 9;\n\n    // NotContains specifies that this field cannot have the specified substring\n    // anywhere in the string.\n    optional string not_contains = 23;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated string in     = 10;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated string not_in = 11;\n\n    // WellKnown rules provide advanced constraints against common string\n    // patterns\n    oneof well_known {\n        // Email specifies that the field must be a valid email address as\n        // defined by RFC 5322\n        bool email    = 12;\n\n        // Hostname specifies that the field must be a valid hostname as\n        // defined by RFC 1034. This constraint does not support\n        // internationalized domain names (IDNs).\n        bool hostname = 13;\n\n        // Ip specifies that the field must be a valid IP (v4 or v6) address.\n        // Valid IPv6 addresses should not include surrounding square brackets.\n        bool ip       = 14;\n\n        // Ipv4 specifies that the field must be a valid IPv4 address.\n        bool ipv4     = 15;\n\n        // Ipv6 specifies that the field must be a valid IPv6 address. Valid\n        // IPv6 addresses should not include surrounding square brackets.\n        bool ipv6     = 16;\n\n        // Uri specifies that the field must be a valid, absolute URI as defined\n        // by RFC 3986\n        bool uri      = 17;\n\n        // UriRef specifies that the field must be a valid URI as defined by RFC\n        // 3986 and may be relative or absolute.\n        bool uri_ref  = 18;\n\n        // Address specifies that the field must be either a valid hostname as\n        // defined by RFC 1034 (which does not support internationalized domain\n        // names or IDNs), or it can be a valid IP (v4 or v6).\n        bool address  = 21;\n\n        // Uuid specifies that the field must be a valid UUID as defined by\n        // RFC 4122\n        bool uuid     = 22;\n\n        // WellKnownRegex specifies a common well known pattern defined as a regex.\n        KnownRegex well_known_regex = 24;\n    }\n\n  // This applies to regexes HTTP_HEADER_NAME and HTTP_HEADER_VALUE to enable\n  // strict header validation.\n  // By default, this is true, and HTTP header validations are RFC-compliant.\n  // Setting to false will enable a looser validations that only disallows\n  // \\r\\n\\0 characters, which can be used to bypass header matching rules.\n  optional bool strict = 25 [default = true];\n\n  // IgnoreEmpty specifies that the validation rules of this field should be\n  // evaluated only if the field is not empty\n  optional bool ignore_empty = 26;\n}\n\n// WellKnownRegex contain some well-known patterns.\nenum KnownRegex {\n  UNKNOWN = 0;\n\n  // HTTP header name as defined by RFC 7230.\n  HTTP_HEADER_NAME = 1;\n\n  // HTTP header value as defined by RFC 7230.\n  HTTP_HEADER_VALUE = 2;\n}\n\n// BytesRules describe the constraints applied to `bytes` values\nmessage BytesRules {\n    // Const specifies that this field must be exactly the specified value\n    optional bytes const = 1;\n\n    // Len specifies that this field must be the specified number of bytes\n    optional uint64 len = 13;\n\n    // MinLen specifies that this field must be the specified number of bytes\n    // at a minimum\n    optional uint64 min_len = 2;\n\n    // MaxLen specifies that this field must be the specified number of bytes\n    // at a maximum\n    optional uint64 max_len = 3;\n\n    // Pattern specifies that this field must match against the specified\n    // regular expression (RE2 syntax). The included expression should elide\n    // any delimiters.\n    optional string pattern  = 4;\n\n    // Prefix specifies that this field must have the specified bytes at the\n    // beginning of the string.\n    optional bytes  prefix   = 5;\n\n    // Suffix specifies that this field must have the specified bytes at the\n    // end of the string.\n    optional bytes  suffix   = 6;\n\n    // Contains specifies that this field must have the specified bytes\n    // anywhere in the string.\n    optional bytes  contains = 7;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated bytes in     = 8;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated bytes not_in = 9;\n\n    // WellKnown rules provide advanced constraints against common byte\n    // patterns\n    oneof well_known {\n        // Ip specifies that the field must be a valid IP (v4 or v6) address in\n        // byte format\n        bool ip   = 10;\n\n        // Ipv4 specifies that the field must be a valid IPv4 address in byte\n        // format\n        bool ipv4 = 11;\n\n        // Ipv6 specifies that the field must be a valid IPv6 address in byte\n        // format\n        bool ipv6 = 12;\n    }\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 14;\n}\n\n// EnumRules describe the constraints applied to enum values\nmessage EnumRules {\n    // Const specifies that this field must be exactly the specified value\n    optional int32 const        = 1;\n\n    // DefinedOnly specifies that this field must be only one of the defined\n    // values for this enum, failing on any undefined value.\n    optional bool  defined_only = 2;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated int32 in           = 3;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated int32 not_in       = 4;\n}\n\n// MessageRules describe the constraints applied to embedded message values.\n// For message-type fields, validation is performed recursively.\nmessage MessageRules {\n    // Skip specifies that the validation rules of this field should not be\n    // evaluated\n    optional bool skip     = 1;\n\n    // Required specifies that this field must be set\n    optional bool required = 2;\n}\n\n// RepeatedRules describe the constraints applied to `repeated` values\nmessage RepeatedRules {\n    // MinItems specifies that this field must have the specified number of\n    // items at a minimum\n    optional uint64 min_items = 1;\n\n    // MaxItems specifies that this field must have the specified number of\n    // items at a maximum\n    optional uint64 max_items = 2;\n\n    // Unique specifies that all elements in this field must be unique. This\n    // constraint is only applicable to scalar and enum types (messages are not\n    // supported).\n    optional bool   unique    = 3;\n\n    // Items specifies the constraints to be applied to each item in the field.\n    // Repeated message fields will still execute validation against each item\n    // unless skip is specified here.\n    optional FieldRules items = 4;\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 5;\n}\n\n// MapRules describe the constraints applied to `map` values\nmessage MapRules {\n    // MinPairs specifies that this field must have the specified number of\n    // KVs at a minimum\n    optional uint64 min_pairs = 1;\n\n    // MaxPairs specifies that this field must have the specified number of\n    // KVs at a maximum\n    optional uint64 max_pairs = 2;\n\n    // NoSparse specifies values in this field cannot be unset. This only\n    // applies to map's with message value types.\n    optional bool no_sparse = 3;\n\n    // Keys specifies the constraints to be applied to each key in the field.\n    optional FieldRules keys   = 4;\n\n    // Values specifies the constraints to be applied to the value of each key\n    // in the field. Message values will still have their validations evaluated\n    // unless skip is specified here.\n    optional FieldRules values = 5;\n\n    // IgnoreEmpty specifies that the validation rules of this field should be\n    // evaluated only if the field is not empty\n    optional bool ignore_empty = 6;\n}\n\n// AnyRules describe constraints applied exclusively to the\n// `google.protobuf.Any` well-known type\nmessage AnyRules {\n    // Required specifies that this field must be set\n    optional bool required = 1;\n\n    // In specifies that this field's `type_url` must be equal to one of the\n    // specified values.\n    repeated string in     = 2;\n\n    // NotIn specifies that this field's `type_url` must not be equal to any of\n    // the specified values.\n    repeated string not_in = 3;\n}\n\n// DurationRules describe the constraints applied exclusively to the\n// `google.protobuf.Duration` well-known type\nmessage DurationRules {\n    // Required specifies that this field must be set\n    optional bool required = 1;\n\n    // Const specifies that this field must be exactly the specified value\n    optional google.protobuf.Duration const = 2;\n\n    // Lt specifies that this field must be less than the specified value,\n    // exclusive\n    optional google.protobuf.Duration lt = 3;\n\n    // Lt specifies that this field must be less than the specified value,\n    // inclusive\n    optional google.protobuf.Duration lte = 4;\n\n    // Gt specifies that this field must be greater than the specified value,\n    // exclusive\n    optional google.protobuf.Duration gt = 5;\n\n    // Gte specifies that this field must be greater than the specified value,\n    // inclusive\n    optional google.protobuf.Duration gte = 6;\n\n    // In specifies that this field must be equal to one of the specified\n    // values\n    repeated google.protobuf.Duration in = 7;\n\n    // NotIn specifies that this field cannot be equal to one of the specified\n    // values\n    repeated google.protobuf.Duration not_in = 8;\n}\n\n// TimestampRules describe the constraints applied exclusively to the\n// `google.protobuf.Timestamp` well-known type\nmessage TimestampRules {\n    // Required specifies that this field must be set\n    optional bool required = 1;\n\n    // Const specifies that this field must be exactly the specified value\n    optional google.protobuf.Timestamp const = 2;\n\n    // Lt specifies that this field must be less than the specified value,\n    // exclusive\n    optional google.protobuf.Timestamp lt = 3;\n\n    // Lte specifies that this field must be less than the specified value,\n    // inclusive\n    optional google.protobuf.Timestamp lte = 4;\n\n    // Gt specifies that this field must be greater than the specified value,\n    // exclusive\n    optional google.protobuf.Timestamp gt = 5;\n\n    // Gte specifies that this field must be greater than the specified value,\n    // inclusive\n    optional google.protobuf.Timestamp gte = 6;\n\n    // LtNow specifies that this must be less than the current time. LtNow\n    // can only be used with the Within rule.\n    optional bool lt_now  = 7;\n\n    // GtNow specifies that this must be greater than the current time. GtNow\n    // can only be used with the Within rule.\n    optional bool gt_now  = 8;\n\n    // Within specifies that this field must be within this duration of the\n    // current time. This constraint can be used alone or with the LtNow and\n    // GtNow rules.\n    optional google.protobuf.Duration within = 9;\n}\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/.gitignore",
    "content": "cmd/snappytool/snappytool\ntestdata/bench\n\n# These explicitly listed benchmark data files are for an obsolete version of\n# snappy_test.go.\ntestdata/alice29.txt\ntestdata/asyoulik.txt\ntestdata/fireworks.jpeg\ntestdata/geo.protodata\ntestdata/html\ntestdata/html_x_4\ntestdata/kppkn.gtb\ntestdata/lcet10.txt\ntestdata/paper-100k.pdf\ntestdata/plrabn12.txt\ntestdata/urls.10K\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/AUTHORS",
    "content": "# This is the official list of Snappy-Go authors for copyright purposes.\n# This file is distinct from the CONTRIBUTORS files.\n# See the latter for an explanation.\n\n# Names should be added to this file as\n#\tName or Organization <email address>\n# The email address is not required for organizations.\n\n# Please keep the list sorted.\n\nAmazon.com, Inc\nDamian Gryski <dgryski@gmail.com>\nEric Buth <eric@topos.com>\nGoogle Inc.\nJan Mercl <0xjnml@gmail.com>\nKlaus Post <klauspost@gmail.com>\nRodolfo Carvalho <rhcarvalho@gmail.com>\nSebastien Binet <seb.binet@gmail.com>\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/CONTRIBUTORS",
    "content": "# This is the official list of people who can contribute\n# (and typically have contributed) code to the Snappy-Go repository.\n# The AUTHORS file lists the copyright holders; this file\n# lists people.  For example, Google employees are listed here\n# but not in AUTHORS, because Google holds the copyright.\n#\n# The submission process automatically checks to make sure\n# that people submitting code are listed in this file (by email address).\n#\n# Names should be added to this file only after verifying that\n# the individual or the individual's organization has agreed to\n# the appropriate Contributor License Agreement, found here:\n#\n#     http://code.google.com/legal/individual-cla-v1.0.html\n#     http://code.google.com/legal/corporate-cla-v1.0.html\n#\n# The agreement for individuals can be filled out on the web.\n#\n# When adding J Random Contributor's name to this file,\n# either J's name or J's organization's name should be\n# added to the AUTHORS file, depending on whether the\n# individual or corporate CLA was used.\n\n# Names should be added to this file like so:\n#     Name <email address>\n\n# Please keep the list sorted.\n\nAlex Legg <alexlegg@google.com>\nDamian Gryski <dgryski@gmail.com>\nEric Buth <eric@topos.com>\nJan Mercl <0xjnml@gmail.com>\nJonathan Swinney <jswinney@amazon.com>\nKai Backman <kaib@golang.org>\nKlaus Post <klauspost@gmail.com>\nMarc-Antoine Ruel <maruel@chromium.org>\nNigel Tao <nigeltao@golang.org>\nRob Pike <r@golang.org>\nRodolfo Carvalho <rhcarvalho@gmail.com>\nRuss Cox <rsc@golang.org>\nSebastien Binet <seb.binet@gmail.com>\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/LICENSE",
    "content": "Copyright (c) 2011 The Snappy-Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/README",
    "content": "The Snappy compression format in the Go programming language.\n\nTo download and install from source:\n$ go get github.com/golang/snappy\n\nUnless otherwise noted, the Snappy-Go source files are distributed\nunder the BSD-style license found in the LICENSE file.\n\n\n\nBenchmarks.\n\nThe golang/snappy benchmarks include compressing (Z) and decompressing (U) ten\nor so files, the same set used by the C++ Snappy code (github.com/google/snappy\nand note the \"google\", not \"golang\"). On an \"Intel(R) Core(TM) i7-3770 CPU @\n3.40GHz\", Go's GOARCH=amd64 numbers as of 2016-05-29:\n\n\"go test -test.bench=.\"\n\n_UFlat0-8         2.19GB/s ± 0%  html\n_UFlat1-8         1.41GB/s ± 0%  urls\n_UFlat2-8         23.5GB/s ± 2%  jpg\n_UFlat3-8         1.91GB/s ± 0%  jpg_200\n_UFlat4-8         14.0GB/s ± 1%  pdf\n_UFlat5-8         1.97GB/s ± 0%  html4\n_UFlat6-8          814MB/s ± 0%  txt1\n_UFlat7-8          785MB/s ± 0%  txt2\n_UFlat8-8          857MB/s ± 0%  txt3\n_UFlat9-8          719MB/s ± 1%  txt4\n_UFlat10-8        2.84GB/s ± 0%  pb\n_UFlat11-8        1.05GB/s ± 0%  gaviota\n\n_ZFlat0-8         1.04GB/s ± 0%  html\n_ZFlat1-8          534MB/s ± 0%  urls\n_ZFlat2-8         15.7GB/s ± 1%  jpg\n_ZFlat3-8          740MB/s ± 3%  jpg_200\n_ZFlat4-8         9.20GB/s ± 1%  pdf\n_ZFlat5-8          991MB/s ± 0%  html4\n_ZFlat6-8          379MB/s ± 0%  txt1\n_ZFlat7-8          352MB/s ± 0%  txt2\n_ZFlat8-8          396MB/s ± 1%  txt3\n_ZFlat9-8          327MB/s ± 1%  txt4\n_ZFlat10-8        1.33GB/s ± 1%  pb\n_ZFlat11-8         605MB/s ± 1%  gaviota\n\n\n\n\"go test -test.bench=. -tags=noasm\"\n\n_UFlat0-8          621MB/s ± 2%  html\n_UFlat1-8          494MB/s ± 1%  urls\n_UFlat2-8         23.2GB/s ± 1%  jpg\n_UFlat3-8         1.12GB/s ± 1%  jpg_200\n_UFlat4-8         4.35GB/s ± 1%  pdf\n_UFlat5-8          609MB/s ± 0%  html4\n_UFlat6-8          296MB/s ± 0%  txt1\n_UFlat7-8          288MB/s ± 0%  txt2\n_UFlat8-8          309MB/s ± 1%  txt3\n_UFlat9-8          280MB/s ± 1%  txt4\n_UFlat10-8         753MB/s ± 0%  pb\n_UFlat11-8         400MB/s ± 0%  gaviota\n\n_ZFlat0-8          409MB/s ± 1%  html\n_ZFlat1-8          250MB/s ± 1%  urls\n_ZFlat2-8         12.3GB/s ± 1%  jpg\n_ZFlat3-8          132MB/s ± 0%  jpg_200\n_ZFlat4-8         2.92GB/s ± 0%  pdf\n_ZFlat5-8          405MB/s ± 1%  html4\n_ZFlat6-8          179MB/s ± 1%  txt1\n_ZFlat7-8          170MB/s ± 1%  txt2\n_ZFlat8-8          189MB/s ± 1%  txt3\n_ZFlat9-8          164MB/s ± 1%  txt4\n_ZFlat10-8         479MB/s ± 1%  pb\n_ZFlat11-8         270MB/s ± 1%  gaviota\n\n\n\nFor comparison (Go's encoded output is byte-for-byte identical to C++'s), here\nare the numbers from C++ Snappy's\n\nmake CXXFLAGS=\"-O2 -DNDEBUG -g\" clean snappy_unittest.log && cat snappy_unittest.log\n\nBM_UFlat/0     2.4GB/s  html\nBM_UFlat/1     1.4GB/s  urls\nBM_UFlat/2    21.8GB/s  jpg\nBM_UFlat/3     1.5GB/s  jpg_200\nBM_UFlat/4    13.3GB/s  pdf\nBM_UFlat/5     2.1GB/s  html4\nBM_UFlat/6     1.0GB/s  txt1\nBM_UFlat/7   959.4MB/s  txt2\nBM_UFlat/8     1.0GB/s  txt3\nBM_UFlat/9   864.5MB/s  txt4\nBM_UFlat/10    2.9GB/s  pb\nBM_UFlat/11    1.2GB/s  gaviota\n\nBM_ZFlat/0   944.3MB/s  html (22.31 %)\nBM_ZFlat/1   501.6MB/s  urls (47.78 %)\nBM_ZFlat/2    14.3GB/s  jpg (99.95 %)\nBM_ZFlat/3   538.3MB/s  jpg_200 (73.00 %)\nBM_ZFlat/4     8.3GB/s  pdf (83.30 %)\nBM_ZFlat/5   903.5MB/s  html4 (22.52 %)\nBM_ZFlat/6   336.0MB/s  txt1 (57.88 %)\nBM_ZFlat/7   312.3MB/s  txt2 (61.91 %)\nBM_ZFlat/8   353.1MB/s  txt3 (54.99 %)\nBM_ZFlat/9   289.9MB/s  txt4 (66.26 %)\nBM_ZFlat/10    1.2GB/s  pb (19.68 %)\nBM_ZFlat/11  527.4MB/s  gaviota (37.72 %)\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/decode.go",
    "content": "// Copyright 2011 The Snappy-Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage snappy\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"io\"\n)\n\nvar (\n\t// ErrCorrupt reports that the input is invalid.\n\tErrCorrupt = errors.New(\"snappy: corrupt input\")\n\t// ErrTooLarge reports that the uncompressed length is too large.\n\tErrTooLarge = errors.New(\"snappy: decoded block is too large\")\n\t// ErrUnsupported reports that the input isn't supported.\n\tErrUnsupported = errors.New(\"snappy: unsupported input\")\n\n\terrUnsupportedLiteralLength = errors.New(\"snappy: unsupported literal length\")\n)\n\n// DecodedLen returns the length of the decoded block.\nfunc DecodedLen(src []byte) (int, error) {\n\tv, _, err := decodedLen(src)\n\treturn v, err\n}\n\n// decodedLen returns the length of the decoded block and the number of bytes\n// that the length header occupied.\nfunc decodedLen(src []byte) (blockLen, headerLen int, err error) {\n\tv, n := binary.Uvarint(src)\n\tif n <= 0 || v > 0xffffffff {\n\t\treturn 0, 0, ErrCorrupt\n\t}\n\n\tconst wordSize = 32 << (^uint(0) >> 32 & 1)\n\tif wordSize == 32 && v > 0x7fffffff {\n\t\treturn 0, 0, ErrTooLarge\n\t}\n\treturn int(v), n, nil\n}\n\nconst (\n\tdecodeErrCodeCorrupt                  = 1\n\tdecodeErrCodeUnsupportedLiteralLength = 2\n)\n\n// Decode returns the decoded form of src. The returned slice may be a sub-\n// slice of dst if dst was large enough to hold the entire decoded block.\n// Otherwise, a newly allocated slice will be returned.\n//\n// The dst and src must not overlap. It is valid to pass a nil dst.\n//\n// Decode handles the Snappy block format, not the Snappy stream format.\nfunc Decode(dst, src []byte) ([]byte, error) {\n\tdLen, s, err := decodedLen(src)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif dLen <= len(dst) {\n\t\tdst = dst[:dLen]\n\t} else {\n\t\tdst = make([]byte, dLen)\n\t}\n\tswitch decode(dst, src[s:]) {\n\tcase 0:\n\t\treturn dst, nil\n\tcase decodeErrCodeUnsupportedLiteralLength:\n\t\treturn nil, errUnsupportedLiteralLength\n\t}\n\treturn nil, ErrCorrupt\n}\n\n// NewReader returns a new Reader that decompresses from r, using the framing\n// format described at\n// https://github.com/google/snappy/blob/master/framing_format.txt\nfunc NewReader(r io.Reader) *Reader {\n\treturn &Reader{\n\t\tr:       r,\n\t\tdecoded: make([]byte, maxBlockSize),\n\t\tbuf:     make([]byte, maxEncodedLenOfMaxBlockSize+checksumSize),\n\t}\n}\n\n// Reader is an io.Reader that can read Snappy-compressed bytes.\n//\n// Reader handles the Snappy stream format, not the Snappy block format.\ntype Reader struct {\n\tr       io.Reader\n\terr     error\n\tdecoded []byte\n\tbuf     []byte\n\t// decoded[i:j] contains decoded bytes that have not yet been passed on.\n\ti, j       int\n\treadHeader bool\n}\n\n// Reset discards any buffered data, resets all state, and switches the Snappy\n// reader to read from r. This permits reusing a Reader rather than allocating\n// a new one.\nfunc (r *Reader) Reset(reader io.Reader) {\n\tr.r = reader\n\tr.err = nil\n\tr.i = 0\n\tr.j = 0\n\tr.readHeader = false\n}\n\nfunc (r *Reader) readFull(p []byte, allowEOF bool) (ok bool) {\n\tif _, r.err = io.ReadFull(r.r, p); r.err != nil {\n\t\tif r.err == io.ErrUnexpectedEOF || (r.err == io.EOF && !allowEOF) {\n\t\t\tr.err = ErrCorrupt\n\t\t}\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (r *Reader) fill() error {\n\tfor r.i >= r.j {\n\t\tif !r.readFull(r.buf[:4], true) {\n\t\t\treturn r.err\n\t\t}\n\t\tchunkType := r.buf[0]\n\t\tif !r.readHeader {\n\t\t\tif chunkType != chunkTypeStreamIdentifier {\n\t\t\t\tr.err = ErrCorrupt\n\t\t\t\treturn r.err\n\t\t\t}\n\t\t\tr.readHeader = true\n\t\t}\n\t\tchunkLen := int(r.buf[1]) | int(r.buf[2])<<8 | int(r.buf[3])<<16\n\t\tif chunkLen > len(r.buf) {\n\t\t\tr.err = ErrUnsupported\n\t\t\treturn r.err\n\t\t}\n\n\t\t// The chunk types are specified at\n\t\t// https://github.com/google/snappy/blob/master/framing_format.txt\n\t\tswitch chunkType {\n\t\tcase chunkTypeCompressedData:\n\t\t\t// Section 4.2. Compressed data (chunk type 0x00).\n\t\t\tif chunkLen < checksumSize {\n\t\t\t\tr.err = ErrCorrupt\n\t\t\t\treturn r.err\n\t\t\t}\n\t\t\tbuf := r.buf[:chunkLen]\n\t\t\tif !r.readFull(buf, false) {\n\t\t\t\treturn r.err\n\t\t\t}\n\t\t\tchecksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24\n\t\t\tbuf = buf[checksumSize:]\n\n\t\t\tn, err := DecodedLen(buf)\n\t\t\tif err != nil {\n\t\t\t\tr.err = err\n\t\t\t\treturn r.err\n\t\t\t}\n\t\t\tif n > len(r.decoded) {\n\t\t\t\tr.err = ErrCorrupt\n\t\t\t\treturn r.err\n\t\t\t}\n\t\t\tif _, err := Decode(r.decoded, buf); err != nil {\n\t\t\t\tr.err = err\n\t\t\t\treturn r.err\n\t\t\t}\n\t\t\tif crc(r.decoded[:n]) != checksum {\n\t\t\t\tr.err = ErrCorrupt\n\t\t\t\treturn r.err\n\t\t\t}\n\t\t\tr.i, r.j = 0, n\n\t\t\tcontinue\n\n\t\tcase chunkTypeUncompressedData:\n\t\t\t// Section 4.3. Uncompressed data (chunk type 0x01).\n\t\t\tif chunkLen < checksumSize {\n\t\t\t\tr.err = ErrCorrupt\n\t\t\t\treturn r.err\n\t\t\t}\n\t\t\tbuf := r.buf[:checksumSize]\n\t\t\tif !r.readFull(buf, false) {\n\t\t\t\treturn r.err\n\t\t\t}\n\t\t\tchecksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24\n\t\t\t// Read directly into r.decoded instead of via r.buf.\n\t\t\tn := chunkLen - checksumSize\n\t\t\tif n > len(r.decoded) {\n\t\t\t\tr.err = ErrCorrupt\n\t\t\t\treturn r.err\n\t\t\t}\n\t\t\tif !r.readFull(r.decoded[:n], false) {\n\t\t\t\treturn r.err\n\t\t\t}\n\t\t\tif crc(r.decoded[:n]) != checksum {\n\t\t\t\tr.err = ErrCorrupt\n\t\t\t\treturn r.err\n\t\t\t}\n\t\t\tr.i, r.j = 0, n\n\t\t\tcontinue\n\n\t\tcase chunkTypeStreamIdentifier:\n\t\t\t// Section 4.1. Stream identifier (chunk type 0xff).\n\t\t\tif chunkLen != len(magicBody) {\n\t\t\t\tr.err = ErrCorrupt\n\t\t\t\treturn r.err\n\t\t\t}\n\t\t\tif !r.readFull(r.buf[:len(magicBody)], false) {\n\t\t\t\treturn r.err\n\t\t\t}\n\t\t\tfor i := 0; i < len(magicBody); i++ {\n\t\t\t\tif r.buf[i] != magicBody[i] {\n\t\t\t\t\tr.err = ErrCorrupt\n\t\t\t\t\treturn r.err\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif chunkType <= 0x7f {\n\t\t\t// Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f).\n\t\t\tr.err = ErrUnsupported\n\t\t\treturn r.err\n\t\t}\n\t\t// Section 4.4 Padding (chunk type 0xfe).\n\t\t// Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd).\n\t\tif !r.readFull(r.buf[:chunkLen], false) {\n\t\t\treturn r.err\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// Read satisfies the io.Reader interface.\nfunc (r *Reader) Read(p []byte) (int, error) {\n\tif r.err != nil {\n\t\treturn 0, r.err\n\t}\n\n\tif err := r.fill(); err != nil {\n\t\treturn 0, err\n\t}\n\n\tn := copy(p, r.decoded[r.i:r.j])\n\tr.i += n\n\treturn n, nil\n}\n\n// ReadByte satisfies the io.ByteReader interface.\nfunc (r *Reader) ReadByte() (byte, error) {\n\tif r.err != nil {\n\t\treturn 0, r.err\n\t}\n\n\tif err := r.fill(); err != nil {\n\t\treturn 0, err\n\t}\n\n\tc := r.decoded[r.i]\n\tr.i++\n\treturn c, nil\n}\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/decode_amd64.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !appengine\n// +build gc\n// +build !noasm\n\n#include \"textflag.h\"\n\n// The asm code generally follows the pure Go code in decode_other.go, except\n// where marked with a \"!!!\".\n\n// func decode(dst, src []byte) int\n//\n// All local variables fit into registers. The non-zero stack size is only to\n// spill registers and push args when issuing a CALL. The register allocation:\n//\t- AX\tscratch\n//\t- BX\tscratch\n//\t- CX\tlength or x\n//\t- DX\toffset\n//\t- SI\t&src[s]\n//\t- DI\t&dst[d]\n//\t+ R8\tdst_base\n//\t+ R9\tdst_len\n//\t+ R10\tdst_base + dst_len\n//\t+ R11\tsrc_base\n//\t+ R12\tsrc_len\n//\t+ R13\tsrc_base + src_len\n//\t- R14\tused by doCopy\n//\t- R15\tused by doCopy\n//\n// The registers R8-R13 (marked with a \"+\") are set at the start of the\n// function, and after a CALL returns, and are not otherwise modified.\n//\n// The d variable is implicitly DI - R8,  and len(dst)-d is R10 - DI.\n// The s variable is implicitly SI - R11, and len(src)-s is R13 - SI.\nTEXT ·decode(SB), NOSPLIT, $48-56\n\t// Initialize SI, DI and R8-R13.\n\tMOVQ dst_base+0(FP), R8\n\tMOVQ dst_len+8(FP), R9\n\tMOVQ R8, DI\n\tMOVQ R8, R10\n\tADDQ R9, R10\n\tMOVQ src_base+24(FP), R11\n\tMOVQ src_len+32(FP), R12\n\tMOVQ R11, SI\n\tMOVQ R11, R13\n\tADDQ R12, R13\n\nloop:\n\t// for s < len(src)\n\tCMPQ SI, R13\n\tJEQ  end\n\n\t// CX = uint32(src[s])\n\t//\n\t// switch src[s] & 0x03\n\tMOVBLZX (SI), CX\n\tMOVL    CX, BX\n\tANDL    $3, BX\n\tCMPL    BX, $1\n\tJAE     tagCopy\n\n\t// ----------------------------------------\n\t// The code below handles literal tags.\n\n\t// case tagLiteral:\n\t// x := uint32(src[s] >> 2)\n\t// switch\n\tSHRL $2, CX\n\tCMPL CX, $60\n\tJAE  tagLit60Plus\n\n\t// case x < 60:\n\t// s++\n\tINCQ SI\n\ndoLit:\n\t// This is the end of the inner \"switch\", when we have a literal tag.\n\t//\n\t// We assume that CX == x and x fits in a uint32, where x is the variable\n\t// used in the pure Go decode_other.go code.\n\n\t// length = int(x) + 1\n\t//\n\t// Unlike the pure Go code, we don't need to check if length <= 0 because\n\t// CX can hold 64 bits, so the increment cannot overflow.\n\tINCQ CX\n\n\t// Prepare to check if copying length bytes will run past the end of dst or\n\t// src.\n\t//\n\t// AX = len(dst) - d\n\t// BX = len(src) - s\n\tMOVQ R10, AX\n\tSUBQ DI, AX\n\tMOVQ R13, BX\n\tSUBQ SI, BX\n\n\t// !!! Try a faster technique for short (16 or fewer bytes) copies.\n\t//\n\t// if length > 16 || len(dst)-d < 16 || len(src)-s < 16 {\n\t//   goto callMemmove // Fall back on calling runtime·memmove.\n\t// }\n\t//\n\t// The C++ snappy code calls this TryFastAppend. It also checks len(src)-s\n\t// against 21 instead of 16, because it cannot assume that all of its input\n\t// is contiguous in memory and so it needs to leave enough source bytes to\n\t// read the next tag without refilling buffers, but Go's Decode assumes\n\t// contiguousness (the src argument is a []byte).\n\tCMPQ CX, $16\n\tJGT  callMemmove\n\tCMPQ AX, $16\n\tJLT  callMemmove\n\tCMPQ BX, $16\n\tJLT  callMemmove\n\n\t// !!! Implement the copy from src to dst as a 16-byte load and store.\n\t// (Decode's documentation says that dst and src must not overlap.)\n\t//\n\t// This always copies 16 bytes, instead of only length bytes, but that's\n\t// OK. If the input is a valid Snappy encoding then subsequent iterations\n\t// will fix up the overrun. Otherwise, Decode returns a nil []byte (and a\n\t// non-nil error), so the overrun will be ignored.\n\t//\n\t// Note that on amd64, it is legal and cheap to issue unaligned 8-byte or\n\t// 16-byte loads and stores. This technique probably wouldn't be as\n\t// effective on architectures that are fussier about alignment.\n\tMOVOU 0(SI), X0\n\tMOVOU X0, 0(DI)\n\n\t// d += length\n\t// s += length\n\tADDQ CX, DI\n\tADDQ CX, SI\n\tJMP  loop\n\ncallMemmove:\n\t// if length > len(dst)-d || length > len(src)-s { etc }\n\tCMPQ CX, AX\n\tJGT  errCorrupt\n\tCMPQ CX, BX\n\tJGT  errCorrupt\n\n\t// copy(dst[d:], src[s:s+length])\n\t//\n\t// This means calling runtime·memmove(&dst[d], &src[s], length), so we push\n\t// DI, SI and CX as arguments. Coincidentally, we also need to spill those\n\t// three registers to the stack, to save local variables across the CALL.\n\tMOVQ DI, 0(SP)\n\tMOVQ SI, 8(SP)\n\tMOVQ CX, 16(SP)\n\tMOVQ DI, 24(SP)\n\tMOVQ SI, 32(SP)\n\tMOVQ CX, 40(SP)\n\tCALL runtime·memmove(SB)\n\n\t// Restore local variables: unspill registers from the stack and\n\t// re-calculate R8-R13.\n\tMOVQ 24(SP), DI\n\tMOVQ 32(SP), SI\n\tMOVQ 40(SP), CX\n\tMOVQ dst_base+0(FP), R8\n\tMOVQ dst_len+8(FP), R9\n\tMOVQ R8, R10\n\tADDQ R9, R10\n\tMOVQ src_base+24(FP), R11\n\tMOVQ src_len+32(FP), R12\n\tMOVQ R11, R13\n\tADDQ R12, R13\n\n\t// d += length\n\t// s += length\n\tADDQ CX, DI\n\tADDQ CX, SI\n\tJMP  loop\n\ntagLit60Plus:\n\t// !!! This fragment does the\n\t//\n\t// s += x - 58; if uint(s) > uint(len(src)) { etc }\n\t//\n\t// checks. In the asm version, we code it once instead of once per switch case.\n\tADDQ CX, SI\n\tSUBQ $58, SI\n\tMOVQ SI, BX\n\tSUBQ R11, BX\n\tCMPQ BX, R12\n\tJA   errCorrupt\n\n\t// case x == 60:\n\tCMPL CX, $61\n\tJEQ  tagLit61\n\tJA   tagLit62Plus\n\n\t// x = uint32(src[s-1])\n\tMOVBLZX -1(SI), CX\n\tJMP     doLit\n\ntagLit61:\n\t// case x == 61:\n\t// x = uint32(src[s-2]) | uint32(src[s-1])<<8\n\tMOVWLZX -2(SI), CX\n\tJMP     doLit\n\ntagLit62Plus:\n\tCMPL CX, $62\n\tJA   tagLit63\n\n\t// case x == 62:\n\t// x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16\n\tMOVWLZX -3(SI), CX\n\tMOVBLZX -1(SI), BX\n\tSHLL    $16, BX\n\tORL     BX, CX\n\tJMP     doLit\n\ntagLit63:\n\t// case x == 63:\n\t// x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24\n\tMOVL -4(SI), CX\n\tJMP  doLit\n\n// The code above handles literal tags.\n// ----------------------------------------\n// The code below handles copy tags.\n\ntagCopy4:\n\t// case tagCopy4:\n\t// s += 5\n\tADDQ $5, SI\n\n\t// if uint(s) > uint(len(src)) { etc }\n\tMOVQ SI, BX\n\tSUBQ R11, BX\n\tCMPQ BX, R12\n\tJA   errCorrupt\n\n\t// length = 1 + int(src[s-5])>>2\n\tSHRQ $2, CX\n\tINCQ CX\n\n\t// offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24)\n\tMOVLQZX -4(SI), DX\n\tJMP     doCopy\n\ntagCopy2:\n\t// case tagCopy2:\n\t// s += 3\n\tADDQ $3, SI\n\n\t// if uint(s) > uint(len(src)) { etc }\n\tMOVQ SI, BX\n\tSUBQ R11, BX\n\tCMPQ BX, R12\n\tJA   errCorrupt\n\n\t// length = 1 + int(src[s-3])>>2\n\tSHRQ $2, CX\n\tINCQ CX\n\n\t// offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8)\n\tMOVWQZX -2(SI), DX\n\tJMP     doCopy\n\ntagCopy:\n\t// We have a copy tag. We assume that:\n\t//\t- BX == src[s] & 0x03\n\t//\t- CX == src[s]\n\tCMPQ BX, $2\n\tJEQ  tagCopy2\n\tJA   tagCopy4\n\n\t// case tagCopy1:\n\t// s += 2\n\tADDQ $2, SI\n\n\t// if uint(s) > uint(len(src)) { etc }\n\tMOVQ SI, BX\n\tSUBQ R11, BX\n\tCMPQ BX, R12\n\tJA   errCorrupt\n\n\t// offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1]))\n\tMOVQ    CX, DX\n\tANDQ    $0xe0, DX\n\tSHLQ    $3, DX\n\tMOVBQZX -1(SI), BX\n\tORQ     BX, DX\n\n\t// length = 4 + int(src[s-2])>>2&0x7\n\tSHRQ $2, CX\n\tANDQ $7, CX\n\tADDQ $4, CX\n\ndoCopy:\n\t// This is the end of the outer \"switch\", when we have a copy tag.\n\t//\n\t// We assume that:\n\t//\t- CX == length && CX > 0\n\t//\t- DX == offset\n\n\t// if offset <= 0 { etc }\n\tCMPQ DX, $0\n\tJLE  errCorrupt\n\n\t// if d < offset { etc }\n\tMOVQ DI, BX\n\tSUBQ R8, BX\n\tCMPQ BX, DX\n\tJLT  errCorrupt\n\n\t// if length > len(dst)-d { etc }\n\tMOVQ R10, BX\n\tSUBQ DI, BX\n\tCMPQ CX, BX\n\tJGT  errCorrupt\n\n\t// forwardCopy(dst[d:d+length], dst[d-offset:]); d += length\n\t//\n\t// Set:\n\t//\t- R14 = len(dst)-d\n\t//\t- R15 = &dst[d-offset]\n\tMOVQ R10, R14\n\tSUBQ DI, R14\n\tMOVQ DI, R15\n\tSUBQ DX, R15\n\n\t// !!! Try a faster technique for short (16 or fewer bytes) forward copies.\n\t//\n\t// First, try using two 8-byte load/stores, similar to the doLit technique\n\t// above. Even if dst[d:d+length] and dst[d-offset:] can overlap, this is\n\t// still OK if offset >= 8. Note that this has to be two 8-byte load/stores\n\t// and not one 16-byte load/store, and the first store has to be before the\n\t// second load, due to the overlap if offset is in the range [8, 16).\n\t//\n\t// if length > 16 || offset < 8 || len(dst)-d < 16 {\n\t//   goto slowForwardCopy\n\t// }\n\t// copy 16 bytes\n\t// d += length\n\tCMPQ CX, $16\n\tJGT  slowForwardCopy\n\tCMPQ DX, $8\n\tJLT  slowForwardCopy\n\tCMPQ R14, $16\n\tJLT  slowForwardCopy\n\tMOVQ 0(R15), AX\n\tMOVQ AX, 0(DI)\n\tMOVQ 8(R15), BX\n\tMOVQ BX, 8(DI)\n\tADDQ CX, DI\n\tJMP  loop\n\nslowForwardCopy:\n\t// !!! If the forward copy is longer than 16 bytes, or if offset < 8, we\n\t// can still try 8-byte load stores, provided we can overrun up to 10 extra\n\t// bytes. As above, the overrun will be fixed up by subsequent iterations\n\t// of the outermost loop.\n\t//\n\t// The C++ snappy code calls this technique IncrementalCopyFastPath. Its\n\t// commentary says:\n\t//\n\t// ----\n\t//\n\t// The main part of this loop is a simple copy of eight bytes at a time\n\t// until we've copied (at least) the requested amount of bytes.  However,\n\t// if d and d-offset are less than eight bytes apart (indicating a\n\t// repeating pattern of length < 8), we first need to expand the pattern in\n\t// order to get the correct results. For instance, if the buffer looks like\n\t// this, with the eight-byte <d-offset> and <d> patterns marked as\n\t// intervals:\n\t//\n\t//    abxxxxxxxxxxxx\n\t//    [------]           d-offset\n\t//      [------]         d\n\t//\n\t// a single eight-byte copy from <d-offset> to <d> will repeat the pattern\n\t// once, after which we can move <d> two bytes without moving <d-offset>:\n\t//\n\t//    ababxxxxxxxxxx\n\t//    [------]           d-offset\n\t//        [------]       d\n\t//\n\t// and repeat the exercise until the two no longer overlap.\n\t//\n\t// This allows us to do very well in the special case of one single byte\n\t// repeated many times, without taking a big hit for more general cases.\n\t//\n\t// The worst case of extra writing past the end of the match occurs when\n\t// offset == 1 and length == 1; the last copy will read from byte positions\n\t// [0..7] and write to [4..11], whereas it was only supposed to write to\n\t// position 1. Thus, ten excess bytes.\n\t//\n\t// ----\n\t//\n\t// That \"10 byte overrun\" worst case is confirmed by Go's\n\t// TestSlowForwardCopyOverrun, which also tests the fixUpSlowForwardCopy\n\t// and finishSlowForwardCopy algorithm.\n\t//\n\t// if length > len(dst)-d-10 {\n\t//   goto verySlowForwardCopy\n\t// }\n\tSUBQ $10, R14\n\tCMPQ CX, R14\n\tJGT  verySlowForwardCopy\n\nmakeOffsetAtLeast8:\n\t// !!! As above, expand the pattern so that offset >= 8 and we can use\n\t// 8-byte load/stores.\n\t//\n\t// for offset < 8 {\n\t//   copy 8 bytes from dst[d-offset:] to dst[d:]\n\t//   length -= offset\n\t//   d      += offset\n\t//   offset += offset\n\t//   // The two previous lines together means that d-offset, and therefore\n\t//   // R15, is unchanged.\n\t// }\n\tCMPQ DX, $8\n\tJGE  fixUpSlowForwardCopy\n\tMOVQ (R15), BX\n\tMOVQ BX, (DI)\n\tSUBQ DX, CX\n\tADDQ DX, DI\n\tADDQ DX, DX\n\tJMP  makeOffsetAtLeast8\n\nfixUpSlowForwardCopy:\n\t// !!! Add length (which might be negative now) to d (implied by DI being\n\t// &dst[d]) so that d ends up at the right place when we jump back to the\n\t// top of the loop. Before we do that, though, we save DI to AX so that, if\n\t// length is positive, copying the remaining length bytes will write to the\n\t// right place.\n\tMOVQ DI, AX\n\tADDQ CX, DI\n\nfinishSlowForwardCopy:\n\t// !!! Repeat 8-byte load/stores until length <= 0. Ending with a negative\n\t// length means that we overrun, but as above, that will be fixed up by\n\t// subsequent iterations of the outermost loop.\n\tCMPQ CX, $0\n\tJLE  loop\n\tMOVQ (R15), BX\n\tMOVQ BX, (AX)\n\tADDQ $8, R15\n\tADDQ $8, AX\n\tSUBQ $8, CX\n\tJMP  finishSlowForwardCopy\n\nverySlowForwardCopy:\n\t// verySlowForwardCopy is a simple implementation of forward copy. In C\n\t// parlance, this is a do/while loop instead of a while loop, since we know\n\t// that length > 0. In Go syntax:\n\t//\n\t// for {\n\t//   dst[d] = dst[d - offset]\n\t//   d++\n\t//   length--\n\t//   if length == 0 {\n\t//     break\n\t//   }\n\t// }\n\tMOVB (R15), BX\n\tMOVB BX, (DI)\n\tINCQ R15\n\tINCQ DI\n\tDECQ CX\n\tJNZ  verySlowForwardCopy\n\tJMP  loop\n\n// The code above handles copy tags.\n// ----------------------------------------\n\nend:\n\t// This is the end of the \"for s < len(src)\".\n\t//\n\t// if d != len(dst) { etc }\n\tCMPQ DI, R10\n\tJNE  errCorrupt\n\n\t// return 0\n\tMOVQ $0, ret+48(FP)\n\tRET\n\nerrCorrupt:\n\t// return decodeErrCodeCorrupt\n\tMOVQ $1, ret+48(FP)\n\tRET\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/decode_arm64.s",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !appengine\n// +build gc\n// +build !noasm\n\n#include \"textflag.h\"\n\n// The asm code generally follows the pure Go code in decode_other.go, except\n// where marked with a \"!!!\".\n\n// func decode(dst, src []byte) int\n//\n// All local variables fit into registers. The non-zero stack size is only to\n// spill registers and push args when issuing a CALL. The register allocation:\n//\t- R2\tscratch\n//\t- R3\tscratch\n//\t- R4\tlength or x\n//\t- R5\toffset\n//\t- R6\t&src[s]\n//\t- R7\t&dst[d]\n//\t+ R8\tdst_base\n//\t+ R9\tdst_len\n//\t+ R10\tdst_base + dst_len\n//\t+ R11\tsrc_base\n//\t+ R12\tsrc_len\n//\t+ R13\tsrc_base + src_len\n//\t- R14\tused by doCopy\n//\t- R15\tused by doCopy\n//\n// The registers R8-R13 (marked with a \"+\") are set at the start of the\n// function, and after a CALL returns, and are not otherwise modified.\n//\n// The d variable is implicitly R7 - R8,  and len(dst)-d is R10 - R7.\n// The s variable is implicitly R6 - R11, and len(src)-s is R13 - R6.\nTEXT ·decode(SB), NOSPLIT, $56-56\n\t// Initialize R6, R7 and R8-R13.\n\tMOVD dst_base+0(FP), R8\n\tMOVD dst_len+8(FP), R9\n\tMOVD R8, R7\n\tMOVD R8, R10\n\tADD  R9, R10, R10\n\tMOVD src_base+24(FP), R11\n\tMOVD src_len+32(FP), R12\n\tMOVD R11, R6\n\tMOVD R11, R13\n\tADD  R12, R13, R13\n\nloop:\n\t// for s < len(src)\n\tCMP R13, R6\n\tBEQ end\n\n\t// R4 = uint32(src[s])\n\t//\n\t// switch src[s] & 0x03\n\tMOVBU (R6), R4\n\tMOVW  R4, R3\n\tANDW  $3, R3\n\tMOVW  $1, R1\n\tCMPW  R1, R3\n\tBGE   tagCopy\n\n\t// ----------------------------------------\n\t// The code below handles literal tags.\n\n\t// case tagLiteral:\n\t// x := uint32(src[s] >> 2)\n\t// switch\n\tMOVW $60, R1\n\tLSRW $2, R4, R4\n\tCMPW R4, R1\n\tBLS  tagLit60Plus\n\n\t// case x < 60:\n\t// s++\n\tADD $1, R6, R6\n\ndoLit:\n\t// This is the end of the inner \"switch\", when we have a literal tag.\n\t//\n\t// We assume that R4 == x and x fits in a uint32, where x is the variable\n\t// used in the pure Go decode_other.go code.\n\n\t// length = int(x) + 1\n\t//\n\t// Unlike the pure Go code, we don't need to check if length <= 0 because\n\t// R4 can hold 64 bits, so the increment cannot overflow.\n\tADD $1, R4, R4\n\n\t// Prepare to check if copying length bytes will run past the end of dst or\n\t// src.\n\t//\n\t// R2 = len(dst) - d\n\t// R3 = len(src) - s\n\tMOVD R10, R2\n\tSUB  R7, R2, R2\n\tMOVD R13, R3\n\tSUB  R6, R3, R3\n\n\t// !!! Try a faster technique for short (16 or fewer bytes) copies.\n\t//\n\t// if length > 16 || len(dst)-d < 16 || len(src)-s < 16 {\n\t//   goto callMemmove // Fall back on calling runtime·memmove.\n\t// }\n\t//\n\t// The C++ snappy code calls this TryFastAppend. It also checks len(src)-s\n\t// against 21 instead of 16, because it cannot assume that all of its input\n\t// is contiguous in memory and so it needs to leave enough source bytes to\n\t// read the next tag without refilling buffers, but Go's Decode assumes\n\t// contiguousness (the src argument is a []byte).\n\tCMP $16, R4\n\tBGT callMemmove\n\tCMP $16, R2\n\tBLT callMemmove\n\tCMP $16, R3\n\tBLT callMemmove\n\n\t// !!! Implement the copy from src to dst as a 16-byte load and store.\n\t// (Decode's documentation says that dst and src must not overlap.)\n\t//\n\t// This always copies 16 bytes, instead of only length bytes, but that's\n\t// OK. If the input is a valid Snappy encoding then subsequent iterations\n\t// will fix up the overrun. Otherwise, Decode returns a nil []byte (and a\n\t// non-nil error), so the overrun will be ignored.\n\t//\n\t// Note that on arm64, it is legal and cheap to issue unaligned 8-byte or\n\t// 16-byte loads and stores. This technique probably wouldn't be as\n\t// effective on architectures that are fussier about alignment.\n\tLDP 0(R6), (R14, R15)\n\tSTP (R14, R15), 0(R7)\n\n\t// d += length\n\t// s += length\n\tADD R4, R7, R7\n\tADD R4, R6, R6\n\tB   loop\n\ncallMemmove:\n\t// if length > len(dst)-d || length > len(src)-s { etc }\n\tCMP R2, R4\n\tBGT errCorrupt\n\tCMP R3, R4\n\tBGT errCorrupt\n\n\t// copy(dst[d:], src[s:s+length])\n\t//\n\t// This means calling runtime·memmove(&dst[d], &src[s], length), so we push\n\t// R7, R6 and R4 as arguments. Coincidentally, we also need to spill those\n\t// three registers to the stack, to save local variables across the CALL.\n\tMOVD R7, 8(RSP)\n\tMOVD R6, 16(RSP)\n\tMOVD R4, 24(RSP)\n\tMOVD R7, 32(RSP)\n\tMOVD R6, 40(RSP)\n\tMOVD R4, 48(RSP)\n\tCALL runtime·memmove(SB)\n\n\t// Restore local variables: unspill registers from the stack and\n\t// re-calculate R8-R13.\n\tMOVD 32(RSP), R7\n\tMOVD 40(RSP), R6\n\tMOVD 48(RSP), R4\n\tMOVD dst_base+0(FP), R8\n\tMOVD dst_len+8(FP), R9\n\tMOVD R8, R10\n\tADD  R9, R10, R10\n\tMOVD src_base+24(FP), R11\n\tMOVD src_len+32(FP), R12\n\tMOVD R11, R13\n\tADD  R12, R13, R13\n\n\t// d += length\n\t// s += length\n\tADD R4, R7, R7\n\tADD R4, R6, R6\n\tB   loop\n\ntagLit60Plus:\n\t// !!! This fragment does the\n\t//\n\t// s += x - 58; if uint(s) > uint(len(src)) { etc }\n\t//\n\t// checks. In the asm version, we code it once instead of once per switch case.\n\tADD  R4, R6, R6\n\tSUB  $58, R6, R6\n\tMOVD R6, R3\n\tSUB  R11, R3, R3\n\tCMP  R12, R3\n\tBGT  errCorrupt\n\n\t// case x == 60:\n\tMOVW $61, R1\n\tCMPW R1, R4\n\tBEQ  tagLit61\n\tBGT  tagLit62Plus\n\n\t// x = uint32(src[s-1])\n\tMOVBU -1(R6), R4\n\tB     doLit\n\ntagLit61:\n\t// case x == 61:\n\t// x = uint32(src[s-2]) | uint32(src[s-1])<<8\n\tMOVHU -2(R6), R4\n\tB     doLit\n\ntagLit62Plus:\n\tCMPW $62, R4\n\tBHI  tagLit63\n\n\t// case x == 62:\n\t// x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16\n\tMOVHU -3(R6), R4\n\tMOVBU -1(R6), R3\n\tORR   R3<<16, R4\n\tB     doLit\n\ntagLit63:\n\t// case x == 63:\n\t// x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24\n\tMOVWU -4(R6), R4\n\tB     doLit\n\n\t// The code above handles literal tags.\n\t// ----------------------------------------\n\t// The code below handles copy tags.\n\ntagCopy4:\n\t// case tagCopy4:\n\t// s += 5\n\tADD $5, R6, R6\n\n\t// if uint(s) > uint(len(src)) { etc }\n\tMOVD R6, R3\n\tSUB  R11, R3, R3\n\tCMP  R12, R3\n\tBGT  errCorrupt\n\n\t// length = 1 + int(src[s-5])>>2\n\tMOVD $1, R1\n\tADD  R4>>2, R1, R4\n\n\t// offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24)\n\tMOVWU -4(R6), R5\n\tB     doCopy\n\ntagCopy2:\n\t// case tagCopy2:\n\t// s += 3\n\tADD $3, R6, R6\n\n\t// if uint(s) > uint(len(src)) { etc }\n\tMOVD R6, R3\n\tSUB  R11, R3, R3\n\tCMP  R12, R3\n\tBGT  errCorrupt\n\n\t// length = 1 + int(src[s-3])>>2\n\tMOVD $1, R1\n\tADD  R4>>2, R1, R4\n\n\t// offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8)\n\tMOVHU -2(R6), R5\n\tB     doCopy\n\ntagCopy:\n\t// We have a copy tag. We assume that:\n\t//\t- R3 == src[s] & 0x03\n\t//\t- R4 == src[s]\n\tCMP $2, R3\n\tBEQ tagCopy2\n\tBGT tagCopy4\n\n\t// case tagCopy1:\n\t// s += 2\n\tADD $2, R6, R6\n\n\t// if uint(s) > uint(len(src)) { etc }\n\tMOVD R6, R3\n\tSUB  R11, R3, R3\n\tCMP  R12, R3\n\tBGT  errCorrupt\n\n\t// offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1]))\n\tMOVD  R4, R5\n\tAND   $0xe0, R5\n\tMOVBU -1(R6), R3\n\tORR   R5<<3, R3, R5\n\n\t// length = 4 + int(src[s-2])>>2&0x7\n\tMOVD $7, R1\n\tAND  R4>>2, R1, R4\n\tADD  $4, R4, R4\n\ndoCopy:\n\t// This is the end of the outer \"switch\", when we have a copy tag.\n\t//\n\t// We assume that:\n\t//\t- R4 == length && R4 > 0\n\t//\t- R5 == offset\n\n\t// if offset <= 0 { etc }\n\tMOVD $0, R1\n\tCMP  R1, R5\n\tBLE  errCorrupt\n\n\t// if d < offset { etc }\n\tMOVD R7, R3\n\tSUB  R8, R3, R3\n\tCMP  R5, R3\n\tBLT  errCorrupt\n\n\t// if length > len(dst)-d { etc }\n\tMOVD R10, R3\n\tSUB  R7, R3, R3\n\tCMP  R3, R4\n\tBGT  errCorrupt\n\n\t// forwardCopy(dst[d:d+length], dst[d-offset:]); d += length\n\t//\n\t// Set:\n\t//\t- R14 = len(dst)-d\n\t//\t- R15 = &dst[d-offset]\n\tMOVD R10, R14\n\tSUB  R7, R14, R14\n\tMOVD R7, R15\n\tSUB  R5, R15, R15\n\n\t// !!! Try a faster technique for short (16 or fewer bytes) forward copies.\n\t//\n\t// First, try using two 8-byte load/stores, similar to the doLit technique\n\t// above. Even if dst[d:d+length] and dst[d-offset:] can overlap, this is\n\t// still OK if offset >= 8. Note that this has to be two 8-byte load/stores\n\t// and not one 16-byte load/store, and the first store has to be before the\n\t// second load, due to the overlap if offset is in the range [8, 16).\n\t//\n\t// if length > 16 || offset < 8 || len(dst)-d < 16 {\n\t//   goto slowForwardCopy\n\t// }\n\t// copy 16 bytes\n\t// d += length\n\tCMP  $16, R4\n\tBGT  slowForwardCopy\n\tCMP  $8, R5\n\tBLT  slowForwardCopy\n\tCMP  $16, R14\n\tBLT  slowForwardCopy\n\tMOVD 0(R15), R2\n\tMOVD R2, 0(R7)\n\tMOVD 8(R15), R3\n\tMOVD R3, 8(R7)\n\tADD  R4, R7, R7\n\tB    loop\n\nslowForwardCopy:\n\t// !!! If the forward copy is longer than 16 bytes, or if offset < 8, we\n\t// can still try 8-byte load stores, provided we can overrun up to 10 extra\n\t// bytes. As above, the overrun will be fixed up by subsequent iterations\n\t// of the outermost loop.\n\t//\n\t// The C++ snappy code calls this technique IncrementalCopyFastPath. Its\n\t// commentary says:\n\t//\n\t// ----\n\t//\n\t// The main part of this loop is a simple copy of eight bytes at a time\n\t// until we've copied (at least) the requested amount of bytes.  However,\n\t// if d and d-offset are less than eight bytes apart (indicating a\n\t// repeating pattern of length < 8), we first need to expand the pattern in\n\t// order to get the correct results. For instance, if the buffer looks like\n\t// this, with the eight-byte <d-offset> and <d> patterns marked as\n\t// intervals:\n\t//\n\t//    abxxxxxxxxxxxx\n\t//    [------]           d-offset\n\t//      [------]         d\n\t//\n\t// a single eight-byte copy from <d-offset> to <d> will repeat the pattern\n\t// once, after which we can move <d> two bytes without moving <d-offset>:\n\t//\n\t//    ababxxxxxxxxxx\n\t//    [------]           d-offset\n\t//        [------]       d\n\t//\n\t// and repeat the exercise until the two no longer overlap.\n\t//\n\t// This allows us to do very well in the special case of one single byte\n\t// repeated many times, without taking a big hit for more general cases.\n\t//\n\t// The worst case of extra writing past the end of the match occurs when\n\t// offset == 1 and length == 1; the last copy will read from byte positions\n\t// [0..7] and write to [4..11], whereas it was only supposed to write to\n\t// position 1. Thus, ten excess bytes.\n\t//\n\t// ----\n\t//\n\t// That \"10 byte overrun\" worst case is confirmed by Go's\n\t// TestSlowForwardCopyOverrun, which also tests the fixUpSlowForwardCopy\n\t// and finishSlowForwardCopy algorithm.\n\t//\n\t// if length > len(dst)-d-10 {\n\t//   goto verySlowForwardCopy\n\t// }\n\tSUB $10, R14, R14\n\tCMP R14, R4\n\tBGT verySlowForwardCopy\n\nmakeOffsetAtLeast8:\n\t// !!! As above, expand the pattern so that offset >= 8 and we can use\n\t// 8-byte load/stores.\n\t//\n\t// for offset < 8 {\n\t//   copy 8 bytes from dst[d-offset:] to dst[d:]\n\t//   length -= offset\n\t//   d      += offset\n\t//   offset += offset\n\t//   // The two previous lines together means that d-offset, and therefore\n\t//   // R15, is unchanged.\n\t// }\n\tCMP  $8, R5\n\tBGE  fixUpSlowForwardCopy\n\tMOVD (R15), R3\n\tMOVD R3, (R7)\n\tSUB  R5, R4, R4\n\tADD  R5, R7, R7\n\tADD  R5, R5, R5\n\tB    makeOffsetAtLeast8\n\nfixUpSlowForwardCopy:\n\t// !!! Add length (which might be negative now) to d (implied by R7 being\n\t// &dst[d]) so that d ends up at the right place when we jump back to the\n\t// top of the loop. Before we do that, though, we save R7 to R2 so that, if\n\t// length is positive, copying the remaining length bytes will write to the\n\t// right place.\n\tMOVD R7, R2\n\tADD  R4, R7, R7\n\nfinishSlowForwardCopy:\n\t// !!! Repeat 8-byte load/stores until length <= 0. Ending with a negative\n\t// length means that we overrun, but as above, that will be fixed up by\n\t// subsequent iterations of the outermost loop.\n\tMOVD $0, R1\n\tCMP  R1, R4\n\tBLE  loop\n\tMOVD (R15), R3\n\tMOVD R3, (R2)\n\tADD  $8, R15, R15\n\tADD  $8, R2, R2\n\tSUB  $8, R4, R4\n\tB    finishSlowForwardCopy\n\nverySlowForwardCopy:\n\t// verySlowForwardCopy is a simple implementation of forward copy. In C\n\t// parlance, this is a do/while loop instead of a while loop, since we know\n\t// that length > 0. In Go syntax:\n\t//\n\t// for {\n\t//   dst[d] = dst[d - offset]\n\t//   d++\n\t//   length--\n\t//   if length == 0 {\n\t//     break\n\t//   }\n\t// }\n\tMOVB (R15), R3\n\tMOVB R3, (R7)\n\tADD  $1, R15, R15\n\tADD  $1, R7, R7\n\tSUB  $1, R4, R4\n\tCBNZ R4, verySlowForwardCopy\n\tB    loop\n\n\t// The code above handles copy tags.\n\t// ----------------------------------------\n\nend:\n\t// This is the end of the \"for s < len(src)\".\n\t//\n\t// if d != len(dst) { etc }\n\tCMP R10, R7\n\tBNE errCorrupt\n\n\t// return 0\n\tMOVD $0, ret+48(FP)\n\tRET\n\nerrCorrupt:\n\t// return decodeErrCodeCorrupt\n\tMOVD $1, R2\n\tMOVD R2, ret+48(FP)\n\tRET\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/decode_asm.go",
    "content": "// Copyright 2016 The Snappy-Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !appengine\n// +build gc\n// +build !noasm\n// +build amd64 arm64\n\npackage snappy\n\n// decode has the same semantics as in decode_other.go.\n//\n//go:noescape\nfunc decode(dst, src []byte) int\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/decode_other.go",
    "content": "// Copyright 2016 The Snappy-Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !amd64,!arm64 appengine !gc noasm\n\npackage snappy\n\n// decode writes the decoding of src to dst. It assumes that the varint-encoded\n// length of the decompressed bytes has already been read, and that len(dst)\n// equals that length.\n//\n// It returns 0 on success or a decodeErrCodeXxx error code on failure.\nfunc decode(dst, src []byte) int {\n\tvar d, s, offset, length int\n\tfor s < len(src) {\n\t\tswitch src[s] & 0x03 {\n\t\tcase tagLiteral:\n\t\t\tx := uint32(src[s] >> 2)\n\t\t\tswitch {\n\t\t\tcase x < 60:\n\t\t\t\ts++\n\t\t\tcase x == 60:\n\t\t\t\ts += 2\n\t\t\t\tif uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line.\n\t\t\t\t\treturn decodeErrCodeCorrupt\n\t\t\t\t}\n\t\t\t\tx = uint32(src[s-1])\n\t\t\tcase x == 61:\n\t\t\t\ts += 3\n\t\t\t\tif uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line.\n\t\t\t\t\treturn decodeErrCodeCorrupt\n\t\t\t\t}\n\t\t\t\tx = uint32(src[s-2]) | uint32(src[s-1])<<8\n\t\t\tcase x == 62:\n\t\t\t\ts += 4\n\t\t\t\tif uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line.\n\t\t\t\t\treturn decodeErrCodeCorrupt\n\t\t\t\t}\n\t\t\t\tx = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16\n\t\t\tcase x == 63:\n\t\t\t\ts += 5\n\t\t\t\tif uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line.\n\t\t\t\t\treturn decodeErrCodeCorrupt\n\t\t\t\t}\n\t\t\t\tx = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24\n\t\t\t}\n\t\t\tlength = int(x) + 1\n\t\t\tif length <= 0 {\n\t\t\t\treturn decodeErrCodeUnsupportedLiteralLength\n\t\t\t}\n\t\t\tif length > len(dst)-d || length > len(src)-s {\n\t\t\t\treturn decodeErrCodeCorrupt\n\t\t\t}\n\t\t\tcopy(dst[d:], src[s:s+length])\n\t\t\td += length\n\t\t\ts += length\n\t\t\tcontinue\n\n\t\tcase tagCopy1:\n\t\t\ts += 2\n\t\t\tif uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line.\n\t\t\t\treturn decodeErrCodeCorrupt\n\t\t\t}\n\t\t\tlength = 4 + int(src[s-2])>>2&0x7\n\t\t\toffset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1]))\n\n\t\tcase tagCopy2:\n\t\t\ts += 3\n\t\t\tif uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line.\n\t\t\t\treturn decodeErrCodeCorrupt\n\t\t\t}\n\t\t\tlength = 1 + int(src[s-3])>>2\n\t\t\toffset = int(uint32(src[s-2]) | uint32(src[s-1])<<8)\n\n\t\tcase tagCopy4:\n\t\t\ts += 5\n\t\t\tif uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line.\n\t\t\t\treturn decodeErrCodeCorrupt\n\t\t\t}\n\t\t\tlength = 1 + int(src[s-5])>>2\n\t\t\toffset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24)\n\t\t}\n\n\t\tif offset <= 0 || d < offset || length > len(dst)-d {\n\t\t\treturn decodeErrCodeCorrupt\n\t\t}\n\t\t// Copy from an earlier sub-slice of dst to a later sub-slice.\n\t\t// If no overlap, use the built-in copy:\n\t\tif offset >= length {\n\t\t\tcopy(dst[d:d+length], dst[d-offset:])\n\t\t\td += length\n\t\t\tcontinue\n\t\t}\n\n\t\t// Unlike the built-in copy function, this byte-by-byte copy always runs\n\t\t// forwards, even if the slices overlap. Conceptually, this is:\n\t\t//\n\t\t// d += forwardCopy(dst[d:d+length], dst[d-offset:])\n\t\t//\n\t\t// We align the slices into a and b and show the compiler they are the same size.\n\t\t// This allows the loop to run without bounds checks.\n\t\ta := dst[d : d+length]\n\t\tb := dst[d-offset:]\n\t\tb = b[:len(a)]\n\t\tfor i := range a {\n\t\t\ta[i] = b[i]\n\t\t}\n\t\td += length\n\t}\n\tif d != len(dst) {\n\t\treturn decodeErrCodeCorrupt\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/encode.go",
    "content": "// Copyright 2011 The Snappy-Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage snappy\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"io\"\n)\n\n// Encode returns the encoded form of src. The returned slice may be a sub-\n// slice of dst if dst was large enough to hold the entire encoded block.\n// Otherwise, a newly allocated slice will be returned.\n//\n// The dst and src must not overlap. It is valid to pass a nil dst.\n//\n// Encode handles the Snappy block format, not the Snappy stream format.\nfunc Encode(dst, src []byte) []byte {\n\tif n := MaxEncodedLen(len(src)); n < 0 {\n\t\tpanic(ErrTooLarge)\n\t} else if len(dst) < n {\n\t\tdst = make([]byte, n)\n\t}\n\n\t// The block starts with the varint-encoded length of the decompressed bytes.\n\td := binary.PutUvarint(dst, uint64(len(src)))\n\n\tfor len(src) > 0 {\n\t\tp := src\n\t\tsrc = nil\n\t\tif len(p) > maxBlockSize {\n\t\t\tp, src = p[:maxBlockSize], p[maxBlockSize:]\n\t\t}\n\t\tif len(p) < minNonLiteralBlockSize {\n\t\t\td += emitLiteral(dst[d:], p)\n\t\t} else {\n\t\t\td += encodeBlock(dst[d:], p)\n\t\t}\n\t}\n\treturn dst[:d]\n}\n\n// inputMargin is the minimum number of extra input bytes to keep, inside\n// encodeBlock's inner loop. On some architectures, this margin lets us\n// implement a fast path for emitLiteral, where the copy of short (<= 16 byte)\n// literals can be implemented as a single load to and store from a 16-byte\n// register. That literal's actual length can be as short as 1 byte, so this\n// can copy up to 15 bytes too much, but that's OK as subsequent iterations of\n// the encoding loop will fix up the copy overrun, and this inputMargin ensures\n// that we don't overrun the dst and src buffers.\nconst inputMargin = 16 - 1\n\n// minNonLiteralBlockSize is the minimum size of the input to encodeBlock that\n// could be encoded with a copy tag. This is the minimum with respect to the\n// algorithm used by encodeBlock, not a minimum enforced by the file format.\n//\n// The encoded output must start with at least a 1 byte literal, as there are\n// no previous bytes to copy. A minimal (1 byte) copy after that, generated\n// from an emitCopy call in encodeBlock's main loop, would require at least\n// another inputMargin bytes, for the reason above: we want any emitLiteral\n// calls inside encodeBlock's main loop to use the fast path if possible, which\n// requires being able to overrun by inputMargin bytes. Thus,\n// minNonLiteralBlockSize equals 1 + 1 + inputMargin.\n//\n// The C++ code doesn't use this exact threshold, but it could, as discussed at\n// https://groups.google.com/d/topic/snappy-compression/oGbhsdIJSJ8/discussion\n// The difference between Go (2+inputMargin) and C++ (inputMargin) is purely an\n// optimization. It should not affect the encoded form. This is tested by\n// TestSameEncodingAsCppShortCopies.\nconst minNonLiteralBlockSize = 1 + 1 + inputMargin\n\n// MaxEncodedLen returns the maximum length of a snappy block, given its\n// uncompressed length.\n//\n// It will return a negative value if srcLen is too large to encode.\nfunc MaxEncodedLen(srcLen int) int {\n\tn := uint64(srcLen)\n\tif n > 0xffffffff {\n\t\treturn -1\n\t}\n\t// Compressed data can be defined as:\n\t//    compressed := item* literal*\n\t//    item       := literal* copy\n\t//\n\t// The trailing literal sequence has a space blowup of at most 62/60\n\t// since a literal of length 60 needs one tag byte + one extra byte\n\t// for length information.\n\t//\n\t// Item blowup is trickier to measure. Suppose the \"copy\" op copies\n\t// 4 bytes of data. Because of a special check in the encoding code,\n\t// we produce a 4-byte copy only if the offset is < 65536. Therefore\n\t// the copy op takes 3 bytes to encode, and this type of item leads\n\t// to at most the 62/60 blowup for representing literals.\n\t//\n\t// Suppose the \"copy\" op copies 5 bytes of data. If the offset is big\n\t// enough, it will take 5 bytes to encode the copy op. Therefore the\n\t// worst case here is a one-byte literal followed by a five-byte copy.\n\t// That is, 6 bytes of input turn into 7 bytes of \"compressed\" data.\n\t//\n\t// This last factor dominates the blowup, so the final estimate is:\n\tn = 32 + n + n/6\n\tif n > 0xffffffff {\n\t\treturn -1\n\t}\n\treturn int(n)\n}\n\nvar errClosed = errors.New(\"snappy: Writer is closed\")\n\n// NewWriter returns a new Writer that compresses to w.\n//\n// The Writer returned does not buffer writes. There is no need to Flush or\n// Close such a Writer.\n//\n// Deprecated: the Writer returned is not suitable for many small writes, only\n// for few large writes. Use NewBufferedWriter instead, which is efficient\n// regardless of the frequency and shape of the writes, and remember to Close\n// that Writer when done.\nfunc NewWriter(w io.Writer) *Writer {\n\treturn &Writer{\n\t\tw:    w,\n\t\tobuf: make([]byte, obufLen),\n\t}\n}\n\n// NewBufferedWriter returns a new Writer that compresses to w, using the\n// framing format described at\n// https://github.com/google/snappy/blob/master/framing_format.txt\n//\n// The Writer returned buffers writes. Users must call Close to guarantee all\n// data has been forwarded to the underlying io.Writer. They may also call\n// Flush zero or more times before calling Close.\nfunc NewBufferedWriter(w io.Writer) *Writer {\n\treturn &Writer{\n\t\tw:    w,\n\t\tibuf: make([]byte, 0, maxBlockSize),\n\t\tobuf: make([]byte, obufLen),\n\t}\n}\n\n// Writer is an io.Writer that can write Snappy-compressed bytes.\n//\n// Writer handles the Snappy stream format, not the Snappy block format.\ntype Writer struct {\n\tw   io.Writer\n\terr error\n\n\t// ibuf is a buffer for the incoming (uncompressed) bytes.\n\t//\n\t// Its use is optional. For backwards compatibility, Writers created by the\n\t// NewWriter function have ibuf == nil, do not buffer incoming bytes, and\n\t// therefore do not need to be Flush'ed or Close'd.\n\tibuf []byte\n\n\t// obuf is a buffer for the outgoing (compressed) bytes.\n\tobuf []byte\n\n\t// wroteStreamHeader is whether we have written the stream header.\n\twroteStreamHeader bool\n}\n\n// Reset discards the writer's state and switches the Snappy writer to write to\n// w. This permits reusing a Writer rather than allocating a new one.\nfunc (w *Writer) Reset(writer io.Writer) {\n\tw.w = writer\n\tw.err = nil\n\tif w.ibuf != nil {\n\t\tw.ibuf = w.ibuf[:0]\n\t}\n\tw.wroteStreamHeader = false\n}\n\n// Write satisfies the io.Writer interface.\nfunc (w *Writer) Write(p []byte) (nRet int, errRet error) {\n\tif w.ibuf == nil {\n\t\t// Do not buffer incoming bytes. This does not perform or compress well\n\t\t// if the caller of Writer.Write writes many small slices. This\n\t\t// behavior is therefore deprecated, but still supported for backwards\n\t\t// compatibility with code that doesn't explicitly Flush or Close.\n\t\treturn w.write(p)\n\t}\n\n\t// The remainder of this method is based on bufio.Writer.Write from the\n\t// standard library.\n\n\tfor len(p) > (cap(w.ibuf)-len(w.ibuf)) && w.err == nil {\n\t\tvar n int\n\t\tif len(w.ibuf) == 0 {\n\t\t\t// Large write, empty buffer.\n\t\t\t// Write directly from p to avoid copy.\n\t\t\tn, _ = w.write(p)\n\t\t} else {\n\t\t\tn = copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p)\n\t\t\tw.ibuf = w.ibuf[:len(w.ibuf)+n]\n\t\t\tw.Flush()\n\t\t}\n\t\tnRet += n\n\t\tp = p[n:]\n\t}\n\tif w.err != nil {\n\t\treturn nRet, w.err\n\t}\n\tn := copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p)\n\tw.ibuf = w.ibuf[:len(w.ibuf)+n]\n\tnRet += n\n\treturn nRet, nil\n}\n\nfunc (w *Writer) write(p []byte) (nRet int, errRet error) {\n\tif w.err != nil {\n\t\treturn 0, w.err\n\t}\n\tfor len(p) > 0 {\n\t\tobufStart := len(magicChunk)\n\t\tif !w.wroteStreamHeader {\n\t\t\tw.wroteStreamHeader = true\n\t\t\tcopy(w.obuf, magicChunk)\n\t\t\tobufStart = 0\n\t\t}\n\n\t\tvar uncompressed []byte\n\t\tif len(p) > maxBlockSize {\n\t\t\tuncompressed, p = p[:maxBlockSize], p[maxBlockSize:]\n\t\t} else {\n\t\t\tuncompressed, p = p, nil\n\t\t}\n\t\tchecksum := crc(uncompressed)\n\n\t\t// Compress the buffer, discarding the result if the improvement\n\t\t// isn't at least 12.5%.\n\t\tcompressed := Encode(w.obuf[obufHeaderLen:], uncompressed)\n\t\tchunkType := uint8(chunkTypeCompressedData)\n\t\tchunkLen := 4 + len(compressed)\n\t\tobufEnd := obufHeaderLen + len(compressed)\n\t\tif len(compressed) >= len(uncompressed)-len(uncompressed)/8 {\n\t\t\tchunkType = chunkTypeUncompressedData\n\t\t\tchunkLen = 4 + len(uncompressed)\n\t\t\tobufEnd = obufHeaderLen\n\t\t}\n\n\t\t// Fill in the per-chunk header that comes before the body.\n\t\tw.obuf[len(magicChunk)+0] = chunkType\n\t\tw.obuf[len(magicChunk)+1] = uint8(chunkLen >> 0)\n\t\tw.obuf[len(magicChunk)+2] = uint8(chunkLen >> 8)\n\t\tw.obuf[len(magicChunk)+3] = uint8(chunkLen >> 16)\n\t\tw.obuf[len(magicChunk)+4] = uint8(checksum >> 0)\n\t\tw.obuf[len(magicChunk)+5] = uint8(checksum >> 8)\n\t\tw.obuf[len(magicChunk)+6] = uint8(checksum >> 16)\n\t\tw.obuf[len(magicChunk)+7] = uint8(checksum >> 24)\n\n\t\tif _, err := w.w.Write(w.obuf[obufStart:obufEnd]); err != nil {\n\t\t\tw.err = err\n\t\t\treturn nRet, err\n\t\t}\n\t\tif chunkType == chunkTypeUncompressedData {\n\t\t\tif _, err := w.w.Write(uncompressed); err != nil {\n\t\t\t\tw.err = err\n\t\t\t\treturn nRet, err\n\t\t\t}\n\t\t}\n\t\tnRet += len(uncompressed)\n\t}\n\treturn nRet, nil\n}\n\n// Flush flushes the Writer to its underlying io.Writer.\nfunc (w *Writer) Flush() error {\n\tif w.err != nil {\n\t\treturn w.err\n\t}\n\tif len(w.ibuf) == 0 {\n\t\treturn nil\n\t}\n\tw.write(w.ibuf)\n\tw.ibuf = w.ibuf[:0]\n\treturn w.err\n}\n\n// Close calls Flush and then closes the Writer.\nfunc (w *Writer) Close() error {\n\tw.Flush()\n\tret := w.err\n\tif w.err == nil {\n\t\tw.err = errClosed\n\t}\n\treturn ret\n}\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/encode_amd64.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !appengine\n// +build gc\n// +build !noasm\n\n#include \"textflag.h\"\n\n// The XXX lines assemble on Go 1.4, 1.5 and 1.7, but not 1.6, due to a\n// Go toolchain regression. See https://github.com/golang/go/issues/15426 and\n// https://github.com/golang/snappy/issues/29\n//\n// As a workaround, the package was built with a known good assembler, and\n// those instructions were disassembled by \"objdump -d\" to yield the\n//\t4e 0f b7 7c 5c 78       movzwq 0x78(%rsp,%r11,2),%r15\n// style comments, in AT&T asm syntax. Note that rsp here is a physical\n// register, not Go/asm's SP pseudo-register (see https://golang.org/doc/asm).\n// The instructions were then encoded as \"BYTE $0x..\" sequences, which assemble\n// fine on Go 1.6.\n\n// The asm code generally follows the pure Go code in encode_other.go, except\n// where marked with a \"!!!\".\n\n// ----------------------------------------------------------------------------\n\n// func emitLiteral(dst, lit []byte) int\n//\n// All local variables fit into registers. The register allocation:\n//\t- AX\tlen(lit)\n//\t- BX\tn\n//\t- DX\treturn value\n//\t- DI\t&dst[i]\n//\t- R10\t&lit[0]\n//\n// The 24 bytes of stack space is to call runtime·memmove.\n//\n// The unusual register allocation of local variables, such as R10 for the\n// source pointer, matches the allocation used at the call site in encodeBlock,\n// which makes it easier to manually inline this function.\nTEXT ·emitLiteral(SB), NOSPLIT, $24-56\n\tMOVQ dst_base+0(FP), DI\n\tMOVQ lit_base+24(FP), R10\n\tMOVQ lit_len+32(FP), AX\n\tMOVQ AX, DX\n\tMOVL AX, BX\n\tSUBL $1, BX\n\n\tCMPL BX, $60\n\tJLT  oneByte\n\tCMPL BX, $256\n\tJLT  twoBytes\n\nthreeBytes:\n\tMOVB $0xf4, 0(DI)\n\tMOVW BX, 1(DI)\n\tADDQ $3, DI\n\tADDQ $3, DX\n\tJMP  memmove\n\ntwoBytes:\n\tMOVB $0xf0, 0(DI)\n\tMOVB BX, 1(DI)\n\tADDQ $2, DI\n\tADDQ $2, DX\n\tJMP  memmove\n\noneByte:\n\tSHLB $2, BX\n\tMOVB BX, 0(DI)\n\tADDQ $1, DI\n\tADDQ $1, DX\n\nmemmove:\n\tMOVQ DX, ret+48(FP)\n\n\t// copy(dst[i:], lit)\n\t//\n\t// This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push\n\t// DI, R10 and AX as arguments.\n\tMOVQ DI, 0(SP)\n\tMOVQ R10, 8(SP)\n\tMOVQ AX, 16(SP)\n\tCALL runtime·memmove(SB)\n\tRET\n\n// ----------------------------------------------------------------------------\n\n// func emitCopy(dst []byte, offset, length int) int\n//\n// All local variables fit into registers. The register allocation:\n//\t- AX\tlength\n//\t- SI\t&dst[0]\n//\t- DI\t&dst[i]\n//\t- R11\toffset\n//\n// The unusual register allocation of local variables, such as R11 for the\n// offset, matches the allocation used at the call site in encodeBlock, which\n// makes it easier to manually inline this function.\nTEXT ·emitCopy(SB), NOSPLIT, $0-48\n\tMOVQ dst_base+0(FP), DI\n\tMOVQ DI, SI\n\tMOVQ offset+24(FP), R11\n\tMOVQ length+32(FP), AX\n\nloop0:\n\t// for length >= 68 { etc }\n\tCMPL AX, $68\n\tJLT  step1\n\n\t// Emit a length 64 copy, encoded as 3 bytes.\n\tMOVB $0xfe, 0(DI)\n\tMOVW R11, 1(DI)\n\tADDQ $3, DI\n\tSUBL $64, AX\n\tJMP  loop0\n\nstep1:\n\t// if length > 64 { etc }\n\tCMPL AX, $64\n\tJLE  step2\n\n\t// Emit a length 60 copy, encoded as 3 bytes.\n\tMOVB $0xee, 0(DI)\n\tMOVW R11, 1(DI)\n\tADDQ $3, DI\n\tSUBL $60, AX\n\nstep2:\n\t// if length >= 12 || offset >= 2048 { goto step3 }\n\tCMPL AX, $12\n\tJGE  step3\n\tCMPL R11, $2048\n\tJGE  step3\n\n\t// Emit the remaining copy, encoded as 2 bytes.\n\tMOVB R11, 1(DI)\n\tSHRL $8, R11\n\tSHLB $5, R11\n\tSUBB $4, AX\n\tSHLB $2, AX\n\tORB  AX, R11\n\tORB  $1, R11\n\tMOVB R11, 0(DI)\n\tADDQ $2, DI\n\n\t// Return the number of bytes written.\n\tSUBQ SI, DI\n\tMOVQ DI, ret+40(FP)\n\tRET\n\nstep3:\n\t// Emit the remaining copy, encoded as 3 bytes.\n\tSUBL $1, AX\n\tSHLB $2, AX\n\tORB  $2, AX\n\tMOVB AX, 0(DI)\n\tMOVW R11, 1(DI)\n\tADDQ $3, DI\n\n\t// Return the number of bytes written.\n\tSUBQ SI, DI\n\tMOVQ DI, ret+40(FP)\n\tRET\n\n// ----------------------------------------------------------------------------\n\n// func extendMatch(src []byte, i, j int) int\n//\n// All local variables fit into registers. The register allocation:\n//\t- DX\t&src[0]\n//\t- SI\t&src[j]\n//\t- R13\t&src[len(src) - 8]\n//\t- R14\t&src[len(src)]\n//\t- R15\t&src[i]\n//\n// The unusual register allocation of local variables, such as R15 for a source\n// pointer, matches the allocation used at the call site in encodeBlock, which\n// makes it easier to manually inline this function.\nTEXT ·extendMatch(SB), NOSPLIT, $0-48\n\tMOVQ src_base+0(FP), DX\n\tMOVQ src_len+8(FP), R14\n\tMOVQ i+24(FP), R15\n\tMOVQ j+32(FP), SI\n\tADDQ DX, R14\n\tADDQ DX, R15\n\tADDQ DX, SI\n\tMOVQ R14, R13\n\tSUBQ $8, R13\n\ncmp8:\n\t// As long as we are 8 or more bytes before the end of src, we can load and\n\t// compare 8 bytes at a time. If those 8 bytes are equal, repeat.\n\tCMPQ SI, R13\n\tJA   cmp1\n\tMOVQ (R15), AX\n\tMOVQ (SI), BX\n\tCMPQ AX, BX\n\tJNE  bsf\n\tADDQ $8, R15\n\tADDQ $8, SI\n\tJMP  cmp8\n\nbsf:\n\t// If those 8 bytes were not equal, XOR the two 8 byte values, and return\n\t// the index of the first byte that differs. The BSF instruction finds the\n\t// least significant 1 bit, the amd64 architecture is little-endian, and\n\t// the shift by 3 converts a bit index to a byte index.\n\tXORQ AX, BX\n\tBSFQ BX, BX\n\tSHRQ $3, BX\n\tADDQ BX, SI\n\n\t// Convert from &src[ret] to ret.\n\tSUBQ DX, SI\n\tMOVQ SI, ret+40(FP)\n\tRET\n\ncmp1:\n\t// In src's tail, compare 1 byte at a time.\n\tCMPQ SI, R14\n\tJAE  extendMatchEnd\n\tMOVB (R15), AX\n\tMOVB (SI), BX\n\tCMPB AX, BX\n\tJNE  extendMatchEnd\n\tADDQ $1, R15\n\tADDQ $1, SI\n\tJMP  cmp1\n\nextendMatchEnd:\n\t// Convert from &src[ret] to ret.\n\tSUBQ DX, SI\n\tMOVQ SI, ret+40(FP)\n\tRET\n\n// ----------------------------------------------------------------------------\n\n// func encodeBlock(dst, src []byte) (d int)\n//\n// All local variables fit into registers, other than \"var table\". The register\n// allocation:\n//\t- AX\t.\t.\n//\t- BX\t.\t.\n//\t- CX\t56\tshift (note that amd64 shifts by non-immediates must use CX).\n//\t- DX\t64\t&src[0], tableSize\n//\t- SI\t72\t&src[s]\n//\t- DI\t80\t&dst[d]\n//\t- R9\t88\tsLimit\n//\t- R10\t.\t&src[nextEmit]\n//\t- R11\t96\tprevHash, currHash, nextHash, offset\n//\t- R12\t104\t&src[base], skip\n//\t- R13\t.\t&src[nextS], &src[len(src) - 8]\n//\t- R14\t.\tlen(src), bytesBetweenHashLookups, &src[len(src)], x\n//\t- R15\t112\tcandidate\n//\n// The second column (56, 64, etc) is the stack offset to spill the registers\n// when calling other functions. We could pack this slightly tighter, but it's\n// simpler to have a dedicated spill map independent of the function called.\n//\n// \"var table [maxTableSize]uint16\" takes up 32768 bytes of stack space. An\n// extra 56 bytes, to call other functions, and an extra 64 bytes, to spill\n// local variables (registers) during calls gives 32768 + 56 + 64 = 32888.\nTEXT ·encodeBlock(SB), 0, $32888-56\n\tMOVQ dst_base+0(FP), DI\n\tMOVQ src_base+24(FP), SI\n\tMOVQ src_len+32(FP), R14\n\n\t// shift, tableSize := uint32(32-8), 1<<8\n\tMOVQ $24, CX\n\tMOVQ $256, DX\n\ncalcShift:\n\t// for ; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 {\n\t//\tshift--\n\t// }\n\tCMPQ DX, $16384\n\tJGE  varTable\n\tCMPQ DX, R14\n\tJGE  varTable\n\tSUBQ $1, CX\n\tSHLQ $1, DX\n\tJMP  calcShift\n\nvarTable:\n\t// var table [maxTableSize]uint16\n\t//\n\t// In the asm code, unlike the Go code, we can zero-initialize only the\n\t// first tableSize elements. Each uint16 element is 2 bytes and each MOVOU\n\t// writes 16 bytes, so we can do only tableSize/8 writes instead of the\n\t// 2048 writes that would zero-initialize all of table's 32768 bytes.\n\tSHRQ $3, DX\n\tLEAQ table-32768(SP), BX\n\tPXOR X0, X0\n\nmemclr:\n\tMOVOU X0, 0(BX)\n\tADDQ  $16, BX\n\tSUBQ  $1, DX\n\tJNZ   memclr\n\n\t// !!! DX = &src[0]\n\tMOVQ SI, DX\n\n\t// sLimit := len(src) - inputMargin\n\tMOVQ R14, R9\n\tSUBQ $15, R9\n\n\t// !!! Pre-emptively spill CX, DX and R9 to the stack. Their values don't\n\t// change for the rest of the function.\n\tMOVQ CX, 56(SP)\n\tMOVQ DX, 64(SP)\n\tMOVQ R9, 88(SP)\n\n\t// nextEmit := 0\n\tMOVQ DX, R10\n\n\t// s := 1\n\tADDQ $1, SI\n\n\t// nextHash := hash(load32(src, s), shift)\n\tMOVL  0(SI), R11\n\tIMULL $0x1e35a7bd, R11\n\tSHRL  CX, R11\n\nouter:\n\t// for { etc }\n\n\t// skip := 32\n\tMOVQ $32, R12\n\n\t// nextS := s\n\tMOVQ SI, R13\n\n\t// candidate := 0\n\tMOVQ $0, R15\n\ninner0:\n\t// for { etc }\n\n\t// s := nextS\n\tMOVQ R13, SI\n\n\t// bytesBetweenHashLookups := skip >> 5\n\tMOVQ R12, R14\n\tSHRQ $5, R14\n\n\t// nextS = s + bytesBetweenHashLookups\n\tADDQ R14, R13\n\n\t// skip += bytesBetweenHashLookups\n\tADDQ R14, R12\n\n\t// if nextS > sLimit { goto emitRemainder }\n\tMOVQ R13, AX\n\tSUBQ DX, AX\n\tCMPQ AX, R9\n\tJA   emitRemainder\n\n\t// candidate = int(table[nextHash])\n\t// XXX: MOVWQZX table-32768(SP)(R11*2), R15\n\t// XXX: 4e 0f b7 7c 5c 78       movzwq 0x78(%rsp,%r11,2),%r15\n\tBYTE $0x4e\n\tBYTE $0x0f\n\tBYTE $0xb7\n\tBYTE $0x7c\n\tBYTE $0x5c\n\tBYTE $0x78\n\n\t// table[nextHash] = uint16(s)\n\tMOVQ SI, AX\n\tSUBQ DX, AX\n\n\t// XXX: MOVW AX, table-32768(SP)(R11*2)\n\t// XXX: 66 42 89 44 5c 78       mov    %ax,0x78(%rsp,%r11,2)\n\tBYTE $0x66\n\tBYTE $0x42\n\tBYTE $0x89\n\tBYTE $0x44\n\tBYTE $0x5c\n\tBYTE $0x78\n\n\t// nextHash = hash(load32(src, nextS), shift)\n\tMOVL  0(R13), R11\n\tIMULL $0x1e35a7bd, R11\n\tSHRL  CX, R11\n\n\t// if load32(src, s) != load32(src, candidate) { continue } break\n\tMOVL 0(SI), AX\n\tMOVL (DX)(R15*1), BX\n\tCMPL AX, BX\n\tJNE  inner0\n\nfourByteMatch:\n\t// As per the encode_other.go code:\n\t//\n\t// A 4-byte match has been found. We'll later see etc.\n\n\t// !!! Jump to a fast path for short (<= 16 byte) literals. See the comment\n\t// on inputMargin in encode.go.\n\tMOVQ SI, AX\n\tSUBQ R10, AX\n\tCMPQ AX, $16\n\tJLE  emitLiteralFastPath\n\n\t// ----------------------------------------\n\t// Begin inline of the emitLiteral call.\n\t//\n\t// d += emitLiteral(dst[d:], src[nextEmit:s])\n\n\tMOVL AX, BX\n\tSUBL $1, BX\n\n\tCMPL BX, $60\n\tJLT  inlineEmitLiteralOneByte\n\tCMPL BX, $256\n\tJLT  inlineEmitLiteralTwoBytes\n\ninlineEmitLiteralThreeBytes:\n\tMOVB $0xf4, 0(DI)\n\tMOVW BX, 1(DI)\n\tADDQ $3, DI\n\tJMP  inlineEmitLiteralMemmove\n\ninlineEmitLiteralTwoBytes:\n\tMOVB $0xf0, 0(DI)\n\tMOVB BX, 1(DI)\n\tADDQ $2, DI\n\tJMP  inlineEmitLiteralMemmove\n\ninlineEmitLiteralOneByte:\n\tSHLB $2, BX\n\tMOVB BX, 0(DI)\n\tADDQ $1, DI\n\ninlineEmitLiteralMemmove:\n\t// Spill local variables (registers) onto the stack; call; unspill.\n\t//\n\t// copy(dst[i:], lit)\n\t//\n\t// This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push\n\t// DI, R10 and AX as arguments.\n\tMOVQ DI, 0(SP)\n\tMOVQ R10, 8(SP)\n\tMOVQ AX, 16(SP)\n\tADDQ AX, DI              // Finish the \"d +=\" part of \"d += emitLiteral(etc)\".\n\tMOVQ SI, 72(SP)\n\tMOVQ DI, 80(SP)\n\tMOVQ R15, 112(SP)\n\tCALL runtime·memmove(SB)\n\tMOVQ 56(SP), CX\n\tMOVQ 64(SP), DX\n\tMOVQ 72(SP), SI\n\tMOVQ 80(SP), DI\n\tMOVQ 88(SP), R9\n\tMOVQ 112(SP), R15\n\tJMP  inner1\n\ninlineEmitLiteralEnd:\n\t// End inline of the emitLiteral call.\n\t// ----------------------------------------\n\nemitLiteralFastPath:\n\t// !!! Emit the 1-byte encoding \"uint8(len(lit)-1)<<2\".\n\tMOVB AX, BX\n\tSUBB $1, BX\n\tSHLB $2, BX\n\tMOVB BX, (DI)\n\tADDQ $1, DI\n\n\t// !!! Implement the copy from lit to dst as a 16-byte load and store.\n\t// (Encode's documentation says that dst and src must not overlap.)\n\t//\n\t// This always copies 16 bytes, instead of only len(lit) bytes, but that's\n\t// OK. Subsequent iterations will fix up the overrun.\n\t//\n\t// Note that on amd64, it is legal and cheap to issue unaligned 8-byte or\n\t// 16-byte loads and stores. This technique probably wouldn't be as\n\t// effective on architectures that are fussier about alignment.\n\tMOVOU 0(R10), X0\n\tMOVOU X0, 0(DI)\n\tADDQ  AX, DI\n\ninner1:\n\t// for { etc }\n\n\t// base := s\n\tMOVQ SI, R12\n\n\t// !!! offset := base - candidate\n\tMOVQ R12, R11\n\tSUBQ R15, R11\n\tSUBQ DX, R11\n\n\t// ----------------------------------------\n\t// Begin inline of the extendMatch call.\n\t//\n\t// s = extendMatch(src, candidate+4, s+4)\n\n\t// !!! R14 = &src[len(src)]\n\tMOVQ src_len+32(FP), R14\n\tADDQ DX, R14\n\n\t// !!! R13 = &src[len(src) - 8]\n\tMOVQ R14, R13\n\tSUBQ $8, R13\n\n\t// !!! R15 = &src[candidate + 4]\n\tADDQ $4, R15\n\tADDQ DX, R15\n\n\t// !!! s += 4\n\tADDQ $4, SI\n\ninlineExtendMatchCmp8:\n\t// As long as we are 8 or more bytes before the end of src, we can load and\n\t// compare 8 bytes at a time. If those 8 bytes are equal, repeat.\n\tCMPQ SI, R13\n\tJA   inlineExtendMatchCmp1\n\tMOVQ (R15), AX\n\tMOVQ (SI), BX\n\tCMPQ AX, BX\n\tJNE  inlineExtendMatchBSF\n\tADDQ $8, R15\n\tADDQ $8, SI\n\tJMP  inlineExtendMatchCmp8\n\ninlineExtendMatchBSF:\n\t// If those 8 bytes were not equal, XOR the two 8 byte values, and return\n\t// the index of the first byte that differs. The BSF instruction finds the\n\t// least significant 1 bit, the amd64 architecture is little-endian, and\n\t// the shift by 3 converts a bit index to a byte index.\n\tXORQ AX, BX\n\tBSFQ BX, BX\n\tSHRQ $3, BX\n\tADDQ BX, SI\n\tJMP  inlineExtendMatchEnd\n\ninlineExtendMatchCmp1:\n\t// In src's tail, compare 1 byte at a time.\n\tCMPQ SI, R14\n\tJAE  inlineExtendMatchEnd\n\tMOVB (R15), AX\n\tMOVB (SI), BX\n\tCMPB AX, BX\n\tJNE  inlineExtendMatchEnd\n\tADDQ $1, R15\n\tADDQ $1, SI\n\tJMP  inlineExtendMatchCmp1\n\ninlineExtendMatchEnd:\n\t// End inline of the extendMatch call.\n\t// ----------------------------------------\n\n\t// ----------------------------------------\n\t// Begin inline of the emitCopy call.\n\t//\n\t// d += emitCopy(dst[d:], base-candidate, s-base)\n\n\t// !!! length := s - base\n\tMOVQ SI, AX\n\tSUBQ R12, AX\n\ninlineEmitCopyLoop0:\n\t// for length >= 68 { etc }\n\tCMPL AX, $68\n\tJLT  inlineEmitCopyStep1\n\n\t// Emit a length 64 copy, encoded as 3 bytes.\n\tMOVB $0xfe, 0(DI)\n\tMOVW R11, 1(DI)\n\tADDQ $3, DI\n\tSUBL $64, AX\n\tJMP  inlineEmitCopyLoop0\n\ninlineEmitCopyStep1:\n\t// if length > 64 { etc }\n\tCMPL AX, $64\n\tJLE  inlineEmitCopyStep2\n\n\t// Emit a length 60 copy, encoded as 3 bytes.\n\tMOVB $0xee, 0(DI)\n\tMOVW R11, 1(DI)\n\tADDQ $3, DI\n\tSUBL $60, AX\n\ninlineEmitCopyStep2:\n\t// if length >= 12 || offset >= 2048 { goto inlineEmitCopyStep3 }\n\tCMPL AX, $12\n\tJGE  inlineEmitCopyStep3\n\tCMPL R11, $2048\n\tJGE  inlineEmitCopyStep3\n\n\t// Emit the remaining copy, encoded as 2 bytes.\n\tMOVB R11, 1(DI)\n\tSHRL $8, R11\n\tSHLB $5, R11\n\tSUBB $4, AX\n\tSHLB $2, AX\n\tORB  AX, R11\n\tORB  $1, R11\n\tMOVB R11, 0(DI)\n\tADDQ $2, DI\n\tJMP  inlineEmitCopyEnd\n\ninlineEmitCopyStep3:\n\t// Emit the remaining copy, encoded as 3 bytes.\n\tSUBL $1, AX\n\tSHLB $2, AX\n\tORB  $2, AX\n\tMOVB AX, 0(DI)\n\tMOVW R11, 1(DI)\n\tADDQ $3, DI\n\ninlineEmitCopyEnd:\n\t// End inline of the emitCopy call.\n\t// ----------------------------------------\n\n\t// nextEmit = s\n\tMOVQ SI, R10\n\n\t// if s >= sLimit { goto emitRemainder }\n\tMOVQ SI, AX\n\tSUBQ DX, AX\n\tCMPQ AX, R9\n\tJAE  emitRemainder\n\n\t// As per the encode_other.go code:\n\t//\n\t// We could immediately etc.\n\n\t// x := load64(src, s-1)\n\tMOVQ -1(SI), R14\n\n\t// prevHash := hash(uint32(x>>0), shift)\n\tMOVL  R14, R11\n\tIMULL $0x1e35a7bd, R11\n\tSHRL  CX, R11\n\n\t// table[prevHash] = uint16(s-1)\n\tMOVQ SI, AX\n\tSUBQ DX, AX\n\tSUBQ $1, AX\n\n\t// XXX: MOVW AX, table-32768(SP)(R11*2)\n\t// XXX: 66 42 89 44 5c 78       mov    %ax,0x78(%rsp,%r11,2)\n\tBYTE $0x66\n\tBYTE $0x42\n\tBYTE $0x89\n\tBYTE $0x44\n\tBYTE $0x5c\n\tBYTE $0x78\n\n\t// currHash := hash(uint32(x>>8), shift)\n\tSHRQ  $8, R14\n\tMOVL  R14, R11\n\tIMULL $0x1e35a7bd, R11\n\tSHRL  CX, R11\n\n\t// candidate = int(table[currHash])\n\t// XXX: MOVWQZX table-32768(SP)(R11*2), R15\n\t// XXX: 4e 0f b7 7c 5c 78       movzwq 0x78(%rsp,%r11,2),%r15\n\tBYTE $0x4e\n\tBYTE $0x0f\n\tBYTE $0xb7\n\tBYTE $0x7c\n\tBYTE $0x5c\n\tBYTE $0x78\n\n\t// table[currHash] = uint16(s)\n\tADDQ $1, AX\n\n\t// XXX: MOVW AX, table-32768(SP)(R11*2)\n\t// XXX: 66 42 89 44 5c 78       mov    %ax,0x78(%rsp,%r11,2)\n\tBYTE $0x66\n\tBYTE $0x42\n\tBYTE $0x89\n\tBYTE $0x44\n\tBYTE $0x5c\n\tBYTE $0x78\n\n\t// if uint32(x>>8) == load32(src, candidate) { continue }\n\tMOVL (DX)(R15*1), BX\n\tCMPL R14, BX\n\tJEQ  inner1\n\n\t// nextHash = hash(uint32(x>>16), shift)\n\tSHRQ  $8, R14\n\tMOVL  R14, R11\n\tIMULL $0x1e35a7bd, R11\n\tSHRL  CX, R11\n\n\t// s++\n\tADDQ $1, SI\n\n\t// break out of the inner1 for loop, i.e. continue the outer loop.\n\tJMP outer\n\nemitRemainder:\n\t// if nextEmit < len(src) { etc }\n\tMOVQ src_len+32(FP), AX\n\tADDQ DX, AX\n\tCMPQ R10, AX\n\tJEQ  encodeBlockEnd\n\n\t// d += emitLiteral(dst[d:], src[nextEmit:])\n\t//\n\t// Push args.\n\tMOVQ DI, 0(SP)\n\tMOVQ $0, 8(SP)   // Unnecessary, as the callee ignores it, but conservative.\n\tMOVQ $0, 16(SP)  // Unnecessary, as the callee ignores it, but conservative.\n\tMOVQ R10, 24(SP)\n\tSUBQ R10, AX\n\tMOVQ AX, 32(SP)\n\tMOVQ AX, 40(SP)  // Unnecessary, as the callee ignores it, but conservative.\n\n\t// Spill local variables (registers) onto the stack; call; unspill.\n\tMOVQ DI, 80(SP)\n\tCALL ·emitLiteral(SB)\n\tMOVQ 80(SP), DI\n\n\t// Finish the \"d +=\" part of \"d += emitLiteral(etc)\".\n\tADDQ 48(SP), DI\n\nencodeBlockEnd:\n\tMOVQ dst_base+0(FP), AX\n\tSUBQ AX, DI\n\tMOVQ DI, d+48(FP)\n\tRET\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/encode_arm64.s",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !appengine\n// +build gc\n// +build !noasm\n\n#include \"textflag.h\"\n\n// The asm code generally follows the pure Go code in encode_other.go, except\n// where marked with a \"!!!\".\n\n// ----------------------------------------------------------------------------\n\n// func emitLiteral(dst, lit []byte) int\n//\n// All local variables fit into registers. The register allocation:\n//\t- R3\tlen(lit)\n//\t- R4\tn\n//\t- R6\treturn value\n//\t- R8\t&dst[i]\n//\t- R10\t&lit[0]\n//\n// The 32 bytes of stack space is to call runtime·memmove.\n//\n// The unusual register allocation of local variables, such as R10 for the\n// source pointer, matches the allocation used at the call site in encodeBlock,\n// which makes it easier to manually inline this function.\nTEXT ·emitLiteral(SB), NOSPLIT, $32-56\n\tMOVD dst_base+0(FP), R8\n\tMOVD lit_base+24(FP), R10\n\tMOVD lit_len+32(FP), R3\n\tMOVD R3, R6\n\tMOVW R3, R4\n\tSUBW $1, R4, R4\n\n\tCMPW $60, R4\n\tBLT  oneByte\n\tCMPW $256, R4\n\tBLT  twoBytes\n\nthreeBytes:\n\tMOVD $0xf4, R2\n\tMOVB R2, 0(R8)\n\tMOVW R4, 1(R8)\n\tADD  $3, R8, R8\n\tADD  $3, R6, R6\n\tB    memmove\n\ntwoBytes:\n\tMOVD $0xf0, R2\n\tMOVB R2, 0(R8)\n\tMOVB R4, 1(R8)\n\tADD  $2, R8, R8\n\tADD  $2, R6, R6\n\tB    memmove\n\noneByte:\n\tLSLW $2, R4, R4\n\tMOVB R4, 0(R8)\n\tADD  $1, R8, R8\n\tADD  $1, R6, R6\n\nmemmove:\n\tMOVD R6, ret+48(FP)\n\n\t// copy(dst[i:], lit)\n\t//\n\t// This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push\n\t// R8, R10 and R3 as arguments.\n\tMOVD R8, 8(RSP)\n\tMOVD R10, 16(RSP)\n\tMOVD R3, 24(RSP)\n\tCALL runtime·memmove(SB)\n\tRET\n\n// ----------------------------------------------------------------------------\n\n// func emitCopy(dst []byte, offset, length int) int\n//\n// All local variables fit into registers. The register allocation:\n//\t- R3\tlength\n//\t- R7\t&dst[0]\n//\t- R8\t&dst[i]\n//\t- R11\toffset\n//\n// The unusual register allocation of local variables, such as R11 for the\n// offset, matches the allocation used at the call site in encodeBlock, which\n// makes it easier to manually inline this function.\nTEXT ·emitCopy(SB), NOSPLIT, $0-48\n\tMOVD dst_base+0(FP), R8\n\tMOVD R8, R7\n\tMOVD offset+24(FP), R11\n\tMOVD length+32(FP), R3\n\nloop0:\n\t// for length >= 68 { etc }\n\tCMPW $68, R3\n\tBLT  step1\n\n\t// Emit a length 64 copy, encoded as 3 bytes.\n\tMOVD $0xfe, R2\n\tMOVB R2, 0(R8)\n\tMOVW R11, 1(R8)\n\tADD  $3, R8, R8\n\tSUB  $64, R3, R3\n\tB    loop0\n\nstep1:\n\t// if length > 64 { etc }\n\tCMP $64, R3\n\tBLE step2\n\n\t// Emit a length 60 copy, encoded as 3 bytes.\n\tMOVD $0xee, R2\n\tMOVB R2, 0(R8)\n\tMOVW R11, 1(R8)\n\tADD  $3, R8, R8\n\tSUB  $60, R3, R3\n\nstep2:\n\t// if length >= 12 || offset >= 2048 { goto step3 }\n\tCMP  $12, R3\n\tBGE  step3\n\tCMPW $2048, R11\n\tBGE  step3\n\n\t// Emit the remaining copy, encoded as 2 bytes.\n\tMOVB R11, 1(R8)\n\tLSRW $3, R11, R11\n\tAND  $0xe0, R11, R11\n\tSUB  $4, R3, R3\n\tLSLW $2, R3\n\tAND  $0xff, R3, R3\n\tORRW R3, R11, R11\n\tORRW $1, R11, R11\n\tMOVB R11, 0(R8)\n\tADD  $2, R8, R8\n\n\t// Return the number of bytes written.\n\tSUB  R7, R8, R8\n\tMOVD R8, ret+40(FP)\n\tRET\n\nstep3:\n\t// Emit the remaining copy, encoded as 3 bytes.\n\tSUB  $1, R3, R3\n\tAND  $0xff, R3, R3\n\tLSLW $2, R3, R3\n\tORRW $2, R3, R3\n\tMOVB R3, 0(R8)\n\tMOVW R11, 1(R8)\n\tADD  $3, R8, R8\n\n\t// Return the number of bytes written.\n\tSUB  R7, R8, R8\n\tMOVD R8, ret+40(FP)\n\tRET\n\n// ----------------------------------------------------------------------------\n\n// func extendMatch(src []byte, i, j int) int\n//\n// All local variables fit into registers. The register allocation:\n//\t- R6\t&src[0]\n//\t- R7\t&src[j]\n//\t- R13\t&src[len(src) - 8]\n//\t- R14\t&src[len(src)]\n//\t- R15\t&src[i]\n//\n// The unusual register allocation of local variables, such as R15 for a source\n// pointer, matches the allocation used at the call site in encodeBlock, which\n// makes it easier to manually inline this function.\nTEXT ·extendMatch(SB), NOSPLIT, $0-48\n\tMOVD src_base+0(FP), R6\n\tMOVD src_len+8(FP), R14\n\tMOVD i+24(FP), R15\n\tMOVD j+32(FP), R7\n\tADD  R6, R14, R14\n\tADD  R6, R15, R15\n\tADD  R6, R7, R7\n\tMOVD R14, R13\n\tSUB  $8, R13, R13\n\ncmp8:\n\t// As long as we are 8 or more bytes before the end of src, we can load and\n\t// compare 8 bytes at a time. If those 8 bytes are equal, repeat.\n\tCMP  R13, R7\n\tBHI  cmp1\n\tMOVD (R15), R3\n\tMOVD (R7), R4\n\tCMP  R4, R3\n\tBNE  bsf\n\tADD  $8, R15, R15\n\tADD  $8, R7, R7\n\tB    cmp8\n\nbsf:\n\t// If those 8 bytes were not equal, XOR the two 8 byte values, and return\n\t// the index of the first byte that differs.\n\t// RBIT reverses the bit order, then CLZ counts the leading zeros, the\n\t// combination of which finds the least significant bit which is set.\n\t// The arm64 architecture is little-endian, and the shift by 3 converts\n\t// a bit index to a byte index.\n\tEOR  R3, R4, R4\n\tRBIT R4, R4\n\tCLZ  R4, R4\n\tADD  R4>>3, R7, R7\n\n\t// Convert from &src[ret] to ret.\n\tSUB  R6, R7, R7\n\tMOVD R7, ret+40(FP)\n\tRET\n\ncmp1:\n\t// In src's tail, compare 1 byte at a time.\n\tCMP  R7, R14\n\tBLS  extendMatchEnd\n\tMOVB (R15), R3\n\tMOVB (R7), R4\n\tCMP  R4, R3\n\tBNE  extendMatchEnd\n\tADD  $1, R15, R15\n\tADD  $1, R7, R7\n\tB    cmp1\n\nextendMatchEnd:\n\t// Convert from &src[ret] to ret.\n\tSUB  R6, R7, R7\n\tMOVD R7, ret+40(FP)\n\tRET\n\n// ----------------------------------------------------------------------------\n\n// func encodeBlock(dst, src []byte) (d int)\n//\n// All local variables fit into registers, other than \"var table\". The register\n// allocation:\n//\t- R3\t.\t.\n//\t- R4\t.\t.\n//\t- R5\t64\tshift\n//\t- R6\t72\t&src[0], tableSize\n//\t- R7\t80\t&src[s]\n//\t- R8\t88\t&dst[d]\n//\t- R9\t96\tsLimit\n//\t- R10\t.\t&src[nextEmit]\n//\t- R11\t104\tprevHash, currHash, nextHash, offset\n//\t- R12\t112\t&src[base], skip\n//\t- R13\t.\t&src[nextS], &src[len(src) - 8]\n//\t- R14\t.\tlen(src), bytesBetweenHashLookups, &src[len(src)], x\n//\t- R15\t120\tcandidate\n//\t- R16\t.\thash constant, 0x1e35a7bd\n//\t- R17\t.\t&table\n//\t- .  \t128\ttable\n//\n// The second column (64, 72, etc) is the stack offset to spill the registers\n// when calling other functions. We could pack this slightly tighter, but it's\n// simpler to have a dedicated spill map independent of the function called.\n//\n// \"var table [maxTableSize]uint16\" takes up 32768 bytes of stack space. An\n// extra 64 bytes, to call other functions, and an extra 64 bytes, to spill\n// local variables (registers) during calls gives 32768 + 64 + 64 = 32896.\nTEXT ·encodeBlock(SB), 0, $32896-56\n\tMOVD dst_base+0(FP), R8\n\tMOVD src_base+24(FP), R7\n\tMOVD src_len+32(FP), R14\n\n\t// shift, tableSize := uint32(32-8), 1<<8\n\tMOVD  $24, R5\n\tMOVD  $256, R6\n\tMOVW  $0xa7bd, R16\n\tMOVKW $(0x1e35<<16), R16\n\ncalcShift:\n\t// for ; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 {\n\t//\tshift--\n\t// }\n\tMOVD $16384, R2\n\tCMP  R2, R6\n\tBGE  varTable\n\tCMP  R14, R6\n\tBGE  varTable\n\tSUB  $1, R5, R5\n\tLSL  $1, R6, R6\n\tB    calcShift\n\nvarTable:\n\t// var table [maxTableSize]uint16\n\t//\n\t// In the asm code, unlike the Go code, we can zero-initialize only the\n\t// first tableSize elements. Each uint16 element is 2 bytes and each\n\t// iterations writes 64 bytes, so we can do only tableSize/32 writes\n\t// instead of the 2048 writes that would zero-initialize all of table's\n\t// 32768 bytes. This clear could overrun the first tableSize elements, but\n\t// it won't overrun the allocated stack size.\n\tADD  $128, RSP, R17\n\tMOVD R17, R4\n\n\t// !!! R6 = &src[tableSize]\n\tADD R6<<1, R17, R6\n\nmemclr:\n\tSTP.P (ZR, ZR), 64(R4)\n\tSTP   (ZR, ZR), -48(R4)\n\tSTP   (ZR, ZR), -32(R4)\n\tSTP   (ZR, ZR), -16(R4)\n\tCMP   R4, R6\n\tBHI   memclr\n\n\t// !!! R6 = &src[0]\n\tMOVD R7, R6\n\n\t// sLimit := len(src) - inputMargin\n\tMOVD R14, R9\n\tSUB  $15, R9, R9\n\n\t// !!! Pre-emptively spill R5, R6 and R9 to the stack. Their values don't\n\t// change for the rest of the function.\n\tMOVD R5, 64(RSP)\n\tMOVD R6, 72(RSP)\n\tMOVD R9, 96(RSP)\n\n\t// nextEmit := 0\n\tMOVD R6, R10\n\n\t// s := 1\n\tADD $1, R7, R7\n\n\t// nextHash := hash(load32(src, s), shift)\n\tMOVW 0(R7), R11\n\tMULW R16, R11, R11\n\tLSRW R5, R11, R11\n\nouter:\n\t// for { etc }\n\n\t// skip := 32\n\tMOVD $32, R12\n\n\t// nextS := s\n\tMOVD R7, R13\n\n\t// candidate := 0\n\tMOVD $0, R15\n\ninner0:\n\t// for { etc }\n\n\t// s := nextS\n\tMOVD R13, R7\n\n\t// bytesBetweenHashLookups := skip >> 5\n\tMOVD R12, R14\n\tLSR  $5, R14, R14\n\n\t// nextS = s + bytesBetweenHashLookups\n\tADD R14, R13, R13\n\n\t// skip += bytesBetweenHashLookups\n\tADD R14, R12, R12\n\n\t// if nextS > sLimit { goto emitRemainder }\n\tMOVD R13, R3\n\tSUB  R6, R3, R3\n\tCMP  R9, R3\n\tBHI  emitRemainder\n\n\t// candidate = int(table[nextHash])\n\tMOVHU 0(R17)(R11<<1), R15\n\n\t// table[nextHash] = uint16(s)\n\tMOVD R7, R3\n\tSUB  R6, R3, R3\n\n\tMOVH R3, 0(R17)(R11<<1)\n\n\t// nextHash = hash(load32(src, nextS), shift)\n\tMOVW 0(R13), R11\n\tMULW R16, R11\n\tLSRW R5, R11, R11\n\n\t// if load32(src, s) != load32(src, candidate) { continue } break\n\tMOVW 0(R7), R3\n\tMOVW (R6)(R15), R4\n\tCMPW R4, R3\n\tBNE  inner0\n\nfourByteMatch:\n\t// As per the encode_other.go code:\n\t//\n\t// A 4-byte match has been found. We'll later see etc.\n\n\t// !!! Jump to a fast path for short (<= 16 byte) literals. See the comment\n\t// on inputMargin in encode.go.\n\tMOVD R7, R3\n\tSUB  R10, R3, R3\n\tCMP  $16, R3\n\tBLE  emitLiteralFastPath\n\n\t// ----------------------------------------\n\t// Begin inline of the emitLiteral call.\n\t//\n\t// d += emitLiteral(dst[d:], src[nextEmit:s])\n\n\tMOVW R3, R4\n\tSUBW $1, R4, R4\n\n\tMOVW $60, R2\n\tCMPW R2, R4\n\tBLT  inlineEmitLiteralOneByte\n\tMOVW $256, R2\n\tCMPW R2, R4\n\tBLT  inlineEmitLiteralTwoBytes\n\ninlineEmitLiteralThreeBytes:\n\tMOVD $0xf4, R1\n\tMOVB R1, 0(R8)\n\tMOVW R4, 1(R8)\n\tADD  $3, R8, R8\n\tB    inlineEmitLiteralMemmove\n\ninlineEmitLiteralTwoBytes:\n\tMOVD $0xf0, R1\n\tMOVB R1, 0(R8)\n\tMOVB R4, 1(R8)\n\tADD  $2, R8, R8\n\tB    inlineEmitLiteralMemmove\n\ninlineEmitLiteralOneByte:\n\tLSLW $2, R4, R4\n\tMOVB R4, 0(R8)\n\tADD  $1, R8, R8\n\ninlineEmitLiteralMemmove:\n\t// Spill local variables (registers) onto the stack; call; unspill.\n\t//\n\t// copy(dst[i:], lit)\n\t//\n\t// This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push\n\t// R8, R10 and R3 as arguments.\n\tMOVD R8, 8(RSP)\n\tMOVD R10, 16(RSP)\n\tMOVD R3, 24(RSP)\n\n\t// Finish the \"d +=\" part of \"d += emitLiteral(etc)\".\n\tADD   R3, R8, R8\n\tMOVD  R7, 80(RSP)\n\tMOVD  R8, 88(RSP)\n\tMOVD  R15, 120(RSP)\n\tCALL  runtime·memmove(SB)\n\tMOVD  64(RSP), R5\n\tMOVD  72(RSP), R6\n\tMOVD  80(RSP), R7\n\tMOVD  88(RSP), R8\n\tMOVD  96(RSP), R9\n\tMOVD  120(RSP), R15\n\tADD   $128, RSP, R17\n\tMOVW  $0xa7bd, R16\n\tMOVKW $(0x1e35<<16), R16\n\tB     inner1\n\ninlineEmitLiteralEnd:\n\t// End inline of the emitLiteral call.\n\t// ----------------------------------------\n\nemitLiteralFastPath:\n\t// !!! Emit the 1-byte encoding \"uint8(len(lit)-1)<<2\".\n\tMOVB R3, R4\n\tSUBW $1, R4, R4\n\tAND  $0xff, R4, R4\n\tLSLW $2, R4, R4\n\tMOVB R4, (R8)\n\tADD  $1, R8, R8\n\n\t// !!! Implement the copy from lit to dst as a 16-byte load and store.\n\t// (Encode's documentation says that dst and src must not overlap.)\n\t//\n\t// This always copies 16 bytes, instead of only len(lit) bytes, but that's\n\t// OK. Subsequent iterations will fix up the overrun.\n\t//\n\t// Note that on arm64, it is legal and cheap to issue unaligned 8-byte or\n\t// 16-byte loads and stores. This technique probably wouldn't be as\n\t// effective on architectures that are fussier about alignment.\n\tLDP 0(R10), (R0, R1)\n\tSTP (R0, R1), 0(R8)\n\tADD R3, R8, R8\n\ninner1:\n\t// for { etc }\n\n\t// base := s\n\tMOVD R7, R12\n\n\t// !!! offset := base - candidate\n\tMOVD R12, R11\n\tSUB  R15, R11, R11\n\tSUB  R6, R11, R11\n\n\t// ----------------------------------------\n\t// Begin inline of the extendMatch call.\n\t//\n\t// s = extendMatch(src, candidate+4, s+4)\n\n\t// !!! R14 = &src[len(src)]\n\tMOVD src_len+32(FP), R14\n\tADD  R6, R14, R14\n\n\t// !!! R13 = &src[len(src) - 8]\n\tMOVD R14, R13\n\tSUB  $8, R13, R13\n\n\t// !!! R15 = &src[candidate + 4]\n\tADD $4, R15, R15\n\tADD R6, R15, R15\n\n\t// !!! s += 4\n\tADD $4, R7, R7\n\ninlineExtendMatchCmp8:\n\t// As long as we are 8 or more bytes before the end of src, we can load and\n\t// compare 8 bytes at a time. If those 8 bytes are equal, repeat.\n\tCMP  R13, R7\n\tBHI  inlineExtendMatchCmp1\n\tMOVD (R15), R3\n\tMOVD (R7), R4\n\tCMP  R4, R3\n\tBNE  inlineExtendMatchBSF\n\tADD  $8, R15, R15\n\tADD  $8, R7, R7\n\tB    inlineExtendMatchCmp8\n\ninlineExtendMatchBSF:\n\t// If those 8 bytes were not equal, XOR the two 8 byte values, and return\n\t// the index of the first byte that differs.\n\t// RBIT reverses the bit order, then CLZ counts the leading zeros, the\n\t// combination of which finds the least significant bit which is set.\n\t// The arm64 architecture is little-endian, and the shift by 3 converts\n\t// a bit index to a byte index.\n\tEOR  R3, R4, R4\n\tRBIT R4, R4\n\tCLZ  R4, R4\n\tADD  R4>>3, R7, R7\n\tB    inlineExtendMatchEnd\n\ninlineExtendMatchCmp1:\n\t// In src's tail, compare 1 byte at a time.\n\tCMP  R7, R14\n\tBLS  inlineExtendMatchEnd\n\tMOVB (R15), R3\n\tMOVB (R7), R4\n\tCMP  R4, R3\n\tBNE  inlineExtendMatchEnd\n\tADD  $1, R15, R15\n\tADD  $1, R7, R7\n\tB    inlineExtendMatchCmp1\n\ninlineExtendMatchEnd:\n\t// End inline of the extendMatch call.\n\t// ----------------------------------------\n\n\t// ----------------------------------------\n\t// Begin inline of the emitCopy call.\n\t//\n\t// d += emitCopy(dst[d:], base-candidate, s-base)\n\n\t// !!! length := s - base\n\tMOVD R7, R3\n\tSUB  R12, R3, R3\n\ninlineEmitCopyLoop0:\n\t// for length >= 68 { etc }\n\tMOVW $68, R2\n\tCMPW R2, R3\n\tBLT  inlineEmitCopyStep1\n\n\t// Emit a length 64 copy, encoded as 3 bytes.\n\tMOVD $0xfe, R1\n\tMOVB R1, 0(R8)\n\tMOVW R11, 1(R8)\n\tADD  $3, R8, R8\n\tSUBW $64, R3, R3\n\tB    inlineEmitCopyLoop0\n\ninlineEmitCopyStep1:\n\t// if length > 64 { etc }\n\tMOVW $64, R2\n\tCMPW R2, R3\n\tBLE  inlineEmitCopyStep2\n\n\t// Emit a length 60 copy, encoded as 3 bytes.\n\tMOVD $0xee, R1\n\tMOVB R1, 0(R8)\n\tMOVW R11, 1(R8)\n\tADD  $3, R8, R8\n\tSUBW $60, R3, R3\n\ninlineEmitCopyStep2:\n\t// if length >= 12 || offset >= 2048 { goto inlineEmitCopyStep3 }\n\tMOVW $12, R2\n\tCMPW R2, R3\n\tBGE  inlineEmitCopyStep3\n\tMOVW $2048, R2\n\tCMPW R2, R11\n\tBGE  inlineEmitCopyStep3\n\n\t// Emit the remaining copy, encoded as 2 bytes.\n\tMOVB R11, 1(R8)\n\tLSRW $8, R11, R11\n\tLSLW $5, R11, R11\n\tSUBW $4, R3, R3\n\tAND  $0xff, R3, R3\n\tLSLW $2, R3, R3\n\tORRW R3, R11, R11\n\tORRW $1, R11, R11\n\tMOVB R11, 0(R8)\n\tADD  $2, R8, R8\n\tB    inlineEmitCopyEnd\n\ninlineEmitCopyStep3:\n\t// Emit the remaining copy, encoded as 3 bytes.\n\tSUBW $1, R3, R3\n\tLSLW $2, R3, R3\n\tORRW $2, R3, R3\n\tMOVB R3, 0(R8)\n\tMOVW R11, 1(R8)\n\tADD  $3, R8, R8\n\ninlineEmitCopyEnd:\n\t// End inline of the emitCopy call.\n\t// ----------------------------------------\n\n\t// nextEmit = s\n\tMOVD R7, R10\n\n\t// if s >= sLimit { goto emitRemainder }\n\tMOVD R7, R3\n\tSUB  R6, R3, R3\n\tCMP  R3, R9\n\tBLS  emitRemainder\n\n\t// As per the encode_other.go code:\n\t//\n\t// We could immediately etc.\n\n\t// x := load64(src, s-1)\n\tMOVD -1(R7), R14\n\n\t// prevHash := hash(uint32(x>>0), shift)\n\tMOVW R14, R11\n\tMULW R16, R11, R11\n\tLSRW R5, R11, R11\n\n\t// table[prevHash] = uint16(s-1)\n\tMOVD R7, R3\n\tSUB  R6, R3, R3\n\tSUB  $1, R3, R3\n\n\tMOVHU R3, 0(R17)(R11<<1)\n\n\t// currHash := hash(uint32(x>>8), shift)\n\tLSR  $8, R14, R14\n\tMOVW R14, R11\n\tMULW R16, R11, R11\n\tLSRW R5, R11, R11\n\n\t// candidate = int(table[currHash])\n\tMOVHU 0(R17)(R11<<1), R15\n\n\t// table[currHash] = uint16(s)\n\tADD   $1, R3, R3\n\tMOVHU R3, 0(R17)(R11<<1)\n\n\t// if uint32(x>>8) == load32(src, candidate) { continue }\n\tMOVW (R6)(R15), R4\n\tCMPW R4, R14\n\tBEQ  inner1\n\n\t// nextHash = hash(uint32(x>>16), shift)\n\tLSR  $8, R14, R14\n\tMOVW R14, R11\n\tMULW R16, R11, R11\n\tLSRW R5, R11, R11\n\n\t// s++\n\tADD $1, R7, R7\n\n\t// break out of the inner1 for loop, i.e. continue the outer loop.\n\tB outer\n\nemitRemainder:\n\t// if nextEmit < len(src) { etc }\n\tMOVD src_len+32(FP), R3\n\tADD  R6, R3, R3\n\tCMP  R3, R10\n\tBEQ  encodeBlockEnd\n\n\t// d += emitLiteral(dst[d:], src[nextEmit:])\n\t//\n\t// Push args.\n\tMOVD R8, 8(RSP)\n\tMOVD $0, 16(RSP)  // Unnecessary, as the callee ignores it, but conservative.\n\tMOVD $0, 24(RSP)  // Unnecessary, as the callee ignores it, but conservative.\n\tMOVD R10, 32(RSP)\n\tSUB  R10, R3, R3\n\tMOVD R3, 40(RSP)\n\tMOVD R3, 48(RSP)  // Unnecessary, as the callee ignores it, but conservative.\n\n\t// Spill local variables (registers) onto the stack; call; unspill.\n\tMOVD R8, 88(RSP)\n\tCALL ·emitLiteral(SB)\n\tMOVD 88(RSP), R8\n\n\t// Finish the \"d +=\" part of \"d += emitLiteral(etc)\".\n\tMOVD 56(RSP), R1\n\tADD  R1, R8, R8\n\nencodeBlockEnd:\n\tMOVD dst_base+0(FP), R3\n\tSUB  R3, R8, R8\n\tMOVD R8, d+48(FP)\n\tRET\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/encode_asm.go",
    "content": "// Copyright 2016 The Snappy-Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !appengine\n// +build gc\n// +build !noasm\n// +build amd64 arm64\n\npackage snappy\n\n// emitLiteral has the same semantics as in encode_other.go.\n//\n//go:noescape\nfunc emitLiteral(dst, lit []byte) int\n\n// emitCopy has the same semantics as in encode_other.go.\n//\n//go:noescape\nfunc emitCopy(dst []byte, offset, length int) int\n\n// extendMatch has the same semantics as in encode_other.go.\n//\n//go:noescape\nfunc extendMatch(src []byte, i, j int) int\n\n// encodeBlock has the same semantics as in encode_other.go.\n//\n//go:noescape\nfunc encodeBlock(dst, src []byte) (d int)\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/encode_other.go",
    "content": "// Copyright 2016 The Snappy-Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !amd64,!arm64 appengine !gc noasm\n\npackage snappy\n\nfunc load32(b []byte, i int) uint32 {\n\tb = b[i : i+4 : len(b)] // Help the compiler eliminate bounds checks on the next line.\n\treturn uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24\n}\n\nfunc load64(b []byte, i int) uint64 {\n\tb = b[i : i+8 : len(b)] // Help the compiler eliminate bounds checks on the next line.\n\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |\n\t\tuint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n}\n\n// emitLiteral writes a literal chunk and returns the number of bytes written.\n//\n// It assumes that:\n//\tdst is long enough to hold the encoded bytes\n//\t1 <= len(lit) && len(lit) <= 65536\nfunc emitLiteral(dst, lit []byte) int {\n\ti, n := 0, uint(len(lit)-1)\n\tswitch {\n\tcase n < 60:\n\t\tdst[0] = uint8(n)<<2 | tagLiteral\n\t\ti = 1\n\tcase n < 1<<8:\n\t\tdst[0] = 60<<2 | tagLiteral\n\t\tdst[1] = uint8(n)\n\t\ti = 2\n\tdefault:\n\t\tdst[0] = 61<<2 | tagLiteral\n\t\tdst[1] = uint8(n)\n\t\tdst[2] = uint8(n >> 8)\n\t\ti = 3\n\t}\n\treturn i + copy(dst[i:], lit)\n}\n\n// emitCopy writes a copy chunk and returns the number of bytes written.\n//\n// It assumes that:\n//\tdst is long enough to hold the encoded bytes\n//\t1 <= offset && offset <= 65535\n//\t4 <= length && length <= 65535\nfunc emitCopy(dst []byte, offset, length int) int {\n\ti := 0\n\t// The maximum length for a single tagCopy1 or tagCopy2 op is 64 bytes. The\n\t// threshold for this loop is a little higher (at 68 = 64 + 4), and the\n\t// length emitted down below is is a little lower (at 60 = 64 - 4), because\n\t// it's shorter to encode a length 67 copy as a length 60 tagCopy2 followed\n\t// by a length 7 tagCopy1 (which encodes as 3+2 bytes) than to encode it as\n\t// a length 64 tagCopy2 followed by a length 3 tagCopy2 (which encodes as\n\t// 3+3 bytes). The magic 4 in the 64±4 is because the minimum length for a\n\t// tagCopy1 op is 4 bytes, which is why a length 3 copy has to be an\n\t// encodes-as-3-bytes tagCopy2 instead of an encodes-as-2-bytes tagCopy1.\n\tfor length >= 68 {\n\t\t// Emit a length 64 copy, encoded as 3 bytes.\n\t\tdst[i+0] = 63<<2 | tagCopy2\n\t\tdst[i+1] = uint8(offset)\n\t\tdst[i+2] = uint8(offset >> 8)\n\t\ti += 3\n\t\tlength -= 64\n\t}\n\tif length > 64 {\n\t\t// Emit a length 60 copy, encoded as 3 bytes.\n\t\tdst[i+0] = 59<<2 | tagCopy2\n\t\tdst[i+1] = uint8(offset)\n\t\tdst[i+2] = uint8(offset >> 8)\n\t\ti += 3\n\t\tlength -= 60\n\t}\n\tif length >= 12 || offset >= 2048 {\n\t\t// Emit the remaining copy, encoded as 3 bytes.\n\t\tdst[i+0] = uint8(length-1)<<2 | tagCopy2\n\t\tdst[i+1] = uint8(offset)\n\t\tdst[i+2] = uint8(offset >> 8)\n\t\treturn i + 3\n\t}\n\t// Emit the remaining copy, encoded as 2 bytes.\n\tdst[i+0] = uint8(offset>>8)<<5 | uint8(length-4)<<2 | tagCopy1\n\tdst[i+1] = uint8(offset)\n\treturn i + 2\n}\n\n// extendMatch returns the largest k such that k <= len(src) and that\n// src[i:i+k-j] and src[j:k] have the same contents.\n//\n// It assumes that:\n//\t0 <= i && i < j && j <= len(src)\nfunc extendMatch(src []byte, i, j int) int {\n\tfor ; j < len(src) && src[i] == src[j]; i, j = i+1, j+1 {\n\t}\n\treturn j\n}\n\nfunc hash(u, shift uint32) uint32 {\n\treturn (u * 0x1e35a7bd) >> shift\n}\n\n// encodeBlock encodes a non-empty src to a guaranteed-large-enough dst. It\n// assumes that the varint-encoded length of the decompressed bytes has already\n// been written.\n//\n// It also assumes that:\n//\tlen(dst) >= MaxEncodedLen(len(src)) &&\n// \tminNonLiteralBlockSize <= len(src) && len(src) <= maxBlockSize\nfunc encodeBlock(dst, src []byte) (d int) {\n\t// Initialize the hash table. Its size ranges from 1<<8 to 1<<14 inclusive.\n\t// The table element type is uint16, as s < sLimit and sLimit < len(src)\n\t// and len(src) <= maxBlockSize and maxBlockSize == 65536.\n\tconst (\n\t\tmaxTableSize = 1 << 14\n\t\t// tableMask is redundant, but helps the compiler eliminate bounds\n\t\t// checks.\n\t\ttableMask = maxTableSize - 1\n\t)\n\tshift := uint32(32 - 8)\n\tfor tableSize := 1 << 8; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 {\n\t\tshift--\n\t}\n\t// In Go, all array elements are zero-initialized, so there is no advantage\n\t// to a smaller tableSize per se. However, it matches the C++ algorithm,\n\t// and in the asm versions of this code, we can get away with zeroing only\n\t// the first tableSize elements.\n\tvar table [maxTableSize]uint16\n\n\t// sLimit is when to stop looking for offset/length copies. The inputMargin\n\t// lets us use a fast path for emitLiteral in the main loop, while we are\n\t// looking for copies.\n\tsLimit := len(src) - inputMargin\n\n\t// nextEmit is where in src the next emitLiteral should start from.\n\tnextEmit := 0\n\n\t// The encoded form must start with a literal, as there are no previous\n\t// bytes to copy, so we start looking for hash matches at s == 1.\n\ts := 1\n\tnextHash := hash(load32(src, s), shift)\n\n\tfor {\n\t\t// Copied from the C++ snappy implementation:\n\t\t//\n\t\t// Heuristic match skipping: If 32 bytes are scanned with no matches\n\t\t// found, start looking only at every other byte. If 32 more bytes are\n\t\t// scanned (or skipped), look at every third byte, etc.. When a match\n\t\t// is found, immediately go back to looking at every byte. This is a\n\t\t// small loss (~5% performance, ~0.1% density) for compressible data\n\t\t// due to more bookkeeping, but for non-compressible data (such as\n\t\t// JPEG) it's a huge win since the compressor quickly \"realizes\" the\n\t\t// data is incompressible and doesn't bother looking for matches\n\t\t// everywhere.\n\t\t//\n\t\t// The \"skip\" variable keeps track of how many bytes there are since\n\t\t// the last match; dividing it by 32 (ie. right-shifting by five) gives\n\t\t// the number of bytes to move ahead for each iteration.\n\t\tskip := 32\n\n\t\tnextS := s\n\t\tcandidate := 0\n\t\tfor {\n\t\t\ts = nextS\n\t\t\tbytesBetweenHashLookups := skip >> 5\n\t\t\tnextS = s + bytesBetweenHashLookups\n\t\t\tskip += bytesBetweenHashLookups\n\t\t\tif nextS > sLimit {\n\t\t\t\tgoto emitRemainder\n\t\t\t}\n\t\t\tcandidate = int(table[nextHash&tableMask])\n\t\t\ttable[nextHash&tableMask] = uint16(s)\n\t\t\tnextHash = hash(load32(src, nextS), shift)\n\t\t\tif load32(src, s) == load32(src, candidate) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// A 4-byte match has been found. We'll later see if more than 4 bytes\n\t\t// match. But, prior to the match, src[nextEmit:s] are unmatched. Emit\n\t\t// them as literal bytes.\n\t\td += emitLiteral(dst[d:], src[nextEmit:s])\n\n\t\t// Call emitCopy, and then see if another emitCopy could be our next\n\t\t// move. Repeat until we find no match for the input immediately after\n\t\t// what was consumed by the last emitCopy call.\n\t\t//\n\t\t// If we exit this loop normally then we need to call emitLiteral next,\n\t\t// though we don't yet know how big the literal will be. We handle that\n\t\t// by proceeding to the next iteration of the main loop. We also can\n\t\t// exit this loop via goto if we get close to exhausting the input.\n\t\tfor {\n\t\t\t// Invariant: we have a 4-byte match at s, and no need to emit any\n\t\t\t// literal bytes prior to s.\n\t\t\tbase := s\n\n\t\t\t// Extend the 4-byte match as long as possible.\n\t\t\t//\n\t\t\t// This is an inlined version of:\n\t\t\t//\ts = extendMatch(src, candidate+4, s+4)\n\t\t\ts += 4\n\t\t\tfor i := candidate + 4; s < len(src) && src[i] == src[s]; i, s = i+1, s+1 {\n\t\t\t}\n\n\t\t\td += emitCopy(dst[d:], base-candidate, s-base)\n\t\t\tnextEmit = s\n\t\t\tif s >= sLimit {\n\t\t\t\tgoto emitRemainder\n\t\t\t}\n\n\t\t\t// We could immediately start working at s now, but to improve\n\t\t\t// compression we first update the hash table at s-1 and at s. If\n\t\t\t// another emitCopy is not our next move, also calculate nextHash\n\t\t\t// at s+1. At least on GOARCH=amd64, these three hash calculations\n\t\t\t// are faster as one load64 call (with some shifts) instead of\n\t\t\t// three load32 calls.\n\t\t\tx := load64(src, s-1)\n\t\t\tprevHash := hash(uint32(x>>0), shift)\n\t\t\ttable[prevHash&tableMask] = uint16(s - 1)\n\t\t\tcurrHash := hash(uint32(x>>8), shift)\n\t\t\tcandidate = int(table[currHash&tableMask])\n\t\t\ttable[currHash&tableMask] = uint16(s)\n\t\t\tif uint32(x>>8) != load32(src, candidate) {\n\t\t\t\tnextHash = hash(uint32(x>>16), shift)\n\t\t\t\ts++\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\nemitRemainder:\n\tif nextEmit < len(src) {\n\t\td += emitLiteral(dst[d:], src[nextEmit:])\n\t}\n\treturn d\n}\n"
  },
  {
    "path": "vendor/github.com/golang/snappy/snappy.go",
    "content": "// Copyright 2011 The Snappy-Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package snappy implements the Snappy compression format. It aims for very\n// high speeds and reasonable compression.\n//\n// There are actually two Snappy formats: block and stream. They are related,\n// but different: trying to decompress block-compressed data as a Snappy stream\n// will fail, and vice versa. The block format is the Decode and Encode\n// functions and the stream format is the Reader and Writer types.\n//\n// The block format, the more common case, is used when the complete size (the\n// number of bytes) of the original data is known upfront, at the time\n// compression starts. The stream format, also known as the framing format, is\n// for when that isn't always true.\n//\n// The canonical, C++ implementation is at https://github.com/google/snappy and\n// it only implements the block format.\npackage snappy // import \"github.com/golang/snappy\"\n\nimport (\n\t\"hash/crc32\"\n)\n\n/*\nEach encoded block begins with the varint-encoded length of the decoded data,\nfollowed by a sequence of chunks. Chunks begin and end on byte boundaries. The\nfirst byte of each chunk is broken into its 2 least and 6 most significant bits\ncalled l and m: l ranges in [0, 4) and m ranges in [0, 64). l is the chunk tag.\nZero means a literal tag. All other values mean a copy tag.\n\nFor literal tags:\n  - If m < 60, the next 1 + m bytes are literal bytes.\n  - Otherwise, let n be the little-endian unsigned integer denoted by the next\n    m - 59 bytes. The next 1 + n bytes after that are literal bytes.\n\nFor copy tags, length bytes are copied from offset bytes ago, in the style of\nLempel-Ziv compression algorithms. In particular:\n  - For l == 1, the offset ranges in [0, 1<<11) and the length in [4, 12).\n    The length is 4 + the low 3 bits of m. The high 3 bits of m form bits 8-10\n    of the offset. The next byte is bits 0-7 of the offset.\n  - For l == 2, the offset ranges in [0, 1<<16) and the length in [1, 65).\n    The length is 1 + m. The offset is the little-endian unsigned integer\n    denoted by the next 2 bytes.\n  - For l == 3, this tag is a legacy format that is no longer issued by most\n    encoders. Nonetheless, the offset ranges in [0, 1<<32) and the length in\n    [1, 65). The length is 1 + m. The offset is the little-endian unsigned\n    integer denoted by the next 4 bytes.\n*/\nconst (\n\ttagLiteral = 0x00\n\ttagCopy1   = 0x01\n\ttagCopy2   = 0x02\n\ttagCopy4   = 0x03\n)\n\nconst (\n\tchecksumSize    = 4\n\tchunkHeaderSize = 4\n\tmagicChunk      = \"\\xff\\x06\\x00\\x00\" + magicBody\n\tmagicBody       = \"sNaPpY\"\n\n\t// maxBlockSize is the maximum size of the input to encodeBlock. It is not\n\t// part of the wire format per se, but some parts of the encoder assume\n\t// that an offset fits into a uint16.\n\t//\n\t// Also, for the framing format (Writer type instead of Encode function),\n\t// https://github.com/google/snappy/blob/master/framing_format.txt says\n\t// that \"the uncompressed data in a chunk must be no longer than 65536\n\t// bytes\".\n\tmaxBlockSize = 65536\n\n\t// maxEncodedLenOfMaxBlockSize equals MaxEncodedLen(maxBlockSize), but is\n\t// hard coded to be a const instead of a variable, so that obufLen can also\n\t// be a const. Their equivalence is confirmed by\n\t// TestMaxEncodedLenOfMaxBlockSize.\n\tmaxEncodedLenOfMaxBlockSize = 76490\n\n\tobufHeaderLen = len(magicChunk) + checksumSize + chunkHeaderSize\n\tobufLen       = obufHeaderLen + maxEncodedLenOfMaxBlockSize\n)\n\nconst (\n\tchunkTypeCompressedData   = 0x00\n\tchunkTypeUncompressedData = 0x01\n\tchunkTypePadding          = 0xfe\n\tchunkTypeStreamIdentifier = 0xff\n)\n\nvar crcTable = crc32.MakeTable(crc32.Castagnoli)\n\n// crc implements the checksum specified in section 3 of\n// https://github.com/google/snappy/blob/master/framing_format.txt\nfunc crc(b []byte) uint32 {\n\tc := crc32.Update(0, crcTable, b)\n\treturn uint32(c>>15|c<<17) + 0xa282ead8\n}\n"
  },
  {
    "path": "vendor/github.com/iancoleman/strcase/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Ian Coleman\nCopyright (c) 2018 Ma_124, <github.com/Ma124>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, Subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or Substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/iancoleman/strcase/README.md",
    "content": "# strcase\n[![Godoc Reference](https://godoc.org/github.com/iancoleman/strcase?status.svg)](http://godoc.org/github.com/iancoleman/strcase)\n[![Build Status](https://travis-ci.com/iancoleman/strcase.svg)](https://travis-ci.com/iancoleman/strcase)\n[![Coverage](http://gocover.io/_badge/github.com/iancoleman/strcase?0)](http://gocover.io/github.com/iancoleman/strcase)\n[![Go Report Card](https://goreportcard.com/badge/github.com/iancoleman/strcase)](https://goreportcard.com/report/github.com/iancoleman/strcase)\n\nstrcase is a go package for converting string case to various cases (e.g. [snake case](https://en.wikipedia.org/wiki/Snake_case) or [camel case](https://en.wikipedia.org/wiki/CamelCase)) to see the full conversion table below.\n\n## Example\n\n```go\ns := \"AnyKind of_string\"\n```\n\n| Function                                  | Result               |\n|-------------------------------------------|----------------------|\n| `ToSnake(s)`                              | `any_kind_of_string` |\n| `ToSnakeWithIgnore(s, '.')`               | `any_kind.of_string` |\n| `ToScreamingSnake(s)`                     | `ANY_KIND_OF_STRING` |\n| `ToKebab(s)`                              | `any-kind-of-string` |\n| `ToScreamingKebab(s)`                     | `ANY-KIND-OF-STRING` |\n| `ToDelimited(s, '.')`                     | `any.kind.of.string` |\n| `ToScreamingDelimited(s, '.', '', true)`  | `ANY.KIND.OF.STRING` |\n| `ToScreamingDelimited(s, '.', ' ', true)` | `ANY.KIND OF.STRING` |\n| `ToCamel(s)`                              | `AnyKindOfString`    |\n| `ToLowerCamel(s)`                         | `anyKindOfString`    |\n\n\n## Install\n\n```bash\ngo get -u github.com/iancoleman/strcase\n```\n\n## Custom Acronyms for ToCamel && ToLowerCamel\n\nOften times text can contain specific acronyms which you need to be handled a certain way.\nOut of the box `strcase` treats the string \"ID\" as \"Id\" or \"id\" but there is no way to cater\nfor every case in the wild.\n\nTo configure your custom acronym globally you can use the following before running any conversion\n\n```go\nimport (\n    \"github.com/iancoleman/strcase\"\n)\n\nfunc init() {\n    // results in \"Api\" using ToCamel(\"API\")\n    // results in \"api\" using ToLowerCamel(\"API\")\n    strcase.ConfigureAcronym(\"API\", \"api\")\n    \n    // results in \"PostgreSQL\" using ToCamel(\"PostgreSQL\")\n    // results in \"postgreSQL\" using ToLowerCamel(\"PostgreSQL\")\n    strcase.ConfigureAcronym(\"PostgreSQL\", \"PostgreSQL\")\n\n}\n\n```\n"
  },
  {
    "path": "vendor/github.com/iancoleman/strcase/acronyms.go",
    "content": "package strcase\n\nimport (\n\t\"sync\"\n)\n\nvar uppercaseAcronym = sync.Map{}\n\t//\"ID\": \"id\",\n\n// ConfigureAcronym allows you to add additional words which will be considered acronyms\nfunc ConfigureAcronym(key, val string) {\n\tuppercaseAcronym.Store(key, val)\n}\n"
  },
  {
    "path": "vendor/github.com/iancoleman/strcase/camel.go",
    "content": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 Ian Coleman\n * Copyright (c) 2018 Ma_124, <github.com/Ma124>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, Subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or Substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\npackage strcase\n\nimport (\n\t\"strings\"\n)\n\n// Converts a string to CamelCase\nfunc toCamelInitCase(s string, initCase bool) string {\n\ts = strings.TrimSpace(s)\n\tif s == \"\" {\n\t\treturn s\n\t}\n\ta, hasAcronym := uppercaseAcronym.Load(s)\n\tif hasAcronym {\n\t\ts = a.(string)\n\t}\n\n\tn := strings.Builder{}\n\tn.Grow(len(s))\n\tcapNext := initCase\n\tprevIsCap := false\n\tfor i, v := range []byte(s) {\n\t\tvIsCap := v >= 'A' && v <= 'Z'\n\t\tvIsLow := v >= 'a' && v <= 'z'\n\t\tif capNext {\n\t\t\tif vIsLow {\n\t\t\t\tv += 'A'\n\t\t\t\tv -= 'a'\n\t\t\t}\n\t\t} else if i == 0 {\n\t\t\tif vIsCap {\n\t\t\t\tv += 'a'\n\t\t\t\tv -= 'A'\n\t\t\t}\n\t\t} else if prevIsCap && vIsCap && !hasAcronym {\n\t\t\tv += 'a'\n\t\t\tv -= 'A'\n\t\t}\n\t\tprevIsCap = vIsCap\n\n\t\tif vIsCap || vIsLow {\n\t\t\tn.WriteByte(v)\n\t\t\tcapNext = false\n\t\t} else if vIsNum := v >= '0' && v <= '9'; vIsNum {\n\t\t\tn.WriteByte(v)\n\t\t\tcapNext = true\n\t\t} else {\n\t\t\tcapNext = v == '_' || v == ' ' || v == '-' || v == '.'\n\t\t}\n\t}\n\treturn n.String()\n}\n\n// ToCamel converts a string to CamelCase\nfunc ToCamel(s string) string {\n\treturn toCamelInitCase(s, true)\n}\n\n// ToLowerCamel converts a string to lowerCamelCase\nfunc ToLowerCamel(s string) string {\n\treturn toCamelInitCase(s, false)\n}\n"
  },
  {
    "path": "vendor/github.com/iancoleman/strcase/doc.go",
    "content": "// Package strcase converts strings to various cases. See the conversion table below:\n//   | Function                        | Result             |\n//   |---------------------------------|--------------------|\n//   | ToSnake(s)                      | any_kind_of_string |\n//   | ToScreamingSnake(s)             | ANY_KIND_OF_STRING |\n//   | ToKebab(s)                      | any-kind-of-string |\n//   | ToScreamingKebab(s)             | ANY-KIND-OF-STRING |\n//   | ToDelimited(s, '.')             | any.kind.of.string |\n//   | ToScreamingDelimited(s, '.')    | ANY.KIND.OF.STRING |\n//   | ToCamel(s)                      | AnyKindOfString    |\n//   | ToLowerCamel(s)                 | anyKindOfString    |\npackage strcase\n"
  },
  {
    "path": "vendor/github.com/iancoleman/strcase/snake.go",
    "content": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 Ian Coleman\n * Copyright (c) 2018 Ma_124, <github.com/Ma124>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, Subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or Substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\npackage strcase\n\nimport (\n\t\"strings\"\n)\n\n// ToSnake converts a string to snake_case\nfunc ToSnake(s string) string {\n\treturn ToDelimited(s, '_')\n}\n\nfunc ToSnakeWithIgnore(s string, ignore string) string {\n\treturn ToScreamingDelimited(s, '_', ignore, false)\n}\n\n// ToScreamingSnake converts a string to SCREAMING_SNAKE_CASE\nfunc ToScreamingSnake(s string) string {\n\treturn ToScreamingDelimited(s, '_', \"\", true)\n}\n\n// ToKebab converts a string to kebab-case\nfunc ToKebab(s string) string {\n\treturn ToDelimited(s, '-')\n}\n\n// ToScreamingKebab converts a string to SCREAMING-KEBAB-CASE\nfunc ToScreamingKebab(s string) string {\n\treturn ToScreamingDelimited(s, '-', \"\", true)\n}\n\n// ToDelimited converts a string to delimited.snake.case\n// (in this case `delimiter = '.'`)\nfunc ToDelimited(s string, delimiter uint8) string {\n\treturn ToScreamingDelimited(s, delimiter, \"\", false)\n}\n\n// ToScreamingDelimited converts a string to SCREAMING.DELIMITED.SNAKE.CASE\n// (in this case `delimiter = '.'; screaming = true`)\n// or delimited.snake.case\n// (in this case `delimiter = '.'; screaming = false`)\nfunc ToScreamingDelimited(s string, delimiter uint8, ignore string, screaming bool) string {\n\ts = strings.TrimSpace(s)\n\tn := strings.Builder{}\n\tn.Grow(len(s) + 2) // nominal 2 bytes of extra space for inserted delimiters\n\tfor i, v := range []byte(s) {\n\t\tvIsCap := v >= 'A' && v <= 'Z'\n\t\tvIsLow := v >= 'a' && v <= 'z'\n\t\tif vIsLow && screaming {\n\t\t\tv += 'A'\n\t\t\tv -= 'a'\n\t\t} else if vIsCap && !screaming {\n\t\t\tv += 'a'\n\t\t\tv -= 'A'\n\t\t}\n\n\t\t// treat acronyms as words, eg for JSONData -> JSON is a whole word\n\t\tif i+1 < len(s) {\n\t\t\tnext := s[i+1]\n\t\t\tvIsNum := v >= '0' && v <= '9'\n\t\t\tnextIsCap := next >= 'A' && next <= 'Z'\n\t\t\tnextIsLow := next >= 'a' && next <= 'z'\n\t\t\tnextIsNum := next >= '0' && next <= '9'\n\t\t\t// add underscore if next letter case type is changed\n\t\t\tif (vIsCap && (nextIsLow || nextIsNum)) || (vIsLow && (nextIsCap || nextIsNum)) || (vIsNum && (nextIsCap || nextIsLow)) {\n\t\t\t\tprevIgnore := ignore != \"\" && i > 0 && strings.ContainsAny(string(s[i-1]), ignore)\n\t\t\t\tif !prevIgnore {\n\t\t\t\t\tif vIsCap && nextIsLow {\n\t\t\t\t\t\tif prevIsCap := i > 0 && s[i-1] >= 'A' && s[i-1] <= 'Z'; prevIsCap {\n\t\t\t\t\t\t\tn.WriteByte(delimiter)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tn.WriteByte(v)\n\t\t\t\t\tif vIsLow || vIsNum || nextIsNum {\n\t\t\t\t\t\tn.WriteByte(delimiter)\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (v == ' ' || v == '_' || v == '-' || v == '.') && !strings.ContainsAny(string(v), ignore) {\n\t\t\t// replace space/underscore/hyphen/dot with delimiter\n\t\t\tn.WriteByte(delimiter)\n\t\t} else {\n\t\t\tn.WriteByte(v)\n\t\t}\n\t}\n\n\treturn n.String()\n}\n"
  },
  {
    "path": "vendor/github.com/planetscale/vtprotobuf/LICENSE",
    "content": "Copyright (c) 2021, PlanetScale Inc. All rights reserved.\nCopyright (c) 2013, The GoGo Authors. All rights reserved.\nCopyright (c) 2018 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/github.com/planetscale/vtprotobuf/protohelpers/protohelpers.go",
    "content": "// Package protohelpers provides helper functions for encoding and decoding protobuf messages.\n// The spec can be found at https://protobuf.dev/programming-guides/encoding/.\npackage protohelpers\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"math/bits\"\n)\n\nvar (\n\t// ErrInvalidLength is returned when decoding a negative length.\n\tErrInvalidLength = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\t// ErrIntOverflow is returned when decoding a varint representation of an integer that overflows 64 bits.\n\tErrIntOverflow = fmt.Errorf(\"proto: integer overflow\")\n\t// ErrUnexpectedEndOfGroup is returned when decoding a group end without a corresponding group start.\n\tErrUnexpectedEndOfGroup = fmt.Errorf(\"proto: unexpected end of group\")\n)\n\n// EncodeVarint encodes a uint64 into a varint-encoded byte slice and returns the offset of the encoded value.\n// The provided offset is the offset after the last byte of the encoded value.\nfunc EncodeVarint(dAtA []byte, offset int, v uint64) int {\n\toffset -= SizeOfVarint(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\n\n// SizeOfVarint returns the size of the varint-encoded value.\nfunc SizeOfVarint(x uint64) (n int) {\n\treturn (bits.Len64(x|1) + 6) / 7\n}\n\n// SizeOfZigzag returns the size of the zigzag-encoded value.\nfunc SizeOfZigzag(x uint64) (n int) {\n\treturn SizeOfVarint(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\n\n// Skip the first record of the byte slice and return the offset of the next record.\nfunc Skip(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLength\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroup\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLength\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n"
  },
  {
    "path": "vendor/github.com/planetscale/vtprotobuf/types/known/anypb/any_vtproto.pb.go",
    "content": "// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// protoc-gen-go-vtproto version: (devel)\n// source: google/protobuf/any.proto\n\npackage anypb\n\nimport (\n\tfmt \"fmt\"\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\tio \"io\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype Any anypb.Any\n\nfunc (m *Any) CloneVT() *Any {\n\tif m == nil {\n\t\treturn (*Any)(nil)\n\t}\n\tr := new(Any)\n\tr.TypeUrl = m.TypeUrl\n\tif rhs := m.Value; rhs != nil {\n\t\ttmpBytes := make([]byte, len(rhs))\n\t\tcopy(tmpBytes, rhs)\n\t\tr.Value = tmpBytes\n\t}\n\treturn r\n}\n\nfunc (this *Any) EqualVT(that *Any) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\tif this.TypeUrl != that.TypeUrl {\n\t\treturn false\n\t}\n\tif string(this.Value) != string(that.Value) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (m *Any) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Any) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Any) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.TypeUrl) > 0 {\n\t\ti -= len(m.TypeUrl)\n\t\tcopy(dAtA[i:], m.TypeUrl)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TypeUrl)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Any) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Any) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Any) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.TypeUrl) > 0 {\n\t\ti -= len(m.TypeUrl)\n\t\tcopy(dAtA[i:], m.TypeUrl)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.TypeUrl)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Any) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.TypeUrl)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\tl = len(m.Value)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *Any) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Any: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Any: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TypeUrl\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.TypeUrl = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Value == nil {\n\t\t\t\tm.Value = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Any) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Any: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Any: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TypeUrl\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tvar stringValue string\n\t\t\tif intStringLen > 0 {\n\t\t\t\tstringValue = unsafe.String(&dAtA[iNdEx], intStringLen)\n\t\t\t}\n\t\t\tm.TypeUrl = stringValue\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Value = dAtA[iNdEx:postIndex]\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/planetscale/vtprotobuf/types/known/durationpb/duration_vtproto.pb.go",
    "content": "// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// protoc-gen-go-vtproto version: (devel)\n// source: google/protobuf/duration.proto\n\npackage durationpb\n\nimport (\n\tfmt \"fmt\"\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\tio \"io\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype Duration durationpb.Duration\n\nfunc (m *Duration) CloneVT() *Duration {\n\tif m == nil {\n\t\treturn (*Duration)(nil)\n\t}\n\tr := new(Duration)\n\tr.Seconds = m.Seconds\n\tr.Nanos = m.Nanos\n\treturn r\n}\n\nfunc (this *Duration) EqualVT(that *Duration) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\tif this.Seconds != that.Seconds {\n\t\treturn false\n\t}\n\tif this.Nanos != that.Nanos {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (m *Duration) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Duration) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Duration) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Nanos != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Nanos))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Seconds != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Seconds))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Duration) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Duration) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Duration) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Nanos != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Nanos))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Seconds != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Seconds))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Duration) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Seconds != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Seconds))\n\t}\n\tif m.Nanos != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Nanos))\n\t}\n\treturn n\n}\n\nfunc (m *Duration) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Duration: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Duration: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Seconds\", wireType)\n\t\t\t}\n\t\t\tm.Seconds = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Seconds |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Nanos\", wireType)\n\t\t\t}\n\t\t\tm.Nanos = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Nanos |= int32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Duration) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Duration: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Duration: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Seconds\", wireType)\n\t\t\t}\n\t\t\tm.Seconds = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Seconds |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Nanos\", wireType)\n\t\t\t}\n\t\t\tm.Nanos = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Nanos |= int32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/planetscale/vtprotobuf/types/known/emptypb/empty_vtproto.pb.go",
    "content": "// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// protoc-gen-go-vtproto version: (devel)\n// source: google/protobuf/empty.proto\n\npackage emptypb\n\nimport (\n\tfmt \"fmt\"\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\temptypb \"google.golang.org/protobuf/types/known/emptypb\"\n\tio \"io\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype Empty emptypb.Empty\n\nfunc (m *Empty) CloneVT() *Empty {\n\tif m == nil {\n\t\treturn (*Empty)(nil)\n\t}\n\tr := new(Empty)\n\treturn r\n}\n\nfunc (this *Empty) EqualVT(that *Empty) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (m *Empty) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Empty) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Empty) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Empty) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Empty) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Empty) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Empty) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *Empty) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Empty: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Empty: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Empty) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Empty: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Empty: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/planetscale/vtprotobuf/types/known/structpb/struct_vtproto.pb.go",
    "content": "// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// protoc-gen-go-vtproto version: (devel)\n// source: google/protobuf/struct.proto\n\npackage structpb\n\nimport (\n\tbinary \"encoding/binary\"\n\tfmt \"fmt\"\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tstructpb \"google.golang.org/protobuf/types/known/structpb\"\n\tio \"io\"\n\tmath \"math\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype Struct structpb.Struct\ntype Value structpb.Value\ntype Value_NullValue structpb.Value_NullValue\ntype Value_NumberValue structpb.Value_NumberValue\ntype Value_StringValue structpb.Value_StringValue\ntype Value_BoolValue structpb.Value_BoolValue\ntype Value_StructValue structpb.Value_StructValue\ntype Value_ListValue structpb.Value_ListValue\ntype ListValue structpb.ListValue\n\nfunc (m *Struct) CloneVT() *Struct {\n\tif m == nil {\n\t\treturn (*Struct)(nil)\n\t}\n\tr := new(Struct)\n\tif rhs := m.Fields; rhs != nil {\n\t\ttmpContainer := make(map[string]*structpb.Value, len(rhs))\n\t\tfor k, v := range rhs {\n\t\t\ttmpContainer[k] = (*structpb.Value)((*Value)(v).CloneVT())\n\t\t}\n\t\tr.Fields = tmpContainer\n\t}\n\treturn r\n}\n\nfunc (m *Value) CloneVT() *Value {\n\tif m == nil {\n\t\treturn (*Value)(nil)\n\t}\n\tr := new(Value)\n\tif m.Kind != nil {\n\t\tswitch c := m.Kind.(type) {\n\t\tcase *structpb.Value_NullValue:\n\t\t\tr.Kind = (*structpb.Value_NullValue)((*Value_NullValue)(c).CloneVT())\n\t\tcase *structpb.Value_NumberValue:\n\t\t\tr.Kind = (*structpb.Value_NumberValue)((*Value_NumberValue)(c).CloneVT())\n\t\tcase *structpb.Value_StringValue:\n\t\t\tr.Kind = (*structpb.Value_StringValue)((*Value_StringValue)(c).CloneVT())\n\t\tcase *structpb.Value_BoolValue:\n\t\t\tr.Kind = (*structpb.Value_BoolValue)((*Value_BoolValue)(c).CloneVT())\n\t\tcase *structpb.Value_StructValue:\n\t\t\tr.Kind = (*structpb.Value_StructValue)((*Value_StructValue)(c).CloneVT())\n\t\tcase *structpb.Value_ListValue:\n\t\t\tr.Kind = (*structpb.Value_ListValue)((*Value_ListValue)(c).CloneVT())\n\t\t}\n\t}\n\treturn r\n}\n\nfunc (m *Value_NullValue) CloneVT() *Value_NullValue {\n\tif m == nil {\n\t\treturn (*Value_NullValue)(nil)\n\t}\n\tr := new(Value_NullValue)\n\tr.NullValue = m.NullValue\n\treturn r\n}\n\nfunc (m *Value_NumberValue) CloneVT() *Value_NumberValue {\n\tif m == nil {\n\t\treturn (*Value_NumberValue)(nil)\n\t}\n\tr := new(Value_NumberValue)\n\tr.NumberValue = m.NumberValue\n\treturn r\n}\n\nfunc (m *Value_StringValue) CloneVT() *Value_StringValue {\n\tif m == nil {\n\t\treturn (*Value_StringValue)(nil)\n\t}\n\tr := new(Value_StringValue)\n\tr.StringValue = m.StringValue\n\treturn r\n}\n\nfunc (m *Value_BoolValue) CloneVT() *Value_BoolValue {\n\tif m == nil {\n\t\treturn (*Value_BoolValue)(nil)\n\t}\n\tr := new(Value_BoolValue)\n\tr.BoolValue = m.BoolValue\n\treturn r\n}\n\nfunc (m *Value_StructValue) CloneVT() *Value_StructValue {\n\tif m == nil {\n\t\treturn (*Value_StructValue)(nil)\n\t}\n\tr := new(Value_StructValue)\n\tr.StructValue = (*structpb.Struct)((*Struct)(m.StructValue).CloneVT())\n\treturn r\n}\n\nfunc (m *Value_ListValue) CloneVT() *Value_ListValue {\n\tif m == nil {\n\t\treturn (*Value_ListValue)(nil)\n\t}\n\tr := new(Value_ListValue)\n\tr.ListValue = (*structpb.ListValue)((*ListValue)(m.ListValue).CloneVT())\n\treturn r\n}\n\nfunc (m *ListValue) CloneVT() *ListValue {\n\tif m == nil {\n\t\treturn (*ListValue)(nil)\n\t}\n\tr := new(ListValue)\n\tif rhs := m.Values; rhs != nil {\n\t\ttmpContainer := make([]*structpb.Value, len(rhs))\n\t\tfor k, v := range rhs {\n\t\t\ttmpContainer[k] = (*structpb.Value)((*Value)(v).CloneVT())\n\t\t}\n\t\tr.Values = tmpContainer\n\t}\n\treturn r\n}\n\nfunc (this *Struct) EqualVT(that *Struct) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\tif len(this.Fields) != len(that.Fields) {\n\t\treturn false\n\t}\n\tfor i, vx := range this.Fields {\n\t\tvy, ok := that.Fields[i]\n\t\tif !ok {\n\t\t\treturn false\n\t\t}\n\t\tif p, q := vx, vy; p != q {\n\t\t\tif p == nil {\n\t\t\t\tp = &structpb.Value{}\n\t\t\t}\n\t\t\tif q == nil {\n\t\t\t\tq = &structpb.Value{}\n\t\t\t}\n\t\t\tif !(*Value)(p).EqualVT((*Value)(q)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (this *Value) EqualVT(that *Value) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\tif this.Kind == nil && that.Kind != nil {\n\t\treturn false\n\t} else if this.Kind != nil {\n\t\tif that.Kind == nil {\n\t\t\treturn false\n\t\t}\n\t\tswitch c := this.Kind.(type) {\n\t\tcase *structpb.Value_NullValue:\n\t\t\tif !(*Value_NullValue)(c).EqualVT(that.Kind) {\n\t\t\t\treturn false\n\t\t\t}\n\t\tcase *structpb.Value_NumberValue:\n\t\t\tif !(*Value_NumberValue)(c).EqualVT(that.Kind) {\n\t\t\t\treturn false\n\t\t\t}\n\t\tcase *structpb.Value_StringValue:\n\t\t\tif !(*Value_StringValue)(c).EqualVT(that.Kind) {\n\t\t\t\treturn false\n\t\t\t}\n\t\tcase *structpb.Value_BoolValue:\n\t\t\tif !(*Value_BoolValue)(c).EqualVT(that.Kind) {\n\t\t\t\treturn false\n\t\t\t}\n\t\tcase *structpb.Value_StructValue:\n\t\t\tif !(*Value_StructValue)(c).EqualVT(that.Kind) {\n\t\t\t\treturn false\n\t\t\t}\n\t\tcase *structpb.Value_ListValue:\n\t\t\tif !(*Value_ListValue)(c).EqualVT(that.Kind) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (this *Value_NullValue) EqualVT(thatIface any) bool {\n\tthat, ok := thatIface.(*Value_NullValue)\n\tif !ok {\n\t\tif ot, ok := thatIface.(*structpb.Value_NullValue); ok {\n\t\t\tthat = (*Value_NullValue)(ot)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\tif this == that {\n\t\treturn true\n\t}\n\tif this == nil && that != nil || this != nil && that == nil {\n\t\treturn false\n\t}\n\tif this.NullValue != that.NullValue {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (this *Value_NumberValue) EqualVT(thatIface any) bool {\n\tthat, ok := thatIface.(*Value_NumberValue)\n\tif !ok {\n\t\tif ot, ok := thatIface.(*structpb.Value_NumberValue); ok {\n\t\t\tthat = (*Value_NumberValue)(ot)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\tif this == that {\n\t\treturn true\n\t}\n\tif this == nil && that != nil || this != nil && that == nil {\n\t\treturn false\n\t}\n\tif this.NumberValue != that.NumberValue {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (this *Value_StringValue) EqualVT(thatIface any) bool {\n\tthat, ok := thatIface.(*Value_StringValue)\n\tif !ok {\n\t\tif ot, ok := thatIface.(*structpb.Value_StringValue); ok {\n\t\t\tthat = (*Value_StringValue)(ot)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\tif this == that {\n\t\treturn true\n\t}\n\tif this == nil && that != nil || this != nil && that == nil {\n\t\treturn false\n\t}\n\tif this.StringValue != that.StringValue {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (this *Value_BoolValue) EqualVT(thatIface any) bool {\n\tthat, ok := thatIface.(*Value_BoolValue)\n\tif !ok {\n\t\tif ot, ok := thatIface.(*structpb.Value_BoolValue); ok {\n\t\t\tthat = (*Value_BoolValue)(ot)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\tif this == that {\n\t\treturn true\n\t}\n\tif this == nil && that != nil || this != nil && that == nil {\n\t\treturn false\n\t}\n\tif this.BoolValue != that.BoolValue {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (this *Value_StructValue) EqualVT(thatIface any) bool {\n\tthat, ok := thatIface.(*Value_StructValue)\n\tif !ok {\n\t\tif ot, ok := thatIface.(*structpb.Value_StructValue); ok {\n\t\t\tthat = (*Value_StructValue)(ot)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\tif this == that {\n\t\treturn true\n\t}\n\tif this == nil && that != nil || this != nil && that == nil {\n\t\treturn false\n\t}\n\tif p, q := this.StructValue, that.StructValue; p != q {\n\t\tif p == nil {\n\t\t\tp = &structpb.Struct{}\n\t\t}\n\t\tif q == nil {\n\t\t\tq = &structpb.Struct{}\n\t\t}\n\t\tif !(*Struct)(p).EqualVT((*Struct)(q)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (this *Value_ListValue) EqualVT(thatIface any) bool {\n\tthat, ok := thatIface.(*Value_ListValue)\n\tif !ok {\n\t\tif ot, ok := thatIface.(*structpb.Value_ListValue); ok {\n\t\t\tthat = (*Value_ListValue)(ot)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\tif this == that {\n\t\treturn true\n\t}\n\tif this == nil && that != nil || this != nil && that == nil {\n\t\treturn false\n\t}\n\tif p, q := this.ListValue, that.ListValue; p != q {\n\t\tif p == nil {\n\t\t\tp = &structpb.ListValue{}\n\t\t}\n\t\tif q == nil {\n\t\t\tq = &structpb.ListValue{}\n\t\t}\n\t\tif !(*ListValue)(p).EqualVT((*ListValue)(q)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (this *ListValue) EqualVT(that *ListValue) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\tif len(this.Values) != len(that.Values) {\n\t\treturn false\n\t}\n\tfor i, vx := range this.Values {\n\t\tvy := that.Values[i]\n\t\tif p, q := vx, vy; p != q {\n\t\t\tif p == nil {\n\t\t\t\tp = &structpb.Value{}\n\t\t\t}\n\t\t\tif q == nil {\n\t\t\t\tq = &structpb.Value{}\n\t\t\t}\n\t\t\tif !(*Value)(p).EqualVT((*Value)(q)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (m *Struct) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Struct) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Struct) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Fields) > 0 {\n\t\tfor k := range m.Fields {\n\t\t\tv := m.Fields[k]\n\t\t\tbaseI := i\n\t\t\tsize, err := (*Value)(v).MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Value) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Value) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Value) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tswitch c := m.Kind.(type) {\n\tcase *structpb.Value_NullValue:\n\t\tsize, err := (*Value_NullValue)(c).MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\tcase *structpb.Value_NumberValue:\n\t\tsize, err := (*Value_NumberValue)(c).MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\tcase *structpb.Value_StringValue:\n\t\tsize, err := (*Value_StringValue)(c).MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\tcase *structpb.Value_BoolValue:\n\t\tsize, err := (*Value_BoolValue)(c).MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\tcase *structpb.Value_StructValue:\n\t\tsize, err := (*Value_StructValue)(c).MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\tcase *structpb.Value_ListValue:\n\t\tsize, err := (*Value_ListValue)(c).MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Value_NullValue) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Value_NullValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.NullValue))\n\ti--\n\tdAtA[i] = 0x8\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Value_NumberValue) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Value_NumberValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= 8\n\tbinary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.NumberValue))))\n\ti--\n\tdAtA[i] = 0x11\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Value_StringValue) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Value_StringValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.StringValue)\n\tcopy(dAtA[i:], m.StringValue)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.StringValue)))\n\ti--\n\tdAtA[i] = 0x1a\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Value_BoolValue) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Value_BoolValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti--\n\tif m.BoolValue {\n\t\tdAtA[i] = 1\n\t} else {\n\t\tdAtA[i] = 0\n\t}\n\ti--\n\tdAtA[i] = 0x20\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Value_StructValue) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Value_StructValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.StructValue != nil {\n\t\tsize, err := (*Struct)(m.StructValue).MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Value_ListValue) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Value_ListValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ListValue != nil {\n\t\tsize, err := (*ListValue)(m.ListValue).MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ListValue) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ListValue) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *ListValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Values) > 0 {\n\t\tfor iNdEx := len(m.Values) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := (*Value)(m.Values[iNdEx]).MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Struct) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Struct) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Struct) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Fields) > 0 {\n\t\tfor k := range m.Fields {\n\t\t\tv := m.Fields[k]\n\t\t\tbaseI := i\n\t\t\tsize, err := (*Value)(v).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Value) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Value) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Value) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m, ok := m.Kind.(*structpb.Value_ListValue); ok {\n\t\tmsg := ((*Value_ListValue)(m))\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m, ok := m.Kind.(*structpb.Value_StructValue); ok {\n\t\tmsg := ((*Value_StructValue)(m))\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m, ok := m.Kind.(*structpb.Value_BoolValue); ok {\n\t\tmsg := ((*Value_BoolValue)(m))\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m, ok := m.Kind.(*structpb.Value_StringValue); ok {\n\t\tmsg := ((*Value_StringValue)(m))\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m, ok := m.Kind.(*structpb.Value_NumberValue); ok {\n\t\tmsg := ((*Value_NumberValue)(m))\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\tif m, ok := m.Kind.(*structpb.Value_NullValue); ok {\n\t\tmsg := ((*Value_NullValue)(m))\n\t\tsize, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Value_NullValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Value_NullValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.NullValue))\n\ti--\n\tdAtA[i] = 0x8\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Value_NumberValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Value_NumberValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= 8\n\tbinary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.NumberValue))))\n\ti--\n\tdAtA[i] = 0x11\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Value_StringValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Value_StringValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti -= len(m.StringValue)\n\tcopy(dAtA[i:], m.StringValue)\n\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.StringValue)))\n\ti--\n\tdAtA[i] = 0x1a\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Value_BoolValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Value_BoolValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti--\n\tif m.BoolValue {\n\t\tdAtA[i] = 1\n\t} else {\n\t\tdAtA[i] = 0\n\t}\n\ti--\n\tdAtA[i] = 0x20\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Value_StructValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Value_StructValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.StructValue != nil {\n\t\tsize, err := (*Struct)(m.StructValue).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Value_ListValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Value_ListValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ListValue != nil {\n\t\tsize, err := (*ListValue)(m.ListValue).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t} else {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, 0)\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ListValue) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ListValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *ListValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Values) > 0 {\n\t\tfor iNdEx := len(m.Values) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := (*Value)(m.Values[iNdEx]).MarshalToSizedBufferVTStrict(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Struct) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Fields) > 0 {\n\t\tfor k, v := range m.Fields {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tl = 0\n\t\t\tif v != nil {\n\t\t\t\tl = (*Value)(v).SizeVT()\n\t\t\t}\n\t\t\tl += 1 + protohelpers.SizeOfVarint(uint64(l))\n\t\t\tmapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + l\n\t\t\tn += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize))\n\t\t}\n\t}\n\treturn n\n}\n\nfunc (m *Value) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tswitch c := m.Kind.(type) {\n\tcase *structpb.Value_NullValue:\n\t\tn += (*Value_NullValue)(c).SizeVT()\n\tcase *structpb.Value_NumberValue:\n\t\tn += (*Value_NumberValue)(c).SizeVT()\n\tcase *structpb.Value_StringValue:\n\t\tn += (*Value_StringValue)(c).SizeVT()\n\tcase *structpb.Value_BoolValue:\n\t\tn += (*Value_BoolValue)(c).SizeVT()\n\tcase *structpb.Value_StructValue:\n\t\tn += (*Value_StructValue)(c).SizeVT()\n\tcase *structpb.Value_ListValue:\n\t\tn += (*Value_ListValue)(c).SizeVT()\n\t}\n\treturn n\n}\n\nfunc (m *Value_NullValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 1 + protohelpers.SizeOfVarint(uint64(m.NullValue))\n\treturn n\n}\nfunc (m *Value_NumberValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 9\n\treturn n\n}\nfunc (m *Value_StringValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.StringValue)\n\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\treturn n\n}\nfunc (m *Value_BoolValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 2\n\treturn n\n}\nfunc (m *Value_StructValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.StructValue != nil {\n\t\tl = (*Struct)(m.StructValue).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 3\n\t}\n\treturn n\n}\nfunc (m *Value_ListValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ListValue != nil {\n\t\tl = (*ListValue)(m.ListValue).SizeVT()\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t} else {\n\t\tn += 3\n\t}\n\treturn n\n}\nfunc (m *ListValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Values) > 0 {\n\t\tfor _, e := range m.Values {\n\t\t\tl = (*Value)(e).SizeVT()\n\t\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t\t}\n\t}\n\treturn n\n}\n\nfunc (m *Struct) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Struct: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Struct: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Fields\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Fields == nil {\n\t\t\t\tm.Fields = make(map[string]*structpb.Value)\n\t\t\t}\n\t\t\tvar mapkey string\n\t\t\tvar mapvalue *structpb.Value\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar mapmsglen int\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tmapmsglen |= int(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif mapmsglen < 0 {\n\t\t\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostmsgIndex := iNdEx + mapmsglen\n\t\t\t\t\tif postmsgIndex < 0 {\n\t\t\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postmsgIndex > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = &structpb.Value{}\n\t\t\t\t\tif err := (*Value)(mapvalue).UnmarshalVT(dAtA[iNdEx:postmsgIndex]); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx = postmsgIndex\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Fields[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Value) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Value: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Value: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field NullValue\", wireType)\n\t\t\t}\n\t\t\tvar v structpb.NullValue\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= structpb.NullValue(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Kind = &structpb.Value_NullValue{NullValue: v}\n\t\tcase 2:\n\t\t\tif wireType != 1 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field NumberValue\", wireType)\n\t\t\t}\n\t\t\tvar v uint64\n\t\t\tif (iNdEx + 8) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:]))\n\t\t\tiNdEx += 8\n\t\t\tm.Kind = &structpb.Value_NumberValue{NumberValue: float64(math.Float64frombits(v))}\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field StringValue\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Kind = &structpb.Value_StringValue{StringValue: string(dAtA[iNdEx:postIndex])}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field BoolValue\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tb := bool(v != 0)\n\t\t\tm.Kind = &structpb.Value_BoolValue{BoolValue: b}\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field StructValue\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif oneof, ok := m.Kind.(*structpb.Value_StructValue); ok {\n\t\t\t\tif err := (*Struct)(oneof.StructValue).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tv := &structpb.Struct{}\n\t\t\t\tif err := (*Struct)(v).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tm.Kind = &structpb.Value_StructValue{StructValue: v}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ListValue\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif oneof, ok := m.Kind.(*structpb.Value_ListValue); ok {\n\t\t\t\tif err := (*ListValue)(oneof.ListValue).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tv := &structpb.ListValue{}\n\t\t\t\tif err := (*ListValue)(v).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tm.Kind = &structpb.Value_ListValue{ListValue: v}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *ListValue) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ListValue: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ListValue: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Values\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Values = append(m.Values, &structpb.Value{})\n\t\t\tif err := (*Value)(m.Values[len(m.Values)-1]).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Struct) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Struct: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Struct: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Fields\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Fields == nil {\n\t\t\t\tm.Fields = make(map[string]*structpb.Value)\n\t\t\t}\n\t\t\tvar mapkey string\n\t\t\tvar mapvalue *structpb.Value\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tif intStringLenmapkey == 0 {\n\t\t\t\t\t\tmapkey = \"\"\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmapkey = unsafe.String(&dAtA[iNdEx], intStringLenmapkey)\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar mapmsglen int\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tmapmsglen |= int(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif mapmsglen < 0 {\n\t\t\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostmsgIndex := iNdEx + mapmsglen\n\t\t\t\t\tif postmsgIndex < 0 {\n\t\t\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postmsgIndex > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = &structpb.Value{}\n\t\t\t\t\tif err := (*Value)(mapvalue).UnmarshalVTUnsafe(dAtA[iNdEx:postmsgIndex]); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx = postmsgIndex\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Fields[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Value) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Value: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Value: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field NullValue\", wireType)\n\t\t\t}\n\t\t\tvar v structpb.NullValue\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= structpb.NullValue(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Kind = &structpb.Value_NullValue{NullValue: v}\n\t\tcase 2:\n\t\t\tif wireType != 1 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field NumberValue\", wireType)\n\t\t\t}\n\t\t\tvar v uint64\n\t\t\tif (iNdEx + 8) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:]))\n\t\t\tiNdEx += 8\n\t\t\tm.Kind = &structpb.Value_NumberValue{NumberValue: float64(math.Float64frombits(v))}\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field StringValue\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tvar stringValue string\n\t\t\tif intStringLen > 0 {\n\t\t\t\tstringValue = unsafe.String(&dAtA[iNdEx], intStringLen)\n\t\t\t}\n\t\t\tm.Kind = &structpb.Value_StringValue{StringValue: stringValue}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field BoolValue\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tb := bool(v != 0)\n\t\t\tm.Kind = &structpb.Value_BoolValue{BoolValue: b}\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field StructValue\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif oneof, ok := m.Kind.(*structpb.Value_StructValue); ok {\n\t\t\t\tif err := (*Struct)(oneof.StructValue).UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tv := &structpb.Struct{}\n\t\t\t\tif err := (*Struct)(v).UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tm.Kind = &structpb.Value_StructValue{StructValue: v}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ListValue\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif oneof, ok := m.Kind.(*structpb.Value_ListValue); ok {\n\t\t\t\tif err := (*ListValue)(oneof.ListValue).UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tv := &structpb.ListValue{}\n\t\t\t\tif err := (*ListValue)(v).UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tm.Kind = &structpb.Value_ListValue{ListValue: v}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *ListValue) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ListValue: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ListValue: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Values\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Values = append(m.Values, &structpb.Value{})\n\t\t\tif err := (*Value)(m.Values[len(m.Values)-1]).UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/planetscale/vtprotobuf/types/known/wrapperspb/wrappers_vtproto.pb.go",
    "content": "// Code generated by protoc-gen-go-vtproto. DO NOT EDIT.\n// protoc-gen-go-vtproto version: (devel)\n// source: google/protobuf/wrappers.proto\n\npackage wrapperspb\n\nimport (\n\tbinary \"encoding/binary\"\n\tfmt \"fmt\"\n\tprotohelpers \"github.com/planetscale/vtprotobuf/protohelpers\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\twrapperspb \"google.golang.org/protobuf/types/known/wrapperspb\"\n\tio \"io\"\n\tmath \"math\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype DoubleValue wrapperspb.DoubleValue\ntype FloatValue wrapperspb.FloatValue\ntype Int64Value wrapperspb.Int64Value\ntype UInt64Value wrapperspb.UInt64Value\ntype Int32Value wrapperspb.Int32Value\ntype UInt32Value wrapperspb.UInt32Value\ntype BoolValue wrapperspb.BoolValue\ntype StringValue wrapperspb.StringValue\ntype BytesValue wrapperspb.BytesValue\n\nfunc (m *DoubleValue) CloneVT() *DoubleValue {\n\tif m == nil {\n\t\treturn (*DoubleValue)(nil)\n\t}\n\tr := new(DoubleValue)\n\tr.Value = m.Value\n\treturn r\n}\n\nfunc (m *FloatValue) CloneVT() *FloatValue {\n\tif m == nil {\n\t\treturn (*FloatValue)(nil)\n\t}\n\tr := new(FloatValue)\n\tr.Value = m.Value\n\treturn r\n}\n\nfunc (m *Int64Value) CloneVT() *Int64Value {\n\tif m == nil {\n\t\treturn (*Int64Value)(nil)\n\t}\n\tr := new(Int64Value)\n\tr.Value = m.Value\n\treturn r\n}\n\nfunc (m *UInt64Value) CloneVT() *UInt64Value {\n\tif m == nil {\n\t\treturn (*UInt64Value)(nil)\n\t}\n\tr := new(UInt64Value)\n\tr.Value = m.Value\n\treturn r\n}\n\nfunc (m *Int32Value) CloneVT() *Int32Value {\n\tif m == nil {\n\t\treturn (*Int32Value)(nil)\n\t}\n\tr := new(Int32Value)\n\tr.Value = m.Value\n\treturn r\n}\n\nfunc (m *UInt32Value) CloneVT() *UInt32Value {\n\tif m == nil {\n\t\treturn (*UInt32Value)(nil)\n\t}\n\tr := new(UInt32Value)\n\tr.Value = m.Value\n\treturn r\n}\n\nfunc (m *BoolValue) CloneVT() *BoolValue {\n\tif m == nil {\n\t\treturn (*BoolValue)(nil)\n\t}\n\tr := new(BoolValue)\n\tr.Value = m.Value\n\treturn r\n}\n\nfunc (m *StringValue) CloneVT() *StringValue {\n\tif m == nil {\n\t\treturn (*StringValue)(nil)\n\t}\n\tr := new(StringValue)\n\tr.Value = m.Value\n\treturn r\n}\n\nfunc (m *BytesValue) CloneVT() *BytesValue {\n\tif m == nil {\n\t\treturn (*BytesValue)(nil)\n\t}\n\tr := new(BytesValue)\n\tif rhs := m.Value; rhs != nil {\n\t\ttmpBytes := make([]byte, len(rhs))\n\t\tcopy(tmpBytes, rhs)\n\t\tr.Value = tmpBytes\n\t}\n\treturn r\n}\n\nfunc (this *DoubleValue) EqualVT(that *DoubleValue) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\tif this.Value != that.Value {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (this *FloatValue) EqualVT(that *FloatValue) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\tif this.Value != that.Value {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (this *Int64Value) EqualVT(that *Int64Value) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\tif this.Value != that.Value {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (this *UInt64Value) EqualVT(that *UInt64Value) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\tif this.Value != that.Value {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (this *Int32Value) EqualVT(that *Int32Value) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\tif this.Value != that.Value {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (this *UInt32Value) EqualVT(that *UInt32Value) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\tif this.Value != that.Value {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (this *BoolValue) EqualVT(that *BoolValue) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\tif this.Value != that.Value {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (this *StringValue) EqualVT(that *StringValue) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\tif this.Value != that.Value {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (this *BytesValue) EqualVT(that *BytesValue) bool {\n\tif this == that {\n\t\treturn true\n\t} else if this == nil || that == nil {\n\t\treturn false\n\t}\n\tif string(this.Value) != string(that.Value) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (m *DoubleValue) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DoubleValue) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *DoubleValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\ti -= 8\n\t\tbinary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Value))))\n\t\ti--\n\t\tdAtA[i] = 0x9\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *FloatValue) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *FloatValue) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *FloatValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\ti -= 4\n\t\tbinary.LittleEndian.PutUint32(dAtA[i:], uint32(math.Float32bits(float32(m.Value))))\n\t\ti--\n\t\tdAtA[i] = 0xd\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Int64Value) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Int64Value) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Int64Value) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UInt64Value) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UInt64Value) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *UInt64Value) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Int32Value) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Int32Value) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Int32Value) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UInt32Value) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UInt32Value) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *UInt32Value) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *BoolValue) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *BoolValue) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *BoolValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Value {\n\t\ti--\n\t\tif m.Value {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *StringValue) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *StringValue) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *StringValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *BytesValue) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *BytesValue) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *BytesValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DoubleValue) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DoubleValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *DoubleValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\ti -= 8\n\t\tbinary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Value))))\n\t\ti--\n\t\tdAtA[i] = 0x9\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *FloatValue) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *FloatValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *FloatValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\ti -= 4\n\t\tbinary.LittleEndian.PutUint32(dAtA[i:], uint32(math.Float32bits(float32(m.Value))))\n\t\ti--\n\t\tdAtA[i] = 0xd\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Int64Value) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Int64Value) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Int64Value) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UInt64Value) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UInt64Value) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *UInt64Value) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Int32Value) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Int32Value) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *Int32Value) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UInt32Value) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UInt32Value) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *UInt32Value) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *BoolValue) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *BoolValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *BoolValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Value {\n\t\ti--\n\t\tif m.Value {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *StringValue) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *StringValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *StringValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *BytesValue) MarshalVTStrict() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVTStrict(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *BytesValue) MarshalToVTStrict(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVTStrict(dAtA[:size])\n}\n\nfunc (m *BytesValue) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DoubleValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\tn += 9\n\t}\n\treturn n\n}\n\nfunc (m *FloatValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\tn += 5\n\t}\n\treturn n\n}\n\nfunc (m *Int64Value) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Value))\n\t}\n\treturn n\n}\n\nfunc (m *UInt64Value) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Value))\n\t}\n\treturn n\n}\n\nfunc (m *Int32Value) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Value))\n\t}\n\treturn n\n}\n\nfunc (m *UInt32Value) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\tn += 1 + protohelpers.SizeOfVarint(uint64(m.Value))\n\t}\n\treturn n\n}\n\nfunc (m *BoolValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value {\n\t\tn += 2\n\t}\n\treturn n\n}\n\nfunc (m *StringValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Value)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *BytesValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Value)\n\tif l > 0 {\n\t\tn += 1 + l + protohelpers.SizeOfVarint(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *DoubleValue) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DoubleValue: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DoubleValue: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 1 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar v uint64\n\t\t\tif (iNdEx + 8) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:]))\n\t\t\tiNdEx += 8\n\t\t\tm.Value = float64(math.Float64frombits(v))\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *FloatValue) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: FloatValue: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: FloatValue: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 5 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar v uint32\n\t\t\tif (iNdEx + 4) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv = uint32(binary.LittleEndian.Uint32(dAtA[iNdEx:]))\n\t\t\tiNdEx += 4\n\t\t\tm.Value = float32(math.Float32frombits(v))\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Int64Value) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Int64Value: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Int64Value: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UInt64Value) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UInt64Value: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UInt64Value: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Int32Value) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Int32Value: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Int32Value: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= int32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UInt32Value) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UInt32Value: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UInt32Value: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *BoolValue) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: BoolValue: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: BoolValue: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Value = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *StringValue) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: StringValue: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: StringValue: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Value = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *BytesValue) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: BytesValue: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: BytesValue: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Value == nil {\n\t\t\t\tm.Value = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *DoubleValue) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DoubleValue: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DoubleValue: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 1 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar v uint64\n\t\t\tif (iNdEx + 8) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:]))\n\t\t\tiNdEx += 8\n\t\t\tm.Value = float64(math.Float64frombits(v))\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *FloatValue) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: FloatValue: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: FloatValue: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 5 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar v uint32\n\t\t\tif (iNdEx + 4) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv = uint32(binary.LittleEndian.Uint32(dAtA[iNdEx:]))\n\t\t\tiNdEx += 4\n\t\t\tm.Value = float32(math.Float32frombits(v))\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Int64Value) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Int64Value: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Int64Value: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UInt64Value) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UInt64Value: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UInt64Value: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Int32Value) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Int32Value: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Int32Value: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= int32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UInt32Value) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UInt32Value: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UInt32Value: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *BoolValue) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: BoolValue: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: BoolValue: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Value = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *StringValue) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: StringValue: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: StringValue: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tvar stringValue string\n\t\t\tif intStringLen > 0 {\n\t\t\t\tstringValue = unsafe.String(&dAtA[iNdEx], intStringLen)\n\t\t\t}\n\t\t\tm.Value = stringValue\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *BytesValue) UnmarshalVTUnsafe(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: BytesValue: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: BytesValue: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protohelpers.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Value = dAtA[iNdEx:postIndex]\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := protohelpers.Skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn protohelpers.ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/pmezard/go-difflib/LICENSE",
    "content": "Copyright (c) 2013, Patrick Mezard\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n    Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n    Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n    The names of its contributors may not be used to endorse or promote\nproducts derived from this software without specific prior written\npermission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/github.com/pmezard/go-difflib/difflib/difflib.go",
    "content": "// Package difflib is a partial port of Python difflib module.\n//\n// It provides tools to compare sequences of strings and generate textual diffs.\n//\n// The following class and functions have been ported:\n//\n// - SequenceMatcher\n//\n// - unified_diff\n//\n// - context_diff\n//\n// Getting unified diffs was the main goal of the port. Keep in mind this code\n// is mostly suitable to output text differences in a human friendly way, there\n// are no guarantees generated diffs are consumable by patch(1).\npackage difflib\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n)\n\nfunc min(a, b int) int {\n\tif a < b {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc max(a, b int) int {\n\tif a > b {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc calculateRatio(matches, length int) float64 {\n\tif length > 0 {\n\t\treturn 2.0 * float64(matches) / float64(length)\n\t}\n\treturn 1.0\n}\n\ntype Match struct {\n\tA    int\n\tB    int\n\tSize int\n}\n\ntype OpCode struct {\n\tTag byte\n\tI1  int\n\tI2  int\n\tJ1  int\n\tJ2  int\n}\n\n// SequenceMatcher compares sequence of strings. The basic\n// algorithm predates, and is a little fancier than, an algorithm\n// published in the late 1980's by Ratcliff and Obershelp under the\n// hyperbolic name \"gestalt pattern matching\".  The basic idea is to find\n// the longest contiguous matching subsequence that contains no \"junk\"\n// elements (R-O doesn't address junk).  The same idea is then applied\n// recursively to the pieces of the sequences to the left and to the right\n// of the matching subsequence.  This does not yield minimal edit\n// sequences, but does tend to yield matches that \"look right\" to people.\n//\n// SequenceMatcher tries to compute a \"human-friendly diff\" between two\n// sequences.  Unlike e.g. UNIX(tm) diff, the fundamental notion is the\n// longest *contiguous* & junk-free matching subsequence.  That's what\n// catches peoples' eyes.  The Windows(tm) windiff has another interesting\n// notion, pairing up elements that appear uniquely in each sequence.\n// That, and the method here, appear to yield more intuitive difference\n// reports than does diff.  This method appears to be the least vulnerable\n// to synching up on blocks of \"junk lines\", though (like blank lines in\n// ordinary text files, or maybe \"<P>\" lines in HTML files).  That may be\n// because this is the only method of the 3 that has a *concept* of\n// \"junk\" <wink>.\n//\n// Timing:  Basic R-O is cubic time worst case and quadratic time expected\n// case.  SequenceMatcher is quadratic time for the worst case and has\n// expected-case behavior dependent in a complicated way on how many\n// elements the sequences have in common; best case time is linear.\ntype SequenceMatcher struct {\n\ta              []string\n\tb              []string\n\tb2j            map[string][]int\n\tIsJunk         func(string) bool\n\tautoJunk       bool\n\tbJunk          map[string]struct{}\n\tmatchingBlocks []Match\n\tfullBCount     map[string]int\n\tbPopular       map[string]struct{}\n\topCodes        []OpCode\n}\n\nfunc NewMatcher(a, b []string) *SequenceMatcher {\n\tm := SequenceMatcher{autoJunk: true}\n\tm.SetSeqs(a, b)\n\treturn &m\n}\n\nfunc NewMatcherWithJunk(a, b []string, autoJunk bool,\n\tisJunk func(string) bool) *SequenceMatcher {\n\n\tm := SequenceMatcher{IsJunk: isJunk, autoJunk: autoJunk}\n\tm.SetSeqs(a, b)\n\treturn &m\n}\n\n// Set two sequences to be compared.\nfunc (m *SequenceMatcher) SetSeqs(a, b []string) {\n\tm.SetSeq1(a)\n\tm.SetSeq2(b)\n}\n\n// Set the first sequence to be compared. The second sequence to be compared is\n// not changed.\n//\n// SequenceMatcher computes and caches detailed information about the second\n// sequence, so if you want to compare one sequence S against many sequences,\n// use .SetSeq2(s) once and call .SetSeq1(x) repeatedly for each of the other\n// sequences.\n//\n// See also SetSeqs() and SetSeq2().\nfunc (m *SequenceMatcher) SetSeq1(a []string) {\n\tif &a == &m.a {\n\t\treturn\n\t}\n\tm.a = a\n\tm.matchingBlocks = nil\n\tm.opCodes = nil\n}\n\n// Set the second sequence to be compared. The first sequence to be compared is\n// not changed.\nfunc (m *SequenceMatcher) SetSeq2(b []string) {\n\tif &b == &m.b {\n\t\treturn\n\t}\n\tm.b = b\n\tm.matchingBlocks = nil\n\tm.opCodes = nil\n\tm.fullBCount = nil\n\tm.chainB()\n}\n\nfunc (m *SequenceMatcher) chainB() {\n\t// Populate line -> index mapping\n\tb2j := map[string][]int{}\n\tfor i, s := range m.b {\n\t\tindices := b2j[s]\n\t\tindices = append(indices, i)\n\t\tb2j[s] = indices\n\t}\n\n\t// Purge junk elements\n\tm.bJunk = map[string]struct{}{}\n\tif m.IsJunk != nil {\n\t\tjunk := m.bJunk\n\t\tfor s, _ := range b2j {\n\t\t\tif m.IsJunk(s) {\n\t\t\t\tjunk[s] = struct{}{}\n\t\t\t}\n\t\t}\n\t\tfor s, _ := range junk {\n\t\t\tdelete(b2j, s)\n\t\t}\n\t}\n\n\t// Purge remaining popular elements\n\tpopular := map[string]struct{}{}\n\tn := len(m.b)\n\tif m.autoJunk && n >= 200 {\n\t\tntest := n/100 + 1\n\t\tfor s, indices := range b2j {\n\t\t\tif len(indices) > ntest {\n\t\t\t\tpopular[s] = struct{}{}\n\t\t\t}\n\t\t}\n\t\tfor s, _ := range popular {\n\t\t\tdelete(b2j, s)\n\t\t}\n\t}\n\tm.bPopular = popular\n\tm.b2j = b2j\n}\n\nfunc (m *SequenceMatcher) isBJunk(s string) bool {\n\t_, ok := m.bJunk[s]\n\treturn ok\n}\n\n// Find longest matching block in a[alo:ahi] and b[blo:bhi].\n//\n// If IsJunk is not defined:\n//\n// Return (i,j,k) such that a[i:i+k] is equal to b[j:j+k], where\n//     alo <= i <= i+k <= ahi\n//     blo <= j <= j+k <= bhi\n// and for all (i',j',k') meeting those conditions,\n//     k >= k'\n//     i <= i'\n//     and if i == i', j <= j'\n//\n// In other words, of all maximal matching blocks, return one that\n// starts earliest in a, and of all those maximal matching blocks that\n// start earliest in a, return the one that starts earliest in b.\n//\n// If IsJunk is defined, first the longest matching block is\n// determined as above, but with the additional restriction that no\n// junk element appears in the block.  Then that block is extended as\n// far as possible by matching (only) junk elements on both sides.  So\n// the resulting block never matches on junk except as identical junk\n// happens to be adjacent to an \"interesting\" match.\n//\n// If no blocks match, return (alo, blo, 0).\nfunc (m *SequenceMatcher) findLongestMatch(alo, ahi, blo, bhi int) Match {\n\t// CAUTION:  stripping common prefix or suffix would be incorrect.\n\t// E.g.,\n\t//    ab\n\t//    acab\n\t// Longest matching block is \"ab\", but if common prefix is\n\t// stripped, it's \"a\" (tied with \"b\").  UNIX(tm) diff does so\n\t// strip, so ends up claiming that ab is changed to acab by\n\t// inserting \"ca\" in the middle.  That's minimal but unintuitive:\n\t// \"it's obvious\" that someone inserted \"ac\" at the front.\n\t// Windiff ends up at the same place as diff, but by pairing up\n\t// the unique 'b's and then matching the first two 'a's.\n\tbesti, bestj, bestsize := alo, blo, 0\n\n\t// find longest junk-free match\n\t// during an iteration of the loop, j2len[j] = length of longest\n\t// junk-free match ending with a[i-1] and b[j]\n\tj2len := map[int]int{}\n\tfor i := alo; i != ahi; i++ {\n\t\t// look at all instances of a[i] in b; note that because\n\t\t// b2j has no junk keys, the loop is skipped if a[i] is junk\n\t\tnewj2len := map[int]int{}\n\t\tfor _, j := range m.b2j[m.a[i]] {\n\t\t\t// a[i] matches b[j]\n\t\t\tif j < blo {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif j >= bhi {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tk := j2len[j-1] + 1\n\t\t\tnewj2len[j] = k\n\t\t\tif k > bestsize {\n\t\t\t\tbesti, bestj, bestsize = i-k+1, j-k+1, k\n\t\t\t}\n\t\t}\n\t\tj2len = newj2len\n\t}\n\n\t// Extend the best by non-junk elements on each end.  In particular,\n\t// \"popular\" non-junk elements aren't in b2j, which greatly speeds\n\t// the inner loop above, but also means \"the best\" match so far\n\t// doesn't contain any junk *or* popular non-junk elements.\n\tfor besti > alo && bestj > blo && !m.isBJunk(m.b[bestj-1]) &&\n\t\tm.a[besti-1] == m.b[bestj-1] {\n\t\tbesti, bestj, bestsize = besti-1, bestj-1, bestsize+1\n\t}\n\tfor besti+bestsize < ahi && bestj+bestsize < bhi &&\n\t\t!m.isBJunk(m.b[bestj+bestsize]) &&\n\t\tm.a[besti+bestsize] == m.b[bestj+bestsize] {\n\t\tbestsize += 1\n\t}\n\n\t// Now that we have a wholly interesting match (albeit possibly\n\t// empty!), we may as well suck up the matching junk on each\n\t// side of it too.  Can't think of a good reason not to, and it\n\t// saves post-processing the (possibly considerable) expense of\n\t// figuring out what to do with it.  In the case of an empty\n\t// interesting match, this is clearly the right thing to do,\n\t// because no other kind of match is possible in the regions.\n\tfor besti > alo && bestj > blo && m.isBJunk(m.b[bestj-1]) &&\n\t\tm.a[besti-1] == m.b[bestj-1] {\n\t\tbesti, bestj, bestsize = besti-1, bestj-1, bestsize+1\n\t}\n\tfor besti+bestsize < ahi && bestj+bestsize < bhi &&\n\t\tm.isBJunk(m.b[bestj+bestsize]) &&\n\t\tm.a[besti+bestsize] == m.b[bestj+bestsize] {\n\t\tbestsize += 1\n\t}\n\n\treturn Match{A: besti, B: bestj, Size: bestsize}\n}\n\n// Return list of triples describing matching subsequences.\n//\n// Each triple is of the form (i, j, n), and means that\n// a[i:i+n] == b[j:j+n].  The triples are monotonically increasing in\n// i and in j. It's also guaranteed that if (i, j, n) and (i', j', n') are\n// adjacent triples in the list, and the second is not the last triple in the\n// list, then i+n != i' or j+n != j'. IOW, adjacent triples never describe\n// adjacent equal blocks.\n//\n// The last triple is a dummy, (len(a), len(b), 0), and is the only\n// triple with n==0.\nfunc (m *SequenceMatcher) GetMatchingBlocks() []Match {\n\tif m.matchingBlocks != nil {\n\t\treturn m.matchingBlocks\n\t}\n\n\tvar matchBlocks func(alo, ahi, blo, bhi int, matched []Match) []Match\n\tmatchBlocks = func(alo, ahi, blo, bhi int, matched []Match) []Match {\n\t\tmatch := m.findLongestMatch(alo, ahi, blo, bhi)\n\t\ti, j, k := match.A, match.B, match.Size\n\t\tif match.Size > 0 {\n\t\t\tif alo < i && blo < j {\n\t\t\t\tmatched = matchBlocks(alo, i, blo, j, matched)\n\t\t\t}\n\t\t\tmatched = append(matched, match)\n\t\t\tif i+k < ahi && j+k < bhi {\n\t\t\t\tmatched = matchBlocks(i+k, ahi, j+k, bhi, matched)\n\t\t\t}\n\t\t}\n\t\treturn matched\n\t}\n\tmatched := matchBlocks(0, len(m.a), 0, len(m.b), nil)\n\n\t// It's possible that we have adjacent equal blocks in the\n\t// matching_blocks list now.\n\tnonAdjacent := []Match{}\n\ti1, j1, k1 := 0, 0, 0\n\tfor _, b := range matched {\n\t\t// Is this block adjacent to i1, j1, k1?\n\t\ti2, j2, k2 := b.A, b.B, b.Size\n\t\tif i1+k1 == i2 && j1+k1 == j2 {\n\t\t\t// Yes, so collapse them -- this just increases the length of\n\t\t\t// the first block by the length of the second, and the first\n\t\t\t// block so lengthened remains the block to compare against.\n\t\t\tk1 += k2\n\t\t} else {\n\t\t\t// Not adjacent.  Remember the first block (k1==0 means it's\n\t\t\t// the dummy we started with), and make the second block the\n\t\t\t// new block to compare against.\n\t\t\tif k1 > 0 {\n\t\t\t\tnonAdjacent = append(nonAdjacent, Match{i1, j1, k1})\n\t\t\t}\n\t\t\ti1, j1, k1 = i2, j2, k2\n\t\t}\n\t}\n\tif k1 > 0 {\n\t\tnonAdjacent = append(nonAdjacent, Match{i1, j1, k1})\n\t}\n\n\tnonAdjacent = append(nonAdjacent, Match{len(m.a), len(m.b), 0})\n\tm.matchingBlocks = nonAdjacent\n\treturn m.matchingBlocks\n}\n\n// Return list of 5-tuples describing how to turn a into b.\n//\n// Each tuple is of the form (tag, i1, i2, j1, j2).  The first tuple\n// has i1 == j1 == 0, and remaining tuples have i1 == the i2 from the\n// tuple preceding it, and likewise for j1 == the previous j2.\n//\n// The tags are characters, with these meanings:\n//\n// 'r' (replace):  a[i1:i2] should be replaced by b[j1:j2]\n//\n// 'd' (delete):   a[i1:i2] should be deleted, j1==j2 in this case.\n//\n// 'i' (insert):   b[j1:j2] should be inserted at a[i1:i1], i1==i2 in this case.\n//\n// 'e' (equal):    a[i1:i2] == b[j1:j2]\nfunc (m *SequenceMatcher) GetOpCodes() []OpCode {\n\tif m.opCodes != nil {\n\t\treturn m.opCodes\n\t}\n\ti, j := 0, 0\n\tmatching := m.GetMatchingBlocks()\n\topCodes := make([]OpCode, 0, len(matching))\n\tfor _, m := range matching {\n\t\t//  invariant:  we've pumped out correct diffs to change\n\t\t//  a[:i] into b[:j], and the next matching block is\n\t\t//  a[ai:ai+size] == b[bj:bj+size]. So we need to pump\n\t\t//  out a diff to change a[i:ai] into b[j:bj], pump out\n\t\t//  the matching block, and move (i,j) beyond the match\n\t\tai, bj, size := m.A, m.B, m.Size\n\t\ttag := byte(0)\n\t\tif i < ai && j < bj {\n\t\t\ttag = 'r'\n\t\t} else if i < ai {\n\t\t\ttag = 'd'\n\t\t} else if j < bj {\n\t\t\ttag = 'i'\n\t\t}\n\t\tif tag > 0 {\n\t\t\topCodes = append(opCodes, OpCode{tag, i, ai, j, bj})\n\t\t}\n\t\ti, j = ai+size, bj+size\n\t\t// the list of matching blocks is terminated by a\n\t\t// sentinel with size 0\n\t\tif size > 0 {\n\t\t\topCodes = append(opCodes, OpCode{'e', ai, i, bj, j})\n\t\t}\n\t}\n\tm.opCodes = opCodes\n\treturn m.opCodes\n}\n\n// Isolate change clusters by eliminating ranges with no changes.\n//\n// Return a generator of groups with up to n lines of context.\n// Each group is in the same format as returned by GetOpCodes().\nfunc (m *SequenceMatcher) GetGroupedOpCodes(n int) [][]OpCode {\n\tif n < 0 {\n\t\tn = 3\n\t}\n\tcodes := m.GetOpCodes()\n\tif len(codes) == 0 {\n\t\tcodes = []OpCode{OpCode{'e', 0, 1, 0, 1}}\n\t}\n\t// Fixup leading and trailing groups if they show no changes.\n\tif codes[0].Tag == 'e' {\n\t\tc := codes[0]\n\t\ti1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2\n\t\tcodes[0] = OpCode{c.Tag, max(i1, i2-n), i2, max(j1, j2-n), j2}\n\t}\n\tif codes[len(codes)-1].Tag == 'e' {\n\t\tc := codes[len(codes)-1]\n\t\ti1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2\n\t\tcodes[len(codes)-1] = OpCode{c.Tag, i1, min(i2, i1+n), j1, min(j2, j1+n)}\n\t}\n\tnn := n + n\n\tgroups := [][]OpCode{}\n\tgroup := []OpCode{}\n\tfor _, c := range codes {\n\t\ti1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2\n\t\t// End the current group and start a new one whenever\n\t\t// there is a large range with no changes.\n\t\tif c.Tag == 'e' && i2-i1 > nn {\n\t\t\tgroup = append(group, OpCode{c.Tag, i1, min(i2, i1+n),\n\t\t\t\tj1, min(j2, j1+n)})\n\t\t\tgroups = append(groups, group)\n\t\t\tgroup = []OpCode{}\n\t\t\ti1, j1 = max(i1, i2-n), max(j1, j2-n)\n\t\t}\n\t\tgroup = append(group, OpCode{c.Tag, i1, i2, j1, j2})\n\t}\n\tif len(group) > 0 && !(len(group) == 1 && group[0].Tag == 'e') {\n\t\tgroups = append(groups, group)\n\t}\n\treturn groups\n}\n\n// Return a measure of the sequences' similarity (float in [0,1]).\n//\n// Where T is the total number of elements in both sequences, and\n// M is the number of matches, this is 2.0*M / T.\n// Note that this is 1 if the sequences are identical, and 0 if\n// they have nothing in common.\n//\n// .Ratio() is expensive to compute if you haven't already computed\n// .GetMatchingBlocks() or .GetOpCodes(), in which case you may\n// want to try .QuickRatio() or .RealQuickRation() first to get an\n// upper bound.\nfunc (m *SequenceMatcher) Ratio() float64 {\n\tmatches := 0\n\tfor _, m := range m.GetMatchingBlocks() {\n\t\tmatches += m.Size\n\t}\n\treturn calculateRatio(matches, len(m.a)+len(m.b))\n}\n\n// Return an upper bound on ratio() relatively quickly.\n//\n// This isn't defined beyond that it is an upper bound on .Ratio(), and\n// is faster to compute.\nfunc (m *SequenceMatcher) QuickRatio() float64 {\n\t// viewing a and b as multisets, set matches to the cardinality\n\t// of their intersection; this counts the number of matches\n\t// without regard to order, so is clearly an upper bound\n\tif m.fullBCount == nil {\n\t\tm.fullBCount = map[string]int{}\n\t\tfor _, s := range m.b {\n\t\t\tm.fullBCount[s] = m.fullBCount[s] + 1\n\t\t}\n\t}\n\n\t// avail[x] is the number of times x appears in 'b' less the\n\t// number of times we've seen it in 'a' so far ... kinda\n\tavail := map[string]int{}\n\tmatches := 0\n\tfor _, s := range m.a {\n\t\tn, ok := avail[s]\n\t\tif !ok {\n\t\t\tn = m.fullBCount[s]\n\t\t}\n\t\tavail[s] = n - 1\n\t\tif n > 0 {\n\t\t\tmatches += 1\n\t\t}\n\t}\n\treturn calculateRatio(matches, len(m.a)+len(m.b))\n}\n\n// Return an upper bound on ratio() very quickly.\n//\n// This isn't defined beyond that it is an upper bound on .Ratio(), and\n// is faster to compute than either .Ratio() or .QuickRatio().\nfunc (m *SequenceMatcher) RealQuickRatio() float64 {\n\tla, lb := len(m.a), len(m.b)\n\treturn calculateRatio(min(la, lb), la+lb)\n}\n\n// Convert range to the \"ed\" format\nfunc formatRangeUnified(start, stop int) string {\n\t// Per the diff spec at http://www.unix.org/single_unix_specification/\n\tbeginning := start + 1 // lines start numbering with one\n\tlength := stop - start\n\tif length == 1 {\n\t\treturn fmt.Sprintf(\"%d\", beginning)\n\t}\n\tif length == 0 {\n\t\tbeginning -= 1 // empty ranges begin at line just before the range\n\t}\n\treturn fmt.Sprintf(\"%d,%d\", beginning, length)\n}\n\n// Unified diff parameters\ntype UnifiedDiff struct {\n\tA        []string // First sequence lines\n\tFromFile string   // First file name\n\tFromDate string   // First file time\n\tB        []string // Second sequence lines\n\tToFile   string   // Second file name\n\tToDate   string   // Second file time\n\tEol      string   // Headers end of line, defaults to LF\n\tContext  int      // Number of context lines\n}\n\n// Compare two sequences of lines; generate the delta as a unified diff.\n//\n// Unified diffs are a compact way of showing line changes and a few\n// lines of context.  The number of context lines is set by 'n' which\n// defaults to three.\n//\n// By default, the diff control lines (those with ---, +++, or @@) are\n// created with a trailing newline.  This is helpful so that inputs\n// created from file.readlines() result in diffs that are suitable for\n// file.writelines() since both the inputs and outputs have trailing\n// newlines.\n//\n// For inputs that do not have trailing newlines, set the lineterm\n// argument to \"\" so that the output will be uniformly newline free.\n//\n// The unidiff format normally has a header for filenames and modification\n// times.  Any or all of these may be specified using strings for\n// 'fromfile', 'tofile', 'fromfiledate', and 'tofiledate'.\n// The modification times are normally expressed in the ISO 8601 format.\nfunc WriteUnifiedDiff(writer io.Writer, diff UnifiedDiff) error {\n\tbuf := bufio.NewWriter(writer)\n\tdefer buf.Flush()\n\twf := func(format string, args ...interface{}) error {\n\t\t_, err := buf.WriteString(fmt.Sprintf(format, args...))\n\t\treturn err\n\t}\n\tws := func(s string) error {\n\t\t_, err := buf.WriteString(s)\n\t\treturn err\n\t}\n\n\tif len(diff.Eol) == 0 {\n\t\tdiff.Eol = \"\\n\"\n\t}\n\n\tstarted := false\n\tm := NewMatcher(diff.A, diff.B)\n\tfor _, g := range m.GetGroupedOpCodes(diff.Context) {\n\t\tif !started {\n\t\t\tstarted = true\n\t\t\tfromDate := \"\"\n\t\t\tif len(diff.FromDate) > 0 {\n\t\t\t\tfromDate = \"\\t\" + diff.FromDate\n\t\t\t}\n\t\t\ttoDate := \"\"\n\t\t\tif len(diff.ToDate) > 0 {\n\t\t\t\ttoDate = \"\\t\" + diff.ToDate\n\t\t\t}\n\t\t\tif diff.FromFile != \"\" || diff.ToFile != \"\" {\n\t\t\t\terr := wf(\"--- %s%s%s\", diff.FromFile, fromDate, diff.Eol)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terr = wf(\"+++ %s%s%s\", diff.ToFile, toDate, diff.Eol)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfirst, last := g[0], g[len(g)-1]\n\t\trange1 := formatRangeUnified(first.I1, last.I2)\n\t\trange2 := formatRangeUnified(first.J1, last.J2)\n\t\tif err := wf(\"@@ -%s +%s @@%s\", range1, range2, diff.Eol); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfor _, c := range g {\n\t\t\ti1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2\n\t\t\tif c.Tag == 'e' {\n\t\t\t\tfor _, line := range diff.A[i1:i2] {\n\t\t\t\t\tif err := ws(\" \" + line); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif c.Tag == 'r' || c.Tag == 'd' {\n\t\t\t\tfor _, line := range diff.A[i1:i2] {\n\t\t\t\t\tif err := ws(\"-\" + line); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif c.Tag == 'r' || c.Tag == 'i' {\n\t\t\t\tfor _, line := range diff.B[j1:j2] {\n\t\t\t\t\tif err := ws(\"+\" + line); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Like WriteUnifiedDiff but returns the diff a string.\nfunc GetUnifiedDiffString(diff UnifiedDiff) (string, error) {\n\tw := &bytes.Buffer{}\n\terr := WriteUnifiedDiff(w, diff)\n\treturn string(w.Bytes()), err\n}\n\n// Convert range to the \"ed\" format.\nfunc formatRangeContext(start, stop int) string {\n\t// Per the diff spec at http://www.unix.org/single_unix_specification/\n\tbeginning := start + 1 // lines start numbering with one\n\tlength := stop - start\n\tif length == 0 {\n\t\tbeginning -= 1 // empty ranges begin at line just before the range\n\t}\n\tif length <= 1 {\n\t\treturn fmt.Sprintf(\"%d\", beginning)\n\t}\n\treturn fmt.Sprintf(\"%d,%d\", beginning, beginning+length-1)\n}\n\ntype ContextDiff UnifiedDiff\n\n// Compare two sequences of lines; generate the delta as a context diff.\n//\n// Context diffs are a compact way of showing line changes and a few\n// lines of context. The number of context lines is set by diff.Context\n// which defaults to three.\n//\n// By default, the diff control lines (those with *** or ---) are\n// created with a trailing newline.\n//\n// For inputs that do not have trailing newlines, set the diff.Eol\n// argument to \"\" so that the output will be uniformly newline free.\n//\n// The context diff format normally has a header for filenames and\n// modification times.  Any or all of these may be specified using\n// strings for diff.FromFile, diff.ToFile, diff.FromDate, diff.ToDate.\n// The modification times are normally expressed in the ISO 8601 format.\n// If not specified, the strings default to blanks.\nfunc WriteContextDiff(writer io.Writer, diff ContextDiff) error {\n\tbuf := bufio.NewWriter(writer)\n\tdefer buf.Flush()\n\tvar diffErr error\n\twf := func(format string, args ...interface{}) {\n\t\t_, err := buf.WriteString(fmt.Sprintf(format, args...))\n\t\tif diffErr == nil && err != nil {\n\t\t\tdiffErr = err\n\t\t}\n\t}\n\tws := func(s string) {\n\t\t_, err := buf.WriteString(s)\n\t\tif diffErr == nil && err != nil {\n\t\t\tdiffErr = err\n\t\t}\n\t}\n\n\tif len(diff.Eol) == 0 {\n\t\tdiff.Eol = \"\\n\"\n\t}\n\n\tprefix := map[byte]string{\n\t\t'i': \"+ \",\n\t\t'd': \"- \",\n\t\t'r': \"! \",\n\t\t'e': \"  \",\n\t}\n\n\tstarted := false\n\tm := NewMatcher(diff.A, diff.B)\n\tfor _, g := range m.GetGroupedOpCodes(diff.Context) {\n\t\tif !started {\n\t\t\tstarted = true\n\t\t\tfromDate := \"\"\n\t\t\tif len(diff.FromDate) > 0 {\n\t\t\t\tfromDate = \"\\t\" + diff.FromDate\n\t\t\t}\n\t\t\ttoDate := \"\"\n\t\t\tif len(diff.ToDate) > 0 {\n\t\t\t\ttoDate = \"\\t\" + diff.ToDate\n\t\t\t}\n\t\t\tif diff.FromFile != \"\" || diff.ToFile != \"\" {\n\t\t\t\twf(\"*** %s%s%s\", diff.FromFile, fromDate, diff.Eol)\n\t\t\t\twf(\"--- %s%s%s\", diff.ToFile, toDate, diff.Eol)\n\t\t\t}\n\t\t}\n\n\t\tfirst, last := g[0], g[len(g)-1]\n\t\tws(\"***************\" + diff.Eol)\n\n\t\trange1 := formatRangeContext(first.I1, last.I2)\n\t\twf(\"*** %s ****%s\", range1, diff.Eol)\n\t\tfor _, c := range g {\n\t\t\tif c.Tag == 'r' || c.Tag == 'd' {\n\t\t\t\tfor _, cc := range g {\n\t\t\t\t\tif cc.Tag == 'i' {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tfor _, line := range diff.A[cc.I1:cc.I2] {\n\t\t\t\t\t\tws(prefix[cc.Tag] + line)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\trange2 := formatRangeContext(first.J1, last.J2)\n\t\twf(\"--- %s ----%s\", range2, diff.Eol)\n\t\tfor _, c := range g {\n\t\t\tif c.Tag == 'r' || c.Tag == 'i' {\n\t\t\t\tfor _, cc := range g {\n\t\t\t\t\tif cc.Tag == 'd' {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tfor _, line := range diff.B[cc.J1:cc.J2] {\n\t\t\t\t\t\tws(prefix[cc.Tag] + line)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\treturn diffErr\n}\n\n// Like WriteContextDiff but returns the diff a string.\nfunc GetContextDiffString(diff ContextDiff) (string, error) {\n\tw := &bytes.Buffer{}\n\terr := WriteContextDiff(w, diff)\n\treturn string(w.Bytes()), err\n}\n\n// Split a string on \"\\n\" while preserving them. The output can be used\n// as input for UnifiedDiff and ContextDiff structures.\nfunc SplitLines(s string) []string {\n\tlines := strings.SplitAfter(s, \"\\n\")\n\tlines[len(lines)-1] += \"\\n\"\n\treturn lines\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/.gitignore",
    "content": "sftpfs/file1\nsftpfs/test/\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/LICENSE.txt",
    "content": "                                Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/README.md",
    "content": "<img src=\"https://cloud.githubusercontent.com/assets/173412/11490338/d50e16dc-97a5-11e5-8b12-019a300d0fcb.png\" alt=\"afero logo-sm\"/>\n\n\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/spf13/afero/ci.yaml?branch=master&amp;style=flat-square)](https://github.com/spf13/afero/actions?query=workflow%3ACI)\n[![GoDoc](https://pkg.go.dev/badge/mod/github.com/spf13/afero)](https://pkg.go.dev/mod/github.com/spf13/afero)\n[![Go Report Card](https://goreportcard.com/badge/github.com/spf13/afero)](https://goreportcard.com/report/github.com/spf13/afero)\n![Go Version](https://img.shields.io/badge/go%20version-%3E=1.23-61CFDD.svg?style=flat-square\")\n\n\n# Afero: The Universal Filesystem Abstraction for Go\n\nAfero is a powerful and extensible filesystem abstraction system for Go. It provides a single, unified API for interacting with diverse filesystems—including the local disk, memory, archives, and network storage.\n\nAfero acts as a drop-in replacement for the standard `os` package, enabling you to write modular code that is agnostic to the underlying storage, dramatically simplifies testing, and allows for sophisticated architectural patterns through filesystem composition.\n\n## Why Afero?\n\nAfero elevates filesystem interaction beyond simple file reading and writing, offering solutions for testability, flexibility, and advanced architecture.\n\n🔑 **Key Features:**\n\n*   **Universal API:** Write your code once. Run it against the local OS, in-memory storage, ZIP/TAR archives, or remote systems (SFTP, GCS).\n*   **Ultimate Testability:** Utilize `MemMapFs`, a fully concurrent-safe, read/write in-memory filesystem. Write fast, isolated, and reliable unit tests without touching the physical disk or worrying about cleanup.\n*   **Powerful Composition:** Afero's hidden superpower. Layer filesystems on top of each other to create sophisticated behaviors:\n    *   **Sandboxing:** Use `CopyOnWriteFs` to create temporary scratch spaces that isolate changes from the base filesystem.\n    *   **Caching:** Use `CacheOnReadFs` to automatically layer a fast cache (like memory) over a slow backend (like a network drive).\n    *   **Security Jails:** Use `BasePathFs` to restrict application access to a specific subdirectory (chroot).\n*   **`os` Package Compatibility:** Afero mirrors the functions in the standard `os` package, making adoption and refactoring seamless.\n*   **`io/fs` Compatibility:** Fully compatible with the Go standard library's `io/fs` interfaces.\n\n## Installation\n\n```bash\ngo get github.com/spf13/afero\n```\n\n```go\nimport \"github.com/spf13/afero\"\n```\n\n## Quick Start: The Power of Abstraction\n\nThe core of Afero is the `afero.Fs` interface. By designing your functions to accept this interface rather than calling `os.*` functions directly, your code instantly becomes more flexible and testable.\n\n### 1. Refactor Your Code\n\nChange functions that rely on the `os` package to accept `afero.Fs`.\n\n```go\n// Before: Coupled to the OS and difficult to test\n// func ProcessConfiguration(path string) error {\n//     data, err := os.ReadFile(path)\n//     ...\n// }\n\nimport \"github.com/spf13/afero\"\n\n// After: Decoupled, flexible, and testable\nfunc ProcessConfiguration(fs afero.Fs, path string) error {\n    // Use Afero utility functions which mirror os/ioutil\n    data, err := afero.ReadFile(fs, path)\n    // ... process the data\n    return err\n}\n```\n\n### 2. Usage in Production\n\nIn your production environment, inject the `OsFs` backend, which wraps the standard operating system calls.\n\n```go\nfunc main() {\n    // Use the real OS filesystem\n    AppFs := afero.NewOsFs()\n    ProcessConfiguration(AppFs, \"/etc/myapp.conf\")\n}\n```\n\n### 3. Usage in Testing\n\nIn your tests, inject `MemMapFs`. This provides a blazing-fast, isolated, in-memory filesystem that requires no disk I/O and no cleanup.\n\n```go\nfunc TestProcessConfiguration(t *testing.T) {\n    // Use the in-memory filesystem\n    AppFs := afero.NewMemMapFs()\n    \n    // Pre-populate the memory filesystem for the test\n    configPath := \"/test/config.json\"\n    afero.WriteFile(AppFs, configPath, []byte(`{\"feature\": true}`), 0644)\n\n    // Run the test entirely in memory\n    err := ProcessConfiguration(AppFs, configPath)\n    if err != nil {\n        t.Fatal(err)\n    }\n}\n```\n\n## Afero's Superpower: Composition\n\nAfero's most unique feature is its ability to combine filesystems. This allows you to build complex behaviors out of simple components, keeping your application logic clean.\n\n### Example 1: Sandboxing with Copy-on-Write\n\nCreate a temporary environment where an application can \"modify\" system files without affecting the actual disk.\n\n```go\n// 1. The base layer is the real OS, made read-only for safety.\nbaseFs := afero.NewReadOnlyFs(afero.NewOsFs())\n\n// 2. The overlay layer is a temporary in-memory filesystem for changes.\noverlayFs := afero.NewMemMapFs()\n\n// 3. Combine them. Reads fall through to the base; writes only hit the overlay.\nsandboxFs := afero.NewCopyOnWriteFs(baseFs, overlayFs)\n\n// The application can now \"modify\" /etc/hosts, but the changes are isolated in memory.\nafero.WriteFile(sandboxFs, \"/etc/hosts\", []byte(\"127.0.0.1 sandboxed-app\"), 0644)\n\n// The real /etc/hosts on disk is untouched.\n```\n\n### Example 2: Caching a Slow Filesystem\n\nImprove performance by layering a fast cache (like memory) over a slow backend (like a network drive or cloud storage).\n\n```go\nimport \"time\"\n\n// Assume 'remoteFs' is a slow backend (e.g., SFTP or GCS)\nvar remoteFs afero.Fs \n\n// 'cacheFs' is a fast in-memory backend\ncacheFs := afero.NewMemMapFs()\n\n// Create the caching layer. Cache items for 5 minutes upon first read.\ncachedFs := afero.NewCacheOnReadFs(remoteFs, cacheFs, 5*time.Minute)\n\n// The first read is slow (fetches from remote, then caches)\ndata1, _ := afero.ReadFile(cachedFs, \"data.json\")\n\n// The second read is instant (serves from memory cache)\ndata2, _ := afero.ReadFile(cachedFs, \"data.json\")\n```\n\n### Example 3: Security Jails (chroot)\n\nRestrict an application component's access to a specific subdirectory.\n\n```go\nosFs := afero.NewOsFs()\n\n// Create a filesystem rooted at /home/user/public\n// The application cannot access anything above this directory.\njailedFs := afero.NewBasePathFs(osFs, \"/home/user/public\")\n\n// To the application, this is reading \"/\"\n// In reality, it's reading \"/home/user/public/\"\ndirInfo, err := afero.ReadDir(jailedFs, \"/\")\n\n// Attempts to access parent directories fail\n_, err = jailedFs.Open(\"../secrets.txt\") // Returns an error\n```\n\n## Real-World Use Cases\n\n### Build Cloud-Agnostic Applications\n\nWrite applications that seamlessly work with different storage backends:\n\n```go\ntype DocumentProcessor struct {\n    fs afero.Fs\n}\n\nfunc NewDocumentProcessor(fs afero.Fs) *DocumentProcessor {\n    return &DocumentProcessor{fs: fs}\n}\n\nfunc (p *DocumentProcessor) Process(inputPath, outputPath string) error {\n    // This code works whether fs is local disk, cloud storage, or memory\n    content, err := afero.ReadFile(p.fs, inputPath)\n    if err != nil {\n        return err\n    }\n    \n    processed := processContent(content)\n    return afero.WriteFile(p.fs, outputPath, processed, 0644)\n}\n\n// Use with local filesystem\nprocessor := NewDocumentProcessor(afero.NewOsFs())\n\n// Use with Google Cloud Storage\nprocessor := NewDocumentProcessor(gcsFS)\n\n// Use with in-memory filesystem for testing\nprocessor := NewDocumentProcessor(afero.NewMemMapFs())\n```\n\n### Treating Archives as Filesystems\n\nRead files directly from `.zip` or `.tar` archives without unpacking them to disk first.\n\n```go\nimport (\n    \"archive/zip\"\n    \"github.com/spf13/afero/zipfs\"\n)\n\n// Assume 'zipReader' is a *zip.Reader initialized from a file or memory\nvar zipReader *zip.Reader \n\n// Create a read-only ZipFs\narchiveFS := zipfs.New(zipReader)\n\n// Read a file from within the archive using the standard Afero API\ncontent, err := afero.ReadFile(archiveFS, \"/docs/readme.md\")\n```\n\n### Serving Any Filesystem over HTTP\n\nUse `HttpFs` to expose any Afero filesystem—even one created dynamically in memory—through a standard Go web server.\n\n```go\nimport (\n    \"net/http\"\n    \"github.com/spf13/afero\"\n)\n\nfunc main() {\n    memFS := afero.NewMemMapFs()\n    afero.WriteFile(memFS, \"index.html\", []byte(\"<h1>Hello from Memory!</h1>\"), 0644)\n\n    // Wrap the memory filesystem to make it compatible with http.FileServer.\n    httpFS := afero.NewHttpFs(memFS)\n\n    http.Handle(\"/\", http.FileServer(httpFS.Dir(\"/\")))\n    http.ListenAndServe(\":8080\", nil)\n}\n```\n\n### Testing Made Simple\n\nOne of Afero's greatest strengths is making filesystem-dependent code easily testable:\n\n```go\nfunc SaveUserData(fs afero.Fs, userID string, data []byte) error {\n    filename := fmt.Sprintf(\"users/%s.json\", userID)\n    return afero.WriteFile(fs, filename, data, 0644)\n}\n\nfunc TestSaveUserData(t *testing.T) {\n    // Create a clean, fast, in-memory filesystem for testing\n    testFS := afero.NewMemMapFs()\n    \n    userData := []byte(`{\"name\": \"John\", \"email\": \"john@example.com\"}`)\n    err := SaveUserData(testFS, \"123\", userData)\n    \n    if err != nil {\n        t.Fatalf(\"SaveUserData failed: %v\", err)\n    }\n    \n    // Verify the file was saved correctly\n    saved, err := afero.ReadFile(testFS, \"users/123.json\")\n    if err != nil {\n        t.Fatalf(\"Failed to read saved file: %v\", err)\n    }\n    \n    if string(saved) != string(userData) {\n        t.Errorf(\"Data mismatch: got %s, want %s\", saved, userData)\n    }\n}\n```\n\n**Benefits of testing with Afero:**\n- ⚡ **Fast** - No disk I/O, tests run in memory\n- 🔄 **Reliable** - Each test starts with a clean slate\n- 🧹 **No cleanup** - Memory is automatically freed\n- 🔒 **Safe** - Can't accidentally modify real files\n- 🏃 **Parallel** - Tests can run concurrently without conflicts\n\n## Backend Reference\n\n| Type | Backend | Constructor | Description | Status |\n| :--- | :--- | :--- | :--- | :--- |\n| **Core** | **OsFs** | `afero.NewOsFs()` | Interacts with the real operating system filesystem. Use in production. | ✅ Official |\n| | **MemMapFs** | `afero.NewMemMapFs()` | A fast, atomic, concurrent-safe, in-memory filesystem. Ideal for testing. | ✅ Official |\n| **Composition** | **CopyOnWriteFs**| `afero.NewCopyOnWriteFs(base, overlay)` | A read-only base with a writable overlay. Ideal for sandboxing. | ✅ Official |\n| | **CacheOnReadFs**| `afero.NewCacheOnReadFs(base, cache, ttl)` | Lazily caches files from a slow base into a fast layer on first read. | ✅ Official |\n| | **BasePathFs** | `afero.NewBasePathFs(source, path)` | Restricts operations to a subdirectory (chroot/jail). | ✅ Official |\n| | **ReadOnlyFs** | `afero.NewReadOnlyFs(source)` | Provides a read-only view, preventing any modifications. | ✅ Official |\n| | **RegexpFs** | `afero.NewRegexpFs(source, regexp)` | Filters a filesystem, only showing files that match a regex. | ✅ Official |\n| **Utility** | **HttpFs** | `afero.NewHttpFs(source)` | Wraps any Afero filesystem to be served via `http.FileServer`. | ✅ Official |\n| **Archives** | **ZipFs** | `zipfs.New(zipReader)` | Read-only access to files within a ZIP archive. | ✅ Official |\n| | **TarFs** | `tarfs.New(tarReader)` | Read-only access to files within a TAR archive. | ✅ Official |\n| **Network** | **GcsFs** | `gcsfs.NewGcsFs(...)` | Google Cloud Storage backend. | ⚡ Experimental |\n| | **SftpFs** | `sftpfs.New(...)` | SFTP backend. | ⚡ Experimental |\n| **3rd Party Cloud** | **S3Fs** | [`fclairamb/afero-s3`](https://github.com/fclairamb/afero-s3) | Production-ready S3 backend built on official AWS SDK. | 🔹 3rd Party |\n| | **MinioFs** | [`cpyun/afero-minio`](https://github.com/cpyun/afero-minio) | MinIO object storage backend with S3 compatibility. | 🔹 3rd Party |\n| | **DriveFs** | [`fclairamb/afero-gdrive`](https://github.com/fclairamb/afero-gdrive) | Google Drive backend with streaming support. | 🔹 3rd Party |\n| | **DropboxFs** | [`fclairamb/afero-dropbox`](https://github.com/fclairamb/afero-dropbox) | Dropbox backend with streaming support. | 🔹 3rd Party |\n| **3rd Party Specialized** | **GitFs** | [`tobiash/go-gitfs`](https://github.com/tobiash/go-gitfs) | Git repository filesystem (read-only, Afero compatible). | 🔹 3rd Party |\n| | **DockerFs** | [`unmango/aferox`](https://github.com/unmango/aferox) | Docker container filesystem access. | 🔹 3rd Party |\n| | **GitHubFs** | [`unmango/aferox`](https://github.com/unmango/aferox) | GitHub repository and releases filesystem. | 🔹 3rd Party |\n| | **FilterFs** | [`unmango/aferox`](https://github.com/unmango/aferox) | Filesystem filtering with predicates. | 🔹 3rd Party |\n| | **IgnoreFs** | [`unmango/aferox`](https://github.com/unmango/aferox) | .gitignore-aware filtering filesystem. | 🔹 3rd Party |\n| | **FUSEFs** | [`JakWai01/sile-fystem`](https://github.com/JakWai01/sile-fystem) | Generic FUSE implementation using any Afero backend. | 🔹 3rd Party |\n\n## Afero vs. `io/fs` (Go 1.16+)\n\nGo 1.16 introduced the `io/fs` package, which provides a standard abstraction for **read-only** filesystems.\n\nAfero complements `io/fs` by focusing on different needs:\n\n*   **Use `io/fs` when:** You only need to read files and want to conform strictly to the standard library interfaces.\n*   **Use Afero when:**\n    *   Your application needs to **create, write, modify, or delete** files.\n    *   You need to test complex read/write interactions (e.g., renaming, concurrent writes).\n    *   You need advanced compositional features (Copy-on-Write, Caching, etc.).\n\nAfero is fully compatible with `io/fs`. You can wrap any Afero filesystem to satisfy the `fs.FS` interface using `afero.NewIOFS`:\n\n```go\nimport \"io/fs\"\n\n// Create an Afero filesystem (writable)\nvar myAferoFs afero.Fs = afero.NewMemMapFs()\n\n// Convert it to a standard library fs.FS (read-only view)\nvar myIoFs fs.FS = afero.NewIOFS(myAferoFs)\n```\n\n## Third-Party Backends & Ecosystem\n\nThe Afero community has developed numerous backends and tools that extend the library's capabilities. Below are curated, well-maintained options organized by maturity and reliability.\n\n### Featured Community Backends\n\nThese are mature, reliable backends that we can confidently recommend for production use:\n\n#### **Amazon S3** - [`fclairamb/afero-s3`](https://github.com/fclairamb/afero-s3)\nProduction-ready S3 backend built on the official AWS SDK for Go.\n\n```go\nimport \"github.com/fclairamb/afero-s3\"\n\ns3fs := s3.NewFs(bucket, session)\n```\n\n#### **MinIO** - [`cpyun/afero-minio`](https://github.com/cpyun/afero-minio)\nMinIO object storage backend providing S3-compatible object storage with deduplication and optimization features.\n\n```go\nimport \"github.com/cpyun/afero-minio\"\n\nminioFs := miniofs.NewMinioFs(ctx, \"minio://endpoint/bucket\")\n```\n\n### Community & Specialized Backends\n\n#### Cloud Storage\n\n- **Google Drive** - [`fclairamb/afero-gdrive`](https://github.com/fclairamb/afero-gdrive)  \n  Streaming support; no write-seeking or POSIX permissions; no files listing cache\n\n- **Dropbox** - [`fclairamb/afero-dropbox`](https://github.com/fclairamb/afero-dropbox)  \n  Streaming support; no write-seeking or POSIX permissions\n\n#### Version Control Systems\n\n- **Git Repositories** - [`tobiash/go-gitfs`](https://github.com/tobiash/go-gitfs)  \n  Read-only filesystem abstraction for Git repositories. Works with bare repositories and provides filesystem view of any git reference. Uses go-git for repository access.\n\n#### Container and Remote Systems\n\n- **Docker Containers** - [`unmango/aferox`](https://github.com/unmango/aferox)  \n  Access Docker container filesystems as if they were local filesystems\n\n- **GitHub API** - [`unmango/aferox`](https://github.com/unmango/aferox)  \n  Turn GitHub repositories, releases, and assets into browsable filesystems\n\n#### FUSE Integration\n\n- **Generic FUSE** - [`JakWai01/sile-fystem`](https://github.com/JakWai01/sile-fystem)  \n  Mount any Afero filesystem as a FUSE filesystem, allowing any Afero backend to be used as a real mounted filesystem\n\n#### Specialized Filesystems\n\n- **FAT32 Support** - [`aligator/GoFAT`](https://github.com/aligator/GoFAT)  \n  Pure Go FAT filesystem implementation (currently read-only)\n\n### Interface Adapters & Utilities\n\n**Cross-Interface Compatibility:**\n- [`jfontan/go-billy-desfacer`](https://github.com/jfontan/go-billy-desfacer) - Adapter between Afero and go-billy interfaces (for go-git compatibility)\n- [`Maldris/go-billy-afero`](https://github.com/Maldris/go-billy-afero) - Alternative wrapper for using Afero with go-billy\n- [`c4milo/afero2billy`](https://github.com/c4milo/afero2billy) - Another Afero to billy filesystem adapter\n\n**Working Directory Management:**\n- [`carolynvs/aferox`](https://github.com/carolynvs/aferox) - Working directory-aware filesystem wrapper\n\n**Advanced Filtering:**\n- [`unmango/aferox`](https://github.com/unmango/aferox) includes multiple specialized filesystems:\n  - **FilterFs** - Predicate-based file filtering\n  - **IgnoreFs** - .gitignore-aware filtering\n  - **WriterFs** - Dump writes to io.Writer for debugging\n\n#### Developer Tools & Utilities\n\n**nhatthm Utility Suite** - Essential tools for Afero development:\n- [`nhatthm/aferocopy`](https://github.com/nhatthm/aferocopy) - Copy files between any Afero filesystems\n- [`nhatthm/aferomock`](https://github.com/nhatthm/aferomock) - Mocking toolkit for testing\n- [`nhatthm/aferoassert`](https://github.com/nhatthm/aferoassert) - Assertion helpers for filesystem testing\n\n### Ecosystem Showcase\n\n**Windows Virtual Drives** - [`balazsgrill/potatodrive`](https://github.com/balazsgrill/potatodrive)  \nMount any Afero filesystem as a Windows drive letter. Brilliant demonstration of Afero's power!\n\n### Modern Asset Embedding (Go 1.16+)\n\nInstead of third-party tools, use Go's native `//go:embed` with Afero:\n\n```go\nimport (\n    \"embed\"\n    \"github.com/spf13/afero\"\n)\n\n//go:embed assets/*\nvar assetsFS embed.FS\n\nfunc main() {\n    // Convert embedded files to Afero filesystem\n    fs := afero.FromIOFS(assetsFS)\n    \n    // Use like any other Afero filesystem\n    content, _ := afero.ReadFile(fs, \"assets/config.json\")\n}\n```\n\n## Contributing\n\nWe welcome contributions! The project is mature, but we are actively looking for contributors to help implement and stabilize network/cloud backends.\n\n* 🔥 **Microsoft Azure Blob Storage**  \n* 🔒 **Modern Encryption Backend** - Built on secure, contemporary crypto (not legacy EncFS)  \n* 🐙 **Canonical go-git Adapter** - Unified solution for Git integration  \n* 📡 **SSH/SCP Backend** - Secure remote file operations  \n*  Stabilization of existing experimental backends (GCS, SFTP)\n\nTo contribute:\n1. Fork the repository\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create a new Pull Request\n\n## 📄 License\n\nAfero is released under the Apache 2.0 license. See [LICENSE.txt](https://github.com/spf13/afero/blob/master/LICENSE.txt) for details.\n\n## 🔗 Additional Resources\n\n- [📖 Full API Documentation](https://pkg.go.dev/github.com/spf13/afero)\n- [🎯 Examples Repository](https://github.com/spf13/afero/tree/master/examples)\n- [📋 Release Notes](https://github.com/spf13/afero/releases)\n- [❓ GitHub Discussions](https://github.com/spf13/afero/discussions)\n\n---\n\n*Afero comes from the Latin roots Ad-Facere, meaning \"to make\" or \"to do\" - fitting for a library that empowers you to make and do amazing things with filesystems.*\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/afero.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\n// Copyright 2013 tsuru authors. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package afero provides types and methods for interacting with the filesystem,\n// as an abstraction layer.\n\n// Afero also provides a few implementations that are mostly interoperable. One that\n// uses the operating system filesystem, one that uses memory to store files\n// (cross platform) and an interface that should be implemented if you want to\n// provide your own filesystem.\n\npackage afero\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"os\"\n\t\"time\"\n)\n\ntype Afero struct {\n\tFs\n}\n\n// File represents a file in the filesystem.\ntype File interface {\n\tio.Closer\n\tio.Reader\n\tio.ReaderAt\n\tio.Seeker\n\tio.Writer\n\tio.WriterAt\n\n\tName() string\n\tReaddir(count int) ([]os.FileInfo, error)\n\tReaddirnames(n int) ([]string, error)\n\tStat() (os.FileInfo, error)\n\tSync() error\n\tTruncate(size int64) error\n\tWriteString(s string) (ret int, err error)\n}\n\n// Fs is the filesystem interface.\n//\n// Any simulated or real filesystem should implement this interface.\ntype Fs interface {\n\t// Create creates a file in the filesystem, returning the file and an\n\t// error, if any happens.\n\tCreate(name string) (File, error)\n\n\t// Mkdir creates a directory in the filesystem, return an error if any\n\t// happens.\n\tMkdir(name string, perm os.FileMode) error\n\n\t// MkdirAll creates a directory path and all parents that does not exist\n\t// yet.\n\tMkdirAll(path string, perm os.FileMode) error\n\n\t// Open opens a file, returning it or an error, if any happens.\n\tOpen(name string) (File, error)\n\n\t// OpenFile opens a file using the given flags and the given mode.\n\tOpenFile(name string, flag int, perm os.FileMode) (File, error)\n\n\t// Remove removes a file identified by name, returning an error, if any\n\t// happens.\n\tRemove(name string) error\n\n\t// RemoveAll removes a directory path and any children it contains. It\n\t// does not fail if the path does not exist (return nil).\n\tRemoveAll(path string) error\n\n\t// Rename renames a file.\n\tRename(oldname, newname string) error\n\n\t// Stat returns a FileInfo describing the named file, or an error, if any\n\t// happens.\n\tStat(name string) (os.FileInfo, error)\n\n\t// The name of this FileSystem\n\tName() string\n\n\t// Chmod changes the mode of the named file to mode.\n\tChmod(name string, mode os.FileMode) error\n\n\t// Chown changes the uid and gid of the named file.\n\tChown(name string, uid, gid int) error\n\n\t// Chtimes changes the access and modification times of the named file\n\tChtimes(name string, atime time.Time, mtime time.Time) error\n}\n\nvar (\n\tErrFileClosed        = errors.New(\"File is closed\")\n\tErrOutOfRange        = errors.New(\"out of range\")\n\tErrTooLarge          = errors.New(\"too large\")\n\tErrFileNotFound      = os.ErrNotExist\n\tErrFileExists        = os.ErrExist\n\tErrDestinationExists = os.ErrExist\n)\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/appveyor.yml",
    "content": "# This currently does nothing. We have moved to GitHub action, but this is kept\n# until spf13 has disabled this project in AppVeyor.\nversion: '{build}'\nclone_folder: C:\\gopath\\src\\github.com\\spf13\\afero\nenvironment:\n  GOPATH: C:\\gopath\nbuild_script:\n- cmd: >-\n    go version\n\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/basepath.go",
    "content": "package afero\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar (\n\t_ Lstater        = (*BasePathFs)(nil)\n\t_ fs.ReadDirFile = (*BasePathFile)(nil)\n)\n\n// The BasePathFs restricts all operations to a given path within an Fs.\n// The given file name to the operations on this Fs will be prepended with\n// the base path before calling the base Fs.\n// Any file name (after filepath.Clean()) outside this base path will be\n// treated as non existing file.\n//\n// Note that it does not clean the error messages on return, so you may\n// reveal the real path on errors.\ntype BasePathFs struct {\n\tsource Fs\n\tpath   string\n}\n\ntype BasePathFile struct {\n\tFile\n\tpath string\n}\n\nfunc (f *BasePathFile) Name() string {\n\tsourcename := f.File.Name()\n\treturn strings.TrimPrefix(sourcename, filepath.Clean(f.path))\n}\n\nfunc (f *BasePathFile) ReadDir(n int) ([]fs.DirEntry, error) {\n\tif rdf, ok := f.File.(fs.ReadDirFile); ok {\n\t\treturn rdf.ReadDir(n)\n\t}\n\treturn readDirFile{f.File}.ReadDir(n)\n}\n\nfunc NewBasePathFs(source Fs, path string) Fs {\n\treturn &BasePathFs{source: source, path: path}\n}\n\n// on a file outside the base path it returns the given file name and an error,\n// else the given file with the base path prepended\nfunc (b *BasePathFs) RealPath(name string) (path string, err error) {\n\tif err := validateBasePathName(name); err != nil {\n\t\treturn name, err\n\t}\n\n\tbpath := filepath.Clean(b.path)\n\tpath = filepath.Clean(filepath.Join(bpath, name))\n\tif !strings.HasPrefix(path, bpath) {\n\t\treturn name, os.ErrNotExist\n\t}\n\n\treturn path, nil\n}\n\nfunc validateBasePathName(name string) error {\n\tif runtime.GOOS != \"windows\" {\n\t\t// Not much to do here;\n\t\t// the virtual file paths all look absolute on *nix.\n\t\treturn nil\n\t}\n\n\t// On Windows a common mistake would be to provide an absolute OS path\n\t// We could strip out the base part, but that would not be very portable.\n\tif filepath.IsAbs(name) {\n\t\treturn os.ErrNotExist\n\t}\n\n\treturn nil\n}\n\nfunc (b *BasePathFs) Chtimes(name string, atime, mtime time.Time) (err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn &os.PathError{Op: \"chtimes\", Path: name, Err: err}\n\t}\n\treturn b.source.Chtimes(name, atime, mtime)\n}\n\nfunc (b *BasePathFs) Chmod(name string, mode os.FileMode) (err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn &os.PathError{Op: \"chmod\", Path: name, Err: err}\n\t}\n\treturn b.source.Chmod(name, mode)\n}\n\nfunc (b *BasePathFs) Chown(name string, uid, gid int) (err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn &os.PathError{Op: \"chown\", Path: name, Err: err}\n\t}\n\treturn b.source.Chown(name, uid, gid)\n}\n\nfunc (b *BasePathFs) Name() string {\n\treturn \"BasePathFs\"\n}\n\nfunc (b *BasePathFs) Stat(name string) (fi os.FileInfo, err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn nil, &os.PathError{Op: \"stat\", Path: name, Err: err}\n\t}\n\treturn b.source.Stat(name)\n}\n\nfunc (b *BasePathFs) Rename(oldname, newname string) (err error) {\n\tif oldname, err = b.RealPath(oldname); err != nil {\n\t\treturn &os.PathError{Op: \"rename\", Path: oldname, Err: err}\n\t}\n\tif newname, err = b.RealPath(newname); err != nil {\n\t\treturn &os.PathError{Op: \"rename\", Path: newname, Err: err}\n\t}\n\treturn b.source.Rename(oldname, newname)\n}\n\nfunc (b *BasePathFs) RemoveAll(name string) (err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn &os.PathError{Op: \"remove_all\", Path: name, Err: err}\n\t}\n\treturn b.source.RemoveAll(name)\n}\n\nfunc (b *BasePathFs) Remove(name string) (err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn &os.PathError{Op: \"remove\", Path: name, Err: err}\n\t}\n\treturn b.source.Remove(name)\n}\n\nfunc (b *BasePathFs) OpenFile(name string, flag int, mode os.FileMode) (f File, err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn nil, &os.PathError{Op: \"openfile\", Path: name, Err: err}\n\t}\n\tsourcef, err := b.source.OpenFile(name, flag, mode)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &BasePathFile{sourcef, b.path}, nil\n}\n\nfunc (b *BasePathFs) Open(name string) (f File, err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn nil, &os.PathError{Op: \"open\", Path: name, Err: err}\n\t}\n\tsourcef, err := b.source.Open(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &BasePathFile{File: sourcef, path: b.path}, nil\n}\n\nfunc (b *BasePathFs) Mkdir(name string, mode os.FileMode) (err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn &os.PathError{Op: \"mkdir\", Path: name, Err: err}\n\t}\n\treturn b.source.Mkdir(name, mode)\n}\n\nfunc (b *BasePathFs) MkdirAll(name string, mode os.FileMode) (err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn &os.PathError{Op: \"mkdir\", Path: name, Err: err}\n\t}\n\treturn b.source.MkdirAll(name, mode)\n}\n\nfunc (b *BasePathFs) Create(name string) (f File, err error) {\n\tif name, err = b.RealPath(name); err != nil {\n\t\treturn nil, &os.PathError{Op: \"create\", Path: name, Err: err}\n\t}\n\tsourcef, err := b.source.Create(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &BasePathFile{File: sourcef, path: b.path}, nil\n}\n\nfunc (b *BasePathFs) LstatIfPossible(name string) (os.FileInfo, bool, error) {\n\tname, err := b.RealPath(name)\n\tif err != nil {\n\t\treturn nil, false, &os.PathError{Op: \"lstat\", Path: name, Err: err}\n\t}\n\tif lstater, ok := b.source.(Lstater); ok {\n\t\treturn lstater.LstatIfPossible(name)\n\t}\n\tfi, err := b.source.Stat(name)\n\treturn fi, false, err\n}\n\nfunc (b *BasePathFs) SymlinkIfPossible(oldname, newname string) error {\n\toldname, err := b.RealPath(oldname)\n\tif err != nil {\n\t\treturn &os.LinkError{Op: \"symlink\", Old: oldname, New: newname, Err: err}\n\t}\n\tnewname, err = b.RealPath(newname)\n\tif err != nil {\n\t\treturn &os.LinkError{Op: \"symlink\", Old: oldname, New: newname, Err: err}\n\t}\n\tif linker, ok := b.source.(Linker); ok {\n\t\treturn linker.SymlinkIfPossible(oldname, newname)\n\t}\n\treturn &os.LinkError{Op: \"symlink\", Old: oldname, New: newname, Err: ErrNoSymlink}\n}\n\nfunc (b *BasePathFs) ReadlinkIfPossible(name string) (string, error) {\n\tname, err := b.RealPath(name)\n\tif err != nil {\n\t\treturn \"\", &os.PathError{Op: \"readlink\", Path: name, Err: err}\n\t}\n\tif reader, ok := b.source.(LinkReader); ok {\n\t\treturn reader.ReadlinkIfPossible(name)\n\t}\n\treturn \"\", &os.PathError{Op: \"readlink\", Path: name, Err: ErrNoReadlink}\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/cacheOnReadFs.go",
    "content": "package afero\n\nimport (\n\t\"os\"\n\t\"syscall\"\n\t\"time\"\n)\n\n// If the cache duration is 0, cache time will be unlimited, i.e. once\n// a file is in the layer, the base will never be read again for this file.\n//\n// For cache times greater than 0, the modification time of a file is\n// checked. Note that a lot of file system implementations only allow a\n// resolution of a second for timestamps... or as the godoc for os.Chtimes()\n// states: \"The underlying filesystem may truncate or round the values to a\n// less precise time unit.\"\n//\n// This caching union will forward all write calls also to the base file\n// system first. To prevent writing to the base Fs, wrap it in a read-only\n// filter - Note: this will also make the overlay read-only, for writing files\n// in the overlay, use the overlay Fs directly, not via the union Fs.\ntype CacheOnReadFs struct {\n\tbase      Fs\n\tlayer     Fs\n\tcacheTime time.Duration\n}\n\nfunc NewCacheOnReadFs(base Fs, layer Fs, cacheTime time.Duration) Fs {\n\treturn &CacheOnReadFs{base: base, layer: layer, cacheTime: cacheTime}\n}\n\ntype cacheState int\n\nconst (\n\t// not present in the overlay, unknown if it exists in the base:\n\tcacheMiss cacheState = iota\n\t// present in the overlay and in base, base file is newer:\n\tcacheStale\n\t// present in the overlay - with cache time == 0 it may exist in the base,\n\t// with cacheTime > 0 it exists in the base and is same age or newer in the\n\t// overlay\n\tcacheHit\n\t// happens if someone writes directly to the overlay without\n\t// going through this union\n\tcacheLocal\n)\n\nfunc (u *CacheOnReadFs) cacheStatus(name string) (state cacheState, fi os.FileInfo, err error) {\n\tvar lfi, bfi os.FileInfo\n\tlfi, err = u.layer.Stat(name)\n\tif err == nil {\n\t\tif u.cacheTime == 0 {\n\t\t\treturn cacheHit, lfi, nil\n\t\t}\n\t\tif lfi.ModTime().Add(u.cacheTime).Before(time.Now()) {\n\t\t\tbfi, err = u.base.Stat(name)\n\t\t\tif err != nil {\n\t\t\t\treturn cacheLocal, lfi, nil\n\t\t\t}\n\t\t\tif bfi.ModTime().After(lfi.ModTime()) {\n\t\t\t\treturn cacheStale, bfi, nil\n\t\t\t}\n\t\t}\n\t\treturn cacheHit, lfi, nil\n\t}\n\n\tif err == syscall.ENOENT || os.IsNotExist(err) {\n\t\treturn cacheMiss, nil, nil\n\t}\n\n\treturn cacheMiss, nil, err\n}\n\nfunc (u *CacheOnReadFs) copyToLayer(name string) error {\n\treturn copyToLayer(u.base, u.layer, name)\n}\n\nfunc (u *CacheOnReadFs) copyFileToLayer(name string, flag int, perm os.FileMode) error {\n\treturn copyFileToLayer(u.base, u.layer, name, flag, perm)\n}\n\nfunc (u *CacheOnReadFs) Chtimes(name string, atime, mtime time.Time) error {\n\tst, _, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch st {\n\tcase cacheLocal:\n\tcase cacheHit:\n\t\terr = u.base.Chtimes(name, atime, mtime)\n\tcase cacheStale, cacheMiss:\n\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = u.base.Chtimes(name, atime, mtime)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.Chtimes(name, atime, mtime)\n}\n\nfunc (u *CacheOnReadFs) Chmod(name string, mode os.FileMode) error {\n\tst, _, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch st {\n\tcase cacheLocal:\n\tcase cacheHit:\n\t\terr = u.base.Chmod(name, mode)\n\tcase cacheStale, cacheMiss:\n\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = u.base.Chmod(name, mode)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.Chmod(name, mode)\n}\n\nfunc (u *CacheOnReadFs) Chown(name string, uid, gid int) error {\n\tst, _, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch st {\n\tcase cacheLocal:\n\tcase cacheHit:\n\t\terr = u.base.Chown(name, uid, gid)\n\tcase cacheStale, cacheMiss:\n\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = u.base.Chown(name, uid, gid)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.Chown(name, uid, gid)\n}\n\nfunc (u *CacheOnReadFs) Stat(name string) (os.FileInfo, error) {\n\tst, fi, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tswitch st {\n\tcase cacheMiss:\n\t\treturn u.base.Stat(name)\n\tdefault: // cacheStale has base, cacheHit and cacheLocal the layer os.FileInfo\n\t\treturn fi, nil\n\t}\n}\n\nfunc (u *CacheOnReadFs) Rename(oldname, newname string) error {\n\tst, _, err := u.cacheStatus(oldname)\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch st {\n\tcase cacheLocal:\n\tcase cacheHit:\n\t\terr = u.base.Rename(oldname, newname)\n\tcase cacheStale, cacheMiss:\n\t\tif err := u.copyToLayer(oldname); err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = u.base.Rename(oldname, newname)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.Rename(oldname, newname)\n}\n\nfunc (u *CacheOnReadFs) Remove(name string) error {\n\tst, _, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch st {\n\tcase cacheLocal:\n\tcase cacheHit, cacheStale, cacheMiss:\n\t\terr = u.base.Remove(name)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.Remove(name)\n}\n\nfunc (u *CacheOnReadFs) RemoveAll(name string) error {\n\tst, _, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch st {\n\tcase cacheLocal:\n\tcase cacheHit, cacheStale, cacheMiss:\n\t\terr = u.base.RemoveAll(name)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.RemoveAll(name)\n}\n\nfunc (u *CacheOnReadFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\tst, _, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tswitch st {\n\tcase cacheLocal, cacheHit:\n\tdefault:\n\t\tif err := u.copyFileToLayer(name, flag, perm); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif flag&(os.O_WRONLY|syscall.O_RDWR|os.O_APPEND|os.O_CREATE|os.O_TRUNC) != 0 {\n\t\tbfi, err := u.base.OpenFile(name, flag, perm)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tlfi, err := u.layer.OpenFile(name, flag, perm)\n\t\tif err != nil {\n\t\t\tbfi.Close() // oops, what if O_TRUNC was set and file opening in the layer failed...?\n\t\t\treturn nil, err\n\t\t}\n\t\treturn &UnionFile{Base: bfi, Layer: lfi}, nil\n\t}\n\treturn u.layer.OpenFile(name, flag, perm)\n}\n\nfunc (u *CacheOnReadFs) Open(name string) (File, error) {\n\tst, fi, err := u.cacheStatus(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch st {\n\tcase cacheLocal:\n\t\treturn u.layer.Open(name)\n\n\tcase cacheMiss:\n\t\tbfi, err := u.base.Stat(name)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif bfi.IsDir() {\n\t\t\treturn u.base.Open(name)\n\t\t}\n\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn u.layer.Open(name)\n\n\tcase cacheStale:\n\t\tif !fi.IsDir() {\n\t\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn u.layer.Open(name)\n\t\t}\n\tcase cacheHit:\n\t\tif !fi.IsDir() {\n\t\t\treturn u.layer.Open(name)\n\t\t}\n\t}\n\t// the dirs from cacheHit, cacheStale fall down here:\n\tbfile, _ := u.base.Open(name)\n\tlfile, err := u.layer.Open(name)\n\tif err != nil && bfile == nil {\n\t\treturn nil, err\n\t}\n\treturn &UnionFile{Base: bfile, Layer: lfile}, nil\n}\n\nfunc (u *CacheOnReadFs) Mkdir(name string, perm os.FileMode) error {\n\terr := u.base.Mkdir(name, perm)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.MkdirAll(name, perm) // yes, MkdirAll... we cannot assume it exists in the cache\n}\n\nfunc (u *CacheOnReadFs) Name() string {\n\treturn \"CacheOnReadFs\"\n}\n\nfunc (u *CacheOnReadFs) MkdirAll(name string, perm os.FileMode) error {\n\terr := u.base.MkdirAll(name, perm)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn u.layer.MkdirAll(name, perm)\n}\n\nfunc (u *CacheOnReadFs) Create(name string) (File, error) {\n\tbfh, err := u.base.Create(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tlfh, err := u.layer.Create(name)\n\tif err != nil {\n\t\t// oops, see comment about OS_TRUNC above, should we remove? then we have to\n\t\t// remember if the file did not exist before\n\t\tbfh.Close()\n\t\treturn nil, err\n\t}\n\treturn &UnionFile{Base: bfh, Layer: lfh}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/const_bsds.go",
    "content": "// Copyright © 2016 Steve Francia <spf@spf13.com>.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build aix || darwin || openbsd || freebsd || netbsd || dragonfly || zos\n// +build aix darwin openbsd freebsd netbsd dragonfly zos\n\npackage afero\n\nimport (\n\t\"syscall\"\n)\n\nconst BADFD = syscall.EBADF\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/const_win_unix.go",
    "content": "// Copyright © 2016 Steve Francia <spf@spf13.com>.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//go:build !darwin && !openbsd && !freebsd && !dragonfly && !netbsd && !aix && !zos\n// +build !darwin,!openbsd,!freebsd,!dragonfly,!netbsd,!aix,!zos\n\npackage afero\n\nimport (\n\t\"syscall\"\n)\n\nconst BADFD = syscall.EBADFD\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/copyOnWriteFs.go",
    "content": "package afero\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"syscall\"\n\t\"time\"\n)\n\nvar _ Lstater = (*CopyOnWriteFs)(nil)\n\n// The CopyOnWriteFs is a union filesystem: a read only base file system with\n// a possibly writeable layer on top. Changes to the file system will only\n// be made in the overlay: Changing an existing file in the base layer which\n// is not present in the overlay will copy the file to the overlay (\"changing\"\n// includes also calls to e.g. Chtimes(), Chmod() and Chown()).\n//\n// Reading directories is currently only supported via Open(), not OpenFile().\ntype CopyOnWriteFs struct {\n\tbase  Fs\n\tlayer Fs\n}\n\nfunc NewCopyOnWriteFs(base Fs, layer Fs) Fs {\n\treturn &CopyOnWriteFs{base: base, layer: layer}\n}\n\n// Returns true if the file is not in the overlay\nfunc (u *CopyOnWriteFs) isBaseFile(name string) (bool, error) {\n\tif _, err := u.layer.Stat(name); err == nil {\n\t\treturn false, nil\n\t}\n\t_, err := u.base.Stat(name)\n\tif err != nil {\n\t\tif oerr, ok := err.(*os.PathError); ok {\n\t\t\tif oerr.Err == os.ErrNotExist || oerr.Err == syscall.ENOENT ||\n\t\t\t\toerr.Err == syscall.ENOTDIR {\n\t\t\t\treturn false, nil\n\t\t\t}\n\t\t}\n\t\tif err == syscall.ENOENT {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\treturn true, err\n}\n\nfunc (u *CopyOnWriteFs) copyToLayer(name string) error {\n\treturn copyToLayer(u.base, u.layer, name)\n}\n\nfunc (u *CopyOnWriteFs) Chtimes(name string, atime, mtime time.Time) error {\n\tb, err := u.isBaseFile(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif b {\n\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn u.layer.Chtimes(name, atime, mtime)\n}\n\nfunc (u *CopyOnWriteFs) Chmod(name string, mode os.FileMode) error {\n\tb, err := u.isBaseFile(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif b {\n\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn u.layer.Chmod(name, mode)\n}\n\nfunc (u *CopyOnWriteFs) Chown(name string, uid, gid int) error {\n\tb, err := u.isBaseFile(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif b {\n\t\tif err := u.copyToLayer(name); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn u.layer.Chown(name, uid, gid)\n}\n\nfunc (u *CopyOnWriteFs) Stat(name string) (os.FileInfo, error) {\n\tfi, err := u.layer.Stat(name)\n\tif err != nil {\n\t\tisNotExist := u.isNotExist(err)\n\t\tif isNotExist {\n\t\t\treturn u.base.Stat(name)\n\t\t}\n\t\treturn nil, err\n\t}\n\treturn fi, nil\n}\n\nfunc (u *CopyOnWriteFs) LstatIfPossible(name string) (os.FileInfo, bool, error) {\n\tllayer, ok1 := u.layer.(Lstater)\n\tlbase, ok2 := u.base.(Lstater)\n\n\tif ok1 {\n\t\tfi, b, err := llayer.LstatIfPossible(name)\n\t\tif err == nil {\n\t\t\treturn fi, b, nil\n\t\t}\n\n\t\tif !u.isNotExist(err) {\n\t\t\treturn nil, b, err\n\t\t}\n\t}\n\n\tif ok2 {\n\t\tfi, b, err := lbase.LstatIfPossible(name)\n\t\tif err == nil {\n\t\t\treturn fi, b, nil\n\t\t}\n\t\tif !u.isNotExist(err) {\n\t\t\treturn nil, b, err\n\t\t}\n\t}\n\n\tfi, err := u.Stat(name)\n\n\treturn fi, false, err\n}\n\nfunc (u *CopyOnWriteFs) SymlinkIfPossible(oldname, newname string) error {\n\tif slayer, ok := u.layer.(Linker); ok {\n\t\treturn slayer.SymlinkIfPossible(oldname, newname)\n\t}\n\n\treturn &os.LinkError{Op: \"symlink\", Old: oldname, New: newname, Err: ErrNoSymlink}\n}\n\nfunc (u *CopyOnWriteFs) ReadlinkIfPossible(name string) (string, error) {\n\tif rlayer, ok := u.layer.(LinkReader); ok {\n\t\treturn rlayer.ReadlinkIfPossible(name)\n\t}\n\n\tif rbase, ok := u.base.(LinkReader); ok {\n\t\treturn rbase.ReadlinkIfPossible(name)\n\t}\n\n\treturn \"\", &os.PathError{Op: \"readlink\", Path: name, Err: ErrNoReadlink}\n}\n\nfunc (u *CopyOnWriteFs) isNotExist(err error) bool {\n\tif e, ok := err.(*os.PathError); ok {\n\t\terr = e.Err\n\t}\n\tif err == os.ErrNotExist || err == syscall.ENOENT || err == syscall.ENOTDIR {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// Renaming files present only in the base layer is not permitted\nfunc (u *CopyOnWriteFs) Rename(oldname, newname string) error {\n\tb, err := u.isBaseFile(oldname)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif b {\n\t\treturn syscall.EPERM\n\t}\n\treturn u.layer.Rename(oldname, newname)\n}\n\n// Removing files present only in the base layer is not permitted. If\n// a file is present in the base layer and the overlay, only the overlay\n// will be removed.\nfunc (u *CopyOnWriteFs) Remove(name string) error {\n\terr := u.layer.Remove(name)\n\tswitch err {\n\tcase syscall.ENOENT:\n\t\t_, err = u.base.Stat(name)\n\t\tif err == nil {\n\t\t\treturn syscall.EPERM\n\t\t}\n\t\treturn syscall.ENOENT\n\tdefault:\n\t\treturn err\n\t}\n}\n\nfunc (u *CopyOnWriteFs) RemoveAll(name string) error {\n\terr := u.layer.RemoveAll(name)\n\tswitch err {\n\tcase syscall.ENOENT:\n\t\t_, err = u.base.Stat(name)\n\t\tif err == nil {\n\t\t\treturn syscall.EPERM\n\t\t}\n\t\treturn syscall.ENOENT\n\tdefault:\n\t\treturn err\n\t}\n}\n\nfunc (u *CopyOnWriteFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\tb, err := u.isBaseFile(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif flag&(os.O_WRONLY|os.O_RDWR|os.O_APPEND|os.O_CREATE|os.O_TRUNC) != 0 {\n\t\tif b {\n\t\t\tif err = u.copyToLayer(name); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn u.layer.OpenFile(name, flag, perm)\n\t\t}\n\n\t\tdir := filepath.Dir(name)\n\t\tisaDir, err := IsDir(u.base, dir)\n\t\tif err != nil && !os.IsNotExist(err) {\n\t\t\treturn nil, err\n\t\t}\n\t\tif isaDir {\n\t\t\tif err = u.layer.MkdirAll(dir, 0o777); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn u.layer.OpenFile(name, flag, perm)\n\t\t}\n\n\t\tisaDir, err = IsDir(u.layer, dir)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif isaDir {\n\t\t\treturn u.layer.OpenFile(name, flag, perm)\n\t\t}\n\n\t\treturn nil, &os.PathError{\n\t\t\tOp:   \"open\",\n\t\t\tPath: name,\n\t\t\tErr:  syscall.ENOTDIR,\n\t\t} // ...or os.ErrNotExist?\n\t}\n\tif b {\n\t\treturn u.base.OpenFile(name, flag, perm)\n\t}\n\treturn u.layer.OpenFile(name, flag, perm)\n}\n\n// This function handles the 9 different possibilities caused\n// by the union which are the intersection of the following...\n//\n//\tlayer: doesn't exist, exists as a file, and exists as a directory\n//\tbase:  doesn't exist, exists as a file, and exists as a directory\nfunc (u *CopyOnWriteFs) Open(name string) (File, error) {\n\t// Since the overlay overrides the base we check that first\n\tb, err := u.isBaseFile(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// If overlay doesn't exist, return the base (base state irrelevant)\n\tif b {\n\t\treturn u.base.Open(name)\n\t}\n\n\t// If overlay is a file, return it (base state irrelevant)\n\tdir, err := IsDir(u.layer, name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif !dir {\n\t\treturn u.layer.Open(name)\n\t}\n\n\t// Overlay is a directory, base state now matters.\n\t// Base state has 3 states to check but 2 outcomes:\n\t// A. It's a file or non-readable in the base (return just the overlay)\n\t// B. It's an accessible directory in the base (return a UnionFile)\n\n\t// If base is file or nonreadable, return overlay\n\tdir, err = IsDir(u.base, name)\n\tif !dir || err != nil {\n\t\treturn u.layer.Open(name)\n\t}\n\n\t// Both base & layer are directories\n\t// Return union file (if opens are without error)\n\tbfile, bErr := u.base.Open(name)\n\tlfile, lErr := u.layer.Open(name)\n\n\t// If either have errors at this point something is very wrong. Return nil and the errors\n\tif bErr != nil || lErr != nil {\n\t\treturn nil, fmt.Errorf(\"BaseErr: %v\\nOverlayErr: %v\", bErr, lErr)\n\t}\n\n\treturn &UnionFile{Base: bfile, Layer: lfile}, nil\n}\n\nfunc (u *CopyOnWriteFs) Mkdir(name string, perm os.FileMode) error {\n\tdir, err := IsDir(u.base, name)\n\tif err != nil {\n\t\treturn u.layer.MkdirAll(name, perm)\n\t}\n\tif dir {\n\t\treturn ErrFileExists\n\t}\n\treturn u.layer.MkdirAll(name, perm)\n}\n\nfunc (u *CopyOnWriteFs) Name() string {\n\treturn \"CopyOnWriteFs\"\n}\n\nfunc (u *CopyOnWriteFs) MkdirAll(name string, perm os.FileMode) error {\n\tdir, err := IsDir(u.base, name)\n\tif err != nil {\n\t\treturn u.layer.MkdirAll(name, perm)\n\t}\n\tif dir {\n\t\t// This is in line with how os.MkdirAll behaves.\n\t\treturn nil\n\t}\n\treturn u.layer.MkdirAll(name, perm)\n}\n\nfunc (u *CopyOnWriteFs) Create(name string) (File, error) {\n\treturn u.OpenFile(name, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0o666)\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/httpFs.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage afero\n\nimport (\n\t\"errors\"\n\t\"net/http\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype httpDir struct {\n\tbasePath string\n\tfs       HttpFs\n}\n\nfunc (d httpDir) Open(name string) (http.File, error) {\n\tif filepath.Separator != '/' && strings.ContainsRune(name, filepath.Separator) ||\n\t\tstrings.Contains(name, \"\\x00\") {\n\t\treturn nil, errors.New(\"http: invalid character in file path\")\n\t}\n\tdir := string(d.basePath)\n\tif dir == \"\" {\n\t\tdir = \".\"\n\t}\n\n\tf, err := d.fs.Open(filepath.Join(dir, filepath.FromSlash(path.Clean(\"/\"+name))))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn f, nil\n}\n\ntype HttpFs struct {\n\tsource Fs\n}\n\nfunc NewHttpFs(source Fs) *HttpFs {\n\treturn &HttpFs{source: source}\n}\n\nfunc (h HttpFs) Dir(s string) *httpDir {\n\treturn &httpDir{basePath: s, fs: h}\n}\n\nfunc (h HttpFs) Name() string { return \"h HttpFs\" }\n\nfunc (h HttpFs) Create(name string) (File, error) {\n\treturn h.source.Create(name)\n}\n\nfunc (h HttpFs) Chmod(name string, mode os.FileMode) error {\n\treturn h.source.Chmod(name, mode)\n}\n\nfunc (h HttpFs) Chown(name string, uid, gid int) error {\n\treturn h.source.Chown(name, uid, gid)\n}\n\nfunc (h HttpFs) Chtimes(name string, atime time.Time, mtime time.Time) error {\n\treturn h.source.Chtimes(name, atime, mtime)\n}\n\nfunc (h HttpFs) Mkdir(name string, perm os.FileMode) error {\n\treturn h.source.Mkdir(name, perm)\n}\n\nfunc (h HttpFs) MkdirAll(path string, perm os.FileMode) error {\n\treturn h.source.MkdirAll(path, perm)\n}\n\nfunc (h HttpFs) Open(name string) (http.File, error) {\n\tf, err := h.source.Open(name)\n\tif err == nil {\n\t\tif httpfile, ok := f.(http.File); ok {\n\t\t\treturn httpfile, nil\n\t\t}\n\t}\n\treturn nil, err\n}\n\nfunc (h HttpFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\treturn h.source.OpenFile(name, flag, perm)\n}\n\nfunc (h HttpFs) Remove(name string) error {\n\treturn h.source.Remove(name)\n}\n\nfunc (h HttpFs) RemoveAll(path string) error {\n\treturn h.source.RemoveAll(path)\n}\n\nfunc (h HttpFs) Rename(oldname, newname string) error {\n\treturn h.source.Rename(oldname, newname)\n}\n\nfunc (h HttpFs) Stat(name string) (os.FileInfo, error) {\n\treturn h.source.Stat(name)\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/internal/common/adapters.go",
    "content": "// Copyright © 2022 Steve Francia <spf@spf13.com>.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage common\n\nimport \"io/fs\"\n\n// FileInfoDirEntry provides an adapter from os.FileInfo to fs.DirEntry\ntype FileInfoDirEntry struct {\n\tfs.FileInfo\n}\n\nvar _ fs.DirEntry = FileInfoDirEntry{}\n\nfunc (d FileInfoDirEntry) Type() fs.FileMode { return d.FileInfo.Mode().Type() }\n\nfunc (d FileInfoDirEntry) Info() (fs.FileInfo, error) { return d.FileInfo, nil }\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/iofs.go",
    "content": "//go:build go1.16\n// +build go1.16\n\npackage afero\n\nimport (\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path\"\n\t\"sort\"\n\t\"time\"\n\n\t\"github.com/spf13/afero/internal/common\"\n)\n\n// IOFS adopts afero.Fs to stdlib io/fs.FS\ntype IOFS struct {\n\tFs\n}\n\nfunc NewIOFS(fs Fs) IOFS {\n\treturn IOFS{Fs: fs}\n}\n\nvar (\n\t_ fs.FS         = IOFS{}\n\t_ fs.GlobFS     = IOFS{}\n\t_ fs.ReadDirFS  = IOFS{}\n\t_ fs.ReadFileFS = IOFS{}\n\t_ fs.StatFS     = IOFS{}\n\t_ fs.SubFS      = IOFS{}\n)\n\nfunc (iofs IOFS) Open(name string) (fs.File, error) {\n\tconst op = \"open\"\n\n\t// by convention for fs.FS implementations we should perform this check\n\tif !fs.ValidPath(name) {\n\t\treturn nil, iofs.wrapError(op, name, fs.ErrInvalid)\n\t}\n\n\tfile, err := iofs.Fs.Open(name)\n\tif err != nil {\n\t\treturn nil, iofs.wrapError(op, name, err)\n\t}\n\n\t// file should implement fs.ReadDirFile\n\tif _, ok := file.(fs.ReadDirFile); !ok {\n\t\tfile = readDirFile{file}\n\t}\n\n\treturn file, nil\n}\n\nfunc (iofs IOFS) Glob(pattern string) ([]string, error) {\n\tconst op = \"glob\"\n\n\t// afero.Glob does not perform this check but it's required for implementations\n\tif _, err := path.Match(pattern, \"\"); err != nil {\n\t\treturn nil, iofs.wrapError(op, pattern, err)\n\t}\n\n\titems, err := Glob(iofs.Fs, pattern)\n\tif err != nil {\n\t\treturn nil, iofs.wrapError(op, pattern, err)\n\t}\n\n\treturn items, nil\n}\n\nfunc (iofs IOFS) ReadDir(name string) ([]fs.DirEntry, error) {\n\tf, err := iofs.Fs.Open(name)\n\tif err != nil {\n\t\treturn nil, iofs.wrapError(\"readdir\", name, err)\n\t}\n\n\tdefer f.Close()\n\n\tif rdf, ok := f.(fs.ReadDirFile); ok {\n\t\titems, err := rdf.ReadDir(-1)\n\t\tif err != nil {\n\t\t\treturn nil, iofs.wrapError(\"readdir\", name, err)\n\t\t}\n\t\tsort.Slice(items, func(i, j int) bool { return items[i].Name() < items[j].Name() })\n\t\treturn items, nil\n\t}\n\n\titems, err := f.Readdir(-1)\n\tif err != nil {\n\t\treturn nil, iofs.wrapError(\"readdir\", name, err)\n\t}\n\tsort.Sort(byName(items))\n\n\tret := make([]fs.DirEntry, len(items))\n\tfor i := range items {\n\t\tret[i] = common.FileInfoDirEntry{FileInfo: items[i]}\n\t}\n\n\treturn ret, nil\n}\n\nfunc (iofs IOFS) ReadFile(name string) ([]byte, error) {\n\tconst op = \"readfile\"\n\n\tif !fs.ValidPath(name) {\n\t\treturn nil, iofs.wrapError(op, name, fs.ErrInvalid)\n\t}\n\n\tbytes, err := ReadFile(iofs.Fs, name)\n\tif err != nil {\n\t\treturn nil, iofs.wrapError(op, name, err)\n\t}\n\n\treturn bytes, nil\n}\n\nfunc (iofs IOFS) Sub(dir string) (fs.FS, error) { return IOFS{NewBasePathFs(iofs.Fs, dir)}, nil }\n\nfunc (IOFS) wrapError(op, path string, err error) error {\n\tif _, ok := err.(*fs.PathError); ok {\n\t\treturn err // don't need to wrap again\n\t}\n\n\treturn &fs.PathError{\n\t\tOp:   op,\n\t\tPath: path,\n\t\tErr:  err,\n\t}\n}\n\n// readDirFile provides adapter from afero.File to fs.ReadDirFile needed for correct Open\ntype readDirFile struct {\n\tFile\n}\n\nvar _ fs.ReadDirFile = readDirFile{}\n\nfunc (r readDirFile) ReadDir(n int) ([]fs.DirEntry, error) {\n\titems, err := r.Readdir(n)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tret := make([]fs.DirEntry, len(items))\n\tfor i := range items {\n\t\tret[i] = common.FileInfoDirEntry{FileInfo: items[i]}\n\t}\n\n\treturn ret, nil\n}\n\n// FromIOFS adopts io/fs.FS to use it as afero.Fs\n// Note that io/fs.FS is read-only so all mutating methods will return fs.PathError with fs.ErrPermission\n// To store modifications you may use afero.CopyOnWriteFs\ntype FromIOFS struct {\n\tfs.FS\n}\n\nvar _ Fs = FromIOFS{}\n\nfunc (f FromIOFS) Create(name string) (File, error) { return nil, notImplemented(\"create\", name) }\n\nfunc (f FromIOFS) Mkdir(\n\tname string,\n\tperm os.FileMode,\n) error {\n\treturn notImplemented(\"mkdir\", name)\n}\n\nfunc (f FromIOFS) MkdirAll(path string, perm os.FileMode) error {\n\treturn notImplemented(\"mkdirall\", path)\n}\n\nfunc (f FromIOFS) Open(name string) (File, error) {\n\tfile, err := f.FS.Open(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn fromIOFSFile{File: file, name: name}, nil\n}\n\nfunc (f FromIOFS) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\treturn f.Open(name)\n}\n\nfunc (f FromIOFS) Remove(name string) error {\n\treturn notImplemented(\"remove\", name)\n}\n\nfunc (f FromIOFS) RemoveAll(path string) error {\n\treturn notImplemented(\"removeall\", path)\n}\n\nfunc (f FromIOFS) Rename(oldname, newname string) error {\n\treturn notImplemented(\"rename\", oldname)\n}\n\nfunc (f FromIOFS) Stat(name string) (os.FileInfo, error) { return fs.Stat(f.FS, name) }\n\nfunc (f FromIOFS) Name() string { return \"fromiofs\" }\n\nfunc (f FromIOFS) Chmod(name string, mode os.FileMode) error {\n\treturn notImplemented(\"chmod\", name)\n}\n\nfunc (f FromIOFS) Chown(name string, uid, gid int) error {\n\treturn notImplemented(\"chown\", name)\n}\n\nfunc (f FromIOFS) Chtimes(name string, atime time.Time, mtime time.Time) error {\n\treturn notImplemented(\"chtimes\", name)\n}\n\ntype fromIOFSFile struct {\n\tfs.File\n\tname string\n}\n\nfunc (f fromIOFSFile) ReadAt(p []byte, off int64) (n int, err error) {\n\treaderAt, ok := f.File.(io.ReaderAt)\n\tif !ok {\n\t\treturn -1, notImplemented(\"readat\", f.name)\n\t}\n\n\treturn readerAt.ReadAt(p, off)\n}\n\nfunc (f fromIOFSFile) Seek(offset int64, whence int) (int64, error) {\n\tseeker, ok := f.File.(io.Seeker)\n\tif !ok {\n\t\treturn -1, notImplemented(\"seek\", f.name)\n\t}\n\n\treturn seeker.Seek(offset, whence)\n}\n\nfunc (f fromIOFSFile) Write(p []byte) (n int, err error) {\n\treturn -1, notImplemented(\"write\", f.name)\n}\n\nfunc (f fromIOFSFile) WriteAt(p []byte, off int64) (n int, err error) {\n\treturn -1, notImplemented(\"writeat\", f.name)\n}\n\nfunc (f fromIOFSFile) Name() string { return f.name }\n\nfunc (f fromIOFSFile) Readdir(count int) ([]os.FileInfo, error) {\n\trdfile, ok := f.File.(fs.ReadDirFile)\n\tif !ok {\n\t\treturn nil, notImplemented(\"readdir\", f.name)\n\t}\n\n\tentries, err := rdfile.ReadDir(count)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tret := make([]os.FileInfo, len(entries))\n\tfor i := range entries {\n\t\tret[i], err = entries[i].Info()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn ret, nil\n}\n\nfunc (f fromIOFSFile) Readdirnames(n int) ([]string, error) {\n\trdfile, ok := f.File.(fs.ReadDirFile)\n\tif !ok {\n\t\treturn nil, notImplemented(\"readdir\", f.name)\n\t}\n\n\tentries, err := rdfile.ReadDir(n)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tret := make([]string, len(entries))\n\tfor i := range entries {\n\t\tret[i] = entries[i].Name()\n\t}\n\n\treturn ret, nil\n}\n\nfunc (f fromIOFSFile) Sync() error { return nil }\n\nfunc (f fromIOFSFile) Truncate(size int64) error {\n\treturn notImplemented(\"truncate\", f.name)\n}\n\nfunc (f fromIOFSFile) WriteString(s string) (ret int, err error) {\n\treturn -1, notImplemented(\"writestring\", f.name)\n}\n\nfunc notImplemented(op, path string) error {\n\treturn &fs.PathError{Op: op, Path: path, Err: fs.ErrPermission}\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/ioutil.go",
    "content": "// Copyright ©2015 The Go Authors\n// Copyright ©2015 Steve Francia <spf@spf13.com>\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage afero\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\n// byName implements sort.Interface.\ntype byName []os.FileInfo\n\nfunc (f byName) Len() int           { return len(f) }\nfunc (f byName) Less(i, j int) bool { return f[i].Name() < f[j].Name() }\nfunc (f byName) Swap(i, j int)      { f[i], f[j] = f[j], f[i] }\n\n// ReadDir reads the directory named by dirname and returns\n// a list of sorted directory entries.\nfunc (a Afero) ReadDir(dirname string) ([]os.FileInfo, error) {\n\treturn ReadDir(a.Fs, dirname)\n}\n\nfunc ReadDir(fs Fs, dirname string) ([]os.FileInfo, error) {\n\tf, err := fs.Open(dirname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tlist, err := f.Readdir(-1)\n\tf.Close()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsort.Sort(byName(list))\n\treturn list, nil\n}\n\n// ReadFile reads the file named by filename and returns the contents.\n// A successful call returns err == nil, not err == EOF. Because ReadFile\n// reads the whole file, it does not treat an EOF from Read as an error\n// to be reported.\nfunc (a Afero) ReadFile(filename string) ([]byte, error) {\n\treturn ReadFile(a.Fs, filename)\n}\n\nfunc ReadFile(fs Fs, filename string) ([]byte, error) {\n\tf, err := fs.Open(filename)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\t// It's a good but not certain bet that FileInfo will tell us exactly how much to\n\t// read, so let's try it but be prepared for the answer to be wrong.\n\tvar n int64\n\n\tif fi, err := f.Stat(); err == nil {\n\t\t// Don't preallocate a huge buffer, just in case.\n\t\tif size := fi.Size(); size < 1e9 {\n\t\t\tn = size\n\t\t}\n\t}\n\t// As initial capacity for readAll, use n + a little extra in case Size is zero,\n\t// and to avoid another allocation after Read has filled the buffer.  The readAll\n\t// call will read into its allocated internal buffer cheaply.  If the size was\n\t// wrong, we'll either waste some space off the end or reallocate as needed, but\n\t// in the overwhelmingly common case we'll get it just right.\n\treturn readAll(f, n+bytes.MinRead)\n}\n\n// readAll reads from r until an error or EOF and returns the data it read\n// from the internal buffer allocated with a specified capacity.\nfunc readAll(r io.Reader, capacity int64) (b []byte, err error) {\n\tbuf := bytes.NewBuffer(make([]byte, 0, capacity))\n\t// If the buffer overflows, we will get bytes.ErrTooLarge.\n\t// Return that as an error. Any other panic remains.\n\tdefer func() {\n\t\te := recover()\n\t\tif e == nil {\n\t\t\treturn\n\t\t}\n\t\tif panicErr, ok := e.(error); ok && panicErr == bytes.ErrTooLarge {\n\t\t\terr = panicErr\n\t\t} else {\n\t\t\tpanic(e)\n\t\t}\n\t}()\n\t_, err = buf.ReadFrom(r)\n\treturn buf.Bytes(), err\n}\n\n// ReadAll reads from r until an error or EOF and returns the data it read.\n// A successful call returns err == nil, not err == EOF. Because ReadAll is\n// defined to read from src until EOF, it does not treat an EOF from Read\n// as an error to be reported.\nfunc ReadAll(r io.Reader) ([]byte, error) {\n\treturn readAll(r, bytes.MinRead)\n}\n\n// WriteFile writes data to a file named by filename.\n// If the file does not exist, WriteFile creates it with permissions perm;\n// otherwise WriteFile truncates it before writing.\nfunc (a Afero) WriteFile(filename string, data []byte, perm os.FileMode) error {\n\treturn WriteFile(a.Fs, filename, data, perm)\n}\n\nfunc WriteFile(fs Fs, filename string, data []byte, perm os.FileMode) error {\n\tf, err := fs.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, perm)\n\tif err != nil {\n\t\treturn err\n\t}\n\tn, err := f.Write(data)\n\tif err == nil && n < len(data) {\n\t\terr = io.ErrShortWrite\n\t}\n\tif err1 := f.Close(); err == nil {\n\t\terr = err1\n\t}\n\treturn err\n}\n\n// Random number state.\n// We generate random temporary file names so that there's a good\n// chance the file doesn't exist yet - keeps the number of tries in\n// TempFile to a minimum.\nvar (\n\trandNum uint32\n\trandmu  sync.Mutex\n)\n\nfunc reseed() uint32 {\n\treturn uint32(time.Now().UnixNano() + int64(os.Getpid()))\n}\n\nfunc nextRandom() string {\n\trandmu.Lock()\n\tr := randNum\n\tif r == 0 {\n\t\tr = reseed()\n\t}\n\tr = r*1664525 + 1013904223 // constants from Numerical Recipes\n\trandNum = r\n\trandmu.Unlock()\n\treturn strconv.Itoa(int(1e9 + r%1e9))[1:]\n}\n\n// TempFile creates a new temporary file in the directory dir,\n// opens the file for reading and writing, and returns the resulting *os.File.\n// The filename is generated by taking pattern and adding a random\n// string to the end. If pattern includes a \"*\", the random string\n// replaces the last \"*\".\n// If dir is the empty string, TempFile uses the default directory\n// for temporary files (see os.TempDir).\n// Multiple programs calling TempFile simultaneously\n// will not choose the same file. The caller can use f.Name()\n// to find the pathname of the file. It is the caller's responsibility\n// to remove the file when no longer needed.\nfunc (a Afero) TempFile(dir, pattern string) (f File, err error) {\n\treturn TempFile(a.Fs, dir, pattern)\n}\n\nfunc TempFile(fs Fs, dir, pattern string) (f File, err error) {\n\tif dir == \"\" {\n\t\tdir = os.TempDir()\n\t}\n\n\tvar prefix, suffix string\n\tif pos := strings.LastIndex(pattern, \"*\"); pos != -1 {\n\t\tprefix, suffix = pattern[:pos], pattern[pos+1:]\n\t} else {\n\t\tprefix = pattern\n\t}\n\n\tnconflict := 0\n\tfor i := 0; i < 10000; i++ {\n\t\tname := filepath.Join(dir, prefix+nextRandom()+suffix)\n\t\tf, err = fs.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0o600)\n\t\tif os.IsExist(err) {\n\t\t\tif nconflict++; nconflict > 10 {\n\t\t\t\trandmu.Lock()\n\t\t\t\trandNum = reseed()\n\t\t\t\trandmu.Unlock()\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tbreak\n\t}\n\treturn\n}\n\n// TempDir creates a new temporary directory in the directory dir\n// with a name beginning with prefix and returns the path of the\n// new directory.  If dir is the empty string, TempDir uses the\n// default directory for temporary files (see os.TempDir).\n// Multiple programs calling TempDir simultaneously\n// will not choose the same directory.  It is the caller's responsibility\n// to remove the directory when no longer needed.\nfunc (a Afero) TempDir(dir, prefix string) (name string, err error) {\n\treturn TempDir(a.Fs, dir, prefix)\n}\n\nfunc TempDir(fs Fs, dir, prefix string) (name string, err error) {\n\tif dir == \"\" {\n\t\tdir = os.TempDir()\n\t}\n\n\tnconflict := 0\n\tfor i := 0; i < 10000; i++ {\n\t\ttry := filepath.Join(dir, prefix+nextRandom())\n\t\terr = fs.Mkdir(try, 0o700)\n\t\tif os.IsExist(err) {\n\t\t\tif nconflict++; nconflict > 10 {\n\t\t\t\trandmu.Lock()\n\t\t\t\trandNum = reseed()\n\t\t\t\trandmu.Unlock()\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif err == nil {\n\t\t\tname = try\n\t\t}\n\t\tbreak\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/lstater.go",
    "content": "// Copyright © 2018 Steve Francia <spf@spf13.com>.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage afero\n\nimport (\n\t\"os\"\n)\n\n// Lstater is an optional interface in Afero. It is only implemented by the\n// filesystems saying so.\n// It will call Lstat if the filesystem itself is, or it delegates to, the os filesystem.\n// Else it will call Stat.\n// In addition to the FileInfo, it will return a boolean telling whether Lstat was called or not.\ntype Lstater interface {\n\tLstatIfPossible(name string) (os.FileInfo, bool, error)\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/match.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\n// Copyright 2009 The Go Authors. All rights reserved.\n\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage afero\n\nimport (\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// Glob returns the names of all files matching pattern or nil\n// if there is no matching file. The syntax of patterns is the same\n// as in Match. The pattern may describe hierarchical names such as\n// /usr/*/bin/ed (assuming the Separator is '/').\n//\n// Glob ignores file system errors such as I/O errors reading directories.\n// The only possible returned error is ErrBadPattern, when pattern\n// is malformed.\n//\n// This was adapted from (http://golang.org/pkg/path/filepath) and uses several\n// built-ins from that package.\nfunc Glob(fs Fs, pattern string) (matches []string, err error) {\n\tif !hasMeta(pattern) {\n\t\t// Lstat not supported by a ll filesystems.\n\t\tif _, err = lstatIfPossible(fs, pattern); err != nil {\n\t\t\treturn nil, nil\n\t\t}\n\t\treturn []string{pattern}, nil\n\t}\n\n\tdir, file := filepath.Split(pattern)\n\tswitch dir {\n\tcase \"\":\n\t\tdir = \".\"\n\tcase string(filepath.Separator):\n\t// nothing\n\tdefault:\n\t\tdir = dir[0 : len(dir)-1] // chop off trailing separator\n\t}\n\n\tif !hasMeta(dir) {\n\t\treturn glob(fs, dir, file, nil)\n\t}\n\n\tvar m []string\n\tm, err = Glob(fs, dir)\n\tif err != nil {\n\t\treturn\n\t}\n\tfor _, d := range m {\n\t\tmatches, err = glob(fs, d, file, matches)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn\n}\n\n// glob searches for files matching pattern in the directory dir\n// and appends them to matches. If the directory cannot be\n// opened, it returns the existing matches. New matches are\n// added in lexicographical order.\nfunc glob(fs Fs, dir, pattern string, matches []string) (m []string, e error) {\n\tm = matches\n\tfi, err := fs.Stat(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\tif !fi.IsDir() {\n\t\treturn\n\t}\n\td, err := fs.Open(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer d.Close()\n\n\tnames, _ := d.Readdirnames(-1)\n\tsort.Strings(names)\n\n\tfor _, n := range names {\n\t\tmatched, err := filepath.Match(pattern, n)\n\t\tif err != nil {\n\t\t\treturn m, err\n\t\t}\n\t\tif matched {\n\t\t\tm = append(m, filepath.Join(dir, n))\n\t\t}\n\t}\n\treturn\n}\n\n// hasMeta reports whether path contains any of the magic characters\n// recognized by Match.\nfunc hasMeta(path string) bool {\n\t// TODO(niemeyer): Should other magic characters be added here?\n\treturn strings.ContainsAny(path, \"*?[\")\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/mem/dir.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mem\n\ntype Dir interface {\n\tLen() int\n\tNames() []string\n\tFiles() []*FileData\n\tAdd(*FileData)\n\tRemove(*FileData)\n}\n\nfunc RemoveFromMemDir(dir *FileData, f *FileData) {\n\tdir.memDir.Remove(f)\n}\n\nfunc AddToMemDir(dir *FileData, f *FileData) {\n\tdir.memDir.Add(f)\n}\n\nfunc InitializeDir(d *FileData) {\n\tif d.memDir == nil {\n\t\td.dir = true\n\t\td.memDir = &DirMap{}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/mem/dirmap.go",
    "content": "// Copyright © 2015 Steve Francia <spf@spf13.com>.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mem\n\nimport \"sort\"\n\ntype DirMap map[string]*FileData\n\nfunc (m DirMap) Len() int           { return len(m) }\nfunc (m DirMap) Add(f *FileData)    { m[f.name] = f }\nfunc (m DirMap) Remove(f *FileData) { delete(m, f.name) }\nfunc (m DirMap) Files() (files []*FileData) {\n\tfor _, f := range m {\n\t\tfiles = append(files, f)\n\t}\n\tsort.Sort(filesSorter(files))\n\treturn files\n}\n\n// implement sort.Interface for []*FileData\ntype filesSorter []*FileData\n\nfunc (s filesSorter) Len() int           { return len(s) }\nfunc (s filesSorter) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }\nfunc (s filesSorter) Less(i, j int) bool { return s[i].name < s[j].name }\n\nfunc (m DirMap) Names() (names []string) {\n\tfor x := range m {\n\t\tnames = append(names, x)\n\t}\n\treturn names\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/mem/file.go",
    "content": "// Copyright © 2015 Steve Francia <spf@spf13.com>.\n// Copyright 2013 tsuru authors. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mem\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"github.com/spf13/afero/internal/common\"\n)\n\nconst FilePathSeparator = string(filepath.Separator)\n\nvar _ fs.ReadDirFile = &File{}\n\ntype File struct {\n\t// atomic requires 64-bit alignment for struct field access\n\tat           int64\n\treadDirCount int64\n\tclosed       bool\n\treadOnly     bool\n\tfileData     *FileData\n}\n\nfunc NewFileHandle(data *FileData) *File {\n\treturn &File{fileData: data}\n}\n\nfunc NewReadOnlyFileHandle(data *FileData) *File {\n\treturn &File{fileData: data, readOnly: true}\n}\n\nfunc (f File) Data() *FileData {\n\treturn f.fileData\n}\n\ntype FileData struct {\n\tsync.Mutex\n\tname    string\n\tdata    []byte\n\tmemDir  Dir\n\tdir     bool\n\tmode    os.FileMode\n\tmodtime time.Time\n\tuid     int\n\tgid     int\n}\n\nfunc (d *FileData) Name() string {\n\td.Lock()\n\tdefer d.Unlock()\n\treturn d.name\n}\n\nfunc CreateFile(name string) *FileData {\n\treturn &FileData{name: name, mode: os.ModeTemporary, modtime: time.Now()}\n}\n\nfunc CreateDir(name string) *FileData {\n\treturn &FileData{name: name, memDir: &DirMap{}, dir: true, modtime: time.Now()}\n}\n\nfunc ChangeFileName(f *FileData, newname string) {\n\tf.Lock()\n\tf.name = newname\n\tf.Unlock()\n}\n\nfunc SetMode(f *FileData, mode os.FileMode) {\n\tf.Lock()\n\tf.mode = mode\n\tf.Unlock()\n}\n\nfunc SetModTime(f *FileData, mtime time.Time) {\n\tf.Lock()\n\tsetModTime(f, mtime)\n\tf.Unlock()\n}\n\nfunc setModTime(f *FileData, mtime time.Time) {\n\tf.modtime = mtime\n}\n\nfunc SetUID(f *FileData, uid int) {\n\tf.Lock()\n\tf.uid = uid\n\tf.Unlock()\n}\n\nfunc SetGID(f *FileData, gid int) {\n\tf.Lock()\n\tf.gid = gid\n\tf.Unlock()\n}\n\nfunc GetFileInfo(f *FileData) *FileInfo {\n\treturn &FileInfo{f}\n}\n\nfunc (f *File) Open() error {\n\tatomic.StoreInt64(&f.at, 0)\n\tatomic.StoreInt64(&f.readDirCount, 0)\n\tf.fileData.Lock()\n\tf.closed = false\n\tf.fileData.Unlock()\n\treturn nil\n}\n\nfunc (f *File) Close() error {\n\tf.fileData.Lock()\n\tf.closed = true\n\tif !f.readOnly {\n\t\tsetModTime(f.fileData, time.Now())\n\t}\n\tf.fileData.Unlock()\n\treturn nil\n}\n\nfunc (f *File) Name() string {\n\treturn f.fileData.Name()\n}\n\nfunc (f *File) Stat() (os.FileInfo, error) {\n\treturn &FileInfo{f.fileData}, nil\n}\n\nfunc (f *File) Sync() error {\n\treturn nil\n}\n\nfunc (f *File) Readdir(count int) (res []os.FileInfo, err error) {\n\tif !f.fileData.dir {\n\t\treturn nil, &os.PathError{\n\t\t\tOp:   \"readdir\",\n\t\t\tPath: f.fileData.name,\n\t\t\tErr:  errors.New(\"not a dir\"),\n\t\t}\n\t}\n\tvar outLength int64\n\n\tf.fileData.Lock()\n\tfiles := f.fileData.memDir.Files()[f.readDirCount:]\n\tif count > 0 {\n\t\tif len(files) < count {\n\t\t\toutLength = int64(len(files))\n\t\t} else {\n\t\t\toutLength = int64(count)\n\t\t}\n\t\tif len(files) == 0 {\n\t\t\terr = io.EOF\n\t\t}\n\t} else {\n\t\toutLength = int64(len(files))\n\t}\n\tf.readDirCount += outLength\n\tf.fileData.Unlock()\n\n\tres = make([]os.FileInfo, outLength)\n\tfor i := range res {\n\t\tres[i] = &FileInfo{files[i]}\n\t}\n\n\treturn res, err\n}\n\nfunc (f *File) Readdirnames(n int) (names []string, err error) {\n\tfi, err := f.Readdir(n)\n\tnames = make([]string, len(fi))\n\tfor i, f := range fi {\n\t\t_, names[i] = filepath.Split(f.Name())\n\t}\n\treturn names, err\n}\n\n// Implements fs.ReadDirFile\nfunc (f *File) ReadDir(n int) ([]fs.DirEntry, error) {\n\tfi, err := f.Readdir(n)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdi := make([]fs.DirEntry, len(fi))\n\tfor i, f := range fi {\n\t\tdi[i] = common.FileInfoDirEntry{FileInfo: f}\n\t}\n\treturn di, nil\n}\n\nfunc (f *File) Read(b []byte) (n int, err error) {\n\tf.fileData.Lock()\n\tdefer f.fileData.Unlock()\n\tif f.closed {\n\t\treturn 0, ErrFileClosed\n\t}\n\tif len(b) > 0 && int(f.at) == len(f.fileData.data) {\n\t\treturn 0, io.EOF\n\t}\n\tif int(f.at) > len(f.fileData.data) {\n\t\treturn 0, io.ErrUnexpectedEOF\n\t}\n\tif len(f.fileData.data)-int(f.at) >= len(b) {\n\t\tn = len(b)\n\t} else {\n\t\tn = len(f.fileData.data) - int(f.at)\n\t}\n\tcopy(b, f.fileData.data[f.at:f.at+int64(n)])\n\tatomic.AddInt64(&f.at, int64(n))\n\treturn\n}\n\nfunc (f *File) ReadAt(b []byte, off int64) (n int, err error) {\n\tprev := atomic.LoadInt64(&f.at)\n\tatomic.StoreInt64(&f.at, off)\n\tn, err = f.Read(b)\n\tatomic.StoreInt64(&f.at, prev)\n\treturn\n}\n\nfunc (f *File) Truncate(size int64) error {\n\tif f.closed {\n\t\treturn ErrFileClosed\n\t}\n\tif f.readOnly {\n\t\treturn &os.PathError{\n\t\t\tOp:   \"truncate\",\n\t\t\tPath: f.fileData.name,\n\t\t\tErr:  errors.New(\"file handle is read only\"),\n\t\t}\n\t}\n\tif size < 0 {\n\t\treturn ErrOutOfRange\n\t}\n\tf.fileData.Lock()\n\tdefer f.fileData.Unlock()\n\tif size > int64(len(f.fileData.data)) {\n\t\tdiff := size - int64(len(f.fileData.data))\n\t\tf.fileData.data = append(f.fileData.data, bytes.Repeat([]byte{0o0}, int(diff))...)\n\t} else {\n\t\tf.fileData.data = f.fileData.data[0:size]\n\t}\n\tsetModTime(f.fileData, time.Now())\n\treturn nil\n}\n\nfunc (f *File) Seek(offset int64, whence int) (int64, error) {\n\tif f.closed {\n\t\treturn 0, ErrFileClosed\n\t}\n\tswitch whence {\n\tcase io.SeekStart:\n\t\tatomic.StoreInt64(&f.at, offset)\n\tcase io.SeekCurrent:\n\t\tatomic.AddInt64(&f.at, offset)\n\tcase io.SeekEnd:\n\t\tatomic.StoreInt64(&f.at, int64(len(f.fileData.data))+offset)\n\t}\n\treturn f.at, nil\n}\n\nfunc (f *File) Write(b []byte) (n int, err error) {\n\tif f.closed {\n\t\treturn 0, ErrFileClosed\n\t}\n\tif f.readOnly {\n\t\treturn 0, &os.PathError{\n\t\t\tOp:   \"write\",\n\t\t\tPath: f.fileData.name,\n\t\t\tErr:  errors.New(\"file handle is read only\"),\n\t\t}\n\t}\n\tn = len(b)\n\tcur := atomic.LoadInt64(&f.at)\n\tf.fileData.Lock()\n\tdefer f.fileData.Unlock()\n\tdiff := cur - int64(len(f.fileData.data))\n\tvar tail []byte\n\tif n+int(cur) < len(f.fileData.data) {\n\t\ttail = f.fileData.data[n+int(cur):]\n\t}\n\tif diff > 0 {\n\t\tf.fileData.data = append(\n\t\t\tf.fileData.data,\n\t\t\tappend(bytes.Repeat([]byte{0o0}, int(diff)), b...)...)\n\t\tf.fileData.data = append(f.fileData.data, tail...)\n\t} else {\n\t\tf.fileData.data = append(f.fileData.data[:cur], b...)\n\t\tf.fileData.data = append(f.fileData.data, tail...)\n\t}\n\tsetModTime(f.fileData, time.Now())\n\n\tatomic.AddInt64(&f.at, int64(n))\n\treturn\n}\n\nfunc (f *File) WriteAt(b []byte, off int64) (n int, err error) {\n\tatomic.StoreInt64(&f.at, off)\n\treturn f.Write(b)\n}\n\nfunc (f *File) WriteString(s string) (ret int, err error) {\n\treturn f.Write([]byte(s))\n}\n\nfunc (f *File) Info() *FileInfo {\n\treturn &FileInfo{f.fileData}\n}\n\ntype FileInfo struct {\n\t*FileData\n}\n\n// Implements os.FileInfo\nfunc (s *FileInfo) Name() string {\n\ts.Lock()\n\t_, name := filepath.Split(s.name)\n\ts.Unlock()\n\treturn name\n}\n\nfunc (s *FileInfo) Mode() os.FileMode {\n\ts.Lock()\n\tdefer s.Unlock()\n\treturn s.mode\n}\n\nfunc (s *FileInfo) ModTime() time.Time {\n\ts.Lock()\n\tdefer s.Unlock()\n\treturn s.modtime\n}\n\nfunc (s *FileInfo) IsDir() bool {\n\ts.Lock()\n\tdefer s.Unlock()\n\treturn s.dir\n}\nfunc (s *FileInfo) Sys() interface{} { return nil }\nfunc (s *FileInfo) Size() int64 {\n\tif s.IsDir() {\n\t\treturn int64(42)\n\t}\n\ts.Lock()\n\tdefer s.Unlock()\n\treturn int64(len(s.data))\n}\n\nvar (\n\tErrFileClosed        = errors.New(\"File is closed\")\n\tErrOutOfRange        = errors.New(\"out of range\")\n\tErrTooLarge          = errors.New(\"too large\")\n\tErrFileNotFound      = os.ErrNotExist\n\tErrFileExists        = os.ErrExist\n\tErrDestinationExists = os.ErrExist\n)\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/memmap.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage afero\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/spf13/afero/mem\"\n)\n\nconst chmodBits = os.ModePerm | os.ModeSetuid | os.ModeSetgid | os.ModeSticky // Only a subset of bits are allowed to be changed. Documented under os.Chmod()\n\ntype MemMapFs struct {\n\tmu   sync.RWMutex\n\tdata map[string]*mem.FileData\n\tinit sync.Once\n}\n\nfunc NewMemMapFs() Fs {\n\treturn &MemMapFs{}\n}\n\nfunc (m *MemMapFs) getData() map[string]*mem.FileData {\n\tm.init.Do(func() {\n\t\tm.data = make(map[string]*mem.FileData)\n\t\t// Root should always exist, right?\n\t\t// TODO: what about windows?\n\t\troot := mem.CreateDir(FilePathSeparator)\n\t\tmem.SetMode(root, os.ModeDir|0o755)\n\t\tm.data[FilePathSeparator] = root\n\t})\n\treturn m.data\n}\n\nfunc (*MemMapFs) Name() string { return \"MemMapFS\" }\n\nfunc (m *MemMapFs) Create(name string) (File, error) {\n\tname = normalizePath(name)\n\tm.mu.Lock()\n\tfile := mem.CreateFile(name)\n\tm.getData()[name] = file\n\tm.registerWithParent(file, 0)\n\tm.mu.Unlock()\n\treturn mem.NewFileHandle(file), nil\n}\n\nfunc (m *MemMapFs) unRegisterWithParent(fileName string) error {\n\tf, err := m.lockfreeOpen(fileName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tparent := m.findParent(f)\n\tif parent == nil {\n\t\tlog.Panic(\"parent of \", f.Name(), \" is nil\")\n\t}\n\n\tparent.Lock()\n\tmem.RemoveFromMemDir(parent, f)\n\tparent.Unlock()\n\treturn nil\n}\n\nfunc (m *MemMapFs) findParent(f *mem.FileData) *mem.FileData {\n\tpdir, _ := filepath.Split(f.Name())\n\tpdir = filepath.Clean(pdir)\n\tpfile, err := m.lockfreeOpen(pdir)\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn pfile\n}\n\nfunc (m *MemMapFs) findDescendants(name string) []*mem.FileData {\n\tfData := m.getData()\n\tdescendants := make([]*mem.FileData, 0, len(fData))\n\tfor p, dFile := range fData {\n\t\tif strings.HasPrefix(p, name+FilePathSeparator) {\n\t\t\tdescendants = append(descendants, dFile)\n\t\t}\n\t}\n\n\tsort.Slice(descendants, func(i, j int) bool {\n\t\tcur := len(strings.Split(descendants[i].Name(), FilePathSeparator))\n\t\tnext := len(strings.Split(descendants[j].Name(), FilePathSeparator))\n\t\treturn cur < next\n\t})\n\n\treturn descendants\n}\n\nfunc (m *MemMapFs) registerWithParent(f *mem.FileData, perm os.FileMode) {\n\tif f == nil {\n\t\treturn\n\t}\n\tparent := m.findParent(f)\n\tif parent == nil {\n\t\tpdir := filepath.Dir(filepath.Clean(f.Name()))\n\t\terr := m.lockfreeMkdir(pdir, perm)\n\t\tif err != nil {\n\t\t\t// log.Println(\"Mkdir error:\", err)\n\t\t\treturn\n\t\t}\n\t\tparent, err = m.lockfreeOpen(pdir)\n\t\tif err != nil {\n\t\t\t// log.Println(\"Open after Mkdir error:\", err)\n\t\t\treturn\n\t\t}\n\t}\n\n\tparent.Lock()\n\tmem.InitializeDir(parent)\n\tmem.AddToMemDir(parent, f)\n\tparent.Unlock()\n}\n\nfunc (m *MemMapFs) lockfreeMkdir(name string, perm os.FileMode) error {\n\tname = normalizePath(name)\n\tx, ok := m.getData()[name]\n\tif ok {\n\t\t// Only return ErrFileExists if it's a file, not a directory.\n\t\ti := mem.FileInfo{FileData: x}\n\t\tif !i.IsDir() {\n\t\t\treturn ErrFileExists\n\t\t}\n\t} else {\n\t\titem := mem.CreateDir(name)\n\t\tmem.SetMode(item, os.ModeDir|perm)\n\t\tm.getData()[name] = item\n\t\tm.registerWithParent(item, perm)\n\t}\n\treturn nil\n}\n\nfunc (m *MemMapFs) Mkdir(name string, perm os.FileMode) error {\n\tperm &= chmodBits\n\tname = normalizePath(name)\n\n\tm.mu.RLock()\n\t_, ok := m.getData()[name]\n\tm.mu.RUnlock()\n\tif ok {\n\t\treturn &os.PathError{Op: \"mkdir\", Path: name, Err: ErrFileExists}\n\t}\n\n\tm.mu.Lock()\n\t// Dobule check that it doesn't exist.\n\tif _, ok := m.getData()[name]; ok {\n\t\tm.mu.Unlock()\n\t\treturn &os.PathError{Op: \"mkdir\", Path: name, Err: ErrFileExists}\n\t}\n\titem := mem.CreateDir(name)\n\tmem.SetMode(item, os.ModeDir|perm)\n\tm.getData()[name] = item\n\tm.registerWithParent(item, perm)\n\tm.mu.Unlock()\n\n\treturn m.setFileMode(name, perm|os.ModeDir)\n}\n\nfunc (m *MemMapFs) MkdirAll(path string, perm os.FileMode) error {\n\terr := m.Mkdir(path, perm)\n\tif err != nil {\n\t\tif err.(*os.PathError).Err == ErrFileExists {\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// Handle some relative paths\nfunc normalizePath(path string) string {\n\tpath = filepath.Clean(path)\n\n\tswitch path {\n\tcase \".\":\n\t\treturn FilePathSeparator\n\tcase \"..\":\n\t\treturn FilePathSeparator\n\tdefault:\n\t\treturn path\n\t}\n}\n\nfunc (m *MemMapFs) Open(name string) (File, error) {\n\tf, err := m.open(name)\n\tif f != nil {\n\t\treturn mem.NewReadOnlyFileHandle(f), err\n\t}\n\treturn nil, err\n}\n\nfunc (m *MemMapFs) openWrite(name string) (File, error) {\n\tf, err := m.open(name)\n\tif f != nil {\n\t\treturn mem.NewFileHandle(f), err\n\t}\n\treturn nil, err\n}\n\nfunc (m *MemMapFs) open(name string) (*mem.FileData, error) {\n\tname = normalizePath(name)\n\n\tm.mu.RLock()\n\tf, ok := m.getData()[name]\n\tm.mu.RUnlock()\n\tif !ok {\n\t\treturn nil, &os.PathError{Op: \"open\", Path: name, Err: ErrFileNotFound}\n\t}\n\treturn f, nil\n}\n\nfunc (m *MemMapFs) lockfreeOpen(name string) (*mem.FileData, error) {\n\tname = normalizePath(name)\n\tf, ok := m.getData()[name]\n\tif ok {\n\t\treturn f, nil\n\t} else {\n\t\treturn nil, ErrFileNotFound\n\t}\n}\n\nfunc (m *MemMapFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\tperm &= chmodBits\n\tchmod := false\n\tfile, err := m.openWrite(name)\n\tif err == nil && (flag&os.O_EXCL > 0) {\n\t\treturn nil, &os.PathError{Op: \"open\", Path: name, Err: ErrFileExists}\n\t}\n\tif os.IsNotExist(err) && (flag&os.O_CREATE > 0) {\n\t\tfile, err = m.Create(name)\n\t\tchmod = true\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif flag == os.O_RDONLY {\n\t\tfile = mem.NewReadOnlyFileHandle(file.(*mem.File).Data())\n\t}\n\tif flag&os.O_APPEND > 0 {\n\t\t_, err = file.Seek(0, io.SeekEnd)\n\t\tif err != nil {\n\t\t\tfile.Close()\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif flag&os.O_TRUNC > 0 && flag&(os.O_RDWR|os.O_WRONLY) > 0 {\n\t\terr = file.Truncate(0)\n\t\tif err != nil {\n\t\t\tfile.Close()\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif chmod {\n\t\treturn file, m.setFileMode(name, perm)\n\t}\n\treturn file, nil\n}\n\nfunc (m *MemMapFs) Remove(name string) error {\n\tname = normalizePath(name)\n\n\tm.mu.Lock()\n\tdefer m.mu.Unlock()\n\n\tif _, ok := m.getData()[name]; ok {\n\t\terr := m.unRegisterWithParent(name)\n\t\tif err != nil {\n\t\t\treturn &os.PathError{Op: \"remove\", Path: name, Err: err}\n\t\t}\n\t\tdelete(m.getData(), name)\n\t} else {\n\t\treturn &os.PathError{Op: \"remove\", Path: name, Err: os.ErrNotExist}\n\t}\n\treturn nil\n}\n\nfunc (m *MemMapFs) RemoveAll(path string) error {\n\tpath = normalizePath(path)\n\tm.mu.Lock()\n\tm.unRegisterWithParent(path)\n\tm.mu.Unlock()\n\n\tm.mu.RLock()\n\tdefer m.mu.RUnlock()\n\n\tfor p := range m.getData() {\n\t\tif p == path || strings.HasPrefix(p, path+FilePathSeparator) {\n\t\t\tm.mu.RUnlock()\n\t\t\tm.mu.Lock()\n\t\t\tdelete(m.getData(), p)\n\t\t\tm.mu.Unlock()\n\t\t\tm.mu.RLock()\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (m *MemMapFs) Rename(oldname, newname string) error {\n\toldname = normalizePath(oldname)\n\tnewname = normalizePath(newname)\n\n\tif oldname == newname {\n\t\treturn nil\n\t}\n\n\tm.mu.RLock()\n\tdefer m.mu.RUnlock()\n\tif _, ok := m.getData()[oldname]; ok {\n\t\tm.mu.RUnlock()\n\t\tm.mu.Lock()\n\t\terr := m.unRegisterWithParent(oldname)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tfileData := m.getData()[oldname]\n\t\tmem.ChangeFileName(fileData, newname)\n\t\tm.getData()[newname] = fileData\n\n\t\terr = m.renameDescendants(oldname, newname)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tdelete(m.getData(), oldname)\n\n\t\tm.registerWithParent(fileData, 0)\n\t\tm.mu.Unlock()\n\t\tm.mu.RLock()\n\t} else {\n\t\treturn &os.PathError{Op: \"rename\", Path: oldname, Err: ErrFileNotFound}\n\t}\n\treturn nil\n}\n\nfunc (m *MemMapFs) renameDescendants(oldname, newname string) error {\n\tdescendants := m.findDescendants(oldname)\n\tremoves := make([]string, 0, len(descendants))\n\tfor _, desc := range descendants {\n\t\tdescNewName := strings.Replace(desc.Name(), oldname, newname, 1)\n\t\terr := m.unRegisterWithParent(desc.Name())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tremoves = append(removes, desc.Name())\n\t\tmem.ChangeFileName(desc, descNewName)\n\t\tm.getData()[descNewName] = desc\n\n\t\tm.registerWithParent(desc, 0)\n\t}\n\tfor _, r := range removes {\n\t\tdelete(m.getData(), r)\n\t}\n\n\treturn nil\n}\n\nfunc (m *MemMapFs) LstatIfPossible(name string) (os.FileInfo, bool, error) {\n\tfileInfo, err := m.Stat(name)\n\treturn fileInfo, false, err\n}\n\nfunc (m *MemMapFs) Stat(name string) (os.FileInfo, error) {\n\tf, err := m.Open(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfi := mem.GetFileInfo(f.(*mem.File).Data())\n\treturn fi, nil\n}\n\nfunc (m *MemMapFs) Chmod(name string, mode os.FileMode) error {\n\tmode &= chmodBits\n\n\tm.mu.RLock()\n\tf, ok := m.getData()[name]\n\tm.mu.RUnlock()\n\tif !ok {\n\t\treturn &os.PathError{Op: \"chmod\", Path: name, Err: ErrFileNotFound}\n\t}\n\tprevOtherBits := mem.GetFileInfo(f).Mode() & ^chmodBits\n\n\tmode = prevOtherBits | mode\n\treturn m.setFileMode(name, mode)\n}\n\nfunc (m *MemMapFs) setFileMode(name string, mode os.FileMode) error {\n\tname = normalizePath(name)\n\n\tm.mu.RLock()\n\tf, ok := m.getData()[name]\n\tm.mu.RUnlock()\n\tif !ok {\n\t\treturn &os.PathError{Op: \"chmod\", Path: name, Err: ErrFileNotFound}\n\t}\n\n\tm.mu.Lock()\n\tmem.SetMode(f, mode)\n\tm.mu.Unlock()\n\n\treturn nil\n}\n\nfunc (m *MemMapFs) Chown(name string, uid, gid int) error {\n\tname = normalizePath(name)\n\n\tm.mu.RLock()\n\tf, ok := m.getData()[name]\n\tm.mu.RUnlock()\n\tif !ok {\n\t\treturn &os.PathError{Op: \"chown\", Path: name, Err: ErrFileNotFound}\n\t}\n\n\tmem.SetUID(f, uid)\n\tmem.SetGID(f, gid)\n\n\treturn nil\n}\n\nfunc (m *MemMapFs) Chtimes(name string, atime time.Time, mtime time.Time) error {\n\tname = normalizePath(name)\n\n\tm.mu.RLock()\n\tf, ok := m.getData()[name]\n\tm.mu.RUnlock()\n\tif !ok {\n\t\treturn &os.PathError{Op: \"chtimes\", Path: name, Err: ErrFileNotFound}\n\t}\n\n\tm.mu.Lock()\n\tmem.SetModTime(f, mtime)\n\tm.mu.Unlock()\n\n\treturn nil\n}\n\nfunc (m *MemMapFs) List() {\n\tfor _, x := range m.data {\n\t\ty := mem.FileInfo{FileData: x}\n\t\tfmt.Println(x.Name(), y.Size())\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/os.go",
    "content": "// Copyright © 2014 Steve Francia <spf@spf13.com>.\n// Copyright 2013 tsuru authors. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage afero\n\nimport (\n\t\"os\"\n\t\"time\"\n)\n\nvar _ Lstater = (*OsFs)(nil)\n\n// OsFs is a Fs implementation that uses functions provided by the os package.\n//\n// For details in any method, check the documentation of the os package\n// (http://golang.org/pkg/os/).\ntype OsFs struct{}\n\nfunc NewOsFs() Fs {\n\treturn &OsFs{}\n}\n\nfunc (OsFs) Name() string { return \"OsFs\" }\n\nfunc (OsFs) Create(name string) (File, error) {\n\tf, e := os.Create(name)\n\tif f == nil {\n\t\t// while this looks strange, we need to return a bare nil (of type nil) not\n\t\t// a nil value of type *os.File or nil won't be nil\n\t\treturn nil, e\n\t}\n\treturn f, e\n}\n\nfunc (OsFs) Mkdir(name string, perm os.FileMode) error {\n\treturn os.Mkdir(name, perm)\n}\n\nfunc (OsFs) MkdirAll(path string, perm os.FileMode) error {\n\treturn os.MkdirAll(path, perm)\n}\n\nfunc (OsFs) Open(name string) (File, error) {\n\tf, e := os.Open(name)\n\tif f == nil {\n\t\t// while this looks strange, we need to return a bare nil (of type nil) not\n\t\t// a nil value of type *os.File or nil won't be nil\n\t\treturn nil, e\n\t}\n\treturn f, e\n}\n\nfunc (OsFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\tf, e := os.OpenFile(name, flag, perm)\n\tif f == nil {\n\t\t// while this looks strange, we need to return a bare nil (of type nil) not\n\t\t// a nil value of type *os.File or nil won't be nil\n\t\treturn nil, e\n\t}\n\treturn f, e\n}\n\nfunc (OsFs) Remove(name string) error {\n\treturn os.Remove(name)\n}\n\nfunc (OsFs) RemoveAll(path string) error {\n\treturn os.RemoveAll(path)\n}\n\nfunc (OsFs) Rename(oldname, newname string) error {\n\treturn os.Rename(oldname, newname)\n}\n\nfunc (OsFs) Stat(name string) (os.FileInfo, error) {\n\treturn os.Stat(name)\n}\n\nfunc (OsFs) Chmod(name string, mode os.FileMode) error {\n\treturn os.Chmod(name, mode)\n}\n\nfunc (OsFs) Chown(name string, uid, gid int) error {\n\treturn os.Chown(name, uid, gid)\n}\n\nfunc (OsFs) Chtimes(name string, atime time.Time, mtime time.Time) error {\n\treturn os.Chtimes(name, atime, mtime)\n}\n\nfunc (OsFs) LstatIfPossible(name string) (os.FileInfo, bool, error) {\n\tfi, err := os.Lstat(name)\n\treturn fi, true, err\n}\n\nfunc (OsFs) SymlinkIfPossible(oldname, newname string) error {\n\treturn os.Symlink(oldname, newname)\n}\n\nfunc (OsFs) ReadlinkIfPossible(name string) (string, error) {\n\treturn os.Readlink(name)\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/path.go",
    "content": "// Copyright ©2015 The Go Authors\n// Copyright ©2015 Steve Francia <spf@spf13.com>\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage afero\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n)\n\n// readDirNames reads the directory named by dirname and returns\n// a sorted list of directory entries.\n// adapted from https://golang.org/src/path/filepath/path.go\nfunc readDirNames(fs Fs, dirname string) ([]string, error) {\n\tf, err := fs.Open(dirname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tnames, err := f.Readdirnames(-1)\n\tf.Close()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsort.Strings(names)\n\treturn names, nil\n}\n\n// walk recursively descends path, calling walkFn\n// adapted from https://golang.org/src/path/filepath/path.go\nfunc walk(fs Fs, path string, info os.FileInfo, walkFn filepath.WalkFunc) error {\n\terr := walkFn(path, info, nil)\n\tif err != nil {\n\t\tif info.IsDir() && err == filepath.SkipDir {\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t}\n\n\tif !info.IsDir() {\n\t\treturn nil\n\t}\n\n\tnames, err := readDirNames(fs, path)\n\tif err != nil {\n\t\treturn walkFn(path, info, err)\n\t}\n\n\tfor _, name := range names {\n\t\tfilename := filepath.Join(path, name)\n\t\tfileInfo, err := lstatIfPossible(fs, filename)\n\t\tif err != nil {\n\t\t\tif err := walkFn(filename, fileInfo, err); err != nil && err != filepath.SkipDir {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else {\n\t\t\terr = walk(fs, filename, fileInfo, walkFn)\n\t\t\tif err != nil {\n\t\t\t\tif !fileInfo.IsDir() || err != filepath.SkipDir {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// if the filesystem supports it, use Lstat, else use fs.Stat\nfunc lstatIfPossible(fs Fs, path string) (os.FileInfo, error) {\n\tif lfs, ok := fs.(Lstater); ok {\n\t\tfi, _, err := lfs.LstatIfPossible(path)\n\t\treturn fi, err\n\t}\n\treturn fs.Stat(path)\n}\n\n// Walk walks the file tree rooted at root, calling walkFn for each file or\n// directory in the tree, including root. All errors that arise visiting files\n// and directories are filtered by walkFn. The files are walked in lexical\n// order, which makes the output deterministic but means that for very\n// large directories Walk can be inefficient.\n// Walk does not follow symbolic links.\n\nfunc (a Afero) Walk(root string, walkFn filepath.WalkFunc) error {\n\treturn Walk(a.Fs, root, walkFn)\n}\n\nfunc Walk(fs Fs, root string, walkFn filepath.WalkFunc) error {\n\tinfo, err := lstatIfPossible(fs, root)\n\tif err != nil {\n\t\treturn walkFn(root, nil, err)\n\t}\n\treturn walk(fs, root, info, walkFn)\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/readonlyfs.go",
    "content": "package afero\n\nimport (\n\t\"os\"\n\t\"syscall\"\n\t\"time\"\n)\n\nvar _ Lstater = (*ReadOnlyFs)(nil)\n\ntype ReadOnlyFs struct {\n\tsource Fs\n}\n\nfunc NewReadOnlyFs(source Fs) Fs {\n\treturn &ReadOnlyFs{source: source}\n}\n\nfunc (r *ReadOnlyFs) ReadDir(name string) ([]os.FileInfo, error) {\n\treturn ReadDir(r.source, name)\n}\n\nfunc (r *ReadOnlyFs) Chtimes(n string, a, m time.Time) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) Chmod(n string, m os.FileMode) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) Chown(n string, uid, gid int) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) Name() string {\n\treturn \"ReadOnlyFilter\"\n}\n\nfunc (r *ReadOnlyFs) Stat(name string) (os.FileInfo, error) {\n\treturn r.source.Stat(name)\n}\n\nfunc (r *ReadOnlyFs) LstatIfPossible(name string) (os.FileInfo, bool, error) {\n\tif lsf, ok := r.source.(Lstater); ok {\n\t\treturn lsf.LstatIfPossible(name)\n\t}\n\tfi, err := r.Stat(name)\n\treturn fi, false, err\n}\n\nfunc (r *ReadOnlyFs) SymlinkIfPossible(oldname, newname string) error {\n\treturn &os.LinkError{Op: \"symlink\", Old: oldname, New: newname, Err: ErrNoSymlink}\n}\n\nfunc (r *ReadOnlyFs) ReadlinkIfPossible(name string) (string, error) {\n\tif srdr, ok := r.source.(LinkReader); ok {\n\t\treturn srdr.ReadlinkIfPossible(name)\n\t}\n\n\treturn \"\", &os.PathError{Op: \"readlink\", Path: name, Err: ErrNoReadlink}\n}\n\nfunc (r *ReadOnlyFs) Rename(o, n string) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) RemoveAll(p string) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) Remove(n string) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\tif flag&(os.O_WRONLY|syscall.O_RDWR|os.O_APPEND|os.O_CREATE|os.O_TRUNC) != 0 {\n\t\treturn nil, syscall.EPERM\n\t}\n\treturn r.source.OpenFile(name, flag, perm)\n}\n\nfunc (r *ReadOnlyFs) Open(n string) (File, error) {\n\treturn r.source.Open(n)\n}\n\nfunc (r *ReadOnlyFs) Mkdir(n string, p os.FileMode) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) MkdirAll(n string, p os.FileMode) error {\n\treturn syscall.EPERM\n}\n\nfunc (r *ReadOnlyFs) Create(n string) (File, error) {\n\treturn nil, syscall.EPERM\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/regexpfs.go",
    "content": "package afero\n\nimport (\n\t\"os\"\n\t\"regexp\"\n\t\"syscall\"\n\t\"time\"\n)\n\n// The RegexpFs filters files (not directories) by regular expression. Only\n// files matching the given regexp will be allowed, all others get a ENOENT error (\n// \"No such file or directory\").\ntype RegexpFs struct {\n\tre     *regexp.Regexp\n\tsource Fs\n}\n\nfunc NewRegexpFs(source Fs, re *regexp.Regexp) Fs {\n\treturn &RegexpFs{source: source, re: re}\n}\n\ntype RegexpFile struct {\n\tf  File\n\tre *regexp.Regexp\n}\n\nfunc (r *RegexpFs) matchesName(name string) error {\n\tif r.re == nil {\n\t\treturn nil\n\t}\n\tif r.re.MatchString(name) {\n\t\treturn nil\n\t}\n\treturn syscall.ENOENT\n}\n\nfunc (r *RegexpFs) dirOrMatches(name string) error {\n\tdir, err := IsDir(r.source, name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif dir {\n\t\treturn nil\n\t}\n\treturn r.matchesName(name)\n}\n\nfunc (r *RegexpFs) Chtimes(name string, a, m time.Time) error {\n\tif err := r.dirOrMatches(name); err != nil {\n\t\treturn err\n\t}\n\treturn r.source.Chtimes(name, a, m)\n}\n\nfunc (r *RegexpFs) Chmod(name string, mode os.FileMode) error {\n\tif err := r.dirOrMatches(name); err != nil {\n\t\treturn err\n\t}\n\treturn r.source.Chmod(name, mode)\n}\n\nfunc (r *RegexpFs) Chown(name string, uid, gid int) error {\n\tif err := r.dirOrMatches(name); err != nil {\n\t\treturn err\n\t}\n\treturn r.source.Chown(name, uid, gid)\n}\n\nfunc (r *RegexpFs) Name() string {\n\treturn \"RegexpFs\"\n}\n\nfunc (r *RegexpFs) Stat(name string) (os.FileInfo, error) {\n\tif err := r.dirOrMatches(name); err != nil {\n\t\treturn nil, err\n\t}\n\treturn r.source.Stat(name)\n}\n\nfunc (r *RegexpFs) Rename(oldname, newname string) error {\n\tdir, err := IsDir(r.source, oldname)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif dir {\n\t\treturn nil\n\t}\n\tif err := r.matchesName(oldname); err != nil {\n\t\treturn err\n\t}\n\tif err := r.matchesName(newname); err != nil {\n\t\treturn err\n\t}\n\treturn r.source.Rename(oldname, newname)\n}\n\nfunc (r *RegexpFs) RemoveAll(p string) error {\n\tdir, err := IsDir(r.source, p)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif !dir {\n\t\tif err := r.matchesName(p); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn r.source.RemoveAll(p)\n}\n\nfunc (r *RegexpFs) Remove(name string) error {\n\tif err := r.dirOrMatches(name); err != nil {\n\t\treturn err\n\t}\n\treturn r.source.Remove(name)\n}\n\nfunc (r *RegexpFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {\n\tif err := r.dirOrMatches(name); err != nil {\n\t\treturn nil, err\n\t}\n\treturn r.source.OpenFile(name, flag, perm)\n}\n\nfunc (r *RegexpFs) Open(name string) (File, error) {\n\tdir, err := IsDir(r.source, name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif !dir {\n\t\tif err := r.matchesName(name); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tf, err := r.source.Open(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &RegexpFile{f: f, re: r.re}, nil\n}\n\nfunc (r *RegexpFs) Mkdir(n string, p os.FileMode) error {\n\treturn r.source.Mkdir(n, p)\n}\n\nfunc (r *RegexpFs) MkdirAll(n string, p os.FileMode) error {\n\treturn r.source.MkdirAll(n, p)\n}\n\nfunc (r *RegexpFs) Create(name string) (File, error) {\n\tif err := r.matchesName(name); err != nil {\n\t\treturn nil, err\n\t}\n\treturn r.source.Create(name)\n}\n\nfunc (f *RegexpFile) Close() error {\n\treturn f.f.Close()\n}\n\nfunc (f *RegexpFile) Read(s []byte) (int, error) {\n\treturn f.f.Read(s)\n}\n\nfunc (f *RegexpFile) ReadAt(s []byte, o int64) (int, error) {\n\treturn f.f.ReadAt(s, o)\n}\n\nfunc (f *RegexpFile) Seek(o int64, w int) (int64, error) {\n\treturn f.f.Seek(o, w)\n}\n\nfunc (f *RegexpFile) Write(s []byte) (int, error) {\n\treturn f.f.Write(s)\n}\n\nfunc (f *RegexpFile) WriteAt(s []byte, o int64) (int, error) {\n\treturn f.f.WriteAt(s, o)\n}\n\nfunc (f *RegexpFile) Name() string {\n\treturn f.f.Name()\n}\n\nfunc (f *RegexpFile) Readdir(c int) (fi []os.FileInfo, err error) {\n\tvar rfi []os.FileInfo\n\trfi, err = f.f.Readdir(c)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, i := range rfi {\n\t\tif i.IsDir() || f.re.MatchString(i.Name()) {\n\t\t\tfi = append(fi, i)\n\t\t}\n\t}\n\treturn fi, nil\n}\n\nfunc (f *RegexpFile) Readdirnames(c int) (n []string, err error) {\n\tfi, err := f.Readdir(c)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, s := range fi {\n\t\tn = append(n, s.Name())\n\t}\n\treturn n, nil\n}\n\nfunc (f *RegexpFile) Stat() (os.FileInfo, error) {\n\treturn f.f.Stat()\n}\n\nfunc (f *RegexpFile) Sync() error {\n\treturn f.f.Sync()\n}\n\nfunc (f *RegexpFile) Truncate(s int64) error {\n\treturn f.f.Truncate(s)\n}\n\nfunc (f *RegexpFile) WriteString(s string) (int, error) {\n\treturn f.f.WriteString(s)\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/symlink.go",
    "content": "// Copyright © 2018 Steve Francia <spf@spf13.com>.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage afero\n\nimport (\n\t\"errors\"\n)\n\n// Symlinker is an optional interface in Afero. It is only implemented by the\n// filesystems saying so.\n// It indicates support for 3 symlink related interfaces that implement the\n// behaviors of the os methods:\n//   - Lstat\n//   - Symlink, and\n//   - Readlink\ntype Symlinker interface {\n\tLstater\n\tLinker\n\tLinkReader\n}\n\n// Linker is an optional interface in Afero. It is only implemented by the\n// filesystems saying so.\n// It will call Symlink if the filesystem itself is, or it delegates to, the os filesystem,\n// or the filesystem otherwise supports Symlink's.\ntype Linker interface {\n\tSymlinkIfPossible(oldname, newname string) error\n}\n\n// ErrNoSymlink is the error that will be wrapped in an os.LinkError if a file system\n// does not support Symlink's either directly or through its delegated filesystem.\n// As expressed by support for the Linker interface.\nvar ErrNoSymlink = errors.New(\"symlink not supported\")\n\n// LinkReader is an optional interface in Afero. It is only implemented by the\n// filesystems saying so.\ntype LinkReader interface {\n\tReadlinkIfPossible(name string) (string, error)\n}\n\n// ErrNoReadlink is the error that will be wrapped in an os.Path if a file system\n// does not support the readlink operation either directly or through its delegated filesystem.\n// As expressed by support for the LinkReader interface.\nvar ErrNoReadlink = errors.New(\"readlink not supported\")\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/unionFile.go",
    "content": "package afero\n\nimport (\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"syscall\"\n)\n\n// The UnionFile implements the afero.File interface and will be returned\n// when reading a directory present at least in the overlay or opening a file\n// for writing.\n//\n// The calls to\n// Readdir() and Readdirnames() merge the file os.FileInfo / names from the\n// base and the overlay - for files present in both layers, only those\n// from the overlay will be used.\n//\n// When opening files for writing (Create() / OpenFile() with the right flags)\n// the operations will be done in both layers, starting with the overlay. A\n// successful read in the overlay will move the cursor position in the base layer\n// by the number of bytes read.\ntype UnionFile struct {\n\tBase   File\n\tLayer  File\n\tMerger DirsMerger\n\toff    int\n\tfiles  []os.FileInfo\n}\n\nfunc (f *UnionFile) Close() error {\n\t// first close base, so we have a newer timestamp in the overlay. If we'd close\n\t// the overlay first, we'd get a cacheStale the next time we access this file\n\t// -> cache would be useless ;-)\n\tif f.Base != nil {\n\t\tf.Base.Close()\n\t}\n\tif f.Layer != nil {\n\t\treturn f.Layer.Close()\n\t}\n\treturn BADFD\n}\n\nfunc (f *UnionFile) Read(s []byte) (int, error) {\n\tif f.Layer != nil {\n\t\tn, err := f.Layer.Read(s)\n\t\tif (err == nil || err == io.EOF) && f.Base != nil {\n\t\t\t// advance the file position also in the base file, the next\n\t\t\t// call may be a write at this position (or a seek with SEEK_CUR)\n\t\t\tif _, seekErr := f.Base.Seek(int64(n), io.SeekCurrent); seekErr != nil {\n\t\t\t\t// only overwrite err in case the seek fails: we need to\n\t\t\t\t// report an eventual io.EOF to the caller\n\t\t\t\terr = seekErr\n\t\t\t}\n\t\t}\n\t\treturn n, err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.Read(s)\n\t}\n\treturn 0, BADFD\n}\n\nfunc (f *UnionFile) ReadAt(s []byte, o int64) (int, error) {\n\tif f.Layer != nil {\n\t\tn, err := f.Layer.ReadAt(s, o)\n\t\tif (err == nil || err == io.EOF) && f.Base != nil {\n\t\t\t_, err = f.Base.Seek(o+int64(n), io.SeekStart)\n\t\t}\n\t\treturn n, err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.ReadAt(s, o)\n\t}\n\treturn 0, BADFD\n}\n\nfunc (f *UnionFile) Seek(o int64, w int) (pos int64, err error) {\n\tif f.Layer != nil {\n\t\tpos, err = f.Layer.Seek(o, w)\n\t\tif (err == nil || err == io.EOF) && f.Base != nil {\n\t\t\t_, err = f.Base.Seek(o, w)\n\t\t}\n\t\treturn pos, err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.Seek(o, w)\n\t}\n\treturn 0, BADFD\n}\n\nfunc (f *UnionFile) Write(s []byte) (n int, err error) {\n\tif f.Layer != nil {\n\t\tn, err = f.Layer.Write(s)\n\t\tif err == nil &&\n\t\t\tf.Base != nil { // hmm, do we have fixed size files where a write may hit the EOF mark?\n\t\t\t_, err = f.Base.Write(s)\n\t\t}\n\t\treturn n, err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.Write(s)\n\t}\n\treturn 0, BADFD\n}\n\nfunc (f *UnionFile) WriteAt(s []byte, o int64) (n int, err error) {\n\tif f.Layer != nil {\n\t\tn, err = f.Layer.WriteAt(s, o)\n\t\tif err == nil && f.Base != nil {\n\t\t\t_, err = f.Base.WriteAt(s, o)\n\t\t}\n\t\treturn n, err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.WriteAt(s, o)\n\t}\n\treturn 0, BADFD\n}\n\nfunc (f *UnionFile) Name() string {\n\tif f.Layer != nil {\n\t\treturn f.Layer.Name()\n\t}\n\treturn f.Base.Name()\n}\n\n// DirsMerger is how UnionFile weaves two directories together.\n// It takes the FileInfo slices from the layer and the base and returns a\n// single view.\ntype DirsMerger func(lofi, bofi []os.FileInfo) ([]os.FileInfo, error)\n\nvar defaultUnionMergeDirsFn = func(lofi, bofi []os.FileInfo) ([]os.FileInfo, error) {\n\tfiles := make(map[string]os.FileInfo)\n\n\tfor _, fi := range lofi {\n\t\tfiles[fi.Name()] = fi\n\t}\n\n\tfor _, fi := range bofi {\n\t\tif _, exists := files[fi.Name()]; !exists {\n\t\t\tfiles[fi.Name()] = fi\n\t\t}\n\t}\n\n\trfi := make([]os.FileInfo, len(files))\n\n\ti := 0\n\tfor _, fi := range files {\n\t\trfi[i] = fi\n\t\ti++\n\t}\n\n\treturn rfi, nil\n}\n\n// Readdir will weave the two directories together and\n// return a single view of the overlayed directories.\n// At the end of the directory view, the error is io.EOF if c > 0.\nfunc (f *UnionFile) Readdir(c int) (ofi []os.FileInfo, err error) {\n\tmerge := f.Merger\n\tif merge == nil {\n\t\tmerge = defaultUnionMergeDirsFn\n\t}\n\n\tif f.off == 0 {\n\t\tvar lfi []os.FileInfo\n\t\tif f.Layer != nil {\n\t\t\tlfi, err = f.Layer.Readdir(-1)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tvar bfi []os.FileInfo\n\t\tif f.Base != nil {\n\t\t\tbfi, err = f.Base.Readdir(-1)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t}\n\t\tmerged, err := merge(lfi, bfi)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tf.files = append(f.files, merged...)\n\t}\n\tfiles := f.files[f.off:]\n\n\tif c <= 0 {\n\t\treturn files, nil\n\t}\n\n\tif len(files) == 0 {\n\t\treturn nil, io.EOF\n\t}\n\n\tif c > len(files) {\n\t\tc = len(files)\n\t}\n\n\tdefer func() { f.off += c }()\n\treturn files[:c], nil\n}\n\nfunc (f *UnionFile) Readdirnames(c int) ([]string, error) {\n\trfi, err := f.Readdir(c)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar names []string\n\tfor _, fi := range rfi {\n\t\tnames = append(names, fi.Name())\n\t}\n\treturn names, nil\n}\n\nfunc (f *UnionFile) Stat() (os.FileInfo, error) {\n\tif f.Layer != nil {\n\t\treturn f.Layer.Stat()\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.Stat()\n\t}\n\treturn nil, BADFD\n}\n\nfunc (f *UnionFile) Sync() (err error) {\n\tif f.Layer != nil {\n\t\terr = f.Layer.Sync()\n\t\tif err == nil && f.Base != nil {\n\t\t\terr = f.Base.Sync()\n\t\t}\n\t\treturn err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.Sync()\n\t}\n\treturn BADFD\n}\n\nfunc (f *UnionFile) Truncate(s int64) (err error) {\n\tif f.Layer != nil {\n\t\terr = f.Layer.Truncate(s)\n\t\tif err == nil && f.Base != nil {\n\t\t\terr = f.Base.Truncate(s)\n\t\t}\n\t\treturn err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.Truncate(s)\n\t}\n\treturn BADFD\n}\n\nfunc (f *UnionFile) WriteString(s string) (n int, err error) {\n\tif f.Layer != nil {\n\t\tn, err = f.Layer.WriteString(s)\n\t\tif err == nil && f.Base != nil {\n\t\t\t_, err = f.Base.WriteString(s)\n\t\t}\n\t\treturn n, err\n\t}\n\tif f.Base != nil {\n\t\treturn f.Base.WriteString(s)\n\t}\n\treturn 0, BADFD\n}\n\nfunc copyFile(base Fs, layer Fs, name string, bfh File) error {\n\t// First make sure the directory exists\n\texists, err := Exists(layer, filepath.Dir(name))\n\tif err != nil {\n\t\treturn err\n\t}\n\tif !exists {\n\t\terr = layer.MkdirAll(filepath.Dir(name), 0o777) // FIXME?\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Create the file on the overlay\n\tlfh, err := layer.Create(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tn, err := io.Copy(lfh, bfh)\n\tif err != nil {\n\t\t// If anything fails, clean up the file\n\t\tlayer.Remove(name)\n\t\tlfh.Close()\n\t\treturn err\n\t}\n\n\tbfi, err := bfh.Stat()\n\tif err != nil || bfi.Size() != n {\n\t\tlayer.Remove(name)\n\t\tlfh.Close()\n\t\treturn syscall.EIO\n\t}\n\n\terr = lfh.Close()\n\tif err != nil {\n\t\tlayer.Remove(name)\n\t\tlfh.Close()\n\t\treturn err\n\t}\n\treturn layer.Chtimes(name, bfi.ModTime(), bfi.ModTime())\n}\n\nfunc copyToLayer(base Fs, layer Fs, name string) error {\n\tbfh, err := base.Open(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer bfh.Close()\n\n\treturn copyFile(base, layer, name, bfh)\n}\n\nfunc copyFileToLayer(base Fs, layer Fs, name string, flag int, perm os.FileMode) error {\n\tbfh, err := base.OpenFile(name, flag, perm)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer bfh.Close()\n\n\treturn copyFile(base, layer, name, bfh)\n}\n"
  },
  {
    "path": "vendor/github.com/spf13/afero/util.go",
    "content": "// Copyright ©2015 Steve Francia <spf@spf13.com>\n// Portions Copyright ©2015 The Hugo Authors\n// Portions Copyright 2016-present Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage afero\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"unicode\"\n\n\t\"golang.org/x/text/runes\"\n\t\"golang.org/x/text/transform\"\n\t\"golang.org/x/text/unicode/norm\"\n)\n\n// Filepath separator defined by os.Separator.\nconst FilePathSeparator = string(filepath.Separator)\n\n// Takes a reader and a path and writes the content\nfunc (a Afero) WriteReader(path string, r io.Reader) (err error) {\n\treturn WriteReader(a.Fs, path, r)\n}\n\nfunc WriteReader(fs Fs, path string, r io.Reader) (err error) {\n\tdir, _ := filepath.Split(path)\n\tospath := filepath.FromSlash(dir)\n\n\tif ospath != \"\" {\n\t\terr = fs.MkdirAll(ospath, 0o777) // rwx, rw, r\n\t\tif err != nil {\n\t\t\tif err != os.ErrExist {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\tfile, err := fs.Create(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer file.Close()\n\n\t_, err = io.Copy(file, r)\n\treturn\n}\n\n// Same as WriteReader but checks to see if file/directory already exists.\nfunc (a Afero) SafeWriteReader(path string, r io.Reader) (err error) {\n\treturn SafeWriteReader(a.Fs, path, r)\n}\n\nfunc SafeWriteReader(fs Fs, path string, r io.Reader) (err error) {\n\tdir, _ := filepath.Split(path)\n\tospath := filepath.FromSlash(dir)\n\n\tif ospath != \"\" {\n\t\terr = fs.MkdirAll(ospath, 0o777) // rwx, rw, r\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\texists, err := Exists(fs, path)\n\tif err != nil {\n\t\treturn\n\t}\n\tif exists {\n\t\treturn fmt.Errorf(\"%v already exists\", path)\n\t}\n\n\tfile, err := fs.Create(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer file.Close()\n\n\t_, err = io.Copy(file, r)\n\treturn\n}\n\nfunc (a Afero) GetTempDir(subPath string) string {\n\treturn GetTempDir(a.Fs, subPath)\n}\n\n// GetTempDir returns the default temp directory with trailing slash\n// if subPath is not empty then it will be created recursively with mode 777 rwx rwx rwx\nfunc GetTempDir(fs Fs, subPath string) string {\n\taddSlash := func(p string) string {\n\t\tif FilePathSeparator != p[len(p)-1:] {\n\t\t\tp = p + FilePathSeparator\n\t\t}\n\t\treturn p\n\t}\n\tdir := addSlash(os.TempDir())\n\n\tif subPath != \"\" {\n\t\t// preserve windows backslash :-(\n\t\tif FilePathSeparator == \"\\\\\" {\n\t\t\tsubPath = strings.ReplaceAll(subPath, \"\\\\\", \"____\")\n\t\t}\n\t\tdir = dir + UnicodeSanitize((subPath))\n\t\tif FilePathSeparator == \"\\\\\" {\n\t\t\tdir = strings.ReplaceAll(dir, \"____\", \"\\\\\")\n\t\t}\n\n\t\tif exists, _ := Exists(fs, dir); exists {\n\t\t\treturn addSlash(dir)\n\t\t}\n\n\t\terr := fs.MkdirAll(dir, 0o777)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tdir = addSlash(dir)\n\t}\n\treturn dir\n}\n\n// Rewrite string to remove non-standard path characters\nfunc UnicodeSanitize(s string) string {\n\tsource := []rune(s)\n\ttarget := make([]rune, 0, len(source))\n\n\tfor _, r := range source {\n\t\tif unicode.IsLetter(r) ||\n\t\t\tunicode.IsDigit(r) ||\n\t\t\tunicode.IsMark(r) ||\n\t\t\tr == '.' ||\n\t\t\tr == '/' ||\n\t\t\tr == '\\\\' ||\n\t\t\tr == '_' ||\n\t\t\tr == '-' ||\n\t\t\tr == '%' ||\n\t\t\tr == ' ' ||\n\t\t\tr == '#' {\n\t\t\ttarget = append(target, r)\n\t\t}\n\t}\n\n\treturn string(target)\n}\n\n// Transform characters with accents into plain forms.\nfunc NeuterAccents(s string) string {\n\tt := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)\n\tresult, _, _ := transform.String(t, string(s))\n\n\treturn result\n}\n\nfunc (a Afero) FileContainsBytes(filename string, subslice []byte) (bool, error) {\n\treturn FileContainsBytes(a.Fs, filename, subslice)\n}\n\n// Check if a file contains a specified byte slice.\nfunc FileContainsBytes(fs Fs, filename string, subslice []byte) (bool, error) {\n\tf, err := fs.Open(filename)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tdefer f.Close()\n\n\treturn readerContainsAny(f, subslice), nil\n}\n\nfunc (a Afero) FileContainsAnyBytes(filename string, subslices [][]byte) (bool, error) {\n\treturn FileContainsAnyBytes(a.Fs, filename, subslices)\n}\n\n// Check if a file contains any of the specified byte slices.\nfunc FileContainsAnyBytes(fs Fs, filename string, subslices [][]byte) (bool, error) {\n\tf, err := fs.Open(filename)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tdefer f.Close()\n\n\treturn readerContainsAny(f, subslices...), nil\n}\n\n// readerContains reports whether any of the subslices is within r.\nfunc readerContainsAny(r io.Reader, subslices ...[]byte) bool {\n\tif r == nil || len(subslices) == 0 {\n\t\treturn false\n\t}\n\n\tlargestSlice := 0\n\n\tfor _, sl := range subslices {\n\t\tif len(sl) > largestSlice {\n\t\t\tlargestSlice = len(sl)\n\t\t}\n\t}\n\n\tif largestSlice == 0 {\n\t\treturn false\n\t}\n\n\tbufflen := largestSlice * 4\n\thalflen := bufflen / 2\n\tbuff := make([]byte, bufflen)\n\tvar err error\n\tvar n, i int\n\n\tfor {\n\t\ti++\n\t\tif i == 1 {\n\t\t\tn, err = io.ReadAtLeast(r, buff[:halflen], halflen)\n\t\t} else {\n\t\t\tif i != 2 {\n\t\t\t\t// shift left to catch overlapping matches\n\t\t\t\tcopy(buff[:], buff[halflen:])\n\t\t\t}\n\t\t\tn, err = io.ReadAtLeast(r, buff[halflen:], halflen)\n\t\t}\n\n\t\tif n > 0 {\n\t\t\tfor _, sl := range subslices {\n\t\t\t\tif bytes.Contains(buff, sl) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif err != nil {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (a Afero) DirExists(path string) (bool, error) {\n\treturn DirExists(a.Fs, path)\n}\n\n// DirExists checks if a path exists and is a directory.\nfunc DirExists(fs Fs, path string) (bool, error) {\n\tfi, err := fs.Stat(path)\n\tif err == nil && fi.IsDir() {\n\t\treturn true, nil\n\t}\n\tif os.IsNotExist(err) {\n\t\treturn false, nil\n\t}\n\treturn false, err\n}\n\nfunc (a Afero) IsDir(path string) (bool, error) {\n\treturn IsDir(a.Fs, path)\n}\n\n// IsDir checks if a given path is a directory.\nfunc IsDir(fs Fs, path string) (bool, error) {\n\tfi, err := fs.Stat(path)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\treturn fi.IsDir(), nil\n}\n\nfunc (a Afero) IsEmpty(path string) (bool, error) {\n\treturn IsEmpty(a.Fs, path)\n}\n\n// IsEmpty checks if a given file or directory is empty.\nfunc IsEmpty(fs Fs, path string) (bool, error) {\n\tif b, _ := Exists(fs, path); !b {\n\t\treturn false, fmt.Errorf(\"%q path does not exist\", path)\n\t}\n\tfi, err := fs.Stat(path)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tif fi.IsDir() {\n\t\tf, err := fs.Open(path)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tdefer f.Close()\n\t\tlist, err := f.Readdir(-1)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\treturn len(list) == 0, nil\n\t}\n\treturn fi.Size() == 0, nil\n}\n\nfunc (a Afero) Exists(path string) (bool, error) {\n\treturn Exists(a.Fs, path)\n}\n\n// Check if a file or directory exists.\nfunc Exists(fs Fs, path string) (bool, error) {\n\t_, err := fs.Stat(path)\n\tif err == nil {\n\t\treturn true, nil\n\t}\n\tif os.IsNotExist(err) {\n\t\treturn false, nil\n\t}\n\treturn false, err\n}\n\nfunc FullBaseFsPath(basePathFs *BasePathFs, relativePath string) string {\n\tcombinedPath := filepath.Join(basePathFs.path, relativePath)\n\tif parent, ok := basePathFs.source.(*BasePathFs); ok {\n\t\treturn FullBaseFsPath(parent, combinedPath)\n\t}\n\n\treturn combinedPath\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2012-2020 Mat Ryer, Tyler Bunnell and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/assertion_compare.go",
    "content": "package assert\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"time\"\n)\n\n// Deprecated: CompareType has only ever been for internal use and has accidentally been published since v1.6.0. Do not use it.\ntype CompareType = compareResult\n\ntype compareResult int\n\nconst (\n\tcompareLess compareResult = iota - 1\n\tcompareEqual\n\tcompareGreater\n)\n\nvar (\n\tintType   = reflect.TypeOf(int(1))\n\tint8Type  = reflect.TypeOf(int8(1))\n\tint16Type = reflect.TypeOf(int16(1))\n\tint32Type = reflect.TypeOf(int32(1))\n\tint64Type = reflect.TypeOf(int64(1))\n\n\tuintType   = reflect.TypeOf(uint(1))\n\tuint8Type  = reflect.TypeOf(uint8(1))\n\tuint16Type = reflect.TypeOf(uint16(1))\n\tuint32Type = reflect.TypeOf(uint32(1))\n\tuint64Type = reflect.TypeOf(uint64(1))\n\n\tuintptrType = reflect.TypeOf(uintptr(1))\n\n\tfloat32Type = reflect.TypeOf(float32(1))\n\tfloat64Type = reflect.TypeOf(float64(1))\n\n\tstringType = reflect.TypeOf(\"\")\n\n\ttimeType  = reflect.TypeOf(time.Time{})\n\tbytesType = reflect.TypeOf([]byte{})\n)\n\nfunc compare(obj1, obj2 interface{}, kind reflect.Kind) (compareResult, bool) {\n\tobj1Value := reflect.ValueOf(obj1)\n\tobj2Value := reflect.ValueOf(obj2)\n\n\t// throughout this switch we try and avoid calling .Convert() if possible,\n\t// as this has a pretty big performance impact\n\tswitch kind {\n\tcase reflect.Int:\n\t\t{\n\t\t\tintobj1, ok := obj1.(int)\n\t\t\tif !ok {\n\t\t\t\tintobj1 = obj1Value.Convert(intType).Interface().(int)\n\t\t\t}\n\t\t\tintobj2, ok := obj2.(int)\n\t\t\tif !ok {\n\t\t\t\tintobj2 = obj2Value.Convert(intType).Interface().(int)\n\t\t\t}\n\t\t\tif intobj1 > intobj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif intobj1 == intobj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif intobj1 < intobj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Int8:\n\t\t{\n\t\t\tint8obj1, ok := obj1.(int8)\n\t\t\tif !ok {\n\t\t\t\tint8obj1 = obj1Value.Convert(int8Type).Interface().(int8)\n\t\t\t}\n\t\t\tint8obj2, ok := obj2.(int8)\n\t\t\tif !ok {\n\t\t\t\tint8obj2 = obj2Value.Convert(int8Type).Interface().(int8)\n\t\t\t}\n\t\t\tif int8obj1 > int8obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif int8obj1 == int8obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif int8obj1 < int8obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Int16:\n\t\t{\n\t\t\tint16obj1, ok := obj1.(int16)\n\t\t\tif !ok {\n\t\t\t\tint16obj1 = obj1Value.Convert(int16Type).Interface().(int16)\n\t\t\t}\n\t\t\tint16obj2, ok := obj2.(int16)\n\t\t\tif !ok {\n\t\t\t\tint16obj2 = obj2Value.Convert(int16Type).Interface().(int16)\n\t\t\t}\n\t\t\tif int16obj1 > int16obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif int16obj1 == int16obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif int16obj1 < int16obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Int32:\n\t\t{\n\t\t\tint32obj1, ok := obj1.(int32)\n\t\t\tif !ok {\n\t\t\t\tint32obj1 = obj1Value.Convert(int32Type).Interface().(int32)\n\t\t\t}\n\t\t\tint32obj2, ok := obj2.(int32)\n\t\t\tif !ok {\n\t\t\t\tint32obj2 = obj2Value.Convert(int32Type).Interface().(int32)\n\t\t\t}\n\t\t\tif int32obj1 > int32obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif int32obj1 == int32obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif int32obj1 < int32obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Int64:\n\t\t{\n\t\t\tint64obj1, ok := obj1.(int64)\n\t\t\tif !ok {\n\t\t\t\tint64obj1 = obj1Value.Convert(int64Type).Interface().(int64)\n\t\t\t}\n\t\t\tint64obj2, ok := obj2.(int64)\n\t\t\tif !ok {\n\t\t\t\tint64obj2 = obj2Value.Convert(int64Type).Interface().(int64)\n\t\t\t}\n\t\t\tif int64obj1 > int64obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif int64obj1 == int64obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif int64obj1 < int64obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Uint:\n\t\t{\n\t\t\tuintobj1, ok := obj1.(uint)\n\t\t\tif !ok {\n\t\t\t\tuintobj1 = obj1Value.Convert(uintType).Interface().(uint)\n\t\t\t}\n\t\t\tuintobj2, ok := obj2.(uint)\n\t\t\tif !ok {\n\t\t\t\tuintobj2 = obj2Value.Convert(uintType).Interface().(uint)\n\t\t\t}\n\t\t\tif uintobj1 > uintobj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif uintobj1 == uintobj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif uintobj1 < uintobj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Uint8:\n\t\t{\n\t\t\tuint8obj1, ok := obj1.(uint8)\n\t\t\tif !ok {\n\t\t\t\tuint8obj1 = obj1Value.Convert(uint8Type).Interface().(uint8)\n\t\t\t}\n\t\t\tuint8obj2, ok := obj2.(uint8)\n\t\t\tif !ok {\n\t\t\t\tuint8obj2 = obj2Value.Convert(uint8Type).Interface().(uint8)\n\t\t\t}\n\t\t\tif uint8obj1 > uint8obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif uint8obj1 == uint8obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif uint8obj1 < uint8obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Uint16:\n\t\t{\n\t\t\tuint16obj1, ok := obj1.(uint16)\n\t\t\tif !ok {\n\t\t\t\tuint16obj1 = obj1Value.Convert(uint16Type).Interface().(uint16)\n\t\t\t}\n\t\t\tuint16obj2, ok := obj2.(uint16)\n\t\t\tif !ok {\n\t\t\t\tuint16obj2 = obj2Value.Convert(uint16Type).Interface().(uint16)\n\t\t\t}\n\t\t\tif uint16obj1 > uint16obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif uint16obj1 == uint16obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif uint16obj1 < uint16obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Uint32:\n\t\t{\n\t\t\tuint32obj1, ok := obj1.(uint32)\n\t\t\tif !ok {\n\t\t\t\tuint32obj1 = obj1Value.Convert(uint32Type).Interface().(uint32)\n\t\t\t}\n\t\t\tuint32obj2, ok := obj2.(uint32)\n\t\t\tif !ok {\n\t\t\t\tuint32obj2 = obj2Value.Convert(uint32Type).Interface().(uint32)\n\t\t\t}\n\t\t\tif uint32obj1 > uint32obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif uint32obj1 == uint32obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif uint32obj1 < uint32obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Uint64:\n\t\t{\n\t\t\tuint64obj1, ok := obj1.(uint64)\n\t\t\tif !ok {\n\t\t\t\tuint64obj1 = obj1Value.Convert(uint64Type).Interface().(uint64)\n\t\t\t}\n\t\t\tuint64obj2, ok := obj2.(uint64)\n\t\t\tif !ok {\n\t\t\t\tuint64obj2 = obj2Value.Convert(uint64Type).Interface().(uint64)\n\t\t\t}\n\t\t\tif uint64obj1 > uint64obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif uint64obj1 == uint64obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif uint64obj1 < uint64obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Float32:\n\t\t{\n\t\t\tfloat32obj1, ok := obj1.(float32)\n\t\t\tif !ok {\n\t\t\t\tfloat32obj1 = obj1Value.Convert(float32Type).Interface().(float32)\n\t\t\t}\n\t\t\tfloat32obj2, ok := obj2.(float32)\n\t\t\tif !ok {\n\t\t\t\tfloat32obj2 = obj2Value.Convert(float32Type).Interface().(float32)\n\t\t\t}\n\t\t\tif float32obj1 > float32obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif float32obj1 == float32obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif float32obj1 < float32obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Float64:\n\t\t{\n\t\t\tfloat64obj1, ok := obj1.(float64)\n\t\t\tif !ok {\n\t\t\t\tfloat64obj1 = obj1Value.Convert(float64Type).Interface().(float64)\n\t\t\t}\n\t\t\tfloat64obj2, ok := obj2.(float64)\n\t\t\tif !ok {\n\t\t\t\tfloat64obj2 = obj2Value.Convert(float64Type).Interface().(float64)\n\t\t\t}\n\t\t\tif float64obj1 > float64obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif float64obj1 == float64obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif float64obj1 < float64obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.String:\n\t\t{\n\t\t\tstringobj1, ok := obj1.(string)\n\t\t\tif !ok {\n\t\t\t\tstringobj1 = obj1Value.Convert(stringType).Interface().(string)\n\t\t\t}\n\t\t\tstringobj2, ok := obj2.(string)\n\t\t\tif !ok {\n\t\t\t\tstringobj2 = obj2Value.Convert(stringType).Interface().(string)\n\t\t\t}\n\t\t\tif stringobj1 > stringobj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif stringobj1 == stringobj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif stringobj1 < stringobj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\t// Check for known struct types we can check for compare results.\n\tcase reflect.Struct:\n\t\t{\n\t\t\t// All structs enter here. We're not interested in most types.\n\t\t\tif !obj1Value.CanConvert(timeType) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// time.Time can be compared!\n\t\t\ttimeObj1, ok := obj1.(time.Time)\n\t\t\tif !ok {\n\t\t\t\ttimeObj1 = obj1Value.Convert(timeType).Interface().(time.Time)\n\t\t\t}\n\n\t\t\ttimeObj2, ok := obj2.(time.Time)\n\t\t\tif !ok {\n\t\t\t\ttimeObj2 = obj2Value.Convert(timeType).Interface().(time.Time)\n\t\t\t}\n\n\t\t\tif timeObj1.Before(timeObj2) {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t\tif timeObj1.Equal(timeObj2) {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\treturn compareGreater, true\n\t\t}\n\tcase reflect.Slice:\n\t\t{\n\t\t\t// We only care about the []byte type.\n\t\t\tif !obj1Value.CanConvert(bytesType) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// []byte can be compared!\n\t\t\tbytesObj1, ok := obj1.([]byte)\n\t\t\tif !ok {\n\t\t\t\tbytesObj1 = obj1Value.Convert(bytesType).Interface().([]byte)\n\n\t\t\t}\n\t\t\tbytesObj2, ok := obj2.([]byte)\n\t\t\tif !ok {\n\t\t\t\tbytesObj2 = obj2Value.Convert(bytesType).Interface().([]byte)\n\t\t\t}\n\n\t\t\treturn compareResult(bytes.Compare(bytesObj1, bytesObj2)), true\n\t\t}\n\tcase reflect.Uintptr:\n\t\t{\n\t\t\tuintptrObj1, ok := obj1.(uintptr)\n\t\t\tif !ok {\n\t\t\t\tuintptrObj1 = obj1Value.Convert(uintptrType).Interface().(uintptr)\n\t\t\t}\n\t\t\tuintptrObj2, ok := obj2.(uintptr)\n\t\t\tif !ok {\n\t\t\t\tuintptrObj2 = obj2Value.Convert(uintptrType).Interface().(uintptr)\n\t\t\t}\n\t\t\tif uintptrObj1 > uintptrObj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif uintptrObj1 == uintptrObj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif uintptrObj1 < uintptrObj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\t}\n\n\treturn compareEqual, false\n}\n\n// Greater asserts that the first element is greater than the second\n//\n//\tassert.Greater(t, 2, 1)\n//\tassert.Greater(t, float64(2), float64(1))\n//\tassert.Greater(t, \"b\", \"a\")\nfunc Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tfailMessage := fmt.Sprintf(\"\\\"%v\\\" is not greater than \\\"%v\\\"\", e1, e2)\n\treturn compareTwoValues(t, e1, e2, []compareResult{compareGreater}, failMessage, msgAndArgs...)\n}\n\n// GreaterOrEqual asserts that the first element is greater than or equal to the second\n//\n//\tassert.GreaterOrEqual(t, 2, 1)\n//\tassert.GreaterOrEqual(t, 2, 2)\n//\tassert.GreaterOrEqual(t, \"b\", \"a\")\n//\tassert.GreaterOrEqual(t, \"b\", \"b\")\nfunc GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tfailMessage := fmt.Sprintf(\"\\\"%v\\\" is not greater than or equal to \\\"%v\\\"\", e1, e2)\n\treturn compareTwoValues(t, e1, e2, []compareResult{compareGreater, compareEqual}, failMessage, msgAndArgs...)\n}\n\n// Less asserts that the first element is less than the second\n//\n//\tassert.Less(t, 1, 2)\n//\tassert.Less(t, float64(1), float64(2))\n//\tassert.Less(t, \"a\", \"b\")\nfunc Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tfailMessage := fmt.Sprintf(\"\\\"%v\\\" is not less than \\\"%v\\\"\", e1, e2)\n\treturn compareTwoValues(t, e1, e2, []compareResult{compareLess}, failMessage, msgAndArgs...)\n}\n\n// LessOrEqual asserts that the first element is less than or equal to the second\n//\n//\tassert.LessOrEqual(t, 1, 2)\n//\tassert.LessOrEqual(t, 2, 2)\n//\tassert.LessOrEqual(t, \"a\", \"b\")\n//\tassert.LessOrEqual(t, \"b\", \"b\")\nfunc LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tfailMessage := fmt.Sprintf(\"\\\"%v\\\" is not less than or equal to \\\"%v\\\"\", e1, e2)\n\treturn compareTwoValues(t, e1, e2, []compareResult{compareLess, compareEqual}, failMessage, msgAndArgs...)\n}\n\n// Positive asserts that the specified element is positive\n//\n//\tassert.Positive(t, 1)\n//\tassert.Positive(t, 1.23)\nfunc Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tzero := reflect.Zero(reflect.TypeOf(e))\n\tfailMessage := fmt.Sprintf(\"\\\"%v\\\" is not positive\", e)\n\treturn compareTwoValues(t, e, zero.Interface(), []compareResult{compareGreater}, failMessage, msgAndArgs...)\n}\n\n// Negative asserts that the specified element is negative\n//\n//\tassert.Negative(t, -1)\n//\tassert.Negative(t, -1.23)\nfunc Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tzero := reflect.Zero(reflect.TypeOf(e))\n\tfailMessage := fmt.Sprintf(\"\\\"%v\\\" is not negative\", e)\n\treturn compareTwoValues(t, e, zero.Interface(), []compareResult{compareLess}, failMessage, msgAndArgs...)\n}\n\nfunc compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowedComparesResults []compareResult, failMessage string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\te1Kind := reflect.ValueOf(e1).Kind()\n\te2Kind := reflect.ValueOf(e2).Kind()\n\tif e1Kind != e2Kind {\n\t\treturn Fail(t, \"Elements should be the same type\", msgAndArgs...)\n\t}\n\n\tcompareResult, isComparable := compare(e1, e2, e1Kind)\n\tif !isComparable {\n\t\treturn Fail(t, fmt.Sprintf(`Can not compare type \"%T\"`, e1), msgAndArgs...)\n\t}\n\n\tif !containsValue(allowedComparesResults, compareResult) {\n\t\treturn Fail(t, failMessage, msgAndArgs...)\n\t}\n\n\treturn true\n}\n\nfunc containsValue(values []compareResult, value compareResult) bool {\n\tfor _, v := range values {\n\t\tif v == value {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/assertion_format.go",
    "content": "// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.\n\npackage assert\n\nimport (\n\thttp \"net/http\"\n\turl \"net/url\"\n\ttime \"time\"\n)\n\n// Conditionf uses a Comparison to assert a complex condition.\nfunc Conditionf(t TestingT, comp Comparison, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Condition(t, comp, append([]interface{}{msg}, args...)...)\n}\n\n// Containsf asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\tassert.Containsf(t, \"Hello World\", \"World\", \"error message %s\", \"formatted\")\n//\tassert.Containsf(t, [\"Hello\", \"World\"], \"World\", \"error message %s\", \"formatted\")\n//\tassert.Containsf(t, {\"Hello\": \"World\"}, \"Hello\", \"error message %s\", \"formatted\")\nfunc Containsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Contains(t, s, contains, append([]interface{}{msg}, args...)...)\n}\n\n// DirExistsf checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc DirExistsf(t TestingT, path string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn DirExists(t, path, append([]interface{}{msg}, args...)...)\n}\n\n// ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// assert.ElementsMatchf(t, [1, 3, 2, 3], [1, 3, 3, 2], \"error message %s\", \"formatted\")\nfunc ElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ElementsMatch(t, listA, listB, append([]interface{}{msg}, args...)...)\n}\n\n// Emptyf asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\tassert.Emptyf(t, obj, \"error message %s\", \"formatted\")\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Empty(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// Equalf asserts that two objects are equal.\n//\n//\tassert.Equalf(t, 123, 123, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc Equalf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Equal(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// EqualErrorf asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\tassert.EqualErrorf(t, err,  expectedErrorString, \"error message %s\", \"formatted\")\nfunc EqualErrorf(t TestingT, theError error, errString string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualError(t, theError, errString, append([]interface{}{msg}, args...)...)\n}\n\n// EqualExportedValuesf asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t assert.EqualExportedValuesf(t, S{1, 2}, S{1, 3}, \"error message %s\", \"formatted\") => true\n//\t assert.EqualExportedValuesf(t, S{1, 2}, S{2, 3}, \"error message %s\", \"formatted\") => false\nfunc EqualExportedValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualExportedValues(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// EqualValuesf asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\tassert.EqualValuesf(t, uint32(123), int32(123), \"error message %s\", \"formatted\")\nfunc EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualValues(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// Errorf asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\tassert.Errorf(t, err, \"error message %s\", \"formatted\")\nfunc Errorf(t TestingT, err error, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Error(t, err, append([]interface{}{msg}, args...)...)\n}\n\n// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc ErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorAs(t, err, target, append([]interface{}{msg}, args...)...)\n}\n\n// ErrorContainsf asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\tassert.ErrorContainsf(t, err,  expectedErrorSubString, \"error message %s\", \"formatted\")\nfunc ErrorContainsf(t TestingT, theError error, contains string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorContains(t, theError, contains, append([]interface{}{msg}, args...)...)\n}\n\n// ErrorIsf asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc ErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorIs(t, err, target, append([]interface{}{msg}, args...)...)\n}\n\n// Eventuallyf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\tassert.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Eventually(t, condition, waitFor, tick, append([]interface{}{msg}, args...)...)\n}\n\n// EventuallyWithTf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\tassert.EventuallyWithTf(t, func(c *assert.CollectT, \"error message %s\", \"formatted\") {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\tassert.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc EventuallyWithTf(t TestingT, condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EventuallyWithT(t, condition, waitFor, tick, append([]interface{}{msg}, args...)...)\n}\n\n// Exactlyf asserts that two objects are equal in value and type.\n//\n//\tassert.Exactlyf(t, int32(123), int64(123), \"error message %s\", \"formatted\")\nfunc Exactlyf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Exactly(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// Failf reports a failure through\nfunc Failf(t TestingT, failureMessage string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Fail(t, failureMessage, append([]interface{}{msg}, args...)...)\n}\n\n// FailNowf fails test\nfunc FailNowf(t TestingT, failureMessage string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn FailNow(t, failureMessage, append([]interface{}{msg}, args...)...)\n}\n\n// Falsef asserts that the specified value is false.\n//\n//\tassert.Falsef(t, myBool, \"error message %s\", \"formatted\")\nfunc Falsef(t TestingT, value bool, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn False(t, value, append([]interface{}{msg}, args...)...)\n}\n\n// FileExistsf checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc FileExistsf(t TestingT, path string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn FileExists(t, path, append([]interface{}{msg}, args...)...)\n}\n\n// Greaterf asserts that the first element is greater than the second\n//\n//\tassert.Greaterf(t, 2, 1, \"error message %s\", \"formatted\")\n//\tassert.Greaterf(t, float64(2), float64(1), \"error message %s\", \"formatted\")\n//\tassert.Greaterf(t, \"b\", \"a\", \"error message %s\", \"formatted\")\nfunc Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Greater(t, e1, e2, append([]interface{}{msg}, args...)...)\n}\n\n// GreaterOrEqualf asserts that the first element is greater than or equal to the second\n//\n//\tassert.GreaterOrEqualf(t, 2, 1, \"error message %s\", \"formatted\")\n//\tassert.GreaterOrEqualf(t, 2, 2, \"error message %s\", \"formatted\")\n//\tassert.GreaterOrEqualf(t, \"b\", \"a\", \"error message %s\", \"formatted\")\n//\tassert.GreaterOrEqualf(t, \"b\", \"b\", \"error message %s\", \"formatted\")\nfunc GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn GreaterOrEqual(t, e1, e2, append([]interface{}{msg}, args...)...)\n}\n\n// HTTPBodyContainsf asserts that a specified handler returns a\n// body that contains a string.\n//\n//\tassert.HTTPBodyContainsf(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPBodyContains(t, handler, method, url, values, str, append([]interface{}{msg}, args...)...)\n}\n\n// HTTPBodyNotContainsf asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\tassert.HTTPBodyNotContainsf(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPBodyNotContains(t, handler, method, url, values, str, append([]interface{}{msg}, args...)...)\n}\n\n// HTTPErrorf asserts that a specified handler returns an error status code.\n//\n//\tassert.HTTPErrorf(t, myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPError(t, handler, method, url, values, append([]interface{}{msg}, args...)...)\n}\n\n// HTTPRedirectf asserts that a specified handler returns a redirect status code.\n//\n//\tassert.HTTPRedirectf(t, myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPRedirect(t, handler, method, url, values, append([]interface{}{msg}, args...)...)\n}\n\n// HTTPStatusCodef asserts that a specified handler returns a specified status code.\n//\n//\tassert.HTTPStatusCodef(t, myHandler, \"GET\", \"/notImplemented\", nil, 501, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPStatusCodef(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPStatusCode(t, handler, method, url, values, statuscode, append([]interface{}{msg}, args...)...)\n}\n\n// HTTPSuccessf asserts that a specified handler returns a success status code.\n//\n//\tassert.HTTPSuccessf(t, myHandler, \"POST\", \"http://www.google.com\", nil, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPSuccess(t, handler, method, url, values, append([]interface{}{msg}, args...)...)\n}\n\n// Implementsf asserts that an object is implemented by the specified interface.\n//\n//\tassert.Implementsf(t, (*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc Implementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Implements(t, interfaceObject, object, append([]interface{}{msg}, args...)...)\n}\n\n// InDeltaf asserts that the two numerals are within delta of each other.\n//\n//\tassert.InDeltaf(t, math.Pi, 22/7.0, 0.01, \"error message %s\", \"formatted\")\nfunc InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDelta(t, expected, actual, delta, append([]interface{}{msg}, args...)...)\n}\n\n// InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc InDeltaMapValuesf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDeltaMapValues(t, expected, actual, delta, append([]interface{}{msg}, args...)...)\n}\n\n// InDeltaSlicef is the same as InDelta, except it compares two slices.\nfunc InDeltaSlicef(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDeltaSlice(t, expected, actual, delta, append([]interface{}{msg}, args...)...)\n}\n\n// InEpsilonf asserts that expected and actual have a relative error less than epsilon\nfunc InEpsilonf(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InEpsilon(t, expected, actual, epsilon, append([]interface{}{msg}, args...)...)\n}\n\n// InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices.\nfunc InEpsilonSlicef(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InEpsilonSlice(t, expected, actual, epsilon, append([]interface{}{msg}, args...)...)\n}\n\n// IsDecreasingf asserts that the collection is decreasing\n//\n//\tassert.IsDecreasingf(t, []int{2, 1, 0}, \"error message %s\", \"formatted\")\n//\tassert.IsDecreasingf(t, []float{2, 1}, \"error message %s\", \"formatted\")\n//\tassert.IsDecreasingf(t, []string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsDecreasing(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// IsIncreasingf asserts that the collection is increasing\n//\n//\tassert.IsIncreasingf(t, []int{1, 2, 3}, \"error message %s\", \"formatted\")\n//\tassert.IsIncreasingf(t, []float{1, 2}, \"error message %s\", \"formatted\")\n//\tassert.IsIncreasingf(t, []string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsIncreasing(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// IsNonDecreasingf asserts that the collection is not decreasing\n//\n//\tassert.IsNonDecreasingf(t, []int{1, 1, 2}, \"error message %s\", \"formatted\")\n//\tassert.IsNonDecreasingf(t, []float{1, 2}, \"error message %s\", \"formatted\")\n//\tassert.IsNonDecreasingf(t, []string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNonDecreasing(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// IsNonIncreasingf asserts that the collection is not increasing\n//\n//\tassert.IsNonIncreasingf(t, []int{2, 1, 1}, \"error message %s\", \"formatted\")\n//\tassert.IsNonIncreasingf(t, []float{2, 1}, \"error message %s\", \"formatted\")\n//\tassert.IsNonIncreasingf(t, []string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc IsNonIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNonIncreasing(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// IsNotTypef asserts that the specified objects are not of the same type.\n//\n//\tassert.IsNotTypef(t, &NotMyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc IsNotTypef(t TestingT, theType interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNotType(t, theType, object, append([]interface{}{msg}, args...)...)\n}\n\n// IsTypef asserts that the specified objects are of the same type.\n//\n//\tassert.IsTypef(t, &MyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc IsTypef(t TestingT, expectedType interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsType(t, expectedType, object, append([]interface{}{msg}, args...)...)\n}\n\n// JSONEqf asserts that two JSON strings are equivalent.\n//\n//\tassert.JSONEqf(t, `{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`, \"error message %s\", \"formatted\")\nfunc JSONEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn JSONEq(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// Lenf asserts that the specified object has specific length.\n// Lenf also fails if the object has a type that len() not accept.\n//\n//\tassert.Lenf(t, mySlice, 3, \"error message %s\", \"formatted\")\nfunc Lenf(t TestingT, object interface{}, length int, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Len(t, object, length, append([]interface{}{msg}, args...)...)\n}\n\n// Lessf asserts that the first element is less than the second\n//\n//\tassert.Lessf(t, 1, 2, \"error message %s\", \"formatted\")\n//\tassert.Lessf(t, float64(1), float64(2), \"error message %s\", \"formatted\")\n//\tassert.Lessf(t, \"a\", \"b\", \"error message %s\", \"formatted\")\nfunc Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Less(t, e1, e2, append([]interface{}{msg}, args...)...)\n}\n\n// LessOrEqualf asserts that the first element is less than or equal to the second\n//\n//\tassert.LessOrEqualf(t, 1, 2, \"error message %s\", \"formatted\")\n//\tassert.LessOrEqualf(t, 2, 2, \"error message %s\", \"formatted\")\n//\tassert.LessOrEqualf(t, \"a\", \"b\", \"error message %s\", \"formatted\")\n//\tassert.LessOrEqualf(t, \"b\", \"b\", \"error message %s\", \"formatted\")\nfunc LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn LessOrEqual(t, e1, e2, append([]interface{}{msg}, args...)...)\n}\n\n// Negativef asserts that the specified element is negative\n//\n//\tassert.Negativef(t, -1, \"error message %s\", \"formatted\")\n//\tassert.Negativef(t, -1.23, \"error message %s\", \"formatted\")\nfunc Negativef(t TestingT, e interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Negative(t, e, append([]interface{}{msg}, args...)...)\n}\n\n// Neverf asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\tassert.Neverf(t, func() bool { return false; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc Neverf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Never(t, condition, waitFor, tick, append([]interface{}{msg}, args...)...)\n}\n\n// Nilf asserts that the specified object is nil.\n//\n//\tassert.Nilf(t, err, \"error message %s\", \"formatted\")\nfunc Nilf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Nil(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// NoDirExistsf checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc NoDirExistsf(t TestingT, path string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoDirExists(t, path, append([]interface{}{msg}, args...)...)\n}\n\n// NoErrorf asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if assert.NoErrorf(t, err, \"error message %s\", \"formatted\") {\n//\t\t   assert.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc NoErrorf(t TestingT, err error, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoError(t, err, append([]interface{}{msg}, args...)...)\n}\n\n// NoFileExistsf checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc NoFileExistsf(t TestingT, path string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoFileExists(t, path, append([]interface{}{msg}, args...)...)\n}\n\n// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\tassert.NotContainsf(t, \"Hello World\", \"Earth\", \"error message %s\", \"formatted\")\n//\tassert.NotContainsf(t, [\"Hello\", \"World\"], \"Earth\", \"error message %s\", \"formatted\")\n//\tassert.NotContainsf(t, {\"Hello\": \"World\"}, \"Earth\", \"error message %s\", \"formatted\")\nfunc NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotContains(t, s, contains, append([]interface{}{msg}, args...)...)\n}\n\n// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// assert.NotElementsMatchf(t, [1, 1, 2, 3], [1, 1, 2, 3], \"error message %s\", \"formatted\") -> false\n//\n// assert.NotElementsMatchf(t, [1, 1, 2, 3], [1, 2, 3], \"error message %s\", \"formatted\") -> true\n//\n// assert.NotElementsMatchf(t, [1, 2, 3], [1, 2, 4], \"error message %s\", \"formatted\") -> true\nfunc NotElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotElementsMatch(t, listA, listB, append([]interface{}{msg}, args...)...)\n}\n\n// NotEmptyf asserts that the specified object is NOT [Empty].\n//\n//\tif assert.NotEmptyf(t, obj, \"error message %s\", \"formatted\") {\n//\t  assert.Equal(t, \"two\", obj[1])\n//\t}\nfunc NotEmptyf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEmpty(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// NotEqualf asserts that the specified values are NOT equal.\n//\n//\tassert.NotEqualf(t, obj1, obj2, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc NotEqualf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEqual(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// NotEqualValuesf asserts that two objects are not equal even when converted to the same type\n//\n//\tassert.NotEqualValuesf(t, obj1, obj2, \"error message %s\", \"formatted\")\nfunc NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEqualValues(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// NotErrorAsf asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc NotErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotErrorAs(t, err, target, append([]interface{}{msg}, args...)...)\n}\n\n// NotErrorIsf asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc NotErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotErrorIs(t, err, target, append([]interface{}{msg}, args...)...)\n}\n\n// NotImplementsf asserts that an object does not implement the specified interface.\n//\n//\tassert.NotImplementsf(t, (*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc NotImplementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotImplements(t, interfaceObject, object, append([]interface{}{msg}, args...)...)\n}\n\n// NotNilf asserts that the specified object is not nil.\n//\n//\tassert.NotNilf(t, err, \"error message %s\", \"formatted\")\nfunc NotNilf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotNil(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\tassert.NotPanicsf(t, func(){ RemainCalm() }, \"error message %s\", \"formatted\")\nfunc NotPanicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotPanics(t, f, append([]interface{}{msg}, args...)...)\n}\n\n// NotRegexpf asserts that a specified regexp does not match a string.\n//\n//\tassert.NotRegexpf(t, regexp.MustCompile(\"starts\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\tassert.NotRegexpf(t, \"^start\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotRegexp(t, rx, str, append([]interface{}{msg}, args...)...)\n}\n\n// NotSamef asserts that two pointers do not reference the same object.\n//\n//\tassert.NotSamef(t, ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc NotSamef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotSame(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// NotSubsetf asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\tassert.NotSubsetf(t, [1, 3, 4], [1, 2], \"error message %s\", \"formatted\")\n//\tassert.NotSubsetf(t, {\"x\": 1, \"y\": 2}, {\"z\": 3}, \"error message %s\", \"formatted\")\n//\tassert.NotSubsetf(t, [1, 3, 4], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\tassert.NotSubsetf(t, {\"x\": 1, \"y\": 2}, [\"z\"], \"error message %s\", \"formatted\")\nfunc NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotSubset(t, list, subset, append([]interface{}{msg}, args...)...)\n}\n\n// NotZerof asserts that i is not the zero value for its type.\nfunc NotZerof(t TestingT, i interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotZero(t, i, append([]interface{}{msg}, args...)...)\n}\n\n// Panicsf asserts that the code inside the specified PanicTestFunc panics.\n//\n//\tassert.Panicsf(t, func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc Panicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Panics(t, f, append([]interface{}{msg}, args...)...)\n}\n\n// PanicsWithErrorf asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\tassert.PanicsWithErrorf(t, \"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc PanicsWithErrorf(t TestingT, errString string, f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn PanicsWithError(t, errString, f, append([]interface{}{msg}, args...)...)\n}\n\n// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\tassert.PanicsWithValuef(t, \"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc PanicsWithValuef(t TestingT, expected interface{}, f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn PanicsWithValue(t, expected, f, append([]interface{}{msg}, args...)...)\n}\n\n// Positivef asserts that the specified element is positive\n//\n//\tassert.Positivef(t, 1, \"error message %s\", \"formatted\")\n//\tassert.Positivef(t, 1.23, \"error message %s\", \"formatted\")\nfunc Positivef(t TestingT, e interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Positive(t, e, append([]interface{}{msg}, args...)...)\n}\n\n// Regexpf asserts that a specified regexp matches a string.\n//\n//\tassert.Regexpf(t, regexp.MustCompile(\"start\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\tassert.Regexpf(t, \"start...$\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Regexp(t, rx, str, append([]interface{}{msg}, args...)...)\n}\n\n// Samef asserts that two pointers reference the same object.\n//\n//\tassert.Samef(t, ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc Samef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Same(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// Subsetf asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\tassert.Subsetf(t, [1, 2, 3], [1, 2], \"error message %s\", \"formatted\")\n//\tassert.Subsetf(t, {\"x\": 1, \"y\": 2}, {\"x\": 1}, \"error message %s\", \"formatted\")\n//\tassert.Subsetf(t, [1, 2, 3], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\tassert.Subsetf(t, {\"x\": 1, \"y\": 2}, [\"x\"], \"error message %s\", \"formatted\")\nfunc Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Subset(t, list, subset, append([]interface{}{msg}, args...)...)\n}\n\n// Truef asserts that the specified value is true.\n//\n//\tassert.Truef(t, myBool, \"error message %s\", \"formatted\")\nfunc Truef(t TestingT, value bool, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn True(t, value, append([]interface{}{msg}, args...)...)\n}\n\n// WithinDurationf asserts that the two times are within duration delta of each other.\n//\n//\tassert.WithinDurationf(t, time.Now(), time.Now(), 10*time.Second, \"error message %s\", \"formatted\")\nfunc WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn WithinDuration(t, expected, actual, delta, append([]interface{}{msg}, args...)...)\n}\n\n// WithinRangef asserts that a time is within a time range (inclusive).\n//\n//\tassert.WithinRangef(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), \"error message %s\", \"formatted\")\nfunc WithinRangef(t TestingT, actual time.Time, start time.Time, end time.Time, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn WithinRange(t, actual, start, end, append([]interface{}{msg}, args...)...)\n}\n\n// YAMLEqf asserts that two YAML strings are equivalent.\nfunc YAMLEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn YAMLEq(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// Zerof asserts that i is the zero value for its type.\nfunc Zerof(t TestingT, i interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Zero(t, i, append([]interface{}{msg}, args...)...)\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl",
    "content": "{{.CommentFormat}}\nfunc {{.DocInfo.Name}}f(t TestingT, {{.ParamsFormat}}) bool {\n\tif h, ok := t.(tHelper); ok { h.Helper() }\n\treturn {{.DocInfo.Name}}(t, {{.ForwardedParamsFormat}})\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/assertion_forward.go",
    "content": "// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.\n\npackage assert\n\nimport (\n\thttp \"net/http\"\n\turl \"net/url\"\n\ttime \"time\"\n)\n\n// Condition uses a Comparison to assert a complex condition.\nfunc (a *Assertions) Condition(comp Comparison, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Condition(a.t, comp, msgAndArgs...)\n}\n\n// Conditionf uses a Comparison to assert a complex condition.\nfunc (a *Assertions) Conditionf(comp Comparison, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Conditionf(a.t, comp, msg, args...)\n}\n\n// Contains asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\ta.Contains(\"Hello World\", \"World\")\n//\ta.Contains([\"Hello\", \"World\"], \"World\")\n//\ta.Contains({\"Hello\": \"World\"}, \"Hello\")\nfunc (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Contains(a.t, s, contains, msgAndArgs...)\n}\n\n// Containsf asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\ta.Containsf(\"Hello World\", \"World\", \"error message %s\", \"formatted\")\n//\ta.Containsf([\"Hello\", \"World\"], \"World\", \"error message %s\", \"formatted\")\n//\ta.Containsf({\"Hello\": \"World\"}, \"Hello\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Containsf(s interface{}, contains interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Containsf(a.t, s, contains, msg, args...)\n}\n\n// DirExists checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn DirExists(a.t, path, msgAndArgs...)\n}\n\n// DirExistsf checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc (a *Assertions) DirExistsf(path string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn DirExistsf(a.t, path, msg, args...)\n}\n\n// ElementsMatch asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// a.ElementsMatch([1, 3, 2, 3], [1, 3, 3, 2])\nfunc (a *Assertions) ElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ElementsMatch(a.t, listA, listB, msgAndArgs...)\n}\n\n// ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// a.ElementsMatchf([1, 3, 2, 3], [1, 3, 3, 2], \"error message %s\", \"formatted\")\nfunc (a *Assertions) ElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ElementsMatchf(a.t, listA, listB, msg, args...)\n}\n\n// Empty asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\ta.Empty(obj)\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Empty(a.t, object, msgAndArgs...)\n}\n\n// Emptyf asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\ta.Emptyf(obj, \"error message %s\", \"formatted\")\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc (a *Assertions) Emptyf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Emptyf(a.t, object, msg, args...)\n}\n\n// Equal asserts that two objects are equal.\n//\n//\ta.Equal(123, 123)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc (a *Assertions) Equal(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Equal(a.t, expected, actual, msgAndArgs...)\n}\n\n// EqualError asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.EqualError(err,  expectedErrorString)\nfunc (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualError(a.t, theError, errString, msgAndArgs...)\n}\n\n// EqualErrorf asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.EqualErrorf(err,  expectedErrorString, \"error message %s\", \"formatted\")\nfunc (a *Assertions) EqualErrorf(theError error, errString string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualErrorf(a.t, theError, errString, msg, args...)\n}\n\n// EqualExportedValues asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t a.EqualExportedValues(S{1, 2}, S{1, 3}) => true\n//\t a.EqualExportedValues(S{1, 2}, S{2, 3}) => false\nfunc (a *Assertions) EqualExportedValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualExportedValues(a.t, expected, actual, msgAndArgs...)\n}\n\n// EqualExportedValuesf asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t a.EqualExportedValuesf(S{1, 2}, S{1, 3}, \"error message %s\", \"formatted\") => true\n//\t a.EqualExportedValuesf(S{1, 2}, S{2, 3}, \"error message %s\", \"formatted\") => false\nfunc (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualExportedValuesf(a.t, expected, actual, msg, args...)\n}\n\n// EqualValues asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\ta.EqualValues(uint32(123), int32(123))\nfunc (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualValues(a.t, expected, actual, msgAndArgs...)\n}\n\n// EqualValuesf asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\ta.EqualValuesf(uint32(123), int32(123), \"error message %s\", \"formatted\")\nfunc (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualValuesf(a.t, expected, actual, msg, args...)\n}\n\n// Equalf asserts that two objects are equal.\n//\n//\ta.Equalf(123, 123, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc (a *Assertions) Equalf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Equalf(a.t, expected, actual, msg, args...)\n}\n\n// Error asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\ta.Error(err)\nfunc (a *Assertions) Error(err error, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Error(a.t, err, msgAndArgs...)\n}\n\n// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc (a *Assertions) ErrorAs(err error, target interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorAs(a.t, err, target, msgAndArgs...)\n}\n\n// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc (a *Assertions) ErrorAsf(err error, target interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorAsf(a.t, err, target, msg, args...)\n}\n\n// ErrorContains asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.ErrorContains(err,  expectedErrorSubString)\nfunc (a *Assertions) ErrorContains(theError error, contains string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorContains(a.t, theError, contains, msgAndArgs...)\n}\n\n// ErrorContainsf asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.ErrorContainsf(err,  expectedErrorSubString, \"error message %s\", \"formatted\")\nfunc (a *Assertions) ErrorContainsf(theError error, contains string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorContainsf(a.t, theError, contains, msg, args...)\n}\n\n// ErrorIs asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) ErrorIs(err error, target error, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorIs(a.t, err, target, msgAndArgs...)\n}\n\n// ErrorIsf asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) ErrorIsf(err error, target error, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorIsf(a.t, err, target, msg, args...)\n}\n\n// Errorf asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\ta.Errorf(err, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Errorf(err error, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Errorf(a.t, err, msg, args...)\n}\n\n// Eventually asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\ta.Eventually(func() bool { return true; }, time.Second, 10*time.Millisecond)\nfunc (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Eventually(a.t, condition, waitFor, tick, msgAndArgs...)\n}\n\n// EventuallyWithT asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\ta.EventuallyWithT(func(c *assert.CollectT) {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\tassert.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc (a *Assertions) EventuallyWithT(condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EventuallyWithT(a.t, condition, waitFor, tick, msgAndArgs...)\n}\n\n// EventuallyWithTf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\ta.EventuallyWithTf(func(c *assert.CollectT, \"error message %s\", \"formatted\") {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\tassert.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc (a *Assertions) EventuallyWithTf(condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EventuallyWithTf(a.t, condition, waitFor, tick, msg, args...)\n}\n\n// Eventuallyf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\ta.Eventuallyf(func() bool { return true; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Eventuallyf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Eventuallyf(a.t, condition, waitFor, tick, msg, args...)\n}\n\n// Exactly asserts that two objects are equal in value and type.\n//\n//\ta.Exactly(int32(123), int64(123))\nfunc (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Exactly(a.t, expected, actual, msgAndArgs...)\n}\n\n// Exactlyf asserts that two objects are equal in value and type.\n//\n//\ta.Exactlyf(int32(123), int64(123), \"error message %s\", \"formatted\")\nfunc (a *Assertions) Exactlyf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Exactlyf(a.t, expected, actual, msg, args...)\n}\n\n// Fail reports a failure through\nfunc (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Fail(a.t, failureMessage, msgAndArgs...)\n}\n\n// FailNow fails test\nfunc (a *Assertions) FailNow(failureMessage string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn FailNow(a.t, failureMessage, msgAndArgs...)\n}\n\n// FailNowf fails test\nfunc (a *Assertions) FailNowf(failureMessage string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn FailNowf(a.t, failureMessage, msg, args...)\n}\n\n// Failf reports a failure through\nfunc (a *Assertions) Failf(failureMessage string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Failf(a.t, failureMessage, msg, args...)\n}\n\n// False asserts that the specified value is false.\n//\n//\ta.False(myBool)\nfunc (a *Assertions) False(value bool, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn False(a.t, value, msgAndArgs...)\n}\n\n// Falsef asserts that the specified value is false.\n//\n//\ta.Falsef(myBool, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Falsef(value bool, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Falsef(a.t, value, msg, args...)\n}\n\n// FileExists checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn FileExists(a.t, path, msgAndArgs...)\n}\n\n// FileExistsf checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn FileExistsf(a.t, path, msg, args...)\n}\n\n// Greater asserts that the first element is greater than the second\n//\n//\ta.Greater(2, 1)\n//\ta.Greater(float64(2), float64(1))\n//\ta.Greater(\"b\", \"a\")\nfunc (a *Assertions) Greater(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Greater(a.t, e1, e2, msgAndArgs...)\n}\n\n// GreaterOrEqual asserts that the first element is greater than or equal to the second\n//\n//\ta.GreaterOrEqual(2, 1)\n//\ta.GreaterOrEqual(2, 2)\n//\ta.GreaterOrEqual(\"b\", \"a\")\n//\ta.GreaterOrEqual(\"b\", \"b\")\nfunc (a *Assertions) GreaterOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn GreaterOrEqual(a.t, e1, e2, msgAndArgs...)\n}\n\n// GreaterOrEqualf asserts that the first element is greater than or equal to the second\n//\n//\ta.GreaterOrEqualf(2, 1, \"error message %s\", \"formatted\")\n//\ta.GreaterOrEqualf(2, 2, \"error message %s\", \"formatted\")\n//\ta.GreaterOrEqualf(\"b\", \"a\", \"error message %s\", \"formatted\")\n//\ta.GreaterOrEqualf(\"b\", \"b\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) GreaterOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn GreaterOrEqualf(a.t, e1, e2, msg, args...)\n}\n\n// Greaterf asserts that the first element is greater than the second\n//\n//\ta.Greaterf(2, 1, \"error message %s\", \"formatted\")\n//\ta.Greaterf(float64(2), float64(1), \"error message %s\", \"formatted\")\n//\ta.Greaterf(\"b\", \"a\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Greaterf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Greaterf(a.t, e1, e2, msg, args...)\n}\n\n// HTTPBodyContains asserts that a specified handler returns a\n// body that contains a string.\n//\n//\ta.HTTPBodyContains(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPBodyContains(a.t, handler, method, url, values, str, msgAndArgs...)\n}\n\n// HTTPBodyContainsf asserts that a specified handler returns a\n// body that contains a string.\n//\n//\ta.HTTPBodyContainsf(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPBodyContainsf(a.t, handler, method, url, values, str, msg, args...)\n}\n\n// HTTPBodyNotContains asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\ta.HTTPBodyNotContains(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPBodyNotContains(a.t, handler, method, url, values, str, msgAndArgs...)\n}\n\n// HTTPBodyNotContainsf asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\ta.HTTPBodyNotContainsf(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyNotContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPBodyNotContainsf(a.t, handler, method, url, values, str, msg, args...)\n}\n\n// HTTPError asserts that a specified handler returns an error status code.\n//\n//\ta.HTTPError(myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPError(a.t, handler, method, url, values, msgAndArgs...)\n}\n\n// HTTPErrorf asserts that a specified handler returns an error status code.\n//\n//\ta.HTTPErrorf(myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPErrorf(a.t, handler, method, url, values, msg, args...)\n}\n\n// HTTPRedirect asserts that a specified handler returns a redirect status code.\n//\n//\ta.HTTPRedirect(myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPRedirect(a.t, handler, method, url, values, msgAndArgs...)\n}\n\n// HTTPRedirectf asserts that a specified handler returns a redirect status code.\n//\n//\ta.HTTPRedirectf(myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPRedirectf(a.t, handler, method, url, values, msg, args...)\n}\n\n// HTTPStatusCode asserts that a specified handler returns a specified status code.\n//\n//\ta.HTTPStatusCode(myHandler, \"GET\", \"/notImplemented\", nil, 501)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPStatusCode(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPStatusCode(a.t, handler, method, url, values, statuscode, msgAndArgs...)\n}\n\n// HTTPStatusCodef asserts that a specified handler returns a specified status code.\n//\n//\ta.HTTPStatusCodef(myHandler, \"GET\", \"/notImplemented\", nil, 501, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPStatusCodef(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPStatusCodef(a.t, handler, method, url, values, statuscode, msg, args...)\n}\n\n// HTTPSuccess asserts that a specified handler returns a success status code.\n//\n//\ta.HTTPSuccess(myHandler, \"POST\", \"http://www.google.com\", nil)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPSuccess(a.t, handler, method, url, values, msgAndArgs...)\n}\n\n// HTTPSuccessf asserts that a specified handler returns a success status code.\n//\n//\ta.HTTPSuccessf(myHandler, \"POST\", \"http://www.google.com\", nil, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPSuccessf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPSuccessf(a.t, handler, method, url, values, msg, args...)\n}\n\n// Implements asserts that an object is implemented by the specified interface.\n//\n//\ta.Implements((*MyInterface)(nil), new(MyObject))\nfunc (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Implements(a.t, interfaceObject, object, msgAndArgs...)\n}\n\n// Implementsf asserts that an object is implemented by the specified interface.\n//\n//\ta.Implementsf((*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Implementsf(a.t, interfaceObject, object, msg, args...)\n}\n\n// InDelta asserts that the two numerals are within delta of each other.\n//\n//\ta.InDelta(math.Pi, 22/7.0, 0.01)\nfunc (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDelta(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc (a *Assertions) InDeltaMapValues(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDeltaMapValues(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc (a *Assertions) InDeltaMapValuesf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDeltaMapValuesf(a.t, expected, actual, delta, msg, args...)\n}\n\n// InDeltaSlice is the same as InDelta, except it compares two slices.\nfunc (a *Assertions) InDeltaSlice(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDeltaSlice(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InDeltaSlicef is the same as InDelta, except it compares two slices.\nfunc (a *Assertions) InDeltaSlicef(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDeltaSlicef(a.t, expected, actual, delta, msg, args...)\n}\n\n// InDeltaf asserts that the two numerals are within delta of each other.\n//\n//\ta.InDeltaf(math.Pi, 22/7.0, 0.01, \"error message %s\", \"formatted\")\nfunc (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDeltaf(a.t, expected, actual, delta, msg, args...)\n}\n\n// InEpsilon asserts that expected and actual have a relative error less than epsilon\nfunc (a *Assertions) InEpsilon(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InEpsilon(a.t, expected, actual, epsilon, msgAndArgs...)\n}\n\n// InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices.\nfunc (a *Assertions) InEpsilonSlice(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InEpsilonSlice(a.t, expected, actual, epsilon, msgAndArgs...)\n}\n\n// InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices.\nfunc (a *Assertions) InEpsilonSlicef(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InEpsilonSlicef(a.t, expected, actual, epsilon, msg, args...)\n}\n\n// InEpsilonf asserts that expected and actual have a relative error less than epsilon\nfunc (a *Assertions) InEpsilonf(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InEpsilonf(a.t, expected, actual, epsilon, msg, args...)\n}\n\n// IsDecreasing asserts that the collection is decreasing\n//\n//\ta.IsDecreasing([]int{2, 1, 0})\n//\ta.IsDecreasing([]float{2, 1})\n//\ta.IsDecreasing([]string{\"b\", \"a\"})\nfunc (a *Assertions) IsDecreasing(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsDecreasing(a.t, object, msgAndArgs...)\n}\n\n// IsDecreasingf asserts that the collection is decreasing\n//\n//\ta.IsDecreasingf([]int{2, 1, 0}, \"error message %s\", \"formatted\")\n//\ta.IsDecreasingf([]float{2, 1}, \"error message %s\", \"formatted\")\n//\ta.IsDecreasingf([]string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsDecreasingf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsDecreasingf(a.t, object, msg, args...)\n}\n\n// IsIncreasing asserts that the collection is increasing\n//\n//\ta.IsIncreasing([]int{1, 2, 3})\n//\ta.IsIncreasing([]float{1, 2})\n//\ta.IsIncreasing([]string{\"a\", \"b\"})\nfunc (a *Assertions) IsIncreasing(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsIncreasing(a.t, object, msgAndArgs...)\n}\n\n// IsIncreasingf asserts that the collection is increasing\n//\n//\ta.IsIncreasingf([]int{1, 2, 3}, \"error message %s\", \"formatted\")\n//\ta.IsIncreasingf([]float{1, 2}, \"error message %s\", \"formatted\")\n//\ta.IsIncreasingf([]string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsIncreasingf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsIncreasingf(a.t, object, msg, args...)\n}\n\n// IsNonDecreasing asserts that the collection is not decreasing\n//\n//\ta.IsNonDecreasing([]int{1, 1, 2})\n//\ta.IsNonDecreasing([]float{1, 2})\n//\ta.IsNonDecreasing([]string{\"a\", \"b\"})\nfunc (a *Assertions) IsNonDecreasing(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNonDecreasing(a.t, object, msgAndArgs...)\n}\n\n// IsNonDecreasingf asserts that the collection is not decreasing\n//\n//\ta.IsNonDecreasingf([]int{1, 1, 2}, \"error message %s\", \"formatted\")\n//\ta.IsNonDecreasingf([]float{1, 2}, \"error message %s\", \"formatted\")\n//\ta.IsNonDecreasingf([]string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsNonDecreasingf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNonDecreasingf(a.t, object, msg, args...)\n}\n\n// IsNonIncreasing asserts that the collection is not increasing\n//\n//\ta.IsNonIncreasing([]int{2, 1, 1})\n//\ta.IsNonIncreasing([]float{2, 1})\n//\ta.IsNonIncreasing([]string{\"b\", \"a\"})\nfunc (a *Assertions) IsNonIncreasing(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNonIncreasing(a.t, object, msgAndArgs...)\n}\n\n// IsNonIncreasingf asserts that the collection is not increasing\n//\n//\ta.IsNonIncreasingf([]int{2, 1, 1}, \"error message %s\", \"formatted\")\n//\ta.IsNonIncreasingf([]float{2, 1}, \"error message %s\", \"formatted\")\n//\ta.IsNonIncreasingf([]string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsNonIncreasingf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNonIncreasingf(a.t, object, msg, args...)\n}\n\n// IsNotType asserts that the specified objects are not of the same type.\n//\n//\ta.IsNotType(&NotMyStruct{}, &MyStruct{})\nfunc (a *Assertions) IsNotType(theType interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNotType(a.t, theType, object, msgAndArgs...)\n}\n\n// IsNotTypef asserts that the specified objects are not of the same type.\n//\n//\ta.IsNotTypef(&NotMyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsNotTypef(theType interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNotTypef(a.t, theType, object, msg, args...)\n}\n\n// IsType asserts that the specified objects are of the same type.\n//\n//\ta.IsType(&MyStruct{}, &MyStruct{})\nfunc (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsType(a.t, expectedType, object, msgAndArgs...)\n}\n\n// IsTypef asserts that the specified objects are of the same type.\n//\n//\ta.IsTypef(&MyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsTypef(expectedType interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsTypef(a.t, expectedType, object, msg, args...)\n}\n\n// JSONEq asserts that two JSON strings are equivalent.\n//\n//\ta.JSONEq(`{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`)\nfunc (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn JSONEq(a.t, expected, actual, msgAndArgs...)\n}\n\n// JSONEqf asserts that two JSON strings are equivalent.\n//\n//\ta.JSONEqf(`{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`, \"error message %s\", \"formatted\")\nfunc (a *Assertions) JSONEqf(expected string, actual string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn JSONEqf(a.t, expected, actual, msg, args...)\n}\n\n// Len asserts that the specified object has specific length.\n// Len also fails if the object has a type that len() not accept.\n//\n//\ta.Len(mySlice, 3)\nfunc (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Len(a.t, object, length, msgAndArgs...)\n}\n\n// Lenf asserts that the specified object has specific length.\n// Lenf also fails if the object has a type that len() not accept.\n//\n//\ta.Lenf(mySlice, 3, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Lenf(object interface{}, length int, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Lenf(a.t, object, length, msg, args...)\n}\n\n// Less asserts that the first element is less than the second\n//\n//\ta.Less(1, 2)\n//\ta.Less(float64(1), float64(2))\n//\ta.Less(\"a\", \"b\")\nfunc (a *Assertions) Less(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Less(a.t, e1, e2, msgAndArgs...)\n}\n\n// LessOrEqual asserts that the first element is less than or equal to the second\n//\n//\ta.LessOrEqual(1, 2)\n//\ta.LessOrEqual(2, 2)\n//\ta.LessOrEqual(\"a\", \"b\")\n//\ta.LessOrEqual(\"b\", \"b\")\nfunc (a *Assertions) LessOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn LessOrEqual(a.t, e1, e2, msgAndArgs...)\n}\n\n// LessOrEqualf asserts that the first element is less than or equal to the second\n//\n//\ta.LessOrEqualf(1, 2, \"error message %s\", \"formatted\")\n//\ta.LessOrEqualf(2, 2, \"error message %s\", \"formatted\")\n//\ta.LessOrEqualf(\"a\", \"b\", \"error message %s\", \"formatted\")\n//\ta.LessOrEqualf(\"b\", \"b\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) LessOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn LessOrEqualf(a.t, e1, e2, msg, args...)\n}\n\n// Lessf asserts that the first element is less than the second\n//\n//\ta.Lessf(1, 2, \"error message %s\", \"formatted\")\n//\ta.Lessf(float64(1), float64(2), \"error message %s\", \"formatted\")\n//\ta.Lessf(\"a\", \"b\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Lessf(a.t, e1, e2, msg, args...)\n}\n\n// Negative asserts that the specified element is negative\n//\n//\ta.Negative(-1)\n//\ta.Negative(-1.23)\nfunc (a *Assertions) Negative(e interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Negative(a.t, e, msgAndArgs...)\n}\n\n// Negativef asserts that the specified element is negative\n//\n//\ta.Negativef(-1, \"error message %s\", \"formatted\")\n//\ta.Negativef(-1.23, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Negativef(e interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Negativef(a.t, e, msg, args...)\n}\n\n// Never asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\ta.Never(func() bool { return false; }, time.Second, 10*time.Millisecond)\nfunc (a *Assertions) Never(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Never(a.t, condition, waitFor, tick, msgAndArgs...)\n}\n\n// Neverf asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\ta.Neverf(func() bool { return false; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Neverf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Neverf(a.t, condition, waitFor, tick, msg, args...)\n}\n\n// Nil asserts that the specified object is nil.\n//\n//\ta.Nil(err)\nfunc (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Nil(a.t, object, msgAndArgs...)\n}\n\n// Nilf asserts that the specified object is nil.\n//\n//\ta.Nilf(err, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Nilf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Nilf(a.t, object, msg, args...)\n}\n\n// NoDirExists checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc (a *Assertions) NoDirExists(path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoDirExists(a.t, path, msgAndArgs...)\n}\n\n// NoDirExistsf checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc (a *Assertions) NoDirExistsf(path string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoDirExistsf(a.t, path, msg, args...)\n}\n\n// NoError asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if a.NoError(err) {\n//\t\t   assert.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc (a *Assertions) NoError(err error, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoError(a.t, err, msgAndArgs...)\n}\n\n// NoErrorf asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if a.NoErrorf(err, \"error message %s\", \"formatted\") {\n//\t\t   assert.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc (a *Assertions) NoErrorf(err error, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoErrorf(a.t, err, msg, args...)\n}\n\n// NoFileExists checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc (a *Assertions) NoFileExists(path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoFileExists(a.t, path, msgAndArgs...)\n}\n\n// NoFileExistsf checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc (a *Assertions) NoFileExistsf(path string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoFileExistsf(a.t, path, msg, args...)\n}\n\n// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\ta.NotContains(\"Hello World\", \"Earth\")\n//\ta.NotContains([\"Hello\", \"World\"], \"Earth\")\n//\ta.NotContains({\"Hello\": \"World\"}, \"Earth\")\nfunc (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotContains(a.t, s, contains, msgAndArgs...)\n}\n\n// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\ta.NotContainsf(\"Hello World\", \"Earth\", \"error message %s\", \"formatted\")\n//\ta.NotContainsf([\"Hello\", \"World\"], \"Earth\", \"error message %s\", \"formatted\")\n//\ta.NotContainsf({\"Hello\": \"World\"}, \"Earth\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotContainsf(a.t, s, contains, msg, args...)\n}\n\n// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// a.NotElementsMatch([1, 1, 2, 3], [1, 1, 2, 3]) -> false\n//\n// a.NotElementsMatch([1, 1, 2, 3], [1, 2, 3]) -> true\n//\n// a.NotElementsMatch([1, 2, 3], [1, 2, 4]) -> true\nfunc (a *Assertions) NotElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotElementsMatch(a.t, listA, listB, msgAndArgs...)\n}\n\n// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// a.NotElementsMatchf([1, 1, 2, 3], [1, 1, 2, 3], \"error message %s\", \"formatted\") -> false\n//\n// a.NotElementsMatchf([1, 1, 2, 3], [1, 2, 3], \"error message %s\", \"formatted\") -> true\n//\n// a.NotElementsMatchf([1, 2, 3], [1, 2, 4], \"error message %s\", \"formatted\") -> true\nfunc (a *Assertions) NotElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotElementsMatchf(a.t, listA, listB, msg, args...)\n}\n\n// NotEmpty asserts that the specified object is NOT [Empty].\n//\n//\tif a.NotEmpty(obj) {\n//\t  assert.Equal(t, \"two\", obj[1])\n//\t}\nfunc (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEmpty(a.t, object, msgAndArgs...)\n}\n\n// NotEmptyf asserts that the specified object is NOT [Empty].\n//\n//\tif a.NotEmptyf(obj, \"error message %s\", \"formatted\") {\n//\t  assert.Equal(t, \"two\", obj[1])\n//\t}\nfunc (a *Assertions) NotEmptyf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEmptyf(a.t, object, msg, args...)\n}\n\n// NotEqual asserts that the specified values are NOT equal.\n//\n//\ta.NotEqual(obj1, obj2)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc (a *Assertions) NotEqual(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEqual(a.t, expected, actual, msgAndArgs...)\n}\n\n// NotEqualValues asserts that two objects are not equal even when converted to the same type\n//\n//\ta.NotEqualValues(obj1, obj2)\nfunc (a *Assertions) NotEqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEqualValues(a.t, expected, actual, msgAndArgs...)\n}\n\n// NotEqualValuesf asserts that two objects are not equal even when converted to the same type\n//\n//\ta.NotEqualValuesf(obj1, obj2, \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotEqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEqualValuesf(a.t, expected, actual, msg, args...)\n}\n\n// NotEqualf asserts that the specified values are NOT equal.\n//\n//\ta.NotEqualf(obj1, obj2, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEqualf(a.t, expected, actual, msg, args...)\n}\n\n// NotErrorAs asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc (a *Assertions) NotErrorAs(err error, target interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotErrorAs(a.t, err, target, msgAndArgs...)\n}\n\n// NotErrorAsf asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc (a *Assertions) NotErrorAsf(err error, target interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotErrorAsf(a.t, err, target, msg, args...)\n}\n\n// NotErrorIs asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotErrorIs(a.t, err, target, msgAndArgs...)\n}\n\n// NotErrorIsf asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotErrorIsf(a.t, err, target, msg, args...)\n}\n\n// NotImplements asserts that an object does not implement the specified interface.\n//\n//\ta.NotImplements((*MyInterface)(nil), new(MyObject))\nfunc (a *Assertions) NotImplements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotImplements(a.t, interfaceObject, object, msgAndArgs...)\n}\n\n// NotImplementsf asserts that an object does not implement the specified interface.\n//\n//\ta.NotImplementsf((*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotImplementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotImplementsf(a.t, interfaceObject, object, msg, args...)\n}\n\n// NotNil asserts that the specified object is not nil.\n//\n//\ta.NotNil(err)\nfunc (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotNil(a.t, object, msgAndArgs...)\n}\n\n// NotNilf asserts that the specified object is not nil.\n//\n//\ta.NotNilf(err, \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotNilf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotNilf(a.t, object, msg, args...)\n}\n\n// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\ta.NotPanics(func(){ RemainCalm() })\nfunc (a *Assertions) NotPanics(f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotPanics(a.t, f, msgAndArgs...)\n}\n\n// NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\ta.NotPanicsf(func(){ RemainCalm() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotPanicsf(f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotPanicsf(a.t, f, msg, args...)\n}\n\n// NotRegexp asserts that a specified regexp does not match a string.\n//\n//\ta.NotRegexp(regexp.MustCompile(\"starts\"), \"it's starting\")\n//\ta.NotRegexp(\"^start\", \"it's not starting\")\nfunc (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotRegexp(a.t, rx, str, msgAndArgs...)\n}\n\n// NotRegexpf asserts that a specified regexp does not match a string.\n//\n//\ta.NotRegexpf(regexp.MustCompile(\"starts\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\ta.NotRegexpf(\"^start\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotRegexpf(a.t, rx, str, msg, args...)\n}\n\n// NotSame asserts that two pointers do not reference the same object.\n//\n//\ta.NotSame(ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) NotSame(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotSame(a.t, expected, actual, msgAndArgs...)\n}\n\n// NotSamef asserts that two pointers do not reference the same object.\n//\n//\ta.NotSamef(ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotSamef(a.t, expected, actual, msg, args...)\n}\n\n// NotSubset asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.NotSubset([1, 3, 4], [1, 2])\n//\ta.NotSubset({\"x\": 1, \"y\": 2}, {\"z\": 3})\n//\ta.NotSubset([1, 3, 4], {1: \"one\", 2: \"two\"})\n//\ta.NotSubset({\"x\": 1, \"y\": 2}, [\"z\"])\nfunc (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotSubset(a.t, list, subset, msgAndArgs...)\n}\n\n// NotSubsetf asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.NotSubsetf([1, 3, 4], [1, 2], \"error message %s\", \"formatted\")\n//\ta.NotSubsetf({\"x\": 1, \"y\": 2}, {\"z\": 3}, \"error message %s\", \"formatted\")\n//\ta.NotSubsetf([1, 3, 4], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\ta.NotSubsetf({\"x\": 1, \"y\": 2}, [\"z\"], \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotSubsetf(list interface{}, subset interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotSubsetf(a.t, list, subset, msg, args...)\n}\n\n// NotZero asserts that i is not the zero value for its type.\nfunc (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotZero(a.t, i, msgAndArgs...)\n}\n\n// NotZerof asserts that i is not the zero value for its type.\nfunc (a *Assertions) NotZerof(i interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotZerof(a.t, i, msg, args...)\n}\n\n// Panics asserts that the code inside the specified PanicTestFunc panics.\n//\n//\ta.Panics(func(){ GoCrazy() })\nfunc (a *Assertions) Panics(f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Panics(a.t, f, msgAndArgs...)\n}\n\n// PanicsWithError asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\ta.PanicsWithError(\"crazy error\", func(){ GoCrazy() })\nfunc (a *Assertions) PanicsWithError(errString string, f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn PanicsWithError(a.t, errString, f, msgAndArgs...)\n}\n\n// PanicsWithErrorf asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\ta.PanicsWithErrorf(\"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) PanicsWithErrorf(errString string, f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn PanicsWithErrorf(a.t, errString, f, msg, args...)\n}\n\n// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\ta.PanicsWithValue(\"crazy error\", func(){ GoCrazy() })\nfunc (a *Assertions) PanicsWithValue(expected interface{}, f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn PanicsWithValue(a.t, expected, f, msgAndArgs...)\n}\n\n// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\ta.PanicsWithValuef(\"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) PanicsWithValuef(expected interface{}, f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn PanicsWithValuef(a.t, expected, f, msg, args...)\n}\n\n// Panicsf asserts that the code inside the specified PanicTestFunc panics.\n//\n//\ta.Panicsf(func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Panicsf(f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Panicsf(a.t, f, msg, args...)\n}\n\n// Positive asserts that the specified element is positive\n//\n//\ta.Positive(1)\n//\ta.Positive(1.23)\nfunc (a *Assertions) Positive(e interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Positive(a.t, e, msgAndArgs...)\n}\n\n// Positivef asserts that the specified element is positive\n//\n//\ta.Positivef(1, \"error message %s\", \"formatted\")\n//\ta.Positivef(1.23, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Positivef(e interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Positivef(a.t, e, msg, args...)\n}\n\n// Regexp asserts that a specified regexp matches a string.\n//\n//\ta.Regexp(regexp.MustCompile(\"start\"), \"it's starting\")\n//\ta.Regexp(\"start...$\", \"it's not starting\")\nfunc (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Regexp(a.t, rx, str, msgAndArgs...)\n}\n\n// Regexpf asserts that a specified regexp matches a string.\n//\n//\ta.Regexpf(regexp.MustCompile(\"start\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\ta.Regexpf(\"start...$\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Regexpf(a.t, rx, str, msg, args...)\n}\n\n// Same asserts that two pointers reference the same object.\n//\n//\ta.Same(ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) Same(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Same(a.t, expected, actual, msgAndArgs...)\n}\n\n// Samef asserts that two pointers reference the same object.\n//\n//\ta.Samef(ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) Samef(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Samef(a.t, expected, actual, msg, args...)\n}\n\n// Subset asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.Subset([1, 2, 3], [1, 2])\n//\ta.Subset({\"x\": 1, \"y\": 2}, {\"x\": 1})\n//\ta.Subset([1, 2, 3], {1: \"one\", 2: \"two\"})\n//\ta.Subset({\"x\": 1, \"y\": 2}, [\"x\"])\nfunc (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Subset(a.t, list, subset, msgAndArgs...)\n}\n\n// Subsetf asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.Subsetf([1, 2, 3], [1, 2], \"error message %s\", \"formatted\")\n//\ta.Subsetf({\"x\": 1, \"y\": 2}, {\"x\": 1}, \"error message %s\", \"formatted\")\n//\ta.Subsetf([1, 2, 3], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\ta.Subsetf({\"x\": 1, \"y\": 2}, [\"x\"], \"error message %s\", \"formatted\")\nfunc (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Subsetf(a.t, list, subset, msg, args...)\n}\n\n// True asserts that the specified value is true.\n//\n//\ta.True(myBool)\nfunc (a *Assertions) True(value bool, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn True(a.t, value, msgAndArgs...)\n}\n\n// Truef asserts that the specified value is true.\n//\n//\ta.Truef(myBool, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Truef(value bool, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Truef(a.t, value, msg, args...)\n}\n\n// WithinDuration asserts that the two times are within duration delta of each other.\n//\n//\ta.WithinDuration(time.Now(), time.Now(), 10*time.Second)\nfunc (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn WithinDuration(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// WithinDurationf asserts that the two times are within duration delta of each other.\n//\n//\ta.WithinDurationf(time.Now(), time.Now(), 10*time.Second, \"error message %s\", \"formatted\")\nfunc (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn WithinDurationf(a.t, expected, actual, delta, msg, args...)\n}\n\n// WithinRange asserts that a time is within a time range (inclusive).\n//\n//\ta.WithinRange(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second))\nfunc (a *Assertions) WithinRange(actual time.Time, start time.Time, end time.Time, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn WithinRange(a.t, actual, start, end, msgAndArgs...)\n}\n\n// WithinRangef asserts that a time is within a time range (inclusive).\n//\n//\ta.WithinRangef(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), \"error message %s\", \"formatted\")\nfunc (a *Assertions) WithinRangef(actual time.Time, start time.Time, end time.Time, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn WithinRangef(a.t, actual, start, end, msg, args...)\n}\n\n// YAMLEq asserts that two YAML strings are equivalent.\nfunc (a *Assertions) YAMLEq(expected string, actual string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn YAMLEq(a.t, expected, actual, msgAndArgs...)\n}\n\n// YAMLEqf asserts that two YAML strings are equivalent.\nfunc (a *Assertions) YAMLEqf(expected string, actual string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn YAMLEqf(a.t, expected, actual, msg, args...)\n}\n\n// Zero asserts that i is the zero value for its type.\nfunc (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Zero(a.t, i, msgAndArgs...)\n}\n\n// Zerof asserts that i is the zero value for its type.\nfunc (a *Assertions) Zerof(i interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Zerof(a.t, i, msg, args...)\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl",
    "content": "{{.CommentWithoutT \"a\"}}\nfunc (a *Assertions) {{.DocInfo.Name}}({{.Params}}) bool {\n\tif h, ok := a.t.(tHelper); ok { h.Helper() }\n\treturn {{.DocInfo.Name}}(a.t, {{.ForwardedParams}})\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/assertion_order.go",
    "content": "package assert\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n)\n\n// isOrdered checks that collection contains orderable elements.\nfunc isOrdered(t TestingT, object interface{}, allowedComparesResults []compareResult, failMessage string, msgAndArgs ...interface{}) bool {\n\tobjKind := reflect.TypeOf(object).Kind()\n\tif objKind != reflect.Slice && objKind != reflect.Array {\n\t\treturn false\n\t}\n\n\tobjValue := reflect.ValueOf(object)\n\tobjLen := objValue.Len()\n\n\tif objLen <= 1 {\n\t\treturn true\n\t}\n\n\tvalue := objValue.Index(0)\n\tvalueInterface := value.Interface()\n\tfirstValueKind := value.Kind()\n\n\tfor i := 1; i < objLen; i++ {\n\t\tprevValue := value\n\t\tprevValueInterface := valueInterface\n\n\t\tvalue = objValue.Index(i)\n\t\tvalueInterface = value.Interface()\n\n\t\tcompareResult, isComparable := compare(prevValueInterface, valueInterface, firstValueKind)\n\n\t\tif !isComparable {\n\t\t\treturn Fail(t, fmt.Sprintf(`Can not compare type \"%T\" and \"%T\"`, value, prevValue), msgAndArgs...)\n\t\t}\n\n\t\tif !containsValue(allowedComparesResults, compareResult) {\n\t\t\treturn Fail(t, fmt.Sprintf(failMessage, prevValue, value), msgAndArgs...)\n\t\t}\n\t}\n\n\treturn true\n}\n\n// IsIncreasing asserts that the collection is increasing\n//\n//\tassert.IsIncreasing(t, []int{1, 2, 3})\n//\tassert.IsIncreasing(t, []float{1, 2})\n//\tassert.IsIncreasing(t, []string{\"a\", \"b\"})\nfunc IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\treturn isOrdered(t, object, []compareResult{compareLess}, \"\\\"%v\\\" is not less than \\\"%v\\\"\", msgAndArgs...)\n}\n\n// IsNonIncreasing asserts that the collection is not increasing\n//\n//\tassert.IsNonIncreasing(t, []int{2, 1, 1})\n//\tassert.IsNonIncreasing(t, []float{2, 1})\n//\tassert.IsNonIncreasing(t, []string{\"b\", \"a\"})\nfunc IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\treturn isOrdered(t, object, []compareResult{compareEqual, compareGreater}, \"\\\"%v\\\" is not greater than or equal to \\\"%v\\\"\", msgAndArgs...)\n}\n\n// IsDecreasing asserts that the collection is decreasing\n//\n//\tassert.IsDecreasing(t, []int{2, 1, 0})\n//\tassert.IsDecreasing(t, []float{2, 1})\n//\tassert.IsDecreasing(t, []string{\"b\", \"a\"})\nfunc IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\treturn isOrdered(t, object, []compareResult{compareGreater}, \"\\\"%v\\\" is not greater than \\\"%v\\\"\", msgAndArgs...)\n}\n\n// IsNonDecreasing asserts that the collection is not decreasing\n//\n//\tassert.IsNonDecreasing(t, []int{1, 1, 2})\n//\tassert.IsNonDecreasing(t, []float{1, 2})\n//\tassert.IsNonDecreasing(t, []string{\"a\", \"b\"})\nfunc IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\treturn isOrdered(t, object, []compareResult{compareLess, compareEqual}, \"\\\"%v\\\" is not less than or equal to \\\"%v\\\"\", msgAndArgs...)\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/assertions.go",
    "content": "package assert\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"os\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"runtime\"\n\t\"runtime/debug\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"github.com/davecgh/go-spew/spew\"\n\t\"github.com/pmezard/go-difflib/difflib\"\n\n\t// Wrapper around gopkg.in/yaml.v3\n\t\"github.com/stretchr/testify/assert/yaml\"\n)\n\n//go:generate sh -c \"cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_format.go.tmpl\"\n\n// TestingT is an interface wrapper around *testing.T\ntype TestingT interface {\n\tErrorf(format string, args ...interface{})\n}\n\n// ComparisonAssertionFunc is a common function prototype when comparing two values.  Can be useful\n// for table driven tests.\ntype ComparisonAssertionFunc func(TestingT, interface{}, interface{}, ...interface{}) bool\n\n// ValueAssertionFunc is a common function prototype when validating a single value.  Can be useful\n// for table driven tests.\ntype ValueAssertionFunc func(TestingT, interface{}, ...interface{}) bool\n\n// BoolAssertionFunc is a common function prototype when validating a bool value.  Can be useful\n// for table driven tests.\ntype BoolAssertionFunc func(TestingT, bool, ...interface{}) bool\n\n// ErrorAssertionFunc is a common function prototype when validating an error value.  Can be useful\n// for table driven tests.\ntype ErrorAssertionFunc func(TestingT, error, ...interface{}) bool\n\n// PanicAssertionFunc is a common function prototype when validating a panic value.  Can be useful\n// for table driven tests.\ntype PanicAssertionFunc = func(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool\n\n// Comparison is a custom function that returns true on success and false on failure\ntype Comparison func() (success bool)\n\n/*\n\tHelper functions\n*/\n\n// ObjectsAreEqual determines if two objects are considered equal.\n//\n// This function does no assertion of any kind.\nfunc ObjectsAreEqual(expected, actual interface{}) bool {\n\tif expected == nil || actual == nil {\n\t\treturn expected == actual\n\t}\n\n\texp, ok := expected.([]byte)\n\tif !ok {\n\t\treturn reflect.DeepEqual(expected, actual)\n\t}\n\n\tact, ok := actual.([]byte)\n\tif !ok {\n\t\treturn false\n\t}\n\tif exp == nil || act == nil {\n\t\treturn exp == nil && act == nil\n\t}\n\treturn bytes.Equal(exp, act)\n}\n\n// copyExportedFields iterates downward through nested data structures and creates a copy\n// that only contains the exported struct fields.\nfunc copyExportedFields(expected interface{}) interface{} {\n\tif isNil(expected) {\n\t\treturn expected\n\t}\n\n\texpectedType := reflect.TypeOf(expected)\n\texpectedKind := expectedType.Kind()\n\texpectedValue := reflect.ValueOf(expected)\n\n\tswitch expectedKind {\n\tcase reflect.Struct:\n\t\tresult := reflect.New(expectedType).Elem()\n\t\tfor i := 0; i < expectedType.NumField(); i++ {\n\t\t\tfield := expectedType.Field(i)\n\t\t\tisExported := field.IsExported()\n\t\t\tif isExported {\n\t\t\t\tfieldValue := expectedValue.Field(i)\n\t\t\t\tif isNil(fieldValue) || isNil(fieldValue.Interface()) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tnewValue := copyExportedFields(fieldValue.Interface())\n\t\t\t\tresult.Field(i).Set(reflect.ValueOf(newValue))\n\t\t\t}\n\t\t}\n\t\treturn result.Interface()\n\n\tcase reflect.Ptr:\n\t\tresult := reflect.New(expectedType.Elem())\n\t\tunexportedRemoved := copyExportedFields(expectedValue.Elem().Interface())\n\t\tresult.Elem().Set(reflect.ValueOf(unexportedRemoved))\n\t\treturn result.Interface()\n\n\tcase reflect.Array, reflect.Slice:\n\t\tvar result reflect.Value\n\t\tif expectedKind == reflect.Array {\n\t\t\tresult = reflect.New(reflect.ArrayOf(expectedValue.Len(), expectedType.Elem())).Elem()\n\t\t} else {\n\t\t\tresult = reflect.MakeSlice(expectedType, expectedValue.Len(), expectedValue.Len())\n\t\t}\n\t\tfor i := 0; i < expectedValue.Len(); i++ {\n\t\t\tindex := expectedValue.Index(i)\n\t\t\tif isNil(index) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tunexportedRemoved := copyExportedFields(index.Interface())\n\t\t\tresult.Index(i).Set(reflect.ValueOf(unexportedRemoved))\n\t\t}\n\t\treturn result.Interface()\n\n\tcase reflect.Map:\n\t\tresult := reflect.MakeMap(expectedType)\n\t\tfor _, k := range expectedValue.MapKeys() {\n\t\t\tindex := expectedValue.MapIndex(k)\n\t\t\tunexportedRemoved := copyExportedFields(index.Interface())\n\t\t\tresult.SetMapIndex(k, reflect.ValueOf(unexportedRemoved))\n\t\t}\n\t\treturn result.Interface()\n\n\tdefault:\n\t\treturn expected\n\t}\n}\n\n// ObjectsExportedFieldsAreEqual determines if the exported (public) fields of two objects are\n// considered equal. This comparison of only exported fields is applied recursively to nested data\n// structures.\n//\n// This function does no assertion of any kind.\n//\n// Deprecated: Use [EqualExportedValues] instead.\nfunc ObjectsExportedFieldsAreEqual(expected, actual interface{}) bool {\n\texpectedCleaned := copyExportedFields(expected)\n\tactualCleaned := copyExportedFields(actual)\n\treturn ObjectsAreEqualValues(expectedCleaned, actualCleaned)\n}\n\n// ObjectsAreEqualValues gets whether two objects are equal, or if their\n// values are equal.\nfunc ObjectsAreEqualValues(expected, actual interface{}) bool {\n\tif ObjectsAreEqual(expected, actual) {\n\t\treturn true\n\t}\n\n\texpectedValue := reflect.ValueOf(expected)\n\tactualValue := reflect.ValueOf(actual)\n\tif !expectedValue.IsValid() || !actualValue.IsValid() {\n\t\treturn false\n\t}\n\n\texpectedType := expectedValue.Type()\n\tactualType := actualValue.Type()\n\tif !expectedType.ConvertibleTo(actualType) {\n\t\treturn false\n\t}\n\n\tif !isNumericType(expectedType) || !isNumericType(actualType) {\n\t\t// Attempt comparison after type conversion\n\t\treturn reflect.DeepEqual(\n\t\t\texpectedValue.Convert(actualType).Interface(), actual,\n\t\t)\n\t}\n\n\t// If BOTH values are numeric, there are chances of false positives due\n\t// to overflow or underflow. So, we need to make sure to always convert\n\t// the smaller type to a larger type before comparing.\n\tif expectedType.Size() >= actualType.Size() {\n\t\treturn actualValue.Convert(expectedType).Interface() == expected\n\t}\n\n\treturn expectedValue.Convert(actualType).Interface() == actual\n}\n\n// isNumericType returns true if the type is one of:\n// int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64,\n// float32, float64, complex64, complex128\nfunc isNumericType(t reflect.Type) bool {\n\treturn t.Kind() >= reflect.Int && t.Kind() <= reflect.Complex128\n}\n\n/* CallerInfo is necessary because the assert functions use the testing object\ninternally, causing it to print the file:line of the assert method, rather than where\nthe problem actually occurred in calling code.*/\n\n// CallerInfo returns an array of strings containing the file and line number\n// of each stack frame leading from the current test to the assert call that\n// failed.\nfunc CallerInfo() []string {\n\tvar pc uintptr\n\tvar file string\n\tvar line int\n\tvar name string\n\n\tconst stackFrameBufferSize = 10\n\tpcs := make([]uintptr, stackFrameBufferSize)\n\n\tcallers := []string{}\n\toffset := 1\n\n\tfor {\n\t\tn := runtime.Callers(offset, pcs)\n\n\t\tif n == 0 {\n\t\t\tbreak\n\t\t}\n\n\t\tframes := runtime.CallersFrames(pcs[:n])\n\n\t\tfor {\n\t\t\tframe, more := frames.Next()\n\t\t\tpc = frame.PC\n\t\t\tfile = frame.File\n\t\t\tline = frame.Line\n\n\t\t\t// This is a huge edge case, but it will panic if this is the case, see #180\n\t\t\tif file == \"<autogenerated>\" {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tf := runtime.FuncForPC(pc)\n\t\t\tif f == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tname = f.Name()\n\n\t\t\t// testing.tRunner is the standard library function that calls\n\t\t\t// tests. Subtests are called directly by tRunner, without going through\n\t\t\t// the Test/Benchmark/Example function that contains the t.Run calls, so\n\t\t\t// with subtests we should break when we hit tRunner, without adding it\n\t\t\t// to the list of callers.\n\t\t\tif name == \"testing.tRunner\" {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tparts := strings.Split(file, \"/\")\n\t\t\tif len(parts) > 1 {\n\t\t\t\tfilename := parts[len(parts)-1]\n\t\t\t\tdir := parts[len(parts)-2]\n\t\t\t\tif (dir != \"assert\" && dir != \"mock\" && dir != \"require\") || filename == \"mock_test.go\" {\n\t\t\t\t\tcallers = append(callers, fmt.Sprintf(\"%s:%d\", file, line))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Drop the package\n\t\t\tdotPos := strings.LastIndexByte(name, '.')\n\t\t\tname = name[dotPos+1:]\n\t\t\tif isTest(name, \"Test\") ||\n\t\t\t\tisTest(name, \"Benchmark\") ||\n\t\t\t\tisTest(name, \"Example\") {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif !more {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// Next batch\n\t\toffset += cap(pcs)\n\t}\n\n\treturn callers\n}\n\n// Stolen from the `go test` tool.\n// isTest tells whether name looks like a test (or benchmark, according to prefix).\n// It is a Test (say) if there is a character after Test that is not a lower-case letter.\n// We don't want TesticularCancer.\nfunc isTest(name, prefix string) bool {\n\tif !strings.HasPrefix(name, prefix) {\n\t\treturn false\n\t}\n\tif len(name) == len(prefix) { // \"Test\" is ok\n\t\treturn true\n\t}\n\tr, _ := utf8.DecodeRuneInString(name[len(prefix):])\n\treturn !unicode.IsLower(r)\n}\n\nfunc messageFromMsgAndArgs(msgAndArgs ...interface{}) string {\n\tif len(msgAndArgs) == 0 || msgAndArgs == nil {\n\t\treturn \"\"\n\t}\n\tif len(msgAndArgs) == 1 {\n\t\tmsg := msgAndArgs[0]\n\t\tif msgAsStr, ok := msg.(string); ok {\n\t\t\treturn msgAsStr\n\t\t}\n\t\treturn fmt.Sprintf(\"%+v\", msg)\n\t}\n\tif len(msgAndArgs) > 1 {\n\t\treturn fmt.Sprintf(msgAndArgs[0].(string), msgAndArgs[1:]...)\n\t}\n\treturn \"\"\n}\n\n// Aligns the provided message so that all lines after the first line start at the same location as the first line.\n// Assumes that the first line starts at the correct location (after carriage return, tab, label, spacer and tab).\n// The longestLabelLen parameter specifies the length of the longest label in the output (required because this is the\n// basis on which the alignment occurs).\nfunc indentMessageLines(message string, longestLabelLen int) string {\n\toutBuf := new(bytes.Buffer)\n\n\tfor i, scanner := 0, bufio.NewScanner(strings.NewReader(message)); scanner.Scan(); i++ {\n\t\t// no need to align first line because it starts at the correct location (after the label)\n\t\tif i != 0 {\n\t\t\t// append alignLen+1 spaces to align with \"{{longestLabel}}:\" before adding tab\n\t\t\toutBuf.WriteString(\"\\n\\t\" + strings.Repeat(\" \", longestLabelLen+1) + \"\\t\")\n\t\t}\n\t\toutBuf.WriteString(scanner.Text())\n\t}\n\n\treturn outBuf.String()\n}\n\ntype failNower interface {\n\tFailNow()\n}\n\n// FailNow fails test\nfunc FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFail(t, failureMessage, msgAndArgs...)\n\n\t// We cannot extend TestingT with FailNow() and\n\t// maintain backwards compatibility, so we fallback\n\t// to panicking when FailNow is not available in\n\t// TestingT.\n\t// See issue #263\n\n\tif t, ok := t.(failNower); ok {\n\t\tt.FailNow()\n\t} else {\n\t\tpanic(\"test failed and t is missing `FailNow()`\")\n\t}\n\treturn false\n}\n\n// Fail reports a failure through\nfunc Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tcontent := []labeledContent{\n\t\t{\"Error Trace\", strings.Join(CallerInfo(), \"\\n\\t\\t\\t\")},\n\t\t{\"Error\", failureMessage},\n\t}\n\n\t// Add test name if the Go version supports it\n\tif n, ok := t.(interface {\n\t\tName() string\n\t}); ok {\n\t\tcontent = append(content, labeledContent{\"Test\", n.Name()})\n\t}\n\n\tmessage := messageFromMsgAndArgs(msgAndArgs...)\n\tif len(message) > 0 {\n\t\tcontent = append(content, labeledContent{\"Messages\", message})\n\t}\n\n\tt.Errorf(\"\\n%s\", \"\"+labeledOutput(content...))\n\n\treturn false\n}\n\ntype labeledContent struct {\n\tlabel   string\n\tcontent string\n}\n\n// labeledOutput returns a string consisting of the provided labeledContent. Each labeled output is appended in the following manner:\n//\n//\t\\t{{label}}:{{align_spaces}}\\t{{content}}\\n\n//\n// The initial carriage return is required to undo/erase any padding added by testing.T.Errorf. The \"\\t{{label}}:\" is for the label.\n// If a label is shorter than the longest label provided, padding spaces are added to make all the labels match in length. Once this\n// alignment is achieved, \"\\t{{content}}\\n\" is added for the output.\n//\n// If the content of the labeledOutput contains line breaks, the subsequent lines are aligned so that they start at the same location as the first line.\nfunc labeledOutput(content ...labeledContent) string {\n\tlongestLabel := 0\n\tfor _, v := range content {\n\t\tif len(v.label) > longestLabel {\n\t\t\tlongestLabel = len(v.label)\n\t\t}\n\t}\n\tvar output string\n\tfor _, v := range content {\n\t\toutput += \"\\t\" + v.label + \":\" + strings.Repeat(\" \", longestLabel-len(v.label)) + \"\\t\" + indentMessageLines(v.content, longestLabel) + \"\\n\"\n\t}\n\treturn output\n}\n\n// Implements asserts that an object is implemented by the specified interface.\n//\n//\tassert.Implements(t, (*MyInterface)(nil), new(MyObject))\nfunc Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tinterfaceType := reflect.TypeOf(interfaceObject).Elem()\n\n\tif object == nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Cannot check if nil implements %v\", interfaceType), msgAndArgs...)\n\t}\n\tif !reflect.TypeOf(object).Implements(interfaceType) {\n\t\treturn Fail(t, fmt.Sprintf(\"%T must implement %v\", object, interfaceType), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// NotImplements asserts that an object does not implement the specified interface.\n//\n//\tassert.NotImplements(t, (*MyInterface)(nil), new(MyObject))\nfunc NotImplements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tinterfaceType := reflect.TypeOf(interfaceObject).Elem()\n\n\tif object == nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Cannot check if nil does not implement %v\", interfaceType), msgAndArgs...)\n\t}\n\tif reflect.TypeOf(object).Implements(interfaceType) {\n\t\treturn Fail(t, fmt.Sprintf(\"%T implements %v\", object, interfaceType), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\nfunc isType(expectedType, object interface{}) bool {\n\treturn ObjectsAreEqual(reflect.TypeOf(object), reflect.TypeOf(expectedType))\n}\n\n// IsType asserts that the specified objects are of the same type.\n//\n//\tassert.IsType(t, &MyStruct{}, &MyStruct{})\nfunc IsType(t TestingT, expectedType, object interface{}, msgAndArgs ...interface{}) bool {\n\tif isType(expectedType, object) {\n\t\treturn true\n\t}\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Fail(t, fmt.Sprintf(\"Object expected to be of type %T, but was %T\", expectedType, object), msgAndArgs...)\n}\n\n// IsNotType asserts that the specified objects are not of the same type.\n//\n//\tassert.IsNotType(t, &NotMyStruct{}, &MyStruct{})\nfunc IsNotType(t TestingT, theType, object interface{}, msgAndArgs ...interface{}) bool {\n\tif !isType(theType, object) {\n\t\treturn true\n\t}\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Fail(t, fmt.Sprintf(\"Object type expected to be different than %T\", theType), msgAndArgs...)\n}\n\n// Equal asserts that two objects are equal.\n//\n//\tassert.Equal(t, 123, 123)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc Equal(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif err := validateEqualArgs(expected, actual); err != nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Invalid operation: %#v == %#v (%s)\",\n\t\t\texpected, actual, err), msgAndArgs...)\n\t}\n\n\tif !ObjectsAreEqual(expected, actual) {\n\t\tdiff := diff(expected, actual)\n\t\texpected, actual = formatUnequalValues(expected, actual)\n\t\treturn Fail(t, fmt.Sprintf(\"Not equal: \\n\"+\n\t\t\t\"expected: %s\\n\"+\n\t\t\t\"actual  : %s%s\", expected, actual, diff), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// validateEqualArgs checks whether provided arguments can be safely used in the\n// Equal/NotEqual functions.\nfunc validateEqualArgs(expected, actual interface{}) error {\n\tif expected == nil && actual == nil {\n\t\treturn nil\n\t}\n\n\tif isFunction(expected) || isFunction(actual) {\n\t\treturn errors.New(\"cannot take func type as argument\")\n\t}\n\treturn nil\n}\n\n// Same asserts that two pointers reference the same object.\n//\n//\tassert.Same(t, ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc Same(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tsame, ok := samePointers(expected, actual)\n\tif !ok {\n\t\treturn Fail(t, \"Both arguments must be pointers\", msgAndArgs...)\n\t}\n\n\tif !same {\n\t\t// both are pointers but not the same type & pointing to the same address\n\t\treturn Fail(t, fmt.Sprintf(\"Not same: \\n\"+\n\t\t\t\"expected: %p %#[1]v\\n\"+\n\t\t\t\"actual  : %p %#[2]v\",\n\t\t\texpected, actual), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// NotSame asserts that two pointers do not reference the same object.\n//\n//\tassert.NotSame(t, ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc NotSame(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tsame, ok := samePointers(expected, actual)\n\tif !ok {\n\t\t// fails when the arguments are not pointers\n\t\treturn !(Fail(t, \"Both arguments must be pointers\", msgAndArgs...))\n\t}\n\n\tif same {\n\t\treturn Fail(t, fmt.Sprintf(\n\t\t\t\"Expected and actual point to the same object: %p %#[1]v\",\n\t\t\texpected), msgAndArgs...)\n\t}\n\treturn true\n}\n\n// samePointers checks if two generic interface objects are pointers of the same\n// type pointing to the same object. It returns two values: same indicating if\n// they are the same type and point to the same object, and ok indicating that\n// both inputs are pointers.\nfunc samePointers(first, second interface{}) (same bool, ok bool) {\n\tfirstPtr, secondPtr := reflect.ValueOf(first), reflect.ValueOf(second)\n\tif firstPtr.Kind() != reflect.Ptr || secondPtr.Kind() != reflect.Ptr {\n\t\treturn false, false // not both are pointers\n\t}\n\n\tfirstType, secondType := reflect.TypeOf(first), reflect.TypeOf(second)\n\tif firstType != secondType {\n\t\treturn false, true // both are pointers, but of different types\n\t}\n\n\t// compare pointer addresses\n\treturn first == second, true\n}\n\n// formatUnequalValues takes two values of arbitrary types and returns string\n// representations appropriate to be presented to the user.\n//\n// If the values are not of like type, the returned strings will be prefixed\n// with the type name, and the value will be enclosed in parentheses similar\n// to a type conversion in the Go grammar.\nfunc formatUnequalValues(expected, actual interface{}) (e string, a string) {\n\tif reflect.TypeOf(expected) != reflect.TypeOf(actual) {\n\t\treturn fmt.Sprintf(\"%T(%s)\", expected, truncatingFormat(expected)),\n\t\t\tfmt.Sprintf(\"%T(%s)\", actual, truncatingFormat(actual))\n\t}\n\tswitch expected.(type) {\n\tcase time.Duration:\n\t\treturn fmt.Sprintf(\"%v\", expected), fmt.Sprintf(\"%v\", actual)\n\t}\n\treturn truncatingFormat(expected), truncatingFormat(actual)\n}\n\n// truncatingFormat formats the data and truncates it if it's too long.\n//\n// This helps keep formatted error messages lines from exceeding the\n// bufio.MaxScanTokenSize max line length that the go testing framework imposes.\nfunc truncatingFormat(data interface{}) string {\n\tvalue := fmt.Sprintf(\"%#v\", data)\n\tmax := bufio.MaxScanTokenSize - 100 // Give us some space the type info too if needed.\n\tif len(value) > max {\n\t\tvalue = value[0:max] + \"<... truncated>\"\n\t}\n\treturn value\n}\n\n// EqualValues asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\tassert.EqualValues(t, uint32(123), int32(123))\nfunc EqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tif !ObjectsAreEqualValues(expected, actual) {\n\t\tdiff := diff(expected, actual)\n\t\texpected, actual = formatUnequalValues(expected, actual)\n\t\treturn Fail(t, fmt.Sprintf(\"Not equal: \\n\"+\n\t\t\t\"expected: %s\\n\"+\n\t\t\t\"actual  : %s%s\", expected, actual, diff), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// EqualExportedValues asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t assert.EqualExportedValues(t, S{1, 2}, S{1, 3}) => true\n//\t assert.EqualExportedValues(t, S{1, 2}, S{2, 3}) => false\nfunc EqualExportedValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\taType := reflect.TypeOf(expected)\n\tbType := reflect.TypeOf(actual)\n\n\tif aType != bType {\n\t\treturn Fail(t, fmt.Sprintf(\"Types expected to match exactly\\n\\t%v != %v\", aType, bType), msgAndArgs...)\n\t}\n\n\texpected = copyExportedFields(expected)\n\tactual = copyExportedFields(actual)\n\n\tif !ObjectsAreEqualValues(expected, actual) {\n\t\tdiff := diff(expected, actual)\n\t\texpected, actual = formatUnequalValues(expected, actual)\n\t\treturn Fail(t, fmt.Sprintf(\"Not equal (comparing only exported fields): \\n\"+\n\t\t\t\"expected: %s\\n\"+\n\t\t\t\"actual  : %s%s\", expected, actual, diff), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// Exactly asserts that two objects are equal in value and type.\n//\n//\tassert.Exactly(t, int32(123), int64(123))\nfunc Exactly(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\taType := reflect.TypeOf(expected)\n\tbType := reflect.TypeOf(actual)\n\n\tif aType != bType {\n\t\treturn Fail(t, fmt.Sprintf(\"Types expected to match exactly\\n\\t%v != %v\", aType, bType), msgAndArgs...)\n\t}\n\n\treturn Equal(t, expected, actual, msgAndArgs...)\n}\n\n// NotNil asserts that the specified object is not nil.\n//\n//\tassert.NotNil(t, err)\nfunc NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\tif !isNil(object) {\n\t\treturn true\n\t}\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Fail(t, \"Expected value not to be nil.\", msgAndArgs...)\n}\n\n// isNil checks if a specified object is nil or not, without Failing.\nfunc isNil(object interface{}) bool {\n\tif object == nil {\n\t\treturn true\n\t}\n\n\tvalue := reflect.ValueOf(object)\n\tswitch value.Kind() {\n\tcase\n\t\treflect.Chan, reflect.Func,\n\t\treflect.Interface, reflect.Map,\n\t\treflect.Ptr, reflect.Slice, reflect.UnsafePointer:\n\n\t\treturn value.IsNil()\n\t}\n\n\treturn false\n}\n\n// Nil asserts that the specified object is nil.\n//\n//\tassert.Nil(t, err)\nfunc Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\tif isNil(object) {\n\t\treturn true\n\t}\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Fail(t, fmt.Sprintf(\"Expected nil, but got: %#v\", object), msgAndArgs...)\n}\n\n// isEmpty gets whether the specified object is considered empty or not.\nfunc isEmpty(object interface{}) bool {\n\t// get nil case out of the way\n\tif object == nil {\n\t\treturn true\n\t}\n\n\treturn isEmptyValue(reflect.ValueOf(object))\n}\n\n// isEmptyValue gets whether the specified reflect.Value is considered empty or not.\nfunc isEmptyValue(objValue reflect.Value) bool {\n\tif objValue.IsZero() {\n\t\treturn true\n\t}\n\t// Special cases of non-zero values that we consider empty\n\tswitch objValue.Kind() {\n\t// collection types are empty when they have no element\n\t// Note: array types are empty when they match their zero-initialized state.\n\tcase reflect.Chan, reflect.Map, reflect.Slice:\n\t\treturn objValue.Len() == 0\n\t// non-nil pointers are empty if the value they point to is empty\n\tcase reflect.Ptr:\n\t\treturn isEmptyValue(objValue.Elem())\n\t}\n\treturn false\n}\n\n// Empty asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\tassert.Empty(t, obj)\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\tpass := isEmpty(object)\n\tif !pass {\n\t\tif h, ok := t.(tHelper); ok {\n\t\t\th.Helper()\n\t\t}\n\t\tFail(t, fmt.Sprintf(\"Should be empty, but was %v\", object), msgAndArgs...)\n\t}\n\n\treturn pass\n}\n\n// NotEmpty asserts that the specified object is NOT [Empty].\n//\n//\tif assert.NotEmpty(t, obj) {\n//\t  assert.Equal(t, \"two\", obj[1])\n//\t}\nfunc NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\tpass := !isEmpty(object)\n\tif !pass {\n\t\tif h, ok := t.(tHelper); ok {\n\t\t\th.Helper()\n\t\t}\n\t\tFail(t, fmt.Sprintf(\"Should NOT be empty, but was %v\", object), msgAndArgs...)\n\t}\n\n\treturn pass\n}\n\n// getLen tries to get the length of an object.\n// It returns (0, false) if impossible.\nfunc getLen(x interface{}) (length int, ok bool) {\n\tv := reflect.ValueOf(x)\n\tdefer func() {\n\t\tok = recover() == nil\n\t}()\n\treturn v.Len(), true\n}\n\n// Len asserts that the specified object has specific length.\n// Len also fails if the object has a type that len() not accept.\n//\n//\tassert.Len(t, mySlice, 3)\nfunc Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tl, ok := getLen(object)\n\tif !ok {\n\t\treturn Fail(t, fmt.Sprintf(\"\\\"%v\\\" could not be applied builtin len()\", object), msgAndArgs...)\n\t}\n\n\tif l != length {\n\t\treturn Fail(t, fmt.Sprintf(\"\\\"%v\\\" should have %d item(s), but has %d\", object, length, l), msgAndArgs...)\n\t}\n\treturn true\n}\n\n// True asserts that the specified value is true.\n//\n//\tassert.True(t, myBool)\nfunc True(t TestingT, value bool, msgAndArgs ...interface{}) bool {\n\tif !value {\n\t\tif h, ok := t.(tHelper); ok {\n\t\t\th.Helper()\n\t\t}\n\t\treturn Fail(t, \"Should be true\", msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// False asserts that the specified value is false.\n//\n//\tassert.False(t, myBool)\nfunc False(t TestingT, value bool, msgAndArgs ...interface{}) bool {\n\tif value {\n\t\tif h, ok := t.(tHelper); ok {\n\t\t\th.Helper()\n\t\t}\n\t\treturn Fail(t, \"Should be false\", msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// NotEqual asserts that the specified values are NOT equal.\n//\n//\tassert.NotEqual(t, obj1, obj2)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc NotEqual(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif err := validateEqualArgs(expected, actual); err != nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Invalid operation: %#v != %#v (%s)\",\n\t\t\texpected, actual, err), msgAndArgs...)\n\t}\n\n\tif ObjectsAreEqual(expected, actual) {\n\t\treturn Fail(t, fmt.Sprintf(\"Should not be: %#v\\n\", actual), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// NotEqualValues asserts that two objects are not equal even when converted to the same type\n//\n//\tassert.NotEqualValues(t, obj1, obj2)\nfunc NotEqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tif ObjectsAreEqualValues(expected, actual) {\n\t\treturn Fail(t, fmt.Sprintf(\"Should not be: %#v\\n\", actual), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// containsElement try loop over the list check if the list includes the element.\n// return (false, false) if impossible.\n// return (true, false) if element was not found.\n// return (true, true) if element was found.\nfunc containsElement(list interface{}, element interface{}) (ok, found bool) {\n\tlistValue := reflect.ValueOf(list)\n\tlistType := reflect.TypeOf(list)\n\tif listType == nil {\n\t\treturn false, false\n\t}\n\tlistKind := listType.Kind()\n\tdefer func() {\n\t\tif e := recover(); e != nil {\n\t\t\tok = false\n\t\t\tfound = false\n\t\t}\n\t}()\n\n\tif listKind == reflect.String {\n\t\telementValue := reflect.ValueOf(element)\n\t\treturn true, strings.Contains(listValue.String(), elementValue.String())\n\t}\n\n\tif listKind == reflect.Map {\n\t\tmapKeys := listValue.MapKeys()\n\t\tfor i := 0; i < len(mapKeys); i++ {\n\t\t\tif ObjectsAreEqual(mapKeys[i].Interface(), element) {\n\t\t\t\treturn true, true\n\t\t\t}\n\t\t}\n\t\treturn true, false\n\t}\n\n\tfor i := 0; i < listValue.Len(); i++ {\n\t\tif ObjectsAreEqual(listValue.Index(i).Interface(), element) {\n\t\t\treturn true, true\n\t\t}\n\t}\n\treturn true, false\n}\n\n// Contains asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\tassert.Contains(t, \"Hello World\", \"World\")\n//\tassert.Contains(t, [\"Hello\", \"World\"], \"World\")\n//\tassert.Contains(t, {\"Hello\": \"World\"}, \"Hello\")\nfunc Contains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tok, found := containsElement(s, contains)\n\tif !ok {\n\t\treturn Fail(t, fmt.Sprintf(\"%#v could not be applied builtin len()\", s), msgAndArgs...)\n\t}\n\tif !found {\n\t\treturn Fail(t, fmt.Sprintf(\"%#v does not contain %#v\", s, contains), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\tassert.NotContains(t, \"Hello World\", \"Earth\")\n//\tassert.NotContains(t, [\"Hello\", \"World\"], \"Earth\")\n//\tassert.NotContains(t, {\"Hello\": \"World\"}, \"Earth\")\nfunc NotContains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tok, found := containsElement(s, contains)\n\tif !ok {\n\t\treturn Fail(t, fmt.Sprintf(\"%#v could not be applied builtin len()\", s), msgAndArgs...)\n\t}\n\tif found {\n\t\treturn Fail(t, fmt.Sprintf(\"%#v should not contain %#v\", s, contains), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// Subset asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\tassert.Subset(t, [1, 2, 3], [1, 2])\n//\tassert.Subset(t, {\"x\": 1, \"y\": 2}, {\"x\": 1})\n//\tassert.Subset(t, [1, 2, 3], {1: \"one\", 2: \"two\"})\n//\tassert.Subset(t, {\"x\": 1, \"y\": 2}, [\"x\"])\nfunc Subset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif subset == nil {\n\t\treturn true // we consider nil to be equal to the nil set\n\t}\n\n\tlistKind := reflect.TypeOf(list).Kind()\n\tif listKind != reflect.Array && listKind != reflect.Slice && listKind != reflect.Map {\n\t\treturn Fail(t, fmt.Sprintf(\"%q has an unsupported type %s\", list, listKind), msgAndArgs...)\n\t}\n\n\tsubsetKind := reflect.TypeOf(subset).Kind()\n\tif subsetKind != reflect.Array && subsetKind != reflect.Slice && subsetKind != reflect.Map {\n\t\treturn Fail(t, fmt.Sprintf(\"%q has an unsupported type %s\", subset, subsetKind), msgAndArgs...)\n\t}\n\n\tif subsetKind == reflect.Map && listKind == reflect.Map {\n\t\tsubsetMap := reflect.ValueOf(subset)\n\t\tactualMap := reflect.ValueOf(list)\n\n\t\tfor _, k := range subsetMap.MapKeys() {\n\t\t\tev := subsetMap.MapIndex(k)\n\t\t\tav := actualMap.MapIndex(k)\n\n\t\t\tif !av.IsValid() {\n\t\t\t\treturn Fail(t, fmt.Sprintf(\"%#v does not contain %#v\", list, subset), msgAndArgs...)\n\t\t\t}\n\t\t\tif !ObjectsAreEqual(ev.Interface(), av.Interface()) {\n\t\t\t\treturn Fail(t, fmt.Sprintf(\"%#v does not contain %#v\", list, subset), msgAndArgs...)\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tsubsetList := reflect.ValueOf(subset)\n\tif subsetKind == reflect.Map {\n\t\tkeys := make([]interface{}, subsetList.Len())\n\t\tfor idx, key := range subsetList.MapKeys() {\n\t\t\tkeys[idx] = key.Interface()\n\t\t}\n\t\tsubsetList = reflect.ValueOf(keys)\n\t}\n\tfor i := 0; i < subsetList.Len(); i++ {\n\t\telement := subsetList.Index(i).Interface()\n\t\tok, found := containsElement(list, element)\n\t\tif !ok {\n\t\t\treturn Fail(t, fmt.Sprintf(\"%#v could not be applied builtin len()\", list), msgAndArgs...)\n\t\t}\n\t\tif !found {\n\t\t\treturn Fail(t, fmt.Sprintf(\"%#v does not contain %#v\", list, element), msgAndArgs...)\n\t\t}\n\t}\n\n\treturn true\n}\n\n// NotSubset asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\tassert.NotSubset(t, [1, 3, 4], [1, 2])\n//\tassert.NotSubset(t, {\"x\": 1, \"y\": 2}, {\"z\": 3})\n//\tassert.NotSubset(t, [1, 3, 4], {1: \"one\", 2: \"two\"})\n//\tassert.NotSubset(t, {\"x\": 1, \"y\": 2}, [\"z\"])\nfunc NotSubset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif subset == nil {\n\t\treturn Fail(t, \"nil is the empty set which is a subset of every set\", msgAndArgs...)\n\t}\n\n\tlistKind := reflect.TypeOf(list).Kind()\n\tif listKind != reflect.Array && listKind != reflect.Slice && listKind != reflect.Map {\n\t\treturn Fail(t, fmt.Sprintf(\"%q has an unsupported type %s\", list, listKind), msgAndArgs...)\n\t}\n\n\tsubsetKind := reflect.TypeOf(subset).Kind()\n\tif subsetKind != reflect.Array && subsetKind != reflect.Slice && subsetKind != reflect.Map {\n\t\treturn Fail(t, fmt.Sprintf(\"%q has an unsupported type %s\", subset, subsetKind), msgAndArgs...)\n\t}\n\n\tif subsetKind == reflect.Map && listKind == reflect.Map {\n\t\tsubsetMap := reflect.ValueOf(subset)\n\t\tactualMap := reflect.ValueOf(list)\n\n\t\tfor _, k := range subsetMap.MapKeys() {\n\t\t\tev := subsetMap.MapIndex(k)\n\t\t\tav := actualMap.MapIndex(k)\n\n\t\t\tif !av.IsValid() {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif !ObjectsAreEqual(ev.Interface(), av.Interface()) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\treturn Fail(t, fmt.Sprintf(\"%q is a subset of %q\", subset, list), msgAndArgs...)\n\t}\n\n\tsubsetList := reflect.ValueOf(subset)\n\tif subsetKind == reflect.Map {\n\t\tkeys := make([]interface{}, subsetList.Len())\n\t\tfor idx, key := range subsetList.MapKeys() {\n\t\t\tkeys[idx] = key.Interface()\n\t\t}\n\t\tsubsetList = reflect.ValueOf(keys)\n\t}\n\tfor i := 0; i < subsetList.Len(); i++ {\n\t\telement := subsetList.Index(i).Interface()\n\t\tok, found := containsElement(list, element)\n\t\tif !ok {\n\t\t\treturn Fail(t, fmt.Sprintf(\"%q could not be applied builtin len()\", list), msgAndArgs...)\n\t\t}\n\t\tif !found {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn Fail(t, fmt.Sprintf(\"%q is a subset of %q\", subset, list), msgAndArgs...)\n}\n\n// ElementsMatch asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// assert.ElementsMatch(t, [1, 3, 2, 3], [1, 3, 3, 2])\nfunc ElementsMatch(t TestingT, listA, listB interface{}, msgAndArgs ...interface{}) (ok bool) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif isEmpty(listA) && isEmpty(listB) {\n\t\treturn true\n\t}\n\n\tif !isList(t, listA, msgAndArgs...) || !isList(t, listB, msgAndArgs...) {\n\t\treturn false\n\t}\n\n\textraA, extraB := diffLists(listA, listB)\n\n\tif len(extraA) == 0 && len(extraB) == 0 {\n\t\treturn true\n\t}\n\n\treturn Fail(t, formatListDiff(listA, listB, extraA, extraB), msgAndArgs...)\n}\n\n// isList checks that the provided value is array or slice.\nfunc isList(t TestingT, list interface{}, msgAndArgs ...interface{}) (ok bool) {\n\tkind := reflect.TypeOf(list).Kind()\n\tif kind != reflect.Array && kind != reflect.Slice {\n\t\treturn Fail(t, fmt.Sprintf(\"%q has an unsupported type %s, expecting array or slice\", list, kind),\n\t\t\tmsgAndArgs...)\n\t}\n\treturn true\n}\n\n// diffLists diffs two arrays/slices and returns slices of elements that are only in A and only in B.\n// If some element is present multiple times, each instance is counted separately (e.g. if something is 2x in A and\n// 5x in B, it will be 0x in extraA and 3x in extraB). The order of items in both lists is ignored.\nfunc diffLists(listA, listB interface{}) (extraA, extraB []interface{}) {\n\taValue := reflect.ValueOf(listA)\n\tbValue := reflect.ValueOf(listB)\n\n\taLen := aValue.Len()\n\tbLen := bValue.Len()\n\n\t// Mark indexes in bValue that we already used\n\tvisited := make([]bool, bLen)\n\tfor i := 0; i < aLen; i++ {\n\t\telement := aValue.Index(i).Interface()\n\t\tfound := false\n\t\tfor j := 0; j < bLen; j++ {\n\t\t\tif visited[j] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif ObjectsAreEqual(bValue.Index(j).Interface(), element) {\n\t\t\t\tvisited[j] = true\n\t\t\t\tfound = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !found {\n\t\t\textraA = append(extraA, element)\n\t\t}\n\t}\n\n\tfor j := 0; j < bLen; j++ {\n\t\tif visited[j] {\n\t\t\tcontinue\n\t\t}\n\t\textraB = append(extraB, bValue.Index(j).Interface())\n\t}\n\n\treturn\n}\n\nfunc formatListDiff(listA, listB interface{}, extraA, extraB []interface{}) string {\n\tvar msg bytes.Buffer\n\n\tmsg.WriteString(\"elements differ\")\n\tif len(extraA) > 0 {\n\t\tmsg.WriteString(\"\\n\\nextra elements in list A:\\n\")\n\t\tmsg.WriteString(spewConfig.Sdump(extraA))\n\t}\n\tif len(extraB) > 0 {\n\t\tmsg.WriteString(\"\\n\\nextra elements in list B:\\n\")\n\t\tmsg.WriteString(spewConfig.Sdump(extraB))\n\t}\n\tmsg.WriteString(\"\\n\\nlistA:\\n\")\n\tmsg.WriteString(spewConfig.Sdump(listA))\n\tmsg.WriteString(\"\\n\\nlistB:\\n\")\n\tmsg.WriteString(spewConfig.Sdump(listB))\n\n\treturn msg.String()\n}\n\n// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// assert.NotElementsMatch(t, [1, 1, 2, 3], [1, 1, 2, 3]) -> false\n//\n// assert.NotElementsMatch(t, [1, 1, 2, 3], [1, 2, 3]) -> true\n//\n// assert.NotElementsMatch(t, [1, 2, 3], [1, 2, 4]) -> true\nfunc NotElementsMatch(t TestingT, listA, listB interface{}, msgAndArgs ...interface{}) (ok bool) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif isEmpty(listA) && isEmpty(listB) {\n\t\treturn Fail(t, \"listA and listB contain the same elements\", msgAndArgs)\n\t}\n\n\tif !isList(t, listA, msgAndArgs...) {\n\t\treturn Fail(t, \"listA is not a list type\", msgAndArgs...)\n\t}\n\tif !isList(t, listB, msgAndArgs...) {\n\t\treturn Fail(t, \"listB is not a list type\", msgAndArgs...)\n\t}\n\n\textraA, extraB := diffLists(listA, listB)\n\tif len(extraA) == 0 && len(extraB) == 0 {\n\t\treturn Fail(t, \"listA and listB contain the same elements\", msgAndArgs)\n\t}\n\n\treturn true\n}\n\n// Condition uses a Comparison to assert a complex condition.\nfunc Condition(t TestingT, comp Comparison, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tresult := comp()\n\tif !result {\n\t\tFail(t, \"Condition failed!\", msgAndArgs...)\n\t}\n\treturn result\n}\n\n// PanicTestFunc defines a func that should be passed to the assert.Panics and assert.NotPanics\n// methods, and represents a simple func that takes no arguments, and returns nothing.\ntype PanicTestFunc func()\n\n// didPanic returns true if the function passed to it panics. Otherwise, it returns false.\nfunc didPanic(f PanicTestFunc) (didPanic bool, message interface{}, stack string) {\n\tdidPanic = true\n\n\tdefer func() {\n\t\tmessage = recover()\n\t\tif didPanic {\n\t\t\tstack = string(debug.Stack())\n\t\t}\n\t}()\n\n\t// call the target function\n\tf()\n\tdidPanic = false\n\n\treturn\n}\n\n// Panics asserts that the code inside the specified PanicTestFunc panics.\n//\n//\tassert.Panics(t, func(){ GoCrazy() })\nfunc Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tif funcDidPanic, panicValue, _ := didPanic(f); !funcDidPanic {\n\t\treturn Fail(t, fmt.Sprintf(\"func %#v should panic\\n\\tPanic value:\\t%#v\", f, panicValue), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\tassert.PanicsWithValue(t, \"crazy error\", func(){ GoCrazy() })\nfunc PanicsWithValue(t TestingT, expected interface{}, f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tfuncDidPanic, panicValue, panickedStack := didPanic(f)\n\tif !funcDidPanic {\n\t\treturn Fail(t, fmt.Sprintf(\"func %#v should panic\\n\\tPanic value:\\t%#v\", f, panicValue), msgAndArgs...)\n\t}\n\tif panicValue != expected {\n\t\treturn Fail(t, fmt.Sprintf(\"func %#v should panic with value:\\t%#v\\n\\tPanic value:\\t%#v\\n\\tPanic stack:\\t%s\", f, expected, panicValue, panickedStack), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// PanicsWithError asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\tassert.PanicsWithError(t, \"crazy error\", func(){ GoCrazy() })\nfunc PanicsWithError(t TestingT, errString string, f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tfuncDidPanic, panicValue, panickedStack := didPanic(f)\n\tif !funcDidPanic {\n\t\treturn Fail(t, fmt.Sprintf(\"func %#v should panic\\n\\tPanic value:\\t%#v\", f, panicValue), msgAndArgs...)\n\t}\n\tpanicErr, ok := panicValue.(error)\n\tif !ok || panicErr.Error() != errString {\n\t\treturn Fail(t, fmt.Sprintf(\"func %#v should panic with error message:\\t%#v\\n\\tPanic value:\\t%#v\\n\\tPanic stack:\\t%s\", f, errString, panicValue, panickedStack), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\tassert.NotPanics(t, func(){ RemainCalm() })\nfunc NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tif funcDidPanic, panicValue, panickedStack := didPanic(f); funcDidPanic {\n\t\treturn Fail(t, fmt.Sprintf(\"func %#v should not panic\\n\\tPanic value:\\t%v\\n\\tPanic stack:\\t%s\", f, panicValue, panickedStack), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// WithinDuration asserts that the two times are within duration delta of each other.\n//\n//\tassert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second)\nfunc WithinDuration(t TestingT, expected, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tdt := expected.Sub(actual)\n\tif dt < -delta || dt > delta {\n\t\treturn Fail(t, fmt.Sprintf(\"Max difference between %v and %v allowed is %v, but difference was %v\", expected, actual, delta, dt), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// WithinRange asserts that a time is within a time range (inclusive).\n//\n//\tassert.WithinRange(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second))\nfunc WithinRange(t TestingT, actual, start, end time.Time, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tif end.Before(start) {\n\t\treturn Fail(t, \"Start should be before end\", msgAndArgs...)\n\t}\n\n\tif actual.Before(start) {\n\t\treturn Fail(t, fmt.Sprintf(\"Time %v expected to be in time range %v to %v, but is before the range\", actual, start, end), msgAndArgs...)\n\t} else if actual.After(end) {\n\t\treturn Fail(t, fmt.Sprintf(\"Time %v expected to be in time range %v to %v, but is after the range\", actual, start, end), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\nfunc toFloat(x interface{}) (float64, bool) {\n\tvar xf float64\n\txok := true\n\n\tswitch xn := x.(type) {\n\tcase uint:\n\t\txf = float64(xn)\n\tcase uint8:\n\t\txf = float64(xn)\n\tcase uint16:\n\t\txf = float64(xn)\n\tcase uint32:\n\t\txf = float64(xn)\n\tcase uint64:\n\t\txf = float64(xn)\n\tcase int:\n\t\txf = float64(xn)\n\tcase int8:\n\t\txf = float64(xn)\n\tcase int16:\n\t\txf = float64(xn)\n\tcase int32:\n\t\txf = float64(xn)\n\tcase int64:\n\t\txf = float64(xn)\n\tcase float32:\n\t\txf = float64(xn)\n\tcase float64:\n\t\txf = xn\n\tcase time.Duration:\n\t\txf = float64(xn)\n\tdefault:\n\t\txok = false\n\t}\n\n\treturn xf, xok\n}\n\n// InDelta asserts that the two numerals are within delta of each other.\n//\n//\tassert.InDelta(t, math.Pi, 22/7.0, 0.01)\nfunc InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\taf, aok := toFloat(expected)\n\tbf, bok := toFloat(actual)\n\n\tif !aok || !bok {\n\t\treturn Fail(t, \"Parameters must be numerical\", msgAndArgs...)\n\t}\n\n\tif math.IsNaN(af) && math.IsNaN(bf) {\n\t\treturn true\n\t}\n\n\tif math.IsNaN(af) {\n\t\treturn Fail(t, \"Expected must not be NaN\", msgAndArgs...)\n\t}\n\n\tif math.IsNaN(bf) {\n\t\treturn Fail(t, fmt.Sprintf(\"Expected %v with delta %v, but was NaN\", expected, delta), msgAndArgs...)\n\t}\n\n\tdt := af - bf\n\tif dt < -delta || dt > delta {\n\t\treturn Fail(t, fmt.Sprintf(\"Max difference between %v and %v allowed is %v, but difference was %v\", expected, actual, delta, dt), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// InDeltaSlice is the same as InDelta, except it compares two slices.\nfunc InDeltaSlice(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif expected == nil || actual == nil ||\n\t\treflect.TypeOf(actual).Kind() != reflect.Slice ||\n\t\treflect.TypeOf(expected).Kind() != reflect.Slice {\n\t\treturn Fail(t, \"Parameters must be slice\", msgAndArgs...)\n\t}\n\n\tactualSlice := reflect.ValueOf(actual)\n\texpectedSlice := reflect.ValueOf(expected)\n\n\tfor i := 0; i < actualSlice.Len(); i++ {\n\t\tresult := InDelta(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), delta, msgAndArgs...)\n\t\tif !result {\n\t\t\treturn result\n\t\t}\n\t}\n\n\treturn true\n}\n\n// InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc InDeltaMapValues(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif expected == nil || actual == nil ||\n\t\treflect.TypeOf(actual).Kind() != reflect.Map ||\n\t\treflect.TypeOf(expected).Kind() != reflect.Map {\n\t\treturn Fail(t, \"Arguments must be maps\", msgAndArgs...)\n\t}\n\n\texpectedMap := reflect.ValueOf(expected)\n\tactualMap := reflect.ValueOf(actual)\n\n\tif expectedMap.Len() != actualMap.Len() {\n\t\treturn Fail(t, \"Arguments must have the same number of keys\", msgAndArgs...)\n\t}\n\n\tfor _, k := range expectedMap.MapKeys() {\n\t\tev := expectedMap.MapIndex(k)\n\t\tav := actualMap.MapIndex(k)\n\n\t\tif !ev.IsValid() {\n\t\t\treturn Fail(t, fmt.Sprintf(\"missing key %q in expected map\", k), msgAndArgs...)\n\t\t}\n\n\t\tif !av.IsValid() {\n\t\t\treturn Fail(t, fmt.Sprintf(\"missing key %q in actual map\", k), msgAndArgs...)\n\t\t}\n\n\t\tif !InDelta(\n\t\t\tt,\n\t\t\tev.Interface(),\n\t\t\tav.Interface(),\n\t\t\tdelta,\n\t\t\tmsgAndArgs...,\n\t\t) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunc calcRelativeError(expected, actual interface{}) (float64, error) {\n\taf, aok := toFloat(expected)\n\tbf, bok := toFloat(actual)\n\tif !aok || !bok {\n\t\treturn 0, fmt.Errorf(\"Parameters must be numerical\")\n\t}\n\tif math.IsNaN(af) && math.IsNaN(bf) {\n\t\treturn 0, nil\n\t}\n\tif math.IsNaN(af) {\n\t\treturn 0, errors.New(\"expected value must not be NaN\")\n\t}\n\tif af == 0 {\n\t\treturn 0, fmt.Errorf(\"expected value must have a value other than zero to calculate the relative error\")\n\t}\n\tif math.IsNaN(bf) {\n\t\treturn 0, errors.New(\"actual value must not be NaN\")\n\t}\n\n\treturn math.Abs(af-bf) / math.Abs(af), nil\n}\n\n// InEpsilon asserts that expected and actual have a relative error less than epsilon\nfunc InEpsilon(t TestingT, expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif math.IsNaN(epsilon) {\n\t\treturn Fail(t, \"epsilon must not be NaN\", msgAndArgs...)\n\t}\n\tactualEpsilon, err := calcRelativeError(expected, actual)\n\tif err != nil {\n\t\treturn Fail(t, err.Error(), msgAndArgs...)\n\t}\n\tif math.IsNaN(actualEpsilon) {\n\t\treturn Fail(t, \"relative error is NaN\", msgAndArgs...)\n\t}\n\tif actualEpsilon > epsilon {\n\t\treturn Fail(t, fmt.Sprintf(\"Relative error is too high: %#v (expected)\\n\"+\n\t\t\t\"        < %#v (actual)\", epsilon, actualEpsilon), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices.\nfunc InEpsilonSlice(t TestingT, expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tif expected == nil || actual == nil {\n\t\treturn Fail(t, \"Parameters must be slice\", msgAndArgs...)\n\t}\n\n\texpectedSlice := reflect.ValueOf(expected)\n\tactualSlice := reflect.ValueOf(actual)\n\n\tif expectedSlice.Type().Kind() != reflect.Slice {\n\t\treturn Fail(t, \"Expected value must be slice\", msgAndArgs...)\n\t}\n\n\texpectedLen := expectedSlice.Len()\n\tif !IsType(t, expected, actual) || !Len(t, actual, expectedLen) {\n\t\treturn false\n\t}\n\n\tfor i := 0; i < expectedLen; i++ {\n\t\tif !InEpsilon(t, expectedSlice.Index(i).Interface(), actualSlice.Index(i).Interface(), epsilon, \"at index %d\", i) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\n/*\n\tErrors\n*/\n\n// NoError asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if assert.NoError(t, err) {\n//\t\t   assert.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc NoError(t TestingT, err error, msgAndArgs ...interface{}) bool {\n\tif err != nil {\n\t\tif h, ok := t.(tHelper); ok {\n\t\t\th.Helper()\n\t\t}\n\t\treturn Fail(t, fmt.Sprintf(\"Received unexpected error:\\n%+v\", err), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// Error asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\tassert.Error(t, err)\nfunc Error(t TestingT, err error, msgAndArgs ...interface{}) bool {\n\tif err == nil {\n\t\tif h, ok := t.(tHelper); ok {\n\t\t\th.Helper()\n\t\t}\n\t\treturn Fail(t, \"An error is expected but got nil.\", msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// EqualError asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\tassert.EqualError(t, err,  expectedErrorString)\nfunc EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif !Error(t, theError, msgAndArgs...) {\n\t\treturn false\n\t}\n\texpected := errString\n\tactual := theError.Error()\n\t// don't need to use deep equals here, we know they are both strings\n\tif expected != actual {\n\t\treturn Fail(t, fmt.Sprintf(\"Error message not equal:\\n\"+\n\t\t\t\"expected: %q\\n\"+\n\t\t\t\"actual  : %q\", expected, actual), msgAndArgs...)\n\t}\n\treturn true\n}\n\n// ErrorContains asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\tassert.ErrorContains(t, err,  expectedErrorSubString)\nfunc ErrorContains(t TestingT, theError error, contains string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif !Error(t, theError, msgAndArgs...) {\n\t\treturn false\n\t}\n\n\tactual := theError.Error()\n\tif !strings.Contains(actual, contains) {\n\t\treturn Fail(t, fmt.Sprintf(\"Error %#v does not contain %#v\", actual, contains), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// matchRegexp return true if a specified regexp matches a string.\nfunc matchRegexp(rx interface{}, str interface{}) bool {\n\tvar r *regexp.Regexp\n\tif rr, ok := rx.(*regexp.Regexp); ok {\n\t\tr = rr\n\t} else {\n\t\tr = regexp.MustCompile(fmt.Sprint(rx))\n\t}\n\n\tswitch v := str.(type) {\n\tcase []byte:\n\t\treturn r.Match(v)\n\tcase string:\n\t\treturn r.MatchString(v)\n\tdefault:\n\t\treturn r.MatchString(fmt.Sprint(v))\n\t}\n}\n\n// Regexp asserts that a specified regexp matches a string.\n//\n//\tassert.Regexp(t, regexp.MustCompile(\"start\"), \"it's starting\")\n//\tassert.Regexp(t, \"start...$\", \"it's not starting\")\nfunc Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tmatch := matchRegexp(rx, str)\n\n\tif !match {\n\t\tFail(t, fmt.Sprintf(\"Expect \\\"%v\\\" to match \\\"%v\\\"\", str, rx), msgAndArgs...)\n\t}\n\n\treturn match\n}\n\n// NotRegexp asserts that a specified regexp does not match a string.\n//\n//\tassert.NotRegexp(t, regexp.MustCompile(\"starts\"), \"it's starting\")\n//\tassert.NotRegexp(t, \"^start\", \"it's not starting\")\nfunc NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tmatch := matchRegexp(rx, str)\n\n\tif match {\n\t\tFail(t, fmt.Sprintf(\"Expect \\\"%v\\\" to NOT match \\\"%v\\\"\", str, rx), msgAndArgs...)\n\t}\n\n\treturn !match\n}\n\n// Zero asserts that i is the zero value for its type.\nfunc Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif i != nil && !reflect.DeepEqual(i, reflect.Zero(reflect.TypeOf(i)).Interface()) {\n\t\treturn Fail(t, fmt.Sprintf(\"Should be zero, but was %v\", i), msgAndArgs...)\n\t}\n\treturn true\n}\n\n// NotZero asserts that i is not the zero value for its type.\nfunc NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif i == nil || reflect.DeepEqual(i, reflect.Zero(reflect.TypeOf(i)).Interface()) {\n\t\treturn Fail(t, fmt.Sprintf(\"Should not be zero, but was %v\", i), msgAndArgs...)\n\t}\n\treturn true\n}\n\n// FileExists checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc FileExists(t TestingT, path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tinfo, err := os.Lstat(path)\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn Fail(t, fmt.Sprintf(\"unable to find file %q\", path), msgAndArgs...)\n\t\t}\n\t\treturn Fail(t, fmt.Sprintf(\"error when running os.Lstat(%q): %s\", path, err), msgAndArgs...)\n\t}\n\tif info.IsDir() {\n\t\treturn Fail(t, fmt.Sprintf(\"%q is a directory\", path), msgAndArgs...)\n\t}\n\treturn true\n}\n\n// NoFileExists checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc NoFileExists(t TestingT, path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tinfo, err := os.Lstat(path)\n\tif err != nil {\n\t\treturn true\n\t}\n\tif info.IsDir() {\n\t\treturn true\n\t}\n\treturn Fail(t, fmt.Sprintf(\"file %q exists\", path), msgAndArgs...)\n}\n\n// DirExists checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc DirExists(t TestingT, path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tinfo, err := os.Lstat(path)\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn Fail(t, fmt.Sprintf(\"unable to find file %q\", path), msgAndArgs...)\n\t\t}\n\t\treturn Fail(t, fmt.Sprintf(\"error when running os.Lstat(%q): %s\", path, err), msgAndArgs...)\n\t}\n\tif !info.IsDir() {\n\t\treturn Fail(t, fmt.Sprintf(\"%q is a file\", path), msgAndArgs...)\n\t}\n\treturn true\n}\n\n// NoDirExists checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc NoDirExists(t TestingT, path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tinfo, err := os.Lstat(path)\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn true\n\t\t}\n\t\treturn true\n\t}\n\tif !info.IsDir() {\n\t\treturn true\n\t}\n\treturn Fail(t, fmt.Sprintf(\"directory %q exists\", path), msgAndArgs...)\n}\n\n// JSONEq asserts that two JSON strings are equivalent.\n//\n//\tassert.JSONEq(t, `{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`)\nfunc JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tvar expectedJSONAsInterface, actualJSONAsInterface interface{}\n\n\tif err := json.Unmarshal([]byte(expected), &expectedJSONAsInterface); err != nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Expected value ('%s') is not valid json.\\nJSON parsing error: '%s'\", expected, err.Error()), msgAndArgs...)\n\t}\n\n\t// Shortcut if same bytes\n\tif actual == expected {\n\t\treturn true\n\t}\n\n\tif err := json.Unmarshal([]byte(actual), &actualJSONAsInterface); err != nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Input ('%s') needs to be valid json.\\nJSON parsing error: '%s'\", actual, err.Error()), msgAndArgs...)\n\t}\n\n\treturn Equal(t, expectedJSONAsInterface, actualJSONAsInterface, msgAndArgs...)\n}\n\n// YAMLEq asserts that two YAML strings are equivalent.\nfunc YAMLEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tvar expectedYAMLAsInterface, actualYAMLAsInterface interface{}\n\n\tif err := yaml.Unmarshal([]byte(expected), &expectedYAMLAsInterface); err != nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Expected value ('%s') is not valid yaml.\\nYAML parsing error: '%s'\", expected, err.Error()), msgAndArgs...)\n\t}\n\n\t// Shortcut if same bytes\n\tif actual == expected {\n\t\treturn true\n\t}\n\n\tif err := yaml.Unmarshal([]byte(actual), &actualYAMLAsInterface); err != nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Input ('%s') needs to be valid yaml.\\nYAML error: '%s'\", actual, err.Error()), msgAndArgs...)\n\t}\n\n\treturn Equal(t, expectedYAMLAsInterface, actualYAMLAsInterface, msgAndArgs...)\n}\n\nfunc typeAndKind(v interface{}) (reflect.Type, reflect.Kind) {\n\tt := reflect.TypeOf(v)\n\tk := t.Kind()\n\n\tif k == reflect.Ptr {\n\t\tt = t.Elem()\n\t\tk = t.Kind()\n\t}\n\treturn t, k\n}\n\n// diff returns a diff of both values as long as both are of the same type and\n// are a struct, map, slice, array or string. Otherwise it returns an empty string.\nfunc diff(expected interface{}, actual interface{}) string {\n\tif expected == nil || actual == nil {\n\t\treturn \"\"\n\t}\n\n\tet, ek := typeAndKind(expected)\n\tat, _ := typeAndKind(actual)\n\n\tif et != at {\n\t\treturn \"\"\n\t}\n\n\tif ek != reflect.Struct && ek != reflect.Map && ek != reflect.Slice && ek != reflect.Array && ek != reflect.String {\n\t\treturn \"\"\n\t}\n\n\tvar e, a string\n\n\tswitch et {\n\tcase reflect.TypeOf(\"\"):\n\t\te = reflect.ValueOf(expected).String()\n\t\ta = reflect.ValueOf(actual).String()\n\tcase reflect.TypeOf(time.Time{}):\n\t\te = spewConfigStringerEnabled.Sdump(expected)\n\t\ta = spewConfigStringerEnabled.Sdump(actual)\n\tdefault:\n\t\te = spewConfig.Sdump(expected)\n\t\ta = spewConfig.Sdump(actual)\n\t}\n\n\tdiff, _ := difflib.GetUnifiedDiffString(difflib.UnifiedDiff{\n\t\tA:        difflib.SplitLines(e),\n\t\tB:        difflib.SplitLines(a),\n\t\tFromFile: \"Expected\",\n\t\tFromDate: \"\",\n\t\tToFile:   \"Actual\",\n\t\tToDate:   \"\",\n\t\tContext:  1,\n\t})\n\n\treturn \"\\n\\nDiff:\\n\" + diff\n}\n\nfunc isFunction(arg interface{}) bool {\n\tif arg == nil {\n\t\treturn false\n\t}\n\treturn reflect.TypeOf(arg).Kind() == reflect.Func\n}\n\nvar spewConfig = spew.ConfigState{\n\tIndent:                  \" \",\n\tDisablePointerAddresses: true,\n\tDisableCapacities:       true,\n\tSortKeys:                true,\n\tDisableMethods:          true,\n\tMaxDepth:                10,\n}\n\nvar spewConfigStringerEnabled = spew.ConfigState{\n\tIndent:                  \" \",\n\tDisablePointerAddresses: true,\n\tDisableCapacities:       true,\n\tSortKeys:                true,\n\tMaxDepth:                10,\n}\n\ntype tHelper = interface {\n\tHelper()\n}\n\n// Eventually asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\tassert.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond)\nfunc Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tch := make(chan bool, 1)\n\tcheckCond := func() { ch <- condition() }\n\n\ttimer := time.NewTimer(waitFor)\n\tdefer timer.Stop()\n\n\tticker := time.NewTicker(tick)\n\tdefer ticker.Stop()\n\n\tvar tickC <-chan time.Time\n\n\t// Check the condition once first on the initial call.\n\tgo checkCond()\n\n\tfor {\n\t\tselect {\n\t\tcase <-timer.C:\n\t\t\treturn Fail(t, \"Condition never satisfied\", msgAndArgs...)\n\t\tcase <-tickC:\n\t\t\ttickC = nil\n\t\t\tgo checkCond()\n\t\tcase v := <-ch:\n\t\t\tif v {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\ttickC = ticker.C\n\t\t}\n\t}\n}\n\n// CollectT implements the TestingT interface and collects all errors.\ntype CollectT struct {\n\t// A slice of errors. Non-nil slice denotes a failure.\n\t// If it's non-nil but len(c.errors) == 0, this is also a failure\n\t// obtained by direct c.FailNow() call.\n\terrors []error\n}\n\n// Helper is like [testing.T.Helper] but does nothing.\nfunc (CollectT) Helper() {}\n\n// Errorf collects the error.\nfunc (c *CollectT) Errorf(format string, args ...interface{}) {\n\tc.errors = append(c.errors, fmt.Errorf(format, args...))\n}\n\n// FailNow stops execution by calling runtime.Goexit.\nfunc (c *CollectT) FailNow() {\n\tc.fail()\n\truntime.Goexit()\n}\n\n// Deprecated: That was a method for internal usage that should not have been published. Now just panics.\nfunc (*CollectT) Reset() {\n\tpanic(\"Reset() is deprecated\")\n}\n\n// Deprecated: That was a method for internal usage that should not have been published. Now just panics.\nfunc (*CollectT) Copy(TestingT) {\n\tpanic(\"Copy() is deprecated\")\n}\n\nfunc (c *CollectT) fail() {\n\tif !c.failed() {\n\t\tc.errors = []error{} // Make it non-nil to mark a failure.\n\t}\n}\n\nfunc (c *CollectT) failed() bool {\n\treturn c.errors != nil\n}\n\n// EventuallyWithT asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\tassert.EventuallyWithT(t, func(c *assert.CollectT) {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\tassert.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc EventuallyWithT(t TestingT, condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tvar lastFinishedTickErrs []error\n\tch := make(chan *CollectT, 1)\n\n\tcheckCond := func() {\n\t\tcollect := new(CollectT)\n\t\tdefer func() {\n\t\t\tch <- collect\n\t\t}()\n\t\tcondition(collect)\n\t}\n\n\ttimer := time.NewTimer(waitFor)\n\tdefer timer.Stop()\n\n\tticker := time.NewTicker(tick)\n\tdefer ticker.Stop()\n\n\tvar tickC <-chan time.Time\n\n\t// Check the condition once first on the initial call.\n\tgo checkCond()\n\n\tfor {\n\t\tselect {\n\t\tcase <-timer.C:\n\t\t\tfor _, err := range lastFinishedTickErrs {\n\t\t\t\tt.Errorf(\"%v\", err)\n\t\t\t}\n\t\t\treturn Fail(t, \"Condition never satisfied\", msgAndArgs...)\n\t\tcase <-tickC:\n\t\t\ttickC = nil\n\t\t\tgo checkCond()\n\t\tcase collect := <-ch:\n\t\t\tif !collect.failed() {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Keep the errors from the last ended condition, so that they can be copied to t if timeout is reached.\n\t\t\tlastFinishedTickErrs = collect.errors\n\t\t\ttickC = ticker.C\n\t\t}\n\t}\n}\n\n// Never asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\tassert.Never(t, func() bool { return false; }, time.Second, 10*time.Millisecond)\nfunc Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tch := make(chan bool, 1)\n\tcheckCond := func() { ch <- condition() }\n\n\ttimer := time.NewTimer(waitFor)\n\tdefer timer.Stop()\n\n\tticker := time.NewTicker(tick)\n\tdefer ticker.Stop()\n\n\tvar tickC <-chan time.Time\n\n\t// Check the condition once first on the initial call.\n\tgo checkCond()\n\n\tfor {\n\t\tselect {\n\t\tcase <-timer.C:\n\t\t\treturn true\n\t\tcase <-tickC:\n\t\t\ttickC = nil\n\t\t\tgo checkCond()\n\t\tcase v := <-ch:\n\t\t\tif v {\n\t\t\t\treturn Fail(t, \"Condition satisfied\", msgAndArgs...)\n\t\t\t}\n\t\t\ttickC = ticker.C\n\t\t}\n\t}\n}\n\n// ErrorIs asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc ErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif errors.Is(err, target) {\n\t\treturn true\n\t}\n\n\tvar expectedText string\n\tif target != nil {\n\t\texpectedText = target.Error()\n\t\tif err == nil {\n\t\t\treturn Fail(t, fmt.Sprintf(\"Expected error with %q in chain but got nil.\", expectedText), msgAndArgs...)\n\t\t}\n\t}\n\n\tchain := buildErrorChainString(err, false)\n\n\treturn Fail(t, fmt.Sprintf(\"Target error should be in err chain:\\n\"+\n\t\t\"expected: %q\\n\"+\n\t\t\"in chain: %s\", expectedText, chain,\n\t), msgAndArgs...)\n}\n\n// NotErrorIs asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc NotErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif !errors.Is(err, target) {\n\t\treturn true\n\t}\n\n\tvar expectedText string\n\tif target != nil {\n\t\texpectedText = target.Error()\n\t}\n\n\tchain := buildErrorChainString(err, false)\n\n\treturn Fail(t, fmt.Sprintf(\"Target error should not be in err chain:\\n\"+\n\t\t\"found: %q\\n\"+\n\t\t\"in chain: %s\", expectedText, chain,\n\t), msgAndArgs...)\n}\n\n// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc ErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif errors.As(err, target) {\n\t\treturn true\n\t}\n\n\texpectedType := reflect.TypeOf(target).Elem().String()\n\tif err == nil {\n\t\treturn Fail(t, fmt.Sprintf(\"An error is expected but got nil.\\n\"+\n\t\t\t\"expected: %s\", expectedType), msgAndArgs...)\n\t}\n\n\tchain := buildErrorChainString(err, true)\n\n\treturn Fail(t, fmt.Sprintf(\"Should be in error chain:\\n\"+\n\t\t\"expected: %s\\n\"+\n\t\t\"in chain: %s\", expectedType, chain,\n\t), msgAndArgs...)\n}\n\n// NotErrorAs asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc NotErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif !errors.As(err, target) {\n\t\treturn true\n\t}\n\n\tchain := buildErrorChainString(err, true)\n\n\treturn Fail(t, fmt.Sprintf(\"Target error should not be in err chain:\\n\"+\n\t\t\"found: %s\\n\"+\n\t\t\"in chain: %s\", reflect.TypeOf(target).Elem().String(), chain,\n\t), msgAndArgs...)\n}\n\nfunc unwrapAll(err error) (errs []error) {\n\terrs = append(errs, err)\n\tswitch x := err.(type) {\n\tcase interface{ Unwrap() error }:\n\t\terr = x.Unwrap()\n\t\tif err == nil {\n\t\t\treturn\n\t\t}\n\t\terrs = append(errs, unwrapAll(err)...)\n\tcase interface{ Unwrap() []error }:\n\t\tfor _, err := range x.Unwrap() {\n\t\t\terrs = append(errs, unwrapAll(err)...)\n\t\t}\n\t}\n\treturn\n}\n\nfunc buildErrorChainString(err error, withType bool) string {\n\tif err == nil {\n\t\treturn \"\"\n\t}\n\n\tvar chain string\n\terrs := unwrapAll(err)\n\tfor i := range errs {\n\t\tif i != 0 {\n\t\t\tchain += \"\\n\\t\"\n\t\t}\n\t\tchain += fmt.Sprintf(\"%q\", errs[i].Error())\n\t\tif withType {\n\t\t\tchain += fmt.Sprintf(\" (%T)\", errs[i])\n\t\t}\n\t}\n\treturn chain\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/doc.go",
    "content": "// Package assert provides a set of comprehensive testing tools for use with the normal Go testing system.\n//\n// # Note\n//\n// All functions in this package return a bool value indicating whether the assertion has passed.\n//\n// # Example Usage\n//\n// The following is a complete example using assert in a standard test function:\n//\n//\timport (\n//\t  \"testing\"\n//\t  \"github.com/stretchr/testify/assert\"\n//\t)\n//\n//\tfunc TestSomething(t *testing.T) {\n//\n//\t  var a string = \"Hello\"\n//\t  var b string = \"Hello\"\n//\n//\t  assert.Equal(t, a, b, \"The two words should be the same.\")\n//\n//\t}\n//\n// if you assert many times, use the format below:\n//\n//\timport (\n//\t  \"testing\"\n//\t  \"github.com/stretchr/testify/assert\"\n//\t)\n//\n//\tfunc TestSomething(t *testing.T) {\n//\t  assert := assert.New(t)\n//\n//\t  var a string = \"Hello\"\n//\t  var b string = \"Hello\"\n//\n//\t  assert.Equal(a, b, \"The two words should be the same.\")\n//\t}\n//\n// # Assertions\n//\n// Assertions allow you to easily write test code, and are global funcs in the `assert` package.\n// All assertion functions take, as the first argument, the `*testing.T` object provided by the\n// testing framework. This allows the assertion funcs to write the failings and other details to\n// the correct place.\n//\n// Every assertion function also takes an optional string message as the final argument,\n// allowing custom error messages to be appended to the message the assertion method outputs.\npackage assert\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/errors.go",
    "content": "package assert\n\nimport (\n\t\"errors\"\n)\n\n// AnError is an error instance useful for testing.  If the code does not care\n// about error specifics, and only needs to return the error for example, this\n// error should be used to make the test code more readable.\nvar AnError = errors.New(\"assert.AnError general error for testing\")\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/forward_assertions.go",
    "content": "package assert\n\n// Assertions provides assertion methods around the\n// TestingT interface.\ntype Assertions struct {\n\tt TestingT\n}\n\n// New makes a new Assertions object for the specified TestingT.\nfunc New(t TestingT) *Assertions {\n\treturn &Assertions{\n\t\tt: t,\n\t}\n}\n\n//go:generate sh -c \"cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_forward.go.tmpl -include-format-funcs\"\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/http_assertions.go",
    "content": "package assert\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"net/url\"\n\t\"strings\"\n)\n\n// httpCode is a helper that returns HTTP code of the response. It returns -1 and\n// an error if building a new request fails.\nfunc httpCode(handler http.HandlerFunc, method, url string, values url.Values) (int, error) {\n\tw := httptest.NewRecorder()\n\treq, err := http.NewRequest(method, url, http.NoBody)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\treq.URL.RawQuery = values.Encode()\n\thandler(w, req)\n\treturn w.Code, nil\n}\n\n// HTTPSuccess asserts that a specified handler returns a success status code.\n//\n//\tassert.HTTPSuccess(t, myHandler, \"POST\", \"http://www.google.com\", nil)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPSuccess(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tcode, err := httpCode(handler, method, url, values)\n\tif err != nil {\n\t\tFail(t, fmt.Sprintf(\"Failed to build test request, got error: %s\", err), msgAndArgs...)\n\t}\n\n\tisSuccessCode := code >= http.StatusOK && code <= http.StatusPartialContent\n\tif !isSuccessCode {\n\t\tFail(t, fmt.Sprintf(\"Expected HTTP success status code for %q but received %d\", url+\"?\"+values.Encode(), code), msgAndArgs...)\n\t}\n\n\treturn isSuccessCode\n}\n\n// HTTPRedirect asserts that a specified handler returns a redirect status code.\n//\n//\tassert.HTTPRedirect(t, myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPRedirect(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tcode, err := httpCode(handler, method, url, values)\n\tif err != nil {\n\t\tFail(t, fmt.Sprintf(\"Failed to build test request, got error: %s\", err), msgAndArgs...)\n\t}\n\n\tisRedirectCode := code >= http.StatusMultipleChoices && code <= http.StatusTemporaryRedirect\n\tif !isRedirectCode {\n\t\tFail(t, fmt.Sprintf(\"Expected HTTP redirect status code for %q but received %d\", url+\"?\"+values.Encode(), code), msgAndArgs...)\n\t}\n\n\treturn isRedirectCode\n}\n\n// HTTPError asserts that a specified handler returns an error status code.\n//\n//\tassert.HTTPError(t, myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPError(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tcode, err := httpCode(handler, method, url, values)\n\tif err != nil {\n\t\tFail(t, fmt.Sprintf(\"Failed to build test request, got error: %s\", err), msgAndArgs...)\n\t}\n\n\tisErrorCode := code >= http.StatusBadRequest\n\tif !isErrorCode {\n\t\tFail(t, fmt.Sprintf(\"Expected HTTP error status code for %q but received %d\", url+\"?\"+values.Encode(), code), msgAndArgs...)\n\t}\n\n\treturn isErrorCode\n}\n\n// HTTPStatusCode asserts that a specified handler returns a specified status code.\n//\n//\tassert.HTTPStatusCode(t, myHandler, \"GET\", \"/notImplemented\", nil, 501)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPStatusCode(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tcode, err := httpCode(handler, method, url, values)\n\tif err != nil {\n\t\tFail(t, fmt.Sprintf(\"Failed to build test request, got error: %s\", err), msgAndArgs...)\n\t}\n\n\tsuccessful := code == statuscode\n\tif !successful {\n\t\tFail(t, fmt.Sprintf(\"Expected HTTP status code %d for %q but received %d\", statuscode, url+\"?\"+values.Encode(), code), msgAndArgs...)\n\t}\n\n\treturn successful\n}\n\n// HTTPBody is a helper that returns HTTP body of the response. It returns\n// empty string if building a new request fails.\nfunc HTTPBody(handler http.HandlerFunc, method, url string, values url.Values) string {\n\tw := httptest.NewRecorder()\n\tif len(values) > 0 {\n\t\turl += \"?\" + values.Encode()\n\t}\n\treq, err := http.NewRequest(method, url, http.NoBody)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\thandler(w, req)\n\treturn w.Body.String()\n}\n\n// HTTPBodyContains asserts that a specified handler returns a\n// body that contains a string.\n//\n//\tassert.HTTPBodyContains(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tbody := HTTPBody(handler, method, url, values)\n\n\tcontains := strings.Contains(body, fmt.Sprint(str))\n\tif !contains {\n\t\tFail(t, fmt.Sprintf(\"Expected response body for %q to contain %q but found %q\", url+\"?\"+values.Encode(), str, body), msgAndArgs...)\n\t}\n\n\treturn contains\n}\n\n// HTTPBodyNotContains asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\tassert.HTTPBodyNotContains(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tbody := HTTPBody(handler, method, url, values)\n\n\tcontains := strings.Contains(body, fmt.Sprint(str))\n\tif contains {\n\t\tFail(t, fmt.Sprintf(\"Expected response body for %q to NOT contain %q but found %q\", url+\"?\"+values.Encode(), str, body), msgAndArgs...)\n\t}\n\n\treturn !contains\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go",
    "content": "//go:build testify_yaml_custom && !testify_yaml_fail && !testify_yaml_default\n\n// Package yaml is an implementation of YAML functions that calls a pluggable implementation.\n//\n// This implementation is selected with the testify_yaml_custom build tag.\n//\n//\tgo test -tags testify_yaml_custom\n//\n// This implementation can be used at build time to replace the default implementation\n// to avoid linking with [gopkg.in/yaml.v3].\n//\n// In your test package:\n//\n//\t\timport assertYaml \"github.com/stretchr/testify/assert/yaml\"\n//\n//\t\tfunc init() {\n//\t\t\tassertYaml.Unmarshal = func (in []byte, out interface{}) error {\n//\t\t\t\t// ...\n//\t     \t\t\treturn nil\n//\t\t\t}\n//\t\t}\npackage yaml\n\nvar Unmarshal func(in []byte, out interface{}) error\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go",
    "content": "//go:build !testify_yaml_fail && !testify_yaml_custom\n\n// Package yaml is just an indirection to handle YAML deserialization.\n//\n// This package is just an indirection that allows the builder to override the\n// indirection with an alternative implementation of this package that uses\n// another implementation of YAML deserialization. This allows to not either not\n// use YAML deserialization at all, or to use another implementation than\n// [gopkg.in/yaml.v3] (for example for license compatibility reasons, see [PR #1120]).\n//\n// Alternative implementations are selected using build tags:\n//\n//   - testify_yaml_fail: [Unmarshal] always fails with an error\n//   - testify_yaml_custom: [Unmarshal] is a variable. Caller must initialize it\n//     before calling any of [github.com/stretchr/testify/assert.YAMLEq] or\n//     [github.com/stretchr/testify/assert.YAMLEqf].\n//\n// Usage:\n//\n//\tgo test -tags testify_yaml_fail\n//\n// You can check with \"go list\" which implementation is linked:\n//\n//\tgo list -f '{{.Imports}}' github.com/stretchr/testify/assert/yaml\n//\tgo list -tags testify_yaml_fail -f '{{.Imports}}' github.com/stretchr/testify/assert/yaml\n//\tgo list -tags testify_yaml_custom -f '{{.Imports}}' github.com/stretchr/testify/assert/yaml\n//\n// [PR #1120]: https://github.com/stretchr/testify/pull/1120\npackage yaml\n\nimport goyaml \"gopkg.in/yaml.v3\"\n\n// Unmarshal is just a wrapper of [gopkg.in/yaml.v3.Unmarshal].\nfunc Unmarshal(in []byte, out interface{}) error {\n\treturn goyaml.Unmarshal(in, out)\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go",
    "content": "//go:build testify_yaml_fail && !testify_yaml_custom && !testify_yaml_default\n\n// Package yaml is an implementation of YAML functions that always fail.\n//\n// This implementation can be used at build time to replace the default implementation\n// to avoid linking with [gopkg.in/yaml.v3]:\n//\n//\tgo test -tags testify_yaml_fail\npackage yaml\n\nimport \"errors\"\n\nvar errNotImplemented = errors.New(\"YAML functions are not available (see https://pkg.go.dev/github.com/stretchr/testify/assert/yaml)\")\n\nfunc Unmarshal([]byte, interface{}) error {\n\treturn errNotImplemented\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/doc.go",
    "content": "// Package require implements the same assertions as the `assert` package but\n// stops test execution when a test fails.\n//\n// # Example Usage\n//\n// The following is a complete example using require in a standard test function:\n//\n//\timport (\n//\t  \"testing\"\n//\t  \"github.com/stretchr/testify/require\"\n//\t)\n//\n//\tfunc TestSomething(t *testing.T) {\n//\n//\t  var a string = \"Hello\"\n//\t  var b string = \"Hello\"\n//\n//\t  require.Equal(t, a, b, \"The two words should be the same.\")\n//\n//\t}\n//\n// # Assertions\n//\n// The `require` package have same global functions as in the `assert` package,\n// but instead of returning a boolean result they call `t.FailNow()`.\n// A consequence of this is that it must be called from the goroutine running\n// the test function, not from other goroutines created during the test.\n//\n// Every assertion function also takes an optional string message as the final argument,\n// allowing custom error messages to be appended to the message the assertion method outputs.\npackage require\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/forward_requirements.go",
    "content": "package require\n\n// Assertions provides assertion methods around the\n// TestingT interface.\ntype Assertions struct {\n\tt TestingT\n}\n\n// New makes a new Assertions object for the specified TestingT.\nfunc New(t TestingT) *Assertions {\n\treturn &Assertions{\n\t\tt: t,\n\t}\n}\n\n//go:generate sh -c \"cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=require -template=require_forward.go.tmpl -include-format-funcs\"\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/require.go",
    "content": "// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.\n\npackage require\n\nimport (\n\tassert \"github.com/stretchr/testify/assert\"\n\thttp \"net/http\"\n\turl \"net/url\"\n\ttime \"time\"\n)\n\n// Condition uses a Comparison to assert a complex condition.\nfunc Condition(t TestingT, comp assert.Comparison, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Condition(t, comp, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Conditionf uses a Comparison to assert a complex condition.\nfunc Conditionf(t TestingT, comp assert.Comparison, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Conditionf(t, comp, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Contains asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\trequire.Contains(t, \"Hello World\", \"World\")\n//\trequire.Contains(t, [\"Hello\", \"World\"], \"World\")\n//\trequire.Contains(t, {\"Hello\": \"World\"}, \"Hello\")\nfunc Contains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Contains(t, s, contains, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Containsf asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\trequire.Containsf(t, \"Hello World\", \"World\", \"error message %s\", \"formatted\")\n//\trequire.Containsf(t, [\"Hello\", \"World\"], \"World\", \"error message %s\", \"formatted\")\n//\trequire.Containsf(t, {\"Hello\": \"World\"}, \"Hello\", \"error message %s\", \"formatted\")\nfunc Containsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Containsf(t, s, contains, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// DirExists checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc DirExists(t TestingT, path string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.DirExists(t, path, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// DirExistsf checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc DirExistsf(t TestingT, path string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.DirExistsf(t, path, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ElementsMatch asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// require.ElementsMatch(t, [1, 3, 2, 3], [1, 3, 3, 2])\nfunc ElementsMatch(t TestingT, listA interface{}, listB interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ElementsMatch(t, listA, listB, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// require.ElementsMatchf(t, [1, 3, 2, 3], [1, 3, 3, 2], \"error message %s\", \"formatted\")\nfunc ElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ElementsMatchf(t, listA, listB, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Empty asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\trequire.Empty(t, obj)\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Empty(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Emptyf asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\trequire.Emptyf(t, obj, \"error message %s\", \"formatted\")\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Emptyf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Equal asserts that two objects are equal.\n//\n//\trequire.Equal(t, 123, 123)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc Equal(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Equal(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EqualError asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\trequire.EqualError(t, err,  expectedErrorString)\nfunc EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EqualError(t, theError, errString, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EqualErrorf asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\trequire.EqualErrorf(t, err,  expectedErrorString, \"error message %s\", \"formatted\")\nfunc EqualErrorf(t TestingT, theError error, errString string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EqualErrorf(t, theError, errString, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EqualExportedValues asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t require.EqualExportedValues(t, S{1, 2}, S{1, 3}) => true\n//\t require.EqualExportedValues(t, S{1, 2}, S{2, 3}) => false\nfunc EqualExportedValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EqualExportedValues(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EqualExportedValuesf asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t require.EqualExportedValuesf(t, S{1, 2}, S{1, 3}, \"error message %s\", \"formatted\") => true\n//\t require.EqualExportedValuesf(t, S{1, 2}, S{2, 3}, \"error message %s\", \"formatted\") => false\nfunc EqualExportedValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EqualExportedValuesf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EqualValues asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\trequire.EqualValues(t, uint32(123), int32(123))\nfunc EqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EqualValues(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EqualValuesf asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\trequire.EqualValuesf(t, uint32(123), int32(123), \"error message %s\", \"formatted\")\nfunc EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EqualValuesf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Equalf asserts that two objects are equal.\n//\n//\trequire.Equalf(t, 123, 123, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc Equalf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Equalf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Error asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\trequire.Error(t, err)\nfunc Error(t TestingT, err error, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Error(t, err, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc ErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ErrorAs(t, err, target, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc ErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ErrorAsf(t, err, target, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ErrorContains asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\trequire.ErrorContains(t, err,  expectedErrorSubString)\nfunc ErrorContains(t TestingT, theError error, contains string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ErrorContains(t, theError, contains, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ErrorContainsf asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\trequire.ErrorContainsf(t, err,  expectedErrorSubString, \"error message %s\", \"formatted\")\nfunc ErrorContainsf(t TestingT, theError error, contains string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ErrorContainsf(t, theError, contains, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ErrorIs asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc ErrorIs(t TestingT, err error, target error, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ErrorIs(t, err, target, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ErrorIsf asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc ErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ErrorIsf(t, err, target, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Errorf asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\trequire.Errorf(t, err, \"error message %s\", \"formatted\")\nfunc Errorf(t TestingT, err error, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Errorf(t, err, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Eventually asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\trequire.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond)\nfunc Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Eventually(t, condition, waitFor, tick, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EventuallyWithT asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\trequire.EventuallyWithT(t, func(c *require.CollectT) {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\trequire.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc EventuallyWithT(t TestingT, condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EventuallyWithT(t, condition, waitFor, tick, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EventuallyWithTf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\trequire.EventuallyWithTf(t, func(c *require.CollectT, \"error message %s\", \"formatted\") {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\trequire.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc EventuallyWithTf(t TestingT, condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EventuallyWithTf(t, condition, waitFor, tick, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Eventuallyf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\trequire.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Eventuallyf(t, condition, waitFor, tick, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Exactly asserts that two objects are equal in value and type.\n//\n//\trequire.Exactly(t, int32(123), int64(123))\nfunc Exactly(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Exactly(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Exactlyf asserts that two objects are equal in value and type.\n//\n//\trequire.Exactlyf(t, int32(123), int64(123), \"error message %s\", \"formatted\")\nfunc Exactlyf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Exactlyf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Fail reports a failure through\nfunc Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Fail(t, failureMessage, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// FailNow fails test\nfunc FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.FailNow(t, failureMessage, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// FailNowf fails test\nfunc FailNowf(t TestingT, failureMessage string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.FailNowf(t, failureMessage, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Failf reports a failure through\nfunc Failf(t TestingT, failureMessage string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Failf(t, failureMessage, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// False asserts that the specified value is false.\n//\n//\trequire.False(t, myBool)\nfunc False(t TestingT, value bool, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.False(t, value, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Falsef asserts that the specified value is false.\n//\n//\trequire.Falsef(t, myBool, \"error message %s\", \"formatted\")\nfunc Falsef(t TestingT, value bool, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Falsef(t, value, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// FileExists checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc FileExists(t TestingT, path string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.FileExists(t, path, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// FileExistsf checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc FileExistsf(t TestingT, path string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.FileExistsf(t, path, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Greater asserts that the first element is greater than the second\n//\n//\trequire.Greater(t, 2, 1)\n//\trequire.Greater(t, float64(2), float64(1))\n//\trequire.Greater(t, \"b\", \"a\")\nfunc Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Greater(t, e1, e2, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// GreaterOrEqual asserts that the first element is greater than or equal to the second\n//\n//\trequire.GreaterOrEqual(t, 2, 1)\n//\trequire.GreaterOrEqual(t, 2, 2)\n//\trequire.GreaterOrEqual(t, \"b\", \"a\")\n//\trequire.GreaterOrEqual(t, \"b\", \"b\")\nfunc GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.GreaterOrEqual(t, e1, e2, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// GreaterOrEqualf asserts that the first element is greater than or equal to the second\n//\n//\trequire.GreaterOrEqualf(t, 2, 1, \"error message %s\", \"formatted\")\n//\trequire.GreaterOrEqualf(t, 2, 2, \"error message %s\", \"formatted\")\n//\trequire.GreaterOrEqualf(t, \"b\", \"a\", \"error message %s\", \"formatted\")\n//\trequire.GreaterOrEqualf(t, \"b\", \"b\", \"error message %s\", \"formatted\")\nfunc GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.GreaterOrEqualf(t, e1, e2, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Greaterf asserts that the first element is greater than the second\n//\n//\trequire.Greaterf(t, 2, 1, \"error message %s\", \"formatted\")\n//\trequire.Greaterf(t, float64(2), float64(1), \"error message %s\", \"formatted\")\n//\trequire.Greaterf(t, \"b\", \"a\", \"error message %s\", \"formatted\")\nfunc Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Greaterf(t, e1, e2, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPBodyContains asserts that a specified handler returns a\n// body that contains a string.\n//\n//\trequire.HTTPBodyContains(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyContains(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPBodyContains(t, handler, method, url, values, str, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPBodyContainsf asserts that a specified handler returns a\n// body that contains a string.\n//\n//\trequire.HTTPBodyContainsf(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPBodyContainsf(t, handler, method, url, values, str, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPBodyNotContains asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\trequire.HTTPBodyNotContains(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPBodyNotContains(t, handler, method, url, values, str, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPBodyNotContainsf asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\trequire.HTTPBodyNotContainsf(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPBodyNotContainsf(t, handler, method, url, values, str, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPError asserts that a specified handler returns an error status code.\n//\n//\trequire.HTTPError(t, myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPError(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPError(t, handler, method, url, values, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPErrorf asserts that a specified handler returns an error status code.\n//\n//\trequire.HTTPErrorf(t, myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPErrorf(t, handler, method, url, values, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPRedirect asserts that a specified handler returns a redirect status code.\n//\n//\trequire.HTTPRedirect(t, myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPRedirect(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPRedirect(t, handler, method, url, values, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPRedirectf asserts that a specified handler returns a redirect status code.\n//\n//\trequire.HTTPRedirectf(t, myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPRedirectf(t, handler, method, url, values, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPStatusCode asserts that a specified handler returns a specified status code.\n//\n//\trequire.HTTPStatusCode(t, myHandler, \"GET\", \"/notImplemented\", nil, 501)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPStatusCode(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPStatusCode(t, handler, method, url, values, statuscode, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPStatusCodef asserts that a specified handler returns a specified status code.\n//\n//\trequire.HTTPStatusCodef(t, myHandler, \"GET\", \"/notImplemented\", nil, 501, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPStatusCodef(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPStatusCodef(t, handler, method, url, values, statuscode, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPSuccess asserts that a specified handler returns a success status code.\n//\n//\trequire.HTTPSuccess(t, myHandler, \"POST\", \"http://www.google.com\", nil)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPSuccess(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPSuccess(t, handler, method, url, values, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPSuccessf asserts that a specified handler returns a success status code.\n//\n//\trequire.HTTPSuccessf(t, myHandler, \"POST\", \"http://www.google.com\", nil, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPSuccessf(t, handler, method, url, values, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Implements asserts that an object is implemented by the specified interface.\n//\n//\trequire.Implements(t, (*MyInterface)(nil), new(MyObject))\nfunc Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Implements(t, interfaceObject, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Implementsf asserts that an object is implemented by the specified interface.\n//\n//\trequire.Implementsf(t, (*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc Implementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Implementsf(t, interfaceObject, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InDelta asserts that the two numerals are within delta of each other.\n//\n//\trequire.InDelta(t, math.Pi, 22/7.0, 0.01)\nfunc InDelta(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InDelta(t, expected, actual, delta, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc InDeltaMapValues(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InDeltaMapValues(t, expected, actual, delta, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc InDeltaMapValuesf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InDeltaMapValuesf(t, expected, actual, delta, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InDeltaSlice is the same as InDelta, except it compares two slices.\nfunc InDeltaSlice(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InDeltaSlice(t, expected, actual, delta, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InDeltaSlicef is the same as InDelta, except it compares two slices.\nfunc InDeltaSlicef(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InDeltaSlicef(t, expected, actual, delta, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InDeltaf asserts that the two numerals are within delta of each other.\n//\n//\trequire.InDeltaf(t, math.Pi, 22/7.0, 0.01, \"error message %s\", \"formatted\")\nfunc InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InDeltaf(t, expected, actual, delta, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InEpsilon asserts that expected and actual have a relative error less than epsilon\nfunc InEpsilon(t TestingT, expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InEpsilon(t, expected, actual, epsilon, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices.\nfunc InEpsilonSlice(t TestingT, expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InEpsilonSlice(t, expected, actual, epsilon, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices.\nfunc InEpsilonSlicef(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InEpsilonSlicef(t, expected, actual, epsilon, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InEpsilonf asserts that expected and actual have a relative error less than epsilon\nfunc InEpsilonf(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InEpsilonf(t, expected, actual, epsilon, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsDecreasing asserts that the collection is decreasing\n//\n//\trequire.IsDecreasing(t, []int{2, 1, 0})\n//\trequire.IsDecreasing(t, []float{2, 1})\n//\trequire.IsDecreasing(t, []string{\"b\", \"a\"})\nfunc IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsDecreasing(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsDecreasingf asserts that the collection is decreasing\n//\n//\trequire.IsDecreasingf(t, []int{2, 1, 0}, \"error message %s\", \"formatted\")\n//\trequire.IsDecreasingf(t, []float{2, 1}, \"error message %s\", \"formatted\")\n//\trequire.IsDecreasingf(t, []string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsDecreasingf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsIncreasing asserts that the collection is increasing\n//\n//\trequire.IsIncreasing(t, []int{1, 2, 3})\n//\trequire.IsIncreasing(t, []float{1, 2})\n//\trequire.IsIncreasing(t, []string{\"a\", \"b\"})\nfunc IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsIncreasing(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsIncreasingf asserts that the collection is increasing\n//\n//\trequire.IsIncreasingf(t, []int{1, 2, 3}, \"error message %s\", \"formatted\")\n//\trequire.IsIncreasingf(t, []float{1, 2}, \"error message %s\", \"formatted\")\n//\trequire.IsIncreasingf(t, []string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsIncreasingf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsNonDecreasing asserts that the collection is not decreasing\n//\n//\trequire.IsNonDecreasing(t, []int{1, 1, 2})\n//\trequire.IsNonDecreasing(t, []float{1, 2})\n//\trequire.IsNonDecreasing(t, []string{\"a\", \"b\"})\nfunc IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsNonDecreasing(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsNonDecreasingf asserts that the collection is not decreasing\n//\n//\trequire.IsNonDecreasingf(t, []int{1, 1, 2}, \"error message %s\", \"formatted\")\n//\trequire.IsNonDecreasingf(t, []float{1, 2}, \"error message %s\", \"formatted\")\n//\trequire.IsNonDecreasingf(t, []string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsNonDecreasingf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsNonIncreasing asserts that the collection is not increasing\n//\n//\trequire.IsNonIncreasing(t, []int{2, 1, 1})\n//\trequire.IsNonIncreasing(t, []float{2, 1})\n//\trequire.IsNonIncreasing(t, []string{\"b\", \"a\"})\nfunc IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsNonIncreasing(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsNonIncreasingf asserts that the collection is not increasing\n//\n//\trequire.IsNonIncreasingf(t, []int{2, 1, 1}, \"error message %s\", \"formatted\")\n//\trequire.IsNonIncreasingf(t, []float{2, 1}, \"error message %s\", \"formatted\")\n//\trequire.IsNonIncreasingf(t, []string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc IsNonIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsNonIncreasingf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsNotType asserts that the specified objects are not of the same type.\n//\n//\trequire.IsNotType(t, &NotMyStruct{}, &MyStruct{})\nfunc IsNotType(t TestingT, theType interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsNotType(t, theType, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsNotTypef asserts that the specified objects are not of the same type.\n//\n//\trequire.IsNotTypef(t, &NotMyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc IsNotTypef(t TestingT, theType interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsNotTypef(t, theType, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsType asserts that the specified objects are of the same type.\n//\n//\trequire.IsType(t, &MyStruct{}, &MyStruct{})\nfunc IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsType(t, expectedType, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsTypef asserts that the specified objects are of the same type.\n//\n//\trequire.IsTypef(t, &MyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc IsTypef(t TestingT, expectedType interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsTypef(t, expectedType, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// JSONEq asserts that two JSON strings are equivalent.\n//\n//\trequire.JSONEq(t, `{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`)\nfunc JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.JSONEq(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// JSONEqf asserts that two JSON strings are equivalent.\n//\n//\trequire.JSONEqf(t, `{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`, \"error message %s\", \"formatted\")\nfunc JSONEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.JSONEqf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Len asserts that the specified object has specific length.\n// Len also fails if the object has a type that len() not accept.\n//\n//\trequire.Len(t, mySlice, 3)\nfunc Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Len(t, object, length, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Lenf asserts that the specified object has specific length.\n// Lenf also fails if the object has a type that len() not accept.\n//\n//\trequire.Lenf(t, mySlice, 3, \"error message %s\", \"formatted\")\nfunc Lenf(t TestingT, object interface{}, length int, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Lenf(t, object, length, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Less asserts that the first element is less than the second\n//\n//\trequire.Less(t, 1, 2)\n//\trequire.Less(t, float64(1), float64(2))\n//\trequire.Less(t, \"a\", \"b\")\nfunc Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Less(t, e1, e2, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// LessOrEqual asserts that the first element is less than or equal to the second\n//\n//\trequire.LessOrEqual(t, 1, 2)\n//\trequire.LessOrEqual(t, 2, 2)\n//\trequire.LessOrEqual(t, \"a\", \"b\")\n//\trequire.LessOrEqual(t, \"b\", \"b\")\nfunc LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.LessOrEqual(t, e1, e2, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// LessOrEqualf asserts that the first element is less than or equal to the second\n//\n//\trequire.LessOrEqualf(t, 1, 2, \"error message %s\", \"formatted\")\n//\trequire.LessOrEqualf(t, 2, 2, \"error message %s\", \"formatted\")\n//\trequire.LessOrEqualf(t, \"a\", \"b\", \"error message %s\", \"formatted\")\n//\trequire.LessOrEqualf(t, \"b\", \"b\", \"error message %s\", \"formatted\")\nfunc LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.LessOrEqualf(t, e1, e2, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Lessf asserts that the first element is less than the second\n//\n//\trequire.Lessf(t, 1, 2, \"error message %s\", \"formatted\")\n//\trequire.Lessf(t, float64(1), float64(2), \"error message %s\", \"formatted\")\n//\trequire.Lessf(t, \"a\", \"b\", \"error message %s\", \"formatted\")\nfunc Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Lessf(t, e1, e2, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Negative asserts that the specified element is negative\n//\n//\trequire.Negative(t, -1)\n//\trequire.Negative(t, -1.23)\nfunc Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Negative(t, e, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Negativef asserts that the specified element is negative\n//\n//\trequire.Negativef(t, -1, \"error message %s\", \"formatted\")\n//\trequire.Negativef(t, -1.23, \"error message %s\", \"formatted\")\nfunc Negativef(t TestingT, e interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Negativef(t, e, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Never asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\trequire.Never(t, func() bool { return false; }, time.Second, 10*time.Millisecond)\nfunc Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Never(t, condition, waitFor, tick, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Neverf asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\trequire.Neverf(t, func() bool { return false; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc Neverf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Neverf(t, condition, waitFor, tick, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Nil asserts that the specified object is nil.\n//\n//\trequire.Nil(t, err)\nfunc Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Nil(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Nilf asserts that the specified object is nil.\n//\n//\trequire.Nilf(t, err, \"error message %s\", \"formatted\")\nfunc Nilf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Nilf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NoDirExists checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc NoDirExists(t TestingT, path string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NoDirExists(t, path, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NoDirExistsf checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc NoDirExistsf(t TestingT, path string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NoDirExistsf(t, path, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NoError asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if require.NoError(t, err) {\n//\t\t   require.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc NoError(t TestingT, err error, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NoError(t, err, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NoErrorf asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if require.NoErrorf(t, err, \"error message %s\", \"formatted\") {\n//\t\t   require.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc NoErrorf(t TestingT, err error, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NoErrorf(t, err, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NoFileExists checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc NoFileExists(t TestingT, path string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NoFileExists(t, path, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NoFileExistsf checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc NoFileExistsf(t TestingT, path string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NoFileExistsf(t, path, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\trequire.NotContains(t, \"Hello World\", \"Earth\")\n//\trequire.NotContains(t, [\"Hello\", \"World\"], \"Earth\")\n//\trequire.NotContains(t, {\"Hello\": \"World\"}, \"Earth\")\nfunc NotContains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotContains(t, s, contains, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\trequire.NotContainsf(t, \"Hello World\", \"Earth\", \"error message %s\", \"formatted\")\n//\trequire.NotContainsf(t, [\"Hello\", \"World\"], \"Earth\", \"error message %s\", \"formatted\")\n//\trequire.NotContainsf(t, {\"Hello\": \"World\"}, \"Earth\", \"error message %s\", \"formatted\")\nfunc NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotContainsf(t, s, contains, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// require.NotElementsMatch(t, [1, 1, 2, 3], [1, 1, 2, 3]) -> false\n//\n// require.NotElementsMatch(t, [1, 1, 2, 3], [1, 2, 3]) -> true\n//\n// require.NotElementsMatch(t, [1, 2, 3], [1, 2, 4]) -> true\nfunc NotElementsMatch(t TestingT, listA interface{}, listB interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotElementsMatch(t, listA, listB, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// require.NotElementsMatchf(t, [1, 1, 2, 3], [1, 1, 2, 3], \"error message %s\", \"formatted\") -> false\n//\n// require.NotElementsMatchf(t, [1, 1, 2, 3], [1, 2, 3], \"error message %s\", \"formatted\") -> true\n//\n// require.NotElementsMatchf(t, [1, 2, 3], [1, 2, 4], \"error message %s\", \"formatted\") -> true\nfunc NotElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotElementsMatchf(t, listA, listB, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotEmpty asserts that the specified object is NOT [Empty].\n//\n//\tif require.NotEmpty(t, obj) {\n//\t  require.Equal(t, \"two\", obj[1])\n//\t}\nfunc NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotEmpty(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotEmptyf asserts that the specified object is NOT [Empty].\n//\n//\tif require.NotEmptyf(t, obj, \"error message %s\", \"formatted\") {\n//\t  require.Equal(t, \"two\", obj[1])\n//\t}\nfunc NotEmptyf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotEmptyf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotEqual asserts that the specified values are NOT equal.\n//\n//\trequire.NotEqual(t, obj1, obj2)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc NotEqual(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotEqual(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotEqualValues asserts that two objects are not equal even when converted to the same type\n//\n//\trequire.NotEqualValues(t, obj1, obj2)\nfunc NotEqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotEqualValues(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotEqualValuesf asserts that two objects are not equal even when converted to the same type\n//\n//\trequire.NotEqualValuesf(t, obj1, obj2, \"error message %s\", \"formatted\")\nfunc NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotEqualValuesf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotEqualf asserts that the specified values are NOT equal.\n//\n//\trequire.NotEqualf(t, obj1, obj2, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc NotEqualf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotEqualf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotErrorAs asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc NotErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotErrorAs(t, err, target, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotErrorAsf asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc NotErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotErrorAsf(t, err, target, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotErrorIs asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc NotErrorIs(t TestingT, err error, target error, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotErrorIs(t, err, target, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotErrorIsf asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc NotErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotErrorIsf(t, err, target, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotImplements asserts that an object does not implement the specified interface.\n//\n//\trequire.NotImplements(t, (*MyInterface)(nil), new(MyObject))\nfunc NotImplements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotImplements(t, interfaceObject, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotImplementsf asserts that an object does not implement the specified interface.\n//\n//\trequire.NotImplementsf(t, (*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc NotImplementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotImplementsf(t, interfaceObject, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotNil asserts that the specified object is not nil.\n//\n//\trequire.NotNil(t, err)\nfunc NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotNil(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotNilf asserts that the specified object is not nil.\n//\n//\trequire.NotNilf(t, err, \"error message %s\", \"formatted\")\nfunc NotNilf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotNilf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\trequire.NotPanics(t, func(){ RemainCalm() })\nfunc NotPanics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotPanics(t, f, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\trequire.NotPanicsf(t, func(){ RemainCalm() }, \"error message %s\", \"formatted\")\nfunc NotPanicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotPanicsf(t, f, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotRegexp asserts that a specified regexp does not match a string.\n//\n//\trequire.NotRegexp(t, regexp.MustCompile(\"starts\"), \"it's starting\")\n//\trequire.NotRegexp(t, \"^start\", \"it's not starting\")\nfunc NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotRegexp(t, rx, str, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotRegexpf asserts that a specified regexp does not match a string.\n//\n//\trequire.NotRegexpf(t, regexp.MustCompile(\"starts\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\trequire.NotRegexpf(t, \"^start\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotRegexpf(t, rx, str, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotSame asserts that two pointers do not reference the same object.\n//\n//\trequire.NotSame(t, ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc NotSame(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotSame(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotSamef asserts that two pointers do not reference the same object.\n//\n//\trequire.NotSamef(t, ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc NotSamef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotSamef(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotSubset asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\trequire.NotSubset(t, [1, 3, 4], [1, 2])\n//\trequire.NotSubset(t, {\"x\": 1, \"y\": 2}, {\"z\": 3})\n//\trequire.NotSubset(t, [1, 3, 4], {1: \"one\", 2: \"two\"})\n//\trequire.NotSubset(t, {\"x\": 1, \"y\": 2}, [\"z\"])\nfunc NotSubset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotSubset(t, list, subset, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotSubsetf asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\trequire.NotSubsetf(t, [1, 3, 4], [1, 2], \"error message %s\", \"formatted\")\n//\trequire.NotSubsetf(t, {\"x\": 1, \"y\": 2}, {\"z\": 3}, \"error message %s\", \"formatted\")\n//\trequire.NotSubsetf(t, [1, 3, 4], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\trequire.NotSubsetf(t, {\"x\": 1, \"y\": 2}, [\"z\"], \"error message %s\", \"formatted\")\nfunc NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotSubsetf(t, list, subset, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotZero asserts that i is not the zero value for its type.\nfunc NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotZero(t, i, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotZerof asserts that i is not the zero value for its type.\nfunc NotZerof(t TestingT, i interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotZerof(t, i, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Panics asserts that the code inside the specified PanicTestFunc panics.\n//\n//\trequire.Panics(t, func(){ GoCrazy() })\nfunc Panics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Panics(t, f, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// PanicsWithError asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\trequire.PanicsWithError(t, \"crazy error\", func(){ GoCrazy() })\nfunc PanicsWithError(t TestingT, errString string, f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.PanicsWithError(t, errString, f, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// PanicsWithErrorf asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\trequire.PanicsWithErrorf(t, \"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc PanicsWithErrorf(t TestingT, errString string, f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.PanicsWithErrorf(t, errString, f, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\trequire.PanicsWithValue(t, \"crazy error\", func(){ GoCrazy() })\nfunc PanicsWithValue(t TestingT, expected interface{}, f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.PanicsWithValue(t, expected, f, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\trequire.PanicsWithValuef(t, \"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc PanicsWithValuef(t TestingT, expected interface{}, f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.PanicsWithValuef(t, expected, f, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Panicsf asserts that the code inside the specified PanicTestFunc panics.\n//\n//\trequire.Panicsf(t, func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc Panicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Panicsf(t, f, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Positive asserts that the specified element is positive\n//\n//\trequire.Positive(t, 1)\n//\trequire.Positive(t, 1.23)\nfunc Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Positive(t, e, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Positivef asserts that the specified element is positive\n//\n//\trequire.Positivef(t, 1, \"error message %s\", \"formatted\")\n//\trequire.Positivef(t, 1.23, \"error message %s\", \"formatted\")\nfunc Positivef(t TestingT, e interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Positivef(t, e, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Regexp asserts that a specified regexp matches a string.\n//\n//\trequire.Regexp(t, regexp.MustCompile(\"start\"), \"it's starting\")\n//\trequire.Regexp(t, \"start...$\", \"it's not starting\")\nfunc Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Regexp(t, rx, str, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Regexpf asserts that a specified regexp matches a string.\n//\n//\trequire.Regexpf(t, regexp.MustCompile(\"start\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\trequire.Regexpf(t, \"start...$\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Regexpf(t, rx, str, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Same asserts that two pointers reference the same object.\n//\n//\trequire.Same(t, ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc Same(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Same(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Samef asserts that two pointers reference the same object.\n//\n//\trequire.Samef(t, ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc Samef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Samef(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Subset asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\trequire.Subset(t, [1, 2, 3], [1, 2])\n//\trequire.Subset(t, {\"x\": 1, \"y\": 2}, {\"x\": 1})\n//\trequire.Subset(t, [1, 2, 3], {1: \"one\", 2: \"two\"})\n//\trequire.Subset(t, {\"x\": 1, \"y\": 2}, [\"x\"])\nfunc Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Subset(t, list, subset, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Subsetf asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\trequire.Subsetf(t, [1, 2, 3], [1, 2], \"error message %s\", \"formatted\")\n//\trequire.Subsetf(t, {\"x\": 1, \"y\": 2}, {\"x\": 1}, \"error message %s\", \"formatted\")\n//\trequire.Subsetf(t, [1, 2, 3], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\trequire.Subsetf(t, {\"x\": 1, \"y\": 2}, [\"x\"], \"error message %s\", \"formatted\")\nfunc Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Subsetf(t, list, subset, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// True asserts that the specified value is true.\n//\n//\trequire.True(t, myBool)\nfunc True(t TestingT, value bool, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.True(t, value, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Truef asserts that the specified value is true.\n//\n//\trequire.Truef(t, myBool, \"error message %s\", \"formatted\")\nfunc Truef(t TestingT, value bool, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Truef(t, value, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// WithinDuration asserts that the two times are within duration delta of each other.\n//\n//\trequire.WithinDuration(t, time.Now(), time.Now(), 10*time.Second)\nfunc WithinDuration(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.WithinDuration(t, expected, actual, delta, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// WithinDurationf asserts that the two times are within duration delta of each other.\n//\n//\trequire.WithinDurationf(t, time.Now(), time.Now(), 10*time.Second, \"error message %s\", \"formatted\")\nfunc WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.WithinDurationf(t, expected, actual, delta, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// WithinRange asserts that a time is within a time range (inclusive).\n//\n//\trequire.WithinRange(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second))\nfunc WithinRange(t TestingT, actual time.Time, start time.Time, end time.Time, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.WithinRange(t, actual, start, end, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// WithinRangef asserts that a time is within a time range (inclusive).\n//\n//\trequire.WithinRangef(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), \"error message %s\", \"formatted\")\nfunc WithinRangef(t TestingT, actual time.Time, start time.Time, end time.Time, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.WithinRangef(t, actual, start, end, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// YAMLEq asserts that two YAML strings are equivalent.\nfunc YAMLEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.YAMLEq(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// YAMLEqf asserts that two YAML strings are equivalent.\nfunc YAMLEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.YAMLEqf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Zero asserts that i is the zero value for its type.\nfunc Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Zero(t, i, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Zerof asserts that i is the zero value for its type.\nfunc Zerof(t TestingT, i interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Zerof(t, i, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/require.go.tmpl",
    "content": "{{ replace .Comment \"assert.\" \"require.\"}}\nfunc {{.DocInfo.Name}}(t TestingT, {{.Params}}) {\n\tif h, ok := t.(tHelper); ok { h.Helper() }\n\tif assert.{{.DocInfo.Name}}(t, {{.ForwardedParams}}) { return }\n\tt.FailNow()\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/require_forward.go",
    "content": "// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.\n\npackage require\n\nimport (\n\tassert \"github.com/stretchr/testify/assert\"\n\thttp \"net/http\"\n\turl \"net/url\"\n\ttime \"time\"\n)\n\n// Condition uses a Comparison to assert a complex condition.\nfunc (a *Assertions) Condition(comp assert.Comparison, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tCondition(a.t, comp, msgAndArgs...)\n}\n\n// Conditionf uses a Comparison to assert a complex condition.\nfunc (a *Assertions) Conditionf(comp assert.Comparison, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tConditionf(a.t, comp, msg, args...)\n}\n\n// Contains asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\ta.Contains(\"Hello World\", \"World\")\n//\ta.Contains([\"Hello\", \"World\"], \"World\")\n//\ta.Contains({\"Hello\": \"World\"}, \"Hello\")\nfunc (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tContains(a.t, s, contains, msgAndArgs...)\n}\n\n// Containsf asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\ta.Containsf(\"Hello World\", \"World\", \"error message %s\", \"formatted\")\n//\ta.Containsf([\"Hello\", \"World\"], \"World\", \"error message %s\", \"formatted\")\n//\ta.Containsf({\"Hello\": \"World\"}, \"Hello\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Containsf(s interface{}, contains interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tContainsf(a.t, s, contains, msg, args...)\n}\n\n// DirExists checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tDirExists(a.t, path, msgAndArgs...)\n}\n\n// DirExistsf checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc (a *Assertions) DirExistsf(path string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tDirExistsf(a.t, path, msg, args...)\n}\n\n// ElementsMatch asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// a.ElementsMatch([1, 3, 2, 3], [1, 3, 3, 2])\nfunc (a *Assertions) ElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tElementsMatch(a.t, listA, listB, msgAndArgs...)\n}\n\n// ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// a.ElementsMatchf([1, 3, 2, 3], [1, 3, 3, 2], \"error message %s\", \"formatted\")\nfunc (a *Assertions) ElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tElementsMatchf(a.t, listA, listB, msg, args...)\n}\n\n// Empty asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\ta.Empty(obj)\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEmpty(a.t, object, msgAndArgs...)\n}\n\n// Emptyf asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\ta.Emptyf(obj, \"error message %s\", \"formatted\")\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc (a *Assertions) Emptyf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEmptyf(a.t, object, msg, args...)\n}\n\n// Equal asserts that two objects are equal.\n//\n//\ta.Equal(123, 123)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc (a *Assertions) Equal(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqual(a.t, expected, actual, msgAndArgs...)\n}\n\n// EqualError asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.EqualError(err,  expectedErrorString)\nfunc (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqualError(a.t, theError, errString, msgAndArgs...)\n}\n\n// EqualErrorf asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.EqualErrorf(err,  expectedErrorString, \"error message %s\", \"formatted\")\nfunc (a *Assertions) EqualErrorf(theError error, errString string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqualErrorf(a.t, theError, errString, msg, args...)\n}\n\n// EqualExportedValues asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t a.EqualExportedValues(S{1, 2}, S{1, 3}) => true\n//\t a.EqualExportedValues(S{1, 2}, S{2, 3}) => false\nfunc (a *Assertions) EqualExportedValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqualExportedValues(a.t, expected, actual, msgAndArgs...)\n}\n\n// EqualExportedValuesf asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t a.EqualExportedValuesf(S{1, 2}, S{1, 3}, \"error message %s\", \"formatted\") => true\n//\t a.EqualExportedValuesf(S{1, 2}, S{2, 3}, \"error message %s\", \"formatted\") => false\nfunc (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqualExportedValuesf(a.t, expected, actual, msg, args...)\n}\n\n// EqualValues asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\ta.EqualValues(uint32(123), int32(123))\nfunc (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqualValues(a.t, expected, actual, msgAndArgs...)\n}\n\n// EqualValuesf asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\ta.EqualValuesf(uint32(123), int32(123), \"error message %s\", \"formatted\")\nfunc (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqualValuesf(a.t, expected, actual, msg, args...)\n}\n\n// Equalf asserts that two objects are equal.\n//\n//\ta.Equalf(123, 123, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc (a *Assertions) Equalf(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqualf(a.t, expected, actual, msg, args...)\n}\n\n// Error asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\ta.Error(err)\nfunc (a *Assertions) Error(err error, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tError(a.t, err, msgAndArgs...)\n}\n\n// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc (a *Assertions) ErrorAs(err error, target interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tErrorAs(a.t, err, target, msgAndArgs...)\n}\n\n// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc (a *Assertions) ErrorAsf(err error, target interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tErrorAsf(a.t, err, target, msg, args...)\n}\n\n// ErrorContains asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.ErrorContains(err,  expectedErrorSubString)\nfunc (a *Assertions) ErrorContains(theError error, contains string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tErrorContains(a.t, theError, contains, msgAndArgs...)\n}\n\n// ErrorContainsf asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.ErrorContainsf(err,  expectedErrorSubString, \"error message %s\", \"formatted\")\nfunc (a *Assertions) ErrorContainsf(theError error, contains string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tErrorContainsf(a.t, theError, contains, msg, args...)\n}\n\n// ErrorIs asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) ErrorIs(err error, target error, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tErrorIs(a.t, err, target, msgAndArgs...)\n}\n\n// ErrorIsf asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) ErrorIsf(err error, target error, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tErrorIsf(a.t, err, target, msg, args...)\n}\n\n// Errorf asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\ta.Errorf(err, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Errorf(err error, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tErrorf(a.t, err, msg, args...)\n}\n\n// Eventually asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\ta.Eventually(func() bool { return true; }, time.Second, 10*time.Millisecond)\nfunc (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEventually(a.t, condition, waitFor, tick, msgAndArgs...)\n}\n\n// EventuallyWithT asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\ta.EventuallyWithT(func(c *assert.CollectT) {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\tassert.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc (a *Assertions) EventuallyWithT(condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEventuallyWithT(a.t, condition, waitFor, tick, msgAndArgs...)\n}\n\n// EventuallyWithTf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\ta.EventuallyWithTf(func(c *assert.CollectT, \"error message %s\", \"formatted\") {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\tassert.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc (a *Assertions) EventuallyWithTf(condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEventuallyWithTf(a.t, condition, waitFor, tick, msg, args...)\n}\n\n// Eventuallyf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\ta.Eventuallyf(func() bool { return true; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Eventuallyf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEventuallyf(a.t, condition, waitFor, tick, msg, args...)\n}\n\n// Exactly asserts that two objects are equal in value and type.\n//\n//\ta.Exactly(int32(123), int64(123))\nfunc (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tExactly(a.t, expected, actual, msgAndArgs...)\n}\n\n// Exactlyf asserts that two objects are equal in value and type.\n//\n//\ta.Exactlyf(int32(123), int64(123), \"error message %s\", \"formatted\")\nfunc (a *Assertions) Exactlyf(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tExactlyf(a.t, expected, actual, msg, args...)\n}\n\n// Fail reports a failure through\nfunc (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFail(a.t, failureMessage, msgAndArgs...)\n}\n\n// FailNow fails test\nfunc (a *Assertions) FailNow(failureMessage string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFailNow(a.t, failureMessage, msgAndArgs...)\n}\n\n// FailNowf fails test\nfunc (a *Assertions) FailNowf(failureMessage string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFailNowf(a.t, failureMessage, msg, args...)\n}\n\n// Failf reports a failure through\nfunc (a *Assertions) Failf(failureMessage string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFailf(a.t, failureMessage, msg, args...)\n}\n\n// False asserts that the specified value is false.\n//\n//\ta.False(myBool)\nfunc (a *Assertions) False(value bool, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFalse(a.t, value, msgAndArgs...)\n}\n\n// Falsef asserts that the specified value is false.\n//\n//\ta.Falsef(myBool, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Falsef(value bool, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFalsef(a.t, value, msg, args...)\n}\n\n// FileExists checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFileExists(a.t, path, msgAndArgs...)\n}\n\n// FileExistsf checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFileExistsf(a.t, path, msg, args...)\n}\n\n// Greater asserts that the first element is greater than the second\n//\n//\ta.Greater(2, 1)\n//\ta.Greater(float64(2), float64(1))\n//\ta.Greater(\"b\", \"a\")\nfunc (a *Assertions) Greater(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tGreater(a.t, e1, e2, msgAndArgs...)\n}\n\n// GreaterOrEqual asserts that the first element is greater than or equal to the second\n//\n//\ta.GreaterOrEqual(2, 1)\n//\ta.GreaterOrEqual(2, 2)\n//\ta.GreaterOrEqual(\"b\", \"a\")\n//\ta.GreaterOrEqual(\"b\", \"b\")\nfunc (a *Assertions) GreaterOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tGreaterOrEqual(a.t, e1, e2, msgAndArgs...)\n}\n\n// GreaterOrEqualf asserts that the first element is greater than or equal to the second\n//\n//\ta.GreaterOrEqualf(2, 1, \"error message %s\", \"formatted\")\n//\ta.GreaterOrEqualf(2, 2, \"error message %s\", \"formatted\")\n//\ta.GreaterOrEqualf(\"b\", \"a\", \"error message %s\", \"formatted\")\n//\ta.GreaterOrEqualf(\"b\", \"b\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) GreaterOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tGreaterOrEqualf(a.t, e1, e2, msg, args...)\n}\n\n// Greaterf asserts that the first element is greater than the second\n//\n//\ta.Greaterf(2, 1, \"error message %s\", \"formatted\")\n//\ta.Greaterf(float64(2), float64(1), \"error message %s\", \"formatted\")\n//\ta.Greaterf(\"b\", \"a\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Greaterf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tGreaterf(a.t, e1, e2, msg, args...)\n}\n\n// HTTPBodyContains asserts that a specified handler returns a\n// body that contains a string.\n//\n//\ta.HTTPBodyContains(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPBodyContains(a.t, handler, method, url, values, str, msgAndArgs...)\n}\n\n// HTTPBodyContainsf asserts that a specified handler returns a\n// body that contains a string.\n//\n//\ta.HTTPBodyContainsf(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPBodyContainsf(a.t, handler, method, url, values, str, msg, args...)\n}\n\n// HTTPBodyNotContains asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\ta.HTTPBodyNotContains(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPBodyNotContains(a.t, handler, method, url, values, str, msgAndArgs...)\n}\n\n// HTTPBodyNotContainsf asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\ta.HTTPBodyNotContainsf(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyNotContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPBodyNotContainsf(a.t, handler, method, url, values, str, msg, args...)\n}\n\n// HTTPError asserts that a specified handler returns an error status code.\n//\n//\ta.HTTPError(myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPError(a.t, handler, method, url, values, msgAndArgs...)\n}\n\n// HTTPErrorf asserts that a specified handler returns an error status code.\n//\n//\ta.HTTPErrorf(myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPErrorf(a.t, handler, method, url, values, msg, args...)\n}\n\n// HTTPRedirect asserts that a specified handler returns a redirect status code.\n//\n//\ta.HTTPRedirect(myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPRedirect(a.t, handler, method, url, values, msgAndArgs...)\n}\n\n// HTTPRedirectf asserts that a specified handler returns a redirect status code.\n//\n//\ta.HTTPRedirectf(myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPRedirectf(a.t, handler, method, url, values, msg, args...)\n}\n\n// HTTPStatusCode asserts that a specified handler returns a specified status code.\n//\n//\ta.HTTPStatusCode(myHandler, \"GET\", \"/notImplemented\", nil, 501)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPStatusCode(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPStatusCode(a.t, handler, method, url, values, statuscode, msgAndArgs...)\n}\n\n// HTTPStatusCodef asserts that a specified handler returns a specified status code.\n//\n//\ta.HTTPStatusCodef(myHandler, \"GET\", \"/notImplemented\", nil, 501, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPStatusCodef(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPStatusCodef(a.t, handler, method, url, values, statuscode, msg, args...)\n}\n\n// HTTPSuccess asserts that a specified handler returns a success status code.\n//\n//\ta.HTTPSuccess(myHandler, \"POST\", \"http://www.google.com\", nil)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPSuccess(a.t, handler, method, url, values, msgAndArgs...)\n}\n\n// HTTPSuccessf asserts that a specified handler returns a success status code.\n//\n//\ta.HTTPSuccessf(myHandler, \"POST\", \"http://www.google.com\", nil, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPSuccessf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPSuccessf(a.t, handler, method, url, values, msg, args...)\n}\n\n// Implements asserts that an object is implemented by the specified interface.\n//\n//\ta.Implements((*MyInterface)(nil), new(MyObject))\nfunc (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tImplements(a.t, interfaceObject, object, msgAndArgs...)\n}\n\n// Implementsf asserts that an object is implemented by the specified interface.\n//\n//\ta.Implementsf((*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tImplementsf(a.t, interfaceObject, object, msg, args...)\n}\n\n// InDelta asserts that the two numerals are within delta of each other.\n//\n//\ta.InDelta(math.Pi, 22/7.0, 0.01)\nfunc (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInDelta(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc (a *Assertions) InDeltaMapValues(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInDeltaMapValues(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc (a *Assertions) InDeltaMapValuesf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInDeltaMapValuesf(a.t, expected, actual, delta, msg, args...)\n}\n\n// InDeltaSlice is the same as InDelta, except it compares two slices.\nfunc (a *Assertions) InDeltaSlice(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInDeltaSlice(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InDeltaSlicef is the same as InDelta, except it compares two slices.\nfunc (a *Assertions) InDeltaSlicef(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInDeltaSlicef(a.t, expected, actual, delta, msg, args...)\n}\n\n// InDeltaf asserts that the two numerals are within delta of each other.\n//\n//\ta.InDeltaf(math.Pi, 22/7.0, 0.01, \"error message %s\", \"formatted\")\nfunc (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInDeltaf(a.t, expected, actual, delta, msg, args...)\n}\n\n// InEpsilon asserts that expected and actual have a relative error less than epsilon\nfunc (a *Assertions) InEpsilon(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInEpsilon(a.t, expected, actual, epsilon, msgAndArgs...)\n}\n\n// InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices.\nfunc (a *Assertions) InEpsilonSlice(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInEpsilonSlice(a.t, expected, actual, epsilon, msgAndArgs...)\n}\n\n// InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices.\nfunc (a *Assertions) InEpsilonSlicef(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInEpsilonSlicef(a.t, expected, actual, epsilon, msg, args...)\n}\n\n// InEpsilonf asserts that expected and actual have a relative error less than epsilon\nfunc (a *Assertions) InEpsilonf(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInEpsilonf(a.t, expected, actual, epsilon, msg, args...)\n}\n\n// IsDecreasing asserts that the collection is decreasing\n//\n//\ta.IsDecreasing([]int{2, 1, 0})\n//\ta.IsDecreasing([]float{2, 1})\n//\ta.IsDecreasing([]string{\"b\", \"a\"})\nfunc (a *Assertions) IsDecreasing(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsDecreasing(a.t, object, msgAndArgs...)\n}\n\n// IsDecreasingf asserts that the collection is decreasing\n//\n//\ta.IsDecreasingf([]int{2, 1, 0}, \"error message %s\", \"formatted\")\n//\ta.IsDecreasingf([]float{2, 1}, \"error message %s\", \"formatted\")\n//\ta.IsDecreasingf([]string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsDecreasingf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsDecreasingf(a.t, object, msg, args...)\n}\n\n// IsIncreasing asserts that the collection is increasing\n//\n//\ta.IsIncreasing([]int{1, 2, 3})\n//\ta.IsIncreasing([]float{1, 2})\n//\ta.IsIncreasing([]string{\"a\", \"b\"})\nfunc (a *Assertions) IsIncreasing(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsIncreasing(a.t, object, msgAndArgs...)\n}\n\n// IsIncreasingf asserts that the collection is increasing\n//\n//\ta.IsIncreasingf([]int{1, 2, 3}, \"error message %s\", \"formatted\")\n//\ta.IsIncreasingf([]float{1, 2}, \"error message %s\", \"formatted\")\n//\ta.IsIncreasingf([]string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsIncreasingf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsIncreasingf(a.t, object, msg, args...)\n}\n\n// IsNonDecreasing asserts that the collection is not decreasing\n//\n//\ta.IsNonDecreasing([]int{1, 1, 2})\n//\ta.IsNonDecreasing([]float{1, 2})\n//\ta.IsNonDecreasing([]string{\"a\", \"b\"})\nfunc (a *Assertions) IsNonDecreasing(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsNonDecreasing(a.t, object, msgAndArgs...)\n}\n\n// IsNonDecreasingf asserts that the collection is not decreasing\n//\n//\ta.IsNonDecreasingf([]int{1, 1, 2}, \"error message %s\", \"formatted\")\n//\ta.IsNonDecreasingf([]float{1, 2}, \"error message %s\", \"formatted\")\n//\ta.IsNonDecreasingf([]string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsNonDecreasingf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsNonDecreasingf(a.t, object, msg, args...)\n}\n\n// IsNonIncreasing asserts that the collection is not increasing\n//\n//\ta.IsNonIncreasing([]int{2, 1, 1})\n//\ta.IsNonIncreasing([]float{2, 1})\n//\ta.IsNonIncreasing([]string{\"b\", \"a\"})\nfunc (a *Assertions) IsNonIncreasing(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsNonIncreasing(a.t, object, msgAndArgs...)\n}\n\n// IsNonIncreasingf asserts that the collection is not increasing\n//\n//\ta.IsNonIncreasingf([]int{2, 1, 1}, \"error message %s\", \"formatted\")\n//\ta.IsNonIncreasingf([]float{2, 1}, \"error message %s\", \"formatted\")\n//\ta.IsNonIncreasingf([]string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsNonIncreasingf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsNonIncreasingf(a.t, object, msg, args...)\n}\n\n// IsNotType asserts that the specified objects are not of the same type.\n//\n//\ta.IsNotType(&NotMyStruct{}, &MyStruct{})\nfunc (a *Assertions) IsNotType(theType interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsNotType(a.t, theType, object, msgAndArgs...)\n}\n\n// IsNotTypef asserts that the specified objects are not of the same type.\n//\n//\ta.IsNotTypef(&NotMyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsNotTypef(theType interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsNotTypef(a.t, theType, object, msg, args...)\n}\n\n// IsType asserts that the specified objects are of the same type.\n//\n//\ta.IsType(&MyStruct{}, &MyStruct{})\nfunc (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsType(a.t, expectedType, object, msgAndArgs...)\n}\n\n// IsTypef asserts that the specified objects are of the same type.\n//\n//\ta.IsTypef(&MyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsTypef(expectedType interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsTypef(a.t, expectedType, object, msg, args...)\n}\n\n// JSONEq asserts that two JSON strings are equivalent.\n//\n//\ta.JSONEq(`{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`)\nfunc (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tJSONEq(a.t, expected, actual, msgAndArgs...)\n}\n\n// JSONEqf asserts that two JSON strings are equivalent.\n//\n//\ta.JSONEqf(`{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`, \"error message %s\", \"formatted\")\nfunc (a *Assertions) JSONEqf(expected string, actual string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tJSONEqf(a.t, expected, actual, msg, args...)\n}\n\n// Len asserts that the specified object has specific length.\n// Len also fails if the object has a type that len() not accept.\n//\n//\ta.Len(mySlice, 3)\nfunc (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tLen(a.t, object, length, msgAndArgs...)\n}\n\n// Lenf asserts that the specified object has specific length.\n// Lenf also fails if the object has a type that len() not accept.\n//\n//\ta.Lenf(mySlice, 3, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Lenf(object interface{}, length int, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tLenf(a.t, object, length, msg, args...)\n}\n\n// Less asserts that the first element is less than the second\n//\n//\ta.Less(1, 2)\n//\ta.Less(float64(1), float64(2))\n//\ta.Less(\"a\", \"b\")\nfunc (a *Assertions) Less(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tLess(a.t, e1, e2, msgAndArgs...)\n}\n\n// LessOrEqual asserts that the first element is less than or equal to the second\n//\n//\ta.LessOrEqual(1, 2)\n//\ta.LessOrEqual(2, 2)\n//\ta.LessOrEqual(\"a\", \"b\")\n//\ta.LessOrEqual(\"b\", \"b\")\nfunc (a *Assertions) LessOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tLessOrEqual(a.t, e1, e2, msgAndArgs...)\n}\n\n// LessOrEqualf asserts that the first element is less than or equal to the second\n//\n//\ta.LessOrEqualf(1, 2, \"error message %s\", \"formatted\")\n//\ta.LessOrEqualf(2, 2, \"error message %s\", \"formatted\")\n//\ta.LessOrEqualf(\"a\", \"b\", \"error message %s\", \"formatted\")\n//\ta.LessOrEqualf(\"b\", \"b\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) LessOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tLessOrEqualf(a.t, e1, e2, msg, args...)\n}\n\n// Lessf asserts that the first element is less than the second\n//\n//\ta.Lessf(1, 2, \"error message %s\", \"formatted\")\n//\ta.Lessf(float64(1), float64(2), \"error message %s\", \"formatted\")\n//\ta.Lessf(\"a\", \"b\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tLessf(a.t, e1, e2, msg, args...)\n}\n\n// Negative asserts that the specified element is negative\n//\n//\ta.Negative(-1)\n//\ta.Negative(-1.23)\nfunc (a *Assertions) Negative(e interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNegative(a.t, e, msgAndArgs...)\n}\n\n// Negativef asserts that the specified element is negative\n//\n//\ta.Negativef(-1, \"error message %s\", \"formatted\")\n//\ta.Negativef(-1.23, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Negativef(e interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNegativef(a.t, e, msg, args...)\n}\n\n// Never asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\ta.Never(func() bool { return false; }, time.Second, 10*time.Millisecond)\nfunc (a *Assertions) Never(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNever(a.t, condition, waitFor, tick, msgAndArgs...)\n}\n\n// Neverf asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\ta.Neverf(func() bool { return false; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Neverf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNeverf(a.t, condition, waitFor, tick, msg, args...)\n}\n\n// Nil asserts that the specified object is nil.\n//\n//\ta.Nil(err)\nfunc (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNil(a.t, object, msgAndArgs...)\n}\n\n// Nilf asserts that the specified object is nil.\n//\n//\ta.Nilf(err, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Nilf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNilf(a.t, object, msg, args...)\n}\n\n// NoDirExists checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc (a *Assertions) NoDirExists(path string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNoDirExists(a.t, path, msgAndArgs...)\n}\n\n// NoDirExistsf checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc (a *Assertions) NoDirExistsf(path string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNoDirExistsf(a.t, path, msg, args...)\n}\n\n// NoError asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if a.NoError(err) {\n//\t\t   assert.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc (a *Assertions) NoError(err error, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNoError(a.t, err, msgAndArgs...)\n}\n\n// NoErrorf asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if a.NoErrorf(err, \"error message %s\", \"formatted\") {\n//\t\t   assert.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc (a *Assertions) NoErrorf(err error, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNoErrorf(a.t, err, msg, args...)\n}\n\n// NoFileExists checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc (a *Assertions) NoFileExists(path string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNoFileExists(a.t, path, msgAndArgs...)\n}\n\n// NoFileExistsf checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc (a *Assertions) NoFileExistsf(path string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNoFileExistsf(a.t, path, msg, args...)\n}\n\n// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\ta.NotContains(\"Hello World\", \"Earth\")\n//\ta.NotContains([\"Hello\", \"World\"], \"Earth\")\n//\ta.NotContains({\"Hello\": \"World\"}, \"Earth\")\nfunc (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotContains(a.t, s, contains, msgAndArgs...)\n}\n\n// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\ta.NotContainsf(\"Hello World\", \"Earth\", \"error message %s\", \"formatted\")\n//\ta.NotContainsf([\"Hello\", \"World\"], \"Earth\", \"error message %s\", \"formatted\")\n//\ta.NotContainsf({\"Hello\": \"World\"}, \"Earth\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotContainsf(a.t, s, contains, msg, args...)\n}\n\n// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// a.NotElementsMatch([1, 1, 2, 3], [1, 1, 2, 3]) -> false\n//\n// a.NotElementsMatch([1, 1, 2, 3], [1, 2, 3]) -> true\n//\n// a.NotElementsMatch([1, 2, 3], [1, 2, 4]) -> true\nfunc (a *Assertions) NotElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotElementsMatch(a.t, listA, listB, msgAndArgs...)\n}\n\n// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// a.NotElementsMatchf([1, 1, 2, 3], [1, 1, 2, 3], \"error message %s\", \"formatted\") -> false\n//\n// a.NotElementsMatchf([1, 1, 2, 3], [1, 2, 3], \"error message %s\", \"formatted\") -> true\n//\n// a.NotElementsMatchf([1, 2, 3], [1, 2, 4], \"error message %s\", \"formatted\") -> true\nfunc (a *Assertions) NotElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotElementsMatchf(a.t, listA, listB, msg, args...)\n}\n\n// NotEmpty asserts that the specified object is NOT [Empty].\n//\n//\tif a.NotEmpty(obj) {\n//\t  assert.Equal(t, \"two\", obj[1])\n//\t}\nfunc (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotEmpty(a.t, object, msgAndArgs...)\n}\n\n// NotEmptyf asserts that the specified object is NOT [Empty].\n//\n//\tif a.NotEmptyf(obj, \"error message %s\", \"formatted\") {\n//\t  assert.Equal(t, \"two\", obj[1])\n//\t}\nfunc (a *Assertions) NotEmptyf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotEmptyf(a.t, object, msg, args...)\n}\n\n// NotEqual asserts that the specified values are NOT equal.\n//\n//\ta.NotEqual(obj1, obj2)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc (a *Assertions) NotEqual(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotEqual(a.t, expected, actual, msgAndArgs...)\n}\n\n// NotEqualValues asserts that two objects are not equal even when converted to the same type\n//\n//\ta.NotEqualValues(obj1, obj2)\nfunc (a *Assertions) NotEqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotEqualValues(a.t, expected, actual, msgAndArgs...)\n}\n\n// NotEqualValuesf asserts that two objects are not equal even when converted to the same type\n//\n//\ta.NotEqualValuesf(obj1, obj2, \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotEqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotEqualValuesf(a.t, expected, actual, msg, args...)\n}\n\n// NotEqualf asserts that the specified values are NOT equal.\n//\n//\ta.NotEqualf(obj1, obj2, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotEqualf(a.t, expected, actual, msg, args...)\n}\n\n// NotErrorAs asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc (a *Assertions) NotErrorAs(err error, target interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotErrorAs(a.t, err, target, msgAndArgs...)\n}\n\n// NotErrorAsf asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc (a *Assertions) NotErrorAsf(err error, target interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotErrorAsf(a.t, err, target, msg, args...)\n}\n\n// NotErrorIs asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotErrorIs(a.t, err, target, msgAndArgs...)\n}\n\n// NotErrorIsf asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotErrorIsf(a.t, err, target, msg, args...)\n}\n\n// NotImplements asserts that an object does not implement the specified interface.\n//\n//\ta.NotImplements((*MyInterface)(nil), new(MyObject))\nfunc (a *Assertions) NotImplements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotImplements(a.t, interfaceObject, object, msgAndArgs...)\n}\n\n// NotImplementsf asserts that an object does not implement the specified interface.\n//\n//\ta.NotImplementsf((*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotImplementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotImplementsf(a.t, interfaceObject, object, msg, args...)\n}\n\n// NotNil asserts that the specified object is not nil.\n//\n//\ta.NotNil(err)\nfunc (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotNil(a.t, object, msgAndArgs...)\n}\n\n// NotNilf asserts that the specified object is not nil.\n//\n//\ta.NotNilf(err, \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotNilf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotNilf(a.t, object, msg, args...)\n}\n\n// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\ta.NotPanics(func(){ RemainCalm() })\nfunc (a *Assertions) NotPanics(f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotPanics(a.t, f, msgAndArgs...)\n}\n\n// NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\ta.NotPanicsf(func(){ RemainCalm() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotPanicsf(f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotPanicsf(a.t, f, msg, args...)\n}\n\n// NotRegexp asserts that a specified regexp does not match a string.\n//\n//\ta.NotRegexp(regexp.MustCompile(\"starts\"), \"it's starting\")\n//\ta.NotRegexp(\"^start\", \"it's not starting\")\nfunc (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotRegexp(a.t, rx, str, msgAndArgs...)\n}\n\n// NotRegexpf asserts that a specified regexp does not match a string.\n//\n//\ta.NotRegexpf(regexp.MustCompile(\"starts\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\ta.NotRegexpf(\"^start\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotRegexpf(a.t, rx, str, msg, args...)\n}\n\n// NotSame asserts that two pointers do not reference the same object.\n//\n//\ta.NotSame(ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) NotSame(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotSame(a.t, expected, actual, msgAndArgs...)\n}\n\n// NotSamef asserts that two pointers do not reference the same object.\n//\n//\ta.NotSamef(ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotSamef(a.t, expected, actual, msg, args...)\n}\n\n// NotSubset asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.NotSubset([1, 3, 4], [1, 2])\n//\ta.NotSubset({\"x\": 1, \"y\": 2}, {\"z\": 3})\n//\ta.NotSubset([1, 3, 4], {1: \"one\", 2: \"two\"})\n//\ta.NotSubset({\"x\": 1, \"y\": 2}, [\"z\"])\nfunc (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotSubset(a.t, list, subset, msgAndArgs...)\n}\n\n// NotSubsetf asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.NotSubsetf([1, 3, 4], [1, 2], \"error message %s\", \"formatted\")\n//\ta.NotSubsetf({\"x\": 1, \"y\": 2}, {\"z\": 3}, \"error message %s\", \"formatted\")\n//\ta.NotSubsetf([1, 3, 4], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\ta.NotSubsetf({\"x\": 1, \"y\": 2}, [\"z\"], \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotSubsetf(list interface{}, subset interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotSubsetf(a.t, list, subset, msg, args...)\n}\n\n// NotZero asserts that i is not the zero value for its type.\nfunc (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotZero(a.t, i, msgAndArgs...)\n}\n\n// NotZerof asserts that i is not the zero value for its type.\nfunc (a *Assertions) NotZerof(i interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotZerof(a.t, i, msg, args...)\n}\n\n// Panics asserts that the code inside the specified PanicTestFunc panics.\n//\n//\ta.Panics(func(){ GoCrazy() })\nfunc (a *Assertions) Panics(f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPanics(a.t, f, msgAndArgs...)\n}\n\n// PanicsWithError asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\ta.PanicsWithError(\"crazy error\", func(){ GoCrazy() })\nfunc (a *Assertions) PanicsWithError(errString string, f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPanicsWithError(a.t, errString, f, msgAndArgs...)\n}\n\n// PanicsWithErrorf asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\ta.PanicsWithErrorf(\"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) PanicsWithErrorf(errString string, f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPanicsWithErrorf(a.t, errString, f, msg, args...)\n}\n\n// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\ta.PanicsWithValue(\"crazy error\", func(){ GoCrazy() })\nfunc (a *Assertions) PanicsWithValue(expected interface{}, f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPanicsWithValue(a.t, expected, f, msgAndArgs...)\n}\n\n// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\ta.PanicsWithValuef(\"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) PanicsWithValuef(expected interface{}, f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPanicsWithValuef(a.t, expected, f, msg, args...)\n}\n\n// Panicsf asserts that the code inside the specified PanicTestFunc panics.\n//\n//\ta.Panicsf(func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Panicsf(f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPanicsf(a.t, f, msg, args...)\n}\n\n// Positive asserts that the specified element is positive\n//\n//\ta.Positive(1)\n//\ta.Positive(1.23)\nfunc (a *Assertions) Positive(e interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPositive(a.t, e, msgAndArgs...)\n}\n\n// Positivef asserts that the specified element is positive\n//\n//\ta.Positivef(1, \"error message %s\", \"formatted\")\n//\ta.Positivef(1.23, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Positivef(e interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPositivef(a.t, e, msg, args...)\n}\n\n// Regexp asserts that a specified regexp matches a string.\n//\n//\ta.Regexp(regexp.MustCompile(\"start\"), \"it's starting\")\n//\ta.Regexp(\"start...$\", \"it's not starting\")\nfunc (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tRegexp(a.t, rx, str, msgAndArgs...)\n}\n\n// Regexpf asserts that a specified regexp matches a string.\n//\n//\ta.Regexpf(regexp.MustCompile(\"start\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\ta.Regexpf(\"start...$\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tRegexpf(a.t, rx, str, msg, args...)\n}\n\n// Same asserts that two pointers reference the same object.\n//\n//\ta.Same(ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) Same(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tSame(a.t, expected, actual, msgAndArgs...)\n}\n\n// Samef asserts that two pointers reference the same object.\n//\n//\ta.Samef(ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) Samef(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tSamef(a.t, expected, actual, msg, args...)\n}\n\n// Subset asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.Subset([1, 2, 3], [1, 2])\n//\ta.Subset({\"x\": 1, \"y\": 2}, {\"x\": 1})\n//\ta.Subset([1, 2, 3], {1: \"one\", 2: \"two\"})\n//\ta.Subset({\"x\": 1, \"y\": 2}, [\"x\"])\nfunc (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tSubset(a.t, list, subset, msgAndArgs...)\n}\n\n// Subsetf asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.Subsetf([1, 2, 3], [1, 2], \"error message %s\", \"formatted\")\n//\ta.Subsetf({\"x\": 1, \"y\": 2}, {\"x\": 1}, \"error message %s\", \"formatted\")\n//\ta.Subsetf([1, 2, 3], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\ta.Subsetf({\"x\": 1, \"y\": 2}, [\"x\"], \"error message %s\", \"formatted\")\nfunc (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tSubsetf(a.t, list, subset, msg, args...)\n}\n\n// True asserts that the specified value is true.\n//\n//\ta.True(myBool)\nfunc (a *Assertions) True(value bool, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tTrue(a.t, value, msgAndArgs...)\n}\n\n// Truef asserts that the specified value is true.\n//\n//\ta.Truef(myBool, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Truef(value bool, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tTruef(a.t, value, msg, args...)\n}\n\n// WithinDuration asserts that the two times are within duration delta of each other.\n//\n//\ta.WithinDuration(time.Now(), time.Now(), 10*time.Second)\nfunc (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tWithinDuration(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// WithinDurationf asserts that the two times are within duration delta of each other.\n//\n//\ta.WithinDurationf(time.Now(), time.Now(), 10*time.Second, \"error message %s\", \"formatted\")\nfunc (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tWithinDurationf(a.t, expected, actual, delta, msg, args...)\n}\n\n// WithinRange asserts that a time is within a time range (inclusive).\n//\n//\ta.WithinRange(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second))\nfunc (a *Assertions) WithinRange(actual time.Time, start time.Time, end time.Time, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tWithinRange(a.t, actual, start, end, msgAndArgs...)\n}\n\n// WithinRangef asserts that a time is within a time range (inclusive).\n//\n//\ta.WithinRangef(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), \"error message %s\", \"formatted\")\nfunc (a *Assertions) WithinRangef(actual time.Time, start time.Time, end time.Time, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tWithinRangef(a.t, actual, start, end, msg, args...)\n}\n\n// YAMLEq asserts that two YAML strings are equivalent.\nfunc (a *Assertions) YAMLEq(expected string, actual string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tYAMLEq(a.t, expected, actual, msgAndArgs...)\n}\n\n// YAMLEqf asserts that two YAML strings are equivalent.\nfunc (a *Assertions) YAMLEqf(expected string, actual string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tYAMLEqf(a.t, expected, actual, msg, args...)\n}\n\n// Zero asserts that i is the zero value for its type.\nfunc (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tZero(a.t, i, msgAndArgs...)\n}\n\n// Zerof asserts that i is the zero value for its type.\nfunc (a *Assertions) Zerof(i interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tZerof(a.t, i, msg, args...)\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/require_forward.go.tmpl",
    "content": "{{.CommentWithoutT \"a\"}}\nfunc (a *Assertions) {{.DocInfo.Name}}({{.Params}}) {\n\tif h, ok := a.t.(tHelper); ok { h.Helper() }\n\t{{.DocInfo.Name}}(a.t, {{.ForwardedParams}})\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/requirements.go",
    "content": "package require\n\n// TestingT is an interface wrapper around *testing.T\ntype TestingT interface {\n\tErrorf(format string, args ...interface{})\n\tFailNow()\n}\n\ntype tHelper = interface {\n\tHelper()\n}\n\n// ComparisonAssertionFunc is a common function prototype when comparing two values.  Can be useful\n// for table driven tests.\ntype ComparisonAssertionFunc func(TestingT, interface{}, interface{}, ...interface{})\n\n// ValueAssertionFunc is a common function prototype when validating a single value.  Can be useful\n// for table driven tests.\ntype ValueAssertionFunc func(TestingT, interface{}, ...interface{})\n\n// BoolAssertionFunc is a common function prototype when validating a bool value.  Can be useful\n// for table driven tests.\ntype BoolAssertionFunc func(TestingT, bool, ...interface{})\n\n// ErrorAssertionFunc is a common function prototype when validating an error value.  Can be useful\n// for table driven tests.\ntype ErrorAssertionFunc func(TestingT, error, ...interface{})\n\n//go:generate sh -c \"cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=require -template=require.go.tmpl -include-format-funcs\"\n"
  },
  {
    "path": "vendor/golang.org/x/mod/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/golang.org/x/mod/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/golang.org/x/mod/internal/lazyregexp/lazyre.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package lazyregexp is a thin wrapper over regexp, allowing the use of global\n// regexp variables without forcing them to be compiled at init.\npackage lazyregexp\n\nimport (\n\t\"os\"\n\t\"regexp\"\n\t\"strings\"\n\t\"sync\"\n)\n\n// Regexp is a wrapper around [regexp.Regexp], where the underlying regexp will be\n// compiled the first time it is needed.\ntype Regexp struct {\n\tstr  string\n\tonce sync.Once\n\trx   *regexp.Regexp\n}\n\nfunc (r *Regexp) re() *regexp.Regexp {\n\tr.once.Do(r.build)\n\treturn r.rx\n}\n\nfunc (r *Regexp) build() {\n\tr.rx = regexp.MustCompile(r.str)\n\tr.str = \"\"\n}\n\nfunc (r *Regexp) FindSubmatch(s []byte) [][]byte {\n\treturn r.re().FindSubmatch(s)\n}\n\nfunc (r *Regexp) FindStringSubmatch(s string) []string {\n\treturn r.re().FindStringSubmatch(s)\n}\n\nfunc (r *Regexp) FindStringSubmatchIndex(s string) []int {\n\treturn r.re().FindStringSubmatchIndex(s)\n}\n\nfunc (r *Regexp) ReplaceAllString(src, repl string) string {\n\treturn r.re().ReplaceAllString(src, repl)\n}\n\nfunc (r *Regexp) FindString(s string) string {\n\treturn r.re().FindString(s)\n}\n\nfunc (r *Regexp) FindAllString(s string, n int) []string {\n\treturn r.re().FindAllString(s, n)\n}\n\nfunc (r *Regexp) MatchString(s string) bool {\n\treturn r.re().MatchString(s)\n}\n\nfunc (r *Regexp) SubexpNames() []string {\n\treturn r.re().SubexpNames()\n}\n\nvar inTest = len(os.Args) > 0 && strings.HasSuffix(strings.TrimSuffix(os.Args[0], \".exe\"), \".test\")\n\n// New creates a new lazy regexp, delaying the compiling work until it is first\n// needed. If the code is being run as part of tests, the regexp compiling will\n// happen immediately.\nfunc New(str string) *Regexp {\n\tlr := &Regexp{str: str}\n\tif inTest {\n\t\t// In tests, always compile the regexps early.\n\t\tlr.re()\n\t}\n\treturn lr\n}\n"
  },
  {
    "path": "vendor/golang.org/x/mod/module/module.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package module defines the module.Version type along with support code.\n//\n// The [module.Version] type is a simple Path, Version pair:\n//\n//\ttype Version struct {\n//\t\tPath string\n//\t\tVersion string\n//\t}\n//\n// There are no restrictions imposed directly by use of this structure,\n// but additional checking functions, most notably [Check], verify that\n// a particular path, version pair is valid.\n//\n// # Escaped Paths\n//\n// Module paths appear as substrings of file system paths\n// (in the download cache) and of web server URLs in the proxy protocol.\n// In general we cannot rely on file systems to be case-sensitive,\n// nor can we rely on web servers, since they read from file systems.\n// That is, we cannot rely on the file system to keep rsc.io/QUOTE\n// and rsc.io/quote separate. Windows and macOS don't.\n// Instead, we must never require two different casings of a file path.\n// Because we want the download cache to match the proxy protocol,\n// and because we want the proxy protocol to be possible to serve\n// from a tree of static files (which might be stored on a case-insensitive\n// file system), the proxy protocol must never require two different casings\n// of a URL path either.\n//\n// One possibility would be to make the escaped form be the lowercase\n// hexadecimal encoding of the actual path bytes. This would avoid ever\n// needing different casings of a file path, but it would be fairly illegible\n// to most programmers when those paths appeared in the file system\n// (including in file paths in compiler errors and stack traces)\n// in web server logs, and so on. Instead, we want a safe escaped form that\n// leaves most paths unaltered.\n//\n// The safe escaped form is to replace every uppercase letter\n// with an exclamation mark followed by the letter's lowercase equivalent.\n//\n// For example,\n//\n//\tgithub.com/Azure/azure-sdk-for-go ->  github.com/!azure/azure-sdk-for-go.\n//\tgithub.com/GoogleCloudPlatform/cloudsql-proxy -> github.com/!google!cloud!platform/cloudsql-proxy\n//\tgithub.com/Sirupsen/logrus -> github.com/!sirupsen/logrus.\n//\n// Import paths that avoid upper-case letters are left unchanged.\n// Note that because import paths are ASCII-only and avoid various\n// problematic punctuation (like : < and >), the escaped form is also ASCII-only\n// and avoids the same problematic punctuation.\n//\n// Import paths have never allowed exclamation marks, so there is no\n// need to define how to escape a literal !.\n//\n// # Unicode Restrictions\n//\n// Today, paths are disallowed from using Unicode.\n//\n// Although paths are currently disallowed from using Unicode,\n// we would like at some point to allow Unicode letters as well, to assume that\n// file systems and URLs are Unicode-safe (storing UTF-8), and apply\n// the !-for-uppercase convention for escaping them in the file system.\n// But there are at least two subtle considerations.\n//\n// First, note that not all case-fold equivalent distinct runes\n// form an upper/lower pair.\n// For example, U+004B ('K'), U+006B ('k'), and U+212A ('K' for Kelvin)\n// are three distinct runes that case-fold to each other.\n// When we do add Unicode letters, we must not assume that upper/lower\n// are the only case-equivalent pairs.\n// Perhaps the Kelvin symbol would be disallowed entirely, for example.\n// Or perhaps it would escape as \"!!k\", or perhaps as \"(212A)\".\n//\n// Second, it would be nice to allow Unicode marks as well as letters,\n// but marks include combining marks, and then we must deal not\n// only with case folding but also normalization: both U+00E9 ('é')\n// and U+0065 U+0301 ('e' followed by combining acute accent)\n// look the same on the page and are treated by some file systems\n// as the same path. If we do allow Unicode marks in paths, there\n// must be some kind of normalization to allow only one canonical\n// encoding of any character used in an import path.\npackage module\n\n// IMPORTANT NOTE\n//\n// This file essentially defines the set of valid import paths for the go command.\n// There are many subtle considerations, including Unicode ambiguity,\n// security, network, and file system representations.\n//\n// This file also defines the set of valid module path and version combinations,\n// another topic with many subtle considerations.\n//\n// Changes to the semantics in this file require approval from rsc.\n\nimport (\n\t\"cmp\"\n\t\"errors\"\n\t\"fmt\"\n\t\"path\"\n\t\"slices\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/mod/semver\"\n)\n\n// A Version (for clients, a module.Version) is defined by a module path and version pair.\n// These are stored in their plain (unescaped) form.\ntype Version struct {\n\t// Path is a module path, like \"golang.org/x/text\" or \"rsc.io/quote/v2\".\n\tPath string\n\n\t// Version is usually a semantic version in canonical form.\n\t// There are three exceptions to this general rule.\n\t// First, the top-level target of a build has no specific version\n\t// and uses Version = \"\".\n\t// Second, during MVS calculations the version \"none\" is used\n\t// to represent the decision to take no version of a given module.\n\t// Third, filesystem paths found in \"replace\" directives are\n\t// represented by a path with an empty version.\n\tVersion string `json:\",omitempty\"`\n}\n\n// String returns a representation of the Version suitable for logging\n// (Path@Version, or just Path if Version is empty).\nfunc (m Version) String() string {\n\tif m.Version == \"\" {\n\t\treturn m.Path\n\t}\n\treturn m.Path + \"@\" + m.Version\n}\n\n// A ModuleError indicates an error specific to a module.\ntype ModuleError struct {\n\tPath    string\n\tVersion string\n\tErr     error\n}\n\n// VersionError returns a [ModuleError] derived from a [Version] and error,\n// or err itself if it is already such an error.\nfunc VersionError(v Version, err error) error {\n\tvar mErr *ModuleError\n\tif errors.As(err, &mErr) && mErr.Path == v.Path && mErr.Version == v.Version {\n\t\treturn err\n\t}\n\treturn &ModuleError{\n\t\tPath:    v.Path,\n\t\tVersion: v.Version,\n\t\tErr:     err,\n\t}\n}\n\nfunc (e *ModuleError) Error() string {\n\tif v, ok := e.Err.(*InvalidVersionError); ok {\n\t\treturn fmt.Sprintf(\"%s@%s: invalid %s: %v\", e.Path, v.Version, v.noun(), v.Err)\n\t}\n\tif e.Version != \"\" {\n\t\treturn fmt.Sprintf(\"%s@%s: %v\", e.Path, e.Version, e.Err)\n\t}\n\treturn fmt.Sprintf(\"module %s: %v\", e.Path, e.Err)\n}\n\nfunc (e *ModuleError) Unwrap() error { return e.Err }\n\n// An InvalidVersionError indicates an error specific to a version, with the\n// module path unknown or specified externally.\n//\n// A [ModuleError] may wrap an InvalidVersionError, but an InvalidVersionError\n// must not wrap a ModuleError.\ntype InvalidVersionError struct {\n\tVersion string\n\tPseudo  bool\n\tErr     error\n}\n\n// noun returns either \"version\" or \"pseudo-version\", depending on whether\n// e.Version is a pseudo-version.\nfunc (e *InvalidVersionError) noun() string {\n\tif e.Pseudo {\n\t\treturn \"pseudo-version\"\n\t}\n\treturn \"version\"\n}\n\nfunc (e *InvalidVersionError) Error() string {\n\treturn fmt.Sprintf(\"%s %q invalid: %s\", e.noun(), e.Version, e.Err)\n}\n\nfunc (e *InvalidVersionError) Unwrap() error { return e.Err }\n\n// An InvalidPathError indicates a module, import, or file path doesn't\n// satisfy all naming constraints. See [CheckPath], [CheckImportPath],\n// and [CheckFilePath] for specific restrictions.\ntype InvalidPathError struct {\n\tKind string // \"module\", \"import\", or \"file\"\n\tPath string\n\tErr  error\n}\n\nfunc (e *InvalidPathError) Error() string {\n\treturn fmt.Sprintf(\"malformed %s path %q: %v\", e.Kind, e.Path, e.Err)\n}\n\nfunc (e *InvalidPathError) Unwrap() error { return e.Err }\n\n// Check checks that a given module path, version pair is valid.\n// In addition to the path being a valid module path\n// and the version being a valid semantic version,\n// the two must correspond.\n// For example, the path \"yaml/v2\" only corresponds to\n// semantic versions beginning with \"v2.\".\nfunc Check(path, version string) error {\n\tif err := CheckPath(path); err != nil {\n\t\treturn err\n\t}\n\tif !semver.IsValid(version) {\n\t\treturn &ModuleError{\n\t\t\tPath: path,\n\t\t\tErr:  &InvalidVersionError{Version: version, Err: errors.New(\"not a semantic version\")},\n\t\t}\n\t}\n\t_, pathMajor, _ := SplitPathVersion(path)\n\tif err := CheckPathMajor(version, pathMajor); err != nil {\n\t\treturn &ModuleError{Path: path, Err: err}\n\t}\n\treturn nil\n}\n\n// firstPathOK reports whether r can appear in the first element of a module path.\n// The first element of the path must be an LDH domain name, at least for now.\n// To avoid case ambiguity, the domain name must be entirely lower case.\nfunc firstPathOK(r rune) bool {\n\treturn r == '-' || r == '.' ||\n\t\t'0' <= r && r <= '9' ||\n\t\t'a' <= r && r <= 'z'\n}\n\n// modPathOK reports whether r can appear in a module path element.\n// Paths can be ASCII letters, ASCII digits, and limited ASCII punctuation: - . _ and ~.\n//\n// This matches what \"go get\" has historically recognized in import paths,\n// and avoids confusing sequences like '%20' or '+' that would change meaning\n// if used in a URL.\n//\n// TODO(rsc): We would like to allow Unicode letters, but that requires additional\n// care in the safe encoding (see \"escaped paths\" above).\nfunc modPathOK(r rune) bool {\n\tif r < utf8.RuneSelf {\n\t\treturn r == '-' || r == '.' || r == '_' || r == '~' ||\n\t\t\t'0' <= r && r <= '9' ||\n\t\t\t'A' <= r && r <= 'Z' ||\n\t\t\t'a' <= r && r <= 'z'\n\t}\n\treturn false\n}\n\n// importPathOK reports whether r can appear in a package import path element.\n//\n// Import paths are intermediate between module paths and file paths: we\n// disallow characters that would be confusing or ambiguous as arguments to\n// 'go get' (such as '@' and ' ' ), but allow certain characters that are\n// otherwise-unambiguous on the command line and historically used for some\n// binary names (such as '++' as a suffix for compiler binaries and wrappers).\nfunc importPathOK(r rune) bool {\n\treturn modPathOK(r) || r == '+'\n}\n\n// fileNameOK reports whether r can appear in a file name.\n// For now we allow all Unicode letters but otherwise limit to pathOK plus a few more punctuation characters.\n// If we expand the set of allowed characters here, we have to\n// work harder at detecting potential case-folding and normalization collisions.\n// See note about \"escaped paths\" above.\nfunc fileNameOK(r rune) bool {\n\tif r < utf8.RuneSelf {\n\t\t// Entire set of ASCII punctuation, from which we remove characters:\n\t\t//     ! \" # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \\ ] ^ _ ` { | } ~\n\t\t// We disallow some shell special characters: \" ' * < > ? ` |\n\t\t// (Note that some of those are disallowed by the Windows file system as well.)\n\t\t// We also disallow path separators / : and \\ (fileNameOK is only called on path element characters).\n\t\t// We allow spaces (U+0020) in file names.\n\t\tconst allowed = \"!#$%&()+,-.=@[]^_{}~ \"\n\t\tif '0' <= r && r <= '9' || 'A' <= r && r <= 'Z' || 'a' <= r && r <= 'z' {\n\t\t\treturn true\n\t\t}\n\t\treturn strings.ContainsRune(allowed, r)\n\t}\n\t// It may be OK to add more ASCII punctuation here, but only carefully.\n\t// For example Windows disallows < > \\, and macOS disallows :, so we must not allow those.\n\treturn unicode.IsLetter(r)\n}\n\n// CheckPath checks that a module path is valid.\n// A valid module path is a valid import path, as checked by [CheckImportPath],\n// with three additional constraints.\n// First, the leading path element (up to the first slash, if any),\n// by convention a domain name, must contain only lower-case ASCII letters,\n// ASCII digits, dots (U+002E), and dashes (U+002D);\n// it must contain at least one dot and cannot start with a dash.\n// Second, for a final path element of the form /vN, where N looks numeric\n// (ASCII digits and dots) must not begin with a leading zero, must not be /v1,\n// and must not contain any dots. For paths beginning with \"gopkg.in/\",\n// this second requirement is replaced by a requirement that the path\n// follow the gopkg.in server's conventions.\n// Third, no path element may begin with a dot.\nfunc CheckPath(path string) (err error) {\n\tdefer func() {\n\t\tif err != nil {\n\t\t\terr = &InvalidPathError{Kind: \"module\", Path: path, Err: err}\n\t\t}\n\t}()\n\n\tif err := checkPath(path, modulePath); err != nil {\n\t\treturn err\n\t}\n\ti := strings.Index(path, \"/\")\n\tif i < 0 {\n\t\ti = len(path)\n\t}\n\tif i == 0 {\n\t\treturn fmt.Errorf(\"leading slash\")\n\t}\n\tif !strings.Contains(path[:i], \".\") {\n\t\treturn fmt.Errorf(\"missing dot in first path element\")\n\t}\n\tif path[0] == '-' {\n\t\treturn fmt.Errorf(\"leading dash in first path element\")\n\t}\n\tfor _, r := range path[:i] {\n\t\tif !firstPathOK(r) {\n\t\t\treturn fmt.Errorf(\"invalid char %q in first path element\", r)\n\t\t}\n\t}\n\tif _, _, ok := SplitPathVersion(path); !ok {\n\t\treturn fmt.Errorf(\"invalid version\")\n\t}\n\treturn nil\n}\n\n// CheckImportPath checks that an import path is valid.\n//\n// A valid import path consists of one or more valid path elements\n// separated by slashes (U+002F). (It must not begin with nor end in a slash.)\n//\n// A valid path element is a non-empty string made up of\n// ASCII letters, ASCII digits, and limited ASCII punctuation: - . _ and ~.\n// It must not end with a dot (U+002E), nor contain two dots in a row.\n//\n// The element prefix up to the first dot must not be a reserved file name\n// on Windows, regardless of case (CON, com1, NuL, and so on). The element\n// must not have a suffix of a tilde followed by one or more ASCII digits\n// (to exclude paths elements that look like Windows short-names).\n//\n// CheckImportPath may be less restrictive in the future, but see the\n// top-level package documentation for additional information about\n// subtleties of Unicode.\nfunc CheckImportPath(path string) error {\n\tif err := checkPath(path, importPath); err != nil {\n\t\treturn &InvalidPathError{Kind: \"import\", Path: path, Err: err}\n\t}\n\treturn nil\n}\n\n// pathKind indicates what kind of path we're checking. Module paths,\n// import paths, and file paths have different restrictions.\ntype pathKind int\n\nconst (\n\tmodulePath pathKind = iota\n\timportPath\n\tfilePath\n)\n\n// checkPath checks that a general path is valid. kind indicates what\n// specific constraints should be applied.\n//\n// checkPath returns an error describing why the path is not valid.\n// Because these checks apply to module, import, and file paths,\n// and because other checks may be applied, the caller is expected to wrap\n// this error with [InvalidPathError].\nfunc checkPath(path string, kind pathKind) error {\n\tif !utf8.ValidString(path) {\n\t\treturn fmt.Errorf(\"invalid UTF-8\")\n\t}\n\tif path == \"\" {\n\t\treturn fmt.Errorf(\"empty string\")\n\t}\n\tif path[0] == '-' && kind != filePath {\n\t\treturn fmt.Errorf(\"leading dash\")\n\t}\n\tif strings.Contains(path, \"//\") {\n\t\treturn fmt.Errorf(\"double slash\")\n\t}\n\tif path[len(path)-1] == '/' {\n\t\treturn fmt.Errorf(\"trailing slash\")\n\t}\n\telemStart := 0\n\tfor i, r := range path {\n\t\tif r == '/' {\n\t\t\tif err := checkElem(path[elemStart:i], kind); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\telemStart = i + 1\n\t\t}\n\t}\n\tif err := checkElem(path[elemStart:], kind); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// checkElem checks whether an individual path element is valid.\nfunc checkElem(elem string, kind pathKind) error {\n\tif elem == \"\" {\n\t\treturn fmt.Errorf(\"empty path element\")\n\t}\n\tif strings.Count(elem, \".\") == len(elem) {\n\t\treturn fmt.Errorf(\"invalid path element %q\", elem)\n\t}\n\tif elem[0] == '.' && kind == modulePath {\n\t\treturn fmt.Errorf(\"leading dot in path element\")\n\t}\n\tif elem[len(elem)-1] == '.' {\n\t\treturn fmt.Errorf(\"trailing dot in path element\")\n\t}\n\tfor _, r := range elem {\n\t\tok := false\n\t\tswitch kind {\n\t\tcase modulePath:\n\t\t\tok = modPathOK(r)\n\t\tcase importPath:\n\t\t\tok = importPathOK(r)\n\t\tcase filePath:\n\t\t\tok = fileNameOK(r)\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"internal error: invalid kind %v\", kind))\n\t\t}\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"invalid char %q\", r)\n\t\t}\n\t}\n\n\t// Windows disallows a bunch of path elements, sadly.\n\t// See https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file\n\tshort := elem\n\tif i := strings.Index(short, \".\"); i >= 0 {\n\t\tshort = short[:i]\n\t}\n\tfor _, bad := range badWindowsNames {\n\t\tif strings.EqualFold(bad, short) {\n\t\t\treturn fmt.Errorf(\"%q disallowed as path element component on Windows\", short)\n\t\t}\n\t}\n\n\tif kind == filePath {\n\t\t// don't check for Windows short-names in file names. They're\n\t\t// only an issue for import paths.\n\t\treturn nil\n\t}\n\n\t// Reject path components that look like Windows short-names.\n\t// Those usually end in a tilde followed by one or more ASCII digits.\n\tif tilde := strings.LastIndexByte(short, '~'); tilde >= 0 && tilde < len(short)-1 {\n\t\tsuffix := short[tilde+1:]\n\t\tsuffixIsDigits := true\n\t\tfor _, r := range suffix {\n\t\t\tif r < '0' || r > '9' {\n\t\t\t\tsuffixIsDigits = false\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif suffixIsDigits {\n\t\t\treturn fmt.Errorf(\"trailing tilde and digits in path element\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// CheckFilePath checks that a slash-separated file path is valid.\n// The definition of a valid file path is the same as the definition\n// of a valid import path except that the set of allowed characters is larger:\n// all Unicode letters, ASCII digits, the ASCII space character (U+0020),\n// and the ASCII punctuation characters\n// “!#$%&()+,-.=@[]^_{}~”.\n// (The excluded punctuation characters, \" * < > ? ` ' | / \\ and :,\n// have special meanings in certain shells or operating systems.)\n//\n// CheckFilePath may be less restrictive in the future, but see the\n// top-level package documentation for additional information about\n// subtleties of Unicode.\nfunc CheckFilePath(path string) error {\n\tif err := checkPath(path, filePath); err != nil {\n\t\treturn &InvalidPathError{Kind: \"file\", Path: path, Err: err}\n\t}\n\treturn nil\n}\n\n// badWindowsNames are the reserved file path elements on Windows.\n// See https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file\nvar badWindowsNames = []string{\n\t\"CON\",\n\t\"PRN\",\n\t\"AUX\",\n\t\"NUL\",\n\t\"COM1\",\n\t\"COM2\",\n\t\"COM3\",\n\t\"COM4\",\n\t\"COM5\",\n\t\"COM6\",\n\t\"COM7\",\n\t\"COM8\",\n\t\"COM9\",\n\t\"LPT1\",\n\t\"LPT2\",\n\t\"LPT3\",\n\t\"LPT4\",\n\t\"LPT5\",\n\t\"LPT6\",\n\t\"LPT7\",\n\t\"LPT8\",\n\t\"LPT9\",\n}\n\n// SplitPathVersion returns prefix and major version such that prefix+pathMajor == path\n// and version is either empty or \"/vN\" for N >= 2.\n// As a special case, gopkg.in paths are recognized directly;\n// they require \".vN\" instead of \"/vN\", and for all N, not just N >= 2.\n// SplitPathVersion returns with ok = false when presented with\n// a path whose last path element does not satisfy the constraints\n// applied by [CheckPath], such as \"example.com/pkg/v1\" or \"example.com/pkg/v1.2\".\nfunc SplitPathVersion(path string) (prefix, pathMajor string, ok bool) {\n\tif strings.HasPrefix(path, \"gopkg.in/\") {\n\t\treturn splitGopkgIn(path)\n\t}\n\n\ti := len(path)\n\tdot := false\n\tfor i > 0 && ('0' <= path[i-1] && path[i-1] <= '9' || path[i-1] == '.') {\n\t\tif path[i-1] == '.' {\n\t\t\tdot = true\n\t\t}\n\t\ti--\n\t}\n\tif i <= 1 || i == len(path) || path[i-1] != 'v' || path[i-2] != '/' {\n\t\treturn path, \"\", true\n\t}\n\tprefix, pathMajor = path[:i-2], path[i-2:]\n\tif dot || len(pathMajor) <= 2 || pathMajor[2] == '0' || pathMajor == \"/v1\" {\n\t\treturn path, \"\", false\n\t}\n\treturn prefix, pathMajor, true\n}\n\n// splitGopkgIn is like SplitPathVersion but only for gopkg.in paths.\nfunc splitGopkgIn(path string) (prefix, pathMajor string, ok bool) {\n\tif !strings.HasPrefix(path, \"gopkg.in/\") {\n\t\treturn path, \"\", false\n\t}\n\ti := len(path)\n\tif strings.HasSuffix(path, \"-unstable\") {\n\t\ti -= len(\"-unstable\")\n\t}\n\tfor i > 0 && ('0' <= path[i-1] && path[i-1] <= '9') {\n\t\ti--\n\t}\n\tif i <= 1 || path[i-1] != 'v' || path[i-2] != '.' {\n\t\t// All gopkg.in paths must end in vN for some N.\n\t\treturn path, \"\", false\n\t}\n\tprefix, pathMajor = path[:i-2], path[i-2:]\n\tif len(pathMajor) <= 2 || pathMajor[2] == '0' && pathMajor != \".v0\" {\n\t\treturn path, \"\", false\n\t}\n\treturn prefix, pathMajor, true\n}\n\n// MatchPathMajor reports whether the semantic version v\n// matches the path major version pathMajor.\n//\n// MatchPathMajor returns true if and only if [CheckPathMajor] returns nil.\nfunc MatchPathMajor(v, pathMajor string) bool {\n\treturn CheckPathMajor(v, pathMajor) == nil\n}\n\n// CheckPathMajor returns a non-nil error if the semantic version v\n// does not match the path major version pathMajor.\nfunc CheckPathMajor(v, pathMajor string) error {\n\t// TODO(jayconrod): return errors or panic for invalid inputs. This function\n\t// (and others) was covered by integration tests for cmd/go, and surrounding\n\t// code protected against invalid inputs like non-canonical versions.\n\tif strings.HasPrefix(pathMajor, \".v\") && strings.HasSuffix(pathMajor, \"-unstable\") {\n\t\tpathMajor = strings.TrimSuffix(pathMajor, \"-unstable\")\n\t}\n\tif strings.HasPrefix(v, \"v0.0.0-\") && pathMajor == \".v1\" {\n\t\t// Allow old bug in pseudo-versions that generated v0.0.0- pseudoversion for gopkg .v1.\n\t\t// For example, gopkg.in/yaml.v2@v2.2.1's go.mod requires gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405.\n\t\treturn nil\n\t}\n\tm := semver.Major(v)\n\tif pathMajor == \"\" {\n\t\tif m == \"v0\" || m == \"v1\" || semver.Build(v) == \"+incompatible\" {\n\t\t\treturn nil\n\t\t}\n\t\tpathMajor = \"v0 or v1\"\n\t} else if pathMajor[0] == '/' || pathMajor[0] == '.' {\n\t\tif m == pathMajor[1:] {\n\t\t\treturn nil\n\t\t}\n\t\tpathMajor = pathMajor[1:]\n\t}\n\treturn &InvalidVersionError{\n\t\tVersion: v,\n\t\tErr:     fmt.Errorf(\"should be %s, not %s\", pathMajor, semver.Major(v)),\n\t}\n}\n\n// PathMajorPrefix returns the major-version tag prefix implied by pathMajor.\n// An empty PathMajorPrefix allows either v0 or v1.\n//\n// Note that [MatchPathMajor] may accept some versions that do not actually begin\n// with this prefix: namely, it accepts a 'v0.0.0-' prefix for a '.v1'\n// pathMajor, even though that pathMajor implies 'v1' tagging.\nfunc PathMajorPrefix(pathMajor string) string {\n\tif pathMajor == \"\" {\n\t\treturn \"\"\n\t}\n\tif pathMajor[0] != '/' && pathMajor[0] != '.' {\n\t\tpanic(\"pathMajor suffix \" + pathMajor + \" passed to PathMajorPrefix lacks separator\")\n\t}\n\tif strings.HasPrefix(pathMajor, \".v\") && strings.HasSuffix(pathMajor, \"-unstable\") {\n\t\tpathMajor = strings.TrimSuffix(pathMajor, \"-unstable\")\n\t}\n\tm := pathMajor[1:]\n\tif m != semver.Major(m) {\n\t\tpanic(\"pathMajor suffix \" + pathMajor + \"passed to PathMajorPrefix is not a valid major version\")\n\t}\n\treturn m\n}\n\n// CanonicalVersion returns the canonical form of the version string v.\n// It is the same as [semver.Canonical] except that it preserves the special build suffix \"+incompatible\".\nfunc CanonicalVersion(v string) string {\n\tcv := semver.Canonical(v)\n\tif semver.Build(v) == \"+incompatible\" {\n\t\tcv += \"+incompatible\"\n\t}\n\treturn cv\n}\n\n// Sort sorts the list by Path, breaking ties by comparing [Version] fields.\n// The Version fields are interpreted as semantic versions (using [semver.Compare])\n// optionally followed by a tie-breaking suffix introduced by a slash character,\n// like in \"v0.0.1/go.mod\".\nfunc Sort(list []Version) {\n\tslices.SortFunc(list, func(i, j Version) int {\n\t\tif i.Path != j.Path {\n\t\t\treturn strings.Compare(i.Path, j.Path)\n\t\t}\n\t\t// To help go.sum formatting, allow version/file.\n\t\t// Compare semver prefix by semver rules,\n\t\t// file by string order.\n\t\tvi := i.Version\n\t\tvj := j.Version\n\t\tvar fi, fj string\n\t\tif k := strings.Index(vi, \"/\"); k >= 0 {\n\t\t\tvi, fi = vi[:k], vi[k:]\n\t\t}\n\t\tif k := strings.Index(vj, \"/\"); k >= 0 {\n\t\t\tvj, fj = vj[:k], vj[k:]\n\t\t}\n\t\tif vi != vj {\n\t\t\treturn semver.Compare(vi, vj)\n\t\t}\n\t\treturn cmp.Compare(fi, fj)\n\t})\n}\n\n// EscapePath returns the escaped form of the given module path.\n// It fails if the module path is invalid.\nfunc EscapePath(path string) (escaped string, err error) {\n\tif err := CheckPath(path); err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn escapeString(path)\n}\n\n// EscapeVersion returns the escaped form of the given module version.\n// Versions are allowed to be in non-semver form but must be valid file names\n// and not contain exclamation marks.\nfunc EscapeVersion(v string) (escaped string, err error) {\n\tif err := checkElem(v, filePath); err != nil || strings.Contains(v, \"!\") {\n\t\treturn \"\", &InvalidVersionError{\n\t\t\tVersion: v,\n\t\t\tErr:     fmt.Errorf(\"disallowed version string\"),\n\t\t}\n\t}\n\treturn escapeString(v)\n}\n\nfunc escapeString(s string) (escaped string, err error) {\n\thaveUpper := false\n\tfor _, r := range s {\n\t\tif r == '!' || r >= utf8.RuneSelf {\n\t\t\t// This should be disallowed by CheckPath, but diagnose anyway.\n\t\t\t// The correctness of the escaping loop below depends on it.\n\t\t\treturn \"\", fmt.Errorf(\"internal error: inconsistency in EscapePath\")\n\t\t}\n\t\tif 'A' <= r && r <= 'Z' {\n\t\t\thaveUpper = true\n\t\t}\n\t}\n\n\tif !haveUpper {\n\t\treturn s, nil\n\t}\n\n\tvar buf []byte\n\tfor _, r := range s {\n\t\tif 'A' <= r && r <= 'Z' {\n\t\t\tbuf = append(buf, '!', byte(r+'a'-'A'))\n\t\t} else {\n\t\t\tbuf = append(buf, byte(r))\n\t\t}\n\t}\n\treturn string(buf), nil\n}\n\n// UnescapePath returns the module path for the given escaped path.\n// It fails if the escaped path is invalid or describes an invalid path.\nfunc UnescapePath(escaped string) (path string, err error) {\n\tpath, ok := unescapeString(escaped)\n\tif !ok {\n\t\treturn \"\", fmt.Errorf(\"invalid escaped module path %q\", escaped)\n\t}\n\tif err := CheckPath(path); err != nil {\n\t\treturn \"\", fmt.Errorf(\"invalid escaped module path %q: %v\", escaped, err)\n\t}\n\treturn path, nil\n}\n\n// UnescapeVersion returns the version string for the given escaped version.\n// It fails if the escaped form is invalid or describes an invalid version.\n// Versions are allowed to be in non-semver form but must be valid file names\n// and not contain exclamation marks.\nfunc UnescapeVersion(escaped string) (v string, err error) {\n\tv, ok := unescapeString(escaped)\n\tif !ok {\n\t\treturn \"\", fmt.Errorf(\"invalid escaped version %q\", escaped)\n\t}\n\tif err := checkElem(v, filePath); err != nil {\n\t\treturn \"\", fmt.Errorf(\"invalid escaped version %q: %v\", v, err)\n\t}\n\treturn v, nil\n}\n\nfunc unescapeString(escaped string) (string, bool) {\n\tvar buf []byte\n\n\tbang := false\n\tfor _, r := range escaped {\n\t\tif r >= utf8.RuneSelf {\n\t\t\treturn \"\", false\n\t\t}\n\t\tif bang {\n\t\t\tbang = false\n\t\t\tif r < 'a' || 'z' < r {\n\t\t\t\treturn \"\", false\n\t\t\t}\n\t\t\tbuf = append(buf, byte(r+'A'-'a'))\n\t\t\tcontinue\n\t\t}\n\t\tif r == '!' {\n\t\t\tbang = true\n\t\t\tcontinue\n\t\t}\n\t\tif 'A' <= r && r <= 'Z' {\n\t\t\treturn \"\", false\n\t\t}\n\t\tbuf = append(buf, byte(r))\n\t}\n\tif bang {\n\t\treturn \"\", false\n\t}\n\treturn string(buf), true\n}\n\n// MatchPrefixPatterns reports whether any path prefix of target matches one of\n// the glob patterns (as defined by [path.Match]) in the comma-separated globs\n// list. This implements the algorithm used when matching a module path to the\n// GOPRIVATE environment variable, as described by 'go help module-private'.\n//\n// It ignores any empty or malformed patterns in the list.\n// Trailing slashes on patterns are ignored.\nfunc MatchPrefixPatterns(globs, target string) bool {\n\tfor globs != \"\" {\n\t\t// Extract next non-empty glob in comma-separated list.\n\t\tvar glob string\n\t\tif before, after, ok := strings.Cut(globs, \",\"); ok {\n\t\t\tglob, globs = before, after\n\t\t} else {\n\t\t\tglob, globs = globs, \"\"\n\t\t}\n\t\tglob = strings.TrimSuffix(glob, \"/\")\n\t\tif glob == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// A glob with N+1 path elements (N slashes) needs to be matched\n\t\t// against the first N+1 path elements of target,\n\t\t// which end just before the N+1'th slash.\n\t\tn := strings.Count(glob, \"/\")\n\t\tprefix := target\n\t\t// Walk target, counting slashes, truncating at the N+1'th slash.\n\t\tfor i := 0; i < len(target); i++ {\n\t\t\tif target[i] == '/' {\n\t\t\t\tif n == 0 {\n\t\t\t\t\tprefix = target[:i]\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tn--\n\t\t\t}\n\t\t}\n\t\tif n > 0 {\n\t\t\t// Not enough prefix elements.\n\t\t\tcontinue\n\t\t}\n\t\tmatched, _ := path.Match(glob, prefix)\n\t\tif matched {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/golang.org/x/mod/module/pseudo.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Pseudo-versions\n//\n// Code authors are expected to tag the revisions they want users to use,\n// including prereleases. However, not all authors tag versions at all,\n// and not all commits a user might want to try will have tags.\n// A pseudo-version is a version with a special form that allows us to\n// address an untagged commit and order that version with respect to\n// other versions we might encounter.\n//\n// A pseudo-version takes one of the general forms:\n//\n//\t(1) vX.0.0-yyyymmddhhmmss-abcdef123456\n//\t(2) vX.Y.(Z+1)-0.yyyymmddhhmmss-abcdef123456\n//\t(3) vX.Y.(Z+1)-0.yyyymmddhhmmss-abcdef123456+incompatible\n//\t(4) vX.Y.Z-pre.0.yyyymmddhhmmss-abcdef123456\n//\t(5) vX.Y.Z-pre.0.yyyymmddhhmmss-abcdef123456+incompatible\n//\n// If there is no recently tagged version with the right major version vX,\n// then form (1) is used, creating a space of pseudo-versions at the bottom\n// of the vX version range, less than any tagged version, including the unlikely v0.0.0.\n//\n// If the most recent tagged version before the target commit is vX.Y.Z or vX.Y.Z+incompatible,\n// then the pseudo-version uses form (2) or (3), making it a prerelease for the next\n// possible semantic version after vX.Y.Z. The leading 0 segment in the prerelease string\n// ensures that the pseudo-version compares less than possible future explicit prereleases\n// like vX.Y.(Z+1)-rc1 or vX.Y.(Z+1)-1.\n//\n// If the most recent tagged version before the target commit is vX.Y.Z-pre or vX.Y.Z-pre+incompatible,\n// then the pseudo-version uses form (4) or (5), making it a slightly later prerelease.\n\npackage module\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"golang.org/x/mod/internal/lazyregexp\"\n\t\"golang.org/x/mod/semver\"\n)\n\nvar pseudoVersionRE = lazyregexp.New(`^v[0-9]+\\.(0\\.0-|\\d+\\.\\d+-([^+]*\\.)?0\\.)\\d{14}-[A-Za-z0-9]+(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$`)\n\nconst PseudoVersionTimestampFormat = \"20060102150405\"\n\n// PseudoVersion returns a pseudo-version for the given major version (\"v1\")\n// preexisting older tagged version (\"\" or \"v1.2.3\" or \"v1.2.3-pre\"), revision time,\n// and revision identifier (usually a 12-byte commit hash prefix).\nfunc PseudoVersion(major, older string, t time.Time, rev string) string {\n\tif major == \"\" {\n\t\tmajor = \"v0\"\n\t}\n\tsegment := fmt.Sprintf(\"%s-%s\", t.UTC().Format(PseudoVersionTimestampFormat), rev)\n\tbuild := semver.Build(older)\n\tolder = semver.Canonical(older)\n\tif older == \"\" {\n\t\treturn major + \".0.0-\" + segment // form (1)\n\t}\n\tif semver.Prerelease(older) != \"\" {\n\t\treturn older + \".0.\" + segment + build // form (4), (5)\n\t}\n\n\t// Form (2), (3).\n\t// Extract patch from vMAJOR.MINOR.PATCH\n\ti := strings.LastIndex(older, \".\") + 1\n\tv, patch := older[:i], older[i:]\n\n\t// Reassemble.\n\treturn v + incDecimal(patch) + \"-0.\" + segment + build\n}\n\n// ZeroPseudoVersion returns a pseudo-version with a zero timestamp and\n// revision, which may be used as a placeholder.\nfunc ZeroPseudoVersion(major string) string {\n\treturn PseudoVersion(major, \"\", time.Time{}, \"000000000000\")\n}\n\n// incDecimal returns the decimal string incremented by 1.\nfunc incDecimal(decimal string) string {\n\t// Scan right to left turning 9s to 0s until you find a digit to increment.\n\tdigits := []byte(decimal)\n\ti := len(digits) - 1\n\tfor ; i >= 0 && digits[i] == '9'; i-- {\n\t\tdigits[i] = '0'\n\t}\n\tif i >= 0 {\n\t\tdigits[i]++\n\t} else {\n\t\t// digits is all zeros\n\t\tdigits[0] = '1'\n\t\tdigits = append(digits, '0')\n\t}\n\treturn string(digits)\n}\n\n// decDecimal returns the decimal string decremented by 1, or the empty string\n// if the decimal is all zeroes.\nfunc decDecimal(decimal string) string {\n\t// Scan right to left turning 0s to 9s until you find a digit to decrement.\n\tdigits := []byte(decimal)\n\ti := len(digits) - 1\n\tfor ; i >= 0 && digits[i] == '0'; i-- {\n\t\tdigits[i] = '9'\n\t}\n\tif i < 0 {\n\t\t// decimal is all zeros\n\t\treturn \"\"\n\t}\n\tif i == 0 && digits[i] == '1' && len(digits) > 1 {\n\t\tdigits = digits[1:]\n\t} else {\n\t\tdigits[i]--\n\t}\n\treturn string(digits)\n}\n\n// IsPseudoVersion reports whether v is a pseudo-version.\nfunc IsPseudoVersion(v string) bool {\n\treturn strings.Count(v, \"-\") >= 2 && semver.IsValid(v) && pseudoVersionRE.MatchString(v)\n}\n\n// IsZeroPseudoVersion returns whether v is a pseudo-version with a zero base,\n// timestamp, and revision, as returned by [ZeroPseudoVersion].\nfunc IsZeroPseudoVersion(v string) bool {\n\treturn v == ZeroPseudoVersion(semver.Major(v))\n}\n\n// PseudoVersionTime returns the time stamp of the pseudo-version v.\n// It returns an error if v is not a pseudo-version or if the time stamp\n// embedded in the pseudo-version is not a valid time.\nfunc PseudoVersionTime(v string) (time.Time, error) {\n\t_, timestamp, _, _, err := parsePseudoVersion(v)\n\tif err != nil {\n\t\treturn time.Time{}, err\n\t}\n\tt, err := time.Parse(\"20060102150405\", timestamp)\n\tif err != nil {\n\t\treturn time.Time{}, &InvalidVersionError{\n\t\t\tVersion: v,\n\t\t\tPseudo:  true,\n\t\t\tErr:     fmt.Errorf(\"malformed time %q\", timestamp),\n\t\t}\n\t}\n\treturn t, nil\n}\n\n// PseudoVersionRev returns the revision identifier of the pseudo-version v.\n// It returns an error if v is not a pseudo-version.\nfunc PseudoVersionRev(v string) (rev string, err error) {\n\t_, _, rev, _, err = parsePseudoVersion(v)\n\treturn\n}\n\n// PseudoVersionBase returns the canonical parent version, if any, upon which\n// the pseudo-version v is based.\n//\n// If v has no parent version (that is, if it is \"vX.0.0-[…]\"),\n// PseudoVersionBase returns the empty string and a nil error.\nfunc PseudoVersionBase(v string) (string, error) {\n\tbase, _, _, build, err := parsePseudoVersion(v)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tswitch pre := semver.Prerelease(base); pre {\n\tcase \"\":\n\t\t// vX.0.0-yyyymmddhhmmss-abcdef123456 → \"\"\n\t\tif build != \"\" {\n\t\t\t// Pseudo-versions of the form vX.0.0-yyyymmddhhmmss-abcdef123456+incompatible\n\t\t\t// are nonsensical: the \"vX.0.0-\" prefix implies that there is no parent tag,\n\t\t\t// but the \"+incompatible\" suffix implies that the major version of\n\t\t\t// the parent tag is not compatible with the module's import path.\n\t\t\t//\n\t\t\t// There are a few such entries in the index generated by proxy.golang.org,\n\t\t\t// but we believe those entries were generated by the proxy itself.\n\t\t\treturn \"\", &InvalidVersionError{\n\t\t\t\tVersion: v,\n\t\t\t\tPseudo:  true,\n\t\t\t\tErr:     fmt.Errorf(\"lacks base version, but has build metadata %q\", build),\n\t\t\t}\n\t\t}\n\t\treturn \"\", nil\n\n\tcase \"-0\":\n\t\t// vX.Y.(Z+1)-0.yyyymmddhhmmss-abcdef123456 → vX.Y.Z\n\t\t// vX.Y.(Z+1)-0.yyyymmddhhmmss-abcdef123456+incompatible → vX.Y.Z+incompatible\n\t\tbase = strings.TrimSuffix(base, pre)\n\t\ti := strings.LastIndexByte(base, '.')\n\t\tif i < 0 {\n\t\t\tpanic(\"base from parsePseudoVersion missing patch number: \" + base)\n\t\t}\n\t\tpatch := decDecimal(base[i+1:])\n\t\tif patch == \"\" {\n\t\t\t// vX.0.0-0 is invalid, but has been observed in the wild in the index\n\t\t\t// generated by requests to proxy.golang.org.\n\t\t\t//\n\t\t\t// NOTE(bcmills): I cannot find a historical bug that accounts for\n\t\t\t// pseudo-versions of this form, nor have I seen such versions in any\n\t\t\t// actual go.mod files. If we find actual examples of this form and a\n\t\t\t// reasonable theory of how they came into existence, it seems fine to\n\t\t\t// treat them as equivalent to vX.0.0 (especially since the invalid\n\t\t\t// pseudo-versions have lower precedence than the real ones). For now, we\n\t\t\t// reject them.\n\t\t\treturn \"\", &InvalidVersionError{\n\t\t\t\tVersion: v,\n\t\t\t\tPseudo:  true,\n\t\t\t\tErr:     fmt.Errorf(\"version before %s would have negative patch number\", base),\n\t\t\t}\n\t\t}\n\t\treturn base[:i+1] + patch + build, nil\n\n\tdefault:\n\t\t// vX.Y.Z-pre.0.yyyymmddhhmmss-abcdef123456 → vX.Y.Z-pre\n\t\t// vX.Y.Z-pre.0.yyyymmddhhmmss-abcdef123456+incompatible → vX.Y.Z-pre+incompatible\n\t\tif !strings.HasSuffix(base, \".0\") {\n\t\t\tpanic(`base from parsePseudoVersion missing \".0\" before date: ` + base)\n\t\t}\n\t\treturn strings.TrimSuffix(base, \".0\") + build, nil\n\t}\n}\n\nvar errPseudoSyntax = errors.New(\"syntax error\")\n\nfunc parsePseudoVersion(v string) (base, timestamp, rev, build string, err error) {\n\tif !IsPseudoVersion(v) {\n\t\treturn \"\", \"\", \"\", \"\", &InvalidVersionError{\n\t\t\tVersion: v,\n\t\t\tPseudo:  true,\n\t\t\tErr:     errPseudoSyntax,\n\t\t}\n\t}\n\tbuild = semver.Build(v)\n\tv = strings.TrimSuffix(v, build)\n\tj := strings.LastIndex(v, \"-\")\n\tv, rev = v[:j], v[j+1:]\n\ti := strings.LastIndex(v, \"-\")\n\tif j := strings.LastIndex(v, \".\"); j > i {\n\t\tbase = v[:j] // \"vX.Y.Z-pre.0\" or \"vX.Y.(Z+1)-0\"\n\t\ttimestamp = v[j+1:]\n\t} else {\n\t\tbase = v[:i] // \"vX.0.0\"\n\t\ttimestamp = v[i+1:]\n\t}\n\treturn base, timestamp, rev, build, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/mod/semver/semver.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package semver implements comparison of semantic version strings.\n// In this package, semantic version strings must begin with a leading \"v\",\n// as in \"v1.0.0\".\n//\n// The general form of a semantic version string accepted by this package is\n//\n//\tvMAJOR[.MINOR[.PATCH[-PRERELEASE][+BUILD]]]\n//\n// where square brackets indicate optional parts of the syntax;\n// MAJOR, MINOR, and PATCH are decimal integers without extra leading zeros;\n// PRERELEASE and BUILD are each a series of non-empty dot-separated identifiers\n// using only alphanumeric characters and hyphens; and\n// all-numeric PRERELEASE identifiers must not have leading zeros.\n//\n// This package follows Semantic Versioning 2.0.0 (see semver.org)\n// with two exceptions. First, it requires the \"v\" prefix. Second, it recognizes\n// vMAJOR and vMAJOR.MINOR (with no prerelease or build suffixes)\n// as shorthands for vMAJOR.0.0 and vMAJOR.MINOR.0.\npackage semver\n\nimport (\n\t\"slices\"\n\t\"strings\"\n)\n\n// parsed returns the parsed form of a semantic version string.\ntype parsed struct {\n\tmajor      string\n\tminor      string\n\tpatch      string\n\tshort      string\n\tprerelease string\n\tbuild      string\n}\n\n// IsValid reports whether v is a valid semantic version string.\nfunc IsValid(v string) bool {\n\t_, ok := parse(v)\n\treturn ok\n}\n\n// Canonical returns the canonical formatting of the semantic version v.\n// It fills in any missing .MINOR or .PATCH and discards build metadata.\n// Two semantic versions compare equal only if their canonical formatting\n// is an identical string.\n// The canonical invalid semantic version is the empty string.\nfunc Canonical(v string) string {\n\tp, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\tif p.build != \"\" {\n\t\treturn v[:len(v)-len(p.build)]\n\t}\n\tif p.short != \"\" {\n\t\treturn v + p.short\n\t}\n\treturn v\n}\n\n// Major returns the major version prefix of the semantic version v.\n// For example, Major(\"v2.1.0\") == \"v2\".\n// If v is an invalid semantic version string, Major returns the empty string.\nfunc Major(v string) string {\n\tpv, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\treturn v[:1+len(pv.major)]\n}\n\n// MajorMinor returns the major.minor version prefix of the semantic version v.\n// For example, MajorMinor(\"v2.1.0\") == \"v2.1\".\n// If v is an invalid semantic version string, MajorMinor returns the empty string.\nfunc MajorMinor(v string) string {\n\tpv, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\ti := 1 + len(pv.major)\n\tif j := i + 1 + len(pv.minor); j <= len(v) && v[i] == '.' && v[i+1:j] == pv.minor {\n\t\treturn v[:j]\n\t}\n\treturn v[:i] + \".\" + pv.minor\n}\n\n// Prerelease returns the prerelease suffix of the semantic version v.\n// For example, Prerelease(\"v2.1.0-pre+meta\") == \"-pre\".\n// If v is an invalid semantic version string, Prerelease returns the empty string.\nfunc Prerelease(v string) string {\n\tpv, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\treturn pv.prerelease\n}\n\n// Build returns the build suffix of the semantic version v.\n// For example, Build(\"v2.1.0+meta\") == \"+meta\".\n// If v is an invalid semantic version string, Build returns the empty string.\nfunc Build(v string) string {\n\tpv, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\treturn pv.build\n}\n\n// Compare returns an integer comparing two versions according to\n// semantic version precedence.\n// The result will be 0 if v == w, -1 if v < w, or +1 if v > w.\n//\n// An invalid semantic version string is considered less than a valid one.\n// All invalid semantic version strings compare equal to each other.\nfunc Compare(v, w string) int {\n\tpv, ok1 := parse(v)\n\tpw, ok2 := parse(w)\n\tif !ok1 && !ok2 {\n\t\treturn 0\n\t}\n\tif !ok1 {\n\t\treturn -1\n\t}\n\tif !ok2 {\n\t\treturn +1\n\t}\n\tif c := compareInt(pv.major, pw.major); c != 0 {\n\t\treturn c\n\t}\n\tif c := compareInt(pv.minor, pw.minor); c != 0 {\n\t\treturn c\n\t}\n\tif c := compareInt(pv.patch, pw.patch); c != 0 {\n\t\treturn c\n\t}\n\treturn comparePrerelease(pv.prerelease, pw.prerelease)\n}\n\n// Max canonicalizes its arguments and then returns the version string\n// that compares greater.\n//\n// Deprecated: use [Compare] instead. In most cases, returning a canonicalized\n// version is not expected or desired.\nfunc Max(v, w string) string {\n\tv = Canonical(v)\n\tw = Canonical(w)\n\tif Compare(v, w) > 0 {\n\t\treturn v\n\t}\n\treturn w\n}\n\n// ByVersion implements [sort.Interface] for sorting semantic version strings.\ntype ByVersion []string\n\nfunc (vs ByVersion) Len() int           { return len(vs) }\nfunc (vs ByVersion) Swap(i, j int)      { vs[i], vs[j] = vs[j], vs[i] }\nfunc (vs ByVersion) Less(i, j int) bool { return compareVersion(vs[i], vs[j]) < 0 }\n\n// Sort sorts a list of semantic version strings using [Compare] and falls back\n// to use [strings.Compare] if both versions are considered equal.\nfunc Sort(list []string) {\n\tslices.SortFunc(list, compareVersion)\n}\n\nfunc compareVersion(a, b string) int {\n\tcmp := Compare(a, b)\n\tif cmp != 0 {\n\t\treturn cmp\n\t}\n\treturn strings.Compare(a, b)\n}\n\nfunc parse(v string) (p parsed, ok bool) {\n\tif v == \"\" || v[0] != 'v' {\n\t\treturn\n\t}\n\tp.major, v, ok = parseInt(v[1:])\n\tif !ok {\n\t\treturn\n\t}\n\tif v == \"\" {\n\t\tp.minor = \"0\"\n\t\tp.patch = \"0\"\n\t\tp.short = \".0.0\"\n\t\treturn\n\t}\n\tif v[0] != '.' {\n\t\tok = false\n\t\treturn\n\t}\n\tp.minor, v, ok = parseInt(v[1:])\n\tif !ok {\n\t\treturn\n\t}\n\tif v == \"\" {\n\t\tp.patch = \"0\"\n\t\tp.short = \".0\"\n\t\treturn\n\t}\n\tif v[0] != '.' {\n\t\tok = false\n\t\treturn\n\t}\n\tp.patch, v, ok = parseInt(v[1:])\n\tif !ok {\n\t\treturn\n\t}\n\tif len(v) > 0 && v[0] == '-' {\n\t\tp.prerelease, v, ok = parsePrerelease(v)\n\t\tif !ok {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(v) > 0 && v[0] == '+' {\n\t\tp.build, v, ok = parseBuild(v)\n\t\tif !ok {\n\t\t\treturn\n\t\t}\n\t}\n\tif v != \"\" {\n\t\tok = false\n\t\treturn\n\t}\n\tok = true\n\treturn\n}\n\nfunc parseInt(v string) (t, rest string, ok bool) {\n\tif v == \"\" {\n\t\treturn\n\t}\n\tif v[0] < '0' || '9' < v[0] {\n\t\treturn\n\t}\n\ti := 1\n\tfor i < len(v) && '0' <= v[i] && v[i] <= '9' {\n\t\ti++\n\t}\n\tif v[0] == '0' && i != 1 {\n\t\treturn\n\t}\n\treturn v[:i], v[i:], true\n}\n\nfunc parsePrerelease(v string) (t, rest string, ok bool) {\n\t// \"A pre-release version MAY be denoted by appending a hyphen and\n\t// a series of dot separated identifiers immediately following the patch version.\n\t// Identifiers MUST comprise only ASCII alphanumerics and hyphen [0-9A-Za-z-].\n\t// Identifiers MUST NOT be empty. Numeric identifiers MUST NOT include leading zeroes.\"\n\tif v == \"\" || v[0] != '-' {\n\t\treturn\n\t}\n\ti := 1\n\tstart := 1\n\tfor i < len(v) && v[i] != '+' {\n\t\tif !isIdentChar(v[i]) && v[i] != '.' {\n\t\t\treturn\n\t\t}\n\t\tif v[i] == '.' {\n\t\t\tif start == i || isBadNum(v[start:i]) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tstart = i + 1\n\t\t}\n\t\ti++\n\t}\n\tif start == i || isBadNum(v[start:i]) {\n\t\treturn\n\t}\n\treturn v[:i], v[i:], true\n}\n\nfunc parseBuild(v string) (t, rest string, ok bool) {\n\tif v == \"\" || v[0] != '+' {\n\t\treturn\n\t}\n\ti := 1\n\tstart := 1\n\tfor i < len(v) {\n\t\tif !isIdentChar(v[i]) && v[i] != '.' {\n\t\t\treturn\n\t\t}\n\t\tif v[i] == '.' {\n\t\t\tif start == i {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tstart = i + 1\n\t\t}\n\t\ti++\n\t}\n\tif start == i {\n\t\treturn\n\t}\n\treturn v[:i], v[i:], true\n}\n\nfunc isIdentChar(c byte) bool {\n\treturn 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' || '0' <= c && c <= '9' || c == '-'\n}\n\nfunc isBadNum(v string) bool {\n\ti := 0\n\tfor i < len(v) && '0' <= v[i] && v[i] <= '9' {\n\t\ti++\n\t}\n\treturn i == len(v) && i > 1 && v[0] == '0'\n}\n\nfunc isNum(v string) bool {\n\ti := 0\n\tfor i < len(v) && '0' <= v[i] && v[i] <= '9' {\n\t\ti++\n\t}\n\treturn i == len(v)\n}\n\nfunc compareInt(x, y string) int {\n\tif x == y {\n\t\treturn 0\n\t}\n\tif len(x) < len(y) {\n\t\treturn -1\n\t}\n\tif len(x) > len(y) {\n\t\treturn +1\n\t}\n\tif x < y {\n\t\treturn -1\n\t} else {\n\t\treturn +1\n\t}\n}\n\nfunc comparePrerelease(x, y string) int {\n\t// \"When major, minor, and patch are equal, a pre-release version has\n\t// lower precedence than a normal version.\n\t// Example: 1.0.0-alpha < 1.0.0.\n\t// Precedence for two pre-release versions with the same major, minor,\n\t// and patch version MUST be determined by comparing each dot separated\n\t// identifier from left to right until a difference is found as follows:\n\t// identifiers consisting of only digits are compared numerically and\n\t// identifiers with letters or hyphens are compared lexically in ASCII\n\t// sort order. Numeric identifiers always have lower precedence than\n\t// non-numeric identifiers. A larger set of pre-release fields has a\n\t// higher precedence than a smaller set, if all of the preceding\n\t// identifiers are equal.\n\t// Example: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta <\n\t// 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0.\"\n\tif x == y {\n\t\treturn 0\n\t}\n\tif x == \"\" {\n\t\treturn +1\n\t}\n\tif y == \"\" {\n\t\treturn -1\n\t}\n\tfor x != \"\" && y != \"\" {\n\t\tx = x[1:] // skip - or .\n\t\ty = y[1:] // skip - or .\n\t\tvar dx, dy string\n\t\tdx, x = nextIdent(x)\n\t\tdy, y = nextIdent(y)\n\t\tif dx != dy {\n\t\t\tix := isNum(dx)\n\t\t\tiy := isNum(dy)\n\t\t\tif ix != iy {\n\t\t\t\tif ix {\n\t\t\t\t\treturn -1\n\t\t\t\t} else {\n\t\t\t\t\treturn +1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ix {\n\t\t\t\tif len(dx) < len(dy) {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\tif len(dx) > len(dy) {\n\t\t\t\t\treturn +1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif dx < dy {\n\t\t\t\treturn -1\n\t\t\t} else {\n\t\t\t\treturn +1\n\t\t\t}\n\t\t}\n\t}\n\tif x == \"\" {\n\t\treturn -1\n\t} else {\n\t\treturn +1\n\t}\n}\n\nfunc nextIdent(x string) (dx, rest string) {\n\ti := 0\n\tfor i < len(x) && x[i] != '.' {\n\t\ti++\n\t}\n\treturn x[:i], x[i:]\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/golang.org/x/net/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/golang.org/x/net/context/context.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package context has been superseded by the standard library [context] package.\n//\n// Deprecated: Use the standard library context package instead.\npackage context\n\nimport (\n\t\"context\" // standard library's context, as of Go 1.7\n\t\"time\"\n)\n\n// A Context carries a deadline, a cancellation signal, and other values across\n// API boundaries.\n//\n// Context's methods may be called by multiple goroutines simultaneously.\n//\n//go:fix inline\ntype Context = context.Context\n\n// Canceled is the error returned by [Context.Err] when the context is canceled\n// for some reason other than its deadline passing.\n//\n//go:fix inline\nvar Canceled = context.Canceled\n\n// DeadlineExceeded is the error returned by [Context.Err] when the context is canceled\n// due to its deadline passing.\n//\n//go:fix inline\nvar DeadlineExceeded = context.DeadlineExceeded\n\n// Background returns a non-nil, empty Context. It is never canceled, has no\n// values, and has no deadline. It is typically used by the main function,\n// initialization, and tests, and as the top-level Context for incoming\n// requests.\n//\n//go:fix inline\nfunc Background() Context { return context.Background() }\n\n// TODO returns a non-nil, empty Context. Code should use context.TODO when\n// it's unclear which Context to use or it is not yet available (because the\n// surrounding function has not yet been extended to accept a Context\n// parameter).\n//\n//go:fix inline\nfunc TODO() Context { return context.TODO() }\n\n// A CancelFunc tells an operation to abandon its work.\n// A CancelFunc does not wait for the work to stop.\n// A CancelFunc may be called by multiple goroutines simultaneously.\n// After the first call, subsequent calls to a CancelFunc do nothing.\ntype CancelFunc = context.CancelFunc\n\n// WithCancel returns a derived context that points to the parent context\n// but has a new Done channel. The returned context's Done channel is closed\n// when the returned cancel function is called or when the parent context's\n// Done channel is closed, whichever happens first.\n//\n// Canceling this context releases resources associated with it, so code should\n// call cancel as soon as the operations running in this [Context] complete.\n//\n//go:fix inline\nfunc WithCancel(parent Context) (ctx Context, cancel CancelFunc) {\n\treturn context.WithCancel(parent)\n}\n\n// WithDeadline returns a derived context that points to the parent context\n// but has the deadline adjusted to be no later than d. If the parent's\n// deadline is already earlier than d, WithDeadline(parent, d) is semantically\n// equivalent to parent. The returned [Context.Done] channel is closed when\n// the deadline expires, when the returned cancel function is called,\n// or when the parent context's Done channel is closed, whichever happens first.\n//\n// Canceling this context releases resources associated with it, so code should\n// call cancel as soon as the operations running in this [Context] complete.\n//\n//go:fix inline\nfunc WithDeadline(parent Context, d time.Time) (Context, CancelFunc) {\n\treturn context.WithDeadline(parent, d)\n}\n\n// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)).\n//\n// Canceling this context releases resources associated with it, so code should\n// call cancel as soon as the operations running in this [Context] complete:\n//\n//\tfunc slowOperationWithTimeout(ctx context.Context) (Result, error) {\n//\t\tctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)\n//\t\tdefer cancel()  // releases resources if slowOperation completes before timeout elapses\n//\t\treturn slowOperation(ctx)\n//\t}\n//\n//go:fix inline\nfunc WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {\n\treturn context.WithTimeout(parent, timeout)\n}\n\n// WithValue returns a derived context that points to the parent Context.\n// In the derived context, the value associated with key is val.\n//\n// Use context Values only for request-scoped data that transits processes and\n// APIs, not for passing optional parameters to functions.\n//\n// The provided key must be comparable and should not be of type\n// string or any other built-in type to avoid collisions between\n// packages using context. Users of WithValue should define their own\n// types for keys. To avoid allocating when assigning to an\n// interface{}, context keys often have concrete type\n// struct{}. Alternatively, exported context key variables' static\n// type should be a pointer or interface.\n//\n//go:fix inline\nfunc WithValue(parent Context, key, val interface{}) Context {\n\treturn context.WithValue(parent, key, val)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http/httpguts/guts.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package httpguts provides functions implementing various details\n// of the HTTP specification.\n//\n// This package is shared by the standard library (which vendors it)\n// and x/net/http2. It comes with no API stability promise.\npackage httpguts\n\nimport (\n\t\"net/textproto\"\n\t\"strings\"\n)\n\n// ValidTrailerHeader reports whether name is a valid header field name to appear\n// in trailers.\n// See RFC 7230, Section 4.1.2\nfunc ValidTrailerHeader(name string) bool {\n\tname = textproto.CanonicalMIMEHeaderKey(name)\n\tif strings.HasPrefix(name, \"If-\") || badTrailer[name] {\n\t\treturn false\n\t}\n\treturn true\n}\n\nvar badTrailer = map[string]bool{\n\t\"Authorization\":       true,\n\t\"Cache-Control\":       true,\n\t\"Connection\":          true,\n\t\"Content-Encoding\":    true,\n\t\"Content-Length\":      true,\n\t\"Content-Range\":       true,\n\t\"Content-Type\":        true,\n\t\"Expect\":              true,\n\t\"Host\":                true,\n\t\"Keep-Alive\":          true,\n\t\"Max-Forwards\":        true,\n\t\"Pragma\":              true,\n\t\"Proxy-Authenticate\":  true,\n\t\"Proxy-Authorization\": true,\n\t\"Proxy-Connection\":    true,\n\t\"Range\":               true,\n\t\"Realm\":               true,\n\t\"Te\":                  true,\n\t\"Trailer\":             true,\n\t\"Transfer-Encoding\":   true,\n\t\"Www-Authenticate\":    true,\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http/httpguts/httplex.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage httpguts\n\nimport (\n\t\"net\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/net/idna\"\n)\n\nvar isTokenTable = [256]bool{\n\t'!':  true,\n\t'#':  true,\n\t'$':  true,\n\t'%':  true,\n\t'&':  true,\n\t'\\'': true,\n\t'*':  true,\n\t'+':  true,\n\t'-':  true,\n\t'.':  true,\n\t'0':  true,\n\t'1':  true,\n\t'2':  true,\n\t'3':  true,\n\t'4':  true,\n\t'5':  true,\n\t'6':  true,\n\t'7':  true,\n\t'8':  true,\n\t'9':  true,\n\t'A':  true,\n\t'B':  true,\n\t'C':  true,\n\t'D':  true,\n\t'E':  true,\n\t'F':  true,\n\t'G':  true,\n\t'H':  true,\n\t'I':  true,\n\t'J':  true,\n\t'K':  true,\n\t'L':  true,\n\t'M':  true,\n\t'N':  true,\n\t'O':  true,\n\t'P':  true,\n\t'Q':  true,\n\t'R':  true,\n\t'S':  true,\n\t'T':  true,\n\t'U':  true,\n\t'W':  true,\n\t'V':  true,\n\t'X':  true,\n\t'Y':  true,\n\t'Z':  true,\n\t'^':  true,\n\t'_':  true,\n\t'`':  true,\n\t'a':  true,\n\t'b':  true,\n\t'c':  true,\n\t'd':  true,\n\t'e':  true,\n\t'f':  true,\n\t'g':  true,\n\t'h':  true,\n\t'i':  true,\n\t'j':  true,\n\t'k':  true,\n\t'l':  true,\n\t'm':  true,\n\t'n':  true,\n\t'o':  true,\n\t'p':  true,\n\t'q':  true,\n\t'r':  true,\n\t's':  true,\n\t't':  true,\n\t'u':  true,\n\t'v':  true,\n\t'w':  true,\n\t'x':  true,\n\t'y':  true,\n\t'z':  true,\n\t'|':  true,\n\t'~':  true,\n}\n\nfunc IsTokenRune(r rune) bool {\n\treturn r < utf8.RuneSelf && isTokenTable[byte(r)]\n}\n\n// HeaderValuesContainsToken reports whether any string in values\n// contains the provided token, ASCII case-insensitively.\nfunc HeaderValuesContainsToken(values []string, token string) bool {\n\tfor _, v := range values {\n\t\tif headerValueContainsToken(v, token) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// isOWS reports whether b is an optional whitespace byte, as defined\n// by RFC 7230 section 3.2.3.\nfunc isOWS(b byte) bool { return b == ' ' || b == '\\t' }\n\n// trimOWS returns x with all optional whitespace removes from the\n// beginning and end.\nfunc trimOWS(x string) string {\n\t// TODO: consider using strings.Trim(x, \" \\t\") instead,\n\t// if and when it's fast enough. See issue 10292.\n\t// But this ASCII-only code will probably always beat UTF-8\n\t// aware code.\n\tfor len(x) > 0 && isOWS(x[0]) {\n\t\tx = x[1:]\n\t}\n\tfor len(x) > 0 && isOWS(x[len(x)-1]) {\n\t\tx = x[:len(x)-1]\n\t}\n\treturn x\n}\n\n// headerValueContainsToken reports whether v (assumed to be a\n// 0#element, in the ABNF extension described in RFC 7230 section 7)\n// contains token amongst its comma-separated tokens, ASCII\n// case-insensitively.\nfunc headerValueContainsToken(v string, token string) bool {\n\tfor comma := strings.IndexByte(v, ','); comma != -1; comma = strings.IndexByte(v, ',') {\n\t\tif tokenEqual(trimOWS(v[:comma]), token) {\n\t\t\treturn true\n\t\t}\n\t\tv = v[comma+1:]\n\t}\n\treturn tokenEqual(trimOWS(v), token)\n}\n\n// lowerASCII returns the ASCII lowercase version of b.\nfunc lowerASCII(b byte) byte {\n\tif 'A' <= b && b <= 'Z' {\n\t\treturn b + ('a' - 'A')\n\t}\n\treturn b\n}\n\n// tokenEqual reports whether t1 and t2 are equal, ASCII case-insensitively.\nfunc tokenEqual(t1, t2 string) bool {\n\tif len(t1) != len(t2) {\n\t\treturn false\n\t}\n\tfor i, b := range t1 {\n\t\tif b >= utf8.RuneSelf {\n\t\t\t// No UTF-8 or non-ASCII allowed in tokens.\n\t\t\treturn false\n\t\t}\n\t\tif lowerASCII(byte(b)) != lowerASCII(t2[i]) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// isLWS reports whether b is linear white space, according\n// to http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2\n//\n//\tLWS            = [CRLF] 1*( SP | HT )\nfunc isLWS(b byte) bool { return b == ' ' || b == '\\t' }\n\n// isCTL reports whether b is a control byte, according\n// to http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2\n//\n//\tCTL            = <any US-ASCII control character\n//\t                 (octets 0 - 31) and DEL (127)>\nfunc isCTL(b byte) bool {\n\tconst del = 0x7f // a CTL\n\treturn b < ' ' || b == del\n}\n\n// ValidHeaderFieldName reports whether v is a valid HTTP/1.x header name.\n// HTTP/2 imposes the additional restriction that uppercase ASCII\n// letters are not allowed.\n//\n// RFC 7230 says:\n//\n//\theader-field   = field-name \":\" OWS field-value OWS\n//\tfield-name     = token\n//\ttoken          = 1*tchar\n//\ttchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\" / \"+\" / \"-\" / \".\" /\n//\t        \"^\" / \"_\" / \"`\" / \"|\" / \"~\" / DIGIT / ALPHA\nfunc ValidHeaderFieldName(v string) bool {\n\tif len(v) == 0 {\n\t\treturn false\n\t}\n\tfor i := 0; i < len(v); i++ {\n\t\tif !isTokenTable[v[i]] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// ValidHostHeader reports whether h is a valid host header.\nfunc ValidHostHeader(h string) bool {\n\t// The latest spec is actually this:\n\t//\n\t// http://tools.ietf.org/html/rfc7230#section-5.4\n\t//     Host = uri-host [ \":\" port ]\n\t//\n\t// Where uri-host is:\n\t//     http://tools.ietf.org/html/rfc3986#section-3.2.2\n\t//\n\t// But we're going to be much more lenient for now and just\n\t// search for any byte that's not a valid byte in any of those\n\t// expressions.\n\tfor i := 0; i < len(h); i++ {\n\t\tif !validHostByte[h[i]] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// See the validHostHeader comment.\nvar validHostByte = [256]bool{\n\t'0': true, '1': true, '2': true, '3': true, '4': true, '5': true, '6': true, '7': true,\n\t'8': true, '9': true,\n\n\t'a': true, 'b': true, 'c': true, 'd': true, 'e': true, 'f': true, 'g': true, 'h': true,\n\t'i': true, 'j': true, 'k': true, 'l': true, 'm': true, 'n': true, 'o': true, 'p': true,\n\t'q': true, 'r': true, 's': true, 't': true, 'u': true, 'v': true, 'w': true, 'x': true,\n\t'y': true, 'z': true,\n\n\t'A': true, 'B': true, 'C': true, 'D': true, 'E': true, 'F': true, 'G': true, 'H': true,\n\t'I': true, 'J': true, 'K': true, 'L': true, 'M': true, 'N': true, 'O': true, 'P': true,\n\t'Q': true, 'R': true, 'S': true, 'T': true, 'U': true, 'V': true, 'W': true, 'X': true,\n\t'Y': true, 'Z': true,\n\n\t'!':  true, // sub-delims\n\t'$':  true, // sub-delims\n\t'%':  true, // pct-encoded (and used in IPv6 zones)\n\t'&':  true, // sub-delims\n\t'(':  true, // sub-delims\n\t')':  true, // sub-delims\n\t'*':  true, // sub-delims\n\t'+':  true, // sub-delims\n\t',':  true, // sub-delims\n\t'-':  true, // unreserved\n\t'.':  true, // unreserved\n\t':':  true, // IPv6address + Host expression's optional port\n\t';':  true, // sub-delims\n\t'=':  true, // sub-delims\n\t'[':  true,\n\t'\\'': true, // sub-delims\n\t']':  true,\n\t'_':  true, // unreserved\n\t'~':  true, // unreserved\n}\n\n// ValidHeaderFieldValue reports whether v is a valid \"field-value\" according to\n// http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 :\n//\n//\tmessage-header = field-name \":\" [ field-value ]\n//\tfield-value    = *( field-content | LWS )\n//\tfield-content  = <the OCTETs making up the field-value\n//\t                 and consisting of either *TEXT or combinations\n//\t                 of token, separators, and quoted-string>\n//\n// http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 :\n//\n//\tTEXT           = <any OCTET except CTLs,\n//\t                  but including LWS>\n//\tLWS            = [CRLF] 1*( SP | HT )\n//\tCTL            = <any US-ASCII control character\n//\t                 (octets 0 - 31) and DEL (127)>\n//\n// RFC 7230 says:\n//\n//\tfield-value    = *( field-content / obs-fold )\n//\tobj-fold       =  N/A to http2, and deprecated\n//\tfield-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n//\tfield-vchar    = VCHAR / obs-text\n//\tobs-text       = %x80-FF\n//\tVCHAR          = \"any visible [USASCII] character\"\n//\n// http2 further says: \"Similarly, HTTP/2 allows header field values\n// that are not valid. While most of the values that can be encoded\n// will not alter header field parsing, carriage return (CR, ASCII\n// 0xd), line feed (LF, ASCII 0xa), and the zero character (NUL, ASCII\n// 0x0) might be exploited by an attacker if they are translated\n// verbatim. Any request or response that contains a character not\n// permitted in a header field value MUST be treated as malformed\n// (Section 8.1.2.6). Valid characters are defined by the\n// field-content ABNF rule in Section 3.2 of [RFC7230].\"\n//\n// This function does not (yet?) properly handle the rejection of\n// strings that begin or end with SP or HTAB.\nfunc ValidHeaderFieldValue(v string) bool {\n\tfor i := 0; i < len(v); i++ {\n\t\tb := v[i]\n\t\tif isCTL(b) && !isLWS(b) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc isASCII(s string) bool {\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] >= utf8.RuneSelf {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// PunycodeHostPort returns the IDNA Punycode version\n// of the provided \"host\" or \"host:port\" string.\nfunc PunycodeHostPort(v string) (string, error) {\n\tif isASCII(v) {\n\t\treturn v, nil\n\t}\n\n\thost, port, err := net.SplitHostPort(v)\n\tif err != nil {\n\t\t// The input 'v' argument was just a \"host\" argument,\n\t\t// without a port. This error should not be returned\n\t\t// to the caller.\n\t\thost = v\n\t\tport = \"\"\n\t}\n\thost, err = idna.ToASCII(host)\n\tif err != nil {\n\t\t// Non-UTF-8? Not representable in Punycode, in any\n\t\t// case.\n\t\treturn \"\", err\n\t}\n\tif port == \"\" {\n\t\treturn host, nil\n\t}\n\treturn net.JoinHostPort(host, port), nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/.gitignore",
    "content": "*~\nh2i/h2i\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/ascii.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport \"strings\"\n\n// The HTTP protocols are defined in terms of ASCII, not Unicode. This file\n// contains helper functions which may use Unicode-aware functions which would\n// otherwise be unsafe and could introduce vulnerabilities if used improperly.\n\n// asciiEqualFold is strings.EqualFold, ASCII only. It reports whether s and t\n// are equal, ASCII-case-insensitively.\nfunc asciiEqualFold(s, t string) bool {\n\tif len(s) != len(t) {\n\t\treturn false\n\t}\n\tfor i := 0; i < len(s); i++ {\n\t\tif lower(s[i]) != lower(t[i]) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// lower returns the ASCII lowercase version of b.\nfunc lower(b byte) byte {\n\tif 'A' <= b && b <= 'Z' {\n\t\treturn b + ('a' - 'A')\n\t}\n\treturn b\n}\n\n// isASCIIPrint returns whether s is ASCII and printable according to\n// https://tools.ietf.org/html/rfc20#section-4.2.\nfunc isASCIIPrint(s string) bool {\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] < ' ' || s[i] > '~' {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// asciiToLower returns the lowercase version of s if s is ASCII and printable,\n// and whether or not it was.\nfunc asciiToLower(s string) (lower string, ok bool) {\n\tif !isASCIIPrint(s) {\n\t\treturn \"\", false\n\t}\n\treturn strings.ToLower(s), true\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/ciphers.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\n// A list of the possible cipher suite ids. Taken from\n// https://www.iana.org/assignments/tls-parameters/tls-parameters.txt\n\nconst (\n\tcipher_TLS_NULL_WITH_NULL_NULL               uint16 = 0x0000\n\tcipher_TLS_RSA_WITH_NULL_MD5                 uint16 = 0x0001\n\tcipher_TLS_RSA_WITH_NULL_SHA                 uint16 = 0x0002\n\tcipher_TLS_RSA_EXPORT_WITH_RC4_40_MD5        uint16 = 0x0003\n\tcipher_TLS_RSA_WITH_RC4_128_MD5              uint16 = 0x0004\n\tcipher_TLS_RSA_WITH_RC4_128_SHA              uint16 = 0x0005\n\tcipher_TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5    uint16 = 0x0006\n\tcipher_TLS_RSA_WITH_IDEA_CBC_SHA             uint16 = 0x0007\n\tcipher_TLS_RSA_EXPORT_WITH_DES40_CBC_SHA     uint16 = 0x0008\n\tcipher_TLS_RSA_WITH_DES_CBC_SHA              uint16 = 0x0009\n\tcipher_TLS_RSA_WITH_3DES_EDE_CBC_SHA         uint16 = 0x000A\n\tcipher_TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA  uint16 = 0x000B\n\tcipher_TLS_DH_DSS_WITH_DES_CBC_SHA           uint16 = 0x000C\n\tcipher_TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA      uint16 = 0x000D\n\tcipher_TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA  uint16 = 0x000E\n\tcipher_TLS_DH_RSA_WITH_DES_CBC_SHA           uint16 = 0x000F\n\tcipher_TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA      uint16 = 0x0010\n\tcipher_TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA uint16 = 0x0011\n\tcipher_TLS_DHE_DSS_WITH_DES_CBC_SHA          uint16 = 0x0012\n\tcipher_TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA     uint16 = 0x0013\n\tcipher_TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA uint16 = 0x0014\n\tcipher_TLS_DHE_RSA_WITH_DES_CBC_SHA          uint16 = 0x0015\n\tcipher_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA     uint16 = 0x0016\n\tcipher_TLS_DH_anon_EXPORT_WITH_RC4_40_MD5    uint16 = 0x0017\n\tcipher_TLS_DH_anon_WITH_RC4_128_MD5          uint16 = 0x0018\n\tcipher_TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA uint16 = 0x0019\n\tcipher_TLS_DH_anon_WITH_DES_CBC_SHA          uint16 = 0x001A\n\tcipher_TLS_DH_anon_WITH_3DES_EDE_CBC_SHA     uint16 = 0x001B\n\t// Reserved uint16 =  0x001C-1D\n\tcipher_TLS_KRB5_WITH_DES_CBC_SHA             uint16 = 0x001E\n\tcipher_TLS_KRB5_WITH_3DES_EDE_CBC_SHA        uint16 = 0x001F\n\tcipher_TLS_KRB5_WITH_RC4_128_SHA             uint16 = 0x0020\n\tcipher_TLS_KRB5_WITH_IDEA_CBC_SHA            uint16 = 0x0021\n\tcipher_TLS_KRB5_WITH_DES_CBC_MD5             uint16 = 0x0022\n\tcipher_TLS_KRB5_WITH_3DES_EDE_CBC_MD5        uint16 = 0x0023\n\tcipher_TLS_KRB5_WITH_RC4_128_MD5             uint16 = 0x0024\n\tcipher_TLS_KRB5_WITH_IDEA_CBC_MD5            uint16 = 0x0025\n\tcipher_TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA   uint16 = 0x0026\n\tcipher_TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA   uint16 = 0x0027\n\tcipher_TLS_KRB5_EXPORT_WITH_RC4_40_SHA       uint16 = 0x0028\n\tcipher_TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5   uint16 = 0x0029\n\tcipher_TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5   uint16 = 0x002A\n\tcipher_TLS_KRB5_EXPORT_WITH_RC4_40_MD5       uint16 = 0x002B\n\tcipher_TLS_PSK_WITH_NULL_SHA                 uint16 = 0x002C\n\tcipher_TLS_DHE_PSK_WITH_NULL_SHA             uint16 = 0x002D\n\tcipher_TLS_RSA_PSK_WITH_NULL_SHA             uint16 = 0x002E\n\tcipher_TLS_RSA_WITH_AES_128_CBC_SHA          uint16 = 0x002F\n\tcipher_TLS_DH_DSS_WITH_AES_128_CBC_SHA       uint16 = 0x0030\n\tcipher_TLS_DH_RSA_WITH_AES_128_CBC_SHA       uint16 = 0x0031\n\tcipher_TLS_DHE_DSS_WITH_AES_128_CBC_SHA      uint16 = 0x0032\n\tcipher_TLS_DHE_RSA_WITH_AES_128_CBC_SHA      uint16 = 0x0033\n\tcipher_TLS_DH_anon_WITH_AES_128_CBC_SHA      uint16 = 0x0034\n\tcipher_TLS_RSA_WITH_AES_256_CBC_SHA          uint16 = 0x0035\n\tcipher_TLS_DH_DSS_WITH_AES_256_CBC_SHA       uint16 = 0x0036\n\tcipher_TLS_DH_RSA_WITH_AES_256_CBC_SHA       uint16 = 0x0037\n\tcipher_TLS_DHE_DSS_WITH_AES_256_CBC_SHA      uint16 = 0x0038\n\tcipher_TLS_DHE_RSA_WITH_AES_256_CBC_SHA      uint16 = 0x0039\n\tcipher_TLS_DH_anon_WITH_AES_256_CBC_SHA      uint16 = 0x003A\n\tcipher_TLS_RSA_WITH_NULL_SHA256              uint16 = 0x003B\n\tcipher_TLS_RSA_WITH_AES_128_CBC_SHA256       uint16 = 0x003C\n\tcipher_TLS_RSA_WITH_AES_256_CBC_SHA256       uint16 = 0x003D\n\tcipher_TLS_DH_DSS_WITH_AES_128_CBC_SHA256    uint16 = 0x003E\n\tcipher_TLS_DH_RSA_WITH_AES_128_CBC_SHA256    uint16 = 0x003F\n\tcipher_TLS_DHE_DSS_WITH_AES_128_CBC_SHA256   uint16 = 0x0040\n\tcipher_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA     uint16 = 0x0041\n\tcipher_TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA  uint16 = 0x0042\n\tcipher_TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA  uint16 = 0x0043\n\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA uint16 = 0x0044\n\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA uint16 = 0x0045\n\tcipher_TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA uint16 = 0x0046\n\t// Reserved uint16 =  0x0047-4F\n\t// Reserved uint16 =  0x0050-58\n\t// Reserved uint16 =  0x0059-5C\n\t// Unassigned uint16 =  0x005D-5F\n\t// Reserved uint16 =  0x0060-66\n\tcipher_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 uint16 = 0x0067\n\tcipher_TLS_DH_DSS_WITH_AES_256_CBC_SHA256  uint16 = 0x0068\n\tcipher_TLS_DH_RSA_WITH_AES_256_CBC_SHA256  uint16 = 0x0069\n\tcipher_TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 uint16 = 0x006A\n\tcipher_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 uint16 = 0x006B\n\tcipher_TLS_DH_anon_WITH_AES_128_CBC_SHA256 uint16 = 0x006C\n\tcipher_TLS_DH_anon_WITH_AES_256_CBC_SHA256 uint16 = 0x006D\n\t// Unassigned uint16 =  0x006E-83\n\tcipher_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA        uint16 = 0x0084\n\tcipher_TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA     uint16 = 0x0085\n\tcipher_TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA     uint16 = 0x0086\n\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA    uint16 = 0x0087\n\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA    uint16 = 0x0088\n\tcipher_TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA    uint16 = 0x0089\n\tcipher_TLS_PSK_WITH_RC4_128_SHA                 uint16 = 0x008A\n\tcipher_TLS_PSK_WITH_3DES_EDE_CBC_SHA            uint16 = 0x008B\n\tcipher_TLS_PSK_WITH_AES_128_CBC_SHA             uint16 = 0x008C\n\tcipher_TLS_PSK_WITH_AES_256_CBC_SHA             uint16 = 0x008D\n\tcipher_TLS_DHE_PSK_WITH_RC4_128_SHA             uint16 = 0x008E\n\tcipher_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA        uint16 = 0x008F\n\tcipher_TLS_DHE_PSK_WITH_AES_128_CBC_SHA         uint16 = 0x0090\n\tcipher_TLS_DHE_PSK_WITH_AES_256_CBC_SHA         uint16 = 0x0091\n\tcipher_TLS_RSA_PSK_WITH_RC4_128_SHA             uint16 = 0x0092\n\tcipher_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA        uint16 = 0x0093\n\tcipher_TLS_RSA_PSK_WITH_AES_128_CBC_SHA         uint16 = 0x0094\n\tcipher_TLS_RSA_PSK_WITH_AES_256_CBC_SHA         uint16 = 0x0095\n\tcipher_TLS_RSA_WITH_SEED_CBC_SHA                uint16 = 0x0096\n\tcipher_TLS_DH_DSS_WITH_SEED_CBC_SHA             uint16 = 0x0097\n\tcipher_TLS_DH_RSA_WITH_SEED_CBC_SHA             uint16 = 0x0098\n\tcipher_TLS_DHE_DSS_WITH_SEED_CBC_SHA            uint16 = 0x0099\n\tcipher_TLS_DHE_RSA_WITH_SEED_CBC_SHA            uint16 = 0x009A\n\tcipher_TLS_DH_anon_WITH_SEED_CBC_SHA            uint16 = 0x009B\n\tcipher_TLS_RSA_WITH_AES_128_GCM_SHA256          uint16 = 0x009C\n\tcipher_TLS_RSA_WITH_AES_256_GCM_SHA384          uint16 = 0x009D\n\tcipher_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256      uint16 = 0x009E\n\tcipher_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384      uint16 = 0x009F\n\tcipher_TLS_DH_RSA_WITH_AES_128_GCM_SHA256       uint16 = 0x00A0\n\tcipher_TLS_DH_RSA_WITH_AES_256_GCM_SHA384       uint16 = 0x00A1\n\tcipher_TLS_DHE_DSS_WITH_AES_128_GCM_SHA256      uint16 = 0x00A2\n\tcipher_TLS_DHE_DSS_WITH_AES_256_GCM_SHA384      uint16 = 0x00A3\n\tcipher_TLS_DH_DSS_WITH_AES_128_GCM_SHA256       uint16 = 0x00A4\n\tcipher_TLS_DH_DSS_WITH_AES_256_GCM_SHA384       uint16 = 0x00A5\n\tcipher_TLS_DH_anon_WITH_AES_128_GCM_SHA256      uint16 = 0x00A6\n\tcipher_TLS_DH_anon_WITH_AES_256_GCM_SHA384      uint16 = 0x00A7\n\tcipher_TLS_PSK_WITH_AES_128_GCM_SHA256          uint16 = 0x00A8\n\tcipher_TLS_PSK_WITH_AES_256_GCM_SHA384          uint16 = 0x00A9\n\tcipher_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256      uint16 = 0x00AA\n\tcipher_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384      uint16 = 0x00AB\n\tcipher_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256      uint16 = 0x00AC\n\tcipher_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384      uint16 = 0x00AD\n\tcipher_TLS_PSK_WITH_AES_128_CBC_SHA256          uint16 = 0x00AE\n\tcipher_TLS_PSK_WITH_AES_256_CBC_SHA384          uint16 = 0x00AF\n\tcipher_TLS_PSK_WITH_NULL_SHA256                 uint16 = 0x00B0\n\tcipher_TLS_PSK_WITH_NULL_SHA384                 uint16 = 0x00B1\n\tcipher_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256      uint16 = 0x00B2\n\tcipher_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384      uint16 = 0x00B3\n\tcipher_TLS_DHE_PSK_WITH_NULL_SHA256             uint16 = 0x00B4\n\tcipher_TLS_DHE_PSK_WITH_NULL_SHA384             uint16 = 0x00B5\n\tcipher_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256      uint16 = 0x00B6\n\tcipher_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384      uint16 = 0x00B7\n\tcipher_TLS_RSA_PSK_WITH_NULL_SHA256             uint16 = 0x00B8\n\tcipher_TLS_RSA_PSK_WITH_NULL_SHA384             uint16 = 0x00B9\n\tcipher_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256     uint16 = 0x00BA\n\tcipher_TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256  uint16 = 0x00BB\n\tcipher_TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256  uint16 = 0x00BC\n\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0x00BD\n\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0x00BE\n\tcipher_TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0x00BF\n\tcipher_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256     uint16 = 0x00C0\n\tcipher_TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256  uint16 = 0x00C1\n\tcipher_TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256  uint16 = 0x00C2\n\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 uint16 = 0x00C3\n\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 uint16 = 0x00C4\n\tcipher_TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256 uint16 = 0x00C5\n\t// Unassigned uint16 =  0x00C6-FE\n\tcipher_TLS_EMPTY_RENEGOTIATION_INFO_SCSV uint16 = 0x00FF\n\t// Unassigned uint16 =  0x01-55,*\n\tcipher_TLS_FALLBACK_SCSV uint16 = 0x5600\n\t// Unassigned                                   uint16 = 0x5601 - 0xC000\n\tcipher_TLS_ECDH_ECDSA_WITH_NULL_SHA                 uint16 = 0xC001\n\tcipher_TLS_ECDH_ECDSA_WITH_RC4_128_SHA              uint16 = 0xC002\n\tcipher_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA         uint16 = 0xC003\n\tcipher_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA          uint16 = 0xC004\n\tcipher_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA          uint16 = 0xC005\n\tcipher_TLS_ECDHE_ECDSA_WITH_NULL_SHA                uint16 = 0xC006\n\tcipher_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA             uint16 = 0xC007\n\tcipher_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA        uint16 = 0xC008\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA         uint16 = 0xC009\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA         uint16 = 0xC00A\n\tcipher_TLS_ECDH_RSA_WITH_NULL_SHA                   uint16 = 0xC00B\n\tcipher_TLS_ECDH_RSA_WITH_RC4_128_SHA                uint16 = 0xC00C\n\tcipher_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA           uint16 = 0xC00D\n\tcipher_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA            uint16 = 0xC00E\n\tcipher_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA            uint16 = 0xC00F\n\tcipher_TLS_ECDHE_RSA_WITH_NULL_SHA                  uint16 = 0xC010\n\tcipher_TLS_ECDHE_RSA_WITH_RC4_128_SHA               uint16 = 0xC011\n\tcipher_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA          uint16 = 0xC012\n\tcipher_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA           uint16 = 0xC013\n\tcipher_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA           uint16 = 0xC014\n\tcipher_TLS_ECDH_anon_WITH_NULL_SHA                  uint16 = 0xC015\n\tcipher_TLS_ECDH_anon_WITH_RC4_128_SHA               uint16 = 0xC016\n\tcipher_TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA          uint16 = 0xC017\n\tcipher_TLS_ECDH_anon_WITH_AES_128_CBC_SHA           uint16 = 0xC018\n\tcipher_TLS_ECDH_anon_WITH_AES_256_CBC_SHA           uint16 = 0xC019\n\tcipher_TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA            uint16 = 0xC01A\n\tcipher_TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA        uint16 = 0xC01B\n\tcipher_TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA        uint16 = 0xC01C\n\tcipher_TLS_SRP_SHA_WITH_AES_128_CBC_SHA             uint16 = 0xC01D\n\tcipher_TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA         uint16 = 0xC01E\n\tcipher_TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA         uint16 = 0xC01F\n\tcipher_TLS_SRP_SHA_WITH_AES_256_CBC_SHA             uint16 = 0xC020\n\tcipher_TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA         uint16 = 0xC021\n\tcipher_TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA         uint16 = 0xC022\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256      uint16 = 0xC023\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384      uint16 = 0xC024\n\tcipher_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256       uint16 = 0xC025\n\tcipher_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384       uint16 = 0xC026\n\tcipher_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256        uint16 = 0xC027\n\tcipher_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384        uint16 = 0xC028\n\tcipher_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256         uint16 = 0xC029\n\tcipher_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384         uint16 = 0xC02A\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256      uint16 = 0xC02B\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384      uint16 = 0xC02C\n\tcipher_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256       uint16 = 0xC02D\n\tcipher_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384       uint16 = 0xC02E\n\tcipher_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256        uint16 = 0xC02F\n\tcipher_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384        uint16 = 0xC030\n\tcipher_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256         uint16 = 0xC031\n\tcipher_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384         uint16 = 0xC032\n\tcipher_TLS_ECDHE_PSK_WITH_RC4_128_SHA               uint16 = 0xC033\n\tcipher_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA          uint16 = 0xC034\n\tcipher_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA           uint16 = 0xC035\n\tcipher_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA           uint16 = 0xC036\n\tcipher_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256        uint16 = 0xC037\n\tcipher_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384        uint16 = 0xC038\n\tcipher_TLS_ECDHE_PSK_WITH_NULL_SHA                  uint16 = 0xC039\n\tcipher_TLS_ECDHE_PSK_WITH_NULL_SHA256               uint16 = 0xC03A\n\tcipher_TLS_ECDHE_PSK_WITH_NULL_SHA384               uint16 = 0xC03B\n\tcipher_TLS_RSA_WITH_ARIA_128_CBC_SHA256             uint16 = 0xC03C\n\tcipher_TLS_RSA_WITH_ARIA_256_CBC_SHA384             uint16 = 0xC03D\n\tcipher_TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256          uint16 = 0xC03E\n\tcipher_TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384          uint16 = 0xC03F\n\tcipher_TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256          uint16 = 0xC040\n\tcipher_TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384          uint16 = 0xC041\n\tcipher_TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256         uint16 = 0xC042\n\tcipher_TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384         uint16 = 0xC043\n\tcipher_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256         uint16 = 0xC044\n\tcipher_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384         uint16 = 0xC045\n\tcipher_TLS_DH_anon_WITH_ARIA_128_CBC_SHA256         uint16 = 0xC046\n\tcipher_TLS_DH_anon_WITH_ARIA_256_CBC_SHA384         uint16 = 0xC047\n\tcipher_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256     uint16 = 0xC048\n\tcipher_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384     uint16 = 0xC049\n\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256      uint16 = 0xC04A\n\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384      uint16 = 0xC04B\n\tcipher_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256       uint16 = 0xC04C\n\tcipher_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384       uint16 = 0xC04D\n\tcipher_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256        uint16 = 0xC04E\n\tcipher_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384        uint16 = 0xC04F\n\tcipher_TLS_RSA_WITH_ARIA_128_GCM_SHA256             uint16 = 0xC050\n\tcipher_TLS_RSA_WITH_ARIA_256_GCM_SHA384             uint16 = 0xC051\n\tcipher_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256         uint16 = 0xC052\n\tcipher_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384         uint16 = 0xC053\n\tcipher_TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256          uint16 = 0xC054\n\tcipher_TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384          uint16 = 0xC055\n\tcipher_TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256         uint16 = 0xC056\n\tcipher_TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384         uint16 = 0xC057\n\tcipher_TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256          uint16 = 0xC058\n\tcipher_TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384          uint16 = 0xC059\n\tcipher_TLS_DH_anon_WITH_ARIA_128_GCM_SHA256         uint16 = 0xC05A\n\tcipher_TLS_DH_anon_WITH_ARIA_256_GCM_SHA384         uint16 = 0xC05B\n\tcipher_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256     uint16 = 0xC05C\n\tcipher_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384     uint16 = 0xC05D\n\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256      uint16 = 0xC05E\n\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384      uint16 = 0xC05F\n\tcipher_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256       uint16 = 0xC060\n\tcipher_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384       uint16 = 0xC061\n\tcipher_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256        uint16 = 0xC062\n\tcipher_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384        uint16 = 0xC063\n\tcipher_TLS_PSK_WITH_ARIA_128_CBC_SHA256             uint16 = 0xC064\n\tcipher_TLS_PSK_WITH_ARIA_256_CBC_SHA384             uint16 = 0xC065\n\tcipher_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256         uint16 = 0xC066\n\tcipher_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384         uint16 = 0xC067\n\tcipher_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256         uint16 = 0xC068\n\tcipher_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384         uint16 = 0xC069\n\tcipher_TLS_PSK_WITH_ARIA_128_GCM_SHA256             uint16 = 0xC06A\n\tcipher_TLS_PSK_WITH_ARIA_256_GCM_SHA384             uint16 = 0xC06B\n\tcipher_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256         uint16 = 0xC06C\n\tcipher_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384         uint16 = 0xC06D\n\tcipher_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256         uint16 = 0xC06E\n\tcipher_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384         uint16 = 0xC06F\n\tcipher_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256       uint16 = 0xC070\n\tcipher_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384       uint16 = 0xC071\n\tcipher_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0xC072\n\tcipher_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 uint16 = 0xC073\n\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256  uint16 = 0xC074\n\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384  uint16 = 0xC075\n\tcipher_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256   uint16 = 0xC076\n\tcipher_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384   uint16 = 0xC077\n\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256    uint16 = 0xC078\n\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384    uint16 = 0xC079\n\tcipher_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256         uint16 = 0xC07A\n\tcipher_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384         uint16 = 0xC07B\n\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256     uint16 = 0xC07C\n\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384     uint16 = 0xC07D\n\tcipher_TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256      uint16 = 0xC07E\n\tcipher_TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384      uint16 = 0xC07F\n\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256     uint16 = 0xC080\n\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384     uint16 = 0xC081\n\tcipher_TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256      uint16 = 0xC082\n\tcipher_TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384      uint16 = 0xC083\n\tcipher_TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256     uint16 = 0xC084\n\tcipher_TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384     uint16 = 0xC085\n\tcipher_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC086\n\tcipher_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC087\n\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256  uint16 = 0xC088\n\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384  uint16 = 0xC089\n\tcipher_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256   uint16 = 0xC08A\n\tcipher_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384   uint16 = 0xC08B\n\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256    uint16 = 0xC08C\n\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384    uint16 = 0xC08D\n\tcipher_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256         uint16 = 0xC08E\n\tcipher_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384         uint16 = 0xC08F\n\tcipher_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256     uint16 = 0xC090\n\tcipher_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384     uint16 = 0xC091\n\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256     uint16 = 0xC092\n\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384     uint16 = 0xC093\n\tcipher_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256         uint16 = 0xC094\n\tcipher_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384         uint16 = 0xC095\n\tcipher_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256     uint16 = 0xC096\n\tcipher_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384     uint16 = 0xC097\n\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256     uint16 = 0xC098\n\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384     uint16 = 0xC099\n\tcipher_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256   uint16 = 0xC09A\n\tcipher_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384   uint16 = 0xC09B\n\tcipher_TLS_RSA_WITH_AES_128_CCM                     uint16 = 0xC09C\n\tcipher_TLS_RSA_WITH_AES_256_CCM                     uint16 = 0xC09D\n\tcipher_TLS_DHE_RSA_WITH_AES_128_CCM                 uint16 = 0xC09E\n\tcipher_TLS_DHE_RSA_WITH_AES_256_CCM                 uint16 = 0xC09F\n\tcipher_TLS_RSA_WITH_AES_128_CCM_8                   uint16 = 0xC0A0\n\tcipher_TLS_RSA_WITH_AES_256_CCM_8                   uint16 = 0xC0A1\n\tcipher_TLS_DHE_RSA_WITH_AES_128_CCM_8               uint16 = 0xC0A2\n\tcipher_TLS_DHE_RSA_WITH_AES_256_CCM_8               uint16 = 0xC0A3\n\tcipher_TLS_PSK_WITH_AES_128_CCM                     uint16 = 0xC0A4\n\tcipher_TLS_PSK_WITH_AES_256_CCM                     uint16 = 0xC0A5\n\tcipher_TLS_DHE_PSK_WITH_AES_128_CCM                 uint16 = 0xC0A6\n\tcipher_TLS_DHE_PSK_WITH_AES_256_CCM                 uint16 = 0xC0A7\n\tcipher_TLS_PSK_WITH_AES_128_CCM_8                   uint16 = 0xC0A8\n\tcipher_TLS_PSK_WITH_AES_256_CCM_8                   uint16 = 0xC0A9\n\tcipher_TLS_PSK_DHE_WITH_AES_128_CCM_8               uint16 = 0xC0AA\n\tcipher_TLS_PSK_DHE_WITH_AES_256_CCM_8               uint16 = 0xC0AB\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_128_CCM             uint16 = 0xC0AC\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_256_CCM             uint16 = 0xC0AD\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8           uint16 = 0xC0AE\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8           uint16 = 0xC0AF\n\t// Unassigned uint16 =  0xC0B0-FF\n\t// Unassigned uint16 =  0xC1-CB,*\n\t// Unassigned uint16 =  0xCC00-A7\n\tcipher_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256   uint16 = 0xCCA8\n\tcipher_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 uint16 = 0xCCA9\n\tcipher_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256     uint16 = 0xCCAA\n\tcipher_TLS_PSK_WITH_CHACHA20_POLY1305_SHA256         uint16 = 0xCCAB\n\tcipher_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256   uint16 = 0xCCAC\n\tcipher_TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256     uint16 = 0xCCAD\n\tcipher_TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256     uint16 = 0xCCAE\n)\n\n// isBadCipher reports whether the cipher is blacklisted by the HTTP/2 spec.\n// References:\n// https://tools.ietf.org/html/rfc7540#appendix-A\n// Reject cipher suites from Appendix A.\n// \"This list includes those cipher suites that do not\n// offer an ephemeral key exchange and those that are\n// based on the TLS null, stream or block cipher type\"\nfunc isBadCipher(cipher uint16) bool {\n\tswitch cipher {\n\tcase cipher_TLS_NULL_WITH_NULL_NULL,\n\t\tcipher_TLS_RSA_WITH_NULL_MD5,\n\t\tcipher_TLS_RSA_WITH_NULL_SHA,\n\t\tcipher_TLS_RSA_EXPORT_WITH_RC4_40_MD5,\n\t\tcipher_TLS_RSA_WITH_RC4_128_MD5,\n\t\tcipher_TLS_RSA_WITH_RC4_128_SHA,\n\t\tcipher_TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5,\n\t\tcipher_TLS_RSA_WITH_IDEA_CBC_SHA,\n\t\tcipher_TLS_RSA_EXPORT_WITH_DES40_CBC_SHA,\n\t\tcipher_TLS_RSA_WITH_DES_CBC_SHA,\n\t\tcipher_TLS_RSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_WITH_DES_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_WITH_DES_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_WITH_DES_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_DES_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_DH_anon_EXPORT_WITH_RC4_40_MD5,\n\t\tcipher_TLS_DH_anon_WITH_RC4_128_MD5,\n\t\tcipher_TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA,\n\t\tcipher_TLS_DH_anon_WITH_DES_CBC_SHA,\n\t\tcipher_TLS_DH_anon_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_KRB5_WITH_DES_CBC_SHA,\n\t\tcipher_TLS_KRB5_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_KRB5_WITH_RC4_128_SHA,\n\t\tcipher_TLS_KRB5_WITH_IDEA_CBC_SHA,\n\t\tcipher_TLS_KRB5_WITH_DES_CBC_MD5,\n\t\tcipher_TLS_KRB5_WITH_3DES_EDE_CBC_MD5,\n\t\tcipher_TLS_KRB5_WITH_RC4_128_MD5,\n\t\tcipher_TLS_KRB5_WITH_IDEA_CBC_MD5,\n\t\tcipher_TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA,\n\t\tcipher_TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA,\n\t\tcipher_TLS_KRB5_EXPORT_WITH_RC4_40_SHA,\n\t\tcipher_TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5,\n\t\tcipher_TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5,\n\t\tcipher_TLS_KRB5_EXPORT_WITH_RC4_40_MD5,\n\t\tcipher_TLS_PSK_WITH_NULL_SHA,\n\t\tcipher_TLS_DHE_PSK_WITH_NULL_SHA,\n\t\tcipher_TLS_RSA_PSK_WITH_NULL_SHA,\n\t\tcipher_TLS_RSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_DH_anon_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_RSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_DH_anon_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_RSA_WITH_NULL_SHA256,\n\t\tcipher_TLS_RSA_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_RSA_WITH_AES_256_CBC_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,\n\t\tcipher_TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_AES_256_CBC_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_AES_256_CBC_SHA256,\n\t\tcipher_TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,\n\t\tcipher_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_AES_256_CBC_SHA256,\n\t\tcipher_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,\n\t\tcipher_TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA,\n\t\tcipher_TLS_PSK_WITH_RC4_128_SHA,\n\t\tcipher_TLS_PSK_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_PSK_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_PSK_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_DHE_PSK_WITH_RC4_128_SHA,\n\t\tcipher_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_DHE_PSK_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_DHE_PSK_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_RSA_PSK_WITH_RC4_128_SHA,\n\t\tcipher_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_RSA_PSK_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_RSA_PSK_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_RSA_WITH_SEED_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_WITH_SEED_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_WITH_SEED_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_WITH_SEED_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_SEED_CBC_SHA,\n\t\tcipher_TLS_DH_anon_WITH_SEED_CBC_SHA,\n\t\tcipher_TLS_RSA_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_RSA_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_DH_RSA_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_DH_DSS_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_DH_anon_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_PSK_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_PSK_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_PSK_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_PSK_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_PSK_WITH_NULL_SHA256,\n\t\tcipher_TLS_PSK_WITH_NULL_SHA384,\n\t\tcipher_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_DHE_PSK_WITH_NULL_SHA256,\n\t\tcipher_TLS_DHE_PSK_WITH_NULL_SHA384,\n\t\tcipher_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_RSA_PSK_WITH_NULL_SHA256,\n\t\tcipher_TLS_RSA_PSK_WITH_NULL_SHA384,\n\t\tcipher_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256,\n\t\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256,\n\t\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256,\n\t\tcipher_TLS_EMPTY_RENEGOTIATION_INFO_SCSV,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_NULL_SHA,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_RC4_128_SHA,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_NULL_SHA,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_ECDH_RSA_WITH_NULL_SHA,\n\t\tcipher_TLS_ECDH_RSA_WITH_RC4_128_SHA,\n\t\tcipher_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_ECDHE_RSA_WITH_NULL_SHA,\n\t\tcipher_TLS_ECDHE_RSA_WITH_RC4_128_SHA,\n\t\tcipher_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_ECDH_anon_WITH_NULL_SHA,\n\t\tcipher_TLS_ECDH_anon_WITH_RC4_128_SHA,\n\t\tcipher_TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_ECDH_anon_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_ECDH_anon_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_ECDHE_PSK_WITH_RC4_128_SHA,\n\t\tcipher_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_ECDHE_PSK_WITH_NULL_SHA,\n\t\tcipher_TLS_ECDHE_PSK_WITH_NULL_SHA256,\n\t\tcipher_TLS_ECDHE_PSK_WITH_NULL_SHA384,\n\t\tcipher_TLS_RSA_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_RSA_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_DH_anon_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_RSA_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_RSA_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_DH_anon_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_PSK_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_PSK_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_PSK_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_PSK_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_RSA_WITH_AES_128_CCM,\n\t\tcipher_TLS_RSA_WITH_AES_256_CCM,\n\t\tcipher_TLS_RSA_WITH_AES_128_CCM_8,\n\t\tcipher_TLS_RSA_WITH_AES_256_CCM_8,\n\t\tcipher_TLS_PSK_WITH_AES_128_CCM,\n\t\tcipher_TLS_PSK_WITH_AES_256_CCM,\n\t\tcipher_TLS_PSK_WITH_AES_128_CCM_8,\n\t\tcipher_TLS_PSK_WITH_AES_256_CCM_8:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/client_conn_pool.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Transport code's client connection pooling.\n\npackage http2\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"net\"\n\t\"net/http\"\n\t\"sync\"\n)\n\n// ClientConnPool manages a pool of HTTP/2 client connections.\ntype ClientConnPool interface {\n\t// GetClientConn returns a specific HTTP/2 connection (usually\n\t// a TLS-TCP connection) to an HTTP/2 server. On success, the\n\t// returned ClientConn accounts for the upcoming RoundTrip\n\t// call, so the caller should not omit it. If the caller needs\n\t// to, ClientConn.RoundTrip can be called with a bogus\n\t// new(http.Request) to release the stream reservation.\n\tGetClientConn(req *http.Request, addr string) (*ClientConn, error)\n\tMarkDead(*ClientConn)\n}\n\n// clientConnPoolIdleCloser is the interface implemented by ClientConnPool\n// implementations which can close their idle connections.\ntype clientConnPoolIdleCloser interface {\n\tClientConnPool\n\tcloseIdleConnections()\n}\n\nvar (\n\t_ clientConnPoolIdleCloser = (*clientConnPool)(nil)\n\t_ clientConnPoolIdleCloser = noDialClientConnPool{}\n)\n\n// TODO: use singleflight for dialing and addConnCalls?\ntype clientConnPool struct {\n\tt *Transport\n\n\tmu sync.Mutex // TODO: maybe switch to RWMutex\n\t// TODO: add support for sharing conns based on cert names\n\t// (e.g. share conn for googleapis.com and appspot.com)\n\tconns        map[string][]*ClientConn // key is host:port\n\tdialing      map[string]*dialCall     // currently in-flight dials\n\tkeys         map[*ClientConn][]string\n\taddConnCalls map[string]*addConnCall // in-flight addConnIfNeeded calls\n}\n\nfunc (p *clientConnPool) GetClientConn(req *http.Request, addr string) (*ClientConn, error) {\n\treturn p.getClientConn(req, addr, dialOnMiss)\n}\n\nconst (\n\tdialOnMiss   = true\n\tnoDialOnMiss = false\n)\n\nfunc (p *clientConnPool) getClientConn(req *http.Request, addr string, dialOnMiss bool) (*ClientConn, error) {\n\t// TODO(dneil): Dial a new connection when t.DisableKeepAlives is set?\n\tif isConnectionCloseRequest(req) && dialOnMiss {\n\t\t// It gets its own connection.\n\t\ttraceGetConn(req, addr)\n\t\tconst singleUse = true\n\t\tcc, err := p.t.dialClientConn(req.Context(), addr, singleUse)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn cc, nil\n\t}\n\tfor {\n\t\tp.mu.Lock()\n\t\tfor _, cc := range p.conns[addr] {\n\t\t\tif cc.ReserveNewRequest() {\n\t\t\t\t// When a connection is presented to us by the net/http package,\n\t\t\t\t// the GetConn hook has already been called.\n\t\t\t\t// Don't call it a second time here.\n\t\t\t\tif !cc.getConnCalled {\n\t\t\t\t\ttraceGetConn(req, addr)\n\t\t\t\t}\n\t\t\t\tcc.getConnCalled = false\n\t\t\t\tp.mu.Unlock()\n\t\t\t\treturn cc, nil\n\t\t\t}\n\t\t}\n\t\tif !dialOnMiss {\n\t\t\tp.mu.Unlock()\n\t\t\treturn nil, ErrNoCachedConn\n\t\t}\n\t\ttraceGetConn(req, addr)\n\t\tcall := p.getStartDialLocked(req.Context(), addr)\n\t\tp.mu.Unlock()\n\t\t<-call.done\n\t\tif shouldRetryDial(call, req) {\n\t\t\tcontinue\n\t\t}\n\t\tcc, err := call.res, call.err\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif cc.ReserveNewRequest() {\n\t\t\treturn cc, nil\n\t\t}\n\t}\n}\n\n// dialCall is an in-flight Transport dial call to a host.\ntype dialCall struct {\n\t_ incomparable\n\tp *clientConnPool\n\t// the context associated with the request\n\t// that created this dialCall\n\tctx  context.Context\n\tdone chan struct{} // closed when done\n\tres  *ClientConn   // valid after done is closed\n\terr  error         // valid after done is closed\n}\n\n// requires p.mu is held.\nfunc (p *clientConnPool) getStartDialLocked(ctx context.Context, addr string) *dialCall {\n\tif call, ok := p.dialing[addr]; ok {\n\t\t// A dial is already in-flight. Don't start another.\n\t\treturn call\n\t}\n\tcall := &dialCall{p: p, done: make(chan struct{}), ctx: ctx}\n\tif p.dialing == nil {\n\t\tp.dialing = make(map[string]*dialCall)\n\t}\n\tp.dialing[addr] = call\n\tgo call.dial(call.ctx, addr)\n\treturn call\n}\n\n// run in its own goroutine.\nfunc (c *dialCall) dial(ctx context.Context, addr string) {\n\tconst singleUse = false // shared conn\n\tc.res, c.err = c.p.t.dialClientConn(ctx, addr, singleUse)\n\n\tc.p.mu.Lock()\n\tdelete(c.p.dialing, addr)\n\tif c.err == nil {\n\t\tc.p.addConnLocked(addr, c.res)\n\t}\n\tc.p.mu.Unlock()\n\n\tclose(c.done)\n}\n\n// addConnIfNeeded makes a NewClientConn out of c if a connection for key doesn't\n// already exist. It coalesces concurrent calls with the same key.\n// This is used by the http1 Transport code when it creates a new connection. Because\n// the http1 Transport doesn't de-dup TCP dials to outbound hosts (because it doesn't know\n// the protocol), it can get into a situation where it has multiple TLS connections.\n// This code decides which ones live or die.\n// The return value used is whether c was used.\n// c is never closed.\nfunc (p *clientConnPool) addConnIfNeeded(key string, t *Transport, c net.Conn) (used bool, err error) {\n\tp.mu.Lock()\n\tfor _, cc := range p.conns[key] {\n\t\tif cc.CanTakeNewRequest() {\n\t\t\tp.mu.Unlock()\n\t\t\treturn false, nil\n\t\t}\n\t}\n\tcall, dup := p.addConnCalls[key]\n\tif !dup {\n\t\tif p.addConnCalls == nil {\n\t\t\tp.addConnCalls = make(map[string]*addConnCall)\n\t\t}\n\t\tcall = &addConnCall{\n\t\t\tp:    p,\n\t\t\tdone: make(chan struct{}),\n\t\t}\n\t\tp.addConnCalls[key] = call\n\t\tgo call.run(t, key, c)\n\t}\n\tp.mu.Unlock()\n\n\t<-call.done\n\tif call.err != nil {\n\t\treturn false, call.err\n\t}\n\treturn !dup, nil\n}\n\ntype addConnCall struct {\n\t_    incomparable\n\tp    *clientConnPool\n\tdone chan struct{} // closed when done\n\terr  error\n}\n\nfunc (c *addConnCall) run(t *Transport, key string, nc net.Conn) {\n\tcc, err := t.NewClientConn(nc)\n\n\tp := c.p\n\tp.mu.Lock()\n\tif err != nil {\n\t\tc.err = err\n\t} else {\n\t\tcc.getConnCalled = true // already called by the net/http package\n\t\tp.addConnLocked(key, cc)\n\t}\n\tdelete(p.addConnCalls, key)\n\tp.mu.Unlock()\n\tclose(c.done)\n}\n\n// p.mu must be held\nfunc (p *clientConnPool) addConnLocked(key string, cc *ClientConn) {\n\tfor _, v := range p.conns[key] {\n\t\tif v == cc {\n\t\t\treturn\n\t\t}\n\t}\n\tif p.conns == nil {\n\t\tp.conns = make(map[string][]*ClientConn)\n\t}\n\tif p.keys == nil {\n\t\tp.keys = make(map[*ClientConn][]string)\n\t}\n\tp.conns[key] = append(p.conns[key], cc)\n\tp.keys[cc] = append(p.keys[cc], key)\n}\n\nfunc (p *clientConnPool) MarkDead(cc *ClientConn) {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tfor _, key := range p.keys[cc] {\n\t\tvv, ok := p.conns[key]\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\tnewList := filterOutClientConn(vv, cc)\n\t\tif len(newList) > 0 {\n\t\t\tp.conns[key] = newList\n\t\t} else {\n\t\t\tdelete(p.conns, key)\n\t\t}\n\t}\n\tdelete(p.keys, cc)\n}\n\nfunc (p *clientConnPool) closeIdleConnections() {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\t// TODO: don't close a cc if it was just added to the pool\n\t// milliseconds ago and has never been used. There's currently\n\t// a small race window with the HTTP/1 Transport's integration\n\t// where it can add an idle conn just before using it, and\n\t// somebody else can concurrently call CloseIdleConns and\n\t// break some caller's RoundTrip.\n\tfor _, vv := range p.conns {\n\t\tfor _, cc := range vv {\n\t\t\tcc.closeIfIdle()\n\t\t}\n\t}\n}\n\nfunc filterOutClientConn(in []*ClientConn, exclude *ClientConn) []*ClientConn {\n\tout := in[:0]\n\tfor _, v := range in {\n\t\tif v != exclude {\n\t\t\tout = append(out, v)\n\t\t}\n\t}\n\t// If we filtered it out, zero out the last item to prevent\n\t// the GC from seeing it.\n\tif len(in) != len(out) {\n\t\tin[len(in)-1] = nil\n\t}\n\treturn out\n}\n\n// noDialClientConnPool is an implementation of http2.ClientConnPool\n// which never dials. We let the HTTP/1.1 client dial and use its TLS\n// connection instead.\ntype noDialClientConnPool struct{ *clientConnPool }\n\nfunc (p noDialClientConnPool) GetClientConn(req *http.Request, addr string) (*ClientConn, error) {\n\treturn p.getClientConn(req, addr, noDialOnMiss)\n}\n\n// shouldRetryDial reports whether the current request should\n// retry dialing after the call finished unsuccessfully, for example\n// if the dial was canceled because of a context cancellation or\n// deadline expiry.\nfunc shouldRetryDial(call *dialCall, req *http.Request) bool {\n\tif call.err == nil {\n\t\t// No error, no need to retry\n\t\treturn false\n\t}\n\tif call.ctx == req.Context() {\n\t\t// If the call has the same context as the request, the dial\n\t\t// should not be retried, since any cancellation will have come\n\t\t// from this request.\n\t\treturn false\n\t}\n\tif !errors.Is(call.err, context.Canceled) && !errors.Is(call.err, context.DeadlineExceeded) {\n\t\t// If the call error is not because of a context cancellation or a deadline expiry,\n\t\t// the dial should not be retried.\n\t\treturn false\n\t}\n\t// Only retry if the error is a context cancellation error or deadline expiry\n\t// and the context associated with the call was canceled or expired.\n\treturn call.ctx.Err() != nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/client_priority_go126.go",
    "content": "// Copyright 2026 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.27\n\npackage http2\n\nimport \"net/http\"\n\n// Support for go.dev/issue/75500 is added in Go 1.27. In case anyone uses\n// x/net with versions before Go 1.27, we return true here so that their write\n// scheduler will still be the round-robin write scheduler rather than the RFC\n// 9218 write scheduler. That way, older users of Go will not see a sudden\n// change of behavior just from importing x/net.\n//\n// TODO(nsh): remove this file after x/net go.mod is at Go 1.27.\nfunc clientPriorityDisabled(_ *http.Server) bool {\n\treturn true\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/client_priority_go127.go",
    "content": "// Copyright 2026 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.27\n\npackage http2\n\nimport \"net/http\"\n\nfunc clientPriorityDisabled(s *http.Server) bool {\n\treturn s.DisableClientPriority\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/config.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"math\"\n\t\"net/http\"\n\t\"time\"\n)\n\n// http2Config is a package-internal version of net/http.HTTP2Config.\n//\n// http.HTTP2Config was added in Go 1.24.\n// When running with a version of net/http that includes HTTP2Config,\n// we merge the configuration with the fields in Transport or Server\n// to produce an http2Config.\n//\n// Zero valued fields in http2Config are interpreted as in the\n// net/http.HTTPConfig documentation.\n//\n// Precedence order for reconciling configurations is:\n//\n//   - Use the net/http.{Server,Transport}.HTTP2Config value, when non-zero.\n//   - Otherwise use the http2.{Server.Transport} value.\n//   - If the resulting value is zero or out of range, use a default.\ntype http2Config struct {\n\tMaxConcurrentStreams         uint32\n\tStrictMaxConcurrentRequests  bool\n\tMaxDecoderHeaderTableSize    uint32\n\tMaxEncoderHeaderTableSize    uint32\n\tMaxReadFrameSize             uint32\n\tMaxUploadBufferPerConnection int32\n\tMaxUploadBufferPerStream     int32\n\tSendPingTimeout              time.Duration\n\tPingTimeout                  time.Duration\n\tWriteByteTimeout             time.Duration\n\tPermitProhibitedCipherSuites bool\n\tCountError                   func(errType string)\n}\n\n// configFromServer merges configuration settings from\n// net/http.Server.HTTP2Config and http2.Server.\nfunc configFromServer(h1 *http.Server, h2 *Server) http2Config {\n\tconf := http2Config{\n\t\tMaxConcurrentStreams:         h2.MaxConcurrentStreams,\n\t\tMaxEncoderHeaderTableSize:    h2.MaxEncoderHeaderTableSize,\n\t\tMaxDecoderHeaderTableSize:    h2.MaxDecoderHeaderTableSize,\n\t\tMaxReadFrameSize:             h2.MaxReadFrameSize,\n\t\tMaxUploadBufferPerConnection: h2.MaxUploadBufferPerConnection,\n\t\tMaxUploadBufferPerStream:     h2.MaxUploadBufferPerStream,\n\t\tSendPingTimeout:              h2.ReadIdleTimeout,\n\t\tPingTimeout:                  h2.PingTimeout,\n\t\tWriteByteTimeout:             h2.WriteByteTimeout,\n\t\tPermitProhibitedCipherSuites: h2.PermitProhibitedCipherSuites,\n\t\tCountError:                   h2.CountError,\n\t}\n\tfillNetHTTPConfig(&conf, h1.HTTP2)\n\tsetConfigDefaults(&conf, true)\n\treturn conf\n}\n\n// configFromTransport merges configuration settings from h2 and h2.t1.HTTP2\n// (the net/http Transport).\nfunc configFromTransport(h2 *Transport) http2Config {\n\tconf := http2Config{\n\t\tStrictMaxConcurrentRequests: h2.StrictMaxConcurrentStreams,\n\t\tMaxEncoderHeaderTableSize:   h2.MaxEncoderHeaderTableSize,\n\t\tMaxDecoderHeaderTableSize:   h2.MaxDecoderHeaderTableSize,\n\t\tMaxReadFrameSize:            h2.MaxReadFrameSize,\n\t\tSendPingTimeout:             h2.ReadIdleTimeout,\n\t\tPingTimeout:                 h2.PingTimeout,\n\t\tWriteByteTimeout:            h2.WriteByteTimeout,\n\t}\n\n\t// Unlike most config fields, where out-of-range values revert to the default,\n\t// Transport.MaxReadFrameSize clips.\n\tif conf.MaxReadFrameSize < minMaxFrameSize {\n\t\tconf.MaxReadFrameSize = minMaxFrameSize\n\t} else if conf.MaxReadFrameSize > maxFrameSize {\n\t\tconf.MaxReadFrameSize = maxFrameSize\n\t}\n\n\tif h2.t1 != nil {\n\t\tfillNetHTTPConfig(&conf, h2.t1.HTTP2)\n\t}\n\tsetConfigDefaults(&conf, false)\n\treturn conf\n}\n\nfunc setDefault[T ~int | ~int32 | ~uint32 | ~int64](v *T, minval, maxval, defval T) {\n\tif *v < minval || *v > maxval {\n\t\t*v = defval\n\t}\n}\n\nfunc setConfigDefaults(conf *http2Config, server bool) {\n\tsetDefault(&conf.MaxConcurrentStreams, 1, math.MaxUint32, defaultMaxStreams)\n\tsetDefault(&conf.MaxEncoderHeaderTableSize, 1, math.MaxUint32, initialHeaderTableSize)\n\tsetDefault(&conf.MaxDecoderHeaderTableSize, 1, math.MaxUint32, initialHeaderTableSize)\n\tif server {\n\t\tsetDefault(&conf.MaxUploadBufferPerConnection, initialWindowSize, math.MaxInt32, 1<<20)\n\t} else {\n\t\tsetDefault(&conf.MaxUploadBufferPerConnection, initialWindowSize, math.MaxInt32, transportDefaultConnFlow)\n\t}\n\tif server {\n\t\tsetDefault(&conf.MaxUploadBufferPerStream, 1, math.MaxInt32, 1<<20)\n\t} else {\n\t\tsetDefault(&conf.MaxUploadBufferPerStream, 1, math.MaxInt32, transportDefaultStreamFlow)\n\t}\n\tsetDefault(&conf.MaxReadFrameSize, minMaxFrameSize, maxFrameSize, defaultMaxReadFrameSize)\n\tsetDefault(&conf.PingTimeout, 1, math.MaxInt64, 15*time.Second)\n}\n\n// adjustHTTP1MaxHeaderSize converts a limit in bytes on the size of an HTTP/1 header\n// to an HTTP/2 MAX_HEADER_LIST_SIZE value.\nfunc adjustHTTP1MaxHeaderSize(n int64) int64 {\n\t// http2's count is in a slightly different unit and includes 32 bytes per pair.\n\t// So, take the net/http.Server value and pad it up a bit, assuming 10 headers.\n\tconst perFieldOverhead = 32 // per http2 spec\n\tconst typicalHeaders = 10   // conservative\n\treturn n + typicalHeaders*perFieldOverhead\n}\n\nfunc fillNetHTTPConfig(conf *http2Config, h2 *http.HTTP2Config) {\n\tif h2 == nil {\n\t\treturn\n\t}\n\tif h2.MaxConcurrentStreams != 0 {\n\t\tconf.MaxConcurrentStreams = uint32(h2.MaxConcurrentStreams)\n\t}\n\tif http2ConfigStrictMaxConcurrentRequests(h2) {\n\t\tconf.StrictMaxConcurrentRequests = true\n\t}\n\tif h2.MaxEncoderHeaderTableSize != 0 {\n\t\tconf.MaxEncoderHeaderTableSize = uint32(h2.MaxEncoderHeaderTableSize)\n\t}\n\tif h2.MaxDecoderHeaderTableSize != 0 {\n\t\tconf.MaxDecoderHeaderTableSize = uint32(h2.MaxDecoderHeaderTableSize)\n\t}\n\tif h2.MaxConcurrentStreams != 0 {\n\t\tconf.MaxConcurrentStreams = uint32(h2.MaxConcurrentStreams)\n\t}\n\tif h2.MaxReadFrameSize != 0 {\n\t\tconf.MaxReadFrameSize = uint32(h2.MaxReadFrameSize)\n\t}\n\tif h2.MaxReceiveBufferPerConnection != 0 {\n\t\tconf.MaxUploadBufferPerConnection = int32(h2.MaxReceiveBufferPerConnection)\n\t}\n\tif h2.MaxReceiveBufferPerStream != 0 {\n\t\tconf.MaxUploadBufferPerStream = int32(h2.MaxReceiveBufferPerStream)\n\t}\n\tif h2.SendPingTimeout != 0 {\n\t\tconf.SendPingTimeout = h2.SendPingTimeout\n\t}\n\tif h2.PingTimeout != 0 {\n\t\tconf.PingTimeout = h2.PingTimeout\n\t}\n\tif h2.WriteByteTimeout != 0 {\n\t\tconf.WriteByteTimeout = h2.WriteByteTimeout\n\t}\n\tif h2.PermitProhibitedCipherSuites {\n\t\tconf.PermitProhibitedCipherSuites = true\n\t}\n\tif h2.CountError != nil {\n\t\tconf.CountError = h2.CountError\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/config_go125.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.26\n\npackage http2\n\nimport (\n\t\"net/http\"\n)\n\nfunc http2ConfigStrictMaxConcurrentRequests(h2 *http.HTTP2Config) bool {\n\treturn false\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/config_go126.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.26\n\npackage http2\n\nimport (\n\t\"net/http\"\n)\n\nfunc http2ConfigStrictMaxConcurrentRequests(h2 *http.HTTP2Config) bool {\n\treturn h2.StrictMaxConcurrentRequests\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/databuffer.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n)\n\n// Buffer chunks are allocated from a pool to reduce pressure on GC.\n// The maximum wasted space per dataBuffer is 2x the largest size class,\n// which happens when the dataBuffer has multiple chunks and there is\n// one unread byte in both the first and last chunks. We use a few size\n// classes to minimize overheads for servers that typically receive very\n// small request bodies.\n//\n// TODO: Benchmark to determine if the pools are necessary. The GC may have\n// improved enough that we can instead allocate chunks like this:\n// make([]byte, max(16<<10, expectedBytesRemaining))\nvar dataChunkPools = [...]sync.Pool{\n\t{New: func() interface{} { return new([1 << 10]byte) }},\n\t{New: func() interface{} { return new([2 << 10]byte) }},\n\t{New: func() interface{} { return new([4 << 10]byte) }},\n\t{New: func() interface{} { return new([8 << 10]byte) }},\n\t{New: func() interface{} { return new([16 << 10]byte) }},\n}\n\nfunc getDataBufferChunk(size int64) []byte {\n\tswitch {\n\tcase size <= 1<<10:\n\t\treturn dataChunkPools[0].Get().(*[1 << 10]byte)[:]\n\tcase size <= 2<<10:\n\t\treturn dataChunkPools[1].Get().(*[2 << 10]byte)[:]\n\tcase size <= 4<<10:\n\t\treturn dataChunkPools[2].Get().(*[4 << 10]byte)[:]\n\tcase size <= 8<<10:\n\t\treturn dataChunkPools[3].Get().(*[8 << 10]byte)[:]\n\tdefault:\n\t\treturn dataChunkPools[4].Get().(*[16 << 10]byte)[:]\n\t}\n}\n\nfunc putDataBufferChunk(p []byte) {\n\tswitch len(p) {\n\tcase 1 << 10:\n\t\tdataChunkPools[0].Put((*[1 << 10]byte)(p))\n\tcase 2 << 10:\n\t\tdataChunkPools[1].Put((*[2 << 10]byte)(p))\n\tcase 4 << 10:\n\t\tdataChunkPools[2].Put((*[4 << 10]byte)(p))\n\tcase 8 << 10:\n\t\tdataChunkPools[3].Put((*[8 << 10]byte)(p))\n\tcase 16 << 10:\n\t\tdataChunkPools[4].Put((*[16 << 10]byte)(p))\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unexpected buffer len=%v\", len(p)))\n\t}\n}\n\n// dataBuffer is an io.ReadWriter backed by a list of data chunks.\n// Each dataBuffer is used to read DATA frames on a single stream.\n// The buffer is divided into chunks so the server can limit the\n// total memory used by a single connection without limiting the\n// request body size on any single stream.\ntype dataBuffer struct {\n\tchunks   [][]byte\n\tr        int   // next byte to read is chunks[0][r]\n\tw        int   // next byte to write is chunks[len(chunks)-1][w]\n\tsize     int   // total buffered bytes\n\texpected int64 // we expect at least this many bytes in future Write calls (ignored if <= 0)\n}\n\nvar errReadEmpty = errors.New(\"read from empty dataBuffer\")\n\n// Read copies bytes from the buffer into p.\n// It is an error to read when no data is available.\nfunc (b *dataBuffer) Read(p []byte) (int, error) {\n\tif b.size == 0 {\n\t\treturn 0, errReadEmpty\n\t}\n\tvar ntotal int\n\tfor len(p) > 0 && b.size > 0 {\n\t\treadFrom := b.bytesFromFirstChunk()\n\t\tn := copy(p, readFrom)\n\t\tp = p[n:]\n\t\tntotal += n\n\t\tb.r += n\n\t\tb.size -= n\n\t\t// If the first chunk has been consumed, advance to the next chunk.\n\t\tif b.r == len(b.chunks[0]) {\n\t\t\tputDataBufferChunk(b.chunks[0])\n\t\t\tend := len(b.chunks) - 1\n\t\t\tcopy(b.chunks[:end], b.chunks[1:])\n\t\t\tb.chunks[end] = nil\n\t\t\tb.chunks = b.chunks[:end]\n\t\t\tb.r = 0\n\t\t}\n\t}\n\treturn ntotal, nil\n}\n\nfunc (b *dataBuffer) bytesFromFirstChunk() []byte {\n\tif len(b.chunks) == 1 {\n\t\treturn b.chunks[0][b.r:b.w]\n\t}\n\treturn b.chunks[0][b.r:]\n}\n\n// Len returns the number of bytes of the unread portion of the buffer.\nfunc (b *dataBuffer) Len() int {\n\treturn b.size\n}\n\n// Write appends p to the buffer.\nfunc (b *dataBuffer) Write(p []byte) (int, error) {\n\tntotal := len(p)\n\tfor len(p) > 0 {\n\t\t// If the last chunk is empty, allocate a new chunk. Try to allocate\n\t\t// enough to fully copy p plus any additional bytes we expect to\n\t\t// receive. However, this may allocate less than len(p).\n\t\twant := int64(len(p))\n\t\tif b.expected > want {\n\t\t\twant = b.expected\n\t\t}\n\t\tchunk := b.lastChunkOrAlloc(want)\n\t\tn := copy(chunk[b.w:], p)\n\t\tp = p[n:]\n\t\tb.w += n\n\t\tb.size += n\n\t\tb.expected -= int64(n)\n\t}\n\treturn ntotal, nil\n}\n\nfunc (b *dataBuffer) lastChunkOrAlloc(want int64) []byte {\n\tif len(b.chunks) != 0 {\n\t\tlast := b.chunks[len(b.chunks)-1]\n\t\tif b.w < len(last) {\n\t\t\treturn last\n\t\t}\n\t}\n\tchunk := getDataBufferChunk(want)\n\tb.chunks = append(b.chunks, chunk)\n\tb.w = 0\n\treturn chunk\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/errors.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\n// An ErrCode is an unsigned 32-bit error code as defined in the HTTP/2 spec.\ntype ErrCode uint32\n\nconst (\n\tErrCodeNo                 ErrCode = 0x0\n\tErrCodeProtocol           ErrCode = 0x1\n\tErrCodeInternal           ErrCode = 0x2\n\tErrCodeFlowControl        ErrCode = 0x3\n\tErrCodeSettingsTimeout    ErrCode = 0x4\n\tErrCodeStreamClosed       ErrCode = 0x5\n\tErrCodeFrameSize          ErrCode = 0x6\n\tErrCodeRefusedStream      ErrCode = 0x7\n\tErrCodeCancel             ErrCode = 0x8\n\tErrCodeCompression        ErrCode = 0x9\n\tErrCodeConnect            ErrCode = 0xa\n\tErrCodeEnhanceYourCalm    ErrCode = 0xb\n\tErrCodeInadequateSecurity ErrCode = 0xc\n\tErrCodeHTTP11Required     ErrCode = 0xd\n)\n\nvar errCodeName = map[ErrCode]string{\n\tErrCodeNo:                 \"NO_ERROR\",\n\tErrCodeProtocol:           \"PROTOCOL_ERROR\",\n\tErrCodeInternal:           \"INTERNAL_ERROR\",\n\tErrCodeFlowControl:        \"FLOW_CONTROL_ERROR\",\n\tErrCodeSettingsTimeout:    \"SETTINGS_TIMEOUT\",\n\tErrCodeStreamClosed:       \"STREAM_CLOSED\",\n\tErrCodeFrameSize:          \"FRAME_SIZE_ERROR\",\n\tErrCodeRefusedStream:      \"REFUSED_STREAM\",\n\tErrCodeCancel:             \"CANCEL\",\n\tErrCodeCompression:        \"COMPRESSION_ERROR\",\n\tErrCodeConnect:            \"CONNECT_ERROR\",\n\tErrCodeEnhanceYourCalm:    \"ENHANCE_YOUR_CALM\",\n\tErrCodeInadequateSecurity: \"INADEQUATE_SECURITY\",\n\tErrCodeHTTP11Required:     \"HTTP_1_1_REQUIRED\",\n}\n\nfunc (e ErrCode) String() string {\n\tif s, ok := errCodeName[e]; ok {\n\t\treturn s\n\t}\n\treturn fmt.Sprintf(\"unknown error code 0x%x\", uint32(e))\n}\n\nfunc (e ErrCode) stringToken() string {\n\tif s, ok := errCodeName[e]; ok {\n\t\treturn s\n\t}\n\treturn fmt.Sprintf(\"ERR_UNKNOWN_%d\", uint32(e))\n}\n\n// ConnectionError is an error that results in the termination of the\n// entire connection.\ntype ConnectionError ErrCode\n\nfunc (e ConnectionError) Error() string { return fmt.Sprintf(\"connection error: %s\", ErrCode(e)) }\n\n// StreamError is an error that only affects one stream within an\n// HTTP/2 connection.\ntype StreamError struct {\n\tStreamID uint32\n\tCode     ErrCode\n\tCause    error // optional additional detail\n}\n\n// errFromPeer is a sentinel error value for StreamError.Cause to\n// indicate that the StreamError was sent from the peer over the wire\n// and wasn't locally generated in the Transport.\nvar errFromPeer = errors.New(\"received from peer\")\n\nfunc streamError(id uint32, code ErrCode) StreamError {\n\treturn StreamError{StreamID: id, Code: code}\n}\n\nfunc (e StreamError) Error() string {\n\tif e.Cause != nil {\n\t\treturn fmt.Sprintf(\"stream error: stream ID %d; %v; %v\", e.StreamID, e.Code, e.Cause)\n\t}\n\treturn fmt.Sprintf(\"stream error: stream ID %d; %v\", e.StreamID, e.Code)\n}\n\n// 6.9.1 The Flow Control Window\n// \"If a sender receives a WINDOW_UPDATE that causes a flow control\n// window to exceed this maximum it MUST terminate either the stream\n// or the connection, as appropriate. For streams, [...]; for the\n// connection, a GOAWAY frame with a FLOW_CONTROL_ERROR code.\"\ntype goAwayFlowError struct{}\n\nfunc (goAwayFlowError) Error() string { return \"connection exceeded flow control window size\" }\n\n// connError represents an HTTP/2 ConnectionError error code, along\n// with a string (for debugging) explaining why.\n//\n// Errors of this type are only returned by the frame parser functions\n// and converted into ConnectionError(Code), after stashing away\n// the Reason into the Framer's errDetail field, accessible via\n// the (*Framer).ErrorDetail method.\ntype connError struct {\n\tCode   ErrCode // the ConnectionError error code\n\tReason string  // additional reason\n}\n\nfunc (e connError) Error() string {\n\treturn fmt.Sprintf(\"http2: connection error: %v: %v\", e.Code, e.Reason)\n}\n\ntype pseudoHeaderError string\n\nfunc (e pseudoHeaderError) Error() string {\n\treturn fmt.Sprintf(\"invalid pseudo-header %q\", string(e))\n}\n\ntype duplicatePseudoHeaderError string\n\nfunc (e duplicatePseudoHeaderError) Error() string {\n\treturn fmt.Sprintf(\"duplicate pseudo-header %q\", string(e))\n}\n\ntype headerFieldNameError string\n\nfunc (e headerFieldNameError) Error() string {\n\treturn fmt.Sprintf(\"invalid header field name %q\", string(e))\n}\n\ntype headerFieldValueError string\n\nfunc (e headerFieldValueError) Error() string {\n\treturn fmt.Sprintf(\"invalid header field value for %q\", string(e))\n}\n\nvar (\n\terrMixPseudoHeaderTypes = errors.New(\"mix of request and response pseudo headers\")\n\terrPseudoAfterRegular   = errors.New(\"pseudo header field after regular\")\n)\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/flow.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Flow control\n\npackage http2\n\n// inflowMinRefresh is the minimum number of bytes we'll send for a\n// flow control window update.\nconst inflowMinRefresh = 4 << 10\n\n// inflow accounts for an inbound flow control window.\n// It tracks both the latest window sent to the peer (used for enforcement)\n// and the accumulated unsent window.\ntype inflow struct {\n\tavail  int32\n\tunsent int32\n}\n\n// init sets the initial window.\nfunc (f *inflow) init(n int32) {\n\tf.avail = n\n}\n\n// add adds n bytes to the window, with a maximum window size of max,\n// indicating that the peer can now send us more data.\n// For example, the user read from a {Request,Response} body and consumed\n// some of the buffered data, so the peer can now send more.\n// It returns the number of bytes to send in a WINDOW_UPDATE frame to the peer.\n// Window updates are accumulated and sent when the unsent capacity\n// is at least inflowMinRefresh or will at least double the peer's available window.\nfunc (f *inflow) add(n int) (connAdd int32) {\n\tif n < 0 {\n\t\tpanic(\"negative update\")\n\t}\n\tunsent := int64(f.unsent) + int64(n)\n\t// \"A sender MUST NOT allow a flow-control window to exceed 2^31-1 octets.\"\n\t// RFC 7540 Section 6.9.1.\n\tconst maxWindow = 1<<31 - 1\n\tif unsent+int64(f.avail) > maxWindow {\n\t\tpanic(\"flow control update exceeds maximum window size\")\n\t}\n\tf.unsent = int32(unsent)\n\tif f.unsent < inflowMinRefresh && f.unsent < f.avail {\n\t\t// If there aren't at least inflowMinRefresh bytes of window to send,\n\t\t// and this update won't at least double the window, buffer the update for later.\n\t\treturn 0\n\t}\n\tf.avail += f.unsent\n\tf.unsent = 0\n\treturn int32(unsent)\n}\n\n// take attempts to take n bytes from the peer's flow control window.\n// It reports whether the window has available capacity.\nfunc (f *inflow) take(n uint32) bool {\n\tif n > uint32(f.avail) {\n\t\treturn false\n\t}\n\tf.avail -= int32(n)\n\treturn true\n}\n\n// takeInflows attempts to take n bytes from two inflows,\n// typically connection-level and stream-level flows.\n// It reports whether both windows have available capacity.\nfunc takeInflows(f1, f2 *inflow, n uint32) bool {\n\tif n > uint32(f1.avail) || n > uint32(f2.avail) {\n\t\treturn false\n\t}\n\tf1.avail -= int32(n)\n\tf2.avail -= int32(n)\n\treturn true\n}\n\n// outflow is the outbound flow control window's size.\ntype outflow struct {\n\t_ incomparable\n\n\t// n is the number of DATA bytes we're allowed to send.\n\t// An outflow is kept both on a conn and a per-stream.\n\tn int32\n\n\t// conn points to the shared connection-level outflow that is\n\t// shared by all streams on that conn. It is nil for the outflow\n\t// that's on the conn directly.\n\tconn *outflow\n}\n\nfunc (f *outflow) setConnFlow(cf *outflow) { f.conn = cf }\n\nfunc (f *outflow) available() int32 {\n\tn := f.n\n\tif f.conn != nil && f.conn.n < n {\n\t\tn = f.conn.n\n\t}\n\treturn n\n}\n\nfunc (f *outflow) take(n int32) {\n\tif n > f.available() {\n\t\tpanic(\"internal error: took too much\")\n\t}\n\tf.n -= n\n\tif f.conn != nil {\n\t\tf.conn.n -= n\n\t}\n}\n\n// add adds n bytes (positive or negative) to the flow control window.\n// It returns false if the sum would exceed 2^31-1.\nfunc (f *outflow) add(n int32) bool {\n\tsum := f.n + n\n\tif (sum > n) == (f.n > 0) {\n\t\tf.n = sum\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/frame.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"slices\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"golang.org/x/net/http/httpguts\"\n\t\"golang.org/x/net/http2/hpack\"\n\t\"golang.org/x/net/internal/httpsfv\"\n)\n\nconst frameHeaderLen = 9\n\nvar padZeros = make([]byte, 255) // zeros for padding\n\n// A FrameType is a registered frame type as defined in\n// https://httpwg.org/specs/rfc7540.html#rfc.section.11.2 and other future\n// RFCs.\ntype FrameType uint8\n\nconst (\n\tFrameData           FrameType = 0x0\n\tFrameHeaders        FrameType = 0x1\n\tFramePriority       FrameType = 0x2\n\tFrameRSTStream      FrameType = 0x3\n\tFrameSettings       FrameType = 0x4\n\tFramePushPromise    FrameType = 0x5\n\tFramePing           FrameType = 0x6\n\tFrameGoAway         FrameType = 0x7\n\tFrameWindowUpdate   FrameType = 0x8\n\tFrameContinuation   FrameType = 0x9\n\tFramePriorityUpdate FrameType = 0x10\n)\n\nvar frameNames = [...]string{\n\tFrameData:           \"DATA\",\n\tFrameHeaders:        \"HEADERS\",\n\tFramePriority:       \"PRIORITY\",\n\tFrameRSTStream:      \"RST_STREAM\",\n\tFrameSettings:       \"SETTINGS\",\n\tFramePushPromise:    \"PUSH_PROMISE\",\n\tFramePing:           \"PING\",\n\tFrameGoAway:         \"GOAWAY\",\n\tFrameWindowUpdate:   \"WINDOW_UPDATE\",\n\tFrameContinuation:   \"CONTINUATION\",\n\tFramePriorityUpdate: \"PRIORITY_UPDATE\",\n}\n\nfunc (t FrameType) String() string {\n\tif int(t) < len(frameNames) {\n\t\treturn frameNames[t]\n\t}\n\treturn fmt.Sprintf(\"UNKNOWN_FRAME_TYPE_%d\", t)\n}\n\n// Flags is a bitmask of HTTP/2 flags.\n// The meaning of flags varies depending on the frame type.\ntype Flags uint8\n\n// Has reports whether f contains all (0 or more) flags in v.\nfunc (f Flags) Has(v Flags) bool {\n\treturn (f & v) == v\n}\n\n// Frame-specific FrameHeader flag bits.\nconst (\n\t// Data Frame\n\tFlagDataEndStream Flags = 0x1\n\tFlagDataPadded    Flags = 0x8\n\n\t// Headers Frame\n\tFlagHeadersEndStream  Flags = 0x1\n\tFlagHeadersEndHeaders Flags = 0x4\n\tFlagHeadersPadded     Flags = 0x8\n\tFlagHeadersPriority   Flags = 0x20\n\n\t// Settings Frame\n\tFlagSettingsAck Flags = 0x1\n\n\t// Ping Frame\n\tFlagPingAck Flags = 0x1\n\n\t// Continuation Frame\n\tFlagContinuationEndHeaders Flags = 0x4\n\n\tFlagPushPromiseEndHeaders Flags = 0x4\n\tFlagPushPromisePadded     Flags = 0x8\n)\n\nvar flagName = map[FrameType]map[Flags]string{\n\tFrameData: {\n\t\tFlagDataEndStream: \"END_STREAM\",\n\t\tFlagDataPadded:    \"PADDED\",\n\t},\n\tFrameHeaders: {\n\t\tFlagHeadersEndStream:  \"END_STREAM\",\n\t\tFlagHeadersEndHeaders: \"END_HEADERS\",\n\t\tFlagHeadersPadded:     \"PADDED\",\n\t\tFlagHeadersPriority:   \"PRIORITY\",\n\t},\n\tFrameSettings: {\n\t\tFlagSettingsAck: \"ACK\",\n\t},\n\tFramePing: {\n\t\tFlagPingAck: \"ACK\",\n\t},\n\tFrameContinuation: {\n\t\tFlagContinuationEndHeaders: \"END_HEADERS\",\n\t},\n\tFramePushPromise: {\n\t\tFlagPushPromiseEndHeaders: \"END_HEADERS\",\n\t\tFlagPushPromisePadded:     \"PADDED\",\n\t},\n}\n\n// a frameParser parses a frame given its FrameHeader and payload\n// bytes. The length of payload will always equal fh.Length (which\n// might be 0).\ntype frameParser func(fc *frameCache, fh FrameHeader, countError func(string), payload []byte) (Frame, error)\n\nvar frameParsers = [...]frameParser{\n\tFrameData:           parseDataFrame,\n\tFrameHeaders:        parseHeadersFrame,\n\tFramePriority:       parsePriorityFrame,\n\tFrameRSTStream:      parseRSTStreamFrame,\n\tFrameSettings:       parseSettingsFrame,\n\tFramePushPromise:    parsePushPromise,\n\tFramePing:           parsePingFrame,\n\tFrameGoAway:         parseGoAwayFrame,\n\tFrameWindowUpdate:   parseWindowUpdateFrame,\n\tFrameContinuation:   parseContinuationFrame,\n\tFramePriorityUpdate: parsePriorityUpdateFrame,\n}\n\nfunc typeFrameParser(t FrameType) frameParser {\n\tif int(t) < len(frameParsers) {\n\t\tif f := frameParsers[t]; f != nil {\n\t\t\treturn f\n\t\t}\n\t}\n\treturn parseUnknownFrame\n}\n\n// A FrameHeader is the 9 byte header of all HTTP/2 frames.\n//\n// See https://httpwg.org/specs/rfc7540.html#FrameHeader\ntype FrameHeader struct {\n\tvalid bool // caller can access []byte fields in the Frame\n\n\t// Type is the 1 byte frame type. There are ten standard frame\n\t// types, but extension frame types may be written by WriteRawFrame\n\t// and will be returned by ReadFrame (as UnknownFrame).\n\tType FrameType\n\n\t// Flags are the 1 byte of 8 potential bit flags per frame.\n\t// They are specific to the frame type.\n\tFlags Flags\n\n\t// Length is the length of the frame, not including the 9 byte header.\n\t// The maximum size is one byte less than 16MB (uint24), but only\n\t// frames up to 16KB are allowed without peer agreement.\n\tLength uint32\n\n\t// StreamID is which stream this frame is for. Certain frames\n\t// are not stream-specific, in which case this field is 0.\n\tStreamID uint32\n}\n\n// Header returns h. It exists so FrameHeaders can be embedded in other\n// specific frame types and implement the Frame interface.\nfunc (h FrameHeader) Header() FrameHeader { return h }\n\nfunc (h FrameHeader) String() string {\n\tvar buf bytes.Buffer\n\tbuf.WriteString(\"[FrameHeader \")\n\th.writeDebug(&buf)\n\tbuf.WriteByte(']')\n\treturn buf.String()\n}\n\nfunc (h FrameHeader) writeDebug(buf *bytes.Buffer) {\n\tbuf.WriteString(h.Type.String())\n\tif h.Flags != 0 {\n\t\tbuf.WriteString(\" flags=\")\n\t\tset := 0\n\t\tfor i := uint8(0); i < 8; i++ {\n\t\t\tif h.Flags&(1<<i) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tset++\n\t\t\tif set > 1 {\n\t\t\t\tbuf.WriteByte('|')\n\t\t\t}\n\t\t\tname := flagName[h.Type][Flags(1<<i)]\n\t\t\tif name != \"\" {\n\t\t\t\tbuf.WriteString(name)\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(buf, \"0x%x\", 1<<i)\n\t\t\t}\n\t\t}\n\t}\n\tif h.StreamID != 0 {\n\t\tfmt.Fprintf(buf, \" stream=%d\", h.StreamID)\n\t}\n\tfmt.Fprintf(buf, \" len=%d\", h.Length)\n}\n\nfunc (h *FrameHeader) checkValid() {\n\tif !h.valid {\n\t\tpanic(\"Frame accessor called on non-owned Frame\")\n\t}\n}\n\nfunc (h *FrameHeader) invalidate() { h.valid = false }\n\n// frame header bytes.\n// Used only by ReadFrameHeader.\nvar fhBytes = sync.Pool{\n\tNew: func() interface{} {\n\t\tbuf := make([]byte, frameHeaderLen)\n\t\treturn &buf\n\t},\n}\n\nfunc invalidHTTP1LookingFrameHeader() FrameHeader {\n\tfh, _ := readFrameHeader(make([]byte, frameHeaderLen), strings.NewReader(\"HTTP/1.1 \"))\n\treturn fh\n}\n\n// ReadFrameHeader reads 9 bytes from r and returns a FrameHeader.\n// Most users should use Framer.ReadFrame instead.\nfunc ReadFrameHeader(r io.Reader) (FrameHeader, error) {\n\tbufp := fhBytes.Get().(*[]byte)\n\tdefer fhBytes.Put(bufp)\n\treturn readFrameHeader(*bufp, r)\n}\n\nfunc readFrameHeader(buf []byte, r io.Reader) (FrameHeader, error) {\n\t_, err := io.ReadFull(r, buf[:frameHeaderLen])\n\tif err != nil {\n\t\treturn FrameHeader{}, err\n\t}\n\treturn FrameHeader{\n\t\tLength:   (uint32(buf[0])<<16 | uint32(buf[1])<<8 | uint32(buf[2])),\n\t\tType:     FrameType(buf[3]),\n\t\tFlags:    Flags(buf[4]),\n\t\tStreamID: binary.BigEndian.Uint32(buf[5:]) & (1<<31 - 1),\n\t\tvalid:    true,\n\t}, nil\n}\n\n// A Frame is the base interface implemented by all frame types.\n// Callers will generally type-assert the specific frame type:\n// *HeadersFrame, *SettingsFrame, *WindowUpdateFrame, etc.\n//\n// Frames are only valid until the next call to Framer.ReadFrame.\ntype Frame interface {\n\tHeader() FrameHeader\n\n\t// invalidate is called by Framer.ReadFrame to make this\n\t// frame's buffers as being invalid, since the subsequent\n\t// frame will reuse them.\n\tinvalidate()\n}\n\n// A Framer reads and writes Frames.\ntype Framer struct {\n\tr         io.Reader\n\tlastFrame Frame\n\terrDetail error\n\n\t// countError is a non-nil func that's called on a frame parse\n\t// error with some unique error path token. It's initialized\n\t// from Transport.CountError or Server.CountError.\n\tcountError func(errToken string)\n\n\t// lastHeaderStream is non-zero if the last frame was an\n\t// unfinished HEADERS/CONTINUATION.\n\tlastHeaderStream uint32\n\t// lastFrameType holds the type of the last frame for verifying frame order.\n\tlastFrameType FrameType\n\n\tmaxReadSize uint32\n\theaderBuf   [frameHeaderLen]byte\n\n\t// TODO: let getReadBuf be configurable, and use a less memory-pinning\n\t// allocator in server.go to minimize memory pinned for many idle conns.\n\t// Will probably also need to make frame invalidation have a hook too.\n\tgetReadBuf func(size uint32) []byte\n\treadBuf    []byte // cache for default getReadBuf\n\n\tmaxWriteSize uint32 // zero means unlimited; TODO: implement\n\n\tw    io.Writer\n\twbuf []byte\n\n\t// AllowIllegalWrites permits the Framer's Write methods to\n\t// write frames that do not conform to the HTTP/2 spec. This\n\t// permits using the Framer to test other HTTP/2\n\t// implementations' conformance to the spec.\n\t// If false, the Write methods will prefer to return an error\n\t// rather than comply.\n\tAllowIllegalWrites bool\n\n\t// AllowIllegalReads permits the Framer's ReadFrame method\n\t// to return non-compliant frames or frame orders.\n\t// This is for testing and permits using the Framer to test\n\t// other HTTP/2 implementations' conformance to the spec.\n\t// It is not compatible with ReadMetaHeaders.\n\tAllowIllegalReads bool\n\n\t// ReadMetaHeaders if non-nil causes ReadFrame to merge\n\t// HEADERS and CONTINUATION frames together and return\n\t// MetaHeadersFrame instead.\n\tReadMetaHeaders *hpack.Decoder\n\n\t// MaxHeaderListSize is the http2 MAX_HEADER_LIST_SIZE.\n\t// It's used only if ReadMetaHeaders is set; 0 means a sane default\n\t// (currently 16MB)\n\t// If the limit is hit, MetaHeadersFrame.Truncated is set true.\n\tMaxHeaderListSize uint32\n\n\t// TODO: track which type of frame & with which flags was sent\n\t// last. Then return an error (unless AllowIllegalWrites) if\n\t// we're in the middle of a header block and a\n\t// non-Continuation or Continuation on a different stream is\n\t// attempted to be written.\n\n\tlogReads, logWrites bool\n\n\tdebugFramer       *Framer // only use for logging written writes\n\tdebugFramerBuf    *bytes.Buffer\n\tdebugReadLoggerf  func(string, ...interface{})\n\tdebugWriteLoggerf func(string, ...interface{})\n\n\tframeCache *frameCache // nil if frames aren't reused (default)\n}\n\nfunc (fr *Framer) maxHeaderListSize() uint32 {\n\tif fr.MaxHeaderListSize == 0 {\n\t\treturn 16 << 20 // sane default, per docs\n\t}\n\treturn fr.MaxHeaderListSize\n}\n\nfunc (f *Framer) startWrite(ftype FrameType, flags Flags, streamID uint32) {\n\t// Write the FrameHeader.\n\tf.wbuf = append(f.wbuf[:0],\n\t\t0, // 3 bytes of length, filled in endWrite\n\t\t0,\n\t\t0,\n\t\tbyte(ftype),\n\t\tbyte(flags),\n\t\tbyte(streamID>>24),\n\t\tbyte(streamID>>16),\n\t\tbyte(streamID>>8),\n\t\tbyte(streamID))\n}\n\nfunc (f *Framer) endWrite() error {\n\t// Now that we know the final size, fill in the FrameHeader in\n\t// the space previously reserved for it. Abuse append.\n\tlength := len(f.wbuf) - frameHeaderLen\n\tif length >= (1 << 24) {\n\t\treturn ErrFrameTooLarge\n\t}\n\t_ = append(f.wbuf[:0],\n\t\tbyte(length>>16),\n\t\tbyte(length>>8),\n\t\tbyte(length))\n\tif f.logWrites {\n\t\tf.logWrite()\n\t}\n\n\tn, err := f.w.Write(f.wbuf)\n\tif err == nil && n != len(f.wbuf) {\n\t\terr = io.ErrShortWrite\n\t}\n\treturn err\n}\n\nfunc (f *Framer) logWrite() {\n\tif f.debugFramer == nil {\n\t\tf.debugFramerBuf = new(bytes.Buffer)\n\t\tf.debugFramer = NewFramer(nil, f.debugFramerBuf)\n\t\tf.debugFramer.logReads = false // we log it ourselves, saying \"wrote\" below\n\t\t// Let us read anything, even if we accidentally wrote it\n\t\t// in the wrong order:\n\t\tf.debugFramer.AllowIllegalReads = true\n\t}\n\tf.debugFramerBuf.Write(f.wbuf)\n\tfr, err := f.debugFramer.ReadFrame()\n\tif err != nil {\n\t\tf.debugWriteLoggerf(\"http2: Framer %p: failed to decode just-written frame\", f)\n\t\treturn\n\t}\n\tf.debugWriteLoggerf(\"http2: Framer %p: wrote %v\", f, summarizeFrame(fr))\n}\n\nfunc (f *Framer) writeByte(v byte)     { f.wbuf = append(f.wbuf, v) }\nfunc (f *Framer) writeBytes(v []byte)  { f.wbuf = append(f.wbuf, v...) }\nfunc (f *Framer) writeUint16(v uint16) { f.wbuf = append(f.wbuf, byte(v>>8), byte(v)) }\nfunc (f *Framer) writeUint32(v uint32) {\n\tf.wbuf = append(f.wbuf, byte(v>>24), byte(v>>16), byte(v>>8), byte(v))\n}\n\nconst (\n\tminMaxFrameSize = 1 << 14\n\tmaxFrameSize    = 1<<24 - 1\n)\n\n// SetReuseFrames allows the Framer to reuse Frames.\n// If called on a Framer, Frames returned by calls to ReadFrame are only\n// valid until the next call to ReadFrame.\nfunc (fr *Framer) SetReuseFrames() {\n\tif fr.frameCache != nil {\n\t\treturn\n\t}\n\tfr.frameCache = &frameCache{}\n}\n\ntype frameCache struct {\n\tdataFrame DataFrame\n}\n\nfunc (fc *frameCache) getDataFrame() *DataFrame {\n\tif fc == nil {\n\t\treturn &DataFrame{}\n\t}\n\treturn &fc.dataFrame\n}\n\n// NewFramer returns a Framer that writes frames to w and reads them from r.\nfunc NewFramer(w io.Writer, r io.Reader) *Framer {\n\tfr := &Framer{\n\t\tw:                 w,\n\t\tr:                 r,\n\t\tcountError:        func(string) {},\n\t\tlogReads:          logFrameReads,\n\t\tlogWrites:         logFrameWrites,\n\t\tdebugReadLoggerf:  log.Printf,\n\t\tdebugWriteLoggerf: log.Printf,\n\t}\n\tfr.getReadBuf = func(size uint32) []byte {\n\t\tif cap(fr.readBuf) >= int(size) {\n\t\t\treturn fr.readBuf[:size]\n\t\t}\n\t\tfr.readBuf = make([]byte, size)\n\t\treturn fr.readBuf\n\t}\n\tfr.SetMaxReadFrameSize(maxFrameSize)\n\treturn fr\n}\n\n// SetMaxReadFrameSize sets the maximum size of a frame\n// that will be read by a subsequent call to ReadFrame.\n// It is the caller's responsibility to advertise this\n// limit with a SETTINGS frame.\nfunc (fr *Framer) SetMaxReadFrameSize(v uint32) {\n\tif v > maxFrameSize {\n\t\tv = maxFrameSize\n\t}\n\tfr.maxReadSize = v\n}\n\n// ErrorDetail returns a more detailed error of the last error\n// returned by Framer.ReadFrame. For instance, if ReadFrame\n// returns a StreamError with code PROTOCOL_ERROR, ErrorDetail\n// will say exactly what was invalid. ErrorDetail is not guaranteed\n// to return a non-nil value and like the rest of the http2 package,\n// its return value is not protected by an API compatibility promise.\n// ErrorDetail is reset after the next call to ReadFrame.\nfunc (fr *Framer) ErrorDetail() error {\n\treturn fr.errDetail\n}\n\n// ErrFrameTooLarge is returned from Framer.ReadFrame when the peer\n// sends a frame that is larger than declared with SetMaxReadFrameSize.\nvar ErrFrameTooLarge = errors.New(\"http2: frame too large\")\n\n// terminalReadFrameError reports whether err is an unrecoverable\n// error from ReadFrame and no other frames should be read.\nfunc terminalReadFrameError(err error) bool {\n\tif _, ok := err.(StreamError); ok {\n\t\treturn false\n\t}\n\treturn err != nil\n}\n\n// ReadFrameHeader reads the header of the next frame.\n// It reads the 9-byte fixed frame header, and does not read any portion of the\n// frame payload. The caller is responsible for consuming the payload, either\n// with ReadFrameForHeader or directly from the Framer's io.Reader.\n//\n// If the frame is larger than previously set with SetMaxReadFrameSize, it\n// returns the frame header and ErrFrameTooLarge.\n//\n// If the returned FrameHeader.StreamID is non-zero, it indicates the stream\n// responsible for the error.\nfunc (fr *Framer) ReadFrameHeader() (FrameHeader, error) {\n\tfr.errDetail = nil\n\tfh, err := readFrameHeader(fr.headerBuf[:], fr.r)\n\tif err != nil {\n\t\treturn fh, err\n\t}\n\tif fh.Length > fr.maxReadSize {\n\t\tif fh == invalidHTTP1LookingFrameHeader() {\n\t\t\treturn fh, fmt.Errorf(\"http2: failed reading the frame payload: %w, note that the frame header looked like an HTTP/1.1 header\", ErrFrameTooLarge)\n\t\t}\n\t\treturn fh, ErrFrameTooLarge\n\t}\n\tif err := fr.checkFrameOrder(fh); err != nil {\n\t\treturn fh, err\n\t}\n\treturn fh, nil\n}\n\n// ReadFrameForHeader reads the payload for the frame with the given FrameHeader.\n//\n// It behaves identically to ReadFrame, other than not checking the maximum\n// frame size.\nfunc (fr *Framer) ReadFrameForHeader(fh FrameHeader) (Frame, error) {\n\tif fr.lastFrame != nil {\n\t\tfr.lastFrame.invalidate()\n\t}\n\tpayload := fr.getReadBuf(fh.Length)\n\tif _, err := io.ReadFull(fr.r, payload); err != nil {\n\t\tif fh == invalidHTTP1LookingFrameHeader() {\n\t\t\treturn nil, fmt.Errorf(\"http2: failed reading the frame payload: %w, note that the frame header looked like an HTTP/1.1 header\", err)\n\t\t}\n\t\treturn nil, err\n\t}\n\tf, err := typeFrameParser(fh.Type)(fr.frameCache, fh, fr.countError, payload)\n\tif err != nil {\n\t\tif ce, ok := err.(connError); ok {\n\t\t\treturn nil, fr.connError(ce.Code, ce.Reason)\n\t\t}\n\t\treturn nil, err\n\t}\n\tfr.lastFrame = f\n\tif fr.logReads {\n\t\tfr.debugReadLoggerf(\"http2: Framer %p: read %v\", fr, summarizeFrame(f))\n\t}\n\tif fh.Type == FrameHeaders && fr.ReadMetaHeaders != nil {\n\t\treturn fr.readMetaFrame(f.(*HeadersFrame))\n\t}\n\treturn f, nil\n}\n\n// ReadFrame reads a single frame. The returned Frame is only valid\n// until the next call to ReadFrame or ReadFrameBodyForHeader.\n//\n// If the frame is larger than previously set with SetMaxReadFrameSize, the\n// returned error is ErrFrameTooLarge. Other errors may be of type\n// ConnectionError, StreamError, or anything else from the underlying\n// reader.\n//\n// If ReadFrame returns an error and a non-nil Frame, the Frame's StreamID\n// indicates the stream responsible for the error.\nfunc (fr *Framer) ReadFrame() (Frame, error) {\n\tfh, err := fr.ReadFrameHeader()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn fr.ReadFrameForHeader(fh)\n}\n\n// connError returns ConnectionError(code) but first\n// stashes away a public reason to the caller can optionally relay it\n// to the peer before hanging up on them. This might help others debug\n// their implementations.\nfunc (fr *Framer) connError(code ErrCode, reason string) error {\n\tfr.errDetail = errors.New(reason)\n\treturn ConnectionError(code)\n}\n\n// checkFrameOrder reports an error if f is an invalid frame to return\n// next from ReadFrame. Mostly it checks whether HEADERS and\n// CONTINUATION frames are contiguous.\nfunc (fr *Framer) checkFrameOrder(fh FrameHeader) error {\n\tlastType := fr.lastFrameType\n\tfr.lastFrameType = fh.Type\n\tif fr.AllowIllegalReads {\n\t\treturn nil\n\t}\n\n\tif fr.lastHeaderStream != 0 {\n\t\tif fh.Type != FrameContinuation {\n\t\t\treturn fr.connError(ErrCodeProtocol,\n\t\t\t\tfmt.Sprintf(\"got %s for stream %d; expected CONTINUATION following %s for stream %d\",\n\t\t\t\t\tfh.Type, fh.StreamID,\n\t\t\t\t\tlastType, fr.lastHeaderStream))\n\t\t}\n\t\tif fh.StreamID != fr.lastHeaderStream {\n\t\t\treturn fr.connError(ErrCodeProtocol,\n\t\t\t\tfmt.Sprintf(\"got CONTINUATION for stream %d; expected stream %d\",\n\t\t\t\t\tfh.StreamID, fr.lastHeaderStream))\n\t\t}\n\t} else if fh.Type == FrameContinuation {\n\t\treturn fr.connError(ErrCodeProtocol, fmt.Sprintf(\"unexpected CONTINUATION for stream %d\", fh.StreamID))\n\t}\n\n\tswitch fh.Type {\n\tcase FrameHeaders, FrameContinuation:\n\t\tif fh.Flags.Has(FlagHeadersEndHeaders) {\n\t\t\tfr.lastHeaderStream = 0\n\t\t} else {\n\t\t\tfr.lastHeaderStream = fh.StreamID\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// A DataFrame conveys arbitrary, variable-length sequences of octets\n// associated with a stream.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.1\ntype DataFrame struct {\n\tFrameHeader\n\tdata []byte\n}\n\nfunc (f *DataFrame) StreamEnded() bool {\n\treturn f.FrameHeader.Flags.Has(FlagDataEndStream)\n}\n\n// Data returns the frame's data octets, not including any padding\n// size byte or padding suffix bytes.\n// The caller must not retain the returned memory past the next\n// call to ReadFrame.\nfunc (f *DataFrame) Data() []byte {\n\tf.checkValid()\n\treturn f.data\n}\n\nfunc parseDataFrame(fc *frameCache, fh FrameHeader, countError func(string), payload []byte) (Frame, error) {\n\tif fh.StreamID == 0 {\n\t\t// DATA frames MUST be associated with a stream. If a\n\t\t// DATA frame is received whose stream identifier\n\t\t// field is 0x0, the recipient MUST respond with a\n\t\t// connection error (Section 5.4.1) of type\n\t\t// PROTOCOL_ERROR.\n\t\tcountError(\"frame_data_stream_0\")\n\t\treturn nil, connError{ErrCodeProtocol, \"DATA frame with stream ID 0\"}\n\t}\n\tf := fc.getDataFrame()\n\tf.FrameHeader = fh\n\n\tvar padSize byte\n\tif fh.Flags.Has(FlagDataPadded) {\n\t\tvar err error\n\t\tpayload, padSize, err = readByte(payload)\n\t\tif err != nil {\n\t\t\tcountError(\"frame_data_pad_byte_short\")\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif int(padSize) > len(payload) {\n\t\t// If the length of the padding is greater than the\n\t\t// length of the frame payload, the recipient MUST\n\t\t// treat this as a connection error.\n\t\t// Filed: https://github.com/http2/http2-spec/issues/610\n\t\tcountError(\"frame_data_pad_too_big\")\n\t\treturn nil, connError{ErrCodeProtocol, \"pad size larger than data payload\"}\n\t}\n\tf.data = payload[:len(payload)-int(padSize)]\n\treturn f, nil\n}\n\nvar (\n\terrStreamID    = errors.New(\"invalid stream ID\")\n\terrDepStreamID = errors.New(\"invalid dependent stream ID\")\n\terrPadLength   = errors.New(\"pad length too large\")\n\terrPadBytes    = errors.New(\"padding bytes must all be zeros unless AllowIllegalWrites is enabled\")\n)\n\nfunc validStreamIDOrZero(streamID uint32) bool {\n\treturn streamID&(1<<31) == 0\n}\n\nfunc validStreamID(streamID uint32) bool {\n\treturn streamID != 0 && streamID&(1<<31) == 0\n}\n\n// WriteData writes a DATA frame.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility not to violate the maximum frame size\n// and to not call other Write methods concurrently.\nfunc (f *Framer) WriteData(streamID uint32, endStream bool, data []byte) error {\n\treturn f.WriteDataPadded(streamID, endStream, data, nil)\n}\n\n// WriteDataPadded writes a DATA frame with optional padding.\n//\n// If pad is nil, the padding bit is not sent.\n// The length of pad must not exceed 255 bytes.\n// The bytes of pad must all be zero, unless f.AllowIllegalWrites is set.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility not to violate the maximum frame size\n// and to not call other Write methods concurrently.\nfunc (f *Framer) WriteDataPadded(streamID uint32, endStream bool, data, pad []byte) error {\n\tif err := f.startWriteDataPadded(streamID, endStream, data, pad); err != nil {\n\t\treturn err\n\t}\n\treturn f.endWrite()\n}\n\n// startWriteDataPadded is WriteDataPadded, but only writes the frame to the Framer's internal buffer.\n// The caller should call endWrite to flush the frame to the underlying writer.\nfunc (f *Framer) startWriteDataPadded(streamID uint32, endStream bool, data, pad []byte) error {\n\tif !validStreamID(streamID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tif len(pad) > 0 {\n\t\tif len(pad) > 255 {\n\t\t\treturn errPadLength\n\t\t}\n\t\tif !f.AllowIllegalWrites {\n\t\t\tfor _, b := range pad {\n\t\t\t\tif b != 0 {\n\t\t\t\t\t// \"Padding octets MUST be set to zero when sending.\"\n\t\t\t\t\treturn errPadBytes\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tvar flags Flags\n\tif endStream {\n\t\tflags |= FlagDataEndStream\n\t}\n\tif pad != nil {\n\t\tflags |= FlagDataPadded\n\t}\n\tf.startWrite(FrameData, flags, streamID)\n\tif pad != nil {\n\t\tf.wbuf = append(f.wbuf, byte(len(pad)))\n\t}\n\tf.wbuf = append(f.wbuf, data...)\n\tf.wbuf = append(f.wbuf, pad...)\n\treturn nil\n}\n\n// A SettingsFrame conveys configuration parameters that affect how\n// endpoints communicate, such as preferences and constraints on peer\n// behavior.\n//\n// See https://httpwg.org/specs/rfc7540.html#SETTINGS\ntype SettingsFrame struct {\n\tFrameHeader\n\tp []byte\n}\n\nfunc parseSettingsFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) {\n\tif fh.Flags.Has(FlagSettingsAck) && fh.Length > 0 {\n\t\t// When this (ACK 0x1) bit is set, the payload of the\n\t\t// SETTINGS frame MUST be empty. Receipt of a\n\t\t// SETTINGS frame with the ACK flag set and a length\n\t\t// field value other than 0 MUST be treated as a\n\t\t// connection error (Section 5.4.1) of type\n\t\t// FRAME_SIZE_ERROR.\n\t\tcountError(\"frame_settings_ack_with_length\")\n\t\treturn nil, ConnectionError(ErrCodeFrameSize)\n\t}\n\tif fh.StreamID != 0 {\n\t\t// SETTINGS frames always apply to a connection,\n\t\t// never a single stream. The stream identifier for a\n\t\t// SETTINGS frame MUST be zero (0x0).  If an endpoint\n\t\t// receives a SETTINGS frame whose stream identifier\n\t\t// field is anything other than 0x0, the endpoint MUST\n\t\t// respond with a connection error (Section 5.4.1) of\n\t\t// type PROTOCOL_ERROR.\n\t\tcountError(\"frame_settings_has_stream\")\n\t\treturn nil, ConnectionError(ErrCodeProtocol)\n\t}\n\tif len(p)%6 != 0 {\n\t\tcountError(\"frame_settings_mod_6\")\n\t\t// Expecting even number of 6 byte settings.\n\t\treturn nil, ConnectionError(ErrCodeFrameSize)\n\t}\n\tf := &SettingsFrame{FrameHeader: fh, p: p}\n\tif v, ok := f.Value(SettingInitialWindowSize); ok && v > (1<<31)-1 {\n\t\tcountError(\"frame_settings_window_size_too_big\")\n\t\t// Values above the maximum flow control window size of 2^31 - 1 MUST\n\t\t// be treated as a connection error (Section 5.4.1) of type\n\t\t// FLOW_CONTROL_ERROR.\n\t\treturn nil, ConnectionError(ErrCodeFlowControl)\n\t}\n\treturn f, nil\n}\n\nfunc (f *SettingsFrame) IsAck() bool {\n\treturn f.FrameHeader.Flags.Has(FlagSettingsAck)\n}\n\nfunc (f *SettingsFrame) Value(id SettingID) (v uint32, ok bool) {\n\tf.checkValid()\n\tfor i := 0; i < f.NumSettings(); i++ {\n\t\tif s := f.Setting(i); s.ID == id {\n\t\t\treturn s.Val, true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// Setting returns the setting from the frame at the given 0-based index.\n// The index must be >= 0 and less than f.NumSettings().\nfunc (f *SettingsFrame) Setting(i int) Setting {\n\tbuf := f.p\n\treturn Setting{\n\t\tID:  SettingID(binary.BigEndian.Uint16(buf[i*6 : i*6+2])),\n\t\tVal: binary.BigEndian.Uint32(buf[i*6+2 : i*6+6]),\n\t}\n}\n\nfunc (f *SettingsFrame) NumSettings() int { return len(f.p) / 6 }\n\n// HasDuplicates reports whether f contains any duplicate setting IDs.\nfunc (f *SettingsFrame) HasDuplicates() bool {\n\tnum := f.NumSettings()\n\tif num == 0 {\n\t\treturn false\n\t}\n\t// If it's small enough (the common case), just do the n^2\n\t// thing and avoid a map allocation.\n\tif num < 10 {\n\t\tfor i := 0; i < num; i++ {\n\t\t\tidi := f.Setting(i).ID\n\t\t\tfor j := i + 1; j < num; j++ {\n\t\t\t\tidj := f.Setting(j).ID\n\t\t\t\tif idi == idj {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\tseen := map[SettingID]bool{}\n\tfor i := 0; i < num; i++ {\n\t\tid := f.Setting(i).ID\n\t\tif seen[id] {\n\t\t\treturn true\n\t\t}\n\t\tseen[id] = true\n\t}\n\treturn false\n}\n\n// ForeachSetting runs fn for each setting.\n// It stops and returns the first error.\nfunc (f *SettingsFrame) ForeachSetting(fn func(Setting) error) error {\n\tf.checkValid()\n\tfor i := 0; i < f.NumSettings(); i++ {\n\t\tif err := fn(f.Setting(i)); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// WriteSettings writes a SETTINGS frame with zero or more settings\n// specified and the ACK bit not set.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WriteSettings(settings ...Setting) error {\n\tf.startWrite(FrameSettings, 0, 0)\n\tfor _, s := range settings {\n\t\tf.writeUint16(uint16(s.ID))\n\t\tf.writeUint32(s.Val)\n\t}\n\treturn f.endWrite()\n}\n\n// WriteSettingsAck writes an empty SETTINGS frame with the ACK bit set.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WriteSettingsAck() error {\n\tf.startWrite(FrameSettings, FlagSettingsAck, 0)\n\treturn f.endWrite()\n}\n\n// A PingFrame is a mechanism for measuring a minimal round trip time\n// from the sender, as well as determining whether an idle connection\n// is still functional.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.7\ntype PingFrame struct {\n\tFrameHeader\n\tData [8]byte\n}\n\nfunc (f *PingFrame) IsAck() bool { return f.Flags.Has(FlagPingAck) }\n\nfunc parsePingFrame(_ *frameCache, fh FrameHeader, countError func(string), payload []byte) (Frame, error) {\n\tif len(payload) != 8 {\n\t\tcountError(\"frame_ping_length\")\n\t\treturn nil, ConnectionError(ErrCodeFrameSize)\n\t}\n\tif fh.StreamID != 0 {\n\t\tcountError(\"frame_ping_has_stream\")\n\t\treturn nil, ConnectionError(ErrCodeProtocol)\n\t}\n\tf := &PingFrame{FrameHeader: fh}\n\tcopy(f.Data[:], payload)\n\treturn f, nil\n}\n\nfunc (f *Framer) WritePing(ack bool, data [8]byte) error {\n\tvar flags Flags\n\tif ack {\n\t\tflags = FlagPingAck\n\t}\n\tf.startWrite(FramePing, flags, 0)\n\tf.writeBytes(data[:])\n\treturn f.endWrite()\n}\n\n// A GoAwayFrame informs the remote peer to stop creating streams on this connection.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.8\ntype GoAwayFrame struct {\n\tFrameHeader\n\tLastStreamID uint32\n\tErrCode      ErrCode\n\tdebugData    []byte\n}\n\n// DebugData returns any debug data in the GOAWAY frame. Its contents\n// are not defined.\n// The caller must not retain the returned memory past the next\n// call to ReadFrame.\nfunc (f *GoAwayFrame) DebugData() []byte {\n\tf.checkValid()\n\treturn f.debugData\n}\n\nfunc parseGoAwayFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) {\n\tif fh.StreamID != 0 {\n\t\tcountError(\"frame_goaway_has_stream\")\n\t\treturn nil, ConnectionError(ErrCodeProtocol)\n\t}\n\tif len(p) < 8 {\n\t\tcountError(\"frame_goaway_short\")\n\t\treturn nil, ConnectionError(ErrCodeFrameSize)\n\t}\n\treturn &GoAwayFrame{\n\t\tFrameHeader:  fh,\n\t\tLastStreamID: binary.BigEndian.Uint32(p[:4]) & (1<<31 - 1),\n\t\tErrCode:      ErrCode(binary.BigEndian.Uint32(p[4:8])),\n\t\tdebugData:    p[8:],\n\t}, nil\n}\n\nfunc (f *Framer) WriteGoAway(maxStreamID uint32, code ErrCode, debugData []byte) error {\n\tf.startWrite(FrameGoAway, 0, 0)\n\tf.writeUint32(maxStreamID & (1<<31 - 1))\n\tf.writeUint32(uint32(code))\n\tf.writeBytes(debugData)\n\treturn f.endWrite()\n}\n\n// An UnknownFrame is the frame type returned when the frame type is unknown\n// or no specific frame type parser exists.\ntype UnknownFrame struct {\n\tFrameHeader\n\tp []byte\n}\n\n// Payload returns the frame's payload (after the header).  It is not\n// valid to call this method after a subsequent call to\n// Framer.ReadFrame, nor is it valid to retain the returned slice.\n// The memory is owned by the Framer and is invalidated when the next\n// frame is read.\nfunc (f *UnknownFrame) Payload() []byte {\n\tf.checkValid()\n\treturn f.p\n}\n\nfunc parseUnknownFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) {\n\treturn &UnknownFrame{fh, p}, nil\n}\n\n// A WindowUpdateFrame is used to implement flow control.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.9\ntype WindowUpdateFrame struct {\n\tFrameHeader\n\tIncrement uint32 // never read with high bit set\n}\n\nfunc parseWindowUpdateFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) {\n\tif len(p) != 4 {\n\t\tcountError(\"frame_windowupdate_bad_len\")\n\t\treturn nil, ConnectionError(ErrCodeFrameSize)\n\t}\n\tinc := binary.BigEndian.Uint32(p[:4]) & 0x7fffffff // mask off high reserved bit\n\tif inc == 0 {\n\t\t// A receiver MUST treat the receipt of a\n\t\t// WINDOW_UPDATE frame with an flow control window\n\t\t// increment of 0 as a stream error (Section 5.4.2) of\n\t\t// type PROTOCOL_ERROR; errors on the connection flow\n\t\t// control window MUST be treated as a connection\n\t\t// error (Section 5.4.1).\n\t\tif fh.StreamID == 0 {\n\t\t\tcountError(\"frame_windowupdate_zero_inc_conn\")\n\t\t\treturn nil, ConnectionError(ErrCodeProtocol)\n\t\t}\n\t\tcountError(\"frame_windowupdate_zero_inc_stream\")\n\t\treturn nil, streamError(fh.StreamID, ErrCodeProtocol)\n\t}\n\treturn &WindowUpdateFrame{\n\t\tFrameHeader: fh,\n\t\tIncrement:   inc,\n\t}, nil\n}\n\n// WriteWindowUpdate writes a WINDOW_UPDATE frame.\n// The increment value must be between 1 and 2,147,483,647, inclusive.\n// If the Stream ID is zero, the window update applies to the\n// connection as a whole.\nfunc (f *Framer) WriteWindowUpdate(streamID, incr uint32) error {\n\t// \"The legal range for the increment to the flow control window is 1 to 2^31-1 (2,147,483,647) octets.\"\n\tif (incr < 1 || incr > 2147483647) && !f.AllowIllegalWrites {\n\t\treturn errors.New(\"illegal window increment value\")\n\t}\n\tf.startWrite(FrameWindowUpdate, 0, streamID)\n\tf.writeUint32(incr)\n\treturn f.endWrite()\n}\n\n// A HeadersFrame is used to open a stream and additionally carries a\n// header block fragment.\ntype HeadersFrame struct {\n\tFrameHeader\n\n\t// Priority is set if FlagHeadersPriority is set in the FrameHeader.\n\tPriority PriorityParam\n\n\theaderFragBuf []byte // not owned\n}\n\nfunc (f *HeadersFrame) HeaderBlockFragment() []byte {\n\tf.checkValid()\n\treturn f.headerFragBuf\n}\n\nfunc (f *HeadersFrame) HeadersEnded() bool {\n\treturn f.FrameHeader.Flags.Has(FlagHeadersEndHeaders)\n}\n\nfunc (f *HeadersFrame) StreamEnded() bool {\n\treturn f.FrameHeader.Flags.Has(FlagHeadersEndStream)\n}\n\nfunc (f *HeadersFrame) HasPriority() bool {\n\treturn f.FrameHeader.Flags.Has(FlagHeadersPriority)\n}\n\nfunc parseHeadersFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (_ Frame, err error) {\n\thf := &HeadersFrame{\n\t\tFrameHeader: fh,\n\t}\n\tif fh.StreamID == 0 {\n\t\t// HEADERS frames MUST be associated with a stream. If a HEADERS frame\n\t\t// is received whose stream identifier field is 0x0, the recipient MUST\n\t\t// respond with a connection error (Section 5.4.1) of type\n\t\t// PROTOCOL_ERROR.\n\t\tcountError(\"frame_headers_zero_stream\")\n\t\treturn nil, connError{ErrCodeProtocol, \"HEADERS frame with stream ID 0\"}\n\t}\n\tvar padLength uint8\n\tif fh.Flags.Has(FlagHeadersPadded) {\n\t\tif p, padLength, err = readByte(p); err != nil {\n\t\t\tcountError(\"frame_headers_pad_short\")\n\t\t\treturn\n\t\t}\n\t}\n\tif fh.Flags.Has(FlagHeadersPriority) {\n\t\tvar v uint32\n\t\tp, v, err = readUint32(p)\n\t\tif err != nil {\n\t\t\tcountError(\"frame_headers_prio_short\")\n\t\t\treturn nil, err\n\t\t}\n\t\thf.Priority.StreamDep = v & 0x7fffffff\n\t\thf.Priority.Exclusive = (v != hf.Priority.StreamDep) // high bit was set\n\t\tp, hf.Priority.Weight, err = readByte(p)\n\t\tif err != nil {\n\t\t\tcountError(\"frame_headers_prio_weight_short\")\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif len(p)-int(padLength) < 0 {\n\t\tcountError(\"frame_headers_pad_too_big\")\n\t\treturn nil, streamError(fh.StreamID, ErrCodeProtocol)\n\t}\n\thf.headerFragBuf = p[:len(p)-int(padLength)]\n\treturn hf, nil\n}\n\n// HeadersFrameParam are the parameters for writing a HEADERS frame.\ntype HeadersFrameParam struct {\n\t// StreamID is the required Stream ID to initiate.\n\tStreamID uint32\n\t// BlockFragment is part (or all) of a Header Block.\n\tBlockFragment []byte\n\n\t// EndStream indicates that the header block is the last that\n\t// the endpoint will send for the identified stream. Setting\n\t// this flag causes the stream to enter one of \"half closed\"\n\t// states.\n\tEndStream bool\n\n\t// EndHeaders indicates that this frame contains an entire\n\t// header block and is not followed by any\n\t// CONTINUATION frames.\n\tEndHeaders bool\n\n\t// PadLength is the optional number of bytes of zeros to add\n\t// to this frame.\n\tPadLength uint8\n\n\t// Priority, if non-zero, includes stream priority information\n\t// in the HEADER frame.\n\tPriority PriorityParam\n}\n\n// WriteHeaders writes a single HEADERS frame.\n//\n// This is a low-level header writing method. Encoding headers and\n// splitting them into any necessary CONTINUATION frames is handled\n// elsewhere.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WriteHeaders(p HeadersFrameParam) error {\n\tif !validStreamID(p.StreamID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tvar flags Flags\n\tif p.PadLength != 0 {\n\t\tflags |= FlagHeadersPadded\n\t}\n\tif p.EndStream {\n\t\tflags |= FlagHeadersEndStream\n\t}\n\tif p.EndHeaders {\n\t\tflags |= FlagHeadersEndHeaders\n\t}\n\tif !p.Priority.IsZero() {\n\t\tflags |= FlagHeadersPriority\n\t}\n\tf.startWrite(FrameHeaders, flags, p.StreamID)\n\tif p.PadLength != 0 {\n\t\tf.writeByte(p.PadLength)\n\t}\n\tif !p.Priority.IsZero() {\n\t\tv := p.Priority.StreamDep\n\t\tif !validStreamIDOrZero(v) && !f.AllowIllegalWrites {\n\t\t\treturn errDepStreamID\n\t\t}\n\t\tif p.Priority.Exclusive {\n\t\t\tv |= 1 << 31\n\t\t}\n\t\tf.writeUint32(v)\n\t\tf.writeByte(p.Priority.Weight)\n\t}\n\tf.wbuf = append(f.wbuf, p.BlockFragment...)\n\tf.wbuf = append(f.wbuf, padZeros[:p.PadLength]...)\n\treturn f.endWrite()\n}\n\n// A PriorityFrame specifies the sender-advised priority of a stream.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.3\ntype PriorityFrame struct {\n\tFrameHeader\n\tPriorityParam\n}\n\n// defaultRFC9218Priority determines what priority we should use as the default\n// value.\n//\n// According to RFC 9218, by default, streams should be given an urgency of 3\n// and should be non-incremental. However, making streams non-incremental by\n// default would be a huge change to our historical behavior where we would\n// round-robin writes across streams. When streams are non-incremental, we\n// would process streams of the same urgency one-by-one to completion instead.\n//\n// To avoid such a sudden change which might break some HTTP/2 users, this\n// function allows the caller to specify whether they can actually use the\n// default value as specified in RFC 9218. If not, this function will return a\n// priority value where streams are incremental by default instead: effectively\n// a round-robin between stream of the same urgency.\n//\n// As an example, a server might not be able to use the RFC 9218 default value\n// when it's not sure that the client it is serving is aware of RFC 9218.\nfunc defaultRFC9218Priority(canUseDefault bool) PriorityParam {\n\tif canUseDefault {\n\t\treturn PriorityParam{\n\t\t\turgency:     3,\n\t\t\tincremental: 0,\n\t\t}\n\t}\n\treturn PriorityParam{\n\t\turgency:     3,\n\t\tincremental: 1,\n\t}\n}\n\n// Note that HTTP/2 has had two different prioritization schemes, and\n// PriorityParam struct below is a superset of both schemes. The exported\n// symbols are from RFC 7540 and the non-exported ones are from RFC 9218.\n\n// PriorityParam are the stream prioritization parameters.\ntype PriorityParam struct {\n\t// StreamDep is a 31-bit stream identifier for the\n\t// stream that this stream depends on. Zero means no\n\t// dependency.\n\tStreamDep uint32\n\n\t// Exclusive is whether the dependency is exclusive.\n\tExclusive bool\n\n\t// Weight is the stream's zero-indexed weight. It should be\n\t// set together with StreamDep, or neither should be set. Per\n\t// the spec, \"Add one to the value to obtain a weight between\n\t// 1 and 256.\"\n\tWeight uint8\n\n\t// \"The urgency (u) parameter value is Integer (see Section 3.3.1 of\n\t// [STRUCTURED-FIELDS]), between 0 and 7 inclusive, in descending order of\n\t// priority. The default is 3.\"\n\turgency uint8\n\n\t// \"The incremental (i) parameter value is Boolean (see Section 3.3.6 of\n\t// [STRUCTURED-FIELDS]). It indicates if an HTTP response can be processed\n\t// incrementally, i.e., provide some meaningful output as chunks of the\n\t// response arrive.\"\n\t//\n\t// We use uint8 (i.e. 0 is false, 1 is true) instead of bool so we can\n\t// avoid unnecessary type conversions and because either type takes 1 byte.\n\tincremental uint8\n}\n\nfunc (p PriorityParam) IsZero() bool {\n\treturn p == PriorityParam{}\n}\n\nfunc parsePriorityFrame(_ *frameCache, fh FrameHeader, countError func(string), payload []byte) (Frame, error) {\n\tif fh.StreamID == 0 {\n\t\tcountError(\"frame_priority_zero_stream\")\n\t\treturn nil, connError{ErrCodeProtocol, \"PRIORITY frame with stream ID 0\"}\n\t}\n\tif len(payload) != 5 {\n\t\tcountError(\"frame_priority_bad_length\")\n\t\treturn nil, connError{ErrCodeFrameSize, fmt.Sprintf(\"PRIORITY frame payload size was %d; want 5\", len(payload))}\n\t}\n\tv := binary.BigEndian.Uint32(payload[:4])\n\tstreamID := v & 0x7fffffff // mask off high bit\n\treturn &PriorityFrame{\n\t\tFrameHeader: fh,\n\t\tPriorityParam: PriorityParam{\n\t\t\tWeight:    payload[4],\n\t\t\tStreamDep: streamID,\n\t\t\tExclusive: streamID != v, // was high bit set?\n\t\t},\n\t}, nil\n}\n\n// WritePriority writes a PRIORITY frame.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WritePriority(streamID uint32, p PriorityParam) error {\n\tif !validStreamID(streamID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tif !validStreamIDOrZero(p.StreamDep) {\n\t\treturn errDepStreamID\n\t}\n\tf.startWrite(FramePriority, 0, streamID)\n\tv := p.StreamDep\n\tif p.Exclusive {\n\t\tv |= 1 << 31\n\t}\n\tf.writeUint32(v)\n\tf.writeByte(p.Weight)\n\treturn f.endWrite()\n}\n\n// PriorityUpdateFrame is a PRIORITY_UPDATE frame as described in\n// https://www.rfc-editor.org/rfc/rfc9218.html#name-the-priority_update-frame.\ntype PriorityUpdateFrame struct {\n\tFrameHeader\n\tPriority            string\n\tPrioritizedStreamID uint32\n}\n\nfunc parseRFC9218Priority(s string, canUseDefault bool) (p PriorityParam, ok bool) {\n\tp = defaultRFC9218Priority(canUseDefault)\n\tok = httpsfv.ParseDictionary(s, func(key, val, _ string) {\n\t\tswitch key {\n\t\tcase \"u\":\n\t\t\tif u, ok := httpsfv.ParseInteger(val); ok && u >= 0 && u <= 7 {\n\t\t\t\tp.urgency = uint8(u)\n\t\t\t}\n\t\tcase \"i\":\n\t\t\tif i, ok := httpsfv.ParseBoolean(val); ok {\n\t\t\t\tif i {\n\t\t\t\t\tp.incremental = 1\n\t\t\t\t} else {\n\t\t\t\t\tp.incremental = 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\tif !ok {\n\t\treturn defaultRFC9218Priority(canUseDefault), ok\n\t}\n\treturn p, true\n}\n\nfunc parsePriorityUpdateFrame(_ *frameCache, fh FrameHeader, countError func(string), payload []byte) (Frame, error) {\n\tif fh.StreamID != 0 {\n\t\tcountError(\"frame_priority_update_non_zero_stream\")\n\t\treturn nil, connError{ErrCodeProtocol, \"PRIORITY_UPDATE frame with non-zero stream ID\"}\n\t}\n\tif len(payload) < 4 {\n\t\tcountError(\"frame_priority_update_bad_length\")\n\t\treturn nil, connError{ErrCodeFrameSize, fmt.Sprintf(\"PRIORITY_UPDATE frame payload size was %d; want at least 4\", len(payload))}\n\t}\n\tv := binary.BigEndian.Uint32(payload[:4])\n\tstreamID := v & 0x7fffffff // mask off high bit\n\tif streamID == 0 {\n\t\tcountError(\"frame_priority_update_prioritizing_zero_stream\")\n\t\treturn nil, connError{ErrCodeProtocol, \"PRIORITY_UPDATE frame with prioritized stream ID of zero\"}\n\t}\n\treturn &PriorityUpdateFrame{\n\t\tFrameHeader:         fh,\n\t\tPrioritizedStreamID: streamID,\n\t\tPriority:            string(payload[4:]),\n\t}, nil\n}\n\n// WritePriorityUpdate writes a PRIORITY_UPDATE frame.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WritePriorityUpdate(streamID uint32, priority string) error {\n\tif !validStreamID(streamID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tf.startWrite(FramePriorityUpdate, 0, 0)\n\tf.writeUint32(streamID)\n\tf.writeBytes([]byte(priority))\n\treturn f.endWrite()\n}\n\n// A RSTStreamFrame allows for abnormal termination of a stream.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.4\ntype RSTStreamFrame struct {\n\tFrameHeader\n\tErrCode ErrCode\n}\n\nfunc parseRSTStreamFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) {\n\tif len(p) != 4 {\n\t\tcountError(\"frame_rststream_bad_len\")\n\t\treturn nil, ConnectionError(ErrCodeFrameSize)\n\t}\n\tif fh.StreamID == 0 {\n\t\tcountError(\"frame_rststream_zero_stream\")\n\t\treturn nil, ConnectionError(ErrCodeProtocol)\n\t}\n\treturn &RSTStreamFrame{fh, ErrCode(binary.BigEndian.Uint32(p[:4]))}, nil\n}\n\n// WriteRSTStream writes a RST_STREAM frame.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WriteRSTStream(streamID uint32, code ErrCode) error {\n\tif !validStreamID(streamID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tf.startWrite(FrameRSTStream, 0, streamID)\n\tf.writeUint32(uint32(code))\n\treturn f.endWrite()\n}\n\n// A ContinuationFrame is used to continue a sequence of header block fragments.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.10\ntype ContinuationFrame struct {\n\tFrameHeader\n\theaderFragBuf []byte\n}\n\nfunc parseContinuationFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) {\n\tif fh.StreamID == 0 {\n\t\tcountError(\"frame_continuation_zero_stream\")\n\t\treturn nil, connError{ErrCodeProtocol, \"CONTINUATION frame with stream ID 0\"}\n\t}\n\treturn &ContinuationFrame{fh, p}, nil\n}\n\nfunc (f *ContinuationFrame) HeaderBlockFragment() []byte {\n\tf.checkValid()\n\treturn f.headerFragBuf\n}\n\nfunc (f *ContinuationFrame) HeadersEnded() bool {\n\treturn f.FrameHeader.Flags.Has(FlagContinuationEndHeaders)\n}\n\n// WriteContinuation writes a CONTINUATION frame.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WriteContinuation(streamID uint32, endHeaders bool, headerBlockFragment []byte) error {\n\tif !validStreamID(streamID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tvar flags Flags\n\tif endHeaders {\n\t\tflags |= FlagContinuationEndHeaders\n\t}\n\tf.startWrite(FrameContinuation, flags, streamID)\n\tf.wbuf = append(f.wbuf, headerBlockFragment...)\n\treturn f.endWrite()\n}\n\n// A PushPromiseFrame is used to initiate a server stream.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.6\ntype PushPromiseFrame struct {\n\tFrameHeader\n\tPromiseID     uint32\n\theaderFragBuf []byte // not owned\n}\n\nfunc (f *PushPromiseFrame) HeaderBlockFragment() []byte {\n\tf.checkValid()\n\treturn f.headerFragBuf\n}\n\nfunc (f *PushPromiseFrame) HeadersEnded() bool {\n\treturn f.FrameHeader.Flags.Has(FlagPushPromiseEndHeaders)\n}\n\nfunc parsePushPromise(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (_ Frame, err error) {\n\tpp := &PushPromiseFrame{\n\t\tFrameHeader: fh,\n\t}\n\tif pp.StreamID == 0 {\n\t\t// PUSH_PROMISE frames MUST be associated with an existing,\n\t\t// peer-initiated stream. The stream identifier of a\n\t\t// PUSH_PROMISE frame indicates the stream it is associated\n\t\t// with. If the stream identifier field specifies the value\n\t\t// 0x0, a recipient MUST respond with a connection error\n\t\t// (Section 5.4.1) of type PROTOCOL_ERROR.\n\t\tcountError(\"frame_pushpromise_zero_stream\")\n\t\treturn nil, ConnectionError(ErrCodeProtocol)\n\t}\n\t// The PUSH_PROMISE frame includes optional padding.\n\t// Padding fields and flags are identical to those defined for DATA frames\n\tvar padLength uint8\n\tif fh.Flags.Has(FlagPushPromisePadded) {\n\t\tif p, padLength, err = readByte(p); err != nil {\n\t\t\tcountError(\"frame_pushpromise_pad_short\")\n\t\t\treturn\n\t\t}\n\t}\n\n\tp, pp.PromiseID, err = readUint32(p)\n\tif err != nil {\n\t\tcountError(\"frame_pushpromise_promiseid_short\")\n\t\treturn\n\t}\n\tpp.PromiseID = pp.PromiseID & (1<<31 - 1)\n\n\tif int(padLength) > len(p) {\n\t\t// like the DATA frame, error out if padding is longer than the body.\n\t\tcountError(\"frame_pushpromise_pad_too_big\")\n\t\treturn nil, ConnectionError(ErrCodeProtocol)\n\t}\n\tpp.headerFragBuf = p[:len(p)-int(padLength)]\n\treturn pp, nil\n}\n\n// PushPromiseParam are the parameters for writing a PUSH_PROMISE frame.\ntype PushPromiseParam struct {\n\t// StreamID is the required Stream ID to initiate.\n\tStreamID uint32\n\n\t// PromiseID is the required Stream ID which this\n\t// Push Promises\n\tPromiseID uint32\n\n\t// BlockFragment is part (or all) of a Header Block.\n\tBlockFragment []byte\n\n\t// EndHeaders indicates that this frame contains an entire\n\t// header block and is not followed by any\n\t// CONTINUATION frames.\n\tEndHeaders bool\n\n\t// PadLength is the optional number of bytes of zeros to add\n\t// to this frame.\n\tPadLength uint8\n}\n\n// WritePushPromise writes a single PushPromise Frame.\n//\n// As with Header Frames, This is the low level call for writing\n// individual frames. Continuation frames are handled elsewhere.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WritePushPromise(p PushPromiseParam) error {\n\tif !validStreamID(p.StreamID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tvar flags Flags\n\tif p.PadLength != 0 {\n\t\tflags |= FlagPushPromisePadded\n\t}\n\tif p.EndHeaders {\n\t\tflags |= FlagPushPromiseEndHeaders\n\t}\n\tf.startWrite(FramePushPromise, flags, p.StreamID)\n\tif p.PadLength != 0 {\n\t\tf.writeByte(p.PadLength)\n\t}\n\tif !validStreamID(p.PromiseID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tf.writeUint32(p.PromiseID)\n\tf.wbuf = append(f.wbuf, p.BlockFragment...)\n\tf.wbuf = append(f.wbuf, padZeros[:p.PadLength]...)\n\treturn f.endWrite()\n}\n\n// WriteRawFrame writes a raw frame. This can be used to write\n// extension frames unknown to this package.\nfunc (f *Framer) WriteRawFrame(t FrameType, flags Flags, streamID uint32, payload []byte) error {\n\tf.startWrite(t, flags, streamID)\n\tf.writeBytes(payload)\n\treturn f.endWrite()\n}\n\nfunc readByte(p []byte) (remain []byte, b byte, err error) {\n\tif len(p) == 0 {\n\t\treturn nil, 0, io.ErrUnexpectedEOF\n\t}\n\treturn p[1:], p[0], nil\n}\n\nfunc readUint32(p []byte) (remain []byte, v uint32, err error) {\n\tif len(p) < 4 {\n\t\treturn nil, 0, io.ErrUnexpectedEOF\n\t}\n\treturn p[4:], binary.BigEndian.Uint32(p[:4]), nil\n}\n\ntype streamEnder interface {\n\tStreamEnded() bool\n}\n\ntype headersEnder interface {\n\tHeadersEnded() bool\n}\n\ntype headersOrContinuation interface {\n\theadersEnder\n\tHeaderBlockFragment() []byte\n}\n\n// A MetaHeadersFrame is the representation of one HEADERS frame and\n// zero or more contiguous CONTINUATION frames and the decoding of\n// their HPACK-encoded contents.\n//\n// This type of frame does not appear on the wire and is only returned\n// by the Framer when Framer.ReadMetaHeaders is set.\ntype MetaHeadersFrame struct {\n\t*HeadersFrame\n\n\t// Fields are the fields contained in the HEADERS and\n\t// CONTINUATION frames. The underlying slice is owned by the\n\t// Framer and must not be retained after the next call to\n\t// ReadFrame.\n\t//\n\t// Fields are guaranteed to be in the correct http2 order and\n\t// not have unknown pseudo header fields or invalid header\n\t// field names or values. Required pseudo header fields may be\n\t// missing, however. Use the MetaHeadersFrame.Pseudo accessor\n\t// method access pseudo headers.\n\tFields []hpack.HeaderField\n\n\t// Truncated is whether the max header list size limit was hit\n\t// and Fields is incomplete. The hpack decoder state is still\n\t// valid, however.\n\tTruncated bool\n}\n\n// PseudoValue returns the given pseudo header field's value.\n// The provided pseudo field should not contain the leading colon.\nfunc (mh *MetaHeadersFrame) PseudoValue(pseudo string) string {\n\tfor _, hf := range mh.Fields {\n\t\tif !hf.IsPseudo() {\n\t\t\treturn \"\"\n\t\t}\n\t\tif hf.Name[1:] == pseudo {\n\t\t\treturn hf.Value\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// RegularFields returns the regular (non-pseudo) header fields of mh.\n// The caller does not own the returned slice.\nfunc (mh *MetaHeadersFrame) RegularFields() []hpack.HeaderField {\n\tfor i, hf := range mh.Fields {\n\t\tif !hf.IsPseudo() {\n\t\t\treturn mh.Fields[i:]\n\t\t}\n\t}\n\treturn nil\n}\n\n// PseudoFields returns the pseudo header fields of mh.\n// The caller does not own the returned slice.\nfunc (mh *MetaHeadersFrame) PseudoFields() []hpack.HeaderField {\n\tfor i, hf := range mh.Fields {\n\t\tif !hf.IsPseudo() {\n\t\t\treturn mh.Fields[:i]\n\t\t}\n\t}\n\treturn mh.Fields\n}\n\nfunc (mh *MetaHeadersFrame) rfc9218Priority(priorityAware bool) (p PriorityParam, priorityAwareAfter, hasIntermediary bool) {\n\tvar s string\n\tfor _, field := range mh.Fields {\n\t\tif field.Name == \"priority\" {\n\t\t\ts = field.Value\n\t\t\tpriorityAware = true\n\t\t}\n\t\tif slices.Contains([]string{\"via\", \"forwarded\", \"x-forwarded-for\"}, field.Name) {\n\t\t\thasIntermediary = true\n\t\t}\n\t}\n\t// No need to check for ok. parseRFC9218Priority will return a default\n\t// value if there is no priority field or if the field cannot be parsed.\n\tp, _ = parseRFC9218Priority(s, priorityAware && !hasIntermediary)\n\treturn p, priorityAware, hasIntermediary\n}\n\nfunc (mh *MetaHeadersFrame) checkPseudos() error {\n\tvar isRequest, isResponse bool\n\tpf := mh.PseudoFields()\n\tfor i, hf := range pf {\n\t\tswitch hf.Name {\n\t\tcase \":method\", \":path\", \":scheme\", \":authority\", \":protocol\":\n\t\t\tisRequest = true\n\t\tcase \":status\":\n\t\t\tisResponse = true\n\t\tdefault:\n\t\t\treturn pseudoHeaderError(hf.Name)\n\t\t}\n\t\t// Check for duplicates.\n\t\t// This would be a bad algorithm, but N is 5.\n\t\t// And this doesn't allocate.\n\t\tfor _, hf2 := range pf[:i] {\n\t\t\tif hf.Name == hf2.Name {\n\t\t\t\treturn duplicatePseudoHeaderError(hf.Name)\n\t\t\t}\n\t\t}\n\t}\n\tif isRequest && isResponse {\n\t\treturn errMixPseudoHeaderTypes\n\t}\n\treturn nil\n}\n\nfunc (fr *Framer) maxHeaderStringLen() int {\n\tv := int(fr.maxHeaderListSize())\n\tif v < 0 {\n\t\t// If maxHeaderListSize overflows an int, use no limit (0).\n\t\treturn 0\n\t}\n\treturn v\n}\n\n// readMetaFrame returns 0 or more CONTINUATION frames from fr and\n// merge them into the provided hf and returns a MetaHeadersFrame\n// with the decoded hpack values.\nfunc (fr *Framer) readMetaFrame(hf *HeadersFrame) (Frame, error) {\n\tif fr.AllowIllegalReads {\n\t\treturn nil, errors.New(\"illegal use of AllowIllegalReads with ReadMetaHeaders\")\n\t}\n\tmh := &MetaHeadersFrame{\n\t\tHeadersFrame: hf,\n\t}\n\tvar remainSize = fr.maxHeaderListSize()\n\tvar sawRegular bool\n\n\tvar invalid error // pseudo header field errors\n\thdec := fr.ReadMetaHeaders\n\thdec.SetEmitEnabled(true)\n\thdec.SetMaxStringLength(fr.maxHeaderStringLen())\n\thdec.SetEmitFunc(func(hf hpack.HeaderField) {\n\t\tif VerboseLogs && fr.logReads {\n\t\t\tfr.debugReadLoggerf(\"http2: decoded hpack field %+v\", hf)\n\t\t}\n\t\tif !httpguts.ValidHeaderFieldValue(hf.Value) {\n\t\t\t// Don't include the value in the error, because it may be sensitive.\n\t\t\tinvalid = headerFieldValueError(hf.Name)\n\t\t}\n\t\tisPseudo := strings.HasPrefix(hf.Name, \":\")\n\t\tif isPseudo {\n\t\t\tif sawRegular {\n\t\t\t\tinvalid = errPseudoAfterRegular\n\t\t\t}\n\t\t} else {\n\t\t\tsawRegular = true\n\t\t\tif !validWireHeaderFieldName(hf.Name) {\n\t\t\t\tinvalid = headerFieldNameError(hf.Name)\n\t\t\t}\n\t\t}\n\n\t\tif invalid != nil {\n\t\t\thdec.SetEmitEnabled(false)\n\t\t\treturn\n\t\t}\n\n\t\tsize := hf.Size()\n\t\tif size > remainSize {\n\t\t\thdec.SetEmitEnabled(false)\n\t\t\tmh.Truncated = true\n\t\t\tremainSize = 0\n\t\t\treturn\n\t\t}\n\t\tremainSize -= size\n\n\t\tmh.Fields = append(mh.Fields, hf)\n\t})\n\t// Lose reference to MetaHeadersFrame:\n\tdefer hdec.SetEmitFunc(func(hf hpack.HeaderField) {})\n\n\tvar hc headersOrContinuation = hf\n\tfor {\n\t\tfrag := hc.HeaderBlockFragment()\n\n\t\t// Avoid parsing large amounts of headers that we will then discard.\n\t\t// If the sender exceeds the max header list size by too much,\n\t\t// skip parsing the fragment and close the connection.\n\t\t//\n\t\t// \"Too much\" is either any CONTINUATION frame after we've already\n\t\t// exceeded the max header list size (in which case remainSize is 0),\n\t\t// or a frame whose encoded size is more than twice the remaining\n\t\t// header list bytes we're willing to accept.\n\t\tif int64(len(frag)) > int64(2*remainSize) {\n\t\t\tif VerboseLogs {\n\t\t\t\tlog.Printf(\"http2: header list too large\")\n\t\t\t}\n\t\t\t// It would be nice to send a RST_STREAM before sending the GOAWAY,\n\t\t\t// but the structure of the server's frame writer makes this difficult.\n\t\t\treturn mh, ConnectionError(ErrCodeProtocol)\n\t\t}\n\n\t\t// Also close the connection after any CONTINUATION frame following an\n\t\t// invalid header, since we stop tracking the size of the headers after\n\t\t// an invalid one.\n\t\tif invalid != nil {\n\t\t\tif VerboseLogs {\n\t\t\t\tlog.Printf(\"http2: invalid header: %v\", invalid)\n\t\t\t}\n\t\t\t// It would be nice to send a RST_STREAM before sending the GOAWAY,\n\t\t\t// but the structure of the server's frame writer makes this difficult.\n\t\t\treturn mh, ConnectionError(ErrCodeProtocol)\n\t\t}\n\n\t\tif _, err := hdec.Write(frag); err != nil {\n\t\t\treturn mh, ConnectionError(ErrCodeCompression)\n\t\t}\n\n\t\tif hc.HeadersEnded() {\n\t\t\tbreak\n\t\t}\n\t\tif f, err := fr.ReadFrame(); err != nil {\n\t\t\treturn nil, err\n\t\t} else {\n\t\t\thc = f.(*ContinuationFrame) // guaranteed by checkFrameOrder\n\t\t}\n\t}\n\n\tmh.HeadersFrame.headerFragBuf = nil\n\tmh.HeadersFrame.invalidate()\n\n\tif err := hdec.Close(); err != nil {\n\t\treturn mh, ConnectionError(ErrCodeCompression)\n\t}\n\tif invalid != nil {\n\t\tfr.errDetail = invalid\n\t\tif VerboseLogs {\n\t\t\tlog.Printf(\"http2: invalid header: %v\", invalid)\n\t\t}\n\t\treturn nil, StreamError{mh.StreamID, ErrCodeProtocol, invalid}\n\t}\n\tif err := mh.checkPseudos(); err != nil {\n\t\tfr.errDetail = err\n\t\tif VerboseLogs {\n\t\t\tlog.Printf(\"http2: invalid pseudo headers: %v\", err)\n\t\t}\n\t\treturn nil, StreamError{mh.StreamID, ErrCodeProtocol, err}\n\t}\n\treturn mh, nil\n}\n\nfunc summarizeFrame(f Frame) string {\n\tvar buf bytes.Buffer\n\tf.Header().writeDebug(&buf)\n\tswitch f := f.(type) {\n\tcase *SettingsFrame:\n\t\tn := 0\n\t\tf.ForeachSetting(func(s Setting) error {\n\t\t\tn++\n\t\t\tif n == 1 {\n\t\t\t\tbuf.WriteString(\", settings:\")\n\t\t\t}\n\t\t\tfmt.Fprintf(&buf, \" %v=%v,\", s.ID, s.Val)\n\t\t\treturn nil\n\t\t})\n\t\tif n > 0 {\n\t\t\tbuf.Truncate(buf.Len() - 1) // remove trailing comma\n\t\t}\n\tcase *DataFrame:\n\t\tdata := f.Data()\n\t\tconst max = 256\n\t\tif len(data) > max {\n\t\t\tdata = data[:max]\n\t\t}\n\t\tfmt.Fprintf(&buf, \" data=%q\", data)\n\t\tif len(f.Data()) > max {\n\t\t\tfmt.Fprintf(&buf, \" (%d bytes omitted)\", len(f.Data())-max)\n\t\t}\n\tcase *WindowUpdateFrame:\n\t\tif f.StreamID == 0 {\n\t\t\tbuf.WriteString(\" (conn)\")\n\t\t}\n\t\tfmt.Fprintf(&buf, \" incr=%v\", f.Increment)\n\tcase *PingFrame:\n\t\tfmt.Fprintf(&buf, \" ping=%q\", f.Data[:])\n\tcase *GoAwayFrame:\n\t\tfmt.Fprintf(&buf, \" LastStreamID=%v ErrCode=%v Debug=%q\",\n\t\t\tf.LastStreamID, f.ErrCode, f.debugData)\n\tcase *RSTStreamFrame:\n\t\tfmt.Fprintf(&buf, \" ErrCode=%v\", f.ErrCode)\n\t}\n\treturn buf.String()\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/gotrack.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Defensive debug-only utility to track that functions run on the\n// goroutine that they're supposed to.\n\npackage http2\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"sync\"\n\t\"sync/atomic\"\n)\n\nvar DebugGoroutines = os.Getenv(\"DEBUG_HTTP2_GOROUTINES\") == \"1\"\n\n// Setting DebugGoroutines to false during a test to disable goroutine debugging\n// results in race detector complaints when a test leaves goroutines running before\n// returning. Tests shouldn't do this, of course, but when they do it generally shows\n// up as infrequent, hard-to-debug flakes. (See #66519.)\n//\n// Disable goroutine debugging during individual tests with an atomic bool.\n// (Note that it's safe to enable/disable debugging mid-test, so the actual race condition\n// here is harmless.)\nvar disableDebugGoroutines atomic.Bool\n\ntype goroutineLock uint64\n\nfunc newGoroutineLock() goroutineLock {\n\tif !DebugGoroutines || disableDebugGoroutines.Load() {\n\t\treturn 0\n\t}\n\treturn goroutineLock(curGoroutineID())\n}\n\nfunc (g goroutineLock) check() {\n\tif !DebugGoroutines || disableDebugGoroutines.Load() {\n\t\treturn\n\t}\n\tif curGoroutineID() != uint64(g) {\n\t\tpanic(\"running on the wrong goroutine\")\n\t}\n}\n\nfunc (g goroutineLock) checkNotOn() {\n\tif !DebugGoroutines || disableDebugGoroutines.Load() {\n\t\treturn\n\t}\n\tif curGoroutineID() == uint64(g) {\n\t\tpanic(\"running on the wrong goroutine\")\n\t}\n}\n\nvar goroutineSpace = []byte(\"goroutine \")\n\nfunc curGoroutineID() uint64 {\n\tbp := littleBuf.Get().(*[]byte)\n\tdefer littleBuf.Put(bp)\n\tb := *bp\n\tb = b[:runtime.Stack(b, false)]\n\t// Parse the 4707 out of \"goroutine 4707 [\"\n\tb = bytes.TrimPrefix(b, goroutineSpace)\n\ti := bytes.IndexByte(b, ' ')\n\tif i < 0 {\n\t\tpanic(fmt.Sprintf(\"No space found in %q\", b))\n\t}\n\tb = b[:i]\n\tn, err := parseUintBytes(b, 10, 64)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"Failed to parse goroutine ID out of %q: %v\", b, err))\n\t}\n\treturn n\n}\n\nvar littleBuf = sync.Pool{\n\tNew: func() interface{} {\n\t\tbuf := make([]byte, 64)\n\t\treturn &buf\n\t},\n}\n\n// parseUintBytes is like strconv.ParseUint, but using a []byte.\nfunc parseUintBytes(s []byte, base int, bitSize int) (n uint64, err error) {\n\tvar cutoff, maxVal uint64\n\n\tif bitSize == 0 {\n\t\tbitSize = int(strconv.IntSize)\n\t}\n\n\ts0 := s\n\tswitch {\n\tcase len(s) < 1:\n\t\terr = strconv.ErrSyntax\n\t\tgoto Error\n\n\tcase 2 <= base && base <= 36:\n\t\t// valid base; nothing to do\n\n\tcase base == 0:\n\t\t// Look for octal, hex prefix.\n\t\tswitch {\n\t\tcase s[0] == '0' && len(s) > 1 && (s[1] == 'x' || s[1] == 'X'):\n\t\t\tbase = 16\n\t\t\ts = s[2:]\n\t\t\tif len(s) < 1 {\n\t\t\t\terr = strconv.ErrSyntax\n\t\t\t\tgoto Error\n\t\t\t}\n\t\tcase s[0] == '0':\n\t\t\tbase = 8\n\t\tdefault:\n\t\t\tbase = 10\n\t\t}\n\n\tdefault:\n\t\terr = errors.New(\"invalid base \" + strconv.Itoa(base))\n\t\tgoto Error\n\t}\n\n\tn = 0\n\tcutoff = cutoff64(base)\n\tmaxVal = 1<<uint(bitSize) - 1\n\n\tfor i := 0; i < len(s); i++ {\n\t\tvar v byte\n\t\td := s[i]\n\t\tswitch {\n\t\tcase '0' <= d && d <= '9':\n\t\t\tv = d - '0'\n\t\tcase 'a' <= d && d <= 'z':\n\t\t\tv = d - 'a' + 10\n\t\tcase 'A' <= d && d <= 'Z':\n\t\t\tv = d - 'A' + 10\n\t\tdefault:\n\t\t\tn = 0\n\t\t\terr = strconv.ErrSyntax\n\t\t\tgoto Error\n\t\t}\n\t\tif int(v) >= base {\n\t\t\tn = 0\n\t\t\terr = strconv.ErrSyntax\n\t\t\tgoto Error\n\t\t}\n\n\t\tif n >= cutoff {\n\t\t\t// n*base overflows\n\t\t\tn = 1<<64 - 1\n\t\t\terr = strconv.ErrRange\n\t\t\tgoto Error\n\t\t}\n\t\tn *= uint64(base)\n\n\t\tn1 := n + uint64(v)\n\t\tif n1 < n || n1 > maxVal {\n\t\t\t// n+v overflows\n\t\t\tn = 1<<64 - 1\n\t\t\terr = strconv.ErrRange\n\t\t\tgoto Error\n\t\t}\n\t\tn = n1\n\t}\n\n\treturn n, nil\n\nError:\n\treturn n, &strconv.NumError{Func: \"ParseUint\", Num: string(s0), Err: err}\n}\n\n// Return the first number n such that n*base >= 1<<64.\nfunc cutoff64(base int) uint64 {\n\tif base < 2 {\n\t\treturn 0\n\t}\n\treturn (1<<64-1)/uint64(base) + 1\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/hpack/encode.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage hpack\n\nimport (\n\t\"io\"\n)\n\nconst (\n\tuint32Max              = ^uint32(0)\n\tinitialHeaderTableSize = 4096\n)\n\ntype Encoder struct {\n\tdynTab dynamicTable\n\t// minSize is the minimum table size set by\n\t// SetMaxDynamicTableSize after the previous Header Table Size\n\t// Update.\n\tminSize uint32\n\t// maxSizeLimit is the maximum table size this encoder\n\t// supports. This will protect the encoder from too large\n\t// size.\n\tmaxSizeLimit uint32\n\t// tableSizeUpdate indicates whether \"Header Table Size\n\t// Update\" is required.\n\ttableSizeUpdate bool\n\tw               io.Writer\n\tbuf             []byte\n}\n\n// NewEncoder returns a new Encoder which performs HPACK encoding. An\n// encoded data is written to w.\nfunc NewEncoder(w io.Writer) *Encoder {\n\te := &Encoder{\n\t\tminSize:         uint32Max,\n\t\tmaxSizeLimit:    initialHeaderTableSize,\n\t\ttableSizeUpdate: false,\n\t\tw:               w,\n\t}\n\te.dynTab.table.init()\n\te.dynTab.setMaxSize(initialHeaderTableSize)\n\treturn e\n}\n\n// WriteField encodes f into a single Write to e's underlying Writer.\n// This function may also produce bytes for \"Header Table Size Update\"\n// if necessary. If produced, it is done before encoding f.\nfunc (e *Encoder) WriteField(f HeaderField) error {\n\te.buf = e.buf[:0]\n\n\tif e.tableSizeUpdate {\n\t\te.tableSizeUpdate = false\n\t\tif e.minSize < e.dynTab.maxSize {\n\t\t\te.buf = appendTableSize(e.buf, e.minSize)\n\t\t}\n\t\te.minSize = uint32Max\n\t\te.buf = appendTableSize(e.buf, e.dynTab.maxSize)\n\t}\n\n\tidx, nameValueMatch := e.searchTable(f)\n\tif nameValueMatch {\n\t\te.buf = appendIndexed(e.buf, idx)\n\t} else {\n\t\tindexing := e.shouldIndex(f)\n\t\tif indexing {\n\t\t\te.dynTab.add(f)\n\t\t}\n\n\t\tif idx == 0 {\n\t\t\te.buf = appendNewName(e.buf, f, indexing)\n\t\t} else {\n\t\t\te.buf = appendIndexedName(e.buf, f, idx, indexing)\n\t\t}\n\t}\n\tn, err := e.w.Write(e.buf)\n\tif err == nil && n != len(e.buf) {\n\t\terr = io.ErrShortWrite\n\t}\n\treturn err\n}\n\n// searchTable searches f in both stable and dynamic header tables.\n// The static header table is searched first. Only when there is no\n// exact match for both name and value, the dynamic header table is\n// then searched. If there is no match, i is 0. If both name and value\n// match, i is the matched index and nameValueMatch becomes true. If\n// only name matches, i points to that index and nameValueMatch\n// becomes false.\nfunc (e *Encoder) searchTable(f HeaderField) (i uint64, nameValueMatch bool) {\n\ti, nameValueMatch = staticTable.search(f)\n\tif nameValueMatch {\n\t\treturn i, true\n\t}\n\n\tj, nameValueMatch := e.dynTab.table.search(f)\n\tif nameValueMatch || (i == 0 && j != 0) {\n\t\treturn j + uint64(staticTable.len()), nameValueMatch\n\t}\n\n\treturn i, false\n}\n\n// SetMaxDynamicTableSize changes the dynamic header table size to v.\n// The actual size is bounded by the value passed to\n// SetMaxDynamicTableSizeLimit.\nfunc (e *Encoder) SetMaxDynamicTableSize(v uint32) {\n\tif v > e.maxSizeLimit {\n\t\tv = e.maxSizeLimit\n\t}\n\tif v < e.minSize {\n\t\te.minSize = v\n\t}\n\te.tableSizeUpdate = true\n\te.dynTab.setMaxSize(v)\n}\n\n// MaxDynamicTableSize returns the current dynamic header table size.\nfunc (e *Encoder) MaxDynamicTableSize() (v uint32) {\n\treturn e.dynTab.maxSize\n}\n\n// SetMaxDynamicTableSizeLimit changes the maximum value that can be\n// specified in SetMaxDynamicTableSize to v. By default, it is set to\n// 4096, which is the same size of the default dynamic header table\n// size described in HPACK specification. If the current maximum\n// dynamic header table size is strictly greater than v, \"Header Table\n// Size Update\" will be done in the next WriteField call and the\n// maximum dynamic header table size is truncated to v.\nfunc (e *Encoder) SetMaxDynamicTableSizeLimit(v uint32) {\n\te.maxSizeLimit = v\n\tif e.dynTab.maxSize > v {\n\t\te.tableSizeUpdate = true\n\t\te.dynTab.setMaxSize(v)\n\t}\n}\n\n// shouldIndex reports whether f should be indexed.\nfunc (e *Encoder) shouldIndex(f HeaderField) bool {\n\treturn !f.Sensitive && f.Size() <= e.dynTab.maxSize\n}\n\n// appendIndexed appends index i, as encoded in \"Indexed Header Field\"\n// representation, to dst and returns the extended buffer.\nfunc appendIndexed(dst []byte, i uint64) []byte {\n\tfirst := len(dst)\n\tdst = appendVarInt(dst, 7, i)\n\tdst[first] |= 0x80\n\treturn dst\n}\n\n// appendNewName appends f, as encoded in one of \"Literal Header field\n// - New Name\" representation variants, to dst and returns the\n// extended buffer.\n//\n// If f.Sensitive is true, \"Never Indexed\" representation is used. If\n// f.Sensitive is false and indexing is true, \"Incremental Indexing\"\n// representation is used.\nfunc appendNewName(dst []byte, f HeaderField, indexing bool) []byte {\n\tdst = append(dst, encodeTypeByte(indexing, f.Sensitive))\n\tdst = appendHpackString(dst, f.Name)\n\treturn appendHpackString(dst, f.Value)\n}\n\n// appendIndexedName appends f and index i referring indexed name\n// entry, as encoded in one of \"Literal Header field - Indexed Name\"\n// representation variants, to dst and returns the extended buffer.\n//\n// If f.Sensitive is true, \"Never Indexed\" representation is used. If\n// f.Sensitive is false and indexing is true, \"Incremental Indexing\"\n// representation is used.\nfunc appendIndexedName(dst []byte, f HeaderField, i uint64, indexing bool) []byte {\n\tfirst := len(dst)\n\tvar n byte\n\tif indexing {\n\t\tn = 6\n\t} else {\n\t\tn = 4\n\t}\n\tdst = appendVarInt(dst, n, i)\n\tdst[first] |= encodeTypeByte(indexing, f.Sensitive)\n\treturn appendHpackString(dst, f.Value)\n}\n\n// appendTableSize appends v, as encoded in \"Header Table Size Update\"\n// representation, to dst and returns the extended buffer.\nfunc appendTableSize(dst []byte, v uint32) []byte {\n\tfirst := len(dst)\n\tdst = appendVarInt(dst, 5, uint64(v))\n\tdst[first] |= 0x20\n\treturn dst\n}\n\n// appendVarInt appends i, as encoded in variable integer form using n\n// bit prefix, to dst and returns the extended buffer.\n//\n// See\n// https://httpwg.org/specs/rfc7541.html#integer.representation\nfunc appendVarInt(dst []byte, n byte, i uint64) []byte {\n\tk := uint64((1 << n) - 1)\n\tif i < k {\n\t\treturn append(dst, byte(i))\n\t}\n\tdst = append(dst, byte(k))\n\ti -= k\n\tfor ; i >= 128; i >>= 7 {\n\t\tdst = append(dst, byte(0x80|(i&0x7f)))\n\t}\n\treturn append(dst, byte(i))\n}\n\n// appendHpackString appends s, as encoded in \"String Literal\"\n// representation, to dst and returns the extended buffer.\n//\n// s will be encoded in Huffman codes only when it produces strictly\n// shorter byte string.\nfunc appendHpackString(dst []byte, s string) []byte {\n\thuffmanLength := HuffmanEncodeLength(s)\n\tif huffmanLength < uint64(len(s)) {\n\t\tfirst := len(dst)\n\t\tdst = appendVarInt(dst, 7, huffmanLength)\n\t\tdst = AppendHuffmanString(dst, s)\n\t\tdst[first] |= 0x80\n\t} else {\n\t\tdst = appendVarInt(dst, 7, uint64(len(s)))\n\t\tdst = append(dst, s...)\n\t}\n\treturn dst\n}\n\n// encodeTypeByte returns type byte. If sensitive is true, type byte\n// for \"Never Indexed\" representation is returned. If sensitive is\n// false and indexing is true, type byte for \"Incremental Indexing\"\n// representation is returned. Otherwise, type byte for \"Without\n// Indexing\" is returned.\nfunc encodeTypeByte(indexing, sensitive bool) byte {\n\tif sensitive {\n\t\treturn 0x10\n\t}\n\tif indexing {\n\t\treturn 0x40\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/hpack/hpack.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package hpack implements HPACK, a compression format for\n// efficiently representing HTTP header fields in the context of HTTP/2.\n//\n// See http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-09\npackage hpack\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n)\n\n// A DecodingError is something the spec defines as a decoding error.\ntype DecodingError struct {\n\tErr error\n}\n\nfunc (de DecodingError) Error() string {\n\treturn fmt.Sprintf(\"decoding error: %v\", de.Err)\n}\n\n// An InvalidIndexError is returned when an encoder references a table\n// entry before the static table or after the end of the dynamic table.\ntype InvalidIndexError int\n\nfunc (e InvalidIndexError) Error() string {\n\treturn fmt.Sprintf(\"invalid indexed representation index %d\", int(e))\n}\n\n// A HeaderField is a name-value pair. Both the name and value are\n// treated as opaque sequences of octets.\ntype HeaderField struct {\n\tName, Value string\n\n\t// Sensitive means that this header field should never be\n\t// indexed.\n\tSensitive bool\n}\n\n// IsPseudo reports whether the header field is an http2 pseudo header.\n// That is, it reports whether it starts with a colon.\n// It is not otherwise guaranteed to be a valid pseudo header field,\n// though.\nfunc (hf HeaderField) IsPseudo() bool {\n\treturn len(hf.Name) != 0 && hf.Name[0] == ':'\n}\n\nfunc (hf HeaderField) String() string {\n\tvar suffix string\n\tif hf.Sensitive {\n\t\tsuffix = \" (sensitive)\"\n\t}\n\treturn fmt.Sprintf(\"header field %q = %q%s\", hf.Name, hf.Value, suffix)\n}\n\n// Size returns the size of an entry per RFC 7541 section 4.1.\nfunc (hf HeaderField) Size() uint32 {\n\t// https://httpwg.org/specs/rfc7541.html#rfc.section.4.1\n\t// \"The size of the dynamic table is the sum of the size of\n\t// its entries. The size of an entry is the sum of its name's\n\t// length in octets (as defined in Section 5.2), its value's\n\t// length in octets (see Section 5.2), plus 32.  The size of\n\t// an entry is calculated using the length of the name and\n\t// value without any Huffman encoding applied.\"\n\n\t// This can overflow if somebody makes a large HeaderField\n\t// Name and/or Value by hand, but we don't care, because that\n\t// won't happen on the wire because the encoding doesn't allow\n\t// it.\n\treturn uint32(len(hf.Name) + len(hf.Value) + 32)\n}\n\n// A Decoder is the decoding context for incremental processing of\n// header blocks.\ntype Decoder struct {\n\tdynTab dynamicTable\n\temit   func(f HeaderField)\n\n\temitEnabled bool // whether calls to emit are enabled\n\tmaxStrLen   int  // 0 means unlimited\n\n\t// buf is the unparsed buffer. It's only written to\n\t// saveBuf if it was truncated in the middle of a header\n\t// block. Because it's usually not owned, we can only\n\t// process it under Write.\n\tbuf []byte // not owned; only valid during Write\n\n\t// saveBuf is previous data passed to Write which we weren't able\n\t// to fully parse before. Unlike buf, we own this data.\n\tsaveBuf bytes.Buffer\n\n\tfirstField bool // processing the first field of the header block\n}\n\n// NewDecoder returns a new decoder with the provided maximum dynamic\n// table size. The emitFunc will be called for each valid field\n// parsed, in the same goroutine as calls to Write, before Write returns.\nfunc NewDecoder(maxDynamicTableSize uint32, emitFunc func(f HeaderField)) *Decoder {\n\td := &Decoder{\n\t\temit:        emitFunc,\n\t\temitEnabled: true,\n\t\tfirstField:  true,\n\t}\n\td.dynTab.table.init()\n\td.dynTab.allowedMaxSize = maxDynamicTableSize\n\td.dynTab.setMaxSize(maxDynamicTableSize)\n\treturn d\n}\n\n// ErrStringLength is returned by Decoder.Write when the max string length\n// (as configured by Decoder.SetMaxStringLength) would be violated.\nvar ErrStringLength = errors.New(\"hpack: string too long\")\n\n// SetMaxStringLength sets the maximum size of a HeaderField name or\n// value string. If a string exceeds this length (even after any\n// decompression), Write will return ErrStringLength.\n// A value of 0 means unlimited and is the default from NewDecoder.\nfunc (d *Decoder) SetMaxStringLength(n int) {\n\td.maxStrLen = n\n}\n\n// SetEmitFunc changes the callback used when new header fields\n// are decoded.\n// It must be non-nil. It does not affect EmitEnabled.\nfunc (d *Decoder) SetEmitFunc(emitFunc func(f HeaderField)) {\n\td.emit = emitFunc\n}\n\n// SetEmitEnabled controls whether the emitFunc provided to NewDecoder\n// should be called. The default is true.\n//\n// This facility exists to let servers enforce MAX_HEADER_LIST_SIZE\n// while still decoding and keeping in-sync with decoder state, but\n// without doing unnecessary decompression or generating unnecessary\n// garbage for header fields past the limit.\nfunc (d *Decoder) SetEmitEnabled(v bool) { d.emitEnabled = v }\n\n// EmitEnabled reports whether calls to the emitFunc provided to NewDecoder\n// are currently enabled. The default is true.\nfunc (d *Decoder) EmitEnabled() bool { return d.emitEnabled }\n\n// TODO: add method *Decoder.Reset(maxSize, emitFunc) to let callers re-use Decoders and their\n// underlying buffers for garbage reasons.\n\nfunc (d *Decoder) SetMaxDynamicTableSize(v uint32) {\n\td.dynTab.setMaxSize(v)\n}\n\n// SetAllowedMaxDynamicTableSize sets the upper bound that the encoded\n// stream (via dynamic table size updates) may set the maximum size\n// to.\nfunc (d *Decoder) SetAllowedMaxDynamicTableSize(v uint32) {\n\td.dynTab.allowedMaxSize = v\n}\n\ntype dynamicTable struct {\n\t// https://httpwg.org/specs/rfc7541.html#rfc.section.2.3.2\n\ttable          headerFieldTable\n\tsize           uint32 // in bytes\n\tmaxSize        uint32 // current maxSize\n\tallowedMaxSize uint32 // maxSize may go up to this, inclusive\n}\n\nfunc (dt *dynamicTable) setMaxSize(v uint32) {\n\tdt.maxSize = v\n\tdt.evict()\n}\n\nfunc (dt *dynamicTable) add(f HeaderField) {\n\tdt.table.addEntry(f)\n\tdt.size += f.Size()\n\tdt.evict()\n}\n\n// If we're too big, evict old stuff.\nfunc (dt *dynamicTable) evict() {\n\tvar n int\n\tfor dt.size > dt.maxSize && n < dt.table.len() {\n\t\tdt.size -= dt.table.ents[n].Size()\n\t\tn++\n\t}\n\tdt.table.evictOldest(n)\n}\n\nfunc (d *Decoder) maxTableIndex() int {\n\t// This should never overflow. RFC 7540 Section 6.5.2 limits the size of\n\t// the dynamic table to 2^32 bytes, where each entry will occupy more than\n\t// one byte. Further, the staticTable has a fixed, small length.\n\treturn d.dynTab.table.len() + staticTable.len()\n}\n\nfunc (d *Decoder) at(i uint64) (hf HeaderField, ok bool) {\n\t// See Section 2.3.3.\n\tif i == 0 {\n\t\treturn\n\t}\n\tif i <= uint64(staticTable.len()) {\n\t\treturn staticTable.ents[i-1], true\n\t}\n\tif i > uint64(d.maxTableIndex()) {\n\t\treturn\n\t}\n\t// In the dynamic table, newer entries have lower indices.\n\t// However, dt.ents[0] is the oldest entry. Hence, dt.ents is\n\t// the reversed dynamic table.\n\tdt := d.dynTab.table\n\treturn dt.ents[dt.len()-(int(i)-staticTable.len())], true\n}\n\n// DecodeFull decodes an entire block.\n//\n// TODO: remove this method and make it incremental later? This is\n// easier for debugging now.\nfunc (d *Decoder) DecodeFull(p []byte) ([]HeaderField, error) {\n\tvar hf []HeaderField\n\tsaveFunc := d.emit\n\tdefer func() { d.emit = saveFunc }()\n\td.emit = func(f HeaderField) { hf = append(hf, f) }\n\tif _, err := d.Write(p); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := d.Close(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn hf, nil\n}\n\n// Close declares that the decoding is complete and resets the Decoder\n// to be reused again for a new header block. If there is any remaining\n// data in the decoder's buffer, Close returns an error.\nfunc (d *Decoder) Close() error {\n\tif d.saveBuf.Len() > 0 {\n\t\td.saveBuf.Reset()\n\t\treturn DecodingError{errors.New(\"truncated headers\")}\n\t}\n\td.firstField = true\n\treturn nil\n}\n\nfunc (d *Decoder) Write(p []byte) (n int, err error) {\n\tif len(p) == 0 {\n\t\t// Prevent state machine CPU attacks (making us redo\n\t\t// work up to the point of finding out we don't have\n\t\t// enough data)\n\t\treturn\n\t}\n\t// Only copy the data if we have to. Optimistically assume\n\t// that p will contain a complete header block.\n\tif d.saveBuf.Len() == 0 {\n\t\td.buf = p\n\t} else {\n\t\td.saveBuf.Write(p)\n\t\td.buf = d.saveBuf.Bytes()\n\t\td.saveBuf.Reset()\n\t}\n\n\tfor len(d.buf) > 0 {\n\t\terr = d.parseHeaderFieldRepr()\n\t\tif err == errNeedMore {\n\t\t\t// Extra paranoia, making sure saveBuf won't\n\t\t\t// get too large. All the varint and string\n\t\t\t// reading code earlier should already catch\n\t\t\t// overlong things and return ErrStringLength,\n\t\t\t// but keep this as a last resort.\n\t\t\tconst varIntOverhead = 8 // conservative\n\t\t\tif d.maxStrLen != 0 && int64(len(d.buf)) > 2*(int64(d.maxStrLen)+varIntOverhead) {\n\t\t\t\treturn 0, ErrStringLength\n\t\t\t}\n\t\t\td.saveBuf.Write(d.buf)\n\t\t\treturn len(p), nil\n\t\t}\n\t\td.firstField = false\n\t\tif err != nil {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn len(p), err\n}\n\n// errNeedMore is an internal sentinel error value that means the\n// buffer is truncated and we need to read more data before we can\n// continue parsing.\nvar errNeedMore = errors.New(\"need more data\")\n\ntype indexType int\n\nconst (\n\tindexedTrue indexType = iota\n\tindexedFalse\n\tindexedNever\n)\n\nfunc (v indexType) indexed() bool   { return v == indexedTrue }\nfunc (v indexType) sensitive() bool { return v == indexedNever }\n\n// returns errNeedMore if there isn't enough data available.\n// any other error is fatal.\n// consumes d.buf iff it returns nil.\n// precondition: must be called with len(d.buf) > 0\nfunc (d *Decoder) parseHeaderFieldRepr() error {\n\tb := d.buf[0]\n\tswitch {\n\tcase b&128 != 0:\n\t\t// Indexed representation.\n\t\t// High bit set?\n\t\t// https://httpwg.org/specs/rfc7541.html#rfc.section.6.1\n\t\treturn d.parseFieldIndexed()\n\tcase b&192 == 64:\n\t\t// 6.2.1 Literal Header Field with Incremental Indexing\n\t\t// 0b10xxxxxx: top two bits are 10\n\t\t// https://httpwg.org/specs/rfc7541.html#rfc.section.6.2.1\n\t\treturn d.parseFieldLiteral(6, indexedTrue)\n\tcase b&240 == 0:\n\t\t// 6.2.2 Literal Header Field without Indexing\n\t\t// 0b0000xxxx: top four bits are 0000\n\t\t// https://httpwg.org/specs/rfc7541.html#rfc.section.6.2.2\n\t\treturn d.parseFieldLiteral(4, indexedFalse)\n\tcase b&240 == 16:\n\t\t// 6.2.3 Literal Header Field never Indexed\n\t\t// 0b0001xxxx: top four bits are 0001\n\t\t// https://httpwg.org/specs/rfc7541.html#rfc.section.6.2.3\n\t\treturn d.parseFieldLiteral(4, indexedNever)\n\tcase b&224 == 32:\n\t\t// 6.3 Dynamic Table Size Update\n\t\t// Top three bits are '001'.\n\t\t// https://httpwg.org/specs/rfc7541.html#rfc.section.6.3\n\t\treturn d.parseDynamicTableSizeUpdate()\n\t}\n\n\treturn DecodingError{errors.New(\"invalid encoding\")}\n}\n\n// (same invariants and behavior as parseHeaderFieldRepr)\nfunc (d *Decoder) parseFieldIndexed() error {\n\tbuf := d.buf\n\tidx, buf, err := readVarInt(7, buf)\n\tif err != nil {\n\t\treturn err\n\t}\n\thf, ok := d.at(idx)\n\tif !ok {\n\t\treturn DecodingError{InvalidIndexError(idx)}\n\t}\n\td.buf = buf\n\treturn d.callEmit(HeaderField{Name: hf.Name, Value: hf.Value})\n}\n\n// (same invariants and behavior as parseHeaderFieldRepr)\nfunc (d *Decoder) parseFieldLiteral(n uint8, it indexType) error {\n\tbuf := d.buf\n\tnameIdx, buf, err := readVarInt(n, buf)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar hf HeaderField\n\twantStr := d.emitEnabled || it.indexed()\n\tvar undecodedName undecodedString\n\tif nameIdx > 0 {\n\t\tihf, ok := d.at(nameIdx)\n\t\tif !ok {\n\t\t\treturn DecodingError{InvalidIndexError(nameIdx)}\n\t\t}\n\t\thf.Name = ihf.Name\n\t} else {\n\t\tundecodedName, buf, err = d.readString(buf)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tundecodedValue, buf, err := d.readString(buf)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif wantStr {\n\t\tif nameIdx <= 0 {\n\t\t\thf.Name, err = d.decodeString(undecodedName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\thf.Value, err = d.decodeString(undecodedValue)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\td.buf = buf\n\tif it.indexed() {\n\t\td.dynTab.add(hf)\n\t}\n\thf.Sensitive = it.sensitive()\n\treturn d.callEmit(hf)\n}\n\nfunc (d *Decoder) callEmit(hf HeaderField) error {\n\tif d.maxStrLen != 0 {\n\t\tif len(hf.Name) > d.maxStrLen || len(hf.Value) > d.maxStrLen {\n\t\t\treturn ErrStringLength\n\t\t}\n\t}\n\tif d.emitEnabled {\n\t\td.emit(hf)\n\t}\n\treturn nil\n}\n\n// (same invariants and behavior as parseHeaderFieldRepr)\nfunc (d *Decoder) parseDynamicTableSizeUpdate() error {\n\t// RFC 7541, sec 4.2: This dynamic table size update MUST occur at the\n\t// beginning of the first header block following the change to the dynamic table size.\n\tif !d.firstField && d.dynTab.size > 0 {\n\t\treturn DecodingError{errors.New(\"dynamic table size update MUST occur at the beginning of a header block\")}\n\t}\n\n\tbuf := d.buf\n\tsize, buf, err := readVarInt(5, buf)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif size > uint64(d.dynTab.allowedMaxSize) {\n\t\treturn DecodingError{errors.New(\"dynamic table size update too large\")}\n\t}\n\td.dynTab.setMaxSize(uint32(size))\n\td.buf = buf\n\treturn nil\n}\n\nvar errVarintOverflow = DecodingError{errors.New(\"varint integer overflow\")}\n\n// readVarInt reads an unsigned variable length integer off the\n// beginning of p. n is the parameter as described in\n// https://httpwg.org/specs/rfc7541.html#rfc.section.5.1.\n//\n// n must always be between 1 and 8.\n//\n// The returned remain buffer is either a smaller suffix of p, or err != nil.\n// The error is errNeedMore if p doesn't contain a complete integer.\nfunc readVarInt(n byte, p []byte) (i uint64, remain []byte, err error) {\n\tif n < 1 || n > 8 {\n\t\tpanic(\"bad n\")\n\t}\n\tif len(p) == 0 {\n\t\treturn 0, p, errNeedMore\n\t}\n\ti = uint64(p[0])\n\tif n < 8 {\n\t\ti &= (1 << uint64(n)) - 1\n\t}\n\tif i < (1<<uint64(n))-1 {\n\t\treturn i, p[1:], nil\n\t}\n\n\torigP := p\n\tp = p[1:]\n\tvar m uint64\n\tfor len(p) > 0 {\n\t\tb := p[0]\n\t\tp = p[1:]\n\t\ti += uint64(b&127) << m\n\t\tif b&128 == 0 {\n\t\t\treturn i, p, nil\n\t\t}\n\t\tm += 7\n\t\tif m >= 63 { // TODO: proper overflow check. making this up.\n\t\t\treturn 0, origP, errVarintOverflow\n\t\t}\n\t}\n\treturn 0, origP, errNeedMore\n}\n\n// readString reads an hpack string from p.\n//\n// It returns a reference to the encoded string data to permit deferring decode costs\n// until after the caller verifies all data is present.\nfunc (d *Decoder) readString(p []byte) (u undecodedString, remain []byte, err error) {\n\tif len(p) == 0 {\n\t\treturn u, p, errNeedMore\n\t}\n\tisHuff := p[0]&128 != 0\n\tstrLen, p, err := readVarInt(7, p)\n\tif err != nil {\n\t\treturn u, p, err\n\t}\n\tif d.maxStrLen != 0 && strLen > uint64(d.maxStrLen) {\n\t\t// Returning an error here means Huffman decoding errors\n\t\t// for non-indexed strings past the maximum string length\n\t\t// are ignored, but the server is returning an error anyway\n\t\t// and because the string is not indexed the error will not\n\t\t// affect the decoding state.\n\t\treturn u, nil, ErrStringLength\n\t}\n\tif uint64(len(p)) < strLen {\n\t\treturn u, p, errNeedMore\n\t}\n\tu.isHuff = isHuff\n\tu.b = p[:strLen]\n\treturn u, p[strLen:], nil\n}\n\ntype undecodedString struct {\n\tisHuff bool\n\tb      []byte\n}\n\nfunc (d *Decoder) decodeString(u undecodedString) (string, error) {\n\tif !u.isHuff {\n\t\treturn string(u.b), nil\n\t}\n\tbuf := bufPool.Get().(*bytes.Buffer)\n\tbuf.Reset() // don't trust others\n\tvar s string\n\terr := huffmanDecode(buf, d.maxStrLen, u.b)\n\tif err == nil {\n\t\ts = buf.String()\n\t}\n\tbuf.Reset() // be nice to GC\n\tbufPool.Put(buf)\n\treturn s, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/hpack/huffman.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage hpack\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"sync\"\n)\n\nvar bufPool = sync.Pool{\n\tNew: func() interface{} { return new(bytes.Buffer) },\n}\n\n// HuffmanDecode decodes the string in v and writes the expanded\n// result to w, returning the number of bytes written to w and the\n// Write call's return value. At most one Write call is made.\nfunc HuffmanDecode(w io.Writer, v []byte) (int, error) {\n\tbuf := bufPool.Get().(*bytes.Buffer)\n\tbuf.Reset()\n\tdefer bufPool.Put(buf)\n\tif err := huffmanDecode(buf, 0, v); err != nil {\n\t\treturn 0, err\n\t}\n\treturn w.Write(buf.Bytes())\n}\n\n// HuffmanDecodeToString decodes the string in v.\nfunc HuffmanDecodeToString(v []byte) (string, error) {\n\tbuf := bufPool.Get().(*bytes.Buffer)\n\tbuf.Reset()\n\tdefer bufPool.Put(buf)\n\tif err := huffmanDecode(buf, 0, v); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn buf.String(), nil\n}\n\n// ErrInvalidHuffman is returned for errors found decoding\n// Huffman-encoded strings.\nvar ErrInvalidHuffman = errors.New(\"hpack: invalid Huffman-encoded data\")\n\n// huffmanDecode decodes v to buf.\n// If maxLen is greater than 0, attempts to write more to buf than\n// maxLen bytes will return ErrStringLength.\nfunc huffmanDecode(buf *bytes.Buffer, maxLen int, v []byte) error {\n\trootHuffmanNode := getRootHuffmanNode()\n\tn := rootHuffmanNode\n\t// cur is the bit buffer that has not been fed into n.\n\t// cbits is the number of low order bits in cur that are valid.\n\t// sbits is the number of bits of the symbol prefix being decoded.\n\tcur, cbits, sbits := uint(0), uint8(0), uint8(0)\n\tfor _, b := range v {\n\t\tcur = cur<<8 | uint(b)\n\t\tcbits += 8\n\t\tsbits += 8\n\t\tfor cbits >= 8 {\n\t\t\tidx := byte(cur >> (cbits - 8))\n\t\t\tn = n.children[idx]\n\t\t\tif n == nil {\n\t\t\t\treturn ErrInvalidHuffman\n\t\t\t}\n\t\t\tif n.children == nil {\n\t\t\t\tif maxLen != 0 && buf.Len() == maxLen {\n\t\t\t\t\treturn ErrStringLength\n\t\t\t\t}\n\t\t\t\tbuf.WriteByte(n.sym)\n\t\t\t\tcbits -= n.codeLen\n\t\t\t\tn = rootHuffmanNode\n\t\t\t\tsbits = cbits\n\t\t\t} else {\n\t\t\t\tcbits -= 8\n\t\t\t}\n\t\t}\n\t}\n\tfor cbits > 0 {\n\t\tn = n.children[byte(cur<<(8-cbits))]\n\t\tif n == nil {\n\t\t\treturn ErrInvalidHuffman\n\t\t}\n\t\tif n.children != nil || n.codeLen > cbits {\n\t\t\tbreak\n\t\t}\n\t\tif maxLen != 0 && buf.Len() == maxLen {\n\t\t\treturn ErrStringLength\n\t\t}\n\t\tbuf.WriteByte(n.sym)\n\t\tcbits -= n.codeLen\n\t\tn = rootHuffmanNode\n\t\tsbits = cbits\n\t}\n\tif sbits > 7 {\n\t\t// Either there was an incomplete symbol, or overlong padding.\n\t\t// Both are decoding errors per RFC 7541 section 5.2.\n\t\treturn ErrInvalidHuffman\n\t}\n\tif mask := uint(1<<cbits - 1); cur&mask != mask {\n\t\t// Trailing bits must be a prefix of EOS per RFC 7541 section 5.2.\n\t\treturn ErrInvalidHuffman\n\t}\n\n\treturn nil\n}\n\n// incomparable is a zero-width, non-comparable type. Adding it to a struct\n// makes that struct also non-comparable, and generally doesn't add\n// any size (as long as it's first).\ntype incomparable [0]func()\n\ntype node struct {\n\t_ incomparable\n\n\t// children is non-nil for internal nodes\n\tchildren *[256]*node\n\n\t// The following are only valid if children is nil:\n\tcodeLen uint8 // number of bits that led to the output of sym\n\tsym     byte  // output symbol\n}\n\nfunc newInternalNode() *node {\n\treturn &node{children: new([256]*node)}\n}\n\nvar (\n\tbuildRootOnce       sync.Once\n\tlazyRootHuffmanNode *node\n)\n\nfunc getRootHuffmanNode() *node {\n\tbuildRootOnce.Do(buildRootHuffmanNode)\n\treturn lazyRootHuffmanNode\n}\n\nfunc buildRootHuffmanNode() {\n\tif len(huffmanCodes) != 256 {\n\t\tpanic(\"unexpected size\")\n\t}\n\tlazyRootHuffmanNode = newInternalNode()\n\t// allocate a leaf node for each of the 256 symbols\n\tleaves := new([256]node)\n\n\tfor sym, code := range huffmanCodes {\n\t\tcodeLen := huffmanCodeLen[sym]\n\n\t\tcur := lazyRootHuffmanNode\n\t\tfor codeLen > 8 {\n\t\t\tcodeLen -= 8\n\t\t\ti := uint8(code >> codeLen)\n\t\t\tif cur.children[i] == nil {\n\t\t\t\tcur.children[i] = newInternalNode()\n\t\t\t}\n\t\t\tcur = cur.children[i]\n\t\t}\n\t\tshift := 8 - codeLen\n\t\tstart, end := int(uint8(code<<shift)), int(1<<shift)\n\n\t\tleaves[sym].sym = byte(sym)\n\t\tleaves[sym].codeLen = codeLen\n\t\tfor i := start; i < start+end; i++ {\n\t\t\tcur.children[i] = &leaves[sym]\n\t\t}\n\t}\n}\n\n// AppendHuffmanString appends s, as encoded in Huffman codes, to dst\n// and returns the extended buffer.\nfunc AppendHuffmanString(dst []byte, s string) []byte {\n\t// This relies on the maximum huffman code length being 30 (See tables.go huffmanCodeLen array)\n\t// So if a uint64 buffer has less than 32 valid bits can always accommodate another huffmanCode.\n\tvar (\n\t\tx uint64 // buffer\n\t\tn uint   // number valid of bits present in x\n\t)\n\tfor i := 0; i < len(s); i++ {\n\t\tc := s[i]\n\t\tn += uint(huffmanCodeLen[c])\n\t\tx <<= huffmanCodeLen[c] % 64\n\t\tx |= uint64(huffmanCodes[c])\n\t\tif n >= 32 {\n\t\t\tn %= 32             // Normally would be -= 32 but %= 32 informs compiler 0 <= n <= 31 for upcoming shift\n\t\t\ty := uint32(x >> n) // Compiler doesn't combine memory writes if y isn't uint32\n\t\t\tdst = append(dst, byte(y>>24), byte(y>>16), byte(y>>8), byte(y))\n\t\t}\n\t}\n\t// Add padding bits if necessary\n\tif over := n % 8; over > 0 {\n\t\tconst (\n\t\t\teosCode    = 0x3fffffff\n\t\t\teosNBits   = 30\n\t\t\teosPadByte = eosCode >> (eosNBits - 8)\n\t\t)\n\t\tpad := 8 - over\n\t\tx = (x << pad) | (eosPadByte >> over)\n\t\tn += pad // 8 now divides into n exactly\n\t}\n\t// n in (0, 8, 16, 24, 32)\n\tswitch n / 8 {\n\tcase 0:\n\t\treturn dst\n\tcase 1:\n\t\treturn append(dst, byte(x))\n\tcase 2:\n\t\ty := uint16(x)\n\t\treturn append(dst, byte(y>>8), byte(y))\n\tcase 3:\n\t\ty := uint16(x >> 8)\n\t\treturn append(dst, byte(y>>8), byte(y), byte(x))\n\t}\n\t//\tcase 4:\n\ty := uint32(x)\n\treturn append(dst, byte(y>>24), byte(y>>16), byte(y>>8), byte(y))\n}\n\n// HuffmanEncodeLength returns the number of bytes required to encode\n// s in Huffman codes. The result is round up to byte boundary.\nfunc HuffmanEncodeLength(s string) uint64 {\n\tn := uint64(0)\n\tfor i := 0; i < len(s); i++ {\n\t\tn += uint64(huffmanCodeLen[s[i]])\n\t}\n\treturn (n + 7) / 8\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/hpack/static_table.go",
    "content": "// go generate gen.go\n// Code generated by the command above; DO NOT EDIT.\n\npackage hpack\n\nvar staticTable = &headerFieldTable{\n\tevictCount: 0,\n\tbyName: map[string]uint64{\n\t\t\":authority\":                  1,\n\t\t\":method\":                     3,\n\t\t\":path\":                       5,\n\t\t\":scheme\":                     7,\n\t\t\":status\":                     14,\n\t\t\"accept-charset\":              15,\n\t\t\"accept-encoding\":             16,\n\t\t\"accept-language\":             17,\n\t\t\"accept-ranges\":               18,\n\t\t\"accept\":                      19,\n\t\t\"access-control-allow-origin\": 20,\n\t\t\"age\":                         21,\n\t\t\"allow\":                       22,\n\t\t\"authorization\":               23,\n\t\t\"cache-control\":               24,\n\t\t\"content-disposition\":         25,\n\t\t\"content-encoding\":            26,\n\t\t\"content-language\":            27,\n\t\t\"content-length\":              28,\n\t\t\"content-location\":            29,\n\t\t\"content-range\":               30,\n\t\t\"content-type\":                31,\n\t\t\"cookie\":                      32,\n\t\t\"date\":                        33,\n\t\t\"etag\":                        34,\n\t\t\"expect\":                      35,\n\t\t\"expires\":                     36,\n\t\t\"from\":                        37,\n\t\t\"host\":                        38,\n\t\t\"if-match\":                    39,\n\t\t\"if-modified-since\":           40,\n\t\t\"if-none-match\":               41,\n\t\t\"if-range\":                    42,\n\t\t\"if-unmodified-since\":         43,\n\t\t\"last-modified\":               44,\n\t\t\"link\":                        45,\n\t\t\"location\":                    46,\n\t\t\"max-forwards\":                47,\n\t\t\"proxy-authenticate\":          48,\n\t\t\"proxy-authorization\":         49,\n\t\t\"range\":                       50,\n\t\t\"referer\":                     51,\n\t\t\"refresh\":                     52,\n\t\t\"retry-after\":                 53,\n\t\t\"server\":                      54,\n\t\t\"set-cookie\":                  55,\n\t\t\"strict-transport-security\":   56,\n\t\t\"transfer-encoding\":           57,\n\t\t\"user-agent\":                  58,\n\t\t\"vary\":                        59,\n\t\t\"via\":                         60,\n\t\t\"www-authenticate\":            61,\n\t},\n\tbyNameValue: map[pairNameValue]uint64{\n\t\t{name: \":authority\", value: \"\"}:                   1,\n\t\t{name: \":method\", value: \"GET\"}:                   2,\n\t\t{name: \":method\", value: \"POST\"}:                  3,\n\t\t{name: \":path\", value: \"/\"}:                       4,\n\t\t{name: \":path\", value: \"/index.html\"}:             5,\n\t\t{name: \":scheme\", value: \"http\"}:                  6,\n\t\t{name: \":scheme\", value: \"https\"}:                 7,\n\t\t{name: \":status\", value: \"200\"}:                   8,\n\t\t{name: \":status\", value: \"204\"}:                   9,\n\t\t{name: \":status\", value: \"206\"}:                   10,\n\t\t{name: \":status\", value: \"304\"}:                   11,\n\t\t{name: \":status\", value: \"400\"}:                   12,\n\t\t{name: \":status\", value: \"404\"}:                   13,\n\t\t{name: \":status\", value: \"500\"}:                   14,\n\t\t{name: \"accept-charset\", value: \"\"}:               15,\n\t\t{name: \"accept-encoding\", value: \"gzip, deflate\"}: 16,\n\t\t{name: \"accept-language\", value: \"\"}:              17,\n\t\t{name: \"accept-ranges\", value: \"\"}:                18,\n\t\t{name: \"accept\", value: \"\"}:                       19,\n\t\t{name: \"access-control-allow-origin\", value: \"\"}:  20,\n\t\t{name: \"age\", value: \"\"}:                          21,\n\t\t{name: \"allow\", value: \"\"}:                        22,\n\t\t{name: \"authorization\", value: \"\"}:                23,\n\t\t{name: \"cache-control\", value: \"\"}:                24,\n\t\t{name: \"content-disposition\", value: \"\"}:          25,\n\t\t{name: \"content-encoding\", value: \"\"}:             26,\n\t\t{name: \"content-language\", value: \"\"}:             27,\n\t\t{name: \"content-length\", value: \"\"}:               28,\n\t\t{name: \"content-location\", value: \"\"}:             29,\n\t\t{name: \"content-range\", value: \"\"}:                30,\n\t\t{name: \"content-type\", value: \"\"}:                 31,\n\t\t{name: \"cookie\", value: \"\"}:                       32,\n\t\t{name: \"date\", value: \"\"}:                         33,\n\t\t{name: \"etag\", value: \"\"}:                         34,\n\t\t{name: \"expect\", value: \"\"}:                       35,\n\t\t{name: \"expires\", value: \"\"}:                      36,\n\t\t{name: \"from\", value: \"\"}:                         37,\n\t\t{name: \"host\", value: \"\"}:                         38,\n\t\t{name: \"if-match\", value: \"\"}:                     39,\n\t\t{name: \"if-modified-since\", value: \"\"}:            40,\n\t\t{name: \"if-none-match\", value: \"\"}:                41,\n\t\t{name: \"if-range\", value: \"\"}:                     42,\n\t\t{name: \"if-unmodified-since\", value: \"\"}:          43,\n\t\t{name: \"last-modified\", value: \"\"}:                44,\n\t\t{name: \"link\", value: \"\"}:                         45,\n\t\t{name: \"location\", value: \"\"}:                     46,\n\t\t{name: \"max-forwards\", value: \"\"}:                 47,\n\t\t{name: \"proxy-authenticate\", value: \"\"}:           48,\n\t\t{name: \"proxy-authorization\", value: \"\"}:          49,\n\t\t{name: \"range\", value: \"\"}:                        50,\n\t\t{name: \"referer\", value: \"\"}:                      51,\n\t\t{name: \"refresh\", value: \"\"}:                      52,\n\t\t{name: \"retry-after\", value: \"\"}:                  53,\n\t\t{name: \"server\", value: \"\"}:                       54,\n\t\t{name: \"set-cookie\", value: \"\"}:                   55,\n\t\t{name: \"strict-transport-security\", value: \"\"}:    56,\n\t\t{name: \"transfer-encoding\", value: \"\"}:            57,\n\t\t{name: \"user-agent\", value: \"\"}:                   58,\n\t\t{name: \"vary\", value: \"\"}:                         59,\n\t\t{name: \"via\", value: \"\"}:                          60,\n\t\t{name: \"www-authenticate\", value: \"\"}:             61,\n\t},\n\tents: []HeaderField{\n\t\t{Name: \":authority\", Value: \"\", Sensitive: false},\n\t\t{Name: \":method\", Value: \"GET\", Sensitive: false},\n\t\t{Name: \":method\", Value: \"POST\", Sensitive: false},\n\t\t{Name: \":path\", Value: \"/\", Sensitive: false},\n\t\t{Name: \":path\", Value: \"/index.html\", Sensitive: false},\n\t\t{Name: \":scheme\", Value: \"http\", Sensitive: false},\n\t\t{Name: \":scheme\", Value: \"https\", Sensitive: false},\n\t\t{Name: \":status\", Value: \"200\", Sensitive: false},\n\t\t{Name: \":status\", Value: \"204\", Sensitive: false},\n\t\t{Name: \":status\", Value: \"206\", Sensitive: false},\n\t\t{Name: \":status\", Value: \"304\", Sensitive: false},\n\t\t{Name: \":status\", Value: \"400\", Sensitive: false},\n\t\t{Name: \":status\", Value: \"404\", Sensitive: false},\n\t\t{Name: \":status\", Value: \"500\", Sensitive: false},\n\t\t{Name: \"accept-charset\", Value: \"\", Sensitive: false},\n\t\t{Name: \"accept-encoding\", Value: \"gzip, deflate\", Sensitive: false},\n\t\t{Name: \"accept-language\", Value: \"\", Sensitive: false},\n\t\t{Name: \"accept-ranges\", Value: \"\", Sensitive: false},\n\t\t{Name: \"accept\", Value: \"\", Sensitive: false},\n\t\t{Name: \"access-control-allow-origin\", Value: \"\", Sensitive: false},\n\t\t{Name: \"age\", Value: \"\", Sensitive: false},\n\t\t{Name: \"allow\", Value: \"\", Sensitive: false},\n\t\t{Name: \"authorization\", Value: \"\", Sensitive: false},\n\t\t{Name: \"cache-control\", Value: \"\", Sensitive: false},\n\t\t{Name: \"content-disposition\", Value: \"\", Sensitive: false},\n\t\t{Name: \"content-encoding\", Value: \"\", Sensitive: false},\n\t\t{Name: \"content-language\", Value: \"\", Sensitive: false},\n\t\t{Name: \"content-length\", Value: \"\", Sensitive: false},\n\t\t{Name: \"content-location\", Value: \"\", Sensitive: false},\n\t\t{Name: \"content-range\", Value: \"\", Sensitive: false},\n\t\t{Name: \"content-type\", Value: \"\", Sensitive: false},\n\t\t{Name: \"cookie\", Value: \"\", Sensitive: false},\n\t\t{Name: \"date\", Value: \"\", Sensitive: false},\n\t\t{Name: \"etag\", Value: \"\", Sensitive: false},\n\t\t{Name: \"expect\", Value: \"\", Sensitive: false},\n\t\t{Name: \"expires\", Value: \"\", Sensitive: false},\n\t\t{Name: \"from\", Value: \"\", Sensitive: false},\n\t\t{Name: \"host\", Value: \"\", Sensitive: false},\n\t\t{Name: \"if-match\", Value: \"\", Sensitive: false},\n\t\t{Name: \"if-modified-since\", Value: \"\", Sensitive: false},\n\t\t{Name: \"if-none-match\", Value: \"\", Sensitive: false},\n\t\t{Name: \"if-range\", Value: \"\", Sensitive: false},\n\t\t{Name: \"if-unmodified-since\", Value: \"\", Sensitive: false},\n\t\t{Name: \"last-modified\", Value: \"\", Sensitive: false},\n\t\t{Name: \"link\", Value: \"\", Sensitive: false},\n\t\t{Name: \"location\", Value: \"\", Sensitive: false},\n\t\t{Name: \"max-forwards\", Value: \"\", Sensitive: false},\n\t\t{Name: \"proxy-authenticate\", Value: \"\", Sensitive: false},\n\t\t{Name: \"proxy-authorization\", Value: \"\", Sensitive: false},\n\t\t{Name: \"range\", Value: \"\", Sensitive: false},\n\t\t{Name: \"referer\", Value: \"\", Sensitive: false},\n\t\t{Name: \"refresh\", Value: \"\", Sensitive: false},\n\t\t{Name: \"retry-after\", Value: \"\", Sensitive: false},\n\t\t{Name: \"server\", Value: \"\", Sensitive: false},\n\t\t{Name: \"set-cookie\", Value: \"\", Sensitive: false},\n\t\t{Name: \"strict-transport-security\", Value: \"\", Sensitive: false},\n\t\t{Name: \"transfer-encoding\", Value: \"\", Sensitive: false},\n\t\t{Name: \"user-agent\", Value: \"\", Sensitive: false},\n\t\t{Name: \"vary\", Value: \"\", Sensitive: false},\n\t\t{Name: \"via\", Value: \"\", Sensitive: false},\n\t\t{Name: \"www-authenticate\", Value: \"\", Sensitive: false},\n\t},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/hpack/tables.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage hpack\n\nimport (\n\t\"fmt\"\n)\n\n// headerFieldTable implements a list of HeaderFields.\n// This is used to implement the static and dynamic tables.\ntype headerFieldTable struct {\n\t// For static tables, entries are never evicted.\n\t//\n\t// For dynamic tables, entries are evicted from ents[0] and added to the end.\n\t// Each entry has a unique id that starts at one and increments for each\n\t// entry that is added. This unique id is stable across evictions, meaning\n\t// it can be used as a pointer to a specific entry. As in hpack, unique ids\n\t// are 1-based. The unique id for ents[k] is k + evictCount + 1.\n\t//\n\t// Zero is not a valid unique id.\n\t//\n\t// evictCount should not overflow in any remotely practical situation. In\n\t// practice, we will have one dynamic table per HTTP/2 connection. If we\n\t// assume a very powerful server that handles 1M QPS per connection and each\n\t// request adds (then evicts) 100 entries from the table, it would still take\n\t// 2M years for evictCount to overflow.\n\tents       []HeaderField\n\tevictCount uint64\n\n\t// byName maps a HeaderField name to the unique id of the newest entry with\n\t// the same name. See above for a definition of \"unique id\".\n\tbyName map[string]uint64\n\n\t// byNameValue maps a HeaderField name/value pair to the unique id of the newest\n\t// entry with the same name and value. See above for a definition of \"unique id\".\n\tbyNameValue map[pairNameValue]uint64\n}\n\ntype pairNameValue struct {\n\tname, value string\n}\n\nfunc (t *headerFieldTable) init() {\n\tt.byName = make(map[string]uint64)\n\tt.byNameValue = make(map[pairNameValue]uint64)\n}\n\n// len reports the number of entries in the table.\nfunc (t *headerFieldTable) len() int {\n\treturn len(t.ents)\n}\n\n// addEntry adds a new entry.\nfunc (t *headerFieldTable) addEntry(f HeaderField) {\n\tid := uint64(t.len()) + t.evictCount + 1\n\tt.byName[f.Name] = id\n\tt.byNameValue[pairNameValue{f.Name, f.Value}] = id\n\tt.ents = append(t.ents, f)\n}\n\n// evictOldest evicts the n oldest entries in the table.\nfunc (t *headerFieldTable) evictOldest(n int) {\n\tif n > t.len() {\n\t\tpanic(fmt.Sprintf(\"evictOldest(%v) on table with %v entries\", n, t.len()))\n\t}\n\tfor k := 0; k < n; k++ {\n\t\tf := t.ents[k]\n\t\tid := t.evictCount + uint64(k) + 1\n\t\tif t.byName[f.Name] == id {\n\t\t\tdelete(t.byName, f.Name)\n\t\t}\n\t\tif p := (pairNameValue{f.Name, f.Value}); t.byNameValue[p] == id {\n\t\t\tdelete(t.byNameValue, p)\n\t\t}\n\t}\n\tcopy(t.ents, t.ents[n:])\n\tfor k := t.len() - n; k < t.len(); k++ {\n\t\tt.ents[k] = HeaderField{} // so strings can be garbage collected\n\t}\n\tt.ents = t.ents[:t.len()-n]\n\tif t.evictCount+uint64(n) < t.evictCount {\n\t\tpanic(\"evictCount overflow\")\n\t}\n\tt.evictCount += uint64(n)\n}\n\n// search finds f in the table. If there is no match, i is 0.\n// If both name and value match, i is the matched index and nameValueMatch\n// becomes true. If only name matches, i points to that index and\n// nameValueMatch becomes false.\n//\n// The returned index is a 1-based HPACK index. For dynamic tables, HPACK says\n// that index 1 should be the newest entry, but t.ents[0] is the oldest entry,\n// meaning t.ents is reversed for dynamic tables. Hence, when t is a dynamic\n// table, the return value i actually refers to the entry t.ents[t.len()-i].\n//\n// All tables are assumed to be a dynamic tables except for the global staticTable.\n//\n// See Section 2.3.3.\nfunc (t *headerFieldTable) search(f HeaderField) (i uint64, nameValueMatch bool) {\n\tif !f.Sensitive {\n\t\tif id := t.byNameValue[pairNameValue{f.Name, f.Value}]; id != 0 {\n\t\t\treturn t.idToIndex(id), true\n\t\t}\n\t}\n\tif id := t.byName[f.Name]; id != 0 {\n\t\treturn t.idToIndex(id), false\n\t}\n\treturn 0, false\n}\n\n// idToIndex converts a unique id to an HPACK index.\n// See Section 2.3.3.\nfunc (t *headerFieldTable) idToIndex(id uint64) uint64 {\n\tif id <= t.evictCount {\n\t\tpanic(fmt.Sprintf(\"id (%v) <= evictCount (%v)\", id, t.evictCount))\n\t}\n\tk := id - t.evictCount - 1 // convert id to an index t.ents[k]\n\tif t != staticTable {\n\t\treturn uint64(t.len()) - k // dynamic table\n\t}\n\treturn k + 1\n}\n\nvar huffmanCodes = [256]uint32{\n\t0x1ff8,\n\t0x7fffd8,\n\t0xfffffe2,\n\t0xfffffe3,\n\t0xfffffe4,\n\t0xfffffe5,\n\t0xfffffe6,\n\t0xfffffe7,\n\t0xfffffe8,\n\t0xffffea,\n\t0x3ffffffc,\n\t0xfffffe9,\n\t0xfffffea,\n\t0x3ffffffd,\n\t0xfffffeb,\n\t0xfffffec,\n\t0xfffffed,\n\t0xfffffee,\n\t0xfffffef,\n\t0xffffff0,\n\t0xffffff1,\n\t0xffffff2,\n\t0x3ffffffe,\n\t0xffffff3,\n\t0xffffff4,\n\t0xffffff5,\n\t0xffffff6,\n\t0xffffff7,\n\t0xffffff8,\n\t0xffffff9,\n\t0xffffffa,\n\t0xffffffb,\n\t0x14,\n\t0x3f8,\n\t0x3f9,\n\t0xffa,\n\t0x1ff9,\n\t0x15,\n\t0xf8,\n\t0x7fa,\n\t0x3fa,\n\t0x3fb,\n\t0xf9,\n\t0x7fb,\n\t0xfa,\n\t0x16,\n\t0x17,\n\t0x18,\n\t0x0,\n\t0x1,\n\t0x2,\n\t0x19,\n\t0x1a,\n\t0x1b,\n\t0x1c,\n\t0x1d,\n\t0x1e,\n\t0x1f,\n\t0x5c,\n\t0xfb,\n\t0x7ffc,\n\t0x20,\n\t0xffb,\n\t0x3fc,\n\t0x1ffa,\n\t0x21,\n\t0x5d,\n\t0x5e,\n\t0x5f,\n\t0x60,\n\t0x61,\n\t0x62,\n\t0x63,\n\t0x64,\n\t0x65,\n\t0x66,\n\t0x67,\n\t0x68,\n\t0x69,\n\t0x6a,\n\t0x6b,\n\t0x6c,\n\t0x6d,\n\t0x6e,\n\t0x6f,\n\t0x70,\n\t0x71,\n\t0x72,\n\t0xfc,\n\t0x73,\n\t0xfd,\n\t0x1ffb,\n\t0x7fff0,\n\t0x1ffc,\n\t0x3ffc,\n\t0x22,\n\t0x7ffd,\n\t0x3,\n\t0x23,\n\t0x4,\n\t0x24,\n\t0x5,\n\t0x25,\n\t0x26,\n\t0x27,\n\t0x6,\n\t0x74,\n\t0x75,\n\t0x28,\n\t0x29,\n\t0x2a,\n\t0x7,\n\t0x2b,\n\t0x76,\n\t0x2c,\n\t0x8,\n\t0x9,\n\t0x2d,\n\t0x77,\n\t0x78,\n\t0x79,\n\t0x7a,\n\t0x7b,\n\t0x7ffe,\n\t0x7fc,\n\t0x3ffd,\n\t0x1ffd,\n\t0xffffffc,\n\t0xfffe6,\n\t0x3fffd2,\n\t0xfffe7,\n\t0xfffe8,\n\t0x3fffd3,\n\t0x3fffd4,\n\t0x3fffd5,\n\t0x7fffd9,\n\t0x3fffd6,\n\t0x7fffda,\n\t0x7fffdb,\n\t0x7fffdc,\n\t0x7fffdd,\n\t0x7fffde,\n\t0xffffeb,\n\t0x7fffdf,\n\t0xffffec,\n\t0xffffed,\n\t0x3fffd7,\n\t0x7fffe0,\n\t0xffffee,\n\t0x7fffe1,\n\t0x7fffe2,\n\t0x7fffe3,\n\t0x7fffe4,\n\t0x1fffdc,\n\t0x3fffd8,\n\t0x7fffe5,\n\t0x3fffd9,\n\t0x7fffe6,\n\t0x7fffe7,\n\t0xffffef,\n\t0x3fffda,\n\t0x1fffdd,\n\t0xfffe9,\n\t0x3fffdb,\n\t0x3fffdc,\n\t0x7fffe8,\n\t0x7fffe9,\n\t0x1fffde,\n\t0x7fffea,\n\t0x3fffdd,\n\t0x3fffde,\n\t0xfffff0,\n\t0x1fffdf,\n\t0x3fffdf,\n\t0x7fffeb,\n\t0x7fffec,\n\t0x1fffe0,\n\t0x1fffe1,\n\t0x3fffe0,\n\t0x1fffe2,\n\t0x7fffed,\n\t0x3fffe1,\n\t0x7fffee,\n\t0x7fffef,\n\t0xfffea,\n\t0x3fffe2,\n\t0x3fffe3,\n\t0x3fffe4,\n\t0x7ffff0,\n\t0x3fffe5,\n\t0x3fffe6,\n\t0x7ffff1,\n\t0x3ffffe0,\n\t0x3ffffe1,\n\t0xfffeb,\n\t0x7fff1,\n\t0x3fffe7,\n\t0x7ffff2,\n\t0x3fffe8,\n\t0x1ffffec,\n\t0x3ffffe2,\n\t0x3ffffe3,\n\t0x3ffffe4,\n\t0x7ffffde,\n\t0x7ffffdf,\n\t0x3ffffe5,\n\t0xfffff1,\n\t0x1ffffed,\n\t0x7fff2,\n\t0x1fffe3,\n\t0x3ffffe6,\n\t0x7ffffe0,\n\t0x7ffffe1,\n\t0x3ffffe7,\n\t0x7ffffe2,\n\t0xfffff2,\n\t0x1fffe4,\n\t0x1fffe5,\n\t0x3ffffe8,\n\t0x3ffffe9,\n\t0xffffffd,\n\t0x7ffffe3,\n\t0x7ffffe4,\n\t0x7ffffe5,\n\t0xfffec,\n\t0xfffff3,\n\t0xfffed,\n\t0x1fffe6,\n\t0x3fffe9,\n\t0x1fffe7,\n\t0x1fffe8,\n\t0x7ffff3,\n\t0x3fffea,\n\t0x3fffeb,\n\t0x1ffffee,\n\t0x1ffffef,\n\t0xfffff4,\n\t0xfffff5,\n\t0x3ffffea,\n\t0x7ffff4,\n\t0x3ffffeb,\n\t0x7ffffe6,\n\t0x3ffffec,\n\t0x3ffffed,\n\t0x7ffffe7,\n\t0x7ffffe8,\n\t0x7ffffe9,\n\t0x7ffffea,\n\t0x7ffffeb,\n\t0xffffffe,\n\t0x7ffffec,\n\t0x7ffffed,\n\t0x7ffffee,\n\t0x7ffffef,\n\t0x7fffff0,\n\t0x3ffffee,\n}\n\nvar huffmanCodeLen = [256]uint8{\n\t13, 23, 28, 28, 28, 28, 28, 28, 28, 24, 30, 28, 28, 30, 28, 28,\n\t28, 28, 28, 28, 28, 28, 30, 28, 28, 28, 28, 28, 28, 28, 28, 28,\n\t6, 10, 10, 12, 13, 6, 8, 11, 10, 10, 8, 11, 8, 6, 6, 6,\n\t5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 8, 15, 6, 12, 10,\n\t13, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n\t7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 13, 19, 13, 14, 6,\n\t15, 5, 6, 5, 6, 5, 6, 6, 6, 5, 7, 7, 6, 6, 6, 5,\n\t6, 7, 6, 5, 5, 6, 7, 7, 7, 7, 7, 15, 11, 14, 13, 28,\n\t20, 22, 20, 20, 22, 22, 22, 23, 22, 23, 23, 23, 23, 23, 24, 23,\n\t24, 24, 22, 23, 24, 23, 23, 23, 23, 21, 22, 23, 22, 23, 23, 24,\n\t22, 21, 20, 22, 22, 23, 23, 21, 23, 22, 22, 24, 21, 22, 23, 23,\n\t21, 21, 22, 21, 23, 22, 23, 23, 20, 22, 22, 22, 23, 22, 22, 23,\n\t26, 26, 20, 19, 22, 23, 22, 25, 26, 26, 26, 27, 27, 26, 24, 25,\n\t19, 21, 26, 27, 27, 26, 27, 24, 21, 21, 26, 26, 28, 27, 27, 27,\n\t20, 24, 20, 21, 22, 21, 21, 23, 22, 22, 25, 25, 24, 24, 26, 23,\n\t26, 27, 26, 26, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 26,\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/http2.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package http2 implements the HTTP/2 protocol.\n//\n// This package is low-level and intended to be used directly by very\n// few people. Most users will use it indirectly through the automatic\n// use by the net/http package (from Go 1.6 and later).\n// For use in earlier Go versions see ConfigureServer. (Transport support\n// requires Go 1.6 or later)\n//\n// See https://http2.github.io/ for more information on HTTP/2.\npackage http2 // import \"golang.org/x/net/http2\"\n\nimport (\n\t\"bufio\"\n\t\"crypto/tls\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/http\"\n\t\"os\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"golang.org/x/net/http/httpguts\"\n)\n\nvar (\n\tVerboseLogs    bool\n\tlogFrameWrites bool\n\tlogFrameReads  bool\n\n\t// Enabling extended CONNECT by causes browsers to attempt to use\n\t// WebSockets-over-HTTP/2. This results in problems when the server's websocket\n\t// package doesn't support extended CONNECT.\n\t//\n\t// Disable extended CONNECT by default for now.\n\t//\n\t// Issue #71128.\n\tdisableExtendedConnectProtocol = true\n)\n\nfunc init() {\n\te := os.Getenv(\"GODEBUG\")\n\tif strings.Contains(e, \"http2debug=1\") {\n\t\tVerboseLogs = true\n\t}\n\tif strings.Contains(e, \"http2debug=2\") {\n\t\tVerboseLogs = true\n\t\tlogFrameWrites = true\n\t\tlogFrameReads = true\n\t}\n\tif strings.Contains(e, \"http2xconnect=1\") {\n\t\tdisableExtendedConnectProtocol = false\n\t}\n}\n\nconst (\n\t// ClientPreface is the string that must be sent by new\n\t// connections from clients.\n\tClientPreface = \"PRI * HTTP/2.0\\r\\n\\r\\nSM\\r\\n\\r\\n\"\n\n\t// SETTINGS_MAX_FRAME_SIZE default\n\t// https://httpwg.org/specs/rfc7540.html#rfc.section.6.5.2\n\tinitialMaxFrameSize = 16384\n\n\t// NextProtoTLS is the NPN/ALPN protocol negotiated during\n\t// HTTP/2's TLS setup.\n\tNextProtoTLS = \"h2\"\n\n\t// https://httpwg.org/specs/rfc7540.html#SettingValues\n\tinitialHeaderTableSize = 4096\n\n\tinitialWindowSize = 65535 // 6.9.2 Initial Flow Control Window Size\n\n\tdefaultMaxReadFrameSize = 1 << 20\n)\n\nvar (\n\tclientPreface = []byte(ClientPreface)\n)\n\ntype streamState int\n\n// HTTP/2 stream states.\n//\n// See http://tools.ietf.org/html/rfc7540#section-5.1.\n//\n// For simplicity, the server code merges \"reserved (local)\" into\n// \"half-closed (remote)\". This is one less state transition to track.\n// The only downside is that we send PUSH_PROMISEs slightly less\n// liberally than allowable. More discussion here:\n// https://lists.w3.org/Archives/Public/ietf-http-wg/2016JulSep/0599.html\n//\n// \"reserved (remote)\" is omitted since the client code does not\n// support server push.\nconst (\n\tstateIdle streamState = iota\n\tstateOpen\n\tstateHalfClosedLocal\n\tstateHalfClosedRemote\n\tstateClosed\n)\n\nvar stateName = [...]string{\n\tstateIdle:             \"Idle\",\n\tstateOpen:             \"Open\",\n\tstateHalfClosedLocal:  \"HalfClosedLocal\",\n\tstateHalfClosedRemote: \"HalfClosedRemote\",\n\tstateClosed:           \"Closed\",\n}\n\nfunc (st streamState) String() string {\n\treturn stateName[st]\n}\n\n// Setting is a setting parameter: which setting it is, and its value.\ntype Setting struct {\n\t// ID is which setting is being set.\n\t// See https://httpwg.org/specs/rfc7540.html#SettingFormat\n\tID SettingID\n\n\t// Val is the value.\n\tVal uint32\n}\n\nfunc (s Setting) String() string {\n\treturn fmt.Sprintf(\"[%v = %d]\", s.ID, s.Val)\n}\n\n// Valid reports whether the setting is valid.\nfunc (s Setting) Valid() error {\n\t// Limits and error codes from 6.5.2 Defined SETTINGS Parameters\n\tswitch s.ID {\n\tcase SettingEnablePush:\n\t\tif s.Val != 1 && s.Val != 0 {\n\t\t\treturn ConnectionError(ErrCodeProtocol)\n\t\t}\n\tcase SettingInitialWindowSize:\n\t\tif s.Val > 1<<31-1 {\n\t\t\treturn ConnectionError(ErrCodeFlowControl)\n\t\t}\n\tcase SettingMaxFrameSize:\n\t\tif s.Val < 16384 || s.Val > 1<<24-1 {\n\t\t\treturn ConnectionError(ErrCodeProtocol)\n\t\t}\n\tcase SettingEnableConnectProtocol:\n\t\tif s.Val != 1 && s.Val != 0 {\n\t\t\treturn ConnectionError(ErrCodeProtocol)\n\t\t}\n\t}\n\treturn nil\n}\n\n// A SettingID is an HTTP/2 setting as defined in\n// https://httpwg.org/specs/rfc7540.html#iana-settings\ntype SettingID uint16\n\nconst (\n\tSettingHeaderTableSize       SettingID = 0x1\n\tSettingEnablePush            SettingID = 0x2\n\tSettingMaxConcurrentStreams  SettingID = 0x3\n\tSettingInitialWindowSize     SettingID = 0x4\n\tSettingMaxFrameSize          SettingID = 0x5\n\tSettingMaxHeaderListSize     SettingID = 0x6\n\tSettingEnableConnectProtocol SettingID = 0x8\n\tSettingNoRFC7540Priorities   SettingID = 0x9\n)\n\nvar settingName = map[SettingID]string{\n\tSettingHeaderTableSize:       \"HEADER_TABLE_SIZE\",\n\tSettingEnablePush:            \"ENABLE_PUSH\",\n\tSettingMaxConcurrentStreams:  \"MAX_CONCURRENT_STREAMS\",\n\tSettingInitialWindowSize:     \"INITIAL_WINDOW_SIZE\",\n\tSettingMaxFrameSize:          \"MAX_FRAME_SIZE\",\n\tSettingMaxHeaderListSize:     \"MAX_HEADER_LIST_SIZE\",\n\tSettingEnableConnectProtocol: \"ENABLE_CONNECT_PROTOCOL\",\n\tSettingNoRFC7540Priorities:   \"NO_RFC7540_PRIORITIES\",\n}\n\nfunc (s SettingID) String() string {\n\tif v, ok := settingName[s]; ok {\n\t\treturn v\n\t}\n\treturn fmt.Sprintf(\"UNKNOWN_SETTING_%d\", uint16(s))\n}\n\n// validWireHeaderFieldName reports whether v is a valid header field\n// name (key). See httpguts.ValidHeaderName for the base rules.\n//\n// Further, http2 says:\n//\n//\t\"Just as in HTTP/1.x, header field names are strings of ASCII\n//\tcharacters that are compared in a case-insensitive\n//\tfashion. However, header field names MUST be converted to\n//\tlowercase prior to their encoding in HTTP/2. \"\nfunc validWireHeaderFieldName(v string) bool {\n\tif len(v) == 0 {\n\t\treturn false\n\t}\n\tfor _, r := range v {\n\t\tif !httpguts.IsTokenRune(r) {\n\t\t\treturn false\n\t\t}\n\t\tif 'A' <= r && r <= 'Z' {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc httpCodeString(code int) string {\n\tswitch code {\n\tcase 200:\n\t\treturn \"200\"\n\tcase 404:\n\t\treturn \"404\"\n\t}\n\treturn strconv.Itoa(code)\n}\n\n// from pkg io\ntype stringWriter interface {\n\tWriteString(s string) (n int, err error)\n}\n\n// A closeWaiter is like a sync.WaitGroup but only goes 1 to 0 (open to closed).\ntype closeWaiter chan struct{}\n\n// Init makes a closeWaiter usable.\n// It exists because so a closeWaiter value can be placed inside a\n// larger struct and have the Mutex and Cond's memory in the same\n// allocation.\nfunc (cw *closeWaiter) Init() {\n\t*cw = make(chan struct{})\n}\n\n// Close marks the closeWaiter as closed and unblocks any waiters.\nfunc (cw closeWaiter) Close() {\n\tclose(cw)\n}\n\n// Wait waits for the closeWaiter to become closed.\nfunc (cw closeWaiter) Wait() {\n\t<-cw\n}\n\n// bufferedWriter is a buffered writer that writes to w.\n// Its buffered writer is lazily allocated as needed, to minimize\n// idle memory usage with many connections.\ntype bufferedWriter struct {\n\t_           incomparable\n\tconn        net.Conn      // immutable\n\tbw          *bufio.Writer // non-nil when data is buffered\n\tbyteTimeout time.Duration // immutable, WriteByteTimeout\n}\n\nfunc newBufferedWriter(conn net.Conn, timeout time.Duration) *bufferedWriter {\n\treturn &bufferedWriter{\n\t\tconn:        conn,\n\t\tbyteTimeout: timeout,\n\t}\n}\n\n// bufWriterPoolBufferSize is the size of bufio.Writer's\n// buffers created using bufWriterPool.\n//\n// TODO: pick a less arbitrary value? this is a bit under\n// (3 x typical 1500 byte MTU) at least. Other than that,\n// not much thought went into it.\nconst bufWriterPoolBufferSize = 4 << 10\n\nvar bufWriterPool = sync.Pool{\n\tNew: func() interface{} {\n\t\treturn bufio.NewWriterSize(nil, bufWriterPoolBufferSize)\n\t},\n}\n\nfunc (w *bufferedWriter) Available() int {\n\tif w.bw == nil {\n\t\treturn bufWriterPoolBufferSize\n\t}\n\treturn w.bw.Available()\n}\n\nfunc (w *bufferedWriter) Write(p []byte) (n int, err error) {\n\tif w.bw == nil {\n\t\tbw := bufWriterPool.Get().(*bufio.Writer)\n\t\tbw.Reset((*bufferedWriterTimeoutWriter)(w))\n\t\tw.bw = bw\n\t}\n\treturn w.bw.Write(p)\n}\n\nfunc (w *bufferedWriter) Flush() error {\n\tbw := w.bw\n\tif bw == nil {\n\t\treturn nil\n\t}\n\terr := bw.Flush()\n\tbw.Reset(nil)\n\tbufWriterPool.Put(bw)\n\tw.bw = nil\n\treturn err\n}\n\ntype bufferedWriterTimeoutWriter bufferedWriter\n\nfunc (w *bufferedWriterTimeoutWriter) Write(p []byte) (n int, err error) {\n\treturn writeWithByteTimeout(w.conn, w.byteTimeout, p)\n}\n\n// writeWithByteTimeout writes to conn.\n// If more than timeout passes without any bytes being written to the connection,\n// the write fails.\nfunc writeWithByteTimeout(conn net.Conn, timeout time.Duration, p []byte) (n int, err error) {\n\tif timeout <= 0 {\n\t\treturn conn.Write(p)\n\t}\n\tfor {\n\t\tconn.SetWriteDeadline(time.Now().Add(timeout))\n\t\tnn, err := conn.Write(p[n:])\n\t\tn += nn\n\t\tif n == len(p) || nn == 0 || !errors.Is(err, os.ErrDeadlineExceeded) {\n\t\t\t// Either we finished the write, made no progress, or hit the deadline.\n\t\t\t// Whichever it is, we're done now.\n\t\t\tconn.SetWriteDeadline(time.Time{})\n\t\t\treturn n, err\n\t\t}\n\t}\n}\n\nfunc mustUint31(v int32) uint32 {\n\tif v < 0 || v > 2147483647 {\n\t\tpanic(\"out of range\")\n\t}\n\treturn uint32(v)\n}\n\n// bodyAllowedForStatus reports whether a given response status code\n// permits a body. See RFC 7230, section 3.3.\nfunc bodyAllowedForStatus(status int) bool {\n\tswitch {\n\tcase status >= 100 && status <= 199:\n\t\treturn false\n\tcase status == 204:\n\t\treturn false\n\tcase status == 304:\n\t\treturn false\n\t}\n\treturn true\n}\n\ntype httpError struct {\n\t_       incomparable\n\tmsg     string\n\ttimeout bool\n}\n\nfunc (e *httpError) Error() string   { return e.msg }\nfunc (e *httpError) Timeout() bool   { return e.timeout }\nfunc (e *httpError) Temporary() bool { return true }\n\nvar errTimeout error = &httpError{msg: \"http2: timeout awaiting response headers\", timeout: true}\n\ntype connectionStater interface {\n\tConnectionState() tls.ConnectionState\n}\n\nvar sorterPool = sync.Pool{New: func() interface{} { return new(sorter) }}\n\ntype sorter struct {\n\tv []string // owned by sorter\n}\n\nfunc (s *sorter) Len() int           { return len(s.v) }\nfunc (s *sorter) Swap(i, j int)      { s.v[i], s.v[j] = s.v[j], s.v[i] }\nfunc (s *sorter) Less(i, j int) bool { return s.v[i] < s.v[j] }\n\n// Keys returns the sorted keys of h.\n//\n// The returned slice is only valid until s used again or returned to\n// its pool.\nfunc (s *sorter) Keys(h http.Header) []string {\n\tkeys := s.v[:0]\n\tfor k := range h {\n\t\tkeys = append(keys, k)\n\t}\n\ts.v = keys\n\tsort.Sort(s)\n\treturn keys\n}\n\nfunc (s *sorter) SortStrings(ss []string) {\n\t// Our sorter works on s.v, which sorter owns, so\n\t// stash it away while we sort the user's buffer.\n\tsave := s.v\n\ts.v = ss\n\tsort.Sort(s)\n\ts.v = save\n}\n\n// incomparable is a zero-width, non-comparable type. Adding it to a struct\n// makes that struct also non-comparable, and generally doesn't add\n// any size (as long as it's first).\ntype incomparable [0]func()\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/pipe.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"sync\"\n)\n\n// pipe is a goroutine-safe io.Reader/io.Writer pair. It's like\n// io.Pipe except there are no PipeReader/PipeWriter halves, and the\n// underlying buffer is an interface. (io.Pipe is always unbuffered)\ntype pipe struct {\n\tmu       sync.Mutex\n\tc        sync.Cond     // c.L lazily initialized to &p.mu\n\tb        pipeBuffer    // nil when done reading\n\tunread   int           // bytes unread when done\n\terr      error         // read error once empty. non-nil means closed.\n\tbreakErr error         // immediate read error (caller doesn't see rest of b)\n\tdonec    chan struct{} // closed on error\n\treadFn   func()        // optional code to run in Read before error\n}\n\ntype pipeBuffer interface {\n\tLen() int\n\tio.Writer\n\tio.Reader\n}\n\n// setBuffer initializes the pipe buffer.\n// It has no effect if the pipe is already closed.\nfunc (p *pipe) setBuffer(b pipeBuffer) {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tif p.err != nil || p.breakErr != nil {\n\t\treturn\n\t}\n\tp.b = b\n}\n\nfunc (p *pipe) Len() int {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tif p.b == nil {\n\t\treturn p.unread\n\t}\n\treturn p.b.Len()\n}\n\n// Read waits until data is available and copies bytes\n// from the buffer into p.\nfunc (p *pipe) Read(d []byte) (n int, err error) {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tif p.c.L == nil {\n\t\tp.c.L = &p.mu\n\t}\n\tfor {\n\t\tif p.breakErr != nil {\n\t\t\treturn 0, p.breakErr\n\t\t}\n\t\tif p.b != nil && p.b.Len() > 0 {\n\t\t\treturn p.b.Read(d)\n\t\t}\n\t\tif p.err != nil {\n\t\t\tif p.readFn != nil {\n\t\t\t\tp.readFn()     // e.g. copy trailers\n\t\t\t\tp.readFn = nil // not sticky like p.err\n\t\t\t}\n\t\t\tp.b = nil\n\t\t\treturn 0, p.err\n\t\t}\n\t\tp.c.Wait()\n\t}\n}\n\nvar (\n\terrClosedPipeWrite        = errors.New(\"write on closed buffer\")\n\terrUninitializedPipeWrite = errors.New(\"write on uninitialized buffer\")\n)\n\n// Write copies bytes from p into the buffer and wakes a reader.\n// It is an error to write more data than the buffer can hold.\nfunc (p *pipe) Write(d []byte) (n int, err error) {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tif p.c.L == nil {\n\t\tp.c.L = &p.mu\n\t}\n\tdefer p.c.Signal()\n\tif p.err != nil || p.breakErr != nil {\n\t\treturn 0, errClosedPipeWrite\n\t}\n\t// pipe.setBuffer is never invoked, leaving the buffer uninitialized.\n\t// We shouldn't try to write to an uninitialized pipe,\n\t// but returning an error is better than panicking.\n\tif p.b == nil {\n\t\treturn 0, errUninitializedPipeWrite\n\t}\n\treturn p.b.Write(d)\n}\n\n// CloseWithError causes the next Read (waking up a current blocked\n// Read if needed) to return the provided err after all data has been\n// read.\n//\n// The error must be non-nil.\nfunc (p *pipe) CloseWithError(err error) { p.closeWithError(&p.err, err, nil) }\n\n// BreakWithError causes the next Read (waking up a current blocked\n// Read if needed) to return the provided err immediately, without\n// waiting for unread data.\nfunc (p *pipe) BreakWithError(err error) { p.closeWithError(&p.breakErr, err, nil) }\n\n// closeWithErrorAndCode is like CloseWithError but also sets some code to run\n// in the caller's goroutine before returning the error.\nfunc (p *pipe) closeWithErrorAndCode(err error, fn func()) { p.closeWithError(&p.err, err, fn) }\n\nfunc (p *pipe) closeWithError(dst *error, err error, fn func()) {\n\tif err == nil {\n\t\tpanic(\"err must be non-nil\")\n\t}\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tif p.c.L == nil {\n\t\tp.c.L = &p.mu\n\t}\n\tdefer p.c.Signal()\n\tif *dst != nil {\n\t\t// Already been done.\n\t\treturn\n\t}\n\tp.readFn = fn\n\tif dst == &p.breakErr {\n\t\tif p.b != nil {\n\t\t\tp.unread += p.b.Len()\n\t\t}\n\t\tp.b = nil\n\t}\n\t*dst = err\n\tp.closeDoneLocked()\n}\n\n// requires p.mu be held.\nfunc (p *pipe) closeDoneLocked() {\n\tif p.donec == nil {\n\t\treturn\n\t}\n\t// Close if unclosed. This isn't racy since we always\n\t// hold p.mu while closing.\n\tselect {\n\tcase <-p.donec:\n\tdefault:\n\t\tclose(p.donec)\n\t}\n}\n\n// Err returns the error (if any) first set by BreakWithError or CloseWithError.\nfunc (p *pipe) Err() error {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tif p.breakErr != nil {\n\t\treturn p.breakErr\n\t}\n\treturn p.err\n}\n\n// Done returns a channel which is closed if and when this pipe is closed\n// with CloseWithError.\nfunc (p *pipe) Done() <-chan struct{} {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tif p.donec == nil {\n\t\tp.donec = make(chan struct{})\n\t\tif p.err != nil || p.breakErr != nil {\n\t\t\t// Already hit an error.\n\t\t\tp.closeDoneLocked()\n\t\t}\n\t}\n\treturn p.donec\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/server.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// TODO: turn off the serve goroutine when idle, so\n// an idle conn only has the readFrames goroutine active. (which could\n// also be optimized probably to pin less memory in crypto/tls). This\n// would involve tracking when the serve goroutine is active (atomic\n// int32 read/CAS probably?) and starting it up when frames arrive,\n// and shutting it down when all handlers exit. the occasional PING\n// packets could use time.AfterFunc to call sc.wakeStartServeLoop()\n// (which is a no-op if already running) and then queue the PING write\n// as normal. The serve loop would then exit in most cases (if no\n// Handlers running) and not be woken up again until the PING packet\n// returns.\n\n// TODO (maybe): add a mechanism for Handlers to going into\n// half-closed-local mode (rw.(io.Closer) test?) but not exit their\n// handler, and continue to be able to read from the\n// Request.Body. This would be a somewhat semantic change from HTTP/1\n// (or at least what we expose in net/http), so I'd probably want to\n// add it there too. For now, this package says that returning from\n// the Handler ServeHTTP function means you're both done reading and\n// done writing, without a way to stop just one or the other.\n\npackage http2\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/rand\"\n\t\"crypto/tls\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"math\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/textproto\"\n\t\"net/url\"\n\t\"os\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"golang.org/x/net/http/httpguts\"\n\t\"golang.org/x/net/http2/hpack\"\n\t\"golang.org/x/net/internal/httpcommon\"\n)\n\nconst (\n\tprefaceTimeout        = 10 * time.Second\n\tfirstSettingsTimeout  = 2 * time.Second // should be in-flight with preface anyway\n\thandlerChunkWriteSize = 4 << 10\n\tdefaultMaxStreams     = 250 // TODO: make this 100 as the GFE seems to?\n\n\t// maxQueuedControlFrames is the maximum number of control frames like\n\t// SETTINGS, PING and RST_STREAM that will be queued for writing before\n\t// the connection is closed to prevent memory exhaustion attacks.\n\tmaxQueuedControlFrames = 10000\n)\n\nvar (\n\terrClientDisconnected = errors.New(\"client disconnected\")\n\terrClosedBody         = errors.New(\"body closed by handler\")\n\terrHandlerComplete    = errors.New(\"http2: request body closed due to handler exiting\")\n\terrStreamClosed       = errors.New(\"http2: stream closed\")\n)\n\nvar responseWriterStatePool = sync.Pool{\n\tNew: func() interface{} {\n\t\trws := &responseWriterState{}\n\t\trws.bw = bufio.NewWriterSize(chunkWriter{rws}, handlerChunkWriteSize)\n\t\treturn rws\n\t},\n}\n\n// Test hooks.\nvar (\n\ttestHookOnConn        func()\n\ttestHookGetServerConn func(*serverConn)\n\ttestHookOnPanicMu     *sync.Mutex // nil except in tests\n\ttestHookOnPanic       func(sc *serverConn, panicVal interface{}) (rePanic bool)\n)\n\n// Server is an HTTP/2 server.\ntype Server struct {\n\t// MaxHandlers limits the number of http.Handler ServeHTTP goroutines\n\t// which may run at a time over all connections.\n\t// Negative or zero no limit.\n\t// TODO: implement\n\tMaxHandlers int\n\n\t// MaxConcurrentStreams optionally specifies the number of\n\t// concurrent streams that each client may have open at a\n\t// time. This is unrelated to the number of http.Handler goroutines\n\t// which may be active globally, which is MaxHandlers.\n\t// If zero, MaxConcurrentStreams defaults to at least 100, per\n\t// the HTTP/2 spec's recommendations.\n\tMaxConcurrentStreams uint32\n\n\t// MaxDecoderHeaderTableSize optionally specifies the http2\n\t// SETTINGS_HEADER_TABLE_SIZE to send in the initial settings frame. It\n\t// informs the remote endpoint of the maximum size of the header compression\n\t// table used to decode header blocks, in octets. If zero, the default value\n\t// of 4096 is used.\n\tMaxDecoderHeaderTableSize uint32\n\n\t// MaxEncoderHeaderTableSize optionally specifies an upper limit for the\n\t// header compression table used for encoding request headers. Received\n\t// SETTINGS_HEADER_TABLE_SIZE settings are capped at this limit. If zero,\n\t// the default value of 4096 is used.\n\tMaxEncoderHeaderTableSize uint32\n\n\t// MaxReadFrameSize optionally specifies the largest frame\n\t// this server is willing to read. A valid value is between\n\t// 16k and 16M, inclusive. If zero or otherwise invalid, a\n\t// default value is used.\n\tMaxReadFrameSize uint32\n\n\t// PermitProhibitedCipherSuites, if true, permits the use of\n\t// cipher suites prohibited by the HTTP/2 spec.\n\tPermitProhibitedCipherSuites bool\n\n\t// IdleTimeout specifies how long until idle clients should be\n\t// closed with a GOAWAY frame. PING frames are not considered\n\t// activity for the purposes of IdleTimeout.\n\t// If zero or negative, there is no timeout.\n\tIdleTimeout time.Duration\n\n\t// ReadIdleTimeout is the timeout after which a health check using a ping\n\t// frame will be carried out if no frame is received on the connection.\n\t// If zero, no health check is performed.\n\tReadIdleTimeout time.Duration\n\n\t// PingTimeout is the timeout after which the connection will be closed\n\t// if a response to a ping is not received.\n\t// If zero, a default of 15 seconds is used.\n\tPingTimeout time.Duration\n\n\t// WriteByteTimeout is the timeout after which a connection will be\n\t// closed if no data can be written to it. The timeout begins when data is\n\t// available to write, and is extended whenever any bytes are written.\n\t// If zero or negative, there is no timeout.\n\tWriteByteTimeout time.Duration\n\n\t// MaxUploadBufferPerConnection is the size of the initial flow\n\t// control window for each connections. The HTTP/2 spec does not\n\t// allow this to be smaller than 65535 or larger than 2^32-1.\n\t// If the value is outside this range, a default value will be\n\t// used instead.\n\tMaxUploadBufferPerConnection int32\n\n\t// MaxUploadBufferPerStream is the size of the initial flow control\n\t// window for each stream. The HTTP/2 spec does not allow this to\n\t// be larger than 2^32-1. If the value is zero or larger than the\n\t// maximum, a default value will be used instead.\n\tMaxUploadBufferPerStream int32\n\n\t// NewWriteScheduler constructs a write scheduler for a connection.\n\t// If nil, a default scheduler is chosen.\n\tNewWriteScheduler func() WriteScheduler\n\n\t// CountError, if non-nil, is called on HTTP/2 server errors.\n\t// It's intended to increment a metric for monitoring, such\n\t// as an expvar or Prometheus metric.\n\t// The errType consists of only ASCII word characters.\n\tCountError func(errType string)\n\n\t// Internal state. This is a pointer (rather than embedded directly)\n\t// so that we don't embed a Mutex in this struct, which will make the\n\t// struct non-copyable, which might break some callers.\n\tstate *serverInternalState\n}\n\ntype serverInternalState struct {\n\tmu          sync.Mutex\n\tactiveConns map[*serverConn]struct{}\n\n\t// Pool of error channels. This is per-Server rather than global\n\t// because channels can't be reused across synctest bubbles.\n\terrChanPool sync.Pool\n}\n\nfunc (s *serverInternalState) registerConn(sc *serverConn) {\n\tif s == nil {\n\t\treturn // if the Server was used without calling ConfigureServer\n\t}\n\ts.mu.Lock()\n\ts.activeConns[sc] = struct{}{}\n\ts.mu.Unlock()\n}\n\nfunc (s *serverInternalState) unregisterConn(sc *serverConn) {\n\tif s == nil {\n\t\treturn // if the Server was used without calling ConfigureServer\n\t}\n\ts.mu.Lock()\n\tdelete(s.activeConns, sc)\n\ts.mu.Unlock()\n}\n\nfunc (s *serverInternalState) startGracefulShutdown() {\n\tif s == nil {\n\t\treturn // if the Server was used without calling ConfigureServer\n\t}\n\ts.mu.Lock()\n\tfor sc := range s.activeConns {\n\t\tsc.startGracefulShutdown()\n\t}\n\ts.mu.Unlock()\n}\n\n// Global error channel pool used for uninitialized Servers.\n// We use a per-Server pool when possible to avoid using channels across synctest bubbles.\nvar errChanPool = sync.Pool{\n\tNew: func() any { return make(chan error, 1) },\n}\n\nfunc (s *serverInternalState) getErrChan() chan error {\n\tif s == nil {\n\t\treturn errChanPool.Get().(chan error) // Server used without calling ConfigureServer\n\t}\n\treturn s.errChanPool.Get().(chan error)\n}\n\nfunc (s *serverInternalState) putErrChan(ch chan error) {\n\tif s == nil {\n\t\terrChanPool.Put(ch) // Server used without calling ConfigureServer\n\t\treturn\n\t}\n\ts.errChanPool.Put(ch)\n}\n\n// ConfigureServer adds HTTP/2 support to a net/http Server.\n//\n// The configuration conf may be nil.\n//\n// ConfigureServer must be called before s begins serving.\nfunc ConfigureServer(s *http.Server, conf *Server) error {\n\tif s == nil {\n\t\tpanic(\"nil *http.Server\")\n\t}\n\tif conf == nil {\n\t\tconf = new(Server)\n\t}\n\tconf.state = &serverInternalState{\n\t\tactiveConns: make(map[*serverConn]struct{}),\n\t\terrChanPool: sync.Pool{New: func() any { return make(chan error, 1) }},\n\t}\n\tif h1, h2 := s, conf; h2.IdleTimeout == 0 {\n\t\tif h1.IdleTimeout != 0 {\n\t\t\th2.IdleTimeout = h1.IdleTimeout\n\t\t} else {\n\t\t\th2.IdleTimeout = h1.ReadTimeout\n\t\t}\n\t}\n\ts.RegisterOnShutdown(conf.state.startGracefulShutdown)\n\n\tif s.TLSConfig == nil {\n\t\ts.TLSConfig = new(tls.Config)\n\t} else if s.TLSConfig.CipherSuites != nil && s.TLSConfig.MinVersion < tls.VersionTLS13 {\n\t\t// If they already provided a TLS 1.0–1.2 CipherSuite list, return an\n\t\t// error if it is missing ECDHE_RSA_WITH_AES_128_GCM_SHA256 or\n\t\t// ECDHE_ECDSA_WITH_AES_128_GCM_SHA256.\n\t\thaveRequired := false\n\t\tfor _, cs := range s.TLSConfig.CipherSuites {\n\t\t\tswitch cs {\n\t\t\tcase tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,\n\t\t\t\t// Alternative MTI cipher to not discourage ECDSA-only servers.\n\t\t\t\t// See http://golang.org/cl/30721 for further information.\n\t\t\t\ttls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:\n\t\t\t\thaveRequired = true\n\t\t\t}\n\t\t}\n\t\tif !haveRequired {\n\t\t\treturn fmt.Errorf(\"http2: TLSConfig.CipherSuites is missing an HTTP/2-required AES_128_GCM_SHA256 cipher (need at least one of TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 or TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256)\")\n\t\t}\n\t}\n\n\t// Note: not setting MinVersion to tls.VersionTLS12,\n\t// as we don't want to interfere with HTTP/1.1 traffic\n\t// on the user's server. We enforce TLS 1.2 later once\n\t// we accept a connection. Ideally this should be done\n\t// during next-proto selection, but using TLS <1.2 with\n\t// HTTP/2 is still the client's bug.\n\n\ts.TLSConfig.PreferServerCipherSuites = true\n\n\tif !strSliceContains(s.TLSConfig.NextProtos, NextProtoTLS) {\n\t\ts.TLSConfig.NextProtos = append(s.TLSConfig.NextProtos, NextProtoTLS)\n\t}\n\tif !strSliceContains(s.TLSConfig.NextProtos, \"http/1.1\") {\n\t\ts.TLSConfig.NextProtos = append(s.TLSConfig.NextProtos, \"http/1.1\")\n\t}\n\n\tif s.TLSNextProto == nil {\n\t\ts.TLSNextProto = map[string]func(*http.Server, *tls.Conn, http.Handler){}\n\t}\n\tprotoHandler := func(hs *http.Server, c net.Conn, h http.Handler, sawClientPreface bool) {\n\t\tif testHookOnConn != nil {\n\t\t\ttestHookOnConn()\n\t\t}\n\t\t// The TLSNextProto interface predates contexts, so\n\t\t// the net/http package passes down its per-connection\n\t\t// base context via an exported but unadvertised\n\t\t// method on the Handler. This is for internal\n\t\t// net/http<=>http2 use only.\n\t\tvar ctx context.Context\n\t\ttype baseContexter interface {\n\t\t\tBaseContext() context.Context\n\t\t}\n\t\tif bc, ok := h.(baseContexter); ok {\n\t\t\tctx = bc.BaseContext()\n\t\t}\n\t\tconf.ServeConn(c, &ServeConnOpts{\n\t\t\tContext:          ctx,\n\t\t\tHandler:          h,\n\t\t\tBaseConfig:       hs,\n\t\t\tSawClientPreface: sawClientPreface,\n\t\t})\n\t}\n\ts.TLSNextProto[NextProtoTLS] = func(hs *http.Server, c *tls.Conn, h http.Handler) {\n\t\tprotoHandler(hs, c, h, false)\n\t}\n\t// The \"unencrypted_http2\" TLSNextProto key is used to pass off non-TLS HTTP/2 conns.\n\t//\n\t// A connection passed in this method has already had the HTTP/2 preface read from it.\n\ts.TLSNextProto[nextProtoUnencryptedHTTP2] = func(hs *http.Server, c *tls.Conn, h http.Handler) {\n\t\tnc, err := unencryptedNetConnFromTLSConn(c)\n\t\tif err != nil {\n\t\t\tif lg := hs.ErrorLog; lg != nil {\n\t\t\t\tlg.Print(err)\n\t\t\t} else {\n\t\t\t\tlog.Print(err)\n\t\t\t}\n\t\t\tgo c.Close()\n\t\t\treturn\n\t\t}\n\t\tprotoHandler(hs, nc, h, true)\n\t}\n\treturn nil\n}\n\n// ServeConnOpts are options for the Server.ServeConn method.\ntype ServeConnOpts struct {\n\t// Context is the base context to use.\n\t// If nil, context.Background is used.\n\tContext context.Context\n\n\t// BaseConfig optionally sets the base configuration\n\t// for values. If nil, defaults are used.\n\tBaseConfig *http.Server\n\n\t// Handler specifies which handler to use for processing\n\t// requests. If nil, BaseConfig.Handler is used. If BaseConfig\n\t// or BaseConfig.Handler is nil, http.DefaultServeMux is used.\n\tHandler http.Handler\n\n\t// UpgradeRequest is an initial request received on a connection\n\t// undergoing an h2c upgrade. The request body must have been\n\t// completely read from the connection before calling ServeConn,\n\t// and the 101 Switching Protocols response written.\n\tUpgradeRequest *http.Request\n\n\t// Settings is the decoded contents of the HTTP2-Settings header\n\t// in an h2c upgrade request.\n\tSettings []byte\n\n\t// SawClientPreface is set if the HTTP/2 connection preface\n\t// has already been read from the connection.\n\tSawClientPreface bool\n}\n\nfunc (o *ServeConnOpts) context() context.Context {\n\tif o != nil && o.Context != nil {\n\t\treturn o.Context\n\t}\n\treturn context.Background()\n}\n\nfunc (o *ServeConnOpts) baseConfig() *http.Server {\n\tif o != nil && o.BaseConfig != nil {\n\t\treturn o.BaseConfig\n\t}\n\treturn new(http.Server)\n}\n\nfunc (o *ServeConnOpts) handler() http.Handler {\n\tif o != nil {\n\t\tif o.Handler != nil {\n\t\t\treturn o.Handler\n\t\t}\n\t\tif o.BaseConfig != nil && o.BaseConfig.Handler != nil {\n\t\t\treturn o.BaseConfig.Handler\n\t\t}\n\t}\n\treturn http.DefaultServeMux\n}\n\n// ServeConn serves HTTP/2 requests on the provided connection and\n// blocks until the connection is no longer readable.\n//\n// ServeConn starts speaking HTTP/2 assuming that c has not had any\n// reads or writes. It writes its initial settings frame and expects\n// to be able to read the preface and settings frame from the\n// client. If c has a ConnectionState method like a *tls.Conn, the\n// ConnectionState is used to verify the TLS ciphersuite and to set\n// the Request.TLS field in Handlers.\n//\n// ServeConn does not support h2c by itself. Any h2c support must be\n// implemented in terms of providing a suitably-behaving net.Conn.\n//\n// The opts parameter is optional. If nil, default values are used.\nfunc (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) {\n\tif opts == nil {\n\t\topts = &ServeConnOpts{}\n\t}\n\ts.serveConn(c, opts, nil)\n}\n\nfunc (s *Server) serveConn(c net.Conn, opts *ServeConnOpts, newf func(*serverConn)) {\n\tbaseCtx, cancel := serverConnBaseContext(c, opts)\n\tdefer cancel()\n\n\thttp1srv := opts.baseConfig()\n\tconf := configFromServer(http1srv, s)\n\tsc := &serverConn{\n\t\tsrv:                         s,\n\t\ths:                          http1srv,\n\t\tconn:                        c,\n\t\tbaseCtx:                     baseCtx,\n\t\tremoteAddrStr:               c.RemoteAddr().String(),\n\t\tbw:                          newBufferedWriter(c, conf.WriteByteTimeout),\n\t\thandler:                     opts.handler(),\n\t\tstreams:                     make(map[uint32]*stream),\n\t\treadFrameCh:                 make(chan readFrameResult),\n\t\twantWriteFrameCh:            make(chan FrameWriteRequest, 8),\n\t\tserveMsgCh:                  make(chan interface{}, 8),\n\t\twroteFrameCh:                make(chan frameWriteResult, 1), // buffered; one send in writeFrameAsync\n\t\tbodyReadCh:                  make(chan bodyReadMsg),         // buffering doesn't matter either way\n\t\tdoneServing:                 make(chan struct{}),\n\t\tclientMaxStreams:            math.MaxUint32, // Section 6.5.2: \"Initially, there is no limit to this value\"\n\t\tadvMaxStreams:               conf.MaxConcurrentStreams,\n\t\tinitialStreamSendWindowSize: initialWindowSize,\n\t\tinitialStreamRecvWindowSize: conf.MaxUploadBufferPerStream,\n\t\tmaxFrameSize:                initialMaxFrameSize,\n\t\tpingTimeout:                 conf.PingTimeout,\n\t\tcountErrorFunc:              conf.CountError,\n\t\tserveG:                      newGoroutineLock(),\n\t\tpushEnabled:                 true,\n\t\tsawClientPreface:            opts.SawClientPreface,\n\t}\n\tif newf != nil {\n\t\tnewf(sc)\n\t}\n\n\ts.state.registerConn(sc)\n\tdefer s.state.unregisterConn(sc)\n\n\t// The net/http package sets the write deadline from the\n\t// http.Server.WriteTimeout during the TLS handshake, but then\n\t// passes the connection off to us with the deadline already set.\n\t// Write deadlines are set per stream in serverConn.newStream.\n\t// Disarm the net.Conn write deadline here.\n\tif sc.hs.WriteTimeout > 0 {\n\t\tsc.conn.SetWriteDeadline(time.Time{})\n\t}\n\n\tswitch {\n\tcase s.NewWriteScheduler != nil:\n\t\tsc.writeSched = s.NewWriteScheduler()\n\tcase clientPriorityDisabled(http1srv):\n\t\tsc.writeSched = newRoundRobinWriteScheduler()\n\tdefault:\n\t\tsc.writeSched = newPriorityWriteSchedulerRFC9218()\n\t}\n\n\t// These start at the RFC-specified defaults. If there is a higher\n\t// configured value for inflow, that will be updated when we send a\n\t// WINDOW_UPDATE shortly after sending SETTINGS.\n\tsc.flow.add(initialWindowSize)\n\tsc.inflow.init(initialWindowSize)\n\tsc.hpackEncoder = hpack.NewEncoder(&sc.headerWriteBuf)\n\tsc.hpackEncoder.SetMaxDynamicTableSizeLimit(conf.MaxEncoderHeaderTableSize)\n\n\tfr := NewFramer(sc.bw, c)\n\tif conf.CountError != nil {\n\t\tfr.countError = conf.CountError\n\t}\n\tfr.ReadMetaHeaders = hpack.NewDecoder(conf.MaxDecoderHeaderTableSize, nil)\n\tfr.MaxHeaderListSize = sc.maxHeaderListSize()\n\tfr.SetMaxReadFrameSize(conf.MaxReadFrameSize)\n\tsc.framer = fr\n\n\tif tc, ok := c.(connectionStater); ok {\n\t\tsc.tlsState = new(tls.ConnectionState)\n\t\t*sc.tlsState = tc.ConnectionState()\n\t\t// 9.2 Use of TLS Features\n\t\t// An implementation of HTTP/2 over TLS MUST use TLS\n\t\t// 1.2 or higher with the restrictions on feature set\n\t\t// and cipher suite described in this section. Due to\n\t\t// implementation limitations, it might not be\n\t\t// possible to fail TLS negotiation. An endpoint MUST\n\t\t// immediately terminate an HTTP/2 connection that\n\t\t// does not meet the TLS requirements described in\n\t\t// this section with a connection error (Section\n\t\t// 5.4.1) of type INADEQUATE_SECURITY.\n\t\tif sc.tlsState.Version < tls.VersionTLS12 {\n\t\t\tsc.rejectConn(ErrCodeInadequateSecurity, \"TLS version too low\")\n\t\t\treturn\n\t\t}\n\n\t\tif sc.tlsState.ServerName == \"\" {\n\t\t\t// Client must use SNI, but we don't enforce that anymore,\n\t\t\t// since it was causing problems when connecting to bare IP\n\t\t\t// addresses during development.\n\t\t\t//\n\t\t\t// TODO: optionally enforce? Or enforce at the time we receive\n\t\t\t// a new request, and verify the ServerName matches the :authority?\n\t\t\t// But that precludes proxy situations, perhaps.\n\t\t\t//\n\t\t\t// So for now, do nothing here again.\n\t\t}\n\n\t\tif !conf.PermitProhibitedCipherSuites && isBadCipher(sc.tlsState.CipherSuite) {\n\t\t\t// \"Endpoints MAY choose to generate a connection error\n\t\t\t// (Section 5.4.1) of type INADEQUATE_SECURITY if one of\n\t\t\t// the prohibited cipher suites are negotiated.\"\n\t\t\t//\n\t\t\t// We choose that. In my opinion, the spec is weak\n\t\t\t// here. It also says both parties must support at least\n\t\t\t// TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 so there's no\n\t\t\t// excuses here. If we really must, we could allow an\n\t\t\t// \"AllowInsecureWeakCiphers\" option on the server later.\n\t\t\t// Let's see how it plays out first.\n\t\t\tsc.rejectConn(ErrCodeInadequateSecurity, fmt.Sprintf(\"Prohibited TLS 1.2 Cipher Suite: %x\", sc.tlsState.CipherSuite))\n\t\t\treturn\n\t\t}\n\t}\n\n\tif opts.Settings != nil {\n\t\tfr := &SettingsFrame{\n\t\t\tFrameHeader: FrameHeader{valid: true},\n\t\t\tp:           opts.Settings,\n\t\t}\n\t\tif err := fr.ForeachSetting(sc.processSetting); err != nil {\n\t\t\tsc.rejectConn(ErrCodeProtocol, \"invalid settings\")\n\t\t\treturn\n\t\t}\n\t\topts.Settings = nil\n\t}\n\n\tif hook := testHookGetServerConn; hook != nil {\n\t\thook(sc)\n\t}\n\n\tif opts.UpgradeRequest != nil {\n\t\tsc.upgradeRequest(opts.UpgradeRequest)\n\t\topts.UpgradeRequest = nil\n\t}\n\n\tsc.serve(conf)\n}\n\nfunc serverConnBaseContext(c net.Conn, opts *ServeConnOpts) (ctx context.Context, cancel func()) {\n\tctx, cancel = context.WithCancel(opts.context())\n\tctx = context.WithValue(ctx, http.LocalAddrContextKey, c.LocalAddr())\n\tif hs := opts.baseConfig(); hs != nil {\n\t\tctx = context.WithValue(ctx, http.ServerContextKey, hs)\n\t}\n\treturn\n}\n\nfunc (sc *serverConn) rejectConn(err ErrCode, debug string) {\n\tsc.vlogf(\"http2: server rejecting conn: %v, %s\", err, debug)\n\t// ignoring errors. hanging up anyway.\n\tsc.framer.WriteGoAway(0, err, []byte(debug))\n\tsc.bw.Flush()\n\tsc.conn.Close()\n}\n\ntype serverConn struct {\n\t// Immutable:\n\tsrv              *Server\n\ths               *http.Server\n\tconn             net.Conn\n\tbw               *bufferedWriter // writing to conn\n\thandler          http.Handler\n\tbaseCtx          context.Context\n\tframer           *Framer\n\tdoneServing      chan struct{}          // closed when serverConn.serve ends\n\treadFrameCh      chan readFrameResult   // written by serverConn.readFrames\n\twantWriteFrameCh chan FrameWriteRequest // from handlers -> serve\n\twroteFrameCh     chan frameWriteResult  // from writeFrameAsync -> serve, tickles more frame writes\n\tbodyReadCh       chan bodyReadMsg       // from handlers -> serve\n\tserveMsgCh       chan interface{}       // misc messages & code to send to / run on the serve loop\n\tflow             outflow                // conn-wide (not stream-specific) outbound flow control\n\tinflow           inflow                 // conn-wide inbound flow control\n\ttlsState         *tls.ConnectionState   // shared by all handlers, like net/http\n\tremoteAddrStr    string\n\twriteSched       WriteScheduler\n\tcountErrorFunc   func(errType string)\n\n\t// Everything following is owned by the serve loop; use serveG.check():\n\tserveG                      goroutineLock // used to verify funcs are on serve()\n\tpushEnabled                 bool\n\tsawClientPreface            bool // preface has already been read, used in h2c upgrade\n\tsawFirstSettings            bool // got the initial SETTINGS frame after the preface\n\tneedToSendSettingsAck       bool\n\tunackedSettings             int    // how many SETTINGS have we sent without ACKs?\n\tqueuedControlFrames         int    // control frames in the writeSched queue\n\tclientMaxStreams            uint32 // SETTINGS_MAX_CONCURRENT_STREAMS from client (our PUSH_PROMISE limit)\n\tadvMaxStreams               uint32 // our SETTINGS_MAX_CONCURRENT_STREAMS advertised the client\n\tcurClientStreams            uint32 // number of open streams initiated by the client\n\tcurPushedStreams            uint32 // number of open streams initiated by server push\n\tcurHandlers                 uint32 // number of running handler goroutines\n\tmaxClientStreamID           uint32 // max ever seen from client (odd), or 0 if there have been no client requests\n\tmaxPushPromiseID            uint32 // ID of the last push promise (even), or 0 if there have been no pushes\n\tstreams                     map[uint32]*stream\n\tunstartedHandlers           []unstartedHandler\n\tinitialStreamSendWindowSize int32\n\tinitialStreamRecvWindowSize int32\n\tmaxFrameSize                int32\n\tpeerMaxHeaderListSize       uint32            // zero means unknown (default)\n\tcanonHeader                 map[string]string // http2-lower-case -> Go-Canonical-Case\n\tcanonHeaderKeysSize         int               // canonHeader keys size in bytes\n\twritingFrame                bool              // started writing a frame (on serve goroutine or separate)\n\twritingFrameAsync           bool              // started a frame on its own goroutine but haven't heard back on wroteFrameCh\n\tneedsFrameFlush             bool              // last frame write wasn't a flush\n\tinGoAway                    bool              // we've started to or sent GOAWAY\n\tinFrameScheduleLoop         bool              // whether we're in the scheduleFrameWrite loop\n\tneedToSendGoAway            bool              // we need to schedule a GOAWAY frame write\n\tpingSent                    bool\n\tsentPingData                [8]byte\n\tgoAwayCode                  ErrCode\n\tshutdownTimer               *time.Timer // nil until used\n\tidleTimer                   *time.Timer // nil if unused\n\treadIdleTimeout             time.Duration\n\tpingTimeout                 time.Duration\n\treadIdleTimer               *time.Timer // nil if unused\n\n\t// Owned by the writeFrameAsync goroutine:\n\theaderWriteBuf bytes.Buffer\n\thpackEncoder   *hpack.Encoder\n\n\t// Used by startGracefulShutdown.\n\tshutdownOnce sync.Once\n\n\t// Used for RFC 9218 prioritization.\n\thasIntermediary bool // connection is done via an intermediary / proxy\n\tpriorityAware   bool // the client has sent priority signal, meaning that it is aware of it.\n}\n\nfunc (sc *serverConn) writeSchedIgnoresRFC7540() bool {\n\tswitch sc.writeSched.(type) {\n\tcase *priorityWriteSchedulerRFC9218:\n\t\treturn true\n\tcase *randomWriteScheduler:\n\t\treturn true\n\tcase *roundRobinWriteScheduler:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc (sc *serverConn) maxHeaderListSize() uint32 {\n\tn := sc.hs.MaxHeaderBytes\n\tif n <= 0 {\n\t\tn = http.DefaultMaxHeaderBytes\n\t}\n\treturn uint32(adjustHTTP1MaxHeaderSize(int64(n)))\n}\n\nfunc (sc *serverConn) curOpenStreams() uint32 {\n\tsc.serveG.check()\n\treturn sc.curClientStreams + sc.curPushedStreams\n}\n\n// stream represents a stream. This is the minimal metadata needed by\n// the serve goroutine. Most of the actual stream state is owned by\n// the http.Handler's goroutine in the responseWriter. Because the\n// responseWriter's responseWriterState is recycled at the end of a\n// handler, this struct intentionally has no pointer to the\n// *responseWriter{,State} itself, as the Handler ending nils out the\n// responseWriter's state field.\ntype stream struct {\n\t// immutable:\n\tsc        *serverConn\n\tid        uint32\n\tbody      *pipe       // non-nil if expecting DATA frames\n\tcw        closeWaiter // closed wait stream transitions to closed state\n\tctx       context.Context\n\tcancelCtx func()\n\n\t// owned by serverConn's serve loop:\n\tbodyBytes        int64   // body bytes seen so far\n\tdeclBodyBytes    int64   // or -1 if undeclared\n\tflow             outflow // limits writing from Handler to client\n\tinflow           inflow  // what the client is allowed to POST/etc to us\n\tstate            streamState\n\tresetQueued      bool        // RST_STREAM queued for write; set by sc.resetStream\n\tgotTrailerHeader bool        // HEADER frame for trailers was seen\n\twroteHeaders     bool        // whether we wrote headers (not status 100)\n\treadDeadline     *time.Timer // nil if unused\n\twriteDeadline    *time.Timer // nil if unused\n\tcloseErr         error       // set before cw is closed\n\n\ttrailer    http.Header // accumulated trailers\n\treqTrailer http.Header // handler's Request.Trailer\n}\n\nfunc (sc *serverConn) Framer() *Framer  { return sc.framer }\nfunc (sc *serverConn) CloseConn() error { return sc.conn.Close() }\nfunc (sc *serverConn) Flush() error     { return sc.bw.Flush() }\nfunc (sc *serverConn) HeaderEncoder() (*hpack.Encoder, *bytes.Buffer) {\n\treturn sc.hpackEncoder, &sc.headerWriteBuf\n}\n\nfunc (sc *serverConn) state(streamID uint32) (streamState, *stream) {\n\tsc.serveG.check()\n\t// http://tools.ietf.org/html/rfc7540#section-5.1\n\tif st, ok := sc.streams[streamID]; ok {\n\t\treturn st.state, st\n\t}\n\t// \"The first use of a new stream identifier implicitly closes all\n\t// streams in the \"idle\" state that might have been initiated by\n\t// that peer with a lower-valued stream identifier. For example, if\n\t// a client sends a HEADERS frame on stream 7 without ever sending a\n\t// frame on stream 5, then stream 5 transitions to the \"closed\"\n\t// state when the first frame for stream 7 is sent or received.\"\n\tif streamID%2 == 1 {\n\t\tif streamID <= sc.maxClientStreamID {\n\t\t\treturn stateClosed, nil\n\t\t}\n\t} else {\n\t\tif streamID <= sc.maxPushPromiseID {\n\t\t\treturn stateClosed, nil\n\t\t}\n\t}\n\treturn stateIdle, nil\n}\n\n// setConnState calls the net/http ConnState hook for this connection, if configured.\n// Note that the net/http package does StateNew and StateClosed for us.\n// There is currently no plan for StateHijacked or hijacking HTTP/2 connections.\nfunc (sc *serverConn) setConnState(state http.ConnState) {\n\tif sc.hs.ConnState != nil {\n\t\tsc.hs.ConnState(sc.conn, state)\n\t}\n}\n\nfunc (sc *serverConn) vlogf(format string, args ...interface{}) {\n\tif VerboseLogs {\n\t\tsc.logf(format, args...)\n\t}\n}\n\nfunc (sc *serverConn) logf(format string, args ...interface{}) {\n\tif lg := sc.hs.ErrorLog; lg != nil {\n\t\tlg.Printf(format, args...)\n\t} else {\n\t\tlog.Printf(format, args...)\n\t}\n}\n\n// errno returns v's underlying uintptr, else 0.\n//\n// TODO: remove this helper function once http2 can use build\n// tags. See comment in isClosedConnError.\nfunc errno(v error) uintptr {\n\tif rv := reflect.ValueOf(v); rv.Kind() == reflect.Uintptr {\n\t\treturn uintptr(rv.Uint())\n\t}\n\treturn 0\n}\n\n// isClosedConnError reports whether err is an error from use of a closed\n// network connection.\nfunc isClosedConnError(err error) bool {\n\tif err == nil {\n\t\treturn false\n\t}\n\n\tif errors.Is(err, net.ErrClosed) {\n\t\treturn true\n\t}\n\n\t// TODO(bradfitz): x/tools/cmd/bundle doesn't really support\n\t// build tags, so I can't make an http2_windows.go file with\n\t// Windows-specific stuff. Fix that and move this, once we\n\t// have a way to bundle this into std's net/http somehow.\n\tif runtime.GOOS == \"windows\" {\n\t\tif oe, ok := err.(*net.OpError); ok && oe.Op == \"read\" {\n\t\t\tif se, ok := oe.Err.(*os.SyscallError); ok && se.Syscall == \"wsarecv\" {\n\t\t\t\tconst WSAECONNABORTED = 10053\n\t\t\t\tconst WSAECONNRESET = 10054\n\t\t\t\tif n := errno(se.Err); n == WSAECONNRESET || n == WSAECONNABORTED {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (sc *serverConn) condlogf(err error, format string, args ...interface{}) {\n\tif err == nil {\n\t\treturn\n\t}\n\tif err == io.EOF || err == io.ErrUnexpectedEOF || isClosedConnError(err) || err == errPrefaceTimeout {\n\t\t// Boring, expected errors.\n\t\tsc.vlogf(format, args...)\n\t} else {\n\t\tsc.logf(format, args...)\n\t}\n}\n\n// maxCachedCanonicalHeadersKeysSize is an arbitrarily-chosen limit on the size\n// of the entries in the canonHeader cache.\n// This should be larger than the size of unique, uncommon header keys likely to\n// be sent by the peer, while not so high as to permit unreasonable memory usage\n// if the peer sends an unbounded number of unique header keys.\nconst maxCachedCanonicalHeadersKeysSize = 2048\n\nfunc (sc *serverConn) canonicalHeader(v string) string {\n\tsc.serveG.check()\n\tcv, ok := httpcommon.CachedCanonicalHeader(v)\n\tif ok {\n\t\treturn cv\n\t}\n\tcv, ok = sc.canonHeader[v]\n\tif ok {\n\t\treturn cv\n\t}\n\tif sc.canonHeader == nil {\n\t\tsc.canonHeader = make(map[string]string)\n\t}\n\tcv = http.CanonicalHeaderKey(v)\n\tsize := 100 + len(v)*2 // 100 bytes of map overhead + key + value\n\tif sc.canonHeaderKeysSize+size <= maxCachedCanonicalHeadersKeysSize {\n\t\tsc.canonHeader[v] = cv\n\t\tsc.canonHeaderKeysSize += size\n\t}\n\treturn cv\n}\n\ntype readFrameResult struct {\n\tf   Frame // valid until readMore is called\n\terr error\n\n\t// readMore should be called once the consumer no longer needs or\n\t// retains f. After readMore, f is invalid and more frames can be\n\t// read.\n\treadMore func()\n}\n\n// readFrames is the loop that reads incoming frames.\n// It takes care to only read one frame at a time, blocking until the\n// consumer is done with the frame.\n// It's run on its own goroutine.\nfunc (sc *serverConn) readFrames() {\n\tgate := make(chan struct{})\n\tgateDone := func() { gate <- struct{}{} }\n\tfor {\n\t\tf, err := sc.framer.ReadFrame()\n\t\tselect {\n\t\tcase sc.readFrameCh <- readFrameResult{f, err, gateDone}:\n\t\tcase <-sc.doneServing:\n\t\t\treturn\n\t\t}\n\t\tselect {\n\t\tcase <-gate:\n\t\tcase <-sc.doneServing:\n\t\t\treturn\n\t\t}\n\t\tif terminalReadFrameError(err) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// frameWriteResult is the message passed from writeFrameAsync to the serve goroutine.\ntype frameWriteResult struct {\n\t_   incomparable\n\twr  FrameWriteRequest // what was written (or attempted)\n\terr error             // result of the writeFrame call\n}\n\n// writeFrameAsync runs in its own goroutine and writes a single frame\n// and then reports when it's done.\n// At most one goroutine can be running writeFrameAsync at a time per\n// serverConn.\nfunc (sc *serverConn) writeFrameAsync(wr FrameWriteRequest, wd *writeData) {\n\tvar err error\n\tif wd == nil {\n\t\terr = wr.write.writeFrame(sc)\n\t} else {\n\t\terr = sc.framer.endWrite()\n\t}\n\tsc.wroteFrameCh <- frameWriteResult{wr: wr, err: err}\n}\n\nfunc (sc *serverConn) closeAllStreamsOnConnClose() {\n\tsc.serveG.check()\n\tfor _, st := range sc.streams {\n\t\tsc.closeStream(st, errClientDisconnected)\n\t}\n}\n\nfunc (sc *serverConn) stopShutdownTimer() {\n\tsc.serveG.check()\n\tif t := sc.shutdownTimer; t != nil {\n\t\tt.Stop()\n\t}\n}\n\nfunc (sc *serverConn) notePanic() {\n\t// Note: this is for serverConn.serve panicking, not http.Handler code.\n\tif testHookOnPanicMu != nil {\n\t\ttestHookOnPanicMu.Lock()\n\t\tdefer testHookOnPanicMu.Unlock()\n\t}\n\tif testHookOnPanic != nil {\n\t\tif e := recover(); e != nil {\n\t\t\tif testHookOnPanic(sc, e) {\n\t\t\t\tpanic(e)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (sc *serverConn) serve(conf http2Config) {\n\tsc.serveG.check()\n\tdefer sc.notePanic()\n\tdefer sc.conn.Close()\n\tdefer sc.closeAllStreamsOnConnClose()\n\tdefer sc.stopShutdownTimer()\n\tdefer close(sc.doneServing) // unblocks handlers trying to send\n\n\tif VerboseLogs {\n\t\tsc.vlogf(\"http2: server connection from %v on %p\", sc.conn.RemoteAddr(), sc.hs)\n\t}\n\n\tsettings := writeSettings{\n\t\t{SettingMaxFrameSize, conf.MaxReadFrameSize},\n\t\t{SettingMaxConcurrentStreams, sc.advMaxStreams},\n\t\t{SettingMaxHeaderListSize, sc.maxHeaderListSize()},\n\t\t{SettingHeaderTableSize, conf.MaxDecoderHeaderTableSize},\n\t\t{SettingInitialWindowSize, uint32(sc.initialStreamRecvWindowSize)},\n\t}\n\tif !disableExtendedConnectProtocol {\n\t\tsettings = append(settings, Setting{SettingEnableConnectProtocol, 1})\n\t}\n\tif sc.writeSchedIgnoresRFC7540() {\n\t\tsettings = append(settings, Setting{SettingNoRFC7540Priorities, 1})\n\t}\n\tsc.writeFrame(FrameWriteRequest{\n\t\twrite: settings,\n\t})\n\tsc.unackedSettings++\n\n\t// Each connection starts with initialWindowSize inflow tokens.\n\t// If a higher value is configured, we add more tokens.\n\tif diff := conf.MaxUploadBufferPerConnection - initialWindowSize; diff > 0 {\n\t\tsc.sendWindowUpdate(nil, int(diff))\n\t}\n\n\tif err := sc.readPreface(); err != nil {\n\t\tsc.condlogf(err, \"http2: server: error reading preface from client %v: %v\", sc.conn.RemoteAddr(), err)\n\t\treturn\n\t}\n\t// Now that we've got the preface, get us out of the\n\t// \"StateNew\" state. We can't go directly to idle, though.\n\t// Active means we read some data and anticipate a request. We'll\n\t// do another Active when we get a HEADERS frame.\n\tsc.setConnState(http.StateActive)\n\tsc.setConnState(http.StateIdle)\n\n\tif sc.srv.IdleTimeout > 0 {\n\t\tsc.idleTimer = time.AfterFunc(sc.srv.IdleTimeout, sc.onIdleTimer)\n\t\tdefer sc.idleTimer.Stop()\n\t}\n\n\tif conf.SendPingTimeout > 0 {\n\t\tsc.readIdleTimeout = conf.SendPingTimeout\n\t\tsc.readIdleTimer = time.AfterFunc(conf.SendPingTimeout, sc.onReadIdleTimer)\n\t\tdefer sc.readIdleTimer.Stop()\n\t}\n\n\tgo sc.readFrames() // closed by defer sc.conn.Close above\n\n\tsettingsTimer := time.AfterFunc(firstSettingsTimeout, sc.onSettingsTimer)\n\tdefer settingsTimer.Stop()\n\n\tlastFrameTime := time.Now()\n\tloopNum := 0\n\tfor {\n\t\tloopNum++\n\t\tselect {\n\t\tcase wr := <-sc.wantWriteFrameCh:\n\t\t\tif se, ok := wr.write.(StreamError); ok {\n\t\t\t\tsc.resetStream(se)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tsc.writeFrame(wr)\n\t\tcase res := <-sc.wroteFrameCh:\n\t\t\tsc.wroteFrame(res)\n\t\tcase res := <-sc.readFrameCh:\n\t\t\tlastFrameTime = time.Now()\n\t\t\t// Process any written frames before reading new frames from the client since a\n\t\t\t// written frame could have triggered a new stream to be started.\n\t\t\tif sc.writingFrameAsync {\n\t\t\t\tselect {\n\t\t\t\tcase wroteRes := <-sc.wroteFrameCh:\n\t\t\t\t\tsc.wroteFrame(wroteRes)\n\t\t\t\tdefault:\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !sc.processFrameFromReader(res) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tres.readMore()\n\t\t\tif settingsTimer != nil {\n\t\t\t\tsettingsTimer.Stop()\n\t\t\t\tsettingsTimer = nil\n\t\t\t}\n\t\tcase m := <-sc.bodyReadCh:\n\t\t\tsc.noteBodyRead(m.st, m.n)\n\t\tcase msg := <-sc.serveMsgCh:\n\t\t\tswitch v := msg.(type) {\n\t\t\tcase func(int):\n\t\t\t\tv(loopNum) // for testing\n\t\t\tcase *serverMessage:\n\t\t\t\tswitch v {\n\t\t\t\tcase settingsTimerMsg:\n\t\t\t\t\tsc.logf(\"timeout waiting for SETTINGS frames from %v\", sc.conn.RemoteAddr())\n\t\t\t\t\treturn\n\t\t\t\tcase idleTimerMsg:\n\t\t\t\t\tsc.vlogf(\"connection is idle\")\n\t\t\t\t\tsc.goAway(ErrCodeNo)\n\t\t\t\tcase readIdleTimerMsg:\n\t\t\t\t\tsc.handlePingTimer(lastFrameTime)\n\t\t\t\tcase shutdownTimerMsg:\n\t\t\t\t\tsc.vlogf(\"GOAWAY close timer fired; closing conn from %v\", sc.conn.RemoteAddr())\n\t\t\t\t\treturn\n\t\t\t\tcase gracefulShutdownMsg:\n\t\t\t\t\tsc.startGracefulShutdownInternal()\n\t\t\t\tcase handlerDoneMsg:\n\t\t\t\t\tsc.handlerDone()\n\t\t\t\tdefault:\n\t\t\t\t\tpanic(\"unknown timer\")\n\t\t\t\t}\n\t\t\tcase *startPushRequest:\n\t\t\t\tsc.startPush(v)\n\t\t\tcase func(*serverConn):\n\t\t\t\tv(sc)\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"unexpected type %T\", v))\n\t\t\t}\n\t\t}\n\n\t\t// If the peer is causing us to generate a lot of control frames,\n\t\t// but not reading them from us, assume they are trying to make us\n\t\t// run out of memory.\n\t\tif sc.queuedControlFrames > maxQueuedControlFrames {\n\t\t\tsc.vlogf(\"http2: too many control frames in send queue, closing connection\")\n\t\t\treturn\n\t\t}\n\n\t\t// Start the shutdown timer after sending a GOAWAY. When sending GOAWAY\n\t\t// with no error code (graceful shutdown), don't start the timer until\n\t\t// all open streams have been completed.\n\t\tsentGoAway := sc.inGoAway && !sc.needToSendGoAway && !sc.writingFrame\n\t\tgracefulShutdownComplete := sc.goAwayCode == ErrCodeNo && sc.curOpenStreams() == 0\n\t\tif sentGoAway && sc.shutdownTimer == nil && (sc.goAwayCode != ErrCodeNo || gracefulShutdownComplete) {\n\t\t\tsc.shutDownIn(goAwayTimeout)\n\t\t}\n\t}\n}\n\nfunc (sc *serverConn) handlePingTimer(lastFrameReadTime time.Time) {\n\tif sc.pingSent {\n\t\tsc.logf(\"timeout waiting for PING response\")\n\t\tif f := sc.countErrorFunc; f != nil {\n\t\t\tf(\"conn_close_lost_ping\")\n\t\t}\n\t\tsc.conn.Close()\n\t\treturn\n\t}\n\n\tpingAt := lastFrameReadTime.Add(sc.readIdleTimeout)\n\tnow := time.Now()\n\tif pingAt.After(now) {\n\t\t// We received frames since arming the ping timer.\n\t\t// Reset it for the next possible timeout.\n\t\tsc.readIdleTimer.Reset(pingAt.Sub(now))\n\t\treturn\n\t}\n\n\tsc.pingSent = true\n\t// Ignore crypto/rand.Read errors: It generally can't fail, and worse case if it does\n\t// is we send a PING frame containing 0s.\n\t_, _ = rand.Read(sc.sentPingData[:])\n\tsc.writeFrame(FrameWriteRequest{\n\t\twrite: &writePing{data: sc.sentPingData},\n\t})\n\tsc.readIdleTimer.Reset(sc.pingTimeout)\n}\n\ntype serverMessage int\n\n// Message values sent to serveMsgCh.\nvar (\n\tsettingsTimerMsg    = new(serverMessage)\n\tidleTimerMsg        = new(serverMessage)\n\treadIdleTimerMsg    = new(serverMessage)\n\tshutdownTimerMsg    = new(serverMessage)\n\tgracefulShutdownMsg = new(serverMessage)\n\thandlerDoneMsg      = new(serverMessage)\n)\n\nfunc (sc *serverConn) onSettingsTimer() { sc.sendServeMsg(settingsTimerMsg) }\nfunc (sc *serverConn) onIdleTimer()     { sc.sendServeMsg(idleTimerMsg) }\nfunc (sc *serverConn) onReadIdleTimer() { sc.sendServeMsg(readIdleTimerMsg) }\nfunc (sc *serverConn) onShutdownTimer() { sc.sendServeMsg(shutdownTimerMsg) }\n\nfunc (sc *serverConn) sendServeMsg(msg interface{}) {\n\tsc.serveG.checkNotOn() // NOT\n\tselect {\n\tcase sc.serveMsgCh <- msg:\n\tcase <-sc.doneServing:\n\t}\n}\n\nvar errPrefaceTimeout = errors.New(\"timeout waiting for client preface\")\n\n// readPreface reads the ClientPreface greeting from the peer or\n// returns errPrefaceTimeout on timeout, or an error if the greeting\n// is invalid.\nfunc (sc *serverConn) readPreface() error {\n\tif sc.sawClientPreface {\n\t\treturn nil\n\t}\n\terrc := make(chan error, 1)\n\tgo func() {\n\t\t// Read the client preface\n\t\tbuf := make([]byte, len(ClientPreface))\n\t\tif _, err := io.ReadFull(sc.conn, buf); err != nil {\n\t\t\terrc <- err\n\t\t} else if !bytes.Equal(buf, clientPreface) {\n\t\t\terrc <- fmt.Errorf(\"bogus greeting %q\", buf)\n\t\t} else {\n\t\t\terrc <- nil\n\t\t}\n\t}()\n\ttimer := time.NewTimer(prefaceTimeout) // TODO: configurable on *Server?\n\tdefer timer.Stop()\n\tselect {\n\tcase <-timer.C:\n\t\treturn errPrefaceTimeout\n\tcase err := <-errc:\n\t\tif err == nil {\n\t\t\tif VerboseLogs {\n\t\t\t\tsc.vlogf(\"http2: server: client %v said hello\", sc.conn.RemoteAddr())\n\t\t\t}\n\t\t}\n\t\treturn err\n\t}\n}\n\nvar writeDataPool = sync.Pool{\n\tNew: func() interface{} { return new(writeData) },\n}\n\n// writeDataFromHandler writes DATA response frames from a handler on\n// the given stream.\nfunc (sc *serverConn) writeDataFromHandler(stream *stream, data []byte, endStream bool) error {\n\tch := sc.srv.state.getErrChan()\n\twriteArg := writeDataPool.Get().(*writeData)\n\t*writeArg = writeData{stream.id, data, endStream}\n\terr := sc.writeFrameFromHandler(FrameWriteRequest{\n\t\twrite:  writeArg,\n\t\tstream: stream,\n\t\tdone:   ch,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tvar frameWriteDone bool // the frame write is done (successfully or not)\n\tselect {\n\tcase err = <-ch:\n\t\tframeWriteDone = true\n\tcase <-sc.doneServing:\n\t\treturn errClientDisconnected\n\tcase <-stream.cw:\n\t\t// If both ch and stream.cw were ready (as might\n\t\t// happen on the final Write after an http.Handler\n\t\t// ends), prefer the write result. Otherwise this\n\t\t// might just be us successfully closing the stream.\n\t\t// The writeFrameAsync and serve goroutines guarantee\n\t\t// that the ch send will happen before the stream.cw\n\t\t// close.\n\t\tselect {\n\t\tcase err = <-ch:\n\t\t\tframeWriteDone = true\n\t\tdefault:\n\t\t\treturn errStreamClosed\n\t\t}\n\t}\n\tsc.srv.state.putErrChan(ch)\n\tif frameWriteDone {\n\t\twriteDataPool.Put(writeArg)\n\t}\n\treturn err\n}\n\n// writeFrameFromHandler sends wr to sc.wantWriteFrameCh, but aborts\n// if the connection has gone away.\n//\n// This must not be run from the serve goroutine itself, else it might\n// deadlock writing to sc.wantWriteFrameCh (which is only mildly\n// buffered and is read by serve itself). If you're on the serve\n// goroutine, call writeFrame instead.\nfunc (sc *serverConn) writeFrameFromHandler(wr FrameWriteRequest) error {\n\tsc.serveG.checkNotOn() // NOT\n\tselect {\n\tcase sc.wantWriteFrameCh <- wr:\n\t\treturn nil\n\tcase <-sc.doneServing:\n\t\t// Serve loop is gone.\n\t\t// Client has closed their connection to the server.\n\t\treturn errClientDisconnected\n\t}\n}\n\n// writeFrame schedules a frame to write and sends it if there's nothing\n// already being written.\n//\n// There is no pushback here (the serve goroutine never blocks). It's\n// the http.Handlers that block, waiting for their previous frames to\n// make it onto the wire\n//\n// If you're not on the serve goroutine, use writeFrameFromHandler instead.\nfunc (sc *serverConn) writeFrame(wr FrameWriteRequest) {\n\tsc.serveG.check()\n\n\t// If true, wr will not be written and wr.done will not be signaled.\n\tvar ignoreWrite bool\n\n\t// We are not allowed to write frames on closed streams. RFC 7540 Section\n\t// 5.1.1 says: \"An endpoint MUST NOT send frames other than PRIORITY on\n\t// a closed stream.\" Our server never sends PRIORITY, so that exception\n\t// does not apply.\n\t//\n\t// The serverConn might close an open stream while the stream's handler\n\t// is still running. For example, the server might close a stream when it\n\t// receives bad data from the client. If this happens, the handler might\n\t// attempt to write a frame after the stream has been closed (since the\n\t// handler hasn't yet been notified of the close). In this case, we simply\n\t// ignore the frame. The handler will notice that the stream is closed when\n\t// it waits for the frame to be written.\n\t//\n\t// As an exception to this rule, we allow sending RST_STREAM after close.\n\t// This allows us to immediately reject new streams without tracking any\n\t// state for those streams (except for the queued RST_STREAM frame). This\n\t// may result in duplicate RST_STREAMs in some cases, but the client should\n\t// ignore those.\n\tif wr.StreamID() != 0 {\n\t\t_, isReset := wr.write.(StreamError)\n\t\tif state, _ := sc.state(wr.StreamID()); state == stateClosed && !isReset {\n\t\t\tignoreWrite = true\n\t\t}\n\t}\n\n\t// Don't send a 100-continue response if we've already sent headers.\n\t// See golang.org/issue/14030.\n\tswitch wr.write.(type) {\n\tcase *writeResHeaders:\n\t\twr.stream.wroteHeaders = true\n\tcase write100ContinueHeadersFrame:\n\t\tif wr.stream.wroteHeaders {\n\t\t\t// We do not need to notify wr.done because this frame is\n\t\t\t// never written with wr.done != nil.\n\t\t\tif wr.done != nil {\n\t\t\t\tpanic(\"wr.done != nil for write100ContinueHeadersFrame\")\n\t\t\t}\n\t\t\tignoreWrite = true\n\t\t}\n\t}\n\n\tif !ignoreWrite {\n\t\tif wr.isControl() {\n\t\t\tsc.queuedControlFrames++\n\t\t\t// For extra safety, detect wraparounds, which should not happen,\n\t\t\t// and pull the plug.\n\t\t\tif sc.queuedControlFrames < 0 {\n\t\t\t\tsc.conn.Close()\n\t\t\t}\n\t\t}\n\t\tsc.writeSched.Push(wr)\n\t}\n\tsc.scheduleFrameWrite()\n}\n\n// startFrameWrite starts a goroutine to write wr (in a separate\n// goroutine since that might block on the network), and updates the\n// serve goroutine's state about the world, updated from info in wr.\nfunc (sc *serverConn) startFrameWrite(wr FrameWriteRequest) {\n\tsc.serveG.check()\n\tif sc.writingFrame {\n\t\tpanic(\"internal error: can only be writing one frame at a time\")\n\t}\n\n\tst := wr.stream\n\tif st != nil {\n\t\tswitch st.state {\n\t\tcase stateHalfClosedLocal:\n\t\t\tswitch wr.write.(type) {\n\t\t\tcase StreamError, handlerPanicRST, writeWindowUpdate:\n\t\t\t\t// RFC 7540 Section 5.1 allows sending RST_STREAM, PRIORITY, and WINDOW_UPDATE\n\t\t\t\t// in this state. (We never send PRIORITY from the server, so that is not checked.)\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"internal error: attempt to send frame on a half-closed-local stream: %v\", wr))\n\t\t\t}\n\t\tcase stateClosed:\n\t\t\tpanic(fmt.Sprintf(\"internal error: attempt to send frame on a closed stream: %v\", wr))\n\t\t}\n\t}\n\tif wpp, ok := wr.write.(*writePushPromise); ok {\n\t\tvar err error\n\t\twpp.promisedID, err = wpp.allocatePromisedID()\n\t\tif err != nil {\n\t\t\tsc.writingFrameAsync = false\n\t\t\twr.replyToWriter(err)\n\t\t\treturn\n\t\t}\n\t}\n\n\tsc.writingFrame = true\n\tsc.needsFrameFlush = true\n\tif wr.write.staysWithinBuffer(sc.bw.Available()) {\n\t\tsc.writingFrameAsync = false\n\t\terr := wr.write.writeFrame(sc)\n\t\tsc.wroteFrame(frameWriteResult{wr: wr, err: err})\n\t} else if wd, ok := wr.write.(*writeData); ok {\n\t\t// Encode the frame in the serve goroutine, to ensure we don't have\n\t\t// any lingering asynchronous references to data passed to Write.\n\t\t// See https://go.dev/issue/58446.\n\t\tsc.framer.startWriteDataPadded(wd.streamID, wd.endStream, wd.p, nil)\n\t\tsc.writingFrameAsync = true\n\t\tgo sc.writeFrameAsync(wr, wd)\n\t} else {\n\t\tsc.writingFrameAsync = true\n\t\tgo sc.writeFrameAsync(wr, nil)\n\t}\n}\n\n// errHandlerPanicked is the error given to any callers blocked in a read from\n// Request.Body when the main goroutine panics. Since most handlers read in the\n// main ServeHTTP goroutine, this will show up rarely.\nvar errHandlerPanicked = errors.New(\"http2: handler panicked\")\n\n// wroteFrame is called on the serve goroutine with the result of\n// whatever happened on writeFrameAsync.\nfunc (sc *serverConn) wroteFrame(res frameWriteResult) {\n\tsc.serveG.check()\n\tif !sc.writingFrame {\n\t\tpanic(\"internal error: expected to be already writing a frame\")\n\t}\n\tsc.writingFrame = false\n\tsc.writingFrameAsync = false\n\n\tif res.err != nil {\n\t\tsc.conn.Close()\n\t}\n\n\twr := res.wr\n\n\tif writeEndsStream(wr.write) {\n\t\tst := wr.stream\n\t\tif st == nil {\n\t\t\tpanic(\"internal error: expecting non-nil stream\")\n\t\t}\n\t\tswitch st.state {\n\t\tcase stateOpen:\n\t\t\t// Here we would go to stateHalfClosedLocal in\n\t\t\t// theory, but since our handler is done and\n\t\t\t// the net/http package provides no mechanism\n\t\t\t// for closing a ResponseWriter while still\n\t\t\t// reading data (see possible TODO at top of\n\t\t\t// this file), we go into closed state here\n\t\t\t// anyway, after telling the peer we're\n\t\t\t// hanging up on them. We'll transition to\n\t\t\t// stateClosed after the RST_STREAM frame is\n\t\t\t// written.\n\t\t\tst.state = stateHalfClosedLocal\n\t\t\t// Section 8.1: a server MAY request that the client abort\n\t\t\t// transmission of a request without error by sending a\n\t\t\t// RST_STREAM with an error code of NO_ERROR after sending\n\t\t\t// a complete response.\n\t\t\tsc.resetStream(streamError(st.id, ErrCodeNo))\n\t\tcase stateHalfClosedRemote:\n\t\t\tsc.closeStream(st, errHandlerComplete)\n\t\t}\n\t} else {\n\t\tswitch v := wr.write.(type) {\n\t\tcase StreamError:\n\t\t\t// st may be unknown if the RST_STREAM was generated to reject bad input.\n\t\t\tif st, ok := sc.streams[v.StreamID]; ok {\n\t\t\t\tsc.closeStream(st, v)\n\t\t\t}\n\t\tcase handlerPanicRST:\n\t\t\tsc.closeStream(wr.stream, errHandlerPanicked)\n\t\t}\n\t}\n\n\t// Reply (if requested) to unblock the ServeHTTP goroutine.\n\twr.replyToWriter(res.err)\n\n\tsc.scheduleFrameWrite()\n}\n\n// scheduleFrameWrite tickles the frame writing scheduler.\n//\n// If a frame is already being written, nothing happens. This will be called again\n// when the frame is done being written.\n//\n// If a frame isn't being written and we need to send one, the best frame\n// to send is selected by writeSched.\n//\n// If a frame isn't being written and there's nothing else to send, we\n// flush the write buffer.\nfunc (sc *serverConn) scheduleFrameWrite() {\n\tsc.serveG.check()\n\tif sc.writingFrame || sc.inFrameScheduleLoop {\n\t\treturn\n\t}\n\tsc.inFrameScheduleLoop = true\n\tfor !sc.writingFrameAsync {\n\t\tif sc.needToSendGoAway {\n\t\t\tsc.needToSendGoAway = false\n\t\t\tsc.startFrameWrite(FrameWriteRequest{\n\t\t\t\twrite: &writeGoAway{\n\t\t\t\t\tmaxStreamID: sc.maxClientStreamID,\n\t\t\t\t\tcode:        sc.goAwayCode,\n\t\t\t\t},\n\t\t\t})\n\t\t\tcontinue\n\t\t}\n\t\tif sc.needToSendSettingsAck {\n\t\t\tsc.needToSendSettingsAck = false\n\t\t\tsc.startFrameWrite(FrameWriteRequest{write: writeSettingsAck{}})\n\t\t\tcontinue\n\t\t}\n\t\tif !sc.inGoAway || sc.goAwayCode == ErrCodeNo {\n\t\t\tif wr, ok := sc.writeSched.Pop(); ok {\n\t\t\t\tif wr.isControl() {\n\t\t\t\t\tsc.queuedControlFrames--\n\t\t\t\t}\n\t\t\t\tsc.startFrameWrite(wr)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tif sc.needsFrameFlush {\n\t\t\tsc.startFrameWrite(FrameWriteRequest{write: flushFrameWriter{}})\n\t\t\tsc.needsFrameFlush = false // after startFrameWrite, since it sets this true\n\t\t\tcontinue\n\t\t}\n\t\tbreak\n\t}\n\tsc.inFrameScheduleLoop = false\n}\n\n// startGracefulShutdown gracefully shuts down a connection. This\n// sends GOAWAY with ErrCodeNo to tell the client we're gracefully\n// shutting down. The connection isn't closed until all current\n// streams are done.\n//\n// startGracefulShutdown returns immediately; it does not wait until\n// the connection has shut down.\nfunc (sc *serverConn) startGracefulShutdown() {\n\tsc.serveG.checkNotOn() // NOT\n\tsc.shutdownOnce.Do(func() { sc.sendServeMsg(gracefulShutdownMsg) })\n}\n\n// After sending GOAWAY with an error code (non-graceful shutdown), the\n// connection will close after goAwayTimeout.\n//\n// If we close the connection immediately after sending GOAWAY, there may\n// be unsent data in our kernel receive buffer, which will cause the kernel\n// to send a TCP RST on close() instead of a FIN. This RST will abort the\n// connection immediately, whether or not the client had received the GOAWAY.\n//\n// Ideally we should delay for at least 1 RTT + epsilon so the client has\n// a chance to read the GOAWAY and stop sending messages. Measuring RTT\n// is hard, so we approximate with 1 second. See golang.org/issue/18701.\n//\n// This is a var so it can be shorter in tests, where all requests uses the\n// loopback interface making the expected RTT very small.\n//\n// TODO: configurable?\nvar goAwayTimeout = 1 * time.Second\n\nfunc (sc *serverConn) startGracefulShutdownInternal() {\n\tsc.goAway(ErrCodeNo)\n}\n\nfunc (sc *serverConn) goAway(code ErrCode) {\n\tsc.serveG.check()\n\tif sc.inGoAway {\n\t\tif sc.goAwayCode == ErrCodeNo {\n\t\t\tsc.goAwayCode = code\n\t\t}\n\t\treturn\n\t}\n\tsc.inGoAway = true\n\tsc.needToSendGoAway = true\n\tsc.goAwayCode = code\n\tsc.scheduleFrameWrite()\n}\n\nfunc (sc *serverConn) shutDownIn(d time.Duration) {\n\tsc.serveG.check()\n\tsc.shutdownTimer = time.AfterFunc(d, sc.onShutdownTimer)\n}\n\nfunc (sc *serverConn) resetStream(se StreamError) {\n\tsc.serveG.check()\n\tsc.writeFrame(FrameWriteRequest{write: se})\n\tif st, ok := sc.streams[se.StreamID]; ok {\n\t\tst.resetQueued = true\n\t}\n}\n\n// processFrameFromReader processes the serve loop's read from readFrameCh from the\n// frame-reading goroutine.\n// processFrameFromReader returns whether the connection should be kept open.\nfunc (sc *serverConn) processFrameFromReader(res readFrameResult) bool {\n\tsc.serveG.check()\n\terr := res.err\n\tif err != nil {\n\t\tif err == ErrFrameTooLarge {\n\t\t\tsc.goAway(ErrCodeFrameSize)\n\t\t\treturn true // goAway will close the loop\n\t\t}\n\t\tclientGone := err == io.EOF || err == io.ErrUnexpectedEOF || isClosedConnError(err)\n\t\tif clientGone {\n\t\t\t// TODO: could we also get into this state if\n\t\t\t// the peer does a half close\n\t\t\t// (e.g. CloseWrite) because they're done\n\t\t\t// sending frames but they're still wanting\n\t\t\t// our open replies?  Investigate.\n\t\t\t// TODO: add CloseWrite to crypto/tls.Conn first\n\t\t\t// so we have a way to test this? I suppose\n\t\t\t// just for testing we could have a non-TLS mode.\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tf := res.f\n\t\tif VerboseLogs {\n\t\t\tsc.vlogf(\"http2: server read frame %v\", summarizeFrame(f))\n\t\t}\n\t\terr = sc.processFrame(f)\n\t\tif err == nil {\n\t\t\treturn true\n\t\t}\n\t}\n\n\tswitch ev := err.(type) {\n\tcase StreamError:\n\t\tsc.resetStream(ev)\n\t\treturn true\n\tcase goAwayFlowError:\n\t\tsc.goAway(ErrCodeFlowControl)\n\t\treturn true\n\tcase ConnectionError:\n\t\tif res.f != nil {\n\t\t\tif id := res.f.Header().StreamID; id > sc.maxClientStreamID {\n\t\t\t\tsc.maxClientStreamID = id\n\t\t\t}\n\t\t}\n\t\tsc.logf(\"http2: server connection error from %v: %v\", sc.conn.RemoteAddr(), ev)\n\t\tsc.goAway(ErrCode(ev))\n\t\treturn true // goAway will handle shutdown\n\tdefault:\n\t\tif res.err != nil {\n\t\t\tsc.vlogf(\"http2: server closing client connection; error reading frame from client %s: %v\", sc.conn.RemoteAddr(), err)\n\t\t} else {\n\t\t\tsc.logf(\"http2: server closing client connection: %v\", err)\n\t\t}\n\t\treturn false\n\t}\n}\n\nfunc (sc *serverConn) processFrame(f Frame) error {\n\tsc.serveG.check()\n\n\t// First frame received must be SETTINGS.\n\tif !sc.sawFirstSettings {\n\t\tif _, ok := f.(*SettingsFrame); !ok {\n\t\t\treturn sc.countError(\"first_settings\", ConnectionError(ErrCodeProtocol))\n\t\t}\n\t\tsc.sawFirstSettings = true\n\t}\n\n\t// Discard frames for streams initiated after the identified last\n\t// stream sent in a GOAWAY, or all frames after sending an error.\n\t// We still need to return connection-level flow control for DATA frames.\n\t// RFC 9113 Section 6.8.\n\tif sc.inGoAway && (sc.goAwayCode != ErrCodeNo || f.Header().StreamID > sc.maxClientStreamID) {\n\n\t\tif f, ok := f.(*DataFrame); ok {\n\t\t\tif !sc.inflow.take(f.Length) {\n\t\t\t\treturn sc.countError(\"data_flow\", streamError(f.Header().StreamID, ErrCodeFlowControl))\n\t\t\t}\n\t\t\tsc.sendWindowUpdate(nil, int(f.Length)) // conn-level\n\t\t}\n\t\treturn nil\n\t}\n\n\tswitch f := f.(type) {\n\tcase *SettingsFrame:\n\t\treturn sc.processSettings(f)\n\tcase *MetaHeadersFrame:\n\t\treturn sc.processHeaders(f)\n\tcase *WindowUpdateFrame:\n\t\treturn sc.processWindowUpdate(f)\n\tcase *PingFrame:\n\t\treturn sc.processPing(f)\n\tcase *DataFrame:\n\t\treturn sc.processData(f)\n\tcase *RSTStreamFrame:\n\t\treturn sc.processResetStream(f)\n\tcase *PriorityFrame:\n\t\treturn sc.processPriority(f)\n\tcase *GoAwayFrame:\n\t\treturn sc.processGoAway(f)\n\tcase *PushPromiseFrame:\n\t\t// A client cannot push. Thus, servers MUST treat the receipt of a PUSH_PROMISE\n\t\t// frame as a connection error (Section 5.4.1) of type PROTOCOL_ERROR.\n\t\treturn sc.countError(\"push_promise\", ConnectionError(ErrCodeProtocol))\n\tcase *PriorityUpdateFrame:\n\t\treturn sc.processPriorityUpdate(f)\n\tdefault:\n\t\tsc.vlogf(\"http2: server ignoring frame: %v\", f.Header())\n\t\treturn nil\n\t}\n}\n\nfunc (sc *serverConn) processPing(f *PingFrame) error {\n\tsc.serveG.check()\n\tif f.IsAck() {\n\t\tif sc.pingSent && sc.sentPingData == f.Data {\n\t\t\t// This is a response to a PING we sent.\n\t\t\tsc.pingSent = false\n\t\t\tsc.readIdleTimer.Reset(sc.readIdleTimeout)\n\t\t}\n\t\t// 6.7 PING: \" An endpoint MUST NOT respond to PING frames\n\t\t// containing this flag.\"\n\t\treturn nil\n\t}\n\tif f.StreamID != 0 {\n\t\t// \"PING frames are not associated with any individual\n\t\t// stream. If a PING frame is received with a stream\n\t\t// identifier field value other than 0x0, the recipient MUST\n\t\t// respond with a connection error (Section 5.4.1) of type\n\t\t// PROTOCOL_ERROR.\"\n\t\treturn sc.countError(\"ping_on_stream\", ConnectionError(ErrCodeProtocol))\n\t}\n\tsc.writeFrame(FrameWriteRequest{write: writePingAck{f}})\n\treturn nil\n}\n\nfunc (sc *serverConn) processWindowUpdate(f *WindowUpdateFrame) error {\n\tsc.serveG.check()\n\tswitch {\n\tcase f.StreamID != 0: // stream-level flow control\n\t\tstate, st := sc.state(f.StreamID)\n\t\tif state == stateIdle {\n\t\t\t// Section 5.1: \"Receiving any frame other than HEADERS\n\t\t\t// or PRIORITY on a stream in this state MUST be\n\t\t\t// treated as a connection error (Section 5.4.1) of\n\t\t\t// type PROTOCOL_ERROR.\"\n\t\t\treturn sc.countError(\"stream_idle\", ConnectionError(ErrCodeProtocol))\n\t\t}\n\t\tif st == nil {\n\t\t\t// \"WINDOW_UPDATE can be sent by a peer that has sent a\n\t\t\t// frame bearing the END_STREAM flag. This means that a\n\t\t\t// receiver could receive a WINDOW_UPDATE frame on a \"half\n\t\t\t// closed (remote)\" or \"closed\" stream. A receiver MUST\n\t\t\t// NOT treat this as an error, see Section 5.1.\"\n\t\t\treturn nil\n\t\t}\n\t\tif !st.flow.add(int32(f.Increment)) {\n\t\t\treturn sc.countError(\"bad_flow\", streamError(f.StreamID, ErrCodeFlowControl))\n\t\t}\n\tdefault: // connection-level flow control\n\t\tif !sc.flow.add(int32(f.Increment)) {\n\t\t\treturn goAwayFlowError{}\n\t\t}\n\t}\n\tsc.scheduleFrameWrite()\n\treturn nil\n}\n\nfunc (sc *serverConn) processResetStream(f *RSTStreamFrame) error {\n\tsc.serveG.check()\n\n\tstate, st := sc.state(f.StreamID)\n\tif state == stateIdle {\n\t\t// 6.4 \"RST_STREAM frames MUST NOT be sent for a\n\t\t// stream in the \"idle\" state. If a RST_STREAM frame\n\t\t// identifying an idle stream is received, the\n\t\t// recipient MUST treat this as a connection error\n\t\t// (Section 5.4.1) of type PROTOCOL_ERROR.\n\t\treturn sc.countError(\"reset_idle_stream\", ConnectionError(ErrCodeProtocol))\n\t}\n\tif st != nil {\n\t\tst.cancelCtx()\n\t\tsc.closeStream(st, streamError(f.StreamID, f.ErrCode))\n\t}\n\treturn nil\n}\n\nfunc (sc *serverConn) closeStream(st *stream, err error) {\n\tsc.serveG.check()\n\tif st.state == stateIdle || st.state == stateClosed {\n\t\tpanic(fmt.Sprintf(\"invariant; can't close stream in state %v\", st.state))\n\t}\n\tst.state = stateClosed\n\tif st.readDeadline != nil {\n\t\tst.readDeadline.Stop()\n\t}\n\tif st.writeDeadline != nil {\n\t\tst.writeDeadline.Stop()\n\t}\n\tif st.isPushed() {\n\t\tsc.curPushedStreams--\n\t} else {\n\t\tsc.curClientStreams--\n\t}\n\tdelete(sc.streams, st.id)\n\tif len(sc.streams) == 0 {\n\t\tsc.setConnState(http.StateIdle)\n\t\tif sc.srv.IdleTimeout > 0 && sc.idleTimer != nil {\n\t\t\tsc.idleTimer.Reset(sc.srv.IdleTimeout)\n\t\t}\n\t\tif h1ServerKeepAlivesDisabled(sc.hs) {\n\t\t\tsc.startGracefulShutdownInternal()\n\t\t}\n\t}\n\tif p := st.body; p != nil {\n\t\t// Return any buffered unread bytes worth of conn-level flow control.\n\t\t// See golang.org/issue/16481\n\t\tsc.sendWindowUpdate(nil, p.Len())\n\n\t\tp.CloseWithError(err)\n\t}\n\tif e, ok := err.(StreamError); ok {\n\t\tif e.Cause != nil {\n\t\t\terr = e.Cause\n\t\t} else {\n\t\t\terr = errStreamClosed\n\t\t}\n\t}\n\tst.closeErr = err\n\tst.cancelCtx()\n\tst.cw.Close() // signals Handler's CloseNotifier, unblocks writes, etc\n\tsc.writeSched.CloseStream(st.id)\n}\n\nfunc (sc *serverConn) processSettings(f *SettingsFrame) error {\n\tsc.serveG.check()\n\tif f.IsAck() {\n\t\tsc.unackedSettings--\n\t\tif sc.unackedSettings < 0 {\n\t\t\t// Why is the peer ACKing settings we never sent?\n\t\t\t// The spec doesn't mention this case, but\n\t\t\t// hang up on them anyway.\n\t\t\treturn sc.countError(\"ack_mystery\", ConnectionError(ErrCodeProtocol))\n\t\t}\n\t\treturn nil\n\t}\n\tif f.NumSettings() > 100 || f.HasDuplicates() {\n\t\t// This isn't actually in the spec, but hang up on\n\t\t// suspiciously large settings frames or those with\n\t\t// duplicate entries.\n\t\treturn sc.countError(\"settings_big_or_dups\", ConnectionError(ErrCodeProtocol))\n\t}\n\tif err := f.ForeachSetting(sc.processSetting); err != nil {\n\t\treturn err\n\t}\n\t// TODO: judging by RFC 7540, Section 6.5.3 each SETTINGS frame should be\n\t// acknowledged individually, even if multiple are received before the ACK.\n\tsc.needToSendSettingsAck = true\n\tsc.scheduleFrameWrite()\n\treturn nil\n}\n\nfunc (sc *serverConn) processSetting(s Setting) error {\n\tsc.serveG.check()\n\tif err := s.Valid(); err != nil {\n\t\treturn err\n\t}\n\tif VerboseLogs {\n\t\tsc.vlogf(\"http2: server processing setting %v\", s)\n\t}\n\tswitch s.ID {\n\tcase SettingHeaderTableSize:\n\t\tsc.hpackEncoder.SetMaxDynamicTableSize(s.Val)\n\tcase SettingEnablePush:\n\t\tsc.pushEnabled = s.Val != 0\n\tcase SettingMaxConcurrentStreams:\n\t\tsc.clientMaxStreams = s.Val\n\tcase SettingInitialWindowSize:\n\t\treturn sc.processSettingInitialWindowSize(s.Val)\n\tcase SettingMaxFrameSize:\n\t\tsc.maxFrameSize = int32(s.Val) // the maximum valid s.Val is < 2^31\n\tcase SettingMaxHeaderListSize:\n\t\tsc.peerMaxHeaderListSize = s.Val\n\tcase SettingEnableConnectProtocol:\n\t\t// Receipt of this parameter by a server does not\n\t\t// have any impact\n\tcase SettingNoRFC7540Priorities:\n\t\tif s.Val > 1 {\n\t\t\treturn ConnectionError(ErrCodeProtocol)\n\t\t}\n\tdefault:\n\t\t// Unknown setting: \"An endpoint that receives a SETTINGS\n\t\t// frame with any unknown or unsupported identifier MUST\n\t\t// ignore that setting.\"\n\t\tif VerboseLogs {\n\t\t\tsc.vlogf(\"http2: server ignoring unknown setting %v\", s)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (sc *serverConn) processSettingInitialWindowSize(val uint32) error {\n\tsc.serveG.check()\n\t// Note: val already validated to be within range by\n\t// processSetting's Valid call.\n\n\t// \"A SETTINGS frame can alter the initial flow control window\n\t// size for all current streams. When the value of\n\t// SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST\n\t// adjust the size of all stream flow control windows that it\n\t// maintains by the difference between the new value and the\n\t// old value.\"\n\told := sc.initialStreamSendWindowSize\n\tsc.initialStreamSendWindowSize = int32(val)\n\tgrowth := int32(val) - old // may be negative\n\tfor _, st := range sc.streams {\n\t\tif !st.flow.add(growth) {\n\t\t\t// 6.9.2 Initial Flow Control Window Size\n\t\t\t// \"An endpoint MUST treat a change to\n\t\t\t// SETTINGS_INITIAL_WINDOW_SIZE that causes any flow\n\t\t\t// control window to exceed the maximum size as a\n\t\t\t// connection error (Section 5.4.1) of type\n\t\t\t// FLOW_CONTROL_ERROR.\"\n\t\t\treturn sc.countError(\"setting_win_size\", ConnectionError(ErrCodeFlowControl))\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (sc *serverConn) processData(f *DataFrame) error {\n\tsc.serveG.check()\n\tid := f.Header().StreamID\n\n\tdata := f.Data()\n\tstate, st := sc.state(id)\n\tif id == 0 || state == stateIdle {\n\t\t// Section 6.1: \"DATA frames MUST be associated with a\n\t\t// stream. If a DATA frame is received whose stream\n\t\t// identifier field is 0x0, the recipient MUST respond\n\t\t// with a connection error (Section 5.4.1) of type\n\t\t// PROTOCOL_ERROR.\"\n\t\t//\n\t\t// Section 5.1: \"Receiving any frame other than HEADERS\n\t\t// or PRIORITY on a stream in this state MUST be\n\t\t// treated as a connection error (Section 5.4.1) of\n\t\t// type PROTOCOL_ERROR.\"\n\t\treturn sc.countError(\"data_on_idle\", ConnectionError(ErrCodeProtocol))\n\t}\n\n\t// \"If a DATA frame is received whose stream is not in \"open\"\n\t// or \"half closed (local)\" state, the recipient MUST respond\n\t// with a stream error (Section 5.4.2) of type STREAM_CLOSED.\"\n\tif st == nil || state != stateOpen || st.gotTrailerHeader || st.resetQueued {\n\t\t// This includes sending a RST_STREAM if the stream is\n\t\t// in stateHalfClosedLocal (which currently means that\n\t\t// the http.Handler returned, so it's done reading &\n\t\t// done writing). Try to stop the client from sending\n\t\t// more DATA.\n\n\t\t// But still enforce their connection-level flow control,\n\t\t// and return any flow control bytes since we're not going\n\t\t// to consume them.\n\t\tif !sc.inflow.take(f.Length) {\n\t\t\treturn sc.countError(\"data_flow\", streamError(id, ErrCodeFlowControl))\n\t\t}\n\t\tsc.sendWindowUpdate(nil, int(f.Length)) // conn-level\n\n\t\tif st != nil && st.resetQueued {\n\t\t\t// Already have a stream error in flight. Don't send another.\n\t\t\treturn nil\n\t\t}\n\t\treturn sc.countError(\"closed\", streamError(id, ErrCodeStreamClosed))\n\t}\n\tif st.body == nil {\n\t\tpanic(\"internal error: should have a body in this state\")\n\t}\n\n\t// Sender sending more than they'd declared?\n\tif st.declBodyBytes != -1 && st.bodyBytes+int64(len(data)) > st.declBodyBytes {\n\t\tif !sc.inflow.take(f.Length) {\n\t\t\treturn sc.countError(\"data_flow\", streamError(id, ErrCodeFlowControl))\n\t\t}\n\t\tsc.sendWindowUpdate(nil, int(f.Length)) // conn-level\n\n\t\tst.body.CloseWithError(fmt.Errorf(\"sender tried to send more than declared Content-Length of %d bytes\", st.declBodyBytes))\n\t\t// RFC 7540, sec 8.1.2.6: A request or response is also malformed if the\n\t\t// value of a content-length header field does not equal the sum of the\n\t\t// DATA frame payload lengths that form the body.\n\t\treturn sc.countError(\"send_too_much\", streamError(id, ErrCodeProtocol))\n\t}\n\tif f.Length > 0 {\n\t\t// Check whether the client has flow control quota.\n\t\tif !takeInflows(&sc.inflow, &st.inflow, f.Length) {\n\t\t\treturn sc.countError(\"flow_on_data_length\", streamError(id, ErrCodeFlowControl))\n\t\t}\n\n\t\tif len(data) > 0 {\n\t\t\tst.bodyBytes += int64(len(data))\n\t\t\twrote, err := st.body.Write(data)\n\t\t\tif err != nil {\n\t\t\t\t// The handler has closed the request body.\n\t\t\t\t// Return the connection-level flow control for the discarded data,\n\t\t\t\t// but not the stream-level flow control.\n\t\t\t\tsc.sendWindowUpdate(nil, int(f.Length)-wrote)\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tif wrote != len(data) {\n\t\t\t\tpanic(\"internal error: bad Writer\")\n\t\t\t}\n\t\t}\n\n\t\t// Return any padded flow control now, since we won't\n\t\t// refund it later on body reads.\n\t\t// Call sendWindowUpdate even if there is no padding,\n\t\t// to return buffered flow control credit if the sent\n\t\t// window has shrunk.\n\t\tpad := int32(f.Length) - int32(len(data))\n\t\tsc.sendWindowUpdate32(nil, pad)\n\t\tsc.sendWindowUpdate32(st, pad)\n\t}\n\tif f.StreamEnded() {\n\t\tst.endStream()\n\t}\n\treturn nil\n}\n\nfunc (sc *serverConn) processGoAway(f *GoAwayFrame) error {\n\tsc.serveG.check()\n\tif f.ErrCode != ErrCodeNo {\n\t\tsc.logf(\"http2: received GOAWAY %+v, starting graceful shutdown\", f)\n\t} else {\n\t\tsc.vlogf(\"http2: received GOAWAY %+v, starting graceful shutdown\", f)\n\t}\n\tsc.startGracefulShutdownInternal()\n\t// http://tools.ietf.org/html/rfc7540#section-6.8\n\t// We should not create any new streams, which means we should disable push.\n\tsc.pushEnabled = false\n\treturn nil\n}\n\n// isPushed reports whether the stream is server-initiated.\nfunc (st *stream) isPushed() bool {\n\treturn st.id%2 == 0\n}\n\n// endStream closes a Request.Body's pipe. It is called when a DATA\n// frame says a request body is over (or after trailers).\nfunc (st *stream) endStream() {\n\tsc := st.sc\n\tsc.serveG.check()\n\n\tif st.declBodyBytes != -1 && st.declBodyBytes != st.bodyBytes {\n\t\tst.body.CloseWithError(fmt.Errorf(\"request declared a Content-Length of %d but only wrote %d bytes\",\n\t\t\tst.declBodyBytes, st.bodyBytes))\n\t} else {\n\t\tst.body.closeWithErrorAndCode(io.EOF, st.copyTrailersToHandlerRequest)\n\t\tst.body.CloseWithError(io.EOF)\n\t}\n\tst.state = stateHalfClosedRemote\n}\n\n// copyTrailersToHandlerRequest is run in the Handler's goroutine in\n// its Request.Body.Read just before it gets io.EOF.\nfunc (st *stream) copyTrailersToHandlerRequest() {\n\tfor k, vv := range st.trailer {\n\t\tif _, ok := st.reqTrailer[k]; ok {\n\t\t\t// Only copy it over it was pre-declared.\n\t\t\tst.reqTrailer[k] = vv\n\t\t}\n\t}\n}\n\n// onReadTimeout is run on its own goroutine (from time.AfterFunc)\n// when the stream's ReadTimeout has fired.\nfunc (st *stream) onReadTimeout() {\n\tif st.body != nil {\n\t\t// Wrap the ErrDeadlineExceeded to avoid callers depending on us\n\t\t// returning the bare error.\n\t\tst.body.CloseWithError(fmt.Errorf(\"%w\", os.ErrDeadlineExceeded))\n\t}\n}\n\n// onWriteTimeout is run on its own goroutine (from time.AfterFunc)\n// when the stream's WriteTimeout has fired.\nfunc (st *stream) onWriteTimeout() {\n\tst.sc.writeFrameFromHandler(FrameWriteRequest{write: StreamError{\n\t\tStreamID: st.id,\n\t\tCode:     ErrCodeInternal,\n\t\tCause:    os.ErrDeadlineExceeded,\n\t}})\n}\n\nfunc (sc *serverConn) processHeaders(f *MetaHeadersFrame) error {\n\tsc.serveG.check()\n\tid := f.StreamID\n\t// http://tools.ietf.org/html/rfc7540#section-5.1.1\n\t// Streams initiated by a client MUST use odd-numbered stream\n\t// identifiers. [...] An endpoint that receives an unexpected\n\t// stream identifier MUST respond with a connection error\n\t// (Section 5.4.1) of type PROTOCOL_ERROR.\n\tif id%2 != 1 {\n\t\treturn sc.countError(\"headers_even\", ConnectionError(ErrCodeProtocol))\n\t}\n\t// A HEADERS frame can be used to create a new stream or\n\t// send a trailer for an open one. If we already have a stream\n\t// open, let it process its own HEADERS frame (trailers at this\n\t// point, if it's valid).\n\tif st := sc.streams[f.StreamID]; st != nil {\n\t\tif st.resetQueued {\n\t\t\t// We're sending RST_STREAM to close the stream, so don't bother\n\t\t\t// processing this frame.\n\t\t\treturn nil\n\t\t}\n\t\t// RFC 7540, sec 5.1: If an endpoint receives additional frames, other than\n\t\t// WINDOW_UPDATE, PRIORITY, or RST_STREAM, for a stream that is in\n\t\t// this state, it MUST respond with a stream error (Section 5.4.2) of\n\t\t// type STREAM_CLOSED.\n\t\tif st.state == stateHalfClosedRemote {\n\t\t\treturn sc.countError(\"headers_half_closed\", streamError(id, ErrCodeStreamClosed))\n\t\t}\n\t\treturn st.processTrailerHeaders(f)\n\t}\n\n\t// [...] The identifier of a newly established stream MUST be\n\t// numerically greater than all streams that the initiating\n\t// endpoint has opened or reserved. [...]  An endpoint that\n\t// receives an unexpected stream identifier MUST respond with\n\t// a connection error (Section 5.4.1) of type PROTOCOL_ERROR.\n\tif id <= sc.maxClientStreamID {\n\t\treturn sc.countError(\"stream_went_down\", ConnectionError(ErrCodeProtocol))\n\t}\n\tsc.maxClientStreamID = id\n\n\tif sc.idleTimer != nil {\n\t\tsc.idleTimer.Stop()\n\t}\n\n\t// http://tools.ietf.org/html/rfc7540#section-5.1.2\n\t// [...] Endpoints MUST NOT exceed the limit set by their peer. An\n\t// endpoint that receives a HEADERS frame that causes their\n\t// advertised concurrent stream limit to be exceeded MUST treat\n\t// this as a stream error (Section 5.4.2) of type PROTOCOL_ERROR\n\t// or REFUSED_STREAM.\n\tif sc.curClientStreams+1 > sc.advMaxStreams {\n\t\tif sc.unackedSettings == 0 {\n\t\t\t// They should know better.\n\t\t\treturn sc.countError(\"over_max_streams\", streamError(id, ErrCodeProtocol))\n\t\t}\n\t\t// Assume it's a network race, where they just haven't\n\t\t// received our last SETTINGS update. But actually\n\t\t// this can't happen yet, because we don't yet provide\n\t\t// a way for users to adjust server parameters at\n\t\t// runtime.\n\t\treturn sc.countError(\"over_max_streams_race\", streamError(id, ErrCodeRefusedStream))\n\t}\n\n\tinitialState := stateOpen\n\tif f.StreamEnded() {\n\t\tinitialState = stateHalfClosedRemote\n\t}\n\n\t// We are handling two special cases here:\n\t// 1. When a request is sent via an intermediary, we force priority to be\n\t// u=3,i. This is essentially a round-robin behavior, and is done to ensure\n\t// fairness between, for example, multiple clients using the same proxy.\n\t// 2. Until a client has shown that it is aware of RFC 9218, we make its\n\t// streams non-incremental by default. This is done to preserve the\n\t// historical behavior of handling streams in a round-robin manner, rather\n\t// than one-by-one to completion.\n\tinitialPriority := defaultRFC9218Priority(sc.priorityAware && !sc.hasIntermediary)\n\tif _, ok := sc.writeSched.(*priorityWriteSchedulerRFC9218); ok && !sc.hasIntermediary {\n\t\theaderPriority, priorityAware, hasIntermediary := f.rfc9218Priority(sc.priorityAware)\n\t\tinitialPriority = headerPriority\n\t\tsc.hasIntermediary = hasIntermediary\n\t\tif priorityAware {\n\t\t\tsc.priorityAware = true\n\t\t}\n\t}\n\tst := sc.newStream(id, 0, initialState, initialPriority)\n\n\tif f.HasPriority() {\n\t\tif err := sc.checkPriority(f.StreamID, f.Priority); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif !sc.writeSchedIgnoresRFC7540() {\n\t\t\tsc.writeSched.AdjustStream(st.id, f.Priority)\n\t\t}\n\t}\n\n\trw, req, err := sc.newWriterAndRequest(st, f)\n\tif err != nil {\n\t\treturn err\n\t}\n\tst.reqTrailer = req.Trailer\n\tif st.reqTrailer != nil {\n\t\tst.trailer = make(http.Header)\n\t}\n\tst.body = req.Body.(*requestBody).pipe // may be nil\n\tst.declBodyBytes = req.ContentLength\n\n\thandler := sc.handler.ServeHTTP\n\tif f.Truncated {\n\t\t// Their header list was too long. Send a 431 error.\n\t\thandler = handleHeaderListTooLong\n\t} else if err := checkValidHTTP2RequestHeaders(req.Header); err != nil {\n\t\thandler = new400Handler(err)\n\t}\n\n\t// The net/http package sets the read deadline from the\n\t// http.Server.ReadTimeout during the TLS handshake, but then\n\t// passes the connection off to us with the deadline already\n\t// set. Disarm it here after the request headers are read,\n\t// similar to how the http1 server works. Here it's\n\t// technically more like the http1 Server's ReadHeaderTimeout\n\t// (in Go 1.8), though. That's a more sane option anyway.\n\tif sc.hs.ReadTimeout > 0 {\n\t\tsc.conn.SetReadDeadline(time.Time{})\n\t\tst.readDeadline = time.AfterFunc(sc.hs.ReadTimeout, st.onReadTimeout)\n\t}\n\n\treturn sc.scheduleHandler(id, rw, req, handler)\n}\n\nfunc (sc *serverConn) upgradeRequest(req *http.Request) {\n\tsc.serveG.check()\n\tid := uint32(1)\n\tsc.maxClientStreamID = id\n\tst := sc.newStream(id, 0, stateHalfClosedRemote, defaultRFC9218Priority(sc.priorityAware && !sc.hasIntermediary))\n\tst.reqTrailer = req.Trailer\n\tif st.reqTrailer != nil {\n\t\tst.trailer = make(http.Header)\n\t}\n\trw := sc.newResponseWriter(st, req)\n\n\t// Disable any read deadline set by the net/http package\n\t// prior to the upgrade.\n\tif sc.hs.ReadTimeout > 0 {\n\t\tsc.conn.SetReadDeadline(time.Time{})\n\t}\n\n\t// This is the first request on the connection,\n\t// so start the handler directly rather than going\n\t// through scheduleHandler.\n\tsc.curHandlers++\n\tgo sc.runHandler(rw, req, sc.handler.ServeHTTP)\n}\n\nfunc (st *stream) processTrailerHeaders(f *MetaHeadersFrame) error {\n\tsc := st.sc\n\tsc.serveG.check()\n\tif st.gotTrailerHeader {\n\t\treturn sc.countError(\"dup_trailers\", ConnectionError(ErrCodeProtocol))\n\t}\n\tst.gotTrailerHeader = true\n\tif !f.StreamEnded() {\n\t\treturn sc.countError(\"trailers_not_ended\", streamError(st.id, ErrCodeProtocol))\n\t}\n\n\tif len(f.PseudoFields()) > 0 {\n\t\treturn sc.countError(\"trailers_pseudo\", streamError(st.id, ErrCodeProtocol))\n\t}\n\tif st.trailer != nil {\n\t\tfor _, hf := range f.RegularFields() {\n\t\t\tkey := sc.canonicalHeader(hf.Name)\n\t\t\tif !httpguts.ValidTrailerHeader(key) {\n\t\t\t\t// TODO: send more details to the peer somehow. But http2 has\n\t\t\t\t// no way to send debug data at a stream level. Discuss with\n\t\t\t\t// HTTP folk.\n\t\t\t\treturn sc.countError(\"trailers_bogus\", streamError(st.id, ErrCodeProtocol))\n\t\t\t}\n\t\t\tst.trailer[key] = append(st.trailer[key], hf.Value)\n\t\t}\n\t}\n\tst.endStream()\n\treturn nil\n}\n\nfunc (sc *serverConn) checkPriority(streamID uint32, p PriorityParam) error {\n\tif streamID == p.StreamDep {\n\t\t// Section 5.3.1: \"A stream cannot depend on itself. An endpoint MUST treat\n\t\t// this as a stream error (Section 5.4.2) of type PROTOCOL_ERROR.\"\n\t\t// Section 5.3.3 says that a stream can depend on one of its dependencies,\n\t\t// so it's only self-dependencies that are forbidden.\n\t\treturn sc.countError(\"priority\", streamError(streamID, ErrCodeProtocol))\n\t}\n\treturn nil\n}\n\nfunc (sc *serverConn) processPriority(f *PriorityFrame) error {\n\tif err := sc.checkPriority(f.StreamID, f.PriorityParam); err != nil {\n\t\treturn err\n\t}\n\t// We need to avoid calling AdjustStream when using the RFC 9218 write\n\t// scheduler. Otherwise, incremental's zero value in PriorityParam will\n\t// unexpectedly make all streams non-incremental. This causes us to process\n\t// streams one-by-one to completion rather than doing it in a round-robin\n\t// manner (the historical behavior), which might be unexpected to users.\n\tif sc.writeSchedIgnoresRFC7540() {\n\t\treturn nil\n\t}\n\tsc.writeSched.AdjustStream(f.StreamID, f.PriorityParam)\n\treturn nil\n}\n\nfunc (sc *serverConn) processPriorityUpdate(f *PriorityUpdateFrame) error {\n\tsc.priorityAware = true\n\tif _, ok := sc.writeSched.(*priorityWriteSchedulerRFC9218); !ok {\n\t\treturn nil\n\t}\n\tp, ok := parseRFC9218Priority(f.Priority, sc.priorityAware)\n\tif !ok {\n\t\treturn sc.countError(\"unparsable_priority_update\", streamError(f.PrioritizedStreamID, ErrCodeProtocol))\n\t}\n\tsc.writeSched.AdjustStream(f.PrioritizedStreamID, p)\n\treturn nil\n}\n\nfunc (sc *serverConn) newStream(id, pusherID uint32, state streamState, priority PriorityParam) *stream {\n\tsc.serveG.check()\n\tif id == 0 {\n\t\tpanic(\"internal error: cannot create stream with id 0\")\n\t}\n\n\tctx, cancelCtx := context.WithCancel(sc.baseCtx)\n\tst := &stream{\n\t\tsc:        sc,\n\t\tid:        id,\n\t\tstate:     state,\n\t\tctx:       ctx,\n\t\tcancelCtx: cancelCtx,\n\t}\n\tst.cw.Init()\n\tst.flow.conn = &sc.flow // link to conn-level counter\n\tst.flow.add(sc.initialStreamSendWindowSize)\n\tst.inflow.init(sc.initialStreamRecvWindowSize)\n\tif sc.hs.WriteTimeout > 0 {\n\t\tst.writeDeadline = time.AfterFunc(sc.hs.WriteTimeout, st.onWriteTimeout)\n\t}\n\n\tsc.streams[id] = st\n\tsc.writeSched.OpenStream(st.id, OpenStreamOptions{PusherID: pusherID, priority: priority})\n\tif st.isPushed() {\n\t\tsc.curPushedStreams++\n\t} else {\n\t\tsc.curClientStreams++\n\t}\n\tif sc.curOpenStreams() == 1 {\n\t\tsc.setConnState(http.StateActive)\n\t}\n\n\treturn st\n}\n\nfunc (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*responseWriter, *http.Request, error) {\n\tsc.serveG.check()\n\n\trp := httpcommon.ServerRequestParam{\n\t\tMethod:    f.PseudoValue(\"method\"),\n\t\tScheme:    f.PseudoValue(\"scheme\"),\n\t\tAuthority: f.PseudoValue(\"authority\"),\n\t\tPath:      f.PseudoValue(\"path\"),\n\t\tProtocol:  f.PseudoValue(\"protocol\"),\n\t}\n\n\t// extended connect is disabled, so we should not see :protocol\n\tif disableExtendedConnectProtocol && rp.Protocol != \"\" {\n\t\treturn nil, nil, sc.countError(\"bad_connect\", streamError(f.StreamID, ErrCodeProtocol))\n\t}\n\n\tisConnect := rp.Method == \"CONNECT\"\n\tif isConnect {\n\t\tif rp.Protocol == \"\" && (rp.Path != \"\" || rp.Scheme != \"\" || rp.Authority == \"\") {\n\t\t\treturn nil, nil, sc.countError(\"bad_connect\", streamError(f.StreamID, ErrCodeProtocol))\n\t\t}\n\t} else if rp.Method == \"\" || rp.Path == \"\" || (rp.Scheme != \"https\" && rp.Scheme != \"http\") {\n\t\t// See 8.1.2.6 Malformed Requests and Responses:\n\t\t//\n\t\t// Malformed requests or responses that are detected\n\t\t// MUST be treated as a stream error (Section 5.4.2)\n\t\t// of type PROTOCOL_ERROR.\"\n\t\t//\n\t\t// 8.1.2.3 Request Pseudo-Header Fields\n\t\t// \"All HTTP/2 requests MUST include exactly one valid\n\t\t// value for the :method, :scheme, and :path\n\t\t// pseudo-header fields\"\n\t\treturn nil, nil, sc.countError(\"bad_path_method\", streamError(f.StreamID, ErrCodeProtocol))\n\t}\n\n\theader := make(http.Header)\n\trp.Header = header\n\tfor _, hf := range f.RegularFields() {\n\t\theader.Add(sc.canonicalHeader(hf.Name), hf.Value)\n\t}\n\tif rp.Authority == \"\" {\n\t\trp.Authority = header.Get(\"Host\")\n\t}\n\tif rp.Protocol != \"\" {\n\t\theader.Set(\":protocol\", rp.Protocol)\n\t}\n\n\trw, req, err := sc.newWriterAndRequestNoBody(st, rp)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tbodyOpen := !f.StreamEnded()\n\tif bodyOpen {\n\t\tif vv, ok := rp.Header[\"Content-Length\"]; ok {\n\t\t\tif cl, err := strconv.ParseUint(vv[0], 10, 63); err == nil {\n\t\t\t\treq.ContentLength = int64(cl)\n\t\t\t} else {\n\t\t\t\treq.ContentLength = 0\n\t\t\t}\n\t\t} else {\n\t\t\treq.ContentLength = -1\n\t\t}\n\t\treq.Body.(*requestBody).pipe = &pipe{\n\t\t\tb: &dataBuffer{expected: req.ContentLength},\n\t\t}\n\t}\n\treturn rw, req, nil\n}\n\nfunc (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp httpcommon.ServerRequestParam) (*responseWriter, *http.Request, error) {\n\tsc.serveG.check()\n\n\tvar tlsState *tls.ConnectionState // nil if not scheme https\n\tif rp.Scheme == \"https\" {\n\t\ttlsState = sc.tlsState\n\t}\n\n\tres := httpcommon.NewServerRequest(rp)\n\tif res.InvalidReason != \"\" {\n\t\treturn nil, nil, sc.countError(res.InvalidReason, streamError(st.id, ErrCodeProtocol))\n\t}\n\n\tbody := &requestBody{\n\t\tconn:          sc,\n\t\tstream:        st,\n\t\tneedsContinue: res.NeedsContinue,\n\t}\n\treq := (&http.Request{\n\t\tMethod:     rp.Method,\n\t\tURL:        res.URL,\n\t\tRemoteAddr: sc.remoteAddrStr,\n\t\tHeader:     rp.Header,\n\t\tRequestURI: res.RequestURI,\n\t\tProto:      \"HTTP/2.0\",\n\t\tProtoMajor: 2,\n\t\tProtoMinor: 0,\n\t\tTLS:        tlsState,\n\t\tHost:       rp.Authority,\n\t\tBody:       body,\n\t\tTrailer:    res.Trailer,\n\t}).WithContext(st.ctx)\n\trw := sc.newResponseWriter(st, req)\n\treturn rw, req, nil\n}\n\nfunc (sc *serverConn) newResponseWriter(st *stream, req *http.Request) *responseWriter {\n\trws := responseWriterStatePool.Get().(*responseWriterState)\n\tbwSave := rws.bw\n\t*rws = responseWriterState{} // zero all the fields\n\trws.conn = sc\n\trws.bw = bwSave\n\trws.bw.Reset(chunkWriter{rws})\n\trws.stream = st\n\trws.req = req\n\treturn &responseWriter{rws: rws}\n}\n\ntype unstartedHandler struct {\n\tstreamID uint32\n\trw       *responseWriter\n\treq      *http.Request\n\thandler  func(http.ResponseWriter, *http.Request)\n}\n\n// scheduleHandler starts a handler goroutine,\n// or schedules one to start as soon as an existing handler finishes.\nfunc (sc *serverConn) scheduleHandler(streamID uint32, rw *responseWriter, req *http.Request, handler func(http.ResponseWriter, *http.Request)) error {\n\tsc.serveG.check()\n\tmaxHandlers := sc.advMaxStreams\n\tif sc.curHandlers < maxHandlers {\n\t\tsc.curHandlers++\n\t\tgo sc.runHandler(rw, req, handler)\n\t\treturn nil\n\t}\n\tif len(sc.unstartedHandlers) > int(4*sc.advMaxStreams) {\n\t\treturn sc.countError(\"too_many_early_resets\", ConnectionError(ErrCodeEnhanceYourCalm))\n\t}\n\tsc.unstartedHandlers = append(sc.unstartedHandlers, unstartedHandler{\n\t\tstreamID: streamID,\n\t\trw:       rw,\n\t\treq:      req,\n\t\thandler:  handler,\n\t})\n\treturn nil\n}\n\nfunc (sc *serverConn) handlerDone() {\n\tsc.serveG.check()\n\tsc.curHandlers--\n\ti := 0\n\tmaxHandlers := sc.advMaxStreams\n\tfor ; i < len(sc.unstartedHandlers); i++ {\n\t\tu := sc.unstartedHandlers[i]\n\t\tif sc.streams[u.streamID] == nil {\n\t\t\t// This stream was reset before its goroutine had a chance to start.\n\t\t\tcontinue\n\t\t}\n\t\tif sc.curHandlers >= maxHandlers {\n\t\t\tbreak\n\t\t}\n\t\tsc.curHandlers++\n\t\tgo sc.runHandler(u.rw, u.req, u.handler)\n\t\tsc.unstartedHandlers[i] = unstartedHandler{} // don't retain references\n\t}\n\tsc.unstartedHandlers = sc.unstartedHandlers[i:]\n\tif len(sc.unstartedHandlers) == 0 {\n\t\tsc.unstartedHandlers = nil\n\t}\n}\n\n// Run on its own goroutine.\nfunc (sc *serverConn) runHandler(rw *responseWriter, req *http.Request, handler func(http.ResponseWriter, *http.Request)) {\n\tdefer sc.sendServeMsg(handlerDoneMsg)\n\tdidPanic := true\n\tdefer func() {\n\t\trw.rws.stream.cancelCtx()\n\t\tif req.MultipartForm != nil {\n\t\t\treq.MultipartForm.RemoveAll()\n\t\t}\n\t\tif didPanic {\n\t\t\te := recover()\n\t\t\tsc.writeFrameFromHandler(FrameWriteRequest{\n\t\t\t\twrite:  handlerPanicRST{rw.rws.stream.id},\n\t\t\t\tstream: rw.rws.stream,\n\t\t\t})\n\t\t\t// Same as net/http:\n\t\t\tif e != nil && e != http.ErrAbortHandler {\n\t\t\t\tconst size = 64 << 10\n\t\t\t\tbuf := make([]byte, size)\n\t\t\t\tbuf = buf[:runtime.Stack(buf, false)]\n\t\t\t\tsc.logf(\"http2: panic serving %v: %v\\n%s\", sc.conn.RemoteAddr(), e, buf)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\trw.handlerDone()\n\t}()\n\thandler(rw, req)\n\tdidPanic = false\n}\n\nfunc handleHeaderListTooLong(w http.ResponseWriter, r *http.Request) {\n\t// 10.5.1 Limits on Header Block Size:\n\t// .. \"A server that receives a larger header block than it is\n\t// willing to handle can send an HTTP 431 (Request Header Fields Too\n\t// Large) status code\"\n\tconst statusRequestHeaderFieldsTooLarge = 431 // only in Go 1.6+\n\tw.WriteHeader(statusRequestHeaderFieldsTooLarge)\n\tio.WriteString(w, \"<h1>HTTP Error 431</h1><p>Request Header Field(s) Too Large</p>\")\n}\n\n// called from handler goroutines.\n// h may be nil.\nfunc (sc *serverConn) writeHeaders(st *stream, headerData *writeResHeaders) error {\n\tsc.serveG.checkNotOn() // NOT on\n\tvar errc chan error\n\tif headerData.h != nil {\n\t\t// If there's a header map (which we don't own), so we have to block on\n\t\t// waiting for this frame to be written, so an http.Flush mid-handler\n\t\t// writes out the correct value of keys, before a handler later potentially\n\t\t// mutates it.\n\t\terrc = sc.srv.state.getErrChan()\n\t}\n\tif err := sc.writeFrameFromHandler(FrameWriteRequest{\n\t\twrite:  headerData,\n\t\tstream: st,\n\t\tdone:   errc,\n\t}); err != nil {\n\t\treturn err\n\t}\n\tif errc != nil {\n\t\tselect {\n\t\tcase err := <-errc:\n\t\t\tsc.srv.state.putErrChan(errc)\n\t\t\treturn err\n\t\tcase <-sc.doneServing:\n\t\t\treturn errClientDisconnected\n\t\tcase <-st.cw:\n\t\t\treturn errStreamClosed\n\t\t}\n\t}\n\treturn nil\n}\n\n// called from handler goroutines.\nfunc (sc *serverConn) write100ContinueHeaders(st *stream) {\n\tsc.writeFrameFromHandler(FrameWriteRequest{\n\t\twrite:  write100ContinueHeadersFrame{st.id},\n\t\tstream: st,\n\t})\n}\n\n// A bodyReadMsg tells the server loop that the http.Handler read n\n// bytes of the DATA from the client on the given stream.\ntype bodyReadMsg struct {\n\tst *stream\n\tn  int\n}\n\n// called from handler goroutines.\n// Notes that the handler for the given stream ID read n bytes of its body\n// and schedules flow control tokens to be sent.\nfunc (sc *serverConn) noteBodyReadFromHandler(st *stream, n int, err error) {\n\tsc.serveG.checkNotOn() // NOT on\n\tif n > 0 {\n\t\tselect {\n\t\tcase sc.bodyReadCh <- bodyReadMsg{st, n}:\n\t\tcase <-sc.doneServing:\n\t\t}\n\t}\n}\n\nfunc (sc *serverConn) noteBodyRead(st *stream, n int) {\n\tsc.serveG.check()\n\tsc.sendWindowUpdate(nil, n) // conn-level\n\tif st.state != stateHalfClosedRemote && st.state != stateClosed {\n\t\t// Don't send this WINDOW_UPDATE if the stream is closed\n\t\t// remotely.\n\t\tsc.sendWindowUpdate(st, n)\n\t}\n}\n\n// st may be nil for conn-level\nfunc (sc *serverConn) sendWindowUpdate32(st *stream, n int32) {\n\tsc.sendWindowUpdate(st, int(n))\n}\n\n// st may be nil for conn-level\nfunc (sc *serverConn) sendWindowUpdate(st *stream, n int) {\n\tsc.serveG.check()\n\tvar streamID uint32\n\tvar send int32\n\tif st == nil {\n\t\tsend = sc.inflow.add(n)\n\t} else {\n\t\tstreamID = st.id\n\t\tsend = st.inflow.add(n)\n\t}\n\tif send == 0 {\n\t\treturn\n\t}\n\tsc.writeFrame(FrameWriteRequest{\n\t\twrite:  writeWindowUpdate{streamID: streamID, n: uint32(send)},\n\t\tstream: st,\n\t})\n}\n\n// requestBody is the Handler's Request.Body type.\n// Read and Close may be called concurrently.\ntype requestBody struct {\n\t_             incomparable\n\tstream        *stream\n\tconn          *serverConn\n\tcloseOnce     sync.Once // for use by Close only\n\tsawEOF        bool      // for use by Read only\n\tpipe          *pipe     // non-nil if we have an HTTP entity message body\n\tneedsContinue bool      // need to send a 100-continue\n}\n\nfunc (b *requestBody) Close() error {\n\tb.closeOnce.Do(func() {\n\t\tif b.pipe != nil {\n\t\t\tb.pipe.BreakWithError(errClosedBody)\n\t\t}\n\t})\n\treturn nil\n}\n\nfunc (b *requestBody) Read(p []byte) (n int, err error) {\n\tif b.needsContinue {\n\t\tb.needsContinue = false\n\t\tb.conn.write100ContinueHeaders(b.stream)\n\t}\n\tif b.pipe == nil || b.sawEOF {\n\t\treturn 0, io.EOF\n\t}\n\tn, err = b.pipe.Read(p)\n\tif err == io.EOF {\n\t\tb.sawEOF = true\n\t}\n\tif b.conn == nil {\n\t\treturn\n\t}\n\tb.conn.noteBodyReadFromHandler(b.stream, n, err)\n\treturn\n}\n\n// responseWriter is the http.ResponseWriter implementation. It's\n// intentionally small (1 pointer wide) to minimize garbage. The\n// responseWriterState pointer inside is zeroed at the end of a\n// request (in handlerDone) and calls on the responseWriter thereafter\n// simply crash (caller's mistake), but the much larger responseWriterState\n// and buffers are reused between multiple requests.\ntype responseWriter struct {\n\trws *responseWriterState\n}\n\n// Optional http.ResponseWriter interfaces implemented.\nvar (\n\t_ http.CloseNotifier = (*responseWriter)(nil)\n\t_ http.Flusher       = (*responseWriter)(nil)\n\t_ stringWriter       = (*responseWriter)(nil)\n)\n\ntype responseWriterState struct {\n\t// immutable within a request:\n\tstream *stream\n\treq    *http.Request\n\tconn   *serverConn\n\n\t// TODO: adjust buffer writing sizes based on server config, frame size updates from peer, etc\n\tbw *bufio.Writer // writing to a chunkWriter{this *responseWriterState}\n\n\t// mutated by http.Handler goroutine:\n\thandlerHeader http.Header // nil until called\n\tsnapHeader    http.Header // snapshot of handlerHeader at WriteHeader time\n\ttrailers      []string    // set in writeChunk\n\tstatus        int         // status code passed to WriteHeader\n\twroteHeader   bool        // WriteHeader called (explicitly or implicitly). Not necessarily sent to user yet.\n\tsentHeader    bool        // have we sent the header frame?\n\thandlerDone   bool        // handler has finished\n\n\tsentContentLen int64 // non-zero if handler set a Content-Length header\n\twroteBytes     int64\n\n\tcloseNotifierMu sync.Mutex // guards closeNotifierCh\n\tcloseNotifierCh chan bool  // nil until first used\n}\n\ntype chunkWriter struct{ rws *responseWriterState }\n\nfunc (cw chunkWriter) Write(p []byte) (n int, err error) {\n\tn, err = cw.rws.writeChunk(p)\n\tif err == errStreamClosed {\n\t\t// If writing failed because the stream has been closed,\n\t\t// return the reason it was closed.\n\t\terr = cw.rws.stream.closeErr\n\t}\n\treturn n, err\n}\n\nfunc (rws *responseWriterState) hasTrailers() bool { return len(rws.trailers) > 0 }\n\nfunc (rws *responseWriterState) hasNonemptyTrailers() bool {\n\tfor _, trailer := range rws.trailers {\n\t\tif _, ok := rws.handlerHeader[trailer]; ok {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// declareTrailer is called for each Trailer header when the\n// response header is written. It notes that a header will need to be\n// written in the trailers at the end of the response.\nfunc (rws *responseWriterState) declareTrailer(k string) {\n\tk = http.CanonicalHeaderKey(k)\n\tif !httpguts.ValidTrailerHeader(k) {\n\t\t// Forbidden by RFC 7230, section 4.1.2.\n\t\trws.conn.logf(\"ignoring invalid trailer %q\", k)\n\t\treturn\n\t}\n\tif !strSliceContains(rws.trailers, k) {\n\t\trws.trailers = append(rws.trailers, k)\n\t}\n}\n\n// writeChunk writes chunks from the bufio.Writer. But because\n// bufio.Writer may bypass its chunking, sometimes p may be\n// arbitrarily large.\n//\n// writeChunk is also responsible (on the first chunk) for sending the\n// HEADER response.\nfunc (rws *responseWriterState) writeChunk(p []byte) (n int, err error) {\n\tif !rws.wroteHeader {\n\t\trws.writeHeader(200)\n\t}\n\n\tif rws.handlerDone {\n\t\trws.promoteUndeclaredTrailers()\n\t}\n\n\tisHeadResp := rws.req.Method == \"HEAD\"\n\tif !rws.sentHeader {\n\t\trws.sentHeader = true\n\t\tvar ctype, clen string\n\t\tif clen = rws.snapHeader.Get(\"Content-Length\"); clen != \"\" {\n\t\t\trws.snapHeader.Del(\"Content-Length\")\n\t\t\tif cl, err := strconv.ParseUint(clen, 10, 63); err == nil {\n\t\t\t\trws.sentContentLen = int64(cl)\n\t\t\t} else {\n\t\t\t\tclen = \"\"\n\t\t\t}\n\t\t}\n\t\t_, hasContentLength := rws.snapHeader[\"Content-Length\"]\n\t\tif !hasContentLength && clen == \"\" && rws.handlerDone && bodyAllowedForStatus(rws.status) && (len(p) > 0 || !isHeadResp) {\n\t\t\tclen = strconv.Itoa(len(p))\n\t\t}\n\t\t_, hasContentType := rws.snapHeader[\"Content-Type\"]\n\t\t// If the Content-Encoding is non-blank, we shouldn't\n\t\t// sniff the body. See Issue golang.org/issue/31753.\n\t\tce := rws.snapHeader.Get(\"Content-Encoding\")\n\t\thasCE := len(ce) > 0\n\t\tif !hasCE && !hasContentType && bodyAllowedForStatus(rws.status) && len(p) > 0 {\n\t\t\tctype = http.DetectContentType(p)\n\t\t}\n\t\tvar date string\n\t\tif _, ok := rws.snapHeader[\"Date\"]; !ok {\n\t\t\t// TODO(bradfitz): be faster here, like net/http? measure.\n\t\t\tdate = time.Now().UTC().Format(http.TimeFormat)\n\t\t}\n\n\t\tfor _, v := range rws.snapHeader[\"Trailer\"] {\n\t\t\tforeachHeaderElement(v, rws.declareTrailer)\n\t\t}\n\n\t\t// \"Connection\" headers aren't allowed in HTTP/2 (RFC 7540, 8.1.2.2),\n\t\t// but respect \"Connection\" == \"close\" to mean sending a GOAWAY and tearing\n\t\t// down the TCP connection when idle, like we do for HTTP/1.\n\t\t// TODO: remove more Connection-specific header fields here, in addition\n\t\t// to \"Connection\".\n\t\tif _, ok := rws.snapHeader[\"Connection\"]; ok {\n\t\t\tv := rws.snapHeader.Get(\"Connection\")\n\t\t\tdelete(rws.snapHeader, \"Connection\")\n\t\t\tif v == \"close\" {\n\t\t\t\trws.conn.startGracefulShutdown()\n\t\t\t}\n\t\t}\n\n\t\tendStream := (rws.handlerDone && !rws.hasTrailers() && len(p) == 0) || isHeadResp\n\t\terr = rws.conn.writeHeaders(rws.stream, &writeResHeaders{\n\t\t\tstreamID:      rws.stream.id,\n\t\t\thttpResCode:   rws.status,\n\t\t\th:             rws.snapHeader,\n\t\t\tendStream:     endStream,\n\t\t\tcontentType:   ctype,\n\t\t\tcontentLength: clen,\n\t\t\tdate:          date,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tif endStream {\n\t\t\treturn 0, nil\n\t\t}\n\t}\n\tif isHeadResp {\n\t\treturn len(p), nil\n\t}\n\tif len(p) == 0 && !rws.handlerDone {\n\t\treturn 0, nil\n\t}\n\n\t// only send trailers if they have actually been defined by the\n\t// server handler.\n\thasNonemptyTrailers := rws.hasNonemptyTrailers()\n\tendStream := rws.handlerDone && !hasNonemptyTrailers\n\tif len(p) > 0 || endStream {\n\t\t// only send a 0 byte DATA frame if we're ending the stream.\n\t\tif err := rws.conn.writeDataFromHandler(rws.stream, p, endStream); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\n\tif rws.handlerDone && hasNonemptyTrailers {\n\t\terr = rws.conn.writeHeaders(rws.stream, &writeResHeaders{\n\t\t\tstreamID:  rws.stream.id,\n\t\t\th:         rws.handlerHeader,\n\t\t\ttrailers:  rws.trailers,\n\t\t\tendStream: true,\n\t\t})\n\t\treturn len(p), err\n\t}\n\treturn len(p), nil\n}\n\n// TrailerPrefix is a magic prefix for ResponseWriter.Header map keys\n// that, if present, signals that the map entry is actually for\n// the response trailers, and not the response headers. The prefix\n// is stripped after the ServeHTTP call finishes and the values are\n// sent in the trailers.\n//\n// This mechanism is intended only for trailers that are not known\n// prior to the headers being written. If the set of trailers is fixed\n// or known before the header is written, the normal Go trailers mechanism\n// is preferred:\n//\n//\thttps://golang.org/pkg/net/http/#ResponseWriter\n//\thttps://golang.org/pkg/net/http/#example_ResponseWriter_trailers\nconst TrailerPrefix = \"Trailer:\"\n\n// promoteUndeclaredTrailers permits http.Handlers to set trailers\n// after the header has already been flushed. Because the Go\n// ResponseWriter interface has no way to set Trailers (only the\n// Header), and because we didn't want to expand the ResponseWriter\n// interface, and because nobody used trailers, and because RFC 7230\n// says you SHOULD (but not must) predeclare any trailers in the\n// header, the official ResponseWriter rules said trailers in Go must\n// be predeclared, and then we reuse the same ResponseWriter.Header()\n// map to mean both Headers and Trailers. When it's time to write the\n// Trailers, we pick out the fields of Headers that were declared as\n// trailers. That worked for a while, until we found the first major\n// user of Trailers in the wild: gRPC (using them only over http2),\n// and gRPC libraries permit setting trailers mid-stream without\n// predeclaring them. So: change of plans. We still permit the old\n// way, but we also permit this hack: if a Header() key begins with\n// \"Trailer:\", the suffix of that key is a Trailer. Because ':' is an\n// invalid token byte anyway, there is no ambiguity. (And it's already\n// filtered out) It's mildly hacky, but not terrible.\n//\n// This method runs after the Handler is done and promotes any Header\n// fields to be trailers.\nfunc (rws *responseWriterState) promoteUndeclaredTrailers() {\n\tfor k, vv := range rws.handlerHeader {\n\t\tif !strings.HasPrefix(k, TrailerPrefix) {\n\t\t\tcontinue\n\t\t}\n\t\ttrailerKey := strings.TrimPrefix(k, TrailerPrefix)\n\t\trws.declareTrailer(trailerKey)\n\t\trws.handlerHeader[http.CanonicalHeaderKey(trailerKey)] = vv\n\t}\n\n\tif len(rws.trailers) > 1 {\n\t\tsorter := sorterPool.Get().(*sorter)\n\t\tsorter.SortStrings(rws.trailers)\n\t\tsorterPool.Put(sorter)\n\t}\n}\n\nfunc (w *responseWriter) SetReadDeadline(deadline time.Time) error {\n\tst := w.rws.stream\n\tif !deadline.IsZero() && deadline.Before(time.Now()) {\n\t\t// If we're setting a deadline in the past, reset the stream immediately\n\t\t// so writes after SetWriteDeadline returns will fail.\n\t\tst.onReadTimeout()\n\t\treturn nil\n\t}\n\tw.rws.conn.sendServeMsg(func(sc *serverConn) {\n\t\tif st.readDeadline != nil {\n\t\t\tif !st.readDeadline.Stop() {\n\t\t\t\t// Deadline already exceeded, or stream has been closed.\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tif deadline.IsZero() {\n\t\t\tst.readDeadline = nil\n\t\t} else if st.readDeadline == nil {\n\t\t\tst.readDeadline = time.AfterFunc(deadline.Sub(time.Now()), st.onReadTimeout)\n\t\t} else {\n\t\t\tst.readDeadline.Reset(deadline.Sub(time.Now()))\n\t\t}\n\t})\n\treturn nil\n}\n\nfunc (w *responseWriter) SetWriteDeadline(deadline time.Time) error {\n\tst := w.rws.stream\n\tif !deadline.IsZero() && deadline.Before(time.Now()) {\n\t\t// If we're setting a deadline in the past, reset the stream immediately\n\t\t// so writes after SetWriteDeadline returns will fail.\n\t\tst.onWriteTimeout()\n\t\treturn nil\n\t}\n\tw.rws.conn.sendServeMsg(func(sc *serverConn) {\n\t\tif st.writeDeadline != nil {\n\t\t\tif !st.writeDeadline.Stop() {\n\t\t\t\t// Deadline already exceeded, or stream has been closed.\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tif deadline.IsZero() {\n\t\t\tst.writeDeadline = nil\n\t\t} else if st.writeDeadline == nil {\n\t\t\tst.writeDeadline = time.AfterFunc(deadline.Sub(time.Now()), st.onWriteTimeout)\n\t\t} else {\n\t\t\tst.writeDeadline.Reset(deadline.Sub(time.Now()))\n\t\t}\n\t})\n\treturn nil\n}\n\nfunc (w *responseWriter) EnableFullDuplex() error {\n\t// We always support full duplex responses, so this is a no-op.\n\treturn nil\n}\n\nfunc (w *responseWriter) Flush() {\n\tw.FlushError()\n}\n\nfunc (w *responseWriter) FlushError() error {\n\trws := w.rws\n\tif rws == nil {\n\t\tpanic(\"Header called after Handler finished\")\n\t}\n\tvar err error\n\tif rws.bw.Buffered() > 0 {\n\t\terr = rws.bw.Flush()\n\t} else {\n\t\t// The bufio.Writer won't call chunkWriter.Write\n\t\t// (writeChunk with zero bytes), so we have to do it\n\t\t// ourselves to force the HTTP response header and/or\n\t\t// final DATA frame (with END_STREAM) to be sent.\n\t\t_, err = chunkWriter{rws}.Write(nil)\n\t\tif err == nil {\n\t\t\tselect {\n\t\t\tcase <-rws.stream.cw:\n\t\t\t\terr = rws.stream.closeErr\n\t\t\tdefault:\n\t\t\t}\n\t\t}\n\t}\n\treturn err\n}\n\nfunc (w *responseWriter) CloseNotify() <-chan bool {\n\trws := w.rws\n\tif rws == nil {\n\t\tpanic(\"CloseNotify called after Handler finished\")\n\t}\n\trws.closeNotifierMu.Lock()\n\tch := rws.closeNotifierCh\n\tif ch == nil {\n\t\tch = make(chan bool, 1)\n\t\trws.closeNotifierCh = ch\n\t\tcw := rws.stream.cw\n\t\tgo func() {\n\t\t\tcw.Wait() // wait for close\n\t\t\tch <- true\n\t\t}()\n\t}\n\trws.closeNotifierMu.Unlock()\n\treturn ch\n}\n\nfunc (w *responseWriter) Header() http.Header {\n\trws := w.rws\n\tif rws == nil {\n\t\tpanic(\"Header called after Handler finished\")\n\t}\n\tif rws.handlerHeader == nil {\n\t\trws.handlerHeader = make(http.Header)\n\t}\n\treturn rws.handlerHeader\n}\n\n// checkWriteHeaderCode is a copy of net/http's checkWriteHeaderCode.\nfunc checkWriteHeaderCode(code int) {\n\t// Issue 22880: require valid WriteHeader status codes.\n\t// For now we only enforce that it's three digits.\n\t// In the future we might block things over 599 (600 and above aren't defined\n\t// at http://httpwg.org/specs/rfc7231.html#status.codes).\n\t// But for now any three digits.\n\t//\n\t// We used to send \"HTTP/1.1 000 0\" on the wire in responses but there's\n\t// no equivalent bogus thing we can realistically send in HTTP/2,\n\t// so we'll consistently panic instead and help people find their bugs\n\t// early. (We can't return an error from WriteHeader even if we wanted to.)\n\tif code < 100 || code > 999 {\n\t\tpanic(fmt.Sprintf(\"invalid WriteHeader code %v\", code))\n\t}\n}\n\nfunc (w *responseWriter) WriteHeader(code int) {\n\trws := w.rws\n\tif rws == nil {\n\t\tpanic(\"WriteHeader called after Handler finished\")\n\t}\n\trws.writeHeader(code)\n}\n\nfunc (rws *responseWriterState) writeHeader(code int) {\n\tif rws.wroteHeader {\n\t\treturn\n\t}\n\n\tcheckWriteHeaderCode(code)\n\n\t// Handle informational headers\n\tif code >= 100 && code <= 199 {\n\t\t// Per RFC 8297 we must not clear the current header map\n\t\th := rws.handlerHeader\n\n\t\t_, cl := h[\"Content-Length\"]\n\t\t_, te := h[\"Transfer-Encoding\"]\n\t\tif cl || te {\n\t\t\th = h.Clone()\n\t\t\th.Del(\"Content-Length\")\n\t\t\th.Del(\"Transfer-Encoding\")\n\t\t}\n\n\t\trws.conn.writeHeaders(rws.stream, &writeResHeaders{\n\t\t\tstreamID:    rws.stream.id,\n\t\t\thttpResCode: code,\n\t\t\th:           h,\n\t\t\tendStream:   rws.handlerDone && !rws.hasTrailers(),\n\t\t})\n\n\t\treturn\n\t}\n\n\trws.wroteHeader = true\n\trws.status = code\n\tif len(rws.handlerHeader) > 0 {\n\t\trws.snapHeader = cloneHeader(rws.handlerHeader)\n\t}\n}\n\nfunc cloneHeader(h http.Header) http.Header {\n\th2 := make(http.Header, len(h))\n\tfor k, vv := range h {\n\t\tvv2 := make([]string, len(vv))\n\t\tcopy(vv2, vv)\n\t\th2[k] = vv2\n\t}\n\treturn h2\n}\n\n// The Life Of A Write is like this:\n//\n// * Handler calls w.Write or w.WriteString ->\n// * -> rws.bw (*bufio.Writer) ->\n// * (Handler might call Flush)\n// * -> chunkWriter{rws}\n// * -> responseWriterState.writeChunk(p []byte)\n// * -> responseWriterState.writeChunk (most of the magic; see comment there)\nfunc (w *responseWriter) Write(p []byte) (n int, err error) {\n\treturn w.write(len(p), p, \"\")\n}\n\nfunc (w *responseWriter) WriteString(s string) (n int, err error) {\n\treturn w.write(len(s), nil, s)\n}\n\n// either dataB or dataS is non-zero.\nfunc (w *responseWriter) write(lenData int, dataB []byte, dataS string) (n int, err error) {\n\trws := w.rws\n\tif rws == nil {\n\t\tpanic(\"Write called after Handler finished\")\n\t}\n\tif !rws.wroteHeader {\n\t\tw.WriteHeader(200)\n\t}\n\tif !bodyAllowedForStatus(rws.status) {\n\t\treturn 0, http.ErrBodyNotAllowed\n\t}\n\trws.wroteBytes += int64(len(dataB)) + int64(len(dataS)) // only one can be set\n\tif rws.sentContentLen != 0 && rws.wroteBytes > rws.sentContentLen {\n\t\t// TODO: send a RST_STREAM\n\t\treturn 0, errors.New(\"http2: handler wrote more than declared Content-Length\")\n\t}\n\n\tif dataB != nil {\n\t\treturn rws.bw.Write(dataB)\n\t} else {\n\t\treturn rws.bw.WriteString(dataS)\n\t}\n}\n\nfunc (w *responseWriter) handlerDone() {\n\trws := w.rws\n\trws.handlerDone = true\n\tw.Flush()\n\tw.rws = nil\n\tresponseWriterStatePool.Put(rws)\n}\n\n// Push errors.\nvar (\n\tErrRecursivePush    = errors.New(\"http2: recursive push not allowed\")\n\tErrPushLimitReached = errors.New(\"http2: push would exceed peer's SETTINGS_MAX_CONCURRENT_STREAMS\")\n)\n\nvar _ http.Pusher = (*responseWriter)(nil)\n\nfunc (w *responseWriter) Push(target string, opts *http.PushOptions) error {\n\tst := w.rws.stream\n\tsc := st.sc\n\tsc.serveG.checkNotOn()\n\n\t// No recursive pushes: \"PUSH_PROMISE frames MUST only be sent on a peer-initiated stream.\"\n\t// http://tools.ietf.org/html/rfc7540#section-6.6\n\tif st.isPushed() {\n\t\treturn ErrRecursivePush\n\t}\n\n\tif opts == nil {\n\t\topts = new(http.PushOptions)\n\t}\n\n\t// Default options.\n\tif opts.Method == \"\" {\n\t\topts.Method = \"GET\"\n\t}\n\tif opts.Header == nil {\n\t\topts.Header = http.Header{}\n\t}\n\twantScheme := \"http\"\n\tif w.rws.req.TLS != nil {\n\t\twantScheme = \"https\"\n\t}\n\n\t// Validate the request.\n\tu, err := url.Parse(target)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif u.Scheme == \"\" {\n\t\tif !strings.HasPrefix(target, \"/\") {\n\t\t\treturn fmt.Errorf(\"target must be an absolute URL or an absolute path: %q\", target)\n\t\t}\n\t\tu.Scheme = wantScheme\n\t\tu.Host = w.rws.req.Host\n\t} else {\n\t\tif u.Scheme != wantScheme {\n\t\t\treturn fmt.Errorf(\"cannot push URL with scheme %q from request with scheme %q\", u.Scheme, wantScheme)\n\t\t}\n\t\tif u.Host == \"\" {\n\t\t\treturn errors.New(\"URL must have a host\")\n\t\t}\n\t}\n\tfor k := range opts.Header {\n\t\tif strings.HasPrefix(k, \":\") {\n\t\t\treturn fmt.Errorf(\"promised request headers cannot include pseudo header %q\", k)\n\t\t}\n\t\t// These headers are meaningful only if the request has a body,\n\t\t// but PUSH_PROMISE requests cannot have a body.\n\t\t// http://tools.ietf.org/html/rfc7540#section-8.2\n\t\t// Also disallow Host, since the promised URL must be absolute.\n\t\tif asciiEqualFold(k, \"content-length\") ||\n\t\t\tasciiEqualFold(k, \"content-encoding\") ||\n\t\t\tasciiEqualFold(k, \"trailer\") ||\n\t\t\tasciiEqualFold(k, \"te\") ||\n\t\t\tasciiEqualFold(k, \"expect\") ||\n\t\t\tasciiEqualFold(k, \"host\") {\n\t\t\treturn fmt.Errorf(\"promised request headers cannot include %q\", k)\n\t\t}\n\t}\n\tif err := checkValidHTTP2RequestHeaders(opts.Header); err != nil {\n\t\treturn err\n\t}\n\n\t// The RFC effectively limits promised requests to GET and HEAD:\n\t// \"Promised requests MUST be cacheable [GET, HEAD, or POST], and MUST be safe [GET or HEAD]\"\n\t// http://tools.ietf.org/html/rfc7540#section-8.2\n\tif opts.Method != \"GET\" && opts.Method != \"HEAD\" {\n\t\treturn fmt.Errorf(\"method %q must be GET or HEAD\", opts.Method)\n\t}\n\n\tmsg := &startPushRequest{\n\t\tparent: st,\n\t\tmethod: opts.Method,\n\t\turl:    u,\n\t\theader: cloneHeader(opts.Header),\n\t\tdone:   sc.srv.state.getErrChan(),\n\t}\n\n\tselect {\n\tcase <-sc.doneServing:\n\t\treturn errClientDisconnected\n\tcase <-st.cw:\n\t\treturn errStreamClosed\n\tcase sc.serveMsgCh <- msg:\n\t}\n\n\tselect {\n\tcase <-sc.doneServing:\n\t\treturn errClientDisconnected\n\tcase <-st.cw:\n\t\treturn errStreamClosed\n\tcase err := <-msg.done:\n\t\tsc.srv.state.putErrChan(msg.done)\n\t\treturn err\n\t}\n}\n\ntype startPushRequest struct {\n\tparent *stream\n\tmethod string\n\turl    *url.URL\n\theader http.Header\n\tdone   chan error\n}\n\nfunc (sc *serverConn) startPush(msg *startPushRequest) {\n\tsc.serveG.check()\n\n\t// http://tools.ietf.org/html/rfc7540#section-6.6.\n\t// PUSH_PROMISE frames MUST only be sent on a peer-initiated stream that\n\t// is in either the \"open\" or \"half-closed (remote)\" state.\n\tif msg.parent.state != stateOpen && msg.parent.state != stateHalfClosedRemote {\n\t\t// responseWriter.Push checks that the stream is peer-initiated.\n\t\tmsg.done <- errStreamClosed\n\t\treturn\n\t}\n\n\t// http://tools.ietf.org/html/rfc7540#section-6.6.\n\tif !sc.pushEnabled {\n\t\tmsg.done <- http.ErrNotSupported\n\t\treturn\n\t}\n\n\t// PUSH_PROMISE frames must be sent in increasing order by stream ID, so\n\t// we allocate an ID for the promised stream lazily, when the PUSH_PROMISE\n\t// is written. Once the ID is allocated, we start the request handler.\n\tallocatePromisedID := func() (uint32, error) {\n\t\tsc.serveG.check()\n\n\t\t// Check this again, just in case. Technically, we might have received\n\t\t// an updated SETTINGS by the time we got around to writing this frame.\n\t\tif !sc.pushEnabled {\n\t\t\treturn 0, http.ErrNotSupported\n\t\t}\n\t\t// http://tools.ietf.org/html/rfc7540#section-6.5.2.\n\t\tif sc.curPushedStreams+1 > sc.clientMaxStreams {\n\t\t\treturn 0, ErrPushLimitReached\n\t\t}\n\n\t\t// http://tools.ietf.org/html/rfc7540#section-5.1.1.\n\t\t// Streams initiated by the server MUST use even-numbered identifiers.\n\t\t// A server that is unable to establish a new stream identifier can send a GOAWAY\n\t\t// frame so that the client is forced to open a new connection for new streams.\n\t\tif sc.maxPushPromiseID+2 >= 1<<31 {\n\t\t\tsc.startGracefulShutdownInternal()\n\t\t\treturn 0, ErrPushLimitReached\n\t\t}\n\t\tsc.maxPushPromiseID += 2\n\t\tpromisedID := sc.maxPushPromiseID\n\n\t\t// http://tools.ietf.org/html/rfc7540#section-8.2.\n\t\t// Strictly speaking, the new stream should start in \"reserved (local)\", then\n\t\t// transition to \"half closed (remote)\" after sending the initial HEADERS, but\n\t\t// we start in \"half closed (remote)\" for simplicity.\n\t\t// See further comments at the definition of stateHalfClosedRemote.\n\t\tpromised := sc.newStream(promisedID, msg.parent.id, stateHalfClosedRemote, defaultRFC9218Priority(sc.priorityAware && !sc.hasIntermediary))\n\t\trw, req, err := sc.newWriterAndRequestNoBody(promised, httpcommon.ServerRequestParam{\n\t\t\tMethod:    msg.method,\n\t\t\tScheme:    msg.url.Scheme,\n\t\t\tAuthority: msg.url.Host,\n\t\t\tPath:      msg.url.RequestURI(),\n\t\t\tHeader:    cloneHeader(msg.header), // clone since handler runs concurrently with writing the PUSH_PROMISE\n\t\t})\n\t\tif err != nil {\n\t\t\t// Should not happen, since we've already validated msg.url.\n\t\t\tpanic(fmt.Sprintf(\"newWriterAndRequestNoBody(%+v): %v\", msg.url, err))\n\t\t}\n\n\t\tsc.curHandlers++\n\t\tgo sc.runHandler(rw, req, sc.handler.ServeHTTP)\n\t\treturn promisedID, nil\n\t}\n\n\tsc.writeFrame(FrameWriteRequest{\n\t\twrite: &writePushPromise{\n\t\t\tstreamID:           msg.parent.id,\n\t\t\tmethod:             msg.method,\n\t\t\turl:                msg.url,\n\t\t\th:                  msg.header,\n\t\t\tallocatePromisedID: allocatePromisedID,\n\t\t},\n\t\tstream: msg.parent,\n\t\tdone:   msg.done,\n\t})\n}\n\n// foreachHeaderElement splits v according to the \"#rule\" construction\n// in RFC 7230 section 7 and calls fn for each non-empty element.\nfunc foreachHeaderElement(v string, fn func(string)) {\n\tv = textproto.TrimString(v)\n\tif v == \"\" {\n\t\treturn\n\t}\n\tif !strings.Contains(v, \",\") {\n\t\tfn(v)\n\t\treturn\n\t}\n\tfor _, f := range strings.Split(v, \",\") {\n\t\tif f = textproto.TrimString(f); f != \"\" {\n\t\t\tfn(f)\n\t\t}\n\t}\n}\n\n// From http://httpwg.org/specs/rfc7540.html#rfc.section.8.1.2.2\nvar connHeaders = []string{\n\t\"Connection\",\n\t\"Keep-Alive\",\n\t\"Proxy-Connection\",\n\t\"Transfer-Encoding\",\n\t\"Upgrade\",\n}\n\n// checkValidHTTP2RequestHeaders checks whether h is a valid HTTP/2 request,\n// per RFC 7540 Section 8.1.2.2.\n// The returned error is reported to users.\nfunc checkValidHTTP2RequestHeaders(h http.Header) error {\n\tfor _, k := range connHeaders {\n\t\tif _, ok := h[k]; ok {\n\t\t\treturn fmt.Errorf(\"request header %q is not valid in HTTP/2\", k)\n\t\t}\n\t}\n\tte := h[\"Te\"]\n\tif len(te) > 0 && (len(te) > 1 || (te[0] != \"trailers\" && te[0] != \"\")) {\n\t\treturn errors.New(`request header \"TE\" may only be \"trailers\" in HTTP/2`)\n\t}\n\treturn nil\n}\n\nfunc new400Handler(err error) http.HandlerFunc {\n\treturn func(w http.ResponseWriter, r *http.Request) {\n\t\thttp.Error(w, err.Error(), http.StatusBadRequest)\n\t}\n}\n\n// h1ServerKeepAlivesDisabled reports whether hs has its keep-alives\n// disabled. See comments on h1ServerShutdownChan above for why\n// the code is written this way.\nfunc h1ServerKeepAlivesDisabled(hs *http.Server) bool {\n\tvar x interface{} = hs\n\ttype I interface {\n\t\tdoKeepAlives() bool\n\t}\n\tif hs, ok := x.(I); ok {\n\t\treturn !hs.doKeepAlives()\n\t}\n\treturn false\n}\n\nfunc (sc *serverConn) countError(name string, err error) error {\n\tif sc == nil || sc.srv == nil {\n\t\treturn err\n\t}\n\tf := sc.countErrorFunc\n\tif f == nil {\n\t\treturn err\n\t}\n\tvar typ string\n\tvar code ErrCode\n\tswitch e := err.(type) {\n\tcase ConnectionError:\n\t\ttyp = \"conn\"\n\t\tcode = ErrCode(e)\n\tcase StreamError:\n\t\ttyp = \"stream\"\n\t\tcode = ErrCode(e.Code)\n\tdefault:\n\t\treturn err\n\t}\n\tcodeStr := errCodeName[code]\n\tif codeStr == \"\" {\n\t\tcodeStr = strconv.Itoa(int(code))\n\t}\n\tf(fmt.Sprintf(\"%s_%s_%s\", typ, codeStr, name))\n\treturn err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/transport.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Transport code.\n\npackage http2\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"compress/flate\"\n\t\"compress/gzip\"\n\t\"context\"\n\t\"crypto/rand\"\n\t\"crypto/tls\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/fs\"\n\t\"log\"\n\t\"math\"\n\t\"math/bits\"\n\tmathrand \"math/rand\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/http/httptrace\"\n\t\"net/textproto\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"golang.org/x/net/http/httpguts\"\n\t\"golang.org/x/net/http2/hpack\"\n\t\"golang.org/x/net/idna\"\n\t\"golang.org/x/net/internal/httpcommon\"\n)\n\nconst (\n\t// transportDefaultConnFlow is how many connection-level flow control\n\t// tokens we give the server at start-up, past the default 64k.\n\ttransportDefaultConnFlow = 1 << 30\n\n\t// transportDefaultStreamFlow is how many stream-level flow\n\t// control tokens we announce to the peer, and how many bytes\n\t// we buffer per stream.\n\ttransportDefaultStreamFlow = 4 << 20\n\n\tdefaultUserAgent = \"Go-http-client/2.0\"\n\n\t// initialMaxConcurrentStreams is a connections maxConcurrentStreams until\n\t// it's received servers initial SETTINGS frame, which corresponds with the\n\t// spec's minimum recommended value.\n\tinitialMaxConcurrentStreams = 100\n\n\t// defaultMaxConcurrentStreams is a connections default maxConcurrentStreams\n\t// if the server doesn't include one in its initial SETTINGS frame.\n\tdefaultMaxConcurrentStreams = 1000\n)\n\n// Transport is an HTTP/2 Transport.\n//\n// A Transport internally caches connections to servers. It is safe\n// for concurrent use by multiple goroutines.\ntype Transport struct {\n\t// DialTLSContext specifies an optional dial function with context for\n\t// creating TLS connections for requests.\n\t//\n\t// If DialTLSContext and DialTLS is nil, tls.Dial is used.\n\t//\n\t// If the returned net.Conn has a ConnectionState method like tls.Conn,\n\t// it will be used to set http.Response.TLS.\n\tDialTLSContext func(ctx context.Context, network, addr string, cfg *tls.Config) (net.Conn, error)\n\n\t// DialTLS specifies an optional dial function for creating\n\t// TLS connections for requests.\n\t//\n\t// If DialTLSContext and DialTLS is nil, tls.Dial is used.\n\t//\n\t// Deprecated: Use DialTLSContext instead, which allows the transport\n\t// to cancel dials as soon as they are no longer needed.\n\t// If both are set, DialTLSContext takes priority.\n\tDialTLS func(network, addr string, cfg *tls.Config) (net.Conn, error)\n\n\t// TLSClientConfig specifies the TLS configuration to use with\n\t// tls.Client. If nil, the default configuration is used.\n\tTLSClientConfig *tls.Config\n\n\t// ConnPool optionally specifies an alternate connection pool to use.\n\t// If nil, the default is used.\n\tConnPool ClientConnPool\n\n\t// DisableCompression, if true, prevents the Transport from\n\t// requesting compression with an \"Accept-Encoding: gzip\"\n\t// request header when the Request contains no existing\n\t// Accept-Encoding value. If the Transport requests gzip on\n\t// its own and gets a gzipped response, it's transparently\n\t// decoded in the Response.Body. However, if the user\n\t// explicitly requested gzip it is not automatically\n\t// uncompressed.\n\tDisableCompression bool\n\n\t// AllowHTTP, if true, permits HTTP/2 requests using the insecure,\n\t// plain-text \"http\" scheme. Note that this does not enable h2c support.\n\tAllowHTTP bool\n\n\t// MaxHeaderListSize is the http2 SETTINGS_MAX_HEADER_LIST_SIZE to\n\t// send in the initial settings frame. It is how many bytes\n\t// of response headers are allowed. Unlike the http2 spec, zero here\n\t// means to use a default limit (currently 10MB). If you actually\n\t// want to advertise an unlimited value to the peer, Transport\n\t// interprets the highest possible value here (0xffffffff or 1<<32-1)\n\t// to mean no limit.\n\tMaxHeaderListSize uint32\n\n\t// MaxReadFrameSize is the http2 SETTINGS_MAX_FRAME_SIZE to send in the\n\t// initial settings frame. It is the size in bytes of the largest frame\n\t// payload that the sender is willing to receive. If 0, no setting is\n\t// sent, and the value is provided by the peer, which should be 16384\n\t// according to the spec:\n\t// https://datatracker.ietf.org/doc/html/rfc7540#section-6.5.2.\n\t// Values are bounded in the range 16k to 16M.\n\tMaxReadFrameSize uint32\n\n\t// MaxDecoderHeaderTableSize optionally specifies the http2\n\t// SETTINGS_HEADER_TABLE_SIZE to send in the initial settings frame. It\n\t// informs the remote endpoint of the maximum size of the header compression\n\t// table used to decode header blocks, in octets. If zero, the default value\n\t// of 4096 is used.\n\tMaxDecoderHeaderTableSize uint32\n\n\t// MaxEncoderHeaderTableSize optionally specifies an upper limit for the\n\t// header compression table used for encoding request headers. Received\n\t// SETTINGS_HEADER_TABLE_SIZE settings are capped at this limit. If zero,\n\t// the default value of 4096 is used.\n\tMaxEncoderHeaderTableSize uint32\n\n\t// StrictMaxConcurrentStreams controls whether the server's\n\t// SETTINGS_MAX_CONCURRENT_STREAMS should be respected\n\t// globally. If false, new TCP connections are created to the\n\t// server as needed to keep each under the per-connection\n\t// SETTINGS_MAX_CONCURRENT_STREAMS limit. If true, the\n\t// server's SETTINGS_MAX_CONCURRENT_STREAMS is interpreted as\n\t// a global limit and callers of RoundTrip block when needed,\n\t// waiting for their turn.\n\tStrictMaxConcurrentStreams bool\n\n\t// IdleConnTimeout is the maximum amount of time an idle\n\t// (keep-alive) connection will remain idle before closing\n\t// itself.\n\t// Zero means no limit.\n\tIdleConnTimeout time.Duration\n\n\t// ReadIdleTimeout is the timeout after which a health check using ping\n\t// frame will be carried out if no frame is received on the connection.\n\t// Note that a ping response will is considered a received frame, so if\n\t// there is no other traffic on the connection, the health check will\n\t// be performed every ReadIdleTimeout interval.\n\t// If zero, no health check is performed.\n\tReadIdleTimeout time.Duration\n\n\t// PingTimeout is the timeout after which the connection will be closed\n\t// if a response to Ping is not received.\n\t// Defaults to 15s.\n\tPingTimeout time.Duration\n\n\t// WriteByteTimeout is the timeout after which the connection will be\n\t// closed no data can be written to it. The timeout begins when data is\n\t// available to write, and is extended whenever any bytes are written.\n\tWriteByteTimeout time.Duration\n\n\t// CountError, if non-nil, is called on HTTP/2 transport errors.\n\t// It's intended to increment a metric for monitoring, such\n\t// as an expvar or Prometheus metric.\n\t// The errType consists of only ASCII word characters.\n\tCountError func(errType string)\n\n\t// t1, if non-nil, is the standard library Transport using\n\t// this transport. Its settings are used (but not its\n\t// RoundTrip method, etc).\n\tt1 *http.Transport\n\n\tconnPoolOnce  sync.Once\n\tconnPoolOrDef ClientConnPool // non-nil version of ConnPool\n\n\t*transportTestHooks\n}\n\n// Hook points used for testing.\n// Outside of tests, t.transportTestHooks is nil and these all have minimal implementations.\n// Inside tests, see the testSyncHooks function docs.\n\ntype transportTestHooks struct {\n\tnewclientconn func(*ClientConn)\n}\n\nfunc (t *Transport) maxHeaderListSize() uint32 {\n\tn := int64(t.MaxHeaderListSize)\n\tif t.t1 != nil && t.t1.MaxResponseHeaderBytes != 0 {\n\t\tn = t.t1.MaxResponseHeaderBytes\n\t\tif n > 0 {\n\t\t\tn = adjustHTTP1MaxHeaderSize(n)\n\t\t}\n\t}\n\tif n <= 0 {\n\t\treturn 10 << 20\n\t}\n\tif n >= 0xffffffff {\n\t\treturn 0\n\t}\n\treturn uint32(n)\n}\n\nfunc (t *Transport) disableCompression() bool {\n\treturn t.DisableCompression || (t.t1 != nil && t.t1.DisableCompression)\n}\n\n// ConfigureTransport configures a net/http HTTP/1 Transport to use HTTP/2.\n// It returns an error if t1 has already been HTTP/2-enabled.\n//\n// Use ConfigureTransports instead to configure the HTTP/2 Transport.\nfunc ConfigureTransport(t1 *http.Transport) error {\n\t_, err := ConfigureTransports(t1)\n\treturn err\n}\n\n// ConfigureTransports configures a net/http HTTP/1 Transport to use HTTP/2.\n// It returns a new HTTP/2 Transport for further configuration.\n// It returns an error if t1 has already been HTTP/2-enabled.\nfunc ConfigureTransports(t1 *http.Transport) (*Transport, error) {\n\treturn configureTransports(t1)\n}\n\nfunc configureTransports(t1 *http.Transport) (*Transport, error) {\n\tconnPool := new(clientConnPool)\n\tt2 := &Transport{\n\t\tConnPool: noDialClientConnPool{connPool},\n\t\tt1:       t1,\n\t}\n\tconnPool.t = t2\n\tif err := registerHTTPSProtocol(t1, noDialH2RoundTripper{t2}); err != nil {\n\t\treturn nil, err\n\t}\n\tif t1.TLSClientConfig == nil {\n\t\tt1.TLSClientConfig = new(tls.Config)\n\t}\n\tif !strSliceContains(t1.TLSClientConfig.NextProtos, \"h2\") {\n\t\tt1.TLSClientConfig.NextProtos = append([]string{\"h2\"}, t1.TLSClientConfig.NextProtos...)\n\t}\n\tif !strSliceContains(t1.TLSClientConfig.NextProtos, \"http/1.1\") {\n\t\tt1.TLSClientConfig.NextProtos = append(t1.TLSClientConfig.NextProtos, \"http/1.1\")\n\t}\n\tupgradeFn := func(scheme, authority string, c net.Conn) http.RoundTripper {\n\t\taddr := authorityAddr(scheme, authority)\n\t\tif used, err := connPool.addConnIfNeeded(addr, t2, c); err != nil {\n\t\t\tgo c.Close()\n\t\t\treturn erringRoundTripper{err}\n\t\t} else if !used {\n\t\t\t// Turns out we don't need this c.\n\t\t\t// For example, two goroutines made requests to the same host\n\t\t\t// at the same time, both kicking off TCP dials. (since protocol\n\t\t\t// was unknown)\n\t\t\tgo c.Close()\n\t\t}\n\t\tif scheme == \"http\" {\n\t\t\treturn (*unencryptedTransport)(t2)\n\t\t}\n\t\treturn t2\n\t}\n\tif t1.TLSNextProto == nil {\n\t\tt1.TLSNextProto = make(map[string]func(string, *tls.Conn) http.RoundTripper)\n\t}\n\tt1.TLSNextProto[NextProtoTLS] = func(authority string, c *tls.Conn) http.RoundTripper {\n\t\treturn upgradeFn(\"https\", authority, c)\n\t}\n\t// The \"unencrypted_http2\" TLSNextProto key is used to pass off non-TLS HTTP/2 conns.\n\tt1.TLSNextProto[nextProtoUnencryptedHTTP2] = func(authority string, c *tls.Conn) http.RoundTripper {\n\t\tnc, err := unencryptedNetConnFromTLSConn(c)\n\t\tif err != nil {\n\t\t\tgo c.Close()\n\t\t\treturn erringRoundTripper{err}\n\t\t}\n\t\treturn upgradeFn(\"http\", authority, nc)\n\t}\n\treturn t2, nil\n}\n\n// unencryptedTransport is a Transport with a RoundTrip method that\n// always permits http:// URLs.\ntype unencryptedTransport Transport\n\nfunc (t *unencryptedTransport) RoundTrip(req *http.Request) (*http.Response, error) {\n\treturn (*Transport)(t).RoundTripOpt(req, RoundTripOpt{allowHTTP: true})\n}\n\nfunc (t *Transport) connPool() ClientConnPool {\n\tt.connPoolOnce.Do(t.initConnPool)\n\treturn t.connPoolOrDef\n}\n\nfunc (t *Transport) initConnPool() {\n\tif t.ConnPool != nil {\n\t\tt.connPoolOrDef = t.ConnPool\n\t} else {\n\t\tt.connPoolOrDef = &clientConnPool{t: t}\n\t}\n}\n\n// ClientConn is the state of a single HTTP/2 client connection to an\n// HTTP/2 server.\ntype ClientConn struct {\n\tt             *Transport\n\ttconn         net.Conn             // usually *tls.Conn, except specialized impls\n\ttlsState      *tls.ConnectionState // nil only for specialized impls\n\tatomicReused  uint32               // whether conn is being reused; atomic\n\tsingleUse     bool                 // whether being used for a single http.Request\n\tgetConnCalled bool                 // used by clientConnPool\n\n\t// readLoop goroutine fields:\n\treaderDone chan struct{} // closed on error\n\treaderErr  error         // set before readerDone is closed\n\n\tidleTimeout time.Duration // or 0 for never\n\tidleTimer   *time.Timer\n\n\tmu               sync.Mutex // guards following\n\tcond             *sync.Cond // hold mu; broadcast on flow/closed changes\n\tflow             outflow    // our conn-level flow control quota (cs.outflow is per stream)\n\tinflow           inflow     // peer's conn-level flow control\n\tdoNotReuse       bool       // whether conn is marked to not be reused for any future requests\n\tclosing          bool\n\tclosed           bool\n\tclosedOnIdle     bool                     // true if conn was closed for idleness\n\tseenSettings     bool                     // true if we've seen a settings frame, false otherwise\n\tseenSettingsChan chan struct{}            // closed when seenSettings is true or frame reading fails\n\twantSettingsAck  bool                     // we sent a SETTINGS frame and haven't heard back\n\tgoAway           *GoAwayFrame             // if non-nil, the GoAwayFrame we received\n\tgoAwayDebug      string                   // goAway frame's debug data, retained as a string\n\tstreams          map[uint32]*clientStream // client-initiated\n\tstreamsReserved  int                      // incr by ReserveNewRequest; decr on RoundTrip\n\tnextStreamID     uint32\n\tpendingRequests  int                       // requests blocked and waiting to be sent because len(streams) == maxConcurrentStreams\n\tpings            map[[8]byte]chan struct{} // in flight ping data to notification channel\n\tbr               *bufio.Reader\n\tlastActive       time.Time\n\tlastIdle         time.Time // time last idle\n\t// Settings from peer: (also guarded by wmu)\n\tmaxFrameSize                uint32\n\tmaxConcurrentStreams        uint32\n\tpeerMaxHeaderListSize       uint64\n\tpeerMaxHeaderTableSize      uint32\n\tinitialWindowSize           uint32\n\tinitialStreamRecvWindowSize int32\n\treadIdleTimeout             time.Duration\n\tpingTimeout                 time.Duration\n\textendedConnectAllowed      bool\n\tstrictMaxConcurrentStreams  bool\n\n\t// rstStreamPingsBlocked works around an unfortunate gRPC behavior.\n\t// gRPC strictly limits the number of PING frames that it will receive.\n\t// The default is two pings per two hours, but the limit resets every time\n\t// the gRPC endpoint sends a HEADERS or DATA frame. See golang/go#70575.\n\t//\n\t// rstStreamPingsBlocked is set after receiving a response to a PING frame\n\t// bundled with an RST_STREAM (see pendingResets below), and cleared after\n\t// receiving a HEADERS or DATA frame.\n\trstStreamPingsBlocked bool\n\n\t// pendingResets is the number of RST_STREAM frames we have sent to the peer,\n\t// without confirming that the peer has received them. When we send a RST_STREAM,\n\t// we bundle it with a PING frame, unless a PING is already in flight. We count\n\t// the reset stream against the connection's concurrency limit until we get\n\t// a PING response. This limits the number of requests we'll try to send to a\n\t// completely unresponsive connection.\n\tpendingResets int\n\n\t// readBeforeStreamID is the smallest stream ID that has not been followed by\n\t// a frame read from the peer. We use this to determine when a request may\n\t// have been sent to a completely unresponsive connection:\n\t// If the request ID is less than readBeforeStreamID, then we have had some\n\t// indication of life on the connection since sending the request.\n\treadBeforeStreamID uint32\n\n\t// reqHeaderMu is a 1-element semaphore channel controlling access to sending new requests.\n\t// Write to reqHeaderMu to lock it, read from it to unlock.\n\t// Lock reqmu BEFORE mu or wmu.\n\treqHeaderMu chan struct{}\n\n\t// internalStateHook reports state changes back to the net/http.ClientConn.\n\t// Note that this is different from the user state hook registered by\n\t// net/http.ClientConn.SetStateHook: The internal hook calls ClientConn,\n\t// which calls the user hook.\n\tinternalStateHook func()\n\n\t// wmu is held while writing.\n\t// Acquire BEFORE mu when holding both, to avoid blocking mu on network writes.\n\t// Only acquire both at the same time when changing peer settings.\n\twmu  sync.Mutex\n\tbw   *bufio.Writer\n\tfr   *Framer\n\twerr error        // first write error that has occurred\n\thbuf bytes.Buffer // HPACK encoder writes into this\n\thenc *hpack.Encoder\n}\n\n// clientStream is the state for a single HTTP/2 stream. One of these\n// is created for each Transport.RoundTrip call.\ntype clientStream struct {\n\tcc *ClientConn\n\n\t// Fields of Request that we may access even after the response body is closed.\n\tctx       context.Context\n\treqCancel <-chan struct{}\n\n\ttrace         *httptrace.ClientTrace // or nil\n\tID            uint32\n\tbufPipe       pipe // buffered pipe with the flow-controlled response payload\n\trequestedGzip bool\n\tisHead        bool\n\n\tabortOnce sync.Once\n\tabort     chan struct{} // closed to signal stream should end immediately\n\tabortErr  error         // set if abort is closed\n\n\tpeerClosed chan struct{} // closed when the peer sends an END_STREAM flag\n\tdonec      chan struct{} // closed after the stream is in the closed state\n\ton100      chan struct{} // buffered; written to if a 100 is received\n\n\trespHeaderRecv chan struct{}  // closed when headers are received\n\tres            *http.Response // set if respHeaderRecv is closed\n\n\tflow        outflow // guarded by cc.mu\n\tinflow      inflow  // guarded by cc.mu\n\tbytesRemain int64   // -1 means unknown; owned by transportResponseBody.Read\n\treadErr     error   // sticky read error; owned by transportResponseBody.Read\n\n\treqBody              io.ReadCloser\n\treqBodyContentLength int64         // -1 means unknown\n\treqBodyClosed        chan struct{} // guarded by cc.mu; non-nil on Close, closed when done\n\n\t// owned by writeRequest:\n\tsentEndStream bool // sent an END_STREAM flag to the peer\n\tsentHeaders   bool\n\n\t// owned by clientConnReadLoop:\n\tfirstByte       bool  // got the first response byte\n\tpastHeaders     bool  // got first MetaHeadersFrame (actual headers)\n\tpastTrailers    bool  // got optional second MetaHeadersFrame (trailers)\n\treadClosed      bool  // peer sent an END_STREAM flag\n\treadAborted     bool  // read loop reset the stream\n\ttotalHeaderSize int64 // total size of 1xx headers seen\n\n\ttrailer    http.Header  // accumulated trailers\n\tresTrailer *http.Header // client's Response.Trailer\n}\n\nvar got1xxFuncForTests func(int, textproto.MIMEHeader) error\n\n// get1xxTraceFunc returns the value of request's httptrace.ClientTrace.Got1xxResponse func,\n// if any. It returns nil if not set or if the Go version is too old.\nfunc (cs *clientStream) get1xxTraceFunc() func(int, textproto.MIMEHeader) error {\n\tif fn := got1xxFuncForTests; fn != nil {\n\t\treturn fn\n\t}\n\treturn traceGot1xxResponseFunc(cs.trace)\n}\n\nfunc (cs *clientStream) abortStream(err error) {\n\tcs.cc.mu.Lock()\n\tdefer cs.cc.mu.Unlock()\n\tcs.abortStreamLocked(err)\n}\n\nfunc (cs *clientStream) abortStreamLocked(err error) {\n\tcs.abortOnce.Do(func() {\n\t\tcs.abortErr = err\n\t\tclose(cs.abort)\n\t})\n\tif cs.reqBody != nil {\n\t\tcs.closeReqBodyLocked()\n\t}\n\t// TODO(dneil): Clean up tests where cs.cc.cond is nil.\n\tif cs.cc.cond != nil {\n\t\t// Wake up writeRequestBody if it is waiting on flow control.\n\t\tcs.cc.cond.Broadcast()\n\t}\n}\n\nfunc (cs *clientStream) abortRequestBodyWrite() {\n\tcc := cs.cc\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\tif cs.reqBody != nil && cs.reqBodyClosed == nil {\n\t\tcs.closeReqBodyLocked()\n\t\tcc.cond.Broadcast()\n\t}\n}\n\nfunc (cs *clientStream) closeReqBodyLocked() {\n\tif cs.reqBodyClosed != nil {\n\t\treturn\n\t}\n\tcs.reqBodyClosed = make(chan struct{})\n\treqBodyClosed := cs.reqBodyClosed\n\tgo func() {\n\t\tcs.reqBody.Close()\n\t\tclose(reqBodyClosed)\n\t}()\n}\n\ntype stickyErrWriter struct {\n\tconn    net.Conn\n\ttimeout time.Duration\n\terr     *error\n}\n\nfunc (sew stickyErrWriter) Write(p []byte) (n int, err error) {\n\tif *sew.err != nil {\n\t\treturn 0, *sew.err\n\t}\n\tn, err = writeWithByteTimeout(sew.conn, sew.timeout, p)\n\t*sew.err = err\n\treturn n, err\n}\n\n// noCachedConnError is the concrete type of ErrNoCachedConn, which\n// needs to be detected by net/http regardless of whether it's its\n// bundled version (in h2_bundle.go with a rewritten type name) or\n// from a user's x/net/http2. As such, as it has a unique method name\n// (IsHTTP2NoCachedConnError) that net/http sniffs for via func\n// isNoCachedConnError.\ntype noCachedConnError struct{}\n\nfunc (noCachedConnError) IsHTTP2NoCachedConnError() {}\nfunc (noCachedConnError) Error() string             { return \"http2: no cached connection was available\" }\n\n// isNoCachedConnError reports whether err is of type noCachedConnError\n// or its equivalent renamed type in net/http2's h2_bundle.go. Both types\n// may coexist in the same running program.\nfunc isNoCachedConnError(err error) bool {\n\t_, ok := err.(interface{ IsHTTP2NoCachedConnError() })\n\treturn ok\n}\n\nvar ErrNoCachedConn error = noCachedConnError{}\n\n// RoundTripOpt are options for the Transport.RoundTripOpt method.\ntype RoundTripOpt struct {\n\t// OnlyCachedConn controls whether RoundTripOpt may\n\t// create a new TCP connection. If set true and\n\t// no cached connection is available, RoundTripOpt\n\t// will return ErrNoCachedConn.\n\tOnlyCachedConn bool\n\n\tallowHTTP bool // allow http:// URLs\n}\n\nfunc (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) {\n\treturn t.RoundTripOpt(req, RoundTripOpt{})\n}\n\n// authorityAddr returns a given authority (a host/IP, or host:port / ip:port)\n// and returns a host:port. The port 443 is added if needed.\nfunc authorityAddr(scheme string, authority string) (addr string) {\n\thost, port, err := net.SplitHostPort(authority)\n\tif err != nil { // authority didn't have a port\n\t\thost = authority\n\t\tport = \"\"\n\t}\n\tif port == \"\" { // authority's port was empty\n\t\tport = \"443\"\n\t\tif scheme == \"http\" {\n\t\t\tport = \"80\"\n\t\t}\n\t}\n\tif a, err := idna.ToASCII(host); err == nil {\n\t\thost = a\n\t}\n\t// IPv6 address literal, without a port:\n\tif strings.HasPrefix(host, \"[\") && strings.HasSuffix(host, \"]\") {\n\t\treturn host + \":\" + port\n\t}\n\treturn net.JoinHostPort(host, port)\n}\n\n// RoundTripOpt is like RoundTrip, but takes options.\nfunc (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Response, error) {\n\tswitch req.URL.Scheme {\n\tcase \"https\":\n\t\t// Always okay.\n\tcase \"http\":\n\t\tif !t.AllowHTTP && !opt.allowHTTP {\n\t\t\treturn nil, errors.New(\"http2: unencrypted HTTP/2 not enabled\")\n\t\t}\n\tdefault:\n\t\treturn nil, errors.New(\"http2: unsupported scheme\")\n\t}\n\n\taddr := authorityAddr(req.URL.Scheme, req.URL.Host)\n\tfor retry := 0; ; retry++ {\n\t\tcc, err := t.connPool().GetClientConn(req, addr)\n\t\tif err != nil {\n\t\t\tt.vlogf(\"http2: Transport failed to get client conn for %s: %v\", addr, err)\n\t\t\treturn nil, err\n\t\t}\n\t\treused := !atomic.CompareAndSwapUint32(&cc.atomicReused, 0, 1)\n\t\ttraceGotConn(req, cc, reused)\n\t\tres, err := cc.RoundTrip(req)\n\t\tif err != nil && retry <= 6 {\n\t\t\troundTripErr := err\n\t\t\tif req, err = shouldRetryRequest(req, err); err == nil {\n\t\t\t\t// After the first retry, do exponential backoff with 10% jitter.\n\t\t\t\tif retry == 0 {\n\t\t\t\t\tt.vlogf(\"RoundTrip retrying after failure: %v\", roundTripErr)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tbackoff := float64(uint(1) << (uint(retry) - 1))\n\t\t\t\tbackoff += backoff * (0.1 * mathrand.Float64())\n\t\t\t\td := time.Second * time.Duration(backoff)\n\t\t\t\ttm := time.NewTimer(d)\n\t\t\t\tselect {\n\t\t\t\tcase <-tm.C:\n\t\t\t\t\tt.vlogf(\"RoundTrip retrying after failure: %v\", roundTripErr)\n\t\t\t\t\tcontinue\n\t\t\t\tcase <-req.Context().Done():\n\t\t\t\t\ttm.Stop()\n\t\t\t\t\terr = req.Context().Err()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif err == errClientConnNotEstablished {\n\t\t\t// This ClientConn was created recently,\n\t\t\t// this is the first request to use it,\n\t\t\t// and the connection is closed and not usable.\n\t\t\t//\n\t\t\t// In this state, cc.idleTimer will remove the conn from the pool\n\t\t\t// when it fires. Stop the timer and remove it here so future requests\n\t\t\t// won't try to use this connection.\n\t\t\t//\n\t\t\t// If the timer has already fired and we're racing it, the redundant\n\t\t\t// call to MarkDead is harmless.\n\t\t\tif cc.idleTimer != nil {\n\t\t\t\tcc.idleTimer.Stop()\n\t\t\t}\n\t\t\tt.connPool().MarkDead(cc)\n\t\t}\n\t\tif err != nil {\n\t\t\tt.vlogf(\"RoundTrip failure: %v\", err)\n\t\t\treturn nil, err\n\t\t}\n\t\treturn res, nil\n\t}\n}\n\n// CloseIdleConnections closes any connections which were previously\n// connected from previous requests but are now sitting idle.\n// It does not interrupt any connections currently in use.\nfunc (t *Transport) CloseIdleConnections() {\n\tif cp, ok := t.connPool().(clientConnPoolIdleCloser); ok {\n\t\tcp.closeIdleConnections()\n\t}\n}\n\nvar (\n\terrClientConnClosed         = errors.New(\"http2: client conn is closed\")\n\terrClientConnUnusable       = errors.New(\"http2: client conn not usable\")\n\terrClientConnNotEstablished = errors.New(\"http2: client conn could not be established\")\n\terrClientConnGotGoAway      = errors.New(\"http2: Transport received Server's graceful shutdown GOAWAY\")\n\terrClientConnForceClosed    = errors.New(\"http2: client connection force closed via ClientConn.Close\")\n)\n\n// shouldRetryRequest is called by RoundTrip when a request fails to get\n// response headers. It is always called with a non-nil error.\n// It returns either a request to retry (either the same request, or a\n// modified clone), or an error if the request can't be replayed.\nfunc shouldRetryRequest(req *http.Request, err error) (*http.Request, error) {\n\tif !canRetryError(err) {\n\t\treturn nil, err\n\t}\n\t// If the Body is nil (or http.NoBody), it's safe to reuse\n\t// this request and its Body.\n\tif req.Body == nil || req.Body == http.NoBody {\n\t\treturn req, nil\n\t}\n\n\t// If the request body can be reset back to its original\n\t// state via the optional req.GetBody, do that.\n\tif req.GetBody != nil {\n\t\tbody, err := req.GetBody()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tnewReq := *req\n\t\tnewReq.Body = body\n\t\treturn &newReq, nil\n\t}\n\n\t// The Request.Body can't reset back to the beginning, but we\n\t// don't seem to have started to read from it yet, so reuse\n\t// the request directly.\n\tif err == errClientConnUnusable {\n\t\treturn req, nil\n\t}\n\n\treturn nil, fmt.Errorf(\"http2: Transport: cannot retry err [%v] after Request.Body was written; define Request.GetBody to avoid this error\", err)\n}\n\nfunc canRetryError(err error) bool {\n\tif err == errClientConnUnusable || err == errClientConnGotGoAway {\n\t\treturn true\n\t}\n\tif se, ok := err.(StreamError); ok {\n\t\tif se.Code == ErrCodeProtocol && se.Cause == errFromPeer {\n\t\t\t// See golang/go#47635, golang/go#42777\n\t\t\treturn true\n\t\t}\n\t\treturn se.Code == ErrCodeRefusedStream\n\t}\n\treturn false\n}\n\nfunc (t *Transport) dialClientConn(ctx context.Context, addr string, singleUse bool) (*ClientConn, error) {\n\tif t.transportTestHooks != nil {\n\t\treturn t.newClientConn(nil, singleUse, nil)\n\t}\n\thost, _, err := net.SplitHostPort(addr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ttconn, err := t.dialTLS(ctx, \"tcp\", addr, t.newTLSConfig(host))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn t.newClientConn(tconn, singleUse, nil)\n}\n\nfunc (t *Transport) newTLSConfig(host string) *tls.Config {\n\tcfg := new(tls.Config)\n\tif t.TLSClientConfig != nil {\n\t\t*cfg = *t.TLSClientConfig.Clone()\n\t}\n\tif !strSliceContains(cfg.NextProtos, NextProtoTLS) {\n\t\tcfg.NextProtos = append([]string{NextProtoTLS}, cfg.NextProtos...)\n\t}\n\tif cfg.ServerName == \"\" {\n\t\tcfg.ServerName = host\n\t}\n\treturn cfg\n}\n\nfunc (t *Transport) dialTLS(ctx context.Context, network, addr string, tlsCfg *tls.Config) (net.Conn, error) {\n\tif t.DialTLSContext != nil {\n\t\treturn t.DialTLSContext(ctx, network, addr, tlsCfg)\n\t} else if t.DialTLS != nil {\n\t\treturn t.DialTLS(network, addr, tlsCfg)\n\t}\n\n\ttlsCn, err := t.dialTLSWithContext(ctx, network, addr, tlsCfg)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tstate := tlsCn.ConnectionState()\n\tif p := state.NegotiatedProtocol; p != NextProtoTLS {\n\t\treturn nil, fmt.Errorf(\"http2: unexpected ALPN protocol %q; want %q\", p, NextProtoTLS)\n\t}\n\tif !state.NegotiatedProtocolIsMutual {\n\t\treturn nil, errors.New(\"http2: could not negotiate protocol mutually\")\n\t}\n\treturn tlsCn, nil\n}\n\n// disableKeepAlives reports whether connections should be closed as\n// soon as possible after handling the first request.\nfunc (t *Transport) disableKeepAlives() bool {\n\treturn t.t1 != nil && t.t1.DisableKeepAlives\n}\n\nfunc (t *Transport) expectContinueTimeout() time.Duration {\n\tif t.t1 == nil {\n\t\treturn 0\n\t}\n\treturn t.t1.ExpectContinueTimeout\n}\n\nfunc (t *Transport) NewClientConn(c net.Conn) (*ClientConn, error) {\n\treturn t.newClientConn(c, t.disableKeepAlives(), nil)\n}\n\nfunc (t *Transport) newClientConn(c net.Conn, singleUse bool, internalStateHook func()) (*ClientConn, error) {\n\tconf := configFromTransport(t)\n\tcc := &ClientConn{\n\t\tt:                           t,\n\t\ttconn:                       c,\n\t\treaderDone:                  make(chan struct{}),\n\t\tnextStreamID:                1,\n\t\tmaxFrameSize:                16 << 10, // spec default\n\t\tinitialWindowSize:           65535,    // spec default\n\t\tinitialStreamRecvWindowSize: conf.MaxUploadBufferPerStream,\n\t\tmaxConcurrentStreams:        initialMaxConcurrentStreams, // \"infinite\", per spec. Use a smaller value until we have received server settings.\n\t\tstrictMaxConcurrentStreams:  conf.StrictMaxConcurrentRequests,\n\t\tpeerMaxHeaderListSize:       0xffffffffffffffff, // \"infinite\", per spec. Use 2^64-1 instead.\n\t\tstreams:                     make(map[uint32]*clientStream),\n\t\tsingleUse:                   singleUse,\n\t\tseenSettingsChan:            make(chan struct{}),\n\t\twantSettingsAck:             true,\n\t\treadIdleTimeout:             conf.SendPingTimeout,\n\t\tpingTimeout:                 conf.PingTimeout,\n\t\tpings:                       make(map[[8]byte]chan struct{}),\n\t\treqHeaderMu:                 make(chan struct{}, 1),\n\t\tlastActive:                  time.Now(),\n\t\tinternalStateHook:           internalStateHook,\n\t}\n\tif t.transportTestHooks != nil {\n\t\tt.transportTestHooks.newclientconn(cc)\n\t\tc = cc.tconn\n\t}\n\tif VerboseLogs {\n\t\tt.vlogf(\"http2: Transport creating client conn %p to %v\", cc, c.RemoteAddr())\n\t}\n\n\tcc.cond = sync.NewCond(&cc.mu)\n\tcc.flow.add(int32(initialWindowSize))\n\n\t// TODO: adjust this writer size to account for frame size +\n\t// MTU + crypto/tls record padding.\n\tcc.bw = bufio.NewWriter(stickyErrWriter{\n\t\tconn:    c,\n\t\ttimeout: conf.WriteByteTimeout,\n\t\terr:     &cc.werr,\n\t})\n\tcc.br = bufio.NewReader(c)\n\tcc.fr = NewFramer(cc.bw, cc.br)\n\tcc.fr.SetMaxReadFrameSize(conf.MaxReadFrameSize)\n\tif t.CountError != nil {\n\t\tcc.fr.countError = t.CountError\n\t}\n\tmaxHeaderTableSize := conf.MaxDecoderHeaderTableSize\n\tcc.fr.ReadMetaHeaders = hpack.NewDecoder(maxHeaderTableSize, nil)\n\tcc.fr.MaxHeaderListSize = t.maxHeaderListSize()\n\n\tcc.henc = hpack.NewEncoder(&cc.hbuf)\n\tcc.henc.SetMaxDynamicTableSizeLimit(conf.MaxEncoderHeaderTableSize)\n\tcc.peerMaxHeaderTableSize = initialHeaderTableSize\n\n\tif cs, ok := c.(connectionStater); ok {\n\t\tstate := cs.ConnectionState()\n\t\tcc.tlsState = &state\n\t}\n\n\tinitialSettings := []Setting{\n\t\t{ID: SettingEnablePush, Val: 0},\n\t\t{ID: SettingInitialWindowSize, Val: uint32(cc.initialStreamRecvWindowSize)},\n\t}\n\tinitialSettings = append(initialSettings, Setting{ID: SettingMaxFrameSize, Val: conf.MaxReadFrameSize})\n\tif max := t.maxHeaderListSize(); max != 0 {\n\t\tinitialSettings = append(initialSettings, Setting{ID: SettingMaxHeaderListSize, Val: max})\n\t}\n\tif maxHeaderTableSize != initialHeaderTableSize {\n\t\tinitialSettings = append(initialSettings, Setting{ID: SettingHeaderTableSize, Val: maxHeaderTableSize})\n\t}\n\n\tcc.bw.Write(clientPreface)\n\tcc.fr.WriteSettings(initialSettings...)\n\tcc.fr.WriteWindowUpdate(0, uint32(conf.MaxUploadBufferPerConnection))\n\tcc.inflow.init(conf.MaxUploadBufferPerConnection + initialWindowSize)\n\tcc.bw.Flush()\n\tif cc.werr != nil {\n\t\tcc.Close()\n\t\treturn nil, cc.werr\n\t}\n\n\t// Start the idle timer after the connection is fully initialized.\n\tif d := t.idleConnTimeout(); d != 0 {\n\t\tcc.idleTimeout = d\n\t\tcc.idleTimer = time.AfterFunc(d, cc.onIdleTimeout)\n\t}\n\n\tgo cc.readLoop()\n\treturn cc, nil\n}\n\nfunc (cc *ClientConn) healthCheck() {\n\tpingTimeout := cc.pingTimeout\n\t// We don't need to periodically ping in the health check, because the readLoop of ClientConn will\n\t// trigger the healthCheck again if there is no frame received.\n\tctx, cancel := context.WithTimeout(context.Background(), pingTimeout)\n\tdefer cancel()\n\tcc.vlogf(\"http2: Transport sending health check\")\n\terr := cc.Ping(ctx)\n\tif err != nil {\n\t\tcc.vlogf(\"http2: Transport health check failure: %v\", err)\n\t\tcc.closeForLostPing()\n\t} else {\n\t\tcc.vlogf(\"http2: Transport health check success\")\n\t}\n}\n\n// SetDoNotReuse marks cc as not reusable for future HTTP requests.\nfunc (cc *ClientConn) SetDoNotReuse() {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\tcc.doNotReuse = true\n}\n\nfunc (cc *ClientConn) setGoAway(f *GoAwayFrame) {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\n\told := cc.goAway\n\tcc.goAway = f\n\n\t// Merge the previous and current GoAway error frames.\n\tif cc.goAwayDebug == \"\" {\n\t\tcc.goAwayDebug = string(f.DebugData())\n\t}\n\tif old != nil && old.ErrCode != ErrCodeNo {\n\t\tcc.goAway.ErrCode = old.ErrCode\n\t}\n\tlast := f.LastStreamID\n\tfor streamID, cs := range cc.streams {\n\t\tif streamID <= last {\n\t\t\t// The server's GOAWAY indicates that it received this stream.\n\t\t\t// It will either finish processing it, or close the connection\n\t\t\t// without doing so. Either way, leave the stream alone for now.\n\t\t\tcontinue\n\t\t}\n\t\tif streamID == 1 && cc.goAway.ErrCode != ErrCodeNo {\n\t\t\t// Don't retry the first stream on a connection if we get a non-NO error.\n\t\t\t// If the server is sending an error on a new connection,\n\t\t\t// retrying the request on a new one probably isn't going to work.\n\t\t\tcs.abortStreamLocked(fmt.Errorf(\"http2: Transport received GOAWAY from server ErrCode:%v\", cc.goAway.ErrCode))\n\t\t} else {\n\t\t\t// Aborting the stream with errClentConnGotGoAway indicates that\n\t\t\t// the request should be retried on a new connection.\n\t\t\tcs.abortStreamLocked(errClientConnGotGoAway)\n\t\t}\n\t}\n}\n\n// CanTakeNewRequest reports whether the connection can take a new request,\n// meaning it has not been closed or received or sent a GOAWAY.\n//\n// If the caller is going to immediately make a new request on this\n// connection, use ReserveNewRequest instead.\nfunc (cc *ClientConn) CanTakeNewRequest() bool {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\treturn cc.canTakeNewRequestLocked()\n}\n\n// ReserveNewRequest is like CanTakeNewRequest but also reserves a\n// concurrent stream in cc. The reservation is decremented on the\n// next call to RoundTrip.\nfunc (cc *ClientConn) ReserveNewRequest() bool {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\tif st := cc.idleStateLocked(); !st.canTakeNewRequest {\n\t\treturn false\n\t}\n\tcc.streamsReserved++\n\treturn true\n}\n\n// ClientConnState describes the state of a ClientConn.\ntype ClientConnState struct {\n\t// Closed is whether the connection is closed.\n\tClosed bool\n\n\t// Closing is whether the connection is in the process of\n\t// closing. It may be closing due to shutdown, being a\n\t// single-use connection, being marked as DoNotReuse, or\n\t// having received a GOAWAY frame.\n\tClosing bool\n\n\t// StreamsActive is how many streams are active.\n\tStreamsActive int\n\n\t// StreamsReserved is how many streams have been reserved via\n\t// ClientConn.ReserveNewRequest.\n\tStreamsReserved int\n\n\t// StreamsPending is how many requests have been sent in excess\n\t// of the peer's advertised MaxConcurrentStreams setting and\n\t// are waiting for other streams to complete.\n\tStreamsPending int\n\n\t// MaxConcurrentStreams is how many concurrent streams the\n\t// peer advertised as acceptable. Zero means no SETTINGS\n\t// frame has been received yet.\n\tMaxConcurrentStreams uint32\n\n\t// LastIdle, if non-zero, is when the connection last\n\t// transitioned to idle state.\n\tLastIdle time.Time\n}\n\n// State returns a snapshot of cc's state.\nfunc (cc *ClientConn) State() ClientConnState {\n\tcc.wmu.Lock()\n\tmaxConcurrent := cc.maxConcurrentStreams\n\tif !cc.seenSettings {\n\t\tmaxConcurrent = 0\n\t}\n\tcc.wmu.Unlock()\n\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\treturn ClientConnState{\n\t\tClosed:               cc.closed,\n\t\tClosing:              cc.closing || cc.singleUse || cc.doNotReuse || cc.goAway != nil,\n\t\tStreamsActive:        len(cc.streams) + cc.pendingResets,\n\t\tStreamsReserved:      cc.streamsReserved,\n\t\tStreamsPending:       cc.pendingRequests,\n\t\tLastIdle:             cc.lastIdle,\n\t\tMaxConcurrentStreams: maxConcurrent,\n\t}\n}\n\n// clientConnIdleState describes the suitability of a client\n// connection to initiate a new RoundTrip request.\ntype clientConnIdleState struct {\n\tcanTakeNewRequest bool\n}\n\nfunc (cc *ClientConn) idleState() clientConnIdleState {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\treturn cc.idleStateLocked()\n}\n\nfunc (cc *ClientConn) idleStateLocked() (st clientConnIdleState) {\n\tif cc.singleUse && cc.nextStreamID > 1 {\n\t\treturn\n\t}\n\tvar maxConcurrentOkay bool\n\tif cc.strictMaxConcurrentStreams {\n\t\t// We'll tell the caller we can take a new request to\n\t\t// prevent the caller from dialing a new TCP\n\t\t// connection, but then we'll block later before\n\t\t// writing it.\n\t\tmaxConcurrentOkay = true\n\t} else {\n\t\t// We can take a new request if the total of\n\t\t//   - active streams;\n\t\t//   - reservation slots for new streams; and\n\t\t//   - streams for which we have sent a RST_STREAM and a PING,\n\t\t//     but received no subsequent frame\n\t\t// is less than the concurrency limit.\n\t\tmaxConcurrentOkay = cc.currentRequestCountLocked() < int(cc.maxConcurrentStreams)\n\t}\n\n\tst.canTakeNewRequest = maxConcurrentOkay && cc.isUsableLocked()\n\n\t// If this connection has never been used for a request and is closed,\n\t// then let it take a request (which will fail).\n\t// If the conn was closed for idleness, we're racing the idle timer;\n\t// don't try to use the conn. (Issue #70515.)\n\t//\n\t// This avoids a situation where an error early in a connection's lifetime\n\t// goes unreported.\n\tif cc.nextStreamID == 1 && cc.streamsReserved == 0 && cc.closed && !cc.closedOnIdle {\n\t\tst.canTakeNewRequest = true\n\t}\n\n\treturn\n}\n\nfunc (cc *ClientConn) isUsableLocked() bool {\n\treturn cc.goAway == nil &&\n\t\t!cc.closed &&\n\t\t!cc.closing &&\n\t\t!cc.doNotReuse &&\n\t\tint64(cc.nextStreamID)+2*int64(cc.pendingRequests) < math.MaxInt32 &&\n\t\t!cc.tooIdleLocked()\n}\n\n// canReserveLocked reports whether a net/http.ClientConn can reserve a slot on this conn.\n//\n// This follows slightly different rules than clientConnIdleState.canTakeNewRequest.\n// We only permit reservations up to the conn's concurrency limit.\n// This differs from ClientConn.ReserveNewRequest, which permits reservations\n// past the limit when StrictMaxConcurrentStreams is set.\nfunc (cc *ClientConn) canReserveLocked() bool {\n\tif cc.currentRequestCountLocked() >= int(cc.maxConcurrentStreams) {\n\t\treturn false\n\t}\n\tif !cc.isUsableLocked() {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// currentRequestCountLocked reports the number of concurrency slots currently in use,\n// including active streams, reserved slots, and reset streams waiting for acknowledgement.\nfunc (cc *ClientConn) currentRequestCountLocked() int {\n\treturn len(cc.streams) + cc.streamsReserved + cc.pendingResets\n}\n\nfunc (cc *ClientConn) canTakeNewRequestLocked() bool {\n\tst := cc.idleStateLocked()\n\treturn st.canTakeNewRequest\n}\n\n// availableLocked reports the number of concurrency slots available.\nfunc (cc *ClientConn) availableLocked() int {\n\tif !cc.canTakeNewRequestLocked() {\n\t\treturn 0\n\t}\n\treturn max(0, int(cc.maxConcurrentStreams)-cc.currentRequestCountLocked())\n}\n\n// tooIdleLocked reports whether this connection has been been sitting idle\n// for too much wall time.\nfunc (cc *ClientConn) tooIdleLocked() bool {\n\t// The Round(0) strips the monontonic clock reading so the\n\t// times are compared based on their wall time. We don't want\n\t// to reuse a connection that's been sitting idle during\n\t// VM/laptop suspend if monotonic time was also frozen.\n\treturn cc.idleTimeout != 0 && !cc.lastIdle.IsZero() && time.Since(cc.lastIdle.Round(0)) > cc.idleTimeout\n}\n\n// onIdleTimeout is called from a time.AfterFunc goroutine. It will\n// only be called when we're idle, but because we're coming from a new\n// goroutine, there could be a new request coming in at the same time,\n// so this simply calls the synchronized closeIfIdle to shut down this\n// connection. The timer could just call closeIfIdle, but this is more\n// clear.\nfunc (cc *ClientConn) onIdleTimeout() {\n\tcc.closeIfIdle()\n}\n\nfunc (cc *ClientConn) closeConn() {\n\tt := time.AfterFunc(250*time.Millisecond, cc.forceCloseConn)\n\tdefer t.Stop()\n\tcc.tconn.Close()\n\tcc.maybeCallStateHook()\n}\n\n// A tls.Conn.Close can hang for a long time if the peer is unresponsive.\n// Try to shut it down more aggressively.\nfunc (cc *ClientConn) forceCloseConn() {\n\ttc, ok := cc.tconn.(*tls.Conn)\n\tif !ok {\n\t\treturn\n\t}\n\tif nc := tc.NetConn(); nc != nil {\n\t\tnc.Close()\n\t}\n}\n\nfunc (cc *ClientConn) closeIfIdle() {\n\tcc.mu.Lock()\n\tif len(cc.streams) > 0 || cc.streamsReserved > 0 {\n\t\tcc.mu.Unlock()\n\t\treturn\n\t}\n\tcc.closed = true\n\tcc.closedOnIdle = true\n\tnextID := cc.nextStreamID\n\t// TODO: do clients send GOAWAY too? maybe? Just Close:\n\tcc.mu.Unlock()\n\n\tif VerboseLogs {\n\t\tcc.vlogf(\"http2: Transport closing idle conn %p (forSingleUse=%v, maxStream=%v)\", cc, cc.singleUse, nextID-2)\n\t}\n\tcc.closeConn()\n}\n\nfunc (cc *ClientConn) isDoNotReuseAndIdle() bool {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\treturn cc.doNotReuse && len(cc.streams) == 0\n}\n\nvar shutdownEnterWaitStateHook = func() {}\n\n// Shutdown gracefully closes the client connection, waiting for running streams to complete.\nfunc (cc *ClientConn) Shutdown(ctx context.Context) error {\n\tif err := cc.sendGoAway(); err != nil {\n\t\treturn err\n\t}\n\t// Wait for all in-flight streams to complete or connection to close\n\tdone := make(chan struct{})\n\tcancelled := false // guarded by cc.mu\n\tgo func() {\n\t\tcc.mu.Lock()\n\t\tdefer cc.mu.Unlock()\n\t\tfor {\n\t\t\tif len(cc.streams) == 0 || cc.closed {\n\t\t\t\tcc.closed = true\n\t\t\t\tclose(done)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif cancelled {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcc.cond.Wait()\n\t\t}\n\t}()\n\tshutdownEnterWaitStateHook()\n\tselect {\n\tcase <-done:\n\t\tcc.closeConn()\n\t\treturn nil\n\tcase <-ctx.Done():\n\t\tcc.mu.Lock()\n\t\t// Free the goroutine above\n\t\tcancelled = true\n\t\tcc.cond.Broadcast()\n\t\tcc.mu.Unlock()\n\t\treturn ctx.Err()\n\t}\n}\n\nfunc (cc *ClientConn) sendGoAway() error {\n\tcc.mu.Lock()\n\tclosing := cc.closing\n\tcc.closing = true\n\tmaxStreamID := cc.nextStreamID\n\tcc.mu.Unlock()\n\tif closing {\n\t\t// GOAWAY sent already\n\t\treturn nil\n\t}\n\n\tcc.wmu.Lock()\n\tdefer cc.wmu.Unlock()\n\t// Send a graceful shutdown frame to server\n\tif err := cc.fr.WriteGoAway(maxStreamID, ErrCodeNo, nil); err != nil {\n\t\treturn err\n\t}\n\tif err := cc.bw.Flush(); err != nil {\n\t\treturn err\n\t}\n\t// Prevent new requests\n\treturn nil\n}\n\n// closes the client connection immediately. In-flight requests are interrupted.\n// err is sent to streams.\nfunc (cc *ClientConn) closeForError(err error) {\n\tcc.mu.Lock()\n\tcc.closed = true\n\tfor _, cs := range cc.streams {\n\t\tcs.abortStreamLocked(err)\n\t}\n\tcc.cond.Broadcast()\n\tcc.mu.Unlock()\n\tcc.closeConn()\n}\n\n// Close closes the client connection immediately.\n//\n// In-flight requests are interrupted. For a graceful shutdown, use Shutdown instead.\nfunc (cc *ClientConn) Close() error {\n\tcc.closeForError(errClientConnForceClosed)\n\treturn nil\n}\n\n// closes the client connection immediately. In-flight requests are interrupted.\nfunc (cc *ClientConn) closeForLostPing() {\n\terr := errors.New(\"http2: client connection lost\")\n\tif f := cc.t.CountError; f != nil {\n\t\tf(\"conn_close_lost_ping\")\n\t}\n\tcc.closeForError(err)\n}\n\n// errRequestCanceled is a copy of net/http's errRequestCanceled because it's not\n// exported. At least they'll be DeepEqual for h1-vs-h2 comparisons tests.\nvar errRequestCanceled = errors.New(\"net/http: request canceled\")\n\nfunc (cc *ClientConn) responseHeaderTimeout() time.Duration {\n\tif cc.t.t1 != nil {\n\t\treturn cc.t.t1.ResponseHeaderTimeout\n\t}\n\t// No way to do this (yet?) with just an http2.Transport. Probably\n\t// no need. Request.Cancel this is the new way. We only need to support\n\t// this for compatibility with the old http.Transport fields when\n\t// we're doing transparent http2.\n\treturn 0\n}\n\n// actualContentLength returns a sanitized version of\n// req.ContentLength, where 0 actually means zero (not unknown) and -1\n// means unknown.\nfunc actualContentLength(req *http.Request) int64 {\n\tif req.Body == nil || req.Body == http.NoBody {\n\t\treturn 0\n\t}\n\tif req.ContentLength != 0 {\n\t\treturn req.ContentLength\n\t}\n\treturn -1\n}\n\nfunc (cc *ClientConn) decrStreamReservations() {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\tcc.decrStreamReservationsLocked()\n}\n\nfunc (cc *ClientConn) decrStreamReservationsLocked() {\n\tif cc.streamsReserved > 0 {\n\t\tcc.streamsReserved--\n\t}\n}\n\nfunc (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) {\n\treturn cc.roundTrip(req, nil)\n}\n\nfunc (cc *ClientConn) roundTrip(req *http.Request, streamf func(*clientStream)) (*http.Response, error) {\n\tctx := req.Context()\n\tcs := &clientStream{\n\t\tcc:                   cc,\n\t\tctx:                  ctx,\n\t\treqCancel:            req.Cancel,\n\t\tisHead:               req.Method == \"HEAD\",\n\t\treqBody:              req.Body,\n\t\treqBodyContentLength: actualContentLength(req),\n\t\ttrace:                httptrace.ContextClientTrace(ctx),\n\t\tpeerClosed:           make(chan struct{}),\n\t\tabort:                make(chan struct{}),\n\t\trespHeaderRecv:       make(chan struct{}),\n\t\tdonec:                make(chan struct{}),\n\t}\n\n\tcs.requestedGzip = httpcommon.IsRequestGzip(req.Method, req.Header, cc.t.disableCompression())\n\n\tgo cs.doRequest(req, streamf)\n\n\twaitDone := func() error {\n\t\tselect {\n\t\tcase <-cs.donec:\n\t\t\treturn nil\n\t\tcase <-ctx.Done():\n\t\t\treturn ctx.Err()\n\t\tcase <-cs.reqCancel:\n\t\t\treturn errRequestCanceled\n\t\t}\n\t}\n\n\thandleResponseHeaders := func() (*http.Response, error) {\n\t\tres := cs.res\n\t\tif res.StatusCode > 299 {\n\t\t\t// On error or status code 3xx, 4xx, 5xx, etc abort any\n\t\t\t// ongoing write, assuming that the server doesn't care\n\t\t\t// about our request body. If the server replied with 1xx or\n\t\t\t// 2xx, however, then assume the server DOES potentially\n\t\t\t// want our body (e.g. full-duplex streaming:\n\t\t\t// golang.org/issue/13444). If it turns out the server\n\t\t\t// doesn't, they'll RST_STREAM us soon enough. This is a\n\t\t\t// heuristic to avoid adding knobs to Transport. Hopefully\n\t\t\t// we can keep it.\n\t\t\tcs.abortRequestBodyWrite()\n\t\t}\n\t\tres.Request = req\n\t\tres.TLS = cc.tlsState\n\t\tif res.Body == noBody && actualContentLength(req) == 0 {\n\t\t\t// If there isn't a request or response body still being\n\t\t\t// written, then wait for the stream to be closed before\n\t\t\t// RoundTrip returns.\n\t\t\tif err := waitDone(); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn res, nil\n\t}\n\n\tcancelRequest := func(cs *clientStream, err error) error {\n\t\tcs.cc.mu.Lock()\n\t\tbodyClosed := cs.reqBodyClosed\n\t\tcs.cc.mu.Unlock()\n\t\t// Wait for the request body to be closed.\n\t\t//\n\t\t// If nothing closed the body before now, abortStreamLocked\n\t\t// will have started a goroutine to close it.\n\t\t//\n\t\t// Closing the body before returning avoids a race condition\n\t\t// with net/http checking its readTrackingBody to see if the\n\t\t// body was read from or closed. See golang/go#60041.\n\t\t//\n\t\t// The body is closed in a separate goroutine without the\n\t\t// connection mutex held, but dropping the mutex before waiting\n\t\t// will keep us from holding it indefinitely if the body\n\t\t// close is slow for some reason.\n\t\tif bodyClosed != nil {\n\t\t\t<-bodyClosed\n\t\t}\n\t\treturn err\n\t}\n\n\tfor {\n\t\tselect {\n\t\tcase <-cs.respHeaderRecv:\n\t\t\treturn handleResponseHeaders()\n\t\tcase <-cs.abort:\n\t\t\tselect {\n\t\t\tcase <-cs.respHeaderRecv:\n\t\t\t\t// If both cs.respHeaderRecv and cs.abort are signaling,\n\t\t\t\t// pick respHeaderRecv. The server probably wrote the\n\t\t\t\t// response and immediately reset the stream.\n\t\t\t\t// golang.org/issue/49645\n\t\t\t\treturn handleResponseHeaders()\n\t\t\tdefault:\n\t\t\t\twaitDone()\n\t\t\t\treturn nil, cs.abortErr\n\t\t\t}\n\t\tcase <-ctx.Done():\n\t\t\terr := ctx.Err()\n\t\t\tcs.abortStream(err)\n\t\t\treturn nil, cancelRequest(cs, err)\n\t\tcase <-cs.reqCancel:\n\t\t\tcs.abortStream(errRequestCanceled)\n\t\t\treturn nil, cancelRequest(cs, errRequestCanceled)\n\t\t}\n\t}\n}\n\n// doRequest runs for the duration of the request lifetime.\n//\n// It sends the request and performs post-request cleanup (closing Request.Body, etc.).\nfunc (cs *clientStream) doRequest(req *http.Request, streamf func(*clientStream)) {\n\terr := cs.writeRequest(req, streamf)\n\tcs.cleanupWriteRequest(err)\n}\n\nvar errExtendedConnectNotSupported = errors.New(\"net/http: extended connect not supported by peer\")\n\n// writeRequest sends a request.\n//\n// It returns nil after the request is written, the response read,\n// and the request stream is half-closed by the peer.\n//\n// It returns non-nil if the request ends otherwise.\n// If the returned error is StreamError, the error Code may be used in resetting the stream.\nfunc (cs *clientStream) writeRequest(req *http.Request, streamf func(*clientStream)) (err error) {\n\tcc := cs.cc\n\tctx := cs.ctx\n\n\t// wait for setting frames to be received, a server can change this value later,\n\t// but we just wait for the first settings frame\n\tvar isExtendedConnect bool\n\tif req.Method == \"CONNECT\" && req.Header.Get(\":protocol\") != \"\" {\n\t\tisExtendedConnect = true\n\t}\n\n\t// Acquire the new-request lock by writing to reqHeaderMu.\n\t// This lock guards the critical section covering allocating a new stream ID\n\t// (requires mu) and creating the stream (requires wmu).\n\tif cc.reqHeaderMu == nil {\n\t\tpanic(\"RoundTrip on uninitialized ClientConn\") // for tests\n\t}\n\tif isExtendedConnect {\n\t\tselect {\n\t\tcase <-cs.reqCancel:\n\t\t\treturn errRequestCanceled\n\t\tcase <-ctx.Done():\n\t\t\treturn ctx.Err()\n\t\tcase <-cc.seenSettingsChan:\n\t\t\tif !cc.extendedConnectAllowed {\n\t\t\t\treturn errExtendedConnectNotSupported\n\t\t\t}\n\t\t}\n\t}\n\tselect {\n\tcase cc.reqHeaderMu <- struct{}{}:\n\tcase <-cs.reqCancel:\n\t\treturn errRequestCanceled\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\t}\n\n\tcc.mu.Lock()\n\tif cc.idleTimer != nil {\n\t\tcc.idleTimer.Stop()\n\t}\n\tcc.decrStreamReservationsLocked()\n\tif err := cc.awaitOpenSlotForStreamLocked(cs); err != nil {\n\t\tcc.mu.Unlock()\n\t\t<-cc.reqHeaderMu\n\t\treturn err\n\t}\n\tcc.addStreamLocked(cs) // assigns stream ID\n\tif isConnectionCloseRequest(req) {\n\t\tcc.doNotReuse = true\n\t}\n\tcc.mu.Unlock()\n\n\tif streamf != nil {\n\t\tstreamf(cs)\n\t}\n\n\tcontinueTimeout := cc.t.expectContinueTimeout()\n\tif continueTimeout != 0 {\n\t\tif !httpguts.HeaderValuesContainsToken(req.Header[\"Expect\"], \"100-continue\") {\n\t\t\tcontinueTimeout = 0\n\t\t} else {\n\t\t\tcs.on100 = make(chan struct{}, 1)\n\t\t}\n\t}\n\n\t// Past this point (where we send request headers), it is possible for\n\t// RoundTrip to return successfully. Since the RoundTrip contract permits\n\t// the caller to \"mutate or reuse\" the Request after closing the Response's Body,\n\t// we must take care when referencing the Request from here on.\n\terr = cs.encodeAndWriteHeaders(req)\n\t<-cc.reqHeaderMu\n\tif err != nil {\n\t\treturn err\n\t}\n\n\thasBody := cs.reqBodyContentLength != 0\n\tif !hasBody {\n\t\tcs.sentEndStream = true\n\t} else {\n\t\tif continueTimeout != 0 {\n\t\t\ttraceWait100Continue(cs.trace)\n\t\t\ttimer := time.NewTimer(continueTimeout)\n\t\t\tselect {\n\t\t\tcase <-timer.C:\n\t\t\t\terr = nil\n\t\t\tcase <-cs.on100:\n\t\t\t\terr = nil\n\t\t\tcase <-cs.abort:\n\t\t\t\terr = cs.abortErr\n\t\t\tcase <-ctx.Done():\n\t\t\t\terr = ctx.Err()\n\t\t\tcase <-cs.reqCancel:\n\t\t\t\terr = errRequestCanceled\n\t\t\t}\n\t\t\ttimer.Stop()\n\t\t\tif err != nil {\n\t\t\t\ttraceWroteRequest(cs.trace, err)\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tif err = cs.writeRequestBody(req); err != nil {\n\t\t\tif err != errStopReqBodyWrite {\n\t\t\t\ttraceWroteRequest(cs.trace, err)\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else {\n\t\t\tcs.sentEndStream = true\n\t\t}\n\t}\n\n\ttraceWroteRequest(cs.trace, err)\n\n\tvar respHeaderTimer <-chan time.Time\n\tvar respHeaderRecv chan struct{}\n\tif d := cc.responseHeaderTimeout(); d != 0 {\n\t\ttimer := time.NewTimer(d)\n\t\tdefer timer.Stop()\n\t\trespHeaderTimer = timer.C\n\t\trespHeaderRecv = cs.respHeaderRecv\n\t}\n\t// Wait until the peer half-closes its end of the stream,\n\t// or until the request is aborted (via context, error, or otherwise),\n\t// whichever comes first.\n\tfor {\n\t\tselect {\n\t\tcase <-cs.peerClosed:\n\t\t\treturn nil\n\t\tcase <-respHeaderTimer:\n\t\t\treturn errTimeout\n\t\tcase <-respHeaderRecv:\n\t\t\trespHeaderRecv = nil\n\t\t\trespHeaderTimer = nil // keep waiting for END_STREAM\n\t\tcase <-cs.abort:\n\t\t\treturn cs.abortErr\n\t\tcase <-ctx.Done():\n\t\t\treturn ctx.Err()\n\t\tcase <-cs.reqCancel:\n\t\t\treturn errRequestCanceled\n\t\t}\n\t}\n}\n\nfunc (cs *clientStream) encodeAndWriteHeaders(req *http.Request) error {\n\tcc := cs.cc\n\tctx := cs.ctx\n\n\tcc.wmu.Lock()\n\tdefer cc.wmu.Unlock()\n\n\t// If the request was canceled while waiting for cc.mu, just quit.\n\tselect {\n\tcase <-cs.abort:\n\t\treturn cs.abortErr\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\tcase <-cs.reqCancel:\n\t\treturn errRequestCanceled\n\tdefault:\n\t}\n\n\t// Encode headers.\n\t//\n\t// we send: HEADERS{1}, CONTINUATION{0,} + DATA{0,} (DATA is\n\t// sent by writeRequestBody below, along with any Trailers,\n\t// again in form HEADERS{1}, CONTINUATION{0,})\n\tcc.hbuf.Reset()\n\tres, err := encodeRequestHeaders(req, cs.requestedGzip, cc.peerMaxHeaderListSize, func(name, value string) {\n\t\tcc.writeHeader(name, value)\n\t})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"http2: %w\", err)\n\t}\n\thdrs := cc.hbuf.Bytes()\n\n\t// Write the request.\n\tendStream := !res.HasBody && !res.HasTrailers\n\tcs.sentHeaders = true\n\terr = cc.writeHeaders(cs.ID, endStream, int(cc.maxFrameSize), hdrs)\n\ttraceWroteHeaders(cs.trace)\n\treturn err\n}\n\nfunc encodeRequestHeaders(req *http.Request, addGzipHeader bool, peerMaxHeaderListSize uint64, headerf func(name, value string)) (httpcommon.EncodeHeadersResult, error) {\n\treturn httpcommon.EncodeHeaders(req.Context(), httpcommon.EncodeHeadersParam{\n\t\tRequest: httpcommon.Request{\n\t\t\tHeader:              req.Header,\n\t\t\tTrailer:             req.Trailer,\n\t\t\tURL:                 req.URL,\n\t\t\tHost:                req.Host,\n\t\t\tMethod:              req.Method,\n\t\t\tActualContentLength: actualContentLength(req),\n\t\t},\n\t\tAddGzipHeader:         addGzipHeader,\n\t\tPeerMaxHeaderListSize: peerMaxHeaderListSize,\n\t\tDefaultUserAgent:      defaultUserAgent,\n\t}, headerf)\n}\n\n// cleanupWriteRequest performs post-request tasks.\n//\n// If err (the result of writeRequest) is non-nil and the stream is not closed,\n// cleanupWriteRequest will send a reset to the peer.\nfunc (cs *clientStream) cleanupWriteRequest(err error) {\n\tcc := cs.cc\n\n\tif cs.ID == 0 {\n\t\t// We were canceled before creating the stream, so return our reservation.\n\t\tcc.decrStreamReservations()\n\t}\n\n\t// TODO: write h12Compare test showing whether\n\t// Request.Body is closed by the Transport,\n\t// and in multiple cases: server replies <=299 and >299\n\t// while still writing request body\n\tcc.mu.Lock()\n\tmustCloseBody := false\n\tif cs.reqBody != nil && cs.reqBodyClosed == nil {\n\t\tmustCloseBody = true\n\t\tcs.reqBodyClosed = make(chan struct{})\n\t}\n\tbodyClosed := cs.reqBodyClosed\n\tcloseOnIdle := cc.singleUse || cc.doNotReuse || cc.t.disableKeepAlives() || cc.goAway != nil\n\t// Have we read any frames from the connection since sending this request?\n\treadSinceStream := cc.readBeforeStreamID > cs.ID\n\tcc.mu.Unlock()\n\tif mustCloseBody {\n\t\tcs.reqBody.Close()\n\t\tclose(bodyClosed)\n\t}\n\tif bodyClosed != nil {\n\t\t<-bodyClosed\n\t}\n\n\tif err != nil && cs.sentEndStream {\n\t\t// If the connection is closed immediately after the response is read,\n\t\t// we may be aborted before finishing up here. If the stream was closed\n\t\t// cleanly on both sides, there is no error.\n\t\tselect {\n\t\tcase <-cs.peerClosed:\n\t\t\terr = nil\n\t\tdefault:\n\t\t}\n\t}\n\tif err != nil {\n\t\tcs.abortStream(err) // possibly redundant, but harmless\n\t\tif cs.sentHeaders {\n\t\t\tif se, ok := err.(StreamError); ok {\n\t\t\t\tif se.Cause != errFromPeer {\n\t\t\t\t\tcc.writeStreamReset(cs.ID, se.Code, false, err)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We're cancelling an in-flight request.\n\t\t\t\t//\n\t\t\t\t// This could be due to the server becoming unresponsive.\n\t\t\t\t// To avoid sending too many requests on a dead connection,\n\t\t\t\t// if we haven't read any frames from the connection since\n\t\t\t\t// sending this request, we let it continue to consume\n\t\t\t\t// a concurrency slot until we can confirm the server is\n\t\t\t\t// still responding.\n\t\t\t\t// We do this by sending a PING frame along with the RST_STREAM\n\t\t\t\t// (unless a ping is already in flight).\n\t\t\t\t//\n\t\t\t\t// For simplicity, we don't bother tracking the PING payload:\n\t\t\t\t// We reset cc.pendingResets any time we receive a PING ACK.\n\t\t\t\t//\n\t\t\t\t// We skip this if the conn is going to be closed on idle,\n\t\t\t\t// because it's short lived and will probably be closed before\n\t\t\t\t// we get the ping response.\n\t\t\t\tping := false\n\t\t\t\tif !closeOnIdle && !readSinceStream {\n\t\t\t\t\tcc.mu.Lock()\n\t\t\t\t\t// rstStreamPingsBlocked works around a gRPC behavior:\n\t\t\t\t\t// see comment on the field for details.\n\t\t\t\t\tif !cc.rstStreamPingsBlocked {\n\t\t\t\t\t\tif cc.pendingResets == 0 {\n\t\t\t\t\t\t\tping = true\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcc.pendingResets++\n\t\t\t\t\t}\n\t\t\t\t\tcc.mu.Unlock()\n\t\t\t\t}\n\t\t\t\tcc.writeStreamReset(cs.ID, ErrCodeCancel, ping, err)\n\t\t\t}\n\t\t}\n\t\tcs.bufPipe.CloseWithError(err) // no-op if already closed\n\t} else {\n\t\tif cs.sentHeaders && !cs.sentEndStream {\n\t\t\tcc.writeStreamReset(cs.ID, ErrCodeNo, false, nil)\n\t\t}\n\t\tcs.bufPipe.CloseWithError(errRequestCanceled)\n\t}\n\tif cs.ID != 0 {\n\t\tcc.forgetStreamID(cs.ID)\n\t}\n\n\tcc.wmu.Lock()\n\twerr := cc.werr\n\tcc.wmu.Unlock()\n\tif werr != nil {\n\t\tcc.Close()\n\t}\n\n\tclose(cs.donec)\n\tcc.maybeCallStateHook()\n}\n\n// awaitOpenSlotForStreamLocked waits until len(streams) < maxConcurrentStreams.\n// Must hold cc.mu.\nfunc (cc *ClientConn) awaitOpenSlotForStreamLocked(cs *clientStream) error {\n\tfor {\n\t\tif cc.closed && cc.nextStreamID == 1 && cc.streamsReserved == 0 {\n\t\t\t// This is the very first request sent to this connection.\n\t\t\t// Return a fatal error which aborts the retry loop.\n\t\t\treturn errClientConnNotEstablished\n\t\t}\n\t\tcc.lastActive = time.Now()\n\t\tif cc.closed || !cc.canTakeNewRequestLocked() {\n\t\t\treturn errClientConnUnusable\n\t\t}\n\t\tcc.lastIdle = time.Time{}\n\t\tif cc.currentRequestCountLocked() < int(cc.maxConcurrentStreams) {\n\t\t\treturn nil\n\t\t}\n\t\tcc.pendingRequests++\n\t\tcc.cond.Wait()\n\t\tcc.pendingRequests--\n\t\tselect {\n\t\tcase <-cs.abort:\n\t\t\treturn cs.abortErr\n\t\tdefault:\n\t\t}\n\t}\n}\n\n// requires cc.wmu be held\nfunc (cc *ClientConn) writeHeaders(streamID uint32, endStream bool, maxFrameSize int, hdrs []byte) error {\n\tfirst := true // first frame written (HEADERS is first, then CONTINUATION)\n\tfor len(hdrs) > 0 && cc.werr == nil {\n\t\tchunk := hdrs\n\t\tif len(chunk) > maxFrameSize {\n\t\t\tchunk = chunk[:maxFrameSize]\n\t\t}\n\t\thdrs = hdrs[len(chunk):]\n\t\tendHeaders := len(hdrs) == 0\n\t\tif first {\n\t\t\tcc.fr.WriteHeaders(HeadersFrameParam{\n\t\t\t\tStreamID:      streamID,\n\t\t\t\tBlockFragment: chunk,\n\t\t\t\tEndStream:     endStream,\n\t\t\t\tEndHeaders:    endHeaders,\n\t\t\t})\n\t\t\tfirst = false\n\t\t} else {\n\t\t\tcc.fr.WriteContinuation(streamID, endHeaders, chunk)\n\t\t}\n\t}\n\tcc.bw.Flush()\n\treturn cc.werr\n}\n\n// internal error values; they don't escape to callers\nvar (\n\t// abort request body write; don't send cancel\n\terrStopReqBodyWrite = errors.New(\"http2: aborting request body write\")\n\n\t// abort request body write, but send stream reset of cancel.\n\terrStopReqBodyWriteAndCancel = errors.New(\"http2: canceling request\")\n\n\terrReqBodyTooLong = errors.New(\"http2: request body larger than specified content length\")\n)\n\n// frameScratchBufferLen returns the length of a buffer to use for\n// outgoing request bodies to read/write to/from.\n//\n// It returns max(1, min(peer's advertised max frame size,\n// Request.ContentLength+1, 512KB)).\nfunc (cs *clientStream) frameScratchBufferLen(maxFrameSize int) int {\n\tconst max = 512 << 10\n\tn := int64(maxFrameSize)\n\tif n > max {\n\t\tn = max\n\t}\n\tif cl := cs.reqBodyContentLength; cl != -1 && cl+1 < n {\n\t\t// Add an extra byte past the declared content-length to\n\t\t// give the caller's Request.Body io.Reader a chance to\n\t\t// give us more bytes than they declared, so we can catch it\n\t\t// early.\n\t\tn = cl + 1\n\t}\n\tif n < 1 {\n\t\treturn 1\n\t}\n\treturn int(n) // doesn't truncate; max is 512K\n}\n\n// Seven bufPools manage different frame sizes. This helps to avoid scenarios where long-running\n// streaming requests using small frame sizes occupy large buffers initially allocated for prior\n// requests needing big buffers. The size ranges are as follows:\n// {0 KB, 16 KB], {16 KB, 32 KB], {32 KB, 64 KB], {64 KB, 128 KB], {128 KB, 256 KB],\n// {256 KB, 512 KB], {512 KB, infinity}\n// In practice, the maximum scratch buffer size should not exceed 512 KB due to\n// frameScratchBufferLen(maxFrameSize), thus the \"infinity pool\" should never be used.\n// It exists mainly as a safety measure, for potential future increases in max buffer size.\nvar bufPools [7]sync.Pool // of *[]byte\nfunc bufPoolIndex(size int) int {\n\tif size <= 16384 {\n\t\treturn 0\n\t}\n\tsize -= 1\n\tbits := bits.Len(uint(size))\n\tindex := bits - 14\n\tif index >= len(bufPools) {\n\t\treturn len(bufPools) - 1\n\t}\n\treturn index\n}\n\nfunc (cs *clientStream) writeRequestBody(req *http.Request) (err error) {\n\tcc := cs.cc\n\tbody := cs.reqBody\n\tsentEnd := false // whether we sent the final DATA frame w/ END_STREAM\n\n\thasTrailers := req.Trailer != nil\n\tremainLen := cs.reqBodyContentLength\n\thasContentLen := remainLen != -1\n\n\tcc.mu.Lock()\n\tmaxFrameSize := int(cc.maxFrameSize)\n\tcc.mu.Unlock()\n\n\t// Scratch buffer for reading into & writing from.\n\tscratchLen := cs.frameScratchBufferLen(maxFrameSize)\n\tvar buf []byte\n\tindex := bufPoolIndex(scratchLen)\n\tif bp, ok := bufPools[index].Get().(*[]byte); ok && len(*bp) >= scratchLen {\n\t\tdefer bufPools[index].Put(bp)\n\t\tbuf = *bp\n\t} else {\n\t\tbuf = make([]byte, scratchLen)\n\t\tdefer bufPools[index].Put(&buf)\n\t}\n\n\tvar sawEOF bool\n\tfor !sawEOF {\n\t\tn, err := body.Read(buf)\n\t\tif hasContentLen {\n\t\t\tremainLen -= int64(n)\n\t\t\tif remainLen == 0 && err == nil {\n\t\t\t\t// The request body's Content-Length was predeclared and\n\t\t\t\t// we just finished reading it all, but the underlying io.Reader\n\t\t\t\t// returned the final chunk with a nil error (which is one of\n\t\t\t\t// the two valid things a Reader can do at EOF). Because we'd prefer\n\t\t\t\t// to send the END_STREAM bit early, double-check that we're actually\n\t\t\t\t// at EOF. Subsequent reads should return (0, EOF) at this point.\n\t\t\t\t// If either value is different, we return an error in one of two ways below.\n\t\t\t\tvar scratch [1]byte\n\t\t\t\tvar n1 int\n\t\t\t\tn1, err = body.Read(scratch[:])\n\t\t\t\tremainLen -= int64(n1)\n\t\t\t}\n\t\t\tif remainLen < 0 {\n\t\t\t\terr = errReqBodyTooLong\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tif err != nil {\n\t\t\tcc.mu.Lock()\n\t\t\tbodyClosed := cs.reqBodyClosed != nil\n\t\t\tcc.mu.Unlock()\n\t\t\tswitch {\n\t\t\tcase bodyClosed:\n\t\t\t\treturn errStopReqBodyWrite\n\t\t\tcase err == io.EOF:\n\t\t\t\tsawEOF = true\n\t\t\t\terr = nil\n\t\t\tdefault:\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tremain := buf[:n]\n\t\tfor len(remain) > 0 && err == nil {\n\t\t\tvar allowed int32\n\t\t\tallowed, err = cs.awaitFlowControl(len(remain))\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcc.wmu.Lock()\n\t\t\tdata := remain[:allowed]\n\t\t\tremain = remain[allowed:]\n\t\t\tsentEnd = sawEOF && len(remain) == 0 && !hasTrailers\n\t\t\terr = cc.fr.WriteData(cs.ID, sentEnd, data)\n\t\t\tif err == nil {\n\t\t\t\t// TODO(bradfitz): this flush is for latency, not bandwidth.\n\t\t\t\t// Most requests won't need this. Make this opt-in or\n\t\t\t\t// opt-out?  Use some heuristic on the body type? Nagel-like\n\t\t\t\t// timers?  Based on 'n'? Only last chunk of this for loop,\n\t\t\t\t// unless flow control tokens are low? For now, always.\n\t\t\t\t// If we change this, see comment below.\n\t\t\t\terr = cc.bw.Flush()\n\t\t\t}\n\t\t\tcc.wmu.Unlock()\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif sentEnd {\n\t\t// Already sent END_STREAM (which implies we have no\n\t\t// trailers) and flushed, because currently all\n\t\t// WriteData frames above get a flush. So we're done.\n\t\treturn nil\n\t}\n\n\t// Since the RoundTrip contract permits the caller to \"mutate or reuse\"\n\t// a request after the Response's Body is closed, verify that this hasn't\n\t// happened before accessing the trailers.\n\tcc.mu.Lock()\n\ttrailer := req.Trailer\n\terr = cs.abortErr\n\tcc.mu.Unlock()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcc.wmu.Lock()\n\tdefer cc.wmu.Unlock()\n\tvar trls []byte\n\tif len(trailer) > 0 {\n\t\ttrls, err = cc.encodeTrailers(trailer)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Two ways to send END_STREAM: either with trailers, or\n\t// with an empty DATA frame.\n\tif len(trls) > 0 {\n\t\terr = cc.writeHeaders(cs.ID, true, maxFrameSize, trls)\n\t} else {\n\t\terr = cc.fr.WriteData(cs.ID, true, nil)\n\t}\n\tif ferr := cc.bw.Flush(); ferr != nil && err == nil {\n\t\terr = ferr\n\t}\n\treturn err\n}\n\n// awaitFlowControl waits for [1, min(maxBytes, cc.cs.maxFrameSize)] flow\n// control tokens from the server.\n// It returns either the non-zero number of tokens taken or an error\n// if the stream is dead.\nfunc (cs *clientStream) awaitFlowControl(maxBytes int) (taken int32, err error) {\n\tcc := cs.cc\n\tctx := cs.ctx\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\tfor {\n\t\tif cc.closed {\n\t\t\treturn 0, errClientConnClosed\n\t\t}\n\t\tif cs.reqBodyClosed != nil {\n\t\t\treturn 0, errStopReqBodyWrite\n\t\t}\n\t\tselect {\n\t\tcase <-cs.abort:\n\t\t\treturn 0, cs.abortErr\n\t\tcase <-ctx.Done():\n\t\t\treturn 0, ctx.Err()\n\t\tcase <-cs.reqCancel:\n\t\t\treturn 0, errRequestCanceled\n\t\tdefault:\n\t\t}\n\t\tif a := cs.flow.available(); a > 0 {\n\t\t\ttake := a\n\t\t\tif int(take) > maxBytes {\n\n\t\t\t\ttake = int32(maxBytes) // can't truncate int; take is int32\n\t\t\t}\n\t\t\tif take > int32(cc.maxFrameSize) {\n\t\t\t\ttake = int32(cc.maxFrameSize)\n\t\t\t}\n\t\t\tcs.flow.take(take)\n\t\t\treturn take, nil\n\t\t}\n\t\tcc.cond.Wait()\n\t}\n}\n\n// requires cc.wmu be held.\nfunc (cc *ClientConn) encodeTrailers(trailer http.Header) ([]byte, error) {\n\tcc.hbuf.Reset()\n\n\thlSize := uint64(0)\n\tfor k, vv := range trailer {\n\t\tfor _, v := range vv {\n\t\t\thf := hpack.HeaderField{Name: k, Value: v}\n\t\t\thlSize += uint64(hf.Size())\n\t\t}\n\t}\n\tif hlSize > cc.peerMaxHeaderListSize {\n\t\treturn nil, errRequestHeaderListSize\n\t}\n\n\tfor k, vv := range trailer {\n\t\tlowKey, ascii := httpcommon.LowerHeader(k)\n\t\tif !ascii {\n\t\t\t// Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header\n\t\t\t// field names have to be ASCII characters (just as in HTTP/1.x).\n\t\t\tcontinue\n\t\t}\n\t\t// Transfer-Encoding, etc.. have already been filtered at the\n\t\t// start of RoundTrip\n\t\tfor _, v := range vv {\n\t\t\tcc.writeHeader(lowKey, v)\n\t\t}\n\t}\n\treturn cc.hbuf.Bytes(), nil\n}\n\nfunc (cc *ClientConn) writeHeader(name, value string) {\n\tif VerboseLogs {\n\t\tlog.Printf(\"http2: Transport encoding header %q = %q\", name, value)\n\t}\n\tcc.henc.WriteField(hpack.HeaderField{Name: name, Value: value})\n}\n\ntype resAndError struct {\n\t_   incomparable\n\tres *http.Response\n\terr error\n}\n\n// requires cc.mu be held.\nfunc (cc *ClientConn) addStreamLocked(cs *clientStream) {\n\tcs.flow.add(int32(cc.initialWindowSize))\n\tcs.flow.setConnFlow(&cc.flow)\n\tcs.inflow.init(cc.initialStreamRecvWindowSize)\n\tcs.ID = cc.nextStreamID\n\tcc.nextStreamID += 2\n\tcc.streams[cs.ID] = cs\n\tif cs.ID == 0 {\n\t\tpanic(\"assigned stream ID 0\")\n\t}\n}\n\nfunc (cc *ClientConn) forgetStreamID(id uint32) {\n\tcc.mu.Lock()\n\tslen := len(cc.streams)\n\tdelete(cc.streams, id)\n\tif len(cc.streams) != slen-1 {\n\t\tpanic(\"forgetting unknown stream id\")\n\t}\n\tcc.lastActive = time.Now()\n\tif len(cc.streams) == 0 && cc.idleTimer != nil {\n\t\tcc.idleTimer.Reset(cc.idleTimeout)\n\t\tcc.lastIdle = time.Now()\n\t}\n\t// Wake up writeRequestBody via clientStream.awaitFlowControl and\n\t// wake up RoundTrip if there is a pending request.\n\tcc.cond.Broadcast()\n\n\tcloseOnIdle := cc.singleUse || cc.doNotReuse || cc.t.disableKeepAlives() || cc.goAway != nil\n\tif closeOnIdle && cc.streamsReserved == 0 && len(cc.streams) == 0 {\n\t\tif VerboseLogs {\n\t\t\tcc.vlogf(\"http2: Transport closing idle conn %p (forSingleUse=%v, maxStream=%v)\", cc, cc.singleUse, cc.nextStreamID-2)\n\t\t}\n\t\tcc.closed = true\n\t\tdefer cc.closeConn()\n\t}\n\n\tcc.mu.Unlock()\n}\n\n// clientConnReadLoop is the state owned by the clientConn's frame-reading readLoop.\ntype clientConnReadLoop struct {\n\t_  incomparable\n\tcc *ClientConn\n}\n\n// readLoop runs in its own goroutine and reads and dispatches frames.\nfunc (cc *ClientConn) readLoop() {\n\trl := &clientConnReadLoop{cc: cc}\n\tdefer rl.cleanup()\n\tcc.readerErr = rl.run()\n\tif ce, ok := cc.readerErr.(ConnectionError); ok {\n\t\tcc.wmu.Lock()\n\t\tcc.fr.WriteGoAway(0, ErrCode(ce), nil)\n\t\tcc.wmu.Unlock()\n\t}\n}\n\n// GoAwayError is returned by the Transport when the server closes the\n// TCP connection after sending a GOAWAY frame.\ntype GoAwayError struct {\n\tLastStreamID uint32\n\tErrCode      ErrCode\n\tDebugData    string\n}\n\nfunc (e GoAwayError) Error() string {\n\treturn fmt.Sprintf(\"http2: server sent GOAWAY and closed the connection; LastStreamID=%v, ErrCode=%v, debug=%q\",\n\t\te.LastStreamID, e.ErrCode, e.DebugData)\n}\n\nfunc isEOFOrNetReadError(err error) bool {\n\tif err == io.EOF {\n\t\treturn true\n\t}\n\tne, ok := err.(*net.OpError)\n\treturn ok && ne.Op == \"read\"\n}\n\nfunc (rl *clientConnReadLoop) cleanup() {\n\tcc := rl.cc\n\tdefer cc.closeConn()\n\tdefer close(cc.readerDone)\n\n\tif cc.idleTimer != nil {\n\t\tcc.idleTimer.Stop()\n\t}\n\n\t// Close any response bodies if the server closes prematurely.\n\t// TODO: also do this if we've written the headers but not\n\t// gotten a response yet.\n\terr := cc.readerErr\n\tcc.mu.Lock()\n\tif cc.goAway != nil && isEOFOrNetReadError(err) {\n\t\terr = GoAwayError{\n\t\t\tLastStreamID: cc.goAway.LastStreamID,\n\t\t\tErrCode:      cc.goAway.ErrCode,\n\t\t\tDebugData:    cc.goAwayDebug,\n\t\t}\n\t} else if err == io.EOF {\n\t\terr = io.ErrUnexpectedEOF\n\t}\n\tcc.closed = true\n\n\t// If the connection has never been used, and has been open for only a short time,\n\t// leave it in the connection pool for a little while.\n\t//\n\t// This avoids a situation where new connections are constantly created,\n\t// added to the pool, fail, and are removed from the pool, without any error\n\t// being surfaced to the user.\n\tunusedWaitTime := 5 * time.Second\n\tif cc.idleTimeout > 0 && unusedWaitTime > cc.idleTimeout {\n\t\tunusedWaitTime = cc.idleTimeout\n\t}\n\tidleTime := time.Now().Sub(cc.lastActive)\n\tif atomic.LoadUint32(&cc.atomicReused) == 0 && idleTime < unusedWaitTime && !cc.closedOnIdle {\n\t\tcc.idleTimer = time.AfterFunc(unusedWaitTime-idleTime, func() {\n\t\t\tcc.t.connPool().MarkDead(cc)\n\t\t})\n\t} else {\n\t\tcc.mu.Unlock() // avoid any deadlocks in MarkDead\n\t\tcc.t.connPool().MarkDead(cc)\n\t\tcc.mu.Lock()\n\t}\n\n\tfor _, cs := range cc.streams {\n\t\tselect {\n\t\tcase <-cs.peerClosed:\n\t\t\t// The server closed the stream before closing the conn,\n\t\t\t// so no need to interrupt it.\n\t\tdefault:\n\t\t\tcs.abortStreamLocked(err)\n\t\t}\n\t}\n\tcc.cond.Broadcast()\n\tcc.mu.Unlock()\n\n\tif !cc.seenSettings {\n\t\t// If we have a pending request that wants extended CONNECT,\n\t\t// let it continue and fail with the connection error.\n\t\tcc.extendedConnectAllowed = true\n\t\tclose(cc.seenSettingsChan)\n\t}\n}\n\n// countReadFrameError calls Transport.CountError with a string\n// representing err.\nfunc (cc *ClientConn) countReadFrameError(err error) {\n\tf := cc.t.CountError\n\tif f == nil || err == nil {\n\t\treturn\n\t}\n\tif ce, ok := err.(ConnectionError); ok {\n\t\terrCode := ErrCode(ce)\n\t\tf(fmt.Sprintf(\"read_frame_conn_error_%s\", errCode.stringToken()))\n\t\treturn\n\t}\n\tif errors.Is(err, io.EOF) {\n\t\tf(\"read_frame_eof\")\n\t\treturn\n\t}\n\tif errors.Is(err, io.ErrUnexpectedEOF) {\n\t\tf(\"read_frame_unexpected_eof\")\n\t\treturn\n\t}\n\tif errors.Is(err, ErrFrameTooLarge) {\n\t\tf(\"read_frame_too_large\")\n\t\treturn\n\t}\n\tf(\"read_frame_other\")\n}\n\nfunc (rl *clientConnReadLoop) run() error {\n\tcc := rl.cc\n\tgotSettings := false\n\treadIdleTimeout := cc.readIdleTimeout\n\tvar t *time.Timer\n\tif readIdleTimeout != 0 {\n\t\tt = time.AfterFunc(readIdleTimeout, cc.healthCheck)\n\t}\n\tfor {\n\t\tf, err := cc.fr.ReadFrame()\n\t\tif t != nil {\n\t\t\tt.Reset(readIdleTimeout)\n\t\t}\n\t\tif err != nil {\n\t\t\tcc.vlogf(\"http2: Transport readFrame error on conn %p: (%T) %v\", cc, err, err)\n\t\t}\n\t\tif se, ok := err.(StreamError); ok {\n\t\t\tif cs := rl.streamByID(se.StreamID, notHeaderOrDataFrame); cs != nil {\n\t\t\t\tif se.Cause == nil {\n\t\t\t\t\tse.Cause = cc.fr.errDetail\n\t\t\t\t}\n\t\t\t\trl.endStreamError(cs, se)\n\t\t\t}\n\t\t\tcontinue\n\t\t} else if err != nil {\n\t\t\tcc.countReadFrameError(err)\n\t\t\treturn err\n\t\t}\n\t\tif VerboseLogs {\n\t\t\tcc.vlogf(\"http2: Transport received %s\", summarizeFrame(f))\n\t\t}\n\t\tif !gotSettings {\n\t\t\tif _, ok := f.(*SettingsFrame); !ok {\n\t\t\t\tcc.logf(\"protocol error: received %T before a SETTINGS frame\", f)\n\t\t\t\treturn ConnectionError(ErrCodeProtocol)\n\t\t\t}\n\t\t\tgotSettings = true\n\t\t}\n\n\t\tswitch f := f.(type) {\n\t\tcase *MetaHeadersFrame:\n\t\t\terr = rl.processHeaders(f)\n\t\tcase *DataFrame:\n\t\t\terr = rl.processData(f)\n\t\tcase *GoAwayFrame:\n\t\t\terr = rl.processGoAway(f)\n\t\tcase *RSTStreamFrame:\n\t\t\terr = rl.processResetStream(f)\n\t\tcase *SettingsFrame:\n\t\t\terr = rl.processSettings(f)\n\t\tcase *PushPromiseFrame:\n\t\t\terr = rl.processPushPromise(f)\n\t\tcase *WindowUpdateFrame:\n\t\t\terr = rl.processWindowUpdate(f)\n\t\tcase *PingFrame:\n\t\t\terr = rl.processPing(f)\n\t\tdefault:\n\t\t\tcc.logf(\"Transport: unhandled response frame type %T\", f)\n\t\t}\n\t\tif err != nil {\n\t\t\tif VerboseLogs {\n\t\t\t\tcc.vlogf(\"http2: Transport conn %p received error from processing frame %v: %v\", cc, summarizeFrame(f), err)\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t}\n}\n\nfunc (rl *clientConnReadLoop) processHeaders(f *MetaHeadersFrame) error {\n\tcs := rl.streamByID(f.StreamID, headerOrDataFrame)\n\tif cs == nil {\n\t\t// We'd get here if we canceled a request while the\n\t\t// server had its response still in flight. So if this\n\t\t// was just something we canceled, ignore it.\n\t\treturn nil\n\t}\n\tif cs.readClosed {\n\t\trl.endStreamError(cs, StreamError{\n\t\t\tStreamID: f.StreamID,\n\t\t\tCode:     ErrCodeProtocol,\n\t\t\tCause:    errors.New(\"protocol error: headers after END_STREAM\"),\n\t\t})\n\t\treturn nil\n\t}\n\tif !cs.firstByte {\n\t\tif cs.trace != nil {\n\t\t\t// TODO(bradfitz): move first response byte earlier,\n\t\t\t// when we first read the 9 byte header, not waiting\n\t\t\t// until all the HEADERS+CONTINUATION frames have been\n\t\t\t// merged. This works for now.\n\t\t\ttraceFirstResponseByte(cs.trace)\n\t\t}\n\t\tcs.firstByte = true\n\t}\n\tif !cs.pastHeaders {\n\t\tcs.pastHeaders = true\n\t} else {\n\t\treturn rl.processTrailers(cs, f)\n\t}\n\n\tres, err := rl.handleResponse(cs, f)\n\tif err != nil {\n\t\tif _, ok := err.(ConnectionError); ok {\n\t\t\treturn err\n\t\t}\n\t\t// Any other error type is a stream error.\n\t\trl.endStreamError(cs, StreamError{\n\t\t\tStreamID: f.StreamID,\n\t\t\tCode:     ErrCodeProtocol,\n\t\t\tCause:    err,\n\t\t})\n\t\treturn nil // return nil from process* funcs to keep conn alive\n\t}\n\tif res == nil {\n\t\t// (nil, nil) special case. See handleResponse docs.\n\t\treturn nil\n\t}\n\tcs.resTrailer = &res.Trailer\n\tcs.res = res\n\tclose(cs.respHeaderRecv)\n\tif f.StreamEnded() {\n\t\trl.endStream(cs)\n\t}\n\treturn nil\n}\n\n// may return error types nil, or ConnectionError. Any other error value\n// is a StreamError of type ErrCodeProtocol. The returned error in that case\n// is the detail.\n//\n// As a special case, handleResponse may return (nil, nil) to skip the\n// frame (currently only used for 1xx responses).\nfunc (rl *clientConnReadLoop) handleResponse(cs *clientStream, f *MetaHeadersFrame) (*http.Response, error) {\n\tif f.Truncated {\n\t\treturn nil, errResponseHeaderListSize\n\t}\n\n\tstatus := f.PseudoValue(\"status\")\n\tif status == \"\" {\n\t\treturn nil, errors.New(\"malformed response from server: missing status pseudo header\")\n\t}\n\tstatusCode, err := strconv.Atoi(status)\n\tif err != nil {\n\t\treturn nil, errors.New(\"malformed response from server: malformed non-numeric status pseudo header\")\n\t}\n\n\tregularFields := f.RegularFields()\n\tstrs := make([]string, len(regularFields))\n\theader := make(http.Header, len(regularFields))\n\tres := &http.Response{\n\t\tProto:      \"HTTP/2.0\",\n\t\tProtoMajor: 2,\n\t\tHeader:     header,\n\t\tStatusCode: statusCode,\n\t\tStatus:     status + \" \" + http.StatusText(statusCode),\n\t}\n\tfor _, hf := range regularFields {\n\t\tkey := httpcommon.CanonicalHeader(hf.Name)\n\t\tif key == \"Trailer\" {\n\t\t\tt := res.Trailer\n\t\t\tif t == nil {\n\t\t\t\tt = make(http.Header)\n\t\t\t\tres.Trailer = t\n\t\t\t}\n\t\t\tforeachHeaderElement(hf.Value, func(v string) {\n\t\t\t\tt[httpcommon.CanonicalHeader(v)] = nil\n\t\t\t})\n\t\t} else {\n\t\t\tvv := header[key]\n\t\t\tif vv == nil && len(strs) > 0 {\n\t\t\t\t// More than likely this will be a single-element key.\n\t\t\t\t// Most headers aren't multi-valued.\n\t\t\t\t// Set the capacity on strs[0] to 1, so any future append\n\t\t\t\t// won't extend the slice into the other strings.\n\t\t\t\tvv, strs = strs[:1:1], strs[1:]\n\t\t\t\tvv[0] = hf.Value\n\t\t\t\theader[key] = vv\n\t\t\t} else {\n\t\t\t\theader[key] = append(vv, hf.Value)\n\t\t\t}\n\t\t}\n\t}\n\n\tif statusCode >= 100 && statusCode <= 199 {\n\t\tif f.StreamEnded() {\n\t\t\treturn nil, errors.New(\"1xx informational response with END_STREAM flag\")\n\t\t}\n\t\tif fn := cs.get1xxTraceFunc(); fn != nil {\n\t\t\t// If the 1xx response is being delivered to the user,\n\t\t\t// then they're responsible for limiting the number\n\t\t\t// of responses.\n\t\t\tif err := fn(statusCode, textproto.MIMEHeader(header)); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t} else {\n\t\t\t// If the user didn't examine the 1xx response, then we\n\t\t\t// limit the size of all 1xx headers.\n\t\t\t//\n\t\t\t// This differs a bit from the HTTP/1 implementation, which\n\t\t\t// limits the size of all 1xx headers plus the final response.\n\t\t\t// Use the larger limit of MaxHeaderListSize and\n\t\t\t// net/http.Transport.MaxResponseHeaderBytes.\n\t\t\tlimit := int64(cs.cc.t.maxHeaderListSize())\n\t\t\tif t1 := cs.cc.t.t1; t1 != nil && t1.MaxResponseHeaderBytes > limit {\n\t\t\t\tlimit = t1.MaxResponseHeaderBytes\n\t\t\t}\n\t\t\tfor _, h := range f.Fields {\n\t\t\t\tcs.totalHeaderSize += int64(h.Size())\n\t\t\t}\n\t\t\tif cs.totalHeaderSize > limit {\n\t\t\t\tif VerboseLogs {\n\t\t\t\t\tlog.Printf(\"http2: 1xx informational responses too large\")\n\t\t\t\t}\n\t\t\t\treturn nil, errors.New(\"header list too large\")\n\t\t\t}\n\t\t}\n\t\tif statusCode == 100 {\n\t\t\ttraceGot100Continue(cs.trace)\n\t\t\tselect {\n\t\t\tcase cs.on100 <- struct{}{}:\n\t\t\tdefault:\n\t\t\t}\n\t\t}\n\t\tcs.pastHeaders = false // do it all again\n\t\treturn nil, nil\n\t}\n\n\tres.ContentLength = -1\n\tif clens := res.Header[\"Content-Length\"]; len(clens) == 1 {\n\t\tif cl, err := strconv.ParseUint(clens[0], 10, 63); err == nil {\n\t\t\tres.ContentLength = int64(cl)\n\t\t} else {\n\t\t\t// TODO: care? unlike http/1, it won't mess up our framing, so it's\n\t\t\t// more safe smuggling-wise to ignore.\n\t\t}\n\t} else if len(clens) > 1 {\n\t\t// TODO: care? unlike http/1, it won't mess up our framing, so it's\n\t\t// more safe smuggling-wise to ignore.\n\t} else if f.StreamEnded() && !cs.isHead {\n\t\tres.ContentLength = 0\n\t}\n\n\tif cs.isHead {\n\t\tres.Body = noBody\n\t\treturn res, nil\n\t}\n\n\tif f.StreamEnded() {\n\t\tif res.ContentLength > 0 {\n\t\t\tres.Body = missingBody{}\n\t\t} else {\n\t\t\tres.Body = noBody\n\t\t}\n\t\treturn res, nil\n\t}\n\n\tcs.bufPipe.setBuffer(&dataBuffer{expected: res.ContentLength})\n\tcs.bytesRemain = res.ContentLength\n\tres.Body = transportResponseBody{cs}\n\n\tif cs.requestedGzip && asciiEqualFold(res.Header.Get(\"Content-Encoding\"), \"gzip\") {\n\t\tres.Header.Del(\"Content-Encoding\")\n\t\tres.Header.Del(\"Content-Length\")\n\t\tres.ContentLength = -1\n\t\tres.Body = &gzipReader{body: res.Body}\n\t\tres.Uncompressed = true\n\t}\n\treturn res, nil\n}\n\nfunc (rl *clientConnReadLoop) processTrailers(cs *clientStream, f *MetaHeadersFrame) error {\n\tif cs.pastTrailers {\n\t\t// Too many HEADERS frames for this stream.\n\t\treturn ConnectionError(ErrCodeProtocol)\n\t}\n\tcs.pastTrailers = true\n\tif !f.StreamEnded() {\n\t\t// We expect that any headers for trailers also\n\t\t// has END_STREAM.\n\t\treturn ConnectionError(ErrCodeProtocol)\n\t}\n\tif len(f.PseudoFields()) > 0 {\n\t\t// No pseudo header fields are defined for trailers.\n\t\t// TODO: ConnectionError might be overly harsh? Check.\n\t\treturn ConnectionError(ErrCodeProtocol)\n\t}\n\n\ttrailer := make(http.Header)\n\tfor _, hf := range f.RegularFields() {\n\t\tkey := httpcommon.CanonicalHeader(hf.Name)\n\t\ttrailer[key] = append(trailer[key], hf.Value)\n\t}\n\tcs.trailer = trailer\n\n\trl.endStream(cs)\n\treturn nil\n}\n\n// transportResponseBody is the concrete type of Transport.RoundTrip's\n// Response.Body. It is an io.ReadCloser.\ntype transportResponseBody struct {\n\tcs *clientStream\n}\n\nfunc (b transportResponseBody) Read(p []byte) (n int, err error) {\n\tcs := b.cs\n\tcc := cs.cc\n\n\tif cs.readErr != nil {\n\t\treturn 0, cs.readErr\n\t}\n\tn, err = b.cs.bufPipe.Read(p)\n\tif cs.bytesRemain != -1 {\n\t\tif int64(n) > cs.bytesRemain {\n\t\t\tn = int(cs.bytesRemain)\n\t\t\tif err == nil {\n\t\t\t\terr = errors.New(\"net/http: server replied with more than declared Content-Length; truncated\")\n\t\t\t\tcs.abortStream(err)\n\t\t\t}\n\t\t\tcs.readErr = err\n\t\t\treturn int(cs.bytesRemain), err\n\t\t}\n\t\tcs.bytesRemain -= int64(n)\n\t\tif err == io.EOF && cs.bytesRemain > 0 {\n\t\t\terr = io.ErrUnexpectedEOF\n\t\t\tcs.readErr = err\n\t\t\treturn n, err\n\t\t}\n\t}\n\tif n == 0 {\n\t\t// No flow control tokens to send back.\n\t\treturn\n\t}\n\n\tcc.mu.Lock()\n\tconnAdd := cc.inflow.add(n)\n\tvar streamAdd int32\n\tif err == nil { // No need to refresh if the stream is over or failed.\n\t\tstreamAdd = cs.inflow.add(n)\n\t}\n\tcc.mu.Unlock()\n\n\tif connAdd != 0 || streamAdd != 0 {\n\t\tcc.wmu.Lock()\n\t\tdefer cc.wmu.Unlock()\n\t\tif connAdd != 0 {\n\t\t\tcc.fr.WriteWindowUpdate(0, mustUint31(connAdd))\n\t\t}\n\t\tif streamAdd != 0 {\n\t\t\tcc.fr.WriteWindowUpdate(cs.ID, mustUint31(streamAdd))\n\t\t}\n\t\tcc.bw.Flush()\n\t}\n\treturn\n}\n\nvar errClosedResponseBody = errors.New(\"http2: response body closed\")\n\nfunc (b transportResponseBody) Close() error {\n\tcs := b.cs\n\tcc := cs.cc\n\n\tcs.bufPipe.BreakWithError(errClosedResponseBody)\n\tcs.abortStream(errClosedResponseBody)\n\n\tunread := cs.bufPipe.Len()\n\tif unread > 0 {\n\t\tcc.mu.Lock()\n\t\t// Return connection-level flow control.\n\t\tconnAdd := cc.inflow.add(unread)\n\t\tcc.mu.Unlock()\n\n\t\t// TODO(dneil): Acquiring this mutex can block indefinitely.\n\t\t// Move flow control return to a goroutine?\n\t\tcc.wmu.Lock()\n\t\t// Return connection-level flow control.\n\t\tif connAdd > 0 {\n\t\t\tcc.fr.WriteWindowUpdate(0, uint32(connAdd))\n\t\t}\n\t\tcc.bw.Flush()\n\t\tcc.wmu.Unlock()\n\t}\n\n\tselect {\n\tcase <-cs.donec:\n\tcase <-cs.ctx.Done():\n\t\t// See golang/go#49366: The net/http package can cancel the\n\t\t// request context after the response body is fully read.\n\t\t// Don't treat this as an error.\n\t\treturn nil\n\tcase <-cs.reqCancel:\n\t\treturn errRequestCanceled\n\t}\n\treturn nil\n}\n\nfunc (rl *clientConnReadLoop) processData(f *DataFrame) error {\n\tcc := rl.cc\n\tcs := rl.streamByID(f.StreamID, headerOrDataFrame)\n\tdata := f.Data()\n\tif cs == nil {\n\t\tcc.mu.Lock()\n\t\tneverSent := cc.nextStreamID\n\t\tcc.mu.Unlock()\n\t\tif f.StreamID >= neverSent {\n\t\t\t// We never asked for this.\n\t\t\tcc.logf(\"http2: Transport received unsolicited DATA frame; closing connection\")\n\t\t\treturn ConnectionError(ErrCodeProtocol)\n\t\t}\n\t\t// We probably did ask for this, but canceled. Just ignore it.\n\t\t// TODO: be stricter here? only silently ignore things which\n\t\t// we canceled, but not things which were closed normally\n\t\t// by the peer? Tough without accumulating too much state.\n\n\t\t// But at least return their flow control:\n\t\tif f.Length > 0 {\n\t\t\tcc.mu.Lock()\n\t\t\tok := cc.inflow.take(f.Length)\n\t\t\tconnAdd := cc.inflow.add(int(f.Length))\n\t\t\tcc.mu.Unlock()\n\t\t\tif !ok {\n\t\t\t\treturn ConnectionError(ErrCodeFlowControl)\n\t\t\t}\n\t\t\tif connAdd > 0 {\n\t\t\t\tcc.wmu.Lock()\n\t\t\t\tcc.fr.WriteWindowUpdate(0, uint32(connAdd))\n\t\t\t\tcc.bw.Flush()\n\t\t\t\tcc.wmu.Unlock()\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\tif cs.readClosed {\n\t\tcc.logf(\"protocol error: received DATA after END_STREAM\")\n\t\trl.endStreamError(cs, StreamError{\n\t\t\tStreamID: f.StreamID,\n\t\t\tCode:     ErrCodeProtocol,\n\t\t})\n\t\treturn nil\n\t}\n\tif !cs.pastHeaders {\n\t\tcc.logf(\"protocol error: received DATA before a HEADERS frame\")\n\t\trl.endStreamError(cs, StreamError{\n\t\t\tStreamID: f.StreamID,\n\t\t\tCode:     ErrCodeProtocol,\n\t\t})\n\t\treturn nil\n\t}\n\tif f.Length > 0 {\n\t\tif cs.isHead && len(data) > 0 {\n\t\t\tcc.logf(\"protocol error: received DATA on a HEAD request\")\n\t\t\trl.endStreamError(cs, StreamError{\n\t\t\t\tStreamID: f.StreamID,\n\t\t\t\tCode:     ErrCodeProtocol,\n\t\t\t})\n\t\t\treturn nil\n\t\t}\n\t\t// Check connection-level flow control.\n\t\tcc.mu.Lock()\n\t\tif !takeInflows(&cc.inflow, &cs.inflow, f.Length) {\n\t\t\tcc.mu.Unlock()\n\t\t\treturn ConnectionError(ErrCodeFlowControl)\n\t\t}\n\t\t// Return any padded flow control now, since we won't\n\t\t// refund it later on body reads.\n\t\tvar refund int\n\t\tif pad := int(f.Length) - len(data); pad > 0 {\n\t\t\trefund += pad\n\t\t}\n\n\t\tdidReset := false\n\t\tvar err error\n\t\tif len(data) > 0 {\n\t\t\tif _, err = cs.bufPipe.Write(data); err != nil {\n\t\t\t\t// Return len(data) now if the stream is already closed,\n\t\t\t\t// since data will never be read.\n\t\t\t\tdidReset = true\n\t\t\t\trefund += len(data)\n\t\t\t}\n\t\t}\n\n\t\tsendConn := cc.inflow.add(refund)\n\t\tvar sendStream int32\n\t\tif !didReset {\n\t\t\tsendStream = cs.inflow.add(refund)\n\t\t}\n\t\tcc.mu.Unlock()\n\n\t\tif sendConn > 0 || sendStream > 0 {\n\t\t\tcc.wmu.Lock()\n\t\t\tif sendConn > 0 {\n\t\t\t\tcc.fr.WriteWindowUpdate(0, uint32(sendConn))\n\t\t\t}\n\t\t\tif sendStream > 0 {\n\t\t\t\tcc.fr.WriteWindowUpdate(cs.ID, uint32(sendStream))\n\t\t\t}\n\t\t\tcc.bw.Flush()\n\t\t\tcc.wmu.Unlock()\n\t\t}\n\n\t\tif err != nil {\n\t\t\trl.endStreamError(cs, err)\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tif f.StreamEnded() {\n\t\trl.endStream(cs)\n\t}\n\treturn nil\n}\n\nfunc (rl *clientConnReadLoop) endStream(cs *clientStream) {\n\t// TODO: check that any declared content-length matches, like\n\t// server.go's (*stream).endStream method.\n\tif !cs.readClosed {\n\t\tcs.readClosed = true\n\t\t// Close cs.bufPipe and cs.peerClosed with cc.mu held to avoid a\n\t\t// race condition: The caller can read io.EOF from Response.Body\n\t\t// and close the body before we close cs.peerClosed, causing\n\t\t// cleanupWriteRequest to send a RST_STREAM.\n\t\trl.cc.mu.Lock()\n\t\tdefer rl.cc.mu.Unlock()\n\t\tcs.bufPipe.closeWithErrorAndCode(io.EOF, cs.copyTrailers)\n\t\tclose(cs.peerClosed)\n\t}\n}\n\nfunc (rl *clientConnReadLoop) endStreamError(cs *clientStream, err error) {\n\tcs.readAborted = true\n\tcs.abortStream(err)\n}\n\nfunc (rl *clientConnReadLoop) endStreamErrorLocked(cs *clientStream, err error) {\n\tcs.readAborted = true\n\tcs.abortStreamLocked(err)\n}\n\n// Constants passed to streamByID for documentation purposes.\nconst (\n\theaderOrDataFrame    = true\n\tnotHeaderOrDataFrame = false\n)\n\n// streamByID returns the stream with the given id, or nil if no stream has that id.\n// If headerOrData is true, it clears rst.StreamPingsBlocked.\nfunc (rl *clientConnReadLoop) streamByID(id uint32, headerOrData bool) *clientStream {\n\trl.cc.mu.Lock()\n\tdefer rl.cc.mu.Unlock()\n\tif headerOrData {\n\t\t// Work around an unfortunate gRPC behavior.\n\t\t// See comment on ClientConn.rstStreamPingsBlocked for details.\n\t\trl.cc.rstStreamPingsBlocked = false\n\t}\n\trl.cc.readBeforeStreamID = rl.cc.nextStreamID\n\tcs := rl.cc.streams[id]\n\tif cs != nil && !cs.readAborted {\n\t\treturn cs\n\t}\n\treturn nil\n}\n\nfunc (cs *clientStream) copyTrailers() {\n\tfor k, vv := range cs.trailer {\n\t\tt := cs.resTrailer\n\t\tif *t == nil {\n\t\t\t*t = make(http.Header)\n\t\t}\n\t\t(*t)[k] = vv\n\t}\n}\n\nfunc (rl *clientConnReadLoop) processGoAway(f *GoAwayFrame) error {\n\tcc := rl.cc\n\tcc.t.connPool().MarkDead(cc)\n\tif f.ErrCode != 0 {\n\t\t// TODO: deal with GOAWAY more. particularly the error code\n\t\tcc.vlogf(\"transport got GOAWAY with error code = %v\", f.ErrCode)\n\t\tif fn := cc.t.CountError; fn != nil {\n\t\t\tfn(\"recv_goaway_\" + f.ErrCode.stringToken())\n\t\t}\n\t}\n\tcc.setGoAway(f)\n\treturn nil\n}\n\nfunc (rl *clientConnReadLoop) processSettings(f *SettingsFrame) error {\n\tcc := rl.cc\n\t// Locking both mu and wmu here allows frame encoding to read settings with only wmu held.\n\t// Acquiring wmu when f.IsAck() is unnecessary, but convenient and mostly harmless.\n\tcc.wmu.Lock()\n\tdefer cc.wmu.Unlock()\n\n\tif err := rl.processSettingsNoWrite(f); err != nil {\n\t\treturn err\n\t}\n\tif !f.IsAck() {\n\t\tcc.fr.WriteSettingsAck()\n\t\tcc.bw.Flush()\n\t}\n\treturn nil\n}\n\nfunc (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error {\n\tcc := rl.cc\n\tdefer cc.maybeCallStateHook()\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\n\tif f.IsAck() {\n\t\tif cc.wantSettingsAck {\n\t\t\tcc.wantSettingsAck = false\n\t\t\treturn nil\n\t\t}\n\t\treturn ConnectionError(ErrCodeProtocol)\n\t}\n\n\tvar seenMaxConcurrentStreams bool\n\terr := f.ForeachSetting(func(s Setting) error {\n\t\tswitch s.ID {\n\t\tcase SettingMaxFrameSize:\n\t\t\tcc.maxFrameSize = s.Val\n\t\tcase SettingMaxConcurrentStreams:\n\t\t\tcc.maxConcurrentStreams = s.Val\n\t\t\tseenMaxConcurrentStreams = true\n\t\tcase SettingMaxHeaderListSize:\n\t\t\tcc.peerMaxHeaderListSize = uint64(s.Val)\n\t\tcase SettingInitialWindowSize:\n\t\t\t// Values above the maximum flow-control\n\t\t\t// window size of 2^31-1 MUST be treated as a\n\t\t\t// connection error (Section 5.4.1) of type\n\t\t\t// FLOW_CONTROL_ERROR.\n\t\t\tif s.Val > math.MaxInt32 {\n\t\t\t\treturn ConnectionError(ErrCodeFlowControl)\n\t\t\t}\n\n\t\t\t// Adjust flow control of currently-open\n\t\t\t// frames by the difference of the old initial\n\t\t\t// window size and this one.\n\t\t\tdelta := int32(s.Val) - int32(cc.initialWindowSize)\n\t\t\tfor _, cs := range cc.streams {\n\t\t\t\tcs.flow.add(delta)\n\t\t\t}\n\t\t\tcc.cond.Broadcast()\n\n\t\t\tcc.initialWindowSize = s.Val\n\t\tcase SettingHeaderTableSize:\n\t\t\tcc.henc.SetMaxDynamicTableSize(s.Val)\n\t\t\tcc.peerMaxHeaderTableSize = s.Val\n\t\tcase SettingEnableConnectProtocol:\n\t\t\tif err := s.Valid(); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// If the peer wants to send us SETTINGS_ENABLE_CONNECT_PROTOCOL,\n\t\t\t// we require that it do so in the first SETTINGS frame.\n\t\t\t//\n\t\t\t// When we attempt to use extended CONNECT, we wait for the first\n\t\t\t// SETTINGS frame to see if the server supports it. If we let the\n\t\t\t// server enable the feature with a later SETTINGS frame, then\n\t\t\t// users will see inconsistent results depending on whether we've\n\t\t\t// seen that frame or not.\n\t\t\tif !cc.seenSettings {\n\t\t\t\tcc.extendedConnectAllowed = s.Val == 1\n\t\t\t}\n\t\tdefault:\n\t\t\tcc.vlogf(\"Unhandled Setting: %v\", s)\n\t\t}\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !cc.seenSettings {\n\t\tif !seenMaxConcurrentStreams {\n\t\t\t// This was the servers initial SETTINGS frame and it\n\t\t\t// didn't contain a MAX_CONCURRENT_STREAMS field so\n\t\t\t// increase the number of concurrent streams this\n\t\t\t// connection can establish to our default.\n\t\t\tcc.maxConcurrentStreams = defaultMaxConcurrentStreams\n\t\t}\n\t\tclose(cc.seenSettingsChan)\n\t\tcc.seenSettings = true\n\t}\n\n\treturn nil\n}\n\nfunc (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error {\n\tcc := rl.cc\n\tcs := rl.streamByID(f.StreamID, notHeaderOrDataFrame)\n\tif f.StreamID != 0 && cs == nil {\n\t\treturn nil\n\t}\n\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\n\tfl := &cc.flow\n\tif cs != nil {\n\t\tfl = &cs.flow\n\t}\n\tif !fl.add(int32(f.Increment)) {\n\t\t// For stream, the sender sends RST_STREAM with an error code of FLOW_CONTROL_ERROR\n\t\tif cs != nil {\n\t\t\trl.endStreamErrorLocked(cs, StreamError{\n\t\t\t\tStreamID: f.StreamID,\n\t\t\t\tCode:     ErrCodeFlowControl,\n\t\t\t})\n\t\t\treturn nil\n\t\t}\n\n\t\treturn ConnectionError(ErrCodeFlowControl)\n\t}\n\tcc.cond.Broadcast()\n\treturn nil\n}\n\nfunc (rl *clientConnReadLoop) processResetStream(f *RSTStreamFrame) error {\n\tcs := rl.streamByID(f.StreamID, notHeaderOrDataFrame)\n\tif cs == nil {\n\t\t// TODO: return error if server tries to RST_STREAM an idle stream\n\t\treturn nil\n\t}\n\tserr := streamError(cs.ID, f.ErrCode)\n\tserr.Cause = errFromPeer\n\tif f.ErrCode == ErrCodeProtocol {\n\t\trl.cc.SetDoNotReuse()\n\t}\n\tif fn := cs.cc.t.CountError; fn != nil {\n\t\tfn(\"recv_rststream_\" + f.ErrCode.stringToken())\n\t}\n\tcs.abortStream(serr)\n\n\tcs.bufPipe.CloseWithError(serr)\n\treturn nil\n}\n\n// Ping sends a PING frame to the server and waits for the ack.\nfunc (cc *ClientConn) Ping(ctx context.Context) error {\n\tc := make(chan struct{})\n\t// Generate a random payload\n\tvar p [8]byte\n\tfor {\n\t\tif _, err := rand.Read(p[:]); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcc.mu.Lock()\n\t\t// check for dup before insert\n\t\tif _, found := cc.pings[p]; !found {\n\t\t\tcc.pings[p] = c\n\t\t\tcc.mu.Unlock()\n\t\t\tbreak\n\t\t}\n\t\tcc.mu.Unlock()\n\t}\n\tvar pingError error\n\terrc := make(chan struct{})\n\tgo func() {\n\t\tcc.wmu.Lock()\n\t\tdefer cc.wmu.Unlock()\n\t\tif pingError = cc.fr.WritePing(false, p); pingError != nil {\n\t\t\tclose(errc)\n\t\t\treturn\n\t\t}\n\t\tif pingError = cc.bw.Flush(); pingError != nil {\n\t\t\tclose(errc)\n\t\t\treturn\n\t\t}\n\t}()\n\tselect {\n\tcase <-c:\n\t\treturn nil\n\tcase <-errc:\n\t\treturn pingError\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\tcase <-cc.readerDone:\n\t\t// connection closed\n\t\treturn cc.readerErr\n\t}\n}\n\nfunc (rl *clientConnReadLoop) processPing(f *PingFrame) error {\n\tif f.IsAck() {\n\t\tcc := rl.cc\n\t\tdefer cc.maybeCallStateHook()\n\t\tcc.mu.Lock()\n\t\tdefer cc.mu.Unlock()\n\t\t// If ack, notify listener if any\n\t\tif c, ok := cc.pings[f.Data]; ok {\n\t\t\tclose(c)\n\t\t\tdelete(cc.pings, f.Data)\n\t\t}\n\t\tif cc.pendingResets > 0 {\n\t\t\t// See clientStream.cleanupWriteRequest.\n\t\t\tcc.pendingResets = 0\n\t\t\tcc.rstStreamPingsBlocked = true\n\t\t\tcc.cond.Broadcast()\n\t\t}\n\t\treturn nil\n\t}\n\tcc := rl.cc\n\tcc.wmu.Lock()\n\tdefer cc.wmu.Unlock()\n\tif err := cc.fr.WritePing(true, f.Data); err != nil {\n\t\treturn err\n\t}\n\treturn cc.bw.Flush()\n}\n\nfunc (rl *clientConnReadLoop) processPushPromise(f *PushPromiseFrame) error {\n\t// We told the peer we don't want them.\n\t// Spec says:\n\t// \"PUSH_PROMISE MUST NOT be sent if the SETTINGS_ENABLE_PUSH\n\t// setting of the peer endpoint is set to 0. An endpoint that\n\t// has set this setting and has received acknowledgement MUST\n\t// treat the receipt of a PUSH_PROMISE frame as a connection\n\t// error (Section 5.4.1) of type PROTOCOL_ERROR.\"\n\treturn ConnectionError(ErrCodeProtocol)\n}\n\n// writeStreamReset sends a RST_STREAM frame.\n// When ping is true, it also sends a PING frame with a random payload.\nfunc (cc *ClientConn) writeStreamReset(streamID uint32, code ErrCode, ping bool, err error) {\n\t// TODO: map err to more interesting error codes, once the\n\t// HTTP community comes up with some. But currently for\n\t// RST_STREAM there's no equivalent to GOAWAY frame's debug\n\t// data, and the error codes are all pretty vague (\"cancel\").\n\tcc.wmu.Lock()\n\tcc.fr.WriteRSTStream(streamID, code)\n\tif ping {\n\t\tvar payload [8]byte\n\t\trand.Read(payload[:])\n\t\tcc.fr.WritePing(false, payload)\n\t}\n\tcc.bw.Flush()\n\tcc.wmu.Unlock()\n}\n\nvar (\n\terrResponseHeaderListSize = errors.New(\"http2: response header list larger than advertised limit\")\n\terrRequestHeaderListSize  = httpcommon.ErrRequestHeaderListSize\n)\n\nfunc (cc *ClientConn) logf(format string, args ...interface{}) {\n\tcc.t.logf(format, args...)\n}\n\nfunc (cc *ClientConn) vlogf(format string, args ...interface{}) {\n\tcc.t.vlogf(format, args...)\n}\n\nfunc (t *Transport) vlogf(format string, args ...interface{}) {\n\tif VerboseLogs {\n\t\tt.logf(format, args...)\n\t}\n}\n\nfunc (t *Transport) logf(format string, args ...interface{}) {\n\tlog.Printf(format, args...)\n}\n\nvar noBody io.ReadCloser = noBodyReader{}\n\ntype noBodyReader struct{}\n\nfunc (noBodyReader) Close() error             { return nil }\nfunc (noBodyReader) Read([]byte) (int, error) { return 0, io.EOF }\n\ntype missingBody struct{}\n\nfunc (missingBody) Close() error             { return nil }\nfunc (missingBody) Read([]byte) (int, error) { return 0, io.ErrUnexpectedEOF }\n\nfunc strSliceContains(ss []string, s string) bool {\n\tfor _, v := range ss {\n\t\tif v == s {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\ntype erringRoundTripper struct{ err error }\n\nfunc (rt erringRoundTripper) RoundTripErr() error                             { return rt.err }\nfunc (rt erringRoundTripper) RoundTrip(*http.Request) (*http.Response, error) { return nil, rt.err }\n\nvar errConcurrentReadOnResBody = errors.New(\"http2: concurrent read on response body\")\n\n// gzipReader wraps a response body so it can lazily\n// get gzip.Reader from the pool on the first call to Read.\n// After Close is called it puts gzip.Reader to the pool immediately\n// if there is no Read in progress or later when Read completes.\ntype gzipReader struct {\n\t_    incomparable\n\tbody io.ReadCloser // underlying Response.Body\n\tmu   sync.Mutex    // guards zr and zerr\n\tzr   *gzip.Reader  // stores gzip reader from the pool between reads\n\tzerr error         // sticky gzip reader init error or sentinel value to detect concurrent read and read after close\n}\n\ntype eofReader struct{}\n\nfunc (eofReader) Read([]byte) (int, error) { return 0, io.EOF }\nfunc (eofReader) ReadByte() (byte, error)  { return 0, io.EOF }\n\nvar gzipPool = sync.Pool{New: func() any { return new(gzip.Reader) }}\n\n// gzipPoolGet gets a gzip.Reader from the pool and resets it to read from r.\nfunc gzipPoolGet(r io.Reader) (*gzip.Reader, error) {\n\tzr := gzipPool.Get().(*gzip.Reader)\n\tif err := zr.Reset(r); err != nil {\n\t\tgzipPoolPut(zr)\n\t\treturn nil, err\n\t}\n\treturn zr, nil\n}\n\n// gzipPoolPut puts a gzip.Reader back into the pool.\nfunc gzipPoolPut(zr *gzip.Reader) {\n\t// Reset will allocate bufio.Reader if we pass it anything\n\t// other than a flate.Reader, so ensure that it's getting one.\n\tvar r flate.Reader = eofReader{}\n\tzr.Reset(r)\n\tgzipPool.Put(zr)\n}\n\n// acquire returns a gzip.Reader for reading response body.\n// The reader must be released after use.\nfunc (gz *gzipReader) acquire() (*gzip.Reader, error) {\n\tgz.mu.Lock()\n\tdefer gz.mu.Unlock()\n\tif gz.zerr != nil {\n\t\treturn nil, gz.zerr\n\t}\n\tif gz.zr == nil {\n\t\tgz.zr, gz.zerr = gzipPoolGet(gz.body)\n\t\tif gz.zerr != nil {\n\t\t\treturn nil, gz.zerr\n\t\t}\n\t}\n\tret := gz.zr\n\tgz.zr, gz.zerr = nil, errConcurrentReadOnResBody\n\treturn ret, nil\n}\n\n// release returns the gzip.Reader to the pool if Close was called during Read.\nfunc (gz *gzipReader) release(zr *gzip.Reader) {\n\tgz.mu.Lock()\n\tdefer gz.mu.Unlock()\n\tif gz.zerr == errConcurrentReadOnResBody {\n\t\tgz.zr, gz.zerr = zr, nil\n\t} else { // fs.ErrClosed\n\t\tgzipPoolPut(zr)\n\t}\n}\n\n// close returns the gzip.Reader to the pool immediately or\n// signals release to do so after Read completes.\nfunc (gz *gzipReader) close() {\n\tgz.mu.Lock()\n\tdefer gz.mu.Unlock()\n\tif gz.zerr == nil && gz.zr != nil {\n\t\tgzipPoolPut(gz.zr)\n\t\tgz.zr = nil\n\t}\n\tgz.zerr = fs.ErrClosed\n}\n\nfunc (gz *gzipReader) Read(p []byte) (n int, err error) {\n\tzr, err := gz.acquire()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdefer gz.release(zr)\n\n\treturn zr.Read(p)\n}\n\nfunc (gz *gzipReader) Close() error {\n\tgz.close()\n\n\treturn gz.body.Close()\n}\n\ntype errorReader struct{ err error }\n\nfunc (r errorReader) Read(p []byte) (int, error) { return 0, r.err }\n\n// isConnectionCloseRequest reports whether req should use its own\n// connection for a single request and then close the connection.\nfunc isConnectionCloseRequest(req *http.Request) bool {\n\treturn req.Close || httpguts.HeaderValuesContainsToken(req.Header[\"Connection\"], \"close\")\n}\n\n// registerHTTPSProtocol calls Transport.RegisterProtocol but\n// converting panics into errors.\nfunc registerHTTPSProtocol(t *http.Transport, rt noDialH2RoundTripper) (err error) {\n\tdefer func() {\n\t\tif e := recover(); e != nil {\n\t\t\terr = fmt.Errorf(\"%v\", e)\n\t\t}\n\t}()\n\tt.RegisterProtocol(\"https\", rt)\n\treturn nil\n}\n\n// noDialH2RoundTripper is a RoundTripper which only tries to complete the request\n// if there's already a cached connection to the host.\n// (The field is exported so it can be accessed via reflect from net/http; tested\n// by TestNoDialH2RoundTripperType)\n//\n// A noDialH2RoundTripper is registered with http1.Transport.RegisterProtocol,\n// and the http1.Transport can use type assertions to call non-RoundTrip methods on it.\n// This lets us expose, for example, NewClientConn to net/http.\ntype noDialH2RoundTripper struct{ *Transport }\n\nfunc (rt noDialH2RoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {\n\tres, err := rt.Transport.RoundTrip(req)\n\tif isNoCachedConnError(err) {\n\t\treturn nil, http.ErrSkipAltProtocol\n\t}\n\treturn res, err\n}\n\nfunc (rt noDialH2RoundTripper) NewClientConn(conn net.Conn, internalStateHook func()) (http.RoundTripper, error) {\n\ttr := rt.Transport\n\tcc, err := tr.newClientConn(conn, tr.disableKeepAlives(), internalStateHook)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// RoundTrip should block when the conn is at its concurrency limit,\n\t// not return an error. Setting strictMaxConcurrentStreams enables this.\n\tcc.strictMaxConcurrentStreams = true\n\n\treturn netHTTPClientConn{cc}, nil\n}\n\n// netHTTPClientConn wraps ClientConn and implements the interface net/http expects from\n// the RoundTripper returned by NewClientConn.\ntype netHTTPClientConn struct {\n\tcc *ClientConn\n}\n\nfunc (cc netHTTPClientConn) RoundTrip(req *http.Request) (*http.Response, error) {\n\treturn cc.cc.RoundTrip(req)\n}\n\nfunc (cc netHTTPClientConn) Close() error {\n\treturn cc.cc.Close()\n}\n\nfunc (cc netHTTPClientConn) Err() error {\n\tcc.cc.mu.Lock()\n\tdefer cc.cc.mu.Unlock()\n\tif cc.cc.closed {\n\t\treturn errors.New(\"connection closed\")\n\t}\n\treturn nil\n}\n\nfunc (cc netHTTPClientConn) Reserve() error {\n\tdefer cc.cc.maybeCallStateHook()\n\tcc.cc.mu.Lock()\n\tdefer cc.cc.mu.Unlock()\n\tif !cc.cc.canReserveLocked() {\n\t\treturn errors.New(\"connection is unavailable\")\n\t}\n\tcc.cc.streamsReserved++\n\treturn nil\n}\n\nfunc (cc netHTTPClientConn) Release() {\n\tdefer cc.cc.maybeCallStateHook()\n\tcc.cc.mu.Lock()\n\tdefer cc.cc.mu.Unlock()\n\t// We don't complain if streamsReserved is 0.\n\t//\n\t// This is consistent with RoundTrip: both Release and RoundTrip will\n\t// consume a reservation iff one exists.\n\tif cc.cc.streamsReserved > 0 {\n\t\tcc.cc.streamsReserved--\n\t}\n}\n\nfunc (cc netHTTPClientConn) Available() int {\n\tcc.cc.mu.Lock()\n\tdefer cc.cc.mu.Unlock()\n\treturn cc.cc.availableLocked()\n}\n\nfunc (cc netHTTPClientConn) InFlight() int {\n\tcc.cc.mu.Lock()\n\tdefer cc.cc.mu.Unlock()\n\treturn cc.cc.currentRequestCountLocked()\n}\n\nfunc (cc *ClientConn) maybeCallStateHook() {\n\tif cc.internalStateHook != nil {\n\t\tcc.internalStateHook()\n\t}\n}\n\nfunc (t *Transport) idleConnTimeout() time.Duration {\n\t// to keep things backwards compatible, we use non-zero values of\n\t// IdleConnTimeout, followed by using the IdleConnTimeout on the underlying\n\t// http1 transport, followed by 0\n\tif t.IdleConnTimeout != 0 {\n\t\treturn t.IdleConnTimeout\n\t}\n\n\tif t.t1 != nil {\n\t\treturn t.t1.IdleConnTimeout\n\t}\n\n\treturn 0\n}\n\nfunc traceGetConn(req *http.Request, hostPort string) {\n\ttrace := httptrace.ContextClientTrace(req.Context())\n\tif trace == nil || trace.GetConn == nil {\n\t\treturn\n\t}\n\ttrace.GetConn(hostPort)\n}\n\nfunc traceGotConn(req *http.Request, cc *ClientConn, reused bool) {\n\ttrace := httptrace.ContextClientTrace(req.Context())\n\tif trace == nil || trace.GotConn == nil {\n\t\treturn\n\t}\n\tci := httptrace.GotConnInfo{Conn: cc.tconn}\n\tci.Reused = reused\n\tcc.mu.Lock()\n\tci.WasIdle = len(cc.streams) == 0 && reused\n\tif ci.WasIdle && !cc.lastActive.IsZero() {\n\t\tci.IdleTime = time.Since(cc.lastActive)\n\t}\n\tcc.mu.Unlock()\n\n\ttrace.GotConn(ci)\n}\n\nfunc traceWroteHeaders(trace *httptrace.ClientTrace) {\n\tif trace != nil && trace.WroteHeaders != nil {\n\t\ttrace.WroteHeaders()\n\t}\n}\n\nfunc traceGot100Continue(trace *httptrace.ClientTrace) {\n\tif trace != nil && trace.Got100Continue != nil {\n\t\ttrace.Got100Continue()\n\t}\n}\n\nfunc traceWait100Continue(trace *httptrace.ClientTrace) {\n\tif trace != nil && trace.Wait100Continue != nil {\n\t\ttrace.Wait100Continue()\n\t}\n}\n\nfunc traceWroteRequest(trace *httptrace.ClientTrace, err error) {\n\tif trace != nil && trace.WroteRequest != nil {\n\t\ttrace.WroteRequest(httptrace.WroteRequestInfo{Err: err})\n\t}\n}\n\nfunc traceFirstResponseByte(trace *httptrace.ClientTrace) {\n\tif trace != nil && trace.GotFirstResponseByte != nil {\n\t\ttrace.GotFirstResponseByte()\n\t}\n}\n\nfunc traceGot1xxResponseFunc(trace *httptrace.ClientTrace) func(int, textproto.MIMEHeader) error {\n\tif trace != nil {\n\t\treturn trace.Got1xxResponse\n\t}\n\treturn nil\n}\n\n// dialTLSWithContext uses tls.Dialer, added in Go 1.15, to open a TLS\n// connection.\nfunc (t *Transport) dialTLSWithContext(ctx context.Context, network, addr string, cfg *tls.Config) (*tls.Conn, error) {\n\tdialer := &tls.Dialer{\n\t\tConfig: cfg,\n\t}\n\tcn, err := dialer.DialContext(ctx, network, addr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ttlsCn := cn.(*tls.Conn) // DialContext comment promises this will always succeed\n\treturn tlsCn, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/unencrypted.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"crypto/tls\"\n\t\"errors\"\n\t\"net\"\n)\n\nconst nextProtoUnencryptedHTTP2 = \"unencrypted_http2\"\n\n// unencryptedNetConnFromTLSConn retrieves a net.Conn wrapped in a *tls.Conn.\n//\n// TLSNextProto functions accept a *tls.Conn.\n//\n// When passing an unencrypted HTTP/2 connection to a TLSNextProto function,\n// we pass a *tls.Conn with an underlying net.Conn containing the unencrypted connection.\n// To be extra careful about mistakes (accidentally dropping TLS encryption in a place\n// where we want it), the tls.Conn contains a net.Conn with an UnencryptedNetConn method\n// that returns the actual connection we want to use.\nfunc unencryptedNetConnFromTLSConn(tc *tls.Conn) (net.Conn, error) {\n\tconner, ok := tc.NetConn().(interface {\n\t\tUnencryptedNetConn() net.Conn\n\t})\n\tif !ok {\n\t\treturn nil, errors.New(\"http2: TLS conn unexpectedly found in unencrypted handoff\")\n\t}\n\treturn conner.UnencryptedNetConn(), nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/write.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"log\"\n\t\"net/http\"\n\t\"net/url\"\n\n\t\"golang.org/x/net/http/httpguts\"\n\t\"golang.org/x/net/http2/hpack\"\n\t\"golang.org/x/net/internal/httpcommon\"\n)\n\n// writeFramer is implemented by any type that is used to write frames.\ntype writeFramer interface {\n\twriteFrame(writeContext) error\n\n\t// staysWithinBuffer reports whether this writer promises that\n\t// it will only write less than or equal to size bytes, and it\n\t// won't Flush the write context.\n\tstaysWithinBuffer(size int) bool\n}\n\n// writeContext is the interface needed by the various frame writer\n// types below. All the writeFrame methods below are scheduled via the\n// frame writing scheduler (see writeScheduler in writesched.go).\n//\n// This interface is implemented by *serverConn.\n//\n// TODO: decide whether to a) use this in the client code (which didn't\n// end up using this yet, because it has a simpler design, not\n// currently implementing priorities), or b) delete this and\n// make the server code a bit more concrete.\ntype writeContext interface {\n\tFramer() *Framer\n\tFlush() error\n\tCloseConn() error\n\t// HeaderEncoder returns an HPACK encoder that writes to the\n\t// returned buffer.\n\tHeaderEncoder() (*hpack.Encoder, *bytes.Buffer)\n}\n\n// writeEndsStream reports whether w writes a frame that will transition\n// the stream to a half-closed local state. This returns false for RST_STREAM,\n// which closes the entire stream (not just the local half).\nfunc writeEndsStream(w writeFramer) bool {\n\tswitch v := w.(type) {\n\tcase *writeData:\n\t\treturn v.endStream\n\tcase *writeResHeaders:\n\t\treturn v.endStream\n\tcase nil:\n\t\t// This can only happen if the caller reuses w after it's\n\t\t// been intentionally nil'ed out to prevent use. Keep this\n\t\t// here to catch future refactoring breaking it.\n\t\tpanic(\"writeEndsStream called on nil writeFramer\")\n\t}\n\treturn false\n}\n\ntype flushFrameWriter struct{}\n\nfunc (flushFrameWriter) writeFrame(ctx writeContext) error {\n\treturn ctx.Flush()\n}\n\nfunc (flushFrameWriter) staysWithinBuffer(max int) bool { return false }\n\ntype writeSettings []Setting\n\nfunc (s writeSettings) staysWithinBuffer(max int) bool {\n\tconst settingSize = 6 // uint16 + uint32\n\treturn frameHeaderLen+settingSize*len(s) <= max\n\n}\n\nfunc (s writeSettings) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WriteSettings([]Setting(s)...)\n}\n\ntype writeGoAway struct {\n\tmaxStreamID uint32\n\tcode        ErrCode\n}\n\nfunc (p *writeGoAway) writeFrame(ctx writeContext) error {\n\terr := ctx.Framer().WriteGoAway(p.maxStreamID, p.code, nil)\n\tctx.Flush() // ignore error: we're hanging up on them anyway\n\treturn err\n}\n\nfunc (*writeGoAway) staysWithinBuffer(max int) bool { return false } // flushes\n\ntype writeData struct {\n\tstreamID  uint32\n\tp         []byte\n\tendStream bool\n}\n\nfunc (w *writeData) String() string {\n\treturn fmt.Sprintf(\"writeData(stream=%d, p=%d, endStream=%v)\", w.streamID, len(w.p), w.endStream)\n}\n\nfunc (w *writeData) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WriteData(w.streamID, w.endStream, w.p)\n}\n\nfunc (w *writeData) staysWithinBuffer(max int) bool {\n\treturn frameHeaderLen+len(w.p) <= max\n}\n\n// handlerPanicRST is the message sent from handler goroutines when\n// the handler panics.\ntype handlerPanicRST struct {\n\tStreamID uint32\n}\n\nfunc (hp handlerPanicRST) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WriteRSTStream(hp.StreamID, ErrCodeInternal)\n}\n\nfunc (hp handlerPanicRST) staysWithinBuffer(max int) bool { return frameHeaderLen+4 <= max }\n\nfunc (se StreamError) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WriteRSTStream(se.StreamID, se.Code)\n}\n\nfunc (se StreamError) staysWithinBuffer(max int) bool { return frameHeaderLen+4 <= max }\n\ntype writePing struct {\n\tdata [8]byte\n}\n\nfunc (w writePing) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WritePing(false, w.data)\n}\n\nfunc (w writePing) staysWithinBuffer(max int) bool { return frameHeaderLen+len(w.data) <= max }\n\ntype writePingAck struct{ pf *PingFrame }\n\nfunc (w writePingAck) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WritePing(true, w.pf.Data)\n}\n\nfunc (w writePingAck) staysWithinBuffer(max int) bool { return frameHeaderLen+len(w.pf.Data) <= max }\n\ntype writeSettingsAck struct{}\n\nfunc (writeSettingsAck) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WriteSettingsAck()\n}\n\nfunc (writeSettingsAck) staysWithinBuffer(max int) bool { return frameHeaderLen <= max }\n\n// splitHeaderBlock splits headerBlock into fragments so that each fragment fits\n// in a single frame, then calls fn for each fragment. firstFrag/lastFrag are true\n// for the first/last fragment, respectively.\nfunc splitHeaderBlock(ctx writeContext, headerBlock []byte, fn func(ctx writeContext, frag []byte, firstFrag, lastFrag bool) error) error {\n\t// For now we're lazy and just pick the minimum MAX_FRAME_SIZE\n\t// that all peers must support (16KB). Later we could care\n\t// more and send larger frames if the peer advertised it, but\n\t// there's little point. Most headers are small anyway (so we\n\t// generally won't have CONTINUATION frames), and extra frames\n\t// only waste 9 bytes anyway.\n\tconst maxFrameSize = 16384\n\n\tfirst := true\n\tfor len(headerBlock) > 0 {\n\t\tfrag := headerBlock\n\t\tif len(frag) > maxFrameSize {\n\t\t\tfrag = frag[:maxFrameSize]\n\t\t}\n\t\theaderBlock = headerBlock[len(frag):]\n\t\tif err := fn(ctx, frag, first, len(headerBlock) == 0); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirst = false\n\t}\n\treturn nil\n}\n\n// writeResHeaders is a request to write a HEADERS and 0+ CONTINUATION frames\n// for HTTP response headers or trailers from a server handler.\ntype writeResHeaders struct {\n\tstreamID    uint32\n\thttpResCode int         // 0 means no \":status\" line\n\th           http.Header // may be nil\n\ttrailers    []string    // if non-nil, which keys of h to write. nil means all.\n\tendStream   bool\n\n\tdate          string\n\tcontentType   string\n\tcontentLength string\n}\n\nfunc encKV(enc *hpack.Encoder, k, v string) {\n\tif VerboseLogs {\n\t\tlog.Printf(\"http2: server encoding header %q = %q\", k, v)\n\t}\n\tenc.WriteField(hpack.HeaderField{Name: k, Value: v})\n}\n\nfunc (w *writeResHeaders) staysWithinBuffer(max int) bool {\n\t// TODO: this is a common one. It'd be nice to return true\n\t// here and get into the fast path if we could be clever and\n\t// calculate the size fast enough, or at least a conservative\n\t// upper bound that usually fires. (Maybe if w.h and\n\t// w.trailers are nil, so we don't need to enumerate it.)\n\t// Otherwise I'm afraid that just calculating the length to\n\t// answer this question would be slower than the ~2µs benefit.\n\treturn false\n}\n\nfunc (w *writeResHeaders) writeFrame(ctx writeContext) error {\n\tenc, buf := ctx.HeaderEncoder()\n\tbuf.Reset()\n\n\tif w.httpResCode != 0 {\n\t\tencKV(enc, \":status\", httpCodeString(w.httpResCode))\n\t}\n\n\tencodeHeaders(enc, w.h, w.trailers)\n\n\tif w.contentType != \"\" {\n\t\tencKV(enc, \"content-type\", w.contentType)\n\t}\n\tif w.contentLength != \"\" {\n\t\tencKV(enc, \"content-length\", w.contentLength)\n\t}\n\tif w.date != \"\" {\n\t\tencKV(enc, \"date\", w.date)\n\t}\n\n\theaderBlock := buf.Bytes()\n\tif len(headerBlock) == 0 && w.trailers == nil {\n\t\tpanic(\"unexpected empty hpack\")\n\t}\n\n\treturn splitHeaderBlock(ctx, headerBlock, w.writeHeaderBlock)\n}\n\nfunc (w *writeResHeaders) writeHeaderBlock(ctx writeContext, frag []byte, firstFrag, lastFrag bool) error {\n\tif firstFrag {\n\t\treturn ctx.Framer().WriteHeaders(HeadersFrameParam{\n\t\t\tStreamID:      w.streamID,\n\t\t\tBlockFragment: frag,\n\t\t\tEndStream:     w.endStream,\n\t\t\tEndHeaders:    lastFrag,\n\t\t})\n\t} else {\n\t\treturn ctx.Framer().WriteContinuation(w.streamID, lastFrag, frag)\n\t}\n}\n\n// writePushPromise is a request to write a PUSH_PROMISE and 0+ CONTINUATION frames.\ntype writePushPromise struct {\n\tstreamID uint32   // pusher stream\n\tmethod   string   // for :method\n\turl      *url.URL // for :scheme, :authority, :path\n\th        http.Header\n\n\t// Creates an ID for a pushed stream. This runs on serveG just before\n\t// the frame is written. The returned ID is copied to promisedID.\n\tallocatePromisedID func() (uint32, error)\n\tpromisedID         uint32\n}\n\nfunc (w *writePushPromise) staysWithinBuffer(max int) bool {\n\t// TODO: see writeResHeaders.staysWithinBuffer\n\treturn false\n}\n\nfunc (w *writePushPromise) writeFrame(ctx writeContext) error {\n\tenc, buf := ctx.HeaderEncoder()\n\tbuf.Reset()\n\n\tencKV(enc, \":method\", w.method)\n\tencKV(enc, \":scheme\", w.url.Scheme)\n\tencKV(enc, \":authority\", w.url.Host)\n\tencKV(enc, \":path\", w.url.RequestURI())\n\tencodeHeaders(enc, w.h, nil)\n\n\theaderBlock := buf.Bytes()\n\tif len(headerBlock) == 0 {\n\t\tpanic(\"unexpected empty hpack\")\n\t}\n\n\treturn splitHeaderBlock(ctx, headerBlock, w.writeHeaderBlock)\n}\n\nfunc (w *writePushPromise) writeHeaderBlock(ctx writeContext, frag []byte, firstFrag, lastFrag bool) error {\n\tif firstFrag {\n\t\treturn ctx.Framer().WritePushPromise(PushPromiseParam{\n\t\t\tStreamID:      w.streamID,\n\t\t\tPromiseID:     w.promisedID,\n\t\t\tBlockFragment: frag,\n\t\t\tEndHeaders:    lastFrag,\n\t\t})\n\t} else {\n\t\treturn ctx.Framer().WriteContinuation(w.streamID, lastFrag, frag)\n\t}\n}\n\ntype write100ContinueHeadersFrame struct {\n\tstreamID uint32\n}\n\nfunc (w write100ContinueHeadersFrame) writeFrame(ctx writeContext) error {\n\tenc, buf := ctx.HeaderEncoder()\n\tbuf.Reset()\n\tencKV(enc, \":status\", \"100\")\n\treturn ctx.Framer().WriteHeaders(HeadersFrameParam{\n\t\tStreamID:      w.streamID,\n\t\tBlockFragment: buf.Bytes(),\n\t\tEndStream:     false,\n\t\tEndHeaders:    true,\n\t})\n}\n\nfunc (w write100ContinueHeadersFrame) staysWithinBuffer(max int) bool {\n\t// Sloppy but conservative:\n\treturn 9+2*(len(\":status\")+len(\"100\")) <= max\n}\n\ntype writeWindowUpdate struct {\n\tstreamID uint32 // or 0 for conn-level\n\tn        uint32\n}\n\nfunc (wu writeWindowUpdate) staysWithinBuffer(max int) bool { return frameHeaderLen+4 <= max }\n\nfunc (wu writeWindowUpdate) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WriteWindowUpdate(wu.streamID, wu.n)\n}\n\n// encodeHeaders encodes an http.Header. If keys is not nil, then (k, h[k])\n// is encoded only if k is in keys.\nfunc encodeHeaders(enc *hpack.Encoder, h http.Header, keys []string) {\n\tif keys == nil {\n\t\tsorter := sorterPool.Get().(*sorter)\n\t\t// Using defer here, since the returned keys from the\n\t\t// sorter.Keys method is only valid until the sorter\n\t\t// is returned:\n\t\tdefer sorterPool.Put(sorter)\n\t\tkeys = sorter.Keys(h)\n\t}\n\tfor _, k := range keys {\n\t\tvv := h[k]\n\t\tk, ascii := httpcommon.LowerHeader(k)\n\t\tif !ascii {\n\t\t\t// Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header\n\t\t\t// field names have to be ASCII characters (just as in HTTP/1.x).\n\t\t\tcontinue\n\t\t}\n\t\tif !validWireHeaderFieldName(k) {\n\t\t\t// Skip it as backup paranoia. Per\n\t\t\t// golang.org/issue/14048, these should\n\t\t\t// already be rejected at a higher level.\n\t\t\tcontinue\n\t\t}\n\t\tisTE := k == \"transfer-encoding\"\n\t\tfor _, v := range vv {\n\t\t\tif !httpguts.ValidHeaderFieldValue(v) {\n\t\t\t\t// TODO: return an error? golang.org/issue/14048\n\t\t\t\t// For now just omit it.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// TODO: more of \"8.1.2.2 Connection-Specific Header Fields\"\n\t\t\tif isTE && v != \"trailers\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tencKV(enc, k, v)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/writesched.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport \"fmt\"\n\n// WriteScheduler is the interface implemented by HTTP/2 write schedulers.\n// Methods are never called concurrently.\ntype WriteScheduler interface {\n\t// OpenStream opens a new stream in the write scheduler.\n\t// It is illegal to call this with streamID=0 or with a streamID that is\n\t// already open -- the call may panic.\n\tOpenStream(streamID uint32, options OpenStreamOptions)\n\n\t// CloseStream closes a stream in the write scheduler. Any frames queued on\n\t// this stream should be discarded. It is illegal to call this on a stream\n\t// that is not open -- the call may panic.\n\tCloseStream(streamID uint32)\n\n\t// AdjustStream adjusts the priority of the given stream. This may be called\n\t// on a stream that has not yet been opened or has been closed. Note that\n\t// RFC 7540 allows PRIORITY frames to be sent on streams in any state. See:\n\t// https://tools.ietf.org/html/rfc7540#section-5.1\n\tAdjustStream(streamID uint32, priority PriorityParam)\n\n\t// Push queues a frame in the scheduler. In most cases, this will not be\n\t// called with wr.StreamID()!=0 unless that stream is currently open. The one\n\t// exception is RST_STREAM frames, which may be sent on idle or closed streams.\n\tPush(wr FrameWriteRequest)\n\n\t// Pop dequeues the next frame to write. Returns false if no frames can\n\t// be written. Frames with a given wr.StreamID() are Pop'd in the same\n\t// order they are Push'd, except RST_STREAM frames. No frames should be\n\t// discarded except by CloseStream.\n\tPop() (wr FrameWriteRequest, ok bool)\n}\n\n// OpenStreamOptions specifies extra options for WriteScheduler.OpenStream.\ntype OpenStreamOptions struct {\n\t// PusherID is zero if the stream was initiated by the client. Otherwise,\n\t// PusherID names the stream that pushed the newly opened stream.\n\tPusherID uint32\n\t// priority is used to set the priority of the newly opened stream.\n\tpriority PriorityParam\n}\n\n// FrameWriteRequest is a request to write a frame.\ntype FrameWriteRequest struct {\n\t// write is the interface value that does the writing, once the\n\t// WriteScheduler has selected this frame to write. The write\n\t// functions are all defined in write.go.\n\twrite writeFramer\n\n\t// stream is the stream on which this frame will be written.\n\t// nil for non-stream frames like PING and SETTINGS.\n\t// nil for RST_STREAM streams, which use the StreamError.StreamID field instead.\n\tstream *stream\n\n\t// done, if non-nil, must be a buffered channel with space for\n\t// 1 message and is sent the return value from write (or an\n\t// earlier error) when the frame has been written.\n\tdone chan error\n}\n\n// StreamID returns the id of the stream this frame will be written to.\n// 0 is used for non-stream frames such as PING and SETTINGS.\nfunc (wr FrameWriteRequest) StreamID() uint32 {\n\tif wr.stream == nil {\n\t\tif se, ok := wr.write.(StreamError); ok {\n\t\t\t// (*serverConn).resetStream doesn't set\n\t\t\t// stream because it doesn't necessarily have\n\t\t\t// one. So special case this type of write\n\t\t\t// message.\n\t\t\treturn se.StreamID\n\t\t}\n\t\treturn 0\n\t}\n\treturn wr.stream.id\n}\n\n// isControl reports whether wr is a control frame for MaxQueuedControlFrames\n// purposes. That includes non-stream frames and RST_STREAM frames.\nfunc (wr FrameWriteRequest) isControl() bool {\n\treturn wr.stream == nil\n}\n\n// DataSize returns the number of flow control bytes that must be consumed\n// to write this entire frame. This is 0 for non-DATA frames.\nfunc (wr FrameWriteRequest) DataSize() int {\n\tif wd, ok := wr.write.(*writeData); ok {\n\t\treturn len(wd.p)\n\t}\n\treturn 0\n}\n\n// Consume consumes min(n, available) bytes from this frame, where available\n// is the number of flow control bytes available on the stream. Consume returns\n// 0, 1, or 2 frames, where the integer return value gives the number of frames\n// returned.\n//\n// If flow control prevents consuming any bytes, this returns (_, _, 0). If\n// the entire frame was consumed, this returns (wr, _, 1). Otherwise, this\n// returns (consumed, rest, 2), where 'consumed' contains the consumed bytes and\n// 'rest' contains the remaining bytes. The consumed bytes are deducted from the\n// underlying stream's flow control budget.\nfunc (wr FrameWriteRequest) Consume(n int32) (FrameWriteRequest, FrameWriteRequest, int) {\n\tvar empty FrameWriteRequest\n\n\t// Non-DATA frames are always consumed whole.\n\twd, ok := wr.write.(*writeData)\n\tif !ok || len(wd.p) == 0 {\n\t\treturn wr, empty, 1\n\t}\n\n\t// Might need to split after applying limits.\n\tallowed := wr.stream.flow.available()\n\tif n < allowed {\n\t\tallowed = n\n\t}\n\tif wr.stream.sc.maxFrameSize < allowed {\n\t\tallowed = wr.stream.sc.maxFrameSize\n\t}\n\tif allowed <= 0 {\n\t\treturn empty, empty, 0\n\t}\n\tif len(wd.p) > int(allowed) {\n\t\twr.stream.flow.take(allowed)\n\t\tconsumed := FrameWriteRequest{\n\t\t\tstream: wr.stream,\n\t\t\twrite: &writeData{\n\t\t\t\tstreamID: wd.streamID,\n\t\t\t\tp:        wd.p[:allowed],\n\t\t\t\t// Even if the original had endStream set, there\n\t\t\t\t// are bytes remaining because len(wd.p) > allowed,\n\t\t\t\t// so we know endStream is false.\n\t\t\t\tendStream: false,\n\t\t\t},\n\t\t\t// Our caller is blocking on the final DATA frame, not\n\t\t\t// this intermediate frame, so no need to wait.\n\t\t\tdone: nil,\n\t\t}\n\t\trest := FrameWriteRequest{\n\t\t\tstream: wr.stream,\n\t\t\twrite: &writeData{\n\t\t\t\tstreamID:  wd.streamID,\n\t\t\t\tp:         wd.p[allowed:],\n\t\t\t\tendStream: wd.endStream,\n\t\t\t},\n\t\t\tdone: wr.done,\n\t\t}\n\t\treturn consumed, rest, 2\n\t}\n\n\t// The frame is consumed whole.\n\t// NB: This cast cannot overflow because allowed is <= math.MaxInt32.\n\twr.stream.flow.take(int32(len(wd.p)))\n\treturn wr, empty, 1\n}\n\n// String is for debugging only.\nfunc (wr FrameWriteRequest) String() string {\n\tvar des string\n\tif s, ok := wr.write.(fmt.Stringer); ok {\n\t\tdes = s.String()\n\t} else {\n\t\tdes = fmt.Sprintf(\"%T\", wr.write)\n\t}\n\treturn fmt.Sprintf(\"[FrameWriteRequest stream=%d, ch=%v, writer=%v]\", wr.StreamID(), wr.done != nil, des)\n}\n\n// replyToWriter sends err to wr.done and panics if the send must block\n// This does nothing if wr.done is nil.\nfunc (wr *FrameWriteRequest) replyToWriter(err error) {\n\tif wr.done == nil {\n\t\treturn\n\t}\n\tselect {\n\tcase wr.done <- err:\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unbuffered done channel passed in for type %T\", wr.write))\n\t}\n\twr.write = nil // prevent use (assume it's tainted after wr.done send)\n}\n\n// writeQueue is used by implementations of WriteScheduler.\n//\n// Each writeQueue contains a queue of FrameWriteRequests, meant to store all\n// FrameWriteRequests associated with a given stream. This is implemented as a\n// two-stage queue: currQueue[currPos:] and nextQueue. Removing an item is done\n// by incrementing currPos of currQueue. Adding an item is done by appending it\n// to the nextQueue. If currQueue is empty when trying to remove an item, we\n// can swap currQueue and nextQueue to remedy the situation.\n// This two-stage queue is analogous to the use of two lists in Okasaki's\n// purely functional queue but without the overhead of reversing the list when\n// swapping stages.\n//\n// writeQueue also contains prev and next, this can be used by implementations\n// of WriteScheduler to construct data structures that represent the order of\n// writing between different streams (e.g. circular linked list).\ntype writeQueue struct {\n\tcurrQueue []FrameWriteRequest\n\tnextQueue []FrameWriteRequest\n\tcurrPos   int\n\n\tprev, next *writeQueue\n}\n\nfunc (q *writeQueue) empty() bool {\n\treturn (len(q.currQueue) - q.currPos + len(q.nextQueue)) == 0\n}\n\nfunc (q *writeQueue) push(wr FrameWriteRequest) {\n\tq.nextQueue = append(q.nextQueue, wr)\n}\n\nfunc (q *writeQueue) shift() FrameWriteRequest {\n\tif q.empty() {\n\t\tpanic(\"invalid use of queue\")\n\t}\n\tif q.currPos >= len(q.currQueue) {\n\t\tq.currQueue, q.currPos, q.nextQueue = q.nextQueue, 0, q.currQueue[:0]\n\t}\n\twr := q.currQueue[q.currPos]\n\tq.currQueue[q.currPos] = FrameWriteRequest{}\n\tq.currPos++\n\treturn wr\n}\n\nfunc (q *writeQueue) peek() *FrameWriteRequest {\n\tif q.currPos < len(q.currQueue) {\n\t\treturn &q.currQueue[q.currPos]\n\t}\n\tif len(q.nextQueue) > 0 {\n\t\treturn &q.nextQueue[0]\n\t}\n\treturn nil\n}\n\n// consume consumes up to n bytes from q.s[0]. If the frame is\n// entirely consumed, it is removed from the queue. If the frame\n// is partially consumed, the frame is kept with the consumed\n// bytes removed. Returns true iff any bytes were consumed.\nfunc (q *writeQueue) consume(n int32) (FrameWriteRequest, bool) {\n\tif q.empty() {\n\t\treturn FrameWriteRequest{}, false\n\t}\n\tconsumed, rest, numresult := q.peek().Consume(n)\n\tswitch numresult {\n\tcase 0:\n\t\treturn FrameWriteRequest{}, false\n\tcase 1:\n\t\tq.shift()\n\tcase 2:\n\t\t*q.peek() = rest\n\t}\n\treturn consumed, true\n}\n\ntype writeQueuePool []*writeQueue\n\n// put inserts an unused writeQueue into the pool.\nfunc (p *writeQueuePool) put(q *writeQueue) {\n\tfor i := range q.currQueue {\n\t\tq.currQueue[i] = FrameWriteRequest{}\n\t}\n\tfor i := range q.nextQueue {\n\t\tq.nextQueue[i] = FrameWriteRequest{}\n\t}\n\tq.currQueue = q.currQueue[:0]\n\tq.nextQueue = q.nextQueue[:0]\n\tq.currPos = 0\n\t*p = append(*p, q)\n}\n\n// get returns an empty writeQueue.\nfunc (p *writeQueuePool) get() *writeQueue {\n\tln := len(*p)\n\tif ln == 0 {\n\t\treturn new(writeQueue)\n\t}\n\tx := ln - 1\n\tq := (*p)[x]\n\t(*p)[x] = nil\n\t*p = (*p)[:x]\n\treturn q\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"sort\"\n)\n\n// RFC 7540, Section 5.3.5: the default weight is 16.\nconst priorityDefaultWeightRFC7540 = 15 // 16 = 15 + 1\n\n// PriorityWriteSchedulerConfig configures a priorityWriteScheduler.\ntype PriorityWriteSchedulerConfig struct {\n\t// MaxClosedNodesInTree controls the maximum number of closed streams to\n\t// retain in the priority tree. Setting this to zero saves a small amount\n\t// of memory at the cost of performance.\n\t//\n\t// See RFC 7540, Section 5.3.4:\n\t//   \"It is possible for a stream to become closed while prioritization\n\t//   information ... is in transit. ... This potentially creates suboptimal\n\t//   prioritization, since the stream could be given a priority that is\n\t//   different from what is intended. To avoid these problems, an endpoint\n\t//   SHOULD retain stream prioritization state for a period after streams\n\t//   become closed. The longer state is retained, the lower the chance that\n\t//   streams are assigned incorrect or default priority values.\"\n\tMaxClosedNodesInTree int\n\n\t// MaxIdleNodesInTree controls the maximum number of idle streams to\n\t// retain in the priority tree. Setting this to zero saves a small amount\n\t// of memory at the cost of performance.\n\t//\n\t// See RFC 7540, Section 5.3.4:\n\t//   Similarly, streams that are in the \"idle\" state can be assigned\n\t//   priority or become a parent of other streams. This allows for the\n\t//   creation of a grouping node in the dependency tree, which enables\n\t//   more flexible expressions of priority. Idle streams begin with a\n\t//   default priority (Section 5.3.5).\n\tMaxIdleNodesInTree int\n\n\t// ThrottleOutOfOrderWrites enables write throttling to help ensure that\n\t// data is delivered in priority order. This works around a race where\n\t// stream B depends on stream A and both streams are about to call Write\n\t// to queue DATA frames. If B wins the race, a naive scheduler would eagerly\n\t// write as much data from B as possible, but this is suboptimal because A\n\t// is a higher-priority stream. With throttling enabled, we write a small\n\t// amount of data from B to minimize the amount of bandwidth that B can\n\t// steal from A.\n\tThrottleOutOfOrderWrites bool\n}\n\n// NewPriorityWriteScheduler constructs a WriteScheduler that schedules\n// frames by following HTTP/2 priorities as described in RFC 7540 Section 5.3.\n// If cfg is nil, default options are used.\nfunc NewPriorityWriteScheduler(cfg *PriorityWriteSchedulerConfig) WriteScheduler {\n\treturn newPriorityWriteSchedulerRFC7540(cfg)\n}\n\nfunc newPriorityWriteSchedulerRFC7540(cfg *PriorityWriteSchedulerConfig) WriteScheduler {\n\tif cfg == nil {\n\t\t// For justification of these defaults, see:\n\t\t// https://docs.google.com/document/d/1oLhNg1skaWD4_DtaoCxdSRN5erEXrH-KnLrMwEpOtFY\n\t\tcfg = &PriorityWriteSchedulerConfig{\n\t\t\tMaxClosedNodesInTree:     10,\n\t\t\tMaxIdleNodesInTree:       10,\n\t\t\tThrottleOutOfOrderWrites: false,\n\t\t}\n\t}\n\n\tws := &priorityWriteSchedulerRFC7540{\n\t\tnodes:                make(map[uint32]*priorityNodeRFC7540),\n\t\tmaxClosedNodesInTree: cfg.MaxClosedNodesInTree,\n\t\tmaxIdleNodesInTree:   cfg.MaxIdleNodesInTree,\n\t\tenableWriteThrottle:  cfg.ThrottleOutOfOrderWrites,\n\t}\n\tws.nodes[0] = &ws.root\n\tif cfg.ThrottleOutOfOrderWrites {\n\t\tws.writeThrottleLimit = 1024\n\t} else {\n\t\tws.writeThrottleLimit = math.MaxInt32\n\t}\n\treturn ws\n}\n\ntype priorityNodeStateRFC7540 int\n\nconst (\n\tpriorityNodeOpenRFC7540 priorityNodeStateRFC7540 = iota\n\tpriorityNodeClosedRFC7540\n\tpriorityNodeIdleRFC7540\n)\n\n// priorityNodeRFC7540 is a node in an HTTP/2 priority tree.\n// Each node is associated with a single stream ID.\n// See RFC 7540, Section 5.3.\ntype priorityNodeRFC7540 struct {\n\tq            writeQueue               // queue of pending frames to write\n\tid           uint32                   // id of the stream, or 0 for the root of the tree\n\tweight       uint8                    // the actual weight is weight+1, so the value is in [1,256]\n\tstate        priorityNodeStateRFC7540 // open | closed | idle\n\tbytes        int64                    // number of bytes written by this node, or 0 if closed\n\tsubtreeBytes int64                    // sum(node.bytes) of all nodes in this subtree\n\n\t// These links form the priority tree.\n\tparent     *priorityNodeRFC7540\n\tkids       *priorityNodeRFC7540 // start of the kids list\n\tprev, next *priorityNodeRFC7540 // doubly-linked list of siblings\n}\n\nfunc (n *priorityNodeRFC7540) setParent(parent *priorityNodeRFC7540) {\n\tif n == parent {\n\t\tpanic(\"setParent to self\")\n\t}\n\tif n.parent == parent {\n\t\treturn\n\t}\n\t// Unlink from current parent.\n\tif parent := n.parent; parent != nil {\n\t\tif n.prev == nil {\n\t\t\tparent.kids = n.next\n\t\t} else {\n\t\t\tn.prev.next = n.next\n\t\t}\n\t\tif n.next != nil {\n\t\t\tn.next.prev = n.prev\n\t\t}\n\t}\n\t// Link to new parent.\n\t// If parent=nil, remove n from the tree.\n\t// Always insert at the head of parent.kids (this is assumed by walkReadyInOrder).\n\tn.parent = parent\n\tif parent == nil {\n\t\tn.next = nil\n\t\tn.prev = nil\n\t} else {\n\t\tn.next = parent.kids\n\t\tn.prev = nil\n\t\tif n.next != nil {\n\t\t\tn.next.prev = n\n\t\t}\n\t\tparent.kids = n\n\t}\n}\n\nfunc (n *priorityNodeRFC7540) addBytes(b int64) {\n\tn.bytes += b\n\tfor ; n != nil; n = n.parent {\n\t\tn.subtreeBytes += b\n\t}\n}\n\n// walkReadyInOrder iterates over the tree in priority order, calling f for each node\n// with a non-empty write queue. When f returns true, this function returns true and the\n// walk halts. tmp is used as scratch space for sorting.\n//\n// f(n, openParent) takes two arguments: the node to visit, n, and a bool that is true\n// if any ancestor p of n is still open (ignoring the root node).\nfunc (n *priorityNodeRFC7540) walkReadyInOrder(openParent bool, tmp *[]*priorityNodeRFC7540, f func(*priorityNodeRFC7540, bool) bool) bool {\n\tif !n.q.empty() && f(n, openParent) {\n\t\treturn true\n\t}\n\tif n.kids == nil {\n\t\treturn false\n\t}\n\n\t// Don't consider the root \"open\" when updating openParent since\n\t// we can't send data frames on the root stream (only control frames).\n\tif n.id != 0 {\n\t\topenParent = openParent || (n.state == priorityNodeOpenRFC7540)\n\t}\n\n\t// Common case: only one kid or all kids have the same weight.\n\t// Some clients don't use weights; other clients (like web browsers)\n\t// use mostly-linear priority trees.\n\tw := n.kids.weight\n\tneedSort := false\n\tfor k := n.kids.next; k != nil; k = k.next {\n\t\tif k.weight != w {\n\t\t\tneedSort = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !needSort {\n\t\tfor k := n.kids; k != nil; k = k.next {\n\t\t\tif k.walkReadyInOrder(openParent, tmp, f) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\n\t// Uncommon case: sort the child nodes. We remove the kids from the parent,\n\t// then re-insert after sorting so we can reuse tmp for future sort calls.\n\t*tmp = (*tmp)[:0]\n\tfor n.kids != nil {\n\t\t*tmp = append(*tmp, n.kids)\n\t\tn.kids.setParent(nil)\n\t}\n\tsort.Sort(sortPriorityNodeSiblingsRFC7540(*tmp))\n\tfor i := len(*tmp) - 1; i >= 0; i-- {\n\t\t(*tmp)[i].setParent(n) // setParent inserts at the head of n.kids\n\t}\n\tfor k := n.kids; k != nil; k = k.next {\n\t\tif k.walkReadyInOrder(openParent, tmp, f) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\ntype sortPriorityNodeSiblingsRFC7540 []*priorityNodeRFC7540\n\nfunc (z sortPriorityNodeSiblingsRFC7540) Len() int      { return len(z) }\nfunc (z sortPriorityNodeSiblingsRFC7540) Swap(i, k int) { z[i], z[k] = z[k], z[i] }\nfunc (z sortPriorityNodeSiblingsRFC7540) Less(i, k int) bool {\n\t// Prefer the subtree that has sent fewer bytes relative to its weight.\n\t// See sections 5.3.2 and 5.3.4.\n\twi, bi := float64(z[i].weight)+1, float64(z[i].subtreeBytes)\n\twk, bk := float64(z[k].weight)+1, float64(z[k].subtreeBytes)\n\tif bi == 0 && bk == 0 {\n\t\treturn wi >= wk\n\t}\n\tif bk == 0 {\n\t\treturn false\n\t}\n\treturn bi/bk <= wi/wk\n}\n\ntype priorityWriteSchedulerRFC7540 struct {\n\t// root is the root of the priority tree, where root.id = 0.\n\t// The root queues control frames that are not associated with any stream.\n\troot priorityNodeRFC7540\n\n\t// nodes maps stream ids to priority tree nodes.\n\tnodes map[uint32]*priorityNodeRFC7540\n\n\t// maxID is the maximum stream id in nodes.\n\tmaxID uint32\n\n\t// lists of nodes that have been closed or are idle, but are kept in\n\t// the tree for improved prioritization. When the lengths exceed either\n\t// maxClosedNodesInTree or maxIdleNodesInTree, old nodes are discarded.\n\tclosedNodes, idleNodes []*priorityNodeRFC7540\n\n\t// From the config.\n\tmaxClosedNodesInTree int\n\tmaxIdleNodesInTree   int\n\twriteThrottleLimit   int32\n\tenableWriteThrottle  bool\n\n\t// tmp is scratch space for priorityNode.walkReadyInOrder to reduce allocations.\n\ttmp []*priorityNodeRFC7540\n\n\t// pool of empty queues for reuse.\n\tqueuePool writeQueuePool\n}\n\nfunc (ws *priorityWriteSchedulerRFC7540) OpenStream(streamID uint32, options OpenStreamOptions) {\n\t// The stream may be currently idle but cannot be opened or closed.\n\tif curr := ws.nodes[streamID]; curr != nil {\n\t\tif curr.state != priorityNodeIdleRFC7540 {\n\t\t\tpanic(fmt.Sprintf(\"stream %d already opened\", streamID))\n\t\t}\n\t\tcurr.state = priorityNodeOpenRFC7540\n\t\treturn\n\t}\n\n\t// RFC 7540, Section 5.3.5:\n\t//  \"All streams are initially assigned a non-exclusive dependency on stream 0x0.\n\t//  Pushed streams initially depend on their associated stream. In both cases,\n\t//  streams are assigned a default weight of 16.\"\n\tparent := ws.nodes[options.PusherID]\n\tif parent == nil {\n\t\tparent = &ws.root\n\t}\n\tn := &priorityNodeRFC7540{\n\t\tq:      *ws.queuePool.get(),\n\t\tid:     streamID,\n\t\tweight: priorityDefaultWeightRFC7540,\n\t\tstate:  priorityNodeOpenRFC7540,\n\t}\n\tn.setParent(parent)\n\tws.nodes[streamID] = n\n\tif streamID > ws.maxID {\n\t\tws.maxID = streamID\n\t}\n}\n\nfunc (ws *priorityWriteSchedulerRFC7540) CloseStream(streamID uint32) {\n\tif streamID == 0 {\n\t\tpanic(\"violation of WriteScheduler interface: cannot close stream 0\")\n\t}\n\tif ws.nodes[streamID] == nil {\n\t\tpanic(fmt.Sprintf(\"violation of WriteScheduler interface: unknown stream %d\", streamID))\n\t}\n\tif ws.nodes[streamID].state != priorityNodeOpenRFC7540 {\n\t\tpanic(fmt.Sprintf(\"violation of WriteScheduler interface: stream %d already closed\", streamID))\n\t}\n\n\tn := ws.nodes[streamID]\n\tn.state = priorityNodeClosedRFC7540\n\tn.addBytes(-n.bytes)\n\n\tq := n.q\n\tws.queuePool.put(&q)\n\tif ws.maxClosedNodesInTree > 0 {\n\t\tws.addClosedOrIdleNode(&ws.closedNodes, ws.maxClosedNodesInTree, n)\n\t} else {\n\t\tws.removeNode(n)\n\t}\n}\n\nfunc (ws *priorityWriteSchedulerRFC7540) AdjustStream(streamID uint32, priority PriorityParam) {\n\tif streamID == 0 {\n\t\tpanic(\"adjustPriority on root\")\n\t}\n\n\t// If streamID does not exist, there are two cases:\n\t// - A closed stream that has been removed (this will have ID <= maxID)\n\t// - An idle stream that is being used for \"grouping\" (this will have ID > maxID)\n\tn := ws.nodes[streamID]\n\tif n == nil {\n\t\tif streamID <= ws.maxID || ws.maxIdleNodesInTree == 0 {\n\t\t\treturn\n\t\t}\n\t\tws.maxID = streamID\n\t\tn = &priorityNodeRFC7540{\n\t\t\tq:      *ws.queuePool.get(),\n\t\t\tid:     streamID,\n\t\t\tweight: priorityDefaultWeightRFC7540,\n\t\t\tstate:  priorityNodeIdleRFC7540,\n\t\t}\n\t\tn.setParent(&ws.root)\n\t\tws.nodes[streamID] = n\n\t\tws.addClosedOrIdleNode(&ws.idleNodes, ws.maxIdleNodesInTree, n)\n\t}\n\n\t// Section 5.3.1: A dependency on a stream that is not currently in the tree\n\t// results in that stream being given a default priority (Section 5.3.5).\n\tparent := ws.nodes[priority.StreamDep]\n\tif parent == nil {\n\t\tn.setParent(&ws.root)\n\t\tn.weight = priorityDefaultWeightRFC7540\n\t\treturn\n\t}\n\n\t// Ignore if the client tries to make a node its own parent.\n\tif n == parent {\n\t\treturn\n\t}\n\n\t// Section 5.3.3:\n\t//   \"If a stream is made dependent on one of its own dependencies, the\n\t//   formerly dependent stream is first moved to be dependent on the\n\t//   reprioritized stream's previous parent. The moved dependency retains\n\t//   its weight.\"\n\t//\n\t// That is: if parent depends on n, move parent to depend on n.parent.\n\tfor x := parent.parent; x != nil; x = x.parent {\n\t\tif x == n {\n\t\t\tparent.setParent(n.parent)\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Section 5.3.3: The exclusive flag causes the stream to become the sole\n\t// dependency of its parent stream, causing other dependencies to become\n\t// dependent on the exclusive stream.\n\tif priority.Exclusive {\n\t\tk := parent.kids\n\t\tfor k != nil {\n\t\t\tnext := k.next\n\t\t\tif k != n {\n\t\t\t\tk.setParent(n)\n\t\t\t}\n\t\t\tk = next\n\t\t}\n\t}\n\n\tn.setParent(parent)\n\tn.weight = priority.Weight\n}\n\nfunc (ws *priorityWriteSchedulerRFC7540) Push(wr FrameWriteRequest) {\n\tvar n *priorityNodeRFC7540\n\tif wr.isControl() {\n\t\tn = &ws.root\n\t} else {\n\t\tid := wr.StreamID()\n\t\tn = ws.nodes[id]\n\t\tif n == nil {\n\t\t\t// id is an idle or closed stream. wr should not be a HEADERS or\n\t\t\t// DATA frame. In other case, we push wr onto the root, rather\n\t\t\t// than creating a new priorityNode.\n\t\t\tif wr.DataSize() > 0 {\n\t\t\t\tpanic(\"add DATA on non-open stream\")\n\t\t\t}\n\t\t\tn = &ws.root\n\t\t}\n\t}\n\tn.q.push(wr)\n}\n\nfunc (ws *priorityWriteSchedulerRFC7540) Pop() (wr FrameWriteRequest, ok bool) {\n\tws.root.walkReadyInOrder(false, &ws.tmp, func(n *priorityNodeRFC7540, openParent bool) bool {\n\t\tlimit := int32(math.MaxInt32)\n\t\tif openParent {\n\t\t\tlimit = ws.writeThrottleLimit\n\t\t}\n\t\twr, ok = n.q.consume(limit)\n\t\tif !ok {\n\t\t\treturn false\n\t\t}\n\t\tn.addBytes(int64(wr.DataSize()))\n\t\t// If B depends on A and B continuously has data available but A\n\t\t// does not, gradually increase the throttling limit to allow B to\n\t\t// steal more and more bandwidth from A.\n\t\tif openParent {\n\t\t\tws.writeThrottleLimit += 1024\n\t\t\tif ws.writeThrottleLimit < 0 {\n\t\t\t\tws.writeThrottleLimit = math.MaxInt32\n\t\t\t}\n\t\t} else if ws.enableWriteThrottle {\n\t\t\tws.writeThrottleLimit = 1024\n\t\t}\n\t\treturn true\n\t})\n\treturn wr, ok\n}\n\nfunc (ws *priorityWriteSchedulerRFC7540) addClosedOrIdleNode(list *[]*priorityNodeRFC7540, maxSize int, n *priorityNodeRFC7540) {\n\tif maxSize == 0 {\n\t\treturn\n\t}\n\tif len(*list) == maxSize {\n\t\t// Remove the oldest node, then shift left.\n\t\tws.removeNode((*list)[0])\n\t\tx := (*list)[1:]\n\t\tcopy(*list, x)\n\t\t*list = (*list)[:len(x)]\n\t}\n\t*list = append(*list, n)\n}\n\nfunc (ws *priorityWriteSchedulerRFC7540) removeNode(n *priorityNodeRFC7540) {\n\tfor n.kids != nil {\n\t\tn.kids.setParent(n.parent)\n\t}\n\tn.setParent(nil)\n\tdelete(ws.nodes, n.id)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/writesched_priority_rfc9218.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"fmt\"\n\t\"math\"\n)\n\ntype streamMetadata struct {\n\tlocation *writeQueue\n\tpriority PriorityParam\n}\n\ntype priorityWriteSchedulerRFC9218 struct {\n\t// control contains control frames (SETTINGS, PING, etc.).\n\tcontrol writeQueue\n\n\t// heads contain the head of a circular list of streams.\n\t// We put these heads within a nested array that represents urgency and\n\t// incremental, as defined in\n\t// https://www.rfc-editor.org/rfc/rfc9218.html#name-priority-parameters.\n\t// 8 represents u=0 up to u=7, and 2 represents i=false and i=true.\n\theads [8][2]*writeQueue\n\n\t// streams contains a mapping between each stream ID and their metadata, so\n\t// we can quickly locate them when needing to, for example, adjust their\n\t// priority.\n\tstreams map[uint32]streamMetadata\n\n\t// queuePool are empty queues for reuse.\n\tqueuePool writeQueuePool\n\n\t// prioritizeIncremental is used to determine whether we should prioritize\n\t// incremental streams or not, when urgency is the same in a given Pop()\n\t// call.\n\tprioritizeIncremental bool\n\n\t// priorityUpdateBuf is used to buffer the most recent PRIORITY_UPDATE we\n\t// receive per https://www.rfc-editor.org/rfc/rfc9218.html#name-the-priority_update-frame.\n\tpriorityUpdateBuf struct {\n\t\t// streamID being 0 means that the buffer is empty. This is a safe\n\t\t// assumption as PRIORITY_UPDATE for stream 0 is a PROTOCOL_ERROR.\n\t\tstreamID uint32\n\t\tpriority PriorityParam\n\t}\n}\n\nfunc newPriorityWriteSchedulerRFC9218() WriteScheduler {\n\tws := &priorityWriteSchedulerRFC9218{\n\t\tstreams: make(map[uint32]streamMetadata),\n\t}\n\treturn ws\n}\n\nfunc (ws *priorityWriteSchedulerRFC9218) OpenStream(streamID uint32, opt OpenStreamOptions) {\n\tif ws.streams[streamID].location != nil {\n\t\tpanic(fmt.Errorf(\"stream %d already opened\", streamID))\n\t}\n\tif streamID == ws.priorityUpdateBuf.streamID {\n\t\tws.priorityUpdateBuf.streamID = 0\n\t\topt.priority = ws.priorityUpdateBuf.priority\n\t}\n\tq := ws.queuePool.get()\n\tws.streams[streamID] = streamMetadata{\n\t\tlocation: q,\n\t\tpriority: opt.priority,\n\t}\n\n\tu, i := opt.priority.urgency, opt.priority.incremental\n\tif ws.heads[u][i] == nil {\n\t\tws.heads[u][i] = q\n\t\tq.next = q\n\t\tq.prev = q\n\t} else {\n\t\t// Queues are stored in a ring.\n\t\t// Insert the new stream before ws.head, putting it at the end of the list.\n\t\tq.prev = ws.heads[u][i].prev\n\t\tq.next = ws.heads[u][i]\n\t\tq.prev.next = q\n\t\tq.next.prev = q\n\t}\n}\n\nfunc (ws *priorityWriteSchedulerRFC9218) CloseStream(streamID uint32) {\n\tmetadata := ws.streams[streamID]\n\tq, u, i := metadata.location, metadata.priority.urgency, metadata.priority.incremental\n\tif q == nil {\n\t\treturn\n\t}\n\tif q.next == q {\n\t\t// This was the only open stream.\n\t\tws.heads[u][i] = nil\n\t} else {\n\t\tq.prev.next = q.next\n\t\tq.next.prev = q.prev\n\t\tif ws.heads[u][i] == q {\n\t\t\tws.heads[u][i] = q.next\n\t\t}\n\t}\n\tdelete(ws.streams, streamID)\n\tws.queuePool.put(q)\n}\n\nfunc (ws *priorityWriteSchedulerRFC9218) AdjustStream(streamID uint32, priority PriorityParam) {\n\tmetadata := ws.streams[streamID]\n\tq, u, i := metadata.location, metadata.priority.urgency, metadata.priority.incremental\n\tif q == nil {\n\t\tws.priorityUpdateBuf.streamID = streamID\n\t\tws.priorityUpdateBuf.priority = priority\n\t\treturn\n\t}\n\n\t// Remove stream from current location.\n\tif q.next == q {\n\t\t// This was the only open stream.\n\t\tws.heads[u][i] = nil\n\t} else {\n\t\tq.prev.next = q.next\n\t\tq.next.prev = q.prev\n\t\tif ws.heads[u][i] == q {\n\t\t\tws.heads[u][i] = q.next\n\t\t}\n\t}\n\n\t// Insert stream to the new queue.\n\tu, i = priority.urgency, priority.incremental\n\tif ws.heads[u][i] == nil {\n\t\tws.heads[u][i] = q\n\t\tq.next = q\n\t\tq.prev = q\n\t} else {\n\t\t// Queues are stored in a ring.\n\t\t// Insert the new stream before ws.head, putting it at the end of the list.\n\t\tq.prev = ws.heads[u][i].prev\n\t\tq.next = ws.heads[u][i]\n\t\tq.prev.next = q\n\t\tq.next.prev = q\n\t}\n\n\t// Update the metadata.\n\tws.streams[streamID] = streamMetadata{\n\t\tlocation: q,\n\t\tpriority: priority,\n\t}\n}\n\nfunc (ws *priorityWriteSchedulerRFC9218) Push(wr FrameWriteRequest) {\n\tif wr.isControl() {\n\t\tws.control.push(wr)\n\t\treturn\n\t}\n\tq := ws.streams[wr.StreamID()].location\n\tif q == nil {\n\t\t// This is a closed stream.\n\t\t// wr should not be a HEADERS or DATA frame.\n\t\t// We push the request onto the control queue.\n\t\tif wr.DataSize() > 0 {\n\t\t\tpanic(\"add DATA on non-open stream\")\n\t\t}\n\t\tws.control.push(wr)\n\t\treturn\n\t}\n\tq.push(wr)\n}\n\nfunc (ws *priorityWriteSchedulerRFC9218) Pop() (FrameWriteRequest, bool) {\n\t// Control and RST_STREAM frames first.\n\tif !ws.control.empty() {\n\t\treturn ws.control.shift(), true\n\t}\n\n\t// On the next Pop(), we want to prioritize incremental if we prioritized\n\t// non-incremental request of the same urgency this time. Vice-versa.\n\t// i.e. when there are incremental and non-incremental requests at the same\n\t// priority, we give 50% of our bandwidth to the incremental ones in\n\t// aggregate and 50% to the first non-incremental one (since\n\t// non-incremental streams do not use round-robin writes).\n\tws.prioritizeIncremental = !ws.prioritizeIncremental\n\n\t// Always prioritize lowest u (i.e. highest urgency level).\n\tfor u := range ws.heads {\n\t\tfor i := range ws.heads[u] {\n\t\t\t// When we want to prioritize incremental, we try to pop i=true\n\t\t\t// first before i=false when u is the same.\n\t\t\tif ws.prioritizeIncremental {\n\t\t\t\ti = (i + 1) % 2\n\t\t\t}\n\t\t\tq := ws.heads[u][i]\n\t\t\tif q == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor {\n\t\t\t\tif wr, ok := q.consume(math.MaxInt32); ok {\n\t\t\t\t\tif i == 1 {\n\t\t\t\t\t\t// For incremental streams, we update head to q.next so\n\t\t\t\t\t\t// we can round-robin between multiple streams that can\n\t\t\t\t\t\t// immediately benefit from partial writes.\n\t\t\t\t\t\tws.heads[u][i] = q.next\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// For non-incremental streams, we try to finish one to\n\t\t\t\t\t\t// completion rather than doing round-robin. However,\n\t\t\t\t\t\t// we update head here so that if q.consume() is !ok\n\t\t\t\t\t\t// (e.g. the stream has no more frame to consume), head\n\t\t\t\t\t\t// is updated to the next q that has frames to consume\n\t\t\t\t\t\t// on future iterations. This way, we do not prioritize\n\t\t\t\t\t\t// writing to unavailable stream on next Pop() calls,\n\t\t\t\t\t\t// preventing head-of-line blocking.\n\t\t\t\t\t\tws.heads[u][i] = q\n\t\t\t\t\t}\n\t\t\t\t\treturn wr, true\n\t\t\t\t}\n\t\t\t\tq = q.next\n\t\t\t\tif q == ws.heads[u][i] {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\treturn FrameWriteRequest{}, false\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/writesched_random.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport \"math\"\n\n// NewRandomWriteScheduler constructs a WriteScheduler that ignores HTTP/2\n// priorities. Control frames like SETTINGS and PING are written before DATA\n// frames, but if no control frames are queued and multiple streams have queued\n// HEADERS or DATA frames, Pop selects a ready stream arbitrarily.\nfunc NewRandomWriteScheduler() WriteScheduler {\n\treturn &randomWriteScheduler{sq: make(map[uint32]*writeQueue)}\n}\n\ntype randomWriteScheduler struct {\n\t// zero are frames not associated with a specific stream.\n\tzero writeQueue\n\n\t// sq contains the stream-specific queues, keyed by stream ID.\n\t// When a stream is idle, closed, or emptied, it's deleted\n\t// from the map.\n\tsq map[uint32]*writeQueue\n\n\t// pool of empty queues for reuse.\n\tqueuePool writeQueuePool\n}\n\nfunc (ws *randomWriteScheduler) OpenStream(streamID uint32, options OpenStreamOptions) {\n\t// no-op: idle streams are not tracked\n}\n\nfunc (ws *randomWriteScheduler) CloseStream(streamID uint32) {\n\tq, ok := ws.sq[streamID]\n\tif !ok {\n\t\treturn\n\t}\n\tdelete(ws.sq, streamID)\n\tws.queuePool.put(q)\n}\n\nfunc (ws *randomWriteScheduler) AdjustStream(streamID uint32, priority PriorityParam) {\n\t// no-op: priorities are ignored\n}\n\nfunc (ws *randomWriteScheduler) Push(wr FrameWriteRequest) {\n\tif wr.isControl() {\n\t\tws.zero.push(wr)\n\t\treturn\n\t}\n\tid := wr.StreamID()\n\tq, ok := ws.sq[id]\n\tif !ok {\n\t\tq = ws.queuePool.get()\n\t\tws.sq[id] = q\n\t}\n\tq.push(wr)\n}\n\nfunc (ws *randomWriteScheduler) Pop() (FrameWriteRequest, bool) {\n\t// Control and RST_STREAM frames first.\n\tif !ws.zero.empty() {\n\t\treturn ws.zero.shift(), true\n\t}\n\t// Iterate over all non-idle streams until finding one that can be consumed.\n\tfor streamID, q := range ws.sq {\n\t\tif wr, ok := q.consume(math.MaxInt32); ok {\n\t\t\tif q.empty() {\n\t\t\t\tdelete(ws.sq, streamID)\n\t\t\t\tws.queuePool.put(q)\n\t\t\t}\n\t\t\treturn wr, true\n\t\t}\n\t}\n\treturn FrameWriteRequest{}, false\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/writesched_roundrobin.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"fmt\"\n\t\"math\"\n)\n\ntype roundRobinWriteScheduler struct {\n\t// control contains control frames (SETTINGS, PING, etc.).\n\tcontrol writeQueue\n\n\t// streams maps stream ID to a queue.\n\tstreams map[uint32]*writeQueue\n\n\t// stream queues are stored in a circular linked list.\n\t// head is the next stream to write, or nil if there are no streams open.\n\thead *writeQueue\n\n\t// pool of empty queues for reuse.\n\tqueuePool writeQueuePool\n}\n\n// newRoundRobinWriteScheduler constructs a new write scheduler.\n// The round robin scheduler prioritizes control frames\n// like SETTINGS and PING over DATA frames.\n// When there are no control frames to send, it performs a round-robin\n// selection from the ready streams.\nfunc newRoundRobinWriteScheduler() WriteScheduler {\n\tws := &roundRobinWriteScheduler{\n\t\tstreams: make(map[uint32]*writeQueue),\n\t}\n\treturn ws\n}\n\nfunc (ws *roundRobinWriteScheduler) OpenStream(streamID uint32, options OpenStreamOptions) {\n\tif ws.streams[streamID] != nil {\n\t\tpanic(fmt.Errorf(\"stream %d already opened\", streamID))\n\t}\n\tq := ws.queuePool.get()\n\tws.streams[streamID] = q\n\tif ws.head == nil {\n\t\tws.head = q\n\t\tq.next = q\n\t\tq.prev = q\n\t} else {\n\t\t// Queues are stored in a ring.\n\t\t// Insert the new stream before ws.head, putting it at the end of the list.\n\t\tq.prev = ws.head.prev\n\t\tq.next = ws.head\n\t\tq.prev.next = q\n\t\tq.next.prev = q\n\t}\n}\n\nfunc (ws *roundRobinWriteScheduler) CloseStream(streamID uint32) {\n\tq := ws.streams[streamID]\n\tif q == nil {\n\t\treturn\n\t}\n\tif q.next == q {\n\t\t// This was the only open stream.\n\t\tws.head = nil\n\t} else {\n\t\tq.prev.next = q.next\n\t\tq.next.prev = q.prev\n\t\tif ws.head == q {\n\t\t\tws.head = q.next\n\t\t}\n\t}\n\tdelete(ws.streams, streamID)\n\tws.queuePool.put(q)\n}\n\nfunc (ws *roundRobinWriteScheduler) AdjustStream(streamID uint32, priority PriorityParam) {}\n\nfunc (ws *roundRobinWriteScheduler) Push(wr FrameWriteRequest) {\n\tif wr.isControl() {\n\t\tws.control.push(wr)\n\t\treturn\n\t}\n\tq := ws.streams[wr.StreamID()]\n\tif q == nil {\n\t\t// This is a closed stream.\n\t\t// wr should not be a HEADERS or DATA frame.\n\t\t// We push the request onto the control queue.\n\t\tif wr.DataSize() > 0 {\n\t\t\tpanic(\"add DATA on non-open stream\")\n\t\t}\n\t\tws.control.push(wr)\n\t\treturn\n\t}\n\tq.push(wr)\n}\n\nfunc (ws *roundRobinWriteScheduler) Pop() (FrameWriteRequest, bool) {\n\t// Control and RST_STREAM frames first.\n\tif !ws.control.empty() {\n\t\treturn ws.control.shift(), true\n\t}\n\tif ws.head == nil {\n\t\treturn FrameWriteRequest{}, false\n\t}\n\tq := ws.head\n\tfor {\n\t\tif wr, ok := q.consume(math.MaxInt32); ok {\n\t\t\tws.head = q.next\n\t\t\treturn wr, true\n\t\t}\n\t\tq = q.next\n\t\tif q == ws.head {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn FrameWriteRequest{}, false\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/go118.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.18\n\npackage idna\n\n// Transitional processing is disabled by default in Go 1.18.\n// https://golang.org/issue/47510\nconst transitionalLookup = false\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/idna10.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.10\n\n// Package idna implements IDNA2008 using the compatibility processing\n// defined by UTS (Unicode Technical Standard) #46, which defines a standard to\n// deal with the transition from IDNA2003.\n//\n// IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC\n// 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894.\n// UTS #46 is defined in https://www.unicode.org/reports/tr46.\n// See https://unicode.org/cldr/utility/idna.jsp for a visualization of the\n// differences between these two standards.\npackage idna // import \"golang.org/x/net/idna\"\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/secure/bidirule\"\n\t\"golang.org/x/text/unicode/bidi\"\n\t\"golang.org/x/text/unicode/norm\"\n)\n\n// NOTE: Unlike common practice in Go APIs, the functions will return a\n// sanitized domain name in case of errors. Browsers sometimes use a partially\n// evaluated string as lookup.\n// TODO: the current error handling is, in my opinion, the least opinionated.\n// Other strategies are also viable, though:\n// Option 1) Return an empty string in case of error, but allow the user to\n//    specify explicitly which errors to ignore.\n// Option 2) Return the partially evaluated string if it is itself a valid\n//    string, otherwise return the empty string in case of error.\n// Option 3) Option 1 and 2.\n// Option 4) Always return an empty string for now and implement Option 1 as\n//    needed, and document that the return string may not be empty in case of\n//    error in the future.\n// I think Option 1 is best, but it is quite opinionated.\n\n// ToASCII is a wrapper for Punycode.ToASCII.\nfunc ToASCII(s string) (string, error) {\n\treturn Punycode.process(s, true)\n}\n\n// ToUnicode is a wrapper for Punycode.ToUnicode.\nfunc ToUnicode(s string) (string, error) {\n\treturn Punycode.process(s, false)\n}\n\n// An Option configures a Profile at creation time.\ntype Option func(*options)\n\n// Transitional sets a Profile to use the Transitional mapping as defined in UTS\n// #46. This will cause, for example, \"ß\" to be mapped to \"ss\". Using the\n// transitional mapping provides a compromise between IDNA2003 and IDNA2008\n// compatibility. It is used by some browsers when resolving domain names. This\n// option is only meaningful if combined with MapForLookup.\nfunc Transitional(transitional bool) Option {\n\treturn func(o *options) { o.transitional = transitional }\n}\n\n// VerifyDNSLength sets whether a Profile should fail if any of the IDN parts\n// are longer than allowed by the RFC.\n//\n// This option corresponds to the VerifyDnsLength flag in UTS #46.\nfunc VerifyDNSLength(verify bool) Option {\n\treturn func(o *options) { o.verifyDNSLength = verify }\n}\n\n// RemoveLeadingDots removes leading label separators. Leading runes that map to\n// dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well.\nfunc RemoveLeadingDots(remove bool) Option {\n\treturn func(o *options) { o.removeLeadingDots = remove }\n}\n\n// ValidateLabels sets whether to check the mandatory label validation criteria\n// as defined in Section 5.4 of RFC 5891. This includes testing for correct use\n// of hyphens ('-'), normalization, validity of runes, and the context rules.\n// In particular, ValidateLabels also sets the CheckHyphens and CheckJoiners flags\n// in UTS #46.\nfunc ValidateLabels(enable bool) Option {\n\treturn func(o *options) {\n\t\t// Don't override existing mappings, but set one that at least checks\n\t\t// normalization if it is not set.\n\t\tif o.mapping == nil && enable {\n\t\t\to.mapping = normalize\n\t\t}\n\t\to.trie = trie\n\t\to.checkJoiners = enable\n\t\to.checkHyphens = enable\n\t\tif enable {\n\t\t\to.fromPuny = validateFromPunycode\n\t\t} else {\n\t\t\to.fromPuny = nil\n\t\t}\n\t}\n}\n\n// CheckHyphens sets whether to check for correct use of hyphens ('-') in\n// labels. Most web browsers do not have this option set, since labels such as\n// \"r3---sn-apo3qvuoxuxbt-j5pe\" are in common use.\n//\n// This option corresponds to the CheckHyphens flag in UTS #46.\nfunc CheckHyphens(enable bool) Option {\n\treturn func(o *options) { o.checkHyphens = enable }\n}\n\n// CheckJoiners sets whether to check the ContextJ rules as defined in Appendix\n// A of RFC 5892, concerning the use of joiner runes.\n//\n// This option corresponds to the CheckJoiners flag in UTS #46.\nfunc CheckJoiners(enable bool) Option {\n\treturn func(o *options) {\n\t\to.trie = trie\n\t\to.checkJoiners = enable\n\t}\n}\n\n// StrictDomainName limits the set of permissible ASCII characters to those\n// allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the\n// hyphen). This is set by default for MapForLookup and ValidateForRegistration,\n// but is only useful if ValidateLabels is set.\n//\n// This option is useful, for instance, for browsers that allow characters\n// outside this range, for example a '_' (U+005F LOW LINE). See\n// http://www.rfc-editor.org/std/std3.txt for more details.\n//\n// This option corresponds to the UseSTD3ASCIIRules flag in UTS #46.\nfunc StrictDomainName(use bool) Option {\n\treturn func(o *options) { o.useSTD3Rules = use }\n}\n\n// NOTE: the following options pull in tables. The tables should not be linked\n// in as long as the options are not used.\n\n// BidiRule enables the Bidi rule as defined in RFC 5893. Any application\n// that relies on proper validation of labels should include this rule.\n//\n// This option corresponds to the CheckBidi flag in UTS #46.\nfunc BidiRule() Option {\n\treturn func(o *options) { o.bidirule = bidirule.ValidString }\n}\n\n// ValidateForRegistration sets validation options to verify that a given IDN is\n// properly formatted for registration as defined by Section 4 of RFC 5891.\nfunc ValidateForRegistration() Option {\n\treturn func(o *options) {\n\t\to.mapping = validateRegistration\n\t\tStrictDomainName(true)(o)\n\t\tValidateLabels(true)(o)\n\t\tVerifyDNSLength(true)(o)\n\t\tBidiRule()(o)\n\t}\n}\n\n// MapForLookup sets validation and mapping options such that a given IDN is\n// transformed for domain name lookup according to the requirements set out in\n// Section 5 of RFC 5891. The mappings follow the recommendations of RFC 5894,\n// RFC 5895 and UTS 46. It does not add the Bidi Rule. Use the BidiRule option\n// to add this check.\n//\n// The mappings include normalization and mapping case, width and other\n// compatibility mappings.\nfunc MapForLookup() Option {\n\treturn func(o *options) {\n\t\to.mapping = validateAndMap\n\t\tStrictDomainName(true)(o)\n\t\tValidateLabels(true)(o)\n\t}\n}\n\ntype options struct {\n\ttransitional      bool\n\tuseSTD3Rules      bool\n\tcheckHyphens      bool\n\tcheckJoiners      bool\n\tverifyDNSLength   bool\n\tremoveLeadingDots bool\n\n\ttrie *idnaTrie\n\n\t// fromPuny calls validation rules when converting A-labels to U-labels.\n\tfromPuny func(p *Profile, s string) error\n\n\t// mapping implements a validation and mapping step as defined in RFC 5895\n\t// or UTS 46, tailored to, for example, domain registration or lookup.\n\tmapping func(p *Profile, s string) (mapped string, isBidi bool, err error)\n\n\t// bidirule, if specified, checks whether s conforms to the Bidi Rule\n\t// defined in RFC 5893.\n\tbidirule func(s string) bool\n}\n\n// A Profile defines the configuration of an IDNA mapper.\ntype Profile struct {\n\toptions\n}\n\nfunc apply(o *options, opts []Option) {\n\tfor _, f := range opts {\n\t\tf(o)\n\t}\n}\n\n// New creates a new Profile.\n//\n// With no options, the returned Profile is the most permissive and equals the\n// Punycode Profile. Options can be passed to further restrict the Profile. The\n// MapForLookup and ValidateForRegistration options set a collection of options,\n// for lookup and registration purposes respectively, which can be tailored by\n// adding more fine-grained options, where later options override earlier\n// options.\nfunc New(o ...Option) *Profile {\n\tp := &Profile{}\n\tapply(&p.options, o)\n\treturn p\n}\n\n// ToASCII converts a domain or domain label to its ASCII form. For example,\n// ToASCII(\"bücher.example.com\") is \"xn--bcher-kva.example.com\", and\n// ToASCII(\"golang\") is \"golang\". If an error is encountered it will return\n// an error and a (partially) processed result.\nfunc (p *Profile) ToASCII(s string) (string, error) {\n\treturn p.process(s, true)\n}\n\n// ToUnicode converts a domain or domain label to its Unicode form. For example,\n// ToUnicode(\"xn--bcher-kva.example.com\") is \"bücher.example.com\", and\n// ToUnicode(\"golang\") is \"golang\". If an error is encountered it will return\n// an error and a (partially) processed result.\nfunc (p *Profile) ToUnicode(s string) (string, error) {\n\tpp := *p\n\tpp.transitional = false\n\treturn pp.process(s, false)\n}\n\n// String reports a string with a description of the profile for debugging\n// purposes. The string format may change with different versions.\nfunc (p *Profile) String() string {\n\ts := \"\"\n\tif p.transitional {\n\t\ts = \"Transitional\"\n\t} else {\n\t\ts = \"NonTransitional\"\n\t}\n\tif p.useSTD3Rules {\n\t\ts += \":UseSTD3Rules\"\n\t}\n\tif p.checkHyphens {\n\t\ts += \":CheckHyphens\"\n\t}\n\tif p.checkJoiners {\n\t\ts += \":CheckJoiners\"\n\t}\n\tif p.verifyDNSLength {\n\t\ts += \":VerifyDNSLength\"\n\t}\n\treturn s\n}\n\nvar (\n\t// Punycode is a Profile that does raw punycode processing with a minimum\n\t// of validation.\n\tPunycode *Profile = punycode\n\n\t// Lookup is the recommended profile for looking up domain names, according\n\t// to Section 5 of RFC 5891. The exact configuration of this profile may\n\t// change over time.\n\tLookup *Profile = lookup\n\n\t// Display is the recommended profile for displaying domain names.\n\t// The configuration of this profile may change over time.\n\tDisplay *Profile = display\n\n\t// Registration is the recommended profile for checking whether a given\n\t// IDN is valid for registration, according to Section 4 of RFC 5891.\n\tRegistration *Profile = registration\n\n\tpunycode = &Profile{}\n\tlookup   = &Profile{options{\n\t\ttransitional: transitionalLookup,\n\t\tuseSTD3Rules: true,\n\t\tcheckHyphens: true,\n\t\tcheckJoiners: true,\n\t\ttrie:         trie,\n\t\tfromPuny:     validateFromPunycode,\n\t\tmapping:      validateAndMap,\n\t\tbidirule:     bidirule.ValidString,\n\t}}\n\tdisplay = &Profile{options{\n\t\tuseSTD3Rules: true,\n\t\tcheckHyphens: true,\n\t\tcheckJoiners: true,\n\t\ttrie:         trie,\n\t\tfromPuny:     validateFromPunycode,\n\t\tmapping:      validateAndMap,\n\t\tbidirule:     bidirule.ValidString,\n\t}}\n\tregistration = &Profile{options{\n\t\tuseSTD3Rules:    true,\n\t\tverifyDNSLength: true,\n\t\tcheckHyphens:    true,\n\t\tcheckJoiners:    true,\n\t\ttrie:            trie,\n\t\tfromPuny:        validateFromPunycode,\n\t\tmapping:         validateRegistration,\n\t\tbidirule:        bidirule.ValidString,\n\t}}\n\n\t// TODO: profiles\n\t// Register: recommended for approving domain names: don't do any mappings\n\t// but rather reject on invalid input. Bundle or block deviation characters.\n)\n\ntype labelError struct{ label, code_ string }\n\nfunc (e labelError) code() string { return e.code_ }\nfunc (e labelError) Error() string {\n\treturn fmt.Sprintf(\"idna: invalid label %q\", e.label)\n}\n\ntype runeError rune\n\nfunc (e runeError) code() string { return \"P1\" }\nfunc (e runeError) Error() string {\n\treturn fmt.Sprintf(\"idna: disallowed rune %U\", e)\n}\n\n// process implements the algorithm described in section 4 of UTS #46,\n// see https://www.unicode.org/reports/tr46.\nfunc (p *Profile) process(s string, toASCII bool) (string, error) {\n\tvar err error\n\tvar isBidi bool\n\tif p.mapping != nil {\n\t\ts, isBidi, err = p.mapping(p, s)\n\t}\n\t// Remove leading empty labels.\n\tif p.removeLeadingDots {\n\t\tfor ; len(s) > 0 && s[0] == '.'; s = s[1:] {\n\t\t}\n\t}\n\t// TODO: allow for a quick check of the tables data.\n\t// It seems like we should only create this error on ToASCII, but the\n\t// UTS 46 conformance tests suggests we should always check this.\n\tif err == nil && p.verifyDNSLength && s == \"\" {\n\t\terr = &labelError{s, \"A4\"}\n\t}\n\tlabels := labelIter{orig: s}\n\tfor ; !labels.done(); labels.next() {\n\t\tlabel := labels.label()\n\t\tif label == \"\" {\n\t\t\t// Empty labels are not okay. The label iterator skips the last\n\t\t\t// label if it is empty.\n\t\t\tif err == nil && p.verifyDNSLength {\n\t\t\t\terr = &labelError{s, \"A4\"}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(label, acePrefix) {\n\t\t\tu, err2 := decode(label[len(acePrefix):])\n\t\t\tif err2 != nil {\n\t\t\t\tif err == nil {\n\t\t\t\t\terr = err2\n\t\t\t\t}\n\t\t\t\t// Spec says keep the old label.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tisBidi = isBidi || bidirule.DirectionString(u) != bidi.LeftToRight\n\t\t\tlabels.set(u)\n\t\t\tif err == nil && p.fromPuny != nil {\n\t\t\t\terr = p.fromPuny(p, u)\n\t\t\t}\n\t\t\tif err == nil {\n\t\t\t\t// This should be called on NonTransitional, according to the\n\t\t\t\t// spec, but that currently does not have any effect. Use the\n\t\t\t\t// original profile to preserve options.\n\t\t\t\terr = p.validateLabel(u)\n\t\t\t}\n\t\t} else if err == nil {\n\t\t\terr = p.validateLabel(label)\n\t\t}\n\t}\n\tif isBidi && p.bidirule != nil && err == nil {\n\t\tfor labels.reset(); !labels.done(); labels.next() {\n\t\t\tif !p.bidirule(labels.label()) {\n\t\t\t\terr = &labelError{s, \"B\"}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tif toASCII {\n\t\tfor labels.reset(); !labels.done(); labels.next() {\n\t\t\tlabel := labels.label()\n\t\t\tif !ascii(label) {\n\t\t\t\ta, err2 := encode(acePrefix, label)\n\t\t\t\tif err == nil {\n\t\t\t\t\terr = err2\n\t\t\t\t}\n\t\t\t\tlabel = a\n\t\t\t\tlabels.set(a)\n\t\t\t}\n\t\t\tn := len(label)\n\t\t\tif p.verifyDNSLength && err == nil && (n == 0 || n > 63) {\n\t\t\t\terr = &labelError{label, \"A4\"}\n\t\t\t}\n\t\t}\n\t}\n\ts = labels.result()\n\tif toASCII && p.verifyDNSLength && err == nil {\n\t\t// Compute the length of the domain name minus the root label and its dot.\n\t\tn := len(s)\n\t\tif n > 0 && s[n-1] == '.' {\n\t\t\tn--\n\t\t}\n\t\tif len(s) < 1 || n > 253 {\n\t\t\terr = &labelError{s, \"A4\"}\n\t\t}\n\t}\n\treturn s, err\n}\n\nfunc normalize(p *Profile, s string) (mapped string, isBidi bool, err error) {\n\t// TODO: consider first doing a quick check to see if any of these checks\n\t// need to be done. This will make it slower in the general case, but\n\t// faster in the common case.\n\tmapped = norm.NFC.String(s)\n\tisBidi = bidirule.DirectionString(mapped) == bidi.RightToLeft\n\treturn mapped, isBidi, nil\n}\n\nfunc validateRegistration(p *Profile, s string) (idem string, bidi bool, err error) {\n\t// TODO: filter need for normalization in loop below.\n\tif !norm.NFC.IsNormalString(s) {\n\t\treturn s, false, &labelError{s, \"V1\"}\n\t}\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\tif sz == 0 {\n\t\t\treturn s, bidi, runeError(utf8.RuneError)\n\t\t}\n\t\tbidi = bidi || info(v).isBidi(s[i:])\n\t\t// Copy bytes not copied so far.\n\t\tswitch p.simplify(info(v).category()) {\n\t\t// TODO: handle the NV8 defined in the Unicode idna data set to allow\n\t\t// for strict conformance to IDNA2008.\n\t\tcase valid, deviation:\n\t\tcase disallowed, mapped, unknown, ignored:\n\t\t\tr, _ := utf8.DecodeRuneInString(s[i:])\n\t\t\treturn s, bidi, runeError(r)\n\t\t}\n\t\ti += sz\n\t}\n\treturn s, bidi, nil\n}\n\nfunc (c info) isBidi(s string) bool {\n\tif !c.isMapped() {\n\t\treturn c&attributesMask == rtl\n\t}\n\t// TODO: also store bidi info for mapped data. This is possible, but a bit\n\t// cumbersome and not for the common case.\n\tp, _ := bidi.LookupString(s)\n\tswitch p.Class() {\n\tcase bidi.R, bidi.AL, bidi.AN:\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc validateAndMap(p *Profile, s string) (vm string, bidi bool, err error) {\n\tvar (\n\t\tb []byte\n\t\tk int\n\t)\n\t// combinedInfoBits contains the or-ed bits of all runes. We use this\n\t// to derive the mayNeedNorm bit later. This may trigger normalization\n\t// overeagerly, but it will not do so in the common case. The end result\n\t// is another 10% saving on BenchmarkProfile for the common case.\n\tvar combinedInfoBits info\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\tif sz == 0 {\n\t\t\tb = append(b, s[k:i]...)\n\t\t\tb = append(b, \"\\ufffd\"...)\n\t\t\tk = len(s)\n\t\t\tif err == nil {\n\t\t\t\terr = runeError(utf8.RuneError)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tcombinedInfoBits |= info(v)\n\t\tbidi = bidi || info(v).isBidi(s[i:])\n\t\tstart := i\n\t\ti += sz\n\t\t// Copy bytes not copied so far.\n\t\tswitch p.simplify(info(v).category()) {\n\t\tcase valid:\n\t\t\tcontinue\n\t\tcase disallowed:\n\t\t\tif err == nil {\n\t\t\t\tr, _ := utf8.DecodeRuneInString(s[start:])\n\t\t\t\terr = runeError(r)\n\t\t\t}\n\t\t\tcontinue\n\t\tcase mapped, deviation:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\tb = info(v).appendMapping(b, s[start:i])\n\t\tcase ignored:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\t// drop the rune\n\t\tcase unknown:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\tb = append(b, \"\\ufffd\"...)\n\t\t}\n\t\tk = i\n\t}\n\tif k == 0 {\n\t\t// No changes so far.\n\t\tif combinedInfoBits&mayNeedNorm != 0 {\n\t\t\ts = norm.NFC.String(s)\n\t\t}\n\t} else {\n\t\tb = append(b, s[k:]...)\n\t\tif norm.NFC.QuickSpan(b) != len(b) {\n\t\t\tb = norm.NFC.Bytes(b)\n\t\t}\n\t\t// TODO: the punycode converters require strings as input.\n\t\ts = string(b)\n\t}\n\treturn s, bidi, err\n}\n\n// A labelIter allows iterating over domain name labels.\ntype labelIter struct {\n\torig     string\n\tslice    []string\n\tcurStart int\n\tcurEnd   int\n\ti        int\n}\n\nfunc (l *labelIter) reset() {\n\tl.curStart = 0\n\tl.curEnd = 0\n\tl.i = 0\n}\n\nfunc (l *labelIter) done() bool {\n\treturn l.curStart >= len(l.orig)\n}\n\nfunc (l *labelIter) result() string {\n\tif l.slice != nil {\n\t\treturn strings.Join(l.slice, \".\")\n\t}\n\treturn l.orig\n}\n\nfunc (l *labelIter) label() string {\n\tif l.slice != nil {\n\t\treturn l.slice[l.i]\n\t}\n\tp := strings.IndexByte(l.orig[l.curStart:], '.')\n\tl.curEnd = l.curStart + p\n\tif p == -1 {\n\t\tl.curEnd = len(l.orig)\n\t}\n\treturn l.orig[l.curStart:l.curEnd]\n}\n\n// next sets the value to the next label. It skips the last label if it is empty.\nfunc (l *labelIter) next() {\n\tl.i++\n\tif l.slice != nil {\n\t\tif l.i >= len(l.slice) || l.i == len(l.slice)-1 && l.slice[l.i] == \"\" {\n\t\t\tl.curStart = len(l.orig)\n\t\t}\n\t} else {\n\t\tl.curStart = l.curEnd + 1\n\t\tif l.curStart == len(l.orig)-1 && l.orig[l.curStart] == '.' {\n\t\t\tl.curStart = len(l.orig)\n\t\t}\n\t}\n}\n\nfunc (l *labelIter) set(s string) {\n\tif l.slice == nil {\n\t\tl.slice = strings.Split(l.orig, \".\")\n\t}\n\tl.slice[l.i] = s\n}\n\n// acePrefix is the ASCII Compatible Encoding prefix.\nconst acePrefix = \"xn--\"\n\nfunc (p *Profile) simplify(cat category) category {\n\tswitch cat {\n\tcase disallowedSTD3Mapped:\n\t\tif p.useSTD3Rules {\n\t\t\tcat = disallowed\n\t\t} else {\n\t\t\tcat = mapped\n\t\t}\n\tcase disallowedSTD3Valid:\n\t\tif p.useSTD3Rules {\n\t\t\tcat = disallowed\n\t\t} else {\n\t\t\tcat = valid\n\t\t}\n\tcase deviation:\n\t\tif !p.transitional {\n\t\t\tcat = valid\n\t\t}\n\tcase validNV8, validXV8:\n\t\t// TODO: handle V2008\n\t\tcat = valid\n\t}\n\treturn cat\n}\n\nfunc validateFromPunycode(p *Profile, s string) error {\n\tif !norm.NFC.IsNormalString(s) {\n\t\treturn &labelError{s, \"V1\"}\n\t}\n\t// TODO: detect whether string may have to be normalized in the following\n\t// loop.\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\tif sz == 0 {\n\t\t\treturn runeError(utf8.RuneError)\n\t\t}\n\t\tif c := p.simplify(info(v).category()); c != valid && c != deviation {\n\t\t\treturn &labelError{s, \"V6\"}\n\t\t}\n\t\ti += sz\n\t}\n\treturn nil\n}\n\nconst (\n\tzwnj = \"\\u200c\"\n\tzwj  = \"\\u200d\"\n)\n\ntype joinState int8\n\nconst (\n\tstateStart joinState = iota\n\tstateVirama\n\tstateBefore\n\tstateBeforeVirama\n\tstateAfter\n\tstateFAIL\n)\n\nvar joinStates = [][numJoinTypes]joinState{\n\tstateStart: {\n\t\tjoiningL:   stateBefore,\n\t\tjoiningD:   stateBefore,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateVirama,\n\t},\n\tstateVirama: {\n\t\tjoiningL: stateBefore,\n\t\tjoiningD: stateBefore,\n\t},\n\tstateBefore: {\n\t\tjoiningL:   stateBefore,\n\t\tjoiningD:   stateBefore,\n\t\tjoiningT:   stateBefore,\n\t\tjoinZWNJ:   stateAfter,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateBeforeVirama,\n\t},\n\tstateBeforeVirama: {\n\t\tjoiningL: stateBefore,\n\t\tjoiningD: stateBefore,\n\t\tjoiningT: stateBefore,\n\t},\n\tstateAfter: {\n\t\tjoiningL:   stateFAIL,\n\t\tjoiningD:   stateBefore,\n\t\tjoiningT:   stateAfter,\n\t\tjoiningR:   stateStart,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateAfter, // no-op as we can't accept joiners here\n\t},\n\tstateFAIL: {\n\t\t0:          stateFAIL,\n\t\tjoiningL:   stateFAIL,\n\t\tjoiningD:   stateFAIL,\n\t\tjoiningT:   stateFAIL,\n\t\tjoiningR:   stateFAIL,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateFAIL,\n\t},\n}\n\n// validateLabel validates the criteria from Section 4.1. Item 1, 4, and 6 are\n// already implicitly satisfied by the overall implementation.\nfunc (p *Profile) validateLabel(s string) (err error) {\n\tif s == \"\" {\n\t\tif p.verifyDNSLength {\n\t\t\treturn &labelError{s, \"A4\"}\n\t\t}\n\t\treturn nil\n\t}\n\tif p.checkHyphens {\n\t\tif len(s) > 4 && s[2] == '-' && s[3] == '-' {\n\t\t\treturn &labelError{s, \"V2\"}\n\t\t}\n\t\tif s[0] == '-' || s[len(s)-1] == '-' {\n\t\t\treturn &labelError{s, \"V3\"}\n\t\t}\n\t}\n\tif !p.checkJoiners {\n\t\treturn nil\n\t}\n\ttrie := p.trie // p.checkJoiners is only set if trie is set.\n\t// TODO: merge the use of this in the trie.\n\tv, sz := trie.lookupString(s)\n\tx := info(v)\n\tif x.isModifier() {\n\t\treturn &labelError{s, \"V5\"}\n\t}\n\t// Quickly return in the absence of zero-width (non) joiners.\n\tif strings.Index(s, zwj) == -1 && strings.Index(s, zwnj) == -1 {\n\t\treturn nil\n\t}\n\tst := stateStart\n\tfor i := 0; ; {\n\t\tjt := x.joinType()\n\t\tif s[i:i+sz] == zwj {\n\t\t\tjt = joinZWJ\n\t\t} else if s[i:i+sz] == zwnj {\n\t\t\tjt = joinZWNJ\n\t\t}\n\t\tst = joinStates[st][jt]\n\t\tif x.isViramaModifier() {\n\t\t\tst = joinStates[st][joinVirama]\n\t\t}\n\t\tif i += sz; i == len(s) {\n\t\t\tbreak\n\t\t}\n\t\tv, sz = trie.lookupString(s[i:])\n\t\tx = info(v)\n\t}\n\tif st == stateFAIL || st == stateAfter {\n\t\treturn &labelError{s, \"C\"}\n\t}\n\treturn nil\n}\n\nfunc ascii(s string) bool {\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] >= utf8.RuneSelf {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/idna9.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.10\n\n// Package idna implements IDNA2008 using the compatibility processing\n// defined by UTS (Unicode Technical Standard) #46, which defines a standard to\n// deal with the transition from IDNA2003.\n//\n// IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC\n// 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894.\n// UTS #46 is defined in https://www.unicode.org/reports/tr46.\n// See https://unicode.org/cldr/utility/idna.jsp for a visualization of the\n// differences between these two standards.\npackage idna // import \"golang.org/x/net/idna\"\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/secure/bidirule\"\n\t\"golang.org/x/text/unicode/norm\"\n)\n\n// NOTE: Unlike common practice in Go APIs, the functions will return a\n// sanitized domain name in case of errors. Browsers sometimes use a partially\n// evaluated string as lookup.\n// TODO: the current error handling is, in my opinion, the least opinionated.\n// Other strategies are also viable, though:\n// Option 1) Return an empty string in case of error, but allow the user to\n//    specify explicitly which errors to ignore.\n// Option 2) Return the partially evaluated string if it is itself a valid\n//    string, otherwise return the empty string in case of error.\n// Option 3) Option 1 and 2.\n// Option 4) Always return an empty string for now and implement Option 1 as\n//    needed, and document that the return string may not be empty in case of\n//    error in the future.\n// I think Option 1 is best, but it is quite opinionated.\n\n// ToASCII is a wrapper for Punycode.ToASCII.\nfunc ToASCII(s string) (string, error) {\n\treturn Punycode.process(s, true)\n}\n\n// ToUnicode is a wrapper for Punycode.ToUnicode.\nfunc ToUnicode(s string) (string, error) {\n\treturn Punycode.process(s, false)\n}\n\n// An Option configures a Profile at creation time.\ntype Option func(*options)\n\n// Transitional sets a Profile to use the Transitional mapping as defined in UTS\n// #46. This will cause, for example, \"ß\" to be mapped to \"ss\". Using the\n// transitional mapping provides a compromise between IDNA2003 and IDNA2008\n// compatibility. It is used by some browsers when resolving domain names. This\n// option is only meaningful if combined with MapForLookup.\nfunc Transitional(transitional bool) Option {\n\treturn func(o *options) { o.transitional = transitional }\n}\n\n// VerifyDNSLength sets whether a Profile should fail if any of the IDN parts\n// are longer than allowed by the RFC.\n//\n// This option corresponds to the VerifyDnsLength flag in UTS #46.\nfunc VerifyDNSLength(verify bool) Option {\n\treturn func(o *options) { o.verifyDNSLength = verify }\n}\n\n// RemoveLeadingDots removes leading label separators. Leading runes that map to\n// dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well.\nfunc RemoveLeadingDots(remove bool) Option {\n\treturn func(o *options) { o.removeLeadingDots = remove }\n}\n\n// ValidateLabels sets whether to check the mandatory label validation criteria\n// as defined in Section 5.4 of RFC 5891. This includes testing for correct use\n// of hyphens ('-'), normalization, validity of runes, and the context rules.\n// In particular, ValidateLabels also sets the CheckHyphens and CheckJoiners flags\n// in UTS #46.\nfunc ValidateLabels(enable bool) Option {\n\treturn func(o *options) {\n\t\t// Don't override existing mappings, but set one that at least checks\n\t\t// normalization if it is not set.\n\t\tif o.mapping == nil && enable {\n\t\t\to.mapping = normalize\n\t\t}\n\t\to.trie = trie\n\t\to.checkJoiners = enable\n\t\to.checkHyphens = enable\n\t\tif enable {\n\t\t\to.fromPuny = validateFromPunycode\n\t\t} else {\n\t\t\to.fromPuny = nil\n\t\t}\n\t}\n}\n\n// CheckHyphens sets whether to check for correct use of hyphens ('-') in\n// labels. Most web browsers do not have this option set, since labels such as\n// \"r3---sn-apo3qvuoxuxbt-j5pe\" are in common use.\n//\n// This option corresponds to the CheckHyphens flag in UTS #46.\nfunc CheckHyphens(enable bool) Option {\n\treturn func(o *options) { o.checkHyphens = enable }\n}\n\n// CheckJoiners sets whether to check the ContextJ rules as defined in Appendix\n// A of RFC 5892, concerning the use of joiner runes.\n//\n// This option corresponds to the CheckJoiners flag in UTS #46.\nfunc CheckJoiners(enable bool) Option {\n\treturn func(o *options) {\n\t\to.trie = trie\n\t\to.checkJoiners = enable\n\t}\n}\n\n// StrictDomainName limits the set of permissible ASCII characters to those\n// allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the\n// hyphen). This is set by default for MapForLookup and ValidateForRegistration,\n// but is only useful if ValidateLabels is set.\n//\n// This option is useful, for instance, for browsers that allow characters\n// outside this range, for example a '_' (U+005F LOW LINE). See\n// http://www.rfc-editor.org/std/std3.txt for more details.\n//\n// This option corresponds to the UseSTD3ASCIIRules flag in UTS #46.\nfunc StrictDomainName(use bool) Option {\n\treturn func(o *options) { o.useSTD3Rules = use }\n}\n\n// NOTE: the following options pull in tables. The tables should not be linked\n// in as long as the options are not used.\n\n// BidiRule enables the Bidi rule as defined in RFC 5893. Any application\n// that relies on proper validation of labels should include this rule.\n//\n// This option corresponds to the CheckBidi flag in UTS #46.\nfunc BidiRule() Option {\n\treturn func(o *options) { o.bidirule = bidirule.ValidString }\n}\n\n// ValidateForRegistration sets validation options to verify that a given IDN is\n// properly formatted for registration as defined by Section 4 of RFC 5891.\nfunc ValidateForRegistration() Option {\n\treturn func(o *options) {\n\t\to.mapping = validateRegistration\n\t\tStrictDomainName(true)(o)\n\t\tValidateLabels(true)(o)\n\t\tVerifyDNSLength(true)(o)\n\t\tBidiRule()(o)\n\t}\n}\n\n// MapForLookup sets validation and mapping options such that a given IDN is\n// transformed for domain name lookup according to the requirements set out in\n// Section 5 of RFC 5891. The mappings follow the recommendations of RFC 5894,\n// RFC 5895 and UTS 46. It does not add the Bidi Rule. Use the BidiRule option\n// to add this check.\n//\n// The mappings include normalization and mapping case, width and other\n// compatibility mappings.\nfunc MapForLookup() Option {\n\treturn func(o *options) {\n\t\to.mapping = validateAndMap\n\t\tStrictDomainName(true)(o)\n\t\tValidateLabels(true)(o)\n\t\tRemoveLeadingDots(true)(o)\n\t}\n}\n\ntype options struct {\n\ttransitional      bool\n\tuseSTD3Rules      bool\n\tcheckHyphens      bool\n\tcheckJoiners      bool\n\tverifyDNSLength   bool\n\tremoveLeadingDots bool\n\n\ttrie *idnaTrie\n\n\t// fromPuny calls validation rules when converting A-labels to U-labels.\n\tfromPuny func(p *Profile, s string) error\n\n\t// mapping implements a validation and mapping step as defined in RFC 5895\n\t// or UTS 46, tailored to, for example, domain registration or lookup.\n\tmapping func(p *Profile, s string) (string, error)\n\n\t// bidirule, if specified, checks whether s conforms to the Bidi Rule\n\t// defined in RFC 5893.\n\tbidirule func(s string) bool\n}\n\n// A Profile defines the configuration of a IDNA mapper.\ntype Profile struct {\n\toptions\n}\n\nfunc apply(o *options, opts []Option) {\n\tfor _, f := range opts {\n\t\tf(o)\n\t}\n}\n\n// New creates a new Profile.\n//\n// With no options, the returned Profile is the most permissive and equals the\n// Punycode Profile. Options can be passed to further restrict the Profile. The\n// MapForLookup and ValidateForRegistration options set a collection of options,\n// for lookup and registration purposes respectively, which can be tailored by\n// adding more fine-grained options, where later options override earlier\n// options.\nfunc New(o ...Option) *Profile {\n\tp := &Profile{}\n\tapply(&p.options, o)\n\treturn p\n}\n\n// ToASCII converts a domain or domain label to its ASCII form. For example,\n// ToASCII(\"bücher.example.com\") is \"xn--bcher-kva.example.com\", and\n// ToASCII(\"golang\") is \"golang\". If an error is encountered it will return\n// an error and a (partially) processed result.\nfunc (p *Profile) ToASCII(s string) (string, error) {\n\treturn p.process(s, true)\n}\n\n// ToUnicode converts a domain or domain label to its Unicode form. For example,\n// ToUnicode(\"xn--bcher-kva.example.com\") is \"bücher.example.com\", and\n// ToUnicode(\"golang\") is \"golang\". If an error is encountered it will return\n// an error and a (partially) processed result.\nfunc (p *Profile) ToUnicode(s string) (string, error) {\n\tpp := *p\n\tpp.transitional = false\n\treturn pp.process(s, false)\n}\n\n// String reports a string with a description of the profile for debugging\n// purposes. The string format may change with different versions.\nfunc (p *Profile) String() string {\n\ts := \"\"\n\tif p.transitional {\n\t\ts = \"Transitional\"\n\t} else {\n\t\ts = \"NonTransitional\"\n\t}\n\tif p.useSTD3Rules {\n\t\ts += \":UseSTD3Rules\"\n\t}\n\tif p.checkHyphens {\n\t\ts += \":CheckHyphens\"\n\t}\n\tif p.checkJoiners {\n\t\ts += \":CheckJoiners\"\n\t}\n\tif p.verifyDNSLength {\n\t\ts += \":VerifyDNSLength\"\n\t}\n\treturn s\n}\n\nvar (\n\t// Punycode is a Profile that does raw punycode processing with a minimum\n\t// of validation.\n\tPunycode *Profile = punycode\n\n\t// Lookup is the recommended profile for looking up domain names, according\n\t// to Section 5 of RFC 5891. The exact configuration of this profile may\n\t// change over time.\n\tLookup *Profile = lookup\n\n\t// Display is the recommended profile for displaying domain names.\n\t// The configuration of this profile may change over time.\n\tDisplay *Profile = display\n\n\t// Registration is the recommended profile for checking whether a given\n\t// IDN is valid for registration, according to Section 4 of RFC 5891.\n\tRegistration *Profile = registration\n\n\tpunycode = &Profile{}\n\tlookup   = &Profile{options{\n\t\ttransitional:      true,\n\t\tremoveLeadingDots: true,\n\t\tuseSTD3Rules:      true,\n\t\tcheckHyphens:      true,\n\t\tcheckJoiners:      true,\n\t\ttrie:              trie,\n\t\tfromPuny:          validateFromPunycode,\n\t\tmapping:           validateAndMap,\n\t\tbidirule:          bidirule.ValidString,\n\t}}\n\tdisplay = &Profile{options{\n\t\tuseSTD3Rules:      true,\n\t\tremoveLeadingDots: true,\n\t\tcheckHyphens:      true,\n\t\tcheckJoiners:      true,\n\t\ttrie:              trie,\n\t\tfromPuny:          validateFromPunycode,\n\t\tmapping:           validateAndMap,\n\t\tbidirule:          bidirule.ValidString,\n\t}}\n\tregistration = &Profile{options{\n\t\tuseSTD3Rules:    true,\n\t\tverifyDNSLength: true,\n\t\tcheckHyphens:    true,\n\t\tcheckJoiners:    true,\n\t\ttrie:            trie,\n\t\tfromPuny:        validateFromPunycode,\n\t\tmapping:         validateRegistration,\n\t\tbidirule:        bidirule.ValidString,\n\t}}\n\n\t// TODO: profiles\n\t// Register: recommended for approving domain names: don't do any mappings\n\t// but rather reject on invalid input. Bundle or block deviation characters.\n)\n\ntype labelError struct{ label, code_ string }\n\nfunc (e labelError) code() string { return e.code_ }\nfunc (e labelError) Error() string {\n\treturn fmt.Sprintf(\"idna: invalid label %q\", e.label)\n}\n\ntype runeError rune\n\nfunc (e runeError) code() string { return \"P1\" }\nfunc (e runeError) Error() string {\n\treturn fmt.Sprintf(\"idna: disallowed rune %U\", e)\n}\n\n// process implements the algorithm described in section 4 of UTS #46,\n// see https://www.unicode.org/reports/tr46.\nfunc (p *Profile) process(s string, toASCII bool) (string, error) {\n\tvar err error\n\tif p.mapping != nil {\n\t\ts, err = p.mapping(p, s)\n\t}\n\t// Remove leading empty labels.\n\tif p.removeLeadingDots {\n\t\tfor ; len(s) > 0 && s[0] == '.'; s = s[1:] {\n\t\t}\n\t}\n\t// It seems like we should only create this error on ToASCII, but the\n\t// UTS 46 conformance tests suggests we should always check this.\n\tif err == nil && p.verifyDNSLength && s == \"\" {\n\t\terr = &labelError{s, \"A4\"}\n\t}\n\tlabels := labelIter{orig: s}\n\tfor ; !labels.done(); labels.next() {\n\t\tlabel := labels.label()\n\t\tif label == \"\" {\n\t\t\t// Empty labels are not okay. The label iterator skips the last\n\t\t\t// label if it is empty.\n\t\t\tif err == nil && p.verifyDNSLength {\n\t\t\t\terr = &labelError{s, \"A4\"}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(label, acePrefix) {\n\t\t\tu, err2 := decode(label[len(acePrefix):])\n\t\t\tif err2 != nil {\n\t\t\t\tif err == nil {\n\t\t\t\t\terr = err2\n\t\t\t\t}\n\t\t\t\t// Spec says keep the old label.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tlabels.set(u)\n\t\t\tif err == nil && p.fromPuny != nil {\n\t\t\t\terr = p.fromPuny(p, u)\n\t\t\t}\n\t\t\tif err == nil {\n\t\t\t\t// This should be called on NonTransitional, according to the\n\t\t\t\t// spec, but that currently does not have any effect. Use the\n\t\t\t\t// original profile to preserve options.\n\t\t\t\terr = p.validateLabel(u)\n\t\t\t}\n\t\t} else if err == nil {\n\t\t\terr = p.validateLabel(label)\n\t\t}\n\t}\n\tif toASCII {\n\t\tfor labels.reset(); !labels.done(); labels.next() {\n\t\t\tlabel := labels.label()\n\t\t\tif !ascii(label) {\n\t\t\t\ta, err2 := encode(acePrefix, label)\n\t\t\t\tif err == nil {\n\t\t\t\t\terr = err2\n\t\t\t\t}\n\t\t\t\tlabel = a\n\t\t\t\tlabels.set(a)\n\t\t\t}\n\t\t\tn := len(label)\n\t\t\tif p.verifyDNSLength && err == nil && (n == 0 || n > 63) {\n\t\t\t\terr = &labelError{label, \"A4\"}\n\t\t\t}\n\t\t}\n\t}\n\ts = labels.result()\n\tif toASCII && p.verifyDNSLength && err == nil {\n\t\t// Compute the length of the domain name minus the root label and its dot.\n\t\tn := len(s)\n\t\tif n > 0 && s[n-1] == '.' {\n\t\t\tn--\n\t\t}\n\t\tif len(s) < 1 || n > 253 {\n\t\t\terr = &labelError{s, \"A4\"}\n\t\t}\n\t}\n\treturn s, err\n}\n\nfunc normalize(p *Profile, s string) (string, error) {\n\treturn norm.NFC.String(s), nil\n}\n\nfunc validateRegistration(p *Profile, s string) (string, error) {\n\tif !norm.NFC.IsNormalString(s) {\n\t\treturn s, &labelError{s, \"V1\"}\n\t}\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\t// Copy bytes not copied so far.\n\t\tswitch p.simplify(info(v).category()) {\n\t\t// TODO: handle the NV8 defined in the Unicode idna data set to allow\n\t\t// for strict conformance to IDNA2008.\n\t\tcase valid, deviation:\n\t\tcase disallowed, mapped, unknown, ignored:\n\t\t\tr, _ := utf8.DecodeRuneInString(s[i:])\n\t\t\treturn s, runeError(r)\n\t\t}\n\t\ti += sz\n\t}\n\treturn s, nil\n}\n\nfunc validateAndMap(p *Profile, s string) (string, error) {\n\tvar (\n\t\terr error\n\t\tb   []byte\n\t\tk   int\n\t)\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\tstart := i\n\t\ti += sz\n\t\t// Copy bytes not copied so far.\n\t\tswitch p.simplify(info(v).category()) {\n\t\tcase valid:\n\t\t\tcontinue\n\t\tcase disallowed:\n\t\t\tif err == nil {\n\t\t\t\tr, _ := utf8.DecodeRuneInString(s[start:])\n\t\t\t\terr = runeError(r)\n\t\t\t}\n\t\t\tcontinue\n\t\tcase mapped, deviation:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\tb = info(v).appendMapping(b, s[start:i])\n\t\tcase ignored:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\t// drop the rune\n\t\tcase unknown:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\tb = append(b, \"\\ufffd\"...)\n\t\t}\n\t\tk = i\n\t}\n\tif k == 0 {\n\t\t// No changes so far.\n\t\ts = norm.NFC.String(s)\n\t} else {\n\t\tb = append(b, s[k:]...)\n\t\tif norm.NFC.QuickSpan(b) != len(b) {\n\t\t\tb = norm.NFC.Bytes(b)\n\t\t}\n\t\t// TODO: the punycode converters require strings as input.\n\t\ts = string(b)\n\t}\n\treturn s, err\n}\n\n// A labelIter allows iterating over domain name labels.\ntype labelIter struct {\n\torig     string\n\tslice    []string\n\tcurStart int\n\tcurEnd   int\n\ti        int\n}\n\nfunc (l *labelIter) reset() {\n\tl.curStart = 0\n\tl.curEnd = 0\n\tl.i = 0\n}\n\nfunc (l *labelIter) done() bool {\n\treturn l.curStart >= len(l.orig)\n}\n\nfunc (l *labelIter) result() string {\n\tif l.slice != nil {\n\t\treturn strings.Join(l.slice, \".\")\n\t}\n\treturn l.orig\n}\n\nfunc (l *labelIter) label() string {\n\tif l.slice != nil {\n\t\treturn l.slice[l.i]\n\t}\n\tp := strings.IndexByte(l.orig[l.curStart:], '.')\n\tl.curEnd = l.curStart + p\n\tif p == -1 {\n\t\tl.curEnd = len(l.orig)\n\t}\n\treturn l.orig[l.curStart:l.curEnd]\n}\n\n// next sets the value to the next label. It skips the last label if it is empty.\nfunc (l *labelIter) next() {\n\tl.i++\n\tif l.slice != nil {\n\t\tif l.i >= len(l.slice) || l.i == len(l.slice)-1 && l.slice[l.i] == \"\" {\n\t\t\tl.curStart = len(l.orig)\n\t\t}\n\t} else {\n\t\tl.curStart = l.curEnd + 1\n\t\tif l.curStart == len(l.orig)-1 && l.orig[l.curStart] == '.' {\n\t\t\tl.curStart = len(l.orig)\n\t\t}\n\t}\n}\n\nfunc (l *labelIter) set(s string) {\n\tif l.slice == nil {\n\t\tl.slice = strings.Split(l.orig, \".\")\n\t}\n\tl.slice[l.i] = s\n}\n\n// acePrefix is the ASCII Compatible Encoding prefix.\nconst acePrefix = \"xn--\"\n\nfunc (p *Profile) simplify(cat category) category {\n\tswitch cat {\n\tcase disallowedSTD3Mapped:\n\t\tif p.useSTD3Rules {\n\t\t\tcat = disallowed\n\t\t} else {\n\t\t\tcat = mapped\n\t\t}\n\tcase disallowedSTD3Valid:\n\t\tif p.useSTD3Rules {\n\t\t\tcat = disallowed\n\t\t} else {\n\t\t\tcat = valid\n\t\t}\n\tcase deviation:\n\t\tif !p.transitional {\n\t\t\tcat = valid\n\t\t}\n\tcase validNV8, validXV8:\n\t\t// TODO: handle V2008\n\t\tcat = valid\n\t}\n\treturn cat\n}\n\nfunc validateFromPunycode(p *Profile, s string) error {\n\tif !norm.NFC.IsNormalString(s) {\n\t\treturn &labelError{s, \"V1\"}\n\t}\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\tif c := p.simplify(info(v).category()); c != valid && c != deviation {\n\t\t\treturn &labelError{s, \"V6\"}\n\t\t}\n\t\ti += sz\n\t}\n\treturn nil\n}\n\nconst (\n\tzwnj = \"\\u200c\"\n\tzwj  = \"\\u200d\"\n)\n\ntype joinState int8\n\nconst (\n\tstateStart joinState = iota\n\tstateVirama\n\tstateBefore\n\tstateBeforeVirama\n\tstateAfter\n\tstateFAIL\n)\n\nvar joinStates = [][numJoinTypes]joinState{\n\tstateStart: {\n\t\tjoiningL:   stateBefore,\n\t\tjoiningD:   stateBefore,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateVirama,\n\t},\n\tstateVirama: {\n\t\tjoiningL: stateBefore,\n\t\tjoiningD: stateBefore,\n\t},\n\tstateBefore: {\n\t\tjoiningL:   stateBefore,\n\t\tjoiningD:   stateBefore,\n\t\tjoiningT:   stateBefore,\n\t\tjoinZWNJ:   stateAfter,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateBeforeVirama,\n\t},\n\tstateBeforeVirama: {\n\t\tjoiningL: stateBefore,\n\t\tjoiningD: stateBefore,\n\t\tjoiningT: stateBefore,\n\t},\n\tstateAfter: {\n\t\tjoiningL:   stateFAIL,\n\t\tjoiningD:   stateBefore,\n\t\tjoiningT:   stateAfter,\n\t\tjoiningR:   stateStart,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateAfter, // no-op as we can't accept joiners here\n\t},\n\tstateFAIL: {\n\t\t0:          stateFAIL,\n\t\tjoiningL:   stateFAIL,\n\t\tjoiningD:   stateFAIL,\n\t\tjoiningT:   stateFAIL,\n\t\tjoiningR:   stateFAIL,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateFAIL,\n\t},\n}\n\n// validateLabel validates the criteria from Section 4.1. Item 1, 4, and 6 are\n// already implicitly satisfied by the overall implementation.\nfunc (p *Profile) validateLabel(s string) error {\n\tif s == \"\" {\n\t\tif p.verifyDNSLength {\n\t\t\treturn &labelError{s, \"A4\"}\n\t\t}\n\t\treturn nil\n\t}\n\tif p.bidirule != nil && !p.bidirule(s) {\n\t\treturn &labelError{s, \"B\"}\n\t}\n\tif p.checkHyphens {\n\t\tif len(s) > 4 && s[2] == '-' && s[3] == '-' {\n\t\t\treturn &labelError{s, \"V2\"}\n\t\t}\n\t\tif s[0] == '-' || s[len(s)-1] == '-' {\n\t\t\treturn &labelError{s, \"V3\"}\n\t\t}\n\t}\n\tif !p.checkJoiners {\n\t\treturn nil\n\t}\n\ttrie := p.trie // p.checkJoiners is only set if trie is set.\n\t// TODO: merge the use of this in the trie.\n\tv, sz := trie.lookupString(s)\n\tx := info(v)\n\tif x.isModifier() {\n\t\treturn &labelError{s, \"V5\"}\n\t}\n\t// Quickly return in the absence of zero-width (non) joiners.\n\tif strings.Index(s, zwj) == -1 && strings.Index(s, zwnj) == -1 {\n\t\treturn nil\n\t}\n\tst := stateStart\n\tfor i := 0; ; {\n\t\tjt := x.joinType()\n\t\tif s[i:i+sz] == zwj {\n\t\t\tjt = joinZWJ\n\t\t} else if s[i:i+sz] == zwnj {\n\t\t\tjt = joinZWNJ\n\t\t}\n\t\tst = joinStates[st][jt]\n\t\tif x.isViramaModifier() {\n\t\t\tst = joinStates[st][joinVirama]\n\t\t}\n\t\tif i += sz; i == len(s) {\n\t\t\tbreak\n\t\t}\n\t\tv, sz = trie.lookupString(s[i:])\n\t\tx = info(v)\n\t}\n\tif st == stateFAIL || st == stateAfter {\n\t\treturn &labelError{s, \"C\"}\n\t}\n\treturn nil\n}\n\nfunc ascii(s string) bool {\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] >= utf8.RuneSelf {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/pre_go118.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.18\n\npackage idna\n\nconst transitionalLookup = true\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/punycode.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage idna\n\n// This file implements the Punycode algorithm from RFC 3492.\n\nimport (\n\t\"math\"\n\t\"strings\"\n\t\"unicode/utf8\"\n)\n\n// These parameter values are specified in section 5.\n//\n// All computation is done with int32s, so that overflow behavior is identical\n// regardless of whether int is 32-bit or 64-bit.\nconst (\n\tbase        int32 = 36\n\tdamp        int32 = 700\n\tinitialBias int32 = 72\n\tinitialN    int32 = 128\n\tskew        int32 = 38\n\ttmax        int32 = 26\n\ttmin        int32 = 1\n)\n\nfunc punyError(s string) error { return &labelError{s, \"A3\"} }\n\n// decode decodes a string as specified in section 6.2.\nfunc decode(encoded string) (string, error) {\n\tif encoded == \"\" {\n\t\treturn \"\", nil\n\t}\n\tpos := 1 + strings.LastIndex(encoded, \"-\")\n\tif pos == 1 {\n\t\treturn \"\", punyError(encoded)\n\t}\n\tif pos == len(encoded) {\n\t\treturn encoded[:len(encoded)-1], nil\n\t}\n\toutput := make([]rune, 0, len(encoded))\n\tif pos != 0 {\n\t\tfor _, r := range encoded[:pos-1] {\n\t\t\toutput = append(output, r)\n\t\t}\n\t}\n\ti, n, bias := int32(0), initialN, initialBias\n\toverflow := false\n\tfor pos < len(encoded) {\n\t\toldI, w := i, int32(1)\n\t\tfor k := base; ; k += base {\n\t\t\tif pos == len(encoded) {\n\t\t\t\treturn \"\", punyError(encoded)\n\t\t\t}\n\t\t\tdigit, ok := decodeDigit(encoded[pos])\n\t\t\tif !ok {\n\t\t\t\treturn \"\", punyError(encoded)\n\t\t\t}\n\t\t\tpos++\n\t\t\ti, overflow = madd(i, digit, w)\n\t\t\tif overflow {\n\t\t\t\treturn \"\", punyError(encoded)\n\t\t\t}\n\t\t\tt := k - bias\n\t\t\tif k <= bias {\n\t\t\t\tt = tmin\n\t\t\t} else if k >= bias+tmax {\n\t\t\t\tt = tmax\n\t\t\t}\n\t\t\tif digit < t {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tw, overflow = madd(0, w, base-t)\n\t\t\tif overflow {\n\t\t\t\treturn \"\", punyError(encoded)\n\t\t\t}\n\t\t}\n\t\tif len(output) >= 1024 {\n\t\t\treturn \"\", punyError(encoded)\n\t\t}\n\t\tx := int32(len(output) + 1)\n\t\tbias = adapt(i-oldI, x, oldI == 0)\n\t\tn += i / x\n\t\ti %= x\n\t\tif n < 0 || n > utf8.MaxRune {\n\t\t\treturn \"\", punyError(encoded)\n\t\t}\n\t\toutput = append(output, 0)\n\t\tcopy(output[i+1:], output[i:])\n\t\toutput[i] = n\n\t\ti++\n\t}\n\treturn string(output), nil\n}\n\n// encode encodes a string as specified in section 6.3 and prepends prefix to\n// the result.\n//\n// The \"while h < length(input)\" line in the specification becomes \"for\n// remaining != 0\" in the Go code, because len(s) in Go is in bytes, not runes.\nfunc encode(prefix, s string) (string, error) {\n\toutput := make([]byte, len(prefix), len(prefix)+1+2*len(s))\n\tcopy(output, prefix)\n\tdelta, n, bias := int32(0), initialN, initialBias\n\tb, remaining := int32(0), int32(0)\n\tfor _, r := range s {\n\t\tif r < 0x80 {\n\t\t\tb++\n\t\t\toutput = append(output, byte(r))\n\t\t} else {\n\t\t\tremaining++\n\t\t}\n\t}\n\th := b\n\tif b > 0 {\n\t\toutput = append(output, '-')\n\t}\n\toverflow := false\n\tfor remaining != 0 {\n\t\tm := int32(0x7fffffff)\n\t\tfor _, r := range s {\n\t\t\tif m > r && r >= n {\n\t\t\t\tm = r\n\t\t\t}\n\t\t}\n\t\tdelta, overflow = madd(delta, m-n, h+1)\n\t\tif overflow {\n\t\t\treturn \"\", punyError(s)\n\t\t}\n\t\tn = m\n\t\tfor _, r := range s {\n\t\t\tif r < n {\n\t\t\t\tdelta++\n\t\t\t\tif delta < 0 {\n\t\t\t\t\treturn \"\", punyError(s)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif r > n {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tq := delta\n\t\t\tfor k := base; ; k += base {\n\t\t\t\tt := k - bias\n\t\t\t\tif k <= bias {\n\t\t\t\t\tt = tmin\n\t\t\t\t} else if k >= bias+tmax {\n\t\t\t\t\tt = tmax\n\t\t\t\t}\n\t\t\t\tif q < t {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\toutput = append(output, encodeDigit(t+(q-t)%(base-t)))\n\t\t\t\tq = (q - t) / (base - t)\n\t\t\t}\n\t\t\toutput = append(output, encodeDigit(q))\n\t\t\tbias = adapt(delta, h+1, h == b)\n\t\t\tdelta = 0\n\t\t\th++\n\t\t\tremaining--\n\t\t}\n\t\tdelta++\n\t\tn++\n\t}\n\treturn string(output), nil\n}\n\n// madd computes a + (b * c), detecting overflow.\nfunc madd(a, b, c int32) (next int32, overflow bool) {\n\tp := int64(b) * int64(c)\n\tif p > math.MaxInt32-int64(a) {\n\t\treturn 0, true\n\t}\n\treturn a + int32(p), false\n}\n\nfunc decodeDigit(x byte) (digit int32, ok bool) {\n\tswitch {\n\tcase '0' <= x && x <= '9':\n\t\treturn int32(x - ('0' - 26)), true\n\tcase 'A' <= x && x <= 'Z':\n\t\treturn int32(x - 'A'), true\n\tcase 'a' <= x && x <= 'z':\n\t\treturn int32(x - 'a'), true\n\t}\n\treturn 0, false\n}\n\nfunc encodeDigit(digit int32) byte {\n\tswitch {\n\tcase 0 <= digit && digit < 26:\n\t\treturn byte(digit + 'a')\n\tcase 26 <= digit && digit < 36:\n\t\treturn byte(digit + ('0' - 26))\n\t}\n\tpanic(\"idna: internal error in punycode encoding\")\n}\n\n// adapt is the bias adaptation function specified in section 6.1.\nfunc adapt(delta, numPoints int32, firstTime bool) int32 {\n\tif firstTime {\n\t\tdelta /= damp\n\t} else {\n\t\tdelta /= 2\n\t}\n\tdelta += delta / numPoints\n\tk := int32(0)\n\tfor delta > ((base-tmin)*tmax)/2 {\n\t\tdelta /= base - tmin\n\t\tk += base\n\t}\n\treturn k + (base-tmin+1)*delta/(delta+skew)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/tables10.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.10 && !go1.13\n\npackage idna\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"10.0.0\"\n\nvar mappings string = \"\" + // Size: 8175 bytes\n\t\"\\x00\\x01 \\x03 ̈\\x01a\\x03 ̄\\x012\\x013\\x03 ́\\x03 ̧\\x011\\x01o\\x051⁄4\\x051⁄2\" +\n\t\"\\x053⁄4\\x03i̇\\x03l·\\x03ʼn\\x01s\\x03dž\\x03ⱥ\\x03ⱦ\\x01h\\x01j\\x01r\\x01w\\x01y\" +\n\t\"\\x03 ̆\\x03 ̇\\x03 ̊\\x03 ̨\\x03 ̃\\x03 ̋\\x01l\\x01x\\x04̈́\\x03 ι\\x01;\\x05 ̈́\" +\n\t\"\\x04եւ\\x04اٴ\\x04وٴ\\x04ۇٴ\\x04يٴ\\x06क़\\x06ख़\\x06ग़\\x06ज़\\x06ड़\\x06ढ़\\x06फ़\" +\n\t\"\\x06य़\\x06ড়\\x06ঢ়\\x06য়\\x06ਲ਼\\x06ਸ਼\\x06ਖ਼\\x06ਗ਼\\x06ਜ਼\\x06ਫ਼\\x06ଡ଼\\x06ଢ଼\" +\n\t\"\\x06ํา\\x06ໍາ\\x06ຫນ\\x06ຫມ\\x06གྷ\\x06ཌྷ\\x06དྷ\\x06བྷ\\x06ཛྷ\\x06ཀྵ\\x06ཱི\\x06ཱུ\" +\n\t\"\\x06ྲྀ\\x09ྲཱྀ\\x06ླྀ\\x09ླཱྀ\\x06ཱྀ\\x06ྒྷ\\x06ྜྷ\\x06ྡྷ\\x06ྦྷ\\x06ྫྷ\\x06ྐྵ\\x02\" +\n\t\"в\\x02д\\x02о\\x02с\\x02т\\x02ъ\\x02ѣ\\x02æ\\x01b\\x01d\\x01e\\x02ǝ\\x01g\\x01i\\x01k\" +\n\t\"\\x01m\\x01n\\x02ȣ\\x01p\\x01t\\x01u\\x02ɐ\\x02ɑ\\x02ə\\x02ɛ\\x02ɜ\\x02ŋ\\x02ɔ\\x02ɯ\" +\n\t\"\\x01v\\x02β\\x02γ\\x02δ\\x02φ\\x02χ\\x02ρ\\x02н\\x02ɒ\\x01c\\x02ɕ\\x02ð\\x01f\\x02ɟ\" +\n\t\"\\x02ɡ\\x02ɥ\\x02ɨ\\x02ɩ\\x02ɪ\\x02ʝ\\x02ɭ\\x02ʟ\\x02ɱ\\x02ɰ\\x02ɲ\\x02ɳ\\x02ɴ\\x02ɵ\" +\n\t\"\\x02ɸ\\x02ʂ\\x02ʃ\\x02ƫ\\x02ʉ\\x02ʊ\\x02ʋ\\x02ʌ\\x01z\\x02ʐ\\x02ʑ\\x02ʒ\\x02θ\\x02ss\" +\n\t\"\\x02ά\\x02έ\\x02ή\\x02ί\\x02ό\\x02ύ\\x02ώ\\x05ἀι\\x05ἁι\\x05ἂι\\x05ἃι\\x05ἄι\\x05ἅι\" +\n\t\"\\x05ἆι\\x05ἇι\\x05ἠι\\x05ἡι\\x05ἢι\\x05ἣι\\x05ἤι\\x05ἥι\\x05ἦι\\x05ἧι\\x05ὠι\\x05ὡι\" +\n\t\"\\x05ὢι\\x05ὣι\\x05ὤι\\x05ὥι\\x05ὦι\\x05ὧι\\x05ὰι\\x04αι\\x04άι\\x05ᾶι\\x02ι\\x05 ̈͂\" +\n\t\"\\x05ὴι\\x04ηι\\x04ήι\\x05ῆι\\x05 ̓̀\\x05 ̓́\\x05 ̓͂\\x02ΐ\\x05 ̔̀\\x05 ̔́\\x05 ̔͂\" +\n\t\"\\x02ΰ\\x05 ̈̀\\x01`\\x05ὼι\\x04ωι\\x04ώι\\x05ῶι\\x06′′\\x09′′′\\x06‵‵\\x09‵‵‵\\x02!\" +\n\t\"!\\x02??\\x02?!\\x02!?\\x0c′′′′\\x010\\x014\\x015\\x016\\x017\\x018\\x019\\x01+\\x01=\" +\n\t\"\\x01(\\x01)\\x02rs\\x02ħ\\x02no\\x01q\\x02sm\\x02tm\\x02ω\\x02å\\x02א\\x02ב\\x02ג\" +\n\t\"\\x02ד\\x02π\\x051⁄7\\x051⁄9\\x061⁄10\\x051⁄3\\x052⁄3\\x051⁄5\\x052⁄5\\x053⁄5\\x054\" +\n\t\"⁄5\\x051⁄6\\x055⁄6\\x051⁄8\\x053⁄8\\x055⁄8\\x057⁄8\\x041⁄\\x02ii\\x02iv\\x02vi\" +\n\t\"\\x04viii\\x02ix\\x02xi\\x050⁄3\\x06∫∫\\x09∫∫∫\\x06∮∮\\x09∮∮∮\\x0210\\x0211\\x0212\" +\n\t\"\\x0213\\x0214\\x0215\\x0216\\x0217\\x0218\\x0219\\x0220\\x04(10)\\x04(11)\\x04(12)\" +\n\t\"\\x04(13)\\x04(14)\\x04(15)\\x04(16)\\x04(17)\\x04(18)\\x04(19)\\x04(20)\\x0c∫∫∫∫\" +\n\t\"\\x02==\\x05⫝̸\\x02ɫ\\x02ɽ\\x02ȿ\\x02ɀ\\x01.\\x04 ゙\\x04 ゚\\x06より\\x06コト\\x05(ᄀ)\\x05\" +\n\t\"(ᄂ)\\x05(ᄃ)\\x05(ᄅ)\\x05(ᄆ)\\x05(ᄇ)\\x05(ᄉ)\\x05(ᄋ)\\x05(ᄌ)\\x05(ᄎ)\\x05(ᄏ)\\x05(ᄐ\" +\n\t\")\\x05(ᄑ)\\x05(ᄒ)\\x05(가)\\x05(나)\\x05(다)\\x05(라)\\x05(마)\\x05(바)\\x05(사)\\x05(아)\" +\n\t\"\\x05(자)\\x05(차)\\x05(카)\\x05(타)\\x05(파)\\x05(하)\\x05(주)\\x08(오전)\\x08(오후)\\x05(一)\" +\n\t\"\\x05(二)\\x05(三)\\x05(四)\\x05(五)\\x05(六)\\x05(七)\\x05(八)\\x05(九)\\x05(十)\\x05(月)\" +\n\t\"\\x05(火)\\x05(水)\\x05(木)\\x05(金)\\x05(土)\\x05(日)\\x05(株)\\x05(有)\\x05(社)\\x05(名)\" +\n\t\"\\x05(特)\\x05(財)\\x05(祝)\\x05(労)\\x05(代)\\x05(呼)\\x05(学)\\x05(監)\\x05(企)\\x05(資)\" +\n\t\"\\x05(協)\\x05(祭)\\x05(休)\\x05(自)\\x05(至)\\x0221\\x0222\\x0223\\x0224\\x0225\\x0226\" +\n\t\"\\x0227\\x0228\\x0229\\x0230\\x0231\\x0232\\x0233\\x0234\\x0235\\x06참고\\x06주의\\x0236\" +\n\t\"\\x0237\\x0238\\x0239\\x0240\\x0241\\x0242\\x0243\\x0244\\x0245\\x0246\\x0247\\x0248\" +\n\t\"\\x0249\\x0250\\x041月\\x042月\\x043月\\x044月\\x045月\\x046月\\x047月\\x048月\\x049月\\x0510\" +\n\t\"月\\x0511月\\x0512月\\x02hg\\x02ev\\x0cアパート\\x0cアルファ\\x0cアンペア\\x09アール\\x0cイニング\\x09\" +\n\t\"インチ\\x09ウォン\\x0fエスクード\\x0cエーカー\\x09オンス\\x09オーム\\x09カイリ\\x0cカラット\\x0cカロリー\\x09ガロ\" +\n\t\"ン\\x09ガンマ\\x06ギガ\\x09ギニー\\x0cキュリー\\x0cギルダー\\x06キロ\\x0fキログラム\\x12キロメートル\\x0fキロワッ\" +\n\t\"ト\\x09グラム\\x0fグラムトン\\x0fクルゼイロ\\x0cクローネ\\x09ケース\\x09コルナ\\x09コーポ\\x0cサイクル\\x0fサンチ\" +\n\t\"ーム\\x0cシリング\\x09センチ\\x09セント\\x09ダース\\x06デシ\\x06ドル\\x06トン\\x06ナノ\\x09ノット\\x09ハイツ\" +\n\t\"\\x0fパーセント\\x09パーツ\\x0cバーレル\\x0fピアストル\\x09ピクル\\x06ピコ\\x06ビル\\x0fファラッド\\x0cフィート\" +\n\t\"\\x0fブッシェル\\x09フラン\\x0fヘクタール\\x06ペソ\\x09ペニヒ\\x09ヘルツ\\x09ペンス\\x09ページ\\x09ベータ\\x0cポイ\" +\n\t\"ント\\x09ボルト\\x06ホン\\x09ポンド\\x09ホール\\x09ホーン\\x0cマイクロ\\x09マイル\\x09マッハ\\x09マルク\\x0fマ\" +\n\t\"ンション\\x0cミクロン\\x06ミリ\\x0fミリバール\\x06メガ\\x0cメガトン\\x0cメートル\\x09ヤード\\x09ヤール\\x09ユアン\" +\n\t\"\\x0cリットル\\x06リラ\\x09ルピー\\x0cルーブル\\x06レム\\x0fレントゲン\\x09ワット\\x040点\\x041点\\x042点\" +\n\t\"\\x043点\\x044点\\x045点\\x046点\\x047点\\x048点\\x049点\\x0510点\\x0511点\\x0512点\\x0513点\" +\n\t\"\\x0514点\\x0515点\\x0516点\\x0517点\\x0518点\\x0519点\\x0520点\\x0521点\\x0522点\\x0523点\" +\n\t\"\\x0524点\\x02da\\x02au\\x02ov\\x02pc\\x02dm\\x02iu\\x06平成\\x06昭和\\x06大正\\x06明治\\x0c株\" +\n\t\"式会社\\x02pa\\x02na\\x02ma\\x02ka\\x02kb\\x02mb\\x02gb\\x04kcal\\x02pf\\x02nf\\x02m\" +\n\t\"g\\x02kg\\x02hz\\x02ml\\x02dl\\x02kl\\x02fm\\x02nm\\x02mm\\x02cm\\x02km\\x02m2\\x02m\" +\n\t\"3\\x05m∕s\\x06m∕s2\\x07rad∕s\\x08rad∕s2\\x02ps\\x02ns\\x02ms\\x02pv\\x02nv\\x02mv\" +\n\t\"\\x02kv\\x02pw\\x02nw\\x02mw\\x02kw\\x02bq\\x02cc\\x02cd\\x06c∕kg\\x02db\\x02gy\\x02\" +\n\t\"ha\\x02hp\\x02in\\x02kk\\x02kt\\x02lm\\x02ln\\x02lx\\x02ph\\x02pr\\x02sr\\x02sv\\x02\" +\n\t\"wb\\x05v∕m\\x05a∕m\\x041日\\x042日\\x043日\\x044日\\x045日\\x046日\\x047日\\x048日\\x049日\" +\n\t\"\\x0510日\\x0511日\\x0512日\\x0513日\\x0514日\\x0515日\\x0516日\\x0517日\\x0518日\\x0519日\" +\n\t\"\\x0520日\\x0521日\\x0522日\\x0523日\\x0524日\\x0525日\\x0526日\\x0527日\\x0528日\\x0529日\" +\n\t\"\\x0530日\\x0531日\\x02ь\\x02ɦ\\x02ɬ\\x02ʞ\\x02ʇ\\x02œ\\x04𤋮\\x04𢡊\\x04𢡄\\x04𣏕\\x04𥉉\" +\n\t\"\\x04𥳐\\x04𧻓\\x02ff\\x02fi\\x02fl\\x02st\\x04մն\\x04մե\\x04մի\\x04վն\\x04մխ\\x04יִ\" +\n\t\"\\x04ײַ\\x02ע\\x02ה\\x02כ\\x02ל\\x02ם\\x02ר\\x02ת\\x04שׁ\\x04שׂ\\x06שּׁ\\x06שּׂ\\x04א\" +\n\t\"ַ\\x04אָ\\x04אּ\\x04בּ\\x04גּ\\x04דּ\\x04הּ\\x04וּ\\x04זּ\\x04טּ\\x04יּ\\x04ךּ\\x04\" +\n\t\"כּ\\x04לּ\\x04מּ\\x04נּ\\x04סּ\\x04ףּ\\x04פּ\\x04צּ\\x04קּ\\x04רּ\\x04שּ\\x04תּ\" +\n\t\"\\x04וֹ\\x04בֿ\\x04כֿ\\x04פֿ\\x04אל\\x02ٱ\\x02ٻ\\x02پ\\x02ڀ\\x02ٺ\\x02ٿ\\x02ٹ\\x02ڤ\" +\n\t\"\\x02ڦ\\x02ڄ\\x02ڃ\\x02چ\\x02ڇ\\x02ڍ\\x02ڌ\\x02ڎ\\x02ڈ\\x02ژ\\x02ڑ\\x02ک\\x02گ\\x02ڳ\" +\n\t\"\\x02ڱ\\x02ں\\x02ڻ\\x02ۀ\\x02ہ\\x02ھ\\x02ے\\x02ۓ\\x02ڭ\\x02ۇ\\x02ۆ\\x02ۈ\\x02ۋ\\x02ۅ\" +\n\t\"\\x02ۉ\\x02ې\\x02ى\\x04ئا\\x04ئە\\x04ئو\\x04ئۇ\\x04ئۆ\\x04ئۈ\\x04ئې\\x04ئى\\x02ی\\x04\" +\n\t\"ئج\\x04ئح\\x04ئم\\x04ئي\\x04بج\\x04بح\\x04بخ\\x04بم\\x04بى\\x04بي\\x04تج\\x04تح\" +\n\t\"\\x04تخ\\x04تم\\x04تى\\x04تي\\x04ثج\\x04ثم\\x04ثى\\x04ثي\\x04جح\\x04جم\\x04حج\\x04حم\" +\n\t\"\\x04خج\\x04خح\\x04خم\\x04سج\\x04سح\\x04سخ\\x04سم\\x04صح\\x04صم\\x04ضج\\x04ضح\\x04ضخ\" +\n\t\"\\x04ضم\\x04طح\\x04طم\\x04ظم\\x04عج\\x04عم\\x04غج\\x04غم\\x04فج\\x04فح\\x04فخ\\x04فم\" +\n\t\"\\x04فى\\x04في\\x04قح\\x04قم\\x04قى\\x04قي\\x04كا\\x04كج\\x04كح\\x04كخ\\x04كل\\x04كم\" +\n\t\"\\x04كى\\x04كي\\x04لج\\x04لح\\x04لخ\\x04لم\\x04لى\\x04لي\\x04مج\\x04مح\\x04مخ\\x04مم\" +\n\t\"\\x04مى\\x04مي\\x04نج\\x04نح\\x04نخ\\x04نم\\x04نى\\x04ني\\x04هج\\x04هم\\x04هى\\x04هي\" +\n\t\"\\x04يج\\x04يح\\x04يخ\\x04يم\\x04يى\\x04يي\\x04ذٰ\\x04رٰ\\x04ىٰ\\x05 ٌّ\\x05 ٍّ\\x05\" +\n\t\" َّ\\x05 ُّ\\x05 ِّ\\x05 ّٰ\\x04ئر\\x04ئز\\x04ئن\\x04بر\\x04بز\\x04بن\\x04تر\\x04تز\" +\n\t\"\\x04تن\\x04ثر\\x04ثز\\x04ثن\\x04ما\\x04نر\\x04نز\\x04نن\\x04ير\\x04يز\\x04ين\\x04ئخ\" +\n\t\"\\x04ئه\\x04به\\x04ته\\x04صخ\\x04له\\x04نه\\x04هٰ\\x04يه\\x04ثه\\x04سه\\x04شم\\x04شه\" +\n\t\"\\x06ـَّ\\x06ـُّ\\x06ـِّ\\x04طى\\x04طي\\x04عى\\x04عي\\x04غى\\x04غي\\x04سى\\x04سي\" +\n\t\"\\x04شى\\x04شي\\x04حى\\x04حي\\x04جى\\x04جي\\x04خى\\x04خي\\x04صى\\x04صي\\x04ضى\\x04ضي\" +\n\t\"\\x04شج\\x04شح\\x04شخ\\x04شر\\x04سر\\x04صر\\x04ضر\\x04اً\\x06تجم\\x06تحج\\x06تحم\" +\n\t\"\\x06تخم\\x06تمج\\x06تمح\\x06تمخ\\x06جمح\\x06حمي\\x06حمى\\x06سحج\\x06سجح\\x06سجى\" +\n\t\"\\x06سمح\\x06سمج\\x06سمم\\x06صحح\\x06صمم\\x06شحم\\x06شجي\\x06شمخ\\x06شمم\\x06ضحى\" +\n\t\"\\x06ضخم\\x06طمح\\x06طمم\\x06طمي\\x06عجم\\x06عمم\\x06عمى\\x06غمم\\x06غمي\\x06غمى\" +\n\t\"\\x06فخم\\x06قمح\\x06قمم\\x06لحم\\x06لحي\\x06لحى\\x06لجج\\x06لخم\\x06لمح\\x06محج\" +\n\t\"\\x06محم\\x06محي\\x06مجح\\x06مجم\\x06مخج\\x06مخم\\x06مجخ\\x06همج\\x06همم\\x06نحم\" +\n\t\"\\x06نحى\\x06نجم\\x06نجى\\x06نمي\\x06نمى\\x06يمم\\x06بخي\\x06تجي\\x06تجى\\x06تخي\" +\n\t\"\\x06تخى\\x06تمي\\x06تمى\\x06جمي\\x06جحى\\x06جمى\\x06سخى\\x06صحي\\x06شحي\\x06ضحي\" +\n\t\"\\x06لجي\\x06لمي\\x06يحي\\x06يجي\\x06يمي\\x06ممي\\x06قمي\\x06نحي\\x06عمي\\x06كمي\" +\n\t\"\\x06نجح\\x06مخي\\x06لجم\\x06كمم\\x06جحي\\x06حجي\\x06مجي\\x06فمي\\x06بحي\\x06سخي\" +\n\t\"\\x06نجي\\x06صلے\\x06قلے\\x08الله\\x08اكبر\\x08محمد\\x08صلعم\\x08رسول\\x08عليه\" +\n\t\"\\x08وسلم\\x06صلى!صلى الله عليه وسلم\\x0fجل جلاله\\x08ریال\\x01,\\x01:\\x01!\" +\n\t\"\\x01?\\x01_\\x01{\\x01}\\x01[\\x01]\\x01#\\x01&\\x01*\\x01-\\x01<\\x01>\\x01\\\\\\x01$\" +\n\t\"\\x01%\\x01@\\x04ـً\\x04ـَ\\x04ـُ\\x04ـِ\\x04ـّ\\x04ـْ\\x02ء\\x02آ\\x02أ\\x02ؤ\\x02إ\" +\n\t\"\\x02ئ\\x02ا\\x02ب\\x02ة\\x02ت\\x02ث\\x02ج\\x02ح\\x02خ\\x02د\\x02ذ\\x02ر\\x02ز\\x02س\" +\n\t\"\\x02ش\\x02ص\\x02ض\\x02ط\\x02ظ\\x02ع\\x02غ\\x02ف\\x02ق\\x02ك\\x02ل\\x02م\\x02ن\\x02ه\" +\n\t\"\\x02و\\x02ي\\x04لآ\\x04لأ\\x04لإ\\x04لا\\x01\\x22\\x01'\\x01/\\x01^\\x01|\\x01~\\x02¢\" +\n\t\"\\x02£\\x02¬\\x02¦\\x02¥\\x08𝅗𝅥\\x08𝅘𝅥\\x0c𝅘𝅥𝅮\\x0c𝅘𝅥𝅯\\x0c𝅘𝅥𝅰\\x0c𝅘𝅥𝅱\\x0c𝅘𝅥𝅲\\x08𝆹\" +\n\t\"𝅥\\x08𝆺𝅥\\x0c𝆹𝅥𝅮\\x0c𝆺𝅥𝅮\\x0c𝆹𝅥𝅯\\x0c𝆺𝅥𝅯\\x02ı\\x02ȷ\\x02α\\x02ε\\x02ζ\\x02η\\x02\" +\n\t\"κ\\x02λ\\x02μ\\x02ν\\x02ξ\\x02ο\\x02σ\\x02τ\\x02υ\\x02ψ\\x03∇\\x03∂\\x02ϝ\\x02ٮ\\x02ڡ\" +\n\t\"\\x02ٯ\\x020,\\x021,\\x022,\\x023,\\x024,\\x025,\\x026,\\x027,\\x028,\\x029,\\x03(a)\" +\n\t\"\\x03(b)\\x03(c)\\x03(d)\\x03(e)\\x03(f)\\x03(g)\\x03(h)\\x03(i)\\x03(j)\\x03(k)\" +\n\t\"\\x03(l)\\x03(m)\\x03(n)\\x03(o)\\x03(p)\\x03(q)\\x03(r)\\x03(s)\\x03(t)\\x03(u)\" +\n\t\"\\x03(v)\\x03(w)\\x03(x)\\x03(y)\\x03(z)\\x07〔s〕\\x02wz\\x02hv\\x02sd\\x03ppv\\x02w\" +\n\t\"c\\x02mc\\x02md\\x02dj\\x06ほか\\x06ココ\\x03サ\\x03手\\x03字\\x03双\\x03デ\\x03二\\x03多\\x03解\" +\n\t\"\\x03天\\x03交\\x03映\\x03無\\x03料\\x03前\\x03後\\x03再\\x03新\\x03初\\x03終\\x03生\\x03販\\x03声\" +\n\t\"\\x03吹\\x03演\\x03投\\x03捕\\x03一\\x03三\\x03遊\\x03左\\x03中\\x03右\\x03指\\x03走\\x03打\\x03禁\" +\n\t\"\\x03空\\x03合\\x03満\\x03有\\x03月\\x03申\\x03割\\x03営\\x03配\\x09〔本〕\\x09〔三〕\\x09〔二〕\\x09〔安\" +\n\t\"〕\\x09〔点〕\\x09〔打〕\\x09〔盗〕\\x09〔勝〕\\x09〔敗〕\\x03得\\x03可\\x03丽\\x03丸\\x03乁\\x03你\\x03\" +\n\t\"侮\\x03侻\\x03倂\\x03偺\\x03備\\x03僧\\x03像\\x03㒞\\x03免\\x03兔\\x03兤\\x03具\\x03㒹\\x03內\\x03\" +\n\t\"冗\\x03冤\\x03仌\\x03冬\\x03况\\x03凵\\x03刃\\x03㓟\\x03刻\\x03剆\\x03剷\\x03㔕\\x03勇\\x03勉\\x03\" +\n\t\"勤\\x03勺\\x03包\\x03匆\\x03北\\x03卉\\x03卑\\x03博\\x03即\\x03卽\\x03卿\\x03灰\\x03及\\x03叟\\x03\" +\n\t\"叫\\x03叱\\x03吆\\x03咞\\x03吸\\x03呈\\x03周\\x03咢\\x03哶\\x03唐\\x03啓\\x03啣\\x03善\\x03喙\\x03\" +\n\t\"喫\\x03喳\\x03嗂\\x03圖\\x03嘆\\x03圗\\x03噑\\x03噴\\x03切\\x03壮\\x03城\\x03埴\\x03堍\\x03型\\x03\" +\n\t\"堲\\x03報\\x03墬\\x03売\\x03壷\\x03夆\\x03夢\\x03奢\\x03姬\\x03娛\\x03娧\\x03姘\\x03婦\\x03㛮\\x03\" +\n\t\"嬈\\x03嬾\\x03寃\\x03寘\\x03寧\\x03寳\\x03寿\\x03将\\x03尢\\x03㞁\\x03屠\\x03屮\\x03峀\\x03岍\\x03\" +\n\t\"嵃\\x03嵮\\x03嵫\\x03嵼\\x03巡\\x03巢\\x03㠯\\x03巽\\x03帨\\x03帽\\x03幩\\x03㡢\\x03㡼\\x03庰\\x03\" +\n\t\"庳\\x03庶\\x03廊\\x03廾\\x03舁\\x03弢\\x03㣇\\x03形\\x03彫\\x03㣣\\x03徚\\x03忍\\x03志\\x03忹\\x03\" +\n\t\"悁\\x03㤺\\x03㤜\\x03悔\\x03惇\\x03慈\\x03慌\\x03慎\\x03慺\\x03憎\\x03憲\\x03憤\\x03憯\\x03懞\\x03\" +\n\t\"懲\\x03懶\\x03成\\x03戛\\x03扝\\x03抱\\x03拔\\x03捐\\x03挽\\x03拼\\x03捨\\x03掃\\x03揤\\x03搢\\x03\" +\n\t\"揅\\x03掩\\x03㨮\\x03摩\\x03摾\\x03撝\\x03摷\\x03㩬\\x03敏\\x03敬\\x03旣\\x03書\\x03晉\\x03㬙\\x03\" +\n\t\"暑\\x03㬈\\x03㫤\\x03冒\\x03冕\\x03最\\x03暜\\x03肭\\x03䏙\\x03朗\\x03望\\x03朡\\x03杞\\x03杓\\x03\" +\n\t\"㭉\\x03柺\\x03枅\\x03桒\\x03梅\\x03梎\\x03栟\\x03椔\\x03㮝\\x03楂\\x03榣\\x03槪\\x03檨\\x03櫛\\x03\" +\n\t\"㰘\\x03次\\x03歔\\x03㱎\\x03歲\\x03殟\\x03殺\\x03殻\\x03汎\\x03沿\\x03泍\\x03汧\\x03洖\\x03派\\x03\" +\n\t\"海\\x03流\\x03浩\\x03浸\\x03涅\\x03洴\\x03港\\x03湮\\x03㴳\\x03滋\\x03滇\\x03淹\\x03潮\\x03濆\\x03\" +\n\t\"瀹\\x03瀞\\x03瀛\\x03㶖\\x03灊\\x03災\\x03灷\\x03炭\\x03煅\\x03熜\\x03爨\\x03爵\\x03牐\\x03犀\\x03\" +\n\t\"犕\\x03獺\\x03王\\x03㺬\\x03玥\\x03㺸\\x03瑇\\x03瑜\\x03瑱\\x03璅\\x03瓊\\x03㼛\\x03甤\\x03甾\\x03\" +\n\t\"異\\x03瘐\\x03㿼\\x03䀈\\x03直\\x03眞\\x03真\\x03睊\\x03䀹\\x03瞋\\x03䁆\\x03䂖\\x03硎\\x03碌\\x03\" +\n\t\"磌\\x03䃣\\x03祖\\x03福\\x03秫\\x03䄯\\x03穀\\x03穊\\x03穏\\x03䈂\\x03篆\\x03築\\x03䈧\\x03糒\\x03\" +\n\t\"䊠\\x03糨\\x03糣\\x03紀\\x03絣\\x03䌁\\x03緇\\x03縂\\x03繅\\x03䌴\\x03䍙\\x03罺\\x03羕\\x03翺\\x03\" +\n\t\"者\\x03聠\\x03聰\\x03䏕\\x03育\\x03脃\\x03䐋\\x03脾\\x03媵\\x03舄\\x03辞\\x03䑫\\x03芑\\x03芋\\x03\" +\n\t\"芝\\x03劳\\x03花\\x03芳\\x03芽\\x03苦\\x03若\\x03茝\\x03荣\\x03莭\\x03茣\\x03莽\\x03菧\\x03著\\x03\" +\n\t\"荓\\x03菊\\x03菌\\x03菜\\x03䔫\\x03蓱\\x03蓳\\x03蔖\\x03蕤\\x03䕝\\x03䕡\\x03䕫\\x03虐\\x03虜\\x03\" +\n\t\"虧\\x03虩\\x03蚩\\x03蚈\\x03蜎\\x03蛢\\x03蝹\\x03蜨\\x03蝫\\x03螆\\x03蟡\\x03蠁\\x03䗹\\x03衠\\x03\" +\n\t\"衣\\x03裗\\x03裞\\x03䘵\\x03裺\\x03㒻\\x03䚾\\x03䛇\\x03誠\\x03諭\\x03變\\x03豕\\x03貫\\x03賁\\x03\" +\n\t\"贛\\x03起\\x03跋\\x03趼\\x03跰\\x03軔\\x03輸\\x03邔\\x03郱\\x03鄑\\x03鄛\\x03鈸\\x03鋗\\x03鋘\\x03\" +\n\t\"鉼\\x03鏹\\x03鐕\\x03開\\x03䦕\\x03閷\\x03䧦\\x03雃\\x03嶲\\x03霣\\x03䩮\\x03䩶\\x03韠\\x03䪲\\x03\" +\n\t\"頋\\x03頩\\x03飢\\x03䬳\\x03餩\\x03馧\\x03駂\\x03駾\\x03䯎\\x03鬒\\x03鱀\\x03鳽\\x03䳎\\x03䳭\\x03\" +\n\t\"鵧\\x03䳸\\x03麻\\x03䵖\\x03黹\\x03黾\\x03鼅\\x03鼏\\x03鼖\\x03鼻\"\n\nvar xorData string = \"\" + // Size: 4855 bytes\n\t\"\\x02\\x0c\\x09\\x02\\xb0\\xec\\x02\\xad\\xd8\\x02\\xad\\xd9\\x02\\x06\\x07\\x02\\x0f\\x12\" +\n\t\"\\x02\\x0f\\x1f\\x02\\x0f\\x1d\\x02\\x01\\x13\\x02\\x0f\\x16\\x02\\x0f\\x0b\\x02\\x0f3\" +\n\t\"\\x02\\x0f7\\x02\\x0f?\\x02\\x0f/\\x02\\x0f*\\x02\\x0c&\\x02\\x0c*\\x02\\x0c;\\x02\\x0c9\" +\n\t\"\\x02\\x0c%\\x02\\xab\\xed\\x02\\xab\\xe2\\x02\\xab\\xe3\\x02\\xa9\\xe0\\x02\\xa9\\xe1\" +\n\t\"\\x02\\xa9\\xe6\\x02\\xa3\\xcb\\x02\\xa3\\xc8\\x02\\xa3\\xc9\\x02\\x01#\\x02\\x01\\x08\" +\n\t\"\\x02\\x0e>\\x02\\x0e'\\x02\\x0f\\x03\\x02\\x03\\x0d\\x02\\x03\\x09\\x02\\x03\\x17\\x02\" +\n\t\"\\x03\\x0e\\x02\\x02\\x03\\x02\\x011\\x02\\x01\\x00\\x02\\x01\\x10\\x02\\x03<\\x02\\x07\" +\n\t\"\\x0d\\x02\\x02\\x0c\\x02\\x0c0\\x02\\x01\\x03\\x02\\x01\\x01\\x02\\x01 \\x02\\x01\\x22\" +\n\t\"\\x02\\x01)\\x02\\x01\\x0a\\x02\\x01\\x0c\\x02\\x02\\x06\\x02\\x02\\x02\\x02\\x03\\x10\" +\n\t\"\\x03\\x037 \\x03\\x0b+\\x03\\x02\\x01\\x04\\x02\\x01\\x02\\x02\\x019\\x02\\x03\\x1c\\x02\" +\n\t\"\\x02$\\x03\\x80p$\\x02\\x03:\\x02\\x03\\x0a\\x03\\xc1r.\\x03\\xc1r,\\x03\\xc1r\\x02\" +\n\t\"\\x02\\x02:\\x02\\x02>\\x02\\x02,\\x02\\x02\\x10\\x02\\x02\\x00\\x03\\xc1s<\\x03\\xc1s*\" +\n\t\"\\x03\\xc2L$\\x03\\xc2L;\\x02\\x09)\\x02\\x0a\\x19\\x03\\x83\\xab\\xe3\\x03\\x83\\xab\" +\n\t\"\\xf2\\x03 4\\xe0\\x03\\x81\\xab\\xea\\x03\\x81\\xab\\xf3\\x03 4\\xef\\x03\\x96\\xe1\\xcd\" +\n\t\"\\x03\\x84\\xe5\\xc3\\x02\\x0d\\x11\\x03\\x8b\\xec\\xcb\\x03\\x94\\xec\\xcf\\x03\\x9a\\xec\" +\n\t\"\\xc2\\x03\\x8b\\xec\\xdb\\x03\\x94\\xec\\xdf\\x03\\x9a\\xec\\xd2\\x03\\x01\\x0c!\\x03\" +\n\t\"\\x01\\x0c#\\x03ʠ\\x9d\\x03ʣ\\x9c\\x03ʢ\\x9f\\x03ʥ\\x9e\\x03ʤ\\x91\\x03ʧ\\x90\\x03ʦ\\x93\" +\n\t\"\\x03ʩ\\x92\\x03ʨ\\x95\\x03\\xca\\xf3\\xb5\\x03\\xca\\xf0\\xb4\\x03\\xca\\xf1\\xb7\\x03\" +\n\t\"\\xca\\xf6\\xb6\\x03\\xca\\xf7\\x89\\x03\\xca\\xf4\\x88\\x03\\xca\\xf5\\x8b\\x03\\xca\\xfa\" +\n\t\"\\x8a\\x03\\xca\\xfb\\x8d\\x03\\xca\\xf8\\x8c\\x03\\xca\\xf9\\x8f\\x03\\xca\\xfe\\x8e\\x03\" +\n\t\"\\xca\\xff\\x81\\x03\\xca\\xfc\\x80\\x03\\xca\\xfd\\x83\\x03\\xca\\xe2\\x82\\x03\\xca\\xe3\" +\n\t\"\\x85\\x03\\xca\\xe0\\x84\\x03\\xca\\xe1\\x87\\x03\\xca\\xe6\\x86\\x03\\xca\\xe7\\x99\\x03\" +\n\t\"\\xca\\xe4\\x98\\x03\\xca\\xe5\\x9b\\x03\\xca\\xea\\x9a\\x03\\xca\\xeb\\x9d\\x03\\xca\\xe8\" +\n\t\"\\x9c\\x03ؓ\\x89\\x03ߔ\\x8b\\x02\\x010\\x03\\x03\\x04\\x1e\\x03\\x04\\x15\\x12\\x03\\x0b\" +\n\t\"\\x05,\\x03\\x06\\x04\\x00\\x03\\x06\\x04)\\x03\\x06\\x044\\x03\\x06\\x04<\\x03\\x06\\x05\" +\n\t\"\\x1d\\x03\\x06\\x06\\x00\\x03\\x06\\x06\\x0a\\x03\\x06\\x06'\\x03\\x06\\x062\\x03\\x0786\" +\n\t\"\\x03\\x079/\\x03\\x079 \\x03\\x07:\\x0e\\x03\\x07:\\x1b\\x03\\x07:%\\x03\\x07;/\\x03\" +\n\t\"\\x07;%\\x03\\x074\\x11\\x03\\x076\\x09\\x03\\x077*\\x03\\x070\\x01\\x03\\x070\\x0f\\x03\" +\n\t\"\\x070.\\x03\\x071\\x16\\x03\\x071\\x04\\x03\\x0710\\x03\\x072\\x18\\x03\\x072-\\x03\" +\n\t\"\\x073\\x14\\x03\\x073>\\x03\\x07'\\x09\\x03\\x07 \\x00\\x03\\x07\\x1f\\x0b\\x03\\x07\" +\n\t\"\\x18#\\x03\\x07\\x18(\\x03\\x07\\x186\\x03\\x07\\x18\\x03\\x03\\x07\\x19\\x16\\x03\\x07\" +\n\t\"\\x116\\x03\\x07\\x12'\\x03\\x07\\x13\\x10\\x03\\x07\\x0c&\\x03\\x07\\x0c\\x08\\x03\\x07\" +\n\t\"\\x0c\\x13\\x03\\x07\\x0d\\x02\\x03\\x07\\x0d\\x1c\\x03\\x07\\x0b5\\x03\\x07\\x0b\\x0a\" +\n\t\"\\x03\\x07\\x0b\\x01\\x03\\x07\\x0b\\x0f\\x03\\x07\\x05\\x00\\x03\\x07\\x05\\x09\\x03\\x07\" +\n\t\"\\x05\\x0b\\x03\\x07\\x07\\x01\\x03\\x07\\x07\\x08\\x03\\x07\\x00<\\x03\\x07\\x00+\\x03\" +\n\t\"\\x07\\x01)\\x03\\x07\\x01\\x1b\\x03\\x07\\x01\\x08\\x03\\x07\\x03?\\x03\\x0445\\x03\\x04\" +\n\t\"4\\x08\\x03\\x0454\\x03\\x04)/\\x03\\x04)5\\x03\\x04+\\x05\\x03\\x04+\\x14\\x03\\x04+ \" +\n\t\"\\x03\\x04+<\\x03\\x04*&\\x03\\x04*\\x22\\x03\\x04&8\\x03\\x04!\\x01\\x03\\x04!\\x22\" +\n\t\"\\x03\\x04\\x11+\\x03\\x04\\x10.\\x03\\x04\\x104\\x03\\x04\\x13=\\x03\\x04\\x12\\x04\\x03\" +\n\t\"\\x04\\x12\\x0a\\x03\\x04\\x0d\\x1d\\x03\\x04\\x0d\\x07\\x03\\x04\\x0d \\x03\\x05<>\\x03\" +\n\t\"\\x055<\\x03\\x055!\\x03\\x055#\\x03\\x055&\\x03\\x054\\x1d\\x03\\x054\\x02\\x03\\x054\" +\n\t\"\\x07\\x03\\x0571\\x03\\x053\\x1a\\x03\\x053\\x16\\x03\\x05.<\\x03\\x05.\\x07\\x03\\x05)\" +\n\t\":\\x03\\x05)<\\x03\\x05)\\x0c\\x03\\x05)\\x15\\x03\\x05+-\\x03\\x05+5\\x03\\x05$\\x1e\" +\n\t\"\\x03\\x05$\\x14\\x03\\x05'\\x04\\x03\\x05'\\x14\\x03\\x05&\\x02\\x03\\x05\\x226\\x03\" +\n\t\"\\x05\\x22\\x0c\\x03\\x05\\x22\\x1c\\x03\\x05\\x19\\x0a\\x03\\x05\\x1b\\x09\\x03\\x05\\x1b\" +\n\t\"\\x0c\\x03\\x05\\x14\\x07\\x03\\x05\\x16?\\x03\\x05\\x16\\x0c\\x03\\x05\\x0c\\x05\\x03\" +\n\t\"\\x05\\x0e\\x0f\\x03\\x05\\x01\\x0e\\x03\\x05\\x00(\\x03\\x05\\x030\\x03\\x05\\x03\\x06\" +\n\t\"\\x03\\x0a==\\x03\\x0a=1\\x03\\x0a=,\\x03\\x0a=\\x0c\\x03\\x0a??\\x03\\x0a<\\x08\\x03\" +\n\t\"\\x0a9!\\x03\\x0a9)\\x03\\x0a97\\x03\\x0a99\\x03\\x0a6\\x0a\\x03\\x0a6\\x1c\\x03\\x0a6\" +\n\t\"\\x17\\x03\\x0a7'\\x03\\x0a78\\x03\\x0a73\\x03\\x0a'\\x01\\x03\\x0a'&\\x03\\x0a\\x1f\" +\n\t\"\\x0e\\x03\\x0a\\x1f\\x03\\x03\\x0a\\x1f3\\x03\\x0a\\x1b/\\x03\\x0a\\x18\\x19\\x03\\x0a\" +\n\t\"\\x19\\x01\\x03\\x0a\\x16\\x14\\x03\\x0a\\x0e\\x22\\x03\\x0a\\x0f\\x10\\x03\\x0a\\x0f\\x02\" +\n\t\"\\x03\\x0a\\x0f \\x03\\x0a\\x0c\\x04\\x03\\x0a\\x0b>\\x03\\x0a\\x0b+\\x03\\x0a\\x08/\\x03\" +\n\t\"\\x0a\\x046\\x03\\x0a\\x05\\x14\\x03\\x0a\\x00\\x04\\x03\\x0a\\x00\\x10\\x03\\x0a\\x00\" +\n\t\"\\x14\\x03\\x0b<3\\x03\\x0b;*\\x03\\x0b9\\x22\\x03\\x0b9)\\x03\\x0b97\\x03\\x0b+\\x10\" +\n\t\"\\x03\\x0b((\\x03\\x0b&5\\x03\\x0b$\\x1c\\x03\\x0b$\\x12\\x03\\x0b%\\x04\\x03\\x0b#<\" +\n\t\"\\x03\\x0b#0\\x03\\x0b#\\x0d\\x03\\x0b#\\x19\\x03\\x0b!:\\x03\\x0b!\\x1f\\x03\\x0b!\\x00\" +\n\t\"\\x03\\x0b\\x1e5\\x03\\x0b\\x1c\\x1d\\x03\\x0b\\x1d-\\x03\\x0b\\x1d(\\x03\\x0b\\x18.\\x03\" +\n\t\"\\x0b\\x18 \\x03\\x0b\\x18\\x16\\x03\\x0b\\x14\\x13\\x03\\x0b\\x15$\\x03\\x0b\\x15\\x22\" +\n\t\"\\x03\\x0b\\x12\\x1b\\x03\\x0b\\x12\\x10\\x03\\x0b\\x132\\x03\\x0b\\x13=\\x03\\x0b\\x12\" +\n\t\"\\x18\\x03\\x0b\\x0c&\\x03\\x0b\\x061\\x03\\x0b\\x06:\\x03\\x0b\\x05#\\x03\\x0b\\x05<\" +\n\t\"\\x03\\x0b\\x04\\x0b\\x03\\x0b\\x04\\x04\\x03\\x0b\\x04\\x1b\\x03\\x0b\\x042\\x03\\x0b\" +\n\t\"\\x041\\x03\\x0b\\x03\\x03\\x03\\x0b\\x03\\x1d\\x03\\x0b\\x03/\\x03\\x0b\\x03+\\x03\\x0b\" +\n\t\"\\x02\\x1b\\x03\\x0b\\x02\\x00\\x03\\x0b\\x01\\x1e\\x03\\x0b\\x01\\x08\\x03\\x0b\\x015\" +\n\t\"\\x03\\x06\\x0d9\\x03\\x06\\x0d=\\x03\\x06\\x0d?\\x03\\x02\\x001\\x03\\x02\\x003\\x03\" +\n\t\"\\x02\\x02\\x19\\x03\\x02\\x006\\x03\\x02\\x02\\x1b\\x03\\x02\\x004\\x03\\x02\\x00<\\x03\" +\n\t\"\\x02\\x02\\x0a\\x03\\x02\\x02\\x0e\\x03\\x02\\x01\\x1a\\x03\\x02\\x01\\x07\\x03\\x02\\x01\" +\n\t\"\\x05\\x03\\x02\\x01\\x0b\\x03\\x02\\x01%\\x03\\x02\\x01\\x0c\\x03\\x02\\x01\\x04\\x03\" +\n\t\"\\x02\\x01\\x1c\\x03\\x02\\x00.\\x03\\x02\\x002\\x03\\x02\\x00>\\x03\\x02\\x00\\x12\\x03\" +\n\t\"\\x02\\x00\\x16\\x03\\x02\\x011\\x03\\x02\\x013\\x03\\x02\\x02 \\x03\\x02\\x02%\\x03\\x02\" +\n\t\"\\x02$\\x03\\x02\\x028\\x03\\x02\\x02;\\x03\\x02\\x024\\x03\\x02\\x012\\x03\\x02\\x022\" +\n\t\"\\x03\\x02\\x02/\\x03\\x02\\x01,\\x03\\x02\\x01\\x13\\x03\\x02\\x01\\x16\\x03\\x02\\x01\" +\n\t\"\\x11\\x03\\x02\\x01\\x1e\\x03\\x02\\x01\\x15\\x03\\x02\\x01\\x17\\x03\\x02\\x01\\x0f\\x03\" +\n\t\"\\x02\\x01\\x08\\x03\\x02\\x00?\\x03\\x02\\x03\\x07\\x03\\x02\\x03\\x0d\\x03\\x02\\x03\" +\n\t\"\\x13\\x03\\x02\\x03\\x1d\\x03\\x02\\x03\\x1f\\x03\\x02\\x00\\x03\\x03\\x02\\x00\\x0d\\x03\" +\n\t\"\\x02\\x00\\x01\\x03\\x02\\x00\\x1b\\x03\\x02\\x00\\x19\\x03\\x02\\x00\\x18\\x03\\x02\\x00\" +\n\t\"\\x13\\x03\\x02\\x00/\\x03\\x07>\\x12\\x03\\x07<\\x1f\\x03\\x07>\\x1d\\x03\\x06\\x1d\\x0e\" +\n\t\"\\x03\\x07>\\x1c\\x03\\x07>:\\x03\\x07>\\x13\\x03\\x04\\x12+\\x03\\x07?\\x03\\x03\\x07>\" +\n\t\"\\x02\\x03\\x06\\x224\\x03\\x06\\x1a.\\x03\\x07<%\\x03\\x06\\x1c\\x0b\\x03\\x0609\\x03\" +\n\t\"\\x05\\x1f\\x01\\x03\\x04'\\x08\\x03\\x93\\xfd\\xf5\\x03\\x02\\x0d \\x03\\x02\\x0d#\\x03\" +\n\t\"\\x02\\x0d!\\x03\\x02\\x0d&\\x03\\x02\\x0d\\x22\\x03\\x02\\x0d/\\x03\\x02\\x0d,\\x03\\x02\" +\n\t\"\\x0d$\\x03\\x02\\x0d'\\x03\\x02\\x0d%\\x03\\x02\\x0d;\\x03\\x02\\x0d=\\x03\\x02\\x0d?\" +\n\t\"\\x03\\x099.\\x03\\x08\\x0b7\\x03\\x08\\x02\\x14\\x03\\x08\\x14\\x0d\\x03\\x08.:\\x03\" +\n\t\"\\x089'\\x03\\x0f\\x0b\\x18\\x03\\x0f\\x1c1\\x03\\x0f\\x17&\\x03\\x0f9\\x1f\\x03\\x0f0\" +\n\t\"\\x0c\\x03\\x0e\\x0a9\\x03\\x0e\\x056\\x03\\x0e\\x1c#\\x03\\x0f\\x13\\x0e\\x03\\x072\\x00\" +\n\t\"\\x03\\x070\\x0d\\x03\\x072\\x0b\\x03\\x06\\x11\\x18\\x03\\x070\\x10\\x03\\x06\\x0f(\\x03\" +\n\t\"\\x072\\x05\\x03\\x06\\x0f,\\x03\\x073\\x15\\x03\\x06\\x07\\x08\\x03\\x05\\x16\\x02\\x03\" +\n\t\"\\x04\\x0b \\x03\\x05:8\\x03\\x05\\x16%\\x03\\x0a\\x0d\\x1f\\x03\\x06\\x16\\x10\\x03\\x05\" +\n\t\"\\x1d5\\x03\\x05*;\\x03\\x05\\x16\\x1b\\x03\\x04.-\\x03\\x06\\x1a\\x19\\x03\\x04\\x03,\" +\n\t\"\\x03\\x0b87\\x03\\x04/\\x0a\\x03\\x06\\x00,\\x03\\x04-\\x01\\x03\\x04\\x1e-\\x03\\x06/(\" +\n\t\"\\x03\\x0a\\x0b5\\x03\\x06\\x0e7\\x03\\x06\\x07.\\x03\\x0597\\x03\\x0a*%\\x03\\x0760\" +\n\t\"\\x03\\x06\\x0c;\\x03\\x05'\\x00\\x03\\x072.\\x03\\x072\\x08\\x03\\x06=\\x01\\x03\\x06\" +\n\t\"\\x05\\x1b\\x03\\x06\\x06\\x12\\x03\\x06$=\\x03\\x06'\\x0d\\x03\\x04\\x11\\x0f\\x03\\x076\" +\n\t\",\\x03\\x06\\x07;\\x03\\x06.,\\x03\\x86\\xf9\\xea\\x03\\x8f\\xff\\xeb\\x02\\x092\\x02\" +\n\t\"\\x095\\x02\\x094\\x02\\x09;\\x02\\x09>\\x02\\x098\\x02\\x09*\\x02\\x09/\\x02\\x09,\\x02\" +\n\t\"\\x09%\\x02\\x09&\\x02\\x09#\\x02\\x09 \\x02\\x08!\\x02\\x08%\\x02\\x08$\\x02\\x08+\\x02\" +\n\t\"\\x08.\\x02\\x08*\\x02\\x08&\\x02\\x088\\x02\\x08>\\x02\\x084\\x02\\x086\\x02\\x080\\x02\" +\n\t\"\\x08\\x10\\x02\\x08\\x17\\x02\\x08\\x12\\x02\\x08\\x1d\\x02\\x08\\x1f\\x02\\x08\\x13\\x02\" +\n\t\"\\x08\\x15\\x02\\x08\\x14\\x02\\x08\\x0c\\x03\\x8b\\xfd\\xd0\\x03\\x81\\xec\\xc6\\x03\\x87\" +\n\t\"\\xe0\\x8a\\x03-2\\xe3\\x03\\x80\\xef\\xe4\\x03-2\\xea\\x03\\x88\\xe6\\xeb\\x03\\x8e\\xe6\" +\n\t\"\\xe8\\x03\\x84\\xe6\\xe9\\x03\\x97\\xe6\\xee\\x03-2\\xf9\\x03-2\\xf6\\x03\\x8e\\xe3\\xad\" +\n\t\"\\x03\\x80\\xe3\\x92\\x03\\x88\\xe3\\x90\\x03\\x8e\\xe3\\x90\\x03\\x80\\xe3\\x97\\x03\\x88\" +\n\t\"\\xe3\\x95\\x03\\x88\\xfe\\xcb\\x03\\x8e\\xfe\\xca\\x03\\x84\\xfe\\xcd\\x03\\x91\\xef\\xc9\" +\n\t\"\\x03-2\\xc1\\x03-2\\xc0\\x03-2\\xcb\\x03\\x88@\\x09\\x03\\x8e@\\x08\\x03\\x8f\\xe0\\xf5\" +\n\t\"\\x03\\x8e\\xe6\\xf9\\x03\\x8e\\xe0\\xfa\\x03\\x93\\xff\\xf4\\x03\\x84\\xee\\xd3\\x03\\x0b\" +\n\t\"(\\x04\\x023 \\x021;\\x02\\x01*\\x03\\x0b#\\x10\\x03\\x0b 0\\x03\\x0b!\\x10\\x03\\x0b!0\" +\n\t\"\\x03\\x07\\x15\\x08\\x03\\x09?5\\x03\\x07\\x1f\\x08\\x03\\x07\\x17\\x0b\\x03\\x09\\x1f\" +\n\t\"\\x15\\x03\\x0b\\x1c7\\x03\\x0a+#\\x03\\x06\\x1a\\x1b\\x03\\x06\\x1a\\x14\\x03\\x0a\\x01\" +\n\t\"\\x18\\x03\\x06#\\x1b\\x03\\x0a2\\x0c\\x03\\x0a\\x01\\x04\\x03\\x09#;\\x03\\x08='\\x03\" +\n\t\"\\x08\\x1a\\x0a\\x03\\x07</\\x03\\x07:+\\x03\\x07\\x07*\\x03\\x06&\\x1c\\x03\\x09\\x0c\" +\n\t\"\\x16\\x03\\x09\\x10\\x0e\\x03\\x08'\\x0f\\x03\\x08+\\x09\\x03\\x074%\\x03\\x06!3\\x03\" +\n\t\"\\x06\\x03+\\x03\\x0b\\x1e\\x19\\x03\\x0a))\\x03\\x09\\x08\\x19\\x03\\x08,\\x05\\x03\\x07\" +\n\t\"<2\\x03\\x06\\x1c>\\x03\\x0a\\x111\\x03\\x09\\x1b\\x09\\x03\\x073.\\x03\\x07\\x01\\x00\" +\n\t\"\\x03\\x09/,\\x03\\x07#>\\x03\\x07\\x048\\x03\\x0a\\x1f\\x22\\x03\\x098>\\x03\\x09\\x11\" +\n\t\"\\x00\\x03\\x08/\\x17\\x03\\x06'\\x22\\x03\\x0b\\x1a+\\x03\\x0a\\x22\\x19\\x03\\x0a/1\" +\n\t\"\\x03\\x0974\\x03\\x09\\x0f\\x22\\x03\\x08,\\x22\\x03\\x08?\\x14\\x03\\x07$5\\x03\\x07<3\" +\n\t\"\\x03\\x07=*\\x03\\x07\\x13\\x18\\x03\\x068\\x0a\\x03\\x06\\x09\\x16\\x03\\x06\\x13\\x00\" +\n\t\"\\x03\\x08\\x067\\x03\\x08\\x01\\x03\\x03\\x08\\x12\\x1d\\x03\\x07+7\\x03\\x06(;\\x03\" +\n\t\"\\x06\\x1c?\\x03\\x07\\x0e\\x17\\x03\\x0a\\x06\\x1d\\x03\\x0a\\x19\\x07\\x03\\x08\\x14$\" +\n\t\"\\x03\\x07$;\\x03\\x08,$\\x03\\x08\\x06\\x0d\\x03\\x07\\x16\\x0a\\x03\\x06>>\\x03\\x0a\" +\n\t\"\\x06\\x12\\x03\\x0a\\x14)\\x03\\x09\\x0d\\x1f\\x03\\x09\\x12\\x17\\x03\\x09\\x19\\x01\" +\n\t\"\\x03\\x08\\x11 \\x03\\x08\\x1d'\\x03\\x06<\\x1a\\x03\\x0a.\\x00\\x03\\x07'\\x18\\x03\" +\n\t\"\\x0a\\x22\\x08\\x03\\x08\\x0d\\x0a\\x03\\x08\\x13)\\x03\\x07*)\\x03\\x06<,\\x03\\x07\" +\n\t\"\\x0b\\x1a\\x03\\x09.\\x14\\x03\\x09\\x0d\\x1e\\x03\\x07\\x0e#\\x03\\x0b\\x1d'\\x03\\x0a\" +\n\t\"\\x0a8\\x03\\x09%2\\x03\\x08+&\\x03\\x080\\x12\\x03\\x0a)4\\x03\\x08\\x06\\x1f\\x03\\x0b\" +\n\t\"\\x1b\\x1a\\x03\\x0a\\x1b\\x0f\\x03\\x0b\\x1d*\\x03\\x09\\x16$\\x03\\x090\\x11\\x03\\x08\" +\n\t\"\\x11\\x08\\x03\\x0a*(\\x03\\x0a\\x042\\x03\\x089,\\x03\\x074'\\x03\\x07\\x0f\\x05\\x03\" +\n\t\"\\x09\\x0b\\x0a\\x03\\x07\\x1b\\x01\\x03\\x09\\x17:\\x03\\x09.\\x0d\\x03\\x07.\\x11\\x03\" +\n\t\"\\x09+\\x15\\x03\\x080\\x13\\x03\\x0b\\x1f\\x19\\x03\\x0a \\x11\\x03\\x0a\\x220\\x03\\x09\" +\n\t\"\\x07;\\x03\\x08\\x16\\x1c\\x03\\x07,\\x13\\x03\\x07\\x0e/\\x03\\x06\\x221\\x03\\x0a.\" +\n\t\"\\x0a\\x03\\x0a7\\x02\\x03\\x0a\\x032\\x03\\x0a\\x1d.\\x03\\x091\\x06\\x03\\x09\\x19:\" +\n\t\"\\x03\\x08\\x02/\\x03\\x060+\\x03\\x06\\x0f-\\x03\\x06\\x1c\\x1f\\x03\\x06\\x1d\\x07\\x03\" +\n\t\"\\x0a,\\x11\\x03\\x09=\\x0d\\x03\\x09\\x0b;\\x03\\x07\\x1b/\\x03\\x0a\\x1f:\\x03\\x09 \" +\n\t\"\\x1f\\x03\\x09.\\x10\\x03\\x094\\x0b\\x03\\x09\\x1a1\\x03\\x08#\\x1a\\x03\\x084\\x1d\" +\n\t\"\\x03\\x08\\x01\\x1f\\x03\\x08\\x11\\x22\\x03\\x07'8\\x03\\x07\\x1a>\\x03\\x0757\\x03\" +\n\t\"\\x06&9\\x03\\x06+\\x11\\x03\\x0a.\\x0b\\x03\\x0a,>\\x03\\x0a4#\\x03\\x08%\\x17\\x03\" +\n\t\"\\x07\\x05\\x22\\x03\\x07\\x0c\\x0b\\x03\\x0a\\x1d+\\x03\\x0a\\x19\\x16\\x03\\x09+\\x1f\" +\n\t\"\\x03\\x09\\x08\\x0b\\x03\\x08\\x16\\x18\\x03\\x08+\\x12\\x03\\x0b\\x1d\\x0c\\x03\\x0a=\" +\n\t\"\\x10\\x03\\x0a\\x09\\x0d\\x03\\x0a\\x10\\x11\\x03\\x09&0\\x03\\x08(\\x1f\\x03\\x087\\x07\" +\n\t\"\\x03\\x08\\x185\\x03\\x07'6\\x03\\x06.\\x05\\x03\\x06=\\x04\\x03\\x06;;\\x03\\x06\\x06,\" +\n\t\"\\x03\\x0b\\x18>\\x03\\x08\\x00\\x18\\x03\\x06 \\x03\\x03\\x06<\\x00\\x03\\x09%\\x18\\x03\" +\n\t\"\\x0b\\x1c<\\x03\\x0a%!\\x03\\x0a\\x09\\x12\\x03\\x0a\\x16\\x02\\x03\\x090'\\x03\\x09\" +\n\t\"\\x0e=\\x03\\x08 \\x0e\\x03\\x08>\\x03\\x03\\x074>\\x03\\x06&?\\x03\\x06\\x19\\x09\\x03\" +\n\t\"\\x06?(\\x03\\x0a-\\x0e\\x03\\x09:3\\x03\\x098:\\x03\\x09\\x12\\x0b\\x03\\x09\\x1d\\x17\" +\n\t\"\\x03\\x087\\x05\\x03\\x082\\x14\\x03\\x08\\x06%\\x03\\x08\\x13\\x1f\\x03\\x06\\x06\\x0e\" +\n\t\"\\x03\\x0a\\x22<\\x03\\x09/<\\x03\\x06>+\\x03\\x0a'?\\x03\\x0a\\x13\\x0c\\x03\\x09\\x10<\" +\n\t\"\\x03\\x07\\x1b=\\x03\\x0a\\x19\\x13\\x03\\x09\\x22\\x1d\\x03\\x09\\x07\\x0d\\x03\\x08)\" +\n\t\"\\x1c\\x03\\x06=\\x1a\\x03\\x0a/4\\x03\\x0a7\\x11\\x03\\x0a\\x16:\\x03\\x09?3\\x03\\x09:\" +\n\t\"/\\x03\\x09\\x05\\x0a\\x03\\x09\\x14\\x06\\x03\\x087\\x22\\x03\\x080\\x07\\x03\\x08\\x1a\" +\n\t\"\\x1f\\x03\\x07\\x04(\\x03\\x07\\x04\\x09\\x03\\x06 %\\x03\\x06<\\x08\\x03\\x0a+\\x14\" +\n\t\"\\x03\\x09\\x1d\\x16\\x03\\x0a70\\x03\\x08 >\\x03\\x0857\\x03\\x070\\x0a\\x03\\x06=\\x12\" +\n\t\"\\x03\\x06\\x16%\\x03\\x06\\x1d,\\x03\\x099#\\x03\\x09\\x10>\\x03\\x07 \\x1e\\x03\\x08\" +\n\t\"\\x0c<\\x03\\x08\\x0b\\x18\\x03\\x08\\x15+\\x03\\x08,:\\x03\\x08%\\x22\\x03\\x07\\x0a$\" +\n\t\"\\x03\\x0b\\x1c=\\x03\\x07+\\x08\\x03\\x0a/\\x05\\x03\\x0a \\x07\\x03\\x0a\\x12'\\x03\" +\n\t\"\\x09#\\x11\\x03\\x08\\x1b\\x15\\x03\\x0a\\x06\\x01\\x03\\x09\\x1c\\x1b\\x03\\x0922\\x03\" +\n\t\"\\x07\\x14<\\x03\\x07\\x09\\x04\\x03\\x061\\x04\\x03\\x07\\x0e\\x01\\x03\\x0a\\x13\\x18\" +\n\t\"\\x03\\x0a-\\x0c\\x03\\x0a?\\x0d\\x03\\x0a\\x09\\x0a\\x03\\x091&\\x03\\x0a/\\x0b\\x03\" +\n\t\"\\x08$<\\x03\\x083\\x1d\\x03\\x08\\x0c$\\x03\\x08\\x0d\\x07\\x03\\x08\\x0d?\\x03\\x08\" +\n\t\"\\x0e\\x14\\x03\\x065\\x0a\\x03\\x08\\x1a#\\x03\\x08\\x16#\\x03\\x0702\\x03\\x07\\x03\" +\n\t\"\\x1a\\x03\\x06(\\x1d\\x03\\x06+\\x1b\\x03\\x06\\x0b\\x05\\x03\\x06\\x0b\\x17\\x03\\x06\" +\n\t\"\\x0c\\x04\\x03\\x06\\x1e\\x19\\x03\\x06+0\\x03\\x062\\x18\\x03\\x0b\\x16\\x1e\\x03\\x0a+\" +\n\t\"\\x16\\x03\\x0a-?\\x03\\x0a#:\\x03\\x0a#\\x10\\x03\\x0a%$\\x03\\x0a>+\\x03\\x0a01\\x03\" +\n\t\"\\x0a1\\x10\\x03\\x0a\\x099\\x03\\x0a\\x0a\\x12\\x03\\x0a\\x19\\x1f\\x03\\x0a\\x19\\x12\" +\n\t\"\\x03\\x09*)\\x03\\x09-\\x16\\x03\\x09.1\\x03\\x09.2\\x03\\x09<\\x0e\\x03\\x09> \\x03\" +\n\t\"\\x093\\x12\\x03\\x09\\x0b\\x01\\x03\\x09\\x1c2\\x03\\x09\\x11\\x1c\\x03\\x09\\x15%\\x03\" +\n\t\"\\x08,&\\x03\\x08!\\x22\\x03\\x089(\\x03\\x08\\x0b\\x1a\\x03\\x08\\x0d2\\x03\\x08\\x0c\" +\n\t\"\\x04\\x03\\x08\\x0c\\x06\\x03\\x08\\x0c\\x1f\\x03\\x08\\x0c\\x0c\\x03\\x08\\x0f\\x1f\\x03\" +\n\t\"\\x08\\x0f\\x1d\\x03\\x08\\x00\\x14\\x03\\x08\\x03\\x14\\x03\\x08\\x06\\x16\\x03\\x08\\x1e\" +\n\t\"#\\x03\\x08\\x11\\x11\\x03\\x08\\x10\\x18\\x03\\x08\\x14(\\x03\\x07)\\x1e\\x03\\x07.1\" +\n\t\"\\x03\\x07 $\\x03\\x07 '\\x03\\x078\\x08\\x03\\x07\\x0d0\\x03\\x07\\x0f7\\x03\\x07\\x05#\" +\n\t\"\\x03\\x07\\x05\\x1a\\x03\\x07\\x1a7\\x03\\x07\\x1d-\\x03\\x07\\x17\\x10\\x03\\x06)\\x1f\" +\n\t\"\\x03\\x062\\x0b\\x03\\x066\\x16\\x03\\x06\\x09\\x11\\x03\\x09(\\x1e\\x03\\x07!5\\x03\" +\n\t\"\\x0b\\x11\\x16\\x03\\x0a/\\x04\\x03\\x0a,\\x1a\\x03\\x0b\\x173\\x03\\x0a,1\\x03\\x0a/5\" +\n\t\"\\x03\\x0a\\x221\\x03\\x0a\\x22\\x0d\\x03\\x0a?%\\x03\\x0a<,\\x03\\x0a?#\\x03\\x0a>\\x19\" +\n\t\"\\x03\\x0a\\x08&\\x03\\x0a\\x0b\\x0e\\x03\\x0a\\x0c:\\x03\\x0a\\x0c+\\x03\\x0a\\x03\\x22\" +\n\t\"\\x03\\x0a\\x06)\\x03\\x0a\\x11\\x10\\x03\\x0a\\x11\\x1a\\x03\\x0a\\x17-\\x03\\x0a\\x14(\" +\n\t\"\\x03\\x09)\\x1e\\x03\\x09/\\x09\\x03\\x09.\\x00\\x03\\x09,\\x07\\x03\\x09/*\\x03\\x09-9\" +\n\t\"\\x03\\x09\\x228\\x03\\x09%\\x09\\x03\\x09:\\x12\\x03\\x09;\\x1d\\x03\\x09?\\x06\\x03\" +\n\t\"\\x093%\\x03\\x096\\x05\\x03\\x096\\x08\\x03\\x097\\x02\\x03\\x09\\x07,\\x03\\x09\\x04,\" +\n\t\"\\x03\\x09\\x1f\\x16\\x03\\x09\\x11\\x03\\x03\\x09\\x11\\x12\\x03\\x09\\x168\\x03\\x08*\" +\n\t\"\\x05\\x03\\x08/2\\x03\\x084:\\x03\\x08\\x22+\\x03\\x08 0\\x03\\x08&\\x0a\\x03\\x08;\" +\n\t\"\\x10\\x03\\x08>$\\x03\\x08>\\x18\\x03\\x0829\\x03\\x082:\\x03\\x081,\\x03\\x081<\\x03\" +\n\t\"\\x081\\x1c\\x03\\x087#\\x03\\x087*\\x03\\x08\\x09'\\x03\\x08\\x00\\x1d\\x03\\x08\\x05-\" +\n\t\"\\x03\\x08\\x1f4\\x03\\x08\\x1d\\x04\\x03\\x08\\x16\\x0f\\x03\\x07*7\\x03\\x07'!\\x03\" +\n\t\"\\x07%\\x1b\\x03\\x077\\x0c\\x03\\x07\\x0c1\\x03\\x07\\x0c.\\x03\\x07\\x00\\x06\\x03\\x07\" +\n\t\"\\x01\\x02\\x03\\x07\\x010\\x03\\x07\\x06=\\x03\\x07\\x01\\x03\\x03\\x07\\x01\\x13\\x03\" +\n\t\"\\x07\\x06\\x06\\x03\\x07\\x05\\x0a\\x03\\x07\\x1f\\x09\\x03\\x07\\x17:\\x03\\x06*1\\x03\" +\n\t\"\\x06-\\x1d\\x03\\x06\\x223\\x03\\x062:\\x03\\x060$\\x03\\x066\\x1e\\x03\\x064\\x12\\x03\" +\n\t\"\\x0645\\x03\\x06\\x0b\\x00\\x03\\x06\\x0b7\\x03\\x06\\x07\\x1f\\x03\\x06\\x15\\x12\\x03\" +\n\t\"\\x0c\\x05\\x0f\\x03\\x0b+\\x0b\\x03\\x0b+-\\x03\\x06\\x16\\x1b\\x03\\x06\\x15\\x17\\x03\" +\n\t\"\\x89\\xca\\xea\\x03\\x89\\xca\\xe8\\x03\\x0c8\\x10\\x03\\x0c8\\x01\\x03\\x0c8\\x0f\\x03\" +\n\t\"\\x0d8%\\x03\\x0d8!\\x03\\x0c8-\\x03\\x0c8/\\x03\\x0c8+\\x03\\x0c87\\x03\\x0c85\\x03\" +\n\t\"\\x0c9\\x09\\x03\\x0c9\\x0d\\x03\\x0c9\\x0f\\x03\\x0c9\\x0b\\x03\\xcfu\\x0c\\x03\\xcfu\" +\n\t\"\\x0f\\x03\\xcfu\\x0e\\x03\\xcfu\\x09\\x03\\x0c9\\x10\\x03\\x0d9\\x0c\\x03\\xcf`;\\x03\" +\n\t\"\\xcf`>\\x03\\xcf`9\\x03\\xcf`8\\x03\\xcf`7\\x03\\xcf`*\\x03\\xcf`-\\x03\\xcf`,\\x03\" +\n\t\"\\x0d\\x1b\\x1a\\x03\\x0d\\x1b&\\x03\\x0c=.\\x03\\x0c=%\\x03\\x0c>\\x1e\\x03\\x0c>\\x14\" +\n\t\"\\x03\\x0c?\\x06\\x03\\x0c?\\x0b\\x03\\x0c?\\x0c\\x03\\x0c?\\x0d\\x03\\x0c?\\x02\\x03\" +\n\t\"\\x0c>\\x0f\\x03\\x0c>\\x08\\x03\\x0c>\\x09\\x03\\x0c>,\\x03\\x0c>\\x0c\\x03\\x0c?\\x13\" +\n\t\"\\x03\\x0c?\\x16\\x03\\x0c?\\x15\\x03\\x0c?\\x1c\\x03\\x0c?\\x1f\\x03\\x0c?\\x1d\\x03\" +\n\t\"\\x0c?\\x1a\\x03\\x0c?\\x17\\x03\\x0c?\\x08\\x03\\x0c?\\x09\\x03\\x0c?\\x0e\\x03\\x0c?\" +\n\t\"\\x04\\x03\\x0c?\\x05\\x03\\x0c<?\\x03\\x0c=\\x00\\x03\\x0c=\\x06\\x03\\x0c=\\x05\\x03\" +\n\t\"\\x0c=\\x0c\\x03\\x0c=\\x0f\\x03\\x0c=\\x0d\\x03\\x0c=\\x0b\\x03\\x0c=\\x07\\x03\\x0c=\" +\n\t\"\\x19\\x03\\x0c=\\x15\\x03\\x0c=\\x11\\x03\\x0c=1\\x03\\x0c=3\\x03\\x0c=0\\x03\\x0c=>\" +\n\t\"\\x03\\x0c=2\\x03\\x0c=6\\x03\\x0c<\\x07\\x03\\x0c<\\x05\\x03\\x0e:!\\x03\\x0e:#\\x03\" +\n\t\"\\x0e8\\x09\\x03\\x0e:&\\x03\\x0e8\\x0b\\x03\\x0e:$\\x03\\x0e:,\\x03\\x0e8\\x1a\\x03\" +\n\t\"\\x0e8\\x1e\\x03\\x0e:*\\x03\\x0e:7\\x03\\x0e:5\\x03\\x0e:;\\x03\\x0e:\\x15\\x03\\x0e:<\" +\n\t\"\\x03\\x0e:4\\x03\\x0e:'\\x03\\x0e:-\\x03\\x0e:%\\x03\\x0e:?\\x03\\x0e:=\\x03\\x0e:)\" +\n\t\"\\x03\\x0e:/\\x03\\xcfs'\\x03\\x0d=\\x0f\\x03\\x0d+*\\x03\\x0d99\\x03\\x0d9;\\x03\\x0d9\" +\n\t\"?\\x03\\x0d)\\x0d\\x03\\x0d(%\\x02\\x01\\x18\\x02\\x01(\\x02\\x01\\x1e\\x03\\x0f$!\\x03\" +\n\t\"\\x0f87\\x03\\x0f4\\x0e\\x03\\x0f5\\x1d\\x03\\x06'\\x03\\x03\\x0f\\x08\\x18\\x03\\x0f\" +\n\t\"\\x0d\\x1b\\x03\\x0e2=\\x03\\x0e;\\x08\\x03\\x0e:\\x0b\\x03\\x0e\\x06$\\x03\\x0e\\x0d)\" +\n\t\"\\x03\\x0e\\x16\\x1f\\x03\\x0e\\x16\\x1b\\x03\\x0d$\\x0a\\x03\\x05,\\x1d\\x03\\x0d. \\x03\" +\n\t\"\\x0d.#\\x03\\x0c(/\\x03\\x09%\\x02\\x03\\x0d90\\x03\\x0d\\x0e4\\x03\\x0d\\x0d\\x0f\\x03\" +\n\t\"\\x0c#\\x00\\x03\\x0c,\\x1e\\x03\\x0c2\\x0e\\x03\\x0c\\x01\\x17\\x03\\x0c\\x09:\\x03\\x0e\" +\n\t\"\\x173\\x03\\x0c\\x08\\x03\\x03\\x0c\\x11\\x07\\x03\\x0c\\x10\\x18\\x03\\x0c\\x1f\\x1c\" +\n\t\"\\x03\\x0c\\x19\\x0e\\x03\\x0c\\x1a\\x1f\\x03\\x0f0>\\x03\\x0b->\\x03\\x0b<+\\x03\\x0b8\" +\n\t\"\\x13\\x03\\x0b\\x043\\x03\\x0b\\x14\\x03\\x03\\x0b\\x16%\\x03\\x0d\\x22&\\x03\\x0b\\x1a\" +\n\t\"\\x1a\\x03\\x0b\\x1a\\x04\\x03\\x0a%9\\x03\\x0a&2\\x03\\x0a&0\\x03\\x0a!\\x1a\\x03\\x0a!\" +\n\t\"7\\x03\\x0a5\\x10\\x03\\x0a=4\\x03\\x0a?\\x0e\\x03\\x0a>\\x10\\x03\\x0a\\x00 \\x03\\x0a\" +\n\t\"\\x0f:\\x03\\x0a\\x0f9\\x03\\x0a\\x0b\\x0a\\x03\\x0a\\x17%\\x03\\x0a\\x1b-\\x03\\x09-\" +\n\t\"\\x1a\\x03\\x09,4\\x03\\x09.,\\x03\\x09)\\x09\\x03\\x096!\\x03\\x091\\x1f\\x03\\x093\" +\n\t\"\\x16\\x03\\x0c+\\x1f\\x03\\x098 \\x03\\x098=\\x03\\x0c(\\x1a\\x03\\x0c(\\x16\\x03\\x09\" +\n\t\"\\x0a+\\x03\\x09\\x16\\x12\\x03\\x09\\x13\\x0e\\x03\\x09\\x153\\x03\\x08)!\\x03\\x09\\x1a\" +\n\t\"\\x01\\x03\\x09\\x18\\x01\\x03\\x08%#\\x03\\x08>\\x22\\x03\\x08\\x05%\\x03\\x08\\x02*\" +\n\t\"\\x03\\x08\\x15;\\x03\\x08\\x1b7\\x03\\x0f\\x07\\x1d\\x03\\x0f\\x04\\x03\\x03\\x070\\x0c\" +\n\t\"\\x03\\x07;\\x0b\\x03\\x07\\x08\\x17\\x03\\x07\\x12\\x06\\x03\\x06/-\\x03\\x0671\\x03\" +\n\t\"\\x065+\\x03\\x06>7\\x03\\x06\\x049\\x03\\x05+\\x1e\\x03\\x05,\\x17\\x03\\x05 \\x1d\\x03\" +\n\t\"\\x05\\x22\\x05\\x03\\x050\\x1d\"\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// idnaTrie. Total size: 29052 bytes (28.37 KiB). Checksum: ef06e7ecc26f36dd.\ntype idnaTrie struct{}\n\nfunc newIdnaTrie(i int) *idnaTrie {\n\treturn &idnaTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *idnaTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 125:\n\t\treturn uint16(idnaValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 125\n\t\treturn uint16(idnaSparse.lookup(n, b))\n\t}\n}\n\n// idnaValues: 127 blocks, 8128 entries, 16256 bytes\n// The third block is the zero block.\nvar idnaValues = [8128]uint16{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080,\n\t0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080,\n\t0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080,\n\t0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080,\n\t0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080,\n\t0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080,\n\t0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080,\n\t0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080,\n\t0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008,\n\t0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080,\n\t0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105,\n\t0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105,\n\t0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105,\n\t0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105,\n\t0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080,\n\t0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008,\n\t0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008,\n\t0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008,\n\t0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008,\n\t0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080,\n\t0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040,\n\t0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040,\n\t0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040,\n\t0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040,\n\t0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040,\n\t0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018,\n\t0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018,\n\t0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a,\n\t0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005,\n\t0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018,\n\t0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018,\n\t// Block 0x4, offset 0x100\n\t0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008,\n\t0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008,\n\t0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008,\n\t0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008,\n\t0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008,\n\t0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008,\n\t0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008,\n\t0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008,\n\t0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008,\n\t0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d,\n\t0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d,\n\t0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008,\n\t0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008,\n\t0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008,\n\t0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008,\n\t0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008,\n\t0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008,\n\t0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008,\n\t0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008,\n\t0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d,\n\t0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008,\n\t0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d,\n\t0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d,\n\t0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d,\n\t0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155,\n\t0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008,\n\t0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d,\n\t0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd,\n\t0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d,\n\t0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008,\n\t0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9,\n\t0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d,\n\t0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d,\n\t0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d,\n\t0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008,\n\t0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008,\n\t0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008,\n\t0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008,\n\t0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008,\n\t0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008,\n\t0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008,\n\t0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008,\n\t0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008,\n\t0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008,\n\t0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008,\n\t0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008,\n\t0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008,\n\t0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008,\n\t0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008,\n\t0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d,\n\t0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018,\n\t0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008,\n\t0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008,\n\t0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018,\n\t0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a,\n\t0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369,\n\t0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018,\n\t0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018,\n\t0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018,\n\t0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018,\n\t0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d,\n\t0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308,\n\t0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308,\n\t0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308,\n\t0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308,\n\t0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308,\n\t0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308,\n\t0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308,\n\t0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008,\n\t0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008,\n\t0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2,\n\t0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040,\n\t0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105,\n\t0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105,\n\t0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105,\n\t0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d,\n\t0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d,\n\t0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008,\n\t0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008,\n\t0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008,\n\t0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008,\n\t0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008,\n\t0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd,\n\t0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008,\n\t0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008,\n\t0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008,\n\t0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008,\n\t0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008,\n\t0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd,\n\t0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008,\n\t0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008,\n\t0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008,\n\t0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008,\n\t0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008,\n\t0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008,\n\t0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008,\n\t0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008,\n\t0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008,\n\t0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008,\n\t0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008,\n\t0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308,\n\t0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008,\n\t0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008,\n\t0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008,\n\t0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008,\n\t0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008,\n\t0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008,\n\t0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008,\n\t0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008,\n\t0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008,\n\t0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d,\n\t0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d,\n\t0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008,\n\t0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008,\n\t0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008,\n\t0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008,\n\t0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008,\n\t0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008,\n\t0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008,\n\t0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008,\n\t0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008,\n\t0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008,\n\t0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008,\n\t0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008,\n\t0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008,\n\t0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008,\n\t0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008,\n\t0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008,\n\t0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5,\n\t0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5,\n\t0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840,\n\t0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818,\n\t0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308,\n\t0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308,\n\t0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040,\n\t0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08,\n\t0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08,\n\t0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08,\n\t0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08,\n\t0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08,\n\t0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08,\n\t0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308,\n\t0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308,\n\t0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308,\n\t0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308,\n\t0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808,\n\t0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808,\n\t0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08,\n\t0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429,\n\t0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08,\n\t0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08,\n\t0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08,\n\t0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08,\n\t0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308,\n\t0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840,\n\t0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308,\n\t0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018,\n\t0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08,\n\t0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008,\n\t0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08,\n\t0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818,\n\t0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818,\n\t0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308,\n\t0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08,\n\t0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08,\n\t0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08,\n\t0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08,\n\t0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08,\n\t0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308,\n\t0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308,\n\t0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08,\n\t0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08,\n\t0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08,\n\t0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0808, 0x557: 0x0808,\n\t0x558: 0x0808, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040,\n\t0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08,\n\t0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08,\n\t0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040,\n\t0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040,\n\t0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040,\n\t0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308,\n\t0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008,\n\t0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308,\n\t0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308,\n\t0x598: 0x04c9, 0x599: 0x0501, 0x59a: 0x0539, 0x59b: 0x0571, 0x59c: 0x05a9, 0x59d: 0x05e1,\n\t0x59e: 0x0619, 0x59f: 0x0651, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308,\n\t0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008,\n\t0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008,\n\t0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008,\n\t0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008,\n\t0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008,\n\t0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008,\n\t0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040,\n\t0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008,\n\t0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008,\n\t0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008,\n\t0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040,\n\t0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008,\n\t0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040,\n\t0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040,\n\t0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040,\n\t0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008,\n\t0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040,\n\t0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008,\n\t0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0689, 0x61d: 0x06c1,\n\t0x61e: 0x0040, 0x61f: 0x06f9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308,\n\t0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008,\n\t0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008,\n\t0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018,\n\t0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018,\n\t0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x0040, 0x63f: 0x0040,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008,\n\t0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040,\n\t0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040,\n\t0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008,\n\t0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008,\n\t0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008,\n\t0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040,\n\t0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008,\n\t0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0731, 0x674: 0x0040, 0x675: 0x0008,\n\t0x676: 0x0769, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040,\n\t0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040,\n\t0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308,\n\t0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308,\n\t0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040,\n\t0x698: 0x0040, 0x699: 0x07a1, 0x69a: 0x07d9, 0x69b: 0x0811, 0x69c: 0x0008, 0x69d: 0x0040,\n\t0x69e: 0x0849, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040,\n\t0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008,\n\t0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008,\n\t0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308,\n\t0x6b6: 0x0040, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040,\n\t0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008,\n\t0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008,\n\t0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008,\n\t0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008,\n\t0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008,\n\t0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008,\n\t0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040,\n\t0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008,\n\t0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008,\n\t0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040,\n\t0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308,\n\t0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008,\n\t0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040,\n\t0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040,\n\t0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040,\n\t0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308,\n\t0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008,\n\t0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008,\n\t0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040,\n\t0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308,\n\t0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008,\n\t0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008,\n\t0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040,\n\t0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008,\n\t0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008,\n\t0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008,\n\t0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040,\n\t0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008,\n\t0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008,\n\t0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040,\n\t0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040,\n\t0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008,\n\t0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040,\n\t0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x0040, 0x796: 0x3308, 0x797: 0x3008,\n\t0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x0881, 0x79d: 0x08b9,\n\t0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308,\n\t0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008,\n\t0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008,\n\t0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018,\n\t0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040,\n\t0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008,\n\t0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040,\n\t0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040,\n\t0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040,\n\t0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040,\n\t0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008,\n\t0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008,\n\t0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008,\n\t0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008,\n\t0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040,\n\t0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040,\n\t0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308,\n\t0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040,\n\t0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040,\n\t0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040,\n\t0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308,\n\t0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008,\n\t0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008,\n\t0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040,\n\t0x836: 0x0040, 0x837: 0x0040, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018,\n\t0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0040, 0x845: 0x0008,\n\t0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008,\n\t0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040,\n\t0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008,\n\t0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008,\n\t0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008,\n\t0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040,\n\t0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008,\n\t0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008,\n\t0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040,\n\t0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040,\n\t0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008,\n\t0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040,\n\t0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040,\n\t0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040,\n\t0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308,\n\t0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008,\n\t0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008,\n\t0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040,\n\t0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040,\n\t0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040,\n\t0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008,\n\t0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040,\n\t0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008,\n\t0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018,\n\t0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308,\n\t0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008,\n\t0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008,\n\t0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018,\n\t0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008,\n\t0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040,\n\t0x906: 0x0040, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0040, 0x90a: 0x0008, 0x90b: 0x0040,\n\t0x90c: 0x0040, 0x90d: 0x0008, 0x90e: 0x0040, 0x90f: 0x0040, 0x910: 0x0040, 0x911: 0x0040,\n\t0x912: 0x0040, 0x913: 0x0040, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008,\n\t0x918: 0x0040, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008,\n\t0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0040, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008,\n\t0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0040, 0x929: 0x0040,\n\t0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0040, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008,\n\t0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x0929, 0x934: 0x3308, 0x935: 0x3308,\n\t0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x0040, 0x93b: 0x3308,\n\t0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x09d1, 0x944: 0x0008, 0x945: 0x0008,\n\t0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008,\n\t0x94c: 0x0008, 0x94d: 0x0a09, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008,\n\t0x952: 0x0a41, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0a79,\n\t0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0ab1, 0x95d: 0x0008,\n\t0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008,\n\t0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0ae9,\n\t0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040,\n\t0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0b21, 0x974: 0x3308, 0x975: 0x0b59,\n\t0x976: 0x0b91, 0x977: 0x0bc9, 0x978: 0x0c19, 0x979: 0x0c51, 0x97a: 0x3308, 0x97b: 0x3308,\n\t0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x3308, 0x981: 0x0ca1, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018,\n\t0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008,\n\t0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308,\n\t0x992: 0x3308, 0x993: 0x0cd9, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308,\n\t0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0d11,\n\t0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0d49, 0x9a3: 0x3308,\n\t0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0d81, 0x9a8: 0x3308, 0x9a9: 0x3308,\n\t0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0db9, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308,\n\t0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308,\n\t0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x0df1, 0x9ba: 0x3308, 0x9bb: 0x3308,\n\t0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008,\n\t0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008,\n\t0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008,\n\t0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008,\n\t0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008,\n\t0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008,\n\t0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008,\n\t0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0039, 0x9ed: 0x0ed1, 0x9ee: 0x0ee9, 0x9ef: 0x0008,\n\t0x9f0: 0x0ef9, 0x9f1: 0x0f09, 0x9f2: 0x0f19, 0x9f3: 0x0f31, 0x9f4: 0x0249, 0x9f5: 0x0f41,\n\t0x9f6: 0x0259, 0x9f7: 0x0f51, 0x9f8: 0x0359, 0x9f9: 0x0f61, 0x9fa: 0x0f71, 0x9fb: 0x0008,\n\t0x9fc: 0x00d9, 0x9fd: 0x0f81, 0x9fe: 0x0f99, 0x9ff: 0x0269,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0fa9, 0xa01: 0x0fb9, 0xa02: 0x0279, 0xa03: 0x0039, 0xa04: 0x0fc9, 0xa05: 0x0fe1,\n\t0xa06: 0x059d, 0xa07: 0x0ee9, 0xa08: 0x0ef9, 0xa09: 0x0f09, 0xa0a: 0x0ff9, 0xa0b: 0x1011,\n\t0xa0c: 0x1029, 0xa0d: 0x0f31, 0xa0e: 0x0008, 0xa0f: 0x0f51, 0xa10: 0x0f61, 0xa11: 0x1041,\n\t0xa12: 0x00d9, 0xa13: 0x1059, 0xa14: 0x05b5, 0xa15: 0x05b5, 0xa16: 0x0f99, 0xa17: 0x0fa9,\n\t0xa18: 0x0fb9, 0xa19: 0x059d, 0xa1a: 0x1071, 0xa1b: 0x1089, 0xa1c: 0x05cd, 0xa1d: 0x1099,\n\t0xa1e: 0x10b1, 0xa1f: 0x10c9, 0xa20: 0x10e1, 0xa21: 0x10f9, 0xa22: 0x0f41, 0xa23: 0x0269,\n\t0xa24: 0x0fb9, 0xa25: 0x1089, 0xa26: 0x1099, 0xa27: 0x10b1, 0xa28: 0x1111, 0xa29: 0x10e1,\n\t0xa2a: 0x10f9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008,\n\t0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008,\n\t0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x1129, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008,\n\t0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008,\n\t0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008,\n\t0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008,\n\t0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008,\n\t0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x1141, 0xa5c: 0x1159, 0xa5d: 0x1169,\n\t0xa5e: 0x1181, 0xa5f: 0x1029, 0xa60: 0x1199, 0xa61: 0x11a9, 0xa62: 0x11c1, 0xa63: 0x11d9,\n\t0xa64: 0x11f1, 0xa65: 0x1209, 0xa66: 0x1221, 0xa67: 0x05e5, 0xa68: 0x1239, 0xa69: 0x1251,\n\t0xa6a: 0xe17d, 0xa6b: 0x1269, 0xa6c: 0x1281, 0xa6d: 0x1299, 0xa6e: 0x12b1, 0xa6f: 0x12c9,\n\t0xa70: 0x12e1, 0xa71: 0x12f9, 0xa72: 0x1311, 0xa73: 0x1329, 0xa74: 0x1341, 0xa75: 0x1359,\n\t0xa76: 0x1371, 0xa77: 0x1389, 0xa78: 0x05fd, 0xa79: 0x13a1, 0xa7a: 0x13b9, 0xa7b: 0x13d1,\n\t0xa7c: 0x13e1, 0xa7d: 0x13f9, 0xa7e: 0x1411, 0xa7f: 0x1429,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008,\n\t0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008,\n\t0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008,\n\t0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008,\n\t0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008,\n\t0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008,\n\t0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008,\n\t0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008,\n\t0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008,\n\t0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008,\n\t0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008,\n\t0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008,\n\t0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008,\n\t0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008,\n\t0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x0615, 0xadb: 0x0635, 0xadc: 0x0008, 0xadd: 0x0008,\n\t0xade: 0x1441, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008,\n\t0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008,\n\t0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008,\n\t0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008,\n\t0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008,\n\t0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008,\n\t0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045,\n\t0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008,\n\t0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008,\n\t0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045,\n\t0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008,\n\t0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045,\n\t0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045,\n\t0xb30: 0x0008, 0xb31: 0x1459, 0xb32: 0x0008, 0xb33: 0x1471, 0xb34: 0x0008, 0xb35: 0x1489,\n\t0xb36: 0x0008, 0xb37: 0x14a1, 0xb38: 0x0008, 0xb39: 0x14b9, 0xb3a: 0x0008, 0xb3b: 0x14d1,\n\t0xb3c: 0x0008, 0xb3d: 0x14e9, 0xb3e: 0x0040, 0xb3f: 0x0040,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x1501, 0xb41: 0x1531, 0xb42: 0x1561, 0xb43: 0x1591, 0xb44: 0x15c1, 0xb45: 0x15f1,\n\t0xb46: 0x1621, 0xb47: 0x1651, 0xb48: 0x1501, 0xb49: 0x1531, 0xb4a: 0x1561, 0xb4b: 0x1591,\n\t0xb4c: 0x15c1, 0xb4d: 0x15f1, 0xb4e: 0x1621, 0xb4f: 0x1651, 0xb50: 0x1681, 0xb51: 0x16b1,\n\t0xb52: 0x16e1, 0xb53: 0x1711, 0xb54: 0x1741, 0xb55: 0x1771, 0xb56: 0x17a1, 0xb57: 0x17d1,\n\t0xb58: 0x1681, 0xb59: 0x16b1, 0xb5a: 0x16e1, 0xb5b: 0x1711, 0xb5c: 0x1741, 0xb5d: 0x1771,\n\t0xb5e: 0x17a1, 0xb5f: 0x17d1, 0xb60: 0x1801, 0xb61: 0x1831, 0xb62: 0x1861, 0xb63: 0x1891,\n\t0xb64: 0x18c1, 0xb65: 0x18f1, 0xb66: 0x1921, 0xb67: 0x1951, 0xb68: 0x1801, 0xb69: 0x1831,\n\t0xb6a: 0x1861, 0xb6b: 0x1891, 0xb6c: 0x18c1, 0xb6d: 0x18f1, 0xb6e: 0x1921, 0xb6f: 0x1951,\n\t0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x1981, 0xb73: 0x19b1, 0xb74: 0x19d9, 0xb75: 0x0040,\n\t0xb76: 0x0008, 0xb77: 0x1a01, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x064d, 0xb7b: 0x1459,\n\t0xb7c: 0x19b1, 0xb7d: 0x0666, 0xb7e: 0x1a31, 0xb7f: 0x0686,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x06a6, 0xb81: 0x1a4a, 0xb82: 0x1a79, 0xb83: 0x1aa9, 0xb84: 0x1ad1, 0xb85: 0x0040,\n\t0xb86: 0x0008, 0xb87: 0x1af9, 0xb88: 0x06c5, 0xb89: 0x1471, 0xb8a: 0x06dd, 0xb8b: 0x1489,\n\t0xb8c: 0x1aa9, 0xb8d: 0x1b2a, 0xb8e: 0x1b5a, 0xb8f: 0x1b8a, 0xb90: 0x0008, 0xb91: 0x0008,\n\t0xb92: 0x0008, 0xb93: 0x1bb9, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008,\n\t0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x06f5, 0xb9b: 0x14a1, 0xb9c: 0x0040, 0xb9d: 0x1bd2,\n\t0xb9e: 0x1c02, 0xb9f: 0x1c32, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x1c61,\n\t0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045,\n\t0xbaa: 0x070d, 0xbab: 0x14d1, 0xbac: 0xe04d, 0xbad: 0x1c7a, 0xbae: 0x03d2, 0xbaf: 0x1caa,\n\t0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x1cb9, 0xbb3: 0x1ce9, 0xbb4: 0x1d11, 0xbb5: 0x0040,\n\t0xbb6: 0x0008, 0xbb7: 0x1d39, 0xbb8: 0x0725, 0xbb9: 0x14b9, 0xbba: 0x0515, 0xbbb: 0x14e9,\n\t0xbbc: 0x1ce9, 0xbbd: 0x073e, 0xbbe: 0x075e, 0xbbf: 0x0040,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a,\n\t0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0,\n\t0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d,\n\t0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x077e,\n\t0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018,\n\t0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018,\n\t0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040,\n\t0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a,\n\t0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x1d69, 0xbf4: 0x1da1, 0xbf5: 0x0018,\n\t0xbf6: 0x1df1, 0xbf7: 0x1e29, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018,\n\t0xbfc: 0x1e7a, 0xbfd: 0x0018, 0xbfe: 0x079e, 0xbff: 0x0018,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018,\n\t0xc06: 0x0018, 0xc07: 0x1e92, 0xc08: 0x1eaa, 0xc09: 0x1ec2, 0xc0a: 0x0018, 0xc0b: 0x0018,\n\t0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018,\n\t0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x1ed9,\n\t0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018,\n\t0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340,\n\t0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040,\n\t0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340,\n\t0xc30: 0x1f41, 0xc31: 0x0f41, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x1f51, 0xc35: 0x1f61,\n\t0xc36: 0x1f71, 0xc37: 0x1f81, 0xc38: 0x1f91, 0xc39: 0x1fa1, 0xc3a: 0x1fb2, 0xc3b: 0x07bd,\n\t0xc3c: 0x1fc2, 0xc3d: 0x1fd2, 0xc3e: 0x1fe2, 0xc3f: 0x0f71,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1f41, 0xc41: 0x00c9, 0xc42: 0x0069, 0xc43: 0x0079, 0xc44: 0x1f51, 0xc45: 0x1f61,\n\t0xc46: 0x1f71, 0xc47: 0x1f81, 0xc48: 0x1f91, 0xc49: 0x1fa1, 0xc4a: 0x1fb2, 0xc4b: 0x07d5,\n\t0xc4c: 0x1fc2, 0xc4d: 0x1fd2, 0xc4e: 0x1fe2, 0xc4f: 0x0040, 0xc50: 0x0039, 0xc51: 0x0f09,\n\t0xc52: 0x00d9, 0xc53: 0x0369, 0xc54: 0x0ff9, 0xc55: 0x0249, 0xc56: 0x0f51, 0xc57: 0x0359,\n\t0xc58: 0x0f61, 0xc59: 0x0f71, 0xc5a: 0x0f99, 0xc5b: 0x01d9, 0xc5c: 0x0fa9, 0xc5d: 0x0040,\n\t0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018,\n\t0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x1ff1, 0xc69: 0x0018,\n\t0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018,\n\t0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018,\n\t0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018,\n\t0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x07ee, 0xc81: 0x080e, 0xc82: 0x1159, 0xc83: 0x082d, 0xc84: 0x0018, 0xc85: 0x084e,\n\t0xc86: 0x086e, 0xc87: 0x1011, 0xc88: 0x0018, 0xc89: 0x088d, 0xc8a: 0x0f31, 0xc8b: 0x0249,\n\t0xc8c: 0x0249, 0xc8d: 0x0249, 0xc8e: 0x0249, 0xc8f: 0x2009, 0xc90: 0x0f41, 0xc91: 0x0f41,\n\t0xc92: 0x0359, 0xc93: 0x0359, 0xc94: 0x0018, 0xc95: 0x0f71, 0xc96: 0x2021, 0xc97: 0x0018,\n\t0xc98: 0x0018, 0xc99: 0x0f99, 0xc9a: 0x2039, 0xc9b: 0x0269, 0xc9c: 0x0269, 0xc9d: 0x0269,\n\t0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x2049, 0xca1: 0x08ad, 0xca2: 0x2061, 0xca3: 0x0018,\n\t0xca4: 0x13d1, 0xca5: 0x0018, 0xca6: 0x2079, 0xca7: 0x0018, 0xca8: 0x13d1, 0xca9: 0x0018,\n\t0xcaa: 0x0f51, 0xcab: 0x2091, 0xcac: 0x0ee9, 0xcad: 0x1159, 0xcae: 0x0018, 0xcaf: 0x0f09,\n\t0xcb0: 0x0f09, 0xcb1: 0x1199, 0xcb2: 0x0040, 0xcb3: 0x0f61, 0xcb4: 0x00d9, 0xcb5: 0x20a9,\n\t0xcb6: 0x20c1, 0xcb7: 0x20d9, 0xcb8: 0x20f1, 0xcb9: 0x0f41, 0xcba: 0x0018, 0xcbb: 0x08cd,\n\t0xcbc: 0x2109, 0xcbd: 0x10b1, 0xcbe: 0x10b1, 0xcbf: 0x2109,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x08ed, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0ef9,\n\t0xcc6: 0x0ef9, 0xcc7: 0x0f09, 0xcc8: 0x0f41, 0xcc9: 0x0259, 0xcca: 0x0018, 0xccb: 0x0018,\n\t0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x2121, 0xcd1: 0x2151,\n\t0xcd2: 0x2181, 0xcd3: 0x21b9, 0xcd4: 0x21e9, 0xcd5: 0x2219, 0xcd6: 0x2249, 0xcd7: 0x2279,\n\t0xcd8: 0x22a9, 0xcd9: 0x22d9, 0xcda: 0x2309, 0xcdb: 0x2339, 0xcdc: 0x2369, 0xcdd: 0x2399,\n\t0xcde: 0x23c9, 0xcdf: 0x23f9, 0xce0: 0x0f41, 0xce1: 0x2421, 0xce2: 0x0905, 0xce3: 0x2439,\n\t0xce4: 0x1089, 0xce5: 0x2451, 0xce6: 0x0925, 0xce7: 0x2469, 0xce8: 0x2491, 0xce9: 0x0369,\n\t0xcea: 0x24a9, 0xceb: 0x0945, 0xcec: 0x0359, 0xced: 0x1159, 0xcee: 0x0ef9, 0xcef: 0x0f61,\n\t0xcf0: 0x0f41, 0xcf1: 0x2421, 0xcf2: 0x0965, 0xcf3: 0x2439, 0xcf4: 0x1089, 0xcf5: 0x2451,\n\t0xcf6: 0x0985, 0xcf7: 0x2469, 0xcf8: 0x2491, 0xcf9: 0x0369, 0xcfa: 0x24a9, 0xcfb: 0x09a5,\n\t0xcfc: 0x0359, 0xcfd: 0x1159, 0xcfe: 0x0ef9, 0xcff: 0x0f61,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018,\n\t0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040,\n\t0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040,\n\t0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040,\n\t0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040,\n\t0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x00c9, 0xd21: 0x0069, 0xd22: 0x0079, 0xd23: 0x1f51,\n\t0xd24: 0x1f61, 0xd25: 0x1f71, 0xd26: 0x1f81, 0xd27: 0x1f91, 0xd28: 0x1fa1, 0xd29: 0x2601,\n\t0xd2a: 0x2619, 0xd2b: 0x2631, 0xd2c: 0x2649, 0xd2d: 0x2661, 0xd2e: 0x2679, 0xd2f: 0x2691,\n\t0xd30: 0x26a9, 0xd31: 0x26c1, 0xd32: 0x26d9, 0xd33: 0x26f1, 0xd34: 0x0a06, 0xd35: 0x0a26,\n\t0xd36: 0x0a46, 0xd37: 0x0a66, 0xd38: 0x0a86, 0xd39: 0x0aa6, 0xd3a: 0x0ac6, 0xd3b: 0x0ae6,\n\t0xd3c: 0x0b06, 0xd3d: 0x270a, 0xd3e: 0x2732, 0xd3f: 0x275a,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x2782, 0xd41: 0x27aa, 0xd42: 0x27d2, 0xd43: 0x27fa, 0xd44: 0x2822, 0xd45: 0x284a,\n\t0xd46: 0x2872, 0xd47: 0x289a, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040,\n\t0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040,\n\t0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040,\n\t0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b26, 0xd5d: 0x0b46,\n\t0xd5e: 0x0b66, 0xd5f: 0x0b86, 0xd60: 0x0ba6, 0xd61: 0x0bc6, 0xd62: 0x0be6, 0xd63: 0x0c06,\n\t0xd64: 0x0c26, 0xd65: 0x0c46, 0xd66: 0x0c66, 0xd67: 0x0c86, 0xd68: 0x0ca6, 0xd69: 0x0cc6,\n\t0xd6a: 0x0ce6, 0xd6b: 0x0d06, 0xd6c: 0x0d26, 0xd6d: 0x0d46, 0xd6e: 0x0d66, 0xd6f: 0x0d86,\n\t0xd70: 0x0da6, 0xd71: 0x0dc6, 0xd72: 0x0de6, 0xd73: 0x0e06, 0xd74: 0x0e26, 0xd75: 0x0e46,\n\t0xd76: 0x0039, 0xd77: 0x0ee9, 0xd78: 0x1159, 0xd79: 0x0ef9, 0xd7a: 0x0f09, 0xd7b: 0x1199,\n\t0xd7c: 0x0f31, 0xd7d: 0x0249, 0xd7e: 0x0f41, 0xd7f: 0x0259,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0f51, 0xd81: 0x0359, 0xd82: 0x0f61, 0xd83: 0x0f71, 0xd84: 0x00d9, 0xd85: 0x0f99,\n\t0xd86: 0x2039, 0xd87: 0x0269, 0xd88: 0x01d9, 0xd89: 0x0fa9, 0xd8a: 0x0fb9, 0xd8b: 0x1089,\n\t0xd8c: 0x0279, 0xd8d: 0x0369, 0xd8e: 0x0289, 0xd8f: 0x13d1, 0xd90: 0x0039, 0xd91: 0x0ee9,\n\t0xd92: 0x1159, 0xd93: 0x0ef9, 0xd94: 0x0f09, 0xd95: 0x1199, 0xd96: 0x0f31, 0xd97: 0x0249,\n\t0xd98: 0x0f41, 0xd99: 0x0259, 0xd9a: 0x0f51, 0xd9b: 0x0359, 0xd9c: 0x0f61, 0xd9d: 0x0f71,\n\t0xd9e: 0x00d9, 0xd9f: 0x0f99, 0xda0: 0x2039, 0xda1: 0x0269, 0xda2: 0x01d9, 0xda3: 0x0fa9,\n\t0xda4: 0x0fb9, 0xda5: 0x1089, 0xda6: 0x0279, 0xda7: 0x0369, 0xda8: 0x0289, 0xda9: 0x13d1,\n\t0xdaa: 0x1f41, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018,\n\t0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018,\n\t0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018,\n\t0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008,\n\t0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008,\n\t0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008,\n\t0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008,\n\t0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008,\n\t0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x2971, 0xde3: 0x0ebd,\n\t0xde4: 0x2989, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d,\n\t0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0fe1, 0xdee: 0x1281, 0xdef: 0x0fc9,\n\t0xdf0: 0x1141, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d,\n\t0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008,\n\t0xdfc: 0x0259, 0xdfd: 0x1089, 0xdfe: 0x29a1, 0xdff: 0x29b9,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008,\n\t0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008,\n\t0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008,\n\t0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008,\n\t0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008,\n\t0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008,\n\t0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018,\n\t0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308,\n\t0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040,\n\t0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018,\n\t0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x26fd, 0xe41: 0x271d, 0xe42: 0x273d, 0xe43: 0x275d, 0xe44: 0x277d, 0xe45: 0x279d,\n\t0xe46: 0x27bd, 0xe47: 0x27dd, 0xe48: 0x27fd, 0xe49: 0x281d, 0xe4a: 0x283d, 0xe4b: 0x285d,\n\t0xe4c: 0x287d, 0xe4d: 0x289d, 0xe4e: 0x28bd, 0xe4f: 0x28dd, 0xe50: 0x28fd, 0xe51: 0x291d,\n\t0xe52: 0x293d, 0xe53: 0x295d, 0xe54: 0x297d, 0xe55: 0x299d, 0xe56: 0x0040, 0xe57: 0x0040,\n\t0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040,\n\t0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040,\n\t0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040,\n\t0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040,\n\t0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040,\n\t0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040,\n\t0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x29d1, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008,\n\t0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018,\n\t0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018,\n\t0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018,\n\t0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018,\n\t0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018,\n\t0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018,\n\t0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018,\n\t0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018,\n\t0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29bd, 0xeb9: 0x29dd, 0xeba: 0x29fd, 0xebb: 0x0018,\n\t0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x2b3d, 0xec1: 0x2b5d, 0xec2: 0x2b7d, 0xec3: 0x2b9d, 0xec4: 0x2bbd, 0xec5: 0x2bdd,\n\t0xec6: 0x2bdd, 0xec7: 0x2bdd, 0xec8: 0x2bfd, 0xec9: 0x2bfd, 0xeca: 0x2bfd, 0xecb: 0x2bfd,\n\t0xecc: 0x2c1d, 0xecd: 0x2c1d, 0xece: 0x2c1d, 0xecf: 0x2c3d, 0xed0: 0x2c5d, 0xed1: 0x2c5d,\n\t0xed2: 0x2a7d, 0xed3: 0x2a7d, 0xed4: 0x2c5d, 0xed5: 0x2c5d, 0xed6: 0x2c7d, 0xed7: 0x2c7d,\n\t0xed8: 0x2c5d, 0xed9: 0x2c5d, 0xeda: 0x2a7d, 0xedb: 0x2a7d, 0xedc: 0x2c5d, 0xedd: 0x2c5d,\n\t0xede: 0x2c3d, 0xedf: 0x2c3d, 0xee0: 0x2c9d, 0xee1: 0x2c9d, 0xee2: 0x2cbd, 0xee3: 0x2cbd,\n\t0xee4: 0x0040, 0xee5: 0x2cdd, 0xee6: 0x2cfd, 0xee7: 0x2d1d, 0xee8: 0x2d1d, 0xee9: 0x2d3d,\n\t0xeea: 0x2d5d, 0xeeb: 0x2d7d, 0xeec: 0x2d9d, 0xeed: 0x2dbd, 0xeee: 0x2ddd, 0xeef: 0x2dfd,\n\t0xef0: 0x2e1d, 0xef1: 0x2e3d, 0xef2: 0x2e3d, 0xef3: 0x2e5d, 0xef4: 0x2e7d, 0xef5: 0x2e7d,\n\t0xef6: 0x2e9d, 0xef7: 0x2ebd, 0xef8: 0x2e5d, 0xef9: 0x2edd, 0xefa: 0x2efd, 0xefb: 0x2edd,\n\t0xefc: 0x2e5d, 0xefd: 0x2f1d, 0xefe: 0x2f3d, 0xeff: 0x2f5d,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x2f7d, 0xf01: 0x2f9d, 0xf02: 0x2cfd, 0xf03: 0x2cdd, 0xf04: 0x2fbd, 0xf05: 0x2fdd,\n\t0xf06: 0x2ffd, 0xf07: 0x301d, 0xf08: 0x303d, 0xf09: 0x305d, 0xf0a: 0x307d, 0xf0b: 0x309d,\n\t0xf0c: 0x30bd, 0xf0d: 0x30dd, 0xf0e: 0x30fd, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018,\n\t0xf12: 0x311d, 0xf13: 0x313d, 0xf14: 0x315d, 0xf15: 0x317d, 0xf16: 0x319d, 0xf17: 0x31bd,\n\t0xf18: 0x31dd, 0xf19: 0x31fd, 0xf1a: 0x321d, 0xf1b: 0x323d, 0xf1c: 0x315d, 0xf1d: 0x325d,\n\t0xf1e: 0x327d, 0xf1f: 0x329d, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008,\n\t0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008,\n\t0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008,\n\t0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008,\n\t0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0040,\n\t0xf3c: 0x0040, 0xf3d: 0x0040, 0xf3e: 0x0040, 0xf3f: 0x0040,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x36a2, 0xf41: 0x36d2, 0xf42: 0x3702, 0xf43: 0x3732, 0xf44: 0x32bd, 0xf45: 0x32dd,\n\t0xf46: 0x32fd, 0xf47: 0x331d, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018,\n\t0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x333d, 0xf51: 0x3761,\n\t0xf52: 0x3779, 0xf53: 0x3791, 0xf54: 0x37a9, 0xf55: 0x37c1, 0xf56: 0x37d9, 0xf57: 0x37f1,\n\t0xf58: 0x3809, 0xf59: 0x3821, 0xf5a: 0x3839, 0xf5b: 0x3851, 0xf5c: 0x3869, 0xf5d: 0x3881,\n\t0xf5e: 0x3899, 0xf5f: 0x38b1, 0xf60: 0x335d, 0xf61: 0x337d, 0xf62: 0x339d, 0xf63: 0x33bd,\n\t0xf64: 0x33dd, 0xf65: 0x33dd, 0xf66: 0x33fd, 0xf67: 0x341d, 0xf68: 0x343d, 0xf69: 0x345d,\n\t0xf6a: 0x347d, 0xf6b: 0x349d, 0xf6c: 0x34bd, 0xf6d: 0x34dd, 0xf6e: 0x34fd, 0xf6f: 0x351d,\n\t0xf70: 0x353d, 0xf71: 0x355d, 0xf72: 0x357d, 0xf73: 0x359d, 0xf74: 0x35bd, 0xf75: 0x35dd,\n\t0xf76: 0x35fd, 0xf77: 0x361d, 0xf78: 0x363d, 0xf79: 0x365d, 0xf7a: 0x367d, 0xf7b: 0x369d,\n\t0xf7c: 0x38c9, 0xf7d: 0x3901, 0xf7e: 0x36bd, 0xf7f: 0x0018,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x36dd, 0xf81: 0x36fd, 0xf82: 0x371d, 0xf83: 0x373d, 0xf84: 0x375d, 0xf85: 0x377d,\n\t0xf86: 0x379d, 0xf87: 0x37bd, 0xf88: 0x37dd, 0xf89: 0x37fd, 0xf8a: 0x381d, 0xf8b: 0x383d,\n\t0xf8c: 0x385d, 0xf8d: 0x387d, 0xf8e: 0x389d, 0xf8f: 0x38bd, 0xf90: 0x38dd, 0xf91: 0x38fd,\n\t0xf92: 0x391d, 0xf93: 0x393d, 0xf94: 0x395d, 0xf95: 0x397d, 0xf96: 0x399d, 0xf97: 0x39bd,\n\t0xf98: 0x39dd, 0xf99: 0x39fd, 0xf9a: 0x3a1d, 0xf9b: 0x3a3d, 0xf9c: 0x3a5d, 0xf9d: 0x3a7d,\n\t0xf9e: 0x3a9d, 0xf9f: 0x3abd, 0xfa0: 0x3add, 0xfa1: 0x3afd, 0xfa2: 0x3b1d, 0xfa3: 0x3b3d,\n\t0xfa4: 0x3b5d, 0xfa5: 0x3b7d, 0xfa6: 0x127d, 0xfa7: 0x3b9d, 0xfa8: 0x3bbd, 0xfa9: 0x3bdd,\n\t0xfaa: 0x3bfd, 0xfab: 0x3c1d, 0xfac: 0x3c3d, 0xfad: 0x3c5d, 0xfae: 0x239d, 0xfaf: 0x3c7d,\n\t0xfb0: 0x3c9d, 0xfb1: 0x3939, 0xfb2: 0x3951, 0xfb3: 0x3969, 0xfb4: 0x3981, 0xfb5: 0x3999,\n\t0xfb6: 0x39b1, 0xfb7: 0x39c9, 0xfb8: 0x39e1, 0xfb9: 0x39f9, 0xfba: 0x3a11, 0xfbb: 0x3a29,\n\t0xfbc: 0x3a41, 0xfbd: 0x3a59, 0xfbe: 0x3a71, 0xfbf: 0x3a89,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x3aa1, 0xfc1: 0x3ac9, 0xfc2: 0x3af1, 0xfc3: 0x3b19, 0xfc4: 0x3b41, 0xfc5: 0x3b69,\n\t0xfc6: 0x3b91, 0xfc7: 0x3bb9, 0xfc8: 0x3be1, 0xfc9: 0x3c09, 0xfca: 0x3c39, 0xfcb: 0x3c69,\n\t0xfcc: 0x3c99, 0xfcd: 0x3cbd, 0xfce: 0x3cb1, 0xfcf: 0x3cdd, 0xfd0: 0x3cfd, 0xfd1: 0x3d15,\n\t0xfd2: 0x3d2d, 0xfd3: 0x3d45, 0xfd4: 0x3d5d, 0xfd5: 0x3d5d, 0xfd6: 0x3d45, 0xfd7: 0x3d75,\n\t0xfd8: 0x07bd, 0xfd9: 0x3d8d, 0xfda: 0x3da5, 0xfdb: 0x3dbd, 0xfdc: 0x3dd5, 0xfdd: 0x3ded,\n\t0xfde: 0x3e05, 0xfdf: 0x3e1d, 0xfe0: 0x3e35, 0xfe1: 0x3e4d, 0xfe2: 0x3e65, 0xfe3: 0x3e7d,\n\t0xfe4: 0x3e95, 0xfe5: 0x3e95, 0xfe6: 0x3ead, 0xfe7: 0x3ead, 0xfe8: 0x3ec5, 0xfe9: 0x3ec5,\n\t0xfea: 0x3edd, 0xfeb: 0x3ef5, 0xfec: 0x3f0d, 0xfed: 0x3f25, 0xfee: 0x3f3d, 0xfef: 0x3f3d,\n\t0xff0: 0x3f55, 0xff1: 0x3f55, 0xff2: 0x3f55, 0xff3: 0x3f6d, 0xff4: 0x3f85, 0xff5: 0x3f9d,\n\t0xff6: 0x3fb5, 0xff7: 0x3f9d, 0xff8: 0x3fcd, 0xff9: 0x3fe5, 0xffa: 0x3f6d, 0xffb: 0x3ffd,\n\t0xffc: 0x4015, 0xffd: 0x4015, 0xffe: 0x4015, 0xfff: 0x0040,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x3cc9, 0x1001: 0x3d31, 0x1002: 0x3d99, 0x1003: 0x3e01, 0x1004: 0x3e51, 0x1005: 0x3eb9,\n\t0x1006: 0x3f09, 0x1007: 0x3f59, 0x1008: 0x3fd9, 0x1009: 0x4041, 0x100a: 0x4091, 0x100b: 0x40e1,\n\t0x100c: 0x4131, 0x100d: 0x4199, 0x100e: 0x4201, 0x100f: 0x4251, 0x1010: 0x42a1, 0x1011: 0x42d9,\n\t0x1012: 0x4329, 0x1013: 0x4391, 0x1014: 0x43f9, 0x1015: 0x4431, 0x1016: 0x44b1, 0x1017: 0x4549,\n\t0x1018: 0x45c9, 0x1019: 0x4619, 0x101a: 0x4699, 0x101b: 0x4719, 0x101c: 0x4781, 0x101d: 0x47d1,\n\t0x101e: 0x4821, 0x101f: 0x4871, 0x1020: 0x48d9, 0x1021: 0x4959, 0x1022: 0x49c1, 0x1023: 0x4a11,\n\t0x1024: 0x4a61, 0x1025: 0x4ab1, 0x1026: 0x4ae9, 0x1027: 0x4b21, 0x1028: 0x4b59, 0x1029: 0x4b91,\n\t0x102a: 0x4be1, 0x102b: 0x4c31, 0x102c: 0x4cb1, 0x102d: 0x4d01, 0x102e: 0x4d69, 0x102f: 0x4de9,\n\t0x1030: 0x4e39, 0x1031: 0x4e71, 0x1032: 0x4ea9, 0x1033: 0x4f29, 0x1034: 0x4f91, 0x1035: 0x5011,\n\t0x1036: 0x5061, 0x1037: 0x50e1, 0x1038: 0x5119, 0x1039: 0x5169, 0x103a: 0x51b9, 0x103b: 0x5209,\n\t0x103c: 0x5259, 0x103d: 0x52a9, 0x103e: 0x5311, 0x103f: 0x5361,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x5399, 0x1041: 0x53e9, 0x1042: 0x5439, 0x1043: 0x5489, 0x1044: 0x54f1, 0x1045: 0x5541,\n\t0x1046: 0x5591, 0x1047: 0x55e1, 0x1048: 0x5661, 0x1049: 0x56c9, 0x104a: 0x5701, 0x104b: 0x5781,\n\t0x104c: 0x57b9, 0x104d: 0x5821, 0x104e: 0x5889, 0x104f: 0x58d9, 0x1050: 0x5929, 0x1051: 0x5979,\n\t0x1052: 0x59e1, 0x1053: 0x5a19, 0x1054: 0x5a69, 0x1055: 0x5ad1, 0x1056: 0x5b09, 0x1057: 0x5b89,\n\t0x1058: 0x5bd9, 0x1059: 0x5c01, 0x105a: 0x5c29, 0x105b: 0x5c51, 0x105c: 0x5c79, 0x105d: 0x5ca1,\n\t0x105e: 0x5cc9, 0x105f: 0x5cf1, 0x1060: 0x5d19, 0x1061: 0x5d41, 0x1062: 0x5d69, 0x1063: 0x5d99,\n\t0x1064: 0x5dc9, 0x1065: 0x5df9, 0x1066: 0x5e29, 0x1067: 0x5e59, 0x1068: 0x5e89, 0x1069: 0x5eb9,\n\t0x106a: 0x5ee9, 0x106b: 0x5f19, 0x106c: 0x5f49, 0x106d: 0x5f79, 0x106e: 0x5fa9, 0x106f: 0x5fd9,\n\t0x1070: 0x6009, 0x1071: 0x402d, 0x1072: 0x6039, 0x1073: 0x6051, 0x1074: 0x404d, 0x1075: 0x6069,\n\t0x1076: 0x6081, 0x1077: 0x6099, 0x1078: 0x406d, 0x1079: 0x406d, 0x107a: 0x60b1, 0x107b: 0x60c9,\n\t0x107c: 0x6101, 0x107d: 0x6139, 0x107e: 0x6171, 0x107f: 0x61a9,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x6211, 0x1081: 0x6229, 0x1082: 0x408d, 0x1083: 0x6241, 0x1084: 0x6259, 0x1085: 0x6271,\n\t0x1086: 0x6289, 0x1087: 0x62a1, 0x1088: 0x40ad, 0x1089: 0x62b9, 0x108a: 0x62e1, 0x108b: 0x62f9,\n\t0x108c: 0x40cd, 0x108d: 0x40cd, 0x108e: 0x6311, 0x108f: 0x6329, 0x1090: 0x6341, 0x1091: 0x40ed,\n\t0x1092: 0x410d, 0x1093: 0x412d, 0x1094: 0x414d, 0x1095: 0x416d, 0x1096: 0x6359, 0x1097: 0x6371,\n\t0x1098: 0x6389, 0x1099: 0x63a1, 0x109a: 0x63b9, 0x109b: 0x418d, 0x109c: 0x63d1, 0x109d: 0x63e9,\n\t0x109e: 0x6401, 0x109f: 0x41ad, 0x10a0: 0x41cd, 0x10a1: 0x6419, 0x10a2: 0x41ed, 0x10a3: 0x420d,\n\t0x10a4: 0x422d, 0x10a5: 0x6431, 0x10a6: 0x424d, 0x10a7: 0x6449, 0x10a8: 0x6479, 0x10a9: 0x6211,\n\t0x10aa: 0x426d, 0x10ab: 0x428d, 0x10ac: 0x42ad, 0x10ad: 0x42cd, 0x10ae: 0x64b1, 0x10af: 0x64f1,\n\t0x10b0: 0x6539, 0x10b1: 0x6551, 0x10b2: 0x42ed, 0x10b3: 0x6569, 0x10b4: 0x6581, 0x10b5: 0x6599,\n\t0x10b6: 0x430d, 0x10b7: 0x65b1, 0x10b8: 0x65c9, 0x10b9: 0x65b1, 0x10ba: 0x65e1, 0x10bb: 0x65f9,\n\t0x10bc: 0x432d, 0x10bd: 0x6611, 0x10be: 0x6629, 0x10bf: 0x6611,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x434d, 0x10c1: 0x436d, 0x10c2: 0x0040, 0x10c3: 0x6641, 0x10c4: 0x6659, 0x10c5: 0x6671,\n\t0x10c6: 0x6689, 0x10c7: 0x0040, 0x10c8: 0x66c1, 0x10c9: 0x66d9, 0x10ca: 0x66f1, 0x10cb: 0x6709,\n\t0x10cc: 0x6721, 0x10cd: 0x6739, 0x10ce: 0x6401, 0x10cf: 0x6751, 0x10d0: 0x6769, 0x10d1: 0x6781,\n\t0x10d2: 0x438d, 0x10d3: 0x6799, 0x10d4: 0x6289, 0x10d5: 0x43ad, 0x10d6: 0x43cd, 0x10d7: 0x67b1,\n\t0x10d8: 0x0040, 0x10d9: 0x43ed, 0x10da: 0x67c9, 0x10db: 0x67e1, 0x10dc: 0x67f9, 0x10dd: 0x6811,\n\t0x10de: 0x6829, 0x10df: 0x6859, 0x10e0: 0x6889, 0x10e1: 0x68b1, 0x10e2: 0x68d9, 0x10e3: 0x6901,\n\t0x10e4: 0x6929, 0x10e5: 0x6951, 0x10e6: 0x6979, 0x10e7: 0x69a1, 0x10e8: 0x69c9, 0x10e9: 0x69f1,\n\t0x10ea: 0x6a21, 0x10eb: 0x6a51, 0x10ec: 0x6a81, 0x10ed: 0x6ab1, 0x10ee: 0x6ae1, 0x10ef: 0x6b11,\n\t0x10f0: 0x6b41, 0x10f1: 0x6b71, 0x10f2: 0x6ba1, 0x10f3: 0x6bd1, 0x10f4: 0x6c01, 0x10f5: 0x6c31,\n\t0x10f6: 0x6c61, 0x10f7: 0x6c91, 0x10f8: 0x6cc1, 0x10f9: 0x6cf1, 0x10fa: 0x6d21, 0x10fb: 0x6d51,\n\t0x10fc: 0x6d81, 0x10fd: 0x6db1, 0x10fe: 0x6de1, 0x10ff: 0x440d,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008,\n\t0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008,\n\t0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008,\n\t0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008,\n\t0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0xe00d, 0x111d: 0x0008,\n\t0x111e: 0xe00d, 0x111f: 0x0008, 0x1120: 0xe00d, 0x1121: 0x0008, 0x1122: 0xe00d, 0x1123: 0x0008,\n\t0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008,\n\t0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x3308,\n\t0x1130: 0x3318, 0x1131: 0x3318, 0x1132: 0x3318, 0x1133: 0x0018, 0x1134: 0x3308, 0x1135: 0x3308,\n\t0x1136: 0x3308, 0x1137: 0x3308, 0x1138: 0x3308, 0x1139: 0x3308, 0x113a: 0x3308, 0x113b: 0x3308,\n\t0x113c: 0x3308, 0x113d: 0x3308, 0x113e: 0x0018, 0x113f: 0x0008,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008,\n\t0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008,\n\t0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008,\n\t0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008,\n\t0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0x0ea1, 0x115d: 0x6e11,\n\t0x115e: 0x3308, 0x115f: 0x3308, 0x1160: 0x0008, 0x1161: 0x0008, 0x1162: 0x0008, 0x1163: 0x0008,\n\t0x1164: 0x0008, 0x1165: 0x0008, 0x1166: 0x0008, 0x1167: 0x0008, 0x1168: 0x0008, 0x1169: 0x0008,\n\t0x116a: 0x0008, 0x116b: 0x0008, 0x116c: 0x0008, 0x116d: 0x0008, 0x116e: 0x0008, 0x116f: 0x0008,\n\t0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008,\n\t0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0x0008, 0x117a: 0x0008, 0x117b: 0x0008,\n\t0x117c: 0x0008, 0x117d: 0x0008, 0x117e: 0x0008, 0x117f: 0x0008,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x0018, 0x1181: 0x0018, 0x1182: 0x0018, 0x1183: 0x0018, 0x1184: 0x0018, 0x1185: 0x0018,\n\t0x1186: 0x0018, 0x1187: 0x0018, 0x1188: 0x0018, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0x0018,\n\t0x118c: 0x0018, 0x118d: 0x0018, 0x118e: 0x0018, 0x118f: 0x0018, 0x1190: 0x0018, 0x1191: 0x0018,\n\t0x1192: 0x0018, 0x1193: 0x0018, 0x1194: 0x0018, 0x1195: 0x0018, 0x1196: 0x0018, 0x1197: 0x0008,\n\t0x1198: 0x0008, 0x1199: 0x0008, 0x119a: 0x0008, 0x119b: 0x0008, 0x119c: 0x0008, 0x119d: 0x0008,\n\t0x119e: 0x0008, 0x119f: 0x0008, 0x11a0: 0x0018, 0x11a1: 0x0018, 0x11a2: 0xe00d, 0x11a3: 0x0008,\n\t0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008,\n\t0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008,\n\t0x11b0: 0x0008, 0x11b1: 0x0008, 0x11b2: 0xe00d, 0x11b3: 0x0008, 0x11b4: 0xe00d, 0x11b5: 0x0008,\n\t0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008,\n\t0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008,\n\t0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0xe00d, 0x11c9: 0x0008, 0x11ca: 0xe00d, 0x11cb: 0x0008,\n\t0x11cc: 0xe00d, 0x11cd: 0x0008, 0x11ce: 0xe00d, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008,\n\t0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0xe00d, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008,\n\t0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008,\n\t0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008,\n\t0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008,\n\t0x11ea: 0xe00d, 0x11eb: 0x0008, 0x11ec: 0xe00d, 0x11ed: 0x0008, 0x11ee: 0xe00d, 0x11ef: 0x0008,\n\t0x11f0: 0xe0fd, 0x11f1: 0x0008, 0x11f2: 0x0008, 0x11f3: 0x0008, 0x11f4: 0x0008, 0x11f5: 0x0008,\n\t0x11f6: 0x0008, 0x11f7: 0x0008, 0x11f8: 0x0008, 0x11f9: 0xe01d, 0x11fa: 0x0008, 0x11fb: 0xe03d,\n\t0x11fc: 0x0008, 0x11fd: 0x442d, 0x11fe: 0xe00d, 0x11ff: 0x0008,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0xe00d, 0x1205: 0x0008,\n\t0x1206: 0xe00d, 0x1207: 0x0008, 0x1208: 0x0008, 0x1209: 0x0018, 0x120a: 0x0018, 0x120b: 0xe03d,\n\t0x120c: 0x0008, 0x120d: 0x11d9, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0xe00d, 0x1211: 0x0008,\n\t0x1212: 0xe00d, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008,\n\t0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0xe00d, 0x121b: 0x0008, 0x121c: 0xe00d, 0x121d: 0x0008,\n\t0x121e: 0xe00d, 0x121f: 0x0008, 0x1220: 0xe00d, 0x1221: 0x0008, 0x1222: 0xe00d, 0x1223: 0x0008,\n\t0x1224: 0xe00d, 0x1225: 0x0008, 0x1226: 0xe00d, 0x1227: 0x0008, 0x1228: 0xe00d, 0x1229: 0x0008,\n\t0x122a: 0x6e29, 0x122b: 0x1029, 0x122c: 0x11c1, 0x122d: 0x6e41, 0x122e: 0x1221, 0x122f: 0x0040,\n\t0x1230: 0x6e59, 0x1231: 0x6e71, 0x1232: 0x1239, 0x1233: 0x444d, 0x1234: 0xe00d, 0x1235: 0x0008,\n\t0x1236: 0xe00d, 0x1237: 0x0008, 0x1238: 0x0040, 0x1239: 0x0040, 0x123a: 0x0040, 0x123b: 0x0040,\n\t0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x64d5, 0x1241: 0x64f5, 0x1242: 0x6515, 0x1243: 0x6535, 0x1244: 0x6555, 0x1245: 0x6575,\n\t0x1246: 0x6595, 0x1247: 0x65b5, 0x1248: 0x65d5, 0x1249: 0x65f5, 0x124a: 0x6615, 0x124b: 0x6635,\n\t0x124c: 0x6655, 0x124d: 0x6675, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x6695, 0x1251: 0x0008,\n\t0x1252: 0x66b5, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x66d5, 0x1256: 0x66f5, 0x1257: 0x6715,\n\t0x1258: 0x6735, 0x1259: 0x6755, 0x125a: 0x6775, 0x125b: 0x6795, 0x125c: 0x67b5, 0x125d: 0x67d5,\n\t0x125e: 0x67f5, 0x125f: 0x0008, 0x1260: 0x6815, 0x1261: 0x0008, 0x1262: 0x6835, 0x1263: 0x0008,\n\t0x1264: 0x0008, 0x1265: 0x6855, 0x1266: 0x6875, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008,\n\t0x126a: 0x6895, 0x126b: 0x68b5, 0x126c: 0x68d5, 0x126d: 0x68f5, 0x126e: 0x6915, 0x126f: 0x6935,\n\t0x1270: 0x6955, 0x1271: 0x6975, 0x1272: 0x6995, 0x1273: 0x69b5, 0x1274: 0x69d5, 0x1275: 0x69f5,\n\t0x1276: 0x6a15, 0x1277: 0x6a35, 0x1278: 0x6a55, 0x1279: 0x6a75, 0x127a: 0x6a95, 0x127b: 0x6ab5,\n\t0x127c: 0x6ad5, 0x127d: 0x6af5, 0x127e: 0x6b15, 0x127f: 0x6b35,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x7a95, 0x1281: 0x7ab5, 0x1282: 0x7ad5, 0x1283: 0x7af5, 0x1284: 0x7b15, 0x1285: 0x7b35,\n\t0x1286: 0x7b55, 0x1287: 0x7b75, 0x1288: 0x7b95, 0x1289: 0x7bb5, 0x128a: 0x7bd5, 0x128b: 0x7bf5,\n\t0x128c: 0x7c15, 0x128d: 0x7c35, 0x128e: 0x7c55, 0x128f: 0x6ec9, 0x1290: 0x6ef1, 0x1291: 0x6f19,\n\t0x1292: 0x7c75, 0x1293: 0x7c95, 0x1294: 0x7cb5, 0x1295: 0x6f41, 0x1296: 0x6f69, 0x1297: 0x6f91,\n\t0x1298: 0x7cd5, 0x1299: 0x7cf5, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040,\n\t0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040,\n\t0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040,\n\t0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040,\n\t0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040,\n\t0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040,\n\t0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x6fb9, 0x12c1: 0x6fd1, 0x12c2: 0x6fe9, 0x12c3: 0x7d15, 0x12c4: 0x7d35, 0x12c5: 0x7001,\n\t0x12c6: 0x7001, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040,\n\t0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040,\n\t0x12d2: 0x0040, 0x12d3: 0x7019, 0x12d4: 0x7041, 0x12d5: 0x7069, 0x12d6: 0x7091, 0x12d7: 0x70b9,\n\t0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x70e1,\n\t0x12de: 0x3308, 0x12df: 0x7109, 0x12e0: 0x7131, 0x12e1: 0x20a9, 0x12e2: 0x20f1, 0x12e3: 0x7149,\n\t0x12e4: 0x7161, 0x12e5: 0x7179, 0x12e6: 0x7191, 0x12e7: 0x71a9, 0x12e8: 0x71c1, 0x12e9: 0x1fb2,\n\t0x12ea: 0x71d9, 0x12eb: 0x7201, 0x12ec: 0x7229, 0x12ed: 0x7261, 0x12ee: 0x7299, 0x12ef: 0x72c1,\n\t0x12f0: 0x72e9, 0x12f1: 0x7311, 0x12f2: 0x7339, 0x12f3: 0x7361, 0x12f4: 0x7389, 0x12f5: 0x73b1,\n\t0x12f6: 0x73d9, 0x12f7: 0x0040, 0x12f8: 0x7401, 0x12f9: 0x7429, 0x12fa: 0x7451, 0x12fb: 0x7479,\n\t0x12fc: 0x74a1, 0x12fd: 0x0040, 0x12fe: 0x74c9, 0x12ff: 0x0040,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x74f1, 0x1301: 0x7519, 0x1302: 0x0040, 0x1303: 0x7541, 0x1304: 0x7569, 0x1305: 0x0040,\n\t0x1306: 0x7591, 0x1307: 0x75b9, 0x1308: 0x75e1, 0x1309: 0x7609, 0x130a: 0x7631, 0x130b: 0x7659,\n\t0x130c: 0x7681, 0x130d: 0x76a9, 0x130e: 0x76d1, 0x130f: 0x76f9, 0x1310: 0x7721, 0x1311: 0x7721,\n\t0x1312: 0x7739, 0x1313: 0x7739, 0x1314: 0x7739, 0x1315: 0x7739, 0x1316: 0x7751, 0x1317: 0x7751,\n\t0x1318: 0x7751, 0x1319: 0x7751, 0x131a: 0x7769, 0x131b: 0x7769, 0x131c: 0x7769, 0x131d: 0x7769,\n\t0x131e: 0x7781, 0x131f: 0x7781, 0x1320: 0x7781, 0x1321: 0x7781, 0x1322: 0x7799, 0x1323: 0x7799,\n\t0x1324: 0x7799, 0x1325: 0x7799, 0x1326: 0x77b1, 0x1327: 0x77b1, 0x1328: 0x77b1, 0x1329: 0x77b1,\n\t0x132a: 0x77c9, 0x132b: 0x77c9, 0x132c: 0x77c9, 0x132d: 0x77c9, 0x132e: 0x77e1, 0x132f: 0x77e1,\n\t0x1330: 0x77e1, 0x1331: 0x77e1, 0x1332: 0x77f9, 0x1333: 0x77f9, 0x1334: 0x77f9, 0x1335: 0x77f9,\n\t0x1336: 0x7811, 0x1337: 0x7811, 0x1338: 0x7811, 0x1339: 0x7811, 0x133a: 0x7829, 0x133b: 0x7829,\n\t0x133c: 0x7829, 0x133d: 0x7829, 0x133e: 0x7841, 0x133f: 0x7841,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x7841, 0x1341: 0x7841, 0x1342: 0x7859, 0x1343: 0x7859, 0x1344: 0x7871, 0x1345: 0x7871,\n\t0x1346: 0x7889, 0x1347: 0x7889, 0x1348: 0x78a1, 0x1349: 0x78a1, 0x134a: 0x78b9, 0x134b: 0x78b9,\n\t0x134c: 0x78d1, 0x134d: 0x78d1, 0x134e: 0x78e9, 0x134f: 0x78e9, 0x1350: 0x78e9, 0x1351: 0x78e9,\n\t0x1352: 0x7901, 0x1353: 0x7901, 0x1354: 0x7901, 0x1355: 0x7901, 0x1356: 0x7919, 0x1357: 0x7919,\n\t0x1358: 0x7919, 0x1359: 0x7919, 0x135a: 0x7931, 0x135b: 0x7931, 0x135c: 0x7931, 0x135d: 0x7931,\n\t0x135e: 0x7949, 0x135f: 0x7949, 0x1360: 0x7961, 0x1361: 0x7961, 0x1362: 0x7961, 0x1363: 0x7961,\n\t0x1364: 0x7979, 0x1365: 0x7979, 0x1366: 0x7991, 0x1367: 0x7991, 0x1368: 0x7991, 0x1369: 0x7991,\n\t0x136a: 0x79a9, 0x136b: 0x79a9, 0x136c: 0x79a9, 0x136d: 0x79a9, 0x136e: 0x79c1, 0x136f: 0x79c1,\n\t0x1370: 0x79d9, 0x1371: 0x79d9, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818,\n\t0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818,\n\t0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0040, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040,\n\t0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040,\n\t0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040,\n\t0x1392: 0x0040, 0x1393: 0x79f1, 0x1394: 0x79f1, 0x1395: 0x79f1, 0x1396: 0x79f1, 0x1397: 0x7a09,\n\t0x1398: 0x7a09, 0x1399: 0x7a21, 0x139a: 0x7a21, 0x139b: 0x7a39, 0x139c: 0x7a39, 0x139d: 0x0479,\n\t0x139e: 0x7a51, 0x139f: 0x7a51, 0x13a0: 0x7a69, 0x13a1: 0x7a69, 0x13a2: 0x7a81, 0x13a3: 0x7a81,\n\t0x13a4: 0x7a99, 0x13a5: 0x7a99, 0x13a6: 0x7a99, 0x13a7: 0x7a99, 0x13a8: 0x7ab1, 0x13a9: 0x7ab1,\n\t0x13aa: 0x7ac9, 0x13ab: 0x7ac9, 0x13ac: 0x7af1, 0x13ad: 0x7af1, 0x13ae: 0x7b19, 0x13af: 0x7b19,\n\t0x13b0: 0x7b41, 0x13b1: 0x7b41, 0x13b2: 0x7b69, 0x13b3: 0x7b69, 0x13b4: 0x7b91, 0x13b5: 0x7b91,\n\t0x13b6: 0x7bb9, 0x13b7: 0x7bb9, 0x13b8: 0x7bb9, 0x13b9: 0x7be1, 0x13ba: 0x7be1, 0x13bb: 0x7be1,\n\t0x13bc: 0x7c09, 0x13bd: 0x7c09, 0x13be: 0x7c09, 0x13bf: 0x7c09,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x85f9, 0x13c1: 0x8621, 0x13c2: 0x8649, 0x13c3: 0x8671, 0x13c4: 0x8699, 0x13c5: 0x86c1,\n\t0x13c6: 0x86e9, 0x13c7: 0x8711, 0x13c8: 0x8739, 0x13c9: 0x8761, 0x13ca: 0x8789, 0x13cb: 0x87b1,\n\t0x13cc: 0x87d9, 0x13cd: 0x8801, 0x13ce: 0x8829, 0x13cf: 0x8851, 0x13d0: 0x8879, 0x13d1: 0x88a1,\n\t0x13d2: 0x88c9, 0x13d3: 0x88f1, 0x13d4: 0x8919, 0x13d5: 0x8941, 0x13d6: 0x8969, 0x13d7: 0x8991,\n\t0x13d8: 0x89b9, 0x13d9: 0x89e1, 0x13da: 0x8a09, 0x13db: 0x8a31, 0x13dc: 0x8a59, 0x13dd: 0x8a81,\n\t0x13de: 0x8aaa, 0x13df: 0x8ada, 0x13e0: 0x8b0a, 0x13e1: 0x8b3a, 0x13e2: 0x8b6a, 0x13e3: 0x8b9a,\n\t0x13e4: 0x8bc9, 0x13e5: 0x8bf1, 0x13e6: 0x7c71, 0x13e7: 0x8c19, 0x13e8: 0x7be1, 0x13e9: 0x7c99,\n\t0x13ea: 0x8c41, 0x13eb: 0x8c69, 0x13ec: 0x7d39, 0x13ed: 0x8c91, 0x13ee: 0x7d61, 0x13ef: 0x7d89,\n\t0x13f0: 0x8cb9, 0x13f1: 0x8ce1, 0x13f2: 0x7e29, 0x13f3: 0x8d09, 0x13f4: 0x7e51, 0x13f5: 0x7e79,\n\t0x13f6: 0x8d31, 0x13f7: 0x8d59, 0x13f8: 0x7ec9, 0x13f9: 0x8d81, 0x13fa: 0x7ef1, 0x13fb: 0x7f19,\n\t0x13fc: 0x83a1, 0x13fd: 0x83c9, 0x13fe: 0x8441, 0x13ff: 0x8469,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x8491, 0x1401: 0x8531, 0x1402: 0x8559, 0x1403: 0x8581, 0x1404: 0x85a9, 0x1405: 0x8649,\n\t0x1406: 0x8671, 0x1407: 0x8699, 0x1408: 0x8da9, 0x1409: 0x8739, 0x140a: 0x8dd1, 0x140b: 0x8df9,\n\t0x140c: 0x8829, 0x140d: 0x8e21, 0x140e: 0x8851, 0x140f: 0x8879, 0x1410: 0x8a81, 0x1411: 0x8e49,\n\t0x1412: 0x8e71, 0x1413: 0x89b9, 0x1414: 0x8e99, 0x1415: 0x89e1, 0x1416: 0x8a09, 0x1417: 0x7c21,\n\t0x1418: 0x7c49, 0x1419: 0x8ec1, 0x141a: 0x7c71, 0x141b: 0x8ee9, 0x141c: 0x7cc1, 0x141d: 0x7ce9,\n\t0x141e: 0x7d11, 0x141f: 0x7d39, 0x1420: 0x8f11, 0x1421: 0x7db1, 0x1422: 0x7dd9, 0x1423: 0x7e01,\n\t0x1424: 0x7e29, 0x1425: 0x8f39, 0x1426: 0x7ec9, 0x1427: 0x7f41, 0x1428: 0x7f69, 0x1429: 0x7f91,\n\t0x142a: 0x7fb9, 0x142b: 0x7fe1, 0x142c: 0x8031, 0x142d: 0x8059, 0x142e: 0x8081, 0x142f: 0x80a9,\n\t0x1430: 0x80d1, 0x1431: 0x80f9, 0x1432: 0x8f61, 0x1433: 0x8121, 0x1434: 0x8149, 0x1435: 0x8171,\n\t0x1436: 0x8199, 0x1437: 0x81c1, 0x1438: 0x81e9, 0x1439: 0x8239, 0x143a: 0x8261, 0x143b: 0x8289,\n\t0x143c: 0x82b1, 0x143d: 0x82d9, 0x143e: 0x8301, 0x143f: 0x8329,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x8351, 0x1441: 0x8379, 0x1442: 0x83f1, 0x1443: 0x8419, 0x1444: 0x84b9, 0x1445: 0x84e1,\n\t0x1446: 0x8509, 0x1447: 0x8531, 0x1448: 0x8559, 0x1449: 0x85d1, 0x144a: 0x85f9, 0x144b: 0x8621,\n\t0x144c: 0x8649, 0x144d: 0x8f89, 0x144e: 0x86c1, 0x144f: 0x86e9, 0x1450: 0x8711, 0x1451: 0x8739,\n\t0x1452: 0x87b1, 0x1453: 0x87d9, 0x1454: 0x8801, 0x1455: 0x8829, 0x1456: 0x8fb1, 0x1457: 0x88a1,\n\t0x1458: 0x88c9, 0x1459: 0x8fd9, 0x145a: 0x8941, 0x145b: 0x8969, 0x145c: 0x8991, 0x145d: 0x89b9,\n\t0x145e: 0x9001, 0x145f: 0x7c71, 0x1460: 0x8ee9, 0x1461: 0x7d39, 0x1462: 0x8f11, 0x1463: 0x7e29,\n\t0x1464: 0x8f39, 0x1465: 0x7ec9, 0x1466: 0x9029, 0x1467: 0x80d1, 0x1468: 0x9051, 0x1469: 0x9079,\n\t0x146a: 0x90a1, 0x146b: 0x8531, 0x146c: 0x8559, 0x146d: 0x8649, 0x146e: 0x8829, 0x146f: 0x8fb1,\n\t0x1470: 0x89b9, 0x1471: 0x9001, 0x1472: 0x90c9, 0x1473: 0x9101, 0x1474: 0x9139, 0x1475: 0x9171,\n\t0x1476: 0x9199, 0x1477: 0x91c1, 0x1478: 0x91e9, 0x1479: 0x9211, 0x147a: 0x9239, 0x147b: 0x9261,\n\t0x147c: 0x9289, 0x147d: 0x92b1, 0x147e: 0x92d9, 0x147f: 0x9301,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x9329, 0x1481: 0x9351, 0x1482: 0x9379, 0x1483: 0x93a1, 0x1484: 0x93c9, 0x1485: 0x93f1,\n\t0x1486: 0x9419, 0x1487: 0x9441, 0x1488: 0x9469, 0x1489: 0x9491, 0x148a: 0x94b9, 0x148b: 0x94e1,\n\t0x148c: 0x9079, 0x148d: 0x9509, 0x148e: 0x9531, 0x148f: 0x9559, 0x1490: 0x9581, 0x1491: 0x9171,\n\t0x1492: 0x9199, 0x1493: 0x91c1, 0x1494: 0x91e9, 0x1495: 0x9211, 0x1496: 0x9239, 0x1497: 0x9261,\n\t0x1498: 0x9289, 0x1499: 0x92b1, 0x149a: 0x92d9, 0x149b: 0x9301, 0x149c: 0x9329, 0x149d: 0x9351,\n\t0x149e: 0x9379, 0x149f: 0x93a1, 0x14a0: 0x93c9, 0x14a1: 0x93f1, 0x14a2: 0x9419, 0x14a3: 0x9441,\n\t0x14a4: 0x9469, 0x14a5: 0x9491, 0x14a6: 0x94b9, 0x14a7: 0x94e1, 0x14a8: 0x9079, 0x14a9: 0x9509,\n\t0x14aa: 0x9531, 0x14ab: 0x9559, 0x14ac: 0x9581, 0x14ad: 0x9491, 0x14ae: 0x94b9, 0x14af: 0x94e1,\n\t0x14b0: 0x9079, 0x14b1: 0x9051, 0x14b2: 0x90a1, 0x14b3: 0x8211, 0x14b4: 0x8059, 0x14b5: 0x8081,\n\t0x14b6: 0x80a9, 0x14b7: 0x9491, 0x14b8: 0x94b9, 0x14b9: 0x94e1, 0x14ba: 0x8211, 0x14bb: 0x8239,\n\t0x14bc: 0x95a9, 0x14bd: 0x95a9, 0x14be: 0x0018, 0x14bf: 0x0018,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x0040, 0x14c1: 0x0040, 0x14c2: 0x0040, 0x14c3: 0x0040, 0x14c4: 0x0040, 0x14c5: 0x0040,\n\t0x14c6: 0x0040, 0x14c7: 0x0040, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040,\n\t0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x95d1, 0x14d1: 0x9609,\n\t0x14d2: 0x9609, 0x14d3: 0x9641, 0x14d4: 0x9679, 0x14d5: 0x96b1, 0x14d6: 0x96e9, 0x14d7: 0x9721,\n\t0x14d8: 0x9759, 0x14d9: 0x9759, 0x14da: 0x9791, 0x14db: 0x97c9, 0x14dc: 0x9801, 0x14dd: 0x9839,\n\t0x14de: 0x9871, 0x14df: 0x98a9, 0x14e0: 0x98a9, 0x14e1: 0x98e1, 0x14e2: 0x9919, 0x14e3: 0x9919,\n\t0x14e4: 0x9951, 0x14e5: 0x9951, 0x14e6: 0x9989, 0x14e7: 0x99c1, 0x14e8: 0x99c1, 0x14e9: 0x99f9,\n\t0x14ea: 0x9a31, 0x14eb: 0x9a31, 0x14ec: 0x9a69, 0x14ed: 0x9a69, 0x14ee: 0x9aa1, 0x14ef: 0x9ad9,\n\t0x14f0: 0x9ad9, 0x14f1: 0x9b11, 0x14f2: 0x9b11, 0x14f3: 0x9b49, 0x14f4: 0x9b81, 0x14f5: 0x9bb9,\n\t0x14f6: 0x9bf1, 0x14f7: 0x9bf1, 0x14f8: 0x9c29, 0x14f9: 0x9c61, 0x14fa: 0x9c99, 0x14fb: 0x9cd1,\n\t0x14fc: 0x9d09, 0x14fd: 0x9d09, 0x14fe: 0x9d41, 0x14ff: 0x9d79,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0xa949, 0x1501: 0xa981, 0x1502: 0xa9b9, 0x1503: 0xa8a1, 0x1504: 0x9bb9, 0x1505: 0x9989,\n\t0x1506: 0xa9f1, 0x1507: 0xaa29, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040,\n\t0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0040, 0x1510: 0x0040, 0x1511: 0x0040,\n\t0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040,\n\t0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040,\n\t0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040,\n\t0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040,\n\t0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040,\n\t0x1530: 0xaa61, 0x1531: 0xaa99, 0x1532: 0xaad1, 0x1533: 0xab19, 0x1534: 0xab61, 0x1535: 0xaba9,\n\t0x1536: 0xabf1, 0x1537: 0xac39, 0x1538: 0xac81, 0x1539: 0xacc9, 0x153a: 0xad02, 0x153b: 0xae12,\n\t0x153c: 0xae91, 0x153d: 0x0018, 0x153e: 0x0040, 0x153f: 0x0040,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0,\n\t0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0,\n\t0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0xaeda, 0x1551: 0x7d55,\n\t0x1552: 0x0040, 0x1553: 0xaeea, 0x1554: 0x03c2, 0x1555: 0xaefa, 0x1556: 0xaf0a, 0x1557: 0x7d75,\n\t0x1558: 0x7d95, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040,\n\t0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308,\n\t0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308,\n\t0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308,\n\t0x1570: 0x0040, 0x1571: 0x7db5, 0x1572: 0x7dd5, 0x1573: 0xaf1a, 0x1574: 0xaf1a, 0x1575: 0x1fd2,\n\t0x1576: 0x1fe2, 0x1577: 0xaf2a, 0x1578: 0xaf3a, 0x1579: 0x7df5, 0x157a: 0x7e15, 0x157b: 0x7e35,\n\t0x157c: 0x7df5, 0x157d: 0x7e55, 0x157e: 0x7e75, 0x157f: 0x7e55,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x7e95, 0x1581: 0x7eb5, 0x1582: 0x7ed5, 0x1583: 0x7eb5, 0x1584: 0x7ef5, 0x1585: 0x0018,\n\t0x1586: 0x0018, 0x1587: 0xaf4a, 0x1588: 0xaf5a, 0x1589: 0x7f16, 0x158a: 0x7f36, 0x158b: 0x7f56,\n\t0x158c: 0x7f76, 0x158d: 0xaf1a, 0x158e: 0xaf1a, 0x158f: 0xaf1a, 0x1590: 0xaeda, 0x1591: 0x7f95,\n\t0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x03c2, 0x1595: 0xaeea, 0x1596: 0xaf0a, 0x1597: 0xaefa,\n\t0x1598: 0x7fb5, 0x1599: 0x1fd2, 0x159a: 0x1fe2, 0x159b: 0xaf2a, 0x159c: 0xaf3a, 0x159d: 0x7e95,\n\t0x159e: 0x7ef5, 0x159f: 0xaf6a, 0x15a0: 0xaf7a, 0x15a1: 0xaf8a, 0x15a2: 0x1fb2, 0x15a3: 0xaf99,\n\t0x15a4: 0xafaa, 0x15a5: 0xafba, 0x15a6: 0x1fc2, 0x15a7: 0x0040, 0x15a8: 0xafca, 0x15a9: 0xafda,\n\t0x15aa: 0xafea, 0x15ab: 0xaffa, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040,\n\t0x15b0: 0x7fd6, 0x15b1: 0xb009, 0x15b2: 0x7ff6, 0x15b3: 0x0808, 0x15b4: 0x8016, 0x15b5: 0x0040,\n\t0x15b6: 0x8036, 0x15b7: 0xb031, 0x15b8: 0x8056, 0x15b9: 0xb059, 0x15ba: 0x8076, 0x15bb: 0xb081,\n\t0x15bc: 0x8096, 0x15bd: 0xb0a9, 0x15be: 0x80b6, 0x15bf: 0xb0d1,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0xb0f9, 0x15c1: 0xb111, 0x15c2: 0xb111, 0x15c3: 0xb129, 0x15c4: 0xb129, 0x15c5: 0xb141,\n\t0x15c6: 0xb141, 0x15c7: 0xb159, 0x15c8: 0xb159, 0x15c9: 0xb171, 0x15ca: 0xb171, 0x15cb: 0xb171,\n\t0x15cc: 0xb171, 0x15cd: 0xb189, 0x15ce: 0xb189, 0x15cf: 0xb1a1, 0x15d0: 0xb1a1, 0x15d1: 0xb1a1,\n\t0x15d2: 0xb1a1, 0x15d3: 0xb1b9, 0x15d4: 0xb1b9, 0x15d5: 0xb1d1, 0x15d6: 0xb1d1, 0x15d7: 0xb1d1,\n\t0x15d8: 0xb1d1, 0x15d9: 0xb1e9, 0x15da: 0xb1e9, 0x15db: 0xb1e9, 0x15dc: 0xb1e9, 0x15dd: 0xb201,\n\t0x15de: 0xb201, 0x15df: 0xb201, 0x15e0: 0xb201, 0x15e1: 0xb219, 0x15e2: 0xb219, 0x15e3: 0xb219,\n\t0x15e4: 0xb219, 0x15e5: 0xb231, 0x15e6: 0xb231, 0x15e7: 0xb231, 0x15e8: 0xb231, 0x15e9: 0xb249,\n\t0x15ea: 0xb249, 0x15eb: 0xb261, 0x15ec: 0xb261, 0x15ed: 0xb279, 0x15ee: 0xb279, 0x15ef: 0xb291,\n\t0x15f0: 0xb291, 0x15f1: 0xb2a9, 0x15f2: 0xb2a9, 0x15f3: 0xb2a9, 0x15f4: 0xb2a9, 0x15f5: 0xb2c1,\n\t0x15f6: 0xb2c1, 0x15f7: 0xb2c1, 0x15f8: 0xb2c1, 0x15f9: 0xb2d9, 0x15fa: 0xb2d9, 0x15fb: 0xb2d9,\n\t0x15fc: 0xb2d9, 0x15fd: 0xb2f1, 0x15fe: 0xb2f1, 0x15ff: 0xb2f1,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0xb2f1, 0x1601: 0xb309, 0x1602: 0xb309, 0x1603: 0xb309, 0x1604: 0xb309, 0x1605: 0xb321,\n\t0x1606: 0xb321, 0x1607: 0xb321, 0x1608: 0xb321, 0x1609: 0xb339, 0x160a: 0xb339, 0x160b: 0xb339,\n\t0x160c: 0xb339, 0x160d: 0xb351, 0x160e: 0xb351, 0x160f: 0xb351, 0x1610: 0xb351, 0x1611: 0xb369,\n\t0x1612: 0xb369, 0x1613: 0xb369, 0x1614: 0xb369, 0x1615: 0xb381, 0x1616: 0xb381, 0x1617: 0xb381,\n\t0x1618: 0xb381, 0x1619: 0xb399, 0x161a: 0xb399, 0x161b: 0xb399, 0x161c: 0xb399, 0x161d: 0xb3b1,\n\t0x161e: 0xb3b1, 0x161f: 0xb3b1, 0x1620: 0xb3b1, 0x1621: 0xb3c9, 0x1622: 0xb3c9, 0x1623: 0xb3c9,\n\t0x1624: 0xb3c9, 0x1625: 0xb3e1, 0x1626: 0xb3e1, 0x1627: 0xb3e1, 0x1628: 0xb3e1, 0x1629: 0xb3f9,\n\t0x162a: 0xb3f9, 0x162b: 0xb3f9, 0x162c: 0xb3f9, 0x162d: 0xb411, 0x162e: 0xb411, 0x162f: 0x7ab1,\n\t0x1630: 0x7ab1, 0x1631: 0xb429, 0x1632: 0xb429, 0x1633: 0xb429, 0x1634: 0xb429, 0x1635: 0xb441,\n\t0x1636: 0xb441, 0x1637: 0xb469, 0x1638: 0xb469, 0x1639: 0xb491, 0x163a: 0xb491, 0x163b: 0xb4b9,\n\t0x163c: 0xb4b9, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0040, 0x1641: 0xaefa, 0x1642: 0xb4e2, 0x1643: 0xaf6a, 0x1644: 0xafda, 0x1645: 0xafea,\n\t0x1646: 0xaf7a, 0x1647: 0xb4f2, 0x1648: 0x1fd2, 0x1649: 0x1fe2, 0x164a: 0xaf8a, 0x164b: 0x1fb2,\n\t0x164c: 0xaeda, 0x164d: 0xaf99, 0x164e: 0x29d1, 0x164f: 0xb502, 0x1650: 0x1f41, 0x1651: 0x00c9,\n\t0x1652: 0x0069, 0x1653: 0x0079, 0x1654: 0x1f51, 0x1655: 0x1f61, 0x1656: 0x1f71, 0x1657: 0x1f81,\n\t0x1658: 0x1f91, 0x1659: 0x1fa1, 0x165a: 0xaeea, 0x165b: 0x03c2, 0x165c: 0xafaa, 0x165d: 0x1fc2,\n\t0x165e: 0xafba, 0x165f: 0xaf0a, 0x1660: 0xaffa, 0x1661: 0x0039, 0x1662: 0x0ee9, 0x1663: 0x1159,\n\t0x1664: 0x0ef9, 0x1665: 0x0f09, 0x1666: 0x1199, 0x1667: 0x0f31, 0x1668: 0x0249, 0x1669: 0x0f41,\n\t0x166a: 0x0259, 0x166b: 0x0f51, 0x166c: 0x0359, 0x166d: 0x0f61, 0x166e: 0x0f71, 0x166f: 0x00d9,\n\t0x1670: 0x0f99, 0x1671: 0x2039, 0x1672: 0x0269, 0x1673: 0x01d9, 0x1674: 0x0fa9, 0x1675: 0x0fb9,\n\t0x1676: 0x1089, 0x1677: 0x0279, 0x1678: 0x0369, 0x1679: 0x0289, 0x167a: 0x13d1, 0x167b: 0xaf4a,\n\t0x167c: 0xafca, 0x167d: 0xaf5a, 0x167e: 0xb512, 0x167f: 0xaf1a,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x1caa, 0x1681: 0x0039, 0x1682: 0x0ee9, 0x1683: 0x1159, 0x1684: 0x0ef9, 0x1685: 0x0f09,\n\t0x1686: 0x1199, 0x1687: 0x0f31, 0x1688: 0x0249, 0x1689: 0x0f41, 0x168a: 0x0259, 0x168b: 0x0f51,\n\t0x168c: 0x0359, 0x168d: 0x0f61, 0x168e: 0x0f71, 0x168f: 0x00d9, 0x1690: 0x0f99, 0x1691: 0x2039,\n\t0x1692: 0x0269, 0x1693: 0x01d9, 0x1694: 0x0fa9, 0x1695: 0x0fb9, 0x1696: 0x1089, 0x1697: 0x0279,\n\t0x1698: 0x0369, 0x1699: 0x0289, 0x169a: 0x13d1, 0x169b: 0xaf2a, 0x169c: 0xb522, 0x169d: 0xaf3a,\n\t0x169e: 0xb532, 0x169f: 0x80d5, 0x16a0: 0x80f5, 0x16a1: 0x29d1, 0x16a2: 0x8115, 0x16a3: 0x8115,\n\t0x16a4: 0x8135, 0x16a5: 0x8155, 0x16a6: 0x8175, 0x16a7: 0x8195, 0x16a8: 0x81b5, 0x16a9: 0x81d5,\n\t0x16aa: 0x81f5, 0x16ab: 0x8215, 0x16ac: 0x8235, 0x16ad: 0x8255, 0x16ae: 0x8275, 0x16af: 0x8295,\n\t0x16b0: 0x82b5, 0x16b1: 0x82d5, 0x16b2: 0x82f5, 0x16b3: 0x8315, 0x16b4: 0x8335, 0x16b5: 0x8355,\n\t0x16b6: 0x8375, 0x16b7: 0x8395, 0x16b8: 0x83b5, 0x16b9: 0x83d5, 0x16ba: 0x83f5, 0x16bb: 0x8415,\n\t0x16bc: 0x81b5, 0x16bd: 0x8435, 0x16be: 0x8455, 0x16bf: 0x8215,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x8475, 0x16c1: 0x8495, 0x16c2: 0x84b5, 0x16c3: 0x84d5, 0x16c4: 0x84f5, 0x16c5: 0x8515,\n\t0x16c6: 0x8535, 0x16c7: 0x8555, 0x16c8: 0x84d5, 0x16c9: 0x8575, 0x16ca: 0x84d5, 0x16cb: 0x8595,\n\t0x16cc: 0x8595, 0x16cd: 0x85b5, 0x16ce: 0x85b5, 0x16cf: 0x85d5, 0x16d0: 0x8515, 0x16d1: 0x85f5,\n\t0x16d2: 0x8615, 0x16d3: 0x85f5, 0x16d4: 0x8635, 0x16d5: 0x8615, 0x16d6: 0x8655, 0x16d7: 0x8655,\n\t0x16d8: 0x8675, 0x16d9: 0x8675, 0x16da: 0x8695, 0x16db: 0x8695, 0x16dc: 0x8615, 0x16dd: 0x8115,\n\t0x16de: 0x86b5, 0x16df: 0x86d5, 0x16e0: 0x0040, 0x16e1: 0x86f5, 0x16e2: 0x8715, 0x16e3: 0x8735,\n\t0x16e4: 0x8755, 0x16e5: 0x8735, 0x16e6: 0x8775, 0x16e7: 0x8795, 0x16e8: 0x87b5, 0x16e9: 0x87b5,\n\t0x16ea: 0x87d5, 0x16eb: 0x87d5, 0x16ec: 0x87f5, 0x16ed: 0x87f5, 0x16ee: 0x87d5, 0x16ef: 0x87d5,\n\t0x16f0: 0x8815, 0x16f1: 0x8835, 0x16f2: 0x8855, 0x16f3: 0x8875, 0x16f4: 0x8895, 0x16f5: 0x88b5,\n\t0x16f6: 0x88b5, 0x16f7: 0x88b5, 0x16f8: 0x88d5, 0x16f9: 0x88d5, 0x16fa: 0x88d5, 0x16fb: 0x88d5,\n\t0x16fc: 0x87b5, 0x16fd: 0x87b5, 0x16fe: 0x87b5, 0x16ff: 0x0040,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x8715, 0x1703: 0x86f5, 0x1704: 0x88f5, 0x1705: 0x86f5,\n\t0x1706: 0x8715, 0x1707: 0x86f5, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x8915, 0x170b: 0x8715,\n\t0x170c: 0x8935, 0x170d: 0x88f5, 0x170e: 0x8935, 0x170f: 0x8715, 0x1710: 0x0040, 0x1711: 0x0040,\n\t0x1712: 0x8955, 0x1713: 0x8975, 0x1714: 0x8875, 0x1715: 0x8935, 0x1716: 0x88f5, 0x1717: 0x8935,\n\t0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x8995, 0x171b: 0x89b5, 0x171c: 0x8995, 0x171d: 0x0040,\n\t0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0xb541, 0x1721: 0xb559, 0x1722: 0xb571, 0x1723: 0x89d6,\n\t0x1724: 0xb589, 0x1725: 0xb5a1, 0x1726: 0x89f5, 0x1727: 0x0040, 0x1728: 0x8a15, 0x1729: 0x8a35,\n\t0x172a: 0x8a55, 0x172b: 0x8a35, 0x172c: 0x8a75, 0x172d: 0x8a95, 0x172e: 0x8ab5, 0x172f: 0x0040,\n\t0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040,\n\t0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340,\n\t0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x0a08, 0x1741: 0x0a08, 0x1742: 0x0a08, 0x1743: 0x0a08, 0x1744: 0x0a08, 0x1745: 0x0c08,\n\t0x1746: 0x0808, 0x1747: 0x0c08, 0x1748: 0x0818, 0x1749: 0x0c08, 0x174a: 0x0c08, 0x174b: 0x0808,\n\t0x174c: 0x0808, 0x174d: 0x0908, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0c08, 0x1751: 0x0c08,\n\t0x1752: 0x0c08, 0x1753: 0x0a08, 0x1754: 0x0a08, 0x1755: 0x0a08, 0x1756: 0x0a08, 0x1757: 0x0908,\n\t0x1758: 0x0a08, 0x1759: 0x0a08, 0x175a: 0x0a08, 0x175b: 0x0a08, 0x175c: 0x0a08, 0x175d: 0x0c08,\n\t0x175e: 0x0a08, 0x175f: 0x0a08, 0x1760: 0x0a08, 0x1761: 0x0c08, 0x1762: 0x0808, 0x1763: 0x0808,\n\t0x1764: 0x0c08, 0x1765: 0x3308, 0x1766: 0x3308, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040,\n\t0x176a: 0x0040, 0x176b: 0x0a18, 0x176c: 0x0a18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0c18,\n\t0x1770: 0x0818, 0x1771: 0x0818, 0x1772: 0x0818, 0x1773: 0x0818, 0x1774: 0x0818, 0x1775: 0x0818,\n\t0x1776: 0x0818, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040,\n\t0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x0a08, 0x1781: 0x0c08, 0x1782: 0x0a08, 0x1783: 0x0c08, 0x1784: 0x0c08, 0x1785: 0x0c08,\n\t0x1786: 0x0a08, 0x1787: 0x0a08, 0x1788: 0x0a08, 0x1789: 0x0c08, 0x178a: 0x0a08, 0x178b: 0x0a08,\n\t0x178c: 0x0c08, 0x178d: 0x0a08, 0x178e: 0x0c08, 0x178f: 0x0c08, 0x1790: 0x0a08, 0x1791: 0x0c08,\n\t0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x0040,\n\t0x1798: 0x0040, 0x1799: 0x0818, 0x179a: 0x0818, 0x179b: 0x0818, 0x179c: 0x0818, 0x179d: 0x0040,\n\t0x179e: 0x0040, 0x179f: 0x0040, 0x17a0: 0x0040, 0x17a1: 0x0040, 0x17a2: 0x0040, 0x17a3: 0x0040,\n\t0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x0040, 0x17a7: 0x0040, 0x17a8: 0x0040, 0x17a9: 0x0c18,\n\t0x17aa: 0x0c18, 0x17ab: 0x0c18, 0x17ac: 0x0c18, 0x17ad: 0x0a18, 0x17ae: 0x0a18, 0x17af: 0x0818,\n\t0x17b0: 0x0040, 0x17b1: 0x0040, 0x17b2: 0x0040, 0x17b3: 0x0040, 0x17b4: 0x0040, 0x17b5: 0x0040,\n\t0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040,\n\t0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x3308, 0x17c1: 0x3308, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x0040, 0x17c5: 0x0008,\n\t0x17c6: 0x0008, 0x17c7: 0x0008, 0x17c8: 0x0008, 0x17c9: 0x0008, 0x17ca: 0x0008, 0x17cb: 0x0008,\n\t0x17cc: 0x0008, 0x17cd: 0x0040, 0x17ce: 0x0040, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0040,\n\t0x17d2: 0x0040, 0x17d3: 0x0008, 0x17d4: 0x0008, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0008,\n\t0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008,\n\t0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008,\n\t0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0040,\n\t0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008,\n\t0x17f0: 0x0008, 0x17f1: 0x0040, 0x17f2: 0x0008, 0x17f3: 0x0008, 0x17f4: 0x0040, 0x17f5: 0x0008,\n\t0x17f6: 0x0008, 0x17f7: 0x0008, 0x17f8: 0x0008, 0x17f9: 0x0008, 0x17fa: 0x0040, 0x17fb: 0x0040,\n\t0x17fc: 0x3308, 0x17fd: 0x0008, 0x17fe: 0x3008, 0x17ff: 0x3008,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x3308, 0x1801: 0x3008, 0x1802: 0x3008, 0x1803: 0x3008, 0x1804: 0x3008, 0x1805: 0x0040,\n\t0x1806: 0x0040, 0x1807: 0x3008, 0x1808: 0x3008, 0x1809: 0x0040, 0x180a: 0x0040, 0x180b: 0x3008,\n\t0x180c: 0x3008, 0x180d: 0x3808, 0x180e: 0x0040, 0x180f: 0x0040, 0x1810: 0x0008, 0x1811: 0x0040,\n\t0x1812: 0x0040, 0x1813: 0x0040, 0x1814: 0x0040, 0x1815: 0x0040, 0x1816: 0x0040, 0x1817: 0x3008,\n\t0x1818: 0x0040, 0x1819: 0x0040, 0x181a: 0x0040, 0x181b: 0x0040, 0x181c: 0x0040, 0x181d: 0x0008,\n\t0x181e: 0x0008, 0x181f: 0x0008, 0x1820: 0x0008, 0x1821: 0x0008, 0x1822: 0x3008, 0x1823: 0x3008,\n\t0x1824: 0x0040, 0x1825: 0x0040, 0x1826: 0x3308, 0x1827: 0x3308, 0x1828: 0x3308, 0x1829: 0x3308,\n\t0x182a: 0x3308, 0x182b: 0x3308, 0x182c: 0x3308, 0x182d: 0x0040, 0x182e: 0x0040, 0x182f: 0x0040,\n\t0x1830: 0x3308, 0x1831: 0x3308, 0x1832: 0x3308, 0x1833: 0x3308, 0x1834: 0x3308, 0x1835: 0x0040,\n\t0x1836: 0x0040, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040,\n\t0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x0039, 0x1841: 0x0ee9, 0x1842: 0x1159, 0x1843: 0x0ef9, 0x1844: 0x0f09, 0x1845: 0x1199,\n\t0x1846: 0x0f31, 0x1847: 0x0249, 0x1848: 0x0f41, 0x1849: 0x0259, 0x184a: 0x0f51, 0x184b: 0x0359,\n\t0x184c: 0x0f61, 0x184d: 0x0f71, 0x184e: 0x00d9, 0x184f: 0x0f99, 0x1850: 0x2039, 0x1851: 0x0269,\n\t0x1852: 0x01d9, 0x1853: 0x0fa9, 0x1854: 0x0fb9, 0x1855: 0x1089, 0x1856: 0x0279, 0x1857: 0x0369,\n\t0x1858: 0x0289, 0x1859: 0x13d1, 0x185a: 0x0039, 0x185b: 0x0ee9, 0x185c: 0x1159, 0x185d: 0x0ef9,\n\t0x185e: 0x0f09, 0x185f: 0x1199, 0x1860: 0x0f31, 0x1861: 0x0249, 0x1862: 0x0f41, 0x1863: 0x0259,\n\t0x1864: 0x0f51, 0x1865: 0x0359, 0x1866: 0x0f61, 0x1867: 0x0f71, 0x1868: 0x00d9, 0x1869: 0x0f99,\n\t0x186a: 0x2039, 0x186b: 0x0269, 0x186c: 0x01d9, 0x186d: 0x0fa9, 0x186e: 0x0fb9, 0x186f: 0x1089,\n\t0x1870: 0x0279, 0x1871: 0x0369, 0x1872: 0x0289, 0x1873: 0x13d1, 0x1874: 0x0039, 0x1875: 0x0ee9,\n\t0x1876: 0x1159, 0x1877: 0x0ef9, 0x1878: 0x0f09, 0x1879: 0x1199, 0x187a: 0x0f31, 0x187b: 0x0249,\n\t0x187c: 0x0f41, 0x187d: 0x0259, 0x187e: 0x0f51, 0x187f: 0x0359,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x0f61, 0x1881: 0x0f71, 0x1882: 0x00d9, 0x1883: 0x0f99, 0x1884: 0x2039, 0x1885: 0x0269,\n\t0x1886: 0x01d9, 0x1887: 0x0fa9, 0x1888: 0x0fb9, 0x1889: 0x1089, 0x188a: 0x0279, 0x188b: 0x0369,\n\t0x188c: 0x0289, 0x188d: 0x13d1, 0x188e: 0x0039, 0x188f: 0x0ee9, 0x1890: 0x1159, 0x1891: 0x0ef9,\n\t0x1892: 0x0f09, 0x1893: 0x1199, 0x1894: 0x0f31, 0x1895: 0x0040, 0x1896: 0x0f41, 0x1897: 0x0259,\n\t0x1898: 0x0f51, 0x1899: 0x0359, 0x189a: 0x0f61, 0x189b: 0x0f71, 0x189c: 0x00d9, 0x189d: 0x0f99,\n\t0x189e: 0x2039, 0x189f: 0x0269, 0x18a0: 0x01d9, 0x18a1: 0x0fa9, 0x18a2: 0x0fb9, 0x18a3: 0x1089,\n\t0x18a4: 0x0279, 0x18a5: 0x0369, 0x18a6: 0x0289, 0x18a7: 0x13d1, 0x18a8: 0x0039, 0x18a9: 0x0ee9,\n\t0x18aa: 0x1159, 0x18ab: 0x0ef9, 0x18ac: 0x0f09, 0x18ad: 0x1199, 0x18ae: 0x0f31, 0x18af: 0x0249,\n\t0x18b0: 0x0f41, 0x18b1: 0x0259, 0x18b2: 0x0f51, 0x18b3: 0x0359, 0x18b4: 0x0f61, 0x18b5: 0x0f71,\n\t0x18b6: 0x00d9, 0x18b7: 0x0f99, 0x18b8: 0x2039, 0x18b9: 0x0269, 0x18ba: 0x01d9, 0x18bb: 0x0fa9,\n\t0x18bc: 0x0fb9, 0x18bd: 0x1089, 0x18be: 0x0279, 0x18bf: 0x0369,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x0289, 0x18c1: 0x13d1, 0x18c2: 0x0039, 0x18c3: 0x0ee9, 0x18c4: 0x1159, 0x18c5: 0x0ef9,\n\t0x18c6: 0x0f09, 0x18c7: 0x1199, 0x18c8: 0x0f31, 0x18c9: 0x0249, 0x18ca: 0x0f41, 0x18cb: 0x0259,\n\t0x18cc: 0x0f51, 0x18cd: 0x0359, 0x18ce: 0x0f61, 0x18cf: 0x0f71, 0x18d0: 0x00d9, 0x18d1: 0x0f99,\n\t0x18d2: 0x2039, 0x18d3: 0x0269, 0x18d4: 0x01d9, 0x18d5: 0x0fa9, 0x18d6: 0x0fb9, 0x18d7: 0x1089,\n\t0x18d8: 0x0279, 0x18d9: 0x0369, 0x18da: 0x0289, 0x18db: 0x13d1, 0x18dc: 0x0039, 0x18dd: 0x0040,\n\t0x18de: 0x1159, 0x18df: 0x0ef9, 0x18e0: 0x0040, 0x18e1: 0x0040, 0x18e2: 0x0f31, 0x18e3: 0x0040,\n\t0x18e4: 0x0040, 0x18e5: 0x0259, 0x18e6: 0x0f51, 0x18e7: 0x0040, 0x18e8: 0x0040, 0x18e9: 0x0f71,\n\t0x18ea: 0x00d9, 0x18eb: 0x0f99, 0x18ec: 0x2039, 0x18ed: 0x0040, 0x18ee: 0x01d9, 0x18ef: 0x0fa9,\n\t0x18f0: 0x0fb9, 0x18f1: 0x1089, 0x18f2: 0x0279, 0x18f3: 0x0369, 0x18f4: 0x0289, 0x18f5: 0x13d1,\n\t0x18f6: 0x0039, 0x18f7: 0x0ee9, 0x18f8: 0x1159, 0x18f9: 0x0ef9, 0x18fa: 0x0040, 0x18fb: 0x1199,\n\t0x18fc: 0x0040, 0x18fd: 0x0249, 0x18fe: 0x0f41, 0x18ff: 0x0259,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x0f51, 0x1901: 0x0359, 0x1902: 0x0f61, 0x1903: 0x0f71, 0x1904: 0x0040, 0x1905: 0x0f99,\n\t0x1906: 0x2039, 0x1907: 0x0269, 0x1908: 0x01d9, 0x1909: 0x0fa9, 0x190a: 0x0fb9, 0x190b: 0x1089,\n\t0x190c: 0x0279, 0x190d: 0x0369, 0x190e: 0x0289, 0x190f: 0x13d1, 0x1910: 0x0039, 0x1911: 0x0ee9,\n\t0x1912: 0x1159, 0x1913: 0x0ef9, 0x1914: 0x0f09, 0x1915: 0x1199, 0x1916: 0x0f31, 0x1917: 0x0249,\n\t0x1918: 0x0f41, 0x1919: 0x0259, 0x191a: 0x0f51, 0x191b: 0x0359, 0x191c: 0x0f61, 0x191d: 0x0f71,\n\t0x191e: 0x00d9, 0x191f: 0x0f99, 0x1920: 0x2039, 0x1921: 0x0269, 0x1922: 0x01d9, 0x1923: 0x0fa9,\n\t0x1924: 0x0fb9, 0x1925: 0x1089, 0x1926: 0x0279, 0x1927: 0x0369, 0x1928: 0x0289, 0x1929: 0x13d1,\n\t0x192a: 0x0039, 0x192b: 0x0ee9, 0x192c: 0x1159, 0x192d: 0x0ef9, 0x192e: 0x0f09, 0x192f: 0x1199,\n\t0x1930: 0x0f31, 0x1931: 0x0249, 0x1932: 0x0f41, 0x1933: 0x0259, 0x1934: 0x0f51, 0x1935: 0x0359,\n\t0x1936: 0x0f61, 0x1937: 0x0f71, 0x1938: 0x00d9, 0x1939: 0x0f99, 0x193a: 0x2039, 0x193b: 0x0269,\n\t0x193c: 0x01d9, 0x193d: 0x0fa9, 0x193e: 0x0fb9, 0x193f: 0x1089,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x0279, 0x1941: 0x0369, 0x1942: 0x0289, 0x1943: 0x13d1, 0x1944: 0x0039, 0x1945: 0x0ee9,\n\t0x1946: 0x0040, 0x1947: 0x0ef9, 0x1948: 0x0f09, 0x1949: 0x1199, 0x194a: 0x0f31, 0x194b: 0x0040,\n\t0x194c: 0x0040, 0x194d: 0x0259, 0x194e: 0x0f51, 0x194f: 0x0359, 0x1950: 0x0f61, 0x1951: 0x0f71,\n\t0x1952: 0x00d9, 0x1953: 0x0f99, 0x1954: 0x2039, 0x1955: 0x0040, 0x1956: 0x01d9, 0x1957: 0x0fa9,\n\t0x1958: 0x0fb9, 0x1959: 0x1089, 0x195a: 0x0279, 0x195b: 0x0369, 0x195c: 0x0289, 0x195d: 0x0040,\n\t0x195e: 0x0039, 0x195f: 0x0ee9, 0x1960: 0x1159, 0x1961: 0x0ef9, 0x1962: 0x0f09, 0x1963: 0x1199,\n\t0x1964: 0x0f31, 0x1965: 0x0249, 0x1966: 0x0f41, 0x1967: 0x0259, 0x1968: 0x0f51, 0x1969: 0x0359,\n\t0x196a: 0x0f61, 0x196b: 0x0f71, 0x196c: 0x00d9, 0x196d: 0x0f99, 0x196e: 0x2039, 0x196f: 0x0269,\n\t0x1970: 0x01d9, 0x1971: 0x0fa9, 0x1972: 0x0fb9, 0x1973: 0x1089, 0x1974: 0x0279, 0x1975: 0x0369,\n\t0x1976: 0x0289, 0x1977: 0x13d1, 0x1978: 0x0039, 0x1979: 0x0ee9, 0x197a: 0x0040, 0x197b: 0x0ef9,\n\t0x197c: 0x0f09, 0x197d: 0x1199, 0x197e: 0x0f31, 0x197f: 0x0040,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x0f41, 0x1981: 0x0259, 0x1982: 0x0f51, 0x1983: 0x0359, 0x1984: 0x0f61, 0x1985: 0x0040,\n\t0x1986: 0x00d9, 0x1987: 0x0040, 0x1988: 0x0040, 0x1989: 0x0040, 0x198a: 0x01d9, 0x198b: 0x0fa9,\n\t0x198c: 0x0fb9, 0x198d: 0x1089, 0x198e: 0x0279, 0x198f: 0x0369, 0x1990: 0x0289, 0x1991: 0x0040,\n\t0x1992: 0x0039, 0x1993: 0x0ee9, 0x1994: 0x1159, 0x1995: 0x0ef9, 0x1996: 0x0f09, 0x1997: 0x1199,\n\t0x1998: 0x0f31, 0x1999: 0x0249, 0x199a: 0x0f41, 0x199b: 0x0259, 0x199c: 0x0f51, 0x199d: 0x0359,\n\t0x199e: 0x0f61, 0x199f: 0x0f71, 0x19a0: 0x00d9, 0x19a1: 0x0f99, 0x19a2: 0x2039, 0x19a3: 0x0269,\n\t0x19a4: 0x01d9, 0x19a5: 0x0fa9, 0x19a6: 0x0fb9, 0x19a7: 0x1089, 0x19a8: 0x0279, 0x19a9: 0x0369,\n\t0x19aa: 0x0289, 0x19ab: 0x13d1, 0x19ac: 0x0039, 0x19ad: 0x0ee9, 0x19ae: 0x1159, 0x19af: 0x0ef9,\n\t0x19b0: 0x0f09, 0x19b1: 0x1199, 0x19b2: 0x0f31, 0x19b3: 0x0249, 0x19b4: 0x0f41, 0x19b5: 0x0259,\n\t0x19b6: 0x0f51, 0x19b7: 0x0359, 0x19b8: 0x0f61, 0x19b9: 0x0f71, 0x19ba: 0x00d9, 0x19bb: 0x0f99,\n\t0x19bc: 0x2039, 0x19bd: 0x0269, 0x19be: 0x01d9, 0x19bf: 0x0fa9,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x0fb9, 0x19c1: 0x1089, 0x19c2: 0x0279, 0x19c3: 0x0369, 0x19c4: 0x0289, 0x19c5: 0x13d1,\n\t0x19c6: 0x0039, 0x19c7: 0x0ee9, 0x19c8: 0x1159, 0x19c9: 0x0ef9, 0x19ca: 0x0f09, 0x19cb: 0x1199,\n\t0x19cc: 0x0f31, 0x19cd: 0x0249, 0x19ce: 0x0f41, 0x19cf: 0x0259, 0x19d0: 0x0f51, 0x19d1: 0x0359,\n\t0x19d2: 0x0f61, 0x19d3: 0x0f71, 0x19d4: 0x00d9, 0x19d5: 0x0f99, 0x19d6: 0x2039, 0x19d7: 0x0269,\n\t0x19d8: 0x01d9, 0x19d9: 0x0fa9, 0x19da: 0x0fb9, 0x19db: 0x1089, 0x19dc: 0x0279, 0x19dd: 0x0369,\n\t0x19de: 0x0289, 0x19df: 0x13d1, 0x19e0: 0x0039, 0x19e1: 0x0ee9, 0x19e2: 0x1159, 0x19e3: 0x0ef9,\n\t0x19e4: 0x0f09, 0x19e5: 0x1199, 0x19e6: 0x0f31, 0x19e7: 0x0249, 0x19e8: 0x0f41, 0x19e9: 0x0259,\n\t0x19ea: 0x0f51, 0x19eb: 0x0359, 0x19ec: 0x0f61, 0x19ed: 0x0f71, 0x19ee: 0x00d9, 0x19ef: 0x0f99,\n\t0x19f0: 0x2039, 0x19f1: 0x0269, 0x19f2: 0x01d9, 0x19f3: 0x0fa9, 0x19f4: 0x0fb9, 0x19f5: 0x1089,\n\t0x19f6: 0x0279, 0x19f7: 0x0369, 0x19f8: 0x0289, 0x19f9: 0x13d1, 0x19fa: 0x0039, 0x19fb: 0x0ee9,\n\t0x19fc: 0x1159, 0x19fd: 0x0ef9, 0x19fe: 0x0f09, 0x19ff: 0x1199,\n\t// Block 0x68, offset 0x1a00\n\t0x1a00: 0x0f31, 0x1a01: 0x0249, 0x1a02: 0x0f41, 0x1a03: 0x0259, 0x1a04: 0x0f51, 0x1a05: 0x0359,\n\t0x1a06: 0x0f61, 0x1a07: 0x0f71, 0x1a08: 0x00d9, 0x1a09: 0x0f99, 0x1a0a: 0x2039, 0x1a0b: 0x0269,\n\t0x1a0c: 0x01d9, 0x1a0d: 0x0fa9, 0x1a0e: 0x0fb9, 0x1a0f: 0x1089, 0x1a10: 0x0279, 0x1a11: 0x0369,\n\t0x1a12: 0x0289, 0x1a13: 0x13d1, 0x1a14: 0x0039, 0x1a15: 0x0ee9, 0x1a16: 0x1159, 0x1a17: 0x0ef9,\n\t0x1a18: 0x0f09, 0x1a19: 0x1199, 0x1a1a: 0x0f31, 0x1a1b: 0x0249, 0x1a1c: 0x0f41, 0x1a1d: 0x0259,\n\t0x1a1e: 0x0f51, 0x1a1f: 0x0359, 0x1a20: 0x0f61, 0x1a21: 0x0f71, 0x1a22: 0x00d9, 0x1a23: 0x0f99,\n\t0x1a24: 0x2039, 0x1a25: 0x0269, 0x1a26: 0x01d9, 0x1a27: 0x0fa9, 0x1a28: 0x0fb9, 0x1a29: 0x1089,\n\t0x1a2a: 0x0279, 0x1a2b: 0x0369, 0x1a2c: 0x0289, 0x1a2d: 0x13d1, 0x1a2e: 0x0039, 0x1a2f: 0x0ee9,\n\t0x1a30: 0x1159, 0x1a31: 0x0ef9, 0x1a32: 0x0f09, 0x1a33: 0x1199, 0x1a34: 0x0f31, 0x1a35: 0x0249,\n\t0x1a36: 0x0f41, 0x1a37: 0x0259, 0x1a38: 0x0f51, 0x1a39: 0x0359, 0x1a3a: 0x0f61, 0x1a3b: 0x0f71,\n\t0x1a3c: 0x00d9, 0x1a3d: 0x0f99, 0x1a3e: 0x2039, 0x1a3f: 0x0269,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x01d9, 0x1a41: 0x0fa9, 0x1a42: 0x0fb9, 0x1a43: 0x1089, 0x1a44: 0x0279, 0x1a45: 0x0369,\n\t0x1a46: 0x0289, 0x1a47: 0x13d1, 0x1a48: 0x0039, 0x1a49: 0x0ee9, 0x1a4a: 0x1159, 0x1a4b: 0x0ef9,\n\t0x1a4c: 0x0f09, 0x1a4d: 0x1199, 0x1a4e: 0x0f31, 0x1a4f: 0x0249, 0x1a50: 0x0f41, 0x1a51: 0x0259,\n\t0x1a52: 0x0f51, 0x1a53: 0x0359, 0x1a54: 0x0f61, 0x1a55: 0x0f71, 0x1a56: 0x00d9, 0x1a57: 0x0f99,\n\t0x1a58: 0x2039, 0x1a59: 0x0269, 0x1a5a: 0x01d9, 0x1a5b: 0x0fa9, 0x1a5c: 0x0fb9, 0x1a5d: 0x1089,\n\t0x1a5e: 0x0279, 0x1a5f: 0x0369, 0x1a60: 0x0289, 0x1a61: 0x13d1, 0x1a62: 0x0039, 0x1a63: 0x0ee9,\n\t0x1a64: 0x1159, 0x1a65: 0x0ef9, 0x1a66: 0x0f09, 0x1a67: 0x1199, 0x1a68: 0x0f31, 0x1a69: 0x0249,\n\t0x1a6a: 0x0f41, 0x1a6b: 0x0259, 0x1a6c: 0x0f51, 0x1a6d: 0x0359, 0x1a6e: 0x0f61, 0x1a6f: 0x0f71,\n\t0x1a70: 0x00d9, 0x1a71: 0x0f99, 0x1a72: 0x2039, 0x1a73: 0x0269, 0x1a74: 0x01d9, 0x1a75: 0x0fa9,\n\t0x1a76: 0x0fb9, 0x1a77: 0x1089, 0x1a78: 0x0279, 0x1a79: 0x0369, 0x1a7a: 0x0289, 0x1a7b: 0x13d1,\n\t0x1a7c: 0x0039, 0x1a7d: 0x0ee9, 0x1a7e: 0x1159, 0x1a7f: 0x0ef9,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x0f09, 0x1a81: 0x1199, 0x1a82: 0x0f31, 0x1a83: 0x0249, 0x1a84: 0x0f41, 0x1a85: 0x0259,\n\t0x1a86: 0x0f51, 0x1a87: 0x0359, 0x1a88: 0x0f61, 0x1a89: 0x0f71, 0x1a8a: 0x00d9, 0x1a8b: 0x0f99,\n\t0x1a8c: 0x2039, 0x1a8d: 0x0269, 0x1a8e: 0x01d9, 0x1a8f: 0x0fa9, 0x1a90: 0x0fb9, 0x1a91: 0x1089,\n\t0x1a92: 0x0279, 0x1a93: 0x0369, 0x1a94: 0x0289, 0x1a95: 0x13d1, 0x1a96: 0x0039, 0x1a97: 0x0ee9,\n\t0x1a98: 0x1159, 0x1a99: 0x0ef9, 0x1a9a: 0x0f09, 0x1a9b: 0x1199, 0x1a9c: 0x0f31, 0x1a9d: 0x0249,\n\t0x1a9e: 0x0f41, 0x1a9f: 0x0259, 0x1aa0: 0x0f51, 0x1aa1: 0x0359, 0x1aa2: 0x0f61, 0x1aa3: 0x0f71,\n\t0x1aa4: 0x00d9, 0x1aa5: 0x0f99, 0x1aa6: 0x2039, 0x1aa7: 0x0269, 0x1aa8: 0x01d9, 0x1aa9: 0x0fa9,\n\t0x1aaa: 0x0fb9, 0x1aab: 0x1089, 0x1aac: 0x0279, 0x1aad: 0x0369, 0x1aae: 0x0289, 0x1aaf: 0x13d1,\n\t0x1ab0: 0x0039, 0x1ab1: 0x0ee9, 0x1ab2: 0x1159, 0x1ab3: 0x0ef9, 0x1ab4: 0x0f09, 0x1ab5: 0x1199,\n\t0x1ab6: 0x0f31, 0x1ab7: 0x0249, 0x1ab8: 0x0f41, 0x1ab9: 0x0259, 0x1aba: 0x0f51, 0x1abb: 0x0359,\n\t0x1abc: 0x0f61, 0x1abd: 0x0f71, 0x1abe: 0x00d9, 0x1abf: 0x0f99,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x2039, 0x1ac1: 0x0269, 0x1ac2: 0x01d9, 0x1ac3: 0x0fa9, 0x1ac4: 0x0fb9, 0x1ac5: 0x1089,\n\t0x1ac6: 0x0279, 0x1ac7: 0x0369, 0x1ac8: 0x0289, 0x1ac9: 0x13d1, 0x1aca: 0x0039, 0x1acb: 0x0ee9,\n\t0x1acc: 0x1159, 0x1acd: 0x0ef9, 0x1ace: 0x0f09, 0x1acf: 0x1199, 0x1ad0: 0x0f31, 0x1ad1: 0x0249,\n\t0x1ad2: 0x0f41, 0x1ad3: 0x0259, 0x1ad4: 0x0f51, 0x1ad5: 0x0359, 0x1ad6: 0x0f61, 0x1ad7: 0x0f71,\n\t0x1ad8: 0x00d9, 0x1ad9: 0x0f99, 0x1ada: 0x2039, 0x1adb: 0x0269, 0x1adc: 0x01d9, 0x1add: 0x0fa9,\n\t0x1ade: 0x0fb9, 0x1adf: 0x1089, 0x1ae0: 0x0279, 0x1ae1: 0x0369, 0x1ae2: 0x0289, 0x1ae3: 0x13d1,\n\t0x1ae4: 0xba81, 0x1ae5: 0xba99, 0x1ae6: 0x0040, 0x1ae7: 0x0040, 0x1ae8: 0xbab1, 0x1ae9: 0x1099,\n\t0x1aea: 0x10b1, 0x1aeb: 0x10c9, 0x1aec: 0xbac9, 0x1aed: 0xbae1, 0x1aee: 0xbaf9, 0x1aef: 0x1429,\n\t0x1af0: 0x1a31, 0x1af1: 0xbb11, 0x1af2: 0xbb29, 0x1af3: 0xbb41, 0x1af4: 0xbb59, 0x1af5: 0xbb71,\n\t0x1af6: 0xbb89, 0x1af7: 0x2109, 0x1af8: 0x1111, 0x1af9: 0x1429, 0x1afa: 0xbba1, 0x1afb: 0xbbb9,\n\t0x1afc: 0xbbd1, 0x1afd: 0x10e1, 0x1afe: 0x10f9, 0x1aff: 0xbbe9,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x2079, 0x1b01: 0xbc01, 0x1b02: 0xbab1, 0x1b03: 0x1099, 0x1b04: 0x10b1, 0x1b05: 0x10c9,\n\t0x1b06: 0xbac9, 0x1b07: 0xbae1, 0x1b08: 0xbaf9, 0x1b09: 0x1429, 0x1b0a: 0x1a31, 0x1b0b: 0xbb11,\n\t0x1b0c: 0xbb29, 0x1b0d: 0xbb41, 0x1b0e: 0xbb59, 0x1b0f: 0xbb71, 0x1b10: 0xbb89, 0x1b11: 0x2109,\n\t0x1b12: 0x1111, 0x1b13: 0xbba1, 0x1b14: 0xbba1, 0x1b15: 0xbbb9, 0x1b16: 0xbbd1, 0x1b17: 0x10e1,\n\t0x1b18: 0x10f9, 0x1b19: 0xbbe9, 0x1b1a: 0x2079, 0x1b1b: 0xbc21, 0x1b1c: 0xbac9, 0x1b1d: 0x1429,\n\t0x1b1e: 0xbb11, 0x1b1f: 0x10e1, 0x1b20: 0x1111, 0x1b21: 0x2109, 0x1b22: 0xbab1, 0x1b23: 0x1099,\n\t0x1b24: 0x10b1, 0x1b25: 0x10c9, 0x1b26: 0xbac9, 0x1b27: 0xbae1, 0x1b28: 0xbaf9, 0x1b29: 0x1429,\n\t0x1b2a: 0x1a31, 0x1b2b: 0xbb11, 0x1b2c: 0xbb29, 0x1b2d: 0xbb41, 0x1b2e: 0xbb59, 0x1b2f: 0xbb71,\n\t0x1b30: 0xbb89, 0x1b31: 0x2109, 0x1b32: 0x1111, 0x1b33: 0x1429, 0x1b34: 0xbba1, 0x1b35: 0xbbb9,\n\t0x1b36: 0xbbd1, 0x1b37: 0x10e1, 0x1b38: 0x10f9, 0x1b39: 0xbbe9, 0x1b3a: 0x2079, 0x1b3b: 0xbc01,\n\t0x1b3c: 0xbab1, 0x1b3d: 0x1099, 0x1b3e: 0x10b1, 0x1b3f: 0x10c9,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0xbac9, 0x1b41: 0xbae1, 0x1b42: 0xbaf9, 0x1b43: 0x1429, 0x1b44: 0x1a31, 0x1b45: 0xbb11,\n\t0x1b46: 0xbb29, 0x1b47: 0xbb41, 0x1b48: 0xbb59, 0x1b49: 0xbb71, 0x1b4a: 0xbb89, 0x1b4b: 0x2109,\n\t0x1b4c: 0x1111, 0x1b4d: 0xbba1, 0x1b4e: 0xbba1, 0x1b4f: 0xbbb9, 0x1b50: 0xbbd1, 0x1b51: 0x10e1,\n\t0x1b52: 0x10f9, 0x1b53: 0xbbe9, 0x1b54: 0x2079, 0x1b55: 0xbc21, 0x1b56: 0xbac9, 0x1b57: 0x1429,\n\t0x1b58: 0xbb11, 0x1b59: 0x10e1, 0x1b5a: 0x1111, 0x1b5b: 0x2109, 0x1b5c: 0xbab1, 0x1b5d: 0x1099,\n\t0x1b5e: 0x10b1, 0x1b5f: 0x10c9, 0x1b60: 0xbac9, 0x1b61: 0xbae1, 0x1b62: 0xbaf9, 0x1b63: 0x1429,\n\t0x1b64: 0x1a31, 0x1b65: 0xbb11, 0x1b66: 0xbb29, 0x1b67: 0xbb41, 0x1b68: 0xbb59, 0x1b69: 0xbb71,\n\t0x1b6a: 0xbb89, 0x1b6b: 0x2109, 0x1b6c: 0x1111, 0x1b6d: 0x1429, 0x1b6e: 0xbba1, 0x1b6f: 0xbbb9,\n\t0x1b70: 0xbbd1, 0x1b71: 0x10e1, 0x1b72: 0x10f9, 0x1b73: 0xbbe9, 0x1b74: 0x2079, 0x1b75: 0xbc01,\n\t0x1b76: 0xbab1, 0x1b77: 0x1099, 0x1b78: 0x10b1, 0x1b79: 0x10c9, 0x1b7a: 0xbac9, 0x1b7b: 0xbae1,\n\t0x1b7c: 0xbaf9, 0x1b7d: 0x1429, 0x1b7e: 0x1a31, 0x1b7f: 0xbb11,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0xbb29, 0x1b81: 0xbb41, 0x1b82: 0xbb59, 0x1b83: 0xbb71, 0x1b84: 0xbb89, 0x1b85: 0x2109,\n\t0x1b86: 0x1111, 0x1b87: 0xbba1, 0x1b88: 0xbba1, 0x1b89: 0xbbb9, 0x1b8a: 0xbbd1, 0x1b8b: 0x10e1,\n\t0x1b8c: 0x10f9, 0x1b8d: 0xbbe9, 0x1b8e: 0x2079, 0x1b8f: 0xbc21, 0x1b90: 0xbac9, 0x1b91: 0x1429,\n\t0x1b92: 0xbb11, 0x1b93: 0x10e1, 0x1b94: 0x1111, 0x1b95: 0x2109, 0x1b96: 0xbab1, 0x1b97: 0x1099,\n\t0x1b98: 0x10b1, 0x1b99: 0x10c9, 0x1b9a: 0xbac9, 0x1b9b: 0xbae1, 0x1b9c: 0xbaf9, 0x1b9d: 0x1429,\n\t0x1b9e: 0x1a31, 0x1b9f: 0xbb11, 0x1ba0: 0xbb29, 0x1ba1: 0xbb41, 0x1ba2: 0xbb59, 0x1ba3: 0xbb71,\n\t0x1ba4: 0xbb89, 0x1ba5: 0x2109, 0x1ba6: 0x1111, 0x1ba7: 0x1429, 0x1ba8: 0xbba1, 0x1ba9: 0xbbb9,\n\t0x1baa: 0xbbd1, 0x1bab: 0x10e1, 0x1bac: 0x10f9, 0x1bad: 0xbbe9, 0x1bae: 0x2079, 0x1baf: 0xbc01,\n\t0x1bb0: 0xbab1, 0x1bb1: 0x1099, 0x1bb2: 0x10b1, 0x1bb3: 0x10c9, 0x1bb4: 0xbac9, 0x1bb5: 0xbae1,\n\t0x1bb6: 0xbaf9, 0x1bb7: 0x1429, 0x1bb8: 0x1a31, 0x1bb9: 0xbb11, 0x1bba: 0xbb29, 0x1bbb: 0xbb41,\n\t0x1bbc: 0xbb59, 0x1bbd: 0xbb71, 0x1bbe: 0xbb89, 0x1bbf: 0x2109,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x1111, 0x1bc1: 0xbba1, 0x1bc2: 0xbba1, 0x1bc3: 0xbbb9, 0x1bc4: 0xbbd1, 0x1bc5: 0x10e1,\n\t0x1bc6: 0x10f9, 0x1bc7: 0xbbe9, 0x1bc8: 0x2079, 0x1bc9: 0xbc21, 0x1bca: 0xbac9, 0x1bcb: 0x1429,\n\t0x1bcc: 0xbb11, 0x1bcd: 0x10e1, 0x1bce: 0x1111, 0x1bcf: 0x2109, 0x1bd0: 0xbab1, 0x1bd1: 0x1099,\n\t0x1bd2: 0x10b1, 0x1bd3: 0x10c9, 0x1bd4: 0xbac9, 0x1bd5: 0xbae1, 0x1bd6: 0xbaf9, 0x1bd7: 0x1429,\n\t0x1bd8: 0x1a31, 0x1bd9: 0xbb11, 0x1bda: 0xbb29, 0x1bdb: 0xbb41, 0x1bdc: 0xbb59, 0x1bdd: 0xbb71,\n\t0x1bde: 0xbb89, 0x1bdf: 0x2109, 0x1be0: 0x1111, 0x1be1: 0x1429, 0x1be2: 0xbba1, 0x1be3: 0xbbb9,\n\t0x1be4: 0xbbd1, 0x1be5: 0x10e1, 0x1be6: 0x10f9, 0x1be7: 0xbbe9, 0x1be8: 0x2079, 0x1be9: 0xbc01,\n\t0x1bea: 0xbab1, 0x1beb: 0x1099, 0x1bec: 0x10b1, 0x1bed: 0x10c9, 0x1bee: 0xbac9, 0x1bef: 0xbae1,\n\t0x1bf0: 0xbaf9, 0x1bf1: 0x1429, 0x1bf2: 0x1a31, 0x1bf3: 0xbb11, 0x1bf4: 0xbb29, 0x1bf5: 0xbb41,\n\t0x1bf6: 0xbb59, 0x1bf7: 0xbb71, 0x1bf8: 0xbb89, 0x1bf9: 0x2109, 0x1bfa: 0x1111, 0x1bfb: 0xbba1,\n\t0x1bfc: 0xbba1, 0x1bfd: 0xbbb9, 0x1bfe: 0xbbd1, 0x1bff: 0x10e1,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0x10f9, 0x1c01: 0xbbe9, 0x1c02: 0x2079, 0x1c03: 0xbc21, 0x1c04: 0xbac9, 0x1c05: 0x1429,\n\t0x1c06: 0xbb11, 0x1c07: 0x10e1, 0x1c08: 0x1111, 0x1c09: 0x2109, 0x1c0a: 0xbc41, 0x1c0b: 0xbc41,\n\t0x1c0c: 0x0040, 0x1c0d: 0x0040, 0x1c0e: 0x1f41, 0x1c0f: 0x00c9, 0x1c10: 0x0069, 0x1c11: 0x0079,\n\t0x1c12: 0x1f51, 0x1c13: 0x1f61, 0x1c14: 0x1f71, 0x1c15: 0x1f81, 0x1c16: 0x1f91, 0x1c17: 0x1fa1,\n\t0x1c18: 0x1f41, 0x1c19: 0x00c9, 0x1c1a: 0x0069, 0x1c1b: 0x0079, 0x1c1c: 0x1f51, 0x1c1d: 0x1f61,\n\t0x1c1e: 0x1f71, 0x1c1f: 0x1f81, 0x1c20: 0x1f91, 0x1c21: 0x1fa1, 0x1c22: 0x1f41, 0x1c23: 0x00c9,\n\t0x1c24: 0x0069, 0x1c25: 0x0079, 0x1c26: 0x1f51, 0x1c27: 0x1f61, 0x1c28: 0x1f71, 0x1c29: 0x1f81,\n\t0x1c2a: 0x1f91, 0x1c2b: 0x1fa1, 0x1c2c: 0x1f41, 0x1c2d: 0x00c9, 0x1c2e: 0x0069, 0x1c2f: 0x0079,\n\t0x1c30: 0x1f51, 0x1c31: 0x1f61, 0x1c32: 0x1f71, 0x1c33: 0x1f81, 0x1c34: 0x1f91, 0x1c35: 0x1fa1,\n\t0x1c36: 0x1f41, 0x1c37: 0x00c9, 0x1c38: 0x0069, 0x1c39: 0x0079, 0x1c3a: 0x1f51, 0x1c3b: 0x1f61,\n\t0x1c3c: 0x1f71, 0x1c3d: 0x1f81, 0x1c3e: 0x1f91, 0x1c3f: 0x1fa1,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0xe115, 0x1c41: 0xe115, 0x1c42: 0xe135, 0x1c43: 0xe135, 0x1c44: 0xe115, 0x1c45: 0xe115,\n\t0x1c46: 0xe175, 0x1c47: 0xe175, 0x1c48: 0xe115, 0x1c49: 0xe115, 0x1c4a: 0xe135, 0x1c4b: 0xe135,\n\t0x1c4c: 0xe115, 0x1c4d: 0xe115, 0x1c4e: 0xe1f5, 0x1c4f: 0xe1f5, 0x1c50: 0xe115, 0x1c51: 0xe115,\n\t0x1c52: 0xe135, 0x1c53: 0xe135, 0x1c54: 0xe115, 0x1c55: 0xe115, 0x1c56: 0xe175, 0x1c57: 0xe175,\n\t0x1c58: 0xe115, 0x1c59: 0xe115, 0x1c5a: 0xe135, 0x1c5b: 0xe135, 0x1c5c: 0xe115, 0x1c5d: 0xe115,\n\t0x1c5e: 0x8b05, 0x1c5f: 0x8b05, 0x1c60: 0x04b5, 0x1c61: 0x04b5, 0x1c62: 0x0a08, 0x1c63: 0x0a08,\n\t0x1c64: 0x0a08, 0x1c65: 0x0a08, 0x1c66: 0x0a08, 0x1c67: 0x0a08, 0x1c68: 0x0a08, 0x1c69: 0x0a08,\n\t0x1c6a: 0x0a08, 0x1c6b: 0x0a08, 0x1c6c: 0x0a08, 0x1c6d: 0x0a08, 0x1c6e: 0x0a08, 0x1c6f: 0x0a08,\n\t0x1c70: 0x0a08, 0x1c71: 0x0a08, 0x1c72: 0x0a08, 0x1c73: 0x0a08, 0x1c74: 0x0a08, 0x1c75: 0x0a08,\n\t0x1c76: 0x0a08, 0x1c77: 0x0a08, 0x1c78: 0x0a08, 0x1c79: 0x0a08, 0x1c7a: 0x0a08, 0x1c7b: 0x0a08,\n\t0x1c7c: 0x0a08, 0x1c7d: 0x0a08, 0x1c7e: 0x0a08, 0x1c7f: 0x0a08,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0x0040, 0x1c85: 0xb411,\n\t0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0xb399, 0x1c8b: 0xb3b1,\n\t0x1c8c: 0xb3c9, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0xb369, 0x1c91: 0xb2d9,\n\t0x1c92: 0xb381, 0x1c93: 0xb279, 0x1c94: 0xb2c1, 0x1c95: 0xb1d1, 0x1c96: 0xb1e9, 0x1c97: 0xb231,\n\t0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0xbc59, 0x1c9d: 0x7949,\n\t0x1c9e: 0xbc71, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040,\n\t0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0x0040, 0x1ca9: 0xb429,\n\t0x1caa: 0xb399, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339,\n\t0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1,\n\t0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0x0040, 0x1cbb: 0xb351,\n\t0x1cbc: 0x0040, 0x1cbd: 0x0040, 0x1cbe: 0x0040, 0x1cbf: 0x0040,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x0040, 0x1cc1: 0x0040, 0x1cc2: 0xb201, 0x1cc3: 0x0040, 0x1cc4: 0x0040, 0x1cc5: 0x0040,\n\t0x1cc6: 0x0040, 0x1cc7: 0xb219, 0x1cc8: 0x0040, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1,\n\t0x1ccc: 0x0040, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0x0040, 0x1cd1: 0xb2d9,\n\t0x1cd2: 0xb381, 0x1cd3: 0x0040, 0x1cd4: 0xb2c1, 0x1cd5: 0x0040, 0x1cd6: 0x0040, 0x1cd7: 0xb231,\n\t0x1cd8: 0x0040, 0x1cd9: 0xb2f1, 0x1cda: 0x0040, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x7949,\n\t0x1cde: 0x0040, 0x1cdf: 0xbc89, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0x0040,\n\t0x1ce4: 0xb3f9, 0x1ce5: 0x0040, 0x1ce6: 0x0040, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429,\n\t0x1cea: 0xb399, 0x1ceb: 0x0040, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339,\n\t0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0x0040, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1,\n\t0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0x0040, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351,\n\t0x1cfc: 0xbc59, 0x1cfd: 0x0040, 0x1cfe: 0xbc71, 0x1cff: 0x0040,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0xb189, 0x1d01: 0xb1a1, 0x1d02: 0xb201, 0x1d03: 0xb249, 0x1d04: 0xb3f9, 0x1d05: 0xb411,\n\t0x1d06: 0xb291, 0x1d07: 0xb219, 0x1d08: 0xb309, 0x1d09: 0xb429, 0x1d0a: 0x0040, 0x1d0b: 0xb3b1,\n\t0x1d0c: 0xb3c9, 0x1d0d: 0xb3e1, 0x1d0e: 0xb2a9, 0x1d0f: 0xb339, 0x1d10: 0xb369, 0x1d11: 0xb2d9,\n\t0x1d12: 0xb381, 0x1d13: 0xb279, 0x1d14: 0xb2c1, 0x1d15: 0xb1d1, 0x1d16: 0xb1e9, 0x1d17: 0xb231,\n\t0x1d18: 0xb261, 0x1d19: 0xb2f1, 0x1d1a: 0xb321, 0x1d1b: 0xb351, 0x1d1c: 0x0040, 0x1d1d: 0x0040,\n\t0x1d1e: 0x0040, 0x1d1f: 0x0040, 0x1d20: 0x0040, 0x1d21: 0xb1a1, 0x1d22: 0xb201, 0x1d23: 0xb249,\n\t0x1d24: 0x0040, 0x1d25: 0xb411, 0x1d26: 0xb291, 0x1d27: 0xb219, 0x1d28: 0xb309, 0x1d29: 0xb429,\n\t0x1d2a: 0x0040, 0x1d2b: 0xb3b1, 0x1d2c: 0xb3c9, 0x1d2d: 0xb3e1, 0x1d2e: 0xb2a9, 0x1d2f: 0xb339,\n\t0x1d30: 0xb369, 0x1d31: 0xb2d9, 0x1d32: 0xb381, 0x1d33: 0xb279, 0x1d34: 0xb2c1, 0x1d35: 0xb1d1,\n\t0x1d36: 0xb1e9, 0x1d37: 0xb231, 0x1d38: 0xb261, 0x1d39: 0xb2f1, 0x1d3a: 0xb321, 0x1d3b: 0xb351,\n\t0x1d3c: 0x0040, 0x1d3d: 0x0040, 0x1d3e: 0x0040, 0x1d3f: 0x0040,\n\t// Block 0x75, offset 0x1d40\n\t0x1d40: 0x0040, 0x1d41: 0xbca2, 0x1d42: 0xbcba, 0x1d43: 0xbcd2, 0x1d44: 0xbcea, 0x1d45: 0xbd02,\n\t0x1d46: 0xbd1a, 0x1d47: 0xbd32, 0x1d48: 0xbd4a, 0x1d49: 0xbd62, 0x1d4a: 0xbd7a, 0x1d4b: 0x0018,\n\t0x1d4c: 0x0018, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xbd92, 0x1d51: 0xbdb2,\n\t0x1d52: 0xbdd2, 0x1d53: 0xbdf2, 0x1d54: 0xbe12, 0x1d55: 0xbe32, 0x1d56: 0xbe52, 0x1d57: 0xbe72,\n\t0x1d58: 0xbe92, 0x1d59: 0xbeb2, 0x1d5a: 0xbed2, 0x1d5b: 0xbef2, 0x1d5c: 0xbf12, 0x1d5d: 0xbf32,\n\t0x1d5e: 0xbf52, 0x1d5f: 0xbf72, 0x1d60: 0xbf92, 0x1d61: 0xbfb2, 0x1d62: 0xbfd2, 0x1d63: 0xbff2,\n\t0x1d64: 0xc012, 0x1d65: 0xc032, 0x1d66: 0xc052, 0x1d67: 0xc072, 0x1d68: 0xc092, 0x1d69: 0xc0b2,\n\t0x1d6a: 0xc0d1, 0x1d6b: 0x1159, 0x1d6c: 0x0269, 0x1d6d: 0x6671, 0x1d6e: 0xc111, 0x1d6f: 0x0040,\n\t0x1d70: 0x0039, 0x1d71: 0x0ee9, 0x1d72: 0x1159, 0x1d73: 0x0ef9, 0x1d74: 0x0f09, 0x1d75: 0x1199,\n\t0x1d76: 0x0f31, 0x1d77: 0x0249, 0x1d78: 0x0f41, 0x1d79: 0x0259, 0x1d7a: 0x0f51, 0x1d7b: 0x0359,\n\t0x1d7c: 0x0f61, 0x1d7d: 0x0f71, 0x1d7e: 0x00d9, 0x1d7f: 0x0f99,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0x2039, 0x1d81: 0x0269, 0x1d82: 0x01d9, 0x1d83: 0x0fa9, 0x1d84: 0x0fb9, 0x1d85: 0x1089,\n\t0x1d86: 0x0279, 0x1d87: 0x0369, 0x1d88: 0x0289, 0x1d89: 0x13d1, 0x1d8a: 0xc129, 0x1d8b: 0x65b1,\n\t0x1d8c: 0xc141, 0x1d8d: 0x1441, 0x1d8e: 0xc159, 0x1d8f: 0xc179, 0x1d90: 0x0018, 0x1d91: 0x0018,\n\t0x1d92: 0x0018, 0x1d93: 0x0018, 0x1d94: 0x0018, 0x1d95: 0x0018, 0x1d96: 0x0018, 0x1d97: 0x0018,\n\t0x1d98: 0x0018, 0x1d99: 0x0018, 0x1d9a: 0x0018, 0x1d9b: 0x0018, 0x1d9c: 0x0018, 0x1d9d: 0x0018,\n\t0x1d9e: 0x0018, 0x1d9f: 0x0018, 0x1da0: 0x0018, 0x1da1: 0x0018, 0x1da2: 0x0018, 0x1da3: 0x0018,\n\t0x1da4: 0x0018, 0x1da5: 0x0018, 0x1da6: 0x0018, 0x1da7: 0x0018, 0x1da8: 0x0018, 0x1da9: 0x0018,\n\t0x1daa: 0xc191, 0x1dab: 0xc1a9, 0x1dac: 0x0040, 0x1dad: 0x0040, 0x1dae: 0x0040, 0x1daf: 0x0040,\n\t0x1db0: 0x0018, 0x1db1: 0x0018, 0x1db2: 0x0018, 0x1db3: 0x0018, 0x1db4: 0x0018, 0x1db5: 0x0018,\n\t0x1db6: 0x0018, 0x1db7: 0x0018, 0x1db8: 0x0018, 0x1db9: 0x0018, 0x1dba: 0x0018, 0x1dbb: 0x0018,\n\t0x1dbc: 0x0018, 0x1dbd: 0x0018, 0x1dbe: 0x0018, 0x1dbf: 0x0018,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dc0: 0xc1d9, 0x1dc1: 0xc211, 0x1dc2: 0xc249, 0x1dc3: 0x0040, 0x1dc4: 0x0040, 0x1dc5: 0x0040,\n\t0x1dc6: 0x0040, 0x1dc7: 0x0040, 0x1dc8: 0x0040, 0x1dc9: 0x0040, 0x1dca: 0x0040, 0x1dcb: 0x0040,\n\t0x1dcc: 0x0040, 0x1dcd: 0x0040, 0x1dce: 0x0040, 0x1dcf: 0x0040, 0x1dd0: 0xc269, 0x1dd1: 0xc289,\n\t0x1dd2: 0xc2a9, 0x1dd3: 0xc2c9, 0x1dd4: 0xc2e9, 0x1dd5: 0xc309, 0x1dd6: 0xc329, 0x1dd7: 0xc349,\n\t0x1dd8: 0xc369, 0x1dd9: 0xc389, 0x1dda: 0xc3a9, 0x1ddb: 0xc3c9, 0x1ddc: 0xc3e9, 0x1ddd: 0xc409,\n\t0x1dde: 0xc429, 0x1ddf: 0xc449, 0x1de0: 0xc469, 0x1de1: 0xc489, 0x1de2: 0xc4a9, 0x1de3: 0xc4c9,\n\t0x1de4: 0xc4e9, 0x1de5: 0xc509, 0x1de6: 0xc529, 0x1de7: 0xc549, 0x1de8: 0xc569, 0x1de9: 0xc589,\n\t0x1dea: 0xc5a9, 0x1deb: 0xc5c9, 0x1dec: 0xc5e9, 0x1ded: 0xc609, 0x1dee: 0xc629, 0x1def: 0xc649,\n\t0x1df0: 0xc669, 0x1df1: 0xc689, 0x1df2: 0xc6a9, 0x1df3: 0xc6c9, 0x1df4: 0xc6e9, 0x1df5: 0xc709,\n\t0x1df6: 0xc729, 0x1df7: 0xc749, 0x1df8: 0xc769, 0x1df9: 0xc789, 0x1dfa: 0xc7a9, 0x1dfb: 0xc7c9,\n\t0x1dfc: 0x0040, 0x1dfd: 0x0040, 0x1dfe: 0x0040, 0x1dff: 0x0040,\n\t// Block 0x78, offset 0x1e00\n\t0x1e00: 0xcaf9, 0x1e01: 0xcb19, 0x1e02: 0xcb39, 0x1e03: 0x8b1d, 0x1e04: 0xcb59, 0x1e05: 0xcb79,\n\t0x1e06: 0xcb99, 0x1e07: 0xcbb9, 0x1e08: 0xcbd9, 0x1e09: 0xcbf9, 0x1e0a: 0xcc19, 0x1e0b: 0xcc39,\n\t0x1e0c: 0xcc59, 0x1e0d: 0x8b3d, 0x1e0e: 0xcc79, 0x1e0f: 0xcc99, 0x1e10: 0xccb9, 0x1e11: 0xccd9,\n\t0x1e12: 0x8b5d, 0x1e13: 0xccf9, 0x1e14: 0xcd19, 0x1e15: 0xc429, 0x1e16: 0x8b7d, 0x1e17: 0xcd39,\n\t0x1e18: 0xcd59, 0x1e19: 0xcd79, 0x1e1a: 0xcd99, 0x1e1b: 0xcdb9, 0x1e1c: 0x8b9d, 0x1e1d: 0xcdd9,\n\t0x1e1e: 0xcdf9, 0x1e1f: 0xce19, 0x1e20: 0xce39, 0x1e21: 0xce59, 0x1e22: 0xc789, 0x1e23: 0xce79,\n\t0x1e24: 0xce99, 0x1e25: 0xceb9, 0x1e26: 0xced9, 0x1e27: 0xcef9, 0x1e28: 0xcf19, 0x1e29: 0xcf39,\n\t0x1e2a: 0xcf59, 0x1e2b: 0xcf79, 0x1e2c: 0xcf99, 0x1e2d: 0xcfb9, 0x1e2e: 0xcfd9, 0x1e2f: 0xcff9,\n\t0x1e30: 0xd019, 0x1e31: 0xd039, 0x1e32: 0xd039, 0x1e33: 0xd039, 0x1e34: 0x8bbd, 0x1e35: 0xd059,\n\t0x1e36: 0xd079, 0x1e37: 0xd099, 0x1e38: 0x8bdd, 0x1e39: 0xd0b9, 0x1e3a: 0xd0d9, 0x1e3b: 0xd0f9,\n\t0x1e3c: 0xd119, 0x1e3d: 0xd139, 0x1e3e: 0xd159, 0x1e3f: 0xd179,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0xd199, 0x1e41: 0xd1b9, 0x1e42: 0xd1d9, 0x1e43: 0xd1f9, 0x1e44: 0xd219, 0x1e45: 0xd239,\n\t0x1e46: 0xd239, 0x1e47: 0xd259, 0x1e48: 0xd279, 0x1e49: 0xd299, 0x1e4a: 0xd2b9, 0x1e4b: 0xd2d9,\n\t0x1e4c: 0xd2f9, 0x1e4d: 0xd319, 0x1e4e: 0xd339, 0x1e4f: 0xd359, 0x1e50: 0xd379, 0x1e51: 0xd399,\n\t0x1e52: 0xd3b9, 0x1e53: 0xd3d9, 0x1e54: 0xd3f9, 0x1e55: 0xd419, 0x1e56: 0xd439, 0x1e57: 0xd459,\n\t0x1e58: 0xd479, 0x1e59: 0x8bfd, 0x1e5a: 0xd499, 0x1e5b: 0xd4b9, 0x1e5c: 0xd4d9, 0x1e5d: 0xc309,\n\t0x1e5e: 0xd4f9, 0x1e5f: 0xd519, 0x1e60: 0x8c1d, 0x1e61: 0x8c3d, 0x1e62: 0xd539, 0x1e63: 0xd559,\n\t0x1e64: 0xd579, 0x1e65: 0xd599, 0x1e66: 0xd5b9, 0x1e67: 0xd5d9, 0x1e68: 0x2040, 0x1e69: 0xd5f9,\n\t0x1e6a: 0xd619, 0x1e6b: 0xd619, 0x1e6c: 0x8c5d, 0x1e6d: 0xd639, 0x1e6e: 0xd659, 0x1e6f: 0xd679,\n\t0x1e70: 0xd699, 0x1e71: 0x8c7d, 0x1e72: 0xd6b9, 0x1e73: 0xd6d9, 0x1e74: 0x2040, 0x1e75: 0xd6f9,\n\t0x1e76: 0xd719, 0x1e77: 0xd739, 0x1e78: 0xd759, 0x1e79: 0xd779, 0x1e7a: 0xd799, 0x1e7b: 0x8c9d,\n\t0x1e7c: 0xd7b9, 0x1e7d: 0x8cbd, 0x1e7e: 0xd7d9, 0x1e7f: 0xd7f9,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0xd819, 0x1e81: 0xd839, 0x1e82: 0xd859, 0x1e83: 0xd879, 0x1e84: 0xd899, 0x1e85: 0xd8b9,\n\t0x1e86: 0xd8d9, 0x1e87: 0xd8f9, 0x1e88: 0xd919, 0x1e89: 0x8cdd, 0x1e8a: 0xd939, 0x1e8b: 0xd959,\n\t0x1e8c: 0xd979, 0x1e8d: 0xd999, 0x1e8e: 0xd9b9, 0x1e8f: 0x8cfd, 0x1e90: 0xd9d9, 0x1e91: 0x8d1d,\n\t0x1e92: 0x8d3d, 0x1e93: 0xd9f9, 0x1e94: 0xda19, 0x1e95: 0xda19, 0x1e96: 0xda39, 0x1e97: 0x8d5d,\n\t0x1e98: 0x8d7d, 0x1e99: 0xda59, 0x1e9a: 0xda79, 0x1e9b: 0xda99, 0x1e9c: 0xdab9, 0x1e9d: 0xdad9,\n\t0x1e9e: 0xdaf9, 0x1e9f: 0xdb19, 0x1ea0: 0xdb39, 0x1ea1: 0xdb59, 0x1ea2: 0xdb79, 0x1ea3: 0xdb99,\n\t0x1ea4: 0x8d9d, 0x1ea5: 0xdbb9, 0x1ea6: 0xdbd9, 0x1ea7: 0xdbf9, 0x1ea8: 0xdc19, 0x1ea9: 0xdbf9,\n\t0x1eaa: 0xdc39, 0x1eab: 0xdc59, 0x1eac: 0xdc79, 0x1ead: 0xdc99, 0x1eae: 0xdcb9, 0x1eaf: 0xdcd9,\n\t0x1eb0: 0xdcf9, 0x1eb1: 0xdd19, 0x1eb2: 0xdd39, 0x1eb3: 0xdd59, 0x1eb4: 0xdd79, 0x1eb5: 0xdd99,\n\t0x1eb6: 0xddb9, 0x1eb7: 0xddd9, 0x1eb8: 0x8dbd, 0x1eb9: 0xddf9, 0x1eba: 0xde19, 0x1ebb: 0xde39,\n\t0x1ebc: 0xde59, 0x1ebd: 0xde79, 0x1ebe: 0x8ddd, 0x1ebf: 0xde99,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0xe599, 0x1ec1: 0xe5b9, 0x1ec2: 0xe5d9, 0x1ec3: 0xe5f9, 0x1ec4: 0xe619, 0x1ec5: 0xe639,\n\t0x1ec6: 0x8efd, 0x1ec7: 0xe659, 0x1ec8: 0xe679, 0x1ec9: 0xe699, 0x1eca: 0xe6b9, 0x1ecb: 0xe6d9,\n\t0x1ecc: 0xe6f9, 0x1ecd: 0x8f1d, 0x1ece: 0xe719, 0x1ecf: 0xe739, 0x1ed0: 0x8f3d, 0x1ed1: 0x8f5d,\n\t0x1ed2: 0xe759, 0x1ed3: 0xe779, 0x1ed4: 0xe799, 0x1ed5: 0xe7b9, 0x1ed6: 0xe7d9, 0x1ed7: 0xe7f9,\n\t0x1ed8: 0xe819, 0x1ed9: 0xe839, 0x1eda: 0xe859, 0x1edb: 0x8f7d, 0x1edc: 0xe879, 0x1edd: 0x8f9d,\n\t0x1ede: 0xe899, 0x1edf: 0x2040, 0x1ee0: 0xe8b9, 0x1ee1: 0xe8d9, 0x1ee2: 0xe8f9, 0x1ee3: 0x8fbd,\n\t0x1ee4: 0xe919, 0x1ee5: 0xe939, 0x1ee6: 0x8fdd, 0x1ee7: 0x8ffd, 0x1ee8: 0xe959, 0x1ee9: 0xe979,\n\t0x1eea: 0xe999, 0x1eeb: 0xe9b9, 0x1eec: 0xe9d9, 0x1eed: 0xe9d9, 0x1eee: 0xe9f9, 0x1eef: 0xea19,\n\t0x1ef0: 0xea39, 0x1ef1: 0xea59, 0x1ef2: 0xea79, 0x1ef3: 0xea99, 0x1ef4: 0xeab9, 0x1ef5: 0x901d,\n\t0x1ef6: 0xead9, 0x1ef7: 0x903d, 0x1ef8: 0xeaf9, 0x1ef9: 0x905d, 0x1efa: 0xeb19, 0x1efb: 0x907d,\n\t0x1efc: 0x909d, 0x1efd: 0x90bd, 0x1efe: 0xeb39, 0x1eff: 0xeb59,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0xeb79, 0x1f01: 0x90dd, 0x1f02: 0x90fd, 0x1f03: 0x911d, 0x1f04: 0x913d, 0x1f05: 0xeb99,\n\t0x1f06: 0xebb9, 0x1f07: 0xebb9, 0x1f08: 0xebd9, 0x1f09: 0xebf9, 0x1f0a: 0xec19, 0x1f0b: 0xec39,\n\t0x1f0c: 0xec59, 0x1f0d: 0x915d, 0x1f0e: 0xec79, 0x1f0f: 0xec99, 0x1f10: 0xecb9, 0x1f11: 0xecd9,\n\t0x1f12: 0x917d, 0x1f13: 0xecf9, 0x1f14: 0x919d, 0x1f15: 0x91bd, 0x1f16: 0xed19, 0x1f17: 0xed39,\n\t0x1f18: 0xed59, 0x1f19: 0xed79, 0x1f1a: 0xed99, 0x1f1b: 0xedb9, 0x1f1c: 0x91dd, 0x1f1d: 0x91fd,\n\t0x1f1e: 0x921d, 0x1f1f: 0x2040, 0x1f20: 0xedd9, 0x1f21: 0x923d, 0x1f22: 0xedf9, 0x1f23: 0xee19,\n\t0x1f24: 0xee39, 0x1f25: 0x925d, 0x1f26: 0xee59, 0x1f27: 0xee79, 0x1f28: 0xee99, 0x1f29: 0xeeb9,\n\t0x1f2a: 0xeed9, 0x1f2b: 0x927d, 0x1f2c: 0xeef9, 0x1f2d: 0xef19, 0x1f2e: 0xef39, 0x1f2f: 0xef59,\n\t0x1f30: 0xef79, 0x1f31: 0xef99, 0x1f32: 0x929d, 0x1f33: 0x92bd, 0x1f34: 0xefb9, 0x1f35: 0x92dd,\n\t0x1f36: 0xefd9, 0x1f37: 0x92fd, 0x1f38: 0xeff9, 0x1f39: 0xf019, 0x1f3a: 0xf039, 0x1f3b: 0x931d,\n\t0x1f3c: 0x933d, 0x1f3d: 0xf059, 0x1f3e: 0x935d, 0x1f3f: 0xf079,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f40: 0xf6b9, 0x1f41: 0xf6d9, 0x1f42: 0xf6f9, 0x1f43: 0xf719, 0x1f44: 0xf739, 0x1f45: 0x951d,\n\t0x1f46: 0xf759, 0x1f47: 0xf779, 0x1f48: 0xf799, 0x1f49: 0xf7b9, 0x1f4a: 0xf7d9, 0x1f4b: 0x953d,\n\t0x1f4c: 0x955d, 0x1f4d: 0xf7f9, 0x1f4e: 0xf819, 0x1f4f: 0xf839, 0x1f50: 0xf859, 0x1f51: 0xf879,\n\t0x1f52: 0xf899, 0x1f53: 0x957d, 0x1f54: 0xf8b9, 0x1f55: 0xf8d9, 0x1f56: 0xf8f9, 0x1f57: 0xf919,\n\t0x1f58: 0x959d, 0x1f59: 0x95bd, 0x1f5a: 0xf939, 0x1f5b: 0xf959, 0x1f5c: 0xf979, 0x1f5d: 0x95dd,\n\t0x1f5e: 0xf999, 0x1f5f: 0xf9b9, 0x1f60: 0x6815, 0x1f61: 0x95fd, 0x1f62: 0xf9d9, 0x1f63: 0xf9f9,\n\t0x1f64: 0xfa19, 0x1f65: 0x961d, 0x1f66: 0xfa39, 0x1f67: 0xfa59, 0x1f68: 0xfa79, 0x1f69: 0xfa99,\n\t0x1f6a: 0xfab9, 0x1f6b: 0xfad9, 0x1f6c: 0xfaf9, 0x1f6d: 0x963d, 0x1f6e: 0xfb19, 0x1f6f: 0xfb39,\n\t0x1f70: 0xfb59, 0x1f71: 0x965d, 0x1f72: 0xfb79, 0x1f73: 0xfb99, 0x1f74: 0xfbb9, 0x1f75: 0xfbd9,\n\t0x1f76: 0x7b35, 0x1f77: 0x967d, 0x1f78: 0xfbf9, 0x1f79: 0xfc19, 0x1f7a: 0xfc39, 0x1f7b: 0x969d,\n\t0x1f7c: 0xfc59, 0x1f7d: 0x96bd, 0x1f7e: 0xfc79, 0x1f7f: 0xfc79,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f80: 0xfc99, 0x1f81: 0x96dd, 0x1f82: 0xfcb9, 0x1f83: 0xfcd9, 0x1f84: 0xfcf9, 0x1f85: 0xfd19,\n\t0x1f86: 0xfd39, 0x1f87: 0xfd59, 0x1f88: 0xfd79, 0x1f89: 0x96fd, 0x1f8a: 0xfd99, 0x1f8b: 0xfdb9,\n\t0x1f8c: 0xfdd9, 0x1f8d: 0xfdf9, 0x1f8e: 0xfe19, 0x1f8f: 0xfe39, 0x1f90: 0x971d, 0x1f91: 0xfe59,\n\t0x1f92: 0x973d, 0x1f93: 0x975d, 0x1f94: 0x977d, 0x1f95: 0xfe79, 0x1f96: 0xfe99, 0x1f97: 0xfeb9,\n\t0x1f98: 0xfed9, 0x1f99: 0xfef9, 0x1f9a: 0xff19, 0x1f9b: 0xff39, 0x1f9c: 0xff59, 0x1f9d: 0x979d,\n\t0x1f9e: 0x0040, 0x1f9f: 0x0040, 0x1fa0: 0x0040, 0x1fa1: 0x0040, 0x1fa2: 0x0040, 0x1fa3: 0x0040,\n\t0x1fa4: 0x0040, 0x1fa5: 0x0040, 0x1fa6: 0x0040, 0x1fa7: 0x0040, 0x1fa8: 0x0040, 0x1fa9: 0x0040,\n\t0x1faa: 0x0040, 0x1fab: 0x0040, 0x1fac: 0x0040, 0x1fad: 0x0040, 0x1fae: 0x0040, 0x1faf: 0x0040,\n\t0x1fb0: 0x0040, 0x1fb1: 0x0040, 0x1fb2: 0x0040, 0x1fb3: 0x0040, 0x1fb4: 0x0040, 0x1fb5: 0x0040,\n\t0x1fb6: 0x0040, 0x1fb7: 0x0040, 0x1fb8: 0x0040, 0x1fb9: 0x0040, 0x1fba: 0x0040, 0x1fbb: 0x0040,\n\t0x1fbc: 0x0040, 0x1fbd: 0x0040, 0x1fbe: 0x0040, 0x1fbf: 0x0040,\n}\n\n// idnaIndex: 36 blocks, 2304 entries, 4608 bytes\n// Block 0 is the zero block.\nvar idnaIndex = [2304]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x7d, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05,\n\t0xc8: 0x06, 0xc9: 0x7e, 0xca: 0x7f, 0xcb: 0x07, 0xcc: 0x80, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a,\n\t0xd0: 0x81, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x82, 0xd6: 0x83, 0xd7: 0x84,\n\t0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x85, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x86, 0xde: 0x87, 0xdf: 0x88,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07,\n\t0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c,\n\t0xf0: 0x1d, 0xf1: 0x1e, 0xf2: 0x1e, 0xf3: 0x20, 0xf4: 0x21,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x89, 0x121: 0x13, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16,\n\t0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8d,\n\t0x130: 0x8e, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x8f, 0x135: 0x21, 0x136: 0x90, 0x137: 0x91,\n\t0x138: 0x92, 0x139: 0x93, 0x13a: 0x22, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x96,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e,\n\t0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6,\n\t0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f,\n\t0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae,\n\t0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6,\n\t0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe,\n\t0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc3,\n\t0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc4, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc5, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc6, 0x187: 0x9b,\n\t0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0x9b,\n\t0x190: 0xca, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b,\n\t0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b,\n\t0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b,\n\t0x1a8: 0xcb, 0x1a9: 0xcc, 0x1aa: 0x9b, 0x1ab: 0xcd, 0x1ac: 0x9b, 0x1ad: 0xce, 0x1ae: 0xcf, 0x1af: 0xd0,\n\t0x1b0: 0xd1, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd2, 0x1b5: 0xd3, 0x1b6: 0xd4, 0x1b7: 0xd5,\n\t0x1b8: 0xd6, 0x1b9: 0xd7, 0x1ba: 0xd8, 0x1bb: 0xd9, 0x1bc: 0xda, 0x1bd: 0xdb, 0x1be: 0xdc, 0x1bf: 0x37,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x38, 0x1c1: 0xdd, 0x1c2: 0xde, 0x1c3: 0xdf, 0x1c4: 0xe0, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe1,\n\t0x1c8: 0xe2, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0x3e, 0x1cd: 0x3f, 0x1ce: 0x40, 0x1cf: 0x41,\n\t0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f,\n\t0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f,\n\t0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f,\n\t0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f,\n\t0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f,\n\t0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f,\n\t0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f,\n\t0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f,\n\t0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f,\n\t0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f,\n\t0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f,\n\t0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b,\n\t0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f,\n\t0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f,\n\t0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f,\n\t0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f,\n\t0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f,\n\t0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f,\n\t0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f,\n\t0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f,\n\t0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f,\n\t0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f,\n\t0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f,\n\t0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f,\n\t0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f,\n\t0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f,\n\t0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe3,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f,\n\t0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f,\n\t0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe4, 0x2d3: 0xe5, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f,\n\t0x2d8: 0xe6, 0x2d9: 0x42, 0x2da: 0x43, 0x2db: 0xe7, 0x2dc: 0x44, 0x2dd: 0x45, 0x2de: 0x46, 0x2df: 0xe8,\n\t0x2e0: 0xe9, 0x2e1: 0xea, 0x2e2: 0xeb, 0x2e3: 0xec, 0x2e4: 0xed, 0x2e5: 0xee, 0x2e6: 0xef, 0x2e7: 0xf0,\n\t0x2e8: 0xf1, 0x2e9: 0xf2, 0x2ea: 0xf3, 0x2eb: 0xf4, 0x2ec: 0xf5, 0x2ed: 0xf6, 0x2ee: 0xf7, 0x2ef: 0xf8,\n\t0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f,\n\t0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f,\n\t0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f,\n\t0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f,\n\t0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xf9, 0x31f: 0xfa,\n\t// Block 0xd, offset 0x340\n\t0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba,\n\t0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba,\n\t0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba,\n\t0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba,\n\t0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba,\n\t0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba,\n\t0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba,\n\t0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba,\n\t0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba,\n\t0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba,\n\t0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba,\n\t0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfb, 0x3a5: 0xfc, 0x3a6: 0xfd, 0x3a7: 0xfe,\n\t0x3a8: 0x47, 0x3a9: 0xff, 0x3aa: 0x100, 0x3ab: 0x48, 0x3ac: 0x49, 0x3ad: 0x4a, 0x3ae: 0x4b, 0x3af: 0x4c,\n\t0x3b0: 0x101, 0x3b1: 0x4d, 0x3b2: 0x4e, 0x3b3: 0x4f, 0x3b4: 0x50, 0x3b5: 0x51, 0x3b6: 0x102, 0x3b7: 0x52,\n\t0x3b8: 0x53, 0x3b9: 0x54, 0x3ba: 0x55, 0x3bb: 0x56, 0x3bc: 0x57, 0x3bd: 0x58, 0x3be: 0x59, 0x3bf: 0x5a,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x103, 0x3c1: 0x104, 0x3c2: 0x9f, 0x3c3: 0x105, 0x3c4: 0x106, 0x3c5: 0x9b, 0x3c6: 0x107, 0x3c7: 0x108,\n\t0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x109, 0x3cb: 0x10a, 0x3cc: 0x10b, 0x3cd: 0x10c, 0x3ce: 0x10d, 0x3cf: 0x10e,\n\t0x3d0: 0x10f, 0x3d1: 0x9f, 0x3d2: 0x110, 0x3d3: 0x111, 0x3d4: 0x112, 0x3d5: 0x113, 0x3d6: 0xba, 0x3d7: 0xba,\n\t0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x114, 0x3dd: 0x115, 0x3de: 0xba, 0x3df: 0xba,\n\t0x3e0: 0x116, 0x3e1: 0x117, 0x3e2: 0x118, 0x3e3: 0x119, 0x3e4: 0x11a, 0x3e5: 0xba, 0x3e6: 0x11b, 0x3e7: 0x11c,\n\t0x3e8: 0x11d, 0x3e9: 0x11e, 0x3ea: 0x11f, 0x3eb: 0x5b, 0x3ec: 0x120, 0x3ed: 0x121, 0x3ee: 0x5c, 0x3ef: 0xba,\n\t0x3f0: 0x122, 0x3f1: 0x123, 0x3f2: 0x124, 0x3f3: 0x125, 0x3f4: 0xba, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba,\n\t0x3f8: 0xba, 0x3f9: 0x126, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0xba, 0x3fd: 0xba, 0x3fe: 0xba, 0x3ff: 0xba,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x127, 0x401: 0x128, 0x402: 0x129, 0x403: 0x12a, 0x404: 0x12b, 0x405: 0x12c, 0x406: 0x12d, 0x407: 0x12e,\n\t0x408: 0x12f, 0x409: 0xba, 0x40a: 0x130, 0x40b: 0x131, 0x40c: 0x5d, 0x40d: 0x5e, 0x40e: 0xba, 0x40f: 0xba,\n\t0x410: 0x132, 0x411: 0x133, 0x412: 0x134, 0x413: 0x135, 0x414: 0xba, 0x415: 0xba, 0x416: 0x136, 0x417: 0x137,\n\t0x418: 0x138, 0x419: 0x139, 0x41a: 0x13a, 0x41b: 0x13b, 0x41c: 0x13c, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba,\n\t0x420: 0xba, 0x421: 0xba, 0x422: 0x13d, 0x423: 0x13e, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba,\n\t0x428: 0x13f, 0x429: 0x140, 0x42a: 0x141, 0x42b: 0x142, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba,\n\t0x430: 0x143, 0x431: 0x144, 0x432: 0x145, 0x433: 0xba, 0x434: 0x146, 0x435: 0x147, 0x436: 0xba, 0x437: 0xba,\n\t0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0xba, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f,\n\t0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x148, 0x44f: 0xba,\n\t0x450: 0x9b, 0x451: 0x149, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x14a, 0x456: 0xba, 0x457: 0xba,\n\t0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba,\n\t0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba,\n\t0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba,\n\t0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba,\n\t0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f,\n\t0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f,\n\t0x490: 0x14b, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba,\n\t0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba,\n\t0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba,\n\t0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba,\n\t0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba,\n\t0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba,\n\t0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba,\n\t0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f,\n\t0x4d8: 0x9f, 0x4d9: 0x14c, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba,\n\t0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba,\n\t0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba,\n\t0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba,\n\t0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba,\n\t// Block 0x14, offset 0x500\n\t0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba,\n\t0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba,\n\t0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba,\n\t0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba,\n\t0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f,\n\t0x528: 0x142, 0x529: 0x14d, 0x52a: 0xba, 0x52b: 0x14e, 0x52c: 0x14f, 0x52d: 0x150, 0x52e: 0x151, 0x52f: 0xba,\n\t0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba,\n\t0x538: 0xba, 0x539: 0xba, 0x53a: 0xba, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x152, 0x53e: 0x153, 0x53f: 0x154,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f,\n\t0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f,\n\t0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f,\n\t0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x155,\n\t0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f,\n\t0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x156, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba,\n\t0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba,\n\t0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x9f, 0x581: 0x9f, 0x582: 0x9f, 0x583: 0x9f, 0x584: 0x157, 0x585: 0x158, 0x586: 0x9f, 0x587: 0x9f,\n\t0x588: 0x9f, 0x589: 0x9f, 0x58a: 0x9f, 0x58b: 0x159, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba,\n\t0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba,\n\t0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba,\n\t0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba,\n\t0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba,\n\t0x5b0: 0x9f, 0x5b1: 0x15a, 0x5b2: 0x15b, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba,\n\t0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x15c, 0x5c4: 0x15d, 0x5c5: 0x15e, 0x5c6: 0x15f, 0x5c7: 0x160,\n\t0x5c8: 0x9b, 0x5c9: 0x161, 0x5ca: 0xba, 0x5cb: 0xba, 0x5cc: 0x9b, 0x5cd: 0x162, 0x5ce: 0xba, 0x5cf: 0xba,\n\t0x5d0: 0x5f, 0x5d1: 0x60, 0x5d2: 0x61, 0x5d3: 0x62, 0x5d4: 0x63, 0x5d5: 0x64, 0x5d6: 0x65, 0x5d7: 0x66,\n\t0x5d8: 0x67, 0x5d9: 0x68, 0x5da: 0x69, 0x5db: 0x6a, 0x5dc: 0x6b, 0x5dd: 0x6c, 0x5de: 0x6d, 0x5df: 0x6e,\n\t0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b,\n\t0x5e8: 0x163, 0x5e9: 0x164, 0x5ea: 0x165, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba,\n\t0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba,\n\t0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x166, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba,\n\t0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba,\n\t0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba,\n\t0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba,\n\t0x620: 0x122, 0x621: 0x122, 0x622: 0x122, 0x623: 0x167, 0x624: 0x6f, 0x625: 0x168, 0x626: 0xba, 0x627: 0xba,\n\t0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba,\n\t0x630: 0xba, 0x631: 0xba, 0x632: 0xba, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba,\n\t0x638: 0x70, 0x639: 0x71, 0x63a: 0x72, 0x63b: 0x169, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x16a, 0x641: 0x9b, 0x642: 0x16b, 0x643: 0x16c, 0x644: 0x73, 0x645: 0x74, 0x646: 0x16d, 0x647: 0x16e,\n\t0x648: 0x75, 0x649: 0x16f, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b,\n\t0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b,\n\t0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x170, 0x65c: 0x9b, 0x65d: 0x171, 0x65e: 0x9b, 0x65f: 0x172,\n\t0x660: 0x173, 0x661: 0x174, 0x662: 0x175, 0x663: 0xba, 0x664: 0x176, 0x665: 0x177, 0x666: 0x178, 0x667: 0x179,\n\t0x668: 0xba, 0x669: 0xba, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba,\n\t0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba,\n\t0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f,\n\t0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f,\n\t0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f,\n\t0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x17a, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f,\n\t0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f,\n\t0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f,\n\t0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f,\n\t0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f,\n\t0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f,\n\t0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f,\n\t0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x17b, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f,\n\t0x6e0: 0x17c, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f,\n\t0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f,\n\t0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f,\n\t0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f,\n\t0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f,\n\t0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f,\n\t0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f,\n\t0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f,\n\t0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f,\n\t0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f,\n\t0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x17d, 0x73b: 0x9f, 0x73c: 0x9f, 0x73d: 0x9f, 0x73e: 0x9f, 0x73f: 0x9f,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x9f, 0x741: 0x9f, 0x742: 0x9f, 0x743: 0x9f, 0x744: 0x9f, 0x745: 0x9f, 0x746: 0x9f, 0x747: 0x9f,\n\t0x748: 0x9f, 0x749: 0x9f, 0x74a: 0x9f, 0x74b: 0x9f, 0x74c: 0x9f, 0x74d: 0x9f, 0x74e: 0x9f, 0x74f: 0x9f,\n\t0x750: 0x9f, 0x751: 0x9f, 0x752: 0x9f, 0x753: 0x9f, 0x754: 0x9f, 0x755: 0x9f, 0x756: 0x9f, 0x757: 0x9f,\n\t0x758: 0x9f, 0x759: 0x9f, 0x75a: 0x9f, 0x75b: 0x9f, 0x75c: 0x9f, 0x75d: 0x9f, 0x75e: 0x9f, 0x75f: 0x9f,\n\t0x760: 0x9f, 0x761: 0x9f, 0x762: 0x9f, 0x763: 0x9f, 0x764: 0x9f, 0x765: 0x9f, 0x766: 0x9f, 0x767: 0x9f,\n\t0x768: 0x9f, 0x769: 0x9f, 0x76a: 0x9f, 0x76b: 0x9f, 0x76c: 0x9f, 0x76d: 0x9f, 0x76e: 0x9f, 0x76f: 0x17e,\n\t0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba,\n\t0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0xba, 0x781: 0xba, 0x782: 0xba, 0x783: 0xba, 0x784: 0xba, 0x785: 0xba, 0x786: 0xba, 0x787: 0xba,\n\t0x788: 0xba, 0x789: 0xba, 0x78a: 0xba, 0x78b: 0xba, 0x78c: 0xba, 0x78d: 0xba, 0x78e: 0xba, 0x78f: 0xba,\n\t0x790: 0xba, 0x791: 0xba, 0x792: 0xba, 0x793: 0xba, 0x794: 0xba, 0x795: 0xba, 0x796: 0xba, 0x797: 0xba,\n\t0x798: 0xba, 0x799: 0xba, 0x79a: 0xba, 0x79b: 0xba, 0x79c: 0xba, 0x79d: 0xba, 0x79e: 0xba, 0x79f: 0xba,\n\t0x7a0: 0x76, 0x7a1: 0x77, 0x7a2: 0x78, 0x7a3: 0x17f, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x180, 0x7a7: 0x7b,\n\t0x7a8: 0x7c, 0x7a9: 0xba, 0x7aa: 0xba, 0x7ab: 0xba, 0x7ac: 0xba, 0x7ad: 0xba, 0x7ae: 0xba, 0x7af: 0xba,\n\t0x7b0: 0xba, 0x7b1: 0xba, 0x7b2: 0xba, 0x7b3: 0xba, 0x7b4: 0xba, 0x7b5: 0xba, 0x7b6: 0xba, 0x7b7: 0xba,\n\t0x7b8: 0xba, 0x7b9: 0xba, 0x7ba: 0xba, 0x7bb: 0xba, 0x7bc: 0xba, 0x7bd: 0xba, 0x7be: 0xba, 0x7bf: 0xba,\n\t// Block 0x1f, offset 0x7c0\n\t0x7d0: 0x0d, 0x7d1: 0x0e, 0x7d2: 0x0f, 0x7d3: 0x10, 0x7d4: 0x11, 0x7d5: 0x0b, 0x7d6: 0x12, 0x7d7: 0x07,\n\t0x7d8: 0x13, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x14, 0x7dc: 0x0b, 0x7dd: 0x15, 0x7de: 0x16, 0x7df: 0x17,\n\t0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07,\n\t0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x18, 0x7eb: 0x19, 0x7ec: 0x1a, 0x7ed: 0x07, 0x7ee: 0x1b, 0x7ef: 0x1c,\n\t0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b,\n\t0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x0b, 0x801: 0x0b, 0x802: 0x0b, 0x803: 0x0b, 0x804: 0x0b, 0x805: 0x0b, 0x806: 0x0b, 0x807: 0x0b,\n\t0x808: 0x0b, 0x809: 0x0b, 0x80a: 0x0b, 0x80b: 0x0b, 0x80c: 0x0b, 0x80d: 0x0b, 0x80e: 0x0b, 0x80f: 0x0b,\n\t0x810: 0x0b, 0x811: 0x0b, 0x812: 0x0b, 0x813: 0x0b, 0x814: 0x0b, 0x815: 0x0b, 0x816: 0x0b, 0x817: 0x0b,\n\t0x818: 0x0b, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x0b, 0x81c: 0x0b, 0x81d: 0x0b, 0x81e: 0x0b, 0x81f: 0x0b,\n\t0x820: 0x0b, 0x821: 0x0b, 0x822: 0x0b, 0x823: 0x0b, 0x824: 0x0b, 0x825: 0x0b, 0x826: 0x0b, 0x827: 0x0b,\n\t0x828: 0x0b, 0x829: 0x0b, 0x82a: 0x0b, 0x82b: 0x0b, 0x82c: 0x0b, 0x82d: 0x0b, 0x82e: 0x0b, 0x82f: 0x0b,\n\t0x830: 0x0b, 0x831: 0x0b, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b,\n\t0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x181, 0x841: 0x182, 0x842: 0xba, 0x843: 0xba, 0x844: 0x183, 0x845: 0x183, 0x846: 0x183, 0x847: 0x184,\n\t0x848: 0xba, 0x849: 0xba, 0x84a: 0xba, 0x84b: 0xba, 0x84c: 0xba, 0x84d: 0xba, 0x84e: 0xba, 0x84f: 0xba,\n\t0x850: 0xba, 0x851: 0xba, 0x852: 0xba, 0x853: 0xba, 0x854: 0xba, 0x855: 0xba, 0x856: 0xba, 0x857: 0xba,\n\t0x858: 0xba, 0x859: 0xba, 0x85a: 0xba, 0x85b: 0xba, 0x85c: 0xba, 0x85d: 0xba, 0x85e: 0xba, 0x85f: 0xba,\n\t0x860: 0xba, 0x861: 0xba, 0x862: 0xba, 0x863: 0xba, 0x864: 0xba, 0x865: 0xba, 0x866: 0xba, 0x867: 0xba,\n\t0x868: 0xba, 0x869: 0xba, 0x86a: 0xba, 0x86b: 0xba, 0x86c: 0xba, 0x86d: 0xba, 0x86e: 0xba, 0x86f: 0xba,\n\t0x870: 0xba, 0x871: 0xba, 0x872: 0xba, 0x873: 0xba, 0x874: 0xba, 0x875: 0xba, 0x876: 0xba, 0x877: 0xba,\n\t0x878: 0xba, 0x879: 0xba, 0x87a: 0xba, 0x87b: 0xba, 0x87c: 0xba, 0x87d: 0xba, 0x87e: 0xba, 0x87f: 0xba,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b,\n\t0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b,\n\t0x890: 0x0b, 0x891: 0x0b, 0x892: 0x0b, 0x893: 0x0b, 0x894: 0x0b, 0x895: 0x0b, 0x896: 0x0b, 0x897: 0x0b,\n\t0x898: 0x0b, 0x899: 0x0b, 0x89a: 0x0b, 0x89b: 0x0b, 0x89c: 0x0b, 0x89d: 0x0b, 0x89e: 0x0b, 0x89f: 0x0b,\n\t0x8a0: 0x1f, 0x8a1: 0x0b, 0x8a2: 0x0b, 0x8a3: 0x0b, 0x8a4: 0x0b, 0x8a5: 0x0b, 0x8a6: 0x0b, 0x8a7: 0x0b,\n\t0x8a8: 0x0b, 0x8a9: 0x0b, 0x8aa: 0x0b, 0x8ab: 0x0b, 0x8ac: 0x0b, 0x8ad: 0x0b, 0x8ae: 0x0b, 0x8af: 0x0b,\n\t0x8b0: 0x0b, 0x8b1: 0x0b, 0x8b2: 0x0b, 0x8b3: 0x0b, 0x8b4: 0x0b, 0x8b5: 0x0b, 0x8b6: 0x0b, 0x8b7: 0x0b,\n\t0x8b8: 0x0b, 0x8b9: 0x0b, 0x8ba: 0x0b, 0x8bb: 0x0b, 0x8bc: 0x0b, 0x8bd: 0x0b, 0x8be: 0x0b, 0x8bf: 0x0b,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b,\n\t0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b,\n}\n\n// idnaSparseOffset: 264 entries, 528 bytes\nvar idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x4f, 0x5e, 0x63, 0x6b, 0x77, 0x85, 0x8a, 0x93, 0xa3, 0xb1, 0xbd, 0xc9, 0xda, 0xe4, 0xeb, 0xf8, 0x109, 0x110, 0x11b, 0x12a, 0x138, 0x142, 0x144, 0x149, 0x14c, 0x14f, 0x151, 0x15d, 0x168, 0x170, 0x176, 0x17c, 0x181, 0x186, 0x189, 0x18d, 0x193, 0x198, 0x1a4, 0x1ae, 0x1b4, 0x1c5, 0x1cf, 0x1d2, 0x1da, 0x1dd, 0x1ea, 0x1f2, 0x1f6, 0x1fd, 0x205, 0x215, 0x221, 0x223, 0x22d, 0x239, 0x245, 0x251, 0x259, 0x25e, 0x268, 0x279, 0x27d, 0x288, 0x28c, 0x295, 0x29d, 0x2a3, 0x2a8, 0x2ab, 0x2af, 0x2b5, 0x2b9, 0x2bd, 0x2c3, 0x2ca, 0x2d0, 0x2d8, 0x2df, 0x2ea, 0x2f4, 0x2f8, 0x2fb, 0x301, 0x305, 0x307, 0x30a, 0x30c, 0x30f, 0x319, 0x31c, 0x32b, 0x32f, 0x334, 0x337, 0x33b, 0x340, 0x345, 0x34b, 0x351, 0x360, 0x366, 0x36a, 0x379, 0x37e, 0x386, 0x390, 0x39b, 0x3a3, 0x3b4, 0x3bd, 0x3cd, 0x3da, 0x3e4, 0x3e9, 0x3f6, 0x3fa, 0x3ff, 0x401, 0x405, 0x407, 0x40b, 0x414, 0x41a, 0x41e, 0x42e, 0x438, 0x43d, 0x440, 0x446, 0x44d, 0x452, 0x456, 0x45c, 0x461, 0x46a, 0x46f, 0x475, 0x47c, 0x483, 0x48a, 0x48e, 0x493, 0x496, 0x49b, 0x4a7, 0x4ad, 0x4b2, 0x4b9, 0x4c1, 0x4c6, 0x4ca, 0x4da, 0x4e1, 0x4e5, 0x4e9, 0x4f0, 0x4f2, 0x4f5, 0x4f8, 0x4fc, 0x500, 0x506, 0x50f, 0x51b, 0x522, 0x52b, 0x533, 0x53a, 0x548, 0x555, 0x562, 0x56b, 0x56f, 0x57d, 0x585, 0x590, 0x599, 0x59f, 0x5a7, 0x5b0, 0x5ba, 0x5bd, 0x5c9, 0x5cc, 0x5d1, 0x5de, 0x5e7, 0x5f3, 0x5f6, 0x600, 0x609, 0x615, 0x622, 0x62a, 0x62d, 0x632, 0x635, 0x638, 0x63b, 0x642, 0x649, 0x64d, 0x658, 0x65b, 0x661, 0x666, 0x66a, 0x66d, 0x670, 0x673, 0x676, 0x679, 0x67e, 0x688, 0x68b, 0x68f, 0x69e, 0x6aa, 0x6ae, 0x6b3, 0x6b8, 0x6bc, 0x6c1, 0x6ca, 0x6d5, 0x6db, 0x6e3, 0x6e7, 0x6eb, 0x6f1, 0x6f7, 0x6fc, 0x6ff, 0x70f, 0x716, 0x719, 0x71c, 0x720, 0x726, 0x72b, 0x730, 0x735, 0x738, 0x73d, 0x740, 0x743, 0x747, 0x74b, 0x74e, 0x75e, 0x76f, 0x774, 0x776, 0x778}\n\n// idnaSparseValues: 1915 entries, 7660 bytes\nvar idnaSparseValues = [1915]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe105, lo: 0x80, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0x97},\n\t{value: 0xe105, lo: 0x98, hi: 0x9e},\n\t{value: 0x001f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbf},\n\t// Block 0x1, offset 0x8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0xe01d, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0335, lo: 0x83, hi: 0x83},\n\t{value: 0x034d, lo: 0x84, hi: 0x84},\n\t{value: 0x0365, lo: 0x85, hi: 0x85},\n\t{value: 0xe00d, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0xe00d, lo: 0x88, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x89},\n\t{value: 0xe00d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe00d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0x8d},\n\t{value: 0xe00d, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0xbf},\n\t// Block 0x2, offset 0x19\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0249, lo: 0xb0, hi: 0xb0},\n\t{value: 0x037d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0259, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0269, lo: 0xb3, hi: 0xb3},\n\t{value: 0x034d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0395, lo: 0xb5, hi: 0xb5},\n\t{value: 0xe1bd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0279, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0289, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbf},\n\t// Block 0x3, offset 0x25\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x3308, lo: 0x80, hi: 0xbf},\n\t// Block 0x4, offset 0x27\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x03f5, lo: 0x80, hi: 0x8f},\n\t{value: 0xe105, lo: 0x90, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5, offset 0x2c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x0545, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x0008, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x6, offset 0x34\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0401, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x88},\n\t{value: 0x0018, lo: 0x89, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7, offset 0x3f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0818, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x82},\n\t{value: 0x0818, lo: 0x83, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x8, offset 0x4b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0c08, lo: 0x88, hi: 0x99},\n\t{value: 0x0a08, lo: 0x9a, hi: 0xbf},\n\t// Block 0x9, offset 0x4f\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0c08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0a08, lo: 0x8e, hi: 0x98},\n\t{value: 0x0c08, lo: 0x99, hi: 0x9b},\n\t{value: 0x0a08, lo: 0x9c, hi: 0xaa},\n\t{value: 0x0c08, lo: 0xab, hi: 0xac},\n\t{value: 0x0a08, lo: 0xad, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0a08, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0c08, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xa, offset 0x5e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xb, offset 0x63\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0xc, offset 0x6b\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x99},\n\t{value: 0x0808, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa3},\n\t{value: 0x0808, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa7},\n\t{value: 0x0808, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0818, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd, offset 0x77\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0a08, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0c08, lo: 0xaa, hi: 0xac},\n\t{value: 0x0808, lo: 0xad, hi: 0xad},\n\t{value: 0x0c08, lo: 0xae, hi: 0xae},\n\t{value: 0x0a08, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0a08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0a08, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xe, offset 0x85\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa1},\n\t{value: 0x0840, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xbf},\n\t// Block 0xf, offset 0x8a\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x10, offset 0x93\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x85},\n\t{value: 0x3008, lo: 0x86, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8c},\n\t{value: 0x3b08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x11, offset 0xa3\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x12, offset 0xb1\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xba},\n\t{value: 0x3b08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x13, offset 0xbd\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0040, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x14, offset 0xc9\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x89},\n\t{value: 0x3b08, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x3008, lo: 0x98, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x15, offset 0xda\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x08f1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb9},\n\t{value: 0x3b08, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x16, offset 0xe4\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0xbf},\n\t// Block 0x17, offset 0xeb\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0961, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0999, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0008, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x18, offset 0xf8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe03d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x19, offset 0x109\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0x1a, offset 0x110\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1b, offset 0x11b\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3008, lo: 0xa2, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbf},\n\t// Block 0x1c, offset 0x12a\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x8c},\n\t{value: 0x3308, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x3008, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x1d, offset 0x138\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x86},\n\t{value: 0x055d, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8c},\n\t{value: 0x055d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe105, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x1e, offset 0x142\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0018, lo: 0x80, hi: 0xbf},\n\t// Block 0x1f, offset 0x144\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa0},\n\t{value: 0x2018, lo: 0xa1, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x20, offset 0x149\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa7},\n\t{value: 0x2018, lo: 0xa8, hi: 0xbf},\n\t// Block 0x21, offset 0x14c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2018, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0xbf},\n\t// Block 0x22, offset 0x14f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0008, lo: 0x80, hi: 0xbf},\n\t// Block 0x23, offset 0x151\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x24, offset 0x15d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x25, offset 0x168\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x26, offset 0x170\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x27, offset 0x176\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x28, offset 0x17c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x29, offset 0x181\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x2a, offset 0x186\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x2b, offset 0x189\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xbf},\n\t// Block 0x2c, offset 0x18d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2d, offset 0x193\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x2e, offset 0x198\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x3b08, lo: 0x94, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x2f, offset 0x1a4\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x30, offset 0x1ae\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xb3},\n\t{value: 0x3340, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x31, offset 0x1b4\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x3008, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x91},\n\t{value: 0x3b08, lo: 0x92, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0x96},\n\t{value: 0x0008, lo: 0x97, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x32, offset 0x1c5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x86},\n\t{value: 0x0218, lo: 0x87, hi: 0x87},\n\t{value: 0x0018, lo: 0x88, hi: 0x8a},\n\t{value: 0x33c0, lo: 0x8b, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0208, lo: 0xa0, hi: 0xbf},\n\t// Block 0x33, offset 0x1cf\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0208, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x34, offset 0x1d2\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0208, lo: 0x87, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0208, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x35, offset 0x1da\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x36, offset 0x1dd\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x37, offset 0x1ea\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x38, offset 0x1f2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x39, offset 0x1f6\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0028, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xbf},\n\t// Block 0x3a, offset 0x1fd\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x3308, lo: 0x97, hi: 0x98},\n\t{value: 0x3008, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x3b, offset 0x205\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x94},\n\t{value: 0x3008, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xac},\n\t{value: 0x3008, lo: 0xad, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3c, offset 0x215\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbd},\n\t{value: 0x3318, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x221\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0040, lo: 0x80, hi: 0xbf},\n\t// Block 0x3e, offset 0x223\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3008, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x3f, offset 0x22d\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x3808, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x40, offset 0x239\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3808, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xbf},\n\t// Block 0x41, offset 0x245\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3008, lo: 0xaa, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3808, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x42, offset 0x251\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x43, offset 0x259\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x44, offset 0x25e\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0e29, lo: 0x80, hi: 0x80},\n\t{value: 0x0e41, lo: 0x81, hi: 0x81},\n\t{value: 0x0e59, lo: 0x82, hi: 0x82},\n\t{value: 0x0e71, lo: 0x83, hi: 0x83},\n\t{value: 0x0e89, lo: 0x84, hi: 0x85},\n\t{value: 0x0ea1, lo: 0x86, hi: 0x86},\n\t{value: 0x0eb9, lo: 0x87, hi: 0x87},\n\t{value: 0x057d, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0x45, offset 0x268\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x92},\n\t{value: 0x0018, lo: 0x93, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0008, lo: 0xa9, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x46, offset 0x279\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0x47, offset 0x27d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x87},\n\t{value: 0xe045, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0xe045, lo: 0x98, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0xe045, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbf},\n\t// Block 0x48, offset 0x288\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x3318, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x49, offset 0x28c\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x24c1, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x4a, offset 0x295\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x24f1, lo: 0xac, hi: 0xac},\n\t{value: 0x2529, lo: 0xad, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xae},\n\t{value: 0x2579, lo: 0xaf, hi: 0xaf},\n\t{value: 0x25b1, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x4b, offset 0x29d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x9f},\n\t{value: 0x0080, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xad},\n\t{value: 0x0080, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x4c, offset 0x2a3\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa8},\n\t{value: 0x09c5, lo: 0xa9, hi: 0xa9},\n\t{value: 0x09e5, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xbf},\n\t// Block 0x4d, offset 0x2a8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0x4e, offset 0x2ab\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x28c1, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x4f, offset 0x2af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0e66, lo: 0xb4, hi: 0xb4},\n\t{value: 0x292a, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0e86, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x50, offset 0x2b5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x9b},\n\t{value: 0x2941, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0xbf},\n\t// Block 0x51, offset 0x2b9\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x52, offset 0x2bd\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0018, lo: 0xbd, hi: 0xbf},\n\t// Block 0x53, offset 0x2c3\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0xab},\n\t{value: 0x0018, lo: 0xac, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x54, offset 0x2ca\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x03f5, lo: 0x90, hi: 0x9f},\n\t{value: 0x0ea5, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x55, offset 0x2d0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x56, offset 0x2d8\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xae},\n\t{value: 0xe075, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x57, offset 0x2df\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x58, offset 0x2ea\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xbf},\n\t// Block 0x59, offset 0x2f4\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5a, offset 0x2f8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0x5b, offset 0x2fb\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9e},\n\t{value: 0x0edd, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x5c, offset 0x301\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb2},\n\t{value: 0x0efd, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x5d, offset 0x305\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x0f1d, lo: 0x80, hi: 0xbf},\n\t// Block 0x5e, offset 0x307\n\t{value: 0x0020, lo: 0x02},\n\t{value: 0x171d, lo: 0x80, hi: 0x8f},\n\t{value: 0x18fd, lo: 0x90, hi: 0xbf},\n\t// Block 0x5f, offset 0x30a\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x1efd, lo: 0x80, hi: 0xbf},\n\t// Block 0x60, offset 0x30c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x61, offset 0x30f\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9a},\n\t{value: 0x29e2, lo: 0x9b, hi: 0x9b},\n\t{value: 0x2a0a, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9e},\n\t{value: 0x2a31, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x62, offset 0x319\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x2a69, lo: 0xbf, hi: 0xbf},\n\t// Block 0x63, offset 0x31c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0040, lo: 0x80, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x2a1d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x2a3d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x2a5d, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2a7d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2a5d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2a9d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2abd, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2add, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2afd, lo: 0xba, hi: 0xbb},\n\t{value: 0x2b1d, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2afd, lo: 0xbe, hi: 0xbf},\n\t// Block 0x64, offset 0x32b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x65, offset 0x32f\n\t{value: 0x0030, lo: 0x04},\n\t{value: 0x2aa2, lo: 0x80, hi: 0x9d},\n\t{value: 0x305a, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x30a2, lo: 0xa0, hi: 0xbf},\n\t// Block 0x66, offset 0x334\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0x67, offset 0x337\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x68, offset 0x33b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x69, offset 0x340\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x6a, offset 0x345\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0018, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6b, offset 0x34b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2009, lo: 0xb8, hi: 0xb8},\n\t{value: 0x6e89, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xbf},\n\t// Block 0x6c, offset 0x351\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x3308, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0008, lo: 0x8c, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x6d, offset 0x360\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0208, lo: 0x80, hi: 0xb1},\n\t{value: 0x0108, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6e, offset 0x366\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xbf},\n\t// Block 0x6f, offset 0x36a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x70, offset 0x379\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x71, offset 0x37e\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x91},\n\t{value: 0x3008, lo: 0x92, hi: 0x92},\n\t{value: 0x3808, lo: 0x93, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x72, offset 0x386\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb9},\n\t{value: 0x3008, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x73, offset 0x390\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x74, offset 0x39b\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x75, offset 0x3a3\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8c},\n\t{value: 0x3008, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x76, offset 0x3b4\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x77, offset 0x3bd\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x9a},\n\t{value: 0x0008, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3b08, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x78, offset 0x3cd\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x90},\n\t{value: 0x0008, lo: 0x91, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x79, offset 0x3da\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4465, lo: 0x9c, hi: 0x9c},\n\t{value: 0x447d, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2971, lo: 0x9e, hi: 0x9e},\n\t{value: 0xe06d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xaf},\n\t{value: 0x4495, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7a, offset 0x3e4\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x44b5, lo: 0x80, hi: 0x8f},\n\t{value: 0x44d5, lo: 0x90, hi: 0x9f},\n\t{value: 0x44f5, lo: 0xa0, hi: 0xaf},\n\t{value: 0x44d5, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7b, offset 0x3e9\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3b08, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x7c, offset 0x3f6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7d, offset 0x3fa\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x7e, offset 0x3ff\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x4515, lo: 0x80, hi: 0xbf},\n\t// Block 0x7f, offset 0x401\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x4d15, lo: 0x80, hi: 0x94},\n\t{value: 0x4ad5, lo: 0x95, hi: 0x95},\n\t{value: 0x4fb5, lo: 0x96, hi: 0xbf},\n\t// Block 0x80, offset 0x405\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x54f5, lo: 0x80, hi: 0xbf},\n\t// Block 0x81, offset 0x407\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x5cf5, lo: 0x80, hi: 0x84},\n\t{value: 0x5655, lo: 0x85, hi: 0x85},\n\t{value: 0x5d95, lo: 0x86, hi: 0xbf},\n\t// Block 0x82, offset 0x40b\n\t{value: 0x0020, lo: 0x08},\n\t{value: 0x6b55, lo: 0x80, hi: 0x8f},\n\t{value: 0x6d15, lo: 0x90, hi: 0x90},\n\t{value: 0x6d55, lo: 0x91, hi: 0xab},\n\t{value: 0x6ea1, lo: 0xac, hi: 0xac},\n\t{value: 0x70b5, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x70d5, lo: 0xb0, hi: 0xbf},\n\t// Block 0x83, offset 0x414\n\t{value: 0x0020, lo: 0x05},\n\t{value: 0x72d5, lo: 0x80, hi: 0xad},\n\t{value: 0x6535, lo: 0xae, hi: 0xae},\n\t{value: 0x7895, lo: 0xaf, hi: 0xb5},\n\t{value: 0x6f55, lo: 0xb6, hi: 0xb6},\n\t{value: 0x7975, lo: 0xb7, hi: 0xbf},\n\t// Block 0x84, offset 0x41a\n\t{value: 0x0028, lo: 0x03},\n\t{value: 0x7c21, lo: 0x80, hi: 0x82},\n\t{value: 0x7be1, lo: 0x83, hi: 0x83},\n\t{value: 0x7c99, lo: 0x84, hi: 0xbf},\n\t// Block 0x85, offset 0x41e\n\t{value: 0x0038, lo: 0x0f},\n\t{value: 0x9db1, lo: 0x80, hi: 0x83},\n\t{value: 0x9e59, lo: 0x84, hi: 0x85},\n\t{value: 0x9e91, lo: 0x86, hi: 0x87},\n\t{value: 0x9ec9, lo: 0x88, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0xa089, lo: 0x92, hi: 0x97},\n\t{value: 0xa1a1, lo: 0x98, hi: 0x9c},\n\t{value: 0xa281, lo: 0x9d, hi: 0xb3},\n\t{value: 0x9d41, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9db1, lo: 0xb5, hi: 0xb5},\n\t{value: 0xa789, lo: 0xb6, hi: 0xbb},\n\t{value: 0xa869, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa7f9, lo: 0xbd, hi: 0xbd},\n\t{value: 0xa8d9, lo: 0xbe, hi: 0xbf},\n\t// Block 0x86, offset 0x42e\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0008, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x87, offset 0x438\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x88, offset 0x43d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x89, offset 0x440\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x8a, offset 0x446\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x8b, offset 0x44d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x8c, offset 0x452\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8d, offset 0x456\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x8e, offset 0x45c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xbf},\n\t// Block 0x8f, offset 0x461\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x90, offset 0x46a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x91, offset 0x46f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x92, offset 0x475\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x97},\n\t{value: 0x8ad5, lo: 0x98, hi: 0x9f},\n\t{value: 0x8aed, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xbf},\n\t// Block 0x93, offset 0x47c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x8aed, lo: 0xb0, hi: 0xb7},\n\t{value: 0x8ad5, lo: 0xb8, hi: 0xbf},\n\t// Block 0x94, offset 0x483\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x95, offset 0x48a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x96, offset 0x48e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xae},\n\t{value: 0x0018, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x97, offset 0x493\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x98, offset 0x496\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xbf},\n\t// Block 0x99, offset 0x49b\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0808, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0808, lo: 0x8a, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0808, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0808, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9a, offset 0x4a7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0818, lo: 0x97, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0818, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9b, offset 0x4ad\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa6},\n\t{value: 0x0818, lo: 0xa7, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x9c, offset 0x4b2\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x0818, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9d, offset 0x4b9\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0818, lo: 0x96, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0818, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9e, offset 0x4c1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbb},\n\t{value: 0x0818, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0808, lo: 0xbe, hi: 0xbf},\n\t// Block 0x9f, offset 0x4c6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0818, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x0818, lo: 0x92, hi: 0xbf},\n\t// Block 0xa0, offset 0x4ca\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x94},\n\t{value: 0x0808, lo: 0x95, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x98},\n\t{value: 0x0808, lo: 0x99, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa1, offset 0x4da\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0818, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0818, lo: 0x90, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0818, lo: 0xbd, hi: 0xbf},\n\t// Block 0xa2, offset 0x4e1\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xa3, offset 0x4e5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xbf},\n\t// Block 0xa4, offset 0x4e9\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0818, lo: 0x98, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb7},\n\t{value: 0x0818, lo: 0xb8, hi: 0xbf},\n\t// Block 0xa5, offset 0x4f0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0808, lo: 0x80, hi: 0xbf},\n\t// Block 0xa6, offset 0x4f2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0808, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xa7, offset 0x4f5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x03dd, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xa8, offset 0x4f8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xbf},\n\t// Block 0xa9, offset 0x4fc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0818, lo: 0xa0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xaa, offset 0x500\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xab, offset 0x506\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x91},\n\t{value: 0x0018, lo: 0x92, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xac, offset 0x50f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0340, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0xad, offset 0x51b\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xae, offset 0x522\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb2},\n\t{value: 0x3b08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xbf},\n\t// Block 0xaf, offset 0x52b\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb0, offset 0x533\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb1, offset 0x53a\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xb2, offset 0x548\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3808, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb3, offset 0x555\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xb4, offset 0x562\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x3308, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa9},\n\t{value: 0x3b08, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb5, offset 0x56b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xb6, offset 0x56f\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xb7, offset 0x57d\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb8, offset 0x585\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x85},\n\t{value: 0x0018, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xb9, offset 0x590\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xba, offset 0x599\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9b},\n\t{value: 0x3308, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xbb, offset 0x59f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbc, offset 0x5a7\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xbd, offset 0x5b0\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb5},\n\t{value: 0x3808, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0xbe, offset 0x5ba\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xbf, offset 0x5bd\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0xc0, offset 0x5c9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xbf},\n\t// Block 0xc1, offset 0x5cc\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc2, offset 0x5d1\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc3, offset 0x5de\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x3b08, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0xbf},\n\t// Block 0xc4, offset 0x5e7\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x98},\n\t{value: 0x3b08, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xbf},\n\t// Block 0xc5, offset 0x5f3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xc6, offset 0x5f6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc7, offset 0x600\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xbf},\n\t// Block 0xc8, offset 0x609\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xa9},\n\t{value: 0x3308, lo: 0xaa, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xc9, offset 0x615\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xca, offset 0x622\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xcb, offset 0x62a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xcc, offset 0x62d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xcd, offset 0x632\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xce, offset 0x635\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xbf},\n\t// Block 0xcf, offset 0x638\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xbf},\n\t// Block 0xd0, offset 0x63b\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xd1, offset 0x642\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xd2, offset 0x649\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0xd3, offset 0x64d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0xd4, offset 0x658\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xd5, offset 0x65b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd6, offset 0x661\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xd7, offset 0x666\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xbf},\n\t// Block 0xd8, offset 0x66a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xd9, offset 0x66d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xda, offset 0x670\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xdb, offset 0x673\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xdc, offset 0x676\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xdd, offset 0x679\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0xde, offset 0x67e\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x03c0, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xdf, offset 0x688\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xe0, offset 0x68b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xbf},\n\t// Block 0xe1, offset 0x68f\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0xb5b9, lo: 0x9e, hi: 0x9e},\n\t{value: 0xb601, lo: 0x9f, hi: 0x9f},\n\t{value: 0xb649, lo: 0xa0, hi: 0xa0},\n\t{value: 0xb6b1, lo: 0xa1, hi: 0xa1},\n\t{value: 0xb719, lo: 0xa2, hi: 0xa2},\n\t{value: 0xb781, lo: 0xa3, hi: 0xa3},\n\t{value: 0xb7e9, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3018, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3318, lo: 0xa7, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xac},\n\t{value: 0x3018, lo: 0xad, hi: 0xb2},\n\t{value: 0x0340, lo: 0xb3, hi: 0xba},\n\t{value: 0x3318, lo: 0xbb, hi: 0xbf},\n\t// Block 0xe2, offset 0x69e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3318, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x84},\n\t{value: 0x3318, lo: 0x85, hi: 0x8b},\n\t{value: 0x0018, lo: 0x8c, hi: 0xa9},\n\t{value: 0x3318, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xba},\n\t{value: 0xb851, lo: 0xbb, hi: 0xbb},\n\t{value: 0xb899, lo: 0xbc, hi: 0xbc},\n\t{value: 0xb8e1, lo: 0xbd, hi: 0xbd},\n\t{value: 0xb949, lo: 0xbe, hi: 0xbe},\n\t{value: 0xb9b1, lo: 0xbf, hi: 0xbf},\n\t// Block 0xe3, offset 0x6aa\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xba19, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xbf},\n\t// Block 0xe4, offset 0x6ae\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3318, lo: 0x82, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0xbf},\n\t// Block 0xe5, offset 0x6b3\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xe6, offset 0x6b8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0xe7, offset 0x6bc\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0xe8, offset 0x6c1\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3308, lo: 0xa1, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe9, offset 0x6ca\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0xea, offset 0x6d5\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x86},\n\t{value: 0x0818, lo: 0x87, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0xeb, offset 0x6db\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0a08, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xec, offset 0x6e3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xed, offset 0x6e7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0xee, offset 0x6eb\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0xef, offset 0x6f1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xf0, offset 0x6f7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0xc1c1, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xf1, offset 0x6fc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xbf},\n\t// Block 0xf2, offset 0x6ff\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xc7e9, lo: 0x80, hi: 0x80},\n\t{value: 0xc839, lo: 0x81, hi: 0x81},\n\t{value: 0xc889, lo: 0x82, hi: 0x82},\n\t{value: 0xc8d9, lo: 0x83, hi: 0x83},\n\t{value: 0xc929, lo: 0x84, hi: 0x84},\n\t{value: 0xc979, lo: 0x85, hi: 0x85},\n\t{value: 0xc9c9, lo: 0x86, hi: 0x86},\n\t{value: 0xca19, lo: 0x87, hi: 0x87},\n\t{value: 0xca69, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0xcab9, lo: 0x90, hi: 0x90},\n\t{value: 0xcad9, lo: 0x91, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xbf},\n\t// Block 0xf3, offset 0x70f\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xf4, offset 0x716\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0xf5, offset 0x719\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0xbf},\n\t// Block 0xf6, offset 0x71c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0xf7, offset 0x720\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0xf8, offset 0x726\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0xf9, offset 0x72b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xfa, offset 0x730\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0xfb, offset 0x735\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xbf},\n\t// Block 0xfc, offset 0x738\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0xfd, offset 0x73d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0xfe, offset 0x740\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xff, offset 0x743\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x100, offset 0x747\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x101, offset 0x74b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x102, offset 0x74e\n\t{value: 0x0020, lo: 0x0f},\n\t{value: 0xdeb9, lo: 0x80, hi: 0x89},\n\t{value: 0x8dfd, lo: 0x8a, hi: 0x8a},\n\t{value: 0xdff9, lo: 0x8b, hi: 0x9c},\n\t{value: 0x8e1d, lo: 0x9d, hi: 0x9d},\n\t{value: 0xe239, lo: 0x9e, hi: 0xa2},\n\t{value: 0x8e3d, lo: 0xa3, hi: 0xa3},\n\t{value: 0xe2d9, lo: 0xa4, hi: 0xab},\n\t{value: 0x7ed5, lo: 0xac, hi: 0xac},\n\t{value: 0xe3d9, lo: 0xad, hi: 0xaf},\n\t{value: 0x8e5d, lo: 0xb0, hi: 0xb0},\n\t{value: 0xe439, lo: 0xb1, hi: 0xb6},\n\t{value: 0x8e7d, lo: 0xb7, hi: 0xb9},\n\t{value: 0xe4f9, lo: 0xba, hi: 0xba},\n\t{value: 0x8edd, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe519, lo: 0xbc, hi: 0xbf},\n\t// Block 0x103, offset 0x75e\n\t{value: 0x0020, lo: 0x10},\n\t{value: 0x937d, lo: 0x80, hi: 0x80},\n\t{value: 0xf099, lo: 0x81, hi: 0x86},\n\t{value: 0x939d, lo: 0x87, hi: 0x8a},\n\t{value: 0xd9f9, lo: 0x8b, hi: 0x8b},\n\t{value: 0xf159, lo: 0x8c, hi: 0x96},\n\t{value: 0x941d, lo: 0x97, hi: 0x97},\n\t{value: 0xf2b9, lo: 0x98, hi: 0xa3},\n\t{value: 0x943d, lo: 0xa4, hi: 0xa6},\n\t{value: 0xf439, lo: 0xa7, hi: 0xaa},\n\t{value: 0x949d, lo: 0xab, hi: 0xab},\n\t{value: 0xf4b9, lo: 0xac, hi: 0xac},\n\t{value: 0x94bd, lo: 0xad, hi: 0xad},\n\t{value: 0xf4d9, lo: 0xae, hi: 0xaf},\n\t{value: 0x94dd, lo: 0xb0, hi: 0xb1},\n\t{value: 0xf519, lo: 0xb2, hi: 0xbe},\n\t{value: 0x2040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x104, offset 0x76f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0340, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x9f},\n\t{value: 0x0340, lo: 0xa0, hi: 0xbf},\n\t// Block 0x105, offset 0x774\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0340, lo: 0x80, hi: 0xbf},\n\t// Block 0x106, offset 0x776\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x33c0, lo: 0x80, hi: 0xbf},\n\t// Block 0x107, offset 0x778\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x33c0, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n}\n\n// Total table size 42114 bytes (41KiB); checksum: 355A58A4\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/tables11.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.13 && !go1.14\n\npackage idna\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"11.0.0\"\n\nvar mappings string = \"\" + // Size: 8175 bytes\n\t\"\\x00\\x01 \\x03 ̈\\x01a\\x03 ̄\\x012\\x013\\x03 ́\\x03 ̧\\x011\\x01o\\x051⁄4\\x051⁄2\" +\n\t\"\\x053⁄4\\x03i̇\\x03l·\\x03ʼn\\x01s\\x03dž\\x03ⱥ\\x03ⱦ\\x01h\\x01j\\x01r\\x01w\\x01y\" +\n\t\"\\x03 ̆\\x03 ̇\\x03 ̊\\x03 ̨\\x03 ̃\\x03 ̋\\x01l\\x01x\\x04̈́\\x03 ι\\x01;\\x05 ̈́\" +\n\t\"\\x04եւ\\x04اٴ\\x04وٴ\\x04ۇٴ\\x04يٴ\\x06क़\\x06ख़\\x06ग़\\x06ज़\\x06ड़\\x06ढ़\\x06फ़\" +\n\t\"\\x06य़\\x06ড়\\x06ঢ়\\x06য়\\x06ਲ਼\\x06ਸ਼\\x06ਖ਼\\x06ਗ਼\\x06ਜ਼\\x06ਫ਼\\x06ଡ଼\\x06ଢ଼\" +\n\t\"\\x06ํา\\x06ໍາ\\x06ຫນ\\x06ຫມ\\x06གྷ\\x06ཌྷ\\x06དྷ\\x06བྷ\\x06ཛྷ\\x06ཀྵ\\x06ཱི\\x06ཱུ\" +\n\t\"\\x06ྲྀ\\x09ྲཱྀ\\x06ླྀ\\x09ླཱྀ\\x06ཱྀ\\x06ྒྷ\\x06ྜྷ\\x06ྡྷ\\x06ྦྷ\\x06ྫྷ\\x06ྐྵ\\x02\" +\n\t\"в\\x02д\\x02о\\x02с\\x02т\\x02ъ\\x02ѣ\\x02æ\\x01b\\x01d\\x01e\\x02ǝ\\x01g\\x01i\\x01k\" +\n\t\"\\x01m\\x01n\\x02ȣ\\x01p\\x01t\\x01u\\x02ɐ\\x02ɑ\\x02ə\\x02ɛ\\x02ɜ\\x02ŋ\\x02ɔ\\x02ɯ\" +\n\t\"\\x01v\\x02β\\x02γ\\x02δ\\x02φ\\x02χ\\x02ρ\\x02н\\x02ɒ\\x01c\\x02ɕ\\x02ð\\x01f\\x02ɟ\" +\n\t\"\\x02ɡ\\x02ɥ\\x02ɨ\\x02ɩ\\x02ɪ\\x02ʝ\\x02ɭ\\x02ʟ\\x02ɱ\\x02ɰ\\x02ɲ\\x02ɳ\\x02ɴ\\x02ɵ\" +\n\t\"\\x02ɸ\\x02ʂ\\x02ʃ\\x02ƫ\\x02ʉ\\x02ʊ\\x02ʋ\\x02ʌ\\x01z\\x02ʐ\\x02ʑ\\x02ʒ\\x02θ\\x02ss\" +\n\t\"\\x02ά\\x02έ\\x02ή\\x02ί\\x02ό\\x02ύ\\x02ώ\\x05ἀι\\x05ἁι\\x05ἂι\\x05ἃι\\x05ἄι\\x05ἅι\" +\n\t\"\\x05ἆι\\x05ἇι\\x05ἠι\\x05ἡι\\x05ἢι\\x05ἣι\\x05ἤι\\x05ἥι\\x05ἦι\\x05ἧι\\x05ὠι\\x05ὡι\" +\n\t\"\\x05ὢι\\x05ὣι\\x05ὤι\\x05ὥι\\x05ὦι\\x05ὧι\\x05ὰι\\x04αι\\x04άι\\x05ᾶι\\x02ι\\x05 ̈͂\" +\n\t\"\\x05ὴι\\x04ηι\\x04ήι\\x05ῆι\\x05 ̓̀\\x05 ̓́\\x05 ̓͂\\x02ΐ\\x05 ̔̀\\x05 ̔́\\x05 ̔͂\" +\n\t\"\\x02ΰ\\x05 ̈̀\\x01`\\x05ὼι\\x04ωι\\x04ώι\\x05ῶι\\x06′′\\x09′′′\\x06‵‵\\x09‵‵‵\\x02!\" +\n\t\"!\\x02??\\x02?!\\x02!?\\x0c′′′′\\x010\\x014\\x015\\x016\\x017\\x018\\x019\\x01+\\x01=\" +\n\t\"\\x01(\\x01)\\x02rs\\x02ħ\\x02no\\x01q\\x02sm\\x02tm\\x02ω\\x02å\\x02א\\x02ב\\x02ג\" +\n\t\"\\x02ד\\x02π\\x051⁄7\\x051⁄9\\x061⁄10\\x051⁄3\\x052⁄3\\x051⁄5\\x052⁄5\\x053⁄5\\x054\" +\n\t\"⁄5\\x051⁄6\\x055⁄6\\x051⁄8\\x053⁄8\\x055⁄8\\x057⁄8\\x041⁄\\x02ii\\x02iv\\x02vi\" +\n\t\"\\x04viii\\x02ix\\x02xi\\x050⁄3\\x06∫∫\\x09∫∫∫\\x06∮∮\\x09∮∮∮\\x0210\\x0211\\x0212\" +\n\t\"\\x0213\\x0214\\x0215\\x0216\\x0217\\x0218\\x0219\\x0220\\x04(10)\\x04(11)\\x04(12)\" +\n\t\"\\x04(13)\\x04(14)\\x04(15)\\x04(16)\\x04(17)\\x04(18)\\x04(19)\\x04(20)\\x0c∫∫∫∫\" +\n\t\"\\x02==\\x05⫝̸\\x02ɫ\\x02ɽ\\x02ȿ\\x02ɀ\\x01.\\x04 ゙\\x04 ゚\\x06より\\x06コト\\x05(ᄀ)\\x05\" +\n\t\"(ᄂ)\\x05(ᄃ)\\x05(ᄅ)\\x05(ᄆ)\\x05(ᄇ)\\x05(ᄉ)\\x05(ᄋ)\\x05(ᄌ)\\x05(ᄎ)\\x05(ᄏ)\\x05(ᄐ\" +\n\t\")\\x05(ᄑ)\\x05(ᄒ)\\x05(가)\\x05(나)\\x05(다)\\x05(라)\\x05(마)\\x05(바)\\x05(사)\\x05(아)\" +\n\t\"\\x05(자)\\x05(차)\\x05(카)\\x05(타)\\x05(파)\\x05(하)\\x05(주)\\x08(오전)\\x08(오후)\\x05(一)\" +\n\t\"\\x05(二)\\x05(三)\\x05(四)\\x05(五)\\x05(六)\\x05(七)\\x05(八)\\x05(九)\\x05(十)\\x05(月)\" +\n\t\"\\x05(火)\\x05(水)\\x05(木)\\x05(金)\\x05(土)\\x05(日)\\x05(株)\\x05(有)\\x05(社)\\x05(名)\" +\n\t\"\\x05(特)\\x05(財)\\x05(祝)\\x05(労)\\x05(代)\\x05(呼)\\x05(学)\\x05(監)\\x05(企)\\x05(資)\" +\n\t\"\\x05(協)\\x05(祭)\\x05(休)\\x05(自)\\x05(至)\\x0221\\x0222\\x0223\\x0224\\x0225\\x0226\" +\n\t\"\\x0227\\x0228\\x0229\\x0230\\x0231\\x0232\\x0233\\x0234\\x0235\\x06참고\\x06주의\\x0236\" +\n\t\"\\x0237\\x0238\\x0239\\x0240\\x0241\\x0242\\x0243\\x0244\\x0245\\x0246\\x0247\\x0248\" +\n\t\"\\x0249\\x0250\\x041月\\x042月\\x043月\\x044月\\x045月\\x046月\\x047月\\x048月\\x049月\\x0510\" +\n\t\"月\\x0511月\\x0512月\\x02hg\\x02ev\\x0cアパート\\x0cアルファ\\x0cアンペア\\x09アール\\x0cイニング\\x09\" +\n\t\"インチ\\x09ウォン\\x0fエスクード\\x0cエーカー\\x09オンス\\x09オーム\\x09カイリ\\x0cカラット\\x0cカロリー\\x09ガロ\" +\n\t\"ン\\x09ガンマ\\x06ギガ\\x09ギニー\\x0cキュリー\\x0cギルダー\\x06キロ\\x0fキログラム\\x12キロメートル\\x0fキロワッ\" +\n\t\"ト\\x09グラム\\x0fグラムトン\\x0fクルゼイロ\\x0cクローネ\\x09ケース\\x09コルナ\\x09コーポ\\x0cサイクル\\x0fサンチ\" +\n\t\"ーム\\x0cシリング\\x09センチ\\x09セント\\x09ダース\\x06デシ\\x06ドル\\x06トン\\x06ナノ\\x09ノット\\x09ハイツ\" +\n\t\"\\x0fパーセント\\x09パーツ\\x0cバーレル\\x0fピアストル\\x09ピクル\\x06ピコ\\x06ビル\\x0fファラッド\\x0cフィート\" +\n\t\"\\x0fブッシェル\\x09フラン\\x0fヘクタール\\x06ペソ\\x09ペニヒ\\x09ヘルツ\\x09ペンス\\x09ページ\\x09ベータ\\x0cポイ\" +\n\t\"ント\\x09ボルト\\x06ホン\\x09ポンド\\x09ホール\\x09ホーン\\x0cマイクロ\\x09マイル\\x09マッハ\\x09マルク\\x0fマ\" +\n\t\"ンション\\x0cミクロン\\x06ミリ\\x0fミリバール\\x06メガ\\x0cメガトン\\x0cメートル\\x09ヤード\\x09ヤール\\x09ユアン\" +\n\t\"\\x0cリットル\\x06リラ\\x09ルピー\\x0cルーブル\\x06レム\\x0fレントゲン\\x09ワット\\x040点\\x041点\\x042点\" +\n\t\"\\x043点\\x044点\\x045点\\x046点\\x047点\\x048点\\x049点\\x0510点\\x0511点\\x0512点\\x0513点\" +\n\t\"\\x0514点\\x0515点\\x0516点\\x0517点\\x0518点\\x0519点\\x0520点\\x0521点\\x0522点\\x0523点\" +\n\t\"\\x0524点\\x02da\\x02au\\x02ov\\x02pc\\x02dm\\x02iu\\x06平成\\x06昭和\\x06大正\\x06明治\\x0c株\" +\n\t\"式会社\\x02pa\\x02na\\x02ma\\x02ka\\x02kb\\x02mb\\x02gb\\x04kcal\\x02pf\\x02nf\\x02m\" +\n\t\"g\\x02kg\\x02hz\\x02ml\\x02dl\\x02kl\\x02fm\\x02nm\\x02mm\\x02cm\\x02km\\x02m2\\x02m\" +\n\t\"3\\x05m∕s\\x06m∕s2\\x07rad∕s\\x08rad∕s2\\x02ps\\x02ns\\x02ms\\x02pv\\x02nv\\x02mv\" +\n\t\"\\x02kv\\x02pw\\x02nw\\x02mw\\x02kw\\x02bq\\x02cc\\x02cd\\x06c∕kg\\x02db\\x02gy\\x02\" +\n\t\"ha\\x02hp\\x02in\\x02kk\\x02kt\\x02lm\\x02ln\\x02lx\\x02ph\\x02pr\\x02sr\\x02sv\\x02\" +\n\t\"wb\\x05v∕m\\x05a∕m\\x041日\\x042日\\x043日\\x044日\\x045日\\x046日\\x047日\\x048日\\x049日\" +\n\t\"\\x0510日\\x0511日\\x0512日\\x0513日\\x0514日\\x0515日\\x0516日\\x0517日\\x0518日\\x0519日\" +\n\t\"\\x0520日\\x0521日\\x0522日\\x0523日\\x0524日\\x0525日\\x0526日\\x0527日\\x0528日\\x0529日\" +\n\t\"\\x0530日\\x0531日\\x02ь\\x02ɦ\\x02ɬ\\x02ʞ\\x02ʇ\\x02œ\\x04𤋮\\x04𢡊\\x04𢡄\\x04𣏕\\x04𥉉\" +\n\t\"\\x04𥳐\\x04𧻓\\x02ff\\x02fi\\x02fl\\x02st\\x04մն\\x04մե\\x04մի\\x04վն\\x04մխ\\x04יִ\" +\n\t\"\\x04ײַ\\x02ע\\x02ה\\x02כ\\x02ל\\x02ם\\x02ר\\x02ת\\x04שׁ\\x04שׂ\\x06שּׁ\\x06שּׂ\\x04א\" +\n\t\"ַ\\x04אָ\\x04אּ\\x04בּ\\x04גּ\\x04דּ\\x04הּ\\x04וּ\\x04זּ\\x04טּ\\x04יּ\\x04ךּ\\x04\" +\n\t\"כּ\\x04לּ\\x04מּ\\x04נּ\\x04סּ\\x04ףּ\\x04פּ\\x04צּ\\x04קּ\\x04רּ\\x04שּ\\x04תּ\" +\n\t\"\\x04וֹ\\x04בֿ\\x04כֿ\\x04פֿ\\x04אל\\x02ٱ\\x02ٻ\\x02پ\\x02ڀ\\x02ٺ\\x02ٿ\\x02ٹ\\x02ڤ\" +\n\t\"\\x02ڦ\\x02ڄ\\x02ڃ\\x02چ\\x02ڇ\\x02ڍ\\x02ڌ\\x02ڎ\\x02ڈ\\x02ژ\\x02ڑ\\x02ک\\x02گ\\x02ڳ\" +\n\t\"\\x02ڱ\\x02ں\\x02ڻ\\x02ۀ\\x02ہ\\x02ھ\\x02ے\\x02ۓ\\x02ڭ\\x02ۇ\\x02ۆ\\x02ۈ\\x02ۋ\\x02ۅ\" +\n\t\"\\x02ۉ\\x02ې\\x02ى\\x04ئا\\x04ئە\\x04ئو\\x04ئۇ\\x04ئۆ\\x04ئۈ\\x04ئې\\x04ئى\\x02ی\\x04\" +\n\t\"ئج\\x04ئح\\x04ئم\\x04ئي\\x04بج\\x04بح\\x04بخ\\x04بم\\x04بى\\x04بي\\x04تج\\x04تح\" +\n\t\"\\x04تخ\\x04تم\\x04تى\\x04تي\\x04ثج\\x04ثم\\x04ثى\\x04ثي\\x04جح\\x04جم\\x04حج\\x04حم\" +\n\t\"\\x04خج\\x04خح\\x04خم\\x04سج\\x04سح\\x04سخ\\x04سم\\x04صح\\x04صم\\x04ضج\\x04ضح\\x04ضخ\" +\n\t\"\\x04ضم\\x04طح\\x04طم\\x04ظم\\x04عج\\x04عم\\x04غج\\x04غم\\x04فج\\x04فح\\x04فخ\\x04فم\" +\n\t\"\\x04فى\\x04في\\x04قح\\x04قم\\x04قى\\x04قي\\x04كا\\x04كج\\x04كح\\x04كخ\\x04كل\\x04كم\" +\n\t\"\\x04كى\\x04كي\\x04لج\\x04لح\\x04لخ\\x04لم\\x04لى\\x04لي\\x04مج\\x04مح\\x04مخ\\x04مم\" +\n\t\"\\x04مى\\x04مي\\x04نج\\x04نح\\x04نخ\\x04نم\\x04نى\\x04ني\\x04هج\\x04هم\\x04هى\\x04هي\" +\n\t\"\\x04يج\\x04يح\\x04يخ\\x04يم\\x04يى\\x04يي\\x04ذٰ\\x04رٰ\\x04ىٰ\\x05 ٌّ\\x05 ٍّ\\x05\" +\n\t\" َّ\\x05 ُّ\\x05 ِّ\\x05 ّٰ\\x04ئر\\x04ئز\\x04ئن\\x04بر\\x04بز\\x04بن\\x04تر\\x04تز\" +\n\t\"\\x04تن\\x04ثر\\x04ثز\\x04ثن\\x04ما\\x04نر\\x04نز\\x04نن\\x04ير\\x04يز\\x04ين\\x04ئخ\" +\n\t\"\\x04ئه\\x04به\\x04ته\\x04صخ\\x04له\\x04نه\\x04هٰ\\x04يه\\x04ثه\\x04سه\\x04شم\\x04شه\" +\n\t\"\\x06ـَّ\\x06ـُّ\\x06ـِّ\\x04طى\\x04طي\\x04عى\\x04عي\\x04غى\\x04غي\\x04سى\\x04سي\" +\n\t\"\\x04شى\\x04شي\\x04حى\\x04حي\\x04جى\\x04جي\\x04خى\\x04خي\\x04صى\\x04صي\\x04ضى\\x04ضي\" +\n\t\"\\x04شج\\x04شح\\x04شخ\\x04شر\\x04سر\\x04صر\\x04ضر\\x04اً\\x06تجم\\x06تحج\\x06تحم\" +\n\t\"\\x06تخم\\x06تمج\\x06تمح\\x06تمخ\\x06جمح\\x06حمي\\x06حمى\\x06سحج\\x06سجح\\x06سجى\" +\n\t\"\\x06سمح\\x06سمج\\x06سمم\\x06صحح\\x06صمم\\x06شحم\\x06شجي\\x06شمخ\\x06شمم\\x06ضحى\" +\n\t\"\\x06ضخم\\x06طمح\\x06طمم\\x06طمي\\x06عجم\\x06عمم\\x06عمى\\x06غمم\\x06غمي\\x06غمى\" +\n\t\"\\x06فخم\\x06قمح\\x06قمم\\x06لحم\\x06لحي\\x06لحى\\x06لجج\\x06لخم\\x06لمح\\x06محج\" +\n\t\"\\x06محم\\x06محي\\x06مجح\\x06مجم\\x06مخج\\x06مخم\\x06مجخ\\x06همج\\x06همم\\x06نحم\" +\n\t\"\\x06نحى\\x06نجم\\x06نجى\\x06نمي\\x06نمى\\x06يمم\\x06بخي\\x06تجي\\x06تجى\\x06تخي\" +\n\t\"\\x06تخى\\x06تمي\\x06تمى\\x06جمي\\x06جحى\\x06جمى\\x06سخى\\x06صحي\\x06شحي\\x06ضحي\" +\n\t\"\\x06لجي\\x06لمي\\x06يحي\\x06يجي\\x06يمي\\x06ممي\\x06قمي\\x06نحي\\x06عمي\\x06كمي\" +\n\t\"\\x06نجح\\x06مخي\\x06لجم\\x06كمم\\x06جحي\\x06حجي\\x06مجي\\x06فمي\\x06بحي\\x06سخي\" +\n\t\"\\x06نجي\\x06صلے\\x06قلے\\x08الله\\x08اكبر\\x08محمد\\x08صلعم\\x08رسول\\x08عليه\" +\n\t\"\\x08وسلم\\x06صلى!صلى الله عليه وسلم\\x0fجل جلاله\\x08ریال\\x01,\\x01:\\x01!\" +\n\t\"\\x01?\\x01_\\x01{\\x01}\\x01[\\x01]\\x01#\\x01&\\x01*\\x01-\\x01<\\x01>\\x01\\\\\\x01$\" +\n\t\"\\x01%\\x01@\\x04ـً\\x04ـَ\\x04ـُ\\x04ـِ\\x04ـّ\\x04ـْ\\x02ء\\x02آ\\x02أ\\x02ؤ\\x02إ\" +\n\t\"\\x02ئ\\x02ا\\x02ب\\x02ة\\x02ت\\x02ث\\x02ج\\x02ح\\x02خ\\x02د\\x02ذ\\x02ر\\x02ز\\x02س\" +\n\t\"\\x02ش\\x02ص\\x02ض\\x02ط\\x02ظ\\x02ع\\x02غ\\x02ف\\x02ق\\x02ك\\x02ل\\x02م\\x02ن\\x02ه\" +\n\t\"\\x02و\\x02ي\\x04لآ\\x04لأ\\x04لإ\\x04لا\\x01\\x22\\x01'\\x01/\\x01^\\x01|\\x01~\\x02¢\" +\n\t\"\\x02£\\x02¬\\x02¦\\x02¥\\x08𝅗𝅥\\x08𝅘𝅥\\x0c𝅘𝅥𝅮\\x0c𝅘𝅥𝅯\\x0c𝅘𝅥𝅰\\x0c𝅘𝅥𝅱\\x0c𝅘𝅥𝅲\\x08𝆹\" +\n\t\"𝅥\\x08𝆺𝅥\\x0c𝆹𝅥𝅮\\x0c𝆺𝅥𝅮\\x0c𝆹𝅥𝅯\\x0c𝆺𝅥𝅯\\x02ı\\x02ȷ\\x02α\\x02ε\\x02ζ\\x02η\\x02\" +\n\t\"κ\\x02λ\\x02μ\\x02ν\\x02ξ\\x02ο\\x02σ\\x02τ\\x02υ\\x02ψ\\x03∇\\x03∂\\x02ϝ\\x02ٮ\\x02ڡ\" +\n\t\"\\x02ٯ\\x020,\\x021,\\x022,\\x023,\\x024,\\x025,\\x026,\\x027,\\x028,\\x029,\\x03(a)\" +\n\t\"\\x03(b)\\x03(c)\\x03(d)\\x03(e)\\x03(f)\\x03(g)\\x03(h)\\x03(i)\\x03(j)\\x03(k)\" +\n\t\"\\x03(l)\\x03(m)\\x03(n)\\x03(o)\\x03(p)\\x03(q)\\x03(r)\\x03(s)\\x03(t)\\x03(u)\" +\n\t\"\\x03(v)\\x03(w)\\x03(x)\\x03(y)\\x03(z)\\x07〔s〕\\x02wz\\x02hv\\x02sd\\x03ppv\\x02w\" +\n\t\"c\\x02mc\\x02md\\x02dj\\x06ほか\\x06ココ\\x03サ\\x03手\\x03字\\x03双\\x03デ\\x03二\\x03多\\x03解\" +\n\t\"\\x03天\\x03交\\x03映\\x03無\\x03料\\x03前\\x03後\\x03再\\x03新\\x03初\\x03終\\x03生\\x03販\\x03声\" +\n\t\"\\x03吹\\x03演\\x03投\\x03捕\\x03一\\x03三\\x03遊\\x03左\\x03中\\x03右\\x03指\\x03走\\x03打\\x03禁\" +\n\t\"\\x03空\\x03合\\x03満\\x03有\\x03月\\x03申\\x03割\\x03営\\x03配\\x09〔本〕\\x09〔三〕\\x09〔二〕\\x09〔安\" +\n\t\"〕\\x09〔点〕\\x09〔打〕\\x09〔盗〕\\x09〔勝〕\\x09〔敗〕\\x03得\\x03可\\x03丽\\x03丸\\x03乁\\x03你\\x03\" +\n\t\"侮\\x03侻\\x03倂\\x03偺\\x03備\\x03僧\\x03像\\x03㒞\\x03免\\x03兔\\x03兤\\x03具\\x03㒹\\x03內\\x03\" +\n\t\"冗\\x03冤\\x03仌\\x03冬\\x03况\\x03凵\\x03刃\\x03㓟\\x03刻\\x03剆\\x03剷\\x03㔕\\x03勇\\x03勉\\x03\" +\n\t\"勤\\x03勺\\x03包\\x03匆\\x03北\\x03卉\\x03卑\\x03博\\x03即\\x03卽\\x03卿\\x03灰\\x03及\\x03叟\\x03\" +\n\t\"叫\\x03叱\\x03吆\\x03咞\\x03吸\\x03呈\\x03周\\x03咢\\x03哶\\x03唐\\x03啓\\x03啣\\x03善\\x03喙\\x03\" +\n\t\"喫\\x03喳\\x03嗂\\x03圖\\x03嘆\\x03圗\\x03噑\\x03噴\\x03切\\x03壮\\x03城\\x03埴\\x03堍\\x03型\\x03\" +\n\t\"堲\\x03報\\x03墬\\x03売\\x03壷\\x03夆\\x03夢\\x03奢\\x03姬\\x03娛\\x03娧\\x03姘\\x03婦\\x03㛮\\x03\" +\n\t\"嬈\\x03嬾\\x03寃\\x03寘\\x03寧\\x03寳\\x03寿\\x03将\\x03尢\\x03㞁\\x03屠\\x03屮\\x03峀\\x03岍\\x03\" +\n\t\"嵃\\x03嵮\\x03嵫\\x03嵼\\x03巡\\x03巢\\x03㠯\\x03巽\\x03帨\\x03帽\\x03幩\\x03㡢\\x03㡼\\x03庰\\x03\" +\n\t\"庳\\x03庶\\x03廊\\x03廾\\x03舁\\x03弢\\x03㣇\\x03形\\x03彫\\x03㣣\\x03徚\\x03忍\\x03志\\x03忹\\x03\" +\n\t\"悁\\x03㤺\\x03㤜\\x03悔\\x03惇\\x03慈\\x03慌\\x03慎\\x03慺\\x03憎\\x03憲\\x03憤\\x03憯\\x03懞\\x03\" +\n\t\"懲\\x03懶\\x03成\\x03戛\\x03扝\\x03抱\\x03拔\\x03捐\\x03挽\\x03拼\\x03捨\\x03掃\\x03揤\\x03搢\\x03\" +\n\t\"揅\\x03掩\\x03㨮\\x03摩\\x03摾\\x03撝\\x03摷\\x03㩬\\x03敏\\x03敬\\x03旣\\x03書\\x03晉\\x03㬙\\x03\" +\n\t\"暑\\x03㬈\\x03㫤\\x03冒\\x03冕\\x03最\\x03暜\\x03肭\\x03䏙\\x03朗\\x03望\\x03朡\\x03杞\\x03杓\\x03\" +\n\t\"㭉\\x03柺\\x03枅\\x03桒\\x03梅\\x03梎\\x03栟\\x03椔\\x03㮝\\x03楂\\x03榣\\x03槪\\x03檨\\x03櫛\\x03\" +\n\t\"㰘\\x03次\\x03歔\\x03㱎\\x03歲\\x03殟\\x03殺\\x03殻\\x03汎\\x03沿\\x03泍\\x03汧\\x03洖\\x03派\\x03\" +\n\t\"海\\x03流\\x03浩\\x03浸\\x03涅\\x03洴\\x03港\\x03湮\\x03㴳\\x03滋\\x03滇\\x03淹\\x03潮\\x03濆\\x03\" +\n\t\"瀹\\x03瀞\\x03瀛\\x03㶖\\x03灊\\x03災\\x03灷\\x03炭\\x03煅\\x03熜\\x03爨\\x03爵\\x03牐\\x03犀\\x03\" +\n\t\"犕\\x03獺\\x03王\\x03㺬\\x03玥\\x03㺸\\x03瑇\\x03瑜\\x03瑱\\x03璅\\x03瓊\\x03㼛\\x03甤\\x03甾\\x03\" +\n\t\"異\\x03瘐\\x03㿼\\x03䀈\\x03直\\x03眞\\x03真\\x03睊\\x03䀹\\x03瞋\\x03䁆\\x03䂖\\x03硎\\x03碌\\x03\" +\n\t\"磌\\x03䃣\\x03祖\\x03福\\x03秫\\x03䄯\\x03穀\\x03穊\\x03穏\\x03䈂\\x03篆\\x03築\\x03䈧\\x03糒\\x03\" +\n\t\"䊠\\x03糨\\x03糣\\x03紀\\x03絣\\x03䌁\\x03緇\\x03縂\\x03繅\\x03䌴\\x03䍙\\x03罺\\x03羕\\x03翺\\x03\" +\n\t\"者\\x03聠\\x03聰\\x03䏕\\x03育\\x03脃\\x03䐋\\x03脾\\x03媵\\x03舄\\x03辞\\x03䑫\\x03芑\\x03芋\\x03\" +\n\t\"芝\\x03劳\\x03花\\x03芳\\x03芽\\x03苦\\x03若\\x03茝\\x03荣\\x03莭\\x03茣\\x03莽\\x03菧\\x03著\\x03\" +\n\t\"荓\\x03菊\\x03菌\\x03菜\\x03䔫\\x03蓱\\x03蓳\\x03蔖\\x03蕤\\x03䕝\\x03䕡\\x03䕫\\x03虐\\x03虜\\x03\" +\n\t\"虧\\x03虩\\x03蚩\\x03蚈\\x03蜎\\x03蛢\\x03蝹\\x03蜨\\x03蝫\\x03螆\\x03蟡\\x03蠁\\x03䗹\\x03衠\\x03\" +\n\t\"衣\\x03裗\\x03裞\\x03䘵\\x03裺\\x03㒻\\x03䚾\\x03䛇\\x03誠\\x03諭\\x03變\\x03豕\\x03貫\\x03賁\\x03\" +\n\t\"贛\\x03起\\x03跋\\x03趼\\x03跰\\x03軔\\x03輸\\x03邔\\x03郱\\x03鄑\\x03鄛\\x03鈸\\x03鋗\\x03鋘\\x03\" +\n\t\"鉼\\x03鏹\\x03鐕\\x03開\\x03䦕\\x03閷\\x03䧦\\x03雃\\x03嶲\\x03霣\\x03䩮\\x03䩶\\x03韠\\x03䪲\\x03\" +\n\t\"頋\\x03頩\\x03飢\\x03䬳\\x03餩\\x03馧\\x03駂\\x03駾\\x03䯎\\x03鬒\\x03鱀\\x03鳽\\x03䳎\\x03䳭\\x03\" +\n\t\"鵧\\x03䳸\\x03麻\\x03䵖\\x03黹\\x03黾\\x03鼅\\x03鼏\\x03鼖\\x03鼻\"\n\nvar xorData string = \"\" + // Size: 4855 bytes\n\t\"\\x02\\x0c\\x09\\x02\\xb0\\xec\\x02\\xad\\xd8\\x02\\xad\\xd9\\x02\\x06\\x07\\x02\\x0f\\x12\" +\n\t\"\\x02\\x0f\\x1f\\x02\\x0f\\x1d\\x02\\x01\\x13\\x02\\x0f\\x16\\x02\\x0f\\x0b\\x02\\x0f3\" +\n\t\"\\x02\\x0f7\\x02\\x0f?\\x02\\x0f/\\x02\\x0f*\\x02\\x0c&\\x02\\x0c*\\x02\\x0c;\\x02\\x0c9\" +\n\t\"\\x02\\x0c%\\x02\\xab\\xed\\x02\\xab\\xe2\\x02\\xab\\xe3\\x02\\xa9\\xe0\\x02\\xa9\\xe1\" +\n\t\"\\x02\\xa9\\xe6\\x02\\xa3\\xcb\\x02\\xa3\\xc8\\x02\\xa3\\xc9\\x02\\x01#\\x02\\x01\\x08\" +\n\t\"\\x02\\x0e>\\x02\\x0e'\\x02\\x0f\\x03\\x02\\x03\\x0d\\x02\\x03\\x09\\x02\\x03\\x17\\x02\" +\n\t\"\\x03\\x0e\\x02\\x02\\x03\\x02\\x011\\x02\\x01\\x00\\x02\\x01\\x10\\x02\\x03<\\x02\\x07\" +\n\t\"\\x0d\\x02\\x02\\x0c\\x02\\x0c0\\x02\\x01\\x03\\x02\\x01\\x01\\x02\\x01 \\x02\\x01\\x22\" +\n\t\"\\x02\\x01)\\x02\\x01\\x0a\\x02\\x01\\x0c\\x02\\x02\\x06\\x02\\x02\\x02\\x02\\x03\\x10\" +\n\t\"\\x03\\x037 \\x03\\x0b+\\x03\\x02\\x01\\x04\\x02\\x01\\x02\\x02\\x019\\x02\\x03\\x1c\\x02\" +\n\t\"\\x02$\\x03\\x80p$\\x02\\x03:\\x02\\x03\\x0a\\x03\\xc1r.\\x03\\xc1r,\\x03\\xc1r\\x02\" +\n\t\"\\x02\\x02:\\x02\\x02>\\x02\\x02,\\x02\\x02\\x10\\x02\\x02\\x00\\x03\\xc1s<\\x03\\xc1s*\" +\n\t\"\\x03\\xc2L$\\x03\\xc2L;\\x02\\x09)\\x02\\x0a\\x19\\x03\\x83\\xab\\xe3\\x03\\x83\\xab\" +\n\t\"\\xf2\\x03 4\\xe0\\x03\\x81\\xab\\xea\\x03\\x81\\xab\\xf3\\x03 4\\xef\\x03\\x96\\xe1\\xcd\" +\n\t\"\\x03\\x84\\xe5\\xc3\\x02\\x0d\\x11\\x03\\x8b\\xec\\xcb\\x03\\x94\\xec\\xcf\\x03\\x9a\\xec\" +\n\t\"\\xc2\\x03\\x8b\\xec\\xdb\\x03\\x94\\xec\\xdf\\x03\\x9a\\xec\\xd2\\x03\\x01\\x0c!\\x03\" +\n\t\"\\x01\\x0c#\\x03ʠ\\x9d\\x03ʣ\\x9c\\x03ʢ\\x9f\\x03ʥ\\x9e\\x03ʤ\\x91\\x03ʧ\\x90\\x03ʦ\\x93\" +\n\t\"\\x03ʩ\\x92\\x03ʨ\\x95\\x03\\xca\\xf3\\xb5\\x03\\xca\\xf0\\xb4\\x03\\xca\\xf1\\xb7\\x03\" +\n\t\"\\xca\\xf6\\xb6\\x03\\xca\\xf7\\x89\\x03\\xca\\xf4\\x88\\x03\\xca\\xf5\\x8b\\x03\\xca\\xfa\" +\n\t\"\\x8a\\x03\\xca\\xfb\\x8d\\x03\\xca\\xf8\\x8c\\x03\\xca\\xf9\\x8f\\x03\\xca\\xfe\\x8e\\x03\" +\n\t\"\\xca\\xff\\x81\\x03\\xca\\xfc\\x80\\x03\\xca\\xfd\\x83\\x03\\xca\\xe2\\x82\\x03\\xca\\xe3\" +\n\t\"\\x85\\x03\\xca\\xe0\\x84\\x03\\xca\\xe1\\x87\\x03\\xca\\xe6\\x86\\x03\\xca\\xe7\\x99\\x03\" +\n\t\"\\xca\\xe4\\x98\\x03\\xca\\xe5\\x9b\\x03\\xca\\xea\\x9a\\x03\\xca\\xeb\\x9d\\x03\\xca\\xe8\" +\n\t\"\\x9c\\x03ؓ\\x89\\x03ߔ\\x8b\\x02\\x010\\x03\\x03\\x04\\x1e\\x03\\x04\\x15\\x12\\x03\\x0b\" +\n\t\"\\x05,\\x03\\x06\\x04\\x00\\x03\\x06\\x04)\\x03\\x06\\x044\\x03\\x06\\x04<\\x03\\x06\\x05\" +\n\t\"\\x1d\\x03\\x06\\x06\\x00\\x03\\x06\\x06\\x0a\\x03\\x06\\x06'\\x03\\x06\\x062\\x03\\x0786\" +\n\t\"\\x03\\x079/\\x03\\x079 \\x03\\x07:\\x0e\\x03\\x07:\\x1b\\x03\\x07:%\\x03\\x07;/\\x03\" +\n\t\"\\x07;%\\x03\\x074\\x11\\x03\\x076\\x09\\x03\\x077*\\x03\\x070\\x01\\x03\\x070\\x0f\\x03\" +\n\t\"\\x070.\\x03\\x071\\x16\\x03\\x071\\x04\\x03\\x0710\\x03\\x072\\x18\\x03\\x072-\\x03\" +\n\t\"\\x073\\x14\\x03\\x073>\\x03\\x07'\\x09\\x03\\x07 \\x00\\x03\\x07\\x1f\\x0b\\x03\\x07\" +\n\t\"\\x18#\\x03\\x07\\x18(\\x03\\x07\\x186\\x03\\x07\\x18\\x03\\x03\\x07\\x19\\x16\\x03\\x07\" +\n\t\"\\x116\\x03\\x07\\x12'\\x03\\x07\\x13\\x10\\x03\\x07\\x0c&\\x03\\x07\\x0c\\x08\\x03\\x07\" +\n\t\"\\x0c\\x13\\x03\\x07\\x0d\\x02\\x03\\x07\\x0d\\x1c\\x03\\x07\\x0b5\\x03\\x07\\x0b\\x0a\" +\n\t\"\\x03\\x07\\x0b\\x01\\x03\\x07\\x0b\\x0f\\x03\\x07\\x05\\x00\\x03\\x07\\x05\\x09\\x03\\x07\" +\n\t\"\\x05\\x0b\\x03\\x07\\x07\\x01\\x03\\x07\\x07\\x08\\x03\\x07\\x00<\\x03\\x07\\x00+\\x03\" +\n\t\"\\x07\\x01)\\x03\\x07\\x01\\x1b\\x03\\x07\\x01\\x08\\x03\\x07\\x03?\\x03\\x0445\\x03\\x04\" +\n\t\"4\\x08\\x03\\x0454\\x03\\x04)/\\x03\\x04)5\\x03\\x04+\\x05\\x03\\x04+\\x14\\x03\\x04+ \" +\n\t\"\\x03\\x04+<\\x03\\x04*&\\x03\\x04*\\x22\\x03\\x04&8\\x03\\x04!\\x01\\x03\\x04!\\x22\" +\n\t\"\\x03\\x04\\x11+\\x03\\x04\\x10.\\x03\\x04\\x104\\x03\\x04\\x13=\\x03\\x04\\x12\\x04\\x03\" +\n\t\"\\x04\\x12\\x0a\\x03\\x04\\x0d\\x1d\\x03\\x04\\x0d\\x07\\x03\\x04\\x0d \\x03\\x05<>\\x03\" +\n\t\"\\x055<\\x03\\x055!\\x03\\x055#\\x03\\x055&\\x03\\x054\\x1d\\x03\\x054\\x02\\x03\\x054\" +\n\t\"\\x07\\x03\\x0571\\x03\\x053\\x1a\\x03\\x053\\x16\\x03\\x05.<\\x03\\x05.\\x07\\x03\\x05)\" +\n\t\":\\x03\\x05)<\\x03\\x05)\\x0c\\x03\\x05)\\x15\\x03\\x05+-\\x03\\x05+5\\x03\\x05$\\x1e\" +\n\t\"\\x03\\x05$\\x14\\x03\\x05'\\x04\\x03\\x05'\\x14\\x03\\x05&\\x02\\x03\\x05\\x226\\x03\" +\n\t\"\\x05\\x22\\x0c\\x03\\x05\\x22\\x1c\\x03\\x05\\x19\\x0a\\x03\\x05\\x1b\\x09\\x03\\x05\\x1b\" +\n\t\"\\x0c\\x03\\x05\\x14\\x07\\x03\\x05\\x16?\\x03\\x05\\x16\\x0c\\x03\\x05\\x0c\\x05\\x03\" +\n\t\"\\x05\\x0e\\x0f\\x03\\x05\\x01\\x0e\\x03\\x05\\x00(\\x03\\x05\\x030\\x03\\x05\\x03\\x06\" +\n\t\"\\x03\\x0a==\\x03\\x0a=1\\x03\\x0a=,\\x03\\x0a=\\x0c\\x03\\x0a??\\x03\\x0a<\\x08\\x03\" +\n\t\"\\x0a9!\\x03\\x0a9)\\x03\\x0a97\\x03\\x0a99\\x03\\x0a6\\x0a\\x03\\x0a6\\x1c\\x03\\x0a6\" +\n\t\"\\x17\\x03\\x0a7'\\x03\\x0a78\\x03\\x0a73\\x03\\x0a'\\x01\\x03\\x0a'&\\x03\\x0a\\x1f\" +\n\t\"\\x0e\\x03\\x0a\\x1f\\x03\\x03\\x0a\\x1f3\\x03\\x0a\\x1b/\\x03\\x0a\\x18\\x19\\x03\\x0a\" +\n\t\"\\x19\\x01\\x03\\x0a\\x16\\x14\\x03\\x0a\\x0e\\x22\\x03\\x0a\\x0f\\x10\\x03\\x0a\\x0f\\x02\" +\n\t\"\\x03\\x0a\\x0f \\x03\\x0a\\x0c\\x04\\x03\\x0a\\x0b>\\x03\\x0a\\x0b+\\x03\\x0a\\x08/\\x03\" +\n\t\"\\x0a\\x046\\x03\\x0a\\x05\\x14\\x03\\x0a\\x00\\x04\\x03\\x0a\\x00\\x10\\x03\\x0a\\x00\" +\n\t\"\\x14\\x03\\x0b<3\\x03\\x0b;*\\x03\\x0b9\\x22\\x03\\x0b9)\\x03\\x0b97\\x03\\x0b+\\x10\" +\n\t\"\\x03\\x0b((\\x03\\x0b&5\\x03\\x0b$\\x1c\\x03\\x0b$\\x12\\x03\\x0b%\\x04\\x03\\x0b#<\" +\n\t\"\\x03\\x0b#0\\x03\\x0b#\\x0d\\x03\\x0b#\\x19\\x03\\x0b!:\\x03\\x0b!\\x1f\\x03\\x0b!\\x00\" +\n\t\"\\x03\\x0b\\x1e5\\x03\\x0b\\x1c\\x1d\\x03\\x0b\\x1d-\\x03\\x0b\\x1d(\\x03\\x0b\\x18.\\x03\" +\n\t\"\\x0b\\x18 \\x03\\x0b\\x18\\x16\\x03\\x0b\\x14\\x13\\x03\\x0b\\x15$\\x03\\x0b\\x15\\x22\" +\n\t\"\\x03\\x0b\\x12\\x1b\\x03\\x0b\\x12\\x10\\x03\\x0b\\x132\\x03\\x0b\\x13=\\x03\\x0b\\x12\" +\n\t\"\\x18\\x03\\x0b\\x0c&\\x03\\x0b\\x061\\x03\\x0b\\x06:\\x03\\x0b\\x05#\\x03\\x0b\\x05<\" +\n\t\"\\x03\\x0b\\x04\\x0b\\x03\\x0b\\x04\\x04\\x03\\x0b\\x04\\x1b\\x03\\x0b\\x042\\x03\\x0b\" +\n\t\"\\x041\\x03\\x0b\\x03\\x03\\x03\\x0b\\x03\\x1d\\x03\\x0b\\x03/\\x03\\x0b\\x03+\\x03\\x0b\" +\n\t\"\\x02\\x1b\\x03\\x0b\\x02\\x00\\x03\\x0b\\x01\\x1e\\x03\\x0b\\x01\\x08\\x03\\x0b\\x015\" +\n\t\"\\x03\\x06\\x0d9\\x03\\x06\\x0d=\\x03\\x06\\x0d?\\x03\\x02\\x001\\x03\\x02\\x003\\x03\" +\n\t\"\\x02\\x02\\x19\\x03\\x02\\x006\\x03\\x02\\x02\\x1b\\x03\\x02\\x004\\x03\\x02\\x00<\\x03\" +\n\t\"\\x02\\x02\\x0a\\x03\\x02\\x02\\x0e\\x03\\x02\\x01\\x1a\\x03\\x02\\x01\\x07\\x03\\x02\\x01\" +\n\t\"\\x05\\x03\\x02\\x01\\x0b\\x03\\x02\\x01%\\x03\\x02\\x01\\x0c\\x03\\x02\\x01\\x04\\x03\" +\n\t\"\\x02\\x01\\x1c\\x03\\x02\\x00.\\x03\\x02\\x002\\x03\\x02\\x00>\\x03\\x02\\x00\\x12\\x03\" +\n\t\"\\x02\\x00\\x16\\x03\\x02\\x011\\x03\\x02\\x013\\x03\\x02\\x02 \\x03\\x02\\x02%\\x03\\x02\" +\n\t\"\\x02$\\x03\\x02\\x028\\x03\\x02\\x02;\\x03\\x02\\x024\\x03\\x02\\x012\\x03\\x02\\x022\" +\n\t\"\\x03\\x02\\x02/\\x03\\x02\\x01,\\x03\\x02\\x01\\x13\\x03\\x02\\x01\\x16\\x03\\x02\\x01\" +\n\t\"\\x11\\x03\\x02\\x01\\x1e\\x03\\x02\\x01\\x15\\x03\\x02\\x01\\x17\\x03\\x02\\x01\\x0f\\x03\" +\n\t\"\\x02\\x01\\x08\\x03\\x02\\x00?\\x03\\x02\\x03\\x07\\x03\\x02\\x03\\x0d\\x03\\x02\\x03\" +\n\t\"\\x13\\x03\\x02\\x03\\x1d\\x03\\x02\\x03\\x1f\\x03\\x02\\x00\\x03\\x03\\x02\\x00\\x0d\\x03\" +\n\t\"\\x02\\x00\\x01\\x03\\x02\\x00\\x1b\\x03\\x02\\x00\\x19\\x03\\x02\\x00\\x18\\x03\\x02\\x00\" +\n\t\"\\x13\\x03\\x02\\x00/\\x03\\x07>\\x12\\x03\\x07<\\x1f\\x03\\x07>\\x1d\\x03\\x06\\x1d\\x0e\" +\n\t\"\\x03\\x07>\\x1c\\x03\\x07>:\\x03\\x07>\\x13\\x03\\x04\\x12+\\x03\\x07?\\x03\\x03\\x07>\" +\n\t\"\\x02\\x03\\x06\\x224\\x03\\x06\\x1a.\\x03\\x07<%\\x03\\x06\\x1c\\x0b\\x03\\x0609\\x03\" +\n\t\"\\x05\\x1f\\x01\\x03\\x04'\\x08\\x03\\x93\\xfd\\xf5\\x03\\x02\\x0d \\x03\\x02\\x0d#\\x03\" +\n\t\"\\x02\\x0d!\\x03\\x02\\x0d&\\x03\\x02\\x0d\\x22\\x03\\x02\\x0d/\\x03\\x02\\x0d,\\x03\\x02\" +\n\t\"\\x0d$\\x03\\x02\\x0d'\\x03\\x02\\x0d%\\x03\\x02\\x0d;\\x03\\x02\\x0d=\\x03\\x02\\x0d?\" +\n\t\"\\x03\\x099.\\x03\\x08\\x0b7\\x03\\x08\\x02\\x14\\x03\\x08\\x14\\x0d\\x03\\x08.:\\x03\" +\n\t\"\\x089'\\x03\\x0f\\x0b\\x18\\x03\\x0f\\x1c1\\x03\\x0f\\x17&\\x03\\x0f9\\x1f\\x03\\x0f0\" +\n\t\"\\x0c\\x03\\x0e\\x0a9\\x03\\x0e\\x056\\x03\\x0e\\x1c#\\x03\\x0f\\x13\\x0e\\x03\\x072\\x00\" +\n\t\"\\x03\\x070\\x0d\\x03\\x072\\x0b\\x03\\x06\\x11\\x18\\x03\\x070\\x10\\x03\\x06\\x0f(\\x03\" +\n\t\"\\x072\\x05\\x03\\x06\\x0f,\\x03\\x073\\x15\\x03\\x06\\x07\\x08\\x03\\x05\\x16\\x02\\x03\" +\n\t\"\\x04\\x0b \\x03\\x05:8\\x03\\x05\\x16%\\x03\\x0a\\x0d\\x1f\\x03\\x06\\x16\\x10\\x03\\x05\" +\n\t\"\\x1d5\\x03\\x05*;\\x03\\x05\\x16\\x1b\\x03\\x04.-\\x03\\x06\\x1a\\x19\\x03\\x04\\x03,\" +\n\t\"\\x03\\x0b87\\x03\\x04/\\x0a\\x03\\x06\\x00,\\x03\\x04-\\x01\\x03\\x04\\x1e-\\x03\\x06/(\" +\n\t\"\\x03\\x0a\\x0b5\\x03\\x06\\x0e7\\x03\\x06\\x07.\\x03\\x0597\\x03\\x0a*%\\x03\\x0760\" +\n\t\"\\x03\\x06\\x0c;\\x03\\x05'\\x00\\x03\\x072.\\x03\\x072\\x08\\x03\\x06=\\x01\\x03\\x06\" +\n\t\"\\x05\\x1b\\x03\\x06\\x06\\x12\\x03\\x06$=\\x03\\x06'\\x0d\\x03\\x04\\x11\\x0f\\x03\\x076\" +\n\t\",\\x03\\x06\\x07;\\x03\\x06.,\\x03\\x86\\xf9\\xea\\x03\\x8f\\xff\\xeb\\x02\\x092\\x02\" +\n\t\"\\x095\\x02\\x094\\x02\\x09;\\x02\\x09>\\x02\\x098\\x02\\x09*\\x02\\x09/\\x02\\x09,\\x02\" +\n\t\"\\x09%\\x02\\x09&\\x02\\x09#\\x02\\x09 \\x02\\x08!\\x02\\x08%\\x02\\x08$\\x02\\x08+\\x02\" +\n\t\"\\x08.\\x02\\x08*\\x02\\x08&\\x02\\x088\\x02\\x08>\\x02\\x084\\x02\\x086\\x02\\x080\\x02\" +\n\t\"\\x08\\x10\\x02\\x08\\x17\\x02\\x08\\x12\\x02\\x08\\x1d\\x02\\x08\\x1f\\x02\\x08\\x13\\x02\" +\n\t\"\\x08\\x15\\x02\\x08\\x14\\x02\\x08\\x0c\\x03\\x8b\\xfd\\xd0\\x03\\x81\\xec\\xc6\\x03\\x87\" +\n\t\"\\xe0\\x8a\\x03-2\\xe3\\x03\\x80\\xef\\xe4\\x03-2\\xea\\x03\\x88\\xe6\\xeb\\x03\\x8e\\xe6\" +\n\t\"\\xe8\\x03\\x84\\xe6\\xe9\\x03\\x97\\xe6\\xee\\x03-2\\xf9\\x03-2\\xf6\\x03\\x8e\\xe3\\xad\" +\n\t\"\\x03\\x80\\xe3\\x92\\x03\\x88\\xe3\\x90\\x03\\x8e\\xe3\\x90\\x03\\x80\\xe3\\x97\\x03\\x88\" +\n\t\"\\xe3\\x95\\x03\\x88\\xfe\\xcb\\x03\\x8e\\xfe\\xca\\x03\\x84\\xfe\\xcd\\x03\\x91\\xef\\xc9\" +\n\t\"\\x03-2\\xc1\\x03-2\\xc0\\x03-2\\xcb\\x03\\x88@\\x09\\x03\\x8e@\\x08\\x03\\x8f\\xe0\\xf5\" +\n\t\"\\x03\\x8e\\xe6\\xf9\\x03\\x8e\\xe0\\xfa\\x03\\x93\\xff\\xf4\\x03\\x84\\xee\\xd3\\x03\\x0b\" +\n\t\"(\\x04\\x023 \\x021;\\x02\\x01*\\x03\\x0b#\\x10\\x03\\x0b 0\\x03\\x0b!\\x10\\x03\\x0b!0\" +\n\t\"\\x03\\x07\\x15\\x08\\x03\\x09?5\\x03\\x07\\x1f\\x08\\x03\\x07\\x17\\x0b\\x03\\x09\\x1f\" +\n\t\"\\x15\\x03\\x0b\\x1c7\\x03\\x0a+#\\x03\\x06\\x1a\\x1b\\x03\\x06\\x1a\\x14\\x03\\x0a\\x01\" +\n\t\"\\x18\\x03\\x06#\\x1b\\x03\\x0a2\\x0c\\x03\\x0a\\x01\\x04\\x03\\x09#;\\x03\\x08='\\x03\" +\n\t\"\\x08\\x1a\\x0a\\x03\\x07</\\x03\\x07:+\\x03\\x07\\x07*\\x03\\x06&\\x1c\\x03\\x09\\x0c\" +\n\t\"\\x16\\x03\\x09\\x10\\x0e\\x03\\x08'\\x0f\\x03\\x08+\\x09\\x03\\x074%\\x03\\x06!3\\x03\" +\n\t\"\\x06\\x03+\\x03\\x0b\\x1e\\x19\\x03\\x0a))\\x03\\x09\\x08\\x19\\x03\\x08,\\x05\\x03\\x07\" +\n\t\"<2\\x03\\x06\\x1c>\\x03\\x0a\\x111\\x03\\x09\\x1b\\x09\\x03\\x073.\\x03\\x07\\x01\\x00\" +\n\t\"\\x03\\x09/,\\x03\\x07#>\\x03\\x07\\x048\\x03\\x0a\\x1f\\x22\\x03\\x098>\\x03\\x09\\x11\" +\n\t\"\\x00\\x03\\x08/\\x17\\x03\\x06'\\x22\\x03\\x0b\\x1a+\\x03\\x0a\\x22\\x19\\x03\\x0a/1\" +\n\t\"\\x03\\x0974\\x03\\x09\\x0f\\x22\\x03\\x08,\\x22\\x03\\x08?\\x14\\x03\\x07$5\\x03\\x07<3\" +\n\t\"\\x03\\x07=*\\x03\\x07\\x13\\x18\\x03\\x068\\x0a\\x03\\x06\\x09\\x16\\x03\\x06\\x13\\x00\" +\n\t\"\\x03\\x08\\x067\\x03\\x08\\x01\\x03\\x03\\x08\\x12\\x1d\\x03\\x07+7\\x03\\x06(;\\x03\" +\n\t\"\\x06\\x1c?\\x03\\x07\\x0e\\x17\\x03\\x0a\\x06\\x1d\\x03\\x0a\\x19\\x07\\x03\\x08\\x14$\" +\n\t\"\\x03\\x07$;\\x03\\x08,$\\x03\\x08\\x06\\x0d\\x03\\x07\\x16\\x0a\\x03\\x06>>\\x03\\x0a\" +\n\t\"\\x06\\x12\\x03\\x0a\\x14)\\x03\\x09\\x0d\\x1f\\x03\\x09\\x12\\x17\\x03\\x09\\x19\\x01\" +\n\t\"\\x03\\x08\\x11 \\x03\\x08\\x1d'\\x03\\x06<\\x1a\\x03\\x0a.\\x00\\x03\\x07'\\x18\\x03\" +\n\t\"\\x0a\\x22\\x08\\x03\\x08\\x0d\\x0a\\x03\\x08\\x13)\\x03\\x07*)\\x03\\x06<,\\x03\\x07\" +\n\t\"\\x0b\\x1a\\x03\\x09.\\x14\\x03\\x09\\x0d\\x1e\\x03\\x07\\x0e#\\x03\\x0b\\x1d'\\x03\\x0a\" +\n\t\"\\x0a8\\x03\\x09%2\\x03\\x08+&\\x03\\x080\\x12\\x03\\x0a)4\\x03\\x08\\x06\\x1f\\x03\\x0b\" +\n\t\"\\x1b\\x1a\\x03\\x0a\\x1b\\x0f\\x03\\x0b\\x1d*\\x03\\x09\\x16$\\x03\\x090\\x11\\x03\\x08\" +\n\t\"\\x11\\x08\\x03\\x0a*(\\x03\\x0a\\x042\\x03\\x089,\\x03\\x074'\\x03\\x07\\x0f\\x05\\x03\" +\n\t\"\\x09\\x0b\\x0a\\x03\\x07\\x1b\\x01\\x03\\x09\\x17:\\x03\\x09.\\x0d\\x03\\x07.\\x11\\x03\" +\n\t\"\\x09+\\x15\\x03\\x080\\x13\\x03\\x0b\\x1f\\x19\\x03\\x0a \\x11\\x03\\x0a\\x220\\x03\\x09\" +\n\t\"\\x07;\\x03\\x08\\x16\\x1c\\x03\\x07,\\x13\\x03\\x07\\x0e/\\x03\\x06\\x221\\x03\\x0a.\" +\n\t\"\\x0a\\x03\\x0a7\\x02\\x03\\x0a\\x032\\x03\\x0a\\x1d.\\x03\\x091\\x06\\x03\\x09\\x19:\" +\n\t\"\\x03\\x08\\x02/\\x03\\x060+\\x03\\x06\\x0f-\\x03\\x06\\x1c\\x1f\\x03\\x06\\x1d\\x07\\x03\" +\n\t\"\\x0a,\\x11\\x03\\x09=\\x0d\\x03\\x09\\x0b;\\x03\\x07\\x1b/\\x03\\x0a\\x1f:\\x03\\x09 \" +\n\t\"\\x1f\\x03\\x09.\\x10\\x03\\x094\\x0b\\x03\\x09\\x1a1\\x03\\x08#\\x1a\\x03\\x084\\x1d\" +\n\t\"\\x03\\x08\\x01\\x1f\\x03\\x08\\x11\\x22\\x03\\x07'8\\x03\\x07\\x1a>\\x03\\x0757\\x03\" +\n\t\"\\x06&9\\x03\\x06+\\x11\\x03\\x0a.\\x0b\\x03\\x0a,>\\x03\\x0a4#\\x03\\x08%\\x17\\x03\" +\n\t\"\\x07\\x05\\x22\\x03\\x07\\x0c\\x0b\\x03\\x0a\\x1d+\\x03\\x0a\\x19\\x16\\x03\\x09+\\x1f\" +\n\t\"\\x03\\x09\\x08\\x0b\\x03\\x08\\x16\\x18\\x03\\x08+\\x12\\x03\\x0b\\x1d\\x0c\\x03\\x0a=\" +\n\t\"\\x10\\x03\\x0a\\x09\\x0d\\x03\\x0a\\x10\\x11\\x03\\x09&0\\x03\\x08(\\x1f\\x03\\x087\\x07\" +\n\t\"\\x03\\x08\\x185\\x03\\x07'6\\x03\\x06.\\x05\\x03\\x06=\\x04\\x03\\x06;;\\x03\\x06\\x06,\" +\n\t\"\\x03\\x0b\\x18>\\x03\\x08\\x00\\x18\\x03\\x06 \\x03\\x03\\x06<\\x00\\x03\\x09%\\x18\\x03\" +\n\t\"\\x0b\\x1c<\\x03\\x0a%!\\x03\\x0a\\x09\\x12\\x03\\x0a\\x16\\x02\\x03\\x090'\\x03\\x09\" +\n\t\"\\x0e=\\x03\\x08 \\x0e\\x03\\x08>\\x03\\x03\\x074>\\x03\\x06&?\\x03\\x06\\x19\\x09\\x03\" +\n\t\"\\x06?(\\x03\\x0a-\\x0e\\x03\\x09:3\\x03\\x098:\\x03\\x09\\x12\\x0b\\x03\\x09\\x1d\\x17\" +\n\t\"\\x03\\x087\\x05\\x03\\x082\\x14\\x03\\x08\\x06%\\x03\\x08\\x13\\x1f\\x03\\x06\\x06\\x0e\" +\n\t\"\\x03\\x0a\\x22<\\x03\\x09/<\\x03\\x06>+\\x03\\x0a'?\\x03\\x0a\\x13\\x0c\\x03\\x09\\x10<\" +\n\t\"\\x03\\x07\\x1b=\\x03\\x0a\\x19\\x13\\x03\\x09\\x22\\x1d\\x03\\x09\\x07\\x0d\\x03\\x08)\" +\n\t\"\\x1c\\x03\\x06=\\x1a\\x03\\x0a/4\\x03\\x0a7\\x11\\x03\\x0a\\x16:\\x03\\x09?3\\x03\\x09:\" +\n\t\"/\\x03\\x09\\x05\\x0a\\x03\\x09\\x14\\x06\\x03\\x087\\x22\\x03\\x080\\x07\\x03\\x08\\x1a\" +\n\t\"\\x1f\\x03\\x07\\x04(\\x03\\x07\\x04\\x09\\x03\\x06 %\\x03\\x06<\\x08\\x03\\x0a+\\x14\" +\n\t\"\\x03\\x09\\x1d\\x16\\x03\\x0a70\\x03\\x08 >\\x03\\x0857\\x03\\x070\\x0a\\x03\\x06=\\x12\" +\n\t\"\\x03\\x06\\x16%\\x03\\x06\\x1d,\\x03\\x099#\\x03\\x09\\x10>\\x03\\x07 \\x1e\\x03\\x08\" +\n\t\"\\x0c<\\x03\\x08\\x0b\\x18\\x03\\x08\\x15+\\x03\\x08,:\\x03\\x08%\\x22\\x03\\x07\\x0a$\" +\n\t\"\\x03\\x0b\\x1c=\\x03\\x07+\\x08\\x03\\x0a/\\x05\\x03\\x0a \\x07\\x03\\x0a\\x12'\\x03\" +\n\t\"\\x09#\\x11\\x03\\x08\\x1b\\x15\\x03\\x0a\\x06\\x01\\x03\\x09\\x1c\\x1b\\x03\\x0922\\x03\" +\n\t\"\\x07\\x14<\\x03\\x07\\x09\\x04\\x03\\x061\\x04\\x03\\x07\\x0e\\x01\\x03\\x0a\\x13\\x18\" +\n\t\"\\x03\\x0a-\\x0c\\x03\\x0a?\\x0d\\x03\\x0a\\x09\\x0a\\x03\\x091&\\x03\\x0a/\\x0b\\x03\" +\n\t\"\\x08$<\\x03\\x083\\x1d\\x03\\x08\\x0c$\\x03\\x08\\x0d\\x07\\x03\\x08\\x0d?\\x03\\x08\" +\n\t\"\\x0e\\x14\\x03\\x065\\x0a\\x03\\x08\\x1a#\\x03\\x08\\x16#\\x03\\x0702\\x03\\x07\\x03\" +\n\t\"\\x1a\\x03\\x06(\\x1d\\x03\\x06+\\x1b\\x03\\x06\\x0b\\x05\\x03\\x06\\x0b\\x17\\x03\\x06\" +\n\t\"\\x0c\\x04\\x03\\x06\\x1e\\x19\\x03\\x06+0\\x03\\x062\\x18\\x03\\x0b\\x16\\x1e\\x03\\x0a+\" +\n\t\"\\x16\\x03\\x0a-?\\x03\\x0a#:\\x03\\x0a#\\x10\\x03\\x0a%$\\x03\\x0a>+\\x03\\x0a01\\x03\" +\n\t\"\\x0a1\\x10\\x03\\x0a\\x099\\x03\\x0a\\x0a\\x12\\x03\\x0a\\x19\\x1f\\x03\\x0a\\x19\\x12\" +\n\t\"\\x03\\x09*)\\x03\\x09-\\x16\\x03\\x09.1\\x03\\x09.2\\x03\\x09<\\x0e\\x03\\x09> \\x03\" +\n\t\"\\x093\\x12\\x03\\x09\\x0b\\x01\\x03\\x09\\x1c2\\x03\\x09\\x11\\x1c\\x03\\x09\\x15%\\x03\" +\n\t\"\\x08,&\\x03\\x08!\\x22\\x03\\x089(\\x03\\x08\\x0b\\x1a\\x03\\x08\\x0d2\\x03\\x08\\x0c\" +\n\t\"\\x04\\x03\\x08\\x0c\\x06\\x03\\x08\\x0c\\x1f\\x03\\x08\\x0c\\x0c\\x03\\x08\\x0f\\x1f\\x03\" +\n\t\"\\x08\\x0f\\x1d\\x03\\x08\\x00\\x14\\x03\\x08\\x03\\x14\\x03\\x08\\x06\\x16\\x03\\x08\\x1e\" +\n\t\"#\\x03\\x08\\x11\\x11\\x03\\x08\\x10\\x18\\x03\\x08\\x14(\\x03\\x07)\\x1e\\x03\\x07.1\" +\n\t\"\\x03\\x07 $\\x03\\x07 '\\x03\\x078\\x08\\x03\\x07\\x0d0\\x03\\x07\\x0f7\\x03\\x07\\x05#\" +\n\t\"\\x03\\x07\\x05\\x1a\\x03\\x07\\x1a7\\x03\\x07\\x1d-\\x03\\x07\\x17\\x10\\x03\\x06)\\x1f\" +\n\t\"\\x03\\x062\\x0b\\x03\\x066\\x16\\x03\\x06\\x09\\x11\\x03\\x09(\\x1e\\x03\\x07!5\\x03\" +\n\t\"\\x0b\\x11\\x16\\x03\\x0a/\\x04\\x03\\x0a,\\x1a\\x03\\x0b\\x173\\x03\\x0a,1\\x03\\x0a/5\" +\n\t\"\\x03\\x0a\\x221\\x03\\x0a\\x22\\x0d\\x03\\x0a?%\\x03\\x0a<,\\x03\\x0a?#\\x03\\x0a>\\x19\" +\n\t\"\\x03\\x0a\\x08&\\x03\\x0a\\x0b\\x0e\\x03\\x0a\\x0c:\\x03\\x0a\\x0c+\\x03\\x0a\\x03\\x22\" +\n\t\"\\x03\\x0a\\x06)\\x03\\x0a\\x11\\x10\\x03\\x0a\\x11\\x1a\\x03\\x0a\\x17-\\x03\\x0a\\x14(\" +\n\t\"\\x03\\x09)\\x1e\\x03\\x09/\\x09\\x03\\x09.\\x00\\x03\\x09,\\x07\\x03\\x09/*\\x03\\x09-9\" +\n\t\"\\x03\\x09\\x228\\x03\\x09%\\x09\\x03\\x09:\\x12\\x03\\x09;\\x1d\\x03\\x09?\\x06\\x03\" +\n\t\"\\x093%\\x03\\x096\\x05\\x03\\x096\\x08\\x03\\x097\\x02\\x03\\x09\\x07,\\x03\\x09\\x04,\" +\n\t\"\\x03\\x09\\x1f\\x16\\x03\\x09\\x11\\x03\\x03\\x09\\x11\\x12\\x03\\x09\\x168\\x03\\x08*\" +\n\t\"\\x05\\x03\\x08/2\\x03\\x084:\\x03\\x08\\x22+\\x03\\x08 0\\x03\\x08&\\x0a\\x03\\x08;\" +\n\t\"\\x10\\x03\\x08>$\\x03\\x08>\\x18\\x03\\x0829\\x03\\x082:\\x03\\x081,\\x03\\x081<\\x03\" +\n\t\"\\x081\\x1c\\x03\\x087#\\x03\\x087*\\x03\\x08\\x09'\\x03\\x08\\x00\\x1d\\x03\\x08\\x05-\" +\n\t\"\\x03\\x08\\x1f4\\x03\\x08\\x1d\\x04\\x03\\x08\\x16\\x0f\\x03\\x07*7\\x03\\x07'!\\x03\" +\n\t\"\\x07%\\x1b\\x03\\x077\\x0c\\x03\\x07\\x0c1\\x03\\x07\\x0c.\\x03\\x07\\x00\\x06\\x03\\x07\" +\n\t\"\\x01\\x02\\x03\\x07\\x010\\x03\\x07\\x06=\\x03\\x07\\x01\\x03\\x03\\x07\\x01\\x13\\x03\" +\n\t\"\\x07\\x06\\x06\\x03\\x07\\x05\\x0a\\x03\\x07\\x1f\\x09\\x03\\x07\\x17:\\x03\\x06*1\\x03\" +\n\t\"\\x06-\\x1d\\x03\\x06\\x223\\x03\\x062:\\x03\\x060$\\x03\\x066\\x1e\\x03\\x064\\x12\\x03\" +\n\t\"\\x0645\\x03\\x06\\x0b\\x00\\x03\\x06\\x0b7\\x03\\x06\\x07\\x1f\\x03\\x06\\x15\\x12\\x03\" +\n\t\"\\x0c\\x05\\x0f\\x03\\x0b+\\x0b\\x03\\x0b+-\\x03\\x06\\x16\\x1b\\x03\\x06\\x15\\x17\\x03\" +\n\t\"\\x89\\xca\\xea\\x03\\x89\\xca\\xe8\\x03\\x0c8\\x10\\x03\\x0c8\\x01\\x03\\x0c8\\x0f\\x03\" +\n\t\"\\x0d8%\\x03\\x0d8!\\x03\\x0c8-\\x03\\x0c8/\\x03\\x0c8+\\x03\\x0c87\\x03\\x0c85\\x03\" +\n\t\"\\x0c9\\x09\\x03\\x0c9\\x0d\\x03\\x0c9\\x0f\\x03\\x0c9\\x0b\\x03\\xcfu\\x0c\\x03\\xcfu\" +\n\t\"\\x0f\\x03\\xcfu\\x0e\\x03\\xcfu\\x09\\x03\\x0c9\\x10\\x03\\x0d9\\x0c\\x03\\xcf`;\\x03\" +\n\t\"\\xcf`>\\x03\\xcf`9\\x03\\xcf`8\\x03\\xcf`7\\x03\\xcf`*\\x03\\xcf`-\\x03\\xcf`,\\x03\" +\n\t\"\\x0d\\x1b\\x1a\\x03\\x0d\\x1b&\\x03\\x0c=.\\x03\\x0c=%\\x03\\x0c>\\x1e\\x03\\x0c>\\x14\" +\n\t\"\\x03\\x0c?\\x06\\x03\\x0c?\\x0b\\x03\\x0c?\\x0c\\x03\\x0c?\\x0d\\x03\\x0c?\\x02\\x03\" +\n\t\"\\x0c>\\x0f\\x03\\x0c>\\x08\\x03\\x0c>\\x09\\x03\\x0c>,\\x03\\x0c>\\x0c\\x03\\x0c?\\x13\" +\n\t\"\\x03\\x0c?\\x16\\x03\\x0c?\\x15\\x03\\x0c?\\x1c\\x03\\x0c?\\x1f\\x03\\x0c?\\x1d\\x03\" +\n\t\"\\x0c?\\x1a\\x03\\x0c?\\x17\\x03\\x0c?\\x08\\x03\\x0c?\\x09\\x03\\x0c?\\x0e\\x03\\x0c?\" +\n\t\"\\x04\\x03\\x0c?\\x05\\x03\\x0c<?\\x03\\x0c=\\x00\\x03\\x0c=\\x06\\x03\\x0c=\\x05\\x03\" +\n\t\"\\x0c=\\x0c\\x03\\x0c=\\x0f\\x03\\x0c=\\x0d\\x03\\x0c=\\x0b\\x03\\x0c=\\x07\\x03\\x0c=\" +\n\t\"\\x19\\x03\\x0c=\\x15\\x03\\x0c=\\x11\\x03\\x0c=1\\x03\\x0c=3\\x03\\x0c=0\\x03\\x0c=>\" +\n\t\"\\x03\\x0c=2\\x03\\x0c=6\\x03\\x0c<\\x07\\x03\\x0c<\\x05\\x03\\x0e:!\\x03\\x0e:#\\x03\" +\n\t\"\\x0e8\\x09\\x03\\x0e:&\\x03\\x0e8\\x0b\\x03\\x0e:$\\x03\\x0e:,\\x03\\x0e8\\x1a\\x03\" +\n\t\"\\x0e8\\x1e\\x03\\x0e:*\\x03\\x0e:7\\x03\\x0e:5\\x03\\x0e:;\\x03\\x0e:\\x15\\x03\\x0e:<\" +\n\t\"\\x03\\x0e:4\\x03\\x0e:'\\x03\\x0e:-\\x03\\x0e:%\\x03\\x0e:?\\x03\\x0e:=\\x03\\x0e:)\" +\n\t\"\\x03\\x0e:/\\x03\\xcfs'\\x03\\x0d=\\x0f\\x03\\x0d+*\\x03\\x0d99\\x03\\x0d9;\\x03\\x0d9\" +\n\t\"?\\x03\\x0d)\\x0d\\x03\\x0d(%\\x02\\x01\\x18\\x02\\x01(\\x02\\x01\\x1e\\x03\\x0f$!\\x03\" +\n\t\"\\x0f87\\x03\\x0f4\\x0e\\x03\\x0f5\\x1d\\x03\\x06'\\x03\\x03\\x0f\\x08\\x18\\x03\\x0f\" +\n\t\"\\x0d\\x1b\\x03\\x0e2=\\x03\\x0e;\\x08\\x03\\x0e:\\x0b\\x03\\x0e\\x06$\\x03\\x0e\\x0d)\" +\n\t\"\\x03\\x0e\\x16\\x1f\\x03\\x0e\\x16\\x1b\\x03\\x0d$\\x0a\\x03\\x05,\\x1d\\x03\\x0d. \\x03\" +\n\t\"\\x0d.#\\x03\\x0c(/\\x03\\x09%\\x02\\x03\\x0d90\\x03\\x0d\\x0e4\\x03\\x0d\\x0d\\x0f\\x03\" +\n\t\"\\x0c#\\x00\\x03\\x0c,\\x1e\\x03\\x0c2\\x0e\\x03\\x0c\\x01\\x17\\x03\\x0c\\x09:\\x03\\x0e\" +\n\t\"\\x173\\x03\\x0c\\x08\\x03\\x03\\x0c\\x11\\x07\\x03\\x0c\\x10\\x18\\x03\\x0c\\x1f\\x1c\" +\n\t\"\\x03\\x0c\\x19\\x0e\\x03\\x0c\\x1a\\x1f\\x03\\x0f0>\\x03\\x0b->\\x03\\x0b<+\\x03\\x0b8\" +\n\t\"\\x13\\x03\\x0b\\x043\\x03\\x0b\\x14\\x03\\x03\\x0b\\x16%\\x03\\x0d\\x22&\\x03\\x0b\\x1a\" +\n\t\"\\x1a\\x03\\x0b\\x1a\\x04\\x03\\x0a%9\\x03\\x0a&2\\x03\\x0a&0\\x03\\x0a!\\x1a\\x03\\x0a!\" +\n\t\"7\\x03\\x0a5\\x10\\x03\\x0a=4\\x03\\x0a?\\x0e\\x03\\x0a>\\x10\\x03\\x0a\\x00 \\x03\\x0a\" +\n\t\"\\x0f:\\x03\\x0a\\x0f9\\x03\\x0a\\x0b\\x0a\\x03\\x0a\\x17%\\x03\\x0a\\x1b-\\x03\\x09-\" +\n\t\"\\x1a\\x03\\x09,4\\x03\\x09.,\\x03\\x09)\\x09\\x03\\x096!\\x03\\x091\\x1f\\x03\\x093\" +\n\t\"\\x16\\x03\\x0c+\\x1f\\x03\\x098 \\x03\\x098=\\x03\\x0c(\\x1a\\x03\\x0c(\\x16\\x03\\x09\" +\n\t\"\\x0a+\\x03\\x09\\x16\\x12\\x03\\x09\\x13\\x0e\\x03\\x09\\x153\\x03\\x08)!\\x03\\x09\\x1a\" +\n\t\"\\x01\\x03\\x09\\x18\\x01\\x03\\x08%#\\x03\\x08>\\x22\\x03\\x08\\x05%\\x03\\x08\\x02*\" +\n\t\"\\x03\\x08\\x15;\\x03\\x08\\x1b7\\x03\\x0f\\x07\\x1d\\x03\\x0f\\x04\\x03\\x03\\x070\\x0c\" +\n\t\"\\x03\\x07;\\x0b\\x03\\x07\\x08\\x17\\x03\\x07\\x12\\x06\\x03\\x06/-\\x03\\x0671\\x03\" +\n\t\"\\x065+\\x03\\x06>7\\x03\\x06\\x049\\x03\\x05+\\x1e\\x03\\x05,\\x17\\x03\\x05 \\x1d\\x03\" +\n\t\"\\x05\\x22\\x05\\x03\\x050\\x1d\"\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// idnaTrie. Total size: 29404 bytes (28.71 KiB). Checksum: 848c45acb5f7991c.\ntype idnaTrie struct{}\n\nfunc newIdnaTrie(i int) *idnaTrie {\n\treturn &idnaTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *idnaTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 125:\n\t\treturn uint16(idnaValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 125\n\t\treturn uint16(idnaSparse.lookup(n, b))\n\t}\n}\n\n// idnaValues: 127 blocks, 8128 entries, 16256 bytes\n// The third block is the zero block.\nvar idnaValues = [8128]uint16{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080,\n\t0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080,\n\t0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080,\n\t0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080,\n\t0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080,\n\t0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080,\n\t0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080,\n\t0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080,\n\t0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008,\n\t0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080,\n\t0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105,\n\t0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105,\n\t0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105,\n\t0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105,\n\t0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080,\n\t0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008,\n\t0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008,\n\t0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008,\n\t0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008,\n\t0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080,\n\t0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040,\n\t0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040,\n\t0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040,\n\t0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040,\n\t0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040,\n\t0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018,\n\t0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018,\n\t0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a,\n\t0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005,\n\t0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018,\n\t0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018,\n\t// Block 0x4, offset 0x100\n\t0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008,\n\t0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008,\n\t0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008,\n\t0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008,\n\t0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008,\n\t0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008,\n\t0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008,\n\t0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008,\n\t0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008,\n\t0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d,\n\t0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d,\n\t0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008,\n\t0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008,\n\t0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008,\n\t0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008,\n\t0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008,\n\t0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008,\n\t0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008,\n\t0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008,\n\t0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d,\n\t0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008,\n\t0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d,\n\t0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d,\n\t0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d,\n\t0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155,\n\t0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008,\n\t0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d,\n\t0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd,\n\t0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d,\n\t0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008,\n\t0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9,\n\t0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d,\n\t0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d,\n\t0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d,\n\t0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008,\n\t0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008,\n\t0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008,\n\t0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008,\n\t0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008,\n\t0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008,\n\t0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008,\n\t0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008,\n\t0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008,\n\t0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008,\n\t0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008,\n\t0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008,\n\t0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008,\n\t0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008,\n\t0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008,\n\t0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d,\n\t0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018,\n\t0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008,\n\t0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008,\n\t0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018,\n\t0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a,\n\t0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369,\n\t0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018,\n\t0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018,\n\t0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018,\n\t0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018,\n\t0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d,\n\t0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308,\n\t0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308,\n\t0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308,\n\t0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308,\n\t0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308,\n\t0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308,\n\t0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308,\n\t0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008,\n\t0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008,\n\t0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2,\n\t0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040,\n\t0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105,\n\t0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105,\n\t0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105,\n\t0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d,\n\t0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d,\n\t0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008,\n\t0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008,\n\t0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008,\n\t0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008,\n\t0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008,\n\t0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd,\n\t0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008,\n\t0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008,\n\t0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008,\n\t0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008,\n\t0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008,\n\t0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd,\n\t0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008,\n\t0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008,\n\t0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008,\n\t0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008,\n\t0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008,\n\t0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008,\n\t0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008,\n\t0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008,\n\t0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008,\n\t0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008,\n\t0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008,\n\t0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308,\n\t0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008,\n\t0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008,\n\t0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008,\n\t0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008,\n\t0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008,\n\t0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008,\n\t0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008,\n\t0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008,\n\t0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008,\n\t0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d,\n\t0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d,\n\t0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008,\n\t0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008,\n\t0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008,\n\t0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008,\n\t0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008,\n\t0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008,\n\t0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008,\n\t0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008,\n\t0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008,\n\t0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008,\n\t0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008,\n\t0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008,\n\t0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008,\n\t0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008,\n\t0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008,\n\t0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008,\n\t0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5,\n\t0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5,\n\t0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840,\n\t0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818,\n\t0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308,\n\t0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308,\n\t0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040,\n\t0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08,\n\t0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08,\n\t0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08,\n\t0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08,\n\t0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08,\n\t0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08,\n\t0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308,\n\t0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308,\n\t0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308,\n\t0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308,\n\t0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808,\n\t0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808,\n\t0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08,\n\t0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429,\n\t0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08,\n\t0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08,\n\t0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08,\n\t0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08,\n\t0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308,\n\t0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840,\n\t0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308,\n\t0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018,\n\t0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08,\n\t0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008,\n\t0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08,\n\t0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818,\n\t0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818,\n\t0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308,\n\t0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08,\n\t0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08,\n\t0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08,\n\t0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08,\n\t0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08,\n\t0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308,\n\t0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308,\n\t0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08,\n\t0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08,\n\t0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08,\n\t0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0808, 0x557: 0x0808,\n\t0x558: 0x0808, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040,\n\t0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08,\n\t0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08,\n\t0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040,\n\t0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040,\n\t0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040,\n\t0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308,\n\t0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008,\n\t0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308,\n\t0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308,\n\t0x598: 0x04c9, 0x599: 0x0501, 0x59a: 0x0539, 0x59b: 0x0571, 0x59c: 0x05a9, 0x59d: 0x05e1,\n\t0x59e: 0x0619, 0x59f: 0x0651, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308,\n\t0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008,\n\t0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008,\n\t0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008,\n\t0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008,\n\t0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008,\n\t0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008,\n\t0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040,\n\t0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008,\n\t0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008,\n\t0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008,\n\t0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040,\n\t0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008,\n\t0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040,\n\t0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040,\n\t0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040,\n\t0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008,\n\t0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040,\n\t0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008,\n\t0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0689, 0x61d: 0x06c1,\n\t0x61e: 0x0040, 0x61f: 0x06f9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308,\n\t0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008,\n\t0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008,\n\t0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018,\n\t0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018,\n\t0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x3308, 0x63f: 0x0040,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008,\n\t0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040,\n\t0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040,\n\t0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008,\n\t0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008,\n\t0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008,\n\t0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040,\n\t0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008,\n\t0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0731, 0x674: 0x0040, 0x675: 0x0008,\n\t0x676: 0x0769, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040,\n\t0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040,\n\t0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308,\n\t0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308,\n\t0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040,\n\t0x698: 0x0040, 0x699: 0x07a1, 0x69a: 0x07d9, 0x69b: 0x0811, 0x69c: 0x0008, 0x69d: 0x0040,\n\t0x69e: 0x0849, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040,\n\t0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008,\n\t0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008,\n\t0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308,\n\t0x6b6: 0x0018, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040,\n\t0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008,\n\t0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008,\n\t0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008,\n\t0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008,\n\t0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008,\n\t0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008,\n\t0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040,\n\t0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008,\n\t0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008,\n\t0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040,\n\t0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308,\n\t0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008,\n\t0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040,\n\t0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040,\n\t0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040,\n\t0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308,\n\t0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008,\n\t0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008,\n\t0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040,\n\t0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308,\n\t0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008,\n\t0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008,\n\t0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040,\n\t0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008,\n\t0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008,\n\t0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008,\n\t0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040,\n\t0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008,\n\t0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008,\n\t0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040,\n\t0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040,\n\t0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008,\n\t0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040,\n\t0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x0040, 0x796: 0x3308, 0x797: 0x3008,\n\t0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x0881, 0x79d: 0x08b9,\n\t0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308,\n\t0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008,\n\t0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008,\n\t0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018,\n\t0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040,\n\t0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008,\n\t0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040,\n\t0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040,\n\t0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040,\n\t0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040,\n\t0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008,\n\t0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008,\n\t0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008,\n\t0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008,\n\t0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040,\n\t0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040,\n\t0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308,\n\t0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040,\n\t0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040,\n\t0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040,\n\t0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308,\n\t0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008,\n\t0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008,\n\t0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040,\n\t0x836: 0x0040, 0x837: 0x0040, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018,\n\t0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0018, 0x845: 0x0008,\n\t0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008,\n\t0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040,\n\t0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008,\n\t0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008,\n\t0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008,\n\t0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040,\n\t0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008,\n\t0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008,\n\t0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040,\n\t0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040,\n\t0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008,\n\t0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040,\n\t0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040,\n\t0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040,\n\t0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308,\n\t0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008,\n\t0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008,\n\t0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040,\n\t0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040,\n\t0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040,\n\t0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008,\n\t0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040,\n\t0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008,\n\t0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018,\n\t0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308,\n\t0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008,\n\t0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008,\n\t0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018,\n\t0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008,\n\t0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040,\n\t0x906: 0x0040, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0040, 0x90a: 0x0008, 0x90b: 0x0040,\n\t0x90c: 0x0040, 0x90d: 0x0008, 0x90e: 0x0040, 0x90f: 0x0040, 0x910: 0x0040, 0x911: 0x0040,\n\t0x912: 0x0040, 0x913: 0x0040, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008,\n\t0x918: 0x0040, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008,\n\t0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0040, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008,\n\t0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0040, 0x929: 0x0040,\n\t0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0040, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008,\n\t0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x0929, 0x934: 0x3308, 0x935: 0x3308,\n\t0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x0040, 0x93b: 0x3308,\n\t0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x09d1, 0x944: 0x0008, 0x945: 0x0008,\n\t0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008,\n\t0x94c: 0x0008, 0x94d: 0x0a09, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008,\n\t0x952: 0x0a41, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0a79,\n\t0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0ab1, 0x95d: 0x0008,\n\t0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008,\n\t0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0ae9,\n\t0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040,\n\t0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0b21, 0x974: 0x3308, 0x975: 0x0b59,\n\t0x976: 0x0b91, 0x977: 0x0bc9, 0x978: 0x0c19, 0x979: 0x0c51, 0x97a: 0x3308, 0x97b: 0x3308,\n\t0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x3308, 0x981: 0x0ca1, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018,\n\t0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008,\n\t0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308,\n\t0x992: 0x3308, 0x993: 0x0cd9, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308,\n\t0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0d11,\n\t0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0d49, 0x9a3: 0x3308,\n\t0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0d81, 0x9a8: 0x3308, 0x9a9: 0x3308,\n\t0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0db9, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308,\n\t0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308,\n\t0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x0df1, 0x9ba: 0x3308, 0x9bb: 0x3308,\n\t0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008,\n\t0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008,\n\t0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008,\n\t0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008,\n\t0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008,\n\t0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008,\n\t0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008,\n\t0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0039, 0x9ed: 0x0ed1, 0x9ee: 0x0ee9, 0x9ef: 0x0008,\n\t0x9f0: 0x0ef9, 0x9f1: 0x0f09, 0x9f2: 0x0f19, 0x9f3: 0x0f31, 0x9f4: 0x0249, 0x9f5: 0x0f41,\n\t0x9f6: 0x0259, 0x9f7: 0x0f51, 0x9f8: 0x0359, 0x9f9: 0x0f61, 0x9fa: 0x0f71, 0x9fb: 0x0008,\n\t0x9fc: 0x00d9, 0x9fd: 0x0f81, 0x9fe: 0x0f99, 0x9ff: 0x0269,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0fa9, 0xa01: 0x0fb9, 0xa02: 0x0279, 0xa03: 0x0039, 0xa04: 0x0fc9, 0xa05: 0x0fe1,\n\t0xa06: 0x059d, 0xa07: 0x0ee9, 0xa08: 0x0ef9, 0xa09: 0x0f09, 0xa0a: 0x0ff9, 0xa0b: 0x1011,\n\t0xa0c: 0x1029, 0xa0d: 0x0f31, 0xa0e: 0x0008, 0xa0f: 0x0f51, 0xa10: 0x0f61, 0xa11: 0x1041,\n\t0xa12: 0x00d9, 0xa13: 0x1059, 0xa14: 0x05b5, 0xa15: 0x05b5, 0xa16: 0x0f99, 0xa17: 0x0fa9,\n\t0xa18: 0x0fb9, 0xa19: 0x059d, 0xa1a: 0x1071, 0xa1b: 0x1089, 0xa1c: 0x05cd, 0xa1d: 0x1099,\n\t0xa1e: 0x10b1, 0xa1f: 0x10c9, 0xa20: 0x10e1, 0xa21: 0x10f9, 0xa22: 0x0f41, 0xa23: 0x0269,\n\t0xa24: 0x0fb9, 0xa25: 0x1089, 0xa26: 0x1099, 0xa27: 0x10b1, 0xa28: 0x1111, 0xa29: 0x10e1,\n\t0xa2a: 0x10f9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008,\n\t0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008,\n\t0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x1129, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008,\n\t0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008,\n\t0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008,\n\t0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008,\n\t0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008,\n\t0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x1141, 0xa5c: 0x1159, 0xa5d: 0x1169,\n\t0xa5e: 0x1181, 0xa5f: 0x1029, 0xa60: 0x1199, 0xa61: 0x11a9, 0xa62: 0x11c1, 0xa63: 0x11d9,\n\t0xa64: 0x11f1, 0xa65: 0x1209, 0xa66: 0x1221, 0xa67: 0x05e5, 0xa68: 0x1239, 0xa69: 0x1251,\n\t0xa6a: 0xe17d, 0xa6b: 0x1269, 0xa6c: 0x1281, 0xa6d: 0x1299, 0xa6e: 0x12b1, 0xa6f: 0x12c9,\n\t0xa70: 0x12e1, 0xa71: 0x12f9, 0xa72: 0x1311, 0xa73: 0x1329, 0xa74: 0x1341, 0xa75: 0x1359,\n\t0xa76: 0x1371, 0xa77: 0x1389, 0xa78: 0x05fd, 0xa79: 0x13a1, 0xa7a: 0x13b9, 0xa7b: 0x13d1,\n\t0xa7c: 0x13e1, 0xa7d: 0x13f9, 0xa7e: 0x1411, 0xa7f: 0x1429,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008,\n\t0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008,\n\t0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008,\n\t0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008,\n\t0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008,\n\t0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008,\n\t0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008,\n\t0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008,\n\t0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008,\n\t0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008,\n\t0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008,\n\t0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008,\n\t0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008,\n\t0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008,\n\t0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x0615, 0xadb: 0x0635, 0xadc: 0x0008, 0xadd: 0x0008,\n\t0xade: 0x1441, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008,\n\t0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008,\n\t0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008,\n\t0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008,\n\t0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008,\n\t0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008,\n\t0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045,\n\t0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008,\n\t0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008,\n\t0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045,\n\t0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008,\n\t0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045,\n\t0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045,\n\t0xb30: 0x0008, 0xb31: 0x1459, 0xb32: 0x0008, 0xb33: 0x1471, 0xb34: 0x0008, 0xb35: 0x1489,\n\t0xb36: 0x0008, 0xb37: 0x14a1, 0xb38: 0x0008, 0xb39: 0x14b9, 0xb3a: 0x0008, 0xb3b: 0x14d1,\n\t0xb3c: 0x0008, 0xb3d: 0x14e9, 0xb3e: 0x0040, 0xb3f: 0x0040,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x1501, 0xb41: 0x1531, 0xb42: 0x1561, 0xb43: 0x1591, 0xb44: 0x15c1, 0xb45: 0x15f1,\n\t0xb46: 0x1621, 0xb47: 0x1651, 0xb48: 0x1501, 0xb49: 0x1531, 0xb4a: 0x1561, 0xb4b: 0x1591,\n\t0xb4c: 0x15c1, 0xb4d: 0x15f1, 0xb4e: 0x1621, 0xb4f: 0x1651, 0xb50: 0x1681, 0xb51: 0x16b1,\n\t0xb52: 0x16e1, 0xb53: 0x1711, 0xb54: 0x1741, 0xb55: 0x1771, 0xb56: 0x17a1, 0xb57: 0x17d1,\n\t0xb58: 0x1681, 0xb59: 0x16b1, 0xb5a: 0x16e1, 0xb5b: 0x1711, 0xb5c: 0x1741, 0xb5d: 0x1771,\n\t0xb5e: 0x17a1, 0xb5f: 0x17d1, 0xb60: 0x1801, 0xb61: 0x1831, 0xb62: 0x1861, 0xb63: 0x1891,\n\t0xb64: 0x18c1, 0xb65: 0x18f1, 0xb66: 0x1921, 0xb67: 0x1951, 0xb68: 0x1801, 0xb69: 0x1831,\n\t0xb6a: 0x1861, 0xb6b: 0x1891, 0xb6c: 0x18c1, 0xb6d: 0x18f1, 0xb6e: 0x1921, 0xb6f: 0x1951,\n\t0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x1981, 0xb73: 0x19b1, 0xb74: 0x19d9, 0xb75: 0x0040,\n\t0xb76: 0x0008, 0xb77: 0x1a01, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x064d, 0xb7b: 0x1459,\n\t0xb7c: 0x19b1, 0xb7d: 0x0666, 0xb7e: 0x1a31, 0xb7f: 0x0686,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x06a6, 0xb81: 0x1a4a, 0xb82: 0x1a79, 0xb83: 0x1aa9, 0xb84: 0x1ad1, 0xb85: 0x0040,\n\t0xb86: 0x0008, 0xb87: 0x1af9, 0xb88: 0x06c5, 0xb89: 0x1471, 0xb8a: 0x06dd, 0xb8b: 0x1489,\n\t0xb8c: 0x1aa9, 0xb8d: 0x1b2a, 0xb8e: 0x1b5a, 0xb8f: 0x1b8a, 0xb90: 0x0008, 0xb91: 0x0008,\n\t0xb92: 0x0008, 0xb93: 0x1bb9, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008,\n\t0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x06f5, 0xb9b: 0x14a1, 0xb9c: 0x0040, 0xb9d: 0x1bd2,\n\t0xb9e: 0x1c02, 0xb9f: 0x1c32, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x1c61,\n\t0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045,\n\t0xbaa: 0x070d, 0xbab: 0x14d1, 0xbac: 0xe04d, 0xbad: 0x1c7a, 0xbae: 0x03d2, 0xbaf: 0x1caa,\n\t0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x1cb9, 0xbb3: 0x1ce9, 0xbb4: 0x1d11, 0xbb5: 0x0040,\n\t0xbb6: 0x0008, 0xbb7: 0x1d39, 0xbb8: 0x0725, 0xbb9: 0x14b9, 0xbba: 0x0515, 0xbbb: 0x14e9,\n\t0xbbc: 0x1ce9, 0xbbd: 0x073e, 0xbbe: 0x075e, 0xbbf: 0x0040,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a,\n\t0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0,\n\t0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d,\n\t0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x077e,\n\t0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018,\n\t0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018,\n\t0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040,\n\t0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a,\n\t0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x1d69, 0xbf4: 0x1da1, 0xbf5: 0x0018,\n\t0xbf6: 0x1df1, 0xbf7: 0x1e29, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018,\n\t0xbfc: 0x1e7a, 0xbfd: 0x0018, 0xbfe: 0x079e, 0xbff: 0x0018,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018,\n\t0xc06: 0x0018, 0xc07: 0x1e92, 0xc08: 0x1eaa, 0xc09: 0x1ec2, 0xc0a: 0x0018, 0xc0b: 0x0018,\n\t0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018,\n\t0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x1ed9,\n\t0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018,\n\t0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340,\n\t0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040,\n\t0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340,\n\t0xc30: 0x1f41, 0xc31: 0x0f41, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x1f51, 0xc35: 0x1f61,\n\t0xc36: 0x1f71, 0xc37: 0x1f81, 0xc38: 0x1f91, 0xc39: 0x1fa1, 0xc3a: 0x1fb2, 0xc3b: 0x07bd,\n\t0xc3c: 0x1fc2, 0xc3d: 0x1fd2, 0xc3e: 0x1fe2, 0xc3f: 0x0f71,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1f41, 0xc41: 0x00c9, 0xc42: 0x0069, 0xc43: 0x0079, 0xc44: 0x1f51, 0xc45: 0x1f61,\n\t0xc46: 0x1f71, 0xc47: 0x1f81, 0xc48: 0x1f91, 0xc49: 0x1fa1, 0xc4a: 0x1fb2, 0xc4b: 0x07d5,\n\t0xc4c: 0x1fc2, 0xc4d: 0x1fd2, 0xc4e: 0x1fe2, 0xc4f: 0x0040, 0xc50: 0x0039, 0xc51: 0x0f09,\n\t0xc52: 0x00d9, 0xc53: 0x0369, 0xc54: 0x0ff9, 0xc55: 0x0249, 0xc56: 0x0f51, 0xc57: 0x0359,\n\t0xc58: 0x0f61, 0xc59: 0x0f71, 0xc5a: 0x0f99, 0xc5b: 0x01d9, 0xc5c: 0x0fa9, 0xc5d: 0x0040,\n\t0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018,\n\t0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x1ff1, 0xc69: 0x0018,\n\t0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018,\n\t0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018,\n\t0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018,\n\t0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x07ee, 0xc81: 0x080e, 0xc82: 0x1159, 0xc83: 0x082d, 0xc84: 0x0018, 0xc85: 0x084e,\n\t0xc86: 0x086e, 0xc87: 0x1011, 0xc88: 0x0018, 0xc89: 0x088d, 0xc8a: 0x0f31, 0xc8b: 0x0249,\n\t0xc8c: 0x0249, 0xc8d: 0x0249, 0xc8e: 0x0249, 0xc8f: 0x2009, 0xc90: 0x0f41, 0xc91: 0x0f41,\n\t0xc92: 0x0359, 0xc93: 0x0359, 0xc94: 0x0018, 0xc95: 0x0f71, 0xc96: 0x2021, 0xc97: 0x0018,\n\t0xc98: 0x0018, 0xc99: 0x0f99, 0xc9a: 0x2039, 0xc9b: 0x0269, 0xc9c: 0x0269, 0xc9d: 0x0269,\n\t0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x2049, 0xca1: 0x08ad, 0xca2: 0x2061, 0xca3: 0x0018,\n\t0xca4: 0x13d1, 0xca5: 0x0018, 0xca6: 0x2079, 0xca7: 0x0018, 0xca8: 0x13d1, 0xca9: 0x0018,\n\t0xcaa: 0x0f51, 0xcab: 0x2091, 0xcac: 0x0ee9, 0xcad: 0x1159, 0xcae: 0x0018, 0xcaf: 0x0f09,\n\t0xcb0: 0x0f09, 0xcb1: 0x1199, 0xcb2: 0x0040, 0xcb3: 0x0f61, 0xcb4: 0x00d9, 0xcb5: 0x20a9,\n\t0xcb6: 0x20c1, 0xcb7: 0x20d9, 0xcb8: 0x20f1, 0xcb9: 0x0f41, 0xcba: 0x0018, 0xcbb: 0x08cd,\n\t0xcbc: 0x2109, 0xcbd: 0x10b1, 0xcbe: 0x10b1, 0xcbf: 0x2109,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x08ed, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0ef9,\n\t0xcc6: 0x0ef9, 0xcc7: 0x0f09, 0xcc8: 0x0f41, 0xcc9: 0x0259, 0xcca: 0x0018, 0xccb: 0x0018,\n\t0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x2121, 0xcd1: 0x2151,\n\t0xcd2: 0x2181, 0xcd3: 0x21b9, 0xcd4: 0x21e9, 0xcd5: 0x2219, 0xcd6: 0x2249, 0xcd7: 0x2279,\n\t0xcd8: 0x22a9, 0xcd9: 0x22d9, 0xcda: 0x2309, 0xcdb: 0x2339, 0xcdc: 0x2369, 0xcdd: 0x2399,\n\t0xcde: 0x23c9, 0xcdf: 0x23f9, 0xce0: 0x0f41, 0xce1: 0x2421, 0xce2: 0x0905, 0xce3: 0x2439,\n\t0xce4: 0x1089, 0xce5: 0x2451, 0xce6: 0x0925, 0xce7: 0x2469, 0xce8: 0x2491, 0xce9: 0x0369,\n\t0xcea: 0x24a9, 0xceb: 0x0945, 0xcec: 0x0359, 0xced: 0x1159, 0xcee: 0x0ef9, 0xcef: 0x0f61,\n\t0xcf0: 0x0f41, 0xcf1: 0x2421, 0xcf2: 0x0965, 0xcf3: 0x2439, 0xcf4: 0x1089, 0xcf5: 0x2451,\n\t0xcf6: 0x0985, 0xcf7: 0x2469, 0xcf8: 0x2491, 0xcf9: 0x0369, 0xcfa: 0x24a9, 0xcfb: 0x09a5,\n\t0xcfc: 0x0359, 0xcfd: 0x1159, 0xcfe: 0x0ef9, 0xcff: 0x0f61,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018,\n\t0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040,\n\t0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040,\n\t0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040,\n\t0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040,\n\t0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x00c9, 0xd21: 0x0069, 0xd22: 0x0079, 0xd23: 0x1f51,\n\t0xd24: 0x1f61, 0xd25: 0x1f71, 0xd26: 0x1f81, 0xd27: 0x1f91, 0xd28: 0x1fa1, 0xd29: 0x2601,\n\t0xd2a: 0x2619, 0xd2b: 0x2631, 0xd2c: 0x2649, 0xd2d: 0x2661, 0xd2e: 0x2679, 0xd2f: 0x2691,\n\t0xd30: 0x26a9, 0xd31: 0x26c1, 0xd32: 0x26d9, 0xd33: 0x26f1, 0xd34: 0x0a06, 0xd35: 0x0a26,\n\t0xd36: 0x0a46, 0xd37: 0x0a66, 0xd38: 0x0a86, 0xd39: 0x0aa6, 0xd3a: 0x0ac6, 0xd3b: 0x0ae6,\n\t0xd3c: 0x0b06, 0xd3d: 0x270a, 0xd3e: 0x2732, 0xd3f: 0x275a,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x2782, 0xd41: 0x27aa, 0xd42: 0x27d2, 0xd43: 0x27fa, 0xd44: 0x2822, 0xd45: 0x284a,\n\t0xd46: 0x2872, 0xd47: 0x289a, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040,\n\t0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040,\n\t0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040,\n\t0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b26, 0xd5d: 0x0b46,\n\t0xd5e: 0x0b66, 0xd5f: 0x0b86, 0xd60: 0x0ba6, 0xd61: 0x0bc6, 0xd62: 0x0be6, 0xd63: 0x0c06,\n\t0xd64: 0x0c26, 0xd65: 0x0c46, 0xd66: 0x0c66, 0xd67: 0x0c86, 0xd68: 0x0ca6, 0xd69: 0x0cc6,\n\t0xd6a: 0x0ce6, 0xd6b: 0x0d06, 0xd6c: 0x0d26, 0xd6d: 0x0d46, 0xd6e: 0x0d66, 0xd6f: 0x0d86,\n\t0xd70: 0x0da6, 0xd71: 0x0dc6, 0xd72: 0x0de6, 0xd73: 0x0e06, 0xd74: 0x0e26, 0xd75: 0x0e46,\n\t0xd76: 0x0039, 0xd77: 0x0ee9, 0xd78: 0x1159, 0xd79: 0x0ef9, 0xd7a: 0x0f09, 0xd7b: 0x1199,\n\t0xd7c: 0x0f31, 0xd7d: 0x0249, 0xd7e: 0x0f41, 0xd7f: 0x0259,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0f51, 0xd81: 0x0359, 0xd82: 0x0f61, 0xd83: 0x0f71, 0xd84: 0x00d9, 0xd85: 0x0f99,\n\t0xd86: 0x2039, 0xd87: 0x0269, 0xd88: 0x01d9, 0xd89: 0x0fa9, 0xd8a: 0x0fb9, 0xd8b: 0x1089,\n\t0xd8c: 0x0279, 0xd8d: 0x0369, 0xd8e: 0x0289, 0xd8f: 0x13d1, 0xd90: 0x0039, 0xd91: 0x0ee9,\n\t0xd92: 0x1159, 0xd93: 0x0ef9, 0xd94: 0x0f09, 0xd95: 0x1199, 0xd96: 0x0f31, 0xd97: 0x0249,\n\t0xd98: 0x0f41, 0xd99: 0x0259, 0xd9a: 0x0f51, 0xd9b: 0x0359, 0xd9c: 0x0f61, 0xd9d: 0x0f71,\n\t0xd9e: 0x00d9, 0xd9f: 0x0f99, 0xda0: 0x2039, 0xda1: 0x0269, 0xda2: 0x01d9, 0xda3: 0x0fa9,\n\t0xda4: 0x0fb9, 0xda5: 0x1089, 0xda6: 0x0279, 0xda7: 0x0369, 0xda8: 0x0289, 0xda9: 0x13d1,\n\t0xdaa: 0x1f41, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018,\n\t0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018,\n\t0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018,\n\t0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008,\n\t0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008,\n\t0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008,\n\t0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008,\n\t0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008,\n\t0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x2971, 0xde3: 0x0ebd,\n\t0xde4: 0x2989, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d,\n\t0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0fe1, 0xdee: 0x1281, 0xdef: 0x0fc9,\n\t0xdf0: 0x1141, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d,\n\t0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008,\n\t0xdfc: 0x0259, 0xdfd: 0x1089, 0xdfe: 0x29a1, 0xdff: 0x29b9,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008,\n\t0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008,\n\t0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008,\n\t0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008,\n\t0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008,\n\t0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008,\n\t0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018,\n\t0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308,\n\t0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040,\n\t0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018,\n\t0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x26fd, 0xe41: 0x271d, 0xe42: 0x273d, 0xe43: 0x275d, 0xe44: 0x277d, 0xe45: 0x279d,\n\t0xe46: 0x27bd, 0xe47: 0x27dd, 0xe48: 0x27fd, 0xe49: 0x281d, 0xe4a: 0x283d, 0xe4b: 0x285d,\n\t0xe4c: 0x287d, 0xe4d: 0x289d, 0xe4e: 0x28bd, 0xe4f: 0x28dd, 0xe50: 0x28fd, 0xe51: 0x291d,\n\t0xe52: 0x293d, 0xe53: 0x295d, 0xe54: 0x297d, 0xe55: 0x299d, 0xe56: 0x0040, 0xe57: 0x0040,\n\t0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040,\n\t0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040,\n\t0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040,\n\t0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040,\n\t0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040,\n\t0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040,\n\t0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x29d1, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008,\n\t0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018,\n\t0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018,\n\t0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018,\n\t0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018,\n\t0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018,\n\t0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018,\n\t0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018,\n\t0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018,\n\t0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29bd, 0xeb9: 0x29dd, 0xeba: 0x29fd, 0xebb: 0x0018,\n\t0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x2b3d, 0xec1: 0x2b5d, 0xec2: 0x2b7d, 0xec3: 0x2b9d, 0xec4: 0x2bbd, 0xec5: 0x2bdd,\n\t0xec6: 0x2bdd, 0xec7: 0x2bdd, 0xec8: 0x2bfd, 0xec9: 0x2bfd, 0xeca: 0x2bfd, 0xecb: 0x2bfd,\n\t0xecc: 0x2c1d, 0xecd: 0x2c1d, 0xece: 0x2c1d, 0xecf: 0x2c3d, 0xed0: 0x2c5d, 0xed1: 0x2c5d,\n\t0xed2: 0x2a7d, 0xed3: 0x2a7d, 0xed4: 0x2c5d, 0xed5: 0x2c5d, 0xed6: 0x2c7d, 0xed7: 0x2c7d,\n\t0xed8: 0x2c5d, 0xed9: 0x2c5d, 0xeda: 0x2a7d, 0xedb: 0x2a7d, 0xedc: 0x2c5d, 0xedd: 0x2c5d,\n\t0xede: 0x2c3d, 0xedf: 0x2c3d, 0xee0: 0x2c9d, 0xee1: 0x2c9d, 0xee2: 0x2cbd, 0xee3: 0x2cbd,\n\t0xee4: 0x0040, 0xee5: 0x2cdd, 0xee6: 0x2cfd, 0xee7: 0x2d1d, 0xee8: 0x2d1d, 0xee9: 0x2d3d,\n\t0xeea: 0x2d5d, 0xeeb: 0x2d7d, 0xeec: 0x2d9d, 0xeed: 0x2dbd, 0xeee: 0x2ddd, 0xeef: 0x2dfd,\n\t0xef0: 0x2e1d, 0xef1: 0x2e3d, 0xef2: 0x2e3d, 0xef3: 0x2e5d, 0xef4: 0x2e7d, 0xef5: 0x2e7d,\n\t0xef6: 0x2e9d, 0xef7: 0x2ebd, 0xef8: 0x2e5d, 0xef9: 0x2edd, 0xefa: 0x2efd, 0xefb: 0x2edd,\n\t0xefc: 0x2e5d, 0xefd: 0x2f1d, 0xefe: 0x2f3d, 0xeff: 0x2f5d,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x2f7d, 0xf01: 0x2f9d, 0xf02: 0x2cfd, 0xf03: 0x2cdd, 0xf04: 0x2fbd, 0xf05: 0x2fdd,\n\t0xf06: 0x2ffd, 0xf07: 0x301d, 0xf08: 0x303d, 0xf09: 0x305d, 0xf0a: 0x307d, 0xf0b: 0x309d,\n\t0xf0c: 0x30bd, 0xf0d: 0x30dd, 0xf0e: 0x30fd, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018,\n\t0xf12: 0x311d, 0xf13: 0x313d, 0xf14: 0x315d, 0xf15: 0x317d, 0xf16: 0x319d, 0xf17: 0x31bd,\n\t0xf18: 0x31dd, 0xf19: 0x31fd, 0xf1a: 0x321d, 0xf1b: 0x323d, 0xf1c: 0x315d, 0xf1d: 0x325d,\n\t0xf1e: 0x327d, 0xf1f: 0x329d, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008,\n\t0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008,\n\t0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008,\n\t0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008,\n\t0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0040,\n\t0xf3c: 0x0040, 0xf3d: 0x0040, 0xf3e: 0x0040, 0xf3f: 0x0040,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x36a2, 0xf41: 0x36d2, 0xf42: 0x3702, 0xf43: 0x3732, 0xf44: 0x32bd, 0xf45: 0x32dd,\n\t0xf46: 0x32fd, 0xf47: 0x331d, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018,\n\t0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x333d, 0xf51: 0x3761,\n\t0xf52: 0x3779, 0xf53: 0x3791, 0xf54: 0x37a9, 0xf55: 0x37c1, 0xf56: 0x37d9, 0xf57: 0x37f1,\n\t0xf58: 0x3809, 0xf59: 0x3821, 0xf5a: 0x3839, 0xf5b: 0x3851, 0xf5c: 0x3869, 0xf5d: 0x3881,\n\t0xf5e: 0x3899, 0xf5f: 0x38b1, 0xf60: 0x335d, 0xf61: 0x337d, 0xf62: 0x339d, 0xf63: 0x33bd,\n\t0xf64: 0x33dd, 0xf65: 0x33dd, 0xf66: 0x33fd, 0xf67: 0x341d, 0xf68: 0x343d, 0xf69: 0x345d,\n\t0xf6a: 0x347d, 0xf6b: 0x349d, 0xf6c: 0x34bd, 0xf6d: 0x34dd, 0xf6e: 0x34fd, 0xf6f: 0x351d,\n\t0xf70: 0x353d, 0xf71: 0x355d, 0xf72: 0x357d, 0xf73: 0x359d, 0xf74: 0x35bd, 0xf75: 0x35dd,\n\t0xf76: 0x35fd, 0xf77: 0x361d, 0xf78: 0x363d, 0xf79: 0x365d, 0xf7a: 0x367d, 0xf7b: 0x369d,\n\t0xf7c: 0x38c9, 0xf7d: 0x3901, 0xf7e: 0x36bd, 0xf7f: 0x0018,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x36dd, 0xf81: 0x36fd, 0xf82: 0x371d, 0xf83: 0x373d, 0xf84: 0x375d, 0xf85: 0x377d,\n\t0xf86: 0x379d, 0xf87: 0x37bd, 0xf88: 0x37dd, 0xf89: 0x37fd, 0xf8a: 0x381d, 0xf8b: 0x383d,\n\t0xf8c: 0x385d, 0xf8d: 0x387d, 0xf8e: 0x389d, 0xf8f: 0x38bd, 0xf90: 0x38dd, 0xf91: 0x38fd,\n\t0xf92: 0x391d, 0xf93: 0x393d, 0xf94: 0x395d, 0xf95: 0x397d, 0xf96: 0x399d, 0xf97: 0x39bd,\n\t0xf98: 0x39dd, 0xf99: 0x39fd, 0xf9a: 0x3a1d, 0xf9b: 0x3a3d, 0xf9c: 0x3a5d, 0xf9d: 0x3a7d,\n\t0xf9e: 0x3a9d, 0xf9f: 0x3abd, 0xfa0: 0x3add, 0xfa1: 0x3afd, 0xfa2: 0x3b1d, 0xfa3: 0x3b3d,\n\t0xfa4: 0x3b5d, 0xfa5: 0x3b7d, 0xfa6: 0x127d, 0xfa7: 0x3b9d, 0xfa8: 0x3bbd, 0xfa9: 0x3bdd,\n\t0xfaa: 0x3bfd, 0xfab: 0x3c1d, 0xfac: 0x3c3d, 0xfad: 0x3c5d, 0xfae: 0x239d, 0xfaf: 0x3c7d,\n\t0xfb0: 0x3c9d, 0xfb1: 0x3939, 0xfb2: 0x3951, 0xfb3: 0x3969, 0xfb4: 0x3981, 0xfb5: 0x3999,\n\t0xfb6: 0x39b1, 0xfb7: 0x39c9, 0xfb8: 0x39e1, 0xfb9: 0x39f9, 0xfba: 0x3a11, 0xfbb: 0x3a29,\n\t0xfbc: 0x3a41, 0xfbd: 0x3a59, 0xfbe: 0x3a71, 0xfbf: 0x3a89,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x3aa1, 0xfc1: 0x3ac9, 0xfc2: 0x3af1, 0xfc3: 0x3b19, 0xfc4: 0x3b41, 0xfc5: 0x3b69,\n\t0xfc6: 0x3b91, 0xfc7: 0x3bb9, 0xfc8: 0x3be1, 0xfc9: 0x3c09, 0xfca: 0x3c39, 0xfcb: 0x3c69,\n\t0xfcc: 0x3c99, 0xfcd: 0x3cbd, 0xfce: 0x3cb1, 0xfcf: 0x3cdd, 0xfd0: 0x3cfd, 0xfd1: 0x3d15,\n\t0xfd2: 0x3d2d, 0xfd3: 0x3d45, 0xfd4: 0x3d5d, 0xfd5: 0x3d5d, 0xfd6: 0x3d45, 0xfd7: 0x3d75,\n\t0xfd8: 0x07bd, 0xfd9: 0x3d8d, 0xfda: 0x3da5, 0xfdb: 0x3dbd, 0xfdc: 0x3dd5, 0xfdd: 0x3ded,\n\t0xfde: 0x3e05, 0xfdf: 0x3e1d, 0xfe0: 0x3e35, 0xfe1: 0x3e4d, 0xfe2: 0x3e65, 0xfe3: 0x3e7d,\n\t0xfe4: 0x3e95, 0xfe5: 0x3e95, 0xfe6: 0x3ead, 0xfe7: 0x3ead, 0xfe8: 0x3ec5, 0xfe9: 0x3ec5,\n\t0xfea: 0x3edd, 0xfeb: 0x3ef5, 0xfec: 0x3f0d, 0xfed: 0x3f25, 0xfee: 0x3f3d, 0xfef: 0x3f3d,\n\t0xff0: 0x3f55, 0xff1: 0x3f55, 0xff2: 0x3f55, 0xff3: 0x3f6d, 0xff4: 0x3f85, 0xff5: 0x3f9d,\n\t0xff6: 0x3fb5, 0xff7: 0x3f9d, 0xff8: 0x3fcd, 0xff9: 0x3fe5, 0xffa: 0x3f6d, 0xffb: 0x3ffd,\n\t0xffc: 0x4015, 0xffd: 0x4015, 0xffe: 0x4015, 0xfff: 0x0040,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x3cc9, 0x1001: 0x3d31, 0x1002: 0x3d99, 0x1003: 0x3e01, 0x1004: 0x3e51, 0x1005: 0x3eb9,\n\t0x1006: 0x3f09, 0x1007: 0x3f59, 0x1008: 0x3fd9, 0x1009: 0x4041, 0x100a: 0x4091, 0x100b: 0x40e1,\n\t0x100c: 0x4131, 0x100d: 0x4199, 0x100e: 0x4201, 0x100f: 0x4251, 0x1010: 0x42a1, 0x1011: 0x42d9,\n\t0x1012: 0x4329, 0x1013: 0x4391, 0x1014: 0x43f9, 0x1015: 0x4431, 0x1016: 0x44b1, 0x1017: 0x4549,\n\t0x1018: 0x45c9, 0x1019: 0x4619, 0x101a: 0x4699, 0x101b: 0x4719, 0x101c: 0x4781, 0x101d: 0x47d1,\n\t0x101e: 0x4821, 0x101f: 0x4871, 0x1020: 0x48d9, 0x1021: 0x4959, 0x1022: 0x49c1, 0x1023: 0x4a11,\n\t0x1024: 0x4a61, 0x1025: 0x4ab1, 0x1026: 0x4ae9, 0x1027: 0x4b21, 0x1028: 0x4b59, 0x1029: 0x4b91,\n\t0x102a: 0x4be1, 0x102b: 0x4c31, 0x102c: 0x4cb1, 0x102d: 0x4d01, 0x102e: 0x4d69, 0x102f: 0x4de9,\n\t0x1030: 0x4e39, 0x1031: 0x4e71, 0x1032: 0x4ea9, 0x1033: 0x4f29, 0x1034: 0x4f91, 0x1035: 0x5011,\n\t0x1036: 0x5061, 0x1037: 0x50e1, 0x1038: 0x5119, 0x1039: 0x5169, 0x103a: 0x51b9, 0x103b: 0x5209,\n\t0x103c: 0x5259, 0x103d: 0x52a9, 0x103e: 0x5311, 0x103f: 0x5361,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x5399, 0x1041: 0x53e9, 0x1042: 0x5439, 0x1043: 0x5489, 0x1044: 0x54f1, 0x1045: 0x5541,\n\t0x1046: 0x5591, 0x1047: 0x55e1, 0x1048: 0x5661, 0x1049: 0x56c9, 0x104a: 0x5701, 0x104b: 0x5781,\n\t0x104c: 0x57b9, 0x104d: 0x5821, 0x104e: 0x5889, 0x104f: 0x58d9, 0x1050: 0x5929, 0x1051: 0x5979,\n\t0x1052: 0x59e1, 0x1053: 0x5a19, 0x1054: 0x5a69, 0x1055: 0x5ad1, 0x1056: 0x5b09, 0x1057: 0x5b89,\n\t0x1058: 0x5bd9, 0x1059: 0x5c01, 0x105a: 0x5c29, 0x105b: 0x5c51, 0x105c: 0x5c79, 0x105d: 0x5ca1,\n\t0x105e: 0x5cc9, 0x105f: 0x5cf1, 0x1060: 0x5d19, 0x1061: 0x5d41, 0x1062: 0x5d69, 0x1063: 0x5d99,\n\t0x1064: 0x5dc9, 0x1065: 0x5df9, 0x1066: 0x5e29, 0x1067: 0x5e59, 0x1068: 0x5e89, 0x1069: 0x5eb9,\n\t0x106a: 0x5ee9, 0x106b: 0x5f19, 0x106c: 0x5f49, 0x106d: 0x5f79, 0x106e: 0x5fa9, 0x106f: 0x5fd9,\n\t0x1070: 0x6009, 0x1071: 0x402d, 0x1072: 0x6039, 0x1073: 0x6051, 0x1074: 0x404d, 0x1075: 0x6069,\n\t0x1076: 0x6081, 0x1077: 0x6099, 0x1078: 0x406d, 0x1079: 0x406d, 0x107a: 0x60b1, 0x107b: 0x60c9,\n\t0x107c: 0x6101, 0x107d: 0x6139, 0x107e: 0x6171, 0x107f: 0x61a9,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x6211, 0x1081: 0x6229, 0x1082: 0x408d, 0x1083: 0x6241, 0x1084: 0x6259, 0x1085: 0x6271,\n\t0x1086: 0x6289, 0x1087: 0x62a1, 0x1088: 0x40ad, 0x1089: 0x62b9, 0x108a: 0x62e1, 0x108b: 0x62f9,\n\t0x108c: 0x40cd, 0x108d: 0x40cd, 0x108e: 0x6311, 0x108f: 0x6329, 0x1090: 0x6341, 0x1091: 0x40ed,\n\t0x1092: 0x410d, 0x1093: 0x412d, 0x1094: 0x414d, 0x1095: 0x416d, 0x1096: 0x6359, 0x1097: 0x6371,\n\t0x1098: 0x6389, 0x1099: 0x63a1, 0x109a: 0x63b9, 0x109b: 0x418d, 0x109c: 0x63d1, 0x109d: 0x63e9,\n\t0x109e: 0x6401, 0x109f: 0x41ad, 0x10a0: 0x41cd, 0x10a1: 0x6419, 0x10a2: 0x41ed, 0x10a3: 0x420d,\n\t0x10a4: 0x422d, 0x10a5: 0x6431, 0x10a6: 0x424d, 0x10a7: 0x6449, 0x10a8: 0x6479, 0x10a9: 0x6211,\n\t0x10aa: 0x426d, 0x10ab: 0x428d, 0x10ac: 0x42ad, 0x10ad: 0x42cd, 0x10ae: 0x64b1, 0x10af: 0x64f1,\n\t0x10b0: 0x6539, 0x10b1: 0x6551, 0x10b2: 0x42ed, 0x10b3: 0x6569, 0x10b4: 0x6581, 0x10b5: 0x6599,\n\t0x10b6: 0x430d, 0x10b7: 0x65b1, 0x10b8: 0x65c9, 0x10b9: 0x65b1, 0x10ba: 0x65e1, 0x10bb: 0x65f9,\n\t0x10bc: 0x432d, 0x10bd: 0x6611, 0x10be: 0x6629, 0x10bf: 0x6611,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x434d, 0x10c1: 0x436d, 0x10c2: 0x0040, 0x10c3: 0x6641, 0x10c4: 0x6659, 0x10c5: 0x6671,\n\t0x10c6: 0x6689, 0x10c7: 0x0040, 0x10c8: 0x66c1, 0x10c9: 0x66d9, 0x10ca: 0x66f1, 0x10cb: 0x6709,\n\t0x10cc: 0x6721, 0x10cd: 0x6739, 0x10ce: 0x6401, 0x10cf: 0x6751, 0x10d0: 0x6769, 0x10d1: 0x6781,\n\t0x10d2: 0x438d, 0x10d3: 0x6799, 0x10d4: 0x6289, 0x10d5: 0x43ad, 0x10d6: 0x43cd, 0x10d7: 0x67b1,\n\t0x10d8: 0x0040, 0x10d9: 0x43ed, 0x10da: 0x67c9, 0x10db: 0x67e1, 0x10dc: 0x67f9, 0x10dd: 0x6811,\n\t0x10de: 0x6829, 0x10df: 0x6859, 0x10e0: 0x6889, 0x10e1: 0x68b1, 0x10e2: 0x68d9, 0x10e3: 0x6901,\n\t0x10e4: 0x6929, 0x10e5: 0x6951, 0x10e6: 0x6979, 0x10e7: 0x69a1, 0x10e8: 0x69c9, 0x10e9: 0x69f1,\n\t0x10ea: 0x6a21, 0x10eb: 0x6a51, 0x10ec: 0x6a81, 0x10ed: 0x6ab1, 0x10ee: 0x6ae1, 0x10ef: 0x6b11,\n\t0x10f0: 0x6b41, 0x10f1: 0x6b71, 0x10f2: 0x6ba1, 0x10f3: 0x6bd1, 0x10f4: 0x6c01, 0x10f5: 0x6c31,\n\t0x10f6: 0x6c61, 0x10f7: 0x6c91, 0x10f8: 0x6cc1, 0x10f9: 0x6cf1, 0x10fa: 0x6d21, 0x10fb: 0x6d51,\n\t0x10fc: 0x6d81, 0x10fd: 0x6db1, 0x10fe: 0x6de1, 0x10ff: 0x440d,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008,\n\t0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008,\n\t0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008,\n\t0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008,\n\t0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0xe00d, 0x111d: 0x0008,\n\t0x111e: 0xe00d, 0x111f: 0x0008, 0x1120: 0xe00d, 0x1121: 0x0008, 0x1122: 0xe00d, 0x1123: 0x0008,\n\t0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008,\n\t0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x3308,\n\t0x1130: 0x3318, 0x1131: 0x3318, 0x1132: 0x3318, 0x1133: 0x0018, 0x1134: 0x3308, 0x1135: 0x3308,\n\t0x1136: 0x3308, 0x1137: 0x3308, 0x1138: 0x3308, 0x1139: 0x3308, 0x113a: 0x3308, 0x113b: 0x3308,\n\t0x113c: 0x3308, 0x113d: 0x3308, 0x113e: 0x0018, 0x113f: 0x0008,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008,\n\t0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008,\n\t0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008,\n\t0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008,\n\t0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0x0ea1, 0x115d: 0x6e11,\n\t0x115e: 0x3308, 0x115f: 0x3308, 0x1160: 0x0008, 0x1161: 0x0008, 0x1162: 0x0008, 0x1163: 0x0008,\n\t0x1164: 0x0008, 0x1165: 0x0008, 0x1166: 0x0008, 0x1167: 0x0008, 0x1168: 0x0008, 0x1169: 0x0008,\n\t0x116a: 0x0008, 0x116b: 0x0008, 0x116c: 0x0008, 0x116d: 0x0008, 0x116e: 0x0008, 0x116f: 0x0008,\n\t0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008,\n\t0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0x0008, 0x117a: 0x0008, 0x117b: 0x0008,\n\t0x117c: 0x0008, 0x117d: 0x0008, 0x117e: 0x0008, 0x117f: 0x0008,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x0018, 0x1181: 0x0018, 0x1182: 0x0018, 0x1183: 0x0018, 0x1184: 0x0018, 0x1185: 0x0018,\n\t0x1186: 0x0018, 0x1187: 0x0018, 0x1188: 0x0018, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0x0018,\n\t0x118c: 0x0018, 0x118d: 0x0018, 0x118e: 0x0018, 0x118f: 0x0018, 0x1190: 0x0018, 0x1191: 0x0018,\n\t0x1192: 0x0018, 0x1193: 0x0018, 0x1194: 0x0018, 0x1195: 0x0018, 0x1196: 0x0018, 0x1197: 0x0008,\n\t0x1198: 0x0008, 0x1199: 0x0008, 0x119a: 0x0008, 0x119b: 0x0008, 0x119c: 0x0008, 0x119d: 0x0008,\n\t0x119e: 0x0008, 0x119f: 0x0008, 0x11a0: 0x0018, 0x11a1: 0x0018, 0x11a2: 0xe00d, 0x11a3: 0x0008,\n\t0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008,\n\t0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008,\n\t0x11b0: 0x0008, 0x11b1: 0x0008, 0x11b2: 0xe00d, 0x11b3: 0x0008, 0x11b4: 0xe00d, 0x11b5: 0x0008,\n\t0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008,\n\t0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008,\n\t0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0xe00d, 0x11c9: 0x0008, 0x11ca: 0xe00d, 0x11cb: 0x0008,\n\t0x11cc: 0xe00d, 0x11cd: 0x0008, 0x11ce: 0xe00d, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008,\n\t0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0xe00d, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008,\n\t0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008,\n\t0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008,\n\t0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008,\n\t0x11ea: 0xe00d, 0x11eb: 0x0008, 0x11ec: 0xe00d, 0x11ed: 0x0008, 0x11ee: 0xe00d, 0x11ef: 0x0008,\n\t0x11f0: 0xe0fd, 0x11f1: 0x0008, 0x11f2: 0x0008, 0x11f3: 0x0008, 0x11f4: 0x0008, 0x11f5: 0x0008,\n\t0x11f6: 0x0008, 0x11f7: 0x0008, 0x11f8: 0x0008, 0x11f9: 0xe01d, 0x11fa: 0x0008, 0x11fb: 0xe03d,\n\t0x11fc: 0x0008, 0x11fd: 0x442d, 0x11fe: 0xe00d, 0x11ff: 0x0008,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0xe00d, 0x1205: 0x0008,\n\t0x1206: 0xe00d, 0x1207: 0x0008, 0x1208: 0x0008, 0x1209: 0x0018, 0x120a: 0x0018, 0x120b: 0xe03d,\n\t0x120c: 0x0008, 0x120d: 0x11d9, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0xe00d, 0x1211: 0x0008,\n\t0x1212: 0xe00d, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008,\n\t0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0xe00d, 0x121b: 0x0008, 0x121c: 0xe00d, 0x121d: 0x0008,\n\t0x121e: 0xe00d, 0x121f: 0x0008, 0x1220: 0xe00d, 0x1221: 0x0008, 0x1222: 0xe00d, 0x1223: 0x0008,\n\t0x1224: 0xe00d, 0x1225: 0x0008, 0x1226: 0xe00d, 0x1227: 0x0008, 0x1228: 0xe00d, 0x1229: 0x0008,\n\t0x122a: 0x6e29, 0x122b: 0x1029, 0x122c: 0x11c1, 0x122d: 0x6e41, 0x122e: 0x1221, 0x122f: 0x0008,\n\t0x1230: 0x6e59, 0x1231: 0x6e71, 0x1232: 0x1239, 0x1233: 0x444d, 0x1234: 0xe00d, 0x1235: 0x0008,\n\t0x1236: 0xe00d, 0x1237: 0x0008, 0x1238: 0x0040, 0x1239: 0x0008, 0x123a: 0x0040, 0x123b: 0x0040,\n\t0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x64d5, 0x1241: 0x64f5, 0x1242: 0x6515, 0x1243: 0x6535, 0x1244: 0x6555, 0x1245: 0x6575,\n\t0x1246: 0x6595, 0x1247: 0x65b5, 0x1248: 0x65d5, 0x1249: 0x65f5, 0x124a: 0x6615, 0x124b: 0x6635,\n\t0x124c: 0x6655, 0x124d: 0x6675, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x6695, 0x1251: 0x0008,\n\t0x1252: 0x66b5, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x66d5, 0x1256: 0x66f5, 0x1257: 0x6715,\n\t0x1258: 0x6735, 0x1259: 0x6755, 0x125a: 0x6775, 0x125b: 0x6795, 0x125c: 0x67b5, 0x125d: 0x67d5,\n\t0x125e: 0x67f5, 0x125f: 0x0008, 0x1260: 0x6815, 0x1261: 0x0008, 0x1262: 0x6835, 0x1263: 0x0008,\n\t0x1264: 0x0008, 0x1265: 0x6855, 0x1266: 0x6875, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008,\n\t0x126a: 0x6895, 0x126b: 0x68b5, 0x126c: 0x68d5, 0x126d: 0x68f5, 0x126e: 0x6915, 0x126f: 0x6935,\n\t0x1270: 0x6955, 0x1271: 0x6975, 0x1272: 0x6995, 0x1273: 0x69b5, 0x1274: 0x69d5, 0x1275: 0x69f5,\n\t0x1276: 0x6a15, 0x1277: 0x6a35, 0x1278: 0x6a55, 0x1279: 0x6a75, 0x127a: 0x6a95, 0x127b: 0x6ab5,\n\t0x127c: 0x6ad5, 0x127d: 0x6af5, 0x127e: 0x6b15, 0x127f: 0x6b35,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x7a95, 0x1281: 0x7ab5, 0x1282: 0x7ad5, 0x1283: 0x7af5, 0x1284: 0x7b15, 0x1285: 0x7b35,\n\t0x1286: 0x7b55, 0x1287: 0x7b75, 0x1288: 0x7b95, 0x1289: 0x7bb5, 0x128a: 0x7bd5, 0x128b: 0x7bf5,\n\t0x128c: 0x7c15, 0x128d: 0x7c35, 0x128e: 0x7c55, 0x128f: 0x6ec9, 0x1290: 0x6ef1, 0x1291: 0x6f19,\n\t0x1292: 0x7c75, 0x1293: 0x7c95, 0x1294: 0x7cb5, 0x1295: 0x6f41, 0x1296: 0x6f69, 0x1297: 0x6f91,\n\t0x1298: 0x7cd5, 0x1299: 0x7cf5, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040,\n\t0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040,\n\t0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040,\n\t0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040,\n\t0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040,\n\t0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040,\n\t0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x6fb9, 0x12c1: 0x6fd1, 0x12c2: 0x6fe9, 0x12c3: 0x7d15, 0x12c4: 0x7d35, 0x12c5: 0x7001,\n\t0x12c6: 0x7001, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040,\n\t0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040,\n\t0x12d2: 0x0040, 0x12d3: 0x7019, 0x12d4: 0x7041, 0x12d5: 0x7069, 0x12d6: 0x7091, 0x12d7: 0x70b9,\n\t0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x70e1,\n\t0x12de: 0x3308, 0x12df: 0x7109, 0x12e0: 0x7131, 0x12e1: 0x20a9, 0x12e2: 0x20f1, 0x12e3: 0x7149,\n\t0x12e4: 0x7161, 0x12e5: 0x7179, 0x12e6: 0x7191, 0x12e7: 0x71a9, 0x12e8: 0x71c1, 0x12e9: 0x1fb2,\n\t0x12ea: 0x71d9, 0x12eb: 0x7201, 0x12ec: 0x7229, 0x12ed: 0x7261, 0x12ee: 0x7299, 0x12ef: 0x72c1,\n\t0x12f0: 0x72e9, 0x12f1: 0x7311, 0x12f2: 0x7339, 0x12f3: 0x7361, 0x12f4: 0x7389, 0x12f5: 0x73b1,\n\t0x12f6: 0x73d9, 0x12f7: 0x0040, 0x12f8: 0x7401, 0x12f9: 0x7429, 0x12fa: 0x7451, 0x12fb: 0x7479,\n\t0x12fc: 0x74a1, 0x12fd: 0x0040, 0x12fe: 0x74c9, 0x12ff: 0x0040,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x74f1, 0x1301: 0x7519, 0x1302: 0x0040, 0x1303: 0x7541, 0x1304: 0x7569, 0x1305: 0x0040,\n\t0x1306: 0x7591, 0x1307: 0x75b9, 0x1308: 0x75e1, 0x1309: 0x7609, 0x130a: 0x7631, 0x130b: 0x7659,\n\t0x130c: 0x7681, 0x130d: 0x76a9, 0x130e: 0x76d1, 0x130f: 0x76f9, 0x1310: 0x7721, 0x1311: 0x7721,\n\t0x1312: 0x7739, 0x1313: 0x7739, 0x1314: 0x7739, 0x1315: 0x7739, 0x1316: 0x7751, 0x1317: 0x7751,\n\t0x1318: 0x7751, 0x1319: 0x7751, 0x131a: 0x7769, 0x131b: 0x7769, 0x131c: 0x7769, 0x131d: 0x7769,\n\t0x131e: 0x7781, 0x131f: 0x7781, 0x1320: 0x7781, 0x1321: 0x7781, 0x1322: 0x7799, 0x1323: 0x7799,\n\t0x1324: 0x7799, 0x1325: 0x7799, 0x1326: 0x77b1, 0x1327: 0x77b1, 0x1328: 0x77b1, 0x1329: 0x77b1,\n\t0x132a: 0x77c9, 0x132b: 0x77c9, 0x132c: 0x77c9, 0x132d: 0x77c9, 0x132e: 0x77e1, 0x132f: 0x77e1,\n\t0x1330: 0x77e1, 0x1331: 0x77e1, 0x1332: 0x77f9, 0x1333: 0x77f9, 0x1334: 0x77f9, 0x1335: 0x77f9,\n\t0x1336: 0x7811, 0x1337: 0x7811, 0x1338: 0x7811, 0x1339: 0x7811, 0x133a: 0x7829, 0x133b: 0x7829,\n\t0x133c: 0x7829, 0x133d: 0x7829, 0x133e: 0x7841, 0x133f: 0x7841,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x7841, 0x1341: 0x7841, 0x1342: 0x7859, 0x1343: 0x7859, 0x1344: 0x7871, 0x1345: 0x7871,\n\t0x1346: 0x7889, 0x1347: 0x7889, 0x1348: 0x78a1, 0x1349: 0x78a1, 0x134a: 0x78b9, 0x134b: 0x78b9,\n\t0x134c: 0x78d1, 0x134d: 0x78d1, 0x134e: 0x78e9, 0x134f: 0x78e9, 0x1350: 0x78e9, 0x1351: 0x78e9,\n\t0x1352: 0x7901, 0x1353: 0x7901, 0x1354: 0x7901, 0x1355: 0x7901, 0x1356: 0x7919, 0x1357: 0x7919,\n\t0x1358: 0x7919, 0x1359: 0x7919, 0x135a: 0x7931, 0x135b: 0x7931, 0x135c: 0x7931, 0x135d: 0x7931,\n\t0x135e: 0x7949, 0x135f: 0x7949, 0x1360: 0x7961, 0x1361: 0x7961, 0x1362: 0x7961, 0x1363: 0x7961,\n\t0x1364: 0x7979, 0x1365: 0x7979, 0x1366: 0x7991, 0x1367: 0x7991, 0x1368: 0x7991, 0x1369: 0x7991,\n\t0x136a: 0x79a9, 0x136b: 0x79a9, 0x136c: 0x79a9, 0x136d: 0x79a9, 0x136e: 0x79c1, 0x136f: 0x79c1,\n\t0x1370: 0x79d9, 0x1371: 0x79d9, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818,\n\t0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818,\n\t0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0040, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040,\n\t0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040,\n\t0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040,\n\t0x1392: 0x0040, 0x1393: 0x79f1, 0x1394: 0x79f1, 0x1395: 0x79f1, 0x1396: 0x79f1, 0x1397: 0x7a09,\n\t0x1398: 0x7a09, 0x1399: 0x7a21, 0x139a: 0x7a21, 0x139b: 0x7a39, 0x139c: 0x7a39, 0x139d: 0x0479,\n\t0x139e: 0x7a51, 0x139f: 0x7a51, 0x13a0: 0x7a69, 0x13a1: 0x7a69, 0x13a2: 0x7a81, 0x13a3: 0x7a81,\n\t0x13a4: 0x7a99, 0x13a5: 0x7a99, 0x13a6: 0x7a99, 0x13a7: 0x7a99, 0x13a8: 0x7ab1, 0x13a9: 0x7ab1,\n\t0x13aa: 0x7ac9, 0x13ab: 0x7ac9, 0x13ac: 0x7af1, 0x13ad: 0x7af1, 0x13ae: 0x7b19, 0x13af: 0x7b19,\n\t0x13b0: 0x7b41, 0x13b1: 0x7b41, 0x13b2: 0x7b69, 0x13b3: 0x7b69, 0x13b4: 0x7b91, 0x13b5: 0x7b91,\n\t0x13b6: 0x7bb9, 0x13b7: 0x7bb9, 0x13b8: 0x7bb9, 0x13b9: 0x7be1, 0x13ba: 0x7be1, 0x13bb: 0x7be1,\n\t0x13bc: 0x7c09, 0x13bd: 0x7c09, 0x13be: 0x7c09, 0x13bf: 0x7c09,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x85f9, 0x13c1: 0x8621, 0x13c2: 0x8649, 0x13c3: 0x8671, 0x13c4: 0x8699, 0x13c5: 0x86c1,\n\t0x13c6: 0x86e9, 0x13c7: 0x8711, 0x13c8: 0x8739, 0x13c9: 0x8761, 0x13ca: 0x8789, 0x13cb: 0x87b1,\n\t0x13cc: 0x87d9, 0x13cd: 0x8801, 0x13ce: 0x8829, 0x13cf: 0x8851, 0x13d0: 0x8879, 0x13d1: 0x88a1,\n\t0x13d2: 0x88c9, 0x13d3: 0x88f1, 0x13d4: 0x8919, 0x13d5: 0x8941, 0x13d6: 0x8969, 0x13d7: 0x8991,\n\t0x13d8: 0x89b9, 0x13d9: 0x89e1, 0x13da: 0x8a09, 0x13db: 0x8a31, 0x13dc: 0x8a59, 0x13dd: 0x8a81,\n\t0x13de: 0x8aaa, 0x13df: 0x8ada, 0x13e0: 0x8b0a, 0x13e1: 0x8b3a, 0x13e2: 0x8b6a, 0x13e3: 0x8b9a,\n\t0x13e4: 0x8bc9, 0x13e5: 0x8bf1, 0x13e6: 0x7c71, 0x13e7: 0x8c19, 0x13e8: 0x7be1, 0x13e9: 0x7c99,\n\t0x13ea: 0x8c41, 0x13eb: 0x8c69, 0x13ec: 0x7d39, 0x13ed: 0x8c91, 0x13ee: 0x7d61, 0x13ef: 0x7d89,\n\t0x13f0: 0x8cb9, 0x13f1: 0x8ce1, 0x13f2: 0x7e29, 0x13f3: 0x8d09, 0x13f4: 0x7e51, 0x13f5: 0x7e79,\n\t0x13f6: 0x8d31, 0x13f7: 0x8d59, 0x13f8: 0x7ec9, 0x13f9: 0x8d81, 0x13fa: 0x7ef1, 0x13fb: 0x7f19,\n\t0x13fc: 0x83a1, 0x13fd: 0x83c9, 0x13fe: 0x8441, 0x13ff: 0x8469,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x8491, 0x1401: 0x8531, 0x1402: 0x8559, 0x1403: 0x8581, 0x1404: 0x85a9, 0x1405: 0x8649,\n\t0x1406: 0x8671, 0x1407: 0x8699, 0x1408: 0x8da9, 0x1409: 0x8739, 0x140a: 0x8dd1, 0x140b: 0x8df9,\n\t0x140c: 0x8829, 0x140d: 0x8e21, 0x140e: 0x8851, 0x140f: 0x8879, 0x1410: 0x8a81, 0x1411: 0x8e49,\n\t0x1412: 0x8e71, 0x1413: 0x89b9, 0x1414: 0x8e99, 0x1415: 0x89e1, 0x1416: 0x8a09, 0x1417: 0x7c21,\n\t0x1418: 0x7c49, 0x1419: 0x8ec1, 0x141a: 0x7c71, 0x141b: 0x8ee9, 0x141c: 0x7cc1, 0x141d: 0x7ce9,\n\t0x141e: 0x7d11, 0x141f: 0x7d39, 0x1420: 0x8f11, 0x1421: 0x7db1, 0x1422: 0x7dd9, 0x1423: 0x7e01,\n\t0x1424: 0x7e29, 0x1425: 0x8f39, 0x1426: 0x7ec9, 0x1427: 0x7f41, 0x1428: 0x7f69, 0x1429: 0x7f91,\n\t0x142a: 0x7fb9, 0x142b: 0x7fe1, 0x142c: 0x8031, 0x142d: 0x8059, 0x142e: 0x8081, 0x142f: 0x80a9,\n\t0x1430: 0x80d1, 0x1431: 0x80f9, 0x1432: 0x8f61, 0x1433: 0x8121, 0x1434: 0x8149, 0x1435: 0x8171,\n\t0x1436: 0x8199, 0x1437: 0x81c1, 0x1438: 0x81e9, 0x1439: 0x8239, 0x143a: 0x8261, 0x143b: 0x8289,\n\t0x143c: 0x82b1, 0x143d: 0x82d9, 0x143e: 0x8301, 0x143f: 0x8329,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x8351, 0x1441: 0x8379, 0x1442: 0x83f1, 0x1443: 0x8419, 0x1444: 0x84b9, 0x1445: 0x84e1,\n\t0x1446: 0x8509, 0x1447: 0x8531, 0x1448: 0x8559, 0x1449: 0x85d1, 0x144a: 0x85f9, 0x144b: 0x8621,\n\t0x144c: 0x8649, 0x144d: 0x8f89, 0x144e: 0x86c1, 0x144f: 0x86e9, 0x1450: 0x8711, 0x1451: 0x8739,\n\t0x1452: 0x87b1, 0x1453: 0x87d9, 0x1454: 0x8801, 0x1455: 0x8829, 0x1456: 0x8fb1, 0x1457: 0x88a1,\n\t0x1458: 0x88c9, 0x1459: 0x8fd9, 0x145a: 0x8941, 0x145b: 0x8969, 0x145c: 0x8991, 0x145d: 0x89b9,\n\t0x145e: 0x9001, 0x145f: 0x7c71, 0x1460: 0x8ee9, 0x1461: 0x7d39, 0x1462: 0x8f11, 0x1463: 0x7e29,\n\t0x1464: 0x8f39, 0x1465: 0x7ec9, 0x1466: 0x9029, 0x1467: 0x80d1, 0x1468: 0x9051, 0x1469: 0x9079,\n\t0x146a: 0x90a1, 0x146b: 0x8531, 0x146c: 0x8559, 0x146d: 0x8649, 0x146e: 0x8829, 0x146f: 0x8fb1,\n\t0x1470: 0x89b9, 0x1471: 0x9001, 0x1472: 0x90c9, 0x1473: 0x9101, 0x1474: 0x9139, 0x1475: 0x9171,\n\t0x1476: 0x9199, 0x1477: 0x91c1, 0x1478: 0x91e9, 0x1479: 0x9211, 0x147a: 0x9239, 0x147b: 0x9261,\n\t0x147c: 0x9289, 0x147d: 0x92b1, 0x147e: 0x92d9, 0x147f: 0x9301,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x9329, 0x1481: 0x9351, 0x1482: 0x9379, 0x1483: 0x93a1, 0x1484: 0x93c9, 0x1485: 0x93f1,\n\t0x1486: 0x9419, 0x1487: 0x9441, 0x1488: 0x9469, 0x1489: 0x9491, 0x148a: 0x94b9, 0x148b: 0x94e1,\n\t0x148c: 0x9079, 0x148d: 0x9509, 0x148e: 0x9531, 0x148f: 0x9559, 0x1490: 0x9581, 0x1491: 0x9171,\n\t0x1492: 0x9199, 0x1493: 0x91c1, 0x1494: 0x91e9, 0x1495: 0x9211, 0x1496: 0x9239, 0x1497: 0x9261,\n\t0x1498: 0x9289, 0x1499: 0x92b1, 0x149a: 0x92d9, 0x149b: 0x9301, 0x149c: 0x9329, 0x149d: 0x9351,\n\t0x149e: 0x9379, 0x149f: 0x93a1, 0x14a0: 0x93c9, 0x14a1: 0x93f1, 0x14a2: 0x9419, 0x14a3: 0x9441,\n\t0x14a4: 0x9469, 0x14a5: 0x9491, 0x14a6: 0x94b9, 0x14a7: 0x94e1, 0x14a8: 0x9079, 0x14a9: 0x9509,\n\t0x14aa: 0x9531, 0x14ab: 0x9559, 0x14ac: 0x9581, 0x14ad: 0x9491, 0x14ae: 0x94b9, 0x14af: 0x94e1,\n\t0x14b0: 0x9079, 0x14b1: 0x9051, 0x14b2: 0x90a1, 0x14b3: 0x8211, 0x14b4: 0x8059, 0x14b5: 0x8081,\n\t0x14b6: 0x80a9, 0x14b7: 0x9491, 0x14b8: 0x94b9, 0x14b9: 0x94e1, 0x14ba: 0x8211, 0x14bb: 0x8239,\n\t0x14bc: 0x95a9, 0x14bd: 0x95a9, 0x14be: 0x0018, 0x14bf: 0x0018,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x0040, 0x14c1: 0x0040, 0x14c2: 0x0040, 0x14c3: 0x0040, 0x14c4: 0x0040, 0x14c5: 0x0040,\n\t0x14c6: 0x0040, 0x14c7: 0x0040, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040,\n\t0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x95d1, 0x14d1: 0x9609,\n\t0x14d2: 0x9609, 0x14d3: 0x9641, 0x14d4: 0x9679, 0x14d5: 0x96b1, 0x14d6: 0x96e9, 0x14d7: 0x9721,\n\t0x14d8: 0x9759, 0x14d9: 0x9759, 0x14da: 0x9791, 0x14db: 0x97c9, 0x14dc: 0x9801, 0x14dd: 0x9839,\n\t0x14de: 0x9871, 0x14df: 0x98a9, 0x14e0: 0x98a9, 0x14e1: 0x98e1, 0x14e2: 0x9919, 0x14e3: 0x9919,\n\t0x14e4: 0x9951, 0x14e5: 0x9951, 0x14e6: 0x9989, 0x14e7: 0x99c1, 0x14e8: 0x99c1, 0x14e9: 0x99f9,\n\t0x14ea: 0x9a31, 0x14eb: 0x9a31, 0x14ec: 0x9a69, 0x14ed: 0x9a69, 0x14ee: 0x9aa1, 0x14ef: 0x9ad9,\n\t0x14f0: 0x9ad9, 0x14f1: 0x9b11, 0x14f2: 0x9b11, 0x14f3: 0x9b49, 0x14f4: 0x9b81, 0x14f5: 0x9bb9,\n\t0x14f6: 0x9bf1, 0x14f7: 0x9bf1, 0x14f8: 0x9c29, 0x14f9: 0x9c61, 0x14fa: 0x9c99, 0x14fb: 0x9cd1,\n\t0x14fc: 0x9d09, 0x14fd: 0x9d09, 0x14fe: 0x9d41, 0x14ff: 0x9d79,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0xa949, 0x1501: 0xa981, 0x1502: 0xa9b9, 0x1503: 0xa8a1, 0x1504: 0x9bb9, 0x1505: 0x9989,\n\t0x1506: 0xa9f1, 0x1507: 0xaa29, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040,\n\t0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0040, 0x1510: 0x0040, 0x1511: 0x0040,\n\t0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040,\n\t0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040,\n\t0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040,\n\t0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040,\n\t0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040,\n\t0x1530: 0xaa61, 0x1531: 0xaa99, 0x1532: 0xaad1, 0x1533: 0xab19, 0x1534: 0xab61, 0x1535: 0xaba9,\n\t0x1536: 0xabf1, 0x1537: 0xac39, 0x1538: 0xac81, 0x1539: 0xacc9, 0x153a: 0xad02, 0x153b: 0xae12,\n\t0x153c: 0xae91, 0x153d: 0x0018, 0x153e: 0x0040, 0x153f: 0x0040,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0,\n\t0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0,\n\t0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0xaeda, 0x1551: 0x7d55,\n\t0x1552: 0x0040, 0x1553: 0xaeea, 0x1554: 0x03c2, 0x1555: 0xaefa, 0x1556: 0xaf0a, 0x1557: 0x7d75,\n\t0x1558: 0x7d95, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040,\n\t0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308,\n\t0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308,\n\t0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308,\n\t0x1570: 0x0040, 0x1571: 0x7db5, 0x1572: 0x7dd5, 0x1573: 0xaf1a, 0x1574: 0xaf1a, 0x1575: 0x1fd2,\n\t0x1576: 0x1fe2, 0x1577: 0xaf2a, 0x1578: 0xaf3a, 0x1579: 0x7df5, 0x157a: 0x7e15, 0x157b: 0x7e35,\n\t0x157c: 0x7df5, 0x157d: 0x7e55, 0x157e: 0x7e75, 0x157f: 0x7e55,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x7e95, 0x1581: 0x7eb5, 0x1582: 0x7ed5, 0x1583: 0x7eb5, 0x1584: 0x7ef5, 0x1585: 0x0018,\n\t0x1586: 0x0018, 0x1587: 0xaf4a, 0x1588: 0xaf5a, 0x1589: 0x7f16, 0x158a: 0x7f36, 0x158b: 0x7f56,\n\t0x158c: 0x7f76, 0x158d: 0xaf1a, 0x158e: 0xaf1a, 0x158f: 0xaf1a, 0x1590: 0xaeda, 0x1591: 0x7f95,\n\t0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x03c2, 0x1595: 0xaeea, 0x1596: 0xaf0a, 0x1597: 0xaefa,\n\t0x1598: 0x7fb5, 0x1599: 0x1fd2, 0x159a: 0x1fe2, 0x159b: 0xaf2a, 0x159c: 0xaf3a, 0x159d: 0x7e95,\n\t0x159e: 0x7ef5, 0x159f: 0xaf6a, 0x15a0: 0xaf7a, 0x15a1: 0xaf8a, 0x15a2: 0x1fb2, 0x15a3: 0xaf99,\n\t0x15a4: 0xafaa, 0x15a5: 0xafba, 0x15a6: 0x1fc2, 0x15a7: 0x0040, 0x15a8: 0xafca, 0x15a9: 0xafda,\n\t0x15aa: 0xafea, 0x15ab: 0xaffa, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040,\n\t0x15b0: 0x7fd6, 0x15b1: 0xb009, 0x15b2: 0x7ff6, 0x15b3: 0x0808, 0x15b4: 0x8016, 0x15b5: 0x0040,\n\t0x15b6: 0x8036, 0x15b7: 0xb031, 0x15b8: 0x8056, 0x15b9: 0xb059, 0x15ba: 0x8076, 0x15bb: 0xb081,\n\t0x15bc: 0x8096, 0x15bd: 0xb0a9, 0x15be: 0x80b6, 0x15bf: 0xb0d1,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0xb0f9, 0x15c1: 0xb111, 0x15c2: 0xb111, 0x15c3: 0xb129, 0x15c4: 0xb129, 0x15c5: 0xb141,\n\t0x15c6: 0xb141, 0x15c7: 0xb159, 0x15c8: 0xb159, 0x15c9: 0xb171, 0x15ca: 0xb171, 0x15cb: 0xb171,\n\t0x15cc: 0xb171, 0x15cd: 0xb189, 0x15ce: 0xb189, 0x15cf: 0xb1a1, 0x15d0: 0xb1a1, 0x15d1: 0xb1a1,\n\t0x15d2: 0xb1a1, 0x15d3: 0xb1b9, 0x15d4: 0xb1b9, 0x15d5: 0xb1d1, 0x15d6: 0xb1d1, 0x15d7: 0xb1d1,\n\t0x15d8: 0xb1d1, 0x15d9: 0xb1e9, 0x15da: 0xb1e9, 0x15db: 0xb1e9, 0x15dc: 0xb1e9, 0x15dd: 0xb201,\n\t0x15de: 0xb201, 0x15df: 0xb201, 0x15e0: 0xb201, 0x15e1: 0xb219, 0x15e2: 0xb219, 0x15e3: 0xb219,\n\t0x15e4: 0xb219, 0x15e5: 0xb231, 0x15e6: 0xb231, 0x15e7: 0xb231, 0x15e8: 0xb231, 0x15e9: 0xb249,\n\t0x15ea: 0xb249, 0x15eb: 0xb261, 0x15ec: 0xb261, 0x15ed: 0xb279, 0x15ee: 0xb279, 0x15ef: 0xb291,\n\t0x15f0: 0xb291, 0x15f1: 0xb2a9, 0x15f2: 0xb2a9, 0x15f3: 0xb2a9, 0x15f4: 0xb2a9, 0x15f5: 0xb2c1,\n\t0x15f6: 0xb2c1, 0x15f7: 0xb2c1, 0x15f8: 0xb2c1, 0x15f9: 0xb2d9, 0x15fa: 0xb2d9, 0x15fb: 0xb2d9,\n\t0x15fc: 0xb2d9, 0x15fd: 0xb2f1, 0x15fe: 0xb2f1, 0x15ff: 0xb2f1,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0xb2f1, 0x1601: 0xb309, 0x1602: 0xb309, 0x1603: 0xb309, 0x1604: 0xb309, 0x1605: 0xb321,\n\t0x1606: 0xb321, 0x1607: 0xb321, 0x1608: 0xb321, 0x1609: 0xb339, 0x160a: 0xb339, 0x160b: 0xb339,\n\t0x160c: 0xb339, 0x160d: 0xb351, 0x160e: 0xb351, 0x160f: 0xb351, 0x1610: 0xb351, 0x1611: 0xb369,\n\t0x1612: 0xb369, 0x1613: 0xb369, 0x1614: 0xb369, 0x1615: 0xb381, 0x1616: 0xb381, 0x1617: 0xb381,\n\t0x1618: 0xb381, 0x1619: 0xb399, 0x161a: 0xb399, 0x161b: 0xb399, 0x161c: 0xb399, 0x161d: 0xb3b1,\n\t0x161e: 0xb3b1, 0x161f: 0xb3b1, 0x1620: 0xb3b1, 0x1621: 0xb3c9, 0x1622: 0xb3c9, 0x1623: 0xb3c9,\n\t0x1624: 0xb3c9, 0x1625: 0xb3e1, 0x1626: 0xb3e1, 0x1627: 0xb3e1, 0x1628: 0xb3e1, 0x1629: 0xb3f9,\n\t0x162a: 0xb3f9, 0x162b: 0xb3f9, 0x162c: 0xb3f9, 0x162d: 0xb411, 0x162e: 0xb411, 0x162f: 0x7ab1,\n\t0x1630: 0x7ab1, 0x1631: 0xb429, 0x1632: 0xb429, 0x1633: 0xb429, 0x1634: 0xb429, 0x1635: 0xb441,\n\t0x1636: 0xb441, 0x1637: 0xb469, 0x1638: 0xb469, 0x1639: 0xb491, 0x163a: 0xb491, 0x163b: 0xb4b9,\n\t0x163c: 0xb4b9, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0040, 0x1641: 0xaefa, 0x1642: 0xb4e2, 0x1643: 0xaf6a, 0x1644: 0xafda, 0x1645: 0xafea,\n\t0x1646: 0xaf7a, 0x1647: 0xb4f2, 0x1648: 0x1fd2, 0x1649: 0x1fe2, 0x164a: 0xaf8a, 0x164b: 0x1fb2,\n\t0x164c: 0xaeda, 0x164d: 0xaf99, 0x164e: 0x29d1, 0x164f: 0xb502, 0x1650: 0x1f41, 0x1651: 0x00c9,\n\t0x1652: 0x0069, 0x1653: 0x0079, 0x1654: 0x1f51, 0x1655: 0x1f61, 0x1656: 0x1f71, 0x1657: 0x1f81,\n\t0x1658: 0x1f91, 0x1659: 0x1fa1, 0x165a: 0xaeea, 0x165b: 0x03c2, 0x165c: 0xafaa, 0x165d: 0x1fc2,\n\t0x165e: 0xafba, 0x165f: 0xaf0a, 0x1660: 0xaffa, 0x1661: 0x0039, 0x1662: 0x0ee9, 0x1663: 0x1159,\n\t0x1664: 0x0ef9, 0x1665: 0x0f09, 0x1666: 0x1199, 0x1667: 0x0f31, 0x1668: 0x0249, 0x1669: 0x0f41,\n\t0x166a: 0x0259, 0x166b: 0x0f51, 0x166c: 0x0359, 0x166d: 0x0f61, 0x166e: 0x0f71, 0x166f: 0x00d9,\n\t0x1670: 0x0f99, 0x1671: 0x2039, 0x1672: 0x0269, 0x1673: 0x01d9, 0x1674: 0x0fa9, 0x1675: 0x0fb9,\n\t0x1676: 0x1089, 0x1677: 0x0279, 0x1678: 0x0369, 0x1679: 0x0289, 0x167a: 0x13d1, 0x167b: 0xaf4a,\n\t0x167c: 0xafca, 0x167d: 0xaf5a, 0x167e: 0xb512, 0x167f: 0xaf1a,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x1caa, 0x1681: 0x0039, 0x1682: 0x0ee9, 0x1683: 0x1159, 0x1684: 0x0ef9, 0x1685: 0x0f09,\n\t0x1686: 0x1199, 0x1687: 0x0f31, 0x1688: 0x0249, 0x1689: 0x0f41, 0x168a: 0x0259, 0x168b: 0x0f51,\n\t0x168c: 0x0359, 0x168d: 0x0f61, 0x168e: 0x0f71, 0x168f: 0x00d9, 0x1690: 0x0f99, 0x1691: 0x2039,\n\t0x1692: 0x0269, 0x1693: 0x01d9, 0x1694: 0x0fa9, 0x1695: 0x0fb9, 0x1696: 0x1089, 0x1697: 0x0279,\n\t0x1698: 0x0369, 0x1699: 0x0289, 0x169a: 0x13d1, 0x169b: 0xaf2a, 0x169c: 0xb522, 0x169d: 0xaf3a,\n\t0x169e: 0xb532, 0x169f: 0x80d5, 0x16a0: 0x80f5, 0x16a1: 0x29d1, 0x16a2: 0x8115, 0x16a3: 0x8115,\n\t0x16a4: 0x8135, 0x16a5: 0x8155, 0x16a6: 0x8175, 0x16a7: 0x8195, 0x16a8: 0x81b5, 0x16a9: 0x81d5,\n\t0x16aa: 0x81f5, 0x16ab: 0x8215, 0x16ac: 0x8235, 0x16ad: 0x8255, 0x16ae: 0x8275, 0x16af: 0x8295,\n\t0x16b0: 0x82b5, 0x16b1: 0x82d5, 0x16b2: 0x82f5, 0x16b3: 0x8315, 0x16b4: 0x8335, 0x16b5: 0x8355,\n\t0x16b6: 0x8375, 0x16b7: 0x8395, 0x16b8: 0x83b5, 0x16b9: 0x83d5, 0x16ba: 0x83f5, 0x16bb: 0x8415,\n\t0x16bc: 0x81b5, 0x16bd: 0x8435, 0x16be: 0x8455, 0x16bf: 0x8215,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x8475, 0x16c1: 0x8495, 0x16c2: 0x84b5, 0x16c3: 0x84d5, 0x16c4: 0x84f5, 0x16c5: 0x8515,\n\t0x16c6: 0x8535, 0x16c7: 0x8555, 0x16c8: 0x84d5, 0x16c9: 0x8575, 0x16ca: 0x84d5, 0x16cb: 0x8595,\n\t0x16cc: 0x8595, 0x16cd: 0x85b5, 0x16ce: 0x85b5, 0x16cf: 0x85d5, 0x16d0: 0x8515, 0x16d1: 0x85f5,\n\t0x16d2: 0x8615, 0x16d3: 0x85f5, 0x16d4: 0x8635, 0x16d5: 0x8615, 0x16d6: 0x8655, 0x16d7: 0x8655,\n\t0x16d8: 0x8675, 0x16d9: 0x8675, 0x16da: 0x8695, 0x16db: 0x8695, 0x16dc: 0x8615, 0x16dd: 0x8115,\n\t0x16de: 0x86b5, 0x16df: 0x86d5, 0x16e0: 0x0040, 0x16e1: 0x86f5, 0x16e2: 0x8715, 0x16e3: 0x8735,\n\t0x16e4: 0x8755, 0x16e5: 0x8735, 0x16e6: 0x8775, 0x16e7: 0x8795, 0x16e8: 0x87b5, 0x16e9: 0x87b5,\n\t0x16ea: 0x87d5, 0x16eb: 0x87d5, 0x16ec: 0x87f5, 0x16ed: 0x87f5, 0x16ee: 0x87d5, 0x16ef: 0x87d5,\n\t0x16f0: 0x8815, 0x16f1: 0x8835, 0x16f2: 0x8855, 0x16f3: 0x8875, 0x16f4: 0x8895, 0x16f5: 0x88b5,\n\t0x16f6: 0x88b5, 0x16f7: 0x88b5, 0x16f8: 0x88d5, 0x16f9: 0x88d5, 0x16fa: 0x88d5, 0x16fb: 0x88d5,\n\t0x16fc: 0x87b5, 0x16fd: 0x87b5, 0x16fe: 0x87b5, 0x16ff: 0x0040,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x8715, 0x1703: 0x86f5, 0x1704: 0x88f5, 0x1705: 0x86f5,\n\t0x1706: 0x8715, 0x1707: 0x86f5, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x8915, 0x170b: 0x8715,\n\t0x170c: 0x8935, 0x170d: 0x88f5, 0x170e: 0x8935, 0x170f: 0x8715, 0x1710: 0x0040, 0x1711: 0x0040,\n\t0x1712: 0x8955, 0x1713: 0x8975, 0x1714: 0x8875, 0x1715: 0x8935, 0x1716: 0x88f5, 0x1717: 0x8935,\n\t0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x8995, 0x171b: 0x89b5, 0x171c: 0x8995, 0x171d: 0x0040,\n\t0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0xb541, 0x1721: 0xb559, 0x1722: 0xb571, 0x1723: 0x89d6,\n\t0x1724: 0xb589, 0x1725: 0xb5a1, 0x1726: 0x89f5, 0x1727: 0x0040, 0x1728: 0x8a15, 0x1729: 0x8a35,\n\t0x172a: 0x8a55, 0x172b: 0x8a35, 0x172c: 0x8a75, 0x172d: 0x8a95, 0x172e: 0x8ab5, 0x172f: 0x0040,\n\t0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040,\n\t0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340,\n\t0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x0a08, 0x1741: 0x0a08, 0x1742: 0x0a08, 0x1743: 0x0a08, 0x1744: 0x0a08, 0x1745: 0x0c08,\n\t0x1746: 0x0808, 0x1747: 0x0c08, 0x1748: 0x0818, 0x1749: 0x0c08, 0x174a: 0x0c08, 0x174b: 0x0808,\n\t0x174c: 0x0808, 0x174d: 0x0908, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0c08, 0x1751: 0x0c08,\n\t0x1752: 0x0c08, 0x1753: 0x0a08, 0x1754: 0x0a08, 0x1755: 0x0a08, 0x1756: 0x0a08, 0x1757: 0x0908,\n\t0x1758: 0x0a08, 0x1759: 0x0a08, 0x175a: 0x0a08, 0x175b: 0x0a08, 0x175c: 0x0a08, 0x175d: 0x0c08,\n\t0x175e: 0x0a08, 0x175f: 0x0a08, 0x1760: 0x0a08, 0x1761: 0x0c08, 0x1762: 0x0808, 0x1763: 0x0808,\n\t0x1764: 0x0c08, 0x1765: 0x3308, 0x1766: 0x3308, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040,\n\t0x176a: 0x0040, 0x176b: 0x0a18, 0x176c: 0x0a18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0c18,\n\t0x1770: 0x0818, 0x1771: 0x0818, 0x1772: 0x0818, 0x1773: 0x0818, 0x1774: 0x0818, 0x1775: 0x0818,\n\t0x1776: 0x0818, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040,\n\t0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x0a08, 0x1781: 0x0c08, 0x1782: 0x0a08, 0x1783: 0x0c08, 0x1784: 0x0c08, 0x1785: 0x0c08,\n\t0x1786: 0x0a08, 0x1787: 0x0a08, 0x1788: 0x0a08, 0x1789: 0x0c08, 0x178a: 0x0a08, 0x178b: 0x0a08,\n\t0x178c: 0x0c08, 0x178d: 0x0a08, 0x178e: 0x0c08, 0x178f: 0x0c08, 0x1790: 0x0a08, 0x1791: 0x0c08,\n\t0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x0040,\n\t0x1798: 0x0040, 0x1799: 0x0818, 0x179a: 0x0818, 0x179b: 0x0818, 0x179c: 0x0818, 0x179d: 0x0040,\n\t0x179e: 0x0040, 0x179f: 0x0040, 0x17a0: 0x0040, 0x17a1: 0x0040, 0x17a2: 0x0040, 0x17a3: 0x0040,\n\t0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x0040, 0x17a7: 0x0040, 0x17a8: 0x0040, 0x17a9: 0x0c18,\n\t0x17aa: 0x0c18, 0x17ab: 0x0c18, 0x17ac: 0x0c18, 0x17ad: 0x0a18, 0x17ae: 0x0a18, 0x17af: 0x0818,\n\t0x17b0: 0x0040, 0x17b1: 0x0040, 0x17b2: 0x0040, 0x17b3: 0x0040, 0x17b4: 0x0040, 0x17b5: 0x0040,\n\t0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040,\n\t0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x3308, 0x17c1: 0x3308, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x0040, 0x17c5: 0x0008,\n\t0x17c6: 0x0008, 0x17c7: 0x0008, 0x17c8: 0x0008, 0x17c9: 0x0008, 0x17ca: 0x0008, 0x17cb: 0x0008,\n\t0x17cc: 0x0008, 0x17cd: 0x0040, 0x17ce: 0x0040, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0040,\n\t0x17d2: 0x0040, 0x17d3: 0x0008, 0x17d4: 0x0008, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0008,\n\t0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008,\n\t0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008,\n\t0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0040,\n\t0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008,\n\t0x17f0: 0x0008, 0x17f1: 0x0040, 0x17f2: 0x0008, 0x17f3: 0x0008, 0x17f4: 0x0040, 0x17f5: 0x0008,\n\t0x17f6: 0x0008, 0x17f7: 0x0008, 0x17f8: 0x0008, 0x17f9: 0x0008, 0x17fa: 0x0040, 0x17fb: 0x3308,\n\t0x17fc: 0x3308, 0x17fd: 0x0008, 0x17fe: 0x3008, 0x17ff: 0x3008,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x3308, 0x1801: 0x3008, 0x1802: 0x3008, 0x1803: 0x3008, 0x1804: 0x3008, 0x1805: 0x0040,\n\t0x1806: 0x0040, 0x1807: 0x3008, 0x1808: 0x3008, 0x1809: 0x0040, 0x180a: 0x0040, 0x180b: 0x3008,\n\t0x180c: 0x3008, 0x180d: 0x3808, 0x180e: 0x0040, 0x180f: 0x0040, 0x1810: 0x0008, 0x1811: 0x0040,\n\t0x1812: 0x0040, 0x1813: 0x0040, 0x1814: 0x0040, 0x1815: 0x0040, 0x1816: 0x0040, 0x1817: 0x3008,\n\t0x1818: 0x0040, 0x1819: 0x0040, 0x181a: 0x0040, 0x181b: 0x0040, 0x181c: 0x0040, 0x181d: 0x0008,\n\t0x181e: 0x0008, 0x181f: 0x0008, 0x1820: 0x0008, 0x1821: 0x0008, 0x1822: 0x3008, 0x1823: 0x3008,\n\t0x1824: 0x0040, 0x1825: 0x0040, 0x1826: 0x3308, 0x1827: 0x3308, 0x1828: 0x3308, 0x1829: 0x3308,\n\t0x182a: 0x3308, 0x182b: 0x3308, 0x182c: 0x3308, 0x182d: 0x0040, 0x182e: 0x0040, 0x182f: 0x0040,\n\t0x1830: 0x3308, 0x1831: 0x3308, 0x1832: 0x3308, 0x1833: 0x3308, 0x1834: 0x3308, 0x1835: 0x0040,\n\t0x1836: 0x0040, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040,\n\t0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x0039, 0x1841: 0x0ee9, 0x1842: 0x1159, 0x1843: 0x0ef9, 0x1844: 0x0f09, 0x1845: 0x1199,\n\t0x1846: 0x0f31, 0x1847: 0x0249, 0x1848: 0x0f41, 0x1849: 0x0259, 0x184a: 0x0f51, 0x184b: 0x0359,\n\t0x184c: 0x0f61, 0x184d: 0x0f71, 0x184e: 0x00d9, 0x184f: 0x0f99, 0x1850: 0x2039, 0x1851: 0x0269,\n\t0x1852: 0x01d9, 0x1853: 0x0fa9, 0x1854: 0x0fb9, 0x1855: 0x1089, 0x1856: 0x0279, 0x1857: 0x0369,\n\t0x1858: 0x0289, 0x1859: 0x13d1, 0x185a: 0x0039, 0x185b: 0x0ee9, 0x185c: 0x1159, 0x185d: 0x0ef9,\n\t0x185e: 0x0f09, 0x185f: 0x1199, 0x1860: 0x0f31, 0x1861: 0x0249, 0x1862: 0x0f41, 0x1863: 0x0259,\n\t0x1864: 0x0f51, 0x1865: 0x0359, 0x1866: 0x0f61, 0x1867: 0x0f71, 0x1868: 0x00d9, 0x1869: 0x0f99,\n\t0x186a: 0x2039, 0x186b: 0x0269, 0x186c: 0x01d9, 0x186d: 0x0fa9, 0x186e: 0x0fb9, 0x186f: 0x1089,\n\t0x1870: 0x0279, 0x1871: 0x0369, 0x1872: 0x0289, 0x1873: 0x13d1, 0x1874: 0x0039, 0x1875: 0x0ee9,\n\t0x1876: 0x1159, 0x1877: 0x0ef9, 0x1878: 0x0f09, 0x1879: 0x1199, 0x187a: 0x0f31, 0x187b: 0x0249,\n\t0x187c: 0x0f41, 0x187d: 0x0259, 0x187e: 0x0f51, 0x187f: 0x0359,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x0f61, 0x1881: 0x0f71, 0x1882: 0x00d9, 0x1883: 0x0f99, 0x1884: 0x2039, 0x1885: 0x0269,\n\t0x1886: 0x01d9, 0x1887: 0x0fa9, 0x1888: 0x0fb9, 0x1889: 0x1089, 0x188a: 0x0279, 0x188b: 0x0369,\n\t0x188c: 0x0289, 0x188d: 0x13d1, 0x188e: 0x0039, 0x188f: 0x0ee9, 0x1890: 0x1159, 0x1891: 0x0ef9,\n\t0x1892: 0x0f09, 0x1893: 0x1199, 0x1894: 0x0f31, 0x1895: 0x0040, 0x1896: 0x0f41, 0x1897: 0x0259,\n\t0x1898: 0x0f51, 0x1899: 0x0359, 0x189a: 0x0f61, 0x189b: 0x0f71, 0x189c: 0x00d9, 0x189d: 0x0f99,\n\t0x189e: 0x2039, 0x189f: 0x0269, 0x18a0: 0x01d9, 0x18a1: 0x0fa9, 0x18a2: 0x0fb9, 0x18a3: 0x1089,\n\t0x18a4: 0x0279, 0x18a5: 0x0369, 0x18a6: 0x0289, 0x18a7: 0x13d1, 0x18a8: 0x0039, 0x18a9: 0x0ee9,\n\t0x18aa: 0x1159, 0x18ab: 0x0ef9, 0x18ac: 0x0f09, 0x18ad: 0x1199, 0x18ae: 0x0f31, 0x18af: 0x0249,\n\t0x18b0: 0x0f41, 0x18b1: 0x0259, 0x18b2: 0x0f51, 0x18b3: 0x0359, 0x18b4: 0x0f61, 0x18b5: 0x0f71,\n\t0x18b6: 0x00d9, 0x18b7: 0x0f99, 0x18b8: 0x2039, 0x18b9: 0x0269, 0x18ba: 0x01d9, 0x18bb: 0x0fa9,\n\t0x18bc: 0x0fb9, 0x18bd: 0x1089, 0x18be: 0x0279, 0x18bf: 0x0369,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x0289, 0x18c1: 0x13d1, 0x18c2: 0x0039, 0x18c3: 0x0ee9, 0x18c4: 0x1159, 0x18c5: 0x0ef9,\n\t0x18c6: 0x0f09, 0x18c7: 0x1199, 0x18c8: 0x0f31, 0x18c9: 0x0249, 0x18ca: 0x0f41, 0x18cb: 0x0259,\n\t0x18cc: 0x0f51, 0x18cd: 0x0359, 0x18ce: 0x0f61, 0x18cf: 0x0f71, 0x18d0: 0x00d9, 0x18d1: 0x0f99,\n\t0x18d2: 0x2039, 0x18d3: 0x0269, 0x18d4: 0x01d9, 0x18d5: 0x0fa9, 0x18d6: 0x0fb9, 0x18d7: 0x1089,\n\t0x18d8: 0x0279, 0x18d9: 0x0369, 0x18da: 0x0289, 0x18db: 0x13d1, 0x18dc: 0x0039, 0x18dd: 0x0040,\n\t0x18de: 0x1159, 0x18df: 0x0ef9, 0x18e0: 0x0040, 0x18e1: 0x0040, 0x18e2: 0x0f31, 0x18e3: 0x0040,\n\t0x18e4: 0x0040, 0x18e5: 0x0259, 0x18e6: 0x0f51, 0x18e7: 0x0040, 0x18e8: 0x0040, 0x18e9: 0x0f71,\n\t0x18ea: 0x00d9, 0x18eb: 0x0f99, 0x18ec: 0x2039, 0x18ed: 0x0040, 0x18ee: 0x01d9, 0x18ef: 0x0fa9,\n\t0x18f0: 0x0fb9, 0x18f1: 0x1089, 0x18f2: 0x0279, 0x18f3: 0x0369, 0x18f4: 0x0289, 0x18f5: 0x13d1,\n\t0x18f6: 0x0039, 0x18f7: 0x0ee9, 0x18f8: 0x1159, 0x18f9: 0x0ef9, 0x18fa: 0x0040, 0x18fb: 0x1199,\n\t0x18fc: 0x0040, 0x18fd: 0x0249, 0x18fe: 0x0f41, 0x18ff: 0x0259,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x0f51, 0x1901: 0x0359, 0x1902: 0x0f61, 0x1903: 0x0f71, 0x1904: 0x0040, 0x1905: 0x0f99,\n\t0x1906: 0x2039, 0x1907: 0x0269, 0x1908: 0x01d9, 0x1909: 0x0fa9, 0x190a: 0x0fb9, 0x190b: 0x1089,\n\t0x190c: 0x0279, 0x190d: 0x0369, 0x190e: 0x0289, 0x190f: 0x13d1, 0x1910: 0x0039, 0x1911: 0x0ee9,\n\t0x1912: 0x1159, 0x1913: 0x0ef9, 0x1914: 0x0f09, 0x1915: 0x1199, 0x1916: 0x0f31, 0x1917: 0x0249,\n\t0x1918: 0x0f41, 0x1919: 0x0259, 0x191a: 0x0f51, 0x191b: 0x0359, 0x191c: 0x0f61, 0x191d: 0x0f71,\n\t0x191e: 0x00d9, 0x191f: 0x0f99, 0x1920: 0x2039, 0x1921: 0x0269, 0x1922: 0x01d9, 0x1923: 0x0fa9,\n\t0x1924: 0x0fb9, 0x1925: 0x1089, 0x1926: 0x0279, 0x1927: 0x0369, 0x1928: 0x0289, 0x1929: 0x13d1,\n\t0x192a: 0x0039, 0x192b: 0x0ee9, 0x192c: 0x1159, 0x192d: 0x0ef9, 0x192e: 0x0f09, 0x192f: 0x1199,\n\t0x1930: 0x0f31, 0x1931: 0x0249, 0x1932: 0x0f41, 0x1933: 0x0259, 0x1934: 0x0f51, 0x1935: 0x0359,\n\t0x1936: 0x0f61, 0x1937: 0x0f71, 0x1938: 0x00d9, 0x1939: 0x0f99, 0x193a: 0x2039, 0x193b: 0x0269,\n\t0x193c: 0x01d9, 0x193d: 0x0fa9, 0x193e: 0x0fb9, 0x193f: 0x1089,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x0279, 0x1941: 0x0369, 0x1942: 0x0289, 0x1943: 0x13d1, 0x1944: 0x0039, 0x1945: 0x0ee9,\n\t0x1946: 0x0040, 0x1947: 0x0ef9, 0x1948: 0x0f09, 0x1949: 0x1199, 0x194a: 0x0f31, 0x194b: 0x0040,\n\t0x194c: 0x0040, 0x194d: 0x0259, 0x194e: 0x0f51, 0x194f: 0x0359, 0x1950: 0x0f61, 0x1951: 0x0f71,\n\t0x1952: 0x00d9, 0x1953: 0x0f99, 0x1954: 0x2039, 0x1955: 0x0040, 0x1956: 0x01d9, 0x1957: 0x0fa9,\n\t0x1958: 0x0fb9, 0x1959: 0x1089, 0x195a: 0x0279, 0x195b: 0x0369, 0x195c: 0x0289, 0x195d: 0x0040,\n\t0x195e: 0x0039, 0x195f: 0x0ee9, 0x1960: 0x1159, 0x1961: 0x0ef9, 0x1962: 0x0f09, 0x1963: 0x1199,\n\t0x1964: 0x0f31, 0x1965: 0x0249, 0x1966: 0x0f41, 0x1967: 0x0259, 0x1968: 0x0f51, 0x1969: 0x0359,\n\t0x196a: 0x0f61, 0x196b: 0x0f71, 0x196c: 0x00d9, 0x196d: 0x0f99, 0x196e: 0x2039, 0x196f: 0x0269,\n\t0x1970: 0x01d9, 0x1971: 0x0fa9, 0x1972: 0x0fb9, 0x1973: 0x1089, 0x1974: 0x0279, 0x1975: 0x0369,\n\t0x1976: 0x0289, 0x1977: 0x13d1, 0x1978: 0x0039, 0x1979: 0x0ee9, 0x197a: 0x0040, 0x197b: 0x0ef9,\n\t0x197c: 0x0f09, 0x197d: 0x1199, 0x197e: 0x0f31, 0x197f: 0x0040,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x0f41, 0x1981: 0x0259, 0x1982: 0x0f51, 0x1983: 0x0359, 0x1984: 0x0f61, 0x1985: 0x0040,\n\t0x1986: 0x00d9, 0x1987: 0x0040, 0x1988: 0x0040, 0x1989: 0x0040, 0x198a: 0x01d9, 0x198b: 0x0fa9,\n\t0x198c: 0x0fb9, 0x198d: 0x1089, 0x198e: 0x0279, 0x198f: 0x0369, 0x1990: 0x0289, 0x1991: 0x0040,\n\t0x1992: 0x0039, 0x1993: 0x0ee9, 0x1994: 0x1159, 0x1995: 0x0ef9, 0x1996: 0x0f09, 0x1997: 0x1199,\n\t0x1998: 0x0f31, 0x1999: 0x0249, 0x199a: 0x0f41, 0x199b: 0x0259, 0x199c: 0x0f51, 0x199d: 0x0359,\n\t0x199e: 0x0f61, 0x199f: 0x0f71, 0x19a0: 0x00d9, 0x19a1: 0x0f99, 0x19a2: 0x2039, 0x19a3: 0x0269,\n\t0x19a4: 0x01d9, 0x19a5: 0x0fa9, 0x19a6: 0x0fb9, 0x19a7: 0x1089, 0x19a8: 0x0279, 0x19a9: 0x0369,\n\t0x19aa: 0x0289, 0x19ab: 0x13d1, 0x19ac: 0x0039, 0x19ad: 0x0ee9, 0x19ae: 0x1159, 0x19af: 0x0ef9,\n\t0x19b0: 0x0f09, 0x19b1: 0x1199, 0x19b2: 0x0f31, 0x19b3: 0x0249, 0x19b4: 0x0f41, 0x19b5: 0x0259,\n\t0x19b6: 0x0f51, 0x19b7: 0x0359, 0x19b8: 0x0f61, 0x19b9: 0x0f71, 0x19ba: 0x00d9, 0x19bb: 0x0f99,\n\t0x19bc: 0x2039, 0x19bd: 0x0269, 0x19be: 0x01d9, 0x19bf: 0x0fa9,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x0fb9, 0x19c1: 0x1089, 0x19c2: 0x0279, 0x19c3: 0x0369, 0x19c4: 0x0289, 0x19c5: 0x13d1,\n\t0x19c6: 0x0039, 0x19c7: 0x0ee9, 0x19c8: 0x1159, 0x19c9: 0x0ef9, 0x19ca: 0x0f09, 0x19cb: 0x1199,\n\t0x19cc: 0x0f31, 0x19cd: 0x0249, 0x19ce: 0x0f41, 0x19cf: 0x0259, 0x19d0: 0x0f51, 0x19d1: 0x0359,\n\t0x19d2: 0x0f61, 0x19d3: 0x0f71, 0x19d4: 0x00d9, 0x19d5: 0x0f99, 0x19d6: 0x2039, 0x19d7: 0x0269,\n\t0x19d8: 0x01d9, 0x19d9: 0x0fa9, 0x19da: 0x0fb9, 0x19db: 0x1089, 0x19dc: 0x0279, 0x19dd: 0x0369,\n\t0x19de: 0x0289, 0x19df: 0x13d1, 0x19e0: 0x0039, 0x19e1: 0x0ee9, 0x19e2: 0x1159, 0x19e3: 0x0ef9,\n\t0x19e4: 0x0f09, 0x19e5: 0x1199, 0x19e6: 0x0f31, 0x19e7: 0x0249, 0x19e8: 0x0f41, 0x19e9: 0x0259,\n\t0x19ea: 0x0f51, 0x19eb: 0x0359, 0x19ec: 0x0f61, 0x19ed: 0x0f71, 0x19ee: 0x00d9, 0x19ef: 0x0f99,\n\t0x19f0: 0x2039, 0x19f1: 0x0269, 0x19f2: 0x01d9, 0x19f3: 0x0fa9, 0x19f4: 0x0fb9, 0x19f5: 0x1089,\n\t0x19f6: 0x0279, 0x19f7: 0x0369, 0x19f8: 0x0289, 0x19f9: 0x13d1, 0x19fa: 0x0039, 0x19fb: 0x0ee9,\n\t0x19fc: 0x1159, 0x19fd: 0x0ef9, 0x19fe: 0x0f09, 0x19ff: 0x1199,\n\t// Block 0x68, offset 0x1a00\n\t0x1a00: 0x0f31, 0x1a01: 0x0249, 0x1a02: 0x0f41, 0x1a03: 0x0259, 0x1a04: 0x0f51, 0x1a05: 0x0359,\n\t0x1a06: 0x0f61, 0x1a07: 0x0f71, 0x1a08: 0x00d9, 0x1a09: 0x0f99, 0x1a0a: 0x2039, 0x1a0b: 0x0269,\n\t0x1a0c: 0x01d9, 0x1a0d: 0x0fa9, 0x1a0e: 0x0fb9, 0x1a0f: 0x1089, 0x1a10: 0x0279, 0x1a11: 0x0369,\n\t0x1a12: 0x0289, 0x1a13: 0x13d1, 0x1a14: 0x0039, 0x1a15: 0x0ee9, 0x1a16: 0x1159, 0x1a17: 0x0ef9,\n\t0x1a18: 0x0f09, 0x1a19: 0x1199, 0x1a1a: 0x0f31, 0x1a1b: 0x0249, 0x1a1c: 0x0f41, 0x1a1d: 0x0259,\n\t0x1a1e: 0x0f51, 0x1a1f: 0x0359, 0x1a20: 0x0f61, 0x1a21: 0x0f71, 0x1a22: 0x00d9, 0x1a23: 0x0f99,\n\t0x1a24: 0x2039, 0x1a25: 0x0269, 0x1a26: 0x01d9, 0x1a27: 0x0fa9, 0x1a28: 0x0fb9, 0x1a29: 0x1089,\n\t0x1a2a: 0x0279, 0x1a2b: 0x0369, 0x1a2c: 0x0289, 0x1a2d: 0x13d1, 0x1a2e: 0x0039, 0x1a2f: 0x0ee9,\n\t0x1a30: 0x1159, 0x1a31: 0x0ef9, 0x1a32: 0x0f09, 0x1a33: 0x1199, 0x1a34: 0x0f31, 0x1a35: 0x0249,\n\t0x1a36: 0x0f41, 0x1a37: 0x0259, 0x1a38: 0x0f51, 0x1a39: 0x0359, 0x1a3a: 0x0f61, 0x1a3b: 0x0f71,\n\t0x1a3c: 0x00d9, 0x1a3d: 0x0f99, 0x1a3e: 0x2039, 0x1a3f: 0x0269,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x01d9, 0x1a41: 0x0fa9, 0x1a42: 0x0fb9, 0x1a43: 0x1089, 0x1a44: 0x0279, 0x1a45: 0x0369,\n\t0x1a46: 0x0289, 0x1a47: 0x13d1, 0x1a48: 0x0039, 0x1a49: 0x0ee9, 0x1a4a: 0x1159, 0x1a4b: 0x0ef9,\n\t0x1a4c: 0x0f09, 0x1a4d: 0x1199, 0x1a4e: 0x0f31, 0x1a4f: 0x0249, 0x1a50: 0x0f41, 0x1a51: 0x0259,\n\t0x1a52: 0x0f51, 0x1a53: 0x0359, 0x1a54: 0x0f61, 0x1a55: 0x0f71, 0x1a56: 0x00d9, 0x1a57: 0x0f99,\n\t0x1a58: 0x2039, 0x1a59: 0x0269, 0x1a5a: 0x01d9, 0x1a5b: 0x0fa9, 0x1a5c: 0x0fb9, 0x1a5d: 0x1089,\n\t0x1a5e: 0x0279, 0x1a5f: 0x0369, 0x1a60: 0x0289, 0x1a61: 0x13d1, 0x1a62: 0x0039, 0x1a63: 0x0ee9,\n\t0x1a64: 0x1159, 0x1a65: 0x0ef9, 0x1a66: 0x0f09, 0x1a67: 0x1199, 0x1a68: 0x0f31, 0x1a69: 0x0249,\n\t0x1a6a: 0x0f41, 0x1a6b: 0x0259, 0x1a6c: 0x0f51, 0x1a6d: 0x0359, 0x1a6e: 0x0f61, 0x1a6f: 0x0f71,\n\t0x1a70: 0x00d9, 0x1a71: 0x0f99, 0x1a72: 0x2039, 0x1a73: 0x0269, 0x1a74: 0x01d9, 0x1a75: 0x0fa9,\n\t0x1a76: 0x0fb9, 0x1a77: 0x1089, 0x1a78: 0x0279, 0x1a79: 0x0369, 0x1a7a: 0x0289, 0x1a7b: 0x13d1,\n\t0x1a7c: 0x0039, 0x1a7d: 0x0ee9, 0x1a7e: 0x1159, 0x1a7f: 0x0ef9,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x0f09, 0x1a81: 0x1199, 0x1a82: 0x0f31, 0x1a83: 0x0249, 0x1a84: 0x0f41, 0x1a85: 0x0259,\n\t0x1a86: 0x0f51, 0x1a87: 0x0359, 0x1a88: 0x0f61, 0x1a89: 0x0f71, 0x1a8a: 0x00d9, 0x1a8b: 0x0f99,\n\t0x1a8c: 0x2039, 0x1a8d: 0x0269, 0x1a8e: 0x01d9, 0x1a8f: 0x0fa9, 0x1a90: 0x0fb9, 0x1a91: 0x1089,\n\t0x1a92: 0x0279, 0x1a93: 0x0369, 0x1a94: 0x0289, 0x1a95: 0x13d1, 0x1a96: 0x0039, 0x1a97: 0x0ee9,\n\t0x1a98: 0x1159, 0x1a99: 0x0ef9, 0x1a9a: 0x0f09, 0x1a9b: 0x1199, 0x1a9c: 0x0f31, 0x1a9d: 0x0249,\n\t0x1a9e: 0x0f41, 0x1a9f: 0x0259, 0x1aa0: 0x0f51, 0x1aa1: 0x0359, 0x1aa2: 0x0f61, 0x1aa3: 0x0f71,\n\t0x1aa4: 0x00d9, 0x1aa5: 0x0f99, 0x1aa6: 0x2039, 0x1aa7: 0x0269, 0x1aa8: 0x01d9, 0x1aa9: 0x0fa9,\n\t0x1aaa: 0x0fb9, 0x1aab: 0x1089, 0x1aac: 0x0279, 0x1aad: 0x0369, 0x1aae: 0x0289, 0x1aaf: 0x13d1,\n\t0x1ab0: 0x0039, 0x1ab1: 0x0ee9, 0x1ab2: 0x1159, 0x1ab3: 0x0ef9, 0x1ab4: 0x0f09, 0x1ab5: 0x1199,\n\t0x1ab6: 0x0f31, 0x1ab7: 0x0249, 0x1ab8: 0x0f41, 0x1ab9: 0x0259, 0x1aba: 0x0f51, 0x1abb: 0x0359,\n\t0x1abc: 0x0f61, 0x1abd: 0x0f71, 0x1abe: 0x00d9, 0x1abf: 0x0f99,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x2039, 0x1ac1: 0x0269, 0x1ac2: 0x01d9, 0x1ac3: 0x0fa9, 0x1ac4: 0x0fb9, 0x1ac5: 0x1089,\n\t0x1ac6: 0x0279, 0x1ac7: 0x0369, 0x1ac8: 0x0289, 0x1ac9: 0x13d1, 0x1aca: 0x0039, 0x1acb: 0x0ee9,\n\t0x1acc: 0x1159, 0x1acd: 0x0ef9, 0x1ace: 0x0f09, 0x1acf: 0x1199, 0x1ad0: 0x0f31, 0x1ad1: 0x0249,\n\t0x1ad2: 0x0f41, 0x1ad3: 0x0259, 0x1ad4: 0x0f51, 0x1ad5: 0x0359, 0x1ad6: 0x0f61, 0x1ad7: 0x0f71,\n\t0x1ad8: 0x00d9, 0x1ad9: 0x0f99, 0x1ada: 0x2039, 0x1adb: 0x0269, 0x1adc: 0x01d9, 0x1add: 0x0fa9,\n\t0x1ade: 0x0fb9, 0x1adf: 0x1089, 0x1ae0: 0x0279, 0x1ae1: 0x0369, 0x1ae2: 0x0289, 0x1ae3: 0x13d1,\n\t0x1ae4: 0xba81, 0x1ae5: 0xba99, 0x1ae6: 0x0040, 0x1ae7: 0x0040, 0x1ae8: 0xbab1, 0x1ae9: 0x1099,\n\t0x1aea: 0x10b1, 0x1aeb: 0x10c9, 0x1aec: 0xbac9, 0x1aed: 0xbae1, 0x1aee: 0xbaf9, 0x1aef: 0x1429,\n\t0x1af0: 0x1a31, 0x1af1: 0xbb11, 0x1af2: 0xbb29, 0x1af3: 0xbb41, 0x1af4: 0xbb59, 0x1af5: 0xbb71,\n\t0x1af6: 0xbb89, 0x1af7: 0x2109, 0x1af8: 0x1111, 0x1af9: 0x1429, 0x1afa: 0xbba1, 0x1afb: 0xbbb9,\n\t0x1afc: 0xbbd1, 0x1afd: 0x10e1, 0x1afe: 0x10f9, 0x1aff: 0xbbe9,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x2079, 0x1b01: 0xbc01, 0x1b02: 0xbab1, 0x1b03: 0x1099, 0x1b04: 0x10b1, 0x1b05: 0x10c9,\n\t0x1b06: 0xbac9, 0x1b07: 0xbae1, 0x1b08: 0xbaf9, 0x1b09: 0x1429, 0x1b0a: 0x1a31, 0x1b0b: 0xbb11,\n\t0x1b0c: 0xbb29, 0x1b0d: 0xbb41, 0x1b0e: 0xbb59, 0x1b0f: 0xbb71, 0x1b10: 0xbb89, 0x1b11: 0x2109,\n\t0x1b12: 0x1111, 0x1b13: 0xbba1, 0x1b14: 0xbba1, 0x1b15: 0xbbb9, 0x1b16: 0xbbd1, 0x1b17: 0x10e1,\n\t0x1b18: 0x10f9, 0x1b19: 0xbbe9, 0x1b1a: 0x2079, 0x1b1b: 0xbc21, 0x1b1c: 0xbac9, 0x1b1d: 0x1429,\n\t0x1b1e: 0xbb11, 0x1b1f: 0x10e1, 0x1b20: 0x1111, 0x1b21: 0x2109, 0x1b22: 0xbab1, 0x1b23: 0x1099,\n\t0x1b24: 0x10b1, 0x1b25: 0x10c9, 0x1b26: 0xbac9, 0x1b27: 0xbae1, 0x1b28: 0xbaf9, 0x1b29: 0x1429,\n\t0x1b2a: 0x1a31, 0x1b2b: 0xbb11, 0x1b2c: 0xbb29, 0x1b2d: 0xbb41, 0x1b2e: 0xbb59, 0x1b2f: 0xbb71,\n\t0x1b30: 0xbb89, 0x1b31: 0x2109, 0x1b32: 0x1111, 0x1b33: 0x1429, 0x1b34: 0xbba1, 0x1b35: 0xbbb9,\n\t0x1b36: 0xbbd1, 0x1b37: 0x10e1, 0x1b38: 0x10f9, 0x1b39: 0xbbe9, 0x1b3a: 0x2079, 0x1b3b: 0xbc01,\n\t0x1b3c: 0xbab1, 0x1b3d: 0x1099, 0x1b3e: 0x10b1, 0x1b3f: 0x10c9,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0xbac9, 0x1b41: 0xbae1, 0x1b42: 0xbaf9, 0x1b43: 0x1429, 0x1b44: 0x1a31, 0x1b45: 0xbb11,\n\t0x1b46: 0xbb29, 0x1b47: 0xbb41, 0x1b48: 0xbb59, 0x1b49: 0xbb71, 0x1b4a: 0xbb89, 0x1b4b: 0x2109,\n\t0x1b4c: 0x1111, 0x1b4d: 0xbba1, 0x1b4e: 0xbba1, 0x1b4f: 0xbbb9, 0x1b50: 0xbbd1, 0x1b51: 0x10e1,\n\t0x1b52: 0x10f9, 0x1b53: 0xbbe9, 0x1b54: 0x2079, 0x1b55: 0xbc21, 0x1b56: 0xbac9, 0x1b57: 0x1429,\n\t0x1b58: 0xbb11, 0x1b59: 0x10e1, 0x1b5a: 0x1111, 0x1b5b: 0x2109, 0x1b5c: 0xbab1, 0x1b5d: 0x1099,\n\t0x1b5e: 0x10b1, 0x1b5f: 0x10c9, 0x1b60: 0xbac9, 0x1b61: 0xbae1, 0x1b62: 0xbaf9, 0x1b63: 0x1429,\n\t0x1b64: 0x1a31, 0x1b65: 0xbb11, 0x1b66: 0xbb29, 0x1b67: 0xbb41, 0x1b68: 0xbb59, 0x1b69: 0xbb71,\n\t0x1b6a: 0xbb89, 0x1b6b: 0x2109, 0x1b6c: 0x1111, 0x1b6d: 0x1429, 0x1b6e: 0xbba1, 0x1b6f: 0xbbb9,\n\t0x1b70: 0xbbd1, 0x1b71: 0x10e1, 0x1b72: 0x10f9, 0x1b73: 0xbbe9, 0x1b74: 0x2079, 0x1b75: 0xbc01,\n\t0x1b76: 0xbab1, 0x1b77: 0x1099, 0x1b78: 0x10b1, 0x1b79: 0x10c9, 0x1b7a: 0xbac9, 0x1b7b: 0xbae1,\n\t0x1b7c: 0xbaf9, 0x1b7d: 0x1429, 0x1b7e: 0x1a31, 0x1b7f: 0xbb11,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0xbb29, 0x1b81: 0xbb41, 0x1b82: 0xbb59, 0x1b83: 0xbb71, 0x1b84: 0xbb89, 0x1b85: 0x2109,\n\t0x1b86: 0x1111, 0x1b87: 0xbba1, 0x1b88: 0xbba1, 0x1b89: 0xbbb9, 0x1b8a: 0xbbd1, 0x1b8b: 0x10e1,\n\t0x1b8c: 0x10f9, 0x1b8d: 0xbbe9, 0x1b8e: 0x2079, 0x1b8f: 0xbc21, 0x1b90: 0xbac9, 0x1b91: 0x1429,\n\t0x1b92: 0xbb11, 0x1b93: 0x10e1, 0x1b94: 0x1111, 0x1b95: 0x2109, 0x1b96: 0xbab1, 0x1b97: 0x1099,\n\t0x1b98: 0x10b1, 0x1b99: 0x10c9, 0x1b9a: 0xbac9, 0x1b9b: 0xbae1, 0x1b9c: 0xbaf9, 0x1b9d: 0x1429,\n\t0x1b9e: 0x1a31, 0x1b9f: 0xbb11, 0x1ba0: 0xbb29, 0x1ba1: 0xbb41, 0x1ba2: 0xbb59, 0x1ba3: 0xbb71,\n\t0x1ba4: 0xbb89, 0x1ba5: 0x2109, 0x1ba6: 0x1111, 0x1ba7: 0x1429, 0x1ba8: 0xbba1, 0x1ba9: 0xbbb9,\n\t0x1baa: 0xbbd1, 0x1bab: 0x10e1, 0x1bac: 0x10f9, 0x1bad: 0xbbe9, 0x1bae: 0x2079, 0x1baf: 0xbc01,\n\t0x1bb0: 0xbab1, 0x1bb1: 0x1099, 0x1bb2: 0x10b1, 0x1bb3: 0x10c9, 0x1bb4: 0xbac9, 0x1bb5: 0xbae1,\n\t0x1bb6: 0xbaf9, 0x1bb7: 0x1429, 0x1bb8: 0x1a31, 0x1bb9: 0xbb11, 0x1bba: 0xbb29, 0x1bbb: 0xbb41,\n\t0x1bbc: 0xbb59, 0x1bbd: 0xbb71, 0x1bbe: 0xbb89, 0x1bbf: 0x2109,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x1111, 0x1bc1: 0xbba1, 0x1bc2: 0xbba1, 0x1bc3: 0xbbb9, 0x1bc4: 0xbbd1, 0x1bc5: 0x10e1,\n\t0x1bc6: 0x10f9, 0x1bc7: 0xbbe9, 0x1bc8: 0x2079, 0x1bc9: 0xbc21, 0x1bca: 0xbac9, 0x1bcb: 0x1429,\n\t0x1bcc: 0xbb11, 0x1bcd: 0x10e1, 0x1bce: 0x1111, 0x1bcf: 0x2109, 0x1bd0: 0xbab1, 0x1bd1: 0x1099,\n\t0x1bd2: 0x10b1, 0x1bd3: 0x10c9, 0x1bd4: 0xbac9, 0x1bd5: 0xbae1, 0x1bd6: 0xbaf9, 0x1bd7: 0x1429,\n\t0x1bd8: 0x1a31, 0x1bd9: 0xbb11, 0x1bda: 0xbb29, 0x1bdb: 0xbb41, 0x1bdc: 0xbb59, 0x1bdd: 0xbb71,\n\t0x1bde: 0xbb89, 0x1bdf: 0x2109, 0x1be0: 0x1111, 0x1be1: 0x1429, 0x1be2: 0xbba1, 0x1be3: 0xbbb9,\n\t0x1be4: 0xbbd1, 0x1be5: 0x10e1, 0x1be6: 0x10f9, 0x1be7: 0xbbe9, 0x1be8: 0x2079, 0x1be9: 0xbc01,\n\t0x1bea: 0xbab1, 0x1beb: 0x1099, 0x1bec: 0x10b1, 0x1bed: 0x10c9, 0x1bee: 0xbac9, 0x1bef: 0xbae1,\n\t0x1bf0: 0xbaf9, 0x1bf1: 0x1429, 0x1bf2: 0x1a31, 0x1bf3: 0xbb11, 0x1bf4: 0xbb29, 0x1bf5: 0xbb41,\n\t0x1bf6: 0xbb59, 0x1bf7: 0xbb71, 0x1bf8: 0xbb89, 0x1bf9: 0x2109, 0x1bfa: 0x1111, 0x1bfb: 0xbba1,\n\t0x1bfc: 0xbba1, 0x1bfd: 0xbbb9, 0x1bfe: 0xbbd1, 0x1bff: 0x10e1,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0x10f9, 0x1c01: 0xbbe9, 0x1c02: 0x2079, 0x1c03: 0xbc21, 0x1c04: 0xbac9, 0x1c05: 0x1429,\n\t0x1c06: 0xbb11, 0x1c07: 0x10e1, 0x1c08: 0x1111, 0x1c09: 0x2109, 0x1c0a: 0xbc41, 0x1c0b: 0xbc41,\n\t0x1c0c: 0x0040, 0x1c0d: 0x0040, 0x1c0e: 0x1f41, 0x1c0f: 0x00c9, 0x1c10: 0x0069, 0x1c11: 0x0079,\n\t0x1c12: 0x1f51, 0x1c13: 0x1f61, 0x1c14: 0x1f71, 0x1c15: 0x1f81, 0x1c16: 0x1f91, 0x1c17: 0x1fa1,\n\t0x1c18: 0x1f41, 0x1c19: 0x00c9, 0x1c1a: 0x0069, 0x1c1b: 0x0079, 0x1c1c: 0x1f51, 0x1c1d: 0x1f61,\n\t0x1c1e: 0x1f71, 0x1c1f: 0x1f81, 0x1c20: 0x1f91, 0x1c21: 0x1fa1, 0x1c22: 0x1f41, 0x1c23: 0x00c9,\n\t0x1c24: 0x0069, 0x1c25: 0x0079, 0x1c26: 0x1f51, 0x1c27: 0x1f61, 0x1c28: 0x1f71, 0x1c29: 0x1f81,\n\t0x1c2a: 0x1f91, 0x1c2b: 0x1fa1, 0x1c2c: 0x1f41, 0x1c2d: 0x00c9, 0x1c2e: 0x0069, 0x1c2f: 0x0079,\n\t0x1c30: 0x1f51, 0x1c31: 0x1f61, 0x1c32: 0x1f71, 0x1c33: 0x1f81, 0x1c34: 0x1f91, 0x1c35: 0x1fa1,\n\t0x1c36: 0x1f41, 0x1c37: 0x00c9, 0x1c38: 0x0069, 0x1c39: 0x0079, 0x1c3a: 0x1f51, 0x1c3b: 0x1f61,\n\t0x1c3c: 0x1f71, 0x1c3d: 0x1f81, 0x1c3e: 0x1f91, 0x1c3f: 0x1fa1,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0xe115, 0x1c41: 0xe115, 0x1c42: 0xe135, 0x1c43: 0xe135, 0x1c44: 0xe115, 0x1c45: 0xe115,\n\t0x1c46: 0xe175, 0x1c47: 0xe175, 0x1c48: 0xe115, 0x1c49: 0xe115, 0x1c4a: 0xe135, 0x1c4b: 0xe135,\n\t0x1c4c: 0xe115, 0x1c4d: 0xe115, 0x1c4e: 0xe1f5, 0x1c4f: 0xe1f5, 0x1c50: 0xe115, 0x1c51: 0xe115,\n\t0x1c52: 0xe135, 0x1c53: 0xe135, 0x1c54: 0xe115, 0x1c55: 0xe115, 0x1c56: 0xe175, 0x1c57: 0xe175,\n\t0x1c58: 0xe115, 0x1c59: 0xe115, 0x1c5a: 0xe135, 0x1c5b: 0xe135, 0x1c5c: 0xe115, 0x1c5d: 0xe115,\n\t0x1c5e: 0x8b05, 0x1c5f: 0x8b05, 0x1c60: 0x04b5, 0x1c61: 0x04b5, 0x1c62: 0x0a08, 0x1c63: 0x0a08,\n\t0x1c64: 0x0a08, 0x1c65: 0x0a08, 0x1c66: 0x0a08, 0x1c67: 0x0a08, 0x1c68: 0x0a08, 0x1c69: 0x0a08,\n\t0x1c6a: 0x0a08, 0x1c6b: 0x0a08, 0x1c6c: 0x0a08, 0x1c6d: 0x0a08, 0x1c6e: 0x0a08, 0x1c6f: 0x0a08,\n\t0x1c70: 0x0a08, 0x1c71: 0x0a08, 0x1c72: 0x0a08, 0x1c73: 0x0a08, 0x1c74: 0x0a08, 0x1c75: 0x0a08,\n\t0x1c76: 0x0a08, 0x1c77: 0x0a08, 0x1c78: 0x0a08, 0x1c79: 0x0a08, 0x1c7a: 0x0a08, 0x1c7b: 0x0a08,\n\t0x1c7c: 0x0a08, 0x1c7d: 0x0a08, 0x1c7e: 0x0a08, 0x1c7f: 0x0a08,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0x0040, 0x1c85: 0xb411,\n\t0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0xb399, 0x1c8b: 0xb3b1,\n\t0x1c8c: 0xb3c9, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0xb369, 0x1c91: 0xb2d9,\n\t0x1c92: 0xb381, 0x1c93: 0xb279, 0x1c94: 0xb2c1, 0x1c95: 0xb1d1, 0x1c96: 0xb1e9, 0x1c97: 0xb231,\n\t0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0xbc59, 0x1c9d: 0x7949,\n\t0x1c9e: 0xbc71, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040,\n\t0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0x0040, 0x1ca9: 0xb429,\n\t0x1caa: 0xb399, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339,\n\t0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1,\n\t0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0x0040, 0x1cbb: 0xb351,\n\t0x1cbc: 0x0040, 0x1cbd: 0x0040, 0x1cbe: 0x0040, 0x1cbf: 0x0040,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x0040, 0x1cc1: 0x0040, 0x1cc2: 0xb201, 0x1cc3: 0x0040, 0x1cc4: 0x0040, 0x1cc5: 0x0040,\n\t0x1cc6: 0x0040, 0x1cc7: 0xb219, 0x1cc8: 0x0040, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1,\n\t0x1ccc: 0x0040, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0x0040, 0x1cd1: 0xb2d9,\n\t0x1cd2: 0xb381, 0x1cd3: 0x0040, 0x1cd4: 0xb2c1, 0x1cd5: 0x0040, 0x1cd6: 0x0040, 0x1cd7: 0xb231,\n\t0x1cd8: 0x0040, 0x1cd9: 0xb2f1, 0x1cda: 0x0040, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x7949,\n\t0x1cde: 0x0040, 0x1cdf: 0xbc89, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0x0040,\n\t0x1ce4: 0xb3f9, 0x1ce5: 0x0040, 0x1ce6: 0x0040, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429,\n\t0x1cea: 0xb399, 0x1ceb: 0x0040, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339,\n\t0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0x0040, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1,\n\t0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0x0040, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351,\n\t0x1cfc: 0xbc59, 0x1cfd: 0x0040, 0x1cfe: 0xbc71, 0x1cff: 0x0040,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0xb189, 0x1d01: 0xb1a1, 0x1d02: 0xb201, 0x1d03: 0xb249, 0x1d04: 0xb3f9, 0x1d05: 0xb411,\n\t0x1d06: 0xb291, 0x1d07: 0xb219, 0x1d08: 0xb309, 0x1d09: 0xb429, 0x1d0a: 0x0040, 0x1d0b: 0xb3b1,\n\t0x1d0c: 0xb3c9, 0x1d0d: 0xb3e1, 0x1d0e: 0xb2a9, 0x1d0f: 0xb339, 0x1d10: 0xb369, 0x1d11: 0xb2d9,\n\t0x1d12: 0xb381, 0x1d13: 0xb279, 0x1d14: 0xb2c1, 0x1d15: 0xb1d1, 0x1d16: 0xb1e9, 0x1d17: 0xb231,\n\t0x1d18: 0xb261, 0x1d19: 0xb2f1, 0x1d1a: 0xb321, 0x1d1b: 0xb351, 0x1d1c: 0x0040, 0x1d1d: 0x0040,\n\t0x1d1e: 0x0040, 0x1d1f: 0x0040, 0x1d20: 0x0040, 0x1d21: 0xb1a1, 0x1d22: 0xb201, 0x1d23: 0xb249,\n\t0x1d24: 0x0040, 0x1d25: 0xb411, 0x1d26: 0xb291, 0x1d27: 0xb219, 0x1d28: 0xb309, 0x1d29: 0xb429,\n\t0x1d2a: 0x0040, 0x1d2b: 0xb3b1, 0x1d2c: 0xb3c9, 0x1d2d: 0xb3e1, 0x1d2e: 0xb2a9, 0x1d2f: 0xb339,\n\t0x1d30: 0xb369, 0x1d31: 0xb2d9, 0x1d32: 0xb381, 0x1d33: 0xb279, 0x1d34: 0xb2c1, 0x1d35: 0xb1d1,\n\t0x1d36: 0xb1e9, 0x1d37: 0xb231, 0x1d38: 0xb261, 0x1d39: 0xb2f1, 0x1d3a: 0xb321, 0x1d3b: 0xb351,\n\t0x1d3c: 0x0040, 0x1d3d: 0x0040, 0x1d3e: 0x0040, 0x1d3f: 0x0040,\n\t// Block 0x75, offset 0x1d40\n\t0x1d40: 0x0040, 0x1d41: 0xbca2, 0x1d42: 0xbcba, 0x1d43: 0xbcd2, 0x1d44: 0xbcea, 0x1d45: 0xbd02,\n\t0x1d46: 0xbd1a, 0x1d47: 0xbd32, 0x1d48: 0xbd4a, 0x1d49: 0xbd62, 0x1d4a: 0xbd7a, 0x1d4b: 0x0018,\n\t0x1d4c: 0x0018, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xbd92, 0x1d51: 0xbdb2,\n\t0x1d52: 0xbdd2, 0x1d53: 0xbdf2, 0x1d54: 0xbe12, 0x1d55: 0xbe32, 0x1d56: 0xbe52, 0x1d57: 0xbe72,\n\t0x1d58: 0xbe92, 0x1d59: 0xbeb2, 0x1d5a: 0xbed2, 0x1d5b: 0xbef2, 0x1d5c: 0xbf12, 0x1d5d: 0xbf32,\n\t0x1d5e: 0xbf52, 0x1d5f: 0xbf72, 0x1d60: 0xbf92, 0x1d61: 0xbfb2, 0x1d62: 0xbfd2, 0x1d63: 0xbff2,\n\t0x1d64: 0xc012, 0x1d65: 0xc032, 0x1d66: 0xc052, 0x1d67: 0xc072, 0x1d68: 0xc092, 0x1d69: 0xc0b2,\n\t0x1d6a: 0xc0d1, 0x1d6b: 0x1159, 0x1d6c: 0x0269, 0x1d6d: 0x6671, 0x1d6e: 0xc111, 0x1d6f: 0x0018,\n\t0x1d70: 0x0039, 0x1d71: 0x0ee9, 0x1d72: 0x1159, 0x1d73: 0x0ef9, 0x1d74: 0x0f09, 0x1d75: 0x1199,\n\t0x1d76: 0x0f31, 0x1d77: 0x0249, 0x1d78: 0x0f41, 0x1d79: 0x0259, 0x1d7a: 0x0f51, 0x1d7b: 0x0359,\n\t0x1d7c: 0x0f61, 0x1d7d: 0x0f71, 0x1d7e: 0x00d9, 0x1d7f: 0x0f99,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0x2039, 0x1d81: 0x0269, 0x1d82: 0x01d9, 0x1d83: 0x0fa9, 0x1d84: 0x0fb9, 0x1d85: 0x1089,\n\t0x1d86: 0x0279, 0x1d87: 0x0369, 0x1d88: 0x0289, 0x1d89: 0x13d1, 0x1d8a: 0xc129, 0x1d8b: 0x65b1,\n\t0x1d8c: 0xc141, 0x1d8d: 0x1441, 0x1d8e: 0xc159, 0x1d8f: 0xc179, 0x1d90: 0x0018, 0x1d91: 0x0018,\n\t0x1d92: 0x0018, 0x1d93: 0x0018, 0x1d94: 0x0018, 0x1d95: 0x0018, 0x1d96: 0x0018, 0x1d97: 0x0018,\n\t0x1d98: 0x0018, 0x1d99: 0x0018, 0x1d9a: 0x0018, 0x1d9b: 0x0018, 0x1d9c: 0x0018, 0x1d9d: 0x0018,\n\t0x1d9e: 0x0018, 0x1d9f: 0x0018, 0x1da0: 0x0018, 0x1da1: 0x0018, 0x1da2: 0x0018, 0x1da3: 0x0018,\n\t0x1da4: 0x0018, 0x1da5: 0x0018, 0x1da6: 0x0018, 0x1da7: 0x0018, 0x1da8: 0x0018, 0x1da9: 0x0018,\n\t0x1daa: 0xc191, 0x1dab: 0xc1a9, 0x1dac: 0x0040, 0x1dad: 0x0040, 0x1dae: 0x0040, 0x1daf: 0x0040,\n\t0x1db0: 0x0018, 0x1db1: 0x0018, 0x1db2: 0x0018, 0x1db3: 0x0018, 0x1db4: 0x0018, 0x1db5: 0x0018,\n\t0x1db6: 0x0018, 0x1db7: 0x0018, 0x1db8: 0x0018, 0x1db9: 0x0018, 0x1dba: 0x0018, 0x1dbb: 0x0018,\n\t0x1dbc: 0x0018, 0x1dbd: 0x0018, 0x1dbe: 0x0018, 0x1dbf: 0x0018,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dc0: 0xc1d9, 0x1dc1: 0xc211, 0x1dc2: 0xc249, 0x1dc3: 0x0040, 0x1dc4: 0x0040, 0x1dc5: 0x0040,\n\t0x1dc6: 0x0040, 0x1dc7: 0x0040, 0x1dc8: 0x0040, 0x1dc9: 0x0040, 0x1dca: 0x0040, 0x1dcb: 0x0040,\n\t0x1dcc: 0x0040, 0x1dcd: 0x0040, 0x1dce: 0x0040, 0x1dcf: 0x0040, 0x1dd0: 0xc269, 0x1dd1: 0xc289,\n\t0x1dd2: 0xc2a9, 0x1dd3: 0xc2c9, 0x1dd4: 0xc2e9, 0x1dd5: 0xc309, 0x1dd6: 0xc329, 0x1dd7: 0xc349,\n\t0x1dd8: 0xc369, 0x1dd9: 0xc389, 0x1dda: 0xc3a9, 0x1ddb: 0xc3c9, 0x1ddc: 0xc3e9, 0x1ddd: 0xc409,\n\t0x1dde: 0xc429, 0x1ddf: 0xc449, 0x1de0: 0xc469, 0x1de1: 0xc489, 0x1de2: 0xc4a9, 0x1de3: 0xc4c9,\n\t0x1de4: 0xc4e9, 0x1de5: 0xc509, 0x1de6: 0xc529, 0x1de7: 0xc549, 0x1de8: 0xc569, 0x1de9: 0xc589,\n\t0x1dea: 0xc5a9, 0x1deb: 0xc5c9, 0x1dec: 0xc5e9, 0x1ded: 0xc609, 0x1dee: 0xc629, 0x1def: 0xc649,\n\t0x1df0: 0xc669, 0x1df1: 0xc689, 0x1df2: 0xc6a9, 0x1df3: 0xc6c9, 0x1df4: 0xc6e9, 0x1df5: 0xc709,\n\t0x1df6: 0xc729, 0x1df7: 0xc749, 0x1df8: 0xc769, 0x1df9: 0xc789, 0x1dfa: 0xc7a9, 0x1dfb: 0xc7c9,\n\t0x1dfc: 0x0040, 0x1dfd: 0x0040, 0x1dfe: 0x0040, 0x1dff: 0x0040,\n\t// Block 0x78, offset 0x1e00\n\t0x1e00: 0xcaf9, 0x1e01: 0xcb19, 0x1e02: 0xcb39, 0x1e03: 0x8b1d, 0x1e04: 0xcb59, 0x1e05: 0xcb79,\n\t0x1e06: 0xcb99, 0x1e07: 0xcbb9, 0x1e08: 0xcbd9, 0x1e09: 0xcbf9, 0x1e0a: 0xcc19, 0x1e0b: 0xcc39,\n\t0x1e0c: 0xcc59, 0x1e0d: 0x8b3d, 0x1e0e: 0xcc79, 0x1e0f: 0xcc99, 0x1e10: 0xccb9, 0x1e11: 0xccd9,\n\t0x1e12: 0x8b5d, 0x1e13: 0xccf9, 0x1e14: 0xcd19, 0x1e15: 0xc429, 0x1e16: 0x8b7d, 0x1e17: 0xcd39,\n\t0x1e18: 0xcd59, 0x1e19: 0xcd79, 0x1e1a: 0xcd99, 0x1e1b: 0xcdb9, 0x1e1c: 0x8b9d, 0x1e1d: 0xcdd9,\n\t0x1e1e: 0xcdf9, 0x1e1f: 0xce19, 0x1e20: 0xce39, 0x1e21: 0xce59, 0x1e22: 0xc789, 0x1e23: 0xce79,\n\t0x1e24: 0xce99, 0x1e25: 0xceb9, 0x1e26: 0xced9, 0x1e27: 0xcef9, 0x1e28: 0xcf19, 0x1e29: 0xcf39,\n\t0x1e2a: 0xcf59, 0x1e2b: 0xcf79, 0x1e2c: 0xcf99, 0x1e2d: 0xcfb9, 0x1e2e: 0xcfd9, 0x1e2f: 0xcff9,\n\t0x1e30: 0xd019, 0x1e31: 0xd039, 0x1e32: 0xd039, 0x1e33: 0xd039, 0x1e34: 0x8bbd, 0x1e35: 0xd059,\n\t0x1e36: 0xd079, 0x1e37: 0xd099, 0x1e38: 0x8bdd, 0x1e39: 0xd0b9, 0x1e3a: 0xd0d9, 0x1e3b: 0xd0f9,\n\t0x1e3c: 0xd119, 0x1e3d: 0xd139, 0x1e3e: 0xd159, 0x1e3f: 0xd179,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0xd199, 0x1e41: 0xd1b9, 0x1e42: 0xd1d9, 0x1e43: 0xd1f9, 0x1e44: 0xd219, 0x1e45: 0xd239,\n\t0x1e46: 0xd239, 0x1e47: 0xd259, 0x1e48: 0xd279, 0x1e49: 0xd299, 0x1e4a: 0xd2b9, 0x1e4b: 0xd2d9,\n\t0x1e4c: 0xd2f9, 0x1e4d: 0xd319, 0x1e4e: 0xd339, 0x1e4f: 0xd359, 0x1e50: 0xd379, 0x1e51: 0xd399,\n\t0x1e52: 0xd3b9, 0x1e53: 0xd3d9, 0x1e54: 0xd3f9, 0x1e55: 0xd419, 0x1e56: 0xd439, 0x1e57: 0xd459,\n\t0x1e58: 0xd479, 0x1e59: 0x8bfd, 0x1e5a: 0xd499, 0x1e5b: 0xd4b9, 0x1e5c: 0xd4d9, 0x1e5d: 0xc309,\n\t0x1e5e: 0xd4f9, 0x1e5f: 0xd519, 0x1e60: 0x8c1d, 0x1e61: 0x8c3d, 0x1e62: 0xd539, 0x1e63: 0xd559,\n\t0x1e64: 0xd579, 0x1e65: 0xd599, 0x1e66: 0xd5b9, 0x1e67: 0xd5d9, 0x1e68: 0x2040, 0x1e69: 0xd5f9,\n\t0x1e6a: 0xd619, 0x1e6b: 0xd619, 0x1e6c: 0x8c5d, 0x1e6d: 0xd639, 0x1e6e: 0xd659, 0x1e6f: 0xd679,\n\t0x1e70: 0xd699, 0x1e71: 0x8c7d, 0x1e72: 0xd6b9, 0x1e73: 0xd6d9, 0x1e74: 0x2040, 0x1e75: 0xd6f9,\n\t0x1e76: 0xd719, 0x1e77: 0xd739, 0x1e78: 0xd759, 0x1e79: 0xd779, 0x1e7a: 0xd799, 0x1e7b: 0x8c9d,\n\t0x1e7c: 0xd7b9, 0x1e7d: 0x8cbd, 0x1e7e: 0xd7d9, 0x1e7f: 0xd7f9,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0xd819, 0x1e81: 0xd839, 0x1e82: 0xd859, 0x1e83: 0xd879, 0x1e84: 0xd899, 0x1e85: 0xd8b9,\n\t0x1e86: 0xd8d9, 0x1e87: 0xd8f9, 0x1e88: 0xd919, 0x1e89: 0x8cdd, 0x1e8a: 0xd939, 0x1e8b: 0xd959,\n\t0x1e8c: 0xd979, 0x1e8d: 0xd999, 0x1e8e: 0xd9b9, 0x1e8f: 0x8cfd, 0x1e90: 0xd9d9, 0x1e91: 0x8d1d,\n\t0x1e92: 0x8d3d, 0x1e93: 0xd9f9, 0x1e94: 0xda19, 0x1e95: 0xda19, 0x1e96: 0xda39, 0x1e97: 0x8d5d,\n\t0x1e98: 0x8d7d, 0x1e99: 0xda59, 0x1e9a: 0xda79, 0x1e9b: 0xda99, 0x1e9c: 0xdab9, 0x1e9d: 0xdad9,\n\t0x1e9e: 0xdaf9, 0x1e9f: 0xdb19, 0x1ea0: 0xdb39, 0x1ea1: 0xdb59, 0x1ea2: 0xdb79, 0x1ea3: 0xdb99,\n\t0x1ea4: 0x8d9d, 0x1ea5: 0xdbb9, 0x1ea6: 0xdbd9, 0x1ea7: 0xdbf9, 0x1ea8: 0xdc19, 0x1ea9: 0xdbf9,\n\t0x1eaa: 0xdc39, 0x1eab: 0xdc59, 0x1eac: 0xdc79, 0x1ead: 0xdc99, 0x1eae: 0xdcb9, 0x1eaf: 0xdcd9,\n\t0x1eb0: 0xdcf9, 0x1eb1: 0xdd19, 0x1eb2: 0xdd39, 0x1eb3: 0xdd59, 0x1eb4: 0xdd79, 0x1eb5: 0xdd99,\n\t0x1eb6: 0xddb9, 0x1eb7: 0xddd9, 0x1eb8: 0x8dbd, 0x1eb9: 0xddf9, 0x1eba: 0xde19, 0x1ebb: 0xde39,\n\t0x1ebc: 0xde59, 0x1ebd: 0xde79, 0x1ebe: 0x8ddd, 0x1ebf: 0xde99,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0xe599, 0x1ec1: 0xe5b9, 0x1ec2: 0xe5d9, 0x1ec3: 0xe5f9, 0x1ec4: 0xe619, 0x1ec5: 0xe639,\n\t0x1ec6: 0x8efd, 0x1ec7: 0xe659, 0x1ec8: 0xe679, 0x1ec9: 0xe699, 0x1eca: 0xe6b9, 0x1ecb: 0xe6d9,\n\t0x1ecc: 0xe6f9, 0x1ecd: 0x8f1d, 0x1ece: 0xe719, 0x1ecf: 0xe739, 0x1ed0: 0x8f3d, 0x1ed1: 0x8f5d,\n\t0x1ed2: 0xe759, 0x1ed3: 0xe779, 0x1ed4: 0xe799, 0x1ed5: 0xe7b9, 0x1ed6: 0xe7d9, 0x1ed7: 0xe7f9,\n\t0x1ed8: 0xe819, 0x1ed9: 0xe839, 0x1eda: 0xe859, 0x1edb: 0x8f7d, 0x1edc: 0xe879, 0x1edd: 0x8f9d,\n\t0x1ede: 0xe899, 0x1edf: 0x2040, 0x1ee0: 0xe8b9, 0x1ee1: 0xe8d9, 0x1ee2: 0xe8f9, 0x1ee3: 0x8fbd,\n\t0x1ee4: 0xe919, 0x1ee5: 0xe939, 0x1ee6: 0x8fdd, 0x1ee7: 0x8ffd, 0x1ee8: 0xe959, 0x1ee9: 0xe979,\n\t0x1eea: 0xe999, 0x1eeb: 0xe9b9, 0x1eec: 0xe9d9, 0x1eed: 0xe9d9, 0x1eee: 0xe9f9, 0x1eef: 0xea19,\n\t0x1ef0: 0xea39, 0x1ef1: 0xea59, 0x1ef2: 0xea79, 0x1ef3: 0xea99, 0x1ef4: 0xeab9, 0x1ef5: 0x901d,\n\t0x1ef6: 0xead9, 0x1ef7: 0x903d, 0x1ef8: 0xeaf9, 0x1ef9: 0x905d, 0x1efa: 0xeb19, 0x1efb: 0x907d,\n\t0x1efc: 0x909d, 0x1efd: 0x90bd, 0x1efe: 0xeb39, 0x1eff: 0xeb59,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0xeb79, 0x1f01: 0x90dd, 0x1f02: 0x90fd, 0x1f03: 0x911d, 0x1f04: 0x913d, 0x1f05: 0xeb99,\n\t0x1f06: 0xebb9, 0x1f07: 0xebb9, 0x1f08: 0xebd9, 0x1f09: 0xebf9, 0x1f0a: 0xec19, 0x1f0b: 0xec39,\n\t0x1f0c: 0xec59, 0x1f0d: 0x915d, 0x1f0e: 0xec79, 0x1f0f: 0xec99, 0x1f10: 0xecb9, 0x1f11: 0xecd9,\n\t0x1f12: 0x917d, 0x1f13: 0xecf9, 0x1f14: 0x919d, 0x1f15: 0x91bd, 0x1f16: 0xed19, 0x1f17: 0xed39,\n\t0x1f18: 0xed59, 0x1f19: 0xed79, 0x1f1a: 0xed99, 0x1f1b: 0xedb9, 0x1f1c: 0x91dd, 0x1f1d: 0x91fd,\n\t0x1f1e: 0x921d, 0x1f1f: 0x2040, 0x1f20: 0xedd9, 0x1f21: 0x923d, 0x1f22: 0xedf9, 0x1f23: 0xee19,\n\t0x1f24: 0xee39, 0x1f25: 0x925d, 0x1f26: 0xee59, 0x1f27: 0xee79, 0x1f28: 0xee99, 0x1f29: 0xeeb9,\n\t0x1f2a: 0xeed9, 0x1f2b: 0x927d, 0x1f2c: 0xeef9, 0x1f2d: 0xef19, 0x1f2e: 0xef39, 0x1f2f: 0xef59,\n\t0x1f30: 0xef79, 0x1f31: 0xef99, 0x1f32: 0x929d, 0x1f33: 0x92bd, 0x1f34: 0xefb9, 0x1f35: 0x92dd,\n\t0x1f36: 0xefd9, 0x1f37: 0x92fd, 0x1f38: 0xeff9, 0x1f39: 0xf019, 0x1f3a: 0xf039, 0x1f3b: 0x931d,\n\t0x1f3c: 0x933d, 0x1f3d: 0xf059, 0x1f3e: 0x935d, 0x1f3f: 0xf079,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f40: 0xf6b9, 0x1f41: 0xf6d9, 0x1f42: 0xf6f9, 0x1f43: 0xf719, 0x1f44: 0xf739, 0x1f45: 0x951d,\n\t0x1f46: 0xf759, 0x1f47: 0xf779, 0x1f48: 0xf799, 0x1f49: 0xf7b9, 0x1f4a: 0xf7d9, 0x1f4b: 0x953d,\n\t0x1f4c: 0x955d, 0x1f4d: 0xf7f9, 0x1f4e: 0xf819, 0x1f4f: 0xf839, 0x1f50: 0xf859, 0x1f51: 0xf879,\n\t0x1f52: 0xf899, 0x1f53: 0x957d, 0x1f54: 0xf8b9, 0x1f55: 0xf8d9, 0x1f56: 0xf8f9, 0x1f57: 0xf919,\n\t0x1f58: 0x959d, 0x1f59: 0x95bd, 0x1f5a: 0xf939, 0x1f5b: 0xf959, 0x1f5c: 0xf979, 0x1f5d: 0x95dd,\n\t0x1f5e: 0xf999, 0x1f5f: 0xf9b9, 0x1f60: 0x6815, 0x1f61: 0x95fd, 0x1f62: 0xf9d9, 0x1f63: 0xf9f9,\n\t0x1f64: 0xfa19, 0x1f65: 0x961d, 0x1f66: 0xfa39, 0x1f67: 0xfa59, 0x1f68: 0xfa79, 0x1f69: 0xfa99,\n\t0x1f6a: 0xfab9, 0x1f6b: 0xfad9, 0x1f6c: 0xfaf9, 0x1f6d: 0x963d, 0x1f6e: 0xfb19, 0x1f6f: 0xfb39,\n\t0x1f70: 0xfb59, 0x1f71: 0x965d, 0x1f72: 0xfb79, 0x1f73: 0xfb99, 0x1f74: 0xfbb9, 0x1f75: 0xfbd9,\n\t0x1f76: 0x7b35, 0x1f77: 0x967d, 0x1f78: 0xfbf9, 0x1f79: 0xfc19, 0x1f7a: 0xfc39, 0x1f7b: 0x969d,\n\t0x1f7c: 0xfc59, 0x1f7d: 0x96bd, 0x1f7e: 0xfc79, 0x1f7f: 0xfc79,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f80: 0xfc99, 0x1f81: 0x96dd, 0x1f82: 0xfcb9, 0x1f83: 0xfcd9, 0x1f84: 0xfcf9, 0x1f85: 0xfd19,\n\t0x1f86: 0xfd39, 0x1f87: 0xfd59, 0x1f88: 0xfd79, 0x1f89: 0x96fd, 0x1f8a: 0xfd99, 0x1f8b: 0xfdb9,\n\t0x1f8c: 0xfdd9, 0x1f8d: 0xfdf9, 0x1f8e: 0xfe19, 0x1f8f: 0xfe39, 0x1f90: 0x971d, 0x1f91: 0xfe59,\n\t0x1f92: 0x973d, 0x1f93: 0x975d, 0x1f94: 0x977d, 0x1f95: 0xfe79, 0x1f96: 0xfe99, 0x1f97: 0xfeb9,\n\t0x1f98: 0xfed9, 0x1f99: 0xfef9, 0x1f9a: 0xff19, 0x1f9b: 0xff39, 0x1f9c: 0xff59, 0x1f9d: 0x979d,\n\t0x1f9e: 0x0040, 0x1f9f: 0x0040, 0x1fa0: 0x0040, 0x1fa1: 0x0040, 0x1fa2: 0x0040, 0x1fa3: 0x0040,\n\t0x1fa4: 0x0040, 0x1fa5: 0x0040, 0x1fa6: 0x0040, 0x1fa7: 0x0040, 0x1fa8: 0x0040, 0x1fa9: 0x0040,\n\t0x1faa: 0x0040, 0x1fab: 0x0040, 0x1fac: 0x0040, 0x1fad: 0x0040, 0x1fae: 0x0040, 0x1faf: 0x0040,\n\t0x1fb0: 0x0040, 0x1fb1: 0x0040, 0x1fb2: 0x0040, 0x1fb3: 0x0040, 0x1fb4: 0x0040, 0x1fb5: 0x0040,\n\t0x1fb6: 0x0040, 0x1fb7: 0x0040, 0x1fb8: 0x0040, 0x1fb9: 0x0040, 0x1fba: 0x0040, 0x1fbb: 0x0040,\n\t0x1fbc: 0x0040, 0x1fbd: 0x0040, 0x1fbe: 0x0040, 0x1fbf: 0x0040,\n}\n\n// idnaIndex: 36 blocks, 2304 entries, 4608 bytes\n// Block 0 is the zero block.\nvar idnaIndex = [2304]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x7d, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05,\n\t0xc8: 0x06, 0xc9: 0x7e, 0xca: 0x7f, 0xcb: 0x07, 0xcc: 0x80, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a,\n\t0xd0: 0x81, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x82, 0xd6: 0x83, 0xd7: 0x84,\n\t0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x85, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x86, 0xde: 0x87, 0xdf: 0x88,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07,\n\t0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c,\n\t0xf0: 0x1d, 0xf1: 0x1e, 0xf2: 0x1e, 0xf3: 0x20, 0xf4: 0x21,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x89, 0x121: 0x13, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16,\n\t0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8d,\n\t0x130: 0x8e, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x8f, 0x135: 0x21, 0x136: 0x90, 0x137: 0x91,\n\t0x138: 0x92, 0x139: 0x93, 0x13a: 0x22, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x96,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e,\n\t0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6,\n\t0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f,\n\t0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae,\n\t0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6,\n\t0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe,\n\t0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc3,\n\t0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc4, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc5, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc6, 0x187: 0x9b,\n\t0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0x9b,\n\t0x190: 0xca, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b,\n\t0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b,\n\t0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b,\n\t0x1a8: 0xcb, 0x1a9: 0xcc, 0x1aa: 0x9b, 0x1ab: 0xcd, 0x1ac: 0x9b, 0x1ad: 0xce, 0x1ae: 0xcf, 0x1af: 0xd0,\n\t0x1b0: 0xd1, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd2, 0x1b5: 0xd3, 0x1b6: 0xd4, 0x1b7: 0xd5,\n\t0x1b8: 0xd6, 0x1b9: 0xd7, 0x1ba: 0xd8, 0x1bb: 0xd9, 0x1bc: 0xda, 0x1bd: 0xdb, 0x1be: 0xdc, 0x1bf: 0x37,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x38, 0x1c1: 0xdd, 0x1c2: 0xde, 0x1c3: 0xdf, 0x1c4: 0xe0, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe1,\n\t0x1c8: 0xe2, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0x3e, 0x1cd: 0x3f, 0x1ce: 0x40, 0x1cf: 0x41,\n\t0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f,\n\t0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f,\n\t0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f,\n\t0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f,\n\t0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f,\n\t0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f,\n\t0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f,\n\t0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f,\n\t0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f,\n\t0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f,\n\t0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f,\n\t0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b,\n\t0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f,\n\t0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f,\n\t0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f,\n\t0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f,\n\t0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f,\n\t0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f,\n\t0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f,\n\t0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f,\n\t0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f,\n\t0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f,\n\t0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f,\n\t0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f,\n\t0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f,\n\t0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f,\n\t0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe3,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f,\n\t0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f,\n\t0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe4, 0x2d3: 0xe5, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f,\n\t0x2d8: 0xe6, 0x2d9: 0x42, 0x2da: 0x43, 0x2db: 0xe7, 0x2dc: 0x44, 0x2dd: 0x45, 0x2de: 0x46, 0x2df: 0xe8,\n\t0x2e0: 0xe9, 0x2e1: 0xea, 0x2e2: 0xeb, 0x2e3: 0xec, 0x2e4: 0xed, 0x2e5: 0xee, 0x2e6: 0xef, 0x2e7: 0xf0,\n\t0x2e8: 0xf1, 0x2e9: 0xf2, 0x2ea: 0xf3, 0x2eb: 0xf4, 0x2ec: 0xf5, 0x2ed: 0xf6, 0x2ee: 0xf7, 0x2ef: 0xf8,\n\t0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f,\n\t0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f,\n\t0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f,\n\t0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f,\n\t0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xf9, 0x31f: 0xfa,\n\t// Block 0xd, offset 0x340\n\t0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba,\n\t0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba,\n\t0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba,\n\t0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba,\n\t0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba,\n\t0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba,\n\t0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba,\n\t0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba,\n\t0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba,\n\t0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba,\n\t0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba,\n\t0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfb, 0x3a5: 0xfc, 0x3a6: 0xfd, 0x3a7: 0xfe,\n\t0x3a8: 0x47, 0x3a9: 0xff, 0x3aa: 0x100, 0x3ab: 0x48, 0x3ac: 0x49, 0x3ad: 0x4a, 0x3ae: 0x4b, 0x3af: 0x4c,\n\t0x3b0: 0x101, 0x3b1: 0x4d, 0x3b2: 0x4e, 0x3b3: 0x4f, 0x3b4: 0x50, 0x3b5: 0x51, 0x3b6: 0x102, 0x3b7: 0x52,\n\t0x3b8: 0x53, 0x3b9: 0x54, 0x3ba: 0x55, 0x3bb: 0x56, 0x3bc: 0x57, 0x3bd: 0x58, 0x3be: 0x59, 0x3bf: 0x5a,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x103, 0x3c1: 0x104, 0x3c2: 0x9f, 0x3c3: 0x105, 0x3c4: 0x106, 0x3c5: 0x9b, 0x3c6: 0x107, 0x3c7: 0x108,\n\t0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x109, 0x3cb: 0x10a, 0x3cc: 0x10b, 0x3cd: 0x10c, 0x3ce: 0x10d, 0x3cf: 0x10e,\n\t0x3d0: 0x10f, 0x3d1: 0x9f, 0x3d2: 0x110, 0x3d3: 0x111, 0x3d4: 0x112, 0x3d5: 0x113, 0x3d6: 0xba, 0x3d7: 0xba,\n\t0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x114, 0x3dd: 0x115, 0x3de: 0xba, 0x3df: 0xba,\n\t0x3e0: 0x116, 0x3e1: 0x117, 0x3e2: 0x118, 0x3e3: 0x119, 0x3e4: 0x11a, 0x3e5: 0xba, 0x3e6: 0x11b, 0x3e7: 0x11c,\n\t0x3e8: 0x11d, 0x3e9: 0x11e, 0x3ea: 0x11f, 0x3eb: 0x5b, 0x3ec: 0x120, 0x3ed: 0x121, 0x3ee: 0x5c, 0x3ef: 0xba,\n\t0x3f0: 0x122, 0x3f1: 0x123, 0x3f2: 0x124, 0x3f3: 0x125, 0x3f4: 0x126, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba,\n\t0x3f8: 0xba, 0x3f9: 0x127, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0x128, 0x3fd: 0x129, 0x3fe: 0xba, 0x3ff: 0xba,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x12a, 0x401: 0x12b, 0x402: 0x12c, 0x403: 0x12d, 0x404: 0x12e, 0x405: 0x12f, 0x406: 0x130, 0x407: 0x131,\n\t0x408: 0x132, 0x409: 0xba, 0x40a: 0x133, 0x40b: 0x134, 0x40c: 0x5d, 0x40d: 0x5e, 0x40e: 0xba, 0x40f: 0xba,\n\t0x410: 0x135, 0x411: 0x136, 0x412: 0x137, 0x413: 0x138, 0x414: 0xba, 0x415: 0xba, 0x416: 0x139, 0x417: 0x13a,\n\t0x418: 0x13b, 0x419: 0x13c, 0x41a: 0x13d, 0x41b: 0x13e, 0x41c: 0x13f, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba,\n\t0x420: 0x140, 0x421: 0xba, 0x422: 0x141, 0x423: 0x142, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba,\n\t0x428: 0x143, 0x429: 0x144, 0x42a: 0x145, 0x42b: 0x146, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba,\n\t0x430: 0x147, 0x431: 0x148, 0x432: 0x149, 0x433: 0xba, 0x434: 0x14a, 0x435: 0x14b, 0x436: 0x14c, 0x437: 0xba,\n\t0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0x14d, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f,\n\t0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x14e, 0x44f: 0xba,\n\t0x450: 0x9b, 0x451: 0x14f, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x150, 0x456: 0xba, 0x457: 0xba,\n\t0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba,\n\t0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba,\n\t0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba,\n\t0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba,\n\t0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f,\n\t0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f,\n\t0x490: 0x151, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba,\n\t0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba,\n\t0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba,\n\t0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba,\n\t0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba,\n\t0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba,\n\t0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba,\n\t0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f,\n\t0x4d8: 0x9f, 0x4d9: 0x152, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba,\n\t0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba,\n\t0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba,\n\t0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba,\n\t0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba,\n\t// Block 0x14, offset 0x500\n\t0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba,\n\t0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba,\n\t0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba,\n\t0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba,\n\t0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f,\n\t0x528: 0x146, 0x529: 0x153, 0x52a: 0xba, 0x52b: 0x154, 0x52c: 0x155, 0x52d: 0x156, 0x52e: 0x157, 0x52f: 0xba,\n\t0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba,\n\t0x538: 0xba, 0x539: 0x158, 0x53a: 0x159, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x15a, 0x53e: 0x15b, 0x53f: 0x15c,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f,\n\t0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f,\n\t0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f,\n\t0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x15d,\n\t0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f,\n\t0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x15e, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba,\n\t0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba,\n\t0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x9f, 0x581: 0x9f, 0x582: 0x9f, 0x583: 0x9f, 0x584: 0x15f, 0x585: 0x160, 0x586: 0x9f, 0x587: 0x9f,\n\t0x588: 0x9f, 0x589: 0x9f, 0x58a: 0x9f, 0x58b: 0x161, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba,\n\t0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba,\n\t0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba,\n\t0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba,\n\t0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba,\n\t0x5b0: 0x9f, 0x5b1: 0x162, 0x5b2: 0x163, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba,\n\t0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x164, 0x5c4: 0x165, 0x5c5: 0x166, 0x5c6: 0x167, 0x5c7: 0x168,\n\t0x5c8: 0x9b, 0x5c9: 0x169, 0x5ca: 0xba, 0x5cb: 0x16a, 0x5cc: 0x9b, 0x5cd: 0x16b, 0x5ce: 0xba, 0x5cf: 0xba,\n\t0x5d0: 0x5f, 0x5d1: 0x60, 0x5d2: 0x61, 0x5d3: 0x62, 0x5d4: 0x63, 0x5d5: 0x64, 0x5d6: 0x65, 0x5d7: 0x66,\n\t0x5d8: 0x67, 0x5d9: 0x68, 0x5da: 0x69, 0x5db: 0x6a, 0x5dc: 0x6b, 0x5dd: 0x6c, 0x5de: 0x6d, 0x5df: 0x6e,\n\t0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b,\n\t0x5e8: 0x16c, 0x5e9: 0x16d, 0x5ea: 0x16e, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba,\n\t0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba,\n\t0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x16f, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba,\n\t0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba,\n\t0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba,\n\t0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba,\n\t0x620: 0x122, 0x621: 0x122, 0x622: 0x122, 0x623: 0x170, 0x624: 0x6f, 0x625: 0x171, 0x626: 0xba, 0x627: 0xba,\n\t0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba,\n\t0x630: 0xba, 0x631: 0x172, 0x632: 0x173, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba,\n\t0x638: 0x70, 0x639: 0x71, 0x63a: 0x72, 0x63b: 0x174, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x175, 0x641: 0x9b, 0x642: 0x176, 0x643: 0x177, 0x644: 0x73, 0x645: 0x74, 0x646: 0x178, 0x647: 0x179,\n\t0x648: 0x75, 0x649: 0x17a, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b,\n\t0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b,\n\t0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x17b, 0x65c: 0x9b, 0x65d: 0x17c, 0x65e: 0x9b, 0x65f: 0x17d,\n\t0x660: 0x17e, 0x661: 0x17f, 0x662: 0x180, 0x663: 0xba, 0x664: 0x181, 0x665: 0x182, 0x666: 0x183, 0x667: 0x184,\n\t0x668: 0xba, 0x669: 0x185, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba,\n\t0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba,\n\t0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f,\n\t0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f,\n\t0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f,\n\t0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x186, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f,\n\t0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f,\n\t0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f,\n\t0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f,\n\t0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f,\n\t0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f,\n\t0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f,\n\t0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x187, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f,\n\t0x6e0: 0x188, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f,\n\t0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f,\n\t0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f,\n\t0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f,\n\t0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f,\n\t0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f,\n\t0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f,\n\t0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f,\n\t0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f,\n\t0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f,\n\t0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x189, 0x73b: 0x9f, 0x73c: 0x9f, 0x73d: 0x9f, 0x73e: 0x9f, 0x73f: 0x9f,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x9f, 0x741: 0x9f, 0x742: 0x9f, 0x743: 0x9f, 0x744: 0x9f, 0x745: 0x9f, 0x746: 0x9f, 0x747: 0x9f,\n\t0x748: 0x9f, 0x749: 0x9f, 0x74a: 0x9f, 0x74b: 0x9f, 0x74c: 0x9f, 0x74d: 0x9f, 0x74e: 0x9f, 0x74f: 0x9f,\n\t0x750: 0x9f, 0x751: 0x9f, 0x752: 0x9f, 0x753: 0x9f, 0x754: 0x9f, 0x755: 0x9f, 0x756: 0x9f, 0x757: 0x9f,\n\t0x758: 0x9f, 0x759: 0x9f, 0x75a: 0x9f, 0x75b: 0x9f, 0x75c: 0x9f, 0x75d: 0x9f, 0x75e: 0x9f, 0x75f: 0x9f,\n\t0x760: 0x9f, 0x761: 0x9f, 0x762: 0x9f, 0x763: 0x9f, 0x764: 0x9f, 0x765: 0x9f, 0x766: 0x9f, 0x767: 0x9f,\n\t0x768: 0x9f, 0x769: 0x9f, 0x76a: 0x9f, 0x76b: 0x9f, 0x76c: 0x9f, 0x76d: 0x9f, 0x76e: 0x9f, 0x76f: 0x18a,\n\t0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba,\n\t0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0xba, 0x781: 0xba, 0x782: 0xba, 0x783: 0xba, 0x784: 0xba, 0x785: 0xba, 0x786: 0xba, 0x787: 0xba,\n\t0x788: 0xba, 0x789: 0xba, 0x78a: 0xba, 0x78b: 0xba, 0x78c: 0xba, 0x78d: 0xba, 0x78e: 0xba, 0x78f: 0xba,\n\t0x790: 0xba, 0x791: 0xba, 0x792: 0xba, 0x793: 0xba, 0x794: 0xba, 0x795: 0xba, 0x796: 0xba, 0x797: 0xba,\n\t0x798: 0xba, 0x799: 0xba, 0x79a: 0xba, 0x79b: 0xba, 0x79c: 0xba, 0x79d: 0xba, 0x79e: 0xba, 0x79f: 0xba,\n\t0x7a0: 0x76, 0x7a1: 0x77, 0x7a2: 0x78, 0x7a3: 0x18b, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x18c, 0x7a7: 0x7b,\n\t0x7a8: 0x7c, 0x7a9: 0xba, 0x7aa: 0xba, 0x7ab: 0xba, 0x7ac: 0xba, 0x7ad: 0xba, 0x7ae: 0xba, 0x7af: 0xba,\n\t0x7b0: 0xba, 0x7b1: 0xba, 0x7b2: 0xba, 0x7b3: 0xba, 0x7b4: 0xba, 0x7b5: 0xba, 0x7b6: 0xba, 0x7b7: 0xba,\n\t0x7b8: 0xba, 0x7b9: 0xba, 0x7ba: 0xba, 0x7bb: 0xba, 0x7bc: 0xba, 0x7bd: 0xba, 0x7be: 0xba, 0x7bf: 0xba,\n\t// Block 0x1f, offset 0x7c0\n\t0x7d0: 0x0d, 0x7d1: 0x0e, 0x7d2: 0x0f, 0x7d3: 0x10, 0x7d4: 0x11, 0x7d5: 0x0b, 0x7d6: 0x12, 0x7d7: 0x07,\n\t0x7d8: 0x13, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x14, 0x7dc: 0x0b, 0x7dd: 0x15, 0x7de: 0x16, 0x7df: 0x17,\n\t0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07,\n\t0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x18, 0x7eb: 0x19, 0x7ec: 0x1a, 0x7ed: 0x07, 0x7ee: 0x1b, 0x7ef: 0x1c,\n\t0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b,\n\t0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x0b, 0x801: 0x0b, 0x802: 0x0b, 0x803: 0x0b, 0x804: 0x0b, 0x805: 0x0b, 0x806: 0x0b, 0x807: 0x0b,\n\t0x808: 0x0b, 0x809: 0x0b, 0x80a: 0x0b, 0x80b: 0x0b, 0x80c: 0x0b, 0x80d: 0x0b, 0x80e: 0x0b, 0x80f: 0x0b,\n\t0x810: 0x0b, 0x811: 0x0b, 0x812: 0x0b, 0x813: 0x0b, 0x814: 0x0b, 0x815: 0x0b, 0x816: 0x0b, 0x817: 0x0b,\n\t0x818: 0x0b, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x0b, 0x81c: 0x0b, 0x81d: 0x0b, 0x81e: 0x0b, 0x81f: 0x0b,\n\t0x820: 0x0b, 0x821: 0x0b, 0x822: 0x0b, 0x823: 0x0b, 0x824: 0x0b, 0x825: 0x0b, 0x826: 0x0b, 0x827: 0x0b,\n\t0x828: 0x0b, 0x829: 0x0b, 0x82a: 0x0b, 0x82b: 0x0b, 0x82c: 0x0b, 0x82d: 0x0b, 0x82e: 0x0b, 0x82f: 0x0b,\n\t0x830: 0x0b, 0x831: 0x0b, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b,\n\t0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x18d, 0x841: 0x18e, 0x842: 0xba, 0x843: 0xba, 0x844: 0x18f, 0x845: 0x18f, 0x846: 0x18f, 0x847: 0x190,\n\t0x848: 0xba, 0x849: 0xba, 0x84a: 0xba, 0x84b: 0xba, 0x84c: 0xba, 0x84d: 0xba, 0x84e: 0xba, 0x84f: 0xba,\n\t0x850: 0xba, 0x851: 0xba, 0x852: 0xba, 0x853: 0xba, 0x854: 0xba, 0x855: 0xba, 0x856: 0xba, 0x857: 0xba,\n\t0x858: 0xba, 0x859: 0xba, 0x85a: 0xba, 0x85b: 0xba, 0x85c: 0xba, 0x85d: 0xba, 0x85e: 0xba, 0x85f: 0xba,\n\t0x860: 0xba, 0x861: 0xba, 0x862: 0xba, 0x863: 0xba, 0x864: 0xba, 0x865: 0xba, 0x866: 0xba, 0x867: 0xba,\n\t0x868: 0xba, 0x869: 0xba, 0x86a: 0xba, 0x86b: 0xba, 0x86c: 0xba, 0x86d: 0xba, 0x86e: 0xba, 0x86f: 0xba,\n\t0x870: 0xba, 0x871: 0xba, 0x872: 0xba, 0x873: 0xba, 0x874: 0xba, 0x875: 0xba, 0x876: 0xba, 0x877: 0xba,\n\t0x878: 0xba, 0x879: 0xba, 0x87a: 0xba, 0x87b: 0xba, 0x87c: 0xba, 0x87d: 0xba, 0x87e: 0xba, 0x87f: 0xba,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b,\n\t0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b,\n\t0x890: 0x0b, 0x891: 0x0b, 0x892: 0x0b, 0x893: 0x0b, 0x894: 0x0b, 0x895: 0x0b, 0x896: 0x0b, 0x897: 0x0b,\n\t0x898: 0x0b, 0x899: 0x0b, 0x89a: 0x0b, 0x89b: 0x0b, 0x89c: 0x0b, 0x89d: 0x0b, 0x89e: 0x0b, 0x89f: 0x0b,\n\t0x8a0: 0x1f, 0x8a1: 0x0b, 0x8a2: 0x0b, 0x8a3: 0x0b, 0x8a4: 0x0b, 0x8a5: 0x0b, 0x8a6: 0x0b, 0x8a7: 0x0b,\n\t0x8a8: 0x0b, 0x8a9: 0x0b, 0x8aa: 0x0b, 0x8ab: 0x0b, 0x8ac: 0x0b, 0x8ad: 0x0b, 0x8ae: 0x0b, 0x8af: 0x0b,\n\t0x8b0: 0x0b, 0x8b1: 0x0b, 0x8b2: 0x0b, 0x8b3: 0x0b, 0x8b4: 0x0b, 0x8b5: 0x0b, 0x8b6: 0x0b, 0x8b7: 0x0b,\n\t0x8b8: 0x0b, 0x8b9: 0x0b, 0x8ba: 0x0b, 0x8bb: 0x0b, 0x8bc: 0x0b, 0x8bd: 0x0b, 0x8be: 0x0b, 0x8bf: 0x0b,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b,\n\t0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b,\n}\n\n// idnaSparseOffset: 276 entries, 552 bytes\nvar idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x33, 0x3e, 0x4a, 0x4e, 0x5d, 0x62, 0x6c, 0x78, 0x86, 0x8b, 0x94, 0xa4, 0xb2, 0xbe, 0xca, 0xdb, 0xe5, 0xec, 0xf9, 0x10a, 0x111, 0x11c, 0x12b, 0x139, 0x143, 0x145, 0x14a, 0x14d, 0x150, 0x152, 0x15e, 0x169, 0x171, 0x177, 0x17d, 0x182, 0x187, 0x18a, 0x18e, 0x194, 0x199, 0x1a5, 0x1af, 0x1b5, 0x1c6, 0x1d0, 0x1d3, 0x1db, 0x1de, 0x1eb, 0x1f3, 0x1f7, 0x1fe, 0x206, 0x216, 0x222, 0x224, 0x22e, 0x23a, 0x246, 0x252, 0x25a, 0x25f, 0x269, 0x27a, 0x27e, 0x289, 0x28d, 0x296, 0x29e, 0x2a4, 0x2a9, 0x2ac, 0x2b0, 0x2b6, 0x2ba, 0x2be, 0x2c2, 0x2c7, 0x2cd, 0x2d5, 0x2dc, 0x2e7, 0x2f1, 0x2f5, 0x2f8, 0x2fe, 0x302, 0x304, 0x307, 0x309, 0x30c, 0x316, 0x319, 0x328, 0x32c, 0x331, 0x334, 0x338, 0x33d, 0x342, 0x348, 0x34e, 0x35d, 0x363, 0x367, 0x376, 0x37b, 0x383, 0x38d, 0x398, 0x3a0, 0x3b1, 0x3ba, 0x3ca, 0x3d7, 0x3e1, 0x3e6, 0x3f3, 0x3f7, 0x3fc, 0x3fe, 0x402, 0x404, 0x408, 0x411, 0x417, 0x41b, 0x42b, 0x435, 0x43a, 0x43d, 0x443, 0x44a, 0x44f, 0x453, 0x459, 0x45e, 0x467, 0x46c, 0x472, 0x479, 0x480, 0x487, 0x48b, 0x490, 0x493, 0x498, 0x4a4, 0x4aa, 0x4af, 0x4b6, 0x4be, 0x4c3, 0x4c7, 0x4d7, 0x4de, 0x4e2, 0x4e6, 0x4ed, 0x4ef, 0x4f2, 0x4f5, 0x4f9, 0x502, 0x506, 0x50e, 0x516, 0x51c, 0x525, 0x531, 0x538, 0x541, 0x54b, 0x552, 0x560, 0x56d, 0x57a, 0x583, 0x587, 0x596, 0x59e, 0x5a9, 0x5b2, 0x5b8, 0x5c0, 0x5c9, 0x5d3, 0x5d6, 0x5e2, 0x5eb, 0x5ee, 0x5f3, 0x5fe, 0x607, 0x613, 0x616, 0x620, 0x629, 0x635, 0x642, 0x64f, 0x65d, 0x664, 0x667, 0x66c, 0x66f, 0x672, 0x675, 0x67c, 0x683, 0x687, 0x692, 0x695, 0x698, 0x69b, 0x6a1, 0x6a6, 0x6aa, 0x6ad, 0x6b0, 0x6b3, 0x6b6, 0x6b9, 0x6be, 0x6c8, 0x6cb, 0x6cf, 0x6de, 0x6ea, 0x6ee, 0x6f3, 0x6f7, 0x6fc, 0x700, 0x705, 0x70e, 0x719, 0x71f, 0x727, 0x72a, 0x72d, 0x731, 0x735, 0x73b, 0x741, 0x746, 0x749, 0x759, 0x760, 0x763, 0x766, 0x76a, 0x770, 0x775, 0x77a, 0x782, 0x787, 0x78b, 0x78f, 0x792, 0x795, 0x799, 0x79d, 0x7a0, 0x7b0, 0x7c1, 0x7c6, 0x7c8, 0x7ca}\n\n// idnaSparseValues: 1997 entries, 7988 bytes\nvar idnaSparseValues = [1997]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe105, lo: 0x80, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0x97},\n\t{value: 0xe105, lo: 0x98, hi: 0x9e},\n\t{value: 0x001f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbf},\n\t// Block 0x1, offset 0x8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0xe01d, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0335, lo: 0x83, hi: 0x83},\n\t{value: 0x034d, lo: 0x84, hi: 0x84},\n\t{value: 0x0365, lo: 0x85, hi: 0x85},\n\t{value: 0xe00d, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0xe00d, lo: 0x88, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x89},\n\t{value: 0xe00d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe00d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0x8d},\n\t{value: 0xe00d, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0xbf},\n\t// Block 0x2, offset 0x19\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0249, lo: 0xb0, hi: 0xb0},\n\t{value: 0x037d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0259, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0269, lo: 0xb3, hi: 0xb3},\n\t{value: 0x034d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0395, lo: 0xb5, hi: 0xb5},\n\t{value: 0xe1bd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0279, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0289, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbf},\n\t// Block 0x3, offset 0x25\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x3308, lo: 0x80, hi: 0xbf},\n\t// Block 0x4, offset 0x27\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x03f5, lo: 0x80, hi: 0x8f},\n\t{value: 0xe105, lo: 0x90, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5, offset 0x2c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x0545, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x0008, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x6, offset 0x33\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0401, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0018, lo: 0x89, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7, offset 0x3e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0818, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x82},\n\t{value: 0x0818, lo: 0x83, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xae},\n\t{value: 0x0808, lo: 0xaf, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x8, offset 0x4a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0c08, lo: 0x88, hi: 0x99},\n\t{value: 0x0a08, lo: 0x9a, hi: 0xbf},\n\t// Block 0x9, offset 0x4e\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0c08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0a08, lo: 0x8e, hi: 0x98},\n\t{value: 0x0c08, lo: 0x99, hi: 0x9b},\n\t{value: 0x0a08, lo: 0x9c, hi: 0xaa},\n\t{value: 0x0c08, lo: 0xab, hi: 0xac},\n\t{value: 0x0a08, lo: 0xad, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0a08, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0c08, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xa, offset 0x5d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xb, offset 0x62\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0808, lo: 0x80, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbf},\n\t// Block 0xc, offset 0x6c\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x99},\n\t{value: 0x0808, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa3},\n\t{value: 0x0808, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa7},\n\t{value: 0x0808, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0818, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd, offset 0x78\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0a08, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0c08, lo: 0xaa, hi: 0xac},\n\t{value: 0x0808, lo: 0xad, hi: 0xad},\n\t{value: 0x0c08, lo: 0xae, hi: 0xae},\n\t{value: 0x0a08, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0a08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0a08, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xe, offset 0x86\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0xa1},\n\t{value: 0x0840, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xbf},\n\t// Block 0xf, offset 0x8b\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x10, offset 0x94\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x85},\n\t{value: 0x3008, lo: 0x86, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8c},\n\t{value: 0x3b08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x11, offset 0xa4\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x12, offset 0xb2\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xba},\n\t{value: 0x3b08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x13, offset 0xbe\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0040, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x14, offset 0xca\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x89},\n\t{value: 0x3b08, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x3008, lo: 0x98, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x15, offset 0xdb\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x08f1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb9},\n\t{value: 0x3b08, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x16, offset 0xe5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0xbf},\n\t// Block 0x17, offset 0xec\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0961, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0999, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0008, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x18, offset 0xf9\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe03d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x19, offset 0x10a\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0x1a, offset 0x111\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1b, offset 0x11c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3008, lo: 0xa2, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbf},\n\t// Block 0x1c, offset 0x12b\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x8c},\n\t{value: 0x3308, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x3008, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x1d, offset 0x139\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x86},\n\t{value: 0x055d, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8c},\n\t{value: 0x055d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe105, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x1e, offset 0x143\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0018, lo: 0x80, hi: 0xbf},\n\t// Block 0x1f, offset 0x145\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa0},\n\t{value: 0x2018, lo: 0xa1, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x20, offset 0x14a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa7},\n\t{value: 0x2018, lo: 0xa8, hi: 0xbf},\n\t// Block 0x21, offset 0x14d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2018, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0xbf},\n\t// Block 0x22, offset 0x150\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0008, lo: 0x80, hi: 0xbf},\n\t// Block 0x23, offset 0x152\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x24, offset 0x15e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x25, offset 0x169\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x26, offset 0x171\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x27, offset 0x177\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x28, offset 0x17d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x29, offset 0x182\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x2a, offset 0x187\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x2b, offset 0x18a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xbf},\n\t// Block 0x2c, offset 0x18e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2d, offset 0x194\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x2e, offset 0x199\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x3b08, lo: 0x94, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x2f, offset 0x1a5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x30, offset 0x1af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xb3},\n\t{value: 0x3340, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x31, offset 0x1b5\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x3008, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x91},\n\t{value: 0x3b08, lo: 0x92, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0x96},\n\t{value: 0x0008, lo: 0x97, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x32, offset 0x1c6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x86},\n\t{value: 0x0218, lo: 0x87, hi: 0x87},\n\t{value: 0x0018, lo: 0x88, hi: 0x8a},\n\t{value: 0x33c0, lo: 0x8b, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0208, lo: 0xa0, hi: 0xbf},\n\t// Block 0x33, offset 0x1d0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0208, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x34, offset 0x1d3\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0208, lo: 0x87, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0208, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x35, offset 0x1db\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x36, offset 0x1de\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x37, offset 0x1eb\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x38, offset 0x1f3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x39, offset 0x1f7\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0028, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xbf},\n\t// Block 0x3a, offset 0x1fe\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x3308, lo: 0x97, hi: 0x98},\n\t{value: 0x3008, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x3b, offset 0x206\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x94},\n\t{value: 0x3008, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xac},\n\t{value: 0x3008, lo: 0xad, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3c, offset 0x216\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbd},\n\t{value: 0x3318, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x222\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0040, lo: 0x80, hi: 0xbf},\n\t// Block 0x3e, offset 0x224\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3008, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x3f, offset 0x22e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x3808, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x40, offset 0x23a\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3808, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xbf},\n\t// Block 0x41, offset 0x246\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3008, lo: 0xaa, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3808, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x42, offset 0x252\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x43, offset 0x25a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x44, offset 0x25f\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0e29, lo: 0x80, hi: 0x80},\n\t{value: 0x0e41, lo: 0x81, hi: 0x81},\n\t{value: 0x0e59, lo: 0x82, hi: 0x82},\n\t{value: 0x0e71, lo: 0x83, hi: 0x83},\n\t{value: 0x0e89, lo: 0x84, hi: 0x85},\n\t{value: 0x0ea1, lo: 0x86, hi: 0x86},\n\t{value: 0x0eb9, lo: 0x87, hi: 0x87},\n\t{value: 0x057d, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0x45, offset 0x269\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x92},\n\t{value: 0x0018, lo: 0x93, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0008, lo: 0xa9, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x46, offset 0x27a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0x47, offset 0x27e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x87},\n\t{value: 0xe045, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0xe045, lo: 0x98, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0xe045, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbf},\n\t// Block 0x48, offset 0x289\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x3318, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x49, offset 0x28d\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x24c1, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x4a, offset 0x296\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x24f1, lo: 0xac, hi: 0xac},\n\t{value: 0x2529, lo: 0xad, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xae},\n\t{value: 0x2579, lo: 0xaf, hi: 0xaf},\n\t{value: 0x25b1, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x4b, offset 0x29e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x9f},\n\t{value: 0x0080, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xad},\n\t{value: 0x0080, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x4c, offset 0x2a4\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa8},\n\t{value: 0x09c5, lo: 0xa9, hi: 0xa9},\n\t{value: 0x09e5, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xbf},\n\t// Block 0x4d, offset 0x2a9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0x4e, offset 0x2ac\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x28c1, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x4f, offset 0x2b0\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0e66, lo: 0xb4, hi: 0xb4},\n\t{value: 0x292a, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0e86, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x50, offset 0x2b6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x9b},\n\t{value: 0x2941, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0xbf},\n\t// Block 0x51, offset 0x2ba\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x52, offset 0x2be\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0xbf},\n\t// Block 0x53, offset 0x2c2\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x54, offset 0x2c7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x03f5, lo: 0x90, hi: 0x9f},\n\t{value: 0x0ea5, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x55, offset 0x2cd\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x56, offset 0x2d5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xae},\n\t{value: 0xe075, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x57, offset 0x2dc\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x58, offset 0x2e7\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xbf},\n\t// Block 0x59, offset 0x2f1\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5a, offset 0x2f5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0xbf},\n\t// Block 0x5b, offset 0x2f8\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9e},\n\t{value: 0x0edd, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x5c, offset 0x2fe\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb2},\n\t{value: 0x0efd, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x5d, offset 0x302\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x0f1d, lo: 0x80, hi: 0xbf},\n\t// Block 0x5e, offset 0x304\n\t{value: 0x0020, lo: 0x02},\n\t{value: 0x171d, lo: 0x80, hi: 0x8f},\n\t{value: 0x18fd, lo: 0x90, hi: 0xbf},\n\t// Block 0x5f, offset 0x307\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x1efd, lo: 0x80, hi: 0xbf},\n\t// Block 0x60, offset 0x309\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x61, offset 0x30c\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9a},\n\t{value: 0x29e2, lo: 0x9b, hi: 0x9b},\n\t{value: 0x2a0a, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9e},\n\t{value: 0x2a31, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x62, offset 0x316\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x2a69, lo: 0xbf, hi: 0xbf},\n\t// Block 0x63, offset 0x319\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0040, lo: 0x80, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb0},\n\t{value: 0x2a1d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x2a3d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x2a5d, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2a7d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2a5d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2a9d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2abd, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2add, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2afd, lo: 0xba, hi: 0xbb},\n\t{value: 0x2b1d, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2afd, lo: 0xbe, hi: 0xbf},\n\t// Block 0x64, offset 0x328\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x65, offset 0x32c\n\t{value: 0x0030, lo: 0x04},\n\t{value: 0x2aa2, lo: 0x80, hi: 0x9d},\n\t{value: 0x305a, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x30a2, lo: 0xa0, hi: 0xbf},\n\t// Block 0x66, offset 0x331\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x67, offset 0x334\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x68, offset 0x338\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x69, offset 0x33d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x6a, offset 0x342\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0018, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6b, offset 0x348\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2009, lo: 0xb8, hi: 0xb8},\n\t{value: 0x6e89, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xbf},\n\t// Block 0x6c, offset 0x34e\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x3308, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0008, lo: 0x8c, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x6d, offset 0x35d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0208, lo: 0x80, hi: 0xb1},\n\t{value: 0x0108, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6e, offset 0x363\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xbf},\n\t// Block 0x6f, offset 0x367\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x70, offset 0x376\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x71, offset 0x37b\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x91},\n\t{value: 0x3008, lo: 0x92, hi: 0x92},\n\t{value: 0x3808, lo: 0x93, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x72, offset 0x383\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb9},\n\t{value: 0x3008, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x73, offset 0x38d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x74, offset 0x398\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x75, offset 0x3a0\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8c},\n\t{value: 0x3008, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x76, offset 0x3b1\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x77, offset 0x3ba\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x9a},\n\t{value: 0x0008, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3b08, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x78, offset 0x3ca\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x90},\n\t{value: 0x0008, lo: 0x91, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x79, offset 0x3d7\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4465, lo: 0x9c, hi: 0x9c},\n\t{value: 0x447d, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2971, lo: 0x9e, hi: 0x9e},\n\t{value: 0xe06d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xaf},\n\t{value: 0x4495, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7a, offset 0x3e1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x44b5, lo: 0x80, hi: 0x8f},\n\t{value: 0x44d5, lo: 0x90, hi: 0x9f},\n\t{value: 0x44f5, lo: 0xa0, hi: 0xaf},\n\t{value: 0x44d5, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7b, offset 0x3e6\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3b08, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x7c, offset 0x3f3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7d, offset 0x3f7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x7e, offset 0x3fc\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x4515, lo: 0x80, hi: 0xbf},\n\t// Block 0x7f, offset 0x3fe\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x4d15, lo: 0x80, hi: 0x94},\n\t{value: 0x4ad5, lo: 0x95, hi: 0x95},\n\t{value: 0x4fb5, lo: 0x96, hi: 0xbf},\n\t// Block 0x80, offset 0x402\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x54f5, lo: 0x80, hi: 0xbf},\n\t// Block 0x81, offset 0x404\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x5cf5, lo: 0x80, hi: 0x84},\n\t{value: 0x5655, lo: 0x85, hi: 0x85},\n\t{value: 0x5d95, lo: 0x86, hi: 0xbf},\n\t// Block 0x82, offset 0x408\n\t{value: 0x0020, lo: 0x08},\n\t{value: 0x6b55, lo: 0x80, hi: 0x8f},\n\t{value: 0x6d15, lo: 0x90, hi: 0x90},\n\t{value: 0x6d55, lo: 0x91, hi: 0xab},\n\t{value: 0x6ea1, lo: 0xac, hi: 0xac},\n\t{value: 0x70b5, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x70d5, lo: 0xb0, hi: 0xbf},\n\t// Block 0x83, offset 0x411\n\t{value: 0x0020, lo: 0x05},\n\t{value: 0x72d5, lo: 0x80, hi: 0xad},\n\t{value: 0x6535, lo: 0xae, hi: 0xae},\n\t{value: 0x7895, lo: 0xaf, hi: 0xb5},\n\t{value: 0x6f55, lo: 0xb6, hi: 0xb6},\n\t{value: 0x7975, lo: 0xb7, hi: 0xbf},\n\t// Block 0x84, offset 0x417\n\t{value: 0x0028, lo: 0x03},\n\t{value: 0x7c21, lo: 0x80, hi: 0x82},\n\t{value: 0x7be1, lo: 0x83, hi: 0x83},\n\t{value: 0x7c99, lo: 0x84, hi: 0xbf},\n\t// Block 0x85, offset 0x41b\n\t{value: 0x0038, lo: 0x0f},\n\t{value: 0x9db1, lo: 0x80, hi: 0x83},\n\t{value: 0x9e59, lo: 0x84, hi: 0x85},\n\t{value: 0x9e91, lo: 0x86, hi: 0x87},\n\t{value: 0x9ec9, lo: 0x88, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0xa089, lo: 0x92, hi: 0x97},\n\t{value: 0xa1a1, lo: 0x98, hi: 0x9c},\n\t{value: 0xa281, lo: 0x9d, hi: 0xb3},\n\t{value: 0x9d41, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9db1, lo: 0xb5, hi: 0xb5},\n\t{value: 0xa789, lo: 0xb6, hi: 0xbb},\n\t{value: 0xa869, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa7f9, lo: 0xbd, hi: 0xbd},\n\t{value: 0xa8d9, lo: 0xbe, hi: 0xbf},\n\t// Block 0x86, offset 0x42b\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0008, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x87, offset 0x435\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x88, offset 0x43a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x89, offset 0x43d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x8a, offset 0x443\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x8b, offset 0x44a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x8c, offset 0x44f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8d, offset 0x453\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x8e, offset 0x459\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xbf},\n\t// Block 0x8f, offset 0x45e\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x90, offset 0x467\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x91, offset 0x46c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x92, offset 0x472\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x97},\n\t{value: 0x8ad5, lo: 0x98, hi: 0x9f},\n\t{value: 0x8aed, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xbf},\n\t// Block 0x93, offset 0x479\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x8aed, lo: 0xb0, hi: 0xb7},\n\t{value: 0x8ad5, lo: 0xb8, hi: 0xbf},\n\t// Block 0x94, offset 0x480\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x95, offset 0x487\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x96, offset 0x48b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xae},\n\t{value: 0x0018, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x97, offset 0x490\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x98, offset 0x493\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xbf},\n\t// Block 0x99, offset 0x498\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0808, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0808, lo: 0x8a, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0808, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0808, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9a, offset 0x4a4\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0818, lo: 0x97, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0818, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9b, offset 0x4aa\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa6},\n\t{value: 0x0818, lo: 0xa7, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x9c, offset 0x4af\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x0818, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9d, offset 0x4b6\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0818, lo: 0x96, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0818, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9e, offset 0x4be\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbb},\n\t{value: 0x0818, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0808, lo: 0xbe, hi: 0xbf},\n\t// Block 0x9f, offset 0x4c3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0818, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x0818, lo: 0x92, hi: 0xbf},\n\t// Block 0xa0, offset 0x4c7\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x94},\n\t{value: 0x0808, lo: 0x95, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x98},\n\t{value: 0x0808, lo: 0x99, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa1, offset 0x4d7\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0818, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0818, lo: 0x90, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0818, lo: 0xbd, hi: 0xbf},\n\t// Block 0xa2, offset 0x4de\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xa3, offset 0x4e2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xbf},\n\t// Block 0xa4, offset 0x4e6\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0818, lo: 0x98, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb7},\n\t{value: 0x0818, lo: 0xb8, hi: 0xbf},\n\t// Block 0xa5, offset 0x4ed\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0808, lo: 0x80, hi: 0xbf},\n\t// Block 0xa6, offset 0x4ef\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0808, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xa7, offset 0x4f2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x03dd, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xa8, offset 0x4f5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xbf},\n\t// Block 0xa9, offset 0x4f9\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0908, lo: 0x80, hi: 0x80},\n\t{value: 0x0a08, lo: 0x81, hi: 0xa1},\n\t{value: 0x0c08, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0a08, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3308, lo: 0xa4, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xaa, offset 0x502\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0818, lo: 0xa0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xab, offset 0x506\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0xa6},\n\t{value: 0x0808, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0a08, lo: 0xb0, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0a08, lo: 0xb4, hi: 0xbf},\n\t// Block 0xac, offset 0x50e\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0a08, lo: 0x80, hi: 0x84},\n\t{value: 0x0808, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x90},\n\t{value: 0x0a18, lo: 0x91, hi: 0x93},\n\t{value: 0x0c18, lo: 0x94, hi: 0x94},\n\t{value: 0x0818, lo: 0x95, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xad, offset 0x516\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xae, offset 0x51c\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x91},\n\t{value: 0x0018, lo: 0x92, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xaf, offset 0x525\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0xb0, offset 0x531\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb1, offset 0x538\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb2},\n\t{value: 0x3b08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xbf},\n\t// Block 0xb2, offset 0x541\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb3, offset 0x54b\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb4, offset 0x552\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xb5, offset 0x560\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3808, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb6, offset 0x56d\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xb7, offset 0x57a\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x3308, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa9},\n\t{value: 0x3b08, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb8, offset 0x583\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xb9, offset 0x587\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xba, offset 0x596\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbb, offset 0x59e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x85},\n\t{value: 0x0018, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xbc, offset 0x5a9\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbd, offset 0x5b2\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9b},\n\t{value: 0x3308, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xbe, offset 0x5b8\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbf, offset 0x5c0\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xc0, offset 0x5c9\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb5},\n\t{value: 0x3808, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0xc1, offset 0x5d3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xc2, offset 0x5d6\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0xc3, offset 0x5e2\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xc4, offset 0x5eb\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xbf},\n\t// Block 0xc5, offset 0x5ee\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc6, offset 0x5f3\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc7, offset 0x5fe\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x3b08, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0xbf},\n\t// Block 0xc8, offset 0x607\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x98},\n\t{value: 0x3b08, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xbf},\n\t// Block 0xc9, offset 0x613\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xca, offset 0x616\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xcb, offset 0x620\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xbf},\n\t// Block 0xcc, offset 0x629\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xa9},\n\t{value: 0x3308, lo: 0xaa, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xcd, offset 0x635\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xce, offset 0x642\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xbf},\n\t// Block 0xcf, offset 0x64f\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x3008, lo: 0x93, hi: 0x94},\n\t{value: 0x3308, lo: 0x95, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x96},\n\t{value: 0x3b08, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xbf},\n\t// Block 0xd0, offset 0x65d\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xd1, offset 0x664\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xd2, offset 0x667\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xd3, offset 0x66c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xd4, offset 0x66f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xbf},\n\t// Block 0xd5, offset 0x672\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xbf},\n\t// Block 0xd6, offset 0x675\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xd7, offset 0x67c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xd8, offset 0x683\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0xd9, offset 0x687\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0xda, offset 0x692\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xdb, offset 0x695\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0xdc, offset 0x698\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0xdd, offset 0x69b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xde, offset 0x6a1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xdf, offset 0x6a6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xbf},\n\t// Block 0xe0, offset 0x6aa\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xe1, offset 0x6ad\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xe2, offset 0x6b0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xe3, offset 0x6b3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe4, offset 0x6b6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xe5, offset 0x6b9\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0xe6, offset 0x6be\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x03c0, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xe7, offset 0x6c8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xe8, offset 0x6cb\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xbf},\n\t// Block 0xe9, offset 0x6cf\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0xb5b9, lo: 0x9e, hi: 0x9e},\n\t{value: 0xb601, lo: 0x9f, hi: 0x9f},\n\t{value: 0xb649, lo: 0xa0, hi: 0xa0},\n\t{value: 0xb6b1, lo: 0xa1, hi: 0xa1},\n\t{value: 0xb719, lo: 0xa2, hi: 0xa2},\n\t{value: 0xb781, lo: 0xa3, hi: 0xa3},\n\t{value: 0xb7e9, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3018, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3318, lo: 0xa7, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xac},\n\t{value: 0x3018, lo: 0xad, hi: 0xb2},\n\t{value: 0x0340, lo: 0xb3, hi: 0xba},\n\t{value: 0x3318, lo: 0xbb, hi: 0xbf},\n\t// Block 0xea, offset 0x6de\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3318, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x84},\n\t{value: 0x3318, lo: 0x85, hi: 0x8b},\n\t{value: 0x0018, lo: 0x8c, hi: 0xa9},\n\t{value: 0x3318, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xba},\n\t{value: 0xb851, lo: 0xbb, hi: 0xbb},\n\t{value: 0xb899, lo: 0xbc, hi: 0xbc},\n\t{value: 0xb8e1, lo: 0xbd, hi: 0xbd},\n\t{value: 0xb949, lo: 0xbe, hi: 0xbe},\n\t{value: 0xb9b1, lo: 0xbf, hi: 0xbf},\n\t// Block 0xeb, offset 0x6ea\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xba19, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xbf},\n\t// Block 0xec, offset 0x6ee\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3318, lo: 0x82, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0xbf},\n\t// Block 0xed, offset 0x6f3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0xee, offset 0x6f7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xef, offset 0x6fc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0xf0, offset 0x700\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0xf1, offset 0x705\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3308, lo: 0xa1, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xf2, offset 0x70e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0xf3, offset 0x719\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x86},\n\t{value: 0x0818, lo: 0x87, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0xf4, offset 0x71f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0a08, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xf5, offset 0x727\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xb0},\n\t{value: 0x0818, lo: 0xb1, hi: 0xbf},\n\t// Block 0xf6, offset 0x72a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0818, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xf7, offset 0x72d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xf8, offset 0x731\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0xf9, offset 0x735\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0xfa, offset 0x73b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xfb, offset 0x741\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0xc1c1, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xfc, offset 0x746\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xbf},\n\t// Block 0xfd, offset 0x749\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xc7e9, lo: 0x80, hi: 0x80},\n\t{value: 0xc839, lo: 0x81, hi: 0x81},\n\t{value: 0xc889, lo: 0x82, hi: 0x82},\n\t{value: 0xc8d9, lo: 0x83, hi: 0x83},\n\t{value: 0xc929, lo: 0x84, hi: 0x84},\n\t{value: 0xc979, lo: 0x85, hi: 0x85},\n\t{value: 0xc9c9, lo: 0x86, hi: 0x86},\n\t{value: 0xca19, lo: 0x87, hi: 0x87},\n\t{value: 0xca69, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0xcab9, lo: 0x90, hi: 0x90},\n\t{value: 0xcad9, lo: 0x91, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xbf},\n\t// Block 0xfe, offset 0x759\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xff, offset 0x760\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x100, offset 0x763\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0xbf},\n\t// Block 0x101, offset 0x766\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x102, offset 0x76a\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x103, offset 0x770\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0x104, offset 0x775\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x105, offset 0x77a\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0018, lo: 0xb3, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x106, offset 0x782\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x107, offset 0x787\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x108, offset 0x78b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0x109, offset 0x78f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0x10a, offset 0x792\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x10b, offset 0x795\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x10c, offset 0x799\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x10d, offset 0x79d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x10e, offset 0x7a0\n\t{value: 0x0020, lo: 0x0f},\n\t{value: 0xdeb9, lo: 0x80, hi: 0x89},\n\t{value: 0x8dfd, lo: 0x8a, hi: 0x8a},\n\t{value: 0xdff9, lo: 0x8b, hi: 0x9c},\n\t{value: 0x8e1d, lo: 0x9d, hi: 0x9d},\n\t{value: 0xe239, lo: 0x9e, hi: 0xa2},\n\t{value: 0x8e3d, lo: 0xa3, hi: 0xa3},\n\t{value: 0xe2d9, lo: 0xa4, hi: 0xab},\n\t{value: 0x7ed5, lo: 0xac, hi: 0xac},\n\t{value: 0xe3d9, lo: 0xad, hi: 0xaf},\n\t{value: 0x8e5d, lo: 0xb0, hi: 0xb0},\n\t{value: 0xe439, lo: 0xb1, hi: 0xb6},\n\t{value: 0x8e7d, lo: 0xb7, hi: 0xb9},\n\t{value: 0xe4f9, lo: 0xba, hi: 0xba},\n\t{value: 0x8edd, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe519, lo: 0xbc, hi: 0xbf},\n\t// Block 0x10f, offset 0x7b0\n\t{value: 0x0020, lo: 0x10},\n\t{value: 0x937d, lo: 0x80, hi: 0x80},\n\t{value: 0xf099, lo: 0x81, hi: 0x86},\n\t{value: 0x939d, lo: 0x87, hi: 0x8a},\n\t{value: 0xd9f9, lo: 0x8b, hi: 0x8b},\n\t{value: 0xf159, lo: 0x8c, hi: 0x96},\n\t{value: 0x941d, lo: 0x97, hi: 0x97},\n\t{value: 0xf2b9, lo: 0x98, hi: 0xa3},\n\t{value: 0x943d, lo: 0xa4, hi: 0xa6},\n\t{value: 0xf439, lo: 0xa7, hi: 0xaa},\n\t{value: 0x949d, lo: 0xab, hi: 0xab},\n\t{value: 0xf4b9, lo: 0xac, hi: 0xac},\n\t{value: 0x94bd, lo: 0xad, hi: 0xad},\n\t{value: 0xf4d9, lo: 0xae, hi: 0xaf},\n\t{value: 0x94dd, lo: 0xb0, hi: 0xb1},\n\t{value: 0xf519, lo: 0xb2, hi: 0xbe},\n\t{value: 0x2040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x110, offset 0x7c1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0340, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x9f},\n\t{value: 0x0340, lo: 0xa0, hi: 0xbf},\n\t// Block 0x111, offset 0x7c6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0340, lo: 0x80, hi: 0xbf},\n\t// Block 0x112, offset 0x7c8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x33c0, lo: 0x80, hi: 0xbf},\n\t// Block 0x113, offset 0x7ca\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x33c0, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n}\n\n// Total table size 42466 bytes (41KiB); checksum: 355A58A4\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/tables12.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.14 && !go1.16\n\npackage idna\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"12.0.0\"\n\nvar mappings string = \"\" + // Size: 8178 bytes\n\t\"\\x00\\x01 \\x03 ̈\\x01a\\x03 ̄\\x012\\x013\\x03 ́\\x03 ̧\\x011\\x01o\\x051⁄4\\x051⁄2\" +\n\t\"\\x053⁄4\\x03i̇\\x03l·\\x03ʼn\\x01s\\x03dž\\x03ⱥ\\x03ⱦ\\x01h\\x01j\\x01r\\x01w\\x01y\" +\n\t\"\\x03 ̆\\x03 ̇\\x03 ̊\\x03 ̨\\x03 ̃\\x03 ̋\\x01l\\x01x\\x04̈́\\x03 ι\\x01;\\x05 ̈́\" +\n\t\"\\x04եւ\\x04اٴ\\x04وٴ\\x04ۇٴ\\x04يٴ\\x06क़\\x06ख़\\x06ग़\\x06ज़\\x06ड़\\x06ढ़\\x06फ़\" +\n\t\"\\x06य़\\x06ড়\\x06ঢ়\\x06য়\\x06ਲ਼\\x06ਸ਼\\x06ਖ਼\\x06ਗ਼\\x06ਜ਼\\x06ਫ਼\\x06ଡ଼\\x06ଢ଼\" +\n\t\"\\x06ํา\\x06ໍາ\\x06ຫນ\\x06ຫມ\\x06གྷ\\x06ཌྷ\\x06དྷ\\x06བྷ\\x06ཛྷ\\x06ཀྵ\\x06ཱི\\x06ཱུ\" +\n\t\"\\x06ྲྀ\\x09ྲཱྀ\\x06ླྀ\\x09ླཱྀ\\x06ཱྀ\\x06ྒྷ\\x06ྜྷ\\x06ྡྷ\\x06ྦྷ\\x06ྫྷ\\x06ྐྵ\\x02\" +\n\t\"в\\x02д\\x02о\\x02с\\x02т\\x02ъ\\x02ѣ\\x02æ\\x01b\\x01d\\x01e\\x02ǝ\\x01g\\x01i\\x01k\" +\n\t\"\\x01m\\x01n\\x02ȣ\\x01p\\x01t\\x01u\\x02ɐ\\x02ɑ\\x02ə\\x02ɛ\\x02ɜ\\x02ŋ\\x02ɔ\\x02ɯ\" +\n\t\"\\x01v\\x02β\\x02γ\\x02δ\\x02φ\\x02χ\\x02ρ\\x02н\\x02ɒ\\x01c\\x02ɕ\\x02ð\\x01f\\x02ɟ\" +\n\t\"\\x02ɡ\\x02ɥ\\x02ɨ\\x02ɩ\\x02ɪ\\x02ʝ\\x02ɭ\\x02ʟ\\x02ɱ\\x02ɰ\\x02ɲ\\x02ɳ\\x02ɴ\\x02ɵ\" +\n\t\"\\x02ɸ\\x02ʂ\\x02ʃ\\x02ƫ\\x02ʉ\\x02ʊ\\x02ʋ\\x02ʌ\\x01z\\x02ʐ\\x02ʑ\\x02ʒ\\x02θ\\x02ss\" +\n\t\"\\x02ά\\x02έ\\x02ή\\x02ί\\x02ό\\x02ύ\\x02ώ\\x05ἀι\\x05ἁι\\x05ἂι\\x05ἃι\\x05ἄι\\x05ἅι\" +\n\t\"\\x05ἆι\\x05ἇι\\x05ἠι\\x05ἡι\\x05ἢι\\x05ἣι\\x05ἤι\\x05ἥι\\x05ἦι\\x05ἧι\\x05ὠι\\x05ὡι\" +\n\t\"\\x05ὢι\\x05ὣι\\x05ὤι\\x05ὥι\\x05ὦι\\x05ὧι\\x05ὰι\\x04αι\\x04άι\\x05ᾶι\\x02ι\\x05 ̈͂\" +\n\t\"\\x05ὴι\\x04ηι\\x04ήι\\x05ῆι\\x05 ̓̀\\x05 ̓́\\x05 ̓͂\\x02ΐ\\x05 ̔̀\\x05 ̔́\\x05 ̔͂\" +\n\t\"\\x02ΰ\\x05 ̈̀\\x01`\\x05ὼι\\x04ωι\\x04ώι\\x05ῶι\\x06′′\\x09′′′\\x06‵‵\\x09‵‵‵\\x02!\" +\n\t\"!\\x02??\\x02?!\\x02!?\\x0c′′′′\\x010\\x014\\x015\\x016\\x017\\x018\\x019\\x01+\\x01=\" +\n\t\"\\x01(\\x01)\\x02rs\\x02ħ\\x02no\\x01q\\x02sm\\x02tm\\x02ω\\x02å\\x02א\\x02ב\\x02ג\" +\n\t\"\\x02ד\\x02π\\x051⁄7\\x051⁄9\\x061⁄10\\x051⁄3\\x052⁄3\\x051⁄5\\x052⁄5\\x053⁄5\\x054\" +\n\t\"⁄5\\x051⁄6\\x055⁄6\\x051⁄8\\x053⁄8\\x055⁄8\\x057⁄8\\x041⁄\\x02ii\\x02iv\\x02vi\" +\n\t\"\\x04viii\\x02ix\\x02xi\\x050⁄3\\x06∫∫\\x09∫∫∫\\x06∮∮\\x09∮∮∮\\x0210\\x0211\\x0212\" +\n\t\"\\x0213\\x0214\\x0215\\x0216\\x0217\\x0218\\x0219\\x0220\\x04(10)\\x04(11)\\x04(12)\" +\n\t\"\\x04(13)\\x04(14)\\x04(15)\\x04(16)\\x04(17)\\x04(18)\\x04(19)\\x04(20)\\x0c∫∫∫∫\" +\n\t\"\\x02==\\x05⫝̸\\x02ɫ\\x02ɽ\\x02ȿ\\x02ɀ\\x01.\\x04 ゙\\x04 ゚\\x06より\\x06コト\\x05(ᄀ)\\x05\" +\n\t\"(ᄂ)\\x05(ᄃ)\\x05(ᄅ)\\x05(ᄆ)\\x05(ᄇ)\\x05(ᄉ)\\x05(ᄋ)\\x05(ᄌ)\\x05(ᄎ)\\x05(ᄏ)\\x05(ᄐ\" +\n\t\")\\x05(ᄑ)\\x05(ᄒ)\\x05(가)\\x05(나)\\x05(다)\\x05(라)\\x05(마)\\x05(바)\\x05(사)\\x05(아)\" +\n\t\"\\x05(자)\\x05(차)\\x05(카)\\x05(타)\\x05(파)\\x05(하)\\x05(주)\\x08(오전)\\x08(오후)\\x05(一)\" +\n\t\"\\x05(二)\\x05(三)\\x05(四)\\x05(五)\\x05(六)\\x05(七)\\x05(八)\\x05(九)\\x05(十)\\x05(月)\" +\n\t\"\\x05(火)\\x05(水)\\x05(木)\\x05(金)\\x05(土)\\x05(日)\\x05(株)\\x05(有)\\x05(社)\\x05(名)\" +\n\t\"\\x05(特)\\x05(財)\\x05(祝)\\x05(労)\\x05(代)\\x05(呼)\\x05(学)\\x05(監)\\x05(企)\\x05(資)\" +\n\t\"\\x05(協)\\x05(祭)\\x05(休)\\x05(自)\\x05(至)\\x0221\\x0222\\x0223\\x0224\\x0225\\x0226\" +\n\t\"\\x0227\\x0228\\x0229\\x0230\\x0231\\x0232\\x0233\\x0234\\x0235\\x06참고\\x06주의\\x0236\" +\n\t\"\\x0237\\x0238\\x0239\\x0240\\x0241\\x0242\\x0243\\x0244\\x0245\\x0246\\x0247\\x0248\" +\n\t\"\\x0249\\x0250\\x041月\\x042月\\x043月\\x044月\\x045月\\x046月\\x047月\\x048月\\x049月\\x0510\" +\n\t\"月\\x0511月\\x0512月\\x02hg\\x02ev\\x0cアパート\\x0cアルファ\\x0cアンペア\\x09アール\\x0cイニング\\x09\" +\n\t\"インチ\\x09ウォン\\x0fエスクード\\x0cエーカー\\x09オンス\\x09オーム\\x09カイリ\\x0cカラット\\x0cカロリー\\x09ガロ\" +\n\t\"ン\\x09ガンマ\\x06ギガ\\x09ギニー\\x0cキュリー\\x0cギルダー\\x06キロ\\x0fキログラム\\x12キロメートル\\x0fキロワッ\" +\n\t\"ト\\x09グラム\\x0fグラムトン\\x0fクルゼイロ\\x0cクローネ\\x09ケース\\x09コルナ\\x09コーポ\\x0cサイクル\\x0fサンチ\" +\n\t\"ーム\\x0cシリング\\x09センチ\\x09セント\\x09ダース\\x06デシ\\x06ドル\\x06トン\\x06ナノ\\x09ノット\\x09ハイツ\" +\n\t\"\\x0fパーセント\\x09パーツ\\x0cバーレル\\x0fピアストル\\x09ピクル\\x06ピコ\\x06ビル\\x0fファラッド\\x0cフィート\" +\n\t\"\\x0fブッシェル\\x09フラン\\x0fヘクタール\\x06ペソ\\x09ペニヒ\\x09ヘルツ\\x09ペンス\\x09ページ\\x09ベータ\\x0cポイ\" +\n\t\"ント\\x09ボルト\\x06ホン\\x09ポンド\\x09ホール\\x09ホーン\\x0cマイクロ\\x09マイル\\x09マッハ\\x09マルク\\x0fマ\" +\n\t\"ンション\\x0cミクロン\\x06ミリ\\x0fミリバール\\x06メガ\\x0cメガトン\\x0cメートル\\x09ヤード\\x09ヤール\\x09ユアン\" +\n\t\"\\x0cリットル\\x06リラ\\x09ルピー\\x0cルーブル\\x06レム\\x0fレントゲン\\x09ワット\\x040点\\x041点\\x042点\" +\n\t\"\\x043点\\x044点\\x045点\\x046点\\x047点\\x048点\\x049点\\x0510点\\x0511点\\x0512点\\x0513点\" +\n\t\"\\x0514点\\x0515点\\x0516点\\x0517点\\x0518点\\x0519点\\x0520点\\x0521点\\x0522点\\x0523点\" +\n\t\"\\x0524点\\x02da\\x02au\\x02ov\\x02pc\\x02dm\\x02iu\\x06平成\\x06昭和\\x06大正\\x06明治\\x0c株\" +\n\t\"式会社\\x02pa\\x02na\\x02ma\\x02ka\\x02kb\\x02mb\\x02gb\\x04kcal\\x02pf\\x02nf\\x02m\" +\n\t\"g\\x02kg\\x02hz\\x02ml\\x02dl\\x02kl\\x02fm\\x02nm\\x02mm\\x02cm\\x02km\\x02m2\\x02m\" +\n\t\"3\\x05m∕s\\x06m∕s2\\x07rad∕s\\x08rad∕s2\\x02ps\\x02ns\\x02ms\\x02pv\\x02nv\\x02mv\" +\n\t\"\\x02kv\\x02pw\\x02nw\\x02mw\\x02kw\\x02bq\\x02cc\\x02cd\\x06c∕kg\\x02db\\x02gy\\x02\" +\n\t\"ha\\x02hp\\x02in\\x02kk\\x02kt\\x02lm\\x02ln\\x02lx\\x02ph\\x02pr\\x02sr\\x02sv\\x02\" +\n\t\"wb\\x05v∕m\\x05a∕m\\x041日\\x042日\\x043日\\x044日\\x045日\\x046日\\x047日\\x048日\\x049日\" +\n\t\"\\x0510日\\x0511日\\x0512日\\x0513日\\x0514日\\x0515日\\x0516日\\x0517日\\x0518日\\x0519日\" +\n\t\"\\x0520日\\x0521日\\x0522日\\x0523日\\x0524日\\x0525日\\x0526日\\x0527日\\x0528日\\x0529日\" +\n\t\"\\x0530日\\x0531日\\x02ь\\x02ɦ\\x02ɬ\\x02ʞ\\x02ʇ\\x02œ\\x04𤋮\\x04𢡊\\x04𢡄\\x04𣏕\\x04𥉉\" +\n\t\"\\x04𥳐\\x04𧻓\\x02ff\\x02fi\\x02fl\\x02st\\x04մն\\x04մե\\x04մի\\x04վն\\x04մխ\\x04יִ\" +\n\t\"\\x04ײַ\\x02ע\\x02ה\\x02כ\\x02ל\\x02ם\\x02ר\\x02ת\\x04שׁ\\x04שׂ\\x06שּׁ\\x06שּׂ\\x04א\" +\n\t\"ַ\\x04אָ\\x04אּ\\x04בּ\\x04גּ\\x04דּ\\x04הּ\\x04וּ\\x04זּ\\x04טּ\\x04יּ\\x04ךּ\\x04\" +\n\t\"כּ\\x04לּ\\x04מּ\\x04נּ\\x04סּ\\x04ףּ\\x04פּ\\x04צּ\\x04קּ\\x04רּ\\x04שּ\\x04תּ\" +\n\t\"\\x04וֹ\\x04בֿ\\x04כֿ\\x04פֿ\\x04אל\\x02ٱ\\x02ٻ\\x02پ\\x02ڀ\\x02ٺ\\x02ٿ\\x02ٹ\\x02ڤ\" +\n\t\"\\x02ڦ\\x02ڄ\\x02ڃ\\x02چ\\x02ڇ\\x02ڍ\\x02ڌ\\x02ڎ\\x02ڈ\\x02ژ\\x02ڑ\\x02ک\\x02گ\\x02ڳ\" +\n\t\"\\x02ڱ\\x02ں\\x02ڻ\\x02ۀ\\x02ہ\\x02ھ\\x02ے\\x02ۓ\\x02ڭ\\x02ۇ\\x02ۆ\\x02ۈ\\x02ۋ\\x02ۅ\" +\n\t\"\\x02ۉ\\x02ې\\x02ى\\x04ئا\\x04ئە\\x04ئو\\x04ئۇ\\x04ئۆ\\x04ئۈ\\x04ئې\\x04ئى\\x02ی\\x04\" +\n\t\"ئج\\x04ئح\\x04ئم\\x04ئي\\x04بج\\x04بح\\x04بخ\\x04بم\\x04بى\\x04بي\\x04تج\\x04تح\" +\n\t\"\\x04تخ\\x04تم\\x04تى\\x04تي\\x04ثج\\x04ثم\\x04ثى\\x04ثي\\x04جح\\x04جم\\x04حج\\x04حم\" +\n\t\"\\x04خج\\x04خح\\x04خم\\x04سج\\x04سح\\x04سخ\\x04سم\\x04صح\\x04صم\\x04ضج\\x04ضح\\x04ضخ\" +\n\t\"\\x04ضم\\x04طح\\x04طم\\x04ظم\\x04عج\\x04عم\\x04غج\\x04غم\\x04فج\\x04فح\\x04فخ\\x04فم\" +\n\t\"\\x04فى\\x04في\\x04قح\\x04قم\\x04قى\\x04قي\\x04كا\\x04كج\\x04كح\\x04كخ\\x04كل\\x04كم\" +\n\t\"\\x04كى\\x04كي\\x04لج\\x04لح\\x04لخ\\x04لم\\x04لى\\x04لي\\x04مج\\x04مح\\x04مخ\\x04مم\" +\n\t\"\\x04مى\\x04مي\\x04نج\\x04نح\\x04نخ\\x04نم\\x04نى\\x04ني\\x04هج\\x04هم\\x04هى\\x04هي\" +\n\t\"\\x04يج\\x04يح\\x04يخ\\x04يم\\x04يى\\x04يي\\x04ذٰ\\x04رٰ\\x04ىٰ\\x05 ٌّ\\x05 ٍّ\\x05\" +\n\t\" َّ\\x05 ُّ\\x05 ِّ\\x05 ّٰ\\x04ئر\\x04ئز\\x04ئن\\x04بر\\x04بز\\x04بن\\x04تر\\x04تز\" +\n\t\"\\x04تن\\x04ثر\\x04ثز\\x04ثن\\x04ما\\x04نر\\x04نز\\x04نن\\x04ير\\x04يز\\x04ين\\x04ئخ\" +\n\t\"\\x04ئه\\x04به\\x04ته\\x04صخ\\x04له\\x04نه\\x04هٰ\\x04يه\\x04ثه\\x04سه\\x04شم\\x04شه\" +\n\t\"\\x06ـَّ\\x06ـُّ\\x06ـِّ\\x04طى\\x04طي\\x04عى\\x04عي\\x04غى\\x04غي\\x04سى\\x04سي\" +\n\t\"\\x04شى\\x04شي\\x04حى\\x04حي\\x04جى\\x04جي\\x04خى\\x04خي\\x04صى\\x04صي\\x04ضى\\x04ضي\" +\n\t\"\\x04شج\\x04شح\\x04شخ\\x04شر\\x04سر\\x04صر\\x04ضر\\x04اً\\x06تجم\\x06تحج\\x06تحم\" +\n\t\"\\x06تخم\\x06تمج\\x06تمح\\x06تمخ\\x06جمح\\x06حمي\\x06حمى\\x06سحج\\x06سجح\\x06سجى\" +\n\t\"\\x06سمح\\x06سمج\\x06سمم\\x06صحح\\x06صمم\\x06شحم\\x06شجي\\x06شمخ\\x06شمم\\x06ضحى\" +\n\t\"\\x06ضخم\\x06طمح\\x06طمم\\x06طمي\\x06عجم\\x06عمم\\x06عمى\\x06غمم\\x06غمي\\x06غمى\" +\n\t\"\\x06فخم\\x06قمح\\x06قمم\\x06لحم\\x06لحي\\x06لحى\\x06لجج\\x06لخم\\x06لمح\\x06محج\" +\n\t\"\\x06محم\\x06محي\\x06مجح\\x06مجم\\x06مخج\\x06مخم\\x06مجخ\\x06همج\\x06همم\\x06نحم\" +\n\t\"\\x06نحى\\x06نجم\\x06نجى\\x06نمي\\x06نمى\\x06يمم\\x06بخي\\x06تجي\\x06تجى\\x06تخي\" +\n\t\"\\x06تخى\\x06تمي\\x06تمى\\x06جمي\\x06جحى\\x06جمى\\x06سخى\\x06صحي\\x06شحي\\x06ضحي\" +\n\t\"\\x06لجي\\x06لمي\\x06يحي\\x06يجي\\x06يمي\\x06ممي\\x06قمي\\x06نحي\\x06عمي\\x06كمي\" +\n\t\"\\x06نجح\\x06مخي\\x06لجم\\x06كمم\\x06جحي\\x06حجي\\x06مجي\\x06فمي\\x06بحي\\x06سخي\" +\n\t\"\\x06نجي\\x06صلے\\x06قلے\\x08الله\\x08اكبر\\x08محمد\\x08صلعم\\x08رسول\\x08عليه\" +\n\t\"\\x08وسلم\\x06صلى!صلى الله عليه وسلم\\x0fجل جلاله\\x08ریال\\x01,\\x01:\\x01!\" +\n\t\"\\x01?\\x01_\\x01{\\x01}\\x01[\\x01]\\x01#\\x01&\\x01*\\x01-\\x01<\\x01>\\x01\\\\\\x01$\" +\n\t\"\\x01%\\x01@\\x04ـً\\x04ـَ\\x04ـُ\\x04ـِ\\x04ـّ\\x04ـْ\\x02ء\\x02آ\\x02أ\\x02ؤ\\x02إ\" +\n\t\"\\x02ئ\\x02ا\\x02ب\\x02ة\\x02ت\\x02ث\\x02ج\\x02ح\\x02خ\\x02د\\x02ذ\\x02ر\\x02ز\\x02س\" +\n\t\"\\x02ش\\x02ص\\x02ض\\x02ط\\x02ظ\\x02ع\\x02غ\\x02ف\\x02ق\\x02ك\\x02ل\\x02م\\x02ن\\x02ه\" +\n\t\"\\x02و\\x02ي\\x04لآ\\x04لأ\\x04لإ\\x04لا\\x01\\x22\\x01'\\x01/\\x01^\\x01|\\x01~\\x02¢\" +\n\t\"\\x02£\\x02¬\\x02¦\\x02¥\\x08𝅗𝅥\\x08𝅘𝅥\\x0c𝅘𝅥𝅮\\x0c𝅘𝅥𝅯\\x0c𝅘𝅥𝅰\\x0c𝅘𝅥𝅱\\x0c𝅘𝅥𝅲\\x08𝆹\" +\n\t\"𝅥\\x08𝆺𝅥\\x0c𝆹𝅥𝅮\\x0c𝆺𝅥𝅮\\x0c𝆹𝅥𝅯\\x0c𝆺𝅥𝅯\\x02ı\\x02ȷ\\x02α\\x02ε\\x02ζ\\x02η\\x02\" +\n\t\"κ\\x02λ\\x02μ\\x02ν\\x02ξ\\x02ο\\x02σ\\x02τ\\x02υ\\x02ψ\\x03∇\\x03∂\\x02ϝ\\x02ٮ\\x02ڡ\" +\n\t\"\\x02ٯ\\x020,\\x021,\\x022,\\x023,\\x024,\\x025,\\x026,\\x027,\\x028,\\x029,\\x03(a)\" +\n\t\"\\x03(b)\\x03(c)\\x03(d)\\x03(e)\\x03(f)\\x03(g)\\x03(h)\\x03(i)\\x03(j)\\x03(k)\" +\n\t\"\\x03(l)\\x03(m)\\x03(n)\\x03(o)\\x03(p)\\x03(q)\\x03(r)\\x03(s)\\x03(t)\\x03(u)\" +\n\t\"\\x03(v)\\x03(w)\\x03(x)\\x03(y)\\x03(z)\\x07〔s〕\\x02wz\\x02hv\\x02sd\\x03ppv\\x02w\" +\n\t\"c\\x02mc\\x02md\\x02mr\\x02dj\\x06ほか\\x06ココ\\x03サ\\x03手\\x03字\\x03双\\x03デ\\x03二\\x03多\" +\n\t\"\\x03解\\x03天\\x03交\\x03映\\x03無\\x03料\\x03前\\x03後\\x03再\\x03新\\x03初\\x03終\\x03生\\x03販\" +\n\t\"\\x03声\\x03吹\\x03演\\x03投\\x03捕\\x03一\\x03三\\x03遊\\x03左\\x03中\\x03右\\x03指\\x03走\\x03打\" +\n\t\"\\x03禁\\x03空\\x03合\\x03満\\x03有\\x03月\\x03申\\x03割\\x03営\\x03配\\x09〔本〕\\x09〔三〕\\x09〔二〕\" +\n\t\"\\x09〔安〕\\x09〔点〕\\x09〔打〕\\x09〔盗〕\\x09〔勝〕\\x09〔敗〕\\x03得\\x03可\\x03丽\\x03丸\\x03乁\\x03你\" +\n\t\"\\x03侮\\x03侻\\x03倂\\x03偺\\x03備\\x03僧\\x03像\\x03㒞\\x03免\\x03兔\\x03兤\\x03具\\x03㒹\\x03內\" +\n\t\"\\x03冗\\x03冤\\x03仌\\x03冬\\x03况\\x03凵\\x03刃\\x03㓟\\x03刻\\x03剆\\x03剷\\x03㔕\\x03勇\\x03勉\" +\n\t\"\\x03勤\\x03勺\\x03包\\x03匆\\x03北\\x03卉\\x03卑\\x03博\\x03即\\x03卽\\x03卿\\x03灰\\x03及\\x03叟\" +\n\t\"\\x03叫\\x03叱\\x03吆\\x03咞\\x03吸\\x03呈\\x03周\\x03咢\\x03哶\\x03唐\\x03啓\\x03啣\\x03善\\x03喙\" +\n\t\"\\x03喫\\x03喳\\x03嗂\\x03圖\\x03嘆\\x03圗\\x03噑\\x03噴\\x03切\\x03壮\\x03城\\x03埴\\x03堍\\x03型\" +\n\t\"\\x03堲\\x03報\\x03墬\\x03売\\x03壷\\x03夆\\x03夢\\x03奢\\x03姬\\x03娛\\x03娧\\x03姘\\x03婦\\x03㛮\" +\n\t\"\\x03嬈\\x03嬾\\x03寃\\x03寘\\x03寧\\x03寳\\x03寿\\x03将\\x03尢\\x03㞁\\x03屠\\x03屮\\x03峀\\x03岍\" +\n\t\"\\x03嵃\\x03嵮\\x03嵫\\x03嵼\\x03巡\\x03巢\\x03㠯\\x03巽\\x03帨\\x03帽\\x03幩\\x03㡢\\x03㡼\\x03庰\" +\n\t\"\\x03庳\\x03庶\\x03廊\\x03廾\\x03舁\\x03弢\\x03㣇\\x03形\\x03彫\\x03㣣\\x03徚\\x03忍\\x03志\\x03忹\" +\n\t\"\\x03悁\\x03㤺\\x03㤜\\x03悔\\x03惇\\x03慈\\x03慌\\x03慎\\x03慺\\x03憎\\x03憲\\x03憤\\x03憯\\x03懞\" +\n\t\"\\x03懲\\x03懶\\x03成\\x03戛\\x03扝\\x03抱\\x03拔\\x03捐\\x03挽\\x03拼\\x03捨\\x03掃\\x03揤\\x03搢\" +\n\t\"\\x03揅\\x03掩\\x03㨮\\x03摩\\x03摾\\x03撝\\x03摷\\x03㩬\\x03敏\\x03敬\\x03旣\\x03書\\x03晉\\x03㬙\" +\n\t\"\\x03暑\\x03㬈\\x03㫤\\x03冒\\x03冕\\x03最\\x03暜\\x03肭\\x03䏙\\x03朗\\x03望\\x03朡\\x03杞\\x03杓\" +\n\t\"\\x03㭉\\x03柺\\x03枅\\x03桒\\x03梅\\x03梎\\x03栟\\x03椔\\x03㮝\\x03楂\\x03榣\\x03槪\\x03檨\\x03櫛\" +\n\t\"\\x03㰘\\x03次\\x03歔\\x03㱎\\x03歲\\x03殟\\x03殺\\x03殻\\x03汎\\x03沿\\x03泍\\x03汧\\x03洖\\x03派\" +\n\t\"\\x03海\\x03流\\x03浩\\x03浸\\x03涅\\x03洴\\x03港\\x03湮\\x03㴳\\x03滋\\x03滇\\x03淹\\x03潮\\x03濆\" +\n\t\"\\x03瀹\\x03瀞\\x03瀛\\x03㶖\\x03灊\\x03災\\x03灷\\x03炭\\x03煅\\x03熜\\x03爨\\x03爵\\x03牐\\x03犀\" +\n\t\"\\x03犕\\x03獺\\x03王\\x03㺬\\x03玥\\x03㺸\\x03瑇\\x03瑜\\x03瑱\\x03璅\\x03瓊\\x03㼛\\x03甤\\x03甾\" +\n\t\"\\x03異\\x03瘐\\x03㿼\\x03䀈\\x03直\\x03眞\\x03真\\x03睊\\x03䀹\\x03瞋\\x03䁆\\x03䂖\\x03硎\\x03碌\" +\n\t\"\\x03磌\\x03䃣\\x03祖\\x03福\\x03秫\\x03䄯\\x03穀\\x03穊\\x03穏\\x03䈂\\x03篆\\x03築\\x03䈧\\x03糒\" +\n\t\"\\x03䊠\\x03糨\\x03糣\\x03紀\\x03絣\\x03䌁\\x03緇\\x03縂\\x03繅\\x03䌴\\x03䍙\\x03罺\\x03羕\\x03翺\" +\n\t\"\\x03者\\x03聠\\x03聰\\x03䏕\\x03育\\x03脃\\x03䐋\\x03脾\\x03媵\\x03舄\\x03辞\\x03䑫\\x03芑\\x03芋\" +\n\t\"\\x03芝\\x03劳\\x03花\\x03芳\\x03芽\\x03苦\\x03若\\x03茝\\x03荣\\x03莭\\x03茣\\x03莽\\x03菧\\x03著\" +\n\t\"\\x03荓\\x03菊\\x03菌\\x03菜\\x03䔫\\x03蓱\\x03蓳\\x03蔖\\x03蕤\\x03䕝\\x03䕡\\x03䕫\\x03虐\\x03虜\" +\n\t\"\\x03虧\\x03虩\\x03蚩\\x03蚈\\x03蜎\\x03蛢\\x03蝹\\x03蜨\\x03蝫\\x03螆\\x03蟡\\x03蠁\\x03䗹\\x03衠\" +\n\t\"\\x03衣\\x03裗\\x03裞\\x03䘵\\x03裺\\x03㒻\\x03䚾\\x03䛇\\x03誠\\x03諭\\x03變\\x03豕\\x03貫\\x03賁\" +\n\t\"\\x03贛\\x03起\\x03跋\\x03趼\\x03跰\\x03軔\\x03輸\\x03邔\\x03郱\\x03鄑\\x03鄛\\x03鈸\\x03鋗\\x03鋘\" +\n\t\"\\x03鉼\\x03鏹\\x03鐕\\x03開\\x03䦕\\x03閷\\x03䧦\\x03雃\\x03嶲\\x03霣\\x03䩮\\x03䩶\\x03韠\\x03䪲\" +\n\t\"\\x03頋\\x03頩\\x03飢\\x03䬳\\x03餩\\x03馧\\x03駂\\x03駾\\x03䯎\\x03鬒\\x03鱀\\x03鳽\\x03䳎\\x03䳭\" +\n\t\"\\x03鵧\\x03䳸\\x03麻\\x03䵖\\x03黹\\x03黾\\x03鼅\\x03鼏\\x03鼖\\x03鼻\"\n\nvar xorData string = \"\" + // Size: 4862 bytes\n\t\"\\x02\\x0c\\x09\\x02\\xb0\\xec\\x02\\xad\\xd8\\x02\\xad\\xd9\\x02\\x06\\x07\\x02\\x0f\\x12\" +\n\t\"\\x02\\x0f\\x1f\\x02\\x0f\\x1d\\x02\\x01\\x13\\x02\\x0f\\x16\\x02\\x0f\\x0b\\x02\\x0f3\" +\n\t\"\\x02\\x0f7\\x02\\x0f?\\x02\\x0f/\\x02\\x0f*\\x02\\x0c&\\x02\\x0c*\\x02\\x0c;\\x02\\x0c9\" +\n\t\"\\x02\\x0c%\\x02\\xab\\xed\\x02\\xab\\xe2\\x02\\xab\\xe3\\x02\\xa9\\xe0\\x02\\xa9\\xe1\" +\n\t\"\\x02\\xa9\\xe6\\x02\\xa3\\xcb\\x02\\xa3\\xc8\\x02\\xa3\\xc9\\x02\\x01#\\x02\\x01\\x08\" +\n\t\"\\x02\\x0e>\\x02\\x0e'\\x02\\x0f\\x03\\x02\\x03\\x0d\\x02\\x03\\x09\\x02\\x03\\x17\\x02\" +\n\t\"\\x03\\x0e\\x02\\x02\\x03\\x02\\x011\\x02\\x01\\x00\\x02\\x01\\x10\\x02\\x03<\\x02\\x07\" +\n\t\"\\x0d\\x02\\x02\\x0c\\x02\\x0c0\\x02\\x01\\x03\\x02\\x01\\x01\\x02\\x01 \\x02\\x01\\x22\" +\n\t\"\\x02\\x01)\\x02\\x01\\x0a\\x02\\x01\\x0c\\x02\\x02\\x06\\x02\\x02\\x02\\x02\\x03\\x10\" +\n\t\"\\x03\\x037 \\x03\\x0b+\\x03\\x021\\x00\\x02\\x01\\x04\\x02\\x01\\x02\\x02\\x019\\x02\" +\n\t\"\\x03\\x1c\\x02\\x02$\\x03\\x80p$\\x02\\x03:\\x02\\x03\\x0a\\x03\\xc1r.\\x03\\xc1r,\\x03\" +\n\t\"\\xc1r\\x02\\x02\\x02:\\x02\\x02>\\x02\\x02,\\x02\\x02\\x10\\x02\\x02\\x00\\x03\\xc1s<\" +\n\t\"\\x03\\xc1s*\\x03\\xc2L$\\x03\\xc2L;\\x02\\x09)\\x02\\x0a\\x19\\x03\\x83\\xab\\xe3\\x03\" +\n\t\"\\x83\\xab\\xf2\\x03 4\\xe0\\x03\\x81\\xab\\xea\\x03\\x81\\xab\\xf3\\x03 4\\xef\\x03\\x96\" +\n\t\"\\xe1\\xcd\\x03\\x84\\xe5\\xc3\\x02\\x0d\\x11\\x03\\x8b\\xec\\xcb\\x03\\x94\\xec\\xcf\\x03\" +\n\t\"\\x9a\\xec\\xc2\\x03\\x8b\\xec\\xdb\\x03\\x94\\xec\\xdf\\x03\\x9a\\xec\\xd2\\x03\\x01\\x0c\" +\n\t\"!\\x03\\x01\\x0c#\\x03ʠ\\x9d\\x03ʣ\\x9c\\x03ʢ\\x9f\\x03ʥ\\x9e\\x03ʤ\\x91\\x03ʧ\\x90\\x03\" +\n\t\"ʦ\\x93\\x03ʩ\\x92\\x03ʨ\\x95\\x03\\xca\\xf3\\xb5\\x03\\xca\\xf0\\xb4\\x03\\xca\\xf1\\xb7\" +\n\t\"\\x03\\xca\\xf6\\xb6\\x03\\xca\\xf7\\x89\\x03\\xca\\xf4\\x88\\x03\\xca\\xf5\\x8b\\x03\\xca\" +\n\t\"\\xfa\\x8a\\x03\\xca\\xfb\\x8d\\x03\\xca\\xf8\\x8c\\x03\\xca\\xf9\\x8f\\x03\\xca\\xfe\\x8e\" +\n\t\"\\x03\\xca\\xff\\x81\\x03\\xca\\xfc\\x80\\x03\\xca\\xfd\\x83\\x03\\xca\\xe2\\x82\\x03\\xca\" +\n\t\"\\xe3\\x85\\x03\\xca\\xe0\\x84\\x03\\xca\\xe1\\x87\\x03\\xca\\xe6\\x86\\x03\\xca\\xe7\\x99\" +\n\t\"\\x03\\xca\\xe4\\x98\\x03\\xca\\xe5\\x9b\\x03\\xca\\xea\\x9a\\x03\\xca\\xeb\\x9d\\x03\\xca\" +\n\t\"\\xe8\\x9c\\x03ؓ\\x89\\x03ߔ\\x8b\\x02\\x010\\x03\\x03\\x04\\x1e\\x03\\x04\\x15\\x12\\x03\" +\n\t\"\\x0b\\x05,\\x03\\x06\\x04\\x00\\x03\\x06\\x04)\\x03\\x06\\x044\\x03\\x06\\x04<\\x03\\x06\" +\n\t\"\\x05\\x1d\\x03\\x06\\x06\\x00\\x03\\x06\\x06\\x0a\\x03\\x06\\x06'\\x03\\x06\\x062\\x03\" +\n\t\"\\x0786\\x03\\x079/\\x03\\x079 \\x03\\x07:\\x0e\\x03\\x07:\\x1b\\x03\\x07:%\\x03\\x07;/\" +\n\t\"\\x03\\x07;%\\x03\\x074\\x11\\x03\\x076\\x09\\x03\\x077*\\x03\\x070\\x01\\x03\\x070\\x0f\" +\n\t\"\\x03\\x070.\\x03\\x071\\x16\\x03\\x071\\x04\\x03\\x0710\\x03\\x072\\x18\\x03\\x072-\" +\n\t\"\\x03\\x073\\x14\\x03\\x073>\\x03\\x07'\\x09\\x03\\x07 \\x00\\x03\\x07\\x1f\\x0b\\x03\" +\n\t\"\\x07\\x18#\\x03\\x07\\x18(\\x03\\x07\\x186\\x03\\x07\\x18\\x03\\x03\\x07\\x19\\x16\\x03\" +\n\t\"\\x07\\x116\\x03\\x07\\x12'\\x03\\x07\\x13\\x10\\x03\\x07\\x0c&\\x03\\x07\\x0c\\x08\\x03\" +\n\t\"\\x07\\x0c\\x13\\x03\\x07\\x0d\\x02\\x03\\x07\\x0d\\x1c\\x03\\x07\\x0b5\\x03\\x07\\x0b\" +\n\t\"\\x0a\\x03\\x07\\x0b\\x01\\x03\\x07\\x0b\\x0f\\x03\\x07\\x05\\x00\\x03\\x07\\x05\\x09\\x03\" +\n\t\"\\x07\\x05\\x0b\\x03\\x07\\x07\\x01\\x03\\x07\\x07\\x08\\x03\\x07\\x00<\\x03\\x07\\x00+\" +\n\t\"\\x03\\x07\\x01)\\x03\\x07\\x01\\x1b\\x03\\x07\\x01\\x08\\x03\\x07\\x03?\\x03\\x0445\\x03\" +\n\t\"\\x044\\x08\\x03\\x0454\\x03\\x04)/\\x03\\x04)5\\x03\\x04+\\x05\\x03\\x04+\\x14\\x03\" +\n\t\"\\x04+ \\x03\\x04+<\\x03\\x04*&\\x03\\x04*\\x22\\x03\\x04&8\\x03\\x04!\\x01\\x03\\x04!\" +\n\t\"\\x22\\x03\\x04\\x11+\\x03\\x04\\x10.\\x03\\x04\\x104\\x03\\x04\\x13=\\x03\\x04\\x12\\x04\" +\n\t\"\\x03\\x04\\x12\\x0a\\x03\\x04\\x0d\\x1d\\x03\\x04\\x0d\\x07\\x03\\x04\\x0d \\x03\\x05<>\" +\n\t\"\\x03\\x055<\\x03\\x055!\\x03\\x055#\\x03\\x055&\\x03\\x054\\x1d\\x03\\x054\\x02\\x03\" +\n\t\"\\x054\\x07\\x03\\x0571\\x03\\x053\\x1a\\x03\\x053\\x16\\x03\\x05.<\\x03\\x05.\\x07\\x03\" +\n\t\"\\x05):\\x03\\x05)<\\x03\\x05)\\x0c\\x03\\x05)\\x15\\x03\\x05+-\\x03\\x05+5\\x03\\x05$\" +\n\t\"\\x1e\\x03\\x05$\\x14\\x03\\x05'\\x04\\x03\\x05'\\x14\\x03\\x05&\\x02\\x03\\x05\\x226\" +\n\t\"\\x03\\x05\\x22\\x0c\\x03\\x05\\x22\\x1c\\x03\\x05\\x19\\x0a\\x03\\x05\\x1b\\x09\\x03\\x05\" +\n\t\"\\x1b\\x0c\\x03\\x05\\x14\\x07\\x03\\x05\\x16?\\x03\\x05\\x16\\x0c\\x03\\x05\\x0c\\x05\" +\n\t\"\\x03\\x05\\x0e\\x0f\\x03\\x05\\x01\\x0e\\x03\\x05\\x00(\\x03\\x05\\x030\\x03\\x05\\x03\" +\n\t\"\\x06\\x03\\x0a==\\x03\\x0a=1\\x03\\x0a=,\\x03\\x0a=\\x0c\\x03\\x0a??\\x03\\x0a<\\x08\" +\n\t\"\\x03\\x0a9!\\x03\\x0a9)\\x03\\x0a97\\x03\\x0a99\\x03\\x0a6\\x0a\\x03\\x0a6\\x1c\\x03\" +\n\t\"\\x0a6\\x17\\x03\\x0a7'\\x03\\x0a78\\x03\\x0a73\\x03\\x0a'\\x01\\x03\\x0a'&\\x03\\x0a\" +\n\t\"\\x1f\\x0e\\x03\\x0a\\x1f\\x03\\x03\\x0a\\x1f3\\x03\\x0a\\x1b/\\x03\\x0a\\x18\\x19\\x03\" +\n\t\"\\x0a\\x19\\x01\\x03\\x0a\\x16\\x14\\x03\\x0a\\x0e\\x22\\x03\\x0a\\x0f\\x10\\x03\\x0a\\x0f\" +\n\t\"\\x02\\x03\\x0a\\x0f \\x03\\x0a\\x0c\\x04\\x03\\x0a\\x0b>\\x03\\x0a\\x0b+\\x03\\x0a\\x08/\" +\n\t\"\\x03\\x0a\\x046\\x03\\x0a\\x05\\x14\\x03\\x0a\\x00\\x04\\x03\\x0a\\x00\\x10\\x03\\x0a\" +\n\t\"\\x00\\x14\\x03\\x0b<3\\x03\\x0b;*\\x03\\x0b9\\x22\\x03\\x0b9)\\x03\\x0b97\\x03\\x0b+\" +\n\t\"\\x10\\x03\\x0b((\\x03\\x0b&5\\x03\\x0b$\\x1c\\x03\\x0b$\\x12\\x03\\x0b%\\x04\\x03\\x0b#\" +\n\t\"<\\x03\\x0b#0\\x03\\x0b#\\x0d\\x03\\x0b#\\x19\\x03\\x0b!:\\x03\\x0b!\\x1f\\x03\\x0b!\" +\n\t\"\\x00\\x03\\x0b\\x1e5\\x03\\x0b\\x1c\\x1d\\x03\\x0b\\x1d-\\x03\\x0b\\x1d(\\x03\\x0b\\x18.\" +\n\t\"\\x03\\x0b\\x18 \\x03\\x0b\\x18\\x16\\x03\\x0b\\x14\\x13\\x03\\x0b\\x15$\\x03\\x0b\\x15\" +\n\t\"\\x22\\x03\\x0b\\x12\\x1b\\x03\\x0b\\x12\\x10\\x03\\x0b\\x132\\x03\\x0b\\x13=\\x03\\x0b\" +\n\t\"\\x12\\x18\\x03\\x0b\\x0c&\\x03\\x0b\\x061\\x03\\x0b\\x06:\\x03\\x0b\\x05#\\x03\\x0b\\x05\" +\n\t\"<\\x03\\x0b\\x04\\x0b\\x03\\x0b\\x04\\x04\\x03\\x0b\\x04\\x1b\\x03\\x0b\\x042\\x03\\x0b\" +\n\t\"\\x041\\x03\\x0b\\x03\\x03\\x03\\x0b\\x03\\x1d\\x03\\x0b\\x03/\\x03\\x0b\\x03+\\x03\\x0b\" +\n\t\"\\x02\\x1b\\x03\\x0b\\x02\\x00\\x03\\x0b\\x01\\x1e\\x03\\x0b\\x01\\x08\\x03\\x0b\\x015\" +\n\t\"\\x03\\x06\\x0d9\\x03\\x06\\x0d=\\x03\\x06\\x0d?\\x03\\x02\\x001\\x03\\x02\\x003\\x03\" +\n\t\"\\x02\\x02\\x19\\x03\\x02\\x006\\x03\\x02\\x02\\x1b\\x03\\x02\\x004\\x03\\x02\\x00<\\x03\" +\n\t\"\\x02\\x02\\x0a\\x03\\x02\\x02\\x0e\\x03\\x02\\x01\\x1a\\x03\\x02\\x01\\x07\\x03\\x02\\x01\" +\n\t\"\\x05\\x03\\x02\\x01\\x0b\\x03\\x02\\x01%\\x03\\x02\\x01\\x0c\\x03\\x02\\x01\\x04\\x03\" +\n\t\"\\x02\\x01\\x1c\\x03\\x02\\x00.\\x03\\x02\\x002\\x03\\x02\\x00>\\x03\\x02\\x00\\x12\\x03\" +\n\t\"\\x02\\x00\\x16\\x03\\x02\\x011\\x03\\x02\\x013\\x03\\x02\\x02 \\x03\\x02\\x02%\\x03\\x02\" +\n\t\"\\x02$\\x03\\x02\\x028\\x03\\x02\\x02;\\x03\\x02\\x024\\x03\\x02\\x012\\x03\\x02\\x022\" +\n\t\"\\x03\\x02\\x02/\\x03\\x02\\x01,\\x03\\x02\\x01\\x13\\x03\\x02\\x01\\x16\\x03\\x02\\x01\" +\n\t\"\\x11\\x03\\x02\\x01\\x1e\\x03\\x02\\x01\\x15\\x03\\x02\\x01\\x17\\x03\\x02\\x01\\x0f\\x03\" +\n\t\"\\x02\\x01\\x08\\x03\\x02\\x00?\\x03\\x02\\x03\\x07\\x03\\x02\\x03\\x0d\\x03\\x02\\x03\" +\n\t\"\\x13\\x03\\x02\\x03\\x1d\\x03\\x02\\x03\\x1f\\x03\\x02\\x00\\x03\\x03\\x02\\x00\\x0d\\x03\" +\n\t\"\\x02\\x00\\x01\\x03\\x02\\x00\\x1b\\x03\\x02\\x00\\x19\\x03\\x02\\x00\\x18\\x03\\x02\\x00\" +\n\t\"\\x13\\x03\\x02\\x00/\\x03\\x07>\\x12\\x03\\x07<\\x1f\\x03\\x07>\\x1d\\x03\\x06\\x1d\\x0e\" +\n\t\"\\x03\\x07>\\x1c\\x03\\x07>:\\x03\\x07>\\x13\\x03\\x04\\x12+\\x03\\x07?\\x03\\x03\\x07>\" +\n\t\"\\x02\\x03\\x06\\x224\\x03\\x06\\x1a.\\x03\\x07<%\\x03\\x06\\x1c\\x0b\\x03\\x0609\\x03\" +\n\t\"\\x05\\x1f\\x01\\x03\\x04'\\x08\\x03\\x93\\xfd\\xf5\\x03\\x02\\x0d \\x03\\x02\\x0d#\\x03\" +\n\t\"\\x02\\x0d!\\x03\\x02\\x0d&\\x03\\x02\\x0d\\x22\\x03\\x02\\x0d/\\x03\\x02\\x0d,\\x03\\x02\" +\n\t\"\\x0d$\\x03\\x02\\x0d'\\x03\\x02\\x0d%\\x03\\x02\\x0d;\\x03\\x02\\x0d=\\x03\\x02\\x0d?\" +\n\t\"\\x03\\x099.\\x03\\x08\\x0b7\\x03\\x08\\x02\\x14\\x03\\x08\\x14\\x0d\\x03\\x08.:\\x03\" +\n\t\"\\x089'\\x03\\x0f\\x0b\\x18\\x03\\x0f\\x1c1\\x03\\x0f\\x17&\\x03\\x0f9\\x1f\\x03\\x0f0\" +\n\t\"\\x0c\\x03\\x0e\\x0a9\\x03\\x0e\\x056\\x03\\x0e\\x1c#\\x03\\x0f\\x13\\x0e\\x03\\x072\\x00\" +\n\t\"\\x03\\x070\\x0d\\x03\\x072\\x0b\\x03\\x06\\x11\\x18\\x03\\x070\\x10\\x03\\x06\\x0f(\\x03\" +\n\t\"\\x072\\x05\\x03\\x06\\x0f,\\x03\\x073\\x15\\x03\\x06\\x07\\x08\\x03\\x05\\x16\\x02\\x03\" +\n\t\"\\x04\\x0b \\x03\\x05:8\\x03\\x05\\x16%\\x03\\x0a\\x0d\\x1f\\x03\\x06\\x16\\x10\\x03\\x05\" +\n\t\"\\x1d5\\x03\\x05*;\\x03\\x05\\x16\\x1b\\x03\\x04.-\\x03\\x06\\x1a\\x19\\x03\\x04\\x03,\" +\n\t\"\\x03\\x0b87\\x03\\x04/\\x0a\\x03\\x06\\x00,\\x03\\x04-\\x01\\x03\\x04\\x1e-\\x03\\x06/(\" +\n\t\"\\x03\\x0a\\x0b5\\x03\\x06\\x0e7\\x03\\x06\\x07.\\x03\\x0597\\x03\\x0a*%\\x03\\x0760\" +\n\t\"\\x03\\x06\\x0c;\\x03\\x05'\\x00\\x03\\x072.\\x03\\x072\\x08\\x03\\x06=\\x01\\x03\\x06\" +\n\t\"\\x05\\x1b\\x03\\x06\\x06\\x12\\x03\\x06$=\\x03\\x06'\\x0d\\x03\\x04\\x11\\x0f\\x03\\x076\" +\n\t\",\\x03\\x06\\x07;\\x03\\x06.,\\x03\\x86\\xf9\\xea\\x03\\x8f\\xff\\xeb\\x02\\x092\\x02\" +\n\t\"\\x095\\x02\\x094\\x02\\x09;\\x02\\x09>\\x02\\x098\\x02\\x09*\\x02\\x09/\\x02\\x09,\\x02\" +\n\t\"\\x09%\\x02\\x09&\\x02\\x09#\\x02\\x09 \\x02\\x08!\\x02\\x08%\\x02\\x08$\\x02\\x08+\\x02\" +\n\t\"\\x08.\\x02\\x08*\\x02\\x08&\\x02\\x088\\x02\\x08>\\x02\\x084\\x02\\x086\\x02\\x080\\x02\" +\n\t\"\\x08\\x10\\x02\\x08\\x17\\x02\\x08\\x12\\x02\\x08\\x1d\\x02\\x08\\x1f\\x02\\x08\\x13\\x02\" +\n\t\"\\x08\\x15\\x02\\x08\\x14\\x02\\x08\\x0c\\x03\\x8b\\xfd\\xd0\\x03\\x81\\xec\\xc6\\x03\\x87\" +\n\t\"\\xe0\\x8a\\x03-2\\xe3\\x03\\x80\\xef\\xe4\\x03-2\\xea\\x03\\x88\\xe6\\xeb\\x03\\x8e\\xe6\" +\n\t\"\\xe8\\x03\\x84\\xe6\\xe9\\x03\\x97\\xe6\\xee\\x03-2\\xf9\\x03-2\\xf6\\x03\\x8e\\xe3\\xad\" +\n\t\"\\x03\\x80\\xe3\\x92\\x03\\x88\\xe3\\x90\\x03\\x8e\\xe3\\x90\\x03\\x80\\xe3\\x97\\x03\\x88\" +\n\t\"\\xe3\\x95\\x03\\x88\\xfe\\xcb\\x03\\x8e\\xfe\\xca\\x03\\x84\\xfe\\xcd\\x03\\x91\\xef\\xc9\" +\n\t\"\\x03-2\\xc1\\x03-2\\xc0\\x03-2\\xcb\\x03\\x88@\\x09\\x03\\x8e@\\x08\\x03\\x8f\\xe0\\xf5\" +\n\t\"\\x03\\x8e\\xe6\\xf9\\x03\\x8e\\xe0\\xfa\\x03\\x93\\xff\\xf4\\x03\\x84\\xee\\xd3\\x03\\x0b\" +\n\t\"(\\x04\\x023 \\x03\\x0b)\\x08\\x021;\\x02\\x01*\\x03\\x0b#\\x10\\x03\\x0b 0\\x03\\x0b!\" +\n\t\"\\x10\\x03\\x0b!0\\x03\\x07\\x15\\x08\\x03\\x09?5\\x03\\x07\\x1f\\x08\\x03\\x07\\x17\\x0b\" +\n\t\"\\x03\\x09\\x1f\\x15\\x03\\x0b\\x1c7\\x03\\x0a+#\\x03\\x06\\x1a\\x1b\\x03\\x06\\x1a\\x14\" +\n\t\"\\x03\\x0a\\x01\\x18\\x03\\x06#\\x1b\\x03\\x0a2\\x0c\\x03\\x0a\\x01\\x04\\x03\\x09#;\\x03\" +\n\t\"\\x08='\\x03\\x08\\x1a\\x0a\\x03\\x07</\\x03\\x07:+\\x03\\x07\\x07*\\x03\\x06&\\x1c\\x03\" +\n\t\"\\x09\\x0c\\x16\\x03\\x09\\x10\\x0e\\x03\\x08'\\x0f\\x03\\x08+\\x09\\x03\\x074%\\x03\\x06\" +\n\t\"!3\\x03\\x06\\x03+\\x03\\x0b\\x1e\\x19\\x03\\x0a))\\x03\\x09\\x08\\x19\\x03\\x08,\\x05\" +\n\t\"\\x03\\x07<2\\x03\\x06\\x1c>\\x03\\x0a\\x111\\x03\\x09\\x1b\\x09\\x03\\x073.\\x03\\x07\" +\n\t\"\\x01\\x00\\x03\\x09/,\\x03\\x07#>\\x03\\x07\\x048\\x03\\x0a\\x1f\\x22\\x03\\x098>\\x03\" +\n\t\"\\x09\\x11\\x00\\x03\\x08/\\x17\\x03\\x06'\\x22\\x03\\x0b\\x1a+\\x03\\x0a\\x22\\x19\\x03\" +\n\t\"\\x0a/1\\x03\\x0974\\x03\\x09\\x0f\\x22\\x03\\x08,\\x22\\x03\\x08?\\x14\\x03\\x07$5\\x03\" +\n\t\"\\x07<3\\x03\\x07=*\\x03\\x07\\x13\\x18\\x03\\x068\\x0a\\x03\\x06\\x09\\x16\\x03\\x06\" +\n\t\"\\x13\\x00\\x03\\x08\\x067\\x03\\x08\\x01\\x03\\x03\\x08\\x12\\x1d\\x03\\x07+7\\x03\\x06(\" +\n\t\";\\x03\\x06\\x1c?\\x03\\x07\\x0e\\x17\\x03\\x0a\\x06\\x1d\\x03\\x0a\\x19\\x07\\x03\\x08\" +\n\t\"\\x14$\\x03\\x07$;\\x03\\x08,$\\x03\\x08\\x06\\x0d\\x03\\x07\\x16\\x0a\\x03\\x06>>\\x03\" +\n\t\"\\x0a\\x06\\x12\\x03\\x0a\\x14)\\x03\\x09\\x0d\\x1f\\x03\\x09\\x12\\x17\\x03\\x09\\x19\" +\n\t\"\\x01\\x03\\x08\\x11 \\x03\\x08\\x1d'\\x03\\x06<\\x1a\\x03\\x0a.\\x00\\x03\\x07'\\x18\" +\n\t\"\\x03\\x0a\\x22\\x08\\x03\\x08\\x0d\\x0a\\x03\\x08\\x13)\\x03\\x07*)\\x03\\x06<,\\x03\" +\n\t\"\\x07\\x0b\\x1a\\x03\\x09.\\x14\\x03\\x09\\x0d\\x1e\\x03\\x07\\x0e#\\x03\\x0b\\x1d'\\x03\" +\n\t\"\\x0a\\x0a8\\x03\\x09%2\\x03\\x08+&\\x03\\x080\\x12\\x03\\x0a)4\\x03\\x08\\x06\\x1f\\x03\" +\n\t\"\\x0b\\x1b\\x1a\\x03\\x0a\\x1b\\x0f\\x03\\x0b\\x1d*\\x03\\x09\\x16$\\x03\\x090\\x11\\x03\" +\n\t\"\\x08\\x11\\x08\\x03\\x0a*(\\x03\\x0a\\x042\\x03\\x089,\\x03\\x074'\\x03\\x07\\x0f\\x05\" +\n\t\"\\x03\\x09\\x0b\\x0a\\x03\\x07\\x1b\\x01\\x03\\x09\\x17:\\x03\\x09.\\x0d\\x03\\x07.\\x11\" +\n\t\"\\x03\\x09+\\x15\\x03\\x080\\x13\\x03\\x0b\\x1f\\x19\\x03\\x0a \\x11\\x03\\x0a\\x220\\x03\" +\n\t\"\\x09\\x07;\\x03\\x08\\x16\\x1c\\x03\\x07,\\x13\\x03\\x07\\x0e/\\x03\\x06\\x221\\x03\\x0a\" +\n\t\".\\x0a\\x03\\x0a7\\x02\\x03\\x0a\\x032\\x03\\x0a\\x1d.\\x03\\x091\\x06\\x03\\x09\\x19:\" +\n\t\"\\x03\\x08\\x02/\\x03\\x060+\\x03\\x06\\x0f-\\x03\\x06\\x1c\\x1f\\x03\\x06\\x1d\\x07\\x03\" +\n\t\"\\x0a,\\x11\\x03\\x09=\\x0d\\x03\\x09\\x0b;\\x03\\x07\\x1b/\\x03\\x0a\\x1f:\\x03\\x09 \" +\n\t\"\\x1f\\x03\\x09.\\x10\\x03\\x094\\x0b\\x03\\x09\\x1a1\\x03\\x08#\\x1a\\x03\\x084\\x1d\" +\n\t\"\\x03\\x08\\x01\\x1f\\x03\\x08\\x11\\x22\\x03\\x07'8\\x03\\x07\\x1a>\\x03\\x0757\\x03\" +\n\t\"\\x06&9\\x03\\x06+\\x11\\x03\\x0a.\\x0b\\x03\\x0a,>\\x03\\x0a4#\\x03\\x08%\\x17\\x03\" +\n\t\"\\x07\\x05\\x22\\x03\\x07\\x0c\\x0b\\x03\\x0a\\x1d+\\x03\\x0a\\x19\\x16\\x03\\x09+\\x1f\" +\n\t\"\\x03\\x09\\x08\\x0b\\x03\\x08\\x16\\x18\\x03\\x08+\\x12\\x03\\x0b\\x1d\\x0c\\x03\\x0a=\" +\n\t\"\\x10\\x03\\x0a\\x09\\x0d\\x03\\x0a\\x10\\x11\\x03\\x09&0\\x03\\x08(\\x1f\\x03\\x087\\x07\" +\n\t\"\\x03\\x08\\x185\\x03\\x07'6\\x03\\x06.\\x05\\x03\\x06=\\x04\\x03\\x06;;\\x03\\x06\\x06,\" +\n\t\"\\x03\\x0b\\x18>\\x03\\x08\\x00\\x18\\x03\\x06 \\x03\\x03\\x06<\\x00\\x03\\x09%\\x18\\x03\" +\n\t\"\\x0b\\x1c<\\x03\\x0a%!\\x03\\x0a\\x09\\x12\\x03\\x0a\\x16\\x02\\x03\\x090'\\x03\\x09\" +\n\t\"\\x0e=\\x03\\x08 \\x0e\\x03\\x08>\\x03\\x03\\x074>\\x03\\x06&?\\x03\\x06\\x19\\x09\\x03\" +\n\t\"\\x06?(\\x03\\x0a-\\x0e\\x03\\x09:3\\x03\\x098:\\x03\\x09\\x12\\x0b\\x03\\x09\\x1d\\x17\" +\n\t\"\\x03\\x087\\x05\\x03\\x082\\x14\\x03\\x08\\x06%\\x03\\x08\\x13\\x1f\\x03\\x06\\x06\\x0e\" +\n\t\"\\x03\\x0a\\x22<\\x03\\x09/<\\x03\\x06>+\\x03\\x0a'?\\x03\\x0a\\x13\\x0c\\x03\\x09\\x10<\" +\n\t\"\\x03\\x07\\x1b=\\x03\\x0a\\x19\\x13\\x03\\x09\\x22\\x1d\\x03\\x09\\x07\\x0d\\x03\\x08)\" +\n\t\"\\x1c\\x03\\x06=\\x1a\\x03\\x0a/4\\x03\\x0a7\\x11\\x03\\x0a\\x16:\\x03\\x09?3\\x03\\x09:\" +\n\t\"/\\x03\\x09\\x05\\x0a\\x03\\x09\\x14\\x06\\x03\\x087\\x22\\x03\\x080\\x07\\x03\\x08\\x1a\" +\n\t\"\\x1f\\x03\\x07\\x04(\\x03\\x07\\x04\\x09\\x03\\x06 %\\x03\\x06<\\x08\\x03\\x0a+\\x14\" +\n\t\"\\x03\\x09\\x1d\\x16\\x03\\x0a70\\x03\\x08 >\\x03\\x0857\\x03\\x070\\x0a\\x03\\x06=\\x12\" +\n\t\"\\x03\\x06\\x16%\\x03\\x06\\x1d,\\x03\\x099#\\x03\\x09\\x10>\\x03\\x07 \\x1e\\x03\\x08\" +\n\t\"\\x0c<\\x03\\x08\\x0b\\x18\\x03\\x08\\x15+\\x03\\x08,:\\x03\\x08%\\x22\\x03\\x07\\x0a$\" +\n\t\"\\x03\\x0b\\x1c=\\x03\\x07+\\x08\\x03\\x0a/\\x05\\x03\\x0a \\x07\\x03\\x0a\\x12'\\x03\" +\n\t\"\\x09#\\x11\\x03\\x08\\x1b\\x15\\x03\\x0a\\x06\\x01\\x03\\x09\\x1c\\x1b\\x03\\x0922\\x03\" +\n\t\"\\x07\\x14<\\x03\\x07\\x09\\x04\\x03\\x061\\x04\\x03\\x07\\x0e\\x01\\x03\\x0a\\x13\\x18\" +\n\t\"\\x03\\x0a-\\x0c\\x03\\x0a?\\x0d\\x03\\x0a\\x09\\x0a\\x03\\x091&\\x03\\x0a/\\x0b\\x03\" +\n\t\"\\x08$<\\x03\\x083\\x1d\\x03\\x08\\x0c$\\x03\\x08\\x0d\\x07\\x03\\x08\\x0d?\\x03\\x08\" +\n\t\"\\x0e\\x14\\x03\\x065\\x0a\\x03\\x08\\x1a#\\x03\\x08\\x16#\\x03\\x0702\\x03\\x07\\x03\" +\n\t\"\\x1a\\x03\\x06(\\x1d\\x03\\x06+\\x1b\\x03\\x06\\x0b\\x05\\x03\\x06\\x0b\\x17\\x03\\x06\" +\n\t\"\\x0c\\x04\\x03\\x06\\x1e\\x19\\x03\\x06+0\\x03\\x062\\x18\\x03\\x0b\\x16\\x1e\\x03\\x0a+\" +\n\t\"\\x16\\x03\\x0a-?\\x03\\x0a#:\\x03\\x0a#\\x10\\x03\\x0a%$\\x03\\x0a>+\\x03\\x0a01\\x03\" +\n\t\"\\x0a1\\x10\\x03\\x0a\\x099\\x03\\x0a\\x0a\\x12\\x03\\x0a\\x19\\x1f\\x03\\x0a\\x19\\x12\" +\n\t\"\\x03\\x09*)\\x03\\x09-\\x16\\x03\\x09.1\\x03\\x09.2\\x03\\x09<\\x0e\\x03\\x09> \\x03\" +\n\t\"\\x093\\x12\\x03\\x09\\x0b\\x01\\x03\\x09\\x1c2\\x03\\x09\\x11\\x1c\\x03\\x09\\x15%\\x03\" +\n\t\"\\x08,&\\x03\\x08!\\x22\\x03\\x089(\\x03\\x08\\x0b\\x1a\\x03\\x08\\x0d2\\x03\\x08\\x0c\" +\n\t\"\\x04\\x03\\x08\\x0c\\x06\\x03\\x08\\x0c\\x1f\\x03\\x08\\x0c\\x0c\\x03\\x08\\x0f\\x1f\\x03\" +\n\t\"\\x08\\x0f\\x1d\\x03\\x08\\x00\\x14\\x03\\x08\\x03\\x14\\x03\\x08\\x06\\x16\\x03\\x08\\x1e\" +\n\t\"#\\x03\\x08\\x11\\x11\\x03\\x08\\x10\\x18\\x03\\x08\\x14(\\x03\\x07)\\x1e\\x03\\x07.1\" +\n\t\"\\x03\\x07 $\\x03\\x07 '\\x03\\x078\\x08\\x03\\x07\\x0d0\\x03\\x07\\x0f7\\x03\\x07\\x05#\" +\n\t\"\\x03\\x07\\x05\\x1a\\x03\\x07\\x1a7\\x03\\x07\\x1d-\\x03\\x07\\x17\\x10\\x03\\x06)\\x1f\" +\n\t\"\\x03\\x062\\x0b\\x03\\x066\\x16\\x03\\x06\\x09\\x11\\x03\\x09(\\x1e\\x03\\x07!5\\x03\" +\n\t\"\\x0b\\x11\\x16\\x03\\x0a/\\x04\\x03\\x0a,\\x1a\\x03\\x0b\\x173\\x03\\x0a,1\\x03\\x0a/5\" +\n\t\"\\x03\\x0a\\x221\\x03\\x0a\\x22\\x0d\\x03\\x0a?%\\x03\\x0a<,\\x03\\x0a?#\\x03\\x0a>\\x19\" +\n\t\"\\x03\\x0a\\x08&\\x03\\x0a\\x0b\\x0e\\x03\\x0a\\x0c:\\x03\\x0a\\x0c+\\x03\\x0a\\x03\\x22\" +\n\t\"\\x03\\x0a\\x06)\\x03\\x0a\\x11\\x10\\x03\\x0a\\x11\\x1a\\x03\\x0a\\x17-\\x03\\x0a\\x14(\" +\n\t\"\\x03\\x09)\\x1e\\x03\\x09/\\x09\\x03\\x09.\\x00\\x03\\x09,\\x07\\x03\\x09/*\\x03\\x09-9\" +\n\t\"\\x03\\x09\\x228\\x03\\x09%\\x09\\x03\\x09:\\x12\\x03\\x09;\\x1d\\x03\\x09?\\x06\\x03\" +\n\t\"\\x093%\\x03\\x096\\x05\\x03\\x096\\x08\\x03\\x097\\x02\\x03\\x09\\x07,\\x03\\x09\\x04,\" +\n\t\"\\x03\\x09\\x1f\\x16\\x03\\x09\\x11\\x03\\x03\\x09\\x11\\x12\\x03\\x09\\x168\\x03\\x08*\" +\n\t\"\\x05\\x03\\x08/2\\x03\\x084:\\x03\\x08\\x22+\\x03\\x08 0\\x03\\x08&\\x0a\\x03\\x08;\" +\n\t\"\\x10\\x03\\x08>$\\x03\\x08>\\x18\\x03\\x0829\\x03\\x082:\\x03\\x081,\\x03\\x081<\\x03\" +\n\t\"\\x081\\x1c\\x03\\x087#\\x03\\x087*\\x03\\x08\\x09'\\x03\\x08\\x00\\x1d\\x03\\x08\\x05-\" +\n\t\"\\x03\\x08\\x1f4\\x03\\x08\\x1d\\x04\\x03\\x08\\x16\\x0f\\x03\\x07*7\\x03\\x07'!\\x03\" +\n\t\"\\x07%\\x1b\\x03\\x077\\x0c\\x03\\x07\\x0c1\\x03\\x07\\x0c.\\x03\\x07\\x00\\x06\\x03\\x07\" +\n\t\"\\x01\\x02\\x03\\x07\\x010\\x03\\x07\\x06=\\x03\\x07\\x01\\x03\\x03\\x07\\x01\\x13\\x03\" +\n\t\"\\x07\\x06\\x06\\x03\\x07\\x05\\x0a\\x03\\x07\\x1f\\x09\\x03\\x07\\x17:\\x03\\x06*1\\x03\" +\n\t\"\\x06-\\x1d\\x03\\x06\\x223\\x03\\x062:\\x03\\x060$\\x03\\x066\\x1e\\x03\\x064\\x12\\x03\" +\n\t\"\\x0645\\x03\\x06\\x0b\\x00\\x03\\x06\\x0b7\\x03\\x06\\x07\\x1f\\x03\\x06\\x15\\x12\\x03\" +\n\t\"\\x0c\\x05\\x0f\\x03\\x0b+\\x0b\\x03\\x0b+-\\x03\\x06\\x16\\x1b\\x03\\x06\\x15\\x17\\x03\" +\n\t\"\\x89\\xca\\xea\\x03\\x89\\xca\\xe8\\x03\\x0c8\\x10\\x03\\x0c8\\x01\\x03\\x0c8\\x0f\\x03\" +\n\t\"\\x0d8%\\x03\\x0d8!\\x03\\x0c8-\\x03\\x0c8/\\x03\\x0c8+\\x03\\x0c87\\x03\\x0c85\\x03\" +\n\t\"\\x0c9\\x09\\x03\\x0c9\\x0d\\x03\\x0c9\\x0f\\x03\\x0c9\\x0b\\x03\\xcfu\\x0c\\x03\\xcfu\" +\n\t\"\\x0f\\x03\\xcfu\\x0e\\x03\\xcfu\\x09\\x03\\x0c9\\x10\\x03\\x0d9\\x0c\\x03\\xcf`;\\x03\" +\n\t\"\\xcf`>\\x03\\xcf`9\\x03\\xcf`8\\x03\\xcf`7\\x03\\xcf`*\\x03\\xcf`-\\x03\\xcf`,\\x03\" +\n\t\"\\x0d\\x1b\\x1a\\x03\\x0d\\x1b&\\x03\\x0c=.\\x03\\x0c=%\\x03\\x0c>\\x1e\\x03\\x0c>\\x14\" +\n\t\"\\x03\\x0c?\\x06\\x03\\x0c?\\x0b\\x03\\x0c?\\x0c\\x03\\x0c?\\x0d\\x03\\x0c?\\x02\\x03\" +\n\t\"\\x0c>\\x0f\\x03\\x0c>\\x08\\x03\\x0c>\\x09\\x03\\x0c>,\\x03\\x0c>\\x0c\\x03\\x0c?\\x13\" +\n\t\"\\x03\\x0c?\\x16\\x03\\x0c?\\x15\\x03\\x0c?\\x1c\\x03\\x0c?\\x1f\\x03\\x0c?\\x1d\\x03\" +\n\t\"\\x0c?\\x1a\\x03\\x0c?\\x17\\x03\\x0c?\\x08\\x03\\x0c?\\x09\\x03\\x0c?\\x0e\\x03\\x0c?\" +\n\t\"\\x04\\x03\\x0c?\\x05\\x03\\x0c<?\\x03\\x0c=\\x00\\x03\\x0c=\\x06\\x03\\x0c=\\x05\\x03\" +\n\t\"\\x0c=\\x0c\\x03\\x0c=\\x0f\\x03\\x0c=\\x0d\\x03\\x0c=\\x0b\\x03\\x0c=\\x07\\x03\\x0c=\" +\n\t\"\\x19\\x03\\x0c=\\x15\\x03\\x0c=\\x11\\x03\\x0c=1\\x03\\x0c=3\\x03\\x0c=0\\x03\\x0c=>\" +\n\t\"\\x03\\x0c=2\\x03\\x0c=6\\x03\\x0c<\\x07\\x03\\x0c<\\x05\\x03\\x0e:!\\x03\\x0e:#\\x03\" +\n\t\"\\x0e8\\x09\\x03\\x0e:&\\x03\\x0e8\\x0b\\x03\\x0e:$\\x03\\x0e:,\\x03\\x0e8\\x1a\\x03\" +\n\t\"\\x0e8\\x1e\\x03\\x0e:*\\x03\\x0e:7\\x03\\x0e:5\\x03\\x0e:;\\x03\\x0e:\\x15\\x03\\x0e:<\" +\n\t\"\\x03\\x0e:4\\x03\\x0e:'\\x03\\x0e:-\\x03\\x0e:%\\x03\\x0e:?\\x03\\x0e:=\\x03\\x0e:)\" +\n\t\"\\x03\\x0e:/\\x03\\xcfs'\\x03\\x0d=\\x0f\\x03\\x0d+*\\x03\\x0d99\\x03\\x0d9;\\x03\\x0d9\" +\n\t\"?\\x03\\x0d)\\x0d\\x03\\x0d(%\\x02\\x01\\x18\\x02\\x01(\\x02\\x01\\x1e\\x03\\x0f$!\\x03\" +\n\t\"\\x0f87\\x03\\x0f4\\x0e\\x03\\x0f5\\x1d\\x03\\x06'\\x03\\x03\\x0f\\x08\\x18\\x03\\x0f\" +\n\t\"\\x0d\\x1b\\x03\\x0e2=\\x03\\x0e;\\x08\\x03\\x0e:\\x0b\\x03\\x0e\\x06$\\x03\\x0e\\x0d)\" +\n\t\"\\x03\\x0e\\x16\\x1f\\x03\\x0e\\x16\\x1b\\x03\\x0d$\\x0a\\x03\\x05,\\x1d\\x03\\x0d. \\x03\" +\n\t\"\\x0d.#\\x03\\x0c(/\\x03\\x09%\\x02\\x03\\x0d90\\x03\\x0d\\x0e4\\x03\\x0d\\x0d\\x0f\\x03\" +\n\t\"\\x0c#\\x00\\x03\\x0c,\\x1e\\x03\\x0c2\\x0e\\x03\\x0c\\x01\\x17\\x03\\x0c\\x09:\\x03\\x0e\" +\n\t\"\\x173\\x03\\x0c\\x08\\x03\\x03\\x0c\\x11\\x07\\x03\\x0c\\x10\\x18\\x03\\x0c\\x1f\\x1c\" +\n\t\"\\x03\\x0c\\x19\\x0e\\x03\\x0c\\x1a\\x1f\\x03\\x0f0>\\x03\\x0b->\\x03\\x0b<+\\x03\\x0b8\" +\n\t\"\\x13\\x03\\x0b\\x043\\x03\\x0b\\x14\\x03\\x03\\x0b\\x16%\\x03\\x0d\\x22&\\x03\\x0b\\x1a\" +\n\t\"\\x1a\\x03\\x0b\\x1a\\x04\\x03\\x0a%9\\x03\\x0a&2\\x03\\x0a&0\\x03\\x0a!\\x1a\\x03\\x0a!\" +\n\t\"7\\x03\\x0a5\\x10\\x03\\x0a=4\\x03\\x0a?\\x0e\\x03\\x0a>\\x10\\x03\\x0a\\x00 \\x03\\x0a\" +\n\t\"\\x0f:\\x03\\x0a\\x0f9\\x03\\x0a\\x0b\\x0a\\x03\\x0a\\x17%\\x03\\x0a\\x1b-\\x03\\x09-\" +\n\t\"\\x1a\\x03\\x09,4\\x03\\x09.,\\x03\\x09)\\x09\\x03\\x096!\\x03\\x091\\x1f\\x03\\x093\" +\n\t\"\\x16\\x03\\x0c+\\x1f\\x03\\x098 \\x03\\x098=\\x03\\x0c(\\x1a\\x03\\x0c(\\x16\\x03\\x09\" +\n\t\"\\x0a+\\x03\\x09\\x16\\x12\\x03\\x09\\x13\\x0e\\x03\\x09\\x153\\x03\\x08)!\\x03\\x09\\x1a\" +\n\t\"\\x01\\x03\\x09\\x18\\x01\\x03\\x08%#\\x03\\x08>\\x22\\x03\\x08\\x05%\\x03\\x08\\x02*\" +\n\t\"\\x03\\x08\\x15;\\x03\\x08\\x1b7\\x03\\x0f\\x07\\x1d\\x03\\x0f\\x04\\x03\\x03\\x070\\x0c\" +\n\t\"\\x03\\x07;\\x0b\\x03\\x07\\x08\\x17\\x03\\x07\\x12\\x06\\x03\\x06/-\\x03\\x0671\\x03\" +\n\t\"\\x065+\\x03\\x06>7\\x03\\x06\\x049\\x03\\x05+\\x1e\\x03\\x05,\\x17\\x03\\x05 \\x1d\\x03\" +\n\t\"\\x05\\x22\\x05\\x03\\x050\\x1d\"\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// idnaTrie. Total size: 29708 bytes (29.01 KiB). Checksum: c3ecc76d8fffa6e6.\ntype idnaTrie struct{}\n\nfunc newIdnaTrie(i int) *idnaTrie {\n\treturn &idnaTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *idnaTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 125:\n\t\treturn uint16(idnaValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 125\n\t\treturn uint16(idnaSparse.lookup(n, b))\n\t}\n}\n\n// idnaValues: 127 blocks, 8128 entries, 16256 bytes\n// The third block is the zero block.\nvar idnaValues = [8128]uint16{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080,\n\t0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080,\n\t0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080,\n\t0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080,\n\t0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080,\n\t0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080,\n\t0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080,\n\t0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080,\n\t0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008,\n\t0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080,\n\t0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105,\n\t0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105,\n\t0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105,\n\t0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105,\n\t0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080,\n\t0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008,\n\t0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008,\n\t0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008,\n\t0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008,\n\t0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080,\n\t0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040,\n\t0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040,\n\t0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040,\n\t0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040,\n\t0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040,\n\t0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018,\n\t0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018,\n\t0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a,\n\t0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005,\n\t0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018,\n\t0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018,\n\t// Block 0x4, offset 0x100\n\t0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008,\n\t0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008,\n\t0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008,\n\t0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008,\n\t0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008,\n\t0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008,\n\t0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008,\n\t0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008,\n\t0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008,\n\t0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d,\n\t0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d,\n\t0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008,\n\t0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008,\n\t0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008,\n\t0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008,\n\t0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008,\n\t0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008,\n\t0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008,\n\t0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008,\n\t0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d,\n\t0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008,\n\t0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d,\n\t0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d,\n\t0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d,\n\t0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155,\n\t0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008,\n\t0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d,\n\t0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd,\n\t0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d,\n\t0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008,\n\t0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9,\n\t0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d,\n\t0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d,\n\t0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d,\n\t0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008,\n\t0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008,\n\t0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008,\n\t0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008,\n\t0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008,\n\t0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008,\n\t0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008,\n\t0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008,\n\t0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008,\n\t0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008,\n\t0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008,\n\t0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008,\n\t0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008,\n\t0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008,\n\t0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008,\n\t0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d,\n\t0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018,\n\t0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008,\n\t0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008,\n\t0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018,\n\t0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a,\n\t0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369,\n\t0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018,\n\t0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018,\n\t0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018,\n\t0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018,\n\t0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d,\n\t0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308,\n\t0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308,\n\t0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308,\n\t0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308,\n\t0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308,\n\t0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308,\n\t0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308,\n\t0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008,\n\t0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008,\n\t0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2,\n\t0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040,\n\t0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105,\n\t0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105,\n\t0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105,\n\t0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d,\n\t0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d,\n\t0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008,\n\t0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008,\n\t0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008,\n\t0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008,\n\t0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008,\n\t0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd,\n\t0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008,\n\t0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008,\n\t0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008,\n\t0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008,\n\t0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008,\n\t0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd,\n\t0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008,\n\t0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008,\n\t0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008,\n\t0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008,\n\t0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008,\n\t0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008,\n\t0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008,\n\t0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008,\n\t0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008,\n\t0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008,\n\t0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008,\n\t0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308,\n\t0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008,\n\t0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008,\n\t0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008,\n\t0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008,\n\t0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008,\n\t0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008,\n\t0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008,\n\t0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008,\n\t0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008,\n\t0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d,\n\t0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d,\n\t0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008,\n\t0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008,\n\t0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008,\n\t0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008,\n\t0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008,\n\t0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008,\n\t0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008,\n\t0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008,\n\t0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008,\n\t0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008,\n\t0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008,\n\t0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008,\n\t0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008,\n\t0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008,\n\t0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008,\n\t0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008,\n\t0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5,\n\t0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5,\n\t0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840,\n\t0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818,\n\t0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308,\n\t0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308,\n\t0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040,\n\t0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08,\n\t0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08,\n\t0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08,\n\t0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08,\n\t0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08,\n\t0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08,\n\t0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308,\n\t0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308,\n\t0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308,\n\t0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308,\n\t0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808,\n\t0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808,\n\t0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08,\n\t0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429,\n\t0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08,\n\t0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08,\n\t0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08,\n\t0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08,\n\t0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308,\n\t0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840,\n\t0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308,\n\t0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018,\n\t0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08,\n\t0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008,\n\t0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08,\n\t0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818,\n\t0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818,\n\t0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308,\n\t0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08,\n\t0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08,\n\t0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08,\n\t0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08,\n\t0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08,\n\t0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308,\n\t0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308,\n\t0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08,\n\t0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08,\n\t0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08,\n\t0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0808, 0x557: 0x0808,\n\t0x558: 0x0808, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040,\n\t0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08,\n\t0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08,\n\t0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040,\n\t0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040,\n\t0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040,\n\t0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308,\n\t0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008,\n\t0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308,\n\t0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308,\n\t0x598: 0x04c9, 0x599: 0x0501, 0x59a: 0x0539, 0x59b: 0x0571, 0x59c: 0x05a9, 0x59d: 0x05e1,\n\t0x59e: 0x0619, 0x59f: 0x0651, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308,\n\t0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008,\n\t0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008,\n\t0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008,\n\t0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008,\n\t0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008,\n\t0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008,\n\t0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040,\n\t0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008,\n\t0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008,\n\t0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008,\n\t0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040,\n\t0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008,\n\t0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040,\n\t0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040,\n\t0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040,\n\t0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008,\n\t0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040,\n\t0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008,\n\t0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0689, 0x61d: 0x06c1,\n\t0x61e: 0x0040, 0x61f: 0x06f9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308,\n\t0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008,\n\t0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008,\n\t0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018,\n\t0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018,\n\t0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x3308, 0x63f: 0x0040,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008,\n\t0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040,\n\t0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040,\n\t0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008,\n\t0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008,\n\t0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008,\n\t0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040,\n\t0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008,\n\t0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0731, 0x674: 0x0040, 0x675: 0x0008,\n\t0x676: 0x0769, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040,\n\t0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040,\n\t0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308,\n\t0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308,\n\t0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040,\n\t0x698: 0x0040, 0x699: 0x07a1, 0x69a: 0x07d9, 0x69b: 0x0811, 0x69c: 0x0008, 0x69d: 0x0040,\n\t0x69e: 0x0849, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040,\n\t0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008,\n\t0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008,\n\t0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308,\n\t0x6b6: 0x0018, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040,\n\t0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008,\n\t0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008,\n\t0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008,\n\t0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008,\n\t0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008,\n\t0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008,\n\t0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040,\n\t0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008,\n\t0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008,\n\t0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040,\n\t0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308,\n\t0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008,\n\t0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040,\n\t0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040,\n\t0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040,\n\t0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308,\n\t0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008,\n\t0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008,\n\t0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040,\n\t0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308,\n\t0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008,\n\t0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008,\n\t0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040,\n\t0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008,\n\t0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008,\n\t0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008,\n\t0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040,\n\t0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008,\n\t0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008,\n\t0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040,\n\t0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040,\n\t0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008,\n\t0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040,\n\t0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x0040, 0x796: 0x3308, 0x797: 0x3008,\n\t0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x0881, 0x79d: 0x08b9,\n\t0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308,\n\t0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008,\n\t0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008,\n\t0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018,\n\t0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040,\n\t0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008,\n\t0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040,\n\t0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040,\n\t0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040,\n\t0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040,\n\t0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008,\n\t0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008,\n\t0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008,\n\t0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008,\n\t0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040,\n\t0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040,\n\t0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308,\n\t0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040,\n\t0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040,\n\t0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040,\n\t0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308,\n\t0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008,\n\t0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008,\n\t0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040,\n\t0x836: 0x0040, 0x837: 0x0018, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018,\n\t0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0018, 0x845: 0x0008,\n\t0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008,\n\t0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040,\n\t0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008,\n\t0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008,\n\t0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008,\n\t0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040,\n\t0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008,\n\t0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008,\n\t0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040,\n\t0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040,\n\t0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008,\n\t0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040,\n\t0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040,\n\t0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040,\n\t0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308,\n\t0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008,\n\t0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008,\n\t0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040,\n\t0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040,\n\t0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040,\n\t0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008,\n\t0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040,\n\t0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008,\n\t0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018,\n\t0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308,\n\t0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008,\n\t0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008,\n\t0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018,\n\t0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008,\n\t0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040,\n\t0x906: 0x0008, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0008, 0x90a: 0x0008, 0x90b: 0x0040,\n\t0x90c: 0x0008, 0x90d: 0x0008, 0x90e: 0x0008, 0x90f: 0x0008, 0x910: 0x0008, 0x911: 0x0008,\n\t0x912: 0x0008, 0x913: 0x0008, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008,\n\t0x918: 0x0008, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008,\n\t0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0008, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008,\n\t0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0008, 0x929: 0x0008,\n\t0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0008, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008,\n\t0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x0929, 0x934: 0x3308, 0x935: 0x3308,\n\t0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x3b08, 0x93b: 0x3308,\n\t0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x09d1, 0x944: 0x0008, 0x945: 0x0008,\n\t0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008,\n\t0x94c: 0x0008, 0x94d: 0x0a09, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008,\n\t0x952: 0x0a41, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0a79,\n\t0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0ab1, 0x95d: 0x0008,\n\t0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008,\n\t0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0ae9,\n\t0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040,\n\t0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0b21, 0x974: 0x3308, 0x975: 0x0b59,\n\t0x976: 0x0b91, 0x977: 0x0bc9, 0x978: 0x0c19, 0x979: 0x0c51, 0x97a: 0x3308, 0x97b: 0x3308,\n\t0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x3308, 0x981: 0x0ca1, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018,\n\t0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008,\n\t0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308,\n\t0x992: 0x3308, 0x993: 0x0cd9, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308,\n\t0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0d11,\n\t0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0d49, 0x9a3: 0x3308,\n\t0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0d81, 0x9a8: 0x3308, 0x9a9: 0x3308,\n\t0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0db9, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308,\n\t0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308,\n\t0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x0df1, 0x9ba: 0x3308, 0x9bb: 0x3308,\n\t0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008,\n\t0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008,\n\t0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008,\n\t0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008,\n\t0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008,\n\t0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008,\n\t0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008,\n\t0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0039, 0x9ed: 0x0ed1, 0x9ee: 0x0ee9, 0x9ef: 0x0008,\n\t0x9f0: 0x0ef9, 0x9f1: 0x0f09, 0x9f2: 0x0f19, 0x9f3: 0x0f31, 0x9f4: 0x0249, 0x9f5: 0x0f41,\n\t0x9f6: 0x0259, 0x9f7: 0x0f51, 0x9f8: 0x0359, 0x9f9: 0x0f61, 0x9fa: 0x0f71, 0x9fb: 0x0008,\n\t0x9fc: 0x00d9, 0x9fd: 0x0f81, 0x9fe: 0x0f99, 0x9ff: 0x0269,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0fa9, 0xa01: 0x0fb9, 0xa02: 0x0279, 0xa03: 0x0039, 0xa04: 0x0fc9, 0xa05: 0x0fe1,\n\t0xa06: 0x05b5, 0xa07: 0x0ee9, 0xa08: 0x0ef9, 0xa09: 0x0f09, 0xa0a: 0x0ff9, 0xa0b: 0x1011,\n\t0xa0c: 0x1029, 0xa0d: 0x0f31, 0xa0e: 0x0008, 0xa0f: 0x0f51, 0xa10: 0x0f61, 0xa11: 0x1041,\n\t0xa12: 0x00d9, 0xa13: 0x1059, 0xa14: 0x05cd, 0xa15: 0x05cd, 0xa16: 0x0f99, 0xa17: 0x0fa9,\n\t0xa18: 0x0fb9, 0xa19: 0x05b5, 0xa1a: 0x1071, 0xa1b: 0x1089, 0xa1c: 0x05e5, 0xa1d: 0x1099,\n\t0xa1e: 0x10b1, 0xa1f: 0x10c9, 0xa20: 0x10e1, 0xa21: 0x10f9, 0xa22: 0x0f41, 0xa23: 0x0269,\n\t0xa24: 0x0fb9, 0xa25: 0x1089, 0xa26: 0x1099, 0xa27: 0x10b1, 0xa28: 0x1111, 0xa29: 0x10e1,\n\t0xa2a: 0x10f9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008,\n\t0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008,\n\t0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x1129, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008,\n\t0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008,\n\t0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008,\n\t0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008,\n\t0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008,\n\t0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x1141, 0xa5c: 0x1159, 0xa5d: 0x1169,\n\t0xa5e: 0x1181, 0xa5f: 0x1029, 0xa60: 0x1199, 0xa61: 0x11a9, 0xa62: 0x11c1, 0xa63: 0x11d9,\n\t0xa64: 0x11f1, 0xa65: 0x1209, 0xa66: 0x1221, 0xa67: 0x05fd, 0xa68: 0x1239, 0xa69: 0x1251,\n\t0xa6a: 0xe17d, 0xa6b: 0x1269, 0xa6c: 0x1281, 0xa6d: 0x1299, 0xa6e: 0x12b1, 0xa6f: 0x12c9,\n\t0xa70: 0x12e1, 0xa71: 0x12f9, 0xa72: 0x1311, 0xa73: 0x1329, 0xa74: 0x1341, 0xa75: 0x1359,\n\t0xa76: 0x1371, 0xa77: 0x1389, 0xa78: 0x0615, 0xa79: 0x13a1, 0xa7a: 0x13b9, 0xa7b: 0x13d1,\n\t0xa7c: 0x13e1, 0xa7d: 0x13f9, 0xa7e: 0x1411, 0xa7f: 0x1429,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008,\n\t0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008,\n\t0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008,\n\t0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008,\n\t0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008,\n\t0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008,\n\t0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008,\n\t0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008,\n\t0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008,\n\t0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008,\n\t0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008,\n\t0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008,\n\t0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008,\n\t0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008,\n\t0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x062d, 0xadb: 0x064d, 0xadc: 0x0008, 0xadd: 0x0008,\n\t0xade: 0x1441, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008,\n\t0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008,\n\t0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008,\n\t0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008,\n\t0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008,\n\t0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008,\n\t0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045,\n\t0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008,\n\t0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008,\n\t0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045,\n\t0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008,\n\t0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045,\n\t0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045,\n\t0xb30: 0x0008, 0xb31: 0x1459, 0xb32: 0x0008, 0xb33: 0x1471, 0xb34: 0x0008, 0xb35: 0x1489,\n\t0xb36: 0x0008, 0xb37: 0x14a1, 0xb38: 0x0008, 0xb39: 0x14b9, 0xb3a: 0x0008, 0xb3b: 0x14d1,\n\t0xb3c: 0x0008, 0xb3d: 0x14e9, 0xb3e: 0x0040, 0xb3f: 0x0040,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x1501, 0xb41: 0x1531, 0xb42: 0x1561, 0xb43: 0x1591, 0xb44: 0x15c1, 0xb45: 0x15f1,\n\t0xb46: 0x1621, 0xb47: 0x1651, 0xb48: 0x1501, 0xb49: 0x1531, 0xb4a: 0x1561, 0xb4b: 0x1591,\n\t0xb4c: 0x15c1, 0xb4d: 0x15f1, 0xb4e: 0x1621, 0xb4f: 0x1651, 0xb50: 0x1681, 0xb51: 0x16b1,\n\t0xb52: 0x16e1, 0xb53: 0x1711, 0xb54: 0x1741, 0xb55: 0x1771, 0xb56: 0x17a1, 0xb57: 0x17d1,\n\t0xb58: 0x1681, 0xb59: 0x16b1, 0xb5a: 0x16e1, 0xb5b: 0x1711, 0xb5c: 0x1741, 0xb5d: 0x1771,\n\t0xb5e: 0x17a1, 0xb5f: 0x17d1, 0xb60: 0x1801, 0xb61: 0x1831, 0xb62: 0x1861, 0xb63: 0x1891,\n\t0xb64: 0x18c1, 0xb65: 0x18f1, 0xb66: 0x1921, 0xb67: 0x1951, 0xb68: 0x1801, 0xb69: 0x1831,\n\t0xb6a: 0x1861, 0xb6b: 0x1891, 0xb6c: 0x18c1, 0xb6d: 0x18f1, 0xb6e: 0x1921, 0xb6f: 0x1951,\n\t0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x1981, 0xb73: 0x19b1, 0xb74: 0x19d9, 0xb75: 0x0040,\n\t0xb76: 0x0008, 0xb77: 0x1a01, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x0665, 0xb7b: 0x1459,\n\t0xb7c: 0x19b1, 0xb7d: 0x067e, 0xb7e: 0x1a31, 0xb7f: 0x069e,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x06be, 0xb81: 0x1a4a, 0xb82: 0x1a79, 0xb83: 0x1aa9, 0xb84: 0x1ad1, 0xb85: 0x0040,\n\t0xb86: 0x0008, 0xb87: 0x1af9, 0xb88: 0x06dd, 0xb89: 0x1471, 0xb8a: 0x06f5, 0xb8b: 0x1489,\n\t0xb8c: 0x1aa9, 0xb8d: 0x1b2a, 0xb8e: 0x1b5a, 0xb8f: 0x1b8a, 0xb90: 0x0008, 0xb91: 0x0008,\n\t0xb92: 0x0008, 0xb93: 0x1bb9, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008,\n\t0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x070d, 0xb9b: 0x14a1, 0xb9c: 0x0040, 0xb9d: 0x1bd2,\n\t0xb9e: 0x1c02, 0xb9f: 0x1c32, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x1c61,\n\t0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045,\n\t0xbaa: 0x0725, 0xbab: 0x14d1, 0xbac: 0xe04d, 0xbad: 0x1c7a, 0xbae: 0x03d2, 0xbaf: 0x1caa,\n\t0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x1cb9, 0xbb3: 0x1ce9, 0xbb4: 0x1d11, 0xbb5: 0x0040,\n\t0xbb6: 0x0008, 0xbb7: 0x1d39, 0xbb8: 0x073d, 0xbb9: 0x14b9, 0xbba: 0x0515, 0xbbb: 0x14e9,\n\t0xbbc: 0x1ce9, 0xbbd: 0x0756, 0xbbe: 0x0776, 0xbbf: 0x0040,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a,\n\t0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0,\n\t0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d,\n\t0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x0796,\n\t0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018,\n\t0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018,\n\t0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040,\n\t0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a,\n\t0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x1d69, 0xbf4: 0x1da1, 0xbf5: 0x0018,\n\t0xbf6: 0x1df1, 0xbf7: 0x1e29, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018,\n\t0xbfc: 0x1e7a, 0xbfd: 0x0018, 0xbfe: 0x07b6, 0xbff: 0x0018,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018,\n\t0xc06: 0x0018, 0xc07: 0x1e92, 0xc08: 0x1eaa, 0xc09: 0x1ec2, 0xc0a: 0x0018, 0xc0b: 0x0018,\n\t0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018,\n\t0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x1ed9,\n\t0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018,\n\t0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340,\n\t0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040,\n\t0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340,\n\t0xc30: 0x1f41, 0xc31: 0x0f41, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x1f51, 0xc35: 0x1f61,\n\t0xc36: 0x1f71, 0xc37: 0x1f81, 0xc38: 0x1f91, 0xc39: 0x1fa1, 0xc3a: 0x1fb2, 0xc3b: 0x07d5,\n\t0xc3c: 0x1fc2, 0xc3d: 0x1fd2, 0xc3e: 0x1fe2, 0xc3f: 0x0f71,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1f41, 0xc41: 0x00c9, 0xc42: 0x0069, 0xc43: 0x0079, 0xc44: 0x1f51, 0xc45: 0x1f61,\n\t0xc46: 0x1f71, 0xc47: 0x1f81, 0xc48: 0x1f91, 0xc49: 0x1fa1, 0xc4a: 0x1fb2, 0xc4b: 0x07ed,\n\t0xc4c: 0x1fc2, 0xc4d: 0x1fd2, 0xc4e: 0x1fe2, 0xc4f: 0x0040, 0xc50: 0x0039, 0xc51: 0x0f09,\n\t0xc52: 0x00d9, 0xc53: 0x0369, 0xc54: 0x0ff9, 0xc55: 0x0249, 0xc56: 0x0f51, 0xc57: 0x0359,\n\t0xc58: 0x0f61, 0xc59: 0x0f71, 0xc5a: 0x0f99, 0xc5b: 0x01d9, 0xc5c: 0x0fa9, 0xc5d: 0x0040,\n\t0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018,\n\t0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x1ff1, 0xc69: 0x0018,\n\t0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018,\n\t0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018,\n\t0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018,\n\t0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x0806, 0xc81: 0x0826, 0xc82: 0x1159, 0xc83: 0x0845, 0xc84: 0x0018, 0xc85: 0x0866,\n\t0xc86: 0x0886, 0xc87: 0x1011, 0xc88: 0x0018, 0xc89: 0x08a5, 0xc8a: 0x0f31, 0xc8b: 0x0249,\n\t0xc8c: 0x0249, 0xc8d: 0x0249, 0xc8e: 0x0249, 0xc8f: 0x2009, 0xc90: 0x0f41, 0xc91: 0x0f41,\n\t0xc92: 0x0359, 0xc93: 0x0359, 0xc94: 0x0018, 0xc95: 0x0f71, 0xc96: 0x2021, 0xc97: 0x0018,\n\t0xc98: 0x0018, 0xc99: 0x0f99, 0xc9a: 0x2039, 0xc9b: 0x0269, 0xc9c: 0x0269, 0xc9d: 0x0269,\n\t0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x2049, 0xca1: 0x08c5, 0xca2: 0x2061, 0xca3: 0x0018,\n\t0xca4: 0x13d1, 0xca5: 0x0018, 0xca6: 0x2079, 0xca7: 0x0018, 0xca8: 0x13d1, 0xca9: 0x0018,\n\t0xcaa: 0x0f51, 0xcab: 0x2091, 0xcac: 0x0ee9, 0xcad: 0x1159, 0xcae: 0x0018, 0xcaf: 0x0f09,\n\t0xcb0: 0x0f09, 0xcb1: 0x1199, 0xcb2: 0x0040, 0xcb3: 0x0f61, 0xcb4: 0x00d9, 0xcb5: 0x20a9,\n\t0xcb6: 0x20c1, 0xcb7: 0x20d9, 0xcb8: 0x20f1, 0xcb9: 0x0f41, 0xcba: 0x0018, 0xcbb: 0x08e5,\n\t0xcbc: 0x2109, 0xcbd: 0x10b1, 0xcbe: 0x10b1, 0xcbf: 0x2109,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x0905, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0ef9,\n\t0xcc6: 0x0ef9, 0xcc7: 0x0f09, 0xcc8: 0x0f41, 0xcc9: 0x0259, 0xcca: 0x0018, 0xccb: 0x0018,\n\t0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x2121, 0xcd1: 0x2151,\n\t0xcd2: 0x2181, 0xcd3: 0x21b9, 0xcd4: 0x21e9, 0xcd5: 0x2219, 0xcd6: 0x2249, 0xcd7: 0x2279,\n\t0xcd8: 0x22a9, 0xcd9: 0x22d9, 0xcda: 0x2309, 0xcdb: 0x2339, 0xcdc: 0x2369, 0xcdd: 0x2399,\n\t0xcde: 0x23c9, 0xcdf: 0x23f9, 0xce0: 0x0f41, 0xce1: 0x2421, 0xce2: 0x091d, 0xce3: 0x2439,\n\t0xce4: 0x1089, 0xce5: 0x2451, 0xce6: 0x093d, 0xce7: 0x2469, 0xce8: 0x2491, 0xce9: 0x0369,\n\t0xcea: 0x24a9, 0xceb: 0x095d, 0xcec: 0x0359, 0xced: 0x1159, 0xcee: 0x0ef9, 0xcef: 0x0f61,\n\t0xcf0: 0x0f41, 0xcf1: 0x2421, 0xcf2: 0x097d, 0xcf3: 0x2439, 0xcf4: 0x1089, 0xcf5: 0x2451,\n\t0xcf6: 0x099d, 0xcf7: 0x2469, 0xcf8: 0x2491, 0xcf9: 0x0369, 0xcfa: 0x24a9, 0xcfb: 0x09bd,\n\t0xcfc: 0x0359, 0xcfd: 0x1159, 0xcfe: 0x0ef9, 0xcff: 0x0f61,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018,\n\t0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040,\n\t0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040,\n\t0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040,\n\t0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040,\n\t0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x00c9, 0xd21: 0x0069, 0xd22: 0x0079, 0xd23: 0x1f51,\n\t0xd24: 0x1f61, 0xd25: 0x1f71, 0xd26: 0x1f81, 0xd27: 0x1f91, 0xd28: 0x1fa1, 0xd29: 0x2601,\n\t0xd2a: 0x2619, 0xd2b: 0x2631, 0xd2c: 0x2649, 0xd2d: 0x2661, 0xd2e: 0x2679, 0xd2f: 0x2691,\n\t0xd30: 0x26a9, 0xd31: 0x26c1, 0xd32: 0x26d9, 0xd33: 0x26f1, 0xd34: 0x0a1e, 0xd35: 0x0a3e,\n\t0xd36: 0x0a5e, 0xd37: 0x0a7e, 0xd38: 0x0a9e, 0xd39: 0x0abe, 0xd3a: 0x0ade, 0xd3b: 0x0afe,\n\t0xd3c: 0x0b1e, 0xd3d: 0x270a, 0xd3e: 0x2732, 0xd3f: 0x275a,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x2782, 0xd41: 0x27aa, 0xd42: 0x27d2, 0xd43: 0x27fa, 0xd44: 0x2822, 0xd45: 0x284a,\n\t0xd46: 0x2872, 0xd47: 0x289a, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040,\n\t0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040,\n\t0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040,\n\t0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b3e, 0xd5d: 0x0b5e,\n\t0xd5e: 0x0b7e, 0xd5f: 0x0b9e, 0xd60: 0x0bbe, 0xd61: 0x0bde, 0xd62: 0x0bfe, 0xd63: 0x0c1e,\n\t0xd64: 0x0c3e, 0xd65: 0x0c5e, 0xd66: 0x0c7e, 0xd67: 0x0c9e, 0xd68: 0x0cbe, 0xd69: 0x0cde,\n\t0xd6a: 0x0cfe, 0xd6b: 0x0d1e, 0xd6c: 0x0d3e, 0xd6d: 0x0d5e, 0xd6e: 0x0d7e, 0xd6f: 0x0d9e,\n\t0xd70: 0x0dbe, 0xd71: 0x0dde, 0xd72: 0x0dfe, 0xd73: 0x0e1e, 0xd74: 0x0e3e, 0xd75: 0x0e5e,\n\t0xd76: 0x0039, 0xd77: 0x0ee9, 0xd78: 0x1159, 0xd79: 0x0ef9, 0xd7a: 0x0f09, 0xd7b: 0x1199,\n\t0xd7c: 0x0f31, 0xd7d: 0x0249, 0xd7e: 0x0f41, 0xd7f: 0x0259,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0f51, 0xd81: 0x0359, 0xd82: 0x0f61, 0xd83: 0x0f71, 0xd84: 0x00d9, 0xd85: 0x0f99,\n\t0xd86: 0x2039, 0xd87: 0x0269, 0xd88: 0x01d9, 0xd89: 0x0fa9, 0xd8a: 0x0fb9, 0xd8b: 0x1089,\n\t0xd8c: 0x0279, 0xd8d: 0x0369, 0xd8e: 0x0289, 0xd8f: 0x13d1, 0xd90: 0x0039, 0xd91: 0x0ee9,\n\t0xd92: 0x1159, 0xd93: 0x0ef9, 0xd94: 0x0f09, 0xd95: 0x1199, 0xd96: 0x0f31, 0xd97: 0x0249,\n\t0xd98: 0x0f41, 0xd99: 0x0259, 0xd9a: 0x0f51, 0xd9b: 0x0359, 0xd9c: 0x0f61, 0xd9d: 0x0f71,\n\t0xd9e: 0x00d9, 0xd9f: 0x0f99, 0xda0: 0x2039, 0xda1: 0x0269, 0xda2: 0x01d9, 0xda3: 0x0fa9,\n\t0xda4: 0x0fb9, 0xda5: 0x1089, 0xda6: 0x0279, 0xda7: 0x0369, 0xda8: 0x0289, 0xda9: 0x13d1,\n\t0xdaa: 0x1f41, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018,\n\t0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018,\n\t0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018,\n\t0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008,\n\t0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008,\n\t0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008,\n\t0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008,\n\t0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008,\n\t0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x2971, 0xde3: 0x0ed5,\n\t0xde4: 0x2989, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d,\n\t0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0fe1, 0xdee: 0x1281, 0xdef: 0x0fc9,\n\t0xdf0: 0x1141, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d,\n\t0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008,\n\t0xdfc: 0x0259, 0xdfd: 0x1089, 0xdfe: 0x29a1, 0xdff: 0x29b9,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008,\n\t0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008,\n\t0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008,\n\t0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008,\n\t0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008,\n\t0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008,\n\t0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018,\n\t0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308,\n\t0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040,\n\t0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018,\n\t0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x2715, 0xe41: 0x2735, 0xe42: 0x2755, 0xe43: 0x2775, 0xe44: 0x2795, 0xe45: 0x27b5,\n\t0xe46: 0x27d5, 0xe47: 0x27f5, 0xe48: 0x2815, 0xe49: 0x2835, 0xe4a: 0x2855, 0xe4b: 0x2875,\n\t0xe4c: 0x2895, 0xe4d: 0x28b5, 0xe4e: 0x28d5, 0xe4f: 0x28f5, 0xe50: 0x2915, 0xe51: 0x2935,\n\t0xe52: 0x2955, 0xe53: 0x2975, 0xe54: 0x2995, 0xe55: 0x29b5, 0xe56: 0x0040, 0xe57: 0x0040,\n\t0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040,\n\t0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040,\n\t0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040,\n\t0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040,\n\t0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040,\n\t0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040,\n\t0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x29d1, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008,\n\t0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018,\n\t0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018,\n\t0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018,\n\t0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018,\n\t0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018,\n\t0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018,\n\t0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018,\n\t0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018,\n\t0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29d5, 0xeb9: 0x29f5, 0xeba: 0x2a15, 0xebb: 0x0018,\n\t0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x2b55, 0xec1: 0x2b75, 0xec2: 0x2b95, 0xec3: 0x2bb5, 0xec4: 0x2bd5, 0xec5: 0x2bf5,\n\t0xec6: 0x2bf5, 0xec7: 0x2bf5, 0xec8: 0x2c15, 0xec9: 0x2c15, 0xeca: 0x2c15, 0xecb: 0x2c15,\n\t0xecc: 0x2c35, 0xecd: 0x2c35, 0xece: 0x2c35, 0xecf: 0x2c55, 0xed0: 0x2c75, 0xed1: 0x2c75,\n\t0xed2: 0x2a95, 0xed3: 0x2a95, 0xed4: 0x2c75, 0xed5: 0x2c75, 0xed6: 0x2c95, 0xed7: 0x2c95,\n\t0xed8: 0x2c75, 0xed9: 0x2c75, 0xeda: 0x2a95, 0xedb: 0x2a95, 0xedc: 0x2c75, 0xedd: 0x2c75,\n\t0xede: 0x2c55, 0xedf: 0x2c55, 0xee0: 0x2cb5, 0xee1: 0x2cb5, 0xee2: 0x2cd5, 0xee3: 0x2cd5,\n\t0xee4: 0x0040, 0xee5: 0x2cf5, 0xee6: 0x2d15, 0xee7: 0x2d35, 0xee8: 0x2d35, 0xee9: 0x2d55,\n\t0xeea: 0x2d75, 0xeeb: 0x2d95, 0xeec: 0x2db5, 0xeed: 0x2dd5, 0xeee: 0x2df5, 0xeef: 0x2e15,\n\t0xef0: 0x2e35, 0xef1: 0x2e55, 0xef2: 0x2e55, 0xef3: 0x2e75, 0xef4: 0x2e95, 0xef5: 0x2e95,\n\t0xef6: 0x2eb5, 0xef7: 0x2ed5, 0xef8: 0x2e75, 0xef9: 0x2ef5, 0xefa: 0x2f15, 0xefb: 0x2ef5,\n\t0xefc: 0x2e75, 0xefd: 0x2f35, 0xefe: 0x2f55, 0xeff: 0x2f75,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x2f95, 0xf01: 0x2fb5, 0xf02: 0x2d15, 0xf03: 0x2cf5, 0xf04: 0x2fd5, 0xf05: 0x2ff5,\n\t0xf06: 0x3015, 0xf07: 0x3035, 0xf08: 0x3055, 0xf09: 0x3075, 0xf0a: 0x3095, 0xf0b: 0x30b5,\n\t0xf0c: 0x30d5, 0xf0d: 0x30f5, 0xf0e: 0x3115, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018,\n\t0xf12: 0x3135, 0xf13: 0x3155, 0xf14: 0x3175, 0xf15: 0x3195, 0xf16: 0x31b5, 0xf17: 0x31d5,\n\t0xf18: 0x31f5, 0xf19: 0x3215, 0xf1a: 0x3235, 0xf1b: 0x3255, 0xf1c: 0x3175, 0xf1d: 0x3275,\n\t0xf1e: 0x3295, 0xf1f: 0x32b5, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008,\n\t0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008,\n\t0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008,\n\t0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008,\n\t0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0040,\n\t0xf3c: 0x0040, 0xf3d: 0x0040, 0xf3e: 0x0040, 0xf3f: 0x0040,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x36a2, 0xf41: 0x36d2, 0xf42: 0x3702, 0xf43: 0x3732, 0xf44: 0x32d5, 0xf45: 0x32f5,\n\t0xf46: 0x3315, 0xf47: 0x3335, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018,\n\t0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x3355, 0xf51: 0x3761,\n\t0xf52: 0x3779, 0xf53: 0x3791, 0xf54: 0x37a9, 0xf55: 0x37c1, 0xf56: 0x37d9, 0xf57: 0x37f1,\n\t0xf58: 0x3809, 0xf59: 0x3821, 0xf5a: 0x3839, 0xf5b: 0x3851, 0xf5c: 0x3869, 0xf5d: 0x3881,\n\t0xf5e: 0x3899, 0xf5f: 0x38b1, 0xf60: 0x3375, 0xf61: 0x3395, 0xf62: 0x33b5, 0xf63: 0x33d5,\n\t0xf64: 0x33f5, 0xf65: 0x33f5, 0xf66: 0x3415, 0xf67: 0x3435, 0xf68: 0x3455, 0xf69: 0x3475,\n\t0xf6a: 0x3495, 0xf6b: 0x34b5, 0xf6c: 0x34d5, 0xf6d: 0x34f5, 0xf6e: 0x3515, 0xf6f: 0x3535,\n\t0xf70: 0x3555, 0xf71: 0x3575, 0xf72: 0x3595, 0xf73: 0x35b5, 0xf74: 0x35d5, 0xf75: 0x35f5,\n\t0xf76: 0x3615, 0xf77: 0x3635, 0xf78: 0x3655, 0xf79: 0x3675, 0xf7a: 0x3695, 0xf7b: 0x36b5,\n\t0xf7c: 0x38c9, 0xf7d: 0x3901, 0xf7e: 0x36d5, 0xf7f: 0x0018,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x36f5, 0xf81: 0x3715, 0xf82: 0x3735, 0xf83: 0x3755, 0xf84: 0x3775, 0xf85: 0x3795,\n\t0xf86: 0x37b5, 0xf87: 0x37d5, 0xf88: 0x37f5, 0xf89: 0x3815, 0xf8a: 0x3835, 0xf8b: 0x3855,\n\t0xf8c: 0x3875, 0xf8d: 0x3895, 0xf8e: 0x38b5, 0xf8f: 0x38d5, 0xf90: 0x38f5, 0xf91: 0x3915,\n\t0xf92: 0x3935, 0xf93: 0x3955, 0xf94: 0x3975, 0xf95: 0x3995, 0xf96: 0x39b5, 0xf97: 0x39d5,\n\t0xf98: 0x39f5, 0xf99: 0x3a15, 0xf9a: 0x3a35, 0xf9b: 0x3a55, 0xf9c: 0x3a75, 0xf9d: 0x3a95,\n\t0xf9e: 0x3ab5, 0xf9f: 0x3ad5, 0xfa0: 0x3af5, 0xfa1: 0x3b15, 0xfa2: 0x3b35, 0xfa3: 0x3b55,\n\t0xfa4: 0x3b75, 0xfa5: 0x3b95, 0xfa6: 0x1295, 0xfa7: 0x3bb5, 0xfa8: 0x3bd5, 0xfa9: 0x3bf5,\n\t0xfaa: 0x3c15, 0xfab: 0x3c35, 0xfac: 0x3c55, 0xfad: 0x3c75, 0xfae: 0x23b5, 0xfaf: 0x3c95,\n\t0xfb0: 0x3cb5, 0xfb1: 0x3939, 0xfb2: 0x3951, 0xfb3: 0x3969, 0xfb4: 0x3981, 0xfb5: 0x3999,\n\t0xfb6: 0x39b1, 0xfb7: 0x39c9, 0xfb8: 0x39e1, 0xfb9: 0x39f9, 0xfba: 0x3a11, 0xfbb: 0x3a29,\n\t0xfbc: 0x3a41, 0xfbd: 0x3a59, 0xfbe: 0x3a71, 0xfbf: 0x3a89,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x3aa1, 0xfc1: 0x3ac9, 0xfc2: 0x3af1, 0xfc3: 0x3b19, 0xfc4: 0x3b41, 0xfc5: 0x3b69,\n\t0xfc6: 0x3b91, 0xfc7: 0x3bb9, 0xfc8: 0x3be1, 0xfc9: 0x3c09, 0xfca: 0x3c39, 0xfcb: 0x3c69,\n\t0xfcc: 0x3c99, 0xfcd: 0x3cd5, 0xfce: 0x3cb1, 0xfcf: 0x3cf5, 0xfd0: 0x3d15, 0xfd1: 0x3d2d,\n\t0xfd2: 0x3d45, 0xfd3: 0x3d5d, 0xfd4: 0x3d75, 0xfd5: 0x3d75, 0xfd6: 0x3d5d, 0xfd7: 0x3d8d,\n\t0xfd8: 0x07d5, 0xfd9: 0x3da5, 0xfda: 0x3dbd, 0xfdb: 0x3dd5, 0xfdc: 0x3ded, 0xfdd: 0x3e05,\n\t0xfde: 0x3e1d, 0xfdf: 0x3e35, 0xfe0: 0x3e4d, 0xfe1: 0x3e65, 0xfe2: 0x3e7d, 0xfe3: 0x3e95,\n\t0xfe4: 0x3ead, 0xfe5: 0x3ead, 0xfe6: 0x3ec5, 0xfe7: 0x3ec5, 0xfe8: 0x3edd, 0xfe9: 0x3edd,\n\t0xfea: 0x3ef5, 0xfeb: 0x3f0d, 0xfec: 0x3f25, 0xfed: 0x3f3d, 0xfee: 0x3f55, 0xfef: 0x3f55,\n\t0xff0: 0x3f6d, 0xff1: 0x3f6d, 0xff2: 0x3f6d, 0xff3: 0x3f85, 0xff4: 0x3f9d, 0xff5: 0x3fb5,\n\t0xff6: 0x3fcd, 0xff7: 0x3fb5, 0xff8: 0x3fe5, 0xff9: 0x3ffd, 0xffa: 0x3f85, 0xffb: 0x4015,\n\t0xffc: 0x402d, 0xffd: 0x402d, 0xffe: 0x402d, 0xfff: 0x0040,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x3cc9, 0x1001: 0x3d31, 0x1002: 0x3d99, 0x1003: 0x3e01, 0x1004: 0x3e51, 0x1005: 0x3eb9,\n\t0x1006: 0x3f09, 0x1007: 0x3f59, 0x1008: 0x3fd9, 0x1009: 0x4041, 0x100a: 0x4091, 0x100b: 0x40e1,\n\t0x100c: 0x4131, 0x100d: 0x4199, 0x100e: 0x4201, 0x100f: 0x4251, 0x1010: 0x42a1, 0x1011: 0x42d9,\n\t0x1012: 0x4329, 0x1013: 0x4391, 0x1014: 0x43f9, 0x1015: 0x4431, 0x1016: 0x44b1, 0x1017: 0x4549,\n\t0x1018: 0x45c9, 0x1019: 0x4619, 0x101a: 0x4699, 0x101b: 0x4719, 0x101c: 0x4781, 0x101d: 0x47d1,\n\t0x101e: 0x4821, 0x101f: 0x4871, 0x1020: 0x48d9, 0x1021: 0x4959, 0x1022: 0x49c1, 0x1023: 0x4a11,\n\t0x1024: 0x4a61, 0x1025: 0x4ab1, 0x1026: 0x4ae9, 0x1027: 0x4b21, 0x1028: 0x4b59, 0x1029: 0x4b91,\n\t0x102a: 0x4be1, 0x102b: 0x4c31, 0x102c: 0x4cb1, 0x102d: 0x4d01, 0x102e: 0x4d69, 0x102f: 0x4de9,\n\t0x1030: 0x4e39, 0x1031: 0x4e71, 0x1032: 0x4ea9, 0x1033: 0x4f29, 0x1034: 0x4f91, 0x1035: 0x5011,\n\t0x1036: 0x5061, 0x1037: 0x50e1, 0x1038: 0x5119, 0x1039: 0x5169, 0x103a: 0x51b9, 0x103b: 0x5209,\n\t0x103c: 0x5259, 0x103d: 0x52a9, 0x103e: 0x5311, 0x103f: 0x5361,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x5399, 0x1041: 0x53e9, 0x1042: 0x5439, 0x1043: 0x5489, 0x1044: 0x54f1, 0x1045: 0x5541,\n\t0x1046: 0x5591, 0x1047: 0x55e1, 0x1048: 0x5661, 0x1049: 0x56c9, 0x104a: 0x5701, 0x104b: 0x5781,\n\t0x104c: 0x57b9, 0x104d: 0x5821, 0x104e: 0x5889, 0x104f: 0x58d9, 0x1050: 0x5929, 0x1051: 0x5979,\n\t0x1052: 0x59e1, 0x1053: 0x5a19, 0x1054: 0x5a69, 0x1055: 0x5ad1, 0x1056: 0x5b09, 0x1057: 0x5b89,\n\t0x1058: 0x5bd9, 0x1059: 0x5c01, 0x105a: 0x5c29, 0x105b: 0x5c51, 0x105c: 0x5c79, 0x105d: 0x5ca1,\n\t0x105e: 0x5cc9, 0x105f: 0x5cf1, 0x1060: 0x5d19, 0x1061: 0x5d41, 0x1062: 0x5d69, 0x1063: 0x5d99,\n\t0x1064: 0x5dc9, 0x1065: 0x5df9, 0x1066: 0x5e29, 0x1067: 0x5e59, 0x1068: 0x5e89, 0x1069: 0x5eb9,\n\t0x106a: 0x5ee9, 0x106b: 0x5f19, 0x106c: 0x5f49, 0x106d: 0x5f79, 0x106e: 0x5fa9, 0x106f: 0x5fd9,\n\t0x1070: 0x6009, 0x1071: 0x4045, 0x1072: 0x6039, 0x1073: 0x6051, 0x1074: 0x4065, 0x1075: 0x6069,\n\t0x1076: 0x6081, 0x1077: 0x6099, 0x1078: 0x4085, 0x1079: 0x4085, 0x107a: 0x60b1, 0x107b: 0x60c9,\n\t0x107c: 0x6101, 0x107d: 0x6139, 0x107e: 0x6171, 0x107f: 0x61a9,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x6211, 0x1081: 0x6229, 0x1082: 0x40a5, 0x1083: 0x6241, 0x1084: 0x6259, 0x1085: 0x6271,\n\t0x1086: 0x6289, 0x1087: 0x62a1, 0x1088: 0x40c5, 0x1089: 0x62b9, 0x108a: 0x62e1, 0x108b: 0x62f9,\n\t0x108c: 0x40e5, 0x108d: 0x40e5, 0x108e: 0x6311, 0x108f: 0x6329, 0x1090: 0x6341, 0x1091: 0x4105,\n\t0x1092: 0x4125, 0x1093: 0x4145, 0x1094: 0x4165, 0x1095: 0x4185, 0x1096: 0x6359, 0x1097: 0x6371,\n\t0x1098: 0x6389, 0x1099: 0x63a1, 0x109a: 0x63b9, 0x109b: 0x41a5, 0x109c: 0x63d1, 0x109d: 0x63e9,\n\t0x109e: 0x6401, 0x109f: 0x41c5, 0x10a0: 0x41e5, 0x10a1: 0x6419, 0x10a2: 0x4205, 0x10a3: 0x4225,\n\t0x10a4: 0x4245, 0x10a5: 0x6431, 0x10a6: 0x4265, 0x10a7: 0x6449, 0x10a8: 0x6479, 0x10a9: 0x6211,\n\t0x10aa: 0x4285, 0x10ab: 0x42a5, 0x10ac: 0x42c5, 0x10ad: 0x42e5, 0x10ae: 0x64b1, 0x10af: 0x64f1,\n\t0x10b0: 0x6539, 0x10b1: 0x6551, 0x10b2: 0x4305, 0x10b3: 0x6569, 0x10b4: 0x6581, 0x10b5: 0x6599,\n\t0x10b6: 0x4325, 0x10b7: 0x65b1, 0x10b8: 0x65c9, 0x10b9: 0x65b1, 0x10ba: 0x65e1, 0x10bb: 0x65f9,\n\t0x10bc: 0x4345, 0x10bd: 0x6611, 0x10be: 0x6629, 0x10bf: 0x6611,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x4365, 0x10c1: 0x4385, 0x10c2: 0x0040, 0x10c3: 0x6641, 0x10c4: 0x6659, 0x10c5: 0x6671,\n\t0x10c6: 0x6689, 0x10c7: 0x0040, 0x10c8: 0x66c1, 0x10c9: 0x66d9, 0x10ca: 0x66f1, 0x10cb: 0x6709,\n\t0x10cc: 0x6721, 0x10cd: 0x6739, 0x10ce: 0x6401, 0x10cf: 0x6751, 0x10d0: 0x6769, 0x10d1: 0x6781,\n\t0x10d2: 0x43a5, 0x10d3: 0x6799, 0x10d4: 0x6289, 0x10d5: 0x43c5, 0x10d6: 0x43e5, 0x10d7: 0x67b1,\n\t0x10d8: 0x0040, 0x10d9: 0x4405, 0x10da: 0x67c9, 0x10db: 0x67e1, 0x10dc: 0x67f9, 0x10dd: 0x6811,\n\t0x10de: 0x6829, 0x10df: 0x6859, 0x10e0: 0x6889, 0x10e1: 0x68b1, 0x10e2: 0x68d9, 0x10e3: 0x6901,\n\t0x10e4: 0x6929, 0x10e5: 0x6951, 0x10e6: 0x6979, 0x10e7: 0x69a1, 0x10e8: 0x69c9, 0x10e9: 0x69f1,\n\t0x10ea: 0x6a21, 0x10eb: 0x6a51, 0x10ec: 0x6a81, 0x10ed: 0x6ab1, 0x10ee: 0x6ae1, 0x10ef: 0x6b11,\n\t0x10f0: 0x6b41, 0x10f1: 0x6b71, 0x10f2: 0x6ba1, 0x10f3: 0x6bd1, 0x10f4: 0x6c01, 0x10f5: 0x6c31,\n\t0x10f6: 0x6c61, 0x10f7: 0x6c91, 0x10f8: 0x6cc1, 0x10f9: 0x6cf1, 0x10fa: 0x6d21, 0x10fb: 0x6d51,\n\t0x10fc: 0x6d81, 0x10fd: 0x6db1, 0x10fe: 0x6de1, 0x10ff: 0x4425,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008,\n\t0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008,\n\t0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008,\n\t0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008,\n\t0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0xe00d, 0x111d: 0x0008,\n\t0x111e: 0xe00d, 0x111f: 0x0008, 0x1120: 0xe00d, 0x1121: 0x0008, 0x1122: 0xe00d, 0x1123: 0x0008,\n\t0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008,\n\t0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x3308,\n\t0x1130: 0x3318, 0x1131: 0x3318, 0x1132: 0x3318, 0x1133: 0x0018, 0x1134: 0x3308, 0x1135: 0x3308,\n\t0x1136: 0x3308, 0x1137: 0x3308, 0x1138: 0x3308, 0x1139: 0x3308, 0x113a: 0x3308, 0x113b: 0x3308,\n\t0x113c: 0x3308, 0x113d: 0x3308, 0x113e: 0x0018, 0x113f: 0x0008,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008,\n\t0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008,\n\t0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008,\n\t0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008,\n\t0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0x0ea1, 0x115d: 0x6e11,\n\t0x115e: 0x3308, 0x115f: 0x3308, 0x1160: 0x0008, 0x1161: 0x0008, 0x1162: 0x0008, 0x1163: 0x0008,\n\t0x1164: 0x0008, 0x1165: 0x0008, 0x1166: 0x0008, 0x1167: 0x0008, 0x1168: 0x0008, 0x1169: 0x0008,\n\t0x116a: 0x0008, 0x116b: 0x0008, 0x116c: 0x0008, 0x116d: 0x0008, 0x116e: 0x0008, 0x116f: 0x0008,\n\t0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008,\n\t0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0x0008, 0x117a: 0x0008, 0x117b: 0x0008,\n\t0x117c: 0x0008, 0x117d: 0x0008, 0x117e: 0x0008, 0x117f: 0x0008,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x0018, 0x1181: 0x0018, 0x1182: 0x0018, 0x1183: 0x0018, 0x1184: 0x0018, 0x1185: 0x0018,\n\t0x1186: 0x0018, 0x1187: 0x0018, 0x1188: 0x0018, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0x0018,\n\t0x118c: 0x0018, 0x118d: 0x0018, 0x118e: 0x0018, 0x118f: 0x0018, 0x1190: 0x0018, 0x1191: 0x0018,\n\t0x1192: 0x0018, 0x1193: 0x0018, 0x1194: 0x0018, 0x1195: 0x0018, 0x1196: 0x0018, 0x1197: 0x0008,\n\t0x1198: 0x0008, 0x1199: 0x0008, 0x119a: 0x0008, 0x119b: 0x0008, 0x119c: 0x0008, 0x119d: 0x0008,\n\t0x119e: 0x0008, 0x119f: 0x0008, 0x11a0: 0x0018, 0x11a1: 0x0018, 0x11a2: 0xe00d, 0x11a3: 0x0008,\n\t0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008,\n\t0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008,\n\t0x11b0: 0x0008, 0x11b1: 0x0008, 0x11b2: 0xe00d, 0x11b3: 0x0008, 0x11b4: 0xe00d, 0x11b5: 0x0008,\n\t0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008,\n\t0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008,\n\t0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0xe00d, 0x11c9: 0x0008, 0x11ca: 0xe00d, 0x11cb: 0x0008,\n\t0x11cc: 0xe00d, 0x11cd: 0x0008, 0x11ce: 0xe00d, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008,\n\t0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0xe00d, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008,\n\t0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008,\n\t0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008,\n\t0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008,\n\t0x11ea: 0xe00d, 0x11eb: 0x0008, 0x11ec: 0xe00d, 0x11ed: 0x0008, 0x11ee: 0xe00d, 0x11ef: 0x0008,\n\t0x11f0: 0xe0fd, 0x11f1: 0x0008, 0x11f2: 0x0008, 0x11f3: 0x0008, 0x11f4: 0x0008, 0x11f5: 0x0008,\n\t0x11f6: 0x0008, 0x11f7: 0x0008, 0x11f8: 0x0008, 0x11f9: 0xe01d, 0x11fa: 0x0008, 0x11fb: 0xe03d,\n\t0x11fc: 0x0008, 0x11fd: 0x4445, 0x11fe: 0xe00d, 0x11ff: 0x0008,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0xe00d, 0x1205: 0x0008,\n\t0x1206: 0xe00d, 0x1207: 0x0008, 0x1208: 0x0008, 0x1209: 0x0018, 0x120a: 0x0018, 0x120b: 0xe03d,\n\t0x120c: 0x0008, 0x120d: 0x11d9, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0xe00d, 0x1211: 0x0008,\n\t0x1212: 0xe00d, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008,\n\t0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0xe00d, 0x121b: 0x0008, 0x121c: 0xe00d, 0x121d: 0x0008,\n\t0x121e: 0xe00d, 0x121f: 0x0008, 0x1220: 0xe00d, 0x1221: 0x0008, 0x1222: 0xe00d, 0x1223: 0x0008,\n\t0x1224: 0xe00d, 0x1225: 0x0008, 0x1226: 0xe00d, 0x1227: 0x0008, 0x1228: 0xe00d, 0x1229: 0x0008,\n\t0x122a: 0x6e29, 0x122b: 0x1029, 0x122c: 0x11c1, 0x122d: 0x6e41, 0x122e: 0x1221, 0x122f: 0x0008,\n\t0x1230: 0x6e59, 0x1231: 0x6e71, 0x1232: 0x1239, 0x1233: 0x4465, 0x1234: 0xe00d, 0x1235: 0x0008,\n\t0x1236: 0xe00d, 0x1237: 0x0008, 0x1238: 0xe00d, 0x1239: 0x0008, 0x123a: 0xe00d, 0x123b: 0x0008,\n\t0x123c: 0xe00d, 0x123d: 0x0008, 0x123e: 0xe00d, 0x123f: 0x0008,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x650d, 0x1241: 0x652d, 0x1242: 0x654d, 0x1243: 0x656d, 0x1244: 0x658d, 0x1245: 0x65ad,\n\t0x1246: 0x65cd, 0x1247: 0x65ed, 0x1248: 0x660d, 0x1249: 0x662d, 0x124a: 0x664d, 0x124b: 0x666d,\n\t0x124c: 0x668d, 0x124d: 0x66ad, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x66cd, 0x1251: 0x0008,\n\t0x1252: 0x66ed, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x670d, 0x1256: 0x672d, 0x1257: 0x674d,\n\t0x1258: 0x676d, 0x1259: 0x678d, 0x125a: 0x67ad, 0x125b: 0x67cd, 0x125c: 0x67ed, 0x125d: 0x680d,\n\t0x125e: 0x682d, 0x125f: 0x0008, 0x1260: 0x684d, 0x1261: 0x0008, 0x1262: 0x686d, 0x1263: 0x0008,\n\t0x1264: 0x0008, 0x1265: 0x688d, 0x1266: 0x68ad, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008,\n\t0x126a: 0x68cd, 0x126b: 0x68ed, 0x126c: 0x690d, 0x126d: 0x692d, 0x126e: 0x694d, 0x126f: 0x696d,\n\t0x1270: 0x698d, 0x1271: 0x69ad, 0x1272: 0x69cd, 0x1273: 0x69ed, 0x1274: 0x6a0d, 0x1275: 0x6a2d,\n\t0x1276: 0x6a4d, 0x1277: 0x6a6d, 0x1278: 0x6a8d, 0x1279: 0x6aad, 0x127a: 0x6acd, 0x127b: 0x6aed,\n\t0x127c: 0x6b0d, 0x127d: 0x6b2d, 0x127e: 0x6b4d, 0x127f: 0x6b6d,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x7acd, 0x1281: 0x7aed, 0x1282: 0x7b0d, 0x1283: 0x7b2d, 0x1284: 0x7b4d, 0x1285: 0x7b6d,\n\t0x1286: 0x7b8d, 0x1287: 0x7bad, 0x1288: 0x7bcd, 0x1289: 0x7bed, 0x128a: 0x7c0d, 0x128b: 0x7c2d,\n\t0x128c: 0x7c4d, 0x128d: 0x7c6d, 0x128e: 0x7c8d, 0x128f: 0x6ec9, 0x1290: 0x6ef1, 0x1291: 0x6f19,\n\t0x1292: 0x7cad, 0x1293: 0x7ccd, 0x1294: 0x7ced, 0x1295: 0x6f41, 0x1296: 0x6f69, 0x1297: 0x6f91,\n\t0x1298: 0x7d0d, 0x1299: 0x7d2d, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040,\n\t0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040,\n\t0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040,\n\t0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040,\n\t0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040,\n\t0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040,\n\t0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x6fb9, 0x12c1: 0x6fd1, 0x12c2: 0x6fe9, 0x12c3: 0x7d4d, 0x12c4: 0x7d6d, 0x12c5: 0x7001,\n\t0x12c6: 0x7001, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040,\n\t0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040,\n\t0x12d2: 0x0040, 0x12d3: 0x7019, 0x12d4: 0x7041, 0x12d5: 0x7069, 0x12d6: 0x7091, 0x12d7: 0x70b9,\n\t0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x70e1,\n\t0x12de: 0x3308, 0x12df: 0x7109, 0x12e0: 0x7131, 0x12e1: 0x20a9, 0x12e2: 0x20f1, 0x12e3: 0x7149,\n\t0x12e4: 0x7161, 0x12e5: 0x7179, 0x12e6: 0x7191, 0x12e7: 0x71a9, 0x12e8: 0x71c1, 0x12e9: 0x1fb2,\n\t0x12ea: 0x71d9, 0x12eb: 0x7201, 0x12ec: 0x7229, 0x12ed: 0x7261, 0x12ee: 0x7299, 0x12ef: 0x72c1,\n\t0x12f0: 0x72e9, 0x12f1: 0x7311, 0x12f2: 0x7339, 0x12f3: 0x7361, 0x12f4: 0x7389, 0x12f5: 0x73b1,\n\t0x12f6: 0x73d9, 0x12f7: 0x0040, 0x12f8: 0x7401, 0x12f9: 0x7429, 0x12fa: 0x7451, 0x12fb: 0x7479,\n\t0x12fc: 0x74a1, 0x12fd: 0x0040, 0x12fe: 0x74c9, 0x12ff: 0x0040,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x74f1, 0x1301: 0x7519, 0x1302: 0x0040, 0x1303: 0x7541, 0x1304: 0x7569, 0x1305: 0x0040,\n\t0x1306: 0x7591, 0x1307: 0x75b9, 0x1308: 0x75e1, 0x1309: 0x7609, 0x130a: 0x7631, 0x130b: 0x7659,\n\t0x130c: 0x7681, 0x130d: 0x76a9, 0x130e: 0x76d1, 0x130f: 0x76f9, 0x1310: 0x7721, 0x1311: 0x7721,\n\t0x1312: 0x7739, 0x1313: 0x7739, 0x1314: 0x7739, 0x1315: 0x7739, 0x1316: 0x7751, 0x1317: 0x7751,\n\t0x1318: 0x7751, 0x1319: 0x7751, 0x131a: 0x7769, 0x131b: 0x7769, 0x131c: 0x7769, 0x131d: 0x7769,\n\t0x131e: 0x7781, 0x131f: 0x7781, 0x1320: 0x7781, 0x1321: 0x7781, 0x1322: 0x7799, 0x1323: 0x7799,\n\t0x1324: 0x7799, 0x1325: 0x7799, 0x1326: 0x77b1, 0x1327: 0x77b1, 0x1328: 0x77b1, 0x1329: 0x77b1,\n\t0x132a: 0x77c9, 0x132b: 0x77c9, 0x132c: 0x77c9, 0x132d: 0x77c9, 0x132e: 0x77e1, 0x132f: 0x77e1,\n\t0x1330: 0x77e1, 0x1331: 0x77e1, 0x1332: 0x77f9, 0x1333: 0x77f9, 0x1334: 0x77f9, 0x1335: 0x77f9,\n\t0x1336: 0x7811, 0x1337: 0x7811, 0x1338: 0x7811, 0x1339: 0x7811, 0x133a: 0x7829, 0x133b: 0x7829,\n\t0x133c: 0x7829, 0x133d: 0x7829, 0x133e: 0x7841, 0x133f: 0x7841,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x7841, 0x1341: 0x7841, 0x1342: 0x7859, 0x1343: 0x7859, 0x1344: 0x7871, 0x1345: 0x7871,\n\t0x1346: 0x7889, 0x1347: 0x7889, 0x1348: 0x78a1, 0x1349: 0x78a1, 0x134a: 0x78b9, 0x134b: 0x78b9,\n\t0x134c: 0x78d1, 0x134d: 0x78d1, 0x134e: 0x78e9, 0x134f: 0x78e9, 0x1350: 0x78e9, 0x1351: 0x78e9,\n\t0x1352: 0x7901, 0x1353: 0x7901, 0x1354: 0x7901, 0x1355: 0x7901, 0x1356: 0x7919, 0x1357: 0x7919,\n\t0x1358: 0x7919, 0x1359: 0x7919, 0x135a: 0x7931, 0x135b: 0x7931, 0x135c: 0x7931, 0x135d: 0x7931,\n\t0x135e: 0x7949, 0x135f: 0x7949, 0x1360: 0x7961, 0x1361: 0x7961, 0x1362: 0x7961, 0x1363: 0x7961,\n\t0x1364: 0x7979, 0x1365: 0x7979, 0x1366: 0x7991, 0x1367: 0x7991, 0x1368: 0x7991, 0x1369: 0x7991,\n\t0x136a: 0x79a9, 0x136b: 0x79a9, 0x136c: 0x79a9, 0x136d: 0x79a9, 0x136e: 0x79c1, 0x136f: 0x79c1,\n\t0x1370: 0x79d9, 0x1371: 0x79d9, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818,\n\t0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818,\n\t0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0040, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040,\n\t0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040,\n\t0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040,\n\t0x1392: 0x0040, 0x1393: 0x79f1, 0x1394: 0x79f1, 0x1395: 0x79f1, 0x1396: 0x79f1, 0x1397: 0x7a09,\n\t0x1398: 0x7a09, 0x1399: 0x7a21, 0x139a: 0x7a21, 0x139b: 0x7a39, 0x139c: 0x7a39, 0x139d: 0x0479,\n\t0x139e: 0x7a51, 0x139f: 0x7a51, 0x13a0: 0x7a69, 0x13a1: 0x7a69, 0x13a2: 0x7a81, 0x13a3: 0x7a81,\n\t0x13a4: 0x7a99, 0x13a5: 0x7a99, 0x13a6: 0x7a99, 0x13a7: 0x7a99, 0x13a8: 0x7ab1, 0x13a9: 0x7ab1,\n\t0x13aa: 0x7ac9, 0x13ab: 0x7ac9, 0x13ac: 0x7af1, 0x13ad: 0x7af1, 0x13ae: 0x7b19, 0x13af: 0x7b19,\n\t0x13b0: 0x7b41, 0x13b1: 0x7b41, 0x13b2: 0x7b69, 0x13b3: 0x7b69, 0x13b4: 0x7b91, 0x13b5: 0x7b91,\n\t0x13b6: 0x7bb9, 0x13b7: 0x7bb9, 0x13b8: 0x7bb9, 0x13b9: 0x7be1, 0x13ba: 0x7be1, 0x13bb: 0x7be1,\n\t0x13bc: 0x7c09, 0x13bd: 0x7c09, 0x13be: 0x7c09, 0x13bf: 0x7c09,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x85f9, 0x13c1: 0x8621, 0x13c2: 0x8649, 0x13c3: 0x8671, 0x13c4: 0x8699, 0x13c5: 0x86c1,\n\t0x13c6: 0x86e9, 0x13c7: 0x8711, 0x13c8: 0x8739, 0x13c9: 0x8761, 0x13ca: 0x8789, 0x13cb: 0x87b1,\n\t0x13cc: 0x87d9, 0x13cd: 0x8801, 0x13ce: 0x8829, 0x13cf: 0x8851, 0x13d0: 0x8879, 0x13d1: 0x88a1,\n\t0x13d2: 0x88c9, 0x13d3: 0x88f1, 0x13d4: 0x8919, 0x13d5: 0x8941, 0x13d6: 0x8969, 0x13d7: 0x8991,\n\t0x13d8: 0x89b9, 0x13d9: 0x89e1, 0x13da: 0x8a09, 0x13db: 0x8a31, 0x13dc: 0x8a59, 0x13dd: 0x8a81,\n\t0x13de: 0x8aaa, 0x13df: 0x8ada, 0x13e0: 0x8b0a, 0x13e1: 0x8b3a, 0x13e2: 0x8b6a, 0x13e3: 0x8b9a,\n\t0x13e4: 0x8bc9, 0x13e5: 0x8bf1, 0x13e6: 0x7c71, 0x13e7: 0x8c19, 0x13e8: 0x7be1, 0x13e9: 0x7c99,\n\t0x13ea: 0x8c41, 0x13eb: 0x8c69, 0x13ec: 0x7d39, 0x13ed: 0x8c91, 0x13ee: 0x7d61, 0x13ef: 0x7d89,\n\t0x13f0: 0x8cb9, 0x13f1: 0x8ce1, 0x13f2: 0x7e29, 0x13f3: 0x8d09, 0x13f4: 0x7e51, 0x13f5: 0x7e79,\n\t0x13f6: 0x8d31, 0x13f7: 0x8d59, 0x13f8: 0x7ec9, 0x13f9: 0x8d81, 0x13fa: 0x7ef1, 0x13fb: 0x7f19,\n\t0x13fc: 0x83a1, 0x13fd: 0x83c9, 0x13fe: 0x8441, 0x13ff: 0x8469,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x8491, 0x1401: 0x8531, 0x1402: 0x8559, 0x1403: 0x8581, 0x1404: 0x85a9, 0x1405: 0x8649,\n\t0x1406: 0x8671, 0x1407: 0x8699, 0x1408: 0x8da9, 0x1409: 0x8739, 0x140a: 0x8dd1, 0x140b: 0x8df9,\n\t0x140c: 0x8829, 0x140d: 0x8e21, 0x140e: 0x8851, 0x140f: 0x8879, 0x1410: 0x8a81, 0x1411: 0x8e49,\n\t0x1412: 0x8e71, 0x1413: 0x89b9, 0x1414: 0x8e99, 0x1415: 0x89e1, 0x1416: 0x8a09, 0x1417: 0x7c21,\n\t0x1418: 0x7c49, 0x1419: 0x8ec1, 0x141a: 0x7c71, 0x141b: 0x8ee9, 0x141c: 0x7cc1, 0x141d: 0x7ce9,\n\t0x141e: 0x7d11, 0x141f: 0x7d39, 0x1420: 0x8f11, 0x1421: 0x7db1, 0x1422: 0x7dd9, 0x1423: 0x7e01,\n\t0x1424: 0x7e29, 0x1425: 0x8f39, 0x1426: 0x7ec9, 0x1427: 0x7f41, 0x1428: 0x7f69, 0x1429: 0x7f91,\n\t0x142a: 0x7fb9, 0x142b: 0x7fe1, 0x142c: 0x8031, 0x142d: 0x8059, 0x142e: 0x8081, 0x142f: 0x80a9,\n\t0x1430: 0x80d1, 0x1431: 0x80f9, 0x1432: 0x8f61, 0x1433: 0x8121, 0x1434: 0x8149, 0x1435: 0x8171,\n\t0x1436: 0x8199, 0x1437: 0x81c1, 0x1438: 0x81e9, 0x1439: 0x8239, 0x143a: 0x8261, 0x143b: 0x8289,\n\t0x143c: 0x82b1, 0x143d: 0x82d9, 0x143e: 0x8301, 0x143f: 0x8329,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x8351, 0x1441: 0x8379, 0x1442: 0x83f1, 0x1443: 0x8419, 0x1444: 0x84b9, 0x1445: 0x84e1,\n\t0x1446: 0x8509, 0x1447: 0x8531, 0x1448: 0x8559, 0x1449: 0x85d1, 0x144a: 0x85f9, 0x144b: 0x8621,\n\t0x144c: 0x8649, 0x144d: 0x8f89, 0x144e: 0x86c1, 0x144f: 0x86e9, 0x1450: 0x8711, 0x1451: 0x8739,\n\t0x1452: 0x87b1, 0x1453: 0x87d9, 0x1454: 0x8801, 0x1455: 0x8829, 0x1456: 0x8fb1, 0x1457: 0x88a1,\n\t0x1458: 0x88c9, 0x1459: 0x8fd9, 0x145a: 0x8941, 0x145b: 0x8969, 0x145c: 0x8991, 0x145d: 0x89b9,\n\t0x145e: 0x9001, 0x145f: 0x7c71, 0x1460: 0x8ee9, 0x1461: 0x7d39, 0x1462: 0x8f11, 0x1463: 0x7e29,\n\t0x1464: 0x8f39, 0x1465: 0x7ec9, 0x1466: 0x9029, 0x1467: 0x80d1, 0x1468: 0x9051, 0x1469: 0x9079,\n\t0x146a: 0x90a1, 0x146b: 0x8531, 0x146c: 0x8559, 0x146d: 0x8649, 0x146e: 0x8829, 0x146f: 0x8fb1,\n\t0x1470: 0x89b9, 0x1471: 0x9001, 0x1472: 0x90c9, 0x1473: 0x9101, 0x1474: 0x9139, 0x1475: 0x9171,\n\t0x1476: 0x9199, 0x1477: 0x91c1, 0x1478: 0x91e9, 0x1479: 0x9211, 0x147a: 0x9239, 0x147b: 0x9261,\n\t0x147c: 0x9289, 0x147d: 0x92b1, 0x147e: 0x92d9, 0x147f: 0x9301,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x9329, 0x1481: 0x9351, 0x1482: 0x9379, 0x1483: 0x93a1, 0x1484: 0x93c9, 0x1485: 0x93f1,\n\t0x1486: 0x9419, 0x1487: 0x9441, 0x1488: 0x9469, 0x1489: 0x9491, 0x148a: 0x94b9, 0x148b: 0x94e1,\n\t0x148c: 0x9079, 0x148d: 0x9509, 0x148e: 0x9531, 0x148f: 0x9559, 0x1490: 0x9581, 0x1491: 0x9171,\n\t0x1492: 0x9199, 0x1493: 0x91c1, 0x1494: 0x91e9, 0x1495: 0x9211, 0x1496: 0x9239, 0x1497: 0x9261,\n\t0x1498: 0x9289, 0x1499: 0x92b1, 0x149a: 0x92d9, 0x149b: 0x9301, 0x149c: 0x9329, 0x149d: 0x9351,\n\t0x149e: 0x9379, 0x149f: 0x93a1, 0x14a0: 0x93c9, 0x14a1: 0x93f1, 0x14a2: 0x9419, 0x14a3: 0x9441,\n\t0x14a4: 0x9469, 0x14a5: 0x9491, 0x14a6: 0x94b9, 0x14a7: 0x94e1, 0x14a8: 0x9079, 0x14a9: 0x9509,\n\t0x14aa: 0x9531, 0x14ab: 0x9559, 0x14ac: 0x9581, 0x14ad: 0x9491, 0x14ae: 0x94b9, 0x14af: 0x94e1,\n\t0x14b0: 0x9079, 0x14b1: 0x9051, 0x14b2: 0x90a1, 0x14b3: 0x8211, 0x14b4: 0x8059, 0x14b5: 0x8081,\n\t0x14b6: 0x80a9, 0x14b7: 0x9491, 0x14b8: 0x94b9, 0x14b9: 0x94e1, 0x14ba: 0x8211, 0x14bb: 0x8239,\n\t0x14bc: 0x95a9, 0x14bd: 0x95a9, 0x14be: 0x0018, 0x14bf: 0x0018,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x0040, 0x14c1: 0x0040, 0x14c2: 0x0040, 0x14c3: 0x0040, 0x14c4: 0x0040, 0x14c5: 0x0040,\n\t0x14c6: 0x0040, 0x14c7: 0x0040, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040,\n\t0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x95d1, 0x14d1: 0x9609,\n\t0x14d2: 0x9609, 0x14d3: 0x9641, 0x14d4: 0x9679, 0x14d5: 0x96b1, 0x14d6: 0x96e9, 0x14d7: 0x9721,\n\t0x14d8: 0x9759, 0x14d9: 0x9759, 0x14da: 0x9791, 0x14db: 0x97c9, 0x14dc: 0x9801, 0x14dd: 0x9839,\n\t0x14de: 0x9871, 0x14df: 0x98a9, 0x14e0: 0x98a9, 0x14e1: 0x98e1, 0x14e2: 0x9919, 0x14e3: 0x9919,\n\t0x14e4: 0x9951, 0x14e5: 0x9951, 0x14e6: 0x9989, 0x14e7: 0x99c1, 0x14e8: 0x99c1, 0x14e9: 0x99f9,\n\t0x14ea: 0x9a31, 0x14eb: 0x9a31, 0x14ec: 0x9a69, 0x14ed: 0x9a69, 0x14ee: 0x9aa1, 0x14ef: 0x9ad9,\n\t0x14f0: 0x9ad9, 0x14f1: 0x9b11, 0x14f2: 0x9b11, 0x14f3: 0x9b49, 0x14f4: 0x9b81, 0x14f5: 0x9bb9,\n\t0x14f6: 0x9bf1, 0x14f7: 0x9bf1, 0x14f8: 0x9c29, 0x14f9: 0x9c61, 0x14fa: 0x9c99, 0x14fb: 0x9cd1,\n\t0x14fc: 0x9d09, 0x14fd: 0x9d09, 0x14fe: 0x9d41, 0x14ff: 0x9d79,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0xa949, 0x1501: 0xa981, 0x1502: 0xa9b9, 0x1503: 0xa8a1, 0x1504: 0x9bb9, 0x1505: 0x9989,\n\t0x1506: 0xa9f1, 0x1507: 0xaa29, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040,\n\t0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0040, 0x1510: 0x0040, 0x1511: 0x0040,\n\t0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040,\n\t0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040,\n\t0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040,\n\t0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040,\n\t0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040,\n\t0x1530: 0xaa61, 0x1531: 0xaa99, 0x1532: 0xaad1, 0x1533: 0xab19, 0x1534: 0xab61, 0x1535: 0xaba9,\n\t0x1536: 0xabf1, 0x1537: 0xac39, 0x1538: 0xac81, 0x1539: 0xacc9, 0x153a: 0xad02, 0x153b: 0xae12,\n\t0x153c: 0xae91, 0x153d: 0x0018, 0x153e: 0x0040, 0x153f: 0x0040,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0,\n\t0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0,\n\t0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0xaeda, 0x1551: 0x7d8d,\n\t0x1552: 0x0040, 0x1553: 0xaeea, 0x1554: 0x03c2, 0x1555: 0xaefa, 0x1556: 0xaf0a, 0x1557: 0x7dad,\n\t0x1558: 0x7dcd, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040,\n\t0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308,\n\t0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308,\n\t0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308,\n\t0x1570: 0x0040, 0x1571: 0x7ded, 0x1572: 0x7e0d, 0x1573: 0xaf1a, 0x1574: 0xaf1a, 0x1575: 0x1fd2,\n\t0x1576: 0x1fe2, 0x1577: 0xaf2a, 0x1578: 0xaf3a, 0x1579: 0x7e2d, 0x157a: 0x7e4d, 0x157b: 0x7e6d,\n\t0x157c: 0x7e2d, 0x157d: 0x7e8d, 0x157e: 0x7ead, 0x157f: 0x7e8d,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x7ecd, 0x1581: 0x7eed, 0x1582: 0x7f0d, 0x1583: 0x7eed, 0x1584: 0x7f2d, 0x1585: 0x0018,\n\t0x1586: 0x0018, 0x1587: 0xaf4a, 0x1588: 0xaf5a, 0x1589: 0x7f4e, 0x158a: 0x7f6e, 0x158b: 0x7f8e,\n\t0x158c: 0x7fae, 0x158d: 0xaf1a, 0x158e: 0xaf1a, 0x158f: 0xaf1a, 0x1590: 0xaeda, 0x1591: 0x7fcd,\n\t0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x03c2, 0x1595: 0xaeea, 0x1596: 0xaf0a, 0x1597: 0xaefa,\n\t0x1598: 0x7fed, 0x1599: 0x1fd2, 0x159a: 0x1fe2, 0x159b: 0xaf2a, 0x159c: 0xaf3a, 0x159d: 0x7ecd,\n\t0x159e: 0x7f2d, 0x159f: 0xaf6a, 0x15a0: 0xaf7a, 0x15a1: 0xaf8a, 0x15a2: 0x1fb2, 0x15a3: 0xaf99,\n\t0x15a4: 0xafaa, 0x15a5: 0xafba, 0x15a6: 0x1fc2, 0x15a7: 0x0040, 0x15a8: 0xafca, 0x15a9: 0xafda,\n\t0x15aa: 0xafea, 0x15ab: 0xaffa, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040,\n\t0x15b0: 0x800e, 0x15b1: 0xb009, 0x15b2: 0x802e, 0x15b3: 0x0808, 0x15b4: 0x804e, 0x15b5: 0x0040,\n\t0x15b6: 0x806e, 0x15b7: 0xb031, 0x15b8: 0x808e, 0x15b9: 0xb059, 0x15ba: 0x80ae, 0x15bb: 0xb081,\n\t0x15bc: 0x80ce, 0x15bd: 0xb0a9, 0x15be: 0x80ee, 0x15bf: 0xb0d1,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0xb0f9, 0x15c1: 0xb111, 0x15c2: 0xb111, 0x15c3: 0xb129, 0x15c4: 0xb129, 0x15c5: 0xb141,\n\t0x15c6: 0xb141, 0x15c7: 0xb159, 0x15c8: 0xb159, 0x15c9: 0xb171, 0x15ca: 0xb171, 0x15cb: 0xb171,\n\t0x15cc: 0xb171, 0x15cd: 0xb189, 0x15ce: 0xb189, 0x15cf: 0xb1a1, 0x15d0: 0xb1a1, 0x15d1: 0xb1a1,\n\t0x15d2: 0xb1a1, 0x15d3: 0xb1b9, 0x15d4: 0xb1b9, 0x15d5: 0xb1d1, 0x15d6: 0xb1d1, 0x15d7: 0xb1d1,\n\t0x15d8: 0xb1d1, 0x15d9: 0xb1e9, 0x15da: 0xb1e9, 0x15db: 0xb1e9, 0x15dc: 0xb1e9, 0x15dd: 0xb201,\n\t0x15de: 0xb201, 0x15df: 0xb201, 0x15e0: 0xb201, 0x15e1: 0xb219, 0x15e2: 0xb219, 0x15e3: 0xb219,\n\t0x15e4: 0xb219, 0x15e5: 0xb231, 0x15e6: 0xb231, 0x15e7: 0xb231, 0x15e8: 0xb231, 0x15e9: 0xb249,\n\t0x15ea: 0xb249, 0x15eb: 0xb261, 0x15ec: 0xb261, 0x15ed: 0xb279, 0x15ee: 0xb279, 0x15ef: 0xb291,\n\t0x15f0: 0xb291, 0x15f1: 0xb2a9, 0x15f2: 0xb2a9, 0x15f3: 0xb2a9, 0x15f4: 0xb2a9, 0x15f5: 0xb2c1,\n\t0x15f6: 0xb2c1, 0x15f7: 0xb2c1, 0x15f8: 0xb2c1, 0x15f9: 0xb2d9, 0x15fa: 0xb2d9, 0x15fb: 0xb2d9,\n\t0x15fc: 0xb2d9, 0x15fd: 0xb2f1, 0x15fe: 0xb2f1, 0x15ff: 0xb2f1,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0xb2f1, 0x1601: 0xb309, 0x1602: 0xb309, 0x1603: 0xb309, 0x1604: 0xb309, 0x1605: 0xb321,\n\t0x1606: 0xb321, 0x1607: 0xb321, 0x1608: 0xb321, 0x1609: 0xb339, 0x160a: 0xb339, 0x160b: 0xb339,\n\t0x160c: 0xb339, 0x160d: 0xb351, 0x160e: 0xb351, 0x160f: 0xb351, 0x1610: 0xb351, 0x1611: 0xb369,\n\t0x1612: 0xb369, 0x1613: 0xb369, 0x1614: 0xb369, 0x1615: 0xb381, 0x1616: 0xb381, 0x1617: 0xb381,\n\t0x1618: 0xb381, 0x1619: 0xb399, 0x161a: 0xb399, 0x161b: 0xb399, 0x161c: 0xb399, 0x161d: 0xb3b1,\n\t0x161e: 0xb3b1, 0x161f: 0xb3b1, 0x1620: 0xb3b1, 0x1621: 0xb3c9, 0x1622: 0xb3c9, 0x1623: 0xb3c9,\n\t0x1624: 0xb3c9, 0x1625: 0xb3e1, 0x1626: 0xb3e1, 0x1627: 0xb3e1, 0x1628: 0xb3e1, 0x1629: 0xb3f9,\n\t0x162a: 0xb3f9, 0x162b: 0xb3f9, 0x162c: 0xb3f9, 0x162d: 0xb411, 0x162e: 0xb411, 0x162f: 0x7ab1,\n\t0x1630: 0x7ab1, 0x1631: 0xb429, 0x1632: 0xb429, 0x1633: 0xb429, 0x1634: 0xb429, 0x1635: 0xb441,\n\t0x1636: 0xb441, 0x1637: 0xb469, 0x1638: 0xb469, 0x1639: 0xb491, 0x163a: 0xb491, 0x163b: 0xb4b9,\n\t0x163c: 0xb4b9, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0040, 0x1641: 0xaefa, 0x1642: 0xb4e2, 0x1643: 0xaf6a, 0x1644: 0xafda, 0x1645: 0xafea,\n\t0x1646: 0xaf7a, 0x1647: 0xb4f2, 0x1648: 0x1fd2, 0x1649: 0x1fe2, 0x164a: 0xaf8a, 0x164b: 0x1fb2,\n\t0x164c: 0xaeda, 0x164d: 0xaf99, 0x164e: 0x29d1, 0x164f: 0xb502, 0x1650: 0x1f41, 0x1651: 0x00c9,\n\t0x1652: 0x0069, 0x1653: 0x0079, 0x1654: 0x1f51, 0x1655: 0x1f61, 0x1656: 0x1f71, 0x1657: 0x1f81,\n\t0x1658: 0x1f91, 0x1659: 0x1fa1, 0x165a: 0xaeea, 0x165b: 0x03c2, 0x165c: 0xafaa, 0x165d: 0x1fc2,\n\t0x165e: 0xafba, 0x165f: 0xaf0a, 0x1660: 0xaffa, 0x1661: 0x0039, 0x1662: 0x0ee9, 0x1663: 0x1159,\n\t0x1664: 0x0ef9, 0x1665: 0x0f09, 0x1666: 0x1199, 0x1667: 0x0f31, 0x1668: 0x0249, 0x1669: 0x0f41,\n\t0x166a: 0x0259, 0x166b: 0x0f51, 0x166c: 0x0359, 0x166d: 0x0f61, 0x166e: 0x0f71, 0x166f: 0x00d9,\n\t0x1670: 0x0f99, 0x1671: 0x2039, 0x1672: 0x0269, 0x1673: 0x01d9, 0x1674: 0x0fa9, 0x1675: 0x0fb9,\n\t0x1676: 0x1089, 0x1677: 0x0279, 0x1678: 0x0369, 0x1679: 0x0289, 0x167a: 0x13d1, 0x167b: 0xaf4a,\n\t0x167c: 0xafca, 0x167d: 0xaf5a, 0x167e: 0xb512, 0x167f: 0xaf1a,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x1caa, 0x1681: 0x0039, 0x1682: 0x0ee9, 0x1683: 0x1159, 0x1684: 0x0ef9, 0x1685: 0x0f09,\n\t0x1686: 0x1199, 0x1687: 0x0f31, 0x1688: 0x0249, 0x1689: 0x0f41, 0x168a: 0x0259, 0x168b: 0x0f51,\n\t0x168c: 0x0359, 0x168d: 0x0f61, 0x168e: 0x0f71, 0x168f: 0x00d9, 0x1690: 0x0f99, 0x1691: 0x2039,\n\t0x1692: 0x0269, 0x1693: 0x01d9, 0x1694: 0x0fa9, 0x1695: 0x0fb9, 0x1696: 0x1089, 0x1697: 0x0279,\n\t0x1698: 0x0369, 0x1699: 0x0289, 0x169a: 0x13d1, 0x169b: 0xaf2a, 0x169c: 0xb522, 0x169d: 0xaf3a,\n\t0x169e: 0xb532, 0x169f: 0x810d, 0x16a0: 0x812d, 0x16a1: 0x29d1, 0x16a2: 0x814d, 0x16a3: 0x814d,\n\t0x16a4: 0x816d, 0x16a5: 0x818d, 0x16a6: 0x81ad, 0x16a7: 0x81cd, 0x16a8: 0x81ed, 0x16a9: 0x820d,\n\t0x16aa: 0x822d, 0x16ab: 0x824d, 0x16ac: 0x826d, 0x16ad: 0x828d, 0x16ae: 0x82ad, 0x16af: 0x82cd,\n\t0x16b0: 0x82ed, 0x16b1: 0x830d, 0x16b2: 0x832d, 0x16b3: 0x834d, 0x16b4: 0x836d, 0x16b5: 0x838d,\n\t0x16b6: 0x83ad, 0x16b7: 0x83cd, 0x16b8: 0x83ed, 0x16b9: 0x840d, 0x16ba: 0x842d, 0x16bb: 0x844d,\n\t0x16bc: 0x81ed, 0x16bd: 0x846d, 0x16be: 0x848d, 0x16bf: 0x824d,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x84ad, 0x16c1: 0x84cd, 0x16c2: 0x84ed, 0x16c3: 0x850d, 0x16c4: 0x852d, 0x16c5: 0x854d,\n\t0x16c6: 0x856d, 0x16c7: 0x858d, 0x16c8: 0x850d, 0x16c9: 0x85ad, 0x16ca: 0x850d, 0x16cb: 0x85cd,\n\t0x16cc: 0x85cd, 0x16cd: 0x85ed, 0x16ce: 0x85ed, 0x16cf: 0x860d, 0x16d0: 0x854d, 0x16d1: 0x862d,\n\t0x16d2: 0x864d, 0x16d3: 0x862d, 0x16d4: 0x866d, 0x16d5: 0x864d, 0x16d6: 0x868d, 0x16d7: 0x868d,\n\t0x16d8: 0x86ad, 0x16d9: 0x86ad, 0x16da: 0x86cd, 0x16db: 0x86cd, 0x16dc: 0x864d, 0x16dd: 0x814d,\n\t0x16de: 0x86ed, 0x16df: 0x870d, 0x16e0: 0x0040, 0x16e1: 0x872d, 0x16e2: 0x874d, 0x16e3: 0x876d,\n\t0x16e4: 0x878d, 0x16e5: 0x876d, 0x16e6: 0x87ad, 0x16e7: 0x87cd, 0x16e8: 0x87ed, 0x16e9: 0x87ed,\n\t0x16ea: 0x880d, 0x16eb: 0x880d, 0x16ec: 0x882d, 0x16ed: 0x882d, 0x16ee: 0x880d, 0x16ef: 0x880d,\n\t0x16f0: 0x884d, 0x16f1: 0x886d, 0x16f2: 0x888d, 0x16f3: 0x88ad, 0x16f4: 0x88cd, 0x16f5: 0x88ed,\n\t0x16f6: 0x88ed, 0x16f7: 0x88ed, 0x16f8: 0x890d, 0x16f9: 0x890d, 0x16fa: 0x890d, 0x16fb: 0x890d,\n\t0x16fc: 0x87ed, 0x16fd: 0x87ed, 0x16fe: 0x87ed, 0x16ff: 0x0040,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x874d, 0x1703: 0x872d, 0x1704: 0x892d, 0x1705: 0x872d,\n\t0x1706: 0x874d, 0x1707: 0x872d, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x894d, 0x170b: 0x874d,\n\t0x170c: 0x896d, 0x170d: 0x892d, 0x170e: 0x896d, 0x170f: 0x874d, 0x1710: 0x0040, 0x1711: 0x0040,\n\t0x1712: 0x898d, 0x1713: 0x89ad, 0x1714: 0x88ad, 0x1715: 0x896d, 0x1716: 0x892d, 0x1717: 0x896d,\n\t0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x89cd, 0x171b: 0x89ed, 0x171c: 0x89cd, 0x171d: 0x0040,\n\t0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0xb541, 0x1721: 0xb559, 0x1722: 0xb571, 0x1723: 0x8a0e,\n\t0x1724: 0xb589, 0x1725: 0xb5a1, 0x1726: 0x8a2d, 0x1727: 0x0040, 0x1728: 0x8a4d, 0x1729: 0x8a6d,\n\t0x172a: 0x8a8d, 0x172b: 0x8a6d, 0x172c: 0x8aad, 0x172d: 0x8acd, 0x172e: 0x8aed, 0x172f: 0x0040,\n\t0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040,\n\t0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340,\n\t0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x0a08, 0x1741: 0x0a08, 0x1742: 0x0a08, 0x1743: 0x0a08, 0x1744: 0x0a08, 0x1745: 0x0c08,\n\t0x1746: 0x0808, 0x1747: 0x0c08, 0x1748: 0x0818, 0x1749: 0x0c08, 0x174a: 0x0c08, 0x174b: 0x0808,\n\t0x174c: 0x0808, 0x174d: 0x0908, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0c08, 0x1751: 0x0c08,\n\t0x1752: 0x0c08, 0x1753: 0x0a08, 0x1754: 0x0a08, 0x1755: 0x0a08, 0x1756: 0x0a08, 0x1757: 0x0908,\n\t0x1758: 0x0a08, 0x1759: 0x0a08, 0x175a: 0x0a08, 0x175b: 0x0a08, 0x175c: 0x0a08, 0x175d: 0x0c08,\n\t0x175e: 0x0a08, 0x175f: 0x0a08, 0x1760: 0x0a08, 0x1761: 0x0c08, 0x1762: 0x0808, 0x1763: 0x0808,\n\t0x1764: 0x0c08, 0x1765: 0x3308, 0x1766: 0x3308, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040,\n\t0x176a: 0x0040, 0x176b: 0x0a18, 0x176c: 0x0a18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0c18,\n\t0x1770: 0x0818, 0x1771: 0x0818, 0x1772: 0x0818, 0x1773: 0x0818, 0x1774: 0x0818, 0x1775: 0x0818,\n\t0x1776: 0x0818, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040,\n\t0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x0a08, 0x1781: 0x0c08, 0x1782: 0x0a08, 0x1783: 0x0c08, 0x1784: 0x0c08, 0x1785: 0x0c08,\n\t0x1786: 0x0a08, 0x1787: 0x0a08, 0x1788: 0x0a08, 0x1789: 0x0c08, 0x178a: 0x0a08, 0x178b: 0x0a08,\n\t0x178c: 0x0c08, 0x178d: 0x0a08, 0x178e: 0x0c08, 0x178f: 0x0c08, 0x1790: 0x0a08, 0x1791: 0x0c08,\n\t0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x0040,\n\t0x1798: 0x0040, 0x1799: 0x0818, 0x179a: 0x0818, 0x179b: 0x0818, 0x179c: 0x0818, 0x179d: 0x0040,\n\t0x179e: 0x0040, 0x179f: 0x0040, 0x17a0: 0x0040, 0x17a1: 0x0040, 0x17a2: 0x0040, 0x17a3: 0x0040,\n\t0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x0040, 0x17a7: 0x0040, 0x17a8: 0x0040, 0x17a9: 0x0c18,\n\t0x17aa: 0x0c18, 0x17ab: 0x0c18, 0x17ac: 0x0c18, 0x17ad: 0x0a18, 0x17ae: 0x0a18, 0x17af: 0x0818,\n\t0x17b0: 0x0040, 0x17b1: 0x0040, 0x17b2: 0x0040, 0x17b3: 0x0040, 0x17b4: 0x0040, 0x17b5: 0x0040,\n\t0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040,\n\t0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x3308, 0x17c1: 0x3308, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x0040, 0x17c5: 0x0008,\n\t0x17c6: 0x0008, 0x17c7: 0x0008, 0x17c8: 0x0008, 0x17c9: 0x0008, 0x17ca: 0x0008, 0x17cb: 0x0008,\n\t0x17cc: 0x0008, 0x17cd: 0x0040, 0x17ce: 0x0040, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0040,\n\t0x17d2: 0x0040, 0x17d3: 0x0008, 0x17d4: 0x0008, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0008,\n\t0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008,\n\t0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008,\n\t0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0040,\n\t0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008,\n\t0x17f0: 0x0008, 0x17f1: 0x0040, 0x17f2: 0x0008, 0x17f3: 0x0008, 0x17f4: 0x0040, 0x17f5: 0x0008,\n\t0x17f6: 0x0008, 0x17f7: 0x0008, 0x17f8: 0x0008, 0x17f9: 0x0008, 0x17fa: 0x0040, 0x17fb: 0x3308,\n\t0x17fc: 0x3308, 0x17fd: 0x0008, 0x17fe: 0x3008, 0x17ff: 0x3008,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x3308, 0x1801: 0x3008, 0x1802: 0x3008, 0x1803: 0x3008, 0x1804: 0x3008, 0x1805: 0x0040,\n\t0x1806: 0x0040, 0x1807: 0x3008, 0x1808: 0x3008, 0x1809: 0x0040, 0x180a: 0x0040, 0x180b: 0x3008,\n\t0x180c: 0x3008, 0x180d: 0x3808, 0x180e: 0x0040, 0x180f: 0x0040, 0x1810: 0x0008, 0x1811: 0x0040,\n\t0x1812: 0x0040, 0x1813: 0x0040, 0x1814: 0x0040, 0x1815: 0x0040, 0x1816: 0x0040, 0x1817: 0x3008,\n\t0x1818: 0x0040, 0x1819: 0x0040, 0x181a: 0x0040, 0x181b: 0x0040, 0x181c: 0x0040, 0x181d: 0x0008,\n\t0x181e: 0x0008, 0x181f: 0x0008, 0x1820: 0x0008, 0x1821: 0x0008, 0x1822: 0x3008, 0x1823: 0x3008,\n\t0x1824: 0x0040, 0x1825: 0x0040, 0x1826: 0x3308, 0x1827: 0x3308, 0x1828: 0x3308, 0x1829: 0x3308,\n\t0x182a: 0x3308, 0x182b: 0x3308, 0x182c: 0x3308, 0x182d: 0x0040, 0x182e: 0x0040, 0x182f: 0x0040,\n\t0x1830: 0x3308, 0x1831: 0x3308, 0x1832: 0x3308, 0x1833: 0x3308, 0x1834: 0x3308, 0x1835: 0x0040,\n\t0x1836: 0x0040, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040,\n\t0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x0039, 0x1841: 0x0ee9, 0x1842: 0x1159, 0x1843: 0x0ef9, 0x1844: 0x0f09, 0x1845: 0x1199,\n\t0x1846: 0x0f31, 0x1847: 0x0249, 0x1848: 0x0f41, 0x1849: 0x0259, 0x184a: 0x0f51, 0x184b: 0x0359,\n\t0x184c: 0x0f61, 0x184d: 0x0f71, 0x184e: 0x00d9, 0x184f: 0x0f99, 0x1850: 0x2039, 0x1851: 0x0269,\n\t0x1852: 0x01d9, 0x1853: 0x0fa9, 0x1854: 0x0fb9, 0x1855: 0x1089, 0x1856: 0x0279, 0x1857: 0x0369,\n\t0x1858: 0x0289, 0x1859: 0x13d1, 0x185a: 0x0039, 0x185b: 0x0ee9, 0x185c: 0x1159, 0x185d: 0x0ef9,\n\t0x185e: 0x0f09, 0x185f: 0x1199, 0x1860: 0x0f31, 0x1861: 0x0249, 0x1862: 0x0f41, 0x1863: 0x0259,\n\t0x1864: 0x0f51, 0x1865: 0x0359, 0x1866: 0x0f61, 0x1867: 0x0f71, 0x1868: 0x00d9, 0x1869: 0x0f99,\n\t0x186a: 0x2039, 0x186b: 0x0269, 0x186c: 0x01d9, 0x186d: 0x0fa9, 0x186e: 0x0fb9, 0x186f: 0x1089,\n\t0x1870: 0x0279, 0x1871: 0x0369, 0x1872: 0x0289, 0x1873: 0x13d1, 0x1874: 0x0039, 0x1875: 0x0ee9,\n\t0x1876: 0x1159, 0x1877: 0x0ef9, 0x1878: 0x0f09, 0x1879: 0x1199, 0x187a: 0x0f31, 0x187b: 0x0249,\n\t0x187c: 0x0f41, 0x187d: 0x0259, 0x187e: 0x0f51, 0x187f: 0x0359,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x0f61, 0x1881: 0x0f71, 0x1882: 0x00d9, 0x1883: 0x0f99, 0x1884: 0x2039, 0x1885: 0x0269,\n\t0x1886: 0x01d9, 0x1887: 0x0fa9, 0x1888: 0x0fb9, 0x1889: 0x1089, 0x188a: 0x0279, 0x188b: 0x0369,\n\t0x188c: 0x0289, 0x188d: 0x13d1, 0x188e: 0x0039, 0x188f: 0x0ee9, 0x1890: 0x1159, 0x1891: 0x0ef9,\n\t0x1892: 0x0f09, 0x1893: 0x1199, 0x1894: 0x0f31, 0x1895: 0x0040, 0x1896: 0x0f41, 0x1897: 0x0259,\n\t0x1898: 0x0f51, 0x1899: 0x0359, 0x189a: 0x0f61, 0x189b: 0x0f71, 0x189c: 0x00d9, 0x189d: 0x0f99,\n\t0x189e: 0x2039, 0x189f: 0x0269, 0x18a0: 0x01d9, 0x18a1: 0x0fa9, 0x18a2: 0x0fb9, 0x18a3: 0x1089,\n\t0x18a4: 0x0279, 0x18a5: 0x0369, 0x18a6: 0x0289, 0x18a7: 0x13d1, 0x18a8: 0x0039, 0x18a9: 0x0ee9,\n\t0x18aa: 0x1159, 0x18ab: 0x0ef9, 0x18ac: 0x0f09, 0x18ad: 0x1199, 0x18ae: 0x0f31, 0x18af: 0x0249,\n\t0x18b0: 0x0f41, 0x18b1: 0x0259, 0x18b2: 0x0f51, 0x18b3: 0x0359, 0x18b4: 0x0f61, 0x18b5: 0x0f71,\n\t0x18b6: 0x00d9, 0x18b7: 0x0f99, 0x18b8: 0x2039, 0x18b9: 0x0269, 0x18ba: 0x01d9, 0x18bb: 0x0fa9,\n\t0x18bc: 0x0fb9, 0x18bd: 0x1089, 0x18be: 0x0279, 0x18bf: 0x0369,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x0289, 0x18c1: 0x13d1, 0x18c2: 0x0039, 0x18c3: 0x0ee9, 0x18c4: 0x1159, 0x18c5: 0x0ef9,\n\t0x18c6: 0x0f09, 0x18c7: 0x1199, 0x18c8: 0x0f31, 0x18c9: 0x0249, 0x18ca: 0x0f41, 0x18cb: 0x0259,\n\t0x18cc: 0x0f51, 0x18cd: 0x0359, 0x18ce: 0x0f61, 0x18cf: 0x0f71, 0x18d0: 0x00d9, 0x18d1: 0x0f99,\n\t0x18d2: 0x2039, 0x18d3: 0x0269, 0x18d4: 0x01d9, 0x18d5: 0x0fa9, 0x18d6: 0x0fb9, 0x18d7: 0x1089,\n\t0x18d8: 0x0279, 0x18d9: 0x0369, 0x18da: 0x0289, 0x18db: 0x13d1, 0x18dc: 0x0039, 0x18dd: 0x0040,\n\t0x18de: 0x1159, 0x18df: 0x0ef9, 0x18e0: 0x0040, 0x18e1: 0x0040, 0x18e2: 0x0f31, 0x18e3: 0x0040,\n\t0x18e4: 0x0040, 0x18e5: 0x0259, 0x18e6: 0x0f51, 0x18e7: 0x0040, 0x18e8: 0x0040, 0x18e9: 0x0f71,\n\t0x18ea: 0x00d9, 0x18eb: 0x0f99, 0x18ec: 0x2039, 0x18ed: 0x0040, 0x18ee: 0x01d9, 0x18ef: 0x0fa9,\n\t0x18f0: 0x0fb9, 0x18f1: 0x1089, 0x18f2: 0x0279, 0x18f3: 0x0369, 0x18f4: 0x0289, 0x18f5: 0x13d1,\n\t0x18f6: 0x0039, 0x18f7: 0x0ee9, 0x18f8: 0x1159, 0x18f9: 0x0ef9, 0x18fa: 0x0040, 0x18fb: 0x1199,\n\t0x18fc: 0x0040, 0x18fd: 0x0249, 0x18fe: 0x0f41, 0x18ff: 0x0259,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x0f51, 0x1901: 0x0359, 0x1902: 0x0f61, 0x1903: 0x0f71, 0x1904: 0x0040, 0x1905: 0x0f99,\n\t0x1906: 0x2039, 0x1907: 0x0269, 0x1908: 0x01d9, 0x1909: 0x0fa9, 0x190a: 0x0fb9, 0x190b: 0x1089,\n\t0x190c: 0x0279, 0x190d: 0x0369, 0x190e: 0x0289, 0x190f: 0x13d1, 0x1910: 0x0039, 0x1911: 0x0ee9,\n\t0x1912: 0x1159, 0x1913: 0x0ef9, 0x1914: 0x0f09, 0x1915: 0x1199, 0x1916: 0x0f31, 0x1917: 0x0249,\n\t0x1918: 0x0f41, 0x1919: 0x0259, 0x191a: 0x0f51, 0x191b: 0x0359, 0x191c: 0x0f61, 0x191d: 0x0f71,\n\t0x191e: 0x00d9, 0x191f: 0x0f99, 0x1920: 0x2039, 0x1921: 0x0269, 0x1922: 0x01d9, 0x1923: 0x0fa9,\n\t0x1924: 0x0fb9, 0x1925: 0x1089, 0x1926: 0x0279, 0x1927: 0x0369, 0x1928: 0x0289, 0x1929: 0x13d1,\n\t0x192a: 0x0039, 0x192b: 0x0ee9, 0x192c: 0x1159, 0x192d: 0x0ef9, 0x192e: 0x0f09, 0x192f: 0x1199,\n\t0x1930: 0x0f31, 0x1931: 0x0249, 0x1932: 0x0f41, 0x1933: 0x0259, 0x1934: 0x0f51, 0x1935: 0x0359,\n\t0x1936: 0x0f61, 0x1937: 0x0f71, 0x1938: 0x00d9, 0x1939: 0x0f99, 0x193a: 0x2039, 0x193b: 0x0269,\n\t0x193c: 0x01d9, 0x193d: 0x0fa9, 0x193e: 0x0fb9, 0x193f: 0x1089,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x0279, 0x1941: 0x0369, 0x1942: 0x0289, 0x1943: 0x13d1, 0x1944: 0x0039, 0x1945: 0x0ee9,\n\t0x1946: 0x0040, 0x1947: 0x0ef9, 0x1948: 0x0f09, 0x1949: 0x1199, 0x194a: 0x0f31, 0x194b: 0x0040,\n\t0x194c: 0x0040, 0x194d: 0x0259, 0x194e: 0x0f51, 0x194f: 0x0359, 0x1950: 0x0f61, 0x1951: 0x0f71,\n\t0x1952: 0x00d9, 0x1953: 0x0f99, 0x1954: 0x2039, 0x1955: 0x0040, 0x1956: 0x01d9, 0x1957: 0x0fa9,\n\t0x1958: 0x0fb9, 0x1959: 0x1089, 0x195a: 0x0279, 0x195b: 0x0369, 0x195c: 0x0289, 0x195d: 0x0040,\n\t0x195e: 0x0039, 0x195f: 0x0ee9, 0x1960: 0x1159, 0x1961: 0x0ef9, 0x1962: 0x0f09, 0x1963: 0x1199,\n\t0x1964: 0x0f31, 0x1965: 0x0249, 0x1966: 0x0f41, 0x1967: 0x0259, 0x1968: 0x0f51, 0x1969: 0x0359,\n\t0x196a: 0x0f61, 0x196b: 0x0f71, 0x196c: 0x00d9, 0x196d: 0x0f99, 0x196e: 0x2039, 0x196f: 0x0269,\n\t0x1970: 0x01d9, 0x1971: 0x0fa9, 0x1972: 0x0fb9, 0x1973: 0x1089, 0x1974: 0x0279, 0x1975: 0x0369,\n\t0x1976: 0x0289, 0x1977: 0x13d1, 0x1978: 0x0039, 0x1979: 0x0ee9, 0x197a: 0x0040, 0x197b: 0x0ef9,\n\t0x197c: 0x0f09, 0x197d: 0x1199, 0x197e: 0x0f31, 0x197f: 0x0040,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x0f41, 0x1981: 0x0259, 0x1982: 0x0f51, 0x1983: 0x0359, 0x1984: 0x0f61, 0x1985: 0x0040,\n\t0x1986: 0x00d9, 0x1987: 0x0040, 0x1988: 0x0040, 0x1989: 0x0040, 0x198a: 0x01d9, 0x198b: 0x0fa9,\n\t0x198c: 0x0fb9, 0x198d: 0x1089, 0x198e: 0x0279, 0x198f: 0x0369, 0x1990: 0x0289, 0x1991: 0x0040,\n\t0x1992: 0x0039, 0x1993: 0x0ee9, 0x1994: 0x1159, 0x1995: 0x0ef9, 0x1996: 0x0f09, 0x1997: 0x1199,\n\t0x1998: 0x0f31, 0x1999: 0x0249, 0x199a: 0x0f41, 0x199b: 0x0259, 0x199c: 0x0f51, 0x199d: 0x0359,\n\t0x199e: 0x0f61, 0x199f: 0x0f71, 0x19a0: 0x00d9, 0x19a1: 0x0f99, 0x19a2: 0x2039, 0x19a3: 0x0269,\n\t0x19a4: 0x01d9, 0x19a5: 0x0fa9, 0x19a6: 0x0fb9, 0x19a7: 0x1089, 0x19a8: 0x0279, 0x19a9: 0x0369,\n\t0x19aa: 0x0289, 0x19ab: 0x13d1, 0x19ac: 0x0039, 0x19ad: 0x0ee9, 0x19ae: 0x1159, 0x19af: 0x0ef9,\n\t0x19b0: 0x0f09, 0x19b1: 0x1199, 0x19b2: 0x0f31, 0x19b3: 0x0249, 0x19b4: 0x0f41, 0x19b5: 0x0259,\n\t0x19b6: 0x0f51, 0x19b7: 0x0359, 0x19b8: 0x0f61, 0x19b9: 0x0f71, 0x19ba: 0x00d9, 0x19bb: 0x0f99,\n\t0x19bc: 0x2039, 0x19bd: 0x0269, 0x19be: 0x01d9, 0x19bf: 0x0fa9,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x0fb9, 0x19c1: 0x1089, 0x19c2: 0x0279, 0x19c3: 0x0369, 0x19c4: 0x0289, 0x19c5: 0x13d1,\n\t0x19c6: 0x0039, 0x19c7: 0x0ee9, 0x19c8: 0x1159, 0x19c9: 0x0ef9, 0x19ca: 0x0f09, 0x19cb: 0x1199,\n\t0x19cc: 0x0f31, 0x19cd: 0x0249, 0x19ce: 0x0f41, 0x19cf: 0x0259, 0x19d0: 0x0f51, 0x19d1: 0x0359,\n\t0x19d2: 0x0f61, 0x19d3: 0x0f71, 0x19d4: 0x00d9, 0x19d5: 0x0f99, 0x19d6: 0x2039, 0x19d7: 0x0269,\n\t0x19d8: 0x01d9, 0x19d9: 0x0fa9, 0x19da: 0x0fb9, 0x19db: 0x1089, 0x19dc: 0x0279, 0x19dd: 0x0369,\n\t0x19de: 0x0289, 0x19df: 0x13d1, 0x19e0: 0x0039, 0x19e1: 0x0ee9, 0x19e2: 0x1159, 0x19e3: 0x0ef9,\n\t0x19e4: 0x0f09, 0x19e5: 0x1199, 0x19e6: 0x0f31, 0x19e7: 0x0249, 0x19e8: 0x0f41, 0x19e9: 0x0259,\n\t0x19ea: 0x0f51, 0x19eb: 0x0359, 0x19ec: 0x0f61, 0x19ed: 0x0f71, 0x19ee: 0x00d9, 0x19ef: 0x0f99,\n\t0x19f0: 0x2039, 0x19f1: 0x0269, 0x19f2: 0x01d9, 0x19f3: 0x0fa9, 0x19f4: 0x0fb9, 0x19f5: 0x1089,\n\t0x19f6: 0x0279, 0x19f7: 0x0369, 0x19f8: 0x0289, 0x19f9: 0x13d1, 0x19fa: 0x0039, 0x19fb: 0x0ee9,\n\t0x19fc: 0x1159, 0x19fd: 0x0ef9, 0x19fe: 0x0f09, 0x19ff: 0x1199,\n\t// Block 0x68, offset 0x1a00\n\t0x1a00: 0x0f31, 0x1a01: 0x0249, 0x1a02: 0x0f41, 0x1a03: 0x0259, 0x1a04: 0x0f51, 0x1a05: 0x0359,\n\t0x1a06: 0x0f61, 0x1a07: 0x0f71, 0x1a08: 0x00d9, 0x1a09: 0x0f99, 0x1a0a: 0x2039, 0x1a0b: 0x0269,\n\t0x1a0c: 0x01d9, 0x1a0d: 0x0fa9, 0x1a0e: 0x0fb9, 0x1a0f: 0x1089, 0x1a10: 0x0279, 0x1a11: 0x0369,\n\t0x1a12: 0x0289, 0x1a13: 0x13d1, 0x1a14: 0x0039, 0x1a15: 0x0ee9, 0x1a16: 0x1159, 0x1a17: 0x0ef9,\n\t0x1a18: 0x0f09, 0x1a19: 0x1199, 0x1a1a: 0x0f31, 0x1a1b: 0x0249, 0x1a1c: 0x0f41, 0x1a1d: 0x0259,\n\t0x1a1e: 0x0f51, 0x1a1f: 0x0359, 0x1a20: 0x0f61, 0x1a21: 0x0f71, 0x1a22: 0x00d9, 0x1a23: 0x0f99,\n\t0x1a24: 0x2039, 0x1a25: 0x0269, 0x1a26: 0x01d9, 0x1a27: 0x0fa9, 0x1a28: 0x0fb9, 0x1a29: 0x1089,\n\t0x1a2a: 0x0279, 0x1a2b: 0x0369, 0x1a2c: 0x0289, 0x1a2d: 0x13d1, 0x1a2e: 0x0039, 0x1a2f: 0x0ee9,\n\t0x1a30: 0x1159, 0x1a31: 0x0ef9, 0x1a32: 0x0f09, 0x1a33: 0x1199, 0x1a34: 0x0f31, 0x1a35: 0x0249,\n\t0x1a36: 0x0f41, 0x1a37: 0x0259, 0x1a38: 0x0f51, 0x1a39: 0x0359, 0x1a3a: 0x0f61, 0x1a3b: 0x0f71,\n\t0x1a3c: 0x00d9, 0x1a3d: 0x0f99, 0x1a3e: 0x2039, 0x1a3f: 0x0269,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x01d9, 0x1a41: 0x0fa9, 0x1a42: 0x0fb9, 0x1a43: 0x1089, 0x1a44: 0x0279, 0x1a45: 0x0369,\n\t0x1a46: 0x0289, 0x1a47: 0x13d1, 0x1a48: 0x0039, 0x1a49: 0x0ee9, 0x1a4a: 0x1159, 0x1a4b: 0x0ef9,\n\t0x1a4c: 0x0f09, 0x1a4d: 0x1199, 0x1a4e: 0x0f31, 0x1a4f: 0x0249, 0x1a50: 0x0f41, 0x1a51: 0x0259,\n\t0x1a52: 0x0f51, 0x1a53: 0x0359, 0x1a54: 0x0f61, 0x1a55: 0x0f71, 0x1a56: 0x00d9, 0x1a57: 0x0f99,\n\t0x1a58: 0x2039, 0x1a59: 0x0269, 0x1a5a: 0x01d9, 0x1a5b: 0x0fa9, 0x1a5c: 0x0fb9, 0x1a5d: 0x1089,\n\t0x1a5e: 0x0279, 0x1a5f: 0x0369, 0x1a60: 0x0289, 0x1a61: 0x13d1, 0x1a62: 0x0039, 0x1a63: 0x0ee9,\n\t0x1a64: 0x1159, 0x1a65: 0x0ef9, 0x1a66: 0x0f09, 0x1a67: 0x1199, 0x1a68: 0x0f31, 0x1a69: 0x0249,\n\t0x1a6a: 0x0f41, 0x1a6b: 0x0259, 0x1a6c: 0x0f51, 0x1a6d: 0x0359, 0x1a6e: 0x0f61, 0x1a6f: 0x0f71,\n\t0x1a70: 0x00d9, 0x1a71: 0x0f99, 0x1a72: 0x2039, 0x1a73: 0x0269, 0x1a74: 0x01d9, 0x1a75: 0x0fa9,\n\t0x1a76: 0x0fb9, 0x1a77: 0x1089, 0x1a78: 0x0279, 0x1a79: 0x0369, 0x1a7a: 0x0289, 0x1a7b: 0x13d1,\n\t0x1a7c: 0x0039, 0x1a7d: 0x0ee9, 0x1a7e: 0x1159, 0x1a7f: 0x0ef9,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x0f09, 0x1a81: 0x1199, 0x1a82: 0x0f31, 0x1a83: 0x0249, 0x1a84: 0x0f41, 0x1a85: 0x0259,\n\t0x1a86: 0x0f51, 0x1a87: 0x0359, 0x1a88: 0x0f61, 0x1a89: 0x0f71, 0x1a8a: 0x00d9, 0x1a8b: 0x0f99,\n\t0x1a8c: 0x2039, 0x1a8d: 0x0269, 0x1a8e: 0x01d9, 0x1a8f: 0x0fa9, 0x1a90: 0x0fb9, 0x1a91: 0x1089,\n\t0x1a92: 0x0279, 0x1a93: 0x0369, 0x1a94: 0x0289, 0x1a95: 0x13d1, 0x1a96: 0x0039, 0x1a97: 0x0ee9,\n\t0x1a98: 0x1159, 0x1a99: 0x0ef9, 0x1a9a: 0x0f09, 0x1a9b: 0x1199, 0x1a9c: 0x0f31, 0x1a9d: 0x0249,\n\t0x1a9e: 0x0f41, 0x1a9f: 0x0259, 0x1aa0: 0x0f51, 0x1aa1: 0x0359, 0x1aa2: 0x0f61, 0x1aa3: 0x0f71,\n\t0x1aa4: 0x00d9, 0x1aa5: 0x0f99, 0x1aa6: 0x2039, 0x1aa7: 0x0269, 0x1aa8: 0x01d9, 0x1aa9: 0x0fa9,\n\t0x1aaa: 0x0fb9, 0x1aab: 0x1089, 0x1aac: 0x0279, 0x1aad: 0x0369, 0x1aae: 0x0289, 0x1aaf: 0x13d1,\n\t0x1ab0: 0x0039, 0x1ab1: 0x0ee9, 0x1ab2: 0x1159, 0x1ab3: 0x0ef9, 0x1ab4: 0x0f09, 0x1ab5: 0x1199,\n\t0x1ab6: 0x0f31, 0x1ab7: 0x0249, 0x1ab8: 0x0f41, 0x1ab9: 0x0259, 0x1aba: 0x0f51, 0x1abb: 0x0359,\n\t0x1abc: 0x0f61, 0x1abd: 0x0f71, 0x1abe: 0x00d9, 0x1abf: 0x0f99,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x2039, 0x1ac1: 0x0269, 0x1ac2: 0x01d9, 0x1ac3: 0x0fa9, 0x1ac4: 0x0fb9, 0x1ac5: 0x1089,\n\t0x1ac6: 0x0279, 0x1ac7: 0x0369, 0x1ac8: 0x0289, 0x1ac9: 0x13d1, 0x1aca: 0x0039, 0x1acb: 0x0ee9,\n\t0x1acc: 0x1159, 0x1acd: 0x0ef9, 0x1ace: 0x0f09, 0x1acf: 0x1199, 0x1ad0: 0x0f31, 0x1ad1: 0x0249,\n\t0x1ad2: 0x0f41, 0x1ad3: 0x0259, 0x1ad4: 0x0f51, 0x1ad5: 0x0359, 0x1ad6: 0x0f61, 0x1ad7: 0x0f71,\n\t0x1ad8: 0x00d9, 0x1ad9: 0x0f99, 0x1ada: 0x2039, 0x1adb: 0x0269, 0x1adc: 0x01d9, 0x1add: 0x0fa9,\n\t0x1ade: 0x0fb9, 0x1adf: 0x1089, 0x1ae0: 0x0279, 0x1ae1: 0x0369, 0x1ae2: 0x0289, 0x1ae3: 0x13d1,\n\t0x1ae4: 0xba81, 0x1ae5: 0xba99, 0x1ae6: 0x0040, 0x1ae7: 0x0040, 0x1ae8: 0xbab1, 0x1ae9: 0x1099,\n\t0x1aea: 0x10b1, 0x1aeb: 0x10c9, 0x1aec: 0xbac9, 0x1aed: 0xbae1, 0x1aee: 0xbaf9, 0x1aef: 0x1429,\n\t0x1af0: 0x1a31, 0x1af1: 0xbb11, 0x1af2: 0xbb29, 0x1af3: 0xbb41, 0x1af4: 0xbb59, 0x1af5: 0xbb71,\n\t0x1af6: 0xbb89, 0x1af7: 0x2109, 0x1af8: 0x1111, 0x1af9: 0x1429, 0x1afa: 0xbba1, 0x1afb: 0xbbb9,\n\t0x1afc: 0xbbd1, 0x1afd: 0x10e1, 0x1afe: 0x10f9, 0x1aff: 0xbbe9,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x2079, 0x1b01: 0xbc01, 0x1b02: 0xbab1, 0x1b03: 0x1099, 0x1b04: 0x10b1, 0x1b05: 0x10c9,\n\t0x1b06: 0xbac9, 0x1b07: 0xbae1, 0x1b08: 0xbaf9, 0x1b09: 0x1429, 0x1b0a: 0x1a31, 0x1b0b: 0xbb11,\n\t0x1b0c: 0xbb29, 0x1b0d: 0xbb41, 0x1b0e: 0xbb59, 0x1b0f: 0xbb71, 0x1b10: 0xbb89, 0x1b11: 0x2109,\n\t0x1b12: 0x1111, 0x1b13: 0xbba1, 0x1b14: 0xbba1, 0x1b15: 0xbbb9, 0x1b16: 0xbbd1, 0x1b17: 0x10e1,\n\t0x1b18: 0x10f9, 0x1b19: 0xbbe9, 0x1b1a: 0x2079, 0x1b1b: 0xbc21, 0x1b1c: 0xbac9, 0x1b1d: 0x1429,\n\t0x1b1e: 0xbb11, 0x1b1f: 0x10e1, 0x1b20: 0x1111, 0x1b21: 0x2109, 0x1b22: 0xbab1, 0x1b23: 0x1099,\n\t0x1b24: 0x10b1, 0x1b25: 0x10c9, 0x1b26: 0xbac9, 0x1b27: 0xbae1, 0x1b28: 0xbaf9, 0x1b29: 0x1429,\n\t0x1b2a: 0x1a31, 0x1b2b: 0xbb11, 0x1b2c: 0xbb29, 0x1b2d: 0xbb41, 0x1b2e: 0xbb59, 0x1b2f: 0xbb71,\n\t0x1b30: 0xbb89, 0x1b31: 0x2109, 0x1b32: 0x1111, 0x1b33: 0x1429, 0x1b34: 0xbba1, 0x1b35: 0xbbb9,\n\t0x1b36: 0xbbd1, 0x1b37: 0x10e1, 0x1b38: 0x10f9, 0x1b39: 0xbbe9, 0x1b3a: 0x2079, 0x1b3b: 0xbc01,\n\t0x1b3c: 0xbab1, 0x1b3d: 0x1099, 0x1b3e: 0x10b1, 0x1b3f: 0x10c9,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0xbac9, 0x1b41: 0xbae1, 0x1b42: 0xbaf9, 0x1b43: 0x1429, 0x1b44: 0x1a31, 0x1b45: 0xbb11,\n\t0x1b46: 0xbb29, 0x1b47: 0xbb41, 0x1b48: 0xbb59, 0x1b49: 0xbb71, 0x1b4a: 0xbb89, 0x1b4b: 0x2109,\n\t0x1b4c: 0x1111, 0x1b4d: 0xbba1, 0x1b4e: 0xbba1, 0x1b4f: 0xbbb9, 0x1b50: 0xbbd1, 0x1b51: 0x10e1,\n\t0x1b52: 0x10f9, 0x1b53: 0xbbe9, 0x1b54: 0x2079, 0x1b55: 0xbc21, 0x1b56: 0xbac9, 0x1b57: 0x1429,\n\t0x1b58: 0xbb11, 0x1b59: 0x10e1, 0x1b5a: 0x1111, 0x1b5b: 0x2109, 0x1b5c: 0xbab1, 0x1b5d: 0x1099,\n\t0x1b5e: 0x10b1, 0x1b5f: 0x10c9, 0x1b60: 0xbac9, 0x1b61: 0xbae1, 0x1b62: 0xbaf9, 0x1b63: 0x1429,\n\t0x1b64: 0x1a31, 0x1b65: 0xbb11, 0x1b66: 0xbb29, 0x1b67: 0xbb41, 0x1b68: 0xbb59, 0x1b69: 0xbb71,\n\t0x1b6a: 0xbb89, 0x1b6b: 0x2109, 0x1b6c: 0x1111, 0x1b6d: 0x1429, 0x1b6e: 0xbba1, 0x1b6f: 0xbbb9,\n\t0x1b70: 0xbbd1, 0x1b71: 0x10e1, 0x1b72: 0x10f9, 0x1b73: 0xbbe9, 0x1b74: 0x2079, 0x1b75: 0xbc01,\n\t0x1b76: 0xbab1, 0x1b77: 0x1099, 0x1b78: 0x10b1, 0x1b79: 0x10c9, 0x1b7a: 0xbac9, 0x1b7b: 0xbae1,\n\t0x1b7c: 0xbaf9, 0x1b7d: 0x1429, 0x1b7e: 0x1a31, 0x1b7f: 0xbb11,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0xbb29, 0x1b81: 0xbb41, 0x1b82: 0xbb59, 0x1b83: 0xbb71, 0x1b84: 0xbb89, 0x1b85: 0x2109,\n\t0x1b86: 0x1111, 0x1b87: 0xbba1, 0x1b88: 0xbba1, 0x1b89: 0xbbb9, 0x1b8a: 0xbbd1, 0x1b8b: 0x10e1,\n\t0x1b8c: 0x10f9, 0x1b8d: 0xbbe9, 0x1b8e: 0x2079, 0x1b8f: 0xbc21, 0x1b90: 0xbac9, 0x1b91: 0x1429,\n\t0x1b92: 0xbb11, 0x1b93: 0x10e1, 0x1b94: 0x1111, 0x1b95: 0x2109, 0x1b96: 0xbab1, 0x1b97: 0x1099,\n\t0x1b98: 0x10b1, 0x1b99: 0x10c9, 0x1b9a: 0xbac9, 0x1b9b: 0xbae1, 0x1b9c: 0xbaf9, 0x1b9d: 0x1429,\n\t0x1b9e: 0x1a31, 0x1b9f: 0xbb11, 0x1ba0: 0xbb29, 0x1ba1: 0xbb41, 0x1ba2: 0xbb59, 0x1ba3: 0xbb71,\n\t0x1ba4: 0xbb89, 0x1ba5: 0x2109, 0x1ba6: 0x1111, 0x1ba7: 0x1429, 0x1ba8: 0xbba1, 0x1ba9: 0xbbb9,\n\t0x1baa: 0xbbd1, 0x1bab: 0x10e1, 0x1bac: 0x10f9, 0x1bad: 0xbbe9, 0x1bae: 0x2079, 0x1baf: 0xbc01,\n\t0x1bb0: 0xbab1, 0x1bb1: 0x1099, 0x1bb2: 0x10b1, 0x1bb3: 0x10c9, 0x1bb4: 0xbac9, 0x1bb5: 0xbae1,\n\t0x1bb6: 0xbaf9, 0x1bb7: 0x1429, 0x1bb8: 0x1a31, 0x1bb9: 0xbb11, 0x1bba: 0xbb29, 0x1bbb: 0xbb41,\n\t0x1bbc: 0xbb59, 0x1bbd: 0xbb71, 0x1bbe: 0xbb89, 0x1bbf: 0x2109,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x1111, 0x1bc1: 0xbba1, 0x1bc2: 0xbba1, 0x1bc3: 0xbbb9, 0x1bc4: 0xbbd1, 0x1bc5: 0x10e1,\n\t0x1bc6: 0x10f9, 0x1bc7: 0xbbe9, 0x1bc8: 0x2079, 0x1bc9: 0xbc21, 0x1bca: 0xbac9, 0x1bcb: 0x1429,\n\t0x1bcc: 0xbb11, 0x1bcd: 0x10e1, 0x1bce: 0x1111, 0x1bcf: 0x2109, 0x1bd0: 0xbab1, 0x1bd1: 0x1099,\n\t0x1bd2: 0x10b1, 0x1bd3: 0x10c9, 0x1bd4: 0xbac9, 0x1bd5: 0xbae1, 0x1bd6: 0xbaf9, 0x1bd7: 0x1429,\n\t0x1bd8: 0x1a31, 0x1bd9: 0xbb11, 0x1bda: 0xbb29, 0x1bdb: 0xbb41, 0x1bdc: 0xbb59, 0x1bdd: 0xbb71,\n\t0x1bde: 0xbb89, 0x1bdf: 0x2109, 0x1be0: 0x1111, 0x1be1: 0x1429, 0x1be2: 0xbba1, 0x1be3: 0xbbb9,\n\t0x1be4: 0xbbd1, 0x1be5: 0x10e1, 0x1be6: 0x10f9, 0x1be7: 0xbbe9, 0x1be8: 0x2079, 0x1be9: 0xbc01,\n\t0x1bea: 0xbab1, 0x1beb: 0x1099, 0x1bec: 0x10b1, 0x1bed: 0x10c9, 0x1bee: 0xbac9, 0x1bef: 0xbae1,\n\t0x1bf0: 0xbaf9, 0x1bf1: 0x1429, 0x1bf2: 0x1a31, 0x1bf3: 0xbb11, 0x1bf4: 0xbb29, 0x1bf5: 0xbb41,\n\t0x1bf6: 0xbb59, 0x1bf7: 0xbb71, 0x1bf8: 0xbb89, 0x1bf9: 0x2109, 0x1bfa: 0x1111, 0x1bfb: 0xbba1,\n\t0x1bfc: 0xbba1, 0x1bfd: 0xbbb9, 0x1bfe: 0xbbd1, 0x1bff: 0x10e1,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0x10f9, 0x1c01: 0xbbe9, 0x1c02: 0x2079, 0x1c03: 0xbc21, 0x1c04: 0xbac9, 0x1c05: 0x1429,\n\t0x1c06: 0xbb11, 0x1c07: 0x10e1, 0x1c08: 0x1111, 0x1c09: 0x2109, 0x1c0a: 0xbc41, 0x1c0b: 0xbc41,\n\t0x1c0c: 0x0040, 0x1c0d: 0x0040, 0x1c0e: 0x1f41, 0x1c0f: 0x00c9, 0x1c10: 0x0069, 0x1c11: 0x0079,\n\t0x1c12: 0x1f51, 0x1c13: 0x1f61, 0x1c14: 0x1f71, 0x1c15: 0x1f81, 0x1c16: 0x1f91, 0x1c17: 0x1fa1,\n\t0x1c18: 0x1f41, 0x1c19: 0x00c9, 0x1c1a: 0x0069, 0x1c1b: 0x0079, 0x1c1c: 0x1f51, 0x1c1d: 0x1f61,\n\t0x1c1e: 0x1f71, 0x1c1f: 0x1f81, 0x1c20: 0x1f91, 0x1c21: 0x1fa1, 0x1c22: 0x1f41, 0x1c23: 0x00c9,\n\t0x1c24: 0x0069, 0x1c25: 0x0079, 0x1c26: 0x1f51, 0x1c27: 0x1f61, 0x1c28: 0x1f71, 0x1c29: 0x1f81,\n\t0x1c2a: 0x1f91, 0x1c2b: 0x1fa1, 0x1c2c: 0x1f41, 0x1c2d: 0x00c9, 0x1c2e: 0x0069, 0x1c2f: 0x0079,\n\t0x1c30: 0x1f51, 0x1c31: 0x1f61, 0x1c32: 0x1f71, 0x1c33: 0x1f81, 0x1c34: 0x1f91, 0x1c35: 0x1fa1,\n\t0x1c36: 0x1f41, 0x1c37: 0x00c9, 0x1c38: 0x0069, 0x1c39: 0x0079, 0x1c3a: 0x1f51, 0x1c3b: 0x1f61,\n\t0x1c3c: 0x1f71, 0x1c3d: 0x1f81, 0x1c3e: 0x1f91, 0x1c3f: 0x1fa1,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0xe115, 0x1c41: 0xe115, 0x1c42: 0xe135, 0x1c43: 0xe135, 0x1c44: 0xe115, 0x1c45: 0xe115,\n\t0x1c46: 0xe175, 0x1c47: 0xe175, 0x1c48: 0xe115, 0x1c49: 0xe115, 0x1c4a: 0xe135, 0x1c4b: 0xe135,\n\t0x1c4c: 0xe115, 0x1c4d: 0xe115, 0x1c4e: 0xe1f5, 0x1c4f: 0xe1f5, 0x1c50: 0xe115, 0x1c51: 0xe115,\n\t0x1c52: 0xe135, 0x1c53: 0xe135, 0x1c54: 0xe115, 0x1c55: 0xe115, 0x1c56: 0xe175, 0x1c57: 0xe175,\n\t0x1c58: 0xe115, 0x1c59: 0xe115, 0x1c5a: 0xe135, 0x1c5b: 0xe135, 0x1c5c: 0xe115, 0x1c5d: 0xe115,\n\t0x1c5e: 0x8b3d, 0x1c5f: 0x8b3d, 0x1c60: 0x04b5, 0x1c61: 0x04b5, 0x1c62: 0x0a08, 0x1c63: 0x0a08,\n\t0x1c64: 0x0a08, 0x1c65: 0x0a08, 0x1c66: 0x0a08, 0x1c67: 0x0a08, 0x1c68: 0x0a08, 0x1c69: 0x0a08,\n\t0x1c6a: 0x0a08, 0x1c6b: 0x0a08, 0x1c6c: 0x0a08, 0x1c6d: 0x0a08, 0x1c6e: 0x0a08, 0x1c6f: 0x0a08,\n\t0x1c70: 0x0a08, 0x1c71: 0x0a08, 0x1c72: 0x0a08, 0x1c73: 0x0a08, 0x1c74: 0x0a08, 0x1c75: 0x0a08,\n\t0x1c76: 0x0a08, 0x1c77: 0x0a08, 0x1c78: 0x0a08, 0x1c79: 0x0a08, 0x1c7a: 0x0a08, 0x1c7b: 0x0a08,\n\t0x1c7c: 0x0a08, 0x1c7d: 0x0a08, 0x1c7e: 0x0a08, 0x1c7f: 0x0a08,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0x0040, 0x1c85: 0xb411,\n\t0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0xb399, 0x1c8b: 0xb3b1,\n\t0x1c8c: 0xb3c9, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0xb369, 0x1c91: 0xb2d9,\n\t0x1c92: 0xb381, 0x1c93: 0xb279, 0x1c94: 0xb2c1, 0x1c95: 0xb1d1, 0x1c96: 0xb1e9, 0x1c97: 0xb231,\n\t0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0xbc59, 0x1c9d: 0x7949,\n\t0x1c9e: 0xbc71, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040,\n\t0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0x0040, 0x1ca9: 0xb429,\n\t0x1caa: 0xb399, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339,\n\t0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1,\n\t0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0x0040, 0x1cbb: 0xb351,\n\t0x1cbc: 0x0040, 0x1cbd: 0x0040, 0x1cbe: 0x0040, 0x1cbf: 0x0040,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x0040, 0x1cc1: 0x0040, 0x1cc2: 0xb201, 0x1cc3: 0x0040, 0x1cc4: 0x0040, 0x1cc5: 0x0040,\n\t0x1cc6: 0x0040, 0x1cc7: 0xb219, 0x1cc8: 0x0040, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1,\n\t0x1ccc: 0x0040, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0x0040, 0x1cd1: 0xb2d9,\n\t0x1cd2: 0xb381, 0x1cd3: 0x0040, 0x1cd4: 0xb2c1, 0x1cd5: 0x0040, 0x1cd6: 0x0040, 0x1cd7: 0xb231,\n\t0x1cd8: 0x0040, 0x1cd9: 0xb2f1, 0x1cda: 0x0040, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x7949,\n\t0x1cde: 0x0040, 0x1cdf: 0xbc89, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0x0040,\n\t0x1ce4: 0xb3f9, 0x1ce5: 0x0040, 0x1ce6: 0x0040, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429,\n\t0x1cea: 0xb399, 0x1ceb: 0x0040, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339,\n\t0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0x0040, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1,\n\t0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0x0040, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351,\n\t0x1cfc: 0xbc59, 0x1cfd: 0x0040, 0x1cfe: 0xbc71, 0x1cff: 0x0040,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0xb189, 0x1d01: 0xb1a1, 0x1d02: 0xb201, 0x1d03: 0xb249, 0x1d04: 0xb3f9, 0x1d05: 0xb411,\n\t0x1d06: 0xb291, 0x1d07: 0xb219, 0x1d08: 0xb309, 0x1d09: 0xb429, 0x1d0a: 0x0040, 0x1d0b: 0xb3b1,\n\t0x1d0c: 0xb3c9, 0x1d0d: 0xb3e1, 0x1d0e: 0xb2a9, 0x1d0f: 0xb339, 0x1d10: 0xb369, 0x1d11: 0xb2d9,\n\t0x1d12: 0xb381, 0x1d13: 0xb279, 0x1d14: 0xb2c1, 0x1d15: 0xb1d1, 0x1d16: 0xb1e9, 0x1d17: 0xb231,\n\t0x1d18: 0xb261, 0x1d19: 0xb2f1, 0x1d1a: 0xb321, 0x1d1b: 0xb351, 0x1d1c: 0x0040, 0x1d1d: 0x0040,\n\t0x1d1e: 0x0040, 0x1d1f: 0x0040, 0x1d20: 0x0040, 0x1d21: 0xb1a1, 0x1d22: 0xb201, 0x1d23: 0xb249,\n\t0x1d24: 0x0040, 0x1d25: 0xb411, 0x1d26: 0xb291, 0x1d27: 0xb219, 0x1d28: 0xb309, 0x1d29: 0xb429,\n\t0x1d2a: 0x0040, 0x1d2b: 0xb3b1, 0x1d2c: 0xb3c9, 0x1d2d: 0xb3e1, 0x1d2e: 0xb2a9, 0x1d2f: 0xb339,\n\t0x1d30: 0xb369, 0x1d31: 0xb2d9, 0x1d32: 0xb381, 0x1d33: 0xb279, 0x1d34: 0xb2c1, 0x1d35: 0xb1d1,\n\t0x1d36: 0xb1e9, 0x1d37: 0xb231, 0x1d38: 0xb261, 0x1d39: 0xb2f1, 0x1d3a: 0xb321, 0x1d3b: 0xb351,\n\t0x1d3c: 0x0040, 0x1d3d: 0x0040, 0x1d3e: 0x0040, 0x1d3f: 0x0040,\n\t// Block 0x75, offset 0x1d40\n\t0x1d40: 0x0040, 0x1d41: 0xbca2, 0x1d42: 0xbcba, 0x1d43: 0xbcd2, 0x1d44: 0xbcea, 0x1d45: 0xbd02,\n\t0x1d46: 0xbd1a, 0x1d47: 0xbd32, 0x1d48: 0xbd4a, 0x1d49: 0xbd62, 0x1d4a: 0xbd7a, 0x1d4b: 0x0018,\n\t0x1d4c: 0x0018, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xbd92, 0x1d51: 0xbdb2,\n\t0x1d52: 0xbdd2, 0x1d53: 0xbdf2, 0x1d54: 0xbe12, 0x1d55: 0xbe32, 0x1d56: 0xbe52, 0x1d57: 0xbe72,\n\t0x1d58: 0xbe92, 0x1d59: 0xbeb2, 0x1d5a: 0xbed2, 0x1d5b: 0xbef2, 0x1d5c: 0xbf12, 0x1d5d: 0xbf32,\n\t0x1d5e: 0xbf52, 0x1d5f: 0xbf72, 0x1d60: 0xbf92, 0x1d61: 0xbfb2, 0x1d62: 0xbfd2, 0x1d63: 0xbff2,\n\t0x1d64: 0xc012, 0x1d65: 0xc032, 0x1d66: 0xc052, 0x1d67: 0xc072, 0x1d68: 0xc092, 0x1d69: 0xc0b2,\n\t0x1d6a: 0xc0d1, 0x1d6b: 0x1159, 0x1d6c: 0x0269, 0x1d6d: 0x6671, 0x1d6e: 0xc111, 0x1d6f: 0x0018,\n\t0x1d70: 0x0039, 0x1d71: 0x0ee9, 0x1d72: 0x1159, 0x1d73: 0x0ef9, 0x1d74: 0x0f09, 0x1d75: 0x1199,\n\t0x1d76: 0x0f31, 0x1d77: 0x0249, 0x1d78: 0x0f41, 0x1d79: 0x0259, 0x1d7a: 0x0f51, 0x1d7b: 0x0359,\n\t0x1d7c: 0x0f61, 0x1d7d: 0x0f71, 0x1d7e: 0x00d9, 0x1d7f: 0x0f99,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0x2039, 0x1d81: 0x0269, 0x1d82: 0x01d9, 0x1d83: 0x0fa9, 0x1d84: 0x0fb9, 0x1d85: 0x1089,\n\t0x1d86: 0x0279, 0x1d87: 0x0369, 0x1d88: 0x0289, 0x1d89: 0x13d1, 0x1d8a: 0xc129, 0x1d8b: 0x65b1,\n\t0x1d8c: 0xc141, 0x1d8d: 0x1441, 0x1d8e: 0xc159, 0x1d8f: 0xc179, 0x1d90: 0x0018, 0x1d91: 0x0018,\n\t0x1d92: 0x0018, 0x1d93: 0x0018, 0x1d94: 0x0018, 0x1d95: 0x0018, 0x1d96: 0x0018, 0x1d97: 0x0018,\n\t0x1d98: 0x0018, 0x1d99: 0x0018, 0x1d9a: 0x0018, 0x1d9b: 0x0018, 0x1d9c: 0x0018, 0x1d9d: 0x0018,\n\t0x1d9e: 0x0018, 0x1d9f: 0x0018, 0x1da0: 0x0018, 0x1da1: 0x0018, 0x1da2: 0x0018, 0x1da3: 0x0018,\n\t0x1da4: 0x0018, 0x1da5: 0x0018, 0x1da6: 0x0018, 0x1da7: 0x0018, 0x1da8: 0x0018, 0x1da9: 0x0018,\n\t0x1daa: 0xc191, 0x1dab: 0xc1a9, 0x1dac: 0xc1c1, 0x1dad: 0x0040, 0x1dae: 0x0040, 0x1daf: 0x0040,\n\t0x1db0: 0x0018, 0x1db1: 0x0018, 0x1db2: 0x0018, 0x1db3: 0x0018, 0x1db4: 0x0018, 0x1db5: 0x0018,\n\t0x1db6: 0x0018, 0x1db7: 0x0018, 0x1db8: 0x0018, 0x1db9: 0x0018, 0x1dba: 0x0018, 0x1dbb: 0x0018,\n\t0x1dbc: 0x0018, 0x1dbd: 0x0018, 0x1dbe: 0x0018, 0x1dbf: 0x0018,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dc0: 0xc1f1, 0x1dc1: 0xc229, 0x1dc2: 0xc261, 0x1dc3: 0x0040, 0x1dc4: 0x0040, 0x1dc5: 0x0040,\n\t0x1dc6: 0x0040, 0x1dc7: 0x0040, 0x1dc8: 0x0040, 0x1dc9: 0x0040, 0x1dca: 0x0040, 0x1dcb: 0x0040,\n\t0x1dcc: 0x0040, 0x1dcd: 0x0040, 0x1dce: 0x0040, 0x1dcf: 0x0040, 0x1dd0: 0xc281, 0x1dd1: 0xc2a1,\n\t0x1dd2: 0xc2c1, 0x1dd3: 0xc2e1, 0x1dd4: 0xc301, 0x1dd5: 0xc321, 0x1dd6: 0xc341, 0x1dd7: 0xc361,\n\t0x1dd8: 0xc381, 0x1dd9: 0xc3a1, 0x1dda: 0xc3c1, 0x1ddb: 0xc3e1, 0x1ddc: 0xc401, 0x1ddd: 0xc421,\n\t0x1dde: 0xc441, 0x1ddf: 0xc461, 0x1de0: 0xc481, 0x1de1: 0xc4a1, 0x1de2: 0xc4c1, 0x1de3: 0xc4e1,\n\t0x1de4: 0xc501, 0x1de5: 0xc521, 0x1de6: 0xc541, 0x1de7: 0xc561, 0x1de8: 0xc581, 0x1de9: 0xc5a1,\n\t0x1dea: 0xc5c1, 0x1deb: 0xc5e1, 0x1dec: 0xc601, 0x1ded: 0xc621, 0x1dee: 0xc641, 0x1def: 0xc661,\n\t0x1df0: 0xc681, 0x1df1: 0xc6a1, 0x1df2: 0xc6c1, 0x1df3: 0xc6e1, 0x1df4: 0xc701, 0x1df5: 0xc721,\n\t0x1df6: 0xc741, 0x1df7: 0xc761, 0x1df8: 0xc781, 0x1df9: 0xc7a1, 0x1dfa: 0xc7c1, 0x1dfb: 0xc7e1,\n\t0x1dfc: 0x0040, 0x1dfd: 0x0040, 0x1dfe: 0x0040, 0x1dff: 0x0040,\n\t// Block 0x78, offset 0x1e00\n\t0x1e00: 0xcb11, 0x1e01: 0xcb31, 0x1e02: 0xcb51, 0x1e03: 0x8b55, 0x1e04: 0xcb71, 0x1e05: 0xcb91,\n\t0x1e06: 0xcbb1, 0x1e07: 0xcbd1, 0x1e08: 0xcbf1, 0x1e09: 0xcc11, 0x1e0a: 0xcc31, 0x1e0b: 0xcc51,\n\t0x1e0c: 0xcc71, 0x1e0d: 0x8b75, 0x1e0e: 0xcc91, 0x1e0f: 0xccb1, 0x1e10: 0xccd1, 0x1e11: 0xccf1,\n\t0x1e12: 0x8b95, 0x1e13: 0xcd11, 0x1e14: 0xcd31, 0x1e15: 0xc441, 0x1e16: 0x8bb5, 0x1e17: 0xcd51,\n\t0x1e18: 0xcd71, 0x1e19: 0xcd91, 0x1e1a: 0xcdb1, 0x1e1b: 0xcdd1, 0x1e1c: 0x8bd5, 0x1e1d: 0xcdf1,\n\t0x1e1e: 0xce11, 0x1e1f: 0xce31, 0x1e20: 0xce51, 0x1e21: 0xce71, 0x1e22: 0xc7a1, 0x1e23: 0xce91,\n\t0x1e24: 0xceb1, 0x1e25: 0xced1, 0x1e26: 0xcef1, 0x1e27: 0xcf11, 0x1e28: 0xcf31, 0x1e29: 0xcf51,\n\t0x1e2a: 0xcf71, 0x1e2b: 0xcf91, 0x1e2c: 0xcfb1, 0x1e2d: 0xcfd1, 0x1e2e: 0xcff1, 0x1e2f: 0xd011,\n\t0x1e30: 0xd031, 0x1e31: 0xd051, 0x1e32: 0xd051, 0x1e33: 0xd051, 0x1e34: 0x8bf5, 0x1e35: 0xd071,\n\t0x1e36: 0xd091, 0x1e37: 0xd0b1, 0x1e38: 0x8c15, 0x1e39: 0xd0d1, 0x1e3a: 0xd0f1, 0x1e3b: 0xd111,\n\t0x1e3c: 0xd131, 0x1e3d: 0xd151, 0x1e3e: 0xd171, 0x1e3f: 0xd191,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0xd1b1, 0x1e41: 0xd1d1, 0x1e42: 0xd1f1, 0x1e43: 0xd211, 0x1e44: 0xd231, 0x1e45: 0xd251,\n\t0x1e46: 0xd251, 0x1e47: 0xd271, 0x1e48: 0xd291, 0x1e49: 0xd2b1, 0x1e4a: 0xd2d1, 0x1e4b: 0xd2f1,\n\t0x1e4c: 0xd311, 0x1e4d: 0xd331, 0x1e4e: 0xd351, 0x1e4f: 0xd371, 0x1e50: 0xd391, 0x1e51: 0xd3b1,\n\t0x1e52: 0xd3d1, 0x1e53: 0xd3f1, 0x1e54: 0xd411, 0x1e55: 0xd431, 0x1e56: 0xd451, 0x1e57: 0xd471,\n\t0x1e58: 0xd491, 0x1e59: 0x8c35, 0x1e5a: 0xd4b1, 0x1e5b: 0xd4d1, 0x1e5c: 0xd4f1, 0x1e5d: 0xc321,\n\t0x1e5e: 0xd511, 0x1e5f: 0xd531, 0x1e60: 0x8c55, 0x1e61: 0x8c75, 0x1e62: 0xd551, 0x1e63: 0xd571,\n\t0x1e64: 0xd591, 0x1e65: 0xd5b1, 0x1e66: 0xd5d1, 0x1e67: 0xd5f1, 0x1e68: 0x2040, 0x1e69: 0xd611,\n\t0x1e6a: 0xd631, 0x1e6b: 0xd631, 0x1e6c: 0x8c95, 0x1e6d: 0xd651, 0x1e6e: 0xd671, 0x1e6f: 0xd691,\n\t0x1e70: 0xd6b1, 0x1e71: 0x8cb5, 0x1e72: 0xd6d1, 0x1e73: 0xd6f1, 0x1e74: 0x2040, 0x1e75: 0xd711,\n\t0x1e76: 0xd731, 0x1e77: 0xd751, 0x1e78: 0xd771, 0x1e79: 0xd791, 0x1e7a: 0xd7b1, 0x1e7b: 0x8cd5,\n\t0x1e7c: 0xd7d1, 0x1e7d: 0x8cf5, 0x1e7e: 0xd7f1, 0x1e7f: 0xd811,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0xd831, 0x1e81: 0xd851, 0x1e82: 0xd871, 0x1e83: 0xd891, 0x1e84: 0xd8b1, 0x1e85: 0xd8d1,\n\t0x1e86: 0xd8f1, 0x1e87: 0xd911, 0x1e88: 0xd931, 0x1e89: 0x8d15, 0x1e8a: 0xd951, 0x1e8b: 0xd971,\n\t0x1e8c: 0xd991, 0x1e8d: 0xd9b1, 0x1e8e: 0xd9d1, 0x1e8f: 0x8d35, 0x1e90: 0xd9f1, 0x1e91: 0x8d55,\n\t0x1e92: 0x8d75, 0x1e93: 0xda11, 0x1e94: 0xda31, 0x1e95: 0xda31, 0x1e96: 0xda51, 0x1e97: 0x8d95,\n\t0x1e98: 0x8db5, 0x1e99: 0xda71, 0x1e9a: 0xda91, 0x1e9b: 0xdab1, 0x1e9c: 0xdad1, 0x1e9d: 0xdaf1,\n\t0x1e9e: 0xdb11, 0x1e9f: 0xdb31, 0x1ea0: 0xdb51, 0x1ea1: 0xdb71, 0x1ea2: 0xdb91, 0x1ea3: 0xdbb1,\n\t0x1ea4: 0x8dd5, 0x1ea5: 0xdbd1, 0x1ea6: 0xdbf1, 0x1ea7: 0xdc11, 0x1ea8: 0xdc31, 0x1ea9: 0xdc11,\n\t0x1eaa: 0xdc51, 0x1eab: 0xdc71, 0x1eac: 0xdc91, 0x1ead: 0xdcb1, 0x1eae: 0xdcd1, 0x1eaf: 0xdcf1,\n\t0x1eb0: 0xdd11, 0x1eb1: 0xdd31, 0x1eb2: 0xdd51, 0x1eb3: 0xdd71, 0x1eb4: 0xdd91, 0x1eb5: 0xddb1,\n\t0x1eb6: 0xddd1, 0x1eb7: 0xddf1, 0x1eb8: 0x8df5, 0x1eb9: 0xde11, 0x1eba: 0xde31, 0x1ebb: 0xde51,\n\t0x1ebc: 0xde71, 0x1ebd: 0xde91, 0x1ebe: 0x8e15, 0x1ebf: 0xdeb1,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0xe5b1, 0x1ec1: 0xe5d1, 0x1ec2: 0xe5f1, 0x1ec3: 0xe611, 0x1ec4: 0xe631, 0x1ec5: 0xe651,\n\t0x1ec6: 0x8f35, 0x1ec7: 0xe671, 0x1ec8: 0xe691, 0x1ec9: 0xe6b1, 0x1eca: 0xe6d1, 0x1ecb: 0xe6f1,\n\t0x1ecc: 0xe711, 0x1ecd: 0x8f55, 0x1ece: 0xe731, 0x1ecf: 0xe751, 0x1ed0: 0x8f75, 0x1ed1: 0x8f95,\n\t0x1ed2: 0xe771, 0x1ed3: 0xe791, 0x1ed4: 0xe7b1, 0x1ed5: 0xe7d1, 0x1ed6: 0xe7f1, 0x1ed7: 0xe811,\n\t0x1ed8: 0xe831, 0x1ed9: 0xe851, 0x1eda: 0xe871, 0x1edb: 0x8fb5, 0x1edc: 0xe891, 0x1edd: 0x8fd5,\n\t0x1ede: 0xe8b1, 0x1edf: 0x2040, 0x1ee0: 0xe8d1, 0x1ee1: 0xe8f1, 0x1ee2: 0xe911, 0x1ee3: 0x8ff5,\n\t0x1ee4: 0xe931, 0x1ee5: 0xe951, 0x1ee6: 0x9015, 0x1ee7: 0x9035, 0x1ee8: 0xe971, 0x1ee9: 0xe991,\n\t0x1eea: 0xe9b1, 0x1eeb: 0xe9d1, 0x1eec: 0xe9f1, 0x1eed: 0xe9f1, 0x1eee: 0xea11, 0x1eef: 0xea31,\n\t0x1ef0: 0xea51, 0x1ef1: 0xea71, 0x1ef2: 0xea91, 0x1ef3: 0xeab1, 0x1ef4: 0xead1, 0x1ef5: 0x9055,\n\t0x1ef6: 0xeaf1, 0x1ef7: 0x9075, 0x1ef8: 0xeb11, 0x1ef9: 0x9095, 0x1efa: 0xeb31, 0x1efb: 0x90b5,\n\t0x1efc: 0x90d5, 0x1efd: 0x90f5, 0x1efe: 0xeb51, 0x1eff: 0xeb71,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0xeb91, 0x1f01: 0x9115, 0x1f02: 0x9135, 0x1f03: 0x9155, 0x1f04: 0x9175, 0x1f05: 0xebb1,\n\t0x1f06: 0xebd1, 0x1f07: 0xebd1, 0x1f08: 0xebf1, 0x1f09: 0xec11, 0x1f0a: 0xec31, 0x1f0b: 0xec51,\n\t0x1f0c: 0xec71, 0x1f0d: 0x9195, 0x1f0e: 0xec91, 0x1f0f: 0xecb1, 0x1f10: 0xecd1, 0x1f11: 0xecf1,\n\t0x1f12: 0x91b5, 0x1f13: 0xed11, 0x1f14: 0x91d5, 0x1f15: 0x91f5, 0x1f16: 0xed31, 0x1f17: 0xed51,\n\t0x1f18: 0xed71, 0x1f19: 0xed91, 0x1f1a: 0xedb1, 0x1f1b: 0xedd1, 0x1f1c: 0x9215, 0x1f1d: 0x9235,\n\t0x1f1e: 0x9255, 0x1f1f: 0x2040, 0x1f20: 0xedf1, 0x1f21: 0x9275, 0x1f22: 0xee11, 0x1f23: 0xee31,\n\t0x1f24: 0xee51, 0x1f25: 0x9295, 0x1f26: 0xee71, 0x1f27: 0xee91, 0x1f28: 0xeeb1, 0x1f29: 0xeed1,\n\t0x1f2a: 0xeef1, 0x1f2b: 0x92b5, 0x1f2c: 0xef11, 0x1f2d: 0xef31, 0x1f2e: 0xef51, 0x1f2f: 0xef71,\n\t0x1f30: 0xef91, 0x1f31: 0xefb1, 0x1f32: 0x92d5, 0x1f33: 0x92f5, 0x1f34: 0xefd1, 0x1f35: 0x9315,\n\t0x1f36: 0xeff1, 0x1f37: 0x9335, 0x1f38: 0xf011, 0x1f39: 0xf031, 0x1f3a: 0xf051, 0x1f3b: 0x9355,\n\t0x1f3c: 0x9375, 0x1f3d: 0xf071, 0x1f3e: 0x9395, 0x1f3f: 0xf091,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f40: 0xf6d1, 0x1f41: 0xf6f1, 0x1f42: 0xf711, 0x1f43: 0xf731, 0x1f44: 0xf751, 0x1f45: 0x9555,\n\t0x1f46: 0xf771, 0x1f47: 0xf791, 0x1f48: 0xf7b1, 0x1f49: 0xf7d1, 0x1f4a: 0xf7f1, 0x1f4b: 0x9575,\n\t0x1f4c: 0x9595, 0x1f4d: 0xf811, 0x1f4e: 0xf831, 0x1f4f: 0xf851, 0x1f50: 0xf871, 0x1f51: 0xf891,\n\t0x1f52: 0xf8b1, 0x1f53: 0x95b5, 0x1f54: 0xf8d1, 0x1f55: 0xf8f1, 0x1f56: 0xf911, 0x1f57: 0xf931,\n\t0x1f58: 0x95d5, 0x1f59: 0x95f5, 0x1f5a: 0xf951, 0x1f5b: 0xf971, 0x1f5c: 0xf991, 0x1f5d: 0x9615,\n\t0x1f5e: 0xf9b1, 0x1f5f: 0xf9d1, 0x1f60: 0x684d, 0x1f61: 0x9635, 0x1f62: 0xf9f1, 0x1f63: 0xfa11,\n\t0x1f64: 0xfa31, 0x1f65: 0x9655, 0x1f66: 0xfa51, 0x1f67: 0xfa71, 0x1f68: 0xfa91, 0x1f69: 0xfab1,\n\t0x1f6a: 0xfad1, 0x1f6b: 0xfaf1, 0x1f6c: 0xfb11, 0x1f6d: 0x9675, 0x1f6e: 0xfb31, 0x1f6f: 0xfb51,\n\t0x1f70: 0xfb71, 0x1f71: 0x9695, 0x1f72: 0xfb91, 0x1f73: 0xfbb1, 0x1f74: 0xfbd1, 0x1f75: 0xfbf1,\n\t0x1f76: 0x7b6d, 0x1f77: 0x96b5, 0x1f78: 0xfc11, 0x1f79: 0xfc31, 0x1f7a: 0xfc51, 0x1f7b: 0x96d5,\n\t0x1f7c: 0xfc71, 0x1f7d: 0x96f5, 0x1f7e: 0xfc91, 0x1f7f: 0xfc91,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f80: 0xfcb1, 0x1f81: 0x9715, 0x1f82: 0xfcd1, 0x1f83: 0xfcf1, 0x1f84: 0xfd11, 0x1f85: 0xfd31,\n\t0x1f86: 0xfd51, 0x1f87: 0xfd71, 0x1f88: 0xfd91, 0x1f89: 0x9735, 0x1f8a: 0xfdb1, 0x1f8b: 0xfdd1,\n\t0x1f8c: 0xfdf1, 0x1f8d: 0xfe11, 0x1f8e: 0xfe31, 0x1f8f: 0xfe51, 0x1f90: 0x9755, 0x1f91: 0xfe71,\n\t0x1f92: 0x9775, 0x1f93: 0x9795, 0x1f94: 0x97b5, 0x1f95: 0xfe91, 0x1f96: 0xfeb1, 0x1f97: 0xfed1,\n\t0x1f98: 0xfef1, 0x1f99: 0xff11, 0x1f9a: 0xff31, 0x1f9b: 0xff51, 0x1f9c: 0xff71, 0x1f9d: 0x97d5,\n\t0x1f9e: 0x0040, 0x1f9f: 0x0040, 0x1fa0: 0x0040, 0x1fa1: 0x0040, 0x1fa2: 0x0040, 0x1fa3: 0x0040,\n\t0x1fa4: 0x0040, 0x1fa5: 0x0040, 0x1fa6: 0x0040, 0x1fa7: 0x0040, 0x1fa8: 0x0040, 0x1fa9: 0x0040,\n\t0x1faa: 0x0040, 0x1fab: 0x0040, 0x1fac: 0x0040, 0x1fad: 0x0040, 0x1fae: 0x0040, 0x1faf: 0x0040,\n\t0x1fb0: 0x0040, 0x1fb1: 0x0040, 0x1fb2: 0x0040, 0x1fb3: 0x0040, 0x1fb4: 0x0040, 0x1fb5: 0x0040,\n\t0x1fb6: 0x0040, 0x1fb7: 0x0040, 0x1fb8: 0x0040, 0x1fb9: 0x0040, 0x1fba: 0x0040, 0x1fbb: 0x0040,\n\t0x1fbc: 0x0040, 0x1fbd: 0x0040, 0x1fbe: 0x0040, 0x1fbf: 0x0040,\n}\n\n// idnaIndex: 36 blocks, 2304 entries, 4608 bytes\n// Block 0 is the zero block.\nvar idnaIndex = [2304]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x7d, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05,\n\t0xc8: 0x06, 0xc9: 0x7e, 0xca: 0x7f, 0xcb: 0x07, 0xcc: 0x80, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a,\n\t0xd0: 0x81, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x82, 0xd6: 0x83, 0xd7: 0x84,\n\t0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x85, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x86, 0xde: 0x87, 0xdf: 0x88,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07,\n\t0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c,\n\t0xf0: 0x1d, 0xf1: 0x1e, 0xf2: 0x1e, 0xf3: 0x20, 0xf4: 0x21,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x89, 0x121: 0x13, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16,\n\t0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8d,\n\t0x130: 0x8e, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x8f, 0x135: 0x21, 0x136: 0x90, 0x137: 0x91,\n\t0x138: 0x92, 0x139: 0x93, 0x13a: 0x22, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x96,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e,\n\t0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6,\n\t0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f,\n\t0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae,\n\t0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6,\n\t0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe,\n\t0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc3,\n\t0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc4, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc5, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc6, 0x187: 0x9b,\n\t0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0x9b,\n\t0x190: 0xca, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b,\n\t0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b,\n\t0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b,\n\t0x1a8: 0xcb, 0x1a9: 0xcc, 0x1aa: 0x9b, 0x1ab: 0xcd, 0x1ac: 0x9b, 0x1ad: 0xce, 0x1ae: 0xcf, 0x1af: 0x9b,\n\t0x1b0: 0xd0, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd1, 0x1b5: 0xd2, 0x1b6: 0xd3, 0x1b7: 0xd4,\n\t0x1b8: 0xd5, 0x1b9: 0xd6, 0x1ba: 0xd7, 0x1bb: 0xd8, 0x1bc: 0xd9, 0x1bd: 0xda, 0x1be: 0xdb, 0x1bf: 0x37,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x38, 0x1c1: 0xdc, 0x1c2: 0xdd, 0x1c3: 0xde, 0x1c4: 0xdf, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe0,\n\t0x1c8: 0xe1, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0x3e, 0x1cd: 0x3f, 0x1ce: 0x40, 0x1cf: 0x41,\n\t0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f,\n\t0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f,\n\t0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f,\n\t0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f,\n\t0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f,\n\t0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f,\n\t0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f,\n\t0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f,\n\t0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f,\n\t0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f,\n\t0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f,\n\t0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b,\n\t0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f,\n\t0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f,\n\t0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f,\n\t0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f,\n\t0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f,\n\t0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f,\n\t0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f,\n\t0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f,\n\t0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f,\n\t0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f,\n\t0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f,\n\t0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f,\n\t0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f,\n\t0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f,\n\t0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe2,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f,\n\t0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f,\n\t0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe3, 0x2d3: 0xe4, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f,\n\t0x2d8: 0xe5, 0x2d9: 0x42, 0x2da: 0x43, 0x2db: 0xe6, 0x2dc: 0x44, 0x2dd: 0x45, 0x2de: 0x46, 0x2df: 0xe7,\n\t0x2e0: 0xe8, 0x2e1: 0xe9, 0x2e2: 0xea, 0x2e3: 0xeb, 0x2e4: 0xec, 0x2e5: 0xed, 0x2e6: 0xee, 0x2e7: 0xef,\n\t0x2e8: 0xf0, 0x2e9: 0xf1, 0x2ea: 0xf2, 0x2eb: 0xf3, 0x2ec: 0xf4, 0x2ed: 0xf5, 0x2ee: 0xf6, 0x2ef: 0xf7,\n\t0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f,\n\t0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f,\n\t0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f,\n\t0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f,\n\t0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xf8, 0x31f: 0xf9,\n\t// Block 0xd, offset 0x340\n\t0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba,\n\t0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba,\n\t0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba,\n\t0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba,\n\t0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba,\n\t0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba,\n\t0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba,\n\t0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba,\n\t0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba,\n\t0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba,\n\t0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba,\n\t0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfa, 0x3a5: 0xfb, 0x3a6: 0xfc, 0x3a7: 0xfd,\n\t0x3a8: 0x47, 0x3a9: 0xfe, 0x3aa: 0xff, 0x3ab: 0x48, 0x3ac: 0x49, 0x3ad: 0x4a, 0x3ae: 0x4b, 0x3af: 0x4c,\n\t0x3b0: 0x100, 0x3b1: 0x4d, 0x3b2: 0x4e, 0x3b3: 0x4f, 0x3b4: 0x50, 0x3b5: 0x51, 0x3b6: 0x101, 0x3b7: 0x52,\n\t0x3b8: 0x53, 0x3b9: 0x54, 0x3ba: 0x55, 0x3bb: 0x56, 0x3bc: 0x57, 0x3bd: 0x58, 0x3be: 0x59, 0x3bf: 0x5a,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x102, 0x3c1: 0x103, 0x3c2: 0x9f, 0x3c3: 0x104, 0x3c4: 0x105, 0x3c5: 0x9b, 0x3c6: 0x106, 0x3c7: 0x107,\n\t0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x108, 0x3cb: 0x109, 0x3cc: 0x10a, 0x3cd: 0x10b, 0x3ce: 0x10c, 0x3cf: 0x10d,\n\t0x3d0: 0x10e, 0x3d1: 0x9f, 0x3d2: 0x10f, 0x3d3: 0x110, 0x3d4: 0x111, 0x3d5: 0x112, 0x3d6: 0xba, 0x3d7: 0xba,\n\t0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x113, 0x3dd: 0x114, 0x3de: 0xba, 0x3df: 0xba,\n\t0x3e0: 0x115, 0x3e1: 0x116, 0x3e2: 0x117, 0x3e3: 0x118, 0x3e4: 0x119, 0x3e5: 0xba, 0x3e6: 0x11a, 0x3e7: 0x11b,\n\t0x3e8: 0x11c, 0x3e9: 0x11d, 0x3ea: 0x11e, 0x3eb: 0x5b, 0x3ec: 0x11f, 0x3ed: 0x120, 0x3ee: 0x5c, 0x3ef: 0xba,\n\t0x3f0: 0x121, 0x3f1: 0x122, 0x3f2: 0x123, 0x3f3: 0x124, 0x3f4: 0x125, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba,\n\t0x3f8: 0xba, 0x3f9: 0x126, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0x127, 0x3fd: 0x128, 0x3fe: 0xba, 0x3ff: 0x129,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x12a, 0x401: 0x12b, 0x402: 0x12c, 0x403: 0x12d, 0x404: 0x12e, 0x405: 0x12f, 0x406: 0x130, 0x407: 0x131,\n\t0x408: 0x132, 0x409: 0xba, 0x40a: 0x133, 0x40b: 0x134, 0x40c: 0x5d, 0x40d: 0x5e, 0x40e: 0xba, 0x40f: 0xba,\n\t0x410: 0x135, 0x411: 0x136, 0x412: 0x137, 0x413: 0x138, 0x414: 0xba, 0x415: 0xba, 0x416: 0x139, 0x417: 0x13a,\n\t0x418: 0x13b, 0x419: 0x13c, 0x41a: 0x13d, 0x41b: 0x13e, 0x41c: 0x13f, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba,\n\t0x420: 0x140, 0x421: 0xba, 0x422: 0x141, 0x423: 0x142, 0x424: 0xba, 0x425: 0xba, 0x426: 0x143, 0x427: 0x144,\n\t0x428: 0x145, 0x429: 0x146, 0x42a: 0x147, 0x42b: 0x148, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba,\n\t0x430: 0x149, 0x431: 0x14a, 0x432: 0x14b, 0x433: 0xba, 0x434: 0x14c, 0x435: 0x14d, 0x436: 0x14e, 0x437: 0xba,\n\t0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0x14f, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0x150,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f,\n\t0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x151, 0x44f: 0xba,\n\t0x450: 0x9b, 0x451: 0x152, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x153, 0x456: 0xba, 0x457: 0xba,\n\t0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba,\n\t0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba,\n\t0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba,\n\t0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba,\n\t0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f,\n\t0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f,\n\t0x490: 0x154, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba,\n\t0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba,\n\t0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba,\n\t0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba,\n\t0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba,\n\t0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba,\n\t0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba,\n\t0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f,\n\t0x4d8: 0x9f, 0x4d9: 0x155, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba,\n\t0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba,\n\t0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba,\n\t0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba,\n\t0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba,\n\t// Block 0x14, offset 0x500\n\t0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba,\n\t0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba,\n\t0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba,\n\t0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba,\n\t0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f,\n\t0x528: 0x148, 0x529: 0x156, 0x52a: 0xba, 0x52b: 0x157, 0x52c: 0x158, 0x52d: 0x159, 0x52e: 0x15a, 0x52f: 0xba,\n\t0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba,\n\t0x538: 0xba, 0x539: 0x15b, 0x53a: 0x15c, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x15d, 0x53e: 0x15e, 0x53f: 0x15f,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f,\n\t0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f,\n\t0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f,\n\t0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x160,\n\t0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f,\n\t0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x161, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba,\n\t0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba,\n\t0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x9f, 0x581: 0x9f, 0x582: 0x9f, 0x583: 0x9f, 0x584: 0x162, 0x585: 0x163, 0x586: 0x9f, 0x587: 0x9f,\n\t0x588: 0x9f, 0x589: 0x9f, 0x58a: 0x9f, 0x58b: 0x164, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba,\n\t0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba,\n\t0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba,\n\t0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba,\n\t0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba,\n\t0x5b0: 0x9f, 0x5b1: 0x165, 0x5b2: 0x166, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba,\n\t0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x167, 0x5c4: 0x168, 0x5c5: 0x169, 0x5c6: 0x16a, 0x5c7: 0x16b,\n\t0x5c8: 0x9b, 0x5c9: 0x16c, 0x5ca: 0xba, 0x5cb: 0x16d, 0x5cc: 0x9b, 0x5cd: 0x16e, 0x5ce: 0xba, 0x5cf: 0xba,\n\t0x5d0: 0x5f, 0x5d1: 0x60, 0x5d2: 0x61, 0x5d3: 0x62, 0x5d4: 0x63, 0x5d5: 0x64, 0x5d6: 0x65, 0x5d7: 0x66,\n\t0x5d8: 0x67, 0x5d9: 0x68, 0x5da: 0x69, 0x5db: 0x6a, 0x5dc: 0x6b, 0x5dd: 0x6c, 0x5de: 0x6d, 0x5df: 0x6e,\n\t0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b,\n\t0x5e8: 0x16f, 0x5e9: 0x170, 0x5ea: 0x171, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba,\n\t0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba,\n\t0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x172, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0x173, 0x605: 0x174, 0x606: 0xba, 0x607: 0xba,\n\t0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0x175, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba,\n\t0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba,\n\t0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba,\n\t0x620: 0x121, 0x621: 0x121, 0x622: 0x121, 0x623: 0x176, 0x624: 0x6f, 0x625: 0x177, 0x626: 0xba, 0x627: 0xba,\n\t0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba,\n\t0x630: 0xba, 0x631: 0x178, 0x632: 0x179, 0x633: 0xba, 0x634: 0x17a, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba,\n\t0x638: 0x70, 0x639: 0x71, 0x63a: 0x72, 0x63b: 0x17b, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x17c, 0x641: 0x9b, 0x642: 0x17d, 0x643: 0x17e, 0x644: 0x73, 0x645: 0x74, 0x646: 0x17f, 0x647: 0x180,\n\t0x648: 0x75, 0x649: 0x181, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b,\n\t0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b,\n\t0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x182, 0x65c: 0x9b, 0x65d: 0x183, 0x65e: 0x9b, 0x65f: 0x184,\n\t0x660: 0x185, 0x661: 0x186, 0x662: 0x187, 0x663: 0xba, 0x664: 0x188, 0x665: 0x189, 0x666: 0x18a, 0x667: 0x18b,\n\t0x668: 0x9b, 0x669: 0x18c, 0x66a: 0x18d, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba,\n\t0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba,\n\t0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f,\n\t0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f,\n\t0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f,\n\t0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x18e, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f,\n\t0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f,\n\t0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f,\n\t0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f,\n\t0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f,\n\t0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f,\n\t0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f,\n\t0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x18f, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f,\n\t0x6e0: 0x190, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f,\n\t0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f,\n\t0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f,\n\t0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f,\n\t0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f,\n\t0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f,\n\t0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f,\n\t0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f,\n\t0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f,\n\t0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f,\n\t0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x191, 0x73b: 0x9f, 0x73c: 0x9f, 0x73d: 0x9f, 0x73e: 0x9f, 0x73f: 0x9f,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x9f, 0x741: 0x9f, 0x742: 0x9f, 0x743: 0x9f, 0x744: 0x9f, 0x745: 0x9f, 0x746: 0x9f, 0x747: 0x9f,\n\t0x748: 0x9f, 0x749: 0x9f, 0x74a: 0x9f, 0x74b: 0x9f, 0x74c: 0x9f, 0x74d: 0x9f, 0x74e: 0x9f, 0x74f: 0x9f,\n\t0x750: 0x9f, 0x751: 0x9f, 0x752: 0x9f, 0x753: 0x9f, 0x754: 0x9f, 0x755: 0x9f, 0x756: 0x9f, 0x757: 0x9f,\n\t0x758: 0x9f, 0x759: 0x9f, 0x75a: 0x9f, 0x75b: 0x9f, 0x75c: 0x9f, 0x75d: 0x9f, 0x75e: 0x9f, 0x75f: 0x9f,\n\t0x760: 0x9f, 0x761: 0x9f, 0x762: 0x9f, 0x763: 0x9f, 0x764: 0x9f, 0x765: 0x9f, 0x766: 0x9f, 0x767: 0x9f,\n\t0x768: 0x9f, 0x769: 0x9f, 0x76a: 0x9f, 0x76b: 0x9f, 0x76c: 0x9f, 0x76d: 0x9f, 0x76e: 0x9f, 0x76f: 0x192,\n\t0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba,\n\t0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0xba, 0x781: 0xba, 0x782: 0xba, 0x783: 0xba, 0x784: 0xba, 0x785: 0xba, 0x786: 0xba, 0x787: 0xba,\n\t0x788: 0xba, 0x789: 0xba, 0x78a: 0xba, 0x78b: 0xba, 0x78c: 0xba, 0x78d: 0xba, 0x78e: 0xba, 0x78f: 0xba,\n\t0x790: 0xba, 0x791: 0xba, 0x792: 0xba, 0x793: 0xba, 0x794: 0xba, 0x795: 0xba, 0x796: 0xba, 0x797: 0xba,\n\t0x798: 0xba, 0x799: 0xba, 0x79a: 0xba, 0x79b: 0xba, 0x79c: 0xba, 0x79d: 0xba, 0x79e: 0xba, 0x79f: 0xba,\n\t0x7a0: 0x76, 0x7a1: 0x77, 0x7a2: 0x78, 0x7a3: 0x193, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x194, 0x7a7: 0x7b,\n\t0x7a8: 0x7c, 0x7a9: 0xba, 0x7aa: 0xba, 0x7ab: 0xba, 0x7ac: 0xba, 0x7ad: 0xba, 0x7ae: 0xba, 0x7af: 0xba,\n\t0x7b0: 0xba, 0x7b1: 0xba, 0x7b2: 0xba, 0x7b3: 0xba, 0x7b4: 0xba, 0x7b5: 0xba, 0x7b6: 0xba, 0x7b7: 0xba,\n\t0x7b8: 0xba, 0x7b9: 0xba, 0x7ba: 0xba, 0x7bb: 0xba, 0x7bc: 0xba, 0x7bd: 0xba, 0x7be: 0xba, 0x7bf: 0xba,\n\t// Block 0x1f, offset 0x7c0\n\t0x7d0: 0x0d, 0x7d1: 0x0e, 0x7d2: 0x0f, 0x7d3: 0x10, 0x7d4: 0x11, 0x7d5: 0x0b, 0x7d6: 0x12, 0x7d7: 0x07,\n\t0x7d8: 0x13, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x14, 0x7dc: 0x0b, 0x7dd: 0x15, 0x7de: 0x16, 0x7df: 0x17,\n\t0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07,\n\t0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x18, 0x7eb: 0x19, 0x7ec: 0x1a, 0x7ed: 0x07, 0x7ee: 0x1b, 0x7ef: 0x1c,\n\t0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b,\n\t0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x0b, 0x801: 0x0b, 0x802: 0x0b, 0x803: 0x0b, 0x804: 0x0b, 0x805: 0x0b, 0x806: 0x0b, 0x807: 0x0b,\n\t0x808: 0x0b, 0x809: 0x0b, 0x80a: 0x0b, 0x80b: 0x0b, 0x80c: 0x0b, 0x80d: 0x0b, 0x80e: 0x0b, 0x80f: 0x0b,\n\t0x810: 0x0b, 0x811: 0x0b, 0x812: 0x0b, 0x813: 0x0b, 0x814: 0x0b, 0x815: 0x0b, 0x816: 0x0b, 0x817: 0x0b,\n\t0x818: 0x0b, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x0b, 0x81c: 0x0b, 0x81d: 0x0b, 0x81e: 0x0b, 0x81f: 0x0b,\n\t0x820: 0x0b, 0x821: 0x0b, 0x822: 0x0b, 0x823: 0x0b, 0x824: 0x0b, 0x825: 0x0b, 0x826: 0x0b, 0x827: 0x0b,\n\t0x828: 0x0b, 0x829: 0x0b, 0x82a: 0x0b, 0x82b: 0x0b, 0x82c: 0x0b, 0x82d: 0x0b, 0x82e: 0x0b, 0x82f: 0x0b,\n\t0x830: 0x0b, 0x831: 0x0b, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b,\n\t0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x195, 0x841: 0x196, 0x842: 0xba, 0x843: 0xba, 0x844: 0x197, 0x845: 0x197, 0x846: 0x197, 0x847: 0x198,\n\t0x848: 0xba, 0x849: 0xba, 0x84a: 0xba, 0x84b: 0xba, 0x84c: 0xba, 0x84d: 0xba, 0x84e: 0xba, 0x84f: 0xba,\n\t0x850: 0xba, 0x851: 0xba, 0x852: 0xba, 0x853: 0xba, 0x854: 0xba, 0x855: 0xba, 0x856: 0xba, 0x857: 0xba,\n\t0x858: 0xba, 0x859: 0xba, 0x85a: 0xba, 0x85b: 0xba, 0x85c: 0xba, 0x85d: 0xba, 0x85e: 0xba, 0x85f: 0xba,\n\t0x860: 0xba, 0x861: 0xba, 0x862: 0xba, 0x863: 0xba, 0x864: 0xba, 0x865: 0xba, 0x866: 0xba, 0x867: 0xba,\n\t0x868: 0xba, 0x869: 0xba, 0x86a: 0xba, 0x86b: 0xba, 0x86c: 0xba, 0x86d: 0xba, 0x86e: 0xba, 0x86f: 0xba,\n\t0x870: 0xba, 0x871: 0xba, 0x872: 0xba, 0x873: 0xba, 0x874: 0xba, 0x875: 0xba, 0x876: 0xba, 0x877: 0xba,\n\t0x878: 0xba, 0x879: 0xba, 0x87a: 0xba, 0x87b: 0xba, 0x87c: 0xba, 0x87d: 0xba, 0x87e: 0xba, 0x87f: 0xba,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b,\n\t0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b,\n\t0x890: 0x0b, 0x891: 0x0b, 0x892: 0x0b, 0x893: 0x0b, 0x894: 0x0b, 0x895: 0x0b, 0x896: 0x0b, 0x897: 0x0b,\n\t0x898: 0x0b, 0x899: 0x0b, 0x89a: 0x0b, 0x89b: 0x0b, 0x89c: 0x0b, 0x89d: 0x0b, 0x89e: 0x0b, 0x89f: 0x0b,\n\t0x8a0: 0x1f, 0x8a1: 0x0b, 0x8a2: 0x0b, 0x8a3: 0x0b, 0x8a4: 0x0b, 0x8a5: 0x0b, 0x8a6: 0x0b, 0x8a7: 0x0b,\n\t0x8a8: 0x0b, 0x8a9: 0x0b, 0x8aa: 0x0b, 0x8ab: 0x0b, 0x8ac: 0x0b, 0x8ad: 0x0b, 0x8ae: 0x0b, 0x8af: 0x0b,\n\t0x8b0: 0x0b, 0x8b1: 0x0b, 0x8b2: 0x0b, 0x8b3: 0x0b, 0x8b4: 0x0b, 0x8b5: 0x0b, 0x8b6: 0x0b, 0x8b7: 0x0b,\n\t0x8b8: 0x0b, 0x8b9: 0x0b, 0x8ba: 0x0b, 0x8bb: 0x0b, 0x8bc: 0x0b, 0x8bd: 0x0b, 0x8be: 0x0b, 0x8bf: 0x0b,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b,\n\t0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b,\n}\n\n// idnaSparseOffset: 284 entries, 568 bytes\nvar idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x33, 0x3e, 0x4a, 0x4e, 0x5d, 0x62, 0x6c, 0x78, 0x86, 0x8b, 0x94, 0xa4, 0xb2, 0xbe, 0xca, 0xdb, 0xe5, 0xec, 0xf9, 0x10a, 0x111, 0x11c, 0x12b, 0x139, 0x143, 0x145, 0x14a, 0x14d, 0x150, 0x152, 0x15e, 0x169, 0x171, 0x177, 0x17d, 0x182, 0x187, 0x18a, 0x18e, 0x194, 0x199, 0x1a5, 0x1af, 0x1b5, 0x1c6, 0x1d0, 0x1d3, 0x1db, 0x1de, 0x1eb, 0x1f3, 0x1f7, 0x1fe, 0x206, 0x216, 0x222, 0x224, 0x22e, 0x23a, 0x246, 0x252, 0x25a, 0x25f, 0x26c, 0x27d, 0x281, 0x28c, 0x290, 0x299, 0x2a1, 0x2a7, 0x2ac, 0x2af, 0x2b3, 0x2b9, 0x2bd, 0x2c1, 0x2c5, 0x2cb, 0x2d3, 0x2da, 0x2e5, 0x2ef, 0x2f3, 0x2f6, 0x2fc, 0x300, 0x302, 0x305, 0x307, 0x30a, 0x314, 0x317, 0x326, 0x32a, 0x32f, 0x332, 0x336, 0x33b, 0x340, 0x346, 0x352, 0x361, 0x367, 0x36b, 0x37a, 0x37f, 0x387, 0x391, 0x39c, 0x3a4, 0x3b5, 0x3be, 0x3ce, 0x3db, 0x3e5, 0x3ea, 0x3f7, 0x3fb, 0x400, 0x402, 0x406, 0x408, 0x40c, 0x415, 0x41b, 0x41f, 0x42f, 0x439, 0x43e, 0x441, 0x447, 0x44e, 0x453, 0x457, 0x45d, 0x462, 0x46b, 0x470, 0x476, 0x47d, 0x484, 0x48b, 0x48f, 0x494, 0x497, 0x49c, 0x4a8, 0x4ae, 0x4b3, 0x4ba, 0x4c2, 0x4c7, 0x4cb, 0x4db, 0x4e2, 0x4e6, 0x4ea, 0x4f1, 0x4f3, 0x4f6, 0x4f9, 0x4fd, 0x506, 0x50a, 0x512, 0x51a, 0x51e, 0x524, 0x52d, 0x539, 0x540, 0x549, 0x553, 0x55a, 0x568, 0x575, 0x582, 0x58b, 0x58f, 0x59f, 0x5a7, 0x5b2, 0x5bb, 0x5c1, 0x5c9, 0x5d2, 0x5dd, 0x5e0, 0x5ec, 0x5f5, 0x5f8, 0x5fd, 0x602, 0x60f, 0x61a, 0x623, 0x62d, 0x630, 0x63a, 0x643, 0x64f, 0x65c, 0x669, 0x677, 0x67e, 0x682, 0x685, 0x68a, 0x68d, 0x692, 0x695, 0x69c, 0x6a3, 0x6a7, 0x6b2, 0x6b5, 0x6b8, 0x6bb, 0x6c1, 0x6c7, 0x6cd, 0x6d0, 0x6d3, 0x6d6, 0x6dd, 0x6e0, 0x6e5, 0x6ef, 0x6f2, 0x6f6, 0x705, 0x711, 0x715, 0x71a, 0x71e, 0x723, 0x727, 0x72c, 0x735, 0x740, 0x746, 0x74c, 0x752, 0x758, 0x761, 0x764, 0x767, 0x76b, 0x76f, 0x773, 0x779, 0x77f, 0x784, 0x787, 0x797, 0x79e, 0x7a1, 0x7a6, 0x7aa, 0x7b0, 0x7b5, 0x7b9, 0x7bf, 0x7c5, 0x7c9, 0x7d2, 0x7d7, 0x7da, 0x7dd, 0x7e1, 0x7e5, 0x7e8, 0x7f8, 0x809, 0x80e, 0x810, 0x812}\n\n// idnaSparseValues: 2069 entries, 8276 bytes\nvar idnaSparseValues = [2069]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe105, lo: 0x80, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0x97},\n\t{value: 0xe105, lo: 0x98, hi: 0x9e},\n\t{value: 0x001f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbf},\n\t// Block 0x1, offset 0x8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0xe01d, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0335, lo: 0x83, hi: 0x83},\n\t{value: 0x034d, lo: 0x84, hi: 0x84},\n\t{value: 0x0365, lo: 0x85, hi: 0x85},\n\t{value: 0xe00d, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0xe00d, lo: 0x88, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x89},\n\t{value: 0xe00d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe00d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0x8d},\n\t{value: 0xe00d, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0xbf},\n\t// Block 0x2, offset 0x19\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0249, lo: 0xb0, hi: 0xb0},\n\t{value: 0x037d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0259, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0269, lo: 0xb3, hi: 0xb3},\n\t{value: 0x034d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0395, lo: 0xb5, hi: 0xb5},\n\t{value: 0xe1bd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0279, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0289, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbf},\n\t// Block 0x3, offset 0x25\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x3308, lo: 0x80, hi: 0xbf},\n\t// Block 0x4, offset 0x27\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x03f5, lo: 0x80, hi: 0x8f},\n\t{value: 0xe105, lo: 0x90, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5, offset 0x2c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x0545, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x0008, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x6, offset 0x33\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0401, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0018, lo: 0x89, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7, offset 0x3e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0818, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x82},\n\t{value: 0x0818, lo: 0x83, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xae},\n\t{value: 0x0808, lo: 0xaf, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x8, offset 0x4a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0c08, lo: 0x88, hi: 0x99},\n\t{value: 0x0a08, lo: 0x9a, hi: 0xbf},\n\t// Block 0x9, offset 0x4e\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0c08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0a08, lo: 0x8e, hi: 0x98},\n\t{value: 0x0c08, lo: 0x99, hi: 0x9b},\n\t{value: 0x0a08, lo: 0x9c, hi: 0xaa},\n\t{value: 0x0c08, lo: 0xab, hi: 0xac},\n\t{value: 0x0a08, lo: 0xad, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0a08, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0c08, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xa, offset 0x5d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xb, offset 0x62\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0808, lo: 0x80, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbf},\n\t// Block 0xc, offset 0x6c\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x99},\n\t{value: 0x0808, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa3},\n\t{value: 0x0808, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa7},\n\t{value: 0x0808, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0818, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd, offset 0x78\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0a08, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0c08, lo: 0xaa, hi: 0xac},\n\t{value: 0x0808, lo: 0xad, hi: 0xad},\n\t{value: 0x0c08, lo: 0xae, hi: 0xae},\n\t{value: 0x0a08, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0a08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0a08, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xe, offset 0x86\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0xa1},\n\t{value: 0x0840, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xbf},\n\t// Block 0xf, offset 0x8b\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x10, offset 0x94\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x85},\n\t{value: 0x3008, lo: 0x86, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8c},\n\t{value: 0x3b08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x11, offset 0xa4\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x12, offset 0xb2\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xba},\n\t{value: 0x3b08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x13, offset 0xbe\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0040, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x14, offset 0xca\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x89},\n\t{value: 0x3b08, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x3008, lo: 0x98, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x15, offset 0xdb\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x08f1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb9},\n\t{value: 0x3b08, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x16, offset 0xe5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0xbf},\n\t// Block 0x17, offset 0xec\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0961, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0999, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0008, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x18, offset 0xf9\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe03d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x19, offset 0x10a\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0x1a, offset 0x111\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1b, offset 0x11c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3008, lo: 0xa2, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbf},\n\t// Block 0x1c, offset 0x12b\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x8c},\n\t{value: 0x3308, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x3008, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x1d, offset 0x139\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x86},\n\t{value: 0x055d, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8c},\n\t{value: 0x055d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe105, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x1e, offset 0x143\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0018, lo: 0x80, hi: 0xbf},\n\t// Block 0x1f, offset 0x145\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa0},\n\t{value: 0x2018, lo: 0xa1, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x20, offset 0x14a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa7},\n\t{value: 0x2018, lo: 0xa8, hi: 0xbf},\n\t// Block 0x21, offset 0x14d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2018, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0xbf},\n\t// Block 0x22, offset 0x150\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0008, lo: 0x80, hi: 0xbf},\n\t// Block 0x23, offset 0x152\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x24, offset 0x15e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x25, offset 0x169\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x26, offset 0x171\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x27, offset 0x177\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x28, offset 0x17d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x29, offset 0x182\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x2a, offset 0x187\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x2b, offset 0x18a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xbf},\n\t// Block 0x2c, offset 0x18e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2d, offset 0x194\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x2e, offset 0x199\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x3b08, lo: 0x94, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x2f, offset 0x1a5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x30, offset 0x1af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xb3},\n\t{value: 0x3340, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x31, offset 0x1b5\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x3008, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x91},\n\t{value: 0x3b08, lo: 0x92, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0x96},\n\t{value: 0x0008, lo: 0x97, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x32, offset 0x1c6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x86},\n\t{value: 0x0218, lo: 0x87, hi: 0x87},\n\t{value: 0x0018, lo: 0x88, hi: 0x8a},\n\t{value: 0x33c0, lo: 0x8b, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0208, lo: 0xa0, hi: 0xbf},\n\t// Block 0x33, offset 0x1d0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0208, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x34, offset 0x1d3\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0208, lo: 0x87, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0208, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x35, offset 0x1db\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x36, offset 0x1de\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x37, offset 0x1eb\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x38, offset 0x1f3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x39, offset 0x1f7\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0028, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xbf},\n\t// Block 0x3a, offset 0x1fe\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x3308, lo: 0x97, hi: 0x98},\n\t{value: 0x3008, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x3b, offset 0x206\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x94},\n\t{value: 0x3008, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xac},\n\t{value: 0x3008, lo: 0xad, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3c, offset 0x216\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbd},\n\t{value: 0x3318, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x222\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0040, lo: 0x80, hi: 0xbf},\n\t// Block 0x3e, offset 0x224\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3008, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x3f, offset 0x22e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x3808, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x40, offset 0x23a\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3808, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xbf},\n\t// Block 0x41, offset 0x246\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3008, lo: 0xaa, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3808, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x42, offset 0x252\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x43, offset 0x25a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x44, offset 0x25f\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0e29, lo: 0x80, hi: 0x80},\n\t{value: 0x0e41, lo: 0x81, hi: 0x81},\n\t{value: 0x0e59, lo: 0x82, hi: 0x82},\n\t{value: 0x0e71, lo: 0x83, hi: 0x83},\n\t{value: 0x0e89, lo: 0x84, hi: 0x85},\n\t{value: 0x0ea1, lo: 0x86, hi: 0x86},\n\t{value: 0x0eb9, lo: 0x87, hi: 0x87},\n\t{value: 0x057d, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x059d, lo: 0x90, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x059d, lo: 0xbd, hi: 0xbf},\n\t// Block 0x45, offset 0x26c\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x92},\n\t{value: 0x0018, lo: 0x93, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0008, lo: 0xa9, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x46, offset 0x27d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0x47, offset 0x281\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x87},\n\t{value: 0xe045, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0xe045, lo: 0x98, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0xe045, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbf},\n\t// Block 0x48, offset 0x28c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x3318, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x49, offset 0x290\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x24c1, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x4a, offset 0x299\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x24f1, lo: 0xac, hi: 0xac},\n\t{value: 0x2529, lo: 0xad, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xae},\n\t{value: 0x2579, lo: 0xaf, hi: 0xaf},\n\t{value: 0x25b1, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x4b, offset 0x2a1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x9f},\n\t{value: 0x0080, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xad},\n\t{value: 0x0080, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x4c, offset 0x2a7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa8},\n\t{value: 0x09dd, lo: 0xa9, hi: 0xa9},\n\t{value: 0x09fd, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xbf},\n\t// Block 0x4d, offset 0x2ac\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0x4e, offset 0x2af\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x28c1, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x4f, offset 0x2b3\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0e7e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x292a, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0e9e, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x50, offset 0x2b9\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x9b},\n\t{value: 0x2941, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0xbf},\n\t// Block 0x51, offset 0x2bd\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x52, offset 0x2c1\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0xbf},\n\t// Block 0x53, offset 0x2c5\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x03f5, lo: 0x90, hi: 0x9f},\n\t{value: 0x0ebd, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x54, offset 0x2cb\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x55, offset 0x2d3\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xae},\n\t{value: 0xe075, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x56, offset 0x2da\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x57, offset 0x2e5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xbf},\n\t// Block 0x58, offset 0x2ef\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x59, offset 0x2f3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0x5a, offset 0x2f6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9e},\n\t{value: 0x0ef5, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x5b, offset 0x2fc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb2},\n\t{value: 0x0f15, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x5c, offset 0x300\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x0f35, lo: 0x80, hi: 0xbf},\n\t// Block 0x5d, offset 0x302\n\t{value: 0x0020, lo: 0x02},\n\t{value: 0x1735, lo: 0x80, hi: 0x8f},\n\t{value: 0x1915, lo: 0x90, hi: 0xbf},\n\t// Block 0x5e, offset 0x305\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x1f15, lo: 0x80, hi: 0xbf},\n\t// Block 0x5f, offset 0x307\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x60, offset 0x30a\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9a},\n\t{value: 0x29e2, lo: 0x9b, hi: 0x9b},\n\t{value: 0x2a0a, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9e},\n\t{value: 0x2a31, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x61, offset 0x314\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x2a69, lo: 0xbf, hi: 0xbf},\n\t// Block 0x62, offset 0x317\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0040, lo: 0x80, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb0},\n\t{value: 0x2a35, lo: 0xb1, hi: 0xb1},\n\t{value: 0x2a55, lo: 0xb2, hi: 0xb2},\n\t{value: 0x2a75, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2a95, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2a75, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2ab5, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2ad5, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2af5, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2b15, lo: 0xba, hi: 0xbb},\n\t{value: 0x2b35, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2b15, lo: 0xbe, hi: 0xbf},\n\t// Block 0x63, offset 0x326\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x64, offset 0x32a\n\t{value: 0x0030, lo: 0x04},\n\t{value: 0x2aa2, lo: 0x80, hi: 0x9d},\n\t{value: 0x305a, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x30a2, lo: 0xa0, hi: 0xbf},\n\t// Block 0x65, offset 0x32f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x66, offset 0x332\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x67, offset 0x336\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x68, offset 0x33b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x69, offset 0x340\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0018, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6a, offset 0x346\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0040, lo: 0x80, hi: 0x81},\n\t{value: 0xe00d, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x83},\n\t{value: 0x03f5, lo: 0x84, hi: 0x84},\n\t{value: 0x1329, lo: 0x85, hi: 0x85},\n\t{value: 0x447d, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2009, lo: 0xb8, hi: 0xb8},\n\t{value: 0x6e89, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xbf},\n\t// Block 0x6b, offset 0x352\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x3308, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0008, lo: 0x8c, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x6c, offset 0x361\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0208, lo: 0x80, hi: 0xb1},\n\t{value: 0x0108, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6d, offset 0x367\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xbf},\n\t// Block 0x6e, offset 0x36b\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x6f, offset 0x37a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x70, offset 0x37f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x91},\n\t{value: 0x3008, lo: 0x92, hi: 0x92},\n\t{value: 0x3808, lo: 0x93, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x71, offset 0x387\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb9},\n\t{value: 0x3008, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x72, offset 0x391\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x73, offset 0x39c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x74, offset 0x3a4\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8c},\n\t{value: 0x3008, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x75, offset 0x3b5\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x76, offset 0x3be\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x9a},\n\t{value: 0x0008, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3b08, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x77, offset 0x3ce\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x90},\n\t{value: 0x0008, lo: 0x91, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x78, offset 0x3db\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x449d, lo: 0x9c, hi: 0x9c},\n\t{value: 0x44b5, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2971, lo: 0x9e, hi: 0x9e},\n\t{value: 0xe06d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x44cd, lo: 0xb0, hi: 0xbf},\n\t// Block 0x79, offset 0x3e5\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x44ed, lo: 0x80, hi: 0x8f},\n\t{value: 0x450d, lo: 0x90, hi: 0x9f},\n\t{value: 0x452d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x450d, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7a, offset 0x3ea\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3b08, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x7b, offset 0x3f7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7c, offset 0x3fb\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x7d, offset 0x400\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x454d, lo: 0x80, hi: 0xbf},\n\t// Block 0x7e, offset 0x402\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x4d4d, lo: 0x80, hi: 0x94},\n\t{value: 0x4b0d, lo: 0x95, hi: 0x95},\n\t{value: 0x4fed, lo: 0x96, hi: 0xbf},\n\t// Block 0x7f, offset 0x406\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x552d, lo: 0x80, hi: 0xbf},\n\t// Block 0x80, offset 0x408\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x5d2d, lo: 0x80, hi: 0x84},\n\t{value: 0x568d, lo: 0x85, hi: 0x85},\n\t{value: 0x5dcd, lo: 0x86, hi: 0xbf},\n\t// Block 0x81, offset 0x40c\n\t{value: 0x0020, lo: 0x08},\n\t{value: 0x6b8d, lo: 0x80, hi: 0x8f},\n\t{value: 0x6d4d, lo: 0x90, hi: 0x90},\n\t{value: 0x6d8d, lo: 0x91, hi: 0xab},\n\t{value: 0x6ea1, lo: 0xac, hi: 0xac},\n\t{value: 0x70ed, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x710d, lo: 0xb0, hi: 0xbf},\n\t// Block 0x82, offset 0x415\n\t{value: 0x0020, lo: 0x05},\n\t{value: 0x730d, lo: 0x80, hi: 0xad},\n\t{value: 0x656d, lo: 0xae, hi: 0xae},\n\t{value: 0x78cd, lo: 0xaf, hi: 0xb5},\n\t{value: 0x6f8d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x79ad, lo: 0xb7, hi: 0xbf},\n\t// Block 0x83, offset 0x41b\n\t{value: 0x0028, lo: 0x03},\n\t{value: 0x7c21, lo: 0x80, hi: 0x82},\n\t{value: 0x7be1, lo: 0x83, hi: 0x83},\n\t{value: 0x7c99, lo: 0x84, hi: 0xbf},\n\t// Block 0x84, offset 0x41f\n\t{value: 0x0038, lo: 0x0f},\n\t{value: 0x9db1, lo: 0x80, hi: 0x83},\n\t{value: 0x9e59, lo: 0x84, hi: 0x85},\n\t{value: 0x9e91, lo: 0x86, hi: 0x87},\n\t{value: 0x9ec9, lo: 0x88, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0xa089, lo: 0x92, hi: 0x97},\n\t{value: 0xa1a1, lo: 0x98, hi: 0x9c},\n\t{value: 0xa281, lo: 0x9d, hi: 0xb3},\n\t{value: 0x9d41, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9db1, lo: 0xb5, hi: 0xb5},\n\t{value: 0xa789, lo: 0xb6, hi: 0xbb},\n\t{value: 0xa869, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa7f9, lo: 0xbd, hi: 0xbd},\n\t{value: 0xa8d9, lo: 0xbe, hi: 0xbf},\n\t// Block 0x85, offset 0x42f\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0008, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x86, offset 0x439\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x87, offset 0x43e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x88, offset 0x441\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x89, offset 0x447\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x8a, offset 0x44e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x8b, offset 0x453\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8c, offset 0x457\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x8d, offset 0x45d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xbf},\n\t// Block 0x8e, offset 0x462\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x8f, offset 0x46b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x90, offset 0x470\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x91, offset 0x476\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x97},\n\t{value: 0x8b0d, lo: 0x98, hi: 0x9f},\n\t{value: 0x8b25, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xbf},\n\t// Block 0x92, offset 0x47d\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x8b25, lo: 0xb0, hi: 0xb7},\n\t{value: 0x8b0d, lo: 0xb8, hi: 0xbf},\n\t// Block 0x93, offset 0x484\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x94, offset 0x48b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x95, offset 0x48f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xae},\n\t{value: 0x0018, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x96, offset 0x494\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x97, offset 0x497\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xbf},\n\t// Block 0x98, offset 0x49c\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0808, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0808, lo: 0x8a, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0808, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0808, lo: 0xbf, hi: 0xbf},\n\t// Block 0x99, offset 0x4a8\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0818, lo: 0x97, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0818, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9a, offset 0x4ae\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa6},\n\t{value: 0x0818, lo: 0xa7, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x9b, offset 0x4b3\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x0818, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9c, offset 0x4ba\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0818, lo: 0x96, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0818, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9d, offset 0x4c2\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbb},\n\t{value: 0x0818, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0808, lo: 0xbe, hi: 0xbf},\n\t// Block 0x9e, offset 0x4c7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0818, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x0818, lo: 0x92, hi: 0xbf},\n\t// Block 0x9f, offset 0x4cb\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x94},\n\t{value: 0x0808, lo: 0x95, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x98},\n\t{value: 0x0808, lo: 0x99, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa0, offset 0x4db\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0818, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0818, lo: 0x90, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0818, lo: 0xbd, hi: 0xbf},\n\t// Block 0xa1, offset 0x4e2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xa2, offset 0x4e6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xbf},\n\t// Block 0xa3, offset 0x4ea\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0818, lo: 0x98, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb7},\n\t{value: 0x0818, lo: 0xb8, hi: 0xbf},\n\t// Block 0xa4, offset 0x4f1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0808, lo: 0x80, hi: 0xbf},\n\t// Block 0xa5, offset 0x4f3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0808, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xa6, offset 0x4f6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x03dd, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xa7, offset 0x4f9\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xbf},\n\t// Block 0xa8, offset 0x4fd\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0908, lo: 0x80, hi: 0x80},\n\t{value: 0x0a08, lo: 0x81, hi: 0xa1},\n\t{value: 0x0c08, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0a08, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3308, lo: 0xa4, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xa9, offset 0x506\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0818, lo: 0xa0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xaa, offset 0x50a\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0xa6},\n\t{value: 0x0808, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0a08, lo: 0xb0, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0a08, lo: 0xb4, hi: 0xbf},\n\t// Block 0xab, offset 0x512\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0a08, lo: 0x80, hi: 0x84},\n\t{value: 0x0808, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x90},\n\t{value: 0x0a18, lo: 0x91, hi: 0x93},\n\t{value: 0x0c18, lo: 0x94, hi: 0x94},\n\t{value: 0x0818, lo: 0x95, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xac, offset 0x51a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xad, offset 0x51e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xae, offset 0x524\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x91},\n\t{value: 0x0018, lo: 0x92, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xaf, offset 0x52d\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0xb0, offset 0x539\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb1, offset 0x540\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb2},\n\t{value: 0x3b08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xbf},\n\t// Block 0xb2, offset 0x549\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb3, offset 0x553\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb4, offset 0x55a\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xb5, offset 0x568\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3808, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb6, offset 0x575\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xb7, offset 0x582\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x3308, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa9},\n\t{value: 0x3b08, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb8, offset 0x58b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xb9, offset 0x58f\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xba, offset 0x59f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbb, offset 0x5a7\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x85},\n\t{value: 0x0018, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xbc, offset 0x5b2\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbd, offset 0x5bb\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9b},\n\t{value: 0x3308, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xbe, offset 0x5c1\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbf, offset 0x5c9\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xc0, offset 0x5d2\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb5},\n\t{value: 0x3808, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xc1, offset 0x5dd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xc2, offset 0x5e0\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0xc3, offset 0x5ec\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xc4, offset 0x5f5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xbf},\n\t// Block 0xc5, offset 0x5f8\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc6, offset 0x5fd\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xbf},\n\t// Block 0xc7, offset 0x602\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x99},\n\t{value: 0x3308, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3008, lo: 0x9c, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x0018, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xbf},\n\t// Block 0xc8, offset 0x60f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc9, offset 0x61a\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x3b08, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0xbf},\n\t// Block 0xca, offset 0x623\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x98},\n\t{value: 0x3b08, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xbf},\n\t// Block 0xcb, offset 0x62d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xcc, offset 0x630\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xcd, offset 0x63a\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xbf},\n\t// Block 0xce, offset 0x643\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xa9},\n\t{value: 0x3308, lo: 0xaa, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xcf, offset 0x64f\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd0, offset 0x65c\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xbf},\n\t// Block 0xd1, offset 0x669\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x3008, lo: 0x93, hi: 0x94},\n\t{value: 0x3308, lo: 0x95, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x96},\n\t{value: 0x3b08, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xbf},\n\t// Block 0xd2, offset 0x677\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xd3, offset 0x67e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd4, offset 0x682\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xd5, offset 0x685\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xd6, offset 0x68a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xd7, offset 0x68d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0340, lo: 0xb0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xd8, offset 0x692\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xbf},\n\t// Block 0xd9, offset 0x695\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xda, offset 0x69c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xdb, offset 0x6a3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0xdc, offset 0x6a7\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0xdd, offset 0x6b2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xde, offset 0x6b5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0xe105, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0xdf, offset 0x6b8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0xe0, offset 0x6bb\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0xbf},\n\t// Block 0xe1, offset 0x6c1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xe2, offset 0x6c7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x0018, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xe3, offset 0x6cd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0xe4, offset 0x6d0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xe5, offset 0x6d3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xe6, offset 0x6d6\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0xa3},\n\t{value: 0x0008, lo: 0xa4, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe7, offset 0x6dd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xe8, offset 0x6e0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0xe9, offset 0x6e5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x03c0, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xea, offset 0x6ef\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xeb, offset 0x6f2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xbf},\n\t// Block 0xec, offset 0x6f6\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0xb5b9, lo: 0x9e, hi: 0x9e},\n\t{value: 0xb601, lo: 0x9f, hi: 0x9f},\n\t{value: 0xb649, lo: 0xa0, hi: 0xa0},\n\t{value: 0xb6b1, lo: 0xa1, hi: 0xa1},\n\t{value: 0xb719, lo: 0xa2, hi: 0xa2},\n\t{value: 0xb781, lo: 0xa3, hi: 0xa3},\n\t{value: 0xb7e9, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3018, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3318, lo: 0xa7, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xac},\n\t{value: 0x3018, lo: 0xad, hi: 0xb2},\n\t{value: 0x0340, lo: 0xb3, hi: 0xba},\n\t{value: 0x3318, lo: 0xbb, hi: 0xbf},\n\t// Block 0xed, offset 0x705\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3318, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x84},\n\t{value: 0x3318, lo: 0x85, hi: 0x8b},\n\t{value: 0x0018, lo: 0x8c, hi: 0xa9},\n\t{value: 0x3318, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xba},\n\t{value: 0xb851, lo: 0xbb, hi: 0xbb},\n\t{value: 0xb899, lo: 0xbc, hi: 0xbc},\n\t{value: 0xb8e1, lo: 0xbd, hi: 0xbd},\n\t{value: 0xb949, lo: 0xbe, hi: 0xbe},\n\t{value: 0xb9b1, lo: 0xbf, hi: 0xbf},\n\t// Block 0xee, offset 0x711\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xba19, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xbf},\n\t// Block 0xef, offset 0x715\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3318, lo: 0x82, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0xbf},\n\t// Block 0xf0, offset 0x71a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0xf1, offset 0x71e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xf2, offset 0x723\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0xf3, offset 0x727\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0xf4, offset 0x72c\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3308, lo: 0xa1, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xf5, offset 0x735\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0xf6, offset 0x740\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xf7, offset 0x746\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xf8, offset 0x74c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xf9, offset 0x752\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x86},\n\t{value: 0x0818, lo: 0x87, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0xfa, offset 0x758\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0a08, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x8a},\n\t{value: 0x0b08, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xfb, offset 0x761\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xb0},\n\t{value: 0x0818, lo: 0xb1, hi: 0xbf},\n\t// Block 0xfc, offset 0x764\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0818, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xfd, offset 0x767\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0818, lo: 0x81, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xfe, offset 0x76b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xff, offset 0x76f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x100, offset 0x773\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x101, offset 0x779\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x102, offset 0x77f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0xc1d9, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0x103, offset 0x784\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xbf},\n\t// Block 0x104, offset 0x787\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xc801, lo: 0x80, hi: 0x80},\n\t{value: 0xc851, lo: 0x81, hi: 0x81},\n\t{value: 0xc8a1, lo: 0x82, hi: 0x82},\n\t{value: 0xc8f1, lo: 0x83, hi: 0x83},\n\t{value: 0xc941, lo: 0x84, hi: 0x84},\n\t{value: 0xc991, lo: 0x85, hi: 0x85},\n\t{value: 0xc9e1, lo: 0x86, hi: 0x86},\n\t{value: 0xca31, lo: 0x87, hi: 0x87},\n\t{value: 0xca81, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0xcad1, lo: 0x90, hi: 0x90},\n\t{value: 0xcaf1, lo: 0x91, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xbf},\n\t// Block 0x105, offset 0x797\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x106, offset 0x79e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x107, offset 0x7a1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x108, offset 0x7a6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x109, offset 0x7aa\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x10a, offset 0x7b0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0x10b, offset 0x7b5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x10c, offset 0x7b9\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0018, lo: 0xb3, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0x10d, offset 0x7bf\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xa4},\n\t{value: 0x0018, lo: 0xa5, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xbf},\n\t// Block 0x10e, offset 0x7c5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x10f, offset 0x7c9\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x110, offset 0x7d2\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x111, offset 0x7d7\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0x112, offset 0x7da\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x113, offset 0x7dd\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x114, offset 0x7e1\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x115, offset 0x7e5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x116, offset 0x7e8\n\t{value: 0x0020, lo: 0x0f},\n\t{value: 0xded1, lo: 0x80, hi: 0x89},\n\t{value: 0x8e35, lo: 0x8a, hi: 0x8a},\n\t{value: 0xe011, lo: 0x8b, hi: 0x9c},\n\t{value: 0x8e55, lo: 0x9d, hi: 0x9d},\n\t{value: 0xe251, lo: 0x9e, hi: 0xa2},\n\t{value: 0x8e75, lo: 0xa3, hi: 0xa3},\n\t{value: 0xe2f1, lo: 0xa4, hi: 0xab},\n\t{value: 0x7f0d, lo: 0xac, hi: 0xac},\n\t{value: 0xe3f1, lo: 0xad, hi: 0xaf},\n\t{value: 0x8e95, lo: 0xb0, hi: 0xb0},\n\t{value: 0xe451, lo: 0xb1, hi: 0xb6},\n\t{value: 0x8eb5, lo: 0xb7, hi: 0xb9},\n\t{value: 0xe511, lo: 0xba, hi: 0xba},\n\t{value: 0x8f15, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe531, lo: 0xbc, hi: 0xbf},\n\t// Block 0x117, offset 0x7f8\n\t{value: 0x0020, lo: 0x10},\n\t{value: 0x93b5, lo: 0x80, hi: 0x80},\n\t{value: 0xf0b1, lo: 0x81, hi: 0x86},\n\t{value: 0x93d5, lo: 0x87, hi: 0x8a},\n\t{value: 0xda11, lo: 0x8b, hi: 0x8b},\n\t{value: 0xf171, lo: 0x8c, hi: 0x96},\n\t{value: 0x9455, lo: 0x97, hi: 0x97},\n\t{value: 0xf2d1, lo: 0x98, hi: 0xa3},\n\t{value: 0x9475, lo: 0xa4, hi: 0xa6},\n\t{value: 0xf451, lo: 0xa7, hi: 0xaa},\n\t{value: 0x94d5, lo: 0xab, hi: 0xab},\n\t{value: 0xf4d1, lo: 0xac, hi: 0xac},\n\t{value: 0x94f5, lo: 0xad, hi: 0xad},\n\t{value: 0xf4f1, lo: 0xae, hi: 0xaf},\n\t{value: 0x9515, lo: 0xb0, hi: 0xb1},\n\t{value: 0xf531, lo: 0xb2, hi: 0xbe},\n\t{value: 0x2040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x118, offset 0x809\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0340, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x9f},\n\t{value: 0x0340, lo: 0xa0, hi: 0xbf},\n\t// Block 0x119, offset 0x80e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0340, lo: 0x80, hi: 0xbf},\n\t// Block 0x11a, offset 0x810\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x33c0, lo: 0x80, hi: 0xbf},\n\t// Block 0x11b, offset 0x812\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x33c0, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n}\n\n// Total table size 42780 bytes (41KiB); checksum: 29936AB9\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/tables13.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.16 && !go1.21\n\npackage idna\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"13.0.0\"\n\nvar mappings string = \"\" + // Size: 6539 bytes\n\t\"  ̈a ̄23 ́ ̧1o1⁄41⁄23⁄4i̇l·ʼnsdžⱥⱦhjrwy ̆ ̇ ̊ ̨ ̃ ̋lẍ́ ι; ̈́եւاٴوٴۇٴيٴक\" +\n\t\"़ख़ग़ज़ड़ढ़फ़य़ড়ঢ়য়ਲ਼ਸ਼ਖ਼ਗ਼ਜ਼ਫ਼ଡ଼ଢ଼ําໍາຫນຫມགྷཌྷདྷབྷཛྷཀྵཱཱིུྲྀྲཱྀླྀླཱ\" +\n\t\"ཱྀྀྒྷྜྷྡྷྦྷྫྷྐྵвдостъѣæbdeǝgikmnȣptuɐɑəɛɜŋɔɯvβγδφχρнɒcɕðfɟɡɥɨɩɪʝɭʟɱɰɲɳ\" +\n\t\"ɴɵɸʂʃƫʉʊʋʌzʐʑʒθssάέήίόύώἀιἁιἂιἃιἄιἅιἆιἇιἠιἡιἢιἣιἤιἥιἦιἧιὠιὡιὢιὣιὤιὥιὦιὧ\" +\n\t\"ιὰιαιάιᾶιι ̈͂ὴιηιήιῆι ̓̀ ̓́ ̓͂ΐ ̔̀ ̔́ ̔͂ΰ ̈̀`ὼιωιώιῶι′′′′′‵‵‵‵‵!!???!!?\" +\n\t\"′′′′0456789+=()rsħnoqsmtmωåאבגדπ1⁄71⁄91⁄101⁄32⁄31⁄52⁄53⁄54⁄51⁄65⁄61⁄83\" +\n\t\"⁄85⁄87⁄81⁄iiivviviiiixxi0⁄3∫∫∫∫∫∮∮∮∮∮1011121314151617181920(10)(11)(12\" +\n\t\")(13)(14)(15)(16)(17)(18)(19)(20)∫∫∫∫==⫝̸ɫɽȿɀ. ゙ ゚よりコト(ᄀ)(ᄂ)(ᄃ)(ᄅ)(ᄆ)(ᄇ)\" +\n\t\"(ᄉ)(ᄋ)(ᄌ)(ᄎ)(ᄏ)(ᄐ)(ᄑ)(ᄒ)(가)(나)(다)(라)(마)(바)(사)(아)(자)(차)(카)(타)(파)(하)(주)(오전\" +\n\t\")(오후)(一)(二)(三)(四)(五)(六)(七)(八)(九)(十)(月)(火)(水)(木)(金)(土)(日)(株)(有)(社)(名)(特)(\" +\n\t\"財)(祝)(労)(代)(呼)(学)(監)(企)(資)(協)(祭)(休)(自)(至)21222324252627282930313233343\" +\n\t\"5참고주의3637383940414243444546474849501月2月3月4月5月6月7月8月9月10月11月12月hgev令和アパート\" +\n\t\"アルファアンペアアールイニングインチウォンエスクードエーカーオンスオームカイリカラットカロリーガロンガンマギガギニーキュリーギルダーキロキロ\" +\n\t\"グラムキロメートルキロワットグラムグラムトンクルゼイロクローネケースコルナコーポサイクルサンチームシリングセンチセントダースデシドルトンナノ\" +\n\t\"ノットハイツパーセントパーツバーレルピアストルピクルピコビルファラッドフィートブッシェルフランヘクタールペソペニヒヘルツペンスページベータポ\" +\n\t\"イントボルトホンポンドホールホーンマイクロマイルマッハマルクマンションミクロンミリミリバールメガメガトンメートルヤードヤールユアンリットルリ\" +\n\t\"ラルピールーブルレムレントゲンワット0点1点2点3点4点5点6点7点8点9点10点11点12点13点14点15点16点17点18点19点20\" +\n\t\"点21点22点23点24点daauovpcdmiu平成昭和大正明治株式会社panamakakbmbgbkcalpfnfmgkghzmldlk\" +\n\t\"lfmnmmmcmkmm2m3m∕sm∕s2rad∕srad∕s2psnsmspvnvmvkvpwnwmwkwbqcccdc∕kgdbgyhah\" +\n\t\"pinkkktlmlnlxphprsrsvwbv∕ma∕m1日2日3日4日5日6日7日8日9日10日11日12日13日14日15日16日17日1\" +\n\t\"8日19日20日21日22日23日24日25日26日27日28日29日30日31日ьɦɬʞʇœʍ𤋮𢡊𢡄𣏕𥉉𥳐𧻓fffiflstմնմեմիվնմ\" +\n\t\"խיִײַעהכלםרתשׁשׂשּׁשּׂאַאָאּבּגּדּהּוּזּטּיּךּכּלּמּנּסּףּפּצּקּרּשּתּו\" +\n\t\"ֹבֿכֿפֿאלٱٻپڀٺٿٹڤڦڄڃچڇڍڌڎڈژڑکگڳڱںڻۀہھےۓڭۇۆۈۋۅۉېىئائەئوئۇئۆئۈئېئىیئجئحئم\" +\n\t\"ئيبجبحبخبمبىبيتجتحتختمتىتيثجثمثىثيجحجمحجحمخجخحخمسجسحسخسمصحصمضجضحضخضمطحط\" +\n\t\"مظمعجعمغجغمفجفحفخفمفىفيقحقمقىقيكاكجكحكخكلكمكىكيلجلحلخلملىليمجمحمخمممىمي\" +\n\t\"نجنحنخنمنىنيهجهمهىهييجيحيخيميىييذٰرٰىٰ ٌّ ٍّ َّ ُّ ِّ ّٰئرئزئنبربزبنترت\" +\n\t\"زتنثرثزثنمانرنزننيريزينئخئهبهتهصخلهنههٰيهثهسهشمشهـَّـُّـِّطىطيعىعيغىغيس\" +\n\t\"ىسيشىشيحىحيجىجيخىخيصىصيضىضيشجشحشخشرسرصرضراًتجمتحجتحمتخمتمجتمحتمخجمححميح\" +\n\t\"مىسحجسجحسجىسمحسمجسممصححصممشحمشجيشمخشممضحىضخمطمحطممطميعجمعممعمىغممغميغمى\" +\n\t\"فخمقمحقمملحملحيلحىلججلخملمحمحجمحممحيمجحمجممخجمخممجخهمجهممنحمنحىنجمنجىنم\" +\n\t\"ينمىيممبخيتجيتجىتخيتخىتميتمىجميجحىجمىسخىصحيشحيضحيلجيلمييحييجييميمميقمين\" +\n\t\"حيعميكمينجحمخيلجمكممجحيحجيمجيفميبحيسخينجيصلےقلےاللهاكبرمحمدصلعمرسولعليه\" +\n\t\"وسلمصلىصلى الله عليه وسلمجل جلالهریال,:!?_{}[]#&*-<>\\\\$%@ـًـَـُـِـّـْءآ\" +\n\t\"أؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهويلآلألإلا\\x22'/^|~¢£¬¦¥𝅗𝅥𝅘𝅥𝅘𝅥𝅮𝅘𝅥𝅯𝅘𝅥𝅰𝅘𝅥𝅱\" +\n\t\"𝅘𝅥𝅲𝆹𝅥𝆺𝅥𝆹𝅥𝅮𝆺𝅥𝅮𝆹𝅥𝅯𝆺𝅥𝅯ıȷαεζηκλμνξοστυψ∇∂ϝٮڡٯ0,1,2,3,4,5,6,7,8,9,(a)(b)(c\" +\n\t\")(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)(w)(x)(y)(z)〔s\" +\n\t\"〕wzhvsdppvwcmcmdmrdjほかココサ手字双デ二多解天交映無料前後再新初終生販声吹演投捕一三遊左中右指走打禁空合満有月申割営配〔\" +\n\t\"本〕〔三〕〔二〕〔安〕〔点〕〔打〕〔盗〕〔勝〕〔敗〕得可丽丸乁你侮侻倂偺備僧像㒞免兔兤具㒹內冗冤仌冬况凵刃㓟刻剆剷㔕勇勉勤勺包匆北卉卑博即卽\" +\n\t\"卿灰及叟叫叱吆咞吸呈周咢哶唐啓啣善喙喫喳嗂圖嘆圗噑噴切壮城埴堍型堲報墬売壷夆夢奢姬娛娧姘婦㛮嬈嬾寃寘寧寳寿将尢㞁屠屮峀岍嵃嵮嵫嵼巡巢㠯巽帨帽\" +\n\t\"幩㡢㡼庰庳庶廊廾舁弢㣇形彫㣣徚忍志忹悁㤺㤜悔惇慈慌慎慺憎憲憤憯懞懲懶成戛扝抱拔捐挽拼捨掃揤搢揅掩㨮摩摾撝摷㩬敏敬旣書晉㬙暑㬈㫤冒冕最暜肭䏙朗\" +\n\t\"望朡杞杓㭉柺枅桒梅梎栟椔㮝楂榣槪檨櫛㰘次歔㱎歲殟殺殻汎沿泍汧洖派海流浩浸涅洴港湮㴳滋滇淹潮濆瀹瀞瀛㶖灊災灷炭煅熜爨爵牐犀犕獺王㺬玥㺸瑇瑜瑱璅\" +\n\t\"瓊㼛甤甾異瘐㿼䀈直眞真睊䀹瞋䁆䂖硎碌磌䃣祖福秫䄯穀穊穏䈂篆築䈧糒䊠糨糣紀絣䌁緇縂繅䌴䍙罺羕翺者聠聰䏕育脃䐋脾媵舄辞䑫芑芋芝劳花芳芽苦若茝荣莭\" +\n\t\"茣莽菧著荓菊菌菜䔫蓱蓳蔖蕤䕝䕡䕫虐虜虧虩蚩蚈蜎蛢蝹蜨蝫螆蟡蠁䗹衠衣裗裞䘵裺㒻䚾䛇誠諭變豕貫賁贛起跋趼跰軔輸邔郱鄑鄛鈸鋗鋘鉼鏹鐕開䦕閷䧦雃嶲霣\" +\n\t\"䩮䩶韠䪲頋頩飢䬳餩馧駂駾䯎鬒鱀鳽䳎䳭鵧䳸麻䵖黹黾鼅鼏鼖鼻\"\n\nvar mappingIndex = []uint16{ // 1650 elements\n\t// Entry 0 - 3F\n\t0x0000, 0x0000, 0x0001, 0x0004, 0x0005, 0x0008, 0x0009, 0x000a,\n\t0x000d, 0x0010, 0x0011, 0x0012, 0x0017, 0x001c, 0x0021, 0x0024,\n\t0x0027, 0x002a, 0x002b, 0x002e, 0x0031, 0x0034, 0x0035, 0x0036,\n\t0x0037, 0x0038, 0x0039, 0x003c, 0x003f, 0x0042, 0x0045, 0x0048,\n\t0x004b, 0x004c, 0x004d, 0x0051, 0x0054, 0x0055, 0x005a, 0x005e,\n\t0x0062, 0x0066, 0x006a, 0x006e, 0x0074, 0x007a, 0x0080, 0x0086,\n\t0x008c, 0x0092, 0x0098, 0x009e, 0x00a4, 0x00aa, 0x00b0, 0x00b6,\n\t0x00bc, 0x00c2, 0x00c8, 0x00ce, 0x00d4, 0x00da, 0x00e0, 0x00e6,\n\t// Entry 40 - 7F\n\t0x00ec, 0x00f2, 0x00f8, 0x00fe, 0x0104, 0x010a, 0x0110, 0x0116,\n\t0x011c, 0x0122, 0x0128, 0x012e, 0x0137, 0x013d, 0x0146, 0x014c,\n\t0x0152, 0x0158, 0x015e, 0x0164, 0x016a, 0x0170, 0x0172, 0x0174,\n\t0x0176, 0x0178, 0x017a, 0x017c, 0x017e, 0x0180, 0x0181, 0x0182,\n\t0x0183, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189, 0x018a, 0x018c,\n\t0x018d, 0x018e, 0x018f, 0x0191, 0x0193, 0x0195, 0x0197, 0x0199,\n\t0x019b, 0x019d, 0x019f, 0x01a0, 0x01a2, 0x01a4, 0x01a6, 0x01a8,\n\t0x01aa, 0x01ac, 0x01ae, 0x01b0, 0x01b1, 0x01b3, 0x01b5, 0x01b6,\n\t// Entry 80 - BF\n\t0x01b8, 0x01ba, 0x01bc, 0x01be, 0x01c0, 0x01c2, 0x01c4, 0x01c6,\n\t0x01c8, 0x01ca, 0x01cc, 0x01ce, 0x01d0, 0x01d2, 0x01d4, 0x01d6,\n\t0x01d8, 0x01da, 0x01dc, 0x01de, 0x01e0, 0x01e2, 0x01e4, 0x01e5,\n\t0x01e7, 0x01e9, 0x01eb, 0x01ed, 0x01ef, 0x01f1, 0x01f3, 0x01f5,\n\t0x01f7, 0x01f9, 0x01fb, 0x01fd, 0x0202, 0x0207, 0x020c, 0x0211,\n\t0x0216, 0x021b, 0x0220, 0x0225, 0x022a, 0x022f, 0x0234, 0x0239,\n\t0x023e, 0x0243, 0x0248, 0x024d, 0x0252, 0x0257, 0x025c, 0x0261,\n\t0x0266, 0x026b, 0x0270, 0x0275, 0x027a, 0x027e, 0x0282, 0x0287,\n\t// Entry C0 - FF\n\t0x0289, 0x028e, 0x0293, 0x0297, 0x029b, 0x02a0, 0x02a5, 0x02aa,\n\t0x02af, 0x02b1, 0x02b6, 0x02bb, 0x02c0, 0x02c2, 0x02c7, 0x02c8,\n\t0x02cd, 0x02d1, 0x02d5, 0x02da, 0x02e0, 0x02e9, 0x02ef, 0x02f8,\n\t0x02fa, 0x02fc, 0x02fe, 0x0300, 0x030c, 0x030d, 0x030e, 0x030f,\n\t0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317,\n\t0x0319, 0x031b, 0x031d, 0x031e, 0x0320, 0x0322, 0x0324, 0x0326,\n\t0x0328, 0x032a, 0x032c, 0x032e, 0x0330, 0x0335, 0x033a, 0x0340,\n\t0x0345, 0x034a, 0x034f, 0x0354, 0x0359, 0x035e, 0x0363, 0x0368,\n\t// Entry 100 - 13F\n\t0x036d, 0x0372, 0x0377, 0x037c, 0x0380, 0x0382, 0x0384, 0x0386,\n\t0x038a, 0x038c, 0x038e, 0x0393, 0x0399, 0x03a2, 0x03a8, 0x03b1,\n\t0x03b3, 0x03b5, 0x03b7, 0x03b9, 0x03bb, 0x03bd, 0x03bf, 0x03c1,\n\t0x03c3, 0x03c5, 0x03c7, 0x03cb, 0x03cf, 0x03d3, 0x03d7, 0x03db,\n\t0x03df, 0x03e3, 0x03e7, 0x03eb, 0x03ef, 0x03f3, 0x03ff, 0x0401,\n\t0x0406, 0x0408, 0x040a, 0x040c, 0x040e, 0x040f, 0x0413, 0x0417,\n\t0x041d, 0x0423, 0x0428, 0x042d, 0x0432, 0x0437, 0x043c, 0x0441,\n\t0x0446, 0x044b, 0x0450, 0x0455, 0x045a, 0x045f, 0x0464, 0x0469,\n\t// Entry 140 - 17F\n\t0x046e, 0x0473, 0x0478, 0x047d, 0x0482, 0x0487, 0x048c, 0x0491,\n\t0x0496, 0x049b, 0x04a0, 0x04a5, 0x04aa, 0x04af, 0x04b4, 0x04bc,\n\t0x04c4, 0x04c9, 0x04ce, 0x04d3, 0x04d8, 0x04dd, 0x04e2, 0x04e7,\n\t0x04ec, 0x04f1, 0x04f6, 0x04fb, 0x0500, 0x0505, 0x050a, 0x050f,\n\t0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537,\n\t0x053c, 0x0541, 0x0546, 0x054b, 0x0550, 0x0555, 0x055a, 0x055f,\n\t0x0564, 0x0569, 0x056e, 0x0573, 0x0578, 0x057a, 0x057c, 0x057e,\n\t0x0580, 0x0582, 0x0584, 0x0586, 0x0588, 0x058a, 0x058c, 0x058e,\n\t// Entry 180 - 1BF\n\t0x0590, 0x0592, 0x0594, 0x0596, 0x059c, 0x05a2, 0x05a4, 0x05a6,\n\t0x05a8, 0x05aa, 0x05ac, 0x05ae, 0x05b0, 0x05b2, 0x05b4, 0x05b6,\n\t0x05b8, 0x05ba, 0x05bc, 0x05be, 0x05c0, 0x05c4, 0x05c8, 0x05cc,\n\t0x05d0, 0x05d4, 0x05d8, 0x05dc, 0x05e0, 0x05e4, 0x05e9, 0x05ee,\n\t0x05f3, 0x05f5, 0x05f7, 0x05fd, 0x0609, 0x0615, 0x0621, 0x062a,\n\t0x0636, 0x063f, 0x0648, 0x0657, 0x0663, 0x066c, 0x0675, 0x067e,\n\t0x068a, 0x0696, 0x069f, 0x06a8, 0x06ae, 0x06b7, 0x06c3, 0x06cf,\n\t0x06d5, 0x06e4, 0x06f6, 0x0705, 0x070e, 0x071d, 0x072c, 0x0738,\n\t// Entry 1C0 - 1FF\n\t0x0741, 0x074a, 0x0753, 0x075f, 0x076e, 0x077a, 0x0783, 0x078c,\n\t0x0795, 0x079b, 0x07a1, 0x07a7, 0x07ad, 0x07b6, 0x07bf, 0x07ce,\n\t0x07d7, 0x07e3, 0x07f2, 0x07fb, 0x0801, 0x0807, 0x0816, 0x0822,\n\t0x0831, 0x083a, 0x0849, 0x084f, 0x0858, 0x0861, 0x086a, 0x0873,\n\t0x087c, 0x0888, 0x0891, 0x0897, 0x08a0, 0x08a9, 0x08b2, 0x08be,\n\t0x08c7, 0x08d0, 0x08d9, 0x08e8, 0x08f4, 0x08fa, 0x0909, 0x090f,\n\t0x091b, 0x0927, 0x0930, 0x0939, 0x0942, 0x094e, 0x0954, 0x095d,\n\t0x0969, 0x096f, 0x097e, 0x0987, 0x098b, 0x098f, 0x0993, 0x0997,\n\t// Entry 200 - 23F\n\t0x099b, 0x099f, 0x09a3, 0x09a7, 0x09ab, 0x09af, 0x09b4, 0x09b9,\n\t0x09be, 0x09c3, 0x09c8, 0x09cd, 0x09d2, 0x09d7, 0x09dc, 0x09e1,\n\t0x09e6, 0x09eb, 0x09f0, 0x09f5, 0x09fa, 0x09fc, 0x09fe, 0x0a00,\n\t0x0a02, 0x0a04, 0x0a06, 0x0a0c, 0x0a12, 0x0a18, 0x0a1e, 0x0a2a,\n\t0x0a2c, 0x0a2e, 0x0a30, 0x0a32, 0x0a34, 0x0a36, 0x0a38, 0x0a3c,\n\t0x0a3e, 0x0a40, 0x0a42, 0x0a44, 0x0a46, 0x0a48, 0x0a4a, 0x0a4c,\n\t0x0a4e, 0x0a50, 0x0a52, 0x0a54, 0x0a56, 0x0a58, 0x0a5a, 0x0a5f,\n\t0x0a65, 0x0a6c, 0x0a74, 0x0a76, 0x0a78, 0x0a7a, 0x0a7c, 0x0a7e,\n\t// Entry 240 - 27F\n\t0x0a80, 0x0a82, 0x0a84, 0x0a86, 0x0a88, 0x0a8a, 0x0a8c, 0x0a8e,\n\t0x0a90, 0x0a96, 0x0a98, 0x0a9a, 0x0a9c, 0x0a9e, 0x0aa0, 0x0aa2,\n\t0x0aa4, 0x0aa6, 0x0aa8, 0x0aaa, 0x0aac, 0x0aae, 0x0ab0, 0x0ab2,\n\t0x0ab4, 0x0ab9, 0x0abe, 0x0ac2, 0x0ac6, 0x0aca, 0x0ace, 0x0ad2,\n\t0x0ad6, 0x0ada, 0x0ade, 0x0ae2, 0x0ae7, 0x0aec, 0x0af1, 0x0af6,\n\t0x0afb, 0x0b00, 0x0b05, 0x0b0a, 0x0b0f, 0x0b14, 0x0b19, 0x0b1e,\n\t0x0b23, 0x0b28, 0x0b2d, 0x0b32, 0x0b37, 0x0b3c, 0x0b41, 0x0b46,\n\t0x0b4b, 0x0b50, 0x0b52, 0x0b54, 0x0b56, 0x0b58, 0x0b5a, 0x0b5c,\n\t// Entry 280 - 2BF\n\t0x0b5e, 0x0b62, 0x0b66, 0x0b6a, 0x0b6e, 0x0b72, 0x0b76, 0x0b7a,\n\t0x0b7c, 0x0b7e, 0x0b80, 0x0b82, 0x0b86, 0x0b8a, 0x0b8e, 0x0b92,\n\t0x0b96, 0x0b9a, 0x0b9e, 0x0ba0, 0x0ba2, 0x0ba4, 0x0ba6, 0x0ba8,\n\t0x0baa, 0x0bac, 0x0bb0, 0x0bb4, 0x0bba, 0x0bc0, 0x0bc4, 0x0bc8,\n\t0x0bcc, 0x0bd0, 0x0bd4, 0x0bd8, 0x0bdc, 0x0be0, 0x0be4, 0x0be8,\n\t0x0bec, 0x0bf0, 0x0bf4, 0x0bf8, 0x0bfc, 0x0c00, 0x0c04, 0x0c08,\n\t0x0c0c, 0x0c10, 0x0c14, 0x0c18, 0x0c1c, 0x0c20, 0x0c24, 0x0c28,\n\t0x0c2c, 0x0c30, 0x0c34, 0x0c36, 0x0c38, 0x0c3a, 0x0c3c, 0x0c3e,\n\t// Entry 2C0 - 2FF\n\t0x0c40, 0x0c42, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4c, 0x0c4e,\n\t0x0c50, 0x0c52, 0x0c54, 0x0c56, 0x0c58, 0x0c5a, 0x0c5c, 0x0c5e,\n\t0x0c60, 0x0c62, 0x0c64, 0x0c66, 0x0c68, 0x0c6a, 0x0c6c, 0x0c6e,\n\t0x0c70, 0x0c72, 0x0c74, 0x0c76, 0x0c78, 0x0c7a, 0x0c7c, 0x0c7e,\n\t0x0c80, 0x0c82, 0x0c86, 0x0c8a, 0x0c8e, 0x0c92, 0x0c96, 0x0c9a,\n\t0x0c9e, 0x0ca2, 0x0ca4, 0x0ca8, 0x0cac, 0x0cb0, 0x0cb4, 0x0cb8,\n\t0x0cbc, 0x0cc0, 0x0cc4, 0x0cc8, 0x0ccc, 0x0cd0, 0x0cd4, 0x0cd8,\n\t0x0cdc, 0x0ce0, 0x0ce4, 0x0ce8, 0x0cec, 0x0cf0, 0x0cf4, 0x0cf8,\n\t// Entry 300 - 33F\n\t0x0cfc, 0x0d00, 0x0d04, 0x0d08, 0x0d0c, 0x0d10, 0x0d14, 0x0d18,\n\t0x0d1c, 0x0d20, 0x0d24, 0x0d28, 0x0d2c, 0x0d30, 0x0d34, 0x0d38,\n\t0x0d3c, 0x0d40, 0x0d44, 0x0d48, 0x0d4c, 0x0d50, 0x0d54, 0x0d58,\n\t0x0d5c, 0x0d60, 0x0d64, 0x0d68, 0x0d6c, 0x0d70, 0x0d74, 0x0d78,\n\t0x0d7c, 0x0d80, 0x0d84, 0x0d88, 0x0d8c, 0x0d90, 0x0d94, 0x0d98,\n\t0x0d9c, 0x0da0, 0x0da4, 0x0da8, 0x0dac, 0x0db0, 0x0db4, 0x0db8,\n\t0x0dbc, 0x0dc0, 0x0dc4, 0x0dc8, 0x0dcc, 0x0dd0, 0x0dd4, 0x0dd8,\n\t0x0ddc, 0x0de0, 0x0de4, 0x0de8, 0x0dec, 0x0df0, 0x0df4, 0x0df8,\n\t// Entry 340 - 37F\n\t0x0dfc, 0x0e00, 0x0e04, 0x0e08, 0x0e0c, 0x0e10, 0x0e14, 0x0e18,\n\t0x0e1d, 0x0e22, 0x0e27, 0x0e2c, 0x0e31, 0x0e36, 0x0e3a, 0x0e3e,\n\t0x0e42, 0x0e46, 0x0e4a, 0x0e4e, 0x0e52, 0x0e56, 0x0e5a, 0x0e5e,\n\t0x0e62, 0x0e66, 0x0e6a, 0x0e6e, 0x0e72, 0x0e76, 0x0e7a, 0x0e7e,\n\t0x0e82, 0x0e86, 0x0e8a, 0x0e8e, 0x0e92, 0x0e96, 0x0e9a, 0x0e9e,\n\t0x0ea2, 0x0ea6, 0x0eaa, 0x0eae, 0x0eb2, 0x0eb6, 0x0ebc, 0x0ec2,\n\t0x0ec8, 0x0ecc, 0x0ed0, 0x0ed4, 0x0ed8, 0x0edc, 0x0ee0, 0x0ee4,\n\t0x0ee8, 0x0eec, 0x0ef0, 0x0ef4, 0x0ef8, 0x0efc, 0x0f00, 0x0f04,\n\t// Entry 380 - 3BF\n\t0x0f08, 0x0f0c, 0x0f10, 0x0f14, 0x0f18, 0x0f1c, 0x0f20, 0x0f24,\n\t0x0f28, 0x0f2c, 0x0f30, 0x0f34, 0x0f38, 0x0f3e, 0x0f44, 0x0f4a,\n\t0x0f50, 0x0f56, 0x0f5c, 0x0f62, 0x0f68, 0x0f6e, 0x0f74, 0x0f7a,\n\t0x0f80, 0x0f86, 0x0f8c, 0x0f92, 0x0f98, 0x0f9e, 0x0fa4, 0x0faa,\n\t0x0fb0, 0x0fb6, 0x0fbc, 0x0fc2, 0x0fc8, 0x0fce, 0x0fd4, 0x0fda,\n\t0x0fe0, 0x0fe6, 0x0fec, 0x0ff2, 0x0ff8, 0x0ffe, 0x1004, 0x100a,\n\t0x1010, 0x1016, 0x101c, 0x1022, 0x1028, 0x102e, 0x1034, 0x103a,\n\t0x1040, 0x1046, 0x104c, 0x1052, 0x1058, 0x105e, 0x1064, 0x106a,\n\t// Entry 3C0 - 3FF\n\t0x1070, 0x1076, 0x107c, 0x1082, 0x1088, 0x108e, 0x1094, 0x109a,\n\t0x10a0, 0x10a6, 0x10ac, 0x10b2, 0x10b8, 0x10be, 0x10c4, 0x10ca,\n\t0x10d0, 0x10d6, 0x10dc, 0x10e2, 0x10e8, 0x10ee, 0x10f4, 0x10fa,\n\t0x1100, 0x1106, 0x110c, 0x1112, 0x1118, 0x111e, 0x1124, 0x112a,\n\t0x1130, 0x1136, 0x113c, 0x1142, 0x1148, 0x114e, 0x1154, 0x115a,\n\t0x1160, 0x1166, 0x116c, 0x1172, 0x1178, 0x1180, 0x1188, 0x1190,\n\t0x1198, 0x11a0, 0x11a8, 0x11b0, 0x11b6, 0x11d7, 0x11e6, 0x11ee,\n\t0x11ef, 0x11f0, 0x11f1, 0x11f2, 0x11f3, 0x11f4, 0x11f5, 0x11f6,\n\t// Entry 400 - 43F\n\t0x11f7, 0x11f8, 0x11f9, 0x11fa, 0x11fb, 0x11fc, 0x11fd, 0x11fe,\n\t0x11ff, 0x1200, 0x1201, 0x1205, 0x1209, 0x120d, 0x1211, 0x1215,\n\t0x1219, 0x121b, 0x121d, 0x121f, 0x1221, 0x1223, 0x1225, 0x1227,\n\t0x1229, 0x122b, 0x122d, 0x122f, 0x1231, 0x1233, 0x1235, 0x1237,\n\t0x1239, 0x123b, 0x123d, 0x123f, 0x1241, 0x1243, 0x1245, 0x1247,\n\t0x1249, 0x124b, 0x124d, 0x124f, 0x1251, 0x1253, 0x1255, 0x1257,\n\t0x1259, 0x125b, 0x125d, 0x125f, 0x1263, 0x1267, 0x126b, 0x126f,\n\t0x1270, 0x1271, 0x1272, 0x1273, 0x1274, 0x1275, 0x1277, 0x1279,\n\t// Entry 440 - 47F\n\t0x127b, 0x127d, 0x127f, 0x1287, 0x128f, 0x129b, 0x12a7, 0x12b3,\n\t0x12bf, 0x12cb, 0x12d3, 0x12db, 0x12e7, 0x12f3, 0x12ff, 0x130b,\n\t0x130d, 0x130f, 0x1311, 0x1313, 0x1315, 0x1317, 0x1319, 0x131b,\n\t0x131d, 0x131f, 0x1321, 0x1323, 0x1325, 0x1327, 0x1329, 0x132b,\n\t0x132e, 0x1331, 0x1333, 0x1335, 0x1337, 0x1339, 0x133b, 0x133d,\n\t0x133f, 0x1341, 0x1343, 0x1345, 0x1347, 0x1349, 0x134b, 0x134d,\n\t0x1350, 0x1353, 0x1356, 0x1359, 0x135c, 0x135f, 0x1362, 0x1365,\n\t0x1368, 0x136b, 0x136e, 0x1371, 0x1374, 0x1377, 0x137a, 0x137d,\n\t// Entry 480 - 4BF\n\t0x1380, 0x1383, 0x1386, 0x1389, 0x138c, 0x138f, 0x1392, 0x1395,\n\t0x1398, 0x139b, 0x13a2, 0x13a4, 0x13a6, 0x13a8, 0x13ab, 0x13ad,\n\t0x13af, 0x13b1, 0x13b3, 0x13b5, 0x13bb, 0x13c1, 0x13c4, 0x13c7,\n\t0x13ca, 0x13cd, 0x13d0, 0x13d3, 0x13d6, 0x13d9, 0x13dc, 0x13df,\n\t0x13e2, 0x13e5, 0x13e8, 0x13eb, 0x13ee, 0x13f1, 0x13f4, 0x13f7,\n\t0x13fa, 0x13fd, 0x1400, 0x1403, 0x1406, 0x1409, 0x140c, 0x140f,\n\t0x1412, 0x1415, 0x1418, 0x141b, 0x141e, 0x1421, 0x1424, 0x1427,\n\t0x142a, 0x142d, 0x1430, 0x1433, 0x1436, 0x1439, 0x143c, 0x143f,\n\t// Entry 4C0 - 4FF\n\t0x1442, 0x1445, 0x1448, 0x1451, 0x145a, 0x1463, 0x146c, 0x1475,\n\t0x147e, 0x1487, 0x1490, 0x1499, 0x149c, 0x149f, 0x14a2, 0x14a5,\n\t0x14a8, 0x14ab, 0x14ae, 0x14b1, 0x14b4, 0x14b7, 0x14ba, 0x14bd,\n\t0x14c0, 0x14c3, 0x14c6, 0x14c9, 0x14cc, 0x14cf, 0x14d2, 0x14d5,\n\t0x14d8, 0x14db, 0x14de, 0x14e1, 0x14e4, 0x14e7, 0x14ea, 0x14ed,\n\t0x14f0, 0x14f3, 0x14f6, 0x14f9, 0x14fc, 0x14ff, 0x1502, 0x1505,\n\t0x1508, 0x150b, 0x150e, 0x1511, 0x1514, 0x1517, 0x151a, 0x151d,\n\t0x1520, 0x1523, 0x1526, 0x1529, 0x152c, 0x152f, 0x1532, 0x1535,\n\t// Entry 500 - 53F\n\t0x1538, 0x153b, 0x153e, 0x1541, 0x1544, 0x1547, 0x154a, 0x154d,\n\t0x1550, 0x1553, 0x1556, 0x1559, 0x155c, 0x155f, 0x1562, 0x1565,\n\t0x1568, 0x156b, 0x156e, 0x1571, 0x1574, 0x1577, 0x157a, 0x157d,\n\t0x1580, 0x1583, 0x1586, 0x1589, 0x158c, 0x158f, 0x1592, 0x1595,\n\t0x1598, 0x159b, 0x159e, 0x15a1, 0x15a4, 0x15a7, 0x15aa, 0x15ad,\n\t0x15b0, 0x15b3, 0x15b6, 0x15b9, 0x15bc, 0x15bf, 0x15c2, 0x15c5,\n\t0x15c8, 0x15cb, 0x15ce, 0x15d1, 0x15d4, 0x15d7, 0x15da, 0x15dd,\n\t0x15e0, 0x15e3, 0x15e6, 0x15e9, 0x15ec, 0x15ef, 0x15f2, 0x15f5,\n\t// Entry 540 - 57F\n\t0x15f8, 0x15fb, 0x15fe, 0x1601, 0x1604, 0x1607, 0x160a, 0x160d,\n\t0x1610, 0x1613, 0x1616, 0x1619, 0x161c, 0x161f, 0x1622, 0x1625,\n\t0x1628, 0x162b, 0x162e, 0x1631, 0x1634, 0x1637, 0x163a, 0x163d,\n\t0x1640, 0x1643, 0x1646, 0x1649, 0x164c, 0x164f, 0x1652, 0x1655,\n\t0x1658, 0x165b, 0x165e, 0x1661, 0x1664, 0x1667, 0x166a, 0x166d,\n\t0x1670, 0x1673, 0x1676, 0x1679, 0x167c, 0x167f, 0x1682, 0x1685,\n\t0x1688, 0x168b, 0x168e, 0x1691, 0x1694, 0x1697, 0x169a, 0x169d,\n\t0x16a0, 0x16a3, 0x16a6, 0x16a9, 0x16ac, 0x16af, 0x16b2, 0x16b5,\n\t// Entry 580 - 5BF\n\t0x16b8, 0x16bb, 0x16be, 0x16c1, 0x16c4, 0x16c7, 0x16ca, 0x16cd,\n\t0x16d0, 0x16d3, 0x16d6, 0x16d9, 0x16dc, 0x16df, 0x16e2, 0x16e5,\n\t0x16e8, 0x16eb, 0x16ee, 0x16f1, 0x16f4, 0x16f7, 0x16fa, 0x16fd,\n\t0x1700, 0x1703, 0x1706, 0x1709, 0x170c, 0x170f, 0x1712, 0x1715,\n\t0x1718, 0x171b, 0x171e, 0x1721, 0x1724, 0x1727, 0x172a, 0x172d,\n\t0x1730, 0x1733, 0x1736, 0x1739, 0x173c, 0x173f, 0x1742, 0x1745,\n\t0x1748, 0x174b, 0x174e, 0x1751, 0x1754, 0x1757, 0x175a, 0x175d,\n\t0x1760, 0x1763, 0x1766, 0x1769, 0x176c, 0x176f, 0x1772, 0x1775,\n\t// Entry 5C0 - 5FF\n\t0x1778, 0x177b, 0x177e, 0x1781, 0x1784, 0x1787, 0x178a, 0x178d,\n\t0x1790, 0x1793, 0x1796, 0x1799, 0x179c, 0x179f, 0x17a2, 0x17a5,\n\t0x17a8, 0x17ab, 0x17ae, 0x17b1, 0x17b4, 0x17b7, 0x17ba, 0x17bd,\n\t0x17c0, 0x17c3, 0x17c6, 0x17c9, 0x17cc, 0x17cf, 0x17d2, 0x17d5,\n\t0x17d8, 0x17db, 0x17de, 0x17e1, 0x17e4, 0x17e7, 0x17ea, 0x17ed,\n\t0x17f0, 0x17f3, 0x17f6, 0x17f9, 0x17fc, 0x17ff, 0x1802, 0x1805,\n\t0x1808, 0x180b, 0x180e, 0x1811, 0x1814, 0x1817, 0x181a, 0x181d,\n\t0x1820, 0x1823, 0x1826, 0x1829, 0x182c, 0x182f, 0x1832, 0x1835,\n\t// Entry 600 - 63F\n\t0x1838, 0x183b, 0x183e, 0x1841, 0x1844, 0x1847, 0x184a, 0x184d,\n\t0x1850, 0x1853, 0x1856, 0x1859, 0x185c, 0x185f, 0x1862, 0x1865,\n\t0x1868, 0x186b, 0x186e, 0x1871, 0x1874, 0x1877, 0x187a, 0x187d,\n\t0x1880, 0x1883, 0x1886, 0x1889, 0x188c, 0x188f, 0x1892, 0x1895,\n\t0x1898, 0x189b, 0x189e, 0x18a1, 0x18a4, 0x18a7, 0x18aa, 0x18ad,\n\t0x18b0, 0x18b3, 0x18b6, 0x18b9, 0x18bc, 0x18bf, 0x18c2, 0x18c5,\n\t0x18c8, 0x18cb, 0x18ce, 0x18d1, 0x18d4, 0x18d7, 0x18da, 0x18dd,\n\t0x18e0, 0x18e3, 0x18e6, 0x18e9, 0x18ec, 0x18ef, 0x18f2, 0x18f5,\n\t// Entry 640 - 67F\n\t0x18f8, 0x18fb, 0x18fe, 0x1901, 0x1904, 0x1907, 0x190a, 0x190d,\n\t0x1910, 0x1913, 0x1916, 0x1919, 0x191c, 0x191f, 0x1922, 0x1925,\n\t0x1928, 0x192b, 0x192e, 0x1931, 0x1934, 0x1937, 0x193a, 0x193d,\n\t0x1940, 0x1943, 0x1946, 0x1949, 0x194c, 0x194f, 0x1952, 0x1955,\n\t0x1958, 0x195b, 0x195e, 0x1961, 0x1964, 0x1967, 0x196a, 0x196d,\n\t0x1970, 0x1973, 0x1976, 0x1979, 0x197c, 0x197f, 0x1982, 0x1985,\n\t0x1988, 0x198b,\n} // Size: 3324 bytes\n\nvar xorData string = \"\" + // Size: 4862 bytes\n\t\"\\x02\\x0c\\x09\\x02\\xb0\\xec\\x02\\xad\\xd8\\x02\\xad\\xd9\\x02\\x06\\x07\\x02\\x0f\\x12\" +\n\t\"\\x02\\x0f\\x1f\\x02\\x0f\\x1d\\x02\\x01\\x13\\x02\\x0f\\x16\\x02\\x0f\\x0b\\x02\\x0f3\" +\n\t\"\\x02\\x0f7\\x02\\x0f?\\x02\\x0f/\\x02\\x0f*\\x02\\x0c&\\x02\\x0c*\\x02\\x0c;\\x02\\x0c9\" +\n\t\"\\x02\\x0c%\\x02\\xab\\xed\\x02\\xab\\xe2\\x02\\xab\\xe3\\x02\\xa9\\xe0\\x02\\xa9\\xe1\" +\n\t\"\\x02\\xa9\\xe6\\x02\\xa3\\xcb\\x02\\xa3\\xc8\\x02\\xa3\\xc9\\x02\\x01#\\x02\\x01\\x08\" +\n\t\"\\x02\\x0e>\\x02\\x0e'\\x02\\x0f\\x03\\x02\\x03\\x0d\\x02\\x03\\x09\\x02\\x03\\x17\\x02\" +\n\t\"\\x03\\x0e\\x02\\x02\\x03\\x02\\x011\\x02\\x01\\x00\\x02\\x01\\x10\\x02\\x03<\\x02\\x07\" +\n\t\"\\x0d\\x02\\x02\\x0c\\x02\\x0c0\\x02\\x01\\x03\\x02\\x01\\x01\\x02\\x01 \\x02\\x01\\x22\" +\n\t\"\\x02\\x01)\\x02\\x01\\x0a\\x02\\x01\\x0c\\x02\\x02\\x06\\x02\\x02\\x02\\x02\\x03\\x10\" +\n\t\"\\x03\\x037 \\x03\\x0b+\\x03\\x021\\x00\\x02\\x01\\x04\\x02\\x01\\x02\\x02\\x019\\x02\" +\n\t\"\\x03\\x1c\\x02\\x02$\\x03\\x80p$\\x02\\x03:\\x02\\x03\\x0a\\x03\\xc1r.\\x03\\xc1r,\\x03\" +\n\t\"\\xc1r\\x02\\x02\\x02:\\x02\\x02>\\x02\\x02,\\x02\\x02\\x10\\x02\\x02\\x00\\x03\\xc1s<\" +\n\t\"\\x03\\xc1s*\\x03\\xc2L$\\x03\\xc2L;\\x02\\x09)\\x02\\x0a\\x19\\x03\\x83\\xab\\xe3\\x03\" +\n\t\"\\x83\\xab\\xf2\\x03 4\\xe0\\x03\\x81\\xab\\xea\\x03\\x81\\xab\\xf3\\x03 4\\xef\\x03\\x96\" +\n\t\"\\xe1\\xcd\\x03\\x84\\xe5\\xc3\\x02\\x0d\\x11\\x03\\x8b\\xec\\xcb\\x03\\x94\\xec\\xcf\\x03\" +\n\t\"\\x9a\\xec\\xc2\\x03\\x8b\\xec\\xdb\\x03\\x94\\xec\\xdf\\x03\\x9a\\xec\\xd2\\x03\\x01\\x0c\" +\n\t\"!\\x03\\x01\\x0c#\\x03ʠ\\x9d\\x03ʣ\\x9c\\x03ʢ\\x9f\\x03ʥ\\x9e\\x03ʤ\\x91\\x03ʧ\\x90\\x03\" +\n\t\"ʦ\\x93\\x03ʩ\\x92\\x03ʨ\\x95\\x03\\xca\\xf3\\xb5\\x03\\xca\\xf0\\xb4\\x03\\xca\\xf1\\xb7\" +\n\t\"\\x03\\xca\\xf6\\xb6\\x03\\xca\\xf7\\x89\\x03\\xca\\xf4\\x88\\x03\\xca\\xf5\\x8b\\x03\\xca\" +\n\t\"\\xfa\\x8a\\x03\\xca\\xfb\\x8d\\x03\\xca\\xf8\\x8c\\x03\\xca\\xf9\\x8f\\x03\\xca\\xfe\\x8e\" +\n\t\"\\x03\\xca\\xff\\x81\\x03\\xca\\xfc\\x80\\x03\\xca\\xfd\\x83\\x03\\xca\\xe2\\x82\\x03\\xca\" +\n\t\"\\xe3\\x85\\x03\\xca\\xe0\\x84\\x03\\xca\\xe1\\x87\\x03\\xca\\xe6\\x86\\x03\\xca\\xe7\\x99\" +\n\t\"\\x03\\xca\\xe4\\x98\\x03\\xca\\xe5\\x9b\\x03\\xca\\xea\\x9a\\x03\\xca\\xeb\\x9d\\x03\\xca\" +\n\t\"\\xe8\\x9c\\x03ؓ\\x89\\x03ߔ\\x8b\\x02\\x010\\x03\\x03\\x04\\x1e\\x03\\x04\\x15\\x12\\x03\" +\n\t\"\\x0b\\x05,\\x03\\x06\\x04\\x00\\x03\\x06\\x04)\\x03\\x06\\x044\\x03\\x06\\x04<\\x03\\x06\" +\n\t\"\\x05\\x1d\\x03\\x06\\x06\\x00\\x03\\x06\\x06\\x0a\\x03\\x06\\x06'\\x03\\x06\\x062\\x03\" +\n\t\"\\x0786\\x03\\x079/\\x03\\x079 \\x03\\x07:\\x0e\\x03\\x07:\\x1b\\x03\\x07:%\\x03\\x07;/\" +\n\t\"\\x03\\x07;%\\x03\\x074\\x11\\x03\\x076\\x09\\x03\\x077*\\x03\\x070\\x01\\x03\\x070\\x0f\" +\n\t\"\\x03\\x070.\\x03\\x071\\x16\\x03\\x071\\x04\\x03\\x0710\\x03\\x072\\x18\\x03\\x072-\" +\n\t\"\\x03\\x073\\x14\\x03\\x073>\\x03\\x07'\\x09\\x03\\x07 \\x00\\x03\\x07\\x1f\\x0b\\x03\" +\n\t\"\\x07\\x18#\\x03\\x07\\x18(\\x03\\x07\\x186\\x03\\x07\\x18\\x03\\x03\\x07\\x19\\x16\\x03\" +\n\t\"\\x07\\x116\\x03\\x07\\x12'\\x03\\x07\\x13\\x10\\x03\\x07\\x0c&\\x03\\x07\\x0c\\x08\\x03\" +\n\t\"\\x07\\x0c\\x13\\x03\\x07\\x0d\\x02\\x03\\x07\\x0d\\x1c\\x03\\x07\\x0b5\\x03\\x07\\x0b\" +\n\t\"\\x0a\\x03\\x07\\x0b\\x01\\x03\\x07\\x0b\\x0f\\x03\\x07\\x05\\x00\\x03\\x07\\x05\\x09\\x03\" +\n\t\"\\x07\\x05\\x0b\\x03\\x07\\x07\\x01\\x03\\x07\\x07\\x08\\x03\\x07\\x00<\\x03\\x07\\x00+\" +\n\t\"\\x03\\x07\\x01)\\x03\\x07\\x01\\x1b\\x03\\x07\\x01\\x08\\x03\\x07\\x03?\\x03\\x0445\\x03\" +\n\t\"\\x044\\x08\\x03\\x0454\\x03\\x04)/\\x03\\x04)5\\x03\\x04+\\x05\\x03\\x04+\\x14\\x03\" +\n\t\"\\x04+ \\x03\\x04+<\\x03\\x04*&\\x03\\x04*\\x22\\x03\\x04&8\\x03\\x04!\\x01\\x03\\x04!\" +\n\t\"\\x22\\x03\\x04\\x11+\\x03\\x04\\x10.\\x03\\x04\\x104\\x03\\x04\\x13=\\x03\\x04\\x12\\x04\" +\n\t\"\\x03\\x04\\x12\\x0a\\x03\\x04\\x0d\\x1d\\x03\\x04\\x0d\\x07\\x03\\x04\\x0d \\x03\\x05<>\" +\n\t\"\\x03\\x055<\\x03\\x055!\\x03\\x055#\\x03\\x055&\\x03\\x054\\x1d\\x03\\x054\\x02\\x03\" +\n\t\"\\x054\\x07\\x03\\x0571\\x03\\x053\\x1a\\x03\\x053\\x16\\x03\\x05.<\\x03\\x05.\\x07\\x03\" +\n\t\"\\x05):\\x03\\x05)<\\x03\\x05)\\x0c\\x03\\x05)\\x15\\x03\\x05+-\\x03\\x05+5\\x03\\x05$\" +\n\t\"\\x1e\\x03\\x05$\\x14\\x03\\x05'\\x04\\x03\\x05'\\x14\\x03\\x05&\\x02\\x03\\x05\\x226\" +\n\t\"\\x03\\x05\\x22\\x0c\\x03\\x05\\x22\\x1c\\x03\\x05\\x19\\x0a\\x03\\x05\\x1b\\x09\\x03\\x05\" +\n\t\"\\x1b\\x0c\\x03\\x05\\x14\\x07\\x03\\x05\\x16?\\x03\\x05\\x16\\x0c\\x03\\x05\\x0c\\x05\" +\n\t\"\\x03\\x05\\x0e\\x0f\\x03\\x05\\x01\\x0e\\x03\\x05\\x00(\\x03\\x05\\x030\\x03\\x05\\x03\" +\n\t\"\\x06\\x03\\x0a==\\x03\\x0a=1\\x03\\x0a=,\\x03\\x0a=\\x0c\\x03\\x0a??\\x03\\x0a<\\x08\" +\n\t\"\\x03\\x0a9!\\x03\\x0a9)\\x03\\x0a97\\x03\\x0a99\\x03\\x0a6\\x0a\\x03\\x0a6\\x1c\\x03\" +\n\t\"\\x0a6\\x17\\x03\\x0a7'\\x03\\x0a78\\x03\\x0a73\\x03\\x0a'\\x01\\x03\\x0a'&\\x03\\x0a\" +\n\t\"\\x1f\\x0e\\x03\\x0a\\x1f\\x03\\x03\\x0a\\x1f3\\x03\\x0a\\x1b/\\x03\\x0a\\x18\\x19\\x03\" +\n\t\"\\x0a\\x19\\x01\\x03\\x0a\\x16\\x14\\x03\\x0a\\x0e\\x22\\x03\\x0a\\x0f\\x10\\x03\\x0a\\x0f\" +\n\t\"\\x02\\x03\\x0a\\x0f \\x03\\x0a\\x0c\\x04\\x03\\x0a\\x0b>\\x03\\x0a\\x0b+\\x03\\x0a\\x08/\" +\n\t\"\\x03\\x0a\\x046\\x03\\x0a\\x05\\x14\\x03\\x0a\\x00\\x04\\x03\\x0a\\x00\\x10\\x03\\x0a\" +\n\t\"\\x00\\x14\\x03\\x0b<3\\x03\\x0b;*\\x03\\x0b9\\x22\\x03\\x0b9)\\x03\\x0b97\\x03\\x0b+\" +\n\t\"\\x10\\x03\\x0b((\\x03\\x0b&5\\x03\\x0b$\\x1c\\x03\\x0b$\\x12\\x03\\x0b%\\x04\\x03\\x0b#\" +\n\t\"<\\x03\\x0b#0\\x03\\x0b#\\x0d\\x03\\x0b#\\x19\\x03\\x0b!:\\x03\\x0b!\\x1f\\x03\\x0b!\" +\n\t\"\\x00\\x03\\x0b\\x1e5\\x03\\x0b\\x1c\\x1d\\x03\\x0b\\x1d-\\x03\\x0b\\x1d(\\x03\\x0b\\x18.\" +\n\t\"\\x03\\x0b\\x18 \\x03\\x0b\\x18\\x16\\x03\\x0b\\x14\\x13\\x03\\x0b\\x15$\\x03\\x0b\\x15\" +\n\t\"\\x22\\x03\\x0b\\x12\\x1b\\x03\\x0b\\x12\\x10\\x03\\x0b\\x132\\x03\\x0b\\x13=\\x03\\x0b\" +\n\t\"\\x12\\x18\\x03\\x0b\\x0c&\\x03\\x0b\\x061\\x03\\x0b\\x06:\\x03\\x0b\\x05#\\x03\\x0b\\x05\" +\n\t\"<\\x03\\x0b\\x04\\x0b\\x03\\x0b\\x04\\x04\\x03\\x0b\\x04\\x1b\\x03\\x0b\\x042\\x03\\x0b\" +\n\t\"\\x041\\x03\\x0b\\x03\\x03\\x03\\x0b\\x03\\x1d\\x03\\x0b\\x03/\\x03\\x0b\\x03+\\x03\\x0b\" +\n\t\"\\x02\\x1b\\x03\\x0b\\x02\\x00\\x03\\x0b\\x01\\x1e\\x03\\x0b\\x01\\x08\\x03\\x0b\\x015\" +\n\t\"\\x03\\x06\\x0d9\\x03\\x06\\x0d=\\x03\\x06\\x0d?\\x03\\x02\\x001\\x03\\x02\\x003\\x03\" +\n\t\"\\x02\\x02\\x19\\x03\\x02\\x006\\x03\\x02\\x02\\x1b\\x03\\x02\\x004\\x03\\x02\\x00<\\x03\" +\n\t\"\\x02\\x02\\x0a\\x03\\x02\\x02\\x0e\\x03\\x02\\x01\\x1a\\x03\\x02\\x01\\x07\\x03\\x02\\x01\" +\n\t\"\\x05\\x03\\x02\\x01\\x0b\\x03\\x02\\x01%\\x03\\x02\\x01\\x0c\\x03\\x02\\x01\\x04\\x03\" +\n\t\"\\x02\\x01\\x1c\\x03\\x02\\x00.\\x03\\x02\\x002\\x03\\x02\\x00>\\x03\\x02\\x00\\x12\\x03\" +\n\t\"\\x02\\x00\\x16\\x03\\x02\\x011\\x03\\x02\\x013\\x03\\x02\\x02 \\x03\\x02\\x02%\\x03\\x02\" +\n\t\"\\x02$\\x03\\x02\\x028\\x03\\x02\\x02;\\x03\\x02\\x024\\x03\\x02\\x012\\x03\\x02\\x022\" +\n\t\"\\x03\\x02\\x02/\\x03\\x02\\x01,\\x03\\x02\\x01\\x13\\x03\\x02\\x01\\x16\\x03\\x02\\x01\" +\n\t\"\\x11\\x03\\x02\\x01\\x1e\\x03\\x02\\x01\\x15\\x03\\x02\\x01\\x17\\x03\\x02\\x01\\x0f\\x03\" +\n\t\"\\x02\\x01\\x08\\x03\\x02\\x00?\\x03\\x02\\x03\\x07\\x03\\x02\\x03\\x0d\\x03\\x02\\x03\" +\n\t\"\\x13\\x03\\x02\\x03\\x1d\\x03\\x02\\x03\\x1f\\x03\\x02\\x00\\x03\\x03\\x02\\x00\\x0d\\x03\" +\n\t\"\\x02\\x00\\x01\\x03\\x02\\x00\\x1b\\x03\\x02\\x00\\x19\\x03\\x02\\x00\\x18\\x03\\x02\\x00\" +\n\t\"\\x13\\x03\\x02\\x00/\\x03\\x07>\\x12\\x03\\x07<\\x1f\\x03\\x07>\\x1d\\x03\\x06\\x1d\\x0e\" +\n\t\"\\x03\\x07>\\x1c\\x03\\x07>:\\x03\\x07>\\x13\\x03\\x04\\x12+\\x03\\x07?\\x03\\x03\\x07>\" +\n\t\"\\x02\\x03\\x06\\x224\\x03\\x06\\x1a.\\x03\\x07<%\\x03\\x06\\x1c\\x0b\\x03\\x0609\\x03\" +\n\t\"\\x05\\x1f\\x01\\x03\\x04'\\x08\\x03\\x93\\xfd\\xf5\\x03\\x02\\x0d \\x03\\x02\\x0d#\\x03\" +\n\t\"\\x02\\x0d!\\x03\\x02\\x0d&\\x03\\x02\\x0d\\x22\\x03\\x02\\x0d/\\x03\\x02\\x0d,\\x03\\x02\" +\n\t\"\\x0d$\\x03\\x02\\x0d'\\x03\\x02\\x0d%\\x03\\x02\\x0d;\\x03\\x02\\x0d=\\x03\\x02\\x0d?\" +\n\t\"\\x03\\x099.\\x03\\x08\\x0b7\\x03\\x08\\x02\\x14\\x03\\x08\\x14\\x0d\\x03\\x08.:\\x03\" +\n\t\"\\x089'\\x03\\x0f\\x0b\\x18\\x03\\x0f\\x1c1\\x03\\x0f\\x17&\\x03\\x0f9\\x1f\\x03\\x0f0\" +\n\t\"\\x0c\\x03\\x0e\\x0a9\\x03\\x0e\\x056\\x03\\x0e\\x1c#\\x03\\x0f\\x13\\x0e\\x03\\x072\\x00\" +\n\t\"\\x03\\x070\\x0d\\x03\\x072\\x0b\\x03\\x06\\x11\\x18\\x03\\x070\\x10\\x03\\x06\\x0f(\\x03\" +\n\t\"\\x072\\x05\\x03\\x06\\x0f,\\x03\\x073\\x15\\x03\\x06\\x07\\x08\\x03\\x05\\x16\\x02\\x03\" +\n\t\"\\x04\\x0b \\x03\\x05:8\\x03\\x05\\x16%\\x03\\x0a\\x0d\\x1f\\x03\\x06\\x16\\x10\\x03\\x05\" +\n\t\"\\x1d5\\x03\\x05*;\\x03\\x05\\x16\\x1b\\x03\\x04.-\\x03\\x06\\x1a\\x19\\x03\\x04\\x03,\" +\n\t\"\\x03\\x0b87\\x03\\x04/\\x0a\\x03\\x06\\x00,\\x03\\x04-\\x01\\x03\\x04\\x1e-\\x03\\x06/(\" +\n\t\"\\x03\\x0a\\x0b5\\x03\\x06\\x0e7\\x03\\x06\\x07.\\x03\\x0597\\x03\\x0a*%\\x03\\x0760\" +\n\t\"\\x03\\x06\\x0c;\\x03\\x05'\\x00\\x03\\x072.\\x03\\x072\\x08\\x03\\x06=\\x01\\x03\\x06\" +\n\t\"\\x05\\x1b\\x03\\x06\\x06\\x12\\x03\\x06$=\\x03\\x06'\\x0d\\x03\\x04\\x11\\x0f\\x03\\x076\" +\n\t\",\\x03\\x06\\x07;\\x03\\x06.,\\x03\\x86\\xf9\\xea\\x03\\x8f\\xff\\xeb\\x02\\x092\\x02\" +\n\t\"\\x095\\x02\\x094\\x02\\x09;\\x02\\x09>\\x02\\x098\\x02\\x09*\\x02\\x09/\\x02\\x09,\\x02\" +\n\t\"\\x09%\\x02\\x09&\\x02\\x09#\\x02\\x09 \\x02\\x08!\\x02\\x08%\\x02\\x08$\\x02\\x08+\\x02\" +\n\t\"\\x08.\\x02\\x08*\\x02\\x08&\\x02\\x088\\x02\\x08>\\x02\\x084\\x02\\x086\\x02\\x080\\x02\" +\n\t\"\\x08\\x10\\x02\\x08\\x17\\x02\\x08\\x12\\x02\\x08\\x1d\\x02\\x08\\x1f\\x02\\x08\\x13\\x02\" +\n\t\"\\x08\\x15\\x02\\x08\\x14\\x02\\x08\\x0c\\x03\\x8b\\xfd\\xd0\\x03\\x81\\xec\\xc6\\x03\\x87\" +\n\t\"\\xe0\\x8a\\x03-2\\xe3\\x03\\x80\\xef\\xe4\\x03-2\\xea\\x03\\x88\\xe6\\xeb\\x03\\x8e\\xe6\" +\n\t\"\\xe8\\x03\\x84\\xe6\\xe9\\x03\\x97\\xe6\\xee\\x03-2\\xf9\\x03-2\\xf6\\x03\\x8e\\xe3\\xad\" +\n\t\"\\x03\\x80\\xe3\\x92\\x03\\x88\\xe3\\x90\\x03\\x8e\\xe3\\x90\\x03\\x80\\xe3\\x97\\x03\\x88\" +\n\t\"\\xe3\\x95\\x03\\x88\\xfe\\xcb\\x03\\x8e\\xfe\\xca\\x03\\x84\\xfe\\xcd\\x03\\x91\\xef\\xc9\" +\n\t\"\\x03-2\\xc1\\x03-2\\xc0\\x03-2\\xcb\\x03\\x88@\\x09\\x03\\x8e@\\x08\\x03\\x8f\\xe0\\xf5\" +\n\t\"\\x03\\x8e\\xe6\\xf9\\x03\\x8e\\xe0\\xfa\\x03\\x93\\xff\\xf4\\x03\\x84\\xee\\xd3\\x03\\x0b\" +\n\t\"(\\x04\\x023 \\x03\\x0b)\\x08\\x021;\\x02\\x01*\\x03\\x0b#\\x10\\x03\\x0b 0\\x03\\x0b!\" +\n\t\"\\x10\\x03\\x0b!0\\x03\\x07\\x15\\x08\\x03\\x09?5\\x03\\x07\\x1f\\x08\\x03\\x07\\x17\\x0b\" +\n\t\"\\x03\\x09\\x1f\\x15\\x03\\x0b\\x1c7\\x03\\x0a+#\\x03\\x06\\x1a\\x1b\\x03\\x06\\x1a\\x14\" +\n\t\"\\x03\\x0a\\x01\\x18\\x03\\x06#\\x1b\\x03\\x0a2\\x0c\\x03\\x0a\\x01\\x04\\x03\\x09#;\\x03\" +\n\t\"\\x08='\\x03\\x08\\x1a\\x0a\\x03\\x07</\\x03\\x07:+\\x03\\x07\\x07*\\x03\\x06&\\x1c\\x03\" +\n\t\"\\x09\\x0c\\x16\\x03\\x09\\x10\\x0e\\x03\\x08'\\x0f\\x03\\x08+\\x09\\x03\\x074%\\x03\\x06\" +\n\t\"!3\\x03\\x06\\x03+\\x03\\x0b\\x1e\\x19\\x03\\x0a))\\x03\\x09\\x08\\x19\\x03\\x08,\\x05\" +\n\t\"\\x03\\x07<2\\x03\\x06\\x1c>\\x03\\x0a\\x111\\x03\\x09\\x1b\\x09\\x03\\x073.\\x03\\x07\" +\n\t\"\\x01\\x00\\x03\\x09/,\\x03\\x07#>\\x03\\x07\\x048\\x03\\x0a\\x1f\\x22\\x03\\x098>\\x03\" +\n\t\"\\x09\\x11\\x00\\x03\\x08/\\x17\\x03\\x06'\\x22\\x03\\x0b\\x1a+\\x03\\x0a\\x22\\x19\\x03\" +\n\t\"\\x0a/1\\x03\\x0974\\x03\\x09\\x0f\\x22\\x03\\x08,\\x22\\x03\\x08?\\x14\\x03\\x07$5\\x03\" +\n\t\"\\x07<3\\x03\\x07=*\\x03\\x07\\x13\\x18\\x03\\x068\\x0a\\x03\\x06\\x09\\x16\\x03\\x06\" +\n\t\"\\x13\\x00\\x03\\x08\\x067\\x03\\x08\\x01\\x03\\x03\\x08\\x12\\x1d\\x03\\x07+7\\x03\\x06(\" +\n\t\";\\x03\\x06\\x1c?\\x03\\x07\\x0e\\x17\\x03\\x0a\\x06\\x1d\\x03\\x0a\\x19\\x07\\x03\\x08\" +\n\t\"\\x14$\\x03\\x07$;\\x03\\x08,$\\x03\\x08\\x06\\x0d\\x03\\x07\\x16\\x0a\\x03\\x06>>\\x03\" +\n\t\"\\x0a\\x06\\x12\\x03\\x0a\\x14)\\x03\\x09\\x0d\\x1f\\x03\\x09\\x12\\x17\\x03\\x09\\x19\" +\n\t\"\\x01\\x03\\x08\\x11 \\x03\\x08\\x1d'\\x03\\x06<\\x1a\\x03\\x0a.\\x00\\x03\\x07'\\x18\" +\n\t\"\\x03\\x0a\\x22\\x08\\x03\\x08\\x0d\\x0a\\x03\\x08\\x13)\\x03\\x07*)\\x03\\x06<,\\x03\" +\n\t\"\\x07\\x0b\\x1a\\x03\\x09.\\x14\\x03\\x09\\x0d\\x1e\\x03\\x07\\x0e#\\x03\\x0b\\x1d'\\x03\" +\n\t\"\\x0a\\x0a8\\x03\\x09%2\\x03\\x08+&\\x03\\x080\\x12\\x03\\x0a)4\\x03\\x08\\x06\\x1f\\x03\" +\n\t\"\\x0b\\x1b\\x1a\\x03\\x0a\\x1b\\x0f\\x03\\x0b\\x1d*\\x03\\x09\\x16$\\x03\\x090\\x11\\x03\" +\n\t\"\\x08\\x11\\x08\\x03\\x0a*(\\x03\\x0a\\x042\\x03\\x089,\\x03\\x074'\\x03\\x07\\x0f\\x05\" +\n\t\"\\x03\\x09\\x0b\\x0a\\x03\\x07\\x1b\\x01\\x03\\x09\\x17:\\x03\\x09.\\x0d\\x03\\x07.\\x11\" +\n\t\"\\x03\\x09+\\x15\\x03\\x080\\x13\\x03\\x0b\\x1f\\x19\\x03\\x0a \\x11\\x03\\x0a\\x220\\x03\" +\n\t\"\\x09\\x07;\\x03\\x08\\x16\\x1c\\x03\\x07,\\x13\\x03\\x07\\x0e/\\x03\\x06\\x221\\x03\\x0a\" +\n\t\".\\x0a\\x03\\x0a7\\x02\\x03\\x0a\\x032\\x03\\x0a\\x1d.\\x03\\x091\\x06\\x03\\x09\\x19:\" +\n\t\"\\x03\\x08\\x02/\\x03\\x060+\\x03\\x06\\x0f-\\x03\\x06\\x1c\\x1f\\x03\\x06\\x1d\\x07\\x03\" +\n\t\"\\x0a,\\x11\\x03\\x09=\\x0d\\x03\\x09\\x0b;\\x03\\x07\\x1b/\\x03\\x0a\\x1f:\\x03\\x09 \" +\n\t\"\\x1f\\x03\\x09.\\x10\\x03\\x094\\x0b\\x03\\x09\\x1a1\\x03\\x08#\\x1a\\x03\\x084\\x1d\" +\n\t\"\\x03\\x08\\x01\\x1f\\x03\\x08\\x11\\x22\\x03\\x07'8\\x03\\x07\\x1a>\\x03\\x0757\\x03\" +\n\t\"\\x06&9\\x03\\x06+\\x11\\x03\\x0a.\\x0b\\x03\\x0a,>\\x03\\x0a4#\\x03\\x08%\\x17\\x03\" +\n\t\"\\x07\\x05\\x22\\x03\\x07\\x0c\\x0b\\x03\\x0a\\x1d+\\x03\\x0a\\x19\\x16\\x03\\x09+\\x1f\" +\n\t\"\\x03\\x09\\x08\\x0b\\x03\\x08\\x16\\x18\\x03\\x08+\\x12\\x03\\x0b\\x1d\\x0c\\x03\\x0a=\" +\n\t\"\\x10\\x03\\x0a\\x09\\x0d\\x03\\x0a\\x10\\x11\\x03\\x09&0\\x03\\x08(\\x1f\\x03\\x087\\x07\" +\n\t\"\\x03\\x08\\x185\\x03\\x07'6\\x03\\x06.\\x05\\x03\\x06=\\x04\\x03\\x06;;\\x03\\x06\\x06,\" +\n\t\"\\x03\\x0b\\x18>\\x03\\x08\\x00\\x18\\x03\\x06 \\x03\\x03\\x06<\\x00\\x03\\x09%\\x18\\x03\" +\n\t\"\\x0b\\x1c<\\x03\\x0a%!\\x03\\x0a\\x09\\x12\\x03\\x0a\\x16\\x02\\x03\\x090'\\x03\\x09\" +\n\t\"\\x0e=\\x03\\x08 \\x0e\\x03\\x08>\\x03\\x03\\x074>\\x03\\x06&?\\x03\\x06\\x19\\x09\\x03\" +\n\t\"\\x06?(\\x03\\x0a-\\x0e\\x03\\x09:3\\x03\\x098:\\x03\\x09\\x12\\x0b\\x03\\x09\\x1d\\x17\" +\n\t\"\\x03\\x087\\x05\\x03\\x082\\x14\\x03\\x08\\x06%\\x03\\x08\\x13\\x1f\\x03\\x06\\x06\\x0e\" +\n\t\"\\x03\\x0a\\x22<\\x03\\x09/<\\x03\\x06>+\\x03\\x0a'?\\x03\\x0a\\x13\\x0c\\x03\\x09\\x10<\" +\n\t\"\\x03\\x07\\x1b=\\x03\\x0a\\x19\\x13\\x03\\x09\\x22\\x1d\\x03\\x09\\x07\\x0d\\x03\\x08)\" +\n\t\"\\x1c\\x03\\x06=\\x1a\\x03\\x0a/4\\x03\\x0a7\\x11\\x03\\x0a\\x16:\\x03\\x09?3\\x03\\x09:\" +\n\t\"/\\x03\\x09\\x05\\x0a\\x03\\x09\\x14\\x06\\x03\\x087\\x22\\x03\\x080\\x07\\x03\\x08\\x1a\" +\n\t\"\\x1f\\x03\\x07\\x04(\\x03\\x07\\x04\\x09\\x03\\x06 %\\x03\\x06<\\x08\\x03\\x0a+\\x14\" +\n\t\"\\x03\\x09\\x1d\\x16\\x03\\x0a70\\x03\\x08 >\\x03\\x0857\\x03\\x070\\x0a\\x03\\x06=\\x12\" +\n\t\"\\x03\\x06\\x16%\\x03\\x06\\x1d,\\x03\\x099#\\x03\\x09\\x10>\\x03\\x07 \\x1e\\x03\\x08\" +\n\t\"\\x0c<\\x03\\x08\\x0b\\x18\\x03\\x08\\x15+\\x03\\x08,:\\x03\\x08%\\x22\\x03\\x07\\x0a$\" +\n\t\"\\x03\\x0b\\x1c=\\x03\\x07+\\x08\\x03\\x0a/\\x05\\x03\\x0a \\x07\\x03\\x0a\\x12'\\x03\" +\n\t\"\\x09#\\x11\\x03\\x08\\x1b\\x15\\x03\\x0a\\x06\\x01\\x03\\x09\\x1c\\x1b\\x03\\x0922\\x03\" +\n\t\"\\x07\\x14<\\x03\\x07\\x09\\x04\\x03\\x061\\x04\\x03\\x07\\x0e\\x01\\x03\\x0a\\x13\\x18\" +\n\t\"\\x03\\x0a-\\x0c\\x03\\x0a?\\x0d\\x03\\x0a\\x09\\x0a\\x03\\x091&\\x03\\x0a/\\x0b\\x03\" +\n\t\"\\x08$<\\x03\\x083\\x1d\\x03\\x08\\x0c$\\x03\\x08\\x0d\\x07\\x03\\x08\\x0d?\\x03\\x08\" +\n\t\"\\x0e\\x14\\x03\\x065\\x0a\\x03\\x08\\x1a#\\x03\\x08\\x16#\\x03\\x0702\\x03\\x07\\x03\" +\n\t\"\\x1a\\x03\\x06(\\x1d\\x03\\x06+\\x1b\\x03\\x06\\x0b\\x05\\x03\\x06\\x0b\\x17\\x03\\x06\" +\n\t\"\\x0c\\x04\\x03\\x06\\x1e\\x19\\x03\\x06+0\\x03\\x062\\x18\\x03\\x0b\\x16\\x1e\\x03\\x0a+\" +\n\t\"\\x16\\x03\\x0a-?\\x03\\x0a#:\\x03\\x0a#\\x10\\x03\\x0a%$\\x03\\x0a>+\\x03\\x0a01\\x03\" +\n\t\"\\x0a1\\x10\\x03\\x0a\\x099\\x03\\x0a\\x0a\\x12\\x03\\x0a\\x19\\x1f\\x03\\x0a\\x19\\x12\" +\n\t\"\\x03\\x09*)\\x03\\x09-\\x16\\x03\\x09.1\\x03\\x09.2\\x03\\x09<\\x0e\\x03\\x09> \\x03\" +\n\t\"\\x093\\x12\\x03\\x09\\x0b\\x01\\x03\\x09\\x1c2\\x03\\x09\\x11\\x1c\\x03\\x09\\x15%\\x03\" +\n\t\"\\x08,&\\x03\\x08!\\x22\\x03\\x089(\\x03\\x08\\x0b\\x1a\\x03\\x08\\x0d2\\x03\\x08\\x0c\" +\n\t\"\\x04\\x03\\x08\\x0c\\x06\\x03\\x08\\x0c\\x1f\\x03\\x08\\x0c\\x0c\\x03\\x08\\x0f\\x1f\\x03\" +\n\t\"\\x08\\x0f\\x1d\\x03\\x08\\x00\\x14\\x03\\x08\\x03\\x14\\x03\\x08\\x06\\x16\\x03\\x08\\x1e\" +\n\t\"#\\x03\\x08\\x11\\x11\\x03\\x08\\x10\\x18\\x03\\x08\\x14(\\x03\\x07)\\x1e\\x03\\x07.1\" +\n\t\"\\x03\\x07 $\\x03\\x07 '\\x03\\x078\\x08\\x03\\x07\\x0d0\\x03\\x07\\x0f7\\x03\\x07\\x05#\" +\n\t\"\\x03\\x07\\x05\\x1a\\x03\\x07\\x1a7\\x03\\x07\\x1d-\\x03\\x07\\x17\\x10\\x03\\x06)\\x1f\" +\n\t\"\\x03\\x062\\x0b\\x03\\x066\\x16\\x03\\x06\\x09\\x11\\x03\\x09(\\x1e\\x03\\x07!5\\x03\" +\n\t\"\\x0b\\x11\\x16\\x03\\x0a/\\x04\\x03\\x0a,\\x1a\\x03\\x0b\\x173\\x03\\x0a,1\\x03\\x0a/5\" +\n\t\"\\x03\\x0a\\x221\\x03\\x0a\\x22\\x0d\\x03\\x0a?%\\x03\\x0a<,\\x03\\x0a?#\\x03\\x0a>\\x19\" +\n\t\"\\x03\\x0a\\x08&\\x03\\x0a\\x0b\\x0e\\x03\\x0a\\x0c:\\x03\\x0a\\x0c+\\x03\\x0a\\x03\\x22\" +\n\t\"\\x03\\x0a\\x06)\\x03\\x0a\\x11\\x10\\x03\\x0a\\x11\\x1a\\x03\\x0a\\x17-\\x03\\x0a\\x14(\" +\n\t\"\\x03\\x09)\\x1e\\x03\\x09/\\x09\\x03\\x09.\\x00\\x03\\x09,\\x07\\x03\\x09/*\\x03\\x09-9\" +\n\t\"\\x03\\x09\\x228\\x03\\x09%\\x09\\x03\\x09:\\x12\\x03\\x09;\\x1d\\x03\\x09?\\x06\\x03\" +\n\t\"\\x093%\\x03\\x096\\x05\\x03\\x096\\x08\\x03\\x097\\x02\\x03\\x09\\x07,\\x03\\x09\\x04,\" +\n\t\"\\x03\\x09\\x1f\\x16\\x03\\x09\\x11\\x03\\x03\\x09\\x11\\x12\\x03\\x09\\x168\\x03\\x08*\" +\n\t\"\\x05\\x03\\x08/2\\x03\\x084:\\x03\\x08\\x22+\\x03\\x08 0\\x03\\x08&\\x0a\\x03\\x08;\" +\n\t\"\\x10\\x03\\x08>$\\x03\\x08>\\x18\\x03\\x0829\\x03\\x082:\\x03\\x081,\\x03\\x081<\\x03\" +\n\t\"\\x081\\x1c\\x03\\x087#\\x03\\x087*\\x03\\x08\\x09'\\x03\\x08\\x00\\x1d\\x03\\x08\\x05-\" +\n\t\"\\x03\\x08\\x1f4\\x03\\x08\\x1d\\x04\\x03\\x08\\x16\\x0f\\x03\\x07*7\\x03\\x07'!\\x03\" +\n\t\"\\x07%\\x1b\\x03\\x077\\x0c\\x03\\x07\\x0c1\\x03\\x07\\x0c.\\x03\\x07\\x00\\x06\\x03\\x07\" +\n\t\"\\x01\\x02\\x03\\x07\\x010\\x03\\x07\\x06=\\x03\\x07\\x01\\x03\\x03\\x07\\x01\\x13\\x03\" +\n\t\"\\x07\\x06\\x06\\x03\\x07\\x05\\x0a\\x03\\x07\\x1f\\x09\\x03\\x07\\x17:\\x03\\x06*1\\x03\" +\n\t\"\\x06-\\x1d\\x03\\x06\\x223\\x03\\x062:\\x03\\x060$\\x03\\x066\\x1e\\x03\\x064\\x12\\x03\" +\n\t\"\\x0645\\x03\\x06\\x0b\\x00\\x03\\x06\\x0b7\\x03\\x06\\x07\\x1f\\x03\\x06\\x15\\x12\\x03\" +\n\t\"\\x0c\\x05\\x0f\\x03\\x0b+\\x0b\\x03\\x0b+-\\x03\\x06\\x16\\x1b\\x03\\x06\\x15\\x17\\x03\" +\n\t\"\\x89\\xca\\xea\\x03\\x89\\xca\\xe8\\x03\\x0c8\\x10\\x03\\x0c8\\x01\\x03\\x0c8\\x0f\\x03\" +\n\t\"\\x0d8%\\x03\\x0d8!\\x03\\x0c8-\\x03\\x0c8/\\x03\\x0c8+\\x03\\x0c87\\x03\\x0c85\\x03\" +\n\t\"\\x0c9\\x09\\x03\\x0c9\\x0d\\x03\\x0c9\\x0f\\x03\\x0c9\\x0b\\x03\\xcfu\\x0c\\x03\\xcfu\" +\n\t\"\\x0f\\x03\\xcfu\\x0e\\x03\\xcfu\\x09\\x03\\x0c9\\x10\\x03\\x0d9\\x0c\\x03\\xcf`;\\x03\" +\n\t\"\\xcf`>\\x03\\xcf`9\\x03\\xcf`8\\x03\\xcf`7\\x03\\xcf`*\\x03\\xcf`-\\x03\\xcf`,\\x03\" +\n\t\"\\x0d\\x1b\\x1a\\x03\\x0d\\x1b&\\x03\\x0c=.\\x03\\x0c=%\\x03\\x0c>\\x1e\\x03\\x0c>\\x14\" +\n\t\"\\x03\\x0c?\\x06\\x03\\x0c?\\x0b\\x03\\x0c?\\x0c\\x03\\x0c?\\x0d\\x03\\x0c?\\x02\\x03\" +\n\t\"\\x0c>\\x0f\\x03\\x0c>\\x08\\x03\\x0c>\\x09\\x03\\x0c>,\\x03\\x0c>\\x0c\\x03\\x0c?\\x13\" +\n\t\"\\x03\\x0c?\\x16\\x03\\x0c?\\x15\\x03\\x0c?\\x1c\\x03\\x0c?\\x1f\\x03\\x0c?\\x1d\\x03\" +\n\t\"\\x0c?\\x1a\\x03\\x0c?\\x17\\x03\\x0c?\\x08\\x03\\x0c?\\x09\\x03\\x0c?\\x0e\\x03\\x0c?\" +\n\t\"\\x04\\x03\\x0c?\\x05\\x03\\x0c<?\\x03\\x0c=\\x00\\x03\\x0c=\\x06\\x03\\x0c=\\x05\\x03\" +\n\t\"\\x0c=\\x0c\\x03\\x0c=\\x0f\\x03\\x0c=\\x0d\\x03\\x0c=\\x0b\\x03\\x0c=\\x07\\x03\\x0c=\" +\n\t\"\\x19\\x03\\x0c=\\x15\\x03\\x0c=\\x11\\x03\\x0c=1\\x03\\x0c=3\\x03\\x0c=0\\x03\\x0c=>\" +\n\t\"\\x03\\x0c=2\\x03\\x0c=6\\x03\\x0c<\\x07\\x03\\x0c<\\x05\\x03\\x0e:!\\x03\\x0e:#\\x03\" +\n\t\"\\x0e8\\x09\\x03\\x0e:&\\x03\\x0e8\\x0b\\x03\\x0e:$\\x03\\x0e:,\\x03\\x0e8\\x1a\\x03\" +\n\t\"\\x0e8\\x1e\\x03\\x0e:*\\x03\\x0e:7\\x03\\x0e:5\\x03\\x0e:;\\x03\\x0e:\\x15\\x03\\x0e:<\" +\n\t\"\\x03\\x0e:4\\x03\\x0e:'\\x03\\x0e:-\\x03\\x0e:%\\x03\\x0e:?\\x03\\x0e:=\\x03\\x0e:)\" +\n\t\"\\x03\\x0e:/\\x03\\xcfs'\\x03\\x0d=\\x0f\\x03\\x0d+*\\x03\\x0d99\\x03\\x0d9;\\x03\\x0d9\" +\n\t\"?\\x03\\x0d)\\x0d\\x03\\x0d(%\\x02\\x01\\x18\\x02\\x01(\\x02\\x01\\x1e\\x03\\x0f$!\\x03\" +\n\t\"\\x0f87\\x03\\x0f4\\x0e\\x03\\x0f5\\x1d\\x03\\x06'\\x03\\x03\\x0f\\x08\\x18\\x03\\x0f\" +\n\t\"\\x0d\\x1b\\x03\\x0e2=\\x03\\x0e;\\x08\\x03\\x0e:\\x0b\\x03\\x0e\\x06$\\x03\\x0e\\x0d)\" +\n\t\"\\x03\\x0e\\x16\\x1f\\x03\\x0e\\x16\\x1b\\x03\\x0d$\\x0a\\x03\\x05,\\x1d\\x03\\x0d. \\x03\" +\n\t\"\\x0d.#\\x03\\x0c(/\\x03\\x09%\\x02\\x03\\x0d90\\x03\\x0d\\x0e4\\x03\\x0d\\x0d\\x0f\\x03\" +\n\t\"\\x0c#\\x00\\x03\\x0c,\\x1e\\x03\\x0c2\\x0e\\x03\\x0c\\x01\\x17\\x03\\x0c\\x09:\\x03\\x0e\" +\n\t\"\\x173\\x03\\x0c\\x08\\x03\\x03\\x0c\\x11\\x07\\x03\\x0c\\x10\\x18\\x03\\x0c\\x1f\\x1c\" +\n\t\"\\x03\\x0c\\x19\\x0e\\x03\\x0c\\x1a\\x1f\\x03\\x0f0>\\x03\\x0b->\\x03\\x0b<+\\x03\\x0b8\" +\n\t\"\\x13\\x03\\x0b\\x043\\x03\\x0b\\x14\\x03\\x03\\x0b\\x16%\\x03\\x0d\\x22&\\x03\\x0b\\x1a\" +\n\t\"\\x1a\\x03\\x0b\\x1a\\x04\\x03\\x0a%9\\x03\\x0a&2\\x03\\x0a&0\\x03\\x0a!\\x1a\\x03\\x0a!\" +\n\t\"7\\x03\\x0a5\\x10\\x03\\x0a=4\\x03\\x0a?\\x0e\\x03\\x0a>\\x10\\x03\\x0a\\x00 \\x03\\x0a\" +\n\t\"\\x0f:\\x03\\x0a\\x0f9\\x03\\x0a\\x0b\\x0a\\x03\\x0a\\x17%\\x03\\x0a\\x1b-\\x03\\x09-\" +\n\t\"\\x1a\\x03\\x09,4\\x03\\x09.,\\x03\\x09)\\x09\\x03\\x096!\\x03\\x091\\x1f\\x03\\x093\" +\n\t\"\\x16\\x03\\x0c+\\x1f\\x03\\x098 \\x03\\x098=\\x03\\x0c(\\x1a\\x03\\x0c(\\x16\\x03\\x09\" +\n\t\"\\x0a+\\x03\\x09\\x16\\x12\\x03\\x09\\x13\\x0e\\x03\\x09\\x153\\x03\\x08)!\\x03\\x09\\x1a\" +\n\t\"\\x01\\x03\\x09\\x18\\x01\\x03\\x08%#\\x03\\x08>\\x22\\x03\\x08\\x05%\\x03\\x08\\x02*\" +\n\t\"\\x03\\x08\\x15;\\x03\\x08\\x1b7\\x03\\x0f\\x07\\x1d\\x03\\x0f\\x04\\x03\\x03\\x070\\x0c\" +\n\t\"\\x03\\x07;\\x0b\\x03\\x07\\x08\\x17\\x03\\x07\\x12\\x06\\x03\\x06/-\\x03\\x0671\\x03\" +\n\t\"\\x065+\\x03\\x06>7\\x03\\x06\\x049\\x03\\x05+\\x1e\\x03\\x05,\\x17\\x03\\x05 \\x1d\\x03\" +\n\t\"\\x05\\x22\\x05\\x03\\x050\\x1d\"\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// idnaTrie. Total size: 30196 bytes (29.49 KiB). Checksum: e2ae95a945f04016.\ntype idnaTrie struct{}\n\nfunc newIdnaTrie(i int) *idnaTrie {\n\treturn &idnaTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *idnaTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 126:\n\t\treturn uint16(idnaValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 126\n\t\treturn uint16(idnaSparse.lookup(n, b))\n\t}\n}\n\n// idnaValues: 128 blocks, 8192 entries, 16384 bytes\n// The third block is the zero block.\nvar idnaValues = [8192]uint16{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080,\n\t0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080,\n\t0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080,\n\t0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080,\n\t0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080,\n\t0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080,\n\t0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080,\n\t0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080,\n\t0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008,\n\t0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080,\n\t0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105,\n\t0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105,\n\t0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105,\n\t0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105,\n\t0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080,\n\t0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008,\n\t0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008,\n\t0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008,\n\t0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008,\n\t0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080,\n\t0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040,\n\t0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040,\n\t0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040,\n\t0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040,\n\t0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040,\n\t0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018,\n\t0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x0012, 0xe9: 0x0018,\n\t0xea: 0x0019, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x0022,\n\t0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0029, 0xf3: 0x0031, 0xf4: 0x003a, 0xf5: 0x0005,\n\t0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x0042, 0xf9: 0x0049, 0xfa: 0x0051, 0xfb: 0x0018,\n\t0xfc: 0x0059, 0xfd: 0x0061, 0xfe: 0x0069, 0xff: 0x0018,\n\t// Block 0x4, offset 0x100\n\t0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008,\n\t0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008,\n\t0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008,\n\t0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008,\n\t0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008,\n\t0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008,\n\t0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008,\n\t0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008,\n\t0x130: 0x0071, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008,\n\t0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d,\n\t0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0079,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x0079, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d,\n\t0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x0081, 0x14a: 0xe00d, 0x14b: 0x0008,\n\t0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008,\n\t0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008,\n\t0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008,\n\t0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008,\n\t0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008,\n\t0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008,\n\t0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008,\n\t0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d,\n\t0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x0089,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008,\n\t0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d,\n\t0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d,\n\t0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d,\n\t0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155,\n\t0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008,\n\t0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d,\n\t0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd,\n\t0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d,\n\t0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008,\n\t0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x0091, 0x1c5: 0x0091,\n\t0x1c6: 0x0091, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d,\n\t0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d,\n\t0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d,\n\t0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008,\n\t0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008,\n\t0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008,\n\t0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008,\n\t0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008,\n\t0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008,\n\t0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008,\n\t0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008,\n\t0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008,\n\t0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008,\n\t0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008,\n\t0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008,\n\t0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008,\n\t0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008,\n\t0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008,\n\t0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0099, 0x23b: 0xe03d,\n\t0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x00a1, 0x23f: 0x0008,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018,\n\t0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008,\n\t0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008,\n\t0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018,\n\t0x258: 0x00d2, 0x259: 0x00da, 0x25a: 0x00e2, 0x25b: 0x00ea, 0x25c: 0x00f2, 0x25d: 0x00fa,\n\t0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0101, 0x262: 0x0089, 0x263: 0x0109,\n\t0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018,\n\t0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018,\n\t0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018,\n\t0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018,\n\t0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0111, 0x285: 0x040d,\n\t0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308,\n\t0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308,\n\t0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308,\n\t0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308,\n\t0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308,\n\t0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308,\n\t0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308,\n\t0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008,\n\t0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x011a, 0x2bb: 0x0008,\n\t0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x0122, 0x2bf: 0x043d,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x003a, 0x2c5: 0x012a,\n\t0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040,\n\t0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105,\n\t0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105,\n\t0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105,\n\t0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d,\n\t0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d,\n\t0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008,\n\t0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008,\n\t0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008,\n\t0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008,\n\t0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008,\n\t0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd,\n\t0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008,\n\t0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008,\n\t0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008,\n\t0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008,\n\t0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008,\n\t0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd,\n\t0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008,\n\t0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008,\n\t0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008,\n\t0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008,\n\t0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008,\n\t0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008,\n\t0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008,\n\t0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008,\n\t0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008,\n\t0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008,\n\t0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008,\n\t0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308,\n\t0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008,\n\t0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008,\n\t0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008,\n\t0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008,\n\t0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008,\n\t0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008,\n\t0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008,\n\t0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008,\n\t0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008,\n\t0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d,\n\t0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d,\n\t0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008,\n\t0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008,\n\t0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008,\n\t0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008,\n\t0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008,\n\t0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008,\n\t0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008,\n\t0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008,\n\t0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008,\n\t0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008,\n\t0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008,\n\t0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008,\n\t0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008,\n\t0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008,\n\t0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008,\n\t0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008,\n\t0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5,\n\t0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5,\n\t0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840,\n\t0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818,\n\t0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308,\n\t0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308,\n\t0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040,\n\t0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08,\n\t0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08,\n\t0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08,\n\t0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08,\n\t0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08,\n\t0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08,\n\t0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308,\n\t0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308,\n\t0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308,\n\t0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308,\n\t0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808,\n\t0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808,\n\t0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08,\n\t0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0139,\n\t0x4b6: 0x0141, 0x4b7: 0x0149, 0x4b8: 0x0151, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08,\n\t0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08,\n\t0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08,\n\t0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08,\n\t0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308,\n\t0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840,\n\t0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308,\n\t0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018,\n\t0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08,\n\t0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008,\n\t0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08,\n\t0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818,\n\t0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818,\n\t0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308,\n\t0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08,\n\t0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08,\n\t0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08,\n\t0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08,\n\t0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08,\n\t0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308,\n\t0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308,\n\t0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08,\n\t0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08,\n\t0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08,\n\t0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0c08, 0x557: 0x0c08,\n\t0x558: 0x0c08, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040,\n\t0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08,\n\t0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08,\n\t0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040,\n\t0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040,\n\t0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040,\n\t0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308,\n\t0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008,\n\t0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308,\n\t0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308,\n\t0x598: 0x0159, 0x599: 0x0161, 0x59a: 0x0169, 0x59b: 0x0171, 0x59c: 0x0179, 0x59d: 0x0181,\n\t0x59e: 0x0189, 0x59f: 0x0191, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308,\n\t0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008,\n\t0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008,\n\t0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008,\n\t0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008,\n\t0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008,\n\t0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008,\n\t0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040,\n\t0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008,\n\t0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008,\n\t0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008,\n\t0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040,\n\t0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008,\n\t0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040,\n\t0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040,\n\t0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040,\n\t0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008,\n\t0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040,\n\t0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008,\n\t0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0199, 0x61d: 0x01a1,\n\t0x61e: 0x0040, 0x61f: 0x01a9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308,\n\t0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008,\n\t0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008,\n\t0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018,\n\t0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018,\n\t0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x3308, 0x63f: 0x0040,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008,\n\t0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040,\n\t0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040,\n\t0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008,\n\t0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008,\n\t0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008,\n\t0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040,\n\t0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008,\n\t0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x01b1, 0x674: 0x0040, 0x675: 0x0008,\n\t0x676: 0x01b9, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040,\n\t0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040,\n\t0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308,\n\t0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308,\n\t0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040,\n\t0x698: 0x0040, 0x699: 0x01c1, 0x69a: 0x01c9, 0x69b: 0x01d1, 0x69c: 0x0008, 0x69d: 0x0040,\n\t0x69e: 0x01d9, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040,\n\t0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008,\n\t0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008,\n\t0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308,\n\t0x6b6: 0x0018, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040,\n\t0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008,\n\t0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008,\n\t0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008,\n\t0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008,\n\t0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008,\n\t0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008,\n\t0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040,\n\t0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008,\n\t0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008,\n\t0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040,\n\t0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308,\n\t0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008,\n\t0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040,\n\t0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040,\n\t0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040,\n\t0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308,\n\t0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008,\n\t0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008,\n\t0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040,\n\t0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308,\n\t0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008,\n\t0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008,\n\t0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040,\n\t0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008,\n\t0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008,\n\t0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008,\n\t0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040,\n\t0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008,\n\t0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008,\n\t0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040,\n\t0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040,\n\t0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008,\n\t0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040,\n\t0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x3308, 0x796: 0x3308, 0x797: 0x3008,\n\t0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x01e1, 0x79d: 0x01e9,\n\t0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308,\n\t0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008,\n\t0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008,\n\t0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018,\n\t0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040,\n\t0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008,\n\t0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040,\n\t0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040,\n\t0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040,\n\t0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040,\n\t0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008,\n\t0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008,\n\t0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008,\n\t0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008,\n\t0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040,\n\t0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040,\n\t0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308,\n\t0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040,\n\t0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040,\n\t0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040,\n\t0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308,\n\t0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008,\n\t0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008,\n\t0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040,\n\t0x836: 0x0040, 0x837: 0x0018, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018,\n\t0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0018, 0x845: 0x0008,\n\t0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008,\n\t0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040,\n\t0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008,\n\t0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008,\n\t0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008,\n\t0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040,\n\t0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008,\n\t0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008,\n\t0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040,\n\t0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040,\n\t0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008,\n\t0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040,\n\t0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040,\n\t0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040,\n\t0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308,\n\t0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008,\n\t0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008,\n\t0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040,\n\t0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040,\n\t0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040,\n\t0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008,\n\t0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040,\n\t0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008,\n\t0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018,\n\t0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308,\n\t0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008,\n\t0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008,\n\t0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018,\n\t0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008,\n\t0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040,\n\t0x906: 0x0008, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0008, 0x90a: 0x0008, 0x90b: 0x0040,\n\t0x90c: 0x0008, 0x90d: 0x0008, 0x90e: 0x0008, 0x90f: 0x0008, 0x910: 0x0008, 0x911: 0x0008,\n\t0x912: 0x0008, 0x913: 0x0008, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008,\n\t0x918: 0x0008, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008,\n\t0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0008, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008,\n\t0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0008, 0x929: 0x0008,\n\t0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0008, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008,\n\t0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x01f9, 0x934: 0x3308, 0x935: 0x3308,\n\t0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x3b08, 0x93b: 0x3308,\n\t0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x0211, 0x944: 0x0008, 0x945: 0x0008,\n\t0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008,\n\t0x94c: 0x0008, 0x94d: 0x0219, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008,\n\t0x952: 0x0221, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0229,\n\t0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0231, 0x95d: 0x0008,\n\t0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008,\n\t0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0239,\n\t0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040,\n\t0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0241, 0x974: 0x3308, 0x975: 0x0249,\n\t0x976: 0x0251, 0x977: 0x0259, 0x978: 0x0261, 0x979: 0x0269, 0x97a: 0x3308, 0x97b: 0x3308,\n\t0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x3308, 0x981: 0x0271, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018,\n\t0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008,\n\t0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308,\n\t0x992: 0x3308, 0x993: 0x0279, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308,\n\t0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0281,\n\t0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0289, 0x9a3: 0x3308,\n\t0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0291, 0x9a8: 0x3308, 0x9a9: 0x3308,\n\t0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0299, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308,\n\t0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308,\n\t0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x02a1, 0x9ba: 0x3308, 0x9bb: 0x3308,\n\t0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008,\n\t0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008,\n\t0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008,\n\t0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008,\n\t0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008,\n\t0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008,\n\t0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008,\n\t0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0019, 0x9ed: 0x02e1, 0x9ee: 0x02e9, 0x9ef: 0x0008,\n\t0x9f0: 0x02f1, 0x9f1: 0x02f9, 0x9f2: 0x0301, 0x9f3: 0x0309, 0x9f4: 0x00a9, 0x9f5: 0x0311,\n\t0x9f6: 0x00b1, 0x9f7: 0x0319, 0x9f8: 0x0101, 0x9f9: 0x0321, 0x9fa: 0x0329, 0x9fb: 0x0008,\n\t0x9fc: 0x0051, 0x9fd: 0x0331, 0x9fe: 0x0339, 0x9ff: 0x00b9,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0341, 0xa01: 0x0349, 0xa02: 0x00c1, 0xa03: 0x0019, 0xa04: 0x0351, 0xa05: 0x0359,\n\t0xa06: 0x05b5, 0xa07: 0x02e9, 0xa08: 0x02f1, 0xa09: 0x02f9, 0xa0a: 0x0361, 0xa0b: 0x0369,\n\t0xa0c: 0x0371, 0xa0d: 0x0309, 0xa0e: 0x0008, 0xa0f: 0x0319, 0xa10: 0x0321, 0xa11: 0x0379,\n\t0xa12: 0x0051, 0xa13: 0x0381, 0xa14: 0x05cd, 0xa15: 0x05cd, 0xa16: 0x0339, 0xa17: 0x0341,\n\t0xa18: 0x0349, 0xa19: 0x05b5, 0xa1a: 0x0389, 0xa1b: 0x0391, 0xa1c: 0x05e5, 0xa1d: 0x0399,\n\t0xa1e: 0x03a1, 0xa1f: 0x03a9, 0xa20: 0x03b1, 0xa21: 0x03b9, 0xa22: 0x0311, 0xa23: 0x00b9,\n\t0xa24: 0x0349, 0xa25: 0x0391, 0xa26: 0x0399, 0xa27: 0x03a1, 0xa28: 0x03c1, 0xa29: 0x03b1,\n\t0xa2a: 0x03b9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008,\n\t0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008,\n\t0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x03c9, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008,\n\t0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008,\n\t0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008,\n\t0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008,\n\t0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008,\n\t0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x03d1, 0xa5c: 0x03d9, 0xa5d: 0x03e1,\n\t0xa5e: 0x03e9, 0xa5f: 0x0371, 0xa60: 0x03f1, 0xa61: 0x03f9, 0xa62: 0x0401, 0xa63: 0x0409,\n\t0xa64: 0x0411, 0xa65: 0x0419, 0xa66: 0x0421, 0xa67: 0x05fd, 0xa68: 0x0429, 0xa69: 0x0431,\n\t0xa6a: 0xe17d, 0xa6b: 0x0439, 0xa6c: 0x0441, 0xa6d: 0x0449, 0xa6e: 0x0451, 0xa6f: 0x0459,\n\t0xa70: 0x0461, 0xa71: 0x0469, 0xa72: 0x0471, 0xa73: 0x0479, 0xa74: 0x0481, 0xa75: 0x0489,\n\t0xa76: 0x0491, 0xa77: 0x0499, 0xa78: 0x0615, 0xa79: 0x04a1, 0xa7a: 0x04a9, 0xa7b: 0x04b1,\n\t0xa7c: 0x04b9, 0xa7d: 0x04c1, 0xa7e: 0x04c9, 0xa7f: 0x04d1,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008,\n\t0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008,\n\t0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008,\n\t0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008,\n\t0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008,\n\t0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008,\n\t0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008,\n\t0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008,\n\t0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008,\n\t0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008,\n\t0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008,\n\t0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008,\n\t0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008,\n\t0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008,\n\t0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x062d, 0xadb: 0x064d, 0xadc: 0x0008, 0xadd: 0x0008,\n\t0xade: 0x04d9, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008,\n\t0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008,\n\t0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008,\n\t0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008,\n\t0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008,\n\t0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008,\n\t0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045,\n\t0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008,\n\t0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008,\n\t0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045,\n\t0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008,\n\t0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045,\n\t0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045,\n\t0xb30: 0x0008, 0xb31: 0x04e1, 0xb32: 0x0008, 0xb33: 0x04e9, 0xb34: 0x0008, 0xb35: 0x04f1,\n\t0xb36: 0x0008, 0xb37: 0x04f9, 0xb38: 0x0008, 0xb39: 0x0501, 0xb3a: 0x0008, 0xb3b: 0x0509,\n\t0xb3c: 0x0008, 0xb3d: 0x0511, 0xb3e: 0x0040, 0xb3f: 0x0040,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x0519, 0xb41: 0x0521, 0xb42: 0x0529, 0xb43: 0x0531, 0xb44: 0x0539, 0xb45: 0x0541,\n\t0xb46: 0x0549, 0xb47: 0x0551, 0xb48: 0x0519, 0xb49: 0x0521, 0xb4a: 0x0529, 0xb4b: 0x0531,\n\t0xb4c: 0x0539, 0xb4d: 0x0541, 0xb4e: 0x0549, 0xb4f: 0x0551, 0xb50: 0x0559, 0xb51: 0x0561,\n\t0xb52: 0x0569, 0xb53: 0x0571, 0xb54: 0x0579, 0xb55: 0x0581, 0xb56: 0x0589, 0xb57: 0x0591,\n\t0xb58: 0x0559, 0xb59: 0x0561, 0xb5a: 0x0569, 0xb5b: 0x0571, 0xb5c: 0x0579, 0xb5d: 0x0581,\n\t0xb5e: 0x0589, 0xb5f: 0x0591, 0xb60: 0x0599, 0xb61: 0x05a1, 0xb62: 0x05a9, 0xb63: 0x05b1,\n\t0xb64: 0x05b9, 0xb65: 0x05c1, 0xb66: 0x05c9, 0xb67: 0x05d1, 0xb68: 0x0599, 0xb69: 0x05a1,\n\t0xb6a: 0x05a9, 0xb6b: 0x05b1, 0xb6c: 0x05b9, 0xb6d: 0x05c1, 0xb6e: 0x05c9, 0xb6f: 0x05d1,\n\t0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x05d9, 0xb73: 0x05e1, 0xb74: 0x05e9, 0xb75: 0x0040,\n\t0xb76: 0x0008, 0xb77: 0x05f1, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x0665, 0xb7b: 0x04e1,\n\t0xb7c: 0x05e1, 0xb7d: 0x067e, 0xb7e: 0x05f9, 0xb7f: 0x069e,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x06be, 0xb81: 0x0602, 0xb82: 0x0609, 0xb83: 0x0611, 0xb84: 0x0619, 0xb85: 0x0040,\n\t0xb86: 0x0008, 0xb87: 0x0621, 0xb88: 0x06dd, 0xb89: 0x04e9, 0xb8a: 0x06f5, 0xb8b: 0x04f1,\n\t0xb8c: 0x0611, 0xb8d: 0x062a, 0xb8e: 0x0632, 0xb8f: 0x063a, 0xb90: 0x0008, 0xb91: 0x0008,\n\t0xb92: 0x0008, 0xb93: 0x0641, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008,\n\t0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x070d, 0xb9b: 0x04f9, 0xb9c: 0x0040, 0xb9d: 0x064a,\n\t0xb9e: 0x0652, 0xb9f: 0x065a, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x0661,\n\t0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045,\n\t0xbaa: 0x0725, 0xbab: 0x0509, 0xbac: 0xe04d, 0xbad: 0x066a, 0xbae: 0x012a, 0xbaf: 0x0672,\n\t0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x0679, 0xbb3: 0x0681, 0xbb4: 0x0689, 0xbb5: 0x0040,\n\t0xbb6: 0x0008, 0xbb7: 0x0691, 0xbb8: 0x073d, 0xbb9: 0x0501, 0xbba: 0x0515, 0xbbb: 0x0511,\n\t0xbbc: 0x0681, 0xbbd: 0x0756, 0xbbe: 0x0776, 0xbbf: 0x0040,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a,\n\t0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0,\n\t0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d,\n\t0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x0796,\n\t0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018,\n\t0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018,\n\t0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040,\n\t0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a,\n\t0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x0699, 0xbf4: 0x06a1, 0xbf5: 0x0018,\n\t0xbf6: 0x06a9, 0xbf7: 0x06b1, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018,\n\t0xbfc: 0x06ba, 0xbfd: 0x0018, 0xbfe: 0x07b6, 0xbff: 0x0018,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018,\n\t0xc06: 0x0018, 0xc07: 0x06c2, 0xc08: 0x06ca, 0xc09: 0x06d2, 0xc0a: 0x0018, 0xc0b: 0x0018,\n\t0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018,\n\t0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x06d9,\n\t0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018,\n\t0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340,\n\t0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040,\n\t0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340,\n\t0xc30: 0x06e1, 0xc31: 0x0311, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x06e9, 0xc35: 0x06f1,\n\t0xc36: 0x06f9, 0xc37: 0x0701, 0xc38: 0x0709, 0xc39: 0x0711, 0xc3a: 0x071a, 0xc3b: 0x07d5,\n\t0xc3c: 0x0722, 0xc3d: 0x072a, 0xc3e: 0x0732, 0xc3f: 0x0329,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x06e1, 0xc41: 0x0049, 0xc42: 0x0029, 0xc43: 0x0031, 0xc44: 0x06e9, 0xc45: 0x06f1,\n\t0xc46: 0x06f9, 0xc47: 0x0701, 0xc48: 0x0709, 0xc49: 0x0711, 0xc4a: 0x071a, 0xc4b: 0x07ed,\n\t0xc4c: 0x0722, 0xc4d: 0x072a, 0xc4e: 0x0732, 0xc4f: 0x0040, 0xc50: 0x0019, 0xc51: 0x02f9,\n\t0xc52: 0x0051, 0xc53: 0x0109, 0xc54: 0x0361, 0xc55: 0x00a9, 0xc56: 0x0319, 0xc57: 0x0101,\n\t0xc58: 0x0321, 0xc59: 0x0329, 0xc5a: 0x0339, 0xc5b: 0x0089, 0xc5c: 0x0341, 0xc5d: 0x0040,\n\t0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018,\n\t0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x0739, 0xc69: 0x0018,\n\t0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018,\n\t0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018,\n\t0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018,\n\t0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x0806, 0xc81: 0x0826, 0xc82: 0x03d9, 0xc83: 0x0845, 0xc84: 0x0018, 0xc85: 0x0866,\n\t0xc86: 0x0886, 0xc87: 0x0369, 0xc88: 0x0018, 0xc89: 0x08a5, 0xc8a: 0x0309, 0xc8b: 0x00a9,\n\t0xc8c: 0x00a9, 0xc8d: 0x00a9, 0xc8e: 0x00a9, 0xc8f: 0x0741, 0xc90: 0x0311, 0xc91: 0x0311,\n\t0xc92: 0x0101, 0xc93: 0x0101, 0xc94: 0x0018, 0xc95: 0x0329, 0xc96: 0x0749, 0xc97: 0x0018,\n\t0xc98: 0x0018, 0xc99: 0x0339, 0xc9a: 0x0751, 0xc9b: 0x00b9, 0xc9c: 0x00b9, 0xc9d: 0x00b9,\n\t0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x0759, 0xca1: 0x08c5, 0xca2: 0x0761, 0xca3: 0x0018,\n\t0xca4: 0x04b1, 0xca5: 0x0018, 0xca6: 0x0769, 0xca7: 0x0018, 0xca8: 0x04b1, 0xca9: 0x0018,\n\t0xcaa: 0x0319, 0xcab: 0x0771, 0xcac: 0x02e9, 0xcad: 0x03d9, 0xcae: 0x0018, 0xcaf: 0x02f9,\n\t0xcb0: 0x02f9, 0xcb1: 0x03f1, 0xcb2: 0x0040, 0xcb3: 0x0321, 0xcb4: 0x0051, 0xcb5: 0x0779,\n\t0xcb6: 0x0781, 0xcb7: 0x0789, 0xcb8: 0x0791, 0xcb9: 0x0311, 0xcba: 0x0018, 0xcbb: 0x08e5,\n\t0xcbc: 0x0799, 0xcbd: 0x03a1, 0xcbe: 0x03a1, 0xcbf: 0x0799,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x0905, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x02f1,\n\t0xcc6: 0x02f1, 0xcc7: 0x02f9, 0xcc8: 0x0311, 0xcc9: 0x00b1, 0xcca: 0x0018, 0xccb: 0x0018,\n\t0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x07a1, 0xcd1: 0x07a9,\n\t0xcd2: 0x07b1, 0xcd3: 0x07b9, 0xcd4: 0x07c1, 0xcd5: 0x07c9, 0xcd6: 0x07d1, 0xcd7: 0x07d9,\n\t0xcd8: 0x07e1, 0xcd9: 0x07e9, 0xcda: 0x07f1, 0xcdb: 0x07f9, 0xcdc: 0x0801, 0xcdd: 0x0809,\n\t0xcde: 0x0811, 0xcdf: 0x0819, 0xce0: 0x0311, 0xce1: 0x0821, 0xce2: 0x091d, 0xce3: 0x0829,\n\t0xce4: 0x0391, 0xce5: 0x0831, 0xce6: 0x093d, 0xce7: 0x0839, 0xce8: 0x0841, 0xce9: 0x0109,\n\t0xcea: 0x0849, 0xceb: 0x095d, 0xcec: 0x0101, 0xced: 0x03d9, 0xcee: 0x02f1, 0xcef: 0x0321,\n\t0xcf0: 0x0311, 0xcf1: 0x0821, 0xcf2: 0x097d, 0xcf3: 0x0829, 0xcf4: 0x0391, 0xcf5: 0x0831,\n\t0xcf6: 0x099d, 0xcf7: 0x0839, 0xcf8: 0x0841, 0xcf9: 0x0109, 0xcfa: 0x0849, 0xcfb: 0x09bd,\n\t0xcfc: 0x0101, 0xcfd: 0x03d9, 0xcfe: 0x02f1, 0xcff: 0x0321,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018,\n\t0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040,\n\t0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040,\n\t0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040,\n\t0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040,\n\t0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x0049, 0xd21: 0x0029, 0xd22: 0x0031, 0xd23: 0x06e9,\n\t0xd24: 0x06f1, 0xd25: 0x06f9, 0xd26: 0x0701, 0xd27: 0x0709, 0xd28: 0x0711, 0xd29: 0x0879,\n\t0xd2a: 0x0881, 0xd2b: 0x0889, 0xd2c: 0x0891, 0xd2d: 0x0899, 0xd2e: 0x08a1, 0xd2f: 0x08a9,\n\t0xd30: 0x08b1, 0xd31: 0x08b9, 0xd32: 0x08c1, 0xd33: 0x08c9, 0xd34: 0x0a1e, 0xd35: 0x0a3e,\n\t0xd36: 0x0a5e, 0xd37: 0x0a7e, 0xd38: 0x0a9e, 0xd39: 0x0abe, 0xd3a: 0x0ade, 0xd3b: 0x0afe,\n\t0xd3c: 0x0b1e, 0xd3d: 0x08d2, 0xd3e: 0x08da, 0xd3f: 0x08e2,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x08ea, 0xd41: 0x08f2, 0xd42: 0x08fa, 0xd43: 0x0902, 0xd44: 0x090a, 0xd45: 0x0912,\n\t0xd46: 0x091a, 0xd47: 0x0922, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040,\n\t0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040,\n\t0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040,\n\t0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b3e, 0xd5d: 0x0b5e,\n\t0xd5e: 0x0b7e, 0xd5f: 0x0b9e, 0xd60: 0x0bbe, 0xd61: 0x0bde, 0xd62: 0x0bfe, 0xd63: 0x0c1e,\n\t0xd64: 0x0c3e, 0xd65: 0x0c5e, 0xd66: 0x0c7e, 0xd67: 0x0c9e, 0xd68: 0x0cbe, 0xd69: 0x0cde,\n\t0xd6a: 0x0cfe, 0xd6b: 0x0d1e, 0xd6c: 0x0d3e, 0xd6d: 0x0d5e, 0xd6e: 0x0d7e, 0xd6f: 0x0d9e,\n\t0xd70: 0x0dbe, 0xd71: 0x0dde, 0xd72: 0x0dfe, 0xd73: 0x0e1e, 0xd74: 0x0e3e, 0xd75: 0x0e5e,\n\t0xd76: 0x0019, 0xd77: 0x02e9, 0xd78: 0x03d9, 0xd79: 0x02f1, 0xd7a: 0x02f9, 0xd7b: 0x03f1,\n\t0xd7c: 0x0309, 0xd7d: 0x00a9, 0xd7e: 0x0311, 0xd7f: 0x00b1,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0319, 0xd81: 0x0101, 0xd82: 0x0321, 0xd83: 0x0329, 0xd84: 0x0051, 0xd85: 0x0339,\n\t0xd86: 0x0751, 0xd87: 0x00b9, 0xd88: 0x0089, 0xd89: 0x0341, 0xd8a: 0x0349, 0xd8b: 0x0391,\n\t0xd8c: 0x00c1, 0xd8d: 0x0109, 0xd8e: 0x00c9, 0xd8f: 0x04b1, 0xd90: 0x0019, 0xd91: 0x02e9,\n\t0xd92: 0x03d9, 0xd93: 0x02f1, 0xd94: 0x02f9, 0xd95: 0x03f1, 0xd96: 0x0309, 0xd97: 0x00a9,\n\t0xd98: 0x0311, 0xd99: 0x00b1, 0xd9a: 0x0319, 0xd9b: 0x0101, 0xd9c: 0x0321, 0xd9d: 0x0329,\n\t0xd9e: 0x0051, 0xd9f: 0x0339, 0xda0: 0x0751, 0xda1: 0x00b9, 0xda2: 0x0089, 0xda3: 0x0341,\n\t0xda4: 0x0349, 0xda5: 0x0391, 0xda6: 0x00c1, 0xda7: 0x0109, 0xda8: 0x00c9, 0xda9: 0x04b1,\n\t0xdaa: 0x06e1, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018,\n\t0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018,\n\t0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018,\n\t0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008,\n\t0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008,\n\t0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008,\n\t0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008,\n\t0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008,\n\t0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x0941, 0xde3: 0x0ed5,\n\t0xde4: 0x0949, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d,\n\t0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0359, 0xdee: 0x0441, 0xdef: 0x0351,\n\t0xdf0: 0x03d1, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d,\n\t0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008,\n\t0xdfc: 0x00b1, 0xdfd: 0x0391, 0xdfe: 0x0951, 0xdff: 0x0959,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008,\n\t0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008,\n\t0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008,\n\t0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008,\n\t0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008,\n\t0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008,\n\t0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018,\n\t0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308,\n\t0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040,\n\t0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018,\n\t0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x2715, 0xe41: 0x2735, 0xe42: 0x2755, 0xe43: 0x2775, 0xe44: 0x2795, 0xe45: 0x27b5,\n\t0xe46: 0x27d5, 0xe47: 0x27f5, 0xe48: 0x2815, 0xe49: 0x2835, 0xe4a: 0x2855, 0xe4b: 0x2875,\n\t0xe4c: 0x2895, 0xe4d: 0x28b5, 0xe4e: 0x28d5, 0xe4f: 0x28f5, 0xe50: 0x2915, 0xe51: 0x2935,\n\t0xe52: 0x2955, 0xe53: 0x2975, 0xe54: 0x2995, 0xe55: 0x29b5, 0xe56: 0x0040, 0xe57: 0x0040,\n\t0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040,\n\t0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040,\n\t0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040,\n\t0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040,\n\t0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040,\n\t0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040,\n\t0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x0961, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008,\n\t0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018,\n\t0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018,\n\t0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018,\n\t0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018,\n\t0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018,\n\t0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018,\n\t0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018,\n\t0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018,\n\t0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29d5, 0xeb9: 0x29f5, 0xeba: 0x2a15, 0xebb: 0x0018,\n\t0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x2b55, 0xec1: 0x2b75, 0xec2: 0x2b95, 0xec3: 0x2bb5, 0xec4: 0x2bd5, 0xec5: 0x2bf5,\n\t0xec6: 0x2bf5, 0xec7: 0x2bf5, 0xec8: 0x2c15, 0xec9: 0x2c15, 0xeca: 0x2c15, 0xecb: 0x2c15,\n\t0xecc: 0x2c35, 0xecd: 0x2c35, 0xece: 0x2c35, 0xecf: 0x2c55, 0xed0: 0x2c75, 0xed1: 0x2c75,\n\t0xed2: 0x2a95, 0xed3: 0x2a95, 0xed4: 0x2c75, 0xed5: 0x2c75, 0xed6: 0x2c95, 0xed7: 0x2c95,\n\t0xed8: 0x2c75, 0xed9: 0x2c75, 0xeda: 0x2a95, 0xedb: 0x2a95, 0xedc: 0x2c75, 0xedd: 0x2c75,\n\t0xede: 0x2c55, 0xedf: 0x2c55, 0xee0: 0x2cb5, 0xee1: 0x2cb5, 0xee2: 0x2cd5, 0xee3: 0x2cd5,\n\t0xee4: 0x0040, 0xee5: 0x2cf5, 0xee6: 0x2d15, 0xee7: 0x2d35, 0xee8: 0x2d35, 0xee9: 0x2d55,\n\t0xeea: 0x2d75, 0xeeb: 0x2d95, 0xeec: 0x2db5, 0xeed: 0x2dd5, 0xeee: 0x2df5, 0xeef: 0x2e15,\n\t0xef0: 0x2e35, 0xef1: 0x2e55, 0xef2: 0x2e55, 0xef3: 0x2e75, 0xef4: 0x2e95, 0xef5: 0x2e95,\n\t0xef6: 0x2eb5, 0xef7: 0x2ed5, 0xef8: 0x2e75, 0xef9: 0x2ef5, 0xefa: 0x2f15, 0xefb: 0x2ef5,\n\t0xefc: 0x2e75, 0xefd: 0x2f35, 0xefe: 0x2f55, 0xeff: 0x2f75,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x2f95, 0xf01: 0x2fb5, 0xf02: 0x2d15, 0xf03: 0x2cf5, 0xf04: 0x2fd5, 0xf05: 0x2ff5,\n\t0xf06: 0x3015, 0xf07: 0x3035, 0xf08: 0x3055, 0xf09: 0x3075, 0xf0a: 0x3095, 0xf0b: 0x30b5,\n\t0xf0c: 0x30d5, 0xf0d: 0x30f5, 0xf0e: 0x3115, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018,\n\t0xf12: 0x3135, 0xf13: 0x3155, 0xf14: 0x3175, 0xf15: 0x3195, 0xf16: 0x31b5, 0xf17: 0x31d5,\n\t0xf18: 0x31f5, 0xf19: 0x3215, 0xf1a: 0x3235, 0xf1b: 0x3255, 0xf1c: 0x3175, 0xf1d: 0x3275,\n\t0xf1e: 0x3295, 0xf1f: 0x32b5, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008,\n\t0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008,\n\t0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008,\n\t0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008,\n\t0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0008,\n\t0xf3c: 0x0008, 0xf3d: 0x0008, 0xf3e: 0x0008, 0xf3f: 0x0008,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x0b82, 0xf41: 0x0b8a, 0xf42: 0x0b92, 0xf43: 0x0b9a, 0xf44: 0x32d5, 0xf45: 0x32f5,\n\t0xf46: 0x3315, 0xf47: 0x3335, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018,\n\t0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x3355, 0xf51: 0x0ba1,\n\t0xf52: 0x0ba9, 0xf53: 0x0bb1, 0xf54: 0x0bb9, 0xf55: 0x0bc1, 0xf56: 0x0bc9, 0xf57: 0x0bd1,\n\t0xf58: 0x0bd9, 0xf59: 0x0be1, 0xf5a: 0x0be9, 0xf5b: 0x0bf1, 0xf5c: 0x0bf9, 0xf5d: 0x0c01,\n\t0xf5e: 0x0c09, 0xf5f: 0x0c11, 0xf60: 0x3375, 0xf61: 0x3395, 0xf62: 0x33b5, 0xf63: 0x33d5,\n\t0xf64: 0x33f5, 0xf65: 0x33f5, 0xf66: 0x3415, 0xf67: 0x3435, 0xf68: 0x3455, 0xf69: 0x3475,\n\t0xf6a: 0x3495, 0xf6b: 0x34b5, 0xf6c: 0x34d5, 0xf6d: 0x34f5, 0xf6e: 0x3515, 0xf6f: 0x3535,\n\t0xf70: 0x3555, 0xf71: 0x3575, 0xf72: 0x3595, 0xf73: 0x35b5, 0xf74: 0x35d5, 0xf75: 0x35f5,\n\t0xf76: 0x3615, 0xf77: 0x3635, 0xf78: 0x3655, 0xf79: 0x3675, 0xf7a: 0x3695, 0xf7b: 0x36b5,\n\t0xf7c: 0x0c19, 0xf7d: 0x0c21, 0xf7e: 0x36d5, 0xf7f: 0x0018,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x36f5, 0xf81: 0x3715, 0xf82: 0x3735, 0xf83: 0x3755, 0xf84: 0x3775, 0xf85: 0x3795,\n\t0xf86: 0x37b5, 0xf87: 0x37d5, 0xf88: 0x37f5, 0xf89: 0x3815, 0xf8a: 0x3835, 0xf8b: 0x3855,\n\t0xf8c: 0x3875, 0xf8d: 0x3895, 0xf8e: 0x38b5, 0xf8f: 0x38d5, 0xf90: 0x38f5, 0xf91: 0x3915,\n\t0xf92: 0x3935, 0xf93: 0x3955, 0xf94: 0x3975, 0xf95: 0x3995, 0xf96: 0x39b5, 0xf97: 0x39d5,\n\t0xf98: 0x39f5, 0xf99: 0x3a15, 0xf9a: 0x3a35, 0xf9b: 0x3a55, 0xf9c: 0x3a75, 0xf9d: 0x3a95,\n\t0xf9e: 0x3ab5, 0xf9f: 0x3ad5, 0xfa0: 0x3af5, 0xfa1: 0x3b15, 0xfa2: 0x3b35, 0xfa3: 0x3b55,\n\t0xfa4: 0x3b75, 0xfa5: 0x3b95, 0xfa6: 0x1295, 0xfa7: 0x3bb5, 0xfa8: 0x3bd5, 0xfa9: 0x3bf5,\n\t0xfaa: 0x3c15, 0xfab: 0x3c35, 0xfac: 0x3c55, 0xfad: 0x3c75, 0xfae: 0x23b5, 0xfaf: 0x3c95,\n\t0xfb0: 0x3cb5, 0xfb1: 0x0c29, 0xfb2: 0x0c31, 0xfb3: 0x0c39, 0xfb4: 0x0c41, 0xfb5: 0x0c49,\n\t0xfb6: 0x0c51, 0xfb7: 0x0c59, 0xfb8: 0x0c61, 0xfb9: 0x0c69, 0xfba: 0x0c71, 0xfbb: 0x0c79,\n\t0xfbc: 0x0c81, 0xfbd: 0x0c89, 0xfbe: 0x0c91, 0xfbf: 0x0c99,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x0ca1, 0xfc1: 0x0ca9, 0xfc2: 0x0cb1, 0xfc3: 0x0cb9, 0xfc4: 0x0cc1, 0xfc5: 0x0cc9,\n\t0xfc6: 0x0cd1, 0xfc7: 0x0cd9, 0xfc8: 0x0ce1, 0xfc9: 0x0ce9, 0xfca: 0x0cf1, 0xfcb: 0x0cf9,\n\t0xfcc: 0x0d01, 0xfcd: 0x3cd5, 0xfce: 0x0d09, 0xfcf: 0x3cf5, 0xfd0: 0x3d15, 0xfd1: 0x3d2d,\n\t0xfd2: 0x3d45, 0xfd3: 0x3d5d, 0xfd4: 0x3d75, 0xfd5: 0x3d75, 0xfd6: 0x3d5d, 0xfd7: 0x3d8d,\n\t0xfd8: 0x07d5, 0xfd9: 0x3da5, 0xfda: 0x3dbd, 0xfdb: 0x3dd5, 0xfdc: 0x3ded, 0xfdd: 0x3e05,\n\t0xfde: 0x3e1d, 0xfdf: 0x3e35, 0xfe0: 0x3e4d, 0xfe1: 0x3e65, 0xfe2: 0x3e7d, 0xfe3: 0x3e95,\n\t0xfe4: 0x3ead, 0xfe5: 0x3ead, 0xfe6: 0x3ec5, 0xfe7: 0x3ec5, 0xfe8: 0x3edd, 0xfe9: 0x3edd,\n\t0xfea: 0x3ef5, 0xfeb: 0x3f0d, 0xfec: 0x3f25, 0xfed: 0x3f3d, 0xfee: 0x3f55, 0xfef: 0x3f55,\n\t0xff0: 0x3f6d, 0xff1: 0x3f6d, 0xff2: 0x3f6d, 0xff3: 0x3f85, 0xff4: 0x3f9d, 0xff5: 0x3fb5,\n\t0xff6: 0x3fcd, 0xff7: 0x3fb5, 0xff8: 0x3fe5, 0xff9: 0x3ffd, 0xffa: 0x3f85, 0xffb: 0x4015,\n\t0xffc: 0x402d, 0xffd: 0x402d, 0xffe: 0x402d, 0xfff: 0x0d11,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x10f9, 0x1001: 0x1101, 0x1002: 0x40a5, 0x1003: 0x1109, 0x1004: 0x1111, 0x1005: 0x1119,\n\t0x1006: 0x1121, 0x1007: 0x1129, 0x1008: 0x40c5, 0x1009: 0x1131, 0x100a: 0x1139, 0x100b: 0x1141,\n\t0x100c: 0x40e5, 0x100d: 0x40e5, 0x100e: 0x1149, 0x100f: 0x1151, 0x1010: 0x1159, 0x1011: 0x4105,\n\t0x1012: 0x4125, 0x1013: 0x4145, 0x1014: 0x4165, 0x1015: 0x4185, 0x1016: 0x1161, 0x1017: 0x1169,\n\t0x1018: 0x1171, 0x1019: 0x1179, 0x101a: 0x1181, 0x101b: 0x41a5, 0x101c: 0x1189, 0x101d: 0x1191,\n\t0x101e: 0x1199, 0x101f: 0x41c5, 0x1020: 0x41e5, 0x1021: 0x11a1, 0x1022: 0x4205, 0x1023: 0x4225,\n\t0x1024: 0x4245, 0x1025: 0x11a9, 0x1026: 0x4265, 0x1027: 0x11b1, 0x1028: 0x11b9, 0x1029: 0x10f9,\n\t0x102a: 0x4285, 0x102b: 0x42a5, 0x102c: 0x42c5, 0x102d: 0x42e5, 0x102e: 0x11c1, 0x102f: 0x11c9,\n\t0x1030: 0x11d1, 0x1031: 0x11d9, 0x1032: 0x4305, 0x1033: 0x11e1, 0x1034: 0x11e9, 0x1035: 0x11f1,\n\t0x1036: 0x4325, 0x1037: 0x11f9, 0x1038: 0x1201, 0x1039: 0x11f9, 0x103a: 0x1209, 0x103b: 0x1211,\n\t0x103c: 0x4345, 0x103d: 0x1219, 0x103e: 0x1221, 0x103f: 0x1219,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x4365, 0x1041: 0x4385, 0x1042: 0x0040, 0x1043: 0x1229, 0x1044: 0x1231, 0x1045: 0x1239,\n\t0x1046: 0x1241, 0x1047: 0x0040, 0x1048: 0x1249, 0x1049: 0x1251, 0x104a: 0x1259, 0x104b: 0x1261,\n\t0x104c: 0x1269, 0x104d: 0x1271, 0x104e: 0x1199, 0x104f: 0x1279, 0x1050: 0x1281, 0x1051: 0x1289,\n\t0x1052: 0x43a5, 0x1053: 0x1291, 0x1054: 0x1121, 0x1055: 0x43c5, 0x1056: 0x43e5, 0x1057: 0x1299,\n\t0x1058: 0x0040, 0x1059: 0x4405, 0x105a: 0x12a1, 0x105b: 0x12a9, 0x105c: 0x12b1, 0x105d: 0x12b9,\n\t0x105e: 0x12c1, 0x105f: 0x12c9, 0x1060: 0x12d1, 0x1061: 0x12d9, 0x1062: 0x12e1, 0x1063: 0x12e9,\n\t0x1064: 0x12f1, 0x1065: 0x12f9, 0x1066: 0x1301, 0x1067: 0x1309, 0x1068: 0x1311, 0x1069: 0x1319,\n\t0x106a: 0x1321, 0x106b: 0x1329, 0x106c: 0x1331, 0x106d: 0x1339, 0x106e: 0x1341, 0x106f: 0x1349,\n\t0x1070: 0x1351, 0x1071: 0x1359, 0x1072: 0x1361, 0x1073: 0x1369, 0x1074: 0x1371, 0x1075: 0x1379,\n\t0x1076: 0x1381, 0x1077: 0x1389, 0x1078: 0x1391, 0x1079: 0x1399, 0x107a: 0x13a1, 0x107b: 0x13a9,\n\t0x107c: 0x13b1, 0x107d: 0x13b9, 0x107e: 0x13c1, 0x107f: 0x4425,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0xe00d, 0x1081: 0x0008, 0x1082: 0xe00d, 0x1083: 0x0008, 0x1084: 0xe00d, 0x1085: 0x0008,\n\t0x1086: 0xe00d, 0x1087: 0x0008, 0x1088: 0xe00d, 0x1089: 0x0008, 0x108a: 0xe00d, 0x108b: 0x0008,\n\t0x108c: 0xe00d, 0x108d: 0x0008, 0x108e: 0xe00d, 0x108f: 0x0008, 0x1090: 0xe00d, 0x1091: 0x0008,\n\t0x1092: 0xe00d, 0x1093: 0x0008, 0x1094: 0xe00d, 0x1095: 0x0008, 0x1096: 0xe00d, 0x1097: 0x0008,\n\t0x1098: 0xe00d, 0x1099: 0x0008, 0x109a: 0xe00d, 0x109b: 0x0008, 0x109c: 0xe00d, 0x109d: 0x0008,\n\t0x109e: 0xe00d, 0x109f: 0x0008, 0x10a0: 0xe00d, 0x10a1: 0x0008, 0x10a2: 0xe00d, 0x10a3: 0x0008,\n\t0x10a4: 0xe00d, 0x10a5: 0x0008, 0x10a6: 0xe00d, 0x10a7: 0x0008, 0x10a8: 0xe00d, 0x10a9: 0x0008,\n\t0x10aa: 0xe00d, 0x10ab: 0x0008, 0x10ac: 0xe00d, 0x10ad: 0x0008, 0x10ae: 0x0008, 0x10af: 0x3308,\n\t0x10b0: 0x3318, 0x10b1: 0x3318, 0x10b2: 0x3318, 0x10b3: 0x0018, 0x10b4: 0x3308, 0x10b5: 0x3308,\n\t0x10b6: 0x3308, 0x10b7: 0x3308, 0x10b8: 0x3308, 0x10b9: 0x3308, 0x10ba: 0x3308, 0x10bb: 0x3308,\n\t0x10bc: 0x3308, 0x10bd: 0x3308, 0x10be: 0x0018, 0x10bf: 0x0008,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0xe00d, 0x10c1: 0x0008, 0x10c2: 0xe00d, 0x10c3: 0x0008, 0x10c4: 0xe00d, 0x10c5: 0x0008,\n\t0x10c6: 0xe00d, 0x10c7: 0x0008, 0x10c8: 0xe00d, 0x10c9: 0x0008, 0x10ca: 0xe00d, 0x10cb: 0x0008,\n\t0x10cc: 0xe00d, 0x10cd: 0x0008, 0x10ce: 0xe00d, 0x10cf: 0x0008, 0x10d0: 0xe00d, 0x10d1: 0x0008,\n\t0x10d2: 0xe00d, 0x10d3: 0x0008, 0x10d4: 0xe00d, 0x10d5: 0x0008, 0x10d6: 0xe00d, 0x10d7: 0x0008,\n\t0x10d8: 0xe00d, 0x10d9: 0x0008, 0x10da: 0xe00d, 0x10db: 0x0008, 0x10dc: 0x02d1, 0x10dd: 0x13c9,\n\t0x10de: 0x3308, 0x10df: 0x3308, 0x10e0: 0x0008, 0x10e1: 0x0008, 0x10e2: 0x0008, 0x10e3: 0x0008,\n\t0x10e4: 0x0008, 0x10e5: 0x0008, 0x10e6: 0x0008, 0x10e7: 0x0008, 0x10e8: 0x0008, 0x10e9: 0x0008,\n\t0x10ea: 0x0008, 0x10eb: 0x0008, 0x10ec: 0x0008, 0x10ed: 0x0008, 0x10ee: 0x0008, 0x10ef: 0x0008,\n\t0x10f0: 0x0008, 0x10f1: 0x0008, 0x10f2: 0x0008, 0x10f3: 0x0008, 0x10f4: 0x0008, 0x10f5: 0x0008,\n\t0x10f6: 0x0008, 0x10f7: 0x0008, 0x10f8: 0x0008, 0x10f9: 0x0008, 0x10fa: 0x0008, 0x10fb: 0x0008,\n\t0x10fc: 0x0008, 0x10fd: 0x0008, 0x10fe: 0x0008, 0x10ff: 0x0008,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0x0018, 0x1101: 0x0018, 0x1102: 0x0018, 0x1103: 0x0018, 0x1104: 0x0018, 0x1105: 0x0018,\n\t0x1106: 0x0018, 0x1107: 0x0018, 0x1108: 0x0018, 0x1109: 0x0018, 0x110a: 0x0018, 0x110b: 0x0018,\n\t0x110c: 0x0018, 0x110d: 0x0018, 0x110e: 0x0018, 0x110f: 0x0018, 0x1110: 0x0018, 0x1111: 0x0018,\n\t0x1112: 0x0018, 0x1113: 0x0018, 0x1114: 0x0018, 0x1115: 0x0018, 0x1116: 0x0018, 0x1117: 0x0008,\n\t0x1118: 0x0008, 0x1119: 0x0008, 0x111a: 0x0008, 0x111b: 0x0008, 0x111c: 0x0008, 0x111d: 0x0008,\n\t0x111e: 0x0008, 0x111f: 0x0008, 0x1120: 0x0018, 0x1121: 0x0018, 0x1122: 0xe00d, 0x1123: 0x0008,\n\t0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008,\n\t0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0xe00d, 0x112f: 0x0008,\n\t0x1130: 0x0008, 0x1131: 0x0008, 0x1132: 0xe00d, 0x1133: 0x0008, 0x1134: 0xe00d, 0x1135: 0x0008,\n\t0x1136: 0xe00d, 0x1137: 0x0008, 0x1138: 0xe00d, 0x1139: 0x0008, 0x113a: 0xe00d, 0x113b: 0x0008,\n\t0x113c: 0xe00d, 0x113d: 0x0008, 0x113e: 0xe00d, 0x113f: 0x0008,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008,\n\t0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008,\n\t0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008,\n\t0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008,\n\t0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0xe00d, 0x115d: 0x0008,\n\t0x115e: 0xe00d, 0x115f: 0x0008, 0x1160: 0xe00d, 0x1161: 0x0008, 0x1162: 0xe00d, 0x1163: 0x0008,\n\t0x1164: 0xe00d, 0x1165: 0x0008, 0x1166: 0xe00d, 0x1167: 0x0008, 0x1168: 0xe00d, 0x1169: 0x0008,\n\t0x116a: 0xe00d, 0x116b: 0x0008, 0x116c: 0xe00d, 0x116d: 0x0008, 0x116e: 0xe00d, 0x116f: 0x0008,\n\t0x1170: 0xe0fd, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008,\n\t0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0xe01d, 0x117a: 0x0008, 0x117b: 0xe03d,\n\t0x117c: 0x0008, 0x117d: 0x4445, 0x117e: 0xe00d, 0x117f: 0x0008,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0xe00d, 0x1181: 0x0008, 0x1182: 0xe00d, 0x1183: 0x0008, 0x1184: 0xe00d, 0x1185: 0x0008,\n\t0x1186: 0xe00d, 0x1187: 0x0008, 0x1188: 0x0008, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0xe03d,\n\t0x118c: 0x0008, 0x118d: 0x0409, 0x118e: 0x0008, 0x118f: 0x0008, 0x1190: 0xe00d, 0x1191: 0x0008,\n\t0x1192: 0xe00d, 0x1193: 0x0008, 0x1194: 0x0008, 0x1195: 0x0008, 0x1196: 0xe00d, 0x1197: 0x0008,\n\t0x1198: 0xe00d, 0x1199: 0x0008, 0x119a: 0xe00d, 0x119b: 0x0008, 0x119c: 0xe00d, 0x119d: 0x0008,\n\t0x119e: 0xe00d, 0x119f: 0x0008, 0x11a0: 0xe00d, 0x11a1: 0x0008, 0x11a2: 0xe00d, 0x11a3: 0x0008,\n\t0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008,\n\t0x11aa: 0x13d1, 0x11ab: 0x0371, 0x11ac: 0x0401, 0x11ad: 0x13d9, 0x11ae: 0x0421, 0x11af: 0x0008,\n\t0x11b0: 0x13e1, 0x11b1: 0x13e9, 0x11b2: 0x0429, 0x11b3: 0x4465, 0x11b4: 0xe00d, 0x11b5: 0x0008,\n\t0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008,\n\t0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0x650d, 0x11c1: 0x652d, 0x11c2: 0x654d, 0x11c3: 0x656d, 0x11c4: 0x658d, 0x11c5: 0x65ad,\n\t0x11c6: 0x65cd, 0x11c7: 0x65ed, 0x11c8: 0x660d, 0x11c9: 0x662d, 0x11ca: 0x664d, 0x11cb: 0x666d,\n\t0x11cc: 0x668d, 0x11cd: 0x66ad, 0x11ce: 0x0008, 0x11cf: 0x0008, 0x11d0: 0x66cd, 0x11d1: 0x0008,\n\t0x11d2: 0x66ed, 0x11d3: 0x0008, 0x11d4: 0x0008, 0x11d5: 0x670d, 0x11d6: 0x672d, 0x11d7: 0x674d,\n\t0x11d8: 0x676d, 0x11d9: 0x678d, 0x11da: 0x67ad, 0x11db: 0x67cd, 0x11dc: 0x67ed, 0x11dd: 0x680d,\n\t0x11de: 0x682d, 0x11df: 0x0008, 0x11e0: 0x684d, 0x11e1: 0x0008, 0x11e2: 0x686d, 0x11e3: 0x0008,\n\t0x11e4: 0x0008, 0x11e5: 0x688d, 0x11e6: 0x68ad, 0x11e7: 0x0008, 0x11e8: 0x0008, 0x11e9: 0x0008,\n\t0x11ea: 0x68cd, 0x11eb: 0x68ed, 0x11ec: 0x690d, 0x11ed: 0x692d, 0x11ee: 0x694d, 0x11ef: 0x696d,\n\t0x11f0: 0x698d, 0x11f1: 0x69ad, 0x11f2: 0x69cd, 0x11f3: 0x69ed, 0x11f4: 0x6a0d, 0x11f5: 0x6a2d,\n\t0x11f6: 0x6a4d, 0x11f7: 0x6a6d, 0x11f8: 0x6a8d, 0x11f9: 0x6aad, 0x11fa: 0x6acd, 0x11fb: 0x6aed,\n\t0x11fc: 0x6b0d, 0x11fd: 0x6b2d, 0x11fe: 0x6b4d, 0x11ff: 0x6b6d,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x7acd, 0x1201: 0x7aed, 0x1202: 0x7b0d, 0x1203: 0x7b2d, 0x1204: 0x7b4d, 0x1205: 0x7b6d,\n\t0x1206: 0x7b8d, 0x1207: 0x7bad, 0x1208: 0x7bcd, 0x1209: 0x7bed, 0x120a: 0x7c0d, 0x120b: 0x7c2d,\n\t0x120c: 0x7c4d, 0x120d: 0x7c6d, 0x120e: 0x7c8d, 0x120f: 0x1409, 0x1210: 0x1411, 0x1211: 0x1419,\n\t0x1212: 0x7cad, 0x1213: 0x7ccd, 0x1214: 0x7ced, 0x1215: 0x1421, 0x1216: 0x1429, 0x1217: 0x1431,\n\t0x1218: 0x7d0d, 0x1219: 0x7d2d, 0x121a: 0x0040, 0x121b: 0x0040, 0x121c: 0x0040, 0x121d: 0x0040,\n\t0x121e: 0x0040, 0x121f: 0x0040, 0x1220: 0x0040, 0x1221: 0x0040, 0x1222: 0x0040, 0x1223: 0x0040,\n\t0x1224: 0x0040, 0x1225: 0x0040, 0x1226: 0x0040, 0x1227: 0x0040, 0x1228: 0x0040, 0x1229: 0x0040,\n\t0x122a: 0x0040, 0x122b: 0x0040, 0x122c: 0x0040, 0x122d: 0x0040, 0x122e: 0x0040, 0x122f: 0x0040,\n\t0x1230: 0x0040, 0x1231: 0x0040, 0x1232: 0x0040, 0x1233: 0x0040, 0x1234: 0x0040, 0x1235: 0x0040,\n\t0x1236: 0x0040, 0x1237: 0x0040, 0x1238: 0x0040, 0x1239: 0x0040, 0x123a: 0x0040, 0x123b: 0x0040,\n\t0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x1439, 0x1241: 0x1441, 0x1242: 0x1449, 0x1243: 0x7d4d, 0x1244: 0x7d6d, 0x1245: 0x1451,\n\t0x1246: 0x1451, 0x1247: 0x0040, 0x1248: 0x0040, 0x1249: 0x0040, 0x124a: 0x0040, 0x124b: 0x0040,\n\t0x124c: 0x0040, 0x124d: 0x0040, 0x124e: 0x0040, 0x124f: 0x0040, 0x1250: 0x0040, 0x1251: 0x0040,\n\t0x1252: 0x0040, 0x1253: 0x1459, 0x1254: 0x1461, 0x1255: 0x1469, 0x1256: 0x1471, 0x1257: 0x1479,\n\t0x1258: 0x0040, 0x1259: 0x0040, 0x125a: 0x0040, 0x125b: 0x0040, 0x125c: 0x0040, 0x125d: 0x1481,\n\t0x125e: 0x3308, 0x125f: 0x1489, 0x1260: 0x1491, 0x1261: 0x0779, 0x1262: 0x0791, 0x1263: 0x1499,\n\t0x1264: 0x14a1, 0x1265: 0x14a9, 0x1266: 0x14b1, 0x1267: 0x14b9, 0x1268: 0x14c1, 0x1269: 0x071a,\n\t0x126a: 0x14c9, 0x126b: 0x14d1, 0x126c: 0x14d9, 0x126d: 0x14e1, 0x126e: 0x14e9, 0x126f: 0x14f1,\n\t0x1270: 0x14f9, 0x1271: 0x1501, 0x1272: 0x1509, 0x1273: 0x1511, 0x1274: 0x1519, 0x1275: 0x1521,\n\t0x1276: 0x1529, 0x1277: 0x0040, 0x1278: 0x1531, 0x1279: 0x1539, 0x127a: 0x1541, 0x127b: 0x1549,\n\t0x127c: 0x1551, 0x127d: 0x0040, 0x127e: 0x1559, 0x127f: 0x0040,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x1561, 0x1281: 0x1569, 0x1282: 0x0040, 0x1283: 0x1571, 0x1284: 0x1579, 0x1285: 0x0040,\n\t0x1286: 0x1581, 0x1287: 0x1589, 0x1288: 0x1591, 0x1289: 0x1599, 0x128a: 0x15a1, 0x128b: 0x15a9,\n\t0x128c: 0x15b1, 0x128d: 0x15b9, 0x128e: 0x15c1, 0x128f: 0x15c9, 0x1290: 0x15d1, 0x1291: 0x15d1,\n\t0x1292: 0x15d9, 0x1293: 0x15d9, 0x1294: 0x15d9, 0x1295: 0x15d9, 0x1296: 0x15e1, 0x1297: 0x15e1,\n\t0x1298: 0x15e1, 0x1299: 0x15e1, 0x129a: 0x15e9, 0x129b: 0x15e9, 0x129c: 0x15e9, 0x129d: 0x15e9,\n\t0x129e: 0x15f1, 0x129f: 0x15f1, 0x12a0: 0x15f1, 0x12a1: 0x15f1, 0x12a2: 0x15f9, 0x12a3: 0x15f9,\n\t0x12a4: 0x15f9, 0x12a5: 0x15f9, 0x12a6: 0x1601, 0x12a7: 0x1601, 0x12a8: 0x1601, 0x12a9: 0x1601,\n\t0x12aa: 0x1609, 0x12ab: 0x1609, 0x12ac: 0x1609, 0x12ad: 0x1609, 0x12ae: 0x1611, 0x12af: 0x1611,\n\t0x12b0: 0x1611, 0x12b1: 0x1611, 0x12b2: 0x1619, 0x12b3: 0x1619, 0x12b4: 0x1619, 0x12b5: 0x1619,\n\t0x12b6: 0x1621, 0x12b7: 0x1621, 0x12b8: 0x1621, 0x12b9: 0x1621, 0x12ba: 0x1629, 0x12bb: 0x1629,\n\t0x12bc: 0x1629, 0x12bd: 0x1629, 0x12be: 0x1631, 0x12bf: 0x1631,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x1631, 0x12c1: 0x1631, 0x12c2: 0x1639, 0x12c3: 0x1639, 0x12c4: 0x1641, 0x12c5: 0x1641,\n\t0x12c6: 0x1649, 0x12c7: 0x1649, 0x12c8: 0x1651, 0x12c9: 0x1651, 0x12ca: 0x1659, 0x12cb: 0x1659,\n\t0x12cc: 0x1661, 0x12cd: 0x1661, 0x12ce: 0x1669, 0x12cf: 0x1669, 0x12d0: 0x1669, 0x12d1: 0x1669,\n\t0x12d2: 0x1671, 0x12d3: 0x1671, 0x12d4: 0x1671, 0x12d5: 0x1671, 0x12d6: 0x1679, 0x12d7: 0x1679,\n\t0x12d8: 0x1679, 0x12d9: 0x1679, 0x12da: 0x1681, 0x12db: 0x1681, 0x12dc: 0x1681, 0x12dd: 0x1681,\n\t0x12de: 0x1689, 0x12df: 0x1689, 0x12e0: 0x1691, 0x12e1: 0x1691, 0x12e2: 0x1691, 0x12e3: 0x1691,\n\t0x12e4: 0x1699, 0x12e5: 0x1699, 0x12e6: 0x16a1, 0x12e7: 0x16a1, 0x12e8: 0x16a1, 0x12e9: 0x16a1,\n\t0x12ea: 0x16a9, 0x12eb: 0x16a9, 0x12ec: 0x16a9, 0x12ed: 0x16a9, 0x12ee: 0x16b1, 0x12ef: 0x16b1,\n\t0x12f0: 0x16b9, 0x12f1: 0x16b9, 0x12f2: 0x0818, 0x12f3: 0x0818, 0x12f4: 0x0818, 0x12f5: 0x0818,\n\t0x12f6: 0x0818, 0x12f7: 0x0818, 0x12f8: 0x0818, 0x12f9: 0x0818, 0x12fa: 0x0818, 0x12fb: 0x0818,\n\t0x12fc: 0x0818, 0x12fd: 0x0818, 0x12fe: 0x0818, 0x12ff: 0x0818,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x0818, 0x1301: 0x0818, 0x1302: 0x0040, 0x1303: 0x0040, 0x1304: 0x0040, 0x1305: 0x0040,\n\t0x1306: 0x0040, 0x1307: 0x0040, 0x1308: 0x0040, 0x1309: 0x0040, 0x130a: 0x0040, 0x130b: 0x0040,\n\t0x130c: 0x0040, 0x130d: 0x0040, 0x130e: 0x0040, 0x130f: 0x0040, 0x1310: 0x0040, 0x1311: 0x0040,\n\t0x1312: 0x0040, 0x1313: 0x16c1, 0x1314: 0x16c1, 0x1315: 0x16c1, 0x1316: 0x16c1, 0x1317: 0x16c9,\n\t0x1318: 0x16c9, 0x1319: 0x16d1, 0x131a: 0x16d1, 0x131b: 0x16d9, 0x131c: 0x16d9, 0x131d: 0x0149,\n\t0x131e: 0x16e1, 0x131f: 0x16e1, 0x1320: 0x16e9, 0x1321: 0x16e9, 0x1322: 0x16f1, 0x1323: 0x16f1,\n\t0x1324: 0x16f9, 0x1325: 0x16f9, 0x1326: 0x16f9, 0x1327: 0x16f9, 0x1328: 0x1701, 0x1329: 0x1701,\n\t0x132a: 0x1709, 0x132b: 0x1709, 0x132c: 0x1711, 0x132d: 0x1711, 0x132e: 0x1719, 0x132f: 0x1719,\n\t0x1330: 0x1721, 0x1331: 0x1721, 0x1332: 0x1729, 0x1333: 0x1729, 0x1334: 0x1731, 0x1335: 0x1731,\n\t0x1336: 0x1739, 0x1337: 0x1739, 0x1338: 0x1739, 0x1339: 0x1741, 0x133a: 0x1741, 0x133b: 0x1741,\n\t0x133c: 0x1749, 0x133d: 0x1749, 0x133e: 0x1749, 0x133f: 0x1749,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x1949, 0x1341: 0x1951, 0x1342: 0x1959, 0x1343: 0x1961, 0x1344: 0x1969, 0x1345: 0x1971,\n\t0x1346: 0x1979, 0x1347: 0x1981, 0x1348: 0x1989, 0x1349: 0x1991, 0x134a: 0x1999, 0x134b: 0x19a1,\n\t0x134c: 0x19a9, 0x134d: 0x19b1, 0x134e: 0x19b9, 0x134f: 0x19c1, 0x1350: 0x19c9, 0x1351: 0x19d1,\n\t0x1352: 0x19d9, 0x1353: 0x19e1, 0x1354: 0x19e9, 0x1355: 0x19f1, 0x1356: 0x19f9, 0x1357: 0x1a01,\n\t0x1358: 0x1a09, 0x1359: 0x1a11, 0x135a: 0x1a19, 0x135b: 0x1a21, 0x135c: 0x1a29, 0x135d: 0x1a31,\n\t0x135e: 0x1a3a, 0x135f: 0x1a42, 0x1360: 0x1a4a, 0x1361: 0x1a52, 0x1362: 0x1a5a, 0x1363: 0x1a62,\n\t0x1364: 0x1a69, 0x1365: 0x1a71, 0x1366: 0x1761, 0x1367: 0x1a79, 0x1368: 0x1741, 0x1369: 0x1769,\n\t0x136a: 0x1a81, 0x136b: 0x1a89, 0x136c: 0x1789, 0x136d: 0x1a91, 0x136e: 0x1791, 0x136f: 0x1799,\n\t0x1370: 0x1a99, 0x1371: 0x1aa1, 0x1372: 0x17b9, 0x1373: 0x1aa9, 0x1374: 0x17c1, 0x1375: 0x17c9,\n\t0x1376: 0x1ab1, 0x1377: 0x1ab9, 0x1378: 0x17d9, 0x1379: 0x1ac1, 0x137a: 0x17e1, 0x137b: 0x17e9,\n\t0x137c: 0x18d1, 0x137d: 0x18d9, 0x137e: 0x18f1, 0x137f: 0x18f9,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x1901, 0x1381: 0x1921, 0x1382: 0x1929, 0x1383: 0x1931, 0x1384: 0x1939, 0x1385: 0x1959,\n\t0x1386: 0x1961, 0x1387: 0x1969, 0x1388: 0x1ac9, 0x1389: 0x1989, 0x138a: 0x1ad1, 0x138b: 0x1ad9,\n\t0x138c: 0x19b9, 0x138d: 0x1ae1, 0x138e: 0x19c1, 0x138f: 0x19c9, 0x1390: 0x1a31, 0x1391: 0x1ae9,\n\t0x1392: 0x1af1, 0x1393: 0x1a09, 0x1394: 0x1af9, 0x1395: 0x1a11, 0x1396: 0x1a19, 0x1397: 0x1751,\n\t0x1398: 0x1759, 0x1399: 0x1b01, 0x139a: 0x1761, 0x139b: 0x1b09, 0x139c: 0x1771, 0x139d: 0x1779,\n\t0x139e: 0x1781, 0x139f: 0x1789, 0x13a0: 0x1b11, 0x13a1: 0x17a1, 0x13a2: 0x17a9, 0x13a3: 0x17b1,\n\t0x13a4: 0x17b9, 0x13a5: 0x1b19, 0x13a6: 0x17d9, 0x13a7: 0x17f1, 0x13a8: 0x17f9, 0x13a9: 0x1801,\n\t0x13aa: 0x1809, 0x13ab: 0x1811, 0x13ac: 0x1821, 0x13ad: 0x1829, 0x13ae: 0x1831, 0x13af: 0x1839,\n\t0x13b0: 0x1841, 0x13b1: 0x1849, 0x13b2: 0x1b21, 0x13b3: 0x1851, 0x13b4: 0x1859, 0x13b5: 0x1861,\n\t0x13b6: 0x1869, 0x13b7: 0x1871, 0x13b8: 0x1879, 0x13b9: 0x1889, 0x13ba: 0x1891, 0x13bb: 0x1899,\n\t0x13bc: 0x18a1, 0x13bd: 0x18a9, 0x13be: 0x18b1, 0x13bf: 0x18b9,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x18c1, 0x13c1: 0x18c9, 0x13c2: 0x18e1, 0x13c3: 0x18e9, 0x13c4: 0x1909, 0x13c5: 0x1911,\n\t0x13c6: 0x1919, 0x13c7: 0x1921, 0x13c8: 0x1929, 0x13c9: 0x1941, 0x13ca: 0x1949, 0x13cb: 0x1951,\n\t0x13cc: 0x1959, 0x13cd: 0x1b29, 0x13ce: 0x1971, 0x13cf: 0x1979, 0x13d0: 0x1981, 0x13d1: 0x1989,\n\t0x13d2: 0x19a1, 0x13d3: 0x19a9, 0x13d4: 0x19b1, 0x13d5: 0x19b9, 0x13d6: 0x1b31, 0x13d7: 0x19d1,\n\t0x13d8: 0x19d9, 0x13d9: 0x1b39, 0x13da: 0x19f1, 0x13db: 0x19f9, 0x13dc: 0x1a01, 0x13dd: 0x1a09,\n\t0x13de: 0x1b41, 0x13df: 0x1761, 0x13e0: 0x1b09, 0x13e1: 0x1789, 0x13e2: 0x1b11, 0x13e3: 0x17b9,\n\t0x13e4: 0x1b19, 0x13e5: 0x17d9, 0x13e6: 0x1b49, 0x13e7: 0x1841, 0x13e8: 0x1b51, 0x13e9: 0x1b59,\n\t0x13ea: 0x1b61, 0x13eb: 0x1921, 0x13ec: 0x1929, 0x13ed: 0x1959, 0x13ee: 0x19b9, 0x13ef: 0x1b31,\n\t0x13f0: 0x1a09, 0x13f1: 0x1b41, 0x13f2: 0x1b69, 0x13f3: 0x1b71, 0x13f4: 0x1b79, 0x13f5: 0x1b81,\n\t0x13f6: 0x1b89, 0x13f7: 0x1b91, 0x13f8: 0x1b99, 0x13f9: 0x1ba1, 0x13fa: 0x1ba9, 0x13fb: 0x1bb1,\n\t0x13fc: 0x1bb9, 0x13fd: 0x1bc1, 0x13fe: 0x1bc9, 0x13ff: 0x1bd1,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x1bd9, 0x1401: 0x1be1, 0x1402: 0x1be9, 0x1403: 0x1bf1, 0x1404: 0x1bf9, 0x1405: 0x1c01,\n\t0x1406: 0x1c09, 0x1407: 0x1c11, 0x1408: 0x1c19, 0x1409: 0x1c21, 0x140a: 0x1c29, 0x140b: 0x1c31,\n\t0x140c: 0x1b59, 0x140d: 0x1c39, 0x140e: 0x1c41, 0x140f: 0x1c49, 0x1410: 0x1c51, 0x1411: 0x1b81,\n\t0x1412: 0x1b89, 0x1413: 0x1b91, 0x1414: 0x1b99, 0x1415: 0x1ba1, 0x1416: 0x1ba9, 0x1417: 0x1bb1,\n\t0x1418: 0x1bb9, 0x1419: 0x1bc1, 0x141a: 0x1bc9, 0x141b: 0x1bd1, 0x141c: 0x1bd9, 0x141d: 0x1be1,\n\t0x141e: 0x1be9, 0x141f: 0x1bf1, 0x1420: 0x1bf9, 0x1421: 0x1c01, 0x1422: 0x1c09, 0x1423: 0x1c11,\n\t0x1424: 0x1c19, 0x1425: 0x1c21, 0x1426: 0x1c29, 0x1427: 0x1c31, 0x1428: 0x1b59, 0x1429: 0x1c39,\n\t0x142a: 0x1c41, 0x142b: 0x1c49, 0x142c: 0x1c51, 0x142d: 0x1c21, 0x142e: 0x1c29, 0x142f: 0x1c31,\n\t0x1430: 0x1b59, 0x1431: 0x1b51, 0x1432: 0x1b61, 0x1433: 0x1881, 0x1434: 0x1829, 0x1435: 0x1831,\n\t0x1436: 0x1839, 0x1437: 0x1c21, 0x1438: 0x1c29, 0x1439: 0x1c31, 0x143a: 0x1881, 0x143b: 0x1889,\n\t0x143c: 0x1c59, 0x143d: 0x1c59, 0x143e: 0x0018, 0x143f: 0x0018,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x0040, 0x1441: 0x0040, 0x1442: 0x0040, 0x1443: 0x0040, 0x1444: 0x0040, 0x1445: 0x0040,\n\t0x1446: 0x0040, 0x1447: 0x0040, 0x1448: 0x0040, 0x1449: 0x0040, 0x144a: 0x0040, 0x144b: 0x0040,\n\t0x144c: 0x0040, 0x144d: 0x0040, 0x144e: 0x0040, 0x144f: 0x0040, 0x1450: 0x1c61, 0x1451: 0x1c69,\n\t0x1452: 0x1c69, 0x1453: 0x1c71, 0x1454: 0x1c79, 0x1455: 0x1c81, 0x1456: 0x1c89, 0x1457: 0x1c91,\n\t0x1458: 0x1c99, 0x1459: 0x1c99, 0x145a: 0x1ca1, 0x145b: 0x1ca9, 0x145c: 0x1cb1, 0x145d: 0x1cb9,\n\t0x145e: 0x1cc1, 0x145f: 0x1cc9, 0x1460: 0x1cc9, 0x1461: 0x1cd1, 0x1462: 0x1cd9, 0x1463: 0x1cd9,\n\t0x1464: 0x1ce1, 0x1465: 0x1ce1, 0x1466: 0x1ce9, 0x1467: 0x1cf1, 0x1468: 0x1cf1, 0x1469: 0x1cf9,\n\t0x146a: 0x1d01, 0x146b: 0x1d01, 0x146c: 0x1d09, 0x146d: 0x1d09, 0x146e: 0x1d11, 0x146f: 0x1d19,\n\t0x1470: 0x1d19, 0x1471: 0x1d21, 0x1472: 0x1d21, 0x1473: 0x1d29, 0x1474: 0x1d31, 0x1475: 0x1d39,\n\t0x1476: 0x1d41, 0x1477: 0x1d41, 0x1478: 0x1d49, 0x1479: 0x1d51, 0x147a: 0x1d59, 0x147b: 0x1d61,\n\t0x147c: 0x1d69, 0x147d: 0x1d69, 0x147e: 0x1d71, 0x147f: 0x1d79,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x1f29, 0x1481: 0x1f31, 0x1482: 0x1f39, 0x1483: 0x1f11, 0x1484: 0x1d39, 0x1485: 0x1ce9,\n\t0x1486: 0x1f41, 0x1487: 0x1f49, 0x1488: 0x0040, 0x1489: 0x0040, 0x148a: 0x0040, 0x148b: 0x0040,\n\t0x148c: 0x0040, 0x148d: 0x0040, 0x148e: 0x0040, 0x148f: 0x0040, 0x1490: 0x0040, 0x1491: 0x0040,\n\t0x1492: 0x0040, 0x1493: 0x0040, 0x1494: 0x0040, 0x1495: 0x0040, 0x1496: 0x0040, 0x1497: 0x0040,\n\t0x1498: 0x0040, 0x1499: 0x0040, 0x149a: 0x0040, 0x149b: 0x0040, 0x149c: 0x0040, 0x149d: 0x0040,\n\t0x149e: 0x0040, 0x149f: 0x0040, 0x14a0: 0x0040, 0x14a1: 0x0040, 0x14a2: 0x0040, 0x14a3: 0x0040,\n\t0x14a4: 0x0040, 0x14a5: 0x0040, 0x14a6: 0x0040, 0x14a7: 0x0040, 0x14a8: 0x0040, 0x14a9: 0x0040,\n\t0x14aa: 0x0040, 0x14ab: 0x0040, 0x14ac: 0x0040, 0x14ad: 0x0040, 0x14ae: 0x0040, 0x14af: 0x0040,\n\t0x14b0: 0x1f51, 0x14b1: 0x1f59, 0x14b2: 0x1f61, 0x14b3: 0x1f69, 0x14b4: 0x1f71, 0x14b5: 0x1f79,\n\t0x14b6: 0x1f81, 0x14b7: 0x1f89, 0x14b8: 0x1f91, 0x14b9: 0x1f99, 0x14ba: 0x1fa2, 0x14bb: 0x1faa,\n\t0x14bc: 0x1fb1, 0x14bd: 0x0018, 0x14be: 0x0040, 0x14bf: 0x0040,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x33c0, 0x14c1: 0x33c0, 0x14c2: 0x33c0, 0x14c3: 0x33c0, 0x14c4: 0x33c0, 0x14c5: 0x33c0,\n\t0x14c6: 0x33c0, 0x14c7: 0x33c0, 0x14c8: 0x33c0, 0x14c9: 0x33c0, 0x14ca: 0x33c0, 0x14cb: 0x33c0,\n\t0x14cc: 0x33c0, 0x14cd: 0x33c0, 0x14ce: 0x33c0, 0x14cf: 0x33c0, 0x14d0: 0x1fba, 0x14d1: 0x7d8d,\n\t0x14d2: 0x0040, 0x14d3: 0x1fc2, 0x14d4: 0x0122, 0x14d5: 0x1fca, 0x14d6: 0x1fd2, 0x14d7: 0x7dad,\n\t0x14d8: 0x7dcd, 0x14d9: 0x0040, 0x14da: 0x0040, 0x14db: 0x0040, 0x14dc: 0x0040, 0x14dd: 0x0040,\n\t0x14de: 0x0040, 0x14df: 0x0040, 0x14e0: 0x3308, 0x14e1: 0x3308, 0x14e2: 0x3308, 0x14e3: 0x3308,\n\t0x14e4: 0x3308, 0x14e5: 0x3308, 0x14e6: 0x3308, 0x14e7: 0x3308, 0x14e8: 0x3308, 0x14e9: 0x3308,\n\t0x14ea: 0x3308, 0x14eb: 0x3308, 0x14ec: 0x3308, 0x14ed: 0x3308, 0x14ee: 0x3308, 0x14ef: 0x3308,\n\t0x14f0: 0x0040, 0x14f1: 0x7ded, 0x14f2: 0x7e0d, 0x14f3: 0x1fda, 0x14f4: 0x1fda, 0x14f5: 0x072a,\n\t0x14f6: 0x0732, 0x14f7: 0x1fe2, 0x14f8: 0x1fea, 0x14f9: 0x7e2d, 0x14fa: 0x7e4d, 0x14fb: 0x7e6d,\n\t0x14fc: 0x7e2d, 0x14fd: 0x7e8d, 0x14fe: 0x7ead, 0x14ff: 0x7e8d,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x7ecd, 0x1501: 0x7eed, 0x1502: 0x7f0d, 0x1503: 0x7eed, 0x1504: 0x7f2d, 0x1505: 0x0018,\n\t0x1506: 0x0018, 0x1507: 0x1ff2, 0x1508: 0x1ffa, 0x1509: 0x7f4e, 0x150a: 0x7f6e, 0x150b: 0x7f8e,\n\t0x150c: 0x7fae, 0x150d: 0x1fda, 0x150e: 0x1fda, 0x150f: 0x1fda, 0x1510: 0x1fba, 0x1511: 0x7fcd,\n\t0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0122, 0x1515: 0x1fc2, 0x1516: 0x1fd2, 0x1517: 0x1fca,\n\t0x1518: 0x7fed, 0x1519: 0x072a, 0x151a: 0x0732, 0x151b: 0x1fe2, 0x151c: 0x1fea, 0x151d: 0x7ecd,\n\t0x151e: 0x7f2d, 0x151f: 0x2002, 0x1520: 0x200a, 0x1521: 0x2012, 0x1522: 0x071a, 0x1523: 0x2019,\n\t0x1524: 0x2022, 0x1525: 0x202a, 0x1526: 0x0722, 0x1527: 0x0040, 0x1528: 0x2032, 0x1529: 0x203a,\n\t0x152a: 0x2042, 0x152b: 0x204a, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040,\n\t0x1530: 0x800e, 0x1531: 0x2051, 0x1532: 0x802e, 0x1533: 0x0808, 0x1534: 0x804e, 0x1535: 0x0040,\n\t0x1536: 0x806e, 0x1537: 0x2059, 0x1538: 0x808e, 0x1539: 0x2061, 0x153a: 0x80ae, 0x153b: 0x2069,\n\t0x153c: 0x80ce, 0x153d: 0x2071, 0x153e: 0x80ee, 0x153f: 0x2079,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x2081, 0x1541: 0x2089, 0x1542: 0x2089, 0x1543: 0x2091, 0x1544: 0x2091, 0x1545: 0x2099,\n\t0x1546: 0x2099, 0x1547: 0x20a1, 0x1548: 0x20a1, 0x1549: 0x20a9, 0x154a: 0x20a9, 0x154b: 0x20a9,\n\t0x154c: 0x20a9, 0x154d: 0x20b1, 0x154e: 0x20b1, 0x154f: 0x20b9, 0x1550: 0x20b9, 0x1551: 0x20b9,\n\t0x1552: 0x20b9, 0x1553: 0x20c1, 0x1554: 0x20c1, 0x1555: 0x20c9, 0x1556: 0x20c9, 0x1557: 0x20c9,\n\t0x1558: 0x20c9, 0x1559: 0x20d1, 0x155a: 0x20d1, 0x155b: 0x20d1, 0x155c: 0x20d1, 0x155d: 0x20d9,\n\t0x155e: 0x20d9, 0x155f: 0x20d9, 0x1560: 0x20d9, 0x1561: 0x20e1, 0x1562: 0x20e1, 0x1563: 0x20e1,\n\t0x1564: 0x20e1, 0x1565: 0x20e9, 0x1566: 0x20e9, 0x1567: 0x20e9, 0x1568: 0x20e9, 0x1569: 0x20f1,\n\t0x156a: 0x20f1, 0x156b: 0x20f9, 0x156c: 0x20f9, 0x156d: 0x2101, 0x156e: 0x2101, 0x156f: 0x2109,\n\t0x1570: 0x2109, 0x1571: 0x2111, 0x1572: 0x2111, 0x1573: 0x2111, 0x1574: 0x2111, 0x1575: 0x2119,\n\t0x1576: 0x2119, 0x1577: 0x2119, 0x1578: 0x2119, 0x1579: 0x2121, 0x157a: 0x2121, 0x157b: 0x2121,\n\t0x157c: 0x2121, 0x157d: 0x2129, 0x157e: 0x2129, 0x157f: 0x2129,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x2129, 0x1581: 0x2131, 0x1582: 0x2131, 0x1583: 0x2131, 0x1584: 0x2131, 0x1585: 0x2139,\n\t0x1586: 0x2139, 0x1587: 0x2139, 0x1588: 0x2139, 0x1589: 0x2141, 0x158a: 0x2141, 0x158b: 0x2141,\n\t0x158c: 0x2141, 0x158d: 0x2149, 0x158e: 0x2149, 0x158f: 0x2149, 0x1590: 0x2149, 0x1591: 0x2151,\n\t0x1592: 0x2151, 0x1593: 0x2151, 0x1594: 0x2151, 0x1595: 0x2159, 0x1596: 0x2159, 0x1597: 0x2159,\n\t0x1598: 0x2159, 0x1599: 0x2161, 0x159a: 0x2161, 0x159b: 0x2161, 0x159c: 0x2161, 0x159d: 0x2169,\n\t0x159e: 0x2169, 0x159f: 0x2169, 0x15a0: 0x2169, 0x15a1: 0x2171, 0x15a2: 0x2171, 0x15a3: 0x2171,\n\t0x15a4: 0x2171, 0x15a5: 0x2179, 0x15a6: 0x2179, 0x15a7: 0x2179, 0x15a8: 0x2179, 0x15a9: 0x2181,\n\t0x15aa: 0x2181, 0x15ab: 0x2181, 0x15ac: 0x2181, 0x15ad: 0x2189, 0x15ae: 0x2189, 0x15af: 0x1701,\n\t0x15b0: 0x1701, 0x15b1: 0x2191, 0x15b2: 0x2191, 0x15b3: 0x2191, 0x15b4: 0x2191, 0x15b5: 0x2199,\n\t0x15b6: 0x2199, 0x15b7: 0x21a1, 0x15b8: 0x21a1, 0x15b9: 0x21a9, 0x15ba: 0x21a9, 0x15bb: 0x21b1,\n\t0x15bc: 0x21b1, 0x15bd: 0x0040, 0x15be: 0x0040, 0x15bf: 0x03c0,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x0040, 0x15c1: 0x1fca, 0x15c2: 0x21ba, 0x15c3: 0x2002, 0x15c4: 0x203a, 0x15c5: 0x2042,\n\t0x15c6: 0x200a, 0x15c7: 0x21c2, 0x15c8: 0x072a, 0x15c9: 0x0732, 0x15ca: 0x2012, 0x15cb: 0x071a,\n\t0x15cc: 0x1fba, 0x15cd: 0x2019, 0x15ce: 0x0961, 0x15cf: 0x21ca, 0x15d0: 0x06e1, 0x15d1: 0x0049,\n\t0x15d2: 0x0029, 0x15d3: 0x0031, 0x15d4: 0x06e9, 0x15d5: 0x06f1, 0x15d6: 0x06f9, 0x15d7: 0x0701,\n\t0x15d8: 0x0709, 0x15d9: 0x0711, 0x15da: 0x1fc2, 0x15db: 0x0122, 0x15dc: 0x2022, 0x15dd: 0x0722,\n\t0x15de: 0x202a, 0x15df: 0x1fd2, 0x15e0: 0x204a, 0x15e1: 0x0019, 0x15e2: 0x02e9, 0x15e3: 0x03d9,\n\t0x15e4: 0x02f1, 0x15e5: 0x02f9, 0x15e6: 0x03f1, 0x15e7: 0x0309, 0x15e8: 0x00a9, 0x15e9: 0x0311,\n\t0x15ea: 0x00b1, 0x15eb: 0x0319, 0x15ec: 0x0101, 0x15ed: 0x0321, 0x15ee: 0x0329, 0x15ef: 0x0051,\n\t0x15f0: 0x0339, 0x15f1: 0x0751, 0x15f2: 0x00b9, 0x15f3: 0x0089, 0x15f4: 0x0341, 0x15f5: 0x0349,\n\t0x15f6: 0x0391, 0x15f7: 0x00c1, 0x15f8: 0x0109, 0x15f9: 0x00c9, 0x15fa: 0x04b1, 0x15fb: 0x1ff2,\n\t0x15fc: 0x2032, 0x15fd: 0x1ffa, 0x15fe: 0x21d2, 0x15ff: 0x1fda,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x0672, 0x1601: 0x0019, 0x1602: 0x02e9, 0x1603: 0x03d9, 0x1604: 0x02f1, 0x1605: 0x02f9,\n\t0x1606: 0x03f1, 0x1607: 0x0309, 0x1608: 0x00a9, 0x1609: 0x0311, 0x160a: 0x00b1, 0x160b: 0x0319,\n\t0x160c: 0x0101, 0x160d: 0x0321, 0x160e: 0x0329, 0x160f: 0x0051, 0x1610: 0x0339, 0x1611: 0x0751,\n\t0x1612: 0x00b9, 0x1613: 0x0089, 0x1614: 0x0341, 0x1615: 0x0349, 0x1616: 0x0391, 0x1617: 0x00c1,\n\t0x1618: 0x0109, 0x1619: 0x00c9, 0x161a: 0x04b1, 0x161b: 0x1fe2, 0x161c: 0x21da, 0x161d: 0x1fea,\n\t0x161e: 0x21e2, 0x161f: 0x810d, 0x1620: 0x812d, 0x1621: 0x0961, 0x1622: 0x814d, 0x1623: 0x814d,\n\t0x1624: 0x816d, 0x1625: 0x818d, 0x1626: 0x81ad, 0x1627: 0x81cd, 0x1628: 0x81ed, 0x1629: 0x820d,\n\t0x162a: 0x822d, 0x162b: 0x824d, 0x162c: 0x826d, 0x162d: 0x828d, 0x162e: 0x82ad, 0x162f: 0x82cd,\n\t0x1630: 0x82ed, 0x1631: 0x830d, 0x1632: 0x832d, 0x1633: 0x834d, 0x1634: 0x836d, 0x1635: 0x838d,\n\t0x1636: 0x83ad, 0x1637: 0x83cd, 0x1638: 0x83ed, 0x1639: 0x840d, 0x163a: 0x842d, 0x163b: 0x844d,\n\t0x163c: 0x81ed, 0x163d: 0x846d, 0x163e: 0x848d, 0x163f: 0x824d,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x84ad, 0x1641: 0x84cd, 0x1642: 0x84ed, 0x1643: 0x850d, 0x1644: 0x852d, 0x1645: 0x854d,\n\t0x1646: 0x856d, 0x1647: 0x858d, 0x1648: 0x850d, 0x1649: 0x85ad, 0x164a: 0x850d, 0x164b: 0x85cd,\n\t0x164c: 0x85cd, 0x164d: 0x85ed, 0x164e: 0x85ed, 0x164f: 0x860d, 0x1650: 0x854d, 0x1651: 0x862d,\n\t0x1652: 0x864d, 0x1653: 0x862d, 0x1654: 0x866d, 0x1655: 0x864d, 0x1656: 0x868d, 0x1657: 0x868d,\n\t0x1658: 0x86ad, 0x1659: 0x86ad, 0x165a: 0x86cd, 0x165b: 0x86cd, 0x165c: 0x864d, 0x165d: 0x814d,\n\t0x165e: 0x86ed, 0x165f: 0x870d, 0x1660: 0x0040, 0x1661: 0x872d, 0x1662: 0x874d, 0x1663: 0x876d,\n\t0x1664: 0x878d, 0x1665: 0x876d, 0x1666: 0x87ad, 0x1667: 0x87cd, 0x1668: 0x87ed, 0x1669: 0x87ed,\n\t0x166a: 0x880d, 0x166b: 0x880d, 0x166c: 0x882d, 0x166d: 0x882d, 0x166e: 0x880d, 0x166f: 0x880d,\n\t0x1670: 0x884d, 0x1671: 0x886d, 0x1672: 0x888d, 0x1673: 0x88ad, 0x1674: 0x88cd, 0x1675: 0x88ed,\n\t0x1676: 0x88ed, 0x1677: 0x88ed, 0x1678: 0x890d, 0x1679: 0x890d, 0x167a: 0x890d, 0x167b: 0x890d,\n\t0x167c: 0x87ed, 0x167d: 0x87ed, 0x167e: 0x87ed, 0x167f: 0x0040,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x0040, 0x1681: 0x0040, 0x1682: 0x874d, 0x1683: 0x872d, 0x1684: 0x892d, 0x1685: 0x872d,\n\t0x1686: 0x874d, 0x1687: 0x872d, 0x1688: 0x0040, 0x1689: 0x0040, 0x168a: 0x894d, 0x168b: 0x874d,\n\t0x168c: 0x896d, 0x168d: 0x892d, 0x168e: 0x896d, 0x168f: 0x874d, 0x1690: 0x0040, 0x1691: 0x0040,\n\t0x1692: 0x898d, 0x1693: 0x89ad, 0x1694: 0x88ad, 0x1695: 0x896d, 0x1696: 0x892d, 0x1697: 0x896d,\n\t0x1698: 0x0040, 0x1699: 0x0040, 0x169a: 0x89cd, 0x169b: 0x89ed, 0x169c: 0x89cd, 0x169d: 0x0040,\n\t0x169e: 0x0040, 0x169f: 0x0040, 0x16a0: 0x21e9, 0x16a1: 0x21f1, 0x16a2: 0x21f9, 0x16a3: 0x8a0e,\n\t0x16a4: 0x2201, 0x16a5: 0x2209, 0x16a6: 0x8a2d, 0x16a7: 0x0040, 0x16a8: 0x8a4d, 0x16a9: 0x8a6d,\n\t0x16aa: 0x8a8d, 0x16ab: 0x8a6d, 0x16ac: 0x8aad, 0x16ad: 0x8acd, 0x16ae: 0x8aed, 0x16af: 0x0040,\n\t0x16b0: 0x0040, 0x16b1: 0x0040, 0x16b2: 0x0040, 0x16b3: 0x0040, 0x16b4: 0x0040, 0x16b5: 0x0040,\n\t0x16b6: 0x0040, 0x16b7: 0x0040, 0x16b8: 0x0040, 0x16b9: 0x0340, 0x16ba: 0x0340, 0x16bb: 0x0340,\n\t0x16bc: 0x0040, 0x16bd: 0x0040, 0x16be: 0x0040, 0x16bf: 0x0040,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x0a08, 0x16c1: 0x0a08, 0x16c2: 0x0a08, 0x16c3: 0x0a08, 0x16c4: 0x0a08, 0x16c5: 0x0c08,\n\t0x16c6: 0x0808, 0x16c7: 0x0c08, 0x16c8: 0x0818, 0x16c9: 0x0c08, 0x16ca: 0x0c08, 0x16cb: 0x0808,\n\t0x16cc: 0x0808, 0x16cd: 0x0908, 0x16ce: 0x0c08, 0x16cf: 0x0c08, 0x16d0: 0x0c08, 0x16d1: 0x0c08,\n\t0x16d2: 0x0c08, 0x16d3: 0x0a08, 0x16d4: 0x0a08, 0x16d5: 0x0a08, 0x16d6: 0x0a08, 0x16d7: 0x0908,\n\t0x16d8: 0x0a08, 0x16d9: 0x0a08, 0x16da: 0x0a08, 0x16db: 0x0a08, 0x16dc: 0x0a08, 0x16dd: 0x0c08,\n\t0x16de: 0x0a08, 0x16df: 0x0a08, 0x16e0: 0x0a08, 0x16e1: 0x0c08, 0x16e2: 0x0808, 0x16e3: 0x0808,\n\t0x16e4: 0x0c08, 0x16e5: 0x3308, 0x16e6: 0x3308, 0x16e7: 0x0040, 0x16e8: 0x0040, 0x16e9: 0x0040,\n\t0x16ea: 0x0040, 0x16eb: 0x0a18, 0x16ec: 0x0a18, 0x16ed: 0x0a18, 0x16ee: 0x0a18, 0x16ef: 0x0c18,\n\t0x16f0: 0x0818, 0x16f1: 0x0818, 0x16f2: 0x0818, 0x16f3: 0x0818, 0x16f4: 0x0818, 0x16f5: 0x0818,\n\t0x16f6: 0x0818, 0x16f7: 0x0040, 0x16f8: 0x0040, 0x16f9: 0x0040, 0x16fa: 0x0040, 0x16fb: 0x0040,\n\t0x16fc: 0x0040, 0x16fd: 0x0040, 0x16fe: 0x0040, 0x16ff: 0x0040,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0a08, 0x1701: 0x0c08, 0x1702: 0x0a08, 0x1703: 0x0c08, 0x1704: 0x0c08, 0x1705: 0x0c08,\n\t0x1706: 0x0a08, 0x1707: 0x0a08, 0x1708: 0x0a08, 0x1709: 0x0c08, 0x170a: 0x0a08, 0x170b: 0x0a08,\n\t0x170c: 0x0c08, 0x170d: 0x0a08, 0x170e: 0x0c08, 0x170f: 0x0c08, 0x1710: 0x0a08, 0x1711: 0x0c08,\n\t0x1712: 0x0040, 0x1713: 0x0040, 0x1714: 0x0040, 0x1715: 0x0040, 0x1716: 0x0040, 0x1717: 0x0040,\n\t0x1718: 0x0040, 0x1719: 0x0818, 0x171a: 0x0818, 0x171b: 0x0818, 0x171c: 0x0818, 0x171d: 0x0040,\n\t0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0x0040, 0x1721: 0x0040, 0x1722: 0x0040, 0x1723: 0x0040,\n\t0x1724: 0x0040, 0x1725: 0x0040, 0x1726: 0x0040, 0x1727: 0x0040, 0x1728: 0x0040, 0x1729: 0x0c18,\n\t0x172a: 0x0c18, 0x172b: 0x0c18, 0x172c: 0x0c18, 0x172d: 0x0a18, 0x172e: 0x0a18, 0x172f: 0x0818,\n\t0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040,\n\t0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0040, 0x173a: 0x0040, 0x173b: 0x0040,\n\t0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x3308, 0x1741: 0x3308, 0x1742: 0x3008, 0x1743: 0x3008, 0x1744: 0x0040, 0x1745: 0x0008,\n\t0x1746: 0x0008, 0x1747: 0x0008, 0x1748: 0x0008, 0x1749: 0x0008, 0x174a: 0x0008, 0x174b: 0x0008,\n\t0x174c: 0x0008, 0x174d: 0x0040, 0x174e: 0x0040, 0x174f: 0x0008, 0x1750: 0x0008, 0x1751: 0x0040,\n\t0x1752: 0x0040, 0x1753: 0x0008, 0x1754: 0x0008, 0x1755: 0x0008, 0x1756: 0x0008, 0x1757: 0x0008,\n\t0x1758: 0x0008, 0x1759: 0x0008, 0x175a: 0x0008, 0x175b: 0x0008, 0x175c: 0x0008, 0x175d: 0x0008,\n\t0x175e: 0x0008, 0x175f: 0x0008, 0x1760: 0x0008, 0x1761: 0x0008, 0x1762: 0x0008, 0x1763: 0x0008,\n\t0x1764: 0x0008, 0x1765: 0x0008, 0x1766: 0x0008, 0x1767: 0x0008, 0x1768: 0x0008, 0x1769: 0x0040,\n\t0x176a: 0x0008, 0x176b: 0x0008, 0x176c: 0x0008, 0x176d: 0x0008, 0x176e: 0x0008, 0x176f: 0x0008,\n\t0x1770: 0x0008, 0x1771: 0x0040, 0x1772: 0x0008, 0x1773: 0x0008, 0x1774: 0x0040, 0x1775: 0x0008,\n\t0x1776: 0x0008, 0x1777: 0x0008, 0x1778: 0x0008, 0x1779: 0x0008, 0x177a: 0x0040, 0x177b: 0x3308,\n\t0x177c: 0x3308, 0x177d: 0x0008, 0x177e: 0x3008, 0x177f: 0x3008,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x3308, 0x1781: 0x3008, 0x1782: 0x3008, 0x1783: 0x3008, 0x1784: 0x3008, 0x1785: 0x0040,\n\t0x1786: 0x0040, 0x1787: 0x3008, 0x1788: 0x3008, 0x1789: 0x0040, 0x178a: 0x0040, 0x178b: 0x3008,\n\t0x178c: 0x3008, 0x178d: 0x3808, 0x178e: 0x0040, 0x178f: 0x0040, 0x1790: 0x0008, 0x1791: 0x0040,\n\t0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x3008,\n\t0x1798: 0x0040, 0x1799: 0x0040, 0x179a: 0x0040, 0x179b: 0x0040, 0x179c: 0x0040, 0x179d: 0x0008,\n\t0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x3008, 0x17a3: 0x3008,\n\t0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x3308, 0x17a7: 0x3308, 0x17a8: 0x3308, 0x17a9: 0x3308,\n\t0x17aa: 0x3308, 0x17ab: 0x3308, 0x17ac: 0x3308, 0x17ad: 0x0040, 0x17ae: 0x0040, 0x17af: 0x0040,\n\t0x17b0: 0x3308, 0x17b1: 0x3308, 0x17b2: 0x3308, 0x17b3: 0x3308, 0x17b4: 0x3308, 0x17b5: 0x0040,\n\t0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040,\n\t0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x0008, 0x17c1: 0x0008, 0x17c2: 0x0008, 0x17c3: 0x0008, 0x17c4: 0x0008, 0x17c5: 0x0008,\n\t0x17c6: 0x0008, 0x17c7: 0x0040, 0x17c8: 0x0040, 0x17c9: 0x0008, 0x17ca: 0x0040, 0x17cb: 0x0040,\n\t0x17cc: 0x0008, 0x17cd: 0x0008, 0x17ce: 0x0008, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0008,\n\t0x17d2: 0x0008, 0x17d3: 0x0008, 0x17d4: 0x0040, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0040,\n\t0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008,\n\t0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008,\n\t0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0008,\n\t0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008,\n\t0x17f0: 0x3008, 0x17f1: 0x3008, 0x17f2: 0x3008, 0x17f3: 0x3008, 0x17f4: 0x3008, 0x17f5: 0x3008,\n\t0x17f6: 0x0040, 0x17f7: 0x3008, 0x17f8: 0x3008, 0x17f9: 0x0040, 0x17fa: 0x0040, 0x17fb: 0x3308,\n\t0x17fc: 0x3308, 0x17fd: 0x3808, 0x17fe: 0x3b08, 0x17ff: 0x0008,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x0019, 0x1801: 0x02e9, 0x1802: 0x03d9, 0x1803: 0x02f1, 0x1804: 0x02f9, 0x1805: 0x03f1,\n\t0x1806: 0x0309, 0x1807: 0x00a9, 0x1808: 0x0311, 0x1809: 0x00b1, 0x180a: 0x0319, 0x180b: 0x0101,\n\t0x180c: 0x0321, 0x180d: 0x0329, 0x180e: 0x0051, 0x180f: 0x0339, 0x1810: 0x0751, 0x1811: 0x00b9,\n\t0x1812: 0x0089, 0x1813: 0x0341, 0x1814: 0x0349, 0x1815: 0x0391, 0x1816: 0x00c1, 0x1817: 0x0109,\n\t0x1818: 0x00c9, 0x1819: 0x04b1, 0x181a: 0x0019, 0x181b: 0x02e9, 0x181c: 0x03d9, 0x181d: 0x02f1,\n\t0x181e: 0x02f9, 0x181f: 0x03f1, 0x1820: 0x0309, 0x1821: 0x00a9, 0x1822: 0x0311, 0x1823: 0x00b1,\n\t0x1824: 0x0319, 0x1825: 0x0101, 0x1826: 0x0321, 0x1827: 0x0329, 0x1828: 0x0051, 0x1829: 0x0339,\n\t0x182a: 0x0751, 0x182b: 0x00b9, 0x182c: 0x0089, 0x182d: 0x0341, 0x182e: 0x0349, 0x182f: 0x0391,\n\t0x1830: 0x00c1, 0x1831: 0x0109, 0x1832: 0x00c9, 0x1833: 0x04b1, 0x1834: 0x0019, 0x1835: 0x02e9,\n\t0x1836: 0x03d9, 0x1837: 0x02f1, 0x1838: 0x02f9, 0x1839: 0x03f1, 0x183a: 0x0309, 0x183b: 0x00a9,\n\t0x183c: 0x0311, 0x183d: 0x00b1, 0x183e: 0x0319, 0x183f: 0x0101,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x0321, 0x1841: 0x0329, 0x1842: 0x0051, 0x1843: 0x0339, 0x1844: 0x0751, 0x1845: 0x00b9,\n\t0x1846: 0x0089, 0x1847: 0x0341, 0x1848: 0x0349, 0x1849: 0x0391, 0x184a: 0x00c1, 0x184b: 0x0109,\n\t0x184c: 0x00c9, 0x184d: 0x04b1, 0x184e: 0x0019, 0x184f: 0x02e9, 0x1850: 0x03d9, 0x1851: 0x02f1,\n\t0x1852: 0x02f9, 0x1853: 0x03f1, 0x1854: 0x0309, 0x1855: 0x0040, 0x1856: 0x0311, 0x1857: 0x00b1,\n\t0x1858: 0x0319, 0x1859: 0x0101, 0x185a: 0x0321, 0x185b: 0x0329, 0x185c: 0x0051, 0x185d: 0x0339,\n\t0x185e: 0x0751, 0x185f: 0x00b9, 0x1860: 0x0089, 0x1861: 0x0341, 0x1862: 0x0349, 0x1863: 0x0391,\n\t0x1864: 0x00c1, 0x1865: 0x0109, 0x1866: 0x00c9, 0x1867: 0x04b1, 0x1868: 0x0019, 0x1869: 0x02e9,\n\t0x186a: 0x03d9, 0x186b: 0x02f1, 0x186c: 0x02f9, 0x186d: 0x03f1, 0x186e: 0x0309, 0x186f: 0x00a9,\n\t0x1870: 0x0311, 0x1871: 0x00b1, 0x1872: 0x0319, 0x1873: 0x0101, 0x1874: 0x0321, 0x1875: 0x0329,\n\t0x1876: 0x0051, 0x1877: 0x0339, 0x1878: 0x0751, 0x1879: 0x00b9, 0x187a: 0x0089, 0x187b: 0x0341,\n\t0x187c: 0x0349, 0x187d: 0x0391, 0x187e: 0x00c1, 0x187f: 0x0109,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x00c9, 0x1881: 0x04b1, 0x1882: 0x0019, 0x1883: 0x02e9, 0x1884: 0x03d9, 0x1885: 0x02f1,\n\t0x1886: 0x02f9, 0x1887: 0x03f1, 0x1888: 0x0309, 0x1889: 0x00a9, 0x188a: 0x0311, 0x188b: 0x00b1,\n\t0x188c: 0x0319, 0x188d: 0x0101, 0x188e: 0x0321, 0x188f: 0x0329, 0x1890: 0x0051, 0x1891: 0x0339,\n\t0x1892: 0x0751, 0x1893: 0x00b9, 0x1894: 0x0089, 0x1895: 0x0341, 0x1896: 0x0349, 0x1897: 0x0391,\n\t0x1898: 0x00c1, 0x1899: 0x0109, 0x189a: 0x00c9, 0x189b: 0x04b1, 0x189c: 0x0019, 0x189d: 0x0040,\n\t0x189e: 0x03d9, 0x189f: 0x02f1, 0x18a0: 0x0040, 0x18a1: 0x0040, 0x18a2: 0x0309, 0x18a3: 0x0040,\n\t0x18a4: 0x0040, 0x18a5: 0x00b1, 0x18a6: 0x0319, 0x18a7: 0x0040, 0x18a8: 0x0040, 0x18a9: 0x0329,\n\t0x18aa: 0x0051, 0x18ab: 0x0339, 0x18ac: 0x0751, 0x18ad: 0x0040, 0x18ae: 0x0089, 0x18af: 0x0341,\n\t0x18b0: 0x0349, 0x18b1: 0x0391, 0x18b2: 0x00c1, 0x18b3: 0x0109, 0x18b4: 0x00c9, 0x18b5: 0x04b1,\n\t0x18b6: 0x0019, 0x18b7: 0x02e9, 0x18b8: 0x03d9, 0x18b9: 0x02f1, 0x18ba: 0x0040, 0x18bb: 0x03f1,\n\t0x18bc: 0x0040, 0x18bd: 0x00a9, 0x18be: 0x0311, 0x18bf: 0x00b1,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x0319, 0x18c1: 0x0101, 0x18c2: 0x0321, 0x18c3: 0x0329, 0x18c4: 0x0040, 0x18c5: 0x0339,\n\t0x18c6: 0x0751, 0x18c7: 0x00b9, 0x18c8: 0x0089, 0x18c9: 0x0341, 0x18ca: 0x0349, 0x18cb: 0x0391,\n\t0x18cc: 0x00c1, 0x18cd: 0x0109, 0x18ce: 0x00c9, 0x18cf: 0x04b1, 0x18d0: 0x0019, 0x18d1: 0x02e9,\n\t0x18d2: 0x03d9, 0x18d3: 0x02f1, 0x18d4: 0x02f9, 0x18d5: 0x03f1, 0x18d6: 0x0309, 0x18d7: 0x00a9,\n\t0x18d8: 0x0311, 0x18d9: 0x00b1, 0x18da: 0x0319, 0x18db: 0x0101, 0x18dc: 0x0321, 0x18dd: 0x0329,\n\t0x18de: 0x0051, 0x18df: 0x0339, 0x18e0: 0x0751, 0x18e1: 0x00b9, 0x18e2: 0x0089, 0x18e3: 0x0341,\n\t0x18e4: 0x0349, 0x18e5: 0x0391, 0x18e6: 0x00c1, 0x18e7: 0x0109, 0x18e8: 0x00c9, 0x18e9: 0x04b1,\n\t0x18ea: 0x0019, 0x18eb: 0x02e9, 0x18ec: 0x03d9, 0x18ed: 0x02f1, 0x18ee: 0x02f9, 0x18ef: 0x03f1,\n\t0x18f0: 0x0309, 0x18f1: 0x00a9, 0x18f2: 0x0311, 0x18f3: 0x00b1, 0x18f4: 0x0319, 0x18f5: 0x0101,\n\t0x18f6: 0x0321, 0x18f7: 0x0329, 0x18f8: 0x0051, 0x18f9: 0x0339, 0x18fa: 0x0751, 0x18fb: 0x00b9,\n\t0x18fc: 0x0089, 0x18fd: 0x0341, 0x18fe: 0x0349, 0x18ff: 0x0391,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x00c1, 0x1901: 0x0109, 0x1902: 0x00c9, 0x1903: 0x04b1, 0x1904: 0x0019, 0x1905: 0x02e9,\n\t0x1906: 0x0040, 0x1907: 0x02f1, 0x1908: 0x02f9, 0x1909: 0x03f1, 0x190a: 0x0309, 0x190b: 0x0040,\n\t0x190c: 0x0040, 0x190d: 0x00b1, 0x190e: 0x0319, 0x190f: 0x0101, 0x1910: 0x0321, 0x1911: 0x0329,\n\t0x1912: 0x0051, 0x1913: 0x0339, 0x1914: 0x0751, 0x1915: 0x0040, 0x1916: 0x0089, 0x1917: 0x0341,\n\t0x1918: 0x0349, 0x1919: 0x0391, 0x191a: 0x00c1, 0x191b: 0x0109, 0x191c: 0x00c9, 0x191d: 0x0040,\n\t0x191e: 0x0019, 0x191f: 0x02e9, 0x1920: 0x03d9, 0x1921: 0x02f1, 0x1922: 0x02f9, 0x1923: 0x03f1,\n\t0x1924: 0x0309, 0x1925: 0x00a9, 0x1926: 0x0311, 0x1927: 0x00b1, 0x1928: 0x0319, 0x1929: 0x0101,\n\t0x192a: 0x0321, 0x192b: 0x0329, 0x192c: 0x0051, 0x192d: 0x0339, 0x192e: 0x0751, 0x192f: 0x00b9,\n\t0x1930: 0x0089, 0x1931: 0x0341, 0x1932: 0x0349, 0x1933: 0x0391, 0x1934: 0x00c1, 0x1935: 0x0109,\n\t0x1936: 0x00c9, 0x1937: 0x04b1, 0x1938: 0x0019, 0x1939: 0x02e9, 0x193a: 0x0040, 0x193b: 0x02f1,\n\t0x193c: 0x02f9, 0x193d: 0x03f1, 0x193e: 0x0309, 0x193f: 0x0040,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x0311, 0x1941: 0x00b1, 0x1942: 0x0319, 0x1943: 0x0101, 0x1944: 0x0321, 0x1945: 0x0040,\n\t0x1946: 0x0051, 0x1947: 0x0040, 0x1948: 0x0040, 0x1949: 0x0040, 0x194a: 0x0089, 0x194b: 0x0341,\n\t0x194c: 0x0349, 0x194d: 0x0391, 0x194e: 0x00c1, 0x194f: 0x0109, 0x1950: 0x00c9, 0x1951: 0x0040,\n\t0x1952: 0x0019, 0x1953: 0x02e9, 0x1954: 0x03d9, 0x1955: 0x02f1, 0x1956: 0x02f9, 0x1957: 0x03f1,\n\t0x1958: 0x0309, 0x1959: 0x00a9, 0x195a: 0x0311, 0x195b: 0x00b1, 0x195c: 0x0319, 0x195d: 0x0101,\n\t0x195e: 0x0321, 0x195f: 0x0329, 0x1960: 0x0051, 0x1961: 0x0339, 0x1962: 0x0751, 0x1963: 0x00b9,\n\t0x1964: 0x0089, 0x1965: 0x0341, 0x1966: 0x0349, 0x1967: 0x0391, 0x1968: 0x00c1, 0x1969: 0x0109,\n\t0x196a: 0x00c9, 0x196b: 0x04b1, 0x196c: 0x0019, 0x196d: 0x02e9, 0x196e: 0x03d9, 0x196f: 0x02f1,\n\t0x1970: 0x02f9, 0x1971: 0x03f1, 0x1972: 0x0309, 0x1973: 0x00a9, 0x1974: 0x0311, 0x1975: 0x00b1,\n\t0x1976: 0x0319, 0x1977: 0x0101, 0x1978: 0x0321, 0x1979: 0x0329, 0x197a: 0x0051, 0x197b: 0x0339,\n\t0x197c: 0x0751, 0x197d: 0x00b9, 0x197e: 0x0089, 0x197f: 0x0341,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x0349, 0x1981: 0x0391, 0x1982: 0x00c1, 0x1983: 0x0109, 0x1984: 0x00c9, 0x1985: 0x04b1,\n\t0x1986: 0x0019, 0x1987: 0x02e9, 0x1988: 0x03d9, 0x1989: 0x02f1, 0x198a: 0x02f9, 0x198b: 0x03f1,\n\t0x198c: 0x0309, 0x198d: 0x00a9, 0x198e: 0x0311, 0x198f: 0x00b1, 0x1990: 0x0319, 0x1991: 0x0101,\n\t0x1992: 0x0321, 0x1993: 0x0329, 0x1994: 0x0051, 0x1995: 0x0339, 0x1996: 0x0751, 0x1997: 0x00b9,\n\t0x1998: 0x0089, 0x1999: 0x0341, 0x199a: 0x0349, 0x199b: 0x0391, 0x199c: 0x00c1, 0x199d: 0x0109,\n\t0x199e: 0x00c9, 0x199f: 0x04b1, 0x19a0: 0x0019, 0x19a1: 0x02e9, 0x19a2: 0x03d9, 0x19a3: 0x02f1,\n\t0x19a4: 0x02f9, 0x19a5: 0x03f1, 0x19a6: 0x0309, 0x19a7: 0x00a9, 0x19a8: 0x0311, 0x19a9: 0x00b1,\n\t0x19aa: 0x0319, 0x19ab: 0x0101, 0x19ac: 0x0321, 0x19ad: 0x0329, 0x19ae: 0x0051, 0x19af: 0x0339,\n\t0x19b0: 0x0751, 0x19b1: 0x00b9, 0x19b2: 0x0089, 0x19b3: 0x0341, 0x19b4: 0x0349, 0x19b5: 0x0391,\n\t0x19b6: 0x00c1, 0x19b7: 0x0109, 0x19b8: 0x00c9, 0x19b9: 0x04b1, 0x19ba: 0x0019, 0x19bb: 0x02e9,\n\t0x19bc: 0x03d9, 0x19bd: 0x02f1, 0x19be: 0x02f9, 0x19bf: 0x03f1,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x0309, 0x19c1: 0x00a9, 0x19c2: 0x0311, 0x19c3: 0x00b1, 0x19c4: 0x0319, 0x19c5: 0x0101,\n\t0x19c6: 0x0321, 0x19c7: 0x0329, 0x19c8: 0x0051, 0x19c9: 0x0339, 0x19ca: 0x0751, 0x19cb: 0x00b9,\n\t0x19cc: 0x0089, 0x19cd: 0x0341, 0x19ce: 0x0349, 0x19cf: 0x0391, 0x19d0: 0x00c1, 0x19d1: 0x0109,\n\t0x19d2: 0x00c9, 0x19d3: 0x04b1, 0x19d4: 0x0019, 0x19d5: 0x02e9, 0x19d6: 0x03d9, 0x19d7: 0x02f1,\n\t0x19d8: 0x02f9, 0x19d9: 0x03f1, 0x19da: 0x0309, 0x19db: 0x00a9, 0x19dc: 0x0311, 0x19dd: 0x00b1,\n\t0x19de: 0x0319, 0x19df: 0x0101, 0x19e0: 0x0321, 0x19e1: 0x0329, 0x19e2: 0x0051, 0x19e3: 0x0339,\n\t0x19e4: 0x0751, 0x19e5: 0x00b9, 0x19e6: 0x0089, 0x19e7: 0x0341, 0x19e8: 0x0349, 0x19e9: 0x0391,\n\t0x19ea: 0x00c1, 0x19eb: 0x0109, 0x19ec: 0x00c9, 0x19ed: 0x04b1, 0x19ee: 0x0019, 0x19ef: 0x02e9,\n\t0x19f0: 0x03d9, 0x19f1: 0x02f1, 0x19f2: 0x02f9, 0x19f3: 0x03f1, 0x19f4: 0x0309, 0x19f5: 0x00a9,\n\t0x19f6: 0x0311, 0x19f7: 0x00b1, 0x19f8: 0x0319, 0x19f9: 0x0101, 0x19fa: 0x0321, 0x19fb: 0x0329,\n\t0x19fc: 0x0051, 0x19fd: 0x0339, 0x19fe: 0x0751, 0x19ff: 0x00b9,\n\t// Block 0x68, offset 0x1a00\n\t0x1a00: 0x0089, 0x1a01: 0x0341, 0x1a02: 0x0349, 0x1a03: 0x0391, 0x1a04: 0x00c1, 0x1a05: 0x0109,\n\t0x1a06: 0x00c9, 0x1a07: 0x04b1, 0x1a08: 0x0019, 0x1a09: 0x02e9, 0x1a0a: 0x03d9, 0x1a0b: 0x02f1,\n\t0x1a0c: 0x02f9, 0x1a0d: 0x03f1, 0x1a0e: 0x0309, 0x1a0f: 0x00a9, 0x1a10: 0x0311, 0x1a11: 0x00b1,\n\t0x1a12: 0x0319, 0x1a13: 0x0101, 0x1a14: 0x0321, 0x1a15: 0x0329, 0x1a16: 0x0051, 0x1a17: 0x0339,\n\t0x1a18: 0x0751, 0x1a19: 0x00b9, 0x1a1a: 0x0089, 0x1a1b: 0x0341, 0x1a1c: 0x0349, 0x1a1d: 0x0391,\n\t0x1a1e: 0x00c1, 0x1a1f: 0x0109, 0x1a20: 0x00c9, 0x1a21: 0x04b1, 0x1a22: 0x0019, 0x1a23: 0x02e9,\n\t0x1a24: 0x03d9, 0x1a25: 0x02f1, 0x1a26: 0x02f9, 0x1a27: 0x03f1, 0x1a28: 0x0309, 0x1a29: 0x00a9,\n\t0x1a2a: 0x0311, 0x1a2b: 0x00b1, 0x1a2c: 0x0319, 0x1a2d: 0x0101, 0x1a2e: 0x0321, 0x1a2f: 0x0329,\n\t0x1a30: 0x0051, 0x1a31: 0x0339, 0x1a32: 0x0751, 0x1a33: 0x00b9, 0x1a34: 0x0089, 0x1a35: 0x0341,\n\t0x1a36: 0x0349, 0x1a37: 0x0391, 0x1a38: 0x00c1, 0x1a39: 0x0109, 0x1a3a: 0x00c9, 0x1a3b: 0x04b1,\n\t0x1a3c: 0x0019, 0x1a3d: 0x02e9, 0x1a3e: 0x03d9, 0x1a3f: 0x02f1,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x02f9, 0x1a41: 0x03f1, 0x1a42: 0x0309, 0x1a43: 0x00a9, 0x1a44: 0x0311, 0x1a45: 0x00b1,\n\t0x1a46: 0x0319, 0x1a47: 0x0101, 0x1a48: 0x0321, 0x1a49: 0x0329, 0x1a4a: 0x0051, 0x1a4b: 0x0339,\n\t0x1a4c: 0x0751, 0x1a4d: 0x00b9, 0x1a4e: 0x0089, 0x1a4f: 0x0341, 0x1a50: 0x0349, 0x1a51: 0x0391,\n\t0x1a52: 0x00c1, 0x1a53: 0x0109, 0x1a54: 0x00c9, 0x1a55: 0x04b1, 0x1a56: 0x0019, 0x1a57: 0x02e9,\n\t0x1a58: 0x03d9, 0x1a59: 0x02f1, 0x1a5a: 0x02f9, 0x1a5b: 0x03f1, 0x1a5c: 0x0309, 0x1a5d: 0x00a9,\n\t0x1a5e: 0x0311, 0x1a5f: 0x00b1, 0x1a60: 0x0319, 0x1a61: 0x0101, 0x1a62: 0x0321, 0x1a63: 0x0329,\n\t0x1a64: 0x0051, 0x1a65: 0x0339, 0x1a66: 0x0751, 0x1a67: 0x00b9, 0x1a68: 0x0089, 0x1a69: 0x0341,\n\t0x1a6a: 0x0349, 0x1a6b: 0x0391, 0x1a6c: 0x00c1, 0x1a6d: 0x0109, 0x1a6e: 0x00c9, 0x1a6f: 0x04b1,\n\t0x1a70: 0x0019, 0x1a71: 0x02e9, 0x1a72: 0x03d9, 0x1a73: 0x02f1, 0x1a74: 0x02f9, 0x1a75: 0x03f1,\n\t0x1a76: 0x0309, 0x1a77: 0x00a9, 0x1a78: 0x0311, 0x1a79: 0x00b1, 0x1a7a: 0x0319, 0x1a7b: 0x0101,\n\t0x1a7c: 0x0321, 0x1a7d: 0x0329, 0x1a7e: 0x0051, 0x1a7f: 0x0339,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x0751, 0x1a81: 0x00b9, 0x1a82: 0x0089, 0x1a83: 0x0341, 0x1a84: 0x0349, 0x1a85: 0x0391,\n\t0x1a86: 0x00c1, 0x1a87: 0x0109, 0x1a88: 0x00c9, 0x1a89: 0x04b1, 0x1a8a: 0x0019, 0x1a8b: 0x02e9,\n\t0x1a8c: 0x03d9, 0x1a8d: 0x02f1, 0x1a8e: 0x02f9, 0x1a8f: 0x03f1, 0x1a90: 0x0309, 0x1a91: 0x00a9,\n\t0x1a92: 0x0311, 0x1a93: 0x00b1, 0x1a94: 0x0319, 0x1a95: 0x0101, 0x1a96: 0x0321, 0x1a97: 0x0329,\n\t0x1a98: 0x0051, 0x1a99: 0x0339, 0x1a9a: 0x0751, 0x1a9b: 0x00b9, 0x1a9c: 0x0089, 0x1a9d: 0x0341,\n\t0x1a9e: 0x0349, 0x1a9f: 0x0391, 0x1aa0: 0x00c1, 0x1aa1: 0x0109, 0x1aa2: 0x00c9, 0x1aa3: 0x04b1,\n\t0x1aa4: 0x2279, 0x1aa5: 0x2281, 0x1aa6: 0x0040, 0x1aa7: 0x0040, 0x1aa8: 0x2289, 0x1aa9: 0x0399,\n\t0x1aaa: 0x03a1, 0x1aab: 0x03a9, 0x1aac: 0x2291, 0x1aad: 0x2299, 0x1aae: 0x22a1, 0x1aaf: 0x04d1,\n\t0x1ab0: 0x05f9, 0x1ab1: 0x22a9, 0x1ab2: 0x22b1, 0x1ab3: 0x22b9, 0x1ab4: 0x22c1, 0x1ab5: 0x22c9,\n\t0x1ab6: 0x22d1, 0x1ab7: 0x0799, 0x1ab8: 0x03c1, 0x1ab9: 0x04d1, 0x1aba: 0x22d9, 0x1abb: 0x22e1,\n\t0x1abc: 0x22e9, 0x1abd: 0x03b1, 0x1abe: 0x03b9, 0x1abf: 0x22f1,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x0769, 0x1ac1: 0x22f9, 0x1ac2: 0x2289, 0x1ac3: 0x0399, 0x1ac4: 0x03a1, 0x1ac5: 0x03a9,\n\t0x1ac6: 0x2291, 0x1ac7: 0x2299, 0x1ac8: 0x22a1, 0x1ac9: 0x04d1, 0x1aca: 0x05f9, 0x1acb: 0x22a9,\n\t0x1acc: 0x22b1, 0x1acd: 0x22b9, 0x1ace: 0x22c1, 0x1acf: 0x22c9, 0x1ad0: 0x22d1, 0x1ad1: 0x0799,\n\t0x1ad2: 0x03c1, 0x1ad3: 0x22d9, 0x1ad4: 0x22d9, 0x1ad5: 0x22e1, 0x1ad6: 0x22e9, 0x1ad7: 0x03b1,\n\t0x1ad8: 0x03b9, 0x1ad9: 0x22f1, 0x1ada: 0x0769, 0x1adb: 0x2301, 0x1adc: 0x2291, 0x1add: 0x04d1,\n\t0x1ade: 0x22a9, 0x1adf: 0x03b1, 0x1ae0: 0x03c1, 0x1ae1: 0x0799, 0x1ae2: 0x2289, 0x1ae3: 0x0399,\n\t0x1ae4: 0x03a1, 0x1ae5: 0x03a9, 0x1ae6: 0x2291, 0x1ae7: 0x2299, 0x1ae8: 0x22a1, 0x1ae9: 0x04d1,\n\t0x1aea: 0x05f9, 0x1aeb: 0x22a9, 0x1aec: 0x22b1, 0x1aed: 0x22b9, 0x1aee: 0x22c1, 0x1aef: 0x22c9,\n\t0x1af0: 0x22d1, 0x1af1: 0x0799, 0x1af2: 0x03c1, 0x1af3: 0x04d1, 0x1af4: 0x22d9, 0x1af5: 0x22e1,\n\t0x1af6: 0x22e9, 0x1af7: 0x03b1, 0x1af8: 0x03b9, 0x1af9: 0x22f1, 0x1afa: 0x0769, 0x1afb: 0x22f9,\n\t0x1afc: 0x2289, 0x1afd: 0x0399, 0x1afe: 0x03a1, 0x1aff: 0x03a9,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x2291, 0x1b01: 0x2299, 0x1b02: 0x22a1, 0x1b03: 0x04d1, 0x1b04: 0x05f9, 0x1b05: 0x22a9,\n\t0x1b06: 0x22b1, 0x1b07: 0x22b9, 0x1b08: 0x22c1, 0x1b09: 0x22c9, 0x1b0a: 0x22d1, 0x1b0b: 0x0799,\n\t0x1b0c: 0x03c1, 0x1b0d: 0x22d9, 0x1b0e: 0x22d9, 0x1b0f: 0x22e1, 0x1b10: 0x22e9, 0x1b11: 0x03b1,\n\t0x1b12: 0x03b9, 0x1b13: 0x22f1, 0x1b14: 0x0769, 0x1b15: 0x2301, 0x1b16: 0x2291, 0x1b17: 0x04d1,\n\t0x1b18: 0x22a9, 0x1b19: 0x03b1, 0x1b1a: 0x03c1, 0x1b1b: 0x0799, 0x1b1c: 0x2289, 0x1b1d: 0x0399,\n\t0x1b1e: 0x03a1, 0x1b1f: 0x03a9, 0x1b20: 0x2291, 0x1b21: 0x2299, 0x1b22: 0x22a1, 0x1b23: 0x04d1,\n\t0x1b24: 0x05f9, 0x1b25: 0x22a9, 0x1b26: 0x22b1, 0x1b27: 0x22b9, 0x1b28: 0x22c1, 0x1b29: 0x22c9,\n\t0x1b2a: 0x22d1, 0x1b2b: 0x0799, 0x1b2c: 0x03c1, 0x1b2d: 0x04d1, 0x1b2e: 0x22d9, 0x1b2f: 0x22e1,\n\t0x1b30: 0x22e9, 0x1b31: 0x03b1, 0x1b32: 0x03b9, 0x1b33: 0x22f1, 0x1b34: 0x0769, 0x1b35: 0x22f9,\n\t0x1b36: 0x2289, 0x1b37: 0x0399, 0x1b38: 0x03a1, 0x1b39: 0x03a9, 0x1b3a: 0x2291, 0x1b3b: 0x2299,\n\t0x1b3c: 0x22a1, 0x1b3d: 0x04d1, 0x1b3e: 0x05f9, 0x1b3f: 0x22a9,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x22b1, 0x1b41: 0x22b9, 0x1b42: 0x22c1, 0x1b43: 0x22c9, 0x1b44: 0x22d1, 0x1b45: 0x0799,\n\t0x1b46: 0x03c1, 0x1b47: 0x22d9, 0x1b48: 0x22d9, 0x1b49: 0x22e1, 0x1b4a: 0x22e9, 0x1b4b: 0x03b1,\n\t0x1b4c: 0x03b9, 0x1b4d: 0x22f1, 0x1b4e: 0x0769, 0x1b4f: 0x2301, 0x1b50: 0x2291, 0x1b51: 0x04d1,\n\t0x1b52: 0x22a9, 0x1b53: 0x03b1, 0x1b54: 0x03c1, 0x1b55: 0x0799, 0x1b56: 0x2289, 0x1b57: 0x0399,\n\t0x1b58: 0x03a1, 0x1b59: 0x03a9, 0x1b5a: 0x2291, 0x1b5b: 0x2299, 0x1b5c: 0x22a1, 0x1b5d: 0x04d1,\n\t0x1b5e: 0x05f9, 0x1b5f: 0x22a9, 0x1b60: 0x22b1, 0x1b61: 0x22b9, 0x1b62: 0x22c1, 0x1b63: 0x22c9,\n\t0x1b64: 0x22d1, 0x1b65: 0x0799, 0x1b66: 0x03c1, 0x1b67: 0x04d1, 0x1b68: 0x22d9, 0x1b69: 0x22e1,\n\t0x1b6a: 0x22e9, 0x1b6b: 0x03b1, 0x1b6c: 0x03b9, 0x1b6d: 0x22f1, 0x1b6e: 0x0769, 0x1b6f: 0x22f9,\n\t0x1b70: 0x2289, 0x1b71: 0x0399, 0x1b72: 0x03a1, 0x1b73: 0x03a9, 0x1b74: 0x2291, 0x1b75: 0x2299,\n\t0x1b76: 0x22a1, 0x1b77: 0x04d1, 0x1b78: 0x05f9, 0x1b79: 0x22a9, 0x1b7a: 0x22b1, 0x1b7b: 0x22b9,\n\t0x1b7c: 0x22c1, 0x1b7d: 0x22c9, 0x1b7e: 0x22d1, 0x1b7f: 0x0799,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x03c1, 0x1b81: 0x22d9, 0x1b82: 0x22d9, 0x1b83: 0x22e1, 0x1b84: 0x22e9, 0x1b85: 0x03b1,\n\t0x1b86: 0x03b9, 0x1b87: 0x22f1, 0x1b88: 0x0769, 0x1b89: 0x2301, 0x1b8a: 0x2291, 0x1b8b: 0x04d1,\n\t0x1b8c: 0x22a9, 0x1b8d: 0x03b1, 0x1b8e: 0x03c1, 0x1b8f: 0x0799, 0x1b90: 0x2289, 0x1b91: 0x0399,\n\t0x1b92: 0x03a1, 0x1b93: 0x03a9, 0x1b94: 0x2291, 0x1b95: 0x2299, 0x1b96: 0x22a1, 0x1b97: 0x04d1,\n\t0x1b98: 0x05f9, 0x1b99: 0x22a9, 0x1b9a: 0x22b1, 0x1b9b: 0x22b9, 0x1b9c: 0x22c1, 0x1b9d: 0x22c9,\n\t0x1b9e: 0x22d1, 0x1b9f: 0x0799, 0x1ba0: 0x03c1, 0x1ba1: 0x04d1, 0x1ba2: 0x22d9, 0x1ba3: 0x22e1,\n\t0x1ba4: 0x22e9, 0x1ba5: 0x03b1, 0x1ba6: 0x03b9, 0x1ba7: 0x22f1, 0x1ba8: 0x0769, 0x1ba9: 0x22f9,\n\t0x1baa: 0x2289, 0x1bab: 0x0399, 0x1bac: 0x03a1, 0x1bad: 0x03a9, 0x1bae: 0x2291, 0x1baf: 0x2299,\n\t0x1bb0: 0x22a1, 0x1bb1: 0x04d1, 0x1bb2: 0x05f9, 0x1bb3: 0x22a9, 0x1bb4: 0x22b1, 0x1bb5: 0x22b9,\n\t0x1bb6: 0x22c1, 0x1bb7: 0x22c9, 0x1bb8: 0x22d1, 0x1bb9: 0x0799, 0x1bba: 0x03c1, 0x1bbb: 0x22d9,\n\t0x1bbc: 0x22d9, 0x1bbd: 0x22e1, 0x1bbe: 0x22e9, 0x1bbf: 0x03b1,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x03b9, 0x1bc1: 0x22f1, 0x1bc2: 0x0769, 0x1bc3: 0x2301, 0x1bc4: 0x2291, 0x1bc5: 0x04d1,\n\t0x1bc6: 0x22a9, 0x1bc7: 0x03b1, 0x1bc8: 0x03c1, 0x1bc9: 0x0799, 0x1bca: 0x2309, 0x1bcb: 0x2309,\n\t0x1bcc: 0x0040, 0x1bcd: 0x0040, 0x1bce: 0x06e1, 0x1bcf: 0x0049, 0x1bd0: 0x0029, 0x1bd1: 0x0031,\n\t0x1bd2: 0x06e9, 0x1bd3: 0x06f1, 0x1bd4: 0x06f9, 0x1bd5: 0x0701, 0x1bd6: 0x0709, 0x1bd7: 0x0711,\n\t0x1bd8: 0x06e1, 0x1bd9: 0x0049, 0x1bda: 0x0029, 0x1bdb: 0x0031, 0x1bdc: 0x06e9, 0x1bdd: 0x06f1,\n\t0x1bde: 0x06f9, 0x1bdf: 0x0701, 0x1be0: 0x0709, 0x1be1: 0x0711, 0x1be2: 0x06e1, 0x1be3: 0x0049,\n\t0x1be4: 0x0029, 0x1be5: 0x0031, 0x1be6: 0x06e9, 0x1be7: 0x06f1, 0x1be8: 0x06f9, 0x1be9: 0x0701,\n\t0x1bea: 0x0709, 0x1beb: 0x0711, 0x1bec: 0x06e1, 0x1bed: 0x0049, 0x1bee: 0x0029, 0x1bef: 0x0031,\n\t0x1bf0: 0x06e9, 0x1bf1: 0x06f1, 0x1bf2: 0x06f9, 0x1bf3: 0x0701, 0x1bf4: 0x0709, 0x1bf5: 0x0711,\n\t0x1bf6: 0x06e1, 0x1bf7: 0x0049, 0x1bf8: 0x0029, 0x1bf9: 0x0031, 0x1bfa: 0x06e9, 0x1bfb: 0x06f1,\n\t0x1bfc: 0x06f9, 0x1bfd: 0x0701, 0x1bfe: 0x0709, 0x1bff: 0x0711,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0xe115, 0x1c01: 0xe115, 0x1c02: 0xe135, 0x1c03: 0xe135, 0x1c04: 0xe115, 0x1c05: 0xe115,\n\t0x1c06: 0xe175, 0x1c07: 0xe175, 0x1c08: 0xe115, 0x1c09: 0xe115, 0x1c0a: 0xe135, 0x1c0b: 0xe135,\n\t0x1c0c: 0xe115, 0x1c0d: 0xe115, 0x1c0e: 0xe1f5, 0x1c0f: 0xe1f5, 0x1c10: 0xe115, 0x1c11: 0xe115,\n\t0x1c12: 0xe135, 0x1c13: 0xe135, 0x1c14: 0xe115, 0x1c15: 0xe115, 0x1c16: 0xe175, 0x1c17: 0xe175,\n\t0x1c18: 0xe115, 0x1c19: 0xe115, 0x1c1a: 0xe135, 0x1c1b: 0xe135, 0x1c1c: 0xe115, 0x1c1d: 0xe115,\n\t0x1c1e: 0x8b3d, 0x1c1f: 0x8b3d, 0x1c20: 0x04b5, 0x1c21: 0x04b5, 0x1c22: 0x0a08, 0x1c23: 0x0a08,\n\t0x1c24: 0x0a08, 0x1c25: 0x0a08, 0x1c26: 0x0a08, 0x1c27: 0x0a08, 0x1c28: 0x0a08, 0x1c29: 0x0a08,\n\t0x1c2a: 0x0a08, 0x1c2b: 0x0a08, 0x1c2c: 0x0a08, 0x1c2d: 0x0a08, 0x1c2e: 0x0a08, 0x1c2f: 0x0a08,\n\t0x1c30: 0x0a08, 0x1c31: 0x0a08, 0x1c32: 0x0a08, 0x1c33: 0x0a08, 0x1c34: 0x0a08, 0x1c35: 0x0a08,\n\t0x1c36: 0x0a08, 0x1c37: 0x0a08, 0x1c38: 0x0a08, 0x1c39: 0x0a08, 0x1c3a: 0x0a08, 0x1c3b: 0x0a08,\n\t0x1c3c: 0x0a08, 0x1c3d: 0x0a08, 0x1c3e: 0x0a08, 0x1c3f: 0x0a08,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0x20b1, 0x1c41: 0x20b9, 0x1c42: 0x20d9, 0x1c43: 0x20f1, 0x1c44: 0x0040, 0x1c45: 0x2189,\n\t0x1c46: 0x2109, 0x1c47: 0x20e1, 0x1c48: 0x2131, 0x1c49: 0x2191, 0x1c4a: 0x2161, 0x1c4b: 0x2169,\n\t0x1c4c: 0x2171, 0x1c4d: 0x2179, 0x1c4e: 0x2111, 0x1c4f: 0x2141, 0x1c50: 0x2151, 0x1c51: 0x2121,\n\t0x1c52: 0x2159, 0x1c53: 0x2101, 0x1c54: 0x2119, 0x1c55: 0x20c9, 0x1c56: 0x20d1, 0x1c57: 0x20e9,\n\t0x1c58: 0x20f9, 0x1c59: 0x2129, 0x1c5a: 0x2139, 0x1c5b: 0x2149, 0x1c5c: 0x2311, 0x1c5d: 0x1689,\n\t0x1c5e: 0x2319, 0x1c5f: 0x2321, 0x1c60: 0x0040, 0x1c61: 0x20b9, 0x1c62: 0x20d9, 0x1c63: 0x0040,\n\t0x1c64: 0x2181, 0x1c65: 0x0040, 0x1c66: 0x0040, 0x1c67: 0x20e1, 0x1c68: 0x0040, 0x1c69: 0x2191,\n\t0x1c6a: 0x2161, 0x1c6b: 0x2169, 0x1c6c: 0x2171, 0x1c6d: 0x2179, 0x1c6e: 0x2111, 0x1c6f: 0x2141,\n\t0x1c70: 0x2151, 0x1c71: 0x2121, 0x1c72: 0x2159, 0x1c73: 0x0040, 0x1c74: 0x2119, 0x1c75: 0x20c9,\n\t0x1c76: 0x20d1, 0x1c77: 0x20e9, 0x1c78: 0x0040, 0x1c79: 0x2129, 0x1c7a: 0x0040, 0x1c7b: 0x2149,\n\t0x1c7c: 0x0040, 0x1c7d: 0x0040, 0x1c7e: 0x0040, 0x1c7f: 0x0040,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0x0040, 0x1c81: 0x0040, 0x1c82: 0x20d9, 0x1c83: 0x0040, 0x1c84: 0x0040, 0x1c85: 0x0040,\n\t0x1c86: 0x0040, 0x1c87: 0x20e1, 0x1c88: 0x0040, 0x1c89: 0x2191, 0x1c8a: 0x0040, 0x1c8b: 0x2169,\n\t0x1c8c: 0x0040, 0x1c8d: 0x2179, 0x1c8e: 0x2111, 0x1c8f: 0x2141, 0x1c90: 0x0040, 0x1c91: 0x2121,\n\t0x1c92: 0x2159, 0x1c93: 0x0040, 0x1c94: 0x2119, 0x1c95: 0x0040, 0x1c96: 0x0040, 0x1c97: 0x20e9,\n\t0x1c98: 0x0040, 0x1c99: 0x2129, 0x1c9a: 0x0040, 0x1c9b: 0x2149, 0x1c9c: 0x0040, 0x1c9d: 0x1689,\n\t0x1c9e: 0x0040, 0x1c9f: 0x2321, 0x1ca0: 0x0040, 0x1ca1: 0x20b9, 0x1ca2: 0x20d9, 0x1ca3: 0x0040,\n\t0x1ca4: 0x2181, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0x20e1, 0x1ca8: 0x2131, 0x1ca9: 0x2191,\n\t0x1caa: 0x2161, 0x1cab: 0x0040, 0x1cac: 0x2171, 0x1cad: 0x2179, 0x1cae: 0x2111, 0x1caf: 0x2141,\n\t0x1cb0: 0x2151, 0x1cb1: 0x2121, 0x1cb2: 0x2159, 0x1cb3: 0x0040, 0x1cb4: 0x2119, 0x1cb5: 0x20c9,\n\t0x1cb6: 0x20d1, 0x1cb7: 0x20e9, 0x1cb8: 0x0040, 0x1cb9: 0x2129, 0x1cba: 0x2139, 0x1cbb: 0x2149,\n\t0x1cbc: 0x2311, 0x1cbd: 0x0040, 0x1cbe: 0x2319, 0x1cbf: 0x0040,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x20b1, 0x1cc1: 0x20b9, 0x1cc2: 0x20d9, 0x1cc3: 0x20f1, 0x1cc4: 0x2181, 0x1cc5: 0x2189,\n\t0x1cc6: 0x2109, 0x1cc7: 0x20e1, 0x1cc8: 0x2131, 0x1cc9: 0x2191, 0x1cca: 0x0040, 0x1ccb: 0x2169,\n\t0x1ccc: 0x2171, 0x1ccd: 0x2179, 0x1cce: 0x2111, 0x1ccf: 0x2141, 0x1cd0: 0x2151, 0x1cd1: 0x2121,\n\t0x1cd2: 0x2159, 0x1cd3: 0x2101, 0x1cd4: 0x2119, 0x1cd5: 0x20c9, 0x1cd6: 0x20d1, 0x1cd7: 0x20e9,\n\t0x1cd8: 0x20f9, 0x1cd9: 0x2129, 0x1cda: 0x2139, 0x1cdb: 0x2149, 0x1cdc: 0x0040, 0x1cdd: 0x0040,\n\t0x1cde: 0x0040, 0x1cdf: 0x0040, 0x1ce0: 0x0040, 0x1ce1: 0x20b9, 0x1ce2: 0x20d9, 0x1ce3: 0x20f1,\n\t0x1ce4: 0x0040, 0x1ce5: 0x2189, 0x1ce6: 0x2109, 0x1ce7: 0x20e1, 0x1ce8: 0x2131, 0x1ce9: 0x2191,\n\t0x1cea: 0x0040, 0x1ceb: 0x2169, 0x1cec: 0x2171, 0x1ced: 0x2179, 0x1cee: 0x2111, 0x1cef: 0x2141,\n\t0x1cf0: 0x2151, 0x1cf1: 0x2121, 0x1cf2: 0x2159, 0x1cf3: 0x2101, 0x1cf4: 0x2119, 0x1cf5: 0x20c9,\n\t0x1cf6: 0x20d1, 0x1cf7: 0x20e9, 0x1cf8: 0x20f9, 0x1cf9: 0x2129, 0x1cfa: 0x2139, 0x1cfb: 0x2149,\n\t0x1cfc: 0x0040, 0x1cfd: 0x0040, 0x1cfe: 0x0040, 0x1cff: 0x0040,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0x0040, 0x1d01: 0x232a, 0x1d02: 0x2332, 0x1d03: 0x233a, 0x1d04: 0x2342, 0x1d05: 0x234a,\n\t0x1d06: 0x2352, 0x1d07: 0x235a, 0x1d08: 0x2362, 0x1d09: 0x236a, 0x1d0a: 0x2372, 0x1d0b: 0x0018,\n\t0x1d0c: 0x0018, 0x1d0d: 0x0018, 0x1d0e: 0x0018, 0x1d0f: 0x0018, 0x1d10: 0x237a, 0x1d11: 0x2382,\n\t0x1d12: 0x238a, 0x1d13: 0x2392, 0x1d14: 0x239a, 0x1d15: 0x23a2, 0x1d16: 0x23aa, 0x1d17: 0x23b2,\n\t0x1d18: 0x23ba, 0x1d19: 0x23c2, 0x1d1a: 0x23ca, 0x1d1b: 0x23d2, 0x1d1c: 0x23da, 0x1d1d: 0x23e2,\n\t0x1d1e: 0x23ea, 0x1d1f: 0x23f2, 0x1d20: 0x23fa, 0x1d21: 0x2402, 0x1d22: 0x240a, 0x1d23: 0x2412,\n\t0x1d24: 0x241a, 0x1d25: 0x2422, 0x1d26: 0x242a, 0x1d27: 0x2432, 0x1d28: 0x243a, 0x1d29: 0x2442,\n\t0x1d2a: 0x2449, 0x1d2b: 0x03d9, 0x1d2c: 0x00b9, 0x1d2d: 0x1239, 0x1d2e: 0x2451, 0x1d2f: 0x0018,\n\t0x1d30: 0x0019, 0x1d31: 0x02e9, 0x1d32: 0x03d9, 0x1d33: 0x02f1, 0x1d34: 0x02f9, 0x1d35: 0x03f1,\n\t0x1d36: 0x0309, 0x1d37: 0x00a9, 0x1d38: 0x0311, 0x1d39: 0x00b1, 0x1d3a: 0x0319, 0x1d3b: 0x0101,\n\t0x1d3c: 0x0321, 0x1d3d: 0x0329, 0x1d3e: 0x0051, 0x1d3f: 0x0339,\n\t// Block 0x75, offset 0x1d40\n\t0x1d40: 0x0751, 0x1d41: 0x00b9, 0x1d42: 0x0089, 0x1d43: 0x0341, 0x1d44: 0x0349, 0x1d45: 0x0391,\n\t0x1d46: 0x00c1, 0x1d47: 0x0109, 0x1d48: 0x00c9, 0x1d49: 0x04b1, 0x1d4a: 0x2459, 0x1d4b: 0x11f9,\n\t0x1d4c: 0x2461, 0x1d4d: 0x04d9, 0x1d4e: 0x2469, 0x1d4f: 0x2471, 0x1d50: 0x0018, 0x1d51: 0x0018,\n\t0x1d52: 0x0018, 0x1d53: 0x0018, 0x1d54: 0x0018, 0x1d55: 0x0018, 0x1d56: 0x0018, 0x1d57: 0x0018,\n\t0x1d58: 0x0018, 0x1d59: 0x0018, 0x1d5a: 0x0018, 0x1d5b: 0x0018, 0x1d5c: 0x0018, 0x1d5d: 0x0018,\n\t0x1d5e: 0x0018, 0x1d5f: 0x0018, 0x1d60: 0x0018, 0x1d61: 0x0018, 0x1d62: 0x0018, 0x1d63: 0x0018,\n\t0x1d64: 0x0018, 0x1d65: 0x0018, 0x1d66: 0x0018, 0x1d67: 0x0018, 0x1d68: 0x0018, 0x1d69: 0x0018,\n\t0x1d6a: 0x2479, 0x1d6b: 0x2481, 0x1d6c: 0x2489, 0x1d6d: 0x0018, 0x1d6e: 0x0018, 0x1d6f: 0x0018,\n\t0x1d70: 0x0018, 0x1d71: 0x0018, 0x1d72: 0x0018, 0x1d73: 0x0018, 0x1d74: 0x0018, 0x1d75: 0x0018,\n\t0x1d76: 0x0018, 0x1d77: 0x0018, 0x1d78: 0x0018, 0x1d79: 0x0018, 0x1d7a: 0x0018, 0x1d7b: 0x0018,\n\t0x1d7c: 0x0018, 0x1d7d: 0x0018, 0x1d7e: 0x0018, 0x1d7f: 0x0018,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0x2499, 0x1d81: 0x24a1, 0x1d82: 0x24a9, 0x1d83: 0x0040, 0x1d84: 0x0040, 0x1d85: 0x0040,\n\t0x1d86: 0x0040, 0x1d87: 0x0040, 0x1d88: 0x0040, 0x1d89: 0x0040, 0x1d8a: 0x0040, 0x1d8b: 0x0040,\n\t0x1d8c: 0x0040, 0x1d8d: 0x0040, 0x1d8e: 0x0040, 0x1d8f: 0x0040, 0x1d90: 0x24b1, 0x1d91: 0x24b9,\n\t0x1d92: 0x24c1, 0x1d93: 0x24c9, 0x1d94: 0x24d1, 0x1d95: 0x24d9, 0x1d96: 0x24e1, 0x1d97: 0x24e9,\n\t0x1d98: 0x24f1, 0x1d99: 0x24f9, 0x1d9a: 0x2501, 0x1d9b: 0x2509, 0x1d9c: 0x2511, 0x1d9d: 0x2519,\n\t0x1d9e: 0x2521, 0x1d9f: 0x2529, 0x1da0: 0x2531, 0x1da1: 0x2539, 0x1da2: 0x2541, 0x1da3: 0x2549,\n\t0x1da4: 0x2551, 0x1da5: 0x2559, 0x1da6: 0x2561, 0x1da7: 0x2569, 0x1da8: 0x2571, 0x1da9: 0x2579,\n\t0x1daa: 0x2581, 0x1dab: 0x2589, 0x1dac: 0x2591, 0x1dad: 0x2599, 0x1dae: 0x25a1, 0x1daf: 0x25a9,\n\t0x1db0: 0x25b1, 0x1db1: 0x25b9, 0x1db2: 0x25c1, 0x1db3: 0x25c9, 0x1db4: 0x25d1, 0x1db5: 0x25d9,\n\t0x1db6: 0x25e1, 0x1db7: 0x25e9, 0x1db8: 0x25f1, 0x1db9: 0x25f9, 0x1dba: 0x2601, 0x1dbb: 0x2609,\n\t0x1dbc: 0x0040, 0x1dbd: 0x0040, 0x1dbe: 0x0040, 0x1dbf: 0x0040,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dc0: 0x2669, 0x1dc1: 0x2671, 0x1dc2: 0x2679, 0x1dc3: 0x8b55, 0x1dc4: 0x2681, 0x1dc5: 0x2689,\n\t0x1dc6: 0x2691, 0x1dc7: 0x2699, 0x1dc8: 0x26a1, 0x1dc9: 0x26a9, 0x1dca: 0x26b1, 0x1dcb: 0x26b9,\n\t0x1dcc: 0x26c1, 0x1dcd: 0x8b75, 0x1dce: 0x26c9, 0x1dcf: 0x26d1, 0x1dd0: 0x26d9, 0x1dd1: 0x26e1,\n\t0x1dd2: 0x8b95, 0x1dd3: 0x26e9, 0x1dd4: 0x26f1, 0x1dd5: 0x2521, 0x1dd6: 0x8bb5, 0x1dd7: 0x26f9,\n\t0x1dd8: 0x2701, 0x1dd9: 0x2709, 0x1dda: 0x2711, 0x1ddb: 0x2719, 0x1ddc: 0x8bd5, 0x1ddd: 0x2721,\n\t0x1dde: 0x2729, 0x1ddf: 0x2731, 0x1de0: 0x2739, 0x1de1: 0x2741, 0x1de2: 0x25f9, 0x1de3: 0x2749,\n\t0x1de4: 0x2751, 0x1de5: 0x2759, 0x1de6: 0x2761, 0x1de7: 0x2769, 0x1de8: 0x2771, 0x1de9: 0x2779,\n\t0x1dea: 0x2781, 0x1deb: 0x2789, 0x1dec: 0x2791, 0x1ded: 0x2799, 0x1dee: 0x27a1, 0x1def: 0x27a9,\n\t0x1df0: 0x27b1, 0x1df1: 0x27b9, 0x1df2: 0x27b9, 0x1df3: 0x27b9, 0x1df4: 0x8bf5, 0x1df5: 0x27c1,\n\t0x1df6: 0x27c9, 0x1df7: 0x27d1, 0x1df8: 0x8c15, 0x1df9: 0x27d9, 0x1dfa: 0x27e1, 0x1dfb: 0x27e9,\n\t0x1dfc: 0x27f1, 0x1dfd: 0x27f9, 0x1dfe: 0x2801, 0x1dff: 0x2809,\n\t// Block 0x78, offset 0x1e00\n\t0x1e00: 0x2811, 0x1e01: 0x2819, 0x1e02: 0x2821, 0x1e03: 0x2829, 0x1e04: 0x2831, 0x1e05: 0x2839,\n\t0x1e06: 0x2839, 0x1e07: 0x2841, 0x1e08: 0x2849, 0x1e09: 0x2851, 0x1e0a: 0x2859, 0x1e0b: 0x2861,\n\t0x1e0c: 0x2869, 0x1e0d: 0x2871, 0x1e0e: 0x2879, 0x1e0f: 0x2881, 0x1e10: 0x2889, 0x1e11: 0x2891,\n\t0x1e12: 0x2899, 0x1e13: 0x28a1, 0x1e14: 0x28a9, 0x1e15: 0x28b1, 0x1e16: 0x28b9, 0x1e17: 0x28c1,\n\t0x1e18: 0x28c9, 0x1e19: 0x8c35, 0x1e1a: 0x28d1, 0x1e1b: 0x28d9, 0x1e1c: 0x28e1, 0x1e1d: 0x24d9,\n\t0x1e1e: 0x28e9, 0x1e1f: 0x28f1, 0x1e20: 0x8c55, 0x1e21: 0x8c75, 0x1e22: 0x28f9, 0x1e23: 0x2901,\n\t0x1e24: 0x2909, 0x1e25: 0x2911, 0x1e26: 0x2919, 0x1e27: 0x2921, 0x1e28: 0x2040, 0x1e29: 0x2929,\n\t0x1e2a: 0x2931, 0x1e2b: 0x2931, 0x1e2c: 0x8c95, 0x1e2d: 0x2939, 0x1e2e: 0x2941, 0x1e2f: 0x2949,\n\t0x1e30: 0x2951, 0x1e31: 0x8cb5, 0x1e32: 0x2959, 0x1e33: 0x2961, 0x1e34: 0x2040, 0x1e35: 0x2969,\n\t0x1e36: 0x2971, 0x1e37: 0x2979, 0x1e38: 0x2981, 0x1e39: 0x2989, 0x1e3a: 0x2991, 0x1e3b: 0x8cd5,\n\t0x1e3c: 0x2999, 0x1e3d: 0x8cf5, 0x1e3e: 0x29a1, 0x1e3f: 0x29a9,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0x29b1, 0x1e41: 0x29b9, 0x1e42: 0x29c1, 0x1e43: 0x29c9, 0x1e44: 0x29d1, 0x1e45: 0x29d9,\n\t0x1e46: 0x29e1, 0x1e47: 0x29e9, 0x1e48: 0x29f1, 0x1e49: 0x8d15, 0x1e4a: 0x29f9, 0x1e4b: 0x2a01,\n\t0x1e4c: 0x2a09, 0x1e4d: 0x2a11, 0x1e4e: 0x2a19, 0x1e4f: 0x8d35, 0x1e50: 0x2a21, 0x1e51: 0x8d55,\n\t0x1e52: 0x8d75, 0x1e53: 0x2a29, 0x1e54: 0x2a31, 0x1e55: 0x2a31, 0x1e56: 0x2a39, 0x1e57: 0x8d95,\n\t0x1e58: 0x8db5, 0x1e59: 0x2a41, 0x1e5a: 0x2a49, 0x1e5b: 0x2a51, 0x1e5c: 0x2a59, 0x1e5d: 0x2a61,\n\t0x1e5e: 0x2a69, 0x1e5f: 0x2a71, 0x1e60: 0x2a79, 0x1e61: 0x2a81, 0x1e62: 0x2a89, 0x1e63: 0x2a91,\n\t0x1e64: 0x8dd5, 0x1e65: 0x2a99, 0x1e66: 0x2aa1, 0x1e67: 0x2aa9, 0x1e68: 0x2ab1, 0x1e69: 0x2aa9,\n\t0x1e6a: 0x2ab9, 0x1e6b: 0x2ac1, 0x1e6c: 0x2ac9, 0x1e6d: 0x2ad1, 0x1e6e: 0x2ad9, 0x1e6f: 0x2ae1,\n\t0x1e70: 0x2ae9, 0x1e71: 0x2af1, 0x1e72: 0x2af9, 0x1e73: 0x2b01, 0x1e74: 0x2b09, 0x1e75: 0x2b11,\n\t0x1e76: 0x2b19, 0x1e77: 0x2b21, 0x1e78: 0x8df5, 0x1e79: 0x2b29, 0x1e7a: 0x2b31, 0x1e7b: 0x2b39,\n\t0x1e7c: 0x2b41, 0x1e7d: 0x2b49, 0x1e7e: 0x8e15, 0x1e7f: 0x2b51,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0x2b59, 0x1e81: 0x2b61, 0x1e82: 0x2b69, 0x1e83: 0x2b71, 0x1e84: 0x2b79, 0x1e85: 0x2b81,\n\t0x1e86: 0x2b89, 0x1e87: 0x2b91, 0x1e88: 0x2b99, 0x1e89: 0x2ba1, 0x1e8a: 0x8e35, 0x1e8b: 0x2ba9,\n\t0x1e8c: 0x2bb1, 0x1e8d: 0x2bb9, 0x1e8e: 0x2bc1, 0x1e8f: 0x2bc9, 0x1e90: 0x2bd1, 0x1e91: 0x2bd9,\n\t0x1e92: 0x2be1, 0x1e93: 0x2be9, 0x1e94: 0x2bf1, 0x1e95: 0x2bf9, 0x1e96: 0x2c01, 0x1e97: 0x2c09,\n\t0x1e98: 0x2c11, 0x1e99: 0x2c19, 0x1e9a: 0x2c21, 0x1e9b: 0x2c29, 0x1e9c: 0x2c31, 0x1e9d: 0x8e55,\n\t0x1e9e: 0x2c39, 0x1e9f: 0x2c41, 0x1ea0: 0x2c49, 0x1ea1: 0x2c51, 0x1ea2: 0x2c59, 0x1ea3: 0x8e75,\n\t0x1ea4: 0x2c61, 0x1ea5: 0x2c69, 0x1ea6: 0x2c71, 0x1ea7: 0x2c79, 0x1ea8: 0x2c81, 0x1ea9: 0x2c89,\n\t0x1eaa: 0x2c91, 0x1eab: 0x2c99, 0x1eac: 0x7f0d, 0x1ead: 0x2ca1, 0x1eae: 0x2ca9, 0x1eaf: 0x2cb1,\n\t0x1eb0: 0x8e95, 0x1eb1: 0x2cb9, 0x1eb2: 0x2cc1, 0x1eb3: 0x2cc9, 0x1eb4: 0x2cd1, 0x1eb5: 0x2cd9,\n\t0x1eb6: 0x2ce1, 0x1eb7: 0x8eb5, 0x1eb8: 0x8ed5, 0x1eb9: 0x8ef5, 0x1eba: 0x2ce9, 0x1ebb: 0x8f15,\n\t0x1ebc: 0x2cf1, 0x1ebd: 0x2cf9, 0x1ebe: 0x2d01, 0x1ebf: 0x2d09,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0x2d11, 0x1ec1: 0x2d19, 0x1ec2: 0x2d21, 0x1ec3: 0x2d29, 0x1ec4: 0x2d31, 0x1ec5: 0x2d39,\n\t0x1ec6: 0x8f35, 0x1ec7: 0x2d41, 0x1ec8: 0x2d49, 0x1ec9: 0x2d51, 0x1eca: 0x2d59, 0x1ecb: 0x2d61,\n\t0x1ecc: 0x2d69, 0x1ecd: 0x8f55, 0x1ece: 0x2d71, 0x1ecf: 0x2d79, 0x1ed0: 0x8f75, 0x1ed1: 0x8f95,\n\t0x1ed2: 0x2d81, 0x1ed3: 0x2d89, 0x1ed4: 0x2d91, 0x1ed5: 0x2d99, 0x1ed6: 0x2da1, 0x1ed7: 0x2da9,\n\t0x1ed8: 0x2db1, 0x1ed9: 0x2db9, 0x1eda: 0x2dc1, 0x1edb: 0x8fb5, 0x1edc: 0x2dc9, 0x1edd: 0x8fd5,\n\t0x1ede: 0x2dd1, 0x1edf: 0x2040, 0x1ee0: 0x2dd9, 0x1ee1: 0x2de1, 0x1ee2: 0x2de9, 0x1ee3: 0x8ff5,\n\t0x1ee4: 0x2df1, 0x1ee5: 0x2df9, 0x1ee6: 0x9015, 0x1ee7: 0x9035, 0x1ee8: 0x2e01, 0x1ee9: 0x2e09,\n\t0x1eea: 0x2e11, 0x1eeb: 0x2e19, 0x1eec: 0x2e21, 0x1eed: 0x2e21, 0x1eee: 0x2e29, 0x1eef: 0x2e31,\n\t0x1ef0: 0x2e39, 0x1ef1: 0x2e41, 0x1ef2: 0x2e49, 0x1ef3: 0x2e51, 0x1ef4: 0x2e59, 0x1ef5: 0x9055,\n\t0x1ef6: 0x2e61, 0x1ef7: 0x9075, 0x1ef8: 0x2e69, 0x1ef9: 0x9095, 0x1efa: 0x2e71, 0x1efb: 0x90b5,\n\t0x1efc: 0x90d5, 0x1efd: 0x90f5, 0x1efe: 0x2e79, 0x1eff: 0x2e81,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0x2e89, 0x1f01: 0x9115, 0x1f02: 0x9135, 0x1f03: 0x9155, 0x1f04: 0x9175, 0x1f05: 0x2e91,\n\t0x1f06: 0x2e99, 0x1f07: 0x2e99, 0x1f08: 0x2ea1, 0x1f09: 0x2ea9, 0x1f0a: 0x2eb1, 0x1f0b: 0x2eb9,\n\t0x1f0c: 0x2ec1, 0x1f0d: 0x9195, 0x1f0e: 0x2ec9, 0x1f0f: 0x2ed1, 0x1f10: 0x2ed9, 0x1f11: 0x2ee1,\n\t0x1f12: 0x91b5, 0x1f13: 0x2ee9, 0x1f14: 0x91d5, 0x1f15: 0x91f5, 0x1f16: 0x2ef1, 0x1f17: 0x2ef9,\n\t0x1f18: 0x2f01, 0x1f19: 0x2f09, 0x1f1a: 0x2f11, 0x1f1b: 0x2f19, 0x1f1c: 0x9215, 0x1f1d: 0x9235,\n\t0x1f1e: 0x9255, 0x1f1f: 0x2040, 0x1f20: 0x2f21, 0x1f21: 0x9275, 0x1f22: 0x2f29, 0x1f23: 0x2f31,\n\t0x1f24: 0x2f39, 0x1f25: 0x9295, 0x1f26: 0x2f41, 0x1f27: 0x2f49, 0x1f28: 0x2f51, 0x1f29: 0x2f59,\n\t0x1f2a: 0x2f61, 0x1f2b: 0x92b5, 0x1f2c: 0x2f69, 0x1f2d: 0x2f71, 0x1f2e: 0x2f79, 0x1f2f: 0x2f81,\n\t0x1f30: 0x2f89, 0x1f31: 0x2f91, 0x1f32: 0x92d5, 0x1f33: 0x92f5, 0x1f34: 0x2f99, 0x1f35: 0x9315,\n\t0x1f36: 0x2fa1, 0x1f37: 0x9335, 0x1f38: 0x2fa9, 0x1f39: 0x2fb1, 0x1f3a: 0x2fb9, 0x1f3b: 0x9355,\n\t0x1f3c: 0x9375, 0x1f3d: 0x2fc1, 0x1f3e: 0x9395, 0x1f3f: 0x2fc9,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f40: 0x93b5, 0x1f41: 0x2fd1, 0x1f42: 0x2fd9, 0x1f43: 0x2fe1, 0x1f44: 0x2fe9, 0x1f45: 0x2ff1,\n\t0x1f46: 0x2ff9, 0x1f47: 0x93d5, 0x1f48: 0x93f5, 0x1f49: 0x9415, 0x1f4a: 0x9435, 0x1f4b: 0x2a29,\n\t0x1f4c: 0x3001, 0x1f4d: 0x3009, 0x1f4e: 0x3011, 0x1f4f: 0x3019, 0x1f50: 0x3021, 0x1f51: 0x3029,\n\t0x1f52: 0x3031, 0x1f53: 0x3039, 0x1f54: 0x3041, 0x1f55: 0x3049, 0x1f56: 0x3051, 0x1f57: 0x9455,\n\t0x1f58: 0x3059, 0x1f59: 0x3061, 0x1f5a: 0x3069, 0x1f5b: 0x3071, 0x1f5c: 0x3079, 0x1f5d: 0x3081,\n\t0x1f5e: 0x3089, 0x1f5f: 0x3091, 0x1f60: 0x3099, 0x1f61: 0x30a1, 0x1f62: 0x30a9, 0x1f63: 0x30b1,\n\t0x1f64: 0x9475, 0x1f65: 0x9495, 0x1f66: 0x94b5, 0x1f67: 0x30b9, 0x1f68: 0x30c1, 0x1f69: 0x30c9,\n\t0x1f6a: 0x30d1, 0x1f6b: 0x94d5, 0x1f6c: 0x30d9, 0x1f6d: 0x94f5, 0x1f6e: 0x30e1, 0x1f6f: 0x30e9,\n\t0x1f70: 0x9515, 0x1f71: 0x9535, 0x1f72: 0x30f1, 0x1f73: 0x30f9, 0x1f74: 0x3101, 0x1f75: 0x3109,\n\t0x1f76: 0x3111, 0x1f77: 0x3119, 0x1f78: 0x3121, 0x1f79: 0x3129, 0x1f7a: 0x3131, 0x1f7b: 0x3139,\n\t0x1f7c: 0x3141, 0x1f7d: 0x3149, 0x1f7e: 0x3151, 0x1f7f: 0x2040,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f80: 0x3159, 0x1f81: 0x3161, 0x1f82: 0x3169, 0x1f83: 0x3171, 0x1f84: 0x3179, 0x1f85: 0x9555,\n\t0x1f86: 0x3181, 0x1f87: 0x3189, 0x1f88: 0x3191, 0x1f89: 0x3199, 0x1f8a: 0x31a1, 0x1f8b: 0x9575,\n\t0x1f8c: 0x9595, 0x1f8d: 0x31a9, 0x1f8e: 0x31b1, 0x1f8f: 0x31b9, 0x1f90: 0x31c1, 0x1f91: 0x31c9,\n\t0x1f92: 0x31d1, 0x1f93: 0x95b5, 0x1f94: 0x31d9, 0x1f95: 0x31e1, 0x1f96: 0x31e9, 0x1f97: 0x31f1,\n\t0x1f98: 0x95d5, 0x1f99: 0x95f5, 0x1f9a: 0x31f9, 0x1f9b: 0x3201, 0x1f9c: 0x3209, 0x1f9d: 0x9615,\n\t0x1f9e: 0x3211, 0x1f9f: 0x3219, 0x1fa0: 0x684d, 0x1fa1: 0x9635, 0x1fa2: 0x3221, 0x1fa3: 0x3229,\n\t0x1fa4: 0x3231, 0x1fa5: 0x9655, 0x1fa6: 0x3239, 0x1fa7: 0x3241, 0x1fa8: 0x3249, 0x1fa9: 0x3251,\n\t0x1faa: 0x3259, 0x1fab: 0x3261, 0x1fac: 0x3269, 0x1fad: 0x9675, 0x1fae: 0x3271, 0x1faf: 0x3279,\n\t0x1fb0: 0x3281, 0x1fb1: 0x9695, 0x1fb2: 0x3289, 0x1fb3: 0x3291, 0x1fb4: 0x3299, 0x1fb5: 0x32a1,\n\t0x1fb6: 0x7b6d, 0x1fb7: 0x96b5, 0x1fb8: 0x32a9, 0x1fb9: 0x32b1, 0x1fba: 0x32b9, 0x1fbb: 0x96d5,\n\t0x1fbc: 0x32c1, 0x1fbd: 0x96f5, 0x1fbe: 0x32c9, 0x1fbf: 0x32c9,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1fc0: 0x32d1, 0x1fc1: 0x9715, 0x1fc2: 0x32d9, 0x1fc3: 0x32e1, 0x1fc4: 0x32e9, 0x1fc5: 0x32f1,\n\t0x1fc6: 0x32f9, 0x1fc7: 0x3301, 0x1fc8: 0x3309, 0x1fc9: 0x9735, 0x1fca: 0x3311, 0x1fcb: 0x3319,\n\t0x1fcc: 0x3321, 0x1fcd: 0x3329, 0x1fce: 0x3331, 0x1fcf: 0x3339, 0x1fd0: 0x9755, 0x1fd1: 0x3341,\n\t0x1fd2: 0x9775, 0x1fd3: 0x9795, 0x1fd4: 0x97b5, 0x1fd5: 0x3349, 0x1fd6: 0x3351, 0x1fd7: 0x3359,\n\t0x1fd8: 0x3361, 0x1fd9: 0x3369, 0x1fda: 0x3371, 0x1fdb: 0x3379, 0x1fdc: 0x3381, 0x1fdd: 0x97d5,\n\t0x1fde: 0x0040, 0x1fdf: 0x0040, 0x1fe0: 0x0040, 0x1fe1: 0x0040, 0x1fe2: 0x0040, 0x1fe3: 0x0040,\n\t0x1fe4: 0x0040, 0x1fe5: 0x0040, 0x1fe6: 0x0040, 0x1fe7: 0x0040, 0x1fe8: 0x0040, 0x1fe9: 0x0040,\n\t0x1fea: 0x0040, 0x1feb: 0x0040, 0x1fec: 0x0040, 0x1fed: 0x0040, 0x1fee: 0x0040, 0x1fef: 0x0040,\n\t0x1ff0: 0x0040, 0x1ff1: 0x0040, 0x1ff2: 0x0040, 0x1ff3: 0x0040, 0x1ff4: 0x0040, 0x1ff5: 0x0040,\n\t0x1ff6: 0x0040, 0x1ff7: 0x0040, 0x1ff8: 0x0040, 0x1ff9: 0x0040, 0x1ffa: 0x0040, 0x1ffb: 0x0040,\n\t0x1ffc: 0x0040, 0x1ffd: 0x0040, 0x1ffe: 0x0040, 0x1fff: 0x0040,\n}\n\n// idnaIndex: 37 blocks, 2368 entries, 4736 bytes\n// Block 0 is the zero block.\nvar idnaIndex = [2368]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x7e, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05,\n\t0xc8: 0x06, 0xc9: 0x7f, 0xca: 0x80, 0xcb: 0x07, 0xcc: 0x81, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a,\n\t0xd0: 0x82, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x83, 0xd6: 0x84, 0xd7: 0x85,\n\t0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x86, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x87, 0xde: 0x88, 0xdf: 0x89,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07,\n\t0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c,\n\t0xf0: 0x1e, 0xf1: 0x1f, 0xf2: 0x1f, 0xf3: 0x21, 0xf4: 0x22,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x8a, 0x121: 0x13, 0x122: 0x8b, 0x123: 0x8c, 0x124: 0x8d, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16,\n\t0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8e,\n\t0x130: 0x8f, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x90, 0x135: 0x21, 0x136: 0x91, 0x137: 0x92,\n\t0x138: 0x93, 0x139: 0x94, 0x13a: 0x22, 0x13b: 0x95, 0x13c: 0x96, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x97,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x98, 0x141: 0x99, 0x142: 0x9a, 0x143: 0x9b, 0x144: 0x9c, 0x145: 0x9d, 0x146: 0x9e, 0x147: 0x9f,\n\t0x148: 0xa0, 0x149: 0xa1, 0x14a: 0xa2, 0x14b: 0xa3, 0x14c: 0xa4, 0x14d: 0xa5, 0x14e: 0xa6, 0x14f: 0xa7,\n\t0x150: 0xa8, 0x151: 0xa0, 0x152: 0xa0, 0x153: 0xa0, 0x154: 0xa0, 0x155: 0xa0, 0x156: 0xa0, 0x157: 0xa0,\n\t0x158: 0xa0, 0x159: 0xa9, 0x15a: 0xaa, 0x15b: 0xab, 0x15c: 0xac, 0x15d: 0xad, 0x15e: 0xae, 0x15f: 0xaf,\n\t0x160: 0xb0, 0x161: 0xb1, 0x162: 0xb2, 0x163: 0xb3, 0x164: 0xb4, 0x165: 0xb5, 0x166: 0xb6, 0x167: 0xb7,\n\t0x168: 0xb8, 0x169: 0xb9, 0x16a: 0xba, 0x16b: 0xbb, 0x16c: 0xbc, 0x16d: 0xbd, 0x16e: 0xbe, 0x16f: 0xbf,\n\t0x170: 0xc0, 0x171: 0xc1, 0x172: 0xc2, 0x173: 0xc3, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc4,\n\t0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc5, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc6, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc7, 0x187: 0x9c,\n\t0x188: 0xc8, 0x189: 0xc9, 0x18a: 0x9c, 0x18b: 0x9c, 0x18c: 0xca, 0x18d: 0x9c, 0x18e: 0x9c, 0x18f: 0x9c,\n\t0x190: 0xcb, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9c, 0x195: 0x9c, 0x196: 0x9c, 0x197: 0x9c,\n\t0x198: 0x9c, 0x199: 0x9c, 0x19a: 0x9c, 0x19b: 0x9c, 0x19c: 0x9c, 0x19d: 0x9c, 0x19e: 0x9c, 0x19f: 0x9c,\n\t0x1a0: 0x9c, 0x1a1: 0x9c, 0x1a2: 0x9c, 0x1a3: 0x9c, 0x1a4: 0x9c, 0x1a5: 0x9c, 0x1a6: 0x9c, 0x1a7: 0x9c,\n\t0x1a8: 0xcc, 0x1a9: 0xcd, 0x1aa: 0x9c, 0x1ab: 0xce, 0x1ac: 0x9c, 0x1ad: 0xcf, 0x1ae: 0xd0, 0x1af: 0x9c,\n\t0x1b0: 0xd1, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd2, 0x1b5: 0xd3, 0x1b6: 0xd4, 0x1b7: 0xd5,\n\t0x1b8: 0xd6, 0x1b9: 0xd7, 0x1ba: 0xd8, 0x1bb: 0xd9, 0x1bc: 0xda, 0x1bd: 0xdb, 0x1be: 0xdc, 0x1bf: 0x37,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x38, 0x1c1: 0xdd, 0x1c2: 0xde, 0x1c3: 0xdf, 0x1c4: 0xe0, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe1,\n\t0x1c8: 0xe2, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0xe3, 0x1cd: 0xe4, 0x1ce: 0x3e, 0x1cf: 0x3f,\n\t0x1d0: 0xa0, 0x1d1: 0xa0, 0x1d2: 0xa0, 0x1d3: 0xa0, 0x1d4: 0xa0, 0x1d5: 0xa0, 0x1d6: 0xa0, 0x1d7: 0xa0,\n\t0x1d8: 0xa0, 0x1d9: 0xa0, 0x1da: 0xa0, 0x1db: 0xa0, 0x1dc: 0xa0, 0x1dd: 0xa0, 0x1de: 0xa0, 0x1df: 0xa0,\n\t0x1e0: 0xa0, 0x1e1: 0xa0, 0x1e2: 0xa0, 0x1e3: 0xa0, 0x1e4: 0xa0, 0x1e5: 0xa0, 0x1e6: 0xa0, 0x1e7: 0xa0,\n\t0x1e8: 0xa0, 0x1e9: 0xa0, 0x1ea: 0xa0, 0x1eb: 0xa0, 0x1ec: 0xa0, 0x1ed: 0xa0, 0x1ee: 0xa0, 0x1ef: 0xa0,\n\t0x1f0: 0xa0, 0x1f1: 0xa0, 0x1f2: 0xa0, 0x1f3: 0xa0, 0x1f4: 0xa0, 0x1f5: 0xa0, 0x1f6: 0xa0, 0x1f7: 0xa0,\n\t0x1f8: 0xa0, 0x1f9: 0xa0, 0x1fa: 0xa0, 0x1fb: 0xa0, 0x1fc: 0xa0, 0x1fd: 0xa0, 0x1fe: 0xa0, 0x1ff: 0xa0,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xa0, 0x201: 0xa0, 0x202: 0xa0, 0x203: 0xa0, 0x204: 0xa0, 0x205: 0xa0, 0x206: 0xa0, 0x207: 0xa0,\n\t0x208: 0xa0, 0x209: 0xa0, 0x20a: 0xa0, 0x20b: 0xa0, 0x20c: 0xa0, 0x20d: 0xa0, 0x20e: 0xa0, 0x20f: 0xa0,\n\t0x210: 0xa0, 0x211: 0xa0, 0x212: 0xa0, 0x213: 0xa0, 0x214: 0xa0, 0x215: 0xa0, 0x216: 0xa0, 0x217: 0xa0,\n\t0x218: 0xa0, 0x219: 0xa0, 0x21a: 0xa0, 0x21b: 0xa0, 0x21c: 0xa0, 0x21d: 0xa0, 0x21e: 0xa0, 0x21f: 0xa0,\n\t0x220: 0xa0, 0x221: 0xa0, 0x222: 0xa0, 0x223: 0xa0, 0x224: 0xa0, 0x225: 0xa0, 0x226: 0xa0, 0x227: 0xa0,\n\t0x228: 0xa0, 0x229: 0xa0, 0x22a: 0xa0, 0x22b: 0xa0, 0x22c: 0xa0, 0x22d: 0xa0, 0x22e: 0xa0, 0x22f: 0xa0,\n\t0x230: 0xa0, 0x231: 0xa0, 0x232: 0xa0, 0x233: 0xa0, 0x234: 0xa0, 0x235: 0xa0, 0x236: 0xa0, 0x237: 0x9c,\n\t0x238: 0xa0, 0x239: 0xa0, 0x23a: 0xa0, 0x23b: 0xa0, 0x23c: 0xa0, 0x23d: 0xa0, 0x23e: 0xa0, 0x23f: 0xa0,\n\t// Block 0x9, offset 0x240\n\t0x240: 0xa0, 0x241: 0xa0, 0x242: 0xa0, 0x243: 0xa0, 0x244: 0xa0, 0x245: 0xa0, 0x246: 0xa0, 0x247: 0xa0,\n\t0x248: 0xa0, 0x249: 0xa0, 0x24a: 0xa0, 0x24b: 0xa0, 0x24c: 0xa0, 0x24d: 0xa0, 0x24e: 0xa0, 0x24f: 0xa0,\n\t0x250: 0xa0, 0x251: 0xa0, 0x252: 0xa0, 0x253: 0xa0, 0x254: 0xa0, 0x255: 0xa0, 0x256: 0xa0, 0x257: 0xa0,\n\t0x258: 0xa0, 0x259: 0xa0, 0x25a: 0xa0, 0x25b: 0xa0, 0x25c: 0xa0, 0x25d: 0xa0, 0x25e: 0xa0, 0x25f: 0xa0,\n\t0x260: 0xa0, 0x261: 0xa0, 0x262: 0xa0, 0x263: 0xa0, 0x264: 0xa0, 0x265: 0xa0, 0x266: 0xa0, 0x267: 0xa0,\n\t0x268: 0xa0, 0x269: 0xa0, 0x26a: 0xa0, 0x26b: 0xa0, 0x26c: 0xa0, 0x26d: 0xa0, 0x26e: 0xa0, 0x26f: 0xa0,\n\t0x270: 0xa0, 0x271: 0xa0, 0x272: 0xa0, 0x273: 0xa0, 0x274: 0xa0, 0x275: 0xa0, 0x276: 0xa0, 0x277: 0xa0,\n\t0x278: 0xa0, 0x279: 0xa0, 0x27a: 0xa0, 0x27b: 0xa0, 0x27c: 0xa0, 0x27d: 0xa0, 0x27e: 0xa0, 0x27f: 0xa0,\n\t// Block 0xa, offset 0x280\n\t0x280: 0xa0, 0x281: 0xa0, 0x282: 0xa0, 0x283: 0xa0, 0x284: 0xa0, 0x285: 0xa0, 0x286: 0xa0, 0x287: 0xa0,\n\t0x288: 0xa0, 0x289: 0xa0, 0x28a: 0xa0, 0x28b: 0xa0, 0x28c: 0xa0, 0x28d: 0xa0, 0x28e: 0xa0, 0x28f: 0xa0,\n\t0x290: 0xa0, 0x291: 0xa0, 0x292: 0xa0, 0x293: 0xa0, 0x294: 0xa0, 0x295: 0xa0, 0x296: 0xa0, 0x297: 0xa0,\n\t0x298: 0xa0, 0x299: 0xa0, 0x29a: 0xa0, 0x29b: 0xa0, 0x29c: 0xa0, 0x29d: 0xa0, 0x29e: 0xa0, 0x29f: 0xa0,\n\t0x2a0: 0xa0, 0x2a1: 0xa0, 0x2a2: 0xa0, 0x2a3: 0xa0, 0x2a4: 0xa0, 0x2a5: 0xa0, 0x2a6: 0xa0, 0x2a7: 0xa0,\n\t0x2a8: 0xa0, 0x2a9: 0xa0, 0x2aa: 0xa0, 0x2ab: 0xa0, 0x2ac: 0xa0, 0x2ad: 0xa0, 0x2ae: 0xa0, 0x2af: 0xa0,\n\t0x2b0: 0xa0, 0x2b1: 0xa0, 0x2b2: 0xa0, 0x2b3: 0xa0, 0x2b4: 0xa0, 0x2b5: 0xa0, 0x2b6: 0xa0, 0x2b7: 0xa0,\n\t0x2b8: 0xa0, 0x2b9: 0xa0, 0x2ba: 0xa0, 0x2bb: 0xa0, 0x2bc: 0xa0, 0x2bd: 0xa0, 0x2be: 0xa0, 0x2bf: 0xe5,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0xa0, 0x2c1: 0xa0, 0x2c2: 0xa0, 0x2c3: 0xa0, 0x2c4: 0xa0, 0x2c5: 0xa0, 0x2c6: 0xa0, 0x2c7: 0xa0,\n\t0x2c8: 0xa0, 0x2c9: 0xa0, 0x2ca: 0xa0, 0x2cb: 0xa0, 0x2cc: 0xa0, 0x2cd: 0xa0, 0x2ce: 0xa0, 0x2cf: 0xa0,\n\t0x2d0: 0xa0, 0x2d1: 0xa0, 0x2d2: 0xe6, 0x2d3: 0xe7, 0x2d4: 0xa0, 0x2d5: 0xa0, 0x2d6: 0xa0, 0x2d7: 0xa0,\n\t0x2d8: 0xe8, 0x2d9: 0x40, 0x2da: 0x41, 0x2db: 0xe9, 0x2dc: 0x42, 0x2dd: 0x43, 0x2de: 0x44, 0x2df: 0xea,\n\t0x2e0: 0xeb, 0x2e1: 0xec, 0x2e2: 0xed, 0x2e3: 0xee, 0x2e4: 0xef, 0x2e5: 0xf0, 0x2e6: 0xf1, 0x2e7: 0xf2,\n\t0x2e8: 0xf3, 0x2e9: 0xf4, 0x2ea: 0xf5, 0x2eb: 0xf6, 0x2ec: 0xf7, 0x2ed: 0xf8, 0x2ee: 0xf9, 0x2ef: 0xfa,\n\t0x2f0: 0xa0, 0x2f1: 0xa0, 0x2f2: 0xa0, 0x2f3: 0xa0, 0x2f4: 0xa0, 0x2f5: 0xa0, 0x2f6: 0xa0, 0x2f7: 0xa0,\n\t0x2f8: 0xa0, 0x2f9: 0xa0, 0x2fa: 0xa0, 0x2fb: 0xa0, 0x2fc: 0xa0, 0x2fd: 0xa0, 0x2fe: 0xa0, 0x2ff: 0xa0,\n\t// Block 0xc, offset 0x300\n\t0x300: 0xa0, 0x301: 0xa0, 0x302: 0xa0, 0x303: 0xa0, 0x304: 0xa0, 0x305: 0xa0, 0x306: 0xa0, 0x307: 0xa0,\n\t0x308: 0xa0, 0x309: 0xa0, 0x30a: 0xa0, 0x30b: 0xa0, 0x30c: 0xa0, 0x30d: 0xa0, 0x30e: 0xa0, 0x30f: 0xa0,\n\t0x310: 0xa0, 0x311: 0xa0, 0x312: 0xa0, 0x313: 0xa0, 0x314: 0xa0, 0x315: 0xa0, 0x316: 0xa0, 0x317: 0xa0,\n\t0x318: 0xa0, 0x319: 0xa0, 0x31a: 0xa0, 0x31b: 0xa0, 0x31c: 0xa0, 0x31d: 0xa0, 0x31e: 0xfb, 0x31f: 0xfc,\n\t// Block 0xd, offset 0x340\n\t0x340: 0xfd, 0x341: 0xfd, 0x342: 0xfd, 0x343: 0xfd, 0x344: 0xfd, 0x345: 0xfd, 0x346: 0xfd, 0x347: 0xfd,\n\t0x348: 0xfd, 0x349: 0xfd, 0x34a: 0xfd, 0x34b: 0xfd, 0x34c: 0xfd, 0x34d: 0xfd, 0x34e: 0xfd, 0x34f: 0xfd,\n\t0x350: 0xfd, 0x351: 0xfd, 0x352: 0xfd, 0x353: 0xfd, 0x354: 0xfd, 0x355: 0xfd, 0x356: 0xfd, 0x357: 0xfd,\n\t0x358: 0xfd, 0x359: 0xfd, 0x35a: 0xfd, 0x35b: 0xfd, 0x35c: 0xfd, 0x35d: 0xfd, 0x35e: 0xfd, 0x35f: 0xfd,\n\t0x360: 0xfd, 0x361: 0xfd, 0x362: 0xfd, 0x363: 0xfd, 0x364: 0xfd, 0x365: 0xfd, 0x366: 0xfd, 0x367: 0xfd,\n\t0x368: 0xfd, 0x369: 0xfd, 0x36a: 0xfd, 0x36b: 0xfd, 0x36c: 0xfd, 0x36d: 0xfd, 0x36e: 0xfd, 0x36f: 0xfd,\n\t0x370: 0xfd, 0x371: 0xfd, 0x372: 0xfd, 0x373: 0xfd, 0x374: 0xfd, 0x375: 0xfd, 0x376: 0xfd, 0x377: 0xfd,\n\t0x378: 0xfd, 0x379: 0xfd, 0x37a: 0xfd, 0x37b: 0xfd, 0x37c: 0xfd, 0x37d: 0xfd, 0x37e: 0xfd, 0x37f: 0xfd,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xfd, 0x381: 0xfd, 0x382: 0xfd, 0x383: 0xfd, 0x384: 0xfd, 0x385: 0xfd, 0x386: 0xfd, 0x387: 0xfd,\n\t0x388: 0xfd, 0x389: 0xfd, 0x38a: 0xfd, 0x38b: 0xfd, 0x38c: 0xfd, 0x38d: 0xfd, 0x38e: 0xfd, 0x38f: 0xfd,\n\t0x390: 0xfd, 0x391: 0xfd, 0x392: 0xfd, 0x393: 0xfd, 0x394: 0xfd, 0x395: 0xfd, 0x396: 0xfd, 0x397: 0xfd,\n\t0x398: 0xfd, 0x399: 0xfd, 0x39a: 0xfd, 0x39b: 0xfd, 0x39c: 0xfd, 0x39d: 0xfd, 0x39e: 0xfd, 0x39f: 0xfd,\n\t0x3a0: 0xfd, 0x3a1: 0xfd, 0x3a2: 0xfd, 0x3a3: 0xfd, 0x3a4: 0xfe, 0x3a5: 0xff, 0x3a6: 0x100, 0x3a7: 0x101,\n\t0x3a8: 0x45, 0x3a9: 0x102, 0x3aa: 0x103, 0x3ab: 0x46, 0x3ac: 0x47, 0x3ad: 0x48, 0x3ae: 0x49, 0x3af: 0x4a,\n\t0x3b0: 0x104, 0x3b1: 0x4b, 0x3b2: 0x4c, 0x3b3: 0x4d, 0x3b4: 0x4e, 0x3b5: 0x4f, 0x3b6: 0x105, 0x3b7: 0x50,\n\t0x3b8: 0x51, 0x3b9: 0x52, 0x3ba: 0x53, 0x3bb: 0x54, 0x3bc: 0x55, 0x3bd: 0x56, 0x3be: 0x57, 0x3bf: 0x58,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x106, 0x3c1: 0x107, 0x3c2: 0xa0, 0x3c3: 0x108, 0x3c4: 0x109, 0x3c5: 0x9c, 0x3c6: 0x10a, 0x3c7: 0x10b,\n\t0x3c8: 0xfd, 0x3c9: 0xfd, 0x3ca: 0x10c, 0x3cb: 0x10d, 0x3cc: 0x10e, 0x3cd: 0x10f, 0x3ce: 0x110, 0x3cf: 0x111,\n\t0x3d0: 0x112, 0x3d1: 0xa0, 0x3d2: 0x113, 0x3d3: 0x114, 0x3d4: 0x115, 0x3d5: 0x116, 0x3d6: 0xfd, 0x3d7: 0xfd,\n\t0x3d8: 0xa0, 0x3d9: 0xa0, 0x3da: 0xa0, 0x3db: 0xa0, 0x3dc: 0x117, 0x3dd: 0x118, 0x3de: 0xfd, 0x3df: 0xfd,\n\t0x3e0: 0x119, 0x3e1: 0x11a, 0x3e2: 0x11b, 0x3e3: 0x11c, 0x3e4: 0x11d, 0x3e5: 0xfd, 0x3e6: 0x11e, 0x3e7: 0x11f,\n\t0x3e8: 0x120, 0x3e9: 0x121, 0x3ea: 0x122, 0x3eb: 0x59, 0x3ec: 0x123, 0x3ed: 0x124, 0x3ee: 0x5a, 0x3ef: 0xfd,\n\t0x3f0: 0x125, 0x3f1: 0x126, 0x3f2: 0x127, 0x3f3: 0x128, 0x3f4: 0x129, 0x3f5: 0xfd, 0x3f6: 0xfd, 0x3f7: 0xfd,\n\t0x3f8: 0xfd, 0x3f9: 0x12a, 0x3fa: 0x12b, 0x3fb: 0xfd, 0x3fc: 0x12c, 0x3fd: 0x12d, 0x3fe: 0x12e, 0x3ff: 0x12f,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x130, 0x401: 0x131, 0x402: 0x132, 0x403: 0x133, 0x404: 0x134, 0x405: 0x135, 0x406: 0x136, 0x407: 0x137,\n\t0x408: 0x138, 0x409: 0xfd, 0x40a: 0x139, 0x40b: 0x13a, 0x40c: 0x5b, 0x40d: 0x5c, 0x40e: 0xfd, 0x40f: 0xfd,\n\t0x410: 0x13b, 0x411: 0x13c, 0x412: 0x13d, 0x413: 0x13e, 0x414: 0xfd, 0x415: 0xfd, 0x416: 0x13f, 0x417: 0x140,\n\t0x418: 0x141, 0x419: 0x142, 0x41a: 0x143, 0x41b: 0x144, 0x41c: 0x145, 0x41d: 0xfd, 0x41e: 0xfd, 0x41f: 0xfd,\n\t0x420: 0x146, 0x421: 0xfd, 0x422: 0x147, 0x423: 0x148, 0x424: 0x5d, 0x425: 0x149, 0x426: 0x14a, 0x427: 0x14b,\n\t0x428: 0x14c, 0x429: 0x14d, 0x42a: 0x14e, 0x42b: 0x14f, 0x42c: 0xfd, 0x42d: 0xfd, 0x42e: 0xfd, 0x42f: 0xfd,\n\t0x430: 0x150, 0x431: 0x151, 0x432: 0x152, 0x433: 0xfd, 0x434: 0x153, 0x435: 0x154, 0x436: 0x155, 0x437: 0xfd,\n\t0x438: 0xfd, 0x439: 0xfd, 0x43a: 0xfd, 0x43b: 0x156, 0x43c: 0xfd, 0x43d: 0xfd, 0x43e: 0x157, 0x43f: 0x158,\n\t// Block 0x11, offset 0x440\n\t0x440: 0xa0, 0x441: 0xa0, 0x442: 0xa0, 0x443: 0xa0, 0x444: 0xa0, 0x445: 0xa0, 0x446: 0xa0, 0x447: 0xa0,\n\t0x448: 0xa0, 0x449: 0xa0, 0x44a: 0xa0, 0x44b: 0xa0, 0x44c: 0xa0, 0x44d: 0xa0, 0x44e: 0x159, 0x44f: 0xfd,\n\t0x450: 0x9c, 0x451: 0x15a, 0x452: 0xa0, 0x453: 0xa0, 0x454: 0xa0, 0x455: 0x15b, 0x456: 0xfd, 0x457: 0xfd,\n\t0x458: 0xfd, 0x459: 0xfd, 0x45a: 0xfd, 0x45b: 0xfd, 0x45c: 0xfd, 0x45d: 0xfd, 0x45e: 0xfd, 0x45f: 0xfd,\n\t0x460: 0xfd, 0x461: 0xfd, 0x462: 0xfd, 0x463: 0xfd, 0x464: 0xfd, 0x465: 0xfd, 0x466: 0xfd, 0x467: 0xfd,\n\t0x468: 0xfd, 0x469: 0xfd, 0x46a: 0xfd, 0x46b: 0xfd, 0x46c: 0xfd, 0x46d: 0xfd, 0x46e: 0xfd, 0x46f: 0xfd,\n\t0x470: 0xfd, 0x471: 0xfd, 0x472: 0xfd, 0x473: 0xfd, 0x474: 0xfd, 0x475: 0xfd, 0x476: 0xfd, 0x477: 0xfd,\n\t0x478: 0xfd, 0x479: 0xfd, 0x47a: 0xfd, 0x47b: 0xfd, 0x47c: 0xfd, 0x47d: 0xfd, 0x47e: 0xfd, 0x47f: 0xfd,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xa0, 0x481: 0xa0, 0x482: 0xa0, 0x483: 0xa0, 0x484: 0xa0, 0x485: 0xa0, 0x486: 0xa0, 0x487: 0xa0,\n\t0x488: 0xa0, 0x489: 0xa0, 0x48a: 0xa0, 0x48b: 0xa0, 0x48c: 0xa0, 0x48d: 0xa0, 0x48e: 0xa0, 0x48f: 0xa0,\n\t0x490: 0x15c, 0x491: 0xfd, 0x492: 0xfd, 0x493: 0xfd, 0x494: 0xfd, 0x495: 0xfd, 0x496: 0xfd, 0x497: 0xfd,\n\t0x498: 0xfd, 0x499: 0xfd, 0x49a: 0xfd, 0x49b: 0xfd, 0x49c: 0xfd, 0x49d: 0xfd, 0x49e: 0xfd, 0x49f: 0xfd,\n\t0x4a0: 0xfd, 0x4a1: 0xfd, 0x4a2: 0xfd, 0x4a3: 0xfd, 0x4a4: 0xfd, 0x4a5: 0xfd, 0x4a6: 0xfd, 0x4a7: 0xfd,\n\t0x4a8: 0xfd, 0x4a9: 0xfd, 0x4aa: 0xfd, 0x4ab: 0xfd, 0x4ac: 0xfd, 0x4ad: 0xfd, 0x4ae: 0xfd, 0x4af: 0xfd,\n\t0x4b0: 0xfd, 0x4b1: 0xfd, 0x4b2: 0xfd, 0x4b3: 0xfd, 0x4b4: 0xfd, 0x4b5: 0xfd, 0x4b6: 0xfd, 0x4b7: 0xfd,\n\t0x4b8: 0xfd, 0x4b9: 0xfd, 0x4ba: 0xfd, 0x4bb: 0xfd, 0x4bc: 0xfd, 0x4bd: 0xfd, 0x4be: 0xfd, 0x4bf: 0xfd,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0xfd, 0x4c1: 0xfd, 0x4c2: 0xfd, 0x4c3: 0xfd, 0x4c4: 0xfd, 0x4c5: 0xfd, 0x4c6: 0xfd, 0x4c7: 0xfd,\n\t0x4c8: 0xfd, 0x4c9: 0xfd, 0x4ca: 0xfd, 0x4cb: 0xfd, 0x4cc: 0xfd, 0x4cd: 0xfd, 0x4ce: 0xfd, 0x4cf: 0xfd,\n\t0x4d0: 0xa0, 0x4d1: 0xa0, 0x4d2: 0xa0, 0x4d3: 0xa0, 0x4d4: 0xa0, 0x4d5: 0xa0, 0x4d6: 0xa0, 0x4d7: 0xa0,\n\t0x4d8: 0xa0, 0x4d9: 0x15d, 0x4da: 0xfd, 0x4db: 0xfd, 0x4dc: 0xfd, 0x4dd: 0xfd, 0x4de: 0xfd, 0x4df: 0xfd,\n\t0x4e0: 0xfd, 0x4e1: 0xfd, 0x4e2: 0xfd, 0x4e3: 0xfd, 0x4e4: 0xfd, 0x4e5: 0xfd, 0x4e6: 0xfd, 0x4e7: 0xfd,\n\t0x4e8: 0xfd, 0x4e9: 0xfd, 0x4ea: 0xfd, 0x4eb: 0xfd, 0x4ec: 0xfd, 0x4ed: 0xfd, 0x4ee: 0xfd, 0x4ef: 0xfd,\n\t0x4f0: 0xfd, 0x4f1: 0xfd, 0x4f2: 0xfd, 0x4f3: 0xfd, 0x4f4: 0xfd, 0x4f5: 0xfd, 0x4f6: 0xfd, 0x4f7: 0xfd,\n\t0x4f8: 0xfd, 0x4f9: 0xfd, 0x4fa: 0xfd, 0x4fb: 0xfd, 0x4fc: 0xfd, 0x4fd: 0xfd, 0x4fe: 0xfd, 0x4ff: 0xfd,\n\t// Block 0x14, offset 0x500\n\t0x500: 0xfd, 0x501: 0xfd, 0x502: 0xfd, 0x503: 0xfd, 0x504: 0xfd, 0x505: 0xfd, 0x506: 0xfd, 0x507: 0xfd,\n\t0x508: 0xfd, 0x509: 0xfd, 0x50a: 0xfd, 0x50b: 0xfd, 0x50c: 0xfd, 0x50d: 0xfd, 0x50e: 0xfd, 0x50f: 0xfd,\n\t0x510: 0xfd, 0x511: 0xfd, 0x512: 0xfd, 0x513: 0xfd, 0x514: 0xfd, 0x515: 0xfd, 0x516: 0xfd, 0x517: 0xfd,\n\t0x518: 0xfd, 0x519: 0xfd, 0x51a: 0xfd, 0x51b: 0xfd, 0x51c: 0xfd, 0x51d: 0xfd, 0x51e: 0xfd, 0x51f: 0xfd,\n\t0x520: 0xa0, 0x521: 0xa0, 0x522: 0xa0, 0x523: 0xa0, 0x524: 0xa0, 0x525: 0xa0, 0x526: 0xa0, 0x527: 0xa0,\n\t0x528: 0x14f, 0x529: 0x15e, 0x52a: 0xfd, 0x52b: 0x15f, 0x52c: 0x160, 0x52d: 0x161, 0x52e: 0x162, 0x52f: 0xfd,\n\t0x530: 0xfd, 0x531: 0xfd, 0x532: 0xfd, 0x533: 0xfd, 0x534: 0xfd, 0x535: 0xfd, 0x536: 0xfd, 0x537: 0xfd,\n\t0x538: 0xfd, 0x539: 0x163, 0x53a: 0x164, 0x53b: 0xfd, 0x53c: 0xa0, 0x53d: 0x165, 0x53e: 0x166, 0x53f: 0x167,\n\t// Block 0x15, offset 0x540\n\t0x540: 0xa0, 0x541: 0xa0, 0x542: 0xa0, 0x543: 0xa0, 0x544: 0xa0, 0x545: 0xa0, 0x546: 0xa0, 0x547: 0xa0,\n\t0x548: 0xa0, 0x549: 0xa0, 0x54a: 0xa0, 0x54b: 0xa0, 0x54c: 0xa0, 0x54d: 0xa0, 0x54e: 0xa0, 0x54f: 0xa0,\n\t0x550: 0xa0, 0x551: 0xa0, 0x552: 0xa0, 0x553: 0xa0, 0x554: 0xa0, 0x555: 0xa0, 0x556: 0xa0, 0x557: 0xa0,\n\t0x558: 0xa0, 0x559: 0xa0, 0x55a: 0xa0, 0x55b: 0xa0, 0x55c: 0xa0, 0x55d: 0xa0, 0x55e: 0xa0, 0x55f: 0x168,\n\t0x560: 0xa0, 0x561: 0xa0, 0x562: 0xa0, 0x563: 0xa0, 0x564: 0xa0, 0x565: 0xa0, 0x566: 0xa0, 0x567: 0xa0,\n\t0x568: 0xa0, 0x569: 0xa0, 0x56a: 0xa0, 0x56b: 0xa0, 0x56c: 0xa0, 0x56d: 0xa0, 0x56e: 0xa0, 0x56f: 0xa0,\n\t0x570: 0xa0, 0x571: 0xa0, 0x572: 0xa0, 0x573: 0x169, 0x574: 0x16a, 0x575: 0xfd, 0x576: 0xfd, 0x577: 0xfd,\n\t0x578: 0xfd, 0x579: 0xfd, 0x57a: 0xfd, 0x57b: 0xfd, 0x57c: 0xfd, 0x57d: 0xfd, 0x57e: 0xfd, 0x57f: 0xfd,\n\t// Block 0x16, offset 0x580\n\t0x580: 0xa0, 0x581: 0xa0, 0x582: 0xa0, 0x583: 0xa0, 0x584: 0x16b, 0x585: 0x16c, 0x586: 0xa0, 0x587: 0xa0,\n\t0x588: 0xa0, 0x589: 0xa0, 0x58a: 0xa0, 0x58b: 0x16d, 0x58c: 0xfd, 0x58d: 0xfd, 0x58e: 0xfd, 0x58f: 0xfd,\n\t0x590: 0xfd, 0x591: 0xfd, 0x592: 0xfd, 0x593: 0xfd, 0x594: 0xfd, 0x595: 0xfd, 0x596: 0xfd, 0x597: 0xfd,\n\t0x598: 0xfd, 0x599: 0xfd, 0x59a: 0xfd, 0x59b: 0xfd, 0x59c: 0xfd, 0x59d: 0xfd, 0x59e: 0xfd, 0x59f: 0xfd,\n\t0x5a0: 0xfd, 0x5a1: 0xfd, 0x5a2: 0xfd, 0x5a3: 0xfd, 0x5a4: 0xfd, 0x5a5: 0xfd, 0x5a6: 0xfd, 0x5a7: 0xfd,\n\t0x5a8: 0xfd, 0x5a9: 0xfd, 0x5aa: 0xfd, 0x5ab: 0xfd, 0x5ac: 0xfd, 0x5ad: 0xfd, 0x5ae: 0xfd, 0x5af: 0xfd,\n\t0x5b0: 0xa0, 0x5b1: 0x16e, 0x5b2: 0x16f, 0x5b3: 0xfd, 0x5b4: 0xfd, 0x5b5: 0xfd, 0x5b6: 0xfd, 0x5b7: 0xfd,\n\t0x5b8: 0xfd, 0x5b9: 0xfd, 0x5ba: 0xfd, 0x5bb: 0xfd, 0x5bc: 0xfd, 0x5bd: 0xfd, 0x5be: 0xfd, 0x5bf: 0xfd,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x9c, 0x5c1: 0x9c, 0x5c2: 0x9c, 0x5c3: 0x170, 0x5c4: 0x171, 0x5c5: 0x172, 0x5c6: 0x173, 0x5c7: 0x174,\n\t0x5c8: 0x9c, 0x5c9: 0x175, 0x5ca: 0xfd, 0x5cb: 0x176, 0x5cc: 0x9c, 0x5cd: 0x177, 0x5ce: 0xfd, 0x5cf: 0xfd,\n\t0x5d0: 0x5e, 0x5d1: 0x5f, 0x5d2: 0x60, 0x5d3: 0x61, 0x5d4: 0x62, 0x5d5: 0x63, 0x5d6: 0x64, 0x5d7: 0x65,\n\t0x5d8: 0x66, 0x5d9: 0x67, 0x5da: 0x68, 0x5db: 0x69, 0x5dc: 0x6a, 0x5dd: 0x6b, 0x5de: 0x6c, 0x5df: 0x6d,\n\t0x5e0: 0x9c, 0x5e1: 0x9c, 0x5e2: 0x9c, 0x5e3: 0x9c, 0x5e4: 0x9c, 0x5e5: 0x9c, 0x5e6: 0x9c, 0x5e7: 0x9c,\n\t0x5e8: 0x178, 0x5e9: 0x179, 0x5ea: 0x17a, 0x5eb: 0xfd, 0x5ec: 0xfd, 0x5ed: 0xfd, 0x5ee: 0xfd, 0x5ef: 0xfd,\n\t0x5f0: 0xfd, 0x5f1: 0xfd, 0x5f2: 0xfd, 0x5f3: 0xfd, 0x5f4: 0xfd, 0x5f5: 0xfd, 0x5f6: 0xfd, 0x5f7: 0xfd,\n\t0x5f8: 0xfd, 0x5f9: 0xfd, 0x5fa: 0xfd, 0x5fb: 0xfd, 0x5fc: 0xfd, 0x5fd: 0xfd, 0x5fe: 0xfd, 0x5ff: 0xfd,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x17b, 0x601: 0xfd, 0x602: 0xfd, 0x603: 0xfd, 0x604: 0x17c, 0x605: 0x17d, 0x606: 0xfd, 0x607: 0xfd,\n\t0x608: 0xfd, 0x609: 0xfd, 0x60a: 0xfd, 0x60b: 0x17e, 0x60c: 0xfd, 0x60d: 0xfd, 0x60e: 0xfd, 0x60f: 0xfd,\n\t0x610: 0xfd, 0x611: 0xfd, 0x612: 0xfd, 0x613: 0xfd, 0x614: 0xfd, 0x615: 0xfd, 0x616: 0xfd, 0x617: 0xfd,\n\t0x618: 0xfd, 0x619: 0xfd, 0x61a: 0xfd, 0x61b: 0xfd, 0x61c: 0xfd, 0x61d: 0xfd, 0x61e: 0xfd, 0x61f: 0xfd,\n\t0x620: 0x125, 0x621: 0x125, 0x622: 0x125, 0x623: 0x17f, 0x624: 0x6e, 0x625: 0x180, 0x626: 0xfd, 0x627: 0xfd,\n\t0x628: 0xfd, 0x629: 0xfd, 0x62a: 0xfd, 0x62b: 0xfd, 0x62c: 0xfd, 0x62d: 0xfd, 0x62e: 0xfd, 0x62f: 0xfd,\n\t0x630: 0xfd, 0x631: 0x181, 0x632: 0x182, 0x633: 0xfd, 0x634: 0x183, 0x635: 0xfd, 0x636: 0xfd, 0x637: 0xfd,\n\t0x638: 0x6f, 0x639: 0x70, 0x63a: 0x71, 0x63b: 0x184, 0x63c: 0xfd, 0x63d: 0xfd, 0x63e: 0xfd, 0x63f: 0xfd,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x185, 0x641: 0x9c, 0x642: 0x186, 0x643: 0x187, 0x644: 0x72, 0x645: 0x73, 0x646: 0x188, 0x647: 0x189,\n\t0x648: 0x74, 0x649: 0x18a, 0x64a: 0xfd, 0x64b: 0xfd, 0x64c: 0x9c, 0x64d: 0x9c, 0x64e: 0x9c, 0x64f: 0x9c,\n\t0x650: 0x9c, 0x651: 0x9c, 0x652: 0x9c, 0x653: 0x9c, 0x654: 0x9c, 0x655: 0x9c, 0x656: 0x9c, 0x657: 0x9c,\n\t0x658: 0x9c, 0x659: 0x9c, 0x65a: 0x9c, 0x65b: 0x18b, 0x65c: 0x9c, 0x65d: 0x18c, 0x65e: 0x9c, 0x65f: 0x18d,\n\t0x660: 0x18e, 0x661: 0x18f, 0x662: 0x190, 0x663: 0xfd, 0x664: 0x9c, 0x665: 0x191, 0x666: 0x9c, 0x667: 0x192,\n\t0x668: 0x9c, 0x669: 0x193, 0x66a: 0x194, 0x66b: 0x195, 0x66c: 0x9c, 0x66d: 0x9c, 0x66e: 0x196, 0x66f: 0x197,\n\t0x670: 0xfd, 0x671: 0xfd, 0x672: 0xfd, 0x673: 0xfd, 0x674: 0xfd, 0x675: 0xfd, 0x676: 0xfd, 0x677: 0xfd,\n\t0x678: 0xfd, 0x679: 0xfd, 0x67a: 0xfd, 0x67b: 0xfd, 0x67c: 0xfd, 0x67d: 0xfd, 0x67e: 0xfd, 0x67f: 0xfd,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0xa0, 0x681: 0xa0, 0x682: 0xa0, 0x683: 0xa0, 0x684: 0xa0, 0x685: 0xa0, 0x686: 0xa0, 0x687: 0xa0,\n\t0x688: 0xa0, 0x689: 0xa0, 0x68a: 0xa0, 0x68b: 0xa0, 0x68c: 0xa0, 0x68d: 0xa0, 0x68e: 0xa0, 0x68f: 0xa0,\n\t0x690: 0xa0, 0x691: 0xa0, 0x692: 0xa0, 0x693: 0xa0, 0x694: 0xa0, 0x695: 0xa0, 0x696: 0xa0, 0x697: 0xa0,\n\t0x698: 0xa0, 0x699: 0xa0, 0x69a: 0xa0, 0x69b: 0x198, 0x69c: 0xa0, 0x69d: 0xa0, 0x69e: 0xa0, 0x69f: 0xa0,\n\t0x6a0: 0xa0, 0x6a1: 0xa0, 0x6a2: 0xa0, 0x6a3: 0xa0, 0x6a4: 0xa0, 0x6a5: 0xa0, 0x6a6: 0xa0, 0x6a7: 0xa0,\n\t0x6a8: 0xa0, 0x6a9: 0xa0, 0x6aa: 0xa0, 0x6ab: 0xa0, 0x6ac: 0xa0, 0x6ad: 0xa0, 0x6ae: 0xa0, 0x6af: 0xa0,\n\t0x6b0: 0xa0, 0x6b1: 0xa0, 0x6b2: 0xa0, 0x6b3: 0xa0, 0x6b4: 0xa0, 0x6b5: 0xa0, 0x6b6: 0xa0, 0x6b7: 0xa0,\n\t0x6b8: 0xa0, 0x6b9: 0xa0, 0x6ba: 0xa0, 0x6bb: 0xa0, 0x6bc: 0xa0, 0x6bd: 0xa0, 0x6be: 0xa0, 0x6bf: 0xa0,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0xa0, 0x6c1: 0xa0, 0x6c2: 0xa0, 0x6c3: 0xa0, 0x6c4: 0xa0, 0x6c5: 0xa0, 0x6c6: 0xa0, 0x6c7: 0xa0,\n\t0x6c8: 0xa0, 0x6c9: 0xa0, 0x6ca: 0xa0, 0x6cb: 0xa0, 0x6cc: 0xa0, 0x6cd: 0xa0, 0x6ce: 0xa0, 0x6cf: 0xa0,\n\t0x6d0: 0xa0, 0x6d1: 0xa0, 0x6d2: 0xa0, 0x6d3: 0xa0, 0x6d4: 0xa0, 0x6d5: 0xa0, 0x6d6: 0xa0, 0x6d7: 0xa0,\n\t0x6d8: 0xa0, 0x6d9: 0xa0, 0x6da: 0xa0, 0x6db: 0xa0, 0x6dc: 0x199, 0x6dd: 0xa0, 0x6de: 0xa0, 0x6df: 0xa0,\n\t0x6e0: 0x19a, 0x6e1: 0xa0, 0x6e2: 0xa0, 0x6e3: 0xa0, 0x6e4: 0xa0, 0x6e5: 0xa0, 0x6e6: 0xa0, 0x6e7: 0xa0,\n\t0x6e8: 0xa0, 0x6e9: 0xa0, 0x6ea: 0xa0, 0x6eb: 0xa0, 0x6ec: 0xa0, 0x6ed: 0xa0, 0x6ee: 0xa0, 0x6ef: 0xa0,\n\t0x6f0: 0xa0, 0x6f1: 0xa0, 0x6f2: 0xa0, 0x6f3: 0xa0, 0x6f4: 0xa0, 0x6f5: 0xa0, 0x6f6: 0xa0, 0x6f7: 0xa0,\n\t0x6f8: 0xa0, 0x6f9: 0xa0, 0x6fa: 0xa0, 0x6fb: 0xa0, 0x6fc: 0xa0, 0x6fd: 0xa0, 0x6fe: 0xa0, 0x6ff: 0xa0,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0xa0, 0x701: 0xa0, 0x702: 0xa0, 0x703: 0xa0, 0x704: 0xa0, 0x705: 0xa0, 0x706: 0xa0, 0x707: 0xa0,\n\t0x708: 0xa0, 0x709: 0xa0, 0x70a: 0xa0, 0x70b: 0xa0, 0x70c: 0xa0, 0x70d: 0xa0, 0x70e: 0xa0, 0x70f: 0xa0,\n\t0x710: 0xa0, 0x711: 0xa0, 0x712: 0xa0, 0x713: 0xa0, 0x714: 0xa0, 0x715: 0xa0, 0x716: 0xa0, 0x717: 0xa0,\n\t0x718: 0xa0, 0x719: 0xa0, 0x71a: 0xa0, 0x71b: 0xa0, 0x71c: 0xa0, 0x71d: 0xa0, 0x71e: 0xa0, 0x71f: 0xa0,\n\t0x720: 0xa0, 0x721: 0xa0, 0x722: 0xa0, 0x723: 0xa0, 0x724: 0xa0, 0x725: 0xa0, 0x726: 0xa0, 0x727: 0xa0,\n\t0x728: 0xa0, 0x729: 0xa0, 0x72a: 0xa0, 0x72b: 0xa0, 0x72c: 0xa0, 0x72d: 0xa0, 0x72e: 0xa0, 0x72f: 0xa0,\n\t0x730: 0xa0, 0x731: 0xa0, 0x732: 0xa0, 0x733: 0xa0, 0x734: 0xa0, 0x735: 0xa0, 0x736: 0xa0, 0x737: 0xa0,\n\t0x738: 0xa0, 0x739: 0xa0, 0x73a: 0x19b, 0x73b: 0xa0, 0x73c: 0xa0, 0x73d: 0xa0, 0x73e: 0xa0, 0x73f: 0xa0,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0xa0, 0x741: 0xa0, 0x742: 0xa0, 0x743: 0xa0, 0x744: 0xa0, 0x745: 0xa0, 0x746: 0xa0, 0x747: 0xa0,\n\t0x748: 0xa0, 0x749: 0xa0, 0x74a: 0xa0, 0x74b: 0xa0, 0x74c: 0xa0, 0x74d: 0xa0, 0x74e: 0xa0, 0x74f: 0xa0,\n\t0x750: 0xa0, 0x751: 0xa0, 0x752: 0xa0, 0x753: 0xa0, 0x754: 0xa0, 0x755: 0xa0, 0x756: 0xa0, 0x757: 0xa0,\n\t0x758: 0xa0, 0x759: 0xa0, 0x75a: 0xa0, 0x75b: 0xa0, 0x75c: 0xa0, 0x75d: 0xa0, 0x75e: 0xa0, 0x75f: 0xa0,\n\t0x760: 0xa0, 0x761: 0xa0, 0x762: 0xa0, 0x763: 0xa0, 0x764: 0xa0, 0x765: 0xa0, 0x766: 0xa0, 0x767: 0xa0,\n\t0x768: 0xa0, 0x769: 0xa0, 0x76a: 0xa0, 0x76b: 0xa0, 0x76c: 0xa0, 0x76d: 0xa0, 0x76e: 0xa0, 0x76f: 0x19c,\n\t0x770: 0xfd, 0x771: 0xfd, 0x772: 0xfd, 0x773: 0xfd, 0x774: 0xfd, 0x775: 0xfd, 0x776: 0xfd, 0x777: 0xfd,\n\t0x778: 0xfd, 0x779: 0xfd, 0x77a: 0xfd, 0x77b: 0xfd, 0x77c: 0xfd, 0x77d: 0xfd, 0x77e: 0xfd, 0x77f: 0xfd,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0xfd, 0x781: 0xfd, 0x782: 0xfd, 0x783: 0xfd, 0x784: 0xfd, 0x785: 0xfd, 0x786: 0xfd, 0x787: 0xfd,\n\t0x788: 0xfd, 0x789: 0xfd, 0x78a: 0xfd, 0x78b: 0xfd, 0x78c: 0xfd, 0x78d: 0xfd, 0x78e: 0xfd, 0x78f: 0xfd,\n\t0x790: 0xfd, 0x791: 0xfd, 0x792: 0xfd, 0x793: 0xfd, 0x794: 0xfd, 0x795: 0xfd, 0x796: 0xfd, 0x797: 0xfd,\n\t0x798: 0xfd, 0x799: 0xfd, 0x79a: 0xfd, 0x79b: 0xfd, 0x79c: 0xfd, 0x79d: 0xfd, 0x79e: 0xfd, 0x79f: 0xfd,\n\t0x7a0: 0x75, 0x7a1: 0x76, 0x7a2: 0x77, 0x7a3: 0x78, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x7b, 0x7a7: 0x7c,\n\t0x7a8: 0x7d, 0x7a9: 0xfd, 0x7aa: 0xfd, 0x7ab: 0xfd, 0x7ac: 0xfd, 0x7ad: 0xfd, 0x7ae: 0xfd, 0x7af: 0xfd,\n\t0x7b0: 0xfd, 0x7b1: 0xfd, 0x7b2: 0xfd, 0x7b3: 0xfd, 0x7b4: 0xfd, 0x7b5: 0xfd, 0x7b6: 0xfd, 0x7b7: 0xfd,\n\t0x7b8: 0xfd, 0x7b9: 0xfd, 0x7ba: 0xfd, 0x7bb: 0xfd, 0x7bc: 0xfd, 0x7bd: 0xfd, 0x7be: 0xfd, 0x7bf: 0xfd,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0xa0, 0x7c1: 0xa0, 0x7c2: 0xa0, 0x7c3: 0xa0, 0x7c4: 0xa0, 0x7c5: 0xa0, 0x7c6: 0xa0, 0x7c7: 0xa0,\n\t0x7c8: 0xa0, 0x7c9: 0xa0, 0x7ca: 0xa0, 0x7cb: 0xa0, 0x7cc: 0xa0, 0x7cd: 0x19d, 0x7ce: 0xfd, 0x7cf: 0xfd,\n\t0x7d0: 0xfd, 0x7d1: 0xfd, 0x7d2: 0xfd, 0x7d3: 0xfd, 0x7d4: 0xfd, 0x7d5: 0xfd, 0x7d6: 0xfd, 0x7d7: 0xfd,\n\t0x7d8: 0xfd, 0x7d9: 0xfd, 0x7da: 0xfd, 0x7db: 0xfd, 0x7dc: 0xfd, 0x7dd: 0xfd, 0x7de: 0xfd, 0x7df: 0xfd,\n\t0x7e0: 0xfd, 0x7e1: 0xfd, 0x7e2: 0xfd, 0x7e3: 0xfd, 0x7e4: 0xfd, 0x7e5: 0xfd, 0x7e6: 0xfd, 0x7e7: 0xfd,\n\t0x7e8: 0xfd, 0x7e9: 0xfd, 0x7ea: 0xfd, 0x7eb: 0xfd, 0x7ec: 0xfd, 0x7ed: 0xfd, 0x7ee: 0xfd, 0x7ef: 0xfd,\n\t0x7f0: 0xfd, 0x7f1: 0xfd, 0x7f2: 0xfd, 0x7f3: 0xfd, 0x7f4: 0xfd, 0x7f5: 0xfd, 0x7f6: 0xfd, 0x7f7: 0xfd,\n\t0x7f8: 0xfd, 0x7f9: 0xfd, 0x7fa: 0xfd, 0x7fb: 0xfd, 0x7fc: 0xfd, 0x7fd: 0xfd, 0x7fe: 0xfd, 0x7ff: 0xfd,\n\t// Block 0x20, offset 0x800\n\t0x810: 0x0d, 0x811: 0x0e, 0x812: 0x0f, 0x813: 0x10, 0x814: 0x11, 0x815: 0x0b, 0x816: 0x12, 0x817: 0x07,\n\t0x818: 0x13, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x14, 0x81c: 0x0b, 0x81d: 0x15, 0x81e: 0x16, 0x81f: 0x17,\n\t0x820: 0x07, 0x821: 0x07, 0x822: 0x07, 0x823: 0x07, 0x824: 0x07, 0x825: 0x07, 0x826: 0x07, 0x827: 0x07,\n\t0x828: 0x07, 0x829: 0x07, 0x82a: 0x18, 0x82b: 0x19, 0x82c: 0x1a, 0x82d: 0x07, 0x82e: 0x1b, 0x82f: 0x1c,\n\t0x830: 0x07, 0x831: 0x1d, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b,\n\t0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0b, 0x841: 0x0b, 0x842: 0x0b, 0x843: 0x0b, 0x844: 0x0b, 0x845: 0x0b, 0x846: 0x0b, 0x847: 0x0b,\n\t0x848: 0x0b, 0x849: 0x0b, 0x84a: 0x0b, 0x84b: 0x0b, 0x84c: 0x0b, 0x84d: 0x0b, 0x84e: 0x0b, 0x84f: 0x0b,\n\t0x850: 0x0b, 0x851: 0x0b, 0x852: 0x0b, 0x853: 0x0b, 0x854: 0x0b, 0x855: 0x0b, 0x856: 0x0b, 0x857: 0x0b,\n\t0x858: 0x0b, 0x859: 0x0b, 0x85a: 0x0b, 0x85b: 0x0b, 0x85c: 0x0b, 0x85d: 0x0b, 0x85e: 0x0b, 0x85f: 0x0b,\n\t0x860: 0x0b, 0x861: 0x0b, 0x862: 0x0b, 0x863: 0x0b, 0x864: 0x0b, 0x865: 0x0b, 0x866: 0x0b, 0x867: 0x0b,\n\t0x868: 0x0b, 0x869: 0x0b, 0x86a: 0x0b, 0x86b: 0x0b, 0x86c: 0x0b, 0x86d: 0x0b, 0x86e: 0x0b, 0x86f: 0x0b,\n\t0x870: 0x0b, 0x871: 0x0b, 0x872: 0x0b, 0x873: 0x0b, 0x874: 0x0b, 0x875: 0x0b, 0x876: 0x0b, 0x877: 0x0b,\n\t0x878: 0x0b, 0x879: 0x0b, 0x87a: 0x0b, 0x87b: 0x0b, 0x87c: 0x0b, 0x87d: 0x0b, 0x87e: 0x0b, 0x87f: 0x0b,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x19e, 0x881: 0x19f, 0x882: 0xfd, 0x883: 0xfd, 0x884: 0x1a0, 0x885: 0x1a0, 0x886: 0x1a0, 0x887: 0x1a1,\n\t0x888: 0xfd, 0x889: 0xfd, 0x88a: 0xfd, 0x88b: 0xfd, 0x88c: 0xfd, 0x88d: 0xfd, 0x88e: 0xfd, 0x88f: 0xfd,\n\t0x890: 0xfd, 0x891: 0xfd, 0x892: 0xfd, 0x893: 0xfd, 0x894: 0xfd, 0x895: 0xfd, 0x896: 0xfd, 0x897: 0xfd,\n\t0x898: 0xfd, 0x899: 0xfd, 0x89a: 0xfd, 0x89b: 0xfd, 0x89c: 0xfd, 0x89d: 0xfd, 0x89e: 0xfd, 0x89f: 0xfd,\n\t0x8a0: 0xfd, 0x8a1: 0xfd, 0x8a2: 0xfd, 0x8a3: 0xfd, 0x8a4: 0xfd, 0x8a5: 0xfd, 0x8a6: 0xfd, 0x8a7: 0xfd,\n\t0x8a8: 0xfd, 0x8a9: 0xfd, 0x8aa: 0xfd, 0x8ab: 0xfd, 0x8ac: 0xfd, 0x8ad: 0xfd, 0x8ae: 0xfd, 0x8af: 0xfd,\n\t0x8b0: 0xfd, 0x8b1: 0xfd, 0x8b2: 0xfd, 0x8b3: 0xfd, 0x8b4: 0xfd, 0x8b5: 0xfd, 0x8b6: 0xfd, 0x8b7: 0xfd,\n\t0x8b8: 0xfd, 0x8b9: 0xfd, 0x8ba: 0xfd, 0x8bb: 0xfd, 0x8bc: 0xfd, 0x8bd: 0xfd, 0x8be: 0xfd, 0x8bf: 0xfd,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b,\n\t0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b,\n\t0x8d0: 0x0b, 0x8d1: 0x0b, 0x8d2: 0x0b, 0x8d3: 0x0b, 0x8d4: 0x0b, 0x8d5: 0x0b, 0x8d6: 0x0b, 0x8d7: 0x0b,\n\t0x8d8: 0x0b, 0x8d9: 0x0b, 0x8da: 0x0b, 0x8db: 0x0b, 0x8dc: 0x0b, 0x8dd: 0x0b, 0x8de: 0x0b, 0x8df: 0x0b,\n\t0x8e0: 0x20, 0x8e1: 0x0b, 0x8e2: 0x0b, 0x8e3: 0x0b, 0x8e4: 0x0b, 0x8e5: 0x0b, 0x8e6: 0x0b, 0x8e7: 0x0b,\n\t0x8e8: 0x0b, 0x8e9: 0x0b, 0x8ea: 0x0b, 0x8eb: 0x0b, 0x8ec: 0x0b, 0x8ed: 0x0b, 0x8ee: 0x0b, 0x8ef: 0x0b,\n\t0x8f0: 0x0b, 0x8f1: 0x0b, 0x8f2: 0x0b, 0x8f3: 0x0b, 0x8f4: 0x0b, 0x8f5: 0x0b, 0x8f6: 0x0b, 0x8f7: 0x0b,\n\t0x8f8: 0x0b, 0x8f9: 0x0b, 0x8fa: 0x0b, 0x8fb: 0x0b, 0x8fc: 0x0b, 0x8fd: 0x0b, 0x8fe: 0x0b, 0x8ff: 0x0b,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0b, 0x901: 0x0b, 0x902: 0x0b, 0x903: 0x0b, 0x904: 0x0b, 0x905: 0x0b, 0x906: 0x0b, 0x907: 0x0b,\n\t0x908: 0x0b, 0x909: 0x0b, 0x90a: 0x0b, 0x90b: 0x0b, 0x90c: 0x0b, 0x90d: 0x0b, 0x90e: 0x0b, 0x90f: 0x0b,\n}\n\n// idnaSparseOffset: 292 entries, 584 bytes\nvar idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x33, 0x3e, 0x4a, 0x4e, 0x5d, 0x62, 0x6c, 0x78, 0x85, 0x8b, 0x94, 0xa4, 0xb2, 0xbd, 0xca, 0xdb, 0xe5, 0xec, 0xf9, 0x10a, 0x111, 0x11c, 0x12b, 0x139, 0x143, 0x145, 0x14a, 0x14d, 0x150, 0x152, 0x15e, 0x169, 0x171, 0x177, 0x17d, 0x182, 0x187, 0x18a, 0x18e, 0x194, 0x199, 0x1a5, 0x1af, 0x1b5, 0x1c6, 0x1d0, 0x1d3, 0x1db, 0x1de, 0x1eb, 0x1f3, 0x1f7, 0x1fe, 0x206, 0x216, 0x222, 0x225, 0x22f, 0x23b, 0x247, 0x253, 0x25b, 0x260, 0x26d, 0x27e, 0x282, 0x28d, 0x291, 0x29a, 0x2a2, 0x2a8, 0x2ad, 0x2b0, 0x2b4, 0x2ba, 0x2be, 0x2c2, 0x2c6, 0x2cc, 0x2d4, 0x2db, 0x2e6, 0x2f0, 0x2f4, 0x2f7, 0x2fd, 0x301, 0x303, 0x306, 0x308, 0x30b, 0x315, 0x318, 0x327, 0x32b, 0x32f, 0x331, 0x33a, 0x33d, 0x341, 0x346, 0x34b, 0x351, 0x362, 0x372, 0x378, 0x37c, 0x38b, 0x390, 0x398, 0x3a2, 0x3ad, 0x3b5, 0x3c6, 0x3cf, 0x3df, 0x3ec, 0x3f8, 0x3fd, 0x40a, 0x40e, 0x413, 0x415, 0x417, 0x41b, 0x41d, 0x421, 0x42a, 0x430, 0x434, 0x444, 0x44e, 0x453, 0x456, 0x45c, 0x463, 0x468, 0x46c, 0x472, 0x477, 0x480, 0x485, 0x48b, 0x492, 0x499, 0x4a0, 0x4a4, 0x4a9, 0x4ac, 0x4b1, 0x4bd, 0x4c3, 0x4c8, 0x4cf, 0x4d7, 0x4dc, 0x4e0, 0x4f0, 0x4f7, 0x4fb, 0x4ff, 0x506, 0x508, 0x50b, 0x50e, 0x512, 0x51b, 0x51f, 0x527, 0x52f, 0x537, 0x543, 0x54f, 0x555, 0x55e, 0x56a, 0x571, 0x57a, 0x585, 0x58c, 0x59b, 0x5a8, 0x5b5, 0x5be, 0x5c2, 0x5d1, 0x5d9, 0x5e4, 0x5ed, 0x5f3, 0x5fb, 0x604, 0x60f, 0x612, 0x61e, 0x627, 0x62a, 0x62f, 0x638, 0x63d, 0x64a, 0x655, 0x65e, 0x668, 0x66b, 0x675, 0x67e, 0x68a, 0x697, 0x6a4, 0x6b2, 0x6b9, 0x6bd, 0x6c1, 0x6c4, 0x6c9, 0x6cc, 0x6d1, 0x6d4, 0x6db, 0x6e2, 0x6e6, 0x6f1, 0x6f4, 0x6f7, 0x6fa, 0x700, 0x706, 0x70f, 0x712, 0x715, 0x718, 0x71b, 0x722, 0x725, 0x72a, 0x734, 0x737, 0x73b, 0x74a, 0x756, 0x75a, 0x75f, 0x763, 0x768, 0x76c, 0x771, 0x77a, 0x785, 0x78b, 0x791, 0x797, 0x79d, 0x7a6, 0x7a9, 0x7ac, 0x7b0, 0x7b4, 0x7b8, 0x7be, 0x7c4, 0x7c9, 0x7cc, 0x7dc, 0x7e3, 0x7e6, 0x7eb, 0x7ef, 0x7f5, 0x7fc, 0x800, 0x804, 0x80d, 0x814, 0x819, 0x81d, 0x82b, 0x82e, 0x831, 0x835, 0x839, 0x83c, 0x83f, 0x844, 0x846, 0x848}\n\n// idnaSparseValues: 2123 entries, 8492 bytes\nvar idnaSparseValues = [2123]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe105, lo: 0x80, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0x97},\n\t{value: 0xe105, lo: 0x98, hi: 0x9e},\n\t{value: 0x001f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbf},\n\t// Block 0x1, offset 0x8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0xe01d, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0335, lo: 0x83, hi: 0x83},\n\t{value: 0x034d, lo: 0x84, hi: 0x84},\n\t{value: 0x0365, lo: 0x85, hi: 0x85},\n\t{value: 0xe00d, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0xe00d, lo: 0x88, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x89},\n\t{value: 0xe00d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe00d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0x8d},\n\t{value: 0xe00d, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0xbf},\n\t// Block 0x2, offset 0x19\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x00a9, lo: 0xb0, hi: 0xb0},\n\t{value: 0x037d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x00b1, lo: 0xb2, hi: 0xb2},\n\t{value: 0x00b9, lo: 0xb3, hi: 0xb3},\n\t{value: 0x034d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0395, lo: 0xb5, hi: 0xb5},\n\t{value: 0xe1bd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x00c1, lo: 0xb7, hi: 0xb7},\n\t{value: 0x00c9, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbf},\n\t// Block 0x3, offset 0x25\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x3308, lo: 0x80, hi: 0xbf},\n\t// Block 0x4, offset 0x27\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x03f5, lo: 0x80, hi: 0x8f},\n\t{value: 0xe105, lo: 0x90, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5, offset 0x2c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x0545, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x0008, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x6, offset 0x33\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0131, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0018, lo: 0x89, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7, offset 0x3e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0818, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x82},\n\t{value: 0x0818, lo: 0x83, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xae},\n\t{value: 0x0808, lo: 0xaf, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x8, offset 0x4a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0c08, lo: 0x88, hi: 0x99},\n\t{value: 0x0a08, lo: 0x9a, hi: 0xbf},\n\t// Block 0x9, offset 0x4e\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0c08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0a08, lo: 0x8e, hi: 0x98},\n\t{value: 0x0c08, lo: 0x99, hi: 0x9b},\n\t{value: 0x0a08, lo: 0x9c, hi: 0xaa},\n\t{value: 0x0c08, lo: 0xab, hi: 0xac},\n\t{value: 0x0a08, lo: 0xad, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0a08, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0c08, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xa, offset 0x5d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xb, offset 0x62\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0808, lo: 0x80, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbf},\n\t// Block 0xc, offset 0x6c\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x99},\n\t{value: 0x0808, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa3},\n\t{value: 0x0808, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa7},\n\t{value: 0x0808, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0818, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd, offset 0x78\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0a08, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0c08, lo: 0xaa, hi: 0xac},\n\t{value: 0x0808, lo: 0xad, hi: 0xad},\n\t{value: 0x0c08, lo: 0xae, hi: 0xae},\n\t{value: 0x0a08, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0a08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0a08, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xe, offset 0x85\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0xa1},\n\t{value: 0x0840, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xbf},\n\t// Block 0xf, offset 0x8b\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x10, offset 0x94\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x85},\n\t{value: 0x3008, lo: 0x86, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8c},\n\t{value: 0x3b08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x11, offset 0xa4\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x12, offset 0xb2\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xba},\n\t{value: 0x3b08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x13, offset 0xbd\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x14, offset 0xca\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x89},\n\t{value: 0x3b08, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x3008, lo: 0x98, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x15, offset 0xdb\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x01f1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb9},\n\t{value: 0x3b08, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x16, offset 0xe5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0xbf},\n\t// Block 0x17, offset 0xec\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0201, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0209, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0008, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x18, offset 0xf9\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe03d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x19, offset 0x10a\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0x1a, offset 0x111\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1b, offset 0x11c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3008, lo: 0xa2, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbf},\n\t// Block 0x1c, offset 0x12b\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x8c},\n\t{value: 0x3308, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x3008, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x1d, offset 0x139\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x86},\n\t{value: 0x055d, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8c},\n\t{value: 0x055d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe105, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x1e, offset 0x143\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0018, lo: 0x80, hi: 0xbf},\n\t// Block 0x1f, offset 0x145\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa0},\n\t{value: 0x2018, lo: 0xa1, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x20, offset 0x14a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa7},\n\t{value: 0x2018, lo: 0xa8, hi: 0xbf},\n\t// Block 0x21, offset 0x14d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2018, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0xbf},\n\t// Block 0x22, offset 0x150\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0008, lo: 0x80, hi: 0xbf},\n\t// Block 0x23, offset 0x152\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x24, offset 0x15e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x25, offset 0x169\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x26, offset 0x171\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x27, offset 0x177\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x28, offset 0x17d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x29, offset 0x182\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x2a, offset 0x187\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x2b, offset 0x18a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xbf},\n\t// Block 0x2c, offset 0x18e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2d, offset 0x194\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x2e, offset 0x199\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x3b08, lo: 0x94, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x2f, offset 0x1a5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x30, offset 0x1af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xb3},\n\t{value: 0x3340, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x31, offset 0x1b5\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x3008, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x91},\n\t{value: 0x3b08, lo: 0x92, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0x96},\n\t{value: 0x0008, lo: 0x97, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x32, offset 0x1c6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x86},\n\t{value: 0x0218, lo: 0x87, hi: 0x87},\n\t{value: 0x0018, lo: 0x88, hi: 0x8a},\n\t{value: 0x33c0, lo: 0x8b, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0208, lo: 0xa0, hi: 0xbf},\n\t// Block 0x33, offset 0x1d0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0208, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x34, offset 0x1d3\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0208, lo: 0x87, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0208, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x35, offset 0x1db\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x36, offset 0x1de\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x37, offset 0x1eb\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x38, offset 0x1f3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x39, offset 0x1f7\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0028, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xbf},\n\t// Block 0x3a, offset 0x1fe\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x3308, lo: 0x97, hi: 0x98},\n\t{value: 0x3008, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x3b, offset 0x206\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x94},\n\t{value: 0x3008, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xac},\n\t{value: 0x3008, lo: 0xad, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3c, offset 0x216\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbd},\n\t{value: 0x3318, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x222\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0xbf},\n\t// Block 0x3e, offset 0x225\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3008, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x3f, offset 0x22f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x3808, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x40, offset 0x23b\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3808, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xbf},\n\t// Block 0x41, offset 0x247\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3008, lo: 0xaa, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3808, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x42, offset 0x253\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x43, offset 0x25b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x44, offset 0x260\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x02a9, lo: 0x80, hi: 0x80},\n\t{value: 0x02b1, lo: 0x81, hi: 0x81},\n\t{value: 0x02b9, lo: 0x82, hi: 0x82},\n\t{value: 0x02c1, lo: 0x83, hi: 0x83},\n\t{value: 0x02c9, lo: 0x84, hi: 0x85},\n\t{value: 0x02d1, lo: 0x86, hi: 0x86},\n\t{value: 0x02d9, lo: 0x87, hi: 0x87},\n\t{value: 0x057d, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x059d, lo: 0x90, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x059d, lo: 0xbd, hi: 0xbf},\n\t// Block 0x45, offset 0x26d\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x92},\n\t{value: 0x0018, lo: 0x93, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0008, lo: 0xa9, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x46, offset 0x27e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0x47, offset 0x282\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x87},\n\t{value: 0xe045, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0xe045, lo: 0x98, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0xe045, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbf},\n\t// Block 0x48, offset 0x28d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x3318, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x49, offset 0x291\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x0851, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x4a, offset 0x29a\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0859, lo: 0xac, hi: 0xac},\n\t{value: 0x0861, lo: 0xad, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xae},\n\t{value: 0x0869, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0871, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x4b, offset 0x2a2\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x9f},\n\t{value: 0x0080, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xad},\n\t{value: 0x0080, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x4c, offset 0x2a8\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa8},\n\t{value: 0x09dd, lo: 0xa9, hi: 0xa9},\n\t{value: 0x09fd, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xbf},\n\t// Block 0x4d, offset 0x2ad\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0x4e, offset 0x2b0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0929, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x4f, offset 0x2b4\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0e7e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0932, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0e9e, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x50, offset 0x2ba\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x9b},\n\t{value: 0x0939, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0xbf},\n\t// Block 0x51, offset 0x2be\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x52, offset 0x2c2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0xbf},\n\t// Block 0x53, offset 0x2c6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x03f5, lo: 0x90, hi: 0x9f},\n\t{value: 0x0ebd, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x54, offset 0x2cc\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x55, offset 0x2d4\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xae},\n\t{value: 0xe075, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x56, offset 0x2db\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x57, offset 0x2e6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xbf},\n\t// Block 0x58, offset 0x2f0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x59, offset 0x2f4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0xbf},\n\t// Block 0x5a, offset 0x2f7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9e},\n\t{value: 0x0ef5, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x5b, offset 0x2fd\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb2},\n\t{value: 0x0f15, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x5c, offset 0x301\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x0f35, lo: 0x80, hi: 0xbf},\n\t// Block 0x5d, offset 0x303\n\t{value: 0x0020, lo: 0x02},\n\t{value: 0x1735, lo: 0x80, hi: 0x8f},\n\t{value: 0x1915, lo: 0x90, hi: 0xbf},\n\t// Block 0x5e, offset 0x306\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x1f15, lo: 0x80, hi: 0xbf},\n\t// Block 0x5f, offset 0x308\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x60, offset 0x30b\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9a},\n\t{value: 0x096a, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0972, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0979, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x61, offset 0x315\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x0981, lo: 0xbf, hi: 0xbf},\n\t// Block 0x62, offset 0x318\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0040, lo: 0x80, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb0},\n\t{value: 0x2a35, lo: 0xb1, hi: 0xb1},\n\t{value: 0x2a55, lo: 0xb2, hi: 0xb2},\n\t{value: 0x2a75, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2a95, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2a75, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2ab5, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2ad5, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2af5, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2b15, lo: 0xba, hi: 0xbb},\n\t{value: 0x2b35, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2b15, lo: 0xbe, hi: 0xbf},\n\t// Block 0x63, offset 0x327\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x64, offset 0x32b\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x098a, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0a82, lo: 0xa0, hi: 0xbf},\n\t// Block 0x65, offset 0x32f\n\t{value: 0x0008, lo: 0x01},\n\t{value: 0x0d19, lo: 0x80, hi: 0xbf},\n\t// Block 0x66, offset 0x331\n\t{value: 0x0008, lo: 0x08},\n\t{value: 0x0f19, lo: 0x80, hi: 0xb0},\n\t{value: 0x4045, lo: 0xb1, hi: 0xb1},\n\t{value: 0x10a1, lo: 0xb2, hi: 0xb3},\n\t{value: 0x4065, lo: 0xb4, hi: 0xb4},\n\t{value: 0x10b1, lo: 0xb5, hi: 0xb7},\n\t{value: 0x4085, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4085, lo: 0xb9, hi: 0xb9},\n\t{value: 0x10c9, lo: 0xba, hi: 0xbf},\n\t// Block 0x67, offset 0x33a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x68, offset 0x33d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x69, offset 0x341\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x6a, offset 0x346\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x6b, offset 0x34b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0018, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6c, offset 0x351\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0040, lo: 0x80, hi: 0x81},\n\t{value: 0xe00d, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x83},\n\t{value: 0x03f5, lo: 0x84, hi: 0x84},\n\t{value: 0x0479, lo: 0x85, hi: 0x85},\n\t{value: 0x447d, lo: 0x86, hi: 0x86},\n\t{value: 0xe07d, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0xe01d, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0xb4},\n\t{value: 0xe01d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0741, lo: 0xb8, hi: 0xb8},\n\t{value: 0x13f1, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xbf},\n\t// Block 0x6d, offset 0x362\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x3308, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0008, lo: 0x8c, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xab},\n\t{value: 0x3b08, lo: 0xac, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x6e, offset 0x372\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0208, lo: 0x80, hi: 0xb1},\n\t{value: 0x0108, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6f, offset 0x378\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xbf},\n\t// Block 0x70, offset 0x37c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x71, offset 0x38b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x72, offset 0x390\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x91},\n\t{value: 0x3008, lo: 0x92, hi: 0x92},\n\t{value: 0x3808, lo: 0x93, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x73, offset 0x398\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb9},\n\t{value: 0x3008, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x74, offset 0x3a2\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x75, offset 0x3ad\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x76, offset 0x3b5\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8c},\n\t{value: 0x3008, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x77, offset 0x3c6\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x78, offset 0x3cf\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x9a},\n\t{value: 0x0008, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3b08, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x79, offset 0x3df\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x90},\n\t{value: 0x0008, lo: 0x91, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7a, offset 0x3ec\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x449d, lo: 0x9c, hi: 0x9c},\n\t{value: 0x44b5, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0941, lo: 0x9e, hi: 0x9e},\n\t{value: 0xe06d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa8},\n\t{value: 0x13f9, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x44cd, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7b, offset 0x3f8\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x44ed, lo: 0x80, hi: 0x8f},\n\t{value: 0x450d, lo: 0x90, hi: 0x9f},\n\t{value: 0x452d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x450d, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7c, offset 0x3fd\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3b08, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x7d, offset 0x40a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7e, offset 0x40e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x7f, offset 0x413\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0040, lo: 0x80, hi: 0xbf},\n\t// Block 0x80, offset 0x415\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x454d, lo: 0x80, hi: 0xbf},\n\t// Block 0x81, offset 0x417\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x4d4d, lo: 0x80, hi: 0x94},\n\t{value: 0x4b0d, lo: 0x95, hi: 0x95},\n\t{value: 0x4fed, lo: 0x96, hi: 0xbf},\n\t// Block 0x82, offset 0x41b\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x552d, lo: 0x80, hi: 0xbf},\n\t// Block 0x83, offset 0x41d\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x5d2d, lo: 0x80, hi: 0x84},\n\t{value: 0x568d, lo: 0x85, hi: 0x85},\n\t{value: 0x5dcd, lo: 0x86, hi: 0xbf},\n\t// Block 0x84, offset 0x421\n\t{value: 0x0020, lo: 0x08},\n\t{value: 0x6b8d, lo: 0x80, hi: 0x8f},\n\t{value: 0x6d4d, lo: 0x90, hi: 0x90},\n\t{value: 0x6d8d, lo: 0x91, hi: 0xab},\n\t{value: 0x1401, lo: 0xac, hi: 0xac},\n\t{value: 0x70ed, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x710d, lo: 0xb0, hi: 0xbf},\n\t// Block 0x85, offset 0x42a\n\t{value: 0x0020, lo: 0x05},\n\t{value: 0x730d, lo: 0x80, hi: 0xad},\n\t{value: 0x656d, lo: 0xae, hi: 0xae},\n\t{value: 0x78cd, lo: 0xaf, hi: 0xb5},\n\t{value: 0x6f8d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x79ad, lo: 0xb7, hi: 0xbf},\n\t// Block 0x86, offset 0x430\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x1751, lo: 0x80, hi: 0x82},\n\t{value: 0x1741, lo: 0x83, hi: 0x83},\n\t{value: 0x1769, lo: 0x84, hi: 0xbf},\n\t// Block 0x87, offset 0x434\n\t{value: 0x0008, lo: 0x0f},\n\t{value: 0x1d81, lo: 0x80, hi: 0x83},\n\t{value: 0x1d99, lo: 0x84, hi: 0x85},\n\t{value: 0x1da1, lo: 0x86, hi: 0x87},\n\t{value: 0x1da9, lo: 0x88, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x1de9, lo: 0x92, hi: 0x97},\n\t{value: 0x1e11, lo: 0x98, hi: 0x9c},\n\t{value: 0x1e31, lo: 0x9d, hi: 0xb3},\n\t{value: 0x1d71, lo: 0xb4, hi: 0xb4},\n\t{value: 0x1d81, lo: 0xb5, hi: 0xb5},\n\t{value: 0x1ee9, lo: 0xb6, hi: 0xbb},\n\t{value: 0x1f09, lo: 0xbc, hi: 0xbc},\n\t{value: 0x1ef9, lo: 0xbd, hi: 0xbd},\n\t{value: 0x1f19, lo: 0xbe, hi: 0xbf},\n\t// Block 0x88, offset 0x444\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0008, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x89, offset 0x44e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x8a, offset 0x453\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x8b, offset 0x456\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x8c, offset 0x45c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x8d, offset 0x463\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x8e, offset 0x468\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8f, offset 0x46c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x90, offset 0x472\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xbf},\n\t// Block 0x91, offset 0x477\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x92, offset 0x480\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x93, offset 0x485\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x94, offset 0x48b\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x97},\n\t{value: 0x8b0d, lo: 0x98, hi: 0x9f},\n\t{value: 0x8b25, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xbf},\n\t// Block 0x95, offset 0x492\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x8b25, lo: 0xb0, hi: 0xb7},\n\t{value: 0x8b0d, lo: 0xb8, hi: 0xbf},\n\t// Block 0x96, offset 0x499\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x97, offset 0x4a0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x98, offset 0x4a4\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xae},\n\t{value: 0x0018, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x99, offset 0x4a9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9a, offset 0x4ac\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xbf},\n\t// Block 0x9b, offset 0x4b1\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0808, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0808, lo: 0x8a, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0808, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0808, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9c, offset 0x4bd\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0818, lo: 0x97, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0818, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9d, offset 0x4c3\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa6},\n\t{value: 0x0818, lo: 0xa7, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x9e, offset 0x4c8\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x0818, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9f, offset 0x4cf\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0818, lo: 0x96, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0818, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa0, offset 0x4d7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbb},\n\t{value: 0x0818, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0808, lo: 0xbe, hi: 0xbf},\n\t// Block 0xa1, offset 0x4dc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0818, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x0818, lo: 0x92, hi: 0xbf},\n\t// Block 0xa2, offset 0x4e0\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x94},\n\t{value: 0x0808, lo: 0x95, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x98},\n\t{value: 0x0808, lo: 0x99, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa3, offset 0x4f0\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0818, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0818, lo: 0x90, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0818, lo: 0xbd, hi: 0xbf},\n\t// Block 0xa4, offset 0x4f7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xa5, offset 0x4fb\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xbf},\n\t// Block 0xa6, offset 0x4ff\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0818, lo: 0x98, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb7},\n\t{value: 0x0818, lo: 0xb8, hi: 0xbf},\n\t// Block 0xa7, offset 0x506\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0808, lo: 0x80, hi: 0xbf},\n\t// Block 0xa8, offset 0x508\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0808, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xa9, offset 0x50b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x03dd, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xaa, offset 0x50e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xbf},\n\t// Block 0xab, offset 0x512\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0908, lo: 0x80, hi: 0x80},\n\t{value: 0x0a08, lo: 0x81, hi: 0xa1},\n\t{value: 0x0c08, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0a08, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3308, lo: 0xa4, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xac, offset 0x51b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0818, lo: 0xa0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xad, offset 0x51f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xac},\n\t{value: 0x0818, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xae, offset 0x527\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0xa6},\n\t{value: 0x0808, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0a08, lo: 0xb0, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0a08, lo: 0xb4, hi: 0xbf},\n\t// Block 0xaf, offset 0x52f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0a08, lo: 0x80, hi: 0x84},\n\t{value: 0x0808, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x90},\n\t{value: 0x0a18, lo: 0x91, hi: 0x93},\n\t{value: 0x0c18, lo: 0x94, hi: 0x94},\n\t{value: 0x0818, lo: 0x95, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xb0, offset 0x537\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0a08, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0c08, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0a08, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xba},\n\t{value: 0x0a08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0c08, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0a08, lo: 0xbe, hi: 0xbf},\n\t// Block 0xb1, offset 0x543\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x0a08, lo: 0x81, hi: 0x81},\n\t{value: 0x0c08, lo: 0x82, hi: 0x83},\n\t{value: 0x0a08, lo: 0x84, hi: 0x84},\n\t{value: 0x0818, lo: 0x85, hi: 0x88},\n\t{value: 0x0c18, lo: 0x89, hi: 0x89},\n\t{value: 0x0a18, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0918, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb2, offset 0x54f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xb3, offset 0x555\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x91},\n\t{value: 0x0018, lo: 0x92, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb4, offset 0x55e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0xb5, offset 0x56a\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb6, offset 0x571\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb2},\n\t{value: 0x3b08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xbf},\n\t// Block 0xb7, offset 0x57a\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb8, offset 0x585\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb9, offset 0x58c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8d},\n\t{value: 0x3008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xba, offset 0x59b\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3808, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbb, offset 0x5a8\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xbc, offset 0x5b5\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x3308, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa9},\n\t{value: 0x3b08, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xbd, offset 0x5be\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xbe, offset 0x5c2\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xbf},\n\t// Block 0xbf, offset 0x5d1\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc0, offset 0x5d9\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x85},\n\t{value: 0x0018, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xc1, offset 0x5e4\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc2, offset 0x5ed\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9b},\n\t{value: 0x3308, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xc3, offset 0x5f3\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc4, offset 0x5fb\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xc5, offset 0x604\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb5},\n\t{value: 0x3808, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xc6, offset 0x60f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xc7, offset 0x612\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0xc8, offset 0x61e\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xc9, offset 0x627\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xbf},\n\t// Block 0xca, offset 0x62a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xcb, offset 0x62f\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xcc, offset 0x638\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xbf},\n\t// Block 0xcd, offset 0x63d\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x99},\n\t{value: 0x3308, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3008, lo: 0x9c, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x0018, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xbf},\n\t// Block 0xce, offset 0x64a\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xcf, offset 0x655\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x3b08, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0xbf},\n\t// Block 0xd0, offset 0x65e\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x98},\n\t{value: 0x3b08, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xbf},\n\t// Block 0xd1, offset 0x668\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xd2, offset 0x66b\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd3, offset 0x675\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xbf},\n\t// Block 0xd4, offset 0x67e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xa9},\n\t{value: 0x3308, lo: 0xaa, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xd5, offset 0x68a\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd6, offset 0x697\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xbf},\n\t// Block 0xd7, offset 0x6a4\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x3008, lo: 0x93, hi: 0x94},\n\t{value: 0x3308, lo: 0x95, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x96},\n\t{value: 0x3b08, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xbf},\n\t// Block 0xd8, offset 0x6b2\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xd9, offset 0x6b9\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0xda, offset 0x6bd\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xdb, offset 0x6c1\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xdc, offset 0x6c4\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xdd, offset 0x6c9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xde, offset 0x6cc\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0340, lo: 0xb0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xdf, offset 0x6d1\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xbf},\n\t// Block 0xe0, offset 0x6d4\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe1, offset 0x6db\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xe2, offset 0x6e2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0xe3, offset 0x6e6\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0xe4, offset 0x6f1\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xe5, offset 0x6f4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0xe105, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0xe6, offset 0x6f7\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0xe7, offset 0x6fa\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0xbf},\n\t// Block 0xe8, offset 0x700\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xe9, offset 0x706\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x0018, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3308, lo: 0xa4, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xea, offset 0x70f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0xeb, offset 0x712\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0xec, offset 0x715\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xed, offset 0x718\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xee, offset 0x71b\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0xa3},\n\t{value: 0x0008, lo: 0xa4, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xef, offset 0x722\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xf0, offset 0x725\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0xf1, offset 0x72a\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x03c0, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xf2, offset 0x734\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xf3, offset 0x737\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xbf},\n\t// Block 0xf4, offset 0x73b\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0x2211, lo: 0x9e, hi: 0x9e},\n\t{value: 0x2219, lo: 0x9f, hi: 0x9f},\n\t{value: 0x2221, lo: 0xa0, hi: 0xa0},\n\t{value: 0x2229, lo: 0xa1, hi: 0xa1},\n\t{value: 0x2231, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2239, lo: 0xa3, hi: 0xa3},\n\t{value: 0x2241, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3018, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3318, lo: 0xa7, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xac},\n\t{value: 0x3018, lo: 0xad, hi: 0xb2},\n\t{value: 0x0340, lo: 0xb3, hi: 0xba},\n\t{value: 0x3318, lo: 0xbb, hi: 0xbf},\n\t// Block 0xf5, offset 0x74a\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3318, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x84},\n\t{value: 0x3318, lo: 0x85, hi: 0x8b},\n\t{value: 0x0018, lo: 0x8c, hi: 0xa9},\n\t{value: 0x3318, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xba},\n\t{value: 0x2249, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2251, lo: 0xbc, hi: 0xbc},\n\t{value: 0x2259, lo: 0xbd, hi: 0xbd},\n\t{value: 0x2261, lo: 0xbe, hi: 0xbe},\n\t{value: 0x2269, lo: 0xbf, hi: 0xbf},\n\t// Block 0xf6, offset 0x756\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2271, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xbf},\n\t// Block 0xf7, offset 0x75a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3318, lo: 0x82, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0xbf},\n\t// Block 0xf8, offset 0x75f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0xf9, offset 0x763\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xfa, offset 0x768\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0xfb, offset 0x76c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0xfc, offset 0x771\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3308, lo: 0xa1, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xfd, offset 0x77a\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0xfe, offset 0x785\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xff, offset 0x78b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0x100, offset 0x791\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x101, offset 0x797\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x86},\n\t{value: 0x0818, lo: 0x87, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0x102, offset 0x79d\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0a08, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x8a},\n\t{value: 0x0b08, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x103, offset 0x7a6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xb0},\n\t{value: 0x0818, lo: 0xb1, hi: 0xbf},\n\t// Block 0x104, offset 0x7a9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0818, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x105, offset 0x7ac\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0818, lo: 0x81, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x106, offset 0x7b0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0x107, offset 0x7b4\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x108, offset 0x7b8\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x109, offset 0x7be\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x10a, offset 0x7c4\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0x2491, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0x10b, offset 0x7c9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xbf},\n\t// Block 0x10c, offset 0x7cc\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x2611, lo: 0x80, hi: 0x80},\n\t{value: 0x2619, lo: 0x81, hi: 0x81},\n\t{value: 0x2621, lo: 0x82, hi: 0x82},\n\t{value: 0x2629, lo: 0x83, hi: 0x83},\n\t{value: 0x2631, lo: 0x84, hi: 0x84},\n\t{value: 0x2639, lo: 0x85, hi: 0x85},\n\t{value: 0x2641, lo: 0x86, hi: 0x86},\n\t{value: 0x2649, lo: 0x87, hi: 0x87},\n\t{value: 0x2651, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x2659, lo: 0x90, hi: 0x90},\n\t{value: 0x2661, lo: 0x91, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xbf},\n\t// Block 0x10d, offset 0x7dc\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x10e, offset 0x7e3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x10f, offset 0x7e6\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x110, offset 0x7eb\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x111, offset 0x7ef\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x112, offset 0x7f5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0x113, offset 0x7fc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0x114, offset 0x800\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x115, offset 0x804\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x116, offset 0x80d\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x117, offset 0x814\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0x118, offset 0x819\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0xbf},\n\t// Block 0x119, offset 0x81d\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0018, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0xaf},\n\t{value: 0x06e1, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0049, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0029, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0031, lo: 0xb3, hi: 0xb3},\n\t{value: 0x06e9, lo: 0xb4, hi: 0xb4},\n\t{value: 0x06f1, lo: 0xb5, hi: 0xb5},\n\t{value: 0x06f9, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0701, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0709, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0711, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x11a, offset 0x82b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x11b, offset 0x82e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x11c, offset 0x831\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x11d, offset 0x835\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x11e, offset 0x839\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x11f, offset 0x83c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0xbf},\n\t// Block 0x120, offset 0x83f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0340, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x9f},\n\t{value: 0x0340, lo: 0xa0, hi: 0xbf},\n\t// Block 0x121, offset 0x844\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0340, lo: 0x80, hi: 0xbf},\n\t// Block 0x122, offset 0x846\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x33c0, lo: 0x80, hi: 0xbf},\n\t// Block 0x123, offset 0x848\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x33c0, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n}\n\n// Total table size 44953 bytes (43KiB); checksum: D51909DD\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/tables15.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.21\n\npackage idna\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"15.0.0\"\n\nvar mappings string = \"\" + // Size: 6704 bytes\n\t\"  ̈a ̄23 ́ ̧1o1⁄41⁄23⁄4i̇l·ʼnsdžⱥⱦhjrwy ̆ ̇ ̊ ̨ ̃ ̋lẍ́ ι; ̈́եւاٴوٴۇٴيٴक\" +\n\t\"़ख़ग़ज़ड़ढ़फ़य़ড়ঢ়য়ਲ਼ਸ਼ਖ਼ਗ਼ਜ਼ਫ਼ଡ଼ଢ଼ําໍາຫນຫມགྷཌྷདྷབྷཛྷཀྵཱཱིུྲྀྲཱྀླྀླཱ\" +\n\t\"ཱྀྀྒྷྜྷྡྷྦྷྫྷྐྵвдостъѣæbdeǝgikmnȣptuɐɑəɛɜŋɔɯvβγδφχρнɒcɕðfɟɡɥɨɩɪʝɭʟɱɰɲɳ\" +\n\t\"ɴɵɸʂʃƫʉʊʋʌzʐʑʒθssάέήίόύώἀιἁιἂιἃιἄιἅιἆιἇιἠιἡιἢιἣιἤιἥιἦιἧιὠιὡιὢιὣιὤιὥιὦιὧ\" +\n\t\"ιὰιαιάιᾶιι ̈͂ὴιηιήιῆι ̓̀ ̓́ ̓͂ΐ ̔̀ ̔́ ̔͂ΰ ̈̀`ὼιωιώιῶι′′′′′‵‵‵‵‵!!???!!?\" +\n\t\"′′′′0456789+=()rsħnoqsmtmωåאבגדπ1⁄71⁄91⁄101⁄32⁄31⁄52⁄53⁄54⁄51⁄65⁄61⁄83\" +\n\t\"⁄85⁄87⁄81⁄iiivviviiiixxi0⁄3∫∫∫∫∫∮∮∮∮∮1011121314151617181920(10)(11)(12\" +\n\t\")(13)(14)(15)(16)(17)(18)(19)(20)∫∫∫∫==⫝̸ɫɽȿɀ. ゙ ゚よりコト(ᄀ)(ᄂ)(ᄃ)(ᄅ)(ᄆ)(ᄇ)\" +\n\t\"(ᄉ)(ᄋ)(ᄌ)(ᄎ)(ᄏ)(ᄐ)(ᄑ)(ᄒ)(가)(나)(다)(라)(마)(바)(사)(아)(자)(차)(카)(타)(파)(하)(주)(오전\" +\n\t\")(오후)(一)(二)(三)(四)(五)(六)(七)(八)(九)(十)(月)(火)(水)(木)(金)(土)(日)(株)(有)(社)(名)(特)(\" +\n\t\"財)(祝)(労)(代)(呼)(学)(監)(企)(資)(協)(祭)(休)(自)(至)21222324252627282930313233343\" +\n\t\"5참고주의3637383940414243444546474849501月2月3月4月5月6月7月8月9月10月11月12月hgev令和アパート\" +\n\t\"アルファアンペアアールイニングインチウォンエスクードエーカーオンスオームカイリカラットカロリーガロンガンマギガギニーキュリーギルダーキロキロ\" +\n\t\"グラムキロメートルキロワットグラムグラムトンクルゼイロクローネケースコルナコーポサイクルサンチームシリングセンチセントダースデシドルトンナノ\" +\n\t\"ノットハイツパーセントパーツバーレルピアストルピクルピコビルファラッドフィートブッシェルフランヘクタールペソペニヒヘルツペンスページベータポ\" +\n\t\"イントボルトホンポンドホールホーンマイクロマイルマッハマルクマンションミクロンミリミリバールメガメガトンメートルヤードヤールユアンリットルリ\" +\n\t\"ラルピールーブルレムレントゲンワット0点1点2点3点4点5点6点7点8点9点10点11点12点13点14点15点16点17点18点19点20\" +\n\t\"点21点22点23点24点daauovpcdmiu平成昭和大正明治株式会社panamakakbmbgbkcalpfnfmgkghzmldlk\" +\n\t\"lfmnmmmcmkmm2m3m∕sm∕s2rad∕srad∕s2psnsmspvnvmvkvpwnwmwkwbqcccdc∕kgdbgyhah\" +\n\t\"pinkkktlmlnlxphprsrsvwbv∕ma∕m1日2日3日4日5日6日7日8日9日10日11日12日13日14日15日16日17日1\" +\n\t\"8日19日20日21日22日23日24日25日26日27日28日29日30日31日ьɦɬʞʇœʍ𤋮𢡊𢡄𣏕𥉉𥳐𧻓fffiflstմնմեմիվնմ\" +\n\t\"խיִײַעהכלםרתשׁשׂשּׁשּׂאַאָאּבּגּדּהּוּזּטּיּךּכּלּמּנּסּףּפּצּקּרּשּתּו\" +\n\t\"ֹבֿכֿפֿאלٱٻپڀٺٿٹڤڦڄڃچڇڍڌڎڈژڑکگڳڱںڻۀہھےۓڭۇۆۈۋۅۉېىئائەئوئۇئۆئۈئېئىیئجئحئم\" +\n\t\"ئيبجبحبخبمبىبيتجتحتختمتىتيثجثمثىثيجحجمحجحمخجخحخمسجسحسخسمصحصمضجضحضخضمطحط\" +\n\t\"مظمعجعمغجغمفجفحفخفمفىفيقحقمقىقيكاكجكحكخكلكمكىكيلجلحلخلملىليمجمحمخمممىمي\" +\n\t\"نجنحنخنمنىنيهجهمهىهييجيحيخيميىييذٰرٰىٰ ٌّ ٍّ َّ ُّ ِّ ّٰئرئزئنبربزبنترت\" +\n\t\"زتنثرثزثنمانرنزننيريزينئخئهبهتهصخلهنههٰيهثهسهشمشهـَّـُّـِّطىطيعىعيغىغيس\" +\n\t\"ىسيشىشيحىحيجىجيخىخيصىصيضىضيشجشحشخشرسرصرضراًتجمتحجتحمتخمتمجتمحتمخجمححميح\" +\n\t\"مىسحجسجحسجىسمحسمجسممصححصممشحمشجيشمخشممضحىضخمطمحطممطميعجمعممعمىغممغميغمى\" +\n\t\"فخمقمحقمملحملحيلحىلججلخملمحمحجمحممحيمجحمجممخجمخممجخهمجهممنحمنحىنجمنجىنم\" +\n\t\"ينمىيممبخيتجيتجىتخيتخىتميتمىجميجحىجمىسخىصحيشحيضحيلجيلمييحييجييميمميقمين\" +\n\t\"حيعميكمينجحمخيلجمكممجحيحجيمجيفميبحيسخينجيصلےقلےاللهاكبرمحمدصلعمرسولعليه\" +\n\t\"وسلمصلىصلى الله عليه وسلمجل جلالهریال,:!?_{}[]#&*-<>\\\\$%@ـًـَـُـِـّـْءآ\" +\n\t\"أؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهويلآلألإلا\\x22'/^|~¢£¬¦¥ːˑʙɓʣꭦʥʤɖɗᶑɘɞʩɤɢ\" +\n\t\"ɠʛʜɧʄʪʫꞎɮʎøɶɷɺɾʀʨʦꭧʧʈⱱʏʡʢʘǀǁǂ𝅗𝅥𝅘𝅥𝅘𝅥𝅮𝅘𝅥𝅯𝅘𝅥𝅰𝅘𝅥𝅱𝅘𝅥𝅲𝆹𝅥𝆺𝅥𝆹𝅥𝅮𝆺𝅥𝅮𝆹𝅥𝅯𝆺𝅥𝅯ıȷαεζηκ\" +\n\t\"λμνξοστυψ∇∂ϝабгежзиклмпруфхцчшыэюꚉәіјөүӏґѕџҫꙑұٮڡٯ0,1,2,3,4,5,6,7,8,9,(a\" +\n\t\")(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)(w)(x)(y\" +\n\t\")(z)〔s〕wzhvsdppvwcmcmdmrdjほかココサ手字双デ二多解天交映無料前後再新初終生販声吹演投捕一三遊左中右指走打禁空合満有月申\" +\n\t\"割営配〔本〕〔三〕〔二〕〔安〕〔点〕〔打〕〔盗〕〔勝〕〔敗〕得可丽丸乁你侮侻倂偺備僧像㒞免兔兤具㒹內冗冤仌冬况凵刃㓟刻剆剷㔕勇勉勤勺包匆北卉\" +\n\t\"卑博即卽卿灰及叟叫叱吆咞吸呈周咢哶唐啓啣善喙喫喳嗂圖嘆圗噑噴切壮城埴堍型堲報墬売壷夆夢奢姬娛娧姘婦㛮嬈嬾寃寘寧寳寿将尢㞁屠屮峀岍嵃嵮嵫嵼巡巢\" +\n\t\"㠯巽帨帽幩㡢㡼庰庳庶廊廾舁弢㣇形彫㣣徚忍志忹悁㤺㤜悔惇慈慌慎慺憎憲憤憯懞懲懶成戛扝抱拔捐挽拼捨掃揤搢揅掩㨮摩摾撝摷㩬敏敬旣書晉㬙暑㬈㫤冒冕最\" +\n\t\"暜肭䏙朗望朡杞杓㭉柺枅桒梅梎栟椔㮝楂榣槪檨櫛㰘次歔㱎歲殟殺殻汎沿泍汧洖派海流浩浸涅洴港湮㴳滋滇淹潮濆瀹瀞瀛㶖灊災灷炭煅熜爨爵牐犀犕獺王㺬玥㺸\" +\n\t\"瑇瑜瑱璅瓊㼛甤甾異瘐㿼䀈直眞真睊䀹瞋䁆䂖硎碌磌䃣祖福秫䄯穀穊穏䈂篆築䈧糒䊠糨糣紀絣䌁緇縂繅䌴䍙罺羕翺者聠聰䏕育脃䐋脾媵舄辞䑫芑芋芝劳花芳芽苦\" +\n\t\"若茝荣莭茣莽菧著荓菊菌菜䔫蓱蓳蔖蕤䕝䕡䕫虐虜虧虩蚩蚈蜎蛢蝹蜨蝫螆蟡蠁䗹衠衣裗裞䘵裺㒻䚾䛇誠諭變豕貫賁贛起跋趼跰軔輸邔郱鄑鄛鈸鋗鋘鉼鏹鐕開䦕閷\" +\n\t\"䧦雃嶲霣䩮䩶韠䪲頋頩飢䬳餩馧駂駾䯎鬒鱀鳽䳎䳭鵧䳸麻䵖黹黾鼅鼏鼖鼻\"\n\nvar mappingIndex = []uint16{ // 1729 elements\n\t// Entry 0 - 3F\n\t0x0000, 0x0000, 0x0001, 0x0004, 0x0005, 0x0008, 0x0009, 0x000a,\n\t0x000d, 0x0010, 0x0011, 0x0012, 0x0017, 0x001c, 0x0021, 0x0024,\n\t0x0027, 0x002a, 0x002b, 0x002e, 0x0031, 0x0034, 0x0035, 0x0036,\n\t0x0037, 0x0038, 0x0039, 0x003c, 0x003f, 0x0042, 0x0045, 0x0048,\n\t0x004b, 0x004c, 0x004d, 0x0051, 0x0054, 0x0055, 0x005a, 0x005e,\n\t0x0062, 0x0066, 0x006a, 0x006e, 0x0074, 0x007a, 0x0080, 0x0086,\n\t0x008c, 0x0092, 0x0098, 0x009e, 0x00a4, 0x00aa, 0x00b0, 0x00b6,\n\t0x00bc, 0x00c2, 0x00c8, 0x00ce, 0x00d4, 0x00da, 0x00e0, 0x00e6,\n\t// Entry 40 - 7F\n\t0x00ec, 0x00f2, 0x00f8, 0x00fe, 0x0104, 0x010a, 0x0110, 0x0116,\n\t0x011c, 0x0122, 0x0128, 0x012e, 0x0137, 0x013d, 0x0146, 0x014c,\n\t0x0152, 0x0158, 0x015e, 0x0164, 0x016a, 0x0170, 0x0172, 0x0174,\n\t0x0176, 0x0178, 0x017a, 0x017c, 0x017e, 0x0180, 0x0181, 0x0182,\n\t0x0183, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189, 0x018a, 0x018c,\n\t0x018d, 0x018e, 0x018f, 0x0191, 0x0193, 0x0195, 0x0197, 0x0199,\n\t0x019b, 0x019d, 0x019f, 0x01a0, 0x01a2, 0x01a4, 0x01a6, 0x01a8,\n\t0x01aa, 0x01ac, 0x01ae, 0x01b0, 0x01b1, 0x01b3, 0x01b5, 0x01b6,\n\t// Entry 80 - BF\n\t0x01b8, 0x01ba, 0x01bc, 0x01be, 0x01c0, 0x01c2, 0x01c4, 0x01c6,\n\t0x01c8, 0x01ca, 0x01cc, 0x01ce, 0x01d0, 0x01d2, 0x01d4, 0x01d6,\n\t0x01d8, 0x01da, 0x01dc, 0x01de, 0x01e0, 0x01e2, 0x01e4, 0x01e5,\n\t0x01e7, 0x01e9, 0x01eb, 0x01ed, 0x01ef, 0x01f1, 0x01f3, 0x01f5,\n\t0x01f7, 0x01f9, 0x01fb, 0x01fd, 0x0202, 0x0207, 0x020c, 0x0211,\n\t0x0216, 0x021b, 0x0220, 0x0225, 0x022a, 0x022f, 0x0234, 0x0239,\n\t0x023e, 0x0243, 0x0248, 0x024d, 0x0252, 0x0257, 0x025c, 0x0261,\n\t0x0266, 0x026b, 0x0270, 0x0275, 0x027a, 0x027e, 0x0282, 0x0287,\n\t// Entry C0 - FF\n\t0x0289, 0x028e, 0x0293, 0x0297, 0x029b, 0x02a0, 0x02a5, 0x02aa,\n\t0x02af, 0x02b1, 0x02b6, 0x02bb, 0x02c0, 0x02c2, 0x02c7, 0x02c8,\n\t0x02cd, 0x02d1, 0x02d5, 0x02da, 0x02e0, 0x02e9, 0x02ef, 0x02f8,\n\t0x02fa, 0x02fc, 0x02fe, 0x0300, 0x030c, 0x030d, 0x030e, 0x030f,\n\t0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317,\n\t0x0319, 0x031b, 0x031d, 0x031e, 0x0320, 0x0322, 0x0324, 0x0326,\n\t0x0328, 0x032a, 0x032c, 0x032e, 0x0330, 0x0335, 0x033a, 0x0340,\n\t0x0345, 0x034a, 0x034f, 0x0354, 0x0359, 0x035e, 0x0363, 0x0368,\n\t// Entry 100 - 13F\n\t0x036d, 0x0372, 0x0377, 0x037c, 0x0380, 0x0382, 0x0384, 0x0386,\n\t0x038a, 0x038c, 0x038e, 0x0393, 0x0399, 0x03a2, 0x03a8, 0x03b1,\n\t0x03b3, 0x03b5, 0x03b7, 0x03b9, 0x03bb, 0x03bd, 0x03bf, 0x03c1,\n\t0x03c3, 0x03c5, 0x03c7, 0x03cb, 0x03cf, 0x03d3, 0x03d7, 0x03db,\n\t0x03df, 0x03e3, 0x03e7, 0x03eb, 0x03ef, 0x03f3, 0x03ff, 0x0401,\n\t0x0406, 0x0408, 0x040a, 0x040c, 0x040e, 0x040f, 0x0413, 0x0417,\n\t0x041d, 0x0423, 0x0428, 0x042d, 0x0432, 0x0437, 0x043c, 0x0441,\n\t0x0446, 0x044b, 0x0450, 0x0455, 0x045a, 0x045f, 0x0464, 0x0469,\n\t// Entry 140 - 17F\n\t0x046e, 0x0473, 0x0478, 0x047d, 0x0482, 0x0487, 0x048c, 0x0491,\n\t0x0496, 0x049b, 0x04a0, 0x04a5, 0x04aa, 0x04af, 0x04b4, 0x04bc,\n\t0x04c4, 0x04c9, 0x04ce, 0x04d3, 0x04d8, 0x04dd, 0x04e2, 0x04e7,\n\t0x04ec, 0x04f1, 0x04f6, 0x04fb, 0x0500, 0x0505, 0x050a, 0x050f,\n\t0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537,\n\t0x053c, 0x0541, 0x0546, 0x054b, 0x0550, 0x0555, 0x055a, 0x055f,\n\t0x0564, 0x0569, 0x056e, 0x0573, 0x0578, 0x057a, 0x057c, 0x057e,\n\t0x0580, 0x0582, 0x0584, 0x0586, 0x0588, 0x058a, 0x058c, 0x058e,\n\t// Entry 180 - 1BF\n\t0x0590, 0x0592, 0x0594, 0x0596, 0x059c, 0x05a2, 0x05a4, 0x05a6,\n\t0x05a8, 0x05aa, 0x05ac, 0x05ae, 0x05b0, 0x05b2, 0x05b4, 0x05b6,\n\t0x05b8, 0x05ba, 0x05bc, 0x05be, 0x05c0, 0x05c4, 0x05c8, 0x05cc,\n\t0x05d0, 0x05d4, 0x05d8, 0x05dc, 0x05e0, 0x05e4, 0x05e9, 0x05ee,\n\t0x05f3, 0x05f5, 0x05f7, 0x05fd, 0x0609, 0x0615, 0x0621, 0x062a,\n\t0x0636, 0x063f, 0x0648, 0x0657, 0x0663, 0x066c, 0x0675, 0x067e,\n\t0x068a, 0x0696, 0x069f, 0x06a8, 0x06ae, 0x06b7, 0x06c3, 0x06cf,\n\t0x06d5, 0x06e4, 0x06f6, 0x0705, 0x070e, 0x071d, 0x072c, 0x0738,\n\t// Entry 1C0 - 1FF\n\t0x0741, 0x074a, 0x0753, 0x075f, 0x076e, 0x077a, 0x0783, 0x078c,\n\t0x0795, 0x079b, 0x07a1, 0x07a7, 0x07ad, 0x07b6, 0x07bf, 0x07ce,\n\t0x07d7, 0x07e3, 0x07f2, 0x07fb, 0x0801, 0x0807, 0x0816, 0x0822,\n\t0x0831, 0x083a, 0x0849, 0x084f, 0x0858, 0x0861, 0x086a, 0x0873,\n\t0x087c, 0x0888, 0x0891, 0x0897, 0x08a0, 0x08a9, 0x08b2, 0x08be,\n\t0x08c7, 0x08d0, 0x08d9, 0x08e8, 0x08f4, 0x08fa, 0x0909, 0x090f,\n\t0x091b, 0x0927, 0x0930, 0x0939, 0x0942, 0x094e, 0x0954, 0x095d,\n\t0x0969, 0x096f, 0x097e, 0x0987, 0x098b, 0x098f, 0x0993, 0x0997,\n\t// Entry 200 - 23F\n\t0x099b, 0x099f, 0x09a3, 0x09a7, 0x09ab, 0x09af, 0x09b4, 0x09b9,\n\t0x09be, 0x09c3, 0x09c8, 0x09cd, 0x09d2, 0x09d7, 0x09dc, 0x09e1,\n\t0x09e6, 0x09eb, 0x09f0, 0x09f5, 0x09fa, 0x09fc, 0x09fe, 0x0a00,\n\t0x0a02, 0x0a04, 0x0a06, 0x0a0c, 0x0a12, 0x0a18, 0x0a1e, 0x0a2a,\n\t0x0a2c, 0x0a2e, 0x0a30, 0x0a32, 0x0a34, 0x0a36, 0x0a38, 0x0a3c,\n\t0x0a3e, 0x0a40, 0x0a42, 0x0a44, 0x0a46, 0x0a48, 0x0a4a, 0x0a4c,\n\t0x0a4e, 0x0a50, 0x0a52, 0x0a54, 0x0a56, 0x0a58, 0x0a5a, 0x0a5f,\n\t0x0a65, 0x0a6c, 0x0a74, 0x0a76, 0x0a78, 0x0a7a, 0x0a7c, 0x0a7e,\n\t// Entry 240 - 27F\n\t0x0a80, 0x0a82, 0x0a84, 0x0a86, 0x0a88, 0x0a8a, 0x0a8c, 0x0a8e,\n\t0x0a90, 0x0a96, 0x0a98, 0x0a9a, 0x0a9c, 0x0a9e, 0x0aa0, 0x0aa2,\n\t0x0aa4, 0x0aa6, 0x0aa8, 0x0aaa, 0x0aac, 0x0aae, 0x0ab0, 0x0ab2,\n\t0x0ab4, 0x0ab9, 0x0abe, 0x0ac2, 0x0ac6, 0x0aca, 0x0ace, 0x0ad2,\n\t0x0ad6, 0x0ada, 0x0ade, 0x0ae2, 0x0ae7, 0x0aec, 0x0af1, 0x0af6,\n\t0x0afb, 0x0b00, 0x0b05, 0x0b0a, 0x0b0f, 0x0b14, 0x0b19, 0x0b1e,\n\t0x0b23, 0x0b28, 0x0b2d, 0x0b32, 0x0b37, 0x0b3c, 0x0b41, 0x0b46,\n\t0x0b4b, 0x0b50, 0x0b52, 0x0b54, 0x0b56, 0x0b58, 0x0b5a, 0x0b5c,\n\t// Entry 280 - 2BF\n\t0x0b5e, 0x0b62, 0x0b66, 0x0b6a, 0x0b6e, 0x0b72, 0x0b76, 0x0b7a,\n\t0x0b7c, 0x0b7e, 0x0b80, 0x0b82, 0x0b86, 0x0b8a, 0x0b8e, 0x0b92,\n\t0x0b96, 0x0b9a, 0x0b9e, 0x0ba0, 0x0ba2, 0x0ba4, 0x0ba6, 0x0ba8,\n\t0x0baa, 0x0bac, 0x0bb0, 0x0bb4, 0x0bba, 0x0bc0, 0x0bc4, 0x0bc8,\n\t0x0bcc, 0x0bd0, 0x0bd4, 0x0bd8, 0x0bdc, 0x0be0, 0x0be4, 0x0be8,\n\t0x0bec, 0x0bf0, 0x0bf4, 0x0bf8, 0x0bfc, 0x0c00, 0x0c04, 0x0c08,\n\t0x0c0c, 0x0c10, 0x0c14, 0x0c18, 0x0c1c, 0x0c20, 0x0c24, 0x0c28,\n\t0x0c2c, 0x0c30, 0x0c34, 0x0c36, 0x0c38, 0x0c3a, 0x0c3c, 0x0c3e,\n\t// Entry 2C0 - 2FF\n\t0x0c40, 0x0c42, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4c, 0x0c4e,\n\t0x0c50, 0x0c52, 0x0c54, 0x0c56, 0x0c58, 0x0c5a, 0x0c5c, 0x0c5e,\n\t0x0c60, 0x0c62, 0x0c64, 0x0c66, 0x0c68, 0x0c6a, 0x0c6c, 0x0c6e,\n\t0x0c70, 0x0c72, 0x0c74, 0x0c76, 0x0c78, 0x0c7a, 0x0c7c, 0x0c7e,\n\t0x0c80, 0x0c82, 0x0c86, 0x0c8a, 0x0c8e, 0x0c92, 0x0c96, 0x0c9a,\n\t0x0c9e, 0x0ca2, 0x0ca4, 0x0ca8, 0x0cac, 0x0cb0, 0x0cb4, 0x0cb8,\n\t0x0cbc, 0x0cc0, 0x0cc4, 0x0cc8, 0x0ccc, 0x0cd0, 0x0cd4, 0x0cd8,\n\t0x0cdc, 0x0ce0, 0x0ce4, 0x0ce8, 0x0cec, 0x0cf0, 0x0cf4, 0x0cf8,\n\t// Entry 300 - 33F\n\t0x0cfc, 0x0d00, 0x0d04, 0x0d08, 0x0d0c, 0x0d10, 0x0d14, 0x0d18,\n\t0x0d1c, 0x0d20, 0x0d24, 0x0d28, 0x0d2c, 0x0d30, 0x0d34, 0x0d38,\n\t0x0d3c, 0x0d40, 0x0d44, 0x0d48, 0x0d4c, 0x0d50, 0x0d54, 0x0d58,\n\t0x0d5c, 0x0d60, 0x0d64, 0x0d68, 0x0d6c, 0x0d70, 0x0d74, 0x0d78,\n\t0x0d7c, 0x0d80, 0x0d84, 0x0d88, 0x0d8c, 0x0d90, 0x0d94, 0x0d98,\n\t0x0d9c, 0x0da0, 0x0da4, 0x0da8, 0x0dac, 0x0db0, 0x0db4, 0x0db8,\n\t0x0dbc, 0x0dc0, 0x0dc4, 0x0dc8, 0x0dcc, 0x0dd0, 0x0dd4, 0x0dd8,\n\t0x0ddc, 0x0de0, 0x0de4, 0x0de8, 0x0dec, 0x0df0, 0x0df4, 0x0df8,\n\t// Entry 340 - 37F\n\t0x0dfc, 0x0e00, 0x0e04, 0x0e08, 0x0e0c, 0x0e10, 0x0e14, 0x0e18,\n\t0x0e1d, 0x0e22, 0x0e27, 0x0e2c, 0x0e31, 0x0e36, 0x0e3a, 0x0e3e,\n\t0x0e42, 0x0e46, 0x0e4a, 0x0e4e, 0x0e52, 0x0e56, 0x0e5a, 0x0e5e,\n\t0x0e62, 0x0e66, 0x0e6a, 0x0e6e, 0x0e72, 0x0e76, 0x0e7a, 0x0e7e,\n\t0x0e82, 0x0e86, 0x0e8a, 0x0e8e, 0x0e92, 0x0e96, 0x0e9a, 0x0e9e,\n\t0x0ea2, 0x0ea6, 0x0eaa, 0x0eae, 0x0eb2, 0x0eb6, 0x0ebc, 0x0ec2,\n\t0x0ec8, 0x0ecc, 0x0ed0, 0x0ed4, 0x0ed8, 0x0edc, 0x0ee0, 0x0ee4,\n\t0x0ee8, 0x0eec, 0x0ef0, 0x0ef4, 0x0ef8, 0x0efc, 0x0f00, 0x0f04,\n\t// Entry 380 - 3BF\n\t0x0f08, 0x0f0c, 0x0f10, 0x0f14, 0x0f18, 0x0f1c, 0x0f20, 0x0f24,\n\t0x0f28, 0x0f2c, 0x0f30, 0x0f34, 0x0f38, 0x0f3e, 0x0f44, 0x0f4a,\n\t0x0f50, 0x0f56, 0x0f5c, 0x0f62, 0x0f68, 0x0f6e, 0x0f74, 0x0f7a,\n\t0x0f80, 0x0f86, 0x0f8c, 0x0f92, 0x0f98, 0x0f9e, 0x0fa4, 0x0faa,\n\t0x0fb0, 0x0fb6, 0x0fbc, 0x0fc2, 0x0fc8, 0x0fce, 0x0fd4, 0x0fda,\n\t0x0fe0, 0x0fe6, 0x0fec, 0x0ff2, 0x0ff8, 0x0ffe, 0x1004, 0x100a,\n\t0x1010, 0x1016, 0x101c, 0x1022, 0x1028, 0x102e, 0x1034, 0x103a,\n\t0x1040, 0x1046, 0x104c, 0x1052, 0x1058, 0x105e, 0x1064, 0x106a,\n\t// Entry 3C0 - 3FF\n\t0x1070, 0x1076, 0x107c, 0x1082, 0x1088, 0x108e, 0x1094, 0x109a,\n\t0x10a0, 0x10a6, 0x10ac, 0x10b2, 0x10b8, 0x10be, 0x10c4, 0x10ca,\n\t0x10d0, 0x10d6, 0x10dc, 0x10e2, 0x10e8, 0x10ee, 0x10f4, 0x10fa,\n\t0x1100, 0x1106, 0x110c, 0x1112, 0x1118, 0x111e, 0x1124, 0x112a,\n\t0x1130, 0x1136, 0x113c, 0x1142, 0x1148, 0x114e, 0x1154, 0x115a,\n\t0x1160, 0x1166, 0x116c, 0x1172, 0x1178, 0x1180, 0x1188, 0x1190,\n\t0x1198, 0x11a0, 0x11a8, 0x11b0, 0x11b6, 0x11d7, 0x11e6, 0x11ee,\n\t0x11ef, 0x11f0, 0x11f1, 0x11f2, 0x11f3, 0x11f4, 0x11f5, 0x11f6,\n\t// Entry 400 - 43F\n\t0x11f7, 0x11f8, 0x11f9, 0x11fa, 0x11fb, 0x11fc, 0x11fd, 0x11fe,\n\t0x11ff, 0x1200, 0x1201, 0x1205, 0x1209, 0x120d, 0x1211, 0x1215,\n\t0x1219, 0x121b, 0x121d, 0x121f, 0x1221, 0x1223, 0x1225, 0x1227,\n\t0x1229, 0x122b, 0x122d, 0x122f, 0x1231, 0x1233, 0x1235, 0x1237,\n\t0x1239, 0x123b, 0x123d, 0x123f, 0x1241, 0x1243, 0x1245, 0x1247,\n\t0x1249, 0x124b, 0x124d, 0x124f, 0x1251, 0x1253, 0x1255, 0x1257,\n\t0x1259, 0x125b, 0x125d, 0x125f, 0x1263, 0x1267, 0x126b, 0x126f,\n\t0x1270, 0x1271, 0x1272, 0x1273, 0x1274, 0x1275, 0x1277, 0x1279,\n\t// Entry 440 - 47F\n\t0x127b, 0x127d, 0x127f, 0x1281, 0x1283, 0x1285, 0x1287, 0x1289,\n\t0x128c, 0x128e, 0x1290, 0x1292, 0x1294, 0x1297, 0x1299, 0x129b,\n\t0x129d, 0x129f, 0x12a1, 0x12a3, 0x12a5, 0x12a7, 0x12a9, 0x12ab,\n\t0x12ad, 0x12af, 0x12b2, 0x12b4, 0x12b6, 0x12b8, 0x12ba, 0x12bc,\n\t0x12be, 0x12c0, 0x12c2, 0x12c4, 0x12c6, 0x12c9, 0x12cb, 0x12cd,\n\t0x12d0, 0x12d2, 0x12d4, 0x12d6, 0x12d8, 0x12da, 0x12dc, 0x12de,\n\t0x12e6, 0x12ee, 0x12fa, 0x1306, 0x1312, 0x131e, 0x132a, 0x1332,\n\t0x133a, 0x1346, 0x1352, 0x135e, 0x136a, 0x136c, 0x136e, 0x1370,\n\t// Entry 480 - 4BF\n\t0x1372, 0x1374, 0x1376, 0x1378, 0x137a, 0x137c, 0x137e, 0x1380,\n\t0x1382, 0x1384, 0x1386, 0x1388, 0x138a, 0x138d, 0x1390, 0x1392,\n\t0x1394, 0x1396, 0x1398, 0x139a, 0x139c, 0x139e, 0x13a0, 0x13a2,\n\t0x13a4, 0x13a6, 0x13a8, 0x13aa, 0x13ac, 0x13ae, 0x13b0, 0x13b2,\n\t0x13b4, 0x13b6, 0x13b8, 0x13ba, 0x13bc, 0x13bf, 0x13c1, 0x13c3,\n\t0x13c5, 0x13c7, 0x13c9, 0x13cb, 0x13cd, 0x13cf, 0x13d1, 0x13d3,\n\t0x13d6, 0x13d8, 0x13da, 0x13dc, 0x13de, 0x13e0, 0x13e2, 0x13e4,\n\t0x13e6, 0x13e8, 0x13ea, 0x13ec, 0x13ee, 0x13f0, 0x13f2, 0x13f5,\n\t// Entry 4C0 - 4FF\n\t0x13f8, 0x13fb, 0x13fe, 0x1401, 0x1404, 0x1407, 0x140a, 0x140d,\n\t0x1410, 0x1413, 0x1416, 0x1419, 0x141c, 0x141f, 0x1422, 0x1425,\n\t0x1428, 0x142b, 0x142e, 0x1431, 0x1434, 0x1437, 0x143a, 0x143d,\n\t0x1440, 0x1447, 0x1449, 0x144b, 0x144d, 0x1450, 0x1452, 0x1454,\n\t0x1456, 0x1458, 0x145a, 0x1460, 0x1466, 0x1469, 0x146c, 0x146f,\n\t0x1472, 0x1475, 0x1478, 0x147b, 0x147e, 0x1481, 0x1484, 0x1487,\n\t0x148a, 0x148d, 0x1490, 0x1493, 0x1496, 0x1499, 0x149c, 0x149f,\n\t0x14a2, 0x14a5, 0x14a8, 0x14ab, 0x14ae, 0x14b1, 0x14b4, 0x14b7,\n\t// Entry 500 - 53F\n\t0x14ba, 0x14bd, 0x14c0, 0x14c3, 0x14c6, 0x14c9, 0x14cc, 0x14cf,\n\t0x14d2, 0x14d5, 0x14d8, 0x14db, 0x14de, 0x14e1, 0x14e4, 0x14e7,\n\t0x14ea, 0x14ed, 0x14f6, 0x14ff, 0x1508, 0x1511, 0x151a, 0x1523,\n\t0x152c, 0x1535, 0x153e, 0x1541, 0x1544, 0x1547, 0x154a, 0x154d,\n\t0x1550, 0x1553, 0x1556, 0x1559, 0x155c, 0x155f, 0x1562, 0x1565,\n\t0x1568, 0x156b, 0x156e, 0x1571, 0x1574, 0x1577, 0x157a, 0x157d,\n\t0x1580, 0x1583, 0x1586, 0x1589, 0x158c, 0x158f, 0x1592, 0x1595,\n\t0x1598, 0x159b, 0x159e, 0x15a1, 0x15a4, 0x15a7, 0x15aa, 0x15ad,\n\t// Entry 540 - 57F\n\t0x15b0, 0x15b3, 0x15b6, 0x15b9, 0x15bc, 0x15bf, 0x15c2, 0x15c5,\n\t0x15c8, 0x15cb, 0x15ce, 0x15d1, 0x15d4, 0x15d7, 0x15da, 0x15dd,\n\t0x15e0, 0x15e3, 0x15e6, 0x15e9, 0x15ec, 0x15ef, 0x15f2, 0x15f5,\n\t0x15f8, 0x15fb, 0x15fe, 0x1601, 0x1604, 0x1607, 0x160a, 0x160d,\n\t0x1610, 0x1613, 0x1616, 0x1619, 0x161c, 0x161f, 0x1622, 0x1625,\n\t0x1628, 0x162b, 0x162e, 0x1631, 0x1634, 0x1637, 0x163a, 0x163d,\n\t0x1640, 0x1643, 0x1646, 0x1649, 0x164c, 0x164f, 0x1652, 0x1655,\n\t0x1658, 0x165b, 0x165e, 0x1661, 0x1664, 0x1667, 0x166a, 0x166d,\n\t// Entry 580 - 5BF\n\t0x1670, 0x1673, 0x1676, 0x1679, 0x167c, 0x167f, 0x1682, 0x1685,\n\t0x1688, 0x168b, 0x168e, 0x1691, 0x1694, 0x1697, 0x169a, 0x169d,\n\t0x16a0, 0x16a3, 0x16a6, 0x16a9, 0x16ac, 0x16af, 0x16b2, 0x16b5,\n\t0x16b8, 0x16bb, 0x16be, 0x16c1, 0x16c4, 0x16c7, 0x16ca, 0x16cd,\n\t0x16d0, 0x16d3, 0x16d6, 0x16d9, 0x16dc, 0x16df, 0x16e2, 0x16e5,\n\t0x16e8, 0x16eb, 0x16ee, 0x16f1, 0x16f4, 0x16f7, 0x16fa, 0x16fd,\n\t0x1700, 0x1703, 0x1706, 0x1709, 0x170c, 0x170f, 0x1712, 0x1715,\n\t0x1718, 0x171b, 0x171e, 0x1721, 0x1724, 0x1727, 0x172a, 0x172d,\n\t// Entry 5C0 - 5FF\n\t0x1730, 0x1733, 0x1736, 0x1739, 0x173c, 0x173f, 0x1742, 0x1745,\n\t0x1748, 0x174b, 0x174e, 0x1751, 0x1754, 0x1757, 0x175a, 0x175d,\n\t0x1760, 0x1763, 0x1766, 0x1769, 0x176c, 0x176f, 0x1772, 0x1775,\n\t0x1778, 0x177b, 0x177e, 0x1781, 0x1784, 0x1787, 0x178a, 0x178d,\n\t0x1790, 0x1793, 0x1796, 0x1799, 0x179c, 0x179f, 0x17a2, 0x17a5,\n\t0x17a8, 0x17ab, 0x17ae, 0x17b1, 0x17b4, 0x17b7, 0x17ba, 0x17bd,\n\t0x17c0, 0x17c3, 0x17c6, 0x17c9, 0x17cc, 0x17cf, 0x17d2, 0x17d5,\n\t0x17d8, 0x17db, 0x17de, 0x17e1, 0x17e4, 0x17e7, 0x17ea, 0x17ed,\n\t// Entry 600 - 63F\n\t0x17f0, 0x17f3, 0x17f6, 0x17f9, 0x17fc, 0x17ff, 0x1802, 0x1805,\n\t0x1808, 0x180b, 0x180e, 0x1811, 0x1814, 0x1817, 0x181a, 0x181d,\n\t0x1820, 0x1823, 0x1826, 0x1829, 0x182c, 0x182f, 0x1832, 0x1835,\n\t0x1838, 0x183b, 0x183e, 0x1841, 0x1844, 0x1847, 0x184a, 0x184d,\n\t0x1850, 0x1853, 0x1856, 0x1859, 0x185c, 0x185f, 0x1862, 0x1865,\n\t0x1868, 0x186b, 0x186e, 0x1871, 0x1874, 0x1877, 0x187a, 0x187d,\n\t0x1880, 0x1883, 0x1886, 0x1889, 0x188c, 0x188f, 0x1892, 0x1895,\n\t0x1898, 0x189b, 0x189e, 0x18a1, 0x18a4, 0x18a7, 0x18aa, 0x18ad,\n\t// Entry 640 - 67F\n\t0x18b0, 0x18b3, 0x18b6, 0x18b9, 0x18bc, 0x18bf, 0x18c2, 0x18c5,\n\t0x18c8, 0x18cb, 0x18ce, 0x18d1, 0x18d4, 0x18d7, 0x18da, 0x18dd,\n\t0x18e0, 0x18e3, 0x18e6, 0x18e9, 0x18ec, 0x18ef, 0x18f2, 0x18f5,\n\t0x18f8, 0x18fb, 0x18fe, 0x1901, 0x1904, 0x1907, 0x190a, 0x190d,\n\t0x1910, 0x1913, 0x1916, 0x1919, 0x191c, 0x191f, 0x1922, 0x1925,\n\t0x1928, 0x192b, 0x192e, 0x1931, 0x1934, 0x1937, 0x193a, 0x193d,\n\t0x1940, 0x1943, 0x1946, 0x1949, 0x194c, 0x194f, 0x1952, 0x1955,\n\t0x1958, 0x195b, 0x195e, 0x1961, 0x1964, 0x1967, 0x196a, 0x196d,\n\t// Entry 680 - 6BF\n\t0x1970, 0x1973, 0x1976, 0x1979, 0x197c, 0x197f, 0x1982, 0x1985,\n\t0x1988, 0x198b, 0x198e, 0x1991, 0x1994, 0x1997, 0x199a, 0x199d,\n\t0x19a0, 0x19a3, 0x19a6, 0x19a9, 0x19ac, 0x19af, 0x19b2, 0x19b5,\n\t0x19b8, 0x19bb, 0x19be, 0x19c1, 0x19c4, 0x19c7, 0x19ca, 0x19cd,\n\t0x19d0, 0x19d3, 0x19d6, 0x19d9, 0x19dc, 0x19df, 0x19e2, 0x19e5,\n\t0x19e8, 0x19eb, 0x19ee, 0x19f1, 0x19f4, 0x19f7, 0x19fa, 0x19fd,\n\t0x1a00, 0x1a03, 0x1a06, 0x1a09, 0x1a0c, 0x1a0f, 0x1a12, 0x1a15,\n\t0x1a18, 0x1a1b, 0x1a1e, 0x1a21, 0x1a24, 0x1a27, 0x1a2a, 0x1a2d,\n\t// Entry 6C0 - 6FF\n\t0x1a30,\n} // Size: 3482 bytes\n\nvar xorData string = \"\" + // Size: 4907 bytes\n\t\"\\x02\\x0c\\x09\\x02\\xb0\\xec\\x02\\xad\\xd8\\x02\\xad\\xd9\\x02\\x06\\x07\\x02\\x0f\\x12\" +\n\t\"\\x02\\x0f\\x1f\\x02\\x0f\\x1d\\x02\\x01\\x13\\x02\\x0f\\x16\\x02\\x0f\\x0b\\x02\\x0f3\" +\n\t\"\\x02\\x0f7\\x02\\x0f?\\x02\\x0f/\\x02\\x0f*\\x02\\x0c&\\x02\\x0c*\\x02\\x0c;\\x02\\x0c9\" +\n\t\"\\x02\\x0c%\\x02\\xab\\xed\\x02\\xab\\xe2\\x02\\xab\\xe3\\x02\\xa9\\xe0\\x02\\xa9\\xe1\" +\n\t\"\\x02\\xa9\\xe6\\x02\\xa3\\xcb\\x02\\xa3\\xc8\\x02\\xa3\\xc9\\x02\\x01#\\x02\\x01\\x08\" +\n\t\"\\x02\\x0e>\\x02\\x0e'\\x02\\x0f\\x03\\x02\\x03\\x0d\\x02\\x03\\x09\\x02\\x03\\x17\\x02\" +\n\t\"\\x03\\x0e\\x02\\x02\\x03\\x02\\x011\\x02\\x01\\x00\\x02\\x01\\x10\\x02\\x03<\\x02\\x07\" +\n\t\"\\x0d\\x02\\x02\\x0c\\x02\\x0c0\\x02\\x01\\x03\\x02\\x01\\x01\\x02\\x01 \\x02\\x01\\x22\" +\n\t\"\\x02\\x01)\\x02\\x01\\x0a\\x02\\x01\\x0c\\x02\\x02\\x06\\x02\\x02\\x02\\x02\\x03\\x10\" +\n\t\"\\x03\\x037 \\x03\\x0b+\\x03\\x021\\x00\\x02\\x01\\x04\\x02\\x01\\x02\\x02\\x019\\x02\" +\n\t\"\\x03\\x1c\\x02\\x02$\\x03\\x80p$\\x02\\x03:\\x02\\x03\\x0a\\x03\\xc1r.\\x03\\xc1r,\\x03\" +\n\t\"\\xc1r\\x02\\x02\\x02:\\x02\\x02>\\x02\\x02,\\x02\\x02\\x10\\x02\\x02\\x00\\x03\\xc1s<\" +\n\t\"\\x03\\xc1s*\\x03\\xc2L$\\x03\\xc2L;\\x02\\x09)\\x02\\x0a\\x19\\x03\\x83\\xab\\xe3\\x03\" +\n\t\"\\x83\\xab\\xf2\\x03 4\\xe0\\x03\\x81\\xab\\xea\\x03\\x81\\xab\\xf3\\x03 4\\xef\\x03\\x96\" +\n\t\"\\xe1\\xcd\\x03\\x84\\xe5\\xc3\\x02\\x0d\\x11\\x03\\x8b\\xec\\xcb\\x03\\x94\\xec\\xcf\\x03\" +\n\t\"\\x9a\\xec\\xc2\\x03\\x8b\\xec\\xdb\\x03\\x94\\xec\\xdf\\x03\\x9a\\xec\\xd2\\x03\\x01\\x0c\" +\n\t\"!\\x03\\x01\\x0c#\\x03ʠ\\x9d\\x03ʣ\\x9c\\x03ʢ\\x9f\\x03ʥ\\x9e\\x03ʤ\\x91\\x03ʧ\\x90\\x03\" +\n\t\"ʦ\\x93\\x03ʩ\\x92\\x03ʨ\\x95\\x03\\xca\\xf3\\xb5\\x03\\xca\\xf0\\xb4\\x03\\xca\\xf1\\xb7\" +\n\t\"\\x03\\xca\\xf6\\xb6\\x03\\xca\\xf7\\x89\\x03\\xca\\xf4\\x88\\x03\\xca\\xf5\\x8b\\x03\\xca\" +\n\t\"\\xfa\\x8a\\x03\\xca\\xfb\\x8d\\x03\\xca\\xf8\\x8c\\x03\\xca\\xf9\\x8f\\x03\\xca\\xfe\\x8e\" +\n\t\"\\x03\\xca\\xff\\x81\\x03\\xca\\xfc\\x80\\x03\\xca\\xfd\\x83\\x03\\xca\\xe2\\x82\\x03\\xca\" +\n\t\"\\xe3\\x85\\x03\\xca\\xe0\\x84\\x03\\xca\\xe1\\x87\\x03\\xca\\xe6\\x86\\x03\\xca\\xe7\\x99\" +\n\t\"\\x03\\xca\\xe4\\x98\\x03\\xca\\xe5\\x9b\\x03\\xca\\xea\\x9a\\x03\\xca\\xeb\\x9d\\x03\\xca\" +\n\t\"\\xe8\\x9c\\x03ؓ\\x89\\x03ߔ\\x8b\\x02\\x010\\x03\\x03\\x04\\x1e\\x03\\x04\\x15\\x12\\x03\" +\n\t\"\\x0b\\x05,\\x03\\x06\\x04\\x00\\x03\\x06\\x04)\\x03\\x06\\x044\\x03\\x06\\x04<\\x03\\x06\" +\n\t\"\\x05\\x1d\\x03\\x06\\x06\\x00\\x03\\x06\\x06\\x0a\\x03\\x06\\x06'\\x03\\x06\\x062\\x03\" +\n\t\"\\x0786\\x03\\x079/\\x03\\x079 \\x03\\x07:\\x0e\\x03\\x07:\\x1b\\x03\\x07:%\\x03\\x07;/\" +\n\t\"\\x03\\x07;%\\x03\\x074\\x11\\x03\\x076\\x09\\x03\\x077*\\x03\\x070\\x01\\x03\\x070\\x0f\" +\n\t\"\\x03\\x070.\\x03\\x071\\x16\\x03\\x071\\x04\\x03\\x0710\\x03\\x072\\x18\\x03\\x072-\" +\n\t\"\\x03\\x073\\x14\\x03\\x073>\\x03\\x07'\\x09\\x03\\x07 \\x00\\x03\\x07\\x1f\\x0b\\x03\" +\n\t\"\\x07\\x18#\\x03\\x07\\x18(\\x03\\x07\\x186\\x03\\x07\\x18\\x03\\x03\\x07\\x19\\x16\\x03\" +\n\t\"\\x07\\x116\\x03\\x07\\x12'\\x03\\x07\\x13\\x10\\x03\\x07\\x0c&\\x03\\x07\\x0c\\x08\\x03\" +\n\t\"\\x07\\x0c\\x13\\x03\\x07\\x0d\\x02\\x03\\x07\\x0d\\x1c\\x03\\x07\\x0b5\\x03\\x07\\x0b\" +\n\t\"\\x0a\\x03\\x07\\x0b\\x01\\x03\\x07\\x0b\\x0f\\x03\\x07\\x05\\x00\\x03\\x07\\x05\\x09\\x03\" +\n\t\"\\x07\\x05\\x0b\\x03\\x07\\x07\\x01\\x03\\x07\\x07\\x08\\x03\\x07\\x00<\\x03\\x07\\x00+\" +\n\t\"\\x03\\x07\\x01)\\x03\\x07\\x01\\x1b\\x03\\x07\\x01\\x08\\x03\\x07\\x03?\\x03\\x0445\\x03\" +\n\t\"\\x044\\x08\\x03\\x0454\\x03\\x04)/\\x03\\x04)5\\x03\\x04+\\x05\\x03\\x04+\\x14\\x03\" +\n\t\"\\x04+ \\x03\\x04+<\\x03\\x04*&\\x03\\x04*\\x22\\x03\\x04&8\\x03\\x04!\\x01\\x03\\x04!\" +\n\t\"\\x22\\x03\\x04\\x11+\\x03\\x04\\x10.\\x03\\x04\\x104\\x03\\x04\\x13=\\x03\\x04\\x12\\x04\" +\n\t\"\\x03\\x04\\x12\\x0a\\x03\\x04\\x0d\\x1d\\x03\\x04\\x0d\\x07\\x03\\x04\\x0d \\x03\\x05<>\" +\n\t\"\\x03\\x055<\\x03\\x055!\\x03\\x055#\\x03\\x055&\\x03\\x054\\x1d\\x03\\x054\\x02\\x03\" +\n\t\"\\x054\\x07\\x03\\x0571\\x03\\x053\\x1a\\x03\\x053\\x16\\x03\\x05.<\\x03\\x05.\\x07\\x03\" +\n\t\"\\x05):\\x03\\x05)<\\x03\\x05)\\x0c\\x03\\x05)\\x15\\x03\\x05+-\\x03\\x05+5\\x03\\x05$\" +\n\t\"\\x1e\\x03\\x05$\\x14\\x03\\x05'\\x04\\x03\\x05'\\x14\\x03\\x05&\\x02\\x03\\x05\\x226\" +\n\t\"\\x03\\x05\\x22\\x0c\\x03\\x05\\x22\\x1c\\x03\\x05\\x19\\x0a\\x03\\x05\\x1b\\x09\\x03\\x05\" +\n\t\"\\x1b\\x0c\\x03\\x05\\x14\\x07\\x03\\x05\\x16?\\x03\\x05\\x16\\x0c\\x03\\x05\\x0c\\x05\" +\n\t\"\\x03\\x05\\x0e\\x0f\\x03\\x05\\x01\\x0e\\x03\\x05\\x00(\\x03\\x05\\x030\\x03\\x05\\x03\" +\n\t\"\\x06\\x03\\x0a==\\x03\\x0a=1\\x03\\x0a=,\\x03\\x0a=\\x0c\\x03\\x0a??\\x03\\x0a<\\x08\" +\n\t\"\\x03\\x0a9!\\x03\\x0a9)\\x03\\x0a97\\x03\\x0a99\\x03\\x0a6\\x0a\\x03\\x0a6\\x1c\\x03\" +\n\t\"\\x0a6\\x17\\x03\\x0a7'\\x03\\x0a78\\x03\\x0a73\\x03\\x0a'\\x01\\x03\\x0a'&\\x03\\x0a\" +\n\t\"\\x1f\\x0e\\x03\\x0a\\x1f\\x03\\x03\\x0a\\x1f3\\x03\\x0a\\x1b/\\x03\\x0a\\x18\\x19\\x03\" +\n\t\"\\x0a\\x19\\x01\\x03\\x0a\\x16\\x14\\x03\\x0a\\x0e\\x22\\x03\\x0a\\x0f\\x10\\x03\\x0a\\x0f\" +\n\t\"\\x02\\x03\\x0a\\x0f \\x03\\x0a\\x0c\\x04\\x03\\x0a\\x0b>\\x03\\x0a\\x0b+\\x03\\x0a\\x08/\" +\n\t\"\\x03\\x0a\\x046\\x03\\x0a\\x05\\x14\\x03\\x0a\\x00\\x04\\x03\\x0a\\x00\\x10\\x03\\x0a\" +\n\t\"\\x00\\x14\\x03\\x0b<3\\x03\\x0b;*\\x03\\x0b9\\x22\\x03\\x0b9)\\x03\\x0b97\\x03\\x0b+\" +\n\t\"\\x10\\x03\\x0b((\\x03\\x0b&5\\x03\\x0b$\\x1c\\x03\\x0b$\\x12\\x03\\x0b%\\x04\\x03\\x0b#\" +\n\t\"<\\x03\\x0b#0\\x03\\x0b#\\x0d\\x03\\x0b#\\x19\\x03\\x0b!:\\x03\\x0b!\\x1f\\x03\\x0b!\" +\n\t\"\\x00\\x03\\x0b\\x1e5\\x03\\x0b\\x1c\\x1d\\x03\\x0b\\x1d-\\x03\\x0b\\x1d(\\x03\\x0b\\x18.\" +\n\t\"\\x03\\x0b\\x18 \\x03\\x0b\\x18\\x16\\x03\\x0b\\x14\\x13\\x03\\x0b\\x15$\\x03\\x0b\\x15\" +\n\t\"\\x22\\x03\\x0b\\x12\\x1b\\x03\\x0b\\x12\\x10\\x03\\x0b\\x132\\x03\\x0b\\x13=\\x03\\x0b\" +\n\t\"\\x12\\x18\\x03\\x0b\\x0c&\\x03\\x0b\\x061\\x03\\x0b\\x06:\\x03\\x0b\\x05#\\x03\\x0b\\x05\" +\n\t\"<\\x03\\x0b\\x04\\x0b\\x03\\x0b\\x04\\x04\\x03\\x0b\\x04\\x1b\\x03\\x0b\\x042\\x03\\x0b\" +\n\t\"\\x041\\x03\\x0b\\x03\\x03\\x03\\x0b\\x03\\x1d\\x03\\x0b\\x03/\\x03\\x0b\\x03+\\x03\\x0b\" +\n\t\"\\x02\\x1b\\x03\\x0b\\x02\\x00\\x03\\x0b\\x01\\x1e\\x03\\x0b\\x01\\x08\\x03\\x0b\\x015\" +\n\t\"\\x03\\x06\\x0d9\\x03\\x06\\x0d=\\x03\\x06\\x0d?\\x03\\x02\\x001\\x03\\x02\\x003\\x03\" +\n\t\"\\x02\\x02\\x19\\x03\\x02\\x006\\x03\\x02\\x02\\x1b\\x03\\x02\\x004\\x03\\x02\\x00<\\x03\" +\n\t\"\\x02\\x02\\x0a\\x03\\x02\\x02\\x0e\\x03\\x02\\x01\\x1a\\x03\\x02\\x01\\x07\\x03\\x02\\x01\" +\n\t\"\\x05\\x03\\x02\\x01\\x0b\\x03\\x02\\x01%\\x03\\x02\\x01\\x0c\\x03\\x02\\x01\\x04\\x03\" +\n\t\"\\x02\\x01\\x1c\\x03\\x02\\x00.\\x03\\x02\\x002\\x03\\x02\\x00>\\x03\\x02\\x00\\x12\\x03\" +\n\t\"\\x02\\x00\\x16\\x03\\x02\\x011\\x03\\x02\\x013\\x03\\x02\\x02 \\x03\\x02\\x02%\\x03\\x02\" +\n\t\"\\x02$\\x03\\x02\\x028\\x03\\x02\\x02;\\x03\\x02\\x024\\x03\\x02\\x012\\x03\\x02\\x022\" +\n\t\"\\x03\\x02\\x02/\\x03\\x02\\x01,\\x03\\x02\\x01\\x13\\x03\\x02\\x01\\x16\\x03\\x02\\x01\" +\n\t\"\\x11\\x03\\x02\\x01\\x1e\\x03\\x02\\x01\\x15\\x03\\x02\\x01\\x17\\x03\\x02\\x01\\x0f\\x03\" +\n\t\"\\x02\\x01\\x08\\x03\\x02\\x00?\\x03\\x02\\x03\\x07\\x03\\x02\\x03\\x0d\\x03\\x02\\x03\" +\n\t\"\\x13\\x03\\x02\\x03\\x1d\\x03\\x02\\x03\\x1f\\x03\\x02\\x00\\x03\\x03\\x02\\x00\\x0d\\x03\" +\n\t\"\\x02\\x00\\x01\\x03\\x02\\x00\\x1b\\x03\\x02\\x00\\x19\\x03\\x02\\x00\\x18\\x03\\x02\\x00\" +\n\t\"\\x13\\x03\\x02\\x00/\\x03\\x07>\\x12\\x03\\x07<\\x1f\\x03\\x07>\\x1d\\x03\\x06\\x1d\\x0e\" +\n\t\"\\x03\\x07>\\x1c\\x03\\x07>:\\x03\\x07>\\x13\\x03\\x04\\x12+\\x03\\x07?\\x03\\x03\\x07>\" +\n\t\"\\x02\\x03\\x06\\x224\\x03\\x06\\x1a.\\x03\\x07<%\\x03\\x06\\x1c\\x0b\\x03\\x0609\\x03\" +\n\t\"\\x05\\x1f\\x01\\x03\\x04'\\x08\\x03\\x93\\xfd\\xf5\\x03\\x02\\x0d \\x03\\x02\\x0d#\\x03\" +\n\t\"\\x02\\x0d!\\x03\\x02\\x0d&\\x03\\x02\\x0d\\x22\\x03\\x02\\x0d/\\x03\\x02\\x0d,\\x03\\x02\" +\n\t\"\\x0d$\\x03\\x02\\x0d'\\x03\\x02\\x0d%\\x03\\x02\\x0d;\\x03\\x02\\x0d=\\x03\\x02\\x0d?\" +\n\t\"\\x03\\x099.\\x03\\x08\\x0b7\\x03\\x08\\x02\\x14\\x03\\x08\\x14\\x0d\\x03\\x08.:\\x03\" +\n\t\"\\x089'\\x03\\x0f\\x0b\\x18\\x03\\x0f\\x1c1\\x03\\x0f\\x17&\\x03\\x0f9\\x1f\\x03\\x0f0\" +\n\t\"\\x0c\\x03\\x0e\\x0a9\\x03\\x0e\\x056\\x03\\x0e\\x1c#\\x03\\x0f\\x13\\x0e\\x03\\x072\\x00\" +\n\t\"\\x03\\x070\\x0d\\x03\\x072\\x0b\\x03\\x06\\x11\\x18\\x03\\x070\\x10\\x03\\x06\\x0f(\\x03\" +\n\t\"\\x072\\x05\\x03\\x06\\x0f,\\x03\\x073\\x15\\x03\\x06\\x07\\x08\\x03\\x05\\x16\\x02\\x03\" +\n\t\"\\x04\\x0b \\x03\\x05:8\\x03\\x05\\x16%\\x03\\x0a\\x0d\\x1f\\x03\\x06\\x16\\x10\\x03\\x05\" +\n\t\"\\x1d5\\x03\\x05*;\\x03\\x05\\x16\\x1b\\x03\\x04.-\\x03\\x06\\x1a\\x19\\x03\\x04\\x03,\" +\n\t\"\\x03\\x0b87\\x03\\x04/\\x0a\\x03\\x06\\x00,\\x03\\x04-\\x01\\x03\\x04\\x1e-\\x03\\x06/(\" +\n\t\"\\x03\\x0a\\x0b5\\x03\\x06\\x0e7\\x03\\x06\\x07.\\x03\\x0597\\x03\\x0a*%\\x03\\x0760\" +\n\t\"\\x03\\x06\\x0c;\\x03\\x05'\\x00\\x03\\x072.\\x03\\x072\\x08\\x03\\x06=\\x01\\x03\\x06\" +\n\t\"\\x05\\x1b\\x03\\x06\\x06\\x12\\x03\\x06$=\\x03\\x06'\\x0d\\x03\\x04\\x11\\x0f\\x03\\x076\" +\n\t\",\\x03\\x06\\x07;\\x03\\x06.,\\x03\\x86\\xf9\\xea\\x03\\x8f\\xff\\xeb\\x02\\x092\\x02\" +\n\t\"\\x095\\x02\\x094\\x02\\x09;\\x02\\x09>\\x02\\x098\\x02\\x09*\\x02\\x09/\\x02\\x09,\\x02\" +\n\t\"\\x09%\\x02\\x09&\\x02\\x09#\\x02\\x09 \\x02\\x08!\\x02\\x08%\\x02\\x08$\\x02\\x08+\\x02\" +\n\t\"\\x08.\\x02\\x08*\\x02\\x08&\\x02\\x088\\x02\\x08>\\x02\\x084\\x02\\x086\\x02\\x080\\x02\" +\n\t\"\\x08\\x10\\x02\\x08\\x17\\x02\\x08\\x12\\x02\\x08\\x1d\\x02\\x08\\x1f\\x02\\x08\\x13\\x02\" +\n\t\"\\x08\\x15\\x02\\x08\\x14\\x02\\x08\\x0c\\x03\\x8b\\xfd\\xd0\\x03\\x81\\xec\\xc6\\x03\\x87\" +\n\t\"\\xe0\\x8a\\x03-2\\xe3\\x03\\x80\\xef\\xe4\\x03-2\\xea\\x03\\x88\\xe6\\xeb\\x03\\x8e\\xe6\" +\n\t\"\\xe8\\x03\\x84\\xe6\\xe9\\x03\\x97\\xe6\\xee\\x03-2\\xf9\\x03-2\\xf6\\x03\\x8e\\xe3\\xad\" +\n\t\"\\x03\\x80\\xe3\\x92\\x03\\x88\\xe3\\x90\\x03\\x8e\\xe3\\x90\\x03\\x80\\xe3\\x97\\x03\\x88\" +\n\t\"\\xe3\\x95\\x03\\x88\\xfe\\xcb\\x03\\x8e\\xfe\\xca\\x03\\x84\\xfe\\xcd\\x03\\x91\\xef\\xc9\" +\n\t\"\\x03-2\\xc1\\x03-2\\xc0\\x03-2\\xcb\\x03\\x88@\\x09\\x03\\x8e@\\x08\\x03\\x8f\\xe0\\xf5\" +\n\t\"\\x03\\x8e\\xe6\\xf9\\x03\\x8e\\xe0\\xfa\\x03\\x93\\xff\\xf4\\x03\\x84\\xee\\xd3\\x03\\x0b\" +\n\t\"(\\x04\\x023 \\x03\\x0b)\\x08\\x021;\\x02\\x01*\\x03\\x0b#\\x10\\x03\\x0b 0\\x03\\x0b!\" +\n\t\"\\x10\\x03\\x0b!0\\x03\\x07\\x15\\x08\\x03\\x09?5\\x03\\x07\\x1f\\x08\\x03\\x07\\x17\\x0b\" +\n\t\"\\x03\\x09\\x1f\\x15\\x03\\x0b\\x1c7\\x03\\x0a+#\\x03\\x06\\x1a\\x1b\\x03\\x06\\x1a\\x14\" +\n\t\"\\x03\\x0a\\x01\\x18\\x03\\x06#\\x1b\\x03\\x0a2\\x0c\\x03\\x0a\\x01\\x04\\x03\\x09#;\\x03\" +\n\t\"\\x08='\\x03\\x08\\x1a\\x0a\\x03\\x07</\\x03\\x07:+\\x03\\x07\\x07*\\x03\\x06&\\x1c\\x03\" +\n\t\"\\x09\\x0c\\x16\\x03\\x09\\x10\\x0e\\x03\\x08'\\x0f\\x03\\x08+\\x09\\x03\\x074%\\x03\\x06\" +\n\t\"!3\\x03\\x06\\x03+\\x03\\x0b\\x1e\\x19\\x03\\x0a))\\x03\\x09\\x08\\x19\\x03\\x08,\\x05\" +\n\t\"\\x03\\x07<2\\x03\\x06\\x1c>\\x03\\x0a\\x111\\x03\\x09\\x1b\\x09\\x03\\x073.\\x03\\x07\" +\n\t\"\\x01\\x00\\x03\\x09/,\\x03\\x07#>\\x03\\x07\\x048\\x03\\x0a\\x1f\\x22\\x03\\x098>\\x03\" +\n\t\"\\x09\\x11\\x00\\x03\\x08/\\x17\\x03\\x06'\\x22\\x03\\x0b\\x1a+\\x03\\x0a\\x22\\x19\\x03\" +\n\t\"\\x0a/1\\x03\\x0974\\x03\\x09\\x0f\\x22\\x03\\x08,\\x22\\x03\\x08?\\x14\\x03\\x07$5\\x03\" +\n\t\"\\x07<3\\x03\\x07=*\\x03\\x07\\x13\\x18\\x03\\x068\\x0a\\x03\\x06\\x09\\x16\\x03\\x06\" +\n\t\"\\x13\\x00\\x03\\x08\\x067\\x03\\x08\\x01\\x03\\x03\\x08\\x12\\x1d\\x03\\x07+7\\x03\\x06(\" +\n\t\";\\x03\\x06\\x1c?\\x03\\x07\\x0e\\x17\\x03\\x0a\\x06\\x1d\\x03\\x0a\\x19\\x07\\x03\\x08\" +\n\t\"\\x14$\\x03\\x07$;\\x03\\x08,$\\x03\\x08\\x06\\x0d\\x03\\x07\\x16\\x0a\\x03\\x06>>\\x03\" +\n\t\"\\x0a\\x06\\x12\\x03\\x0a\\x14)\\x03\\x09\\x0d\\x1f\\x03\\x09\\x12\\x17\\x03\\x09\\x19\" +\n\t\"\\x01\\x03\\x08\\x11 \\x03\\x08\\x1d'\\x03\\x06<\\x1a\\x03\\x0a.\\x00\\x03\\x07'\\x18\" +\n\t\"\\x03\\x0a\\x22\\x08\\x03\\x08\\x0d\\x0a\\x03\\x08\\x13)\\x03\\x07*)\\x03\\x06<,\\x03\" +\n\t\"\\x07\\x0b\\x1a\\x03\\x09.\\x14\\x03\\x09\\x0d\\x1e\\x03\\x07\\x0e#\\x03\\x0b\\x1d'\\x03\" +\n\t\"\\x0a\\x0a8\\x03\\x09%2\\x03\\x08+&\\x03\\x080\\x12\\x03\\x0a)4\\x03\\x08\\x06\\x1f\\x03\" +\n\t\"\\x0b\\x1b\\x1a\\x03\\x0a\\x1b\\x0f\\x03\\x0b\\x1d*\\x03\\x09\\x16$\\x03\\x090\\x11\\x03\" +\n\t\"\\x08\\x11\\x08\\x03\\x0a*(\\x03\\x0a\\x042\\x03\\x089,\\x03\\x074'\\x03\\x07\\x0f\\x05\" +\n\t\"\\x03\\x09\\x0b\\x0a\\x03\\x07\\x1b\\x01\\x03\\x09\\x17:\\x03\\x09.\\x0d\\x03\\x07.\\x11\" +\n\t\"\\x03\\x09+\\x15\\x03\\x080\\x13\\x03\\x0b\\x1f\\x19\\x03\\x0a \\x11\\x03\\x0a\\x220\\x03\" +\n\t\"\\x09\\x07;\\x03\\x08\\x16\\x1c\\x03\\x07,\\x13\\x03\\x07\\x0e/\\x03\\x06\\x221\\x03\\x0a\" +\n\t\".\\x0a\\x03\\x0a7\\x02\\x03\\x0a\\x032\\x03\\x0a\\x1d.\\x03\\x091\\x06\\x03\\x09\\x19:\" +\n\t\"\\x03\\x08\\x02/\\x03\\x060+\\x03\\x06\\x0f-\\x03\\x06\\x1c\\x1f\\x03\\x06\\x1d\\x07\\x03\" +\n\t\"\\x0a,\\x11\\x03\\x09=\\x0d\\x03\\x09\\x0b;\\x03\\x07\\x1b/\\x03\\x0a\\x1f:\\x03\\x09 \" +\n\t\"\\x1f\\x03\\x09.\\x10\\x03\\x094\\x0b\\x03\\x09\\x1a1\\x03\\x08#\\x1a\\x03\\x084\\x1d\" +\n\t\"\\x03\\x08\\x01\\x1f\\x03\\x08\\x11\\x22\\x03\\x07'8\\x03\\x07\\x1a>\\x03\\x0757\\x03\" +\n\t\"\\x06&9\\x03\\x06+\\x11\\x03\\x0a.\\x0b\\x03\\x0a,>\\x03\\x0a4#\\x03\\x08%\\x17\\x03\" +\n\t\"\\x07\\x05\\x22\\x03\\x07\\x0c\\x0b\\x03\\x0a\\x1d+\\x03\\x0a\\x19\\x16\\x03\\x09+\\x1f\" +\n\t\"\\x03\\x09\\x08\\x0b\\x03\\x08\\x16\\x18\\x03\\x08+\\x12\\x03\\x0b\\x1d\\x0c\\x03\\x0a=\" +\n\t\"\\x10\\x03\\x0a\\x09\\x0d\\x03\\x0a\\x10\\x11\\x03\\x09&0\\x03\\x08(\\x1f\\x03\\x087\\x07\" +\n\t\"\\x03\\x08\\x185\\x03\\x07'6\\x03\\x06.\\x05\\x03\\x06=\\x04\\x03\\x06;;\\x03\\x06\\x06,\" +\n\t\"\\x03\\x0b\\x18>\\x03\\x08\\x00\\x18\\x03\\x06 \\x03\\x03\\x06<\\x00\\x03\\x09%\\x18\\x03\" +\n\t\"\\x0b\\x1c<\\x03\\x0a%!\\x03\\x0a\\x09\\x12\\x03\\x0a\\x16\\x02\\x03\\x090'\\x03\\x09\" +\n\t\"\\x0e=\\x03\\x08 \\x0e\\x03\\x08>\\x03\\x03\\x074>\\x03\\x06&?\\x03\\x06\\x19\\x09\\x03\" +\n\t\"\\x06?(\\x03\\x0a-\\x0e\\x03\\x09:3\\x03\\x098:\\x03\\x09\\x12\\x0b\\x03\\x09\\x1d\\x17\" +\n\t\"\\x03\\x087\\x05\\x03\\x082\\x14\\x03\\x08\\x06%\\x03\\x08\\x13\\x1f\\x03\\x06\\x06\\x0e\" +\n\t\"\\x03\\x0a\\x22<\\x03\\x09/<\\x03\\x06>+\\x03\\x0a'?\\x03\\x0a\\x13\\x0c\\x03\\x09\\x10<\" +\n\t\"\\x03\\x07\\x1b=\\x03\\x0a\\x19\\x13\\x03\\x09\\x22\\x1d\\x03\\x09\\x07\\x0d\\x03\\x08)\" +\n\t\"\\x1c\\x03\\x06=\\x1a\\x03\\x0a/4\\x03\\x0a7\\x11\\x03\\x0a\\x16:\\x03\\x09?3\\x03\\x09:\" +\n\t\"/\\x03\\x09\\x05\\x0a\\x03\\x09\\x14\\x06\\x03\\x087\\x22\\x03\\x080\\x07\\x03\\x08\\x1a\" +\n\t\"\\x1f\\x03\\x07\\x04(\\x03\\x07\\x04\\x09\\x03\\x06 %\\x03\\x06<\\x08\\x03\\x0a+\\x14\" +\n\t\"\\x03\\x09\\x1d\\x16\\x03\\x0a70\\x03\\x08 >\\x03\\x0857\\x03\\x070\\x0a\\x03\\x06=\\x12\" +\n\t\"\\x03\\x06\\x16%\\x03\\x06\\x1d,\\x03\\x099#\\x03\\x09\\x10>\\x03\\x07 \\x1e\\x03\\x08\" +\n\t\"\\x0c<\\x03\\x08\\x0b\\x18\\x03\\x08\\x15+\\x03\\x08,:\\x03\\x08%\\x22\\x03\\x07\\x0a$\" +\n\t\"\\x03\\x0b\\x1c=\\x03\\x07+\\x08\\x03\\x0a/\\x05\\x03\\x0a \\x07\\x03\\x0a\\x12'\\x03\" +\n\t\"\\x09#\\x11\\x03\\x08\\x1b\\x15\\x03\\x0a\\x06\\x01\\x03\\x09\\x1c\\x1b\\x03\\x0922\\x03\" +\n\t\"\\x07\\x14<\\x03\\x07\\x09\\x04\\x03\\x061\\x04\\x03\\x07\\x0e\\x01\\x03\\x0a\\x13\\x18\" +\n\t\"\\x03\\x0a-\\x0c\\x03\\x0a?\\x0d\\x03\\x0a\\x09\\x0a\\x03\\x091&\\x03\\x0a/\\x0b\\x03\" +\n\t\"\\x08$<\\x03\\x083\\x1d\\x03\\x08\\x0c$\\x03\\x08\\x0d\\x07\\x03\\x08\\x0d?\\x03\\x08\" +\n\t\"\\x0e\\x14\\x03\\x065\\x0a\\x03\\x08\\x1a#\\x03\\x08\\x16#\\x03\\x0702\\x03\\x07\\x03\" +\n\t\"\\x1a\\x03\\x06(\\x1d\\x03\\x06+\\x1b\\x03\\x06\\x0b\\x05\\x03\\x06\\x0b\\x17\\x03\\x06\" +\n\t\"\\x0c\\x04\\x03\\x06\\x1e\\x19\\x03\\x06+0\\x03\\x062\\x18\\x03\\x0b\\x16\\x1e\\x03\\x0a+\" +\n\t\"\\x16\\x03\\x0a-?\\x03\\x0a#:\\x03\\x0a#\\x10\\x03\\x0a%$\\x03\\x0a>+\\x03\\x0a01\\x03\" +\n\t\"\\x0a1\\x10\\x03\\x0a\\x099\\x03\\x0a\\x0a\\x12\\x03\\x0a\\x19\\x1f\\x03\\x0a\\x19\\x12\" +\n\t\"\\x03\\x09*)\\x03\\x09-\\x16\\x03\\x09.1\\x03\\x09.2\\x03\\x09<\\x0e\\x03\\x09> \\x03\" +\n\t\"\\x093\\x12\\x03\\x09\\x0b\\x01\\x03\\x09\\x1c2\\x03\\x09\\x11\\x1c\\x03\\x09\\x15%\\x03\" +\n\t\"\\x08,&\\x03\\x08!\\x22\\x03\\x089(\\x03\\x08\\x0b\\x1a\\x03\\x08\\x0d2\\x03\\x08\\x0c\" +\n\t\"\\x04\\x03\\x08\\x0c\\x06\\x03\\x08\\x0c\\x1f\\x03\\x08\\x0c\\x0c\\x03\\x08\\x0f\\x1f\\x03\" +\n\t\"\\x08\\x0f\\x1d\\x03\\x08\\x00\\x14\\x03\\x08\\x03\\x14\\x03\\x08\\x06\\x16\\x03\\x08\\x1e\" +\n\t\"#\\x03\\x08\\x11\\x11\\x03\\x08\\x10\\x18\\x03\\x08\\x14(\\x03\\x07)\\x1e\\x03\\x07.1\" +\n\t\"\\x03\\x07 $\\x03\\x07 '\\x03\\x078\\x08\\x03\\x07\\x0d0\\x03\\x07\\x0f7\\x03\\x07\\x05#\" +\n\t\"\\x03\\x07\\x05\\x1a\\x03\\x07\\x1a7\\x03\\x07\\x1d-\\x03\\x07\\x17\\x10\\x03\\x06)\\x1f\" +\n\t\"\\x03\\x062\\x0b\\x03\\x066\\x16\\x03\\x06\\x09\\x11\\x03\\x09(\\x1e\\x03\\x07!5\\x03\" +\n\t\"\\x0b\\x11\\x16\\x03\\x0a/\\x04\\x03\\x0a,\\x1a\\x03\\x0b\\x173\\x03\\x0a,1\\x03\\x0a/5\" +\n\t\"\\x03\\x0a\\x221\\x03\\x0a\\x22\\x0d\\x03\\x0a?%\\x03\\x0a<,\\x03\\x0a?#\\x03\\x0a>\\x19\" +\n\t\"\\x03\\x0a\\x08&\\x03\\x0a\\x0b\\x0e\\x03\\x0a\\x0c:\\x03\\x0a\\x0c+\\x03\\x0a\\x03\\x22\" +\n\t\"\\x03\\x0a\\x06)\\x03\\x0a\\x11\\x10\\x03\\x0a\\x11\\x1a\\x03\\x0a\\x17-\\x03\\x0a\\x14(\" +\n\t\"\\x03\\x09)\\x1e\\x03\\x09/\\x09\\x03\\x09.\\x00\\x03\\x09,\\x07\\x03\\x09/*\\x03\\x09-9\" +\n\t\"\\x03\\x09\\x228\\x03\\x09%\\x09\\x03\\x09:\\x12\\x03\\x09;\\x1d\\x03\\x09?\\x06\\x03\" +\n\t\"\\x093%\\x03\\x096\\x05\\x03\\x096\\x08\\x03\\x097\\x02\\x03\\x09\\x07,\\x03\\x09\\x04,\" +\n\t\"\\x03\\x09\\x1f\\x16\\x03\\x09\\x11\\x03\\x03\\x09\\x11\\x12\\x03\\x09\\x168\\x03\\x08*\" +\n\t\"\\x05\\x03\\x08/2\\x03\\x084:\\x03\\x08\\x22+\\x03\\x08 0\\x03\\x08&\\x0a\\x03\\x08;\" +\n\t\"\\x10\\x03\\x08>$\\x03\\x08>\\x18\\x03\\x0829\\x03\\x082:\\x03\\x081,\\x03\\x081<\\x03\" +\n\t\"\\x081\\x1c\\x03\\x087#\\x03\\x087*\\x03\\x08\\x09'\\x03\\x08\\x00\\x1d\\x03\\x08\\x05-\" +\n\t\"\\x03\\x08\\x1f4\\x03\\x08\\x1d\\x04\\x03\\x08\\x16\\x0f\\x03\\x07*7\\x03\\x07'!\\x03\" +\n\t\"\\x07%\\x1b\\x03\\x077\\x0c\\x03\\x07\\x0c1\\x03\\x07\\x0c.\\x03\\x07\\x00\\x06\\x03\\x07\" +\n\t\"\\x01\\x02\\x03\\x07\\x010\\x03\\x07\\x06=\\x03\\x07\\x01\\x03\\x03\\x07\\x01\\x13\\x03\" +\n\t\"\\x07\\x06\\x06\\x03\\x07\\x05\\x0a\\x03\\x07\\x1f\\x09\\x03\\x07\\x17:\\x03\\x06*1\\x03\" +\n\t\"\\x06-\\x1d\\x03\\x06\\x223\\x03\\x062:\\x03\\x060$\\x03\\x066\\x1e\\x03\\x064\\x12\\x03\" +\n\t\"\\x0645\\x03\\x06\\x0b\\x00\\x03\\x06\\x0b7\\x03\\x06\\x07\\x1f\\x03\\x06\\x15\\x12\\x03\" +\n\t\"\\x0c\\x05\\x0f\\x03\\x0b+\\x0b\\x03\\x0b+-\\x03\\x06\\x16\\x1b\\x03\\x06\\x15\\x17\\x03\" +\n\t\"\\x89\\xca\\xea\\x03\\x89\\xca\\xe8\\x03\\x0c8\\x10\\x03\\x0c8\\x01\\x03\\x0c8\\x0f\\x03\" +\n\t\"\\x0d8%\\x03\\x0d8!\\x03\\x0c8-\\x03\\x0c8/\\x03\\x0c8+\\x03\\x0c87\\x03\\x0c85\\x03\" +\n\t\"\\x0c9\\x09\\x03\\x0c9\\x0d\\x03\\x0c9\\x0f\\x03\\x0c9\\x0b\\x03\\xcfu\\x0c\\x03\\xcfu\" +\n\t\"\\x0f\\x03\\xcfu\\x0e\\x03\\xcfu\\x09\\x03\\x0c9\\x10\\x03\\x0d9\\x0c\\x03\\xcf`;\\x03\" +\n\t\"\\xcf`>\\x03\\xcf`9\\x03\\xcf`8\\x03\\xcf`7\\x03\\xcf`*\\x03\\xcf`-\\x03\\xcf`,\\x03\" +\n\t\"\\x0d\\x1b\\x1a\\x03\\x0d\\x1b&\\x03\\x0c=.\\x03\\x0c=%\\x03\\x0c>\\x1e\\x03\\x0c>\\x14\" +\n\t\"\\x03\\x0c?\\x06\\x03\\x0c?\\x0b\\x03\\x0c?\\x0c\\x03\\x0c?\\x0d\\x03\\x0c?\\x02\\x03\" +\n\t\"\\x0c>\\x0f\\x03\\x0c>\\x08\\x03\\x0c>\\x09\\x03\\x0c>,\\x03\\x0c>\\x0c\\x03\\x0c?\\x13\" +\n\t\"\\x03\\x0c?\\x16\\x03\\x0c?\\x15\\x03\\x0c?\\x1c\\x03\\x0c?\\x1f\\x03\\x0c?\\x1d\\x03\" +\n\t\"\\x0c?\\x1a\\x03\\x0c?\\x17\\x03\\x0c?\\x08\\x03\\x0c?\\x09\\x03\\x0c?\\x0e\\x03\\x0c?\" +\n\t\"\\x04\\x03\\x0c?\\x05\\x03\\x0c<?\\x03\\x0c=\\x00\\x03\\x0c=\\x06\\x03\\x0c=\\x05\\x03\" +\n\t\"\\x0c=\\x0c\\x03\\x0c=\\x0f\\x03\\x0c=\\x0d\\x03\\x0c=\\x0b\\x03\\x0c=\\x07\\x03\\x0c=\" +\n\t\"\\x19\\x03\\x0c=\\x15\\x03\\x0c=\\x11\\x03\\x0c=1\\x03\\x0c=3\\x03\\x0c=0\\x03\\x0c=>\" +\n\t\"\\x03\\x0c=2\\x03\\x0c=6\\x03\\x0c<\\x07\\x03\\x0c<\\x05\\x03\\x0e:!\\x03\\x0e:#\\x03\" +\n\t\"\\x0e8\\x09\\x03\\x0e:&\\x03\\x0e8\\x0b\\x03\\x0e:$\\x03\\x0e:,\\x03\\x0e8\\x1a\\x03\" +\n\t\"\\x0e8\\x1e\\x03\\x0e:*\\x03\\x0e:7\\x03\\x0e:5\\x03\\x0e:;\\x03\\x0e:\\x15\\x03\\x0e:<\" +\n\t\"\\x03\\x0e:4\\x03\\x0e:'\\x03\\x0e:-\\x03\\x0e:%\\x03\\x0e:?\\x03\\x0e:=\\x03\\x0e:)\" +\n\t\"\\x03\\x0e:/\\x03\\xcfs'\\x03\\x0d=\\x0f\\x03\\x0d+*\\x03\\x0d99\\x03\\x0d9;\\x03\\x0d9\" +\n\t\"?\\x03\\x0d)\\x0d\\x03\\x0d(%\\x02\\x01\\x18\\x02\\x01(\\x02\\x03'\\x02\\x03)\\x02\\x03+\" +\n\t\"\\x02\\x03/\\x02\\x03\\x19\\x02\\x03\\x1b\\x02\\x03\\x1f\\x03\\x0d\\x22\\x18\\x03\\x0d\" +\n\t\"\\x22\\x1a\\x03\\x0d\\x22'\\x03\\x0d\\x22/\\x03\\x0d\\x223\\x03\\x0d\\x22$\\x02\\x01\\x1e\" +\n\t\"\\x03\\x0f$!\\x03\\x0f87\\x03\\x0f4\\x0e\\x03\\x0f5\\x1d\\x03\\x06'\\x03\\x03\\x0f\\x08\" +\n\t\"\\x18\\x03\\x0f\\x0d\\x1b\\x03\\x0e2=\\x03\\x0e;\\x08\\x03\\x0e:\\x0b\\x03\\x0e\\x06$\" +\n\t\"\\x03\\x0e\\x0d)\\x03\\x0e\\x16\\x1f\\x03\\x0e\\x16\\x1b\\x03\\x0d$\\x0a\\x03\\x05,\\x1d\" +\n\t\"\\x03\\x0d. \\x03\\x0d.#\\x03\\x0c(/\\x03\\x09%\\x02\\x03\\x0d90\\x03\\x0d\\x0e4\\x03\" +\n\t\"\\x0d\\x0d\\x0f\\x03\\x0c#\\x00\\x03\\x0c,\\x1e\\x03\\x0c2\\x0e\\x03\\x0c\\x01\\x17\\x03\" +\n\t\"\\x0c\\x09:\\x03\\x0e\\x173\\x03\\x0c\\x08\\x03\\x03\\x0c\\x11\\x07\\x03\\x0c\\x10\\x18\" +\n\t\"\\x03\\x0c\\x1f\\x1c\\x03\\x0c\\x19\\x0e\\x03\\x0c\\x1a\\x1f\\x03\\x0f0>\\x03\\x0b->\\x03\" +\n\t\"\\x0b<+\\x03\\x0b8\\x13\\x03\\x0b\\x043\\x03\\x0b\\x14\\x03\\x03\\x0b\\x16%\\x03\\x0d\" +\n\t\"\\x22&\\x03\\x0b\\x1a\\x1a\\x03\\x0b\\x1a\\x04\\x03\\x0a%9\\x03\\x0a&2\\x03\\x0a&0\\x03\" +\n\t\"\\x0a!\\x1a\\x03\\x0a!7\\x03\\x0a5\\x10\\x03\\x0a=4\\x03\\x0a?\\x0e\\x03\\x0a>\\x10\\x03\" +\n\t\"\\x0a\\x00 \\x03\\x0a\\x0f:\\x03\\x0a\\x0f9\\x03\\x0a\\x0b\\x0a\\x03\\x0a\\x17%\\x03\\x0a\" +\n\t\"\\x1b-\\x03\\x09-\\x1a\\x03\\x09,4\\x03\\x09.,\\x03\\x09)\\x09\\x03\\x096!\\x03\\x091\" +\n\t\"\\x1f\\x03\\x093\\x16\\x03\\x0c+\\x1f\\x03\\x098 \\x03\\x098=\\x03\\x0c(\\x1a\\x03\\x0c(\" +\n\t\"\\x16\\x03\\x09\\x0a+\\x03\\x09\\x16\\x12\\x03\\x09\\x13\\x0e\\x03\\x09\\x153\\x03\\x08)!\" +\n\t\"\\x03\\x09\\x1a\\x01\\x03\\x09\\x18\\x01\\x03\\x08%#\\x03\\x08>\\x22\\x03\\x08\\x05%\\x03\" +\n\t\"\\x08\\x02*\\x03\\x08\\x15;\\x03\\x08\\x1b7\\x03\\x0f\\x07\\x1d\\x03\\x0f\\x04\\x03\\x03\" +\n\t\"\\x070\\x0c\\x03\\x07;\\x0b\\x03\\x07\\x08\\x17\\x03\\x07\\x12\\x06\\x03\\x06/-\\x03\\x06\" +\n\t\"71\\x03\\x065+\\x03\\x06>7\\x03\\x06\\x049\\x03\\x05+\\x1e\\x03\\x05,\\x17\\x03\\x05 \" +\n\t\"\\x1d\\x03\\x05\\x22\\x05\\x03\\x050\\x1d\"\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// idnaTrie. Total size: 31598 bytes (30.86 KiB). Checksum: d3118eda0d6b5360.\ntype idnaTrie struct{}\n\nfunc newIdnaTrie(i int) *idnaTrie {\n\treturn &idnaTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *idnaTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 133:\n\t\treturn uint16(idnaValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 133\n\t\treturn uint16(idnaSparse.lookup(n, b))\n\t}\n}\n\n// idnaValues: 135 blocks, 8640 entries, 17280 bytes\n// The third block is the zero block.\nvar idnaValues = [8640]uint16{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080,\n\t0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080,\n\t0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080,\n\t0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080,\n\t0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080,\n\t0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080,\n\t0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080,\n\t0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080,\n\t0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008,\n\t0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080,\n\t0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105,\n\t0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105,\n\t0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105,\n\t0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105,\n\t0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080,\n\t0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008,\n\t0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008,\n\t0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008,\n\t0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008,\n\t0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080,\n\t0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040,\n\t0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040,\n\t0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040,\n\t0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040,\n\t0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040,\n\t0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018,\n\t0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x0012, 0xe9: 0x0018,\n\t0xea: 0x0019, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x0022,\n\t0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0029, 0xf3: 0x0031, 0xf4: 0x003a, 0xf5: 0x0005,\n\t0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x0042, 0xf9: 0x0049, 0xfa: 0x0051, 0xfb: 0x0018,\n\t0xfc: 0x0059, 0xfd: 0x0061, 0xfe: 0x0069, 0xff: 0x0018,\n\t// Block 0x4, offset 0x100\n\t0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008,\n\t0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008,\n\t0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008,\n\t0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008,\n\t0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008,\n\t0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008,\n\t0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008,\n\t0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008,\n\t0x130: 0x0071, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008,\n\t0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d,\n\t0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0079,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x0079, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d,\n\t0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x0081, 0x14a: 0xe00d, 0x14b: 0x0008,\n\t0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008,\n\t0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008,\n\t0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008,\n\t0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008,\n\t0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008,\n\t0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008,\n\t0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008,\n\t0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d,\n\t0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x0089,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008,\n\t0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d,\n\t0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d,\n\t0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d,\n\t0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155,\n\t0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008,\n\t0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d,\n\t0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd,\n\t0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d,\n\t0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008,\n\t0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x0091, 0x1c5: 0x0091,\n\t0x1c6: 0x0091, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d,\n\t0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d,\n\t0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d,\n\t0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008,\n\t0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008,\n\t0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008,\n\t0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008,\n\t0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008,\n\t0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008,\n\t0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008,\n\t0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008,\n\t0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008,\n\t0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008,\n\t0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008,\n\t0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008,\n\t0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008,\n\t0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008,\n\t0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008,\n\t0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0099, 0x23b: 0xe03d,\n\t0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x00a1, 0x23f: 0x0008,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018,\n\t0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008,\n\t0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008,\n\t0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018,\n\t0x258: 0x00d2, 0x259: 0x00da, 0x25a: 0x00e2, 0x25b: 0x00ea, 0x25c: 0x00f2, 0x25d: 0x00fa,\n\t0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0101, 0x262: 0x0089, 0x263: 0x0109,\n\t0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018,\n\t0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018,\n\t0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018,\n\t0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018,\n\t0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0111, 0x285: 0x040d,\n\t0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308,\n\t0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308,\n\t0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308,\n\t0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308,\n\t0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308,\n\t0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308,\n\t0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308,\n\t0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008,\n\t0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x011a, 0x2bb: 0x0008,\n\t0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x0122, 0x2bf: 0x043d,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x003a, 0x2c5: 0x012a,\n\t0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040,\n\t0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105,\n\t0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105,\n\t0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105,\n\t0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d,\n\t0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d,\n\t0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008,\n\t0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008,\n\t0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008,\n\t0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008,\n\t0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008,\n\t0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd,\n\t0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008,\n\t0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008,\n\t0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008,\n\t0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008,\n\t0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008,\n\t0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd,\n\t0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008,\n\t0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008,\n\t0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008,\n\t0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008,\n\t0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008,\n\t0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008,\n\t0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008,\n\t0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008,\n\t0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008,\n\t0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008,\n\t0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008,\n\t0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308,\n\t0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008,\n\t0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008,\n\t0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008,\n\t0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008,\n\t0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008,\n\t0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008,\n\t0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008,\n\t0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008,\n\t0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008,\n\t0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d,\n\t0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d,\n\t0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008,\n\t0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008,\n\t0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008,\n\t0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008,\n\t0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008,\n\t0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008,\n\t0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008,\n\t0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008,\n\t0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008,\n\t0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008,\n\t0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008,\n\t0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008,\n\t0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008,\n\t0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008,\n\t0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008,\n\t0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008,\n\t0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5,\n\t0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5,\n\t0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840,\n\t0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818,\n\t0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308,\n\t0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308,\n\t0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0818,\n\t0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08,\n\t0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08,\n\t0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08,\n\t0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08,\n\t0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08,\n\t0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08,\n\t0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308,\n\t0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308,\n\t0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308,\n\t0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308,\n\t0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808,\n\t0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808,\n\t0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08,\n\t0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0139,\n\t0x4b6: 0x0141, 0x4b7: 0x0149, 0x4b8: 0x0151, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08,\n\t0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08,\n\t0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08,\n\t0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08,\n\t0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308,\n\t0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840,\n\t0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308,\n\t0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018,\n\t0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08,\n\t0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008,\n\t0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08,\n\t0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818,\n\t0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818,\n\t0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308,\n\t0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08,\n\t0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08,\n\t0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08,\n\t0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08,\n\t0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08,\n\t0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308,\n\t0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308,\n\t0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08,\n\t0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08,\n\t0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08,\n\t0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0c08, 0x557: 0x0c08,\n\t0x558: 0x0c08, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040,\n\t0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08,\n\t0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08,\n\t0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040,\n\t0x570: 0x0c08, 0x571: 0x0c08, 0x572: 0x0c08, 0x573: 0x0c08, 0x574: 0x0c08, 0x575: 0x0c08,\n\t0x576: 0x0c08, 0x577: 0x0c08, 0x578: 0x0c08, 0x579: 0x0c08, 0x57a: 0x0c08, 0x57b: 0x0c08,\n\t0x57c: 0x0c08, 0x57d: 0x0c08, 0x57e: 0x0c08, 0x57f: 0x0c08,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x0c08, 0x581: 0x0c08, 0x582: 0x0c08, 0x583: 0x0808, 0x584: 0x0808, 0x585: 0x0808,\n\t0x586: 0x0a08, 0x587: 0x0808, 0x588: 0x0818, 0x589: 0x0a08, 0x58a: 0x0a08, 0x58b: 0x0a08,\n\t0x58c: 0x0a08, 0x58d: 0x0a08, 0x58e: 0x0c08, 0x58f: 0x0040, 0x590: 0x0840, 0x591: 0x0840,\n\t0x592: 0x0040, 0x593: 0x0040, 0x594: 0x0040, 0x595: 0x0040, 0x596: 0x0040, 0x597: 0x0040,\n\t0x598: 0x3308, 0x599: 0x3308, 0x59a: 0x3308, 0x59b: 0x3308, 0x59c: 0x3308, 0x59d: 0x3308,\n\t0x59e: 0x3308, 0x59f: 0x3308, 0x5a0: 0x0a08, 0x5a1: 0x0a08, 0x5a2: 0x0a08, 0x5a3: 0x0a08,\n\t0x5a4: 0x0a08, 0x5a5: 0x0a08, 0x5a6: 0x0a08, 0x5a7: 0x0a08, 0x5a8: 0x0a08, 0x5a9: 0x0a08,\n\t0x5aa: 0x0c08, 0x5ab: 0x0c08, 0x5ac: 0x0c08, 0x5ad: 0x0808, 0x5ae: 0x0c08, 0x5af: 0x0a08,\n\t0x5b0: 0x0a08, 0x5b1: 0x0c08, 0x5b2: 0x0c08, 0x5b3: 0x0a08, 0x5b4: 0x0a08, 0x5b5: 0x0a08,\n\t0x5b6: 0x0a08, 0x5b7: 0x0a08, 0x5b8: 0x0a08, 0x5b9: 0x0c08, 0x5ba: 0x0a08, 0x5bb: 0x0a08,\n\t0x5bc: 0x0a08, 0x5bd: 0x0a08, 0x5be: 0x0a08, 0x5bf: 0x0a08,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x3008, 0x5c1: 0x3308, 0x5c2: 0x3308, 0x5c3: 0x3308, 0x5c4: 0x3308, 0x5c5: 0x3308,\n\t0x5c6: 0x3308, 0x5c7: 0x3308, 0x5c8: 0x3308, 0x5c9: 0x3008, 0x5ca: 0x3008, 0x5cb: 0x3008,\n\t0x5cc: 0x3008, 0x5cd: 0x3b08, 0x5ce: 0x3008, 0x5cf: 0x3008, 0x5d0: 0x0008, 0x5d1: 0x3308,\n\t0x5d2: 0x3308, 0x5d3: 0x3308, 0x5d4: 0x3308, 0x5d5: 0x3308, 0x5d6: 0x3308, 0x5d7: 0x3308,\n\t0x5d8: 0x0159, 0x5d9: 0x0161, 0x5da: 0x0169, 0x5db: 0x0171, 0x5dc: 0x0179, 0x5dd: 0x0181,\n\t0x5de: 0x0189, 0x5df: 0x0191, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x3308, 0x5e3: 0x3308,\n\t0x5e4: 0x0018, 0x5e5: 0x0018, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0008,\n\t0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008,\n\t0x5f0: 0x0018, 0x5f1: 0x0008, 0x5f2: 0x0008, 0x5f3: 0x0008, 0x5f4: 0x0008, 0x5f5: 0x0008,\n\t0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0008, 0x5fb: 0x0008,\n\t0x5fc: 0x0008, 0x5fd: 0x0008, 0x5fe: 0x0008, 0x5ff: 0x0008,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x0008, 0x601: 0x3308, 0x602: 0x3008, 0x603: 0x3008, 0x604: 0x0040, 0x605: 0x0008,\n\t0x606: 0x0008, 0x607: 0x0008, 0x608: 0x0008, 0x609: 0x0008, 0x60a: 0x0008, 0x60b: 0x0008,\n\t0x60c: 0x0008, 0x60d: 0x0040, 0x60e: 0x0040, 0x60f: 0x0008, 0x610: 0x0008, 0x611: 0x0040,\n\t0x612: 0x0040, 0x613: 0x0008, 0x614: 0x0008, 0x615: 0x0008, 0x616: 0x0008, 0x617: 0x0008,\n\t0x618: 0x0008, 0x619: 0x0008, 0x61a: 0x0008, 0x61b: 0x0008, 0x61c: 0x0008, 0x61d: 0x0008,\n\t0x61e: 0x0008, 0x61f: 0x0008, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x0008, 0x623: 0x0008,\n\t0x624: 0x0008, 0x625: 0x0008, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0040,\n\t0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008,\n\t0x630: 0x0008, 0x631: 0x0040, 0x632: 0x0008, 0x633: 0x0040, 0x634: 0x0040, 0x635: 0x0040,\n\t0x636: 0x0008, 0x637: 0x0008, 0x638: 0x0008, 0x639: 0x0008, 0x63a: 0x0040, 0x63b: 0x0040,\n\t0x63c: 0x3308, 0x63d: 0x0008, 0x63e: 0x3008, 0x63f: 0x3008,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x3008, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3308, 0x644: 0x3308, 0x645: 0x0040,\n\t0x646: 0x0040, 0x647: 0x3008, 0x648: 0x3008, 0x649: 0x0040, 0x64a: 0x0040, 0x64b: 0x3008,\n\t0x64c: 0x3008, 0x64d: 0x3b08, 0x64e: 0x0008, 0x64f: 0x0040, 0x650: 0x0040, 0x651: 0x0040,\n\t0x652: 0x0040, 0x653: 0x0040, 0x654: 0x0040, 0x655: 0x0040, 0x656: 0x0040, 0x657: 0x3008,\n\t0x658: 0x0040, 0x659: 0x0040, 0x65a: 0x0040, 0x65b: 0x0040, 0x65c: 0x0199, 0x65d: 0x01a1,\n\t0x65e: 0x0040, 0x65f: 0x01a9, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x3308, 0x663: 0x3308,\n\t0x664: 0x0040, 0x665: 0x0040, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0008,\n\t0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008,\n\t0x670: 0x0008, 0x671: 0x0008, 0x672: 0x0018, 0x673: 0x0018, 0x674: 0x0018, 0x675: 0x0018,\n\t0x676: 0x0018, 0x677: 0x0018, 0x678: 0x0018, 0x679: 0x0018, 0x67a: 0x0018, 0x67b: 0x0018,\n\t0x67c: 0x0008, 0x67d: 0x0018, 0x67e: 0x3308, 0x67f: 0x0040,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x0040, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x3008, 0x684: 0x0040, 0x685: 0x0008,\n\t0x686: 0x0008, 0x687: 0x0008, 0x688: 0x0008, 0x689: 0x0008, 0x68a: 0x0008, 0x68b: 0x0040,\n\t0x68c: 0x0040, 0x68d: 0x0040, 0x68e: 0x0040, 0x68f: 0x0008, 0x690: 0x0008, 0x691: 0x0040,\n\t0x692: 0x0040, 0x693: 0x0008, 0x694: 0x0008, 0x695: 0x0008, 0x696: 0x0008, 0x697: 0x0008,\n\t0x698: 0x0008, 0x699: 0x0008, 0x69a: 0x0008, 0x69b: 0x0008, 0x69c: 0x0008, 0x69d: 0x0008,\n\t0x69e: 0x0008, 0x69f: 0x0008, 0x6a0: 0x0008, 0x6a1: 0x0008, 0x6a2: 0x0008, 0x6a3: 0x0008,\n\t0x6a4: 0x0008, 0x6a5: 0x0008, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0040,\n\t0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008,\n\t0x6b0: 0x0008, 0x6b1: 0x0040, 0x6b2: 0x0008, 0x6b3: 0x01b1, 0x6b4: 0x0040, 0x6b5: 0x0008,\n\t0x6b6: 0x01b9, 0x6b7: 0x0040, 0x6b8: 0x0008, 0x6b9: 0x0008, 0x6ba: 0x0040, 0x6bb: 0x0040,\n\t0x6bc: 0x3308, 0x6bd: 0x0040, 0x6be: 0x3008, 0x6bf: 0x3008,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3008, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x0040, 0x6c4: 0x0040, 0x6c5: 0x0040,\n\t0x6c6: 0x0040, 0x6c7: 0x3308, 0x6c8: 0x3308, 0x6c9: 0x0040, 0x6ca: 0x0040, 0x6cb: 0x3308,\n\t0x6cc: 0x3308, 0x6cd: 0x3b08, 0x6ce: 0x0040, 0x6cf: 0x0040, 0x6d0: 0x0040, 0x6d1: 0x3308,\n\t0x6d2: 0x0040, 0x6d3: 0x0040, 0x6d4: 0x0040, 0x6d5: 0x0040, 0x6d6: 0x0040, 0x6d7: 0x0040,\n\t0x6d8: 0x0040, 0x6d9: 0x01c1, 0x6da: 0x01c9, 0x6db: 0x01d1, 0x6dc: 0x0008, 0x6dd: 0x0040,\n\t0x6de: 0x01d9, 0x6df: 0x0040, 0x6e0: 0x0040, 0x6e1: 0x0040, 0x6e2: 0x0040, 0x6e3: 0x0040,\n\t0x6e4: 0x0040, 0x6e5: 0x0040, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0008,\n\t0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008,\n\t0x6f0: 0x3308, 0x6f1: 0x3308, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0008, 0x6f5: 0x3308,\n\t0x6f6: 0x0018, 0x6f7: 0x0040, 0x6f8: 0x0040, 0x6f9: 0x0040, 0x6fa: 0x0040, 0x6fb: 0x0040,\n\t0x6fc: 0x0040, 0x6fd: 0x0040, 0x6fe: 0x0040, 0x6ff: 0x0040,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x0040, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3008, 0x704: 0x0040, 0x705: 0x0008,\n\t0x706: 0x0008, 0x707: 0x0008, 0x708: 0x0008, 0x709: 0x0008, 0x70a: 0x0008, 0x70b: 0x0008,\n\t0x70c: 0x0008, 0x70d: 0x0008, 0x70e: 0x0040, 0x70f: 0x0008, 0x710: 0x0008, 0x711: 0x0008,\n\t0x712: 0x0040, 0x713: 0x0008, 0x714: 0x0008, 0x715: 0x0008, 0x716: 0x0008, 0x717: 0x0008,\n\t0x718: 0x0008, 0x719: 0x0008, 0x71a: 0x0008, 0x71b: 0x0008, 0x71c: 0x0008, 0x71d: 0x0008,\n\t0x71e: 0x0008, 0x71f: 0x0008, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x0008, 0x723: 0x0008,\n\t0x724: 0x0008, 0x725: 0x0008, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0040,\n\t0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008,\n\t0x730: 0x0008, 0x731: 0x0040, 0x732: 0x0008, 0x733: 0x0008, 0x734: 0x0040, 0x735: 0x0008,\n\t0x736: 0x0008, 0x737: 0x0008, 0x738: 0x0008, 0x739: 0x0008, 0x73a: 0x0040, 0x73b: 0x0040,\n\t0x73c: 0x3308, 0x73d: 0x0008, 0x73e: 0x3008, 0x73f: 0x3008,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x3008, 0x741: 0x3308, 0x742: 0x3308, 0x743: 0x3308, 0x744: 0x3308, 0x745: 0x3308,\n\t0x746: 0x0040, 0x747: 0x3308, 0x748: 0x3308, 0x749: 0x3008, 0x74a: 0x0040, 0x74b: 0x3008,\n\t0x74c: 0x3008, 0x74d: 0x3b08, 0x74e: 0x0040, 0x74f: 0x0040, 0x750: 0x0008, 0x751: 0x0040,\n\t0x752: 0x0040, 0x753: 0x0040, 0x754: 0x0040, 0x755: 0x0040, 0x756: 0x0040, 0x757: 0x0040,\n\t0x758: 0x0040, 0x759: 0x0040, 0x75a: 0x0040, 0x75b: 0x0040, 0x75c: 0x0040, 0x75d: 0x0040,\n\t0x75e: 0x0040, 0x75f: 0x0040, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x3308, 0x763: 0x3308,\n\t0x764: 0x0040, 0x765: 0x0040, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0008,\n\t0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008,\n\t0x770: 0x0018, 0x771: 0x0018, 0x772: 0x0040, 0x773: 0x0040, 0x774: 0x0040, 0x775: 0x0040,\n\t0x776: 0x0040, 0x777: 0x0040, 0x778: 0x0040, 0x779: 0x0008, 0x77a: 0x3308, 0x77b: 0x3308,\n\t0x77c: 0x3308, 0x77d: 0x3308, 0x77e: 0x3308, 0x77f: 0x3308,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x0040, 0x781: 0x3308, 0x782: 0x3008, 0x783: 0x3008, 0x784: 0x0040, 0x785: 0x0008,\n\t0x786: 0x0008, 0x787: 0x0008, 0x788: 0x0008, 0x789: 0x0008, 0x78a: 0x0008, 0x78b: 0x0008,\n\t0x78c: 0x0008, 0x78d: 0x0040, 0x78e: 0x0040, 0x78f: 0x0008, 0x790: 0x0008, 0x791: 0x0040,\n\t0x792: 0x0040, 0x793: 0x0008, 0x794: 0x0008, 0x795: 0x0008, 0x796: 0x0008, 0x797: 0x0008,\n\t0x798: 0x0008, 0x799: 0x0008, 0x79a: 0x0008, 0x79b: 0x0008, 0x79c: 0x0008, 0x79d: 0x0008,\n\t0x79e: 0x0008, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x0008, 0x7a3: 0x0008,\n\t0x7a4: 0x0008, 0x7a5: 0x0008, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0040,\n\t0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008,\n\t0x7b0: 0x0008, 0x7b1: 0x0040, 0x7b2: 0x0008, 0x7b3: 0x0008, 0x7b4: 0x0040, 0x7b5: 0x0008,\n\t0x7b6: 0x0008, 0x7b7: 0x0008, 0x7b8: 0x0008, 0x7b9: 0x0008, 0x7ba: 0x0040, 0x7bb: 0x0040,\n\t0x7bc: 0x3308, 0x7bd: 0x0008, 0x7be: 0x3008, 0x7bf: 0x3308,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x3008, 0x7c1: 0x3308, 0x7c2: 0x3308, 0x7c3: 0x3308, 0x7c4: 0x3308, 0x7c5: 0x0040,\n\t0x7c6: 0x0040, 0x7c7: 0x3008, 0x7c8: 0x3008, 0x7c9: 0x0040, 0x7ca: 0x0040, 0x7cb: 0x3008,\n\t0x7cc: 0x3008, 0x7cd: 0x3b08, 0x7ce: 0x0040, 0x7cf: 0x0040, 0x7d0: 0x0040, 0x7d1: 0x0040,\n\t0x7d2: 0x0040, 0x7d3: 0x0040, 0x7d4: 0x0040, 0x7d5: 0x3308, 0x7d6: 0x3308, 0x7d7: 0x3008,\n\t0x7d8: 0x0040, 0x7d9: 0x0040, 0x7da: 0x0040, 0x7db: 0x0040, 0x7dc: 0x01e1, 0x7dd: 0x01e9,\n\t0x7de: 0x0040, 0x7df: 0x0008, 0x7e0: 0x0008, 0x7e1: 0x0008, 0x7e2: 0x3308, 0x7e3: 0x3308,\n\t0x7e4: 0x0040, 0x7e5: 0x0040, 0x7e6: 0x0008, 0x7e7: 0x0008, 0x7e8: 0x0008, 0x7e9: 0x0008,\n\t0x7ea: 0x0008, 0x7eb: 0x0008, 0x7ec: 0x0008, 0x7ed: 0x0008, 0x7ee: 0x0008, 0x7ef: 0x0008,\n\t0x7f0: 0x0018, 0x7f1: 0x0008, 0x7f2: 0x0018, 0x7f3: 0x0018, 0x7f4: 0x0018, 0x7f5: 0x0018,\n\t0x7f6: 0x0018, 0x7f7: 0x0018, 0x7f8: 0x0040, 0x7f9: 0x0040, 0x7fa: 0x0040, 0x7fb: 0x0040,\n\t0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x0040, 0x7ff: 0x0040,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x0040, 0x801: 0x0040, 0x802: 0x3308, 0x803: 0x0008, 0x804: 0x0040, 0x805: 0x0008,\n\t0x806: 0x0008, 0x807: 0x0008, 0x808: 0x0008, 0x809: 0x0008, 0x80a: 0x0008, 0x80b: 0x0040,\n\t0x80c: 0x0040, 0x80d: 0x0040, 0x80e: 0x0008, 0x80f: 0x0008, 0x810: 0x0008, 0x811: 0x0040,\n\t0x812: 0x0008, 0x813: 0x0008, 0x814: 0x0008, 0x815: 0x0008, 0x816: 0x0040, 0x817: 0x0040,\n\t0x818: 0x0040, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0008, 0x81d: 0x0040,\n\t0x81e: 0x0008, 0x81f: 0x0008, 0x820: 0x0040, 0x821: 0x0040, 0x822: 0x0040, 0x823: 0x0008,\n\t0x824: 0x0008, 0x825: 0x0040, 0x826: 0x0040, 0x827: 0x0040, 0x828: 0x0008, 0x829: 0x0008,\n\t0x82a: 0x0008, 0x82b: 0x0040, 0x82c: 0x0040, 0x82d: 0x0040, 0x82e: 0x0008, 0x82f: 0x0008,\n\t0x830: 0x0008, 0x831: 0x0008, 0x832: 0x0008, 0x833: 0x0008, 0x834: 0x0008, 0x835: 0x0008,\n\t0x836: 0x0008, 0x837: 0x0008, 0x838: 0x0008, 0x839: 0x0008, 0x83a: 0x0040, 0x83b: 0x0040,\n\t0x83c: 0x0040, 0x83d: 0x0040, 0x83e: 0x3008, 0x83f: 0x3008,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x3308, 0x841: 0x3008, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x3008, 0x845: 0x0040,\n\t0x846: 0x3308, 0x847: 0x3308, 0x848: 0x3308, 0x849: 0x0040, 0x84a: 0x3308, 0x84b: 0x3308,\n\t0x84c: 0x3308, 0x84d: 0x3b08, 0x84e: 0x0040, 0x84f: 0x0040, 0x850: 0x0040, 0x851: 0x0040,\n\t0x852: 0x0040, 0x853: 0x0040, 0x854: 0x0040, 0x855: 0x3308, 0x856: 0x3308, 0x857: 0x0040,\n\t0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0040, 0x85c: 0x0040, 0x85d: 0x0008,\n\t0x85e: 0x0040, 0x85f: 0x0040, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x3308, 0x863: 0x3308,\n\t0x864: 0x0040, 0x865: 0x0040, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0008,\n\t0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008,\n\t0x870: 0x0040, 0x871: 0x0040, 0x872: 0x0040, 0x873: 0x0040, 0x874: 0x0040, 0x875: 0x0040,\n\t0x876: 0x0040, 0x877: 0x0018, 0x878: 0x0018, 0x879: 0x0018, 0x87a: 0x0018, 0x87b: 0x0018,\n\t0x87c: 0x0018, 0x87d: 0x0018, 0x87e: 0x0018, 0x87f: 0x0018,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0008, 0x881: 0x3308, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x0018, 0x885: 0x0008,\n\t0x886: 0x0008, 0x887: 0x0008, 0x888: 0x0008, 0x889: 0x0008, 0x88a: 0x0008, 0x88b: 0x0008,\n\t0x88c: 0x0008, 0x88d: 0x0040, 0x88e: 0x0008, 0x88f: 0x0008, 0x890: 0x0008, 0x891: 0x0040,\n\t0x892: 0x0008, 0x893: 0x0008, 0x894: 0x0008, 0x895: 0x0008, 0x896: 0x0008, 0x897: 0x0008,\n\t0x898: 0x0008, 0x899: 0x0008, 0x89a: 0x0008, 0x89b: 0x0008, 0x89c: 0x0008, 0x89d: 0x0008,\n\t0x89e: 0x0008, 0x89f: 0x0008, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x0008, 0x8a3: 0x0008,\n\t0x8a4: 0x0008, 0x8a5: 0x0008, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0040,\n\t0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008,\n\t0x8b0: 0x0008, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0008, 0x8b4: 0x0040, 0x8b5: 0x0008,\n\t0x8b6: 0x0008, 0x8b7: 0x0008, 0x8b8: 0x0008, 0x8b9: 0x0008, 0x8ba: 0x0040, 0x8bb: 0x0040,\n\t0x8bc: 0x3308, 0x8bd: 0x0008, 0x8be: 0x3008, 0x8bf: 0x3308,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x3008, 0x8c1: 0x3008, 0x8c2: 0x3008, 0x8c3: 0x3008, 0x8c4: 0x3008, 0x8c5: 0x0040,\n\t0x8c6: 0x3308, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008,\n\t0x8cc: 0x3308, 0x8cd: 0x3b08, 0x8ce: 0x0040, 0x8cf: 0x0040, 0x8d0: 0x0040, 0x8d1: 0x0040,\n\t0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0040, 0x8d5: 0x3008, 0x8d6: 0x3008, 0x8d7: 0x0040,\n\t0x8d8: 0x0040, 0x8d9: 0x0040, 0x8da: 0x0040, 0x8db: 0x0040, 0x8dc: 0x0040, 0x8dd: 0x0008,\n\t0x8de: 0x0008, 0x8df: 0x0040, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308,\n\t0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008,\n\t0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008,\n\t0x8f0: 0x0040, 0x8f1: 0x0008, 0x8f2: 0x0008, 0x8f3: 0x3008, 0x8f4: 0x0040, 0x8f5: 0x0040,\n\t0x8f6: 0x0040, 0x8f7: 0x0040, 0x8f8: 0x0040, 0x8f9: 0x0040, 0x8fa: 0x0040, 0x8fb: 0x0040,\n\t0x8fc: 0x0040, 0x8fd: 0x0040, 0x8fe: 0x0040, 0x8ff: 0x0040,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x3008, 0x901: 0x3308, 0x902: 0x3308, 0x903: 0x3308, 0x904: 0x3308, 0x905: 0x0040,\n\t0x906: 0x3008, 0x907: 0x3008, 0x908: 0x3008, 0x909: 0x0040, 0x90a: 0x3008, 0x90b: 0x3008,\n\t0x90c: 0x3008, 0x90d: 0x3b08, 0x90e: 0x0008, 0x90f: 0x0018, 0x910: 0x0040, 0x911: 0x0040,\n\t0x912: 0x0040, 0x913: 0x0040, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x3008,\n\t0x918: 0x0018, 0x919: 0x0018, 0x91a: 0x0018, 0x91b: 0x0018, 0x91c: 0x0018, 0x91d: 0x0018,\n\t0x91e: 0x0018, 0x91f: 0x0008, 0x920: 0x0008, 0x921: 0x0008, 0x922: 0x3308, 0x923: 0x3308,\n\t0x924: 0x0040, 0x925: 0x0040, 0x926: 0x0008, 0x927: 0x0008, 0x928: 0x0008, 0x929: 0x0008,\n\t0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0008, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008,\n\t0x930: 0x0018, 0x931: 0x0018, 0x932: 0x0018, 0x933: 0x0018, 0x934: 0x0018, 0x935: 0x0018,\n\t0x936: 0x0018, 0x937: 0x0018, 0x938: 0x0018, 0x939: 0x0018, 0x93a: 0x0008, 0x93b: 0x0008,\n\t0x93c: 0x0008, 0x93d: 0x0008, 0x93e: 0x0008, 0x93f: 0x0008,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0040, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x0040, 0x944: 0x0008, 0x945: 0x0040,\n\t0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0008, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0040,\n\t0x94c: 0x0008, 0x94d: 0x0008, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008,\n\t0x952: 0x0008, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0008,\n\t0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0008, 0x95d: 0x0008,\n\t0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008,\n\t0x964: 0x0040, 0x965: 0x0008, 0x966: 0x0040, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0008,\n\t0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0008, 0x96e: 0x0008, 0x96f: 0x0008,\n\t0x970: 0x0008, 0x971: 0x3308, 0x972: 0x0008, 0x973: 0x01f9, 0x974: 0x3308, 0x975: 0x3308,\n\t0x976: 0x3308, 0x977: 0x3308, 0x978: 0x3308, 0x979: 0x3308, 0x97a: 0x3b08, 0x97b: 0x3308,\n\t0x97c: 0x3308, 0x97d: 0x0008, 0x97e: 0x0040, 0x97f: 0x0040,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x0008, 0x981: 0x0008, 0x982: 0x0008, 0x983: 0x0211, 0x984: 0x0008, 0x985: 0x0008,\n\t0x986: 0x0008, 0x987: 0x0008, 0x988: 0x0040, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008,\n\t0x98c: 0x0008, 0x98d: 0x0219, 0x98e: 0x0008, 0x98f: 0x0008, 0x990: 0x0008, 0x991: 0x0008,\n\t0x992: 0x0221, 0x993: 0x0008, 0x994: 0x0008, 0x995: 0x0008, 0x996: 0x0008, 0x997: 0x0229,\n\t0x998: 0x0008, 0x999: 0x0008, 0x99a: 0x0008, 0x99b: 0x0008, 0x99c: 0x0231, 0x99d: 0x0008,\n\t0x99e: 0x0008, 0x99f: 0x0008, 0x9a0: 0x0008, 0x9a1: 0x0008, 0x9a2: 0x0008, 0x9a3: 0x0008,\n\t0x9a4: 0x0008, 0x9a5: 0x0008, 0x9a6: 0x0008, 0x9a7: 0x0008, 0x9a8: 0x0008, 0x9a9: 0x0239,\n\t0x9aa: 0x0008, 0x9ab: 0x0008, 0x9ac: 0x0008, 0x9ad: 0x0040, 0x9ae: 0x0040, 0x9af: 0x0040,\n\t0x9b0: 0x0040, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x0241, 0x9b4: 0x3308, 0x9b5: 0x0249,\n\t0x9b6: 0x0251, 0x9b7: 0x0259, 0x9b8: 0x0261, 0x9b9: 0x0269, 0x9ba: 0x3308, 0x9bb: 0x3308,\n\t0x9bc: 0x3308, 0x9bd: 0x3308, 0x9be: 0x3308, 0x9bf: 0x3008,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x3308, 0x9c1: 0x0271, 0x9c2: 0x3308, 0x9c3: 0x3308, 0x9c4: 0x3b08, 0x9c5: 0x0018,\n\t0x9c6: 0x3308, 0x9c7: 0x3308, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008,\n\t0x9cc: 0x0008, 0x9cd: 0x3308, 0x9ce: 0x3308, 0x9cf: 0x3308, 0x9d0: 0x3308, 0x9d1: 0x3308,\n\t0x9d2: 0x3308, 0x9d3: 0x0279, 0x9d4: 0x3308, 0x9d5: 0x3308, 0x9d6: 0x3308, 0x9d7: 0x3308,\n\t0x9d8: 0x0040, 0x9d9: 0x3308, 0x9da: 0x3308, 0x9db: 0x3308, 0x9dc: 0x3308, 0x9dd: 0x0281,\n\t0x9de: 0x3308, 0x9df: 0x3308, 0x9e0: 0x3308, 0x9e1: 0x3308, 0x9e2: 0x0289, 0x9e3: 0x3308,\n\t0x9e4: 0x3308, 0x9e5: 0x3308, 0x9e6: 0x3308, 0x9e7: 0x0291, 0x9e8: 0x3308, 0x9e9: 0x3308,\n\t0x9ea: 0x3308, 0x9eb: 0x3308, 0x9ec: 0x0299, 0x9ed: 0x3308, 0x9ee: 0x3308, 0x9ef: 0x3308,\n\t0x9f0: 0x3308, 0x9f1: 0x3308, 0x9f2: 0x3308, 0x9f3: 0x3308, 0x9f4: 0x3308, 0x9f5: 0x3308,\n\t0x9f6: 0x3308, 0x9f7: 0x3308, 0x9f8: 0x3308, 0x9f9: 0x02a1, 0x9fa: 0x3308, 0x9fb: 0x3308,\n\t0x9fc: 0x3308, 0x9fd: 0x0040, 0x9fe: 0x0018, 0x9ff: 0x0018,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0008, 0xa01: 0x0008, 0xa02: 0x0008, 0xa03: 0x0008, 0xa04: 0x0008, 0xa05: 0x0008,\n\t0xa06: 0x0008, 0xa07: 0x0008, 0xa08: 0x0008, 0xa09: 0x0008, 0xa0a: 0x0008, 0xa0b: 0x0008,\n\t0xa0c: 0x0008, 0xa0d: 0x0008, 0xa0e: 0x0008, 0xa0f: 0x0008, 0xa10: 0x0008, 0xa11: 0x0008,\n\t0xa12: 0x0008, 0xa13: 0x0008, 0xa14: 0x0008, 0xa15: 0x0008, 0xa16: 0x0008, 0xa17: 0x0008,\n\t0xa18: 0x0008, 0xa19: 0x0008, 0xa1a: 0x0008, 0xa1b: 0x0008, 0xa1c: 0x0008, 0xa1d: 0x0008,\n\t0xa1e: 0x0008, 0xa1f: 0x0008, 0xa20: 0x0008, 0xa21: 0x0008, 0xa22: 0x0008, 0xa23: 0x0008,\n\t0xa24: 0x0008, 0xa25: 0x0008, 0xa26: 0x0008, 0xa27: 0x0008, 0xa28: 0x0008, 0xa29: 0x0008,\n\t0xa2a: 0x0008, 0xa2b: 0x0008, 0xa2c: 0x0019, 0xa2d: 0x02e1, 0xa2e: 0x02e9, 0xa2f: 0x0008,\n\t0xa30: 0x02f1, 0xa31: 0x02f9, 0xa32: 0x0301, 0xa33: 0x0309, 0xa34: 0x00a9, 0xa35: 0x0311,\n\t0xa36: 0x00b1, 0xa37: 0x0319, 0xa38: 0x0101, 0xa39: 0x0321, 0xa3a: 0x0329, 0xa3b: 0x0008,\n\t0xa3c: 0x0051, 0xa3d: 0x0331, 0xa3e: 0x0339, 0xa3f: 0x00b9,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0341, 0xa41: 0x0349, 0xa42: 0x00c1, 0xa43: 0x0019, 0xa44: 0x0351, 0xa45: 0x0359,\n\t0xa46: 0x05b5, 0xa47: 0x02e9, 0xa48: 0x02f1, 0xa49: 0x02f9, 0xa4a: 0x0361, 0xa4b: 0x0369,\n\t0xa4c: 0x0371, 0xa4d: 0x0309, 0xa4e: 0x0008, 0xa4f: 0x0319, 0xa50: 0x0321, 0xa51: 0x0379,\n\t0xa52: 0x0051, 0xa53: 0x0381, 0xa54: 0x05cd, 0xa55: 0x05cd, 0xa56: 0x0339, 0xa57: 0x0341,\n\t0xa58: 0x0349, 0xa59: 0x05b5, 0xa5a: 0x0389, 0xa5b: 0x0391, 0xa5c: 0x05e5, 0xa5d: 0x0399,\n\t0xa5e: 0x03a1, 0xa5f: 0x03a9, 0xa60: 0x03b1, 0xa61: 0x03b9, 0xa62: 0x0311, 0xa63: 0x00b9,\n\t0xa64: 0x0349, 0xa65: 0x0391, 0xa66: 0x0399, 0xa67: 0x03a1, 0xa68: 0x03c1, 0xa69: 0x03b1,\n\t0xa6a: 0x03b9, 0xa6b: 0x0008, 0xa6c: 0x0008, 0xa6d: 0x0008, 0xa6e: 0x0008, 0xa6f: 0x0008,\n\t0xa70: 0x0008, 0xa71: 0x0008, 0xa72: 0x0008, 0xa73: 0x0008, 0xa74: 0x0008, 0xa75: 0x0008,\n\t0xa76: 0x0008, 0xa77: 0x0008, 0xa78: 0x03c9, 0xa79: 0x0008, 0xa7a: 0x0008, 0xa7b: 0x0008,\n\t0xa7c: 0x0008, 0xa7d: 0x0008, 0xa7e: 0x0008, 0xa7f: 0x0008,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x0008, 0xa81: 0x0008, 0xa82: 0x0008, 0xa83: 0x0008, 0xa84: 0x0008, 0xa85: 0x0008,\n\t0xa86: 0x0008, 0xa87: 0x0008, 0xa88: 0x0008, 0xa89: 0x0008, 0xa8a: 0x0008, 0xa8b: 0x0008,\n\t0xa8c: 0x0008, 0xa8d: 0x0008, 0xa8e: 0x0008, 0xa8f: 0x0008, 0xa90: 0x0008, 0xa91: 0x0008,\n\t0xa92: 0x0008, 0xa93: 0x0008, 0xa94: 0x0008, 0xa95: 0x0008, 0xa96: 0x0008, 0xa97: 0x0008,\n\t0xa98: 0x0008, 0xa99: 0x0008, 0xa9a: 0x0008, 0xa9b: 0x03d1, 0xa9c: 0x03d9, 0xa9d: 0x03e1,\n\t0xa9e: 0x03e9, 0xa9f: 0x0371, 0xaa0: 0x03f1, 0xaa1: 0x03f9, 0xaa2: 0x0401, 0xaa3: 0x0409,\n\t0xaa4: 0x0411, 0xaa5: 0x0419, 0xaa6: 0x0421, 0xaa7: 0x05fd, 0xaa8: 0x0429, 0xaa9: 0x0431,\n\t0xaaa: 0xe17d, 0xaab: 0x0439, 0xaac: 0x0441, 0xaad: 0x0449, 0xaae: 0x0451, 0xaaf: 0x0459,\n\t0xab0: 0x0461, 0xab1: 0x0469, 0xab2: 0x0471, 0xab3: 0x0479, 0xab4: 0x0481, 0xab5: 0x0489,\n\t0xab6: 0x0491, 0xab7: 0x0499, 0xab8: 0x0615, 0xab9: 0x04a1, 0xaba: 0x04a9, 0xabb: 0x04b1,\n\t0xabc: 0x04b9, 0xabd: 0x04c1, 0xabe: 0x04c9, 0xabf: 0x04d1,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008,\n\t0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008,\n\t0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008,\n\t0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0xe00d, 0xad7: 0x0008,\n\t0xad8: 0xe00d, 0xad9: 0x0008, 0xada: 0xe00d, 0xadb: 0x0008, 0xadc: 0xe00d, 0xadd: 0x0008,\n\t0xade: 0xe00d, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008,\n\t0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008,\n\t0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008,\n\t0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008,\n\t0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008,\n\t0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0xe00d, 0xb01: 0x0008, 0xb02: 0xe00d, 0xb03: 0x0008, 0xb04: 0xe00d, 0xb05: 0x0008,\n\t0xb06: 0xe00d, 0xb07: 0x0008, 0xb08: 0xe00d, 0xb09: 0x0008, 0xb0a: 0xe00d, 0xb0b: 0x0008,\n\t0xb0c: 0xe00d, 0xb0d: 0x0008, 0xb0e: 0xe00d, 0xb0f: 0x0008, 0xb10: 0xe00d, 0xb11: 0x0008,\n\t0xb12: 0xe00d, 0xb13: 0x0008, 0xb14: 0xe00d, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008,\n\t0xb18: 0x0008, 0xb19: 0x0008, 0xb1a: 0x062d, 0xb1b: 0x064d, 0xb1c: 0x0008, 0xb1d: 0x0008,\n\t0xb1e: 0x04d9, 0xb1f: 0x0008, 0xb20: 0xe00d, 0xb21: 0x0008, 0xb22: 0xe00d, 0xb23: 0x0008,\n\t0xb24: 0xe00d, 0xb25: 0x0008, 0xb26: 0xe00d, 0xb27: 0x0008, 0xb28: 0xe00d, 0xb29: 0x0008,\n\t0xb2a: 0xe00d, 0xb2b: 0x0008, 0xb2c: 0xe00d, 0xb2d: 0x0008, 0xb2e: 0xe00d, 0xb2f: 0x0008,\n\t0xb30: 0xe00d, 0xb31: 0x0008, 0xb32: 0xe00d, 0xb33: 0x0008, 0xb34: 0xe00d, 0xb35: 0x0008,\n\t0xb36: 0xe00d, 0xb37: 0x0008, 0xb38: 0xe00d, 0xb39: 0x0008, 0xb3a: 0xe00d, 0xb3b: 0x0008,\n\t0xb3c: 0xe00d, 0xb3d: 0x0008, 0xb3e: 0xe00d, 0xb3f: 0x0008,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x0008, 0xb41: 0x0008, 0xb42: 0x0008, 0xb43: 0x0008, 0xb44: 0x0008, 0xb45: 0x0008,\n\t0xb46: 0x0040, 0xb47: 0x0040, 0xb48: 0xe045, 0xb49: 0xe045, 0xb4a: 0xe045, 0xb4b: 0xe045,\n\t0xb4c: 0xe045, 0xb4d: 0xe045, 0xb4e: 0x0040, 0xb4f: 0x0040, 0xb50: 0x0008, 0xb51: 0x0008,\n\t0xb52: 0x0008, 0xb53: 0x0008, 0xb54: 0x0008, 0xb55: 0x0008, 0xb56: 0x0008, 0xb57: 0x0008,\n\t0xb58: 0x0040, 0xb59: 0xe045, 0xb5a: 0x0040, 0xb5b: 0xe045, 0xb5c: 0x0040, 0xb5d: 0xe045,\n\t0xb5e: 0x0040, 0xb5f: 0xe045, 0xb60: 0x0008, 0xb61: 0x0008, 0xb62: 0x0008, 0xb63: 0x0008,\n\t0xb64: 0x0008, 0xb65: 0x0008, 0xb66: 0x0008, 0xb67: 0x0008, 0xb68: 0xe045, 0xb69: 0xe045,\n\t0xb6a: 0xe045, 0xb6b: 0xe045, 0xb6c: 0xe045, 0xb6d: 0xe045, 0xb6e: 0xe045, 0xb6f: 0xe045,\n\t0xb70: 0x0008, 0xb71: 0x04e1, 0xb72: 0x0008, 0xb73: 0x04e9, 0xb74: 0x0008, 0xb75: 0x04f1,\n\t0xb76: 0x0008, 0xb77: 0x04f9, 0xb78: 0x0008, 0xb79: 0x0501, 0xb7a: 0x0008, 0xb7b: 0x0509,\n\t0xb7c: 0x0008, 0xb7d: 0x0511, 0xb7e: 0x0040, 0xb7f: 0x0040,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x0519, 0xb81: 0x0521, 0xb82: 0x0529, 0xb83: 0x0531, 0xb84: 0x0539, 0xb85: 0x0541,\n\t0xb86: 0x0549, 0xb87: 0x0551, 0xb88: 0x0519, 0xb89: 0x0521, 0xb8a: 0x0529, 0xb8b: 0x0531,\n\t0xb8c: 0x0539, 0xb8d: 0x0541, 0xb8e: 0x0549, 0xb8f: 0x0551, 0xb90: 0x0559, 0xb91: 0x0561,\n\t0xb92: 0x0569, 0xb93: 0x0571, 0xb94: 0x0579, 0xb95: 0x0581, 0xb96: 0x0589, 0xb97: 0x0591,\n\t0xb98: 0x0559, 0xb99: 0x0561, 0xb9a: 0x0569, 0xb9b: 0x0571, 0xb9c: 0x0579, 0xb9d: 0x0581,\n\t0xb9e: 0x0589, 0xb9f: 0x0591, 0xba0: 0x0599, 0xba1: 0x05a1, 0xba2: 0x05a9, 0xba3: 0x05b1,\n\t0xba4: 0x05b9, 0xba5: 0x05c1, 0xba6: 0x05c9, 0xba7: 0x05d1, 0xba8: 0x0599, 0xba9: 0x05a1,\n\t0xbaa: 0x05a9, 0xbab: 0x05b1, 0xbac: 0x05b9, 0xbad: 0x05c1, 0xbae: 0x05c9, 0xbaf: 0x05d1,\n\t0xbb0: 0x0008, 0xbb1: 0x0008, 0xbb2: 0x05d9, 0xbb3: 0x05e1, 0xbb4: 0x05e9, 0xbb5: 0x0040,\n\t0xbb6: 0x0008, 0xbb7: 0x05f1, 0xbb8: 0xe045, 0xbb9: 0xe045, 0xbba: 0x0665, 0xbbb: 0x04e1,\n\t0xbbc: 0x05e1, 0xbbd: 0x067e, 0xbbe: 0x05f9, 0xbbf: 0x069e,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x06be, 0xbc1: 0x0602, 0xbc2: 0x0609, 0xbc3: 0x0611, 0xbc4: 0x0619, 0xbc5: 0x0040,\n\t0xbc6: 0x0008, 0xbc7: 0x0621, 0xbc8: 0x06dd, 0xbc9: 0x04e9, 0xbca: 0x06f5, 0xbcb: 0x04f1,\n\t0xbcc: 0x0611, 0xbcd: 0x062a, 0xbce: 0x0632, 0xbcf: 0x063a, 0xbd0: 0x0008, 0xbd1: 0x0008,\n\t0xbd2: 0x0008, 0xbd3: 0x0641, 0xbd4: 0x0040, 0xbd5: 0x0040, 0xbd6: 0x0008, 0xbd7: 0x0008,\n\t0xbd8: 0xe045, 0xbd9: 0xe045, 0xbda: 0x070d, 0xbdb: 0x04f9, 0xbdc: 0x0040, 0xbdd: 0x064a,\n\t0xbde: 0x0652, 0xbdf: 0x065a, 0xbe0: 0x0008, 0xbe1: 0x0008, 0xbe2: 0x0008, 0xbe3: 0x0661,\n\t0xbe4: 0x0008, 0xbe5: 0x0008, 0xbe6: 0x0008, 0xbe7: 0x0008, 0xbe8: 0xe045, 0xbe9: 0xe045,\n\t0xbea: 0x0725, 0xbeb: 0x0509, 0xbec: 0xe04d, 0xbed: 0x066a, 0xbee: 0x012a, 0xbef: 0x0672,\n\t0xbf0: 0x0040, 0xbf1: 0x0040, 0xbf2: 0x0679, 0xbf3: 0x0681, 0xbf4: 0x0689, 0xbf5: 0x0040,\n\t0xbf6: 0x0008, 0xbf7: 0x0691, 0xbf8: 0x073d, 0xbf9: 0x0501, 0xbfa: 0x0515, 0xbfb: 0x0511,\n\t0xbfc: 0x0681, 0xbfd: 0x0756, 0xbfe: 0x0776, 0xbff: 0x0040,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x000a, 0xc01: 0x000a, 0xc02: 0x000a, 0xc03: 0x000a, 0xc04: 0x000a, 0xc05: 0x000a,\n\t0xc06: 0x000a, 0xc07: 0x000a, 0xc08: 0x000a, 0xc09: 0x000a, 0xc0a: 0x000a, 0xc0b: 0x03c0,\n\t0xc0c: 0x0003, 0xc0d: 0x0003, 0xc0e: 0x0340, 0xc0f: 0x0b40, 0xc10: 0x0018, 0xc11: 0xe00d,\n\t0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x0796,\n\t0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018,\n\t0xc1e: 0x0018, 0xc1f: 0x0018, 0xc20: 0x0018, 0xc21: 0x0018, 0xc22: 0x0018, 0xc23: 0x0018,\n\t0xc24: 0x0040, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0018, 0xc28: 0x0040, 0xc29: 0x0040,\n\t0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x000a,\n\t0xc30: 0x0018, 0xc31: 0x0018, 0xc32: 0x0018, 0xc33: 0x0699, 0xc34: 0x06a1, 0xc35: 0x0018,\n\t0xc36: 0x06a9, 0xc37: 0x06b1, 0xc38: 0x0018, 0xc39: 0x0018, 0xc3a: 0x0018, 0xc3b: 0x0018,\n\t0xc3c: 0x06ba, 0xc3d: 0x0018, 0xc3e: 0x07b6, 0xc3f: 0x0018,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x0018, 0xc41: 0x0018, 0xc42: 0x0018, 0xc43: 0x0018, 0xc44: 0x0018, 0xc45: 0x0018,\n\t0xc46: 0x0018, 0xc47: 0x06c2, 0xc48: 0x06ca, 0xc49: 0x06d2, 0xc4a: 0x0018, 0xc4b: 0x0018,\n\t0xc4c: 0x0018, 0xc4d: 0x0018, 0xc4e: 0x0018, 0xc4f: 0x0018, 0xc50: 0x0018, 0xc51: 0x0018,\n\t0xc52: 0x0018, 0xc53: 0x0018, 0xc54: 0x0018, 0xc55: 0x0018, 0xc56: 0x0018, 0xc57: 0x06d9,\n\t0xc58: 0x0018, 0xc59: 0x0018, 0xc5a: 0x0018, 0xc5b: 0x0018, 0xc5c: 0x0018, 0xc5d: 0x0018,\n\t0xc5e: 0x0018, 0xc5f: 0x000a, 0xc60: 0x03c0, 0xc61: 0x0340, 0xc62: 0x0340, 0xc63: 0x0340,\n\t0xc64: 0x03c0, 0xc65: 0x0040, 0xc66: 0x0040, 0xc67: 0x0040, 0xc68: 0x0040, 0xc69: 0x0040,\n\t0xc6a: 0x0340, 0xc6b: 0x0340, 0xc6c: 0x0340, 0xc6d: 0x0340, 0xc6e: 0x0340, 0xc6f: 0x0340,\n\t0xc70: 0x06e1, 0xc71: 0x0311, 0xc72: 0x0040, 0xc73: 0x0040, 0xc74: 0x06e9, 0xc75: 0x06f1,\n\t0xc76: 0x06f9, 0xc77: 0x0701, 0xc78: 0x0709, 0xc79: 0x0711, 0xc7a: 0x071a, 0xc7b: 0x07d5,\n\t0xc7c: 0x0722, 0xc7d: 0x072a, 0xc7e: 0x0732, 0xc7f: 0x0329,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x06e1, 0xc81: 0x0049, 0xc82: 0x0029, 0xc83: 0x0031, 0xc84: 0x06e9, 0xc85: 0x06f1,\n\t0xc86: 0x06f9, 0xc87: 0x0701, 0xc88: 0x0709, 0xc89: 0x0711, 0xc8a: 0x071a, 0xc8b: 0x07ed,\n\t0xc8c: 0x0722, 0xc8d: 0x072a, 0xc8e: 0x0732, 0xc8f: 0x0040, 0xc90: 0x0019, 0xc91: 0x02f9,\n\t0xc92: 0x0051, 0xc93: 0x0109, 0xc94: 0x0361, 0xc95: 0x00a9, 0xc96: 0x0319, 0xc97: 0x0101,\n\t0xc98: 0x0321, 0xc99: 0x0329, 0xc9a: 0x0339, 0xc9b: 0x0089, 0xc9c: 0x0341, 0xc9d: 0x0040,\n\t0xc9e: 0x0040, 0xc9f: 0x0040, 0xca0: 0x0018, 0xca1: 0x0018, 0xca2: 0x0018, 0xca3: 0x0018,\n\t0xca4: 0x0018, 0xca5: 0x0018, 0xca6: 0x0018, 0xca7: 0x0018, 0xca8: 0x0739, 0xca9: 0x0018,\n\t0xcaa: 0x0018, 0xcab: 0x0018, 0xcac: 0x0018, 0xcad: 0x0018, 0xcae: 0x0018, 0xcaf: 0x0018,\n\t0xcb0: 0x0018, 0xcb1: 0x0018, 0xcb2: 0x0018, 0xcb3: 0x0018, 0xcb4: 0x0018, 0xcb5: 0x0018,\n\t0xcb6: 0x0018, 0xcb7: 0x0018, 0xcb8: 0x0018, 0xcb9: 0x0018, 0xcba: 0x0018, 0xcbb: 0x0018,\n\t0xcbc: 0x0018, 0xcbd: 0x0018, 0xcbe: 0x0018, 0xcbf: 0x0018,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x0806, 0xcc1: 0x0826, 0xcc2: 0x03d9, 0xcc3: 0x0845, 0xcc4: 0x0018, 0xcc5: 0x0866,\n\t0xcc6: 0x0886, 0xcc7: 0x0369, 0xcc8: 0x0018, 0xcc9: 0x08a5, 0xcca: 0x0309, 0xccb: 0x00a9,\n\t0xccc: 0x00a9, 0xccd: 0x00a9, 0xcce: 0x00a9, 0xccf: 0x0741, 0xcd0: 0x0311, 0xcd1: 0x0311,\n\t0xcd2: 0x0101, 0xcd3: 0x0101, 0xcd4: 0x0018, 0xcd5: 0x0329, 0xcd6: 0x0749, 0xcd7: 0x0018,\n\t0xcd8: 0x0018, 0xcd9: 0x0339, 0xcda: 0x0751, 0xcdb: 0x00b9, 0xcdc: 0x00b9, 0xcdd: 0x00b9,\n\t0xcde: 0x0018, 0xcdf: 0x0018, 0xce0: 0x0759, 0xce1: 0x08c5, 0xce2: 0x0761, 0xce3: 0x0018,\n\t0xce4: 0x04b1, 0xce5: 0x0018, 0xce6: 0x0769, 0xce7: 0x0018, 0xce8: 0x04b1, 0xce9: 0x0018,\n\t0xcea: 0x0319, 0xceb: 0x0771, 0xcec: 0x02e9, 0xced: 0x03d9, 0xcee: 0x0018, 0xcef: 0x02f9,\n\t0xcf0: 0x02f9, 0xcf1: 0x03f1, 0xcf2: 0x0040, 0xcf3: 0x0321, 0xcf4: 0x0051, 0xcf5: 0x0779,\n\t0xcf6: 0x0781, 0xcf7: 0x0789, 0xcf8: 0x0791, 0xcf9: 0x0311, 0xcfa: 0x0018, 0xcfb: 0x08e5,\n\t0xcfc: 0x0799, 0xcfd: 0x03a1, 0xcfe: 0x03a1, 0xcff: 0x0799,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x0905, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x02f1,\n\t0xd06: 0x02f1, 0xd07: 0x02f9, 0xd08: 0x0311, 0xd09: 0x00b1, 0xd0a: 0x0018, 0xd0b: 0x0018,\n\t0xd0c: 0x0018, 0xd0d: 0x0018, 0xd0e: 0x0008, 0xd0f: 0x0018, 0xd10: 0x07a1, 0xd11: 0x07a9,\n\t0xd12: 0x07b1, 0xd13: 0x07b9, 0xd14: 0x07c1, 0xd15: 0x07c9, 0xd16: 0x07d1, 0xd17: 0x07d9,\n\t0xd18: 0x07e1, 0xd19: 0x07e9, 0xd1a: 0x07f1, 0xd1b: 0x07f9, 0xd1c: 0x0801, 0xd1d: 0x0809,\n\t0xd1e: 0x0811, 0xd1f: 0x0819, 0xd20: 0x0311, 0xd21: 0x0821, 0xd22: 0x091d, 0xd23: 0x0829,\n\t0xd24: 0x0391, 0xd25: 0x0831, 0xd26: 0x093d, 0xd27: 0x0839, 0xd28: 0x0841, 0xd29: 0x0109,\n\t0xd2a: 0x0849, 0xd2b: 0x095d, 0xd2c: 0x0101, 0xd2d: 0x03d9, 0xd2e: 0x02f1, 0xd2f: 0x0321,\n\t0xd30: 0x0311, 0xd31: 0x0821, 0xd32: 0x097d, 0xd33: 0x0829, 0xd34: 0x0391, 0xd35: 0x0831,\n\t0xd36: 0x099d, 0xd37: 0x0839, 0xd38: 0x0841, 0xd39: 0x0109, 0xd3a: 0x0849, 0xd3b: 0x09bd,\n\t0xd3c: 0x0101, 0xd3d: 0x03d9, 0xd3e: 0x02f1, 0xd3f: 0x0321,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x0018, 0xd41: 0x0018, 0xd42: 0x0018, 0xd43: 0x0018, 0xd44: 0x0018, 0xd45: 0x0018,\n\t0xd46: 0x0018, 0xd47: 0x0018, 0xd48: 0x0018, 0xd49: 0x0018, 0xd4a: 0x0018, 0xd4b: 0x0040,\n\t0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040,\n\t0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040,\n\t0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0040, 0xd5d: 0x0040,\n\t0xd5e: 0x0040, 0xd5f: 0x0040, 0xd60: 0x0049, 0xd61: 0x0029, 0xd62: 0x0031, 0xd63: 0x06e9,\n\t0xd64: 0x06f1, 0xd65: 0x06f9, 0xd66: 0x0701, 0xd67: 0x0709, 0xd68: 0x0711, 0xd69: 0x0879,\n\t0xd6a: 0x0881, 0xd6b: 0x0889, 0xd6c: 0x0891, 0xd6d: 0x0899, 0xd6e: 0x08a1, 0xd6f: 0x08a9,\n\t0xd70: 0x08b1, 0xd71: 0x08b9, 0xd72: 0x08c1, 0xd73: 0x08c9, 0xd74: 0x0a1e, 0xd75: 0x0a3e,\n\t0xd76: 0x0a5e, 0xd77: 0x0a7e, 0xd78: 0x0a9e, 0xd79: 0x0abe, 0xd7a: 0x0ade, 0xd7b: 0x0afe,\n\t0xd7c: 0x0b1e, 0xd7d: 0x08d2, 0xd7e: 0x08da, 0xd7f: 0x08e2,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x08ea, 0xd81: 0x08f2, 0xd82: 0x08fa, 0xd83: 0x0902, 0xd84: 0x090a, 0xd85: 0x0912,\n\t0xd86: 0x091a, 0xd87: 0x0922, 0xd88: 0x0040, 0xd89: 0x0040, 0xd8a: 0x0040, 0xd8b: 0x0040,\n\t0xd8c: 0x0040, 0xd8d: 0x0040, 0xd8e: 0x0040, 0xd8f: 0x0040, 0xd90: 0x0040, 0xd91: 0x0040,\n\t0xd92: 0x0040, 0xd93: 0x0040, 0xd94: 0x0040, 0xd95: 0x0040, 0xd96: 0x0040, 0xd97: 0x0040,\n\t0xd98: 0x0040, 0xd99: 0x0040, 0xd9a: 0x0040, 0xd9b: 0x0040, 0xd9c: 0x0b3e, 0xd9d: 0x0b5e,\n\t0xd9e: 0x0b7e, 0xd9f: 0x0b9e, 0xda0: 0x0bbe, 0xda1: 0x0bde, 0xda2: 0x0bfe, 0xda3: 0x0c1e,\n\t0xda4: 0x0c3e, 0xda5: 0x0c5e, 0xda6: 0x0c7e, 0xda7: 0x0c9e, 0xda8: 0x0cbe, 0xda9: 0x0cde,\n\t0xdaa: 0x0cfe, 0xdab: 0x0d1e, 0xdac: 0x0d3e, 0xdad: 0x0d5e, 0xdae: 0x0d7e, 0xdaf: 0x0d9e,\n\t0xdb0: 0x0dbe, 0xdb1: 0x0dde, 0xdb2: 0x0dfe, 0xdb3: 0x0e1e, 0xdb4: 0x0e3e, 0xdb5: 0x0e5e,\n\t0xdb6: 0x0019, 0xdb7: 0x02e9, 0xdb8: 0x03d9, 0xdb9: 0x02f1, 0xdba: 0x02f9, 0xdbb: 0x03f1,\n\t0xdbc: 0x0309, 0xdbd: 0x00a9, 0xdbe: 0x0311, 0xdbf: 0x00b1,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0319, 0xdc1: 0x0101, 0xdc2: 0x0321, 0xdc3: 0x0329, 0xdc4: 0x0051, 0xdc5: 0x0339,\n\t0xdc6: 0x0751, 0xdc7: 0x00b9, 0xdc8: 0x0089, 0xdc9: 0x0341, 0xdca: 0x0349, 0xdcb: 0x0391,\n\t0xdcc: 0x00c1, 0xdcd: 0x0109, 0xdce: 0x00c9, 0xdcf: 0x04b1, 0xdd0: 0x0019, 0xdd1: 0x02e9,\n\t0xdd2: 0x03d9, 0xdd3: 0x02f1, 0xdd4: 0x02f9, 0xdd5: 0x03f1, 0xdd6: 0x0309, 0xdd7: 0x00a9,\n\t0xdd8: 0x0311, 0xdd9: 0x00b1, 0xdda: 0x0319, 0xddb: 0x0101, 0xddc: 0x0321, 0xddd: 0x0329,\n\t0xdde: 0x0051, 0xddf: 0x0339, 0xde0: 0x0751, 0xde1: 0x00b9, 0xde2: 0x0089, 0xde3: 0x0341,\n\t0xde4: 0x0349, 0xde5: 0x0391, 0xde6: 0x00c1, 0xde7: 0x0109, 0xde8: 0x00c9, 0xde9: 0x04b1,\n\t0xdea: 0x06e1, 0xdeb: 0x0018, 0xdec: 0x0018, 0xded: 0x0018, 0xdee: 0x0018, 0xdef: 0x0018,\n\t0xdf0: 0x0018, 0xdf1: 0x0018, 0xdf2: 0x0018, 0xdf3: 0x0018, 0xdf4: 0x0018, 0xdf5: 0x0018,\n\t0xdf6: 0x0018, 0xdf7: 0x0018, 0xdf8: 0x0018, 0xdf9: 0x0018, 0xdfa: 0x0018, 0xdfb: 0x0018,\n\t0xdfc: 0x0018, 0xdfd: 0x0018, 0xdfe: 0x0018, 0xdff: 0x0018,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x0008, 0xe01: 0x0008, 0xe02: 0x0008, 0xe03: 0x0008, 0xe04: 0x0008, 0xe05: 0x0008,\n\t0xe06: 0x0008, 0xe07: 0x0008, 0xe08: 0x0008, 0xe09: 0x0008, 0xe0a: 0x0008, 0xe0b: 0x0008,\n\t0xe0c: 0x0008, 0xe0d: 0x0008, 0xe0e: 0x0008, 0xe0f: 0x0008, 0xe10: 0x0008, 0xe11: 0x0008,\n\t0xe12: 0x0008, 0xe13: 0x0008, 0xe14: 0x0008, 0xe15: 0x0008, 0xe16: 0x0008, 0xe17: 0x0008,\n\t0xe18: 0x0008, 0xe19: 0x0008, 0xe1a: 0x0008, 0xe1b: 0x0008, 0xe1c: 0x0008, 0xe1d: 0x0008,\n\t0xe1e: 0x0008, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0x0941, 0xe23: 0x0ed5,\n\t0xe24: 0x0949, 0xe25: 0x0008, 0xe26: 0x0008, 0xe27: 0xe07d, 0xe28: 0x0008, 0xe29: 0xe01d,\n\t0xe2a: 0x0008, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0x0359, 0xe2e: 0x0441, 0xe2f: 0x0351,\n\t0xe30: 0x03d1, 0xe31: 0x0008, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0008, 0xe35: 0xe01d,\n\t0xe36: 0x0008, 0xe37: 0x0008, 0xe38: 0x0008, 0xe39: 0x0008, 0xe3a: 0x0008, 0xe3b: 0x0008,\n\t0xe3c: 0x00b1, 0xe3d: 0x0391, 0xe3e: 0x0951, 0xe3f: 0x0959,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0xe00d, 0xe41: 0x0008, 0xe42: 0xe00d, 0xe43: 0x0008, 0xe44: 0xe00d, 0xe45: 0x0008,\n\t0xe46: 0xe00d, 0xe47: 0x0008, 0xe48: 0xe00d, 0xe49: 0x0008, 0xe4a: 0xe00d, 0xe4b: 0x0008,\n\t0xe4c: 0xe00d, 0xe4d: 0x0008, 0xe4e: 0xe00d, 0xe4f: 0x0008, 0xe50: 0xe00d, 0xe51: 0x0008,\n\t0xe52: 0xe00d, 0xe53: 0x0008, 0xe54: 0xe00d, 0xe55: 0x0008, 0xe56: 0xe00d, 0xe57: 0x0008,\n\t0xe58: 0xe00d, 0xe59: 0x0008, 0xe5a: 0xe00d, 0xe5b: 0x0008, 0xe5c: 0xe00d, 0xe5d: 0x0008,\n\t0xe5e: 0xe00d, 0xe5f: 0x0008, 0xe60: 0xe00d, 0xe61: 0x0008, 0xe62: 0xe00d, 0xe63: 0x0008,\n\t0xe64: 0x0008, 0xe65: 0x0018, 0xe66: 0x0018, 0xe67: 0x0018, 0xe68: 0x0018, 0xe69: 0x0018,\n\t0xe6a: 0x0018, 0xe6b: 0xe03d, 0xe6c: 0x0008, 0xe6d: 0xe01d, 0xe6e: 0x0008, 0xe6f: 0x3308,\n\t0xe70: 0x3308, 0xe71: 0x3308, 0xe72: 0xe00d, 0xe73: 0x0008, 0xe74: 0x0040, 0xe75: 0x0040,\n\t0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0018, 0xe7a: 0x0018, 0xe7b: 0x0018,\n\t0xe7c: 0x0018, 0xe7d: 0x0018, 0xe7e: 0x0018, 0xe7f: 0x0018,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x2715, 0xe81: 0x2735, 0xe82: 0x2755, 0xe83: 0x2775, 0xe84: 0x2795, 0xe85: 0x27b5,\n\t0xe86: 0x27d5, 0xe87: 0x27f5, 0xe88: 0x2815, 0xe89: 0x2835, 0xe8a: 0x2855, 0xe8b: 0x2875,\n\t0xe8c: 0x2895, 0xe8d: 0x28b5, 0xe8e: 0x28d5, 0xe8f: 0x28f5, 0xe90: 0x2915, 0xe91: 0x2935,\n\t0xe92: 0x2955, 0xe93: 0x2975, 0xe94: 0x2995, 0xe95: 0x29b5, 0xe96: 0x0040, 0xe97: 0x0040,\n\t0xe98: 0x0040, 0xe99: 0x0040, 0xe9a: 0x0040, 0xe9b: 0x0040, 0xe9c: 0x0040, 0xe9d: 0x0040,\n\t0xe9e: 0x0040, 0xe9f: 0x0040, 0xea0: 0x0040, 0xea1: 0x0040, 0xea2: 0x0040, 0xea3: 0x0040,\n\t0xea4: 0x0040, 0xea5: 0x0040, 0xea6: 0x0040, 0xea7: 0x0040, 0xea8: 0x0040, 0xea9: 0x0040,\n\t0xeaa: 0x0040, 0xeab: 0x0040, 0xeac: 0x0040, 0xead: 0x0040, 0xeae: 0x0040, 0xeaf: 0x0040,\n\t0xeb0: 0x0040, 0xeb1: 0x0040, 0xeb2: 0x0040, 0xeb3: 0x0040, 0xeb4: 0x0040, 0xeb5: 0x0040,\n\t0xeb6: 0x0040, 0xeb7: 0x0040, 0xeb8: 0x0040, 0xeb9: 0x0040, 0xeba: 0x0040, 0xebb: 0x0040,\n\t0xebc: 0x0040, 0xebd: 0x0040, 0xebe: 0x0040, 0xebf: 0x0040,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x000a, 0xec1: 0x0018, 0xec2: 0x0961, 0xec3: 0x0018, 0xec4: 0x0018, 0xec5: 0x0008,\n\t0xec6: 0x0008, 0xec7: 0x0008, 0xec8: 0x0018, 0xec9: 0x0018, 0xeca: 0x0018, 0xecb: 0x0018,\n\t0xecc: 0x0018, 0xecd: 0x0018, 0xece: 0x0018, 0xecf: 0x0018, 0xed0: 0x0018, 0xed1: 0x0018,\n\t0xed2: 0x0018, 0xed3: 0x0018, 0xed4: 0x0018, 0xed5: 0x0018, 0xed6: 0x0018, 0xed7: 0x0018,\n\t0xed8: 0x0018, 0xed9: 0x0018, 0xeda: 0x0018, 0xedb: 0x0018, 0xedc: 0x0018, 0xedd: 0x0018,\n\t0xede: 0x0018, 0xedf: 0x0018, 0xee0: 0x0018, 0xee1: 0x0018, 0xee2: 0x0018, 0xee3: 0x0018,\n\t0xee4: 0x0018, 0xee5: 0x0018, 0xee6: 0x0018, 0xee7: 0x0018, 0xee8: 0x0018, 0xee9: 0x0018,\n\t0xeea: 0x3308, 0xeeb: 0x3308, 0xeec: 0x3308, 0xeed: 0x3308, 0xeee: 0x3018, 0xeef: 0x3018,\n\t0xef0: 0x0018, 0xef1: 0x0018, 0xef2: 0x0018, 0xef3: 0x0018, 0xef4: 0x0018, 0xef5: 0x0018,\n\t0xef6: 0xe125, 0xef7: 0x0018, 0xef8: 0x29d5, 0xef9: 0x29f5, 0xefa: 0x2a15, 0xefb: 0x0018,\n\t0xefc: 0x0008, 0xefd: 0x0018, 0xefe: 0x0018, 0xeff: 0x0018,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x2b55, 0xf01: 0x2b75, 0xf02: 0x2b95, 0xf03: 0x2bb5, 0xf04: 0x2bd5, 0xf05: 0x2bf5,\n\t0xf06: 0x2bf5, 0xf07: 0x2bf5, 0xf08: 0x2c15, 0xf09: 0x2c15, 0xf0a: 0x2c15, 0xf0b: 0x2c15,\n\t0xf0c: 0x2c35, 0xf0d: 0x2c35, 0xf0e: 0x2c35, 0xf0f: 0x2c55, 0xf10: 0x2c75, 0xf11: 0x2c75,\n\t0xf12: 0x2a95, 0xf13: 0x2a95, 0xf14: 0x2c75, 0xf15: 0x2c75, 0xf16: 0x2c95, 0xf17: 0x2c95,\n\t0xf18: 0x2c75, 0xf19: 0x2c75, 0xf1a: 0x2a95, 0xf1b: 0x2a95, 0xf1c: 0x2c75, 0xf1d: 0x2c75,\n\t0xf1e: 0x2c55, 0xf1f: 0x2c55, 0xf20: 0x2cb5, 0xf21: 0x2cb5, 0xf22: 0x2cd5, 0xf23: 0x2cd5,\n\t0xf24: 0x0040, 0xf25: 0x2cf5, 0xf26: 0x2d15, 0xf27: 0x2d35, 0xf28: 0x2d35, 0xf29: 0x2d55,\n\t0xf2a: 0x2d75, 0xf2b: 0x2d95, 0xf2c: 0x2db5, 0xf2d: 0x2dd5, 0xf2e: 0x2df5, 0xf2f: 0x2e15,\n\t0xf30: 0x2e35, 0xf31: 0x2e55, 0xf32: 0x2e55, 0xf33: 0x2e75, 0xf34: 0x2e95, 0xf35: 0x2e95,\n\t0xf36: 0x2eb5, 0xf37: 0x2ed5, 0xf38: 0x2e75, 0xf39: 0x2ef5, 0xf3a: 0x2f15, 0xf3b: 0x2ef5,\n\t0xf3c: 0x2e75, 0xf3d: 0x2f35, 0xf3e: 0x2f55, 0xf3f: 0x2f75,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x2f95, 0xf41: 0x2fb5, 0xf42: 0x2d15, 0xf43: 0x2cf5, 0xf44: 0x2fd5, 0xf45: 0x2ff5,\n\t0xf46: 0x3015, 0xf47: 0x3035, 0xf48: 0x3055, 0xf49: 0x3075, 0xf4a: 0x3095, 0xf4b: 0x30b5,\n\t0xf4c: 0x30d5, 0xf4d: 0x30f5, 0xf4e: 0x3115, 0xf4f: 0x0040, 0xf50: 0x0018, 0xf51: 0x0018,\n\t0xf52: 0x3135, 0xf53: 0x3155, 0xf54: 0x3175, 0xf55: 0x3195, 0xf56: 0x31b5, 0xf57: 0x31d5,\n\t0xf58: 0x31f5, 0xf59: 0x3215, 0xf5a: 0x3235, 0xf5b: 0x3255, 0xf5c: 0x3175, 0xf5d: 0x3275,\n\t0xf5e: 0x3295, 0xf5f: 0x32b5, 0xf60: 0x0008, 0xf61: 0x0008, 0xf62: 0x0008, 0xf63: 0x0008,\n\t0xf64: 0x0008, 0xf65: 0x0008, 0xf66: 0x0008, 0xf67: 0x0008, 0xf68: 0x0008, 0xf69: 0x0008,\n\t0xf6a: 0x0008, 0xf6b: 0x0008, 0xf6c: 0x0008, 0xf6d: 0x0008, 0xf6e: 0x0008, 0xf6f: 0x0008,\n\t0xf70: 0x0008, 0xf71: 0x0008, 0xf72: 0x0008, 0xf73: 0x0008, 0xf74: 0x0008, 0xf75: 0x0008,\n\t0xf76: 0x0008, 0xf77: 0x0008, 0xf78: 0x0008, 0xf79: 0x0008, 0xf7a: 0x0008, 0xf7b: 0x0008,\n\t0xf7c: 0x0008, 0xf7d: 0x0008, 0xf7e: 0x0008, 0xf7f: 0x0008,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x0b82, 0xf81: 0x0b8a, 0xf82: 0x0b92, 0xf83: 0x0b9a, 0xf84: 0x32d5, 0xf85: 0x32f5,\n\t0xf86: 0x3315, 0xf87: 0x3335, 0xf88: 0x0018, 0xf89: 0x0018, 0xf8a: 0x0018, 0xf8b: 0x0018,\n\t0xf8c: 0x0018, 0xf8d: 0x0018, 0xf8e: 0x0018, 0xf8f: 0x0018, 0xf90: 0x3355, 0xf91: 0x0ba1,\n\t0xf92: 0x0ba9, 0xf93: 0x0bb1, 0xf94: 0x0bb9, 0xf95: 0x0bc1, 0xf96: 0x0bc9, 0xf97: 0x0bd1,\n\t0xf98: 0x0bd9, 0xf99: 0x0be1, 0xf9a: 0x0be9, 0xf9b: 0x0bf1, 0xf9c: 0x0bf9, 0xf9d: 0x0c01,\n\t0xf9e: 0x0c09, 0xf9f: 0x0c11, 0xfa0: 0x3375, 0xfa1: 0x3395, 0xfa2: 0x33b5, 0xfa3: 0x33d5,\n\t0xfa4: 0x33f5, 0xfa5: 0x33f5, 0xfa6: 0x3415, 0xfa7: 0x3435, 0xfa8: 0x3455, 0xfa9: 0x3475,\n\t0xfaa: 0x3495, 0xfab: 0x34b5, 0xfac: 0x34d5, 0xfad: 0x34f5, 0xfae: 0x3515, 0xfaf: 0x3535,\n\t0xfb0: 0x3555, 0xfb1: 0x3575, 0xfb2: 0x3595, 0xfb3: 0x35b5, 0xfb4: 0x35d5, 0xfb5: 0x35f5,\n\t0xfb6: 0x3615, 0xfb7: 0x3635, 0xfb8: 0x3655, 0xfb9: 0x3675, 0xfba: 0x3695, 0xfbb: 0x36b5,\n\t0xfbc: 0x0c19, 0xfbd: 0x0c21, 0xfbe: 0x36d5, 0xfbf: 0x0018,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x36f5, 0xfc1: 0x3715, 0xfc2: 0x3735, 0xfc3: 0x3755, 0xfc4: 0x3775, 0xfc5: 0x3795,\n\t0xfc6: 0x37b5, 0xfc7: 0x37d5, 0xfc8: 0x37f5, 0xfc9: 0x3815, 0xfca: 0x3835, 0xfcb: 0x3855,\n\t0xfcc: 0x3875, 0xfcd: 0x3895, 0xfce: 0x38b5, 0xfcf: 0x38d5, 0xfd0: 0x38f5, 0xfd1: 0x3915,\n\t0xfd2: 0x3935, 0xfd3: 0x3955, 0xfd4: 0x3975, 0xfd5: 0x3995, 0xfd6: 0x39b5, 0xfd7: 0x39d5,\n\t0xfd8: 0x39f5, 0xfd9: 0x3a15, 0xfda: 0x3a35, 0xfdb: 0x3a55, 0xfdc: 0x3a75, 0xfdd: 0x3a95,\n\t0xfde: 0x3ab5, 0xfdf: 0x3ad5, 0xfe0: 0x3af5, 0xfe1: 0x3b15, 0xfe2: 0x3b35, 0xfe3: 0x3b55,\n\t0xfe4: 0x3b75, 0xfe5: 0x3b95, 0xfe6: 0x1295, 0xfe7: 0x3bb5, 0xfe8: 0x3bd5, 0xfe9: 0x3bf5,\n\t0xfea: 0x3c15, 0xfeb: 0x3c35, 0xfec: 0x3c55, 0xfed: 0x3c75, 0xfee: 0x23b5, 0xfef: 0x3c95,\n\t0xff0: 0x3cb5, 0xff1: 0x0c29, 0xff2: 0x0c31, 0xff3: 0x0c39, 0xff4: 0x0c41, 0xff5: 0x0c49,\n\t0xff6: 0x0c51, 0xff7: 0x0c59, 0xff8: 0x0c61, 0xff9: 0x0c69, 0xffa: 0x0c71, 0xffb: 0x0c79,\n\t0xffc: 0x0c81, 0xffd: 0x0c89, 0xffe: 0x0c91, 0xfff: 0x0c99,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x0ca1, 0x1001: 0x0ca9, 0x1002: 0x0cb1, 0x1003: 0x0cb9, 0x1004: 0x0cc1, 0x1005: 0x0cc9,\n\t0x1006: 0x0cd1, 0x1007: 0x0cd9, 0x1008: 0x0ce1, 0x1009: 0x0ce9, 0x100a: 0x0cf1, 0x100b: 0x0cf9,\n\t0x100c: 0x0d01, 0x100d: 0x3cd5, 0x100e: 0x0d09, 0x100f: 0x3cf5, 0x1010: 0x3d15, 0x1011: 0x3d2d,\n\t0x1012: 0x3d45, 0x1013: 0x3d5d, 0x1014: 0x3d75, 0x1015: 0x3d75, 0x1016: 0x3d5d, 0x1017: 0x3d8d,\n\t0x1018: 0x07d5, 0x1019: 0x3da5, 0x101a: 0x3dbd, 0x101b: 0x3dd5, 0x101c: 0x3ded, 0x101d: 0x3e05,\n\t0x101e: 0x3e1d, 0x101f: 0x3e35, 0x1020: 0x3e4d, 0x1021: 0x3e65, 0x1022: 0x3e7d, 0x1023: 0x3e95,\n\t0x1024: 0x3ead, 0x1025: 0x3ead, 0x1026: 0x3ec5, 0x1027: 0x3ec5, 0x1028: 0x3edd, 0x1029: 0x3edd,\n\t0x102a: 0x3ef5, 0x102b: 0x3f0d, 0x102c: 0x3f25, 0x102d: 0x3f3d, 0x102e: 0x3f55, 0x102f: 0x3f55,\n\t0x1030: 0x3f6d, 0x1031: 0x3f6d, 0x1032: 0x3f6d, 0x1033: 0x3f85, 0x1034: 0x3f9d, 0x1035: 0x3fb5,\n\t0x1036: 0x3fcd, 0x1037: 0x3fb5, 0x1038: 0x3fe5, 0x1039: 0x3ffd, 0x103a: 0x3f85, 0x103b: 0x4015,\n\t0x103c: 0x402d, 0x103d: 0x402d, 0x103e: 0x402d, 0x103f: 0x0d11,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x10f9, 0x1041: 0x1101, 0x1042: 0x40a5, 0x1043: 0x1109, 0x1044: 0x1111, 0x1045: 0x1119,\n\t0x1046: 0x1121, 0x1047: 0x1129, 0x1048: 0x40c5, 0x1049: 0x1131, 0x104a: 0x1139, 0x104b: 0x1141,\n\t0x104c: 0x40e5, 0x104d: 0x40e5, 0x104e: 0x1149, 0x104f: 0x1151, 0x1050: 0x1159, 0x1051: 0x4105,\n\t0x1052: 0x4125, 0x1053: 0x4145, 0x1054: 0x4165, 0x1055: 0x4185, 0x1056: 0x1161, 0x1057: 0x1169,\n\t0x1058: 0x1171, 0x1059: 0x1179, 0x105a: 0x1181, 0x105b: 0x41a5, 0x105c: 0x1189, 0x105d: 0x1191,\n\t0x105e: 0x1199, 0x105f: 0x41c5, 0x1060: 0x41e5, 0x1061: 0x11a1, 0x1062: 0x4205, 0x1063: 0x4225,\n\t0x1064: 0x4245, 0x1065: 0x11a9, 0x1066: 0x4265, 0x1067: 0x11b1, 0x1068: 0x11b9, 0x1069: 0x10f9,\n\t0x106a: 0x4285, 0x106b: 0x42a5, 0x106c: 0x42c5, 0x106d: 0x42e5, 0x106e: 0x11c1, 0x106f: 0x11c9,\n\t0x1070: 0x11d1, 0x1071: 0x11d9, 0x1072: 0x4305, 0x1073: 0x11e1, 0x1074: 0x11e9, 0x1075: 0x11f1,\n\t0x1076: 0x4325, 0x1077: 0x11f9, 0x1078: 0x1201, 0x1079: 0x11f9, 0x107a: 0x1209, 0x107b: 0x1211,\n\t0x107c: 0x4345, 0x107d: 0x1219, 0x107e: 0x1221, 0x107f: 0x1219,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x4365, 0x1081: 0x4385, 0x1082: 0x0040, 0x1083: 0x1229, 0x1084: 0x1231, 0x1085: 0x1239,\n\t0x1086: 0x1241, 0x1087: 0x0040, 0x1088: 0x1249, 0x1089: 0x1251, 0x108a: 0x1259, 0x108b: 0x1261,\n\t0x108c: 0x1269, 0x108d: 0x1271, 0x108e: 0x1199, 0x108f: 0x1279, 0x1090: 0x1281, 0x1091: 0x1289,\n\t0x1092: 0x43a5, 0x1093: 0x1291, 0x1094: 0x1121, 0x1095: 0x43c5, 0x1096: 0x43e5, 0x1097: 0x1299,\n\t0x1098: 0x0040, 0x1099: 0x4405, 0x109a: 0x12a1, 0x109b: 0x12a9, 0x109c: 0x12b1, 0x109d: 0x12b9,\n\t0x109e: 0x12c1, 0x109f: 0x12c9, 0x10a0: 0x12d1, 0x10a1: 0x12d9, 0x10a2: 0x12e1, 0x10a3: 0x12e9,\n\t0x10a4: 0x12f1, 0x10a5: 0x12f9, 0x10a6: 0x1301, 0x10a7: 0x1309, 0x10a8: 0x1311, 0x10a9: 0x1319,\n\t0x10aa: 0x1321, 0x10ab: 0x1329, 0x10ac: 0x1331, 0x10ad: 0x1339, 0x10ae: 0x1341, 0x10af: 0x1349,\n\t0x10b0: 0x1351, 0x10b1: 0x1359, 0x10b2: 0x1361, 0x10b3: 0x1369, 0x10b4: 0x1371, 0x10b5: 0x1379,\n\t0x10b6: 0x1381, 0x10b7: 0x1389, 0x10b8: 0x1391, 0x10b9: 0x1399, 0x10ba: 0x13a1, 0x10bb: 0x13a9,\n\t0x10bc: 0x13b1, 0x10bd: 0x13b9, 0x10be: 0x13c1, 0x10bf: 0x4425,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0xe00d, 0x10c1: 0x0008, 0x10c2: 0xe00d, 0x10c3: 0x0008, 0x10c4: 0xe00d, 0x10c5: 0x0008,\n\t0x10c6: 0xe00d, 0x10c7: 0x0008, 0x10c8: 0xe00d, 0x10c9: 0x0008, 0x10ca: 0xe00d, 0x10cb: 0x0008,\n\t0x10cc: 0xe00d, 0x10cd: 0x0008, 0x10ce: 0xe00d, 0x10cf: 0x0008, 0x10d0: 0xe00d, 0x10d1: 0x0008,\n\t0x10d2: 0xe00d, 0x10d3: 0x0008, 0x10d4: 0xe00d, 0x10d5: 0x0008, 0x10d6: 0xe00d, 0x10d7: 0x0008,\n\t0x10d8: 0xe00d, 0x10d9: 0x0008, 0x10da: 0xe00d, 0x10db: 0x0008, 0x10dc: 0xe00d, 0x10dd: 0x0008,\n\t0x10de: 0xe00d, 0x10df: 0x0008, 0x10e0: 0xe00d, 0x10e1: 0x0008, 0x10e2: 0xe00d, 0x10e3: 0x0008,\n\t0x10e4: 0xe00d, 0x10e5: 0x0008, 0x10e6: 0xe00d, 0x10e7: 0x0008, 0x10e8: 0xe00d, 0x10e9: 0x0008,\n\t0x10ea: 0xe00d, 0x10eb: 0x0008, 0x10ec: 0xe00d, 0x10ed: 0x0008, 0x10ee: 0x0008, 0x10ef: 0x3308,\n\t0x10f0: 0x3318, 0x10f1: 0x3318, 0x10f2: 0x3318, 0x10f3: 0x0018, 0x10f4: 0x3308, 0x10f5: 0x3308,\n\t0x10f6: 0x3308, 0x10f7: 0x3308, 0x10f8: 0x3308, 0x10f9: 0x3308, 0x10fa: 0x3308, 0x10fb: 0x3308,\n\t0x10fc: 0x3308, 0x10fd: 0x3308, 0x10fe: 0x0018, 0x10ff: 0x0008,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008,\n\t0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008,\n\t0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008,\n\t0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008,\n\t0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0x02d1, 0x111d: 0x13c9,\n\t0x111e: 0x3308, 0x111f: 0x3308, 0x1120: 0x0008, 0x1121: 0x0008, 0x1122: 0x0008, 0x1123: 0x0008,\n\t0x1124: 0x0008, 0x1125: 0x0008, 0x1126: 0x0008, 0x1127: 0x0008, 0x1128: 0x0008, 0x1129: 0x0008,\n\t0x112a: 0x0008, 0x112b: 0x0008, 0x112c: 0x0008, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x0008,\n\t0x1130: 0x0008, 0x1131: 0x0008, 0x1132: 0x0008, 0x1133: 0x0008, 0x1134: 0x0008, 0x1135: 0x0008,\n\t0x1136: 0x0008, 0x1137: 0x0008, 0x1138: 0x0008, 0x1139: 0x0008, 0x113a: 0x0008, 0x113b: 0x0008,\n\t0x113c: 0x0008, 0x113d: 0x0008, 0x113e: 0x0008, 0x113f: 0x0008,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0x0018, 0x1141: 0x0018, 0x1142: 0x0018, 0x1143: 0x0018, 0x1144: 0x0018, 0x1145: 0x0018,\n\t0x1146: 0x0018, 0x1147: 0x0018, 0x1148: 0x0018, 0x1149: 0x0018, 0x114a: 0x0018, 0x114b: 0x0018,\n\t0x114c: 0x0018, 0x114d: 0x0018, 0x114e: 0x0018, 0x114f: 0x0018, 0x1150: 0x0018, 0x1151: 0x0018,\n\t0x1152: 0x0018, 0x1153: 0x0018, 0x1154: 0x0018, 0x1155: 0x0018, 0x1156: 0x0018, 0x1157: 0x0008,\n\t0x1158: 0x0008, 0x1159: 0x0008, 0x115a: 0x0008, 0x115b: 0x0008, 0x115c: 0x0008, 0x115d: 0x0008,\n\t0x115e: 0x0008, 0x115f: 0x0008, 0x1160: 0x0018, 0x1161: 0x0018, 0x1162: 0xe00d, 0x1163: 0x0008,\n\t0x1164: 0xe00d, 0x1165: 0x0008, 0x1166: 0xe00d, 0x1167: 0x0008, 0x1168: 0xe00d, 0x1169: 0x0008,\n\t0x116a: 0xe00d, 0x116b: 0x0008, 0x116c: 0xe00d, 0x116d: 0x0008, 0x116e: 0xe00d, 0x116f: 0x0008,\n\t0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0xe00d, 0x1173: 0x0008, 0x1174: 0xe00d, 0x1175: 0x0008,\n\t0x1176: 0xe00d, 0x1177: 0x0008, 0x1178: 0xe00d, 0x1179: 0x0008, 0x117a: 0xe00d, 0x117b: 0x0008,\n\t0x117c: 0xe00d, 0x117d: 0x0008, 0x117e: 0xe00d, 0x117f: 0x0008,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0xe00d, 0x1181: 0x0008, 0x1182: 0xe00d, 0x1183: 0x0008, 0x1184: 0xe00d, 0x1185: 0x0008,\n\t0x1186: 0xe00d, 0x1187: 0x0008, 0x1188: 0xe00d, 0x1189: 0x0008, 0x118a: 0xe00d, 0x118b: 0x0008,\n\t0x118c: 0xe00d, 0x118d: 0x0008, 0x118e: 0xe00d, 0x118f: 0x0008, 0x1190: 0xe00d, 0x1191: 0x0008,\n\t0x1192: 0xe00d, 0x1193: 0x0008, 0x1194: 0xe00d, 0x1195: 0x0008, 0x1196: 0xe00d, 0x1197: 0x0008,\n\t0x1198: 0xe00d, 0x1199: 0x0008, 0x119a: 0xe00d, 0x119b: 0x0008, 0x119c: 0xe00d, 0x119d: 0x0008,\n\t0x119e: 0xe00d, 0x119f: 0x0008, 0x11a0: 0xe00d, 0x11a1: 0x0008, 0x11a2: 0xe00d, 0x11a3: 0x0008,\n\t0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008,\n\t0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008,\n\t0x11b0: 0xe0fd, 0x11b1: 0x0008, 0x11b2: 0x0008, 0x11b3: 0x0008, 0x11b4: 0x0008, 0x11b5: 0x0008,\n\t0x11b6: 0x0008, 0x11b7: 0x0008, 0x11b8: 0x0008, 0x11b9: 0xe01d, 0x11ba: 0x0008, 0x11bb: 0xe03d,\n\t0x11bc: 0x0008, 0x11bd: 0x4445, 0x11be: 0xe00d, 0x11bf: 0x0008,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008,\n\t0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0x0008, 0x11c9: 0x0018, 0x11ca: 0x0018, 0x11cb: 0xe03d,\n\t0x11cc: 0x0008, 0x11cd: 0x0409, 0x11ce: 0x0008, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008,\n\t0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0x0008, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008,\n\t0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008,\n\t0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008,\n\t0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008,\n\t0x11ea: 0x13d1, 0x11eb: 0x0371, 0x11ec: 0x0401, 0x11ed: 0x13d9, 0x11ee: 0x0421, 0x11ef: 0x0008,\n\t0x11f0: 0x13e1, 0x11f1: 0x13e9, 0x11f2: 0x0429, 0x11f3: 0x4465, 0x11f4: 0xe00d, 0x11f5: 0x0008,\n\t0x11f6: 0xe00d, 0x11f7: 0x0008, 0x11f8: 0xe00d, 0x11f9: 0x0008, 0x11fa: 0xe00d, 0x11fb: 0x0008,\n\t0x11fc: 0xe00d, 0x11fd: 0x0008, 0x11fe: 0xe00d, 0x11ff: 0x0008,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0x03f5, 0x1205: 0x0479,\n\t0x1206: 0x447d, 0x1207: 0xe07d, 0x1208: 0x0008, 0x1209: 0xe01d, 0x120a: 0x0008, 0x120b: 0x0040,\n\t0x120c: 0x0040, 0x120d: 0x0040, 0x120e: 0x0040, 0x120f: 0x0040, 0x1210: 0xe00d, 0x1211: 0x0008,\n\t0x1212: 0x0040, 0x1213: 0x0008, 0x1214: 0x0040, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008,\n\t0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0x0040, 0x121b: 0x0040, 0x121c: 0x0040, 0x121d: 0x0040,\n\t0x121e: 0x0040, 0x121f: 0x0040, 0x1220: 0x0040, 0x1221: 0x0040, 0x1222: 0x0040, 0x1223: 0x0040,\n\t0x1224: 0x0040, 0x1225: 0x0040, 0x1226: 0x0040, 0x1227: 0x0040, 0x1228: 0x0040, 0x1229: 0x0040,\n\t0x122a: 0x0040, 0x122b: 0x0040, 0x122c: 0x0040, 0x122d: 0x0040, 0x122e: 0x0040, 0x122f: 0x0040,\n\t0x1230: 0x0040, 0x1231: 0x0040, 0x1232: 0x03d9, 0x1233: 0x03f1, 0x1234: 0x0751, 0x1235: 0xe01d,\n\t0x1236: 0x0008, 0x1237: 0x0008, 0x1238: 0x0741, 0x1239: 0x13f1, 0x123a: 0x0008, 0x123b: 0x0008,\n\t0x123c: 0x0008, 0x123d: 0x0008, 0x123e: 0x0008, 0x123f: 0x0008,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x650d, 0x1241: 0x652d, 0x1242: 0x654d, 0x1243: 0x656d, 0x1244: 0x658d, 0x1245: 0x65ad,\n\t0x1246: 0x65cd, 0x1247: 0x65ed, 0x1248: 0x660d, 0x1249: 0x662d, 0x124a: 0x664d, 0x124b: 0x666d,\n\t0x124c: 0x668d, 0x124d: 0x66ad, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x66cd, 0x1251: 0x0008,\n\t0x1252: 0x66ed, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x670d, 0x1256: 0x672d, 0x1257: 0x674d,\n\t0x1258: 0x676d, 0x1259: 0x678d, 0x125a: 0x67ad, 0x125b: 0x67cd, 0x125c: 0x67ed, 0x125d: 0x680d,\n\t0x125e: 0x682d, 0x125f: 0x0008, 0x1260: 0x684d, 0x1261: 0x0008, 0x1262: 0x686d, 0x1263: 0x0008,\n\t0x1264: 0x0008, 0x1265: 0x688d, 0x1266: 0x68ad, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008,\n\t0x126a: 0x68cd, 0x126b: 0x68ed, 0x126c: 0x690d, 0x126d: 0x692d, 0x126e: 0x694d, 0x126f: 0x696d,\n\t0x1270: 0x698d, 0x1271: 0x69ad, 0x1272: 0x69cd, 0x1273: 0x69ed, 0x1274: 0x6a0d, 0x1275: 0x6a2d,\n\t0x1276: 0x6a4d, 0x1277: 0x6a6d, 0x1278: 0x6a8d, 0x1279: 0x6aad, 0x127a: 0x6acd, 0x127b: 0x6aed,\n\t0x127c: 0x6b0d, 0x127d: 0x6b2d, 0x127e: 0x6b4d, 0x127f: 0x6b6d,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x7acd, 0x1281: 0x7aed, 0x1282: 0x7b0d, 0x1283: 0x7b2d, 0x1284: 0x7b4d, 0x1285: 0x7b6d,\n\t0x1286: 0x7b8d, 0x1287: 0x7bad, 0x1288: 0x7bcd, 0x1289: 0x7bed, 0x128a: 0x7c0d, 0x128b: 0x7c2d,\n\t0x128c: 0x7c4d, 0x128d: 0x7c6d, 0x128e: 0x7c8d, 0x128f: 0x1409, 0x1290: 0x1411, 0x1291: 0x1419,\n\t0x1292: 0x7cad, 0x1293: 0x7ccd, 0x1294: 0x7ced, 0x1295: 0x1421, 0x1296: 0x1429, 0x1297: 0x1431,\n\t0x1298: 0x7d0d, 0x1299: 0x7d2d, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040,\n\t0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040,\n\t0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040,\n\t0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040,\n\t0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040,\n\t0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040,\n\t0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x1439, 0x12c1: 0x1441, 0x12c2: 0x1449, 0x12c3: 0x7d4d, 0x12c4: 0x7d6d, 0x12c5: 0x1451,\n\t0x12c6: 0x1451, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040,\n\t0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040,\n\t0x12d2: 0x0040, 0x12d3: 0x1459, 0x12d4: 0x1461, 0x12d5: 0x1469, 0x12d6: 0x1471, 0x12d7: 0x1479,\n\t0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x1481,\n\t0x12de: 0x3308, 0x12df: 0x1489, 0x12e0: 0x1491, 0x12e1: 0x0779, 0x12e2: 0x0791, 0x12e3: 0x1499,\n\t0x12e4: 0x14a1, 0x12e5: 0x14a9, 0x12e6: 0x14b1, 0x12e7: 0x14b9, 0x12e8: 0x14c1, 0x12e9: 0x071a,\n\t0x12ea: 0x14c9, 0x12eb: 0x14d1, 0x12ec: 0x14d9, 0x12ed: 0x14e1, 0x12ee: 0x14e9, 0x12ef: 0x14f1,\n\t0x12f0: 0x14f9, 0x12f1: 0x1501, 0x12f2: 0x1509, 0x12f3: 0x1511, 0x12f4: 0x1519, 0x12f5: 0x1521,\n\t0x12f6: 0x1529, 0x12f7: 0x0040, 0x12f8: 0x1531, 0x12f9: 0x1539, 0x12fa: 0x1541, 0x12fb: 0x1549,\n\t0x12fc: 0x1551, 0x12fd: 0x0040, 0x12fe: 0x1559, 0x12ff: 0x0040,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x1561, 0x1301: 0x1569, 0x1302: 0x0040, 0x1303: 0x1571, 0x1304: 0x1579, 0x1305: 0x0040,\n\t0x1306: 0x1581, 0x1307: 0x1589, 0x1308: 0x1591, 0x1309: 0x1599, 0x130a: 0x15a1, 0x130b: 0x15a9,\n\t0x130c: 0x15b1, 0x130d: 0x15b9, 0x130e: 0x15c1, 0x130f: 0x15c9, 0x1310: 0x15d1, 0x1311: 0x15d1,\n\t0x1312: 0x15d9, 0x1313: 0x15d9, 0x1314: 0x15d9, 0x1315: 0x15d9, 0x1316: 0x15e1, 0x1317: 0x15e1,\n\t0x1318: 0x15e1, 0x1319: 0x15e1, 0x131a: 0x15e9, 0x131b: 0x15e9, 0x131c: 0x15e9, 0x131d: 0x15e9,\n\t0x131e: 0x15f1, 0x131f: 0x15f1, 0x1320: 0x15f1, 0x1321: 0x15f1, 0x1322: 0x15f9, 0x1323: 0x15f9,\n\t0x1324: 0x15f9, 0x1325: 0x15f9, 0x1326: 0x1601, 0x1327: 0x1601, 0x1328: 0x1601, 0x1329: 0x1601,\n\t0x132a: 0x1609, 0x132b: 0x1609, 0x132c: 0x1609, 0x132d: 0x1609, 0x132e: 0x1611, 0x132f: 0x1611,\n\t0x1330: 0x1611, 0x1331: 0x1611, 0x1332: 0x1619, 0x1333: 0x1619, 0x1334: 0x1619, 0x1335: 0x1619,\n\t0x1336: 0x1621, 0x1337: 0x1621, 0x1338: 0x1621, 0x1339: 0x1621, 0x133a: 0x1629, 0x133b: 0x1629,\n\t0x133c: 0x1629, 0x133d: 0x1629, 0x133e: 0x1631, 0x133f: 0x1631,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x1631, 0x1341: 0x1631, 0x1342: 0x1639, 0x1343: 0x1639, 0x1344: 0x1641, 0x1345: 0x1641,\n\t0x1346: 0x1649, 0x1347: 0x1649, 0x1348: 0x1651, 0x1349: 0x1651, 0x134a: 0x1659, 0x134b: 0x1659,\n\t0x134c: 0x1661, 0x134d: 0x1661, 0x134e: 0x1669, 0x134f: 0x1669, 0x1350: 0x1669, 0x1351: 0x1669,\n\t0x1352: 0x1671, 0x1353: 0x1671, 0x1354: 0x1671, 0x1355: 0x1671, 0x1356: 0x1679, 0x1357: 0x1679,\n\t0x1358: 0x1679, 0x1359: 0x1679, 0x135a: 0x1681, 0x135b: 0x1681, 0x135c: 0x1681, 0x135d: 0x1681,\n\t0x135e: 0x1689, 0x135f: 0x1689, 0x1360: 0x1691, 0x1361: 0x1691, 0x1362: 0x1691, 0x1363: 0x1691,\n\t0x1364: 0x1699, 0x1365: 0x1699, 0x1366: 0x16a1, 0x1367: 0x16a1, 0x1368: 0x16a1, 0x1369: 0x16a1,\n\t0x136a: 0x16a9, 0x136b: 0x16a9, 0x136c: 0x16a9, 0x136d: 0x16a9, 0x136e: 0x16b1, 0x136f: 0x16b1,\n\t0x1370: 0x16b9, 0x1371: 0x16b9, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818,\n\t0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818,\n\t0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0818, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040,\n\t0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040,\n\t0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040,\n\t0x1392: 0x0040, 0x1393: 0x16c1, 0x1394: 0x16c1, 0x1395: 0x16c1, 0x1396: 0x16c1, 0x1397: 0x16c9,\n\t0x1398: 0x16c9, 0x1399: 0x16d1, 0x139a: 0x16d1, 0x139b: 0x16d9, 0x139c: 0x16d9, 0x139d: 0x0149,\n\t0x139e: 0x16e1, 0x139f: 0x16e1, 0x13a0: 0x16e9, 0x13a1: 0x16e9, 0x13a2: 0x16f1, 0x13a3: 0x16f1,\n\t0x13a4: 0x16f9, 0x13a5: 0x16f9, 0x13a6: 0x16f9, 0x13a7: 0x16f9, 0x13a8: 0x1701, 0x13a9: 0x1701,\n\t0x13aa: 0x1709, 0x13ab: 0x1709, 0x13ac: 0x1711, 0x13ad: 0x1711, 0x13ae: 0x1719, 0x13af: 0x1719,\n\t0x13b0: 0x1721, 0x13b1: 0x1721, 0x13b2: 0x1729, 0x13b3: 0x1729, 0x13b4: 0x1731, 0x13b5: 0x1731,\n\t0x13b6: 0x1739, 0x13b7: 0x1739, 0x13b8: 0x1739, 0x13b9: 0x1741, 0x13ba: 0x1741, 0x13bb: 0x1741,\n\t0x13bc: 0x1749, 0x13bd: 0x1749, 0x13be: 0x1749, 0x13bf: 0x1749,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x1949, 0x13c1: 0x1951, 0x13c2: 0x1959, 0x13c3: 0x1961, 0x13c4: 0x1969, 0x13c5: 0x1971,\n\t0x13c6: 0x1979, 0x13c7: 0x1981, 0x13c8: 0x1989, 0x13c9: 0x1991, 0x13ca: 0x1999, 0x13cb: 0x19a1,\n\t0x13cc: 0x19a9, 0x13cd: 0x19b1, 0x13ce: 0x19b9, 0x13cf: 0x19c1, 0x13d0: 0x19c9, 0x13d1: 0x19d1,\n\t0x13d2: 0x19d9, 0x13d3: 0x19e1, 0x13d4: 0x19e9, 0x13d5: 0x19f1, 0x13d6: 0x19f9, 0x13d7: 0x1a01,\n\t0x13d8: 0x1a09, 0x13d9: 0x1a11, 0x13da: 0x1a19, 0x13db: 0x1a21, 0x13dc: 0x1a29, 0x13dd: 0x1a31,\n\t0x13de: 0x1a3a, 0x13df: 0x1a42, 0x13e0: 0x1a4a, 0x13e1: 0x1a52, 0x13e2: 0x1a5a, 0x13e3: 0x1a62,\n\t0x13e4: 0x1a69, 0x13e5: 0x1a71, 0x13e6: 0x1761, 0x13e7: 0x1a79, 0x13e8: 0x1741, 0x13e9: 0x1769,\n\t0x13ea: 0x1a81, 0x13eb: 0x1a89, 0x13ec: 0x1789, 0x13ed: 0x1a91, 0x13ee: 0x1791, 0x13ef: 0x1799,\n\t0x13f0: 0x1a99, 0x13f1: 0x1aa1, 0x13f2: 0x17b9, 0x13f3: 0x1aa9, 0x13f4: 0x17c1, 0x13f5: 0x17c9,\n\t0x13f6: 0x1ab1, 0x13f7: 0x1ab9, 0x13f8: 0x17d9, 0x13f9: 0x1ac1, 0x13fa: 0x17e1, 0x13fb: 0x17e9,\n\t0x13fc: 0x18d1, 0x13fd: 0x18d9, 0x13fe: 0x18f1, 0x13ff: 0x18f9,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x1901, 0x1401: 0x1921, 0x1402: 0x1929, 0x1403: 0x1931, 0x1404: 0x1939, 0x1405: 0x1959,\n\t0x1406: 0x1961, 0x1407: 0x1969, 0x1408: 0x1ac9, 0x1409: 0x1989, 0x140a: 0x1ad1, 0x140b: 0x1ad9,\n\t0x140c: 0x19b9, 0x140d: 0x1ae1, 0x140e: 0x19c1, 0x140f: 0x19c9, 0x1410: 0x1a31, 0x1411: 0x1ae9,\n\t0x1412: 0x1af1, 0x1413: 0x1a09, 0x1414: 0x1af9, 0x1415: 0x1a11, 0x1416: 0x1a19, 0x1417: 0x1751,\n\t0x1418: 0x1759, 0x1419: 0x1b01, 0x141a: 0x1761, 0x141b: 0x1b09, 0x141c: 0x1771, 0x141d: 0x1779,\n\t0x141e: 0x1781, 0x141f: 0x1789, 0x1420: 0x1b11, 0x1421: 0x17a1, 0x1422: 0x17a9, 0x1423: 0x17b1,\n\t0x1424: 0x17b9, 0x1425: 0x1b19, 0x1426: 0x17d9, 0x1427: 0x17f1, 0x1428: 0x17f9, 0x1429: 0x1801,\n\t0x142a: 0x1809, 0x142b: 0x1811, 0x142c: 0x1821, 0x142d: 0x1829, 0x142e: 0x1831, 0x142f: 0x1839,\n\t0x1430: 0x1841, 0x1431: 0x1849, 0x1432: 0x1b21, 0x1433: 0x1851, 0x1434: 0x1859, 0x1435: 0x1861,\n\t0x1436: 0x1869, 0x1437: 0x1871, 0x1438: 0x1879, 0x1439: 0x1889, 0x143a: 0x1891, 0x143b: 0x1899,\n\t0x143c: 0x18a1, 0x143d: 0x18a9, 0x143e: 0x18b1, 0x143f: 0x18b9,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x18c1, 0x1441: 0x18c9, 0x1442: 0x18e1, 0x1443: 0x18e9, 0x1444: 0x1909, 0x1445: 0x1911,\n\t0x1446: 0x1919, 0x1447: 0x1921, 0x1448: 0x1929, 0x1449: 0x1941, 0x144a: 0x1949, 0x144b: 0x1951,\n\t0x144c: 0x1959, 0x144d: 0x1b29, 0x144e: 0x1971, 0x144f: 0x1979, 0x1450: 0x1981, 0x1451: 0x1989,\n\t0x1452: 0x19a1, 0x1453: 0x19a9, 0x1454: 0x19b1, 0x1455: 0x19b9, 0x1456: 0x1b31, 0x1457: 0x19d1,\n\t0x1458: 0x19d9, 0x1459: 0x1b39, 0x145a: 0x19f1, 0x145b: 0x19f9, 0x145c: 0x1a01, 0x145d: 0x1a09,\n\t0x145e: 0x1b41, 0x145f: 0x1761, 0x1460: 0x1b09, 0x1461: 0x1789, 0x1462: 0x1b11, 0x1463: 0x17b9,\n\t0x1464: 0x1b19, 0x1465: 0x17d9, 0x1466: 0x1b49, 0x1467: 0x1841, 0x1468: 0x1b51, 0x1469: 0x1b59,\n\t0x146a: 0x1b61, 0x146b: 0x1921, 0x146c: 0x1929, 0x146d: 0x1959, 0x146e: 0x19b9, 0x146f: 0x1b31,\n\t0x1470: 0x1a09, 0x1471: 0x1b41, 0x1472: 0x1b69, 0x1473: 0x1b71, 0x1474: 0x1b79, 0x1475: 0x1b81,\n\t0x1476: 0x1b89, 0x1477: 0x1b91, 0x1478: 0x1b99, 0x1479: 0x1ba1, 0x147a: 0x1ba9, 0x147b: 0x1bb1,\n\t0x147c: 0x1bb9, 0x147d: 0x1bc1, 0x147e: 0x1bc9, 0x147f: 0x1bd1,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x1bd9, 0x1481: 0x1be1, 0x1482: 0x1be9, 0x1483: 0x1bf1, 0x1484: 0x1bf9, 0x1485: 0x1c01,\n\t0x1486: 0x1c09, 0x1487: 0x1c11, 0x1488: 0x1c19, 0x1489: 0x1c21, 0x148a: 0x1c29, 0x148b: 0x1c31,\n\t0x148c: 0x1b59, 0x148d: 0x1c39, 0x148e: 0x1c41, 0x148f: 0x1c49, 0x1490: 0x1c51, 0x1491: 0x1b81,\n\t0x1492: 0x1b89, 0x1493: 0x1b91, 0x1494: 0x1b99, 0x1495: 0x1ba1, 0x1496: 0x1ba9, 0x1497: 0x1bb1,\n\t0x1498: 0x1bb9, 0x1499: 0x1bc1, 0x149a: 0x1bc9, 0x149b: 0x1bd1, 0x149c: 0x1bd9, 0x149d: 0x1be1,\n\t0x149e: 0x1be9, 0x149f: 0x1bf1, 0x14a0: 0x1bf9, 0x14a1: 0x1c01, 0x14a2: 0x1c09, 0x14a3: 0x1c11,\n\t0x14a4: 0x1c19, 0x14a5: 0x1c21, 0x14a6: 0x1c29, 0x14a7: 0x1c31, 0x14a8: 0x1b59, 0x14a9: 0x1c39,\n\t0x14aa: 0x1c41, 0x14ab: 0x1c49, 0x14ac: 0x1c51, 0x14ad: 0x1c21, 0x14ae: 0x1c29, 0x14af: 0x1c31,\n\t0x14b0: 0x1b59, 0x14b1: 0x1b51, 0x14b2: 0x1b61, 0x14b3: 0x1881, 0x14b4: 0x1829, 0x14b5: 0x1831,\n\t0x14b6: 0x1839, 0x14b7: 0x1c21, 0x14b8: 0x1c29, 0x14b9: 0x1c31, 0x14ba: 0x1881, 0x14bb: 0x1889,\n\t0x14bc: 0x1c59, 0x14bd: 0x1c59, 0x14be: 0x0018, 0x14bf: 0x0018,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x0018, 0x14c1: 0x0018, 0x14c2: 0x0018, 0x14c3: 0x0018, 0x14c4: 0x0018, 0x14c5: 0x0018,\n\t0x14c6: 0x0018, 0x14c7: 0x0018, 0x14c8: 0x0018, 0x14c9: 0x0018, 0x14ca: 0x0018, 0x14cb: 0x0018,\n\t0x14cc: 0x0018, 0x14cd: 0x0018, 0x14ce: 0x0018, 0x14cf: 0x0018, 0x14d0: 0x1c61, 0x14d1: 0x1c69,\n\t0x14d2: 0x1c69, 0x14d3: 0x1c71, 0x14d4: 0x1c79, 0x14d5: 0x1c81, 0x14d6: 0x1c89, 0x14d7: 0x1c91,\n\t0x14d8: 0x1c99, 0x14d9: 0x1c99, 0x14da: 0x1ca1, 0x14db: 0x1ca9, 0x14dc: 0x1cb1, 0x14dd: 0x1cb9,\n\t0x14de: 0x1cc1, 0x14df: 0x1cc9, 0x14e0: 0x1cc9, 0x14e1: 0x1cd1, 0x14e2: 0x1cd9, 0x14e3: 0x1cd9,\n\t0x14e4: 0x1ce1, 0x14e5: 0x1ce1, 0x14e6: 0x1ce9, 0x14e7: 0x1cf1, 0x14e8: 0x1cf1, 0x14e9: 0x1cf9,\n\t0x14ea: 0x1d01, 0x14eb: 0x1d01, 0x14ec: 0x1d09, 0x14ed: 0x1d09, 0x14ee: 0x1d11, 0x14ef: 0x1d19,\n\t0x14f0: 0x1d19, 0x14f1: 0x1d21, 0x14f2: 0x1d21, 0x14f3: 0x1d29, 0x14f4: 0x1d31, 0x14f5: 0x1d39,\n\t0x14f6: 0x1d41, 0x14f7: 0x1d41, 0x14f8: 0x1d49, 0x14f9: 0x1d51, 0x14fa: 0x1d59, 0x14fb: 0x1d61,\n\t0x14fc: 0x1d69, 0x14fd: 0x1d69, 0x14fe: 0x1d71, 0x14ff: 0x1d79,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x1f29, 0x1501: 0x1f31, 0x1502: 0x1f39, 0x1503: 0x1f11, 0x1504: 0x1d39, 0x1505: 0x1ce9,\n\t0x1506: 0x1f41, 0x1507: 0x1f49, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040,\n\t0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0018, 0x1510: 0x0040, 0x1511: 0x0040,\n\t0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040,\n\t0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040,\n\t0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040,\n\t0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040,\n\t0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040,\n\t0x1530: 0x1f51, 0x1531: 0x1f59, 0x1532: 0x1f61, 0x1533: 0x1f69, 0x1534: 0x1f71, 0x1535: 0x1f79,\n\t0x1536: 0x1f81, 0x1537: 0x1f89, 0x1538: 0x1f91, 0x1539: 0x1f99, 0x153a: 0x1fa2, 0x153b: 0x1faa,\n\t0x153c: 0x1fb1, 0x153d: 0x0018, 0x153e: 0x0018, 0x153f: 0x0018,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0,\n\t0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0,\n\t0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0x1fba, 0x1551: 0x7d8d,\n\t0x1552: 0x0040, 0x1553: 0x1fc2, 0x1554: 0x0122, 0x1555: 0x1fca, 0x1556: 0x1fd2, 0x1557: 0x7dad,\n\t0x1558: 0x7dcd, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040,\n\t0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308,\n\t0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308,\n\t0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308,\n\t0x1570: 0x0040, 0x1571: 0x7ded, 0x1572: 0x7e0d, 0x1573: 0x1fda, 0x1574: 0x1fda, 0x1575: 0x072a,\n\t0x1576: 0x0732, 0x1577: 0x1fe2, 0x1578: 0x1fea, 0x1579: 0x7e2d, 0x157a: 0x7e4d, 0x157b: 0x7e6d,\n\t0x157c: 0x7e2d, 0x157d: 0x7e8d, 0x157e: 0x7ead, 0x157f: 0x7e8d,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x7ecd, 0x1581: 0x7eed, 0x1582: 0x7f0d, 0x1583: 0x7eed, 0x1584: 0x7f2d, 0x1585: 0x0018,\n\t0x1586: 0x0018, 0x1587: 0x1ff2, 0x1588: 0x1ffa, 0x1589: 0x7f4e, 0x158a: 0x7f6e, 0x158b: 0x7f8e,\n\t0x158c: 0x7fae, 0x158d: 0x1fda, 0x158e: 0x1fda, 0x158f: 0x1fda, 0x1590: 0x1fba, 0x1591: 0x7fcd,\n\t0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x0122, 0x1595: 0x1fc2, 0x1596: 0x1fd2, 0x1597: 0x1fca,\n\t0x1598: 0x7fed, 0x1599: 0x072a, 0x159a: 0x0732, 0x159b: 0x1fe2, 0x159c: 0x1fea, 0x159d: 0x7ecd,\n\t0x159e: 0x7f2d, 0x159f: 0x2002, 0x15a0: 0x200a, 0x15a1: 0x2012, 0x15a2: 0x071a, 0x15a3: 0x2019,\n\t0x15a4: 0x2022, 0x15a5: 0x202a, 0x15a6: 0x0722, 0x15a7: 0x0040, 0x15a8: 0x2032, 0x15a9: 0x203a,\n\t0x15aa: 0x2042, 0x15ab: 0x204a, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040,\n\t0x15b0: 0x800e, 0x15b1: 0x2051, 0x15b2: 0x802e, 0x15b3: 0x0808, 0x15b4: 0x804e, 0x15b5: 0x0040,\n\t0x15b6: 0x806e, 0x15b7: 0x2059, 0x15b8: 0x808e, 0x15b9: 0x2061, 0x15ba: 0x80ae, 0x15bb: 0x2069,\n\t0x15bc: 0x80ce, 0x15bd: 0x2071, 0x15be: 0x80ee, 0x15bf: 0x2079,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x2081, 0x15c1: 0x2089, 0x15c2: 0x2089, 0x15c3: 0x2091, 0x15c4: 0x2091, 0x15c5: 0x2099,\n\t0x15c6: 0x2099, 0x15c7: 0x20a1, 0x15c8: 0x20a1, 0x15c9: 0x20a9, 0x15ca: 0x20a9, 0x15cb: 0x20a9,\n\t0x15cc: 0x20a9, 0x15cd: 0x20b1, 0x15ce: 0x20b1, 0x15cf: 0x20b9, 0x15d0: 0x20b9, 0x15d1: 0x20b9,\n\t0x15d2: 0x20b9, 0x15d3: 0x20c1, 0x15d4: 0x20c1, 0x15d5: 0x20c9, 0x15d6: 0x20c9, 0x15d7: 0x20c9,\n\t0x15d8: 0x20c9, 0x15d9: 0x20d1, 0x15da: 0x20d1, 0x15db: 0x20d1, 0x15dc: 0x20d1, 0x15dd: 0x20d9,\n\t0x15de: 0x20d9, 0x15df: 0x20d9, 0x15e0: 0x20d9, 0x15e1: 0x20e1, 0x15e2: 0x20e1, 0x15e3: 0x20e1,\n\t0x15e4: 0x20e1, 0x15e5: 0x20e9, 0x15e6: 0x20e9, 0x15e7: 0x20e9, 0x15e8: 0x20e9, 0x15e9: 0x20f1,\n\t0x15ea: 0x20f1, 0x15eb: 0x20f9, 0x15ec: 0x20f9, 0x15ed: 0x2101, 0x15ee: 0x2101, 0x15ef: 0x2109,\n\t0x15f0: 0x2109, 0x15f1: 0x2111, 0x15f2: 0x2111, 0x15f3: 0x2111, 0x15f4: 0x2111, 0x15f5: 0x2119,\n\t0x15f6: 0x2119, 0x15f7: 0x2119, 0x15f8: 0x2119, 0x15f9: 0x2121, 0x15fa: 0x2121, 0x15fb: 0x2121,\n\t0x15fc: 0x2121, 0x15fd: 0x2129, 0x15fe: 0x2129, 0x15ff: 0x2129,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x2129, 0x1601: 0x2131, 0x1602: 0x2131, 0x1603: 0x2131, 0x1604: 0x2131, 0x1605: 0x2139,\n\t0x1606: 0x2139, 0x1607: 0x2139, 0x1608: 0x2139, 0x1609: 0x2141, 0x160a: 0x2141, 0x160b: 0x2141,\n\t0x160c: 0x2141, 0x160d: 0x2149, 0x160e: 0x2149, 0x160f: 0x2149, 0x1610: 0x2149, 0x1611: 0x2151,\n\t0x1612: 0x2151, 0x1613: 0x2151, 0x1614: 0x2151, 0x1615: 0x2159, 0x1616: 0x2159, 0x1617: 0x2159,\n\t0x1618: 0x2159, 0x1619: 0x2161, 0x161a: 0x2161, 0x161b: 0x2161, 0x161c: 0x2161, 0x161d: 0x2169,\n\t0x161e: 0x2169, 0x161f: 0x2169, 0x1620: 0x2169, 0x1621: 0x2171, 0x1622: 0x2171, 0x1623: 0x2171,\n\t0x1624: 0x2171, 0x1625: 0x2179, 0x1626: 0x2179, 0x1627: 0x2179, 0x1628: 0x2179, 0x1629: 0x2181,\n\t0x162a: 0x2181, 0x162b: 0x2181, 0x162c: 0x2181, 0x162d: 0x2189, 0x162e: 0x2189, 0x162f: 0x1701,\n\t0x1630: 0x1701, 0x1631: 0x2191, 0x1632: 0x2191, 0x1633: 0x2191, 0x1634: 0x2191, 0x1635: 0x2199,\n\t0x1636: 0x2199, 0x1637: 0x21a1, 0x1638: 0x21a1, 0x1639: 0x21a9, 0x163a: 0x21a9, 0x163b: 0x21b1,\n\t0x163c: 0x21b1, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0040, 0x1641: 0x1fca, 0x1642: 0x21ba, 0x1643: 0x2002, 0x1644: 0x203a, 0x1645: 0x2042,\n\t0x1646: 0x200a, 0x1647: 0x21c2, 0x1648: 0x072a, 0x1649: 0x0732, 0x164a: 0x2012, 0x164b: 0x071a,\n\t0x164c: 0x1fba, 0x164d: 0x2019, 0x164e: 0x0961, 0x164f: 0x21ca, 0x1650: 0x06e1, 0x1651: 0x0049,\n\t0x1652: 0x0029, 0x1653: 0x0031, 0x1654: 0x06e9, 0x1655: 0x06f1, 0x1656: 0x06f9, 0x1657: 0x0701,\n\t0x1658: 0x0709, 0x1659: 0x0711, 0x165a: 0x1fc2, 0x165b: 0x0122, 0x165c: 0x2022, 0x165d: 0x0722,\n\t0x165e: 0x202a, 0x165f: 0x1fd2, 0x1660: 0x204a, 0x1661: 0x0019, 0x1662: 0x02e9, 0x1663: 0x03d9,\n\t0x1664: 0x02f1, 0x1665: 0x02f9, 0x1666: 0x03f1, 0x1667: 0x0309, 0x1668: 0x00a9, 0x1669: 0x0311,\n\t0x166a: 0x00b1, 0x166b: 0x0319, 0x166c: 0x0101, 0x166d: 0x0321, 0x166e: 0x0329, 0x166f: 0x0051,\n\t0x1670: 0x0339, 0x1671: 0x0751, 0x1672: 0x00b9, 0x1673: 0x0089, 0x1674: 0x0341, 0x1675: 0x0349,\n\t0x1676: 0x0391, 0x1677: 0x00c1, 0x1678: 0x0109, 0x1679: 0x00c9, 0x167a: 0x04b1, 0x167b: 0x1ff2,\n\t0x167c: 0x2032, 0x167d: 0x1ffa, 0x167e: 0x21d2, 0x167f: 0x1fda,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x0672, 0x1681: 0x0019, 0x1682: 0x02e9, 0x1683: 0x03d9, 0x1684: 0x02f1, 0x1685: 0x02f9,\n\t0x1686: 0x03f1, 0x1687: 0x0309, 0x1688: 0x00a9, 0x1689: 0x0311, 0x168a: 0x00b1, 0x168b: 0x0319,\n\t0x168c: 0x0101, 0x168d: 0x0321, 0x168e: 0x0329, 0x168f: 0x0051, 0x1690: 0x0339, 0x1691: 0x0751,\n\t0x1692: 0x00b9, 0x1693: 0x0089, 0x1694: 0x0341, 0x1695: 0x0349, 0x1696: 0x0391, 0x1697: 0x00c1,\n\t0x1698: 0x0109, 0x1699: 0x00c9, 0x169a: 0x04b1, 0x169b: 0x1fe2, 0x169c: 0x21da, 0x169d: 0x1fea,\n\t0x169e: 0x21e2, 0x169f: 0x810d, 0x16a0: 0x812d, 0x16a1: 0x0961, 0x16a2: 0x814d, 0x16a3: 0x814d,\n\t0x16a4: 0x816d, 0x16a5: 0x818d, 0x16a6: 0x81ad, 0x16a7: 0x81cd, 0x16a8: 0x81ed, 0x16a9: 0x820d,\n\t0x16aa: 0x822d, 0x16ab: 0x824d, 0x16ac: 0x826d, 0x16ad: 0x828d, 0x16ae: 0x82ad, 0x16af: 0x82cd,\n\t0x16b0: 0x82ed, 0x16b1: 0x830d, 0x16b2: 0x832d, 0x16b3: 0x834d, 0x16b4: 0x836d, 0x16b5: 0x838d,\n\t0x16b6: 0x83ad, 0x16b7: 0x83cd, 0x16b8: 0x83ed, 0x16b9: 0x840d, 0x16ba: 0x842d, 0x16bb: 0x844d,\n\t0x16bc: 0x81ed, 0x16bd: 0x846d, 0x16be: 0x848d, 0x16bf: 0x824d,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x84ad, 0x16c1: 0x84cd, 0x16c2: 0x84ed, 0x16c3: 0x850d, 0x16c4: 0x852d, 0x16c5: 0x854d,\n\t0x16c6: 0x856d, 0x16c7: 0x858d, 0x16c8: 0x850d, 0x16c9: 0x85ad, 0x16ca: 0x850d, 0x16cb: 0x85cd,\n\t0x16cc: 0x85cd, 0x16cd: 0x85ed, 0x16ce: 0x85ed, 0x16cf: 0x860d, 0x16d0: 0x854d, 0x16d1: 0x862d,\n\t0x16d2: 0x864d, 0x16d3: 0x862d, 0x16d4: 0x866d, 0x16d5: 0x864d, 0x16d6: 0x868d, 0x16d7: 0x868d,\n\t0x16d8: 0x86ad, 0x16d9: 0x86ad, 0x16da: 0x86cd, 0x16db: 0x86cd, 0x16dc: 0x864d, 0x16dd: 0x814d,\n\t0x16de: 0x86ed, 0x16df: 0x870d, 0x16e0: 0x0040, 0x16e1: 0x872d, 0x16e2: 0x874d, 0x16e3: 0x876d,\n\t0x16e4: 0x878d, 0x16e5: 0x876d, 0x16e6: 0x87ad, 0x16e7: 0x87cd, 0x16e8: 0x87ed, 0x16e9: 0x87ed,\n\t0x16ea: 0x880d, 0x16eb: 0x880d, 0x16ec: 0x882d, 0x16ed: 0x882d, 0x16ee: 0x880d, 0x16ef: 0x880d,\n\t0x16f0: 0x884d, 0x16f1: 0x886d, 0x16f2: 0x888d, 0x16f3: 0x88ad, 0x16f4: 0x88cd, 0x16f5: 0x88ed,\n\t0x16f6: 0x88ed, 0x16f7: 0x88ed, 0x16f8: 0x890d, 0x16f9: 0x890d, 0x16fa: 0x890d, 0x16fb: 0x890d,\n\t0x16fc: 0x87ed, 0x16fd: 0x87ed, 0x16fe: 0x87ed, 0x16ff: 0x0040,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x874d, 0x1703: 0x872d, 0x1704: 0x892d, 0x1705: 0x872d,\n\t0x1706: 0x874d, 0x1707: 0x872d, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x894d, 0x170b: 0x874d,\n\t0x170c: 0x896d, 0x170d: 0x892d, 0x170e: 0x896d, 0x170f: 0x874d, 0x1710: 0x0040, 0x1711: 0x0040,\n\t0x1712: 0x898d, 0x1713: 0x89ad, 0x1714: 0x88ad, 0x1715: 0x896d, 0x1716: 0x892d, 0x1717: 0x896d,\n\t0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x89cd, 0x171b: 0x89ed, 0x171c: 0x89cd, 0x171d: 0x0040,\n\t0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0x21e9, 0x1721: 0x21f1, 0x1722: 0x21f9, 0x1723: 0x8a0e,\n\t0x1724: 0x2201, 0x1725: 0x2209, 0x1726: 0x8a2d, 0x1727: 0x0040, 0x1728: 0x8a4d, 0x1729: 0x8a6d,\n\t0x172a: 0x8a8d, 0x172b: 0x8a6d, 0x172c: 0x8aad, 0x172d: 0x8acd, 0x172e: 0x8aed, 0x172f: 0x0040,\n\t0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040,\n\t0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340,\n\t0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x0008, 0x1741: 0x0008, 0x1742: 0x0008, 0x1743: 0x0008, 0x1744: 0x0008, 0x1745: 0x0008,\n\t0x1746: 0x0008, 0x1747: 0x0008, 0x1748: 0x0008, 0x1749: 0x0008, 0x174a: 0x0008, 0x174b: 0x0008,\n\t0x174c: 0x0008, 0x174d: 0x0008, 0x174e: 0x0008, 0x174f: 0x0008, 0x1750: 0x0008, 0x1751: 0x0008,\n\t0x1752: 0x0008, 0x1753: 0x0008, 0x1754: 0x0008, 0x1755: 0x0008, 0x1756: 0x0008, 0x1757: 0x0008,\n\t0x1758: 0x0008, 0x1759: 0x0008, 0x175a: 0x0008, 0x175b: 0x0008, 0x175c: 0x0008, 0x175d: 0x0008,\n\t0x175e: 0x0008, 0x175f: 0x0008, 0x1760: 0x0008, 0x1761: 0x0008, 0x1762: 0x0008, 0x1763: 0x0008,\n\t0x1764: 0x0040, 0x1765: 0x0040, 0x1766: 0x0040, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040,\n\t0x176a: 0x0040, 0x176b: 0x0040, 0x176c: 0x0040, 0x176d: 0x0040, 0x176e: 0x0040, 0x176f: 0x0018,\n\t0x1770: 0x8b3d, 0x1771: 0x8b55, 0x1772: 0x8b6d, 0x1773: 0x8b55, 0x1774: 0x8b85, 0x1775: 0x8b55,\n\t0x1776: 0x8b6d, 0x1777: 0x8b55, 0x1778: 0x8b3d, 0x1779: 0x8b9d, 0x177a: 0x8bb5, 0x177b: 0x0040,\n\t0x177c: 0x8bcd, 0x177d: 0x8b9d, 0x177e: 0x8bb5, 0x177f: 0x8b9d,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0xe13d, 0x1781: 0xe14d, 0x1782: 0xe15d, 0x1783: 0xe14d, 0x1784: 0xe17d, 0x1785: 0xe14d,\n\t0x1786: 0xe15d, 0x1787: 0xe14d, 0x1788: 0xe13d, 0x1789: 0xe1cd, 0x178a: 0xe1dd, 0x178b: 0x0040,\n\t0x178c: 0xe1fd, 0x178d: 0xe1cd, 0x178e: 0xe1dd, 0x178f: 0xe1cd, 0x1790: 0xe13d, 0x1791: 0xe14d,\n\t0x1792: 0xe15d, 0x1793: 0x0040, 0x1794: 0xe17d, 0x1795: 0xe14d, 0x1796: 0x0040, 0x1797: 0x0008,\n\t0x1798: 0x0008, 0x1799: 0x0008, 0x179a: 0x0008, 0x179b: 0x0008, 0x179c: 0x0008, 0x179d: 0x0008,\n\t0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x0040, 0x17a3: 0x0008,\n\t0x17a4: 0x0008, 0x17a5: 0x0008, 0x17a6: 0x0008, 0x17a7: 0x0008, 0x17a8: 0x0008, 0x17a9: 0x0008,\n\t0x17aa: 0x0008, 0x17ab: 0x0008, 0x17ac: 0x0008, 0x17ad: 0x0008, 0x17ae: 0x0008, 0x17af: 0x0008,\n\t0x17b0: 0x0008, 0x17b1: 0x0008, 0x17b2: 0x0040, 0x17b3: 0x0008, 0x17b4: 0x0008, 0x17b5: 0x0008,\n\t0x17b6: 0x0008, 0x17b7: 0x0008, 0x17b8: 0x0008, 0x17b9: 0x0008, 0x17ba: 0x0040, 0x17bb: 0x0008,\n\t0x17bc: 0x0008, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x0008, 0x17c1: 0x2211, 0x17c2: 0x2219, 0x17c3: 0x02e1, 0x17c4: 0x2221, 0x17c5: 0x2229,\n\t0x17c6: 0x0040, 0x17c7: 0x2231, 0x17c8: 0x2239, 0x17c9: 0x2241, 0x17ca: 0x2249, 0x17cb: 0x2251,\n\t0x17cc: 0x2259, 0x17cd: 0x2261, 0x17ce: 0x2269, 0x17cf: 0x2271, 0x17d0: 0x2279, 0x17d1: 0x2281,\n\t0x17d2: 0x2289, 0x17d3: 0x2291, 0x17d4: 0x2299, 0x17d5: 0x0741, 0x17d6: 0x22a1, 0x17d7: 0x22a9,\n\t0x17d8: 0x22b1, 0x17d9: 0x22b9, 0x17da: 0x22c1, 0x17db: 0x13d9, 0x17dc: 0x8be5, 0x17dd: 0x22c9,\n\t0x17de: 0x22d1, 0x17df: 0x8c05, 0x17e0: 0x22d9, 0x17e1: 0x8c25, 0x17e2: 0x22e1, 0x17e3: 0x22e9,\n\t0x17e4: 0x22f1, 0x17e5: 0x0751, 0x17e6: 0x22f9, 0x17e7: 0x8c45, 0x17e8: 0x0949, 0x17e9: 0x2301,\n\t0x17ea: 0x2309, 0x17eb: 0x2311, 0x17ec: 0x2319, 0x17ed: 0x2321, 0x17ee: 0x2329, 0x17ef: 0x2331,\n\t0x17f0: 0x2339, 0x17f1: 0x0040, 0x17f2: 0x2341, 0x17f3: 0x2349, 0x17f4: 0x2351, 0x17f5: 0x2359,\n\t0x17f6: 0x2361, 0x17f7: 0x2369, 0x17f8: 0x2371, 0x17f9: 0x8c65, 0x17fa: 0x8c85, 0x17fb: 0x0040,\n\t0x17fc: 0x0040, 0x17fd: 0x0040, 0x17fe: 0x0040, 0x17ff: 0x0040,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x0a08, 0x1801: 0x0a08, 0x1802: 0x0a08, 0x1803: 0x0a08, 0x1804: 0x0a08, 0x1805: 0x0c08,\n\t0x1806: 0x0808, 0x1807: 0x0c08, 0x1808: 0x0818, 0x1809: 0x0c08, 0x180a: 0x0c08, 0x180b: 0x0808,\n\t0x180c: 0x0808, 0x180d: 0x0908, 0x180e: 0x0c08, 0x180f: 0x0c08, 0x1810: 0x0c08, 0x1811: 0x0c08,\n\t0x1812: 0x0c08, 0x1813: 0x0a08, 0x1814: 0x0a08, 0x1815: 0x0a08, 0x1816: 0x0a08, 0x1817: 0x0908,\n\t0x1818: 0x0a08, 0x1819: 0x0a08, 0x181a: 0x0a08, 0x181b: 0x0a08, 0x181c: 0x0a08, 0x181d: 0x0c08,\n\t0x181e: 0x0a08, 0x181f: 0x0a08, 0x1820: 0x0a08, 0x1821: 0x0c08, 0x1822: 0x0808, 0x1823: 0x0808,\n\t0x1824: 0x0c08, 0x1825: 0x3308, 0x1826: 0x3308, 0x1827: 0x0040, 0x1828: 0x0040, 0x1829: 0x0040,\n\t0x182a: 0x0040, 0x182b: 0x0a18, 0x182c: 0x0a18, 0x182d: 0x0a18, 0x182e: 0x0a18, 0x182f: 0x0c18,\n\t0x1830: 0x0818, 0x1831: 0x0818, 0x1832: 0x0818, 0x1833: 0x0818, 0x1834: 0x0818, 0x1835: 0x0818,\n\t0x1836: 0x0818, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040,\n\t0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x0a08, 0x1841: 0x0c08, 0x1842: 0x0a08, 0x1843: 0x0c08, 0x1844: 0x0c08, 0x1845: 0x0c08,\n\t0x1846: 0x0a08, 0x1847: 0x0a08, 0x1848: 0x0a08, 0x1849: 0x0c08, 0x184a: 0x0a08, 0x184b: 0x0a08,\n\t0x184c: 0x0c08, 0x184d: 0x0a08, 0x184e: 0x0c08, 0x184f: 0x0c08, 0x1850: 0x0a08, 0x1851: 0x0c08,\n\t0x1852: 0x0040, 0x1853: 0x0040, 0x1854: 0x0040, 0x1855: 0x0040, 0x1856: 0x0040, 0x1857: 0x0040,\n\t0x1858: 0x0040, 0x1859: 0x0818, 0x185a: 0x0818, 0x185b: 0x0818, 0x185c: 0x0818, 0x185d: 0x0040,\n\t0x185e: 0x0040, 0x185f: 0x0040, 0x1860: 0x0040, 0x1861: 0x0040, 0x1862: 0x0040, 0x1863: 0x0040,\n\t0x1864: 0x0040, 0x1865: 0x0040, 0x1866: 0x0040, 0x1867: 0x0040, 0x1868: 0x0040, 0x1869: 0x0c18,\n\t0x186a: 0x0c18, 0x186b: 0x0c18, 0x186c: 0x0c18, 0x186d: 0x0a18, 0x186e: 0x0a18, 0x186f: 0x0818,\n\t0x1870: 0x0040, 0x1871: 0x0040, 0x1872: 0x0040, 0x1873: 0x0040, 0x1874: 0x0040, 0x1875: 0x0040,\n\t0x1876: 0x0040, 0x1877: 0x0040, 0x1878: 0x0040, 0x1879: 0x0040, 0x187a: 0x0040, 0x187b: 0x0040,\n\t0x187c: 0x0040, 0x187d: 0x0040, 0x187e: 0x0040, 0x187f: 0x0040,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x3308, 0x1881: 0x3308, 0x1882: 0x3008, 0x1883: 0x3008, 0x1884: 0x0040, 0x1885: 0x0008,\n\t0x1886: 0x0008, 0x1887: 0x0008, 0x1888: 0x0008, 0x1889: 0x0008, 0x188a: 0x0008, 0x188b: 0x0008,\n\t0x188c: 0x0008, 0x188d: 0x0040, 0x188e: 0x0040, 0x188f: 0x0008, 0x1890: 0x0008, 0x1891: 0x0040,\n\t0x1892: 0x0040, 0x1893: 0x0008, 0x1894: 0x0008, 0x1895: 0x0008, 0x1896: 0x0008, 0x1897: 0x0008,\n\t0x1898: 0x0008, 0x1899: 0x0008, 0x189a: 0x0008, 0x189b: 0x0008, 0x189c: 0x0008, 0x189d: 0x0008,\n\t0x189e: 0x0008, 0x189f: 0x0008, 0x18a0: 0x0008, 0x18a1: 0x0008, 0x18a2: 0x0008, 0x18a3: 0x0008,\n\t0x18a4: 0x0008, 0x18a5: 0x0008, 0x18a6: 0x0008, 0x18a7: 0x0008, 0x18a8: 0x0008, 0x18a9: 0x0040,\n\t0x18aa: 0x0008, 0x18ab: 0x0008, 0x18ac: 0x0008, 0x18ad: 0x0008, 0x18ae: 0x0008, 0x18af: 0x0008,\n\t0x18b0: 0x0008, 0x18b1: 0x0040, 0x18b2: 0x0008, 0x18b3: 0x0008, 0x18b4: 0x0040, 0x18b5: 0x0008,\n\t0x18b6: 0x0008, 0x18b7: 0x0008, 0x18b8: 0x0008, 0x18b9: 0x0008, 0x18ba: 0x0040, 0x18bb: 0x3308,\n\t0x18bc: 0x3308, 0x18bd: 0x0008, 0x18be: 0x3008, 0x18bf: 0x3008,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x3308, 0x18c1: 0x3008, 0x18c2: 0x3008, 0x18c3: 0x3008, 0x18c4: 0x3008, 0x18c5: 0x0040,\n\t0x18c6: 0x0040, 0x18c7: 0x3008, 0x18c8: 0x3008, 0x18c9: 0x0040, 0x18ca: 0x0040, 0x18cb: 0x3008,\n\t0x18cc: 0x3008, 0x18cd: 0x3808, 0x18ce: 0x0040, 0x18cf: 0x0040, 0x18d0: 0x0008, 0x18d1: 0x0040,\n\t0x18d2: 0x0040, 0x18d3: 0x0040, 0x18d4: 0x0040, 0x18d5: 0x0040, 0x18d6: 0x0040, 0x18d7: 0x3008,\n\t0x18d8: 0x0040, 0x18d9: 0x0040, 0x18da: 0x0040, 0x18db: 0x0040, 0x18dc: 0x0040, 0x18dd: 0x0008,\n\t0x18de: 0x0008, 0x18df: 0x0008, 0x18e0: 0x0008, 0x18e1: 0x0008, 0x18e2: 0x3008, 0x18e3: 0x3008,\n\t0x18e4: 0x0040, 0x18e5: 0x0040, 0x18e6: 0x3308, 0x18e7: 0x3308, 0x18e8: 0x3308, 0x18e9: 0x3308,\n\t0x18ea: 0x3308, 0x18eb: 0x3308, 0x18ec: 0x3308, 0x18ed: 0x0040, 0x18ee: 0x0040, 0x18ef: 0x0040,\n\t0x18f0: 0x3308, 0x18f1: 0x3308, 0x18f2: 0x3308, 0x18f3: 0x3308, 0x18f4: 0x3308, 0x18f5: 0x0040,\n\t0x18f6: 0x0040, 0x18f7: 0x0040, 0x18f8: 0x0040, 0x18f9: 0x0040, 0x18fa: 0x0040, 0x18fb: 0x0040,\n\t0x18fc: 0x0040, 0x18fd: 0x0040, 0x18fe: 0x0040, 0x18ff: 0x0040,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x0008, 0x1901: 0x0008, 0x1902: 0x0008, 0x1903: 0x0008, 0x1904: 0x0008, 0x1905: 0x0008,\n\t0x1906: 0x0008, 0x1907: 0x0040, 0x1908: 0x0040, 0x1909: 0x0008, 0x190a: 0x0040, 0x190b: 0x0040,\n\t0x190c: 0x0008, 0x190d: 0x0008, 0x190e: 0x0008, 0x190f: 0x0008, 0x1910: 0x0008, 0x1911: 0x0008,\n\t0x1912: 0x0008, 0x1913: 0x0008, 0x1914: 0x0040, 0x1915: 0x0008, 0x1916: 0x0008, 0x1917: 0x0040,\n\t0x1918: 0x0008, 0x1919: 0x0008, 0x191a: 0x0008, 0x191b: 0x0008, 0x191c: 0x0008, 0x191d: 0x0008,\n\t0x191e: 0x0008, 0x191f: 0x0008, 0x1920: 0x0008, 0x1921: 0x0008, 0x1922: 0x0008, 0x1923: 0x0008,\n\t0x1924: 0x0008, 0x1925: 0x0008, 0x1926: 0x0008, 0x1927: 0x0008, 0x1928: 0x0008, 0x1929: 0x0008,\n\t0x192a: 0x0008, 0x192b: 0x0008, 0x192c: 0x0008, 0x192d: 0x0008, 0x192e: 0x0008, 0x192f: 0x0008,\n\t0x1930: 0x3008, 0x1931: 0x3008, 0x1932: 0x3008, 0x1933: 0x3008, 0x1934: 0x3008, 0x1935: 0x3008,\n\t0x1936: 0x0040, 0x1937: 0x3008, 0x1938: 0x3008, 0x1939: 0x0040, 0x193a: 0x0040, 0x193b: 0x3308,\n\t0x193c: 0x3308, 0x193d: 0x3808, 0x193e: 0x3b08, 0x193f: 0x0008,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x0019, 0x1941: 0x02e9, 0x1942: 0x03d9, 0x1943: 0x02f1, 0x1944: 0x02f9, 0x1945: 0x03f1,\n\t0x1946: 0x0309, 0x1947: 0x00a9, 0x1948: 0x0311, 0x1949: 0x00b1, 0x194a: 0x0319, 0x194b: 0x0101,\n\t0x194c: 0x0321, 0x194d: 0x0329, 0x194e: 0x0051, 0x194f: 0x0339, 0x1950: 0x0751, 0x1951: 0x00b9,\n\t0x1952: 0x0089, 0x1953: 0x0341, 0x1954: 0x0349, 0x1955: 0x0391, 0x1956: 0x00c1, 0x1957: 0x0109,\n\t0x1958: 0x00c9, 0x1959: 0x04b1, 0x195a: 0x0019, 0x195b: 0x02e9, 0x195c: 0x03d9, 0x195d: 0x02f1,\n\t0x195e: 0x02f9, 0x195f: 0x03f1, 0x1960: 0x0309, 0x1961: 0x00a9, 0x1962: 0x0311, 0x1963: 0x00b1,\n\t0x1964: 0x0319, 0x1965: 0x0101, 0x1966: 0x0321, 0x1967: 0x0329, 0x1968: 0x0051, 0x1969: 0x0339,\n\t0x196a: 0x0751, 0x196b: 0x00b9, 0x196c: 0x0089, 0x196d: 0x0341, 0x196e: 0x0349, 0x196f: 0x0391,\n\t0x1970: 0x00c1, 0x1971: 0x0109, 0x1972: 0x00c9, 0x1973: 0x04b1, 0x1974: 0x0019, 0x1975: 0x02e9,\n\t0x1976: 0x03d9, 0x1977: 0x02f1, 0x1978: 0x02f9, 0x1979: 0x03f1, 0x197a: 0x0309, 0x197b: 0x00a9,\n\t0x197c: 0x0311, 0x197d: 0x00b1, 0x197e: 0x0319, 0x197f: 0x0101,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x0321, 0x1981: 0x0329, 0x1982: 0x0051, 0x1983: 0x0339, 0x1984: 0x0751, 0x1985: 0x00b9,\n\t0x1986: 0x0089, 0x1987: 0x0341, 0x1988: 0x0349, 0x1989: 0x0391, 0x198a: 0x00c1, 0x198b: 0x0109,\n\t0x198c: 0x00c9, 0x198d: 0x04b1, 0x198e: 0x0019, 0x198f: 0x02e9, 0x1990: 0x03d9, 0x1991: 0x02f1,\n\t0x1992: 0x02f9, 0x1993: 0x03f1, 0x1994: 0x0309, 0x1995: 0x0040, 0x1996: 0x0311, 0x1997: 0x00b1,\n\t0x1998: 0x0319, 0x1999: 0x0101, 0x199a: 0x0321, 0x199b: 0x0329, 0x199c: 0x0051, 0x199d: 0x0339,\n\t0x199e: 0x0751, 0x199f: 0x00b9, 0x19a0: 0x0089, 0x19a1: 0x0341, 0x19a2: 0x0349, 0x19a3: 0x0391,\n\t0x19a4: 0x00c1, 0x19a5: 0x0109, 0x19a6: 0x00c9, 0x19a7: 0x04b1, 0x19a8: 0x0019, 0x19a9: 0x02e9,\n\t0x19aa: 0x03d9, 0x19ab: 0x02f1, 0x19ac: 0x02f9, 0x19ad: 0x03f1, 0x19ae: 0x0309, 0x19af: 0x00a9,\n\t0x19b0: 0x0311, 0x19b1: 0x00b1, 0x19b2: 0x0319, 0x19b3: 0x0101, 0x19b4: 0x0321, 0x19b5: 0x0329,\n\t0x19b6: 0x0051, 0x19b7: 0x0339, 0x19b8: 0x0751, 0x19b9: 0x00b9, 0x19ba: 0x0089, 0x19bb: 0x0341,\n\t0x19bc: 0x0349, 0x19bd: 0x0391, 0x19be: 0x00c1, 0x19bf: 0x0109,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x00c9, 0x19c1: 0x04b1, 0x19c2: 0x0019, 0x19c3: 0x02e9, 0x19c4: 0x03d9, 0x19c5: 0x02f1,\n\t0x19c6: 0x02f9, 0x19c7: 0x03f1, 0x19c8: 0x0309, 0x19c9: 0x00a9, 0x19ca: 0x0311, 0x19cb: 0x00b1,\n\t0x19cc: 0x0319, 0x19cd: 0x0101, 0x19ce: 0x0321, 0x19cf: 0x0329, 0x19d0: 0x0051, 0x19d1: 0x0339,\n\t0x19d2: 0x0751, 0x19d3: 0x00b9, 0x19d4: 0x0089, 0x19d5: 0x0341, 0x19d6: 0x0349, 0x19d7: 0x0391,\n\t0x19d8: 0x00c1, 0x19d9: 0x0109, 0x19da: 0x00c9, 0x19db: 0x04b1, 0x19dc: 0x0019, 0x19dd: 0x0040,\n\t0x19de: 0x03d9, 0x19df: 0x02f1, 0x19e0: 0x0040, 0x19e1: 0x0040, 0x19e2: 0x0309, 0x19e3: 0x0040,\n\t0x19e4: 0x0040, 0x19e5: 0x00b1, 0x19e6: 0x0319, 0x19e7: 0x0040, 0x19e8: 0x0040, 0x19e9: 0x0329,\n\t0x19ea: 0x0051, 0x19eb: 0x0339, 0x19ec: 0x0751, 0x19ed: 0x0040, 0x19ee: 0x0089, 0x19ef: 0x0341,\n\t0x19f0: 0x0349, 0x19f1: 0x0391, 0x19f2: 0x00c1, 0x19f3: 0x0109, 0x19f4: 0x00c9, 0x19f5: 0x04b1,\n\t0x19f6: 0x0019, 0x19f7: 0x02e9, 0x19f8: 0x03d9, 0x19f9: 0x02f1, 0x19fa: 0x0040, 0x19fb: 0x03f1,\n\t0x19fc: 0x0040, 0x19fd: 0x00a9, 0x19fe: 0x0311, 0x19ff: 0x00b1,\n\t// Block 0x68, offset 0x1a00\n\t0x1a00: 0x0319, 0x1a01: 0x0101, 0x1a02: 0x0321, 0x1a03: 0x0329, 0x1a04: 0x0040, 0x1a05: 0x0339,\n\t0x1a06: 0x0751, 0x1a07: 0x00b9, 0x1a08: 0x0089, 0x1a09: 0x0341, 0x1a0a: 0x0349, 0x1a0b: 0x0391,\n\t0x1a0c: 0x00c1, 0x1a0d: 0x0109, 0x1a0e: 0x00c9, 0x1a0f: 0x04b1, 0x1a10: 0x0019, 0x1a11: 0x02e9,\n\t0x1a12: 0x03d9, 0x1a13: 0x02f1, 0x1a14: 0x02f9, 0x1a15: 0x03f1, 0x1a16: 0x0309, 0x1a17: 0x00a9,\n\t0x1a18: 0x0311, 0x1a19: 0x00b1, 0x1a1a: 0x0319, 0x1a1b: 0x0101, 0x1a1c: 0x0321, 0x1a1d: 0x0329,\n\t0x1a1e: 0x0051, 0x1a1f: 0x0339, 0x1a20: 0x0751, 0x1a21: 0x00b9, 0x1a22: 0x0089, 0x1a23: 0x0341,\n\t0x1a24: 0x0349, 0x1a25: 0x0391, 0x1a26: 0x00c1, 0x1a27: 0x0109, 0x1a28: 0x00c9, 0x1a29: 0x04b1,\n\t0x1a2a: 0x0019, 0x1a2b: 0x02e9, 0x1a2c: 0x03d9, 0x1a2d: 0x02f1, 0x1a2e: 0x02f9, 0x1a2f: 0x03f1,\n\t0x1a30: 0x0309, 0x1a31: 0x00a9, 0x1a32: 0x0311, 0x1a33: 0x00b1, 0x1a34: 0x0319, 0x1a35: 0x0101,\n\t0x1a36: 0x0321, 0x1a37: 0x0329, 0x1a38: 0x0051, 0x1a39: 0x0339, 0x1a3a: 0x0751, 0x1a3b: 0x00b9,\n\t0x1a3c: 0x0089, 0x1a3d: 0x0341, 0x1a3e: 0x0349, 0x1a3f: 0x0391,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x00c1, 0x1a41: 0x0109, 0x1a42: 0x00c9, 0x1a43: 0x04b1, 0x1a44: 0x0019, 0x1a45: 0x02e9,\n\t0x1a46: 0x0040, 0x1a47: 0x02f1, 0x1a48: 0x02f9, 0x1a49: 0x03f1, 0x1a4a: 0x0309, 0x1a4b: 0x0040,\n\t0x1a4c: 0x0040, 0x1a4d: 0x00b1, 0x1a4e: 0x0319, 0x1a4f: 0x0101, 0x1a50: 0x0321, 0x1a51: 0x0329,\n\t0x1a52: 0x0051, 0x1a53: 0x0339, 0x1a54: 0x0751, 0x1a55: 0x0040, 0x1a56: 0x0089, 0x1a57: 0x0341,\n\t0x1a58: 0x0349, 0x1a59: 0x0391, 0x1a5a: 0x00c1, 0x1a5b: 0x0109, 0x1a5c: 0x00c9, 0x1a5d: 0x0040,\n\t0x1a5e: 0x0019, 0x1a5f: 0x02e9, 0x1a60: 0x03d9, 0x1a61: 0x02f1, 0x1a62: 0x02f9, 0x1a63: 0x03f1,\n\t0x1a64: 0x0309, 0x1a65: 0x00a9, 0x1a66: 0x0311, 0x1a67: 0x00b1, 0x1a68: 0x0319, 0x1a69: 0x0101,\n\t0x1a6a: 0x0321, 0x1a6b: 0x0329, 0x1a6c: 0x0051, 0x1a6d: 0x0339, 0x1a6e: 0x0751, 0x1a6f: 0x00b9,\n\t0x1a70: 0x0089, 0x1a71: 0x0341, 0x1a72: 0x0349, 0x1a73: 0x0391, 0x1a74: 0x00c1, 0x1a75: 0x0109,\n\t0x1a76: 0x00c9, 0x1a77: 0x04b1, 0x1a78: 0x0019, 0x1a79: 0x02e9, 0x1a7a: 0x0040, 0x1a7b: 0x02f1,\n\t0x1a7c: 0x02f9, 0x1a7d: 0x03f1, 0x1a7e: 0x0309, 0x1a7f: 0x0040,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x0311, 0x1a81: 0x00b1, 0x1a82: 0x0319, 0x1a83: 0x0101, 0x1a84: 0x0321, 0x1a85: 0x0040,\n\t0x1a86: 0x0051, 0x1a87: 0x0040, 0x1a88: 0x0040, 0x1a89: 0x0040, 0x1a8a: 0x0089, 0x1a8b: 0x0341,\n\t0x1a8c: 0x0349, 0x1a8d: 0x0391, 0x1a8e: 0x00c1, 0x1a8f: 0x0109, 0x1a90: 0x00c9, 0x1a91: 0x0040,\n\t0x1a92: 0x0019, 0x1a93: 0x02e9, 0x1a94: 0x03d9, 0x1a95: 0x02f1, 0x1a96: 0x02f9, 0x1a97: 0x03f1,\n\t0x1a98: 0x0309, 0x1a99: 0x00a9, 0x1a9a: 0x0311, 0x1a9b: 0x00b1, 0x1a9c: 0x0319, 0x1a9d: 0x0101,\n\t0x1a9e: 0x0321, 0x1a9f: 0x0329, 0x1aa0: 0x0051, 0x1aa1: 0x0339, 0x1aa2: 0x0751, 0x1aa3: 0x00b9,\n\t0x1aa4: 0x0089, 0x1aa5: 0x0341, 0x1aa6: 0x0349, 0x1aa7: 0x0391, 0x1aa8: 0x00c1, 0x1aa9: 0x0109,\n\t0x1aaa: 0x00c9, 0x1aab: 0x04b1, 0x1aac: 0x0019, 0x1aad: 0x02e9, 0x1aae: 0x03d9, 0x1aaf: 0x02f1,\n\t0x1ab0: 0x02f9, 0x1ab1: 0x03f1, 0x1ab2: 0x0309, 0x1ab3: 0x00a9, 0x1ab4: 0x0311, 0x1ab5: 0x00b1,\n\t0x1ab6: 0x0319, 0x1ab7: 0x0101, 0x1ab8: 0x0321, 0x1ab9: 0x0329, 0x1aba: 0x0051, 0x1abb: 0x0339,\n\t0x1abc: 0x0751, 0x1abd: 0x00b9, 0x1abe: 0x0089, 0x1abf: 0x0341,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x0349, 0x1ac1: 0x0391, 0x1ac2: 0x00c1, 0x1ac3: 0x0109, 0x1ac4: 0x00c9, 0x1ac5: 0x04b1,\n\t0x1ac6: 0x0019, 0x1ac7: 0x02e9, 0x1ac8: 0x03d9, 0x1ac9: 0x02f1, 0x1aca: 0x02f9, 0x1acb: 0x03f1,\n\t0x1acc: 0x0309, 0x1acd: 0x00a9, 0x1ace: 0x0311, 0x1acf: 0x00b1, 0x1ad0: 0x0319, 0x1ad1: 0x0101,\n\t0x1ad2: 0x0321, 0x1ad3: 0x0329, 0x1ad4: 0x0051, 0x1ad5: 0x0339, 0x1ad6: 0x0751, 0x1ad7: 0x00b9,\n\t0x1ad8: 0x0089, 0x1ad9: 0x0341, 0x1ada: 0x0349, 0x1adb: 0x0391, 0x1adc: 0x00c1, 0x1add: 0x0109,\n\t0x1ade: 0x00c9, 0x1adf: 0x04b1, 0x1ae0: 0x0019, 0x1ae1: 0x02e9, 0x1ae2: 0x03d9, 0x1ae3: 0x02f1,\n\t0x1ae4: 0x02f9, 0x1ae5: 0x03f1, 0x1ae6: 0x0309, 0x1ae7: 0x00a9, 0x1ae8: 0x0311, 0x1ae9: 0x00b1,\n\t0x1aea: 0x0319, 0x1aeb: 0x0101, 0x1aec: 0x0321, 0x1aed: 0x0329, 0x1aee: 0x0051, 0x1aef: 0x0339,\n\t0x1af0: 0x0751, 0x1af1: 0x00b9, 0x1af2: 0x0089, 0x1af3: 0x0341, 0x1af4: 0x0349, 0x1af5: 0x0391,\n\t0x1af6: 0x00c1, 0x1af7: 0x0109, 0x1af8: 0x00c9, 0x1af9: 0x04b1, 0x1afa: 0x0019, 0x1afb: 0x02e9,\n\t0x1afc: 0x03d9, 0x1afd: 0x02f1, 0x1afe: 0x02f9, 0x1aff: 0x03f1,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x0309, 0x1b01: 0x00a9, 0x1b02: 0x0311, 0x1b03: 0x00b1, 0x1b04: 0x0319, 0x1b05: 0x0101,\n\t0x1b06: 0x0321, 0x1b07: 0x0329, 0x1b08: 0x0051, 0x1b09: 0x0339, 0x1b0a: 0x0751, 0x1b0b: 0x00b9,\n\t0x1b0c: 0x0089, 0x1b0d: 0x0341, 0x1b0e: 0x0349, 0x1b0f: 0x0391, 0x1b10: 0x00c1, 0x1b11: 0x0109,\n\t0x1b12: 0x00c9, 0x1b13: 0x04b1, 0x1b14: 0x0019, 0x1b15: 0x02e9, 0x1b16: 0x03d9, 0x1b17: 0x02f1,\n\t0x1b18: 0x02f9, 0x1b19: 0x03f1, 0x1b1a: 0x0309, 0x1b1b: 0x00a9, 0x1b1c: 0x0311, 0x1b1d: 0x00b1,\n\t0x1b1e: 0x0319, 0x1b1f: 0x0101, 0x1b20: 0x0321, 0x1b21: 0x0329, 0x1b22: 0x0051, 0x1b23: 0x0339,\n\t0x1b24: 0x0751, 0x1b25: 0x00b9, 0x1b26: 0x0089, 0x1b27: 0x0341, 0x1b28: 0x0349, 0x1b29: 0x0391,\n\t0x1b2a: 0x00c1, 0x1b2b: 0x0109, 0x1b2c: 0x00c9, 0x1b2d: 0x04b1, 0x1b2e: 0x0019, 0x1b2f: 0x02e9,\n\t0x1b30: 0x03d9, 0x1b31: 0x02f1, 0x1b32: 0x02f9, 0x1b33: 0x03f1, 0x1b34: 0x0309, 0x1b35: 0x00a9,\n\t0x1b36: 0x0311, 0x1b37: 0x00b1, 0x1b38: 0x0319, 0x1b39: 0x0101, 0x1b3a: 0x0321, 0x1b3b: 0x0329,\n\t0x1b3c: 0x0051, 0x1b3d: 0x0339, 0x1b3e: 0x0751, 0x1b3f: 0x00b9,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x0089, 0x1b41: 0x0341, 0x1b42: 0x0349, 0x1b43: 0x0391, 0x1b44: 0x00c1, 0x1b45: 0x0109,\n\t0x1b46: 0x00c9, 0x1b47: 0x04b1, 0x1b48: 0x0019, 0x1b49: 0x02e9, 0x1b4a: 0x03d9, 0x1b4b: 0x02f1,\n\t0x1b4c: 0x02f9, 0x1b4d: 0x03f1, 0x1b4e: 0x0309, 0x1b4f: 0x00a9, 0x1b50: 0x0311, 0x1b51: 0x00b1,\n\t0x1b52: 0x0319, 0x1b53: 0x0101, 0x1b54: 0x0321, 0x1b55: 0x0329, 0x1b56: 0x0051, 0x1b57: 0x0339,\n\t0x1b58: 0x0751, 0x1b59: 0x00b9, 0x1b5a: 0x0089, 0x1b5b: 0x0341, 0x1b5c: 0x0349, 0x1b5d: 0x0391,\n\t0x1b5e: 0x00c1, 0x1b5f: 0x0109, 0x1b60: 0x00c9, 0x1b61: 0x04b1, 0x1b62: 0x0019, 0x1b63: 0x02e9,\n\t0x1b64: 0x03d9, 0x1b65: 0x02f1, 0x1b66: 0x02f9, 0x1b67: 0x03f1, 0x1b68: 0x0309, 0x1b69: 0x00a9,\n\t0x1b6a: 0x0311, 0x1b6b: 0x00b1, 0x1b6c: 0x0319, 0x1b6d: 0x0101, 0x1b6e: 0x0321, 0x1b6f: 0x0329,\n\t0x1b70: 0x0051, 0x1b71: 0x0339, 0x1b72: 0x0751, 0x1b73: 0x00b9, 0x1b74: 0x0089, 0x1b75: 0x0341,\n\t0x1b76: 0x0349, 0x1b77: 0x0391, 0x1b78: 0x00c1, 0x1b79: 0x0109, 0x1b7a: 0x00c9, 0x1b7b: 0x04b1,\n\t0x1b7c: 0x0019, 0x1b7d: 0x02e9, 0x1b7e: 0x03d9, 0x1b7f: 0x02f1,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x02f9, 0x1b81: 0x03f1, 0x1b82: 0x0309, 0x1b83: 0x00a9, 0x1b84: 0x0311, 0x1b85: 0x00b1,\n\t0x1b86: 0x0319, 0x1b87: 0x0101, 0x1b88: 0x0321, 0x1b89: 0x0329, 0x1b8a: 0x0051, 0x1b8b: 0x0339,\n\t0x1b8c: 0x0751, 0x1b8d: 0x00b9, 0x1b8e: 0x0089, 0x1b8f: 0x0341, 0x1b90: 0x0349, 0x1b91: 0x0391,\n\t0x1b92: 0x00c1, 0x1b93: 0x0109, 0x1b94: 0x00c9, 0x1b95: 0x04b1, 0x1b96: 0x0019, 0x1b97: 0x02e9,\n\t0x1b98: 0x03d9, 0x1b99: 0x02f1, 0x1b9a: 0x02f9, 0x1b9b: 0x03f1, 0x1b9c: 0x0309, 0x1b9d: 0x00a9,\n\t0x1b9e: 0x0311, 0x1b9f: 0x00b1, 0x1ba0: 0x0319, 0x1ba1: 0x0101, 0x1ba2: 0x0321, 0x1ba3: 0x0329,\n\t0x1ba4: 0x0051, 0x1ba5: 0x0339, 0x1ba6: 0x0751, 0x1ba7: 0x00b9, 0x1ba8: 0x0089, 0x1ba9: 0x0341,\n\t0x1baa: 0x0349, 0x1bab: 0x0391, 0x1bac: 0x00c1, 0x1bad: 0x0109, 0x1bae: 0x00c9, 0x1baf: 0x04b1,\n\t0x1bb0: 0x0019, 0x1bb1: 0x02e9, 0x1bb2: 0x03d9, 0x1bb3: 0x02f1, 0x1bb4: 0x02f9, 0x1bb5: 0x03f1,\n\t0x1bb6: 0x0309, 0x1bb7: 0x00a9, 0x1bb8: 0x0311, 0x1bb9: 0x00b1, 0x1bba: 0x0319, 0x1bbb: 0x0101,\n\t0x1bbc: 0x0321, 0x1bbd: 0x0329, 0x1bbe: 0x0051, 0x1bbf: 0x0339,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x0751, 0x1bc1: 0x00b9, 0x1bc2: 0x0089, 0x1bc3: 0x0341, 0x1bc4: 0x0349, 0x1bc5: 0x0391,\n\t0x1bc6: 0x00c1, 0x1bc7: 0x0109, 0x1bc8: 0x00c9, 0x1bc9: 0x04b1, 0x1bca: 0x0019, 0x1bcb: 0x02e9,\n\t0x1bcc: 0x03d9, 0x1bcd: 0x02f1, 0x1bce: 0x02f9, 0x1bcf: 0x03f1, 0x1bd0: 0x0309, 0x1bd1: 0x00a9,\n\t0x1bd2: 0x0311, 0x1bd3: 0x00b1, 0x1bd4: 0x0319, 0x1bd5: 0x0101, 0x1bd6: 0x0321, 0x1bd7: 0x0329,\n\t0x1bd8: 0x0051, 0x1bd9: 0x0339, 0x1bda: 0x0751, 0x1bdb: 0x00b9, 0x1bdc: 0x0089, 0x1bdd: 0x0341,\n\t0x1bde: 0x0349, 0x1bdf: 0x0391, 0x1be0: 0x00c1, 0x1be1: 0x0109, 0x1be2: 0x00c9, 0x1be3: 0x04b1,\n\t0x1be4: 0x23e1, 0x1be5: 0x23e9, 0x1be6: 0x0040, 0x1be7: 0x0040, 0x1be8: 0x23f1, 0x1be9: 0x0399,\n\t0x1bea: 0x03a1, 0x1beb: 0x03a9, 0x1bec: 0x23f9, 0x1bed: 0x2401, 0x1bee: 0x2409, 0x1bef: 0x04d1,\n\t0x1bf0: 0x05f9, 0x1bf1: 0x2411, 0x1bf2: 0x2419, 0x1bf3: 0x2421, 0x1bf4: 0x2429, 0x1bf5: 0x2431,\n\t0x1bf6: 0x2439, 0x1bf7: 0x0799, 0x1bf8: 0x03c1, 0x1bf9: 0x04d1, 0x1bfa: 0x2441, 0x1bfb: 0x2449,\n\t0x1bfc: 0x2451, 0x1bfd: 0x03b1, 0x1bfe: 0x03b9, 0x1bff: 0x2459,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0x0769, 0x1c01: 0x2461, 0x1c02: 0x23f1, 0x1c03: 0x0399, 0x1c04: 0x03a1, 0x1c05: 0x03a9,\n\t0x1c06: 0x23f9, 0x1c07: 0x2401, 0x1c08: 0x2409, 0x1c09: 0x04d1, 0x1c0a: 0x05f9, 0x1c0b: 0x2411,\n\t0x1c0c: 0x2419, 0x1c0d: 0x2421, 0x1c0e: 0x2429, 0x1c0f: 0x2431, 0x1c10: 0x2439, 0x1c11: 0x0799,\n\t0x1c12: 0x03c1, 0x1c13: 0x2441, 0x1c14: 0x2441, 0x1c15: 0x2449, 0x1c16: 0x2451, 0x1c17: 0x03b1,\n\t0x1c18: 0x03b9, 0x1c19: 0x2459, 0x1c1a: 0x0769, 0x1c1b: 0x2469, 0x1c1c: 0x23f9, 0x1c1d: 0x04d1,\n\t0x1c1e: 0x2411, 0x1c1f: 0x03b1, 0x1c20: 0x03c1, 0x1c21: 0x0799, 0x1c22: 0x23f1, 0x1c23: 0x0399,\n\t0x1c24: 0x03a1, 0x1c25: 0x03a9, 0x1c26: 0x23f9, 0x1c27: 0x2401, 0x1c28: 0x2409, 0x1c29: 0x04d1,\n\t0x1c2a: 0x05f9, 0x1c2b: 0x2411, 0x1c2c: 0x2419, 0x1c2d: 0x2421, 0x1c2e: 0x2429, 0x1c2f: 0x2431,\n\t0x1c30: 0x2439, 0x1c31: 0x0799, 0x1c32: 0x03c1, 0x1c33: 0x04d1, 0x1c34: 0x2441, 0x1c35: 0x2449,\n\t0x1c36: 0x2451, 0x1c37: 0x03b1, 0x1c38: 0x03b9, 0x1c39: 0x2459, 0x1c3a: 0x0769, 0x1c3b: 0x2461,\n\t0x1c3c: 0x23f1, 0x1c3d: 0x0399, 0x1c3e: 0x03a1, 0x1c3f: 0x03a9,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0x23f9, 0x1c41: 0x2401, 0x1c42: 0x2409, 0x1c43: 0x04d1, 0x1c44: 0x05f9, 0x1c45: 0x2411,\n\t0x1c46: 0x2419, 0x1c47: 0x2421, 0x1c48: 0x2429, 0x1c49: 0x2431, 0x1c4a: 0x2439, 0x1c4b: 0x0799,\n\t0x1c4c: 0x03c1, 0x1c4d: 0x2441, 0x1c4e: 0x2441, 0x1c4f: 0x2449, 0x1c50: 0x2451, 0x1c51: 0x03b1,\n\t0x1c52: 0x03b9, 0x1c53: 0x2459, 0x1c54: 0x0769, 0x1c55: 0x2469, 0x1c56: 0x23f9, 0x1c57: 0x04d1,\n\t0x1c58: 0x2411, 0x1c59: 0x03b1, 0x1c5a: 0x03c1, 0x1c5b: 0x0799, 0x1c5c: 0x23f1, 0x1c5d: 0x0399,\n\t0x1c5e: 0x03a1, 0x1c5f: 0x03a9, 0x1c60: 0x23f9, 0x1c61: 0x2401, 0x1c62: 0x2409, 0x1c63: 0x04d1,\n\t0x1c64: 0x05f9, 0x1c65: 0x2411, 0x1c66: 0x2419, 0x1c67: 0x2421, 0x1c68: 0x2429, 0x1c69: 0x2431,\n\t0x1c6a: 0x2439, 0x1c6b: 0x0799, 0x1c6c: 0x03c1, 0x1c6d: 0x04d1, 0x1c6e: 0x2441, 0x1c6f: 0x2449,\n\t0x1c70: 0x2451, 0x1c71: 0x03b1, 0x1c72: 0x03b9, 0x1c73: 0x2459, 0x1c74: 0x0769, 0x1c75: 0x2461,\n\t0x1c76: 0x23f1, 0x1c77: 0x0399, 0x1c78: 0x03a1, 0x1c79: 0x03a9, 0x1c7a: 0x23f9, 0x1c7b: 0x2401,\n\t0x1c7c: 0x2409, 0x1c7d: 0x04d1, 0x1c7e: 0x05f9, 0x1c7f: 0x2411,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0x2419, 0x1c81: 0x2421, 0x1c82: 0x2429, 0x1c83: 0x2431, 0x1c84: 0x2439, 0x1c85: 0x0799,\n\t0x1c86: 0x03c1, 0x1c87: 0x2441, 0x1c88: 0x2441, 0x1c89: 0x2449, 0x1c8a: 0x2451, 0x1c8b: 0x03b1,\n\t0x1c8c: 0x03b9, 0x1c8d: 0x2459, 0x1c8e: 0x0769, 0x1c8f: 0x2469, 0x1c90: 0x23f9, 0x1c91: 0x04d1,\n\t0x1c92: 0x2411, 0x1c93: 0x03b1, 0x1c94: 0x03c1, 0x1c95: 0x0799, 0x1c96: 0x23f1, 0x1c97: 0x0399,\n\t0x1c98: 0x03a1, 0x1c99: 0x03a9, 0x1c9a: 0x23f9, 0x1c9b: 0x2401, 0x1c9c: 0x2409, 0x1c9d: 0x04d1,\n\t0x1c9e: 0x05f9, 0x1c9f: 0x2411, 0x1ca0: 0x2419, 0x1ca1: 0x2421, 0x1ca2: 0x2429, 0x1ca3: 0x2431,\n\t0x1ca4: 0x2439, 0x1ca5: 0x0799, 0x1ca6: 0x03c1, 0x1ca7: 0x04d1, 0x1ca8: 0x2441, 0x1ca9: 0x2449,\n\t0x1caa: 0x2451, 0x1cab: 0x03b1, 0x1cac: 0x03b9, 0x1cad: 0x2459, 0x1cae: 0x0769, 0x1caf: 0x2461,\n\t0x1cb0: 0x23f1, 0x1cb1: 0x0399, 0x1cb2: 0x03a1, 0x1cb3: 0x03a9, 0x1cb4: 0x23f9, 0x1cb5: 0x2401,\n\t0x1cb6: 0x2409, 0x1cb7: 0x04d1, 0x1cb8: 0x05f9, 0x1cb9: 0x2411, 0x1cba: 0x2419, 0x1cbb: 0x2421,\n\t0x1cbc: 0x2429, 0x1cbd: 0x2431, 0x1cbe: 0x2439, 0x1cbf: 0x0799,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x03c1, 0x1cc1: 0x2441, 0x1cc2: 0x2441, 0x1cc3: 0x2449, 0x1cc4: 0x2451, 0x1cc5: 0x03b1,\n\t0x1cc6: 0x03b9, 0x1cc7: 0x2459, 0x1cc8: 0x0769, 0x1cc9: 0x2469, 0x1cca: 0x23f9, 0x1ccb: 0x04d1,\n\t0x1ccc: 0x2411, 0x1ccd: 0x03b1, 0x1cce: 0x03c1, 0x1ccf: 0x0799, 0x1cd0: 0x23f1, 0x1cd1: 0x0399,\n\t0x1cd2: 0x03a1, 0x1cd3: 0x03a9, 0x1cd4: 0x23f9, 0x1cd5: 0x2401, 0x1cd6: 0x2409, 0x1cd7: 0x04d1,\n\t0x1cd8: 0x05f9, 0x1cd9: 0x2411, 0x1cda: 0x2419, 0x1cdb: 0x2421, 0x1cdc: 0x2429, 0x1cdd: 0x2431,\n\t0x1cde: 0x2439, 0x1cdf: 0x0799, 0x1ce0: 0x03c1, 0x1ce1: 0x04d1, 0x1ce2: 0x2441, 0x1ce3: 0x2449,\n\t0x1ce4: 0x2451, 0x1ce5: 0x03b1, 0x1ce6: 0x03b9, 0x1ce7: 0x2459, 0x1ce8: 0x0769, 0x1ce9: 0x2461,\n\t0x1cea: 0x23f1, 0x1ceb: 0x0399, 0x1cec: 0x03a1, 0x1ced: 0x03a9, 0x1cee: 0x23f9, 0x1cef: 0x2401,\n\t0x1cf0: 0x2409, 0x1cf1: 0x04d1, 0x1cf2: 0x05f9, 0x1cf3: 0x2411, 0x1cf4: 0x2419, 0x1cf5: 0x2421,\n\t0x1cf6: 0x2429, 0x1cf7: 0x2431, 0x1cf8: 0x2439, 0x1cf9: 0x0799, 0x1cfa: 0x03c1, 0x1cfb: 0x2441,\n\t0x1cfc: 0x2441, 0x1cfd: 0x2449, 0x1cfe: 0x2451, 0x1cff: 0x03b1,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0x03b9, 0x1d01: 0x2459, 0x1d02: 0x0769, 0x1d03: 0x2469, 0x1d04: 0x23f9, 0x1d05: 0x04d1,\n\t0x1d06: 0x2411, 0x1d07: 0x03b1, 0x1d08: 0x03c1, 0x1d09: 0x0799, 0x1d0a: 0x2471, 0x1d0b: 0x2471,\n\t0x1d0c: 0x0040, 0x1d0d: 0x0040, 0x1d0e: 0x06e1, 0x1d0f: 0x0049, 0x1d10: 0x0029, 0x1d11: 0x0031,\n\t0x1d12: 0x06e9, 0x1d13: 0x06f1, 0x1d14: 0x06f9, 0x1d15: 0x0701, 0x1d16: 0x0709, 0x1d17: 0x0711,\n\t0x1d18: 0x06e1, 0x1d19: 0x0049, 0x1d1a: 0x0029, 0x1d1b: 0x0031, 0x1d1c: 0x06e9, 0x1d1d: 0x06f1,\n\t0x1d1e: 0x06f9, 0x1d1f: 0x0701, 0x1d20: 0x0709, 0x1d21: 0x0711, 0x1d22: 0x06e1, 0x1d23: 0x0049,\n\t0x1d24: 0x0029, 0x1d25: 0x0031, 0x1d26: 0x06e9, 0x1d27: 0x06f1, 0x1d28: 0x06f9, 0x1d29: 0x0701,\n\t0x1d2a: 0x0709, 0x1d2b: 0x0711, 0x1d2c: 0x06e1, 0x1d2d: 0x0049, 0x1d2e: 0x0029, 0x1d2f: 0x0031,\n\t0x1d30: 0x06e9, 0x1d31: 0x06f1, 0x1d32: 0x06f9, 0x1d33: 0x0701, 0x1d34: 0x0709, 0x1d35: 0x0711,\n\t0x1d36: 0x06e1, 0x1d37: 0x0049, 0x1d38: 0x0029, 0x1d39: 0x0031, 0x1d3a: 0x06e9, 0x1d3b: 0x06f1,\n\t0x1d3c: 0x06f9, 0x1d3d: 0x0701, 0x1d3e: 0x0709, 0x1d3f: 0x0711,\n\t// Block 0x75, offset 0x1d40\n\t0x1d40: 0x3308, 0x1d41: 0x3308, 0x1d42: 0x3308, 0x1d43: 0x3308, 0x1d44: 0x3308, 0x1d45: 0x3308,\n\t0x1d46: 0x3308, 0x1d47: 0x0040, 0x1d48: 0x3308, 0x1d49: 0x3308, 0x1d4a: 0x3308, 0x1d4b: 0x3308,\n\t0x1d4c: 0x3308, 0x1d4d: 0x3308, 0x1d4e: 0x3308, 0x1d4f: 0x3308, 0x1d50: 0x3308, 0x1d51: 0x3308,\n\t0x1d52: 0x3308, 0x1d53: 0x3308, 0x1d54: 0x3308, 0x1d55: 0x3308, 0x1d56: 0x3308, 0x1d57: 0x3308,\n\t0x1d58: 0x3308, 0x1d59: 0x0040, 0x1d5a: 0x0040, 0x1d5b: 0x3308, 0x1d5c: 0x3308, 0x1d5d: 0x3308,\n\t0x1d5e: 0x3308, 0x1d5f: 0x3308, 0x1d60: 0x3308, 0x1d61: 0x3308, 0x1d62: 0x0040, 0x1d63: 0x3308,\n\t0x1d64: 0x3308, 0x1d65: 0x0040, 0x1d66: 0x3308, 0x1d67: 0x3308, 0x1d68: 0x3308, 0x1d69: 0x3308,\n\t0x1d6a: 0x3308, 0x1d6b: 0x0040, 0x1d6c: 0x0040, 0x1d6d: 0x0040, 0x1d6e: 0x0040, 0x1d6f: 0x0040,\n\t0x1d70: 0x2479, 0x1d71: 0x2481, 0x1d72: 0x02a9, 0x1d73: 0x2489, 0x1d74: 0x02b1, 0x1d75: 0x2491,\n\t0x1d76: 0x2499, 0x1d77: 0x24a1, 0x1d78: 0x24a9, 0x1d79: 0x24b1, 0x1d7a: 0x24b9, 0x1d7b: 0x24c1,\n\t0x1d7c: 0x02b9, 0x1d7d: 0x24c9, 0x1d7e: 0x24d1, 0x1d7f: 0x02c1,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0x02c9, 0x1d81: 0x24d9, 0x1d82: 0x24e1, 0x1d83: 0x24e9, 0x1d84: 0x24f1, 0x1d85: 0x24f9,\n\t0x1d86: 0x2501, 0x1d87: 0x2509, 0x1d88: 0x2511, 0x1d89: 0x2519, 0x1d8a: 0x2521, 0x1d8b: 0x2529,\n\t0x1d8c: 0x2531, 0x1d8d: 0x2539, 0x1d8e: 0x2541, 0x1d8f: 0x2549, 0x1d90: 0x2551, 0x1d91: 0x2479,\n\t0x1d92: 0x2481, 0x1d93: 0x02a9, 0x1d94: 0x2489, 0x1d95: 0x02b1, 0x1d96: 0x2491, 0x1d97: 0x2499,\n\t0x1d98: 0x24a1, 0x1d99: 0x24a9, 0x1d9a: 0x24b1, 0x1d9b: 0x24b9, 0x1d9c: 0x02b9, 0x1d9d: 0x24c9,\n\t0x1d9e: 0x02c1, 0x1d9f: 0x24d9, 0x1da0: 0x24e1, 0x1da1: 0x24e9, 0x1da2: 0x24f1, 0x1da3: 0x24f9,\n\t0x1da4: 0x2501, 0x1da5: 0x02d1, 0x1da6: 0x2509, 0x1da7: 0x2559, 0x1da8: 0x2531, 0x1da9: 0x2561,\n\t0x1daa: 0x2569, 0x1dab: 0x2571, 0x1dac: 0x2579, 0x1dad: 0x2581, 0x1dae: 0x0040, 0x1daf: 0x0040,\n\t0x1db0: 0x0040, 0x1db1: 0x0040, 0x1db2: 0x0040, 0x1db3: 0x0040, 0x1db4: 0x0040, 0x1db5: 0x0040,\n\t0x1db6: 0x0040, 0x1db7: 0x0040, 0x1db8: 0x0040, 0x1db9: 0x0040, 0x1dba: 0x0040, 0x1dbb: 0x0040,\n\t0x1dbc: 0x0040, 0x1dbd: 0x0040, 0x1dbe: 0x0040, 0x1dbf: 0x0040,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dc0: 0xe115, 0x1dc1: 0xe115, 0x1dc2: 0xe135, 0x1dc3: 0xe135, 0x1dc4: 0xe115, 0x1dc5: 0xe115,\n\t0x1dc6: 0xe175, 0x1dc7: 0xe175, 0x1dc8: 0xe115, 0x1dc9: 0xe115, 0x1dca: 0xe135, 0x1dcb: 0xe135,\n\t0x1dcc: 0xe115, 0x1dcd: 0xe115, 0x1dce: 0xe1f5, 0x1dcf: 0xe1f5, 0x1dd0: 0xe115, 0x1dd1: 0xe115,\n\t0x1dd2: 0xe135, 0x1dd3: 0xe135, 0x1dd4: 0xe115, 0x1dd5: 0xe115, 0x1dd6: 0xe175, 0x1dd7: 0xe175,\n\t0x1dd8: 0xe115, 0x1dd9: 0xe115, 0x1dda: 0xe135, 0x1ddb: 0xe135, 0x1ddc: 0xe115, 0x1ddd: 0xe115,\n\t0x1dde: 0x8ca5, 0x1ddf: 0x8ca5, 0x1de0: 0x04b5, 0x1de1: 0x04b5, 0x1de2: 0x0a08, 0x1de3: 0x0a08,\n\t0x1de4: 0x0a08, 0x1de5: 0x0a08, 0x1de6: 0x0a08, 0x1de7: 0x0a08, 0x1de8: 0x0a08, 0x1de9: 0x0a08,\n\t0x1dea: 0x0a08, 0x1deb: 0x0a08, 0x1dec: 0x0a08, 0x1ded: 0x0a08, 0x1dee: 0x0a08, 0x1def: 0x0a08,\n\t0x1df0: 0x0a08, 0x1df1: 0x0a08, 0x1df2: 0x0a08, 0x1df3: 0x0a08, 0x1df4: 0x0a08, 0x1df5: 0x0a08,\n\t0x1df6: 0x0a08, 0x1df7: 0x0a08, 0x1df8: 0x0a08, 0x1df9: 0x0a08, 0x1dfa: 0x0a08, 0x1dfb: 0x0a08,\n\t0x1dfc: 0x0a08, 0x1dfd: 0x0a08, 0x1dfe: 0x0a08, 0x1dff: 0x0a08,\n\t// Block 0x78, offset 0x1e00\n\t0x1e00: 0x20b1, 0x1e01: 0x20b9, 0x1e02: 0x20d9, 0x1e03: 0x20f1, 0x1e04: 0x0040, 0x1e05: 0x2189,\n\t0x1e06: 0x2109, 0x1e07: 0x20e1, 0x1e08: 0x2131, 0x1e09: 0x2191, 0x1e0a: 0x2161, 0x1e0b: 0x2169,\n\t0x1e0c: 0x2171, 0x1e0d: 0x2179, 0x1e0e: 0x2111, 0x1e0f: 0x2141, 0x1e10: 0x2151, 0x1e11: 0x2121,\n\t0x1e12: 0x2159, 0x1e13: 0x2101, 0x1e14: 0x2119, 0x1e15: 0x20c9, 0x1e16: 0x20d1, 0x1e17: 0x20e9,\n\t0x1e18: 0x20f9, 0x1e19: 0x2129, 0x1e1a: 0x2139, 0x1e1b: 0x2149, 0x1e1c: 0x2589, 0x1e1d: 0x1689,\n\t0x1e1e: 0x2591, 0x1e1f: 0x2599, 0x1e20: 0x0040, 0x1e21: 0x20b9, 0x1e22: 0x20d9, 0x1e23: 0x0040,\n\t0x1e24: 0x2181, 0x1e25: 0x0040, 0x1e26: 0x0040, 0x1e27: 0x20e1, 0x1e28: 0x0040, 0x1e29: 0x2191,\n\t0x1e2a: 0x2161, 0x1e2b: 0x2169, 0x1e2c: 0x2171, 0x1e2d: 0x2179, 0x1e2e: 0x2111, 0x1e2f: 0x2141,\n\t0x1e30: 0x2151, 0x1e31: 0x2121, 0x1e32: 0x2159, 0x1e33: 0x0040, 0x1e34: 0x2119, 0x1e35: 0x20c9,\n\t0x1e36: 0x20d1, 0x1e37: 0x20e9, 0x1e38: 0x0040, 0x1e39: 0x2129, 0x1e3a: 0x0040, 0x1e3b: 0x2149,\n\t0x1e3c: 0x0040, 0x1e3d: 0x0040, 0x1e3e: 0x0040, 0x1e3f: 0x0040,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0x0040, 0x1e41: 0x0040, 0x1e42: 0x20d9, 0x1e43: 0x0040, 0x1e44: 0x0040, 0x1e45: 0x0040,\n\t0x1e46: 0x0040, 0x1e47: 0x20e1, 0x1e48: 0x0040, 0x1e49: 0x2191, 0x1e4a: 0x0040, 0x1e4b: 0x2169,\n\t0x1e4c: 0x0040, 0x1e4d: 0x2179, 0x1e4e: 0x2111, 0x1e4f: 0x2141, 0x1e50: 0x0040, 0x1e51: 0x2121,\n\t0x1e52: 0x2159, 0x1e53: 0x0040, 0x1e54: 0x2119, 0x1e55: 0x0040, 0x1e56: 0x0040, 0x1e57: 0x20e9,\n\t0x1e58: 0x0040, 0x1e59: 0x2129, 0x1e5a: 0x0040, 0x1e5b: 0x2149, 0x1e5c: 0x0040, 0x1e5d: 0x1689,\n\t0x1e5e: 0x0040, 0x1e5f: 0x2599, 0x1e60: 0x0040, 0x1e61: 0x20b9, 0x1e62: 0x20d9, 0x1e63: 0x0040,\n\t0x1e64: 0x2181, 0x1e65: 0x0040, 0x1e66: 0x0040, 0x1e67: 0x20e1, 0x1e68: 0x2131, 0x1e69: 0x2191,\n\t0x1e6a: 0x2161, 0x1e6b: 0x0040, 0x1e6c: 0x2171, 0x1e6d: 0x2179, 0x1e6e: 0x2111, 0x1e6f: 0x2141,\n\t0x1e70: 0x2151, 0x1e71: 0x2121, 0x1e72: 0x2159, 0x1e73: 0x0040, 0x1e74: 0x2119, 0x1e75: 0x20c9,\n\t0x1e76: 0x20d1, 0x1e77: 0x20e9, 0x1e78: 0x0040, 0x1e79: 0x2129, 0x1e7a: 0x2139, 0x1e7b: 0x2149,\n\t0x1e7c: 0x2589, 0x1e7d: 0x0040, 0x1e7e: 0x2591, 0x1e7f: 0x0040,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0x20b1, 0x1e81: 0x20b9, 0x1e82: 0x20d9, 0x1e83: 0x20f1, 0x1e84: 0x2181, 0x1e85: 0x2189,\n\t0x1e86: 0x2109, 0x1e87: 0x20e1, 0x1e88: 0x2131, 0x1e89: 0x2191, 0x1e8a: 0x0040, 0x1e8b: 0x2169,\n\t0x1e8c: 0x2171, 0x1e8d: 0x2179, 0x1e8e: 0x2111, 0x1e8f: 0x2141, 0x1e90: 0x2151, 0x1e91: 0x2121,\n\t0x1e92: 0x2159, 0x1e93: 0x2101, 0x1e94: 0x2119, 0x1e95: 0x20c9, 0x1e96: 0x20d1, 0x1e97: 0x20e9,\n\t0x1e98: 0x20f9, 0x1e99: 0x2129, 0x1e9a: 0x2139, 0x1e9b: 0x2149, 0x1e9c: 0x0040, 0x1e9d: 0x0040,\n\t0x1e9e: 0x0040, 0x1e9f: 0x0040, 0x1ea0: 0x0040, 0x1ea1: 0x20b9, 0x1ea2: 0x20d9, 0x1ea3: 0x20f1,\n\t0x1ea4: 0x0040, 0x1ea5: 0x2189, 0x1ea6: 0x2109, 0x1ea7: 0x20e1, 0x1ea8: 0x2131, 0x1ea9: 0x2191,\n\t0x1eaa: 0x0040, 0x1eab: 0x2169, 0x1eac: 0x2171, 0x1ead: 0x2179, 0x1eae: 0x2111, 0x1eaf: 0x2141,\n\t0x1eb0: 0x2151, 0x1eb1: 0x2121, 0x1eb2: 0x2159, 0x1eb3: 0x2101, 0x1eb4: 0x2119, 0x1eb5: 0x20c9,\n\t0x1eb6: 0x20d1, 0x1eb7: 0x20e9, 0x1eb8: 0x20f9, 0x1eb9: 0x2129, 0x1eba: 0x2139, 0x1ebb: 0x2149,\n\t0x1ebc: 0x0040, 0x1ebd: 0x0040, 0x1ebe: 0x0040, 0x1ebf: 0x0040,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0x0040, 0x1ec1: 0x25a2, 0x1ec2: 0x25aa, 0x1ec3: 0x25b2, 0x1ec4: 0x25ba, 0x1ec5: 0x25c2,\n\t0x1ec6: 0x25ca, 0x1ec7: 0x25d2, 0x1ec8: 0x25da, 0x1ec9: 0x25e2, 0x1eca: 0x25ea, 0x1ecb: 0x0018,\n\t0x1ecc: 0x0018, 0x1ecd: 0x0018, 0x1ece: 0x0018, 0x1ecf: 0x0018, 0x1ed0: 0x25f2, 0x1ed1: 0x25fa,\n\t0x1ed2: 0x2602, 0x1ed3: 0x260a, 0x1ed4: 0x2612, 0x1ed5: 0x261a, 0x1ed6: 0x2622, 0x1ed7: 0x262a,\n\t0x1ed8: 0x2632, 0x1ed9: 0x263a, 0x1eda: 0x2642, 0x1edb: 0x264a, 0x1edc: 0x2652, 0x1edd: 0x265a,\n\t0x1ede: 0x2662, 0x1edf: 0x266a, 0x1ee0: 0x2672, 0x1ee1: 0x267a, 0x1ee2: 0x2682, 0x1ee3: 0x268a,\n\t0x1ee4: 0x2692, 0x1ee5: 0x269a, 0x1ee6: 0x26a2, 0x1ee7: 0x26aa, 0x1ee8: 0x26b2, 0x1ee9: 0x26ba,\n\t0x1eea: 0x26c1, 0x1eeb: 0x03d9, 0x1eec: 0x00b9, 0x1eed: 0x1239, 0x1eee: 0x26c9, 0x1eef: 0x0018,\n\t0x1ef0: 0x0019, 0x1ef1: 0x02e9, 0x1ef2: 0x03d9, 0x1ef3: 0x02f1, 0x1ef4: 0x02f9, 0x1ef5: 0x03f1,\n\t0x1ef6: 0x0309, 0x1ef7: 0x00a9, 0x1ef8: 0x0311, 0x1ef9: 0x00b1, 0x1efa: 0x0319, 0x1efb: 0x0101,\n\t0x1efc: 0x0321, 0x1efd: 0x0329, 0x1efe: 0x0051, 0x1eff: 0x0339,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0x0751, 0x1f01: 0x00b9, 0x1f02: 0x0089, 0x1f03: 0x0341, 0x1f04: 0x0349, 0x1f05: 0x0391,\n\t0x1f06: 0x00c1, 0x1f07: 0x0109, 0x1f08: 0x00c9, 0x1f09: 0x04b1, 0x1f0a: 0x26d1, 0x1f0b: 0x11f9,\n\t0x1f0c: 0x26d9, 0x1f0d: 0x04d9, 0x1f0e: 0x26e1, 0x1f0f: 0x26e9, 0x1f10: 0x0018, 0x1f11: 0x0018,\n\t0x1f12: 0x0018, 0x1f13: 0x0018, 0x1f14: 0x0018, 0x1f15: 0x0018, 0x1f16: 0x0018, 0x1f17: 0x0018,\n\t0x1f18: 0x0018, 0x1f19: 0x0018, 0x1f1a: 0x0018, 0x1f1b: 0x0018, 0x1f1c: 0x0018, 0x1f1d: 0x0018,\n\t0x1f1e: 0x0018, 0x1f1f: 0x0018, 0x1f20: 0x0018, 0x1f21: 0x0018, 0x1f22: 0x0018, 0x1f23: 0x0018,\n\t0x1f24: 0x0018, 0x1f25: 0x0018, 0x1f26: 0x0018, 0x1f27: 0x0018, 0x1f28: 0x0018, 0x1f29: 0x0018,\n\t0x1f2a: 0x26f1, 0x1f2b: 0x26f9, 0x1f2c: 0x2701, 0x1f2d: 0x0018, 0x1f2e: 0x0018, 0x1f2f: 0x0018,\n\t0x1f30: 0x0018, 0x1f31: 0x0018, 0x1f32: 0x0018, 0x1f33: 0x0018, 0x1f34: 0x0018, 0x1f35: 0x0018,\n\t0x1f36: 0x0018, 0x1f37: 0x0018, 0x1f38: 0x0018, 0x1f39: 0x0018, 0x1f3a: 0x0018, 0x1f3b: 0x0018,\n\t0x1f3c: 0x0018, 0x1f3d: 0x0018, 0x1f3e: 0x0018, 0x1f3f: 0x0018,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f40: 0x2711, 0x1f41: 0x2719, 0x1f42: 0x2721, 0x1f43: 0x0040, 0x1f44: 0x0040, 0x1f45: 0x0040,\n\t0x1f46: 0x0040, 0x1f47: 0x0040, 0x1f48: 0x0040, 0x1f49: 0x0040, 0x1f4a: 0x0040, 0x1f4b: 0x0040,\n\t0x1f4c: 0x0040, 0x1f4d: 0x0040, 0x1f4e: 0x0040, 0x1f4f: 0x0040, 0x1f50: 0x2729, 0x1f51: 0x2731,\n\t0x1f52: 0x2739, 0x1f53: 0x2741, 0x1f54: 0x2749, 0x1f55: 0x2751, 0x1f56: 0x2759, 0x1f57: 0x2761,\n\t0x1f58: 0x2769, 0x1f59: 0x2771, 0x1f5a: 0x2779, 0x1f5b: 0x2781, 0x1f5c: 0x2789, 0x1f5d: 0x2791,\n\t0x1f5e: 0x2799, 0x1f5f: 0x27a1, 0x1f60: 0x27a9, 0x1f61: 0x27b1, 0x1f62: 0x27b9, 0x1f63: 0x27c1,\n\t0x1f64: 0x27c9, 0x1f65: 0x27d1, 0x1f66: 0x27d9, 0x1f67: 0x27e1, 0x1f68: 0x27e9, 0x1f69: 0x27f1,\n\t0x1f6a: 0x27f9, 0x1f6b: 0x2801, 0x1f6c: 0x2809, 0x1f6d: 0x2811, 0x1f6e: 0x2819, 0x1f6f: 0x2821,\n\t0x1f70: 0x2829, 0x1f71: 0x2831, 0x1f72: 0x2839, 0x1f73: 0x2841, 0x1f74: 0x2849, 0x1f75: 0x2851,\n\t0x1f76: 0x2859, 0x1f77: 0x2861, 0x1f78: 0x2869, 0x1f79: 0x2871, 0x1f7a: 0x2879, 0x1f7b: 0x2881,\n\t0x1f7c: 0x0040, 0x1f7d: 0x0040, 0x1f7e: 0x0040, 0x1f7f: 0x0040,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f80: 0x28e1, 0x1f81: 0x28e9, 0x1f82: 0x28f1, 0x1f83: 0x8cbd, 0x1f84: 0x28f9, 0x1f85: 0x2901,\n\t0x1f86: 0x2909, 0x1f87: 0x2911, 0x1f88: 0x2919, 0x1f89: 0x2921, 0x1f8a: 0x2929, 0x1f8b: 0x2931,\n\t0x1f8c: 0x2939, 0x1f8d: 0x8cdd, 0x1f8e: 0x2941, 0x1f8f: 0x2949, 0x1f90: 0x2951, 0x1f91: 0x2959,\n\t0x1f92: 0x8cfd, 0x1f93: 0x2961, 0x1f94: 0x2969, 0x1f95: 0x2799, 0x1f96: 0x8d1d, 0x1f97: 0x2971,\n\t0x1f98: 0x2979, 0x1f99: 0x2981, 0x1f9a: 0x2989, 0x1f9b: 0x2991, 0x1f9c: 0x8d3d, 0x1f9d: 0x2999,\n\t0x1f9e: 0x29a1, 0x1f9f: 0x29a9, 0x1fa0: 0x29b1, 0x1fa1: 0x29b9, 0x1fa2: 0x2871, 0x1fa3: 0x29c1,\n\t0x1fa4: 0x29c9, 0x1fa5: 0x29d1, 0x1fa6: 0x29d9, 0x1fa7: 0x29e1, 0x1fa8: 0x29e9, 0x1fa9: 0x29f1,\n\t0x1faa: 0x29f9, 0x1fab: 0x2a01, 0x1fac: 0x2a09, 0x1fad: 0x2a11, 0x1fae: 0x2a19, 0x1faf: 0x2a21,\n\t0x1fb0: 0x2a29, 0x1fb1: 0x2a31, 0x1fb2: 0x2a31, 0x1fb3: 0x2a31, 0x1fb4: 0x8d5d, 0x1fb5: 0x2a39,\n\t0x1fb6: 0x2a41, 0x1fb7: 0x2a49, 0x1fb8: 0x8d7d, 0x1fb9: 0x2a51, 0x1fba: 0x2a59, 0x1fbb: 0x2a61,\n\t0x1fbc: 0x2a69, 0x1fbd: 0x2a71, 0x1fbe: 0x2a79, 0x1fbf: 0x2a81,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1fc0: 0x2a89, 0x1fc1: 0x2a91, 0x1fc2: 0x2a99, 0x1fc3: 0x2aa1, 0x1fc4: 0x2aa9, 0x1fc5: 0x2ab1,\n\t0x1fc6: 0x2ab1, 0x1fc7: 0x2ab9, 0x1fc8: 0x2ac1, 0x1fc9: 0x2ac9, 0x1fca: 0x2ad1, 0x1fcb: 0x2ad9,\n\t0x1fcc: 0x2ae1, 0x1fcd: 0x2ae9, 0x1fce: 0x2af1, 0x1fcf: 0x2af9, 0x1fd0: 0x2b01, 0x1fd1: 0x2b09,\n\t0x1fd2: 0x2b11, 0x1fd3: 0x2b19, 0x1fd4: 0x2b21, 0x1fd5: 0x2b29, 0x1fd6: 0x2b31, 0x1fd7: 0x2b39,\n\t0x1fd8: 0x2b41, 0x1fd9: 0x8d9d, 0x1fda: 0x2b49, 0x1fdb: 0x2b51, 0x1fdc: 0x2b59, 0x1fdd: 0x2751,\n\t0x1fde: 0x2b61, 0x1fdf: 0x2b69, 0x1fe0: 0x8dbd, 0x1fe1: 0x8ddd, 0x1fe2: 0x2b71, 0x1fe3: 0x2b79,\n\t0x1fe4: 0x2b81, 0x1fe5: 0x2b89, 0x1fe6: 0x2b91, 0x1fe7: 0x2b99, 0x1fe8: 0x2040, 0x1fe9: 0x2ba1,\n\t0x1fea: 0x2ba9, 0x1feb: 0x2ba9, 0x1fec: 0x8dfd, 0x1fed: 0x2bb1, 0x1fee: 0x2bb9, 0x1fef: 0x2bc1,\n\t0x1ff0: 0x2bc9, 0x1ff1: 0x8e1d, 0x1ff2: 0x2bd1, 0x1ff3: 0x2bd9, 0x1ff4: 0x2040, 0x1ff5: 0x2be1,\n\t0x1ff6: 0x2be9, 0x1ff7: 0x2bf1, 0x1ff8: 0x2bf9, 0x1ff9: 0x2c01, 0x1ffa: 0x2c09, 0x1ffb: 0x8e3d,\n\t0x1ffc: 0x2c11, 0x1ffd: 0x8e5d, 0x1ffe: 0x2c19, 0x1fff: 0x2c21,\n\t// Block 0x80, offset 0x2000\n\t0x2000: 0x2c29, 0x2001: 0x2c31, 0x2002: 0x2c39, 0x2003: 0x2c41, 0x2004: 0x2c49, 0x2005: 0x2c51,\n\t0x2006: 0x2c59, 0x2007: 0x2c61, 0x2008: 0x2c69, 0x2009: 0x8e7d, 0x200a: 0x2c71, 0x200b: 0x2c79,\n\t0x200c: 0x2c81, 0x200d: 0x2c89, 0x200e: 0x2c91, 0x200f: 0x8e9d, 0x2010: 0x2c99, 0x2011: 0x8ebd,\n\t0x2012: 0x8edd, 0x2013: 0x2ca1, 0x2014: 0x2ca9, 0x2015: 0x2ca9, 0x2016: 0x2cb1, 0x2017: 0x8efd,\n\t0x2018: 0x8f1d, 0x2019: 0x2cb9, 0x201a: 0x2cc1, 0x201b: 0x2cc9, 0x201c: 0x2cd1, 0x201d: 0x2cd9,\n\t0x201e: 0x2ce1, 0x201f: 0x2ce9, 0x2020: 0x2cf1, 0x2021: 0x2cf9, 0x2022: 0x2d01, 0x2023: 0x2d09,\n\t0x2024: 0x8f3d, 0x2025: 0x2d11, 0x2026: 0x2d19, 0x2027: 0x2d21, 0x2028: 0x2d29, 0x2029: 0x2d21,\n\t0x202a: 0x2d31, 0x202b: 0x2d39, 0x202c: 0x2d41, 0x202d: 0x2d49, 0x202e: 0x2d51, 0x202f: 0x2d59,\n\t0x2030: 0x2d61, 0x2031: 0x2d69, 0x2032: 0x2d71, 0x2033: 0x2d79, 0x2034: 0x2d81, 0x2035: 0x2d89,\n\t0x2036: 0x2d91, 0x2037: 0x2d99, 0x2038: 0x8f5d, 0x2039: 0x2da1, 0x203a: 0x2da9, 0x203b: 0x2db1,\n\t0x203c: 0x2db9, 0x203d: 0x2dc1, 0x203e: 0x8f7d, 0x203f: 0x2dc9,\n\t// Block 0x81, offset 0x2040\n\t0x2040: 0x2dd1, 0x2041: 0x2dd9, 0x2042: 0x2de1, 0x2043: 0x2de9, 0x2044: 0x2df1, 0x2045: 0x2df9,\n\t0x2046: 0x2e01, 0x2047: 0x2e09, 0x2048: 0x2e11, 0x2049: 0x2e19, 0x204a: 0x8f9d, 0x204b: 0x2e21,\n\t0x204c: 0x2e29, 0x204d: 0x2e31, 0x204e: 0x2e39, 0x204f: 0x2e41, 0x2050: 0x2e49, 0x2051: 0x2e51,\n\t0x2052: 0x2e59, 0x2053: 0x2e61, 0x2054: 0x2e69, 0x2055: 0x2e71, 0x2056: 0x2e79, 0x2057: 0x2e81,\n\t0x2058: 0x2e89, 0x2059: 0x2e91, 0x205a: 0x2e99, 0x205b: 0x2ea1, 0x205c: 0x2ea9, 0x205d: 0x8fbd,\n\t0x205e: 0x2eb1, 0x205f: 0x2eb9, 0x2060: 0x2ec1, 0x2061: 0x2ec9, 0x2062: 0x2ed1, 0x2063: 0x8fdd,\n\t0x2064: 0x2ed9, 0x2065: 0x2ee1, 0x2066: 0x2ee9, 0x2067: 0x2ef1, 0x2068: 0x2ef9, 0x2069: 0x2f01,\n\t0x206a: 0x2f09, 0x206b: 0x2f11, 0x206c: 0x7f0d, 0x206d: 0x2f19, 0x206e: 0x2f21, 0x206f: 0x2f29,\n\t0x2070: 0x8ffd, 0x2071: 0x2f31, 0x2072: 0x2f39, 0x2073: 0x2f41, 0x2074: 0x2f49, 0x2075: 0x2f51,\n\t0x2076: 0x2f59, 0x2077: 0x901d, 0x2078: 0x903d, 0x2079: 0x905d, 0x207a: 0x2f61, 0x207b: 0x907d,\n\t0x207c: 0x2f69, 0x207d: 0x2f71, 0x207e: 0x2f79, 0x207f: 0x2f81,\n\t// Block 0x82, offset 0x2080\n\t0x2080: 0x2f89, 0x2081: 0x2f91, 0x2082: 0x2f99, 0x2083: 0x2fa1, 0x2084: 0x2fa9, 0x2085: 0x2fb1,\n\t0x2086: 0x909d, 0x2087: 0x2fb9, 0x2088: 0x2fc1, 0x2089: 0x2fc9, 0x208a: 0x2fd1, 0x208b: 0x2fd9,\n\t0x208c: 0x2fe1, 0x208d: 0x90bd, 0x208e: 0x2fe9, 0x208f: 0x2ff1, 0x2090: 0x90dd, 0x2091: 0x90fd,\n\t0x2092: 0x2ff9, 0x2093: 0x3001, 0x2094: 0x3009, 0x2095: 0x3011, 0x2096: 0x3019, 0x2097: 0x3021,\n\t0x2098: 0x3029, 0x2099: 0x3031, 0x209a: 0x3039, 0x209b: 0x911d, 0x209c: 0x3041, 0x209d: 0x913d,\n\t0x209e: 0x3049, 0x209f: 0x2040, 0x20a0: 0x3051, 0x20a1: 0x3059, 0x20a2: 0x3061, 0x20a3: 0x915d,\n\t0x20a4: 0x3069, 0x20a5: 0x3071, 0x20a6: 0x917d, 0x20a7: 0x919d, 0x20a8: 0x3079, 0x20a9: 0x3081,\n\t0x20aa: 0x3089, 0x20ab: 0x3091, 0x20ac: 0x3099, 0x20ad: 0x3099, 0x20ae: 0x30a1, 0x20af: 0x30a9,\n\t0x20b0: 0x30b1, 0x20b1: 0x30b9, 0x20b2: 0x30c1, 0x20b3: 0x30c9, 0x20b4: 0x30d1, 0x20b5: 0x91bd,\n\t0x20b6: 0x30d9, 0x20b7: 0x91dd, 0x20b8: 0x30e1, 0x20b9: 0x91fd, 0x20ba: 0x30e9, 0x20bb: 0x921d,\n\t0x20bc: 0x923d, 0x20bd: 0x925d, 0x20be: 0x30f1, 0x20bf: 0x30f9,\n\t// Block 0x83, offset 0x20c0\n\t0x20c0: 0x3101, 0x20c1: 0x927d, 0x20c2: 0x929d, 0x20c3: 0x92bd, 0x20c4: 0x92dd, 0x20c5: 0x3109,\n\t0x20c6: 0x3111, 0x20c7: 0x3111, 0x20c8: 0x3119, 0x20c9: 0x3121, 0x20ca: 0x3129, 0x20cb: 0x3131,\n\t0x20cc: 0x3139, 0x20cd: 0x92fd, 0x20ce: 0x3141, 0x20cf: 0x3149, 0x20d0: 0x3151, 0x20d1: 0x3159,\n\t0x20d2: 0x931d, 0x20d3: 0x3161, 0x20d4: 0x933d, 0x20d5: 0x935d, 0x20d6: 0x3169, 0x20d7: 0x3171,\n\t0x20d8: 0x3179, 0x20d9: 0x3181, 0x20da: 0x3189, 0x20db: 0x3191, 0x20dc: 0x937d, 0x20dd: 0x939d,\n\t0x20de: 0x93bd, 0x20df: 0x2040, 0x20e0: 0x3199, 0x20e1: 0x93dd, 0x20e2: 0x31a1, 0x20e3: 0x31a9,\n\t0x20e4: 0x31b1, 0x20e5: 0x93fd, 0x20e6: 0x31b9, 0x20e7: 0x31c1, 0x20e8: 0x31c9, 0x20e9: 0x31d1,\n\t0x20ea: 0x31d9, 0x20eb: 0x941d, 0x20ec: 0x31e1, 0x20ed: 0x31e9, 0x20ee: 0x31f1, 0x20ef: 0x31f9,\n\t0x20f0: 0x3201, 0x20f1: 0x3209, 0x20f2: 0x943d, 0x20f3: 0x945d, 0x20f4: 0x3211, 0x20f5: 0x947d,\n\t0x20f6: 0x3219, 0x20f7: 0x949d, 0x20f8: 0x3221, 0x20f9: 0x3229, 0x20fa: 0x3231, 0x20fb: 0x94bd,\n\t0x20fc: 0x94dd, 0x20fd: 0x3239, 0x20fe: 0x94fd, 0x20ff: 0x3241,\n\t// Block 0x84, offset 0x2100\n\t0x2100: 0x951d, 0x2101: 0x3249, 0x2102: 0x3251, 0x2103: 0x3259, 0x2104: 0x3261, 0x2105: 0x3269,\n\t0x2106: 0x3271, 0x2107: 0x953d, 0x2108: 0x955d, 0x2109: 0x957d, 0x210a: 0x959d, 0x210b: 0x2ca1,\n\t0x210c: 0x3279, 0x210d: 0x3281, 0x210e: 0x3289, 0x210f: 0x3291, 0x2110: 0x3299, 0x2111: 0x32a1,\n\t0x2112: 0x32a9, 0x2113: 0x32b1, 0x2114: 0x32b9, 0x2115: 0x32c1, 0x2116: 0x32c9, 0x2117: 0x95bd,\n\t0x2118: 0x32d1, 0x2119: 0x32d9, 0x211a: 0x32e1, 0x211b: 0x32e9, 0x211c: 0x32f1, 0x211d: 0x32f9,\n\t0x211e: 0x3301, 0x211f: 0x3309, 0x2120: 0x3311, 0x2121: 0x3319, 0x2122: 0x3321, 0x2123: 0x3329,\n\t0x2124: 0x95dd, 0x2125: 0x95fd, 0x2126: 0x961d, 0x2127: 0x3331, 0x2128: 0x3339, 0x2129: 0x3341,\n\t0x212a: 0x3349, 0x212b: 0x963d, 0x212c: 0x3351, 0x212d: 0x965d, 0x212e: 0x3359, 0x212f: 0x3361,\n\t0x2130: 0x967d, 0x2131: 0x969d, 0x2132: 0x3369, 0x2133: 0x3371, 0x2134: 0x3379, 0x2135: 0x3381,\n\t0x2136: 0x3389, 0x2137: 0x3391, 0x2138: 0x3399, 0x2139: 0x33a1, 0x213a: 0x33a9, 0x213b: 0x33b1,\n\t0x213c: 0x33b9, 0x213d: 0x33c1, 0x213e: 0x33c9, 0x213f: 0x2040,\n\t// Block 0x85, offset 0x2140\n\t0x2140: 0x33d1, 0x2141: 0x33d9, 0x2142: 0x33e1, 0x2143: 0x33e9, 0x2144: 0x33f1, 0x2145: 0x96bd,\n\t0x2146: 0x33f9, 0x2147: 0x3401, 0x2148: 0x3409, 0x2149: 0x3411, 0x214a: 0x3419, 0x214b: 0x96dd,\n\t0x214c: 0x96fd, 0x214d: 0x3421, 0x214e: 0x3429, 0x214f: 0x3431, 0x2150: 0x3439, 0x2151: 0x3441,\n\t0x2152: 0x3449, 0x2153: 0x971d, 0x2154: 0x3451, 0x2155: 0x3459, 0x2156: 0x3461, 0x2157: 0x3469,\n\t0x2158: 0x973d, 0x2159: 0x975d, 0x215a: 0x3471, 0x215b: 0x3479, 0x215c: 0x3481, 0x215d: 0x977d,\n\t0x215e: 0x3489, 0x215f: 0x3491, 0x2160: 0x684d, 0x2161: 0x979d, 0x2162: 0x3499, 0x2163: 0x34a1,\n\t0x2164: 0x34a9, 0x2165: 0x97bd, 0x2166: 0x34b1, 0x2167: 0x34b9, 0x2168: 0x34c1, 0x2169: 0x34c9,\n\t0x216a: 0x34d1, 0x216b: 0x34d9, 0x216c: 0x34e1, 0x216d: 0x97dd, 0x216e: 0x34e9, 0x216f: 0x34f1,\n\t0x2170: 0x34f9, 0x2171: 0x97fd, 0x2172: 0x3501, 0x2173: 0x3509, 0x2174: 0x3511, 0x2175: 0x3519,\n\t0x2176: 0x7b6d, 0x2177: 0x981d, 0x2178: 0x3521, 0x2179: 0x3529, 0x217a: 0x3531, 0x217b: 0x983d,\n\t0x217c: 0x3539, 0x217d: 0x985d, 0x217e: 0x3541, 0x217f: 0x3541,\n\t// Block 0x86, offset 0x2180\n\t0x2180: 0x3549, 0x2181: 0x987d, 0x2182: 0x3551, 0x2183: 0x3559, 0x2184: 0x3561, 0x2185: 0x3569,\n\t0x2186: 0x3571, 0x2187: 0x3579, 0x2188: 0x3581, 0x2189: 0x989d, 0x218a: 0x3589, 0x218b: 0x3591,\n\t0x218c: 0x3599, 0x218d: 0x35a1, 0x218e: 0x35a9, 0x218f: 0x35b1, 0x2190: 0x98bd, 0x2191: 0x35b9,\n\t0x2192: 0x98dd, 0x2193: 0x98fd, 0x2194: 0x991d, 0x2195: 0x35c1, 0x2196: 0x35c9, 0x2197: 0x35d1,\n\t0x2198: 0x35d9, 0x2199: 0x35e1, 0x219a: 0x35e9, 0x219b: 0x35f1, 0x219c: 0x35f9, 0x219d: 0x993d,\n\t0x219e: 0x0040, 0x219f: 0x0040, 0x21a0: 0x0040, 0x21a1: 0x0040, 0x21a2: 0x0040, 0x21a3: 0x0040,\n\t0x21a4: 0x0040, 0x21a5: 0x0040, 0x21a6: 0x0040, 0x21a7: 0x0040, 0x21a8: 0x0040, 0x21a9: 0x0040,\n\t0x21aa: 0x0040, 0x21ab: 0x0040, 0x21ac: 0x0040, 0x21ad: 0x0040, 0x21ae: 0x0040, 0x21af: 0x0040,\n\t0x21b0: 0x0040, 0x21b1: 0x0040, 0x21b2: 0x0040, 0x21b3: 0x0040, 0x21b4: 0x0040, 0x21b5: 0x0040,\n\t0x21b6: 0x0040, 0x21b7: 0x0040, 0x21b8: 0x0040, 0x21b9: 0x0040, 0x21ba: 0x0040, 0x21bb: 0x0040,\n\t0x21bc: 0x0040, 0x21bd: 0x0040, 0x21be: 0x0040, 0x21bf: 0x0040,\n}\n\n// idnaIndex: 39 blocks, 2496 entries, 4992 bytes\n// Block 0 is the zero block.\nvar idnaIndex = [2496]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x85, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05,\n\t0xc8: 0x06, 0xc9: 0x86, 0xca: 0x87, 0xcb: 0x07, 0xcc: 0x88, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a,\n\t0xd0: 0x89, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x8a, 0xd6: 0x8b, 0xd7: 0x8c,\n\t0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x8d, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x8e, 0xde: 0x8f, 0xdf: 0x90,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07,\n\t0xe8: 0x07, 0xe9: 0x07, 0xea: 0x08, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x09, 0xee: 0x0a, 0xef: 0x0b,\n\t0xf0: 0x20, 0xf1: 0x21, 0xf2: 0x21, 0xf3: 0x23, 0xf4: 0x24,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x91, 0x121: 0x13, 0x122: 0x14, 0x123: 0x92, 0x124: 0x93, 0x125: 0x15, 0x126: 0x16, 0x127: 0x17,\n\t0x128: 0x18, 0x129: 0x19, 0x12a: 0x1a, 0x12b: 0x1b, 0x12c: 0x1c, 0x12d: 0x1d, 0x12e: 0x1e, 0x12f: 0x94,\n\t0x130: 0x95, 0x131: 0x1f, 0x132: 0x20, 0x133: 0x21, 0x134: 0x96, 0x135: 0x22, 0x136: 0x97, 0x137: 0x98,\n\t0x138: 0x99, 0x139: 0x9a, 0x13a: 0x23, 0x13b: 0x9b, 0x13c: 0x9c, 0x13d: 0x24, 0x13e: 0x25, 0x13f: 0x9d,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x9e, 0x141: 0x9f, 0x142: 0xa0, 0x143: 0xa1, 0x144: 0xa2, 0x145: 0xa3, 0x146: 0xa4, 0x147: 0xa5,\n\t0x148: 0xa6, 0x149: 0xa7, 0x14a: 0xa8, 0x14b: 0xa9, 0x14c: 0xaa, 0x14d: 0xab, 0x14e: 0xac, 0x14f: 0xad,\n\t0x150: 0xae, 0x151: 0xa6, 0x152: 0xa6, 0x153: 0xa6, 0x154: 0xa6, 0x155: 0xa6, 0x156: 0xa6, 0x157: 0xa6,\n\t0x158: 0xa6, 0x159: 0xaf, 0x15a: 0xb0, 0x15b: 0xb1, 0x15c: 0xb2, 0x15d: 0xb3, 0x15e: 0xb4, 0x15f: 0xb5,\n\t0x160: 0xb6, 0x161: 0xb7, 0x162: 0xb8, 0x163: 0xb9, 0x164: 0xba, 0x165: 0xbb, 0x166: 0xbc, 0x167: 0xbd,\n\t0x168: 0xbe, 0x169: 0xbf, 0x16a: 0xc0, 0x16b: 0xc1, 0x16c: 0xc2, 0x16d: 0xc3, 0x16e: 0xc4, 0x16f: 0xc5,\n\t0x170: 0xc6, 0x171: 0xc7, 0x172: 0xc8, 0x173: 0xc9, 0x174: 0x26, 0x175: 0x27, 0x176: 0x28, 0x177: 0x88,\n\t0x178: 0x29, 0x179: 0x29, 0x17a: 0x2a, 0x17b: 0x29, 0x17c: 0xca, 0x17d: 0x2b, 0x17e: 0x2c, 0x17f: 0x2d,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x2e, 0x181: 0x2f, 0x182: 0x30, 0x183: 0xcb, 0x184: 0x31, 0x185: 0x32, 0x186: 0xcc, 0x187: 0xa2,\n\t0x188: 0xcd, 0x189: 0xce, 0x18a: 0xa2, 0x18b: 0xa2, 0x18c: 0xcf, 0x18d: 0xa2, 0x18e: 0xa2, 0x18f: 0xa2,\n\t0x190: 0xd0, 0x191: 0x33, 0x192: 0x34, 0x193: 0x35, 0x194: 0xa2, 0x195: 0xa2, 0x196: 0xa2, 0x197: 0xa2,\n\t0x198: 0xa2, 0x199: 0xa2, 0x19a: 0xa2, 0x19b: 0xa2, 0x19c: 0xa2, 0x19d: 0xa2, 0x19e: 0xa2, 0x19f: 0xa2,\n\t0x1a0: 0xa2, 0x1a1: 0xa2, 0x1a2: 0xa2, 0x1a3: 0xa2, 0x1a4: 0xa2, 0x1a5: 0xa2, 0x1a6: 0xa2, 0x1a7: 0xa2,\n\t0x1a8: 0xd1, 0x1a9: 0xd2, 0x1aa: 0xa2, 0x1ab: 0xd3, 0x1ac: 0xa2, 0x1ad: 0xd4, 0x1ae: 0xd5, 0x1af: 0xa2,\n\t0x1b0: 0xd6, 0x1b1: 0x36, 0x1b2: 0x29, 0x1b3: 0x37, 0x1b4: 0xd7, 0x1b5: 0xd8, 0x1b6: 0xd9, 0x1b7: 0xda,\n\t0x1b8: 0xdb, 0x1b9: 0xdc, 0x1ba: 0xdd, 0x1bb: 0xde, 0x1bc: 0xdf, 0x1bd: 0xe0, 0x1be: 0xe1, 0x1bf: 0x38,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x39, 0x1c1: 0xe2, 0x1c2: 0xe3, 0x1c3: 0xe4, 0x1c4: 0xe5, 0x1c5: 0x3a, 0x1c6: 0x3b, 0x1c7: 0xe6,\n\t0x1c8: 0xe7, 0x1c9: 0x3c, 0x1ca: 0x3d, 0x1cb: 0x3e, 0x1cc: 0xe8, 0x1cd: 0xe9, 0x1ce: 0x3f, 0x1cf: 0x40,\n\t0x1d0: 0xa6, 0x1d1: 0xa6, 0x1d2: 0xa6, 0x1d3: 0xa6, 0x1d4: 0xa6, 0x1d5: 0xa6, 0x1d6: 0xa6, 0x1d7: 0xa6,\n\t0x1d8: 0xa6, 0x1d9: 0xa6, 0x1da: 0xa6, 0x1db: 0xa6, 0x1dc: 0xa6, 0x1dd: 0xa6, 0x1de: 0xa6, 0x1df: 0xa6,\n\t0x1e0: 0xa6, 0x1e1: 0xa6, 0x1e2: 0xa6, 0x1e3: 0xa6, 0x1e4: 0xa6, 0x1e5: 0xa6, 0x1e6: 0xa6, 0x1e7: 0xa6,\n\t0x1e8: 0xa6, 0x1e9: 0xa6, 0x1ea: 0xa6, 0x1eb: 0xa6, 0x1ec: 0xa6, 0x1ed: 0xa6, 0x1ee: 0xa6, 0x1ef: 0xa6,\n\t0x1f0: 0xa6, 0x1f1: 0xa6, 0x1f2: 0xa6, 0x1f3: 0xa6, 0x1f4: 0xa6, 0x1f5: 0xa6, 0x1f6: 0xa6, 0x1f7: 0xa6,\n\t0x1f8: 0xa6, 0x1f9: 0xa6, 0x1fa: 0xa6, 0x1fb: 0xa6, 0x1fc: 0xa6, 0x1fd: 0xa6, 0x1fe: 0xa6, 0x1ff: 0xa6,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xa6, 0x201: 0xa6, 0x202: 0xa6, 0x203: 0xa6, 0x204: 0xa6, 0x205: 0xa6, 0x206: 0xa6, 0x207: 0xa6,\n\t0x208: 0xa6, 0x209: 0xa6, 0x20a: 0xa6, 0x20b: 0xa6, 0x20c: 0xa6, 0x20d: 0xa6, 0x20e: 0xa6, 0x20f: 0xa6,\n\t0x210: 0xa6, 0x211: 0xa6, 0x212: 0xa6, 0x213: 0xa6, 0x214: 0xa6, 0x215: 0xa6, 0x216: 0xa6, 0x217: 0xa6,\n\t0x218: 0xa6, 0x219: 0xa6, 0x21a: 0xa6, 0x21b: 0xa6, 0x21c: 0xa6, 0x21d: 0xa6, 0x21e: 0xa6, 0x21f: 0xa6,\n\t0x220: 0xa6, 0x221: 0xa6, 0x222: 0xa6, 0x223: 0xa6, 0x224: 0xa6, 0x225: 0xa6, 0x226: 0xa6, 0x227: 0xa6,\n\t0x228: 0xa6, 0x229: 0xa6, 0x22a: 0xa6, 0x22b: 0xa6, 0x22c: 0xa6, 0x22d: 0xa6, 0x22e: 0xa6, 0x22f: 0xa6,\n\t0x230: 0xa6, 0x231: 0xa6, 0x232: 0xa6, 0x233: 0xa6, 0x234: 0xa6, 0x235: 0xa6, 0x236: 0xa6, 0x237: 0xa2,\n\t0x238: 0xa6, 0x239: 0xa6, 0x23a: 0xa6, 0x23b: 0xa6, 0x23c: 0xa6, 0x23d: 0xa6, 0x23e: 0xa6, 0x23f: 0xa6,\n\t// Block 0x9, offset 0x240\n\t0x240: 0xa6, 0x241: 0xa6, 0x242: 0xa6, 0x243: 0xa6, 0x244: 0xa6, 0x245: 0xa6, 0x246: 0xa6, 0x247: 0xa6,\n\t0x248: 0xa6, 0x249: 0xa6, 0x24a: 0xa6, 0x24b: 0xa6, 0x24c: 0xa6, 0x24d: 0xa6, 0x24e: 0xa6, 0x24f: 0xa6,\n\t0x250: 0xa6, 0x251: 0xa6, 0x252: 0xa6, 0x253: 0xa6, 0x254: 0xa6, 0x255: 0xa6, 0x256: 0xa6, 0x257: 0xa6,\n\t0x258: 0xa6, 0x259: 0xa6, 0x25a: 0xa6, 0x25b: 0xa6, 0x25c: 0xa6, 0x25d: 0xa6, 0x25e: 0xa6, 0x25f: 0xa6,\n\t0x260: 0xa6, 0x261: 0xa6, 0x262: 0xa6, 0x263: 0xa6, 0x264: 0xa6, 0x265: 0xa6, 0x266: 0xa6, 0x267: 0xa6,\n\t0x268: 0xa6, 0x269: 0xa6, 0x26a: 0xa6, 0x26b: 0xa6, 0x26c: 0xa6, 0x26d: 0xa6, 0x26e: 0xa6, 0x26f: 0xa6,\n\t0x270: 0xa6, 0x271: 0xa6, 0x272: 0xa6, 0x273: 0xa6, 0x274: 0xa6, 0x275: 0xa6, 0x276: 0xa6, 0x277: 0xa6,\n\t0x278: 0xa6, 0x279: 0xa6, 0x27a: 0xa6, 0x27b: 0xa6, 0x27c: 0xa6, 0x27d: 0xa6, 0x27e: 0xa6, 0x27f: 0xa6,\n\t// Block 0xa, offset 0x280\n\t0x280: 0xa6, 0x281: 0xa6, 0x282: 0xa6, 0x283: 0xa6, 0x284: 0xa6, 0x285: 0xa6, 0x286: 0xa6, 0x287: 0xa6,\n\t0x288: 0xa6, 0x289: 0xa6, 0x28a: 0xa6, 0x28b: 0xa6, 0x28c: 0xa6, 0x28d: 0xa6, 0x28e: 0xa6, 0x28f: 0xa6,\n\t0x290: 0xa6, 0x291: 0xa6, 0x292: 0xea, 0x293: 0xeb, 0x294: 0xa6, 0x295: 0xa6, 0x296: 0xa6, 0x297: 0xa6,\n\t0x298: 0xec, 0x299: 0x41, 0x29a: 0x42, 0x29b: 0xed, 0x29c: 0x43, 0x29d: 0x44, 0x29e: 0x45, 0x29f: 0x46,\n\t0x2a0: 0xee, 0x2a1: 0xef, 0x2a2: 0xf0, 0x2a3: 0xf1, 0x2a4: 0xf2, 0x2a5: 0xf3, 0x2a6: 0xf4, 0x2a7: 0xf5,\n\t0x2a8: 0xf6, 0x2a9: 0xf7, 0x2aa: 0xf8, 0x2ab: 0xf9, 0x2ac: 0xfa, 0x2ad: 0xfb, 0x2ae: 0xfc, 0x2af: 0xfd,\n\t0x2b0: 0xa6, 0x2b1: 0xa6, 0x2b2: 0xa6, 0x2b3: 0xa6, 0x2b4: 0xa6, 0x2b5: 0xa6, 0x2b6: 0xa6, 0x2b7: 0xa6,\n\t0x2b8: 0xa6, 0x2b9: 0xa6, 0x2ba: 0xa6, 0x2bb: 0xa6, 0x2bc: 0xa6, 0x2bd: 0xa6, 0x2be: 0xa6, 0x2bf: 0xa6,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0xa6, 0x2c1: 0xa6, 0x2c2: 0xa6, 0x2c3: 0xa6, 0x2c4: 0xa6, 0x2c5: 0xa6, 0x2c6: 0xa6, 0x2c7: 0xa6,\n\t0x2c8: 0xa6, 0x2c9: 0xa6, 0x2ca: 0xa6, 0x2cb: 0xa6, 0x2cc: 0xa6, 0x2cd: 0xa6, 0x2ce: 0xa6, 0x2cf: 0xa6,\n\t0x2d0: 0xa6, 0x2d1: 0xa6, 0x2d2: 0xa6, 0x2d3: 0xa6, 0x2d4: 0xa6, 0x2d5: 0xa6, 0x2d6: 0xa6, 0x2d7: 0xa6,\n\t0x2d8: 0xa6, 0x2d9: 0xa6, 0x2da: 0xa6, 0x2db: 0xa6, 0x2dc: 0xa6, 0x2dd: 0xa6, 0x2de: 0xfe, 0x2df: 0xff,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x100, 0x301: 0x100, 0x302: 0x100, 0x303: 0x100, 0x304: 0x100, 0x305: 0x100, 0x306: 0x100, 0x307: 0x100,\n\t0x308: 0x100, 0x309: 0x100, 0x30a: 0x100, 0x30b: 0x100, 0x30c: 0x100, 0x30d: 0x100, 0x30e: 0x100, 0x30f: 0x100,\n\t0x310: 0x100, 0x311: 0x100, 0x312: 0x100, 0x313: 0x100, 0x314: 0x100, 0x315: 0x100, 0x316: 0x100, 0x317: 0x100,\n\t0x318: 0x100, 0x319: 0x100, 0x31a: 0x100, 0x31b: 0x100, 0x31c: 0x100, 0x31d: 0x100, 0x31e: 0x100, 0x31f: 0x100,\n\t0x320: 0x100, 0x321: 0x100, 0x322: 0x100, 0x323: 0x100, 0x324: 0x100, 0x325: 0x100, 0x326: 0x100, 0x327: 0x100,\n\t0x328: 0x100, 0x329: 0x100, 0x32a: 0x100, 0x32b: 0x100, 0x32c: 0x100, 0x32d: 0x100, 0x32e: 0x100, 0x32f: 0x100,\n\t0x330: 0x100, 0x331: 0x100, 0x332: 0x100, 0x333: 0x100, 0x334: 0x100, 0x335: 0x100, 0x336: 0x100, 0x337: 0x100,\n\t0x338: 0x100, 0x339: 0x100, 0x33a: 0x100, 0x33b: 0x100, 0x33c: 0x100, 0x33d: 0x100, 0x33e: 0x100, 0x33f: 0x100,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x100, 0x341: 0x100, 0x342: 0x100, 0x343: 0x100, 0x344: 0x100, 0x345: 0x100, 0x346: 0x100, 0x347: 0x100,\n\t0x348: 0x100, 0x349: 0x100, 0x34a: 0x100, 0x34b: 0x100, 0x34c: 0x100, 0x34d: 0x100, 0x34e: 0x100, 0x34f: 0x100,\n\t0x350: 0x100, 0x351: 0x100, 0x352: 0x100, 0x353: 0x100, 0x354: 0x100, 0x355: 0x100, 0x356: 0x100, 0x357: 0x100,\n\t0x358: 0x100, 0x359: 0x100, 0x35a: 0x100, 0x35b: 0x100, 0x35c: 0x100, 0x35d: 0x100, 0x35e: 0x100, 0x35f: 0x100,\n\t0x360: 0x100, 0x361: 0x100, 0x362: 0x100, 0x363: 0x100, 0x364: 0x101, 0x365: 0x102, 0x366: 0x103, 0x367: 0x104,\n\t0x368: 0x47, 0x369: 0x105, 0x36a: 0x106, 0x36b: 0x48, 0x36c: 0x49, 0x36d: 0x4a, 0x36e: 0x4b, 0x36f: 0x4c,\n\t0x370: 0x107, 0x371: 0x4d, 0x372: 0x4e, 0x373: 0x4f, 0x374: 0x50, 0x375: 0x51, 0x376: 0x108, 0x377: 0x52,\n\t0x378: 0x53, 0x379: 0x54, 0x37a: 0x55, 0x37b: 0x56, 0x37c: 0x57, 0x37d: 0x58, 0x37e: 0x59, 0x37f: 0x5a,\n\t// Block 0xe, offset 0x380\n\t0x380: 0x109, 0x381: 0x10a, 0x382: 0xa6, 0x383: 0x10b, 0x384: 0x10c, 0x385: 0xa2, 0x386: 0x10d, 0x387: 0x10e,\n\t0x388: 0x100, 0x389: 0x100, 0x38a: 0x10f, 0x38b: 0x110, 0x38c: 0x111, 0x38d: 0x112, 0x38e: 0x113, 0x38f: 0x114,\n\t0x390: 0x115, 0x391: 0xa6, 0x392: 0x116, 0x393: 0x117, 0x394: 0x118, 0x395: 0x5b, 0x396: 0x5c, 0x397: 0x100,\n\t0x398: 0xa6, 0x399: 0xa6, 0x39a: 0xa6, 0x39b: 0xa6, 0x39c: 0x119, 0x39d: 0x11a, 0x39e: 0x5d, 0x39f: 0x100,\n\t0x3a0: 0x11b, 0x3a1: 0x11c, 0x3a2: 0x11d, 0x3a3: 0x11e, 0x3a4: 0x11f, 0x3a5: 0x100, 0x3a6: 0x120, 0x3a7: 0x121,\n\t0x3a8: 0x122, 0x3a9: 0x123, 0x3aa: 0x124, 0x3ab: 0x5e, 0x3ac: 0x125, 0x3ad: 0x126, 0x3ae: 0x5f, 0x3af: 0x100,\n\t0x3b0: 0x127, 0x3b1: 0x128, 0x3b2: 0x129, 0x3b3: 0x12a, 0x3b4: 0x12b, 0x3b5: 0x100, 0x3b6: 0x100, 0x3b7: 0x100,\n\t0x3b8: 0x100, 0x3b9: 0x12c, 0x3ba: 0x12d, 0x3bb: 0x12e, 0x3bc: 0x12f, 0x3bd: 0x130, 0x3be: 0x131, 0x3bf: 0x132,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x133, 0x3c1: 0x134, 0x3c2: 0x135, 0x3c3: 0x136, 0x3c4: 0x137, 0x3c5: 0x138, 0x3c6: 0x139, 0x3c7: 0x13a,\n\t0x3c8: 0x13b, 0x3c9: 0x13c, 0x3ca: 0x13d, 0x3cb: 0x13e, 0x3cc: 0x60, 0x3cd: 0x61, 0x3ce: 0x100, 0x3cf: 0x100,\n\t0x3d0: 0x13f, 0x3d1: 0x140, 0x3d2: 0x141, 0x3d3: 0x142, 0x3d4: 0x100, 0x3d5: 0x100, 0x3d6: 0x143, 0x3d7: 0x144,\n\t0x3d8: 0x145, 0x3d9: 0x146, 0x3da: 0x147, 0x3db: 0x148, 0x3dc: 0x149, 0x3dd: 0x14a, 0x3de: 0x100, 0x3df: 0x100,\n\t0x3e0: 0x14b, 0x3e1: 0x100, 0x3e2: 0x14c, 0x3e3: 0x14d, 0x3e4: 0x62, 0x3e5: 0x14e, 0x3e6: 0x14f, 0x3e7: 0x150,\n\t0x3e8: 0x151, 0x3e9: 0x152, 0x3ea: 0x153, 0x3eb: 0x154, 0x3ec: 0x155, 0x3ed: 0x100, 0x3ee: 0x100, 0x3ef: 0x100,\n\t0x3f0: 0x156, 0x3f1: 0x157, 0x3f2: 0x158, 0x3f3: 0x100, 0x3f4: 0x159, 0x3f5: 0x15a, 0x3f6: 0x15b, 0x3f7: 0x100,\n\t0x3f8: 0x100, 0x3f9: 0x100, 0x3fa: 0x100, 0x3fb: 0x15c, 0x3fc: 0x15d, 0x3fd: 0x15e, 0x3fe: 0x15f, 0x3ff: 0x160,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xa6, 0x401: 0xa6, 0x402: 0xa6, 0x403: 0xa6, 0x404: 0xa6, 0x405: 0xa6, 0x406: 0xa6, 0x407: 0xa6,\n\t0x408: 0xa6, 0x409: 0xa6, 0x40a: 0xa6, 0x40b: 0xa6, 0x40c: 0xa6, 0x40d: 0xa6, 0x40e: 0x161, 0x40f: 0x100,\n\t0x410: 0xa2, 0x411: 0x162, 0x412: 0xa6, 0x413: 0xa6, 0x414: 0xa6, 0x415: 0x163, 0x416: 0x100, 0x417: 0x100,\n\t0x418: 0x100, 0x419: 0x100, 0x41a: 0x100, 0x41b: 0x100, 0x41c: 0x100, 0x41d: 0x100, 0x41e: 0x100, 0x41f: 0x100,\n\t0x420: 0x100, 0x421: 0x100, 0x422: 0x100, 0x423: 0x100, 0x424: 0x100, 0x425: 0x100, 0x426: 0x100, 0x427: 0x100,\n\t0x428: 0x100, 0x429: 0x100, 0x42a: 0x100, 0x42b: 0x100, 0x42c: 0x100, 0x42d: 0x100, 0x42e: 0x100, 0x42f: 0x100,\n\t0x430: 0x100, 0x431: 0x100, 0x432: 0x100, 0x433: 0x100, 0x434: 0x100, 0x435: 0x100, 0x436: 0x100, 0x437: 0x100,\n\t0x438: 0x100, 0x439: 0x100, 0x43a: 0x100, 0x43b: 0x100, 0x43c: 0x100, 0x43d: 0x100, 0x43e: 0x164, 0x43f: 0x165,\n\t// Block 0x11, offset 0x440\n\t0x440: 0xa6, 0x441: 0xa6, 0x442: 0xa6, 0x443: 0xa6, 0x444: 0xa6, 0x445: 0xa6, 0x446: 0xa6, 0x447: 0xa6,\n\t0x448: 0xa6, 0x449: 0xa6, 0x44a: 0xa6, 0x44b: 0xa6, 0x44c: 0xa6, 0x44d: 0xa6, 0x44e: 0xa6, 0x44f: 0xa6,\n\t0x450: 0x166, 0x451: 0x167, 0x452: 0x100, 0x453: 0x100, 0x454: 0x100, 0x455: 0x100, 0x456: 0x100, 0x457: 0x100,\n\t0x458: 0x100, 0x459: 0x100, 0x45a: 0x100, 0x45b: 0x100, 0x45c: 0x100, 0x45d: 0x100, 0x45e: 0x100, 0x45f: 0x100,\n\t0x460: 0x100, 0x461: 0x100, 0x462: 0x100, 0x463: 0x100, 0x464: 0x100, 0x465: 0x100, 0x466: 0x100, 0x467: 0x100,\n\t0x468: 0x100, 0x469: 0x100, 0x46a: 0x100, 0x46b: 0x100, 0x46c: 0x100, 0x46d: 0x100, 0x46e: 0x100, 0x46f: 0x100,\n\t0x470: 0x100, 0x471: 0x100, 0x472: 0x100, 0x473: 0x100, 0x474: 0x100, 0x475: 0x100, 0x476: 0x100, 0x477: 0x100,\n\t0x478: 0x100, 0x479: 0x100, 0x47a: 0x100, 0x47b: 0x100, 0x47c: 0x100, 0x47d: 0x100, 0x47e: 0x100, 0x47f: 0x100,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x100, 0x481: 0x100, 0x482: 0x100, 0x483: 0x100, 0x484: 0x100, 0x485: 0x100, 0x486: 0x100, 0x487: 0x100,\n\t0x488: 0x100, 0x489: 0x100, 0x48a: 0x100, 0x48b: 0x100, 0x48c: 0x100, 0x48d: 0x100, 0x48e: 0x100, 0x48f: 0x100,\n\t0x490: 0xa6, 0x491: 0xa6, 0x492: 0xa6, 0x493: 0xa6, 0x494: 0xa6, 0x495: 0xa6, 0x496: 0xa6, 0x497: 0xa6,\n\t0x498: 0xa6, 0x499: 0x14a, 0x49a: 0x100, 0x49b: 0x100, 0x49c: 0x100, 0x49d: 0x100, 0x49e: 0x100, 0x49f: 0x100,\n\t0x4a0: 0x100, 0x4a1: 0x100, 0x4a2: 0x100, 0x4a3: 0x100, 0x4a4: 0x100, 0x4a5: 0x100, 0x4a6: 0x100, 0x4a7: 0x100,\n\t0x4a8: 0x100, 0x4a9: 0x100, 0x4aa: 0x100, 0x4ab: 0x100, 0x4ac: 0x100, 0x4ad: 0x100, 0x4ae: 0x100, 0x4af: 0x100,\n\t0x4b0: 0x100, 0x4b1: 0x100, 0x4b2: 0x100, 0x4b3: 0x100, 0x4b4: 0x100, 0x4b5: 0x100, 0x4b6: 0x100, 0x4b7: 0x100,\n\t0x4b8: 0x100, 0x4b9: 0x100, 0x4ba: 0x100, 0x4bb: 0x100, 0x4bc: 0x100, 0x4bd: 0x100, 0x4be: 0x100, 0x4bf: 0x100,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x100, 0x4c1: 0x100, 0x4c2: 0x100, 0x4c3: 0x100, 0x4c4: 0x100, 0x4c5: 0x100, 0x4c6: 0x100, 0x4c7: 0x100,\n\t0x4c8: 0x100, 0x4c9: 0x100, 0x4ca: 0x100, 0x4cb: 0x100, 0x4cc: 0x100, 0x4cd: 0x100, 0x4ce: 0x100, 0x4cf: 0x100,\n\t0x4d0: 0x100, 0x4d1: 0x100, 0x4d2: 0x100, 0x4d3: 0x100, 0x4d4: 0x100, 0x4d5: 0x100, 0x4d6: 0x100, 0x4d7: 0x100,\n\t0x4d8: 0x100, 0x4d9: 0x100, 0x4da: 0x100, 0x4db: 0x100, 0x4dc: 0x100, 0x4dd: 0x100, 0x4de: 0x100, 0x4df: 0x100,\n\t0x4e0: 0xa6, 0x4e1: 0xa6, 0x4e2: 0xa6, 0x4e3: 0xa6, 0x4e4: 0xa6, 0x4e5: 0xa6, 0x4e6: 0xa6, 0x4e7: 0xa6,\n\t0x4e8: 0x154, 0x4e9: 0x168, 0x4ea: 0x169, 0x4eb: 0x16a, 0x4ec: 0x16b, 0x4ed: 0x16c, 0x4ee: 0x16d, 0x4ef: 0x100,\n\t0x4f0: 0x100, 0x4f1: 0x100, 0x4f2: 0x100, 0x4f3: 0x100, 0x4f4: 0x100, 0x4f5: 0x100, 0x4f6: 0x100, 0x4f7: 0x100,\n\t0x4f8: 0x100, 0x4f9: 0x16e, 0x4fa: 0x16f, 0x4fb: 0x100, 0x4fc: 0xa6, 0x4fd: 0x170, 0x4fe: 0x171, 0x4ff: 0x172,\n\t// Block 0x14, offset 0x500\n\t0x500: 0xa6, 0x501: 0xa6, 0x502: 0xa6, 0x503: 0xa6, 0x504: 0xa6, 0x505: 0xa6, 0x506: 0xa6, 0x507: 0xa6,\n\t0x508: 0xa6, 0x509: 0xa6, 0x50a: 0xa6, 0x50b: 0xa6, 0x50c: 0xa6, 0x50d: 0xa6, 0x50e: 0xa6, 0x50f: 0xa6,\n\t0x510: 0xa6, 0x511: 0xa6, 0x512: 0xa6, 0x513: 0xa6, 0x514: 0xa6, 0x515: 0xa6, 0x516: 0xa6, 0x517: 0xa6,\n\t0x518: 0xa6, 0x519: 0xa6, 0x51a: 0xa6, 0x51b: 0xa6, 0x51c: 0xa6, 0x51d: 0xa6, 0x51e: 0xa6, 0x51f: 0x173,\n\t0x520: 0xa6, 0x521: 0xa6, 0x522: 0xa6, 0x523: 0xa6, 0x524: 0xa6, 0x525: 0xa6, 0x526: 0xa6, 0x527: 0xa6,\n\t0x528: 0xa6, 0x529: 0xa6, 0x52a: 0xa6, 0x52b: 0xa6, 0x52c: 0xa6, 0x52d: 0xa6, 0x52e: 0xa6, 0x52f: 0xa6,\n\t0x530: 0xa6, 0x531: 0xa6, 0x532: 0xa6, 0x533: 0x174, 0x534: 0x175, 0x535: 0x100, 0x536: 0x100, 0x537: 0x100,\n\t0x538: 0x100, 0x539: 0x100, 0x53a: 0x100, 0x53b: 0x100, 0x53c: 0x100, 0x53d: 0x100, 0x53e: 0x100, 0x53f: 0x100,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x100, 0x541: 0x100, 0x542: 0x100, 0x543: 0x100, 0x544: 0x100, 0x545: 0x100, 0x546: 0x100, 0x547: 0x100,\n\t0x548: 0x100, 0x549: 0x100, 0x54a: 0x100, 0x54b: 0x100, 0x54c: 0x100, 0x54d: 0x100, 0x54e: 0x100, 0x54f: 0x100,\n\t0x550: 0x100, 0x551: 0x100, 0x552: 0x100, 0x553: 0x100, 0x554: 0x100, 0x555: 0x100, 0x556: 0x100, 0x557: 0x100,\n\t0x558: 0x100, 0x559: 0x100, 0x55a: 0x100, 0x55b: 0x100, 0x55c: 0x100, 0x55d: 0x100, 0x55e: 0x100, 0x55f: 0x100,\n\t0x560: 0x100, 0x561: 0x100, 0x562: 0x100, 0x563: 0x100, 0x564: 0x100, 0x565: 0x100, 0x566: 0x100, 0x567: 0x100,\n\t0x568: 0x100, 0x569: 0x100, 0x56a: 0x100, 0x56b: 0x100, 0x56c: 0x100, 0x56d: 0x100, 0x56e: 0x100, 0x56f: 0x100,\n\t0x570: 0x100, 0x571: 0x100, 0x572: 0x100, 0x573: 0x100, 0x574: 0x100, 0x575: 0x100, 0x576: 0x100, 0x577: 0x100,\n\t0x578: 0x100, 0x579: 0x100, 0x57a: 0x100, 0x57b: 0x100, 0x57c: 0x100, 0x57d: 0x100, 0x57e: 0x100, 0x57f: 0x176,\n\t// Block 0x16, offset 0x580\n\t0x580: 0xa6, 0x581: 0xa6, 0x582: 0xa6, 0x583: 0xa6, 0x584: 0x177, 0x585: 0x178, 0x586: 0xa6, 0x587: 0xa6,\n\t0x588: 0xa6, 0x589: 0xa6, 0x58a: 0xa6, 0x58b: 0x179, 0x58c: 0x100, 0x58d: 0x100, 0x58e: 0x100, 0x58f: 0x100,\n\t0x590: 0x100, 0x591: 0x100, 0x592: 0x100, 0x593: 0x100, 0x594: 0x100, 0x595: 0x100, 0x596: 0x100, 0x597: 0x100,\n\t0x598: 0x100, 0x599: 0x100, 0x59a: 0x100, 0x59b: 0x100, 0x59c: 0x100, 0x59d: 0x100, 0x59e: 0x100, 0x59f: 0x100,\n\t0x5a0: 0x100, 0x5a1: 0x100, 0x5a2: 0x100, 0x5a3: 0x100, 0x5a4: 0x100, 0x5a5: 0x100, 0x5a6: 0x100, 0x5a7: 0x100,\n\t0x5a8: 0x100, 0x5a9: 0x100, 0x5aa: 0x100, 0x5ab: 0x100, 0x5ac: 0x100, 0x5ad: 0x100, 0x5ae: 0x100, 0x5af: 0x100,\n\t0x5b0: 0xa6, 0x5b1: 0x17a, 0x5b2: 0x17b, 0x5b3: 0x100, 0x5b4: 0x100, 0x5b5: 0x100, 0x5b6: 0x100, 0x5b7: 0x100,\n\t0x5b8: 0x100, 0x5b9: 0x100, 0x5ba: 0x100, 0x5bb: 0x100, 0x5bc: 0x100, 0x5bd: 0x100, 0x5be: 0x100, 0x5bf: 0x100,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x100, 0x5c1: 0x100, 0x5c2: 0x100, 0x5c3: 0x100, 0x5c4: 0x100, 0x5c5: 0x100, 0x5c6: 0x100, 0x5c7: 0x100,\n\t0x5c8: 0x100, 0x5c9: 0x100, 0x5ca: 0x100, 0x5cb: 0x100, 0x5cc: 0x100, 0x5cd: 0x100, 0x5ce: 0x100, 0x5cf: 0x100,\n\t0x5d0: 0x100, 0x5d1: 0x100, 0x5d2: 0x100, 0x5d3: 0x100, 0x5d4: 0x100, 0x5d5: 0x100, 0x5d6: 0x100, 0x5d7: 0x100,\n\t0x5d8: 0x100, 0x5d9: 0x100, 0x5da: 0x100, 0x5db: 0x100, 0x5dc: 0x100, 0x5dd: 0x100, 0x5de: 0x100, 0x5df: 0x100,\n\t0x5e0: 0x100, 0x5e1: 0x100, 0x5e2: 0x100, 0x5e3: 0x100, 0x5e4: 0x100, 0x5e5: 0x100, 0x5e6: 0x100, 0x5e7: 0x100,\n\t0x5e8: 0x100, 0x5e9: 0x100, 0x5ea: 0x100, 0x5eb: 0x100, 0x5ec: 0x100, 0x5ed: 0x100, 0x5ee: 0x100, 0x5ef: 0x100,\n\t0x5f0: 0x100, 0x5f1: 0x100, 0x5f2: 0x100, 0x5f3: 0x100, 0x5f4: 0x100, 0x5f5: 0x100, 0x5f6: 0x100, 0x5f7: 0x100,\n\t0x5f8: 0x100, 0x5f9: 0x100, 0x5fa: 0x100, 0x5fb: 0x100, 0x5fc: 0x17c, 0x5fd: 0x17d, 0x5fe: 0xa2, 0x5ff: 0x17e,\n\t// Block 0x18, offset 0x600\n\t0x600: 0xa2, 0x601: 0xa2, 0x602: 0xa2, 0x603: 0x17f, 0x604: 0x180, 0x605: 0x181, 0x606: 0x182, 0x607: 0x183,\n\t0x608: 0xa2, 0x609: 0x184, 0x60a: 0x100, 0x60b: 0x185, 0x60c: 0xa2, 0x60d: 0x186, 0x60e: 0x100, 0x60f: 0x100,\n\t0x610: 0x63, 0x611: 0x64, 0x612: 0x65, 0x613: 0x66, 0x614: 0x67, 0x615: 0x68, 0x616: 0x69, 0x617: 0x6a,\n\t0x618: 0x6b, 0x619: 0x6c, 0x61a: 0x6d, 0x61b: 0x6e, 0x61c: 0x6f, 0x61d: 0x70, 0x61e: 0x71, 0x61f: 0x72,\n\t0x620: 0xa2, 0x621: 0xa2, 0x622: 0xa2, 0x623: 0xa2, 0x624: 0xa2, 0x625: 0xa2, 0x626: 0xa2, 0x627: 0xa2,\n\t0x628: 0x187, 0x629: 0x188, 0x62a: 0x189, 0x62b: 0x100, 0x62c: 0x100, 0x62d: 0x100, 0x62e: 0x100, 0x62f: 0x100,\n\t0x630: 0x100, 0x631: 0x100, 0x632: 0x100, 0x633: 0x100, 0x634: 0x100, 0x635: 0x100, 0x636: 0x100, 0x637: 0x100,\n\t0x638: 0x100, 0x639: 0x100, 0x63a: 0x100, 0x63b: 0x100, 0x63c: 0x18a, 0x63d: 0x100, 0x63e: 0x100, 0x63f: 0x100,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x73, 0x641: 0x74, 0x642: 0x18b, 0x643: 0x100, 0x644: 0x18c, 0x645: 0x18d, 0x646: 0x100, 0x647: 0x100,\n\t0x648: 0x100, 0x649: 0x100, 0x64a: 0x18e, 0x64b: 0x18f, 0x64c: 0x100, 0x64d: 0x100, 0x64e: 0x100, 0x64f: 0x100,\n\t0x650: 0x100, 0x651: 0x100, 0x652: 0x100, 0x653: 0x190, 0x654: 0x100, 0x655: 0x100, 0x656: 0x100, 0x657: 0x100,\n\t0x658: 0x100, 0x659: 0x100, 0x65a: 0x100, 0x65b: 0x100, 0x65c: 0x100, 0x65d: 0x100, 0x65e: 0x100, 0x65f: 0x191,\n\t0x660: 0x127, 0x661: 0x127, 0x662: 0x127, 0x663: 0x192, 0x664: 0x75, 0x665: 0x193, 0x666: 0x100, 0x667: 0x100,\n\t0x668: 0x100, 0x669: 0x100, 0x66a: 0x100, 0x66b: 0x100, 0x66c: 0x100, 0x66d: 0x100, 0x66e: 0x100, 0x66f: 0x100,\n\t0x670: 0x100, 0x671: 0x194, 0x672: 0x195, 0x673: 0x100, 0x674: 0x196, 0x675: 0x100, 0x676: 0x100, 0x677: 0x100,\n\t0x678: 0x76, 0x679: 0x77, 0x67a: 0x78, 0x67b: 0x197, 0x67c: 0x100, 0x67d: 0x100, 0x67e: 0x100, 0x67f: 0x100,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x198, 0x681: 0xa2, 0x682: 0x199, 0x683: 0x19a, 0x684: 0x79, 0x685: 0x7a, 0x686: 0x19b, 0x687: 0x19c,\n\t0x688: 0x7b, 0x689: 0x19d, 0x68a: 0x100, 0x68b: 0x100, 0x68c: 0xa2, 0x68d: 0xa2, 0x68e: 0xa2, 0x68f: 0xa2,\n\t0x690: 0xa2, 0x691: 0xa2, 0x692: 0xa2, 0x693: 0xa2, 0x694: 0xa2, 0x695: 0xa2, 0x696: 0xa2, 0x697: 0xa2,\n\t0x698: 0xa2, 0x699: 0xa2, 0x69a: 0xa2, 0x69b: 0x19e, 0x69c: 0xa2, 0x69d: 0x19f, 0x69e: 0xa2, 0x69f: 0x1a0,\n\t0x6a0: 0x1a1, 0x6a1: 0x1a2, 0x6a2: 0x1a3, 0x6a3: 0x100, 0x6a4: 0xa2, 0x6a5: 0xa2, 0x6a6: 0xa2, 0x6a7: 0xa2,\n\t0x6a8: 0xa2, 0x6a9: 0x1a4, 0x6aa: 0x1a5, 0x6ab: 0x1a6, 0x6ac: 0xa2, 0x6ad: 0xa2, 0x6ae: 0x1a7, 0x6af: 0x1a8,\n\t0x6b0: 0x100, 0x6b1: 0x100, 0x6b2: 0x100, 0x6b3: 0x100, 0x6b4: 0x100, 0x6b5: 0x100, 0x6b6: 0x100, 0x6b7: 0x100,\n\t0x6b8: 0x100, 0x6b9: 0x100, 0x6ba: 0x100, 0x6bb: 0x100, 0x6bc: 0x100, 0x6bd: 0x100, 0x6be: 0x100, 0x6bf: 0x100,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0xa6, 0x6c1: 0xa6, 0x6c2: 0xa6, 0x6c3: 0xa6, 0x6c4: 0xa6, 0x6c5: 0xa6, 0x6c6: 0xa6, 0x6c7: 0xa6,\n\t0x6c8: 0xa6, 0x6c9: 0xa6, 0x6ca: 0xa6, 0x6cb: 0xa6, 0x6cc: 0xa6, 0x6cd: 0xa6, 0x6ce: 0xa6, 0x6cf: 0xa6,\n\t0x6d0: 0xa6, 0x6d1: 0xa6, 0x6d2: 0xa6, 0x6d3: 0xa6, 0x6d4: 0xa6, 0x6d5: 0xa6, 0x6d6: 0xa6, 0x6d7: 0xa6,\n\t0x6d8: 0xa6, 0x6d9: 0xa6, 0x6da: 0xa6, 0x6db: 0x1a9, 0x6dc: 0xa6, 0x6dd: 0xa6, 0x6de: 0xa6, 0x6df: 0xa6,\n\t0x6e0: 0xa6, 0x6e1: 0xa6, 0x6e2: 0xa6, 0x6e3: 0xa6, 0x6e4: 0xa6, 0x6e5: 0xa6, 0x6e6: 0xa6, 0x6e7: 0xa6,\n\t0x6e8: 0xa6, 0x6e9: 0xa6, 0x6ea: 0xa6, 0x6eb: 0xa6, 0x6ec: 0xa6, 0x6ed: 0xa6, 0x6ee: 0xa6, 0x6ef: 0xa6,\n\t0x6f0: 0xa6, 0x6f1: 0xa6, 0x6f2: 0xa6, 0x6f3: 0xa6, 0x6f4: 0xa6, 0x6f5: 0xa6, 0x6f6: 0xa6, 0x6f7: 0xa6,\n\t0x6f8: 0xa6, 0x6f9: 0xa6, 0x6fa: 0xa6, 0x6fb: 0xa6, 0x6fc: 0xa6, 0x6fd: 0xa6, 0x6fe: 0xa6, 0x6ff: 0xa6,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0xa6, 0x701: 0xa6, 0x702: 0xa6, 0x703: 0xa6, 0x704: 0xa6, 0x705: 0xa6, 0x706: 0xa6, 0x707: 0xa6,\n\t0x708: 0xa6, 0x709: 0xa6, 0x70a: 0xa6, 0x70b: 0xa6, 0x70c: 0xa6, 0x70d: 0xa6, 0x70e: 0xa6, 0x70f: 0xa6,\n\t0x710: 0xa6, 0x711: 0xa6, 0x712: 0xa6, 0x713: 0xa6, 0x714: 0xa6, 0x715: 0xa6, 0x716: 0xa6, 0x717: 0xa6,\n\t0x718: 0xa6, 0x719: 0xa6, 0x71a: 0xa6, 0x71b: 0xa6, 0x71c: 0x1aa, 0x71d: 0xa6, 0x71e: 0xa6, 0x71f: 0xa6,\n\t0x720: 0x1ab, 0x721: 0xa6, 0x722: 0xa6, 0x723: 0xa6, 0x724: 0xa6, 0x725: 0xa6, 0x726: 0xa6, 0x727: 0xa6,\n\t0x728: 0xa6, 0x729: 0xa6, 0x72a: 0xa6, 0x72b: 0xa6, 0x72c: 0xa6, 0x72d: 0xa6, 0x72e: 0xa6, 0x72f: 0xa6,\n\t0x730: 0xa6, 0x731: 0xa6, 0x732: 0xa6, 0x733: 0xa6, 0x734: 0xa6, 0x735: 0xa6, 0x736: 0xa6, 0x737: 0xa6,\n\t0x738: 0xa6, 0x739: 0xa6, 0x73a: 0xa6, 0x73b: 0xa6, 0x73c: 0xa6, 0x73d: 0xa6, 0x73e: 0xa6, 0x73f: 0xa6,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0xa6, 0x741: 0xa6, 0x742: 0xa6, 0x743: 0xa6, 0x744: 0xa6, 0x745: 0xa6, 0x746: 0xa6, 0x747: 0xa6,\n\t0x748: 0xa6, 0x749: 0xa6, 0x74a: 0xa6, 0x74b: 0xa6, 0x74c: 0xa6, 0x74d: 0xa6, 0x74e: 0xa6, 0x74f: 0xa6,\n\t0x750: 0xa6, 0x751: 0xa6, 0x752: 0xa6, 0x753: 0xa6, 0x754: 0xa6, 0x755: 0xa6, 0x756: 0xa6, 0x757: 0xa6,\n\t0x758: 0xa6, 0x759: 0xa6, 0x75a: 0xa6, 0x75b: 0xa6, 0x75c: 0xa6, 0x75d: 0xa6, 0x75e: 0xa6, 0x75f: 0xa6,\n\t0x760: 0xa6, 0x761: 0xa6, 0x762: 0xa6, 0x763: 0xa6, 0x764: 0xa6, 0x765: 0xa6, 0x766: 0xa6, 0x767: 0xa6,\n\t0x768: 0xa6, 0x769: 0xa6, 0x76a: 0xa6, 0x76b: 0xa6, 0x76c: 0xa6, 0x76d: 0xa6, 0x76e: 0xa6, 0x76f: 0xa6,\n\t0x770: 0xa6, 0x771: 0xa6, 0x772: 0xa6, 0x773: 0xa6, 0x774: 0xa6, 0x775: 0xa6, 0x776: 0xa6, 0x777: 0xa6,\n\t0x778: 0xa6, 0x779: 0xa6, 0x77a: 0x1ac, 0x77b: 0xa6, 0x77c: 0xa6, 0x77d: 0xa6, 0x77e: 0xa6, 0x77f: 0xa6,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0xa6, 0x781: 0xa6, 0x782: 0xa6, 0x783: 0xa6, 0x784: 0xa6, 0x785: 0xa6, 0x786: 0xa6, 0x787: 0xa6,\n\t0x788: 0xa6, 0x789: 0xa6, 0x78a: 0xa6, 0x78b: 0xa6, 0x78c: 0xa6, 0x78d: 0xa6, 0x78e: 0xa6, 0x78f: 0xa6,\n\t0x790: 0xa6, 0x791: 0xa6, 0x792: 0xa6, 0x793: 0xa6, 0x794: 0xa6, 0x795: 0xa6, 0x796: 0xa6, 0x797: 0xa6,\n\t0x798: 0xa6, 0x799: 0xa6, 0x79a: 0xa6, 0x79b: 0xa6, 0x79c: 0xa6, 0x79d: 0xa6, 0x79e: 0xa6, 0x79f: 0xa6,\n\t0x7a0: 0xa6, 0x7a1: 0xa6, 0x7a2: 0xa6, 0x7a3: 0xa6, 0x7a4: 0xa6, 0x7a5: 0xa6, 0x7a6: 0xa6, 0x7a7: 0xa6,\n\t0x7a8: 0xa6, 0x7a9: 0xa6, 0x7aa: 0xa6, 0x7ab: 0xa6, 0x7ac: 0xa6, 0x7ad: 0xa6, 0x7ae: 0xa6, 0x7af: 0x1ad,\n\t0x7b0: 0x100, 0x7b1: 0x100, 0x7b2: 0x100, 0x7b3: 0x100, 0x7b4: 0x100, 0x7b5: 0x100, 0x7b6: 0x100, 0x7b7: 0x100,\n\t0x7b8: 0x100, 0x7b9: 0x100, 0x7ba: 0x100, 0x7bb: 0x100, 0x7bc: 0x100, 0x7bd: 0x100, 0x7be: 0x100, 0x7bf: 0x100,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x100, 0x7c1: 0x100, 0x7c2: 0x100, 0x7c3: 0x100, 0x7c4: 0x100, 0x7c5: 0x100, 0x7c6: 0x100, 0x7c7: 0x100,\n\t0x7c8: 0x100, 0x7c9: 0x100, 0x7ca: 0x100, 0x7cb: 0x100, 0x7cc: 0x100, 0x7cd: 0x100, 0x7ce: 0x100, 0x7cf: 0x100,\n\t0x7d0: 0x100, 0x7d1: 0x100, 0x7d2: 0x100, 0x7d3: 0x100, 0x7d4: 0x100, 0x7d5: 0x100, 0x7d6: 0x100, 0x7d7: 0x100,\n\t0x7d8: 0x100, 0x7d9: 0x100, 0x7da: 0x100, 0x7db: 0x100, 0x7dc: 0x100, 0x7dd: 0x100, 0x7de: 0x100, 0x7df: 0x100,\n\t0x7e0: 0x7c, 0x7e1: 0x7d, 0x7e2: 0x7e, 0x7e3: 0x7f, 0x7e4: 0x80, 0x7e5: 0x81, 0x7e6: 0x82, 0x7e7: 0x83,\n\t0x7e8: 0x84, 0x7e9: 0x100, 0x7ea: 0x100, 0x7eb: 0x100, 0x7ec: 0x100, 0x7ed: 0x100, 0x7ee: 0x100, 0x7ef: 0x100,\n\t0x7f0: 0x100, 0x7f1: 0x100, 0x7f2: 0x100, 0x7f3: 0x100, 0x7f4: 0x100, 0x7f5: 0x100, 0x7f6: 0x100, 0x7f7: 0x100,\n\t0x7f8: 0x100, 0x7f9: 0x100, 0x7fa: 0x100, 0x7fb: 0x100, 0x7fc: 0x100, 0x7fd: 0x100, 0x7fe: 0x100, 0x7ff: 0x100,\n\t// Block 0x20, offset 0x800\n\t0x800: 0xa6, 0x801: 0xa6, 0x802: 0xa6, 0x803: 0xa6, 0x804: 0xa6, 0x805: 0xa6, 0x806: 0xa6, 0x807: 0xa6,\n\t0x808: 0xa6, 0x809: 0xa6, 0x80a: 0xa6, 0x80b: 0xa6, 0x80c: 0xa6, 0x80d: 0x1ae, 0x80e: 0xa6, 0x80f: 0xa6,\n\t0x810: 0xa6, 0x811: 0xa6, 0x812: 0xa6, 0x813: 0xa6, 0x814: 0xa6, 0x815: 0xa6, 0x816: 0xa6, 0x817: 0xa6,\n\t0x818: 0xa6, 0x819: 0xa6, 0x81a: 0xa6, 0x81b: 0xa6, 0x81c: 0xa6, 0x81d: 0xa6, 0x81e: 0xa6, 0x81f: 0xa6,\n\t0x820: 0xa6, 0x821: 0xa6, 0x822: 0xa6, 0x823: 0xa6, 0x824: 0xa6, 0x825: 0xa6, 0x826: 0xa6, 0x827: 0xa6,\n\t0x828: 0xa6, 0x829: 0xa6, 0x82a: 0xa6, 0x82b: 0xa6, 0x82c: 0xa6, 0x82d: 0xa6, 0x82e: 0xa6, 0x82f: 0xa6,\n\t0x830: 0xa6, 0x831: 0xa6, 0x832: 0xa6, 0x833: 0xa6, 0x834: 0xa6, 0x835: 0xa6, 0x836: 0xa6, 0x837: 0xa6,\n\t0x838: 0xa6, 0x839: 0xa6, 0x83a: 0xa6, 0x83b: 0xa6, 0x83c: 0xa6, 0x83d: 0xa6, 0x83e: 0xa6, 0x83f: 0xa6,\n\t// Block 0x21, offset 0x840\n\t0x840: 0xa6, 0x841: 0xa6, 0x842: 0xa6, 0x843: 0xa6, 0x844: 0xa6, 0x845: 0xa6, 0x846: 0xa6, 0x847: 0xa6,\n\t0x848: 0xa6, 0x849: 0xa6, 0x84a: 0xa6, 0x84b: 0xa6, 0x84c: 0xa6, 0x84d: 0xa6, 0x84e: 0x1af, 0x84f: 0x100,\n\t0x850: 0x100, 0x851: 0x100, 0x852: 0x100, 0x853: 0x100, 0x854: 0x100, 0x855: 0x100, 0x856: 0x100, 0x857: 0x100,\n\t0x858: 0x100, 0x859: 0x100, 0x85a: 0x100, 0x85b: 0x100, 0x85c: 0x100, 0x85d: 0x100, 0x85e: 0x100, 0x85f: 0x100,\n\t0x860: 0x100, 0x861: 0x100, 0x862: 0x100, 0x863: 0x100, 0x864: 0x100, 0x865: 0x100, 0x866: 0x100, 0x867: 0x100,\n\t0x868: 0x100, 0x869: 0x100, 0x86a: 0x100, 0x86b: 0x100, 0x86c: 0x100, 0x86d: 0x100, 0x86e: 0x100, 0x86f: 0x100,\n\t0x870: 0x100, 0x871: 0x100, 0x872: 0x100, 0x873: 0x100, 0x874: 0x100, 0x875: 0x100, 0x876: 0x100, 0x877: 0x100,\n\t0x878: 0x100, 0x879: 0x100, 0x87a: 0x100, 0x87b: 0x100, 0x87c: 0x100, 0x87d: 0x100, 0x87e: 0x100, 0x87f: 0x100,\n\t// Block 0x22, offset 0x880\n\t0x890: 0x0c, 0x891: 0x0d, 0x892: 0x0e, 0x893: 0x0f, 0x894: 0x10, 0x895: 0x0a, 0x896: 0x11, 0x897: 0x07,\n\t0x898: 0x12, 0x899: 0x0a, 0x89a: 0x13, 0x89b: 0x14, 0x89c: 0x15, 0x89d: 0x16, 0x89e: 0x17, 0x89f: 0x18,\n\t0x8a0: 0x07, 0x8a1: 0x07, 0x8a2: 0x07, 0x8a3: 0x07, 0x8a4: 0x07, 0x8a5: 0x07, 0x8a6: 0x07, 0x8a7: 0x07,\n\t0x8a8: 0x07, 0x8a9: 0x07, 0x8aa: 0x19, 0x8ab: 0x1a, 0x8ac: 0x1b, 0x8ad: 0x07, 0x8ae: 0x1c, 0x8af: 0x1d,\n\t0x8b0: 0x07, 0x8b1: 0x1e, 0x8b2: 0x1f, 0x8b3: 0x0a, 0x8b4: 0x0a, 0x8b5: 0x0a, 0x8b6: 0x0a, 0x8b7: 0x0a,\n\t0x8b8: 0x0a, 0x8b9: 0x0a, 0x8ba: 0x0a, 0x8bb: 0x0a, 0x8bc: 0x0a, 0x8bd: 0x0a, 0x8be: 0x0a, 0x8bf: 0x0a,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0a, 0x8c1: 0x0a, 0x8c2: 0x0a, 0x8c3: 0x0a, 0x8c4: 0x0a, 0x8c5: 0x0a, 0x8c6: 0x0a, 0x8c7: 0x0a,\n\t0x8c8: 0x0a, 0x8c9: 0x0a, 0x8ca: 0x0a, 0x8cb: 0x0a, 0x8cc: 0x0a, 0x8cd: 0x0a, 0x8ce: 0x0a, 0x8cf: 0x0a,\n\t0x8d0: 0x0a, 0x8d1: 0x0a, 0x8d2: 0x0a, 0x8d3: 0x0a, 0x8d4: 0x0a, 0x8d5: 0x0a, 0x8d6: 0x0a, 0x8d7: 0x0a,\n\t0x8d8: 0x0a, 0x8d9: 0x0a, 0x8da: 0x0a, 0x8db: 0x0a, 0x8dc: 0x0a, 0x8dd: 0x0a, 0x8de: 0x0a, 0x8df: 0x0a,\n\t0x8e0: 0x0a, 0x8e1: 0x0a, 0x8e2: 0x0a, 0x8e3: 0x0a, 0x8e4: 0x0a, 0x8e5: 0x0a, 0x8e6: 0x0a, 0x8e7: 0x0a,\n\t0x8e8: 0x0a, 0x8e9: 0x0a, 0x8ea: 0x0a, 0x8eb: 0x0a, 0x8ec: 0x0a, 0x8ed: 0x0a, 0x8ee: 0x0a, 0x8ef: 0x0a,\n\t0x8f0: 0x0a, 0x8f1: 0x0a, 0x8f2: 0x0a, 0x8f3: 0x0a, 0x8f4: 0x0a, 0x8f5: 0x0a, 0x8f6: 0x0a, 0x8f7: 0x0a,\n\t0x8f8: 0x0a, 0x8f9: 0x0a, 0x8fa: 0x0a, 0x8fb: 0x0a, 0x8fc: 0x0a, 0x8fd: 0x0a, 0x8fe: 0x0a, 0x8ff: 0x0a,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x1b0, 0x901: 0x1b1, 0x902: 0x100, 0x903: 0x100, 0x904: 0x1b2, 0x905: 0x1b2, 0x906: 0x1b2, 0x907: 0x1b3,\n\t0x908: 0x100, 0x909: 0x100, 0x90a: 0x100, 0x90b: 0x100, 0x90c: 0x100, 0x90d: 0x100, 0x90e: 0x100, 0x90f: 0x100,\n\t0x910: 0x100, 0x911: 0x100, 0x912: 0x100, 0x913: 0x100, 0x914: 0x100, 0x915: 0x100, 0x916: 0x100, 0x917: 0x100,\n\t0x918: 0x100, 0x919: 0x100, 0x91a: 0x100, 0x91b: 0x100, 0x91c: 0x100, 0x91d: 0x100, 0x91e: 0x100, 0x91f: 0x100,\n\t0x920: 0x100, 0x921: 0x100, 0x922: 0x100, 0x923: 0x100, 0x924: 0x100, 0x925: 0x100, 0x926: 0x100, 0x927: 0x100,\n\t0x928: 0x100, 0x929: 0x100, 0x92a: 0x100, 0x92b: 0x100, 0x92c: 0x100, 0x92d: 0x100, 0x92e: 0x100, 0x92f: 0x100,\n\t0x930: 0x100, 0x931: 0x100, 0x932: 0x100, 0x933: 0x100, 0x934: 0x100, 0x935: 0x100, 0x936: 0x100, 0x937: 0x100,\n\t0x938: 0x100, 0x939: 0x100, 0x93a: 0x100, 0x93b: 0x100, 0x93c: 0x100, 0x93d: 0x100, 0x93e: 0x100, 0x93f: 0x100,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0a, 0x941: 0x0a, 0x942: 0x0a, 0x943: 0x0a, 0x944: 0x0a, 0x945: 0x0a, 0x946: 0x0a, 0x947: 0x0a,\n\t0x948: 0x0a, 0x949: 0x0a, 0x94a: 0x0a, 0x94b: 0x0a, 0x94c: 0x0a, 0x94d: 0x0a, 0x94e: 0x0a, 0x94f: 0x0a,\n\t0x950: 0x0a, 0x951: 0x0a, 0x952: 0x0a, 0x953: 0x0a, 0x954: 0x0a, 0x955: 0x0a, 0x956: 0x0a, 0x957: 0x0a,\n\t0x958: 0x0a, 0x959: 0x0a, 0x95a: 0x0a, 0x95b: 0x0a, 0x95c: 0x0a, 0x95d: 0x0a, 0x95e: 0x0a, 0x95f: 0x0a,\n\t0x960: 0x22, 0x961: 0x0a, 0x962: 0x0a, 0x963: 0x0a, 0x964: 0x0a, 0x965: 0x0a, 0x966: 0x0a, 0x967: 0x0a,\n\t0x968: 0x0a, 0x969: 0x0a, 0x96a: 0x0a, 0x96b: 0x0a, 0x96c: 0x0a, 0x96d: 0x0a, 0x96e: 0x0a, 0x96f: 0x0a,\n\t0x970: 0x0a, 0x971: 0x0a, 0x972: 0x0a, 0x973: 0x0a, 0x974: 0x0a, 0x975: 0x0a, 0x976: 0x0a, 0x977: 0x0a,\n\t0x978: 0x0a, 0x979: 0x0a, 0x97a: 0x0a, 0x97b: 0x0a, 0x97c: 0x0a, 0x97d: 0x0a, 0x97e: 0x0a, 0x97f: 0x0a,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x0a, 0x981: 0x0a, 0x982: 0x0a, 0x983: 0x0a, 0x984: 0x0a, 0x985: 0x0a, 0x986: 0x0a, 0x987: 0x0a,\n\t0x988: 0x0a, 0x989: 0x0a, 0x98a: 0x0a, 0x98b: 0x0a, 0x98c: 0x0a, 0x98d: 0x0a, 0x98e: 0x0a, 0x98f: 0x0a,\n}\n\n// idnaSparseOffset: 303 entries, 606 bytes\nvar idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x33, 0x3e, 0x4a, 0x4e, 0x5d, 0x62, 0x6c, 0x78, 0x7e, 0x87, 0x97, 0xa6, 0xb1, 0xbe, 0xcf, 0xd9, 0xe0, 0xed, 0xfe, 0x105, 0x110, 0x11f, 0x12d, 0x137, 0x139, 0x13e, 0x141, 0x144, 0x146, 0x152, 0x15d, 0x165, 0x16b, 0x171, 0x176, 0x17b, 0x17e, 0x182, 0x188, 0x18d, 0x198, 0x1a2, 0x1a8, 0x1b9, 0x1c4, 0x1c7, 0x1cf, 0x1d2, 0x1df, 0x1e7, 0x1eb, 0x1f2, 0x1fa, 0x20a, 0x216, 0x219, 0x223, 0x22f, 0x23b, 0x247, 0x24f, 0x254, 0x261, 0x272, 0x27d, 0x282, 0x28b, 0x293, 0x299, 0x29e, 0x2a1, 0x2a5, 0x2ab, 0x2af, 0x2b3, 0x2b7, 0x2bc, 0x2c4, 0x2cb, 0x2d6, 0x2e0, 0x2e4, 0x2e7, 0x2ed, 0x2f1, 0x2f3, 0x2f6, 0x2f8, 0x2fb, 0x305, 0x308, 0x317, 0x31b, 0x31f, 0x321, 0x32a, 0x32e, 0x333, 0x338, 0x33e, 0x34e, 0x354, 0x358, 0x367, 0x36c, 0x374, 0x37e, 0x389, 0x391, 0x3a2, 0x3ab, 0x3bb, 0x3c8, 0x3d4, 0x3d9, 0x3e6, 0x3ea, 0x3ef, 0x3f1, 0x3f3, 0x3f7, 0x3f9, 0x3fd, 0x406, 0x40c, 0x410, 0x420, 0x42a, 0x42f, 0x432, 0x438, 0x43f, 0x444, 0x448, 0x44e, 0x453, 0x45c, 0x461, 0x467, 0x46e, 0x475, 0x47c, 0x480, 0x483, 0x488, 0x494, 0x49a, 0x49f, 0x4a6, 0x4ae, 0x4b3, 0x4b7, 0x4c7, 0x4ce, 0x4d2, 0x4d6, 0x4dd, 0x4df, 0x4e2, 0x4e5, 0x4e9, 0x4f2, 0x4f6, 0x4fe, 0x501, 0x509, 0x514, 0x523, 0x52f, 0x535, 0x542, 0x54e, 0x556, 0x55f, 0x56a, 0x571, 0x580, 0x58d, 0x591, 0x59e, 0x5a7, 0x5ab, 0x5ba, 0x5c2, 0x5cd, 0x5d6, 0x5dc, 0x5e4, 0x5ed, 0x5f9, 0x5fc, 0x608, 0x60b, 0x614, 0x617, 0x61c, 0x625, 0x62a, 0x637, 0x642, 0x64b, 0x656, 0x659, 0x65c, 0x666, 0x66f, 0x67b, 0x688, 0x695, 0x6a3, 0x6aa, 0x6b5, 0x6bc, 0x6c0, 0x6c4, 0x6c7, 0x6cc, 0x6cf, 0x6d2, 0x6d6, 0x6d9, 0x6de, 0x6e5, 0x6e8, 0x6f0, 0x6f4, 0x6ff, 0x702, 0x705, 0x708, 0x70e, 0x714, 0x71d, 0x720, 0x723, 0x726, 0x72e, 0x733, 0x73c, 0x73f, 0x744, 0x74e, 0x752, 0x756, 0x759, 0x75c, 0x760, 0x76f, 0x77b, 0x77f, 0x784, 0x789, 0x78e, 0x792, 0x797, 0x7a0, 0x7a5, 0x7a9, 0x7af, 0x7b5, 0x7ba, 0x7c0, 0x7c6, 0x7d0, 0x7d6, 0x7df, 0x7e2, 0x7e5, 0x7e9, 0x7ed, 0x7f1, 0x7f7, 0x7fd, 0x802, 0x805, 0x815, 0x81c, 0x820, 0x827, 0x82b, 0x831, 0x838, 0x83f, 0x845, 0x84e, 0x852, 0x860, 0x863, 0x866, 0x86a, 0x86e, 0x871, 0x875, 0x878, 0x87d, 0x87f, 0x881}\n\n// idnaSparseValues: 2180 entries, 8720 bytes\nvar idnaSparseValues = [2180]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe105, lo: 0x80, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0x97},\n\t{value: 0xe105, lo: 0x98, hi: 0x9e},\n\t{value: 0x001f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbf},\n\t// Block 0x1, offset 0x8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0xe01d, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0335, lo: 0x83, hi: 0x83},\n\t{value: 0x034d, lo: 0x84, hi: 0x84},\n\t{value: 0x0365, lo: 0x85, hi: 0x85},\n\t{value: 0xe00d, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0xe00d, lo: 0x88, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x89},\n\t{value: 0xe00d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe00d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0x8d},\n\t{value: 0xe00d, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0xbf},\n\t// Block 0x2, offset 0x19\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x00a9, lo: 0xb0, hi: 0xb0},\n\t{value: 0x037d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x00b1, lo: 0xb2, hi: 0xb2},\n\t{value: 0x00b9, lo: 0xb3, hi: 0xb3},\n\t{value: 0x034d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0395, lo: 0xb5, hi: 0xb5},\n\t{value: 0xe1bd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x00c1, lo: 0xb7, hi: 0xb7},\n\t{value: 0x00c9, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbf},\n\t// Block 0x3, offset 0x25\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x3308, lo: 0x80, hi: 0xbf},\n\t// Block 0x4, offset 0x27\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x03f5, lo: 0x80, hi: 0x8f},\n\t{value: 0xe105, lo: 0x90, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5, offset 0x2c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x0545, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x0008, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x6, offset 0x33\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0131, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0018, lo: 0x89, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7, offset 0x3e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0818, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x82},\n\t{value: 0x0818, lo: 0x83, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xae},\n\t{value: 0x0808, lo: 0xaf, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x8, offset 0x4a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0c08, lo: 0x88, hi: 0x99},\n\t{value: 0x0a08, lo: 0x9a, hi: 0xbf},\n\t// Block 0x9, offset 0x4e\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0c08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0a08, lo: 0x8e, hi: 0x98},\n\t{value: 0x0c08, lo: 0x99, hi: 0x9b},\n\t{value: 0x0a08, lo: 0x9c, hi: 0xaa},\n\t{value: 0x0c08, lo: 0xab, hi: 0xac},\n\t{value: 0x0a08, lo: 0xad, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0a08, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0c08, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xa, offset 0x5d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xb, offset 0x62\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0808, lo: 0x80, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbf},\n\t// Block 0xc, offset 0x6c\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x99},\n\t{value: 0x0808, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa3},\n\t{value: 0x0808, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa7},\n\t{value: 0x0808, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0818, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd, offset 0x78\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0a08, lo: 0x80, hi: 0x88},\n\t{value: 0x0808, lo: 0x89, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0xa1},\n\t{value: 0x0840, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xbf},\n\t// Block 0xe, offset 0x7e\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0xf, offset 0x87\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x85},\n\t{value: 0x3008, lo: 0x86, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8c},\n\t{value: 0x3b08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x10, offset 0x97\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x11, offset 0xa6\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xba},\n\t{value: 0x3b08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x12, offset 0xb1\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x13, offset 0xbe\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x89},\n\t{value: 0x3b08, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x3008, lo: 0x98, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x14, offset 0xcf\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x01f1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb9},\n\t{value: 0x3b08, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x15, offset 0xd9\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0xbf},\n\t// Block 0x16, offset 0xe0\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0201, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0209, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0008, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x17, offset 0xed\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe03d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x18, offset 0xfe\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0x19, offset 0x105\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1a, offset 0x110\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3008, lo: 0xa2, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbf},\n\t// Block 0x1b, offset 0x11f\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x8c},\n\t{value: 0x3308, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x3008, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x1c, offset 0x12d\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x86},\n\t{value: 0x055d, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8c},\n\t{value: 0x055d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe105, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x1d, offset 0x137\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0018, lo: 0x80, hi: 0xbf},\n\t// Block 0x1e, offset 0x139\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa0},\n\t{value: 0x2018, lo: 0xa1, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x1f, offset 0x13e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa7},\n\t{value: 0x2018, lo: 0xa8, hi: 0xbf},\n\t// Block 0x20, offset 0x141\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2018, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0xbf},\n\t// Block 0x21, offset 0x144\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0008, lo: 0x80, hi: 0xbf},\n\t// Block 0x22, offset 0x146\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x23, offset 0x152\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x24, offset 0x15d\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x25, offset 0x165\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x26, offset 0x16b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x27, offset 0x171\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x28, offset 0x176\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x29, offset 0x17b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x2a, offset 0x17e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xbf},\n\t// Block 0x2b, offset 0x182\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2c, offset 0x188\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x2d, offset 0x18d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x3b08, lo: 0x94, hi: 0x94},\n\t{value: 0x3808, lo: 0x95, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3808, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x2e, offset 0x198\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x2f, offset 0x1a2\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xb3},\n\t{value: 0x3340, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x30, offset 0x1a8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x3008, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x91},\n\t{value: 0x3b08, lo: 0x92, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0x96},\n\t{value: 0x0008, lo: 0x97, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x31, offset 0x1b9\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x86},\n\t{value: 0x0218, lo: 0x87, hi: 0x87},\n\t{value: 0x0018, lo: 0x88, hi: 0x8a},\n\t{value: 0x33c0, lo: 0x8b, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x33c0, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0208, lo: 0xa0, hi: 0xbf},\n\t// Block 0x32, offset 0x1c4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0208, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x33, offset 0x1c7\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0208, lo: 0x87, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0208, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x34, offset 0x1cf\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x35, offset 0x1d2\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x36, offset 0x1df\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x37, offset 0x1e7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x38, offset 0x1eb\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0028, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xbf},\n\t// Block 0x39, offset 0x1f2\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x3308, lo: 0x97, hi: 0x98},\n\t{value: 0x3008, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x3a, offset 0x1fa\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x94},\n\t{value: 0x3008, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xac},\n\t{value: 0x3008, lo: 0xad, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3b, offset 0x20a\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbd},\n\t{value: 0x3318, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3c, offset 0x216\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x3308, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0xbf},\n\t// Block 0x3d, offset 0x219\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3008, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x3e, offset 0x223\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x3808, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3f, offset 0x22f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3808, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xbf},\n\t// Block 0x40, offset 0x23b\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3008, lo: 0xaa, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3808, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x41, offset 0x247\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x42, offset 0x24f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x43, offset 0x254\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x02a9, lo: 0x80, hi: 0x80},\n\t{value: 0x02b1, lo: 0x81, hi: 0x81},\n\t{value: 0x02b9, lo: 0x82, hi: 0x82},\n\t{value: 0x02c1, lo: 0x83, hi: 0x83},\n\t{value: 0x02c9, lo: 0x84, hi: 0x85},\n\t{value: 0x02d1, lo: 0x86, hi: 0x86},\n\t{value: 0x02d9, lo: 0x87, hi: 0x87},\n\t{value: 0x057d, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x059d, lo: 0x90, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x059d, lo: 0xbd, hi: 0xbf},\n\t// Block 0x44, offset 0x261\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x92},\n\t{value: 0x0018, lo: 0x93, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0008, lo: 0xa9, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x45, offset 0x272\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x87},\n\t{value: 0xe045, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0xe045, lo: 0x98, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0xe045, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbf},\n\t// Block 0x46, offset 0x27d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x8f},\n\t{value: 0x3318, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x47, offset 0x282\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x0851, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x48, offset 0x28b\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0859, lo: 0xac, hi: 0xac},\n\t{value: 0x0861, lo: 0xad, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xae},\n\t{value: 0x0869, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0871, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x49, offset 0x293\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x9f},\n\t{value: 0x0080, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xad},\n\t{value: 0x0080, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x4a, offset 0x299\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa8},\n\t{value: 0x09dd, lo: 0xa9, hi: 0xa9},\n\t{value: 0x09fd, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xbf},\n\t// Block 0x4b, offset 0x29e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0x4c, offset 0x2a1\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0929, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x4d, offset 0x2a5\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0e7e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0932, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0e9e, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x4e, offset 0x2ab\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x9b},\n\t{value: 0x0939, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0xbf},\n\t// Block 0x4f, offset 0x2af\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x50, offset 0x2b3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0xbf},\n\t// Block 0x51, offset 0x2b7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x03f5, lo: 0x90, hi: 0x9f},\n\t{value: 0x0ebd, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x52, offset 0x2bc\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x53, offset 0x2c4\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xae},\n\t{value: 0xe075, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x54, offset 0x2cb\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x55, offset 0x2d6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xbf},\n\t// Block 0x56, offset 0x2e0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x57, offset 0x2e4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x58, offset 0x2e7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9e},\n\t{value: 0x0ef5, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x59, offset 0x2ed\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb2},\n\t{value: 0x0f15, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x5a, offset 0x2f1\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x0f35, lo: 0x80, hi: 0xbf},\n\t// Block 0x5b, offset 0x2f3\n\t{value: 0x0020, lo: 0x02},\n\t{value: 0x1735, lo: 0x80, hi: 0x8f},\n\t{value: 0x1915, lo: 0x90, hi: 0xbf},\n\t// Block 0x5c, offset 0x2f6\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x1f15, lo: 0x80, hi: 0xbf},\n\t// Block 0x5d, offset 0x2f8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x5e, offset 0x2fb\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9a},\n\t{value: 0x096a, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0972, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0979, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x5f, offset 0x305\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x0981, lo: 0xbf, hi: 0xbf},\n\t// Block 0x60, offset 0x308\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0040, lo: 0x80, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb0},\n\t{value: 0x2a35, lo: 0xb1, hi: 0xb1},\n\t{value: 0x2a55, lo: 0xb2, hi: 0xb2},\n\t{value: 0x2a75, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2a95, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2a75, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2ab5, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2ad5, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2af5, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2b15, lo: 0xba, hi: 0xbb},\n\t{value: 0x2b35, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2b15, lo: 0xbe, hi: 0xbf},\n\t// Block 0x61, offset 0x317\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x62, offset 0x31b\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x098a, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0a82, lo: 0xa0, hi: 0xbf},\n\t// Block 0x63, offset 0x31f\n\t{value: 0x0008, lo: 0x01},\n\t{value: 0x0d19, lo: 0x80, hi: 0xbf},\n\t// Block 0x64, offset 0x321\n\t{value: 0x0008, lo: 0x08},\n\t{value: 0x0f19, lo: 0x80, hi: 0xb0},\n\t{value: 0x4045, lo: 0xb1, hi: 0xb1},\n\t{value: 0x10a1, lo: 0xb2, hi: 0xb3},\n\t{value: 0x4065, lo: 0xb4, hi: 0xb4},\n\t{value: 0x10b1, lo: 0xb5, hi: 0xb7},\n\t{value: 0x4085, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4085, lo: 0xb9, hi: 0xb9},\n\t{value: 0x10c9, lo: 0xba, hi: 0xbf},\n\t// Block 0x65, offset 0x32a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x66, offset 0x32e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x67, offset 0x333\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x68, offset 0x338\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0018, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x69, offset 0x33e\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x3308, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0008, lo: 0x8c, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xab},\n\t{value: 0x3b08, lo: 0xac, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x6a, offset 0x34e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0208, lo: 0x80, hi: 0xb1},\n\t{value: 0x0108, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6b, offset 0x354\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xbf},\n\t// Block 0x6c, offset 0x358\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x6d, offset 0x367\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x6e, offset 0x36c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x91},\n\t{value: 0x3008, lo: 0x92, hi: 0x92},\n\t{value: 0x3808, lo: 0x93, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x6f, offset 0x374\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb9},\n\t{value: 0x3008, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x70, offset 0x37e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x71, offset 0x389\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x72, offset 0x391\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8c},\n\t{value: 0x3008, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x73, offset 0x3a2\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x74, offset 0x3ab\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x9a},\n\t{value: 0x0008, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3b08, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x75, offset 0x3bb\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x90},\n\t{value: 0x0008, lo: 0x91, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x76, offset 0x3c8\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x449d, lo: 0x9c, hi: 0x9c},\n\t{value: 0x44b5, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0941, lo: 0x9e, hi: 0x9e},\n\t{value: 0xe06d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa8},\n\t{value: 0x13f9, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x44cd, lo: 0xb0, hi: 0xbf},\n\t// Block 0x77, offset 0x3d4\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x44ed, lo: 0x80, hi: 0x8f},\n\t{value: 0x450d, lo: 0x90, hi: 0x9f},\n\t{value: 0x452d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x450d, lo: 0xb0, hi: 0xbf},\n\t// Block 0x78, offset 0x3d9\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3b08, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x79, offset 0x3e6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7a, offset 0x3ea\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x7b, offset 0x3ef\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0040, lo: 0x80, hi: 0xbf},\n\t// Block 0x7c, offset 0x3f1\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x454d, lo: 0x80, hi: 0xbf},\n\t// Block 0x7d, offset 0x3f3\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x4d4d, lo: 0x80, hi: 0x94},\n\t{value: 0x4b0d, lo: 0x95, hi: 0x95},\n\t{value: 0x4fed, lo: 0x96, hi: 0xbf},\n\t// Block 0x7e, offset 0x3f7\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x552d, lo: 0x80, hi: 0xbf},\n\t// Block 0x7f, offset 0x3f9\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x5d2d, lo: 0x80, hi: 0x84},\n\t{value: 0x568d, lo: 0x85, hi: 0x85},\n\t{value: 0x5dcd, lo: 0x86, hi: 0xbf},\n\t// Block 0x80, offset 0x3fd\n\t{value: 0x0020, lo: 0x08},\n\t{value: 0x6b8d, lo: 0x80, hi: 0x8f},\n\t{value: 0x6d4d, lo: 0x90, hi: 0x90},\n\t{value: 0x6d8d, lo: 0x91, hi: 0xab},\n\t{value: 0x1401, lo: 0xac, hi: 0xac},\n\t{value: 0x70ed, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x710d, lo: 0xb0, hi: 0xbf},\n\t// Block 0x81, offset 0x406\n\t{value: 0x0020, lo: 0x05},\n\t{value: 0x730d, lo: 0x80, hi: 0xad},\n\t{value: 0x656d, lo: 0xae, hi: 0xae},\n\t{value: 0x78cd, lo: 0xaf, hi: 0xb5},\n\t{value: 0x6f8d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x79ad, lo: 0xb7, hi: 0xbf},\n\t// Block 0x82, offset 0x40c\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x1751, lo: 0x80, hi: 0x82},\n\t{value: 0x1741, lo: 0x83, hi: 0x83},\n\t{value: 0x1769, lo: 0x84, hi: 0xbf},\n\t// Block 0x83, offset 0x410\n\t{value: 0x0008, lo: 0x0f},\n\t{value: 0x1d81, lo: 0x80, hi: 0x83},\n\t{value: 0x1d99, lo: 0x84, hi: 0x85},\n\t{value: 0x1da1, lo: 0x86, hi: 0x87},\n\t{value: 0x1da9, lo: 0x88, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x1de9, lo: 0x92, hi: 0x97},\n\t{value: 0x1e11, lo: 0x98, hi: 0x9c},\n\t{value: 0x1e31, lo: 0x9d, hi: 0xb3},\n\t{value: 0x1d71, lo: 0xb4, hi: 0xb4},\n\t{value: 0x1d81, lo: 0xb5, hi: 0xb5},\n\t{value: 0x1ee9, lo: 0xb6, hi: 0xbb},\n\t{value: 0x1f09, lo: 0xbc, hi: 0xbc},\n\t{value: 0x1ef9, lo: 0xbd, hi: 0xbd},\n\t{value: 0x1f19, lo: 0xbe, hi: 0xbf},\n\t// Block 0x84, offset 0x420\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0008, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x85, offset 0x42a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x86, offset 0x42f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x87, offset 0x432\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x88, offset 0x438\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x89, offset 0x43f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x8a, offset 0x444\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8b, offset 0x448\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x8c, offset 0x44e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xbf},\n\t// Block 0x8d, offset 0x453\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x8e, offset 0x45c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8f, offset 0x461\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x90, offset 0x467\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x97},\n\t{value: 0x8b0d, lo: 0x98, hi: 0x9f},\n\t{value: 0x8b25, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xbf},\n\t// Block 0x91, offset 0x46e\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x8b25, lo: 0xb0, hi: 0xb7},\n\t{value: 0x8b0d, lo: 0xb8, hi: 0xbf},\n\t// Block 0x92, offset 0x475\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x93, offset 0x47c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x94, offset 0x480\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x95, offset 0x483\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xbf},\n\t// Block 0x96, offset 0x488\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0808, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0808, lo: 0x8a, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0808, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0808, lo: 0xbf, hi: 0xbf},\n\t// Block 0x97, offset 0x494\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0818, lo: 0x97, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0818, lo: 0xb7, hi: 0xbf},\n\t// Block 0x98, offset 0x49a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa6},\n\t{value: 0x0818, lo: 0xa7, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x99, offset 0x49f\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x0818, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9a, offset 0x4a6\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0818, lo: 0x96, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0818, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9b, offset 0x4ae\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbb},\n\t{value: 0x0818, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0808, lo: 0xbe, hi: 0xbf},\n\t// Block 0x9c, offset 0x4b3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0818, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x0818, lo: 0x92, hi: 0xbf},\n\t// Block 0x9d, offset 0x4b7\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x94},\n\t{value: 0x0808, lo: 0x95, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x98},\n\t{value: 0x0808, lo: 0x99, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9e, offset 0x4c7\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0818, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0818, lo: 0x90, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0818, lo: 0xbd, hi: 0xbf},\n\t// Block 0x9f, offset 0x4ce\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xa0, offset 0x4d2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xbf},\n\t// Block 0xa1, offset 0x4d6\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0818, lo: 0x98, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb7},\n\t{value: 0x0818, lo: 0xb8, hi: 0xbf},\n\t// Block 0xa2, offset 0x4dd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0808, lo: 0x80, hi: 0xbf},\n\t// Block 0xa3, offset 0x4df\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0808, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xa4, offset 0x4e2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x03dd, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xa5, offset 0x4e5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xbf},\n\t// Block 0xa6, offset 0x4e9\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0908, lo: 0x80, hi: 0x80},\n\t{value: 0x0a08, lo: 0x81, hi: 0xa1},\n\t{value: 0x0c08, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0a08, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3308, lo: 0xa4, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xa7, offset 0x4f2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0818, lo: 0xa0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa8, offset 0x4f6\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xac},\n\t{value: 0x0818, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xa9, offset 0x4fe\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbf},\n\t// Block 0xaa, offset 0x501\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0xa6},\n\t{value: 0x0808, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0a08, lo: 0xb0, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0a08, lo: 0xb4, hi: 0xbf},\n\t// Block 0xab, offset 0x509\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0a08, lo: 0x80, hi: 0x84},\n\t{value: 0x0808, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x90},\n\t{value: 0x0a18, lo: 0x91, hi: 0x93},\n\t{value: 0x0c18, lo: 0x94, hi: 0x94},\n\t{value: 0x0818, lo: 0x95, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xaf},\n\t{value: 0x0a08, lo: 0xb0, hi: 0xb3},\n\t{value: 0x0c08, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0a08, lo: 0xb6, hi: 0xbf},\n\t// Block 0xac, offset 0x514\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0a08, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xaf},\n\t{value: 0x0a08, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0c08, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0a08, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xba},\n\t{value: 0x0a08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0c08, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0a08, lo: 0xbe, hi: 0xbf},\n\t// Block 0xad, offset 0x523\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x0a08, lo: 0x81, hi: 0x81},\n\t{value: 0x0c08, lo: 0x82, hi: 0x83},\n\t{value: 0x0a08, lo: 0x84, hi: 0x84},\n\t{value: 0x0818, lo: 0x85, hi: 0x88},\n\t{value: 0x0c18, lo: 0x89, hi: 0x89},\n\t{value: 0x0a18, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0918, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xae, offset 0x52f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xaf, offset 0x535\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x3308, lo: 0x80, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x91},\n\t{value: 0x0018, lo: 0x92, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3b08, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb0, offset 0x542\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0xb1, offset 0x54e\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb2, offset 0x556\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb2},\n\t{value: 0x3b08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xbf},\n\t// Block 0xb3, offset 0x55f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb4, offset 0x56a\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb5, offset 0x571\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8d},\n\t{value: 0x3008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xb6, offset 0x580\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3808, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb7, offset 0x58d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0xbf},\n\t// Block 0xb8, offset 0x591\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xb9, offset 0x59e\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x3308, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa9},\n\t{value: 0x3b08, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xba, offset 0x5a7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xbb, offset 0x5ab\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xbf},\n\t// Block 0xbc, offset 0x5ba\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbd, offset 0x5c2\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x85},\n\t{value: 0x0018, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xbe, offset 0x5cd\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbf, offset 0x5d6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9b},\n\t{value: 0x3308, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xc0, offset 0x5dc\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc1, offset 0x5e4\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xc2, offset 0x5ed\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb5},\n\t{value: 0x3808, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xc3, offset 0x5f9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xc4, offset 0x5fc\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0xc5, offset 0x608\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xbf},\n\t// Block 0xc6, offset 0x60b\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xc7, offset 0x614\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xbf},\n\t// Block 0xc8, offset 0x617\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc9, offset 0x61c\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xca, offset 0x625\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xbf},\n\t// Block 0xcb, offset 0x62a\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x99},\n\t{value: 0x3308, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3008, lo: 0x9c, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x0018, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xbf},\n\t// Block 0xcc, offset 0x637\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xcd, offset 0x642\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x3b08, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0xbf},\n\t// Block 0xce, offset 0x64b\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x98},\n\t{value: 0x3b08, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xcf, offset 0x656\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xd0, offset 0x659\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xd1, offset 0x65c\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd2, offset 0x666\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xbf},\n\t// Block 0xd3, offset 0x66f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xa9},\n\t{value: 0x3308, lo: 0xaa, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xd4, offset 0x67b\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd5, offset 0x688\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xbf},\n\t// Block 0xd6, offset 0x695\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x3008, lo: 0x93, hi: 0x94},\n\t{value: 0x3308, lo: 0x95, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x96},\n\t{value: 0x3b08, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xbf},\n\t// Block 0xd7, offset 0x6a3\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xd8, offset 0x6aa\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0xd9, offset 0x6b5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3808, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xda, offset 0x6bc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0xdb, offset 0x6c0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xdc, offset 0x6c4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xdd, offset 0x6c7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xde, offset 0x6cc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xdf, offset 0x6cf\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbf},\n\t// Block 0xe0, offset 0x6d2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xe1, offset 0x6d6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0340, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe2, offset 0x6d9\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0xe3, offset 0x6de\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe4, offset 0x6e5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xe5, offset 0x6e8\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xe6, offset 0x6f0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0xe7, offset 0x6f4\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0xe8, offset 0x6ff\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xe9, offset 0x702\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0xe105, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0xea, offset 0x705\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0xeb, offset 0x708\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0xbf},\n\t// Block 0xec, offset 0x70e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xed, offset 0x714\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x0018, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3308, lo: 0xa4, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xee, offset 0x71d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0xef, offset 0x720\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0xf0, offset 0x723\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xf1, offset 0x726\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xf2, offset 0x72e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xf3, offset 0x733\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0x94},\n\t{value: 0x0008, lo: 0x95, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xa3},\n\t{value: 0x0008, lo: 0xa4, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xf4, offset 0x73c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xf5, offset 0x73f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0xf6, offset 0x744\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x03c0, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xf7, offset 0x74e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbf},\n\t// Block 0xf8, offset 0x752\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0xf9, offset 0x756\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xfa, offset 0x759\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xfb, offset 0x75c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xbf},\n\t// Block 0xfc, offset 0x760\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0x2379, lo: 0x9e, hi: 0x9e},\n\t{value: 0x2381, lo: 0x9f, hi: 0x9f},\n\t{value: 0x2389, lo: 0xa0, hi: 0xa0},\n\t{value: 0x2391, lo: 0xa1, hi: 0xa1},\n\t{value: 0x2399, lo: 0xa2, hi: 0xa2},\n\t{value: 0x23a1, lo: 0xa3, hi: 0xa3},\n\t{value: 0x23a9, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3018, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3318, lo: 0xa7, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xac},\n\t{value: 0x3018, lo: 0xad, hi: 0xb2},\n\t{value: 0x0340, lo: 0xb3, hi: 0xba},\n\t{value: 0x3318, lo: 0xbb, hi: 0xbf},\n\t// Block 0xfd, offset 0x76f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3318, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x84},\n\t{value: 0x3318, lo: 0x85, hi: 0x8b},\n\t{value: 0x0018, lo: 0x8c, hi: 0xa9},\n\t{value: 0x3318, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xba},\n\t{value: 0x23b1, lo: 0xbb, hi: 0xbb},\n\t{value: 0x23b9, lo: 0xbc, hi: 0xbc},\n\t{value: 0x23c1, lo: 0xbd, hi: 0xbd},\n\t{value: 0x23c9, lo: 0xbe, hi: 0xbe},\n\t{value: 0x23d1, lo: 0xbf, hi: 0xbf},\n\t// Block 0xfe, offset 0x77b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x23d9, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0xff, offset 0x77f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3318, lo: 0x82, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0xbf},\n\t// Block 0x100, offset 0x784\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x101, offset 0x789\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x102, offset 0x78e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0x103, offset 0x792\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x104, offset 0x797\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3308, lo: 0xa1, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x105, offset 0x7a0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0x106, offset 0x7a5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0x107, offset 0x7a9\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x108, offset 0x7af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0x109, offset 0x7b5\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x3308, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xbf},\n\t// Block 0x10a, offset 0x7ba\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x10b, offset 0x7c0\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x10c, offset 0x7c6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x10d, offset 0x7d0\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x86},\n\t{value: 0x0818, lo: 0x87, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0x10e, offset 0x7d6\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0a08, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x8a},\n\t{value: 0x0b08, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x10f, offset 0x7df\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xb0},\n\t{value: 0x0818, lo: 0xb1, hi: 0xbf},\n\t// Block 0x110, offset 0x7e2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0818, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x111, offset 0x7e5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0818, lo: 0x81, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x112, offset 0x7e9\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0x113, offset 0x7ed\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x114, offset 0x7f1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x115, offset 0x7f7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x116, offset 0x7fd\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0x2709, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0x117, offset 0x802\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xbf},\n\t// Block 0x118, offset 0x805\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x2889, lo: 0x80, hi: 0x80},\n\t{value: 0x2891, lo: 0x81, hi: 0x81},\n\t{value: 0x2899, lo: 0x82, hi: 0x82},\n\t{value: 0x28a1, lo: 0x83, hi: 0x83},\n\t{value: 0x28a9, lo: 0x84, hi: 0x84},\n\t{value: 0x28b1, lo: 0x85, hi: 0x85},\n\t{value: 0x28b9, lo: 0x86, hi: 0x86},\n\t{value: 0x28c1, lo: 0x87, hi: 0x87},\n\t{value: 0x28c9, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x28d1, lo: 0x90, hi: 0x90},\n\t{value: 0x28d9, lo: 0x91, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xbf},\n\t// Block 0x119, offset 0x815\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x11a, offset 0x81c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x11b, offset 0x820\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x11c, offset 0x827\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x11d, offset 0x82b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x11e, offset 0x831\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0x11f, offset 0x838\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x120, offset 0x83f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x121, offset 0x845\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x122, offset 0x84e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0xbf},\n\t// Block 0x123, offset 0x852\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0018, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0xaf},\n\t{value: 0x06e1, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0049, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0029, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0031, lo: 0xb3, hi: 0xb3},\n\t{value: 0x06e9, lo: 0xb4, hi: 0xb4},\n\t{value: 0x06f1, lo: 0xb5, hi: 0xb5},\n\t{value: 0x06f9, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0701, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0709, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0711, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x124, offset 0x860\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x125, offset 0x863\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x126, offset 0x866\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x127, offset 0x86a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x128, offset 0x86e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x129, offset 0x871\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbf},\n\t// Block 0x12a, offset 0x875\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x12b, offset 0x878\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0340, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x9f},\n\t{value: 0x0340, lo: 0xa0, hi: 0xbf},\n\t// Block 0x12c, offset 0x87d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0340, lo: 0x80, hi: 0xbf},\n\t// Block 0x12d, offset 0x87f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x33c0, lo: 0x80, hi: 0xbf},\n\t// Block 0x12e, offset 0x881\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x33c0, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n}\n\n// Total table size 46723 bytes (45KiB); checksum: 4CF3143A\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/tables9.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build !go1.10\n\npackage idna\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"9.0.0\"\n\nvar mappings string = \"\" + // Size: 8175 bytes\n\t\"\\x00\\x01 \\x03 ̈\\x01a\\x03 ̄\\x012\\x013\\x03 ́\\x03 ̧\\x011\\x01o\\x051⁄4\\x051⁄2\" +\n\t\"\\x053⁄4\\x03i̇\\x03l·\\x03ʼn\\x01s\\x03dž\\x03ⱥ\\x03ⱦ\\x01h\\x01j\\x01r\\x01w\\x01y\" +\n\t\"\\x03 ̆\\x03 ̇\\x03 ̊\\x03 ̨\\x03 ̃\\x03 ̋\\x01l\\x01x\\x04̈́\\x03 ι\\x01;\\x05 ̈́\" +\n\t\"\\x04եւ\\x04اٴ\\x04وٴ\\x04ۇٴ\\x04يٴ\\x06क़\\x06ख़\\x06ग़\\x06ज़\\x06ड़\\x06ढ़\\x06फ़\" +\n\t\"\\x06य़\\x06ড়\\x06ঢ়\\x06য়\\x06ਲ਼\\x06ਸ਼\\x06ਖ਼\\x06ਗ਼\\x06ਜ਼\\x06ਫ਼\\x06ଡ଼\\x06ଢ଼\" +\n\t\"\\x06ํา\\x06ໍາ\\x06ຫນ\\x06ຫມ\\x06གྷ\\x06ཌྷ\\x06དྷ\\x06བྷ\\x06ཛྷ\\x06ཀྵ\\x06ཱི\\x06ཱུ\" +\n\t\"\\x06ྲྀ\\x09ྲཱྀ\\x06ླྀ\\x09ླཱྀ\\x06ཱྀ\\x06ྒྷ\\x06ྜྷ\\x06ྡྷ\\x06ྦྷ\\x06ྫྷ\\x06ྐྵ\\x02\" +\n\t\"в\\x02д\\x02о\\x02с\\x02т\\x02ъ\\x02ѣ\\x02æ\\x01b\\x01d\\x01e\\x02ǝ\\x01g\\x01i\\x01k\" +\n\t\"\\x01m\\x01n\\x02ȣ\\x01p\\x01t\\x01u\\x02ɐ\\x02ɑ\\x02ə\\x02ɛ\\x02ɜ\\x02ŋ\\x02ɔ\\x02ɯ\" +\n\t\"\\x01v\\x02β\\x02γ\\x02δ\\x02φ\\x02χ\\x02ρ\\x02н\\x02ɒ\\x01c\\x02ɕ\\x02ð\\x01f\\x02ɟ\" +\n\t\"\\x02ɡ\\x02ɥ\\x02ɨ\\x02ɩ\\x02ɪ\\x02ʝ\\x02ɭ\\x02ʟ\\x02ɱ\\x02ɰ\\x02ɲ\\x02ɳ\\x02ɴ\\x02ɵ\" +\n\t\"\\x02ɸ\\x02ʂ\\x02ʃ\\x02ƫ\\x02ʉ\\x02ʊ\\x02ʋ\\x02ʌ\\x01z\\x02ʐ\\x02ʑ\\x02ʒ\\x02θ\\x02ss\" +\n\t\"\\x02ά\\x02έ\\x02ή\\x02ί\\x02ό\\x02ύ\\x02ώ\\x05ἀι\\x05ἁι\\x05ἂι\\x05ἃι\\x05ἄι\\x05ἅι\" +\n\t\"\\x05ἆι\\x05ἇι\\x05ἠι\\x05ἡι\\x05ἢι\\x05ἣι\\x05ἤι\\x05ἥι\\x05ἦι\\x05ἧι\\x05ὠι\\x05ὡι\" +\n\t\"\\x05ὢι\\x05ὣι\\x05ὤι\\x05ὥι\\x05ὦι\\x05ὧι\\x05ὰι\\x04αι\\x04άι\\x05ᾶι\\x02ι\\x05 ̈͂\" +\n\t\"\\x05ὴι\\x04ηι\\x04ήι\\x05ῆι\\x05 ̓̀\\x05 ̓́\\x05 ̓͂\\x02ΐ\\x05 ̔̀\\x05 ̔́\\x05 ̔͂\" +\n\t\"\\x02ΰ\\x05 ̈̀\\x01`\\x05ὼι\\x04ωι\\x04ώι\\x05ῶι\\x06′′\\x09′′′\\x06‵‵\\x09‵‵‵\\x02!\" +\n\t\"!\\x02??\\x02?!\\x02!?\\x0c′′′′\\x010\\x014\\x015\\x016\\x017\\x018\\x019\\x01+\\x01=\" +\n\t\"\\x01(\\x01)\\x02rs\\x02ħ\\x02no\\x01q\\x02sm\\x02tm\\x02ω\\x02å\\x02א\\x02ב\\x02ג\" +\n\t\"\\x02ד\\x02π\\x051⁄7\\x051⁄9\\x061⁄10\\x051⁄3\\x052⁄3\\x051⁄5\\x052⁄5\\x053⁄5\\x054\" +\n\t\"⁄5\\x051⁄6\\x055⁄6\\x051⁄8\\x053⁄8\\x055⁄8\\x057⁄8\\x041⁄\\x02ii\\x02iv\\x02vi\" +\n\t\"\\x04viii\\x02ix\\x02xi\\x050⁄3\\x06∫∫\\x09∫∫∫\\x06∮∮\\x09∮∮∮\\x0210\\x0211\\x0212\" +\n\t\"\\x0213\\x0214\\x0215\\x0216\\x0217\\x0218\\x0219\\x0220\\x04(10)\\x04(11)\\x04(12)\" +\n\t\"\\x04(13)\\x04(14)\\x04(15)\\x04(16)\\x04(17)\\x04(18)\\x04(19)\\x04(20)\\x0c∫∫∫∫\" +\n\t\"\\x02==\\x05⫝̸\\x02ɫ\\x02ɽ\\x02ȿ\\x02ɀ\\x01.\\x04 ゙\\x04 ゚\\x06より\\x06コト\\x05(ᄀ)\\x05\" +\n\t\"(ᄂ)\\x05(ᄃ)\\x05(ᄅ)\\x05(ᄆ)\\x05(ᄇ)\\x05(ᄉ)\\x05(ᄋ)\\x05(ᄌ)\\x05(ᄎ)\\x05(ᄏ)\\x05(ᄐ\" +\n\t\")\\x05(ᄑ)\\x05(ᄒ)\\x05(가)\\x05(나)\\x05(다)\\x05(라)\\x05(마)\\x05(바)\\x05(사)\\x05(아)\" +\n\t\"\\x05(자)\\x05(차)\\x05(카)\\x05(타)\\x05(파)\\x05(하)\\x05(주)\\x08(오전)\\x08(오후)\\x05(一)\" +\n\t\"\\x05(二)\\x05(三)\\x05(四)\\x05(五)\\x05(六)\\x05(七)\\x05(八)\\x05(九)\\x05(十)\\x05(月)\" +\n\t\"\\x05(火)\\x05(水)\\x05(木)\\x05(金)\\x05(土)\\x05(日)\\x05(株)\\x05(有)\\x05(社)\\x05(名)\" +\n\t\"\\x05(特)\\x05(財)\\x05(祝)\\x05(労)\\x05(代)\\x05(呼)\\x05(学)\\x05(監)\\x05(企)\\x05(資)\" +\n\t\"\\x05(協)\\x05(祭)\\x05(休)\\x05(自)\\x05(至)\\x0221\\x0222\\x0223\\x0224\\x0225\\x0226\" +\n\t\"\\x0227\\x0228\\x0229\\x0230\\x0231\\x0232\\x0233\\x0234\\x0235\\x06참고\\x06주의\\x0236\" +\n\t\"\\x0237\\x0238\\x0239\\x0240\\x0241\\x0242\\x0243\\x0244\\x0245\\x0246\\x0247\\x0248\" +\n\t\"\\x0249\\x0250\\x041月\\x042月\\x043月\\x044月\\x045月\\x046月\\x047月\\x048月\\x049月\\x0510\" +\n\t\"月\\x0511月\\x0512月\\x02hg\\x02ev\\x0cアパート\\x0cアルファ\\x0cアンペア\\x09アール\\x0cイニング\\x09\" +\n\t\"インチ\\x09ウォン\\x0fエスクード\\x0cエーカー\\x09オンス\\x09オーム\\x09カイリ\\x0cカラット\\x0cカロリー\\x09ガロ\" +\n\t\"ン\\x09ガンマ\\x06ギガ\\x09ギニー\\x0cキュリー\\x0cギルダー\\x06キロ\\x0fキログラム\\x12キロメートル\\x0fキロワッ\" +\n\t\"ト\\x09グラム\\x0fグラムトン\\x0fクルゼイロ\\x0cクローネ\\x09ケース\\x09コルナ\\x09コーポ\\x0cサイクル\\x0fサンチ\" +\n\t\"ーム\\x0cシリング\\x09センチ\\x09セント\\x09ダース\\x06デシ\\x06ドル\\x06トン\\x06ナノ\\x09ノット\\x09ハイツ\" +\n\t\"\\x0fパーセント\\x09パーツ\\x0cバーレル\\x0fピアストル\\x09ピクル\\x06ピコ\\x06ビル\\x0fファラッド\\x0cフィート\" +\n\t\"\\x0fブッシェル\\x09フラン\\x0fヘクタール\\x06ペソ\\x09ペニヒ\\x09ヘルツ\\x09ペンス\\x09ページ\\x09ベータ\\x0cポイ\" +\n\t\"ント\\x09ボルト\\x06ホン\\x09ポンド\\x09ホール\\x09ホーン\\x0cマイクロ\\x09マイル\\x09マッハ\\x09マルク\\x0fマ\" +\n\t\"ンション\\x0cミクロン\\x06ミリ\\x0fミリバール\\x06メガ\\x0cメガトン\\x0cメートル\\x09ヤード\\x09ヤール\\x09ユアン\" +\n\t\"\\x0cリットル\\x06リラ\\x09ルピー\\x0cルーブル\\x06レム\\x0fレントゲン\\x09ワット\\x040点\\x041点\\x042点\" +\n\t\"\\x043点\\x044点\\x045点\\x046点\\x047点\\x048点\\x049点\\x0510点\\x0511点\\x0512点\\x0513点\" +\n\t\"\\x0514点\\x0515点\\x0516点\\x0517点\\x0518点\\x0519点\\x0520点\\x0521点\\x0522点\\x0523点\" +\n\t\"\\x0524点\\x02da\\x02au\\x02ov\\x02pc\\x02dm\\x02iu\\x06平成\\x06昭和\\x06大正\\x06明治\\x0c株\" +\n\t\"式会社\\x02pa\\x02na\\x02ma\\x02ka\\x02kb\\x02mb\\x02gb\\x04kcal\\x02pf\\x02nf\\x02m\" +\n\t\"g\\x02kg\\x02hz\\x02ml\\x02dl\\x02kl\\x02fm\\x02nm\\x02mm\\x02cm\\x02km\\x02m2\\x02m\" +\n\t\"3\\x05m∕s\\x06m∕s2\\x07rad∕s\\x08rad∕s2\\x02ps\\x02ns\\x02ms\\x02pv\\x02nv\\x02mv\" +\n\t\"\\x02kv\\x02pw\\x02nw\\x02mw\\x02kw\\x02bq\\x02cc\\x02cd\\x06c∕kg\\x02db\\x02gy\\x02\" +\n\t\"ha\\x02hp\\x02in\\x02kk\\x02kt\\x02lm\\x02ln\\x02lx\\x02ph\\x02pr\\x02sr\\x02sv\\x02\" +\n\t\"wb\\x05v∕m\\x05a∕m\\x041日\\x042日\\x043日\\x044日\\x045日\\x046日\\x047日\\x048日\\x049日\" +\n\t\"\\x0510日\\x0511日\\x0512日\\x0513日\\x0514日\\x0515日\\x0516日\\x0517日\\x0518日\\x0519日\" +\n\t\"\\x0520日\\x0521日\\x0522日\\x0523日\\x0524日\\x0525日\\x0526日\\x0527日\\x0528日\\x0529日\" +\n\t\"\\x0530日\\x0531日\\x02ь\\x02ɦ\\x02ɬ\\x02ʞ\\x02ʇ\\x02œ\\x04𤋮\\x04𢡊\\x04𢡄\\x04𣏕\\x04𥉉\" +\n\t\"\\x04𥳐\\x04𧻓\\x02ff\\x02fi\\x02fl\\x02st\\x04մն\\x04մե\\x04մի\\x04վն\\x04մխ\\x04יִ\" +\n\t\"\\x04ײַ\\x02ע\\x02ה\\x02כ\\x02ל\\x02ם\\x02ר\\x02ת\\x04שׁ\\x04שׂ\\x06שּׁ\\x06שּׂ\\x04א\" +\n\t\"ַ\\x04אָ\\x04אּ\\x04בּ\\x04גּ\\x04דּ\\x04הּ\\x04וּ\\x04זּ\\x04טּ\\x04יּ\\x04ךּ\\x04\" +\n\t\"כּ\\x04לּ\\x04מּ\\x04נּ\\x04סּ\\x04ףּ\\x04פּ\\x04צּ\\x04קּ\\x04רּ\\x04שּ\\x04תּ\" +\n\t\"\\x04וֹ\\x04בֿ\\x04כֿ\\x04פֿ\\x04אל\\x02ٱ\\x02ٻ\\x02پ\\x02ڀ\\x02ٺ\\x02ٿ\\x02ٹ\\x02ڤ\" +\n\t\"\\x02ڦ\\x02ڄ\\x02ڃ\\x02چ\\x02ڇ\\x02ڍ\\x02ڌ\\x02ڎ\\x02ڈ\\x02ژ\\x02ڑ\\x02ک\\x02گ\\x02ڳ\" +\n\t\"\\x02ڱ\\x02ں\\x02ڻ\\x02ۀ\\x02ہ\\x02ھ\\x02ے\\x02ۓ\\x02ڭ\\x02ۇ\\x02ۆ\\x02ۈ\\x02ۋ\\x02ۅ\" +\n\t\"\\x02ۉ\\x02ې\\x02ى\\x04ئا\\x04ئە\\x04ئو\\x04ئۇ\\x04ئۆ\\x04ئۈ\\x04ئې\\x04ئى\\x02ی\\x04\" +\n\t\"ئج\\x04ئح\\x04ئم\\x04ئي\\x04بج\\x04بح\\x04بخ\\x04بم\\x04بى\\x04بي\\x04تج\\x04تح\" +\n\t\"\\x04تخ\\x04تم\\x04تى\\x04تي\\x04ثج\\x04ثم\\x04ثى\\x04ثي\\x04جح\\x04جم\\x04حج\\x04حم\" +\n\t\"\\x04خج\\x04خح\\x04خم\\x04سج\\x04سح\\x04سخ\\x04سم\\x04صح\\x04صم\\x04ضج\\x04ضح\\x04ضخ\" +\n\t\"\\x04ضم\\x04طح\\x04طم\\x04ظم\\x04عج\\x04عم\\x04غج\\x04غم\\x04فج\\x04فح\\x04فخ\\x04فم\" +\n\t\"\\x04فى\\x04في\\x04قح\\x04قم\\x04قى\\x04قي\\x04كا\\x04كج\\x04كح\\x04كخ\\x04كل\\x04كم\" +\n\t\"\\x04كى\\x04كي\\x04لج\\x04لح\\x04لخ\\x04لم\\x04لى\\x04لي\\x04مج\\x04مح\\x04مخ\\x04مم\" +\n\t\"\\x04مى\\x04مي\\x04نج\\x04نح\\x04نخ\\x04نم\\x04نى\\x04ني\\x04هج\\x04هم\\x04هى\\x04هي\" +\n\t\"\\x04يج\\x04يح\\x04يخ\\x04يم\\x04يى\\x04يي\\x04ذٰ\\x04رٰ\\x04ىٰ\\x05 ٌّ\\x05 ٍّ\\x05\" +\n\t\" َّ\\x05 ُّ\\x05 ِّ\\x05 ّٰ\\x04ئر\\x04ئز\\x04ئن\\x04بر\\x04بز\\x04بن\\x04تر\\x04تز\" +\n\t\"\\x04تن\\x04ثر\\x04ثز\\x04ثن\\x04ما\\x04نر\\x04نز\\x04نن\\x04ير\\x04يز\\x04ين\\x04ئخ\" +\n\t\"\\x04ئه\\x04به\\x04ته\\x04صخ\\x04له\\x04نه\\x04هٰ\\x04يه\\x04ثه\\x04سه\\x04شم\\x04شه\" +\n\t\"\\x06ـَّ\\x06ـُّ\\x06ـِّ\\x04طى\\x04طي\\x04عى\\x04عي\\x04غى\\x04غي\\x04سى\\x04سي\" +\n\t\"\\x04شى\\x04شي\\x04حى\\x04حي\\x04جى\\x04جي\\x04خى\\x04خي\\x04صى\\x04صي\\x04ضى\\x04ضي\" +\n\t\"\\x04شج\\x04شح\\x04شخ\\x04شر\\x04سر\\x04صر\\x04ضر\\x04اً\\x06تجم\\x06تحج\\x06تحم\" +\n\t\"\\x06تخم\\x06تمج\\x06تمح\\x06تمخ\\x06جمح\\x06حمي\\x06حمى\\x06سحج\\x06سجح\\x06سجى\" +\n\t\"\\x06سمح\\x06سمج\\x06سمم\\x06صحح\\x06صمم\\x06شحم\\x06شجي\\x06شمخ\\x06شمم\\x06ضحى\" +\n\t\"\\x06ضخم\\x06طمح\\x06طمم\\x06طمي\\x06عجم\\x06عمم\\x06عمى\\x06غمم\\x06غمي\\x06غمى\" +\n\t\"\\x06فخم\\x06قمح\\x06قمم\\x06لحم\\x06لحي\\x06لحى\\x06لجج\\x06لخم\\x06لمح\\x06محج\" +\n\t\"\\x06محم\\x06محي\\x06مجح\\x06مجم\\x06مخج\\x06مخم\\x06مجخ\\x06همج\\x06همم\\x06نحم\" +\n\t\"\\x06نحى\\x06نجم\\x06نجى\\x06نمي\\x06نمى\\x06يمم\\x06بخي\\x06تجي\\x06تجى\\x06تخي\" +\n\t\"\\x06تخى\\x06تمي\\x06تمى\\x06جمي\\x06جحى\\x06جمى\\x06سخى\\x06صحي\\x06شحي\\x06ضحي\" +\n\t\"\\x06لجي\\x06لمي\\x06يحي\\x06يجي\\x06يمي\\x06ممي\\x06قمي\\x06نحي\\x06عمي\\x06كمي\" +\n\t\"\\x06نجح\\x06مخي\\x06لجم\\x06كمم\\x06جحي\\x06حجي\\x06مجي\\x06فمي\\x06بحي\\x06سخي\" +\n\t\"\\x06نجي\\x06صلے\\x06قلے\\x08الله\\x08اكبر\\x08محمد\\x08صلعم\\x08رسول\\x08عليه\" +\n\t\"\\x08وسلم\\x06صلى!صلى الله عليه وسلم\\x0fجل جلاله\\x08ریال\\x01,\\x01:\\x01!\" +\n\t\"\\x01?\\x01_\\x01{\\x01}\\x01[\\x01]\\x01#\\x01&\\x01*\\x01-\\x01<\\x01>\\x01\\\\\\x01$\" +\n\t\"\\x01%\\x01@\\x04ـً\\x04ـَ\\x04ـُ\\x04ـِ\\x04ـّ\\x04ـْ\\x02ء\\x02آ\\x02أ\\x02ؤ\\x02إ\" +\n\t\"\\x02ئ\\x02ا\\x02ب\\x02ة\\x02ت\\x02ث\\x02ج\\x02ح\\x02خ\\x02د\\x02ذ\\x02ر\\x02ز\\x02س\" +\n\t\"\\x02ش\\x02ص\\x02ض\\x02ط\\x02ظ\\x02ع\\x02غ\\x02ف\\x02ق\\x02ك\\x02ل\\x02م\\x02ن\\x02ه\" +\n\t\"\\x02و\\x02ي\\x04لآ\\x04لأ\\x04لإ\\x04لا\\x01\\x22\\x01'\\x01/\\x01^\\x01|\\x01~\\x02¢\" +\n\t\"\\x02£\\x02¬\\x02¦\\x02¥\\x08𝅗𝅥\\x08𝅘𝅥\\x0c𝅘𝅥𝅮\\x0c𝅘𝅥𝅯\\x0c𝅘𝅥𝅰\\x0c𝅘𝅥𝅱\\x0c𝅘𝅥𝅲\\x08𝆹\" +\n\t\"𝅥\\x08𝆺𝅥\\x0c𝆹𝅥𝅮\\x0c𝆺𝅥𝅮\\x0c𝆹𝅥𝅯\\x0c𝆺𝅥𝅯\\x02ı\\x02ȷ\\x02α\\x02ε\\x02ζ\\x02η\\x02\" +\n\t\"κ\\x02λ\\x02μ\\x02ν\\x02ξ\\x02ο\\x02σ\\x02τ\\x02υ\\x02ψ\\x03∇\\x03∂\\x02ϝ\\x02ٮ\\x02ڡ\" +\n\t\"\\x02ٯ\\x020,\\x021,\\x022,\\x023,\\x024,\\x025,\\x026,\\x027,\\x028,\\x029,\\x03(a)\" +\n\t\"\\x03(b)\\x03(c)\\x03(d)\\x03(e)\\x03(f)\\x03(g)\\x03(h)\\x03(i)\\x03(j)\\x03(k)\" +\n\t\"\\x03(l)\\x03(m)\\x03(n)\\x03(o)\\x03(p)\\x03(q)\\x03(r)\\x03(s)\\x03(t)\\x03(u)\" +\n\t\"\\x03(v)\\x03(w)\\x03(x)\\x03(y)\\x03(z)\\x07〔s〕\\x02wz\\x02hv\\x02sd\\x03ppv\\x02w\" +\n\t\"c\\x02mc\\x02md\\x02dj\\x06ほか\\x06ココ\\x03サ\\x03手\\x03字\\x03双\\x03デ\\x03二\\x03多\\x03解\" +\n\t\"\\x03天\\x03交\\x03映\\x03無\\x03料\\x03前\\x03後\\x03再\\x03新\\x03初\\x03終\\x03生\\x03販\\x03声\" +\n\t\"\\x03吹\\x03演\\x03投\\x03捕\\x03一\\x03三\\x03遊\\x03左\\x03中\\x03右\\x03指\\x03走\\x03打\\x03禁\" +\n\t\"\\x03空\\x03合\\x03満\\x03有\\x03月\\x03申\\x03割\\x03営\\x03配\\x09〔本〕\\x09〔三〕\\x09〔二〕\\x09〔安\" +\n\t\"〕\\x09〔点〕\\x09〔打〕\\x09〔盗〕\\x09〔勝〕\\x09〔敗〕\\x03得\\x03可\\x03丽\\x03丸\\x03乁\\x03你\\x03\" +\n\t\"侮\\x03侻\\x03倂\\x03偺\\x03備\\x03僧\\x03像\\x03㒞\\x03免\\x03兔\\x03兤\\x03具\\x03㒹\\x03內\\x03\" +\n\t\"冗\\x03冤\\x03仌\\x03冬\\x03况\\x03凵\\x03刃\\x03㓟\\x03刻\\x03剆\\x03剷\\x03㔕\\x03勇\\x03勉\\x03\" +\n\t\"勤\\x03勺\\x03包\\x03匆\\x03北\\x03卉\\x03卑\\x03博\\x03即\\x03卽\\x03卿\\x03灰\\x03及\\x03叟\\x03\" +\n\t\"叫\\x03叱\\x03吆\\x03咞\\x03吸\\x03呈\\x03周\\x03咢\\x03哶\\x03唐\\x03啓\\x03啣\\x03善\\x03喙\\x03\" +\n\t\"喫\\x03喳\\x03嗂\\x03圖\\x03嘆\\x03圗\\x03噑\\x03噴\\x03切\\x03壮\\x03城\\x03埴\\x03堍\\x03型\\x03\" +\n\t\"堲\\x03報\\x03墬\\x03売\\x03壷\\x03夆\\x03夢\\x03奢\\x03姬\\x03娛\\x03娧\\x03姘\\x03婦\\x03㛮\\x03\" +\n\t\"嬈\\x03嬾\\x03寃\\x03寘\\x03寧\\x03寳\\x03寿\\x03将\\x03尢\\x03㞁\\x03屠\\x03屮\\x03峀\\x03岍\\x03\" +\n\t\"嵃\\x03嵮\\x03嵫\\x03嵼\\x03巡\\x03巢\\x03㠯\\x03巽\\x03帨\\x03帽\\x03幩\\x03㡢\\x03㡼\\x03庰\\x03\" +\n\t\"庳\\x03庶\\x03廊\\x03廾\\x03舁\\x03弢\\x03㣇\\x03形\\x03彫\\x03㣣\\x03徚\\x03忍\\x03志\\x03忹\\x03\" +\n\t\"悁\\x03㤺\\x03㤜\\x03悔\\x03惇\\x03慈\\x03慌\\x03慎\\x03慺\\x03憎\\x03憲\\x03憤\\x03憯\\x03懞\\x03\" +\n\t\"懲\\x03懶\\x03成\\x03戛\\x03扝\\x03抱\\x03拔\\x03捐\\x03挽\\x03拼\\x03捨\\x03掃\\x03揤\\x03搢\\x03\" +\n\t\"揅\\x03掩\\x03㨮\\x03摩\\x03摾\\x03撝\\x03摷\\x03㩬\\x03敏\\x03敬\\x03旣\\x03書\\x03晉\\x03㬙\\x03\" +\n\t\"暑\\x03㬈\\x03㫤\\x03冒\\x03冕\\x03最\\x03暜\\x03肭\\x03䏙\\x03朗\\x03望\\x03朡\\x03杞\\x03杓\\x03\" +\n\t\"㭉\\x03柺\\x03枅\\x03桒\\x03梅\\x03梎\\x03栟\\x03椔\\x03㮝\\x03楂\\x03榣\\x03槪\\x03檨\\x03櫛\\x03\" +\n\t\"㰘\\x03次\\x03歔\\x03㱎\\x03歲\\x03殟\\x03殺\\x03殻\\x03汎\\x03沿\\x03泍\\x03汧\\x03洖\\x03派\\x03\" +\n\t\"海\\x03流\\x03浩\\x03浸\\x03涅\\x03洴\\x03港\\x03湮\\x03㴳\\x03滋\\x03滇\\x03淹\\x03潮\\x03濆\\x03\" +\n\t\"瀹\\x03瀞\\x03瀛\\x03㶖\\x03灊\\x03災\\x03灷\\x03炭\\x03煅\\x03熜\\x03爨\\x03爵\\x03牐\\x03犀\\x03\" +\n\t\"犕\\x03獺\\x03王\\x03㺬\\x03玥\\x03㺸\\x03瑇\\x03瑜\\x03瑱\\x03璅\\x03瓊\\x03㼛\\x03甤\\x03甾\\x03\" +\n\t\"異\\x03瘐\\x03㿼\\x03䀈\\x03直\\x03眞\\x03真\\x03睊\\x03䀹\\x03瞋\\x03䁆\\x03䂖\\x03硎\\x03碌\\x03\" +\n\t\"磌\\x03䃣\\x03祖\\x03福\\x03秫\\x03䄯\\x03穀\\x03穊\\x03穏\\x03䈂\\x03篆\\x03築\\x03䈧\\x03糒\\x03\" +\n\t\"䊠\\x03糨\\x03糣\\x03紀\\x03絣\\x03䌁\\x03緇\\x03縂\\x03繅\\x03䌴\\x03䍙\\x03罺\\x03羕\\x03翺\\x03\" +\n\t\"者\\x03聠\\x03聰\\x03䏕\\x03育\\x03脃\\x03䐋\\x03脾\\x03媵\\x03舄\\x03辞\\x03䑫\\x03芑\\x03芋\\x03\" +\n\t\"芝\\x03劳\\x03花\\x03芳\\x03芽\\x03苦\\x03若\\x03茝\\x03荣\\x03莭\\x03茣\\x03莽\\x03菧\\x03著\\x03\" +\n\t\"荓\\x03菊\\x03菌\\x03菜\\x03䔫\\x03蓱\\x03蓳\\x03蔖\\x03蕤\\x03䕝\\x03䕡\\x03䕫\\x03虐\\x03虜\\x03\" +\n\t\"虧\\x03虩\\x03蚩\\x03蚈\\x03蜎\\x03蛢\\x03蝹\\x03蜨\\x03蝫\\x03螆\\x03蟡\\x03蠁\\x03䗹\\x03衠\\x03\" +\n\t\"衣\\x03裗\\x03裞\\x03䘵\\x03裺\\x03㒻\\x03䚾\\x03䛇\\x03誠\\x03諭\\x03變\\x03豕\\x03貫\\x03賁\\x03\" +\n\t\"贛\\x03起\\x03跋\\x03趼\\x03跰\\x03軔\\x03輸\\x03邔\\x03郱\\x03鄑\\x03鄛\\x03鈸\\x03鋗\\x03鋘\\x03\" +\n\t\"鉼\\x03鏹\\x03鐕\\x03開\\x03䦕\\x03閷\\x03䧦\\x03雃\\x03嶲\\x03霣\\x03䩮\\x03䩶\\x03韠\\x03䪲\\x03\" +\n\t\"頋\\x03頩\\x03飢\\x03䬳\\x03餩\\x03馧\\x03駂\\x03駾\\x03䯎\\x03鬒\\x03鱀\\x03鳽\\x03䳎\\x03䳭\\x03\" +\n\t\"鵧\\x03䳸\\x03麻\\x03䵖\\x03黹\\x03黾\\x03鼅\\x03鼏\\x03鼖\\x03鼻\"\n\nvar xorData string = \"\" + // Size: 4855 bytes\n\t\"\\x02\\x0c\\x09\\x02\\xb0\\xec\\x02\\xad\\xd8\\x02\\xad\\xd9\\x02\\x06\\x07\\x02\\x0f\\x12\" +\n\t\"\\x02\\x0f\\x1f\\x02\\x0f\\x1d\\x02\\x01\\x13\\x02\\x0f\\x16\\x02\\x0f\\x0b\\x02\\x0f3\" +\n\t\"\\x02\\x0f7\\x02\\x0f?\\x02\\x0f/\\x02\\x0f*\\x02\\x0c&\\x02\\x0c*\\x02\\x0c;\\x02\\x0c9\" +\n\t\"\\x02\\x0c%\\x02\\xab\\xed\\x02\\xab\\xe2\\x02\\xab\\xe3\\x02\\xa9\\xe0\\x02\\xa9\\xe1\" +\n\t\"\\x02\\xa9\\xe6\\x02\\xa3\\xcb\\x02\\xa3\\xc8\\x02\\xa3\\xc9\\x02\\x01#\\x02\\x01\\x08\" +\n\t\"\\x02\\x0e>\\x02\\x0e'\\x02\\x0f\\x03\\x02\\x03\\x0d\\x02\\x03\\x09\\x02\\x03\\x17\\x02\" +\n\t\"\\x03\\x0e\\x02\\x02\\x03\\x02\\x011\\x02\\x01\\x00\\x02\\x01\\x10\\x02\\x03<\\x02\\x07\" +\n\t\"\\x0d\\x02\\x02\\x0c\\x02\\x0c0\\x02\\x01\\x03\\x02\\x01\\x01\\x02\\x01 \\x02\\x01\\x22\" +\n\t\"\\x02\\x01)\\x02\\x01\\x0a\\x02\\x01\\x0c\\x02\\x02\\x06\\x02\\x02\\x02\\x02\\x03\\x10\" +\n\t\"\\x03\\x037 \\x03\\x0b+\\x03\\x02\\x01\\x04\\x02\\x01\\x02\\x02\\x019\\x02\\x03\\x1c\\x02\" +\n\t\"\\x02$\\x03\\x80p$\\x02\\x03:\\x02\\x03\\x0a\\x03\\xc1r.\\x03\\xc1r,\\x03\\xc1r\\x02\" +\n\t\"\\x02\\x02:\\x02\\x02>\\x02\\x02,\\x02\\x02\\x10\\x02\\x02\\x00\\x03\\xc1s<\\x03\\xc1s*\" +\n\t\"\\x03\\xc2L$\\x03\\xc2L;\\x02\\x09)\\x02\\x0a\\x19\\x03\\x83\\xab\\xe3\\x03\\x83\\xab\" +\n\t\"\\xf2\\x03 4\\xe0\\x03\\x81\\xab\\xea\\x03\\x81\\xab\\xf3\\x03 4\\xef\\x03\\x96\\xe1\\xcd\" +\n\t\"\\x03\\x84\\xe5\\xc3\\x02\\x0d\\x11\\x03\\x8b\\xec\\xcb\\x03\\x94\\xec\\xcf\\x03\\x9a\\xec\" +\n\t\"\\xc2\\x03\\x8b\\xec\\xdb\\x03\\x94\\xec\\xdf\\x03\\x9a\\xec\\xd2\\x03\\x01\\x0c!\\x03\" +\n\t\"\\x01\\x0c#\\x03ʠ\\x9d\\x03ʣ\\x9c\\x03ʢ\\x9f\\x03ʥ\\x9e\\x03ʤ\\x91\\x03ʧ\\x90\\x03ʦ\\x93\" +\n\t\"\\x03ʩ\\x92\\x03ʨ\\x95\\x03\\xca\\xf3\\xb5\\x03\\xca\\xf0\\xb4\\x03\\xca\\xf1\\xb7\\x03\" +\n\t\"\\xca\\xf6\\xb6\\x03\\xca\\xf7\\x89\\x03\\xca\\xf4\\x88\\x03\\xca\\xf5\\x8b\\x03\\xca\\xfa\" +\n\t\"\\x8a\\x03\\xca\\xfb\\x8d\\x03\\xca\\xf8\\x8c\\x03\\xca\\xf9\\x8f\\x03\\xca\\xfe\\x8e\\x03\" +\n\t\"\\xca\\xff\\x81\\x03\\xca\\xfc\\x80\\x03\\xca\\xfd\\x83\\x03\\xca\\xe2\\x82\\x03\\xca\\xe3\" +\n\t\"\\x85\\x03\\xca\\xe0\\x84\\x03\\xca\\xe1\\x87\\x03\\xca\\xe6\\x86\\x03\\xca\\xe7\\x99\\x03\" +\n\t\"\\xca\\xe4\\x98\\x03\\xca\\xe5\\x9b\\x03\\xca\\xea\\x9a\\x03\\xca\\xeb\\x9d\\x03\\xca\\xe8\" +\n\t\"\\x9c\\x03ؓ\\x89\\x03ߔ\\x8b\\x02\\x010\\x03\\x03\\x04\\x1e\\x03\\x04\\x15\\x12\\x03\\x0b\" +\n\t\"\\x05,\\x03\\x06\\x04\\x00\\x03\\x06\\x04)\\x03\\x06\\x044\\x03\\x06\\x04<\\x03\\x06\\x05\" +\n\t\"\\x1d\\x03\\x06\\x06\\x00\\x03\\x06\\x06\\x0a\\x03\\x06\\x06'\\x03\\x06\\x062\\x03\\x0786\" +\n\t\"\\x03\\x079/\\x03\\x079 \\x03\\x07:\\x0e\\x03\\x07:\\x1b\\x03\\x07:%\\x03\\x07;/\\x03\" +\n\t\"\\x07;%\\x03\\x074\\x11\\x03\\x076\\x09\\x03\\x077*\\x03\\x070\\x01\\x03\\x070\\x0f\\x03\" +\n\t\"\\x070.\\x03\\x071\\x16\\x03\\x071\\x04\\x03\\x0710\\x03\\x072\\x18\\x03\\x072-\\x03\" +\n\t\"\\x073\\x14\\x03\\x073>\\x03\\x07'\\x09\\x03\\x07 \\x00\\x03\\x07\\x1f\\x0b\\x03\\x07\" +\n\t\"\\x18#\\x03\\x07\\x18(\\x03\\x07\\x186\\x03\\x07\\x18\\x03\\x03\\x07\\x19\\x16\\x03\\x07\" +\n\t\"\\x116\\x03\\x07\\x12'\\x03\\x07\\x13\\x10\\x03\\x07\\x0c&\\x03\\x07\\x0c\\x08\\x03\\x07\" +\n\t\"\\x0c\\x13\\x03\\x07\\x0d\\x02\\x03\\x07\\x0d\\x1c\\x03\\x07\\x0b5\\x03\\x07\\x0b\\x0a\" +\n\t\"\\x03\\x07\\x0b\\x01\\x03\\x07\\x0b\\x0f\\x03\\x07\\x05\\x00\\x03\\x07\\x05\\x09\\x03\\x07\" +\n\t\"\\x05\\x0b\\x03\\x07\\x07\\x01\\x03\\x07\\x07\\x08\\x03\\x07\\x00<\\x03\\x07\\x00+\\x03\" +\n\t\"\\x07\\x01)\\x03\\x07\\x01\\x1b\\x03\\x07\\x01\\x08\\x03\\x07\\x03?\\x03\\x0445\\x03\\x04\" +\n\t\"4\\x08\\x03\\x0454\\x03\\x04)/\\x03\\x04)5\\x03\\x04+\\x05\\x03\\x04+\\x14\\x03\\x04+ \" +\n\t\"\\x03\\x04+<\\x03\\x04*&\\x03\\x04*\\x22\\x03\\x04&8\\x03\\x04!\\x01\\x03\\x04!\\x22\" +\n\t\"\\x03\\x04\\x11+\\x03\\x04\\x10.\\x03\\x04\\x104\\x03\\x04\\x13=\\x03\\x04\\x12\\x04\\x03\" +\n\t\"\\x04\\x12\\x0a\\x03\\x04\\x0d\\x1d\\x03\\x04\\x0d\\x07\\x03\\x04\\x0d \\x03\\x05<>\\x03\" +\n\t\"\\x055<\\x03\\x055!\\x03\\x055#\\x03\\x055&\\x03\\x054\\x1d\\x03\\x054\\x02\\x03\\x054\" +\n\t\"\\x07\\x03\\x0571\\x03\\x053\\x1a\\x03\\x053\\x16\\x03\\x05.<\\x03\\x05.\\x07\\x03\\x05)\" +\n\t\":\\x03\\x05)<\\x03\\x05)\\x0c\\x03\\x05)\\x15\\x03\\x05+-\\x03\\x05+5\\x03\\x05$\\x1e\" +\n\t\"\\x03\\x05$\\x14\\x03\\x05'\\x04\\x03\\x05'\\x14\\x03\\x05&\\x02\\x03\\x05\\x226\\x03\" +\n\t\"\\x05\\x22\\x0c\\x03\\x05\\x22\\x1c\\x03\\x05\\x19\\x0a\\x03\\x05\\x1b\\x09\\x03\\x05\\x1b\" +\n\t\"\\x0c\\x03\\x05\\x14\\x07\\x03\\x05\\x16?\\x03\\x05\\x16\\x0c\\x03\\x05\\x0c\\x05\\x03\" +\n\t\"\\x05\\x0e\\x0f\\x03\\x05\\x01\\x0e\\x03\\x05\\x00(\\x03\\x05\\x030\\x03\\x05\\x03\\x06\" +\n\t\"\\x03\\x0a==\\x03\\x0a=1\\x03\\x0a=,\\x03\\x0a=\\x0c\\x03\\x0a??\\x03\\x0a<\\x08\\x03\" +\n\t\"\\x0a9!\\x03\\x0a9)\\x03\\x0a97\\x03\\x0a99\\x03\\x0a6\\x0a\\x03\\x0a6\\x1c\\x03\\x0a6\" +\n\t\"\\x17\\x03\\x0a7'\\x03\\x0a78\\x03\\x0a73\\x03\\x0a'\\x01\\x03\\x0a'&\\x03\\x0a\\x1f\" +\n\t\"\\x0e\\x03\\x0a\\x1f\\x03\\x03\\x0a\\x1f3\\x03\\x0a\\x1b/\\x03\\x0a\\x18\\x19\\x03\\x0a\" +\n\t\"\\x19\\x01\\x03\\x0a\\x16\\x14\\x03\\x0a\\x0e\\x22\\x03\\x0a\\x0f\\x10\\x03\\x0a\\x0f\\x02\" +\n\t\"\\x03\\x0a\\x0f \\x03\\x0a\\x0c\\x04\\x03\\x0a\\x0b>\\x03\\x0a\\x0b+\\x03\\x0a\\x08/\\x03\" +\n\t\"\\x0a\\x046\\x03\\x0a\\x05\\x14\\x03\\x0a\\x00\\x04\\x03\\x0a\\x00\\x10\\x03\\x0a\\x00\" +\n\t\"\\x14\\x03\\x0b<3\\x03\\x0b;*\\x03\\x0b9\\x22\\x03\\x0b9)\\x03\\x0b97\\x03\\x0b+\\x10\" +\n\t\"\\x03\\x0b((\\x03\\x0b&5\\x03\\x0b$\\x1c\\x03\\x0b$\\x12\\x03\\x0b%\\x04\\x03\\x0b#<\" +\n\t\"\\x03\\x0b#0\\x03\\x0b#\\x0d\\x03\\x0b#\\x19\\x03\\x0b!:\\x03\\x0b!\\x1f\\x03\\x0b!\\x00\" +\n\t\"\\x03\\x0b\\x1e5\\x03\\x0b\\x1c\\x1d\\x03\\x0b\\x1d-\\x03\\x0b\\x1d(\\x03\\x0b\\x18.\\x03\" +\n\t\"\\x0b\\x18 \\x03\\x0b\\x18\\x16\\x03\\x0b\\x14\\x13\\x03\\x0b\\x15$\\x03\\x0b\\x15\\x22\" +\n\t\"\\x03\\x0b\\x12\\x1b\\x03\\x0b\\x12\\x10\\x03\\x0b\\x132\\x03\\x0b\\x13=\\x03\\x0b\\x12\" +\n\t\"\\x18\\x03\\x0b\\x0c&\\x03\\x0b\\x061\\x03\\x0b\\x06:\\x03\\x0b\\x05#\\x03\\x0b\\x05<\" +\n\t\"\\x03\\x0b\\x04\\x0b\\x03\\x0b\\x04\\x04\\x03\\x0b\\x04\\x1b\\x03\\x0b\\x042\\x03\\x0b\" +\n\t\"\\x041\\x03\\x0b\\x03\\x03\\x03\\x0b\\x03\\x1d\\x03\\x0b\\x03/\\x03\\x0b\\x03+\\x03\\x0b\" +\n\t\"\\x02\\x1b\\x03\\x0b\\x02\\x00\\x03\\x0b\\x01\\x1e\\x03\\x0b\\x01\\x08\\x03\\x0b\\x015\" +\n\t\"\\x03\\x06\\x0d9\\x03\\x06\\x0d=\\x03\\x06\\x0d?\\x03\\x02\\x001\\x03\\x02\\x003\\x03\" +\n\t\"\\x02\\x02\\x19\\x03\\x02\\x006\\x03\\x02\\x02\\x1b\\x03\\x02\\x004\\x03\\x02\\x00<\\x03\" +\n\t\"\\x02\\x02\\x0a\\x03\\x02\\x02\\x0e\\x03\\x02\\x01\\x1a\\x03\\x02\\x01\\x07\\x03\\x02\\x01\" +\n\t\"\\x05\\x03\\x02\\x01\\x0b\\x03\\x02\\x01%\\x03\\x02\\x01\\x0c\\x03\\x02\\x01\\x04\\x03\" +\n\t\"\\x02\\x01\\x1c\\x03\\x02\\x00.\\x03\\x02\\x002\\x03\\x02\\x00>\\x03\\x02\\x00\\x12\\x03\" +\n\t\"\\x02\\x00\\x16\\x03\\x02\\x011\\x03\\x02\\x013\\x03\\x02\\x02 \\x03\\x02\\x02%\\x03\\x02\" +\n\t\"\\x02$\\x03\\x02\\x028\\x03\\x02\\x02;\\x03\\x02\\x024\\x03\\x02\\x012\\x03\\x02\\x022\" +\n\t\"\\x03\\x02\\x02/\\x03\\x02\\x01,\\x03\\x02\\x01\\x13\\x03\\x02\\x01\\x16\\x03\\x02\\x01\" +\n\t\"\\x11\\x03\\x02\\x01\\x1e\\x03\\x02\\x01\\x15\\x03\\x02\\x01\\x17\\x03\\x02\\x01\\x0f\\x03\" +\n\t\"\\x02\\x01\\x08\\x03\\x02\\x00?\\x03\\x02\\x03\\x07\\x03\\x02\\x03\\x0d\\x03\\x02\\x03\" +\n\t\"\\x13\\x03\\x02\\x03\\x1d\\x03\\x02\\x03\\x1f\\x03\\x02\\x00\\x03\\x03\\x02\\x00\\x0d\\x03\" +\n\t\"\\x02\\x00\\x01\\x03\\x02\\x00\\x1b\\x03\\x02\\x00\\x19\\x03\\x02\\x00\\x18\\x03\\x02\\x00\" +\n\t\"\\x13\\x03\\x02\\x00/\\x03\\x07>\\x12\\x03\\x07<\\x1f\\x03\\x07>\\x1d\\x03\\x06\\x1d\\x0e\" +\n\t\"\\x03\\x07>\\x1c\\x03\\x07>:\\x03\\x07>\\x13\\x03\\x04\\x12+\\x03\\x07?\\x03\\x03\\x07>\" +\n\t\"\\x02\\x03\\x06\\x224\\x03\\x06\\x1a.\\x03\\x07<%\\x03\\x06\\x1c\\x0b\\x03\\x0609\\x03\" +\n\t\"\\x05\\x1f\\x01\\x03\\x04'\\x08\\x03\\x93\\xfd\\xf5\\x03\\x02\\x0d \\x03\\x02\\x0d#\\x03\" +\n\t\"\\x02\\x0d!\\x03\\x02\\x0d&\\x03\\x02\\x0d\\x22\\x03\\x02\\x0d/\\x03\\x02\\x0d,\\x03\\x02\" +\n\t\"\\x0d$\\x03\\x02\\x0d'\\x03\\x02\\x0d%\\x03\\x02\\x0d;\\x03\\x02\\x0d=\\x03\\x02\\x0d?\" +\n\t\"\\x03\\x099.\\x03\\x08\\x0b7\\x03\\x08\\x02\\x14\\x03\\x08\\x14\\x0d\\x03\\x08.:\\x03\" +\n\t\"\\x089'\\x03\\x0f\\x0b\\x18\\x03\\x0f\\x1c1\\x03\\x0f\\x17&\\x03\\x0f9\\x1f\\x03\\x0f0\" +\n\t\"\\x0c\\x03\\x0e\\x0a9\\x03\\x0e\\x056\\x03\\x0e\\x1c#\\x03\\x0f\\x13\\x0e\\x03\\x072\\x00\" +\n\t\"\\x03\\x070\\x0d\\x03\\x072\\x0b\\x03\\x06\\x11\\x18\\x03\\x070\\x10\\x03\\x06\\x0f(\\x03\" +\n\t\"\\x072\\x05\\x03\\x06\\x0f,\\x03\\x073\\x15\\x03\\x06\\x07\\x08\\x03\\x05\\x16\\x02\\x03\" +\n\t\"\\x04\\x0b \\x03\\x05:8\\x03\\x05\\x16%\\x03\\x0a\\x0d\\x1f\\x03\\x06\\x16\\x10\\x03\\x05\" +\n\t\"\\x1d5\\x03\\x05*;\\x03\\x05\\x16\\x1b\\x03\\x04.-\\x03\\x06\\x1a\\x19\\x03\\x04\\x03,\" +\n\t\"\\x03\\x0b87\\x03\\x04/\\x0a\\x03\\x06\\x00,\\x03\\x04-\\x01\\x03\\x04\\x1e-\\x03\\x06/(\" +\n\t\"\\x03\\x0a\\x0b5\\x03\\x06\\x0e7\\x03\\x06\\x07.\\x03\\x0597\\x03\\x0a*%\\x03\\x0760\" +\n\t\"\\x03\\x06\\x0c;\\x03\\x05'\\x00\\x03\\x072.\\x03\\x072\\x08\\x03\\x06=\\x01\\x03\\x06\" +\n\t\"\\x05\\x1b\\x03\\x06\\x06\\x12\\x03\\x06$=\\x03\\x06'\\x0d\\x03\\x04\\x11\\x0f\\x03\\x076\" +\n\t\",\\x03\\x06\\x07;\\x03\\x06.,\\x03\\x86\\xf9\\xea\\x03\\x8f\\xff\\xeb\\x02\\x092\\x02\" +\n\t\"\\x095\\x02\\x094\\x02\\x09;\\x02\\x09>\\x02\\x098\\x02\\x09*\\x02\\x09/\\x02\\x09,\\x02\" +\n\t\"\\x09%\\x02\\x09&\\x02\\x09#\\x02\\x09 \\x02\\x08!\\x02\\x08%\\x02\\x08$\\x02\\x08+\\x02\" +\n\t\"\\x08.\\x02\\x08*\\x02\\x08&\\x02\\x088\\x02\\x08>\\x02\\x084\\x02\\x086\\x02\\x080\\x02\" +\n\t\"\\x08\\x10\\x02\\x08\\x17\\x02\\x08\\x12\\x02\\x08\\x1d\\x02\\x08\\x1f\\x02\\x08\\x13\\x02\" +\n\t\"\\x08\\x15\\x02\\x08\\x14\\x02\\x08\\x0c\\x03\\x8b\\xfd\\xd0\\x03\\x81\\xec\\xc6\\x03\\x87\" +\n\t\"\\xe0\\x8a\\x03-2\\xe3\\x03\\x80\\xef\\xe4\\x03-2\\xea\\x03\\x88\\xe6\\xeb\\x03\\x8e\\xe6\" +\n\t\"\\xe8\\x03\\x84\\xe6\\xe9\\x03\\x97\\xe6\\xee\\x03-2\\xf9\\x03-2\\xf6\\x03\\x8e\\xe3\\xad\" +\n\t\"\\x03\\x80\\xe3\\x92\\x03\\x88\\xe3\\x90\\x03\\x8e\\xe3\\x90\\x03\\x80\\xe3\\x97\\x03\\x88\" +\n\t\"\\xe3\\x95\\x03\\x88\\xfe\\xcb\\x03\\x8e\\xfe\\xca\\x03\\x84\\xfe\\xcd\\x03\\x91\\xef\\xc9\" +\n\t\"\\x03-2\\xc1\\x03-2\\xc0\\x03-2\\xcb\\x03\\x88@\\x09\\x03\\x8e@\\x08\\x03\\x8f\\xe0\\xf5\" +\n\t\"\\x03\\x8e\\xe6\\xf9\\x03\\x8e\\xe0\\xfa\\x03\\x93\\xff\\xf4\\x03\\x84\\xee\\xd3\\x03\\x0b\" +\n\t\"(\\x04\\x023 \\x021;\\x02\\x01*\\x03\\x0b#\\x10\\x03\\x0b 0\\x03\\x0b!\\x10\\x03\\x0b!0\" +\n\t\"\\x03\\x07\\x15\\x08\\x03\\x09?5\\x03\\x07\\x1f\\x08\\x03\\x07\\x17\\x0b\\x03\\x09\\x1f\" +\n\t\"\\x15\\x03\\x0b\\x1c7\\x03\\x0a+#\\x03\\x06\\x1a\\x1b\\x03\\x06\\x1a\\x14\\x03\\x0a\\x01\" +\n\t\"\\x18\\x03\\x06#\\x1b\\x03\\x0a2\\x0c\\x03\\x0a\\x01\\x04\\x03\\x09#;\\x03\\x08='\\x03\" +\n\t\"\\x08\\x1a\\x0a\\x03\\x07</\\x03\\x07:+\\x03\\x07\\x07*\\x03\\x06&\\x1c\\x03\\x09\\x0c\" +\n\t\"\\x16\\x03\\x09\\x10\\x0e\\x03\\x08'\\x0f\\x03\\x08+\\x09\\x03\\x074%\\x03\\x06!3\\x03\" +\n\t\"\\x06\\x03+\\x03\\x0b\\x1e\\x19\\x03\\x0a))\\x03\\x09\\x08\\x19\\x03\\x08,\\x05\\x03\\x07\" +\n\t\"<2\\x03\\x06\\x1c>\\x03\\x0a\\x111\\x03\\x09\\x1b\\x09\\x03\\x073.\\x03\\x07\\x01\\x00\" +\n\t\"\\x03\\x09/,\\x03\\x07#>\\x03\\x07\\x048\\x03\\x0a\\x1f\\x22\\x03\\x098>\\x03\\x09\\x11\" +\n\t\"\\x00\\x03\\x08/\\x17\\x03\\x06'\\x22\\x03\\x0b\\x1a+\\x03\\x0a\\x22\\x19\\x03\\x0a/1\" +\n\t\"\\x03\\x0974\\x03\\x09\\x0f\\x22\\x03\\x08,\\x22\\x03\\x08?\\x14\\x03\\x07$5\\x03\\x07<3\" +\n\t\"\\x03\\x07=*\\x03\\x07\\x13\\x18\\x03\\x068\\x0a\\x03\\x06\\x09\\x16\\x03\\x06\\x13\\x00\" +\n\t\"\\x03\\x08\\x067\\x03\\x08\\x01\\x03\\x03\\x08\\x12\\x1d\\x03\\x07+7\\x03\\x06(;\\x03\" +\n\t\"\\x06\\x1c?\\x03\\x07\\x0e\\x17\\x03\\x0a\\x06\\x1d\\x03\\x0a\\x19\\x07\\x03\\x08\\x14$\" +\n\t\"\\x03\\x07$;\\x03\\x08,$\\x03\\x08\\x06\\x0d\\x03\\x07\\x16\\x0a\\x03\\x06>>\\x03\\x0a\" +\n\t\"\\x06\\x12\\x03\\x0a\\x14)\\x03\\x09\\x0d\\x1f\\x03\\x09\\x12\\x17\\x03\\x09\\x19\\x01\" +\n\t\"\\x03\\x08\\x11 \\x03\\x08\\x1d'\\x03\\x06<\\x1a\\x03\\x0a.\\x00\\x03\\x07'\\x18\\x03\" +\n\t\"\\x0a\\x22\\x08\\x03\\x08\\x0d\\x0a\\x03\\x08\\x13)\\x03\\x07*)\\x03\\x06<,\\x03\\x07\" +\n\t\"\\x0b\\x1a\\x03\\x09.\\x14\\x03\\x09\\x0d\\x1e\\x03\\x07\\x0e#\\x03\\x0b\\x1d'\\x03\\x0a\" +\n\t\"\\x0a8\\x03\\x09%2\\x03\\x08+&\\x03\\x080\\x12\\x03\\x0a)4\\x03\\x08\\x06\\x1f\\x03\\x0b\" +\n\t\"\\x1b\\x1a\\x03\\x0a\\x1b\\x0f\\x03\\x0b\\x1d*\\x03\\x09\\x16$\\x03\\x090\\x11\\x03\\x08\" +\n\t\"\\x11\\x08\\x03\\x0a*(\\x03\\x0a\\x042\\x03\\x089,\\x03\\x074'\\x03\\x07\\x0f\\x05\\x03\" +\n\t\"\\x09\\x0b\\x0a\\x03\\x07\\x1b\\x01\\x03\\x09\\x17:\\x03\\x09.\\x0d\\x03\\x07.\\x11\\x03\" +\n\t\"\\x09+\\x15\\x03\\x080\\x13\\x03\\x0b\\x1f\\x19\\x03\\x0a \\x11\\x03\\x0a\\x220\\x03\\x09\" +\n\t\"\\x07;\\x03\\x08\\x16\\x1c\\x03\\x07,\\x13\\x03\\x07\\x0e/\\x03\\x06\\x221\\x03\\x0a.\" +\n\t\"\\x0a\\x03\\x0a7\\x02\\x03\\x0a\\x032\\x03\\x0a\\x1d.\\x03\\x091\\x06\\x03\\x09\\x19:\" +\n\t\"\\x03\\x08\\x02/\\x03\\x060+\\x03\\x06\\x0f-\\x03\\x06\\x1c\\x1f\\x03\\x06\\x1d\\x07\\x03\" +\n\t\"\\x0a,\\x11\\x03\\x09=\\x0d\\x03\\x09\\x0b;\\x03\\x07\\x1b/\\x03\\x0a\\x1f:\\x03\\x09 \" +\n\t\"\\x1f\\x03\\x09.\\x10\\x03\\x094\\x0b\\x03\\x09\\x1a1\\x03\\x08#\\x1a\\x03\\x084\\x1d\" +\n\t\"\\x03\\x08\\x01\\x1f\\x03\\x08\\x11\\x22\\x03\\x07'8\\x03\\x07\\x1a>\\x03\\x0757\\x03\" +\n\t\"\\x06&9\\x03\\x06+\\x11\\x03\\x0a.\\x0b\\x03\\x0a,>\\x03\\x0a4#\\x03\\x08%\\x17\\x03\" +\n\t\"\\x07\\x05\\x22\\x03\\x07\\x0c\\x0b\\x03\\x0a\\x1d+\\x03\\x0a\\x19\\x16\\x03\\x09+\\x1f\" +\n\t\"\\x03\\x09\\x08\\x0b\\x03\\x08\\x16\\x18\\x03\\x08+\\x12\\x03\\x0b\\x1d\\x0c\\x03\\x0a=\" +\n\t\"\\x10\\x03\\x0a\\x09\\x0d\\x03\\x0a\\x10\\x11\\x03\\x09&0\\x03\\x08(\\x1f\\x03\\x087\\x07\" +\n\t\"\\x03\\x08\\x185\\x03\\x07'6\\x03\\x06.\\x05\\x03\\x06=\\x04\\x03\\x06;;\\x03\\x06\\x06,\" +\n\t\"\\x03\\x0b\\x18>\\x03\\x08\\x00\\x18\\x03\\x06 \\x03\\x03\\x06<\\x00\\x03\\x09%\\x18\\x03\" +\n\t\"\\x0b\\x1c<\\x03\\x0a%!\\x03\\x0a\\x09\\x12\\x03\\x0a\\x16\\x02\\x03\\x090'\\x03\\x09\" +\n\t\"\\x0e=\\x03\\x08 \\x0e\\x03\\x08>\\x03\\x03\\x074>\\x03\\x06&?\\x03\\x06\\x19\\x09\\x03\" +\n\t\"\\x06?(\\x03\\x0a-\\x0e\\x03\\x09:3\\x03\\x098:\\x03\\x09\\x12\\x0b\\x03\\x09\\x1d\\x17\" +\n\t\"\\x03\\x087\\x05\\x03\\x082\\x14\\x03\\x08\\x06%\\x03\\x08\\x13\\x1f\\x03\\x06\\x06\\x0e\" +\n\t\"\\x03\\x0a\\x22<\\x03\\x09/<\\x03\\x06>+\\x03\\x0a'?\\x03\\x0a\\x13\\x0c\\x03\\x09\\x10<\" +\n\t\"\\x03\\x07\\x1b=\\x03\\x0a\\x19\\x13\\x03\\x09\\x22\\x1d\\x03\\x09\\x07\\x0d\\x03\\x08)\" +\n\t\"\\x1c\\x03\\x06=\\x1a\\x03\\x0a/4\\x03\\x0a7\\x11\\x03\\x0a\\x16:\\x03\\x09?3\\x03\\x09:\" +\n\t\"/\\x03\\x09\\x05\\x0a\\x03\\x09\\x14\\x06\\x03\\x087\\x22\\x03\\x080\\x07\\x03\\x08\\x1a\" +\n\t\"\\x1f\\x03\\x07\\x04(\\x03\\x07\\x04\\x09\\x03\\x06 %\\x03\\x06<\\x08\\x03\\x0a+\\x14\" +\n\t\"\\x03\\x09\\x1d\\x16\\x03\\x0a70\\x03\\x08 >\\x03\\x0857\\x03\\x070\\x0a\\x03\\x06=\\x12\" +\n\t\"\\x03\\x06\\x16%\\x03\\x06\\x1d,\\x03\\x099#\\x03\\x09\\x10>\\x03\\x07 \\x1e\\x03\\x08\" +\n\t\"\\x0c<\\x03\\x08\\x0b\\x18\\x03\\x08\\x15+\\x03\\x08,:\\x03\\x08%\\x22\\x03\\x07\\x0a$\" +\n\t\"\\x03\\x0b\\x1c=\\x03\\x07+\\x08\\x03\\x0a/\\x05\\x03\\x0a \\x07\\x03\\x0a\\x12'\\x03\" +\n\t\"\\x09#\\x11\\x03\\x08\\x1b\\x15\\x03\\x0a\\x06\\x01\\x03\\x09\\x1c\\x1b\\x03\\x0922\\x03\" +\n\t\"\\x07\\x14<\\x03\\x07\\x09\\x04\\x03\\x061\\x04\\x03\\x07\\x0e\\x01\\x03\\x0a\\x13\\x18\" +\n\t\"\\x03\\x0a-\\x0c\\x03\\x0a?\\x0d\\x03\\x0a\\x09\\x0a\\x03\\x091&\\x03\\x0a/\\x0b\\x03\" +\n\t\"\\x08$<\\x03\\x083\\x1d\\x03\\x08\\x0c$\\x03\\x08\\x0d\\x07\\x03\\x08\\x0d?\\x03\\x08\" +\n\t\"\\x0e\\x14\\x03\\x065\\x0a\\x03\\x08\\x1a#\\x03\\x08\\x16#\\x03\\x0702\\x03\\x07\\x03\" +\n\t\"\\x1a\\x03\\x06(\\x1d\\x03\\x06+\\x1b\\x03\\x06\\x0b\\x05\\x03\\x06\\x0b\\x17\\x03\\x06\" +\n\t\"\\x0c\\x04\\x03\\x06\\x1e\\x19\\x03\\x06+0\\x03\\x062\\x18\\x03\\x0b\\x16\\x1e\\x03\\x0a+\" +\n\t\"\\x16\\x03\\x0a-?\\x03\\x0a#:\\x03\\x0a#\\x10\\x03\\x0a%$\\x03\\x0a>+\\x03\\x0a01\\x03\" +\n\t\"\\x0a1\\x10\\x03\\x0a\\x099\\x03\\x0a\\x0a\\x12\\x03\\x0a\\x19\\x1f\\x03\\x0a\\x19\\x12\" +\n\t\"\\x03\\x09*)\\x03\\x09-\\x16\\x03\\x09.1\\x03\\x09.2\\x03\\x09<\\x0e\\x03\\x09> \\x03\" +\n\t\"\\x093\\x12\\x03\\x09\\x0b\\x01\\x03\\x09\\x1c2\\x03\\x09\\x11\\x1c\\x03\\x09\\x15%\\x03\" +\n\t\"\\x08,&\\x03\\x08!\\x22\\x03\\x089(\\x03\\x08\\x0b\\x1a\\x03\\x08\\x0d2\\x03\\x08\\x0c\" +\n\t\"\\x04\\x03\\x08\\x0c\\x06\\x03\\x08\\x0c\\x1f\\x03\\x08\\x0c\\x0c\\x03\\x08\\x0f\\x1f\\x03\" +\n\t\"\\x08\\x0f\\x1d\\x03\\x08\\x00\\x14\\x03\\x08\\x03\\x14\\x03\\x08\\x06\\x16\\x03\\x08\\x1e\" +\n\t\"#\\x03\\x08\\x11\\x11\\x03\\x08\\x10\\x18\\x03\\x08\\x14(\\x03\\x07)\\x1e\\x03\\x07.1\" +\n\t\"\\x03\\x07 $\\x03\\x07 '\\x03\\x078\\x08\\x03\\x07\\x0d0\\x03\\x07\\x0f7\\x03\\x07\\x05#\" +\n\t\"\\x03\\x07\\x05\\x1a\\x03\\x07\\x1a7\\x03\\x07\\x1d-\\x03\\x07\\x17\\x10\\x03\\x06)\\x1f\" +\n\t\"\\x03\\x062\\x0b\\x03\\x066\\x16\\x03\\x06\\x09\\x11\\x03\\x09(\\x1e\\x03\\x07!5\\x03\" +\n\t\"\\x0b\\x11\\x16\\x03\\x0a/\\x04\\x03\\x0a,\\x1a\\x03\\x0b\\x173\\x03\\x0a,1\\x03\\x0a/5\" +\n\t\"\\x03\\x0a\\x221\\x03\\x0a\\x22\\x0d\\x03\\x0a?%\\x03\\x0a<,\\x03\\x0a?#\\x03\\x0a>\\x19\" +\n\t\"\\x03\\x0a\\x08&\\x03\\x0a\\x0b\\x0e\\x03\\x0a\\x0c:\\x03\\x0a\\x0c+\\x03\\x0a\\x03\\x22\" +\n\t\"\\x03\\x0a\\x06)\\x03\\x0a\\x11\\x10\\x03\\x0a\\x11\\x1a\\x03\\x0a\\x17-\\x03\\x0a\\x14(\" +\n\t\"\\x03\\x09)\\x1e\\x03\\x09/\\x09\\x03\\x09.\\x00\\x03\\x09,\\x07\\x03\\x09/*\\x03\\x09-9\" +\n\t\"\\x03\\x09\\x228\\x03\\x09%\\x09\\x03\\x09:\\x12\\x03\\x09;\\x1d\\x03\\x09?\\x06\\x03\" +\n\t\"\\x093%\\x03\\x096\\x05\\x03\\x096\\x08\\x03\\x097\\x02\\x03\\x09\\x07,\\x03\\x09\\x04,\" +\n\t\"\\x03\\x09\\x1f\\x16\\x03\\x09\\x11\\x03\\x03\\x09\\x11\\x12\\x03\\x09\\x168\\x03\\x08*\" +\n\t\"\\x05\\x03\\x08/2\\x03\\x084:\\x03\\x08\\x22+\\x03\\x08 0\\x03\\x08&\\x0a\\x03\\x08;\" +\n\t\"\\x10\\x03\\x08>$\\x03\\x08>\\x18\\x03\\x0829\\x03\\x082:\\x03\\x081,\\x03\\x081<\\x03\" +\n\t\"\\x081\\x1c\\x03\\x087#\\x03\\x087*\\x03\\x08\\x09'\\x03\\x08\\x00\\x1d\\x03\\x08\\x05-\" +\n\t\"\\x03\\x08\\x1f4\\x03\\x08\\x1d\\x04\\x03\\x08\\x16\\x0f\\x03\\x07*7\\x03\\x07'!\\x03\" +\n\t\"\\x07%\\x1b\\x03\\x077\\x0c\\x03\\x07\\x0c1\\x03\\x07\\x0c.\\x03\\x07\\x00\\x06\\x03\\x07\" +\n\t\"\\x01\\x02\\x03\\x07\\x010\\x03\\x07\\x06=\\x03\\x07\\x01\\x03\\x03\\x07\\x01\\x13\\x03\" +\n\t\"\\x07\\x06\\x06\\x03\\x07\\x05\\x0a\\x03\\x07\\x1f\\x09\\x03\\x07\\x17:\\x03\\x06*1\\x03\" +\n\t\"\\x06-\\x1d\\x03\\x06\\x223\\x03\\x062:\\x03\\x060$\\x03\\x066\\x1e\\x03\\x064\\x12\\x03\" +\n\t\"\\x0645\\x03\\x06\\x0b\\x00\\x03\\x06\\x0b7\\x03\\x06\\x07\\x1f\\x03\\x06\\x15\\x12\\x03\" +\n\t\"\\x0c\\x05\\x0f\\x03\\x0b+\\x0b\\x03\\x0b+-\\x03\\x06\\x16\\x1b\\x03\\x06\\x15\\x17\\x03\" +\n\t\"\\x89\\xca\\xea\\x03\\x89\\xca\\xe8\\x03\\x0c8\\x10\\x03\\x0c8\\x01\\x03\\x0c8\\x0f\\x03\" +\n\t\"\\x0d8%\\x03\\x0d8!\\x03\\x0c8-\\x03\\x0c8/\\x03\\x0c8+\\x03\\x0c87\\x03\\x0c85\\x03\" +\n\t\"\\x0c9\\x09\\x03\\x0c9\\x0d\\x03\\x0c9\\x0f\\x03\\x0c9\\x0b\\x03\\xcfu\\x0c\\x03\\xcfu\" +\n\t\"\\x0f\\x03\\xcfu\\x0e\\x03\\xcfu\\x09\\x03\\x0c9\\x10\\x03\\x0d9\\x0c\\x03\\xcf`;\\x03\" +\n\t\"\\xcf`>\\x03\\xcf`9\\x03\\xcf`8\\x03\\xcf`7\\x03\\xcf`*\\x03\\xcf`-\\x03\\xcf`,\\x03\" +\n\t\"\\x0d\\x1b\\x1a\\x03\\x0d\\x1b&\\x03\\x0c=.\\x03\\x0c=%\\x03\\x0c>\\x1e\\x03\\x0c>\\x14\" +\n\t\"\\x03\\x0c?\\x06\\x03\\x0c?\\x0b\\x03\\x0c?\\x0c\\x03\\x0c?\\x0d\\x03\\x0c?\\x02\\x03\" +\n\t\"\\x0c>\\x0f\\x03\\x0c>\\x08\\x03\\x0c>\\x09\\x03\\x0c>,\\x03\\x0c>\\x0c\\x03\\x0c?\\x13\" +\n\t\"\\x03\\x0c?\\x16\\x03\\x0c?\\x15\\x03\\x0c?\\x1c\\x03\\x0c?\\x1f\\x03\\x0c?\\x1d\\x03\" +\n\t\"\\x0c?\\x1a\\x03\\x0c?\\x17\\x03\\x0c?\\x08\\x03\\x0c?\\x09\\x03\\x0c?\\x0e\\x03\\x0c?\" +\n\t\"\\x04\\x03\\x0c?\\x05\\x03\\x0c<?\\x03\\x0c=\\x00\\x03\\x0c=\\x06\\x03\\x0c=\\x05\\x03\" +\n\t\"\\x0c=\\x0c\\x03\\x0c=\\x0f\\x03\\x0c=\\x0d\\x03\\x0c=\\x0b\\x03\\x0c=\\x07\\x03\\x0c=\" +\n\t\"\\x19\\x03\\x0c=\\x15\\x03\\x0c=\\x11\\x03\\x0c=1\\x03\\x0c=3\\x03\\x0c=0\\x03\\x0c=>\" +\n\t\"\\x03\\x0c=2\\x03\\x0c=6\\x03\\x0c<\\x07\\x03\\x0c<\\x05\\x03\\x0e:!\\x03\\x0e:#\\x03\" +\n\t\"\\x0e8\\x09\\x03\\x0e:&\\x03\\x0e8\\x0b\\x03\\x0e:$\\x03\\x0e:,\\x03\\x0e8\\x1a\\x03\" +\n\t\"\\x0e8\\x1e\\x03\\x0e:*\\x03\\x0e:7\\x03\\x0e:5\\x03\\x0e:;\\x03\\x0e:\\x15\\x03\\x0e:<\" +\n\t\"\\x03\\x0e:4\\x03\\x0e:'\\x03\\x0e:-\\x03\\x0e:%\\x03\\x0e:?\\x03\\x0e:=\\x03\\x0e:)\" +\n\t\"\\x03\\x0e:/\\x03\\xcfs'\\x03\\x0d=\\x0f\\x03\\x0d+*\\x03\\x0d99\\x03\\x0d9;\\x03\\x0d9\" +\n\t\"?\\x03\\x0d)\\x0d\\x03\\x0d(%\\x02\\x01\\x18\\x02\\x01(\\x02\\x01\\x1e\\x03\\x0f$!\\x03\" +\n\t\"\\x0f87\\x03\\x0f4\\x0e\\x03\\x0f5\\x1d\\x03\\x06'\\x03\\x03\\x0f\\x08\\x18\\x03\\x0f\" +\n\t\"\\x0d\\x1b\\x03\\x0e2=\\x03\\x0e;\\x08\\x03\\x0e:\\x0b\\x03\\x0e\\x06$\\x03\\x0e\\x0d)\" +\n\t\"\\x03\\x0e\\x16\\x1f\\x03\\x0e\\x16\\x1b\\x03\\x0d$\\x0a\\x03\\x05,\\x1d\\x03\\x0d. \\x03\" +\n\t\"\\x0d.#\\x03\\x0c(/\\x03\\x09%\\x02\\x03\\x0d90\\x03\\x0d\\x0e4\\x03\\x0d\\x0d\\x0f\\x03\" +\n\t\"\\x0c#\\x00\\x03\\x0c,\\x1e\\x03\\x0c2\\x0e\\x03\\x0c\\x01\\x17\\x03\\x0c\\x09:\\x03\\x0e\" +\n\t\"\\x173\\x03\\x0c\\x08\\x03\\x03\\x0c\\x11\\x07\\x03\\x0c\\x10\\x18\\x03\\x0c\\x1f\\x1c\" +\n\t\"\\x03\\x0c\\x19\\x0e\\x03\\x0c\\x1a\\x1f\\x03\\x0f0>\\x03\\x0b->\\x03\\x0b<+\\x03\\x0b8\" +\n\t\"\\x13\\x03\\x0b\\x043\\x03\\x0b\\x14\\x03\\x03\\x0b\\x16%\\x03\\x0d\\x22&\\x03\\x0b\\x1a\" +\n\t\"\\x1a\\x03\\x0b\\x1a\\x04\\x03\\x0a%9\\x03\\x0a&2\\x03\\x0a&0\\x03\\x0a!\\x1a\\x03\\x0a!\" +\n\t\"7\\x03\\x0a5\\x10\\x03\\x0a=4\\x03\\x0a?\\x0e\\x03\\x0a>\\x10\\x03\\x0a\\x00 \\x03\\x0a\" +\n\t\"\\x0f:\\x03\\x0a\\x0f9\\x03\\x0a\\x0b\\x0a\\x03\\x0a\\x17%\\x03\\x0a\\x1b-\\x03\\x09-\" +\n\t\"\\x1a\\x03\\x09,4\\x03\\x09.,\\x03\\x09)\\x09\\x03\\x096!\\x03\\x091\\x1f\\x03\\x093\" +\n\t\"\\x16\\x03\\x0c+\\x1f\\x03\\x098 \\x03\\x098=\\x03\\x0c(\\x1a\\x03\\x0c(\\x16\\x03\\x09\" +\n\t\"\\x0a+\\x03\\x09\\x16\\x12\\x03\\x09\\x13\\x0e\\x03\\x09\\x153\\x03\\x08)!\\x03\\x09\\x1a\" +\n\t\"\\x01\\x03\\x09\\x18\\x01\\x03\\x08%#\\x03\\x08>\\x22\\x03\\x08\\x05%\\x03\\x08\\x02*\" +\n\t\"\\x03\\x08\\x15;\\x03\\x08\\x1b7\\x03\\x0f\\x07\\x1d\\x03\\x0f\\x04\\x03\\x03\\x070\\x0c\" +\n\t\"\\x03\\x07;\\x0b\\x03\\x07\\x08\\x17\\x03\\x07\\x12\\x06\\x03\\x06/-\\x03\\x0671\\x03\" +\n\t\"\\x065+\\x03\\x06>7\\x03\\x06\\x049\\x03\\x05+\\x1e\\x03\\x05,\\x17\\x03\\x05 \\x1d\\x03\" +\n\t\"\\x05\\x22\\x05\\x03\\x050\\x1d\"\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// idnaTrie. Total size: 28600 bytes (27.93 KiB). Checksum: 95575047b5d8fff.\ntype idnaTrie struct{}\n\nfunc newIdnaTrie(i int) *idnaTrie {\n\treturn &idnaTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *idnaTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 124:\n\t\treturn uint16(idnaValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 124\n\t\treturn uint16(idnaSparse.lookup(n, b))\n\t}\n}\n\n// idnaValues: 126 blocks, 8064 entries, 16128 bytes\n// The third block is the zero block.\nvar idnaValues = [8064]uint16{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080,\n\t0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080,\n\t0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080,\n\t0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080,\n\t0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080,\n\t0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080,\n\t0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080,\n\t0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080,\n\t0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008,\n\t0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080,\n\t0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105,\n\t0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105,\n\t0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105,\n\t0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105,\n\t0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080,\n\t0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008,\n\t0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008,\n\t0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008,\n\t0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008,\n\t0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080,\n\t0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040,\n\t0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040,\n\t0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040,\n\t0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040,\n\t0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040,\n\t0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018,\n\t0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018,\n\t0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a,\n\t0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005,\n\t0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018,\n\t0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018,\n\t// Block 0x4, offset 0x100\n\t0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008,\n\t0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008,\n\t0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008,\n\t0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008,\n\t0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008,\n\t0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008,\n\t0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008,\n\t0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008,\n\t0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008,\n\t0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d,\n\t0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d,\n\t0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008,\n\t0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008,\n\t0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008,\n\t0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008,\n\t0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008,\n\t0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008,\n\t0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008,\n\t0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008,\n\t0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d,\n\t0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008,\n\t0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d,\n\t0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d,\n\t0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d,\n\t0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155,\n\t0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008,\n\t0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d,\n\t0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd,\n\t0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d,\n\t0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008,\n\t0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9,\n\t0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d,\n\t0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d,\n\t0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d,\n\t0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008,\n\t0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008,\n\t0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008,\n\t0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008,\n\t0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008,\n\t0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008,\n\t0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008,\n\t0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008,\n\t0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008,\n\t0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008,\n\t0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008,\n\t0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008,\n\t0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008,\n\t0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008,\n\t0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008,\n\t0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d,\n\t0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018,\n\t0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008,\n\t0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008,\n\t0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018,\n\t0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a,\n\t0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369,\n\t0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018,\n\t0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018,\n\t0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018,\n\t0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018,\n\t0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d,\n\t0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308,\n\t0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308,\n\t0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308,\n\t0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308,\n\t0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308,\n\t0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308,\n\t0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308,\n\t0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008,\n\t0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008,\n\t0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2,\n\t0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040,\n\t0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105,\n\t0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105,\n\t0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105,\n\t0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d,\n\t0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d,\n\t0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008,\n\t0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008,\n\t0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008,\n\t0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008,\n\t0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008,\n\t0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd,\n\t0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008,\n\t0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008,\n\t0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008,\n\t0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008,\n\t0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008,\n\t0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd,\n\t0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008,\n\t0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008,\n\t0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008,\n\t0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008,\n\t0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008,\n\t0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008,\n\t0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008,\n\t0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008,\n\t0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008,\n\t0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008,\n\t0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008,\n\t0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308,\n\t0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008,\n\t0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008,\n\t0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008,\n\t0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008,\n\t0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008,\n\t0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008,\n\t0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008,\n\t0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008,\n\t0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008,\n\t0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d,\n\t0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d,\n\t0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008,\n\t0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008,\n\t0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008,\n\t0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008,\n\t0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008,\n\t0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008,\n\t0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008,\n\t0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008,\n\t0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008,\n\t0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008,\n\t0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008,\n\t0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008,\n\t0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008,\n\t0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008,\n\t0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008,\n\t0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008,\n\t0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5,\n\t0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5,\n\t0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840,\n\t0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818,\n\t0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308,\n\t0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308,\n\t0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040,\n\t0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08,\n\t0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08,\n\t0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08,\n\t0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08,\n\t0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08,\n\t0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08,\n\t0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308,\n\t0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308,\n\t0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308,\n\t0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308,\n\t0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808,\n\t0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808,\n\t0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08,\n\t0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429,\n\t0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08,\n\t0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08,\n\t0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08,\n\t0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08,\n\t0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308,\n\t0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840,\n\t0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308,\n\t0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018,\n\t0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08,\n\t0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008,\n\t0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08,\n\t0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818,\n\t0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818,\n\t0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308,\n\t0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08,\n\t0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08,\n\t0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08,\n\t0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08,\n\t0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08,\n\t0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308,\n\t0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308,\n\t0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x3008, 0x541: 0x3308, 0x542: 0x3308, 0x543: 0x3308, 0x544: 0x3308, 0x545: 0x3308,\n\t0x546: 0x3308, 0x547: 0x3308, 0x548: 0x3308, 0x549: 0x3008, 0x54a: 0x3008, 0x54b: 0x3008,\n\t0x54c: 0x3008, 0x54d: 0x3b08, 0x54e: 0x3008, 0x54f: 0x3008, 0x550: 0x0008, 0x551: 0x3308,\n\t0x552: 0x3308, 0x553: 0x3308, 0x554: 0x3308, 0x555: 0x3308, 0x556: 0x3308, 0x557: 0x3308,\n\t0x558: 0x04c9, 0x559: 0x0501, 0x55a: 0x0539, 0x55b: 0x0571, 0x55c: 0x05a9, 0x55d: 0x05e1,\n\t0x55e: 0x0619, 0x55f: 0x0651, 0x560: 0x0008, 0x561: 0x0008, 0x562: 0x3308, 0x563: 0x3308,\n\t0x564: 0x0018, 0x565: 0x0018, 0x566: 0x0008, 0x567: 0x0008, 0x568: 0x0008, 0x569: 0x0008,\n\t0x56a: 0x0008, 0x56b: 0x0008, 0x56c: 0x0008, 0x56d: 0x0008, 0x56e: 0x0008, 0x56f: 0x0008,\n\t0x570: 0x0018, 0x571: 0x0008, 0x572: 0x0008, 0x573: 0x0008, 0x574: 0x0008, 0x575: 0x0008,\n\t0x576: 0x0008, 0x577: 0x0008, 0x578: 0x0008, 0x579: 0x0008, 0x57a: 0x0008, 0x57b: 0x0008,\n\t0x57c: 0x0008, 0x57d: 0x0008, 0x57e: 0x0008, 0x57f: 0x0008,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x0008, 0x581: 0x3308, 0x582: 0x3008, 0x583: 0x3008, 0x584: 0x0040, 0x585: 0x0008,\n\t0x586: 0x0008, 0x587: 0x0008, 0x588: 0x0008, 0x589: 0x0008, 0x58a: 0x0008, 0x58b: 0x0008,\n\t0x58c: 0x0008, 0x58d: 0x0040, 0x58e: 0x0040, 0x58f: 0x0008, 0x590: 0x0008, 0x591: 0x0040,\n\t0x592: 0x0040, 0x593: 0x0008, 0x594: 0x0008, 0x595: 0x0008, 0x596: 0x0008, 0x597: 0x0008,\n\t0x598: 0x0008, 0x599: 0x0008, 0x59a: 0x0008, 0x59b: 0x0008, 0x59c: 0x0008, 0x59d: 0x0008,\n\t0x59e: 0x0008, 0x59f: 0x0008, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x0008, 0x5a3: 0x0008,\n\t0x5a4: 0x0008, 0x5a5: 0x0008, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0040,\n\t0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008,\n\t0x5b0: 0x0008, 0x5b1: 0x0040, 0x5b2: 0x0008, 0x5b3: 0x0040, 0x5b4: 0x0040, 0x5b5: 0x0040,\n\t0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0040, 0x5bb: 0x0040,\n\t0x5bc: 0x3308, 0x5bd: 0x0008, 0x5be: 0x3008, 0x5bf: 0x3008,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x3008, 0x5c1: 0x3308, 0x5c2: 0x3308, 0x5c3: 0x3308, 0x5c4: 0x3308, 0x5c5: 0x0040,\n\t0x5c6: 0x0040, 0x5c7: 0x3008, 0x5c8: 0x3008, 0x5c9: 0x0040, 0x5ca: 0x0040, 0x5cb: 0x3008,\n\t0x5cc: 0x3008, 0x5cd: 0x3b08, 0x5ce: 0x0008, 0x5cf: 0x0040, 0x5d0: 0x0040, 0x5d1: 0x0040,\n\t0x5d2: 0x0040, 0x5d3: 0x0040, 0x5d4: 0x0040, 0x5d5: 0x0040, 0x5d6: 0x0040, 0x5d7: 0x3008,\n\t0x5d8: 0x0040, 0x5d9: 0x0040, 0x5da: 0x0040, 0x5db: 0x0040, 0x5dc: 0x0689, 0x5dd: 0x06c1,\n\t0x5de: 0x0040, 0x5df: 0x06f9, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x3308, 0x5e3: 0x3308,\n\t0x5e4: 0x0040, 0x5e5: 0x0040, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0008,\n\t0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008,\n\t0x5f0: 0x0008, 0x5f1: 0x0008, 0x5f2: 0x0018, 0x5f3: 0x0018, 0x5f4: 0x0018, 0x5f5: 0x0018,\n\t0x5f6: 0x0018, 0x5f7: 0x0018, 0x5f8: 0x0018, 0x5f9: 0x0018, 0x5fa: 0x0018, 0x5fb: 0x0018,\n\t0x5fc: 0x0040, 0x5fd: 0x0040, 0x5fe: 0x0040, 0x5ff: 0x0040,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x0040, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3008, 0x604: 0x0040, 0x605: 0x0008,\n\t0x606: 0x0008, 0x607: 0x0008, 0x608: 0x0008, 0x609: 0x0008, 0x60a: 0x0008, 0x60b: 0x0040,\n\t0x60c: 0x0040, 0x60d: 0x0040, 0x60e: 0x0040, 0x60f: 0x0008, 0x610: 0x0008, 0x611: 0x0040,\n\t0x612: 0x0040, 0x613: 0x0008, 0x614: 0x0008, 0x615: 0x0008, 0x616: 0x0008, 0x617: 0x0008,\n\t0x618: 0x0008, 0x619: 0x0008, 0x61a: 0x0008, 0x61b: 0x0008, 0x61c: 0x0008, 0x61d: 0x0008,\n\t0x61e: 0x0008, 0x61f: 0x0008, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x0008, 0x623: 0x0008,\n\t0x624: 0x0008, 0x625: 0x0008, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0040,\n\t0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008,\n\t0x630: 0x0008, 0x631: 0x0040, 0x632: 0x0008, 0x633: 0x0731, 0x634: 0x0040, 0x635: 0x0008,\n\t0x636: 0x0769, 0x637: 0x0040, 0x638: 0x0008, 0x639: 0x0008, 0x63a: 0x0040, 0x63b: 0x0040,\n\t0x63c: 0x3308, 0x63d: 0x0040, 0x63e: 0x3008, 0x63f: 0x3008,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x3008, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x0040, 0x644: 0x0040, 0x645: 0x0040,\n\t0x646: 0x0040, 0x647: 0x3308, 0x648: 0x3308, 0x649: 0x0040, 0x64a: 0x0040, 0x64b: 0x3308,\n\t0x64c: 0x3308, 0x64d: 0x3b08, 0x64e: 0x0040, 0x64f: 0x0040, 0x650: 0x0040, 0x651: 0x3308,\n\t0x652: 0x0040, 0x653: 0x0040, 0x654: 0x0040, 0x655: 0x0040, 0x656: 0x0040, 0x657: 0x0040,\n\t0x658: 0x0040, 0x659: 0x07a1, 0x65a: 0x07d9, 0x65b: 0x0811, 0x65c: 0x0008, 0x65d: 0x0040,\n\t0x65e: 0x0849, 0x65f: 0x0040, 0x660: 0x0040, 0x661: 0x0040, 0x662: 0x0040, 0x663: 0x0040,\n\t0x664: 0x0040, 0x665: 0x0040, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0008,\n\t0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008,\n\t0x670: 0x3308, 0x671: 0x3308, 0x672: 0x0008, 0x673: 0x0008, 0x674: 0x0008, 0x675: 0x3308,\n\t0x676: 0x0040, 0x677: 0x0040, 0x678: 0x0040, 0x679: 0x0040, 0x67a: 0x0040, 0x67b: 0x0040,\n\t0x67c: 0x0040, 0x67d: 0x0040, 0x67e: 0x0040, 0x67f: 0x0040,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x0040, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x3008, 0x684: 0x0040, 0x685: 0x0008,\n\t0x686: 0x0008, 0x687: 0x0008, 0x688: 0x0008, 0x689: 0x0008, 0x68a: 0x0008, 0x68b: 0x0008,\n\t0x68c: 0x0008, 0x68d: 0x0008, 0x68e: 0x0040, 0x68f: 0x0008, 0x690: 0x0008, 0x691: 0x0008,\n\t0x692: 0x0040, 0x693: 0x0008, 0x694: 0x0008, 0x695: 0x0008, 0x696: 0x0008, 0x697: 0x0008,\n\t0x698: 0x0008, 0x699: 0x0008, 0x69a: 0x0008, 0x69b: 0x0008, 0x69c: 0x0008, 0x69d: 0x0008,\n\t0x69e: 0x0008, 0x69f: 0x0008, 0x6a0: 0x0008, 0x6a1: 0x0008, 0x6a2: 0x0008, 0x6a3: 0x0008,\n\t0x6a4: 0x0008, 0x6a5: 0x0008, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0040,\n\t0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008,\n\t0x6b0: 0x0008, 0x6b1: 0x0040, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0040, 0x6b5: 0x0008,\n\t0x6b6: 0x0008, 0x6b7: 0x0008, 0x6b8: 0x0008, 0x6b9: 0x0008, 0x6ba: 0x0040, 0x6bb: 0x0040,\n\t0x6bc: 0x3308, 0x6bd: 0x0008, 0x6be: 0x3008, 0x6bf: 0x3008,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3008, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3308, 0x6c4: 0x3308, 0x6c5: 0x3308,\n\t0x6c6: 0x0040, 0x6c7: 0x3308, 0x6c8: 0x3308, 0x6c9: 0x3008, 0x6ca: 0x0040, 0x6cb: 0x3008,\n\t0x6cc: 0x3008, 0x6cd: 0x3b08, 0x6ce: 0x0040, 0x6cf: 0x0040, 0x6d0: 0x0008, 0x6d1: 0x0040,\n\t0x6d2: 0x0040, 0x6d3: 0x0040, 0x6d4: 0x0040, 0x6d5: 0x0040, 0x6d6: 0x0040, 0x6d7: 0x0040,\n\t0x6d8: 0x0040, 0x6d9: 0x0040, 0x6da: 0x0040, 0x6db: 0x0040, 0x6dc: 0x0040, 0x6dd: 0x0040,\n\t0x6de: 0x0040, 0x6df: 0x0040, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x3308, 0x6e3: 0x3308,\n\t0x6e4: 0x0040, 0x6e5: 0x0040, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0008,\n\t0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008,\n\t0x6f0: 0x0018, 0x6f1: 0x0018, 0x6f2: 0x0040, 0x6f3: 0x0040, 0x6f4: 0x0040, 0x6f5: 0x0040,\n\t0x6f6: 0x0040, 0x6f7: 0x0040, 0x6f8: 0x0040, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040,\n\t0x6fc: 0x0040, 0x6fd: 0x0040, 0x6fe: 0x0040, 0x6ff: 0x0040,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x0040, 0x701: 0x3308, 0x702: 0x3008, 0x703: 0x3008, 0x704: 0x0040, 0x705: 0x0008,\n\t0x706: 0x0008, 0x707: 0x0008, 0x708: 0x0008, 0x709: 0x0008, 0x70a: 0x0008, 0x70b: 0x0008,\n\t0x70c: 0x0008, 0x70d: 0x0040, 0x70e: 0x0040, 0x70f: 0x0008, 0x710: 0x0008, 0x711: 0x0040,\n\t0x712: 0x0040, 0x713: 0x0008, 0x714: 0x0008, 0x715: 0x0008, 0x716: 0x0008, 0x717: 0x0008,\n\t0x718: 0x0008, 0x719: 0x0008, 0x71a: 0x0008, 0x71b: 0x0008, 0x71c: 0x0008, 0x71d: 0x0008,\n\t0x71e: 0x0008, 0x71f: 0x0008, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x0008, 0x723: 0x0008,\n\t0x724: 0x0008, 0x725: 0x0008, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0040,\n\t0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008,\n\t0x730: 0x0008, 0x731: 0x0040, 0x732: 0x0008, 0x733: 0x0008, 0x734: 0x0040, 0x735: 0x0008,\n\t0x736: 0x0008, 0x737: 0x0008, 0x738: 0x0008, 0x739: 0x0008, 0x73a: 0x0040, 0x73b: 0x0040,\n\t0x73c: 0x3308, 0x73d: 0x0008, 0x73e: 0x3008, 0x73f: 0x3308,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x3008, 0x741: 0x3308, 0x742: 0x3308, 0x743: 0x3308, 0x744: 0x3308, 0x745: 0x0040,\n\t0x746: 0x0040, 0x747: 0x3008, 0x748: 0x3008, 0x749: 0x0040, 0x74a: 0x0040, 0x74b: 0x3008,\n\t0x74c: 0x3008, 0x74d: 0x3b08, 0x74e: 0x0040, 0x74f: 0x0040, 0x750: 0x0040, 0x751: 0x0040,\n\t0x752: 0x0040, 0x753: 0x0040, 0x754: 0x0040, 0x755: 0x0040, 0x756: 0x3308, 0x757: 0x3008,\n\t0x758: 0x0040, 0x759: 0x0040, 0x75a: 0x0040, 0x75b: 0x0040, 0x75c: 0x0881, 0x75d: 0x08b9,\n\t0x75e: 0x0040, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x3308, 0x763: 0x3308,\n\t0x764: 0x0040, 0x765: 0x0040, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0008,\n\t0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008,\n\t0x770: 0x0018, 0x771: 0x0008, 0x772: 0x0018, 0x773: 0x0018, 0x774: 0x0018, 0x775: 0x0018,\n\t0x776: 0x0018, 0x777: 0x0018, 0x778: 0x0040, 0x779: 0x0040, 0x77a: 0x0040, 0x77b: 0x0040,\n\t0x77c: 0x0040, 0x77d: 0x0040, 0x77e: 0x0040, 0x77f: 0x0040,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x0040, 0x781: 0x0040, 0x782: 0x3308, 0x783: 0x0008, 0x784: 0x0040, 0x785: 0x0008,\n\t0x786: 0x0008, 0x787: 0x0008, 0x788: 0x0008, 0x789: 0x0008, 0x78a: 0x0008, 0x78b: 0x0040,\n\t0x78c: 0x0040, 0x78d: 0x0040, 0x78e: 0x0008, 0x78f: 0x0008, 0x790: 0x0008, 0x791: 0x0040,\n\t0x792: 0x0008, 0x793: 0x0008, 0x794: 0x0008, 0x795: 0x0008, 0x796: 0x0040, 0x797: 0x0040,\n\t0x798: 0x0040, 0x799: 0x0008, 0x79a: 0x0008, 0x79b: 0x0040, 0x79c: 0x0008, 0x79d: 0x0040,\n\t0x79e: 0x0008, 0x79f: 0x0008, 0x7a0: 0x0040, 0x7a1: 0x0040, 0x7a2: 0x0040, 0x7a3: 0x0008,\n\t0x7a4: 0x0008, 0x7a5: 0x0040, 0x7a6: 0x0040, 0x7a7: 0x0040, 0x7a8: 0x0008, 0x7a9: 0x0008,\n\t0x7aa: 0x0008, 0x7ab: 0x0040, 0x7ac: 0x0040, 0x7ad: 0x0040, 0x7ae: 0x0008, 0x7af: 0x0008,\n\t0x7b0: 0x0008, 0x7b1: 0x0008, 0x7b2: 0x0008, 0x7b3: 0x0008, 0x7b4: 0x0008, 0x7b5: 0x0008,\n\t0x7b6: 0x0008, 0x7b7: 0x0008, 0x7b8: 0x0008, 0x7b9: 0x0008, 0x7ba: 0x0040, 0x7bb: 0x0040,\n\t0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x3008, 0x7bf: 0x3008,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x3308, 0x7c1: 0x3008, 0x7c2: 0x3008, 0x7c3: 0x3008, 0x7c4: 0x3008, 0x7c5: 0x0040,\n\t0x7c6: 0x3308, 0x7c7: 0x3308, 0x7c8: 0x3308, 0x7c9: 0x0040, 0x7ca: 0x3308, 0x7cb: 0x3308,\n\t0x7cc: 0x3308, 0x7cd: 0x3b08, 0x7ce: 0x0040, 0x7cf: 0x0040, 0x7d0: 0x0040, 0x7d1: 0x0040,\n\t0x7d2: 0x0040, 0x7d3: 0x0040, 0x7d4: 0x0040, 0x7d5: 0x3308, 0x7d6: 0x3308, 0x7d7: 0x0040,\n\t0x7d8: 0x0008, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0040, 0x7dd: 0x0040,\n\t0x7de: 0x0040, 0x7df: 0x0040, 0x7e0: 0x0008, 0x7e1: 0x0008, 0x7e2: 0x3308, 0x7e3: 0x3308,\n\t0x7e4: 0x0040, 0x7e5: 0x0040, 0x7e6: 0x0008, 0x7e7: 0x0008, 0x7e8: 0x0008, 0x7e9: 0x0008,\n\t0x7ea: 0x0008, 0x7eb: 0x0008, 0x7ec: 0x0008, 0x7ed: 0x0008, 0x7ee: 0x0008, 0x7ef: 0x0008,\n\t0x7f0: 0x0040, 0x7f1: 0x0040, 0x7f2: 0x0040, 0x7f3: 0x0040, 0x7f4: 0x0040, 0x7f5: 0x0040,\n\t0x7f6: 0x0040, 0x7f7: 0x0040, 0x7f8: 0x0018, 0x7f9: 0x0018, 0x7fa: 0x0018, 0x7fb: 0x0018,\n\t0x7fc: 0x0018, 0x7fd: 0x0018, 0x7fe: 0x0018, 0x7ff: 0x0018,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x0008, 0x801: 0x3308, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x0040, 0x805: 0x0008,\n\t0x806: 0x0008, 0x807: 0x0008, 0x808: 0x0008, 0x809: 0x0008, 0x80a: 0x0008, 0x80b: 0x0008,\n\t0x80c: 0x0008, 0x80d: 0x0040, 0x80e: 0x0008, 0x80f: 0x0008, 0x810: 0x0008, 0x811: 0x0040,\n\t0x812: 0x0008, 0x813: 0x0008, 0x814: 0x0008, 0x815: 0x0008, 0x816: 0x0008, 0x817: 0x0008,\n\t0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0008, 0x81c: 0x0008, 0x81d: 0x0008,\n\t0x81e: 0x0008, 0x81f: 0x0008, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x0008, 0x823: 0x0008,\n\t0x824: 0x0008, 0x825: 0x0008, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0040,\n\t0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008,\n\t0x830: 0x0008, 0x831: 0x0008, 0x832: 0x0008, 0x833: 0x0008, 0x834: 0x0040, 0x835: 0x0008,\n\t0x836: 0x0008, 0x837: 0x0008, 0x838: 0x0008, 0x839: 0x0008, 0x83a: 0x0040, 0x83b: 0x0040,\n\t0x83c: 0x3308, 0x83d: 0x0008, 0x83e: 0x3008, 0x83f: 0x3308,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x3008, 0x841: 0x3008, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x3008, 0x845: 0x0040,\n\t0x846: 0x3308, 0x847: 0x3008, 0x848: 0x3008, 0x849: 0x0040, 0x84a: 0x3008, 0x84b: 0x3008,\n\t0x84c: 0x3308, 0x84d: 0x3b08, 0x84e: 0x0040, 0x84f: 0x0040, 0x850: 0x0040, 0x851: 0x0040,\n\t0x852: 0x0040, 0x853: 0x0040, 0x854: 0x0040, 0x855: 0x3008, 0x856: 0x3008, 0x857: 0x0040,\n\t0x858: 0x0040, 0x859: 0x0040, 0x85a: 0x0040, 0x85b: 0x0040, 0x85c: 0x0040, 0x85d: 0x0040,\n\t0x85e: 0x0008, 0x85f: 0x0040, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x3308, 0x863: 0x3308,\n\t0x864: 0x0040, 0x865: 0x0040, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0008,\n\t0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008,\n\t0x870: 0x0040, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0040, 0x874: 0x0040, 0x875: 0x0040,\n\t0x876: 0x0040, 0x877: 0x0040, 0x878: 0x0040, 0x879: 0x0040, 0x87a: 0x0040, 0x87b: 0x0040,\n\t0x87c: 0x0040, 0x87d: 0x0040, 0x87e: 0x0040, 0x87f: 0x0040,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x3008, 0x881: 0x3308, 0x882: 0x3308, 0x883: 0x3308, 0x884: 0x3308, 0x885: 0x0040,\n\t0x886: 0x3008, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008,\n\t0x88c: 0x3008, 0x88d: 0x3b08, 0x88e: 0x0008, 0x88f: 0x0018, 0x890: 0x0040, 0x891: 0x0040,\n\t0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0008, 0x895: 0x0008, 0x896: 0x0008, 0x897: 0x3008,\n\t0x898: 0x0018, 0x899: 0x0018, 0x89a: 0x0018, 0x89b: 0x0018, 0x89c: 0x0018, 0x89d: 0x0018,\n\t0x89e: 0x0018, 0x89f: 0x0008, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308,\n\t0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008,\n\t0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008,\n\t0x8b0: 0x0018, 0x8b1: 0x0018, 0x8b2: 0x0018, 0x8b3: 0x0018, 0x8b4: 0x0018, 0x8b5: 0x0018,\n\t0x8b6: 0x0018, 0x8b7: 0x0018, 0x8b8: 0x0018, 0x8b9: 0x0018, 0x8ba: 0x0008, 0x8bb: 0x0008,\n\t0x8bc: 0x0008, 0x8bd: 0x0008, 0x8be: 0x0008, 0x8bf: 0x0008,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0040, 0x8c1: 0x0008, 0x8c2: 0x0008, 0x8c3: 0x0040, 0x8c4: 0x0008, 0x8c5: 0x0040,\n\t0x8c6: 0x0040, 0x8c7: 0x0008, 0x8c8: 0x0008, 0x8c9: 0x0040, 0x8ca: 0x0008, 0x8cb: 0x0040,\n\t0x8cc: 0x0040, 0x8cd: 0x0008, 0x8ce: 0x0040, 0x8cf: 0x0040, 0x8d0: 0x0040, 0x8d1: 0x0040,\n\t0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x0008,\n\t0x8d8: 0x0040, 0x8d9: 0x0008, 0x8da: 0x0008, 0x8db: 0x0008, 0x8dc: 0x0008, 0x8dd: 0x0008,\n\t0x8de: 0x0008, 0x8df: 0x0008, 0x8e0: 0x0040, 0x8e1: 0x0008, 0x8e2: 0x0008, 0x8e3: 0x0008,\n\t0x8e4: 0x0040, 0x8e5: 0x0008, 0x8e6: 0x0040, 0x8e7: 0x0008, 0x8e8: 0x0040, 0x8e9: 0x0040,\n\t0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0040, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008,\n\t0x8f0: 0x0008, 0x8f1: 0x3308, 0x8f2: 0x0008, 0x8f3: 0x0929, 0x8f4: 0x3308, 0x8f5: 0x3308,\n\t0x8f6: 0x3308, 0x8f7: 0x3308, 0x8f8: 0x3308, 0x8f9: 0x3308, 0x8fa: 0x0040, 0x8fb: 0x3308,\n\t0x8fc: 0x3308, 0x8fd: 0x0008, 0x8fe: 0x0040, 0x8ff: 0x0040,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0008, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x09d1, 0x904: 0x0008, 0x905: 0x0008,\n\t0x906: 0x0008, 0x907: 0x0008, 0x908: 0x0040, 0x909: 0x0008, 0x90a: 0x0008, 0x90b: 0x0008,\n\t0x90c: 0x0008, 0x90d: 0x0a09, 0x90e: 0x0008, 0x90f: 0x0008, 0x910: 0x0008, 0x911: 0x0008,\n\t0x912: 0x0a41, 0x913: 0x0008, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0a79,\n\t0x918: 0x0008, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0ab1, 0x91d: 0x0008,\n\t0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0008, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008,\n\t0x924: 0x0008, 0x925: 0x0008, 0x926: 0x0008, 0x927: 0x0008, 0x928: 0x0008, 0x929: 0x0ae9,\n\t0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0008, 0x92d: 0x0040, 0x92e: 0x0040, 0x92f: 0x0040,\n\t0x930: 0x0040, 0x931: 0x3308, 0x932: 0x3308, 0x933: 0x0b21, 0x934: 0x3308, 0x935: 0x0b59,\n\t0x936: 0x0b91, 0x937: 0x0bc9, 0x938: 0x0c19, 0x939: 0x0c51, 0x93a: 0x3308, 0x93b: 0x3308,\n\t0x93c: 0x3308, 0x93d: 0x3308, 0x93e: 0x3308, 0x93f: 0x3008,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x3308, 0x941: 0x0ca1, 0x942: 0x3308, 0x943: 0x3308, 0x944: 0x3b08, 0x945: 0x0018,\n\t0x946: 0x3308, 0x947: 0x3308, 0x948: 0x0008, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008,\n\t0x94c: 0x0008, 0x94d: 0x3308, 0x94e: 0x3308, 0x94f: 0x3308, 0x950: 0x3308, 0x951: 0x3308,\n\t0x952: 0x3308, 0x953: 0x0cd9, 0x954: 0x3308, 0x955: 0x3308, 0x956: 0x3308, 0x957: 0x3308,\n\t0x958: 0x0040, 0x959: 0x3308, 0x95a: 0x3308, 0x95b: 0x3308, 0x95c: 0x3308, 0x95d: 0x0d11,\n\t0x95e: 0x3308, 0x95f: 0x3308, 0x960: 0x3308, 0x961: 0x3308, 0x962: 0x0d49, 0x963: 0x3308,\n\t0x964: 0x3308, 0x965: 0x3308, 0x966: 0x3308, 0x967: 0x0d81, 0x968: 0x3308, 0x969: 0x3308,\n\t0x96a: 0x3308, 0x96b: 0x3308, 0x96c: 0x0db9, 0x96d: 0x3308, 0x96e: 0x3308, 0x96f: 0x3308,\n\t0x970: 0x3308, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x3308, 0x974: 0x3308, 0x975: 0x3308,\n\t0x976: 0x3308, 0x977: 0x3308, 0x978: 0x3308, 0x979: 0x0df1, 0x97a: 0x3308, 0x97b: 0x3308,\n\t0x97c: 0x3308, 0x97d: 0x0040, 0x97e: 0x0018, 0x97f: 0x0018,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x0008, 0x981: 0x0008, 0x982: 0x0008, 0x983: 0x0008, 0x984: 0x0008, 0x985: 0x0008,\n\t0x986: 0x0008, 0x987: 0x0008, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008,\n\t0x98c: 0x0008, 0x98d: 0x0008, 0x98e: 0x0008, 0x98f: 0x0008, 0x990: 0x0008, 0x991: 0x0008,\n\t0x992: 0x0008, 0x993: 0x0008, 0x994: 0x0008, 0x995: 0x0008, 0x996: 0x0008, 0x997: 0x0008,\n\t0x998: 0x0008, 0x999: 0x0008, 0x99a: 0x0008, 0x99b: 0x0008, 0x99c: 0x0008, 0x99d: 0x0008,\n\t0x99e: 0x0008, 0x99f: 0x0008, 0x9a0: 0x0008, 0x9a1: 0x0008, 0x9a2: 0x0008, 0x9a3: 0x0008,\n\t0x9a4: 0x0008, 0x9a5: 0x0008, 0x9a6: 0x0008, 0x9a7: 0x0008, 0x9a8: 0x0008, 0x9a9: 0x0008,\n\t0x9aa: 0x0008, 0x9ab: 0x0008, 0x9ac: 0x0039, 0x9ad: 0x0ed1, 0x9ae: 0x0ee9, 0x9af: 0x0008,\n\t0x9b0: 0x0ef9, 0x9b1: 0x0f09, 0x9b2: 0x0f19, 0x9b3: 0x0f31, 0x9b4: 0x0249, 0x9b5: 0x0f41,\n\t0x9b6: 0x0259, 0x9b7: 0x0f51, 0x9b8: 0x0359, 0x9b9: 0x0f61, 0x9ba: 0x0f71, 0x9bb: 0x0008,\n\t0x9bc: 0x00d9, 0x9bd: 0x0f81, 0x9be: 0x0f99, 0x9bf: 0x0269,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0fa9, 0x9c1: 0x0fb9, 0x9c2: 0x0279, 0x9c3: 0x0039, 0x9c4: 0x0fc9, 0x9c5: 0x0fe1,\n\t0x9c6: 0x059d, 0x9c7: 0x0ee9, 0x9c8: 0x0ef9, 0x9c9: 0x0f09, 0x9ca: 0x0ff9, 0x9cb: 0x1011,\n\t0x9cc: 0x1029, 0x9cd: 0x0f31, 0x9ce: 0x0008, 0x9cf: 0x0f51, 0x9d0: 0x0f61, 0x9d1: 0x1041,\n\t0x9d2: 0x00d9, 0x9d3: 0x1059, 0x9d4: 0x05b5, 0x9d5: 0x05b5, 0x9d6: 0x0f99, 0x9d7: 0x0fa9,\n\t0x9d8: 0x0fb9, 0x9d9: 0x059d, 0x9da: 0x1071, 0x9db: 0x1089, 0x9dc: 0x05cd, 0x9dd: 0x1099,\n\t0x9de: 0x10b1, 0x9df: 0x10c9, 0x9e0: 0x10e1, 0x9e1: 0x10f9, 0x9e2: 0x0f41, 0x9e3: 0x0269,\n\t0x9e4: 0x0fb9, 0x9e5: 0x1089, 0x9e6: 0x1099, 0x9e7: 0x10b1, 0x9e8: 0x1111, 0x9e9: 0x10e1,\n\t0x9ea: 0x10f9, 0x9eb: 0x0008, 0x9ec: 0x0008, 0x9ed: 0x0008, 0x9ee: 0x0008, 0x9ef: 0x0008,\n\t0x9f0: 0x0008, 0x9f1: 0x0008, 0x9f2: 0x0008, 0x9f3: 0x0008, 0x9f4: 0x0008, 0x9f5: 0x0008,\n\t0x9f6: 0x0008, 0x9f7: 0x0008, 0x9f8: 0x1129, 0x9f9: 0x0008, 0x9fa: 0x0008, 0x9fb: 0x0008,\n\t0x9fc: 0x0008, 0x9fd: 0x0008, 0x9fe: 0x0008, 0x9ff: 0x0008,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0008, 0xa01: 0x0008, 0xa02: 0x0008, 0xa03: 0x0008, 0xa04: 0x0008, 0xa05: 0x0008,\n\t0xa06: 0x0008, 0xa07: 0x0008, 0xa08: 0x0008, 0xa09: 0x0008, 0xa0a: 0x0008, 0xa0b: 0x0008,\n\t0xa0c: 0x0008, 0xa0d: 0x0008, 0xa0e: 0x0008, 0xa0f: 0x0008, 0xa10: 0x0008, 0xa11: 0x0008,\n\t0xa12: 0x0008, 0xa13: 0x0008, 0xa14: 0x0008, 0xa15: 0x0008, 0xa16: 0x0008, 0xa17: 0x0008,\n\t0xa18: 0x0008, 0xa19: 0x0008, 0xa1a: 0x0008, 0xa1b: 0x1141, 0xa1c: 0x1159, 0xa1d: 0x1169,\n\t0xa1e: 0x1181, 0xa1f: 0x1029, 0xa20: 0x1199, 0xa21: 0x11a9, 0xa22: 0x11c1, 0xa23: 0x11d9,\n\t0xa24: 0x11f1, 0xa25: 0x1209, 0xa26: 0x1221, 0xa27: 0x05e5, 0xa28: 0x1239, 0xa29: 0x1251,\n\t0xa2a: 0xe17d, 0xa2b: 0x1269, 0xa2c: 0x1281, 0xa2d: 0x1299, 0xa2e: 0x12b1, 0xa2f: 0x12c9,\n\t0xa30: 0x12e1, 0xa31: 0x12f9, 0xa32: 0x1311, 0xa33: 0x1329, 0xa34: 0x1341, 0xa35: 0x1359,\n\t0xa36: 0x1371, 0xa37: 0x1389, 0xa38: 0x05fd, 0xa39: 0x13a1, 0xa3a: 0x13b9, 0xa3b: 0x13d1,\n\t0xa3c: 0x13e1, 0xa3d: 0x13f9, 0xa3e: 0x1411, 0xa3f: 0x1429,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0xe00d, 0xa41: 0x0008, 0xa42: 0xe00d, 0xa43: 0x0008, 0xa44: 0xe00d, 0xa45: 0x0008,\n\t0xa46: 0xe00d, 0xa47: 0x0008, 0xa48: 0xe00d, 0xa49: 0x0008, 0xa4a: 0xe00d, 0xa4b: 0x0008,\n\t0xa4c: 0xe00d, 0xa4d: 0x0008, 0xa4e: 0xe00d, 0xa4f: 0x0008, 0xa50: 0xe00d, 0xa51: 0x0008,\n\t0xa52: 0xe00d, 0xa53: 0x0008, 0xa54: 0xe00d, 0xa55: 0x0008, 0xa56: 0xe00d, 0xa57: 0x0008,\n\t0xa58: 0xe00d, 0xa59: 0x0008, 0xa5a: 0xe00d, 0xa5b: 0x0008, 0xa5c: 0xe00d, 0xa5d: 0x0008,\n\t0xa5e: 0xe00d, 0xa5f: 0x0008, 0xa60: 0xe00d, 0xa61: 0x0008, 0xa62: 0xe00d, 0xa63: 0x0008,\n\t0xa64: 0xe00d, 0xa65: 0x0008, 0xa66: 0xe00d, 0xa67: 0x0008, 0xa68: 0xe00d, 0xa69: 0x0008,\n\t0xa6a: 0xe00d, 0xa6b: 0x0008, 0xa6c: 0xe00d, 0xa6d: 0x0008, 0xa6e: 0xe00d, 0xa6f: 0x0008,\n\t0xa70: 0xe00d, 0xa71: 0x0008, 0xa72: 0xe00d, 0xa73: 0x0008, 0xa74: 0xe00d, 0xa75: 0x0008,\n\t0xa76: 0xe00d, 0xa77: 0x0008, 0xa78: 0xe00d, 0xa79: 0x0008, 0xa7a: 0xe00d, 0xa7b: 0x0008,\n\t0xa7c: 0xe00d, 0xa7d: 0x0008, 0xa7e: 0xe00d, 0xa7f: 0x0008,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008,\n\t0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008,\n\t0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008,\n\t0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0x0008, 0xa97: 0x0008,\n\t0xa98: 0x0008, 0xa99: 0x0008, 0xa9a: 0x0615, 0xa9b: 0x0635, 0xa9c: 0x0008, 0xa9d: 0x0008,\n\t0xa9e: 0x1441, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008,\n\t0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008,\n\t0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008,\n\t0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008,\n\t0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008,\n\t0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x0008, 0xac1: 0x0008, 0xac2: 0x0008, 0xac3: 0x0008, 0xac4: 0x0008, 0xac5: 0x0008,\n\t0xac6: 0x0040, 0xac7: 0x0040, 0xac8: 0xe045, 0xac9: 0xe045, 0xaca: 0xe045, 0xacb: 0xe045,\n\t0xacc: 0xe045, 0xacd: 0xe045, 0xace: 0x0040, 0xacf: 0x0040, 0xad0: 0x0008, 0xad1: 0x0008,\n\t0xad2: 0x0008, 0xad3: 0x0008, 0xad4: 0x0008, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008,\n\t0xad8: 0x0040, 0xad9: 0xe045, 0xada: 0x0040, 0xadb: 0xe045, 0xadc: 0x0040, 0xadd: 0xe045,\n\t0xade: 0x0040, 0xadf: 0xe045, 0xae0: 0x0008, 0xae1: 0x0008, 0xae2: 0x0008, 0xae3: 0x0008,\n\t0xae4: 0x0008, 0xae5: 0x0008, 0xae6: 0x0008, 0xae7: 0x0008, 0xae8: 0xe045, 0xae9: 0xe045,\n\t0xaea: 0xe045, 0xaeb: 0xe045, 0xaec: 0xe045, 0xaed: 0xe045, 0xaee: 0xe045, 0xaef: 0xe045,\n\t0xaf0: 0x0008, 0xaf1: 0x1459, 0xaf2: 0x0008, 0xaf3: 0x1471, 0xaf4: 0x0008, 0xaf5: 0x1489,\n\t0xaf6: 0x0008, 0xaf7: 0x14a1, 0xaf8: 0x0008, 0xaf9: 0x14b9, 0xafa: 0x0008, 0xafb: 0x14d1,\n\t0xafc: 0x0008, 0xafd: 0x14e9, 0xafe: 0x0040, 0xaff: 0x0040,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x1501, 0xb01: 0x1531, 0xb02: 0x1561, 0xb03: 0x1591, 0xb04: 0x15c1, 0xb05: 0x15f1,\n\t0xb06: 0x1621, 0xb07: 0x1651, 0xb08: 0x1501, 0xb09: 0x1531, 0xb0a: 0x1561, 0xb0b: 0x1591,\n\t0xb0c: 0x15c1, 0xb0d: 0x15f1, 0xb0e: 0x1621, 0xb0f: 0x1651, 0xb10: 0x1681, 0xb11: 0x16b1,\n\t0xb12: 0x16e1, 0xb13: 0x1711, 0xb14: 0x1741, 0xb15: 0x1771, 0xb16: 0x17a1, 0xb17: 0x17d1,\n\t0xb18: 0x1681, 0xb19: 0x16b1, 0xb1a: 0x16e1, 0xb1b: 0x1711, 0xb1c: 0x1741, 0xb1d: 0x1771,\n\t0xb1e: 0x17a1, 0xb1f: 0x17d1, 0xb20: 0x1801, 0xb21: 0x1831, 0xb22: 0x1861, 0xb23: 0x1891,\n\t0xb24: 0x18c1, 0xb25: 0x18f1, 0xb26: 0x1921, 0xb27: 0x1951, 0xb28: 0x1801, 0xb29: 0x1831,\n\t0xb2a: 0x1861, 0xb2b: 0x1891, 0xb2c: 0x18c1, 0xb2d: 0x18f1, 0xb2e: 0x1921, 0xb2f: 0x1951,\n\t0xb30: 0x0008, 0xb31: 0x0008, 0xb32: 0x1981, 0xb33: 0x19b1, 0xb34: 0x19d9, 0xb35: 0x0040,\n\t0xb36: 0x0008, 0xb37: 0x1a01, 0xb38: 0xe045, 0xb39: 0xe045, 0xb3a: 0x064d, 0xb3b: 0x1459,\n\t0xb3c: 0x19b1, 0xb3d: 0x0666, 0xb3e: 0x1a31, 0xb3f: 0x0686,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x06a6, 0xb41: 0x1a4a, 0xb42: 0x1a79, 0xb43: 0x1aa9, 0xb44: 0x1ad1, 0xb45: 0x0040,\n\t0xb46: 0x0008, 0xb47: 0x1af9, 0xb48: 0x06c5, 0xb49: 0x1471, 0xb4a: 0x06dd, 0xb4b: 0x1489,\n\t0xb4c: 0x1aa9, 0xb4d: 0x1b2a, 0xb4e: 0x1b5a, 0xb4f: 0x1b8a, 0xb50: 0x0008, 0xb51: 0x0008,\n\t0xb52: 0x0008, 0xb53: 0x1bb9, 0xb54: 0x0040, 0xb55: 0x0040, 0xb56: 0x0008, 0xb57: 0x0008,\n\t0xb58: 0xe045, 0xb59: 0xe045, 0xb5a: 0x06f5, 0xb5b: 0x14a1, 0xb5c: 0x0040, 0xb5d: 0x1bd2,\n\t0xb5e: 0x1c02, 0xb5f: 0x1c32, 0xb60: 0x0008, 0xb61: 0x0008, 0xb62: 0x0008, 0xb63: 0x1c61,\n\t0xb64: 0x0008, 0xb65: 0x0008, 0xb66: 0x0008, 0xb67: 0x0008, 0xb68: 0xe045, 0xb69: 0xe045,\n\t0xb6a: 0x070d, 0xb6b: 0x14d1, 0xb6c: 0xe04d, 0xb6d: 0x1c7a, 0xb6e: 0x03d2, 0xb6f: 0x1caa,\n\t0xb70: 0x0040, 0xb71: 0x0040, 0xb72: 0x1cb9, 0xb73: 0x1ce9, 0xb74: 0x1d11, 0xb75: 0x0040,\n\t0xb76: 0x0008, 0xb77: 0x1d39, 0xb78: 0x0725, 0xb79: 0x14b9, 0xb7a: 0x0515, 0xb7b: 0x14e9,\n\t0xb7c: 0x1ce9, 0xb7d: 0x073e, 0xb7e: 0x075e, 0xb7f: 0x0040,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x000a, 0xb81: 0x000a, 0xb82: 0x000a, 0xb83: 0x000a, 0xb84: 0x000a, 0xb85: 0x000a,\n\t0xb86: 0x000a, 0xb87: 0x000a, 0xb88: 0x000a, 0xb89: 0x000a, 0xb8a: 0x000a, 0xb8b: 0x03c0,\n\t0xb8c: 0x0003, 0xb8d: 0x0003, 0xb8e: 0x0340, 0xb8f: 0x0b40, 0xb90: 0x0018, 0xb91: 0xe00d,\n\t0xb92: 0x0018, 0xb93: 0x0018, 0xb94: 0x0018, 0xb95: 0x0018, 0xb96: 0x0018, 0xb97: 0x077e,\n\t0xb98: 0x0018, 0xb99: 0x0018, 0xb9a: 0x0018, 0xb9b: 0x0018, 0xb9c: 0x0018, 0xb9d: 0x0018,\n\t0xb9e: 0x0018, 0xb9f: 0x0018, 0xba0: 0x0018, 0xba1: 0x0018, 0xba2: 0x0018, 0xba3: 0x0018,\n\t0xba4: 0x0040, 0xba5: 0x0040, 0xba6: 0x0040, 0xba7: 0x0018, 0xba8: 0x0040, 0xba9: 0x0040,\n\t0xbaa: 0x0340, 0xbab: 0x0340, 0xbac: 0x0340, 0xbad: 0x0340, 0xbae: 0x0340, 0xbaf: 0x000a,\n\t0xbb0: 0x0018, 0xbb1: 0x0018, 0xbb2: 0x0018, 0xbb3: 0x1d69, 0xbb4: 0x1da1, 0xbb5: 0x0018,\n\t0xbb6: 0x1df1, 0xbb7: 0x1e29, 0xbb8: 0x0018, 0xbb9: 0x0018, 0xbba: 0x0018, 0xbbb: 0x0018,\n\t0xbbc: 0x1e7a, 0xbbd: 0x0018, 0xbbe: 0x079e, 0xbbf: 0x0018,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x0018, 0xbc1: 0x0018, 0xbc2: 0x0018, 0xbc3: 0x0018, 0xbc4: 0x0018, 0xbc5: 0x0018,\n\t0xbc6: 0x0018, 0xbc7: 0x1e92, 0xbc8: 0x1eaa, 0xbc9: 0x1ec2, 0xbca: 0x0018, 0xbcb: 0x0018,\n\t0xbcc: 0x0018, 0xbcd: 0x0018, 0xbce: 0x0018, 0xbcf: 0x0018, 0xbd0: 0x0018, 0xbd1: 0x0018,\n\t0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x1ed9,\n\t0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018,\n\t0xbde: 0x0018, 0xbdf: 0x000a, 0xbe0: 0x03c0, 0xbe1: 0x0340, 0xbe2: 0x0340, 0xbe3: 0x0340,\n\t0xbe4: 0x03c0, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0040, 0xbe8: 0x0040, 0xbe9: 0x0040,\n\t0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x0340,\n\t0xbf0: 0x1f41, 0xbf1: 0x0f41, 0xbf2: 0x0040, 0xbf3: 0x0040, 0xbf4: 0x1f51, 0xbf5: 0x1f61,\n\t0xbf6: 0x1f71, 0xbf7: 0x1f81, 0xbf8: 0x1f91, 0xbf9: 0x1fa1, 0xbfa: 0x1fb2, 0xbfb: 0x07bd,\n\t0xbfc: 0x1fc2, 0xbfd: 0x1fd2, 0xbfe: 0x1fe2, 0xbff: 0x0f71,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x1f41, 0xc01: 0x00c9, 0xc02: 0x0069, 0xc03: 0x0079, 0xc04: 0x1f51, 0xc05: 0x1f61,\n\t0xc06: 0x1f71, 0xc07: 0x1f81, 0xc08: 0x1f91, 0xc09: 0x1fa1, 0xc0a: 0x1fb2, 0xc0b: 0x07d5,\n\t0xc0c: 0x1fc2, 0xc0d: 0x1fd2, 0xc0e: 0x1fe2, 0xc0f: 0x0040, 0xc10: 0x0039, 0xc11: 0x0f09,\n\t0xc12: 0x00d9, 0xc13: 0x0369, 0xc14: 0x0ff9, 0xc15: 0x0249, 0xc16: 0x0f51, 0xc17: 0x0359,\n\t0xc18: 0x0f61, 0xc19: 0x0f71, 0xc1a: 0x0f99, 0xc1b: 0x01d9, 0xc1c: 0x0fa9, 0xc1d: 0x0040,\n\t0xc1e: 0x0040, 0xc1f: 0x0040, 0xc20: 0x0018, 0xc21: 0x0018, 0xc22: 0x0018, 0xc23: 0x0018,\n\t0xc24: 0x0018, 0xc25: 0x0018, 0xc26: 0x0018, 0xc27: 0x0018, 0xc28: 0x1ff1, 0xc29: 0x0018,\n\t0xc2a: 0x0018, 0xc2b: 0x0018, 0xc2c: 0x0018, 0xc2d: 0x0018, 0xc2e: 0x0018, 0xc2f: 0x0018,\n\t0xc30: 0x0018, 0xc31: 0x0018, 0xc32: 0x0018, 0xc33: 0x0018, 0xc34: 0x0018, 0xc35: 0x0018,\n\t0xc36: 0x0018, 0xc37: 0x0018, 0xc38: 0x0018, 0xc39: 0x0018, 0xc3a: 0x0018, 0xc3b: 0x0018,\n\t0xc3c: 0x0018, 0xc3d: 0x0018, 0xc3e: 0x0018, 0xc3f: 0x0040,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x07ee, 0xc41: 0x080e, 0xc42: 0x1159, 0xc43: 0x082d, 0xc44: 0x0018, 0xc45: 0x084e,\n\t0xc46: 0x086e, 0xc47: 0x1011, 0xc48: 0x0018, 0xc49: 0x088d, 0xc4a: 0x0f31, 0xc4b: 0x0249,\n\t0xc4c: 0x0249, 0xc4d: 0x0249, 0xc4e: 0x0249, 0xc4f: 0x2009, 0xc50: 0x0f41, 0xc51: 0x0f41,\n\t0xc52: 0x0359, 0xc53: 0x0359, 0xc54: 0x0018, 0xc55: 0x0f71, 0xc56: 0x2021, 0xc57: 0x0018,\n\t0xc58: 0x0018, 0xc59: 0x0f99, 0xc5a: 0x2039, 0xc5b: 0x0269, 0xc5c: 0x0269, 0xc5d: 0x0269,\n\t0xc5e: 0x0018, 0xc5f: 0x0018, 0xc60: 0x2049, 0xc61: 0x08ad, 0xc62: 0x2061, 0xc63: 0x0018,\n\t0xc64: 0x13d1, 0xc65: 0x0018, 0xc66: 0x2079, 0xc67: 0x0018, 0xc68: 0x13d1, 0xc69: 0x0018,\n\t0xc6a: 0x0f51, 0xc6b: 0x2091, 0xc6c: 0x0ee9, 0xc6d: 0x1159, 0xc6e: 0x0018, 0xc6f: 0x0f09,\n\t0xc70: 0x0f09, 0xc71: 0x1199, 0xc72: 0x0040, 0xc73: 0x0f61, 0xc74: 0x00d9, 0xc75: 0x20a9,\n\t0xc76: 0x20c1, 0xc77: 0x20d9, 0xc78: 0x20f1, 0xc79: 0x0f41, 0xc7a: 0x0018, 0xc7b: 0x08cd,\n\t0xc7c: 0x2109, 0xc7d: 0x10b1, 0xc7e: 0x10b1, 0xc7f: 0x2109,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x08ed, 0xc81: 0x0018, 0xc82: 0x0018, 0xc83: 0x0018, 0xc84: 0x0018, 0xc85: 0x0ef9,\n\t0xc86: 0x0ef9, 0xc87: 0x0f09, 0xc88: 0x0f41, 0xc89: 0x0259, 0xc8a: 0x0018, 0xc8b: 0x0018,\n\t0xc8c: 0x0018, 0xc8d: 0x0018, 0xc8e: 0x0008, 0xc8f: 0x0018, 0xc90: 0x2121, 0xc91: 0x2151,\n\t0xc92: 0x2181, 0xc93: 0x21b9, 0xc94: 0x21e9, 0xc95: 0x2219, 0xc96: 0x2249, 0xc97: 0x2279,\n\t0xc98: 0x22a9, 0xc99: 0x22d9, 0xc9a: 0x2309, 0xc9b: 0x2339, 0xc9c: 0x2369, 0xc9d: 0x2399,\n\t0xc9e: 0x23c9, 0xc9f: 0x23f9, 0xca0: 0x0f41, 0xca1: 0x2421, 0xca2: 0x0905, 0xca3: 0x2439,\n\t0xca4: 0x1089, 0xca5: 0x2451, 0xca6: 0x0925, 0xca7: 0x2469, 0xca8: 0x2491, 0xca9: 0x0369,\n\t0xcaa: 0x24a9, 0xcab: 0x0945, 0xcac: 0x0359, 0xcad: 0x1159, 0xcae: 0x0ef9, 0xcaf: 0x0f61,\n\t0xcb0: 0x0f41, 0xcb1: 0x2421, 0xcb2: 0x0965, 0xcb3: 0x2439, 0xcb4: 0x1089, 0xcb5: 0x2451,\n\t0xcb6: 0x0985, 0xcb7: 0x2469, 0xcb8: 0x2491, 0xcb9: 0x0369, 0xcba: 0x24a9, 0xcbb: 0x09a5,\n\t0xcbc: 0x0359, 0xcbd: 0x1159, 0xcbe: 0x0ef9, 0xcbf: 0x0f61,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x0018, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0018,\n\t0xcc6: 0x0018, 0xcc7: 0x0018, 0xcc8: 0x0018, 0xcc9: 0x0018, 0xcca: 0x0018, 0xccb: 0x0040,\n\t0xccc: 0x0040, 0xccd: 0x0040, 0xcce: 0x0040, 0xccf: 0x0040, 0xcd0: 0x0040, 0xcd1: 0x0040,\n\t0xcd2: 0x0040, 0xcd3: 0x0040, 0xcd4: 0x0040, 0xcd5: 0x0040, 0xcd6: 0x0040, 0xcd7: 0x0040,\n\t0xcd8: 0x0040, 0xcd9: 0x0040, 0xcda: 0x0040, 0xcdb: 0x0040, 0xcdc: 0x0040, 0xcdd: 0x0040,\n\t0xcde: 0x0040, 0xcdf: 0x0040, 0xce0: 0x00c9, 0xce1: 0x0069, 0xce2: 0x0079, 0xce3: 0x1f51,\n\t0xce4: 0x1f61, 0xce5: 0x1f71, 0xce6: 0x1f81, 0xce7: 0x1f91, 0xce8: 0x1fa1, 0xce9: 0x2601,\n\t0xcea: 0x2619, 0xceb: 0x2631, 0xcec: 0x2649, 0xced: 0x2661, 0xcee: 0x2679, 0xcef: 0x2691,\n\t0xcf0: 0x26a9, 0xcf1: 0x26c1, 0xcf2: 0x26d9, 0xcf3: 0x26f1, 0xcf4: 0x0a06, 0xcf5: 0x0a26,\n\t0xcf6: 0x0a46, 0xcf7: 0x0a66, 0xcf8: 0x0a86, 0xcf9: 0x0aa6, 0xcfa: 0x0ac6, 0xcfb: 0x0ae6,\n\t0xcfc: 0x0b06, 0xcfd: 0x270a, 0xcfe: 0x2732, 0xcff: 0x275a,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x2782, 0xd01: 0x27aa, 0xd02: 0x27d2, 0xd03: 0x27fa, 0xd04: 0x2822, 0xd05: 0x284a,\n\t0xd06: 0x2872, 0xd07: 0x289a, 0xd08: 0x0040, 0xd09: 0x0040, 0xd0a: 0x0040, 0xd0b: 0x0040,\n\t0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040,\n\t0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040,\n\t0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0b26, 0xd1d: 0x0b46,\n\t0xd1e: 0x0b66, 0xd1f: 0x0b86, 0xd20: 0x0ba6, 0xd21: 0x0bc6, 0xd22: 0x0be6, 0xd23: 0x0c06,\n\t0xd24: 0x0c26, 0xd25: 0x0c46, 0xd26: 0x0c66, 0xd27: 0x0c86, 0xd28: 0x0ca6, 0xd29: 0x0cc6,\n\t0xd2a: 0x0ce6, 0xd2b: 0x0d06, 0xd2c: 0x0d26, 0xd2d: 0x0d46, 0xd2e: 0x0d66, 0xd2f: 0x0d86,\n\t0xd30: 0x0da6, 0xd31: 0x0dc6, 0xd32: 0x0de6, 0xd33: 0x0e06, 0xd34: 0x0e26, 0xd35: 0x0e46,\n\t0xd36: 0x0039, 0xd37: 0x0ee9, 0xd38: 0x1159, 0xd39: 0x0ef9, 0xd3a: 0x0f09, 0xd3b: 0x1199,\n\t0xd3c: 0x0f31, 0xd3d: 0x0249, 0xd3e: 0x0f41, 0xd3f: 0x0259,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x0f51, 0xd41: 0x0359, 0xd42: 0x0f61, 0xd43: 0x0f71, 0xd44: 0x00d9, 0xd45: 0x0f99,\n\t0xd46: 0x2039, 0xd47: 0x0269, 0xd48: 0x01d9, 0xd49: 0x0fa9, 0xd4a: 0x0fb9, 0xd4b: 0x1089,\n\t0xd4c: 0x0279, 0xd4d: 0x0369, 0xd4e: 0x0289, 0xd4f: 0x13d1, 0xd50: 0x0039, 0xd51: 0x0ee9,\n\t0xd52: 0x1159, 0xd53: 0x0ef9, 0xd54: 0x0f09, 0xd55: 0x1199, 0xd56: 0x0f31, 0xd57: 0x0249,\n\t0xd58: 0x0f41, 0xd59: 0x0259, 0xd5a: 0x0f51, 0xd5b: 0x0359, 0xd5c: 0x0f61, 0xd5d: 0x0f71,\n\t0xd5e: 0x00d9, 0xd5f: 0x0f99, 0xd60: 0x2039, 0xd61: 0x0269, 0xd62: 0x01d9, 0xd63: 0x0fa9,\n\t0xd64: 0x0fb9, 0xd65: 0x1089, 0xd66: 0x0279, 0xd67: 0x0369, 0xd68: 0x0289, 0xd69: 0x13d1,\n\t0xd6a: 0x1f41, 0xd6b: 0x0018, 0xd6c: 0x0018, 0xd6d: 0x0018, 0xd6e: 0x0018, 0xd6f: 0x0018,\n\t0xd70: 0x0018, 0xd71: 0x0018, 0xd72: 0x0018, 0xd73: 0x0018, 0xd74: 0x0018, 0xd75: 0x0018,\n\t0xd76: 0x0018, 0xd77: 0x0018, 0xd78: 0x0018, 0xd79: 0x0018, 0xd7a: 0x0018, 0xd7b: 0x0018,\n\t0xd7c: 0x0018, 0xd7d: 0x0018, 0xd7e: 0x0018, 0xd7f: 0x0018,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0008, 0xd81: 0x0008, 0xd82: 0x0008, 0xd83: 0x0008, 0xd84: 0x0008, 0xd85: 0x0008,\n\t0xd86: 0x0008, 0xd87: 0x0008, 0xd88: 0x0008, 0xd89: 0x0008, 0xd8a: 0x0008, 0xd8b: 0x0008,\n\t0xd8c: 0x0008, 0xd8d: 0x0008, 0xd8e: 0x0008, 0xd8f: 0x0008, 0xd90: 0x0008, 0xd91: 0x0008,\n\t0xd92: 0x0008, 0xd93: 0x0008, 0xd94: 0x0008, 0xd95: 0x0008, 0xd96: 0x0008, 0xd97: 0x0008,\n\t0xd98: 0x0008, 0xd99: 0x0008, 0xd9a: 0x0008, 0xd9b: 0x0008, 0xd9c: 0x0008, 0xd9d: 0x0008,\n\t0xd9e: 0x0008, 0xd9f: 0x0040, 0xda0: 0xe00d, 0xda1: 0x0008, 0xda2: 0x2971, 0xda3: 0x0ebd,\n\t0xda4: 0x2989, 0xda5: 0x0008, 0xda6: 0x0008, 0xda7: 0xe07d, 0xda8: 0x0008, 0xda9: 0xe01d,\n\t0xdaa: 0x0008, 0xdab: 0xe03d, 0xdac: 0x0008, 0xdad: 0x0fe1, 0xdae: 0x1281, 0xdaf: 0x0fc9,\n\t0xdb0: 0x1141, 0xdb1: 0x0008, 0xdb2: 0xe00d, 0xdb3: 0x0008, 0xdb4: 0x0008, 0xdb5: 0xe01d,\n\t0xdb6: 0x0008, 0xdb7: 0x0008, 0xdb8: 0x0008, 0xdb9: 0x0008, 0xdba: 0x0008, 0xdbb: 0x0008,\n\t0xdbc: 0x0259, 0xdbd: 0x1089, 0xdbe: 0x29a1, 0xdbf: 0x29b9,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0xe00d, 0xdc1: 0x0008, 0xdc2: 0xe00d, 0xdc3: 0x0008, 0xdc4: 0xe00d, 0xdc5: 0x0008,\n\t0xdc6: 0xe00d, 0xdc7: 0x0008, 0xdc8: 0xe00d, 0xdc9: 0x0008, 0xdca: 0xe00d, 0xdcb: 0x0008,\n\t0xdcc: 0xe00d, 0xdcd: 0x0008, 0xdce: 0xe00d, 0xdcf: 0x0008, 0xdd0: 0xe00d, 0xdd1: 0x0008,\n\t0xdd2: 0xe00d, 0xdd3: 0x0008, 0xdd4: 0xe00d, 0xdd5: 0x0008, 0xdd6: 0xe00d, 0xdd7: 0x0008,\n\t0xdd8: 0xe00d, 0xdd9: 0x0008, 0xdda: 0xe00d, 0xddb: 0x0008, 0xddc: 0xe00d, 0xddd: 0x0008,\n\t0xdde: 0xe00d, 0xddf: 0x0008, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0xe00d, 0xde3: 0x0008,\n\t0xde4: 0x0008, 0xde5: 0x0018, 0xde6: 0x0018, 0xde7: 0x0018, 0xde8: 0x0018, 0xde9: 0x0018,\n\t0xdea: 0x0018, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0xe01d, 0xdee: 0x0008, 0xdef: 0x3308,\n\t0xdf0: 0x3308, 0xdf1: 0x3308, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0040, 0xdf5: 0x0040,\n\t0xdf6: 0x0040, 0xdf7: 0x0040, 0xdf8: 0x0040, 0xdf9: 0x0018, 0xdfa: 0x0018, 0xdfb: 0x0018,\n\t0xdfc: 0x0018, 0xdfd: 0x0018, 0xdfe: 0x0018, 0xdff: 0x0018,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x26fd, 0xe01: 0x271d, 0xe02: 0x273d, 0xe03: 0x275d, 0xe04: 0x277d, 0xe05: 0x279d,\n\t0xe06: 0x27bd, 0xe07: 0x27dd, 0xe08: 0x27fd, 0xe09: 0x281d, 0xe0a: 0x283d, 0xe0b: 0x285d,\n\t0xe0c: 0x287d, 0xe0d: 0x289d, 0xe0e: 0x28bd, 0xe0f: 0x28dd, 0xe10: 0x28fd, 0xe11: 0x291d,\n\t0xe12: 0x293d, 0xe13: 0x295d, 0xe14: 0x297d, 0xe15: 0x299d, 0xe16: 0x0040, 0xe17: 0x0040,\n\t0xe18: 0x0040, 0xe19: 0x0040, 0xe1a: 0x0040, 0xe1b: 0x0040, 0xe1c: 0x0040, 0xe1d: 0x0040,\n\t0xe1e: 0x0040, 0xe1f: 0x0040, 0xe20: 0x0040, 0xe21: 0x0040, 0xe22: 0x0040, 0xe23: 0x0040,\n\t0xe24: 0x0040, 0xe25: 0x0040, 0xe26: 0x0040, 0xe27: 0x0040, 0xe28: 0x0040, 0xe29: 0x0040,\n\t0xe2a: 0x0040, 0xe2b: 0x0040, 0xe2c: 0x0040, 0xe2d: 0x0040, 0xe2e: 0x0040, 0xe2f: 0x0040,\n\t0xe30: 0x0040, 0xe31: 0x0040, 0xe32: 0x0040, 0xe33: 0x0040, 0xe34: 0x0040, 0xe35: 0x0040,\n\t0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0040, 0xe3a: 0x0040, 0xe3b: 0x0040,\n\t0xe3c: 0x0040, 0xe3d: 0x0040, 0xe3e: 0x0040, 0xe3f: 0x0040,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x000a, 0xe41: 0x0018, 0xe42: 0x29d1, 0xe43: 0x0018, 0xe44: 0x0018, 0xe45: 0x0008,\n\t0xe46: 0x0008, 0xe47: 0x0008, 0xe48: 0x0018, 0xe49: 0x0018, 0xe4a: 0x0018, 0xe4b: 0x0018,\n\t0xe4c: 0x0018, 0xe4d: 0x0018, 0xe4e: 0x0018, 0xe4f: 0x0018, 0xe50: 0x0018, 0xe51: 0x0018,\n\t0xe52: 0x0018, 0xe53: 0x0018, 0xe54: 0x0018, 0xe55: 0x0018, 0xe56: 0x0018, 0xe57: 0x0018,\n\t0xe58: 0x0018, 0xe59: 0x0018, 0xe5a: 0x0018, 0xe5b: 0x0018, 0xe5c: 0x0018, 0xe5d: 0x0018,\n\t0xe5e: 0x0018, 0xe5f: 0x0018, 0xe60: 0x0018, 0xe61: 0x0018, 0xe62: 0x0018, 0xe63: 0x0018,\n\t0xe64: 0x0018, 0xe65: 0x0018, 0xe66: 0x0018, 0xe67: 0x0018, 0xe68: 0x0018, 0xe69: 0x0018,\n\t0xe6a: 0x3308, 0xe6b: 0x3308, 0xe6c: 0x3308, 0xe6d: 0x3308, 0xe6e: 0x3018, 0xe6f: 0x3018,\n\t0xe70: 0x0018, 0xe71: 0x0018, 0xe72: 0x0018, 0xe73: 0x0018, 0xe74: 0x0018, 0xe75: 0x0018,\n\t0xe76: 0xe125, 0xe77: 0x0018, 0xe78: 0x29bd, 0xe79: 0x29dd, 0xe7a: 0x29fd, 0xe7b: 0x0018,\n\t0xe7c: 0x0008, 0xe7d: 0x0018, 0xe7e: 0x0018, 0xe7f: 0x0018,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x2b3d, 0xe81: 0x2b5d, 0xe82: 0x2b7d, 0xe83: 0x2b9d, 0xe84: 0x2bbd, 0xe85: 0x2bdd,\n\t0xe86: 0x2bdd, 0xe87: 0x2bdd, 0xe88: 0x2bfd, 0xe89: 0x2bfd, 0xe8a: 0x2bfd, 0xe8b: 0x2bfd,\n\t0xe8c: 0x2c1d, 0xe8d: 0x2c1d, 0xe8e: 0x2c1d, 0xe8f: 0x2c3d, 0xe90: 0x2c5d, 0xe91: 0x2c5d,\n\t0xe92: 0x2a7d, 0xe93: 0x2a7d, 0xe94: 0x2c5d, 0xe95: 0x2c5d, 0xe96: 0x2c7d, 0xe97: 0x2c7d,\n\t0xe98: 0x2c5d, 0xe99: 0x2c5d, 0xe9a: 0x2a7d, 0xe9b: 0x2a7d, 0xe9c: 0x2c5d, 0xe9d: 0x2c5d,\n\t0xe9e: 0x2c3d, 0xe9f: 0x2c3d, 0xea0: 0x2c9d, 0xea1: 0x2c9d, 0xea2: 0x2cbd, 0xea3: 0x2cbd,\n\t0xea4: 0x0040, 0xea5: 0x2cdd, 0xea6: 0x2cfd, 0xea7: 0x2d1d, 0xea8: 0x2d1d, 0xea9: 0x2d3d,\n\t0xeaa: 0x2d5d, 0xeab: 0x2d7d, 0xeac: 0x2d9d, 0xead: 0x2dbd, 0xeae: 0x2ddd, 0xeaf: 0x2dfd,\n\t0xeb0: 0x2e1d, 0xeb1: 0x2e3d, 0xeb2: 0x2e3d, 0xeb3: 0x2e5d, 0xeb4: 0x2e7d, 0xeb5: 0x2e7d,\n\t0xeb6: 0x2e9d, 0xeb7: 0x2ebd, 0xeb8: 0x2e5d, 0xeb9: 0x2edd, 0xeba: 0x2efd, 0xebb: 0x2edd,\n\t0xebc: 0x2e5d, 0xebd: 0x2f1d, 0xebe: 0x2f3d, 0xebf: 0x2f5d,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x2f7d, 0xec1: 0x2f9d, 0xec2: 0x2cfd, 0xec3: 0x2cdd, 0xec4: 0x2fbd, 0xec5: 0x2fdd,\n\t0xec6: 0x2ffd, 0xec7: 0x301d, 0xec8: 0x303d, 0xec9: 0x305d, 0xeca: 0x307d, 0xecb: 0x309d,\n\t0xecc: 0x30bd, 0xecd: 0x30dd, 0xece: 0x30fd, 0xecf: 0x0040, 0xed0: 0x0018, 0xed1: 0x0018,\n\t0xed2: 0x311d, 0xed3: 0x313d, 0xed4: 0x315d, 0xed5: 0x317d, 0xed6: 0x319d, 0xed7: 0x31bd,\n\t0xed8: 0x31dd, 0xed9: 0x31fd, 0xeda: 0x321d, 0xedb: 0x323d, 0xedc: 0x315d, 0xedd: 0x325d,\n\t0xede: 0x327d, 0xedf: 0x329d, 0xee0: 0x0008, 0xee1: 0x0008, 0xee2: 0x0008, 0xee3: 0x0008,\n\t0xee4: 0x0008, 0xee5: 0x0008, 0xee6: 0x0008, 0xee7: 0x0008, 0xee8: 0x0008, 0xee9: 0x0008,\n\t0xeea: 0x0008, 0xeeb: 0x0008, 0xeec: 0x0008, 0xeed: 0x0008, 0xeee: 0x0008, 0xeef: 0x0008,\n\t0xef0: 0x0008, 0xef1: 0x0008, 0xef2: 0x0008, 0xef3: 0x0008, 0xef4: 0x0008, 0xef5: 0x0008,\n\t0xef6: 0x0008, 0xef7: 0x0008, 0xef8: 0x0008, 0xef9: 0x0008, 0xefa: 0x0008, 0xefb: 0x0040,\n\t0xefc: 0x0040, 0xefd: 0x0040, 0xefe: 0x0040, 0xeff: 0x0040,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x36a2, 0xf01: 0x36d2, 0xf02: 0x3702, 0xf03: 0x3732, 0xf04: 0x32bd, 0xf05: 0x32dd,\n\t0xf06: 0x32fd, 0xf07: 0x331d, 0xf08: 0x0018, 0xf09: 0x0018, 0xf0a: 0x0018, 0xf0b: 0x0018,\n\t0xf0c: 0x0018, 0xf0d: 0x0018, 0xf0e: 0x0018, 0xf0f: 0x0018, 0xf10: 0x333d, 0xf11: 0x3761,\n\t0xf12: 0x3779, 0xf13: 0x3791, 0xf14: 0x37a9, 0xf15: 0x37c1, 0xf16: 0x37d9, 0xf17: 0x37f1,\n\t0xf18: 0x3809, 0xf19: 0x3821, 0xf1a: 0x3839, 0xf1b: 0x3851, 0xf1c: 0x3869, 0xf1d: 0x3881,\n\t0xf1e: 0x3899, 0xf1f: 0x38b1, 0xf20: 0x335d, 0xf21: 0x337d, 0xf22: 0x339d, 0xf23: 0x33bd,\n\t0xf24: 0x33dd, 0xf25: 0x33dd, 0xf26: 0x33fd, 0xf27: 0x341d, 0xf28: 0x343d, 0xf29: 0x345d,\n\t0xf2a: 0x347d, 0xf2b: 0x349d, 0xf2c: 0x34bd, 0xf2d: 0x34dd, 0xf2e: 0x34fd, 0xf2f: 0x351d,\n\t0xf30: 0x353d, 0xf31: 0x355d, 0xf32: 0x357d, 0xf33: 0x359d, 0xf34: 0x35bd, 0xf35: 0x35dd,\n\t0xf36: 0x35fd, 0xf37: 0x361d, 0xf38: 0x363d, 0xf39: 0x365d, 0xf3a: 0x367d, 0xf3b: 0x369d,\n\t0xf3c: 0x38c9, 0xf3d: 0x3901, 0xf3e: 0x36bd, 0xf3f: 0x0018,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x36dd, 0xf41: 0x36fd, 0xf42: 0x371d, 0xf43: 0x373d, 0xf44: 0x375d, 0xf45: 0x377d,\n\t0xf46: 0x379d, 0xf47: 0x37bd, 0xf48: 0x37dd, 0xf49: 0x37fd, 0xf4a: 0x381d, 0xf4b: 0x383d,\n\t0xf4c: 0x385d, 0xf4d: 0x387d, 0xf4e: 0x389d, 0xf4f: 0x38bd, 0xf50: 0x38dd, 0xf51: 0x38fd,\n\t0xf52: 0x391d, 0xf53: 0x393d, 0xf54: 0x395d, 0xf55: 0x397d, 0xf56: 0x399d, 0xf57: 0x39bd,\n\t0xf58: 0x39dd, 0xf59: 0x39fd, 0xf5a: 0x3a1d, 0xf5b: 0x3a3d, 0xf5c: 0x3a5d, 0xf5d: 0x3a7d,\n\t0xf5e: 0x3a9d, 0xf5f: 0x3abd, 0xf60: 0x3add, 0xf61: 0x3afd, 0xf62: 0x3b1d, 0xf63: 0x3b3d,\n\t0xf64: 0x3b5d, 0xf65: 0x3b7d, 0xf66: 0x127d, 0xf67: 0x3b9d, 0xf68: 0x3bbd, 0xf69: 0x3bdd,\n\t0xf6a: 0x3bfd, 0xf6b: 0x3c1d, 0xf6c: 0x3c3d, 0xf6d: 0x3c5d, 0xf6e: 0x239d, 0xf6f: 0x3c7d,\n\t0xf70: 0x3c9d, 0xf71: 0x3939, 0xf72: 0x3951, 0xf73: 0x3969, 0xf74: 0x3981, 0xf75: 0x3999,\n\t0xf76: 0x39b1, 0xf77: 0x39c9, 0xf78: 0x39e1, 0xf79: 0x39f9, 0xf7a: 0x3a11, 0xf7b: 0x3a29,\n\t0xf7c: 0x3a41, 0xf7d: 0x3a59, 0xf7e: 0x3a71, 0xf7f: 0x3a89,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x3aa1, 0xf81: 0x3ac9, 0xf82: 0x3af1, 0xf83: 0x3b19, 0xf84: 0x3b41, 0xf85: 0x3b69,\n\t0xf86: 0x3b91, 0xf87: 0x3bb9, 0xf88: 0x3be1, 0xf89: 0x3c09, 0xf8a: 0x3c39, 0xf8b: 0x3c69,\n\t0xf8c: 0x3c99, 0xf8d: 0x3cbd, 0xf8e: 0x3cb1, 0xf8f: 0x3cdd, 0xf90: 0x3cfd, 0xf91: 0x3d15,\n\t0xf92: 0x3d2d, 0xf93: 0x3d45, 0xf94: 0x3d5d, 0xf95: 0x3d5d, 0xf96: 0x3d45, 0xf97: 0x3d75,\n\t0xf98: 0x07bd, 0xf99: 0x3d8d, 0xf9a: 0x3da5, 0xf9b: 0x3dbd, 0xf9c: 0x3dd5, 0xf9d: 0x3ded,\n\t0xf9e: 0x3e05, 0xf9f: 0x3e1d, 0xfa0: 0x3e35, 0xfa1: 0x3e4d, 0xfa2: 0x3e65, 0xfa3: 0x3e7d,\n\t0xfa4: 0x3e95, 0xfa5: 0x3e95, 0xfa6: 0x3ead, 0xfa7: 0x3ead, 0xfa8: 0x3ec5, 0xfa9: 0x3ec5,\n\t0xfaa: 0x3edd, 0xfab: 0x3ef5, 0xfac: 0x3f0d, 0xfad: 0x3f25, 0xfae: 0x3f3d, 0xfaf: 0x3f3d,\n\t0xfb0: 0x3f55, 0xfb1: 0x3f55, 0xfb2: 0x3f55, 0xfb3: 0x3f6d, 0xfb4: 0x3f85, 0xfb5: 0x3f9d,\n\t0xfb6: 0x3fb5, 0xfb7: 0x3f9d, 0xfb8: 0x3fcd, 0xfb9: 0x3fe5, 0xfba: 0x3f6d, 0xfbb: 0x3ffd,\n\t0xfbc: 0x4015, 0xfbd: 0x4015, 0xfbe: 0x4015, 0xfbf: 0x0040,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x3cc9, 0xfc1: 0x3d31, 0xfc2: 0x3d99, 0xfc3: 0x3e01, 0xfc4: 0x3e51, 0xfc5: 0x3eb9,\n\t0xfc6: 0x3f09, 0xfc7: 0x3f59, 0xfc8: 0x3fd9, 0xfc9: 0x4041, 0xfca: 0x4091, 0xfcb: 0x40e1,\n\t0xfcc: 0x4131, 0xfcd: 0x4199, 0xfce: 0x4201, 0xfcf: 0x4251, 0xfd0: 0x42a1, 0xfd1: 0x42d9,\n\t0xfd2: 0x4329, 0xfd3: 0x4391, 0xfd4: 0x43f9, 0xfd5: 0x4431, 0xfd6: 0x44b1, 0xfd7: 0x4549,\n\t0xfd8: 0x45c9, 0xfd9: 0x4619, 0xfda: 0x4699, 0xfdb: 0x4719, 0xfdc: 0x4781, 0xfdd: 0x47d1,\n\t0xfde: 0x4821, 0xfdf: 0x4871, 0xfe0: 0x48d9, 0xfe1: 0x4959, 0xfe2: 0x49c1, 0xfe3: 0x4a11,\n\t0xfe4: 0x4a61, 0xfe5: 0x4ab1, 0xfe6: 0x4ae9, 0xfe7: 0x4b21, 0xfe8: 0x4b59, 0xfe9: 0x4b91,\n\t0xfea: 0x4be1, 0xfeb: 0x4c31, 0xfec: 0x4cb1, 0xfed: 0x4d01, 0xfee: 0x4d69, 0xfef: 0x4de9,\n\t0xff0: 0x4e39, 0xff1: 0x4e71, 0xff2: 0x4ea9, 0xff3: 0x4f29, 0xff4: 0x4f91, 0xff5: 0x5011,\n\t0xff6: 0x5061, 0xff7: 0x50e1, 0xff8: 0x5119, 0xff9: 0x5169, 0xffa: 0x51b9, 0xffb: 0x5209,\n\t0xffc: 0x5259, 0xffd: 0x52a9, 0xffe: 0x5311, 0xfff: 0x5361,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x5399, 0x1001: 0x53e9, 0x1002: 0x5439, 0x1003: 0x5489, 0x1004: 0x54f1, 0x1005: 0x5541,\n\t0x1006: 0x5591, 0x1007: 0x55e1, 0x1008: 0x5661, 0x1009: 0x56c9, 0x100a: 0x5701, 0x100b: 0x5781,\n\t0x100c: 0x57b9, 0x100d: 0x5821, 0x100e: 0x5889, 0x100f: 0x58d9, 0x1010: 0x5929, 0x1011: 0x5979,\n\t0x1012: 0x59e1, 0x1013: 0x5a19, 0x1014: 0x5a69, 0x1015: 0x5ad1, 0x1016: 0x5b09, 0x1017: 0x5b89,\n\t0x1018: 0x5bd9, 0x1019: 0x5c01, 0x101a: 0x5c29, 0x101b: 0x5c51, 0x101c: 0x5c79, 0x101d: 0x5ca1,\n\t0x101e: 0x5cc9, 0x101f: 0x5cf1, 0x1020: 0x5d19, 0x1021: 0x5d41, 0x1022: 0x5d69, 0x1023: 0x5d99,\n\t0x1024: 0x5dc9, 0x1025: 0x5df9, 0x1026: 0x5e29, 0x1027: 0x5e59, 0x1028: 0x5e89, 0x1029: 0x5eb9,\n\t0x102a: 0x5ee9, 0x102b: 0x5f19, 0x102c: 0x5f49, 0x102d: 0x5f79, 0x102e: 0x5fa9, 0x102f: 0x5fd9,\n\t0x1030: 0x6009, 0x1031: 0x402d, 0x1032: 0x6039, 0x1033: 0x6051, 0x1034: 0x404d, 0x1035: 0x6069,\n\t0x1036: 0x6081, 0x1037: 0x6099, 0x1038: 0x406d, 0x1039: 0x406d, 0x103a: 0x60b1, 0x103b: 0x60c9,\n\t0x103c: 0x6101, 0x103d: 0x6139, 0x103e: 0x6171, 0x103f: 0x61a9,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x6211, 0x1041: 0x6229, 0x1042: 0x408d, 0x1043: 0x6241, 0x1044: 0x6259, 0x1045: 0x6271,\n\t0x1046: 0x6289, 0x1047: 0x62a1, 0x1048: 0x40ad, 0x1049: 0x62b9, 0x104a: 0x62e1, 0x104b: 0x62f9,\n\t0x104c: 0x40cd, 0x104d: 0x40cd, 0x104e: 0x6311, 0x104f: 0x6329, 0x1050: 0x6341, 0x1051: 0x40ed,\n\t0x1052: 0x410d, 0x1053: 0x412d, 0x1054: 0x414d, 0x1055: 0x416d, 0x1056: 0x6359, 0x1057: 0x6371,\n\t0x1058: 0x6389, 0x1059: 0x63a1, 0x105a: 0x63b9, 0x105b: 0x418d, 0x105c: 0x63d1, 0x105d: 0x63e9,\n\t0x105e: 0x6401, 0x105f: 0x41ad, 0x1060: 0x41cd, 0x1061: 0x6419, 0x1062: 0x41ed, 0x1063: 0x420d,\n\t0x1064: 0x422d, 0x1065: 0x6431, 0x1066: 0x424d, 0x1067: 0x6449, 0x1068: 0x6479, 0x1069: 0x6211,\n\t0x106a: 0x426d, 0x106b: 0x428d, 0x106c: 0x42ad, 0x106d: 0x42cd, 0x106e: 0x64b1, 0x106f: 0x64f1,\n\t0x1070: 0x6539, 0x1071: 0x6551, 0x1072: 0x42ed, 0x1073: 0x6569, 0x1074: 0x6581, 0x1075: 0x6599,\n\t0x1076: 0x430d, 0x1077: 0x65b1, 0x1078: 0x65c9, 0x1079: 0x65b1, 0x107a: 0x65e1, 0x107b: 0x65f9,\n\t0x107c: 0x432d, 0x107d: 0x6611, 0x107e: 0x6629, 0x107f: 0x6611,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x434d, 0x1081: 0x436d, 0x1082: 0x0040, 0x1083: 0x6641, 0x1084: 0x6659, 0x1085: 0x6671,\n\t0x1086: 0x6689, 0x1087: 0x0040, 0x1088: 0x66c1, 0x1089: 0x66d9, 0x108a: 0x66f1, 0x108b: 0x6709,\n\t0x108c: 0x6721, 0x108d: 0x6739, 0x108e: 0x6401, 0x108f: 0x6751, 0x1090: 0x6769, 0x1091: 0x6781,\n\t0x1092: 0x438d, 0x1093: 0x6799, 0x1094: 0x6289, 0x1095: 0x43ad, 0x1096: 0x43cd, 0x1097: 0x67b1,\n\t0x1098: 0x0040, 0x1099: 0x43ed, 0x109a: 0x67c9, 0x109b: 0x67e1, 0x109c: 0x67f9, 0x109d: 0x6811,\n\t0x109e: 0x6829, 0x109f: 0x6859, 0x10a0: 0x6889, 0x10a1: 0x68b1, 0x10a2: 0x68d9, 0x10a3: 0x6901,\n\t0x10a4: 0x6929, 0x10a5: 0x6951, 0x10a6: 0x6979, 0x10a7: 0x69a1, 0x10a8: 0x69c9, 0x10a9: 0x69f1,\n\t0x10aa: 0x6a21, 0x10ab: 0x6a51, 0x10ac: 0x6a81, 0x10ad: 0x6ab1, 0x10ae: 0x6ae1, 0x10af: 0x6b11,\n\t0x10b0: 0x6b41, 0x10b1: 0x6b71, 0x10b2: 0x6ba1, 0x10b3: 0x6bd1, 0x10b4: 0x6c01, 0x10b5: 0x6c31,\n\t0x10b6: 0x6c61, 0x10b7: 0x6c91, 0x10b8: 0x6cc1, 0x10b9: 0x6cf1, 0x10ba: 0x6d21, 0x10bb: 0x6d51,\n\t0x10bc: 0x6d81, 0x10bd: 0x6db1, 0x10be: 0x6de1, 0x10bf: 0x440d,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0xe00d, 0x10c1: 0x0008, 0x10c2: 0xe00d, 0x10c3: 0x0008, 0x10c4: 0xe00d, 0x10c5: 0x0008,\n\t0x10c6: 0xe00d, 0x10c7: 0x0008, 0x10c8: 0xe00d, 0x10c9: 0x0008, 0x10ca: 0xe00d, 0x10cb: 0x0008,\n\t0x10cc: 0xe00d, 0x10cd: 0x0008, 0x10ce: 0xe00d, 0x10cf: 0x0008, 0x10d0: 0xe00d, 0x10d1: 0x0008,\n\t0x10d2: 0xe00d, 0x10d3: 0x0008, 0x10d4: 0xe00d, 0x10d5: 0x0008, 0x10d6: 0xe00d, 0x10d7: 0x0008,\n\t0x10d8: 0xe00d, 0x10d9: 0x0008, 0x10da: 0xe00d, 0x10db: 0x0008, 0x10dc: 0xe00d, 0x10dd: 0x0008,\n\t0x10de: 0xe00d, 0x10df: 0x0008, 0x10e0: 0xe00d, 0x10e1: 0x0008, 0x10e2: 0xe00d, 0x10e3: 0x0008,\n\t0x10e4: 0xe00d, 0x10e5: 0x0008, 0x10e6: 0xe00d, 0x10e7: 0x0008, 0x10e8: 0xe00d, 0x10e9: 0x0008,\n\t0x10ea: 0xe00d, 0x10eb: 0x0008, 0x10ec: 0xe00d, 0x10ed: 0x0008, 0x10ee: 0x0008, 0x10ef: 0x3308,\n\t0x10f0: 0x3318, 0x10f1: 0x3318, 0x10f2: 0x3318, 0x10f3: 0x0018, 0x10f4: 0x3308, 0x10f5: 0x3308,\n\t0x10f6: 0x3308, 0x10f7: 0x3308, 0x10f8: 0x3308, 0x10f9: 0x3308, 0x10fa: 0x3308, 0x10fb: 0x3308,\n\t0x10fc: 0x3308, 0x10fd: 0x3308, 0x10fe: 0x0018, 0x10ff: 0x0008,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008,\n\t0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008,\n\t0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008,\n\t0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008,\n\t0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0x0ea1, 0x111d: 0x6e11,\n\t0x111e: 0x3308, 0x111f: 0x3308, 0x1120: 0x0008, 0x1121: 0x0008, 0x1122: 0x0008, 0x1123: 0x0008,\n\t0x1124: 0x0008, 0x1125: 0x0008, 0x1126: 0x0008, 0x1127: 0x0008, 0x1128: 0x0008, 0x1129: 0x0008,\n\t0x112a: 0x0008, 0x112b: 0x0008, 0x112c: 0x0008, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x0008,\n\t0x1130: 0x0008, 0x1131: 0x0008, 0x1132: 0x0008, 0x1133: 0x0008, 0x1134: 0x0008, 0x1135: 0x0008,\n\t0x1136: 0x0008, 0x1137: 0x0008, 0x1138: 0x0008, 0x1139: 0x0008, 0x113a: 0x0008, 0x113b: 0x0008,\n\t0x113c: 0x0008, 0x113d: 0x0008, 0x113e: 0x0008, 0x113f: 0x0008,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0x0018, 0x1141: 0x0018, 0x1142: 0x0018, 0x1143: 0x0018, 0x1144: 0x0018, 0x1145: 0x0018,\n\t0x1146: 0x0018, 0x1147: 0x0018, 0x1148: 0x0018, 0x1149: 0x0018, 0x114a: 0x0018, 0x114b: 0x0018,\n\t0x114c: 0x0018, 0x114d: 0x0018, 0x114e: 0x0018, 0x114f: 0x0018, 0x1150: 0x0018, 0x1151: 0x0018,\n\t0x1152: 0x0018, 0x1153: 0x0018, 0x1154: 0x0018, 0x1155: 0x0018, 0x1156: 0x0018, 0x1157: 0x0008,\n\t0x1158: 0x0008, 0x1159: 0x0008, 0x115a: 0x0008, 0x115b: 0x0008, 0x115c: 0x0008, 0x115d: 0x0008,\n\t0x115e: 0x0008, 0x115f: 0x0008, 0x1160: 0x0018, 0x1161: 0x0018, 0x1162: 0xe00d, 0x1163: 0x0008,\n\t0x1164: 0xe00d, 0x1165: 0x0008, 0x1166: 0xe00d, 0x1167: 0x0008, 0x1168: 0xe00d, 0x1169: 0x0008,\n\t0x116a: 0xe00d, 0x116b: 0x0008, 0x116c: 0xe00d, 0x116d: 0x0008, 0x116e: 0xe00d, 0x116f: 0x0008,\n\t0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0xe00d, 0x1173: 0x0008, 0x1174: 0xe00d, 0x1175: 0x0008,\n\t0x1176: 0xe00d, 0x1177: 0x0008, 0x1178: 0xe00d, 0x1179: 0x0008, 0x117a: 0xe00d, 0x117b: 0x0008,\n\t0x117c: 0xe00d, 0x117d: 0x0008, 0x117e: 0xe00d, 0x117f: 0x0008,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0xe00d, 0x1181: 0x0008, 0x1182: 0xe00d, 0x1183: 0x0008, 0x1184: 0xe00d, 0x1185: 0x0008,\n\t0x1186: 0xe00d, 0x1187: 0x0008, 0x1188: 0xe00d, 0x1189: 0x0008, 0x118a: 0xe00d, 0x118b: 0x0008,\n\t0x118c: 0xe00d, 0x118d: 0x0008, 0x118e: 0xe00d, 0x118f: 0x0008, 0x1190: 0xe00d, 0x1191: 0x0008,\n\t0x1192: 0xe00d, 0x1193: 0x0008, 0x1194: 0xe00d, 0x1195: 0x0008, 0x1196: 0xe00d, 0x1197: 0x0008,\n\t0x1198: 0xe00d, 0x1199: 0x0008, 0x119a: 0xe00d, 0x119b: 0x0008, 0x119c: 0xe00d, 0x119d: 0x0008,\n\t0x119e: 0xe00d, 0x119f: 0x0008, 0x11a0: 0xe00d, 0x11a1: 0x0008, 0x11a2: 0xe00d, 0x11a3: 0x0008,\n\t0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008,\n\t0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008,\n\t0x11b0: 0xe0fd, 0x11b1: 0x0008, 0x11b2: 0x0008, 0x11b3: 0x0008, 0x11b4: 0x0008, 0x11b5: 0x0008,\n\t0x11b6: 0x0008, 0x11b7: 0x0008, 0x11b8: 0x0008, 0x11b9: 0xe01d, 0x11ba: 0x0008, 0x11bb: 0xe03d,\n\t0x11bc: 0x0008, 0x11bd: 0x442d, 0x11be: 0xe00d, 0x11bf: 0x0008,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008,\n\t0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0x0008, 0x11c9: 0x0018, 0x11ca: 0x0018, 0x11cb: 0xe03d,\n\t0x11cc: 0x0008, 0x11cd: 0x11d9, 0x11ce: 0x0008, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008,\n\t0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0x0008, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008,\n\t0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008,\n\t0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008,\n\t0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008,\n\t0x11ea: 0x6e29, 0x11eb: 0x1029, 0x11ec: 0x11c1, 0x11ed: 0x6e41, 0x11ee: 0x1221, 0x11ef: 0x0040,\n\t0x11f0: 0x6e59, 0x11f1: 0x6e71, 0x11f2: 0x1239, 0x11f3: 0x444d, 0x11f4: 0xe00d, 0x11f5: 0x0008,\n\t0x11f6: 0xe00d, 0x11f7: 0x0008, 0x11f8: 0x0040, 0x11f9: 0x0040, 0x11fa: 0x0040, 0x11fb: 0x0040,\n\t0x11fc: 0x0040, 0x11fd: 0x0040, 0x11fe: 0x0040, 0x11ff: 0x0040,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x64d5, 0x1201: 0x64f5, 0x1202: 0x6515, 0x1203: 0x6535, 0x1204: 0x6555, 0x1205: 0x6575,\n\t0x1206: 0x6595, 0x1207: 0x65b5, 0x1208: 0x65d5, 0x1209: 0x65f5, 0x120a: 0x6615, 0x120b: 0x6635,\n\t0x120c: 0x6655, 0x120d: 0x6675, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0x6695, 0x1211: 0x0008,\n\t0x1212: 0x66b5, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x66d5, 0x1216: 0x66f5, 0x1217: 0x6715,\n\t0x1218: 0x6735, 0x1219: 0x6755, 0x121a: 0x6775, 0x121b: 0x6795, 0x121c: 0x67b5, 0x121d: 0x67d5,\n\t0x121e: 0x67f5, 0x121f: 0x0008, 0x1220: 0x6815, 0x1221: 0x0008, 0x1222: 0x6835, 0x1223: 0x0008,\n\t0x1224: 0x0008, 0x1225: 0x6855, 0x1226: 0x6875, 0x1227: 0x0008, 0x1228: 0x0008, 0x1229: 0x0008,\n\t0x122a: 0x6895, 0x122b: 0x68b5, 0x122c: 0x68d5, 0x122d: 0x68f5, 0x122e: 0x6915, 0x122f: 0x6935,\n\t0x1230: 0x6955, 0x1231: 0x6975, 0x1232: 0x6995, 0x1233: 0x69b5, 0x1234: 0x69d5, 0x1235: 0x69f5,\n\t0x1236: 0x6a15, 0x1237: 0x6a35, 0x1238: 0x6a55, 0x1239: 0x6a75, 0x123a: 0x6a95, 0x123b: 0x6ab5,\n\t0x123c: 0x6ad5, 0x123d: 0x6af5, 0x123e: 0x6b15, 0x123f: 0x6b35,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x7a95, 0x1241: 0x7ab5, 0x1242: 0x7ad5, 0x1243: 0x7af5, 0x1244: 0x7b15, 0x1245: 0x7b35,\n\t0x1246: 0x7b55, 0x1247: 0x7b75, 0x1248: 0x7b95, 0x1249: 0x7bb5, 0x124a: 0x7bd5, 0x124b: 0x7bf5,\n\t0x124c: 0x7c15, 0x124d: 0x7c35, 0x124e: 0x7c55, 0x124f: 0x6ec9, 0x1250: 0x6ef1, 0x1251: 0x6f19,\n\t0x1252: 0x7c75, 0x1253: 0x7c95, 0x1254: 0x7cb5, 0x1255: 0x6f41, 0x1256: 0x6f69, 0x1257: 0x6f91,\n\t0x1258: 0x7cd5, 0x1259: 0x7cf5, 0x125a: 0x0040, 0x125b: 0x0040, 0x125c: 0x0040, 0x125d: 0x0040,\n\t0x125e: 0x0040, 0x125f: 0x0040, 0x1260: 0x0040, 0x1261: 0x0040, 0x1262: 0x0040, 0x1263: 0x0040,\n\t0x1264: 0x0040, 0x1265: 0x0040, 0x1266: 0x0040, 0x1267: 0x0040, 0x1268: 0x0040, 0x1269: 0x0040,\n\t0x126a: 0x0040, 0x126b: 0x0040, 0x126c: 0x0040, 0x126d: 0x0040, 0x126e: 0x0040, 0x126f: 0x0040,\n\t0x1270: 0x0040, 0x1271: 0x0040, 0x1272: 0x0040, 0x1273: 0x0040, 0x1274: 0x0040, 0x1275: 0x0040,\n\t0x1276: 0x0040, 0x1277: 0x0040, 0x1278: 0x0040, 0x1279: 0x0040, 0x127a: 0x0040, 0x127b: 0x0040,\n\t0x127c: 0x0040, 0x127d: 0x0040, 0x127e: 0x0040, 0x127f: 0x0040,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x6fb9, 0x1281: 0x6fd1, 0x1282: 0x6fe9, 0x1283: 0x7d15, 0x1284: 0x7d35, 0x1285: 0x7001,\n\t0x1286: 0x7001, 0x1287: 0x0040, 0x1288: 0x0040, 0x1289: 0x0040, 0x128a: 0x0040, 0x128b: 0x0040,\n\t0x128c: 0x0040, 0x128d: 0x0040, 0x128e: 0x0040, 0x128f: 0x0040, 0x1290: 0x0040, 0x1291: 0x0040,\n\t0x1292: 0x0040, 0x1293: 0x7019, 0x1294: 0x7041, 0x1295: 0x7069, 0x1296: 0x7091, 0x1297: 0x70b9,\n\t0x1298: 0x0040, 0x1299: 0x0040, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x70e1,\n\t0x129e: 0x3308, 0x129f: 0x7109, 0x12a0: 0x7131, 0x12a1: 0x20a9, 0x12a2: 0x20f1, 0x12a3: 0x7149,\n\t0x12a4: 0x7161, 0x12a5: 0x7179, 0x12a6: 0x7191, 0x12a7: 0x71a9, 0x12a8: 0x71c1, 0x12a9: 0x1fb2,\n\t0x12aa: 0x71d9, 0x12ab: 0x7201, 0x12ac: 0x7229, 0x12ad: 0x7261, 0x12ae: 0x7299, 0x12af: 0x72c1,\n\t0x12b0: 0x72e9, 0x12b1: 0x7311, 0x12b2: 0x7339, 0x12b3: 0x7361, 0x12b4: 0x7389, 0x12b5: 0x73b1,\n\t0x12b6: 0x73d9, 0x12b7: 0x0040, 0x12b8: 0x7401, 0x12b9: 0x7429, 0x12ba: 0x7451, 0x12bb: 0x7479,\n\t0x12bc: 0x74a1, 0x12bd: 0x0040, 0x12be: 0x74c9, 0x12bf: 0x0040,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x74f1, 0x12c1: 0x7519, 0x12c2: 0x0040, 0x12c3: 0x7541, 0x12c4: 0x7569, 0x12c5: 0x0040,\n\t0x12c6: 0x7591, 0x12c7: 0x75b9, 0x12c8: 0x75e1, 0x12c9: 0x7609, 0x12ca: 0x7631, 0x12cb: 0x7659,\n\t0x12cc: 0x7681, 0x12cd: 0x76a9, 0x12ce: 0x76d1, 0x12cf: 0x76f9, 0x12d0: 0x7721, 0x12d1: 0x7721,\n\t0x12d2: 0x7739, 0x12d3: 0x7739, 0x12d4: 0x7739, 0x12d5: 0x7739, 0x12d6: 0x7751, 0x12d7: 0x7751,\n\t0x12d8: 0x7751, 0x12d9: 0x7751, 0x12da: 0x7769, 0x12db: 0x7769, 0x12dc: 0x7769, 0x12dd: 0x7769,\n\t0x12de: 0x7781, 0x12df: 0x7781, 0x12e0: 0x7781, 0x12e1: 0x7781, 0x12e2: 0x7799, 0x12e3: 0x7799,\n\t0x12e4: 0x7799, 0x12e5: 0x7799, 0x12e6: 0x77b1, 0x12e7: 0x77b1, 0x12e8: 0x77b1, 0x12e9: 0x77b1,\n\t0x12ea: 0x77c9, 0x12eb: 0x77c9, 0x12ec: 0x77c9, 0x12ed: 0x77c9, 0x12ee: 0x77e1, 0x12ef: 0x77e1,\n\t0x12f0: 0x77e1, 0x12f1: 0x77e1, 0x12f2: 0x77f9, 0x12f3: 0x77f9, 0x12f4: 0x77f9, 0x12f5: 0x77f9,\n\t0x12f6: 0x7811, 0x12f7: 0x7811, 0x12f8: 0x7811, 0x12f9: 0x7811, 0x12fa: 0x7829, 0x12fb: 0x7829,\n\t0x12fc: 0x7829, 0x12fd: 0x7829, 0x12fe: 0x7841, 0x12ff: 0x7841,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x7841, 0x1301: 0x7841, 0x1302: 0x7859, 0x1303: 0x7859, 0x1304: 0x7871, 0x1305: 0x7871,\n\t0x1306: 0x7889, 0x1307: 0x7889, 0x1308: 0x78a1, 0x1309: 0x78a1, 0x130a: 0x78b9, 0x130b: 0x78b9,\n\t0x130c: 0x78d1, 0x130d: 0x78d1, 0x130e: 0x78e9, 0x130f: 0x78e9, 0x1310: 0x78e9, 0x1311: 0x78e9,\n\t0x1312: 0x7901, 0x1313: 0x7901, 0x1314: 0x7901, 0x1315: 0x7901, 0x1316: 0x7919, 0x1317: 0x7919,\n\t0x1318: 0x7919, 0x1319: 0x7919, 0x131a: 0x7931, 0x131b: 0x7931, 0x131c: 0x7931, 0x131d: 0x7931,\n\t0x131e: 0x7949, 0x131f: 0x7949, 0x1320: 0x7961, 0x1321: 0x7961, 0x1322: 0x7961, 0x1323: 0x7961,\n\t0x1324: 0x7979, 0x1325: 0x7979, 0x1326: 0x7991, 0x1327: 0x7991, 0x1328: 0x7991, 0x1329: 0x7991,\n\t0x132a: 0x79a9, 0x132b: 0x79a9, 0x132c: 0x79a9, 0x132d: 0x79a9, 0x132e: 0x79c1, 0x132f: 0x79c1,\n\t0x1330: 0x79d9, 0x1331: 0x79d9, 0x1332: 0x0818, 0x1333: 0x0818, 0x1334: 0x0818, 0x1335: 0x0818,\n\t0x1336: 0x0818, 0x1337: 0x0818, 0x1338: 0x0818, 0x1339: 0x0818, 0x133a: 0x0818, 0x133b: 0x0818,\n\t0x133c: 0x0818, 0x133d: 0x0818, 0x133e: 0x0818, 0x133f: 0x0818,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x0818, 0x1341: 0x0818, 0x1342: 0x0040, 0x1343: 0x0040, 0x1344: 0x0040, 0x1345: 0x0040,\n\t0x1346: 0x0040, 0x1347: 0x0040, 0x1348: 0x0040, 0x1349: 0x0040, 0x134a: 0x0040, 0x134b: 0x0040,\n\t0x134c: 0x0040, 0x134d: 0x0040, 0x134e: 0x0040, 0x134f: 0x0040, 0x1350: 0x0040, 0x1351: 0x0040,\n\t0x1352: 0x0040, 0x1353: 0x79f1, 0x1354: 0x79f1, 0x1355: 0x79f1, 0x1356: 0x79f1, 0x1357: 0x7a09,\n\t0x1358: 0x7a09, 0x1359: 0x7a21, 0x135a: 0x7a21, 0x135b: 0x7a39, 0x135c: 0x7a39, 0x135d: 0x0479,\n\t0x135e: 0x7a51, 0x135f: 0x7a51, 0x1360: 0x7a69, 0x1361: 0x7a69, 0x1362: 0x7a81, 0x1363: 0x7a81,\n\t0x1364: 0x7a99, 0x1365: 0x7a99, 0x1366: 0x7a99, 0x1367: 0x7a99, 0x1368: 0x7ab1, 0x1369: 0x7ab1,\n\t0x136a: 0x7ac9, 0x136b: 0x7ac9, 0x136c: 0x7af1, 0x136d: 0x7af1, 0x136e: 0x7b19, 0x136f: 0x7b19,\n\t0x1370: 0x7b41, 0x1371: 0x7b41, 0x1372: 0x7b69, 0x1373: 0x7b69, 0x1374: 0x7b91, 0x1375: 0x7b91,\n\t0x1376: 0x7bb9, 0x1377: 0x7bb9, 0x1378: 0x7bb9, 0x1379: 0x7be1, 0x137a: 0x7be1, 0x137b: 0x7be1,\n\t0x137c: 0x7c09, 0x137d: 0x7c09, 0x137e: 0x7c09, 0x137f: 0x7c09,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x85f9, 0x1381: 0x8621, 0x1382: 0x8649, 0x1383: 0x8671, 0x1384: 0x8699, 0x1385: 0x86c1,\n\t0x1386: 0x86e9, 0x1387: 0x8711, 0x1388: 0x8739, 0x1389: 0x8761, 0x138a: 0x8789, 0x138b: 0x87b1,\n\t0x138c: 0x87d9, 0x138d: 0x8801, 0x138e: 0x8829, 0x138f: 0x8851, 0x1390: 0x8879, 0x1391: 0x88a1,\n\t0x1392: 0x88c9, 0x1393: 0x88f1, 0x1394: 0x8919, 0x1395: 0x8941, 0x1396: 0x8969, 0x1397: 0x8991,\n\t0x1398: 0x89b9, 0x1399: 0x89e1, 0x139a: 0x8a09, 0x139b: 0x8a31, 0x139c: 0x8a59, 0x139d: 0x8a81,\n\t0x139e: 0x8aaa, 0x139f: 0x8ada, 0x13a0: 0x8b0a, 0x13a1: 0x8b3a, 0x13a2: 0x8b6a, 0x13a3: 0x8b9a,\n\t0x13a4: 0x8bc9, 0x13a5: 0x8bf1, 0x13a6: 0x7c71, 0x13a7: 0x8c19, 0x13a8: 0x7be1, 0x13a9: 0x7c99,\n\t0x13aa: 0x8c41, 0x13ab: 0x8c69, 0x13ac: 0x7d39, 0x13ad: 0x8c91, 0x13ae: 0x7d61, 0x13af: 0x7d89,\n\t0x13b0: 0x8cb9, 0x13b1: 0x8ce1, 0x13b2: 0x7e29, 0x13b3: 0x8d09, 0x13b4: 0x7e51, 0x13b5: 0x7e79,\n\t0x13b6: 0x8d31, 0x13b7: 0x8d59, 0x13b8: 0x7ec9, 0x13b9: 0x8d81, 0x13ba: 0x7ef1, 0x13bb: 0x7f19,\n\t0x13bc: 0x83a1, 0x13bd: 0x83c9, 0x13be: 0x8441, 0x13bf: 0x8469,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x8491, 0x13c1: 0x8531, 0x13c2: 0x8559, 0x13c3: 0x8581, 0x13c4: 0x85a9, 0x13c5: 0x8649,\n\t0x13c6: 0x8671, 0x13c7: 0x8699, 0x13c8: 0x8da9, 0x13c9: 0x8739, 0x13ca: 0x8dd1, 0x13cb: 0x8df9,\n\t0x13cc: 0x8829, 0x13cd: 0x8e21, 0x13ce: 0x8851, 0x13cf: 0x8879, 0x13d0: 0x8a81, 0x13d1: 0x8e49,\n\t0x13d2: 0x8e71, 0x13d3: 0x89b9, 0x13d4: 0x8e99, 0x13d5: 0x89e1, 0x13d6: 0x8a09, 0x13d7: 0x7c21,\n\t0x13d8: 0x7c49, 0x13d9: 0x8ec1, 0x13da: 0x7c71, 0x13db: 0x8ee9, 0x13dc: 0x7cc1, 0x13dd: 0x7ce9,\n\t0x13de: 0x7d11, 0x13df: 0x7d39, 0x13e0: 0x8f11, 0x13e1: 0x7db1, 0x13e2: 0x7dd9, 0x13e3: 0x7e01,\n\t0x13e4: 0x7e29, 0x13e5: 0x8f39, 0x13e6: 0x7ec9, 0x13e7: 0x7f41, 0x13e8: 0x7f69, 0x13e9: 0x7f91,\n\t0x13ea: 0x7fb9, 0x13eb: 0x7fe1, 0x13ec: 0x8031, 0x13ed: 0x8059, 0x13ee: 0x8081, 0x13ef: 0x80a9,\n\t0x13f0: 0x80d1, 0x13f1: 0x80f9, 0x13f2: 0x8f61, 0x13f3: 0x8121, 0x13f4: 0x8149, 0x13f5: 0x8171,\n\t0x13f6: 0x8199, 0x13f7: 0x81c1, 0x13f8: 0x81e9, 0x13f9: 0x8239, 0x13fa: 0x8261, 0x13fb: 0x8289,\n\t0x13fc: 0x82b1, 0x13fd: 0x82d9, 0x13fe: 0x8301, 0x13ff: 0x8329,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x8351, 0x1401: 0x8379, 0x1402: 0x83f1, 0x1403: 0x8419, 0x1404: 0x84b9, 0x1405: 0x84e1,\n\t0x1406: 0x8509, 0x1407: 0x8531, 0x1408: 0x8559, 0x1409: 0x85d1, 0x140a: 0x85f9, 0x140b: 0x8621,\n\t0x140c: 0x8649, 0x140d: 0x8f89, 0x140e: 0x86c1, 0x140f: 0x86e9, 0x1410: 0x8711, 0x1411: 0x8739,\n\t0x1412: 0x87b1, 0x1413: 0x87d9, 0x1414: 0x8801, 0x1415: 0x8829, 0x1416: 0x8fb1, 0x1417: 0x88a1,\n\t0x1418: 0x88c9, 0x1419: 0x8fd9, 0x141a: 0x8941, 0x141b: 0x8969, 0x141c: 0x8991, 0x141d: 0x89b9,\n\t0x141e: 0x9001, 0x141f: 0x7c71, 0x1420: 0x8ee9, 0x1421: 0x7d39, 0x1422: 0x8f11, 0x1423: 0x7e29,\n\t0x1424: 0x8f39, 0x1425: 0x7ec9, 0x1426: 0x9029, 0x1427: 0x80d1, 0x1428: 0x9051, 0x1429: 0x9079,\n\t0x142a: 0x90a1, 0x142b: 0x8531, 0x142c: 0x8559, 0x142d: 0x8649, 0x142e: 0x8829, 0x142f: 0x8fb1,\n\t0x1430: 0x89b9, 0x1431: 0x9001, 0x1432: 0x90c9, 0x1433: 0x9101, 0x1434: 0x9139, 0x1435: 0x9171,\n\t0x1436: 0x9199, 0x1437: 0x91c1, 0x1438: 0x91e9, 0x1439: 0x9211, 0x143a: 0x9239, 0x143b: 0x9261,\n\t0x143c: 0x9289, 0x143d: 0x92b1, 0x143e: 0x92d9, 0x143f: 0x9301,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x9329, 0x1441: 0x9351, 0x1442: 0x9379, 0x1443: 0x93a1, 0x1444: 0x93c9, 0x1445: 0x93f1,\n\t0x1446: 0x9419, 0x1447: 0x9441, 0x1448: 0x9469, 0x1449: 0x9491, 0x144a: 0x94b9, 0x144b: 0x94e1,\n\t0x144c: 0x9079, 0x144d: 0x9509, 0x144e: 0x9531, 0x144f: 0x9559, 0x1450: 0x9581, 0x1451: 0x9171,\n\t0x1452: 0x9199, 0x1453: 0x91c1, 0x1454: 0x91e9, 0x1455: 0x9211, 0x1456: 0x9239, 0x1457: 0x9261,\n\t0x1458: 0x9289, 0x1459: 0x92b1, 0x145a: 0x92d9, 0x145b: 0x9301, 0x145c: 0x9329, 0x145d: 0x9351,\n\t0x145e: 0x9379, 0x145f: 0x93a1, 0x1460: 0x93c9, 0x1461: 0x93f1, 0x1462: 0x9419, 0x1463: 0x9441,\n\t0x1464: 0x9469, 0x1465: 0x9491, 0x1466: 0x94b9, 0x1467: 0x94e1, 0x1468: 0x9079, 0x1469: 0x9509,\n\t0x146a: 0x9531, 0x146b: 0x9559, 0x146c: 0x9581, 0x146d: 0x9491, 0x146e: 0x94b9, 0x146f: 0x94e1,\n\t0x1470: 0x9079, 0x1471: 0x9051, 0x1472: 0x90a1, 0x1473: 0x8211, 0x1474: 0x8059, 0x1475: 0x8081,\n\t0x1476: 0x80a9, 0x1477: 0x9491, 0x1478: 0x94b9, 0x1479: 0x94e1, 0x147a: 0x8211, 0x147b: 0x8239,\n\t0x147c: 0x95a9, 0x147d: 0x95a9, 0x147e: 0x0018, 0x147f: 0x0018,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x0040, 0x1481: 0x0040, 0x1482: 0x0040, 0x1483: 0x0040, 0x1484: 0x0040, 0x1485: 0x0040,\n\t0x1486: 0x0040, 0x1487: 0x0040, 0x1488: 0x0040, 0x1489: 0x0040, 0x148a: 0x0040, 0x148b: 0x0040,\n\t0x148c: 0x0040, 0x148d: 0x0040, 0x148e: 0x0040, 0x148f: 0x0040, 0x1490: 0x95d1, 0x1491: 0x9609,\n\t0x1492: 0x9609, 0x1493: 0x9641, 0x1494: 0x9679, 0x1495: 0x96b1, 0x1496: 0x96e9, 0x1497: 0x9721,\n\t0x1498: 0x9759, 0x1499: 0x9759, 0x149a: 0x9791, 0x149b: 0x97c9, 0x149c: 0x9801, 0x149d: 0x9839,\n\t0x149e: 0x9871, 0x149f: 0x98a9, 0x14a0: 0x98a9, 0x14a1: 0x98e1, 0x14a2: 0x9919, 0x14a3: 0x9919,\n\t0x14a4: 0x9951, 0x14a5: 0x9951, 0x14a6: 0x9989, 0x14a7: 0x99c1, 0x14a8: 0x99c1, 0x14a9: 0x99f9,\n\t0x14aa: 0x9a31, 0x14ab: 0x9a31, 0x14ac: 0x9a69, 0x14ad: 0x9a69, 0x14ae: 0x9aa1, 0x14af: 0x9ad9,\n\t0x14b0: 0x9ad9, 0x14b1: 0x9b11, 0x14b2: 0x9b11, 0x14b3: 0x9b49, 0x14b4: 0x9b81, 0x14b5: 0x9bb9,\n\t0x14b6: 0x9bf1, 0x14b7: 0x9bf1, 0x14b8: 0x9c29, 0x14b9: 0x9c61, 0x14ba: 0x9c99, 0x14bb: 0x9cd1,\n\t0x14bc: 0x9d09, 0x14bd: 0x9d09, 0x14be: 0x9d41, 0x14bf: 0x9d79,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0xa949, 0x14c1: 0xa981, 0x14c2: 0xa9b9, 0x14c3: 0xa8a1, 0x14c4: 0x9bb9, 0x14c5: 0x9989,\n\t0x14c6: 0xa9f1, 0x14c7: 0xaa29, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040,\n\t0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x0040, 0x14d1: 0x0040,\n\t0x14d2: 0x0040, 0x14d3: 0x0040, 0x14d4: 0x0040, 0x14d5: 0x0040, 0x14d6: 0x0040, 0x14d7: 0x0040,\n\t0x14d8: 0x0040, 0x14d9: 0x0040, 0x14da: 0x0040, 0x14db: 0x0040, 0x14dc: 0x0040, 0x14dd: 0x0040,\n\t0x14de: 0x0040, 0x14df: 0x0040, 0x14e0: 0x0040, 0x14e1: 0x0040, 0x14e2: 0x0040, 0x14e3: 0x0040,\n\t0x14e4: 0x0040, 0x14e5: 0x0040, 0x14e6: 0x0040, 0x14e7: 0x0040, 0x14e8: 0x0040, 0x14e9: 0x0040,\n\t0x14ea: 0x0040, 0x14eb: 0x0040, 0x14ec: 0x0040, 0x14ed: 0x0040, 0x14ee: 0x0040, 0x14ef: 0x0040,\n\t0x14f0: 0xaa61, 0x14f1: 0xaa99, 0x14f2: 0xaad1, 0x14f3: 0xab19, 0x14f4: 0xab61, 0x14f5: 0xaba9,\n\t0x14f6: 0xabf1, 0x14f7: 0xac39, 0x14f8: 0xac81, 0x14f9: 0xacc9, 0x14fa: 0xad02, 0x14fb: 0xae12,\n\t0x14fc: 0xae91, 0x14fd: 0x0018, 0x14fe: 0x0040, 0x14ff: 0x0040,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x33c0, 0x1501: 0x33c0, 0x1502: 0x33c0, 0x1503: 0x33c0, 0x1504: 0x33c0, 0x1505: 0x33c0,\n\t0x1506: 0x33c0, 0x1507: 0x33c0, 0x1508: 0x33c0, 0x1509: 0x33c0, 0x150a: 0x33c0, 0x150b: 0x33c0,\n\t0x150c: 0x33c0, 0x150d: 0x33c0, 0x150e: 0x33c0, 0x150f: 0x33c0, 0x1510: 0xaeda, 0x1511: 0x7d55,\n\t0x1512: 0x0040, 0x1513: 0xaeea, 0x1514: 0x03c2, 0x1515: 0xaefa, 0x1516: 0xaf0a, 0x1517: 0x7d75,\n\t0x1518: 0x7d95, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040,\n\t0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x3308, 0x1521: 0x3308, 0x1522: 0x3308, 0x1523: 0x3308,\n\t0x1524: 0x3308, 0x1525: 0x3308, 0x1526: 0x3308, 0x1527: 0x3308, 0x1528: 0x3308, 0x1529: 0x3308,\n\t0x152a: 0x3308, 0x152b: 0x3308, 0x152c: 0x3308, 0x152d: 0x3308, 0x152e: 0x3308, 0x152f: 0x3308,\n\t0x1530: 0x0040, 0x1531: 0x7db5, 0x1532: 0x7dd5, 0x1533: 0xaf1a, 0x1534: 0xaf1a, 0x1535: 0x1fd2,\n\t0x1536: 0x1fe2, 0x1537: 0xaf2a, 0x1538: 0xaf3a, 0x1539: 0x7df5, 0x153a: 0x7e15, 0x153b: 0x7e35,\n\t0x153c: 0x7df5, 0x153d: 0x7e55, 0x153e: 0x7e75, 0x153f: 0x7e55,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x7e95, 0x1541: 0x7eb5, 0x1542: 0x7ed5, 0x1543: 0x7eb5, 0x1544: 0x7ef5, 0x1545: 0x0018,\n\t0x1546: 0x0018, 0x1547: 0xaf4a, 0x1548: 0xaf5a, 0x1549: 0x7f16, 0x154a: 0x7f36, 0x154b: 0x7f56,\n\t0x154c: 0x7f76, 0x154d: 0xaf1a, 0x154e: 0xaf1a, 0x154f: 0xaf1a, 0x1550: 0xaeda, 0x1551: 0x7f95,\n\t0x1552: 0x0040, 0x1553: 0x0040, 0x1554: 0x03c2, 0x1555: 0xaeea, 0x1556: 0xaf0a, 0x1557: 0xaefa,\n\t0x1558: 0x7fb5, 0x1559: 0x1fd2, 0x155a: 0x1fe2, 0x155b: 0xaf2a, 0x155c: 0xaf3a, 0x155d: 0x7e95,\n\t0x155e: 0x7ef5, 0x155f: 0xaf6a, 0x1560: 0xaf7a, 0x1561: 0xaf8a, 0x1562: 0x1fb2, 0x1563: 0xaf99,\n\t0x1564: 0xafaa, 0x1565: 0xafba, 0x1566: 0x1fc2, 0x1567: 0x0040, 0x1568: 0xafca, 0x1569: 0xafda,\n\t0x156a: 0xafea, 0x156b: 0xaffa, 0x156c: 0x0040, 0x156d: 0x0040, 0x156e: 0x0040, 0x156f: 0x0040,\n\t0x1570: 0x7fd6, 0x1571: 0xb009, 0x1572: 0x7ff6, 0x1573: 0x0808, 0x1574: 0x8016, 0x1575: 0x0040,\n\t0x1576: 0x8036, 0x1577: 0xb031, 0x1578: 0x8056, 0x1579: 0xb059, 0x157a: 0x8076, 0x157b: 0xb081,\n\t0x157c: 0x8096, 0x157d: 0xb0a9, 0x157e: 0x80b6, 0x157f: 0xb0d1,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0xb0f9, 0x1581: 0xb111, 0x1582: 0xb111, 0x1583: 0xb129, 0x1584: 0xb129, 0x1585: 0xb141,\n\t0x1586: 0xb141, 0x1587: 0xb159, 0x1588: 0xb159, 0x1589: 0xb171, 0x158a: 0xb171, 0x158b: 0xb171,\n\t0x158c: 0xb171, 0x158d: 0xb189, 0x158e: 0xb189, 0x158f: 0xb1a1, 0x1590: 0xb1a1, 0x1591: 0xb1a1,\n\t0x1592: 0xb1a1, 0x1593: 0xb1b9, 0x1594: 0xb1b9, 0x1595: 0xb1d1, 0x1596: 0xb1d1, 0x1597: 0xb1d1,\n\t0x1598: 0xb1d1, 0x1599: 0xb1e9, 0x159a: 0xb1e9, 0x159b: 0xb1e9, 0x159c: 0xb1e9, 0x159d: 0xb201,\n\t0x159e: 0xb201, 0x159f: 0xb201, 0x15a0: 0xb201, 0x15a1: 0xb219, 0x15a2: 0xb219, 0x15a3: 0xb219,\n\t0x15a4: 0xb219, 0x15a5: 0xb231, 0x15a6: 0xb231, 0x15a7: 0xb231, 0x15a8: 0xb231, 0x15a9: 0xb249,\n\t0x15aa: 0xb249, 0x15ab: 0xb261, 0x15ac: 0xb261, 0x15ad: 0xb279, 0x15ae: 0xb279, 0x15af: 0xb291,\n\t0x15b0: 0xb291, 0x15b1: 0xb2a9, 0x15b2: 0xb2a9, 0x15b3: 0xb2a9, 0x15b4: 0xb2a9, 0x15b5: 0xb2c1,\n\t0x15b6: 0xb2c1, 0x15b7: 0xb2c1, 0x15b8: 0xb2c1, 0x15b9: 0xb2d9, 0x15ba: 0xb2d9, 0x15bb: 0xb2d9,\n\t0x15bc: 0xb2d9, 0x15bd: 0xb2f1, 0x15be: 0xb2f1, 0x15bf: 0xb2f1,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0xb2f1, 0x15c1: 0xb309, 0x15c2: 0xb309, 0x15c3: 0xb309, 0x15c4: 0xb309, 0x15c5: 0xb321,\n\t0x15c6: 0xb321, 0x15c7: 0xb321, 0x15c8: 0xb321, 0x15c9: 0xb339, 0x15ca: 0xb339, 0x15cb: 0xb339,\n\t0x15cc: 0xb339, 0x15cd: 0xb351, 0x15ce: 0xb351, 0x15cf: 0xb351, 0x15d0: 0xb351, 0x15d1: 0xb369,\n\t0x15d2: 0xb369, 0x15d3: 0xb369, 0x15d4: 0xb369, 0x15d5: 0xb381, 0x15d6: 0xb381, 0x15d7: 0xb381,\n\t0x15d8: 0xb381, 0x15d9: 0xb399, 0x15da: 0xb399, 0x15db: 0xb399, 0x15dc: 0xb399, 0x15dd: 0xb3b1,\n\t0x15de: 0xb3b1, 0x15df: 0xb3b1, 0x15e0: 0xb3b1, 0x15e1: 0xb3c9, 0x15e2: 0xb3c9, 0x15e3: 0xb3c9,\n\t0x15e4: 0xb3c9, 0x15e5: 0xb3e1, 0x15e6: 0xb3e1, 0x15e7: 0xb3e1, 0x15e8: 0xb3e1, 0x15e9: 0xb3f9,\n\t0x15ea: 0xb3f9, 0x15eb: 0xb3f9, 0x15ec: 0xb3f9, 0x15ed: 0xb411, 0x15ee: 0xb411, 0x15ef: 0x7ab1,\n\t0x15f0: 0x7ab1, 0x15f1: 0xb429, 0x15f2: 0xb429, 0x15f3: 0xb429, 0x15f4: 0xb429, 0x15f5: 0xb441,\n\t0x15f6: 0xb441, 0x15f7: 0xb469, 0x15f8: 0xb469, 0x15f9: 0xb491, 0x15fa: 0xb491, 0x15fb: 0xb4b9,\n\t0x15fc: 0xb4b9, 0x15fd: 0x0040, 0x15fe: 0x0040, 0x15ff: 0x03c0,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x0040, 0x1601: 0xaefa, 0x1602: 0xb4e2, 0x1603: 0xaf6a, 0x1604: 0xafda, 0x1605: 0xafea,\n\t0x1606: 0xaf7a, 0x1607: 0xb4f2, 0x1608: 0x1fd2, 0x1609: 0x1fe2, 0x160a: 0xaf8a, 0x160b: 0x1fb2,\n\t0x160c: 0xaeda, 0x160d: 0xaf99, 0x160e: 0x29d1, 0x160f: 0xb502, 0x1610: 0x1f41, 0x1611: 0x00c9,\n\t0x1612: 0x0069, 0x1613: 0x0079, 0x1614: 0x1f51, 0x1615: 0x1f61, 0x1616: 0x1f71, 0x1617: 0x1f81,\n\t0x1618: 0x1f91, 0x1619: 0x1fa1, 0x161a: 0xaeea, 0x161b: 0x03c2, 0x161c: 0xafaa, 0x161d: 0x1fc2,\n\t0x161e: 0xafba, 0x161f: 0xaf0a, 0x1620: 0xaffa, 0x1621: 0x0039, 0x1622: 0x0ee9, 0x1623: 0x1159,\n\t0x1624: 0x0ef9, 0x1625: 0x0f09, 0x1626: 0x1199, 0x1627: 0x0f31, 0x1628: 0x0249, 0x1629: 0x0f41,\n\t0x162a: 0x0259, 0x162b: 0x0f51, 0x162c: 0x0359, 0x162d: 0x0f61, 0x162e: 0x0f71, 0x162f: 0x00d9,\n\t0x1630: 0x0f99, 0x1631: 0x2039, 0x1632: 0x0269, 0x1633: 0x01d9, 0x1634: 0x0fa9, 0x1635: 0x0fb9,\n\t0x1636: 0x1089, 0x1637: 0x0279, 0x1638: 0x0369, 0x1639: 0x0289, 0x163a: 0x13d1, 0x163b: 0xaf4a,\n\t0x163c: 0xafca, 0x163d: 0xaf5a, 0x163e: 0xb512, 0x163f: 0xaf1a,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x1caa, 0x1641: 0x0039, 0x1642: 0x0ee9, 0x1643: 0x1159, 0x1644: 0x0ef9, 0x1645: 0x0f09,\n\t0x1646: 0x1199, 0x1647: 0x0f31, 0x1648: 0x0249, 0x1649: 0x0f41, 0x164a: 0x0259, 0x164b: 0x0f51,\n\t0x164c: 0x0359, 0x164d: 0x0f61, 0x164e: 0x0f71, 0x164f: 0x00d9, 0x1650: 0x0f99, 0x1651: 0x2039,\n\t0x1652: 0x0269, 0x1653: 0x01d9, 0x1654: 0x0fa9, 0x1655: 0x0fb9, 0x1656: 0x1089, 0x1657: 0x0279,\n\t0x1658: 0x0369, 0x1659: 0x0289, 0x165a: 0x13d1, 0x165b: 0xaf2a, 0x165c: 0xb522, 0x165d: 0xaf3a,\n\t0x165e: 0xb532, 0x165f: 0x80d5, 0x1660: 0x80f5, 0x1661: 0x29d1, 0x1662: 0x8115, 0x1663: 0x8115,\n\t0x1664: 0x8135, 0x1665: 0x8155, 0x1666: 0x8175, 0x1667: 0x8195, 0x1668: 0x81b5, 0x1669: 0x81d5,\n\t0x166a: 0x81f5, 0x166b: 0x8215, 0x166c: 0x8235, 0x166d: 0x8255, 0x166e: 0x8275, 0x166f: 0x8295,\n\t0x1670: 0x82b5, 0x1671: 0x82d5, 0x1672: 0x82f5, 0x1673: 0x8315, 0x1674: 0x8335, 0x1675: 0x8355,\n\t0x1676: 0x8375, 0x1677: 0x8395, 0x1678: 0x83b5, 0x1679: 0x83d5, 0x167a: 0x83f5, 0x167b: 0x8415,\n\t0x167c: 0x81b5, 0x167d: 0x8435, 0x167e: 0x8455, 0x167f: 0x8215,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x8475, 0x1681: 0x8495, 0x1682: 0x84b5, 0x1683: 0x84d5, 0x1684: 0x84f5, 0x1685: 0x8515,\n\t0x1686: 0x8535, 0x1687: 0x8555, 0x1688: 0x84d5, 0x1689: 0x8575, 0x168a: 0x84d5, 0x168b: 0x8595,\n\t0x168c: 0x8595, 0x168d: 0x85b5, 0x168e: 0x85b5, 0x168f: 0x85d5, 0x1690: 0x8515, 0x1691: 0x85f5,\n\t0x1692: 0x8615, 0x1693: 0x85f5, 0x1694: 0x8635, 0x1695: 0x8615, 0x1696: 0x8655, 0x1697: 0x8655,\n\t0x1698: 0x8675, 0x1699: 0x8675, 0x169a: 0x8695, 0x169b: 0x8695, 0x169c: 0x8615, 0x169d: 0x8115,\n\t0x169e: 0x86b5, 0x169f: 0x86d5, 0x16a0: 0x0040, 0x16a1: 0x86f5, 0x16a2: 0x8715, 0x16a3: 0x8735,\n\t0x16a4: 0x8755, 0x16a5: 0x8735, 0x16a6: 0x8775, 0x16a7: 0x8795, 0x16a8: 0x87b5, 0x16a9: 0x87b5,\n\t0x16aa: 0x87d5, 0x16ab: 0x87d5, 0x16ac: 0x87f5, 0x16ad: 0x87f5, 0x16ae: 0x87d5, 0x16af: 0x87d5,\n\t0x16b0: 0x8815, 0x16b1: 0x8835, 0x16b2: 0x8855, 0x16b3: 0x8875, 0x16b4: 0x8895, 0x16b5: 0x88b5,\n\t0x16b6: 0x88b5, 0x16b7: 0x88b5, 0x16b8: 0x88d5, 0x16b9: 0x88d5, 0x16ba: 0x88d5, 0x16bb: 0x88d5,\n\t0x16bc: 0x87b5, 0x16bd: 0x87b5, 0x16be: 0x87b5, 0x16bf: 0x0040,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x0040, 0x16c1: 0x0040, 0x16c2: 0x8715, 0x16c3: 0x86f5, 0x16c4: 0x88f5, 0x16c5: 0x86f5,\n\t0x16c6: 0x8715, 0x16c7: 0x86f5, 0x16c8: 0x0040, 0x16c9: 0x0040, 0x16ca: 0x8915, 0x16cb: 0x8715,\n\t0x16cc: 0x8935, 0x16cd: 0x88f5, 0x16ce: 0x8935, 0x16cf: 0x8715, 0x16d0: 0x0040, 0x16d1: 0x0040,\n\t0x16d2: 0x8955, 0x16d3: 0x8975, 0x16d4: 0x8875, 0x16d5: 0x8935, 0x16d6: 0x88f5, 0x16d7: 0x8935,\n\t0x16d8: 0x0040, 0x16d9: 0x0040, 0x16da: 0x8995, 0x16db: 0x89b5, 0x16dc: 0x8995, 0x16dd: 0x0040,\n\t0x16de: 0x0040, 0x16df: 0x0040, 0x16e0: 0xb541, 0x16e1: 0xb559, 0x16e2: 0xb571, 0x16e3: 0x89d6,\n\t0x16e4: 0xb589, 0x16e5: 0xb5a1, 0x16e6: 0x89f5, 0x16e7: 0x0040, 0x16e8: 0x8a15, 0x16e9: 0x8a35,\n\t0x16ea: 0x8a55, 0x16eb: 0x8a35, 0x16ec: 0x8a75, 0x16ed: 0x8a95, 0x16ee: 0x8ab5, 0x16ef: 0x0040,\n\t0x16f0: 0x0040, 0x16f1: 0x0040, 0x16f2: 0x0040, 0x16f3: 0x0040, 0x16f4: 0x0040, 0x16f5: 0x0040,\n\t0x16f6: 0x0040, 0x16f7: 0x0040, 0x16f8: 0x0040, 0x16f9: 0x0340, 0x16fa: 0x0340, 0x16fb: 0x0340,\n\t0x16fc: 0x0040, 0x16fd: 0x0040, 0x16fe: 0x0040, 0x16ff: 0x0040,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0a08, 0x1701: 0x0a08, 0x1702: 0x0a08, 0x1703: 0x0a08, 0x1704: 0x0a08, 0x1705: 0x0c08,\n\t0x1706: 0x0808, 0x1707: 0x0c08, 0x1708: 0x0818, 0x1709: 0x0c08, 0x170a: 0x0c08, 0x170b: 0x0808,\n\t0x170c: 0x0808, 0x170d: 0x0908, 0x170e: 0x0c08, 0x170f: 0x0c08, 0x1710: 0x0c08, 0x1711: 0x0c08,\n\t0x1712: 0x0c08, 0x1713: 0x0a08, 0x1714: 0x0a08, 0x1715: 0x0a08, 0x1716: 0x0a08, 0x1717: 0x0908,\n\t0x1718: 0x0a08, 0x1719: 0x0a08, 0x171a: 0x0a08, 0x171b: 0x0a08, 0x171c: 0x0a08, 0x171d: 0x0c08,\n\t0x171e: 0x0a08, 0x171f: 0x0a08, 0x1720: 0x0a08, 0x1721: 0x0c08, 0x1722: 0x0808, 0x1723: 0x0808,\n\t0x1724: 0x0c08, 0x1725: 0x3308, 0x1726: 0x3308, 0x1727: 0x0040, 0x1728: 0x0040, 0x1729: 0x0040,\n\t0x172a: 0x0040, 0x172b: 0x0a18, 0x172c: 0x0a18, 0x172d: 0x0a18, 0x172e: 0x0a18, 0x172f: 0x0c18,\n\t0x1730: 0x0818, 0x1731: 0x0818, 0x1732: 0x0818, 0x1733: 0x0818, 0x1734: 0x0818, 0x1735: 0x0818,\n\t0x1736: 0x0818, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0040, 0x173a: 0x0040, 0x173b: 0x0040,\n\t0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x0a08, 0x1741: 0x0c08, 0x1742: 0x0a08, 0x1743: 0x0c08, 0x1744: 0x0c08, 0x1745: 0x0c08,\n\t0x1746: 0x0a08, 0x1747: 0x0a08, 0x1748: 0x0a08, 0x1749: 0x0c08, 0x174a: 0x0a08, 0x174b: 0x0a08,\n\t0x174c: 0x0c08, 0x174d: 0x0a08, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0a08, 0x1751: 0x0c08,\n\t0x1752: 0x0040, 0x1753: 0x0040, 0x1754: 0x0040, 0x1755: 0x0040, 0x1756: 0x0040, 0x1757: 0x0040,\n\t0x1758: 0x0040, 0x1759: 0x0818, 0x175a: 0x0818, 0x175b: 0x0818, 0x175c: 0x0818, 0x175d: 0x0040,\n\t0x175e: 0x0040, 0x175f: 0x0040, 0x1760: 0x0040, 0x1761: 0x0040, 0x1762: 0x0040, 0x1763: 0x0040,\n\t0x1764: 0x0040, 0x1765: 0x0040, 0x1766: 0x0040, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0c18,\n\t0x176a: 0x0c18, 0x176b: 0x0c18, 0x176c: 0x0c18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0818,\n\t0x1770: 0x0040, 0x1771: 0x0040, 0x1772: 0x0040, 0x1773: 0x0040, 0x1774: 0x0040, 0x1775: 0x0040,\n\t0x1776: 0x0040, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040,\n\t0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x3308, 0x1781: 0x3308, 0x1782: 0x3008, 0x1783: 0x3008, 0x1784: 0x0040, 0x1785: 0x0008,\n\t0x1786: 0x0008, 0x1787: 0x0008, 0x1788: 0x0008, 0x1789: 0x0008, 0x178a: 0x0008, 0x178b: 0x0008,\n\t0x178c: 0x0008, 0x178d: 0x0040, 0x178e: 0x0040, 0x178f: 0x0008, 0x1790: 0x0008, 0x1791: 0x0040,\n\t0x1792: 0x0040, 0x1793: 0x0008, 0x1794: 0x0008, 0x1795: 0x0008, 0x1796: 0x0008, 0x1797: 0x0008,\n\t0x1798: 0x0008, 0x1799: 0x0008, 0x179a: 0x0008, 0x179b: 0x0008, 0x179c: 0x0008, 0x179d: 0x0008,\n\t0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x0008, 0x17a3: 0x0008,\n\t0x17a4: 0x0008, 0x17a5: 0x0008, 0x17a6: 0x0008, 0x17a7: 0x0008, 0x17a8: 0x0008, 0x17a9: 0x0040,\n\t0x17aa: 0x0008, 0x17ab: 0x0008, 0x17ac: 0x0008, 0x17ad: 0x0008, 0x17ae: 0x0008, 0x17af: 0x0008,\n\t0x17b0: 0x0008, 0x17b1: 0x0040, 0x17b2: 0x0008, 0x17b3: 0x0008, 0x17b4: 0x0040, 0x17b5: 0x0008,\n\t0x17b6: 0x0008, 0x17b7: 0x0008, 0x17b8: 0x0008, 0x17b9: 0x0008, 0x17ba: 0x0040, 0x17bb: 0x0040,\n\t0x17bc: 0x3308, 0x17bd: 0x0008, 0x17be: 0x3008, 0x17bf: 0x3008,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x3308, 0x17c1: 0x3008, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x3008, 0x17c5: 0x0040,\n\t0x17c6: 0x0040, 0x17c7: 0x3008, 0x17c8: 0x3008, 0x17c9: 0x0040, 0x17ca: 0x0040, 0x17cb: 0x3008,\n\t0x17cc: 0x3008, 0x17cd: 0x3808, 0x17ce: 0x0040, 0x17cf: 0x0040, 0x17d0: 0x0008, 0x17d1: 0x0040,\n\t0x17d2: 0x0040, 0x17d3: 0x0040, 0x17d4: 0x0040, 0x17d5: 0x0040, 0x17d6: 0x0040, 0x17d7: 0x3008,\n\t0x17d8: 0x0040, 0x17d9: 0x0040, 0x17da: 0x0040, 0x17db: 0x0040, 0x17dc: 0x0040, 0x17dd: 0x0008,\n\t0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x3008, 0x17e3: 0x3008,\n\t0x17e4: 0x0040, 0x17e5: 0x0040, 0x17e6: 0x3308, 0x17e7: 0x3308, 0x17e8: 0x3308, 0x17e9: 0x3308,\n\t0x17ea: 0x3308, 0x17eb: 0x3308, 0x17ec: 0x3308, 0x17ed: 0x0040, 0x17ee: 0x0040, 0x17ef: 0x0040,\n\t0x17f0: 0x3308, 0x17f1: 0x3308, 0x17f2: 0x3308, 0x17f3: 0x3308, 0x17f4: 0x3308, 0x17f5: 0x0040,\n\t0x17f6: 0x0040, 0x17f7: 0x0040, 0x17f8: 0x0040, 0x17f9: 0x0040, 0x17fa: 0x0040, 0x17fb: 0x0040,\n\t0x17fc: 0x0040, 0x17fd: 0x0040, 0x17fe: 0x0040, 0x17ff: 0x0040,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x0039, 0x1801: 0x0ee9, 0x1802: 0x1159, 0x1803: 0x0ef9, 0x1804: 0x0f09, 0x1805: 0x1199,\n\t0x1806: 0x0f31, 0x1807: 0x0249, 0x1808: 0x0f41, 0x1809: 0x0259, 0x180a: 0x0f51, 0x180b: 0x0359,\n\t0x180c: 0x0f61, 0x180d: 0x0f71, 0x180e: 0x00d9, 0x180f: 0x0f99, 0x1810: 0x2039, 0x1811: 0x0269,\n\t0x1812: 0x01d9, 0x1813: 0x0fa9, 0x1814: 0x0fb9, 0x1815: 0x1089, 0x1816: 0x0279, 0x1817: 0x0369,\n\t0x1818: 0x0289, 0x1819: 0x13d1, 0x181a: 0x0039, 0x181b: 0x0ee9, 0x181c: 0x1159, 0x181d: 0x0ef9,\n\t0x181e: 0x0f09, 0x181f: 0x1199, 0x1820: 0x0f31, 0x1821: 0x0249, 0x1822: 0x0f41, 0x1823: 0x0259,\n\t0x1824: 0x0f51, 0x1825: 0x0359, 0x1826: 0x0f61, 0x1827: 0x0f71, 0x1828: 0x00d9, 0x1829: 0x0f99,\n\t0x182a: 0x2039, 0x182b: 0x0269, 0x182c: 0x01d9, 0x182d: 0x0fa9, 0x182e: 0x0fb9, 0x182f: 0x1089,\n\t0x1830: 0x0279, 0x1831: 0x0369, 0x1832: 0x0289, 0x1833: 0x13d1, 0x1834: 0x0039, 0x1835: 0x0ee9,\n\t0x1836: 0x1159, 0x1837: 0x0ef9, 0x1838: 0x0f09, 0x1839: 0x1199, 0x183a: 0x0f31, 0x183b: 0x0249,\n\t0x183c: 0x0f41, 0x183d: 0x0259, 0x183e: 0x0f51, 0x183f: 0x0359,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x0f61, 0x1841: 0x0f71, 0x1842: 0x00d9, 0x1843: 0x0f99, 0x1844: 0x2039, 0x1845: 0x0269,\n\t0x1846: 0x01d9, 0x1847: 0x0fa9, 0x1848: 0x0fb9, 0x1849: 0x1089, 0x184a: 0x0279, 0x184b: 0x0369,\n\t0x184c: 0x0289, 0x184d: 0x13d1, 0x184e: 0x0039, 0x184f: 0x0ee9, 0x1850: 0x1159, 0x1851: 0x0ef9,\n\t0x1852: 0x0f09, 0x1853: 0x1199, 0x1854: 0x0f31, 0x1855: 0x0040, 0x1856: 0x0f41, 0x1857: 0x0259,\n\t0x1858: 0x0f51, 0x1859: 0x0359, 0x185a: 0x0f61, 0x185b: 0x0f71, 0x185c: 0x00d9, 0x185d: 0x0f99,\n\t0x185e: 0x2039, 0x185f: 0x0269, 0x1860: 0x01d9, 0x1861: 0x0fa9, 0x1862: 0x0fb9, 0x1863: 0x1089,\n\t0x1864: 0x0279, 0x1865: 0x0369, 0x1866: 0x0289, 0x1867: 0x13d1, 0x1868: 0x0039, 0x1869: 0x0ee9,\n\t0x186a: 0x1159, 0x186b: 0x0ef9, 0x186c: 0x0f09, 0x186d: 0x1199, 0x186e: 0x0f31, 0x186f: 0x0249,\n\t0x1870: 0x0f41, 0x1871: 0x0259, 0x1872: 0x0f51, 0x1873: 0x0359, 0x1874: 0x0f61, 0x1875: 0x0f71,\n\t0x1876: 0x00d9, 0x1877: 0x0f99, 0x1878: 0x2039, 0x1879: 0x0269, 0x187a: 0x01d9, 0x187b: 0x0fa9,\n\t0x187c: 0x0fb9, 0x187d: 0x1089, 0x187e: 0x0279, 0x187f: 0x0369,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x0289, 0x1881: 0x13d1, 0x1882: 0x0039, 0x1883: 0x0ee9, 0x1884: 0x1159, 0x1885: 0x0ef9,\n\t0x1886: 0x0f09, 0x1887: 0x1199, 0x1888: 0x0f31, 0x1889: 0x0249, 0x188a: 0x0f41, 0x188b: 0x0259,\n\t0x188c: 0x0f51, 0x188d: 0x0359, 0x188e: 0x0f61, 0x188f: 0x0f71, 0x1890: 0x00d9, 0x1891: 0x0f99,\n\t0x1892: 0x2039, 0x1893: 0x0269, 0x1894: 0x01d9, 0x1895: 0x0fa9, 0x1896: 0x0fb9, 0x1897: 0x1089,\n\t0x1898: 0x0279, 0x1899: 0x0369, 0x189a: 0x0289, 0x189b: 0x13d1, 0x189c: 0x0039, 0x189d: 0x0040,\n\t0x189e: 0x1159, 0x189f: 0x0ef9, 0x18a0: 0x0040, 0x18a1: 0x0040, 0x18a2: 0x0f31, 0x18a3: 0x0040,\n\t0x18a4: 0x0040, 0x18a5: 0x0259, 0x18a6: 0x0f51, 0x18a7: 0x0040, 0x18a8: 0x0040, 0x18a9: 0x0f71,\n\t0x18aa: 0x00d9, 0x18ab: 0x0f99, 0x18ac: 0x2039, 0x18ad: 0x0040, 0x18ae: 0x01d9, 0x18af: 0x0fa9,\n\t0x18b0: 0x0fb9, 0x18b1: 0x1089, 0x18b2: 0x0279, 0x18b3: 0x0369, 0x18b4: 0x0289, 0x18b5: 0x13d1,\n\t0x18b6: 0x0039, 0x18b7: 0x0ee9, 0x18b8: 0x1159, 0x18b9: 0x0ef9, 0x18ba: 0x0040, 0x18bb: 0x1199,\n\t0x18bc: 0x0040, 0x18bd: 0x0249, 0x18be: 0x0f41, 0x18bf: 0x0259,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x0f51, 0x18c1: 0x0359, 0x18c2: 0x0f61, 0x18c3: 0x0f71, 0x18c4: 0x0040, 0x18c5: 0x0f99,\n\t0x18c6: 0x2039, 0x18c7: 0x0269, 0x18c8: 0x01d9, 0x18c9: 0x0fa9, 0x18ca: 0x0fb9, 0x18cb: 0x1089,\n\t0x18cc: 0x0279, 0x18cd: 0x0369, 0x18ce: 0x0289, 0x18cf: 0x13d1, 0x18d0: 0x0039, 0x18d1: 0x0ee9,\n\t0x18d2: 0x1159, 0x18d3: 0x0ef9, 0x18d4: 0x0f09, 0x18d5: 0x1199, 0x18d6: 0x0f31, 0x18d7: 0x0249,\n\t0x18d8: 0x0f41, 0x18d9: 0x0259, 0x18da: 0x0f51, 0x18db: 0x0359, 0x18dc: 0x0f61, 0x18dd: 0x0f71,\n\t0x18de: 0x00d9, 0x18df: 0x0f99, 0x18e0: 0x2039, 0x18e1: 0x0269, 0x18e2: 0x01d9, 0x18e3: 0x0fa9,\n\t0x18e4: 0x0fb9, 0x18e5: 0x1089, 0x18e6: 0x0279, 0x18e7: 0x0369, 0x18e8: 0x0289, 0x18e9: 0x13d1,\n\t0x18ea: 0x0039, 0x18eb: 0x0ee9, 0x18ec: 0x1159, 0x18ed: 0x0ef9, 0x18ee: 0x0f09, 0x18ef: 0x1199,\n\t0x18f0: 0x0f31, 0x18f1: 0x0249, 0x18f2: 0x0f41, 0x18f3: 0x0259, 0x18f4: 0x0f51, 0x18f5: 0x0359,\n\t0x18f6: 0x0f61, 0x18f7: 0x0f71, 0x18f8: 0x00d9, 0x18f9: 0x0f99, 0x18fa: 0x2039, 0x18fb: 0x0269,\n\t0x18fc: 0x01d9, 0x18fd: 0x0fa9, 0x18fe: 0x0fb9, 0x18ff: 0x1089,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x0279, 0x1901: 0x0369, 0x1902: 0x0289, 0x1903: 0x13d1, 0x1904: 0x0039, 0x1905: 0x0ee9,\n\t0x1906: 0x0040, 0x1907: 0x0ef9, 0x1908: 0x0f09, 0x1909: 0x1199, 0x190a: 0x0f31, 0x190b: 0x0040,\n\t0x190c: 0x0040, 0x190d: 0x0259, 0x190e: 0x0f51, 0x190f: 0x0359, 0x1910: 0x0f61, 0x1911: 0x0f71,\n\t0x1912: 0x00d9, 0x1913: 0x0f99, 0x1914: 0x2039, 0x1915: 0x0040, 0x1916: 0x01d9, 0x1917: 0x0fa9,\n\t0x1918: 0x0fb9, 0x1919: 0x1089, 0x191a: 0x0279, 0x191b: 0x0369, 0x191c: 0x0289, 0x191d: 0x0040,\n\t0x191e: 0x0039, 0x191f: 0x0ee9, 0x1920: 0x1159, 0x1921: 0x0ef9, 0x1922: 0x0f09, 0x1923: 0x1199,\n\t0x1924: 0x0f31, 0x1925: 0x0249, 0x1926: 0x0f41, 0x1927: 0x0259, 0x1928: 0x0f51, 0x1929: 0x0359,\n\t0x192a: 0x0f61, 0x192b: 0x0f71, 0x192c: 0x00d9, 0x192d: 0x0f99, 0x192e: 0x2039, 0x192f: 0x0269,\n\t0x1930: 0x01d9, 0x1931: 0x0fa9, 0x1932: 0x0fb9, 0x1933: 0x1089, 0x1934: 0x0279, 0x1935: 0x0369,\n\t0x1936: 0x0289, 0x1937: 0x13d1, 0x1938: 0x0039, 0x1939: 0x0ee9, 0x193a: 0x0040, 0x193b: 0x0ef9,\n\t0x193c: 0x0f09, 0x193d: 0x1199, 0x193e: 0x0f31, 0x193f: 0x0040,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x0f41, 0x1941: 0x0259, 0x1942: 0x0f51, 0x1943: 0x0359, 0x1944: 0x0f61, 0x1945: 0x0040,\n\t0x1946: 0x00d9, 0x1947: 0x0040, 0x1948: 0x0040, 0x1949: 0x0040, 0x194a: 0x01d9, 0x194b: 0x0fa9,\n\t0x194c: 0x0fb9, 0x194d: 0x1089, 0x194e: 0x0279, 0x194f: 0x0369, 0x1950: 0x0289, 0x1951: 0x0040,\n\t0x1952: 0x0039, 0x1953: 0x0ee9, 0x1954: 0x1159, 0x1955: 0x0ef9, 0x1956: 0x0f09, 0x1957: 0x1199,\n\t0x1958: 0x0f31, 0x1959: 0x0249, 0x195a: 0x0f41, 0x195b: 0x0259, 0x195c: 0x0f51, 0x195d: 0x0359,\n\t0x195e: 0x0f61, 0x195f: 0x0f71, 0x1960: 0x00d9, 0x1961: 0x0f99, 0x1962: 0x2039, 0x1963: 0x0269,\n\t0x1964: 0x01d9, 0x1965: 0x0fa9, 0x1966: 0x0fb9, 0x1967: 0x1089, 0x1968: 0x0279, 0x1969: 0x0369,\n\t0x196a: 0x0289, 0x196b: 0x13d1, 0x196c: 0x0039, 0x196d: 0x0ee9, 0x196e: 0x1159, 0x196f: 0x0ef9,\n\t0x1970: 0x0f09, 0x1971: 0x1199, 0x1972: 0x0f31, 0x1973: 0x0249, 0x1974: 0x0f41, 0x1975: 0x0259,\n\t0x1976: 0x0f51, 0x1977: 0x0359, 0x1978: 0x0f61, 0x1979: 0x0f71, 0x197a: 0x00d9, 0x197b: 0x0f99,\n\t0x197c: 0x2039, 0x197d: 0x0269, 0x197e: 0x01d9, 0x197f: 0x0fa9,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x0fb9, 0x1981: 0x1089, 0x1982: 0x0279, 0x1983: 0x0369, 0x1984: 0x0289, 0x1985: 0x13d1,\n\t0x1986: 0x0039, 0x1987: 0x0ee9, 0x1988: 0x1159, 0x1989: 0x0ef9, 0x198a: 0x0f09, 0x198b: 0x1199,\n\t0x198c: 0x0f31, 0x198d: 0x0249, 0x198e: 0x0f41, 0x198f: 0x0259, 0x1990: 0x0f51, 0x1991: 0x0359,\n\t0x1992: 0x0f61, 0x1993: 0x0f71, 0x1994: 0x00d9, 0x1995: 0x0f99, 0x1996: 0x2039, 0x1997: 0x0269,\n\t0x1998: 0x01d9, 0x1999: 0x0fa9, 0x199a: 0x0fb9, 0x199b: 0x1089, 0x199c: 0x0279, 0x199d: 0x0369,\n\t0x199e: 0x0289, 0x199f: 0x13d1, 0x19a0: 0x0039, 0x19a1: 0x0ee9, 0x19a2: 0x1159, 0x19a3: 0x0ef9,\n\t0x19a4: 0x0f09, 0x19a5: 0x1199, 0x19a6: 0x0f31, 0x19a7: 0x0249, 0x19a8: 0x0f41, 0x19a9: 0x0259,\n\t0x19aa: 0x0f51, 0x19ab: 0x0359, 0x19ac: 0x0f61, 0x19ad: 0x0f71, 0x19ae: 0x00d9, 0x19af: 0x0f99,\n\t0x19b0: 0x2039, 0x19b1: 0x0269, 0x19b2: 0x01d9, 0x19b3: 0x0fa9, 0x19b4: 0x0fb9, 0x19b5: 0x1089,\n\t0x19b6: 0x0279, 0x19b7: 0x0369, 0x19b8: 0x0289, 0x19b9: 0x13d1, 0x19ba: 0x0039, 0x19bb: 0x0ee9,\n\t0x19bc: 0x1159, 0x19bd: 0x0ef9, 0x19be: 0x0f09, 0x19bf: 0x1199,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x0f31, 0x19c1: 0x0249, 0x19c2: 0x0f41, 0x19c3: 0x0259, 0x19c4: 0x0f51, 0x19c5: 0x0359,\n\t0x19c6: 0x0f61, 0x19c7: 0x0f71, 0x19c8: 0x00d9, 0x19c9: 0x0f99, 0x19ca: 0x2039, 0x19cb: 0x0269,\n\t0x19cc: 0x01d9, 0x19cd: 0x0fa9, 0x19ce: 0x0fb9, 0x19cf: 0x1089, 0x19d0: 0x0279, 0x19d1: 0x0369,\n\t0x19d2: 0x0289, 0x19d3: 0x13d1, 0x19d4: 0x0039, 0x19d5: 0x0ee9, 0x19d6: 0x1159, 0x19d7: 0x0ef9,\n\t0x19d8: 0x0f09, 0x19d9: 0x1199, 0x19da: 0x0f31, 0x19db: 0x0249, 0x19dc: 0x0f41, 0x19dd: 0x0259,\n\t0x19de: 0x0f51, 0x19df: 0x0359, 0x19e0: 0x0f61, 0x19e1: 0x0f71, 0x19e2: 0x00d9, 0x19e3: 0x0f99,\n\t0x19e4: 0x2039, 0x19e5: 0x0269, 0x19e6: 0x01d9, 0x19e7: 0x0fa9, 0x19e8: 0x0fb9, 0x19e9: 0x1089,\n\t0x19ea: 0x0279, 0x19eb: 0x0369, 0x19ec: 0x0289, 0x19ed: 0x13d1, 0x19ee: 0x0039, 0x19ef: 0x0ee9,\n\t0x19f0: 0x1159, 0x19f1: 0x0ef9, 0x19f2: 0x0f09, 0x19f3: 0x1199, 0x19f4: 0x0f31, 0x19f5: 0x0249,\n\t0x19f6: 0x0f41, 0x19f7: 0x0259, 0x19f8: 0x0f51, 0x19f9: 0x0359, 0x19fa: 0x0f61, 0x19fb: 0x0f71,\n\t0x19fc: 0x00d9, 0x19fd: 0x0f99, 0x19fe: 0x2039, 0x19ff: 0x0269,\n\t// Block 0x68, offset 0x1a00\n\t0x1a00: 0x01d9, 0x1a01: 0x0fa9, 0x1a02: 0x0fb9, 0x1a03: 0x1089, 0x1a04: 0x0279, 0x1a05: 0x0369,\n\t0x1a06: 0x0289, 0x1a07: 0x13d1, 0x1a08: 0x0039, 0x1a09: 0x0ee9, 0x1a0a: 0x1159, 0x1a0b: 0x0ef9,\n\t0x1a0c: 0x0f09, 0x1a0d: 0x1199, 0x1a0e: 0x0f31, 0x1a0f: 0x0249, 0x1a10: 0x0f41, 0x1a11: 0x0259,\n\t0x1a12: 0x0f51, 0x1a13: 0x0359, 0x1a14: 0x0f61, 0x1a15: 0x0f71, 0x1a16: 0x00d9, 0x1a17: 0x0f99,\n\t0x1a18: 0x2039, 0x1a19: 0x0269, 0x1a1a: 0x01d9, 0x1a1b: 0x0fa9, 0x1a1c: 0x0fb9, 0x1a1d: 0x1089,\n\t0x1a1e: 0x0279, 0x1a1f: 0x0369, 0x1a20: 0x0289, 0x1a21: 0x13d1, 0x1a22: 0x0039, 0x1a23: 0x0ee9,\n\t0x1a24: 0x1159, 0x1a25: 0x0ef9, 0x1a26: 0x0f09, 0x1a27: 0x1199, 0x1a28: 0x0f31, 0x1a29: 0x0249,\n\t0x1a2a: 0x0f41, 0x1a2b: 0x0259, 0x1a2c: 0x0f51, 0x1a2d: 0x0359, 0x1a2e: 0x0f61, 0x1a2f: 0x0f71,\n\t0x1a30: 0x00d9, 0x1a31: 0x0f99, 0x1a32: 0x2039, 0x1a33: 0x0269, 0x1a34: 0x01d9, 0x1a35: 0x0fa9,\n\t0x1a36: 0x0fb9, 0x1a37: 0x1089, 0x1a38: 0x0279, 0x1a39: 0x0369, 0x1a3a: 0x0289, 0x1a3b: 0x13d1,\n\t0x1a3c: 0x0039, 0x1a3d: 0x0ee9, 0x1a3e: 0x1159, 0x1a3f: 0x0ef9,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x0f09, 0x1a41: 0x1199, 0x1a42: 0x0f31, 0x1a43: 0x0249, 0x1a44: 0x0f41, 0x1a45: 0x0259,\n\t0x1a46: 0x0f51, 0x1a47: 0x0359, 0x1a48: 0x0f61, 0x1a49: 0x0f71, 0x1a4a: 0x00d9, 0x1a4b: 0x0f99,\n\t0x1a4c: 0x2039, 0x1a4d: 0x0269, 0x1a4e: 0x01d9, 0x1a4f: 0x0fa9, 0x1a50: 0x0fb9, 0x1a51: 0x1089,\n\t0x1a52: 0x0279, 0x1a53: 0x0369, 0x1a54: 0x0289, 0x1a55: 0x13d1, 0x1a56: 0x0039, 0x1a57: 0x0ee9,\n\t0x1a58: 0x1159, 0x1a59: 0x0ef9, 0x1a5a: 0x0f09, 0x1a5b: 0x1199, 0x1a5c: 0x0f31, 0x1a5d: 0x0249,\n\t0x1a5e: 0x0f41, 0x1a5f: 0x0259, 0x1a60: 0x0f51, 0x1a61: 0x0359, 0x1a62: 0x0f61, 0x1a63: 0x0f71,\n\t0x1a64: 0x00d9, 0x1a65: 0x0f99, 0x1a66: 0x2039, 0x1a67: 0x0269, 0x1a68: 0x01d9, 0x1a69: 0x0fa9,\n\t0x1a6a: 0x0fb9, 0x1a6b: 0x1089, 0x1a6c: 0x0279, 0x1a6d: 0x0369, 0x1a6e: 0x0289, 0x1a6f: 0x13d1,\n\t0x1a70: 0x0039, 0x1a71: 0x0ee9, 0x1a72: 0x1159, 0x1a73: 0x0ef9, 0x1a74: 0x0f09, 0x1a75: 0x1199,\n\t0x1a76: 0x0f31, 0x1a77: 0x0249, 0x1a78: 0x0f41, 0x1a79: 0x0259, 0x1a7a: 0x0f51, 0x1a7b: 0x0359,\n\t0x1a7c: 0x0f61, 0x1a7d: 0x0f71, 0x1a7e: 0x00d9, 0x1a7f: 0x0f99,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x2039, 0x1a81: 0x0269, 0x1a82: 0x01d9, 0x1a83: 0x0fa9, 0x1a84: 0x0fb9, 0x1a85: 0x1089,\n\t0x1a86: 0x0279, 0x1a87: 0x0369, 0x1a88: 0x0289, 0x1a89: 0x13d1, 0x1a8a: 0x0039, 0x1a8b: 0x0ee9,\n\t0x1a8c: 0x1159, 0x1a8d: 0x0ef9, 0x1a8e: 0x0f09, 0x1a8f: 0x1199, 0x1a90: 0x0f31, 0x1a91: 0x0249,\n\t0x1a92: 0x0f41, 0x1a93: 0x0259, 0x1a94: 0x0f51, 0x1a95: 0x0359, 0x1a96: 0x0f61, 0x1a97: 0x0f71,\n\t0x1a98: 0x00d9, 0x1a99: 0x0f99, 0x1a9a: 0x2039, 0x1a9b: 0x0269, 0x1a9c: 0x01d9, 0x1a9d: 0x0fa9,\n\t0x1a9e: 0x0fb9, 0x1a9f: 0x1089, 0x1aa0: 0x0279, 0x1aa1: 0x0369, 0x1aa2: 0x0289, 0x1aa3: 0x13d1,\n\t0x1aa4: 0xba81, 0x1aa5: 0xba99, 0x1aa6: 0x0040, 0x1aa7: 0x0040, 0x1aa8: 0xbab1, 0x1aa9: 0x1099,\n\t0x1aaa: 0x10b1, 0x1aab: 0x10c9, 0x1aac: 0xbac9, 0x1aad: 0xbae1, 0x1aae: 0xbaf9, 0x1aaf: 0x1429,\n\t0x1ab0: 0x1a31, 0x1ab1: 0xbb11, 0x1ab2: 0xbb29, 0x1ab3: 0xbb41, 0x1ab4: 0xbb59, 0x1ab5: 0xbb71,\n\t0x1ab6: 0xbb89, 0x1ab7: 0x2109, 0x1ab8: 0x1111, 0x1ab9: 0x1429, 0x1aba: 0xbba1, 0x1abb: 0xbbb9,\n\t0x1abc: 0xbbd1, 0x1abd: 0x10e1, 0x1abe: 0x10f9, 0x1abf: 0xbbe9,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x2079, 0x1ac1: 0xbc01, 0x1ac2: 0xbab1, 0x1ac3: 0x1099, 0x1ac4: 0x10b1, 0x1ac5: 0x10c9,\n\t0x1ac6: 0xbac9, 0x1ac7: 0xbae1, 0x1ac8: 0xbaf9, 0x1ac9: 0x1429, 0x1aca: 0x1a31, 0x1acb: 0xbb11,\n\t0x1acc: 0xbb29, 0x1acd: 0xbb41, 0x1ace: 0xbb59, 0x1acf: 0xbb71, 0x1ad0: 0xbb89, 0x1ad1: 0x2109,\n\t0x1ad2: 0x1111, 0x1ad3: 0xbba1, 0x1ad4: 0xbba1, 0x1ad5: 0xbbb9, 0x1ad6: 0xbbd1, 0x1ad7: 0x10e1,\n\t0x1ad8: 0x10f9, 0x1ad9: 0xbbe9, 0x1ada: 0x2079, 0x1adb: 0xbc21, 0x1adc: 0xbac9, 0x1add: 0x1429,\n\t0x1ade: 0xbb11, 0x1adf: 0x10e1, 0x1ae0: 0x1111, 0x1ae1: 0x2109, 0x1ae2: 0xbab1, 0x1ae3: 0x1099,\n\t0x1ae4: 0x10b1, 0x1ae5: 0x10c9, 0x1ae6: 0xbac9, 0x1ae7: 0xbae1, 0x1ae8: 0xbaf9, 0x1ae9: 0x1429,\n\t0x1aea: 0x1a31, 0x1aeb: 0xbb11, 0x1aec: 0xbb29, 0x1aed: 0xbb41, 0x1aee: 0xbb59, 0x1aef: 0xbb71,\n\t0x1af0: 0xbb89, 0x1af1: 0x2109, 0x1af2: 0x1111, 0x1af3: 0x1429, 0x1af4: 0xbba1, 0x1af5: 0xbbb9,\n\t0x1af6: 0xbbd1, 0x1af7: 0x10e1, 0x1af8: 0x10f9, 0x1af9: 0xbbe9, 0x1afa: 0x2079, 0x1afb: 0xbc01,\n\t0x1afc: 0xbab1, 0x1afd: 0x1099, 0x1afe: 0x10b1, 0x1aff: 0x10c9,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0xbac9, 0x1b01: 0xbae1, 0x1b02: 0xbaf9, 0x1b03: 0x1429, 0x1b04: 0x1a31, 0x1b05: 0xbb11,\n\t0x1b06: 0xbb29, 0x1b07: 0xbb41, 0x1b08: 0xbb59, 0x1b09: 0xbb71, 0x1b0a: 0xbb89, 0x1b0b: 0x2109,\n\t0x1b0c: 0x1111, 0x1b0d: 0xbba1, 0x1b0e: 0xbba1, 0x1b0f: 0xbbb9, 0x1b10: 0xbbd1, 0x1b11: 0x10e1,\n\t0x1b12: 0x10f9, 0x1b13: 0xbbe9, 0x1b14: 0x2079, 0x1b15: 0xbc21, 0x1b16: 0xbac9, 0x1b17: 0x1429,\n\t0x1b18: 0xbb11, 0x1b19: 0x10e1, 0x1b1a: 0x1111, 0x1b1b: 0x2109, 0x1b1c: 0xbab1, 0x1b1d: 0x1099,\n\t0x1b1e: 0x10b1, 0x1b1f: 0x10c9, 0x1b20: 0xbac9, 0x1b21: 0xbae1, 0x1b22: 0xbaf9, 0x1b23: 0x1429,\n\t0x1b24: 0x1a31, 0x1b25: 0xbb11, 0x1b26: 0xbb29, 0x1b27: 0xbb41, 0x1b28: 0xbb59, 0x1b29: 0xbb71,\n\t0x1b2a: 0xbb89, 0x1b2b: 0x2109, 0x1b2c: 0x1111, 0x1b2d: 0x1429, 0x1b2e: 0xbba1, 0x1b2f: 0xbbb9,\n\t0x1b30: 0xbbd1, 0x1b31: 0x10e1, 0x1b32: 0x10f9, 0x1b33: 0xbbe9, 0x1b34: 0x2079, 0x1b35: 0xbc01,\n\t0x1b36: 0xbab1, 0x1b37: 0x1099, 0x1b38: 0x10b1, 0x1b39: 0x10c9, 0x1b3a: 0xbac9, 0x1b3b: 0xbae1,\n\t0x1b3c: 0xbaf9, 0x1b3d: 0x1429, 0x1b3e: 0x1a31, 0x1b3f: 0xbb11,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0xbb29, 0x1b41: 0xbb41, 0x1b42: 0xbb59, 0x1b43: 0xbb71, 0x1b44: 0xbb89, 0x1b45: 0x2109,\n\t0x1b46: 0x1111, 0x1b47: 0xbba1, 0x1b48: 0xbba1, 0x1b49: 0xbbb9, 0x1b4a: 0xbbd1, 0x1b4b: 0x10e1,\n\t0x1b4c: 0x10f9, 0x1b4d: 0xbbe9, 0x1b4e: 0x2079, 0x1b4f: 0xbc21, 0x1b50: 0xbac9, 0x1b51: 0x1429,\n\t0x1b52: 0xbb11, 0x1b53: 0x10e1, 0x1b54: 0x1111, 0x1b55: 0x2109, 0x1b56: 0xbab1, 0x1b57: 0x1099,\n\t0x1b58: 0x10b1, 0x1b59: 0x10c9, 0x1b5a: 0xbac9, 0x1b5b: 0xbae1, 0x1b5c: 0xbaf9, 0x1b5d: 0x1429,\n\t0x1b5e: 0x1a31, 0x1b5f: 0xbb11, 0x1b60: 0xbb29, 0x1b61: 0xbb41, 0x1b62: 0xbb59, 0x1b63: 0xbb71,\n\t0x1b64: 0xbb89, 0x1b65: 0x2109, 0x1b66: 0x1111, 0x1b67: 0x1429, 0x1b68: 0xbba1, 0x1b69: 0xbbb9,\n\t0x1b6a: 0xbbd1, 0x1b6b: 0x10e1, 0x1b6c: 0x10f9, 0x1b6d: 0xbbe9, 0x1b6e: 0x2079, 0x1b6f: 0xbc01,\n\t0x1b70: 0xbab1, 0x1b71: 0x1099, 0x1b72: 0x10b1, 0x1b73: 0x10c9, 0x1b74: 0xbac9, 0x1b75: 0xbae1,\n\t0x1b76: 0xbaf9, 0x1b77: 0x1429, 0x1b78: 0x1a31, 0x1b79: 0xbb11, 0x1b7a: 0xbb29, 0x1b7b: 0xbb41,\n\t0x1b7c: 0xbb59, 0x1b7d: 0xbb71, 0x1b7e: 0xbb89, 0x1b7f: 0x2109,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x1111, 0x1b81: 0xbba1, 0x1b82: 0xbba1, 0x1b83: 0xbbb9, 0x1b84: 0xbbd1, 0x1b85: 0x10e1,\n\t0x1b86: 0x10f9, 0x1b87: 0xbbe9, 0x1b88: 0x2079, 0x1b89: 0xbc21, 0x1b8a: 0xbac9, 0x1b8b: 0x1429,\n\t0x1b8c: 0xbb11, 0x1b8d: 0x10e1, 0x1b8e: 0x1111, 0x1b8f: 0x2109, 0x1b90: 0xbab1, 0x1b91: 0x1099,\n\t0x1b92: 0x10b1, 0x1b93: 0x10c9, 0x1b94: 0xbac9, 0x1b95: 0xbae1, 0x1b96: 0xbaf9, 0x1b97: 0x1429,\n\t0x1b98: 0x1a31, 0x1b99: 0xbb11, 0x1b9a: 0xbb29, 0x1b9b: 0xbb41, 0x1b9c: 0xbb59, 0x1b9d: 0xbb71,\n\t0x1b9e: 0xbb89, 0x1b9f: 0x2109, 0x1ba0: 0x1111, 0x1ba1: 0x1429, 0x1ba2: 0xbba1, 0x1ba3: 0xbbb9,\n\t0x1ba4: 0xbbd1, 0x1ba5: 0x10e1, 0x1ba6: 0x10f9, 0x1ba7: 0xbbe9, 0x1ba8: 0x2079, 0x1ba9: 0xbc01,\n\t0x1baa: 0xbab1, 0x1bab: 0x1099, 0x1bac: 0x10b1, 0x1bad: 0x10c9, 0x1bae: 0xbac9, 0x1baf: 0xbae1,\n\t0x1bb0: 0xbaf9, 0x1bb1: 0x1429, 0x1bb2: 0x1a31, 0x1bb3: 0xbb11, 0x1bb4: 0xbb29, 0x1bb5: 0xbb41,\n\t0x1bb6: 0xbb59, 0x1bb7: 0xbb71, 0x1bb8: 0xbb89, 0x1bb9: 0x2109, 0x1bba: 0x1111, 0x1bbb: 0xbba1,\n\t0x1bbc: 0xbba1, 0x1bbd: 0xbbb9, 0x1bbe: 0xbbd1, 0x1bbf: 0x10e1,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x10f9, 0x1bc1: 0xbbe9, 0x1bc2: 0x2079, 0x1bc3: 0xbc21, 0x1bc4: 0xbac9, 0x1bc5: 0x1429,\n\t0x1bc6: 0xbb11, 0x1bc7: 0x10e1, 0x1bc8: 0x1111, 0x1bc9: 0x2109, 0x1bca: 0xbc41, 0x1bcb: 0xbc41,\n\t0x1bcc: 0x0040, 0x1bcd: 0x0040, 0x1bce: 0x1f41, 0x1bcf: 0x00c9, 0x1bd0: 0x0069, 0x1bd1: 0x0079,\n\t0x1bd2: 0x1f51, 0x1bd3: 0x1f61, 0x1bd4: 0x1f71, 0x1bd5: 0x1f81, 0x1bd6: 0x1f91, 0x1bd7: 0x1fa1,\n\t0x1bd8: 0x1f41, 0x1bd9: 0x00c9, 0x1bda: 0x0069, 0x1bdb: 0x0079, 0x1bdc: 0x1f51, 0x1bdd: 0x1f61,\n\t0x1bde: 0x1f71, 0x1bdf: 0x1f81, 0x1be0: 0x1f91, 0x1be1: 0x1fa1, 0x1be2: 0x1f41, 0x1be3: 0x00c9,\n\t0x1be4: 0x0069, 0x1be5: 0x0079, 0x1be6: 0x1f51, 0x1be7: 0x1f61, 0x1be8: 0x1f71, 0x1be9: 0x1f81,\n\t0x1bea: 0x1f91, 0x1beb: 0x1fa1, 0x1bec: 0x1f41, 0x1bed: 0x00c9, 0x1bee: 0x0069, 0x1bef: 0x0079,\n\t0x1bf0: 0x1f51, 0x1bf1: 0x1f61, 0x1bf2: 0x1f71, 0x1bf3: 0x1f81, 0x1bf4: 0x1f91, 0x1bf5: 0x1fa1,\n\t0x1bf6: 0x1f41, 0x1bf7: 0x00c9, 0x1bf8: 0x0069, 0x1bf9: 0x0079, 0x1bfa: 0x1f51, 0x1bfb: 0x1f61,\n\t0x1bfc: 0x1f71, 0x1bfd: 0x1f81, 0x1bfe: 0x1f91, 0x1bff: 0x1fa1,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0xe115, 0x1c01: 0xe115, 0x1c02: 0xe135, 0x1c03: 0xe135, 0x1c04: 0xe115, 0x1c05: 0xe115,\n\t0x1c06: 0xe175, 0x1c07: 0xe175, 0x1c08: 0xe115, 0x1c09: 0xe115, 0x1c0a: 0xe135, 0x1c0b: 0xe135,\n\t0x1c0c: 0xe115, 0x1c0d: 0xe115, 0x1c0e: 0xe1f5, 0x1c0f: 0xe1f5, 0x1c10: 0xe115, 0x1c11: 0xe115,\n\t0x1c12: 0xe135, 0x1c13: 0xe135, 0x1c14: 0xe115, 0x1c15: 0xe115, 0x1c16: 0xe175, 0x1c17: 0xe175,\n\t0x1c18: 0xe115, 0x1c19: 0xe115, 0x1c1a: 0xe135, 0x1c1b: 0xe135, 0x1c1c: 0xe115, 0x1c1d: 0xe115,\n\t0x1c1e: 0x8b05, 0x1c1f: 0x8b05, 0x1c20: 0x04b5, 0x1c21: 0x04b5, 0x1c22: 0x0a08, 0x1c23: 0x0a08,\n\t0x1c24: 0x0a08, 0x1c25: 0x0a08, 0x1c26: 0x0a08, 0x1c27: 0x0a08, 0x1c28: 0x0a08, 0x1c29: 0x0a08,\n\t0x1c2a: 0x0a08, 0x1c2b: 0x0a08, 0x1c2c: 0x0a08, 0x1c2d: 0x0a08, 0x1c2e: 0x0a08, 0x1c2f: 0x0a08,\n\t0x1c30: 0x0a08, 0x1c31: 0x0a08, 0x1c32: 0x0a08, 0x1c33: 0x0a08, 0x1c34: 0x0a08, 0x1c35: 0x0a08,\n\t0x1c36: 0x0a08, 0x1c37: 0x0a08, 0x1c38: 0x0a08, 0x1c39: 0x0a08, 0x1c3a: 0x0a08, 0x1c3b: 0x0a08,\n\t0x1c3c: 0x0a08, 0x1c3d: 0x0a08, 0x1c3e: 0x0a08, 0x1c3f: 0x0a08,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0xb189, 0x1c41: 0xb1a1, 0x1c42: 0xb201, 0x1c43: 0xb249, 0x1c44: 0x0040, 0x1c45: 0xb411,\n\t0x1c46: 0xb291, 0x1c47: 0xb219, 0x1c48: 0xb309, 0x1c49: 0xb429, 0x1c4a: 0xb399, 0x1c4b: 0xb3b1,\n\t0x1c4c: 0xb3c9, 0x1c4d: 0xb3e1, 0x1c4e: 0xb2a9, 0x1c4f: 0xb339, 0x1c50: 0xb369, 0x1c51: 0xb2d9,\n\t0x1c52: 0xb381, 0x1c53: 0xb279, 0x1c54: 0xb2c1, 0x1c55: 0xb1d1, 0x1c56: 0xb1e9, 0x1c57: 0xb231,\n\t0x1c58: 0xb261, 0x1c59: 0xb2f1, 0x1c5a: 0xb321, 0x1c5b: 0xb351, 0x1c5c: 0xbc59, 0x1c5d: 0x7949,\n\t0x1c5e: 0xbc71, 0x1c5f: 0xbc89, 0x1c60: 0x0040, 0x1c61: 0xb1a1, 0x1c62: 0xb201, 0x1c63: 0x0040,\n\t0x1c64: 0xb3f9, 0x1c65: 0x0040, 0x1c66: 0x0040, 0x1c67: 0xb219, 0x1c68: 0x0040, 0x1c69: 0xb429,\n\t0x1c6a: 0xb399, 0x1c6b: 0xb3b1, 0x1c6c: 0xb3c9, 0x1c6d: 0xb3e1, 0x1c6e: 0xb2a9, 0x1c6f: 0xb339,\n\t0x1c70: 0xb369, 0x1c71: 0xb2d9, 0x1c72: 0xb381, 0x1c73: 0x0040, 0x1c74: 0xb2c1, 0x1c75: 0xb1d1,\n\t0x1c76: 0xb1e9, 0x1c77: 0xb231, 0x1c78: 0x0040, 0x1c79: 0xb2f1, 0x1c7a: 0x0040, 0x1c7b: 0xb351,\n\t0x1c7c: 0x0040, 0x1c7d: 0x0040, 0x1c7e: 0x0040, 0x1c7f: 0x0040,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0x0040, 0x1c81: 0x0040, 0x1c82: 0xb201, 0x1c83: 0x0040, 0x1c84: 0x0040, 0x1c85: 0x0040,\n\t0x1c86: 0x0040, 0x1c87: 0xb219, 0x1c88: 0x0040, 0x1c89: 0xb429, 0x1c8a: 0x0040, 0x1c8b: 0xb3b1,\n\t0x1c8c: 0x0040, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0x0040, 0x1c91: 0xb2d9,\n\t0x1c92: 0xb381, 0x1c93: 0x0040, 0x1c94: 0xb2c1, 0x1c95: 0x0040, 0x1c96: 0x0040, 0x1c97: 0xb231,\n\t0x1c98: 0x0040, 0x1c99: 0xb2f1, 0x1c9a: 0x0040, 0x1c9b: 0xb351, 0x1c9c: 0x0040, 0x1c9d: 0x7949,\n\t0x1c9e: 0x0040, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040,\n\t0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0xb309, 0x1ca9: 0xb429,\n\t0x1caa: 0xb399, 0x1cab: 0x0040, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339,\n\t0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1,\n\t0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0xb321, 0x1cbb: 0xb351,\n\t0x1cbc: 0xbc59, 0x1cbd: 0x0040, 0x1cbe: 0xbc71, 0x1cbf: 0x0040,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0xb189, 0x1cc1: 0xb1a1, 0x1cc2: 0xb201, 0x1cc3: 0xb249, 0x1cc4: 0xb3f9, 0x1cc5: 0xb411,\n\t0x1cc6: 0xb291, 0x1cc7: 0xb219, 0x1cc8: 0xb309, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1,\n\t0x1ccc: 0xb3c9, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0xb369, 0x1cd1: 0xb2d9,\n\t0x1cd2: 0xb381, 0x1cd3: 0xb279, 0x1cd4: 0xb2c1, 0x1cd5: 0xb1d1, 0x1cd6: 0xb1e9, 0x1cd7: 0xb231,\n\t0x1cd8: 0xb261, 0x1cd9: 0xb2f1, 0x1cda: 0xb321, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x0040,\n\t0x1cde: 0x0040, 0x1cdf: 0x0040, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0xb249,\n\t0x1ce4: 0x0040, 0x1ce5: 0xb411, 0x1ce6: 0xb291, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429,\n\t0x1cea: 0x0040, 0x1ceb: 0xb3b1, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339,\n\t0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0xb279, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1,\n\t0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0xb261, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351,\n\t0x1cfc: 0x0040, 0x1cfd: 0x0040, 0x1cfe: 0x0040, 0x1cff: 0x0040,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0x0040, 0x1d01: 0xbca2, 0x1d02: 0xbcba, 0x1d03: 0xbcd2, 0x1d04: 0xbcea, 0x1d05: 0xbd02,\n\t0x1d06: 0xbd1a, 0x1d07: 0xbd32, 0x1d08: 0xbd4a, 0x1d09: 0xbd62, 0x1d0a: 0xbd7a, 0x1d0b: 0x0018,\n\t0x1d0c: 0x0018, 0x1d0d: 0x0040, 0x1d0e: 0x0040, 0x1d0f: 0x0040, 0x1d10: 0xbd92, 0x1d11: 0xbdb2,\n\t0x1d12: 0xbdd2, 0x1d13: 0xbdf2, 0x1d14: 0xbe12, 0x1d15: 0xbe32, 0x1d16: 0xbe52, 0x1d17: 0xbe72,\n\t0x1d18: 0xbe92, 0x1d19: 0xbeb2, 0x1d1a: 0xbed2, 0x1d1b: 0xbef2, 0x1d1c: 0xbf12, 0x1d1d: 0xbf32,\n\t0x1d1e: 0xbf52, 0x1d1f: 0xbf72, 0x1d20: 0xbf92, 0x1d21: 0xbfb2, 0x1d22: 0xbfd2, 0x1d23: 0xbff2,\n\t0x1d24: 0xc012, 0x1d25: 0xc032, 0x1d26: 0xc052, 0x1d27: 0xc072, 0x1d28: 0xc092, 0x1d29: 0xc0b2,\n\t0x1d2a: 0xc0d1, 0x1d2b: 0x1159, 0x1d2c: 0x0269, 0x1d2d: 0x6671, 0x1d2e: 0xc111, 0x1d2f: 0x0040,\n\t0x1d30: 0x0039, 0x1d31: 0x0ee9, 0x1d32: 0x1159, 0x1d33: 0x0ef9, 0x1d34: 0x0f09, 0x1d35: 0x1199,\n\t0x1d36: 0x0f31, 0x1d37: 0x0249, 0x1d38: 0x0f41, 0x1d39: 0x0259, 0x1d3a: 0x0f51, 0x1d3b: 0x0359,\n\t0x1d3c: 0x0f61, 0x1d3d: 0x0f71, 0x1d3e: 0x00d9, 0x1d3f: 0x0f99,\n\t// Block 0x75, offset 0x1d40\n\t0x1d40: 0x2039, 0x1d41: 0x0269, 0x1d42: 0x01d9, 0x1d43: 0x0fa9, 0x1d44: 0x0fb9, 0x1d45: 0x1089,\n\t0x1d46: 0x0279, 0x1d47: 0x0369, 0x1d48: 0x0289, 0x1d49: 0x13d1, 0x1d4a: 0xc129, 0x1d4b: 0x65b1,\n\t0x1d4c: 0xc141, 0x1d4d: 0x1441, 0x1d4e: 0xc159, 0x1d4f: 0xc179, 0x1d50: 0x0018, 0x1d51: 0x0018,\n\t0x1d52: 0x0018, 0x1d53: 0x0018, 0x1d54: 0x0018, 0x1d55: 0x0018, 0x1d56: 0x0018, 0x1d57: 0x0018,\n\t0x1d58: 0x0018, 0x1d59: 0x0018, 0x1d5a: 0x0018, 0x1d5b: 0x0018, 0x1d5c: 0x0018, 0x1d5d: 0x0018,\n\t0x1d5e: 0x0018, 0x1d5f: 0x0018, 0x1d60: 0x0018, 0x1d61: 0x0018, 0x1d62: 0x0018, 0x1d63: 0x0018,\n\t0x1d64: 0x0018, 0x1d65: 0x0018, 0x1d66: 0x0018, 0x1d67: 0x0018, 0x1d68: 0x0018, 0x1d69: 0x0018,\n\t0x1d6a: 0xc191, 0x1d6b: 0xc1a9, 0x1d6c: 0x0040, 0x1d6d: 0x0040, 0x1d6e: 0x0040, 0x1d6f: 0x0040,\n\t0x1d70: 0x0018, 0x1d71: 0x0018, 0x1d72: 0x0018, 0x1d73: 0x0018, 0x1d74: 0x0018, 0x1d75: 0x0018,\n\t0x1d76: 0x0018, 0x1d77: 0x0018, 0x1d78: 0x0018, 0x1d79: 0x0018, 0x1d7a: 0x0018, 0x1d7b: 0x0018,\n\t0x1d7c: 0x0018, 0x1d7d: 0x0018, 0x1d7e: 0x0018, 0x1d7f: 0x0018,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0xc1d9, 0x1d81: 0xc211, 0x1d82: 0xc249, 0x1d83: 0x0040, 0x1d84: 0x0040, 0x1d85: 0x0040,\n\t0x1d86: 0x0040, 0x1d87: 0x0040, 0x1d88: 0x0040, 0x1d89: 0x0040, 0x1d8a: 0x0040, 0x1d8b: 0x0040,\n\t0x1d8c: 0x0040, 0x1d8d: 0x0040, 0x1d8e: 0x0040, 0x1d8f: 0x0040, 0x1d90: 0xc269, 0x1d91: 0xc289,\n\t0x1d92: 0xc2a9, 0x1d93: 0xc2c9, 0x1d94: 0xc2e9, 0x1d95: 0xc309, 0x1d96: 0xc329, 0x1d97: 0xc349,\n\t0x1d98: 0xc369, 0x1d99: 0xc389, 0x1d9a: 0xc3a9, 0x1d9b: 0xc3c9, 0x1d9c: 0xc3e9, 0x1d9d: 0xc409,\n\t0x1d9e: 0xc429, 0x1d9f: 0xc449, 0x1da0: 0xc469, 0x1da1: 0xc489, 0x1da2: 0xc4a9, 0x1da3: 0xc4c9,\n\t0x1da4: 0xc4e9, 0x1da5: 0xc509, 0x1da6: 0xc529, 0x1da7: 0xc549, 0x1da8: 0xc569, 0x1da9: 0xc589,\n\t0x1daa: 0xc5a9, 0x1dab: 0xc5c9, 0x1dac: 0xc5e9, 0x1dad: 0xc609, 0x1dae: 0xc629, 0x1daf: 0xc649,\n\t0x1db0: 0xc669, 0x1db1: 0xc689, 0x1db2: 0xc6a9, 0x1db3: 0xc6c9, 0x1db4: 0xc6e9, 0x1db5: 0xc709,\n\t0x1db6: 0xc729, 0x1db7: 0xc749, 0x1db8: 0xc769, 0x1db9: 0xc789, 0x1dba: 0xc7a9, 0x1dbb: 0xc7c9,\n\t0x1dbc: 0x0040, 0x1dbd: 0x0040, 0x1dbe: 0x0040, 0x1dbf: 0x0040,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dc0: 0xcaf9, 0x1dc1: 0xcb19, 0x1dc2: 0xcb39, 0x1dc3: 0x8b1d, 0x1dc4: 0xcb59, 0x1dc5: 0xcb79,\n\t0x1dc6: 0xcb99, 0x1dc7: 0xcbb9, 0x1dc8: 0xcbd9, 0x1dc9: 0xcbf9, 0x1dca: 0xcc19, 0x1dcb: 0xcc39,\n\t0x1dcc: 0xcc59, 0x1dcd: 0x8b3d, 0x1dce: 0xcc79, 0x1dcf: 0xcc99, 0x1dd0: 0xccb9, 0x1dd1: 0xccd9,\n\t0x1dd2: 0x8b5d, 0x1dd3: 0xccf9, 0x1dd4: 0xcd19, 0x1dd5: 0xc429, 0x1dd6: 0x8b7d, 0x1dd7: 0xcd39,\n\t0x1dd8: 0xcd59, 0x1dd9: 0xcd79, 0x1dda: 0xcd99, 0x1ddb: 0xcdb9, 0x1ddc: 0x8b9d, 0x1ddd: 0xcdd9,\n\t0x1dde: 0xcdf9, 0x1ddf: 0xce19, 0x1de0: 0xce39, 0x1de1: 0xce59, 0x1de2: 0xc789, 0x1de3: 0xce79,\n\t0x1de4: 0xce99, 0x1de5: 0xceb9, 0x1de6: 0xced9, 0x1de7: 0xcef9, 0x1de8: 0xcf19, 0x1de9: 0xcf39,\n\t0x1dea: 0xcf59, 0x1deb: 0xcf79, 0x1dec: 0xcf99, 0x1ded: 0xcfb9, 0x1dee: 0xcfd9, 0x1def: 0xcff9,\n\t0x1df0: 0xd019, 0x1df1: 0xd039, 0x1df2: 0xd039, 0x1df3: 0xd039, 0x1df4: 0x8bbd, 0x1df5: 0xd059,\n\t0x1df6: 0xd079, 0x1df7: 0xd099, 0x1df8: 0x8bdd, 0x1df9: 0xd0b9, 0x1dfa: 0xd0d9, 0x1dfb: 0xd0f9,\n\t0x1dfc: 0xd119, 0x1dfd: 0xd139, 0x1dfe: 0xd159, 0x1dff: 0xd179,\n\t// Block 0x78, offset 0x1e00\n\t0x1e00: 0xd199, 0x1e01: 0xd1b9, 0x1e02: 0xd1d9, 0x1e03: 0xd1f9, 0x1e04: 0xd219, 0x1e05: 0xd239,\n\t0x1e06: 0xd239, 0x1e07: 0xd259, 0x1e08: 0xd279, 0x1e09: 0xd299, 0x1e0a: 0xd2b9, 0x1e0b: 0xd2d9,\n\t0x1e0c: 0xd2f9, 0x1e0d: 0xd319, 0x1e0e: 0xd339, 0x1e0f: 0xd359, 0x1e10: 0xd379, 0x1e11: 0xd399,\n\t0x1e12: 0xd3b9, 0x1e13: 0xd3d9, 0x1e14: 0xd3f9, 0x1e15: 0xd419, 0x1e16: 0xd439, 0x1e17: 0xd459,\n\t0x1e18: 0xd479, 0x1e19: 0x8bfd, 0x1e1a: 0xd499, 0x1e1b: 0xd4b9, 0x1e1c: 0xd4d9, 0x1e1d: 0xc309,\n\t0x1e1e: 0xd4f9, 0x1e1f: 0xd519, 0x1e20: 0x8c1d, 0x1e21: 0x8c3d, 0x1e22: 0xd539, 0x1e23: 0xd559,\n\t0x1e24: 0xd579, 0x1e25: 0xd599, 0x1e26: 0xd5b9, 0x1e27: 0xd5d9, 0x1e28: 0x2040, 0x1e29: 0xd5f9,\n\t0x1e2a: 0xd619, 0x1e2b: 0xd619, 0x1e2c: 0x8c5d, 0x1e2d: 0xd639, 0x1e2e: 0xd659, 0x1e2f: 0xd679,\n\t0x1e30: 0xd699, 0x1e31: 0x8c7d, 0x1e32: 0xd6b9, 0x1e33: 0xd6d9, 0x1e34: 0x2040, 0x1e35: 0xd6f9,\n\t0x1e36: 0xd719, 0x1e37: 0xd739, 0x1e38: 0xd759, 0x1e39: 0xd779, 0x1e3a: 0xd799, 0x1e3b: 0x8c9d,\n\t0x1e3c: 0xd7b9, 0x1e3d: 0x8cbd, 0x1e3e: 0xd7d9, 0x1e3f: 0xd7f9,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0xd819, 0x1e41: 0xd839, 0x1e42: 0xd859, 0x1e43: 0xd879, 0x1e44: 0xd899, 0x1e45: 0xd8b9,\n\t0x1e46: 0xd8d9, 0x1e47: 0xd8f9, 0x1e48: 0xd919, 0x1e49: 0x8cdd, 0x1e4a: 0xd939, 0x1e4b: 0xd959,\n\t0x1e4c: 0xd979, 0x1e4d: 0xd999, 0x1e4e: 0xd9b9, 0x1e4f: 0x8cfd, 0x1e50: 0xd9d9, 0x1e51: 0x8d1d,\n\t0x1e52: 0x8d3d, 0x1e53: 0xd9f9, 0x1e54: 0xda19, 0x1e55: 0xda19, 0x1e56: 0xda39, 0x1e57: 0x8d5d,\n\t0x1e58: 0x8d7d, 0x1e59: 0xda59, 0x1e5a: 0xda79, 0x1e5b: 0xda99, 0x1e5c: 0xdab9, 0x1e5d: 0xdad9,\n\t0x1e5e: 0xdaf9, 0x1e5f: 0xdb19, 0x1e60: 0xdb39, 0x1e61: 0xdb59, 0x1e62: 0xdb79, 0x1e63: 0xdb99,\n\t0x1e64: 0x8d9d, 0x1e65: 0xdbb9, 0x1e66: 0xdbd9, 0x1e67: 0xdbf9, 0x1e68: 0xdc19, 0x1e69: 0xdbf9,\n\t0x1e6a: 0xdc39, 0x1e6b: 0xdc59, 0x1e6c: 0xdc79, 0x1e6d: 0xdc99, 0x1e6e: 0xdcb9, 0x1e6f: 0xdcd9,\n\t0x1e70: 0xdcf9, 0x1e71: 0xdd19, 0x1e72: 0xdd39, 0x1e73: 0xdd59, 0x1e74: 0xdd79, 0x1e75: 0xdd99,\n\t0x1e76: 0xddb9, 0x1e77: 0xddd9, 0x1e78: 0x8dbd, 0x1e79: 0xddf9, 0x1e7a: 0xde19, 0x1e7b: 0xde39,\n\t0x1e7c: 0xde59, 0x1e7d: 0xde79, 0x1e7e: 0x8ddd, 0x1e7f: 0xde99,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0xe599, 0x1e81: 0xe5b9, 0x1e82: 0xe5d9, 0x1e83: 0xe5f9, 0x1e84: 0xe619, 0x1e85: 0xe639,\n\t0x1e86: 0x8efd, 0x1e87: 0xe659, 0x1e88: 0xe679, 0x1e89: 0xe699, 0x1e8a: 0xe6b9, 0x1e8b: 0xe6d9,\n\t0x1e8c: 0xe6f9, 0x1e8d: 0x8f1d, 0x1e8e: 0xe719, 0x1e8f: 0xe739, 0x1e90: 0x8f3d, 0x1e91: 0x8f5d,\n\t0x1e92: 0xe759, 0x1e93: 0xe779, 0x1e94: 0xe799, 0x1e95: 0xe7b9, 0x1e96: 0xe7d9, 0x1e97: 0xe7f9,\n\t0x1e98: 0xe819, 0x1e99: 0xe839, 0x1e9a: 0xe859, 0x1e9b: 0x8f7d, 0x1e9c: 0xe879, 0x1e9d: 0x8f9d,\n\t0x1e9e: 0xe899, 0x1e9f: 0x2040, 0x1ea0: 0xe8b9, 0x1ea1: 0xe8d9, 0x1ea2: 0xe8f9, 0x1ea3: 0x8fbd,\n\t0x1ea4: 0xe919, 0x1ea5: 0xe939, 0x1ea6: 0x8fdd, 0x1ea7: 0x8ffd, 0x1ea8: 0xe959, 0x1ea9: 0xe979,\n\t0x1eaa: 0xe999, 0x1eab: 0xe9b9, 0x1eac: 0xe9d9, 0x1ead: 0xe9d9, 0x1eae: 0xe9f9, 0x1eaf: 0xea19,\n\t0x1eb0: 0xea39, 0x1eb1: 0xea59, 0x1eb2: 0xea79, 0x1eb3: 0xea99, 0x1eb4: 0xeab9, 0x1eb5: 0x901d,\n\t0x1eb6: 0xead9, 0x1eb7: 0x903d, 0x1eb8: 0xeaf9, 0x1eb9: 0x905d, 0x1eba: 0xeb19, 0x1ebb: 0x907d,\n\t0x1ebc: 0x909d, 0x1ebd: 0x90bd, 0x1ebe: 0xeb39, 0x1ebf: 0xeb59,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0xeb79, 0x1ec1: 0x90dd, 0x1ec2: 0x90fd, 0x1ec3: 0x911d, 0x1ec4: 0x913d, 0x1ec5: 0xeb99,\n\t0x1ec6: 0xebb9, 0x1ec7: 0xebb9, 0x1ec8: 0xebd9, 0x1ec9: 0xebf9, 0x1eca: 0xec19, 0x1ecb: 0xec39,\n\t0x1ecc: 0xec59, 0x1ecd: 0x915d, 0x1ece: 0xec79, 0x1ecf: 0xec99, 0x1ed0: 0xecb9, 0x1ed1: 0xecd9,\n\t0x1ed2: 0x917d, 0x1ed3: 0xecf9, 0x1ed4: 0x919d, 0x1ed5: 0x91bd, 0x1ed6: 0xed19, 0x1ed7: 0xed39,\n\t0x1ed8: 0xed59, 0x1ed9: 0xed79, 0x1eda: 0xed99, 0x1edb: 0xedb9, 0x1edc: 0x91dd, 0x1edd: 0x91fd,\n\t0x1ede: 0x921d, 0x1edf: 0x2040, 0x1ee0: 0xedd9, 0x1ee1: 0x923d, 0x1ee2: 0xedf9, 0x1ee3: 0xee19,\n\t0x1ee4: 0xee39, 0x1ee5: 0x925d, 0x1ee6: 0xee59, 0x1ee7: 0xee79, 0x1ee8: 0xee99, 0x1ee9: 0xeeb9,\n\t0x1eea: 0xeed9, 0x1eeb: 0x927d, 0x1eec: 0xeef9, 0x1eed: 0xef19, 0x1eee: 0xef39, 0x1eef: 0xef59,\n\t0x1ef0: 0xef79, 0x1ef1: 0xef99, 0x1ef2: 0x929d, 0x1ef3: 0x92bd, 0x1ef4: 0xefb9, 0x1ef5: 0x92dd,\n\t0x1ef6: 0xefd9, 0x1ef7: 0x92fd, 0x1ef8: 0xeff9, 0x1ef9: 0xf019, 0x1efa: 0xf039, 0x1efb: 0x931d,\n\t0x1efc: 0x933d, 0x1efd: 0xf059, 0x1efe: 0x935d, 0x1eff: 0xf079,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0xf6b9, 0x1f01: 0xf6d9, 0x1f02: 0xf6f9, 0x1f03: 0xf719, 0x1f04: 0xf739, 0x1f05: 0x951d,\n\t0x1f06: 0xf759, 0x1f07: 0xf779, 0x1f08: 0xf799, 0x1f09: 0xf7b9, 0x1f0a: 0xf7d9, 0x1f0b: 0x953d,\n\t0x1f0c: 0x955d, 0x1f0d: 0xf7f9, 0x1f0e: 0xf819, 0x1f0f: 0xf839, 0x1f10: 0xf859, 0x1f11: 0xf879,\n\t0x1f12: 0xf899, 0x1f13: 0x957d, 0x1f14: 0xf8b9, 0x1f15: 0xf8d9, 0x1f16: 0xf8f9, 0x1f17: 0xf919,\n\t0x1f18: 0x959d, 0x1f19: 0x95bd, 0x1f1a: 0xf939, 0x1f1b: 0xf959, 0x1f1c: 0xf979, 0x1f1d: 0x95dd,\n\t0x1f1e: 0xf999, 0x1f1f: 0xf9b9, 0x1f20: 0x6815, 0x1f21: 0x95fd, 0x1f22: 0xf9d9, 0x1f23: 0xf9f9,\n\t0x1f24: 0xfa19, 0x1f25: 0x961d, 0x1f26: 0xfa39, 0x1f27: 0xfa59, 0x1f28: 0xfa79, 0x1f29: 0xfa99,\n\t0x1f2a: 0xfab9, 0x1f2b: 0xfad9, 0x1f2c: 0xfaf9, 0x1f2d: 0x963d, 0x1f2e: 0xfb19, 0x1f2f: 0xfb39,\n\t0x1f30: 0xfb59, 0x1f31: 0x965d, 0x1f32: 0xfb79, 0x1f33: 0xfb99, 0x1f34: 0xfbb9, 0x1f35: 0xfbd9,\n\t0x1f36: 0x7b35, 0x1f37: 0x967d, 0x1f38: 0xfbf9, 0x1f39: 0xfc19, 0x1f3a: 0xfc39, 0x1f3b: 0x969d,\n\t0x1f3c: 0xfc59, 0x1f3d: 0x96bd, 0x1f3e: 0xfc79, 0x1f3f: 0xfc79,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f40: 0xfc99, 0x1f41: 0x96dd, 0x1f42: 0xfcb9, 0x1f43: 0xfcd9, 0x1f44: 0xfcf9, 0x1f45: 0xfd19,\n\t0x1f46: 0xfd39, 0x1f47: 0xfd59, 0x1f48: 0xfd79, 0x1f49: 0x96fd, 0x1f4a: 0xfd99, 0x1f4b: 0xfdb9,\n\t0x1f4c: 0xfdd9, 0x1f4d: 0xfdf9, 0x1f4e: 0xfe19, 0x1f4f: 0xfe39, 0x1f50: 0x971d, 0x1f51: 0xfe59,\n\t0x1f52: 0x973d, 0x1f53: 0x975d, 0x1f54: 0x977d, 0x1f55: 0xfe79, 0x1f56: 0xfe99, 0x1f57: 0xfeb9,\n\t0x1f58: 0xfed9, 0x1f59: 0xfef9, 0x1f5a: 0xff19, 0x1f5b: 0xff39, 0x1f5c: 0xff59, 0x1f5d: 0x979d,\n\t0x1f5e: 0x0040, 0x1f5f: 0x0040, 0x1f60: 0x0040, 0x1f61: 0x0040, 0x1f62: 0x0040, 0x1f63: 0x0040,\n\t0x1f64: 0x0040, 0x1f65: 0x0040, 0x1f66: 0x0040, 0x1f67: 0x0040, 0x1f68: 0x0040, 0x1f69: 0x0040,\n\t0x1f6a: 0x0040, 0x1f6b: 0x0040, 0x1f6c: 0x0040, 0x1f6d: 0x0040, 0x1f6e: 0x0040, 0x1f6f: 0x0040,\n\t0x1f70: 0x0040, 0x1f71: 0x0040, 0x1f72: 0x0040, 0x1f73: 0x0040, 0x1f74: 0x0040, 0x1f75: 0x0040,\n\t0x1f76: 0x0040, 0x1f77: 0x0040, 0x1f78: 0x0040, 0x1f79: 0x0040, 0x1f7a: 0x0040, 0x1f7b: 0x0040,\n\t0x1f7c: 0x0040, 0x1f7d: 0x0040, 0x1f7e: 0x0040, 0x1f7f: 0x0040,\n}\n\n// idnaIndex: 35 blocks, 2240 entries, 4480 bytes\n// Block 0 is the zero block.\nvar idnaIndex = [2240]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x7c, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05,\n\t0xc8: 0x06, 0xc9: 0x7d, 0xca: 0x7e, 0xcb: 0x07, 0xcc: 0x7f, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a,\n\t0xd0: 0x80, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x81, 0xd6: 0x82, 0xd7: 0x83,\n\t0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x84, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x85, 0xde: 0x86, 0xdf: 0x87,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07,\n\t0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c,\n\t0xf0: 0x1c, 0xf1: 0x1d, 0xf2: 0x1d, 0xf3: 0x1f, 0xf4: 0x20,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x88, 0x121: 0x89, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x13, 0x126: 0x14, 0x127: 0x15,\n\t0x128: 0x16, 0x129: 0x17, 0x12a: 0x18, 0x12b: 0x19, 0x12c: 0x1a, 0x12d: 0x1b, 0x12e: 0x1c, 0x12f: 0x8d,\n\t0x130: 0x8e, 0x131: 0x1d, 0x132: 0x1e, 0x133: 0x1f, 0x134: 0x8f, 0x135: 0x20, 0x136: 0x90, 0x137: 0x91,\n\t0x138: 0x92, 0x139: 0x93, 0x13a: 0x21, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x22, 0x13e: 0x23, 0x13f: 0x96,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e,\n\t0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6,\n\t0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f,\n\t0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae,\n\t0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6,\n\t0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe,\n\t0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x24, 0x175: 0x25, 0x176: 0x26, 0x177: 0xc3,\n\t0x178: 0x27, 0x179: 0x27, 0x17a: 0x28, 0x17b: 0x27, 0x17c: 0xc4, 0x17d: 0x29, 0x17e: 0x2a, 0x17f: 0x2b,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x2c, 0x181: 0x2d, 0x182: 0x2e, 0x183: 0xc5, 0x184: 0x2f, 0x185: 0x30, 0x186: 0xc6, 0x187: 0x9b,\n\t0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0xca,\n\t0x190: 0xcb, 0x191: 0x31, 0x192: 0x32, 0x193: 0x33, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b,\n\t0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b,\n\t0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b,\n\t0x1a8: 0xcc, 0x1a9: 0xcd, 0x1aa: 0x9b, 0x1ab: 0xce, 0x1ac: 0x9b, 0x1ad: 0xcf, 0x1ae: 0xd0, 0x1af: 0xd1,\n\t0x1b0: 0xd2, 0x1b1: 0x34, 0x1b2: 0x27, 0x1b3: 0x35, 0x1b4: 0xd3, 0x1b5: 0xd4, 0x1b6: 0xd5, 0x1b7: 0xd6,\n\t0x1b8: 0xd7, 0x1b9: 0xd8, 0x1ba: 0xd9, 0x1bb: 0xda, 0x1bc: 0xdb, 0x1bd: 0xdc, 0x1be: 0xdd, 0x1bf: 0x36,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x37, 0x1c1: 0xde, 0x1c2: 0xdf, 0x1c3: 0xe0, 0x1c4: 0xe1, 0x1c5: 0x38, 0x1c6: 0x39, 0x1c7: 0xe2,\n\t0x1c8: 0xe3, 0x1c9: 0x3a, 0x1ca: 0x3b, 0x1cb: 0x3c, 0x1cc: 0x3d, 0x1cd: 0x3e, 0x1ce: 0x3f, 0x1cf: 0x40,\n\t0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f,\n\t0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f,\n\t0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f,\n\t0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f,\n\t0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f,\n\t0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f,\n\t0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f,\n\t0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f,\n\t0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f,\n\t0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f,\n\t0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f,\n\t0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b,\n\t0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f,\n\t0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f,\n\t0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f,\n\t0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f,\n\t0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f,\n\t0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f,\n\t0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f,\n\t0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f,\n\t0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f,\n\t0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f,\n\t0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f,\n\t0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f,\n\t0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f,\n\t0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f,\n\t0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe4,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f,\n\t0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f,\n\t0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe5, 0x2d3: 0xe6, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f,\n\t0x2d8: 0xe7, 0x2d9: 0x41, 0x2da: 0x42, 0x2db: 0xe8, 0x2dc: 0x43, 0x2dd: 0x44, 0x2de: 0x45, 0x2df: 0xe9,\n\t0x2e0: 0xea, 0x2e1: 0xeb, 0x2e2: 0xec, 0x2e3: 0xed, 0x2e4: 0xee, 0x2e5: 0xef, 0x2e6: 0xf0, 0x2e7: 0xf1,\n\t0x2e8: 0xf2, 0x2e9: 0xf3, 0x2ea: 0xf4, 0x2eb: 0xf5, 0x2ec: 0xf6, 0x2ed: 0xf7, 0x2ee: 0xf8, 0x2ef: 0xf9,\n\t0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f,\n\t0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f,\n\t0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f,\n\t0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f,\n\t0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xfa, 0x31f: 0xfb,\n\t// Block 0xd, offset 0x340\n\t0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba,\n\t0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba,\n\t0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba,\n\t0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba,\n\t0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba,\n\t0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba,\n\t0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba,\n\t0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba,\n\t0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba,\n\t0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba,\n\t0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba,\n\t0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfc, 0x3a5: 0xfd, 0x3a6: 0xfe, 0x3a7: 0xff,\n\t0x3a8: 0x46, 0x3a9: 0x100, 0x3aa: 0x101, 0x3ab: 0x47, 0x3ac: 0x48, 0x3ad: 0x49, 0x3ae: 0x4a, 0x3af: 0x4b,\n\t0x3b0: 0x102, 0x3b1: 0x4c, 0x3b2: 0x4d, 0x3b3: 0x4e, 0x3b4: 0x4f, 0x3b5: 0x50, 0x3b6: 0x103, 0x3b7: 0x51,\n\t0x3b8: 0x52, 0x3b9: 0x53, 0x3ba: 0x54, 0x3bb: 0x55, 0x3bc: 0x56, 0x3bd: 0x57, 0x3be: 0x58, 0x3bf: 0x59,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x104, 0x3c1: 0x105, 0x3c2: 0x9f, 0x3c3: 0x106, 0x3c4: 0x107, 0x3c5: 0x9b, 0x3c6: 0x108, 0x3c7: 0x109,\n\t0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x10a, 0x3cb: 0x10b, 0x3cc: 0x10c, 0x3cd: 0x10d, 0x3ce: 0x10e, 0x3cf: 0x10f,\n\t0x3d0: 0x110, 0x3d1: 0x9f, 0x3d2: 0x111, 0x3d3: 0x112, 0x3d4: 0x113, 0x3d5: 0x114, 0x3d6: 0xba, 0x3d7: 0xba,\n\t0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x115, 0x3dd: 0x116, 0x3de: 0xba, 0x3df: 0xba,\n\t0x3e0: 0x117, 0x3e1: 0x118, 0x3e2: 0x119, 0x3e3: 0x11a, 0x3e4: 0x11b, 0x3e5: 0xba, 0x3e6: 0x11c, 0x3e7: 0x11d,\n\t0x3e8: 0x11e, 0x3e9: 0x11f, 0x3ea: 0x120, 0x3eb: 0x5a, 0x3ec: 0x121, 0x3ed: 0x122, 0x3ee: 0x5b, 0x3ef: 0xba,\n\t0x3f0: 0x123, 0x3f1: 0x124, 0x3f2: 0x125, 0x3f3: 0x126, 0x3f4: 0xba, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba,\n\t0x3f8: 0xba, 0x3f9: 0x127, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0xba, 0x3fd: 0xba, 0x3fe: 0xba, 0x3ff: 0xba,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x128, 0x401: 0x129, 0x402: 0x12a, 0x403: 0x12b, 0x404: 0x12c, 0x405: 0x12d, 0x406: 0x12e, 0x407: 0x12f,\n\t0x408: 0x130, 0x409: 0xba, 0x40a: 0x131, 0x40b: 0x132, 0x40c: 0x5c, 0x40d: 0x5d, 0x40e: 0xba, 0x40f: 0xba,\n\t0x410: 0x133, 0x411: 0x134, 0x412: 0x135, 0x413: 0x136, 0x414: 0xba, 0x415: 0xba, 0x416: 0x137, 0x417: 0x138,\n\t0x418: 0x139, 0x419: 0x13a, 0x41a: 0x13b, 0x41b: 0x13c, 0x41c: 0x13d, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba,\n\t0x420: 0xba, 0x421: 0xba, 0x422: 0x13e, 0x423: 0x13f, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba,\n\t0x428: 0xba, 0x429: 0xba, 0x42a: 0xba, 0x42b: 0x140, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba,\n\t0x430: 0x141, 0x431: 0x142, 0x432: 0x143, 0x433: 0xba, 0x434: 0xba, 0x435: 0xba, 0x436: 0xba, 0x437: 0xba,\n\t0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0xba, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f,\n\t0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x144, 0x44f: 0xba,\n\t0x450: 0x9b, 0x451: 0x145, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x146, 0x456: 0xba, 0x457: 0xba,\n\t0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba,\n\t0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba,\n\t0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba,\n\t0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba,\n\t0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f,\n\t0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f,\n\t0x490: 0x147, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba,\n\t0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba,\n\t0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba,\n\t0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba,\n\t0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba,\n\t0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba,\n\t0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba,\n\t0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f,\n\t0x4d8: 0x9f, 0x4d9: 0x148, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba,\n\t0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba,\n\t0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba,\n\t0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba,\n\t0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba,\n\t// Block 0x14, offset 0x500\n\t0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba,\n\t0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba,\n\t0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba,\n\t0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba,\n\t0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f,\n\t0x528: 0x140, 0x529: 0x149, 0x52a: 0xba, 0x52b: 0x14a, 0x52c: 0x14b, 0x52d: 0x14c, 0x52e: 0x14d, 0x52f: 0xba,\n\t0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba,\n\t0x538: 0xba, 0x539: 0xba, 0x53a: 0xba, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x14e, 0x53e: 0x14f, 0x53f: 0x150,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f,\n\t0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f,\n\t0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f,\n\t0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x151,\n\t0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f,\n\t0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x152, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba,\n\t0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba,\n\t0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x153, 0x581: 0xba, 0x582: 0xba, 0x583: 0xba, 0x584: 0xba, 0x585: 0xba, 0x586: 0xba, 0x587: 0xba,\n\t0x588: 0xba, 0x589: 0xba, 0x58a: 0xba, 0x58b: 0xba, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba,\n\t0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba,\n\t0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba,\n\t0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba,\n\t0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba,\n\t0x5b0: 0x9f, 0x5b1: 0x154, 0x5b2: 0x155, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba,\n\t0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x156, 0x5c4: 0x157, 0x5c5: 0x158, 0x5c6: 0x159, 0x5c7: 0x15a,\n\t0x5c8: 0x9b, 0x5c9: 0x15b, 0x5ca: 0xba, 0x5cb: 0xba, 0x5cc: 0x9b, 0x5cd: 0x15c, 0x5ce: 0xba, 0x5cf: 0xba,\n\t0x5d0: 0x5e, 0x5d1: 0x5f, 0x5d2: 0x60, 0x5d3: 0x61, 0x5d4: 0x62, 0x5d5: 0x63, 0x5d6: 0x64, 0x5d7: 0x65,\n\t0x5d8: 0x66, 0x5d9: 0x67, 0x5da: 0x68, 0x5db: 0x69, 0x5dc: 0x6a, 0x5dd: 0x6b, 0x5de: 0x6c, 0x5df: 0x6d,\n\t0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b,\n\t0x5e8: 0x15d, 0x5e9: 0x15e, 0x5ea: 0x15f, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba,\n\t0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba,\n\t0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x160, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba,\n\t0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba,\n\t0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba,\n\t0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba,\n\t0x620: 0x123, 0x621: 0x123, 0x622: 0x123, 0x623: 0x161, 0x624: 0x6e, 0x625: 0x162, 0x626: 0xba, 0x627: 0xba,\n\t0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba,\n\t0x630: 0xba, 0x631: 0xba, 0x632: 0xba, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba,\n\t0x638: 0x6f, 0x639: 0x70, 0x63a: 0x71, 0x63b: 0x163, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x164, 0x641: 0x9b, 0x642: 0x165, 0x643: 0x166, 0x644: 0x72, 0x645: 0x73, 0x646: 0x167, 0x647: 0x168,\n\t0x648: 0x74, 0x649: 0x169, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b,\n\t0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b,\n\t0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x16a, 0x65c: 0x9b, 0x65d: 0x16b, 0x65e: 0x9b, 0x65f: 0x16c,\n\t0x660: 0x16d, 0x661: 0x16e, 0x662: 0x16f, 0x663: 0xba, 0x664: 0x170, 0x665: 0x171, 0x666: 0x172, 0x667: 0x173,\n\t0x668: 0xba, 0x669: 0xba, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba,\n\t0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba,\n\t0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f,\n\t0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f,\n\t0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f,\n\t0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x174, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f,\n\t0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f,\n\t0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f,\n\t0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f,\n\t0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f,\n\t0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f,\n\t0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f,\n\t0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x175, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f,\n\t0x6e0: 0x176, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f,\n\t0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f,\n\t0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f,\n\t0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f,\n\t0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f,\n\t0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f,\n\t0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f,\n\t0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f,\n\t0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f,\n\t0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f,\n\t0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x177, 0x73b: 0xba, 0x73c: 0xba, 0x73d: 0xba, 0x73e: 0xba, 0x73f: 0xba,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0xba, 0x741: 0xba, 0x742: 0xba, 0x743: 0xba, 0x744: 0xba, 0x745: 0xba, 0x746: 0xba, 0x747: 0xba,\n\t0x748: 0xba, 0x749: 0xba, 0x74a: 0xba, 0x74b: 0xba, 0x74c: 0xba, 0x74d: 0xba, 0x74e: 0xba, 0x74f: 0xba,\n\t0x750: 0xba, 0x751: 0xba, 0x752: 0xba, 0x753: 0xba, 0x754: 0xba, 0x755: 0xba, 0x756: 0xba, 0x757: 0xba,\n\t0x758: 0xba, 0x759: 0xba, 0x75a: 0xba, 0x75b: 0xba, 0x75c: 0xba, 0x75d: 0xba, 0x75e: 0xba, 0x75f: 0xba,\n\t0x760: 0x75, 0x761: 0x76, 0x762: 0x77, 0x763: 0x178, 0x764: 0x78, 0x765: 0x79, 0x766: 0x179, 0x767: 0x7a,\n\t0x768: 0x7b, 0x769: 0xba, 0x76a: 0xba, 0x76b: 0xba, 0x76c: 0xba, 0x76d: 0xba, 0x76e: 0xba, 0x76f: 0xba,\n\t0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba,\n\t0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba,\n\t// Block 0x1e, offset 0x780\n\t0x790: 0x0d, 0x791: 0x0e, 0x792: 0x0f, 0x793: 0x10, 0x794: 0x11, 0x795: 0x0b, 0x796: 0x12, 0x797: 0x07,\n\t0x798: 0x13, 0x799: 0x0b, 0x79a: 0x0b, 0x79b: 0x14, 0x79c: 0x0b, 0x79d: 0x15, 0x79e: 0x16, 0x79f: 0x17,\n\t0x7a0: 0x07, 0x7a1: 0x07, 0x7a2: 0x07, 0x7a3: 0x07, 0x7a4: 0x07, 0x7a5: 0x07, 0x7a6: 0x07, 0x7a7: 0x07,\n\t0x7a8: 0x07, 0x7a9: 0x07, 0x7aa: 0x18, 0x7ab: 0x19, 0x7ac: 0x1a, 0x7ad: 0x0b, 0x7ae: 0x0b, 0x7af: 0x1b,\n\t0x7b0: 0x0b, 0x7b1: 0x0b, 0x7b2: 0x0b, 0x7b3: 0x0b, 0x7b4: 0x0b, 0x7b5: 0x0b, 0x7b6: 0x0b, 0x7b7: 0x0b,\n\t0x7b8: 0x0b, 0x7b9: 0x0b, 0x7ba: 0x0b, 0x7bb: 0x0b, 0x7bc: 0x0b, 0x7bd: 0x0b, 0x7be: 0x0b, 0x7bf: 0x0b,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x0b, 0x7c1: 0x0b, 0x7c2: 0x0b, 0x7c3: 0x0b, 0x7c4: 0x0b, 0x7c5: 0x0b, 0x7c6: 0x0b, 0x7c7: 0x0b,\n\t0x7c8: 0x0b, 0x7c9: 0x0b, 0x7ca: 0x0b, 0x7cb: 0x0b, 0x7cc: 0x0b, 0x7cd: 0x0b, 0x7ce: 0x0b, 0x7cf: 0x0b,\n\t0x7d0: 0x0b, 0x7d1: 0x0b, 0x7d2: 0x0b, 0x7d3: 0x0b, 0x7d4: 0x0b, 0x7d5: 0x0b, 0x7d6: 0x0b, 0x7d7: 0x0b,\n\t0x7d8: 0x0b, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x0b, 0x7dc: 0x0b, 0x7dd: 0x0b, 0x7de: 0x0b, 0x7df: 0x0b,\n\t0x7e0: 0x0b, 0x7e1: 0x0b, 0x7e2: 0x0b, 0x7e3: 0x0b, 0x7e4: 0x0b, 0x7e5: 0x0b, 0x7e6: 0x0b, 0x7e7: 0x0b,\n\t0x7e8: 0x0b, 0x7e9: 0x0b, 0x7ea: 0x0b, 0x7eb: 0x0b, 0x7ec: 0x0b, 0x7ed: 0x0b, 0x7ee: 0x0b, 0x7ef: 0x0b,\n\t0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b,\n\t0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x17a, 0x801: 0x17b, 0x802: 0xba, 0x803: 0xba, 0x804: 0x17c, 0x805: 0x17c, 0x806: 0x17c, 0x807: 0x17d,\n\t0x808: 0xba, 0x809: 0xba, 0x80a: 0xba, 0x80b: 0xba, 0x80c: 0xba, 0x80d: 0xba, 0x80e: 0xba, 0x80f: 0xba,\n\t0x810: 0xba, 0x811: 0xba, 0x812: 0xba, 0x813: 0xba, 0x814: 0xba, 0x815: 0xba, 0x816: 0xba, 0x817: 0xba,\n\t0x818: 0xba, 0x819: 0xba, 0x81a: 0xba, 0x81b: 0xba, 0x81c: 0xba, 0x81d: 0xba, 0x81e: 0xba, 0x81f: 0xba,\n\t0x820: 0xba, 0x821: 0xba, 0x822: 0xba, 0x823: 0xba, 0x824: 0xba, 0x825: 0xba, 0x826: 0xba, 0x827: 0xba,\n\t0x828: 0xba, 0x829: 0xba, 0x82a: 0xba, 0x82b: 0xba, 0x82c: 0xba, 0x82d: 0xba, 0x82e: 0xba, 0x82f: 0xba,\n\t0x830: 0xba, 0x831: 0xba, 0x832: 0xba, 0x833: 0xba, 0x834: 0xba, 0x835: 0xba, 0x836: 0xba, 0x837: 0xba,\n\t0x838: 0xba, 0x839: 0xba, 0x83a: 0xba, 0x83b: 0xba, 0x83c: 0xba, 0x83d: 0xba, 0x83e: 0xba, 0x83f: 0xba,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0b, 0x841: 0x0b, 0x842: 0x0b, 0x843: 0x0b, 0x844: 0x0b, 0x845: 0x0b, 0x846: 0x0b, 0x847: 0x0b,\n\t0x848: 0x0b, 0x849: 0x0b, 0x84a: 0x0b, 0x84b: 0x0b, 0x84c: 0x0b, 0x84d: 0x0b, 0x84e: 0x0b, 0x84f: 0x0b,\n\t0x850: 0x0b, 0x851: 0x0b, 0x852: 0x0b, 0x853: 0x0b, 0x854: 0x0b, 0x855: 0x0b, 0x856: 0x0b, 0x857: 0x0b,\n\t0x858: 0x0b, 0x859: 0x0b, 0x85a: 0x0b, 0x85b: 0x0b, 0x85c: 0x0b, 0x85d: 0x0b, 0x85e: 0x0b, 0x85f: 0x0b,\n\t0x860: 0x1e, 0x861: 0x0b, 0x862: 0x0b, 0x863: 0x0b, 0x864: 0x0b, 0x865: 0x0b, 0x866: 0x0b, 0x867: 0x0b,\n\t0x868: 0x0b, 0x869: 0x0b, 0x86a: 0x0b, 0x86b: 0x0b, 0x86c: 0x0b, 0x86d: 0x0b, 0x86e: 0x0b, 0x86f: 0x0b,\n\t0x870: 0x0b, 0x871: 0x0b, 0x872: 0x0b, 0x873: 0x0b, 0x874: 0x0b, 0x875: 0x0b, 0x876: 0x0b, 0x877: 0x0b,\n\t0x878: 0x0b, 0x879: 0x0b, 0x87a: 0x0b, 0x87b: 0x0b, 0x87c: 0x0b, 0x87d: 0x0b, 0x87e: 0x0b, 0x87f: 0x0b,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b,\n\t0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b,\n}\n\n// idnaSparseOffset: 258 entries, 516 bytes\nvar idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x4f, 0x5e, 0x63, 0x6b, 0x77, 0x85, 0x93, 0x98, 0xa1, 0xb1, 0xbf, 0xcc, 0xd8, 0xe9, 0xf3, 0xfa, 0x107, 0x118, 0x11f, 0x12a, 0x139, 0x147, 0x151, 0x153, 0x158, 0x15b, 0x15e, 0x160, 0x16c, 0x177, 0x17f, 0x185, 0x18b, 0x190, 0x195, 0x198, 0x19c, 0x1a2, 0x1a7, 0x1b3, 0x1bd, 0x1c3, 0x1d4, 0x1de, 0x1e1, 0x1e9, 0x1ec, 0x1f9, 0x201, 0x205, 0x20c, 0x214, 0x224, 0x230, 0x232, 0x23c, 0x248, 0x254, 0x260, 0x268, 0x26d, 0x277, 0x288, 0x28c, 0x297, 0x29b, 0x2a4, 0x2ac, 0x2b2, 0x2b7, 0x2ba, 0x2bd, 0x2c1, 0x2c7, 0x2cb, 0x2cf, 0x2d5, 0x2dc, 0x2e2, 0x2ea, 0x2f1, 0x2fc, 0x306, 0x30a, 0x30d, 0x313, 0x317, 0x319, 0x31c, 0x31e, 0x321, 0x32b, 0x32e, 0x33d, 0x341, 0x346, 0x349, 0x34d, 0x352, 0x357, 0x35d, 0x363, 0x372, 0x378, 0x37c, 0x38b, 0x390, 0x398, 0x3a2, 0x3ad, 0x3b5, 0x3c6, 0x3cf, 0x3df, 0x3ec, 0x3f6, 0x3fb, 0x408, 0x40c, 0x411, 0x413, 0x417, 0x419, 0x41d, 0x426, 0x42c, 0x430, 0x440, 0x44a, 0x44f, 0x452, 0x458, 0x45f, 0x464, 0x468, 0x46e, 0x473, 0x47c, 0x481, 0x487, 0x48e, 0x495, 0x49c, 0x4a0, 0x4a5, 0x4a8, 0x4ad, 0x4b9, 0x4bf, 0x4c4, 0x4cb, 0x4d3, 0x4d8, 0x4dc, 0x4ec, 0x4f3, 0x4f7, 0x4fb, 0x502, 0x504, 0x507, 0x50a, 0x50e, 0x512, 0x518, 0x521, 0x52d, 0x534, 0x53d, 0x545, 0x54c, 0x55a, 0x567, 0x574, 0x57d, 0x581, 0x58f, 0x597, 0x5a2, 0x5ab, 0x5b1, 0x5b9, 0x5c2, 0x5cc, 0x5cf, 0x5db, 0x5de, 0x5e3, 0x5e6, 0x5f0, 0x5f9, 0x605, 0x608, 0x60d, 0x610, 0x613, 0x616, 0x61d, 0x624, 0x628, 0x633, 0x636, 0x63c, 0x641, 0x645, 0x648, 0x64b, 0x64e, 0x653, 0x65d, 0x660, 0x664, 0x673, 0x67f, 0x683, 0x688, 0x68d, 0x691, 0x696, 0x69f, 0x6aa, 0x6b0, 0x6b8, 0x6bc, 0x6c0, 0x6c6, 0x6cc, 0x6d1, 0x6d4, 0x6e2, 0x6e9, 0x6ec, 0x6ef, 0x6f3, 0x6f9, 0x6fe, 0x708, 0x70d, 0x710, 0x713, 0x716, 0x719, 0x71d, 0x720, 0x730, 0x741, 0x746, 0x748, 0x74a}\n\n// idnaSparseValues: 1869 entries, 7476 bytes\nvar idnaSparseValues = [1869]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe105, lo: 0x80, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0x97},\n\t{value: 0xe105, lo: 0x98, hi: 0x9e},\n\t{value: 0x001f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbf},\n\t// Block 0x1, offset 0x8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0xe01d, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0335, lo: 0x83, hi: 0x83},\n\t{value: 0x034d, lo: 0x84, hi: 0x84},\n\t{value: 0x0365, lo: 0x85, hi: 0x85},\n\t{value: 0xe00d, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0xe00d, lo: 0x88, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x89},\n\t{value: 0xe00d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe00d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0x8d},\n\t{value: 0xe00d, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0xbf},\n\t// Block 0x2, offset 0x19\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0249, lo: 0xb0, hi: 0xb0},\n\t{value: 0x037d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0259, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0269, lo: 0xb3, hi: 0xb3},\n\t{value: 0x034d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0395, lo: 0xb5, hi: 0xb5},\n\t{value: 0xe1bd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0279, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0289, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbf},\n\t// Block 0x3, offset 0x25\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x3308, lo: 0x80, hi: 0xbf},\n\t// Block 0x4, offset 0x27\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x03f5, lo: 0x80, hi: 0x8f},\n\t{value: 0xe105, lo: 0x90, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5, offset 0x2c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x0545, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x0008, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x6, offset 0x34\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0401, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x88},\n\t{value: 0x0018, lo: 0x89, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7, offset 0x3f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0818, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x82},\n\t{value: 0x0818, lo: 0x83, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x8, offset 0x4b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0c08, lo: 0x88, hi: 0x99},\n\t{value: 0x0a08, lo: 0x9a, hi: 0xbf},\n\t// Block 0x9, offset 0x4f\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0c08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0a08, lo: 0x8e, hi: 0x98},\n\t{value: 0x0c08, lo: 0x99, hi: 0x9b},\n\t{value: 0x0a08, lo: 0x9c, hi: 0xaa},\n\t{value: 0x0c08, lo: 0xab, hi: 0xac},\n\t{value: 0x0a08, lo: 0xad, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0a08, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0c08, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xa, offset 0x5e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xb, offset 0x63\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0xc, offset 0x6b\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x99},\n\t{value: 0x0808, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa3},\n\t{value: 0x0808, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa7},\n\t{value: 0x0808, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0818, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd, offset 0x77\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0c08, lo: 0x80, hi: 0x80},\n\t{value: 0x0a08, lo: 0x81, hi: 0x85},\n\t{value: 0x0c08, lo: 0x86, hi: 0x87},\n\t{value: 0x0a08, lo: 0x88, hi: 0x88},\n\t{value: 0x0c08, lo: 0x89, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0x93},\n\t{value: 0x0c08, lo: 0x94, hi: 0x94},\n\t{value: 0x0a08, lo: 0x95, hi: 0x95},\n\t{value: 0x0808, lo: 0x96, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xe, offset 0x85\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0a08, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0c08, lo: 0xaa, hi: 0xac},\n\t{value: 0x0808, lo: 0xad, hi: 0xad},\n\t{value: 0x0c08, lo: 0xae, hi: 0xae},\n\t{value: 0x0a08, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0a08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0a08, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xf, offset 0x93\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa1},\n\t{value: 0x0840, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xbf},\n\t// Block 0x10, offset 0x98\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x11, offset 0xa1\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x85},\n\t{value: 0x3008, lo: 0x86, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8c},\n\t{value: 0x3b08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x12, offset 0xb1\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x13, offset 0xbf\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x14, offset 0xcc\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0040, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x15, offset 0xd8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x89},\n\t{value: 0x3b08, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x3008, lo: 0x98, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x16, offset 0xe9\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x08f1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb9},\n\t{value: 0x3b08, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x17, offset 0xf3\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0xbf},\n\t// Block 0x18, offset 0xfa\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0961, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0999, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0008, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x19, offset 0x107\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe03d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x1a, offset 0x118\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0x1b, offset 0x11f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1c, offset 0x12a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3008, lo: 0xa2, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbf},\n\t// Block 0x1d, offset 0x139\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x8c},\n\t{value: 0x3308, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x3008, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x1e, offset 0x147\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x86},\n\t{value: 0x055d, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8c},\n\t{value: 0x055d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe105, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x1f, offset 0x151\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0018, lo: 0x80, hi: 0xbf},\n\t// Block 0x20, offset 0x153\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa0},\n\t{value: 0x2018, lo: 0xa1, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x21, offset 0x158\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa7},\n\t{value: 0x2018, lo: 0xa8, hi: 0xbf},\n\t// Block 0x22, offset 0x15b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2018, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0xbf},\n\t// Block 0x23, offset 0x15e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0008, lo: 0x80, hi: 0xbf},\n\t// Block 0x24, offset 0x160\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x25, offset 0x16c\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x26, offset 0x177\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x27, offset 0x17f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x28, offset 0x185\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x29, offset 0x18b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2a, offset 0x190\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x2b, offset 0x195\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x2c, offset 0x198\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xbf},\n\t// Block 0x2d, offset 0x19c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2e, offset 0x1a2\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x2f, offset 0x1a7\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x3b08, lo: 0x94, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x30, offset 0x1b3\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x31, offset 0x1bd\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xb3},\n\t{value: 0x3340, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x32, offset 0x1c3\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x3008, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x91},\n\t{value: 0x3b08, lo: 0x92, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0x96},\n\t{value: 0x0008, lo: 0x97, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x33, offset 0x1d4\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x86},\n\t{value: 0x0218, lo: 0x87, hi: 0x87},\n\t{value: 0x0018, lo: 0x88, hi: 0x8a},\n\t{value: 0x33c0, lo: 0x8b, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0208, lo: 0xa0, hi: 0xbf},\n\t// Block 0x34, offset 0x1de\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0208, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x35, offset 0x1e1\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0208, lo: 0x87, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0208, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x36, offset 0x1e9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x37, offset 0x1ec\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x38, offset 0x1f9\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x39, offset 0x201\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x3a, offset 0x205\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0028, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xbf},\n\t// Block 0x3b, offset 0x20c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x3308, lo: 0x97, hi: 0x98},\n\t{value: 0x3008, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x3c, offset 0x214\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x94},\n\t{value: 0x3008, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xac},\n\t{value: 0x3008, lo: 0xad, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x224\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbd},\n\t{value: 0x3318, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3e, offset 0x230\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0040, lo: 0x80, hi: 0xbf},\n\t// Block 0x3f, offset 0x232\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3008, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x40, offset 0x23c\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x3808, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x41, offset 0x248\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3808, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xbf},\n\t// Block 0x42, offset 0x254\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3008, lo: 0xaa, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3808, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x43, offset 0x260\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x44, offset 0x268\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x45, offset 0x26d\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0e29, lo: 0x80, hi: 0x80},\n\t{value: 0x0e41, lo: 0x81, hi: 0x81},\n\t{value: 0x0e59, lo: 0x82, hi: 0x82},\n\t{value: 0x0e71, lo: 0x83, hi: 0x83},\n\t{value: 0x0e89, lo: 0x84, hi: 0x85},\n\t{value: 0x0ea1, lo: 0x86, hi: 0x86},\n\t{value: 0x0eb9, lo: 0x87, hi: 0x87},\n\t{value: 0x057d, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0x46, offset 0x277\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x92},\n\t{value: 0x0018, lo: 0x93, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0008, lo: 0xa9, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x47, offset 0x288\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0x48, offset 0x28c\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x87},\n\t{value: 0xe045, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0xe045, lo: 0x98, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0xe045, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbf},\n\t// Block 0x49, offset 0x297\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x3318, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x4a, offset 0x29b\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x24c1, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x4b, offset 0x2a4\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x24f1, lo: 0xac, hi: 0xac},\n\t{value: 0x2529, lo: 0xad, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xae},\n\t{value: 0x2579, lo: 0xaf, hi: 0xaf},\n\t{value: 0x25b1, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x4c, offset 0x2ac\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x9f},\n\t{value: 0x0080, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xad},\n\t{value: 0x0080, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x4d, offset 0x2b2\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa8},\n\t{value: 0x09c5, lo: 0xa9, hi: 0xa9},\n\t{value: 0x09e5, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xbf},\n\t// Block 0x4e, offset 0x2b7\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x4f, offset 0x2ba\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0x50, offset 0x2bd\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x28c1, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x51, offset 0x2c1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0e66, lo: 0xb4, hi: 0xb4},\n\t{value: 0x292a, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0e86, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x52, offset 0x2c7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x9b},\n\t{value: 0x2941, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0xbf},\n\t// Block 0x53, offset 0x2cb\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x54, offset 0x2cf\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0018, lo: 0xbd, hi: 0xbf},\n\t// Block 0x55, offset 0x2d5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0xab},\n\t{value: 0x0018, lo: 0xac, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x56, offset 0x2dc\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x03f5, lo: 0x90, hi: 0x9f},\n\t{value: 0x0ea5, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x57, offset 0x2e2\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x58, offset 0x2ea\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xae},\n\t{value: 0xe075, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x59, offset 0x2f1\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x5a, offset 0x2fc\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xbf},\n\t// Block 0x5b, offset 0x306\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5c, offset 0x30a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0xbf},\n\t// Block 0x5d, offset 0x30d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9e},\n\t{value: 0x0edd, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x5e, offset 0x313\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb2},\n\t{value: 0x0efd, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x5f, offset 0x317\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x0f1d, lo: 0x80, hi: 0xbf},\n\t// Block 0x60, offset 0x319\n\t{value: 0x0020, lo: 0x02},\n\t{value: 0x171d, lo: 0x80, hi: 0x8f},\n\t{value: 0x18fd, lo: 0x90, hi: 0xbf},\n\t// Block 0x61, offset 0x31c\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x1efd, lo: 0x80, hi: 0xbf},\n\t// Block 0x62, offset 0x31e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x63, offset 0x321\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9a},\n\t{value: 0x29e2, lo: 0x9b, hi: 0x9b},\n\t{value: 0x2a0a, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9e},\n\t{value: 0x2a31, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x64, offset 0x32b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x2a69, lo: 0xbf, hi: 0xbf},\n\t// Block 0x65, offset 0x32e\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0040, lo: 0x80, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xb0},\n\t{value: 0x2a1d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x2a3d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x2a5d, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2a7d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2a5d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2a9d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2abd, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2add, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2afd, lo: 0xba, hi: 0xbb},\n\t{value: 0x2b1d, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2afd, lo: 0xbe, hi: 0xbf},\n\t// Block 0x66, offset 0x33d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x67, offset 0x341\n\t{value: 0x0030, lo: 0x04},\n\t{value: 0x2aa2, lo: 0x80, hi: 0x9d},\n\t{value: 0x305a, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x30a2, lo: 0xa0, hi: 0xbf},\n\t// Block 0x68, offset 0x346\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x69, offset 0x349\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x6a, offset 0x34d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x6b, offset 0x352\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x6c, offset 0x357\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0018, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6d, offset 0x35d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2009, lo: 0xb8, hi: 0xb8},\n\t{value: 0x6e89, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xbf},\n\t// Block 0x6e, offset 0x363\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x3308, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0008, lo: 0x8c, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x6f, offset 0x372\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0208, lo: 0x80, hi: 0xb1},\n\t{value: 0x0108, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x70, offset 0x378\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xbf},\n\t// Block 0x71, offset 0x37c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x72, offset 0x38b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x73, offset 0x390\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x91},\n\t{value: 0x3008, lo: 0x92, hi: 0x92},\n\t{value: 0x3808, lo: 0x93, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x74, offset 0x398\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb9},\n\t{value: 0x3008, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x75, offset 0x3a2\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x76, offset 0x3ad\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x77, offset 0x3b5\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8c},\n\t{value: 0x3008, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x78, offset 0x3c6\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x79, offset 0x3cf\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x9a},\n\t{value: 0x0008, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3b08, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x7a, offset 0x3df\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x90},\n\t{value: 0x0008, lo: 0x91, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7b, offset 0x3ec\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4465, lo: 0x9c, hi: 0x9c},\n\t{value: 0x447d, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2971, lo: 0x9e, hi: 0x9e},\n\t{value: 0xe06d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xaf},\n\t{value: 0x4495, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7c, offset 0x3f6\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x44b5, lo: 0x80, hi: 0x8f},\n\t{value: 0x44d5, lo: 0x90, hi: 0x9f},\n\t{value: 0x44f5, lo: 0xa0, hi: 0xaf},\n\t{value: 0x44d5, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7d, offset 0x3fb\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3b08, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x7e, offset 0x408\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7f, offset 0x40c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x80, offset 0x411\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x4515, lo: 0x80, hi: 0xbf},\n\t// Block 0x81, offset 0x413\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x4d15, lo: 0x80, hi: 0x94},\n\t{value: 0x4ad5, lo: 0x95, hi: 0x95},\n\t{value: 0x4fb5, lo: 0x96, hi: 0xbf},\n\t// Block 0x82, offset 0x417\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x54f5, lo: 0x80, hi: 0xbf},\n\t// Block 0x83, offset 0x419\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x5cf5, lo: 0x80, hi: 0x84},\n\t{value: 0x5655, lo: 0x85, hi: 0x85},\n\t{value: 0x5d95, lo: 0x86, hi: 0xbf},\n\t// Block 0x84, offset 0x41d\n\t{value: 0x0020, lo: 0x08},\n\t{value: 0x6b55, lo: 0x80, hi: 0x8f},\n\t{value: 0x6d15, lo: 0x90, hi: 0x90},\n\t{value: 0x6d55, lo: 0x91, hi: 0xab},\n\t{value: 0x6ea1, lo: 0xac, hi: 0xac},\n\t{value: 0x70b5, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x70d5, lo: 0xb0, hi: 0xbf},\n\t// Block 0x85, offset 0x426\n\t{value: 0x0020, lo: 0x05},\n\t{value: 0x72d5, lo: 0x80, hi: 0xad},\n\t{value: 0x6535, lo: 0xae, hi: 0xae},\n\t{value: 0x7895, lo: 0xaf, hi: 0xb5},\n\t{value: 0x6f55, lo: 0xb6, hi: 0xb6},\n\t{value: 0x7975, lo: 0xb7, hi: 0xbf},\n\t// Block 0x86, offset 0x42c\n\t{value: 0x0028, lo: 0x03},\n\t{value: 0x7c21, lo: 0x80, hi: 0x82},\n\t{value: 0x7be1, lo: 0x83, hi: 0x83},\n\t{value: 0x7c99, lo: 0x84, hi: 0xbf},\n\t// Block 0x87, offset 0x430\n\t{value: 0x0038, lo: 0x0f},\n\t{value: 0x9db1, lo: 0x80, hi: 0x83},\n\t{value: 0x9e59, lo: 0x84, hi: 0x85},\n\t{value: 0x9e91, lo: 0x86, hi: 0x87},\n\t{value: 0x9ec9, lo: 0x88, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0xa089, lo: 0x92, hi: 0x97},\n\t{value: 0xa1a1, lo: 0x98, hi: 0x9c},\n\t{value: 0xa281, lo: 0x9d, hi: 0xb3},\n\t{value: 0x9d41, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9db1, lo: 0xb5, hi: 0xb5},\n\t{value: 0xa789, lo: 0xb6, hi: 0xbb},\n\t{value: 0xa869, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa7f9, lo: 0xbd, hi: 0xbd},\n\t{value: 0xa8d9, lo: 0xbe, hi: 0xbf},\n\t// Block 0x88, offset 0x440\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0008, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x89, offset 0x44a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x8a, offset 0x44f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x8b, offset 0x452\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x8c, offset 0x458\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x8d, offset 0x45f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x8e, offset 0x464\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8f, offset 0x468\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x90, offset 0x46e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x91, offset 0x473\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x92, offset 0x47c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x93, offset 0x481\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x94, offset 0x487\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x97},\n\t{value: 0x8ad5, lo: 0x98, hi: 0x9f},\n\t{value: 0x8aed, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xbf},\n\t// Block 0x95, offset 0x48e\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x8aed, lo: 0xb0, hi: 0xb7},\n\t{value: 0x8ad5, lo: 0xb8, hi: 0xbf},\n\t// Block 0x96, offset 0x495\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x97, offset 0x49c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x98, offset 0x4a0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xae},\n\t{value: 0x0018, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x99, offset 0x4a5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9a, offset 0x4a8\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xbf},\n\t// Block 0x9b, offset 0x4ad\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0808, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0808, lo: 0x8a, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0808, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0808, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9c, offset 0x4b9\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0818, lo: 0x97, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0818, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9d, offset 0x4bf\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa6},\n\t{value: 0x0818, lo: 0xa7, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x9e, offset 0x4c4\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x0818, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9f, offset 0x4cb\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0818, lo: 0x96, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0818, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa0, offset 0x4d3\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbb},\n\t{value: 0x0818, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0808, lo: 0xbe, hi: 0xbf},\n\t// Block 0xa1, offset 0x4d8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0818, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x0818, lo: 0x92, hi: 0xbf},\n\t// Block 0xa2, offset 0x4dc\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x94},\n\t{value: 0x0808, lo: 0x95, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x98},\n\t{value: 0x0808, lo: 0x99, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa3, offset 0x4ec\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0818, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0818, lo: 0x90, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0818, lo: 0xbd, hi: 0xbf},\n\t// Block 0xa4, offset 0x4f3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xa5, offset 0x4f7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xbf},\n\t// Block 0xa6, offset 0x4fb\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0818, lo: 0x98, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb7},\n\t{value: 0x0818, lo: 0xb8, hi: 0xbf},\n\t// Block 0xa7, offset 0x502\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0808, lo: 0x80, hi: 0xbf},\n\t// Block 0xa8, offset 0x504\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0808, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xa9, offset 0x507\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x03dd, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xaa, offset 0x50a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xbf},\n\t// Block 0xab, offset 0x50e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0818, lo: 0xa0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xac, offset 0x512\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xad, offset 0x518\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x91},\n\t{value: 0x0018, lo: 0x92, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xae, offset 0x521\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0340, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0xaf, offset 0x52d\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb0, offset 0x534\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb2},\n\t{value: 0x3b08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xbf},\n\t// Block 0xb1, offset 0x53d\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb2, offset 0x545\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb3, offset 0x54c\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xb4, offset 0x55a\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3808, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb5, offset 0x567\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xb6, offset 0x574\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x3308, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa9},\n\t{value: 0x3b08, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb7, offset 0x57d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xb8, offset 0x581\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xb9, offset 0x58f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xba, offset 0x597\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x85},\n\t{value: 0x0018, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xbb, offset 0x5a2\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbc, offset 0x5ab\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9b},\n\t{value: 0x3308, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xbd, offset 0x5b1\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbe, offset 0x5b9\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xbf, offset 0x5c2\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb5},\n\t{value: 0x3808, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0xc0, offset 0x5cc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xc1, offset 0x5cf\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0xc2, offset 0x5db\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xbf},\n\t// Block 0xc3, offset 0x5de\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc4, offset 0x5e3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xc5, offset 0x5e6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc6, offset 0x5f0\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xbf},\n\t// Block 0xc7, offset 0x5f9\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xa9},\n\t{value: 0x3308, lo: 0xaa, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xc8, offset 0x605\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xc9, offset 0x608\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xca, offset 0x60d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xcb, offset 0x610\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xbf},\n\t// Block 0xcc, offset 0x613\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xbf},\n\t// Block 0xcd, offset 0x616\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xce, offset 0x61d\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xcf, offset 0x624\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0xd0, offset 0x628\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0xd1, offset 0x633\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xd2, offset 0x636\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd3, offset 0x63c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xd4, offset 0x641\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0xd5, offset 0x645\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xd6, offset 0x648\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xd7, offset 0x64b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0xbf},\n\t// Block 0xd8, offset 0x64e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0xd9, offset 0x653\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x03c0, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xda, offset 0x65d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xdb, offset 0x660\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xbf},\n\t// Block 0xdc, offset 0x664\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0xb5b9, lo: 0x9e, hi: 0x9e},\n\t{value: 0xb601, lo: 0x9f, hi: 0x9f},\n\t{value: 0xb649, lo: 0xa0, hi: 0xa0},\n\t{value: 0xb6b1, lo: 0xa1, hi: 0xa1},\n\t{value: 0xb719, lo: 0xa2, hi: 0xa2},\n\t{value: 0xb781, lo: 0xa3, hi: 0xa3},\n\t{value: 0xb7e9, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3018, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3318, lo: 0xa7, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xac},\n\t{value: 0x3018, lo: 0xad, hi: 0xb2},\n\t{value: 0x0340, lo: 0xb3, hi: 0xba},\n\t{value: 0x3318, lo: 0xbb, hi: 0xbf},\n\t// Block 0xdd, offset 0x673\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3318, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x84},\n\t{value: 0x3318, lo: 0x85, hi: 0x8b},\n\t{value: 0x0018, lo: 0x8c, hi: 0xa9},\n\t{value: 0x3318, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xba},\n\t{value: 0xb851, lo: 0xbb, hi: 0xbb},\n\t{value: 0xb899, lo: 0xbc, hi: 0xbc},\n\t{value: 0xb8e1, lo: 0xbd, hi: 0xbd},\n\t{value: 0xb949, lo: 0xbe, hi: 0xbe},\n\t{value: 0xb9b1, lo: 0xbf, hi: 0xbf},\n\t// Block 0xde, offset 0x67f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xba19, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xbf},\n\t// Block 0xdf, offset 0x683\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3318, lo: 0x82, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0xbf},\n\t// Block 0xe0, offset 0x688\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xe1, offset 0x68d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0xe2, offset 0x691\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0xe3, offset 0x696\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3308, lo: 0xa1, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe4, offset 0x69f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0xe5, offset 0x6aa\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x86},\n\t{value: 0x0818, lo: 0x87, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0xe6, offset 0x6b0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0a08, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xe7, offset 0x6b8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xe8, offset 0x6bc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe9, offset 0x6c0\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0xea, offset 0x6c6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xeb, offset 0x6cc\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0xc1c1, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xec, offset 0x6d1\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xbf},\n\t// Block 0xed, offset 0x6d4\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0xc7e9, lo: 0x80, hi: 0x80},\n\t{value: 0xc839, lo: 0x81, hi: 0x81},\n\t{value: 0xc889, lo: 0x82, hi: 0x82},\n\t{value: 0xc8d9, lo: 0x83, hi: 0x83},\n\t{value: 0xc929, lo: 0x84, hi: 0x84},\n\t{value: 0xc979, lo: 0x85, hi: 0x85},\n\t{value: 0xc9c9, lo: 0x86, hi: 0x86},\n\t{value: 0xca19, lo: 0x87, hi: 0x87},\n\t{value: 0xca69, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0xcab9, lo: 0x90, hi: 0x90},\n\t{value: 0xcad9, lo: 0x91, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0xbf},\n\t// Block 0xee, offset 0x6e2\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xef, offset 0x6e9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0xf0, offset 0x6ec\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0xbf},\n\t// Block 0xf1, offset 0x6ef\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0xf2, offset 0x6f3\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0xf3, offset 0x6f9\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0xf4, offset 0x6fe\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0018, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xf5, offset 0x708\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xf6, offset 0x70d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0xbf},\n\t// Block 0xf7, offset 0x710\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0xbf},\n\t// Block 0xf8, offset 0x713\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0xf9, offset 0x716\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xfa, offset 0x719\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0xfb, offset 0x71d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xbf},\n\t// Block 0xfc, offset 0x720\n\t{value: 0x0020, lo: 0x0f},\n\t{value: 0xdeb9, lo: 0x80, hi: 0x89},\n\t{value: 0x8dfd, lo: 0x8a, hi: 0x8a},\n\t{value: 0xdff9, lo: 0x8b, hi: 0x9c},\n\t{value: 0x8e1d, lo: 0x9d, hi: 0x9d},\n\t{value: 0xe239, lo: 0x9e, hi: 0xa2},\n\t{value: 0x8e3d, lo: 0xa3, hi: 0xa3},\n\t{value: 0xe2d9, lo: 0xa4, hi: 0xab},\n\t{value: 0x7ed5, lo: 0xac, hi: 0xac},\n\t{value: 0xe3d9, lo: 0xad, hi: 0xaf},\n\t{value: 0x8e5d, lo: 0xb0, hi: 0xb0},\n\t{value: 0xe439, lo: 0xb1, hi: 0xb6},\n\t{value: 0x8e7d, lo: 0xb7, hi: 0xb9},\n\t{value: 0xe4f9, lo: 0xba, hi: 0xba},\n\t{value: 0x8edd, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe519, lo: 0xbc, hi: 0xbf},\n\t// Block 0xfd, offset 0x730\n\t{value: 0x0020, lo: 0x10},\n\t{value: 0x937d, lo: 0x80, hi: 0x80},\n\t{value: 0xf099, lo: 0x81, hi: 0x86},\n\t{value: 0x939d, lo: 0x87, hi: 0x8a},\n\t{value: 0xd9f9, lo: 0x8b, hi: 0x8b},\n\t{value: 0xf159, lo: 0x8c, hi: 0x96},\n\t{value: 0x941d, lo: 0x97, hi: 0x97},\n\t{value: 0xf2b9, lo: 0x98, hi: 0xa3},\n\t{value: 0x943d, lo: 0xa4, hi: 0xa6},\n\t{value: 0xf439, lo: 0xa7, hi: 0xaa},\n\t{value: 0x949d, lo: 0xab, hi: 0xab},\n\t{value: 0xf4b9, lo: 0xac, hi: 0xac},\n\t{value: 0x94bd, lo: 0xad, hi: 0xad},\n\t{value: 0xf4d9, lo: 0xae, hi: 0xaf},\n\t{value: 0x94dd, lo: 0xb0, hi: 0xb1},\n\t{value: 0xf519, lo: 0xb2, hi: 0xbe},\n\t{value: 0x2040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xfe, offset 0x741\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0340, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x9f},\n\t{value: 0x0340, lo: 0xa0, hi: 0xbf},\n\t// Block 0xff, offset 0x746\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0340, lo: 0x80, hi: 0xbf},\n\t// Block 0x100, offset 0x748\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x33c0, lo: 0x80, hi: 0xbf},\n\t// Block 0x101, offset 0x74a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x33c0, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n}\n\n// Total table size 41662 bytes (40KiB); checksum: 355A58A4\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/trie.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage idna\n\n// Sparse block handling code.\n\ntype valueRange struct {\n\tvalue  uint16 // header: value:stride\n\tlo, hi byte   // header: lo:n\n}\n\ntype sparseBlocks struct {\n\tvalues []valueRange\n\toffset []uint16\n}\n\nvar idnaSparse = sparseBlocks{\n\tvalues: idnaSparseValues[:],\n\toffset: idnaSparseOffset[:],\n}\n\n// Don't use newIdnaTrie to avoid unconditional linking in of the table.\nvar trie = &idnaTrie{}\n\n// lookup determines the type of block n and looks up the value for b.\n// For n < t.cutoff, the block is a simple lookup table. Otherwise, the block\n// is a list of ranges with an accompanying value. Given a matching range r,\n// the value for b is by r.value + (b - r.lo) * stride.\nfunc (t *sparseBlocks) lookup(n uint32, b byte) uint16 {\n\toffset := t.offset[n]\n\theader := t.values[offset]\n\tlo := offset + 1\n\thi := lo + uint16(header.lo)\n\tfor lo < hi {\n\t\tm := lo + (hi-lo)/2\n\t\tr := t.values[m]\n\t\tif r.lo <= b && b <= r.hi {\n\t\t\treturn r.value + uint16(b-r.lo)*header.value\n\t\t}\n\t\tif b < r.lo {\n\t\t\thi = m\n\t\t} else {\n\t\t\tlo = m + 1\n\t\t}\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/trie12.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.16\n\npackage idna\n\n// appendMapping appends the mapping for the respective rune. isMapped must be\n// true. A mapping is a categorization of a rune as defined in UTS #46.\nfunc (c info) appendMapping(b []byte, s string) []byte {\n\tindex := int(c >> indexShift)\n\tif c&xorBit == 0 {\n\t\ts := mappings[index:]\n\t\treturn append(b, s[1:s[0]+1]...)\n\t}\n\tb = append(b, s...)\n\tif c&inlineXOR == inlineXOR {\n\t\t// TODO: support and handle two-byte inline masks\n\t\tb[len(b)-1] ^= byte(index)\n\t} else {\n\t\tfor p := len(b) - int(xorData[index]); p < len(b); p++ {\n\t\t\tindex++\n\t\t\tb[p] ^= xorData[index]\n\t\t}\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/trie13.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.16\n\npackage idna\n\n// appendMapping appends the mapping for the respective rune. isMapped must be\n// true. A mapping is a categorization of a rune as defined in UTS #46.\nfunc (c info) appendMapping(b []byte, s string) []byte {\n\tindex := int(c >> indexShift)\n\tif c&xorBit == 0 {\n\t\tp := index\n\t\treturn append(b, mappings[mappingIndex[p]:mappingIndex[p+1]]...)\n\t}\n\tb = append(b, s...)\n\tif c&inlineXOR == inlineXOR {\n\t\t// TODO: support and handle two-byte inline masks\n\t\tb[len(b)-1] ^= byte(index)\n\t} else {\n\t\tfor p := len(b) - int(xorData[index]); p < len(b); p++ {\n\t\t\tindex++\n\t\t\tb[p] ^= xorData[index]\n\t\t}\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/trieval.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage idna\n\n// This file contains definitions for interpreting the trie value of the idna\n// trie generated by \"go run gen*.go\". It is shared by both the generator\n// program and the resultant package. Sharing is achieved by the generator\n// copying gen_trieval.go to trieval.go and changing what's above this comment.\n\n// info holds information from the IDNA mapping table for a single rune. It is\n// the value returned by a trie lookup. In most cases, all information fits in\n// a 16-bit value. For mappings, this value may contain an index into a slice\n// with the mapped string. Such mappings can consist of the actual mapped value\n// or an XOR pattern to be applied to the bytes of the UTF8 encoding of the\n// input rune. This technique is used by the cases packages and reduces the\n// table size significantly.\n//\n// The per-rune values have the following format:\n//\n//\tif mapped {\n//\t  if inlinedXOR {\n//\t    15..13 inline XOR marker\n//\t    12..11 unused\n//\t    10..3  inline XOR mask\n//\t  } else {\n//\t    15..3  index into xor or mapping table\n//\t  }\n//\t} else {\n//\t    15..14 unused\n//\t    13     mayNeedNorm\n//\t    12..11 attributes\n//\t    10..8  joining type\n//\t     7..3  category type\n//\t}\n//\t   2  use xor pattern\n//\t1..0  mapped category\n//\n// See the definitions below for a more detailed description of the various\n// bits.\ntype info uint16\n\nconst (\n\tcatSmallMask = 0x3\n\tcatBigMask   = 0xF8\n\tindexShift   = 3\n\txorBit       = 0x4    // interpret the index as an xor pattern\n\tinlineXOR    = 0xE000 // These bits are set if the XOR pattern is inlined.\n\n\tjoinShift = 8\n\tjoinMask  = 0x07\n\n\t// Attributes\n\tattributesMask = 0x1800\n\tviramaModifier = 0x1800\n\tmodifier       = 0x1000\n\trtl            = 0x0800\n\n\tmayNeedNorm = 0x2000\n)\n\n// A category corresponds to a category defined in the IDNA mapping table.\ntype category uint16\n\nconst (\n\tunknown              category = 0 // not currently defined in unicode.\n\tmapped               category = 1\n\tdisallowedSTD3Mapped category = 2\n\tdeviation            category = 3\n)\n\nconst (\n\tvalid               category = 0x08\n\tvalidNV8            category = 0x18\n\tvalidXV8            category = 0x28\n\tdisallowed          category = 0x40\n\tdisallowedSTD3Valid category = 0x80\n\tignored             category = 0xC0\n)\n\n// join types and additional rune information\nconst (\n\tjoiningL = (iota + 1)\n\tjoiningD\n\tjoiningT\n\tjoiningR\n\n\t//the following types are derived during processing\n\tjoinZWJ\n\tjoinZWNJ\n\tjoinVirama\n\tnumJoinTypes\n)\n\nfunc (c info) isMapped() bool {\n\treturn c&0x3 != 0\n}\n\nfunc (c info) category() category {\n\tsmall := c & catSmallMask\n\tif small != 0 {\n\t\treturn category(small)\n\t}\n\treturn category(c & catBigMask)\n}\n\nfunc (c info) joinType() info {\n\tif c.isMapped() {\n\t\treturn 0\n\t}\n\treturn (c >> joinShift) & joinMask\n}\n\nfunc (c info) isModifier() bool {\n\treturn c&(modifier|catSmallMask) == modifier\n}\n\nfunc (c info) isViramaModifier() bool {\n\treturn c&(attributesMask|catSmallMask) == viramaModifier\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/internal/httpcommon/ascii.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage httpcommon\n\nimport \"strings\"\n\n// The HTTP protocols are defined in terms of ASCII, not Unicode. This file\n// contains helper functions which may use Unicode-aware functions which would\n// otherwise be unsafe and could introduce vulnerabilities if used improperly.\n\n// asciiEqualFold is strings.EqualFold, ASCII only. It reports whether s and t\n// are equal, ASCII-case-insensitively.\nfunc asciiEqualFold(s, t string) bool {\n\tif len(s) != len(t) {\n\t\treturn false\n\t}\n\tfor i := 0; i < len(s); i++ {\n\t\tif lower(s[i]) != lower(t[i]) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// lower returns the ASCII lowercase version of b.\nfunc lower(b byte) byte {\n\tif 'A' <= b && b <= 'Z' {\n\t\treturn b + ('a' - 'A')\n\t}\n\treturn b\n}\n\n// isASCIIPrint returns whether s is ASCII and printable according to\n// https://tools.ietf.org/html/rfc20#section-4.2.\nfunc isASCIIPrint(s string) bool {\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] < ' ' || s[i] > '~' {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// asciiToLower returns the lowercase version of s if s is ASCII and printable,\n// and whether or not it was.\nfunc asciiToLower(s string) (lower string, ok bool) {\n\tif !isASCIIPrint(s) {\n\t\treturn \"\", false\n\t}\n\treturn strings.ToLower(s), true\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/internal/httpcommon/headermap.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage httpcommon\n\nimport (\n\t\"net/textproto\"\n\t\"sync\"\n)\n\nvar (\n\tcommonBuildOnce   sync.Once\n\tcommonLowerHeader map[string]string // Go-Canonical-Case -> lower-case\n\tcommonCanonHeader map[string]string // lower-case -> Go-Canonical-Case\n)\n\nfunc buildCommonHeaderMapsOnce() {\n\tcommonBuildOnce.Do(buildCommonHeaderMaps)\n}\n\nfunc buildCommonHeaderMaps() {\n\tcommon := []string{\n\t\t\"accept\",\n\t\t\"accept-charset\",\n\t\t\"accept-encoding\",\n\t\t\"accept-language\",\n\t\t\"accept-ranges\",\n\t\t\"age\",\n\t\t\"access-control-allow-credentials\",\n\t\t\"access-control-allow-headers\",\n\t\t\"access-control-allow-methods\",\n\t\t\"access-control-allow-origin\",\n\t\t\"access-control-expose-headers\",\n\t\t\"access-control-max-age\",\n\t\t\"access-control-request-headers\",\n\t\t\"access-control-request-method\",\n\t\t\"allow\",\n\t\t\"authorization\",\n\t\t\"cache-control\",\n\t\t\"content-disposition\",\n\t\t\"content-encoding\",\n\t\t\"content-language\",\n\t\t\"content-length\",\n\t\t\"content-location\",\n\t\t\"content-range\",\n\t\t\"content-type\",\n\t\t\"cookie\",\n\t\t\"date\",\n\t\t\"etag\",\n\t\t\"expect\",\n\t\t\"expires\",\n\t\t\"from\",\n\t\t\"host\",\n\t\t\"if-match\",\n\t\t\"if-modified-since\",\n\t\t\"if-none-match\",\n\t\t\"if-unmodified-since\",\n\t\t\"last-modified\",\n\t\t\"link\",\n\t\t\"location\",\n\t\t\"max-forwards\",\n\t\t\"origin\",\n\t\t\"proxy-authenticate\",\n\t\t\"proxy-authorization\",\n\t\t\"range\",\n\t\t\"referer\",\n\t\t\"refresh\",\n\t\t\"retry-after\",\n\t\t\"server\",\n\t\t\"set-cookie\",\n\t\t\"strict-transport-security\",\n\t\t\"trailer\",\n\t\t\"transfer-encoding\",\n\t\t\"user-agent\",\n\t\t\"vary\",\n\t\t\"via\",\n\t\t\"www-authenticate\",\n\t\t\"x-forwarded-for\",\n\t\t\"x-forwarded-proto\",\n\t}\n\tcommonLowerHeader = make(map[string]string, len(common))\n\tcommonCanonHeader = make(map[string]string, len(common))\n\tfor _, v := range common {\n\t\tchk := textproto.CanonicalMIMEHeaderKey(v)\n\t\tcommonLowerHeader[chk] = v\n\t\tcommonCanonHeader[v] = chk\n\t}\n}\n\n// LowerHeader returns the lowercase form of a header name,\n// used on the wire for HTTP/2 and HTTP/3 requests.\nfunc LowerHeader(v string) (lower string, ascii bool) {\n\tbuildCommonHeaderMapsOnce()\n\tif s, ok := commonLowerHeader[v]; ok {\n\t\treturn s, true\n\t}\n\treturn asciiToLower(v)\n}\n\n// CanonicalHeader canonicalizes a header name. (For example, \"host\" becomes \"Host\".)\nfunc CanonicalHeader(v string) string {\n\tbuildCommonHeaderMapsOnce()\n\tif s, ok := commonCanonHeader[v]; ok {\n\t\treturn s\n\t}\n\treturn textproto.CanonicalMIMEHeaderKey(v)\n}\n\n// CachedCanonicalHeader returns the canonical form of a well-known header name.\nfunc CachedCanonicalHeader(v string) (string, bool) {\n\tbuildCommonHeaderMapsOnce()\n\ts, ok := commonCanonHeader[v]\n\treturn s, ok\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/internal/httpcommon/request.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage httpcommon\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http/httptrace\"\n\t\"net/textproto\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/net/http/httpguts\"\n\t\"golang.org/x/net/http2/hpack\"\n)\n\nvar (\n\tErrRequestHeaderListSize = errors.New(\"request header list larger than peer's advertised limit\")\n)\n\n// Request is a subset of http.Request.\n// It'd be simpler to pass an *http.Request, of course, but we can't depend on net/http\n// without creating a dependency cycle.\ntype Request struct {\n\tURL                 *url.URL\n\tMethod              string\n\tHost                string\n\tHeader              map[string][]string\n\tTrailer             map[string][]string\n\tActualContentLength int64 // 0 means 0, -1 means unknown\n}\n\n// EncodeHeadersParam is parameters to EncodeHeaders.\ntype EncodeHeadersParam struct {\n\tRequest Request\n\n\t// AddGzipHeader indicates that an \"accept-encoding: gzip\" header should be\n\t// added to the request.\n\tAddGzipHeader bool\n\n\t// PeerMaxHeaderListSize, when non-zero, is the peer's MAX_HEADER_LIST_SIZE setting.\n\tPeerMaxHeaderListSize uint64\n\n\t// DefaultUserAgent is the User-Agent header to send when the request\n\t// neither contains a User-Agent nor disables it.\n\tDefaultUserAgent string\n}\n\n// EncodeHeadersResult is the result of EncodeHeaders.\ntype EncodeHeadersResult struct {\n\tHasBody     bool\n\tHasTrailers bool\n}\n\n// EncodeHeaders constructs request headers common to HTTP/2 and HTTP/3.\n// It validates a request and calls headerf with each pseudo-header and header\n// for the request.\n// The headerf function is called with the validated, canonicalized header name.\nfunc EncodeHeaders(ctx context.Context, param EncodeHeadersParam, headerf func(name, value string)) (res EncodeHeadersResult, _ error) {\n\treq := param.Request\n\n\t// Check for invalid connection-level headers.\n\tif err := checkConnHeaders(req.Header); err != nil {\n\t\treturn res, err\n\t}\n\n\tif req.URL == nil {\n\t\treturn res, errors.New(\"Request.URL is nil\")\n\t}\n\n\thost := req.Host\n\tif host == \"\" {\n\t\thost = req.URL.Host\n\t}\n\thost, err := httpguts.PunycodeHostPort(host)\n\tif err != nil {\n\t\treturn res, err\n\t}\n\tif !httpguts.ValidHostHeader(host) {\n\t\treturn res, errors.New(\"invalid Host header\")\n\t}\n\n\t// isNormalConnect is true if this is a non-extended CONNECT request.\n\tisNormalConnect := false\n\tvar protocol string\n\tif vv := req.Header[\":protocol\"]; len(vv) > 0 {\n\t\tprotocol = vv[0]\n\t}\n\tif req.Method == \"CONNECT\" && protocol == \"\" {\n\t\tisNormalConnect = true\n\t} else if protocol != \"\" && req.Method != \"CONNECT\" {\n\t\treturn res, errors.New(\"invalid :protocol header in non-CONNECT request\")\n\t}\n\n\t// Validate the path, except for non-extended CONNECT requests which have no path.\n\tvar path string\n\tif !isNormalConnect {\n\t\tpath = req.URL.RequestURI()\n\t\tif !validPseudoPath(path) {\n\t\t\torig := path\n\t\t\tpath = strings.TrimPrefix(path, req.URL.Scheme+\"://\"+host)\n\t\t\tif !validPseudoPath(path) {\n\t\t\t\tif req.URL.Opaque != \"\" {\n\t\t\t\t\treturn res, fmt.Errorf(\"invalid request :path %q from URL.Opaque = %q\", orig, req.URL.Opaque)\n\t\t\t\t} else {\n\t\t\t\t\treturn res, fmt.Errorf(\"invalid request :path %q\", orig)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check for any invalid headers+trailers and return an error before we\n\t// potentially pollute our hpack state. (We want to be able to\n\t// continue to reuse the hpack encoder for future requests)\n\tif err := validateHeaders(req.Header); err != \"\" {\n\t\treturn res, fmt.Errorf(\"invalid HTTP header %s\", err)\n\t}\n\tif err := validateHeaders(req.Trailer); err != \"\" {\n\t\treturn res, fmt.Errorf(\"invalid HTTP trailer %s\", err)\n\t}\n\n\ttrailers, err := commaSeparatedTrailers(req.Trailer)\n\tif err != nil {\n\t\treturn res, err\n\t}\n\n\tenumerateHeaders := func(f func(name, value string)) {\n\t\t// 8.1.2.3 Request Pseudo-Header Fields\n\t\t// The :path pseudo-header field includes the path and query parts of the\n\t\t// target URI (the path-absolute production and optionally a '?' character\n\t\t// followed by the query production, see Sections 3.3 and 3.4 of\n\t\t// [RFC3986]).\n\t\tf(\":authority\", host)\n\t\tm := req.Method\n\t\tif m == \"\" {\n\t\t\tm = \"GET\"\n\t\t}\n\t\tf(\":method\", m)\n\t\tif !isNormalConnect {\n\t\t\tf(\":path\", path)\n\t\t\tf(\":scheme\", req.URL.Scheme)\n\t\t}\n\t\tif protocol != \"\" {\n\t\t\tf(\":protocol\", protocol)\n\t\t}\n\t\tif trailers != \"\" {\n\t\t\tf(\"trailer\", trailers)\n\t\t}\n\n\t\tvar didUA bool\n\t\tfor k, vv := range req.Header {\n\t\t\tif asciiEqualFold(k, \"host\") || asciiEqualFold(k, \"content-length\") {\n\t\t\t\t// Host is :authority, already sent.\n\t\t\t\t// Content-Length is automatic, set below.\n\t\t\t\tcontinue\n\t\t\t} else if asciiEqualFold(k, \"connection\") ||\n\t\t\t\tasciiEqualFold(k, \"proxy-connection\") ||\n\t\t\t\tasciiEqualFold(k, \"transfer-encoding\") ||\n\t\t\t\tasciiEqualFold(k, \"upgrade\") ||\n\t\t\t\tasciiEqualFold(k, \"keep-alive\") {\n\t\t\t\t// Per 8.1.2.2 Connection-Specific Header\n\t\t\t\t// Fields, don't send connection-specific\n\t\t\t\t// fields. We have already checked if any\n\t\t\t\t// are error-worthy so just ignore the rest.\n\t\t\t\tcontinue\n\t\t\t} else if asciiEqualFold(k, \"user-agent\") {\n\t\t\t\t// Match Go's http1 behavior: at most one\n\t\t\t\t// User-Agent. If set to nil or empty string,\n\t\t\t\t// then omit it. Otherwise if not mentioned,\n\t\t\t\t// include the default (below).\n\t\t\t\tdidUA = true\n\t\t\t\tif len(vv) < 1 {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tvv = vv[:1]\n\t\t\t\tif vv[0] == \"\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else if asciiEqualFold(k, \"cookie\") {\n\t\t\t\t// Per 8.1.2.5 To allow for better compression efficiency, the\n\t\t\t\t// Cookie header field MAY be split into separate header fields,\n\t\t\t\t// each with one or more cookie-pairs.\n\t\t\t\tfor _, v := range vv {\n\t\t\t\t\tfor {\n\t\t\t\t\t\tp := strings.IndexByte(v, ';')\n\t\t\t\t\t\tif p < 0 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tf(\"cookie\", v[:p])\n\t\t\t\t\t\tp++\n\t\t\t\t\t\t// strip space after semicolon if any.\n\t\t\t\t\t\tfor p+1 <= len(v) && v[p] == ' ' {\n\t\t\t\t\t\t\tp++\n\t\t\t\t\t\t}\n\t\t\t\t\t\tv = v[p:]\n\t\t\t\t\t}\n\t\t\t\t\tif len(v) > 0 {\n\t\t\t\t\t\tf(\"cookie\", v)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t} else if k == \":protocol\" {\n\t\t\t\t// :protocol pseudo-header was already sent above.\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfor _, v := range vv {\n\t\t\t\tf(k, v)\n\t\t\t}\n\t\t}\n\t\tif shouldSendReqContentLength(req.Method, req.ActualContentLength) {\n\t\t\tf(\"content-length\", strconv.FormatInt(req.ActualContentLength, 10))\n\t\t}\n\t\tif param.AddGzipHeader {\n\t\t\tf(\"accept-encoding\", \"gzip\")\n\t\t}\n\t\tif !didUA {\n\t\t\tf(\"user-agent\", param.DefaultUserAgent)\n\t\t}\n\t}\n\n\t// Do a first pass over the headers counting bytes to ensure\n\t// we don't exceed cc.peerMaxHeaderListSize. This is done as a\n\t// separate pass before encoding the headers to prevent\n\t// modifying the hpack state.\n\tif param.PeerMaxHeaderListSize > 0 {\n\t\thlSize := uint64(0)\n\t\tenumerateHeaders(func(name, value string) {\n\t\t\thf := hpack.HeaderField{Name: name, Value: value}\n\t\t\thlSize += uint64(hf.Size())\n\t\t})\n\n\t\tif hlSize > param.PeerMaxHeaderListSize {\n\t\t\treturn res, ErrRequestHeaderListSize\n\t\t}\n\t}\n\n\ttrace := httptrace.ContextClientTrace(ctx)\n\n\t// Header list size is ok. Write the headers.\n\tenumerateHeaders(func(name, value string) {\n\t\tname, ascii := LowerHeader(name)\n\t\tif !ascii {\n\t\t\t// Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header\n\t\t\t// field names have to be ASCII characters (just as in HTTP/1.x).\n\t\t\treturn\n\t\t}\n\n\t\theaderf(name, value)\n\n\t\tif trace != nil && trace.WroteHeaderField != nil {\n\t\t\ttrace.WroteHeaderField(name, []string{value})\n\t\t}\n\t})\n\n\tres.HasBody = req.ActualContentLength != 0\n\tres.HasTrailers = trailers != \"\"\n\treturn res, nil\n}\n\n// IsRequestGzip reports whether we should add an Accept-Encoding: gzip header\n// for a request.\nfunc IsRequestGzip(method string, header map[string][]string, disableCompression bool) bool {\n\t// TODO(bradfitz): this is a copy of the logic in net/http. Unify somewhere?\n\tif !disableCompression &&\n\t\tlen(header[\"Accept-Encoding\"]) == 0 &&\n\t\tlen(header[\"Range\"]) == 0 &&\n\t\tmethod != \"HEAD\" {\n\t\t// Request gzip only, not deflate. Deflate is ambiguous and\n\t\t// not as universally supported anyway.\n\t\t// See: https://zlib.net/zlib_faq.html#faq39\n\t\t//\n\t\t// Note that we don't request this for HEAD requests,\n\t\t// due to a bug in nginx:\n\t\t//   http://trac.nginx.org/nginx/ticket/358\n\t\t//   https://golang.org/issue/5522\n\t\t//\n\t\t// We don't request gzip if the request is for a range, since\n\t\t// auto-decoding a portion of a gzipped document will just fail\n\t\t// anyway. See https://golang.org/issue/8923\n\t\treturn true\n\t}\n\treturn false\n}\n\n// checkConnHeaders checks whether req has any invalid connection-level headers.\n//\n// https://www.rfc-editor.org/rfc/rfc9114.html#section-4.2-3\n// https://www.rfc-editor.org/rfc/rfc9113.html#section-8.2.2-1\n//\n// Certain headers are special-cased as okay but not transmitted later.\n// For example, we allow \"Transfer-Encoding: chunked\", but drop the header when encoding.\nfunc checkConnHeaders(h map[string][]string) error {\n\tif vv := h[\"Upgrade\"]; len(vv) > 0 && (vv[0] != \"\" && vv[0] != \"chunked\") {\n\t\treturn fmt.Errorf(\"invalid Upgrade request header: %q\", vv)\n\t}\n\tif vv := h[\"Transfer-Encoding\"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != \"\" && vv[0] != \"chunked\") {\n\t\treturn fmt.Errorf(\"invalid Transfer-Encoding request header: %q\", vv)\n\t}\n\tif vv := h[\"Connection\"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != \"\" && !asciiEqualFold(vv[0], \"close\") && !asciiEqualFold(vv[0], \"keep-alive\")) {\n\t\treturn fmt.Errorf(\"invalid Connection request header: %q\", vv)\n\t}\n\treturn nil\n}\n\nfunc commaSeparatedTrailers(trailer map[string][]string) (string, error) {\n\tkeys := make([]string, 0, len(trailer))\n\tfor k := range trailer {\n\t\tk = CanonicalHeader(k)\n\t\tswitch k {\n\t\tcase \"Transfer-Encoding\", \"Trailer\", \"Content-Length\":\n\t\t\treturn \"\", fmt.Errorf(\"invalid Trailer key %q\", k)\n\t\t}\n\t\tkeys = append(keys, k)\n\t}\n\tif len(keys) > 0 {\n\t\tsort.Strings(keys)\n\t\treturn strings.Join(keys, \",\"), nil\n\t}\n\treturn \"\", nil\n}\n\n// validPseudoPath reports whether v is a valid :path pseudo-header\n// value. It must be either:\n//\n//   - a non-empty string starting with '/'\n//   - the string '*', for OPTIONS requests.\n//\n// For now this is only used a quick check for deciding when to clean\n// up Opaque URLs before sending requests from the Transport.\n// See golang.org/issue/16847\n//\n// We used to enforce that the path also didn't start with \"//\", but\n// Google's GFE accepts such paths and Chrome sends them, so ignore\n// that part of the spec. See golang.org/issue/19103.\nfunc validPseudoPath(v string) bool {\n\treturn (len(v) > 0 && v[0] == '/') || v == \"*\"\n}\n\nfunc validateHeaders(hdrs map[string][]string) string {\n\tfor k, vv := range hdrs {\n\t\tif !httpguts.ValidHeaderFieldName(k) && k != \":protocol\" {\n\t\t\treturn fmt.Sprintf(\"name %q\", k)\n\t\t}\n\t\tfor _, v := range vv {\n\t\t\tif !httpguts.ValidHeaderFieldValue(v) {\n\t\t\t\t// Don't include the value in the error,\n\t\t\t\t// because it may be sensitive.\n\t\t\t\treturn fmt.Sprintf(\"value for header %q\", k)\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// shouldSendReqContentLength reports whether we should send\n// a \"content-length\" request header. This logic is basically a copy of the net/http\n// transferWriter.shouldSendContentLength.\n// The contentLength is the corrected contentLength (so 0 means actually 0, not unknown).\n// -1 means unknown.\nfunc shouldSendReqContentLength(method string, contentLength int64) bool {\n\tif contentLength > 0 {\n\t\treturn true\n\t}\n\tif contentLength < 0 {\n\t\treturn false\n\t}\n\t// For zero bodies, whether we send a content-length depends on the method.\n\t// It also kinda doesn't matter for http2 either way, with END_STREAM.\n\tswitch method {\n\tcase \"POST\", \"PUT\", \"PATCH\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// ServerRequestParam is parameters to NewServerRequest.\ntype ServerRequestParam struct {\n\tMethod                  string\n\tScheme, Authority, Path string\n\tProtocol                string\n\tHeader                  map[string][]string\n}\n\n// ServerRequestResult is the result of NewServerRequest.\ntype ServerRequestResult struct {\n\t// Various http.Request fields.\n\tURL        *url.URL\n\tRequestURI string\n\tTrailer    map[string][]string\n\n\tNeedsContinue bool // client provided an \"Expect: 100-continue\" header\n\n\t// If the request should be rejected, this is a short string suitable for passing\n\t// to the http2 package's CountError function.\n\t// It might be a bit odd to return errors this way rather than returning an error,\n\t// but this ensures we don't forget to include a CountError reason.\n\tInvalidReason string\n}\n\nfunc NewServerRequest(rp ServerRequestParam) ServerRequestResult {\n\tneedsContinue := httpguts.HeaderValuesContainsToken(rp.Header[\"Expect\"], \"100-continue\")\n\tif needsContinue {\n\t\tdelete(rp.Header, \"Expect\")\n\t}\n\t// Merge Cookie headers into one \"; \"-delimited value.\n\tif cookies := rp.Header[\"Cookie\"]; len(cookies) > 1 {\n\t\trp.Header[\"Cookie\"] = []string{strings.Join(cookies, \"; \")}\n\t}\n\n\t// Setup Trailers\n\tvar trailer map[string][]string\n\tfor _, v := range rp.Header[\"Trailer\"] {\n\t\tfor _, key := range strings.Split(v, \",\") {\n\t\t\tkey = textproto.CanonicalMIMEHeaderKey(textproto.TrimString(key))\n\t\t\tswitch key {\n\t\t\tcase \"Transfer-Encoding\", \"Trailer\", \"Content-Length\":\n\t\t\t\t// Bogus. (copy of http1 rules)\n\t\t\t\t// Ignore.\n\t\t\tdefault:\n\t\t\t\tif trailer == nil {\n\t\t\t\t\ttrailer = make(map[string][]string)\n\t\t\t\t}\n\t\t\t\ttrailer[key] = nil\n\t\t\t}\n\t\t}\n\t}\n\tdelete(rp.Header, \"Trailer\")\n\n\t// \"':authority' MUST NOT include the deprecated userinfo subcomponent\n\t// for \"http\" or \"https\" schemed URIs.\"\n\t// https://www.rfc-editor.org/rfc/rfc9113.html#section-8.3.1-2.3.8\n\tif strings.IndexByte(rp.Authority, '@') != -1 && (rp.Scheme == \"http\" || rp.Scheme == \"https\") {\n\t\treturn ServerRequestResult{\n\t\t\tInvalidReason: \"userinfo_in_authority\",\n\t\t}\n\t}\n\n\tvar url_ *url.URL\n\tvar requestURI string\n\tif rp.Method == \"CONNECT\" && rp.Protocol == \"\" {\n\t\turl_ = &url.URL{Host: rp.Authority}\n\t\trequestURI = rp.Authority // mimic HTTP/1 server behavior\n\t} else {\n\t\tvar err error\n\t\turl_, err = url.ParseRequestURI(rp.Path)\n\t\tif err != nil {\n\t\t\treturn ServerRequestResult{\n\t\t\t\tInvalidReason: \"bad_path\",\n\t\t\t}\n\t\t}\n\t\trequestURI = rp.Path\n\t}\n\n\treturn ServerRequestResult{\n\t\tURL:           url_,\n\t\tNeedsContinue: needsContinue,\n\t\tRequestURI:    requestURI,\n\t\tTrailer:       trailer,\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/internal/httpsfv/httpsfv.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package httpsfv provides functionality for dealing with HTTP Structured\n// Field Values.\npackage httpsfv\n\nimport (\n\t\"slices\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n)\n\nfunc isLCAlpha(b byte) bool {\n\treturn (b >= 'a' && b <= 'z')\n}\n\nfunc isAlpha(b byte) bool {\n\treturn isLCAlpha(b) || (b >= 'A' && b <= 'Z')\n}\n\nfunc isDigit(b byte) bool {\n\treturn b >= '0' && b <= '9'\n}\n\nfunc isVChar(b byte) bool {\n\treturn b >= 0x21 && b <= 0x7e\n}\n\nfunc isSP(b byte) bool {\n\treturn b == 0x20\n}\n\nfunc isTChar(b byte) bool {\n\tif isAlpha(b) || isDigit(b) {\n\t\treturn true\n\t}\n\treturn slices.Contains([]byte{'!', '#', '$', '%', '&', '\\'', '*', '+', '-', '.', '^', '_', '`', '|', '~'}, b)\n}\n\nfunc countLeftWhitespace(s string) int {\n\ti := 0\n\tfor _, ch := range []byte(s) {\n\t\tif ch != ' ' && ch != '\\t' {\n\t\t\tbreak\n\t\t}\n\t\ti++\n\t}\n\treturn i\n}\n\n// https://www.rfc-editor.org/rfc/rfc4648#section-8.\nfunc decOctetHex(ch1, ch2 byte) (ch byte, ok bool) {\n\tdecBase16 := func(in byte) (out byte, ok bool) {\n\t\tif !isDigit(in) && !(in >= 'a' && in <= 'f') {\n\t\t\treturn 0, false\n\t\t}\n\t\tif isDigit(in) {\n\t\t\treturn in - '0', true\n\t\t}\n\t\treturn in - 'a' + 10, true\n\t}\n\n\tif ch1, ok = decBase16(ch1); !ok {\n\t\treturn 0, ok\n\t}\n\tif ch2, ok = decBase16(ch2); !ok {\n\t\treturn 0, ok\n\t}\n\treturn ch1<<4 | ch2, true\n}\n\n// ParseList parses a list from a given HTTP Structured Field Values.\n//\n// Given an HTTP SFV string that represents a list, it will call the given\n// function using each of the members and parameters contained in the list.\n// This allows the caller to extract information out of the list.\n//\n// This function will return once it encounters the end of the string, or\n// something that is not a list. If it cannot consume the entire given\n// string, the ok value returned will be false.\n//\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-list.\nfunc ParseList(s string, f func(member, param string)) (ok bool) {\n\tfor len(s) != 0 {\n\t\tvar member, param string\n\t\tif len(s) != 0 && s[0] == '(' {\n\t\t\tif member, s, ok = consumeBareInnerList(s, nil); !ok {\n\t\t\t\treturn ok\n\t\t\t}\n\t\t} else {\n\t\t\tif member, s, ok = consumeBareItem(s); !ok {\n\t\t\t\treturn ok\n\t\t\t}\n\t\t}\n\t\tif param, s, ok = consumeParameter(s, nil); !ok {\n\t\t\treturn ok\n\t\t}\n\t\tif f != nil {\n\t\t\tf(member, param)\n\t\t}\n\n\t\ts = s[countLeftWhitespace(s):]\n\t\tif len(s) == 0 {\n\t\t\tbreak\n\t\t}\n\t\tif s[0] != ',' {\n\t\t\treturn false\n\t\t}\n\t\ts = s[1:]\n\t\ts = s[countLeftWhitespace(s):]\n\t\tif len(s) == 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// consumeBareInnerList consumes an inner list\n// (https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-an-inner-list),\n// except for the inner list's top-most parameter.\n// For example, given `(a;b c;d);e`, it will consume only `(a;b c;d)`.\nfunc consumeBareInnerList(s string, f func(bareItem, param string)) (consumed, rest string, ok bool) {\n\tif len(s) == 0 || s[0] != '(' {\n\t\treturn \"\", s, false\n\t}\n\trest = s[1:]\n\tfor len(rest) != 0 {\n\t\tvar bareItem, param string\n\t\trest = rest[countLeftWhitespace(rest):]\n\t\tif len(rest) != 0 && rest[0] == ')' {\n\t\t\trest = rest[1:]\n\t\t\tbreak\n\t\t}\n\t\tif bareItem, rest, ok = consumeBareItem(rest); !ok {\n\t\t\treturn \"\", s, ok\n\t\t}\n\t\tif param, rest, ok = consumeParameter(rest, nil); !ok {\n\t\t\treturn \"\", s, ok\n\t\t}\n\t\tif len(rest) == 0 || (rest[0] != ')' && !isSP(rest[0])) {\n\t\t\treturn \"\", s, false\n\t\t}\n\t\tif f != nil {\n\t\t\tf(bareItem, param)\n\t\t}\n\t}\n\treturn s[:len(s)-len(rest)], rest, true\n}\n\n// ParseBareInnerList parses a bare inner list from a given HTTP Structured\n// Field Values.\n//\n// We define a bare inner list as an inner list\n// (https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-an-inner-list),\n// without the top-most parameter of the inner list. For example, given the\n// inner list `(a;b c;d);e`, the bare inner list would be `(a;b c;d)`.\n//\n// Given an HTTP SFV string that represents a bare inner list, it will call the\n// given function using each of the bare item and parameter within the bare\n// inner list. This allows the caller to extract information out of the bare\n// inner list.\n//\n// This function will return once it encounters the end of the bare inner list,\n// or something that is not a bare inner list. If it cannot consume the entire\n// given string, the ok value returned will be false.\nfunc ParseBareInnerList(s string, f func(bareItem, param string)) (ok bool) {\n\t_, rest, ok := consumeBareInnerList(s, f)\n\treturn rest == \"\" && ok\n}\n\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-an-item.\nfunc consumeItem(s string, f func(bareItem, param string)) (consumed, rest string, ok bool) {\n\tvar bareItem, param string\n\tif bareItem, rest, ok = consumeBareItem(s); !ok {\n\t\treturn \"\", s, ok\n\t}\n\tif param, rest, ok = consumeParameter(rest, nil); !ok {\n\t\treturn \"\", s, ok\n\t}\n\tif f != nil {\n\t\tf(bareItem, param)\n\t}\n\treturn s[:len(s)-len(rest)], rest, true\n}\n\n// ParseItem parses an item from a given HTTP Structured Field Values.\n//\n// Given an HTTP SFV string that represents an item, it will call the given\n// function once, with the bare item and the parameter of the item. This allows\n// the caller to extract information out of the item.\n//\n// This function will return once it encounters the end of the string, or\n// something that is not an item. If it cannot consume the entire given\n// string, the ok value returned will be false.\n//\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-an-item.\nfunc ParseItem(s string, f func(bareItem, param string)) (ok bool) {\n\t_, rest, ok := consumeItem(s, f)\n\treturn rest == \"\" && ok\n}\n\n// ParseDictionary parses a dictionary from a given HTTP Structured Field\n// Values.\n//\n// Given an HTTP SFV string that represents a dictionary, it will call the\n// given function using each of the keys, values, and parameters contained in\n// the dictionary. This allows the caller to extract information out of the\n// dictionary.\n//\n// This function will return once it encounters the end of the string, or\n// something that is not a dictionary. If it cannot consume the entire given\n// string, the ok value returned will be false.\n//\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-dictionary.\nfunc ParseDictionary(s string, f func(key, val, param string)) (ok bool) {\n\tfor len(s) != 0 {\n\t\tvar key, val, param string\n\t\tval = \"?1\" // Default value for empty val is boolean true.\n\t\tif key, s, ok = consumeKey(s); !ok {\n\t\t\treturn ok\n\t\t}\n\t\tif len(s) != 0 && s[0] == '=' {\n\t\t\ts = s[1:]\n\t\t\tif len(s) != 0 && s[0] == '(' {\n\t\t\t\tif val, s, ok = consumeBareInnerList(s, nil); !ok {\n\t\t\t\t\treturn ok\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif val, s, ok = consumeBareItem(s); !ok {\n\t\t\t\t\treturn ok\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif param, s, ok = consumeParameter(s, nil); !ok {\n\t\t\treturn ok\n\t\t}\n\t\tif f != nil {\n\t\t\tf(key, val, param)\n\t\t}\n\t\ts = s[countLeftWhitespace(s):]\n\t\tif len(s) == 0 {\n\t\t\tbreak\n\t\t}\n\t\tif s[0] == ',' {\n\t\t\ts = s[1:]\n\t\t}\n\t\ts = s[countLeftWhitespace(s):]\n\t\tif len(s) == 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// https://www.rfc-editor.org/rfc/rfc9651.html#parse-param.\nfunc consumeParameter(s string, f func(key, val string)) (consumed, rest string, ok bool) {\n\trest = s\n\tfor len(rest) != 0 {\n\t\tvar key, val string\n\t\tval = \"?1\" // Default value for empty val is boolean true.\n\t\tif rest[0] != ';' {\n\t\t\tbreak\n\t\t}\n\t\trest = rest[1:]\n\t\trest = rest[countLeftWhitespace(rest):]\n\t\tkey, rest, ok = consumeKey(rest)\n\t\tif !ok {\n\t\t\treturn \"\", s, ok\n\t\t}\n\t\tif len(rest) != 0 && rest[0] == '=' {\n\t\t\trest = rest[1:]\n\t\t\tval, rest, ok = consumeBareItem(rest)\n\t\t\tif !ok {\n\t\t\t\treturn \"\", s, ok\n\t\t\t}\n\t\t}\n\t\tif f != nil {\n\t\t\tf(key, val)\n\t\t}\n\t}\n\treturn s[:len(s)-len(rest)], rest, true\n}\n\n// ParseParameter parses a parameter from a given HTTP Structured Field Values.\n//\n// Given an HTTP SFV string that represents a parameter, it will call the given\n// function using each of the keys and values contained in the parameter. This\n// allows the caller to extract information out of the parameter.\n//\n// This function will return once it encounters the end of the string, or\n// something that is not a parameter. If it cannot consume the entire given\n// string, the ok value returned will be false.\n//\n// https://www.rfc-editor.org/rfc/rfc9651.html#parse-param.\nfunc ParseParameter(s string, f func(key, val string)) (ok bool) {\n\t_, rest, ok := consumeParameter(s, f)\n\treturn rest == \"\" && ok\n}\n\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-key.\nfunc consumeKey(s string) (consumed, rest string, ok bool) {\n\tif len(s) == 0 || (!isLCAlpha(s[0]) && s[0] != '*') {\n\t\treturn \"\", s, false\n\t}\n\ti := 0\n\tfor _, ch := range []byte(s) {\n\t\tif !isLCAlpha(ch) && !isDigit(ch) && !slices.Contains([]byte(\"_-.*\"), ch) {\n\t\t\tbreak\n\t\t}\n\t\ti++\n\t}\n\treturn s[:i], s[i:], true\n}\n\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-an-integer-or-decim.\nfunc consumeIntegerOrDecimal(s string) (consumed, rest string, ok bool) {\n\tvar i, signOffset, periodIndex int\n\tvar isDecimal bool\n\tif i < len(s) && s[i] == '-' {\n\t\ti++\n\t\tsignOffset++\n\t}\n\tif i >= len(s) {\n\t\treturn \"\", s, false\n\t}\n\tif !isDigit(s[i]) {\n\t\treturn \"\", s, false\n\t}\n\tfor i < len(s) {\n\t\tch := s[i]\n\t\tif isDigit(ch) {\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\t\tif !isDecimal && ch == '.' {\n\t\t\tif i-signOffset > 12 {\n\t\t\t\treturn \"\", s, false\n\t\t\t}\n\t\t\tperiodIndex = i\n\t\t\tisDecimal = true\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\t\tbreak\n\t}\n\tif !isDecimal && i-signOffset > 15 {\n\t\treturn \"\", s, false\n\t}\n\tif isDecimal {\n\t\tif i-signOffset > 16 {\n\t\t\treturn \"\", s, false\n\t\t}\n\t\tif s[i-1] == '.' {\n\t\t\treturn \"\", s, false\n\t\t}\n\t\tif i-periodIndex-1 > 3 {\n\t\t\treturn \"\", s, false\n\t\t}\n\t}\n\treturn s[:i], s[i:], true\n}\n\n// ParseInteger parses an integer from a given HTTP Structured Field Values.\n//\n// The entire HTTP SFV string must consist of a valid integer. It returns the\n// parsed integer and an ok boolean value, indicating success or not.\n//\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-an-integer-or-decim.\nfunc ParseInteger(s string) (parsed int64, ok bool) {\n\tif _, rest, ok := consumeIntegerOrDecimal(s); !ok || rest != \"\" {\n\t\treturn 0, false\n\t}\n\tif n, err := strconv.ParseInt(s, 10, 64); err == nil {\n\t\treturn n, true\n\t}\n\treturn 0, false\n}\n\n// ParseDecimal parses a decimal from a given HTTP Structured Field Values.\n//\n// The entire HTTP SFV string must consist of a valid decimal. It returns the\n// parsed decimal and an ok boolean value, indicating success or not.\n//\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-an-integer-or-decim.\nfunc ParseDecimal(s string) (parsed float64, ok bool) {\n\tif _, rest, ok := consumeIntegerOrDecimal(s); !ok || rest != \"\" {\n\t\treturn 0, false\n\t}\n\tif !strings.Contains(s, \".\") {\n\t\treturn 0, false\n\t}\n\tif n, err := strconv.ParseFloat(s, 64); err == nil {\n\t\treturn n, true\n\t}\n\treturn 0, false\n}\n\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-string.\nfunc consumeString(s string) (consumed, rest string, ok bool) {\n\tif len(s) == 0 || s[0] != '\"' {\n\t\treturn \"\", s, false\n\t}\n\tfor i := 1; i < len(s); i++ {\n\t\tswitch ch := s[i]; ch {\n\t\tcase '\\\\':\n\t\t\tif i+1 >= len(s) {\n\t\t\t\treturn \"\", s, false\n\t\t\t}\n\t\t\ti++\n\t\t\tif ch = s[i]; ch != '\"' && ch != '\\\\' {\n\t\t\t\treturn \"\", s, false\n\t\t\t}\n\t\tcase '\"':\n\t\t\treturn s[:i+1], s[i+1:], true\n\t\tdefault:\n\t\t\tif !isVChar(ch) && !isSP(ch) {\n\t\t\t\treturn \"\", s, false\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\", s, false\n}\n\n// ParseString parses a Go string from a given HTTP Structured Field Values.\n//\n// The entire HTTP SFV string must consist of a valid string. It returns the\n// parsed string and an ok boolean value, indicating success or not.\n//\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-string.\nfunc ParseString(s string) (parsed string, ok bool) {\n\tif _, rest, ok := consumeString(s); !ok || rest != \"\" {\n\t\treturn \"\", false\n\t}\n\treturn s[1 : len(s)-1], true\n}\n\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-token\nfunc consumeToken(s string) (consumed, rest string, ok bool) {\n\tif len(s) == 0 || (!isAlpha(s[0]) && s[0] != '*') {\n\t\treturn \"\", s, false\n\t}\n\ti := 0\n\tfor _, ch := range []byte(s) {\n\t\tif !isTChar(ch) && !slices.Contains([]byte(\":/\"), ch) {\n\t\t\tbreak\n\t\t}\n\t\ti++\n\t}\n\treturn s[:i], s[i:], true\n}\n\n// ParseToken parses a token from a given HTTP Structured Field Values.\n//\n// The entire HTTP SFV string must consist of a valid token. It returns the\n// parsed token and an ok boolean value, indicating success or not.\n//\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-token\nfunc ParseToken(s string) (parsed string, ok bool) {\n\tif _, rest, ok := consumeToken(s); !ok || rest != \"\" {\n\t\treturn \"\", false\n\t}\n\treturn s, true\n}\n\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-byte-sequence.\nfunc consumeByteSequence(s string) (consumed, rest string, ok bool) {\n\tif len(s) == 0 || s[0] != ':' {\n\t\treturn \"\", s, false\n\t}\n\tfor i := 1; i < len(s); i++ {\n\t\tif ch := s[i]; ch == ':' {\n\t\t\treturn s[:i+1], s[i+1:], true\n\t\t}\n\t\tif ch := s[i]; !isAlpha(ch) && !isDigit(ch) && !slices.Contains([]byte(\"+/=\"), ch) {\n\t\t\treturn \"\", s, false\n\t\t}\n\t}\n\treturn \"\", s, false\n}\n\n// ParseByteSequence parses a byte sequence from a given HTTP Structured Field\n// Values.\n//\n// The entire HTTP SFV string must consist of a valid byte sequence. It returns\n// the parsed byte sequence and an ok boolean value, indicating success or not.\n//\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-byte-sequence.\nfunc ParseByteSequence(s string) (parsed []byte, ok bool) {\n\tif _, rest, ok := consumeByteSequence(s); !ok || rest != \"\" {\n\t\treturn nil, false\n\t}\n\treturn []byte(s[1 : len(s)-1]), true\n}\n\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-boolean.\nfunc consumeBoolean(s string) (consumed, rest string, ok bool) {\n\tif len(s) >= 2 && (s[:2] == \"?0\" || s[:2] == \"?1\") {\n\t\treturn s[:2], s[2:], true\n\t}\n\treturn \"\", s, false\n}\n\n// ParseBoolean parses a boolean from a given HTTP Structured Field Values.\n//\n// The entire HTTP SFV string must consist of a valid boolean. It returns the\n// parsed boolean and an ok boolean value, indicating success or not.\n//\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-boolean.\nfunc ParseBoolean(s string) (parsed bool, ok bool) {\n\tif _, rest, ok := consumeBoolean(s); !ok || rest != \"\" {\n\t\treturn false, false\n\t}\n\treturn s == \"?1\", true\n}\n\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-date.\nfunc consumeDate(s string) (consumed, rest string, ok bool) {\n\tif len(s) == 0 || s[0] != '@' {\n\t\treturn \"\", s, false\n\t}\n\tif _, rest, ok = consumeIntegerOrDecimal(s[1:]); !ok {\n\t\treturn \"\", s, ok\n\t}\n\tconsumed = s[:len(s)-len(rest)]\n\tif slices.Contains([]byte(consumed), '.') {\n\t\treturn \"\", s, false\n\t}\n\treturn consumed, rest, ok\n}\n\n// ParseDate parses a date from a given HTTP Structured Field Values.\n//\n// The entire HTTP SFV string must consist of a valid date. It returns the\n// parsed date and an ok boolean value, indicating success or not.\n//\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-date.\nfunc ParseDate(s string) (parsed time.Time, ok bool) {\n\tif _, rest, ok := consumeDate(s); !ok || rest != \"\" {\n\t\treturn time.Time{}, false\n\t}\n\tif n, ok := ParseInteger(s[1:]); !ok {\n\t\treturn time.Time{}, false\n\t} else {\n\t\treturn time.Unix(n, 0), true\n\t}\n}\n\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-display-string.\nfunc consumeDisplayString(s string) (consumed, rest string, ok bool) {\n\t// To prevent excessive allocation, especially when input is large, we\n\t// maintain a buffer of 4 bytes to keep track of the last rune we\n\t// encounter. This way, we can validate that the display string conforms to\n\t// UTF-8 without actually building the whole string.\n\tvar lastRune [4]byte\n\tvar runeLen int\n\tisPartOfValidRune := func(ch byte) bool {\n\t\tlastRune[runeLen] = ch\n\t\truneLen++\n\t\tif utf8.FullRune(lastRune[:runeLen]) {\n\t\t\tr, s := utf8.DecodeRune(lastRune[:runeLen])\n\t\t\tif r == utf8.RuneError {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tcopy(lastRune[:], lastRune[s:runeLen])\n\t\t\truneLen -= s\n\t\t\treturn true\n\t\t}\n\t\treturn runeLen <= 4\n\t}\n\n\tif len(s) <= 1 || s[:2] != `%\"` {\n\t\treturn \"\", s, false\n\t}\n\ti := 2\n\tfor i < len(s) {\n\t\tch := s[i]\n\t\tif !isVChar(ch) && !isSP(ch) {\n\t\t\treturn \"\", s, false\n\t\t}\n\t\tswitch ch {\n\t\tcase '\"':\n\t\t\tif runeLen > 0 {\n\t\t\t\treturn \"\", s, false\n\t\t\t}\n\t\t\treturn s[:i+1], s[i+1:], true\n\t\tcase '%':\n\t\t\tif i+2 >= len(s) {\n\t\t\t\treturn \"\", s, false\n\t\t\t}\n\t\t\tif ch, ok = decOctetHex(s[i+1], s[i+2]); !ok {\n\t\t\t\treturn \"\", s, ok\n\t\t\t}\n\t\t\tif ok = isPartOfValidRune(ch); !ok {\n\t\t\t\treturn \"\", s, ok\n\t\t\t}\n\t\t\ti += 3\n\t\tdefault:\n\t\t\tif ok = isPartOfValidRune(ch); !ok {\n\t\t\t\treturn \"\", s, ok\n\t\t\t}\n\t\t\ti++\n\t\t}\n\t}\n\treturn \"\", s, false\n}\n\n// ParseDisplayString parses a display string from a given HTTP Structured\n// Field Values.\n//\n// The entire HTTP SFV string must consist of a valid display string. It\n// returns the parsed display string and an ok boolean value, indicating\n// success or not.\n//\n// https://www.rfc-editor.org/rfc/rfc9651.html#name-parsing-a-display-string.\nfunc ParseDisplayString(s string) (parsed string, ok bool) {\n\tif _, rest, ok := consumeDisplayString(s); !ok || rest != \"\" {\n\t\treturn \"\", false\n\t}\n\t// consumeDisplayString() already validates that we have a valid display\n\t// string. Therefore, we can just construct the display string, without\n\t// validating it again.\n\ts = s[2 : len(s)-1]\n\tvar b strings.Builder\n\tfor i := 0; i < len(s); {\n\t\tif s[i] == '%' {\n\t\t\tdecoded, _ := decOctetHex(s[i+1], s[i+2])\n\t\t\tb.WriteByte(decoded)\n\t\t\ti += 3\n\t\t\tcontinue\n\t\t}\n\t\tb.WriteByte(s[i])\n\t\ti++\n\t}\n\treturn b.String(), true\n}\n\n// https://www.rfc-editor.org/rfc/rfc9651.html#parse-bare-item.\nfunc consumeBareItem(s string) (consumed, rest string, ok bool) {\n\tif len(s) == 0 {\n\t\treturn \"\", s, false\n\t}\n\tch := s[0]\n\tswitch {\n\tcase ch == '-' || isDigit(ch):\n\t\treturn consumeIntegerOrDecimal(s)\n\tcase ch == '\"':\n\t\treturn consumeString(s)\n\tcase ch == '*' || isAlpha(ch):\n\t\treturn consumeToken(s)\n\tcase ch == ':':\n\t\treturn consumeByteSequence(s)\n\tcase ch == '?':\n\t\treturn consumeBoolean(s)\n\tcase ch == '@':\n\t\treturn consumeDate(s)\n\tcase ch == '%':\n\t\treturn consumeDisplayString(s)\n\tdefault:\n\t\treturn \"\", s, false\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/internal/timeseries/timeseries.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package timeseries implements a time series structure for stats collection.\npackage timeseries // import \"golang.org/x/net/internal/timeseries\"\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"time\"\n)\n\nconst (\n\ttimeSeriesNumBuckets       = 64\n\tminuteHourSeriesNumBuckets = 60\n)\n\nvar timeSeriesResolutions = []time.Duration{\n\t1 * time.Second,\n\t10 * time.Second,\n\t1 * time.Minute,\n\t10 * time.Minute,\n\t1 * time.Hour,\n\t6 * time.Hour,\n\t24 * time.Hour,          // 1 day\n\t7 * 24 * time.Hour,      // 1 week\n\t4 * 7 * 24 * time.Hour,  // 4 weeks\n\t16 * 7 * 24 * time.Hour, // 16 weeks\n}\n\nvar minuteHourSeriesResolutions = []time.Duration{\n\t1 * time.Second,\n\t1 * time.Minute,\n}\n\n// An Observable is a kind of data that can be aggregated in a time series.\ntype Observable interface {\n\tMultiply(ratio float64)    // Multiplies the data in self by a given ratio\n\tAdd(other Observable)      // Adds the data from a different observation to self\n\tClear()                    // Clears the observation so it can be reused.\n\tCopyFrom(other Observable) // Copies the contents of a given observation to self\n}\n\n// Float attaches the methods of Observable to a float64.\ntype Float float64\n\n// NewFloat returns a Float.\nfunc NewFloat() Observable {\n\tf := Float(0)\n\treturn &f\n}\n\n// String returns the float as a string.\nfunc (f *Float) String() string { return fmt.Sprintf(\"%g\", f.Value()) }\n\n// Value returns the float's value.\nfunc (f *Float) Value() float64 { return float64(*f) }\n\nfunc (f *Float) Multiply(ratio float64) { *f *= Float(ratio) }\n\nfunc (f *Float) Add(other Observable) {\n\to := other.(*Float)\n\t*f += *o\n}\n\nfunc (f *Float) Clear() { *f = 0 }\n\nfunc (f *Float) CopyFrom(other Observable) {\n\to := other.(*Float)\n\t*f = *o\n}\n\n// A Clock tells the current time.\ntype Clock interface {\n\tTime() time.Time\n}\n\ntype defaultClock int\n\nvar defaultClockInstance defaultClock\n\nfunc (defaultClock) Time() time.Time { return time.Now() }\n\n// Information kept per level. Each level consists of a circular list of\n// observations. The start of the level may be derived from end and the\n// len(buckets) * sizeInMillis.\ntype tsLevel struct {\n\toldest   int               // index to oldest bucketed Observable\n\tnewest   int               // index to newest bucketed Observable\n\tend      time.Time         // end timestamp for this level\n\tsize     time.Duration     // duration of the bucketed Observable\n\tbuckets  []Observable      // collections of observations\n\tprovider func() Observable // used for creating new Observable\n}\n\nfunc (l *tsLevel) Clear() {\n\tl.oldest = 0\n\tl.newest = len(l.buckets) - 1\n\tl.end = time.Time{}\n\tfor i := range l.buckets {\n\t\tif l.buckets[i] != nil {\n\t\t\tl.buckets[i].Clear()\n\t\t\tl.buckets[i] = nil\n\t\t}\n\t}\n}\n\nfunc (l *tsLevel) InitLevel(size time.Duration, numBuckets int, f func() Observable) {\n\tl.size = size\n\tl.provider = f\n\tl.buckets = make([]Observable, numBuckets)\n}\n\n// Keeps a sequence of levels. Each level is responsible for storing data at\n// a given resolution. For example, the first level stores data at a one\n// minute resolution while the second level stores data at a one hour\n// resolution.\n\n// Each level is represented by a sequence of buckets. Each bucket spans an\n// interval equal to the resolution of the level. New observations are added\n// to the last bucket.\ntype timeSeries struct {\n\tprovider    func() Observable // make more Observable\n\tnumBuckets  int               // number of buckets in each level\n\tlevels      []*tsLevel        // levels of bucketed Observable\n\tlastAdd     time.Time         // time of last Observable tracked\n\ttotal       Observable        // convenient aggregation of all Observable\n\tclock       Clock             // Clock for getting current time\n\tpending     Observable        // observations not yet bucketed\n\tpendingTime time.Time         // what time are we keeping in pending\n\tdirty       bool              // if there are pending observations\n}\n\n// init initializes a level according to the supplied criteria.\nfunc (ts *timeSeries) init(resolutions []time.Duration, f func() Observable, numBuckets int, clock Clock) {\n\tts.provider = f\n\tts.numBuckets = numBuckets\n\tts.clock = clock\n\tts.levels = make([]*tsLevel, len(resolutions))\n\n\tfor i := range resolutions {\n\t\tif i > 0 && resolutions[i-1] >= resolutions[i] {\n\t\t\tlog.Print(\"timeseries: resolutions must be monotonically increasing\")\n\t\t\tbreak\n\t\t}\n\t\tnewLevel := new(tsLevel)\n\t\tnewLevel.InitLevel(resolutions[i], ts.numBuckets, ts.provider)\n\t\tts.levels[i] = newLevel\n\t}\n\n\tts.Clear()\n}\n\n// Clear removes all observations from the time series.\nfunc (ts *timeSeries) Clear() {\n\tts.lastAdd = time.Time{}\n\tts.total = ts.resetObservation(ts.total)\n\tts.pending = ts.resetObservation(ts.pending)\n\tts.pendingTime = time.Time{}\n\tts.dirty = false\n\n\tfor i := range ts.levels {\n\t\tts.levels[i].Clear()\n\t}\n}\n\n// Add records an observation at the current time.\nfunc (ts *timeSeries) Add(observation Observable) {\n\tts.AddWithTime(observation, ts.clock.Time())\n}\n\n// AddWithTime records an observation at the specified time.\nfunc (ts *timeSeries) AddWithTime(observation Observable, t time.Time) {\n\n\tsmallBucketDuration := ts.levels[0].size\n\n\tif t.After(ts.lastAdd) {\n\t\tts.lastAdd = t\n\t}\n\n\tif t.After(ts.pendingTime) {\n\t\tts.advance(t)\n\t\tts.mergePendingUpdates()\n\t\tts.pendingTime = ts.levels[0].end\n\t\tts.pending.CopyFrom(observation)\n\t\tts.dirty = true\n\t} else if t.After(ts.pendingTime.Add(-1 * smallBucketDuration)) {\n\t\t// The observation is close enough to go into the pending bucket.\n\t\t// This compensates for clock skewing and small scheduling delays\n\t\t// by letting the update stay in the fast path.\n\t\tts.pending.Add(observation)\n\t\tts.dirty = true\n\t} else {\n\t\tts.mergeValue(observation, t)\n\t}\n}\n\n// mergeValue inserts the observation at the specified time in the past into all levels.\nfunc (ts *timeSeries) mergeValue(observation Observable, t time.Time) {\n\tfor _, level := range ts.levels {\n\t\tindex := (ts.numBuckets - 1) - int(level.end.Sub(t)/level.size)\n\t\tif 0 <= index && index < ts.numBuckets {\n\t\t\tbucketNumber := (level.oldest + index) % ts.numBuckets\n\t\t\tif level.buckets[bucketNumber] == nil {\n\t\t\t\tlevel.buckets[bucketNumber] = level.provider()\n\t\t\t}\n\t\t\tlevel.buckets[bucketNumber].Add(observation)\n\t\t}\n\t}\n\tts.total.Add(observation)\n}\n\n// mergePendingUpdates applies the pending updates into all levels.\nfunc (ts *timeSeries) mergePendingUpdates() {\n\tif ts.dirty {\n\t\tts.mergeValue(ts.pending, ts.pendingTime)\n\t\tts.pending = ts.resetObservation(ts.pending)\n\t\tts.dirty = false\n\t}\n}\n\n// advance cycles the buckets at each level until the latest bucket in\n// each level can hold the time specified.\nfunc (ts *timeSeries) advance(t time.Time) {\n\tif !t.After(ts.levels[0].end) {\n\t\treturn\n\t}\n\tfor i := 0; i < len(ts.levels); i++ {\n\t\tlevel := ts.levels[i]\n\t\tif !level.end.Before(t) {\n\t\t\tbreak\n\t\t}\n\n\t\t// If the time is sufficiently far, just clear the level and advance\n\t\t// directly.\n\t\tif !t.Before(level.end.Add(level.size * time.Duration(ts.numBuckets))) {\n\t\t\tfor _, b := range level.buckets {\n\t\t\t\tts.resetObservation(b)\n\t\t\t}\n\t\t\tlevel.end = time.Unix(0, (t.UnixNano()/level.size.Nanoseconds())*level.size.Nanoseconds())\n\t\t}\n\n\t\tfor t.After(level.end) {\n\t\t\tlevel.end = level.end.Add(level.size)\n\t\t\tlevel.newest = level.oldest\n\t\t\tlevel.oldest = (level.oldest + 1) % ts.numBuckets\n\t\t\tts.resetObservation(level.buckets[level.newest])\n\t\t}\n\n\t\tt = level.end\n\t}\n}\n\n// Latest returns the sum of the num latest buckets from the level.\nfunc (ts *timeSeries) Latest(level, num int) Observable {\n\tnow := ts.clock.Time()\n\tif ts.levels[0].end.Before(now) {\n\t\tts.advance(now)\n\t}\n\n\tts.mergePendingUpdates()\n\n\tresult := ts.provider()\n\tl := ts.levels[level]\n\tindex := l.newest\n\n\tfor i := 0; i < num; i++ {\n\t\tif l.buckets[index] != nil {\n\t\t\tresult.Add(l.buckets[index])\n\t\t}\n\t\tif index == 0 {\n\t\t\tindex = ts.numBuckets\n\t\t}\n\t\tindex--\n\t}\n\n\treturn result\n}\n\n// LatestBuckets returns a copy of the num latest buckets from level.\nfunc (ts *timeSeries) LatestBuckets(level, num int) []Observable {\n\tif level < 0 || level > len(ts.levels) {\n\t\tlog.Print(\"timeseries: bad level argument: \", level)\n\t\treturn nil\n\t}\n\tif num < 0 || num >= ts.numBuckets {\n\t\tlog.Print(\"timeseries: bad num argument: \", num)\n\t\treturn nil\n\t}\n\n\tresults := make([]Observable, num)\n\tnow := ts.clock.Time()\n\tif ts.levels[0].end.Before(now) {\n\t\tts.advance(now)\n\t}\n\n\tts.mergePendingUpdates()\n\n\tl := ts.levels[level]\n\tindex := l.newest\n\n\tfor i := 0; i < num; i++ {\n\t\tresult := ts.provider()\n\t\tresults[i] = result\n\t\tif l.buckets[index] != nil {\n\t\t\tresult.CopyFrom(l.buckets[index])\n\t\t}\n\n\t\tif index == 0 {\n\t\t\tindex = ts.numBuckets\n\t\t}\n\t\tindex -= 1\n\t}\n\treturn results\n}\n\n// ScaleBy updates observations by scaling by factor.\nfunc (ts *timeSeries) ScaleBy(factor float64) {\n\tfor _, l := range ts.levels {\n\t\tfor i := 0; i < ts.numBuckets; i++ {\n\t\t\tl.buckets[i].Multiply(factor)\n\t\t}\n\t}\n\n\tts.total.Multiply(factor)\n\tts.pending.Multiply(factor)\n}\n\n// Range returns the sum of observations added over the specified time range.\n// If start or finish times don't fall on bucket boundaries of the same\n// level, then return values are approximate answers.\nfunc (ts *timeSeries) Range(start, finish time.Time) Observable {\n\treturn ts.ComputeRange(start, finish, 1)[0]\n}\n\n// Recent returns the sum of observations from the last delta.\nfunc (ts *timeSeries) Recent(delta time.Duration) Observable {\n\tnow := ts.clock.Time()\n\treturn ts.Range(now.Add(-delta), now)\n}\n\n// Total returns the total of all observations.\nfunc (ts *timeSeries) Total() Observable {\n\tts.mergePendingUpdates()\n\treturn ts.total\n}\n\n// ComputeRange computes a specified number of values into a slice using\n// the observations recorded over the specified time period. The return\n// values are approximate if the start or finish times don't fall on the\n// bucket boundaries at the same level or if the number of buckets spanning\n// the range is not an integral multiple of num.\nfunc (ts *timeSeries) ComputeRange(start, finish time.Time, num int) []Observable {\n\tif start.After(finish) {\n\t\tlog.Printf(\"timeseries: start > finish, %v>%v\", start, finish)\n\t\treturn nil\n\t}\n\n\tif num < 0 {\n\t\tlog.Printf(\"timeseries: num < 0, %v\", num)\n\t\treturn nil\n\t}\n\n\tresults := make([]Observable, num)\n\n\tfor _, l := range ts.levels {\n\t\tif !start.Before(l.end.Add(-l.size * time.Duration(ts.numBuckets))) {\n\t\t\tts.extract(l, start, finish, num, results)\n\t\t\treturn results\n\t\t}\n\t}\n\n\t// Failed to find a level that covers the desired range. So just\n\t// extract from the last level, even if it doesn't cover the entire\n\t// desired range.\n\tts.extract(ts.levels[len(ts.levels)-1], start, finish, num, results)\n\n\treturn results\n}\n\n// RecentList returns the specified number of values in slice over the most\n// recent time period of the specified range.\nfunc (ts *timeSeries) RecentList(delta time.Duration, num int) []Observable {\n\tif delta < 0 {\n\t\treturn nil\n\t}\n\tnow := ts.clock.Time()\n\treturn ts.ComputeRange(now.Add(-delta), now, num)\n}\n\n// extract returns a slice of specified number of observations from a given\n// level over a given range.\nfunc (ts *timeSeries) extract(l *tsLevel, start, finish time.Time, num int, results []Observable) {\n\tts.mergePendingUpdates()\n\n\tsrcInterval := l.size\n\tdstInterval := finish.Sub(start) / time.Duration(num)\n\tdstStart := start\n\tsrcStart := l.end.Add(-srcInterval * time.Duration(ts.numBuckets))\n\n\tsrcIndex := 0\n\n\t// Where should scanning start?\n\tif dstStart.After(srcStart) {\n\t\tadvance := int(dstStart.Sub(srcStart) / srcInterval)\n\t\tsrcIndex += advance\n\t\tsrcStart = srcStart.Add(time.Duration(advance) * srcInterval)\n\t}\n\n\t// The i'th value is computed as show below.\n\t// interval = (finish/start)/num\n\t// i'th value = sum of observation in range\n\t//   [ start + i       * interval,\n\t//     start + (i + 1) * interval )\n\tfor i := 0; i < num; i++ {\n\t\tresults[i] = ts.resetObservation(results[i])\n\t\tdstEnd := dstStart.Add(dstInterval)\n\t\tfor srcIndex < ts.numBuckets && srcStart.Before(dstEnd) {\n\t\t\tsrcEnd := srcStart.Add(srcInterval)\n\t\t\tif srcEnd.After(ts.lastAdd) {\n\t\t\t\tsrcEnd = ts.lastAdd\n\t\t\t}\n\n\t\t\tif !srcEnd.Before(dstStart) {\n\t\t\t\tsrcValue := l.buckets[(srcIndex+l.oldest)%ts.numBuckets]\n\t\t\t\tif !srcStart.Before(dstStart) && !srcEnd.After(dstEnd) {\n\t\t\t\t\t// dst completely contains src.\n\t\t\t\t\tif srcValue != nil {\n\t\t\t\t\t\tresults[i].Add(srcValue)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// dst partially overlaps src.\n\t\t\t\t\toverlapStart := maxTime(srcStart, dstStart)\n\t\t\t\t\toverlapEnd := minTime(srcEnd, dstEnd)\n\t\t\t\t\tbase := srcEnd.Sub(srcStart)\n\t\t\t\t\tfraction := overlapEnd.Sub(overlapStart).Seconds() / base.Seconds()\n\n\t\t\t\t\tused := ts.provider()\n\t\t\t\t\tif srcValue != nil {\n\t\t\t\t\t\tused.CopyFrom(srcValue)\n\t\t\t\t\t}\n\t\t\t\t\tused.Multiply(fraction)\n\t\t\t\t\tresults[i].Add(used)\n\t\t\t\t}\n\n\t\t\t\tif srcEnd.After(dstEnd) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tsrcIndex++\n\t\t\tsrcStart = srcStart.Add(srcInterval)\n\t\t}\n\t\tdstStart = dstStart.Add(dstInterval)\n\t}\n}\n\n// resetObservation clears the content so the struct may be reused.\nfunc (ts *timeSeries) resetObservation(observation Observable) Observable {\n\tif observation == nil {\n\t\tobservation = ts.provider()\n\t} else {\n\t\tobservation.Clear()\n\t}\n\treturn observation\n}\n\n// TimeSeries tracks data at granularities from 1 second to 16 weeks.\ntype TimeSeries struct {\n\ttimeSeries\n}\n\n// NewTimeSeries creates a new TimeSeries using the function provided for creating new Observable.\nfunc NewTimeSeries(f func() Observable) *TimeSeries {\n\treturn NewTimeSeriesWithClock(f, defaultClockInstance)\n}\n\n// NewTimeSeriesWithClock creates a new TimeSeries using the function provided for creating new Observable and the clock for\n// assigning timestamps.\nfunc NewTimeSeriesWithClock(f func() Observable, clock Clock) *TimeSeries {\n\tts := new(TimeSeries)\n\tts.timeSeries.init(timeSeriesResolutions, f, timeSeriesNumBuckets, clock)\n\treturn ts\n}\n\n// MinuteHourSeries tracks data at granularities of 1 minute and 1 hour.\ntype MinuteHourSeries struct {\n\ttimeSeries\n}\n\n// NewMinuteHourSeries creates a new MinuteHourSeries using the function provided for creating new Observable.\nfunc NewMinuteHourSeries(f func() Observable) *MinuteHourSeries {\n\treturn NewMinuteHourSeriesWithClock(f, defaultClockInstance)\n}\n\n// NewMinuteHourSeriesWithClock creates a new MinuteHourSeries using the function provided for creating new Observable and the clock for\n// assigning timestamps.\nfunc NewMinuteHourSeriesWithClock(f func() Observable, clock Clock) *MinuteHourSeries {\n\tts := new(MinuteHourSeries)\n\tts.timeSeries.init(minuteHourSeriesResolutions, f,\n\t\tminuteHourSeriesNumBuckets, clock)\n\treturn ts\n}\n\nfunc (ts *MinuteHourSeries) Minute() Observable {\n\treturn ts.timeSeries.Latest(0, 60)\n}\n\nfunc (ts *MinuteHourSeries) Hour() Observable {\n\treturn ts.timeSeries.Latest(1, 60)\n}\n\nfunc minTime(a, b time.Time) time.Time {\n\tif a.Before(b) {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc maxTime(a, b time.Time) time.Time {\n\tif a.After(b) {\n\t\treturn a\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/trace/events.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage trace\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"text/tabwriter\"\n\t\"time\"\n)\n\nconst maxEventsPerLog = 100\n\ntype bucket struct {\n\tMaxErrAge time.Duration\n\tString    string\n}\n\nvar buckets = []bucket{\n\t{0, \"total\"},\n\t{10 * time.Second, \"errs<10s\"},\n\t{1 * time.Minute, \"errs<1m\"},\n\t{10 * time.Minute, \"errs<10m\"},\n\t{1 * time.Hour, \"errs<1h\"},\n\t{10 * time.Hour, \"errs<10h\"},\n\t{24000 * time.Hour, \"errors\"},\n}\n\n// RenderEvents renders the HTML page typically served at /debug/events.\n// It does not do any auth checking. The request may be nil.\n//\n// Most users will use the Events handler.\nfunc RenderEvents(w http.ResponseWriter, req *http.Request, sensitive bool) {\n\tnow := time.Now()\n\tdata := &struct {\n\t\tFamilies []string // family names\n\t\tBuckets  []bucket\n\t\tCounts   [][]int // eventLog count per family/bucket\n\n\t\t// Set when a bucket has been selected.\n\t\tFamily    string\n\t\tBucket    int\n\t\tEventLogs eventLogs\n\t\tExpanded  bool\n\t}{\n\t\tBuckets: buckets,\n\t}\n\n\tfamMu.RLock()\n\tdata.Families = make([]string, 0, len(families))\n\tfor name := range families {\n\t\tdata.Families = append(data.Families, name)\n\t}\n\tfamMu.RUnlock()\n\tsort.Strings(data.Families)\n\n\t// Count the number of eventLogs in each family for each error age.\n\tdata.Counts = make([][]int, len(data.Families))\n\tfor i, name := range data.Families {\n\t\t// TODO(sameer): move this loop under the family lock.\n\t\tf := getEventFamily(name)\n\t\tdata.Counts[i] = make([]int, len(data.Buckets))\n\t\tfor j, b := range data.Buckets {\n\t\t\tdata.Counts[i][j] = f.Count(now, b.MaxErrAge)\n\t\t}\n\t}\n\n\tif req != nil {\n\t\tvar ok bool\n\t\tdata.Family, data.Bucket, ok = parseEventsArgs(req)\n\t\tif !ok {\n\t\t\t// No-op\n\t\t} else {\n\t\t\tdata.EventLogs = getEventFamily(data.Family).Copy(now, buckets[data.Bucket].MaxErrAge)\n\t\t}\n\t\tif data.EventLogs != nil {\n\t\t\tdefer data.EventLogs.Free()\n\t\t\tsort.Sort(data.EventLogs)\n\t\t}\n\t\tif exp, err := strconv.ParseBool(req.FormValue(\"exp\")); err == nil {\n\t\t\tdata.Expanded = exp\n\t\t}\n\t}\n\n\tfamMu.RLock()\n\tdefer famMu.RUnlock()\n\tif err := eventsTmpl().Execute(w, data); err != nil {\n\t\tlog.Printf(\"net/trace: Failed executing template: %v\", err)\n\t}\n}\n\nfunc parseEventsArgs(req *http.Request) (fam string, b int, ok bool) {\n\tfam, bStr := req.FormValue(\"fam\"), req.FormValue(\"b\")\n\tif fam == \"\" || bStr == \"\" {\n\t\treturn \"\", 0, false\n\t}\n\tb, err := strconv.Atoi(bStr)\n\tif err != nil || b < 0 || b >= len(buckets) {\n\t\treturn \"\", 0, false\n\t}\n\treturn fam, b, true\n}\n\n// An EventLog provides a log of events associated with a specific object.\ntype EventLog interface {\n\t// Printf formats its arguments with fmt.Sprintf and adds the\n\t// result to the event log.\n\tPrintf(format string, a ...interface{})\n\n\t// Errorf is like Printf, but it marks this event as an error.\n\tErrorf(format string, a ...interface{})\n\n\t// Finish declares that this event log is complete.\n\t// The event log should not be used after calling this method.\n\tFinish()\n}\n\n// NewEventLog returns a new EventLog with the specified family name\n// and title.\nfunc NewEventLog(family, title string) EventLog {\n\tel := newEventLog()\n\tel.ref()\n\tel.Family, el.Title = family, title\n\tel.Start = time.Now()\n\tel.events = make([]logEntry, 0, maxEventsPerLog)\n\tel.stack = make([]uintptr, 32)\n\tn := runtime.Callers(2, el.stack)\n\tel.stack = el.stack[:n]\n\n\tgetEventFamily(family).add(el)\n\treturn el\n}\n\nfunc (el *eventLog) Finish() {\n\tgetEventFamily(el.Family).remove(el)\n\tel.unref() // matches ref in New\n}\n\nvar (\n\tfamMu    sync.RWMutex\n\tfamilies = make(map[string]*eventFamily) // family name => family\n)\n\nfunc getEventFamily(fam string) *eventFamily {\n\tfamMu.Lock()\n\tdefer famMu.Unlock()\n\tf := families[fam]\n\tif f == nil {\n\t\tf = &eventFamily{}\n\t\tfamilies[fam] = f\n\t}\n\treturn f\n}\n\ntype eventFamily struct {\n\tmu        sync.RWMutex\n\teventLogs eventLogs\n}\n\nfunc (f *eventFamily) add(el *eventLog) {\n\tf.mu.Lock()\n\tf.eventLogs = append(f.eventLogs, el)\n\tf.mu.Unlock()\n}\n\nfunc (f *eventFamily) remove(el *eventLog) {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\tfor i, el0 := range f.eventLogs {\n\t\tif el == el0 {\n\t\t\tcopy(f.eventLogs[i:], f.eventLogs[i+1:])\n\t\t\tf.eventLogs = f.eventLogs[:len(f.eventLogs)-1]\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (f *eventFamily) Count(now time.Time, maxErrAge time.Duration) (n int) {\n\tf.mu.RLock()\n\tdefer f.mu.RUnlock()\n\tfor _, el := range f.eventLogs {\n\t\tif el.hasRecentError(now, maxErrAge) {\n\t\t\tn++\n\t\t}\n\t}\n\treturn\n}\n\nfunc (f *eventFamily) Copy(now time.Time, maxErrAge time.Duration) (els eventLogs) {\n\tf.mu.RLock()\n\tdefer f.mu.RUnlock()\n\tels = make(eventLogs, 0, len(f.eventLogs))\n\tfor _, el := range f.eventLogs {\n\t\tif el.hasRecentError(now, maxErrAge) {\n\t\t\tel.ref()\n\t\t\tels = append(els, el)\n\t\t}\n\t}\n\treturn\n}\n\ntype eventLogs []*eventLog\n\n// Free calls unref on each element of the list.\nfunc (els eventLogs) Free() {\n\tfor _, el := range els {\n\t\tel.unref()\n\t}\n}\n\n// eventLogs may be sorted in reverse chronological order.\nfunc (els eventLogs) Len() int           { return len(els) }\nfunc (els eventLogs) Less(i, j int) bool { return els[i].Start.After(els[j].Start) }\nfunc (els eventLogs) Swap(i, j int)      { els[i], els[j] = els[j], els[i] }\n\n// A logEntry is a timestamped log entry in an event log.\ntype logEntry struct {\n\tWhen    time.Time\n\tElapsed time.Duration // since previous event in log\n\tNewDay  bool          // whether this event is on a different day to the previous event\n\tWhat    string\n\tIsErr   bool\n}\n\n// WhenString returns a string representation of the elapsed time of the event.\n// It will include the date if midnight was crossed.\nfunc (e logEntry) WhenString() string {\n\tif e.NewDay {\n\t\treturn e.When.Format(\"2006/01/02 15:04:05.000000\")\n\t}\n\treturn e.When.Format(\"15:04:05.000000\")\n}\n\n// An eventLog represents an active event log.\ntype eventLog struct {\n\t// Family is the top-level grouping of event logs to which this belongs.\n\tFamily string\n\n\t// Title is the title of this event log.\n\tTitle string\n\n\t// Timing information.\n\tStart time.Time\n\n\t// Call stack where this event log was created.\n\tstack []uintptr\n\n\t// Append-only sequence of events.\n\t//\n\t// TODO(sameer): change this to a ring buffer to avoid the array copy\n\t// when we hit maxEventsPerLog.\n\tmu            sync.RWMutex\n\tevents        []logEntry\n\tLastErrorTime time.Time\n\tdiscarded     int\n\n\trefs int32 // how many buckets this is in\n}\n\nfunc (el *eventLog) reset() {\n\t// Clear all but the mutex. Mutexes may not be copied, even when unlocked.\n\tel.Family = \"\"\n\tel.Title = \"\"\n\tel.Start = time.Time{}\n\tel.stack = nil\n\tel.events = nil\n\tel.LastErrorTime = time.Time{}\n\tel.discarded = 0\n\tel.refs = 0\n}\n\nfunc (el *eventLog) hasRecentError(now time.Time, maxErrAge time.Duration) bool {\n\tif maxErrAge == 0 {\n\t\treturn true\n\t}\n\tel.mu.RLock()\n\tdefer el.mu.RUnlock()\n\treturn now.Sub(el.LastErrorTime) < maxErrAge\n}\n\n// delta returns the elapsed time since the last event or the log start,\n// and whether it spans midnight.\n// L >= el.mu\nfunc (el *eventLog) delta(t time.Time) (time.Duration, bool) {\n\tif len(el.events) == 0 {\n\t\treturn t.Sub(el.Start), false\n\t}\n\tprev := el.events[len(el.events)-1].When\n\treturn t.Sub(prev), prev.Day() != t.Day()\n\n}\n\nfunc (el *eventLog) Printf(format string, a ...interface{}) {\n\tel.printf(false, format, a...)\n}\n\nfunc (el *eventLog) Errorf(format string, a ...interface{}) {\n\tel.printf(true, format, a...)\n}\n\nfunc (el *eventLog) printf(isErr bool, format string, a ...interface{}) {\n\te := logEntry{When: time.Now(), IsErr: isErr, What: fmt.Sprintf(format, a...)}\n\tel.mu.Lock()\n\te.Elapsed, e.NewDay = el.delta(e.When)\n\tif len(el.events) < maxEventsPerLog {\n\t\tel.events = append(el.events, e)\n\t} else {\n\t\t// Discard the oldest event.\n\t\tif el.discarded == 0 {\n\t\t\t// el.discarded starts at two to count for the event it\n\t\t\t// is replacing, plus the next one that we are about to\n\t\t\t// drop.\n\t\t\tel.discarded = 2\n\t\t} else {\n\t\t\tel.discarded++\n\t\t}\n\t\t// TODO(sameer): if this causes allocations on a critical path,\n\t\t// change eventLog.What to be a fmt.Stringer, as in trace.go.\n\t\tel.events[0].What = fmt.Sprintf(\"(%d events discarded)\", el.discarded)\n\t\t// The timestamp of the discarded meta-event should be\n\t\t// the time of the last event it is representing.\n\t\tel.events[0].When = el.events[1].When\n\t\tcopy(el.events[1:], el.events[2:])\n\t\tel.events[maxEventsPerLog-1] = e\n\t}\n\tif e.IsErr {\n\t\tel.LastErrorTime = e.When\n\t}\n\tel.mu.Unlock()\n}\n\nfunc (el *eventLog) ref() {\n\tatomic.AddInt32(&el.refs, 1)\n}\n\nfunc (el *eventLog) unref() {\n\tif atomic.AddInt32(&el.refs, -1) == 0 {\n\t\tfreeEventLog(el)\n\t}\n}\n\nfunc (el *eventLog) When() string {\n\treturn el.Start.Format(\"2006/01/02 15:04:05.000000\")\n}\n\nfunc (el *eventLog) ElapsedTime() string {\n\telapsed := time.Since(el.Start)\n\treturn fmt.Sprintf(\"%.6f\", elapsed.Seconds())\n}\n\nfunc (el *eventLog) Stack() string {\n\tbuf := new(bytes.Buffer)\n\ttw := tabwriter.NewWriter(buf, 1, 8, 1, '\\t', 0)\n\tprintStackRecord(tw, el.stack)\n\ttw.Flush()\n\treturn buf.String()\n}\n\n// printStackRecord prints the function + source line information\n// for a single stack trace.\n// Adapted from runtime/pprof/pprof.go.\nfunc printStackRecord(w io.Writer, stk []uintptr) {\n\tfor _, pc := range stk {\n\t\tf := runtime.FuncForPC(pc)\n\t\tif f == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfile, line := f.FileLine(pc)\n\t\tname := f.Name()\n\t\t// Hide runtime.goexit and any runtime functions at the beginning.\n\t\tif strings.HasPrefix(name, \"runtime.\") {\n\t\t\tcontinue\n\t\t}\n\t\tfmt.Fprintf(w, \"#   %s\\t%s:%d\\n\", name, file, line)\n\t}\n}\n\nfunc (el *eventLog) Events() []logEntry {\n\tel.mu.RLock()\n\tdefer el.mu.RUnlock()\n\treturn el.events\n}\n\n// freeEventLogs is a freelist of *eventLog\nvar freeEventLogs = make(chan *eventLog, 1000)\n\n// newEventLog returns a event log ready to use.\nfunc newEventLog() *eventLog {\n\tselect {\n\tcase el := <-freeEventLogs:\n\t\treturn el\n\tdefault:\n\t\treturn new(eventLog)\n\t}\n}\n\n// freeEventLog adds el to freeEventLogs if there's room.\n// This is non-blocking.\nfunc freeEventLog(el *eventLog) {\n\tel.reset()\n\tselect {\n\tcase freeEventLogs <- el:\n\tdefault:\n\t}\n}\n\nvar eventsTmplCache *template.Template\nvar eventsTmplOnce sync.Once\n\nfunc eventsTmpl() *template.Template {\n\teventsTmplOnce.Do(func() {\n\t\teventsTmplCache = template.Must(template.New(\"events\").Funcs(template.FuncMap{\n\t\t\t\"elapsed\":   elapsed,\n\t\t\t\"trimSpace\": strings.TrimSpace,\n\t\t}).Parse(eventsHTML))\n\t})\n\treturn eventsTmplCache\n}\n\nconst eventsHTML = `\n<html>\n\t<head>\n\t\t<title>events</title>\n\t</head>\n\t<style type=\"text/css\">\n\t\tbody {\n\t\t\tfont-family: sans-serif;\n\t\t}\n\t\ttable#req-status td.family {\n\t\t\tpadding-right: 2em;\n\t\t}\n\t\ttable#req-status td.active {\n\t\t\tpadding-right: 1em;\n\t\t}\n\t\ttable#req-status td.empty {\n\t\t\tcolor: #aaa;\n\t\t}\n\t\ttable#reqs {\n\t\t\tmargin-top: 1em;\n\t\t}\n\t\ttable#reqs tr.first {\n\t\t\t{{if $.Expanded}}font-weight: bold;{{end}}\n\t\t}\n\t\ttable#reqs td {\n\t\t\tfont-family: monospace;\n\t\t}\n\t\ttable#reqs td.when {\n\t\t\ttext-align: right;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t\ttable#reqs td.elapsed {\n\t\t\tpadding: 0 0.5em;\n\t\t\ttext-align: right;\n\t\t\twhite-space: pre;\n\t\t\twidth: 10em;\n\t\t}\n\t\taddress {\n\t\t\tfont-size: smaller;\n\t\t\tmargin-top: 5em;\n\t\t}\n\t</style>\n\t<body>\n\n<h1>/debug/events</h1>\n\n<table id=\"req-status\">\n\t{{range $i, $fam := .Families}}\n\t<tr>\n\t\t<td class=\"family\">{{$fam}}</td>\n\n\t        {{range $j, $bucket := $.Buckets}}\n\t        {{$n := index $.Counts $i $j}}\n\t\t<td class=\"{{if not $bucket.MaxErrAge}}active{{end}}{{if not $n}}empty{{end}}\">\n\t                {{if $n}}<a href=\"?fam={{$fam}}&b={{$j}}{{if $.Expanded}}&exp=1{{end}}\">{{end}}\n\t\t        [{{$n}} {{$bucket.String}}]\n\t\t\t{{if $n}}</a>{{end}}\n\t\t</td>\n                {{end}}\n\n\t</tr>{{end}}\n</table>\n\n{{if $.EventLogs}}\n<hr />\n<h3>Family: {{$.Family}}</h3>\n\n{{if $.Expanded}}<a href=\"?fam={{$.Family}}&b={{$.Bucket}}\">{{end}}\n[Summary]{{if $.Expanded}}</a>{{end}}\n\n{{if not $.Expanded}}<a href=\"?fam={{$.Family}}&b={{$.Bucket}}&exp=1\">{{end}}\n[Expanded]{{if not $.Expanded}}</a>{{end}}\n\n<table id=\"reqs\">\n\t<tr><th>When</th><th>Elapsed</th></tr>\n\t{{range $el := $.EventLogs}}\n\t<tr class=\"first\">\n\t\t<td class=\"when\">{{$el.When}}</td>\n\t\t<td class=\"elapsed\">{{$el.ElapsedTime}}</td>\n\t\t<td>{{$el.Title}}</td>\n\t</tr>\n\t{{if $.Expanded}}\n\t<tr>\n\t\t<td class=\"when\"></td>\n\t\t<td class=\"elapsed\"></td>\n\t\t<td><pre>{{$el.Stack|trimSpace}}</pre></td>\n\t</tr>\n\t{{range $el.Events}}\n\t<tr>\n\t\t<td class=\"when\">{{.WhenString}}</td>\n\t\t<td class=\"elapsed\">{{elapsed .Elapsed}}</td>\n\t\t<td>.{{if .IsErr}}E{{else}}.{{end}}. {{.What}}</td>\n\t</tr>\n\t{{end}}\n\t{{end}}\n\t{{end}}\n</table>\n{{end}}\n\t</body>\n</html>\n`\n"
  },
  {
    "path": "vendor/golang.org/x/net/trace/histogram.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage trace\n\n// This file implements histogramming for RPC statistics collection.\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"log\"\n\t\"math\"\n\t\"sync\"\n\n\t\"golang.org/x/net/internal/timeseries\"\n)\n\nconst (\n\tbucketCount = 38\n)\n\n// histogram keeps counts of values in buckets that are spaced\n// out in powers of 2: 0-1, 2-3, 4-7...\n// histogram implements timeseries.Observable\ntype histogram struct {\n\tsum          int64   // running total of measurements\n\tsumOfSquares float64 // square of running total\n\tbuckets      []int64 // bucketed values for histogram\n\tvalue        int     // holds a single value as an optimization\n\tvalueCount   int64   // number of values recorded for single value\n}\n\n// addMeasurement records a value measurement observation to the histogram.\nfunc (h *histogram) addMeasurement(value int64) {\n\t// TODO: assert invariant\n\th.sum += value\n\th.sumOfSquares += float64(value) * float64(value)\n\n\tbucketIndex := getBucket(value)\n\n\tif h.valueCount == 0 || (h.valueCount > 0 && h.value == bucketIndex) {\n\t\th.value = bucketIndex\n\t\th.valueCount++\n\t} else {\n\t\th.allocateBuckets()\n\t\th.buckets[bucketIndex]++\n\t}\n}\n\nfunc (h *histogram) allocateBuckets() {\n\tif h.buckets == nil {\n\t\th.buckets = make([]int64, bucketCount)\n\t\th.buckets[h.value] = h.valueCount\n\t\th.value = 0\n\t\th.valueCount = -1\n\t}\n}\n\nfunc log2(i int64) int {\n\tn := 0\n\tfor ; i >= 0x100; i >>= 8 {\n\t\tn += 8\n\t}\n\tfor ; i > 0; i >>= 1 {\n\t\tn += 1\n\t}\n\treturn n\n}\n\nfunc getBucket(i int64) (index int) {\n\tindex = log2(i) - 1\n\tif index < 0 {\n\t\tindex = 0\n\t}\n\tif index >= bucketCount {\n\t\tindex = bucketCount - 1\n\t}\n\treturn\n}\n\n// Total returns the number of recorded observations.\nfunc (h *histogram) total() (total int64) {\n\tif h.valueCount >= 0 {\n\t\ttotal = h.valueCount\n\t}\n\tfor _, val := range h.buckets {\n\t\ttotal += int64(val)\n\t}\n\treturn\n}\n\n// Average returns the average value of recorded observations.\nfunc (h *histogram) average() float64 {\n\tt := h.total()\n\tif t == 0 {\n\t\treturn 0\n\t}\n\treturn float64(h.sum) / float64(t)\n}\n\n// Variance returns the variance of recorded observations.\nfunc (h *histogram) variance() float64 {\n\tt := float64(h.total())\n\tif t == 0 {\n\t\treturn 0\n\t}\n\ts := float64(h.sum) / t\n\treturn h.sumOfSquares/t - s*s\n}\n\n// StandardDeviation returns the standard deviation of recorded observations.\nfunc (h *histogram) standardDeviation() float64 {\n\treturn math.Sqrt(h.variance())\n}\n\n// PercentileBoundary estimates the value that the given fraction of recorded\n// observations are less than.\nfunc (h *histogram) percentileBoundary(percentile float64) int64 {\n\ttotal := h.total()\n\n\t// Corner cases (make sure result is strictly less than Total())\n\tif total == 0 {\n\t\treturn 0\n\t} else if total == 1 {\n\t\treturn int64(h.average())\n\t}\n\n\tpercentOfTotal := round(float64(total) * percentile)\n\tvar runningTotal int64\n\n\tfor i := range h.buckets {\n\t\tvalue := h.buckets[i]\n\t\trunningTotal += value\n\t\tif runningTotal == percentOfTotal {\n\t\t\t// We hit an exact bucket boundary. If the next bucket has data, it is a\n\t\t\t// good estimate of the value. If the bucket is empty, we interpolate the\n\t\t\t// midpoint between the next bucket's boundary and the next non-zero\n\t\t\t// bucket. If the remaining buckets are all empty, then we use the\n\t\t\t// boundary for the next bucket as the estimate.\n\t\t\tj := uint8(i + 1)\n\t\t\tmin := bucketBoundary(j)\n\t\t\tif runningTotal < total {\n\t\t\t\tfor h.buckets[j] == 0 {\n\t\t\t\t\tj++\n\t\t\t\t}\n\t\t\t}\n\t\t\tmax := bucketBoundary(j)\n\t\t\treturn min + round(float64(max-min)/2)\n\t\t} else if runningTotal > percentOfTotal {\n\t\t\t// The value is in this bucket. Interpolate the value.\n\t\t\tdelta := runningTotal - percentOfTotal\n\t\t\tpercentBucket := float64(value-delta) / float64(value)\n\t\t\tbucketMin := bucketBoundary(uint8(i))\n\t\t\tnextBucketMin := bucketBoundary(uint8(i + 1))\n\t\t\tbucketSize := nextBucketMin - bucketMin\n\t\t\treturn bucketMin + round(percentBucket*float64(bucketSize))\n\t\t}\n\t}\n\treturn bucketBoundary(bucketCount - 1)\n}\n\n// Median returns the estimated median of the observed values.\nfunc (h *histogram) median() int64 {\n\treturn h.percentileBoundary(0.5)\n}\n\n// Add adds other to h.\nfunc (h *histogram) Add(other timeseries.Observable) {\n\to := other.(*histogram)\n\tif o.valueCount == 0 {\n\t\t// Other histogram is empty\n\t} else if h.valueCount >= 0 && o.valueCount > 0 && h.value == o.value {\n\t\t// Both have a single bucketed value, aggregate them\n\t\th.valueCount += o.valueCount\n\t} else {\n\t\t// Two different values necessitate buckets in this histogram\n\t\th.allocateBuckets()\n\t\tif o.valueCount >= 0 {\n\t\t\th.buckets[o.value] += o.valueCount\n\t\t} else {\n\t\t\tfor i := range h.buckets {\n\t\t\t\th.buckets[i] += o.buckets[i]\n\t\t\t}\n\t\t}\n\t}\n\th.sumOfSquares += o.sumOfSquares\n\th.sum += o.sum\n}\n\n// Clear resets the histogram to an empty state, removing all observed values.\nfunc (h *histogram) Clear() {\n\th.buckets = nil\n\th.value = 0\n\th.valueCount = 0\n\th.sum = 0\n\th.sumOfSquares = 0\n}\n\n// CopyFrom copies from other, which must be a *histogram, into h.\nfunc (h *histogram) CopyFrom(other timeseries.Observable) {\n\to := other.(*histogram)\n\tif o.valueCount == -1 {\n\t\th.allocateBuckets()\n\t\tcopy(h.buckets, o.buckets)\n\t}\n\th.sum = o.sum\n\th.sumOfSquares = o.sumOfSquares\n\th.value = o.value\n\th.valueCount = o.valueCount\n}\n\n// Multiply scales the histogram by the specified ratio.\nfunc (h *histogram) Multiply(ratio float64) {\n\tif h.valueCount == -1 {\n\t\tfor i := range h.buckets {\n\t\t\th.buckets[i] = int64(float64(h.buckets[i]) * ratio)\n\t\t}\n\t} else {\n\t\th.valueCount = int64(float64(h.valueCount) * ratio)\n\t}\n\th.sum = int64(float64(h.sum) * ratio)\n\th.sumOfSquares = h.sumOfSquares * ratio\n}\n\n// New creates a new histogram.\nfunc (h *histogram) New() timeseries.Observable {\n\tr := new(histogram)\n\tr.Clear()\n\treturn r\n}\n\nfunc (h *histogram) String() string {\n\treturn fmt.Sprintf(\"%d, %f, %d, %d, %v\",\n\t\th.sum, h.sumOfSquares, h.value, h.valueCount, h.buckets)\n}\n\n// round returns the closest int64 to the argument\nfunc round(in float64) int64 {\n\treturn int64(math.Floor(in + 0.5))\n}\n\n// bucketBoundary returns the first value in the bucket.\nfunc bucketBoundary(bucket uint8) int64 {\n\tif bucket == 0 {\n\t\treturn 0\n\t}\n\treturn 1 << bucket\n}\n\n// bucketData holds data about a specific bucket for use in distTmpl.\ntype bucketData struct {\n\tLower, Upper       int64\n\tN                  int64\n\tPct, CumulativePct float64\n\tGraphWidth         int\n}\n\n// data holds data about a Distribution for use in distTmpl.\ntype data struct {\n\tBuckets                 []*bucketData\n\tCount, Median           int64\n\tMean, StandardDeviation float64\n}\n\n// maxHTMLBarWidth is the maximum width of the HTML bar for visualizing buckets.\nconst maxHTMLBarWidth = 350.0\n\n// newData returns data representing h for use in distTmpl.\nfunc (h *histogram) newData() *data {\n\t// Force the allocation of buckets to simplify the rendering implementation\n\th.allocateBuckets()\n\t// We scale the bars on the right so that the largest bar is\n\t// maxHTMLBarWidth pixels in width.\n\tmaxBucket := int64(0)\n\tfor _, n := range h.buckets {\n\t\tif n > maxBucket {\n\t\t\tmaxBucket = n\n\t\t}\n\t}\n\ttotal := h.total()\n\tbarsizeMult := maxHTMLBarWidth / float64(maxBucket)\n\tvar pctMult float64\n\tif total == 0 {\n\t\tpctMult = 1.0\n\t} else {\n\t\tpctMult = 100.0 / float64(total)\n\t}\n\n\tbuckets := make([]*bucketData, len(h.buckets))\n\trunningTotal := int64(0)\n\tfor i, n := range h.buckets {\n\t\tif n == 0 {\n\t\t\tcontinue\n\t\t}\n\t\trunningTotal += n\n\t\tvar upperBound int64\n\t\tif i < bucketCount-1 {\n\t\t\tupperBound = bucketBoundary(uint8(i + 1))\n\t\t} else {\n\t\t\tupperBound = math.MaxInt64\n\t\t}\n\t\tbuckets[i] = &bucketData{\n\t\t\tLower:         bucketBoundary(uint8(i)),\n\t\t\tUpper:         upperBound,\n\t\t\tN:             n,\n\t\t\tPct:           float64(n) * pctMult,\n\t\t\tCumulativePct: float64(runningTotal) * pctMult,\n\t\t\tGraphWidth:    int(float64(n) * barsizeMult),\n\t\t}\n\t}\n\treturn &data{\n\t\tBuckets:           buckets,\n\t\tCount:             total,\n\t\tMedian:            h.median(),\n\t\tMean:              h.average(),\n\t\tStandardDeviation: h.standardDeviation(),\n\t}\n}\n\nfunc (h *histogram) html() template.HTML {\n\tbuf := new(bytes.Buffer)\n\tif err := distTmpl().Execute(buf, h.newData()); err != nil {\n\t\tbuf.Reset()\n\t\tlog.Printf(\"net/trace: couldn't execute template: %v\", err)\n\t}\n\treturn template.HTML(buf.String())\n}\n\nvar distTmplCache *template.Template\nvar distTmplOnce sync.Once\n\nfunc distTmpl() *template.Template {\n\tdistTmplOnce.Do(func() {\n\t\t// Input: data\n\t\tdistTmplCache = template.Must(template.New(\"distTmpl\").Parse(`\n<table>\n<tr>\n    <td style=\"padding:0.25em\">Count: {{.Count}}</td>\n    <td style=\"padding:0.25em\">Mean: {{printf \"%.0f\" .Mean}}</td>\n    <td style=\"padding:0.25em\">StdDev: {{printf \"%.0f\" .StandardDeviation}}</td>\n    <td style=\"padding:0.25em\">Median: {{.Median}}</td>\n</tr>\n</table>\n<hr>\n<table>\n{{range $b := .Buckets}}\n{{if $b}}\n  <tr>\n    <td style=\"padding:0 0 0 0.25em\">[</td>\n    <td style=\"text-align:right;padding:0 0.25em\">{{.Lower}},</td>\n    <td style=\"text-align:right;padding:0 0.25em\">{{.Upper}})</td>\n    <td style=\"text-align:right;padding:0 0.25em\">{{.N}}</td>\n    <td style=\"text-align:right;padding:0 0.25em\">{{printf \"%#.3f\" .Pct}}%</td>\n    <td style=\"text-align:right;padding:0 0.25em\">{{printf \"%#.3f\" .CumulativePct}}%</td>\n    <td><div style=\"background-color: blue; height: 1em; width: {{.GraphWidth}};\"></div></td>\n  </tr>\n{{end}}\n{{end}}\n</table>\n`))\n\t})\n\treturn distTmplCache\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/trace/trace.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/*\nPackage trace implements tracing of requests and long-lived objects.\nIt exports HTTP interfaces on /debug/requests and /debug/events.\n\nA trace.Trace provides tracing for short-lived objects, usually requests.\nA request handler might be implemented like this:\n\n\tfunc fooHandler(w http.ResponseWriter, req *http.Request) {\n\t\ttr := trace.New(\"mypkg.Foo\", req.URL.Path)\n\t\tdefer tr.Finish()\n\t\t...\n\t\ttr.LazyPrintf(\"some event %q happened\", str)\n\t\t...\n\t\tif err := somethingImportant(); err != nil {\n\t\t\ttr.LazyPrintf(\"somethingImportant failed: %v\", err)\n\t\t\ttr.SetError()\n\t\t}\n\t}\n\nThe /debug/requests HTTP endpoint organizes the traces by family,\nerrors, and duration.  It also provides histogram of request duration\nfor each family.\n\nA trace.EventLog provides tracing for long-lived objects, such as RPC\nconnections.\n\n\t// A Fetcher fetches URL paths for a single domain.\n\ttype Fetcher struct {\n\t\tdomain string\n\t\tevents trace.EventLog\n\t}\n\n\tfunc NewFetcher(domain string) *Fetcher {\n\t\treturn &Fetcher{\n\t\t\tdomain,\n\t\t\ttrace.NewEventLog(\"mypkg.Fetcher\", domain),\n\t\t}\n\t}\n\n\tfunc (f *Fetcher) Fetch(path string) (string, error) {\n\t\tresp, err := http.Get(\"http://\" + f.domain + \"/\" + path)\n\t\tif err != nil {\n\t\t\tf.events.Errorf(\"Get(%q) = %v\", path, err)\n\t\t\treturn \"\", err\n\t\t}\n\t\tf.events.Printf(\"Get(%q) = %s\", path, resp.Status)\n\t\t...\n\t}\n\n\tfunc (f *Fetcher) Close() error {\n\t\tf.events.Finish()\n\t\treturn nil\n\t}\n\nThe /debug/events HTTP endpoint organizes the event logs by family and\nby time since the last error.  The expanded view displays recent log\nentries and the log's call stack.\n*/\npackage trace // import \"golang.org/x/net/trace\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"io\"\n\t\"log\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strconv\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"golang.org/x/net/internal/timeseries\"\n)\n\n// DebugUseAfterFinish controls whether to debug uses of Trace values after finishing.\n// FOR DEBUGGING ONLY. This will slow down the program.\nvar DebugUseAfterFinish = false\n\n// HTTP ServeMux paths.\nconst (\n\tdebugRequestsPath = \"/debug/requests\"\n\tdebugEventsPath   = \"/debug/events\"\n)\n\n// AuthRequest determines whether a specific request is permitted to load the\n// /debug/requests or /debug/events pages.\n//\n// It returns two bools; the first indicates whether the page may be viewed at all,\n// and the second indicates whether sensitive events will be shown.\n//\n// AuthRequest may be replaced by a program to customize its authorization requirements.\n//\n// The default AuthRequest function returns (true, true) if and only if the request\n// comes from localhost/127.0.0.1/[::1].\nvar AuthRequest = func(req *http.Request) (any, sensitive bool) {\n\t// RemoteAddr is commonly in the form \"IP\" or \"IP:port\".\n\t// If it is in the form \"IP:port\", split off the port.\n\thost, _, err := net.SplitHostPort(req.RemoteAddr)\n\tif err != nil {\n\t\thost = req.RemoteAddr\n\t}\n\tswitch host {\n\tcase \"localhost\", \"127.0.0.1\", \"::1\":\n\t\treturn true, true\n\tdefault:\n\t\treturn false, false\n\t}\n}\n\nfunc init() {\n\t_, pat := http.DefaultServeMux.Handler(&http.Request{URL: &url.URL{Path: debugRequestsPath}})\n\tif pat == debugRequestsPath {\n\t\tpanic(\"/debug/requests is already registered. You may have two independent copies of \" +\n\t\t\t\"golang.org/x/net/trace in your binary, trying to maintain separate state. This may \" +\n\t\t\t\"involve a vendored copy of golang.org/x/net/trace.\")\n\t}\n\n\t// TODO(jbd): Serve Traces from /debug/traces in the future?\n\t// There is no requirement for a request to be present to have traces.\n\thttp.HandleFunc(debugRequestsPath, Traces)\n\thttp.HandleFunc(debugEventsPath, Events)\n}\n\n// NewContext returns a copy of the parent context\n// and associates it with a Trace.\nfunc NewContext(ctx context.Context, tr Trace) context.Context {\n\treturn context.WithValue(ctx, contextKey, tr)\n}\n\n// FromContext returns the Trace bound to the context, if any.\nfunc FromContext(ctx context.Context) (tr Trace, ok bool) {\n\ttr, ok = ctx.Value(contextKey).(Trace)\n\treturn\n}\n\n// Traces responds with traces from the program.\n// The package initialization registers it in http.DefaultServeMux\n// at /debug/requests.\n//\n// It performs authorization by running AuthRequest.\nfunc Traces(w http.ResponseWriter, req *http.Request) {\n\tany, sensitive := AuthRequest(req)\n\tif !any {\n\t\thttp.Error(w, \"not allowed\", http.StatusUnauthorized)\n\t\treturn\n\t}\n\tw.Header().Set(\"Content-Type\", \"text/html; charset=utf-8\")\n\tRender(w, req, sensitive)\n}\n\n// Events responds with a page of events collected by EventLogs.\n// The package initialization registers it in http.DefaultServeMux\n// at /debug/events.\n//\n// It performs authorization by running AuthRequest.\nfunc Events(w http.ResponseWriter, req *http.Request) {\n\tany, sensitive := AuthRequest(req)\n\tif !any {\n\t\thttp.Error(w, \"not allowed\", http.StatusUnauthorized)\n\t\treturn\n\t}\n\tw.Header().Set(\"Content-Type\", \"text/html; charset=utf-8\")\n\tRenderEvents(w, req, sensitive)\n}\n\n// Render renders the HTML page typically served at /debug/requests.\n// It does not do any auth checking. The request may be nil.\n//\n// Most users will use the Traces handler.\nfunc Render(w io.Writer, req *http.Request, sensitive bool) {\n\tdata := &struct {\n\t\tFamilies         []string\n\t\tActiveTraceCount map[string]int\n\t\tCompletedTraces  map[string]*family\n\n\t\t// Set when a bucket has been selected.\n\t\tTraces        traceList\n\t\tFamily        string\n\t\tBucket        int\n\t\tExpanded      bool\n\t\tTraced        bool\n\t\tActive        bool\n\t\tShowSensitive bool // whether to show sensitive events\n\n\t\tHistogram       template.HTML\n\t\tHistogramWindow string // e.g. \"last minute\", \"last hour\", \"all time\"\n\n\t\t// If non-zero, the set of traces is a partial set,\n\t\t// and this is the total number.\n\t\tTotal int\n\t}{\n\t\tCompletedTraces: completedTraces,\n\t}\n\n\tdata.ShowSensitive = sensitive\n\tif req != nil {\n\t\t// Allow show_sensitive=0 to force hiding of sensitive data for testing.\n\t\t// This only goes one way; you can't use show_sensitive=1 to see things.\n\t\tif req.FormValue(\"show_sensitive\") == \"0\" {\n\t\t\tdata.ShowSensitive = false\n\t\t}\n\n\t\tif exp, err := strconv.ParseBool(req.FormValue(\"exp\")); err == nil {\n\t\t\tdata.Expanded = exp\n\t\t}\n\t\tif exp, err := strconv.ParseBool(req.FormValue(\"rtraced\")); err == nil {\n\t\t\tdata.Traced = exp\n\t\t}\n\t}\n\n\tcompletedMu.RLock()\n\tdata.Families = make([]string, 0, len(completedTraces))\n\tfor fam := range completedTraces {\n\t\tdata.Families = append(data.Families, fam)\n\t}\n\tcompletedMu.RUnlock()\n\tsort.Strings(data.Families)\n\n\t// We are careful here to minimize the time spent locking activeMu,\n\t// since that lock is required every time an RPC starts and finishes.\n\tdata.ActiveTraceCount = make(map[string]int, len(data.Families))\n\tactiveMu.RLock()\n\tfor fam, s := range activeTraces {\n\t\tdata.ActiveTraceCount[fam] = s.Len()\n\t}\n\tactiveMu.RUnlock()\n\n\tvar ok bool\n\tdata.Family, data.Bucket, ok = parseArgs(req)\n\tswitch {\n\tcase !ok:\n\t\t// No-op\n\tcase data.Bucket == -1:\n\t\tdata.Active = true\n\t\tn := data.ActiveTraceCount[data.Family]\n\t\tdata.Traces = getActiveTraces(data.Family)\n\t\tif len(data.Traces) < n {\n\t\t\tdata.Total = n\n\t\t}\n\tcase data.Bucket < bucketsPerFamily:\n\t\tif b := lookupBucket(data.Family, data.Bucket); b != nil {\n\t\t\tdata.Traces = b.Copy(data.Traced)\n\t\t}\n\tdefault:\n\t\tif f := getFamily(data.Family, false); f != nil {\n\t\t\tvar obs timeseries.Observable\n\t\t\tf.LatencyMu.RLock()\n\t\t\tswitch o := data.Bucket - bucketsPerFamily; o {\n\t\t\tcase 0:\n\t\t\t\tobs = f.Latency.Minute()\n\t\t\t\tdata.HistogramWindow = \"last minute\"\n\t\t\tcase 1:\n\t\t\t\tobs = f.Latency.Hour()\n\t\t\t\tdata.HistogramWindow = \"last hour\"\n\t\t\tcase 2:\n\t\t\t\tobs = f.Latency.Total()\n\t\t\t\tdata.HistogramWindow = \"all time\"\n\t\t\t}\n\t\t\tf.LatencyMu.RUnlock()\n\t\t\tif obs != nil {\n\t\t\t\tdata.Histogram = obs.(*histogram).html()\n\t\t\t}\n\t\t}\n\t}\n\n\tif data.Traces != nil {\n\t\tdefer data.Traces.Free()\n\t\tsort.Sort(data.Traces)\n\t}\n\n\tcompletedMu.RLock()\n\tdefer completedMu.RUnlock()\n\tif err := pageTmpl().ExecuteTemplate(w, \"Page\", data); err != nil {\n\t\tlog.Printf(\"net/trace: Failed executing template: %v\", err)\n\t}\n}\n\nfunc parseArgs(req *http.Request) (fam string, b int, ok bool) {\n\tif req == nil {\n\t\treturn \"\", 0, false\n\t}\n\tfam, bStr := req.FormValue(\"fam\"), req.FormValue(\"b\")\n\tif fam == \"\" || bStr == \"\" {\n\t\treturn \"\", 0, false\n\t}\n\tb, err := strconv.Atoi(bStr)\n\tif err != nil || b < -1 {\n\t\treturn \"\", 0, false\n\t}\n\n\treturn fam, b, true\n}\n\nfunc lookupBucket(fam string, b int) *traceBucket {\n\tf := getFamily(fam, false)\n\tif f == nil || b < 0 || b >= len(f.Buckets) {\n\t\treturn nil\n\t}\n\treturn f.Buckets[b]\n}\n\ntype contextKeyT string\n\nvar contextKey = contextKeyT(\"golang.org/x/net/trace.Trace\")\n\n// Trace represents an active request.\ntype Trace interface {\n\t// LazyLog adds x to the event log. It will be evaluated each time the\n\t// /debug/requests page is rendered. Any memory referenced by x will be\n\t// pinned until the trace is finished and later discarded.\n\tLazyLog(x fmt.Stringer, sensitive bool)\n\n\t// LazyPrintf evaluates its arguments with fmt.Sprintf each time the\n\t// /debug/requests page is rendered. Any memory referenced by a will be\n\t// pinned until the trace is finished and later discarded.\n\tLazyPrintf(format string, a ...interface{})\n\n\t// SetError declares that this trace resulted in an error.\n\tSetError()\n\n\t// SetRecycler sets a recycler for the trace.\n\t// f will be called for each event passed to LazyLog at a time when\n\t// it is no longer required, whether while the trace is still active\n\t// and the event is discarded, or when a completed trace is discarded.\n\tSetRecycler(f func(interface{}))\n\n\t// SetTraceInfo sets the trace info for the trace.\n\t// This is currently unused.\n\tSetTraceInfo(traceID, spanID uint64)\n\n\t// SetMaxEvents sets the maximum number of events that will be stored\n\t// in the trace. This has no effect if any events have already been\n\t// added to the trace.\n\tSetMaxEvents(m int)\n\n\t// Finish declares that this trace is complete.\n\t// The trace should not be used after calling this method.\n\tFinish()\n}\n\ntype lazySprintf struct {\n\tformat string\n\ta      []interface{}\n}\n\nfunc (l *lazySprintf) String() string {\n\treturn fmt.Sprintf(l.format, l.a...)\n}\n\n// New returns a new Trace with the specified family and title.\nfunc New(family, title string) Trace {\n\ttr := newTrace()\n\ttr.ref()\n\ttr.Family, tr.Title = family, title\n\ttr.Start = time.Now()\n\ttr.maxEvents = maxEventsPerTrace\n\ttr.events = tr.eventsBuf[:0]\n\n\tactiveMu.RLock()\n\ts := activeTraces[tr.Family]\n\tactiveMu.RUnlock()\n\tif s == nil {\n\t\tactiveMu.Lock()\n\t\ts = activeTraces[tr.Family] // check again\n\t\tif s == nil {\n\t\t\ts = new(traceSet)\n\t\t\tactiveTraces[tr.Family] = s\n\t\t}\n\t\tactiveMu.Unlock()\n\t}\n\ts.Add(tr)\n\n\t// Trigger allocation of the completed trace structure for this family.\n\t// This will cause the family to be present in the request page during\n\t// the first trace of this family. We don't care about the return value,\n\t// nor is there any need for this to run inline, so we execute it in its\n\t// own goroutine, but only if the family isn't allocated yet.\n\tcompletedMu.RLock()\n\tif _, ok := completedTraces[tr.Family]; !ok {\n\t\tgo allocFamily(tr.Family)\n\t}\n\tcompletedMu.RUnlock()\n\n\treturn tr\n}\n\nfunc (tr *trace) Finish() {\n\telapsed := time.Since(tr.Start)\n\ttr.mu.Lock()\n\ttr.Elapsed = elapsed\n\ttr.mu.Unlock()\n\n\tif DebugUseAfterFinish {\n\t\tbuf := make([]byte, 4<<10) // 4 KB should be enough\n\t\tn := runtime.Stack(buf, false)\n\t\ttr.finishStack = buf[:n]\n\t}\n\n\tactiveMu.RLock()\n\tm := activeTraces[tr.Family]\n\tactiveMu.RUnlock()\n\tm.Remove(tr)\n\n\tf := getFamily(tr.Family, true)\n\ttr.mu.RLock() // protects tr fields in Cond.match calls\n\tfor _, b := range f.Buckets {\n\t\tif b.Cond.match(tr) {\n\t\t\tb.Add(tr)\n\t\t}\n\t}\n\ttr.mu.RUnlock()\n\n\t// Add a sample of elapsed time as microseconds to the family's timeseries\n\th := new(histogram)\n\th.addMeasurement(elapsed.Nanoseconds() / 1e3)\n\tf.LatencyMu.Lock()\n\tf.Latency.Add(h)\n\tf.LatencyMu.Unlock()\n\n\ttr.unref() // matches ref in New\n}\n\nconst (\n\tbucketsPerFamily    = 9\n\ttracesPerBucket     = 10\n\tmaxActiveTraces     = 20 // Maximum number of active traces to show.\n\tmaxEventsPerTrace   = 10\n\tnumHistogramBuckets = 38\n)\n\nvar (\n\t// The active traces.\n\tactiveMu     sync.RWMutex\n\tactiveTraces = make(map[string]*traceSet) // family -> traces\n\n\t// Families of completed traces.\n\tcompletedMu     sync.RWMutex\n\tcompletedTraces = make(map[string]*family) // family -> traces\n)\n\ntype traceSet struct {\n\tmu sync.RWMutex\n\tm  map[*trace]bool\n\n\t// We could avoid the entire map scan in FirstN by having a slice of all the traces\n\t// ordered by start time, and an index into that from the trace struct, with a periodic\n\t// repack of the slice after enough traces finish; we could also use a skip list or similar.\n\t// However, that would shift some of the expense from /debug/requests time to RPC time,\n\t// which is probably the wrong trade-off.\n}\n\nfunc (ts *traceSet) Len() int {\n\tts.mu.RLock()\n\tdefer ts.mu.RUnlock()\n\treturn len(ts.m)\n}\n\nfunc (ts *traceSet) Add(tr *trace) {\n\tts.mu.Lock()\n\tif ts.m == nil {\n\t\tts.m = make(map[*trace]bool)\n\t}\n\tts.m[tr] = true\n\tts.mu.Unlock()\n}\n\nfunc (ts *traceSet) Remove(tr *trace) {\n\tts.mu.Lock()\n\tdelete(ts.m, tr)\n\tts.mu.Unlock()\n}\n\n// FirstN returns the first n traces ordered by time.\nfunc (ts *traceSet) FirstN(n int) traceList {\n\tts.mu.RLock()\n\tdefer ts.mu.RUnlock()\n\n\tif n > len(ts.m) {\n\t\tn = len(ts.m)\n\t}\n\ttrl := make(traceList, 0, n)\n\n\t// Fast path for when no selectivity is needed.\n\tif n == len(ts.m) {\n\t\tfor tr := range ts.m {\n\t\t\ttr.ref()\n\t\t\ttrl = append(trl, tr)\n\t\t}\n\t\tsort.Sort(trl)\n\t\treturn trl\n\t}\n\n\t// Pick the oldest n traces.\n\t// This is inefficient. See the comment in the traceSet struct.\n\tfor tr := range ts.m {\n\t\t// Put the first n traces into trl in the order they occur.\n\t\t// When we have n, sort trl, and thereafter maintain its order.\n\t\tif len(trl) < n {\n\t\t\ttr.ref()\n\t\t\ttrl = append(trl, tr)\n\t\t\tif len(trl) == n {\n\t\t\t\t// This is guaranteed to happen exactly once during this loop.\n\t\t\t\tsort.Sort(trl)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif tr.Start.After(trl[n-1].Start) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Find where to insert this one.\n\t\ttr.ref()\n\t\ti := sort.Search(n, func(i int) bool { return trl[i].Start.After(tr.Start) })\n\t\ttrl[n-1].unref()\n\t\tcopy(trl[i+1:], trl[i:])\n\t\ttrl[i] = tr\n\t}\n\n\treturn trl\n}\n\nfunc getActiveTraces(fam string) traceList {\n\tactiveMu.RLock()\n\ts := activeTraces[fam]\n\tactiveMu.RUnlock()\n\tif s == nil {\n\t\treturn nil\n\t}\n\treturn s.FirstN(maxActiveTraces)\n}\n\nfunc getFamily(fam string, allocNew bool) *family {\n\tcompletedMu.RLock()\n\tf := completedTraces[fam]\n\tcompletedMu.RUnlock()\n\tif f == nil && allocNew {\n\t\tf = allocFamily(fam)\n\t}\n\treturn f\n}\n\nfunc allocFamily(fam string) *family {\n\tcompletedMu.Lock()\n\tdefer completedMu.Unlock()\n\tf := completedTraces[fam]\n\tif f == nil {\n\t\tf = newFamily()\n\t\tcompletedTraces[fam] = f\n\t}\n\treturn f\n}\n\n// family represents a set of trace buckets and associated latency information.\ntype family struct {\n\t// traces may occur in multiple buckets.\n\tBuckets [bucketsPerFamily]*traceBucket\n\n\t// latency time series\n\tLatencyMu sync.RWMutex\n\tLatency   *timeseries.MinuteHourSeries\n}\n\nfunc newFamily() *family {\n\treturn &family{\n\t\tBuckets: [bucketsPerFamily]*traceBucket{\n\t\t\t{Cond: minCond(0)},\n\t\t\t{Cond: minCond(50 * time.Millisecond)},\n\t\t\t{Cond: minCond(100 * time.Millisecond)},\n\t\t\t{Cond: minCond(200 * time.Millisecond)},\n\t\t\t{Cond: minCond(500 * time.Millisecond)},\n\t\t\t{Cond: minCond(1 * time.Second)},\n\t\t\t{Cond: minCond(10 * time.Second)},\n\t\t\t{Cond: minCond(100 * time.Second)},\n\t\t\t{Cond: errorCond{}},\n\t\t},\n\t\tLatency: timeseries.NewMinuteHourSeries(func() timeseries.Observable { return new(histogram) }),\n\t}\n}\n\n// traceBucket represents a size-capped bucket of historic traces,\n// along with a condition for a trace to belong to the bucket.\ntype traceBucket struct {\n\tCond cond\n\n\t// Ring buffer implementation of a fixed-size FIFO queue.\n\tmu     sync.RWMutex\n\tbuf    [tracesPerBucket]*trace\n\tstart  int // < tracesPerBucket\n\tlength int // <= tracesPerBucket\n}\n\nfunc (b *traceBucket) Add(tr *trace) {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\n\ti := b.start + b.length\n\tif i >= tracesPerBucket {\n\t\ti -= tracesPerBucket\n\t}\n\tif b.length == tracesPerBucket {\n\t\t// \"Remove\" an element from the bucket.\n\t\tb.buf[i].unref()\n\t\tb.start++\n\t\tif b.start == tracesPerBucket {\n\t\t\tb.start = 0\n\t\t}\n\t}\n\tb.buf[i] = tr\n\tif b.length < tracesPerBucket {\n\t\tb.length++\n\t}\n\ttr.ref()\n}\n\n// Copy returns a copy of the traces in the bucket.\n// If tracedOnly is true, only the traces with trace information will be returned.\n// The logs will be ref'd before returning; the caller should call\n// the Free method when it is done with them.\n// TODO(dsymonds): keep track of traced requests in separate buckets.\nfunc (b *traceBucket) Copy(tracedOnly bool) traceList {\n\tb.mu.RLock()\n\tdefer b.mu.RUnlock()\n\n\ttrl := make(traceList, 0, b.length)\n\tfor i, x := 0, b.start; i < b.length; i++ {\n\t\ttr := b.buf[x]\n\t\tif !tracedOnly || tr.spanID != 0 {\n\t\t\ttr.ref()\n\t\t\ttrl = append(trl, tr)\n\t\t}\n\t\tx++\n\t\tif x == b.length {\n\t\t\tx = 0\n\t\t}\n\t}\n\treturn trl\n}\n\nfunc (b *traceBucket) Empty() bool {\n\tb.mu.RLock()\n\tdefer b.mu.RUnlock()\n\treturn b.length == 0\n}\n\n// cond represents a condition on a trace.\ntype cond interface {\n\tmatch(t *trace) bool\n\tString() string\n}\n\ntype minCond time.Duration\n\nfunc (m minCond) match(t *trace) bool { return t.Elapsed >= time.Duration(m) }\nfunc (m minCond) String() string      { return fmt.Sprintf(\"≥%gs\", time.Duration(m).Seconds()) }\n\ntype errorCond struct{}\n\nfunc (e errorCond) match(t *trace) bool { return t.IsError }\nfunc (e errorCond) String() string      { return \"errors\" }\n\ntype traceList []*trace\n\n// Free calls unref on each element of the list.\nfunc (trl traceList) Free() {\n\tfor _, t := range trl {\n\t\tt.unref()\n\t}\n}\n\n// traceList may be sorted in reverse chronological order.\nfunc (trl traceList) Len() int           { return len(trl) }\nfunc (trl traceList) Less(i, j int) bool { return trl[i].Start.After(trl[j].Start) }\nfunc (trl traceList) Swap(i, j int)      { trl[i], trl[j] = trl[j], trl[i] }\n\n// An event is a timestamped log entry in a trace.\ntype event struct {\n\tWhen       time.Time\n\tElapsed    time.Duration // since previous event in trace\n\tNewDay     bool          // whether this event is on a different day to the previous event\n\tRecyclable bool          // whether this event was passed via LazyLog\n\tSensitive  bool          // whether this event contains sensitive information\n\tWhat       interface{}   // string or fmt.Stringer\n}\n\n// WhenString returns a string representation of the elapsed time of the event.\n// It will include the date if midnight was crossed.\nfunc (e event) WhenString() string {\n\tif e.NewDay {\n\t\treturn e.When.Format(\"2006/01/02 15:04:05.000000\")\n\t}\n\treturn e.When.Format(\"15:04:05.000000\")\n}\n\n// discarded represents a number of discarded events.\n// It is stored as *discarded to make it easier to update in-place.\ntype discarded int\n\nfunc (d *discarded) String() string {\n\treturn fmt.Sprintf(\"(%d events discarded)\", int(*d))\n}\n\n// trace represents an active or complete request,\n// either sent or received by this program.\ntype trace struct {\n\t// Family is the top-level grouping of traces to which this belongs.\n\tFamily string\n\n\t// Title is the title of this trace.\n\tTitle string\n\n\t// Start time of the this trace.\n\tStart time.Time\n\n\tmu        sync.RWMutex\n\tevents    []event // Append-only sequence of events (modulo discards).\n\tmaxEvents int\n\trecycler  func(interface{})\n\tIsError   bool          // Whether this trace resulted in an error.\n\tElapsed   time.Duration // Elapsed time for this trace, zero while active.\n\ttraceID   uint64        // Trace information if non-zero.\n\tspanID    uint64\n\n\trefs int32     // how many buckets this is in\n\tdisc discarded // scratch space to avoid allocation\n\n\tfinishStack []byte // where finish was called, if DebugUseAfterFinish is set\n\n\teventsBuf [4]event // preallocated buffer in case we only log a few events\n}\n\nfunc (tr *trace) reset() {\n\t// Clear all but the mutex. Mutexes may not be copied, even when unlocked.\n\ttr.Family = \"\"\n\ttr.Title = \"\"\n\ttr.Start = time.Time{}\n\n\ttr.mu.Lock()\n\ttr.Elapsed = 0\n\ttr.traceID = 0\n\ttr.spanID = 0\n\ttr.IsError = false\n\ttr.maxEvents = 0\n\ttr.events = nil\n\ttr.recycler = nil\n\ttr.mu.Unlock()\n\n\ttr.refs = 0\n\ttr.disc = 0\n\ttr.finishStack = nil\n\tfor i := range tr.eventsBuf {\n\t\ttr.eventsBuf[i] = event{}\n\t}\n}\n\n// delta returns the elapsed time since the last event or the trace start,\n// and whether it spans midnight.\n// L >= tr.mu\nfunc (tr *trace) delta(t time.Time) (time.Duration, bool) {\n\tif len(tr.events) == 0 {\n\t\treturn t.Sub(tr.Start), false\n\t}\n\tprev := tr.events[len(tr.events)-1].When\n\treturn t.Sub(prev), prev.Day() != t.Day()\n}\n\nfunc (tr *trace) addEvent(x interface{}, recyclable, sensitive bool) {\n\tif DebugUseAfterFinish && tr.finishStack != nil {\n\t\tbuf := make([]byte, 4<<10) // 4 KB should be enough\n\t\tn := runtime.Stack(buf, false)\n\t\tlog.Printf(\"net/trace: trace used after finish:\\nFinished at:\\n%s\\nUsed at:\\n%s\", tr.finishStack, buf[:n])\n\t}\n\n\t/*\n\t\tNOTE TO DEBUGGERS\n\n\t\tIf you are here because your program panicked in this code,\n\t\tit is almost definitely the fault of code using this package,\n\t\tand very unlikely to be the fault of this code.\n\n\t\tThe most likely scenario is that some code elsewhere is using\n\t\ta trace.Trace after its Finish method is called.\n\t\tYou can temporarily set the DebugUseAfterFinish var\n\t\tto help discover where that is; do not leave that var set,\n\t\tsince it makes this package much less efficient.\n\t*/\n\n\te := event{When: time.Now(), What: x, Recyclable: recyclable, Sensitive: sensitive}\n\ttr.mu.Lock()\n\te.Elapsed, e.NewDay = tr.delta(e.When)\n\tif len(tr.events) < tr.maxEvents {\n\t\ttr.events = append(tr.events, e)\n\t} else {\n\t\t// Discard the middle events.\n\t\tdi := int((tr.maxEvents - 1) / 2)\n\t\tif d, ok := tr.events[di].What.(*discarded); ok {\n\t\t\t(*d)++\n\t\t} else {\n\t\t\t// disc starts at two to count for the event it is replacing,\n\t\t\t// plus the next one that we are about to drop.\n\t\t\ttr.disc = 2\n\t\t\tif tr.recycler != nil && tr.events[di].Recyclable {\n\t\t\t\tgo tr.recycler(tr.events[di].What)\n\t\t\t}\n\t\t\ttr.events[di].What = &tr.disc\n\t\t}\n\t\t// The timestamp of the discarded meta-event should be\n\t\t// the time of the last event it is representing.\n\t\ttr.events[di].When = tr.events[di+1].When\n\n\t\tif tr.recycler != nil && tr.events[di+1].Recyclable {\n\t\t\tgo tr.recycler(tr.events[di+1].What)\n\t\t}\n\t\tcopy(tr.events[di+1:], tr.events[di+2:])\n\t\ttr.events[tr.maxEvents-1] = e\n\t}\n\ttr.mu.Unlock()\n}\n\nfunc (tr *trace) LazyLog(x fmt.Stringer, sensitive bool) {\n\ttr.addEvent(x, true, sensitive)\n}\n\nfunc (tr *trace) LazyPrintf(format string, a ...interface{}) {\n\ttr.addEvent(&lazySprintf{format, a}, false, false)\n}\n\nfunc (tr *trace) SetError() {\n\ttr.mu.Lock()\n\ttr.IsError = true\n\ttr.mu.Unlock()\n}\n\nfunc (tr *trace) SetRecycler(f func(interface{})) {\n\ttr.mu.Lock()\n\ttr.recycler = f\n\ttr.mu.Unlock()\n}\n\nfunc (tr *trace) SetTraceInfo(traceID, spanID uint64) {\n\ttr.mu.Lock()\n\ttr.traceID, tr.spanID = traceID, spanID\n\ttr.mu.Unlock()\n}\n\nfunc (tr *trace) SetMaxEvents(m int) {\n\ttr.mu.Lock()\n\t// Always keep at least three events: first, discarded count, last.\n\tif len(tr.events) == 0 && m > 3 {\n\t\ttr.maxEvents = m\n\t}\n\ttr.mu.Unlock()\n}\n\nfunc (tr *trace) ref() {\n\tatomic.AddInt32(&tr.refs, 1)\n}\n\nfunc (tr *trace) unref() {\n\tif atomic.AddInt32(&tr.refs, -1) == 0 {\n\t\ttr.mu.RLock()\n\t\tif tr.recycler != nil {\n\t\t\t// freeTrace clears tr, so we hold tr.recycler and tr.events here.\n\t\t\tgo func(f func(interface{}), es []event) {\n\t\t\t\tfor _, e := range es {\n\t\t\t\t\tif e.Recyclable {\n\t\t\t\t\t\tf(e.What)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}(tr.recycler, tr.events)\n\t\t}\n\t\ttr.mu.RUnlock()\n\n\t\tfreeTrace(tr)\n\t}\n}\n\nfunc (tr *trace) When() string {\n\treturn tr.Start.Format(\"2006/01/02 15:04:05.000000\")\n}\n\nfunc (tr *trace) ElapsedTime() string {\n\ttr.mu.RLock()\n\tt := tr.Elapsed\n\ttr.mu.RUnlock()\n\n\tif t == 0 {\n\t\t// Active trace.\n\t\tt = time.Since(tr.Start)\n\t}\n\treturn fmt.Sprintf(\"%.6f\", t.Seconds())\n}\n\nfunc (tr *trace) Events() []event {\n\ttr.mu.RLock()\n\tdefer tr.mu.RUnlock()\n\treturn tr.events\n}\n\nvar traceFreeList = make(chan *trace, 1000) // TODO(dsymonds): Use sync.Pool?\n\n// newTrace returns a trace ready to use.\nfunc newTrace() *trace {\n\tselect {\n\tcase tr := <-traceFreeList:\n\t\treturn tr\n\tdefault:\n\t\treturn new(trace)\n\t}\n}\n\n// freeTrace adds tr to traceFreeList if there's room.\n// This is non-blocking.\nfunc freeTrace(tr *trace) {\n\tif DebugUseAfterFinish {\n\t\treturn // never reuse\n\t}\n\ttr.reset()\n\tselect {\n\tcase traceFreeList <- tr:\n\tdefault:\n\t}\n}\n\nfunc elapsed(d time.Duration) string {\n\tb := []byte(fmt.Sprintf(\"%.6f\", d.Seconds()))\n\n\t// For subsecond durations, blank all zeros before decimal point,\n\t// and all zeros between the decimal point and the first non-zero digit.\n\tif d < time.Second {\n\t\tdot := bytes.IndexByte(b, '.')\n\t\tfor i := 0; i < dot; i++ {\n\t\t\tb[i] = ' '\n\t\t}\n\t\tfor i := dot + 1; i < len(b); i++ {\n\t\t\tif b[i] == '0' {\n\t\t\t\tb[i] = ' '\n\t\t\t} else {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\treturn string(b)\n}\n\nvar pageTmplCache *template.Template\nvar pageTmplOnce sync.Once\n\nfunc pageTmpl() *template.Template {\n\tpageTmplOnce.Do(func() {\n\t\tpageTmplCache = template.Must(template.New(\"Page\").Funcs(template.FuncMap{\n\t\t\t\"elapsed\": elapsed,\n\t\t\t\"add\":     func(a, b int) int { return a + b },\n\t\t}).Parse(pageHTML))\n\t})\n\treturn pageTmplCache\n}\n\nconst pageHTML = `\n{{template \"Prolog\" .}}\n{{template \"StatusTable\" .}}\n{{template \"Epilog\" .}}\n\n{{define \"Prolog\"}}\n<html>\n\t<head>\n\t<title>/debug/requests</title>\n\t<style type=\"text/css\">\n\t\tbody {\n\t\t\tfont-family: sans-serif;\n\t\t}\n\t\ttable#tr-status td.family {\n\t\t\tpadding-right: 2em;\n\t\t}\n\t\ttable#tr-status td.active {\n\t\t\tpadding-right: 1em;\n\t\t}\n\t\ttable#tr-status td.latency-first {\n\t\t\tpadding-left: 1em;\n\t\t}\n\t\ttable#tr-status td.empty {\n\t\t\tcolor: #aaa;\n\t\t}\n\t\ttable#reqs {\n\t\t\tmargin-top: 1em;\n\t\t}\n\t\ttable#reqs tr.first {\n\t\t\t{{if $.Expanded}}font-weight: bold;{{end}}\n\t\t}\n\t\ttable#reqs td {\n\t\t\tfont-family: monospace;\n\t\t}\n\t\ttable#reqs td.when {\n\t\t\ttext-align: right;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t\ttable#reqs td.elapsed {\n\t\t\tpadding: 0 0.5em;\n\t\t\ttext-align: right;\n\t\t\twhite-space: pre;\n\t\t\twidth: 10em;\n\t\t}\n\t\taddress {\n\t\t\tfont-size: smaller;\n\t\t\tmargin-top: 5em;\n\t\t}\n\t</style>\n\t</head>\n\t<body>\n\n<h1>/debug/requests</h1>\n{{end}} {{/* end of Prolog */}}\n\n{{define \"StatusTable\"}}\n<table id=\"tr-status\">\n\t{{range $fam := .Families}}\n\t<tr>\n\t\t<td class=\"family\">{{$fam}}</td>\n\n\t\t{{$n := index $.ActiveTraceCount $fam}}\n\t\t<td class=\"active {{if not $n}}empty{{end}}\">\n\t\t\t{{if $n}}<a href=\"?fam={{$fam}}&b=-1{{if $.Expanded}}&exp=1{{end}}\">{{end}}\n\t\t\t[{{$n}} active]\n\t\t\t{{if $n}}</a>{{end}}\n\t\t</td>\n\n\t\t{{$f := index $.CompletedTraces $fam}}\n\t\t{{range $i, $b := $f.Buckets}}\n\t\t{{$empty := $b.Empty}}\n\t\t<td {{if $empty}}class=\"empty\"{{end}}>\n\t\t{{if not $empty}}<a href=\"?fam={{$fam}}&b={{$i}}{{if $.Expanded}}&exp=1{{end}}\">{{end}}\n\t\t[{{.Cond}}]\n\t\t{{if not $empty}}</a>{{end}}\n\t\t</td>\n\t\t{{end}}\n\n\t\t{{$nb := len $f.Buckets}}\n\t\t<td class=\"latency-first\">\n\t\t<a href=\"?fam={{$fam}}&b={{$nb}}\">[minute]</a>\n\t\t</td>\n\t\t<td>\n\t\t<a href=\"?fam={{$fam}}&b={{add $nb 1}}\">[hour]</a>\n\t\t</td>\n\t\t<td>\n\t\t<a href=\"?fam={{$fam}}&b={{add $nb 2}}\">[total]</a>\n\t\t</td>\n\n\t</tr>\n\t{{end}}\n</table>\n{{end}} {{/* end of StatusTable */}}\n\n{{define \"Epilog\"}}\n{{if $.Traces}}\n<hr />\n<h3>Family: {{$.Family}}</h3>\n\n{{if or $.Expanded $.Traced}}\n  <a href=\"?fam={{$.Family}}&b={{$.Bucket}}\">[Normal/Summary]</a>\n{{else}}\n  [Normal/Summary]\n{{end}}\n\n{{if or (not $.Expanded) $.Traced}}\n  <a href=\"?fam={{$.Family}}&b={{$.Bucket}}&exp=1\">[Normal/Expanded]</a>\n{{else}}\n  [Normal/Expanded]\n{{end}}\n\n{{if not $.Active}}\n\t{{if or $.Expanded (not $.Traced)}}\n\t<a href=\"?fam={{$.Family}}&b={{$.Bucket}}&rtraced=1\">[Traced/Summary]</a>\n\t{{else}}\n\t[Traced/Summary]\n\t{{end}}\n\t{{if or (not $.Expanded) (not $.Traced)}}\n\t<a href=\"?fam={{$.Family}}&b={{$.Bucket}}&exp=1&rtraced=1\">[Traced/Expanded]</a>\n        {{else}}\n\t[Traced/Expanded]\n\t{{end}}\n{{end}}\n\n{{if $.Total}}\n<p><em>Showing <b>{{len $.Traces}}</b> of <b>{{$.Total}}</b> traces.</em></p>\n{{end}}\n\n<table id=\"reqs\">\n\t<caption>\n\t\t{{if $.Active}}Active{{else}}Completed{{end}} Requests\n\t</caption>\n\t<tr><th>When</th><th>Elapsed&nbsp;(s)</th></tr>\n\t{{range $tr := $.Traces}}\n\t<tr class=\"first\">\n\t\t<td class=\"when\">{{$tr.When}}</td>\n\t\t<td class=\"elapsed\">{{$tr.ElapsedTime}}</td>\n\t\t<td>{{$tr.Title}}</td>\n\t\t{{/* TODO: include traceID/spanID */}}\n\t</tr>\n\t{{if $.Expanded}}\n\t{{range $tr.Events}}\n\t<tr>\n\t\t<td class=\"when\">{{.WhenString}}</td>\n\t\t<td class=\"elapsed\">{{elapsed .Elapsed}}</td>\n\t\t<td>{{if or $.ShowSensitive (not .Sensitive)}}... {{.What}}{{else}}<em>[redacted]</em>{{end}}</td>\n\t</tr>\n\t{{end}}\n\t{{end}}\n\t{{end}}\n</table>\n{{end}} {{/* if $.Traces */}}\n\n{{if $.Histogram}}\n<h4>Latency (&micro;s) of {{$.Family}} over {{$.HistogramWindow}}</h4>\n{{$.Histogram}}\n{{end}} {{/* if $.Histogram */}}\n\n\t</body>\n</html>\n{{end}} {{/* end of Epilog */}}\n`\n"
  },
  {
    "path": "vendor/golang.org/x/sync/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/golang.org/x/sync/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/golang.org/x/sync/errgroup/errgroup.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package errgroup provides synchronization, error propagation, and Context\n// cancellation for groups of goroutines working on subtasks of a common task.\n//\n// [errgroup.Group] is related to [sync.WaitGroup] but adds handling of tasks\n// returning errors.\npackage errgroup\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"sync\"\n)\n\ntype token struct{}\n\n// A Group is a collection of goroutines working on subtasks that are part of\n// the same overall task. A Group should not be reused for different tasks.\n//\n// A zero Group is valid, has no limit on the number of active goroutines,\n// and does not cancel on error.\ntype Group struct {\n\tcancel func(error)\n\n\twg sync.WaitGroup\n\n\tsem chan token\n\n\terrOnce sync.Once\n\terr     error\n}\n\nfunc (g *Group) done() {\n\tif g.sem != nil {\n\t\t<-g.sem\n\t}\n\tg.wg.Done()\n}\n\n// WithContext returns a new Group and an associated Context derived from ctx.\n//\n// The derived Context is canceled the first time a function passed to Go\n// returns a non-nil error or the first time Wait returns, whichever occurs\n// first.\nfunc WithContext(ctx context.Context) (*Group, context.Context) {\n\tctx, cancel := context.WithCancelCause(ctx)\n\treturn &Group{cancel: cancel}, ctx\n}\n\n// Wait blocks until all function calls from the Go method have returned, then\n// returns the first non-nil error (if any) from them.\nfunc (g *Group) Wait() error {\n\tg.wg.Wait()\n\tif g.cancel != nil {\n\t\tg.cancel(g.err)\n\t}\n\treturn g.err\n}\n\n// Go calls the given function in a new goroutine.\n//\n// The first call to Go must happen before a Wait.\n// It blocks until the new goroutine can be added without the number of\n// goroutines in the group exceeding the configured limit.\n//\n// The first goroutine in the group that returns a non-nil error will\n// cancel the associated Context, if any. The error will be returned\n// by Wait.\nfunc (g *Group) Go(f func() error) {\n\tif g.sem != nil {\n\t\tg.sem <- token{}\n\t}\n\n\tg.wg.Add(1)\n\tgo func() {\n\t\tdefer g.done()\n\n\t\t// It is tempting to propagate panics from f()\n\t\t// up to the goroutine that calls Wait, but\n\t\t// it creates more problems than it solves:\n\t\t// - it delays panics arbitrarily,\n\t\t//   making bugs harder to detect;\n\t\t// - it turns f's panic stack into a mere value,\n\t\t//   hiding it from crash-monitoring tools;\n\t\t// - it risks deadlocks that hide the panic entirely,\n\t\t//   if f's panic leaves the program in a state\n\t\t//   that prevents the Wait call from being reached.\n\t\t// See #53757, #74275, #74304, #74306.\n\n\t\tif err := f(); err != nil {\n\t\t\tg.errOnce.Do(func() {\n\t\t\t\tg.err = err\n\t\t\t\tif g.cancel != nil {\n\t\t\t\t\tg.cancel(g.err)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}()\n}\n\n// TryGo calls the given function in a new goroutine only if the number of\n// active goroutines in the group is currently below the configured limit.\n//\n// The return value reports whether the goroutine was started.\nfunc (g *Group) TryGo(f func() error) bool {\n\tif g.sem != nil {\n\t\tselect {\n\t\tcase g.sem <- token{}:\n\t\t\t// Note: this allows barging iff channels in general allow barging.\n\t\tdefault:\n\t\t\treturn false\n\t\t}\n\t}\n\n\tg.wg.Add(1)\n\tgo func() {\n\t\tdefer g.done()\n\n\t\tif err := f(); err != nil {\n\t\t\tg.errOnce.Do(func() {\n\t\t\t\tg.err = err\n\t\t\t\tif g.cancel != nil {\n\t\t\t\t\tg.cancel(g.err)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}()\n\treturn true\n}\n\n// SetLimit limits the number of active goroutines in this group to at most n.\n// A negative value indicates no limit.\n// A limit of zero will prevent any new goroutines from being added.\n//\n// Any subsequent call to the Go method will block until it can add an active\n// goroutine without exceeding the configured limit.\n//\n// The limit must not be modified while any goroutines in the group are active.\nfunc (g *Group) SetLimit(n int) {\n\tif n < 0 {\n\t\tg.sem = nil\n\t\treturn\n\t}\n\tif active := len(g.sem); active != 0 {\n\t\tpanic(fmt.Errorf(\"errgroup: modify limit while %v goroutines in the group are still active\", active))\n\t}\n\tg.sem = make(chan token, n)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/golang.org/x/sys/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/.gitignore",
    "content": "_obj/\nunix.test\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/README.md",
    "content": "# Building `sys/unix`\n\nThe sys/unix package provides access to the raw system call interface of the\nunderlying operating system. See: https://godoc.org/golang.org/x/sys/unix\n\nPorting Go to a new architecture/OS combination or adding syscalls, types, or\nconstants to an existing architecture/OS pair requires some manual effort;\nhowever, there are tools that automate much of the process.\n\n## Build Systems\n\nThere are currently two ways we generate the necessary files. We are currently\nmigrating the build system to use containers so the builds are reproducible.\nThis is being done on an OS-by-OS basis. Please update this documentation as\ncomponents of the build system change.\n\n### Old Build System (currently for `GOOS != \"linux\"`)\n\nThe old build system generates the Go files based on the C header files\npresent on your system. This means that files\nfor a given GOOS/GOARCH pair must be generated on a system with that OS and\narchitecture. This also means that the generated code can differ from system\nto system, based on differences in the header files.\n\nTo avoid this, if you are using the old build system, only generate the Go\nfiles on an installation with unmodified header files. It is also important to\nkeep track of which version of the OS the files were generated from (ex.\nDarwin 14 vs Darwin 15). This makes it easier to track the progress of changes\nand have each OS upgrade correspond to a single change.\n\nTo build the files for your current OS and architecture, make sure GOOS and\nGOARCH are set correctly and run `mkall.sh`. This will generate the files for\nyour specific system. Running `mkall.sh -n` shows the commands that will be run.\n\nRequirements: bash, go\n\n### New Build System (currently for `GOOS == \"linux\"`)\n\nThe new build system uses a Docker container to generate the go files directly\nfrom source checkouts of the kernel and various system libraries. This means\nthat on any platform that supports Docker, all the files using the new build\nsystem can be generated at once, and generated files will not change based on\nwhat the person running the scripts has installed on their computer.\n\nThe OS specific files for the new build system are located in the `${GOOS}`\ndirectory, and the build is coordinated by the `${GOOS}/mkall.go` program. When\nthe kernel or system library updates, modify the Dockerfile at\n`${GOOS}/Dockerfile` to checkout the new release of the source.\n\nTo build all the files under the new build system, you must be on an amd64/Linux\nsystem and have your GOOS and GOARCH set accordingly. Running `mkall.sh` will\nthen generate all of the files for all of the GOOS/GOARCH pairs in the new build\nsystem. Running `mkall.sh -n` shows the commands that will be run.\n\nRequirements: bash, go, docker\n\n## Component files\n\nThis section describes the various files used in the code generation process.\nIt also contains instructions on how to modify these files to add a new\narchitecture/OS or to add additional syscalls, types, or constants. Note that\nif you are using the new build system, the scripts/programs cannot be called normally.\nThey must be called from within the docker container.\n\n### asm files\n\nThe hand-written assembly file at `asm_${GOOS}_${GOARCH}.s` implements system\ncall dispatch. There are three entry points:\n```\n  func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)\n  func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)\n  func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)\n```\nThe first and second are the standard ones; they differ only in how many\narguments can be passed to the kernel. The third is for low-level use by the\nForkExec wrapper. Unlike the first two, it does not call into the scheduler to\nlet it know that a system call is running.\n\nWhen porting Go to a new architecture/OS, this file must be implemented for\neach GOOS/GOARCH pair.\n\n### mksysnum\n\nMksysnum is a Go program located at `${GOOS}/mksysnum.go` (or `mksysnum_${GOOS}.go`\nfor the old system). This program takes in a list of header files containing the\nsyscall number declarations and parses them to produce the corresponding list of\nGo numeric constants. See `zsysnum_${GOOS}_${GOARCH}.go` for the generated\nconstants.\n\nAdding new syscall numbers is mostly done by running the build on a sufficiently\nnew installation of the target OS (or updating the source checkouts for the\nnew build system). However, depending on the OS, you may need to update the\nparsing in mksysnum.\n\n### mksyscall.go\n\nThe `syscall.go`, `syscall_${GOOS}.go`, `syscall_${GOOS}_${GOARCH}.go` are\nhand-written Go files which implement system calls (for unix, the specific OS,\nor the specific OS/Architecture pair respectively) that need special handling\nand list `//sys` comments giving prototypes for ones that can be generated.\n\nThe mksyscall.go program takes the `//sys` and `//sysnb` comments and converts\nthem into syscalls. This requires the name of the prototype in the comment to\nmatch a syscall number in the `zsysnum_${GOOS}_${GOARCH}.go` file. The function\nprototype can be exported (capitalized) or not.\n\nAdding a new syscall often just requires adding a new `//sys` function prototype\nwith the desired arguments and a capitalized name so it is exported. However, if\nyou want the interface to the syscall to be different, often one will make an\nunexported `//sys` prototype, and then write a custom wrapper in\n`syscall_${GOOS}.go`.\n\n### types files\n\nFor each OS, there is a hand-written Go file at `${GOOS}/types.go` (or\n`types_${GOOS}.go` on the old system). This file includes standard C headers and\ncreates Go type aliases to the corresponding C types. The file is then fed\nthrough godef to get the Go compatible definitions. Finally, the generated code\nis fed though mkpost.go to format the code correctly and remove any hidden or\nprivate identifiers. This cleaned-up code is written to\n`ztypes_${GOOS}_${GOARCH}.go`.\n\nThe hardest part about preparing this file is figuring out which headers to\ninclude and which symbols need to be `#define`d to get the actual data\nstructures that pass through to the kernel system calls. Some C libraries\npreset alternate versions for binary compatibility and translate them on the\nway in and out of system calls, but there is almost always a `#define` that can\nget the real ones.\nSee `types_darwin.go` and `linux/types.go` for examples.\n\nTo add a new type, add in the necessary include statement at the top of the\nfile (if it is not already there) and add in a type alias line. Note that if\nyour type is significantly different on different architectures, you may need\nsome `#if/#elif` macros in your include statements.\n\n### mkerrors.sh\n\nThis script is used to generate the system's various constants. This doesn't\njust include the error numbers and error strings, but also the signal numbers\nand a wide variety of miscellaneous constants. The constants come from the list\nof include files in the `includes_${uname}` variable. A regex then picks out\nthe desired `#define` statements, and generates the corresponding Go constants.\nThe error numbers and strings are generated from `#include <errno.h>`, and the\nsignal numbers and strings are generated from `#include <signal.h>`. All of\nthese constants are written to `zerrors_${GOOS}_${GOARCH}.go` via a C program,\n`_errors.c`, which prints out all the constants.\n\nTo add a constant, add the header that includes it to the appropriate variable.\nThen, edit the regex (if necessary) to match the desired constant. Avoid making\nthe regex too broad to avoid matching unintended constants.\n\n### internal/mkmerge\n\nThis program is used to extract duplicate const, func, and type declarations\nfrom the generated architecture-specific files listed below, and merge these\ninto a common file for each OS.\n\nThe merge is performed in the following steps:\n1. Construct the set of common code that is identical in all architecture-specific files.\n2. Write this common code to the merged file.\n3. Remove the common code from all architecture-specific files.\n\n\n## Generated files\n\n### `zerrors_${GOOS}_${GOARCH}.go`\n\nA file containing all of the system's generated error numbers, error strings,\nsignal numbers, and constants. Generated by `mkerrors.sh` (see above).\n\n### `zsyscall_${GOOS}_${GOARCH}.go`\n\nA file containing all the generated syscalls for a specific GOOS and GOARCH.\nGenerated by `mksyscall.go` (see above).\n\n### `zsysnum_${GOOS}_${GOARCH}.go`\n\nA list of numeric constants for all the syscall number of the specific GOOS\nand GOARCH. Generated by mksysnum (see above).\n\n### `ztypes_${GOOS}_${GOARCH}.go`\n\nA file containing Go types for passing into (or returning from) syscalls.\nGenerated by godefs and the types file (see above).\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/affinity_linux.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// CPU affinity functions\n\npackage unix\n\nimport (\n\t\"math/bits\"\n\t\"unsafe\"\n)\n\nconst cpuSetSize = _CPU_SETSIZE / _NCPUBITS\n\n// CPUSet represents a bit mask of CPUs, to be used with [SchedGetaffinity], [SchedSetaffinity],\n// and [SetMemPolicy].\n//\n// Note this type can only represent CPU IDs 0 through 1023.\n// Use [CPUSetDynamic]/[NewCPUSet] instead to avoid this limit.\ntype CPUSet [cpuSetSize]cpuMask\n\n// CPUSetDynamic represents a bit mask of CPUs, to be used with [SchedGetaffinityDynamic],\n// [SchedSetaffinityDynamic], and [SetMemPolicyDynamic]. Use [NewCPUSet] to allocate.\ntype CPUSetDynamic []cpuMask\n\nfunc schedAffinity(trap uintptr, pid int, size uintptr, ptr unsafe.Pointer) error {\n\t_, _, e := RawSyscall(trap, uintptr(pid), uintptr(size), uintptr(ptr))\n\tif e != 0 {\n\t\treturn errnoErr(e)\n\t}\n\treturn nil\n}\n\n// SchedGetaffinity gets the CPU affinity mask of the thread specified by pid.\n// If pid is 0 the calling thread is used.\nfunc SchedGetaffinity(pid int, set *CPUSet) error {\n\treturn schedAffinity(SYS_SCHED_GETAFFINITY, pid, unsafe.Sizeof(*set), unsafe.Pointer(set))\n}\n\n// SchedSetaffinity sets the CPU affinity mask of the thread specified by pid.\n// If pid is 0 the calling thread is used.\nfunc SchedSetaffinity(pid int, set *CPUSet) error {\n\treturn schedAffinity(SYS_SCHED_SETAFFINITY, pid, unsafe.Sizeof(*set), unsafe.Pointer(set))\n}\n\n// Zero clears the set s, so that it contains no CPUs.\nfunc (s *CPUSet) Zero() {\n\tclear(s[:])\n}\n\n// Fill adds all possible CPU bits to the set s. On Linux, [SchedSetaffinity]\n// will silently ignore any invalid CPU bits in [CPUSet] so this is an\n// efficient way of resetting the CPU affinity of a process.\nfunc (s *CPUSet) Fill() {\n\tcpuMaskFill(s[:])\n}\n\nfunc cpuBitsIndex(cpu int) int {\n\treturn cpu / _NCPUBITS\n}\n\nfunc cpuBitsMask(cpu int) cpuMask {\n\treturn cpuMask(1 << (uint(cpu) % _NCPUBITS))\n}\n\nfunc cpuMaskFill(s []cpuMask) {\n\tfor i := range s {\n\t\ts[i] = ^cpuMask(0)\n\t}\n}\n\nfunc cpuMaskSet(s []cpuMask, cpu int) {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\ts[i] |= cpuBitsMask(cpu)\n\t}\n}\n\nfunc cpuMaskClear(s []cpuMask, cpu int) {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\ts[i] &^= cpuBitsMask(cpu)\n\t}\n}\n\nfunc cpuMaskIsSet(s []cpuMask, cpu int) bool {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\treturn s[i]&cpuBitsMask(cpu) != 0\n\t}\n\treturn false\n}\n\nfunc cpuMaskCount(s []cpuMask) int {\n\tc := 0\n\tfor _, b := range s {\n\t\tc += bits.OnesCount64(uint64(b))\n\t}\n\treturn c\n}\n\n// Set adds cpu to the set s. If cpu is out of bounds for s, no action is taken.\nfunc (s *CPUSet) Set(cpu int) {\n\tcpuMaskSet(s[:], cpu)\n}\n\n// Clear removes cpu from the set s. If cpu is out of bounds for s, no action is taken.\nfunc (s *CPUSet) Clear(cpu int) {\n\tcpuMaskClear(s[:], cpu)\n}\n\n// IsSet reports whether cpu is in the set s.\nfunc (s *CPUSet) IsSet(cpu int) bool {\n\treturn cpuMaskIsSet(s[:], cpu)\n}\n\n// Count returns the number of CPUs in the set s.\nfunc (s *CPUSet) Count() int {\n\treturn cpuMaskCount(s[:])\n}\n\n// NewCPUSet creates a CPU affinity mask capable of representing CPU IDs\n// up to maxCPU (exclusive).\nfunc NewCPUSet(maxCPU int) CPUSetDynamic {\n\tnumMasks := (maxCPU + _NCPUBITS - 1) / _NCPUBITS\n\tif numMasks == 0 {\n\t\tnumMasks = 1\n\t}\n\treturn make(CPUSetDynamic, numMasks)\n}\n\n// Zero clears the set s, so that it contains no CPUs.\nfunc (s CPUSetDynamic) Zero() {\n\tclear(s)\n}\n\n// Fill adds all possible CPU bits to the set s. On Linux, [SchedSetaffinityDynamic]\n// will silently ignore any invalid CPU bits in [CPUSetDynamic] so this is an\n// efficient way of resetting the CPU affinity of a process.\nfunc (s CPUSetDynamic) Fill() {\n\tcpuMaskFill(s)\n}\n\n// Set adds cpu to the set s. If cpu is out of bounds for s, no action is taken.\nfunc (s CPUSetDynamic) Set(cpu int) {\n\tcpuMaskSet(s, cpu)\n}\n\n// Clear removes cpu from the set s. If cpu is out of bounds for s, no action is taken.\nfunc (s CPUSetDynamic) Clear(cpu int) {\n\tcpuMaskClear(s, cpu)\n}\n\n// IsSet reports whether cpu is in the set s.\nfunc (s CPUSetDynamic) IsSet(cpu int) bool {\n\treturn cpuMaskIsSet(s, cpu)\n}\n\n// Count returns the number of CPUs in the set s.\nfunc (s CPUSetDynamic) Count() int {\n\treturn cpuMaskCount(s)\n}\n\nfunc (s CPUSetDynamic) size() uintptr {\n\treturn uintptr(len(s)) * unsafe.Sizeof(cpuMask(0))\n}\n\nfunc (s CPUSetDynamic) pointer() unsafe.Pointer {\n\tif len(s) == 0 {\n\t\treturn nil\n\t}\n\treturn unsafe.Pointer(&s[0])\n}\n\n// SchedGetaffinityDynamic gets the CPU affinity mask of the thread specified by pid.\n// If pid is 0 the calling thread is used.\n//\n// If the set is smaller than the size of the affinity mask used by the kernel,\n// [EINVAL] is returned.\nfunc SchedGetaffinityDynamic(pid int, set CPUSetDynamic) error {\n\treturn schedAffinity(SYS_SCHED_GETAFFINITY, pid, set.size(), set.pointer())\n}\n\n// SchedSetaffinityDynamic sets the CPU affinity mask of the thread specified by pid.\n// If pid is 0 the calling thread is used.\nfunc SchedSetaffinityDynamic(pid int, set CPUSetDynamic) error {\n\treturn schedAffinity(SYS_SCHED_SETAFFINITY, pid, set.size(), set.pointer())\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/aliases.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport \"syscall\"\n\ntype Signal = syscall.Signal\ntype Errno = syscall.Errno\ntype SysProcAttr = syscall.SysProcAttr\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_aix_ppc64.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go\n//\n\nTEXT ·syscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·syscall6(SB)\n\nTEXT ·rawSyscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_386.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for 386 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_amd64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for AMD64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_arm.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for ARM BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tB\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_arm64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for ARM64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n//\n// System call support for ppc64, BSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for RISCV64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_386.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for 386, Linux\n//\n\n// See ../runtime/sys_linux_386.s for the reason why we always use int 0x80\n// instead of the glibc-specific \"CALL 0x10(GS)\".\n#define INVOKE_SYSCALL\tINT\t$0x80\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tCALL\truntime·entersyscall(SB)\n\tMOVL\ttrap+0(FP), AX  // syscall entry\n\tMOVL\ta1+4(FP), BX\n\tMOVL\ta2+8(FP), CX\n\tMOVL\ta3+12(FP), DX\n\tMOVL\t$0, SI\n\tMOVL\t$0, DI\n\tINVOKE_SYSCALL\n\tMOVL\tAX, r1+16(FP)\n\tMOVL\tDX, r2+20(FP)\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVL\ttrap+0(FP), AX  // syscall entry\n\tMOVL\ta1+4(FP), BX\n\tMOVL\ta2+8(FP), CX\n\tMOVL\ta3+12(FP), DX\n\tMOVL\t$0, SI\n\tMOVL\t$0, DI\n\tINVOKE_SYSCALL\n\tMOVL\tAX, r1+16(FP)\n\tMOVL\tDX, r2+20(FP)\n\tRET\n\nTEXT ·socketcall(SB),NOSPLIT,$0-36\n\tJMP\tsyscall·socketcall(SB)\n\nTEXT ·rawsocketcall(SB),NOSPLIT,$0-36\n\tJMP\tsyscall·rawsocketcall(SB)\n\nTEXT ·seek(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·seek(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_amd64.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for AMD64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tCALL\truntime·entersyscall(SB)\n\tMOVQ\ta1+8(FP), DI\n\tMOVQ\ta2+16(FP), SI\n\tMOVQ\ta3+24(FP), DX\n\tMOVQ\t$0, R10\n\tMOVQ\t$0, R8\n\tMOVQ\t$0, R9\n\tMOVQ\ttrap+0(FP), AX\t// syscall entry\n\tSYSCALL\n\tMOVQ\tAX, r1+32(FP)\n\tMOVQ\tDX, r2+40(FP)\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVQ\ta1+8(FP), DI\n\tMOVQ\ta2+16(FP), SI\n\tMOVQ\ta3+24(FP), DX\n\tMOVQ\t$0, R10\n\tMOVQ\t$0, R8\n\tMOVQ\t$0, R9\n\tMOVQ\ttrap+0(FP), AX\t// syscall entry\n\tSYSCALL\n\tMOVQ\tAX, r1+32(FP)\n\tMOVQ\tDX, r2+40(FP)\n\tRET\n\nTEXT ·gettimeofday(SB),NOSPLIT,$0-16\n\tJMP\tsyscall·gettimeofday(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_arm.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for arm, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tBL\truntime·entersyscall(SB)\n\tMOVW\ttrap+0(FP), R7\n\tMOVW\ta1+4(FP), R0\n\tMOVW\ta2+8(FP), R1\n\tMOVW\ta3+12(FP), R2\n\tMOVW\t$0, R3\n\tMOVW\t$0, R4\n\tMOVW\t$0, R5\n\tSWI\t$0\n\tMOVW\tR0, r1+16(FP)\n\tMOVW\t$0, R0\n\tMOVW\tR0, r2+20(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVW\ttrap+0(FP), R7\t// syscall entry\n\tMOVW\ta1+4(FP), R0\n\tMOVW\ta2+8(FP), R1\n\tMOVW\ta3+12(FP), R2\n\tSWI\t$0\n\tMOVW\tR0, r1+16(FP)\n\tMOVW\t$0, R0\n\tMOVW\tR0, r2+20(FP)\n\tRET\n\nTEXT ·seek(SB),NOSPLIT,$0-28\n\tB\tsyscall·seek(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_arm64.s",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && arm64 && gc\n\n#include \"textflag.h\"\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R0\n\tMOVD\ta2+16(FP), R1\n\tMOVD\ta3+24(FP), R2\n\tMOVD\t$0, R3\n\tMOVD\t$0, R4\n\tMOVD\t$0, R5\n\tMOVD\ttrap+0(FP), R8\t// syscall entry\n\tSVC\n\tMOVD\tR0, r1+32(FP)\t// r1\n\tMOVD\tR1, r2+40(FP)\t// r2\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R0\n\tMOVD\ta2+16(FP), R1\n\tMOVD\ta3+24(FP), R2\n\tMOVD\t$0, R3\n\tMOVD\t$0, R4\n\tMOVD\t$0, R5\n\tMOVD\ttrap+0(FP), R8\t// syscall entry\n\tSVC\n\tMOVD\tR0, r1+32(FP)\n\tMOVD\tR1, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_loong64.s",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && loong64 && gc\n\n#include \"textflag.h\"\n\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tJAL\truntime·entersyscall(SB)\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R11\t// syscall entry\n\tSYSCALL\n\tMOVV\tR4, r1+32(FP)\n\tMOVV\tR0, r2+40(FP)\t// r2 is not used. Always set to 0\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R11\t// syscall entry\n\tSYSCALL\n\tMOVV\tR4, r1+32(FP)\n\tMOVV\tR0, r2+40(FP)\t// r2 is not used. Always set to 0\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_mips64x.s",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips64 || mips64le) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for mips64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tJAL\truntime·entersyscall(SB)\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVV\tR2, r1+32(FP)\n\tMOVV\tR3, r2+40(FP)\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVV\tR2, r1+32(FP)\n\tMOVV\tR3, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_mipsx.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips || mipsle) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for mips, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tJMP syscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tJMP syscall·Syscall6(SB)\n\nTEXT ·Syscall9(SB),NOSPLIT,$0-52\n\tJMP syscall·Syscall9(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tJAL\truntime·entersyscall(SB)\n\tMOVW\ta1+4(FP), R4\n\tMOVW\ta2+8(FP), R5\n\tMOVW\ta3+12(FP), R6\n\tMOVW\tR0, R7\n\tMOVW\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVW\tR2, r1+16(FP)\t// r1\n\tMOVW\tR3, r2+20(FP)\t// r2\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP syscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP syscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVW\ta1+4(FP), R4\n\tMOVW\ta2+8(FP), R5\n\tMOVW\ta3+12(FP), R6\n\tMOVW\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVW\tR2, r1+16(FP)\n\tMOVW\tR3, r2+20(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64 || ppc64le) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for ppc64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R3\n\tMOVD\ta2+16(FP), R4\n\tMOVD\ta3+24(FP), R5\n\tMOVD\tR0, R6\n\tMOVD\tR0, R7\n\tMOVD\tR0, R8\n\tMOVD\ttrap+0(FP), R9\t// syscall entry\n\tSYSCALL R9\n\tMOVD\tR3, r1+32(FP)\n\tMOVD\tR4, r2+40(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R3\n\tMOVD\ta2+16(FP), R4\n\tMOVD\ta3+24(FP), R5\n\tMOVD\tR0, R6\n\tMOVD\tR0, R7\n\tMOVD\tR0, R8\n\tMOVD\ttrap+0(FP), R9\t// syscall entry\n\tSYSCALL R9\n\tMOVD\tR3, r1+32(FP)\n\tMOVD\tR4, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_riscv64.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for linux/riscv64.\n//\n// Where available, just jump to package syscall's implementation of\n// these functions.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tCALL\truntime·entersyscall(SB)\n\tMOV\ta1+8(FP), A0\n\tMOV\ta2+16(FP), A1\n\tMOV\ta3+24(FP), A2\n\tMOV\ttrap+0(FP), A7\t// syscall entry\n\tECALL\n\tMOV\tA0, r1+32(FP)\t// r1\n\tMOV\tA1, r2+40(FP)\t// r2\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOV\ta1+8(FP), A0\n\tMOV\ta2+16(FP), A1\n\tMOV\ta3+24(FP), A2\n\tMOV\ttrap+0(FP), A7\t// syscall entry\n\tECALL\n\tMOV\tA0, r1+32(FP)\n\tMOV\tA1, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_s390x.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && s390x && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for s390x, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tBR\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tBR\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R2\n\tMOVD\ta2+16(FP), R3\n\tMOVD\ta3+24(FP), R4\n\tMOVD\t$0, R5\n\tMOVD\t$0, R6\n\tMOVD\t$0, R7\n\tMOVD\ttrap+0(FP), R1\t// syscall entry\n\tSYSCALL\n\tMOVD\tR2, r1+32(FP)\n\tMOVD\tR3, r2+40(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tBR\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tBR\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R2\n\tMOVD\ta2+16(FP), R3\n\tMOVD\ta3+24(FP), R4\n\tMOVD\t$0, R5\n\tMOVD\t$0, R6\n\tMOVD\t$0, R7\n\tMOVD\ttrap+0(FP), R1\t// syscall entry\n\tSYSCALL\n\tMOVD\tR2, r1+32(FP)\n\tMOVD\tR3, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System call support for mips64, OpenBSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_solaris_amd64.s",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go\n//\n\nTEXT ·sysvicall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·sysvicall6(SB)\n\nTEXT ·rawSysvicall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSysvicall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_zos_s390x.s",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x && gc\n\n#include \"textflag.h\"\n\n#define PSALAA            1208(R0)\n#define GTAB64(x)           80(x)\n#define LCA64(x)            88(x)\n#define SAVSTACK_ASYNC(x)  336(x) // in the LCA\n#define CAA(x)               8(x)\n#define CEECAATHDID(x)     976(x) // in the CAA\n#define EDCHPXV(x)        1016(x) // in the CAA\n#define GOCB(x)           1104(x) // in the CAA\n\n// SS_*, where x=SAVSTACK_ASYNC\n#define SS_LE(x)             0(x)\n#define SS_GO(x)             8(x)\n#define SS_ERRNO(x)         16(x)\n#define SS_ERRNOJR(x)       20(x)\n\n// Function Descriptor Offsets\n#define __errno  0x156*16\n#define __err2ad 0x16C*16\n\n// Call Instructions\n#define LE_CALL    BYTE $0x0D; BYTE $0x76 // BL R7, R6\n#define SVC_LOAD   BYTE $0x0A; BYTE $0x08 // SVC 08 LOAD\n#define SVC_DELETE BYTE $0x0A; BYTE $0x09 // SVC 09 DELETE\n\nDATA zosLibVec<>(SB)/8, $0\nGLOBL zosLibVec<>(SB), NOPTR, $8\n\nTEXT ·initZosLibVec(SB), NOSPLIT|NOFRAME, $0-0\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD CAA(R8), R8\n\tMOVD EDCHPXV(R8), R8\n\tMOVD R8, zosLibVec<>(SB)\n\tRET\n\nTEXT ·GetZosLibVec(SB), NOSPLIT|NOFRAME, $0-0\n\tMOVD zosLibVec<>(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·clearErrno(SB), NOSPLIT, $0-0\n\tBL   addrerrno<>(SB)\n\tMOVD $0, 0(R3)\n\tRET\n\n// Returns the address of errno in R3.\nTEXT addrerrno<>(SB), NOSPLIT|NOFRAME, $0-0\n\t// Get library control area (LCA).\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\n\t// Get __errno FuncDesc.\n\tMOVD CAA(R8), R9\n\tMOVD EDCHPXV(R9), R9\n\tADD  $(__errno), R9\n\tLMG  0(R9), R5, R6\n\n\t// Switch to saved LE stack.\n\tMOVD SAVSTACK_ASYNC(R8), R9\n\tMOVD 0(R9), R4\n\tMOVD $0, 0(R9)\n\n\t// Call __errno function.\n\tLE_CALL\n\tNOPH\n\n\t// Switch back to Go stack.\n\tXOR  R0, R0    // Restore R0 to $0.\n\tMOVD R4, 0(R9) // Save stack pointer.\n\tRET\n\n// func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64)\nTEXT ·svcCall(SB), NOSPLIT, $0\n\tBL   runtime·save_g(SB)     // Save g and stack pointer\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD SAVSTACK_ASYNC(R8), R9\n\tMOVD R15, 0(R9)\n\n\tMOVD argv+8(FP), R1   // Move function arguments into registers\n\tMOVD dsa+16(FP), g\n\tMOVD fnptr+0(FP), R15\n\n\tBYTE $0x0D // Branch to function\n\tBYTE $0xEF\n\n\tBL   runtime·load_g(SB)     // Restore g and stack pointer\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD SAVSTACK_ASYNC(R8), R9\n\tMOVD 0(R9), R15\n\n\tRET\n\n// func svcLoad(name *byte) unsafe.Pointer\nTEXT ·svcLoad(SB), NOSPLIT, $0\n\tMOVD R15, R2         // Save go stack pointer\n\tMOVD name+0(FP), R0  // Move SVC args into registers\n\tMOVD $0x80000000, R1\n\tMOVD $0, R15\n\tSVC_LOAD\n\tMOVW R15, R3         // Save return code from SVC\n\tMOVD R2, R15         // Restore go stack pointer\n\tCMP  R3, $0          // Check SVC return code\n\tBNE  error\n\n\tMOVD $-2, R3       // Reset last bit of entry point to zero\n\tAND  R0, R3\n\tMOVD R3, ret+8(FP) // Return entry point returned by SVC\n\tCMP  R0, R3        // Check if last bit of entry point was set\n\tBNE  done\n\n\tMOVD R15, R2 // Save go stack pointer\n\tMOVD $0, R15 // Move SVC args into registers (entry point still in r0 from SVC 08)\n\tSVC_DELETE\n\tMOVD R2, R15 // Restore go stack pointer\n\nerror:\n\tMOVD $0, ret+8(FP) // Return 0 on failure\n\ndone:\n\tXOR R0, R0 // Reset r0 to 0\n\tRET\n\n// func svcUnload(name *byte, fnptr unsafe.Pointer) int64\nTEXT ·svcUnload(SB), NOSPLIT, $0\n\tMOVD R15, R2          // Save go stack pointer\n\tMOVD name+0(FP), R0   // Move SVC args into registers\n\tMOVD fnptr+8(FP), R15\n\tSVC_DELETE\n\tXOR  R0, R0           // Reset r0 to 0\n\tMOVD R15, R1          // Save SVC return code\n\tMOVD R2, R15          // Restore go stack pointer\n\tMOVD R1, ret+16(FP)   // Return SVC return code\n\tRET\n\n// func gettid() uint64\nTEXT ·gettid(SB), NOSPLIT, $0\n\t// Get library control area (LCA).\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\n\t// Get CEECAATHDID\n\tMOVD CAA(R8), R9\n\tMOVD CEECAATHDID(R9), R9\n\tMOVD R9, ret+0(FP)\n\n\tRET\n\n//\n// Call LE function, if the return is -1\n// errno and errno2 is retrieved\n//\nTEXT ·CallLeFuncWithErr(SB), NOSPLIT, $0\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD CAA(R8), R9\n\tMOVD g, GOCB(R9)\n\n\t// Restore LE stack.\n\tMOVD SAVSTACK_ASYNC(R8), R9 // R9-> LE stack frame saving address\n\tMOVD 0(R9), R4              // R4-> restore previously saved stack frame pointer\n\n\tMOVD parms_base+8(FP), R7 // R7 -> argument array\n\tMOVD parms_len+16(FP), R8 // R8 number of arguments\n\n\t//  arg 1 ---> R1\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tMOVD 0(R7), R1\n\n\t//  arg 2 ---> R2\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tADD  $8, R7\n\tMOVD 0(R7), R2\n\n\t//  arg 3 --> R3\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tADD  $8, R7\n\tMOVD 0(R7), R3\n\n\tCMP  R8, $0\n\tBEQ  docall\n\tMOVD $2176+16, R6 // starting LE stack address-8 to store 4th argument\n\nrepeat:\n\tADD  $8, R7\n\tMOVD 0(R7), R0      // advance arg pointer by 8 byte\n\tADD  $8, R6         // advance LE argument address by 8 byte\n\tMOVD R0, (R4)(R6*1) // copy argument from go-slice to le-frame\n\tSUB  $1, R8\n\tCMP  R8, $0\n\tBNE  repeat\n\ndocall:\n\tMOVD funcdesc+0(FP), R8 // R8-> function descriptor\n\tLMG  0(R8), R5, R6\n\tMOVD $0, 0(R9)          // R9 address of SAVSTACK_ASYNC\n\tLE_CALL                 // balr R7, R6 (return #1)\n\tNOPH\n\tMOVD R3, ret+32(FP)\n\tCMP  R3, $-1            // compare result to -1\n\tBNE  done\n\n\t// retrieve errno and errno2\n\tMOVD  zosLibVec<>(SB), R8\n\tADD   $(__errno), R8\n\tLMG   0(R8), R5, R6\n\tLE_CALL                   // balr R7, R6 __errno (return #3)\n\tNOPH\n\tMOVWZ 0(R3), R3\n\tMOVD  R3, err+48(FP)\n\tMOVD  zosLibVec<>(SB), R8\n\tADD   $(__err2ad), R8\n\tLMG   0(R8), R5, R6\n\tLE_CALL                   // balr R7, R6 __err2ad (return #2)\n\tNOPH\n\tMOVW  (R3), R2            // retrieve errno2\n\tMOVD  R2, errno2+40(FP)   // store in return area\n\ndone:\n\tMOVD R4, 0(R9)            // Save stack pointer.\n\tRET\n\n//\n// Call LE function, if the return is 0\n// errno and errno2 is retrieved\n//\nTEXT ·CallLeFuncWithPtrReturn(SB), NOSPLIT, $0\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD CAA(R8), R9\n\tMOVD g, GOCB(R9)\n\n\t// Restore LE stack.\n\tMOVD SAVSTACK_ASYNC(R8), R9 // R9-> LE stack frame saving address\n\tMOVD 0(R9), R4              // R4-> restore previously saved stack frame pointer\n\n\tMOVD parms_base+8(FP), R7 // R7 -> argument array\n\tMOVD parms_len+16(FP), R8 // R8 number of arguments\n\n\t//  arg 1 ---> R1\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tMOVD 0(R7), R1\n\n\t//  arg 2 ---> R2\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tADD  $8, R7\n\tMOVD 0(R7), R2\n\n\t//  arg 3 --> R3\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tADD  $8, R7\n\tMOVD 0(R7), R3\n\n\tCMP  R8, $0\n\tBEQ  docall\n\tMOVD $2176+16, R6 // starting LE stack address-8 to store 4th argument\n\nrepeat:\n\tADD  $8, R7\n\tMOVD 0(R7), R0      // advance arg pointer by 8 byte\n\tADD  $8, R6         // advance LE argument address by 8 byte\n\tMOVD R0, (R4)(R6*1) // copy argument from go-slice to le-frame\n\tSUB  $1, R8\n\tCMP  R8, $0\n\tBNE  repeat\n\ndocall:\n\tMOVD funcdesc+0(FP), R8 // R8-> function descriptor\n\tLMG  0(R8), R5, R6\n\tMOVD $0, 0(R9)          // R9 address of SAVSTACK_ASYNC\n\tLE_CALL                 // balr R7, R6 (return #1)\n\tNOPH\n\tMOVD R3, ret+32(FP)\n\tCMP  R3, $0             // compare result to 0\n\tBNE  done\n\n\t// retrieve errno and errno2\n\tMOVD  zosLibVec<>(SB), R8\n\tADD   $(__errno), R8\n\tLMG   0(R8), R5, R6\n\tLE_CALL                   // balr R7, R6 __errno (return #3)\n\tNOPH\n\tMOVWZ 0(R3), R3\n\tMOVD  R3, err+48(FP)\n\tMOVD  zosLibVec<>(SB), R8\n\tADD   $(__err2ad), R8\n\tLMG   0(R8), R5, R6\n\tLE_CALL                   // balr R7, R6 __err2ad (return #2)\n\tNOPH\n\tMOVW  (R3), R2            // retrieve errno2\n\tMOVD  R2, errno2+40(FP)   // store in return area\n\tXOR   R2, R2\n\tMOVWZ R2, (R3)            // clear errno2\n\ndone:\n\tMOVD R4, 0(R9)            // Save stack pointer.\n\tRET\n\n//\n// function to test if a pointer can be safely dereferenced (content read)\n// return 0 for succces\n//\nTEXT ·ptrtest(SB), NOSPLIT, $0-16\n\tMOVD arg+0(FP), R10 // test pointer in R10\n\n\t// set up R2 to point to CEECAADMC\n\tBYTE $0xE3; BYTE $0x20; BYTE $0x04; BYTE $0xB8; BYTE $0x00; BYTE $0x17 // llgt  2,1208\n\tBYTE $0xB9; BYTE $0x17; BYTE $0x00; BYTE $0x22                         // llgtr 2,2\n\tBYTE $0xA5; BYTE $0x26; BYTE $0x7F; BYTE $0xFF                         // nilh  2,32767\n\tBYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x58; BYTE $0x00; BYTE $0x04 // lg    2,88(2)\n\tBYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x08; BYTE $0x00; BYTE $0x04 // lg    2,8(2)\n\tBYTE $0x41; BYTE $0x22; BYTE $0x03; BYTE $0x68                         // la    2,872(2)\n\n\t// set up R5 to point to the \"shunt\" path which set 1 to R3 (failure)\n\tBYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x33 // xgr   3,3\n\tBYTE $0xA7; BYTE $0x55; BYTE $0x00; BYTE $0x04 // bras  5,lbl1\n\tBYTE $0xA7; BYTE $0x39; BYTE $0x00; BYTE $0x01 // lghi  3,1\n\n\t// if r3 is not zero (failed) then branch to finish\n\tBYTE $0xB9; BYTE $0x02; BYTE $0x00; BYTE $0x33 // lbl1     ltgr  3,3\n\tBYTE $0xA7; BYTE $0x74; BYTE $0x00; BYTE $0x08 // brc   b'0111',lbl2\n\n\t// stomic store shunt address in R5 into CEECAADMC\n\tBYTE $0xE3; BYTE $0x52; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg   5,0(2)\n\n\t// now try reading from the test pointer in R10, if it fails it branches to the \"lghi\" instruction above\n\tBYTE $0xE3; BYTE $0x9A; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x04 // lg    9,0(10)\n\n\t// finish here, restore 0 into CEECAADMC\n\tBYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x99                         // lbl2     xgr   9,9\n\tBYTE $0xE3; BYTE $0x92; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg   9,0(2)\n\tMOVD R3, ret+8(FP)                                                     // result in R3\n\tRET\n\n//\n// function to test if a untptr can be loaded from a pointer\n// return 1: the 8-byte content\n//        2: 0 for success, 1 for failure\n//\n// func safeload(ptr uintptr) ( value uintptr, error uintptr)\nTEXT ·safeload(SB), NOSPLIT, $0-24\n\tMOVD ptr+0(FP), R10                                                    // test pointer in R10\n\tMOVD $0x0, R6\n\tBYTE $0xE3; BYTE $0x20; BYTE $0x04; BYTE $0xB8; BYTE $0x00; BYTE $0x17 // llgt  2,1208\n\tBYTE $0xB9; BYTE $0x17; BYTE $0x00; BYTE $0x22                         // llgtr 2,2\n\tBYTE $0xA5; BYTE $0x26; BYTE $0x7F; BYTE $0xFF                         // nilh  2,32767\n\tBYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x58; BYTE $0x00; BYTE $0x04 // lg    2,88(2)\n\tBYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x08; BYTE $0x00; BYTE $0x04 // lg    2,8(2)\n\tBYTE $0x41; BYTE $0x22; BYTE $0x03; BYTE $0x68                         // la    2,872(2)\n\tBYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x33                         // xgr   3,3\n\tBYTE $0xA7; BYTE $0x55; BYTE $0x00; BYTE $0x04                         // bras  5,lbl1\n\tBYTE $0xA7; BYTE $0x39; BYTE $0x00; BYTE $0x01                         // lghi  3,1\n\tBYTE $0xB9; BYTE $0x02; BYTE $0x00; BYTE $0x33                         // lbl1     ltgr  3,3\n\tBYTE $0xA7; BYTE $0x74; BYTE $0x00; BYTE $0x08                         // brc   b'0111',lbl2\n\tBYTE $0xE3; BYTE $0x52; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 5,0(2)\n\tBYTE $0xE3; BYTE $0x6A; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x04 // lg    6,0(10)\n\tBYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x99                         // lbl2     xgr   9,9\n\tBYTE $0xE3; BYTE $0x92; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg   9,0(2)\n\tMOVD R6, value+8(FP)                                                   // result in R6\n\tMOVD R3, error+16(FP)                                                  // error in R3\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/auxv.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos)\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:linkname runtime_getAuxv runtime.getAuxv\nfunc runtime_getAuxv() []uintptr\n\n// Auxv returns the ELF auxiliary vector as a sequence of key/value pairs.\n// The returned slice is always a fresh copy, owned by the caller.\n// It returns an error on non-ELF platforms, or if the auxiliary vector cannot be accessed,\n// which happens in some locked-down environments and build modes.\nfunc Auxv() ([][2]uintptr, error) {\n\tvec := runtime_getAuxv()\n\tvecLen := len(vec)\n\n\tif vecLen == 0 {\n\t\treturn nil, syscall.ENOENT\n\t}\n\n\tif vecLen%2 != 0 {\n\t\treturn nil, syscall.EINVAL\n\t}\n\n\tresult := make([]uintptr, vecLen)\n\tcopy(result, vec)\n\treturn unsafe.Slice((*[2]uintptr)(unsafe.Pointer(&result[0])), vecLen/2), nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/auxv_unsupported.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos)\n\npackage unix\n\nimport \"syscall\"\n\nfunc Auxv() ([][2]uintptr, error) {\n\treturn nil, syscall.ENOTSUP\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/bluetooth_linux.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Bluetooth sockets and messages\n\npackage unix\n\n// Bluetooth Protocols\nconst (\n\tBTPROTO_L2CAP  = 0\n\tBTPROTO_HCI    = 1\n\tBTPROTO_SCO    = 2\n\tBTPROTO_RFCOMM = 3\n\tBTPROTO_BNEP   = 4\n\tBTPROTO_CMTP   = 5\n\tBTPROTO_HIDP   = 6\n\tBTPROTO_AVDTP  = 7\n)\n\nconst (\n\tHCI_CHANNEL_RAW     = 0\n\tHCI_CHANNEL_USER    = 1\n\tHCI_CHANNEL_MONITOR = 2\n\tHCI_CHANNEL_CONTROL = 3\n\tHCI_CHANNEL_LOGGING = 4\n)\n\n// Socketoption Level\nconst (\n\tSOL_BLUETOOTH = 0x112\n\tSOL_HCI       = 0x0\n\tSOL_L2CAP     = 0x6\n\tSOL_RFCOMM    = 0x12\n\tSOL_SCO       = 0x11\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/bpxsvc_zos.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos\n\npackage unix\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"unsafe\"\n)\n\n//go:noescape\nfunc bpxcall(plist []unsafe.Pointer, bpx_offset int64)\n\n//go:noescape\nfunc A2e([]byte)\n\n//go:noescape\nfunc E2a([]byte)\n\nconst (\n\tBPX4STA = 192  // stat\n\tBPX4FST = 104  // fstat\n\tBPX4LST = 132  // lstat\n\tBPX4OPN = 156  // open\n\tBPX4CLO = 72   // close\n\tBPX4CHR = 500  // chattr\n\tBPX4FCR = 504  // fchattr\n\tBPX4LCR = 1180 // lchattr\n\tBPX4CTW = 492  // cond_timed_wait\n\tBPX4GTH = 1056 // __getthent\n\tBPX4PTQ = 412  // pthread_quiesc\n\tBPX4PTR = 320  // ptrace\n)\n\nconst (\n\t//options\n\t//byte1\n\tBPX_OPNFHIGH = 0x80\n\t//byte2\n\tBPX_OPNFEXEC = 0x80\n\t//byte3\n\tBPX_O_NOLARGEFILE = 0x08\n\tBPX_O_LARGEFILE   = 0x04\n\tBPX_O_ASYNCSIG    = 0x02\n\tBPX_O_SYNC        = 0x01\n\t//byte4\n\tBPX_O_CREXCL   = 0xc0\n\tBPX_O_CREAT    = 0x80\n\tBPX_O_EXCL     = 0x40\n\tBPX_O_NOCTTY   = 0x20\n\tBPX_O_TRUNC    = 0x10\n\tBPX_O_APPEND   = 0x08\n\tBPX_O_NONBLOCK = 0x04\n\tBPX_FNDELAY    = 0x04\n\tBPX_O_RDWR     = 0x03\n\tBPX_O_RDONLY   = 0x02\n\tBPX_O_WRONLY   = 0x01\n\tBPX_O_ACCMODE  = 0x03\n\tBPX_O_GETFL    = 0x0f\n\n\t//mode\n\t// byte1 (file type)\n\tBPX_FT_DIR      = 1\n\tBPX_FT_CHARSPEC = 2\n\tBPX_FT_REGFILE  = 3\n\tBPX_FT_FIFO     = 4\n\tBPX_FT_SYMLINK  = 5\n\tBPX_FT_SOCKET   = 6\n\t//byte3\n\tBPX_S_ISUID  = 0x08\n\tBPX_S_ISGID  = 0x04\n\tBPX_S_ISVTX  = 0x02\n\tBPX_S_IRWXU1 = 0x01\n\tBPX_S_IRUSR  = 0x01\n\t//byte4\n\tBPX_S_IRWXU2 = 0xc0\n\tBPX_S_IWUSR  = 0x80\n\tBPX_S_IXUSR  = 0x40\n\tBPX_S_IRWXG  = 0x38\n\tBPX_S_IRGRP  = 0x20\n\tBPX_S_IWGRP  = 0x10\n\tBPX_S_IXGRP  = 0x08\n\tBPX_S_IRWXOX = 0x07\n\tBPX_S_IROTH  = 0x04\n\tBPX_S_IWOTH  = 0x02\n\tBPX_S_IXOTH  = 0x01\n\n\tCW_INTRPT  = 1\n\tCW_CONDVAR = 32\n\tCW_TIMEOUT = 64\n\n\tPGTHA_NEXT        = 2\n\tPGTHA_CURRENT     = 1\n\tPGTHA_FIRST       = 0\n\tPGTHA_LAST        = 3\n\tPGTHA_PROCESS     = 0x80\n\tPGTHA_CONTTY      = 0x40\n\tPGTHA_PATH        = 0x20\n\tPGTHA_COMMAND     = 0x10\n\tPGTHA_FILEDATA    = 0x08\n\tPGTHA_THREAD      = 0x04\n\tPGTHA_PTAG        = 0x02\n\tPGTHA_COMMANDLONG = 0x01\n\tPGTHA_THREADFAST  = 0x80\n\tPGTHA_FILEPATH    = 0x40\n\tPGTHA_THDSIGMASK  = 0x20\n\t// thread quiece mode\n\tQUIESCE_TERM       int32 = 1\n\tQUIESCE_FORCE      int32 = 2\n\tQUIESCE_QUERY      int32 = 3\n\tQUIESCE_FREEZE     int32 = 4\n\tQUIESCE_UNFREEZE   int32 = 5\n\tFREEZE_THIS_THREAD int32 = 6\n\tFREEZE_EXIT        int32 = 8\n\tQUIESCE_SRB        int32 = 9\n)\n\ntype Pgtha struct {\n\tPid        uint32 // 0\n\tTid0       uint32 // 4\n\tTid1       uint32\n\tAccesspid  byte    // C\n\tAccesstid  byte    // D\n\tAccessasid uint16  // E\n\tLoginname  [8]byte // 10\n\tFlag1      byte    // 18\n\tFlag1b2    byte    // 19\n}\n\ntype Bpxystat_t struct { // DSECT BPXYSTAT\n\tSt_id           [4]uint8  // 0\n\tSt_length       uint16    // 0x4\n\tSt_version      uint16    // 0x6\n\tSt_mode         uint32    // 0x8\n\tSt_ino          uint32    // 0xc\n\tSt_dev          uint32    // 0x10\n\tSt_nlink        uint32    // 0x14\n\tSt_uid          uint32    // 0x18\n\tSt_gid          uint32    // 0x1c\n\tSt_size         uint64    // 0x20\n\tSt_atime        uint32    // 0x28\n\tSt_mtime        uint32    // 0x2c\n\tSt_ctime        uint32    // 0x30\n\tSt_rdev         uint32    // 0x34\n\tSt_auditoraudit uint32    // 0x38\n\tSt_useraudit    uint32    // 0x3c\n\tSt_blksize      uint32    // 0x40\n\tSt_createtime   uint32    // 0x44\n\tSt_auditid      [4]uint32 // 0x48\n\tSt_res01        uint32    // 0x58\n\tFt_ccsid        uint16    // 0x5c\n\tFt_flags        uint16    // 0x5e\n\tSt_res01a       [2]uint32 // 0x60\n\tSt_res02        uint32    // 0x68\n\tSt_blocks       uint32    // 0x6c\n\tSt_opaque       [3]uint8  // 0x70\n\tSt_visible      uint8     // 0x73\n\tSt_reftime      uint32    // 0x74\n\tSt_fid          uint64    // 0x78\n\tSt_filefmt      uint8     // 0x80\n\tSt_fspflag2     uint8     // 0x81\n\tSt_res03        [2]uint8  // 0x82\n\tSt_ctimemsec    uint32    // 0x84\n\tSt_seclabel     [8]uint8  // 0x88\n\tSt_res04        [4]uint8  // 0x90\n\t// end of version 1\n\t_               uint32    // 0x94\n\tSt_atime64      uint64    // 0x98\n\tSt_mtime64      uint64    // 0xa0\n\tSt_ctime64      uint64    // 0xa8\n\tSt_createtime64 uint64    // 0xb0\n\tSt_reftime64    uint64    // 0xb8\n\t_               uint64    // 0xc0\n\tSt_res05        [16]uint8 // 0xc8\n\t// end of version 2\n}\n\ntype BpxFilestatus struct {\n\tOflag1 byte\n\tOflag2 byte\n\tOflag3 byte\n\tOflag4 byte\n}\n\ntype BpxMode struct {\n\tFtype byte\n\tMode1 byte\n\tMode2 byte\n\tMode3 byte\n}\n\n// Thr attribute structure for extended attributes\ntype Bpxyatt_t struct { // DSECT BPXYATT\n\tAtt_id           [4]uint8\n\tAtt_version      uint16\n\tAtt_res01        [2]uint8\n\tAtt_setflags1    uint8\n\tAtt_setflags2    uint8\n\tAtt_setflags3    uint8\n\tAtt_setflags4    uint8\n\tAtt_mode         uint32\n\tAtt_uid          uint32\n\tAtt_gid          uint32\n\tAtt_opaquemask   [3]uint8\n\tAtt_visblmaskres uint8\n\tAtt_opaque       [3]uint8\n\tAtt_visibleres   uint8\n\tAtt_size_h       uint32\n\tAtt_size_l       uint32\n\tAtt_atime        uint32\n\tAtt_mtime        uint32\n\tAtt_auditoraudit uint32\n\tAtt_useraudit    uint32\n\tAtt_ctime        uint32\n\tAtt_reftime      uint32\n\t// end of version 1\n\tAtt_filefmt uint8\n\tAtt_res02   [3]uint8\n\tAtt_filetag uint32\n\tAtt_res03   [8]uint8\n\t// end of version 2\n\tAtt_atime64   uint64\n\tAtt_mtime64   uint64\n\tAtt_ctime64   uint64\n\tAtt_reftime64 uint64\n\tAtt_seclabel  [8]uint8\n\tAtt_ver3res02 [8]uint8\n\t// end of version 3\n}\n\nfunc BpxOpen(name string, options *BpxFilestatus, mode *BpxMode) (rv int32, rc int32, rn int32) {\n\tif len(name) < 1024 {\n\t\tvar namebuf [1024]byte\n\t\tsz := int32(copy(namebuf[:], name))\n\t\tA2e(namebuf[:sz])\n\t\tvar parms [7]unsafe.Pointer\n\t\tparms[0] = unsafe.Pointer(&sz)\n\t\tparms[1] = unsafe.Pointer(&namebuf[0])\n\t\tparms[2] = unsafe.Pointer(options)\n\t\tparms[3] = unsafe.Pointer(mode)\n\t\tparms[4] = unsafe.Pointer(&rv)\n\t\tparms[5] = unsafe.Pointer(&rc)\n\t\tparms[6] = unsafe.Pointer(&rn)\n\t\tbpxcall(parms[:], BPX4OPN)\n\t\treturn rv, rc, rn\n\t}\n\treturn -1, -1, -1\n}\n\nfunc BpxClose(fd int32) (rv int32, rc int32, rn int32) {\n\tvar parms [4]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&fd)\n\tparms[1] = unsafe.Pointer(&rv)\n\tparms[2] = unsafe.Pointer(&rc)\n\tparms[3] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4CLO)\n\treturn rv, rc, rn\n}\n\nfunc BpxFileFStat(fd int32, st *Bpxystat_t) (rv int32, rc int32, rn int32) {\n\tst.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3}\n\tst.St_version = 2\n\tstat_sz := uint32(unsafe.Sizeof(*st))\n\tvar parms [6]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&fd)\n\tparms[1] = unsafe.Pointer(&stat_sz)\n\tparms[2] = unsafe.Pointer(st)\n\tparms[3] = unsafe.Pointer(&rv)\n\tparms[4] = unsafe.Pointer(&rc)\n\tparms[5] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4FST)\n\treturn rv, rc, rn\n}\n\nfunc BpxFileStat(name string, st *Bpxystat_t) (rv int32, rc int32, rn int32) {\n\tif len(name) < 1024 {\n\t\tvar namebuf [1024]byte\n\t\tsz := int32(copy(namebuf[:], name))\n\t\tA2e(namebuf[:sz])\n\t\tst.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3}\n\t\tst.St_version = 2\n\t\tstat_sz := uint32(unsafe.Sizeof(*st))\n\t\tvar parms [7]unsafe.Pointer\n\t\tparms[0] = unsafe.Pointer(&sz)\n\t\tparms[1] = unsafe.Pointer(&namebuf[0])\n\t\tparms[2] = unsafe.Pointer(&stat_sz)\n\t\tparms[3] = unsafe.Pointer(st)\n\t\tparms[4] = unsafe.Pointer(&rv)\n\t\tparms[5] = unsafe.Pointer(&rc)\n\t\tparms[6] = unsafe.Pointer(&rn)\n\t\tbpxcall(parms[:], BPX4STA)\n\t\treturn rv, rc, rn\n\t}\n\treturn -1, -1, -1\n}\n\nfunc BpxFileLStat(name string, st *Bpxystat_t) (rv int32, rc int32, rn int32) {\n\tif len(name) < 1024 {\n\t\tvar namebuf [1024]byte\n\t\tsz := int32(copy(namebuf[:], name))\n\t\tA2e(namebuf[:sz])\n\t\tst.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3}\n\t\tst.St_version = 2\n\t\tstat_sz := uint32(unsafe.Sizeof(*st))\n\t\tvar parms [7]unsafe.Pointer\n\t\tparms[0] = unsafe.Pointer(&sz)\n\t\tparms[1] = unsafe.Pointer(&namebuf[0])\n\t\tparms[2] = unsafe.Pointer(&stat_sz)\n\t\tparms[3] = unsafe.Pointer(st)\n\t\tparms[4] = unsafe.Pointer(&rv)\n\t\tparms[5] = unsafe.Pointer(&rc)\n\t\tparms[6] = unsafe.Pointer(&rn)\n\t\tbpxcall(parms[:], BPX4LST)\n\t\treturn rv, rc, rn\n\t}\n\treturn -1, -1, -1\n}\n\nfunc BpxChattr(path string, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) {\n\tif len(path) >= 1024 {\n\t\treturn -1, -1, -1\n\t}\n\tvar namebuf [1024]byte\n\tsz := int32(copy(namebuf[:], path))\n\tA2e(namebuf[:sz])\n\tattr_sz := uint32(unsafe.Sizeof(*attr))\n\tvar parms [7]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&sz)\n\tparms[1] = unsafe.Pointer(&namebuf[0])\n\tparms[2] = unsafe.Pointer(&attr_sz)\n\tparms[3] = unsafe.Pointer(attr)\n\tparms[4] = unsafe.Pointer(&rv)\n\tparms[5] = unsafe.Pointer(&rc)\n\tparms[6] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4CHR)\n\treturn rv, rc, rn\n}\n\nfunc BpxLchattr(path string, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) {\n\tif len(path) >= 1024 {\n\t\treturn -1, -1, -1\n\t}\n\tvar namebuf [1024]byte\n\tsz := int32(copy(namebuf[:], path))\n\tA2e(namebuf[:sz])\n\tattr_sz := uint32(unsafe.Sizeof(*attr))\n\tvar parms [7]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&sz)\n\tparms[1] = unsafe.Pointer(&namebuf[0])\n\tparms[2] = unsafe.Pointer(&attr_sz)\n\tparms[3] = unsafe.Pointer(attr)\n\tparms[4] = unsafe.Pointer(&rv)\n\tparms[5] = unsafe.Pointer(&rc)\n\tparms[6] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4LCR)\n\treturn rv, rc, rn\n}\n\nfunc BpxFchattr(fd int32, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) {\n\tattr_sz := uint32(unsafe.Sizeof(*attr))\n\tvar parms [6]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&fd)\n\tparms[1] = unsafe.Pointer(&attr_sz)\n\tparms[2] = unsafe.Pointer(attr)\n\tparms[3] = unsafe.Pointer(&rv)\n\tparms[4] = unsafe.Pointer(&rc)\n\tparms[5] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4FCR)\n\treturn rv, rc, rn\n}\n\nfunc BpxCondTimedWait(sec uint32, nsec uint32, events uint32, secrem *uint32, nsecrem *uint32) (rv int32, rc int32, rn int32) {\n\tvar parms [8]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&sec)\n\tparms[1] = unsafe.Pointer(&nsec)\n\tparms[2] = unsafe.Pointer(&events)\n\tparms[3] = unsafe.Pointer(secrem)\n\tparms[4] = unsafe.Pointer(nsecrem)\n\tparms[5] = unsafe.Pointer(&rv)\n\tparms[6] = unsafe.Pointer(&rc)\n\tparms[7] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4CTW)\n\treturn rv, rc, rn\n}\nfunc BpxGetthent(in *Pgtha, outlen *uint32, out unsafe.Pointer) (rv int32, rc int32, rn int32) {\n\tvar parms [7]unsafe.Pointer\n\tinlen := uint32(26) // nothing else will work. Go says Pgtha is 28-byte because of alignment, but Pgtha is \"packed\" and must be 26-byte\n\tparms[0] = unsafe.Pointer(&inlen)\n\tparms[1] = unsafe.Pointer(&in)\n\tparms[2] = unsafe.Pointer(outlen)\n\tparms[3] = unsafe.Pointer(&out)\n\tparms[4] = unsafe.Pointer(&rv)\n\tparms[5] = unsafe.Pointer(&rc)\n\tparms[6] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4GTH)\n\treturn rv, rc, rn\n}\nfunc ZosJobname() (jobname string, err error) {\n\tvar pgtha Pgtha\n\tpgtha.Pid = uint32(Getpid())\n\tpgtha.Accesspid = PGTHA_CURRENT\n\tpgtha.Flag1 = PGTHA_PROCESS\n\tvar out [256]byte\n\tvar outlen uint32\n\toutlen = 256\n\trv, rc, rn := BpxGetthent(&pgtha, &outlen, unsafe.Pointer(&out[0]))\n\tif rv == 0 {\n\t\tgthc := []byte{0x87, 0xa3, 0x88, 0x83} // 'gthc' in ebcdic\n\t\tix := bytes.Index(out[:], gthc)\n\t\tif ix == -1 {\n\t\t\terr = fmt.Errorf(\"BPX4GTH: gthc return data not found\")\n\t\t\treturn\n\t\t}\n\t\tjn := out[ix+80 : ix+88] // we didn't declare Pgthc, but jobname is 8-byte at offset 80\n\t\tE2a(jn)\n\t\tjobname = string(bytes.TrimRight(jn, \" \"))\n\n\t} else {\n\t\terr = fmt.Errorf(\"BPX4GTH: rc=%d errno=%d reason=code=0x%x\", rv, rc, rn)\n\t}\n\treturn\n}\nfunc Bpx4ptq(code int32, data string) (rv int32, rc int32, rn int32) {\n\tvar userdata [8]byte\n\tvar parms [5]unsafe.Pointer\n\tcopy(userdata[:], data+\"        \")\n\tA2e(userdata[:])\n\tparms[0] = unsafe.Pointer(&code)\n\tparms[1] = unsafe.Pointer(&userdata[0])\n\tparms[2] = unsafe.Pointer(&rv)\n\tparms[3] = unsafe.Pointer(&rc)\n\tparms[4] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4PTQ)\n\treturn rv, rc, rn\n}\n\nconst (\n\tPT_TRACE_ME             = 0  // Debug this process\n\tPT_READ_I               = 1  // Read a full word\n\tPT_READ_D               = 2  // Read a full word\n\tPT_READ_U               = 3  // Read control info\n\tPT_WRITE_I              = 4  //Write a full word\n\tPT_WRITE_D              = 5  //Write a full word\n\tPT_CONTINUE             = 7  //Continue the process\n\tPT_KILL                 = 8  //Terminate the process\n\tPT_READ_GPR             = 11 // Read GPR, CR, PSW\n\tPT_READ_FPR             = 12 // Read FPR\n\tPT_READ_VR              = 13 // Read VR\n\tPT_WRITE_GPR            = 14 // Write GPR, CR, PSW\n\tPT_WRITE_FPR            = 15 // Write FPR\n\tPT_WRITE_VR             = 16 // Write VR\n\tPT_READ_BLOCK           = 17 // Read storage\n\tPT_WRITE_BLOCK          = 19 // Write storage\n\tPT_READ_GPRH            = 20 // Read GPRH\n\tPT_WRITE_GPRH           = 21 // Write GPRH\n\tPT_REGHSET              = 22 // Read all GPRHs\n\tPT_ATTACH               = 30 // Attach to a process\n\tPT_DETACH               = 31 // Detach from a process\n\tPT_REGSET               = 32 // Read all GPRs\n\tPT_REATTACH             = 33 // Reattach to a process\n\tPT_LDINFO               = 34 // Read loader info\n\tPT_MULTI                = 35 // Multi process mode\n\tPT_LD64INFO             = 36 // RMODE64 Info Area\n\tPT_BLOCKREQ             = 40 // Block request\n\tPT_THREAD_INFO          = 60 // Read thread info\n\tPT_THREAD_MODIFY        = 61\n\tPT_THREAD_READ_FOCUS    = 62\n\tPT_THREAD_WRITE_FOCUS   = 63\n\tPT_THREAD_HOLD          = 64\n\tPT_THREAD_SIGNAL        = 65\n\tPT_EXPLAIN              = 66\n\tPT_EVENTS               = 67\n\tPT_THREAD_INFO_EXTENDED = 68\n\tPT_REATTACH2            = 71\n\tPT_CAPTURE              = 72\n\tPT_UNCAPTURE            = 73\n\tPT_GET_THREAD_TCB       = 74\n\tPT_GET_ALET             = 75\n\tPT_SWAPIN               = 76\n\tPT_EXTENDED_EVENT       = 98\n\tPT_RECOVER              = 99  // Debug a program check\n\tPT_GPR0                 = 0   // General purpose register 0\n\tPT_GPR1                 = 1   // General purpose register 1\n\tPT_GPR2                 = 2   // General purpose register 2\n\tPT_GPR3                 = 3   // General purpose register 3\n\tPT_GPR4                 = 4   // General purpose register 4\n\tPT_GPR5                 = 5   // General purpose register 5\n\tPT_GPR6                 = 6   // General purpose register 6\n\tPT_GPR7                 = 7   // General purpose register 7\n\tPT_GPR8                 = 8   // General purpose register 8\n\tPT_GPR9                 = 9   // General purpose register 9\n\tPT_GPR10                = 10  // General purpose register 10\n\tPT_GPR11                = 11  // General purpose register 11\n\tPT_GPR12                = 12  // General purpose register 12\n\tPT_GPR13                = 13  // General purpose register 13\n\tPT_GPR14                = 14  // General purpose register 14\n\tPT_GPR15                = 15  // General purpose register 15\n\tPT_FPR0                 = 16  // Floating point register 0\n\tPT_FPR1                 = 17  // Floating point register 1\n\tPT_FPR2                 = 18  // Floating point register 2\n\tPT_FPR3                 = 19  // Floating point register 3\n\tPT_FPR4                 = 20  // Floating point register 4\n\tPT_FPR5                 = 21  // Floating point register 5\n\tPT_FPR6                 = 22  // Floating point register 6\n\tPT_FPR7                 = 23  // Floating point register 7\n\tPT_FPR8                 = 24  // Floating point register 8\n\tPT_FPR9                 = 25  // Floating point register 9\n\tPT_FPR10                = 26  // Floating point register 10\n\tPT_FPR11                = 27  // Floating point register 11\n\tPT_FPR12                = 28  // Floating point register 12\n\tPT_FPR13                = 29  // Floating point register 13\n\tPT_FPR14                = 30  // Floating point register 14\n\tPT_FPR15                = 31  // Floating point register 15\n\tPT_FPC                  = 32  // Floating point control register\n\tPT_PSW                  = 40  // PSW\n\tPT_PSW0                 = 40  // Left half of the PSW\n\tPT_PSW1                 = 41  // Right half of the PSW\n\tPT_CR0                  = 42  // Control register 0\n\tPT_CR1                  = 43  // Control register 1\n\tPT_CR2                  = 44  // Control register 2\n\tPT_CR3                  = 45  // Control register 3\n\tPT_CR4                  = 46  // Control register 4\n\tPT_CR5                  = 47  // Control register 5\n\tPT_CR6                  = 48  // Control register 6\n\tPT_CR7                  = 49  // Control register 7\n\tPT_CR8                  = 50  // Control register 8\n\tPT_CR9                  = 51  // Control register 9\n\tPT_CR10                 = 52  // Control register 10\n\tPT_CR11                 = 53  // Control register 11\n\tPT_CR12                 = 54  // Control register 12\n\tPT_CR13                 = 55  // Control register 13\n\tPT_CR14                 = 56  // Control register 14\n\tPT_CR15                 = 57  // Control register 15\n\tPT_GPRH0                = 58  // GP High register 0\n\tPT_GPRH1                = 59  // GP High register 1\n\tPT_GPRH2                = 60  // GP High register 2\n\tPT_GPRH3                = 61  // GP High register 3\n\tPT_GPRH4                = 62  // GP High register 4\n\tPT_GPRH5                = 63  // GP High register 5\n\tPT_GPRH6                = 64  // GP High register 6\n\tPT_GPRH7                = 65  // GP High register 7\n\tPT_GPRH8                = 66  // GP High register 8\n\tPT_GPRH9                = 67  // GP High register 9\n\tPT_GPRH10               = 68  // GP High register 10\n\tPT_GPRH11               = 69  // GP High register 11\n\tPT_GPRH12               = 70  // GP High register 12\n\tPT_GPRH13               = 71  // GP High register 13\n\tPT_GPRH14               = 72  // GP High register 14\n\tPT_GPRH15               = 73  // GP High register 15\n\tPT_VR0                  = 74  // Vector register 0\n\tPT_VR1                  = 75  // Vector register 1\n\tPT_VR2                  = 76  // Vector register 2\n\tPT_VR3                  = 77  // Vector register 3\n\tPT_VR4                  = 78  // Vector register 4\n\tPT_VR5                  = 79  // Vector register 5\n\tPT_VR6                  = 80  // Vector register 6\n\tPT_VR7                  = 81  // Vector register 7\n\tPT_VR8                  = 82  // Vector register 8\n\tPT_VR9                  = 83  // Vector register 9\n\tPT_VR10                 = 84  // Vector register 10\n\tPT_VR11                 = 85  // Vector register 11\n\tPT_VR12                 = 86  // Vector register 12\n\tPT_VR13                 = 87  // Vector register 13\n\tPT_VR14                 = 88  // Vector register 14\n\tPT_VR15                 = 89  // Vector register 15\n\tPT_VR16                 = 90  // Vector register 16\n\tPT_VR17                 = 91  // Vector register 17\n\tPT_VR18                 = 92  // Vector register 18\n\tPT_VR19                 = 93  // Vector register 19\n\tPT_VR20                 = 94  // Vector register 20\n\tPT_VR21                 = 95  // Vector register 21\n\tPT_VR22                 = 96  // Vector register 22\n\tPT_VR23                 = 97  // Vector register 23\n\tPT_VR24                 = 98  // Vector register 24\n\tPT_VR25                 = 99  // Vector register 25\n\tPT_VR26                 = 100 // Vector register 26\n\tPT_VR27                 = 101 // Vector register 27\n\tPT_VR28                 = 102 // Vector register 28\n\tPT_VR29                 = 103 // Vector register 29\n\tPT_VR30                 = 104 // Vector register 30\n\tPT_VR31                 = 105 // Vector register 31\n\tPT_PSWG                 = 106 // PSWG\n\tPT_PSWG0                = 106 // Bytes 0-3\n\tPT_PSWG1                = 107 // Bytes 4-7\n\tPT_PSWG2                = 108 // Bytes 8-11 (IA high word)\n\tPT_PSWG3                = 109 // Bytes 12-15 (IA low word)\n)\n\nfunc Bpx4ptr(request int32, pid int32, addr unsafe.Pointer, data unsafe.Pointer, buffer unsafe.Pointer) (rv int32, rc int32, rn int32) {\n\tvar parms [8]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&request)\n\tparms[1] = unsafe.Pointer(&pid)\n\tparms[2] = unsafe.Pointer(&addr)\n\tparms[3] = unsafe.Pointer(&data)\n\tparms[4] = unsafe.Pointer(&buffer)\n\tparms[5] = unsafe.Pointer(&rv)\n\tparms[6] = unsafe.Pointer(&rc)\n\tparms[7] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4PTR)\n\treturn rv, rc, rn\n}\n\nfunc copyU8(val uint8, dest []uint8) int {\n\tif len(dest) < 1 {\n\t\treturn 0\n\t}\n\tdest[0] = val\n\treturn 1\n}\n\nfunc copyU8Arr(src, dest []uint8) int {\n\tif len(dest) < len(src) {\n\t\treturn 0\n\t}\n\tfor i, v := range src {\n\t\tdest[i] = v\n\t}\n\treturn len(src)\n}\n\nfunc copyU16(val uint16, dest []uint16) int {\n\tif len(dest) < 1 {\n\t\treturn 0\n\t}\n\tdest[0] = val\n\treturn 1\n}\n\nfunc copyU32(val uint32, dest []uint32) int {\n\tif len(dest) < 1 {\n\t\treturn 0\n\t}\n\tdest[0] = val\n\treturn 1\n}\n\nfunc copyU32Arr(src, dest []uint32) int {\n\tif len(dest) < len(src) {\n\t\treturn 0\n\t}\n\tfor i, v := range src {\n\t\tdest[i] = v\n\t}\n\treturn len(src)\n}\n\nfunc copyU64(val uint64, dest []uint64) int {\n\tif len(dest) < 1 {\n\t\treturn 0\n\t}\n\tdest[0] = val\n\treturn 1\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/bpxsvc_zos.s",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n#include \"go_asm.h\"\n#include \"textflag.h\"\n\n// function to call USS assembly language services\n//\n// doc: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_3.1.0/com.ibm.zos.v3r1.bpxb100/bit64env.htm\n//\n//   arg1 unsafe.Pointer array that ressembles an OS PLIST\n//\n//   arg2 function offset as in\n//       doc: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_3.1.0/com.ibm.zos.v3r1.bpxb100/bpx2cr_List_of_offsets.htm\n//\n// func bpxcall(plist []unsafe.Pointer, bpx_offset int64)\n\nTEXT ·bpxcall(SB), NOSPLIT|NOFRAME, $0\n\tMOVD  plist_base+0(FP), R1  // r1 points to plist\n\tMOVD  bpx_offset+24(FP), R2 // r2 offset to BPX vector table\n\tMOVD  R14, R7               // save r14\n\tMOVD  R15, R8               // save r15\n\tMOVWZ 16(R0), R9\n\tMOVWZ 544(R9), R9\n\tMOVWZ 24(R9), R9            // call vector in r9\n\tADD   R2, R9                // add offset to vector table\n\tMOVWZ (R9), R9              // r9 points to entry point\n\tBYTE  $0x0D                 // BL R14,R9 --> basr r14,r9\n\tBYTE  $0xE9                 // clobbers 0,1,14,15\n\tMOVD  R8, R15               // restore 15\n\tJMP   R7                    // return via saved return address\n\n//   func A2e(arr [] byte)\n//   code page conversion from  819 to 1047\nTEXT ·A2e(SB), NOSPLIT|NOFRAME, $0\n\tMOVD arg_base+0(FP), R2                        // pointer to arry of characters\n\tMOVD arg_len+8(FP), R3                         // count\n\tXOR  R0, R0\n\tXOR  R1, R1\n\tBYTE $0xA7; BYTE $0x15; BYTE $0x00; BYTE $0x82 // BRAS 1,(2+(256/2))\n\n\t// ASCII -> EBCDIC conversion table:\n\tBYTE $0x00; BYTE $0x01; BYTE $0x02; BYTE $0x03\n\tBYTE $0x37; BYTE $0x2d; BYTE $0x2e; BYTE $0x2f\n\tBYTE $0x16; BYTE $0x05; BYTE $0x15; BYTE $0x0b\n\tBYTE $0x0c; BYTE $0x0d; BYTE $0x0e; BYTE $0x0f\n\tBYTE $0x10; BYTE $0x11; BYTE $0x12; BYTE $0x13\n\tBYTE $0x3c; BYTE $0x3d; BYTE $0x32; BYTE $0x26\n\tBYTE $0x18; BYTE $0x19; BYTE $0x3f; BYTE $0x27\n\tBYTE $0x1c; BYTE $0x1d; BYTE $0x1e; BYTE $0x1f\n\tBYTE $0x40; BYTE $0x5a; BYTE $0x7f; BYTE $0x7b\n\tBYTE $0x5b; BYTE $0x6c; BYTE $0x50; BYTE $0x7d\n\tBYTE $0x4d; BYTE $0x5d; BYTE $0x5c; BYTE $0x4e\n\tBYTE $0x6b; BYTE $0x60; BYTE $0x4b; BYTE $0x61\n\tBYTE $0xf0; BYTE $0xf1; BYTE $0xf2; BYTE $0xf3\n\tBYTE $0xf4; BYTE $0xf5; BYTE $0xf6; BYTE $0xf7\n\tBYTE $0xf8; BYTE $0xf9; BYTE $0x7a; BYTE $0x5e\n\tBYTE $0x4c; BYTE $0x7e; BYTE $0x6e; BYTE $0x6f\n\tBYTE $0x7c; BYTE $0xc1; BYTE $0xc2; BYTE $0xc3\n\tBYTE $0xc4; BYTE $0xc5; BYTE $0xc6; BYTE $0xc7\n\tBYTE $0xc8; BYTE $0xc9; BYTE $0xd1; BYTE $0xd2\n\tBYTE $0xd3; BYTE $0xd4; BYTE $0xd5; BYTE $0xd6\n\tBYTE $0xd7; BYTE $0xd8; BYTE $0xd9; BYTE $0xe2\n\tBYTE $0xe3; BYTE $0xe4; BYTE $0xe5; BYTE $0xe6\n\tBYTE $0xe7; BYTE $0xe8; BYTE $0xe9; BYTE $0xad\n\tBYTE $0xe0; BYTE $0xbd; BYTE $0x5f; BYTE $0x6d\n\tBYTE $0x79; BYTE $0x81; BYTE $0x82; BYTE $0x83\n\tBYTE $0x84; BYTE $0x85; BYTE $0x86; BYTE $0x87\n\tBYTE $0x88; BYTE $0x89; BYTE $0x91; BYTE $0x92\n\tBYTE $0x93; BYTE $0x94; BYTE $0x95; BYTE $0x96\n\tBYTE $0x97; BYTE $0x98; BYTE $0x99; BYTE $0xa2\n\tBYTE $0xa3; BYTE $0xa4; BYTE $0xa5; BYTE $0xa6\n\tBYTE $0xa7; BYTE $0xa8; BYTE $0xa9; BYTE $0xc0\n\tBYTE $0x4f; BYTE $0xd0; BYTE $0xa1; BYTE $0x07\n\tBYTE $0x20; BYTE $0x21; BYTE $0x22; BYTE $0x23\n\tBYTE $0x24; BYTE $0x25; BYTE $0x06; BYTE $0x17\n\tBYTE $0x28; BYTE $0x29; BYTE $0x2a; BYTE $0x2b\n\tBYTE $0x2c; BYTE $0x09; BYTE $0x0a; BYTE $0x1b\n\tBYTE $0x30; BYTE $0x31; BYTE $0x1a; BYTE $0x33\n\tBYTE $0x34; BYTE $0x35; BYTE $0x36; BYTE $0x08\n\tBYTE $0x38; BYTE $0x39; BYTE $0x3a; BYTE $0x3b\n\tBYTE $0x04; BYTE $0x14; BYTE $0x3e; BYTE $0xff\n\tBYTE $0x41; BYTE $0xaa; BYTE $0x4a; BYTE $0xb1\n\tBYTE $0x9f; BYTE $0xb2; BYTE $0x6a; BYTE $0xb5\n\tBYTE $0xbb; BYTE $0xb4; BYTE $0x9a; BYTE $0x8a\n\tBYTE $0xb0; BYTE $0xca; BYTE $0xaf; BYTE $0xbc\n\tBYTE $0x90; BYTE $0x8f; BYTE $0xea; BYTE $0xfa\n\tBYTE $0xbe; BYTE $0xa0; BYTE $0xb6; BYTE $0xb3\n\tBYTE $0x9d; BYTE $0xda; BYTE $0x9b; BYTE $0x8b\n\tBYTE $0xb7; BYTE $0xb8; BYTE $0xb9; BYTE $0xab\n\tBYTE $0x64; BYTE $0x65; BYTE $0x62; BYTE $0x66\n\tBYTE $0x63; BYTE $0x67; BYTE $0x9e; BYTE $0x68\n\tBYTE $0x74; BYTE $0x71; BYTE $0x72; BYTE $0x73\n\tBYTE $0x78; BYTE $0x75; BYTE $0x76; BYTE $0x77\n\tBYTE $0xac; BYTE $0x69; BYTE $0xed; BYTE $0xee\n\tBYTE $0xeb; BYTE $0xef; BYTE $0xec; BYTE $0xbf\n\tBYTE $0x80; BYTE $0xfd; BYTE $0xfe; BYTE $0xfb\n\tBYTE $0xfc; BYTE $0xba; BYTE $0xae; BYTE $0x59\n\tBYTE $0x44; BYTE $0x45; BYTE $0x42; BYTE $0x46\n\tBYTE $0x43; BYTE $0x47; BYTE $0x9c; BYTE $0x48\n\tBYTE $0x54; BYTE $0x51; BYTE $0x52; BYTE $0x53\n\tBYTE $0x58; BYTE $0x55; BYTE $0x56; BYTE $0x57\n\tBYTE $0x8c; BYTE $0x49; BYTE $0xcd; BYTE $0xce\n\tBYTE $0xcb; BYTE $0xcf; BYTE $0xcc; BYTE $0xe1\n\tBYTE $0x70; BYTE $0xdd; BYTE $0xde; BYTE $0xdb\n\tBYTE $0xdc; BYTE $0x8d; BYTE $0x8e; BYTE $0xdf\n\nretry:\n\tWORD $0xB9931022 // TROO 2,2,b'0001'\n\tBVS  retry\n\tRET\n\n//   func e2a(arr [] byte)\n//   code page conversion from  1047 to 819\nTEXT ·E2a(SB), NOSPLIT|NOFRAME, $0\n\tMOVD arg_base+0(FP), R2                        // pointer to arry of characters\n\tMOVD arg_len+8(FP), R3                         // count\n\tXOR  R0, R0\n\tXOR  R1, R1\n\tBYTE $0xA7; BYTE $0x15; BYTE $0x00; BYTE $0x82 // BRAS 1,(2+(256/2))\n\n\t// EBCDIC -> ASCII conversion table:\n\tBYTE $0x00; BYTE $0x01; BYTE $0x02; BYTE $0x03\n\tBYTE $0x9c; BYTE $0x09; BYTE $0x86; BYTE $0x7f\n\tBYTE $0x97; BYTE $0x8d; BYTE $0x8e; BYTE $0x0b\n\tBYTE $0x0c; BYTE $0x0d; BYTE $0x0e; BYTE $0x0f\n\tBYTE $0x10; BYTE $0x11; BYTE $0x12; BYTE $0x13\n\tBYTE $0x9d; BYTE $0x0a; BYTE $0x08; BYTE $0x87\n\tBYTE $0x18; BYTE $0x19; BYTE $0x92; BYTE $0x8f\n\tBYTE $0x1c; BYTE $0x1d; BYTE $0x1e; BYTE $0x1f\n\tBYTE $0x80; BYTE $0x81; BYTE $0x82; BYTE $0x83\n\tBYTE $0x84; BYTE $0x85; BYTE $0x17; BYTE $0x1b\n\tBYTE $0x88; BYTE $0x89; BYTE $0x8a; BYTE $0x8b\n\tBYTE $0x8c; BYTE $0x05; BYTE $0x06; BYTE $0x07\n\tBYTE $0x90; BYTE $0x91; BYTE $0x16; BYTE $0x93\n\tBYTE $0x94; BYTE $0x95; BYTE $0x96; BYTE $0x04\n\tBYTE $0x98; BYTE $0x99; BYTE $0x9a; BYTE $0x9b\n\tBYTE $0x14; BYTE $0x15; BYTE $0x9e; BYTE $0x1a\n\tBYTE $0x20; BYTE $0xa0; BYTE $0xe2; BYTE $0xe4\n\tBYTE $0xe0; BYTE $0xe1; BYTE $0xe3; BYTE $0xe5\n\tBYTE $0xe7; BYTE $0xf1; BYTE $0xa2; BYTE $0x2e\n\tBYTE $0x3c; BYTE $0x28; BYTE $0x2b; BYTE $0x7c\n\tBYTE $0x26; BYTE $0xe9; BYTE $0xea; BYTE $0xeb\n\tBYTE $0xe8; BYTE $0xed; BYTE $0xee; BYTE $0xef\n\tBYTE $0xec; BYTE $0xdf; BYTE $0x21; BYTE $0x24\n\tBYTE $0x2a; BYTE $0x29; BYTE $0x3b; BYTE $0x5e\n\tBYTE $0x2d; BYTE $0x2f; BYTE $0xc2; BYTE $0xc4\n\tBYTE $0xc0; BYTE $0xc1; BYTE $0xc3; BYTE $0xc5\n\tBYTE $0xc7; BYTE $0xd1; BYTE $0xa6; BYTE $0x2c\n\tBYTE $0x25; BYTE $0x5f; BYTE $0x3e; BYTE $0x3f\n\tBYTE $0xf8; BYTE $0xc9; BYTE $0xca; BYTE $0xcb\n\tBYTE $0xc8; BYTE $0xcd; BYTE $0xce; BYTE $0xcf\n\tBYTE $0xcc; BYTE $0x60; BYTE $0x3a; BYTE $0x23\n\tBYTE $0x40; BYTE $0x27; BYTE $0x3d; BYTE $0x22\n\tBYTE $0xd8; BYTE $0x61; BYTE $0x62; BYTE $0x63\n\tBYTE $0x64; BYTE $0x65; BYTE $0x66; BYTE $0x67\n\tBYTE $0x68; BYTE $0x69; BYTE $0xab; BYTE $0xbb\n\tBYTE $0xf0; BYTE $0xfd; BYTE $0xfe; BYTE $0xb1\n\tBYTE $0xb0; BYTE $0x6a; BYTE $0x6b; BYTE $0x6c\n\tBYTE $0x6d; BYTE $0x6e; BYTE $0x6f; BYTE $0x70\n\tBYTE $0x71; BYTE $0x72; BYTE $0xaa; BYTE $0xba\n\tBYTE $0xe6; BYTE $0xb8; BYTE $0xc6; BYTE $0xa4\n\tBYTE $0xb5; BYTE $0x7e; BYTE $0x73; BYTE $0x74\n\tBYTE $0x75; BYTE $0x76; BYTE $0x77; BYTE $0x78\n\tBYTE $0x79; BYTE $0x7a; BYTE $0xa1; BYTE $0xbf\n\tBYTE $0xd0; BYTE $0x5b; BYTE $0xde; BYTE $0xae\n\tBYTE $0xac; BYTE $0xa3; BYTE $0xa5; BYTE $0xb7\n\tBYTE $0xa9; BYTE $0xa7; BYTE $0xb6; BYTE $0xbc\n\tBYTE $0xbd; BYTE $0xbe; BYTE $0xdd; BYTE $0xa8\n\tBYTE $0xaf; BYTE $0x5d; BYTE $0xb4; BYTE $0xd7\n\tBYTE $0x7b; BYTE $0x41; BYTE $0x42; BYTE $0x43\n\tBYTE $0x44; BYTE $0x45; BYTE $0x46; BYTE $0x47\n\tBYTE $0x48; BYTE $0x49; BYTE $0xad; BYTE $0xf4\n\tBYTE $0xf6; BYTE $0xf2; BYTE $0xf3; BYTE $0xf5\n\tBYTE $0x7d; BYTE $0x4a; BYTE $0x4b; BYTE $0x4c\n\tBYTE $0x4d; BYTE $0x4e; BYTE $0x4f; BYTE $0x50\n\tBYTE $0x51; BYTE $0x52; BYTE $0xb9; BYTE $0xfb\n\tBYTE $0xfc; BYTE $0xf9; BYTE $0xfa; BYTE $0xff\n\tBYTE $0x5c; BYTE $0xf7; BYTE $0x53; BYTE $0x54\n\tBYTE $0x55; BYTE $0x56; BYTE $0x57; BYTE $0x58\n\tBYTE $0x59; BYTE $0x5a; BYTE $0xb2; BYTE $0xd4\n\tBYTE $0xd6; BYTE $0xd2; BYTE $0xd3; BYTE $0xd5\n\tBYTE $0x30; BYTE $0x31; BYTE $0x32; BYTE $0x33\n\tBYTE $0x34; BYTE $0x35; BYTE $0x36; BYTE $0x37\n\tBYTE $0x38; BYTE $0x39; BYTE $0xb3; BYTE $0xdb\n\tBYTE $0xdc; BYTE $0xd9; BYTE $0xda; BYTE $0x9f\n\nretry:\n\tWORD $0xB9931022 // TROO 2,2,b'0001'\n\tBVS  retry\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/cap_freebsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build freebsd\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\n// Go implementation of C mostly found in /usr/src/sys/kern/subr_capability.c\n\nconst (\n\t// This is the version of CapRights this package understands. See C implementation for parallels.\n\tcapRightsGoVersion = CAP_RIGHTS_VERSION_00\n\tcapArSizeMin       = CAP_RIGHTS_VERSION_00 + 2\n\tcapArSizeMax       = capRightsGoVersion + 2\n)\n\nvar (\n\tbit2idx = []int{\n\t\t-1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1,\n\t\t4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n\t}\n)\n\nfunc capidxbit(right uint64) int {\n\treturn int((right >> 57) & 0x1f)\n}\n\nfunc rightToIndex(right uint64) (int, error) {\n\tidx := capidxbit(right)\n\tif idx < 0 || idx >= len(bit2idx) {\n\t\treturn -2, fmt.Errorf(\"index for right 0x%x out of range\", right)\n\t}\n\treturn bit2idx[idx], nil\n}\n\nfunc caprver(right uint64) int {\n\treturn int(right >> 62)\n}\n\nfunc capver(rights *CapRights) int {\n\treturn caprver(rights.Rights[0])\n}\n\nfunc caparsize(rights *CapRights) int {\n\treturn capver(rights) + 2\n}\n\n// CapRightsSet sets the permissions in setrights in rights.\nfunc CapRightsSet(rights *CapRights, setrights []uint64) error {\n\t// This is essentially a copy of cap_rights_vset()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range setrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch\")\n\t\t}\n\t\trights.Rights[i] |= right\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch (after assign)\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// CapRightsClear clears the permissions in clearrights from rights.\nfunc CapRightsClear(rights *CapRights, clearrights []uint64) error {\n\t// This is essentially a copy of cap_rights_vclear()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range clearrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch\")\n\t\t}\n\t\trights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF)\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch (after assign)\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// CapRightsIsSet checks whether all the permissions in setrights are present in rights.\nfunc CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) {\n\t// This is essentially a copy of cap_rights_is_vset()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn false, fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn false, errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range setrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn false, errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn false, errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn false, errors.New(\"index mismatch\")\n\t\t}\n\t\tif (rights.Rights[i] & right) != right {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\n\treturn true, nil\n}\n\nfunc capright(idx uint64, bit uint64) uint64 {\n\treturn ((1 << (57 + idx)) | bit)\n}\n\n// CapRightsInit returns a pointer to an initialised CapRights structure filled with rights.\n// See man cap_rights_init(3) and rights(4).\nfunc CapRightsInit(rights []uint64) (*CapRights, error) {\n\tvar r CapRights\n\tr.Rights[0] = (capRightsGoVersion << 62) | capright(0, 0)\n\tr.Rights[1] = capright(1, 0)\n\n\terr := CapRightsSet(&r, rights)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &r, nil\n}\n\n// CapRightsLimit reduces the operations permitted on fd to at most those contained in rights.\n// The capability rights on fd can never be increased by CapRightsLimit.\n// See man cap_rights_limit(2) and rights(4).\nfunc CapRightsLimit(fd uintptr, rights *CapRights) error {\n\treturn capRightsLimit(int(fd), rights)\n}\n\n// CapRightsGet returns a CapRights structure containing the operations permitted on fd.\n// See man cap_rights_get(3) and rights(4).\nfunc CapRightsGet(fd uintptr) (*CapRights, error) {\n\tr, err := CapRightsInit(nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = capRightsGet(capRightsGoVersion, int(fd), r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn r, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/constants.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nconst (\n\tR_OK = 0x4\n\tW_OK = 0x2\n\tX_OK = 0x1\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_aix_ppc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by AIX.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 16) & 0xffff)\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff)\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn uint64(((major) << 16) | (minor))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_aix_ppc64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc64\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used AIX.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x3fffffff00000000) >> 32)\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32((dev & 0x00000000ffffffff) >> 0)\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tvar DEVNO64 uint64\n\tDEVNO64 = 0x8000000000000000\n\treturn ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_darwin.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in Darwin's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of a Darwin device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 24) & 0xff)\n}\n\n// Minor returns the minor component of a Darwin device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffffff)\n}\n\n// Mkdev returns a Darwin device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 24) | uint64(minor)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_dragonfly.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in Dragonfly's sys/types.h header.\n//\n// The information below is extracted and adapted from sys/types.h:\n//\n// Minor gives a cookie instead of an index since in order to avoid changing the\n// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for\n// devices that don't use them.\n\npackage unix\n\n// Major returns the major component of a DragonFlyBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 8) & 0xff)\n}\n\n// Minor returns the minor component of a DragonFlyBSD device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff00ff)\n}\n\n// Mkdev returns a DragonFlyBSD device number generated from the given major and\n// minor components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 8) | uint64(minor)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_freebsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in FreeBSD's sys/types.h header.\n//\n// The information below is extracted and adapted from sys/types.h:\n//\n// Minor gives a cookie instead of an index since in order to avoid changing the\n// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for\n// devices that don't use them.\n\npackage unix\n\n// Major returns the major component of a FreeBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 8) & 0xff)\n}\n\n// Minor returns the minor component of a FreeBSD device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff00ff)\n}\n\n// Mkdev returns a FreeBSD device number generated from the given major and\n// minor components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 8) | uint64(minor)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_linux.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by the Linux kernel and glibc.\n//\n// The information below is extracted and adapted from bits/sysmacros.h in the\n// glibc sources:\n//\n// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's\n// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major\n// number and m is a hex digit of the minor number. This is backward compatible\n// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also\n// backward compatible with the Linux kernel, which for some architectures uses\n// 32-bit dev_t, encoded as mmmM MMmm.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\tmajor := uint32((dev & 0x00000000000fff00) >> 8)\n\tmajor |= uint32((dev & 0xfffff00000000000) >> 32)\n\treturn major\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x00000000000000ff) >> 0)\n\tminor |= uint32((dev & 0x00000ffffff00000) >> 12)\n\treturn minor\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) & 0x00000fff) << 8\n\tdev |= (uint64(major) & 0xfffff000) << 32\n\tdev |= (uint64(minor) & 0x000000ff) << 0\n\tdev |= (uint64(minor) & 0xffffff00) << 12\n\treturn dev\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_netbsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in NetBSD's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of a NetBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x000fff00) >> 8)\n}\n\n// Minor returns the minor component of a NetBSD device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x000000ff) >> 0)\n\tminor |= uint32((dev & 0xfff00000) >> 12)\n\treturn minor\n}\n\n// Mkdev returns a NetBSD device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) << 8) & 0x000fff00\n\tdev |= (uint64(minor) << 12) & 0xfff00000\n\tdev |= (uint64(minor) << 0) & 0x000000ff\n\treturn dev\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_openbsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in OpenBSD's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of an OpenBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x0000ff00) >> 8)\n}\n\n// Minor returns the minor component of an OpenBSD device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x000000ff) >> 0)\n\tminor |= uint32((dev & 0xffff0000) >> 8)\n\treturn minor\n}\n\n// Mkdev returns an OpenBSD device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) << 8) & 0x0000ff00\n\tdev |= (uint64(minor) << 8) & 0xffff0000\n\tdev |= (uint64(minor) << 0) & 0x000000ff\n\treturn dev\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_zos.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by z/OS.\n//\n// The information below is extracted and adapted from <sys/stat.h> macros.\n\npackage unix\n\n// Major returns the major component of a z/OS device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 16) & 0x0000FFFF)\n}\n\n// Minor returns the minor component of a z/OS device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0x0000FFFF)\n}\n\n// Mkdev returns a z/OS device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 16) | uint64(minor)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dirent.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport \"unsafe\"\n\n// readInt returns the size-bytes unsigned integer in native byte order at offset off.\nfunc readInt(b []byte, off, size uintptr) (u uint64, ok bool) {\n\tif len(b) < int(off+size) {\n\t\treturn 0, false\n\t}\n\tif isBigEndian {\n\t\treturn readIntBE(b[off:], size), true\n\t}\n\treturn readIntLE(b[off:], size), true\n}\n\nfunc readIntBE(b []byte, size uintptr) uint64 {\n\tswitch size {\n\tcase 1:\n\t\treturn uint64(b[0])\n\tcase 2:\n\t\t_ = b[1] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[1]) | uint64(b[0])<<8\n\tcase 4:\n\t\t_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24\n\tcase 8:\n\t\t_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 |\n\t\t\tuint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56\n\tdefault:\n\t\tpanic(\"syscall: readInt with unsupported size\")\n\t}\n}\n\nfunc readIntLE(b []byte, size uintptr) uint64 {\n\tswitch size {\n\tcase 1:\n\t\treturn uint64(b[0])\n\tcase 2:\n\t\t_ = b[1] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8\n\tcase 4:\n\t\t_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24\n\tcase 8:\n\t\t_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |\n\t\t\tuint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n\tdefault:\n\t\tpanic(\"syscall: readInt with unsupported size\")\n\t}\n}\n\n// ParseDirent parses up to max directory entries in buf,\n// appending the names to names. It returns the number of\n// bytes consumed from buf, the number of entries added\n// to names, and the new names slice.\nfunc ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {\n\toriglen := len(buf)\n\tcount = 0\n\tfor max != 0 && len(buf) > 0 {\n\t\treclen, ok := direntReclen(buf)\n\t\tif !ok || reclen > uint64(len(buf)) {\n\t\t\treturn origlen, count, names\n\t\t}\n\t\trec := buf[:reclen]\n\t\tbuf = buf[reclen:]\n\t\tino, ok := direntIno(rec)\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\t\tif ino == 0 { // File absent in directory.\n\t\t\tcontinue\n\t\t}\n\t\tconst namoff = uint64(unsafe.Offsetof(Dirent{}.Name))\n\t\tnamlen, ok := direntNamlen(rec)\n\t\tif !ok || namoff+namlen > uint64(len(rec)) {\n\t\t\tbreak\n\t\t}\n\t\tname := rec[namoff : namoff+namlen]\n\t\tfor i, c := range name {\n\t\t\tif c == 0 {\n\t\t\t\tname = name[:i]\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Check for useless names before allocating a string.\n\t\tif string(name) == \".\" || string(name) == \"..\" {\n\t\t\tcontinue\n\t\t}\n\t\tmax--\n\t\tcount++\n\t\tnames = append(names, string(name))\n\t}\n\treturn origlen - len(buf), count, names\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/endian_big.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n//\n//go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64\n\npackage unix\n\nconst isBigEndian = true\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/endian_little.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n//\n//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh\n\npackage unix\n\nconst isBigEndian = false\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/env_unix.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Unix environment variables.\n\npackage unix\n\nimport \"syscall\"\n\nfunc Getenv(key string) (value string, found bool) {\n\treturn syscall.Getenv(key)\n}\n\nfunc Setenv(key, value string) error {\n\treturn syscall.Setenv(key, value)\n}\n\nfunc Clearenv() {\n\tsyscall.Clearenv()\n}\n\nfunc Environ() []string {\n\treturn syscall.Environ()\n}\n\nfunc Unsetenv(key string) error {\n\treturn syscall.Unsetenv(key)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/fcntl.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build dragonfly || freebsd || linux || netbsd\n\npackage unix\n\nimport \"unsafe\"\n\n// fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux\n// systems by fcntl_linux_32bit.go to be SYS_FCNTL64.\nvar fcntl64Syscall uintptr = SYS_FCNTL\n\nfunc fcntl(fd int, cmd, arg int) (int, error) {\n\tvalptr, _, errno := Syscall(fcntl64Syscall, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tvar err error\n\tif errno != 0 {\n\t\terr = errno\n\t}\n\treturn int(valptr), err\n}\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))\n\tif errno == 0 {\n\t\treturn nil\n\t}\n\treturn errno\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/fcntl_darwin.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"unsafe\"\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk))))\n\treturn err\n}\n\n// FcntlFstore performs a fcntl syscall for the F_PREALLOCATE command.\nfunc FcntlFstore(fd uintptr, cmd int, fstore *Fstore_t) error {\n\t_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(fstore))))\n\treturn err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) || (linux && ppc)\n\npackage unix\n\nfunc init() {\n\t// On 32-bit Linux systems, the fcntl syscall that matches Go's\n\t// Flock_t type is SYS_FCNTL64, not SYS_FCNTL.\n\tfcntl64Syscall = SYS_FCNTL64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/fdset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\n// Set adds fd to the set fds.\nfunc (fds *FdSet) Set(fd int) {\n\tfds.Bits[fd/NFDBITS] |= (1 << (uintptr(fd) % NFDBITS))\n}\n\n// Clear removes fd from the set fds.\nfunc (fds *FdSet) Clear(fd int) {\n\tfds.Bits[fd/NFDBITS] &^= (1 << (uintptr(fd) % NFDBITS))\n}\n\n// IsSet returns whether fd is in the set fds.\nfunc (fds *FdSet) IsSet(fd int) bool {\n\treturn fds.Bits[fd/NFDBITS]&(1<<(uintptr(fd)%NFDBITS)) != 0\n}\n\n// Zero clears the set fds.\nfunc (fds *FdSet) Zero() {\n\tclear(fds.Bits[:])\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/gccgo.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && !aix && !hurd\n\npackage unix\n\nimport \"syscall\"\n\n// We can't use the gc-syntax .s files for gccgo. On the plus side\n// much of the functionality can be written directly in Go.\n\nfunc realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)\n\nfunc realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)\n\nfunc SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {\n\tsyscall.Entersyscall()\n\tr := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0\n}\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {\n\tr := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\treturn r, 0\n}\n\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tr, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)\n\treturn r, 0, syscall.Errno(errno)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/gccgo_c.c",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && !aix && !hurd\n\n#include <errno.h>\n#include <stdint.h>\n#include <unistd.h>\n\n#define _STRINGIFY2_(x) #x\n#define _STRINGIFY_(x) _STRINGIFY2_(x)\n#define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__)\n\n// Call syscall from C code because the gccgo support for calling from\n// Go to C does not support varargs functions.\n\nstruct ret {\n\tuintptr_t r;\n\tuintptr_t err;\n};\n\nstruct ret gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n  __asm__(GOSYM_PREFIX GOPKGPATH \".realSyscall\");\n\nstruct ret\ngccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n{\n\tstruct ret r;\n\n\terrno = 0;\n\tr.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n\tr.err = errno;\n\treturn r;\n}\n\nuintptr_t gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n  __asm__(GOSYM_PREFIX GOPKGPATH \".realSyscallNoError\");\n\nuintptr_t\ngccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n{\n\treturn syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && linux && amd64\n\npackage unix\n\nimport \"syscall\"\n\n//extern gettimeofday\nfunc realGettimeofday(*Timeval, *byte) int32\n\nfunc gettimeofday(tv *Timeval) (err syscall.Errno) {\n\tr := realGettimeofday(tv, nil)\n\tif r < 0 {\n\t\treturn syscall.GetErrno()\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ifreq_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// Helpers for dealing with ifreq since it contains a union and thus requires a\n// lot of unsafe.Pointer casts to use properly.\n\n// An Ifreq is a type-safe wrapper around the raw ifreq struct. An Ifreq\n// contains an interface name and a union of arbitrary data which can be\n// accessed using the Ifreq's methods. To create an Ifreq, use the NewIfreq\n// function.\n//\n// Use the Name method to access the stored interface name. The union data\n// fields can be get and set using the following methods:\n//   - Uint16/SetUint16: flags\n//   - Uint32/SetUint32: ifindex, metric, mtu\ntype Ifreq struct{ raw ifreq }\n\n// NewIfreq creates an Ifreq with the input network interface name after\n// validating the name does not exceed IFNAMSIZ-1 (trailing NULL required)\n// bytes.\nfunc NewIfreq(name string) (*Ifreq, error) {\n\t// Leave room for terminating NULL byte.\n\tif len(name) >= IFNAMSIZ {\n\t\treturn nil, EINVAL\n\t}\n\n\tvar ifr ifreq\n\tcopy(ifr.Ifrn[:], name)\n\n\treturn &Ifreq{raw: ifr}, nil\n}\n\n// TODO(mdlayher): get/set methods for hardware address sockaddr, char array, etc.\n\n// Name returns the interface name associated with the Ifreq.\nfunc (ifr *Ifreq) Name() string {\n\treturn ByteSliceToString(ifr.raw.Ifrn[:])\n}\n\n// According to netdevice(7), only AF_INET addresses are returned for numerous\n// sockaddr ioctls. For convenience, we expose these as Inet4Addr since the Port\n// field and other data is always empty.\n\n// Inet4Addr returns the Ifreq union data from an embedded sockaddr as a C\n// in_addr/Go []byte (4-byte IPv4 address) value. If the sockaddr family is not\n// AF_INET, an error is returned.\nfunc (ifr *Ifreq) Inet4Addr() ([]byte, error) {\n\traw := *(*RawSockaddrInet4)(unsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0]))\n\tif raw.Family != AF_INET {\n\t\t// Cannot safely interpret raw.Addr bytes as an IPv4 address.\n\t\treturn nil, EINVAL\n\t}\n\n\treturn raw.Addr[:], nil\n}\n\n// SetInet4Addr sets a C in_addr/Go []byte (4-byte IPv4 address) value in an\n// embedded sockaddr within the Ifreq's union data. v must be 4 bytes in length\n// or an error will be returned.\nfunc (ifr *Ifreq) SetInet4Addr(v []byte) error {\n\tif len(v) != 4 {\n\t\treturn EINVAL\n\t}\n\n\tvar addr [4]byte\n\tcopy(addr[:], v)\n\n\tifr.clear()\n\t*(*RawSockaddrInet4)(\n\t\tunsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0]),\n\t) = RawSockaddrInet4{\n\t\t// Always set IP family as ioctls would require it anyway.\n\t\tFamily: AF_INET,\n\t\tAddr:   addr,\n\t}\n\n\treturn nil\n}\n\n// Uint16 returns the Ifreq union data as a C short/Go uint16 value.\nfunc (ifr *Ifreq) Uint16() uint16 {\n\treturn *(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0]))\n}\n\n// SetUint16 sets a C short/Go uint16 value as the Ifreq's union data.\nfunc (ifr *Ifreq) SetUint16(v uint16) {\n\tifr.clear()\n\t*(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) = v\n}\n\n// Uint32 returns the Ifreq union data as a C int/Go uint32 value.\nfunc (ifr *Ifreq) Uint32() uint32 {\n\treturn *(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0]))\n}\n\n// SetUint32 sets a C int/Go uint32 value as the Ifreq's union data.\nfunc (ifr *Ifreq) SetUint32(v uint32) {\n\tifr.clear()\n\t*(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) = v\n}\n\n// clear zeroes the ifreq's union field to prevent trailing garbage data from\n// being sent to the kernel if an ifreq is reused.\nfunc (ifr *Ifreq) clear() {\n\tclear(ifr.raw.Ifru[:])\n}\n\n// TODO(mdlayher): export as IfreqData? For now we can provide helpers such as\n// IoctlGetEthtoolDrvinfo which use these APIs under the hood.\n\n// An ifreqData is an Ifreq which carries pointer data. To produce an ifreqData,\n// use the Ifreq.withData method.\ntype ifreqData struct {\n\tname [IFNAMSIZ]byte\n\t// A type separate from ifreq is required in order to comply with the\n\t// unsafe.Pointer rules since the \"pointer-ness\" of data would not be\n\t// preserved if it were cast into the byte array of a raw ifreq.\n\tdata unsafe.Pointer\n\t// Pad to the same size as ifreq.\n\t_ [len(ifreq{}.Ifru) - SizeofPtr]byte\n}\n\n// withData produces an ifreqData with the pointer p set for ioctls which require\n// arbitrary pointer data.\nfunc (ifr Ifreq) withData(p unsafe.Pointer) ifreqData {\n\treturn ifreqData{\n\t\tname: ifr.raw.Ifrn,\n\t\tdata: p,\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ioctl_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"unsafe\"\n\n// IoctlRetInt performs an ioctl operation specified by req on a device\n// associated with opened file descriptor fd, and returns a non-negative\n// integer that is returned by the ioctl syscall.\nfunc IoctlRetInt(fd int, req uint) (int, error) {\n\tret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(ret), nil\n}\n\nfunc IoctlGetUint32(fd int, req uint) (uint32, error) {\n\tvar value uint32\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetRTCTime(fd int) (*RTCTime, error) {\n\tvar value RTCTime\n\terr := ioctlPtr(fd, RTC_RD_TIME, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlSetRTCTime(fd int, value *RTCTime) error {\n\treturn ioctlPtr(fd, RTC_SET_TIME, unsafe.Pointer(value))\n}\n\nfunc IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) {\n\tvar value RTCWkAlrm\n\terr := ioctlPtr(fd, RTC_WKALM_RD, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error {\n\treturn ioctlPtr(fd, RTC_WKALM_SET, unsafe.Pointer(value))\n}\n\n// IoctlGetEthtoolDrvinfo fetches ethtool driver information for the network\n// device specified by ifname.\nfunc IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) {\n\tifr, err := NewIfreq(ifname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvalue := EthtoolDrvinfo{Cmd: ETHTOOL_GDRVINFO}\n\tifrd := ifr.withData(unsafe.Pointer(&value))\n\n\terr = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd)\n\treturn &value, err\n}\n\n// IoctlGetEthtoolTsInfo fetches ethtool timestamping and PHC\n// association for the network device specified by ifname.\nfunc IoctlGetEthtoolTsInfo(fd int, ifname string) (*EthtoolTsInfo, error) {\n\tifr, err := NewIfreq(ifname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvalue := EthtoolTsInfo{Cmd: ETHTOOL_GET_TS_INFO}\n\tifrd := ifr.withData(unsafe.Pointer(&value))\n\n\terr = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd)\n\treturn &value, err\n}\n\n// IoctlGetHwTstamp retrieves the hardware timestamping configuration\n// for the network device specified by ifname.\nfunc IoctlGetHwTstamp(fd int, ifname string) (*HwTstampConfig, error) {\n\tifr, err := NewIfreq(ifname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvalue := HwTstampConfig{}\n\tifrd := ifr.withData(unsafe.Pointer(&value))\n\n\terr = ioctlIfreqData(fd, SIOCGHWTSTAMP, &ifrd)\n\treturn &value, err\n}\n\n// IoctlSetHwTstamp updates the hardware timestamping configuration for\n// the network device specified by ifname.\nfunc IoctlSetHwTstamp(fd int, ifname string, cfg *HwTstampConfig) error {\n\tifr, err := NewIfreq(ifname)\n\tif err != nil {\n\t\treturn err\n\t}\n\tifrd := ifr.withData(unsafe.Pointer(cfg))\n\treturn ioctlIfreqData(fd, SIOCSHWTSTAMP, &ifrd)\n}\n\n// FdToClockID derives the clock ID from the file descriptor number\n// - see clock_gettime(3), FD_TO_CLOCKID macros. The resulting ID is\n// suitable for system calls like ClockGettime.\nfunc FdToClockID(fd int) int32 { return int32((int(^fd) << 3) | 3) }\n\n// IoctlPtpClockGetcaps returns the description of a given PTP device.\nfunc IoctlPtpClockGetcaps(fd int) (*PtpClockCaps, error) {\n\tvar value PtpClockCaps\n\terr := ioctlPtr(fd, PTP_CLOCK_GETCAPS2, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlPtpSysOffsetPrecise returns a description of the clock\n// offset compared to the system clock.\nfunc IoctlPtpSysOffsetPrecise(fd int) (*PtpSysOffsetPrecise, error) {\n\tvar value PtpSysOffsetPrecise\n\terr := ioctlPtr(fd, PTP_SYS_OFFSET_PRECISE2, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlPtpSysOffsetExtended returns an extended description of the\n// clock offset compared to the system clock. The samples parameter\n// specifies the desired number of measurements.\nfunc IoctlPtpSysOffsetExtended(fd int, samples uint) (*PtpSysOffsetExtended, error) {\n\tvalue := PtpSysOffsetExtended{Samples: uint32(samples)}\n\terr := ioctlPtr(fd, PTP_SYS_OFFSET_EXTENDED2, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlPtpPinGetfunc returns the configuration of the specified\n// I/O pin on given PTP device.\nfunc IoctlPtpPinGetfunc(fd int, index uint) (*PtpPinDesc, error) {\n\tvalue := PtpPinDesc{Index: uint32(index)}\n\terr := ioctlPtr(fd, PTP_PIN_GETFUNC2, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlPtpPinSetfunc updates configuration of the specified PTP\n// I/O pin.\nfunc IoctlPtpPinSetfunc(fd int, pd *PtpPinDesc) error {\n\treturn ioctlPtr(fd, PTP_PIN_SETFUNC2, unsafe.Pointer(pd))\n}\n\n// IoctlPtpPeroutRequest configures the periodic output mode of the\n// PTP I/O pins.\nfunc IoctlPtpPeroutRequest(fd int, r *PtpPeroutRequest) error {\n\treturn ioctlPtr(fd, PTP_PEROUT_REQUEST2, unsafe.Pointer(r))\n}\n\n// IoctlPtpExttsRequest configures the external timestamping mode\n// of the PTP I/O pins.\nfunc IoctlPtpExttsRequest(fd int, r *PtpExttsRequest) error {\n\treturn ioctlPtr(fd, PTP_EXTTS_REQUEST2, unsafe.Pointer(r))\n}\n\n// IoctlGetWatchdogInfo fetches information about a watchdog device from the\n// Linux watchdog API. For more information, see:\n// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.\nfunc IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) {\n\tvar value WatchdogInfo\n\terr := ioctlPtr(fd, WDIOC_GETSUPPORT, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlWatchdogKeepalive issues a keepalive ioctl to a watchdog device. For\n// more information, see:\n// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.\nfunc IoctlWatchdogKeepalive(fd int) error {\n\t// arg is ignored and not a pointer, so ioctl is fine instead of ioctlPtr.\n\treturn ioctl(fd, WDIOC_KEEPALIVE, 0)\n}\n\n// IoctlFileCloneRange performs an FICLONERANGE ioctl operation to clone the\n// range of data conveyed in value to the file associated with the file\n// descriptor destFd. See the ioctl_ficlonerange(2) man page for details.\nfunc IoctlFileCloneRange(destFd int, value *FileCloneRange) error {\n\treturn ioctlPtr(destFd, FICLONERANGE, unsafe.Pointer(value))\n}\n\n// IoctlFileClone performs an FICLONE ioctl operation to clone the entire file\n// associated with the file description srcFd to the file associated with the\n// file descriptor destFd. See the ioctl_ficlone(2) man page for details.\nfunc IoctlFileClone(destFd, srcFd int) error {\n\treturn ioctl(destFd, FICLONE, uintptr(srcFd))\n}\n\ntype FileDedupeRange struct {\n\tSrc_offset uint64\n\tSrc_length uint64\n\tReserved1  uint16\n\tReserved2  uint32\n\tInfo       []FileDedupeRangeInfo\n}\n\ntype FileDedupeRangeInfo struct {\n\tDest_fd       int64\n\tDest_offset   uint64\n\tBytes_deduped uint64\n\tStatus        int32\n\tReserved      uint32\n}\n\n// IoctlFileDedupeRange performs an FIDEDUPERANGE ioctl operation to share the\n// range of data conveyed in value from the file associated with the file\n// descriptor srcFd to the value.Info destinations. See the\n// ioctl_fideduperange(2) man page for details.\nfunc IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error {\n\tbuf := make([]byte, SizeofRawFileDedupeRange+\n\t\tlen(value.Info)*SizeofRawFileDedupeRangeInfo)\n\trawrange := (*RawFileDedupeRange)(unsafe.Pointer(&buf[0]))\n\trawrange.Src_offset = value.Src_offset\n\trawrange.Src_length = value.Src_length\n\trawrange.Dest_count = uint16(len(value.Info))\n\trawrange.Reserved1 = value.Reserved1\n\trawrange.Reserved2 = value.Reserved2\n\n\tfor i := range value.Info {\n\t\trawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer(\n\t\t\tuintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) +\n\t\t\t\tuintptr(i*SizeofRawFileDedupeRangeInfo)))\n\t\trawinfo.Dest_fd = value.Info[i].Dest_fd\n\t\trawinfo.Dest_offset = value.Info[i].Dest_offset\n\t\trawinfo.Bytes_deduped = value.Info[i].Bytes_deduped\n\t\trawinfo.Status = value.Info[i].Status\n\t\trawinfo.Reserved = value.Info[i].Reserved\n\t}\n\n\terr := ioctlPtr(srcFd, FIDEDUPERANGE, unsafe.Pointer(&buf[0]))\n\n\t// Output\n\tfor i := range value.Info {\n\t\trawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer(\n\t\t\tuintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) +\n\t\t\t\tuintptr(i*SizeofRawFileDedupeRangeInfo)))\n\t\tvalue.Info[i].Dest_fd = rawinfo.Dest_fd\n\t\tvalue.Info[i].Dest_offset = rawinfo.Dest_offset\n\t\tvalue.Info[i].Bytes_deduped = rawinfo.Bytes_deduped\n\t\tvalue.Info[i].Status = rawinfo.Status\n\t\tvalue.Info[i].Reserved = rawinfo.Reserved\n\t}\n\n\treturn err\n}\n\nfunc IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error {\n\treturn ioctlPtr(fd, HIDIOCGRDESC, unsafe.Pointer(value))\n}\n\nfunc IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) {\n\tvar value HIDRawDevInfo\n\terr := ioctlPtr(fd, HIDIOCGRAWINFO, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlHIDGetRawName(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWNAME_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWNAME, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\nfunc IoctlHIDGetRawPhys(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWPHYS_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWPHYS, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\nfunc IoctlHIDGetRawUniq(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWUNIQ_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWUNIQ, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\n// IoctlIfreq performs an ioctl using an Ifreq structure for input and/or\n// output. See the netdevice(7) man page for details.\nfunc IoctlIfreq(fd int, req uint, value *Ifreq) error {\n\t// It is possible we will add more fields to *Ifreq itself later to prevent\n\t// misuse, so pass the raw *ifreq directly.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&value.raw))\n}\n\n// TODO(mdlayher): export if and when IfreqData is exported.\n\n// ioctlIfreqData performs an ioctl using an ifreqData structure for input\n// and/or output. See the netdevice(7) man page for details.\nfunc ioctlIfreqData(fd int, req uint, value *ifreqData) error {\n\t// The memory layout of IfreqData (type-safe) and ifreq (not type-safe) are\n\t// identical so pass *IfreqData directly.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlKCMClone attaches a new file descriptor to a multiplexor by cloning an\n// existing KCM socket, returning a structure containing the file descriptor of\n// the new socket.\nfunc IoctlKCMClone(fd int) (*KCMClone, error) {\n\tvar info KCMClone\n\tif err := ioctlPtr(fd, SIOCKCMCLONE, unsafe.Pointer(&info)); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &info, nil\n}\n\n// IoctlKCMAttach attaches a TCP socket and associated BPF program file\n// descriptor to a multiplexor.\nfunc IoctlKCMAttach(fd int, info KCMAttach) error {\n\treturn ioctlPtr(fd, SIOCKCMATTACH, unsafe.Pointer(&info))\n}\n\n// IoctlKCMUnattach unattaches a TCP socket file descriptor from a multiplexor.\nfunc IoctlKCMUnattach(fd int, info KCMUnattach) error {\n\treturn ioctlPtr(fd, SIOCKCMUNATTACH, unsafe.Pointer(&info))\n}\n\n// IoctlLoopGetStatus64 gets the status of the loop device associated with the\n// file descriptor fd using the LOOP_GET_STATUS64 operation.\nfunc IoctlLoopGetStatus64(fd int) (*LoopInfo64, error) {\n\tvar value LoopInfo64\n\tif err := ioctlPtr(fd, LOOP_GET_STATUS64, unsafe.Pointer(&value)); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &value, nil\n}\n\n// IoctlLoopSetStatus64 sets the status of the loop device associated with the\n// file descriptor fd using the LOOP_SET_STATUS64 operation.\nfunc IoctlLoopSetStatus64(fd int, value *LoopInfo64) error {\n\treturn ioctlPtr(fd, LOOP_SET_STATUS64, unsafe.Pointer(value))\n}\n\n// IoctlLoopConfigure configures all loop device parameters in a single step\nfunc IoctlLoopConfigure(fd int, value *LoopConfig) error {\n\treturn ioctlPtr(fd, LOOP_CONFIGURE, unsafe.Pointer(value))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ioctl_signed.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || solaris\n\npackage unix\n\nimport \"unsafe\"\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req int, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\n// IoctlSetPointerInt performs an ioctl operation which sets an\n// integer value on fd, using the specified request number. The ioctl\n// argument is called with a pointer to the integer value, rather than\n// passing the integer value directly.\nfunc IoctlSetPointerInt(fd int, req int, value int) error {\n\tv := int32(value)\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&v))\n}\n\n// IoctlSetString performs an ioctl operation which sets a string value\n// on fd, using the specified request number.\nfunc IoctlSetString(fd int, req int, value string) error {\n\tbs := append([]byte(value), 0)\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&bs[0]))\n}\n\n// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.\n//\n// To change fd's window size, the req argument should be TIOCSWINSZ.\nfunc IoctlSetWinsize(fd int, req int, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlSetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value will usually be TCSETA or TIOCSETA.\nfunc IoctlSetTermios(fd int, req int, value *Termios) error {\n\t// TODO: if we get the chance, remove the req parameter.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\n//\n// A few ioctl requests use the return value as an output parameter;\n// for those, IoctlRetInt should be used instead of this function.\nfunc IoctlGetInt(fd int, req int) (int, error) {\n\tvar value int\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req int) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req int) (*Termios, error) {\n\tvar value Termios\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ioctl_unsigned.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin || dragonfly || freebsd || hurd || linux || netbsd || openbsd\n\npackage unix\n\nimport \"unsafe\"\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req uint, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\n// IoctlSetPointerInt performs an ioctl operation which sets an\n// integer value on fd, using the specified request number. The ioctl\n// argument is called with a pointer to the integer value, rather than\n// passing the integer value directly.\nfunc IoctlSetPointerInt(fd int, req uint, value int) error {\n\tv := int32(value)\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&v))\n}\n\n// IoctlSetString performs an ioctl operation which sets a string value\n// on fd, using the specified request number.\nfunc IoctlSetString(fd int, req uint, value string) error {\n\tbs := append([]byte(value), 0)\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&bs[0]))\n}\n\n// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.\n//\n// To change fd's window size, the req argument should be TIOCSWINSZ.\nfunc IoctlSetWinsize(fd int, req uint, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlSetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value will usually be TCSETA or TIOCSETA.\nfunc IoctlSetTermios(fd int, req uint, value *Termios) error {\n\t// TODO: if we get the chance, remove the req parameter.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\n//\n// A few ioctl requests use the return value as an output parameter;\n// for those, IoctlRetInt should be used instead of this function.\nfunc IoctlGetInt(fd int, req uint) (int, error) {\n\tvar value int\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req uint) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req uint) (*Termios, error) {\n\tvar value Termios\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ioctl_zos.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req int, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\n// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.\n//\n// To change fd's window size, the req argument should be TIOCSWINSZ.\nfunc IoctlSetWinsize(fd int, req int, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlSetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value is expected to be TCSETS, TCSETSW, or TCSETSF\nfunc IoctlSetTermios(fd int, req int, value *Termios) error {\n\tif (req != TCSETS) && (req != TCSETSW) && (req != TCSETSF) {\n\t\treturn ENOSYS\n\t}\n\terr := Tcsetattr(fd, int(req), value)\n\truntime.KeepAlive(value)\n\treturn err\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\n//\n// A few ioctl requests use the return value as an output parameter;\n// for those, IoctlRetInt should be used instead of this function.\nfunc IoctlGetInt(fd int, req int) (int, error) {\n\tvar value int\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req int) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlGetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value is expected to be TCGETS\nfunc IoctlGetTermios(fd int, req int) (*Termios, error) {\n\tvar value Termios\n\tif req != TCGETS {\n\t\treturn &value, ENOSYS\n\t}\n\terr := Tcgetattr(fd, &value)\n\treturn &value, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mkall.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# This script runs or (given -n) prints suggested commands to generate files for\n# the Architecture/OS specified by the GOARCH and GOOS environment variables.\n# See README.md for more information about how the build system works.\n\nGOOSARCH=\"${GOOS}_${GOARCH}\"\n\n# defaults\nmksyscall=\"go run mksyscall.go\"\nmkerrors=\"./mkerrors.sh\"\nzerrors=\"zerrors_$GOOSARCH.go\"\nmksysctl=\"\"\nzsysctl=\"zsysctl_$GOOSARCH.go\"\nmksysnum=\nmktypes=\nmkasm=\nrun=\"sh\"\ncmd=\"\"\n\ncase \"$1\" in\n-syscalls)\n\tfor i in zsyscall*go\n\tdo\n\t\t# Run the command line that appears in the first line\n\t\t# of the generated file to regenerate it.\n\t\tsed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i\n\t\trm _$i\n\tdone\n\texit 0\n\t;;\n-n)\n\trun=\"cat\"\n\tcmd=\"echo\"\n\tshift\nesac\n\ncase \"$#\" in\n0)\n\t;;\n*)\n\techo 'usage: mkall.sh [-n]' 1>&2\n\texit 2\nesac\n\nif [[ \"$GOOS\" = \"linux\" ]]; then\n\t# Use the Docker-based build system\n\t# Files generated through docker (use $cmd so you can Ctl-C the build or run)\n\tset -e\n\t$cmd docker build --tag generate:$GOOS $GOOS\n\t$cmd docker run --rm --interactive --tty --volume $(cd -- \"$(dirname -- \"$0\")/..\" && pwd):/build generate:$GOOS\n\texit\nfi\n\nGOOSARCH_in=syscall_$GOOSARCH.go\ncase \"$GOOSARCH\" in\n_* | *_ | _)\n\techo 'undefined $GOOS_$GOARCH:' \"$GOOSARCH\" 1>&2\n\texit 1\n\t;;\naix_ppc)\n\tmkerrors=\"$mkerrors -maix32\"\n\tmksyscall=\"go run mksyscall_aix_ppc.go -aix\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\naix_ppc64)\n\tmkerrors=\"$mkerrors -maix64\"\n\tmksyscall=\"go run mksyscall_aix_ppc64.go -aix\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\ndarwin_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\tmkasm=\"go run mkasm.go\"\n\t;;\ndarwin_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\tmkasm=\"go run mkasm.go\"\n\t;;\ndragonfly_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -dragonfly\"\n\tmksysnum=\"go run mksysnum.go 'https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_386)\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"go run mksyscall.go -l32\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_arm)\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"go run mksyscall.go -l32 -arm\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nfreebsd_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nfreebsd_riscv64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nnetbsd_386)\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"go run mksyscall.go -l32 -netbsd\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nnetbsd_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -netbsd\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nnetbsd_arm)\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"go run mksyscall.go -l32 -netbsd -arm\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nnetbsd_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -netbsd\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_386)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"go run mksyscall.go -l32 -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_amd64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_arm)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"go run mksyscall.go -l32 -openbsd -arm -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_arm64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_mips64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_ppc64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_riscv64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nsolaris_amd64)\n\tmksyscall=\"go run mksyscall_solaris.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nillumos_amd64)\n        mksyscall=\"go run mksyscall_solaris.go\"\n\tmkerrors=\n\tmksysnum=\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\n*)\n\techo 'unrecognized $GOOS_$GOARCH: ' \"$GOOSARCH\" 1>&2\n\texit 1\n\t;;\nesac\n\n(\n\tif [ -n \"$mkerrors\" ]; then echo \"$mkerrors |gofmt >$zerrors\"; fi\n\tcase \"$GOOS\" in\n\t*)\n\t\tsyscall_goos=\"syscall_$GOOS.go\"\n\t\tcase \"$GOOS\" in\n\t\tdarwin | dragonfly | freebsd | netbsd | openbsd)\n\t\t\tsyscall_goos=\"syscall_bsd.go $syscall_goos\"\n\t\t\t;;\n\t\tesac\n\t\tif [ -n \"$mksyscall\" ]; then\n\t\t\tif [ \"$GOOSARCH\" == \"aix_ppc64\" ]; then\n\t\t\t\t# aix/ppc64 script generates files instead of writing to stdin.\n\t\t\t\techo \"$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_\"$GOOSARCH\"_gccgo.go && gofmt -w zsyscall_\"$GOOSARCH\"_gc.go \" ;\n\t\t\telif [ \"$GOOS\" == \"illumos\" ]; then\n\t\t\t        # illumos code generation requires a --illumos switch\n\t\t\t        echo \"$mksyscall -illumos -tags illumos,$GOARCH syscall_illumos.go |gofmt > zsyscall_illumos_$GOARCH.go\";\n\t\t\t        # illumos implies solaris, so solaris code generation is also required\n\t\t\t\techo \"$mksyscall -tags solaris,$GOARCH syscall_solaris.go syscall_solaris_$GOARCH.go |gofmt >zsyscall_solaris_$GOARCH.go\";\n\t\t\telse\n\t\t\t\techo \"$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go\";\n\t\t\tfi\n\t\tfi\n\tesac\n\tif [ -n \"$mksysctl\" ]; then echo \"$mksysctl |gofmt >$zsysctl\"; fi\n\tif [ -n \"$mksysnum\" ]; then echo \"$mksysnum |gofmt >zsysnum_$GOOSARCH.go\"; fi\n\tif [ -n \"$mktypes\" ]; then echo \"$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go\"; fi\n\tif [ -n \"$mkasm\" ]; then echo \"$mkasm $GOOS $GOARCH\"; fi\n) | $run\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mkerrors.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# Generate Go code listing errors and other #defined constant\n# values (ENAMETOOLONG etc.), by asking the preprocessor\n# about the definitions.\n\nunset LANG\nexport LC_ALL=C\nexport LC_CTYPE=C\n\nif test -z \"$GOARCH\" -o -z \"$GOOS\"; then\n\techo 1>&2 \"GOARCH or GOOS not defined in environment\"\n\texit 1\nfi\n\n# Check that we are using the new build system if we should\nif [[ \"$GOOS\" = \"linux\" ]] && [[ \"$GOLANG_SYS_BUILD\" != \"docker\" ]]; then\n\techo 1>&2 \"In the Docker based build system, mkerrors should not be called directly.\"\n\techo 1>&2 \"See README.md\"\n\texit 1\nfi\n\nif [[ \"$GOOS\" = \"aix\" ]]; then\n\tCC=${CC:-gcc}\nelse\n\tCC=${CC:-cc}\nfi\n\nif [[ \"$GOOS\" = \"solaris\" ]]; then\n\t# Assumes GNU versions of utilities in PATH.\n\texport PATH=/usr/gnu/bin:$PATH\nfi\n\nuname=$(uname)\n\nincludes_AIX='\n#include <net/if.h>\n#include <net/netopt.h>\n#include <netinet/ip_mroute.h>\n#include <sys/protosw.h>\n#include <sys/stropts.h>\n#include <sys/mman.h>\n#include <sys/poll.h>\n#include <sys/select.h>\n#include <sys/termio.h>\n#include <termios.h>\n#include <fcntl.h>\n\n#define AF_LOCAL AF_UNIX\n'\n\nincludes_Darwin='\n#define _DARWIN_C_SOURCE\n#define KERNEL 1\n#define _DARWIN_USE_64_BIT_INODE\n#define __APPLE_USE_RFC_3542\n#include <stdint.h>\n#include <sys/stdio.h>\n#include <sys/attr.h>\n#include <sys/clonefile.h>\n#include <sys/kern_control.h>\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/ptrace.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/un.h>\n#include <sys/sockio.h>\n#include <sys/sys_domain.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <sys/xattr.h>\n#include <sys/vsock.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/ip.h>\n#include <termios.h>\n\n// for backwards compatibility because moved TIOCREMOTE to Kernel.framework after MacOSX12.0.sdk.\n#define TIOCREMOTE 0x80047469\n'\n\nincludes_DragonFly='\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_clone.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <termios.h>\n#include <netinet/ip.h>\n#include <net/ip_mroute/ip_mroute.h>\n'\n\nincludes_FreeBSD='\n#include <sys/capsicum.h>\n#include <sys/param.h>\n#include <sys/types.h>\n#include <sys/disk.h>\n#include <sys/event.h>\n#include <sys/sched.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/un.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <sys/ptrace.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <termios.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <sys/extattr.h>\n\n#if __FreeBSD__ >= 10\n#define IFT_CARP\t0xf8\t// IFT_CARP is deprecated in FreeBSD 10\n#undef SIOCAIFADDR\n#define SIOCAIFADDR\t_IOW(105, 26, struct oifaliasreq)\t// ifaliasreq contains if_data\n#undef SIOCSIFPHYADDR\n#define SIOCSIFPHYADDR\t_IOW(105, 70, struct oifaliasreq)\t// ifaliasreq contains if_data\n#endif\n'\n\nincludes_Linux='\n#define _LARGEFILE_SOURCE\n#define _LARGEFILE64_SOURCE\n#ifndef __LP64__\n#define _FILE_OFFSET_BITS 64\n#endif\n#define _GNU_SOURCE\n\n// See the description in unix/linux/types.go\n#if defined(__ARM_EABI__) || \\\n\t(defined(__mips__) && (_MIPS_SIM == _ABIO32)) || \\\n\t(defined(__powerpc__) && (!defined(__powerpc64__)))\n# ifdef   _TIME_BITS\n#  undef  _TIME_BITS\n# endif\n# define  _TIME_BITS 32\n#endif\n\n// <sys/ioctl.h> is broken on powerpc64, as it fails to include definitions of\n// these structures. We just include them copied from <bits/termios.h>.\n#if defined(__powerpc__)\nstruct sgttyb {\n        char    sg_ispeed;\n        char    sg_ospeed;\n        char    sg_erase;\n        char    sg_kill;\n        short   sg_flags;\n};\n\nstruct tchars {\n        char    t_intrc;\n        char    t_quitc;\n        char    t_startc;\n        char    t_stopc;\n        char    t_eofc;\n        char    t_brkc;\n};\n\nstruct ltchars {\n        char    t_suspc;\n        char    t_dsuspc;\n        char    t_rprntc;\n        char    t_flushc;\n        char    t_werasc;\n        char    t_lnextc;\n};\n#endif\n\n#include <bits/sockaddr.h>\n#include <sys/epoll.h>\n#include <sys/eventfd.h>\n#include <sys/inotify.h>\n#include <sys/ioctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/prctl.h>\n#include <sys/stat.h>\n#include <sys/types.h>\n#include <sys/time.h>\n#include <sys/select.h>\n#include <sys/signalfd.h>\n#include <sys/socket.h>\n#include <sys/timerfd.h>\n#include <sys/uio.h>\n#include <sys/xattr.h>\n#include <netinet/udp.h>\n#include <linux/audit.h>\n#include <linux/bpf.h>\n#include <linux/can.h>\n#include <linux/can/error.h>\n#include <linux/can/netlink.h>\n#include <linux/can/raw.h>\n#include <linux/capability.h>\n#include <linux/cryptouser.h>\n#include <linux/devlink.h>\n#include <linux/dm-ioctl.h>\n#include <linux/elf.h>\n#include <linux/errqueue.h>\n#include <linux/ethtool_netlink.h>\n#include <linux/falloc.h>\n#include <linux/fanotify.h>\n#include <linux/fib_rules.h>\n#include <linux/filter.h>\n#include <linux/fs.h>\n#include <linux/fscrypt.h>\n#include <linux/fsverity.h>\n#include <linux/genetlink.h>\n#include <linux/hdreg.h>\n#include <linux/hidraw.h>\n#include <linux/if.h>\n#include <linux/if_addr.h>\n#include <linux/if_alg.h>\n#include <linux/if_arp.h>\n#include <linux/if_ether.h>\n#include <linux/if_ppp.h>\n#include <linux/if_tun.h>\n#include <linux/if_packet.h>\n#include <linux/if_xdp.h>\n#include <linux/input.h>\n#include <linux/kcm.h>\n#include <linux/kexec.h>\n#include <linux/keyctl.h>\n#include <linux/landlock.h>\n#include <linux/loop.h>\n#include <linux/lwtunnel.h>\n#include <linux/magic.h>\n#include <linux/mei.h>\n#include <linux/memfd.h>\n#include <linux/module.h>\n#include <linux/mount.h>\n#include <linux/netfilter/nfnetlink.h>\n#include <linux/netfilter/nf_tables.h>\n#include <linux/netlink.h>\n#include <linux/net_namespace.h>\n#include <linux/nfc.h>\n#include <linux/nsfs.h>\n#include <linux/perf_event.h>\n#include <linux/pps.h>\n#include <linux/ptp_clock.h>\n#include <linux/ptrace.h>\n#include <linux/random.h>\n#include <linux/reboot.h>\n#include <linux/rtc.h>\n#include <linux/rtnetlink.h>\n#include <linux/sched.h>\n#include <linux/seccomp.h>\n#include <linux/serial.h>\n#include <linux/sock_diag.h>\n#include <linux/sockios.h>\n#include <linux/taskstats.h>\n#include <linux/tipc.h>\n#include <linux/vm_sockets.h>\n#include <linux/wait.h>\n#include <linux/watchdog.h>\n#include <linux/wireguard.h>\n\n#include <mtd/ubi-user.h>\n#include <mtd/mtd-user.h>\n#include <net/route.h>\n\n#if defined(__sparc__)\n// On sparc{,64}, the kernel defines struct termios2 itself which clashes with the\n// definition in glibc. As only the error constants are needed here, include the\n// generic termibits.h (which is included by termbits.h on sparc).\n#include <asm-generic/termbits.h>\n#else\n#include <asm/termbits.h>\n#endif\n\n#ifndef PTRACE_GETREGS\n#define PTRACE_GETREGS\t0xc\n#endif\n\n#ifndef PTRACE_SETREGS\n#define PTRACE_SETREGS\t0xd\n#endif\n\n#ifdef SOL_BLUETOOTH\n// SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h\n// but it is already in bluetooth_linux.go\n#undef SOL_BLUETOOTH\n#endif\n\n// Certain constants are missing from the fs/crypto UAPI\n#define FS_KEY_DESC_PREFIX              \"fscrypt:\"\n#define FS_KEY_DESC_PREFIX_SIZE         8\n#define FS_MAX_KEY_SIZE                 64\n\n// The code generator produces -0x1 for (~0), but an unsigned value is necessary\n// for the tipc_subscr timeout __u32 field.\n#undef TIPC_WAIT_FOREVER\n#define TIPC_WAIT_FOREVER 0xffffffff\n\n// Copied from linux/netfilter/nf_nat.h\n// Including linux/netfilter/nf_nat.h here causes conflicts between linux/in.h\n// and netinet/in.h.\n#define NF_NAT_RANGE_MAP_IPS\t\t\t(1 << 0)\n#define NF_NAT_RANGE_PROTO_SPECIFIED\t\t(1 << 1)\n#define NF_NAT_RANGE_PROTO_RANDOM\t\t(1 << 2)\n#define NF_NAT_RANGE_PERSISTENT\t\t\t(1 << 3)\n#define NF_NAT_RANGE_PROTO_RANDOM_FULLY\t\t(1 << 4)\n#define NF_NAT_RANGE_PROTO_OFFSET\t\t(1 << 5)\n#define NF_NAT_RANGE_NETMAP\t\t\t(1 << 6)\n#define NF_NAT_RANGE_PROTO_RANDOM_ALL\t\t\\\n\t(NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY)\n#define NF_NAT_RANGE_MASK\t\t\t\t\t\\\n\t(NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED |\t\\\n\t NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT |\t\\\n\t NF_NAT_RANGE_PROTO_RANDOM_FULLY | NF_NAT_RANGE_PROTO_OFFSET | \\\n\t NF_NAT_RANGE_NETMAP)\n\n// Copied from linux/hid.h.\n// Keep in sync with the size of the referenced fields.\n#define _HIDIOCGRAWNAME_LEN\t128 // sizeof_field(struct hid_device, name)\n#define _HIDIOCGRAWPHYS_LEN\t64  // sizeof_field(struct hid_device, phys)\n#define _HIDIOCGRAWUNIQ_LEN\t64  // sizeof_field(struct hid_device, uniq)\n\n#define _HIDIOCGRAWNAME\t\tHIDIOCGRAWNAME(_HIDIOCGRAWNAME_LEN)\n#define _HIDIOCGRAWPHYS\t\tHIDIOCGRAWPHYS(_HIDIOCGRAWPHYS_LEN)\n#define _HIDIOCGRAWUNIQ\t\tHIDIOCGRAWUNIQ(_HIDIOCGRAWUNIQ_LEN)\n\n// Renamed in v6.16, commit c6d732c38f93 (\"net: ethtool: remove duplicate defines for family info\")\n#define ETHTOOL_FAMILY_NAME\tETHTOOL_GENL_NAME\n#define ETHTOOL_FAMILY_VERSION\tETHTOOL_GENL_VERSION\n'\n\nincludes_NetBSD='\n#include <sys/types.h>\n#include <sys/param.h>\n#include <sys/event.h>\n#include <sys/extattr.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/sched.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/sysctl.h>\n#include <sys/termios.h>\n#include <sys/ttycom.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/in_systm.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <netinet/if_ether.h>\n\n// Needed since <sys/param.h> refers to it...\n#define schedppq 1\n'\n\nincludes_OpenBSD='\n#include <sys/types.h>\n#include <sys/param.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/select.h>\n#include <sys/sched.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/termios.h>\n#include <sys/ttycom.h>\n#include <sys/unistd.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/if_var.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/in_systm.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <netinet/if_ether.h>\n#include <net/if_bridge.h>\n\n// We keep some constants not supported in OpenBSD 5.5 and beyond for\n// the promise of compatibility.\n#define EMUL_ENABLED\t\t0x1\n#define EMUL_NATIVE\t\t0x2\n#define IPV6_FAITH\t\t0x1d\n#define IPV6_OPTIONS\t\t0x1\n#define IPV6_RTHDR_STRICT\t0x1\n#define IPV6_SOCKOPT_RESERVED1\t0x3\n#define SIOCGIFGENERIC\t\t0xc020693a\n#define SIOCSIFGENERIC\t\t0x80206939\n#define WALTSIG\t\t\t0x4\n'\n\nincludes_SunOS='\n#include <limits.h>\n#include <sys/types.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/stream.h>\n#include <sys/mman.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <sys/mkdev.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_arp.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/icmp6.h>\n#include <netinet/in.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <termios.h>\n'\n\n\nincludes='\n#include <sys/types.h>\n#include <sys/file.h>\n#include <fcntl.h>\n#include <dirent.h>\n#include <sys/socket.h>\n#include <netinet/in.h>\n#include <netinet/ip.h>\n#include <netinet/ip6.h>\n#include <netinet/tcp.h>\n#include <errno.h>\n#include <sys/signal.h>\n#include <signal.h>\n#include <sys/resource.h>\n#include <time.h>\n'\nccflags=\"$@\"\n\n# Write go tool cgo -godefs input.\n(\n\techo package unix\n\techo\n\techo '/*'\n\tindirect=\"includes_$(uname)\"\n\techo \"${!indirect} $includes\"\n\techo '*/'\n\techo 'import \"C\"'\n\techo 'import \"syscall\"'\n\techo\n\techo 'const ('\n\n\t# The gcc command line prints all the #defines\n\t# it encounters while processing the input\n\techo \"${!indirect} $includes\" | $CC -x c - -E -dM $ccflags |\n\tawk '\n\t\t$1 != \"#define\" || $2 ~ /\\(/ || $3 == \"\" {next}\n\n\t\t$2 ~ /^E([ABCD]X|[BIS]P|[SD]I|S|FL)$/ {next}  # 386 registers\n\t\t$2 ~ /^(SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))/ {next}\n\t\t$2 ~ /^(SCM_SRCRT)$/ {next}\n\t\t$2 ~ /^(MAP_FAILED)$/ {next}\n\t\t$2 ~ /^ELF_.*$/ {next}# <asm/elf.h> contains ELF_ARCH, etc.\n\n\t\t$2 ~ /^EXTATTR_NAMESPACE_NAMES/ ||\n\t\t$2 ~ /^EXTATTR_NAMESPACE_[A-Z]+_STRING/ {next}\n\n\t\t$2 !~ /^ECCAPBITS/ &&\n\t\t$2 !~ /^ETH_/ &&\n\t\t$2 !~ /^EPROC_/ &&\n\t\t$2 !~ /^EQUIV_/ &&\n\t\t$2 !~ /^EXPR_/ &&\n\t\t$2 !~ /^EVIOC/ &&\n\t\t$2 ~ /^E[A-Z0-9_]+$/ ||\n\t\t$2 ~ /^B[0-9_]+$/ ||\n\t\t$2 ~ /^(OLD|NEW)DEV$/ ||\n\t\t$2 == \"BOTHER\" ||\n\t\t$2 ~ /^CI?BAUD(EX)?$/ ||\n\t\t$2 == \"IBSHIFT\" ||\n\t\t$2 ~ /^V[A-Z0-9]+$/ ||\n\t\t$2 ~ /^CS[A-Z0-9]/ ||\n\t\t$2 ~ /^I(SIG|CANON|CRNL|UCLC|EXTEN|MAXBEL|STRIP|UTF8)$/ ||\n\t\t$2 ~ /^IGN/ ||\n\t\t$2 ~ /^IX(ON|ANY|OFF)$/ ||\n\t\t$2 ~ /^IN(LCR|PCK)$/ ||\n\t\t$2 !~ \"X86_CR3_PCID_NOFLUSH\" &&\n\t\t$2 ~ /(^FLU?SH)|(FLU?SH$)/ ||\n\t\t$2 ~ /^C(LOCAL|READ|MSPAR|RTSCTS)$/ ||\n\t\t$2 == \"BRKINT\" ||\n\t\t$2 == \"HUPCL\" ||\n\t\t$2 == \"PENDIN\" ||\n\t\t$2 == \"TOSTOP\" ||\n\t\t$2 == \"XCASE\" ||\n\t\t$2 == \"ALTWERASE\" ||\n\t\t$2 == \"NOKERNINFO\" ||\n\t\t$2 == \"NFDBITS\" ||\n\t\t$2 ~ /^PAR/ ||\n\t\t$2 ~ /^SIG[^_]/ ||\n\t\t$2 ~ /^O[CNPFPL][A-Z]+[^_][A-Z]+$/ ||\n\t\t$2 ~ /^(NL|CR|TAB|BS|VT|FF)DLY$/ ||\n\t\t$2 ~ /^(NL|CR|TAB|BS|VT|FF)[0-9]$/ ||\n\t\t$2 ~ /^(DT|EI|ELF|EV|NN|NT|PF|SHF|SHN|SHT|STB|STT|VER)_/ ||\n\t\t$2 ~ /^O?XTABS$/ ||\n\t\t$2 ~ /^TC[IO](ON|OFF)$/ ||\n\t\t$2 ~ /^IN_/ ||\n\t\t$2 ~ /^KCM/ ||\n\t\t$2 ~ /^LANDLOCK_/ ||\n\t\t$2 ~ /^LOCK_(SH|EX|NB|UN)$/ ||\n\t\t$2 ~ /^LO_(KEY|NAME)_SIZE$/ ||\n\t\t$2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ ||\n\t\t$2 == \"LOOP_CONFIGURE\" ||\n\t\t$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ ||\n\t\t$2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ ||\n\t\t$2 ~ /^NFC_.*_(MAX)?SIZE$/ ||\n\t\t$2 ~ /^PTP_/ ||\n\t\t$2 ~ /^RAW_PAYLOAD_/ ||\n\t\t$2 ~ /^[US]F_/ ||\n\t\t$2 ~ /^TP_STATUS_/ ||\n\t\t$2 ~ /^FALLOC_/ ||\n\t\t$2 ~ /^ICMPV?6?_(FILTER|SEC)/ ||\n\t\t$2 == \"SOMAXCONN\" ||\n\t\t$2 == \"NAME_MAX\" ||\n\t\t$2 == \"IFNAMSIZ\" ||\n\t\t$2 ~ /^CTL_(HW|KERN|MAXNAME|NET|QUERY)$/ ||\n\t\t$2 ~ /^KERN_(HOSTNAME|OS(RELEASE|TYPE)|VERSION)$/ ||\n\t\t$2 ~ /^HW_MACHINE$/ ||\n\t\t$2 ~ /^SYSCTL_VERS/ ||\n\t\t$2 !~ \"MNT_BITS\" &&\n\t\t$2 ~ /^(MS|MNT|MOUNT|UMOUNT)_/ ||\n\t\t$2 ~ /^NS_GET_/ ||\n\t\t$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||\n\t\t$2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT|PIOD|TFD)_/ ||\n\t\t$2 ~ /^KEXEC_/ ||\n\t\t$2 ~ /^LINUX_REBOOT_CMD_/ ||\n\t\t$2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||\n\t\t$2 ~ /^MODULE_INIT_/ ||\n\t\t$2 !~ \"NLA_TYPE_MASK\" &&\n\t\t$2 !~ /^RTC_VL_(ACCURACY|BACKUP|DATA)/ &&\n\t\t$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ ||\n\t\t$2 ~ /^SOCK_|SK_DIAG_|SKNLGRP_$/ ||\n\t\t$2 ~ /^(CONNECT|SAE)_/ ||\n\t\t$2 ~ /^FIORDCHK$/ ||\n\t\t$2 ~ /^SIOC/ ||\n\t\t$2 ~ /^TIOC/ ||\n\t\t$2 ~ /^TCGET/ ||\n\t\t$2 ~ /^TCSET/ ||\n\t\t$2 ~ /^TC(FLSH|SBRKP?|XONC)$/ ||\n\t\t$2 !~ \"RTF_BITS\" &&\n\t\t$2 ~ /^(IFF|IFT|NET_RT|RTM(GRP)?|RTF|RTV|RTA|RTAX)_/ ||\n\t\t$2 ~ /^BIOC/ ||\n\t\t$2 ~ /^DIOC/ ||\n\t\t$2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ ||\n\t\t$2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ ||\n\t\t$2 ~ /^PRIO_(PROCESS|PGRP|USER)/ ||\n\t\t$2 ~ /^CLONE_[A-Z_]+/ ||\n\t\t$2 !~ /^(BPF_TIMEVAL|BPF_FIB_LOOKUP_[A-Z]+|BPF_F_LINK)$/ &&\n\t\t$2 ~ /^(BPF|DLT)_/ ||\n\t\t$2 ~ /^AUDIT_/ ||\n\t\t$2 ~ /^(CLOCK|TIMER)_/ ||\n\t\t$2 ~ /^CAN_/ ||\n\t\t$2 ~ /^CAP_/ ||\n\t\t$2 ~ /^CP_/ ||\n\t\t$2 ~ /^CPUSTATES$/ ||\n\t\t$2 ~ /^CTLIOCGINFO$/ ||\n\t\t$2 ~ /^ALG_/ ||\n\t\t$2 ~ /^FI(CLONE|DEDUPERANGE)/ ||\n\t\t$2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE)/ ||\n\t\t$2 ~ /^FS_IOC_.*(ENCRYPTION|VERITY|[GS]ETFLAGS)/ ||\n\t\t$2 ~ /^FS_VERITY_/ ||\n\t\t$2 ~ /^FSCRYPT_/ ||\n\t\t$2 ~ /^DM_/ ||\n\t\t$2 ~ /^GRND_/ ||\n\t\t$2 ~ /^RND/ ||\n\t\t$2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ ||\n\t\t$2 ~ /^KEYCTL_/ ||\n\t\t$2 ~ /^PERF_/ ||\n\t\t$2 ~ /^SECCOMP_/ ||\n\t\t$2 ~ /^SEEK_/ ||\n\t\t$2 ~ /^SCHED_/ ||\n\t\t$2 ~ /^SPLICE_/ ||\n\t\t$2 ~ /^SYNC_FILE_RANGE_/ ||\n\t\t$2 !~ /IOC_MAGIC/ &&\n\t\t$2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ ||\n\t\t$2 ~ /^(VM|VMADDR)_/ ||\n\t\t$2 ~ /^(IOCTL_VM_SOCKETS_|IOCTL_MEI_)/ ||\n\t\t$2 ~ /^(TASKSTATS|TS)_/ ||\n\t\t$2 ~ /^CGROUPSTATS_/ ||\n\t\t$2 ~ /^GENL_/ ||\n\t\t$2 ~ /^STATX_/ ||\n\t\t$2 ~ /^RENAME/ ||\n\t\t$2 ~ /^UBI_IOC[A-Z]/ ||\n\t\t$2 ~ /^UTIME_/ ||\n\t\t$2 ~ /^XATTR_(CREATE|REPLACE|NO(DEFAULT|FOLLOW|SECURITY)|SHOWCOMPRESSION)/ ||\n\t\t$2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ ||\n\t\t$2 ~ /^FSOPT_/ ||\n\t\t$2 ~ /^WDIO[CFS]_/ ||\n\t\t$2 ~ /^NFN/ ||\n\t\t$2 !~ /^NFT_META_IIFTYPE/ &&\n\t\t$2 ~ /^NFT_/ ||\n\t\t$2 ~ /^NF_NAT_/ ||\n\t\t$2 ~ /^XDP_/ ||\n\t\t$2 ~ /^RWF_/ ||\n\t\t$2 ~ /^(HDIO|WIN|SMART)_/ ||\n\t\t$2 ~ /^CRYPTO_/ ||\n\t\t$2 ~ /^TIPC_/ ||\n\t\t$2 !~  \"DEVLINK_RELOAD_LIMITS_VALID_MASK\" &&\n\t\t$2 ~ /^DEVLINK_/ ||\n\t\t$2 ~ /^ETHTOOL_/ ||\n\t\t$2 ~ /^LWTUNNEL_IP/ ||\n\t\t$2 ~ /^ITIMER_/ ||\n\t\t$2 !~ \"WMESGLEN\" &&\n\t\t$2 ~ /^W[A-Z0-9]+$/ ||\n\t\t$2 ~ /^P_/ ||\n\t\t$2 ~/^PPPIOC/ ||\n\t\t$2 ~ /^FAN_|FANOTIFY_/ ||\n\t\t$2 == \"HID_MAX_DESCRIPTOR_SIZE\" ||\n\t\t$2 ~ /^_?HIDIOC/ ||\n\t\t$2 ~ /^BUS_(USB|HIL|BLUETOOTH|VIRTUAL)$/ ||\n\t\t$2 ~ /^MTD/ ||\n\t\t$2 ~ /^OTP/ ||\n\t\t$2 ~ /^MEM/ ||\n\t\t$2 ~ /^WG/ ||\n\t\t$2 ~ /^FIB_RULE_/ ||\n\t\t$2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE|IOMIN$|IOOPT$|ALIGNOFF$|DISCARD|ROTATIONAL$|ZEROOUT$|GETDISKSEQ$)/ {printf(\"\\t%s = C.%s\\n\", $2, $2)}\n\t\t$2 ~ /^__WCOREFLAG$/ {next}\n\t\t$2 ~ /^__W[A-Z0-9]+$/ {printf(\"\\t%s = C.%s\\n\", substr($2,3), $2)}\n\n\t\t{next}\n\t' | sort\n\n\techo ')'\n) >_const.go\n\n# Pull out the error names for later.\nerrors=$(\n\techo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' |\n\tsort\n)\n\n# Pull out the signal names for later.\nsignals=$(\n\techo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' |\n\tgrep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' |\n\tsort\n)\n\n# Again, writing regexps to a file.\necho '#include <errno.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^E[A-Z0-9_]+$/ { print \"^\\t\" $2 \"[ \\t]*=\" }' |\n\tsort >_error.grep\necho '#include <signal.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^SIG[A-Z0-9]+$/ { print \"^\\t\" $2 \"[ \\t]*=\" }' |\n\tgrep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' |\n\tsort >_signal.grep\n\necho '// mkerrors.sh' \"$@\"\necho '// Code generated by the command above; see README.md. DO NOT EDIT.'\necho\necho \"//go:build ${GOARCH} && ${GOOS}\"\necho\ngo tool cgo -godefs -- \"$@\" _const.go >_error.out\ncat _error.out | grep -vf _error.grep | grep -vf _signal.grep\necho\necho '// Errors'\necho 'const ('\ncat _error.out | grep -f _error.grep | sed 's/=\\(.*\\)/= syscall.Errno(\\1)/'\necho ')'\n\necho\necho '// Signals'\necho 'const ('\ncat _error.out | grep -f _signal.grep | sed 's/=\\(.*\\)/= syscall.Signal(\\1)/'\necho ')'\n\n# Run C program to print error and syscall strings.\n(\n\techo -E \"\n#include <stdio.h>\n#include <stdlib.h>\n#include <errno.h>\n#include <ctype.h>\n#include <string.h>\n#include <signal.h>\n\n#define nelem(x) (sizeof(x)/sizeof((x)[0]))\n\nenum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below\n\nstruct tuple {\n\tint num;\n\tconst char *name;\n};\n\nstruct tuple errors[] = {\n\"\n\tfor i in $errors\n\tdo\n\t\techo -E '\t{'$i', \"'$i'\" },'\n\tdone\n\n\techo -E \"\n};\n\nstruct tuple signals[] = {\n\"\n\tfor i in $signals\n\tdo\n\t\techo -E '\t{'$i', \"'$i'\" },'\n\tdone\n\n\t# Use -E because on some systems bash builtin interprets \\n itself.\n\techo -E '\n};\n\nstatic int\ntuplecmp(const void *a, const void *b)\n{\n\treturn ((struct tuple *)a)->num - ((struct tuple *)b)->num;\n}\n\nint\nmain(void)\n{\n\tint i, e;\n\tchar buf[1024], *p;\n\n\tprintf(\"\\n\\n// Error table\\n\");\n\tprintf(\"var errorList = [...]struct {\\n\");\n\tprintf(\"\\tnum  syscall.Errno\\n\");\n\tprintf(\"\\tname string\\n\");\n\tprintf(\"\\tdesc string\\n\");\n\tprintf(\"} {\\n\");\n\tqsort(errors, nelem(errors), sizeof errors[0], tuplecmp);\n\tfor(i=0; i<nelem(errors); i++) {\n\t\te = errors[i].num;\n\t\tif(i > 0 && errors[i-1].num == e)\n\t\t\tcontinue;\n\t\tstrncpy(buf, strerror(e), sizeof(buf) - 1);\n\t\tbuf[sizeof(buf) - 1] = '\\0';\n\t\t// lowercase first letter: Bad -> bad, but STREAM -> STREAM.\n\t\tif(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)\n\t\t\tbuf[0] += a - A;\n\t\tprintf(\"\\t{ %d, \\\"%s\\\", \\\"%s\\\" },\\n\", e, errors[i].name, buf);\n\t}\n\tprintf(\"}\\n\\n\");\n\n\tprintf(\"\\n\\n// Signal table\\n\");\n\tprintf(\"var signalList = [...]struct {\\n\");\n\tprintf(\"\\tnum  syscall.Signal\\n\");\n\tprintf(\"\\tname string\\n\");\n\tprintf(\"\\tdesc string\\n\");\n\tprintf(\"} {\\n\");\n\tqsort(signals, nelem(signals), sizeof signals[0], tuplecmp);\n\tfor(i=0; i<nelem(signals); i++) {\n\t\te = signals[i].num;\n\t\tif(i > 0 && signals[i-1].num == e)\n\t\t\tcontinue;\n\t\tstrncpy(buf, strsignal(e), sizeof(buf) - 1);\n\t\tbuf[sizeof(buf) - 1] = '\\0';\n\t\t// lowercase first letter: Bad -> bad, but STREAM -> STREAM.\n\t\tif(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)\n\t\t\tbuf[0] += a - A;\n\t\t// cut trailing : number.\n\t\tp = strrchr(buf, \":\"[0]);\n\t\tif(p)\n\t\t\t*p = '\\0';\n\t\tprintf(\"\\t{ %d, \\\"%s\\\", \\\"%s\\\" },\\n\", e, signals[i].name, buf);\n\t}\n\tprintf(\"}\\n\\n\");\n\n\treturn 0;\n}\n\n'\n) >_errors.c\n\n$CC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.go _error.grep _signal.grep _error.out\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mmap_nomremap.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || openbsd || solaris || zos\n\npackage unix\n\nvar mapper = &mmapper{\n\tactive: make(map[*byte][]byte),\n\tmmap:   mmap,\n\tmunmap: munmap,\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mremap.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux || netbsd\n\npackage unix\n\nimport \"unsafe\"\n\ntype mremapMmapper struct {\n\tmmapper\n\tmremap func(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error)\n}\n\nvar mapper = &mremapMmapper{\n\tmmapper: mmapper{\n\t\tactive: make(map[*byte][]byte),\n\t\tmmap:   mmap,\n\t\tmunmap: munmap,\n\t},\n\tmremap: mremap,\n}\n\nfunc (m *mremapMmapper) Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) {\n\tif newLength <= 0 || len(oldData) == 0 || len(oldData) != cap(oldData) || flags&mremapFixed != 0 {\n\t\treturn nil, EINVAL\n\t}\n\n\tpOld := &oldData[cap(oldData)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tbOld := m.active[pOld]\n\tif bOld == nil || &bOld[0] != &oldData[0] {\n\t\treturn nil, EINVAL\n\t}\n\tnewAddr, errno := m.mremap(uintptr(unsafe.Pointer(&bOld[0])), uintptr(len(bOld)), uintptr(newLength), flags, 0)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\tbNew := unsafe.Slice((*byte)(unsafe.Pointer(newAddr)), newLength)\n\tpNew := &bNew[cap(bNew)-1]\n\tif flags&mremapDontunmap == 0 {\n\t\tdelete(m.active, pOld)\n\t}\n\tm.active[pNew] = bNew\n\treturn bNew, nil\n}\n\nfunc Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) {\n\treturn mapper.Mremap(oldData, newLength, flags)\n}\n\nfunc MremapPtr(oldAddr unsafe.Pointer, oldSize uintptr, newAddr unsafe.Pointer, newSize uintptr, flags int) (ret unsafe.Pointer, err error) {\n\txaddr, err := mapper.mremap(uintptr(oldAddr), oldSize, newSize, flags, uintptr(newAddr))\n\treturn unsafe.Pointer(xaddr), err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/pagesize_unix.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// For Unix, get the pagesize from the runtime.\n\npackage unix\n\nimport \"syscall\"\n\nfunc Getpagesize() int {\n\treturn syscall.Getpagesize()\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/pledge_openbsd.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n)\n\n// Pledge implements the pledge syscall.\n//\n// This changes both the promises and execpromises; use PledgePromises or\n// PledgeExecpromises to only change the promises or execpromises\n// respectively.\n//\n// For more information see pledge(2).\nfunc Pledge(promises, execpromises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\tpptr, err := BytePtrFromString(promises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\texptr, err := BytePtrFromString(execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(pptr, exptr)\n}\n\n// PledgePromises implements the pledge syscall.\n//\n// This changes the promises and leaves the execpromises untouched.\n//\n// For more information see pledge(2).\nfunc PledgePromises(promises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\tpptr, err := BytePtrFromString(promises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(pptr, nil)\n}\n\n// PledgeExecpromises implements the pledge syscall.\n//\n// This changes the execpromises and leaves the promises untouched.\n//\n// For more information see pledge(2).\nfunc PledgeExecpromises(execpromises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\texptr, err := BytePtrFromString(execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(nil, exptr)\n}\n\n// majmin returns major and minor version number for an OpenBSD system.\nfunc majmin() (major int, minor int, err error) {\n\tvar v Utsname\n\terr = Uname(&v)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tmajor, err = strconv.Atoi(string(v.Release[0]))\n\tif err != nil {\n\t\terr = errors.New(\"cannot parse major version number returned by uname\")\n\t\treturn\n\t}\n\n\tminor, err = strconv.Atoi(string(v.Release[2]))\n\tif err != nil {\n\t\terr = errors.New(\"cannot parse minor version number returned by uname\")\n\t\treturn\n\t}\n\n\treturn\n}\n\n// pledgeAvailable checks for availability of the pledge(2) syscall\n// based on the running OpenBSD version.\nfunc pledgeAvailable() error {\n\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Require OpenBSD 6.4 as a minimum.\n\tif maj < 6 || (maj == 6 && min <= 3) {\n\t\treturn fmt.Errorf(\"cannot call Pledge on OpenBSD %d.%d\", maj, min)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ptrace_darwin.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin && !ios\n\npackage unix\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) error {\n\treturn ptrace1(request, pid, addr, data)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ptrace_ios.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build ios\n\npackage unix\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\treturn ENOTSUP\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/race.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin && race) || (linux && race) || (freebsd && race)\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\nconst raceenabled = true\n\nfunc raceAcquire(addr unsafe.Pointer) {\n\truntime.RaceAcquire(addr)\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n\truntime.RaceReleaseMerge(addr)\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n\truntime.RaceReadRange(addr, len)\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n\truntime.RaceWriteRange(addr, len)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/race0.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || (darwin && !race) || (linux && !race) || (freebsd && !race) || netbsd || openbsd || solaris || dragonfly || zos\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nconst raceenabled = false\n\nfunc raceAcquire(addr unsafe.Pointer) {\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/readdirent_getdents.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || dragonfly || freebsd || linux || netbsd || openbsd\n\npackage unix\n\n// ReadDirent reads directory entries from fd and writes them into buf.\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\treturn Getdents(fd, buf)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/readdirent_getdirentries.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin || zos\n\npackage unix\n\nimport \"unsafe\"\n\n// ReadDirent reads directory entries from fd and writes them into buf.\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\t// Final argument is (basep *uintptr) and the syscall doesn't take nil.\n\t// 64 bits should be enough. (32 bits isn't even on 386). Since the\n\t// actual system call is getdirentries64, 64 is a good guess.\n\t// TODO(rsc): Can we use a single global basep for all calls?\n\tvar base = (*uintptr)(unsafe.Pointer(new(uint64)))\n\treturn Getdirentries(fd, buf, base)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\n// Round the length of a raw sockaddr up to align it properly.\nfunc cmsgAlignOf(salen int) int {\n\tsalign := SizeofPtr\n\tif SizeofPtr == 8 && !supportsABI(_dragonflyABIChangeVersion) {\n\t\t// 64-bit Dragonfly before the September 2019 ABI changes still requires\n\t\t// 32-bit aligned access to network subsystem.\n\t\tsalign = 4\n\t}\n\treturn (salen + salign - 1) & ^(salign - 1)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sockcmsg_linux.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Socket control messages\n\npackage unix\n\nimport \"unsafe\"\n\n// UnixCredentials encodes credentials into a socket control message\n// for sending to another process. This can be used for\n// authentication.\nfunc UnixCredentials(ucred *Ucred) []byte {\n\tb := make([]byte, CmsgSpace(SizeofUcred))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_CREDENTIALS\n\th.SetLen(CmsgLen(SizeofUcred))\n\t*(*Ucred)(h.data(0)) = *ucred\n\treturn b\n}\n\n// ParseUnixCredentials decodes a socket control message that contains\n// credentials in a Ucred structure. To receive such a message, the\n// SO_PASSCRED option must be enabled on the socket.\nfunc ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_CREDENTIALS {\n\t\treturn nil, EINVAL\n\t}\n\tucred := *(*Ucred)(unsafe.Pointer(&m.Data[0]))\n\treturn &ucred, nil\n}\n\n// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO.\nfunc PktInfo4(info *Inet4Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet4Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IP\n\th.Type = IP_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet4Pktinfo))\n\t*(*Inet4Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n\n// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO.\nfunc PktInfo6(info *Inet6Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet6Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IPV6\n\th.Type = IPV6_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet6Pktinfo))\n\t*(*Inet6Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n\n// ParseOrigDstAddr decodes a socket control message containing the original\n// destination address. To receive such a message the IP_RECVORIGDSTADDR or\n// IPV6_RECVORIGDSTADDR option must be enabled on the socket.\nfunc ParseOrigDstAddr(m *SocketControlMessage) (Sockaddr, error) {\n\tswitch {\n\tcase m.Header.Level == SOL_IP && m.Header.Type == IP_ORIGDSTADDR:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(&m.Data[0]))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase m.Header.Level == SOL_IPV6 && m.Header.Type == IPV6_ORIGDSTADDR:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(&m.Data[0]))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tdefault:\n\t\treturn nil, EINVAL\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sockcmsg_unix.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Socket control messages\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// CmsgLen returns the value to store in the Len field of the Cmsghdr\n// structure, taking into account any necessary alignment.\nfunc CmsgLen(datalen int) int {\n\treturn cmsgAlignOf(SizeofCmsghdr) + datalen\n}\n\n// CmsgSpace returns the number of bytes an ancillary element with\n// payload of the passed data length occupies.\nfunc CmsgSpace(datalen int) int {\n\treturn cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen)\n}\n\nfunc (h *Cmsghdr) data(offset uintptr) unsafe.Pointer {\n\treturn unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)) + offset)\n}\n\n// SocketControlMessage represents a socket control message.\ntype SocketControlMessage struct {\n\tHeader Cmsghdr\n\tData   []byte\n}\n\n// ParseSocketControlMessage parses b as an array of socket control\n// messages.\nfunc ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) {\n\tvar msgs []SocketControlMessage\n\ti := 0\n\tfor i+CmsgLen(0) <= len(b) {\n\t\th, dbuf, err := socketControlMessageHeaderAndData(b[i:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tm := SocketControlMessage{Header: *h, Data: dbuf}\n\t\tmsgs = append(msgs, m)\n\t\ti += cmsgAlignOf(int(h.Len))\n\t}\n\treturn msgs, nil\n}\n\n// ParseOneSocketControlMessage parses a single socket control message from b, returning the message header,\n// message data (a slice of b), and the remainder of b after that single message.\n// When there are no remaining messages, len(remainder) == 0.\nfunc ParseOneSocketControlMessage(b []byte) (hdr Cmsghdr, data []byte, remainder []byte, err error) {\n\th, dbuf, err := socketControlMessageHeaderAndData(b)\n\tif err != nil {\n\t\treturn Cmsghdr{}, nil, nil, err\n\t}\n\tif i := cmsgAlignOf(int(h.Len)); i < len(b) {\n\t\tremainder = b[i:]\n\t}\n\treturn *h, dbuf, remainder, nil\n}\n\nfunc socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) {\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\tif h.Len < SizeofCmsghdr || uint64(h.Len) > uint64(len(b)) {\n\t\treturn nil, nil, EINVAL\n\t}\n\treturn h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil\n}\n\n// UnixRights encodes a set of open file descriptors into a socket\n// control message for sending to another process.\nfunc UnixRights(fds ...int) []byte {\n\tdatalen := len(fds) * 4\n\tb := make([]byte, CmsgSpace(datalen))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_RIGHTS\n\th.SetLen(CmsgLen(datalen))\n\tfor i, fd := range fds {\n\t\t*(*int32)(h.data(4 * uintptr(i))) = int32(fd)\n\t}\n\treturn b\n}\n\n// ParseUnixRights decodes a socket control message that contains an\n// integer array of open file descriptors from another process.\nfunc ParseUnixRights(m *SocketControlMessage) ([]int, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_RIGHTS {\n\t\treturn nil, EINVAL\n\t}\n\tfds := make([]int, len(m.Data)>>2)\n\tfor i, j := 0, 0; i < len(m.Data); i += 4 {\n\t\tfds[j] = int(*(*int32)(unsafe.Pointer(&m.Data[i])))\n\t\tj++\n\t}\n\treturn fds, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport (\n\t\"runtime\"\n)\n\n// Round the length of a raw sockaddr up to align it properly.\nfunc cmsgAlignOf(salen int) int {\n\tsalign := SizeofPtr\n\n\t// dragonfly needs to check ABI version at runtime, see cmsgAlignOf in\n\t// sockcmsg_dragonfly.go\n\tswitch runtime.GOOS {\n\tcase \"aix\":\n\t\t// There is no alignment on AIX.\n\t\tsalign = 1\n\tcase \"darwin\", \"ios\", \"illumos\", \"solaris\":\n\t\t// NOTE: It seems like 64-bit Darwin, Illumos and Solaris\n\t\t// kernels still require 32-bit aligned access to network\n\t\t// subsystem.\n\t\tif SizeofPtr == 8 {\n\t\t\tsalign = 4\n\t\t}\n\tcase \"netbsd\", \"openbsd\":\n\t\t// NetBSD and OpenBSD armv7 require 64-bit alignment.\n\t\tif runtime.GOARCH == \"arm\" {\n\t\t\tsalign = 8\n\t\t}\n\t\t// NetBSD aarch64 requires 128-bit alignment.\n\t\tif runtime.GOOS == \"netbsd\" && runtime.GOARCH == \"arm64\" {\n\t\t\tsalign = 16\n\t\t}\n\tcase \"zos\":\n\t\t// z/OS socket macros use [32-bit] sizeof(int) alignment,\n\t\t// not pointer width.\n\t\tsalign = SizeofInt\n\t}\n\n\treturn (salen + salign - 1) & ^(salign - 1)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sockcmsg_zos.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Socket control messages\n\npackage unix\n\nimport \"unsafe\"\n\n// UnixCredentials encodes credentials into a socket control message\n// for sending to another process. This can be used for\n// authentication.\nfunc UnixCredentials(ucred *Ucred) []byte {\n\tb := make([]byte, CmsgSpace(SizeofUcred))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_CREDENTIALS\n\th.SetLen(CmsgLen(SizeofUcred))\n\t*(*Ucred)(h.data(0)) = *ucred\n\treturn b\n}\n\n// ParseUnixCredentials decodes a socket control message that contains\n// credentials in a Ucred structure. To receive such a message, the\n// SO_PASSCRED option must be enabled on the socket.\nfunc ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_CREDENTIALS {\n\t\treturn nil, EINVAL\n\t}\n\tucred := *(*Ucred)(unsafe.Pointer(&m.Data[0]))\n\treturn &ucred, nil\n}\n\n// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO.\nfunc PktInfo4(info *Inet4Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet4Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IP\n\th.Type = IP_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet4Pktinfo))\n\t*(*Inet4Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n\n// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO.\nfunc PktInfo6(info *Inet6Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet6Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IPV6\n\th.Type = IPV6_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet6Pktinfo))\n\t*(*Inet6Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x && gc\n\n#include \"textflag.h\"\n\n//  provide the address of function variable to be fixed up.\n\nTEXT ·getPipe2Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Pipe2(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_FlockAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Flock(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_GetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Getxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_NanosleepAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Nanosleep(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_SetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Setxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_Wait4Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Wait4(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_MountAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Mount(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_UnmountAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Unmount(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_UtimesNanoAtAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·UtimesNanoAt(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_UtimesNanoAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·UtimesNano(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_MkfifoatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Mkfifoat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_ChtagAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Chtag(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_ReadlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Readlinkat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\t\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Package unix contains an interface to the low-level operating system\n// primitives. OS details vary depending on the underlying system, and\n// by default, godoc will display OS-specific documentation for the current\n// system. If you want godoc to display OS documentation for another\n// system, set $GOOS and $GOARCH to the desired system. For example, if\n// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS\n// to freebsd and $GOARCH to arm.\n//\n// The primary use of this package is inside other packages that provide a more\n// portable interface to the system, such as \"os\", \"time\" and \"net\".  Use\n// those packages rather than this one if you can.\n//\n// For details of the functions and data types in this package consult\n// the manuals for the appropriate operating system.\n//\n// These calls return err == nil to indicate success; otherwise\n// err represents an operating system error describing the failure and\n// holds a value of type syscall.Errno.\npackage unix // import \"golang.org/x/sys/unix\"\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"unsafe\"\n)\n\n// ByteSliceFromString returns a NUL-terminated slice of bytes\n// containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, EINVAL).\nfunc ByteSliceFromString(s string) ([]byte, error) {\n\tif strings.IndexByte(s, 0) != -1 {\n\t\treturn nil, EINVAL\n\t}\n\ta := make([]byte, len(s)+1)\n\tcopy(a, s)\n\treturn a, nil\n}\n\n// BytePtrFromString returns a pointer to a NUL-terminated array of\n// bytes containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, EINVAL).\nfunc BytePtrFromString(s string) (*byte, error) {\n\ta, err := ByteSliceFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any\n// bytes after the NUL removed.\nfunc ByteSliceToString(s []byte) string {\n\tif i := bytes.IndexByte(s, 0); i != -1 {\n\t\ts = s[:i]\n\t}\n\treturn string(s)\n}\n\n// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.\n// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated\n// at a zero byte; if the zero byte is not present, the program may crash.\nfunc BytePtrToString(p *byte) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + 1)\n\t}\n\n\treturn string(unsafe.Slice(p, n))\n}\n\n// Single-word zero for use when we need a valid pointer to 0 bytes.\nvar _zero uintptr\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_aix.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix\n\n// Aix system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and\n// wrap it in our own nicer implementation.\n\npackage unix\n\nimport \"unsafe\"\n\n/*\n * Wrapped\n */\n\nfunc Access(path string, mode uint32) (err error) {\n\treturn Faccessat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chmod(path string, mode uint32) (err error) {\n\treturn Fchmodat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, 0)\n}\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\treturn Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n > len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif n == len(sa.raw.Path) && name[0] != '@' {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = uint8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n//sys\tgetcwd(buf []byte) (err error)\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (ret string, err error) {\n\tfor len := uint64(4096); ; len *= 2 {\n\t\tb := make([]byte, len)\n\t\terr := getcwd(b)\n\t\tif err == nil {\n\t\t\ti := 0\n\t\t\tfor b[i] != 0 {\n\t\t\t\ti++\n\t\t\t}\n\t\t\treturn string(b[0:i]), nil\n\t\t}\n\t\tif err != ERANGE {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n}\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\terr = getcwd(buf)\n\tif err == nil {\n\t\ti := 0\n\t\tfor buf[i] != 0 {\n\t\t\ti++\n\t\t}\n\t\tn = i + 1\n\t}\n\treturn\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 16 on BSD.\n\tif n < 0 || n > 1000 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n/*\n * Socket\n */\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif nfd == -1 {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); n == -1 {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\treturn\n}\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\n\t\t// Some versions of AIX have a bug in getsockname (see IV78655).\n\t\t// We can't rely on sa.Len being set correctly.\n\t\tn := SizeofSockaddrUnix - 3 // subtract leading Family, Len, terminating NUL.\n\t\tfor i := 0; i < n; i++ {\n\t\t\tif pp.Path[i] == 0 {\n\t\t\t\tn = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\terr = gettimeofday(tv, nil)\n\treturn\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\n//sys\tgetdirent(fd int, buf []byte) (n int, err error)\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\treturn getdirent(fd, buf)\n}\n\n//sys\twait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\tvar r Pid_t\n\terr = ERESTART\n\t// AIX wait4 may return with ERESTART errno, while the process is still\n\t// active.\n\tfor err == ERESTART {\n\t\tr, err = wait4(Pid_t(pid), &status, options, rusage)\n\t}\n\twpid = int(r)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n/*\n * Wait\n */\n\ntype WaitStatus uint32\n\nfunc (w WaitStatus) Stopped() bool { return w&0x40 != 0 }\nfunc (w WaitStatus) StopSignal() Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn Signal(w>>8) & 0xFF\n}\n\nfunc (w WaitStatus) Exited() bool { return w&0xFF == 0 }\nfunc (w WaitStatus) ExitStatus() int {\n\tif !w.Exited() {\n\t\treturn -1\n\t}\n\treturn int((w >> 8) & 0xFF)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 }\nfunc (w WaitStatus) Signal() Signal {\n\tif !w.Signaled() {\n\t\treturn -1\n\t}\n\treturn Signal(w>>16) & 0xFF\n}\n\nfunc (w WaitStatus) Continued() bool { return w&0x01000000 != 0 }\n\nfunc (w WaitStatus) CoreDump() bool { return w&0x80 == 0x80 }\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\tioctl(fd int, req int, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = ioctl\n\n// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX\n// There is no way to create a custom fcntl and to keep //sys fcntl easily,\n// Therefore, the programmer must call dup2 instead of fcntl in this case.\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\n//sys\tFcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\n//sys\tFcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n//sys\tfsyncRange(fd int, how int, start int64, length int64) (err error) = fsync_range\n\nfunc Fsync(fd int) error {\n\treturn fsyncRange(fd, O_SYNC, 0, 0)\n}\n\n/*\n * Direct access\n */\n\n//sys\tAcct(path string) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(oldfd int) (fd int, err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n// readdir_r\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n\n//sys\tGetpgrp() (pid int)\n\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tKill(pid int, sig Signal) (err error)\n//sys\tKlogctl(typ int, buf []byte) (n int, err error) = syslog\n//sys\tMkdir(dirfd int, path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error) = open64\n//sys\tOpenat(dirfd int, path string, flags int, mode uint32) (fd int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSetdomainname(p []byte) (err error)\n//sys\tSethostname(p []byte) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tv *Timeval) (err error)\n\n//sys\tSetuid(uid int) (err error)\n//sys\tSetgid(uid int) (err error)\n\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tStatx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)\n//sys\tSync()\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sysnb\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tfstat(fd int, stat *Stat_t) (err error)\n//sys\tfstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tlstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = pread64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tPselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tstat(path string, statptr *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n\n// In order to use msghdr structure with Control, Controllen, nrecvmsg and nsendmsg must be used.\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error) = nrecvmsg\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = nsendmsg\n\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tMadvise(b []byte, advice int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n\n//sysnb\tpipe(p *[2]_C_int) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe(&pp)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n//sys\tgettimeofday(tv *Timeval, tzp *Timezone) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n\n//sys\tGetsystemcfg(label int) (n uint64)\n\n//sys\tumount(target string) (err error)\n\nfunc Unmount(target string, flags int) (err error) {\n\tif flags != 0 {\n\t\t// AIX doesn't have any flags for umount.\n\t\treturn ENOSYS\n\t}\n\treturn umount(target)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_aix_ppc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc\n\npackage unix\n\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = lseek64\n\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Fstat(fd int, stat *Stat_t) error {\n\treturn fstat(fd, stat)\n}\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {\n\treturn fstatat(dirfd, path, stat, flags)\n}\n\nfunc Lstat(path string, stat *Stat_t) error {\n\treturn lstat(path, stat)\n}\n\nfunc Stat(path string, statptr *Stat_t) error {\n\treturn stat(path, statptr)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc64\n\npackage unix\n\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = lseek\n\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int64(sec), Usec: int32(usec)}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// In order to only have Timespec structure, type of Stat_t's fields\n// Atim, Mtim and Ctim is changed from StTimespec to Timespec during\n// ztypes generation.\n// On ppc64, Timespec.Nsec is an int64 while StTimespec.Nsec is an\n// int32, so the fields' value must be modified.\nfunc fixStatTimFields(stat *Stat_t) {\n\tstat.Atim.Nsec >>= 32\n\tstat.Mtim.Nsec >>= 32\n\tstat.Ctim.Nsec >>= 32\n}\n\nfunc Fstat(fd int, stat *Stat_t) error {\n\terr := fstat(fd, stat)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {\n\terr := fstatat(dirfd, path, stat, flags)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Lstat(path string, stat *Stat_t) error {\n\terr := lstat(path, stat)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Stat(path string, statptr *Stat_t) error {\n\terr := stat(path, statptr)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(statptr)\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_bsd.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin || dragonfly || freebsd || netbsd || openbsd\n\n// BSD system call wrappers shared by *BSD based systems\n// including OS X (Darwin) and FreeBSD.  Like the other\n// syscall_*.go files it is compiled as Go code but also\n// used as input to mksyscall which parses the //sys\n// lines and generates system call stubs.\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (string, error) {\n\tvar buf [PathMax]byte\n\t_, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\n/*\n * Wrapped\n */\n\n//sysnb\tgetgroups(ngid int, gid *_Gid_t) (n int, err error)\n//sysnb\tsetgroups(ngid int, gid *_Gid_t) (err error)\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 16 on BSD.\n\tif n < 0 || n > 1000 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.\n\ntype WaitStatus uint32\n\nconst (\n\tmask  = 0x7F\n\tcore  = 0x80\n\tshift = 8\n\n\texited  = 0\n\tkilled  = 9\n\tstopped = 0x7F\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif w&mask != exited {\n\t\treturn -1\n\t}\n\treturn int(w >> shift)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tsig := syscall.Signal(w & mask)\n\tif sig == stopped || sig == 0 {\n\t\treturn -1\n\t}\n\treturn sig\n}\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }\n\nfunc (w WaitStatus) Killed() bool { return w&mask == killed && syscall.Signal(w>>shift) != SIGKILL }\n\nfunc (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\twpid, err = wait4(pid, &status, options, rusage)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\tShutdown(s int, how int) (err error)\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet4\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet6\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) || n == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Index == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = sa.Len\n\tsa.raw.Family = AF_LINK\n\tsa.raw.Index = sa.Index\n\tsa.raw.Type = sa.Type\n\tsa.raw.Nlen = sa.Nlen\n\tsa.raw.Alen = sa.Alen\n\tsa.raw.Slen = sa.Slen\n\tsa.raw.Data = sa.Data\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_LINK:\n\t\tpp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrDatalink)\n\t\tsa.Len = pp.Len\n\t\tsa.Family = pp.Family\n\t\tsa.Index = pp.Index\n\t\tsa.Type = pp.Type\n\t\tsa.Nlen = pp.Nlen\n\t\tsa.Alen = pp.Alen\n\t\tsa.Slen = pp.Slen\n\t\tsa.Data = pp.Data\n\t\treturn sa, nil\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tif pp.Len < 2 || pp.Len > SizeofSockaddrUnix {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t\tsa := new(SockaddrUnix)\n\n\t\t// Some BSDs include the trailing NUL in the length, whereas\n\t\t// others do not. Work around this by subtracting the leading\n\t\t// family and len. The path is then scanned to see if a NUL\n\t\t// terminator still exists within the length.\n\t\tn := int(pp.Len) - 2 // subtract leading Family, Len\n\t\tfor i := 0; i < n; i++ {\n\t\t\tif pp.Path[i] == 0 {\n\t\t\t\t// found early NUL; assume Len included the NUL\n\t\t\t\t// or was overestimating.\n\t\t\t\tn = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn anyToSockaddrGOOS(fd, rsa)\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif err != nil {\n\t\treturn\n\t}\n\tif (runtime.GOOS == \"darwin\" || runtime.GOOS == \"ios\") && len == 0 {\n\t\t// Accepted socket has no address.\n\t\t// This is likely due to a bug in xnu kernels,\n\t\t// where instead of ECONNABORTED error socket\n\t\t// is accepted, but has no address.\n\t\tClose(nfd)\n\t\treturn 0, nil, ECONNABORTED\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\t// TODO(jsing): DragonFly has a \"bug\" (see issue 3349), which should be\n\t// reported upstream.\n\tif runtime.GOOS == \"dragonfly\" && rsa.Addr.Family == AF_UNSPEC && rsa.Addr.Len == 0 {\n\t\trsa.Addr.Family = AF_UNIX\n\t\trsa.Addr.Len = SizeofSockaddrUnix\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\treturn\n}\n\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n//sys\tkevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error)\n\nfunc Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err error) {\n\tvar change, event unsafe.Pointer\n\tif len(changes) > 0 {\n\t\tchange = unsafe.Pointer(&changes[0])\n\t}\n\tif len(events) > 0 {\n\t\tevent = unsafe.Pointer(&events[0])\n\t}\n\treturn kevent(kq, change, len(changes), event, len(events), timeout)\n}\n\n// sysctlmib translates name to mib number and appends any additional args.\nfunc sysctlmib(name string, args ...int) ([]_C_int, error) {\n\t// Translate name to mib number.\n\tmib, err := nametomib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, a := range args {\n\t\tmib = append(mib, _C_int(a))\n\t}\n\n\treturn mib, nil\n}\n\nfunc Sysctl(name string) (string, error) {\n\treturn SysctlArgs(name)\n}\n\nfunc SysctlArgs(name string, args ...int) (string, error) {\n\tbuf, err := SysctlRaw(name, args...)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := len(buf)\n\n\t// Throw away terminating NUL.\n\tif n > 0 && buf[n-1] == '\\x00' {\n\t\tn--\n\t}\n\treturn string(buf[0:n]), nil\n}\n\nfunc SysctlUint32(name string) (uint32, error) {\n\treturn SysctlUint32Args(name)\n}\n\nfunc SysctlUint32Args(name string, args ...int) (uint32, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn := uintptr(4)\n\tbuf := make([]byte, 4)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn 0, err\n\t}\n\tif n != 4 {\n\t\treturn 0, EIO\n\t}\n\treturn *(*uint32)(unsafe.Pointer(&buf[0])), nil\n}\n\nfunc SysctlUint64(name string, args ...int) (uint64, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn := uintptr(8)\n\tbuf := make([]byte, 8)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn 0, err\n\t}\n\tif n != 8 {\n\t\treturn 0, EIO\n\t}\n\treturn *(*uint64)(unsafe.Pointer(&buf[0])), nil\n}\n\nfunc SysctlRaw(name string, args ...int) ([]byte, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Find size.\n\tn := uintptr(0)\n\tif err := sysctl(mib, nil, &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Read into buffer of that size.\n\tbuf := make([]byte, n)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// The actual call may return less than the original reported required\n\t// size so ensure we deal with that.\n\treturn buf[:n], nil\n}\n\nfunc SysctlClockinfo(name string) (*Clockinfo, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofClockinfo)\n\tvar ci Clockinfo\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofClockinfo {\n\t\treturn nil, EIO\n\t}\n\treturn &ci, nil\n}\n\nfunc SysctlTimeval(name string) (*Timeval, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar tv Timeval\n\tn := uintptr(unsafe.Sizeof(tv))\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&tv)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != unsafe.Sizeof(tv) {\n\t\treturn nil, EIO\n\t}\n\treturn &tv, nil\n}\n\n//sys\tutimes(path string, timeval *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif ts == nil {\n\t\terr := utimensat(AT_FDCWD, path, nil, 0)\n\t\tif err != ENOSYS {\n\t\t\treturn err\n\t\t}\n\t\treturn utimes(path, nil)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\terr := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\t// Not as efficient as it could be because Timespec and\n\t// Timeval have different types in the different OSes\n\ttv := [2]Timeval{\n\t\tNsecToTimeval(TimespecToNsec(ts[0])),\n\t\tNsecToTimeval(TimespecToNsec(ts[1])),\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\n//sys\tfutimes(fd int, timeval *[2]Timeval) (err error)\n\nfunc Futimes(fd int, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimes(fd, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n// TODO: wrap\n//\tAcct(name nil-string) (err error)\n//\tGethostuuid(uuid *byte, timeout *Timespec) (err error)\n//\tPtrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error)\n\n//sys\tMadvise(b []byte, behav int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Darwin system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//sys\tclosedir(dir uintptr) (err error)\n//sys\treaddir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno)\n\nfunc fdopendir(fd int) (dir uintptr, err error) {\n\tr0, _, e1 := syscall_syscallPtr(libc_fdopendir_trampoline_addr, uintptr(fd), 0, 0)\n\tdir = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fdopendir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fdopendir fdopendir \"/usr/lib/libSystem.B.dylib\"\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\t// Simulate Getdirentries using fdopendir/readdir_r/closedir.\n\t// We store the number of entries to skip in the seek\n\t// offset of fd. See issue #31368.\n\t// It's not the full required semantics, but should handle the case\n\t// of calling Getdirentries or ReadDirent repeatedly.\n\t// It won't handle assigning the results of lseek to *basep, or handle\n\t// the directory being edited underfoot.\n\tskip, err := Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\t// We need to duplicate the incoming file descriptor\n\t// because the caller expects to retain control of it, but\n\t// fdopendir expects to take control of its argument.\n\t// Just Dup'ing the file descriptor is not enough, as the\n\t// result shares underlying state. Use Openat to make a really\n\t// new file descriptor referring to the same directory.\n\tfd2, err := Openat(fd, \".\", O_RDONLY, 0)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\td, err := fdopendir(fd2)\n\tif err != nil {\n\t\tClose(fd2)\n\t\treturn 0, err\n\t}\n\tdefer closedir(d)\n\n\tvar cnt int64\n\tfor {\n\t\tvar entry Dirent\n\t\tvar entryp *Dirent\n\t\te := readdir_r(d, &entry, &entryp)\n\t\tif e != 0 {\n\t\t\treturn n, errnoErr(e)\n\t\t}\n\t\tif entryp == nil {\n\t\t\tbreak\n\t\t}\n\t\tif skip > 0 {\n\t\t\tskip--\n\t\t\tcnt++\n\t\t\tcontinue\n\t\t}\n\n\t\treclen := int(entry.Reclen)\n\t\tif reclen > len(buf) {\n\t\t\t// Not enough room. Return for now.\n\t\t\t// The counter will let us know where we should start up again.\n\t\t\t// Note: this strategy for suspending in the middle and\n\t\t\t// restarting is O(n^2) in the length of the directory. Oh well.\n\t\t\tbreak\n\t\t}\n\n\t\t// Copy entry into return buffer.\n\t\ts := unsafe.Slice((*byte)(unsafe.Pointer(&entry)), reclen)\n\t\tcopy(buf, s)\n\n\t\tbuf = buf[reclen:]\n\t\tn += reclen\n\t\tcnt++\n\t}\n\t// Set the seek offset of the input fd to record\n\t// how many files we've already returned.\n\t_, err = Seek(fd, cnt, 0 /* SEEK_SET */)\n\tif err != nil {\n\t\treturn n, err\n\t}\n\n\treturn n, nil\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\traw    RawSockaddrDatalink\n}\n\n// SockaddrCtl implements the Sockaddr interface for AF_SYSTEM type sockets.\ntype SockaddrCtl struct {\n\tID   uint32\n\tUnit uint32\n\traw  RawSockaddrCtl\n}\n\nfunc (sa *SockaddrCtl) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Sc_len = SizeofSockaddrCtl\n\tsa.raw.Sc_family = AF_SYSTEM\n\tsa.raw.Ss_sysaddr = AF_SYS_CONTROL\n\tsa.raw.Sc_id = sa.ID\n\tsa.raw.Sc_unit = sa.Unit\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrCtl, nil\n}\n\n// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets.\n// SockaddrVM provides access to Darwin VM sockets: a mechanism that enables\n// bidirectional communication between a hypervisor and its guest virtual\n// machines.\ntype SockaddrVM struct {\n\t// CID and Port specify a context ID and port address for a VM socket.\n\t// Guests have a unique CID, and hosts may have a well-known CID of:\n\t//  - VMADDR_CID_HYPERVISOR: refers to the hypervisor process.\n\t//  - VMADDR_CID_LOCAL: refers to local communication (loopback).\n\t//  - VMADDR_CID_HOST: refers to other processes on the host.\n\tCID  uint32\n\tPort uint32\n\traw  RawSockaddrVM\n}\n\nfunc (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Len = SizeofSockaddrVM\n\tsa.raw.Family = AF_VSOCK\n\tsa.raw.Port = sa.Port\n\tsa.raw.Cid = sa.CID\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_SYSTEM:\n\t\tpp := (*RawSockaddrCtl)(unsafe.Pointer(rsa))\n\t\tif pp.Ss_sysaddr == AF_SYS_CONTROL {\n\t\t\tsa := new(SockaddrCtl)\n\t\t\tsa.ID = pp.Sc_id\n\t\t\tsa.Unit = pp.Sc_unit\n\t\t\treturn sa, nil\n\t\t}\n\tcase AF_VSOCK:\n\t\tpp := (*RawSockaddrVM)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrVM{\n\t\t\tCID:  pp.Cid,\n\t\t\tPort: pp.Port,\n\t\t}\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\n// Some external packages rely on SYS___SYSCTL being defined to implement their\n// own sysctl wrappers. Provide it here, even though direct syscalls are no\n// longer supported on darwin.\nconst SYS___SYSCTL = SYS_SYSCTL\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) }\nfunc PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) }\nfunc PtraceDenyAttach() (err error)    { return ptrace(PT_DENY_ATTACH, 0, 0, 0) }\n\n//sysnb\tpipe(p *[2]int32) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar x [2]int32\n\terr = pipe(&x)\n\tif err == nil {\n\t\tp[0] = int(x[0])\n\t\tp[1] = int(x[1])\n\t}\n\treturn\n}\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\treturn getfsstat(_p0, bufsize, flags)\n}\n\nfunc xattrPointer(dest []byte) *byte {\n\t// It's only when dest is set to NULL that the OS X implementations of\n\t// getxattr() and listxattr() return the current sizes of the named attributes.\n\t// An empty byte array is not sufficient. To maintain the same behaviour as the\n\t// linux implementation, we wrap around the system calls and pass in NULL when\n\t// dest is empty.\n\tvar destp *byte\n\tif len(dest) > 0 {\n\t\tdestp = &dest[0]\n\t}\n\treturn destp\n}\n\n//sys\tgetxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\treturn getxattr(path, attr, xattrPointer(dest), len(dest), 0, 0)\n}\n\nfunc Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\treturn getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW)\n}\n\n//sys\tfgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\treturn fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0)\n}\n\n//sys\tsetxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error)\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\t// The parameters for the OS X implementation vary slightly compared to the\n\t// linux system call, specifically the position parameter:\n\t//\n\t//  linux:\n\t//      int setxattr(\n\t//          const char *path,\n\t//          const char *name,\n\t//          const void *value,\n\t//          size_t size,\n\t//          int flags\n\t//      );\n\t//\n\t//  darwin:\n\t//      int setxattr(\n\t//          const char *path,\n\t//          const char *name,\n\t//          void *value,\n\t//          size_t size,\n\t//          u_int32_t position,\n\t//          int options\n\t//      );\n\t//\n\t// position specifies the offset within the extended attribute. In the\n\t// current implementation, only the resource fork extended attribute makes\n\t// use of this argument. For all others, position is reserved. We simply\n\t// default to setting it to zero.\n\treturn setxattr(path, attr, xattrPointer(data), len(data), 0, flags)\n}\n\nfunc Lsetxattr(link string, attr string, data []byte, flags int) (err error) {\n\treturn setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW)\n}\n\n//sys\tfsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error)\n\nfunc Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {\n\treturn fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0)\n}\n\n//sys\tremovexattr(path string, attr string, options int) (err error)\n\nfunc Removexattr(path string, attr string) (err error) {\n\t// We wrap around and explicitly zero out the options provided to the OS X\n\t// implementation of removexattr, we do so for interoperability with the\n\t// linux variant.\n\treturn removexattr(path, attr, 0)\n}\n\nfunc Lremovexattr(link string, attr string) (err error) {\n\treturn removexattr(link, attr, XATTR_NOFOLLOW)\n}\n\n//sys\tfremovexattr(fd int, attr string, options int) (err error)\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\treturn fremovexattr(fd, attr, 0)\n}\n\n//sys\tlistxattr(path string, dest *byte, size int, options int) (sz int, err error)\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\treturn listxattr(path, xattrPointer(dest), len(dest), 0)\n}\n\nfunc Llistxattr(link string, dest []byte) (sz int, err error) {\n\treturn listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW)\n}\n\n//sys\tflistxattr(fd int, dest *byte, size int, options int) (sz int, err error)\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\treturn flistxattr(fd, xattrPointer(dest), len(dest), 0)\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\n/*\n * Wrapped\n */\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n//sys\tkill(pid int, signum int, posix int) (err error)\n\nfunc Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) }\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\nfunc IoctlCtlInfo(fd int, ctlInfo *CtlInfo) error {\n\treturn ioctlPtr(fd, CTLIOCGINFO, unsafe.Pointer(ctlInfo))\n}\n\n// IfreqMTU is struct ifreq used to get or set a network device's MTU.\ntype IfreqMTU struct {\n\tName [IFNAMSIZ]byte\n\tMTU  int32\n}\n\n// IoctlGetIfreqMTU performs the SIOCGIFMTU ioctl operation on fd to get the MTU\n// of the network device specified by ifname.\nfunc IoctlGetIfreqMTU(fd int, ifname string) (*IfreqMTU, error) {\n\tvar ifreq IfreqMTU\n\tcopy(ifreq.Name[:], ifname)\n\terr := ioctlPtr(fd, SIOCGIFMTU, unsafe.Pointer(&ifreq))\n\treturn &ifreq, err\n}\n\n// IoctlSetIfreqMTU performs the SIOCSIFMTU ioctl operation on fd to set the MTU\n// of the network device specified by ifreq.Name.\nfunc IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error {\n\treturn ioctlPtr(fd, SIOCSIFMTU, unsafe.Pointer(ifreq))\n}\n\n//sys\trenamexNp(from string, to string, flag uint32) (err error)\n\nfunc RenamexNp(from string, to string, flag uint32) (err error) {\n\treturn renamexNp(from, to, flag)\n}\n\n//sys\trenameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error)\n\nfunc RenameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) {\n\treturn renameatxNp(fromfd, from, tofd, to, flag)\n}\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tvar length = int64(count)\n\terr = sendfile(infd, outfd, *offset, &length, nil, 0)\n\twritten = int(length)\n\treturn\n}\n\nfunc GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {\n\tvar value IPMreqn\n\tvallen := _Socklen(SizeofIPMreqn)\n\terrno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, errno\n}\n\nfunc SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\n// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct.\n// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively.\nfunc GetsockoptXucred(fd, level, opt int) (*Xucred, error) {\n\tx := new(Xucred)\n\tvallen := _Socklen(SizeofXucred)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen)\n\treturn x, err\n}\n\nfunc GetsockoptTCPConnectionInfo(fd, level, opt int) (*TCPConnectionInfo, error) {\n\tvar value TCPConnectionInfo\n\tvallen := _Socklen(SizeofTCPConnectionInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc SysctlKinfoProc(name string, args ...int) (*KinfoProc, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar kinfo KinfoProc\n\tn := uintptr(SizeofKinfoProc)\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&kinfo)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofKinfoProc {\n\t\treturn nil, EIO\n\t}\n\treturn &kinfo, nil\n}\n\nfunc SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor {\n\t\t// Find size.\n\t\tn := uintptr(0)\n\t\tif err := sysctl(mib, nil, &n, nil, 0); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif n == 0 {\n\t\t\treturn nil, nil\n\t\t}\n\t\tif n%SizeofKinfoProc != 0 {\n\t\t\treturn nil, fmt.Errorf(\"sysctl() returned a size of %d, which is not a multiple of %d\", n, SizeofKinfoProc)\n\t\t}\n\n\t\t// Read into buffer of that size.\n\t\tbuf := make([]KinfoProc, n/SizeofKinfoProc)\n\t\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&buf[0])), &n, nil, 0); err != nil {\n\t\t\tif err == ENOMEM {\n\t\t\t\t// Process table grew. Try again.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\t\tif n%SizeofKinfoProc != 0 {\n\t\t\treturn nil, fmt.Errorf(\"sysctl() returned a size of %d, which is not a multiple of %d\", n, SizeofKinfoProc)\n\t\t}\n\n\t\t// The actual call may return less than the original reported required\n\t\t// size so ensure we deal with that.\n\t\treturn buf[:n/SizeofKinfoProc], nil\n\t}\n}\n\n//sys\tpthread_chdir_np(path string) (err error)\n\nfunc PthreadChdir(path string) (err error) {\n\treturn pthread_chdir_np(path)\n}\n\n//sys\tpthread_fchdir_np(fd int) (err error)\n\nfunc PthreadFchdir(fd int) (err error) {\n\treturn pthread_fchdir_np(fd)\n}\n\n// Connectx calls connectx(2) to initiate a connection on a socket.\n//\n// srcIf, srcAddr, and dstAddr are filled into a [SaEndpoints] struct and passed as the endpoints argument.\n//\n//   - srcIf is the optional source interface index. 0 means unspecified.\n//   - srcAddr is the optional source address. nil means unspecified.\n//   - dstAddr is the destination address.\n//\n// On success, Connectx returns the number of bytes enqueued for transmission.\nfunc Connectx(fd int, srcIf uint32, srcAddr, dstAddr Sockaddr, associd SaeAssocID, flags uint32, iov []Iovec, connid *SaeConnID) (n uintptr, err error) {\n\tendpoints := SaEndpoints{\n\t\tSrcif: srcIf,\n\t}\n\n\tif srcAddr != nil {\n\t\taddrp, addrlen, err := srcAddr.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tendpoints.Srcaddr = (*RawSockaddr)(addrp)\n\t\tendpoints.Srcaddrlen = uint32(addrlen)\n\t}\n\n\tif dstAddr != nil {\n\t\taddrp, addrlen, err := dstAddr.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tendpoints.Dstaddr = (*RawSockaddr)(addrp)\n\t\tendpoints.Dstaddrlen = uint32(addrlen)\n\t}\n\n\terr = connectx(fd, &endpoints, associd, flags, iov, &n, connid)\n\treturn\n}\n\nconst minIovec = 8\n\nfunc Readv(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tn, err = readv(fd, iovecs)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tn, err = preadv(fd, iovecs, offset)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc Writev(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = writev(fd, iovecs)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = pwritev(fd, iovecs, offset)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc appendBytes(vecs []Iovec, bs [][]byte) []Iovec {\n\tfor _, b := range bs {\n\t\tvar v Iovec\n\t\tv.SetLen(len(b))\n\t\tif len(b) > 0 {\n\t\t\tv.Base = &b[0]\n\t\t} else {\n\t\t\tv.Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t\tvecs = append(vecs, v)\n\t}\n\treturn vecs\n}\n\nfunc writevRacedetect(iovecs []Iovec, n int) {\n\tif !raceenabled {\n\t\treturn\n\t}\n\tfor i := 0; n > 0 && i < len(iovecs); i++ {\n\t\tm := int(iovecs[i].Len)\n\t\tif m > n {\n\t\t\tm = n\n\t\t}\n\t\tn -= m\n\t\tif m > 0 {\n\t\t\traceReadRange(unsafe.Pointer(iovecs[i].Base), m)\n\t\t}\n\t}\n}\n\nfunc readvRacedetect(iovecs []Iovec, n int, err error) {\n\tif !raceenabled {\n\t\treturn\n\t}\n\tfor i := 0; n > 0 && i < len(iovecs); i++ {\n\t\tm := int(iovecs[i].Len)\n\t\tif m > n {\n\t\t\tm = n\n\t\t}\n\t\tn -= m\n\t\tif m > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(iovecs[i].Base), m)\n\t\t}\n\t}\n\tif err == nil {\n\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t}\n}\n\n//sys\tconnectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error)\n//sys\tsendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error)\n\n//sys\tshmat(id int, addr uintptr, flag int) (ret uintptr, err error)\n//sys\tshmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error)\n//sys\tshmdt(addr uintptr) (err error)\n//sys\tshmget(key int, size int, flag int) (id int, err error)\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tClonefile(src string, dst string, flags int) (err error)\n//sys\tClonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExchangedata(path1 string, path2 string, options int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tGetcwd(buf []byte) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tp *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sysnb\tIssetugid() (tainted bool)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMount(fsType string, dir string, flags int, data unsafe.Pointer) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tSetattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error)\n//sys\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tSetprivexec(flag int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\treadv(fd int, iovecs []Iovec) (n int, err error)\n//sys\tpreadv(fd int, iovecs []Iovec, offset int64) (n int, err error)\n//sys\twritev(fd int, iovecs []Iovec) (n int, err error)\n//sys\tpwritev(fd int, iovecs []Iovec, offset int64) (n int, err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && darwin\n\npackage unix\n\nimport \"syscall\"\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64\n//sys\tgetfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tStatfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && darwin\n\npackage unix\n\nimport \"syscall\"\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic\n\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tgetfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin\n\npackage unix\n\nimport _ \"unsafe\"\n\n// Implemented in the runtime package (runtime/sys_darwin.go)\nfunc syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only\nfunc syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscallPtr(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\n\n//go:linkname syscall_syscall syscall.syscall\n//go:linkname syscall_syscall6 syscall.syscall6\n//go:linkname syscall_syscall6X syscall.syscall6X\n//go:linkname syscall_syscall9 syscall.syscall9\n//go:linkname syscall_rawSyscall syscall.rawSyscall\n//go:linkname syscall_rawSyscall6 syscall.rawSyscall6\n//go:linkname syscall_syscallPtr syscall.syscallPtr\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_dragonfly.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// DragonFly BSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"sync\"\n\t\"unsafe\"\n)\n\n// See version list in https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/sys/sys/param.h\nvar (\n\tosreldateOnce sync.Once\n\tosreldate     uint32\n)\n\n// First __DragonFly_version after September 2019 ABI changes\n// http://lists.dragonflybsd.org/pipermail/users/2019-September/358280.html\nconst _dragonflyABIChangeVersion = 500705\n\nfunc supportsABI(ver uint32) bool {\n\tosreldateOnce.Do(func() { osreldate, _ = SysctlUint32(\"kern.osreldate\") })\n\treturn osreldate >= ver\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\tRcf    uint16\n\tRoute  [16]uint16\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\tnamlen, ok := direntNamlen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn (16 + namlen + 1 + 7) &^ 7, true\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\n//sysnb\tpipe() (r int, w int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tr, w, err := pipe()\n\tif err == nil {\n\t\tp[0], p[1] = r, w\n\t}\n\treturn\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (r int, w int, err error)\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\t// pipe2 on dragonfly takes an fds array as an argument, but still\n\t// returns the file descriptors.\n\tr, w, err := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0], p[1] = r, w\n\t}\n\treturn err\n}\n\n//sys\textpread(fd int, p []byte, flags int, offset int64) (n int, err error)\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\treturn extpread(fd, p, 0, offset)\n}\n\n//sys\textpwrite(fd int, p []byte, flags int, offset int64) (n int, err error)\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\treturn extpwrite(fd, p, 0, offset)\n}\n\nfunc Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\nfunc sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error {\n\terr := sysctl(mib, old, oldlen, nil, 0)\n\tif err != nil {\n\t\t// Utsname members on Dragonfly are only 32 bytes and\n\t\t// the syscall returns ENOMEM in case the actual value\n\t\t// is longer.\n\t\tif err == ENOMEM {\n\t\t\terr = nil\n\t\t}\n\t}\n\treturn err\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctlUname(mib, &uname.Sysname[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Sysname[unsafe.Sizeof(uname.Sysname)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctlUname(mib, &uname.Nodename[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Nodename[unsafe.Sizeof(uname.Nodename)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctlUname(mib, &uname.Release[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Release[unsafe.Sizeof(uname.Release)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctlUname(mib, &uname.Version[0], &n); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctlUname(mib, &uname.Machine[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Machine[unsafe.Sizeof(uname.Machine)-1] = 0\n\n\treturn nil\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\nfunc Dup3(oldfd, newfd, flags int) error {\n\tif oldfd == newfd || flags&^O_CLOEXEC != 0 {\n\t\treturn EINVAL\n\t}\n\thow := F_DUP2FD\n\tif flags&O_CLOEXEC != 0 {\n\t\thow = F_DUP2FD_CLOEXEC\n\t}\n\t_, err := fcntl(oldfd, how, newfd)\n\treturn err\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n//sys\tGetdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(fd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\taccept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// FreeBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"sync\"\n\t\"unsafe\"\n)\n\n// See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html.\nvar (\n\tosreldateOnce sync.Once\n\tosreldate     uint32\n)\n\nfunc supportsABI(ver uint32) bool {\n\tosreldateOnce.Do(func() { osreldate, _ = SysctlUint32(\"kern.osreldate\") })\n\treturn osreldate >= ver\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\nfunc GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {\n\tvar value IPMreqn\n\tvallen := _Socklen(SizeofIPMreqn)\n\terrno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, errno\n}\n\nfunc SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\n// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct.\n// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively.\nfunc GetsockoptXucred(fd, level, opt int) (*Xucred, error) {\n\tx := new(Xucred)\n\tvallen := _Socklen(SizeofXucred)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen)\n\treturn x, err\n}\n\nfunc Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar (\n\t\t_p0     unsafe.Pointer\n\t\tbufsize uintptr\n\t)\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\t// Suppress ENOMEM errors to be compatible with the C library __xuname() implementation.\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Stat(path string, st *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, st, 0)\n}\n\nfunc Lstat(path string, st *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\treturn Getdirentries(fd, buf, nil)\n}\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tif basep == nil || unsafe.Sizeof(*basep) == 8 {\n\t\treturn getdirentries(fd, buf, (*uint64)(unsafe.Pointer(basep)))\n\t}\n\t// The syscall needs a 64-bit base. On 32-bit machines\n\t// we can't just use the basep passed in. See #32498.\n\tvar base uint64 = uint64(*basep)\n\tn, err = getdirentries(fd, buf, &base)\n\t*basep = uintptr(base)\n\tif base>>32 != 0 {\n\t\t// We can't stuff the base back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO is allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\nfunc Mknod(path string, mode uint32, dev uint64) (err error) {\n\treturn Mknodat(AT_FDCWD, path, mode, dev)\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n//sys\tptrace(request int, pid int, addr uintptr, data int) (err error)\n//sys\tptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) = SYS_PTRACE\n\nfunc PtraceAttach(pid int) (err error) {\n\treturn ptrace(PT_ATTACH, pid, 0, 0)\n}\n\nfunc PtraceCont(pid int, signal int) (err error) {\n\treturn ptrace(PT_CONTINUE, pid, 1, signal)\n}\n\nfunc PtraceDetach(pid int) (err error) {\n\treturn ptrace(PT_DETACH, pid, 1, 0)\n}\n\nfunc PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) {\n\treturn ptracePtr(PT_GETFPREGS, pid, unsafe.Pointer(fpregsout), 0)\n}\n\nfunc PtraceGetRegs(pid int, regsout *Reg) (err error) {\n\treturn ptracePtr(PT_GETREGS, pid, unsafe.Pointer(regsout), 0)\n}\n\nfunc PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) {\n\tioDesc := PtraceIoDesc{\n\t\tOp:   int32(req),\n\t\tOffs: offs,\n\t}\n\tif countin > 0 {\n\t\t_ = out[:countin] // check bounds\n\t\tioDesc.Addr = &out[0]\n\t} else if out != nil {\n\t\tioDesc.Addr = (*byte)(unsafe.Pointer(&_zero))\n\t}\n\tioDesc.SetLen(countin)\n\n\terr = ptracePtr(PT_IO, pid, unsafe.Pointer(&ioDesc), 0)\n\treturn int(ioDesc.Len), err\n}\n\nfunc PtraceLwpEvents(pid int, enable int) (err error) {\n\treturn ptrace(PT_LWP_EVENTS, pid, 0, enable)\n}\n\nfunc PtraceLwpInfo(pid int, info *PtraceLwpInfoStruct) (err error) {\n\treturn ptracePtr(PT_LWPINFO, pid, unsafe.Pointer(info), int(unsafe.Sizeof(*info)))\n}\n\nfunc PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_READ_D, pid, addr, out, SizeofLong)\n}\n\nfunc PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_READ_I, pid, addr, out, SizeofLong)\n}\n\nfunc PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_WRITE_D, pid, addr, data, SizeofLong)\n}\n\nfunc PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_WRITE_I, pid, addr, data, SizeofLong)\n}\n\nfunc PtraceSetRegs(pid int, regs *Reg) (err error) {\n\treturn ptracePtr(PT_SETREGS, pid, unsafe.Pointer(regs), 0)\n}\n\nfunc PtraceSingleStep(pid int) (err error) {\n\treturn ptrace(PT_STEP, pid, 1, 0)\n}\n\nfunc Dup3(oldfd, newfd, flags int) error {\n\tif oldfd == newfd || flags&^O_CLOEXEC != 0 {\n\t\treturn EINVAL\n\t}\n\thow := F_DUP2FD\n\tif flags&O_CLOEXEC != 0 {\n\t\thow = F_DUP2FD_CLOEXEC\n\t}\n\t_, err := fcntl(oldfd, how, newfd)\n\treturn err\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tCapEnter() (err error)\n//sys\tcapRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET\n//sys\tcapRightsLimit(fd int, rightsp *CapRights) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExit(code int)\n//sys\tExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tgetdirentries(fd int, buf []byte, basep *uint64) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknodat(fd int, path string, mode uint32, dev uint64) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(fdat int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\taccept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc PtraceGetFsBase(pid int, fsbase *int64) (err error) {\n\treturn ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc PtraceGetFsBase(pid int, fsbase *int64) (err error) {\n\treturn ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_hurd.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build hurd\n\npackage unix\n\n/*\n#include <stdint.h>\nint ioctl(int, unsigned long int, uintptr_t);\n*/\nimport \"C\"\nimport \"unsafe\"\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(arg))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(uintptr(arg)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_hurd_386.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && hurd\n\npackage unix\n\nconst (\n\tTIOCGETA = 0x62251713\n)\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_illumos.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// illumos system calls not present on Solaris.\n\n//go:build amd64 && illumos\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc bytes2iovec(bs [][]byte) []Iovec {\n\tiovecs := make([]Iovec, len(bs))\n\tfor i, b := range bs {\n\t\tiovecs[i].SetLen(len(b))\n\t\tif len(b) > 0 {\n\t\t\tiovecs[i].Base = &b[0]\n\t\t} else {\n\t\t\tiovecs[i].Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t}\n\treturn iovecs\n}\n\n//sys\treadv(fd int, iovs []Iovec) (n int, err error)\n\nfunc Readv(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = readv(fd, iovecs)\n\treturn n, err\n}\n\n//sys\tpreadv(fd int, iovs []Iovec, off int64) (n int, err error)\n\nfunc Preadv(fd int, iovs [][]byte, off int64) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = preadv(fd, iovecs, off)\n\treturn n, err\n}\n\n//sys\twritev(fd int, iovs []Iovec) (n int, err error)\n\nfunc Writev(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = writev(fd, iovecs)\n\treturn n, err\n}\n\n//sys\tpwritev(fd int, iovs []Iovec, off int64) (n int, err error)\n\nfunc Pwritev(fd int, iovs [][]byte, off int64) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = pwritev(fd, iovecs, off)\n\treturn n, err\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = libsocket.accept4\n\nfunc Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Linux system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and\n// wrap it in our own nicer implementation.\n\npackage unix\n\nimport (\n\t\"encoding/binary\"\n\t\"slices\"\n\t\"strconv\"\n\t\"syscall\"\n\t\"time\"\n\t\"unsafe\"\n)\n\n/*\n * Wrapped\n */\n\nfunc Access(path string, mode uint32) (err error) {\n\treturn Faccessat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chmod(path string, mode uint32) (err error) {\n\treturn Fchmodat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, 0)\n}\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\treturn Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)\n}\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tif size <= 0 {\n\t\treturn -1, EINVAL\n\t}\n\treturn EpollCreate1(0)\n}\n\n//sys\tFanotifyInit(flags uint, event_f_flags uint) (fd int, err error)\n//sys\tfanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error)\n\nfunc FanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname string) (err error) {\n\tif pathname == \"\" {\n\t\treturn fanotifyMark(fd, flags, mask, dirFd, nil)\n\t}\n\tp, err := BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn fanotifyMark(fd, flags, mask, dirFd, p)\n}\n\n//sys\tfchmodat(dirfd int, path string, mode uint32) (err error)\n//sys\tfchmodat2(dirfd int, path string, mode uint32, flags int) (err error)\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) error {\n\t// Linux fchmodat doesn't support the flags parameter, but fchmodat2 does.\n\t// Try fchmodat2 if flags are specified.\n\tif flags != 0 {\n\t\terr := fchmodat2(dirfd, path, mode, flags)\n\t\tif err == ENOSYS {\n\t\t\t// fchmodat2 isn't available. If the flags are known to be valid,\n\t\t\t// return EOPNOTSUPP to indicate that fchmodat doesn't support them.\n\t\t\tif flags&^(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 {\n\t\t\t\treturn EINVAL\n\t\t\t} else if flags&(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 {\n\t\t\t\treturn EOPNOTSUPP\n\t\t\t}\n\t\t}\n\t\treturn err\n\t}\n\treturn fchmodat(dirfd, path, mode)\n}\n\nfunc InotifyInit() (fd int, err error) {\n\treturn InotifyInit1(0)\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n// ioctl itself should not be exposed directly, but additional get/set functions\n// for specific types are permissible. These are defined in ioctl.go and\n// ioctl_linux.go.\n//\n// The third argument to ioctl is often a pointer but sometimes an integer.\n// Callers should use ioctlPtr when the third argument is a pointer and ioctl\n// when the third argument is an integer.\n//\n// TODO: some existing code incorrectly uses ioctl when it should use ioctlPtr.\n\n//sys\tLinkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)\n\nfunc Link(oldpath string, newpath string) (err error) {\n\treturn Linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0)\n}\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\treturn Mkdirat(AT_FDCWD, path, mode)\n}\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\treturn Mknodat(AT_FDCWD, path, mode, dev)\n}\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\treturn openat(AT_FDCWD, path, mode|O_LARGEFILE, perm)\n}\n\n//sys\topenat(dirfd int, path string, flags int, mode uint32) (fd int, err error)\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\treturn openat(dirfd, path, flags|O_LARGEFILE, mode)\n}\n\n//sys\topenat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error)\n\nfunc Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) {\n\treturn openat2(dirfd, path, how, SizeofOpenHow)\n}\n\nfunc Pipe(p []int) error {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\n//sys\tppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n\nfunc Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, timeout, sigmask)\n\t}\n\treturn ppoll(&fds[0], len(fds), timeout, sigmask)\n}\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout >= 0 {\n\t\tts = new(Timespec)\n\t\t*ts = NsecToTimespec(int64(timeout) * 1e6)\n\t}\n\treturn Ppoll(fds, ts, nil)\n}\n\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\treturn Readlinkat(AT_FDCWD, path, buf)\n}\n\nfunc Rename(oldpath string, newpath string) (err error) {\n\treturn Renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath)\n}\n\nfunc Rmdir(path string) error {\n\treturn Unlinkat(AT_FDCWD, path, AT_REMOVEDIR)\n}\n\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n\nfunc Symlink(oldpath string, newpath string) (err error) {\n\treturn Symlinkat(oldpath, AT_FDCWD, newpath)\n}\n\nfunc Unlink(path string) error {\n\treturn Unlinkat(AT_FDCWD, path, 0)\n}\n\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\terr := utimensat(AT_FDCWD, path, nil, 0)\n\t\tif err != ENOSYS {\n\t\t\treturn err\n\t\t}\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar ts [2]Timespec\n\tts[0] = NsecToTimespec(TimevalToNsec(tv[0]))\n\tts[1] = NsecToTimespec(TimevalToNsec(tv[1]))\n\terr := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\treturn UtimesNanoAt(AT_FDCWD, path, ts, 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\nfunc Futimesat(dirfd int, path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimesat(dirfd, path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc Futimes(fd int, tv []Timeval) (err error) {\n\t// Believe it or not, this is the best we can do on Linux\n\t// (and is what glibc does).\n\treturn Utimes(\"/proc/self/fd/\"+strconv.Itoa(fd), tv)\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error)\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\tn, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// Getcwd returns the number of bytes written to buf, including the NUL.\n\tif n < 1 || n > len(buf) || buf[n-1] != 0 {\n\t\treturn \"\", EINVAL\n\t}\n\t// In some cases, Linux can return a path that starts with the\n\t// \"(unreachable)\" prefix, which can potentially be a valid relative\n\t// path. To work around that, return ENOENT if path is not absolute.\n\tif buf[0] != '/' {\n\t\treturn \"\", ENOENT\n\t}\n\n\treturn string(buf[0 : n-1]), nil\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 1<<16 on Linux.\n\tif n < 0 || n > 1<<20 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\ntype WaitStatus uint32\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits. At least that's the idea.\n// There are various irregularities. For example, the\n// \"continued\" status is 0xFFFF, distinguishing itself\n// from stopped via the core dump bit.\n\nconst (\n\tmask    = 0x7F\n\tcore    = 0x80\n\texited  = 0x00\n\tstopped = 0x7F\n\tshift   = 8\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited }\n\nfunc (w WaitStatus) Stopped() bool { return w&0xFF == stopped }\n\nfunc (w WaitStatus) Continued() bool { return w == 0xFFFF }\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif !w.Exited() {\n\t\treturn -1\n\t}\n\treturn int(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tif !w.Signaled() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w & mask)\n}\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int {\n\tif w.StopSignal() != SIGTRAP {\n\t\treturn -1\n\t}\n\treturn int(w>>shift) >> 8\n}\n\n//sys\twait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\twpid, err = wait4(pid, &status, options, rusage)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n//sys\tWaitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error)\n\nfunc Mkfifo(path string, mode uint32) error {\n\treturn Mknod(path, mode|S_IFIFO, 0)\n}\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) error {\n\treturn Mknodat(dirfd, path, mode|S_IFIFO, 0)\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := range n {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\n// SockaddrLinklayer implements the Sockaddr interface for AF_PACKET type sockets.\ntype SockaddrLinklayer struct {\n\tProtocol uint16\n\tIfindex  int\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]byte\n\traw      RawSockaddrLinklayer\n}\n\nfunc (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_PACKET\n\tsa.raw.Protocol = sa.Protocol\n\tsa.raw.Ifindex = int32(sa.Ifindex)\n\tsa.raw.Hatype = sa.Hatype\n\tsa.raw.Pkttype = sa.Pkttype\n\tsa.raw.Halen = sa.Halen\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil\n}\n\n// SockaddrNetlink implements the Sockaddr interface for AF_NETLINK type sockets.\ntype SockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n\traw    RawSockaddrNetlink\n}\n\nfunc (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_NETLINK\n\tsa.raw.Pad = sa.Pad\n\tsa.raw.Pid = sa.Pid\n\tsa.raw.Groups = sa.Groups\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil\n}\n\n// SockaddrHCI implements the Sockaddr interface for AF_BLUETOOTH type sockets\n// using the HCI protocol.\ntype SockaddrHCI struct {\n\tDev     uint16\n\tChannel uint16\n\traw     RawSockaddrHCI\n}\n\nfunc (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tsa.raw.Dev = sa.Dev\n\tsa.raw.Channel = sa.Channel\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil\n}\n\n// SockaddrL2 implements the Sockaddr interface for AF_BLUETOOTH type sockets\n// using the L2CAP protocol.\ntype SockaddrL2 struct {\n\tPSM      uint16\n\tCID      uint16\n\tAddr     [6]uint8\n\tAddrType uint8\n\traw      RawSockaddrL2\n}\n\nfunc (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tpsm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm))\n\tpsm[0] = byte(sa.PSM)\n\tpsm[1] = byte(sa.PSM >> 8)\n\tfor i := range len(sa.Addr) {\n\t\tsa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i]\n\t}\n\tcid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid))\n\tcid[0] = byte(sa.CID)\n\tcid[1] = byte(sa.CID >> 8)\n\tsa.raw.Bdaddr_type = sa.AddrType\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil\n}\n\n// SockaddrRFCOMM implements the Sockaddr interface for AF_BLUETOOTH type sockets\n// using the RFCOMM protocol.\n//\n// Server example:\n//\n//\tfd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)\n//\t_ = unix.Bind(fd, &unix.SockaddrRFCOMM{\n//\t\tChannel: 1,\n//\t\tAddr:    [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00\n//\t})\n//\t_ = Listen(fd, 1)\n//\tnfd, sa, _ := Accept(fd)\n//\tfmt.Printf(\"conn addr=%v fd=%d\", sa.(*unix.SockaddrRFCOMM).Addr, nfd)\n//\tRead(nfd, buf)\n//\n// Client example:\n//\n//\tfd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)\n//\t_ = Connect(fd, &SockaddrRFCOMM{\n//\t\tChannel: 1,\n//\t\tAddr:    [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11\n//\t})\n//\tWrite(fd, []byte(`hello`))\ntype SockaddrRFCOMM struct {\n\t// Addr represents a bluetooth address, byte ordering is little-endian.\n\tAddr [6]uint8\n\n\t// Channel is a designated bluetooth channel, only 1-30 are available for use.\n\t// Since Linux 2.6.7 and further zero value is the first available channel.\n\tChannel uint8\n\n\traw RawSockaddrRFCOMM\n}\n\nfunc (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tsa.raw.Channel = sa.Channel\n\tsa.raw.Bdaddr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrRFCOMM, nil\n}\n\n// SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets.\n// The RxID and TxID fields are used for transport protocol addressing in\n// (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with\n// zero values for CAN_RAW and CAN_BCM sockets as they have no meaning.\n//\n// The SockaddrCAN struct must be bound to the socket file descriptor\n// using Bind before the CAN socket can be used.\n//\n//\t// Read one raw CAN frame\n//\tfd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW)\n//\taddr := &SockaddrCAN{Ifindex: index}\n//\tBind(fd, addr)\n//\tframe := make([]byte, 16)\n//\tRead(fd, frame)\n//\n// The full SocketCAN documentation can be found in the linux kernel\n// archives at: https://www.kernel.org/doc/Documentation/networking/can.txt\ntype SockaddrCAN struct {\n\tIfindex int\n\tRxID    uint32\n\tTxID    uint32\n\traw     RawSockaddrCAN\n}\n\nfunc (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_CAN\n\tsa.raw.Ifindex = int32(sa.Ifindex)\n\trx := (*[4]byte)(unsafe.Pointer(&sa.RxID))\n\tfor i := range 4 {\n\t\tsa.raw.Addr[i] = rx[i]\n\t}\n\ttx := (*[4]byte)(unsafe.Pointer(&sa.TxID))\n\tfor i := range 4 {\n\t\tsa.raw.Addr[i+4] = tx[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil\n}\n\n// SockaddrCANJ1939 implements the Sockaddr interface for AF_CAN using J1939\n// protocol (https://en.wikipedia.org/wiki/SAE_J1939). For more information\n// on the purposes of the fields, check the official linux kernel documentation\n// available here: https://www.kernel.org/doc/Documentation/networking/j1939.rst\ntype SockaddrCANJ1939 struct {\n\tIfindex int\n\tName    uint64\n\tPGN     uint32\n\tAddr    uint8\n\traw     RawSockaddrCAN\n}\n\nfunc (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_CAN\n\tsa.raw.Ifindex = int32(sa.Ifindex)\n\tn := (*[8]byte)(unsafe.Pointer(&sa.Name))\n\tfor i := range 8 {\n\t\tsa.raw.Addr[i] = n[i]\n\t}\n\tp := (*[4]byte)(unsafe.Pointer(&sa.PGN))\n\tfor i := range 4 {\n\t\tsa.raw.Addr[i+8] = p[i]\n\t}\n\tsa.raw.Addr[12] = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil\n}\n\n// SockaddrALG implements the Sockaddr interface for AF_ALG type sockets.\n// SockaddrALG enables userspace access to the Linux kernel's cryptography\n// subsystem. The Type and Name fields specify which type of hash or cipher\n// should be used with a given socket.\n//\n// To create a file descriptor that provides access to a hash or cipher, both\n// Bind and Accept must be used. Once the setup process is complete, input\n// data can be written to the socket, processed by the kernel, and then read\n// back as hash output or ciphertext.\n//\n// Here is an example of using an AF_ALG socket with SHA1 hashing.\n// The initial socket setup process is as follows:\n//\n//\t// Open a socket to perform SHA1 hashing.\n//\tfd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0)\n//\taddr := &unix.SockaddrALG{Type: \"hash\", Name: \"sha1\"}\n//\tunix.Bind(fd, addr)\n//\t// Note: unix.Accept does not work at this time; must invoke accept()\n//\t// manually using unix.Syscall.\n//\thashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0)\n//\n// Once a file descriptor has been returned from Accept, it may be used to\n// perform SHA1 hashing. The descriptor is not safe for concurrent use, but\n// may be re-used repeatedly with subsequent Write and Read operations.\n//\n// When hashing a small byte slice or string, a single Write and Read may\n// be used:\n//\n//\t// Assume hashfd is already configured using the setup process.\n//\thash := os.NewFile(hashfd, \"sha1\")\n//\t// Hash an input string and read the results. Each Write discards\n//\t// previous hash state. Read always reads the current state.\n//\tb := make([]byte, 20)\n//\tfor i := 0; i < 2; i++ {\n//\t    io.WriteString(hash, \"Hello, world.\")\n//\t    hash.Read(b)\n//\t    fmt.Println(hex.EncodeToString(b))\n//\t}\n//\t// Output:\n//\t// 2ae01472317d1935a84797ec1983ae243fc6aa28\n//\t// 2ae01472317d1935a84797ec1983ae243fc6aa28\n//\n// For hashing larger byte slices, or byte streams such as those read from\n// a file or socket, use Sendto with MSG_MORE to instruct the kernel to update\n// the hash digest instead of creating a new one for a given chunk and finalizing it.\n//\n//\t// Assume hashfd and addr are already configured using the setup process.\n//\thash := os.NewFile(hashfd, \"sha1\")\n//\t// Hash the contents of a file.\n//\tf, _ := os.Open(\"/tmp/linux-4.10-rc7.tar.xz\")\n//\tb := make([]byte, 4096)\n//\tfor {\n//\t    n, err := f.Read(b)\n//\t    if err == io.EOF {\n//\t        break\n//\t    }\n//\t    unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr)\n//\t}\n//\thash.Read(b)\n//\tfmt.Println(hex.EncodeToString(b))\n//\t// Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5\n//\n// For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html.\ntype SockaddrALG struct {\n\tType    string\n\tName    string\n\tFeature uint32\n\tMask    uint32\n\traw     RawSockaddrALG\n}\n\nfunc (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\t// Leave room for NUL byte terminator.\n\tif len(sa.Type) > len(sa.raw.Type)-1 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif len(sa.Name) > len(sa.raw.Name)-1 {\n\t\treturn nil, 0, EINVAL\n\t}\n\n\tsa.raw.Family = AF_ALG\n\tsa.raw.Feat = sa.Feature\n\tsa.raw.Mask = sa.Mask\n\n\tcopy(sa.raw.Type[:], sa.Type)\n\tcopy(sa.raw.Name[:], sa.Name)\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil\n}\n\n// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets.\n// SockaddrVM provides access to Linux VM sockets: a mechanism that enables\n// bidirectional communication between a hypervisor and its guest virtual\n// machines.\ntype SockaddrVM struct {\n\t// CID and Port specify a context ID and port address for a VM socket.\n\t// Guests have a unique CID, and hosts may have a well-known CID of:\n\t//  - VMADDR_CID_HYPERVISOR: refers to the hypervisor process.\n\t//  - VMADDR_CID_LOCAL: refers to local communication (loopback).\n\t//  - VMADDR_CID_HOST: refers to other processes on the host.\n\tCID   uint32\n\tPort  uint32\n\tFlags uint8\n\traw   RawSockaddrVM\n}\n\nfunc (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_VSOCK\n\tsa.raw.Port = sa.Port\n\tsa.raw.Cid = sa.CID\n\tsa.raw.Flags = sa.Flags\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil\n}\n\ntype SockaddrXDP struct {\n\tFlags        uint16\n\tIfindex      uint32\n\tQueueID      uint32\n\tSharedUmemFD uint32\n\traw          RawSockaddrXDP\n}\n\nfunc (sa *SockaddrXDP) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_XDP\n\tsa.raw.Flags = sa.Flags\n\tsa.raw.Ifindex = sa.Ifindex\n\tsa.raw.Queue_id = sa.QueueID\n\tsa.raw.Shared_umem_fd = sa.SharedUmemFD\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil\n}\n\n// This constant mirrors the #define of PX_PROTO_OE in\n// linux/if_pppox.h. We're defining this by hand here instead of\n// autogenerating through mkerrors.sh because including\n// linux/if_pppox.h causes some declaration conflicts with other\n// includes (linux/if_pppox.h includes linux/in.h, which conflicts\n// with netinet/in.h). Given that we only need a single zero constant\n// out of that file, it's cleaner to just define it by hand here.\nconst px_proto_oe = 0\n\ntype SockaddrPPPoE struct {\n\tSID    uint16\n\tRemote []byte\n\tDev    string\n\traw    RawSockaddrPPPoX\n}\n\nfunc (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif len(sa.Remote) != 6 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif len(sa.Dev) > IFNAMSIZ-1 {\n\t\treturn nil, 0, EINVAL\n\t}\n\n\t*(*uint16)(unsafe.Pointer(&sa.raw[0])) = AF_PPPOX\n\t// This next field is in host-endian byte order. We can't use the\n\t// same unsafe pointer cast as above, because this value is not\n\t// 32-bit aligned and some architectures don't allow unaligned\n\t// access.\n\t//\n\t// However, the value of px_proto_oe is 0, so we can use\n\t// encoding/binary helpers to write the bytes without worrying\n\t// about the ordering.\n\tbinary.BigEndian.PutUint32(sa.raw[2:6], px_proto_oe)\n\t// This field is deliberately big-endian, unlike the previous\n\t// one. The kernel expects SID to be in network byte order.\n\tbinary.BigEndian.PutUint16(sa.raw[6:8], sa.SID)\n\tcopy(sa.raw[8:14], sa.Remote)\n\tclear(sa.raw[14 : 14+IFNAMSIZ])\n\tcopy(sa.raw[14:], sa.Dev)\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrPPPoX, nil\n}\n\n// SockaddrTIPC implements the Sockaddr interface for AF_TIPC type sockets.\n// For more information on TIPC, see: http://tipc.sourceforge.net/.\ntype SockaddrTIPC struct {\n\t// Scope is the publication scopes when binding service/service range.\n\t// Should be set to TIPC_CLUSTER_SCOPE or TIPC_NODE_SCOPE.\n\tScope int\n\n\t// Addr is the type of address used to manipulate a socket. Addr must be\n\t// one of:\n\t//  - *TIPCSocketAddr: \"id\" variant in the C addr union\n\t//  - *TIPCServiceRange: \"nameseq\" variant in the C addr union\n\t//  - *TIPCServiceName: \"name\" variant in the C addr union\n\t//\n\t// If nil, EINVAL will be returned when the structure is used.\n\tAddr TIPCAddr\n\n\traw RawSockaddrTIPC\n}\n\n// TIPCAddr is implemented by types that can be used as an address for\n// SockaddrTIPC. It is only implemented by *TIPCSocketAddr, *TIPCServiceRange,\n// and *TIPCServiceName.\ntype TIPCAddr interface {\n\ttipcAddrtype() uint8\n\ttipcAddr() [12]byte\n}\n\nfunc (sa *TIPCSocketAddr) tipcAddr() [12]byte {\n\tvar out [12]byte\n\tcopy(out[:], (*(*[unsafe.Sizeof(TIPCSocketAddr{})]byte)(unsafe.Pointer(sa)))[:])\n\treturn out\n}\n\nfunc (sa *TIPCSocketAddr) tipcAddrtype() uint8 { return TIPC_SOCKET_ADDR }\n\nfunc (sa *TIPCServiceRange) tipcAddr() [12]byte {\n\tvar out [12]byte\n\tcopy(out[:], (*(*[unsafe.Sizeof(TIPCServiceRange{})]byte)(unsafe.Pointer(sa)))[:])\n\treturn out\n}\n\nfunc (sa *TIPCServiceRange) tipcAddrtype() uint8 { return TIPC_SERVICE_RANGE }\n\nfunc (sa *TIPCServiceName) tipcAddr() [12]byte {\n\tvar out [12]byte\n\tcopy(out[:], (*(*[unsafe.Sizeof(TIPCServiceName{})]byte)(unsafe.Pointer(sa)))[:])\n\treturn out\n}\n\nfunc (sa *TIPCServiceName) tipcAddrtype() uint8 { return TIPC_SERVICE_ADDR }\n\nfunc (sa *SockaddrTIPC) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Addr == nil {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_TIPC\n\tsa.raw.Scope = int8(sa.Scope)\n\tsa.raw.Addrtype = sa.Addr.tipcAddrtype()\n\tsa.raw.Addr = sa.Addr.tipcAddr()\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrTIPC, nil\n}\n\n// SockaddrL2TPIP implements the Sockaddr interface for IPPROTO_L2TP/AF_INET sockets.\ntype SockaddrL2TPIP struct {\n\tAddr   [4]byte\n\tConnId uint32\n\traw    RawSockaddrL2TPIP\n}\n\nfunc (sa *SockaddrL2TPIP) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_INET\n\tsa.raw.Conn_id = sa.ConnId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP, nil\n}\n\n// SockaddrL2TPIP6 implements the Sockaddr interface for IPPROTO_L2TP/AF_INET6 sockets.\ntype SockaddrL2TPIP6 struct {\n\tAddr   [16]byte\n\tZoneId uint32\n\tConnId uint32\n\traw    RawSockaddrL2TPIP6\n}\n\nfunc (sa *SockaddrL2TPIP6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_INET6\n\tsa.raw.Conn_id = sa.ConnId\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP6, nil\n}\n\n// SockaddrIUCV implements the Sockaddr interface for AF_IUCV sockets.\ntype SockaddrIUCV struct {\n\tUserID string\n\tName   string\n\traw    RawSockaddrIUCV\n}\n\nfunc (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_IUCV\n\t// These are EBCDIC encoded by the kernel, but we still need to pad them\n\t// with blanks. Initializing with blanks allows the caller to feed in either\n\t// a padded or an unpadded string.\n\tfor i := range 8 {\n\t\tsa.raw.Nodeid[i] = ' '\n\t\tsa.raw.User_id[i] = ' '\n\t\tsa.raw.Name[i] = ' '\n\t}\n\tif len(sa.UserID) > 8 || len(sa.Name) > 8 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tfor i, b := range []byte(sa.UserID[:]) {\n\t\tsa.raw.User_id[i] = int8(b)\n\t}\n\tfor i, b := range []byte(sa.Name[:]) {\n\t\tsa.raw.Name[i] = int8(b)\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrIUCV, nil\n}\n\ntype SockaddrNFC struct {\n\tDeviceIdx   uint32\n\tTargetIdx   uint32\n\tNFCProtocol uint32\n\traw         RawSockaddrNFC\n}\n\nfunc (sa *SockaddrNFC) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Sa_family = AF_NFC\n\tsa.raw.Dev_idx = sa.DeviceIdx\n\tsa.raw.Target_idx = sa.TargetIdx\n\tsa.raw.Nfc_protocol = sa.NFCProtocol\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrNFC, nil\n}\n\ntype SockaddrNFCLLCP struct {\n\tDeviceIdx      uint32\n\tTargetIdx      uint32\n\tNFCProtocol    uint32\n\tDestinationSAP uint8\n\tSourceSAP      uint8\n\tServiceName    string\n\traw            RawSockaddrNFCLLCP\n}\n\nfunc (sa *SockaddrNFCLLCP) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Sa_family = AF_NFC\n\tsa.raw.Dev_idx = sa.DeviceIdx\n\tsa.raw.Target_idx = sa.TargetIdx\n\tsa.raw.Nfc_protocol = sa.NFCProtocol\n\tsa.raw.Dsap = sa.DestinationSAP\n\tsa.raw.Ssap = sa.SourceSAP\n\tif len(sa.ServiceName) > len(sa.raw.Service_name) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tcopy(sa.raw.Service_name[:], sa.ServiceName)\n\tsa.raw.SetServiceNameLen(len(sa.ServiceName))\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrNFCLLCP, nil\n}\n\nvar socketProtocol = func(fd int) (int, error) {\n\treturn GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_NETLINK:\n\t\tpp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrNetlink)\n\t\tsa.Family = pp.Family\n\t\tsa.Pad = pp.Pad\n\t\tsa.Pid = pp.Pid\n\t\tsa.Groups = pp.Groups\n\t\treturn sa, nil\n\n\tcase AF_PACKET:\n\t\tpp := (*RawSockaddrLinklayer)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrLinklayer)\n\t\tsa.Protocol = pp.Protocol\n\t\tsa.Ifindex = int(pp.Ifindex)\n\t\tsa.Hatype = pp.Hatype\n\t\tsa.Pkttype = pp.Pkttype\n\t\tsa.Halen = pp.Halen\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\tif pp.Path[0] == 0 {\n\t\t\t// \"Abstract\" Unix domain socket.\n\t\t\t// Rewrite leading NUL as @ for textual display.\n\t\t\t// (This is the standard convention.)\n\t\t\t// Not friendly to overwrite in place,\n\t\t\t// but the callers below don't care.\n\t\t\tpp.Path[0] = '@'\n\t\t}\n\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Linux semantics for\n\t\t// abstract Unix domain sockets--they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs--but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tswitch proto {\n\t\tcase IPPROTO_L2TP:\n\t\t\tpp := (*RawSockaddrL2TPIP)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrL2TPIP)\n\t\t\tsa.ConnId = pp.Conn_id\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrInet4)\n\t\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\t}\n\n\tcase AF_INET6:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tswitch proto {\n\t\tcase IPPROTO_L2TP:\n\t\t\tpp := (*RawSockaddrL2TPIP6)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrL2TPIP6)\n\t\t\tsa.ConnId = pp.Conn_id\n\t\t\tsa.ZoneId = pp.Scope_id\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrInet6)\n\t\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\t\tsa.ZoneId = pp.Scope_id\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\t}\n\n\tcase AF_VSOCK:\n\t\tpp := (*RawSockaddrVM)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrVM{\n\t\t\tCID:   pp.Cid,\n\t\t\tPort:  pp.Port,\n\t\t\tFlags: pp.Flags,\n\t\t}\n\t\treturn sa, nil\n\tcase AF_BLUETOOTH:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// only BTPROTO_L2CAP and BTPROTO_RFCOMM can accept connections\n\t\tswitch proto {\n\t\tcase BTPROTO_L2CAP:\n\t\t\tpp := (*RawSockaddrL2)(unsafe.Pointer(rsa))\n\t\t\tsa := &SockaddrL2{\n\t\t\t\tPSM:      pp.Psm,\n\t\t\t\tCID:      pp.Cid,\n\t\t\t\tAddr:     pp.Bdaddr,\n\t\t\t\tAddrType: pp.Bdaddr_type,\n\t\t\t}\n\t\t\treturn sa, nil\n\t\tcase BTPROTO_RFCOMM:\n\t\t\tpp := (*RawSockaddrRFCOMM)(unsafe.Pointer(rsa))\n\t\t\tsa := &SockaddrRFCOMM{\n\t\t\t\tChannel: pp.Channel,\n\t\t\t\tAddr:    pp.Bdaddr,\n\t\t\t}\n\t\t\treturn sa, nil\n\t\t}\n\tcase AF_XDP:\n\t\tpp := (*RawSockaddrXDP)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrXDP{\n\t\t\tFlags:        pp.Flags,\n\t\t\tIfindex:      pp.Ifindex,\n\t\t\tQueueID:      pp.Queue_id,\n\t\t\tSharedUmemFD: pp.Shared_umem_fd,\n\t\t}\n\t\treturn sa, nil\n\tcase AF_PPPOX:\n\t\tpp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa))\n\t\tif binary.BigEndian.Uint32(pp[2:6]) != px_proto_oe {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t\tsa := &SockaddrPPPoE{\n\t\t\tSID:    binary.BigEndian.Uint16(pp[6:8]),\n\t\t\tRemote: pp[8:14],\n\t\t}\n\t\tfor i := 14; i < 14+IFNAMSIZ; i++ {\n\t\t\tif pp[i] == 0 {\n\t\t\t\tsa.Dev = string(pp[14:i])\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn sa, nil\n\tcase AF_TIPC:\n\t\tpp := (*RawSockaddrTIPC)(unsafe.Pointer(rsa))\n\n\t\tsa := &SockaddrTIPC{\n\t\t\tScope: int(pp.Scope),\n\t\t}\n\n\t\t// Determine which union variant is present in pp.Addr by checking\n\t\t// pp.Addrtype.\n\t\tswitch pp.Addrtype {\n\t\tcase TIPC_SERVICE_RANGE:\n\t\t\tsa.Addr = (*TIPCServiceRange)(unsafe.Pointer(&pp.Addr))\n\t\tcase TIPC_SERVICE_ADDR:\n\t\t\tsa.Addr = (*TIPCServiceName)(unsafe.Pointer(&pp.Addr))\n\t\tcase TIPC_SOCKET_ADDR:\n\t\t\tsa.Addr = (*TIPCSocketAddr)(unsafe.Pointer(&pp.Addr))\n\t\tdefault:\n\t\t\treturn nil, EINVAL\n\t\t}\n\n\t\treturn sa, nil\n\tcase AF_IUCV:\n\t\tpp := (*RawSockaddrIUCV)(unsafe.Pointer(rsa))\n\n\t\tvar user [8]byte\n\t\tvar name [8]byte\n\n\t\tfor i := range 8 {\n\t\t\tuser[i] = byte(pp.User_id[i])\n\t\t\tname[i] = byte(pp.Name[i])\n\t\t}\n\n\t\tsa := &SockaddrIUCV{\n\t\t\tUserID: string(user[:]),\n\t\t\tName:   string(name[:]),\n\t\t}\n\t\treturn sa, nil\n\n\tcase AF_CAN:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tpp := (*RawSockaddrCAN)(unsafe.Pointer(rsa))\n\n\t\tswitch proto {\n\t\tcase CAN_J1939:\n\t\t\tsa := &SockaddrCANJ1939{\n\t\t\t\tIfindex: int(pp.Ifindex),\n\t\t\t}\n\t\t\tname := (*[8]byte)(unsafe.Pointer(&sa.Name))\n\t\t\tfor i := range 8 {\n\t\t\t\tname[i] = pp.Addr[i]\n\t\t\t}\n\t\t\tpgn := (*[4]byte)(unsafe.Pointer(&sa.PGN))\n\t\t\tfor i := range 4 {\n\t\t\t\tpgn[i] = pp.Addr[i+8]\n\t\t\t}\n\t\t\taddr := (*[1]byte)(unsafe.Pointer(&sa.Addr))\n\t\t\taddr[0] = pp.Addr[12]\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\tsa := &SockaddrCAN{\n\t\t\t\tIfindex: int(pp.Ifindex),\n\t\t\t}\n\t\t\trx := (*[4]byte)(unsafe.Pointer(&sa.RxID))\n\t\t\tfor i := range 4 {\n\t\t\t\trx[i] = pp.Addr[i]\n\t\t\t}\n\t\t\ttx := (*[4]byte)(unsafe.Pointer(&sa.TxID))\n\t\t\tfor i := range 4 {\n\t\t\t\ttx[i] = pp.Addr[i+4]\n\t\t\t}\n\t\t\treturn sa, nil\n\t\t}\n\tcase AF_NFC:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tswitch proto {\n\t\tcase NFC_SOCKPROTO_RAW:\n\t\t\tpp := (*RawSockaddrNFC)(unsafe.Pointer(rsa))\n\t\t\tsa := &SockaddrNFC{\n\t\t\t\tDeviceIdx:   pp.Dev_idx,\n\t\t\t\tTargetIdx:   pp.Target_idx,\n\t\t\t\tNFCProtocol: pp.Nfc_protocol,\n\t\t\t}\n\t\t\treturn sa, nil\n\t\tcase NFC_SOCKPROTO_LLCP:\n\t\t\tpp := (*RawSockaddrNFCLLCP)(unsafe.Pointer(rsa))\n\t\t\tif uint64(pp.Service_name_len) > uint64(len(pp.Service_name)) {\n\t\t\t\treturn nil, EINVAL\n\t\t\t}\n\t\t\tsa := &SockaddrNFCLLCP{\n\t\t\t\tDeviceIdx:      pp.Dev_idx,\n\t\t\t\tTargetIdx:      pp.Target_idx,\n\t\t\t\tNFCProtocol:    pp.Nfc_protocol,\n\t\t\t\tDestinationSAP: pp.Dsap,\n\t\t\t\tSourceSAP:      pp.Ssap,\n\t\t\t\tServiceName:    string(pp.Service_name[:pp.Service_name_len]),\n\t\t\t}\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\treturn nil, EINVAL\n\t\t}\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, 0)\n\tif err != nil {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\nfunc GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {\n\tvar value IPMreqn\n\tvallen := _Socklen(SizeofIPMreqn)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptUcred(fd, level, opt int) (*Ucred, error) {\n\tvar value Ucred\n\tvallen := _Socklen(SizeofUcred)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {\n\tvar value TCPInfo\n\tvallen := _Socklen(SizeofTCPInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\n// GetsockoptTCPCCVegasInfo returns algorithm specific congestion control information for a socket using the \"vegas\"\n// algorithm.\n//\n// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:\n//\n//\talgo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)\nfunc GetsockoptTCPCCVegasInfo(fd, level, opt int) (*TCPVegasInfo, error) {\n\tvar value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment\n\tvallen := _Socklen(SizeofTCPCCInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\tout := (*TCPVegasInfo)(unsafe.Pointer(&value[0]))\n\treturn out, err\n}\n\n// GetsockoptTCPCCDCTCPInfo returns algorithm specific congestion control information for a socket using the \"dctp\"\n// algorithm.\n//\n// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:\n//\n//\talgo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)\nfunc GetsockoptTCPCCDCTCPInfo(fd, level, opt int) (*TCPDCTCPInfo, error) {\n\tvar value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment\n\tvallen := _Socklen(SizeofTCPCCInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\tout := (*TCPDCTCPInfo)(unsafe.Pointer(&value[0]))\n\treturn out, err\n}\n\n// GetsockoptTCPCCBBRInfo returns algorithm specific congestion control information for a socket using the \"bbr\"\n// algorithm.\n//\n// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:\n//\n//\talgo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)\nfunc GetsockoptTCPCCBBRInfo(fd, level, opt int) (*TCPBBRInfo, error) {\n\tvar value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment\n\tvallen := _Socklen(SizeofTCPCCInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\tout := (*TCPBBRInfo)(unsafe.Pointer(&value[0]))\n\treturn out, err\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\tif err == ERANGE {\n\t\t\tbuf = make([]byte, vallen)\n\t\t\terr = getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\nfunc GetsockoptTpacketStats(fd, level, opt int) (*TpacketStats, error) {\n\tvar value TpacketStats\n\tvallen := _Socklen(SizeofTpacketStats)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptTpacketStatsV3(fd, level, opt int) (*TpacketStatsV3, error) {\n\tvar value TpacketStatsV3\n\tvallen := _Socklen(SizeofTpacketStatsV3)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\nfunc SetsockoptPacketMreq(fd, level, opt int, mreq *PacketMreq) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\n// SetsockoptSockFprog attaches a classic BPF or an extended BPF program to a\n// socket to filter incoming packets.  See 'man 7 socket' for usage information.\nfunc SetsockoptSockFprog(fd, level, opt int, fprog *SockFprog) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(fprog), unsafe.Sizeof(*fprog))\n}\n\nfunc SetsockoptCanRawFilter(fd, level, opt int, filter []CanFilter) error {\n\tvar p unsafe.Pointer\n\tif len(filter) > 0 {\n\t\tp = unsafe.Pointer(&filter[0])\n\t}\n\treturn setsockopt(fd, level, opt, p, uintptr(len(filter)*SizeofCanFilter))\n}\n\nfunc SetsockoptTpacketReq(fd, level, opt int, tp *TpacketReq) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))\n}\n\nfunc SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))\n}\n\nfunc SetsockoptTCPRepairOpt(fd, level, opt int, o []TCPRepairOpt) (err error) {\n\tif len(o) == 0 {\n\t\treturn EINVAL\n\t}\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&o[0]), uintptr(SizeofTCPRepairOpt*len(o)))\n}\n\nfunc SetsockoptTCPMD5Sig(fd, level, opt int, s *TCPMD5Sig) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(s), unsafe.Sizeof(*s))\n}\n\n// Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html)\n\n// KeyctlInt calls keyctl commands in which each argument is an int.\n// These commands are KEYCTL_REVOKE, KEYCTL_CHOWN, KEYCTL_CLEAR, KEYCTL_LINK,\n// KEYCTL_UNLINK, KEYCTL_NEGATE, KEYCTL_SET_REQKEY_KEYRING, KEYCTL_SET_TIMEOUT,\n// KEYCTL_ASSUME_AUTHORITY, KEYCTL_SESSION_TO_PARENT, KEYCTL_REJECT,\n// KEYCTL_INVALIDATE, and KEYCTL_GET_PERSISTENT.\n//sys\tKeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlBuffer calls keyctl commands in which the third and fourth\n// arguments are a buffer and its length, respectively.\n// These commands are KEYCTL_UPDATE, KEYCTL_READ, and KEYCTL_INSTANTIATE.\n//sys\tKeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlString calls keyctl commands which return a string.\n// These commands are KEYCTL_DESCRIBE and KEYCTL_GET_SECURITY.\nfunc KeyctlString(cmd int, id int) (string, error) {\n\t// We must loop as the string data may change in between the syscalls.\n\t// We could allocate a large buffer here to reduce the chance that the\n\t// syscall needs to be called twice; however, this is unnecessary as\n\t// the performance loss is negligible.\n\tvar buffer []byte\n\tfor {\n\t\t// Try to fill the buffer with data\n\t\tlength, err := KeyctlBuffer(cmd, id, buffer, 0)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\t// Check if the data was written\n\t\tif length <= len(buffer) {\n\t\t\t// Exclude the null terminator\n\t\t\treturn string(buffer[:length-1]), nil\n\t\t}\n\n\t\t// Make a bigger buffer if needed\n\t\tbuffer = make([]byte, length)\n\t}\n}\n\n// Keyctl commands with special signatures.\n\n// KeyctlGetKeyringID implements the KEYCTL_GET_KEYRING_ID command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_get_keyring_ID.3.html\nfunc KeyctlGetKeyringID(id int, create bool) (ringid int, err error) {\n\tcreateInt := 0\n\tif create {\n\t\tcreateInt = 1\n\t}\n\treturn KeyctlInt(KEYCTL_GET_KEYRING_ID, id, createInt, 0, 0)\n}\n\n// KeyctlSetperm implements the KEYCTL_SETPERM command. The perm value is the\n// key handle permission mask as described in the \"keyctl setperm\" section of\n// http://man7.org/linux/man-pages/man1/keyctl.1.html.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_setperm.3.html\nfunc KeyctlSetperm(id int, perm uint32) error {\n\t_, err := KeyctlInt(KEYCTL_SETPERM, id, int(perm), 0, 0)\n\treturn err\n}\n\n//sys\tkeyctlJoin(cmd int, arg2 string) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlJoinSessionKeyring implements the KEYCTL_JOIN_SESSION_KEYRING command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_join_session_keyring.3.html\nfunc KeyctlJoinSessionKeyring(name string) (ringid int, err error) {\n\treturn keyctlJoin(KEYCTL_JOIN_SESSION_KEYRING, name)\n}\n\n//sys\tkeyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlSearch implements the KEYCTL_SEARCH command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_search.3.html\nfunc KeyctlSearch(ringid int, keyType, description string, destRingid int) (id int, err error) {\n\treturn keyctlSearch(KEYCTL_SEARCH, ringid, keyType, description, destRingid)\n}\n\n//sys\tkeyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) = SYS_KEYCTL\n\n// KeyctlInstantiateIOV implements the KEYCTL_INSTANTIATE_IOV command. This\n// command is similar to KEYCTL_INSTANTIATE, except that the payload is a slice\n// of Iovec (each of which represents a buffer) instead of a single buffer.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_instantiate_iov.3.html\nfunc KeyctlInstantiateIOV(id int, payload []Iovec, ringid int) error {\n\treturn keyctlIOV(KEYCTL_INSTANTIATE_IOV, id, payload, ringid)\n}\n\n//sys\tkeyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlDHCompute implements the KEYCTL_DH_COMPUTE command. This command\n// computes a Diffie-Hellman shared secret based on the provide params. The\n// secret is written to the provided buffer and the returned size is the number\n// of bytes written (returning an error if there is insufficient space in the\n// buffer). If a nil buffer is passed in, this function returns the minimum\n// buffer length needed to store the appropriate data. Note that this differs\n// from KEYCTL_READ's behavior which always returns the requested payload size.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_dh_compute.3.html\nfunc KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error) {\n\treturn keyctlDH(KEYCTL_DH_COMPUTE, params, buffer)\n}\n\n// KeyctlRestrictKeyring implements the KEYCTL_RESTRICT_KEYRING command. This\n// command limits the set of keys that can be linked to the keyring, regardless\n// of keyring permissions. The command requires the \"setattr\" permission.\n//\n// When called with an empty keyType the command locks the keyring, preventing\n// any further keys from being linked to the keyring.\n//\n// The \"asymmetric\" keyType defines restrictions requiring key payloads to be\n// DER encoded X.509 certificates signed by keys in another keyring. Restrictions\n// for \"asymmetric\" include \"builtin_trusted\", \"builtin_and_secondary_trusted\",\n// \"key_or_keyring:<key>\", and \"key_or_keyring:<key>:chain\".\n//\n// As of Linux 4.12, only the \"asymmetric\" keyType defines type-specific\n// restrictions.\n//\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_restrict_keyring.3.html\n// http://man7.org/linux/man-pages/man2/keyctl.2.html\nfunc KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error {\n\tif keyType == \"\" {\n\t\treturn keyctlRestrictKeyring(KEYCTL_RESTRICT_KEYRING, ringid)\n\t}\n\treturn keyctlRestrictKeyringByType(KEYCTL_RESTRICT_KEYRING, ringid, keyType, restriction)\n}\n\n//sys\tkeyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL\n//sys\tkeyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\tif emptyIovecs(iov) {\n\t\t\tvar sockType int\n\t\t\tsockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// receive at least one normal byte\n\t\t\tif sockType != SOCK_DGRAM {\n\t\t\t\tvar iova [1]Iovec\n\t\t\t\tiova[0].Base = &dummy\n\t\t\t\tiova[0].SetLen(1)\n\t\t\t\tiov = iova[:]\n\t\t\t}\n\t\t}\n\t\tmsg.Control = &oob[0]\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\treturn\n}\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(ptr)\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar sockType int\n\t\t\tsockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\t// send at least one normal byte\n\t\t\tif sockType != SOCK_DGRAM {\n\t\t\t\tvar iova [1]Iovec\n\t\t\t\tiova[0].Base = &dummy\n\t\t\t\tiova[0].SetLen(1)\n\t\t\t\tiov = iova[:]\n\t\t\t}\n\t\t}\n\t\tmsg.Control = &oob[0]\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n// BindToDevice binds the socket associated with fd to device.\nfunc BindToDevice(fd int, device string) (err error) {\n\treturn SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device)\n}\n\n//sys\tptrace(request int, pid int, addr uintptr, data uintptr) (err error)\n//sys\tptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) = SYS_PTRACE\n\nfunc ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err error) {\n\t// The peek requests are machine-size oriented, so we wrap it\n\t// to retrieve arbitrary-length data.\n\n\t// The ptrace syscall differs from glibc's ptrace.\n\t// Peeks returns the word in *data, not as the return value.\n\n\tvar buf [SizeofPtr]byte\n\n\t// Leading edge. PEEKTEXT/PEEKDATA don't require aligned\n\t// access (PEEKUSER warns that it might), but if we don't\n\t// align our reads, we might straddle an unmapped page\n\t// boundary and not get the bytes leading up to the page\n\t// boundary.\n\tn := 0\n\tif addr%SizeofPtr != 0 {\n\t\terr = ptracePtr(req, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tn += copy(out, buf[addr%SizeofPtr:])\n\t\tout = out[n:]\n\t}\n\n\t// Remainder.\n\tfor len(out) > 0 {\n\t\t// We use an internal buffer to guarantee alignment.\n\t\t// It's not documented if this is necessary, but we're paranoid.\n\t\terr = ptracePtr(req, pid, addr+uintptr(n), unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tcopied := copy(out, buf[0:])\n\t\tn += copied\n\t\tout = out[copied:]\n\t}\n\n\treturn n, nil\n}\n\nfunc PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKTEXT, pid, addr, out)\n}\n\nfunc PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKDATA, pid, addr, out)\n}\n\nfunc PtracePeekUser(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKUSR, pid, addr, out)\n}\n\nfunc ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (count int, err error) {\n\t// As for ptracePeek, we need to align our accesses to deal\n\t// with the possibility of straddling an invalid page.\n\n\t// Leading edge.\n\tn := 0\n\tif addr%SizeofPtr != 0 {\n\t\tvar buf [SizeofPtr]byte\n\t\terr = ptracePtr(peekReq, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tn += copy(buf[addr%SizeofPtr:], data)\n\t\tword := *((*uintptr)(unsafe.Pointer(&buf[0])))\n\t\terr = ptrace(pokeReq, pid, addr-addr%SizeofPtr, word)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tdata = data[n:]\n\t}\n\n\t// Interior.\n\tfor len(data) > SizeofPtr {\n\t\tword := *((*uintptr)(unsafe.Pointer(&data[0])))\n\t\terr = ptrace(pokeReq, pid, addr+uintptr(n), word)\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tn += SizeofPtr\n\t\tdata = data[SizeofPtr:]\n\t}\n\n\t// Trailing edge.\n\tif len(data) > 0 {\n\t\tvar buf [SizeofPtr]byte\n\t\terr = ptracePtr(peekReq, pid, addr+uintptr(n), unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tcopy(buf[0:], data)\n\t\tword := *((*uintptr)(unsafe.Pointer(&buf[0])))\n\t\terr = ptrace(pokeReq, pid, addr+uintptr(n), word)\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tn += len(data)\n\t}\n\n\treturn n, nil\n}\n\nfunc PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKETEXT, PTRACE_PEEKTEXT, pid, addr, data)\n}\n\nfunc PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data)\n}\n\nfunc PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data)\n}\n\n// elfNT_PRSTATUS is a copy of the debug/elf.NT_PRSTATUS constant so\n// x/sys/unix doesn't need to depend on debug/elf and thus\n// compress/zlib, debug/dwarf, and other packages.\nconst elfNT_PRSTATUS = 1\n\nfunc PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {\n\tvar iov Iovec\n\tiov.Base = (*byte)(unsafe.Pointer(regsout))\n\tiov.SetLen(int(unsafe.Sizeof(*regsout)))\n\treturn ptracePtr(PTRACE_GETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov))\n}\n\nfunc PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {\n\tvar iov Iovec\n\tiov.Base = (*byte)(unsafe.Pointer(regs))\n\tiov.SetLen(int(unsafe.Sizeof(*regs)))\n\treturn ptracePtr(PTRACE_SETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov))\n}\n\nfunc PtraceSetOptions(pid int, options int) (err error) {\n\treturn ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options))\n}\n\nfunc PtraceGetEventMsg(pid int) (msg uint, err error) {\n\tvar data _C_long\n\terr = ptracePtr(PTRACE_GETEVENTMSG, pid, 0, unsafe.Pointer(&data))\n\tmsg = uint(data)\n\treturn\n}\n\nfunc PtraceCont(pid int, signal int) (err error) {\n\treturn ptrace(PTRACE_CONT, pid, 0, uintptr(signal))\n}\n\nfunc PtraceSyscall(pid int, signal int) (err error) {\n\treturn ptrace(PTRACE_SYSCALL, pid, 0, uintptr(signal))\n}\n\nfunc PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) }\n\nfunc PtraceInterrupt(pid int) (err error) { return ptrace(PTRACE_INTERRUPT, pid, 0, 0) }\n\nfunc PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) }\n\nfunc PtraceSeize(pid int) (err error) { return ptrace(PTRACE_SEIZE, pid, 0, 0) }\n\nfunc PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) }\n\n//sys\treboot(magic1 uint, magic2 uint, cmd int, arg string) (err error)\n\nfunc Reboot(cmd int) (err error) {\n\treturn reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, \"\")\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\n//sys\tmount(source string, target string, fstype string, flags uintptr, data *byte) (err error)\n\nfunc Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\t// Certain file systems get rather angry and EINVAL if you give\n\t// them an empty string of data, rather than NULL.\n\tif data == \"\" {\n\t\treturn mount(source, target, fstype, flags, nil)\n\t}\n\tdatap, err := BytePtrFromString(data)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn mount(source, target, fstype, flags, datap)\n}\n\n//sys\tmountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) = SYS_MOUNT_SETATTR\n\n// MountSetattr is a wrapper for mount_setattr(2).\n// https://man7.org/linux/man-pages/man2/mount_setattr.2.html\n//\n// Requires kernel >= 5.12.\nfunc MountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr) error {\n\treturn mountSetattr(dirfd, pathname, flags, attr, unsafe.Sizeof(*attr))\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n// Sendto\n// Recvfrom\n// Socketpair\n\n/*\n * Direct access\n */\n//sys\tAcct(path string) (err error)\n//sys\tAddKey(keyType string, description string, payload []byte, ringid int) (id int, err error)\n//sys\tAdjtimex(buf *Timex) (state int, err error)\n//sysnb\tCapget(hdr *CapUserHeader, data *CapUserData) (err error)\n//sysnb\tCapset(hdr *CapUserHeader, data *CapUserData) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockAdjtime(clockid int32, buf *Timex) (state int, err error)\n//sys\tClockGetres(clockid int32, res *Timespec) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClockSettime(clockid int32, time *Timespec) (err error)\n//sys\tClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tCloseRange(first uint, last uint, flags uint) (err error)\n//sys\tCopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tDeleteModule(name string, flags int) (err error)\n//sys\tDup(oldfd int) (fd int, err error)\n\nfunc Dup2(oldfd, newfd int) error {\n\treturn Dup3(oldfd, newfd, 0)\n}\n\n//sys\tDup3(oldfd int, newfd int, flags int) (err error)\n//sysnb\tEpollCreate1(flag int) (fd int, err error)\n//sysnb\tEpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error)\n//sys\tEventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2\n//sys\tExit(code int) = SYS_EXIT_GROUP\n//sys\tFallocate(fd int, mode uint32, off int64, len int64) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n//sys\tFgetxattr(fd int, attr string, dest []byte) (sz int, err error)\n//sys\tFinitModule(fd int, params string, flags int) (err error)\n//sys\tFlistxattr(fd int, dest []byte) (sz int, err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFremovexattr(fd int, attr string) (err error)\n//sys\tFsetxattr(fd int, attr string, dest []byte, flags int) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFsmount(fd int, flags int, mountAttrs int) (fsfd int, err error)\n//sys\tFsopen(fsName string, flags int) (fd int, err error)\n//sys\tFspick(dirfd int, pathName string, flags int) (fd int, err error)\n\n//sys\tfsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error)\n\nfunc fsconfigCommon(fd int, cmd uint, key string, value *byte, aux int) (err error) {\n\tvar keyp *byte\n\tif keyp, err = BytePtrFromString(key); err != nil {\n\t\treturn\n\t}\n\treturn fsconfig(fd, cmd, keyp, value, aux)\n}\n\n// FsconfigSetFlag is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_FLAG.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\nfunc FsconfigSetFlag(fd int, key string) (err error) {\n\treturn fsconfigCommon(fd, FSCONFIG_SET_FLAG, key, nil, 0)\n}\n\n// FsconfigSetString is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_STRING.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// value is the parameter value to set.\nfunc FsconfigSetString(fd int, key string, value string) (err error) {\n\tvar valuep *byte\n\tif valuep, err = BytePtrFromString(value); err != nil {\n\t\treturn\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_STRING, key, valuep, 0)\n}\n\n// FsconfigSetBinary is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_BINARY.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// value is the parameter value to set.\nfunc FsconfigSetBinary(fd int, key string, value []byte) (err error) {\n\tif len(value) == 0 {\n\t\treturn EINVAL\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_BINARY, key, &value[0], len(value))\n}\n\n// FsconfigSetPath is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_PATH.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// path is a non-empty path for specified key.\n// atfd is a file descriptor at which to start lookup from or AT_FDCWD.\nfunc FsconfigSetPath(fd int, key string, path string, atfd int) (err error) {\n\tvar valuep *byte\n\tif valuep, err = BytePtrFromString(path); err != nil {\n\t\treturn\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_PATH, key, valuep, atfd)\n}\n\n// FsconfigSetPathEmpty is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_PATH_EMPTY. The same as\n// FconfigSetPath but with AT_PATH_EMPTY implied.\nfunc FsconfigSetPathEmpty(fd int, key string, path string, atfd int) (err error) {\n\tvar valuep *byte\n\tif valuep, err = BytePtrFromString(path); err != nil {\n\t\treturn\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_PATH_EMPTY, key, valuep, atfd)\n}\n\n// FsconfigSetFd is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_FD.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// value is a file descriptor to be assigned to specified key.\nfunc FsconfigSetFd(fd int, key string, value int) (err error) {\n\treturn fsconfigCommon(fd, FSCONFIG_SET_FD, key, nil, value)\n}\n\n// FsconfigCreate is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_CMD_CREATE.\n//\n// fd is the filesystem context to act upon.\nfunc FsconfigCreate(fd int) (err error) {\n\treturn fsconfig(fd, FSCONFIG_CMD_CREATE, nil, nil, 0)\n}\n\n// FsconfigReconfigure is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_CMD_RECONFIGURE.\n//\n// fd is the filesystem context to act upon.\nfunc FsconfigReconfigure(fd int) (err error) {\n\treturn fsconfig(fd, FSCONFIG_CMD_RECONFIGURE, nil, nil, 0)\n}\n\n//sys\tGetdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n\nfunc Getpgrp() (pid int) {\n\tpid, _ = Getpgid(0)\n\treturn\n}\n\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvdsoRet, supported := vgetrandom(buf, uint32(flags))\n\tif supported {\n\t\tif vdsoRet < 0 {\n\t\t\treturn 0, errnoErr(syscall.Errno(-vdsoRet))\n\t\t}\n\t\treturn vdsoRet, nil\n\t}\n\tvar p *byte\n\tif len(buf) > 0 {\n\t\tp = &buf[0]\n\t}\n\tr, _, e := Syscall(SYS_GETRANDOM, uintptr(unsafe.Pointer(p)), uintptr(len(buf)), uintptr(flags))\n\tif e != 0 {\n\t\treturn 0, errnoErr(e)\n\t}\n\treturn int(r), nil\n}\n\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettid() (tid int)\n//sys\tGetxattr(path string, attr string, dest []byte) (sz int, err error)\n//sys\tInitModule(moduleImage []byte, params string) (err error)\n//sys\tInotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error)\n//sysnb\tInotifyInit1(flags int) (fd int, err error)\n//sysnb\tInotifyRmWatch(fd int, watchdesc uint32) (success int, err error)\n//sysnb\tKill(pid int, sig syscall.Signal) (err error)\n//sys\tKlogctl(typ int, buf []byte) (n int, err error) = SYS_SYSLOG\n//sys\tLgetxattr(path string, attr string, dest []byte) (sz int, err error)\n//sys\tListxattr(path string, dest []byte) (sz int, err error)\n//sys\tLlistxattr(path string, dest []byte) (sz int, err error)\n//sys\tLremovexattr(path string, attr string) (err error)\n//sys\tLsetxattr(path string, attr string, data []byte, flags int) (err error)\n//sys\tMemfdCreate(name string, flags int) (fd int, err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tMoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpenTree(dfd int, fileName string, flags uint) (r int, err error)\n//sys\tPerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error)\n//sys\tPivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT\n//sys\tPrctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)\n//sys\tpselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tRemovexattr(path string, attr string) (err error)\n//sys\tRenameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error)\n//sys\tRequestKey(keyType string, description string, callback string, destRingid int) (id int, err error)\n//sys\tSetdomainname(p []byte) (err error)\n//sys\tSethostname(p []byte) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tv *Timeval) (err error)\n//sys\tSetns(fd int, nstype int) (err error)\n\n//go:linkname syscall_prlimit syscall.prlimit\nfunc syscall_prlimit(pid, resource int, newlimit, old *syscall.Rlimit) error\n\nfunc Prlimit(pid, resource int, newlimit, old *Rlimit) error {\n\t// Just call the syscall version, because as of Go 1.21\n\t// it will affect starting a new process.\n\treturn syscall_prlimit(pid, resource, (*syscall.Rlimit)(newlimit), (*syscall.Rlimit)(old))\n}\n\n// PrctlRetInt performs a prctl operation specified by option and further\n// optional arguments arg2 through arg5 depending on option. It returns a\n// non-negative integer that is returned by the prctl syscall.\nfunc PrctlRetInt(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (int, error) {\n\tret, _, err := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(ret), nil\n}\n\nfunc Setuid(uid int) (err error) {\n\treturn syscall.Setuid(uid)\n}\n\nfunc Setgid(gid int) (err error) {\n\treturn syscall.Setgid(gid)\n}\n\nfunc Setreuid(ruid, euid int) (err error) {\n\treturn syscall.Setreuid(ruid, euid)\n}\n\nfunc Setregid(rgid, egid int) (err error) {\n\treturn syscall.Setregid(rgid, egid)\n}\n\nfunc Setresuid(ruid, euid, suid int) (err error) {\n\treturn syscall.Setresuid(ruid, euid, suid)\n}\n\nfunc Setresgid(rgid, egid, sgid int) (err error) {\n\treturn syscall.Setresgid(rgid, egid, sgid)\n}\n\n// SetfsgidRetGid sets fsgid for current thread and returns previous fsgid set.\n// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability.\n// If the call fails due to other reasons, current fsgid will be returned.\nfunc SetfsgidRetGid(gid int) (int, error) {\n\treturn setfsgid(gid)\n}\n\n// SetfsuidRetUid sets fsuid for current thread and returns previous fsuid set.\n// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability\n// If the call fails due to other reasons, current fsuid will be returned.\nfunc SetfsuidRetUid(uid int) (int, error) {\n\treturn setfsuid(uid)\n}\n\nfunc Setfsgid(gid int) error {\n\t_, err := setfsgid(gid)\n\treturn err\n}\n\nfunc Setfsuid(uid int) error {\n\t_, err := setfsuid(uid)\n\treturn err\n}\n\nfunc Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) {\n\treturn signalfd(fd, sigmask, _C__NSIG/8, flags)\n}\n\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tSetxattr(path string, attr string, data []byte, flags int) (err error)\n//sys\tsignalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) = SYS_SIGNALFD4\n//sys\tStatx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)\n//sys\tSync()\n//sys\tSyncfs(fd int) (err error)\n//sysnb\tSysinfo(info *Sysinfo_t) (err error)\n//sys\tTee(rfd int, wfd int, len int, flags int) (n int64, err error)\n//sysnb\tTimerfdCreate(clockid int, flags int) (fd int, err error)\n//sysnb\tTimerfdGettime(fd int, currValue *ItimerSpec) (err error)\n//sysnb\tTimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error)\n//sysnb\tTgkill(tgid int, tid int, sig syscall.Signal) (err error)\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sysnb\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//sys\tUnmount(target string, flags int) (err error) = SYS_UMOUNT2\n//sys\tUnshare(flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\texitThread(code int) (err error) = SYS_EXIT\n//sys\treadv(fd int, iovs []Iovec) (n int, err error) = SYS_READV\n//sys\twritev(fd int, iovs []Iovec) (n int, err error) = SYS_WRITEV\n//sys\tpreadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PREADV\n//sys\tpwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PWRITEV\n//sys\tpreadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PREADV2\n//sys\tpwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PWRITEV2\n\n// minIovec is the size of the small initial allocation used by\n// Readv, Writev, etc.\n//\n// This small allocation gets stack allocated, which lets the\n// common use case of len(iovs) <= minIovs avoid more expensive\n// heap allocations.\nconst minIovec = 8\n\n// appendBytes converts bs to Iovecs and appends them to vecs.\nfunc appendBytes(vecs []Iovec, bs [][]byte) []Iovec {\n\tfor _, b := range bs {\n\t\tvar v Iovec\n\t\tv.SetLen(len(b))\n\t\tif len(b) > 0 {\n\t\t\tv.Base = &b[0]\n\t\t} else {\n\t\t\tv.Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t\tvecs = append(vecs, v)\n\t}\n\treturn vecs\n}\n\n// offs2lohi splits offs into its low and high order bits.\nfunc offs2lohi(offs int64) (lo, hi uintptr) {\n\tconst longBits = SizeofLong * 8\n\treturn uintptr(offs), uintptr(uint64(offs) >> (longBits - 1) >> 1) // two shifts to avoid false positive in vet\n}\n\nfunc Readv(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tn, err = readv(fd, iovecs)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tlo, hi := offs2lohi(offset)\n\tn, err = preadv(fd, iovecs, lo, hi)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc Preadv2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tlo, hi := offs2lohi(offset)\n\tn, err = preadv2(fd, iovecs, lo, hi, flags)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc readvRacedetect(iovecs []Iovec, n int, err error) {\n\tif !raceenabled {\n\t\treturn\n\t}\n\tfor i := 0; n > 0 && i < len(iovecs); i++ {\n\t\tm := min(int(iovecs[i].Len), n)\n\t\tn -= m\n\t\tif m > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(iovecs[i].Base), m)\n\t\t}\n\t}\n\tif err == nil {\n\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t}\n}\n\nfunc Writev(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = writev(fd, iovecs)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tlo, hi := offs2lohi(offset)\n\tn, err = pwritev(fd, iovecs, lo, hi)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc Pwritev2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tlo, hi := offs2lohi(offset)\n\tn, err = pwritev2(fd, iovecs, lo, hi, flags)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc writevRacedetect(iovecs []Iovec, n int) {\n\tif !raceenabled {\n\t\treturn\n\t}\n\tfor i := 0; n > 0 && i < len(iovecs); i++ {\n\t\tm := min(int(iovecs[i].Len), n)\n\t\tn -= m\n\t\tif m > 0 {\n\t\t\traceReadRange(unsafe.Pointer(iovecs[i].Base), m)\n\t\t}\n\t}\n}\n\n// mmap varies by architecture; see syscall_linux_*.go.\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tmremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error)\n//sys\tMadvise(b []byte, advice int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n\nconst (\n\tmremapFixed     = MREMAP_FIXED\n\tmremapDontunmap = MREMAP_DONTUNMAP\n\tmremapMaymove   = MREMAP_MAYMOVE\n)\n\n// Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd,\n// using the specified flags.\nfunc Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {\n\tvar p unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\tp = unsafe.Pointer(&iovs[0])\n\t}\n\n\tn, _, errno := Syscall6(SYS_VMSPLICE, uintptr(fd), uintptr(p), uintptr(len(iovs)), uintptr(flags), 0, 0)\n\tif errno != 0 {\n\t\treturn 0, syscall.Errno(errno)\n\t}\n\n\treturn int(n), nil\n}\n\nfunc isGroupMember(gid int) bool {\n\tgroups, err := Getgroups()\n\tif err != nil {\n\t\treturn false\n\t}\n\n\treturn slices.Contains(groups, gid)\n}\n\nfunc isCapDacOverrideSet() bool {\n\thdr := CapUserHeader{Version: LINUX_CAPABILITY_VERSION_3}\n\tdata := [2]CapUserData{}\n\terr := Capget(&hdr, &data[0])\n\n\treturn err == nil && data[0].Effective&(1<<CAP_DAC_OVERRIDE) != 0\n}\n\n//sys\tfaccessat(dirfd int, path string, mode uint32) (err error)\n//sys\tFaccessat2(dirfd int, path string, mode uint32, flags int) (err error)\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tif flags == 0 {\n\t\treturn faccessat(dirfd, path, mode)\n\t}\n\n\tif err := Faccessat2(dirfd, path, mode, flags); err != ENOSYS && err != EPERM {\n\t\treturn err\n\t}\n\n\t// The Linux kernel faccessat system call does not take any flags.\n\t// The glibc faccessat implements the flags itself; see\n\t// https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;hb=HEAD\n\t// Because people naturally expect syscall.Faccessat to act\n\t// like C faccessat, we do the same.\n\n\tif flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 {\n\t\treturn EINVAL\n\t}\n\n\tvar st Stat_t\n\tif err := Fstatat(dirfd, path, &st, flags&AT_SYMLINK_NOFOLLOW); err != nil {\n\t\treturn err\n\t}\n\n\tmode &= 7\n\tif mode == 0 {\n\t\treturn nil\n\t}\n\n\tvar uid int\n\tif flags&AT_EACCESS != 0 {\n\t\tuid = Geteuid()\n\t\tif uid != 0 && isCapDacOverrideSet() {\n\t\t\t// If CAP_DAC_OVERRIDE is set, file access check is\n\t\t\t// done by the kernel in the same way as for root\n\t\t\t// (see generic_permission() in the Linux sources).\n\t\t\tuid = 0\n\t\t}\n\t} else {\n\t\tuid = Getuid()\n\t}\n\n\tif uid == 0 {\n\t\tif mode&1 == 0 {\n\t\t\t// Root can read and write any file.\n\t\t\treturn nil\n\t\t}\n\t\tif st.Mode&0111 != 0 {\n\t\t\t// Root can execute any file that anybody can execute.\n\t\t\treturn nil\n\t\t}\n\t\treturn EACCES\n\t}\n\n\tvar fmode uint32\n\tif uint32(uid) == st.Uid {\n\t\tfmode = (st.Mode >> 6) & 7\n\t} else {\n\t\tvar gid int\n\t\tif flags&AT_EACCESS != 0 {\n\t\t\tgid = Getegid()\n\t\t} else {\n\t\t\tgid = Getgid()\n\t\t}\n\n\t\tif uint32(gid) == st.Gid || isGroupMember(int(st.Gid)) {\n\t\t\tfmode = (st.Mode >> 3) & 7\n\t\t} else {\n\t\t\tfmode = st.Mode & 7\n\t\t}\n\t}\n\n\tif fmode&mode == mode {\n\t\treturn nil\n\t}\n\n\treturn EACCES\n}\n\n//sys\tnameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT\n//sys\topenByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT\n\n// fileHandle is the argument to nameToHandleAt and openByHandleAt. We\n// originally tried to generate it via unix/linux/types.go with \"type\n// fileHandle C.struct_file_handle\" but that generated empty structs\n// for mips64 and mips64le. Instead, hard code it for now (it's the\n// same everywhere else) until the mips64 generator issue is fixed.\ntype fileHandle struct {\n\tBytes uint32\n\tType  int32\n}\n\n// FileHandle represents the C struct file_handle used by\n// name_to_handle_at (see NameToHandleAt) and open_by_handle_at (see\n// OpenByHandleAt).\ntype FileHandle struct {\n\t*fileHandle\n}\n\n// NewFileHandle constructs a FileHandle.\nfunc NewFileHandle(handleType int32, handle []byte) FileHandle {\n\tconst hdrSize = unsafe.Sizeof(fileHandle{})\n\tbuf := make([]byte, hdrSize+uintptr(len(handle)))\n\tcopy(buf[hdrSize:], handle)\n\tfh := (*fileHandle)(unsafe.Pointer(&buf[0]))\n\tfh.Type = handleType\n\tfh.Bytes = uint32(len(handle))\n\treturn FileHandle{fh}\n}\n\nfunc (fh *FileHandle) Size() int   { return int(fh.fileHandle.Bytes) }\nfunc (fh *FileHandle) Type() int32 { return fh.fileHandle.Type }\nfunc (fh *FileHandle) Bytes() []byte {\n\tn := fh.Size()\n\tif n == 0 {\n\t\treturn nil\n\t}\n\treturn unsafe.Slice((*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type))+4)), n)\n}\n\n// NameToHandleAt wraps the name_to_handle_at system call; it obtains\n// a handle for a path name.\nfunc NameToHandleAt(dirfd int, path string, flags int) (handle FileHandle, mountID int, err error) {\n\tvar mid _C_int\n\t// Try first with a small buffer, assuming the handle will\n\t// only be 32 bytes.\n\tsize := uint32(32 + unsafe.Sizeof(fileHandle{}))\n\tdidResize := false\n\tfor {\n\t\tbuf := make([]byte, size)\n\t\tfh := (*fileHandle)(unsafe.Pointer(&buf[0]))\n\t\tfh.Bytes = size - uint32(unsafe.Sizeof(fileHandle{}))\n\t\terr = nameToHandleAt(dirfd, path, fh, &mid, flags)\n\t\tif err == EOVERFLOW {\n\t\t\tif didResize {\n\t\t\t\t// We shouldn't need to resize more than once\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdidResize = true\n\t\t\tsize = fh.Bytes + uint32(unsafe.Sizeof(fileHandle{}))\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\treturn FileHandle{fh}, int(mid), nil\n\t}\n}\n\n// OpenByHandleAt wraps the open_by_handle_at system call; it opens a\n// file via a handle as previously returned by NameToHandleAt.\nfunc OpenByHandleAt(mountFD int, handle FileHandle, flags int) (fd int, err error) {\n\treturn openByHandleAt(mountFD, handle.fileHandle, flags)\n}\n\n// Klogset wraps the sys_syslog system call; it sets console_loglevel to\n// the value specified by arg and passes a dummy pointer to bufp.\nfunc Klogset(typ int, arg int) (err error) {\n\tvar p unsafe.Pointer\n\t_, _, errno := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(p), uintptr(arg))\n\tif errno != 0 {\n\t\treturn errnoErr(errno)\n\t}\n\treturn nil\n}\n\n// RemoteIovec is Iovec with the pointer replaced with an integer.\n// It is used for ProcessVMReadv and ProcessVMWritev, where the pointer\n// refers to a location in a different process' address space, which\n// would confuse the Go garbage collector.\ntype RemoteIovec struct {\n\tBase uintptr\n\tLen  int\n}\n\n//sys\tProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_READV\n//sys\tProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_WRITEV\n\n//sys\tPidfdOpen(pid int, flags int) (fd int, err error) = SYS_PIDFD_OPEN\n//sys\tPidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) = SYS_PIDFD_GETFD\n//sys\tPidfdSendSignal(pidfd int, sig Signal, info *Siginfo, flags int) (err error) = SYS_PIDFD_SEND_SIGNAL\n\n//sys\tshmat(id int, addr uintptr, flag int) (ret uintptr, err error)\n//sys\tshmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error)\n//sys\tshmdt(addr uintptr) (err error)\n//sys\tshmget(key int, size int, flag int) (id int, err error)\n\n//sys\tgetitimer(which int, currValue *Itimerval) (err error)\n//sys\tsetitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error)\n\n// MakeItimerval creates an Itimerval from interval and value durations.\nfunc MakeItimerval(interval, value time.Duration) Itimerval {\n\treturn Itimerval{\n\t\tInterval: NsecToTimeval(interval.Nanoseconds()),\n\t\tValue:    NsecToTimeval(value.Nanoseconds()),\n\t}\n}\n\n// A value which may be passed to the which parameter for Getitimer and\n// Setitimer.\ntype ItimerWhich int\n\n// Possible which values for Getitimer and Setitimer.\nconst (\n\tItimerReal    ItimerWhich = ITIMER_REAL\n\tItimerVirtual ItimerWhich = ITIMER_VIRTUAL\n\tItimerProf    ItimerWhich = ITIMER_PROF\n)\n\n// Getitimer wraps getitimer(2) to return the current value of the timer\n// specified by which.\nfunc Getitimer(which ItimerWhich) (Itimerval, error) {\n\tvar it Itimerval\n\tif err := getitimer(int(which), &it); err != nil {\n\t\treturn Itimerval{}, err\n\t}\n\n\treturn it, nil\n}\n\n// Setitimer wraps setitimer(2) to arm or disarm the timer specified by which.\n// It returns the previous value of the timer.\n//\n// If the Itimerval argument is the zero value, the timer will be disarmed.\nfunc Setitimer(which ItimerWhich, it Itimerval) (Itimerval, error) {\n\tvar prev Itimerval\n\tif err := setitimer(int(which), &it, &prev); err != nil {\n\t\treturn Itimerval{}, err\n\t}\n\n\treturn prev, nil\n}\n\n//sysnb\trtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) = SYS_RT_SIGPROCMASK\n\nfunc PthreadSigmask(how int, set, oldset *Sigset_t) error {\n\tif oldset != nil {\n\t\t// Explicitly clear in case Sigset_t is larger than _C__NSIG.\n\t\t*oldset = Sigset_t{}\n\t}\n\treturn rtSigprocmask(how, set, oldset, _C__NSIG/8)\n}\n\n//sysnb\tgetresuid(ruid *_C_int, euid *_C_int, suid *_C_int)\n//sysnb\tgetresgid(rgid *_C_int, egid *_C_int, sgid *_C_int)\n\nfunc Getresuid() (ruid, euid, suid int) {\n\tvar r, e, s _C_int\n\tgetresuid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\nfunc Getresgid() (rgid, egid, sgid int) {\n\tvar r, e, s _C_int\n\tgetresgid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\n// Pselect is a wrapper around the Linux pselect6 system call.\n// This version does not modify the timeout argument.\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\t// Per https://man7.org/linux/man-pages/man2/select.2.html#NOTES,\n\t// The Linux pselect6() system call modifies its timeout argument.\n\t// [Not modifying the argument] is the behavior required by POSIX.1-2001.\n\tvar mutableTimeout *Timespec\n\tif timeout != nil {\n\t\tmutableTimeout = new(Timespec)\n\t\t*mutableTimeout = *timeout\n\t}\n\n\t// The final argument of the pselect6() system call is not a\n\t// sigset_t * pointer, but is instead a structure\n\tvar kernelMask *sigset_argpack\n\tif sigmask != nil {\n\t\twordBits := 32 << (^uintptr(0) >> 63) // see math.intSize\n\n\t\t// A sigset stores one bit per signal,\n\t\t// offset by 1 (because signal 0 does not exist).\n\t\t// So the number of words needed is ⌈__C_NSIG - 1 / wordBits⌉.\n\t\tsigsetWords := (_C__NSIG - 1 + wordBits - 1) / (wordBits)\n\n\t\tsigsetBytes := uintptr(sigsetWords * (wordBits / 8))\n\t\tkernelMask = &sigset_argpack{\n\t\t\tss:    sigmask,\n\t\t\tssLen: sigsetBytes,\n\t\t}\n\t}\n\n\treturn pselect6(nfd, r, w, e, mutableTimeout, kernelMask)\n}\n\n//sys\tschedSetattr(pid int, attr *SchedAttr, flags uint) (err error)\n//sys\tschedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error)\n\n// SchedSetAttr is a wrapper for sched_setattr(2) syscall.\n// https://man7.org/linux/man-pages/man2/sched_setattr.2.html\nfunc SchedSetAttr(pid int, attr *SchedAttr, flags uint) error {\n\tif attr == nil {\n\t\treturn EINVAL\n\t}\n\tattr.Size = SizeofSchedAttr\n\treturn schedSetattr(pid, attr, flags)\n}\n\n// SchedGetAttr is a wrapper for sched_getattr(2) syscall.\n// https://man7.org/linux/man-pages/man2/sched_getattr.2.html\nfunc SchedGetAttr(pid int, flags uint) (*SchedAttr, error) {\n\tattr := &SchedAttr{}\n\tif err := schedGetattr(pid, attr, SizeofSchedAttr, flags); err != nil {\n\t\treturn nil, err\n\t}\n\treturn attr, nil\n}\n\n//sys\tCachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error)\n//sys\tMseal(b []byte, flags uint) (err error)\n\n//sys\tsetMemPolicy(mode int, mask unsafe.Pointer, size uintptr) (err error) = SYS_SET_MEMPOLICY\n\nfunc SetMemPolicy(mode int, mask *CPUSet) error {\n\treturn setMemPolicy(mode, unsafe.Pointer(mask), _CPU_SETSIZE)\n}\n\nfunc SetMemPolicyDynamic(mode int, mask CPUSetDynamic) error {\n\treturn setMemPolicy(mode, mask.pointer(), mask.size())\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\n// 64-bit file system and 32-bit uid calls\n// (386 default is 32-bit file system and 16-bit uid).\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64\n//sys\tFchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int) = SYS_GETEGID32\n//sysnb\tGeteuid() (euid int) = SYS_GETEUID32\n//sysnb\tGetgid() (gid int) = SYS_GETGID32\n//sysnb\tGetuid() (uid int) = SYS_GETUID32\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error) = SYS_SETFSGID32\n//sys\tsetfsuid(uid int) (prev int, err error) = SYS_SETFSUID32\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n//sys\tPause() (err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n// On x86 Linux, all the socket calls go through an extra indirection,\n// I think because the 5-register system call interface can't handle\n// the 6-argument calls like sendto and recvfrom. Instead the\n// arguments to the underlying system call are the number below\n// and a pointer to an array of uintptr. We hide the pointer in the\n// socketcall assembly to avoid allocation on every system call.\n\nconst (\n\t// see linux/net.h\n\t_SOCKET      = 1\n\t_BIND        = 2\n\t_CONNECT     = 3\n\t_LISTEN      = 4\n\t_ACCEPT      = 5\n\t_GETSOCKNAME = 6\n\t_GETPEERNAME = 7\n\t_SOCKETPAIR  = 8\n\t_SEND        = 9\n\t_RECV        = 10\n\t_SENDTO      = 11\n\t_RECVFROM    = 12\n\t_SHUTDOWN    = 13\n\t_SETSOCKOPT  = 14\n\t_GETSOCKOPT  = 15\n\t_SENDMSG     = 16\n\t_RECVMSG     = 17\n\t_ACCEPT4     = 18\n\t_RECVMMSG    = 19\n\t_SENDMMSG    = 20\n)\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tfd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e := rawsocketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e := rawsocketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {\n\t_, e := rawsocketcall(_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e := socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e := socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tfd, e := rawsocketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, e := socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, e := socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\tn, e := socketcall(_RECVFROM, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\t_, e := socketcall(_SENDTO, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tn, e := socketcall(_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tn, e := socketcall(_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Listen(s int, n int) (err error) {\n\t_, e := socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Shutdown(s, how int) (err error) {\n\t_, e := socketcall(_SHUTDOWN, uintptr(s), uintptr(how), 0, 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return uint64(uint32(r.Eip)) }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Eip = int32(pc) }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_alarm.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (386 || amd64 || mips || mipsle || mips64 || mipsle || ppc64 || ppc64le || ppc || s390x || sparc64)\n\npackage unix\n\n// SYS_ALARM is not defined on arm or riscv, but is available for other GOARCH\n// values.\n\n//sys\tAlarm(seconds uint) (remaining uint, err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && linux\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\t// Use fstatat, because Android's seccomp policy blocks stat.\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\terrno := gettimeofday(tv)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\treturn nil\n}\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terrno := gettimeofday(&tv)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Rip }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && linux && gc\n\npackage unix\n\nimport \"syscall\"\n\n//go:noescape\nfunc gettimeofday(tv *Timeval) (err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_arm.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tsocketpair(domain int, typ int, flags int, fd *[2]int32) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n// 64-bit file system and 32-bit uid calls\n// (16-bit uid calls are not always supported in newer kernels)\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sysnb\tGetegid() (egid int) = SYS_GETEGID32\n//sysnb\tGeteuid() (euid int) = SYS_GETEUID32\n//sysnb\tGetgid() (gid int) = SYS_GETGID32\n//sysnb\tGetuid() (uid int) = SYS_GETUID32\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tPause() (err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsetfsgid(gid int) (prev int, err error) = SYS_SETFSGID32\n//sys\tsetfsuid(uid int) (prev int, err error) = SYS_SETFSUID32\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\tif buf == nil {\n\t\treturn Utimes(path, nil)\n\t}\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return uint64(r.Uregs[15]) }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Uregs[15] = uint32(pc) }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n\n//sys\tarmSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and arm_sync_file_range syscalls differ only in the\n\t// order of their arguments.\n\treturn armSyncFileRange(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_arm64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tgetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\tif buf == nil {\n\t\treturn Utimes(path, nil)\n\t}\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\nfunc utimes(path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\n// Getrlimit prefers the prlimit64 system call. See issue 38604.\nfunc Getrlimit(resource int, rlim *Rlimit) error {\n\terr := Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\treturn getrlimit(resource, rlim)\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Pc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n\nconst SYS_FSTATAT = SYS_NEWFSTATAT\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_gc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gc\n\npackage unix\n\n// SyscallNoError may be used instead of Syscall for syscalls that don't fail.\nfunc SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)\n\n// RawSyscallNoError may be used instead of RawSyscall for syscalls that don't\n// fail.\nfunc RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gc && 386\n\npackage unix\n\nimport \"syscall\"\n\n// Underlying system call writes to newoffset via pointer.\n// Implemented in assembly to avoid allocation.\nfunc seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)\n\nfunc socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)\nfunc rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && gc && linux\n\npackage unix\n\nimport \"syscall\"\n\n// Underlying system call writes to newoffset via pointer.\n// Implemented in assembly to avoid allocation.\nfunc seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gccgo && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n\nfunc socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {\n\tfd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)\n\treturn int(fd), err\n}\n\nfunc rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {\n\tfd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)\n\treturn int(fd), err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gccgo && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_loong64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build loong64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc timespecFromStatxTimestamp(x StatxTimestamp) Timespec {\n\treturn Timespec{\n\t\tSec:  x.Sec,\n\t\tNsec: int64(x.Nsec),\n\t}\n}\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) error {\n\tvar r Statx_t\n\t// Do it the glibc way, add AT_NO_AUTOMOUNT.\n\tif err := Statx(fd, path, AT_NO_AUTOMOUNT|flags, STATX_BASIC_STATS, &r); err != nil {\n\t\treturn err\n\t}\n\n\tstat.Dev = Mkdev(r.Dev_major, r.Dev_minor)\n\tstat.Ino = r.Ino\n\tstat.Mode = uint32(r.Mode)\n\tstat.Nlink = r.Nlink\n\tstat.Uid = r.Uid\n\tstat.Gid = r.Gid\n\tstat.Rdev = Mkdev(r.Rdev_major, r.Rdev_minor)\n\t// hope we don't get to process files so large to overflow these size\n\t// fields...\n\tstat.Size = int64(r.Size)\n\tstat.Blksize = int32(r.Blksize)\n\tstat.Blocks = int64(r.Blocks)\n\tstat.Atim = timespecFromStatxTimestamp(r.Atime)\n\tstat.Mtim = timespecFromStatxTimestamp(r.Mtime)\n\tstat.Ctim = timespecFromStatxTimestamp(r.Ctime)\n\n\treturn nil\n}\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\treturn Fstatat(fd, \"\", stat, AT_EMPTY_PATH)\n}\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\treturn\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\tif buf == nil {\n\t\treturn Utimes(path, nil)\n\t}\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\nfunc utimes(path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Era }\n\nfunc (r *PtraceRegs) SetPC(era uint64) { r.Era = era }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\n}\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\treturn Renameat2(olddirfd, oldpath, newdirfd, newpath, 0)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n\nconst SYS_FSTATAT = SYS_NEWFSTATAT\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips64 || mips64le)\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\ntype stat_t struct {\n\tDev        uint32\n\tPad0       [3]int32\n\tIno        uint64\n\tMode       uint32\n\tNlink      uint32\n\tUid        uint32\n\tGid        uint32\n\tRdev       uint32\n\tPad1       [3]uint32\n\tSize       int64\n\tAtime      uint32\n\tAtime_nsec uint32\n\tMtime      uint32\n\tMtime_nsec uint32\n\tCtime      uint32\n\tCtime_nsec uint32\n\tBlksize    uint32\n\tPad2       uint32\n\tBlocks     int64\n}\n\n//sys\tfstat(fd int, st *stat_t) (err error)\n//sys\tfstatat(dirfd int, path string, st *stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tlstat(path string, st *stat_t) (err error)\n//sys\tstat(path string, st *stat_t) (err error)\n\nfunc Fstat(fd int, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = fstat(fd, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Fstatat(dirfd int, path string, s *Stat_t, flags int) (err error) {\n\tst := &stat_t{}\n\terr = fstatat(dirfd, path, st, flags)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Lstat(path string, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = lstat(path, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Stat(path string, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = stat(path, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc fillStat_t(s *Stat_t, st *stat_t) {\n\ts.Dev = st.Dev\n\ts.Ino = st.Ino\n\ts.Mode = st.Mode\n\ts.Nlink = st.Nlink\n\ts.Uid = st.Uid\n\ts.Gid = st.Gid\n\ts.Rdev = st.Rdev\n\ts.Size = st.Size\n\ts.Atim = Timespec{int64(st.Atime), int64(st.Atime_nsec)}\n\ts.Mtim = Timespec{int64(st.Mtime), int64(st.Mtime_nsec)}\n\ts.Ctim = Timespec{int64(st.Ctime), int64(st.Ctime_nsec)}\n\ts.Blksize = st.Blksize\n\ts.Blocks = st.Blocks\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Epc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips || mipsle)\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n\n//sys\tPause() (err error)\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(p)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\t_, _, e := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offset>>32), uintptr(offset), uintptr(unsafe.Pointer(&off)), uintptr(whence), 0)\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Epc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_ppc.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && ppc\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint32 { return r.Nip }\n\nfunc (r *PtraceRegs) SetPC(pc uint32) { r.Nip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n\n//sys\tsyncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and sync_file_range2 syscalls differ only in the\n\t// order of their arguments.\n\treturn syncFileRange2(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64 || ppc64le)\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = SYS_UGETRLIMIT\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Nip }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Nip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n//sys\tsyncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and sync_file_range2 syscalls differ only in the\n\t// order of their arguments.\n\treturn syncFileRange2(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\tif buf == nil {\n\t\treturn Utimes(path, nil)\n\t}\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\nfunc utimes(path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Pc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\n}\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\treturn Renameat2(olddirfd, oldpath, newdirfd, newpath, 0)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n\n//sys\triscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error)\n\nfunc RISCVHWProbe(pairs []RISCVHWProbePairs, set *CPUSet, flags uint) (err error) {\n\tvar setSize uintptr\n\n\tif set != nil {\n\t\tsetSize = uintptr(unsafe.Sizeof(*set))\n\t}\n\treturn riscvHWProbe(pairs, setSize, set, flags)\n}\n\nconst SYS_FSTATAT = SYS_NEWFSTATAT\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_s390x.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build s390x && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Psw.Addr }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n// Linux on s390x uses the old mmap interface, which requires arguments to be passed in a struct.\n// mmap2 also requires arguments to be passed in a struct; it is currently not exposed in <asm/unistd.h>.\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tmmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)}\n\tr0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// On s390x Linux, all the socket calls go through an extra indirection.\n// The arguments to the underlying system call (SYS_SOCKETCALL) are the\n// number below and a pointer to an array of uintptr.\nconst (\n\t// see linux/net.h\n\tnetSocket      = 1\n\tnetBind        = 2\n\tnetConnect     = 3\n\tnetListen      = 4\n\tnetAccept      = 5\n\tnetGetSockName = 6\n\tnetGetPeerName = 7\n\tnetSocketPair  = 8\n\tnetSend        = 9\n\tnetRecv        = 10\n\tnetSendTo      = 11\n\tnetRecvFrom    = 12\n\tnetShutdown    = 13\n\tnetSetSockOpt  = 14\n\tnetGetSockOpt  = 15\n\tnetSendMsg     = 16\n\tnetRecvMsg     = 17\n\tnetAccept4     = 18\n\tnetRecvMMsg    = 19\n\tnetSendMMsg    = 20\n)\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (int, error) {\n\targs := [4]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)}\n\tfd, _, err := Syscall(SYS_SOCKETCALL, netAccept4, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(fd), nil\n}\n\nfunc getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netGetSockName, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netGetPeerName, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) error {\n\targs := [4]uintptr{uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netSocketPair, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netBind, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netConnect, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc socket(domain int, typ int, proto int) (int, error) {\n\targs := [3]uintptr{uintptr(domain), uintptr(typ), uintptr(proto)}\n\tfd, _, err := RawSyscall(SYS_SOCKETCALL, netSocket, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(fd), nil\n}\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) error {\n\targs := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netGetSockOpt, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error {\n\targs := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netSetSockOpt, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (int, error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\targs := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netRecvFrom, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) error {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\targs := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netSendTo, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (int, error) {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netRecvMsg, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (int, error) {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netSendMsg, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc Listen(s int, n int) error {\n\targs := [2]uintptr{uintptr(s), uintptr(n)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netListen, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc Shutdown(s, how int) error {\n\targs := [2]uintptr{uintptr(s), uintptr(how)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netShutdown, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build sparc64 && linux\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Tpc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Tpc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// NetBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {\n\tvar olen uintptr\n\n\t// Get a list of all sysctl nodes below the given MIB by performing\n\t// a sysctl for the given MIB with CTL_QUERY appended.\n\tmib = append(mib, CTL_QUERY)\n\tqnode := Sysctlnode{Flags: SYSCTL_VERS_1}\n\tqp := (*byte)(unsafe.Pointer(&qnode))\n\tsz := unsafe.Sizeof(qnode)\n\tif err = sysctl(mib, nil, &olen, qp, sz); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Now that we know the size, get the actual nodes.\n\tnodes = make([]Sysctlnode, olen/sz)\n\tnp := (*byte)(unsafe.Pointer(&nodes[0]))\n\tif err = sysctl(mib, np, &olen, qp, sz); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn nodes, nil\n}\n\nfunc nametomib(name string) (mib []_C_int, err error) {\n\t// Split name into components.\n\tvar parts []string\n\tlast := 0\n\tfor i := 0; i < len(name); i++ {\n\t\tif name[i] == '.' {\n\t\t\tparts = append(parts, name[last:i])\n\t\t\tlast = i + 1\n\t\t}\n\t}\n\tparts = append(parts, name[last:])\n\n\t// Discover the nodes and construct the MIB OID.\n\tfor partno, part := range parts {\n\t\tnodes, err := sysctlNodes(mib)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, node := range nodes {\n\t\t\tn := make([]byte, 0)\n\t\t\tfor i := range node.Name {\n\t\t\t\tif node.Name[i] != 0 {\n\t\t\t\t\tn = append(n, byte(node.Name[i]))\n\t\t\t\t}\n\t\t\t}\n\t\t\tif string(n) == part {\n\t\t\t\tmib = append(mib, _C_int(node.Num))\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif len(mib) != partno+1 {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t}\n\n\treturn mib, nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc SysctlUvmexp(name string) (*Uvmexp, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofUvmexp)\n\tvar u Uvmexp\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &u, nil\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tn, err = Getdents(fd, buf)\n\tif err != nil || basep == nil {\n\t\treturn\n\t}\n\n\tvar off int64\n\toff, err = Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\t*basep = ^uintptr(0)\n\t\treturn\n\t}\n\t*basep = uintptr(off)\n\tif unsafe.Sizeof(*basep) == 8 {\n\t\treturn\n\t}\n\tif off>>32 != 0 {\n\t\t// We can't stuff the offset back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO is allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\nfunc IoctlGetPtmget(fd int, req uint) (*Ptmget, error) {\n\tvar value Ptmget\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\nfunc Fstatvfs(fd int, buf *Statvfs_t) (err error) {\n\treturn Fstatvfs1(fd, buf, ST_WAIT)\n}\n\nfunc Statvfs(path string, buf *Statvfs_t) (err error) {\n\treturn Statvfs1(path, buf, ST_WAIT)\n}\n\nfunc Getvfsstat(buf []Statvfs_t, flags int) (n int, err error) {\n\tvar (\n\t\t_p0     unsafe.Pointer\n\t\tbufsize uintptr\n\t)\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statvfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETVFSSTAT, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tDup3(from int, to int, flags int) (err error)\n//sys\tExit(code int)\n//sys\tExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) = SYS_FSTATVFS1\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatvfs1(path string, buf *Statvfs_t, flags int) (err error) = SYS_STATVFS1\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\nconst (\n\tmremapFixed     = MAP_FIXED\n\tmremapDontunmap = 0\n\tmremapMaymove   = 0\n)\n\n//sys\tmremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) = SYS_MREMAP\n\nfunc mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (uintptr, error) {\n\treturn mremapNetBSD(oldaddr, oldlength, newaddr, newlength, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// OpenBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"sort\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc nametomib(name string) (mib []_C_int, err error) {\n\ti := sort.Search(len(sysctlMib), func(i int) bool {\n\t\treturn sysctlMib[i].ctlname >= name\n\t})\n\tif i < len(sysctlMib) && sysctlMib[i].ctlname == name {\n\t\treturn sysctlMib[i].ctloid, nil\n\t}\n\treturn nil, EINVAL\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc SysctlUvmexp(name string) (*Uvmexp, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofUvmexp)\n\tvar u Uvmexp\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofUvmexp {\n\t\treturn nil, EIO\n\t}\n\treturn &u, nil\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tn, err = Getdents(fd, buf)\n\tif err != nil || basep == nil {\n\t\treturn\n\t}\n\n\tvar off int64\n\toff, err = Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\t*basep = ^uintptr(0)\n\t\treturn\n\t}\n\t*basep = uintptr(off)\n\tif unsafe.Sizeof(*basep) == 8 {\n\t\treturn\n\t}\n\tif off>>32 != 0 {\n\t\t// We can't stuff the offset back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO was allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar bufptr *Statfs_t\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\tbufptr = &buf[0]\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\treturn getfsstat(bufptr, bufsize, flags)\n}\n\n//sysnb\tgetresuid(ruid *_C_int, euid *_C_int, suid *_C_int)\n//sysnb\tgetresgid(rgid *_C_int, egid *_C_int, sgid *_C_int)\n\nfunc Getresuid() (ruid, euid, suid int) {\n\tvar r, e, s _C_int\n\tgetresuid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\nfunc Getresgid() (rgid, egid, sgid int) {\n\tvar r, e, s _C_int\n\tgetresgid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\n//sys\tfcntl(fd int, cmd int, arg int) (n int, err error)\n//sys\tfcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) = SYS_FCNTL\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, err := fcntlPtr(int(fd), cmd, unsafe.Pointer(lk))\n\treturn err\n}\n\n//sys\tppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n\nfunc Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, timeout, sigmask)\n\t}\n\treturn ppoll(&fds[0], len(fds), timeout, sigmask)\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tDup3(from int, to int, flags int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrtable() (rtable int, err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tMount(fsType string, dir string, flags int, data unsafe.Pointer) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrtable(rtable int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tgetfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n//sys\tpledge(promises *byte, execpromises *byte) (err error)\n//sys\tunveil(path *byte, flags *byte) (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/386 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/arm the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build openbsd\n\npackage unix\n\nimport _ \"unsafe\"\n\n// Implemented in the runtime package (runtime/sys_openbsd3.go)\nfunc syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\n\n//go:linkname syscall_syscall syscall.syscall\n//go:linkname syscall_syscall6 syscall.syscall6\n//go:linkname syscall_syscall10 syscall.syscall10\n//go:linkname syscall_rawSyscall syscall.rawSyscall\n//go:linkname syscall_rawSyscall6 syscall.rawSyscall6\n\nfunc syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) {\n\treturn syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, 0)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of OpenBSD the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/ppc64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/riscv64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_solaris.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Solaris system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_solaris.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"runtime\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Implemented in runtime/syscall_solaris.go.\ntype syscallFunc uintptr\n\nfunc rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tFamily uint16\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [244]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\n//sysnb\tpipe(p *[2]_C_int) (n int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\tn, err := pipe(&pp)\n\tif n != 0 {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn nil\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\n//sys\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getsockname\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error)\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\t// Getcwd will return an error if it failed for any reason.\n\t_, err = Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\n/*\n * Wrapped\n */\n\n//sysnb\tgetgroups(ngid int, gid *_Gid_t) (n int, err error)\n//sysnb\tsetgroups(ngid int, gid *_Gid_t) (err error)\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\t// Check for error and sanity check group count. Newer versions of\n\t// Solaris allow up to 1024 (NGROUPS_MAX).\n\tif n < 0 || n > 1024 {\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, EINVAL\n\t} else if n == 0 {\n\t\treturn nil, nil\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif n == -1 {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n// ReadDirent reads directory entries from fd and writes them into buf.\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\t// Final argument is (basep *uintptr) and the syscall doesn't take nil.\n\t// TODO(rsc): Can we use a single global basep for all calls?\n\treturn Getdents(fd, buf, new(uintptr))\n}\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.\n\ntype WaitStatus uint32\n\nconst (\n\tmask  = 0x7F\n\tcore  = 0x80\n\tshift = 8\n\n\texited  = 0\n\tstopped = 0x7F\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif w&mask != exited {\n\t\treturn -1\n\t}\n\treturn int(w >> shift)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tsig := syscall.Signal(w & mask)\n\tif sig == stopped || sig == 0 {\n\t\treturn -1\n\t}\n\treturn sig\n}\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }\n\nfunc (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (int, error) {\n\tvar status _C_int\n\trpid, err := wait4(int32(pid), &status, options, rusage)\n\twpid := int(rpid)\n\tif wpid == -1 {\n\t\treturn wpid, err\n\t}\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn wpid, nil\n}\n\n//sys\tgethostname(buf []byte) (n int, err error)\n\nfunc Gethostname() (name string, err error) {\n\tvar buf [MaxHostNameLen]byte\n\tn, err := gethostname(buf[:])\n\tif n != 0 {\n\t\treturn \"\", err\n\t}\n\tn = clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EFAULT\n\t}\n\treturn string(buf[:n]), nil\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(fd int, path string, times *[2]Timespec, flag int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif ts == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\tvalptr, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)\n\tvar err error\n\tif errno != 0 {\n\t\terr = errno\n\t}\n\treturn int(valptr), err\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0)\n\tif e1 != 0 {\n\t\treturn e1\n\t}\n\treturn nil\n}\n\n//sys\tfutimesat(fildes int, path *byte, times *[2]Timeval) (err error)\n\nfunc Futimesat(dirfd int, path string, tv []Timeval) error {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tv == nil {\n\t\treturn futimesat(dirfd, pathp, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n// Solaris doesn't have an futimes function because it allows NULL to be\n// specified as the path for futimesat. However, Go doesn't like\n// NULL-style string interfaces, so this simple wrapper is provided.\nfunc Futimes(fd int, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimesat(fd, nil, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Solaris semantics for\n\t\t// abstract Unix domain sockets -- they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs -- but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = libsocket.accept\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif nfd == -1 {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Accrightslen = int32(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); n == -1 {\n\t\treturn\n\t}\n\toobn = int(msg.Accrightslen)\n\treturn\n}\n\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Accrightslen = int32(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n//sys\tacct(path *byte) (err error)\n\nfunc Acct(path string) (err error) {\n\tif len(path) == 0 {\n\t\t// Assume caller wants to disable accounting.\n\t\treturn acct(nil)\n\t}\n\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn acct(pathp)\n}\n\n//sys\t__makedev(version int, major uint, minor uint) (val uint64)\n\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn __makedev(NEWDEV, uint(major), uint(minor))\n}\n\n//sys\t__major(version int, dev uint64) (val uint)\n\nfunc Major(dev uint64) uint32 {\n\treturn uint32(__major(NEWDEV, dev))\n}\n\n//sys\t__minor(version int, dev uint64) (val uint)\n\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(__minor(NEWDEV, dev))\n}\n\n/*\n * Expose the ioctl function\n */\n\n//sys\tioctlRet(fd int, req int, arg uintptr) (ret int, err error) = libc.ioctl\n//sys\tioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) = libc.ioctl\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\t_, err = ioctlRet(fd, req, arg)\n\treturn err\n}\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\t_, err = ioctlPtrRet(fd, req, arg)\n\treturn err\n}\n\nfunc IoctlSetTermio(fd int, req int, value *Termio) error {\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\nfunc IoctlGetTermio(fd int, req int) (*Termio, error) {\n\tvar value Termio\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tCreat(path string, mode uint32) (fd int, err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatvfs(fd int, vfsstat *Statvfs_t) (err error)\n//sys\tGetdents(fd int, buf []byte, basep *uintptr) (n int, err error)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgid int, err error)\n//sys\tGeteuid() (euid int)\n//sys\tGetegid() (egid int)\n//sys\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (n int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tListen(s int, backlog int) (err error) = libsocket.__xnet_listen\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMadvise(b []byte, advice int) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, flags int, mode uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSethostname(p []byte) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tShutdown(s int, how int) (err error) = libsocket.shutdown\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatvfs(path string, vfsstat *Statvfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSync() (err error)\n//sys\tSysconf(which int) (n int64, err error)\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//sys\tUnmount(target string, flags int) (err error) = libc.umount\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_bind\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_connect\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = libsendfile.sendfile\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_sendto\n//sys\tsocket(domain int, typ int, proto int) (fd int, err error) = libsocket.__xnet_socket\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.__xnet_socketpair\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.__xnet_getsockopt\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getpeername\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom\n\n// Event Ports\n\ntype fileObjCookie struct {\n\tfobj   *fileObj\n\tcookie interface{}\n}\n\n// EventPort provides a safe abstraction on top of Solaris/illumos Event Ports.\ntype EventPort struct {\n\tport  int\n\tmu    sync.Mutex\n\tfds   map[uintptr]*fileObjCookie\n\tpaths map[string]*fileObjCookie\n\t// The user cookie presents an interesting challenge from a memory management perspective.\n\t// There are two paths by which we can discover that it is no longer in use:\n\t// 1. The user calls port_dissociate before any events fire\n\t// 2. An event fires and we return it to the user\n\t// The tricky situation is if the event has fired in the kernel but\n\t// the user hasn't requested/received it yet.\n\t// If the user wants to port_dissociate before the event has been processed,\n\t// we should handle things gracefully. To do so, we need to keep an extra\n\t// reference to the cookie around until the event is processed\n\t// thus the otherwise seemingly extraneous \"cookies\" map\n\t// The key of this map is a pointer to the corresponding fCookie\n\tcookies map[*fileObjCookie]struct{}\n}\n\n// PortEvent is an abstraction of the port_event C struct.\n// Compare Source against PORT_SOURCE_FILE or PORT_SOURCE_FD\n// to see if Path or Fd was the event source. The other will be\n// uninitialized.\ntype PortEvent struct {\n\tCookie interface{}\n\tEvents int32\n\tFd     uintptr\n\tPath   string\n\tSource uint16\n\tfobj   *fileObj\n}\n\n// NewEventPort creates a new EventPort including the\n// underlying call to port_create(3c).\nfunc NewEventPort() (*EventPort, error) {\n\tport, err := port_create()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\te := &EventPort{\n\t\tport:    port,\n\t\tfds:     make(map[uintptr]*fileObjCookie),\n\t\tpaths:   make(map[string]*fileObjCookie),\n\t\tcookies: make(map[*fileObjCookie]struct{}),\n\t}\n\treturn e, nil\n}\n\n//sys\tport_create() (n int, err error)\n//sys\tport_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error)\n//sys\tport_dissociate(port int, source int, object uintptr) (n int, err error)\n//sys\tport_get(port int, pe *portEvent, timeout *Timespec) (n int, err error)\n//sys\tport_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error)\n\n// Close closes the event port.\nfunc (e *EventPort) Close() error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\terr := Close(e.port)\n\tif err != nil {\n\t\treturn err\n\t}\n\te.fds = nil\n\te.paths = nil\n\te.cookies = nil\n\treturn nil\n}\n\n// PathIsWatched checks to see if path is associated with this EventPort.\nfunc (e *EventPort) PathIsWatched(path string) bool {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, found := e.paths[path]\n\treturn found\n}\n\n// FdIsWatched checks to see if fd is associated with this EventPort.\nfunc (e *EventPort) FdIsWatched(fd uintptr) bool {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, found := e.fds[fd]\n\treturn found\n}\n\n// AssociatePath wraps port_associate(3c) for a filesystem path including\n// creating the necessary file_obj from the provided stat information.\nfunc (e *EventPort) AssociatePath(path string, stat os.FileInfo, events int, cookie interface{}) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tif _, found := e.paths[path]; found {\n\t\treturn fmt.Errorf(\"%v is already associated with this Event Port\", path)\n\t}\n\tfCookie, err := createFileObjCookie(path, stat, cookie)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = port_associate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(fCookie.fobj)), events, (*byte)(unsafe.Pointer(fCookie)))\n\tif err != nil {\n\t\treturn err\n\t}\n\te.paths[path] = fCookie\n\te.cookies[fCookie] = struct{}{}\n\treturn nil\n}\n\n// DissociatePath wraps port_dissociate(3c) for a filesystem path.\nfunc (e *EventPort) DissociatePath(path string) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tf, ok := e.paths[path]\n\tif !ok {\n\t\treturn fmt.Errorf(\"%v is not associated with this Event Port\", path)\n\t}\n\t_, err := port_dissociate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(f.fobj)))\n\t// If the path is no longer associated with this event port (ENOENT)\n\t// we should delete it from our map. We can still return ENOENT to the caller.\n\t// But we need to save the cookie\n\tif err != nil && err != ENOENT {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\t// dissociate was successful, safe to delete the cookie\n\t\tfCookie := e.paths[path]\n\t\tdelete(e.cookies, fCookie)\n\t}\n\tdelete(e.paths, path)\n\treturn err\n}\n\n// AssociateFd wraps calls to port_associate(3c) on file descriptors.\nfunc (e *EventPort) AssociateFd(fd uintptr, events int, cookie interface{}) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tif _, found := e.fds[fd]; found {\n\t\treturn fmt.Errorf(\"%v is already associated with this Event Port\", fd)\n\t}\n\tfCookie, err := createFileObjCookie(\"\", nil, cookie)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = port_associate(e.port, PORT_SOURCE_FD, fd, events, (*byte)(unsafe.Pointer(fCookie)))\n\tif err != nil {\n\t\treturn err\n\t}\n\te.fds[fd] = fCookie\n\te.cookies[fCookie] = struct{}{}\n\treturn nil\n}\n\n// DissociateFd wraps calls to port_dissociate(3c) on file descriptors.\nfunc (e *EventPort) DissociateFd(fd uintptr) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, ok := e.fds[fd]\n\tif !ok {\n\t\treturn fmt.Errorf(\"%v is not associated with this Event Port\", fd)\n\t}\n\t_, err := port_dissociate(e.port, PORT_SOURCE_FD, fd)\n\tif err != nil && err != ENOENT {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\t// dissociate was successful, safe to delete the cookie\n\t\tfCookie := e.fds[fd]\n\t\tdelete(e.cookies, fCookie)\n\t}\n\tdelete(e.fds, fd)\n\treturn err\n}\n\nfunc createFileObjCookie(name string, stat os.FileInfo, cookie interface{}) (*fileObjCookie, error) {\n\tfCookie := new(fileObjCookie)\n\tfCookie.cookie = cookie\n\tif name != \"\" && stat != nil {\n\t\tfCookie.fobj = new(fileObj)\n\t\tbs, err := ByteSliceFromString(name)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfCookie.fobj.Name = (*int8)(unsafe.Pointer(&bs[0]))\n\t\ts := stat.Sys().(*syscall.Stat_t)\n\t\tfCookie.fobj.Atim.Sec = s.Atim.Sec\n\t\tfCookie.fobj.Atim.Nsec = s.Atim.Nsec\n\t\tfCookie.fobj.Mtim.Sec = s.Mtim.Sec\n\t\tfCookie.fobj.Mtim.Nsec = s.Mtim.Nsec\n\t\tfCookie.fobj.Ctim.Sec = s.Ctim.Sec\n\t\tfCookie.fobj.Ctim.Nsec = s.Ctim.Nsec\n\t}\n\treturn fCookie, nil\n}\n\n// GetOne wraps port_get(3c) and returns a single PortEvent.\nfunc (e *EventPort) GetOne(t *Timespec) (*PortEvent, error) {\n\tpe := new(portEvent)\n\t_, err := port_get(e.port, pe, t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tp := new(PortEvent)\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\terr = e.peIntToExt(pe, p)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn p, nil\n}\n\n// peIntToExt converts a cgo portEvent struct into the friendlier PortEvent\n// NOTE: Always call this function while holding the e.mu mutex\nfunc (e *EventPort) peIntToExt(peInt *portEvent, peExt *PortEvent) error {\n\tif e.cookies == nil {\n\t\treturn fmt.Errorf(\"this EventPort is already closed\")\n\t}\n\tpeExt.Events = peInt.Events\n\tpeExt.Source = peInt.Source\n\tfCookie := (*fileObjCookie)(unsafe.Pointer(peInt.User))\n\t_, found := e.cookies[fCookie]\n\n\tif !found {\n\t\tpanic(\"unexpected event port address; may be due to kernel bug; see https://go.dev/issue/54254\")\n\t}\n\tpeExt.Cookie = fCookie.cookie\n\tdelete(e.cookies, fCookie)\n\n\tswitch peInt.Source {\n\tcase PORT_SOURCE_FD:\n\t\tpeExt.Fd = uintptr(peInt.Object)\n\t\t// Only remove the fds entry if it exists and this cookie matches\n\t\tif fobj, ok := e.fds[peExt.Fd]; ok {\n\t\t\tif fobj == fCookie {\n\t\t\t\tdelete(e.fds, peExt.Fd)\n\t\t\t}\n\t\t}\n\tcase PORT_SOURCE_FILE:\n\t\tpeExt.fobj = fCookie.fobj\n\t\tpeExt.Path = BytePtrToString((*byte)(unsafe.Pointer(peExt.fobj.Name)))\n\t\t// Only remove the paths entry if it exists and this cookie matches\n\t\tif fobj, ok := e.paths[peExt.Path]; ok {\n\t\t\tif fobj == fCookie {\n\t\t\t\tdelete(e.paths, peExt.Path)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Pending wraps port_getn(3c) and returns how many events are pending.\nfunc (e *EventPort) Pending() (int, error) {\n\tvar n uint32 = 0\n\t_, err := port_getn(e.port, nil, 0, &n, nil)\n\treturn int(n), err\n}\n\n// Get wraps port_getn(3c) and fills a slice of PortEvent.\n// It will block until either min events have been received\n// or the timeout has been exceeded. It will return how many\n// events were actually received along with any error information.\nfunc (e *EventPort) Get(s []PortEvent, min int, timeout *Timespec) (int, error) {\n\tif min == 0 {\n\t\treturn 0, fmt.Errorf(\"need to request at least one event or use Pending() instead\")\n\t}\n\tif len(s) < min {\n\t\treturn 0, fmt.Errorf(\"len(s) (%d) is less than min events requested (%d)\", len(s), min)\n\t}\n\tgot := uint32(min)\n\tmax := uint32(len(s))\n\tvar err error\n\tps := make([]portEvent, max)\n\t_, err = port_getn(e.port, &ps[0], max, &got, timeout)\n\t// got will be trustworthy with ETIME, but not any other error.\n\tif err != nil && err != ETIME {\n\t\treturn 0, err\n\t}\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tvalid := 0\n\tfor i := 0; i < int(got); i++ {\n\t\terr2 := e.peIntToExt(&ps[i], &s[i])\n\t\tif err2 != nil {\n\t\t\tif valid == 0 && err == nil {\n\t\t\t\t// If err2 is the only error and there are no valid events\n\t\t\t\t// to return, return it to the caller.\n\t\t\t\terr = err2\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tvalid = i + 1\n\t}\n\treturn valid, err\n}\n\n//sys\tputmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error)\n\nfunc Putmsg(fd int, cl []byte, data []byte, flags int) (err error) {\n\tvar clp, datap *strbuf\n\tif len(cl) > 0 {\n\t\tclp = &strbuf{\n\t\t\tLen: int32(len(cl)),\n\t\t\tBuf: (*int8)(unsafe.Pointer(&cl[0])),\n\t\t}\n\t}\n\tif len(data) > 0 {\n\t\tdatap = &strbuf{\n\t\t\tLen: int32(len(data)),\n\t\t\tBuf: (*int8)(unsafe.Pointer(&data[0])),\n\t\t}\n\t}\n\treturn putmsg(fd, clp, datap, flags)\n}\n\n//sys\tgetmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error)\n\nfunc Getmsg(fd int, cl []byte, data []byte) (retCl []byte, retData []byte, flags int, err error) {\n\tvar clp, datap *strbuf\n\tif len(cl) > 0 {\n\t\tclp = &strbuf{\n\t\t\tMaxlen: int32(len(cl)),\n\t\t\tBuf:    (*int8)(unsafe.Pointer(&cl[0])),\n\t\t}\n\t}\n\tif len(data) > 0 {\n\t\tdatap = &strbuf{\n\t\t\tMaxlen: int32(len(data)),\n\t\t\tBuf:    (*int8)(unsafe.Pointer(&data[0])),\n\t\t}\n\t}\n\n\tif err = getmsg(fd, clp, datap, &flags); err != nil {\n\t\treturn nil, nil, 0, err\n\t}\n\n\tif len(cl) > 0 {\n\t\tretCl = cl[:clp.Len]\n\t}\n\tif len(data) > 0 {\n\t\tretData = data[:datap.Len]\n\t}\n\treturn retCl, retData, flags, nil\n}\n\nfunc IoctlSetIntRetInt(fd int, req int, arg int) (int, error) {\n\treturn ioctlRet(fd, req, uintptr(arg))\n}\n\n// Lifreq Helpers\n\nfunc (l *Lifreq) SetName(name string) error {\n\tif len(name) >= len(l.Name) {\n\t\treturn fmt.Errorf(\"name cannot be more than %d characters\", len(l.Name)-1)\n\t}\n\tfor i := range name {\n\t\tl.Name[i] = int8(name[i])\n\t}\n\treturn nil\n}\n\nfunc (l *Lifreq) SetLifruInt(d int) {\n\t*(*int)(unsafe.Pointer(&l.Lifru[0])) = d\n}\n\nfunc (l *Lifreq) GetLifruInt() int {\n\treturn *(*int)(unsafe.Pointer(&l.Lifru[0]))\n}\n\nfunc (l *Lifreq) SetLifruUint(d uint) {\n\t*(*uint)(unsafe.Pointer(&l.Lifru[0])) = d\n}\n\nfunc (l *Lifreq) GetLifruUint() uint {\n\treturn *(*uint)(unsafe.Pointer(&l.Lifru[0]))\n}\n\nfunc IoctlLifreq(fd int, req int, l *Lifreq) error {\n\treturn ioctlPtr(fd, req, unsafe.Pointer(l))\n}\n\n// Strioctl Helpers\n\nfunc (s *Strioctl) SetInt(i int) {\n\ts.Len = int32(unsafe.Sizeof(i))\n\ts.Dp = (*int8)(unsafe.Pointer(&i))\n}\n\nfunc IoctlSetStrioctlRetInt(fd int, req int, s *Strioctl) (int, error) {\n\treturn ioctlPtrRet(fd, req, unsafe.Pointer(s))\n}\n\n// Ucred Helpers\n// See ucred(3c) and getpeerucred(3c)\n\n//sys\tgetpeerucred(fd uintptr, ucred *uintptr) (err error)\n//sys\tucredFree(ucred uintptr) = ucred_free\n//sys\tucredGet(pid int) (ucred uintptr, err error) = ucred_get\n//sys\tucredGeteuid(ucred uintptr) (uid int) = ucred_geteuid\n//sys\tucredGetegid(ucred uintptr) (gid int) = ucred_getegid\n//sys\tucredGetruid(ucred uintptr) (uid int) = ucred_getruid\n//sys\tucredGetrgid(ucred uintptr) (gid int) = ucred_getrgid\n//sys\tucredGetsuid(ucred uintptr) (uid int) = ucred_getsuid\n//sys\tucredGetsgid(ucred uintptr) (gid int) = ucred_getsgid\n//sys\tucredGetpid(ucred uintptr) (pid int) = ucred_getpid\n\n// Ucred is an opaque struct that holds user credentials.\ntype Ucred struct {\n\tucred uintptr\n}\n\n// We need to ensure that ucredFree is called on the underlying ucred\n// when the Ucred is garbage collected.\nfunc ucredFinalizer(u *Ucred) {\n\tucredFree(u.ucred)\n}\n\nfunc GetPeerUcred(fd uintptr) (*Ucred, error) {\n\tvar ucred uintptr\n\terr := getpeerucred(fd, &ucred)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresult := &Ucred{\n\t\tucred: ucred,\n\t}\n\t// set the finalizer on the result so that the ucred will be freed\n\truntime.SetFinalizer(result, ucredFinalizer)\n\treturn result, nil\n}\n\nfunc UcredGet(pid int) (*Ucred, error) {\n\tucred, err := ucredGet(pid)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresult := &Ucred{\n\t\tucred: ucred,\n\t}\n\t// set the finalizer on the result so that the ucred will be freed\n\truntime.SetFinalizer(result, ucredFinalizer)\n\treturn result, nil\n}\n\nfunc (u *Ucred) Geteuid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGeteuid(u.ucred)\n}\n\nfunc (u *Ucred) Getruid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetruid(u.ucred)\n}\n\nfunc (u *Ucred) Getsuid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetsuid(u.ucred)\n}\n\nfunc (u *Ucred) Getegid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetegid(u.ucred)\n}\n\nfunc (u *Ucred) Getrgid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetrgid(u.ucred)\n}\n\nfunc (u *Ucred) Getsgid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetsgid(u.ucred)\n}\n\nfunc (u *Ucred) Getpid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetpid(u.ucred)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && solaris\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_unix.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris\n\npackage unix\n\nimport (\n\t\"bytes\"\n\t\"sort\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar (\n\tStdin  = 0\n\tStdout = 1\n\tStderr = 2\n)\n\n// Do the interface allocations only once for common\n// Errno values.\nvar (\n\terrEAGAIN error = syscall.EAGAIN\n\terrEINVAL error = syscall.EINVAL\n\terrENOENT error = syscall.ENOENT\n)\n\nvar (\n\tsignalNameMapOnce sync.Once\n\tsignalNameMap     map[string]syscall.Signal\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e syscall.Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn nil\n\tcase EAGAIN:\n\t\treturn errEAGAIN\n\tcase EINVAL:\n\t\treturn errEINVAL\n\tcase ENOENT:\n\t\treturn errENOENT\n\t}\n\treturn e\n}\n\n// ErrnoName returns the error name for error number e.\nfunc ErrnoName(e syscall.Errno) string {\n\ti := sort.Search(len(errorList), func(i int) bool {\n\t\treturn errorList[i].num >= e\n\t})\n\tif i < len(errorList) && errorList[i].num == e {\n\t\treturn errorList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalName returns the signal name for signal number s.\nfunc SignalName(s syscall.Signal) string {\n\ti := sort.Search(len(signalList), func(i int) bool {\n\t\treturn signalList[i].num >= s\n\t})\n\tif i < len(signalList) && signalList[i].num == s {\n\t\treturn signalList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalNum returns the syscall.Signal for signal named s,\n// or 0 if a signal with such name is not found.\n// The signal name should start with \"SIG\".\nfunc SignalNum(s string) syscall.Signal {\n\tsignalNameMapOnce.Do(func() {\n\t\tsignalNameMap = make(map[string]syscall.Signal, len(signalList))\n\t\tfor _, signal := range signalList {\n\t\t\tsignalNameMap[signal.name] = signal.num\n\t\t}\n\t})\n\treturn signalNameMap[s]\n}\n\n// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte.\nfunc clen(n []byte) int {\n\ti := bytes.IndexByte(n, 0)\n\tif i == -1 {\n\t\ti = len(n)\n\t}\n\treturn i\n}\n\n// Mmap manager, for use by operating system-specific implementations.\n\ntype mmapper struct {\n\tsync.Mutex\n\tactive map[*byte][]byte // active mappings; key is last byte in mapping\n\tmmap   func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error)\n\tmunmap func(addr uintptr, length uintptr) error\n}\n\nfunc (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\tif length <= 0 {\n\t\treturn nil, EINVAL\n\t}\n\n\t// Map the requested memory.\n\taddr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Use unsafe to convert addr into a []byte.\n\tb := unsafe.Slice((*byte)(unsafe.Pointer(addr)), length)\n\n\t// Register mapping in m and return it.\n\tp := &b[cap(b)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tm.active[p] = b\n\treturn b, nil\n}\n\nfunc (m *mmapper) Munmap(data []byte) (err error) {\n\tif len(data) == 0 || len(data) != cap(data) {\n\t\treturn EINVAL\n\t}\n\n\t// Find the base of the mapping.\n\tp := &data[cap(data)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tb := m.active[p]\n\tif b == nil || &b[0] != &data[0] {\n\t\treturn EINVAL\n\t}\n\n\t// Unmap the memory and update m.\n\tif errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil {\n\t\treturn errno\n\t}\n\tdelete(m.active, p)\n\treturn nil\n}\n\nfunc Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\treturn mapper.Mmap(fd, offset, length, prot, flags)\n}\n\nfunc Munmap(b []byte) (err error) {\n\treturn mapper.Munmap(b)\n}\n\nfunc MmapPtr(fd int, offset int64, addr unsafe.Pointer, length uintptr, prot int, flags int) (ret unsafe.Pointer, err error) {\n\txaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset)\n\treturn unsafe.Pointer(xaddr), err\n}\n\nfunc MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) {\n\treturn mapper.munmap(uintptr(addr), length)\n}\n\nfunc Read(fd int, p []byte) (n int, err error) {\n\tn, err = read(fd, p)\n\tif raceenabled {\n\t\tif n > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), n)\n\t\t}\n\t\tif err == nil {\n\t\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t\t}\n\t}\n\treturn\n}\n\nfunc Write(fd int, p []byte) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = write(fd, p)\n\tif raceenabled && n > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), n)\n\t}\n\treturn\n}\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tn, err = pread(fd, p, offset)\n\tif raceenabled {\n\t\tif n > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), n)\n\t\t}\n\t\tif err == nil {\n\t\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t\t}\n\t}\n\treturn\n}\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = pwrite(fd, p, offset)\n\tif raceenabled && n > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), n)\n\t}\n\treturn\n}\n\n// For testing: clients can set this flag to force\n// creation of IPv6 sockets to return EAFNOSUPPORT.\nvar SocketDisableIPv6 bool\n\n// Sockaddr represents a socket address.\ntype Sockaddr interface {\n\tsockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs\n}\n\n// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets.\ntype SockaddrInet4 struct {\n\tPort int\n\tAddr [4]byte\n\traw  RawSockaddrInet4\n}\n\n// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets.\ntype SockaddrInet6 struct {\n\tPort   int\n\tZoneId uint32\n\tAddr   [16]byte\n\traw    RawSockaddrInet6\n}\n\n// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets.\ntype SockaddrUnix struct {\n\tName string\n\traw  RawSockaddrUnix\n}\n\nfunc Bind(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn bind(fd, ptr, n)\n}\n\nfunc Connect(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connect(fd, ptr, n)\n}\n\nfunc Getpeername(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getpeername(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\nfunc GetsockoptByte(fd, level, opt int) (value byte, err error) {\n\tvar n byte\n\tvallen := _Socklen(1)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc GetsockoptInt(fd, level, opt int) (value int, err error) {\n\tvar n int32\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn int(n), err\n}\n\nfunc GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\treturn value, err\n}\n\nfunc GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {\n\tvar value IPMreq\n\tvallen := _Socklen(SizeofIPMreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {\n\tvar value IPv6Mreq\n\tvallen := _Socklen(SizeofIPv6Mreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {\n\tvar value IPv6MTUInfo\n\tvallen := _Socklen(SizeofIPv6MTUInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {\n\tvar value ICMPv6Filter\n\tvallen := _Socklen(SizeofICMPv6Filter)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptLinger(fd, level, opt int) (*Linger, error) {\n\tvar linger Linger\n\tvallen := _Socklen(SizeofLinger)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen)\n\treturn &linger, err\n}\n\nfunc GetsockoptTimeval(fd, level, opt int) (*Timeval, error) {\n\tvar tv Timeval\n\tvallen := _Socklen(unsafe.Sizeof(tv))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen)\n\treturn &tv, err\n}\n\nfunc GetsockoptUint64(fd, level, opt int) (value uint64, err error) {\n\tvar n uint64\n\tvallen := _Socklen(8)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\n// Recvmsg receives a message from a socket using the recvmsg system call. The\n// received non-control data will be written to p, and any \"out of band\"\n// control data will be written to oob. The flags are passed to recvmsg.\n//\n// The results are:\n//   - n is the number of non-control data bytes read into p\n//   - oobn is the number of control data bytes read into oob; this may be interpreted using [ParseSocketControlMessage]\n//   - recvflags is flags returned by recvmsg\n//   - from is the address of the sender\n//\n// If the underlying socket type is not SOCK_DGRAM, a received message\n// containing oob data and a single '\\0' of non-control data is treated as if\n// the message contained only control data, i.e. n will be zero on return.\nfunc Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tvar iov [1]Iovec\n\tif len(p) > 0 {\n\t\tiov[0].Base = &p[0]\n\t\tiov[0].SetLen(len(p))\n\t}\n\tvar rsa RawSockaddrAny\n\tif n, oobn, recvflags, err = recvmsgRaw(fd, iov[:], oob, flags, &rsa); err != nil {\n\t\treturn\n\t}\n\t// source address is only specified if the socket is unconnected\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\n// RecvmsgBuffers receives a message from a socket using the recvmsg system\n// call. This function is equivalent to Recvmsg, but non-control data read is\n// scattered into the buffers slices.\nfunc RecvmsgBuffers(fd int, buffers [][]byte, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tiov := make([]Iovec, len(buffers))\n\tfor i := range buffers {\n\t\tif len(buffers[i]) > 0 {\n\t\t\tiov[i].Base = &buffers[i][0]\n\t\t\tiov[i].SetLen(len(buffers[i]))\n\t\t} else {\n\t\t\tiov[i].Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t}\n\tvar rsa RawSockaddrAny\n\tif n, oobn, recvflags, err = recvmsgRaw(fd, iov, oob, flags, &rsa); err != nil {\n\t\treturn\n\t}\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\n// Sendmsg sends a message on a socket to an address using the sendmsg system\n// call. This function is equivalent to SendmsgN, but does not return the\n// number of bytes actually sent.\nfunc Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {\n\t_, err = SendmsgN(fd, p, oob, to, flags)\n\treturn\n}\n\n// SendmsgN sends a message on a socket to an address using the sendmsg system\n// call. p contains the non-control data to send, and oob contains the \"out of\n// band\" control data. The flags are passed to sendmsg. The number of\n// non-control bytes actually written to the socket is returned.\n//\n// Some socket types do not support sending control data without accompanying\n// non-control data. If p is empty, and oob contains control data, and the\n// underlying socket type is not SOCK_DGRAM, p will be treated as containing a\n// single '\\0' and the return value will indicate zero bytes sent.\n//\n// The Go function Recvmsg, if called with an empty p and a non-empty oob,\n// will read and ignore this additional '\\0'.  If the message is received by\n// code that does not use Recvmsg, or that does not use Go at all, that code\n// will need to be written to expect and ignore the additional '\\0'.\n//\n// If you need to send non-empty oob with p actually empty, and if the\n// underlying socket type supports it, you can do so via a raw system call as\n// follows:\n//\n//\tmsg := &unix.Msghdr{\n//\t    Control: &oob[0],\n//\t}\n//\tmsg.SetControllen(len(oob))\n//\tn, _, errno := unix.Syscall(unix.SYS_SENDMSG, uintptr(fd), uintptr(unsafe.Pointer(msg)), flags)\nfunc SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tvar iov [1]Iovec\n\tif len(p) > 0 {\n\t\tiov[0].Base = &p[0]\n\t\tiov[0].SetLen(len(p))\n\t}\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\treturn sendmsgN(fd, iov[:], oob, ptr, salen, flags)\n}\n\n// SendmsgBuffers sends a message on a socket to an address using the sendmsg\n// system call. This function is equivalent to SendmsgN, but the non-control\n// data is gathered from buffers.\nfunc SendmsgBuffers(fd int, buffers [][]byte, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tiov := make([]Iovec, len(buffers))\n\tfor i := range buffers {\n\t\tif len(buffers[i]) > 0 {\n\t\t\tiov[i].Base = &buffers[i][0]\n\t\t\tiov[i].SetLen(len(buffers[i]))\n\t\t} else {\n\t\t\tiov[i].Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t}\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\treturn sendmsgN(fd, iov, oob, ptr, salen, flags)\n}\n\nfunc Send(s int, buf []byte, flags int) (err error) {\n\treturn sendto(s, buf, flags, nil, 0)\n}\n\nfunc Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) {\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn sendto(fd, p, flags, ptr, salen)\n}\n\nfunc SetsockoptByte(fd, level, opt int, value byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 1)\n}\n\nfunc SetsockoptInt(fd, level, opt int, value int) (err error) {\n\tvar n = int32(value)\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&n), 4)\n}\n\nfunc SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4)\n}\n\nfunc SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq)\n}\n\nfunc SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq)\n}\n\nfunc SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter)\n}\n\nfunc SetsockoptLinger(fd, level, opt int, l *Linger) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger)\n}\n\nfunc SetsockoptString(fd, level, opt int, s string) (err error) {\n\tvar p unsafe.Pointer\n\tif len(s) > 0 {\n\t\tp = unsafe.Pointer(&[]byte(s)[0])\n\t}\n\treturn setsockopt(fd, level, opt, p, uintptr(len(s)))\n}\n\nfunc SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv))\n}\n\nfunc SetsockoptUint64(fd, level, opt int, value uint64) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 8)\n}\n\nfunc Socket(domain, typ, proto int) (fd int, err error) {\n\tif domain == AF_INET6 && SocketDisableIPv6 {\n\t\treturn -1, EAFNOSUPPORT\n\t}\n\tfd, err = socket(domain, typ, proto)\n\treturn\n}\n\nfunc Socketpair(domain, typ, proto int) (fd [2]int, err error) {\n\tvar fdx [2]int32\n\terr = socketpair(domain, typ, proto, &fdx)\n\tif err == nil {\n\t\tfd[0] = int(fdx[0])\n\t\tfd[1] = int(fdx[1])\n\t}\n\treturn\n}\n\nvar ioSync int64\n\nfunc CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) }\n\nfunc SetNonblock(fd int, nonblocking bool) (err error) {\n\tflag, err := fcntl(fd, F_GETFL, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif (flag&O_NONBLOCK != 0) == nonblocking {\n\t\treturn nil\n\t}\n\tif nonblocking {\n\t\tflag |= O_NONBLOCK\n\t} else {\n\t\tflag &= ^O_NONBLOCK\n\t}\n\t_, err = fcntl(fd, F_SETFL, flag)\n\treturn err\n}\n\n// Exec calls execve(2), which replaces the calling executable in the process\n// tree. argv0 should be the full path to an executable (\"/bin/ls\") and the\n// executable name should also be the first argument in argv ([\"ls\", \"-l\"]).\n// envv are the environment variables that should be passed to the new\n// process ([\"USER=go\", \"PWD=/tmp\"]).\nfunc Exec(argv0 string, argv []string, envv []string) error {\n\treturn syscall.Exec(argv0, argv, envv)\n}\n\n// Lutimes sets the access and modification times tv on path. If path refers to\n// a symlink, it is not dereferenced and the timestamps are set on the symlink.\n// If tv is nil, the access and modification times are set to the current time.\n// Otherwise tv must contain exactly 2 elements, with access time as the first\n// element and modification time as the second element.\nfunc Lutimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn UtimesNanoAt(AT_FDCWD, path, nil, AT_SYMLINK_NOFOLLOW)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW)\n}\n\n// emptyIovecs reports whether there are no bytes in the slice of Iovec.\nfunc emptyIovecs(iov []Iovec) bool {\n\tfor i := range iov {\n\t\tif iov[i].Len > 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Setrlimit sets a resource limit.\nfunc Setrlimit(resource int, rlim *Rlimit) error {\n\t// Just call the syscall version, because as of Go 1.21\n\t// it will affect starting a new process.\n\treturn syscall.Setrlimit(resource, (*syscall.Rlimit)(rlim))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_unix_gc.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || dragonfly || freebsd || (linux && !ppc64 && !ppc64le) || netbsd || openbsd || solaris) && gc\n\npackage unix\n\nimport \"syscall\"\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64le || ppc64) && gc\n\npackage unix\n\nimport \"syscall\"\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.Syscall(trap, a1, a2, a3)\n}\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6)\n}\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.RawSyscall(trap, a1, a2, a3)\n}\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Many of the following syscalls are not available on all versions of z/OS.\n// Some missing calls have legacy implementations/simulations but others\n// will be missing completely. To achieve consistent failing behaviour on\n// legacy systems, we first test the function pointer via a safeloading\n// mechanism to see if the function exists on a given system. Then execution\n// is branched to either continue the function call, or return an error.\n\npackage unix\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:noescape\nfunc initZosLibVec()\n\n//go:noescape\nfunc GetZosLibVec() uintptr\n\nfunc init() {\n\tinitZosLibVec()\n\tr0, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS_____GETENV_A<<4, uintptr(unsafe.Pointer(&([]byte(\"__ZOS_XSYSTRACE\\x00\"))[0])))\n\tif r0 != 0 {\n\t\tn, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___ATOI_A<<4, r0)\n\t\tZosTraceLevel = int(n)\n\t\tr0, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS_____GETENV_A<<4, uintptr(unsafe.Pointer(&([]byte(\"__ZOS_XSYSTRACEFD\\x00\"))[0])))\n\t\tif r0 != 0 {\n\t\t\tfd, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___ATOI_A<<4, r0)\n\t\t\tf := os.NewFile(fd, \"zostracefile\")\n\t\t\tif f != nil {\n\t\t\t\tZosTracefile = f\n\t\t\t}\n\t\t}\n\n\t}\n}\n\n//go:noescape\nfunc CallLeFuncWithErr(funcdesc uintptr, parms ...uintptr) (ret, errno2 uintptr, err Errno)\n\n//go:noescape\nfunc CallLeFuncWithPtrReturn(funcdesc uintptr, parms ...uintptr) (ret, errno2 uintptr, err Errno)\n\n// -------------------------------\n// pointer validity test\n// good pointer returns 0\n// bad pointer returns 1\n//\n//go:nosplit\nfunc ptrtest(uintptr) uint64\n\n// Load memory at ptr location with error handling if the location is invalid\n//\n//go:noescape\nfunc safeload(ptr uintptr) (value uintptr, error uintptr)\n\nconst (\n\tentrypointLocationOffset = 8 // From function descriptor\n\n\txplinkEyecatcher   = 0x00c300c500c500f1 // \".C.E.E.1\"\n\teyecatcherOffset   = 16                 // From function entrypoint (negative)\n\tppa1LocationOffset = 8                  // From function entrypoint (negative)\n\n\tnameLenOffset = 0x14 // From PPA1 start\n\tnameOffset    = 0x16 // From PPA1 start\n)\n\nfunc getPpaOffset(funcptr uintptr) int64 {\n\tentrypoint, err := safeload(funcptr + entrypointLocationOffset)\n\tif err != 0 {\n\t\treturn -1\n\t}\n\n\t// XPLink functions have \".C.E.E.1\" as the first 8 bytes (EBCDIC)\n\tval, err := safeload(entrypoint - eyecatcherOffset)\n\tif err != 0 {\n\t\treturn -1\n\t}\n\tif val != xplinkEyecatcher {\n\t\treturn -1\n\t}\n\n\tppaoff, err := safeload(entrypoint - ppa1LocationOffset)\n\tif err != 0 {\n\t\treturn -1\n\t}\n\n\tppaoff >>= 32\n\treturn int64(ppaoff)\n}\n\n//-------------------------------\n// function descriptor pointer validity test\n// good pointer returns 0\n// bad pointer returns 1\n\n// TODO: currently mksyscall_zos_s390x.go generate empty string for funcName\n// have correct funcName pass to the funcptrtest function\nfunc funcptrtest(funcptr uintptr, funcName string) uint64 {\n\tentrypoint, err := safeload(funcptr + entrypointLocationOffset)\n\tif err != 0 {\n\t\treturn 1\n\t}\n\n\tppaoff := getPpaOffset(funcptr)\n\tif ppaoff == -1 {\n\t\treturn 1\n\t}\n\n\t// PPA1 offset value is from the start of the entire function block, not the entrypoint\n\tppa1 := (entrypoint - eyecatcherOffset) + uintptr(ppaoff)\n\n\tnameLen, err := safeload(ppa1 + nameLenOffset)\n\tif err != 0 {\n\t\treturn 1\n\t}\n\n\tnameLen >>= 48\n\tif nameLen > 128 {\n\t\treturn 1\n\t}\n\n\t// no function name input to argument end here\n\tif funcName == \"\" {\n\t\treturn 0\n\t}\n\n\tvar funcname [128]byte\n\tfor i := 0; i < int(nameLen); i += 8 {\n\t\tv, err := safeload(ppa1 + nameOffset + uintptr(i))\n\t\tif err != 0 {\n\t\t\treturn 1\n\t\t}\n\t\tfuncname[i] = byte(v >> 56)\n\t\tfuncname[i+1] = byte(v >> 48)\n\t\tfuncname[i+2] = byte(v >> 40)\n\t\tfuncname[i+3] = byte(v >> 32)\n\t\tfuncname[i+4] = byte(v >> 24)\n\t\tfuncname[i+5] = byte(v >> 16)\n\t\tfuncname[i+6] = byte(v >> 8)\n\t\tfuncname[i+7] = byte(v)\n\t}\n\n\truntime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, // __e2a_l\n\t\t[]uintptr{uintptr(unsafe.Pointer(&funcname[0])), nameLen})\n\n\tname := string(funcname[:nameLen])\n\tif name != funcName {\n\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n// For detection of capabilities on a system.\n// Is function descriptor f a valid function?\nfunc isValidLeFunc(f uintptr) error {\n\tret := funcptrtest(f, \"\")\n\tif ret != 0 {\n\t\treturn fmt.Errorf(\"Bad pointer, not an LE function \")\n\t}\n\treturn nil\n}\n\n// Retrieve function name from descriptor\nfunc getLeFuncName(f uintptr) (string, error) {\n\t// assume it has been checked, only check ppa1 validity here\n\tentry := ((*[2]uintptr)(unsafe.Pointer(f)))[1]\n\tpreamp := ((*[4]uint32)(unsafe.Pointer(entry - eyecatcherOffset)))\n\n\toffsetPpa1 := preamp[2]\n\tif offsetPpa1 > 0x0ffff {\n\t\treturn \"\", fmt.Errorf(\"PPA1 offset seems too big 0x%x\\n\", offsetPpa1)\n\t}\n\n\tppa1 := uintptr(unsafe.Pointer(preamp)) + uintptr(offsetPpa1)\n\tres := ptrtest(ppa1)\n\tif res != 0 {\n\t\treturn \"\", fmt.Errorf(\"PPA1 address not valid\")\n\t}\n\n\tsize := *(*uint16)(unsafe.Pointer(ppa1 + nameLenOffset))\n\tif size > 128 {\n\t\treturn \"\", fmt.Errorf(\"Function name seems too long, length=%d\\n\", size)\n\t}\n\n\tvar name [128]byte\n\tfuncname := (*[128]byte)(unsafe.Pointer(ppa1 + nameOffset))\n\tcopy(name[0:size], funcname[0:size])\n\n\truntime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, // __e2a_l\n\t\t[]uintptr{uintptr(unsafe.Pointer(&name[0])), uintptr(size)})\n\n\treturn string(name[:size]), nil\n}\n\n// Check z/OS version\nfunc zosLeVersion() (version, release uint32) {\n\tp1 := (*(*uintptr)(unsafe.Pointer(uintptr(1208)))) >> 32\n\tp1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 88)))\n\tp1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 8)))\n\tp1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 984)))\n\tvrm := *(*uint32)(unsafe.Pointer(p1 + 80))\n\tversion = (vrm & 0x00ff0000) >> 16\n\trelease = (vrm & 0x0000ff00) >> 8\n\treturn\n}\n\n// returns a zos C FILE * for stdio fd 0, 1, 2\nfunc ZosStdioFilep(fd int32) uintptr {\n\treturn uintptr(*(*uint64)(unsafe.Pointer(uintptr(*(*uint64)(unsafe.Pointer(uintptr(*(*uint64)(unsafe.Pointer(uintptr(uint64(*(*uint32)(unsafe.Pointer(uintptr(1208)))) + 80))) + uint64((fd+2)<<3))))))))\n}\n\nfunc copyStat(stat *Stat_t, statLE *Stat_LE_t) {\n\tstat.Dev = uint64(statLE.Dev)\n\tstat.Ino = uint64(statLE.Ino)\n\tstat.Nlink = uint64(statLE.Nlink)\n\tstat.Mode = uint32(statLE.Mode)\n\tstat.Uid = uint32(statLE.Uid)\n\tstat.Gid = uint32(statLE.Gid)\n\tstat.Rdev = uint64(statLE.Rdev)\n\tstat.Size = statLE.Size\n\tstat.Atim.Sec = int64(statLE.Atim)\n\tstat.Atim.Nsec = 0 //zos doesn't return nanoseconds\n\tstat.Mtim.Sec = int64(statLE.Mtim)\n\tstat.Mtim.Nsec = 0 //zos doesn't return nanoseconds\n\tstat.Ctim.Sec = int64(statLE.Ctim)\n\tstat.Ctim.Nsec = 0 //zos doesn't return nanoseconds\n\tstat.Blksize = int64(statLE.Blksize)\n\tstat.Blocks = statLE.Blocks\n}\n\nfunc svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64)\nfunc svcLoad(name *byte) unsafe.Pointer\nfunc svcUnload(name *byte, fnptr unsafe.Pointer) int64\n\nfunc (d *Dirent) NameString() string {\n\tif d == nil {\n\t\treturn \"\"\n\t}\n\ts := string(d.Name[:])\n\tidx := strings.IndexByte(s, 0)\n\tif idx == -1 {\n\t\treturn s\n\t} else {\n\t\treturn s[:idx]\n\t}\n}\n\nfunc DecodeData(dest []byte, sz int, val uint64) {\n\tfor i := 0; i < sz; i++ {\n\t\tdest[sz-1-i] = byte((val >> (uint64(i * 8))) & 0xff)\n\t}\n}\n\nfunc EncodeData(data []byte) uint64 {\n\tvar value uint64\n\tsz := len(data)\n\tfor i := 0; i < sz; i++ {\n\t\tvalue |= uint64(data[i]) << uint64(((sz - i - 1) * 8))\n\t}\n\treturn value\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet4\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet6\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) || n == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc anyToSockaddr(_ int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\t// TODO(neeilan): Implement use of first param (fd)\n\tswitch rsa.Addr.Family {\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\t// For z/OS, only replace NUL with @ when the\n\t\t// length is not zero.\n\t\tif pp.Len != 0 && pp.Path[0] == 0 {\n\t\t\t// \"Abstract\" Unix domain socket.\n\t\t\t// Rewrite leading NUL as @ for textual display.\n\t\t\t// (This is the standard convention.)\n\t\t\t// Not friendly to overwrite in place,\n\t\t\t// but the callers below don't care.\n\t\t\tpp.Path[0] = '@'\n\t\t}\n\n\t\t// Assume path ends at NUL.\n\t\t//\n\t\t// For z/OS, the length of the name is a field\n\t\t// in the structure. To be on the safe side, we\n\t\t// will still scan the name for a NUL but only\n\t\t// to the length provided in the structure.\n\t\t//\n\t\t// This is not technically the Linux semantics for\n\t\t// abstract Unix domain sockets--they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs--but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < int(pp.Len) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif err != nil {\n\t\treturn\n\t}\n\t// TODO(neeilan): Remove 0 in call\n\tsa, err = anyToSockaddr(0, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\t// TODO(neeilan): Remove 0 in call\n\tsa, err = anyToSockaddr(0, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Ctermid() (tty string, err error) {\n\tvar termdev [1025]byte\n\truntime.EnterSyscall()\n\tr0, err2, err1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___CTERMID_A<<4, uintptr(unsafe.Pointer(&termdev[0])))\n\truntime.ExitSyscall()\n\tif r0 == 0 {\n\t\treturn \"\", fmt.Errorf(\"%s (errno2=0x%x)\\n\", err1.Error(), err2)\n\t}\n\ts := string(termdev[:])\n\tidx := strings.Index(s, string(rune(0)))\n\tif idx == -1 {\n\t\ttty = s\n\t} else {\n\t\ttty = s[:idx]\n\t}\n\treturn\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = int32(length)\n}\n\n//sys   fcntl(fd int, cmd int, arg int) (val int, err error)\n//sys   Flistxattr(fd int, dest []byte) (sz int, err error) = SYS___FLISTXATTR_A\n//sys   Fremovexattr(fd int, attr string) (err error) = SYS___FREMOVEXATTR_A\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n\n//sys   Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) = SYS___FGETXATTR_A\n//sys   Fsetxattr(fd int, attr string, data []byte, flag int) (err error) = SYS___FSETXATTR_A\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = SYS___ACCEPT_A\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = SYS___ACCEPT4_A\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___BIND_A\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___CONNECT_A\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETPEERNAME_A\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETSOCKNAME_A\n//sys   Removexattr(path string, attr string) (err error) = SYS___REMOVEXATTR_A\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = SYS___RECVFROM_A\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = SYS___SENDTO_A\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___RECVMSG_A\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___SENDMSG_A\n//sys   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) = SYS_MMAP\n//sys   munmap(addr uintptr, length uintptr) (err error) = SYS_MUNMAP\n//sys   ioctl(fd int, req int, arg uintptr) (err error) = SYS_IOCTL\n//sys   ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = SYS_IOCTL\n//sys\tshmat(id int, addr uintptr, flag int) (ret uintptr, err error) = SYS_SHMAT\n//sys\tshmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) = SYS_SHMCTL64\n//sys\tshmdt(addr uintptr) (err error) = SYS_SHMDT\n//sys\tshmget(key int, size int, flag int) (id int, err error) = SYS_SHMGET\n\n//sys   Access(path string, mode uint32) (err error) = SYS___ACCESS_A\n//sys   Chdir(path string) (err error) = SYS___CHDIR_A\n//sys\tChown(path string, uid int, gid int) (err error) = SYS___CHOWN_A\n//sys\tChmod(path string, mode uint32) (err error) = SYS___CHMOD_A\n//sys   Creat(path string, mode uint32) (fd int, err error) = SYS___CREAT_A\n//sys\tDup(oldfd int) (fd int, err error)\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tDup3(oldfd int, newfd int, flags int) (err error) = SYS_DUP3\n//sys\tDirfd(dirp uintptr) (fd int, err error) = SYS_DIRFD\n//sys\tEpollCreate(size int) (fd int, err error) = SYS_EPOLL_CREATE\n//sys\tEpollCreate1(flags int) (fd int, err error) = SYS_EPOLL_CREATE1\n//sys\tEpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) = SYS_EPOLL_CTL\n//sys\tEpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_WAIT\n//sys\tErrno2() (er2 int) = SYS___ERRNO2\n//sys\tEventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error) = SYS___FACCESSAT_A\n\nfunc Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) {\n\treturn Faccessat(dirfd, path, mode, flags)\n}\n\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error) = SYS___FCHMODAT_A\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(fd int, path string, uid int, gid int, flags int) (err error) = SYS___FCHOWNAT_A\n//sys\tFcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) = SYS_FCNTL\n//sys\tFdatasync(fd int) (err error) = SYS_FDATASYNC\n//sys\tfstat(fd int, stat *Stat_LE_t) (err error)\n//sys\tfstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) = SYS___FSTATAT_A\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\tvar statLE Stat_LE_t\n\terr = fstat(fd, &statLE)\n\tcopyStat(stat, &statLE)\n\treturn\n}\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar statLE Stat_LE_t\n\terr = fstatat(dirfd, path, &statLE, flags)\n\tcopyStat(stat, &statLE)\n\treturn\n}\n\nfunc impl_Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)))\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_GetxattrAddr() *(func(path string, attr string, dest []byte) (sz int, err error))\n\nvar Getxattr = enter_Getxattr\n\nfunc enter_Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tfuncref := get_GetxattrAddr()\n\tif validGetxattr() {\n\t\t*funcref = impl_Getxattr\n\t} else {\n\t\t*funcref = error_Getxattr\n\t}\n\treturn (*funcref)(path, attr, dest)\n}\n\nfunc error_Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc validGetxattr() bool {\n\tif funcptrtest(GetZosLibVec()+SYS___GETXATTR_A<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS___GETXATTR_A<<4); err == nil {\n\t\t\treturn name == \"__getxattr_a\"\n\t\t}\n\t}\n\treturn false\n}\n\n//sys   Lgetxattr(link string, attr string, dest []byte) (sz int, err error) = SYS___LGETXATTR_A\n//sys   Lsetxattr(path string, attr string, data []byte, flags int) (err error) = SYS___LSETXATTR_A\n\nfunc impl_Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SetxattrAddr() *(func(path string, attr string, data []byte, flags int) (err error))\n\nvar Setxattr = enter_Setxattr\n\nfunc enter_Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tfuncref := get_SetxattrAddr()\n\tif validSetxattr() {\n\t\t*funcref = impl_Setxattr\n\t} else {\n\t\t*funcref = error_Setxattr\n\t}\n\treturn (*funcref)(path, attr, data, flags)\n}\n\nfunc error_Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\treturn ENOSYS\n}\n\nfunc validSetxattr() bool {\n\tif funcptrtest(GetZosLibVec()+SYS___SETXATTR_A<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS___SETXATTR_A<<4); err == nil {\n\t\t\treturn name == \"__setxattr_a\"\n\t\t}\n\t}\n\treturn false\n}\n\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error) = SYS_FSTATFS\n//sys\tFstatvfs(fd int, stat *Statvfs_t) (err error) = SYS_FSTATVFS\n//sys\tFsync(fd int) (err error)\n//sys\tFutimes(fd int, tv []Timeval) (err error) = SYS_FUTIMES\n//sys\tFutimesat(dirfd int, path string, tv []Timeval) (err error) = SYS___FUTIMESAT_A\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tGetrandom(buf []byte, flags int) (n int, err error) = SYS_GETRANDOM\n//sys\tInotifyInit() (fd int, err error) = SYS_INOTIFY_INIT\n//sys\tInotifyInit1(flags int) (fd int, err error) = SYS_INOTIFY_INIT1\n//sys\tInotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) = SYS___INOTIFY_ADD_WATCH_A\n//sys\tInotifyRmWatch(fd int, watchdesc uint32) (success int, err error) = SYS_INOTIFY_RM_WATCH\n//sys   Listxattr(path string, dest []byte) (sz int, err error) = SYS___LISTXATTR_A\n//sys   Llistxattr(path string, dest []byte) (sz int, err error) = SYS___LLISTXATTR_A\n//sys   Lremovexattr(path string, attr string) (err error) = SYS___LREMOVEXATTR_A\n//sys\tLutimes(path string, tv []Timeval) (err error) = SYS___LUTIMES_A\n//sys   Mprotect(b []byte, prot int) (err error) = SYS_MPROTECT\n//sys   Msync(b []byte, flags int) (err error) = SYS_MSYNC\n//sys   Console2(cmsg *ConsMsg2, modstr *byte, concmd *uint32) (err error) = SYS___CONSOLE2\n\n// Pipe2 begin\n\n//go:nosplit\nfunc getPipe2Addr() *(func([]int, int) error)\n\nvar Pipe2 = pipe2Enter\n\nfunc pipe2Enter(p []int, flags int) (err error) {\n\tif funcptrtest(GetZosLibVec()+SYS_PIPE2<<4, \"\") == 0 {\n\t\t*getPipe2Addr() = pipe2Impl\n\t} else {\n\t\t*getPipe2Addr() = pipe2Error\n\t}\n\treturn (*getPipe2Addr())(p, flags)\n}\n\nfunc pipe2Impl(p []int, flags int) (err error) {\n\tvar pp [2]_C_int\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PIPE2<<4, uintptr(unsafe.Pointer(&pp[0])), uintptr(flags))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t} else {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn\n}\nfunc pipe2Error(p []int, flags int) (err error) {\n\treturn fmt.Errorf(\"Pipe2 is not available on this system\")\n}\n\n// Pipe2 end\n\n//sys   Poll(fds []PollFd, timeout int) (n int, err error) = SYS_POLL\n\nfunc Readdir(dir uintptr) (dirent *Dirent, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READDIR_A<<4, uintptr(dir))\n\truntime.ExitSyscall()\n\tdirent = (*Dirent)(unsafe.Pointer(r0))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//sys\tReaddir_r(dirp uintptr, entry *direntLE, result **direntLE) (err error) = SYS___READDIR_R_A\n//sys\tStatfs(path string, buf *Statfs_t) (err error) = SYS___STATFS_A\n//sys\tSyncfs(fd int) (err error) = SYS_SYNCFS\n//sys   Times(tms *Tms) (ticks uintptr, err error) = SYS_TIMES\n//sys   W_Getmntent(buff *byte, size int) (lastsys int, err error) = SYS_W_GETMNTENT\n//sys   W_Getmntent_A(buff *byte, size int) (lastsys int, err error) = SYS___W_GETMNTENT_A\n\n//sys   mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) = SYS___MOUNT_A\n//sys   unmount_LE(filesystem string, mtm int) (err error) = SYS___UMOUNT_A\n//sys   Chroot(path string) (err error) = SYS___CHROOT_A\n//sys   Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) = SYS_SELECT\n//sysnb Uname(buf *Utsname) (err error) = SYS_____OSNAME_A\n//sys   Unshare(flags int) (err error) = SYS_UNSHARE\n\nfunc Ptsname(fd int) (name string, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___PTSNAME_A<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif r0 == 0 {\n\t\terr = errnoErr2(e1, e2)\n\t} else {\n\t\tname = u2s(unsafe.Pointer(r0))\n\t}\n\treturn\n}\n\nfunc u2s(cstr unsafe.Pointer) string {\n\tstr := (*[1024]uint8)(cstr)\n\ti := 0\n\tfor str[i] != 0 {\n\t\ti++\n\t}\n\treturn string(str[:i])\n}\n\nfunc Close(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSE<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tfor i := 0; e1 == EAGAIN && i < 10; i++ {\n\t\truntime.EnterSyscall()\n\t\tCallLeFuncWithErr(GetZosLibVec()+SYS_USLEEP<<4, uintptr(10))\n\t\truntime.ExitSyscall()\n\t\truntime.EnterSyscall()\n\t\tr0, e2, e1 = CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSE<<4, uintptr(fd))\n\t\truntime.ExitSyscall()\n\t}\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// Dummy function: there are no semantics for Madvise on z/OS\nfunc Madvise(b []byte, advice int) (err error) {\n\treturn\n}\n\nfunc Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\treturn mapper.Mmap(fd, offset, length, prot, flags)\n}\n\nfunc Munmap(b []byte) (err error) {\n\treturn mapper.Munmap(b)\n}\n\nfunc MmapPtr(fd int, offset int64, addr unsafe.Pointer, length uintptr, prot int, flags int) (ret unsafe.Pointer, err error) {\n\txaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset)\n\treturn unsafe.Pointer(xaddr), err\n}\n\nfunc MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) {\n\treturn mapper.munmap(uintptr(addr), length)\n}\n\n//sys   Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error) = SYS_GETPGID\n\nfunc Getpgrp() (pid int) {\n\tpid, _ = Getpgid(0)\n\treturn\n}\n\n//sysnb\tGetppid() (pid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = SYS_GETRLIMIT\n\n//sysnb getrusage(who int, rusage *rusage_zos) (err error) = SYS_GETRUSAGE\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\tvar ruz rusage_zos\n\terr = getrusage(who, &ruz)\n\t//Only the first two fields of Rusage are set\n\trusage.Utime.Sec = ruz.Utime.Sec\n\trusage.Utime.Usec = int64(ruz.Utime.Usec)\n\trusage.Stime.Sec = ruz.Stime.Sec\n\trusage.Stime.Usec = int64(ruz.Stime.Usec)\n\treturn\n}\n\n//sys\tGetegid() (egid int) = SYS_GETEGID\n//sys\tGeteuid() (euid int) = SYS_GETEUID\n//sysnb Getsid(pid int) (sid int, err error) = SYS_GETSID\n//sysnb\tGetuid() (uid int)\n//sysnb\tKill(pid int, sig Signal) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS___LCHOWN_A\n//sys\tLink(path string, link string) (err error) = SYS___LINK_A\n//sys\tLinkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) = SYS___LINKAT_A\n//sys\tListen(s int, n int) (err error)\n//sys\tlstat(path string, stat *Stat_LE_t) (err error) = SYS___LSTAT_A\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar statLE Stat_LE_t\n\terr = lstat(path, &statLE)\n\tcopyStat(stat, &statLE)\n\treturn\n}\n\n// for checking symlinks begins with $VERSION/ $SYSNAME/ $SYSSYMR/ $SYSSYMA/\nfunc isSpecialPath(path []byte) (v bool) {\n\tvar special = [4][8]byte{\n\t\t{'V', 'E', 'R', 'S', 'I', 'O', 'N', '/'},\n\t\t{'S', 'Y', 'S', 'N', 'A', 'M', 'E', '/'},\n\t\t{'S', 'Y', 'S', 'S', 'Y', 'M', 'R', '/'},\n\t\t{'S', 'Y', 'S', 'S', 'Y', 'M', 'A', '/'}}\n\n\tvar i, j int\n\tfor i = 0; i < len(special); i++ {\n\t\tfor j = 0; j < len(special[i]); j++ {\n\t\t\tif path[j] != special[i][j] {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif j == len(special[i]) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc realpath(srcpath string, abspath []byte) (pathlen int, errno int) {\n\tvar source [1024]byte\n\tcopy(source[:], srcpath)\n\tsource[len(srcpath)] = 0\n\tret := runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___REALPATH_A<<4, //__realpath_a()\n\t\t[]uintptr{uintptr(unsafe.Pointer(&source[0])),\n\t\t\tuintptr(unsafe.Pointer(&abspath[0]))})\n\tif ret != 0 {\n\t\tindex := bytes.IndexByte(abspath[:], byte(0))\n\t\tif index != -1 {\n\t\t\treturn index, 0\n\t\t}\n\t} else {\n\t\terrptr := (*int)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, []uintptr{}))) //__errno()\n\t\treturn 0, *errptr\n\t}\n\treturn 0, 245 // EBADDATA   245\n}\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tn = int(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___READLINK_A<<4,\n\t\t[]uintptr{uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))}))\n\truntime.KeepAlive(unsafe.Pointer(_p0))\n\tif n == -1 {\n\t\tvalue := *(*int32)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, []uintptr{})))\n\t\terr = errnoErr(Errno(value))\n\t} else {\n\t\tif buf[0] == '$' {\n\t\t\tif isSpecialPath(buf[1:9]) {\n\t\t\t\tcnt, err1 := realpath(path, buf)\n\t\t\t\tif err1 == 0 {\n\t\t\t\t\tn = cnt\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\nfunc impl_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READLINKAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t\treturn n, err\n\t} else {\n\t\tif buf[0] == '$' {\n\t\t\tif isSpecialPath(buf[1:9]) {\n\t\t\t\tcnt, err1 := realpath(path, buf)\n\t\t\t\tif err1 == 0 {\n\t\t\t\t\tn = cnt\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_ReadlinkatAddr() *(func(dirfd int, path string, buf []byte) (n int, err error))\n\nvar Readlinkat = enter_Readlinkat\n\nfunc enter_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tfuncref := get_ReadlinkatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___READLINKAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Readlinkat\n\t} else {\n\t\t*funcref = error_Readlinkat\n\t}\n\treturn (*funcref)(dirfd, path, buf)\n}\n\nfunc error_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tn = -1\n\terr = ENOSYS\n\treturn\n}\n\n//sys\tMkdir(path string, mode uint32) (err error) = SYS___MKDIR_A\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error) = SYS___MKDIRAT_A\n//sys   Mkfifo(path string, mode uint32) (err error) = SYS___MKFIFO_A\n//sys\tMknod(path string, mode uint32, dev int) (err error) = SYS___MKNOD_A\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error) = SYS___MKNODAT_A\n//sys\tPivotRoot(newroot string, oldroot string) (err error) = SYS___PIVOT_ROOT_A\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tPrctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) = SYS___PRCTL_A\n//sysnb\tPrlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT\n//sys\tRename(from string, to string) (err error) = SYS___RENAME_A\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) = SYS___RENAMEAT_A\n//sys\tRenameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) = SYS___RENAMEAT2_A\n//sys\tRmdir(path string) (err error) = SYS___RMDIR_A\n//sys   Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSetegid(egid int) (err error) = SYS_SETEGID\n//sys\tSeteuid(euid int) (err error) = SYS_SETEUID\n//sys\tSethostname(p []byte) (err error) = SYS___SETHOSTNAME_A\n//sys   Setns(fd int, nstype int) (err error) = SYS_SETNS\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error) = SYS_SETPGID\n//sysnb\tSetrlimit(resource int, lim *Rlimit) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error) = SYS_SETREGID\n//sysnb\tSetreuid(ruid int, euid int) (err error) = SYS_SETREUID\n//sysnb\tSetsid() (pid int, err error) = SYS_SETSID\n//sys\tSetuid(uid int) (err error) = SYS_SETUID\n//sys\tSetgid(uid int) (err error) = SYS_SETGID\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tstat(path string, statLE *Stat_LE_t) (err error) = SYS___STAT_A\n\nfunc Stat(path string, sta *Stat_t) (err error) {\n\tvar statLE Stat_LE_t\n\terr = stat(path, &statLE)\n\tcopyStat(sta, &statLE)\n\treturn\n}\n\n//sys\tSymlink(path string, link string) (err error) = SYS___SYMLINK_A\n//sys\tSymlinkat(oldPath string, dirfd int, newPath string) (err error) = SYS___SYMLINKAT_A\n//sys\tSync() = SYS_SYNC\n//sys\tTruncate(path string, length int64) (err error) = SYS___TRUNCATE_A\n//sys\tTcgetattr(fildes int, termptr *Termios) (err error) = SYS_TCGETATTR\n//sys\tTcsetattr(fildes int, when int, termptr *Termios) (err error) = SYS_TCSETATTR\n//sys\tUmask(mask int) (oldmask int)\n//sys\tUnlink(path string) (err error) = SYS___UNLINK_A\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error) = SYS___UNLINKAT_A\n//sys\tUtime(path string, utim *Utimbuf) (err error) = SYS___UTIME_A\n\n//sys\topen(path string, mode int, perm uint32) (fd int, err error) = SYS___OPEN_A\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tif mode&O_ACCMODE == 0 {\n\t\tmode |= O_RDONLY\n\t}\n\treturn open(path, mode, perm)\n}\n\n//sys\topenat(dirfd int, path string, flags int, mode uint32) (fd int, err error) = SYS___OPENAT_A\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tif flags&O_ACCMODE == 0 {\n\t\tflags |= O_RDONLY\n\t}\n\treturn openat(dirfd, path, flags, mode)\n}\n\n//sys\topenat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) = SYS___OPENAT2_A\n\nfunc Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) {\n\tif how.Flags&O_ACCMODE == 0 {\n\t\thow.Flags |= O_RDONLY\n\t}\n\treturn openat2(dirfd, path, how, SizeofOpenHow)\n}\n\nfunc ZosFdToPath(dirfd int) (path string, err error) {\n\tvar buffer [1024]byte\n\truntime.EnterSyscall()\n\tret, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_W_IOCTL<<4, uintptr(dirfd), 17, 1024, uintptr(unsafe.Pointer(&buffer[0])))\n\truntime.ExitSyscall()\n\tif ret == 0 {\n\t\tzb := bytes.IndexByte(buffer[:], 0)\n\t\tif zb == -1 {\n\t\t\tzb = len(buffer)\n\t\t}\n\t\tCallLeFuncWithErr(GetZosLibVec()+SYS___E2A_L<<4, uintptr(unsafe.Pointer(&buffer[0])), uintptr(zb))\n\t\treturn string(buffer[:zb]), nil\n\t}\n\treturn \"\", errnoErr2(e1, e2)\n}\n\n//sys\tremove(path string) (err error)\n\nfunc Remove(path string) error {\n\treturn remove(path)\n}\n\nconst ImplementsGetwd = true\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar p unsafe.Pointer\n\tif len(buf) > 0 {\n\t\tp = unsafe.Pointer(&buf[0])\n\t} else {\n\t\tp = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___GETCWD_A<<4, uintptr(p), uintptr(len(buf)))\n\truntime.ExitSyscall()\n\tn = clen(buf) + 1\n\tif r0 == 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\tn, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// Getcwd returns the number of bytes written to buf, including the NUL.\n\tif n < 1 || n > len(buf) || buf[n-1] != 0 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[0 : n-1]), nil\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count.  Max is 1<<16 on Linux.\n\tif n < 0 || n > 1<<20 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\nfunc gettid() uint64\n\nfunc Gettid() (tid int) {\n\treturn int(gettid())\n}\n\ntype WaitStatus uint32\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.  At least that's the idea.\n// There are various irregularities.  For example, the\n// \"continued\" status is 0xFFFF, distinguishing itself\n// from stopped via the core dump bit.\n\nconst (\n\tmask    = 0x7F\n\tcore    = 0x80\n\texited  = 0x00\n\tstopped = 0x7F\n\tshift   = 8\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited }\n\nfunc (w WaitStatus) Stopped() bool { return w&0xFF == stopped }\n\nfunc (w WaitStatus) Continued() bool { return w == 0xFFFF }\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif !w.Exited() {\n\t\treturn -1\n\t}\n\treturn int(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) Signal() Signal {\n\tif !w.Signaled() {\n\t\treturn -1\n\t}\n\treturn Signal(w & mask)\n}\n\nfunc (w WaitStatus) StopSignal() Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twaitid(idType int, id int, info *Siginfo, options int) (err error)\n\nfunc Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) {\n\treturn waitid(idType, id, info, options)\n}\n\n//sys\twaitpid(pid int, wstatus *_C_int, options int) (wpid int, err error)\n\nfunc impl_Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAIT4<<4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)))\n\truntime.ExitSyscall()\n\twpid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_Wait4Addr() *(func(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error))\n\nvar Wait4 = enter_Wait4\n\nfunc enter_Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tfuncref := get_Wait4Addr()\n\tif funcptrtest(GetZosLibVec()+SYS_WAIT4<<4, \"\") == 0 {\n\t\t*funcref = impl_Wait4\n\t} else {\n\t\t*funcref = legacyWait4\n\t}\n\treturn (*funcref)(pid, wstatus, options, rusage)\n}\n\nfunc legacyWait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\t// TODO(mundaym): z/OS doesn't have wait4. I don't think getrusage does what we want.\n\t// At the moment rusage will not be touched.\n\tvar status _C_int\n\twpid, err = waitpid(pid, &status, options)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n//sysnb\tgettimeofday(tv *timeval_zos) (err error)\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\tvar tvz timeval_zos\n\terr = gettimeofday(&tvz)\n\ttv.Sec = tvz.Sec\n\ttv.Usec = int64(tvz.Usec)\n\treturn\n}\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval { //fix\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\n//sysnb pipe(p *[2]_C_int) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe(&pp)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sys\tutimes(path string, timeval *[2]Timeval) (err error) = SYS___UTIMES_A\n\nfunc Utimes(path string, tv []Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) = SYS___UTIMENSAT_A\n\nfunc validUtimensat() bool {\n\tif funcptrtest(GetZosLibVec()+SYS___UTIMENSAT_A<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS___UTIMENSAT_A<<4); err == nil {\n\t\t\treturn name == \"__utimensat_a\"\n\t\t}\n\t}\n\treturn false\n}\n\n// Begin UtimesNano\n\n//go:nosplit\nfunc get_UtimesNanoAddr() *(func(path string, ts []Timespec) (err error))\n\nvar UtimesNano = enter_UtimesNano\n\nfunc enter_UtimesNano(path string, ts []Timespec) (err error) {\n\tfuncref := get_UtimesNanoAddr()\n\tif validUtimensat() {\n\t\t*funcref = utimesNanoImpl\n\t} else {\n\t\t*funcref = legacyUtimesNano\n\t}\n\treturn (*funcref)(path, ts)\n}\n\nfunc utimesNanoImpl(path string, ts []Timespec) (err error) {\n\tif ts == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc legacyUtimesNano(path string, ts []Timespec) (err error) {\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\t// Not as efficient as it could be because Timespec and\n\t// Timeval have different types in the different OSes\n\ttv := [2]Timeval{\n\t\tNsecToTimeval(TimespecToNsec(ts[0])),\n\t\tNsecToTimeval(TimespecToNsec(ts[1])),\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n// End UtimesNano\n\n// Begin UtimesNanoAt\n\n//go:nosplit\nfunc get_UtimesNanoAtAddr() *(func(dirfd int, path string, ts []Timespec, flags int) (err error))\n\nvar UtimesNanoAt = enter_UtimesNanoAt\n\nfunc enter_UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) (err error) {\n\tfuncref := get_UtimesNanoAtAddr()\n\tif validUtimensat() {\n\t\t*funcref = utimesNanoAtImpl\n\t} else {\n\t\t*funcref = legacyUtimesNanoAt\n\t}\n\treturn (*funcref)(dirfd, path, ts, flags)\n}\n\nfunc utimesNanoAtImpl(dirfd int, path string, ts []Timespec, flags int) (err error) {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\nfunc legacyUtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) (err error) {\n\tif path[0] != '/' {\n\t\tdirPath, err := ZosFdToPath(dirfd)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpath = dirPath + \"/\" + path\n\t}\n\tif flags == AT_SYMLINK_NOFOLLOW {\n\t\tif len(ts) != 2 {\n\t\t\treturn EINVAL\n\t\t}\n\n\t\tif ts[0].Nsec >= 5e8 {\n\t\t\tts[0].Sec++\n\t\t}\n\t\tts[0].Nsec = 0\n\t\tif ts[1].Nsec >= 5e8 {\n\t\t\tts[1].Sec++\n\t\t}\n\t\tts[1].Nsec = 0\n\n\t\t// Not as efficient as it could be because Timespec and\n\t\t// Timeval have different types in the different OSes\n\t\ttv := []Timeval{\n\t\t\tNsecToTimeval(TimespecToNsec(ts[0])),\n\t\t\tNsecToTimeval(TimespecToNsec(ts[1])),\n\t\t}\n\t\treturn Lutimes(path, tv)\n\t}\n\treturn UtimesNano(path, ts)\n}\n\n// End UtimesNanoAt\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\t// TODO(neeilan) : Remove this 0 ( added to get sys/unix compiling on z/OS )\n\treturn anyToSockaddr(0, &rsa)\n}\n\nconst (\n\t// identifier constants\n\tnwmHeaderIdentifier    = 0xd5e6d4c8\n\tnwmFilterIdentifier    = 0xd5e6d4c6\n\tnwmTCPConnIdentifier   = 0xd5e6d4c3\n\tnwmRecHeaderIdentifier = 0xd5e6d4d9\n\tnwmIPStatsIdentifier   = 0xd5e6d4c9d7e2e340\n\tnwmIPGStatsIdentifier  = 0xd5e6d4c9d7c7e2e3\n\tnwmTCPStatsIdentifier  = 0xd5e6d4e3c3d7e2e3\n\tnwmUDPStatsIdentifier  = 0xd5e6d4e4c4d7e2e3\n\tnwmICMPGStatsEntry     = 0xd5e6d4c9c3d4d7c7\n\tnwmICMPTStatsEntry     = 0xd5e6d4c9c3d4d7e3\n\n\t// nwmHeader constants\n\tnwmVersion1   = 1\n\tnwmVersion2   = 2\n\tnwmCurrentVer = 2\n\n\tnwmTCPConnType     = 1\n\tnwmGlobalStatsType = 14\n\n\t// nwmFilter constants\n\tnwmFilterLclAddrMask = 0x20000000 // Local address\n\tnwmFilterSrcAddrMask = 0x20000000 // Source address\n\tnwmFilterLclPortMask = 0x10000000 // Local port\n\tnwmFilterSrcPortMask = 0x10000000 // Source port\n\n\t// nwmConnEntry constants\n\tnwmTCPStateClosed   = 1\n\tnwmTCPStateListen   = 2\n\tnwmTCPStateSynSent  = 3\n\tnwmTCPStateSynRcvd  = 4\n\tnwmTCPStateEstab    = 5\n\tnwmTCPStateFinWait1 = 6\n\tnwmTCPStateFinWait2 = 7\n\tnwmTCPStateClosWait = 8\n\tnwmTCPStateLastAck  = 9\n\tnwmTCPStateClosing  = 10\n\tnwmTCPStateTimeWait = 11\n\tnwmTCPStateDeletTCB = 12\n\n\t// Existing constants on linux\n\tBPF_TCP_CLOSE        = 1\n\tBPF_TCP_LISTEN       = 2\n\tBPF_TCP_SYN_SENT     = 3\n\tBPF_TCP_SYN_RECV     = 4\n\tBPF_TCP_ESTABLISHED  = 5\n\tBPF_TCP_FIN_WAIT1    = 6\n\tBPF_TCP_FIN_WAIT2    = 7\n\tBPF_TCP_CLOSE_WAIT   = 8\n\tBPF_TCP_LAST_ACK     = 9\n\tBPF_TCP_CLOSING      = 10\n\tBPF_TCP_TIME_WAIT    = 11\n\tBPF_TCP_NEW_SYN_RECV = -1\n\tBPF_TCP_MAX_STATES   = -2\n)\n\ntype nwmTriplet struct {\n\toffset uint32\n\tlength uint32\n\tnumber uint32\n}\n\ntype nwmQuadruplet struct {\n\toffset uint32\n\tlength uint32\n\tnumber uint32\n\tmatch  uint32\n}\n\ntype nwmHeader struct {\n\tident       uint32\n\tlength      uint32\n\tversion     uint16\n\tnwmType     uint16\n\tbytesNeeded uint32\n\toptions     uint32\n\t_           [16]byte\n\tinputDesc   nwmTriplet\n\toutputDesc  nwmQuadruplet\n}\n\ntype nwmFilter struct {\n\tident         uint32\n\tflags         uint32\n\tresourceName  [8]byte\n\tresourceId    uint32\n\tlistenerId    uint32\n\tlocal         [28]byte // union of sockaddr4 and sockaddr6\n\tremote        [28]byte // union of sockaddr4 and sockaddr6\n\t_             uint16\n\t_             uint16\n\tasid          uint16\n\t_             [2]byte\n\ttnLuName      [8]byte\n\ttnMonGrp      uint32\n\ttnAppl        [8]byte\n\tapplData      [40]byte\n\tnInterface    [16]byte\n\tdVipa         [16]byte\n\tdVipaPfx      uint16\n\tdVipaPort     uint16\n\tdVipaFamily   byte\n\t_             [3]byte\n\tdestXCF       [16]byte\n\tdestXCFPfx    uint16\n\tdestXCFFamily byte\n\t_             [1]byte\n\ttargIP        [16]byte\n\ttargIPPfx     uint16\n\ttargIPFamily  byte\n\t_             [1]byte\n\t_             [20]byte\n}\n\ntype nwmRecHeader struct {\n\tident  uint32\n\tlength uint32\n\tnumber byte\n\t_      [3]byte\n}\n\ntype nwmTCPStatsEntry struct {\n\tident             uint64\n\tcurrEstab         uint32\n\tactiveOpened      uint32\n\tpassiveOpened     uint32\n\tconnClosed        uint32\n\testabResets       uint32\n\tattemptFails      uint32\n\tpassiveDrops      uint32\n\ttimeWaitReused    uint32\n\tinSegs            uint64\n\tpredictAck        uint32\n\tpredictData       uint32\n\tinDupAck          uint32\n\tinBadSum          uint32\n\tinBadLen          uint32\n\tinShort           uint32\n\tinDiscOldTime     uint32\n\tinAllBeforeWin    uint32\n\tinSomeBeforeWin   uint32\n\tinAllAfterWin     uint32\n\tinSomeAfterWin    uint32\n\tinOutOfOrder      uint32\n\tinAfterClose      uint32\n\tinWinProbes       uint32\n\tinWinUpdates      uint32\n\toutWinUpdates     uint32\n\toutSegs           uint64\n\toutDelayAcks      uint32\n\toutRsts           uint32\n\tretransSegs       uint32\n\tretransTimeouts   uint32\n\tretransDrops      uint32\n\tpmtuRetrans       uint32\n\tpmtuErrors        uint32\n\toutWinProbes      uint32\n\tprobeDrops        uint32\n\tkeepAliveProbes   uint32\n\tkeepAliveDrops    uint32\n\tfinwait2Drops     uint32\n\tacceptCount       uint64\n\tinBulkQSegs       uint64\n\tinDiscards        uint64\n\tconnFloods        uint32\n\tconnStalls        uint32\n\tcfgEphemDef       uint16\n\tephemInUse        uint16\n\tephemHiWater      uint16\n\tflags             byte\n\t_                 [1]byte\n\tephemExhaust      uint32\n\tsmcRCurrEstabLnks uint32\n\tsmcRLnkActTimeOut uint32\n\tsmcRActLnkOpened  uint32\n\tsmcRPasLnkOpened  uint32\n\tsmcRLnksClosed    uint32\n\tsmcRCurrEstab     uint32\n\tsmcRActiveOpened  uint32\n\tsmcRPassiveOpened uint32\n\tsmcRConnClosed    uint32\n\tsmcRInSegs        uint64\n\tsmcROutSegs       uint64\n\tsmcRInRsts        uint32\n\tsmcROutRsts       uint32\n\tsmcDCurrEstabLnks uint32\n\tsmcDActLnkOpened  uint32\n\tsmcDPasLnkOpened  uint32\n\tsmcDLnksClosed    uint32\n\tsmcDCurrEstab     uint32\n\tsmcDActiveOpened  uint32\n\tsmcDPassiveOpened uint32\n\tsmcDConnClosed    uint32\n\tsmcDInSegs        uint64\n\tsmcDOutSegs       uint64\n\tsmcDInRsts        uint32\n\tsmcDOutRsts       uint32\n}\n\ntype nwmConnEntry struct {\n\tident             uint32\n\tlocal             [28]byte // union of sockaddr4 and sockaddr6\n\tremote            [28]byte // union of sockaddr4 and sockaddr6\n\tstartTime         [8]byte  // uint64, changed to prevent padding from being inserted\n\tlastActivity      [8]byte  // uint64\n\tbytesIn           [8]byte  // uint64\n\tbytesOut          [8]byte  // uint64\n\tinSegs            [8]byte  // uint64\n\toutSegs           [8]byte  // uint64\n\tstate             uint16\n\tactiveOpen        byte\n\tflag01            byte\n\toutBuffered       uint32\n\tinBuffered        uint32\n\tmaxSndWnd         uint32\n\treXmtCount        uint32\n\tcongestionWnd     uint32\n\tssThresh          uint32\n\troundTripTime     uint32\n\troundTripVar      uint32\n\tsendMSS           uint32\n\tsndWnd            uint32\n\trcvBufSize        uint32\n\tsndBufSize        uint32\n\toutOfOrderCount   uint32\n\tlcl0WindowCount   uint32\n\trmt0WindowCount   uint32\n\tdupacks           uint32\n\tflag02            byte\n\tsockOpt6Cont      byte\n\tasid              uint16\n\tresourceName      [8]byte\n\tresourceId        uint32\n\tsubtask           uint32\n\tsockOpt           byte\n\tsockOpt6          byte\n\tclusterConnFlag   byte\n\tproto             byte\n\ttargetAppl        [8]byte\n\tluName            [8]byte\n\tclientUserId      [8]byte\n\tlogMode           [8]byte\n\ttimeStamp         uint32\n\ttimeStampAge      uint32\n\tserverResourceId  uint32\n\tintfName          [16]byte\n\tttlsStatPol       byte\n\tttlsStatConn      byte\n\tttlsSSLProt       uint16\n\tttlsNegCiph       [2]byte\n\tttlsSecType       byte\n\tttlsFIPS140Mode   byte\n\tttlsUserID        [8]byte\n\tapplData          [40]byte\n\tinOldestTime      [8]byte // uint64\n\toutOldestTime     [8]byte // uint64\n\ttcpTrustedPartner byte\n\t_                 [3]byte\n\tbulkDataIntfName  [16]byte\n\tttlsNegCiph4      [4]byte\n\tsmcReason         uint32\n\tlclSMCLinkId      uint32\n\trmtSMCLinkId      uint32\n\tsmcStatus         byte\n\tsmcFlags          byte\n\t_                 [2]byte\n\trcvWnd            uint32\n\tlclSMCBufSz       uint32\n\trmtSMCBufSz       uint32\n\tttlsSessID        [32]byte\n\tttlsSessIDLen     int16\n\t_                 [1]byte\n\tsmcDStatus        byte\n\tsmcDReason        uint32\n}\n\nvar svcNameTable [][]byte = [][]byte{\n\t[]byte(\"\\xc5\\xe9\\xc2\\xd5\\xd4\\xc9\\xc6\\xf4\"), // svc_EZBNMIF4\n}\n\nconst (\n\tsvc_EZBNMIF4 = 0\n)\n\nfunc GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {\n\tjobname := []byte(\"\\x5c\\x40\\x40\\x40\\x40\\x40\\x40\\x40\") // \"*\"\n\tresponseBuffer := [4096]byte{0}\n\tvar bufferAlet, reasonCode uint32 = 0, 0\n\tvar bufferLen, returnValue, returnCode int32 = 4096, 0, 0\n\n\tdsa := [18]uint64{0}\n\tvar argv [7]unsafe.Pointer\n\targv[0] = unsafe.Pointer(&jobname[0])\n\targv[1] = unsafe.Pointer(&responseBuffer[0])\n\targv[2] = unsafe.Pointer(&bufferAlet)\n\targv[3] = unsafe.Pointer(&bufferLen)\n\targv[4] = unsafe.Pointer(&returnValue)\n\targv[5] = unsafe.Pointer(&returnCode)\n\targv[6] = unsafe.Pointer(&reasonCode)\n\n\trequest := (*struct {\n\t\theader nwmHeader\n\t\tfilter nwmFilter\n\t})(unsafe.Pointer(&responseBuffer[0]))\n\n\tEZBNMIF4 := svcLoad(&svcNameTable[svc_EZBNMIF4][0])\n\tif EZBNMIF4 == nil {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// GetGlobalStats EZBNMIF4 call\n\trequest.header.ident = nwmHeaderIdentifier\n\trequest.header.length = uint32(unsafe.Sizeof(request.header))\n\trequest.header.version = nwmCurrentVer\n\trequest.header.nwmType = nwmGlobalStatsType\n\trequest.header.options = 0x80000000\n\n\tsvcCall(EZBNMIF4, &argv[0], &dsa[0])\n\n\t// outputDesc field is filled by EZBNMIF4 on success\n\tif returnCode != 0 || request.header.outputDesc.offset == 0 {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Check that EZBNMIF4 returned a nwmRecHeader\n\trecHeader := (*nwmRecHeader)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset]))\n\tif recHeader.ident != nwmRecHeaderIdentifier {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Parse nwmTriplets to get offsets of returned entries\n\tvar sections []*uint64\n\tvar sectionDesc *nwmTriplet = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[0]))\n\tfor i := uint32(0); i < uint32(recHeader.number); i++ {\n\t\toffset := request.header.outputDesc.offset + uint32(unsafe.Sizeof(*recHeader)) + i*uint32(unsafe.Sizeof(*sectionDesc))\n\t\tsectionDesc = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[offset]))\n\t\tfor j := uint32(0); j < sectionDesc.number; j++ {\n\t\t\toffset = request.header.outputDesc.offset + sectionDesc.offset + j*sectionDesc.length\n\t\t\tsections = append(sections, (*uint64)(unsafe.Pointer(&responseBuffer[offset])))\n\t\t}\n\t}\n\n\t// Find nwmTCPStatsEntry in returned entries\n\tvar tcpStats *nwmTCPStatsEntry = nil\n\tfor _, ptr := range sections {\n\t\tswitch *ptr {\n\t\tcase nwmTCPStatsIdentifier:\n\t\t\tif tcpStats != nil {\n\t\t\t\treturn nil, errnoErr(EINVAL)\n\t\t\t}\n\t\t\ttcpStats = (*nwmTCPStatsEntry)(unsafe.Pointer(ptr))\n\t\tcase nwmIPStatsIdentifier:\n\t\tcase nwmIPGStatsIdentifier:\n\t\tcase nwmUDPStatsIdentifier:\n\t\tcase nwmICMPGStatsEntry:\n\t\tcase nwmICMPTStatsEntry:\n\t\tdefault:\n\t\t\treturn nil, errnoErr(EINVAL)\n\t\t}\n\t}\n\tif tcpStats == nil {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// GetConnectionDetail EZBNMIF4 call\n\tresponseBuffer = [4096]byte{0}\n\tdsa = [18]uint64{0}\n\tbufferAlet, reasonCode = 0, 0\n\tbufferLen, returnValue, returnCode = 4096, 0, 0\n\tnameptr := (*uint32)(unsafe.Pointer(uintptr(0x21c))) // Get jobname of current process\n\tnameptr = (*uint32)(unsafe.Pointer(uintptr(*nameptr + 12)))\n\targv[0] = unsafe.Pointer(uintptr(*nameptr))\n\n\trequest.header.ident = nwmHeaderIdentifier\n\trequest.header.length = uint32(unsafe.Sizeof(request.header))\n\trequest.header.version = nwmCurrentVer\n\trequest.header.nwmType = nwmTCPConnType\n\trequest.header.options = 0x80000000\n\n\trequest.filter.ident = nwmFilterIdentifier\n\n\tvar localSockaddr RawSockaddrAny\n\tsocklen := _Socklen(SizeofSockaddrAny)\n\terr := getsockname(fd, &localSockaddr, &socklen)\n\tif err != nil {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\tif localSockaddr.Addr.Family == AF_INET {\n\t\tlocalSockaddr := (*RawSockaddrInet4)(unsafe.Pointer(&localSockaddr.Addr))\n\t\tlocalSockFilter := (*RawSockaddrInet4)(unsafe.Pointer(&request.filter.local[0]))\n\t\tlocalSockFilter.Family = AF_INET\n\t\tvar i int\n\t\tfor i = 0; i < 4; i++ {\n\t\t\tif localSockaddr.Addr[i] != 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif i != 4 {\n\t\t\trequest.filter.flags |= nwmFilterLclAddrMask\n\t\t\tfor i = 0; i < 4; i++ {\n\t\t\t\tlocalSockFilter.Addr[i] = localSockaddr.Addr[i]\n\t\t\t}\n\t\t}\n\t\tif localSockaddr.Port != 0 {\n\t\t\trequest.filter.flags |= nwmFilterLclPortMask\n\t\t\tlocalSockFilter.Port = localSockaddr.Port\n\t\t}\n\t} else if localSockaddr.Addr.Family == AF_INET6 {\n\t\tlocalSockaddr := (*RawSockaddrInet6)(unsafe.Pointer(&localSockaddr.Addr))\n\t\tlocalSockFilter := (*RawSockaddrInet6)(unsafe.Pointer(&request.filter.local[0]))\n\t\tlocalSockFilter.Family = AF_INET6\n\t\tvar i int\n\t\tfor i = 0; i < 16; i++ {\n\t\t\tif localSockaddr.Addr[i] != 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif i != 16 {\n\t\t\trequest.filter.flags |= nwmFilterLclAddrMask\n\t\t\tfor i = 0; i < 16; i++ {\n\t\t\t\tlocalSockFilter.Addr[i] = localSockaddr.Addr[i]\n\t\t\t}\n\t\t}\n\t\tif localSockaddr.Port != 0 {\n\t\t\trequest.filter.flags |= nwmFilterLclPortMask\n\t\t\tlocalSockFilter.Port = localSockaddr.Port\n\t\t}\n\t}\n\n\tsvcCall(EZBNMIF4, &argv[0], &dsa[0])\n\n\t// outputDesc field is filled by EZBNMIF4 on success\n\tif returnCode != 0 || request.header.outputDesc.offset == 0 {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Check that EZBNMIF4 returned a nwmConnEntry\n\tconn := (*nwmConnEntry)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset]))\n\tif conn.ident != nwmTCPConnIdentifier {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Copy data from the returned data structures into tcpInfo\n\t// Stats from nwmConnEntry are specific to that connection.\n\t// Stats from nwmTCPStatsEntry are global (to the interface?)\n\t// Fields may not be an exact match. Some fields have no equivalent.\n\tvar tcpinfo TCPInfo\n\ttcpinfo.State = uint8(conn.state)\n\ttcpinfo.Ca_state = 0 // dummy\n\ttcpinfo.Retransmits = uint8(tcpStats.retransSegs)\n\ttcpinfo.Probes = uint8(tcpStats.outWinProbes)\n\ttcpinfo.Backoff = 0 // dummy\n\ttcpinfo.Options = 0 // dummy\n\ttcpinfo.Rto = tcpStats.retransTimeouts\n\ttcpinfo.Ato = tcpStats.outDelayAcks\n\ttcpinfo.Snd_mss = conn.sendMSS\n\ttcpinfo.Rcv_mss = conn.sendMSS // dummy\n\ttcpinfo.Unacked = 0            // dummy\n\ttcpinfo.Sacked = 0             // dummy\n\ttcpinfo.Lost = 0               // dummy\n\ttcpinfo.Retrans = conn.reXmtCount\n\ttcpinfo.Fackets = 0 // dummy\n\ttcpinfo.Last_data_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.lastActivity[0])))\n\ttcpinfo.Last_ack_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.outOldestTime[0])))\n\ttcpinfo.Last_data_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0])))\n\ttcpinfo.Last_ack_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0])))\n\ttcpinfo.Pmtu = conn.sendMSS // dummy, NWMIfRouteMtu is a candidate\n\ttcpinfo.Rcv_ssthresh = conn.ssThresh\n\ttcpinfo.Rtt = conn.roundTripTime\n\ttcpinfo.Rttvar = conn.roundTripVar\n\ttcpinfo.Snd_ssthresh = conn.ssThresh // dummy\n\ttcpinfo.Snd_cwnd = conn.congestionWnd\n\ttcpinfo.Advmss = conn.sendMSS        // dummy\n\ttcpinfo.Reordering = 0               // dummy\n\ttcpinfo.Rcv_rtt = conn.roundTripTime // dummy\n\ttcpinfo.Rcv_space = conn.sendMSS     // dummy\n\ttcpinfo.Total_retrans = conn.reXmtCount\n\n\tsvcUnload(&svcNameTable[svc_EZBNMIF4][0], EZBNMIF4)\n\n\treturn &tcpinfo, nil\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\nfunc Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tvar msg Msghdr\n\tvar rsa RawSockaddrAny\n\tmsg.Name = (*byte)(unsafe.Pointer(&rsa))\n\tmsg.Namelen = SizeofSockaddrAny\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = (*byte)(unsafe.Pointer(&p[0]))\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif len(p) == 0 {\n\t\t\tiov.Base = &dummy\n\t\t\tiov.SetLen(1)\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\t// source address is only specified if the socket is unconnected\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\t// TODO(neeilan): Remove 0 arg added to get this compiling on z/OS\n\t\tfrom, err = anyToSockaddr(0, &rsa)\n\t}\n\treturn\n}\n\nfunc Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {\n\t_, err = SendmsgN(fd, p, oob, to, flags)\n\treturn\n}\n\nfunc SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tvar err error\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = int32(salen)\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = (*byte)(unsafe.Pointer(&p[0]))\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tif len(p) == 0 {\n\t\t\tiov.Base = &dummy\n\t\t\tiov.SetLen(1)\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && len(p) == 0 {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\nfunc Opendir(name string) (uintptr, error) {\n\tp, err := BytePtrFromString(name)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\terr = nil\n\truntime.EnterSyscall()\n\tdir, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___OPENDIR_A<<4, uintptr(unsafe.Pointer(p)))\n\truntime.ExitSyscall()\n\truntime.KeepAlive(unsafe.Pointer(p))\n\tif dir == 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn dir, err\n}\n\n// clearsyscall.Errno resets the errno value to 0.\nfunc clearErrno()\n\nfunc Closedir(dir uintptr) error {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSEDIR<<4, dir)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\treturn errnoErr2(e1, e2)\n\t}\n\treturn nil\n}\n\nfunc Seekdir(dir uintptr, pos int) {\n\truntime.EnterSyscall()\n\tCallLeFuncWithErr(GetZosLibVec()+SYS_SEEKDIR<<4, dir, uintptr(pos))\n\truntime.ExitSyscall()\n}\n\nfunc Telldir(dir uintptr) (int, error) {\n\tp, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TELLDIR<<4, dir)\n\tpos := int(p)\n\tif int64(p) == -1 {\n\t\treturn pos, errnoErr2(e1, e2)\n\t}\n\treturn pos, nil\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t// struct flock is packed on z/OS. We can't emulate that in Go so\n\t// instead we pack it here.\n\tvar flock [24]byte\n\t*(*int16)(unsafe.Pointer(&flock[0])) = lk.Type\n\t*(*int16)(unsafe.Pointer(&flock[2])) = lk.Whence\n\t*(*int64)(unsafe.Pointer(&flock[4])) = lk.Start\n\t*(*int64)(unsafe.Pointer(&flock[12])) = lk.Len\n\t*(*int32)(unsafe.Pointer(&flock[20])) = lk.Pid\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, fd, uintptr(cmd), uintptr(unsafe.Pointer(&flock)))\n\truntime.ExitSyscall()\n\tlk.Type = *(*int16)(unsafe.Pointer(&flock[0]))\n\tlk.Whence = *(*int16)(unsafe.Pointer(&flock[2]))\n\tlk.Start = *(*int64)(unsafe.Pointer(&flock[4]))\n\tlk.Len = *(*int64)(unsafe.Pointer(&flock[12]))\n\tlk.Pid = *(*int32)(unsafe.Pointer(&flock[20]))\n\tif r0 == 0 {\n\t\treturn nil\n\t}\n\treturn errnoErr2(e1, e2)\n}\n\nfunc impl_Flock(fd int, how int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FLOCK<<4, uintptr(fd), uintptr(how))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FlockAddr() *(func(fd int, how int) (err error))\n\nvar Flock = enter_Flock\n\nfunc validFlock(fp uintptr) bool {\n\tif funcptrtest(GetZosLibVec()+SYS_FLOCK<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS_FLOCK<<4); err == nil {\n\t\t\treturn name == \"flock\"\n\t\t}\n\t}\n\treturn false\n}\n\nfunc enter_Flock(fd int, how int) (err error) {\n\tfuncref := get_FlockAddr()\n\tif validFlock(GetZosLibVec() + SYS_FLOCK<<4) {\n\t\t*funcref = impl_Flock\n\t} else {\n\t\t*funcref = legacyFlock\n\t}\n\treturn (*funcref)(fd, how)\n}\n\nfunc legacyFlock(fd int, how int) error {\n\n\tvar flock_type int16\n\tvar fcntl_cmd int\n\n\tswitch how {\n\tcase LOCK_SH | LOCK_NB:\n\t\tflock_type = F_RDLCK\n\t\tfcntl_cmd = F_SETLK\n\tcase LOCK_EX | LOCK_NB:\n\t\tflock_type = F_WRLCK\n\t\tfcntl_cmd = F_SETLK\n\tcase LOCK_EX:\n\t\tflock_type = F_WRLCK\n\t\tfcntl_cmd = F_SETLKW\n\tcase LOCK_UN:\n\t\tflock_type = F_UNLCK\n\t\tfcntl_cmd = F_SETLKW\n\tdefault:\n\t}\n\n\tflock := Flock_t{\n\t\tType:   int16(flock_type),\n\t\tWhence: int16(0),\n\t\tStart:  int64(0),\n\t\tLen:    int64(0),\n\t\tPid:    int32(Getppid()),\n\t}\n\n\terr := FcntlFlock(uintptr(fd), fcntl_cmd, &flock)\n\treturn err\n}\n\nfunc Mlock(b []byte) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Mlock2(b []byte, flags int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Mlockall(flags int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Munlock(b []byte) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_SWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Munlockall() (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_SWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc ClockGettime(clockid int32, ts *Timespec) error {\n\n\tvar ticks_per_sec uint32 = 100 //TODO(kenan): value is currently hardcoded; need sysconf() call otherwise\n\tvar nsec_per_sec int64 = 1000000000\n\n\tif ts == nil {\n\t\treturn EFAULT\n\t}\n\tif clockid == CLOCK_REALTIME || clockid == CLOCK_MONOTONIC {\n\t\tvar nanotime int64 = runtime.Nanotime1()\n\t\tts.Sec = nanotime / nsec_per_sec\n\t\tts.Nsec = nanotime % nsec_per_sec\n\t} else if clockid == CLOCK_PROCESS_CPUTIME_ID || clockid == CLOCK_THREAD_CPUTIME_ID {\n\t\tvar tm Tms\n\t\t_, err := Times(&tm)\n\t\tif err != nil {\n\t\t\treturn EFAULT\n\t\t}\n\t\tts.Sec = int64(tm.Utime / ticks_per_sec)\n\t\tts.Nsec = int64(tm.Utime) * nsec_per_sec / int64(ticks_per_sec)\n\t} else {\n\t\treturn EINVAL\n\t}\n\treturn nil\n}\n\n// Chtag\n\n//go:nosplit\nfunc get_ChtagAddr() *(func(path string, ccsid uint64, textbit uint64) error)\n\nvar Chtag = enter_Chtag\n\nfunc enter_Chtag(path string, ccsid uint64, textbit uint64) error {\n\tfuncref := get_ChtagAddr()\n\tif validSetxattr() {\n\t\t*funcref = impl_Chtag\n\t} else {\n\t\t*funcref = legacy_Chtag\n\t}\n\treturn (*funcref)(path, ccsid, textbit)\n}\n\nfunc legacy_Chtag(path string, ccsid uint64, textbit uint64) error {\n\ttag := ccsid<<16 | textbit<<15\n\tvar tag_buff [8]byte\n\tDecodeData(tag_buff[:], 8, tag)\n\treturn Setxattr(path, \"filetag\", tag_buff[:], XATTR_REPLACE)\n}\n\nfunc impl_Chtag(path string, ccsid uint64, textbit uint64) error {\n\ttag := ccsid<<16 | textbit<<15\n\tvar tag_buff [4]byte\n\tDecodeData(tag_buff[:], 4, tag)\n\treturn Setxattr(path, \"system.filetag\", tag_buff[:], XATTR_REPLACE)\n}\n\n// End of Chtag\n\n// Nanosleep\n\n//go:nosplit\nfunc get_NanosleepAddr() *(func(time *Timespec, leftover *Timespec) error)\n\nvar Nanosleep = enter_Nanosleep\n\nfunc enter_Nanosleep(time *Timespec, leftover *Timespec) error {\n\tfuncref := get_NanosleepAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_NANOSLEEP<<4, \"\") == 0 {\n\t\t*funcref = impl_Nanosleep\n\t} else {\n\t\t*funcref = legacyNanosleep\n\t}\n\treturn (*funcref)(time, leftover)\n}\n\nfunc impl_Nanosleep(time *Timespec, leftover *Timespec) error {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_NANOSLEEP<<4, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\treturn errnoErr2(e1, e2)\n\t}\n\treturn nil\n}\n\nfunc legacyNanosleep(time *Timespec, leftover *Timespec) error {\n\tt0 := runtime.Nanotime1()\n\tvar secrem uint32\n\tvar nsecrem uint32\n\ttotal := time.Sec*1000000000 + time.Nsec\n\telapsed := runtime.Nanotime1() - t0\n\tvar rv int32\n\tvar rc int32\n\tvar err error\n\t// repeatedly sleep for 1 second until less than 1 second left\n\tfor total-elapsed > 1000000000 {\n\t\trv, rc, _ = BpxCondTimedWait(uint32(1), uint32(0), uint32(CW_CONDVAR), &secrem, &nsecrem)\n\t\tif rv != 0 && rc != 112 { // 112 is EAGAIN\n\t\t\tif leftover != nil && rc == 120 { // 120 is EINTR\n\t\t\t\tleftover.Sec = int64(secrem)\n\t\t\t\tleftover.Nsec = int64(nsecrem)\n\t\t\t}\n\t\t\terr = Errno(rc)\n\t\t\treturn err\n\t\t}\n\t\telapsed = runtime.Nanotime1() - t0\n\t}\n\t// sleep the remainder\n\tif total > elapsed {\n\t\trv, rc, _ = BpxCondTimedWait(uint32(0), uint32(total-elapsed), uint32(CW_CONDVAR), &secrem, &nsecrem)\n\t}\n\tif leftover != nil && rc == 120 {\n\t\tleftover.Sec = int64(secrem)\n\t\tleftover.Nsec = int64(nsecrem)\n\t}\n\tif rv != 0 && rc != 112 {\n\t\terr = Errno(rc)\n\t}\n\treturn err\n}\n\n// End of Nanosleep\n\nvar (\n\tStdin  = 0\n\tStdout = 1\n\tStderr = 2\n)\n\n// Do the interface allocations only once for common\n// Errno values.\nvar (\n\terrEAGAIN error = syscall.EAGAIN\n\terrEINVAL error = syscall.EINVAL\n\terrENOENT error = syscall.ENOENT\n)\n\nvar ZosTraceLevel int\nvar ZosTracefile *os.File\n\nvar (\n\tsignalNameMapOnce sync.Once\n\tsignalNameMap     map[string]syscall.Signal\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn nil\n\tcase EAGAIN:\n\t\treturn errEAGAIN\n\tcase EINVAL:\n\t\treturn errEINVAL\n\tcase ENOENT:\n\t\treturn errENOENT\n\t}\n\treturn e\n}\n\nvar reg *regexp.Regexp\n\n// enhanced with zos specific errno2\nfunc errnoErr2(e Errno, e2 uintptr) error {\n\tswitch e {\n\tcase 0:\n\t\treturn nil\n\tcase EAGAIN:\n\t\treturn errEAGAIN\n\t\t/*\n\t\t\tAllow the retrieval of errno2 for EINVAL and ENOENT on zos\n\t\t\t\tcase EINVAL:\n\t\t\t\t\treturn errEINVAL\n\t\t\t\tcase ENOENT:\n\t\t\t\t\treturn errENOENT\n\t\t*/\n\t}\n\tif ZosTraceLevel > 0 {\n\t\tvar name string\n\t\tif reg == nil {\n\t\t\treg = regexp.MustCompile(\"(^unix\\\\.[^/]+$|.*\\\\/unix\\\\.[^/]+$)\")\n\t\t}\n\t\ti := 1\n\t\tpc, file, line, ok := runtime.Caller(i)\n\t\tif ok {\n\t\t\tname = runtime.FuncForPC(pc).Name()\n\t\t}\n\t\tfor ok && reg.MatchString(runtime.FuncForPC(pc).Name()) {\n\t\t\ti += 1\n\t\t\tpc, file, line, ok = runtime.Caller(i)\n\t\t}\n\t\tif ok {\n\t\t\tif ZosTracefile == nil {\n\t\t\t\tZosConsolePrintf(\"From %s:%d\\n\", file, line)\n\t\t\t\tZosConsolePrintf(\"%s: %s (errno2=0x%x)\\n\", name, e.Error(), e2)\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(ZosTracefile, \"From %s:%d\\n\", file, line)\n\t\t\t\tfmt.Fprintf(ZosTracefile, \"%s: %s (errno2=0x%x)\\n\", name, e.Error(), e2)\n\t\t\t}\n\t\t} else {\n\t\t\tif ZosTracefile == nil {\n\t\t\t\tZosConsolePrintf(\"%s (errno2=0x%x)\\n\", e.Error(), e2)\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(ZosTracefile, \"%s (errno2=0x%x)\\n\", e.Error(), e2)\n\t\t\t}\n\t\t}\n\t}\n\treturn e\n}\n\n// ErrnoName returns the error name for error number e.\nfunc ErrnoName(e Errno) string {\n\ti := sort.Search(len(errorList), func(i int) bool {\n\t\treturn errorList[i].num >= e\n\t})\n\tif i < len(errorList) && errorList[i].num == e {\n\t\treturn errorList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalName returns the signal name for signal number s.\nfunc SignalName(s syscall.Signal) string {\n\ti := sort.Search(len(signalList), func(i int) bool {\n\t\treturn signalList[i].num >= s\n\t})\n\tif i < len(signalList) && signalList[i].num == s {\n\t\treturn signalList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalNum returns the syscall.Signal for signal named s,\n// or 0 if a signal with such name is not found.\n// The signal name should start with \"SIG\".\nfunc SignalNum(s string) syscall.Signal {\n\tsignalNameMapOnce.Do(func() {\n\t\tsignalNameMap = make(map[string]syscall.Signal, len(signalList))\n\t\tfor _, signal := range signalList {\n\t\t\tsignalNameMap[signal.name] = signal.num\n\t\t}\n\t})\n\treturn signalNameMap[s]\n}\n\n// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte.\nfunc clen(n []byte) int {\n\ti := bytes.IndexByte(n, 0)\n\tif i == -1 {\n\t\ti = len(n)\n\t}\n\treturn i\n}\n\n// Mmap manager, for use by operating system-specific implementations.\n\ntype mmapper struct {\n\tsync.Mutex\n\tactive map[*byte][]byte // active mappings; key is last byte in mapping\n\tmmap   func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error)\n\tmunmap func(addr uintptr, length uintptr) error\n}\n\nfunc (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\tif length <= 0 {\n\t\treturn nil, EINVAL\n\t}\n\n\t// Set __MAP_64 by default\n\tflags |= __MAP_64\n\n\t// Map the requested memory.\n\taddr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Slice memory layout\n\tvar sl = struct {\n\t\taddr uintptr\n\t\tlen  int\n\t\tcap  int\n\t}{addr, length, length}\n\n\t// Use unsafe to turn sl into a []byte.\n\tb := *(*[]byte)(unsafe.Pointer(&sl))\n\n\t// Register mapping in m and return it.\n\tp := &b[cap(b)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tm.active[p] = b\n\treturn b, nil\n}\n\nfunc (m *mmapper) Munmap(data []byte) (err error) {\n\tif len(data) == 0 || len(data) != cap(data) {\n\t\treturn EINVAL\n\t}\n\n\t// Find the base of the mapping.\n\tp := &data[cap(data)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tb := m.active[p]\n\tif b == nil || &b[0] != &data[0] {\n\t\treturn EINVAL\n\t}\n\n\t// Unmap the memory and update m.\n\tif errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil {\n\t\treturn errno\n\t}\n\tdelete(m.active, p)\n\treturn nil\n}\n\nfunc Read(fd int, p []byte) (n int, err error) {\n\tn, err = read(fd, p)\n\tif raceenabled {\n\t\tif n > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), n)\n\t\t}\n\t\tif err == nil {\n\t\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t\t}\n\t}\n\treturn\n}\n\nfunc Write(fd int, p []byte) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = write(fd, p)\n\tif raceenabled && n > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), n)\n\t}\n\treturn\n}\n\n// For testing: clients can set this flag to force\n// creation of IPv6 sockets to return EAFNOSUPPORT.\nvar SocketDisableIPv6 bool\n\n// Sockaddr represents a socket address.\ntype Sockaddr interface {\n\tsockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs\n}\n\n// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets.\ntype SockaddrInet4 struct {\n\tPort int\n\tAddr [4]byte\n\traw  RawSockaddrInet4\n}\n\n// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets.\ntype SockaddrInet6 struct {\n\tPort   int\n\tZoneId uint32\n\tAddr   [16]byte\n\traw    RawSockaddrInet6\n}\n\n// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets.\ntype SockaddrUnix struct {\n\tName string\n\traw  RawSockaddrUnix\n}\n\nfunc Bind(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn bind(fd, ptr, n)\n}\n\nfunc Connect(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connect(fd, ptr, n)\n}\n\nfunc Getpeername(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getpeername(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\nfunc GetsockoptByte(fd, level, opt int) (value byte, err error) {\n\tvar n byte\n\tvallen := _Socklen(1)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc GetsockoptInt(fd, level, opt int) (value int, err error) {\n\tvar n int32\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn int(n), err\n}\n\nfunc GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\treturn value, err\n}\n\nfunc GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {\n\tvar value IPMreq\n\tvallen := _Socklen(SizeofIPMreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {\n\tvar value IPv6Mreq\n\tvallen := _Socklen(SizeofIPv6Mreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {\n\tvar value IPv6MTUInfo\n\tvallen := _Socklen(SizeofIPv6MTUInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {\n\tvar value ICMPv6Filter\n\tvallen := _Socklen(SizeofICMPv6Filter)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptLinger(fd, level, opt int) (*Linger, error) {\n\tvar linger Linger\n\tvallen := _Socklen(SizeofLinger)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen)\n\treturn &linger, err\n}\n\nfunc GetsockoptTimeval(fd, level, opt int) (*Timeval, error) {\n\tvar tv Timeval\n\tvallen := _Socklen(unsafe.Sizeof(tv))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen)\n\treturn &tv, err\n}\n\nfunc GetsockoptUint64(fd, level, opt int) (value uint64, err error) {\n\tvar n uint64\n\tvallen := _Socklen(8)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\nfunc Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) {\n\tptr, n, err := to.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn sendto(fd, p, flags, ptr, n)\n}\n\nfunc SetsockoptByte(fd, level, opt int, value byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 1)\n}\n\nfunc SetsockoptInt(fd, level, opt int, value int) (err error) {\n\tvar n = int32(value)\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&n), 4)\n}\n\nfunc SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4)\n}\n\nfunc SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq)\n}\n\nfunc SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq)\n}\n\nfunc SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter)\n}\n\nfunc SetsockoptLinger(fd, level, opt int, l *Linger) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger)\n}\n\nfunc SetsockoptString(fd, level, opt int, s string) (err error) {\n\tvar p unsafe.Pointer\n\tif len(s) > 0 {\n\t\tp = unsafe.Pointer(&[]byte(s)[0])\n\t}\n\treturn setsockopt(fd, level, opt, p, uintptr(len(s)))\n}\n\nfunc SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv))\n}\n\nfunc SetsockoptUint64(fd, level, opt int, value uint64) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 8)\n}\n\nfunc Socket(domain, typ, proto int) (fd int, err error) {\n\tif domain == AF_INET6 && SocketDisableIPv6 {\n\t\treturn -1, EAFNOSUPPORT\n\t}\n\tfd, err = socket(domain, typ, proto)\n\treturn\n}\n\nfunc Socketpair(domain, typ, proto int) (fd [2]int, err error) {\n\tvar fdx [2]int32\n\terr = socketpair(domain, typ, proto, &fdx)\n\tif err == nil {\n\t\tfd[0] = int(fdx[0])\n\t\tfd[1] = int(fdx[1])\n\t}\n\treturn\n}\n\nvar ioSync int64\n\nfunc CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) }\n\nfunc SetNonblock(fd int, nonblocking bool) (err error) {\n\tflag, err := fcntl(fd, F_GETFL, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif nonblocking {\n\t\tflag |= O_NONBLOCK\n\t} else {\n\t\tflag &= ^O_NONBLOCK\n\t}\n\t_, err = fcntl(fd, F_SETFL, flag)\n\treturn err\n}\n\n// Exec calls execve(2), which replaces the calling executable in the process\n// tree. argv0 should be the full path to an executable (\"/bin/ls\") and the\n// executable name should also be the first argument in argv ([\"ls\", \"-l\"]).\n// envv are the environment variables that should be passed to the new\n// process ([\"USER=go\", \"PWD=/tmp\"]).\nfunc Exec(argv0 string, argv []string, envv []string) error {\n\treturn syscall.Exec(argv0, argv, envv)\n}\n\nfunc Getag(path string) (ccsid uint16, flag uint16, err error) {\n\tvar val [8]byte\n\tsz, err := Getxattr(path, \"ccsid\", val[:])\n\tif err != nil {\n\t\treturn\n\t}\n\tccsid = uint16(EncodeData(val[0:sz]))\n\tsz, err = Getxattr(path, \"flags\", val[:])\n\tif err != nil {\n\t\treturn\n\t}\n\tflag = uint16(EncodeData(val[0:sz]) >> 15)\n\treturn\n}\n\n// Mount begin\nfunc impl_Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p3 *byte\n\t_p3, err = BytePtrFromString(data)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MOUNT1_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(_p3)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_MountAddr() *(func(source string, target string, fstype string, flags uintptr, data string) (err error))\n\nvar Mount = enter_Mount\n\nfunc enter_Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\tfuncref := get_MountAddr()\n\tif validMount() {\n\t\t*funcref = impl_Mount\n\t} else {\n\t\t*funcref = legacyMount\n\t}\n\treturn (*funcref)(source, target, fstype, flags, data)\n}\n\nfunc legacyMount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\tif needspace := 8 - len(fstype); needspace <= 0 {\n\t\tfstype = fstype[0:8]\n\t} else {\n\t\tfstype += \"        \"[0:needspace]\n\t}\n\treturn mount_LE(target, source, fstype, uint32(flags), int32(len(data)), data)\n}\n\nfunc validMount() bool {\n\tif funcptrtest(GetZosLibVec()+SYS___MOUNT1_A<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS___MOUNT1_A<<4); err == nil {\n\t\t\treturn name == \"__mount1_a\"\n\t\t}\n\t}\n\treturn false\n}\n\n// Mount end\n\n// Unmount begin\nfunc impl_Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UMOUNT2_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_UnmountAddr() *(func(target string, flags int) (err error))\n\nvar Unmount = enter_Unmount\n\nfunc enter_Unmount(target string, flags int) (err error) {\n\tfuncref := get_UnmountAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___UMOUNT2_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Unmount\n\t} else {\n\t\t*funcref = legacyUnmount\n\t}\n\treturn (*funcref)(target, flags)\n}\n\nfunc legacyUnmount(name string, mtm int) (err error) {\n\t// mountpoint is always a full path and starts with a '/'\n\t// check if input string is not a mountpoint but a filesystem name\n\tif name[0] != '/' {\n\t\treturn unmount_LE(name, mtm)\n\t}\n\t// treat name as mountpoint\n\tb2s := func(arr []byte) string {\n\t\tvar str string\n\t\tfor i := 0; i < len(arr); i++ {\n\t\t\tif arr[i] == 0 {\n\t\t\t\tstr = string(arr[:i])\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn str\n\t}\n\tvar buffer struct {\n\t\theader W_Mnth\n\t\tfsinfo [64]W_Mntent\n\t}\n\tfs_count, err := W_Getmntent_A((*byte)(unsafe.Pointer(&buffer)), int(unsafe.Sizeof(buffer)))\n\tif err == nil {\n\t\terr = EINVAL\n\t\tfor i := 0; i < fs_count; i++ {\n\t\t\tif b2s(buffer.fsinfo[i].Mountpoint[:]) == name {\n\t\t\t\terr = unmount_LE(b2s(buffer.fsinfo[i].Fsname[:]), mtm)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t} else if fs_count == 0 {\n\t\terr = EINVAL\n\t}\n\treturn err\n}\n\n// Unmount end\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\nfunc direntLeToDirentUnix(dirent *direntLE, dir uintptr, path string) (Dirent, error) {\n\tvar d Dirent\n\n\td.Ino = uint64(dirent.Ino)\n\toffset, err := Telldir(dir)\n\tif err != nil {\n\t\treturn d, err\n\t}\n\n\td.Off = int64(offset)\n\ts := string(bytes.Split(dirent.Name[:], []byte{0})[0])\n\tcopy(d.Name[:], s)\n\n\td.Reclen = uint16(24 + len(d.NameString()))\n\tvar st Stat_t\n\tpath = path + \"/\" + s\n\terr = Lstat(path, &st)\n\tif err != nil {\n\t\treturn d, err\n\t}\n\n\td.Type = uint8(st.Mode >> 24)\n\treturn d, err\n}\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\t// Simulation of Getdirentries port from the Darwin implementation.\n\t// COMMENTS FROM DARWIN:\n\t// It's not the full required semantics, but should handle the case\n\t// of calling Getdirentries or ReadDirent repeatedly.\n\t// It won't handle assigning the results of lseek to *basep, or handle\n\t// the directory being edited underfoot.\n\n\tskip, err := Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\t// Get path from fd to avoid unavailable call (fdopendir)\n\tpath, err := ZosFdToPath(fd)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\td, err := Opendir(path)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdefer Closedir(d)\n\n\tvar cnt int64\n\tfor {\n\t\tvar entryLE direntLE\n\t\tvar entrypLE *direntLE\n\t\te := Readdir_r(d, &entryLE, &entrypLE)\n\t\tif e != nil {\n\t\t\treturn n, e\n\t\t}\n\t\tif entrypLE == nil {\n\t\t\tbreak\n\t\t}\n\t\tif skip > 0 {\n\t\t\tskip--\n\t\t\tcnt++\n\t\t\tcontinue\n\t\t}\n\n\t\t// Dirent on zos has a different structure\n\t\tentry, e := direntLeToDirentUnix(&entryLE, d, path)\n\t\tif e != nil {\n\t\t\treturn n, e\n\t\t}\n\n\t\treclen := int(entry.Reclen)\n\t\tif reclen > len(buf) {\n\t\t\t// Not enough room. Return for now.\n\t\t\t// The counter will let us know where we should start up again.\n\t\t\t// Note: this strategy for suspending in the middle and\n\t\t\t// restarting is O(n^2) in the length of the directory. Oh well.\n\t\t\tbreak\n\t\t}\n\n\t\t// Copy entry into return buffer.\n\t\ts := unsafe.Slice((*byte)(unsafe.Pointer(&entry)), reclen)\n\t\tcopy(buf, s)\n\n\t\tbuf = buf[reclen:]\n\t\tn += reclen\n\t\tcnt++\n\t}\n\t// Set the seek offset of the input fd to record\n\t// how many files we've already returned.\n\t_, err = Seek(fd, cnt, 0 /* SEEK_SET */)\n\tif err != nil {\n\t\treturn n, err\n\t}\n\n\treturn n, nil\n}\n\nfunc Err2ad() (eadd *int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS___ERR2AD<<4)\n\teadd = (*int)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc ZosConsolePrintf(format string, v ...interface{}) (int, error) {\n\ttype __cmsg struct {\n\t\t_            uint16\n\t\t_            [2]uint8\n\t\t__msg_length uint32\n\t\t__msg        uintptr\n\t\t_            [4]uint8\n\t}\n\tmsg := fmt.Sprintf(format, v...)\n\tstrptr := unsafe.Pointer((*reflect.StringHeader)(unsafe.Pointer(&msg)).Data)\n\tlen := (*reflect.StringHeader)(unsafe.Pointer(&msg)).Len\n\tcmsg := __cmsg{__msg_length: uint32(len), __msg: uintptr(strptr)}\n\tcmd := uint32(0)\n\truntime.EnterSyscall()\n\trc, err2, err1 := CallLeFuncWithErr(GetZosLibVec()+SYS_____CONSOLE_A<<4, uintptr(unsafe.Pointer(&cmsg)), 0, uintptr(unsafe.Pointer(&cmd)))\n\truntime.ExitSyscall()\n\tif rc != 0 {\n\t\treturn 0, fmt.Errorf(\"%s (errno2=0x%x)\\n\", err1.Error(), err2)\n\t}\n\treturn 0, nil\n}\nfunc ZosStringToEbcdicBytes(str string, nullterm bool) (ebcdicBytes []byte) {\n\tif nullterm {\n\t\tebcdicBytes = []byte(str + \"\\x00\")\n\t} else {\n\t\tebcdicBytes = []byte(str)\n\t}\n\tA2e(ebcdicBytes)\n\treturn\n}\nfunc ZosEbcdicBytesToString(b []byte, trimRight bool) (str string) {\n\tres := make([]byte, len(b))\n\tcopy(res, b)\n\tE2a(res)\n\tif trimRight {\n\t\tstr = string(bytes.TrimRight(res, \" \\x00\"))\n\t} else {\n\t\tstr = string(res)\n\t}\n\treturn\n}\n\nfunc fdToPath(dirfd int) (path string, err error) {\n\tvar buffer [1024]byte\n\t// w_ctrl()\n\tret := runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_W_IOCTL<<4,\n\t\t[]uintptr{uintptr(dirfd), 17, 1024, uintptr(unsafe.Pointer(&buffer[0]))})\n\tif ret == 0 {\n\t\tzb := bytes.IndexByte(buffer[:], 0)\n\t\tif zb == -1 {\n\t\t\tzb = len(buffer)\n\t\t}\n\t\t// __e2a_l()\n\t\truntime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4,\n\t\t\t[]uintptr{uintptr(unsafe.Pointer(&buffer[0])), uintptr(zb)})\n\t\treturn string(buffer[:zb]), nil\n\t}\n\t// __errno()\n\terrno := int(*(*int32)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4,\n\t\t[]uintptr{}))))\n\t// __errno2()\n\terrno2 := int(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO2<<4,\n\t\t[]uintptr{}))\n\t// strerror_r()\n\tret = runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_STRERROR_R<<4,\n\t\t[]uintptr{uintptr(errno), uintptr(unsafe.Pointer(&buffer[0])), 1024})\n\tif ret == 0 {\n\t\tzb := bytes.IndexByte(buffer[:], 0)\n\t\tif zb == -1 {\n\t\t\tzb = len(buffer)\n\t\t}\n\t\treturn \"\", fmt.Errorf(\"%s (errno2=0x%x)\", buffer[:zb], errno2)\n\t} else {\n\t\treturn \"\", fmt.Errorf(\"fdToPath errno %d (errno2=0x%x)\", errno, errno2)\n\t}\n}\n\nfunc impl_Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKFIFOAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_MkfifoatAddr() *(func(dirfd int, path string, mode uint32) (err error))\n\nvar Mkfifoat = enter_Mkfifoat\n\nfunc enter_Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tfuncref := get_MkfifoatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___MKFIFOAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Mkfifoat\n\t} else {\n\t\t*funcref = legacy_Mkfifoat\n\t}\n\treturn (*funcref)(dirfd, path, mode)\n}\n\nfunc legacy_Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tdirname, err := ZosFdToPath(dirfd)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn Mkfifo(dirname+\"/\"+path, mode)\n}\n\n//sys\tPosix_openpt(oflag int) (fd int, err error) = SYS_POSIX_OPENPT\n//sys\tGrantpt(fildes int) (rc int, err error) = SYS_GRANTPT\n//sys\tUnlockpt(fildes int) (rc int, err error) = SYS_UNLOCKPT\n\nfunc fcntlAsIs(fd uintptr, cmd int, arg uintptr) (val int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), arg)\n\truntime.ExitSyscall()\n\tval = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Fcntl(fd uintptr, cmd int, op interface{}) (ret int, err error) {\n\tswitch op.(type) {\n\tcase *Flock_t:\n\t\terr = FcntlFlock(fd, cmd, op.(*Flock_t))\n\t\tif err != nil {\n\t\t\tret = -1\n\t\t}\n\t\treturn\n\tcase int:\n\t\treturn FcntlInt(fd, cmd, op.(int))\n\tcase *F_cnvrt:\n\t\treturn fcntlAsIs(fd, cmd, uintptr(unsafe.Pointer(op.(*F_cnvrt))))\n\tcase unsafe.Pointer:\n\t\treturn fcntlAsIs(fd, cmd, uintptr(op.(unsafe.Pointer)))\n\tdefault:\n\t\treturn -1, EINVAL\n\t}\n\treturn\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\t// TODO: use LE call instead if the call is implemented\n\toriginalOffset, err := Seek(infd, 0, SEEK_CUR)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\t//start reading data from in_fd\n\tif offset != nil {\n\t\t_, err := Seek(infd, *offset, SEEK_SET)\n\t\tif err != nil {\n\t\t\treturn -1, err\n\t\t}\n\t}\n\n\tbuf := make([]byte, count)\n\treadBuf := make([]byte, 0)\n\tvar n int = 0\n\tfor i := 0; i < count; i += n {\n\t\tn, err := Read(infd, buf)\n\t\tif n == 0 {\n\t\t\tif err != nil {\n\t\t\t\treturn -1, err\n\t\t\t} else { // EOF\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treadBuf = append(readBuf, buf...)\n\t\tbuf = buf[0:0]\n\t}\n\n\tn2, err := Write(outfd, readBuf)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\t//When sendfile() returns, this variable will be set to the\n\t// offset of the byte following the last byte that was read.\n\tif offset != nil {\n\t\t*offset = *offset + int64(n)\n\t\t// If offset is not NULL, then sendfile() does not modify the file\n\t\t// offset of in_fd\n\t\t_, err := Seek(infd, originalOffset, SEEK_SET)\n\t\tif err != nil {\n\t\t\treturn -1, err\n\t\t}\n\t}\n\treturn n2, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sysvshm_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux\n\npackage unix\n\nimport \"runtime\"\n\n// SysvShmCtl performs control operations on the shared memory segment\n// specified by id.\nfunc SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) {\n\tif runtime.GOARCH == \"arm\" ||\n\t\truntime.GOARCH == \"mips64\" || runtime.GOARCH == \"mips64le\" {\n\t\tcmd |= ipc_64\n\t}\n\n\treturn shmctl(id, cmd, desc)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sysvshm_unix.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin && !ios) || linux || zos\n\npackage unix\n\nimport \"unsafe\"\n\n// SysvShmAttach attaches the Sysv shared memory segment associated with the\n// shared memory identifier id.\nfunc SysvShmAttach(id int, addr uintptr, flag int) ([]byte, error) {\n\taddr, errno := shmat(id, addr, flag)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Retrieve the size of the shared memory to enable slice creation\n\tvar info SysvShmDesc\n\n\t_, err := SysvShmCtl(id, IPC_STAT, &info)\n\tif err != nil {\n\t\t// release the shared memory if we can't find the size\n\n\t\t// ignoring error from shmdt as there's nothing sensible to return here\n\t\tshmdt(addr)\n\t\treturn nil, err\n\t}\n\n\t// Use unsafe to convert addr into a []byte.\n\tb := unsafe.Slice((*byte)(unsafe.Pointer(addr)), int(info.Segsz))\n\treturn b, nil\n}\n\n// SysvShmDetach unmaps the shared memory slice returned from SysvShmAttach.\n//\n// It is not safe to use the slice after calling this function.\nfunc SysvShmDetach(data []byte) error {\n\tif len(data) == 0 {\n\t\treturn EINVAL\n\t}\n\n\treturn shmdt(uintptr(unsafe.Pointer(&data[0])))\n}\n\n// SysvShmGet returns the Sysv shared memory identifier associated with key.\n// If the IPC_CREAT flag is specified a new segment is created.\nfunc SysvShmGet(key, size, flag int) (id int, err error) {\n\treturn shmget(key, size, flag)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sysvshm_unix_other.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin && !ios) || zos\n\npackage unix\n\n// SysvShmCtl performs control operations on the shared memory segment\n// specified by id.\nfunc SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) {\n\treturn shmctl(id, cmd, desc)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/timestruct.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport \"time\"\n\n// TimespecToNsec returns the time stored in ts as nanoseconds.\nfunc TimespecToNsec(ts Timespec) int64 { return ts.Nano() }\n\n// NsecToTimespec converts a number of nanoseconds into a Timespec.\nfunc NsecToTimespec(nsec int64) Timespec {\n\tsec := nsec / 1e9\n\tnsec = nsec % 1e9\n\tif nsec < 0 {\n\t\tnsec += 1e9\n\t\tsec--\n\t}\n\treturn setTimespec(sec, nsec)\n}\n\n// TimeToTimespec converts t into a Timespec.\n// On some 32-bit systems the range of valid Timespec values are smaller\n// than that of time.Time values.  So if t is out of the valid range of\n// Timespec, it returns a zero Timespec and ERANGE.\nfunc TimeToTimespec(t time.Time) (Timespec, error) {\n\tsec := t.Unix()\n\tnsec := int64(t.Nanosecond())\n\tts := setTimespec(sec, nsec)\n\n\t// Currently all targets have either int32 or int64 for Timespec.Sec.\n\t// If there were a new target with floating point type for it, we have\n\t// to consider the rounding error.\n\tif int64(ts.Sec) != sec {\n\t\treturn Timespec{}, ERANGE\n\t}\n\treturn ts, nil\n}\n\n// TimevalToNsec returns the time stored in tv as nanoseconds.\nfunc TimevalToNsec(tv Timeval) int64 { return tv.Nano() }\n\n// NsecToTimeval converts a number of nanoseconds into a Timeval.\nfunc NsecToTimeval(nsec int64) Timeval {\n\tnsec += 999 // round up to microsecond\n\tusec := nsec % 1e9 / 1e3\n\tsec := nsec / 1e9\n\tif usec < 0 {\n\t\tusec += 1e6\n\t\tsec--\n\t}\n\treturn setTimeval(sec, usec)\n}\n\n// Unix returns the time stored in ts as seconds plus nanoseconds.\nfunc (ts *Timespec) Unix() (sec int64, nsec int64) {\n\treturn int64(ts.Sec), int64(ts.Nsec)\n}\n\n// Unix returns the time stored in tv as seconds plus nanoseconds.\nfunc (tv *Timeval) Unix() (sec int64, nsec int64) {\n\treturn int64(tv.Sec), int64(tv.Usec) * 1000\n}\n\n// Nano returns the time stored in ts as nanoseconds.\nfunc (ts *Timespec) Nano() int64 {\n\treturn int64(ts.Sec)*1e9 + int64(ts.Nsec)\n}\n\n// Nano returns the time stored in tv as nanoseconds.\nfunc (tv *Timeval) Nano() int64 {\n\treturn int64(tv.Sec)*1e9 + int64(tv.Usec)*1000\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/unveil_openbsd.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"fmt\"\n\n// Unveil implements the unveil syscall.\n// For more information see unveil(2).\n// Note that the special case of blocking further\n// unveil calls is handled by UnveilBlock.\nfunc Unveil(path string, flags string) error {\n\tif err := supportsUnveil(); err != nil {\n\t\treturn err\n\t}\n\tpathPtr, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tflagsPtr, err := BytePtrFromString(flags)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn unveil(pathPtr, flagsPtr)\n}\n\n// UnveilBlock blocks future unveil calls.\n// For more information see unveil(2).\nfunc UnveilBlock() error {\n\tif err := supportsUnveil(); err != nil {\n\t\treturn err\n\t}\n\treturn unveil(nil, nil)\n}\n\n// supportsUnveil checks for availability of the unveil(2) system call based\n// on the running OpenBSD version.\nfunc supportsUnveil() error {\n\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// unveil is not available before 6.4\n\tif maj < 6 || (maj == 6 && min <= 3) {\n\t\treturn fmt.Errorf(\"cannot call Unveil on OpenBSD %d.%d\", maj, min)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/vgetrandom_linux.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && go1.24\n\npackage unix\n\nimport _ \"unsafe\"\n\n//go:linkname vgetrandom runtime.vgetrandom\n//go:noescape\nfunc vgetrandom(p []byte, flags uint32) (ret int, supported bool)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !linux || !go1.24\n\npackage unix\n\nfunc vgetrandom(p []byte, flags uint32) (ret int, supported bool) {\n\treturn -1, false\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/xattr_bsd.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build freebsd || netbsd\n\npackage unix\n\nimport (\n\t\"strings\"\n\t\"unsafe\"\n)\n\n// Derive extattr namespace and attribute name\n\nfunc xattrnamespace(fullattr string) (ns int, attr string, err error) {\n\ts := strings.IndexByte(fullattr, '.')\n\tif s == -1 {\n\t\treturn -1, \"\", ENOATTR\n\t}\n\n\tnamespace := fullattr[0:s]\n\tattr = fullattr[s+1:]\n\n\tswitch namespace {\n\tcase \"user\":\n\t\treturn EXTATTR_NAMESPACE_USER, attr, nil\n\tcase \"system\":\n\t\treturn EXTATTR_NAMESPACE_SYSTEM, attr, nil\n\tdefault:\n\t\treturn -1, \"\", ENOATTR\n\t}\n}\n\nfunc initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {\n\tif len(dest) > idx {\n\t\treturn unsafe.Pointer(&dest[idx])\n\t}\n\tif dest != nil {\n\t\t// extattr_get_file and extattr_list_file treat NULL differently from\n\t\t// a non-NULL pointer of length zero. Preserve the property of nilness,\n\t\t// even if we can't use dest directly.\n\t\treturn unsafe.Pointer(&_zero)\n\t}\n\treturn nil\n}\n\n// FreeBSD and NetBSD implement their own syscalls to handle extended attributes\n\nfunc Getxattr(file string, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetFile(file, nsid, a, uintptr(d), destsize)\n}\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetFd(fd, nsid, a, uintptr(d), destsize)\n}\n\nfunc Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetLink(link, nsid, a, uintptr(d), destsize)\n}\n\n// flags are unused on FreeBSD\n\nfunc Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Setxattr(file string, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Lsetxattr(link string, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Removexattr(file string, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteFile(file, nsid, a)\n\treturn\n}\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteFd(fd, nsid, a)\n\treturn\n}\n\nfunc Lremovexattr(link string, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteLink(link, nsid, a)\n\treturn\n}\n\nfunc Listxattr(file string, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\t// FreeBSD won't allow you to list xattrs from multiple namespaces\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := ListxattrNS(file, nsid, dest[pos:])\n\n\t\t/* Errors accessing system attrs are ignored so that\n\t\t * we can implement the Linux-like behavior of omitting errors that\n\t\t * we don't have read permissions on\n\t\t *\n\t\t * Linux will still error if we ask for user attributes on a file that\n\t\t * we don't have read permissions on, so don't ignore those errors\n\t\t */\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc ListxattrNS(file string, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := FlistxattrNS(fd, nsid, dest[pos:])\n\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc FlistxattrNS(fd int, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n\nfunc Llistxattr(link string, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := LlistxattrNS(link, nsid, dest[pos:])\n\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc LlistxattrNS(link string, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go",
    "content": "// mkerrors.sh -maix32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && aix\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -maix32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                  = 0x10\n\tAF_BYPASS                     = 0x19\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x18\n\tAF_INTF                       = 0x14\n\tAF_ISO                        = 0x7\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x12\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x1e\n\tAF_NDD                        = 0x17\n\tAF_NETWARE                    = 0x16\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x7\n\tAF_PUP                        = 0x4\n\tAF_RIF                        = 0x15\n\tAF_ROUTE                      = 0x11\n\tAF_SNA                        = 0xb\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tALTWERASE                     = 0x400000\n\tARPHRD_802_3                  = 0x6\n\tARPHRD_802_5                  = 0x6\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FDDI                   = 0x1\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB38400                        = 0xf\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB9600                         = 0xd\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x1000\n\tBSDLY                         = 0x1000\n\tCAP_AACCT                     = 0x6\n\tCAP_ARM_APPLICATION           = 0x5\n\tCAP_BYPASS_RAC_VMM            = 0x3\n\tCAP_CLEAR                     = 0x0\n\tCAP_CREDENTIALS               = 0x7\n\tCAP_EFFECTIVE                 = 0x1\n\tCAP_EWLM_AGENT                = 0x4\n\tCAP_INHERITABLE               = 0x2\n\tCAP_MAXIMUM                   = 0x7\n\tCAP_NUMA_ATTACH               = 0x2\n\tCAP_PERMITTED                 = 0x3\n\tCAP_PROPAGATE                 = 0x1\n\tCAP_PROPOGATE                 = 0x1\n\tCAP_SET                       = 0x1\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_MONOTONIC               = 0xa\n\tCLOCK_PROCESS_CPUTIME_ID      = 0xb\n\tCLOCK_REALTIME                = 0x9\n\tCLOCK_THREAD_CPUTIME_ID       = 0xc\n\tCR0                           = 0x0\n\tCR1                           = 0x100\n\tCR2                           = 0x200\n\tCR3                           = 0x300\n\tCRDLY                         = 0x300\n\tCREAD                         = 0x80\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIOCGIFCONF                  = -0x3ff796dc\n\tCSIZE                         = 0x30\n\tCSMAP_DIR                     = \"/usr/lib/nls/csmap/\"\n\tCSTART                        = '\\021'\n\tCSTOP                         = '\\023'\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x20000\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x80000\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x40000\n\tECH_ICMPID                    = 0x2\n\tETHERNET_CSMACD               = 0x6\n\tEVENP                         = 0x80\n\tEXCONTINUE                    = 0x0\n\tEXDLOK                        = 0x3\n\tEXIO                          = 0x2\n\tEXPGIO                        = 0x0\n\tEXRESUME                      = 0x2\n\tEXRETURN                      = 0x1\n\tEXSIG                         = 0x4\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tEXTRAP                        = 0x1\n\tEYEC_RTENTRYA                 = 0x257274656e747241\n\tEYEC_RTENTRYF                 = 0x257274656e747246\n\tE_ACC                         = 0x0\n\tFD_CLOEXEC                    = 0x1\n\tFD_SETSIZE                    = 0xfffe\n\tFF0                           = 0x0\n\tFF1                           = 0x2000\n\tFFDLY                         = 0x2000\n\tFLUSHBAND                     = 0x40\n\tFLUSHLOW                      = 0x8\n\tFLUSHO                        = 0x100000\n\tFLUSHR                        = 0x1\n\tFLUSHRW                       = 0x3\n\tFLUSHW                        = 0x2\n\tF_CLOSEM                      = 0xa\n\tF_DUP2FD                      = 0xe\n\tF_DUPFD                       = 0x0\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0x5\n\tF_GETLK64                     = 0xb\n\tF_GETOWN                      = 0x8\n\tF_LOCK                        = 0x1\n\tF_OK                          = 0x0\n\tF_RDLCK                       = 0x1\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0x6\n\tF_SETLK64                     = 0xc\n\tF_SETLKW                      = 0x7\n\tF_SETLKW64                    = 0xd\n\tF_SETOWN                      = 0x9\n\tF_TEST                        = 0x3\n\tF_TLOCK                       = 0x2\n\tF_TSTLK                       = 0xf\n\tF_ULOCK                       = 0x0\n\tF_UNLCK                       = 0x3\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x26\n\tICMP6_SEC_SEND_DEL            = 0x46\n\tICMP6_SEC_SEND_GET            = 0x47\n\tICMP6_SEC_SEND_SET            = 0x44\n\tICMP6_SEC_SEND_SET_CGA_ADDR   = 0x45\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x200000\n\tIFA_FIRSTALIAS                = 0x2000\n\tIFA_ROUTE                     = 0x1\n\tIFF_64BIT                     = 0x4000000\n\tIFF_ALLCAST                   = 0x20000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_BPF                       = 0x8000000\n\tIFF_BRIDGE                    = 0x40000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x80c52\n\tIFF_CHECKSUM_OFFLOAD          = 0x10000000\n\tIFF_D1                        = 0x8000\n\tIFF_D2                        = 0x4000\n\tIFF_D3                        = 0x2000\n\tIFF_D4                        = 0x1000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEVHEALTH                 = 0x4000\n\tIFF_DO_HW_LOOPBACK            = 0x10000\n\tIFF_GROUP_ROUTING             = 0x2000000\n\tIFF_IFBUFMGT                  = 0x800000\n\tIFF_LINK0                     = 0x100000\n\tIFF_LINK1                     = 0x200000\n\tIFF_LINK2                     = 0x400000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x80000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOECHO                    = 0x800\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_OACTIVE                   = 0x400\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PROMISC                   = 0x100\n\tIFF_PSEG                      = 0x40000000\n\tIFF_RUNNING                   = 0x40\n\tIFF_SIMPLEX                   = 0x800\n\tIFF_SNAP                      = 0x8000\n\tIFF_TCP_DISABLE_CKSUM         = 0x20000000\n\tIFF_TCP_NOCKSUM               = 0x1000000\n\tIFF_UP                        = 0x1\n\tIFF_VIPA                      = 0x80000000\n\tIFNAMSIZ                      = 0x10\n\tIFO_FLUSH                     = 0x1\n\tIFT_1822                      = 0x2\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_CLUSTER                   = 0x3e\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FCS                       = 0x3a\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_GIFTUNNEL                 = 0x3c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HF                        = 0x3d\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SN                        = 0x38\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_SP                        = 0x39\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_TUNNEL                    = 0x3b\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_VIPA                      = 0x37\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x10000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_USE                        = 0x1\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_BIP                   = 0x53\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_GIF                   = 0x8c\n\tIPPROTO_GRE                   = 0x2f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPIP                  = 0x4\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_LOCAL                 = 0x3f\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_MH                    = 0x87\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_QOS                   = 0x2d\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_TP                    = 0x1d\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADDRFORM                 = 0x16\n\tIPV6_ADDR_PREFERENCES         = 0x4a\n\tIPV6_ADD_MEMBERSHIP           = 0xc\n\tIPV6_AIXRAWSOCKET             = 0x39\n\tIPV6_CHECKSUM                 = 0x27\n\tIPV6_DONTFRAG                 = 0x2d\n\tIPV6_DROP_MEMBERSHIP          = 0xd\n\tIPV6_DSTOPTS                  = 0x36\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffffff\n\tIPV6_FLOWINFO_PRIFLOW         = 0xfffffff\n\tIPV6_FLOWINFO_PRIORITY        = 0xf000000\n\tIPV6_FLOWINFO_SRFLAG          = 0x10000000\n\tIPV6_FLOWINFO_VERSION         = 0xf0000000\n\tIPV6_HOPLIMIT                 = 0x28\n\tIPV6_HOPOPTS                  = 0x34\n\tIPV6_JOIN_GROUP               = 0xc\n\tIPV6_LEAVE_GROUP              = 0xd\n\tIPV6_MIPDSTOPTS               = 0x36\n\tIPV6_MULTICAST_HOPS           = 0xa\n\tIPV6_MULTICAST_IF             = 0x9\n\tIPV6_MULTICAST_LOOP           = 0xb\n\tIPV6_NEXTHOP                  = 0x30\n\tIPV6_NOPROBE                  = 0x1c\n\tIPV6_PATHMTU                  = 0x2e\n\tIPV6_PKTINFO                  = 0x21\n\tIPV6_PKTOPTIONS               = 0x24\n\tIPV6_PRIORITY_10              = 0xa000000\n\tIPV6_PRIORITY_11              = 0xb000000\n\tIPV6_PRIORITY_12              = 0xc000000\n\tIPV6_PRIORITY_13              = 0xd000000\n\tIPV6_PRIORITY_14              = 0xe000000\n\tIPV6_PRIORITY_15              = 0xf000000\n\tIPV6_PRIORITY_8               = 0x8000000\n\tIPV6_PRIORITY_9               = 0x9000000\n\tIPV6_PRIORITY_BULK            = 0x4000000\n\tIPV6_PRIORITY_CONTROL         = 0x7000000\n\tIPV6_PRIORITY_FILLER          = 0x1000000\n\tIPV6_PRIORITY_INTERACTIVE     = 0x6000000\n\tIPV6_PRIORITY_RESERVED1       = 0x3000000\n\tIPV6_PRIORITY_RESERVED2       = 0x5000000\n\tIPV6_PRIORITY_UNATTENDED      = 0x2000000\n\tIPV6_PRIORITY_UNCHARACTERIZED = 0x0\n\tIPV6_RECVDSTOPTS              = 0x38\n\tIPV6_RECVHOPLIMIT             = 0x29\n\tIPV6_RECVHOPOPTS              = 0x35\n\tIPV6_RECVHOPS                 = 0x22\n\tIPV6_RECVIF                   = 0x1e\n\tIPV6_RECVPATHMTU              = 0x2f\n\tIPV6_RECVPKTINFO              = 0x23\n\tIPV6_RECVRTHDR                = 0x33\n\tIPV6_RECVSRCRT                = 0x1d\n\tIPV6_RECVTCLASS               = 0x2a\n\tIPV6_RTHDR                    = 0x32\n\tIPV6_RTHDRDSTOPTS             = 0x37\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_RTHDR_TYPE_2             = 0x2\n\tIPV6_SENDIF                   = 0x1f\n\tIPV6_SRFLAG_LOOSE             = 0x0\n\tIPV6_SRFLAG_STRICT            = 0x10000000\n\tIPV6_TCLASS                   = 0x2b\n\tIPV6_TOKEN_LENGTH             = 0x40\n\tIPV6_UNICAST_HOPS             = 0x4\n\tIPV6_USE_MIN_MTU              = 0x2c\n\tIPV6_V6ONLY                   = 0x25\n\tIPV6_VERSION                  = 0x60000000\n\tIP_ADDRFORM                   = 0x16\n\tIP_ADD_MEMBERSHIP             = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x3c\n\tIP_BLOCK_SOURCE               = 0x3a\n\tIP_BROADCAST_IF               = 0x10\n\tIP_CACHE_LINE_SIZE            = 0x80\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPMODE                   = 0x11\n\tIP_DONTFRAG                   = 0x19\n\tIP_DROP_MEMBERSHIP            = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x3d\n\tIP_FINDPMTU                   = 0x1a\n\tIP_HDRINCL                    = 0x2\n\tIP_INC_MEMBERSHIPS            = 0x14\n\tIP_INIT_MEMBERSHIP            = 0x14\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_HOPS             = 0xa\n\tIP_MULTICAST_IF               = 0x9\n\tIP_MULTICAST_LOOP             = 0xb\n\tIP_MULTICAST_TTL              = 0xa\n\tIP_OPT                        = 0x1b\n\tIP_OPTIONS                    = 0x1\n\tIP_PMTUAGE                    = 0x1b\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x14\n\tIP_RECVIFINFO                 = 0xf\n\tIP_RECVINTERFACE              = 0x20\n\tIP_RECVMACHDR                 = 0xe\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVTTL                    = 0x22\n\tIP_RETOPTS                    = 0x8\n\tIP_SOURCE_FILTER              = 0x48\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x3b\n\tIP_UNICAST_HOPS               = 0x4\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x800\n\tIXANY                         = 0x1000\n\tIXOFF                         = 0x400\n\tIXON                          = 0x200\n\tI_FLUSH                       = 0x20005305\n\tLNOFLSH                       = 0x8000\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_NORMAL                   = 0x0\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_SPACEAVAIL               = 0x5\n\tMADV_WILLNEED                 = 0x3\n\tMAP_ANON                      = 0x10\n\tMAP_ANONYMOUS                 = 0x10\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x100\n\tMAP_PRIVATE                   = 0x2\n\tMAP_SHARED                    = 0x1\n\tMAP_TYPE                      = 0xf0\n\tMAP_VARIABLE                  = 0x0\n\tMCAST_BLOCK_SOURCE            = 0x40\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x3e\n\tMCAST_JOIN_SOURCE_GROUP       = 0x42\n\tMCAST_LEAVE_GROUP             = 0x3f\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x43\n\tMCAST_SOURCE_FILTER           = 0x49\n\tMCAST_UNBLOCK_SOURCE          = 0x41\n\tMCL_CURRENT                   = 0x100\n\tMCL_FUTURE                    = 0x200\n\tMSG_ANY                       = 0x4\n\tMSG_ARGEXT                    = 0x400\n\tMSG_BAND                      = 0x2\n\tMSG_COMPAT                    = 0x8000\n\tMSG_CTRUNC                    = 0x20\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_EOR                       = 0x8\n\tMSG_HIPRI                     = 0x1\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_MPEG2                     = 0x80\n\tMSG_NONBLOCK                  = 0x4000\n\tMSG_NOSIGNAL                  = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x10\n\tMSG_WAITALL                   = 0x40\n\tMSG_WAITFORONE                = 0x200\n\tMS_ASYNC                      = 0x10\n\tMS_EINTR                      = 0x80\n\tMS_INVALIDATE                 = 0x40\n\tMS_PER_SEC                    = 0x3e8\n\tMS_SYNC                       = 0x20\n\tNFDBITS                       = 0x20\n\tNL0                           = 0x0\n\tNL1                           = 0x4000\n\tNL2                           = 0x8000\n\tNL3                           = 0xc000\n\tNLDLY                         = 0x4000\n\tNOFLSH                        = 0x80\n\tNOFLUSH                       = 0x80000000\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tONOEOT                        = 0x80000\n\tOPOST                         = 0x1\n\tOXTABS                        = 0x40000\n\tO_ACCMODE                     = 0x23\n\tO_APPEND                      = 0x8\n\tO_CIO                         = 0x80\n\tO_CIOR                        = 0x800000000\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DEFER                       = 0x2000\n\tO_DELAY                       = 0x4000\n\tO_DIRECT                      = 0x8000000\n\tO_DIRECTORY                   = 0x80000\n\tO_DSYNC                       = 0x400000\n\tO_EFSOFF                      = 0x400000000\n\tO_EFSON                       = 0x200000000\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x20\n\tO_LARGEFILE                   = 0x4000000\n\tO_NDELAY                      = 0x8000\n\tO_NOCACHE                     = 0x100000\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x1000000\n\tO_NONBLOCK                    = 0x4\n\tO_NONE                        = 0x3\n\tO_NSHARE                      = 0x10000\n\tO_RAW                         = 0x100000000\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSHARE                      = 0x1000\n\tO_RSYNC                       = 0x200000\n\tO_SEARCH                      = 0x20\n\tO_SNAPSHOT                    = 0x40\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_TTY_INIT                    = 0x0\n\tO_WRONLY                      = 0x1\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x20000000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tPR_64BIT                      = 0x20\n\tPR_ADDR                       = 0x2\n\tPR_ARGEXT                     = 0x400\n\tPR_ATOMIC                     = 0x1\n\tPR_CONNREQUIRED               = 0x4\n\tPR_FASTHZ                     = 0x5\n\tPR_INP                        = 0x40\n\tPR_INTRLEVEL                  = 0x8000\n\tPR_MLS                        = 0x100\n\tPR_MLS_1_LABEL                = 0x200\n\tPR_NOEOR                      = 0x4000\n\tPR_RIGHTS                     = 0x10\n\tPR_SLOWHZ                     = 0x2\n\tPR_WANTRCVD                   = 0x8\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x7\n\tRLIMIT_NPROC                  = 0x9\n\tRLIMIT_RSS                    = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0x7fffffff\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x8\n\tRTAX_NETMASK                  = 0x2\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DOWNSTREAM                = 0x100\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTC_IA64                      = 0x3\n\tRTC_POWER                     = 0x1\n\tRTC_POWER_PC                  = 0x2\n\tRTF_ACTIVE_DGD                = 0x1000000\n\tRTF_BCE                       = 0x80000\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_BROADCAST                 = 0x400000\n\tRTF_BUL                       = 0x2000\n\tRTF_CLONE                     = 0x10000\n\tRTF_CLONED                    = 0x20000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_FREE_IN_PROG              = 0x4000000\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_LLINFO                    = 0x400\n\tRTF_LOCAL                     = 0x200000\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTICAST                 = 0x800000\n\tRTF_PERMANENT6                = 0x8000000\n\tRTF_PINNED                    = 0x100000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_PROTO3                    = 0x40000\n\tRTF_REJECT                    = 0x8\n\tRTF_SMALLMTU                  = 0x40000\n\tRTF_STATIC                    = 0x800\n\tRTF_STOPSRCH                  = 0x2000000\n\tRTF_UNREACHABLE               = 0x10000000\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_EXPIRE                    = 0xf\n\tRTM_GET                       = 0x4\n\tRTM_GETNEXT                   = 0x11\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_RTLOST                    = 0x10\n\tRTM_RTTUNIT                   = 0xf4240\n\tRTM_SAMEADDR                  = 0x12\n\tRTM_SET                       = 0x13\n\tRTM_VERSION                   = 0x2\n\tRTM_VERSION_GR                = 0x4\n\tRTM_VERSION_GR_COMPAT         = 0x3\n\tRTM_VERSION_POLICY            = 0x5\n\tRTM_VERSION_POLICY_EXT        = 0x6\n\tRTM_VERSION_POLICY_PRFN       = 0x7\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tRUSAGE_THREAD                 = 0x1\n\tSCM_RIGHTS                    = 0x1\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIGMAX64                      = 0xff\n\tSIGQUEUE_MAX                  = 0x20\n\tSIOCADDIFVIPA                 = 0x20006942\n\tSIOCADDMTU                    = -0x7ffb9690\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDNETID                  = -0x7fd796a9\n\tSIOCADDRT                     = -0x7fcf8df6\n\tSIOCAIFADDR                   = -0x7fbf96e6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fb396e0\n\tSIOCDELIFVIPA                 = 0x20006943\n\tSIOCDELMTU                    = -0x7ffb968f\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELPMTU                   = -0x7fd78ff6\n\tSIOCDELRT                     = -0x7fcf8df5\n\tSIOCDIFADDR                   = -0x7fd796e7\n\tSIOCDNETOPT                   = -0x3ffe9680\n\tSIOCDX25XLATE                 = -0x7fd7969b\n\tSIOCFIFADDR                   = -0x7fdf966d\n\tSIOCGARP                      = -0x3fb396da\n\tSIOCGETMTUS                   = 0x2000696f\n\tSIOCGETSGCNT                  = -0x3feb8acc\n\tSIOCGETVIFCNT                 = -0x3feb8acd\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fd796df\n\tSIOCGIFADDRS                  = 0x2000698c\n\tSIOCGIFBAUDRATE               = -0x3fdf9669\n\tSIOCGIFBRDADDR                = -0x3fd796dd\n\tSIOCGIFCONF                   = -0x3ff796bb\n\tSIOCGIFCONFGLOB               = -0x3ff79670\n\tSIOCGIFDSTADDR                = -0x3fd796de\n\tSIOCGIFFLAGS                  = -0x3fd796ef\n\tSIOCGIFGIDLIST                = 0x20006968\n\tSIOCGIFHWADDR                 = -0x3fab966b\n\tSIOCGIFMETRIC                 = -0x3fd796e9\n\tSIOCGIFMTU                    = -0x3fd796aa\n\tSIOCGIFNETMASK                = -0x3fd796db\n\tSIOCGIFOPTIONS                = -0x3fd796d6\n\tSIOCGISNO                     = -0x3fd79695\n\tSIOCGLOADF                    = -0x3ffb967e\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGNETOPT                   = -0x3ffe96a5\n\tSIOCGNETOPT1                  = -0x3fdf967f\n\tSIOCGNMTUS                    = 0x2000696e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSIZIFCONF                = 0x4004696a\n\tSIOCGSRCFILTER                = -0x3fe796cb\n\tSIOCGTUNEPHASE                = -0x3ffb9676\n\tSIOCGX25XLATE                 = -0x3fd7969c\n\tSIOCIFATTACH                  = -0x7fdf9699\n\tSIOCIFDETACH                  = -0x7fdf969a\n\tSIOCIFGETPKEY                 = -0x7fdf969b\n\tSIOCIF_ATM_DARP               = -0x7fdf9683\n\tSIOCIF_ATM_DUMPARP            = -0x7fdf9685\n\tSIOCIF_ATM_GARP               = -0x7fdf9682\n\tSIOCIF_ATM_IDLE               = -0x7fdf9686\n\tSIOCIF_ATM_SARP               = -0x7fdf9681\n\tSIOCIF_ATM_SNMPARP            = -0x7fdf9687\n\tSIOCIF_ATM_SVC                = -0x7fdf9684\n\tSIOCIF_ATM_UBR                = -0x7fdf9688\n\tSIOCIF_DEVHEALTH              = -0x7ffb966c\n\tSIOCIF_IB_ARP_INCOMP          = -0x7fdf9677\n\tSIOCIF_IB_ARP_TIMER           = -0x7fdf9678\n\tSIOCIF_IB_CLEAR_PINFO         = -0x3fdf966f\n\tSIOCIF_IB_DEL_ARP             = -0x7fdf967f\n\tSIOCIF_IB_DEL_PINFO           = -0x3fdf9670\n\tSIOCIF_IB_DUMP_ARP            = -0x7fdf9680\n\tSIOCIF_IB_GET_ARP             = -0x7fdf967e\n\tSIOCIF_IB_GET_INFO            = -0x3f879675\n\tSIOCIF_IB_GET_STATS           = -0x3f879672\n\tSIOCIF_IB_NOTIFY_ADDR_REM     = -0x3f87966a\n\tSIOCIF_IB_RESET_STATS         = -0x3f879671\n\tSIOCIF_IB_RESIZE_CQ           = -0x7fdf9679\n\tSIOCIF_IB_SET_ARP             = -0x7fdf967d\n\tSIOCIF_IB_SET_PKEY            = -0x7fdf967c\n\tSIOCIF_IB_SET_PORT            = -0x7fdf967b\n\tSIOCIF_IB_SET_QKEY            = -0x7fdf9676\n\tSIOCIF_IB_SET_QSIZE           = -0x7fdf967a\n\tSIOCLISTIFVIPA                = 0x20006944\n\tSIOCSARP                      = -0x7fb396e2\n\tSIOCSHIWAT                    = 0x80047300\n\tSIOCSIFADDR                   = -0x7fd796f4\n\tSIOCSIFADDRORI                = -0x7fdb9673\n\tSIOCSIFBRDADDR                = -0x7fd796ed\n\tSIOCSIFDSTADDR                = -0x7fd796f2\n\tSIOCSIFFLAGS                  = -0x7fd796f0\n\tSIOCSIFGIDLIST                = 0x20006969\n\tSIOCSIFMETRIC                 = -0x7fd796e8\n\tSIOCSIFMTU                    = -0x7fd796a8\n\tSIOCSIFNETDUMP                = -0x7fd796e4\n\tSIOCSIFNETMASK                = -0x7fd796ea\n\tSIOCSIFOPTIONS                = -0x7fd796d7\n\tSIOCSIFSUBCHAN                = -0x7fd796e5\n\tSIOCSISNO                     = -0x7fd79694\n\tSIOCSLOADF                    = -0x3ffb967d\n\tSIOCSLOWAT                    = 0x80047302\n\tSIOCSNETOPT                   = -0x7ffe96a6\n\tSIOCSPGRP                     = 0x80047308\n\tSIOCSX25XLATE                 = -0x7fd7969d\n\tSOCK_CONN_DGRAM               = 0x6\n\tSOCK_DGRAM                    = 0x2\n\tSOCK_RAW                      = 0x3\n\tSOCK_RDM                      = 0x4\n\tSOCK_SEQPACKET                = 0x5\n\tSOCK_STREAM                   = 0x1\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x400\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_AUDIT                      = 0x8000\n\tSO_BROADCAST                  = 0x20\n\tSO_CKSUMRECV                  = 0x800\n\tSO_DEBUG                      = 0x1\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROR                      = 0x1007\n\tSO_KEEPALIVE                  = 0x8\n\tSO_KERNACCEPT                 = 0x2000\n\tSO_LINGER                     = 0x80\n\tSO_NOMULTIPATH                = 0x4000\n\tSO_NOREUSEADDR                = 0x1000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PEERID                     = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_REUSEADDR                  = 0x4\n\tSO_REUSEPORT                  = 0x200\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_TIMESTAMPNS                = 0x100a\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_USE_IFBUFS                 = 0x400\n\tS_BANDURG                     = 0x400\n\tS_EMODFMT                     = 0x3c000000\n\tS_ENFMT                       = 0x400\n\tS_ERROR                       = 0x100\n\tS_HANGUP                      = 0x200\n\tS_HIPRI                       = 0x2\n\tS_ICRYPTO                     = 0x80000\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFIFO                       = 0x1000\n\tS_IFJOURNAL                   = 0x10000\n\tS_IFLNK                       = 0xa000\n\tS_IFMPX                       = 0x2200\n\tS_IFMT                        = 0xf000\n\tS_IFPDIR                      = 0x4000000\n\tS_IFPSDIR                     = 0x8000000\n\tS_IFPSSDIR                    = 0xc000000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_IFSYSEA                     = 0x30000000\n\tS_INPUT                       = 0x1\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_ITCB                        = 0x1000000\n\tS_ITP                         = 0x800000\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXACL                       = 0x2000000\n\tS_IXATTR                      = 0x40000\n\tS_IXGRP                       = 0x8\n\tS_IXINTERFACE                 = 0x100000\n\tS_IXMOD                       = 0x40000000\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tS_MSG                         = 0x8\n\tS_OUTPUT                      = 0x4\n\tS_RDBAND                      = 0x20\n\tS_RDNORM                      = 0x10\n\tS_RESERVED1                   = 0x20000\n\tS_RESERVED2                   = 0x200000\n\tS_RESERVED3                   = 0x400000\n\tS_RESERVED4                   = 0x80000000\n\tS_RESFMT1                     = 0x10000000\n\tS_RESFMT10                    = 0x34000000\n\tS_RESFMT11                    = 0x38000000\n\tS_RESFMT12                    = 0x3c000000\n\tS_RESFMT2                     = 0x14000000\n\tS_RESFMT3                     = 0x18000000\n\tS_RESFMT4                     = 0x1c000000\n\tS_RESFMT5                     = 0x20000000\n\tS_RESFMT6                     = 0x24000000\n\tS_RESFMT7                     = 0x28000000\n\tS_RESFMT8                     = 0x2c000000\n\tS_WRBAND                      = 0x80\n\tS_WRNORM                      = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x400\n\tTAB2                          = 0x800\n\tTAB3                          = 0xc00\n\tTABDLY                        = 0xc00\n\tTCFLSH                        = 0x540c\n\tTCGETA                        = 0x5405\n\tTCGETS                        = 0x5401\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800\n\tTCP_ACLADD                    = 0x23\n\tTCP_ACLBIND                   = 0x26\n\tTCP_ACLCLEAR                  = 0x22\n\tTCP_ACLDEL                    = 0x24\n\tTCP_ACLDENY                   = 0x8\n\tTCP_ACLFLUSH                  = 0x21\n\tTCP_ACLGID                    = 0x1\n\tTCP_ACLLS                     = 0x25\n\tTCP_ACLSUBNET                 = 0x4\n\tTCP_ACLUID                    = 0x2\n\tTCP_CWND_DF                   = 0x16\n\tTCP_CWND_IF                   = 0x15\n\tTCP_DELAY_ACK_FIN             = 0x2\n\tTCP_DELAY_ACK_SYN             = 0x1\n\tTCP_FASTNAME                  = 0x101080a\n\tTCP_KEEPCNT                   = 0x13\n\tTCP_KEEPIDLE                  = 0x11\n\tTCP_KEEPINTVL                 = 0x12\n\tTCP_LSPRIV                    = 0x29\n\tTCP_LUID                      = 0x20\n\tTCP_MAXBURST                  = 0x8\n\tTCP_MAXDF                     = 0x64\n\tTCP_MAXIF                     = 0x64\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MAXWIN                    = 0xffff\n\tTCP_MAXWINDOWSCALE            = 0xe\n\tTCP_MAX_SACK                  = 0x4\n\tTCP_MSS                       = 0x5b4\n\tTCP_NODELAY                   = 0x1\n\tTCP_NODELAYACK                = 0x14\n\tTCP_NOREDUCE_CWND_EXIT_FRXMT  = 0x19\n\tTCP_NOREDUCE_CWND_IN_FRXMT    = 0x18\n\tTCP_NOTENTER_SSTART           = 0x17\n\tTCP_OPT                       = 0x19\n\tTCP_RFC1323                   = 0x4\n\tTCP_SETPRIV                   = 0x27\n\tTCP_STDURG                    = 0x10\n\tTCP_TIMESTAMP_OPTLEN          = 0xc\n\tTCP_UNSETPRIV                 = 0x28\n\tTCSAFLUSH                     = 0x2\n\tTCSBRK                        = 0x5409\n\tTCSETA                        = 0x5406\n\tTCSETAF                       = 0x5408\n\tTCSETAW                       = 0x5407\n\tTCSETS                        = 0x5402\n\tTCSETSF                       = 0x5404\n\tTCSETSW                       = 0x5403\n\tTCXONC                        = 0x540b\n\tTIMER_ABSTIME                 = 0x3e7\n\tTIMER_MAX                     = 0x20\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x2000747a\n\tTIOCCDTR                      = 0x20007478\n\tTIOCCONS                      = 0x80047462\n\tTIOCEXCL                      = 0x2000740d\n\tTIOCFLUSH                     = 0x80047410\n\tTIOCGETC                      = 0x40067412\n\tTIOCGETD                      = 0x40047400\n\tTIOCGETP                      = 0x40067408\n\tTIOCGLTC                      = 0x40067474\n\tTIOCGPGRP                     = 0x40047477\n\tTIOCGSID                      = 0x40047448\n\tTIOCGSIZE                     = 0x40087468\n\tTIOCGWINSZ                    = 0x40087468\n\tTIOCHPCL                      = 0x20007402\n\tTIOCLBIC                      = 0x8004747e\n\tTIOCLBIS                      = 0x8004747f\n\tTIOCLGET                      = 0x4004747c\n\tTIOCLSET                      = 0x8004747d\n\tTIOCMBIC                      = 0x8004746b\n\tTIOCMBIS                      = 0x8004746c\n\tTIOCMGET                      = 0x4004746a\n\tTIOCMIWAIT                    = 0x80047464\n\tTIOCMODG                      = 0x40047403\n\tTIOCMODS                      = 0x80047404\n\tTIOCMSET                      = 0x8004746d\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x20007471\n\tTIOCNXCL                      = 0x2000740e\n\tTIOCOUTQ                      = 0x40047473\n\tTIOCPKT                       = 0x80047470\n\tTIOCPKT_DATA                  = 0x0\n\tTIOCPKT_DOSTOP                = 0x20\n\tTIOCPKT_FLUSHREAD             = 0x1\n\tTIOCPKT_FLUSHWRITE            = 0x2\n\tTIOCPKT_NOSTOP                = 0x10\n\tTIOCPKT_START                 = 0x8\n\tTIOCPKT_STOP                  = 0x4\n\tTIOCREMOTE                    = 0x80047469\n\tTIOCSBRK                      = 0x2000747b\n\tTIOCSDTR                      = 0x20007479\n\tTIOCSETC                      = 0x80067411\n\tTIOCSETD                      = 0x80047401\n\tTIOCSETN                      = 0x8006740a\n\tTIOCSETP                      = 0x80067409\n\tTIOCSLTC                      = 0x80067475\n\tTIOCSPGRP                     = 0x80047476\n\tTIOCSSIZE                     = 0x80087467\n\tTIOCSTART                     = 0x2000746e\n\tTIOCSTI                       = 0x80017472\n\tTIOCSTOP                      = 0x2000746f\n\tTIOCSWINSZ                    = 0x80087467\n\tTIOCUCNTL                     = 0x80047466\n\tTOSTOP                        = 0x10000\n\tUTIME_NOW                     = -0x2\n\tUTIME_OMIT                    = -0x3\n\tVDISCRD                       = 0xc\n\tVDSUSP                        = 0xa\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xe\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xb\n\tVSTART                        = 0x7\n\tVSTOP                         = 0x8\n\tVSTRT                         = 0x7\n\tVSUSP                         = 0x9\n\tVT0                           = 0x0\n\tVT1                           = 0x8000\n\tVTDELAY                       = 0x2000\n\tVTDLY                         = 0x8000\n\tVTIME                         = 0x5\n\tVWERSE                        = 0xd\n\tWPARSTART                     = 0x1\n\tWPARSTOP                      = 0x2\n\tWPARTTYNAME                   = \"Global\"\n\tXCASE                         = 0x4\n\tXTABS                         = 0xc00\n\t_FDATAFLUSH                   = 0x2000000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x43)\n\tEADDRNOTAVAIL   = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x42)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x38)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x78)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x75)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECLONEME        = syscall.Errno(0x52)\n\tECONNABORTED    = syscall.Errno(0x48)\n\tECONNREFUSED    = syscall.Errno(0x4f)\n\tECONNRESET      = syscall.Errno(0x49)\n\tECORRUPT        = syscall.Errno(0x59)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDESTADDREQ     = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x3a)\n\tEDIST           = syscall.Errno(0x35)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x58)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFORMAT         = syscall.Errno(0x30)\n\tEHOSTDOWN       = syscall.Errno(0x50)\n\tEHOSTUNREACH    = syscall.Errno(0x51)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x74)\n\tEINPROGRESS     = syscall.Errno(0x37)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x4b)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x55)\n\tEMEDIA          = syscall.Errno(0x6e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x3b)\n\tEMULTIHOP       = syscall.Errno(0x7d)\n\tENAMETOOLONG    = syscall.Errno(0x56)\n\tENETDOWN        = syscall.Errno(0x45)\n\tENETRESET       = syscall.Errno(0x47)\n\tENETUNREACH     = syscall.Errno(0x46)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x70)\n\tENOBUFS         = syscall.Errno(0x4a)\n\tENOCONNECT      = syscall.Errno(0x32)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x7a)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x31)\n\tENOLINK         = syscall.Errno(0x7e)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENOPROTOOPT     = syscall.Errno(0x3d)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x76)\n\tENOSTR          = syscall.Errno(0x7b)\n\tENOSYS          = syscall.Errno(0x6d)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x4c)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x11)\n\tENOTREADY       = syscall.Errno(0x2e)\n\tENOTRECOVERABLE = syscall.Errno(0x5e)\n\tENOTRUST        = syscall.Errno(0x72)\n\tENOTSOCK        = syscall.Errno(0x39)\n\tENOTSUP         = syscall.Errno(0x7c)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x40)\n\tEOVERFLOW       = syscall.Errno(0x7f)\n\tEOWNERDEAD      = syscall.Errno(0x5f)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x41)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x53)\n\tEPROTO          = syscall.Errno(0x79)\n\tEPROTONOSUPPORT = syscall.Errno(0x3e)\n\tEPROTOTYPE      = syscall.Errno(0x3c)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x5d)\n\tERESTART        = syscall.Errno(0x52)\n\tEROFS           = syscall.Errno(0x1e)\n\tESAD            = syscall.Errno(0x71)\n\tESHUTDOWN       = syscall.Errno(0x4d)\n\tESOCKTNOSUPPORT = syscall.Errno(0x3f)\n\tESOFT           = syscall.Errno(0x6f)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x34)\n\tESYSERROR       = syscall.Errno(0x5a)\n\tETIME           = syscall.Errno(0x77)\n\tETIMEDOUT       = syscall.Errno(0x4e)\n\tETOOMANYREFS    = syscall.Errno(0x73)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x54)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEWRPROTECT      = syscall.Errno(0x2f)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGAIO      = syscall.Signal(0x17)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGALRM1    = syscall.Signal(0x26)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCAPI     = syscall.Signal(0x31)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCLD      = syscall.Signal(0x14)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGCPUFAIL  = syscall.Signal(0x3b)\n\tSIGDANGER   = syscall.Signal(0x21)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGGRANT    = syscall.Signal(0x3c)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOINT    = syscall.Signal(0x10)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKAP      = syscall.Signal(0x3c)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGLOST     = syscall.Signal(0x6)\n\tSIGMAX      = syscall.Signal(0x3f)\n\tSIGMAX32    = syscall.Signal(0x3f)\n\tSIGMIGRATE  = syscall.Signal(0x23)\n\tSIGMSG      = syscall.Signal(0x1b)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPOLL     = syscall.Signal(0x17)\n\tSIGPRE      = syscall.Signal(0x24)\n\tSIGPROF     = syscall.Signal(0x20)\n\tSIGPTY      = syscall.Signal(0x17)\n\tSIGPWR      = syscall.Signal(0x1d)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGRECONFIG = syscall.Signal(0x3a)\n\tSIGRETRACT  = syscall.Signal(0x3d)\n\tSIGSAK      = syscall.Signal(0x3f)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSOUND    = syscall.Signal(0x3e)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGSYSERROR = syscall.Signal(0x30)\n\tSIGTALRM    = syscall.Signal(0x26)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVIRT     = syscall.Signal(0x25)\n\tSIGVTALRM   = syscall.Signal(0x22)\n\tSIGWAITING  = syscall.Signal(0x27)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"ENOTEMPTY\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"not a typewriter\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock condition if locked\"},\n\t{46, \"ENOTREADY\", \"device not ready\"},\n\t{47, \"EWRPROTECT\", \"write-protected media\"},\n\t{48, \"EFORMAT\", \"unformatted or incompatible media\"},\n\t{49, \"ENOLCK\", \"no locks available\"},\n\t{50, \"ENOCONNECT\", \"cannot Establish Connection\"},\n\t{52, \"ESTALE\", \"missing file or filesystem\"},\n\t{53, \"EDIST\", \"requests blocked by Administrator\"},\n\t{55, \"EINPROGRESS\", \"operation now in progress\"},\n\t{56, \"EALREADY\", \"operation already in progress\"},\n\t{57, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{58, \"EDESTADDREQ\", \"destination address required\"},\n\t{59, \"EMSGSIZE\", \"message too long\"},\n\t{60, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{61, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{62, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{63, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{64, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{65, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{66, \"EAFNOSUPPORT\", \"addr family not supported by protocol\"},\n\t{67, \"EADDRINUSE\", \"address already in use\"},\n\t{68, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{69, \"ENETDOWN\", \"network is down\"},\n\t{70, \"ENETUNREACH\", \"network is unreachable\"},\n\t{71, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{72, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{73, \"ECONNRESET\", \"connection reset by peer\"},\n\t{74, \"ENOBUFS\", \"no buffer space available\"},\n\t{75, \"EISCONN\", \"socket is already connected\"},\n\t{76, \"ENOTCONN\", \"socket is not connected\"},\n\t{77, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{78, \"ETIMEDOUT\", \"connection timed out\"},\n\t{79, \"ECONNREFUSED\", \"connection refused\"},\n\t{80, \"EHOSTDOWN\", \"host is down\"},\n\t{81, \"EHOSTUNREACH\", \"no route to host\"},\n\t{82, \"ERESTART\", \"restart the system call\"},\n\t{83, \"EPROCLIM\", \"too many processes\"},\n\t{84, \"EUSERS\", \"too many users\"},\n\t{85, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{86, \"ENAMETOOLONG\", \"file name too long\"},\n\t{88, \"EDQUOT\", \"disk quota exceeded\"},\n\t{89, \"ECORRUPT\", \"invalid file system control data detected\"},\n\t{90, \"ESYSERROR\", \"for future use \"},\n\t{93, \"EREMOTE\", \"item is not local to host\"},\n\t{94, \"ENOTRECOVERABLE\", \"state not recoverable \"},\n\t{95, \"EOWNERDEAD\", \"previous owner died \"},\n\t{109, \"ENOSYS\", \"function not implemented\"},\n\t{110, \"EMEDIA\", \"media surface error\"},\n\t{111, \"ESOFT\", \"I/O completed, but needs relocation\"},\n\t{112, \"ENOATTR\", \"no attribute found\"},\n\t{113, \"ESAD\", \"security Authentication Denied\"},\n\t{114, \"ENOTRUST\", \"not a Trusted Program\"},\n\t{115, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{116, \"EILSEQ\", \"invalid wide character\"},\n\t{117, \"ECANCELED\", \"asynchronous I/O cancelled\"},\n\t{118, \"ENOSR\", \"out of STREAMS resources\"},\n\t{119, \"ETIME\", \"system call timed out\"},\n\t{120, \"EBADMSG\", \"next message has wrong type\"},\n\t{121, \"EPROTO\", \"error in protocol\"},\n\t{122, \"ENODATA\", \"no message on stream head read q\"},\n\t{123, \"ENOSTR\", \"fd not associated with a stream\"},\n\t{124, \"ENOTSUP\", \"unsupported attribute value\"},\n\t{125, \"EMULTIHOP\", \"multihop is not allowed\"},\n\t{126, \"ENOLINK\", \"the server link has been severed\"},\n\t{127, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"IOT/Abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible/complete\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{27, \"SIGMSG\", \"input device data\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGPWR\", \"power-failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"paging space low\"},\n\t{34, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{35, \"SIGMIGRATE\", \"signal 35\"},\n\t{36, \"SIGPRE\", \"signal 36\"},\n\t{37, \"SIGVIRT\", \"signal 37\"},\n\t{38, \"SIGTALRM\", \"signal 38\"},\n\t{39, \"SIGWAITING\", \"signal 39\"},\n\t{48, \"SIGSYSERROR\", \"signal 48\"},\n\t{49, \"SIGCAPI\", \"signal 49\"},\n\t{58, \"SIGRECONFIG\", \"signal 58\"},\n\t{59, \"SIGCPUFAIL\", \"CPU Failure Predicted\"},\n\t{60, \"SIGKAP\", \"monitor mode granted\"},\n\t{61, \"SIGRETRACT\", \"monitor mode retracted\"},\n\t{62, \"SIGSOUND\", \"sound completed\"},\n\t{63, \"SIGSAK\", \"secure attention\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go",
    "content": "// mkerrors.sh -maix64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && aix\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -maix64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                  = 0x10\n\tAF_BYPASS                     = 0x19\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x18\n\tAF_INTF                       = 0x14\n\tAF_ISO                        = 0x7\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x12\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x1e\n\tAF_NDD                        = 0x17\n\tAF_NETWARE                    = 0x16\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x7\n\tAF_PUP                        = 0x4\n\tAF_RIF                        = 0x15\n\tAF_ROUTE                      = 0x11\n\tAF_SNA                        = 0xb\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tALTWERASE                     = 0x400000\n\tARPHRD_802_3                  = 0x6\n\tARPHRD_802_5                  = 0x6\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FDDI                   = 0x1\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB38400                        = 0xf\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB9600                         = 0xd\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x1000\n\tBSDLY                         = 0x1000\n\tCAP_AACCT                     = 0x6\n\tCAP_ARM_APPLICATION           = 0x5\n\tCAP_BYPASS_RAC_VMM            = 0x3\n\tCAP_CLEAR                     = 0x0\n\tCAP_CREDENTIALS               = 0x7\n\tCAP_EFFECTIVE                 = 0x1\n\tCAP_EWLM_AGENT                = 0x4\n\tCAP_INHERITABLE               = 0x2\n\tCAP_MAXIMUM                   = 0x7\n\tCAP_NUMA_ATTACH               = 0x2\n\tCAP_PERMITTED                 = 0x3\n\tCAP_PROPAGATE                 = 0x1\n\tCAP_PROPOGATE                 = 0x1\n\tCAP_SET                       = 0x1\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_MONOTONIC               = 0xa\n\tCLOCK_PROCESS_CPUTIME_ID      = 0xb\n\tCLOCK_REALTIME                = 0x9\n\tCLOCK_THREAD_CPUTIME_ID       = 0xc\n\tCR0                           = 0x0\n\tCR1                           = 0x100\n\tCR2                           = 0x200\n\tCR3                           = 0x300\n\tCRDLY                         = 0x300\n\tCREAD                         = 0x80\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIOCGIFCONF                  = -0x3fef96dc\n\tCSIZE                         = 0x30\n\tCSMAP_DIR                     = \"/usr/lib/nls/csmap/\"\n\tCSTART                        = '\\021'\n\tCSTOP                         = '\\023'\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x20000\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x80000\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x40000\n\tECH_ICMPID                    = 0x2\n\tETHERNET_CSMACD               = 0x6\n\tEVENP                         = 0x80\n\tEXCONTINUE                    = 0x0\n\tEXDLOK                        = 0x3\n\tEXIO                          = 0x2\n\tEXPGIO                        = 0x0\n\tEXRESUME                      = 0x2\n\tEXRETURN                      = 0x1\n\tEXSIG                         = 0x4\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tEXTRAP                        = 0x1\n\tEYEC_RTENTRYA                 = 0x257274656e747241\n\tEYEC_RTENTRYF                 = 0x257274656e747246\n\tE_ACC                         = 0x0\n\tFD_CLOEXEC                    = 0x1\n\tFD_SETSIZE                    = 0xfffe\n\tFF0                           = 0x0\n\tFF1                           = 0x2000\n\tFFDLY                         = 0x2000\n\tFLUSHBAND                     = 0x40\n\tFLUSHLOW                      = 0x8\n\tFLUSHO                        = 0x100000\n\tFLUSHR                        = 0x1\n\tFLUSHRW                       = 0x3\n\tFLUSHW                        = 0x2\n\tF_CLOSEM                      = 0xa\n\tF_DUP2FD                      = 0xe\n\tF_DUPFD                       = 0x0\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0xb\n\tF_GETLK64                     = 0xb\n\tF_GETOWN                      = 0x8\n\tF_LOCK                        = 0x1\n\tF_OK                          = 0x0\n\tF_RDLCK                       = 0x1\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0xc\n\tF_SETLK64                     = 0xc\n\tF_SETLKW                      = 0xd\n\tF_SETLKW64                    = 0xd\n\tF_SETOWN                      = 0x9\n\tF_TEST                        = 0x3\n\tF_TLOCK                       = 0x2\n\tF_TSTLK                       = 0xf\n\tF_ULOCK                       = 0x0\n\tF_UNLCK                       = 0x3\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x26\n\tICMP6_SEC_SEND_DEL            = 0x46\n\tICMP6_SEC_SEND_GET            = 0x47\n\tICMP6_SEC_SEND_SET            = 0x44\n\tICMP6_SEC_SEND_SET_CGA_ADDR   = 0x45\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x200000\n\tIFA_FIRSTALIAS                = 0x2000\n\tIFA_ROUTE                     = 0x1\n\tIFF_64BIT                     = 0x4000000\n\tIFF_ALLCAST                   = 0x20000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_BPF                       = 0x8000000\n\tIFF_BRIDGE                    = 0x40000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x80c52\n\tIFF_CHECKSUM_OFFLOAD          = 0x10000000\n\tIFF_D1                        = 0x8000\n\tIFF_D2                        = 0x4000\n\tIFF_D3                        = 0x2000\n\tIFF_D4                        = 0x1000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEVHEALTH                 = 0x4000\n\tIFF_DO_HW_LOOPBACK            = 0x10000\n\tIFF_GROUP_ROUTING             = 0x2000000\n\tIFF_IFBUFMGT                  = 0x800000\n\tIFF_LINK0                     = 0x100000\n\tIFF_LINK1                     = 0x200000\n\tIFF_LINK2                     = 0x400000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x80000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOECHO                    = 0x800\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_OACTIVE                   = 0x400\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PROMISC                   = 0x100\n\tIFF_PSEG                      = 0x40000000\n\tIFF_RUNNING                   = 0x40\n\tIFF_SIMPLEX                   = 0x800\n\tIFF_SNAP                      = 0x8000\n\tIFF_TCP_DISABLE_CKSUM         = 0x20000000\n\tIFF_TCP_NOCKSUM               = 0x1000000\n\tIFF_UP                        = 0x1\n\tIFF_VIPA                      = 0x80000000\n\tIFNAMSIZ                      = 0x10\n\tIFO_FLUSH                     = 0x1\n\tIFT_1822                      = 0x2\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_CLUSTER                   = 0x3e\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FCS                       = 0x3a\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_GIFTUNNEL                 = 0x3c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HF                        = 0x3d\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SN                        = 0x38\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_SP                        = 0x39\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_TUNNEL                    = 0x3b\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_VIPA                      = 0x37\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x10000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_USE                        = 0x1\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_BIP                   = 0x53\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_GIF                   = 0x8c\n\tIPPROTO_GRE                   = 0x2f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPIP                  = 0x4\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_LOCAL                 = 0x3f\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_MH                    = 0x87\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_QOS                   = 0x2d\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_TP                    = 0x1d\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADDRFORM                 = 0x16\n\tIPV6_ADDR_PREFERENCES         = 0x4a\n\tIPV6_ADD_MEMBERSHIP           = 0xc\n\tIPV6_AIXRAWSOCKET             = 0x39\n\tIPV6_CHECKSUM                 = 0x27\n\tIPV6_DONTFRAG                 = 0x2d\n\tIPV6_DROP_MEMBERSHIP          = 0xd\n\tIPV6_DSTOPTS                  = 0x36\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffffff\n\tIPV6_FLOWINFO_PRIFLOW         = 0xfffffff\n\tIPV6_FLOWINFO_PRIORITY        = 0xf000000\n\tIPV6_FLOWINFO_SRFLAG          = 0x10000000\n\tIPV6_FLOWINFO_VERSION         = 0xf0000000\n\tIPV6_HOPLIMIT                 = 0x28\n\tIPV6_HOPOPTS                  = 0x34\n\tIPV6_JOIN_GROUP               = 0xc\n\tIPV6_LEAVE_GROUP              = 0xd\n\tIPV6_MIPDSTOPTS               = 0x36\n\tIPV6_MULTICAST_HOPS           = 0xa\n\tIPV6_MULTICAST_IF             = 0x9\n\tIPV6_MULTICAST_LOOP           = 0xb\n\tIPV6_NEXTHOP                  = 0x30\n\tIPV6_NOPROBE                  = 0x1c\n\tIPV6_PATHMTU                  = 0x2e\n\tIPV6_PKTINFO                  = 0x21\n\tIPV6_PKTOPTIONS               = 0x24\n\tIPV6_PRIORITY_10              = 0xa000000\n\tIPV6_PRIORITY_11              = 0xb000000\n\tIPV6_PRIORITY_12              = 0xc000000\n\tIPV6_PRIORITY_13              = 0xd000000\n\tIPV6_PRIORITY_14              = 0xe000000\n\tIPV6_PRIORITY_15              = 0xf000000\n\tIPV6_PRIORITY_8               = 0x8000000\n\tIPV6_PRIORITY_9               = 0x9000000\n\tIPV6_PRIORITY_BULK            = 0x4000000\n\tIPV6_PRIORITY_CONTROL         = 0x7000000\n\tIPV6_PRIORITY_FILLER          = 0x1000000\n\tIPV6_PRIORITY_INTERACTIVE     = 0x6000000\n\tIPV6_PRIORITY_RESERVED1       = 0x3000000\n\tIPV6_PRIORITY_RESERVED2       = 0x5000000\n\tIPV6_PRIORITY_UNATTENDED      = 0x2000000\n\tIPV6_PRIORITY_UNCHARACTERIZED = 0x0\n\tIPV6_RECVDSTOPTS              = 0x38\n\tIPV6_RECVHOPLIMIT             = 0x29\n\tIPV6_RECVHOPOPTS              = 0x35\n\tIPV6_RECVHOPS                 = 0x22\n\tIPV6_RECVIF                   = 0x1e\n\tIPV6_RECVPATHMTU              = 0x2f\n\tIPV6_RECVPKTINFO              = 0x23\n\tIPV6_RECVRTHDR                = 0x33\n\tIPV6_RECVSRCRT                = 0x1d\n\tIPV6_RECVTCLASS               = 0x2a\n\tIPV6_RTHDR                    = 0x32\n\tIPV6_RTHDRDSTOPTS             = 0x37\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_RTHDR_TYPE_2             = 0x2\n\tIPV6_SENDIF                   = 0x1f\n\tIPV6_SRFLAG_LOOSE             = 0x0\n\tIPV6_SRFLAG_STRICT            = 0x10000000\n\tIPV6_TCLASS                   = 0x2b\n\tIPV6_TOKEN_LENGTH             = 0x40\n\tIPV6_UNICAST_HOPS             = 0x4\n\tIPV6_USE_MIN_MTU              = 0x2c\n\tIPV6_V6ONLY                   = 0x25\n\tIPV6_VERSION                  = 0x60000000\n\tIP_ADDRFORM                   = 0x16\n\tIP_ADD_MEMBERSHIP             = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x3c\n\tIP_BLOCK_SOURCE               = 0x3a\n\tIP_BROADCAST_IF               = 0x10\n\tIP_CACHE_LINE_SIZE            = 0x80\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPMODE                   = 0x11\n\tIP_DONTFRAG                   = 0x19\n\tIP_DROP_MEMBERSHIP            = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x3d\n\tIP_FINDPMTU                   = 0x1a\n\tIP_HDRINCL                    = 0x2\n\tIP_INC_MEMBERSHIPS            = 0x14\n\tIP_INIT_MEMBERSHIP            = 0x14\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_HOPS             = 0xa\n\tIP_MULTICAST_IF               = 0x9\n\tIP_MULTICAST_LOOP             = 0xb\n\tIP_MULTICAST_TTL              = 0xa\n\tIP_OPT                        = 0x1b\n\tIP_OPTIONS                    = 0x1\n\tIP_PMTUAGE                    = 0x1b\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x14\n\tIP_RECVIFINFO                 = 0xf\n\tIP_RECVINTERFACE              = 0x20\n\tIP_RECVMACHDR                 = 0xe\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVTTL                    = 0x22\n\tIP_RETOPTS                    = 0x8\n\tIP_SOURCE_FILTER              = 0x48\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x3b\n\tIP_UNICAST_HOPS               = 0x4\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x800\n\tIXANY                         = 0x1000\n\tIXOFF                         = 0x400\n\tIXON                          = 0x200\n\tI_FLUSH                       = 0x20005305\n\tLNOFLSH                       = 0x8000\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_NORMAL                   = 0x0\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_SPACEAVAIL               = 0x5\n\tMADV_WILLNEED                 = 0x3\n\tMAP_ANON                      = 0x10\n\tMAP_ANONYMOUS                 = 0x10\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x100\n\tMAP_PRIVATE                   = 0x2\n\tMAP_SHARED                    = 0x1\n\tMAP_TYPE                      = 0xf0\n\tMAP_VARIABLE                  = 0x0\n\tMCAST_BLOCK_SOURCE            = 0x40\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x3e\n\tMCAST_JOIN_SOURCE_GROUP       = 0x42\n\tMCAST_LEAVE_GROUP             = 0x3f\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x43\n\tMCAST_SOURCE_FILTER           = 0x49\n\tMCAST_UNBLOCK_SOURCE          = 0x41\n\tMCL_CURRENT                   = 0x100\n\tMCL_FUTURE                    = 0x200\n\tMSG_ANY                       = 0x4\n\tMSG_ARGEXT                    = 0x400\n\tMSG_BAND                      = 0x2\n\tMSG_COMPAT                    = 0x8000\n\tMSG_CTRUNC                    = 0x20\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_EOR                       = 0x8\n\tMSG_HIPRI                     = 0x1\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_MPEG2                     = 0x80\n\tMSG_NONBLOCK                  = 0x4000\n\tMSG_NOSIGNAL                  = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x10\n\tMSG_WAITALL                   = 0x40\n\tMSG_WAITFORONE                = 0x200\n\tMS_ASYNC                      = 0x10\n\tMS_EINTR                      = 0x80\n\tMS_INVALIDATE                 = 0x40\n\tMS_PER_SEC                    = 0x3e8\n\tMS_SYNC                       = 0x20\n\tNFDBITS                       = 0x40\n\tNL0                           = 0x0\n\tNL1                           = 0x4000\n\tNL2                           = 0x8000\n\tNL3                           = 0xc000\n\tNLDLY                         = 0x4000\n\tNOFLSH                        = 0x80\n\tNOFLUSH                       = 0x80000000\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tONOEOT                        = 0x80000\n\tOPOST                         = 0x1\n\tOXTABS                        = 0x40000\n\tO_ACCMODE                     = 0x23\n\tO_APPEND                      = 0x8\n\tO_CIO                         = 0x80\n\tO_CIOR                        = 0x800000000\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DEFER                       = 0x2000\n\tO_DELAY                       = 0x4000\n\tO_DIRECT                      = 0x8000000\n\tO_DIRECTORY                   = 0x80000\n\tO_DSYNC                       = 0x400000\n\tO_EFSOFF                      = 0x400000000\n\tO_EFSON                       = 0x200000000\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x20\n\tO_LARGEFILE                   = 0x4000000\n\tO_NDELAY                      = 0x8000\n\tO_NOCACHE                     = 0x100000\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x1000000\n\tO_NONBLOCK                    = 0x4\n\tO_NONE                        = 0x3\n\tO_NSHARE                      = 0x10000\n\tO_RAW                         = 0x100000000\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSHARE                      = 0x1000\n\tO_RSYNC                       = 0x200000\n\tO_SEARCH                      = 0x20\n\tO_SNAPSHOT                    = 0x40\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_TTY_INIT                    = 0x0\n\tO_WRONLY                      = 0x1\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x20000000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tPR_64BIT                      = 0x20\n\tPR_ADDR                       = 0x2\n\tPR_ARGEXT                     = 0x400\n\tPR_ATOMIC                     = 0x1\n\tPR_CONNREQUIRED               = 0x4\n\tPR_FASTHZ                     = 0x5\n\tPR_INP                        = 0x40\n\tPR_INTRLEVEL                  = 0x8000\n\tPR_MLS                        = 0x100\n\tPR_MLS_1_LABEL                = 0x200\n\tPR_NOEOR                      = 0x4000\n\tPR_RIGHTS                     = 0x10\n\tPR_SLOWHZ                     = 0x2\n\tPR_WANTRCVD                   = 0x8\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x7\n\tRLIMIT_NPROC                  = 0x9\n\tRLIMIT_RSS                    = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0x7fffffffffffffff\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x8\n\tRTAX_NETMASK                  = 0x2\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DOWNSTREAM                = 0x100\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTC_IA64                      = 0x3\n\tRTC_POWER                     = 0x1\n\tRTC_POWER_PC                  = 0x2\n\tRTF_ACTIVE_DGD                = 0x1000000\n\tRTF_BCE                       = 0x80000\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_BROADCAST                 = 0x400000\n\tRTF_BUL                       = 0x2000\n\tRTF_CLONE                     = 0x10000\n\tRTF_CLONED                    = 0x20000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_FREE_IN_PROG              = 0x4000000\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_LLINFO                    = 0x400\n\tRTF_LOCAL                     = 0x200000\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTICAST                 = 0x800000\n\tRTF_PERMANENT6                = 0x8000000\n\tRTF_PINNED                    = 0x100000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_PROTO3                    = 0x40000\n\tRTF_REJECT                    = 0x8\n\tRTF_SMALLMTU                  = 0x40000\n\tRTF_STATIC                    = 0x800\n\tRTF_STOPSRCH                  = 0x2000000\n\tRTF_UNREACHABLE               = 0x10000000\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_EXPIRE                    = 0xf\n\tRTM_GET                       = 0x4\n\tRTM_GETNEXT                   = 0x11\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_RTLOST                    = 0x10\n\tRTM_RTTUNIT                   = 0xf4240\n\tRTM_SAMEADDR                  = 0x12\n\tRTM_SET                       = 0x13\n\tRTM_VERSION                   = 0x2\n\tRTM_VERSION_GR                = 0x4\n\tRTM_VERSION_GR_COMPAT         = 0x3\n\tRTM_VERSION_POLICY            = 0x5\n\tRTM_VERSION_POLICY_EXT        = 0x6\n\tRTM_VERSION_POLICY_PRFN       = 0x7\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tRUSAGE_THREAD                 = 0x1\n\tSCM_RIGHTS                    = 0x1\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIGMAX64                      = 0xff\n\tSIGQUEUE_MAX                  = 0x20\n\tSIOCADDIFVIPA                 = 0x20006942\n\tSIOCADDMTU                    = -0x7ffb9690\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDNETID                  = -0x7fd796a9\n\tSIOCADDRT                     = -0x7fc78df6\n\tSIOCAIFADDR                   = -0x7fbf96e6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fb396e0\n\tSIOCDELIFVIPA                 = 0x20006943\n\tSIOCDELMTU                    = -0x7ffb968f\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELPMTU                   = -0x7fd78ff6\n\tSIOCDELRT                     = -0x7fc78df5\n\tSIOCDIFADDR                   = -0x7fd796e7\n\tSIOCDNETOPT                   = -0x3ffe9680\n\tSIOCDX25XLATE                 = -0x7fd7969b\n\tSIOCFIFADDR                   = -0x7fdf966d\n\tSIOCGARP                      = -0x3fb396da\n\tSIOCGETMTUS                   = 0x2000696f\n\tSIOCGETSGCNT                  = -0x3feb8acc\n\tSIOCGETVIFCNT                 = -0x3feb8acd\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fd796df\n\tSIOCGIFADDRS                  = 0x2000698c\n\tSIOCGIFBAUDRATE               = -0x3fdf9669\n\tSIOCGIFBRDADDR                = -0x3fd796dd\n\tSIOCGIFCONF                   = -0x3fef96bb\n\tSIOCGIFCONFGLOB               = -0x3fef9670\n\tSIOCGIFDSTADDR                = -0x3fd796de\n\tSIOCGIFFLAGS                  = -0x3fd796ef\n\tSIOCGIFGIDLIST                = 0x20006968\n\tSIOCGIFHWADDR                 = -0x3fab966b\n\tSIOCGIFMETRIC                 = -0x3fd796e9\n\tSIOCGIFMTU                    = -0x3fd796aa\n\tSIOCGIFNETMASK                = -0x3fd796db\n\tSIOCGIFOPTIONS                = -0x3fd796d6\n\tSIOCGISNO                     = -0x3fd79695\n\tSIOCGLOADF                    = -0x3ffb967e\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGNETOPT                   = -0x3ffe96a5\n\tSIOCGNETOPT1                  = -0x3fdf967f\n\tSIOCGNMTUS                    = 0x2000696e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSIZIFCONF                = 0x4004696a\n\tSIOCGSRCFILTER                = -0x3fe796cb\n\tSIOCGTUNEPHASE                = -0x3ffb9676\n\tSIOCGX25XLATE                 = -0x3fd7969c\n\tSIOCIFATTACH                  = -0x7fdf9699\n\tSIOCIFDETACH                  = -0x7fdf969a\n\tSIOCIFGETPKEY                 = -0x7fdf969b\n\tSIOCIF_ATM_DARP               = -0x7fdf9683\n\tSIOCIF_ATM_DUMPARP            = -0x7fdf9685\n\tSIOCIF_ATM_GARP               = -0x7fdf9682\n\tSIOCIF_ATM_IDLE               = -0x7fdf9686\n\tSIOCIF_ATM_SARP               = -0x7fdf9681\n\tSIOCIF_ATM_SNMPARP            = -0x7fdf9687\n\tSIOCIF_ATM_SVC                = -0x7fdf9684\n\tSIOCIF_ATM_UBR                = -0x7fdf9688\n\tSIOCIF_DEVHEALTH              = -0x7ffb966c\n\tSIOCIF_IB_ARP_INCOMP          = -0x7fdf9677\n\tSIOCIF_IB_ARP_TIMER           = -0x7fdf9678\n\tSIOCIF_IB_CLEAR_PINFO         = -0x3fdf966f\n\tSIOCIF_IB_DEL_ARP             = -0x7fdf967f\n\tSIOCIF_IB_DEL_PINFO           = -0x3fdf9670\n\tSIOCIF_IB_DUMP_ARP            = -0x7fdf9680\n\tSIOCIF_IB_GET_ARP             = -0x7fdf967e\n\tSIOCIF_IB_GET_INFO            = -0x3f879675\n\tSIOCIF_IB_GET_STATS           = -0x3f879672\n\tSIOCIF_IB_NOTIFY_ADDR_REM     = -0x3f87966a\n\tSIOCIF_IB_RESET_STATS         = -0x3f879671\n\tSIOCIF_IB_RESIZE_CQ           = -0x7fdf9679\n\tSIOCIF_IB_SET_ARP             = -0x7fdf967d\n\tSIOCIF_IB_SET_PKEY            = -0x7fdf967c\n\tSIOCIF_IB_SET_PORT            = -0x7fdf967b\n\tSIOCIF_IB_SET_QKEY            = -0x7fdf9676\n\tSIOCIF_IB_SET_QSIZE           = -0x7fdf967a\n\tSIOCLISTIFVIPA                = 0x20006944\n\tSIOCSARP                      = -0x7fb396e2\n\tSIOCSHIWAT                    = 0xffffffff80047300\n\tSIOCSIFADDR                   = -0x7fd796f4\n\tSIOCSIFADDRORI                = -0x7fdb9673\n\tSIOCSIFBRDADDR                = -0x7fd796ed\n\tSIOCSIFDSTADDR                = -0x7fd796f2\n\tSIOCSIFFLAGS                  = -0x7fd796f0\n\tSIOCSIFGIDLIST                = 0x20006969\n\tSIOCSIFMETRIC                 = -0x7fd796e8\n\tSIOCSIFMTU                    = -0x7fd796a8\n\tSIOCSIFNETDUMP                = -0x7fd796e4\n\tSIOCSIFNETMASK                = -0x7fd796ea\n\tSIOCSIFOPTIONS                = -0x7fd796d7\n\tSIOCSIFSUBCHAN                = -0x7fd796e5\n\tSIOCSISNO                     = -0x7fd79694\n\tSIOCSLOADF                    = -0x3ffb967d\n\tSIOCSLOWAT                    = 0xffffffff80047302\n\tSIOCSNETOPT                   = -0x7ffe96a6\n\tSIOCSPGRP                     = 0xffffffff80047308\n\tSIOCSX25XLATE                 = -0x7fd7969d\n\tSOCK_CONN_DGRAM               = 0x6\n\tSOCK_DGRAM                    = 0x2\n\tSOCK_RAW                      = 0x3\n\tSOCK_RDM                      = 0x4\n\tSOCK_SEQPACKET                = 0x5\n\tSOCK_STREAM                   = 0x1\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x400\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_AUDIT                      = 0x8000\n\tSO_BROADCAST                  = 0x20\n\tSO_CKSUMRECV                  = 0x800\n\tSO_DEBUG                      = 0x1\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROR                      = 0x1007\n\tSO_KEEPALIVE                  = 0x8\n\tSO_KERNACCEPT                 = 0x2000\n\tSO_LINGER                     = 0x80\n\tSO_NOMULTIPATH                = 0x4000\n\tSO_NOREUSEADDR                = 0x1000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PEERID                     = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_REUSEADDR                  = 0x4\n\tSO_REUSEPORT                  = 0x200\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_TIMESTAMPNS                = 0x100a\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_USE_IFBUFS                 = 0x400\n\tS_BANDURG                     = 0x400\n\tS_EMODFMT                     = 0x3c000000\n\tS_ENFMT                       = 0x400\n\tS_ERROR                       = 0x100\n\tS_HANGUP                      = 0x200\n\tS_HIPRI                       = 0x2\n\tS_ICRYPTO                     = 0x80000\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFIFO                       = 0x1000\n\tS_IFJOURNAL                   = 0x10000\n\tS_IFLNK                       = 0xa000\n\tS_IFMPX                       = 0x2200\n\tS_IFMT                        = 0xf000\n\tS_IFPDIR                      = 0x4000000\n\tS_IFPSDIR                     = 0x8000000\n\tS_IFPSSDIR                    = 0xc000000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_IFSYSEA                     = 0x30000000\n\tS_INPUT                       = 0x1\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_ITCB                        = 0x1000000\n\tS_ITP                         = 0x800000\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXACL                       = 0x2000000\n\tS_IXATTR                      = 0x40000\n\tS_IXGRP                       = 0x8\n\tS_IXINTERFACE                 = 0x100000\n\tS_IXMOD                       = 0x40000000\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tS_MSG                         = 0x8\n\tS_OUTPUT                      = 0x4\n\tS_RDBAND                      = 0x20\n\tS_RDNORM                      = 0x10\n\tS_RESERVED1                   = 0x20000\n\tS_RESERVED2                   = 0x200000\n\tS_RESERVED3                   = 0x400000\n\tS_RESERVED4                   = 0x80000000\n\tS_RESFMT1                     = 0x10000000\n\tS_RESFMT10                    = 0x34000000\n\tS_RESFMT11                    = 0x38000000\n\tS_RESFMT12                    = 0x3c000000\n\tS_RESFMT2                     = 0x14000000\n\tS_RESFMT3                     = 0x18000000\n\tS_RESFMT4                     = 0x1c000000\n\tS_RESFMT5                     = 0x20000000\n\tS_RESFMT6                     = 0x24000000\n\tS_RESFMT7                     = 0x28000000\n\tS_RESFMT8                     = 0x2c000000\n\tS_WRBAND                      = 0x80\n\tS_WRNORM                      = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x400\n\tTAB2                          = 0x800\n\tTAB3                          = 0xc00\n\tTABDLY                        = 0xc00\n\tTCFLSH                        = 0x540c\n\tTCGETA                        = 0x5405\n\tTCGETS                        = 0x5401\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800\n\tTCP_ACLADD                    = 0x23\n\tTCP_ACLBIND                   = 0x26\n\tTCP_ACLCLEAR                  = 0x22\n\tTCP_ACLDEL                    = 0x24\n\tTCP_ACLDENY                   = 0x8\n\tTCP_ACLFLUSH                  = 0x21\n\tTCP_ACLGID                    = 0x1\n\tTCP_ACLLS                     = 0x25\n\tTCP_ACLSUBNET                 = 0x4\n\tTCP_ACLUID                    = 0x2\n\tTCP_CWND_DF                   = 0x16\n\tTCP_CWND_IF                   = 0x15\n\tTCP_DELAY_ACK_FIN             = 0x2\n\tTCP_DELAY_ACK_SYN             = 0x1\n\tTCP_FASTNAME                  = 0x101080a\n\tTCP_KEEPCNT                   = 0x13\n\tTCP_KEEPIDLE                  = 0x11\n\tTCP_KEEPINTVL                 = 0x12\n\tTCP_LSPRIV                    = 0x29\n\tTCP_LUID                      = 0x20\n\tTCP_MAXBURST                  = 0x8\n\tTCP_MAXDF                     = 0x64\n\tTCP_MAXIF                     = 0x64\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MAXWIN                    = 0xffff\n\tTCP_MAXWINDOWSCALE            = 0xe\n\tTCP_MAX_SACK                  = 0x4\n\tTCP_MSS                       = 0x5b4\n\tTCP_NODELAY                   = 0x1\n\tTCP_NODELAYACK                = 0x14\n\tTCP_NOREDUCE_CWND_EXIT_FRXMT  = 0x19\n\tTCP_NOREDUCE_CWND_IN_FRXMT    = 0x18\n\tTCP_NOTENTER_SSTART           = 0x17\n\tTCP_OPT                       = 0x19\n\tTCP_RFC1323                   = 0x4\n\tTCP_SETPRIV                   = 0x27\n\tTCP_STDURG                    = 0x10\n\tTCP_TIMESTAMP_OPTLEN          = 0xc\n\tTCP_UNSETPRIV                 = 0x28\n\tTCSAFLUSH                     = 0x2\n\tTCSBRK                        = 0x5409\n\tTCSETA                        = 0x5406\n\tTCSETAF                       = 0x5408\n\tTCSETAW                       = 0x5407\n\tTCSETS                        = 0x5402\n\tTCSETSF                       = 0x5404\n\tTCSETSW                       = 0x5403\n\tTCXONC                        = 0x540b\n\tTIMER_ABSTIME                 = 0x3e7\n\tTIMER_MAX                     = 0x20\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x2000747a\n\tTIOCCDTR                      = 0x20007478\n\tTIOCCONS                      = 0xffffffff80047462\n\tTIOCEXCL                      = 0x2000740d\n\tTIOCFLUSH                     = 0xffffffff80047410\n\tTIOCGETC                      = 0x40067412\n\tTIOCGETD                      = 0x40047400\n\tTIOCGETP                      = 0x40067408\n\tTIOCGLTC                      = 0x40067474\n\tTIOCGPGRP                     = 0x40047477\n\tTIOCGSID                      = 0x40047448\n\tTIOCGSIZE                     = 0x40087468\n\tTIOCGWINSZ                    = 0x40087468\n\tTIOCHPCL                      = 0x20007402\n\tTIOCLBIC                      = 0xffffffff8004747e\n\tTIOCLBIS                      = 0xffffffff8004747f\n\tTIOCLGET                      = 0x4004747c\n\tTIOCLSET                      = 0xffffffff8004747d\n\tTIOCMBIC                      = 0xffffffff8004746b\n\tTIOCMBIS                      = 0xffffffff8004746c\n\tTIOCMGET                      = 0x4004746a\n\tTIOCMIWAIT                    = 0xffffffff80047464\n\tTIOCMODG                      = 0x40047403\n\tTIOCMODS                      = 0xffffffff80047404\n\tTIOCMSET                      = 0xffffffff8004746d\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x20007471\n\tTIOCNXCL                      = 0x2000740e\n\tTIOCOUTQ                      = 0x40047473\n\tTIOCPKT                       = 0xffffffff80047470\n\tTIOCPKT_DATA                  = 0x0\n\tTIOCPKT_DOSTOP                = 0x20\n\tTIOCPKT_FLUSHREAD             = 0x1\n\tTIOCPKT_FLUSHWRITE            = 0x2\n\tTIOCPKT_NOSTOP                = 0x10\n\tTIOCPKT_START                 = 0x8\n\tTIOCPKT_STOP                  = 0x4\n\tTIOCREMOTE                    = 0xffffffff80047469\n\tTIOCSBRK                      = 0x2000747b\n\tTIOCSDTR                      = 0x20007479\n\tTIOCSETC                      = 0xffffffff80067411\n\tTIOCSETD                      = 0xffffffff80047401\n\tTIOCSETN                      = 0xffffffff8006740a\n\tTIOCSETP                      = 0xffffffff80067409\n\tTIOCSLTC                      = 0xffffffff80067475\n\tTIOCSPGRP                     = 0xffffffff80047476\n\tTIOCSSIZE                     = 0xffffffff80087467\n\tTIOCSTART                     = 0x2000746e\n\tTIOCSTI                       = 0xffffffff80017472\n\tTIOCSTOP                      = 0x2000746f\n\tTIOCSWINSZ                    = 0xffffffff80087467\n\tTIOCUCNTL                     = 0xffffffff80047466\n\tTOSTOP                        = 0x10000\n\tUTIME_NOW                     = -0x2\n\tUTIME_OMIT                    = -0x3\n\tVDISCRD                       = 0xc\n\tVDSUSP                        = 0xa\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xe\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xb\n\tVSTART                        = 0x7\n\tVSTOP                         = 0x8\n\tVSTRT                         = 0x7\n\tVSUSP                         = 0x9\n\tVT0                           = 0x0\n\tVT1                           = 0x8000\n\tVTDELAY                       = 0x2000\n\tVTDLY                         = 0x8000\n\tVTIME                         = 0x5\n\tVWERSE                        = 0xd\n\tWPARSTART                     = 0x1\n\tWPARSTOP                      = 0x2\n\tWPARTTYNAME                   = \"Global\"\n\tXCASE                         = 0x4\n\tXTABS                         = 0xc00\n\t_FDATAFLUSH                   = 0x2000000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x43)\n\tEADDRNOTAVAIL   = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x42)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x38)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x78)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x75)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECLONEME        = syscall.Errno(0x52)\n\tECONNABORTED    = syscall.Errno(0x48)\n\tECONNREFUSED    = syscall.Errno(0x4f)\n\tECONNRESET      = syscall.Errno(0x49)\n\tECORRUPT        = syscall.Errno(0x59)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDESTADDREQ     = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x3a)\n\tEDIST           = syscall.Errno(0x35)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x58)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFORMAT         = syscall.Errno(0x30)\n\tEHOSTDOWN       = syscall.Errno(0x50)\n\tEHOSTUNREACH    = syscall.Errno(0x51)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x74)\n\tEINPROGRESS     = syscall.Errno(0x37)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x4b)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x55)\n\tEMEDIA          = syscall.Errno(0x6e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x3b)\n\tEMULTIHOP       = syscall.Errno(0x7d)\n\tENAMETOOLONG    = syscall.Errno(0x56)\n\tENETDOWN        = syscall.Errno(0x45)\n\tENETRESET       = syscall.Errno(0x47)\n\tENETUNREACH     = syscall.Errno(0x46)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x70)\n\tENOBUFS         = syscall.Errno(0x4a)\n\tENOCONNECT      = syscall.Errno(0x32)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x7a)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x31)\n\tENOLINK         = syscall.Errno(0x7e)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENOPROTOOPT     = syscall.Errno(0x3d)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x76)\n\tENOSTR          = syscall.Errno(0x7b)\n\tENOSYS          = syscall.Errno(0x6d)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x4c)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x11)\n\tENOTREADY       = syscall.Errno(0x2e)\n\tENOTRECOVERABLE = syscall.Errno(0x5e)\n\tENOTRUST        = syscall.Errno(0x72)\n\tENOTSOCK        = syscall.Errno(0x39)\n\tENOTSUP         = syscall.Errno(0x7c)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x40)\n\tEOVERFLOW       = syscall.Errno(0x7f)\n\tEOWNERDEAD      = syscall.Errno(0x5f)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x41)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x53)\n\tEPROTO          = syscall.Errno(0x79)\n\tEPROTONOSUPPORT = syscall.Errno(0x3e)\n\tEPROTOTYPE      = syscall.Errno(0x3c)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x5d)\n\tERESTART        = syscall.Errno(0x52)\n\tEROFS           = syscall.Errno(0x1e)\n\tESAD            = syscall.Errno(0x71)\n\tESHUTDOWN       = syscall.Errno(0x4d)\n\tESOCKTNOSUPPORT = syscall.Errno(0x3f)\n\tESOFT           = syscall.Errno(0x6f)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x34)\n\tESYSERROR       = syscall.Errno(0x5a)\n\tETIME           = syscall.Errno(0x77)\n\tETIMEDOUT       = syscall.Errno(0x4e)\n\tETOOMANYREFS    = syscall.Errno(0x73)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x54)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEWRPROTECT      = syscall.Errno(0x2f)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGAIO      = syscall.Signal(0x17)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGALRM1    = syscall.Signal(0x26)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCAPI     = syscall.Signal(0x31)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCLD      = syscall.Signal(0x14)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGCPUFAIL  = syscall.Signal(0x3b)\n\tSIGDANGER   = syscall.Signal(0x21)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGGRANT    = syscall.Signal(0x3c)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOINT    = syscall.Signal(0x10)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKAP      = syscall.Signal(0x3c)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGLOST     = syscall.Signal(0x6)\n\tSIGMAX      = syscall.Signal(0xff)\n\tSIGMAX32    = syscall.Signal(0x3f)\n\tSIGMIGRATE  = syscall.Signal(0x23)\n\tSIGMSG      = syscall.Signal(0x1b)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPOLL     = syscall.Signal(0x17)\n\tSIGPRE      = syscall.Signal(0x24)\n\tSIGPROF     = syscall.Signal(0x20)\n\tSIGPTY      = syscall.Signal(0x17)\n\tSIGPWR      = syscall.Signal(0x1d)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGRECONFIG = syscall.Signal(0x3a)\n\tSIGRETRACT  = syscall.Signal(0x3d)\n\tSIGSAK      = syscall.Signal(0x3f)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSOUND    = syscall.Signal(0x3e)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGSYSERROR = syscall.Signal(0x30)\n\tSIGTALRM    = syscall.Signal(0x26)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVIRT     = syscall.Signal(0x25)\n\tSIGVTALRM   = syscall.Signal(0x22)\n\tSIGWAITING  = syscall.Signal(0x27)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"ENOTEMPTY\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"not a typewriter\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock condition if locked\"},\n\t{46, \"ENOTREADY\", \"device not ready\"},\n\t{47, \"EWRPROTECT\", \"write-protected media\"},\n\t{48, \"EFORMAT\", \"unformatted or incompatible media\"},\n\t{49, \"ENOLCK\", \"no locks available\"},\n\t{50, \"ENOCONNECT\", \"cannot Establish Connection\"},\n\t{52, \"ESTALE\", \"missing file or filesystem\"},\n\t{53, \"EDIST\", \"requests blocked by Administrator\"},\n\t{55, \"EINPROGRESS\", \"operation now in progress\"},\n\t{56, \"EALREADY\", \"operation already in progress\"},\n\t{57, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{58, \"EDESTADDREQ\", \"destination address required\"},\n\t{59, \"EMSGSIZE\", \"message too long\"},\n\t{60, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{61, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{62, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{63, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{64, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{65, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{66, \"EAFNOSUPPORT\", \"addr family not supported by protocol\"},\n\t{67, \"EADDRINUSE\", \"address already in use\"},\n\t{68, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{69, \"ENETDOWN\", \"network is down\"},\n\t{70, \"ENETUNREACH\", \"network is unreachable\"},\n\t{71, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{72, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{73, \"ECONNRESET\", \"connection reset by peer\"},\n\t{74, \"ENOBUFS\", \"no buffer space available\"},\n\t{75, \"EISCONN\", \"socket is already connected\"},\n\t{76, \"ENOTCONN\", \"socket is not connected\"},\n\t{77, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{78, \"ETIMEDOUT\", \"connection timed out\"},\n\t{79, \"ECONNREFUSED\", \"connection refused\"},\n\t{80, \"EHOSTDOWN\", \"host is down\"},\n\t{81, \"EHOSTUNREACH\", \"no route to host\"},\n\t{82, \"ERESTART\", \"restart the system call\"},\n\t{83, \"EPROCLIM\", \"too many processes\"},\n\t{84, \"EUSERS\", \"too many users\"},\n\t{85, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{86, \"ENAMETOOLONG\", \"file name too long\"},\n\t{88, \"EDQUOT\", \"disk quota exceeded\"},\n\t{89, \"ECORRUPT\", \"invalid file system control data detected\"},\n\t{90, \"ESYSERROR\", \"for future use \"},\n\t{93, \"EREMOTE\", \"item is not local to host\"},\n\t{94, \"ENOTRECOVERABLE\", \"state not recoverable \"},\n\t{95, \"EOWNERDEAD\", \"previous owner died \"},\n\t{109, \"ENOSYS\", \"function not implemented\"},\n\t{110, \"EMEDIA\", \"media surface error\"},\n\t{111, \"ESOFT\", \"I/O completed, but needs relocation\"},\n\t{112, \"ENOATTR\", \"no attribute found\"},\n\t{113, \"ESAD\", \"security Authentication Denied\"},\n\t{114, \"ENOTRUST\", \"not a Trusted Program\"},\n\t{115, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{116, \"EILSEQ\", \"invalid wide character\"},\n\t{117, \"ECANCELED\", \"asynchronous I/O cancelled\"},\n\t{118, \"ENOSR\", \"out of STREAMS resources\"},\n\t{119, \"ETIME\", \"system call timed out\"},\n\t{120, \"EBADMSG\", \"next message has wrong type\"},\n\t{121, \"EPROTO\", \"error in protocol\"},\n\t{122, \"ENODATA\", \"no message on stream head read q\"},\n\t{123, \"ENOSTR\", \"fd not associated with a stream\"},\n\t{124, \"ENOTSUP\", \"unsupported attribute value\"},\n\t{125, \"EMULTIHOP\", \"multihop is not allowed\"},\n\t{126, \"ENOLINK\", \"the server link has been severed\"},\n\t{127, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"IOT/Abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible/complete\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{27, \"SIGMSG\", \"input device data\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGPWR\", \"power-failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"paging space low\"},\n\t{34, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{35, \"SIGMIGRATE\", \"signal 35\"},\n\t{36, \"SIGPRE\", \"signal 36\"},\n\t{37, \"SIGVIRT\", \"signal 37\"},\n\t{38, \"SIGTALRM\", \"signal 38\"},\n\t{39, \"SIGWAITING\", \"signal 39\"},\n\t{48, \"SIGSYSERROR\", \"signal 48\"},\n\t{49, \"SIGCAPI\", \"signal 49\"},\n\t{58, \"SIGRECONFIG\", \"signal 58\"},\n\t{59, \"SIGCPUFAIL\", \"CPU Failure Predicted\"},\n\t{60, \"SIGGRANT\", \"monitor mode granted\"},\n\t{61, \"SIGRETRACT\", \"monitor mode retracted\"},\n\t{62, \"SIGSOUND\", \"sound completed\"},\n\t{63, \"SIGMAX32\", \"secure attention\"},\n\t{255, \"SIGMAX\", \"signal 255\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                            = 0x10\n\tAF_CCITT                                = 0xa\n\tAF_CHAOS                                = 0x5\n\tAF_CNT                                  = 0x15\n\tAF_COIP                                 = 0x14\n\tAF_DATAKIT                              = 0x9\n\tAF_DECnet                               = 0xc\n\tAF_DLI                                  = 0xd\n\tAF_E164                                 = 0x1c\n\tAF_ECMA                                 = 0x8\n\tAF_HYLINK                               = 0xf\n\tAF_IEEE80211                            = 0x25\n\tAF_IMPLINK                              = 0x3\n\tAF_INET                                 = 0x2\n\tAF_INET6                                = 0x1e\n\tAF_IPX                                  = 0x17\n\tAF_ISDN                                 = 0x1c\n\tAF_ISO                                  = 0x7\n\tAF_LAT                                  = 0xe\n\tAF_LINK                                 = 0x12\n\tAF_LOCAL                                = 0x1\n\tAF_MAX                                  = 0x29\n\tAF_NATM                                 = 0x1f\n\tAF_NDRV                                 = 0x1b\n\tAF_NETBIOS                              = 0x21\n\tAF_NS                                   = 0x6\n\tAF_OSI                                  = 0x7\n\tAF_PPP                                  = 0x22\n\tAF_PUP                                  = 0x4\n\tAF_RESERVED_36                          = 0x24\n\tAF_ROUTE                                = 0x11\n\tAF_SIP                                  = 0x18\n\tAF_SNA                                  = 0xb\n\tAF_SYSTEM                               = 0x20\n\tAF_SYS_CONTROL                          = 0x2\n\tAF_UNIX                                 = 0x1\n\tAF_UNSPEC                               = 0x0\n\tAF_UTUN                                 = 0x26\n\tAF_VSOCK                                = 0x28\n\tALTWERASE                               = 0x200\n\tATTR_BIT_MAP_COUNT                      = 0x5\n\tATTR_CMN_ACCESSMASK                     = 0x20000\n\tATTR_CMN_ACCTIME                        = 0x1000\n\tATTR_CMN_ADDEDTIME                      = 0x10000000\n\tATTR_CMN_BKUPTIME                       = 0x2000\n\tATTR_CMN_CHGTIME                        = 0x800\n\tATTR_CMN_CRTIME                         = 0x200\n\tATTR_CMN_DATA_PROTECT_FLAGS             = 0x40000000\n\tATTR_CMN_DEVID                          = 0x2\n\tATTR_CMN_DOCUMENT_ID                    = 0x100000\n\tATTR_CMN_ERROR                          = 0x20000000\n\tATTR_CMN_EXTENDED_SECURITY              = 0x400000\n\tATTR_CMN_FILEID                         = 0x2000000\n\tATTR_CMN_FLAGS                          = 0x40000\n\tATTR_CMN_FNDRINFO                       = 0x4000\n\tATTR_CMN_FSID                           = 0x4\n\tATTR_CMN_FULLPATH                       = 0x8000000\n\tATTR_CMN_GEN_COUNT                      = 0x80000\n\tATTR_CMN_GRPID                          = 0x10000\n\tATTR_CMN_GRPUUID                        = 0x1000000\n\tATTR_CMN_MODTIME                        = 0x400\n\tATTR_CMN_NAME                           = 0x1\n\tATTR_CMN_NAMEDATTRCOUNT                 = 0x80000\n\tATTR_CMN_NAMEDATTRLIST                  = 0x100000\n\tATTR_CMN_OBJID                          = 0x20\n\tATTR_CMN_OBJPERMANENTID                 = 0x40\n\tATTR_CMN_OBJTAG                         = 0x10\n\tATTR_CMN_OBJTYPE                        = 0x8\n\tATTR_CMN_OWNERID                        = 0x8000\n\tATTR_CMN_PARENTID                       = 0x4000000\n\tATTR_CMN_PAROBJID                       = 0x80\n\tATTR_CMN_RETURNED_ATTRS                 = 0x80000000\n\tATTR_CMN_SCRIPT                         = 0x100\n\tATTR_CMN_SETMASK                        = 0x51c7ff00\n\tATTR_CMN_USERACCESS                     = 0x200000\n\tATTR_CMN_UUID                           = 0x800000\n\tATTR_CMN_VALIDMASK                      = 0xffffffff\n\tATTR_CMN_VOLSETMASK                     = 0x6700\n\tATTR_FILE_ALLOCSIZE                     = 0x4\n\tATTR_FILE_CLUMPSIZE                     = 0x10\n\tATTR_FILE_DATAALLOCSIZE                 = 0x400\n\tATTR_FILE_DATAEXTENTS                   = 0x800\n\tATTR_FILE_DATALENGTH                    = 0x200\n\tATTR_FILE_DEVTYPE                       = 0x20\n\tATTR_FILE_FILETYPE                      = 0x40\n\tATTR_FILE_FORKCOUNT                     = 0x80\n\tATTR_FILE_FORKLIST                      = 0x100\n\tATTR_FILE_IOBLOCKSIZE                   = 0x8\n\tATTR_FILE_LINKCOUNT                     = 0x1\n\tATTR_FILE_RSRCALLOCSIZE                 = 0x2000\n\tATTR_FILE_RSRCEXTENTS                   = 0x4000\n\tATTR_FILE_RSRCLENGTH                    = 0x1000\n\tATTR_FILE_SETMASK                       = 0x20\n\tATTR_FILE_TOTALSIZE                     = 0x2\n\tATTR_FILE_VALIDMASK                     = 0x37ff\n\tATTR_VOL_ALLOCATIONCLUMP                = 0x40\n\tATTR_VOL_ATTRIBUTES                     = 0x40000000\n\tATTR_VOL_CAPABILITIES                   = 0x20000\n\tATTR_VOL_DIRCOUNT                       = 0x400\n\tATTR_VOL_ENCODINGSUSED                  = 0x10000\n\tATTR_VOL_FILECOUNT                      = 0x200\n\tATTR_VOL_FSTYPE                         = 0x1\n\tATTR_VOL_INFO                           = 0x80000000\n\tATTR_VOL_IOBLOCKSIZE                    = 0x80\n\tATTR_VOL_MAXOBJCOUNT                    = 0x800\n\tATTR_VOL_MINALLOCATION                  = 0x20\n\tATTR_VOL_MOUNTEDDEVICE                  = 0x8000\n\tATTR_VOL_MOUNTFLAGS                     = 0x4000\n\tATTR_VOL_MOUNTPOINT                     = 0x1000\n\tATTR_VOL_NAME                           = 0x2000\n\tATTR_VOL_OBJCOUNT                       = 0x100\n\tATTR_VOL_QUOTA_SIZE                     = 0x10000000\n\tATTR_VOL_RESERVED_SIZE                  = 0x20000000\n\tATTR_VOL_SETMASK                        = 0x80002000\n\tATTR_VOL_SIGNATURE                      = 0x2\n\tATTR_VOL_SIZE                           = 0x4\n\tATTR_VOL_SPACEAVAIL                     = 0x10\n\tATTR_VOL_SPACEFREE                      = 0x8\n\tATTR_VOL_SPACEUSED                      = 0x800000\n\tATTR_VOL_UUID                           = 0x40000\n\tATTR_VOL_VALIDMASK                      = 0xf087ffff\n\tB0                                      = 0x0\n\tB110                                    = 0x6e\n\tB115200                                 = 0x1c200\n\tB1200                                   = 0x4b0\n\tB134                                    = 0x86\n\tB14400                                  = 0x3840\n\tB150                                    = 0x96\n\tB1800                                   = 0x708\n\tB19200                                  = 0x4b00\n\tB200                                    = 0xc8\n\tB230400                                 = 0x38400\n\tB2400                                   = 0x960\n\tB28800                                  = 0x7080\n\tB300                                    = 0x12c\n\tB38400                                  = 0x9600\n\tB4800                                   = 0x12c0\n\tB50                                     = 0x32\n\tB57600                                  = 0xe100\n\tB600                                    = 0x258\n\tB7200                                   = 0x1c20\n\tB75                                     = 0x4b\n\tB76800                                  = 0x12c00\n\tB9600                                   = 0x2580\n\tBIOCFLUSH                               = 0x20004268\n\tBIOCGBLEN                               = 0x40044266\n\tBIOCGDLT                                = 0x4004426a\n\tBIOCGDLTLIST                            = 0xc00c4279\n\tBIOCGETIF                               = 0x4020426b\n\tBIOCGHDRCMPLT                           = 0x40044274\n\tBIOCGRSIG                               = 0x40044272\n\tBIOCGRTIMEOUT                           = 0x4010426e\n\tBIOCGSEESENT                            = 0x40044276\n\tBIOCGSTATS                              = 0x4008426f\n\tBIOCIMMEDIATE                           = 0x80044270\n\tBIOCPROMISC                             = 0x20004269\n\tBIOCSBLEN                               = 0xc0044266\n\tBIOCSDLT                                = 0x80044278\n\tBIOCSETF                                = 0x80104267\n\tBIOCSETFNR                              = 0x8010427e\n\tBIOCSETIF                               = 0x8020426c\n\tBIOCSHDRCMPLT                           = 0x80044275\n\tBIOCSRSIG                               = 0x80044273\n\tBIOCSRTIMEOUT                           = 0x8010426d\n\tBIOCSSEESENT                            = 0x80044277\n\tBIOCVERSION                             = 0x40044271\n\tBPF_A                                   = 0x10\n\tBPF_ABS                                 = 0x20\n\tBPF_ADD                                 = 0x0\n\tBPF_ALIGNMENT                           = 0x4\n\tBPF_ALU                                 = 0x4\n\tBPF_AND                                 = 0x50\n\tBPF_B                                   = 0x10\n\tBPF_DIV                                 = 0x30\n\tBPF_H                                   = 0x8\n\tBPF_IMM                                 = 0x0\n\tBPF_IND                                 = 0x40\n\tBPF_JA                                  = 0x0\n\tBPF_JEQ                                 = 0x10\n\tBPF_JGE                                 = 0x30\n\tBPF_JGT                                 = 0x20\n\tBPF_JMP                                 = 0x5\n\tBPF_JSET                                = 0x40\n\tBPF_K                                   = 0x0\n\tBPF_LD                                  = 0x0\n\tBPF_LDX                                 = 0x1\n\tBPF_LEN                                 = 0x80\n\tBPF_LSH                                 = 0x60\n\tBPF_MAJOR_VERSION                       = 0x1\n\tBPF_MAXBUFSIZE                          = 0x80000\n\tBPF_MAXINSNS                            = 0x200\n\tBPF_MEM                                 = 0x60\n\tBPF_MEMWORDS                            = 0x10\n\tBPF_MINBUFSIZE                          = 0x20\n\tBPF_MINOR_VERSION                       = 0x1\n\tBPF_MISC                                = 0x7\n\tBPF_MSH                                 = 0xa0\n\tBPF_MUL                                 = 0x20\n\tBPF_NEG                                 = 0x80\n\tBPF_OR                                  = 0x40\n\tBPF_RELEASE                             = 0x30bb6\n\tBPF_RET                                 = 0x6\n\tBPF_RSH                                 = 0x70\n\tBPF_ST                                  = 0x2\n\tBPF_STX                                 = 0x3\n\tBPF_SUB                                 = 0x10\n\tBPF_TAX                                 = 0x0\n\tBPF_TXA                                 = 0x80\n\tBPF_W                                   = 0x0\n\tBPF_X                                   = 0x8\n\tBRKINT                                  = 0x2\n\tBS0                                     = 0x0\n\tBS1                                     = 0x8000\n\tBSDLY                                   = 0x8000\n\tCFLUSH                                  = 0xf\n\tCLOCAL                                  = 0x8000\n\tCLOCK_MONOTONIC                         = 0x6\n\tCLOCK_MONOTONIC_RAW                     = 0x4\n\tCLOCK_MONOTONIC_RAW_APPROX              = 0x5\n\tCLOCK_PROCESS_CPUTIME_ID                = 0xc\n\tCLOCK_REALTIME                          = 0x0\n\tCLOCK_THREAD_CPUTIME_ID                 = 0x10\n\tCLOCK_UPTIME_RAW                        = 0x8\n\tCLOCK_UPTIME_RAW_APPROX                 = 0x9\n\tCLONE_NOFOLLOW                          = 0x1\n\tCLONE_NOOWNERCOPY                       = 0x2\n\tCONNECT_DATA_AUTHENTICATED              = 0x4\n\tCONNECT_DATA_IDEMPOTENT                 = 0x2\n\tCONNECT_RESUME_ON_READ_WRITE            = 0x1\n\tCR0                                     = 0x0\n\tCR1                                     = 0x1000\n\tCR2                                     = 0x2000\n\tCR3                                     = 0x3000\n\tCRDLY                                   = 0x3000\n\tCREAD                                   = 0x800\n\tCRTSCTS                                 = 0x30000\n\tCS5                                     = 0x0\n\tCS6                                     = 0x100\n\tCS7                                     = 0x200\n\tCS8                                     = 0x300\n\tCSIZE                                   = 0x300\n\tCSTART                                  = 0x11\n\tCSTATUS                                 = 0x14\n\tCSTOP                                   = 0x13\n\tCSTOPB                                  = 0x400\n\tCSUSP                                   = 0x1a\n\tCTLIOCGINFO                             = 0xc0644e03\n\tCTL_HW                                  = 0x6\n\tCTL_KERN                                = 0x1\n\tCTL_MAXNAME                             = 0xc\n\tCTL_NET                                 = 0x4\n\tDLT_A429                                = 0xb8\n\tDLT_A653_ICM                            = 0xb9\n\tDLT_AIRONET_HEADER                      = 0x78\n\tDLT_AOS                                 = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394              = 0x8a\n\tDLT_ARCNET                              = 0x7\n\tDLT_ARCNET_LINUX                        = 0x81\n\tDLT_ATM_CLIP                            = 0x13\n\tDLT_ATM_RFC1483                         = 0xb\n\tDLT_AURORA                              = 0x7e\n\tDLT_AX25                                = 0x3\n\tDLT_AX25_KISS                           = 0xca\n\tDLT_BACNET_MS_TP                        = 0xa5\n\tDLT_BLUETOOTH_HCI_H4                    = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR          = 0xc9\n\tDLT_CAN20B                              = 0xbe\n\tDLT_CAN_SOCKETCAN                       = 0xe3\n\tDLT_CHAOS                               = 0x5\n\tDLT_CHDLC                               = 0x68\n\tDLT_CISCO_IOS                           = 0x76\n\tDLT_C_HDLC                              = 0x68\n\tDLT_C_HDLC_WITH_DIR                     = 0xcd\n\tDLT_DBUS                                = 0xe7\n\tDLT_DECT                                = 0xdd\n\tDLT_DOCSIS                              = 0x8f\n\tDLT_DVB_CI                              = 0xeb\n\tDLT_ECONET                              = 0x73\n\tDLT_EN10MB                              = 0x1\n\tDLT_EN3MB                               = 0x2\n\tDLT_ENC                                 = 0x6d\n\tDLT_ERF                                 = 0xc5\n\tDLT_ERF_ETH                             = 0xaf\n\tDLT_ERF_POS                             = 0xb0\n\tDLT_FC_2                                = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS              = 0xe1\n\tDLT_FDDI                                = 0xa\n\tDLT_FLEXRAY                             = 0xd2\n\tDLT_FRELAY                              = 0x6b\n\tDLT_FRELAY_WITH_DIR                     = 0xce\n\tDLT_GCOM_SERIAL                         = 0xad\n\tDLT_GCOM_T1E1                           = 0xac\n\tDLT_GPF_F                               = 0xab\n\tDLT_GPF_T                               = 0xaa\n\tDLT_GPRS_LLC                            = 0xa9\n\tDLT_GSMTAP_ABIS                         = 0xda\n\tDLT_GSMTAP_UM                           = 0xd9\n\tDLT_HHDLC                               = 0x79\n\tDLT_IBM_SN                              = 0x92\n\tDLT_IBM_SP                              = 0x91\n\tDLT_IEEE802                             = 0x6\n\tDLT_IEEE802_11                          = 0x69\n\tDLT_IEEE802_11_RADIO                    = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS                = 0xa3\n\tDLT_IEEE802_15_4                        = 0xc3\n\tDLT_IEEE802_15_4_LINUX                  = 0xbf\n\tDLT_IEEE802_15_4_NOFCS                  = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY             = 0xd7\n\tDLT_IEEE802_16_MAC_CPS                  = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO            = 0xc1\n\tDLT_IPFILTER                            = 0x74\n\tDLT_IPMB                                = 0xc7\n\tDLT_IPMB_LINUX                          = 0xd1\n\tDLT_IPNET                               = 0xe2\n\tDLT_IPOIB                               = 0xf2\n\tDLT_IPV4                                = 0xe4\n\tDLT_IPV6                                = 0xe5\n\tDLT_IP_OVER_FC                          = 0x7a\n\tDLT_JUNIPER_ATM1                        = 0x89\n\tDLT_JUNIPER_ATM2                        = 0x87\n\tDLT_JUNIPER_ATM_CEMIC                   = 0xee\n\tDLT_JUNIPER_CHDLC                       = 0xb5\n\tDLT_JUNIPER_ES                          = 0x84\n\tDLT_JUNIPER_ETHER                       = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL                = 0xea\n\tDLT_JUNIPER_FRELAY                      = 0xb4\n\tDLT_JUNIPER_GGSN                        = 0x85\n\tDLT_JUNIPER_ISM                         = 0xc2\n\tDLT_JUNIPER_MFR                         = 0x86\n\tDLT_JUNIPER_MLFR                        = 0x83\n\tDLT_JUNIPER_MLPPP                       = 0x82\n\tDLT_JUNIPER_MONITOR                     = 0xa4\n\tDLT_JUNIPER_PIC_PEER                    = 0xae\n\tDLT_JUNIPER_PPP                         = 0xb3\n\tDLT_JUNIPER_PPPOE                       = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM                   = 0xa8\n\tDLT_JUNIPER_SERVICES                    = 0x88\n\tDLT_JUNIPER_SRX_E2E                     = 0xe9\n\tDLT_JUNIPER_ST                          = 0xc8\n\tDLT_JUNIPER_VP                          = 0xb7\n\tDLT_JUNIPER_VS                          = 0xe8\n\tDLT_LAPB_WITH_DIR                       = 0xcf\n\tDLT_LAPD                                = 0xcb\n\tDLT_LIN                                 = 0xd4\n\tDLT_LINUX_EVDEV                         = 0xd8\n\tDLT_LINUX_IRDA                          = 0x90\n\tDLT_LINUX_LAPD                          = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION             = 0xa6\n\tDLT_LINUX_SLL                           = 0x71\n\tDLT_LOOP                                = 0x6c\n\tDLT_LTALK                               = 0x72\n\tDLT_MATCHING_MAX                        = 0x10a\n\tDLT_MATCHING_MIN                        = 0x68\n\tDLT_MFR                                 = 0xb6\n\tDLT_MOST                                = 0xd3\n\tDLT_MPEG_2_TS                           = 0xf3\n\tDLT_MPLS                                = 0xdb\n\tDLT_MTP2                                = 0x8c\n\tDLT_MTP2_WITH_PHDR                      = 0x8b\n\tDLT_MTP3                                = 0x8d\n\tDLT_MUX27010                            = 0xec\n\tDLT_NETANALYZER                         = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT             = 0xf1\n\tDLT_NFC_LLCP                            = 0xf5\n\tDLT_NFLOG                               = 0xef\n\tDLT_NG40                                = 0xf4\n\tDLT_NULL                                = 0x0\n\tDLT_PCI_EXP                             = 0x7d\n\tDLT_PFLOG                               = 0x75\n\tDLT_PFSYNC                              = 0x12\n\tDLT_PPI                                 = 0xc0\n\tDLT_PPP                                 = 0x9\n\tDLT_PPP_BSDOS                           = 0x10\n\tDLT_PPP_ETHER                           = 0x33\n\tDLT_PPP_PPPD                            = 0xa6\n\tDLT_PPP_SERIAL                          = 0x32\n\tDLT_PPP_WITH_DIR                        = 0xcc\n\tDLT_PPP_WITH_DIRECTION                  = 0xa6\n\tDLT_PRISM_HEADER                        = 0x77\n\tDLT_PRONET                              = 0x4\n\tDLT_RAIF1                               = 0xc6\n\tDLT_RAW                                 = 0xc\n\tDLT_RIO                                 = 0x7c\n\tDLT_SCCP                                = 0x8e\n\tDLT_SITA                                = 0xc4\n\tDLT_SLIP                                = 0x8\n\tDLT_SLIP_BSDOS                          = 0xf\n\tDLT_STANAG_5066_D_PDU                   = 0xed\n\tDLT_SUNATM                              = 0x7b\n\tDLT_SYMANTEC_FIREWALL                   = 0x63\n\tDLT_TZSP                                = 0x80\n\tDLT_USB                                 = 0xba\n\tDLT_USB_DARWIN                          = 0x10a\n\tDLT_USB_LINUX                           = 0xbd\n\tDLT_USB_LINUX_MMAPPED                   = 0xdc\n\tDLT_USER0                               = 0x93\n\tDLT_USER1                               = 0x94\n\tDLT_USER10                              = 0x9d\n\tDLT_USER11                              = 0x9e\n\tDLT_USER12                              = 0x9f\n\tDLT_USER13                              = 0xa0\n\tDLT_USER14                              = 0xa1\n\tDLT_USER15                              = 0xa2\n\tDLT_USER2                               = 0x95\n\tDLT_USER3                               = 0x96\n\tDLT_USER4                               = 0x97\n\tDLT_USER5                               = 0x98\n\tDLT_USER6                               = 0x99\n\tDLT_USER7                               = 0x9a\n\tDLT_USER8                               = 0x9b\n\tDLT_USER9                               = 0x9c\n\tDLT_WIHART                              = 0xdf\n\tDLT_X2E_SERIAL                          = 0xd5\n\tDLT_X2E_XORAYA                          = 0xd6\n\tDT_BLK                                  = 0x6\n\tDT_CHR                                  = 0x2\n\tDT_DIR                                  = 0x4\n\tDT_FIFO                                 = 0x1\n\tDT_LNK                                  = 0xa\n\tDT_REG                                  = 0x8\n\tDT_SOCK                                 = 0xc\n\tDT_UNKNOWN                              = 0x0\n\tDT_WHT                                  = 0xe\n\tECHO                                    = 0x8\n\tECHOCTL                                 = 0x40\n\tECHOE                                   = 0x2\n\tECHOK                                   = 0x4\n\tECHOKE                                  = 0x1\n\tECHONL                                  = 0x10\n\tECHOPRT                                 = 0x20\n\tEVFILT_AIO                              = -0x3\n\tEVFILT_EXCEPT                           = -0xf\n\tEVFILT_FS                               = -0x9\n\tEVFILT_MACHPORT                         = -0x8\n\tEVFILT_PROC                             = -0x5\n\tEVFILT_READ                             = -0x1\n\tEVFILT_SIGNAL                           = -0x6\n\tEVFILT_SYSCOUNT                         = 0x11\n\tEVFILT_THREADMARKER                     = 0x11\n\tEVFILT_TIMER                            = -0x7\n\tEVFILT_USER                             = -0xa\n\tEVFILT_VM                               = -0xc\n\tEVFILT_VNODE                            = -0x4\n\tEVFILT_WRITE                            = -0x2\n\tEV_ADD                                  = 0x1\n\tEV_CLEAR                                = 0x20\n\tEV_DELETE                               = 0x2\n\tEV_DISABLE                              = 0x8\n\tEV_DISPATCH                             = 0x80\n\tEV_DISPATCH2                            = 0x180\n\tEV_ENABLE                               = 0x4\n\tEV_EOF                                  = 0x8000\n\tEV_ERROR                                = 0x4000\n\tEV_FLAG0                                = 0x1000\n\tEV_FLAG1                                = 0x2000\n\tEV_ONESHOT                              = 0x10\n\tEV_OOBAND                               = 0x2000\n\tEV_POLL                                 = 0x1000\n\tEV_RECEIPT                              = 0x40\n\tEV_SYSFLAGS                             = 0xf000\n\tEV_UDATA_SPECIFIC                       = 0x100\n\tEV_VANISHED                             = 0x200\n\tEXTA                                    = 0x4b00\n\tEXTB                                    = 0x9600\n\tEXTPROC                                 = 0x800\n\tFD_CLOEXEC                              = 0x1\n\tFD_SETSIZE                              = 0x400\n\tFF0                                     = 0x0\n\tFF1                                     = 0x4000\n\tFFDLY                                   = 0x4000\n\tFLUSHO                                  = 0x800000\n\tFSOPT_ATTR_CMN_EXTENDED                 = 0x20\n\tFSOPT_NOFOLLOW                          = 0x1\n\tFSOPT_NOINMEMUPDATE                     = 0x2\n\tFSOPT_PACK_INVAL_ATTRS                  = 0x8\n\tFSOPT_REPORT_FULLSIZE                   = 0x4\n\tFSOPT_RETURN_REALDEV                    = 0x200\n\tF_ADDFILESIGS                           = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM              = 0x53\n\tF_ADDFILESIGS_INFO                      = 0x67\n\tF_ADDFILESIGS_RETURN                    = 0x61\n\tF_ADDFILESUPPL                          = 0x68\n\tF_ADDSIGS                               = 0x3b\n\tF_ALLOCATEALL                           = 0x4\n\tF_ALLOCATECONTIG                        = 0x2\n\tF_BARRIERFSYNC                          = 0x55\n\tF_CHECK_LV                              = 0x62\n\tF_CHKCLEAN                              = 0x29\n\tF_DUPFD                                 = 0x0\n\tF_DUPFD_CLOEXEC                         = 0x43\n\tF_FINDSIGS                              = 0x4e\n\tF_FLUSH_DATA                            = 0x28\n\tF_FREEZE_FS                             = 0x35\n\tF_FULLFSYNC                             = 0x33\n\tF_GETCODEDIR                            = 0x48\n\tF_GETFD                                 = 0x1\n\tF_GETFL                                 = 0x3\n\tF_GETLK                                 = 0x7\n\tF_GETLKPID                              = 0x42\n\tF_GETNOSIGPIPE                          = 0x4a\n\tF_GETOWN                                = 0x5\n\tF_GETPATH                               = 0x32\n\tF_GETPATH_MTMINFO                       = 0x47\n\tF_GETPATH_NOFIRMLINK                    = 0x66\n\tF_GETPROTECTIONCLASS                    = 0x3f\n\tF_GETPROTECTIONLEVEL                    = 0x4d\n\tF_GETSIGSINFO                           = 0x69\n\tF_GLOBAL_NOCACHE                        = 0x37\n\tF_LOG2PHYS                              = 0x31\n\tF_LOG2PHYS_EXT                          = 0x41\n\tF_NOCACHE                               = 0x30\n\tF_NODIRECT                              = 0x3e\n\tF_OK                                    = 0x0\n\tF_PATHPKG_CHECK                         = 0x34\n\tF_PEOFPOSMODE                           = 0x3\n\tF_PREALLOCATE                           = 0x2a\n\tF_PUNCHHOLE                             = 0x63\n\tF_RDADVISE                              = 0x2c\n\tF_RDAHEAD                               = 0x2d\n\tF_RDLCK                                 = 0x1\n\tF_SETBACKINGSTORE                       = 0x46\n\tF_SETFD                                 = 0x2\n\tF_SETFL                                 = 0x4\n\tF_SETLK                                 = 0x8\n\tF_SETLKW                                = 0x9\n\tF_SETLKWTIMEOUT                         = 0xa\n\tF_SETNOSIGPIPE                          = 0x49\n\tF_SETOWN                                = 0x6\n\tF_SETPROTECTIONCLASS                    = 0x40\n\tF_SETSIZE                               = 0x2b\n\tF_SINGLE_WRITER                         = 0x4c\n\tF_SPECULATIVE_READ                      = 0x65\n\tF_THAW_FS                               = 0x36\n\tF_TRANSCODEKEY                          = 0x4b\n\tF_TRIM_ACTIVE_FILE                      = 0x64\n\tF_UNLCK                                 = 0x2\n\tF_VOLPOSMODE                            = 0x4\n\tF_WRLCK                                 = 0x3\n\tHUPCL                                   = 0x4000\n\tHW_MACHINE                              = 0x1\n\tICANON                                  = 0x100\n\tICMP6_FILTER                            = 0x12\n\tICRNL                                   = 0x100\n\tIEXTEN                                  = 0x400\n\tIFF_ALLMULTI                            = 0x200\n\tIFF_ALTPHYS                             = 0x4000\n\tIFF_BROADCAST                           = 0x2\n\tIFF_DEBUG                               = 0x4\n\tIFF_LINK0                               = 0x1000\n\tIFF_LINK1                               = 0x2000\n\tIFF_LINK2                               = 0x4000\n\tIFF_LOOPBACK                            = 0x8\n\tIFF_MULTICAST                           = 0x8000\n\tIFF_NOARP                               = 0x80\n\tIFF_NOTRAILERS                          = 0x20\n\tIFF_OACTIVE                             = 0x400\n\tIFF_POINTOPOINT                         = 0x10\n\tIFF_PROMISC                             = 0x100\n\tIFF_RUNNING                             = 0x40\n\tIFF_SIMPLEX                             = 0x800\n\tIFF_UP                                  = 0x1\n\tIFNAMSIZ                                = 0x10\n\tIFT_1822                                = 0x2\n\tIFT_6LOWPAN                             = 0x40\n\tIFT_AAL5                                = 0x31\n\tIFT_ARCNET                              = 0x23\n\tIFT_ARCNETPLUS                          = 0x24\n\tIFT_ATM                                 = 0x25\n\tIFT_BRIDGE                              = 0xd1\n\tIFT_CARP                                = 0xf8\n\tIFT_CELLULAR                            = 0xff\n\tIFT_CEPT                                = 0x13\n\tIFT_DS3                                 = 0x1e\n\tIFT_ENC                                 = 0xf4\n\tIFT_EON                                 = 0x19\n\tIFT_ETHER                               = 0x6\n\tIFT_FAITH                               = 0x38\n\tIFT_FDDI                                = 0xf\n\tIFT_FRELAY                              = 0x20\n\tIFT_FRELAYDCE                           = 0x2c\n\tIFT_GIF                                 = 0x37\n\tIFT_HDH1822                             = 0x3\n\tIFT_HIPPI                               = 0x2f\n\tIFT_HSSI                                = 0x2e\n\tIFT_HY                                  = 0xe\n\tIFT_IEEE1394                            = 0x90\n\tIFT_IEEE8023ADLAG                       = 0x88\n\tIFT_ISDNBASIC                           = 0x14\n\tIFT_ISDNPRIMARY                         = 0x15\n\tIFT_ISO88022LLC                         = 0x29\n\tIFT_ISO88023                            = 0x7\n\tIFT_ISO88024                            = 0x8\n\tIFT_ISO88025                            = 0x9\n\tIFT_ISO88026                            = 0xa\n\tIFT_L2VLAN                              = 0x87\n\tIFT_LAPB                                = 0x10\n\tIFT_LOCALTALK                           = 0x2a\n\tIFT_LOOP                                = 0x18\n\tIFT_MIOX25                              = 0x26\n\tIFT_MODEM                               = 0x30\n\tIFT_NSIP                                = 0x1b\n\tIFT_OTHER                               = 0x1\n\tIFT_P10                                 = 0xc\n\tIFT_P80                                 = 0xd\n\tIFT_PARA                                = 0x22\n\tIFT_PDP                                 = 0xff\n\tIFT_PFLOG                               = 0xf5\n\tIFT_PFSYNC                              = 0xf6\n\tIFT_PKTAP                               = 0xfe\n\tIFT_PPP                                 = 0x17\n\tIFT_PROPMUX                             = 0x36\n\tIFT_PROPVIRTUAL                         = 0x35\n\tIFT_PTPSERIAL                           = 0x16\n\tIFT_RS232                               = 0x21\n\tIFT_SDLC                                = 0x11\n\tIFT_SIP                                 = 0x1f\n\tIFT_SLIP                                = 0x1c\n\tIFT_SMDSDXI                             = 0x2b\n\tIFT_SMDSICIP                            = 0x34\n\tIFT_SONET                               = 0x27\n\tIFT_SONETPATH                           = 0x32\n\tIFT_SONETVT                             = 0x33\n\tIFT_STARLAN                             = 0xb\n\tIFT_STF                                 = 0x39\n\tIFT_T1                                  = 0x12\n\tIFT_ULTRA                               = 0x1d\n\tIFT_V35                                 = 0x2d\n\tIFT_X25                                 = 0x5\n\tIFT_X25DDN                              = 0x4\n\tIFT_X25PLE                              = 0x28\n\tIFT_XETHER                              = 0x1a\n\tIGNBRK                                  = 0x1\n\tIGNCR                                   = 0x80\n\tIGNPAR                                  = 0x4\n\tIMAXBEL                                 = 0x2000\n\tINLCR                                   = 0x40\n\tINPCK                                   = 0x10\n\tIN_CLASSA_HOST                          = 0xffffff\n\tIN_CLASSA_MAX                           = 0x80\n\tIN_CLASSA_NET                           = 0xff000000\n\tIN_CLASSA_NSHIFT                        = 0x18\n\tIN_CLASSB_HOST                          = 0xffff\n\tIN_CLASSB_MAX                           = 0x10000\n\tIN_CLASSB_NET                           = 0xffff0000\n\tIN_CLASSB_NSHIFT                        = 0x10\n\tIN_CLASSC_HOST                          = 0xff\n\tIN_CLASSC_NET                           = 0xffffff00\n\tIN_CLASSC_NSHIFT                        = 0x8\n\tIN_CLASSD_HOST                          = 0xfffffff\n\tIN_CLASSD_NET                           = 0xf0000000\n\tIN_CLASSD_NSHIFT                        = 0x1c\n\tIN_LINKLOCALNETNUM                      = 0xa9fe0000\n\tIN_LOOPBACKNET                          = 0x7f\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID          = 0x400473d1\n\tIPPROTO_3PC                             = 0x22\n\tIPPROTO_ADFS                            = 0x44\n\tIPPROTO_AH                              = 0x33\n\tIPPROTO_AHIP                            = 0x3d\n\tIPPROTO_APES                            = 0x63\n\tIPPROTO_ARGUS                           = 0xd\n\tIPPROTO_AX25                            = 0x5d\n\tIPPROTO_BHA                             = 0x31\n\tIPPROTO_BLT                             = 0x1e\n\tIPPROTO_BRSATMON                        = 0x4c\n\tIPPROTO_CFTP                            = 0x3e\n\tIPPROTO_CHAOS                           = 0x10\n\tIPPROTO_CMTP                            = 0x26\n\tIPPROTO_CPHB                            = 0x49\n\tIPPROTO_CPNX                            = 0x48\n\tIPPROTO_DDP                             = 0x25\n\tIPPROTO_DGP                             = 0x56\n\tIPPROTO_DIVERT                          = 0xfe\n\tIPPROTO_DONE                            = 0x101\n\tIPPROTO_DSTOPTS                         = 0x3c\n\tIPPROTO_EGP                             = 0x8\n\tIPPROTO_EMCON                           = 0xe\n\tIPPROTO_ENCAP                           = 0x62\n\tIPPROTO_EON                             = 0x50\n\tIPPROTO_ESP                             = 0x32\n\tIPPROTO_ETHERIP                         = 0x61\n\tIPPROTO_FRAGMENT                        = 0x2c\n\tIPPROTO_GGP                             = 0x3\n\tIPPROTO_GMTP                            = 0x64\n\tIPPROTO_GRE                             = 0x2f\n\tIPPROTO_HELLO                           = 0x3f\n\tIPPROTO_HMP                             = 0x14\n\tIPPROTO_HOPOPTS                         = 0x0\n\tIPPROTO_ICMP                            = 0x1\n\tIPPROTO_ICMPV6                          = 0x3a\n\tIPPROTO_IDP                             = 0x16\n\tIPPROTO_IDPR                            = 0x23\n\tIPPROTO_IDRP                            = 0x2d\n\tIPPROTO_IGMP                            = 0x2\n\tIPPROTO_IGP                             = 0x55\n\tIPPROTO_IGRP                            = 0x58\n\tIPPROTO_IL                              = 0x28\n\tIPPROTO_INLSP                           = 0x34\n\tIPPROTO_INP                             = 0x20\n\tIPPROTO_IP                              = 0x0\n\tIPPROTO_IPCOMP                          = 0x6c\n\tIPPROTO_IPCV                            = 0x47\n\tIPPROTO_IPEIP                           = 0x5e\n\tIPPROTO_IPIP                            = 0x4\n\tIPPROTO_IPPC                            = 0x43\n\tIPPROTO_IPV4                            = 0x4\n\tIPPROTO_IPV6                            = 0x29\n\tIPPROTO_IRTP                            = 0x1c\n\tIPPROTO_KRYPTOLAN                       = 0x41\n\tIPPROTO_LARP                            = 0x5b\n\tIPPROTO_LEAF1                           = 0x19\n\tIPPROTO_LEAF2                           = 0x1a\n\tIPPROTO_MAX                             = 0x100\n\tIPPROTO_MAXID                           = 0x34\n\tIPPROTO_MEAS                            = 0x13\n\tIPPROTO_MHRP                            = 0x30\n\tIPPROTO_MICP                            = 0x5f\n\tIPPROTO_MTP                             = 0x5c\n\tIPPROTO_MUX                             = 0x12\n\tIPPROTO_ND                              = 0x4d\n\tIPPROTO_NHRP                            = 0x36\n\tIPPROTO_NONE                            = 0x3b\n\tIPPROTO_NSP                             = 0x1f\n\tIPPROTO_NVPII                           = 0xb\n\tIPPROTO_OSPFIGP                         = 0x59\n\tIPPROTO_PGM                             = 0x71\n\tIPPROTO_PIGP                            = 0x9\n\tIPPROTO_PIM                             = 0x67\n\tIPPROTO_PRM                             = 0x15\n\tIPPROTO_PUP                             = 0xc\n\tIPPROTO_PVP                             = 0x4b\n\tIPPROTO_RAW                             = 0xff\n\tIPPROTO_RCCMON                          = 0xa\n\tIPPROTO_RDP                             = 0x1b\n\tIPPROTO_ROUTING                         = 0x2b\n\tIPPROTO_RSVP                            = 0x2e\n\tIPPROTO_RVD                             = 0x42\n\tIPPROTO_SATEXPAK                        = 0x40\n\tIPPROTO_SATMON                          = 0x45\n\tIPPROTO_SCCSP                           = 0x60\n\tIPPROTO_SCTP                            = 0x84\n\tIPPROTO_SDRP                            = 0x2a\n\tIPPROTO_SEP                             = 0x21\n\tIPPROTO_SRPC                            = 0x5a\n\tIPPROTO_ST                              = 0x7\n\tIPPROTO_SVMTP                           = 0x52\n\tIPPROTO_SWIPE                           = 0x35\n\tIPPROTO_TCF                             = 0x57\n\tIPPROTO_TCP                             = 0x6\n\tIPPROTO_TP                              = 0x1d\n\tIPPROTO_TPXX                            = 0x27\n\tIPPROTO_TRUNK1                          = 0x17\n\tIPPROTO_TRUNK2                          = 0x18\n\tIPPROTO_TTP                             = 0x54\n\tIPPROTO_UDP                             = 0x11\n\tIPPROTO_VINES                           = 0x53\n\tIPPROTO_VISA                            = 0x46\n\tIPPROTO_VMTP                            = 0x51\n\tIPPROTO_WBEXPAK                         = 0x4f\n\tIPPROTO_WBMON                           = 0x4e\n\tIPPROTO_WSN                             = 0x4a\n\tIPPROTO_XNET                            = 0xf\n\tIPPROTO_XTP                             = 0x24\n\tIPV6_2292DSTOPTS                        = 0x17\n\tIPV6_2292HOPLIMIT                       = 0x14\n\tIPV6_2292HOPOPTS                        = 0x16\n\tIPV6_2292NEXTHOP                        = 0x15\n\tIPV6_2292PKTINFO                        = 0x13\n\tIPV6_2292PKTOPTIONS                     = 0x19\n\tIPV6_2292RTHDR                          = 0x18\n\tIPV6_3542DSTOPTS                        = 0x32\n\tIPV6_3542HOPLIMIT                       = 0x2f\n\tIPV6_3542HOPOPTS                        = 0x31\n\tIPV6_3542NEXTHOP                        = 0x30\n\tIPV6_3542PKTINFO                        = 0x2e\n\tIPV6_3542RTHDR                          = 0x33\n\tIPV6_ADDR_MC_FLAGS_PREFIX               = 0x20\n\tIPV6_ADDR_MC_FLAGS_TRANSIENT            = 0x10\n\tIPV6_ADDR_MC_FLAGS_UNICAST_BASED        = 0x30\n\tIPV6_AUTOFLOWLABEL                      = 0x3b\n\tIPV6_BINDV6ONLY                         = 0x1b\n\tIPV6_BOUND_IF                           = 0x7d\n\tIPV6_CHECKSUM                           = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS             = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP             = 0x1\n\tIPV6_DEFHLIM                            = 0x40\n\tIPV6_DONTFRAG                           = 0x3e\n\tIPV6_DSTOPTS                            = 0x32\n\tIPV6_FAITH                              = 0x1d\n\tIPV6_FLOWINFO_MASK                      = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK                     = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                      = 0x3000\n\tIPV6_FRAGTTL                            = 0x3c\n\tIPV6_FW_ADD                             = 0x1e\n\tIPV6_FW_DEL                             = 0x1f\n\tIPV6_FW_FLUSH                           = 0x20\n\tIPV6_FW_GET                             = 0x22\n\tIPV6_FW_ZERO                            = 0x21\n\tIPV6_HLIMDEC                            = 0x1\n\tIPV6_HOPLIMIT                           = 0x2f\n\tIPV6_HOPOPTS                            = 0x31\n\tIPV6_IPSEC_POLICY                       = 0x1c\n\tIPV6_JOIN_GROUP                         = 0xc\n\tIPV6_LEAVE_GROUP                        = 0xd\n\tIPV6_MAXHLIM                            = 0xff\n\tIPV6_MAXOPTHDR                          = 0x800\n\tIPV6_MAXPACKET                          = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER               = 0x200\n\tIPV6_MAX_MEMBERSHIPS                    = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER                = 0x80\n\tIPV6_MIN_MEMBERSHIPS                    = 0x1f\n\tIPV6_MMTU                               = 0x500\n\tIPV6_MSFILTER                           = 0x4a\n\tIPV6_MULTICAST_HOPS                     = 0xa\n\tIPV6_MULTICAST_IF                       = 0x9\n\tIPV6_MULTICAST_LOOP                     = 0xb\n\tIPV6_NEXTHOP                            = 0x30\n\tIPV6_PATHMTU                            = 0x2c\n\tIPV6_PKTINFO                            = 0x2e\n\tIPV6_PORTRANGE                          = 0xe\n\tIPV6_PORTRANGE_DEFAULT                  = 0x0\n\tIPV6_PORTRANGE_HIGH                     = 0x1\n\tIPV6_PORTRANGE_LOW                      = 0x2\n\tIPV6_PREFER_TEMPADDR                    = 0x3f\n\tIPV6_RECVDSTOPTS                        = 0x28\n\tIPV6_RECVHOPLIMIT                       = 0x25\n\tIPV6_RECVHOPOPTS                        = 0x27\n\tIPV6_RECVPATHMTU                        = 0x2b\n\tIPV6_RECVPKTINFO                        = 0x3d\n\tIPV6_RECVRTHDR                          = 0x26\n\tIPV6_RECVTCLASS                         = 0x23\n\tIPV6_RTHDR                              = 0x33\n\tIPV6_RTHDRDSTOPTS                       = 0x39\n\tIPV6_RTHDR_LOOSE                        = 0x0\n\tIPV6_RTHDR_STRICT                       = 0x1\n\tIPV6_RTHDR_TYPE_0                       = 0x0\n\tIPV6_SOCKOPT_RESERVED1                  = 0x3\n\tIPV6_TCLASS                             = 0x24\n\tIPV6_UNICAST_HOPS                       = 0x4\n\tIPV6_USE_MIN_MTU                        = 0x2a\n\tIPV6_V6ONLY                             = 0x1b\n\tIPV6_VERSION                            = 0x60\n\tIPV6_VERSION_MASK                       = 0xf0\n\tIP_ADD_MEMBERSHIP                       = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP                = 0x46\n\tIP_BLOCK_SOURCE                         = 0x48\n\tIP_BOUND_IF                             = 0x19\n\tIP_DEFAULT_MULTICAST_LOOP               = 0x1\n\tIP_DEFAULT_MULTICAST_TTL                = 0x1\n\tIP_DF                                   = 0x4000\n\tIP_DONTFRAG                             = 0x1c\n\tIP_DROP_MEMBERSHIP                      = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP               = 0x47\n\tIP_DUMMYNET_CONFIGURE                   = 0x3c\n\tIP_DUMMYNET_DEL                         = 0x3d\n\tIP_DUMMYNET_FLUSH                       = 0x3e\n\tIP_DUMMYNET_GET                         = 0x40\n\tIP_FAITH                                = 0x16\n\tIP_FW_ADD                               = 0x28\n\tIP_FW_DEL                               = 0x29\n\tIP_FW_FLUSH                             = 0x2a\n\tIP_FW_GET                               = 0x2c\n\tIP_FW_RESETLOG                          = 0x2d\n\tIP_FW_ZERO                              = 0x2b\n\tIP_HDRINCL                              = 0x2\n\tIP_IPSEC_POLICY                         = 0x15\n\tIP_MAXPACKET                            = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER                 = 0x200\n\tIP_MAX_MEMBERSHIPS                      = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER                 = 0x80\n\tIP_MAX_SOCK_SRC_FILTER                  = 0x80\n\tIP_MF                                   = 0x2000\n\tIP_MIN_MEMBERSHIPS                      = 0x1f\n\tIP_MSFILTER                             = 0x4a\n\tIP_MSS                                  = 0x240\n\tIP_MULTICAST_IF                         = 0x9\n\tIP_MULTICAST_IFINDEX                    = 0x42\n\tIP_MULTICAST_LOOP                       = 0xb\n\tIP_MULTICAST_TTL                        = 0xa\n\tIP_MULTICAST_VIF                        = 0xe\n\tIP_NAT__XXX                             = 0x37\n\tIP_OFFMASK                              = 0x1fff\n\tIP_OLD_FW_ADD                           = 0x32\n\tIP_OLD_FW_DEL                           = 0x33\n\tIP_OLD_FW_FLUSH                         = 0x34\n\tIP_OLD_FW_GET                           = 0x36\n\tIP_OLD_FW_RESETLOG                      = 0x38\n\tIP_OLD_FW_ZERO                          = 0x35\n\tIP_OPTIONS                              = 0x1\n\tIP_PKTINFO                              = 0x1a\n\tIP_PORTRANGE                            = 0x13\n\tIP_PORTRANGE_DEFAULT                    = 0x0\n\tIP_PORTRANGE_HIGH                       = 0x1\n\tIP_PORTRANGE_LOW                        = 0x2\n\tIP_RECVDSTADDR                          = 0x7\n\tIP_RECVIF                               = 0x14\n\tIP_RECVOPTS                             = 0x5\n\tIP_RECVPKTINFO                          = 0x1a\n\tIP_RECVRETOPTS                          = 0x6\n\tIP_RECVTOS                              = 0x1b\n\tIP_RECVTTL                              = 0x18\n\tIP_RETOPTS                              = 0x8\n\tIP_RF                                   = 0x8000\n\tIP_RSVP_OFF                             = 0x10\n\tIP_RSVP_ON                              = 0xf\n\tIP_RSVP_VIF_OFF                         = 0x12\n\tIP_RSVP_VIF_ON                          = 0x11\n\tIP_STRIPHDR                             = 0x17\n\tIP_TOS                                  = 0x3\n\tIP_TRAFFIC_MGT_BACKGROUND               = 0x41\n\tIP_TTL                                  = 0x4\n\tIP_UNBLOCK_SOURCE                       = 0x49\n\tISIG                                    = 0x80\n\tISTRIP                                  = 0x20\n\tIUTF8                                   = 0x4000\n\tIXANY                                   = 0x800\n\tIXOFF                                   = 0x400\n\tIXON                                    = 0x200\n\tKERN_HOSTNAME                           = 0xa\n\tKERN_OSRELEASE                          = 0x2\n\tKERN_OSTYPE                             = 0x1\n\tKERN_VERSION                            = 0x4\n\tLOCAL_PEERCRED                          = 0x1\n\tLOCAL_PEEREPID                          = 0x3\n\tLOCAL_PEEREUUID                         = 0x5\n\tLOCAL_PEERPID                           = 0x2\n\tLOCAL_PEERTOKEN                         = 0x6\n\tLOCAL_PEERUUID                          = 0x4\n\tLOCK_EX                                 = 0x2\n\tLOCK_NB                                 = 0x4\n\tLOCK_SH                                 = 0x1\n\tLOCK_UN                                 = 0x8\n\tMADV_CAN_REUSE                          = 0x9\n\tMADV_DONTNEED                           = 0x4\n\tMADV_FREE                               = 0x5\n\tMADV_FREE_REUSABLE                      = 0x7\n\tMADV_FREE_REUSE                         = 0x8\n\tMADV_NORMAL                             = 0x0\n\tMADV_PAGEOUT                            = 0xa\n\tMADV_RANDOM                             = 0x1\n\tMADV_SEQUENTIAL                         = 0x2\n\tMADV_WILLNEED                           = 0x3\n\tMADV_ZERO_WIRED_PAGES                   = 0x6\n\tMAP_32BIT                               = 0x8000\n\tMAP_ANON                                = 0x1000\n\tMAP_ANONYMOUS                           = 0x1000\n\tMAP_COPY                                = 0x2\n\tMAP_FILE                                = 0x0\n\tMAP_FIXED                               = 0x10\n\tMAP_HASSEMAPHORE                        = 0x200\n\tMAP_JIT                                 = 0x800\n\tMAP_NOCACHE                             = 0x400\n\tMAP_NOEXTEND                            = 0x100\n\tMAP_NORESERVE                           = 0x40\n\tMAP_PRIVATE                             = 0x2\n\tMAP_RENAME                              = 0x20\n\tMAP_RESERVED0080                        = 0x80\n\tMAP_RESILIENT_CODESIGN                  = 0x2000\n\tMAP_RESILIENT_MEDIA                     = 0x4000\n\tMAP_SHARED                              = 0x1\n\tMAP_TRANSLATED_ALLOW_EXECUTE            = 0x20000\n\tMAP_UNIX03                              = 0x40000\n\tMCAST_BLOCK_SOURCE                      = 0x54\n\tMCAST_EXCLUDE                           = 0x2\n\tMCAST_INCLUDE                           = 0x1\n\tMCAST_JOIN_GROUP                        = 0x50\n\tMCAST_JOIN_SOURCE_GROUP                 = 0x52\n\tMCAST_LEAVE_GROUP                       = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP                = 0x53\n\tMCAST_UNBLOCK_SOURCE                    = 0x55\n\tMCAST_UNDEFINED                         = 0x0\n\tMCL_CURRENT                             = 0x1\n\tMCL_FUTURE                              = 0x2\n\tMNT_ASYNC                               = 0x40\n\tMNT_AUTOMOUNTED                         = 0x400000\n\tMNT_CMDFLAGS                            = 0xf0000\n\tMNT_CPROTECT                            = 0x80\n\tMNT_DEFWRITE                            = 0x2000000\n\tMNT_DONTBROWSE                          = 0x100000\n\tMNT_DOVOLFS                             = 0x8000\n\tMNT_DWAIT                               = 0x4\n\tMNT_EXPORTED                            = 0x100\n\tMNT_EXT_ROOT_DATA_VOL                   = 0x1\n\tMNT_FORCE                               = 0x80000\n\tMNT_IGNORE_OWNERSHIP                    = 0x200000\n\tMNT_JOURNALED                           = 0x800000\n\tMNT_LOCAL                               = 0x1000\n\tMNT_MULTILABEL                          = 0x4000000\n\tMNT_NOATIME                             = 0x10000000\n\tMNT_NOBLOCK                             = 0x20000\n\tMNT_NODEV                               = 0x10\n\tMNT_NOEXEC                              = 0x4\n\tMNT_NOSUID                              = 0x8\n\tMNT_NOUSERXATTR                         = 0x1000000\n\tMNT_NOWAIT                              = 0x2\n\tMNT_QUARANTINE                          = 0x400\n\tMNT_QUOTA                               = 0x2000\n\tMNT_RDONLY                              = 0x1\n\tMNT_RELOAD                              = 0x40000\n\tMNT_REMOVABLE                           = 0x200\n\tMNT_ROOTFS                              = 0x4000\n\tMNT_SNAPSHOT                            = 0x40000000\n\tMNT_STRICTATIME                         = 0x80000000\n\tMNT_SYNCHRONOUS                         = 0x2\n\tMNT_UNION                               = 0x20\n\tMNT_UNKNOWNPERMISSIONS                  = 0x200000\n\tMNT_UPDATE                              = 0x10000\n\tMNT_VISFLAGMASK                         = 0xd7f0f7ff\n\tMNT_WAIT                                = 0x1\n\tMSG_CTRUNC                              = 0x20\n\tMSG_DONTROUTE                           = 0x4\n\tMSG_DONTWAIT                            = 0x80\n\tMSG_EOF                                 = 0x100\n\tMSG_EOR                                 = 0x8\n\tMSG_FLUSH                               = 0x400\n\tMSG_HAVEMORE                            = 0x2000\n\tMSG_HOLD                                = 0x800\n\tMSG_NEEDSA                              = 0x10000\n\tMSG_NOSIGNAL                            = 0x80000\n\tMSG_OOB                                 = 0x1\n\tMSG_PEEK                                = 0x2\n\tMSG_RCVMORE                             = 0x4000\n\tMSG_SEND                                = 0x1000\n\tMSG_TRUNC                               = 0x10\n\tMSG_WAITALL                             = 0x40\n\tMSG_WAITSTREAM                          = 0x200\n\tMS_ASYNC                                = 0x1\n\tMS_DEACTIVATE                           = 0x8\n\tMS_INVALIDATE                           = 0x2\n\tMS_KILLPAGES                            = 0x4\n\tMS_SYNC                                 = 0x10\n\tNAME_MAX                                = 0xff\n\tNET_RT_DUMP                             = 0x1\n\tNET_RT_DUMP2                            = 0x7\n\tNET_RT_FLAGS                            = 0x2\n\tNET_RT_FLAGS_PRIV                       = 0xa\n\tNET_RT_IFLIST                           = 0x3\n\tNET_RT_IFLIST2                          = 0x6\n\tNET_RT_MAXID                            = 0xb\n\tNET_RT_STAT                             = 0x4\n\tNET_RT_TRASH                            = 0x5\n\tNFDBITS                                 = 0x20\n\tNL0                                     = 0x0\n\tNL1                                     = 0x100\n\tNL2                                     = 0x200\n\tNL3                                     = 0x300\n\tNLDLY                                   = 0x300\n\tNOFLSH                                  = 0x80000000\n\tNOKERNINFO                              = 0x2000000\n\tNOTE_ABSOLUTE                           = 0x8\n\tNOTE_ATTRIB                             = 0x8\n\tNOTE_BACKGROUND                         = 0x40\n\tNOTE_CHILD                              = 0x4\n\tNOTE_CRITICAL                           = 0x20\n\tNOTE_DELETE                             = 0x1\n\tNOTE_EXEC                               = 0x20000000\n\tNOTE_EXIT                               = 0x80000000\n\tNOTE_EXITSTATUS                         = 0x4000000\n\tNOTE_EXIT_CSERROR                       = 0x40000\n\tNOTE_EXIT_DECRYPTFAIL                   = 0x10000\n\tNOTE_EXIT_DETAIL                        = 0x2000000\n\tNOTE_EXIT_DETAIL_MASK                   = 0x70000\n\tNOTE_EXIT_MEMORY                        = 0x20000\n\tNOTE_EXIT_REPARENTED                    = 0x80000\n\tNOTE_EXTEND                             = 0x4\n\tNOTE_FFAND                              = 0x40000000\n\tNOTE_FFCOPY                             = 0xc0000000\n\tNOTE_FFCTRLMASK                         = 0xc0000000\n\tNOTE_FFLAGSMASK                         = 0xffffff\n\tNOTE_FFNOP                              = 0x0\n\tNOTE_FFOR                               = 0x80000000\n\tNOTE_FORK                               = 0x40000000\n\tNOTE_FUNLOCK                            = 0x100\n\tNOTE_LEEWAY                             = 0x10\n\tNOTE_LINK                               = 0x10\n\tNOTE_LOWAT                              = 0x1\n\tNOTE_MACHTIME                           = 0x100\n\tNOTE_MACH_CONTINUOUS_TIME               = 0x80\n\tNOTE_NONE                               = 0x80\n\tNOTE_NSECONDS                           = 0x4\n\tNOTE_OOB                                = 0x2\n\tNOTE_PCTRLMASK                          = -0x100000\n\tNOTE_PDATAMASK                          = 0xfffff\n\tNOTE_REAP                               = 0x10000000\n\tNOTE_RENAME                             = 0x20\n\tNOTE_REVOKE                             = 0x40\n\tNOTE_SECONDS                            = 0x1\n\tNOTE_SIGNAL                             = 0x8000000\n\tNOTE_TRACK                              = 0x1\n\tNOTE_TRACKERR                           = 0x2\n\tNOTE_TRIGGER                            = 0x1000000\n\tNOTE_USECONDS                           = 0x2\n\tNOTE_VM_ERROR                           = 0x10000000\n\tNOTE_VM_PRESSURE                        = 0x80000000\n\tNOTE_VM_PRESSURE_SUDDEN_TERMINATE       = 0x20000000\n\tNOTE_VM_PRESSURE_TERMINATE              = 0x40000000\n\tNOTE_WRITE                              = 0x2\n\tOCRNL                                   = 0x10\n\tOFDEL                                   = 0x20000\n\tOFILL                                   = 0x80\n\tONLCR                                   = 0x2\n\tONLRET                                  = 0x40\n\tONOCR                                   = 0x20\n\tONOEOT                                  = 0x8\n\tOPOST                                   = 0x1\n\tOXTABS                                  = 0x4\n\tO_ACCMODE                               = 0x3\n\tO_ALERT                                 = 0x20000000\n\tO_APPEND                                = 0x8\n\tO_ASYNC                                 = 0x40\n\tO_CLOEXEC                               = 0x1000000\n\tO_CREAT                                 = 0x200\n\tO_DIRECTORY                             = 0x100000\n\tO_DP_GETRAWENCRYPTED                    = 0x1\n\tO_DP_GETRAWUNENCRYPTED                  = 0x2\n\tO_DSYNC                                 = 0x400000\n\tO_EVTONLY                               = 0x8000\n\tO_EXCL                                  = 0x800\n\tO_EXLOCK                                = 0x20\n\tO_FSYNC                                 = 0x80\n\tO_NDELAY                                = 0x4\n\tO_NOCTTY                                = 0x20000\n\tO_NOFOLLOW                              = 0x100\n\tO_NOFOLLOW_ANY                          = 0x20000000\n\tO_NONBLOCK                              = 0x4\n\tO_POPUP                                 = 0x80000000\n\tO_RDONLY                                = 0x0\n\tO_RDWR                                  = 0x2\n\tO_SHLOCK                                = 0x10\n\tO_SYMLINK                               = 0x200000\n\tO_SYNC                                  = 0x80\n\tO_TRUNC                                 = 0x400\n\tO_WRONLY                                = 0x1\n\tPARENB                                  = 0x1000\n\tPARMRK                                  = 0x8\n\tPARODD                                  = 0x2000\n\tPENDIN                                  = 0x20000000\n\tPRIO_PGRP                               = 0x1\n\tPRIO_PROCESS                            = 0x0\n\tPRIO_USER                               = 0x2\n\tPROT_EXEC                               = 0x4\n\tPROT_NONE                               = 0x0\n\tPROT_READ                               = 0x1\n\tPROT_WRITE                              = 0x2\n\tPT_ATTACH                               = 0xa\n\tPT_ATTACHEXC                            = 0xe\n\tPT_CONTINUE                             = 0x7\n\tPT_DENY_ATTACH                          = 0x1f\n\tPT_DETACH                               = 0xb\n\tPT_FIRSTMACH                            = 0x20\n\tPT_FORCEQUOTA                           = 0x1e\n\tPT_KILL                                 = 0x8\n\tPT_READ_D                               = 0x2\n\tPT_READ_I                               = 0x1\n\tPT_READ_U                               = 0x3\n\tPT_SIGEXC                               = 0xc\n\tPT_STEP                                 = 0x9\n\tPT_THUPDATE                             = 0xd\n\tPT_TRACE_ME                             = 0x0\n\tPT_WRITE_D                              = 0x5\n\tPT_WRITE_I                              = 0x4\n\tPT_WRITE_U                              = 0x6\n\tRENAME_EXCL                             = 0x4\n\tRENAME_NOFOLLOW_ANY                     = 0x10\n\tRENAME_RESERVED1                        = 0x8\n\tRENAME_SECLUDE                          = 0x1\n\tRENAME_SWAP                             = 0x2\n\tRLIMIT_AS                               = 0x5\n\tRLIMIT_CORE                             = 0x4\n\tRLIMIT_CPU                              = 0x0\n\tRLIMIT_CPU_USAGE_MONITOR                = 0x2\n\tRLIMIT_DATA                             = 0x2\n\tRLIMIT_FSIZE                            = 0x1\n\tRLIMIT_MEMLOCK                          = 0x6\n\tRLIMIT_NOFILE                           = 0x8\n\tRLIMIT_NPROC                            = 0x7\n\tRLIMIT_RSS                              = 0x5\n\tRLIMIT_STACK                            = 0x3\n\tRLIM_INFINITY                           = 0x7fffffffffffffff\n\tRTAX_AUTHOR                             = 0x6\n\tRTAX_BRD                                = 0x7\n\tRTAX_DST                                = 0x0\n\tRTAX_GATEWAY                            = 0x1\n\tRTAX_GENMASK                            = 0x3\n\tRTAX_IFA                                = 0x5\n\tRTAX_IFP                                = 0x4\n\tRTAX_MAX                                = 0x8\n\tRTAX_NETMASK                            = 0x2\n\tRTA_AUTHOR                              = 0x40\n\tRTA_BRD                                 = 0x80\n\tRTA_DST                                 = 0x1\n\tRTA_GATEWAY                             = 0x2\n\tRTA_GENMASK                             = 0x8\n\tRTA_IFA                                 = 0x20\n\tRTA_IFP                                 = 0x10\n\tRTA_NETMASK                             = 0x4\n\tRTF_BLACKHOLE                           = 0x1000\n\tRTF_BROADCAST                           = 0x400000\n\tRTF_CLONING                             = 0x100\n\tRTF_CONDEMNED                           = 0x2000000\n\tRTF_DEAD                                = 0x20000000\n\tRTF_DELCLONE                            = 0x80\n\tRTF_DONE                                = 0x40\n\tRTF_DYNAMIC                             = 0x10\n\tRTF_GATEWAY                             = 0x2\n\tRTF_GLOBAL                              = 0x40000000\n\tRTF_HOST                                = 0x4\n\tRTF_IFREF                               = 0x4000000\n\tRTF_IFSCOPE                             = 0x1000000\n\tRTF_LLDATA                              = 0x400\n\tRTF_LLINFO                              = 0x400\n\tRTF_LOCAL                               = 0x200000\n\tRTF_MODIFIED                            = 0x20\n\tRTF_MULTICAST                           = 0x800000\n\tRTF_NOIFREF                             = 0x2000\n\tRTF_PINNED                              = 0x100000\n\tRTF_PRCLONING                           = 0x10000\n\tRTF_PROTO1                              = 0x8000\n\tRTF_PROTO2                              = 0x4000\n\tRTF_PROTO3                              = 0x40000\n\tRTF_PROXY                               = 0x8000000\n\tRTF_REJECT                              = 0x8\n\tRTF_ROUTER                              = 0x10000000\n\tRTF_STATIC                              = 0x800\n\tRTF_UP                                  = 0x1\n\tRTF_WASCLONED                           = 0x20000\n\tRTF_XRESOLVE                            = 0x200\n\tRTM_ADD                                 = 0x1\n\tRTM_CHANGE                              = 0x3\n\tRTM_DELADDR                             = 0xd\n\tRTM_DELETE                              = 0x2\n\tRTM_DELMADDR                            = 0x10\n\tRTM_GET                                 = 0x4\n\tRTM_GET2                                = 0x14\n\tRTM_IFINFO                              = 0xe\n\tRTM_IFINFO2                             = 0x12\n\tRTM_LOCK                                = 0x8\n\tRTM_LOSING                              = 0x5\n\tRTM_MISS                                = 0x7\n\tRTM_NEWADDR                             = 0xc\n\tRTM_NEWMADDR                            = 0xf\n\tRTM_NEWMADDR2                           = 0x13\n\tRTM_OLDADD                              = 0x9\n\tRTM_OLDDEL                              = 0xa\n\tRTM_REDIRECT                            = 0x6\n\tRTM_RESOLVE                             = 0xb\n\tRTM_RTTUNIT                             = 0xf4240\n\tRTM_VERSION                             = 0x5\n\tRTV_EXPIRE                              = 0x4\n\tRTV_HOPCOUNT                            = 0x2\n\tRTV_MTU                                 = 0x1\n\tRTV_RPIPE                               = 0x8\n\tRTV_RTT                                 = 0x40\n\tRTV_RTTVAR                              = 0x80\n\tRTV_SPIPE                               = 0x10\n\tRTV_SSTHRESH                            = 0x20\n\tRUSAGE_CHILDREN                         = -0x1\n\tRUSAGE_SELF                             = 0x0\n\tSAE_ASSOCID_ALL                         = 0xffffffff\n\tSAE_ASSOCID_ANY                         = 0x0\n\tSAE_CONNID_ALL                          = 0xffffffff\n\tSAE_CONNID_ANY                          = 0x0\n\tSCM_CREDS                               = 0x3\n\tSCM_RIGHTS                              = 0x1\n\tSCM_TIMESTAMP                           = 0x2\n\tSCM_TIMESTAMP_MONOTONIC                 = 0x4\n\tSEEK_CUR                                = 0x1\n\tSEEK_DATA                               = 0x4\n\tSEEK_END                                = 0x2\n\tSEEK_HOLE                               = 0x3\n\tSEEK_SET                                = 0x0\n\tSF_APPEND                               = 0x40000\n\tSF_ARCHIVED                             = 0x10000\n\tSF_DATALESS                             = 0x40000000\n\tSF_FIRMLINK                             = 0x800000\n\tSF_IMMUTABLE                            = 0x20000\n\tSF_NOUNLINK                             = 0x100000\n\tSF_RESTRICTED                           = 0x80000\n\tSF_SETTABLE                             = 0x3fff0000\n\tSF_SUPPORTED                            = 0x9f0000\n\tSF_SYNTHETIC                            = 0xc0000000\n\tSHUT_RD                                 = 0x0\n\tSHUT_RDWR                               = 0x2\n\tSHUT_WR                                 = 0x1\n\tSIOCADDMULTI                            = 0x80206931\n\tSIOCAIFADDR                             = 0x8040691a\n\tSIOCARPIPLL                             = 0xc0206928\n\tSIOCATMARK                              = 0x40047307\n\tSIOCAUTOADDR                            = 0xc0206926\n\tSIOCAUTONETMASK                         = 0x80206927\n\tSIOCDELMULTI                            = 0x80206932\n\tSIOCDIFADDR                             = 0x80206919\n\tSIOCDIFPHYADDR                          = 0x80206941\n\tSIOCGDRVSPEC                            = 0xc028697b\n\tSIOCGETVLAN                             = 0xc020697f\n\tSIOCGHIWAT                              = 0x40047301\n\tSIOCGIF6LOWPAN                          = 0xc02069c5\n\tSIOCGIFADDR                             = 0xc0206921\n\tSIOCGIFALTMTU                           = 0xc0206948\n\tSIOCGIFASYNCMAP                         = 0xc020697c\n\tSIOCGIFBOND                             = 0xc0206947\n\tSIOCGIFBRDADDR                          = 0xc0206923\n\tSIOCGIFCAP                              = 0xc020695b\n\tSIOCGIFCONF                             = 0xc00c6924\n\tSIOCGIFDEVMTU                           = 0xc0206944\n\tSIOCGIFDSTADDR                          = 0xc0206922\n\tSIOCGIFFLAGS                            = 0xc0206911\n\tSIOCGIFFUNCTIONALTYPE                   = 0xc02069ad\n\tSIOCGIFGENERIC                          = 0xc020693a\n\tSIOCGIFKPI                              = 0xc0206987\n\tSIOCGIFMAC                              = 0xc0206982\n\tSIOCGIFMEDIA                            = 0xc02c6938\n\tSIOCGIFMETRIC                           = 0xc0206917\n\tSIOCGIFMTU                              = 0xc0206933\n\tSIOCGIFNETMASK                          = 0xc0206925\n\tSIOCGIFPDSTADDR                         = 0xc0206940\n\tSIOCGIFPHYS                             = 0xc0206935\n\tSIOCGIFPSRCADDR                         = 0xc020693f\n\tSIOCGIFSTATUS                           = 0xc331693d\n\tSIOCGIFVLAN                             = 0xc020697f\n\tSIOCGIFWAKEFLAGS                        = 0xc0206988\n\tSIOCGIFXMEDIA                           = 0xc02c6948\n\tSIOCGLOWAT                              = 0x40047303\n\tSIOCGPGRP                               = 0x40047309\n\tSIOCIFCREATE                            = 0xc0206978\n\tSIOCIFCREATE2                           = 0xc020697a\n\tSIOCIFDESTROY                           = 0x80206979\n\tSIOCIFGCLONERS                          = 0xc0106981\n\tSIOCRSLVMULTI                           = 0xc010693b\n\tSIOCSDRVSPEC                            = 0x8028697b\n\tSIOCSETVLAN                             = 0x8020697e\n\tSIOCSHIWAT                              = 0x80047300\n\tSIOCSIF6LOWPAN                          = 0x802069c4\n\tSIOCSIFADDR                             = 0x8020690c\n\tSIOCSIFALTMTU                           = 0x80206945\n\tSIOCSIFASYNCMAP                         = 0x8020697d\n\tSIOCSIFBOND                             = 0x80206946\n\tSIOCSIFBRDADDR                          = 0x80206913\n\tSIOCSIFCAP                              = 0x8020695a\n\tSIOCSIFDSTADDR                          = 0x8020690e\n\tSIOCSIFFLAGS                            = 0x80206910\n\tSIOCSIFGENERIC                          = 0x80206939\n\tSIOCSIFKPI                              = 0x80206986\n\tSIOCSIFLLADDR                           = 0x8020693c\n\tSIOCSIFMAC                              = 0x80206983\n\tSIOCSIFMEDIA                            = 0xc0206937\n\tSIOCSIFMETRIC                           = 0x80206918\n\tSIOCSIFMTU                              = 0x80206934\n\tSIOCSIFNETMASK                          = 0x80206916\n\tSIOCSIFPHYADDR                          = 0x8040693e\n\tSIOCSIFPHYS                             = 0x80206936\n\tSIOCSIFVLAN                             = 0x8020697e\n\tSIOCSLOWAT                              = 0x80047302\n\tSIOCSPGRP                               = 0x80047308\n\tSOCK_DGRAM                              = 0x2\n\tSOCK_MAXADDRLEN                         = 0xff\n\tSOCK_RAW                                = 0x3\n\tSOCK_RDM                                = 0x4\n\tSOCK_SEQPACKET                          = 0x5\n\tSOCK_STREAM                             = 0x1\n\tSOL_LOCAL                               = 0x0\n\tSOL_SOCKET                              = 0xffff\n\tSOMAXCONN                               = 0x80\n\tSO_ACCEPTCONN                           = 0x2\n\tSO_BROADCAST                            = 0x20\n\tSO_DEBUG                                = 0x1\n\tSO_DONTROUTE                            = 0x10\n\tSO_DONTTRUNC                            = 0x2000\n\tSO_ERROR                                = 0x1007\n\tSO_KEEPALIVE                            = 0x8\n\tSO_LABEL                                = 0x1010\n\tSO_LINGER                               = 0x80\n\tSO_LINGER_SEC                           = 0x1080\n\tSO_NETSVC_MARKING_LEVEL                 = 0x1119\n\tSO_NET_SERVICE_TYPE                     = 0x1116\n\tSO_NKE                                  = 0x1021\n\tSO_NOADDRERR                            = 0x1023\n\tSO_NOSIGPIPE                            = 0x1022\n\tSO_NOTIFYCONFLICT                       = 0x1026\n\tSO_NP_EXTENSIONS                        = 0x1083\n\tSO_NREAD                                = 0x1020\n\tSO_NUMRCVPKT                            = 0x1112\n\tSO_NWRITE                               = 0x1024\n\tSO_OOBINLINE                            = 0x100\n\tSO_PEERLABEL                            = 0x1011\n\tSO_RANDOMPORT                           = 0x1082\n\tSO_RCVBUF                               = 0x1002\n\tSO_RCVLOWAT                             = 0x1004\n\tSO_RCVTIMEO                             = 0x1006\n\tSO_REUSEADDR                            = 0x4\n\tSO_REUSEPORT                            = 0x200\n\tSO_REUSESHAREUID                        = 0x1025\n\tSO_SNDBUF                               = 0x1001\n\tSO_SNDLOWAT                             = 0x1003\n\tSO_SNDTIMEO                             = 0x1005\n\tSO_TIMESTAMP                            = 0x400\n\tSO_TIMESTAMP_MONOTONIC                  = 0x800\n\tSO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = 0x1\n\tSO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = 0x4\n\tSO_TRACKER_ATTRIBUTE_FLAGS_TRACKER      = 0x2\n\tSO_TRACKER_TRANSPARENCY_VERSION         = 0x3\n\tSO_TYPE                                 = 0x1008\n\tSO_UPCALLCLOSEWAIT                      = 0x1027\n\tSO_USELOOPBACK                          = 0x40\n\tSO_WANTMORE                             = 0x4000\n\tSO_WANTOOBFLAG                          = 0x8000\n\tS_IEXEC                                 = 0x40\n\tS_IFBLK                                 = 0x6000\n\tS_IFCHR                                 = 0x2000\n\tS_IFDIR                                 = 0x4000\n\tS_IFIFO                                 = 0x1000\n\tS_IFLNK                                 = 0xa000\n\tS_IFMT                                  = 0xf000\n\tS_IFREG                                 = 0x8000\n\tS_IFSOCK                                = 0xc000\n\tS_IFWHT                                 = 0xe000\n\tS_IREAD                                 = 0x100\n\tS_IRGRP                                 = 0x20\n\tS_IROTH                                 = 0x4\n\tS_IRUSR                                 = 0x100\n\tS_IRWXG                                 = 0x38\n\tS_IRWXO                                 = 0x7\n\tS_IRWXU                                 = 0x1c0\n\tS_ISGID                                 = 0x400\n\tS_ISTXT                                 = 0x200\n\tS_ISUID                                 = 0x800\n\tS_ISVTX                                 = 0x200\n\tS_IWGRP                                 = 0x10\n\tS_IWOTH                                 = 0x2\n\tS_IWRITE                                = 0x80\n\tS_IWUSR                                 = 0x80\n\tS_IXGRP                                 = 0x8\n\tS_IXOTH                                 = 0x1\n\tS_IXUSR                                 = 0x40\n\tTAB0                                    = 0x0\n\tTAB1                                    = 0x400\n\tTAB2                                    = 0x800\n\tTAB3                                    = 0x4\n\tTABDLY                                  = 0xc04\n\tTCIFLUSH                                = 0x1\n\tTCIOFF                                  = 0x3\n\tTCIOFLUSH                               = 0x3\n\tTCION                                   = 0x4\n\tTCOFLUSH                                = 0x2\n\tTCOOFF                                  = 0x1\n\tTCOON                                   = 0x2\n\tTCPOPT_CC                               = 0xb\n\tTCPOPT_CCECHO                           = 0xd\n\tTCPOPT_CCNEW                            = 0xc\n\tTCPOPT_EOL                              = 0x0\n\tTCPOPT_FASTOPEN                         = 0x22\n\tTCPOPT_MAXSEG                           = 0x2\n\tTCPOPT_NOP                              = 0x1\n\tTCPOPT_SACK                             = 0x5\n\tTCPOPT_SACK_HDR                         = 0x1010500\n\tTCPOPT_SACK_PERMITTED                   = 0x4\n\tTCPOPT_SACK_PERMIT_HDR                  = 0x1010402\n\tTCPOPT_SIGNATURE                        = 0x13\n\tTCPOPT_TIMESTAMP                        = 0x8\n\tTCPOPT_TSTAMP_HDR                       = 0x101080a\n\tTCPOPT_WINDOW                           = 0x3\n\tTCP_CONNECTIONTIMEOUT                   = 0x20\n\tTCP_CONNECTION_INFO                     = 0x106\n\tTCP_ENABLE_ECN                          = 0x104\n\tTCP_FASTOPEN                            = 0x105\n\tTCP_KEEPALIVE                           = 0x10\n\tTCP_KEEPCNT                             = 0x102\n\tTCP_KEEPINTVL                           = 0x101\n\tTCP_MAXHLEN                             = 0x3c\n\tTCP_MAXOLEN                             = 0x28\n\tTCP_MAXSEG                              = 0x2\n\tTCP_MAXWIN                              = 0xffff\n\tTCP_MAX_SACK                            = 0x4\n\tTCP_MAX_WINSHIFT                        = 0xe\n\tTCP_MINMSS                              = 0xd8\n\tTCP_MSS                                 = 0x200\n\tTCP_NODELAY                             = 0x1\n\tTCP_NOOPT                               = 0x8\n\tTCP_NOPUSH                              = 0x4\n\tTCP_NOTSENT_LOWAT                       = 0x201\n\tTCP_RXT_CONNDROPTIME                    = 0x80\n\tTCP_RXT_FINDROP                         = 0x100\n\tTCP_SENDMOREACKS                        = 0x103\n\tTCSAFLUSH                               = 0x2\n\tTIOCCBRK                                = 0x2000747a\n\tTIOCCDTR                                = 0x20007478\n\tTIOCCONS                                = 0x80047462\n\tTIOCDCDTIMESTAMP                        = 0x40107458\n\tTIOCDRAIN                               = 0x2000745e\n\tTIOCDSIMICROCODE                        = 0x20007455\n\tTIOCEXCL                                = 0x2000740d\n\tTIOCEXT                                 = 0x80047460\n\tTIOCFLUSH                               = 0x80047410\n\tTIOCGDRAINWAIT                          = 0x40047456\n\tTIOCGETA                                = 0x40487413\n\tTIOCGETD                                = 0x4004741a\n\tTIOCGPGRP                               = 0x40047477\n\tTIOCGWINSZ                              = 0x40087468\n\tTIOCIXOFF                               = 0x20007480\n\tTIOCIXON                                = 0x20007481\n\tTIOCMBIC                                = 0x8004746b\n\tTIOCMBIS                                = 0x8004746c\n\tTIOCMGDTRWAIT                           = 0x4004745a\n\tTIOCMGET                                = 0x4004746a\n\tTIOCMODG                                = 0x40047403\n\tTIOCMODS                                = 0x80047404\n\tTIOCMSDTRWAIT                           = 0x8004745b\n\tTIOCMSET                                = 0x8004746d\n\tTIOCM_CAR                               = 0x40\n\tTIOCM_CD                                = 0x40\n\tTIOCM_CTS                               = 0x20\n\tTIOCM_DSR                               = 0x100\n\tTIOCM_DTR                               = 0x2\n\tTIOCM_LE                                = 0x1\n\tTIOCM_RI                                = 0x80\n\tTIOCM_RNG                               = 0x80\n\tTIOCM_RTS                               = 0x4\n\tTIOCM_SR                                = 0x10\n\tTIOCM_ST                                = 0x8\n\tTIOCNOTTY                               = 0x20007471\n\tTIOCNXCL                                = 0x2000740e\n\tTIOCOUTQ                                = 0x40047473\n\tTIOCPKT                                 = 0x80047470\n\tTIOCPKT_DATA                            = 0x0\n\tTIOCPKT_DOSTOP                          = 0x20\n\tTIOCPKT_FLUSHREAD                       = 0x1\n\tTIOCPKT_FLUSHWRITE                      = 0x2\n\tTIOCPKT_IOCTL                           = 0x40\n\tTIOCPKT_NOSTOP                          = 0x10\n\tTIOCPKT_START                           = 0x8\n\tTIOCPKT_STOP                            = 0x4\n\tTIOCPTYGNAME                            = 0x40807453\n\tTIOCPTYGRANT                            = 0x20007454\n\tTIOCPTYUNLK                             = 0x20007452\n\tTIOCREMOTE                              = 0x80047469\n\tTIOCSBRK                                = 0x2000747b\n\tTIOCSCONS                               = 0x20007463\n\tTIOCSCTTY                               = 0x20007461\n\tTIOCSDRAINWAIT                          = 0x80047457\n\tTIOCSDTR                                = 0x20007479\n\tTIOCSETA                                = 0x80487414\n\tTIOCSETAF                               = 0x80487416\n\tTIOCSETAW                               = 0x80487415\n\tTIOCSETD                                = 0x8004741b\n\tTIOCSIG                                 = 0x2000745f\n\tTIOCSPGRP                               = 0x80047476\n\tTIOCSTART                               = 0x2000746e\n\tTIOCSTAT                                = 0x20007465\n\tTIOCSTI                                 = 0x80017472\n\tTIOCSTOP                                = 0x2000746f\n\tTIOCSWINSZ                              = 0x80087467\n\tTIOCTIMESTAMP                           = 0x40107459\n\tTIOCUCNTL                               = 0x80047466\n\tTOSTOP                                  = 0x400000\n\tUF_APPEND                               = 0x4\n\tUF_COMPRESSED                           = 0x20\n\tUF_DATAVAULT                            = 0x80\n\tUF_HIDDEN                               = 0x8000\n\tUF_IMMUTABLE                            = 0x2\n\tUF_NODUMP                               = 0x1\n\tUF_OPAQUE                               = 0x8\n\tUF_SETTABLE                             = 0xffff\n\tUF_TRACKED                              = 0x40\n\tVDISCARD                                = 0xf\n\tVDSUSP                                  = 0xb\n\tVEOF                                    = 0x0\n\tVEOL                                    = 0x1\n\tVEOL2                                   = 0x2\n\tVERASE                                  = 0x3\n\tVINTR                                   = 0x8\n\tVKILL                                   = 0x5\n\tVLNEXT                                  = 0xe\n\tVMADDR_CID_ANY                          = 0xffffffff\n\tVMADDR_CID_HOST                         = 0x2\n\tVMADDR_CID_HYPERVISOR                   = 0x0\n\tVMADDR_CID_RESERVED                     = 0x1\n\tVMADDR_PORT_ANY                         = 0xffffffff\n\tVMIN                                    = 0x10\n\tVM_LOADAVG                              = 0x2\n\tVM_MACHFACTOR                           = 0x4\n\tVM_MAXID                                = 0x6\n\tVM_METER                                = 0x1\n\tVM_SWAPUSAGE                            = 0x5\n\tVQUIT                                   = 0x9\n\tVREPRINT                                = 0x6\n\tVSTART                                  = 0xc\n\tVSTATUS                                 = 0x12\n\tVSTOP                                   = 0xd\n\tVSUSP                                   = 0xa\n\tVT0                                     = 0x0\n\tVT1                                     = 0x10000\n\tVTDLY                                   = 0x10000\n\tVTIME                                   = 0x11\n\tVWERASE                                 = 0x4\n\tWCONTINUED                              = 0x10\n\tWCOREFLAG                               = 0x80\n\tWEXITED                                 = 0x4\n\tWNOHANG                                 = 0x1\n\tWNOWAIT                                 = 0x20\n\tWORDSIZE                                = 0x40\n\tWSTOPPED                                = 0x8\n\tWUNTRACED                               = 0x2\n\tXATTR_CREATE                            = 0x2\n\tXATTR_NODEFAULT                         = 0x10\n\tXATTR_NOFOLLOW                          = 0x1\n\tXATTR_NOSECURITY                        = 0x8\n\tXATTR_REPLACE                           = 0x4\n\tXATTR_SHOWCOMPRESSION                   = 0x20\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADARCH        = syscall.Errno(0x56)\n\tEBADEXEC        = syscall.Errno(0x55)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMACHO       = syscall.Errno(0x58)\n\tEBADMSG         = syscall.Errno(0x5e)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x59)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDEVERR         = syscall.Errno(0x53)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x5a)\n\tEILSEQ          = syscall.Errno(0x5c)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x6a)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5f)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x60)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x61)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5b)\n\tENOPOLICY       = syscall.Errno(0x67)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x62)\n\tENOSTR          = syscall.Errno(0x63)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x68)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x66)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x69)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x64)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEPWROFF         = syscall.Errno(0x52)\n\tEQFULL          = syscall.Errno(0x6a)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHLIBVERS      = syscall.Errno(0x57)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x65)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EPWROFF\", \"device power is off\"},\n\t{83, \"EDEVERR\", \"device error\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EBADEXEC\", \"bad executable (or shared library)\"},\n\t{86, \"EBADARCH\", \"bad CPU type in executable\"},\n\t{87, \"ESHLIBVERS\", \"shared library version mismatch\"},\n\t{88, \"EBADMACHO\", \"malformed Mach-o file\"},\n\t{89, \"ECANCELED\", \"operation canceled\"},\n\t{90, \"EIDRM\", \"identifier removed\"},\n\t{91, \"ENOMSG\", \"no message of desired type\"},\n\t{92, \"EILSEQ\", \"illegal byte sequence\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EBADMSG\", \"bad message\"},\n\t{95, \"EMULTIHOP\", \"EMULTIHOP (Reserved)\"},\n\t{96, \"ENODATA\", \"no message available on STREAM\"},\n\t{97, \"ENOLINK\", \"ENOLINK (Reserved)\"},\n\t{98, \"ENOSR\", \"no STREAM resources\"},\n\t{99, \"ENOSTR\", \"not a STREAM\"},\n\t{100, \"EPROTO\", \"protocol error\"},\n\t{101, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{102, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{103, \"ENOPOLICY\", \"policy not found\"},\n\t{104, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{105, \"EOWNERDEAD\", \"previous owner died\"},\n\t{106, \"EQFULL\", \"interface output queue is full\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                            = 0x10\n\tAF_CCITT                                = 0xa\n\tAF_CHAOS                                = 0x5\n\tAF_CNT                                  = 0x15\n\tAF_COIP                                 = 0x14\n\tAF_DATAKIT                              = 0x9\n\tAF_DECnet                               = 0xc\n\tAF_DLI                                  = 0xd\n\tAF_E164                                 = 0x1c\n\tAF_ECMA                                 = 0x8\n\tAF_HYLINK                               = 0xf\n\tAF_IEEE80211                            = 0x25\n\tAF_IMPLINK                              = 0x3\n\tAF_INET                                 = 0x2\n\tAF_INET6                                = 0x1e\n\tAF_IPX                                  = 0x17\n\tAF_ISDN                                 = 0x1c\n\tAF_ISO                                  = 0x7\n\tAF_LAT                                  = 0xe\n\tAF_LINK                                 = 0x12\n\tAF_LOCAL                                = 0x1\n\tAF_MAX                                  = 0x29\n\tAF_NATM                                 = 0x1f\n\tAF_NDRV                                 = 0x1b\n\tAF_NETBIOS                              = 0x21\n\tAF_NS                                   = 0x6\n\tAF_OSI                                  = 0x7\n\tAF_PPP                                  = 0x22\n\tAF_PUP                                  = 0x4\n\tAF_RESERVED_36                          = 0x24\n\tAF_ROUTE                                = 0x11\n\tAF_SIP                                  = 0x18\n\tAF_SNA                                  = 0xb\n\tAF_SYSTEM                               = 0x20\n\tAF_SYS_CONTROL                          = 0x2\n\tAF_UNIX                                 = 0x1\n\tAF_UNSPEC                               = 0x0\n\tAF_UTUN                                 = 0x26\n\tAF_VSOCK                                = 0x28\n\tALTWERASE                               = 0x200\n\tATTR_BIT_MAP_COUNT                      = 0x5\n\tATTR_CMN_ACCESSMASK                     = 0x20000\n\tATTR_CMN_ACCTIME                        = 0x1000\n\tATTR_CMN_ADDEDTIME                      = 0x10000000\n\tATTR_CMN_BKUPTIME                       = 0x2000\n\tATTR_CMN_CHGTIME                        = 0x800\n\tATTR_CMN_CRTIME                         = 0x200\n\tATTR_CMN_DATA_PROTECT_FLAGS             = 0x40000000\n\tATTR_CMN_DEVID                          = 0x2\n\tATTR_CMN_DOCUMENT_ID                    = 0x100000\n\tATTR_CMN_ERROR                          = 0x20000000\n\tATTR_CMN_EXTENDED_SECURITY              = 0x400000\n\tATTR_CMN_FILEID                         = 0x2000000\n\tATTR_CMN_FLAGS                          = 0x40000\n\tATTR_CMN_FNDRINFO                       = 0x4000\n\tATTR_CMN_FSID                           = 0x4\n\tATTR_CMN_FULLPATH                       = 0x8000000\n\tATTR_CMN_GEN_COUNT                      = 0x80000\n\tATTR_CMN_GRPID                          = 0x10000\n\tATTR_CMN_GRPUUID                        = 0x1000000\n\tATTR_CMN_MODTIME                        = 0x400\n\tATTR_CMN_NAME                           = 0x1\n\tATTR_CMN_NAMEDATTRCOUNT                 = 0x80000\n\tATTR_CMN_NAMEDATTRLIST                  = 0x100000\n\tATTR_CMN_OBJID                          = 0x20\n\tATTR_CMN_OBJPERMANENTID                 = 0x40\n\tATTR_CMN_OBJTAG                         = 0x10\n\tATTR_CMN_OBJTYPE                        = 0x8\n\tATTR_CMN_OWNERID                        = 0x8000\n\tATTR_CMN_PARENTID                       = 0x4000000\n\tATTR_CMN_PAROBJID                       = 0x80\n\tATTR_CMN_RETURNED_ATTRS                 = 0x80000000\n\tATTR_CMN_SCRIPT                         = 0x100\n\tATTR_CMN_SETMASK                        = 0x51c7ff00\n\tATTR_CMN_USERACCESS                     = 0x200000\n\tATTR_CMN_UUID                           = 0x800000\n\tATTR_CMN_VALIDMASK                      = 0xffffffff\n\tATTR_CMN_VOLSETMASK                     = 0x6700\n\tATTR_FILE_ALLOCSIZE                     = 0x4\n\tATTR_FILE_CLUMPSIZE                     = 0x10\n\tATTR_FILE_DATAALLOCSIZE                 = 0x400\n\tATTR_FILE_DATAEXTENTS                   = 0x800\n\tATTR_FILE_DATALENGTH                    = 0x200\n\tATTR_FILE_DEVTYPE                       = 0x20\n\tATTR_FILE_FILETYPE                      = 0x40\n\tATTR_FILE_FORKCOUNT                     = 0x80\n\tATTR_FILE_FORKLIST                      = 0x100\n\tATTR_FILE_IOBLOCKSIZE                   = 0x8\n\tATTR_FILE_LINKCOUNT                     = 0x1\n\tATTR_FILE_RSRCALLOCSIZE                 = 0x2000\n\tATTR_FILE_RSRCEXTENTS                   = 0x4000\n\tATTR_FILE_RSRCLENGTH                    = 0x1000\n\tATTR_FILE_SETMASK                       = 0x20\n\tATTR_FILE_TOTALSIZE                     = 0x2\n\tATTR_FILE_VALIDMASK                     = 0x37ff\n\tATTR_VOL_ALLOCATIONCLUMP                = 0x40\n\tATTR_VOL_ATTRIBUTES                     = 0x40000000\n\tATTR_VOL_CAPABILITIES                   = 0x20000\n\tATTR_VOL_DIRCOUNT                       = 0x400\n\tATTR_VOL_ENCODINGSUSED                  = 0x10000\n\tATTR_VOL_FILECOUNT                      = 0x200\n\tATTR_VOL_FSTYPE                         = 0x1\n\tATTR_VOL_INFO                           = 0x80000000\n\tATTR_VOL_IOBLOCKSIZE                    = 0x80\n\tATTR_VOL_MAXOBJCOUNT                    = 0x800\n\tATTR_VOL_MINALLOCATION                  = 0x20\n\tATTR_VOL_MOUNTEDDEVICE                  = 0x8000\n\tATTR_VOL_MOUNTFLAGS                     = 0x4000\n\tATTR_VOL_MOUNTPOINT                     = 0x1000\n\tATTR_VOL_NAME                           = 0x2000\n\tATTR_VOL_OBJCOUNT                       = 0x100\n\tATTR_VOL_QUOTA_SIZE                     = 0x10000000\n\tATTR_VOL_RESERVED_SIZE                  = 0x20000000\n\tATTR_VOL_SETMASK                        = 0x80002000\n\tATTR_VOL_SIGNATURE                      = 0x2\n\tATTR_VOL_SIZE                           = 0x4\n\tATTR_VOL_SPACEAVAIL                     = 0x10\n\tATTR_VOL_SPACEFREE                      = 0x8\n\tATTR_VOL_SPACEUSED                      = 0x800000\n\tATTR_VOL_UUID                           = 0x40000\n\tATTR_VOL_VALIDMASK                      = 0xf087ffff\n\tB0                                      = 0x0\n\tB110                                    = 0x6e\n\tB115200                                 = 0x1c200\n\tB1200                                   = 0x4b0\n\tB134                                    = 0x86\n\tB14400                                  = 0x3840\n\tB150                                    = 0x96\n\tB1800                                   = 0x708\n\tB19200                                  = 0x4b00\n\tB200                                    = 0xc8\n\tB230400                                 = 0x38400\n\tB2400                                   = 0x960\n\tB28800                                  = 0x7080\n\tB300                                    = 0x12c\n\tB38400                                  = 0x9600\n\tB4800                                   = 0x12c0\n\tB50                                     = 0x32\n\tB57600                                  = 0xe100\n\tB600                                    = 0x258\n\tB7200                                   = 0x1c20\n\tB75                                     = 0x4b\n\tB76800                                  = 0x12c00\n\tB9600                                   = 0x2580\n\tBIOCFLUSH                               = 0x20004268\n\tBIOCGBLEN                               = 0x40044266\n\tBIOCGDLT                                = 0x4004426a\n\tBIOCGDLTLIST                            = 0xc00c4279\n\tBIOCGETIF                               = 0x4020426b\n\tBIOCGHDRCMPLT                           = 0x40044274\n\tBIOCGRSIG                               = 0x40044272\n\tBIOCGRTIMEOUT                           = 0x4010426e\n\tBIOCGSEESENT                            = 0x40044276\n\tBIOCGSTATS                              = 0x4008426f\n\tBIOCIMMEDIATE                           = 0x80044270\n\tBIOCPROMISC                             = 0x20004269\n\tBIOCSBLEN                               = 0xc0044266\n\tBIOCSDLT                                = 0x80044278\n\tBIOCSETF                                = 0x80104267\n\tBIOCSETFNR                              = 0x8010427e\n\tBIOCSETIF                               = 0x8020426c\n\tBIOCSHDRCMPLT                           = 0x80044275\n\tBIOCSRSIG                               = 0x80044273\n\tBIOCSRTIMEOUT                           = 0x8010426d\n\tBIOCSSEESENT                            = 0x80044277\n\tBIOCVERSION                             = 0x40044271\n\tBPF_A                                   = 0x10\n\tBPF_ABS                                 = 0x20\n\tBPF_ADD                                 = 0x0\n\tBPF_ALIGNMENT                           = 0x4\n\tBPF_ALU                                 = 0x4\n\tBPF_AND                                 = 0x50\n\tBPF_B                                   = 0x10\n\tBPF_DIV                                 = 0x30\n\tBPF_H                                   = 0x8\n\tBPF_IMM                                 = 0x0\n\tBPF_IND                                 = 0x40\n\tBPF_JA                                  = 0x0\n\tBPF_JEQ                                 = 0x10\n\tBPF_JGE                                 = 0x30\n\tBPF_JGT                                 = 0x20\n\tBPF_JMP                                 = 0x5\n\tBPF_JSET                                = 0x40\n\tBPF_K                                   = 0x0\n\tBPF_LD                                  = 0x0\n\tBPF_LDX                                 = 0x1\n\tBPF_LEN                                 = 0x80\n\tBPF_LSH                                 = 0x60\n\tBPF_MAJOR_VERSION                       = 0x1\n\tBPF_MAXBUFSIZE                          = 0x80000\n\tBPF_MAXINSNS                            = 0x200\n\tBPF_MEM                                 = 0x60\n\tBPF_MEMWORDS                            = 0x10\n\tBPF_MINBUFSIZE                          = 0x20\n\tBPF_MINOR_VERSION                       = 0x1\n\tBPF_MISC                                = 0x7\n\tBPF_MSH                                 = 0xa0\n\tBPF_MUL                                 = 0x20\n\tBPF_NEG                                 = 0x80\n\tBPF_OR                                  = 0x40\n\tBPF_RELEASE                             = 0x30bb6\n\tBPF_RET                                 = 0x6\n\tBPF_RSH                                 = 0x70\n\tBPF_ST                                  = 0x2\n\tBPF_STX                                 = 0x3\n\tBPF_SUB                                 = 0x10\n\tBPF_TAX                                 = 0x0\n\tBPF_TXA                                 = 0x80\n\tBPF_W                                   = 0x0\n\tBPF_X                                   = 0x8\n\tBRKINT                                  = 0x2\n\tBS0                                     = 0x0\n\tBS1                                     = 0x8000\n\tBSDLY                                   = 0x8000\n\tCFLUSH                                  = 0xf\n\tCLOCAL                                  = 0x8000\n\tCLOCK_MONOTONIC                         = 0x6\n\tCLOCK_MONOTONIC_RAW                     = 0x4\n\tCLOCK_MONOTONIC_RAW_APPROX              = 0x5\n\tCLOCK_PROCESS_CPUTIME_ID                = 0xc\n\tCLOCK_REALTIME                          = 0x0\n\tCLOCK_THREAD_CPUTIME_ID                 = 0x10\n\tCLOCK_UPTIME_RAW                        = 0x8\n\tCLOCK_UPTIME_RAW_APPROX                 = 0x9\n\tCLONE_NOFOLLOW                          = 0x1\n\tCLONE_NOOWNERCOPY                       = 0x2\n\tCONNECT_DATA_AUTHENTICATED              = 0x4\n\tCONNECT_DATA_IDEMPOTENT                 = 0x2\n\tCONNECT_RESUME_ON_READ_WRITE            = 0x1\n\tCR0                                     = 0x0\n\tCR1                                     = 0x1000\n\tCR2                                     = 0x2000\n\tCR3                                     = 0x3000\n\tCRDLY                                   = 0x3000\n\tCREAD                                   = 0x800\n\tCRTSCTS                                 = 0x30000\n\tCS5                                     = 0x0\n\tCS6                                     = 0x100\n\tCS7                                     = 0x200\n\tCS8                                     = 0x300\n\tCSIZE                                   = 0x300\n\tCSTART                                  = 0x11\n\tCSTATUS                                 = 0x14\n\tCSTOP                                   = 0x13\n\tCSTOPB                                  = 0x400\n\tCSUSP                                   = 0x1a\n\tCTLIOCGINFO                             = 0xc0644e03\n\tCTL_HW                                  = 0x6\n\tCTL_KERN                                = 0x1\n\tCTL_MAXNAME                             = 0xc\n\tCTL_NET                                 = 0x4\n\tDLT_A429                                = 0xb8\n\tDLT_A653_ICM                            = 0xb9\n\tDLT_AIRONET_HEADER                      = 0x78\n\tDLT_AOS                                 = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394              = 0x8a\n\tDLT_ARCNET                              = 0x7\n\tDLT_ARCNET_LINUX                        = 0x81\n\tDLT_ATM_CLIP                            = 0x13\n\tDLT_ATM_RFC1483                         = 0xb\n\tDLT_AURORA                              = 0x7e\n\tDLT_AX25                                = 0x3\n\tDLT_AX25_KISS                           = 0xca\n\tDLT_BACNET_MS_TP                        = 0xa5\n\tDLT_BLUETOOTH_HCI_H4                    = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR          = 0xc9\n\tDLT_CAN20B                              = 0xbe\n\tDLT_CAN_SOCKETCAN                       = 0xe3\n\tDLT_CHAOS                               = 0x5\n\tDLT_CHDLC                               = 0x68\n\tDLT_CISCO_IOS                           = 0x76\n\tDLT_C_HDLC                              = 0x68\n\tDLT_C_HDLC_WITH_DIR                     = 0xcd\n\tDLT_DBUS                                = 0xe7\n\tDLT_DECT                                = 0xdd\n\tDLT_DOCSIS                              = 0x8f\n\tDLT_DVB_CI                              = 0xeb\n\tDLT_ECONET                              = 0x73\n\tDLT_EN10MB                              = 0x1\n\tDLT_EN3MB                               = 0x2\n\tDLT_ENC                                 = 0x6d\n\tDLT_ERF                                 = 0xc5\n\tDLT_ERF_ETH                             = 0xaf\n\tDLT_ERF_POS                             = 0xb0\n\tDLT_FC_2                                = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS              = 0xe1\n\tDLT_FDDI                                = 0xa\n\tDLT_FLEXRAY                             = 0xd2\n\tDLT_FRELAY                              = 0x6b\n\tDLT_FRELAY_WITH_DIR                     = 0xce\n\tDLT_GCOM_SERIAL                         = 0xad\n\tDLT_GCOM_T1E1                           = 0xac\n\tDLT_GPF_F                               = 0xab\n\tDLT_GPF_T                               = 0xaa\n\tDLT_GPRS_LLC                            = 0xa9\n\tDLT_GSMTAP_ABIS                         = 0xda\n\tDLT_GSMTAP_UM                           = 0xd9\n\tDLT_HHDLC                               = 0x79\n\tDLT_IBM_SN                              = 0x92\n\tDLT_IBM_SP                              = 0x91\n\tDLT_IEEE802                             = 0x6\n\tDLT_IEEE802_11                          = 0x69\n\tDLT_IEEE802_11_RADIO                    = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS                = 0xa3\n\tDLT_IEEE802_15_4                        = 0xc3\n\tDLT_IEEE802_15_4_LINUX                  = 0xbf\n\tDLT_IEEE802_15_4_NOFCS                  = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY             = 0xd7\n\tDLT_IEEE802_16_MAC_CPS                  = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO            = 0xc1\n\tDLT_IPFILTER                            = 0x74\n\tDLT_IPMB                                = 0xc7\n\tDLT_IPMB_LINUX                          = 0xd1\n\tDLT_IPNET                               = 0xe2\n\tDLT_IPOIB                               = 0xf2\n\tDLT_IPV4                                = 0xe4\n\tDLT_IPV6                                = 0xe5\n\tDLT_IP_OVER_FC                          = 0x7a\n\tDLT_JUNIPER_ATM1                        = 0x89\n\tDLT_JUNIPER_ATM2                        = 0x87\n\tDLT_JUNIPER_ATM_CEMIC                   = 0xee\n\tDLT_JUNIPER_CHDLC                       = 0xb5\n\tDLT_JUNIPER_ES                          = 0x84\n\tDLT_JUNIPER_ETHER                       = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL                = 0xea\n\tDLT_JUNIPER_FRELAY                      = 0xb4\n\tDLT_JUNIPER_GGSN                        = 0x85\n\tDLT_JUNIPER_ISM                         = 0xc2\n\tDLT_JUNIPER_MFR                         = 0x86\n\tDLT_JUNIPER_MLFR                        = 0x83\n\tDLT_JUNIPER_MLPPP                       = 0x82\n\tDLT_JUNIPER_MONITOR                     = 0xa4\n\tDLT_JUNIPER_PIC_PEER                    = 0xae\n\tDLT_JUNIPER_PPP                         = 0xb3\n\tDLT_JUNIPER_PPPOE                       = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM                   = 0xa8\n\tDLT_JUNIPER_SERVICES                    = 0x88\n\tDLT_JUNIPER_SRX_E2E                     = 0xe9\n\tDLT_JUNIPER_ST                          = 0xc8\n\tDLT_JUNIPER_VP                          = 0xb7\n\tDLT_JUNIPER_VS                          = 0xe8\n\tDLT_LAPB_WITH_DIR                       = 0xcf\n\tDLT_LAPD                                = 0xcb\n\tDLT_LIN                                 = 0xd4\n\tDLT_LINUX_EVDEV                         = 0xd8\n\tDLT_LINUX_IRDA                          = 0x90\n\tDLT_LINUX_LAPD                          = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION             = 0xa6\n\tDLT_LINUX_SLL                           = 0x71\n\tDLT_LOOP                                = 0x6c\n\tDLT_LTALK                               = 0x72\n\tDLT_MATCHING_MAX                        = 0x10a\n\tDLT_MATCHING_MIN                        = 0x68\n\tDLT_MFR                                 = 0xb6\n\tDLT_MOST                                = 0xd3\n\tDLT_MPEG_2_TS                           = 0xf3\n\tDLT_MPLS                                = 0xdb\n\tDLT_MTP2                                = 0x8c\n\tDLT_MTP2_WITH_PHDR                      = 0x8b\n\tDLT_MTP3                                = 0x8d\n\tDLT_MUX27010                            = 0xec\n\tDLT_NETANALYZER                         = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT             = 0xf1\n\tDLT_NFC_LLCP                            = 0xf5\n\tDLT_NFLOG                               = 0xef\n\tDLT_NG40                                = 0xf4\n\tDLT_NULL                                = 0x0\n\tDLT_PCI_EXP                             = 0x7d\n\tDLT_PFLOG                               = 0x75\n\tDLT_PFSYNC                              = 0x12\n\tDLT_PPI                                 = 0xc0\n\tDLT_PPP                                 = 0x9\n\tDLT_PPP_BSDOS                           = 0x10\n\tDLT_PPP_ETHER                           = 0x33\n\tDLT_PPP_PPPD                            = 0xa6\n\tDLT_PPP_SERIAL                          = 0x32\n\tDLT_PPP_WITH_DIR                        = 0xcc\n\tDLT_PPP_WITH_DIRECTION                  = 0xa6\n\tDLT_PRISM_HEADER                        = 0x77\n\tDLT_PRONET                              = 0x4\n\tDLT_RAIF1                               = 0xc6\n\tDLT_RAW                                 = 0xc\n\tDLT_RIO                                 = 0x7c\n\tDLT_SCCP                                = 0x8e\n\tDLT_SITA                                = 0xc4\n\tDLT_SLIP                                = 0x8\n\tDLT_SLIP_BSDOS                          = 0xf\n\tDLT_STANAG_5066_D_PDU                   = 0xed\n\tDLT_SUNATM                              = 0x7b\n\tDLT_SYMANTEC_FIREWALL                   = 0x63\n\tDLT_TZSP                                = 0x80\n\tDLT_USB                                 = 0xba\n\tDLT_USB_DARWIN                          = 0x10a\n\tDLT_USB_LINUX                           = 0xbd\n\tDLT_USB_LINUX_MMAPPED                   = 0xdc\n\tDLT_USER0                               = 0x93\n\tDLT_USER1                               = 0x94\n\tDLT_USER10                              = 0x9d\n\tDLT_USER11                              = 0x9e\n\tDLT_USER12                              = 0x9f\n\tDLT_USER13                              = 0xa0\n\tDLT_USER14                              = 0xa1\n\tDLT_USER15                              = 0xa2\n\tDLT_USER2                               = 0x95\n\tDLT_USER3                               = 0x96\n\tDLT_USER4                               = 0x97\n\tDLT_USER5                               = 0x98\n\tDLT_USER6                               = 0x99\n\tDLT_USER7                               = 0x9a\n\tDLT_USER8                               = 0x9b\n\tDLT_USER9                               = 0x9c\n\tDLT_WIHART                              = 0xdf\n\tDLT_X2E_SERIAL                          = 0xd5\n\tDLT_X2E_XORAYA                          = 0xd6\n\tDT_BLK                                  = 0x6\n\tDT_CHR                                  = 0x2\n\tDT_DIR                                  = 0x4\n\tDT_FIFO                                 = 0x1\n\tDT_LNK                                  = 0xa\n\tDT_REG                                  = 0x8\n\tDT_SOCK                                 = 0xc\n\tDT_UNKNOWN                              = 0x0\n\tDT_WHT                                  = 0xe\n\tECHO                                    = 0x8\n\tECHOCTL                                 = 0x40\n\tECHOE                                   = 0x2\n\tECHOK                                   = 0x4\n\tECHOKE                                  = 0x1\n\tECHONL                                  = 0x10\n\tECHOPRT                                 = 0x20\n\tEVFILT_AIO                              = -0x3\n\tEVFILT_EXCEPT                           = -0xf\n\tEVFILT_FS                               = -0x9\n\tEVFILT_MACHPORT                         = -0x8\n\tEVFILT_PROC                             = -0x5\n\tEVFILT_READ                             = -0x1\n\tEVFILT_SIGNAL                           = -0x6\n\tEVFILT_SYSCOUNT                         = 0x11\n\tEVFILT_THREADMARKER                     = 0x11\n\tEVFILT_TIMER                            = -0x7\n\tEVFILT_USER                             = -0xa\n\tEVFILT_VM                               = -0xc\n\tEVFILT_VNODE                            = -0x4\n\tEVFILT_WRITE                            = -0x2\n\tEV_ADD                                  = 0x1\n\tEV_CLEAR                                = 0x20\n\tEV_DELETE                               = 0x2\n\tEV_DISABLE                              = 0x8\n\tEV_DISPATCH                             = 0x80\n\tEV_DISPATCH2                            = 0x180\n\tEV_ENABLE                               = 0x4\n\tEV_EOF                                  = 0x8000\n\tEV_ERROR                                = 0x4000\n\tEV_FLAG0                                = 0x1000\n\tEV_FLAG1                                = 0x2000\n\tEV_ONESHOT                              = 0x10\n\tEV_OOBAND                               = 0x2000\n\tEV_POLL                                 = 0x1000\n\tEV_RECEIPT                              = 0x40\n\tEV_SYSFLAGS                             = 0xf000\n\tEV_UDATA_SPECIFIC                       = 0x100\n\tEV_VANISHED                             = 0x200\n\tEXTA                                    = 0x4b00\n\tEXTB                                    = 0x9600\n\tEXTPROC                                 = 0x800\n\tFD_CLOEXEC                              = 0x1\n\tFD_SETSIZE                              = 0x400\n\tFF0                                     = 0x0\n\tFF1                                     = 0x4000\n\tFFDLY                                   = 0x4000\n\tFLUSHO                                  = 0x800000\n\tFSOPT_ATTR_CMN_EXTENDED                 = 0x20\n\tFSOPT_NOFOLLOW                          = 0x1\n\tFSOPT_NOINMEMUPDATE                     = 0x2\n\tFSOPT_PACK_INVAL_ATTRS                  = 0x8\n\tFSOPT_REPORT_FULLSIZE                   = 0x4\n\tFSOPT_RETURN_REALDEV                    = 0x200\n\tF_ADDFILESIGS                           = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM              = 0x53\n\tF_ADDFILESIGS_INFO                      = 0x67\n\tF_ADDFILESIGS_RETURN                    = 0x61\n\tF_ADDFILESUPPL                          = 0x68\n\tF_ADDSIGS                               = 0x3b\n\tF_ALLOCATEALL                           = 0x4\n\tF_ALLOCATECONTIG                        = 0x2\n\tF_BARRIERFSYNC                          = 0x55\n\tF_CHECK_LV                              = 0x62\n\tF_CHKCLEAN                              = 0x29\n\tF_DUPFD                                 = 0x0\n\tF_DUPFD_CLOEXEC                         = 0x43\n\tF_FINDSIGS                              = 0x4e\n\tF_FLUSH_DATA                            = 0x28\n\tF_FREEZE_FS                             = 0x35\n\tF_FULLFSYNC                             = 0x33\n\tF_GETCODEDIR                            = 0x48\n\tF_GETFD                                 = 0x1\n\tF_GETFL                                 = 0x3\n\tF_GETLK                                 = 0x7\n\tF_GETLKPID                              = 0x42\n\tF_GETNOSIGPIPE                          = 0x4a\n\tF_GETOWN                                = 0x5\n\tF_GETPATH                               = 0x32\n\tF_GETPATH_MTMINFO                       = 0x47\n\tF_GETPATH_NOFIRMLINK                    = 0x66\n\tF_GETPROTECTIONCLASS                    = 0x3f\n\tF_GETPROTECTIONLEVEL                    = 0x4d\n\tF_GETSIGSINFO                           = 0x69\n\tF_GLOBAL_NOCACHE                        = 0x37\n\tF_LOG2PHYS                              = 0x31\n\tF_LOG2PHYS_EXT                          = 0x41\n\tF_NOCACHE                               = 0x30\n\tF_NODIRECT                              = 0x3e\n\tF_OK                                    = 0x0\n\tF_PATHPKG_CHECK                         = 0x34\n\tF_PEOFPOSMODE                           = 0x3\n\tF_PREALLOCATE                           = 0x2a\n\tF_PUNCHHOLE                             = 0x63\n\tF_RDADVISE                              = 0x2c\n\tF_RDAHEAD                               = 0x2d\n\tF_RDLCK                                 = 0x1\n\tF_SETBACKINGSTORE                       = 0x46\n\tF_SETFD                                 = 0x2\n\tF_SETFL                                 = 0x4\n\tF_SETLK                                 = 0x8\n\tF_SETLKW                                = 0x9\n\tF_SETLKWTIMEOUT                         = 0xa\n\tF_SETNOSIGPIPE                          = 0x49\n\tF_SETOWN                                = 0x6\n\tF_SETPROTECTIONCLASS                    = 0x40\n\tF_SETSIZE                               = 0x2b\n\tF_SINGLE_WRITER                         = 0x4c\n\tF_SPECULATIVE_READ                      = 0x65\n\tF_THAW_FS                               = 0x36\n\tF_TRANSCODEKEY                          = 0x4b\n\tF_TRIM_ACTIVE_FILE                      = 0x64\n\tF_UNLCK                                 = 0x2\n\tF_VOLPOSMODE                            = 0x4\n\tF_WRLCK                                 = 0x3\n\tHUPCL                                   = 0x4000\n\tHW_MACHINE                              = 0x1\n\tICANON                                  = 0x100\n\tICMP6_FILTER                            = 0x12\n\tICRNL                                   = 0x100\n\tIEXTEN                                  = 0x400\n\tIFF_ALLMULTI                            = 0x200\n\tIFF_ALTPHYS                             = 0x4000\n\tIFF_BROADCAST                           = 0x2\n\tIFF_DEBUG                               = 0x4\n\tIFF_LINK0                               = 0x1000\n\tIFF_LINK1                               = 0x2000\n\tIFF_LINK2                               = 0x4000\n\tIFF_LOOPBACK                            = 0x8\n\tIFF_MULTICAST                           = 0x8000\n\tIFF_NOARP                               = 0x80\n\tIFF_NOTRAILERS                          = 0x20\n\tIFF_OACTIVE                             = 0x400\n\tIFF_POINTOPOINT                         = 0x10\n\tIFF_PROMISC                             = 0x100\n\tIFF_RUNNING                             = 0x40\n\tIFF_SIMPLEX                             = 0x800\n\tIFF_UP                                  = 0x1\n\tIFNAMSIZ                                = 0x10\n\tIFT_1822                                = 0x2\n\tIFT_6LOWPAN                             = 0x40\n\tIFT_AAL5                                = 0x31\n\tIFT_ARCNET                              = 0x23\n\tIFT_ARCNETPLUS                          = 0x24\n\tIFT_ATM                                 = 0x25\n\tIFT_BRIDGE                              = 0xd1\n\tIFT_CARP                                = 0xf8\n\tIFT_CELLULAR                            = 0xff\n\tIFT_CEPT                                = 0x13\n\tIFT_DS3                                 = 0x1e\n\tIFT_ENC                                 = 0xf4\n\tIFT_EON                                 = 0x19\n\tIFT_ETHER                               = 0x6\n\tIFT_FAITH                               = 0x38\n\tIFT_FDDI                                = 0xf\n\tIFT_FRELAY                              = 0x20\n\tIFT_FRELAYDCE                           = 0x2c\n\tIFT_GIF                                 = 0x37\n\tIFT_HDH1822                             = 0x3\n\tIFT_HIPPI                               = 0x2f\n\tIFT_HSSI                                = 0x2e\n\tIFT_HY                                  = 0xe\n\tIFT_IEEE1394                            = 0x90\n\tIFT_IEEE8023ADLAG                       = 0x88\n\tIFT_ISDNBASIC                           = 0x14\n\tIFT_ISDNPRIMARY                         = 0x15\n\tIFT_ISO88022LLC                         = 0x29\n\tIFT_ISO88023                            = 0x7\n\tIFT_ISO88024                            = 0x8\n\tIFT_ISO88025                            = 0x9\n\tIFT_ISO88026                            = 0xa\n\tIFT_L2VLAN                              = 0x87\n\tIFT_LAPB                                = 0x10\n\tIFT_LOCALTALK                           = 0x2a\n\tIFT_LOOP                                = 0x18\n\tIFT_MIOX25                              = 0x26\n\tIFT_MODEM                               = 0x30\n\tIFT_NSIP                                = 0x1b\n\tIFT_OTHER                               = 0x1\n\tIFT_P10                                 = 0xc\n\tIFT_P80                                 = 0xd\n\tIFT_PARA                                = 0x22\n\tIFT_PDP                                 = 0xff\n\tIFT_PFLOG                               = 0xf5\n\tIFT_PFSYNC                              = 0xf6\n\tIFT_PKTAP                               = 0xfe\n\tIFT_PPP                                 = 0x17\n\tIFT_PROPMUX                             = 0x36\n\tIFT_PROPVIRTUAL                         = 0x35\n\tIFT_PTPSERIAL                           = 0x16\n\tIFT_RS232                               = 0x21\n\tIFT_SDLC                                = 0x11\n\tIFT_SIP                                 = 0x1f\n\tIFT_SLIP                                = 0x1c\n\tIFT_SMDSDXI                             = 0x2b\n\tIFT_SMDSICIP                            = 0x34\n\tIFT_SONET                               = 0x27\n\tIFT_SONETPATH                           = 0x32\n\tIFT_SONETVT                             = 0x33\n\tIFT_STARLAN                             = 0xb\n\tIFT_STF                                 = 0x39\n\tIFT_T1                                  = 0x12\n\tIFT_ULTRA                               = 0x1d\n\tIFT_V35                                 = 0x2d\n\tIFT_X25                                 = 0x5\n\tIFT_X25DDN                              = 0x4\n\tIFT_X25PLE                              = 0x28\n\tIFT_XETHER                              = 0x1a\n\tIGNBRK                                  = 0x1\n\tIGNCR                                   = 0x80\n\tIGNPAR                                  = 0x4\n\tIMAXBEL                                 = 0x2000\n\tINLCR                                   = 0x40\n\tINPCK                                   = 0x10\n\tIN_CLASSA_HOST                          = 0xffffff\n\tIN_CLASSA_MAX                           = 0x80\n\tIN_CLASSA_NET                           = 0xff000000\n\tIN_CLASSA_NSHIFT                        = 0x18\n\tIN_CLASSB_HOST                          = 0xffff\n\tIN_CLASSB_MAX                           = 0x10000\n\tIN_CLASSB_NET                           = 0xffff0000\n\tIN_CLASSB_NSHIFT                        = 0x10\n\tIN_CLASSC_HOST                          = 0xff\n\tIN_CLASSC_NET                           = 0xffffff00\n\tIN_CLASSC_NSHIFT                        = 0x8\n\tIN_CLASSD_HOST                          = 0xfffffff\n\tIN_CLASSD_NET                           = 0xf0000000\n\tIN_CLASSD_NSHIFT                        = 0x1c\n\tIN_LINKLOCALNETNUM                      = 0xa9fe0000\n\tIN_LOOPBACKNET                          = 0x7f\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID          = 0x400473d1\n\tIPPROTO_3PC                             = 0x22\n\tIPPROTO_ADFS                            = 0x44\n\tIPPROTO_AH                              = 0x33\n\tIPPROTO_AHIP                            = 0x3d\n\tIPPROTO_APES                            = 0x63\n\tIPPROTO_ARGUS                           = 0xd\n\tIPPROTO_AX25                            = 0x5d\n\tIPPROTO_BHA                             = 0x31\n\tIPPROTO_BLT                             = 0x1e\n\tIPPROTO_BRSATMON                        = 0x4c\n\tIPPROTO_CFTP                            = 0x3e\n\tIPPROTO_CHAOS                           = 0x10\n\tIPPROTO_CMTP                            = 0x26\n\tIPPROTO_CPHB                            = 0x49\n\tIPPROTO_CPNX                            = 0x48\n\tIPPROTO_DDP                             = 0x25\n\tIPPROTO_DGP                             = 0x56\n\tIPPROTO_DIVERT                          = 0xfe\n\tIPPROTO_DONE                            = 0x101\n\tIPPROTO_DSTOPTS                         = 0x3c\n\tIPPROTO_EGP                             = 0x8\n\tIPPROTO_EMCON                           = 0xe\n\tIPPROTO_ENCAP                           = 0x62\n\tIPPROTO_EON                             = 0x50\n\tIPPROTO_ESP                             = 0x32\n\tIPPROTO_ETHERIP                         = 0x61\n\tIPPROTO_FRAGMENT                        = 0x2c\n\tIPPROTO_GGP                             = 0x3\n\tIPPROTO_GMTP                            = 0x64\n\tIPPROTO_GRE                             = 0x2f\n\tIPPROTO_HELLO                           = 0x3f\n\tIPPROTO_HMP                             = 0x14\n\tIPPROTO_HOPOPTS                         = 0x0\n\tIPPROTO_ICMP                            = 0x1\n\tIPPROTO_ICMPV6                          = 0x3a\n\tIPPROTO_IDP                             = 0x16\n\tIPPROTO_IDPR                            = 0x23\n\tIPPROTO_IDRP                            = 0x2d\n\tIPPROTO_IGMP                            = 0x2\n\tIPPROTO_IGP                             = 0x55\n\tIPPROTO_IGRP                            = 0x58\n\tIPPROTO_IL                              = 0x28\n\tIPPROTO_INLSP                           = 0x34\n\tIPPROTO_INP                             = 0x20\n\tIPPROTO_IP                              = 0x0\n\tIPPROTO_IPCOMP                          = 0x6c\n\tIPPROTO_IPCV                            = 0x47\n\tIPPROTO_IPEIP                           = 0x5e\n\tIPPROTO_IPIP                            = 0x4\n\tIPPROTO_IPPC                            = 0x43\n\tIPPROTO_IPV4                            = 0x4\n\tIPPROTO_IPV6                            = 0x29\n\tIPPROTO_IRTP                            = 0x1c\n\tIPPROTO_KRYPTOLAN                       = 0x41\n\tIPPROTO_LARP                            = 0x5b\n\tIPPROTO_LEAF1                           = 0x19\n\tIPPROTO_LEAF2                           = 0x1a\n\tIPPROTO_MAX                             = 0x100\n\tIPPROTO_MAXID                           = 0x34\n\tIPPROTO_MEAS                            = 0x13\n\tIPPROTO_MHRP                            = 0x30\n\tIPPROTO_MICP                            = 0x5f\n\tIPPROTO_MTP                             = 0x5c\n\tIPPROTO_MUX                             = 0x12\n\tIPPROTO_ND                              = 0x4d\n\tIPPROTO_NHRP                            = 0x36\n\tIPPROTO_NONE                            = 0x3b\n\tIPPROTO_NSP                             = 0x1f\n\tIPPROTO_NVPII                           = 0xb\n\tIPPROTO_OSPFIGP                         = 0x59\n\tIPPROTO_PGM                             = 0x71\n\tIPPROTO_PIGP                            = 0x9\n\tIPPROTO_PIM                             = 0x67\n\tIPPROTO_PRM                             = 0x15\n\tIPPROTO_PUP                             = 0xc\n\tIPPROTO_PVP                             = 0x4b\n\tIPPROTO_RAW                             = 0xff\n\tIPPROTO_RCCMON                          = 0xa\n\tIPPROTO_RDP                             = 0x1b\n\tIPPROTO_ROUTING                         = 0x2b\n\tIPPROTO_RSVP                            = 0x2e\n\tIPPROTO_RVD                             = 0x42\n\tIPPROTO_SATEXPAK                        = 0x40\n\tIPPROTO_SATMON                          = 0x45\n\tIPPROTO_SCCSP                           = 0x60\n\tIPPROTO_SCTP                            = 0x84\n\tIPPROTO_SDRP                            = 0x2a\n\tIPPROTO_SEP                             = 0x21\n\tIPPROTO_SRPC                            = 0x5a\n\tIPPROTO_ST                              = 0x7\n\tIPPROTO_SVMTP                           = 0x52\n\tIPPROTO_SWIPE                           = 0x35\n\tIPPROTO_TCF                             = 0x57\n\tIPPROTO_TCP                             = 0x6\n\tIPPROTO_TP                              = 0x1d\n\tIPPROTO_TPXX                            = 0x27\n\tIPPROTO_TRUNK1                          = 0x17\n\tIPPROTO_TRUNK2                          = 0x18\n\tIPPROTO_TTP                             = 0x54\n\tIPPROTO_UDP                             = 0x11\n\tIPPROTO_VINES                           = 0x53\n\tIPPROTO_VISA                            = 0x46\n\tIPPROTO_VMTP                            = 0x51\n\tIPPROTO_WBEXPAK                         = 0x4f\n\tIPPROTO_WBMON                           = 0x4e\n\tIPPROTO_WSN                             = 0x4a\n\tIPPROTO_XNET                            = 0xf\n\tIPPROTO_XTP                             = 0x24\n\tIPV6_2292DSTOPTS                        = 0x17\n\tIPV6_2292HOPLIMIT                       = 0x14\n\tIPV6_2292HOPOPTS                        = 0x16\n\tIPV6_2292NEXTHOP                        = 0x15\n\tIPV6_2292PKTINFO                        = 0x13\n\tIPV6_2292PKTOPTIONS                     = 0x19\n\tIPV6_2292RTHDR                          = 0x18\n\tIPV6_3542DSTOPTS                        = 0x32\n\tIPV6_3542HOPLIMIT                       = 0x2f\n\tIPV6_3542HOPOPTS                        = 0x31\n\tIPV6_3542NEXTHOP                        = 0x30\n\tIPV6_3542PKTINFO                        = 0x2e\n\tIPV6_3542RTHDR                          = 0x33\n\tIPV6_ADDR_MC_FLAGS_PREFIX               = 0x20\n\tIPV6_ADDR_MC_FLAGS_TRANSIENT            = 0x10\n\tIPV6_ADDR_MC_FLAGS_UNICAST_BASED        = 0x30\n\tIPV6_AUTOFLOWLABEL                      = 0x3b\n\tIPV6_BINDV6ONLY                         = 0x1b\n\tIPV6_BOUND_IF                           = 0x7d\n\tIPV6_CHECKSUM                           = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS             = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP             = 0x1\n\tIPV6_DEFHLIM                            = 0x40\n\tIPV6_DONTFRAG                           = 0x3e\n\tIPV6_DSTOPTS                            = 0x32\n\tIPV6_FAITH                              = 0x1d\n\tIPV6_FLOWINFO_MASK                      = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK                     = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                      = 0x3000\n\tIPV6_FRAGTTL                            = 0x3c\n\tIPV6_FW_ADD                             = 0x1e\n\tIPV6_FW_DEL                             = 0x1f\n\tIPV6_FW_FLUSH                           = 0x20\n\tIPV6_FW_GET                             = 0x22\n\tIPV6_FW_ZERO                            = 0x21\n\tIPV6_HLIMDEC                            = 0x1\n\tIPV6_HOPLIMIT                           = 0x2f\n\tIPV6_HOPOPTS                            = 0x31\n\tIPV6_IPSEC_POLICY                       = 0x1c\n\tIPV6_JOIN_GROUP                         = 0xc\n\tIPV6_LEAVE_GROUP                        = 0xd\n\tIPV6_MAXHLIM                            = 0xff\n\tIPV6_MAXOPTHDR                          = 0x800\n\tIPV6_MAXPACKET                          = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER               = 0x200\n\tIPV6_MAX_MEMBERSHIPS                    = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER                = 0x80\n\tIPV6_MIN_MEMBERSHIPS                    = 0x1f\n\tIPV6_MMTU                               = 0x500\n\tIPV6_MSFILTER                           = 0x4a\n\tIPV6_MULTICAST_HOPS                     = 0xa\n\tIPV6_MULTICAST_IF                       = 0x9\n\tIPV6_MULTICAST_LOOP                     = 0xb\n\tIPV6_NEXTHOP                            = 0x30\n\tIPV6_PATHMTU                            = 0x2c\n\tIPV6_PKTINFO                            = 0x2e\n\tIPV6_PORTRANGE                          = 0xe\n\tIPV6_PORTRANGE_DEFAULT                  = 0x0\n\tIPV6_PORTRANGE_HIGH                     = 0x1\n\tIPV6_PORTRANGE_LOW                      = 0x2\n\tIPV6_PREFER_TEMPADDR                    = 0x3f\n\tIPV6_RECVDSTOPTS                        = 0x28\n\tIPV6_RECVHOPLIMIT                       = 0x25\n\tIPV6_RECVHOPOPTS                        = 0x27\n\tIPV6_RECVPATHMTU                        = 0x2b\n\tIPV6_RECVPKTINFO                        = 0x3d\n\tIPV6_RECVRTHDR                          = 0x26\n\tIPV6_RECVTCLASS                         = 0x23\n\tIPV6_RTHDR                              = 0x33\n\tIPV6_RTHDRDSTOPTS                       = 0x39\n\tIPV6_RTHDR_LOOSE                        = 0x0\n\tIPV6_RTHDR_STRICT                       = 0x1\n\tIPV6_RTHDR_TYPE_0                       = 0x0\n\tIPV6_SOCKOPT_RESERVED1                  = 0x3\n\tIPV6_TCLASS                             = 0x24\n\tIPV6_UNICAST_HOPS                       = 0x4\n\tIPV6_USE_MIN_MTU                        = 0x2a\n\tIPV6_V6ONLY                             = 0x1b\n\tIPV6_VERSION                            = 0x60\n\tIPV6_VERSION_MASK                       = 0xf0\n\tIP_ADD_MEMBERSHIP                       = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP                = 0x46\n\tIP_BLOCK_SOURCE                         = 0x48\n\tIP_BOUND_IF                             = 0x19\n\tIP_DEFAULT_MULTICAST_LOOP               = 0x1\n\tIP_DEFAULT_MULTICAST_TTL                = 0x1\n\tIP_DF                                   = 0x4000\n\tIP_DONTFRAG                             = 0x1c\n\tIP_DROP_MEMBERSHIP                      = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP               = 0x47\n\tIP_DUMMYNET_CONFIGURE                   = 0x3c\n\tIP_DUMMYNET_DEL                         = 0x3d\n\tIP_DUMMYNET_FLUSH                       = 0x3e\n\tIP_DUMMYNET_GET                         = 0x40\n\tIP_FAITH                                = 0x16\n\tIP_FW_ADD                               = 0x28\n\tIP_FW_DEL                               = 0x29\n\tIP_FW_FLUSH                             = 0x2a\n\tIP_FW_GET                               = 0x2c\n\tIP_FW_RESETLOG                          = 0x2d\n\tIP_FW_ZERO                              = 0x2b\n\tIP_HDRINCL                              = 0x2\n\tIP_IPSEC_POLICY                         = 0x15\n\tIP_MAXPACKET                            = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER                 = 0x200\n\tIP_MAX_MEMBERSHIPS                      = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER                 = 0x80\n\tIP_MAX_SOCK_SRC_FILTER                  = 0x80\n\tIP_MF                                   = 0x2000\n\tIP_MIN_MEMBERSHIPS                      = 0x1f\n\tIP_MSFILTER                             = 0x4a\n\tIP_MSS                                  = 0x240\n\tIP_MULTICAST_IF                         = 0x9\n\tIP_MULTICAST_IFINDEX                    = 0x42\n\tIP_MULTICAST_LOOP                       = 0xb\n\tIP_MULTICAST_TTL                        = 0xa\n\tIP_MULTICAST_VIF                        = 0xe\n\tIP_NAT__XXX                             = 0x37\n\tIP_OFFMASK                              = 0x1fff\n\tIP_OLD_FW_ADD                           = 0x32\n\tIP_OLD_FW_DEL                           = 0x33\n\tIP_OLD_FW_FLUSH                         = 0x34\n\tIP_OLD_FW_GET                           = 0x36\n\tIP_OLD_FW_RESETLOG                      = 0x38\n\tIP_OLD_FW_ZERO                          = 0x35\n\tIP_OPTIONS                              = 0x1\n\tIP_PKTINFO                              = 0x1a\n\tIP_PORTRANGE                            = 0x13\n\tIP_PORTRANGE_DEFAULT                    = 0x0\n\tIP_PORTRANGE_HIGH                       = 0x1\n\tIP_PORTRANGE_LOW                        = 0x2\n\tIP_RECVDSTADDR                          = 0x7\n\tIP_RECVIF                               = 0x14\n\tIP_RECVOPTS                             = 0x5\n\tIP_RECVPKTINFO                          = 0x1a\n\tIP_RECVRETOPTS                          = 0x6\n\tIP_RECVTOS                              = 0x1b\n\tIP_RECVTTL                              = 0x18\n\tIP_RETOPTS                              = 0x8\n\tIP_RF                                   = 0x8000\n\tIP_RSVP_OFF                             = 0x10\n\tIP_RSVP_ON                              = 0xf\n\tIP_RSVP_VIF_OFF                         = 0x12\n\tIP_RSVP_VIF_ON                          = 0x11\n\tIP_STRIPHDR                             = 0x17\n\tIP_TOS                                  = 0x3\n\tIP_TRAFFIC_MGT_BACKGROUND               = 0x41\n\tIP_TTL                                  = 0x4\n\tIP_UNBLOCK_SOURCE                       = 0x49\n\tISIG                                    = 0x80\n\tISTRIP                                  = 0x20\n\tIUTF8                                   = 0x4000\n\tIXANY                                   = 0x800\n\tIXOFF                                   = 0x400\n\tIXON                                    = 0x200\n\tKERN_HOSTNAME                           = 0xa\n\tKERN_OSRELEASE                          = 0x2\n\tKERN_OSTYPE                             = 0x1\n\tKERN_VERSION                            = 0x4\n\tLOCAL_PEERCRED                          = 0x1\n\tLOCAL_PEEREPID                          = 0x3\n\tLOCAL_PEEREUUID                         = 0x5\n\tLOCAL_PEERPID                           = 0x2\n\tLOCAL_PEERTOKEN                         = 0x6\n\tLOCAL_PEERUUID                          = 0x4\n\tLOCK_EX                                 = 0x2\n\tLOCK_NB                                 = 0x4\n\tLOCK_SH                                 = 0x1\n\tLOCK_UN                                 = 0x8\n\tMADV_CAN_REUSE                          = 0x9\n\tMADV_DONTNEED                           = 0x4\n\tMADV_FREE                               = 0x5\n\tMADV_FREE_REUSABLE                      = 0x7\n\tMADV_FREE_REUSE                         = 0x8\n\tMADV_NORMAL                             = 0x0\n\tMADV_PAGEOUT                            = 0xa\n\tMADV_RANDOM                             = 0x1\n\tMADV_SEQUENTIAL                         = 0x2\n\tMADV_WILLNEED                           = 0x3\n\tMADV_ZERO_WIRED_PAGES                   = 0x6\n\tMAP_32BIT                               = 0x8000\n\tMAP_ANON                                = 0x1000\n\tMAP_ANONYMOUS                           = 0x1000\n\tMAP_COPY                                = 0x2\n\tMAP_FILE                                = 0x0\n\tMAP_FIXED                               = 0x10\n\tMAP_HASSEMAPHORE                        = 0x200\n\tMAP_JIT                                 = 0x800\n\tMAP_NOCACHE                             = 0x400\n\tMAP_NOEXTEND                            = 0x100\n\tMAP_NORESERVE                           = 0x40\n\tMAP_PRIVATE                             = 0x2\n\tMAP_RENAME                              = 0x20\n\tMAP_RESERVED0080                        = 0x80\n\tMAP_RESILIENT_CODESIGN                  = 0x2000\n\tMAP_RESILIENT_MEDIA                     = 0x4000\n\tMAP_SHARED                              = 0x1\n\tMAP_TRANSLATED_ALLOW_EXECUTE            = 0x20000\n\tMAP_UNIX03                              = 0x40000\n\tMCAST_BLOCK_SOURCE                      = 0x54\n\tMCAST_EXCLUDE                           = 0x2\n\tMCAST_INCLUDE                           = 0x1\n\tMCAST_JOIN_GROUP                        = 0x50\n\tMCAST_JOIN_SOURCE_GROUP                 = 0x52\n\tMCAST_LEAVE_GROUP                       = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP                = 0x53\n\tMCAST_UNBLOCK_SOURCE                    = 0x55\n\tMCAST_UNDEFINED                         = 0x0\n\tMCL_CURRENT                             = 0x1\n\tMCL_FUTURE                              = 0x2\n\tMNT_ASYNC                               = 0x40\n\tMNT_AUTOMOUNTED                         = 0x400000\n\tMNT_CMDFLAGS                            = 0xf0000\n\tMNT_CPROTECT                            = 0x80\n\tMNT_DEFWRITE                            = 0x2000000\n\tMNT_DONTBROWSE                          = 0x100000\n\tMNT_DOVOLFS                             = 0x8000\n\tMNT_DWAIT                               = 0x4\n\tMNT_EXPORTED                            = 0x100\n\tMNT_EXT_ROOT_DATA_VOL                   = 0x1\n\tMNT_FORCE                               = 0x80000\n\tMNT_IGNORE_OWNERSHIP                    = 0x200000\n\tMNT_JOURNALED                           = 0x800000\n\tMNT_LOCAL                               = 0x1000\n\tMNT_MULTILABEL                          = 0x4000000\n\tMNT_NOATIME                             = 0x10000000\n\tMNT_NOBLOCK                             = 0x20000\n\tMNT_NODEV                               = 0x10\n\tMNT_NOEXEC                              = 0x4\n\tMNT_NOSUID                              = 0x8\n\tMNT_NOUSERXATTR                         = 0x1000000\n\tMNT_NOWAIT                              = 0x2\n\tMNT_QUARANTINE                          = 0x400\n\tMNT_QUOTA                               = 0x2000\n\tMNT_RDONLY                              = 0x1\n\tMNT_RELOAD                              = 0x40000\n\tMNT_REMOVABLE                           = 0x200\n\tMNT_ROOTFS                              = 0x4000\n\tMNT_SNAPSHOT                            = 0x40000000\n\tMNT_STRICTATIME                         = 0x80000000\n\tMNT_SYNCHRONOUS                         = 0x2\n\tMNT_UNION                               = 0x20\n\tMNT_UNKNOWNPERMISSIONS                  = 0x200000\n\tMNT_UPDATE                              = 0x10000\n\tMNT_VISFLAGMASK                         = 0xd7f0f7ff\n\tMNT_WAIT                                = 0x1\n\tMSG_CTRUNC                              = 0x20\n\tMSG_DONTROUTE                           = 0x4\n\tMSG_DONTWAIT                            = 0x80\n\tMSG_EOF                                 = 0x100\n\tMSG_EOR                                 = 0x8\n\tMSG_FLUSH                               = 0x400\n\tMSG_HAVEMORE                            = 0x2000\n\tMSG_HOLD                                = 0x800\n\tMSG_NEEDSA                              = 0x10000\n\tMSG_NOSIGNAL                            = 0x80000\n\tMSG_OOB                                 = 0x1\n\tMSG_PEEK                                = 0x2\n\tMSG_RCVMORE                             = 0x4000\n\tMSG_SEND                                = 0x1000\n\tMSG_TRUNC                               = 0x10\n\tMSG_WAITALL                             = 0x40\n\tMSG_WAITSTREAM                          = 0x200\n\tMS_ASYNC                                = 0x1\n\tMS_DEACTIVATE                           = 0x8\n\tMS_INVALIDATE                           = 0x2\n\tMS_KILLPAGES                            = 0x4\n\tMS_SYNC                                 = 0x10\n\tNAME_MAX                                = 0xff\n\tNET_RT_DUMP                             = 0x1\n\tNET_RT_DUMP2                            = 0x7\n\tNET_RT_FLAGS                            = 0x2\n\tNET_RT_FLAGS_PRIV                       = 0xa\n\tNET_RT_IFLIST                           = 0x3\n\tNET_RT_IFLIST2                          = 0x6\n\tNET_RT_MAXID                            = 0xb\n\tNET_RT_STAT                             = 0x4\n\tNET_RT_TRASH                            = 0x5\n\tNFDBITS                                 = 0x20\n\tNL0                                     = 0x0\n\tNL1                                     = 0x100\n\tNL2                                     = 0x200\n\tNL3                                     = 0x300\n\tNLDLY                                   = 0x300\n\tNOFLSH                                  = 0x80000000\n\tNOKERNINFO                              = 0x2000000\n\tNOTE_ABSOLUTE                           = 0x8\n\tNOTE_ATTRIB                             = 0x8\n\tNOTE_BACKGROUND                         = 0x40\n\tNOTE_CHILD                              = 0x4\n\tNOTE_CRITICAL                           = 0x20\n\tNOTE_DELETE                             = 0x1\n\tNOTE_EXEC                               = 0x20000000\n\tNOTE_EXIT                               = 0x80000000\n\tNOTE_EXITSTATUS                         = 0x4000000\n\tNOTE_EXIT_CSERROR                       = 0x40000\n\tNOTE_EXIT_DECRYPTFAIL                   = 0x10000\n\tNOTE_EXIT_DETAIL                        = 0x2000000\n\tNOTE_EXIT_DETAIL_MASK                   = 0x70000\n\tNOTE_EXIT_MEMORY                        = 0x20000\n\tNOTE_EXIT_REPARENTED                    = 0x80000\n\tNOTE_EXTEND                             = 0x4\n\tNOTE_FFAND                              = 0x40000000\n\tNOTE_FFCOPY                             = 0xc0000000\n\tNOTE_FFCTRLMASK                         = 0xc0000000\n\tNOTE_FFLAGSMASK                         = 0xffffff\n\tNOTE_FFNOP                              = 0x0\n\tNOTE_FFOR                               = 0x80000000\n\tNOTE_FORK                               = 0x40000000\n\tNOTE_FUNLOCK                            = 0x100\n\tNOTE_LEEWAY                             = 0x10\n\tNOTE_LINK                               = 0x10\n\tNOTE_LOWAT                              = 0x1\n\tNOTE_MACHTIME                           = 0x100\n\tNOTE_MACH_CONTINUOUS_TIME               = 0x80\n\tNOTE_NONE                               = 0x80\n\tNOTE_NSECONDS                           = 0x4\n\tNOTE_OOB                                = 0x2\n\tNOTE_PCTRLMASK                          = -0x100000\n\tNOTE_PDATAMASK                          = 0xfffff\n\tNOTE_REAP                               = 0x10000000\n\tNOTE_RENAME                             = 0x20\n\tNOTE_REVOKE                             = 0x40\n\tNOTE_SECONDS                            = 0x1\n\tNOTE_SIGNAL                             = 0x8000000\n\tNOTE_TRACK                              = 0x1\n\tNOTE_TRACKERR                           = 0x2\n\tNOTE_TRIGGER                            = 0x1000000\n\tNOTE_USECONDS                           = 0x2\n\tNOTE_VM_ERROR                           = 0x10000000\n\tNOTE_VM_PRESSURE                        = 0x80000000\n\tNOTE_VM_PRESSURE_SUDDEN_TERMINATE       = 0x20000000\n\tNOTE_VM_PRESSURE_TERMINATE              = 0x40000000\n\tNOTE_WRITE                              = 0x2\n\tOCRNL                                   = 0x10\n\tOFDEL                                   = 0x20000\n\tOFILL                                   = 0x80\n\tONLCR                                   = 0x2\n\tONLRET                                  = 0x40\n\tONOCR                                   = 0x20\n\tONOEOT                                  = 0x8\n\tOPOST                                   = 0x1\n\tOXTABS                                  = 0x4\n\tO_ACCMODE                               = 0x3\n\tO_ALERT                                 = 0x20000000\n\tO_APPEND                                = 0x8\n\tO_ASYNC                                 = 0x40\n\tO_CLOEXEC                               = 0x1000000\n\tO_CREAT                                 = 0x200\n\tO_DIRECTORY                             = 0x100000\n\tO_DP_GETRAWENCRYPTED                    = 0x1\n\tO_DP_GETRAWUNENCRYPTED                  = 0x2\n\tO_DSYNC                                 = 0x400000\n\tO_EVTONLY                               = 0x8000\n\tO_EXCL                                  = 0x800\n\tO_EXLOCK                                = 0x20\n\tO_FSYNC                                 = 0x80\n\tO_NDELAY                                = 0x4\n\tO_NOCTTY                                = 0x20000\n\tO_NOFOLLOW                              = 0x100\n\tO_NOFOLLOW_ANY                          = 0x20000000\n\tO_NONBLOCK                              = 0x4\n\tO_POPUP                                 = 0x80000000\n\tO_RDONLY                                = 0x0\n\tO_RDWR                                  = 0x2\n\tO_SHLOCK                                = 0x10\n\tO_SYMLINK                               = 0x200000\n\tO_SYNC                                  = 0x80\n\tO_TRUNC                                 = 0x400\n\tO_WRONLY                                = 0x1\n\tPARENB                                  = 0x1000\n\tPARMRK                                  = 0x8\n\tPARODD                                  = 0x2000\n\tPENDIN                                  = 0x20000000\n\tPRIO_PGRP                               = 0x1\n\tPRIO_PROCESS                            = 0x0\n\tPRIO_USER                               = 0x2\n\tPROT_EXEC                               = 0x4\n\tPROT_NONE                               = 0x0\n\tPROT_READ                               = 0x1\n\tPROT_WRITE                              = 0x2\n\tPT_ATTACH                               = 0xa\n\tPT_ATTACHEXC                            = 0xe\n\tPT_CONTINUE                             = 0x7\n\tPT_DENY_ATTACH                          = 0x1f\n\tPT_DETACH                               = 0xb\n\tPT_FIRSTMACH                            = 0x20\n\tPT_FORCEQUOTA                           = 0x1e\n\tPT_KILL                                 = 0x8\n\tPT_READ_D                               = 0x2\n\tPT_READ_I                               = 0x1\n\tPT_READ_U                               = 0x3\n\tPT_SIGEXC                               = 0xc\n\tPT_STEP                                 = 0x9\n\tPT_THUPDATE                             = 0xd\n\tPT_TRACE_ME                             = 0x0\n\tPT_WRITE_D                              = 0x5\n\tPT_WRITE_I                              = 0x4\n\tPT_WRITE_U                              = 0x6\n\tRENAME_EXCL                             = 0x4\n\tRENAME_NOFOLLOW_ANY                     = 0x10\n\tRENAME_RESERVED1                        = 0x8\n\tRENAME_SECLUDE                          = 0x1\n\tRENAME_SWAP                             = 0x2\n\tRLIMIT_AS                               = 0x5\n\tRLIMIT_CORE                             = 0x4\n\tRLIMIT_CPU                              = 0x0\n\tRLIMIT_CPU_USAGE_MONITOR                = 0x2\n\tRLIMIT_DATA                             = 0x2\n\tRLIMIT_FSIZE                            = 0x1\n\tRLIMIT_MEMLOCK                          = 0x6\n\tRLIMIT_NOFILE                           = 0x8\n\tRLIMIT_NPROC                            = 0x7\n\tRLIMIT_RSS                              = 0x5\n\tRLIMIT_STACK                            = 0x3\n\tRLIM_INFINITY                           = 0x7fffffffffffffff\n\tRTAX_AUTHOR                             = 0x6\n\tRTAX_BRD                                = 0x7\n\tRTAX_DST                                = 0x0\n\tRTAX_GATEWAY                            = 0x1\n\tRTAX_GENMASK                            = 0x3\n\tRTAX_IFA                                = 0x5\n\tRTAX_IFP                                = 0x4\n\tRTAX_MAX                                = 0x8\n\tRTAX_NETMASK                            = 0x2\n\tRTA_AUTHOR                              = 0x40\n\tRTA_BRD                                 = 0x80\n\tRTA_DST                                 = 0x1\n\tRTA_GATEWAY                             = 0x2\n\tRTA_GENMASK                             = 0x8\n\tRTA_IFA                                 = 0x20\n\tRTA_IFP                                 = 0x10\n\tRTA_NETMASK                             = 0x4\n\tRTF_BLACKHOLE                           = 0x1000\n\tRTF_BROADCAST                           = 0x400000\n\tRTF_CLONING                             = 0x100\n\tRTF_CONDEMNED                           = 0x2000000\n\tRTF_DEAD                                = 0x20000000\n\tRTF_DELCLONE                            = 0x80\n\tRTF_DONE                                = 0x40\n\tRTF_DYNAMIC                             = 0x10\n\tRTF_GATEWAY                             = 0x2\n\tRTF_GLOBAL                              = 0x40000000\n\tRTF_HOST                                = 0x4\n\tRTF_IFREF                               = 0x4000000\n\tRTF_IFSCOPE                             = 0x1000000\n\tRTF_LLDATA                              = 0x400\n\tRTF_LLINFO                              = 0x400\n\tRTF_LOCAL                               = 0x200000\n\tRTF_MODIFIED                            = 0x20\n\tRTF_MULTICAST                           = 0x800000\n\tRTF_NOIFREF                             = 0x2000\n\tRTF_PINNED                              = 0x100000\n\tRTF_PRCLONING                           = 0x10000\n\tRTF_PROTO1                              = 0x8000\n\tRTF_PROTO2                              = 0x4000\n\tRTF_PROTO3                              = 0x40000\n\tRTF_PROXY                               = 0x8000000\n\tRTF_REJECT                              = 0x8\n\tRTF_ROUTER                              = 0x10000000\n\tRTF_STATIC                              = 0x800\n\tRTF_UP                                  = 0x1\n\tRTF_WASCLONED                           = 0x20000\n\tRTF_XRESOLVE                            = 0x200\n\tRTM_ADD                                 = 0x1\n\tRTM_CHANGE                              = 0x3\n\tRTM_DELADDR                             = 0xd\n\tRTM_DELETE                              = 0x2\n\tRTM_DELMADDR                            = 0x10\n\tRTM_GET                                 = 0x4\n\tRTM_GET2                                = 0x14\n\tRTM_IFINFO                              = 0xe\n\tRTM_IFINFO2                             = 0x12\n\tRTM_LOCK                                = 0x8\n\tRTM_LOSING                              = 0x5\n\tRTM_MISS                                = 0x7\n\tRTM_NEWADDR                             = 0xc\n\tRTM_NEWMADDR                            = 0xf\n\tRTM_NEWMADDR2                           = 0x13\n\tRTM_OLDADD                              = 0x9\n\tRTM_OLDDEL                              = 0xa\n\tRTM_REDIRECT                            = 0x6\n\tRTM_RESOLVE                             = 0xb\n\tRTM_RTTUNIT                             = 0xf4240\n\tRTM_VERSION                             = 0x5\n\tRTV_EXPIRE                              = 0x4\n\tRTV_HOPCOUNT                            = 0x2\n\tRTV_MTU                                 = 0x1\n\tRTV_RPIPE                               = 0x8\n\tRTV_RTT                                 = 0x40\n\tRTV_RTTVAR                              = 0x80\n\tRTV_SPIPE                               = 0x10\n\tRTV_SSTHRESH                            = 0x20\n\tRUSAGE_CHILDREN                         = -0x1\n\tRUSAGE_SELF                             = 0x0\n\tSAE_ASSOCID_ALL                         = 0xffffffff\n\tSAE_ASSOCID_ANY                         = 0x0\n\tSAE_CONNID_ALL                          = 0xffffffff\n\tSAE_CONNID_ANY                          = 0x0\n\tSCM_CREDS                               = 0x3\n\tSCM_RIGHTS                              = 0x1\n\tSCM_TIMESTAMP                           = 0x2\n\tSCM_TIMESTAMP_MONOTONIC                 = 0x4\n\tSEEK_CUR                                = 0x1\n\tSEEK_DATA                               = 0x4\n\tSEEK_END                                = 0x2\n\tSEEK_HOLE                               = 0x3\n\tSEEK_SET                                = 0x0\n\tSF_APPEND                               = 0x40000\n\tSF_ARCHIVED                             = 0x10000\n\tSF_DATALESS                             = 0x40000000\n\tSF_FIRMLINK                             = 0x800000\n\tSF_IMMUTABLE                            = 0x20000\n\tSF_NOUNLINK                             = 0x100000\n\tSF_RESTRICTED                           = 0x80000\n\tSF_SETTABLE                             = 0x3fff0000\n\tSF_SUPPORTED                            = 0x9f0000\n\tSF_SYNTHETIC                            = 0xc0000000\n\tSHUT_RD                                 = 0x0\n\tSHUT_RDWR                               = 0x2\n\tSHUT_WR                                 = 0x1\n\tSIOCADDMULTI                            = 0x80206931\n\tSIOCAIFADDR                             = 0x8040691a\n\tSIOCARPIPLL                             = 0xc0206928\n\tSIOCATMARK                              = 0x40047307\n\tSIOCAUTOADDR                            = 0xc0206926\n\tSIOCAUTONETMASK                         = 0x80206927\n\tSIOCDELMULTI                            = 0x80206932\n\tSIOCDIFADDR                             = 0x80206919\n\tSIOCDIFPHYADDR                          = 0x80206941\n\tSIOCGDRVSPEC                            = 0xc028697b\n\tSIOCGETVLAN                             = 0xc020697f\n\tSIOCGHIWAT                              = 0x40047301\n\tSIOCGIF6LOWPAN                          = 0xc02069c5\n\tSIOCGIFADDR                             = 0xc0206921\n\tSIOCGIFALTMTU                           = 0xc0206948\n\tSIOCGIFASYNCMAP                         = 0xc020697c\n\tSIOCGIFBOND                             = 0xc0206947\n\tSIOCGIFBRDADDR                          = 0xc0206923\n\tSIOCGIFCAP                              = 0xc020695b\n\tSIOCGIFCONF                             = 0xc00c6924\n\tSIOCGIFDEVMTU                           = 0xc0206944\n\tSIOCGIFDSTADDR                          = 0xc0206922\n\tSIOCGIFFLAGS                            = 0xc0206911\n\tSIOCGIFFUNCTIONALTYPE                   = 0xc02069ad\n\tSIOCGIFGENERIC                          = 0xc020693a\n\tSIOCGIFKPI                              = 0xc0206987\n\tSIOCGIFMAC                              = 0xc0206982\n\tSIOCGIFMEDIA                            = 0xc02c6938\n\tSIOCGIFMETRIC                           = 0xc0206917\n\tSIOCGIFMTU                              = 0xc0206933\n\tSIOCGIFNETMASK                          = 0xc0206925\n\tSIOCGIFPDSTADDR                         = 0xc0206940\n\tSIOCGIFPHYS                             = 0xc0206935\n\tSIOCGIFPSRCADDR                         = 0xc020693f\n\tSIOCGIFSTATUS                           = 0xc331693d\n\tSIOCGIFVLAN                             = 0xc020697f\n\tSIOCGIFWAKEFLAGS                        = 0xc0206988\n\tSIOCGIFXMEDIA                           = 0xc02c6948\n\tSIOCGLOWAT                              = 0x40047303\n\tSIOCGPGRP                               = 0x40047309\n\tSIOCIFCREATE                            = 0xc0206978\n\tSIOCIFCREATE2                           = 0xc020697a\n\tSIOCIFDESTROY                           = 0x80206979\n\tSIOCIFGCLONERS                          = 0xc0106981\n\tSIOCRSLVMULTI                           = 0xc010693b\n\tSIOCSDRVSPEC                            = 0x8028697b\n\tSIOCSETVLAN                             = 0x8020697e\n\tSIOCSHIWAT                              = 0x80047300\n\tSIOCSIF6LOWPAN                          = 0x802069c4\n\tSIOCSIFADDR                             = 0x8020690c\n\tSIOCSIFALTMTU                           = 0x80206945\n\tSIOCSIFASYNCMAP                         = 0x8020697d\n\tSIOCSIFBOND                             = 0x80206946\n\tSIOCSIFBRDADDR                          = 0x80206913\n\tSIOCSIFCAP                              = 0x8020695a\n\tSIOCSIFDSTADDR                          = 0x8020690e\n\tSIOCSIFFLAGS                            = 0x80206910\n\tSIOCSIFGENERIC                          = 0x80206939\n\tSIOCSIFKPI                              = 0x80206986\n\tSIOCSIFLLADDR                           = 0x8020693c\n\tSIOCSIFMAC                              = 0x80206983\n\tSIOCSIFMEDIA                            = 0xc0206937\n\tSIOCSIFMETRIC                           = 0x80206918\n\tSIOCSIFMTU                              = 0x80206934\n\tSIOCSIFNETMASK                          = 0x80206916\n\tSIOCSIFPHYADDR                          = 0x8040693e\n\tSIOCSIFPHYS                             = 0x80206936\n\tSIOCSIFVLAN                             = 0x8020697e\n\tSIOCSLOWAT                              = 0x80047302\n\tSIOCSPGRP                               = 0x80047308\n\tSOCK_DGRAM                              = 0x2\n\tSOCK_MAXADDRLEN                         = 0xff\n\tSOCK_RAW                                = 0x3\n\tSOCK_RDM                                = 0x4\n\tSOCK_SEQPACKET                          = 0x5\n\tSOCK_STREAM                             = 0x1\n\tSOL_LOCAL                               = 0x0\n\tSOL_SOCKET                              = 0xffff\n\tSOMAXCONN                               = 0x80\n\tSO_ACCEPTCONN                           = 0x2\n\tSO_BROADCAST                            = 0x20\n\tSO_DEBUG                                = 0x1\n\tSO_DONTROUTE                            = 0x10\n\tSO_DONTTRUNC                            = 0x2000\n\tSO_ERROR                                = 0x1007\n\tSO_KEEPALIVE                            = 0x8\n\tSO_LABEL                                = 0x1010\n\tSO_LINGER                               = 0x80\n\tSO_LINGER_SEC                           = 0x1080\n\tSO_NETSVC_MARKING_LEVEL                 = 0x1119\n\tSO_NET_SERVICE_TYPE                     = 0x1116\n\tSO_NKE                                  = 0x1021\n\tSO_NOADDRERR                            = 0x1023\n\tSO_NOSIGPIPE                            = 0x1022\n\tSO_NOTIFYCONFLICT                       = 0x1026\n\tSO_NP_EXTENSIONS                        = 0x1083\n\tSO_NREAD                                = 0x1020\n\tSO_NUMRCVPKT                            = 0x1112\n\tSO_NWRITE                               = 0x1024\n\tSO_OOBINLINE                            = 0x100\n\tSO_PEERLABEL                            = 0x1011\n\tSO_RANDOMPORT                           = 0x1082\n\tSO_RCVBUF                               = 0x1002\n\tSO_RCVLOWAT                             = 0x1004\n\tSO_RCVTIMEO                             = 0x1006\n\tSO_REUSEADDR                            = 0x4\n\tSO_REUSEPORT                            = 0x200\n\tSO_REUSESHAREUID                        = 0x1025\n\tSO_SNDBUF                               = 0x1001\n\tSO_SNDLOWAT                             = 0x1003\n\tSO_SNDTIMEO                             = 0x1005\n\tSO_TIMESTAMP                            = 0x400\n\tSO_TIMESTAMP_MONOTONIC                  = 0x800\n\tSO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = 0x1\n\tSO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = 0x4\n\tSO_TRACKER_ATTRIBUTE_FLAGS_TRACKER      = 0x2\n\tSO_TRACKER_TRANSPARENCY_VERSION         = 0x3\n\tSO_TYPE                                 = 0x1008\n\tSO_UPCALLCLOSEWAIT                      = 0x1027\n\tSO_USELOOPBACK                          = 0x40\n\tSO_WANTMORE                             = 0x4000\n\tSO_WANTOOBFLAG                          = 0x8000\n\tS_IEXEC                                 = 0x40\n\tS_IFBLK                                 = 0x6000\n\tS_IFCHR                                 = 0x2000\n\tS_IFDIR                                 = 0x4000\n\tS_IFIFO                                 = 0x1000\n\tS_IFLNK                                 = 0xa000\n\tS_IFMT                                  = 0xf000\n\tS_IFREG                                 = 0x8000\n\tS_IFSOCK                                = 0xc000\n\tS_IFWHT                                 = 0xe000\n\tS_IREAD                                 = 0x100\n\tS_IRGRP                                 = 0x20\n\tS_IROTH                                 = 0x4\n\tS_IRUSR                                 = 0x100\n\tS_IRWXG                                 = 0x38\n\tS_IRWXO                                 = 0x7\n\tS_IRWXU                                 = 0x1c0\n\tS_ISGID                                 = 0x400\n\tS_ISTXT                                 = 0x200\n\tS_ISUID                                 = 0x800\n\tS_ISVTX                                 = 0x200\n\tS_IWGRP                                 = 0x10\n\tS_IWOTH                                 = 0x2\n\tS_IWRITE                                = 0x80\n\tS_IWUSR                                 = 0x80\n\tS_IXGRP                                 = 0x8\n\tS_IXOTH                                 = 0x1\n\tS_IXUSR                                 = 0x40\n\tTAB0                                    = 0x0\n\tTAB1                                    = 0x400\n\tTAB2                                    = 0x800\n\tTAB3                                    = 0x4\n\tTABDLY                                  = 0xc04\n\tTCIFLUSH                                = 0x1\n\tTCIOFF                                  = 0x3\n\tTCIOFLUSH                               = 0x3\n\tTCION                                   = 0x4\n\tTCOFLUSH                                = 0x2\n\tTCOOFF                                  = 0x1\n\tTCOON                                   = 0x2\n\tTCPOPT_CC                               = 0xb\n\tTCPOPT_CCECHO                           = 0xd\n\tTCPOPT_CCNEW                            = 0xc\n\tTCPOPT_EOL                              = 0x0\n\tTCPOPT_FASTOPEN                         = 0x22\n\tTCPOPT_MAXSEG                           = 0x2\n\tTCPOPT_NOP                              = 0x1\n\tTCPOPT_SACK                             = 0x5\n\tTCPOPT_SACK_HDR                         = 0x1010500\n\tTCPOPT_SACK_PERMITTED                   = 0x4\n\tTCPOPT_SACK_PERMIT_HDR                  = 0x1010402\n\tTCPOPT_SIGNATURE                        = 0x13\n\tTCPOPT_TIMESTAMP                        = 0x8\n\tTCPOPT_TSTAMP_HDR                       = 0x101080a\n\tTCPOPT_WINDOW                           = 0x3\n\tTCP_CONNECTIONTIMEOUT                   = 0x20\n\tTCP_CONNECTION_INFO                     = 0x106\n\tTCP_ENABLE_ECN                          = 0x104\n\tTCP_FASTOPEN                            = 0x105\n\tTCP_KEEPALIVE                           = 0x10\n\tTCP_KEEPCNT                             = 0x102\n\tTCP_KEEPINTVL                           = 0x101\n\tTCP_MAXHLEN                             = 0x3c\n\tTCP_MAXOLEN                             = 0x28\n\tTCP_MAXSEG                              = 0x2\n\tTCP_MAXWIN                              = 0xffff\n\tTCP_MAX_SACK                            = 0x4\n\tTCP_MAX_WINSHIFT                        = 0xe\n\tTCP_MINMSS                              = 0xd8\n\tTCP_MSS                                 = 0x200\n\tTCP_NODELAY                             = 0x1\n\tTCP_NOOPT                               = 0x8\n\tTCP_NOPUSH                              = 0x4\n\tTCP_NOTSENT_LOWAT                       = 0x201\n\tTCP_RXT_CONNDROPTIME                    = 0x80\n\tTCP_RXT_FINDROP                         = 0x100\n\tTCP_SENDMOREACKS                        = 0x103\n\tTCSAFLUSH                               = 0x2\n\tTIOCCBRK                                = 0x2000747a\n\tTIOCCDTR                                = 0x20007478\n\tTIOCCONS                                = 0x80047462\n\tTIOCDCDTIMESTAMP                        = 0x40107458\n\tTIOCDRAIN                               = 0x2000745e\n\tTIOCDSIMICROCODE                        = 0x20007455\n\tTIOCEXCL                                = 0x2000740d\n\tTIOCEXT                                 = 0x80047460\n\tTIOCFLUSH                               = 0x80047410\n\tTIOCGDRAINWAIT                          = 0x40047456\n\tTIOCGETA                                = 0x40487413\n\tTIOCGETD                                = 0x4004741a\n\tTIOCGPGRP                               = 0x40047477\n\tTIOCGWINSZ                              = 0x40087468\n\tTIOCIXOFF                               = 0x20007480\n\tTIOCIXON                                = 0x20007481\n\tTIOCMBIC                                = 0x8004746b\n\tTIOCMBIS                                = 0x8004746c\n\tTIOCMGDTRWAIT                           = 0x4004745a\n\tTIOCMGET                                = 0x4004746a\n\tTIOCMODG                                = 0x40047403\n\tTIOCMODS                                = 0x80047404\n\tTIOCMSDTRWAIT                           = 0x8004745b\n\tTIOCMSET                                = 0x8004746d\n\tTIOCM_CAR                               = 0x40\n\tTIOCM_CD                                = 0x40\n\tTIOCM_CTS                               = 0x20\n\tTIOCM_DSR                               = 0x100\n\tTIOCM_DTR                               = 0x2\n\tTIOCM_LE                                = 0x1\n\tTIOCM_RI                                = 0x80\n\tTIOCM_RNG                               = 0x80\n\tTIOCM_RTS                               = 0x4\n\tTIOCM_SR                                = 0x10\n\tTIOCM_ST                                = 0x8\n\tTIOCNOTTY                               = 0x20007471\n\tTIOCNXCL                                = 0x2000740e\n\tTIOCOUTQ                                = 0x40047473\n\tTIOCPKT                                 = 0x80047470\n\tTIOCPKT_DATA                            = 0x0\n\tTIOCPKT_DOSTOP                          = 0x20\n\tTIOCPKT_FLUSHREAD                       = 0x1\n\tTIOCPKT_FLUSHWRITE                      = 0x2\n\tTIOCPKT_IOCTL                           = 0x40\n\tTIOCPKT_NOSTOP                          = 0x10\n\tTIOCPKT_START                           = 0x8\n\tTIOCPKT_STOP                            = 0x4\n\tTIOCPTYGNAME                            = 0x40807453\n\tTIOCPTYGRANT                            = 0x20007454\n\tTIOCPTYUNLK                             = 0x20007452\n\tTIOCREMOTE                              = 0x80047469\n\tTIOCSBRK                                = 0x2000747b\n\tTIOCSCONS                               = 0x20007463\n\tTIOCSCTTY                               = 0x20007461\n\tTIOCSDRAINWAIT                          = 0x80047457\n\tTIOCSDTR                                = 0x20007479\n\tTIOCSETA                                = 0x80487414\n\tTIOCSETAF                               = 0x80487416\n\tTIOCSETAW                               = 0x80487415\n\tTIOCSETD                                = 0x8004741b\n\tTIOCSIG                                 = 0x2000745f\n\tTIOCSPGRP                               = 0x80047476\n\tTIOCSTART                               = 0x2000746e\n\tTIOCSTAT                                = 0x20007465\n\tTIOCSTI                                 = 0x80017472\n\tTIOCSTOP                                = 0x2000746f\n\tTIOCSWINSZ                              = 0x80087467\n\tTIOCTIMESTAMP                           = 0x40107459\n\tTIOCUCNTL                               = 0x80047466\n\tTOSTOP                                  = 0x400000\n\tUF_APPEND                               = 0x4\n\tUF_COMPRESSED                           = 0x20\n\tUF_DATAVAULT                            = 0x80\n\tUF_HIDDEN                               = 0x8000\n\tUF_IMMUTABLE                            = 0x2\n\tUF_NODUMP                               = 0x1\n\tUF_OPAQUE                               = 0x8\n\tUF_SETTABLE                             = 0xffff\n\tUF_TRACKED                              = 0x40\n\tVDISCARD                                = 0xf\n\tVDSUSP                                  = 0xb\n\tVEOF                                    = 0x0\n\tVEOL                                    = 0x1\n\tVEOL2                                   = 0x2\n\tVERASE                                  = 0x3\n\tVINTR                                   = 0x8\n\tVKILL                                   = 0x5\n\tVLNEXT                                  = 0xe\n\tVMADDR_CID_ANY                          = 0xffffffff\n\tVMADDR_CID_HOST                         = 0x2\n\tVMADDR_CID_HYPERVISOR                   = 0x0\n\tVMADDR_CID_RESERVED                     = 0x1\n\tVMADDR_PORT_ANY                         = 0xffffffff\n\tVMIN                                    = 0x10\n\tVM_LOADAVG                              = 0x2\n\tVM_MACHFACTOR                           = 0x4\n\tVM_MAXID                                = 0x6\n\tVM_METER                                = 0x1\n\tVM_SWAPUSAGE                            = 0x5\n\tVQUIT                                   = 0x9\n\tVREPRINT                                = 0x6\n\tVSTART                                  = 0xc\n\tVSTATUS                                 = 0x12\n\tVSTOP                                   = 0xd\n\tVSUSP                                   = 0xa\n\tVT0                                     = 0x0\n\tVT1                                     = 0x10000\n\tVTDLY                                   = 0x10000\n\tVTIME                                   = 0x11\n\tVWERASE                                 = 0x4\n\tWCONTINUED                              = 0x10\n\tWCOREFLAG                               = 0x80\n\tWEXITED                                 = 0x4\n\tWNOHANG                                 = 0x1\n\tWNOWAIT                                 = 0x20\n\tWORDSIZE                                = 0x40\n\tWSTOPPED                                = 0x8\n\tWUNTRACED                               = 0x2\n\tXATTR_CREATE                            = 0x2\n\tXATTR_NODEFAULT                         = 0x10\n\tXATTR_NOFOLLOW                          = 0x1\n\tXATTR_NOSECURITY                        = 0x8\n\tXATTR_REPLACE                           = 0x4\n\tXATTR_SHOWCOMPRESSION                   = 0x20\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADARCH        = syscall.Errno(0x56)\n\tEBADEXEC        = syscall.Errno(0x55)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMACHO       = syscall.Errno(0x58)\n\tEBADMSG         = syscall.Errno(0x5e)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x59)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDEVERR         = syscall.Errno(0x53)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x5a)\n\tEILSEQ          = syscall.Errno(0x5c)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x6a)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5f)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x60)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x61)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5b)\n\tENOPOLICY       = syscall.Errno(0x67)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x62)\n\tENOSTR          = syscall.Errno(0x63)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x68)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x66)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x69)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x64)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEPWROFF         = syscall.Errno(0x52)\n\tEQFULL          = syscall.Errno(0x6a)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHLIBVERS      = syscall.Errno(0x57)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x65)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EPWROFF\", \"device power is off\"},\n\t{83, \"EDEVERR\", \"device error\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EBADEXEC\", \"bad executable (or shared library)\"},\n\t{86, \"EBADARCH\", \"bad CPU type in executable\"},\n\t{87, \"ESHLIBVERS\", \"shared library version mismatch\"},\n\t{88, \"EBADMACHO\", \"malformed Mach-o file\"},\n\t{89, \"ECANCELED\", \"operation canceled\"},\n\t{90, \"EIDRM\", \"identifier removed\"},\n\t{91, \"ENOMSG\", \"no message of desired type\"},\n\t{92, \"EILSEQ\", \"illegal byte sequence\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EBADMSG\", \"bad message\"},\n\t{95, \"EMULTIHOP\", \"EMULTIHOP (Reserved)\"},\n\t{96, \"ENODATA\", \"no message available on STREAM\"},\n\t{97, \"ENOLINK\", \"ENOLINK (Reserved)\"},\n\t{98, \"ENOSR\", \"no STREAM resources\"},\n\t{99, \"ENOSTR\", \"not a STREAM\"},\n\t{100, \"EPROTO\", \"protocol error\"},\n\t{101, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{102, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{103, \"ENOPOLICY\", \"policy not found\"},\n\t{104, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{105, \"EOWNERDEAD\", \"previous owner died\"},\n\t{106, \"EQFULL\", \"interface output queue is full\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ATM                            = 0x1e\n\tAF_BLUETOOTH                      = 0x21\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x23\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x1c\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x22\n\tAF_NATM                           = 0x1d\n\tAF_NETBIOS                        = 0x6\n\tAF_NETGRAPH                       = 0x20\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x18\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104279\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044272\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSEESENT                      = 0x40044276\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x2000427a\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044278\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x8010427b\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044273\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCSSEESENT                      = 0x80044277\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DEFAULTBUFSIZE                = 0x1000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x80000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MAX_CLONES                    = 0x80\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MOD                           = 0x90\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBPF_XOR                           = 0xa0\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_MONOTONIC                   = 0x4\n\tCLOCK_MONOTONIC_FAST              = 0xc\n\tCLOCK_MONOTONIC_PRECISE           = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID          = 0xf\n\tCLOCK_PROF                        = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_REALTIME_FAST               = 0xa\n\tCLOCK_REALTIME_PRECISE            = 0x9\n\tCLOCK_SECOND                      = 0xd\n\tCLOCK_THREAD_CPUTIME_ID           = 0xe\n\tCLOCK_UPTIME                      = 0x5\n\tCLOCK_UPTIME_FAST                 = 0x8\n\tCLOCK_UPTIME_PRECISE              = 0x7\n\tCLOCK_VIRTUAL                     = 0x1\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x30000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB            = 0xff\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_BLUETOOTH_LE_LL               = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR     = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR       = 0xfe\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CHDLC                         = 0x68\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DBUS                          = 0xe7\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_DVB_CI                        = 0xeb\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_EPON                          = 0x103\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HHDLC                         = 0x79\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NOFCS            = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_INFINIBAND                    = 0xf7\n\tDLT_IPFILTER                      = 0x74\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPMI_HPM_2                    = 0x104\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPOIB                         = 0xf2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_ISO_14443                     = 0x108\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_ATM_CEMIC             = 0xee\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL          = 0xea\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_SRX_E2E               = 0xe9\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_JUNIPER_VS                    = 0xe8\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MATCHING_MAX                  = 0x109\n\tDLT_MATCHING_MIN                  = 0x68\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPEG_2_TS                     = 0xf3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_MUX27010                      = 0xec\n\tDLT_NETANALYZER                   = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT       = 0xf1\n\tDLT_NETLINK                       = 0xfd\n\tDLT_NFC_LLCP                      = 0xf5\n\tDLT_NFLOG                         = 0xef\n\tDLT_NG40                          = 0xf4\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PKTAP                         = 0x102\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PROFIBUS_DL                   = 0x101\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RDS                           = 0x109\n\tDLT_REDBACK_SMARTEDGE             = 0x20\n\tDLT_RIO                           = 0x7c\n\tDLT_RTAC_SERIAL                   = 0xfa\n\tDLT_SCCP                          = 0x8e\n\tDLT_SCTP                          = 0xf8\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_STANAG_5066_D_PDU             = 0xed\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USB_FREEBSD                   = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDLT_WATTSTOPPER_DLM               = 0x107\n\tDLT_WIHART                        = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU           = 0xfc\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDLT_ZWAVE_R1_R2                   = 0x105\n\tDLT_ZWAVE_R3                      = 0x106\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DBF                            = 0xf\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_EXCEPT                     = -0x8\n\tEVFILT_FS                         = -0xa\n\tEVFILT_MARKER                     = 0xf\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0xa\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_USER                       = -0x9\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_HUP                            = 0x800\n\tEV_NODATA                         = 0x1000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTEXIT_LWP                       = 0x10000\n\tEXTEXIT_PROC                      = 0x0\n\tEXTEXIT_SETINT                    = 0x1\n\tEXTEXIT_SIMPLE                    = 0x0\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUP2FD                          = 0xa\n\tF_DUP2FD_CLOEXEC                  = 0x12\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0x11\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_ALTPHYS                       = 0x4000\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x318e72\n\tIFF_DEBUG                         = 0x4\n\tIFF_IDIRECT                       = 0x200000\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MONITOR                       = 0x40000\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NPOLLING                      = 0x100000\n\tIFF_OACTIVE                       = 0x400\n\tIFF_OACTIVE_COMPAT                = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_POLLING                       = 0x10000\n\tIFF_POLLING_COMPAT                = 0x10000\n\tIFF_PPROMISC                      = 0x20000\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_SMART                         = 0x20\n\tIFF_STATICARP                     = 0x80000\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xf3\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_MASK                   = 0xfffffffe\n\tIPPROTO_3PC                       = 0x22\n\tIPPROTO_ADFS                      = 0x44\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_AHIP                      = 0x3d\n\tIPPROTO_APES                      = 0x63\n\tIPPROTO_ARGUS                     = 0xd\n\tIPPROTO_AX25                      = 0x5d\n\tIPPROTO_BHA                       = 0x31\n\tIPPROTO_BLT                       = 0x1e\n\tIPPROTO_BRSATMON                  = 0x4c\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_CFTP                      = 0x3e\n\tIPPROTO_CHAOS                     = 0x10\n\tIPPROTO_CMTP                      = 0x26\n\tIPPROTO_CPHB                      = 0x49\n\tIPPROTO_CPNX                      = 0x48\n\tIPPROTO_DDP                       = 0x25\n\tIPPROTO_DGP                       = 0x56\n\tIPPROTO_DIVERT                    = 0xfe\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_EMCON                     = 0xe\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GMTP                      = 0x64\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HELLO                     = 0x3f\n\tIPPROTO_HMP                       = 0x14\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IDPR                      = 0x23\n\tIPPROTO_IDRP                      = 0x2d\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IGP                       = 0x55\n\tIPPROTO_IGRP                      = 0x58\n\tIPPROTO_IL                        = 0x28\n\tIPPROTO_INLSP                     = 0x34\n\tIPPROTO_INP                       = 0x20\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPCV                      = 0x47\n\tIPPROTO_IPEIP                     = 0x5e\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPPC                      = 0x43\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IRTP                      = 0x1c\n\tIPPROTO_KRYPTOLAN                 = 0x41\n\tIPPROTO_LARP                      = 0x5b\n\tIPPROTO_LEAF1                     = 0x19\n\tIPPROTO_LEAF2                     = 0x1a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MEAS                      = 0x13\n\tIPPROTO_MHRP                      = 0x30\n\tIPPROTO_MICP                      = 0x5f\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MTP                       = 0x5c\n\tIPPROTO_MUX                       = 0x12\n\tIPPROTO_ND                        = 0x4d\n\tIPPROTO_NHRP                      = 0x36\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_NSP                       = 0x1f\n\tIPPROTO_NVPII                     = 0xb\n\tIPPROTO_OSPFIGP                   = 0x59\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PGM                       = 0x71\n\tIPPROTO_PIGP                      = 0x9\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PRM                       = 0x15\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_PVP                       = 0x4b\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_RCCMON                    = 0xa\n\tIPPROTO_RDP                       = 0x1b\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_RVD                       = 0x42\n\tIPPROTO_SATEXPAK                  = 0x40\n\tIPPROTO_SATMON                    = 0x45\n\tIPPROTO_SCCSP                     = 0x60\n\tIPPROTO_SDRP                      = 0x2a\n\tIPPROTO_SEP                       = 0x21\n\tIPPROTO_SKIP                      = 0x39\n\tIPPROTO_SRPC                      = 0x5a\n\tIPPROTO_ST                        = 0x7\n\tIPPROTO_SVMTP                     = 0x52\n\tIPPROTO_SWIPE                     = 0x35\n\tIPPROTO_TCF                       = 0x57\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TLSP                      = 0x38\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_TPXX                      = 0x27\n\tIPPROTO_TRUNK1                    = 0x17\n\tIPPROTO_TRUNK2                    = 0x18\n\tIPPROTO_TTP                       = 0x54\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UNKNOWN                   = 0x102\n\tIPPROTO_VINES                     = 0x53\n\tIPPROTO_VISA                      = 0x46\n\tIPPROTO_VMTP                      = 0x51\n\tIPPROTO_WBEXPAK                   = 0x4f\n\tIPPROTO_WBMON                     = 0x4e\n\tIPPROTO_WSN                       = 0x4a\n\tIPPROTO_XNET                      = 0xf\n\tIPPROTO_XTP                       = 0x24\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_BINDV6ONLY                   = 0x1b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_FW_ADD                       = 0x1e\n\tIPV6_FW_DEL                       = 0x1f\n\tIPV6_FW_FLUSH                     = 0x20\n\tIPV6_FW_GET                       = 0x22\n\tIPV6_FW_ZERO                      = 0x21\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHLIM                      = 0x28\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MSFILTER                     = 0x4a\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PKTOPTIONS                   = 0x34\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_PREFER_TEMPADDR              = 0x3f\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_DUMMYNET_CONFIGURE             = 0x3c\n\tIP_DUMMYNET_DEL                   = 0x3d\n\tIP_DUMMYNET_FLUSH                 = 0x3e\n\tIP_DUMMYNET_GET                   = 0x40\n\tIP_FW_ADD                         = 0x32\n\tIP_FW_DEL                         = 0x33\n\tIP_FW_FLUSH                       = 0x34\n\tIP_FW_GET                         = 0x36\n\tIP_FW_RESETLOG                    = 0x37\n\tIP_FW_TBL_ADD                     = 0x2a\n\tIP_FW_TBL_CREATE                  = 0x28\n\tIP_FW_TBL_DEL                     = 0x2b\n\tIP_FW_TBL_DESTROY                 = 0x29\n\tIP_FW_TBL_EXPIRE                  = 0x2f\n\tIP_FW_TBL_FLUSH                   = 0x2c\n\tIP_FW_TBL_GET                     = 0x2d\n\tIP_FW_TBL_ZERO                    = 0x2e\n\tIP_FW_X                           = 0x31\n\tIP_FW_ZERO                        = 0x35\n\tIP_HDRINCL                        = 0x2\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x42\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_MULTICAST_VIF                  = 0xe\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x41\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RSVP_OFF                       = 0x10\n\tIP_RSVP_ON                        = 0xf\n\tIP_RSVP_VIF_OFF                   = 0x12\n\tIP_RSVP_VIF_ON                    = 0x11\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_AUTOSYNC                     = 0x7\n\tMADV_CONTROL_END                  = 0xb\n\tMADV_CONTROL_START                = 0xa\n\tMADV_CORE                         = 0x9\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x5\n\tMADV_INVAL                        = 0xa\n\tMADV_NOCORE                       = 0x8\n\tMADV_NORMAL                       = 0x0\n\tMADV_NOSYNC                       = 0x6\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SETMAP                       = 0xb\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_NOCORE                        = 0x20000\n\tMAP_NOEXTEND                      = 0x100\n\tMAP_NORESERVE                     = 0x40\n\tMAP_NOSYNC                        = 0x800\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_SIZEALIGN                     = 0x40000\n\tMAP_STACK                         = 0x400\n\tMAP_TRYFIXED                      = 0x10000\n\tMAP_VPAGETABLE                    = 0x2000\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_AUTOMOUNTED                   = 0x20\n\tMNT_CMDFLAGS                      = 0xf0000\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x20000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_IGNORE                        = 0x800000\n\tMNT_LAZY                          = 0x4\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x10000000\n\tMNT_NOCLUSTERR                    = 0x40000000\n\tMNT_NOCLUSTERW                    = 0x80000000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOSYMFOLLOW                   = 0x400000\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x200000\n\tMNT_SUIDDIR                       = 0x100000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_TRIM                          = 0x1000000\n\tMNT_UPDATE                        = 0x10000\n\tMNT_USER                          = 0x8000\n\tMNT_VISFLAGMASK                   = 0xf1f0ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_CMSG_CLOEXEC                  = 0x1000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOF                           = 0x100\n\tMSG_EOR                           = 0x8\n\tMSG_FBLOCKING                     = 0x10000\n\tMSG_FMASK                         = 0xffff0000\n\tMSG_FNONBLOCKING                  = 0x20000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_SYNC                          = 0x800\n\tMSG_TRUNC                         = 0x10\n\tMSG_UNUSED09                      = 0x200\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x0\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_MAXID                      = 0x4\n\tNFDBITS                           = 0x40\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FFAND                        = 0x40000000\n\tNOTE_FFCOPY                       = 0xc0000000\n\tNOTE_FFCTRLMASK                   = 0xc0000000\n\tNOTE_FFLAGSMASK                   = 0xffffff\n\tNOTE_FFNOP                        = 0x0\n\tNOTE_FFOR                         = 0x80000000\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x2\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRIGGER                      = 0x1000000\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x20000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x10000\n\tO_DIRECTORY                       = 0x8000000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FAPPEND                         = 0x100000\n\tO_FASYNCWRITE                     = 0x800000\n\tO_FBLOCKING                       = 0x40000\n\tO_FMASK                           = 0xfc0000\n\tO_FNONBLOCKING                    = 0x80000\n\tO_FOFFSET                         = 0x200000\n\tO_FSYNC                           = 0x80\n\tO_FSYNCWRITE                      = 0x400000\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0xb\n\tRTAX_MPLS1                        = 0x8\n\tRTAX_MPLS2                        = 0x9\n\tRTAX_MPLS3                        = 0xa\n\tRTAX_NETMASK                      = 0x2\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_MPLS1                         = 0x100\n\tRTA_MPLS2                         = 0x200\n\tRTA_MPLS3                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPLSOPS                       = 0x1000000\n\tRTF_MULTICAST                     = 0x800000\n\tRTF_PINNED                        = 0x100000\n\tRTF_PRCLONING                     = 0x10000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x40000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_WASCLONED                     = 0x20000\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DELMADDR                      = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x12\n\tRTM_IFANNOUNCE                    = 0x11\n\tRTM_IFINFO                        = 0xe\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_NEWMADDR                      = 0xf\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_VERSION                       = 0x7\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_IWCAPSEGS                     = 0x400\n\tRTV_IWMAXSEGS                     = 0x200\n\tRTV_MSL                           = 0x100\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x3\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x2\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCALIFADDR                      = 0x8118691b\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDLIFADDR                      = 0x8118691d\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETSGCNT                      = 0xc0207210\n\tSIOCGETVIFCNT                     = 0xc028720f\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFALIAS                      = 0xc0406929\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCAP                        = 0xc020691f\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc0206926\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFINDEX                      = 0xc0206920\n\tSIOCGIFMEDIA                      = 0xc0306938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc0206933\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPDSTADDR                   = 0xc0206948\n\tSIOCGIFPHYS                       = 0xc0206935\n\tSIOCGIFPOLLCPU                    = 0xc020697e\n\tSIOCGIFPSRCADDR                   = 0xc0206947\n\tSIOCGIFSTATUS                     = 0xc331693b\n\tSIOCGIFTSOLEN                     = 0xc0206980\n\tSIOCGLIFADDR                      = 0xc118691c\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPRIVATE_0                    = 0xc0206950\n\tSIOCGPRIVATE_1                    = 0xc0206951\n\tSIOCIFCREATE                      = 0xc020697a\n\tSIOCIFCREATE2                     = 0xc020697c\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFCAP                        = 0x8020691e\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020693c\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x80206934\n\tSIOCSIFNAME                       = 0x80206928\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSIFPHYS                       = 0x80206936\n\tSIOCSIFPOLLCPU                    = 0x8020697d\n\tSIOCSIFTSOLEN                     = 0x8020697f\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_MAXADDRLEN                   = 0xff\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_CPUHINT                        = 0x1030\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_RERROR                         = 0x2000\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDSPACE                       = 0x100a\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_TIMESTAMP                      = 0x400\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDB                            = 0x9000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTAB0                              = 0x0\n\tTAB3                              = 0x4\n\tTABDLY                            = 0x4\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCP_FASTKEEP                      = 0x80\n\tTCP_KEEPCNT                       = 0x400\n\tTCP_KEEPIDLE                      = 0x100\n\tTCP_KEEPINIT                      = 0x20\n\tTCP_KEEPINTVL                     = 0x200\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXHLEN                       = 0x3c\n\tTCP_MAXOLEN                       = 0x28\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MINMSS                        = 0x100\n\tTCP_MIN_WINSHIFT                  = 0x5\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOOPT                         = 0x8\n\tTCP_NOPUSH                        = 0x4\n\tTCP_SIGNATURE_ENABLE              = 0x10\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGDRAINWAIT                    = 0x40047456\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCISPTMASTER                    = 0x20007455\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGDTRWAIT                     = 0x4004745a\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x40047403\n\tTIOCMODS                          = 0x80047404\n\tTIOCMSDTRWAIT                     = 0x8004745b\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDRAINWAIT                    = 0x80047457\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCTIMESTAMP                     = 0x40107459\n\tTIOCUCNTL                         = 0x80047466\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x1\n\tUTIME_OMIT                        = -0x2\n\tVCHECKPT                          = 0x13\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVERASE2                           = 0x7\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_BCACHE_SIZE_MAX                = 0x0\n\tVM_SWZONE_SIZE_MAX                = 0x4000000000\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWCONTINUED                        = 0x4\n\tWCOREFLAG                         = 0x80\n\tWEXITED                           = 0x10\n\tWLINUXCLONE                       = 0x80000000\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x8\n\tWSTOPPED                          = 0x2\n\tWTRAPPED                          = 0x20\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEASYNC          = syscall.Errno(0x63)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x63)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEDIUM       = syscall.Errno(0x5d)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCKPT     = syscall.Signal(0x21)\n\tSIGCKPTEXIT = syscall.Signal(0x22)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINFO     = syscall.Signal(0x1d)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPROF     = syscall.Signal(0x1b)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTHR      = syscall.Signal(0x20)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVTALRM   = syscall.Signal(0x1a)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOMEDIUM\", \"no medium found\"},\n\t{99, \"EASYNC\", \"unknown error: 99\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread Scheduler\"},\n\t{33, \"SIGCKPT\", \"checkPoint\"},\n\t{34, \"SIGCKPTEXIT\", \"checkPointExit\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0084279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4004427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4008426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x400c4280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80084267\n\tBIOCSETFNR                     = 0x80084282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8008427b\n\tBIOCSETZBUF                    = 0x800c4281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8008426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x4\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc144648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x804c6490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc06c648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x20\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETFSBASE                   = 0x47\n\tPT_GETGSBASE                   = 0x49\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETXMMREGS                  = 0x40\n\tPT_GETXSTATE                   = 0x45\n\tPT_GETXSTATE_INFO              = 0x44\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETFSBASE                   = 0x48\n\tPT_SETGSBASE                   = 0x4a\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETXMMREGS                  = 0x41\n\tPT_SETXSTATE                   = 0x46\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80246987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80246989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc01c697b\n\tSIOCGETSGCNT                   = 0xc0147210\n\tSIOCGETVIFCNT                  = 0xc014720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0086924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc024698a\n\tSIOCGIFGROUP                   = 0xc0246988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0286938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc028698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc00c6978\n\tSIOCSDRVSPEC                   = 0x801c697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40087459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVM_BCACHE_SIZE_MAX             = 0x70e0000\n\tVM_SWZONE_SIZE_MAX             = 0x2280000\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80506490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETFSBASE                   = 0x47\n\tPT_GETGSBASE                   = 0x49\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETXSTATE                   = 0x45\n\tPT_GETXSTATE_INFO              = 0x44\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETFSBASE                   = 0x48\n\tPT_SETGSBASE                   = 0x4a\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETXSTATE                   = 0x46\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0084279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4004427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x400c4280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80084267\n\tBIOCSETFNR                     = 0x80084282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8008427b\n\tBIOCSETZBUF                    = 0x800c4281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x4\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x804c6490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc078648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x20\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETVFPREGS                  = 0x40\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETVFPREGS                  = 0x41\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80246987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80246989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc01c697b\n\tSIOCGETSGCNT                   = 0xc0147210\n\tSIOCGETVIFCNT                  = 0xc014720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0086924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc024698a\n\tSIOCGIFGROUP                   = 0xc0246988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0286938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc028698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc00c6978\n\tSIOCSDRVSPEC                   = 0x801c697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80506490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVM_BCACHE_SIZE_MAX             = 0x19000000\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_HYPERV                      = 0x2b\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2b\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB1000000                       = 0xf4240\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1500000                       = 0x16e360\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB2000000                       = 0x1e8480\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB2500000                       = 0x2625a0\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB3000000                       = 0x2dc6c0\n\tB3500000                       = 0x3567e0\n\tB38400                         = 0x9600\n\tB4000000                       = 0x3d0900\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB500000                        = 0x7a120\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_BOOTTIME                 = 0x5\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_COARSE         = 0xc\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_COARSE          = 0xa\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGKERNELDUMP                = 0xc0986492\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80986491\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCSKERNELDUMP_FREEBSD12      = 0x80506490\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEHE_DEAD_PRIORITY              = -0x1\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_NONE                        = -0xc8\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_ADD_SEALS                    = 0x13\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_GET_SEALS                    = 0x14\n\tF_ISUNIONSTACK                 = 0x15\n\tF_KINFO                        = 0x16\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SEAL_GROW                    = 0x4\n\tF_SEAL_SEAL                    = 0x1\n\tF_SEAL_SHRINK                  = 0x2\n\tF_SEAL_WRITE                   = 0x8\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f72\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_KNOWSEPOCH                 = 0x20\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_NETMASK_DEFAULT             = 0xffffff00\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_CREDS_PERSISTENT         = 0x3\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMFD_ALLOW_SEALING              = 0x2\n\tMFD_CLOEXEC                    = 0x1\n\tMFD_HUGETLB                    = 0x4\n\tMFD_HUGE_16GB                  = -0x78000000\n\tMFD_HUGE_16MB                  = 0x60000000\n\tMFD_HUGE_1GB                   = 0x78000000\n\tMFD_HUGE_1MB                   = 0x50000000\n\tMFD_HUGE_256MB                 = 0x70000000\n\tMFD_HUGE_2GB                   = 0x7c000000\n\tMFD_HUGE_2MB                   = 0x54000000\n\tMFD_HUGE_32MB                  = 0x64000000\n\tMFD_HUGE_512KB                 = 0x4c000000\n\tMFD_HUGE_512MB                 = 0x74000000\n\tMFD_HUGE_64KB                  = 0x40000000\n\tMFD_HUGE_8MB                   = 0x5c000000\n\tMFD_HUGE_MASK                  = 0xfc000000\n\tMFD_HUGE_SHIFT                 = 0x1a\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0x300d0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EMPTYDIR                   = 0x2000000000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_EXTLS                      = 0x4000000000\n\tMNT_EXTLSCERT                  = 0x8000000000\n\tMNT_EXTLSCERTUSER              = 0x10000000000\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOCOVER                    = 0x1000000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNET_RT_NHGRP                   = 0x7\n\tNET_RT_NHOP                    = 0x6\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_DSYNC                        = 0x1000000\n\tO_EMPTY_PATH                   = 0x2000000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_PATH                         = 0x400000\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_COREDUMP                    = 0x1d\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_DEFAULT_WEIGHT              = 0x1\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAX_WEIGHT                  = 0xffffff\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_CREDS2                     = 0x8\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDATA                    = 0x8020692c\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_INIT_RATE         = 0x458\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_USE_RACK_RR            = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DEFER_OPTIONS              = 0x470\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FAST_RSM_HACK              = 0x471\n\tTCP_FIN_IS_RST                 = 0x49\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_HDWR_RATE_CAP              = 0x46a\n\tTCP_HDWR_UP_ONLY               = 0x46c\n\tTCP_IDLE_REDUCE                = 0x46\n\tTCP_INFO                       = 0x20\n\tTCP_IWND_NB                    = 0x2b\n\tTCP_IWND_NSEG                  = 0x2c\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOGID_CNT                  = 0x2e\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_LOG_LIMIT                  = 0x4a\n\tTCP_LOG_TAG                    = 0x2f\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXPEAKRATE                = 0x45\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXUNACKTIME               = 0x44\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_NO_PRR                     = 0x462\n\tTCP_PACING_RATE_CAP            = 0x46b\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_PERF_INFO                  = 0x4e\n\tTCP_PROC_ACCOUNTING            = 0x4c\n\tTCP_RACK_ABC_VAL               = 0x46d\n\tTCP_RACK_CHEAT_NOT_CONF_RATE   = 0x459\n\tTCP_RACK_DO_DETECTION          = 0x449\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_FORCE_MSEG            = 0x45d\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_GP_INCREASE_CA        = 0x45a\n\tTCP_RACK_GP_INCREASE_REC       = 0x45c\n\tTCP_RACK_GP_INCREASE_SS        = 0x45b\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MBUF_QUEUE            = 0x41a\n\tTCP_RACK_MEASURE_CNT           = 0x46f\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_NONRXT_CFG_RATE       = 0x463\n\tTCP_RACK_NO_PUSH_AT_MAX        = 0x466\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_RATE_CA          = 0x45e\n\tTCP_RACK_PACE_RATE_REC         = 0x460\n\tTCP_RACK_PACE_RATE_SS          = 0x45f\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PACE_TO_FILL          = 0x467\n\tTCP_RACK_PACING_BETA           = 0x472\n\tTCP_RACK_PACING_BETA_ECN       = 0x473\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROFILE               = 0x469\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_RR_CONF               = 0x459\n\tTCP_RACK_TIMER_SLOP            = 0x474\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_REC_ABC_VAL                = 0x46e\n\tTCP_REMOTE_UDP_ENCAPS_PORT     = 0x47\n\tTCP_REUSPORT_LB_NUMA           = 0x402\n\tTCP_REUSPORT_LB_NUMA_CURDOM    = -0x1\n\tTCP_REUSPORT_LB_NUMA_NODOM     = -0x2\n\tTCP_RXTLS_ENABLE               = 0x29\n\tTCP_RXTLS_MODE                 = 0x2a\n\tTCP_SHARED_CWND_ALLOWED        = 0x4b\n\tTCP_SHARED_CWND_ENABLE         = 0x464\n\tTCP_SHARED_CWND_TIME_LIMIT     = 0x468\n\tTCP_STATS                      = 0x21\n\tTCP_TIMELY_DYN_ADJ             = 0x465\n\tTCP_TLS_MODE_IFNET             = 0x2\n\tTCP_TLS_MODE_NONE              = 0x0\n\tTCP_TLS_MODE_SW                = 0x1\n\tTCP_TLS_MODE_TOE               = 0x3\n\tTCP_TXTLS_ENABLE               = 0x27\n\tTCP_TXTLS_MODE                 = 0x28\n\tTCP_USER_LOG                   = 0x30\n\tTCP_USE_CMP_ACKS               = 0x4d\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                                  = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                            = 0xadf5\n\tAFFS_SUPER_MAGIC                            = 0xadff\n\tAFS_FS_MAGIC                                = 0x6b414653\n\tAFS_SUPER_MAGIC                             = 0x5346414f\n\tAF_ALG                                      = 0x26\n\tAF_APPLETALK                                = 0x5\n\tAF_ASH                                      = 0x12\n\tAF_ATMPVC                                   = 0x8\n\tAF_ATMSVC                                   = 0x14\n\tAF_AX25                                     = 0x3\n\tAF_BLUETOOTH                                = 0x1f\n\tAF_BRIDGE                                   = 0x7\n\tAF_CAIF                                     = 0x25\n\tAF_CAN                                      = 0x1d\n\tAF_DECnet                                   = 0xc\n\tAF_ECONET                                   = 0x13\n\tAF_FILE                                     = 0x1\n\tAF_IB                                       = 0x1b\n\tAF_IEEE802154                               = 0x24\n\tAF_INET                                     = 0x2\n\tAF_INET6                                    = 0xa\n\tAF_IPX                                      = 0x4\n\tAF_IRDA                                     = 0x17\n\tAF_ISDN                                     = 0x22\n\tAF_IUCV                                     = 0x20\n\tAF_KCM                                      = 0x29\n\tAF_KEY                                      = 0xf\n\tAF_LLC                                      = 0x1a\n\tAF_LOCAL                                    = 0x1\n\tAF_MAX                                      = 0x2e\n\tAF_MCTP                                     = 0x2d\n\tAF_MPLS                                     = 0x1c\n\tAF_NETBEUI                                  = 0xd\n\tAF_NETLINK                                  = 0x10\n\tAF_NETROM                                   = 0x6\n\tAF_NFC                                      = 0x27\n\tAF_PACKET                                   = 0x11\n\tAF_PHONET                                   = 0x23\n\tAF_PPPOX                                    = 0x18\n\tAF_QIPCRTR                                  = 0x2a\n\tAF_RDS                                      = 0x15\n\tAF_ROSE                                     = 0xb\n\tAF_ROUTE                                    = 0x10\n\tAF_RXRPC                                    = 0x21\n\tAF_SECURITY                                 = 0xe\n\tAF_SMC                                      = 0x2b\n\tAF_SNA                                      = 0x16\n\tAF_TIPC                                     = 0x1e\n\tAF_UNIX                                     = 0x1\n\tAF_UNSPEC                                   = 0x0\n\tAF_VSOCK                                    = 0x28\n\tAF_WANPIPE                                  = 0x19\n\tAF_X25                                      = 0x9\n\tAF_XDP                                      = 0x2c\n\tALG_OP_DECRYPT                              = 0x0\n\tALG_OP_ENCRYPT                              = 0x1\n\tALG_SET_AEAD_ASSOCLEN                       = 0x4\n\tALG_SET_AEAD_AUTHSIZE                       = 0x5\n\tALG_SET_DRBG_ENTROPY                        = 0x6\n\tALG_SET_IV                                  = 0x2\n\tALG_SET_KEY                                 = 0x1\n\tALG_SET_KEY_BY_KEY_SERIAL                   = 0x7\n\tALG_SET_OP                                  = 0x3\n\tANON_INODE_FS_MAGIC                         = 0x9041934\n\tARPHRD_6LOWPAN                              = 0x339\n\tARPHRD_ADAPT                                = 0x108\n\tARPHRD_APPLETLK                             = 0x8\n\tARPHRD_ARCNET                               = 0x7\n\tARPHRD_ASH                                  = 0x30d\n\tARPHRD_ATM                                  = 0x13\n\tARPHRD_AX25                                 = 0x3\n\tARPHRD_BIF                                  = 0x307\n\tARPHRD_CAIF                                 = 0x336\n\tARPHRD_CAN                                  = 0x118\n\tARPHRD_CHAOS                                = 0x5\n\tARPHRD_CISCO                                = 0x201\n\tARPHRD_CSLIP                                = 0x101\n\tARPHRD_CSLIP6                               = 0x103\n\tARPHRD_DDCMP                                = 0x205\n\tARPHRD_DLCI                                 = 0xf\n\tARPHRD_ECONET                               = 0x30e\n\tARPHRD_EETHER                               = 0x2\n\tARPHRD_ETHER                                = 0x1\n\tARPHRD_EUI64                                = 0x1b\n\tARPHRD_FCAL                                 = 0x311\n\tARPHRD_FCFABRIC                             = 0x313\n\tARPHRD_FCPL                                 = 0x312\n\tARPHRD_FCPP                                 = 0x310\n\tARPHRD_FDDI                                 = 0x306\n\tARPHRD_FRAD                                 = 0x302\n\tARPHRD_HDLC                                 = 0x201\n\tARPHRD_HIPPI                                = 0x30c\n\tARPHRD_HWX25                                = 0x110\n\tARPHRD_IEEE1394                             = 0x18\n\tARPHRD_IEEE802                              = 0x6\n\tARPHRD_IEEE80211                            = 0x321\n\tARPHRD_IEEE80211_PRISM                      = 0x322\n\tARPHRD_IEEE80211_RADIOTAP                   = 0x323\n\tARPHRD_IEEE802154                           = 0x324\n\tARPHRD_IEEE802154_MONITOR                   = 0x325\n\tARPHRD_IEEE802_TR                           = 0x320\n\tARPHRD_INFINIBAND                           = 0x20\n\tARPHRD_IP6GRE                               = 0x337\n\tARPHRD_IPDDP                                = 0x309\n\tARPHRD_IPGRE                                = 0x30a\n\tARPHRD_IRDA                                 = 0x30f\n\tARPHRD_LAPB                                 = 0x204\n\tARPHRD_LOCALTLK                             = 0x305\n\tARPHRD_LOOPBACK                             = 0x304\n\tARPHRD_MCTP                                 = 0x122\n\tARPHRD_METRICOM                             = 0x17\n\tARPHRD_NETLINK                              = 0x338\n\tARPHRD_NETROM                               = 0x0\n\tARPHRD_NONE                                 = 0xfffe\n\tARPHRD_PHONET                               = 0x334\n\tARPHRD_PHONET_PIPE                          = 0x335\n\tARPHRD_PIMREG                               = 0x30b\n\tARPHRD_PPP                                  = 0x200\n\tARPHRD_PRONET                               = 0x4\n\tARPHRD_RAWHDLC                              = 0x206\n\tARPHRD_RAWIP                                = 0x207\n\tARPHRD_ROSE                                 = 0x10e\n\tARPHRD_RSRVD                                = 0x104\n\tARPHRD_SIT                                  = 0x308\n\tARPHRD_SKIP                                 = 0x303\n\tARPHRD_SLIP                                 = 0x100\n\tARPHRD_SLIP6                                = 0x102\n\tARPHRD_TUNNEL                               = 0x300\n\tARPHRD_TUNNEL6                              = 0x301\n\tARPHRD_VOID                                 = 0xffff\n\tARPHRD_VSOCKMON                             = 0x33a\n\tARPHRD_X25                                  = 0x10f\n\tAUDIT_ADD                                   = 0x3eb\n\tAUDIT_ADD_RULE                              = 0x3f3\n\tAUDIT_ALWAYS                                = 0x2\n\tAUDIT_ANOM_ABEND                            = 0x6a5\n\tAUDIT_ANOM_CREAT                            = 0x6a7\n\tAUDIT_ANOM_LINK                             = 0x6a6\n\tAUDIT_ANOM_PROMISCUOUS                      = 0x6a4\n\tAUDIT_ARCH                                  = 0xb\n\tAUDIT_ARCH_AARCH64                          = 0xc00000b7\n\tAUDIT_ARCH_ALPHA                            = 0xc0009026\n\tAUDIT_ARCH_ARCOMPACT                        = 0x4000005d\n\tAUDIT_ARCH_ARCOMPACTBE                      = 0x5d\n\tAUDIT_ARCH_ARCV2                            = 0x400000c3\n\tAUDIT_ARCH_ARCV2BE                          = 0xc3\n\tAUDIT_ARCH_ARM                              = 0x40000028\n\tAUDIT_ARCH_ARMEB                            = 0x28\n\tAUDIT_ARCH_C6X                              = 0x4000008c\n\tAUDIT_ARCH_C6XBE                            = 0x8c\n\tAUDIT_ARCH_CRIS                             = 0x4000004c\n\tAUDIT_ARCH_CSKY                             = 0x400000fc\n\tAUDIT_ARCH_FRV                              = 0x5441\n\tAUDIT_ARCH_H8300                            = 0x2e\n\tAUDIT_ARCH_HEXAGON                          = 0xa4\n\tAUDIT_ARCH_I386                             = 0x40000003\n\tAUDIT_ARCH_IA64                             = 0xc0000032\n\tAUDIT_ARCH_LOONGARCH32                      = 0x40000102\n\tAUDIT_ARCH_LOONGARCH64                      = 0xc0000102\n\tAUDIT_ARCH_M32R                             = 0x58\n\tAUDIT_ARCH_M68K                             = 0x4\n\tAUDIT_ARCH_MICROBLAZE                       = 0xbd\n\tAUDIT_ARCH_MIPS                             = 0x8\n\tAUDIT_ARCH_MIPS64                           = 0x80000008\n\tAUDIT_ARCH_MIPS64N32                        = 0xa0000008\n\tAUDIT_ARCH_MIPSEL                           = 0x40000008\n\tAUDIT_ARCH_MIPSEL64                         = 0xc0000008\n\tAUDIT_ARCH_MIPSEL64N32                      = 0xe0000008\n\tAUDIT_ARCH_NDS32                            = 0x400000a7\n\tAUDIT_ARCH_NDS32BE                          = 0xa7\n\tAUDIT_ARCH_NIOS2                            = 0x40000071\n\tAUDIT_ARCH_OPENRISC                         = 0x5c\n\tAUDIT_ARCH_PARISC                           = 0xf\n\tAUDIT_ARCH_PARISC64                         = 0x8000000f\n\tAUDIT_ARCH_PPC                              = 0x14\n\tAUDIT_ARCH_PPC64                            = 0x80000015\n\tAUDIT_ARCH_PPC64LE                          = 0xc0000015\n\tAUDIT_ARCH_RISCV32                          = 0x400000f3\n\tAUDIT_ARCH_RISCV64                          = 0xc00000f3\n\tAUDIT_ARCH_S390                             = 0x16\n\tAUDIT_ARCH_S390X                            = 0x80000016\n\tAUDIT_ARCH_SH                               = 0x2a\n\tAUDIT_ARCH_SH64                             = 0x8000002a\n\tAUDIT_ARCH_SHEL                             = 0x4000002a\n\tAUDIT_ARCH_SHEL64                           = 0xc000002a\n\tAUDIT_ARCH_SPARC                            = 0x2\n\tAUDIT_ARCH_SPARC64                          = 0x8000002b\n\tAUDIT_ARCH_TILEGX                           = 0xc00000bf\n\tAUDIT_ARCH_TILEGX32                         = 0x400000bf\n\tAUDIT_ARCH_TILEPRO                          = 0x400000bc\n\tAUDIT_ARCH_UNICORE                          = 0x4000006e\n\tAUDIT_ARCH_X86_64                           = 0xc000003e\n\tAUDIT_ARCH_XTENSA                           = 0x5e\n\tAUDIT_ARG0                                  = 0xc8\n\tAUDIT_ARG1                                  = 0xc9\n\tAUDIT_ARG2                                  = 0xca\n\tAUDIT_ARG3                                  = 0xcb\n\tAUDIT_AVC                                   = 0x578\n\tAUDIT_AVC_PATH                              = 0x57a\n\tAUDIT_BITMASK_SIZE                          = 0x40\n\tAUDIT_BIT_MASK                              = 0x8000000\n\tAUDIT_BIT_TEST                              = 0x48000000\n\tAUDIT_BPF                                   = 0x536\n\tAUDIT_BPRM_FCAPS                            = 0x529\n\tAUDIT_CAPSET                                = 0x52a\n\tAUDIT_CLASS_CHATTR                          = 0x2\n\tAUDIT_CLASS_CHATTR_32                       = 0x3\n\tAUDIT_CLASS_DIR_WRITE                       = 0x0\n\tAUDIT_CLASS_DIR_WRITE_32                    = 0x1\n\tAUDIT_CLASS_READ                            = 0x4\n\tAUDIT_CLASS_READ_32                         = 0x5\n\tAUDIT_CLASS_SIGNAL                          = 0x8\n\tAUDIT_CLASS_SIGNAL_32                       = 0x9\n\tAUDIT_CLASS_WRITE                           = 0x6\n\tAUDIT_CLASS_WRITE_32                        = 0x7\n\tAUDIT_COMPARE_AUID_TO_EUID                  = 0x10\n\tAUDIT_COMPARE_AUID_TO_FSUID                 = 0xe\n\tAUDIT_COMPARE_AUID_TO_OBJ_UID               = 0x5\n\tAUDIT_COMPARE_AUID_TO_SUID                  = 0xf\n\tAUDIT_COMPARE_EGID_TO_FSGID                 = 0x17\n\tAUDIT_COMPARE_EGID_TO_OBJ_GID               = 0x4\n\tAUDIT_COMPARE_EGID_TO_SGID                  = 0x18\n\tAUDIT_COMPARE_EUID_TO_FSUID                 = 0x12\n\tAUDIT_COMPARE_EUID_TO_OBJ_UID               = 0x3\n\tAUDIT_COMPARE_EUID_TO_SUID                  = 0x11\n\tAUDIT_COMPARE_FSGID_TO_OBJ_GID              = 0x9\n\tAUDIT_COMPARE_FSUID_TO_OBJ_UID              = 0x8\n\tAUDIT_COMPARE_GID_TO_EGID                   = 0x14\n\tAUDIT_COMPARE_GID_TO_FSGID                  = 0x15\n\tAUDIT_COMPARE_GID_TO_OBJ_GID                = 0x2\n\tAUDIT_COMPARE_GID_TO_SGID                   = 0x16\n\tAUDIT_COMPARE_SGID_TO_FSGID                 = 0x19\n\tAUDIT_COMPARE_SGID_TO_OBJ_GID               = 0x7\n\tAUDIT_COMPARE_SUID_TO_FSUID                 = 0x13\n\tAUDIT_COMPARE_SUID_TO_OBJ_UID               = 0x6\n\tAUDIT_COMPARE_UID_TO_AUID                   = 0xa\n\tAUDIT_COMPARE_UID_TO_EUID                   = 0xb\n\tAUDIT_COMPARE_UID_TO_FSUID                  = 0xc\n\tAUDIT_COMPARE_UID_TO_OBJ_UID                = 0x1\n\tAUDIT_COMPARE_UID_TO_SUID                   = 0xd\n\tAUDIT_CONFIG_CHANGE                         = 0x519\n\tAUDIT_CWD                                   = 0x51b\n\tAUDIT_DAEMON_ABORT                          = 0x4b2\n\tAUDIT_DAEMON_CONFIG                         = 0x4b3\n\tAUDIT_DAEMON_END                            = 0x4b1\n\tAUDIT_DAEMON_START                          = 0x4b0\n\tAUDIT_DEL                                   = 0x3ec\n\tAUDIT_DEL_RULE                              = 0x3f4\n\tAUDIT_DEVMAJOR                              = 0x64\n\tAUDIT_DEVMINOR                              = 0x65\n\tAUDIT_DIR                                   = 0x6b\n\tAUDIT_DM_CTRL                               = 0x53a\n\tAUDIT_DM_EVENT                              = 0x53b\n\tAUDIT_EGID                                  = 0x6\n\tAUDIT_EOE                                   = 0x528\n\tAUDIT_EQUAL                                 = 0x40000000\n\tAUDIT_EUID                                  = 0x2\n\tAUDIT_EVENT_LISTENER                        = 0x537\n\tAUDIT_EXE                                   = 0x70\n\tAUDIT_EXECVE                                = 0x51d\n\tAUDIT_EXIT                                  = 0x67\n\tAUDIT_FAIL_PANIC                            = 0x2\n\tAUDIT_FAIL_PRINTK                           = 0x1\n\tAUDIT_FAIL_SILENT                           = 0x0\n\tAUDIT_FANOTIFY                              = 0x533\n\tAUDIT_FD_PAIR                               = 0x525\n\tAUDIT_FEATURE_BITMAP_ALL                    = 0x7f\n\tAUDIT_FEATURE_BITMAP_BACKLOG_LIMIT          = 0x1\n\tAUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME      = 0x2\n\tAUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND         = 0x8\n\tAUDIT_FEATURE_BITMAP_EXECUTABLE_PATH        = 0x4\n\tAUDIT_FEATURE_BITMAP_FILTER_FS              = 0x40\n\tAUDIT_FEATURE_BITMAP_LOST_RESET             = 0x20\n\tAUDIT_FEATURE_BITMAP_SESSIONID_FILTER       = 0x10\n\tAUDIT_FEATURE_CHANGE                        = 0x530\n\tAUDIT_FEATURE_LOGINUID_IMMUTABLE            = 0x1\n\tAUDIT_FEATURE_ONLY_UNSET_LOGINUID           = 0x0\n\tAUDIT_FEATURE_VERSION                       = 0x1\n\tAUDIT_FIELD_COMPARE                         = 0x6f\n\tAUDIT_FILETYPE                              = 0x6c\n\tAUDIT_FILTERKEY                             = 0xd2\n\tAUDIT_FILTER_ENTRY                          = 0x2\n\tAUDIT_FILTER_EXCLUDE                        = 0x5\n\tAUDIT_FILTER_EXIT                           = 0x4\n\tAUDIT_FILTER_FS                             = 0x6\n\tAUDIT_FILTER_PREPEND                        = 0x10\n\tAUDIT_FILTER_TASK                           = 0x1\n\tAUDIT_FILTER_TYPE                           = 0x5\n\tAUDIT_FILTER_URING_EXIT                     = 0x7\n\tAUDIT_FILTER_USER                           = 0x0\n\tAUDIT_FILTER_WATCH                          = 0x3\n\tAUDIT_FIRST_KERN_ANOM_MSG                   = 0x6a4\n\tAUDIT_FIRST_USER_MSG                        = 0x44c\n\tAUDIT_FIRST_USER_MSG2                       = 0x834\n\tAUDIT_FSGID                                 = 0x8\n\tAUDIT_FSTYPE                                = 0x1a\n\tAUDIT_FSUID                                 = 0x4\n\tAUDIT_GET                                   = 0x3e8\n\tAUDIT_GET_FEATURE                           = 0x3fb\n\tAUDIT_GID                                   = 0x5\n\tAUDIT_GREATER_THAN                          = 0x20000000\n\tAUDIT_GREATER_THAN_OR_EQUAL                 = 0x60000000\n\tAUDIT_INODE                                 = 0x66\n\tAUDIT_INTEGRITY_DATA                        = 0x708\n\tAUDIT_INTEGRITY_EVM_XATTR                   = 0x70e\n\tAUDIT_INTEGRITY_HASH                        = 0x70b\n\tAUDIT_INTEGRITY_METADATA                    = 0x709\n\tAUDIT_INTEGRITY_PCR                         = 0x70c\n\tAUDIT_INTEGRITY_POLICY_RULE                 = 0x70f\n\tAUDIT_INTEGRITY_RULE                        = 0x70d\n\tAUDIT_INTEGRITY_STATUS                      = 0x70a\n\tAUDIT_INTEGRITY_USERSPACE                   = 0x710\n\tAUDIT_IPC                                   = 0x517\n\tAUDIT_IPC_SET_PERM                          = 0x51f\n\tAUDIT_IPE_ACCESS                            = 0x58c\n\tAUDIT_IPE_CONFIG_CHANGE                     = 0x58d\n\tAUDIT_IPE_POLICY_LOAD                       = 0x58e\n\tAUDIT_KERNEL                                = 0x7d0\n\tAUDIT_KERNEL_OTHER                          = 0x524\n\tAUDIT_KERN_MODULE                           = 0x532\n\tAUDIT_LANDLOCK_ACCESS                       = 0x58f\n\tAUDIT_LANDLOCK_DOMAIN                       = 0x590\n\tAUDIT_LAST_FEATURE                          = 0x1\n\tAUDIT_LAST_KERN_ANOM_MSG                    = 0x707\n\tAUDIT_LAST_USER_MSG                         = 0x4af\n\tAUDIT_LAST_USER_MSG2                        = 0xbb7\n\tAUDIT_LESS_THAN                             = 0x10000000\n\tAUDIT_LESS_THAN_OR_EQUAL                    = 0x50000000\n\tAUDIT_LIST                                  = 0x3ea\n\tAUDIT_LIST_RULES                            = 0x3f5\n\tAUDIT_LOGIN                                 = 0x3ee\n\tAUDIT_LOGINUID                              = 0x9\n\tAUDIT_LOGINUID_SET                          = 0x18\n\tAUDIT_MAC_CALIPSO_ADD                       = 0x58a\n\tAUDIT_MAC_CALIPSO_DEL                       = 0x58b\n\tAUDIT_MAC_CIPSOV4_ADD                       = 0x57f\n\tAUDIT_MAC_CIPSOV4_DEL                       = 0x580\n\tAUDIT_MAC_CONFIG_CHANGE                     = 0x57d\n\tAUDIT_MAC_IPSEC_ADDSA                       = 0x583\n\tAUDIT_MAC_IPSEC_ADDSPD                      = 0x585\n\tAUDIT_MAC_IPSEC_DELSA                       = 0x584\n\tAUDIT_MAC_IPSEC_DELSPD                      = 0x586\n\tAUDIT_MAC_IPSEC_EVENT                       = 0x587\n\tAUDIT_MAC_MAP_ADD                           = 0x581\n\tAUDIT_MAC_MAP_DEL                           = 0x582\n\tAUDIT_MAC_POLICY_LOAD                       = 0x57b\n\tAUDIT_MAC_STATUS                            = 0x57c\n\tAUDIT_MAC_UNLBL_ALLOW                       = 0x57e\n\tAUDIT_MAC_UNLBL_STCADD                      = 0x588\n\tAUDIT_MAC_UNLBL_STCDEL                      = 0x589\n\tAUDIT_MAKE_EQUIV                            = 0x3f7\n\tAUDIT_MAX_FIELDS                            = 0x40\n\tAUDIT_MAX_FIELD_COMPARE                     = 0x19\n\tAUDIT_MAX_KEY_LEN                           = 0x100\n\tAUDIT_MESSAGE_TEXT_MAX                      = 0x2170\n\tAUDIT_MMAP                                  = 0x52b\n\tAUDIT_MQ_GETSETATTR                         = 0x523\n\tAUDIT_MQ_NOTIFY                             = 0x522\n\tAUDIT_MQ_OPEN                               = 0x520\n\tAUDIT_MQ_SENDRECV                           = 0x521\n\tAUDIT_MSGTYPE                               = 0xc\n\tAUDIT_NEGATE                                = 0x80000000\n\tAUDIT_NETFILTER_CFG                         = 0x52d\n\tAUDIT_NETFILTER_PKT                         = 0x52c\n\tAUDIT_NEVER                                 = 0x0\n\tAUDIT_NLGRP_MAX                             = 0x1\n\tAUDIT_NOT_EQUAL                             = 0x30000000\n\tAUDIT_NR_FILTERS                            = 0x8\n\tAUDIT_OBJ_GID                               = 0x6e\n\tAUDIT_OBJ_LEV_HIGH                          = 0x17\n\tAUDIT_OBJ_LEV_LOW                           = 0x16\n\tAUDIT_OBJ_PID                               = 0x526\n\tAUDIT_OBJ_ROLE                              = 0x14\n\tAUDIT_OBJ_TYPE                              = 0x15\n\tAUDIT_OBJ_UID                               = 0x6d\n\tAUDIT_OBJ_USER                              = 0x13\n\tAUDIT_OPENAT2                               = 0x539\n\tAUDIT_OPERATORS                             = 0x78000000\n\tAUDIT_PATH                                  = 0x516\n\tAUDIT_PERM                                  = 0x6a\n\tAUDIT_PERM_ATTR                             = 0x8\n\tAUDIT_PERM_EXEC                             = 0x1\n\tAUDIT_PERM_READ                             = 0x4\n\tAUDIT_PERM_WRITE                            = 0x2\n\tAUDIT_PERS                                  = 0xa\n\tAUDIT_PID                                   = 0x0\n\tAUDIT_POSSIBLE                              = 0x1\n\tAUDIT_PPID                                  = 0x12\n\tAUDIT_PROCTITLE                             = 0x52f\n\tAUDIT_REPLACE                               = 0x531\n\tAUDIT_SADDR_FAM                             = 0x71\n\tAUDIT_SECCOMP                               = 0x52e\n\tAUDIT_SELINUX_ERR                           = 0x579\n\tAUDIT_SESSIONID                             = 0x19\n\tAUDIT_SET                                   = 0x3e9\n\tAUDIT_SET_FEATURE                           = 0x3fa\n\tAUDIT_SGID                                  = 0x7\n\tAUDIT_SID_UNSET                             = 0xffffffff\n\tAUDIT_SIGNAL_INFO                           = 0x3f2\n\tAUDIT_SOCKADDR                              = 0x51a\n\tAUDIT_SOCKETCALL                            = 0x518\n\tAUDIT_STATUS_BACKLOG_LIMIT                  = 0x10\n\tAUDIT_STATUS_BACKLOG_WAIT_TIME              = 0x20\n\tAUDIT_STATUS_BACKLOG_WAIT_TIME_ACTUAL       = 0x80\n\tAUDIT_STATUS_ENABLED                        = 0x1\n\tAUDIT_STATUS_FAILURE                        = 0x2\n\tAUDIT_STATUS_LOST                           = 0x40\n\tAUDIT_STATUS_PID                            = 0x4\n\tAUDIT_STATUS_RATE_LIMIT                     = 0x8\n\tAUDIT_SUBJ_CLR                              = 0x11\n\tAUDIT_SUBJ_ROLE                             = 0xe\n\tAUDIT_SUBJ_SEN                              = 0x10\n\tAUDIT_SUBJ_TYPE                             = 0xf\n\tAUDIT_SUBJ_USER                             = 0xd\n\tAUDIT_SUCCESS                               = 0x68\n\tAUDIT_SUID                                  = 0x3\n\tAUDIT_SYSCALL                               = 0x514\n\tAUDIT_SYSCALL_CLASSES                       = 0x10\n\tAUDIT_TIME_ADJNTPVAL                        = 0x535\n\tAUDIT_TIME_INJOFFSET                        = 0x534\n\tAUDIT_TRIM                                  = 0x3f6\n\tAUDIT_TTY                                   = 0x527\n\tAUDIT_TTY_GET                               = 0x3f8\n\tAUDIT_TTY_SET                               = 0x3f9\n\tAUDIT_UID                                   = 0x1\n\tAUDIT_UID_UNSET                             = 0xffffffff\n\tAUDIT_UNUSED_BITS                           = 0x7fffc00\n\tAUDIT_URINGOP                               = 0x538\n\tAUDIT_USER                                  = 0x3ed\n\tAUDIT_USER_AVC                              = 0x453\n\tAUDIT_USER_TTY                              = 0x464\n\tAUDIT_VERSION_BACKLOG_LIMIT                 = 0x1\n\tAUDIT_VERSION_BACKLOG_WAIT_TIME             = 0x2\n\tAUDIT_VERSION_LATEST                        = 0x7f\n\tAUDIT_WATCH                                 = 0x69\n\tAUDIT_WATCH_INS                             = 0x3ef\n\tAUDIT_WATCH_LIST                            = 0x3f1\n\tAUDIT_WATCH_REM                             = 0x3f0\n\tAUTOFS_SUPER_MAGIC                          = 0x187\n\tB0                                          = 0x0\n\tB110                                        = 0x3\n\tB1200                                       = 0x9\n\tB134                                        = 0x4\n\tB150                                        = 0x5\n\tB1800                                       = 0xa\n\tB19200                                      = 0xe\n\tB200                                        = 0x6\n\tB2400                                       = 0xb\n\tB300                                        = 0x7\n\tB38400                                      = 0xf\n\tB4800                                       = 0xc\n\tB50                                         = 0x1\n\tB600                                        = 0x8\n\tB75                                         = 0x2\n\tB9600                                       = 0xd\n\tBCACHEFS_SUPER_MAGIC                        = 0xca451a4e\n\tBDEVFS_MAGIC                                = 0x62646576\n\tBINDERFS_SUPER_MAGIC                        = 0x6c6f6f70\n\tBINFMTFS_MAGIC                              = 0x42494e4d\n\tBPF_A                                       = 0x10\n\tBPF_ABS                                     = 0x20\n\tBPF_ADD                                     = 0x0\n\tBPF_ALU                                     = 0x4\n\tBPF_ALU64                                   = 0x7\n\tBPF_AND                                     = 0x50\n\tBPF_ARSH                                    = 0xc0\n\tBPF_ATOMIC                                  = 0xc0\n\tBPF_B                                       = 0x10\n\tBPF_BUILD_ID_SIZE                           = 0x14\n\tBPF_CALL                                    = 0x80\n\tBPF_CMPXCHG                                 = 0xf1\n\tBPF_DIV                                     = 0x30\n\tBPF_DW                                      = 0x18\n\tBPF_END                                     = 0xd0\n\tBPF_EXIT                                    = 0x90\n\tBPF_FETCH                                   = 0x1\n\tBPF_FROM_BE                                 = 0x8\n\tBPF_FROM_LE                                 = 0x0\n\tBPF_FS_MAGIC                                = 0xcafe4a11\n\tBPF_F_AFTER                                 = 0x10\n\tBPF_F_ALLOW_MULTI                           = 0x2\n\tBPF_F_ALLOW_OVERRIDE                        = 0x1\n\tBPF_F_ANY_ALIGNMENT                         = 0x2\n\tBPF_F_BEFORE                                = 0x8\n\tBPF_F_ID                                    = 0x20\n\tBPF_F_NETFILTER_IP_DEFRAG                   = 0x1\n\tBPF_F_PREORDER                              = 0x40\n\tBPF_F_QUERY_EFFECTIVE                       = 0x1\n\tBPF_F_REDIRECT_FLAGS                        = 0x19\n\tBPF_F_REPLACE                               = 0x4\n\tBPF_F_SLEEPABLE                             = 0x10\n\tBPF_F_STRICT_ALIGNMENT                      = 0x1\n\tBPF_F_TEST_REG_INVARIANTS                   = 0x80\n\tBPF_F_TEST_RND_HI32                         = 0x4\n\tBPF_F_TEST_RUN_ON_CPU                       = 0x1\n\tBPF_F_TEST_SKB_CHECKSUM_COMPLETE            = 0x4\n\tBPF_F_TEST_STATE_FREQ                       = 0x8\n\tBPF_F_TEST_XDP_LIVE_FRAMES                  = 0x2\n\tBPF_F_XDP_DEV_BOUND_ONLY                    = 0x40\n\tBPF_F_XDP_HAS_FRAGS                         = 0x20\n\tBPF_H                                       = 0x8\n\tBPF_IMM                                     = 0x0\n\tBPF_IND                                     = 0x40\n\tBPF_JA                                      = 0x0\n\tBPF_JCOND                                   = 0xe0\n\tBPF_JEQ                                     = 0x10\n\tBPF_JGE                                     = 0x30\n\tBPF_JGT                                     = 0x20\n\tBPF_JLE                                     = 0xb0\n\tBPF_JLT                                     = 0xa0\n\tBPF_JMP                                     = 0x5\n\tBPF_JMP32                                   = 0x6\n\tBPF_JNE                                     = 0x50\n\tBPF_JSET                                    = 0x40\n\tBPF_JSGE                                    = 0x70\n\tBPF_JSGT                                    = 0x60\n\tBPF_JSLE                                    = 0xd0\n\tBPF_JSLT                                    = 0xc0\n\tBPF_K                                       = 0x0\n\tBPF_LD                                      = 0x0\n\tBPF_LDX                                     = 0x1\n\tBPF_LEN                                     = 0x80\n\tBPF_LL_OFF                                  = -0x200000\n\tBPF_LOAD_ACQ                                = 0x100\n\tBPF_LSH                                     = 0x60\n\tBPF_MAJOR_VERSION                           = 0x1\n\tBPF_MAXINSNS                                = 0x1000\n\tBPF_MEM                                     = 0x60\n\tBPF_MEMSX                                   = 0x80\n\tBPF_MEMWORDS                                = 0x10\n\tBPF_MINOR_VERSION                           = 0x1\n\tBPF_MISC                                    = 0x7\n\tBPF_MOD                                     = 0x90\n\tBPF_MOV                                     = 0xb0\n\tBPF_MSH                                     = 0xa0\n\tBPF_MUL                                     = 0x20\n\tBPF_NEG                                     = 0x80\n\tBPF_NET_OFF                                 = -0x100000\n\tBPF_OBJ_NAME_LEN                            = 0x10\n\tBPF_OR                                      = 0x40\n\tBPF_PSEUDO_BTF_ID                           = 0x3\n\tBPF_PSEUDO_CALL                             = 0x1\n\tBPF_PSEUDO_FUNC                             = 0x4\n\tBPF_PSEUDO_KFUNC_CALL                       = 0x2\n\tBPF_PSEUDO_MAP_FD                           = 0x1\n\tBPF_PSEUDO_MAP_IDX                          = 0x5\n\tBPF_PSEUDO_MAP_IDX_VALUE                    = 0x6\n\tBPF_PSEUDO_MAP_VALUE                        = 0x2\n\tBPF_RET                                     = 0x6\n\tBPF_RSH                                     = 0x70\n\tBPF_ST                                      = 0x2\n\tBPF_STORE_REL                               = 0x110\n\tBPF_STX                                     = 0x3\n\tBPF_SUB                                     = 0x10\n\tBPF_TAG_SIZE                                = 0x8\n\tBPF_TAX                                     = 0x0\n\tBPF_TO_BE                                   = 0x8\n\tBPF_TO_LE                                   = 0x0\n\tBPF_TXA                                     = 0x80\n\tBPF_W                                       = 0x0\n\tBPF_X                                       = 0x8\n\tBPF_XADD                                    = 0xc0\n\tBPF_XCHG                                    = 0xe1\n\tBPF_XOR                                     = 0xa0\n\tBRKINT                                      = 0x2\n\tBS0                                         = 0x0\n\tBTRFS_SUPER_MAGIC                           = 0x9123683e\n\tBTRFS_TEST_MAGIC                            = 0x73727279\n\tBUS_BLUETOOTH                               = 0x5\n\tBUS_HIL                                     = 0x4\n\tBUS_USB                                     = 0x3\n\tBUS_VIRTUAL                                 = 0x6\n\tCAN_BCM                                     = 0x2\n\tCAN_BUS_OFF_THRESHOLD                       = 0x100\n\tCAN_CTRLMODE_3_SAMPLES                      = 0x4\n\tCAN_CTRLMODE_BERR_REPORTING                 = 0x10\n\tCAN_CTRLMODE_CC_LEN8_DLC                    = 0x100\n\tCAN_CTRLMODE_FD                             = 0x20\n\tCAN_CTRLMODE_FD_NON_ISO                     = 0x80\n\tCAN_CTRLMODE_LISTENONLY                     = 0x2\n\tCAN_CTRLMODE_LOOPBACK                       = 0x1\n\tCAN_CTRLMODE_ONE_SHOT                       = 0x8\n\tCAN_CTRLMODE_PRESUME_ACK                    = 0x40\n\tCAN_CTRLMODE_TDC_AUTO                       = 0x200\n\tCAN_CTRLMODE_TDC_MANUAL                     = 0x400\n\tCAN_EFF_FLAG                                = 0x80000000\n\tCAN_EFF_ID_BITS                             = 0x1d\n\tCAN_EFF_MASK                                = 0x1fffffff\n\tCAN_ERROR_PASSIVE_THRESHOLD                 = 0x80\n\tCAN_ERROR_WARNING_THRESHOLD                 = 0x60\n\tCAN_ERR_ACK                                 = 0x20\n\tCAN_ERR_BUSERROR                            = 0x80\n\tCAN_ERR_BUSOFF                              = 0x40\n\tCAN_ERR_CNT                                 = 0x200\n\tCAN_ERR_CRTL                                = 0x4\n\tCAN_ERR_CRTL_ACTIVE                         = 0x40\n\tCAN_ERR_CRTL_RX_OVERFLOW                    = 0x1\n\tCAN_ERR_CRTL_RX_PASSIVE                     = 0x10\n\tCAN_ERR_CRTL_RX_WARNING                     = 0x4\n\tCAN_ERR_CRTL_TX_OVERFLOW                    = 0x2\n\tCAN_ERR_CRTL_TX_PASSIVE                     = 0x20\n\tCAN_ERR_CRTL_TX_WARNING                     = 0x8\n\tCAN_ERR_CRTL_UNSPEC                         = 0x0\n\tCAN_ERR_DLC                                 = 0x8\n\tCAN_ERR_FLAG                                = 0x20000000\n\tCAN_ERR_LOSTARB                             = 0x2\n\tCAN_ERR_LOSTARB_UNSPEC                      = 0x0\n\tCAN_ERR_MASK                                = 0x1fffffff\n\tCAN_ERR_PROT                                = 0x8\n\tCAN_ERR_PROT_ACTIVE                         = 0x40\n\tCAN_ERR_PROT_BIT                            = 0x1\n\tCAN_ERR_PROT_BIT0                           = 0x8\n\tCAN_ERR_PROT_BIT1                           = 0x10\n\tCAN_ERR_PROT_FORM                           = 0x2\n\tCAN_ERR_PROT_LOC_ACK                        = 0x19\n\tCAN_ERR_PROT_LOC_ACK_DEL                    = 0x1b\n\tCAN_ERR_PROT_LOC_CRC_DEL                    = 0x18\n\tCAN_ERR_PROT_LOC_CRC_SEQ                    = 0x8\n\tCAN_ERR_PROT_LOC_DATA                       = 0xa\n\tCAN_ERR_PROT_LOC_DLC                        = 0xb\n\tCAN_ERR_PROT_LOC_EOF                        = 0x1a\n\tCAN_ERR_PROT_LOC_ID04_00                    = 0xe\n\tCAN_ERR_PROT_LOC_ID12_05                    = 0xf\n\tCAN_ERR_PROT_LOC_ID17_13                    = 0x7\n\tCAN_ERR_PROT_LOC_ID20_18                    = 0x6\n\tCAN_ERR_PROT_LOC_ID28_21                    = 0x2\n\tCAN_ERR_PROT_LOC_IDE                        = 0x5\n\tCAN_ERR_PROT_LOC_INTERM                     = 0x12\n\tCAN_ERR_PROT_LOC_RES0                       = 0x9\n\tCAN_ERR_PROT_LOC_RES1                       = 0xd\n\tCAN_ERR_PROT_LOC_RTR                        = 0xc\n\tCAN_ERR_PROT_LOC_SOF                        = 0x3\n\tCAN_ERR_PROT_LOC_SRTR                       = 0x4\n\tCAN_ERR_PROT_LOC_UNSPEC                     = 0x0\n\tCAN_ERR_PROT_OVERLOAD                       = 0x20\n\tCAN_ERR_PROT_STUFF                          = 0x4\n\tCAN_ERR_PROT_TX                             = 0x80\n\tCAN_ERR_PROT_UNSPEC                         = 0x0\n\tCAN_ERR_RESTARTED                           = 0x100\n\tCAN_ERR_TRX                                 = 0x10\n\tCAN_ERR_TRX_CANH_NO_WIRE                    = 0x4\n\tCAN_ERR_TRX_CANH_SHORT_TO_BAT               = 0x5\n\tCAN_ERR_TRX_CANH_SHORT_TO_GND               = 0x7\n\tCAN_ERR_TRX_CANH_SHORT_TO_VCC               = 0x6\n\tCAN_ERR_TRX_CANL_NO_WIRE                    = 0x40\n\tCAN_ERR_TRX_CANL_SHORT_TO_BAT               = 0x50\n\tCAN_ERR_TRX_CANL_SHORT_TO_CANH              = 0x80\n\tCAN_ERR_TRX_CANL_SHORT_TO_GND               = 0x70\n\tCAN_ERR_TRX_CANL_SHORT_TO_VCC               = 0x60\n\tCAN_ERR_TRX_UNSPEC                          = 0x0\n\tCAN_ERR_TX_TIMEOUT                          = 0x1\n\tCAN_INV_FILTER                              = 0x20000000\n\tCAN_ISOTP                                   = 0x6\n\tCAN_J1939                                   = 0x7\n\tCAN_MAX_DLC                                 = 0x8\n\tCAN_MAX_DLEN                                = 0x8\n\tCAN_MAX_RAW_DLC                             = 0xf\n\tCAN_MCNET                                   = 0x5\n\tCAN_MTU                                     = 0x10\n\tCAN_NPROTO                                  = 0x8\n\tCAN_RAW                                     = 0x1\n\tCAN_RAW_FILTER_MAX                          = 0x200\n\tCAN_RAW_XL_VCID_RX_FILTER                   = 0x4\n\tCAN_RAW_XL_VCID_TX_PASS                     = 0x2\n\tCAN_RAW_XL_VCID_TX_SET                      = 0x1\n\tCAN_RTR_FLAG                                = 0x40000000\n\tCAN_SFF_ID_BITS                             = 0xb\n\tCAN_SFF_MASK                                = 0x7ff\n\tCAN_TERMINATION_DISABLED                    = 0x0\n\tCAN_TP16                                    = 0x3\n\tCAN_TP20                                    = 0x4\n\tCAP_AUDIT_CONTROL                           = 0x1e\n\tCAP_AUDIT_READ                              = 0x25\n\tCAP_AUDIT_WRITE                             = 0x1d\n\tCAP_BLOCK_SUSPEND                           = 0x24\n\tCAP_BPF                                     = 0x27\n\tCAP_CHECKPOINT_RESTORE                      = 0x28\n\tCAP_CHOWN                                   = 0x0\n\tCAP_DAC_OVERRIDE                            = 0x1\n\tCAP_DAC_READ_SEARCH                         = 0x2\n\tCAP_FOWNER                                  = 0x3\n\tCAP_FSETID                                  = 0x4\n\tCAP_IPC_LOCK                                = 0xe\n\tCAP_IPC_OWNER                               = 0xf\n\tCAP_KILL                                    = 0x5\n\tCAP_LAST_CAP                                = 0x28\n\tCAP_LEASE                                   = 0x1c\n\tCAP_LINUX_IMMUTABLE                         = 0x9\n\tCAP_MAC_ADMIN                               = 0x21\n\tCAP_MAC_OVERRIDE                            = 0x20\n\tCAP_MKNOD                                   = 0x1b\n\tCAP_NET_ADMIN                               = 0xc\n\tCAP_NET_BIND_SERVICE                        = 0xa\n\tCAP_NET_BROADCAST                           = 0xb\n\tCAP_NET_RAW                                 = 0xd\n\tCAP_PERFMON                                 = 0x26\n\tCAP_SETFCAP                                 = 0x1f\n\tCAP_SETGID                                  = 0x6\n\tCAP_SETPCAP                                 = 0x8\n\tCAP_SETUID                                  = 0x7\n\tCAP_SYSLOG                                  = 0x22\n\tCAP_SYS_ADMIN                               = 0x15\n\tCAP_SYS_BOOT                                = 0x16\n\tCAP_SYS_CHROOT                              = 0x12\n\tCAP_SYS_MODULE                              = 0x10\n\tCAP_SYS_NICE                                = 0x17\n\tCAP_SYS_PACCT                               = 0x14\n\tCAP_SYS_PTRACE                              = 0x13\n\tCAP_SYS_RAWIO                               = 0x11\n\tCAP_SYS_RESOURCE                            = 0x18\n\tCAP_SYS_TIME                                = 0x19\n\tCAP_SYS_TTY_CONFIG                          = 0x1a\n\tCAP_WAKE_ALARM                              = 0x23\n\tCEPH_SUPER_MAGIC                            = 0xc36400\n\tCFLUSH                                      = 0xf\n\tCGROUP2_SUPER_MAGIC                         = 0x63677270\n\tCGROUP_SUPER_MAGIC                          = 0x27e0eb\n\tCIFS_SUPER_MAGIC                            = 0xff534d42\n\tCLOCK_BOOTTIME                              = 0x7\n\tCLOCK_BOOTTIME_ALARM                        = 0x9\n\tCLOCK_DEFAULT                               = 0x0\n\tCLOCK_EXT                                   = 0x1\n\tCLOCK_INT                                   = 0x2\n\tCLOCK_MONOTONIC                             = 0x1\n\tCLOCK_MONOTONIC_COARSE                      = 0x6\n\tCLOCK_MONOTONIC_RAW                         = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID                    = 0x2\n\tCLOCK_REALTIME                              = 0x0\n\tCLOCK_REALTIME_ALARM                        = 0x8\n\tCLOCK_REALTIME_COARSE                       = 0x5\n\tCLOCK_TAI                                   = 0xb\n\tCLOCK_THREAD_CPUTIME_ID                     = 0x3\n\tCLOCK_TXFROMRX                              = 0x4\n\tCLOCK_TXINT                                 = 0x3\n\tCLONE_ARGS_SIZE_VER0                        = 0x40\n\tCLONE_ARGS_SIZE_VER1                        = 0x50\n\tCLONE_ARGS_SIZE_VER2                        = 0x58\n\tCLONE_CHILD_CLEARTID                        = 0x200000\n\tCLONE_CHILD_SETTID                          = 0x1000000\n\tCLONE_CLEAR_SIGHAND                         = 0x100000000\n\tCLONE_DETACHED                              = 0x400000\n\tCLONE_FILES                                 = 0x400\n\tCLONE_FS                                    = 0x200\n\tCLONE_INTO_CGROUP                           = 0x200000000\n\tCLONE_IO                                    = 0x80000000\n\tCLONE_NEWCGROUP                             = 0x2000000\n\tCLONE_NEWIPC                                = 0x8000000\n\tCLONE_NEWNET                                = 0x40000000\n\tCLONE_NEWNS                                 = 0x20000\n\tCLONE_NEWPID                                = 0x20000000\n\tCLONE_NEWTIME                               = 0x80\n\tCLONE_NEWUSER                               = 0x10000000\n\tCLONE_NEWUTS                                = 0x4000000\n\tCLONE_PARENT                                = 0x8000\n\tCLONE_PARENT_SETTID                         = 0x100000\n\tCLONE_PIDFD                                 = 0x1000\n\tCLONE_PTRACE                                = 0x2000\n\tCLONE_SETTLS                                = 0x80000\n\tCLONE_SIGHAND                               = 0x800\n\tCLONE_SYSVSEM                               = 0x40000\n\tCLONE_THREAD                                = 0x10000\n\tCLONE_UNTRACED                              = 0x800000\n\tCLONE_VFORK                                 = 0x4000\n\tCLONE_VM                                    = 0x100\n\tCMSPAR                                      = 0x40000000\n\tCODA_SUPER_MAGIC                            = 0x73757245\n\tCR0                                         = 0x0\n\tCRAMFS_MAGIC                                = 0x28cd3d45\n\tCRTSCTS                                     = 0x80000000\n\tCRYPTO_MAX_NAME                             = 0x40\n\tCRYPTO_MSG_MAX                              = 0x15\n\tCRYPTO_NR_MSGTYPES                          = 0x6\n\tCRYPTO_REPORT_MAXSIZE                       = 0x160\n\tCS5                                         = 0x0\n\tCSIGNAL                                     = 0xff\n\tCSTART                                      = 0x11\n\tCSTATUS                                     = 0x0\n\tCSTOP                                       = 0x13\n\tCSUSP                                       = 0x1a\n\tDAXFS_MAGIC                                 = 0x64646178\n\tDEBUGFS_MAGIC                               = 0x64626720\n\tDEVLINK_CMD_ESWITCH_MODE_GET                = 0x1d\n\tDEVLINK_CMD_ESWITCH_MODE_SET                = 0x1e\n\tDEVLINK_FLASH_OVERWRITE_IDENTIFIERS         = 0x2\n\tDEVLINK_FLASH_OVERWRITE_SETTINGS            = 0x1\n\tDEVLINK_GENL_MCGRP_CONFIG_NAME              = \"config\"\n\tDEVLINK_GENL_NAME                           = \"devlink\"\n\tDEVLINK_GENL_VERSION                        = 0x1\n\tDEVLINK_PORT_FN_CAP_IPSEC_CRYPTO            = 0x4\n\tDEVLINK_PORT_FN_CAP_IPSEC_PACKET            = 0x8\n\tDEVLINK_PORT_FN_CAP_MIGRATABLE              = 0x2\n\tDEVLINK_PORT_FN_CAP_ROCE                    = 0x1\n\tDEVLINK_SB_THRESHOLD_TO_ALPHA_MAX           = 0x14\n\tDEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS  = 0x3\n\tDEVMEM_MAGIC                                = 0x454d444d\n\tDEVPTS_SUPER_MAGIC                          = 0x1cd1\n\tDMA_BUF_MAGIC                               = 0x444d4142\n\tDM_ACTIVE_PRESENT_FLAG                      = 0x20\n\tDM_BUFFER_FULL_FLAG                         = 0x100\n\tDM_CONTROL_NODE                             = \"control\"\n\tDM_DATA_OUT_FLAG                            = 0x10000\n\tDM_DEFERRED_REMOVE                          = 0x20000\n\tDM_DEV_ARM_POLL                             = 0xc138fd10\n\tDM_DEV_CREATE                               = 0xc138fd03\n\tDM_DEV_REMOVE                               = 0xc138fd04\n\tDM_DEV_RENAME                               = 0xc138fd05\n\tDM_DEV_SET_GEOMETRY                         = 0xc138fd0f\n\tDM_DEV_STATUS                               = 0xc138fd07\n\tDM_DEV_SUSPEND                              = 0xc138fd06\n\tDM_DEV_WAIT                                 = 0xc138fd08\n\tDM_DIR                                      = \"mapper\"\n\tDM_GET_TARGET_VERSION                       = 0xc138fd11\n\tDM_IMA_MEASUREMENT_FLAG                     = 0x80000\n\tDM_INACTIVE_PRESENT_FLAG                    = 0x40\n\tDM_INTERNAL_SUSPEND_FLAG                    = 0x40000\n\tDM_IOCTL                                    = 0xfd\n\tDM_LIST_DEVICES                             = 0xc138fd02\n\tDM_LIST_VERSIONS                            = 0xc138fd0d\n\tDM_MAX_TYPE_NAME                            = 0x10\n\tDM_NAME_LEN                                 = 0x80\n\tDM_NAME_LIST_FLAG_DOESNT_HAVE_UUID          = 0x2\n\tDM_NAME_LIST_FLAG_HAS_UUID                  = 0x1\n\tDM_NOFLUSH_FLAG                             = 0x800\n\tDM_PERSISTENT_DEV_FLAG                      = 0x8\n\tDM_QUERY_INACTIVE_TABLE_FLAG                = 0x1000\n\tDM_READONLY_FLAG                            = 0x1\n\tDM_REMOVE_ALL                               = 0xc138fd01\n\tDM_SECURE_DATA_FLAG                         = 0x8000\n\tDM_SKIP_BDGET_FLAG                          = 0x200\n\tDM_SKIP_LOCKFS_FLAG                         = 0x400\n\tDM_STATUS_TABLE_FLAG                        = 0x10\n\tDM_SUSPEND_FLAG                             = 0x2\n\tDM_TABLE_CLEAR                              = 0xc138fd0a\n\tDM_TABLE_DEPS                               = 0xc138fd0b\n\tDM_TABLE_LOAD                               = 0xc138fd09\n\tDM_TABLE_STATUS                             = 0xc138fd0c\n\tDM_TARGET_MSG                               = 0xc138fd0e\n\tDM_UEVENT_GENERATED_FLAG                    = 0x2000\n\tDM_UUID_FLAG                                = 0x4000\n\tDM_UUID_LEN                                 = 0x81\n\tDM_VERSION                                  = 0xc138fd00\n\tDM_VERSION_EXTRA                            = \"-ioctl (2025-04-28)\"\n\tDM_VERSION_MAJOR                            = 0x4\n\tDM_VERSION_MINOR                            = 0x32\n\tDM_VERSION_PATCHLEVEL                       = 0x0\n\tDT_ADDRRNGHI                                = 0x6ffffeff\n\tDT_ADDRRNGLO                                = 0x6ffffe00\n\tDT_BLK                                      = 0x6\n\tDT_CHR                                      = 0x2\n\tDT_DEBUG                                    = 0x15\n\tDT_DIR                                      = 0x4\n\tDT_ENCODING                                 = 0x20\n\tDT_FIFO                                     = 0x1\n\tDT_FINI                                     = 0xd\n\tDT_FLAGS_1                                  = 0x6ffffffb\n\tDT_GNU_HASH                                 = 0x6ffffef5\n\tDT_HASH                                     = 0x4\n\tDT_HIOS                                     = 0x6ffff000\n\tDT_HIPROC                                   = 0x7fffffff\n\tDT_INIT                                     = 0xc\n\tDT_JMPREL                                   = 0x17\n\tDT_LNK                                      = 0xa\n\tDT_LOOS                                     = 0x6000000d\n\tDT_LOPROC                                   = 0x70000000\n\tDT_NEEDED                                   = 0x1\n\tDT_NULL                                     = 0x0\n\tDT_PLTGOT                                   = 0x3\n\tDT_PLTREL                                   = 0x14\n\tDT_PLTRELSZ                                 = 0x2\n\tDT_REG                                      = 0x8\n\tDT_REL                                      = 0x11\n\tDT_RELA                                     = 0x7\n\tDT_RELACOUNT                                = 0x6ffffff9\n\tDT_RELAENT                                  = 0x9\n\tDT_RELASZ                                   = 0x8\n\tDT_RELCOUNT                                 = 0x6ffffffa\n\tDT_RELENT                                   = 0x13\n\tDT_RELSZ                                    = 0x12\n\tDT_RPATH                                    = 0xf\n\tDT_SOCK                                     = 0xc\n\tDT_SONAME                                   = 0xe\n\tDT_STRSZ                                    = 0xa\n\tDT_STRTAB                                   = 0x5\n\tDT_SYMBOLIC                                 = 0x10\n\tDT_SYMENT                                   = 0xb\n\tDT_SYMTAB                                   = 0x6\n\tDT_TEXTREL                                  = 0x16\n\tDT_UNKNOWN                                  = 0x0\n\tDT_VALRNGHI                                 = 0x6ffffdff\n\tDT_VALRNGLO                                 = 0x6ffffd00\n\tDT_VERDEF                                   = 0x6ffffffc\n\tDT_VERDEFNUM                                = 0x6ffffffd\n\tDT_VERNEED                                  = 0x6ffffffe\n\tDT_VERNEEDNUM                               = 0x6fffffff\n\tDT_VERSYM                                   = 0x6ffffff0\n\tDT_WHT                                      = 0xe\n\tECHO                                        = 0x8\n\tECRYPTFS_SUPER_MAGIC                        = 0xf15f\n\tEFD_SEMAPHORE                               = 0x1\n\tEFIVARFS_MAGIC                              = 0xde5e81e4\n\tEFS_SUPER_MAGIC                             = 0x414a53\n\tEI_CLASS                                    = 0x4\n\tEI_DATA                                     = 0x5\n\tEI_MAG0                                     = 0x0\n\tEI_MAG1                                     = 0x1\n\tEI_MAG2                                     = 0x2\n\tEI_MAG3                                     = 0x3\n\tEI_NIDENT                                   = 0x10\n\tEI_OSABI                                    = 0x7\n\tEI_PAD                                      = 0x8\n\tEI_VERSION                                  = 0x6\n\tELFCLASS32                                  = 0x1\n\tELFCLASS64                                  = 0x2\n\tELFCLASSNONE                                = 0x0\n\tELFCLASSNUM                                 = 0x3\n\tELFDATA2LSB                                 = 0x1\n\tELFDATA2MSB                                 = 0x2\n\tELFDATANONE                                 = 0x0\n\tELFMAG                                      = \"\\177ELF\"\n\tELFMAG0                                     = 0x7f\n\tELFMAG1                                     = 'E'\n\tELFMAG2                                     = 'L'\n\tELFMAG3                                     = 'F'\n\tELFOSABI_LINUX                              = 0x3\n\tELFOSABI_NONE                               = 0x0\n\tEM_386                                      = 0x3\n\tEM_486                                      = 0x6\n\tEM_68K                                      = 0x4\n\tEM_860                                      = 0x7\n\tEM_88K                                      = 0x5\n\tEM_AARCH64                                  = 0xb7\n\tEM_ALPHA                                    = 0x9026\n\tEM_ALTERA_NIOS2                             = 0x71\n\tEM_ARCOMPACT                                = 0x5d\n\tEM_ARCV2                                    = 0xc3\n\tEM_ARM                                      = 0x28\n\tEM_BLACKFIN                                 = 0x6a\n\tEM_BPF                                      = 0xf7\n\tEM_CRIS                                     = 0x4c\n\tEM_CSKY                                     = 0xfc\n\tEM_CYGNUS_M32R                              = 0x9041\n\tEM_CYGNUS_MN10300                           = 0xbeef\n\tEM_FRV                                      = 0x5441\n\tEM_H8_300                                   = 0x2e\n\tEM_HEXAGON                                  = 0xa4\n\tEM_IA_64                                    = 0x32\n\tEM_LOONGARCH                                = 0x102\n\tEM_M32                                      = 0x1\n\tEM_M32R                                     = 0x58\n\tEM_MICROBLAZE                               = 0xbd\n\tEM_MIPS                                     = 0x8\n\tEM_MIPS_RS3_LE                              = 0xa\n\tEM_MIPS_RS4_BE                              = 0xa\n\tEM_MN10300                                  = 0x59\n\tEM_NDS32                                    = 0xa7\n\tEM_NONE                                     = 0x0\n\tEM_OPENRISC                                 = 0x5c\n\tEM_PARISC                                   = 0xf\n\tEM_PPC                                      = 0x14\n\tEM_PPC64                                    = 0x15\n\tEM_RISCV                                    = 0xf3\n\tEM_S390                                     = 0x16\n\tEM_S390_OLD                                 = 0xa390\n\tEM_SH                                       = 0x2a\n\tEM_SPARC                                    = 0x2\n\tEM_SPARC32PLUS                              = 0x12\n\tEM_SPARCV9                                  = 0x2b\n\tEM_SPU                                      = 0x17\n\tEM_TILEGX                                   = 0xbf\n\tEM_TILEPRO                                  = 0xbc\n\tEM_TI_C6000                                 = 0x8c\n\tEM_UNICORE                                  = 0x6e\n\tEM_X86_64                                   = 0x3e\n\tEM_XTENSA                                   = 0x5e\n\tENCODING_DEFAULT                            = 0x0\n\tENCODING_FM_MARK                            = 0x3\n\tENCODING_FM_SPACE                           = 0x4\n\tENCODING_MANCHESTER                         = 0x5\n\tENCODING_NRZ                                = 0x1\n\tENCODING_NRZI                               = 0x2\n\tEPOLLERR                                    = 0x8\n\tEPOLLET                                     = 0x80000000\n\tEPOLLEXCLUSIVE                              = 0x10000000\n\tEPOLLHUP                                    = 0x10\n\tEPOLLIN                                     = 0x1\n\tEPOLLMSG                                    = 0x400\n\tEPOLLONESHOT                                = 0x40000000\n\tEPOLLOUT                                    = 0x4\n\tEPOLLPRI                                    = 0x2\n\tEPOLLRDBAND                                 = 0x80\n\tEPOLLRDHUP                                  = 0x2000\n\tEPOLLRDNORM                                 = 0x40\n\tEPOLLWAKEUP                                 = 0x20000000\n\tEPOLLWRBAND                                 = 0x200\n\tEPOLLWRNORM                                 = 0x100\n\tEPOLL_CTL_ADD                               = 0x1\n\tEPOLL_CTL_DEL                               = 0x2\n\tEPOLL_CTL_MOD                               = 0x3\n\tEPOLL_IOC_TYPE                              = 0x8a\n\tEROFS_SUPER_MAGIC_V1                        = 0xe0f5e1e2\n\tETHTOOL_BUSINFO_LEN                         = 0x20\n\tETHTOOL_EROMVERS_LEN                        = 0x20\n\tETHTOOL_FAMILY_NAME                         = \"ethtool\"\n\tETHTOOL_FAMILY_VERSION                      = 0x1\n\tETHTOOL_FEC_AUTO                            = 0x2\n\tETHTOOL_FEC_BASER                           = 0x10\n\tETHTOOL_FEC_LLRS                            = 0x20\n\tETHTOOL_FEC_NONE                            = 0x1\n\tETHTOOL_FEC_OFF                             = 0x4\n\tETHTOOL_FEC_RS                              = 0x8\n\tETHTOOL_FLAG_ALL                            = 0x7\n\tETHTOOL_FLASHDEV                            = 0x33\n\tETHTOOL_FLASH_MAX_FILENAME                  = 0x80\n\tETHTOOL_FWVERS_LEN                          = 0x20\n\tETHTOOL_F_COMPAT                            = 0x4\n\tETHTOOL_F_UNSUPPORTED                       = 0x1\n\tETHTOOL_F_WISH                              = 0x2\n\tETHTOOL_GCHANNELS                           = 0x3c\n\tETHTOOL_GCOALESCE                           = 0xe\n\tETHTOOL_GDRVINFO                            = 0x3\n\tETHTOOL_GEEE                                = 0x44\n\tETHTOOL_GEEPROM                             = 0xb\n\tETHTOOL_GENL_NAME                           = \"ethtool\"\n\tETHTOOL_GENL_VERSION                        = 0x1\n\tETHTOOL_GET_DUMP_DATA                       = 0x40\n\tETHTOOL_GET_DUMP_FLAG                       = 0x3f\n\tETHTOOL_GET_TS_INFO                         = 0x41\n\tETHTOOL_GFEATURES                           = 0x3a\n\tETHTOOL_GFECPARAM                           = 0x50\n\tETHTOOL_GFLAGS                              = 0x25\n\tETHTOOL_GGRO                                = 0x2b\n\tETHTOOL_GGSO                                = 0x23\n\tETHTOOL_GLINK                               = 0xa\n\tETHTOOL_GLINKSETTINGS                       = 0x4c\n\tETHTOOL_GMODULEEEPROM                       = 0x43\n\tETHTOOL_GMODULEINFO                         = 0x42\n\tETHTOOL_GMSGLVL                             = 0x7\n\tETHTOOL_GPAUSEPARAM                         = 0x12\n\tETHTOOL_GPERMADDR                           = 0x20\n\tETHTOOL_GPFLAGS                             = 0x27\n\tETHTOOL_GPHYSTATS                           = 0x4a\n\tETHTOOL_GREGS                               = 0x4\n\tETHTOOL_GRINGPARAM                          = 0x10\n\tETHTOOL_GRSSH                               = 0x46\n\tETHTOOL_GRXCLSRLALL                         = 0x30\n\tETHTOOL_GRXCLSRLCNT                         = 0x2e\n\tETHTOOL_GRXCLSRULE                          = 0x2f\n\tETHTOOL_GRXCSUM                             = 0x14\n\tETHTOOL_GRXFH                               = 0x29\n\tETHTOOL_GRXFHINDIR                          = 0x38\n\tETHTOOL_GRXNTUPLE                           = 0x36\n\tETHTOOL_GRXRINGS                            = 0x2d\n\tETHTOOL_GSET                                = 0x1\n\tETHTOOL_GSG                                 = 0x18\n\tETHTOOL_GSSET_INFO                          = 0x37\n\tETHTOOL_GSTATS                              = 0x1d\n\tETHTOOL_GSTRINGS                            = 0x1b\n\tETHTOOL_GTSO                                = 0x1e\n\tETHTOOL_GTUNABLE                            = 0x48\n\tETHTOOL_GTXCSUM                             = 0x16\n\tETHTOOL_GUFO                                = 0x21\n\tETHTOOL_GWOL                                = 0x5\n\tETHTOOL_MCGRP_MONITOR_NAME                  = \"monitor\"\n\tETHTOOL_NWAY_RST                            = 0x9\n\tETHTOOL_PERQUEUE                            = 0x4b\n\tETHTOOL_PHYS_ID                             = 0x1c\n\tETHTOOL_PHY_EDPD_DFLT_TX_MSECS              = 0xffff\n\tETHTOOL_PHY_EDPD_DISABLE                    = 0x0\n\tETHTOOL_PHY_EDPD_NO_TX                      = 0xfffe\n\tETHTOOL_PHY_FAST_LINK_DOWN_OFF              = 0xff\n\tETHTOOL_PHY_FAST_LINK_DOWN_ON               = 0x0\n\tETHTOOL_PHY_GTUNABLE                        = 0x4e\n\tETHTOOL_PHY_STUNABLE                        = 0x4f\n\tETHTOOL_RESET                               = 0x34\n\tETHTOOL_RXNTUPLE_ACTION_CLEAR               = -0x2\n\tETHTOOL_RXNTUPLE_ACTION_DROP                = -0x1\n\tETHTOOL_RX_FLOW_SPEC_RING                   = 0xffffffff\n\tETHTOOL_RX_FLOW_SPEC_RING_VF                = 0xff00000000\n\tETHTOOL_RX_FLOW_SPEC_RING_VF_OFF            = 0x20\n\tETHTOOL_SCHANNELS                           = 0x3d\n\tETHTOOL_SCOALESCE                           = 0xf\n\tETHTOOL_SEEE                                = 0x45\n\tETHTOOL_SEEPROM                             = 0xc\n\tETHTOOL_SET_DUMP                            = 0x3e\n\tETHTOOL_SFEATURES                           = 0x3b\n\tETHTOOL_SFECPARAM                           = 0x51\n\tETHTOOL_SFLAGS                              = 0x26\n\tETHTOOL_SGRO                                = 0x2c\n\tETHTOOL_SGSO                                = 0x24\n\tETHTOOL_SLINKSETTINGS                       = 0x4d\n\tETHTOOL_SMSGLVL                             = 0x8\n\tETHTOOL_SPAUSEPARAM                         = 0x13\n\tETHTOOL_SPFLAGS                             = 0x28\n\tETHTOOL_SRINGPARAM                          = 0x11\n\tETHTOOL_SRSSH                               = 0x47\n\tETHTOOL_SRXCLSRLDEL                         = 0x31\n\tETHTOOL_SRXCLSRLINS                         = 0x32\n\tETHTOOL_SRXCSUM                             = 0x15\n\tETHTOOL_SRXFH                               = 0x2a\n\tETHTOOL_SRXFHINDIR                          = 0x39\n\tETHTOOL_SRXNTUPLE                           = 0x35\n\tETHTOOL_SSET                                = 0x2\n\tETHTOOL_SSG                                 = 0x19\n\tETHTOOL_STSO                                = 0x1f\n\tETHTOOL_STUNABLE                            = 0x49\n\tETHTOOL_STXCSUM                             = 0x17\n\tETHTOOL_SUFO                                = 0x22\n\tETHTOOL_SWOL                                = 0x6\n\tETHTOOL_TEST                                = 0x1a\n\tETH_P_1588                                  = 0x88f7\n\tETH_P_8021AD                                = 0x88a8\n\tETH_P_8021AH                                = 0x88e7\n\tETH_P_8021Q                                 = 0x8100\n\tETH_P_80221                                 = 0x8917\n\tETH_P_802_2                                 = 0x4\n\tETH_P_802_3                                 = 0x1\n\tETH_P_802_3_MIN                             = 0x600\n\tETH_P_802_EX1                               = 0x88b5\n\tETH_P_AARP                                  = 0x80f3\n\tETH_P_AF_IUCV                               = 0xfbfb\n\tETH_P_ALL                                   = 0x3\n\tETH_P_AOE                                   = 0x88a2\n\tETH_P_ARCNET                                = 0x1a\n\tETH_P_ARP                                   = 0x806\n\tETH_P_ATALK                                 = 0x809b\n\tETH_P_ATMFATE                               = 0x8884\n\tETH_P_ATMMPOA                               = 0x884c\n\tETH_P_AX25                                  = 0x2\n\tETH_P_BATMAN                                = 0x4305\n\tETH_P_BPQ                                   = 0x8ff\n\tETH_P_CAIF                                  = 0xf7\n\tETH_P_CAN                                   = 0xc\n\tETH_P_CANFD                                 = 0xd\n\tETH_P_CANXL                                 = 0xe\n\tETH_P_CFM                                   = 0x8902\n\tETH_P_CONTROL                               = 0x16\n\tETH_P_CUST                                  = 0x6006\n\tETH_P_DDCMP                                 = 0x6\n\tETH_P_DEC                                   = 0x6000\n\tETH_P_DIAG                                  = 0x6005\n\tETH_P_DNA_DL                                = 0x6001\n\tETH_P_DNA_RC                                = 0x6002\n\tETH_P_DNA_RT                                = 0x6003\n\tETH_P_DSA                                   = 0x1b\n\tETH_P_DSA_8021Q                             = 0xdadb\n\tETH_P_DSA_A5PSW                             = 0xe001\n\tETH_P_ECONET                                = 0x18\n\tETH_P_EDSA                                  = 0xdada\n\tETH_P_ERSPAN                                = 0x88be\n\tETH_P_ERSPAN2                               = 0x22eb\n\tETH_P_ETHERCAT                              = 0x88a4\n\tETH_P_FCOE                                  = 0x8906\n\tETH_P_FIP                                   = 0x8914\n\tETH_P_HDLC                                  = 0x19\n\tETH_P_HSR                                   = 0x892f\n\tETH_P_IBOE                                  = 0x8915\n\tETH_P_IEEE802154                            = 0xf6\n\tETH_P_IEEEPUP                               = 0xa00\n\tETH_P_IEEEPUPAT                             = 0xa01\n\tETH_P_IFE                                   = 0xed3e\n\tETH_P_IP                                    = 0x800\n\tETH_P_IPV6                                  = 0x86dd\n\tETH_P_IPX                                   = 0x8137\n\tETH_P_IRDA                                  = 0x17\n\tETH_P_LAT                                   = 0x6004\n\tETH_P_LINK_CTL                              = 0x886c\n\tETH_P_LLDP                                  = 0x88cc\n\tETH_P_LOCALTALK                             = 0x9\n\tETH_P_LOOP                                  = 0x60\n\tETH_P_LOOPBACK                              = 0x9000\n\tETH_P_MACSEC                                = 0x88e5\n\tETH_P_MAP                                   = 0xf9\n\tETH_P_MCTP                                  = 0xfa\n\tETH_P_MOBITEX                               = 0x15\n\tETH_P_MPLS_MC                               = 0x8848\n\tETH_P_MPLS_UC                               = 0x8847\n\tETH_P_MRP                                   = 0x88e3\n\tETH_P_MVRP                                  = 0x88f5\n\tETH_P_NCSI                                  = 0x88f8\n\tETH_P_NSH                                   = 0x894f\n\tETH_P_PAE                                   = 0x888e\n\tETH_P_PAUSE                                 = 0x8808\n\tETH_P_PHONET                                = 0xf5\n\tETH_P_PPPTALK                               = 0x10\n\tETH_P_PPP_DISC                              = 0x8863\n\tETH_P_PPP_MP                                = 0x8\n\tETH_P_PPP_SES                               = 0x8864\n\tETH_P_PREAUTH                               = 0x88c7\n\tETH_P_PROFINET                              = 0x8892\n\tETH_P_PRP                                   = 0x88fb\n\tETH_P_PUP                                   = 0x200\n\tETH_P_PUPAT                                 = 0x201\n\tETH_P_QINQ1                                 = 0x9100\n\tETH_P_QINQ2                                 = 0x9200\n\tETH_P_QINQ3                                 = 0x9300\n\tETH_P_RARP                                  = 0x8035\n\tETH_P_REALTEK                               = 0x8899\n\tETH_P_SCA                                   = 0x6007\n\tETH_P_SLOW                                  = 0x8809\n\tETH_P_SNAP                                  = 0x5\n\tETH_P_TDLS                                  = 0x890d\n\tETH_P_TEB                                   = 0x6558\n\tETH_P_TIPC                                  = 0x88ca\n\tETH_P_TRAILER                               = 0x1c\n\tETH_P_TR_802_2                              = 0x11\n\tETH_P_TSN                                   = 0x22f0\n\tETH_P_WAN_PPP                               = 0x7\n\tETH_P_WCCP                                  = 0x883e\n\tETH_P_X25                                   = 0x805\n\tETH_P_XDSA                                  = 0xf8\n\tET_CORE                                     = 0x4\n\tET_DYN                                      = 0x3\n\tET_EXEC                                     = 0x2\n\tET_HIPROC                                   = 0xffff\n\tET_LOPROC                                   = 0xff00\n\tET_NONE                                     = 0x0\n\tET_REL                                      = 0x1\n\tEV_ABS                                      = 0x3\n\tEV_CNT                                      = 0x20\n\tEV_CURRENT                                  = 0x1\n\tEV_FF                                       = 0x15\n\tEV_FF_STATUS                                = 0x17\n\tEV_KEY                                      = 0x1\n\tEV_LED                                      = 0x11\n\tEV_MAX                                      = 0x1f\n\tEV_MSC                                      = 0x4\n\tEV_NONE                                     = 0x0\n\tEV_NUM                                      = 0x2\n\tEV_PWR                                      = 0x16\n\tEV_REL                                      = 0x2\n\tEV_REP                                      = 0x14\n\tEV_SND                                      = 0x12\n\tEV_SW                                       = 0x5\n\tEV_SYN                                      = 0x0\n\tEV_VERSION                                  = 0x10001\n\tEXABYTE_ENABLE_NEST                         = 0xf0\n\tEXFAT_SUPER_MAGIC                           = 0x2011bab0\n\tEXT2_SUPER_MAGIC                            = 0xef53\n\tEXT3_SUPER_MAGIC                            = 0xef53\n\tEXT4_SUPER_MAGIC                            = 0xef53\n\tEXTA                                        = 0xe\n\tEXTB                                        = 0xf\n\tF2FS_SUPER_MAGIC                            = 0xf2f52010\n\tFALLOC_FL_ALLOCATE_RANGE                    = 0x0\n\tFALLOC_FL_COLLAPSE_RANGE                    = 0x8\n\tFALLOC_FL_INSERT_RANGE                      = 0x20\n\tFALLOC_FL_KEEP_SIZE                         = 0x1\n\tFALLOC_FL_NO_HIDE_STALE                     = 0x4\n\tFALLOC_FL_PUNCH_HOLE                        = 0x2\n\tFALLOC_FL_UNSHARE_RANGE                     = 0x40\n\tFALLOC_FL_ZERO_RANGE                        = 0x10\n\tFANOTIFY_METADATA_VERSION                   = 0x3\n\tFAN_ACCESS                                  = 0x1\n\tFAN_ACCESS_PERM                             = 0x20000\n\tFAN_ALLOW                                   = 0x1\n\tFAN_ALL_CLASS_BITS                          = 0xc\n\tFAN_ALL_EVENTS                              = 0x3b\n\tFAN_ALL_INIT_FLAGS                          = 0x3f\n\tFAN_ALL_MARK_FLAGS                          = 0xff\n\tFAN_ALL_OUTGOING_EVENTS                     = 0x3403b\n\tFAN_ALL_PERM_EVENTS                         = 0x30000\n\tFAN_ATTRIB                                  = 0x4\n\tFAN_AUDIT                                   = 0x10\n\tFAN_CLASS_CONTENT                           = 0x4\n\tFAN_CLASS_NOTIF                             = 0x0\n\tFAN_CLASS_PRE_CONTENT                       = 0x8\n\tFAN_CLOEXEC                                 = 0x1\n\tFAN_CLOSE                                   = 0x18\n\tFAN_CLOSE_NOWRITE                           = 0x10\n\tFAN_CLOSE_WRITE                             = 0x8\n\tFAN_CREATE                                  = 0x100\n\tFAN_DELETE                                  = 0x200\n\tFAN_DELETE_SELF                             = 0x400\n\tFAN_DENY                                    = 0x2\n\tFAN_ENABLE_AUDIT                            = 0x40\n\tFAN_EPIDFD                                  = -0x2\n\tFAN_ERRNO_BITS                              = 0x8\n\tFAN_ERRNO_MASK                              = 0xff\n\tFAN_ERRNO_SHIFT                             = 0x18\n\tFAN_EVENT_INFO_TYPE_DFID                    = 0x3\n\tFAN_EVENT_INFO_TYPE_DFID_NAME               = 0x2\n\tFAN_EVENT_INFO_TYPE_ERROR                   = 0x5\n\tFAN_EVENT_INFO_TYPE_FID                     = 0x1\n\tFAN_EVENT_INFO_TYPE_MNT                     = 0x7\n\tFAN_EVENT_INFO_TYPE_NEW_DFID_NAME           = 0xc\n\tFAN_EVENT_INFO_TYPE_OLD_DFID_NAME           = 0xa\n\tFAN_EVENT_INFO_TYPE_PIDFD                   = 0x4\n\tFAN_EVENT_INFO_TYPE_RANGE                   = 0x6\n\tFAN_EVENT_METADATA_LEN                      = 0x18\n\tFAN_EVENT_ON_CHILD                          = 0x8000000\n\tFAN_FS_ERROR                                = 0x8000\n\tFAN_INFO                                    = 0x20\n\tFAN_MARK_ADD                                = 0x1\n\tFAN_MARK_DONT_FOLLOW                        = 0x4\n\tFAN_MARK_EVICTABLE                          = 0x200\n\tFAN_MARK_FILESYSTEM                         = 0x100\n\tFAN_MARK_FLUSH                              = 0x80\n\tFAN_MARK_IGNORE                             = 0x400\n\tFAN_MARK_IGNORED_MASK                       = 0x20\n\tFAN_MARK_IGNORED_SURV_MODIFY                = 0x40\n\tFAN_MARK_IGNORE_SURV                        = 0x440\n\tFAN_MARK_INODE                              = 0x0\n\tFAN_MARK_MNTNS                              = 0x110\n\tFAN_MARK_MOUNT                              = 0x10\n\tFAN_MARK_ONLYDIR                            = 0x8\n\tFAN_MARK_REMOVE                             = 0x2\n\tFAN_MNT_ATTACH                              = 0x1000000\n\tFAN_MNT_DETACH                              = 0x2000000\n\tFAN_MODIFY                                  = 0x2\n\tFAN_MOVE                                    = 0xc0\n\tFAN_MOVED_FROM                              = 0x40\n\tFAN_MOVED_TO                                = 0x80\n\tFAN_MOVE_SELF                               = 0x800\n\tFAN_NOFD                                    = -0x1\n\tFAN_NONBLOCK                                = 0x2\n\tFAN_NOPIDFD                                 = -0x1\n\tFAN_ONDIR                                   = 0x40000000\n\tFAN_OPEN                                    = 0x20\n\tFAN_OPEN_EXEC                               = 0x1000\n\tFAN_OPEN_EXEC_PERM                          = 0x40000\n\tFAN_OPEN_PERM                               = 0x10000\n\tFAN_PRE_ACCESS                              = 0x100000\n\tFAN_Q_OVERFLOW                              = 0x4000\n\tFAN_RENAME                                  = 0x10000000\n\tFAN_REPORT_DFID_NAME                        = 0xc00\n\tFAN_REPORT_DFID_NAME_TARGET                 = 0x1e00\n\tFAN_REPORT_DIR_FID                          = 0x400\n\tFAN_REPORT_FD_ERROR                         = 0x2000\n\tFAN_REPORT_FID                              = 0x200\n\tFAN_REPORT_MNT                              = 0x4000\n\tFAN_REPORT_NAME                             = 0x800\n\tFAN_REPORT_PIDFD                            = 0x80\n\tFAN_REPORT_TARGET_FID                       = 0x1000\n\tFAN_REPORT_TID                              = 0x100\n\tFAN_RESPONSE_INFO_AUDIT_RULE                = 0x1\n\tFAN_RESPONSE_INFO_NONE                      = 0x0\n\tFAN_UNLIMITED_MARKS                         = 0x20\n\tFAN_UNLIMITED_QUEUE                         = 0x10\n\tFD_CLOEXEC                                  = 0x1\n\tFD_SETSIZE                                  = 0x400\n\tFF0                                         = 0x0\n\tFIB_RULE_DEV_DETACHED                       = 0x8\n\tFIB_RULE_FIND_SADDR                         = 0x10000\n\tFIB_RULE_IIF_DETACHED                       = 0x8\n\tFIB_RULE_INVERT                             = 0x2\n\tFIB_RULE_OIF_DETACHED                       = 0x10\n\tFIB_RULE_PERMANENT                          = 0x1\n\tFIB_RULE_UNRESOLVED                         = 0x4\n\tFIDEDUPERANGE                               = 0xc0189436\n\tFSCRYPT_ADD_KEY_FLAG_HW_WRAPPED             = 0x1\n\tFSCRYPT_KEY_DESCRIPTOR_SIZE                 = 0x8\n\tFSCRYPT_KEY_DESC_PREFIX                     = \"fscrypt:\"\n\tFSCRYPT_KEY_DESC_PREFIX_SIZE                = 0x8\n\tFSCRYPT_KEY_IDENTIFIER_SIZE                 = 0x10\n\tFSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY  = 0x1\n\tFSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS = 0x2\n\tFSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR            = 0x1\n\tFSCRYPT_KEY_SPEC_TYPE_IDENTIFIER            = 0x2\n\tFSCRYPT_KEY_STATUS_ABSENT                   = 0x1\n\tFSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF       = 0x1\n\tFSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED     = 0x3\n\tFSCRYPT_KEY_STATUS_PRESENT                  = 0x2\n\tFSCRYPT_MAX_KEY_SIZE                        = 0x40\n\tFSCRYPT_MODE_ADIANTUM                       = 0x9\n\tFSCRYPT_MODE_AES_128_CBC                    = 0x5\n\tFSCRYPT_MODE_AES_128_CTS                    = 0x6\n\tFSCRYPT_MODE_AES_256_CTS                    = 0x4\n\tFSCRYPT_MODE_AES_256_HCTR2                  = 0xa\n\tFSCRYPT_MODE_AES_256_XTS                    = 0x1\n\tFSCRYPT_MODE_SM4_CTS                        = 0x8\n\tFSCRYPT_MODE_SM4_XTS                        = 0x7\n\tFSCRYPT_POLICY_FLAGS_PAD_16                 = 0x2\n\tFSCRYPT_POLICY_FLAGS_PAD_32                 = 0x3\n\tFSCRYPT_POLICY_FLAGS_PAD_4                  = 0x0\n\tFSCRYPT_POLICY_FLAGS_PAD_8                  = 0x1\n\tFSCRYPT_POLICY_FLAGS_PAD_MASK               = 0x3\n\tFSCRYPT_POLICY_FLAG_DIRECT_KEY              = 0x4\n\tFSCRYPT_POLICY_FLAG_IV_INO_LBLK_32          = 0x10\n\tFSCRYPT_POLICY_FLAG_IV_INO_LBLK_64          = 0x8\n\tFSCRYPT_POLICY_V1                           = 0x0\n\tFSCRYPT_POLICY_V2                           = 0x2\n\tFS_ENCRYPTION_MODE_ADIANTUM                 = 0x9\n\tFS_ENCRYPTION_MODE_AES_128_CBC              = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS              = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC              = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS              = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM              = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS              = 0x1\n\tFS_ENCRYPTION_MODE_INVALID                  = 0x0\n\tFS_IOC_ADD_ENCRYPTION_KEY                   = 0xc0506617\n\tFS_IOC_GET_ENCRYPTION_KEY_STATUS            = 0xc080661a\n\tFS_IOC_GET_ENCRYPTION_POLICY_EX             = 0xc0096616\n\tFS_IOC_MEASURE_VERITY                       = 0xc0046686\n\tFS_IOC_READ_VERITY_METADATA                 = 0xc0286687\n\tFS_IOC_REMOVE_ENCRYPTION_KEY                = 0xc0406618\n\tFS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS      = 0xc0406619\n\tFS_KEY_DESCRIPTOR_SIZE                      = 0x8\n\tFS_KEY_DESC_PREFIX                          = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE                     = 0x8\n\tFS_MAX_KEY_SIZE                             = 0x40\n\tFS_POLICY_FLAGS_PAD_16                      = 0x2\n\tFS_POLICY_FLAGS_PAD_32                      = 0x3\n\tFS_POLICY_FLAGS_PAD_4                       = 0x0\n\tFS_POLICY_FLAGS_PAD_8                       = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK                    = 0x3\n\tFS_POLICY_FLAGS_VALID                       = 0x7\n\tFS_VERITY_FL                                = 0x100000\n\tFS_VERITY_HASH_ALG_SHA256                   = 0x1\n\tFS_VERITY_HASH_ALG_SHA512                   = 0x2\n\tFS_VERITY_METADATA_TYPE_DESCRIPTOR          = 0x2\n\tFS_VERITY_METADATA_TYPE_MERKLE_TREE         = 0x1\n\tFS_VERITY_METADATA_TYPE_SIGNATURE           = 0x3\n\tFUSE_SUPER_MAGIC                            = 0x65735546\n\tFUTEXFS_SUPER_MAGIC                         = 0xbad1dea\n\tF_ADD_SEALS                                 = 0x409\n\tF_CREATED_QUERY                             = 0x404\n\tF_DUPFD                                     = 0x0\n\tF_DUPFD_CLOEXEC                             = 0x406\n\tF_DUPFD_QUERY                               = 0x403\n\tF_EXLCK                                     = 0x4\n\tF_GETFD                                     = 0x1\n\tF_GETFL                                     = 0x3\n\tF_GETLEASE                                  = 0x401\n\tF_GETOWN_EX                                 = 0x10\n\tF_GETPIPE_SZ                                = 0x408\n\tF_GETSIG                                    = 0xb\n\tF_GET_FILE_RW_HINT                          = 0x40d\n\tF_GET_RW_HINT                               = 0x40b\n\tF_GET_SEALS                                 = 0x40a\n\tF_LOCK                                      = 0x1\n\tF_NOTIFY                                    = 0x402\n\tF_OFD_GETLK                                 = 0x24\n\tF_OFD_SETLK                                 = 0x25\n\tF_OFD_SETLKW                                = 0x26\n\tF_OK                                        = 0x0\n\tF_SEAL_EXEC                                 = 0x20\n\tF_SEAL_FUTURE_WRITE                         = 0x10\n\tF_SEAL_GROW                                 = 0x4\n\tF_SEAL_SEAL                                 = 0x1\n\tF_SEAL_SHRINK                               = 0x2\n\tF_SEAL_WRITE                                = 0x8\n\tF_SETFD                                     = 0x2\n\tF_SETFL                                     = 0x4\n\tF_SETLEASE                                  = 0x400\n\tF_SETOWN_EX                                 = 0xf\n\tF_SETPIPE_SZ                                = 0x407\n\tF_SETSIG                                    = 0xa\n\tF_SET_FILE_RW_HINT                          = 0x40e\n\tF_SET_RW_HINT                               = 0x40c\n\tF_SHLCK                                     = 0x8\n\tF_TEST                                      = 0x3\n\tF_TLOCK                                     = 0x2\n\tF_ULOCK                                     = 0x0\n\tGENL_ADMIN_PERM                             = 0x1\n\tGENL_CMD_CAP_DO                             = 0x2\n\tGENL_CMD_CAP_DUMP                           = 0x4\n\tGENL_CMD_CAP_HASPOL                         = 0x8\n\tGENL_HDRLEN                                 = 0x4\n\tGENL_ID_CTRL                                = 0x10\n\tGENL_ID_PMCRAID                             = 0x12\n\tGENL_ID_VFS_DQUOT                           = 0x11\n\tGENL_MAX_ID                                 = 0x3ff\n\tGENL_MIN_ID                                 = 0x10\n\tGENL_NAMSIZ                                 = 0x10\n\tGENL_START_ALLOC                            = 0x13\n\tGENL_UNS_ADMIN_PERM                         = 0x10\n\tGRND_INSECURE                               = 0x4\n\tGRND_NONBLOCK                               = 0x1\n\tGRND_RANDOM                                 = 0x2\n\tHDIO_DRIVE_CMD                              = 0x31f\n\tHDIO_DRIVE_CMD_AEB                          = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE                     = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE                     = 0x8\n\tHDIO_DRIVE_RESET                            = 0x31c\n\tHDIO_DRIVE_TASK                             = 0x31e\n\tHDIO_DRIVE_TASKFILE                         = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE                    = 0x8\n\tHDIO_GETGEO                                 = 0x301\n\tHDIO_GET_32BIT                              = 0x309\n\tHDIO_GET_ACOUSTIC                           = 0x30f\n\tHDIO_GET_ADDRESS                            = 0x310\n\tHDIO_GET_BUSSTATE                           = 0x31a\n\tHDIO_GET_DMA                                = 0x30b\n\tHDIO_GET_IDENTITY                           = 0x30d\n\tHDIO_GET_KEEPSETTINGS                       = 0x308\n\tHDIO_GET_MULTCOUNT                          = 0x304\n\tHDIO_GET_NICE                               = 0x30c\n\tHDIO_GET_NOWERR                             = 0x30a\n\tHDIO_GET_QDMA                               = 0x305\n\tHDIO_GET_UNMASKINTR                         = 0x302\n\tHDIO_GET_WCACHE                             = 0x30e\n\tHDIO_OBSOLETE_IDENTITY                      = 0x307\n\tHDIO_SCAN_HWIF                              = 0x328\n\tHDIO_SET_32BIT                              = 0x324\n\tHDIO_SET_ACOUSTIC                           = 0x32c\n\tHDIO_SET_ADDRESS                            = 0x32f\n\tHDIO_SET_BUSSTATE                           = 0x32d\n\tHDIO_SET_DMA                                = 0x326\n\tHDIO_SET_KEEPSETTINGS                       = 0x323\n\tHDIO_SET_MULTCOUNT                          = 0x321\n\tHDIO_SET_NICE                               = 0x329\n\tHDIO_SET_NOWERR                             = 0x325\n\tHDIO_SET_PIO_MODE                           = 0x327\n\tHDIO_SET_QDMA                               = 0x32e\n\tHDIO_SET_UNMASKINTR                         = 0x322\n\tHDIO_SET_WCACHE                             = 0x32b\n\tHDIO_SET_XFER                               = 0x306\n\tHDIO_TRISTATE_HWIF                          = 0x31b\n\tHDIO_UNREGISTER_HWIF                        = 0x32a\n\tHID_MAX_DESCRIPTOR_SIZE                     = 0x1000\n\tHOSTFS_SUPER_MAGIC                          = 0xc0ffee\n\tHPFS_SUPER_MAGIC                            = 0xf995e849\n\tHUGETLBFS_MAGIC                             = 0x958458f6\n\tIBSHIFT                                     = 0x10\n\tICRNL                                       = 0x100\n\tIFA_F_DADFAILED                             = 0x8\n\tIFA_F_DEPRECATED                            = 0x20\n\tIFA_F_HOMEADDRESS                           = 0x10\n\tIFA_F_MANAGETEMPADDR                        = 0x100\n\tIFA_F_MCAUTOJOIN                            = 0x400\n\tIFA_F_NODAD                                 = 0x2\n\tIFA_F_NOPREFIXROUTE                         = 0x200\n\tIFA_F_OPTIMISTIC                            = 0x4\n\tIFA_F_PERMANENT                             = 0x80\n\tIFA_F_SECONDARY                             = 0x1\n\tIFA_F_STABLE_PRIVACY                        = 0x800\n\tIFA_F_TEMPORARY                             = 0x1\n\tIFA_F_TENTATIVE                             = 0x40\n\tIFA_MAX                                     = 0xb\n\tIFF_ALLMULTI                                = 0x200\n\tIFF_ATTACH_QUEUE                            = 0x200\n\tIFF_AUTOMEDIA                               = 0x4000\n\tIFF_BROADCAST                               = 0x2\n\tIFF_DEBUG                                   = 0x4\n\tIFF_DETACH_QUEUE                            = 0x400\n\tIFF_DORMANT                                 = 0x20000\n\tIFF_DYNAMIC                                 = 0x8000\n\tIFF_ECHO                                    = 0x40000\n\tIFF_LOOPBACK                                = 0x8\n\tIFF_LOWER_UP                                = 0x10000\n\tIFF_MASTER                                  = 0x400\n\tIFF_MULTICAST                               = 0x1000\n\tIFF_MULTI_QUEUE                             = 0x100\n\tIFF_NAPI                                    = 0x10\n\tIFF_NAPI_FRAGS                              = 0x20\n\tIFF_NOARP                                   = 0x80\n\tIFF_NOFILTER                                = 0x1000\n\tIFF_NOTRAILERS                              = 0x20\n\tIFF_NO_CARRIER                              = 0x40\n\tIFF_NO_PI                                   = 0x1000\n\tIFF_ONE_QUEUE                               = 0x2000\n\tIFF_PERSIST                                 = 0x800\n\tIFF_POINTOPOINT                             = 0x10\n\tIFF_PORTSEL                                 = 0x2000\n\tIFF_PROMISC                                 = 0x100\n\tIFF_RUNNING                                 = 0x40\n\tIFF_SLAVE                                   = 0x800\n\tIFF_TAP                                     = 0x2\n\tIFF_TUN                                     = 0x1\n\tIFF_TUN_EXCL                                = 0x8000\n\tIFF_UP                                      = 0x1\n\tIFF_VNET_HDR                                = 0x4000\n\tIFF_VOLATILE                                = 0x70c5a\n\tIFNAMSIZ                                    = 0x10\n\tIGNBRK                                      = 0x1\n\tIGNCR                                       = 0x80\n\tIGNPAR                                      = 0x4\n\tIMAXBEL                                     = 0x2000\n\tINLCR                                       = 0x40\n\tINPCK                                       = 0x10\n\tIN_ACCESS                                   = 0x1\n\tIN_ALL_EVENTS                               = 0xfff\n\tIN_ATTRIB                                   = 0x4\n\tIN_CLASSA_HOST                              = 0xffffff\n\tIN_CLASSA_MAX                               = 0x80\n\tIN_CLASSA_NET                               = 0xff000000\n\tIN_CLASSA_NSHIFT                            = 0x18\n\tIN_CLASSB_HOST                              = 0xffff\n\tIN_CLASSB_MAX                               = 0x10000\n\tIN_CLASSB_NET                               = 0xffff0000\n\tIN_CLASSB_NSHIFT                            = 0x10\n\tIN_CLASSC_HOST                              = 0xff\n\tIN_CLASSC_NET                               = 0xffffff00\n\tIN_CLASSC_NSHIFT                            = 0x8\n\tIN_CLOSE                                    = 0x18\n\tIN_CLOSE_NOWRITE                            = 0x10\n\tIN_CLOSE_WRITE                              = 0x8\n\tIN_CREATE                                   = 0x100\n\tIN_DELETE                                   = 0x200\n\tIN_DELETE_SELF                              = 0x400\n\tIN_DONT_FOLLOW                              = 0x2000000\n\tIN_EXCL_UNLINK                              = 0x4000000\n\tIN_IGNORED                                  = 0x8000\n\tIN_ISDIR                                    = 0x40000000\n\tIN_LOOPBACKNET                              = 0x7f\n\tIN_MASK_ADD                                 = 0x20000000\n\tIN_MASK_CREATE                              = 0x10000000\n\tIN_MODIFY                                   = 0x2\n\tIN_MOVE                                     = 0xc0\n\tIN_MOVED_FROM                               = 0x40\n\tIN_MOVED_TO                                 = 0x80\n\tIN_MOVE_SELF                                = 0x800\n\tIN_ONESHOT                                  = 0x80000000\n\tIN_ONLYDIR                                  = 0x1000000\n\tIN_OPEN                                     = 0x20\n\tIN_Q_OVERFLOW                               = 0x4000\n\tIN_UNMOUNT                                  = 0x2000\n\tIOCTL_MEI_CONNECT_CLIENT                    = 0xc0104801\n\tIOCTL_MEI_CONNECT_CLIENT_VTAG               = 0xc0144804\n\tIPPROTO_AH                                  = 0x33\n\tIPPROTO_BEETPH                              = 0x5e\n\tIPPROTO_COMP                                = 0x6c\n\tIPPROTO_DCCP                                = 0x21\n\tIPPROTO_DSTOPTS                             = 0x3c\n\tIPPROTO_EGP                                 = 0x8\n\tIPPROTO_ENCAP                               = 0x62\n\tIPPROTO_ESP                                 = 0x32\n\tIPPROTO_ETHERNET                            = 0x8f\n\tIPPROTO_FRAGMENT                            = 0x2c\n\tIPPROTO_GRE                                 = 0x2f\n\tIPPROTO_HOPOPTS                             = 0x0\n\tIPPROTO_ICMP                                = 0x1\n\tIPPROTO_ICMPV6                              = 0x3a\n\tIPPROTO_IDP                                 = 0x16\n\tIPPROTO_IGMP                                = 0x2\n\tIPPROTO_IP                                  = 0x0\n\tIPPROTO_IPIP                                = 0x4\n\tIPPROTO_IPV6                                = 0x29\n\tIPPROTO_L2TP                                = 0x73\n\tIPPROTO_MH                                  = 0x87\n\tIPPROTO_MPLS                                = 0x89\n\tIPPROTO_MPTCP                               = 0x106\n\tIPPROTO_MTP                                 = 0x5c\n\tIPPROTO_NONE                                = 0x3b\n\tIPPROTO_PIM                                 = 0x67\n\tIPPROTO_PUP                                 = 0xc\n\tIPPROTO_RAW                                 = 0xff\n\tIPPROTO_ROUTING                             = 0x2b\n\tIPPROTO_RSVP                                = 0x2e\n\tIPPROTO_SCTP                                = 0x84\n\tIPPROTO_SMC                                 = 0x100\n\tIPPROTO_TCP                                 = 0x6\n\tIPPROTO_TP                                  = 0x1d\n\tIPPROTO_UDP                                 = 0x11\n\tIPPROTO_UDPLITE                             = 0x88\n\tIPV6_2292DSTOPTS                            = 0x4\n\tIPV6_2292HOPLIMIT                           = 0x8\n\tIPV6_2292HOPOPTS                            = 0x3\n\tIPV6_2292PKTINFO                            = 0x2\n\tIPV6_2292PKTOPTIONS                         = 0x6\n\tIPV6_2292RTHDR                              = 0x5\n\tIPV6_ADDRFORM                               = 0x1\n\tIPV6_ADDR_PREFERENCES                       = 0x48\n\tIPV6_ADD_MEMBERSHIP                         = 0x14\n\tIPV6_AUTHHDR                                = 0xa\n\tIPV6_AUTOFLOWLABEL                          = 0x46\n\tIPV6_CHECKSUM                               = 0x7\n\tIPV6_DONTFRAG                               = 0x3e\n\tIPV6_DROP_MEMBERSHIP                        = 0x15\n\tIPV6_DSTOPTS                                = 0x3b\n\tIPV6_FREEBIND                               = 0x4e\n\tIPV6_HDRINCL                                = 0x24\n\tIPV6_HOPLIMIT                               = 0x34\n\tIPV6_HOPOPTS                                = 0x36\n\tIPV6_IPSEC_POLICY                           = 0x22\n\tIPV6_JOIN_ANYCAST                           = 0x1b\n\tIPV6_JOIN_GROUP                             = 0x14\n\tIPV6_LEAVE_ANYCAST                          = 0x1c\n\tIPV6_LEAVE_GROUP                            = 0x15\n\tIPV6_MINHOPCOUNT                            = 0x49\n\tIPV6_MTU                                    = 0x18\n\tIPV6_MTU_DISCOVER                           = 0x17\n\tIPV6_MULTICAST_ALL                          = 0x1d\n\tIPV6_MULTICAST_HOPS                         = 0x12\n\tIPV6_MULTICAST_IF                           = 0x11\n\tIPV6_MULTICAST_LOOP                         = 0x13\n\tIPV6_NEXTHOP                                = 0x9\n\tIPV6_ORIGDSTADDR                            = 0x4a\n\tIPV6_PATHMTU                                = 0x3d\n\tIPV6_PKTINFO                                = 0x32\n\tIPV6_PMTUDISC_DO                            = 0x2\n\tIPV6_PMTUDISC_DONT                          = 0x0\n\tIPV6_PMTUDISC_INTERFACE                     = 0x4\n\tIPV6_PMTUDISC_OMIT                          = 0x5\n\tIPV6_PMTUDISC_PROBE                         = 0x3\n\tIPV6_PMTUDISC_WANT                          = 0x1\n\tIPV6_RECVDSTOPTS                            = 0x3a\n\tIPV6_RECVERR                                = 0x19\n\tIPV6_RECVERR_RFC4884                        = 0x1f\n\tIPV6_RECVFRAGSIZE                           = 0x4d\n\tIPV6_RECVHOPLIMIT                           = 0x33\n\tIPV6_RECVHOPOPTS                            = 0x35\n\tIPV6_RECVORIGDSTADDR                        = 0x4a\n\tIPV6_RECVPATHMTU                            = 0x3c\n\tIPV6_RECVPKTINFO                            = 0x31\n\tIPV6_RECVRTHDR                              = 0x38\n\tIPV6_RECVTCLASS                             = 0x42\n\tIPV6_ROUTER_ALERT                           = 0x16\n\tIPV6_ROUTER_ALERT_ISOLATE                   = 0x1e\n\tIPV6_RTHDR                                  = 0x39\n\tIPV6_RTHDRDSTOPTS                           = 0x37\n\tIPV6_RTHDR_LOOSE                            = 0x0\n\tIPV6_RTHDR_STRICT                           = 0x1\n\tIPV6_RTHDR_TYPE_0                           = 0x0\n\tIPV6_RXDSTOPTS                              = 0x3b\n\tIPV6_RXHOPOPTS                              = 0x36\n\tIPV6_TCLASS                                 = 0x43\n\tIPV6_TRANSPARENT                            = 0x4b\n\tIPV6_UNICAST_HOPS                           = 0x10\n\tIPV6_UNICAST_IF                             = 0x4c\n\tIPV6_V6ONLY                                 = 0x1a\n\tIPV6_VERSION                                = 0x60\n\tIPV6_VERSION_MASK                           = 0xf0\n\tIPV6_XFRM_POLICY                            = 0x23\n\tIP_ADD_MEMBERSHIP                           = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP                    = 0x27\n\tIP_BIND_ADDRESS_NO_PORT                     = 0x18\n\tIP_BLOCK_SOURCE                             = 0x26\n\tIP_CHECKSUM                                 = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP                   = 0x1\n\tIP_DEFAULT_MULTICAST_TTL                    = 0x1\n\tIP_DF                                       = 0x4000\n\tIP_DROP_MEMBERSHIP                          = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP                   = 0x28\n\tIP_FREEBIND                                 = 0xf\n\tIP_HDRINCL                                  = 0x3\n\tIP_IPSEC_POLICY                             = 0x10\n\tIP_LOCAL_PORT_RANGE                         = 0x33\n\tIP_MAXPACKET                                = 0xffff\n\tIP_MAX_MEMBERSHIPS                          = 0x14\n\tIP_MF                                       = 0x2000\n\tIP_MINTTL                                   = 0x15\n\tIP_MSFILTER                                 = 0x29\n\tIP_MSS                                      = 0x240\n\tIP_MTU                                      = 0xe\n\tIP_MTU_DISCOVER                             = 0xa\n\tIP_MULTICAST_ALL                            = 0x31\n\tIP_MULTICAST_IF                             = 0x20\n\tIP_MULTICAST_LOOP                           = 0x22\n\tIP_MULTICAST_TTL                            = 0x21\n\tIP_NODEFRAG                                 = 0x16\n\tIP_OFFMASK                                  = 0x1fff\n\tIP_OPTIONS                                  = 0x4\n\tIP_ORIGDSTADDR                              = 0x14\n\tIP_PASSSEC                                  = 0x12\n\tIP_PKTINFO                                  = 0x8\n\tIP_PKTOPTIONS                               = 0x9\n\tIP_PMTUDISC                                 = 0xa\n\tIP_PMTUDISC_DO                              = 0x2\n\tIP_PMTUDISC_DONT                            = 0x0\n\tIP_PMTUDISC_INTERFACE                       = 0x4\n\tIP_PMTUDISC_OMIT                            = 0x5\n\tIP_PMTUDISC_PROBE                           = 0x3\n\tIP_PMTUDISC_WANT                            = 0x1\n\tIP_PROTOCOL                                 = 0x34\n\tIP_RECVERR                                  = 0xb\n\tIP_RECVERR_RFC4884                          = 0x1a\n\tIP_RECVFRAGSIZE                             = 0x19\n\tIP_RECVOPTS                                 = 0x6\n\tIP_RECVORIGDSTADDR                          = 0x14\n\tIP_RECVRETOPTS                              = 0x7\n\tIP_RECVTOS                                  = 0xd\n\tIP_RECVTTL                                  = 0xc\n\tIP_RETOPTS                                  = 0x7\n\tIP_RF                                       = 0x8000\n\tIP_ROUTER_ALERT                             = 0x5\n\tIP_TOS                                      = 0x1\n\tIP_TRANSPARENT                              = 0x13\n\tIP_TTL                                      = 0x2\n\tIP_UNBLOCK_SOURCE                           = 0x25\n\tIP_UNICAST_IF                               = 0x32\n\tIP_XFRM_POLICY                              = 0x11\n\tISOFS_SUPER_MAGIC                           = 0x9660\n\tISTRIP                                      = 0x20\n\tITIMER_PROF                                 = 0x2\n\tITIMER_REAL                                 = 0x0\n\tITIMER_VIRTUAL                              = 0x1\n\tIUTF8                                       = 0x4000\n\tIXANY                                       = 0x800\n\tJFFS2_SUPER_MAGIC                           = 0x72b6\n\tKCMPROTO_CONNECTED                          = 0x0\n\tKCM_RECV_DISABLE                            = 0x1\n\tKEXEC_ARCH_386                              = 0x30000\n\tKEXEC_ARCH_68K                              = 0x40000\n\tKEXEC_ARCH_AARCH64                          = 0xb70000\n\tKEXEC_ARCH_ARM                              = 0x280000\n\tKEXEC_ARCH_DEFAULT                          = 0x0\n\tKEXEC_ARCH_IA_64                            = 0x320000\n\tKEXEC_ARCH_LOONGARCH                        = 0x1020000\n\tKEXEC_ARCH_MASK                             = 0xffff0000\n\tKEXEC_ARCH_MIPS                             = 0x80000\n\tKEXEC_ARCH_MIPS_LE                          = 0xa0000\n\tKEXEC_ARCH_PARISC                           = 0xf0000\n\tKEXEC_ARCH_PPC                              = 0x140000\n\tKEXEC_ARCH_PPC64                            = 0x150000\n\tKEXEC_ARCH_RISCV                            = 0xf30000\n\tKEXEC_ARCH_S390                             = 0x160000\n\tKEXEC_ARCH_SH                               = 0x2a0000\n\tKEXEC_ARCH_X86_64                           = 0x3e0000\n\tKEXEC_CRASH_HOTPLUG_SUPPORT                 = 0x8\n\tKEXEC_FILE_DEBUG                            = 0x8\n\tKEXEC_FILE_NO_INITRAMFS                     = 0x4\n\tKEXEC_FILE_ON_CRASH                         = 0x2\n\tKEXEC_FILE_UNLOAD                           = 0x1\n\tKEXEC_ON_CRASH                              = 0x1\n\tKEXEC_PRESERVE_CONTEXT                      = 0x2\n\tKEXEC_SEGMENT_MAX                           = 0x10\n\tKEXEC_UPDATE_ELFCOREHDR                     = 0x4\n\tKEYCTL_ASSUME_AUTHORITY                     = 0x10\n\tKEYCTL_CAPABILITIES                         = 0x1f\n\tKEYCTL_CAPS0_BIG_KEY                        = 0x10\n\tKEYCTL_CAPS0_CAPABILITIES                   = 0x1\n\tKEYCTL_CAPS0_DIFFIE_HELLMAN                 = 0x4\n\tKEYCTL_CAPS0_INVALIDATE                     = 0x20\n\tKEYCTL_CAPS0_MOVE                           = 0x80\n\tKEYCTL_CAPS0_PERSISTENT_KEYRINGS            = 0x2\n\tKEYCTL_CAPS0_PUBLIC_KEY                     = 0x8\n\tKEYCTL_CAPS0_RESTRICT_KEYRING               = 0x40\n\tKEYCTL_CAPS1_NOTIFICATIONS                  = 0x4\n\tKEYCTL_CAPS1_NS_KEYRING_NAME                = 0x1\n\tKEYCTL_CAPS1_NS_KEY_TAG                     = 0x2\n\tKEYCTL_CHOWN                                = 0x4\n\tKEYCTL_CLEAR                                = 0x7\n\tKEYCTL_DESCRIBE                             = 0x6\n\tKEYCTL_DH_COMPUTE                           = 0x17\n\tKEYCTL_GET_KEYRING_ID                       = 0x0\n\tKEYCTL_GET_PERSISTENT                       = 0x16\n\tKEYCTL_GET_SECURITY                         = 0x11\n\tKEYCTL_INSTANTIATE                          = 0xc\n\tKEYCTL_INSTANTIATE_IOV                      = 0x14\n\tKEYCTL_INVALIDATE                           = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING                 = 0x1\n\tKEYCTL_LINK                                 = 0x8\n\tKEYCTL_MOVE                                 = 0x1e\n\tKEYCTL_MOVE_EXCL                            = 0x1\n\tKEYCTL_NEGATE                               = 0xd\n\tKEYCTL_PKEY_DECRYPT                         = 0x1a\n\tKEYCTL_PKEY_ENCRYPT                         = 0x19\n\tKEYCTL_PKEY_QUERY                           = 0x18\n\tKEYCTL_PKEY_SIGN                            = 0x1b\n\tKEYCTL_PKEY_VERIFY                          = 0x1c\n\tKEYCTL_READ                                 = 0xb\n\tKEYCTL_REJECT                               = 0x13\n\tKEYCTL_RESTRICT_KEYRING                     = 0x1d\n\tKEYCTL_REVOKE                               = 0x3\n\tKEYCTL_SEARCH                               = 0xa\n\tKEYCTL_SESSION_TO_PARENT                    = 0x12\n\tKEYCTL_SETPERM                              = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING                   = 0xe\n\tKEYCTL_SET_TIMEOUT                          = 0xf\n\tKEYCTL_SUPPORTS_DECRYPT                     = 0x2\n\tKEYCTL_SUPPORTS_ENCRYPT                     = 0x1\n\tKEYCTL_SUPPORTS_SIGN                        = 0x4\n\tKEYCTL_SUPPORTS_VERIFY                      = 0x8\n\tKEYCTL_UNLINK                               = 0x9\n\tKEYCTL_UPDATE                               = 0x2\n\tKEYCTL_WATCH_KEY                            = 0x20\n\tKEY_REQKEY_DEFL_DEFAULT                     = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING               = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE                   = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING             = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING           = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING             = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING              = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING                = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING        = 0x5\n\tKEY_SPEC_GROUP_KEYRING                      = -0x6\n\tKEY_SPEC_PROCESS_KEYRING                    = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY                    = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING                  = -0x8\n\tKEY_SPEC_SESSION_KEYRING                    = -0x3\n\tKEY_SPEC_THREAD_KEYRING                     = -0x1\n\tKEY_SPEC_USER_KEYRING                       = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING               = -0x5\n\tLANDLOCK_ACCESS_FS_EXECUTE                  = 0x1\n\tLANDLOCK_ACCESS_FS_IOCTL_DEV                = 0x8000\n\tLANDLOCK_ACCESS_FS_MAKE_BLOCK               = 0x800\n\tLANDLOCK_ACCESS_FS_MAKE_CHAR                = 0x40\n\tLANDLOCK_ACCESS_FS_MAKE_DIR                 = 0x80\n\tLANDLOCK_ACCESS_FS_MAKE_FIFO                = 0x400\n\tLANDLOCK_ACCESS_FS_MAKE_REG                 = 0x100\n\tLANDLOCK_ACCESS_FS_MAKE_SOCK                = 0x200\n\tLANDLOCK_ACCESS_FS_MAKE_SYM                 = 0x1000\n\tLANDLOCK_ACCESS_FS_READ_DIR                 = 0x8\n\tLANDLOCK_ACCESS_FS_READ_FILE                = 0x4\n\tLANDLOCK_ACCESS_FS_REFER                    = 0x2000\n\tLANDLOCK_ACCESS_FS_REMOVE_DIR               = 0x10\n\tLANDLOCK_ACCESS_FS_REMOVE_FILE              = 0x20\n\tLANDLOCK_ACCESS_FS_TRUNCATE                 = 0x4000\n\tLANDLOCK_ACCESS_FS_WRITE_FILE               = 0x2\n\tLANDLOCK_ACCESS_NET_BIND_TCP                = 0x1\n\tLANDLOCK_ACCESS_NET_CONNECT_TCP             = 0x2\n\tLANDLOCK_CREATE_RULESET_ERRATA              = 0x2\n\tLANDLOCK_CREATE_RULESET_VERSION             = 0x1\n\tLANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON      = 0x2\n\tLANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF    = 0x1\n\tLANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF   = 0x4\n\tLANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET         = 0x1\n\tLANDLOCK_SCOPE_SIGNAL                       = 0x2\n\tLINUX_REBOOT_CMD_CAD_OFF                    = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON                     = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                       = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC                      = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF                  = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART                    = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2                   = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND                 = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                         = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                         = 0x28121969\n\tLOCK_EX                                     = 0x2\n\tLOCK_NB                                     = 0x4\n\tLOCK_SH                                     = 0x1\n\tLOCK_UN                                     = 0x8\n\tLOOP_CLR_FD                                 = 0x4c01\n\tLOOP_CONFIGURE                              = 0x4c0a\n\tLOOP_CTL_ADD                                = 0x4c80\n\tLOOP_CTL_GET_FREE                           = 0x4c82\n\tLOOP_CTL_REMOVE                             = 0x4c81\n\tLOOP_GET_STATUS                             = 0x4c03\n\tLOOP_GET_STATUS64                           = 0x4c05\n\tLOOP_SET_BLOCK_SIZE                         = 0x4c09\n\tLOOP_SET_CAPACITY                           = 0x4c07\n\tLOOP_SET_DIRECT_IO                          = 0x4c08\n\tLOOP_SET_FD                                 = 0x4c00\n\tLOOP_SET_STATUS                             = 0x4c02\n\tLOOP_SET_STATUS64                           = 0x4c04\n\tLOOP_SET_STATUS_CLEARABLE_FLAGS             = 0x4\n\tLOOP_SET_STATUS_SETTABLE_FLAGS              = 0xc\n\tLO_KEY_SIZE                                 = 0x20\n\tLO_NAME_SIZE                                = 0x40\n\tLWTUNNEL_IP6_MAX                            = 0x8\n\tLWTUNNEL_IP_MAX                             = 0x8\n\tLWTUNNEL_IP_OPTS_MAX                        = 0x3\n\tLWTUNNEL_IP_OPT_ERSPAN_MAX                  = 0x4\n\tLWTUNNEL_IP_OPT_GENEVE_MAX                  = 0x3\n\tLWTUNNEL_IP_OPT_VXLAN_MAX                   = 0x1\n\tMADV_COLD                                   = 0x14\n\tMADV_COLLAPSE                               = 0x19\n\tMADV_DODUMP                                 = 0x11\n\tMADV_DOFORK                                 = 0xb\n\tMADV_DONTDUMP                               = 0x10\n\tMADV_DONTFORK                               = 0xa\n\tMADV_DONTNEED                               = 0x4\n\tMADV_DONTNEED_LOCKED                        = 0x18\n\tMADV_FREE                                   = 0x8\n\tMADV_HUGEPAGE                               = 0xe\n\tMADV_HWPOISON                               = 0x64\n\tMADV_KEEPONFORK                             = 0x13\n\tMADV_MERGEABLE                              = 0xc\n\tMADV_NOHUGEPAGE                             = 0xf\n\tMADV_NORMAL                                 = 0x0\n\tMADV_PAGEOUT                                = 0x15\n\tMADV_POPULATE_READ                          = 0x16\n\tMADV_POPULATE_WRITE                         = 0x17\n\tMADV_RANDOM                                 = 0x1\n\tMADV_REMOVE                                 = 0x9\n\tMADV_SEQUENTIAL                             = 0x2\n\tMADV_UNMERGEABLE                            = 0xd\n\tMADV_WILLNEED                               = 0x3\n\tMADV_WIPEONFORK                             = 0x12\n\tMAP_DROPPABLE                               = 0x8\n\tMAP_FILE                                    = 0x0\n\tMAP_FIXED                                   = 0x10\n\tMAP_FIXED_NOREPLACE                         = 0x100000\n\tMAP_HUGE_16GB                               = 0x88000000\n\tMAP_HUGE_16KB                               = 0x38000000\n\tMAP_HUGE_16MB                               = 0x60000000\n\tMAP_HUGE_1GB                                = 0x78000000\n\tMAP_HUGE_1MB                                = 0x50000000\n\tMAP_HUGE_256MB                              = 0x70000000\n\tMAP_HUGE_2GB                                = 0x7c000000\n\tMAP_HUGE_2MB                                = 0x54000000\n\tMAP_HUGE_32MB                               = 0x64000000\n\tMAP_HUGE_512KB                              = 0x4c000000\n\tMAP_HUGE_512MB                              = 0x74000000\n\tMAP_HUGE_64KB                               = 0x40000000\n\tMAP_HUGE_8MB                                = 0x5c000000\n\tMAP_HUGE_MASK                               = 0x3f\n\tMAP_HUGE_SHIFT                              = 0x1a\n\tMAP_PRIVATE                                 = 0x2\n\tMAP_SHARED                                  = 0x1\n\tMAP_SHARED_VALIDATE                         = 0x3\n\tMAP_TYPE                                    = 0xf\n\tMCAST_BLOCK_SOURCE                          = 0x2b\n\tMCAST_EXCLUDE                               = 0x0\n\tMCAST_INCLUDE                               = 0x1\n\tMCAST_JOIN_GROUP                            = 0x2a\n\tMCAST_JOIN_SOURCE_GROUP                     = 0x2e\n\tMCAST_LEAVE_GROUP                           = 0x2d\n\tMCAST_LEAVE_SOURCE_GROUP                    = 0x2f\n\tMCAST_MSFILTER                              = 0x30\n\tMCAST_UNBLOCK_SOURCE                        = 0x2c\n\tMEMGETREGIONINFO                            = 0xc0104d08\n\tMEMREADOOB64                                = 0xc0184d16\n\tMEMWRITE                                    = 0xc0304d18\n\tMEMWRITEOOB64                               = 0xc0184d15\n\tMFD_ALLOW_SEALING                           = 0x2\n\tMFD_CLOEXEC                                 = 0x1\n\tMFD_EXEC                                    = 0x10\n\tMFD_HUGETLB                                 = 0x4\n\tMFD_HUGE_16GB                               = 0x88000000\n\tMFD_HUGE_16MB                               = 0x60000000\n\tMFD_HUGE_1GB                                = 0x78000000\n\tMFD_HUGE_1MB                                = 0x50000000\n\tMFD_HUGE_256MB                              = 0x70000000\n\tMFD_HUGE_2GB                                = 0x7c000000\n\tMFD_HUGE_2MB                                = 0x54000000\n\tMFD_HUGE_32MB                               = 0x64000000\n\tMFD_HUGE_512KB                              = 0x4c000000\n\tMFD_HUGE_512MB                              = 0x74000000\n\tMFD_HUGE_64KB                               = 0x40000000\n\tMFD_HUGE_8MB                                = 0x5c000000\n\tMFD_HUGE_MASK                               = 0x3f\n\tMFD_HUGE_SHIFT                              = 0x1a\n\tMFD_NOEXEC_SEAL                             = 0x8\n\tMINIX2_SUPER_MAGIC                          = 0x2468\n\tMINIX2_SUPER_MAGIC2                         = 0x2478\n\tMINIX3_SUPER_MAGIC                          = 0x4d5a\n\tMINIX_SUPER_MAGIC                           = 0x137f\n\tMINIX_SUPER_MAGIC2                          = 0x138f\n\tMNT_DETACH                                  = 0x2\n\tMNT_EXPIRE                                  = 0x4\n\tMNT_FORCE                                   = 0x1\n\tMNT_ID_REQ_SIZE_VER0                        = 0x18\n\tMNT_ID_REQ_SIZE_VER1                        = 0x20\n\tMNT_NS_INFO_SIZE_VER0                       = 0x10\n\tMODULE_INIT_COMPRESSED_FILE                 = 0x4\n\tMODULE_INIT_IGNORE_MODVERSIONS              = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC                 = 0x2\n\tMOUNT_ATTR_IDMAP                            = 0x100000\n\tMOUNT_ATTR_NOATIME                          = 0x10\n\tMOUNT_ATTR_NODEV                            = 0x4\n\tMOUNT_ATTR_NODIRATIME                       = 0x80\n\tMOUNT_ATTR_NOEXEC                           = 0x8\n\tMOUNT_ATTR_NOSUID                           = 0x2\n\tMOUNT_ATTR_NOSYMFOLLOW                      = 0x200000\n\tMOUNT_ATTR_RDONLY                           = 0x1\n\tMOUNT_ATTR_RELATIME                         = 0x0\n\tMOUNT_ATTR_SIZE_VER0                        = 0x20\n\tMOUNT_ATTR_STRICTATIME                      = 0x20\n\tMOUNT_ATTR__ATIME                           = 0x70\n\tMREMAP_DONTUNMAP                            = 0x4\n\tMREMAP_FIXED                                = 0x2\n\tMREMAP_MAYMOVE                              = 0x1\n\tMSDOS_SUPER_MAGIC                           = 0x4d44\n\tMSG_BATCH                                   = 0x40000\n\tMSG_CMSG_CLOEXEC                            = 0x40000000\n\tMSG_CONFIRM                                 = 0x800\n\tMSG_CTRUNC                                  = 0x8\n\tMSG_DONTROUTE                               = 0x4\n\tMSG_DONTWAIT                                = 0x40\n\tMSG_EOR                                     = 0x80\n\tMSG_ERRQUEUE                                = 0x2000\n\tMSG_FASTOPEN                                = 0x20000000\n\tMSG_FIN                                     = 0x200\n\tMSG_MORE                                    = 0x8000\n\tMSG_NOSIGNAL                                = 0x4000\n\tMSG_OOB                                     = 0x1\n\tMSG_PEEK                                    = 0x2\n\tMSG_PROXY                                   = 0x10\n\tMSG_RST                                     = 0x1000\n\tMSG_SOCK_DEVMEM                             = 0x2000000\n\tMSG_SYN                                     = 0x400\n\tMSG_TRUNC                                   = 0x20\n\tMSG_TRYHARD                                 = 0x4\n\tMSG_WAITALL                                 = 0x100\n\tMSG_WAITFORONE                              = 0x10000\n\tMSG_ZEROCOPY                                = 0x4000000\n\tMS_ACTIVE                                   = 0x40000000\n\tMS_ASYNC                                    = 0x1\n\tMS_BIND                                     = 0x1000\n\tMS_BORN                                     = 0x20000000\n\tMS_DIRSYNC                                  = 0x80\n\tMS_INVALIDATE                               = 0x2\n\tMS_I_VERSION                                = 0x800000\n\tMS_KERNMOUNT                                = 0x400000\n\tMS_LAZYTIME                                 = 0x2000000\n\tMS_MANDLOCK                                 = 0x40\n\tMS_MGC_MSK                                  = 0xffff0000\n\tMS_MGC_VAL                                  = 0xc0ed0000\n\tMS_MOVE                                     = 0x2000\n\tMS_NOATIME                                  = 0x400\n\tMS_NODEV                                    = 0x4\n\tMS_NODIRATIME                               = 0x800\n\tMS_NOEXEC                                   = 0x8\n\tMS_NOREMOTELOCK                             = 0x8000000\n\tMS_NOSEC                                    = 0x10000000\n\tMS_NOSUID                                   = 0x2\n\tMS_NOSYMFOLLOW                              = 0x100\n\tMS_NOUSER                                   = -0x80000000\n\tMS_POSIXACL                                 = 0x10000\n\tMS_PRIVATE                                  = 0x40000\n\tMS_RDONLY                                   = 0x1\n\tMS_REC                                      = 0x4000\n\tMS_RELATIME                                 = 0x200000\n\tMS_REMOUNT                                  = 0x20\n\tMS_RMT_MASK                                 = 0x2800051\n\tMS_SHARED                                   = 0x100000\n\tMS_SILENT                                   = 0x8000\n\tMS_SLAVE                                    = 0x80000\n\tMS_STRICTATIME                              = 0x1000000\n\tMS_SUBMOUNT                                 = 0x4000000\n\tMS_SYNC                                     = 0x4\n\tMS_SYNCHRONOUS                              = 0x10\n\tMS_UNBINDABLE                               = 0x20000\n\tMS_VERBOSE                                  = 0x8000\n\tMTD_ABSENT                                  = 0x0\n\tMTD_BIT_WRITEABLE                           = 0x800\n\tMTD_CAP_NANDFLASH                           = 0x400\n\tMTD_CAP_NORFLASH                            = 0xc00\n\tMTD_CAP_NVRAM                               = 0x1c00\n\tMTD_CAP_RAM                                 = 0x1c00\n\tMTD_CAP_ROM                                 = 0x0\n\tMTD_DATAFLASH                               = 0x6\n\tMTD_INODE_FS_MAGIC                          = 0x11307854\n\tMTD_MAX_ECCPOS_ENTRIES                      = 0x40\n\tMTD_MAX_OOBFREE_ENTRIES                     = 0x8\n\tMTD_MLCNANDFLASH                            = 0x8\n\tMTD_NANDECC_AUTOPLACE                       = 0x2\n\tMTD_NANDECC_AUTOPL_USR                      = 0x4\n\tMTD_NANDECC_OFF                             = 0x0\n\tMTD_NANDECC_PLACE                           = 0x1\n\tMTD_NANDECC_PLACEONLY                       = 0x3\n\tMTD_NANDFLASH                               = 0x4\n\tMTD_NORFLASH                                = 0x3\n\tMTD_NO_ERASE                                = 0x1000\n\tMTD_OTP_FACTORY                             = 0x1\n\tMTD_OTP_OFF                                 = 0x0\n\tMTD_OTP_USER                                = 0x2\n\tMTD_POWERUP_LOCK                            = 0x2000\n\tMTD_RAM                                     = 0x1\n\tMTD_ROM                                     = 0x2\n\tMTD_SLC_ON_MLC_EMULATION                    = 0x4000\n\tMTD_UBIVOLUME                               = 0x7\n\tMTD_WRITEABLE                               = 0x400\n\tNAME_MAX                                    = 0xff\n\tNCP_SUPER_MAGIC                             = 0x564c\n\tNETLINK_ADD_MEMBERSHIP                      = 0x1\n\tNETLINK_AUDIT                               = 0x9\n\tNETLINK_BROADCAST_ERROR                     = 0x4\n\tNETLINK_CAP_ACK                             = 0xa\n\tNETLINK_CONNECTOR                           = 0xb\n\tNETLINK_CRYPTO                              = 0x15\n\tNETLINK_DNRTMSG                             = 0xe\n\tNETLINK_DROP_MEMBERSHIP                     = 0x2\n\tNETLINK_ECRYPTFS                            = 0x13\n\tNETLINK_EXT_ACK                             = 0xb\n\tNETLINK_FIB_LOOKUP                          = 0xa\n\tNETLINK_FIREWALL                            = 0x3\n\tNETLINK_GENERIC                             = 0x10\n\tNETLINK_GET_STRICT_CHK                      = 0xc\n\tNETLINK_INET_DIAG                           = 0x4\n\tNETLINK_IP6_FW                              = 0xd\n\tNETLINK_ISCSI                               = 0x8\n\tNETLINK_KOBJECT_UEVENT                      = 0xf\n\tNETLINK_LISTEN_ALL_NSID                     = 0x8\n\tNETLINK_LIST_MEMBERSHIPS                    = 0x9\n\tNETLINK_NETFILTER                           = 0xc\n\tNETLINK_NFLOG                               = 0x5\n\tNETLINK_NO_ENOBUFS                          = 0x5\n\tNETLINK_PKTINFO                             = 0x3\n\tNETLINK_RDMA                                = 0x14\n\tNETLINK_ROUTE                               = 0x0\n\tNETLINK_RX_RING                             = 0x6\n\tNETLINK_SCSITRANSPORT                       = 0x12\n\tNETLINK_SELINUX                             = 0x7\n\tNETLINK_SMC                                 = 0x16\n\tNETLINK_SOCK_DIAG                           = 0x4\n\tNETLINK_TX_RING                             = 0x7\n\tNETLINK_UNUSED                              = 0x1\n\tNETLINK_USERSOCK                            = 0x2\n\tNETLINK_XFRM                                = 0x6\n\tNETNSA_MAX                                  = 0x5\n\tNETNSA_NSID_NOT_ASSIGNED                    = -0x1\n\tNFC_ATR_REQ_GB_MAXSIZE                      = 0x30\n\tNFC_ATR_REQ_MAXSIZE                         = 0x40\n\tNFC_ATR_RES_GB_MAXSIZE                      = 0x2f\n\tNFC_ATR_RES_MAXSIZE                         = 0x40\n\tNFC_ATS_MAXSIZE                             = 0x14\n\tNFC_COMM_ACTIVE                             = 0x0\n\tNFC_COMM_PASSIVE                            = 0x1\n\tNFC_DEVICE_NAME_MAXSIZE                     = 0x8\n\tNFC_DIRECTION_RX                            = 0x0\n\tNFC_DIRECTION_TX                            = 0x1\n\tNFC_FIRMWARE_NAME_MAXSIZE                   = 0x20\n\tNFC_GB_MAXSIZE                              = 0x30\n\tNFC_GENL_MCAST_EVENT_NAME                   = \"events\"\n\tNFC_GENL_NAME                               = \"nfc\"\n\tNFC_GENL_VERSION                            = 0x1\n\tNFC_HEADER_SIZE                             = 0x1\n\tNFC_ISO15693_UID_MAXSIZE                    = 0x8\n\tNFC_LLCP_MAX_SERVICE_NAME                   = 0x3f\n\tNFC_LLCP_MIUX                               = 0x1\n\tNFC_LLCP_REMOTE_LTO                         = 0x3\n\tNFC_LLCP_REMOTE_MIU                         = 0x2\n\tNFC_LLCP_REMOTE_RW                          = 0x4\n\tNFC_LLCP_RW                                 = 0x0\n\tNFC_NFCID1_MAXSIZE                          = 0xa\n\tNFC_NFCID2_MAXSIZE                          = 0x8\n\tNFC_NFCID3_MAXSIZE                          = 0xa\n\tNFC_PROTO_FELICA                            = 0x3\n\tNFC_PROTO_FELICA_MASK                       = 0x8\n\tNFC_PROTO_ISO14443                          = 0x4\n\tNFC_PROTO_ISO14443_B                        = 0x6\n\tNFC_PROTO_ISO14443_B_MASK                   = 0x40\n\tNFC_PROTO_ISO14443_MASK                     = 0x10\n\tNFC_PROTO_ISO15693                          = 0x7\n\tNFC_PROTO_ISO15693_MASK                     = 0x80\n\tNFC_PROTO_JEWEL                             = 0x1\n\tNFC_PROTO_JEWEL_MASK                        = 0x2\n\tNFC_PROTO_MAX                               = 0x8\n\tNFC_PROTO_MIFARE                            = 0x2\n\tNFC_PROTO_MIFARE_MASK                       = 0x4\n\tNFC_PROTO_NFC_DEP                           = 0x5\n\tNFC_PROTO_NFC_DEP_MASK                      = 0x20\n\tNFC_RAW_HEADER_SIZE                         = 0x2\n\tNFC_RF_INITIATOR                            = 0x0\n\tNFC_RF_NONE                                 = 0x2\n\tNFC_RF_TARGET                               = 0x1\n\tNFC_SENSB_RES_MAXSIZE                       = 0xc\n\tNFC_SENSF_RES_MAXSIZE                       = 0x12\n\tNFC_SE_DISABLED                             = 0x0\n\tNFC_SE_EMBEDDED                             = 0x2\n\tNFC_SE_ENABLED                              = 0x1\n\tNFC_SE_UICC                                 = 0x1\n\tNFC_SOCKPROTO_LLCP                          = 0x1\n\tNFC_SOCKPROTO_MAX                           = 0x2\n\tNFC_SOCKPROTO_RAW                           = 0x0\n\tNFNETLINK_V0                                = 0x0\n\tNFNLGRP_ACCT_QUOTA                          = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY                   = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY               = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW                   = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE                = 0x5\n\tNFNLGRP_CONNTRACK_NEW                       = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE                    = 0x2\n\tNFNLGRP_MAX                                 = 0x9\n\tNFNLGRP_NFTABLES                            = 0x7\n\tNFNLGRP_NFTRACE                             = 0x9\n\tNFNLGRP_NONE                                = 0x0\n\tNFNL_BATCH_MAX                              = 0x1\n\tNFNL_MSG_BATCH_BEGIN                        = 0x10\n\tNFNL_MSG_BATCH_END                          = 0x11\n\tNFNL_NFA_NEST                               = 0x8000\n\tNFNL_SUBSYS_ACCT                            = 0x7\n\tNFNL_SUBSYS_COUNT                           = 0xd\n\tNFNL_SUBSYS_CTHELPER                        = 0x9\n\tNFNL_SUBSYS_CTNETLINK                       = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP                   = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT               = 0x8\n\tNFNL_SUBSYS_HOOK                            = 0xc\n\tNFNL_SUBSYS_IPSET                           = 0x6\n\tNFNL_SUBSYS_NFTABLES                        = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT                      = 0xb\n\tNFNL_SUBSYS_NONE                            = 0x0\n\tNFNL_SUBSYS_OSF                             = 0x5\n\tNFNL_SUBSYS_QUEUE                           = 0x3\n\tNFNL_SUBSYS_ULOG                            = 0x4\n\tNFS_SUPER_MAGIC                             = 0x6969\n\tNFT_BITWISE_BOOL                            = 0x0\n\tNFT_CHAIN_FLAGS                             = 0x7\n\tNFT_CHAIN_MAXNAMELEN                        = 0x100\n\tNFT_CT_MAX                                  = 0x17\n\tNFT_DATA_RESERVED_MASK                      = 0xffffff00\n\tNFT_DATA_VALUE_MAXLEN                       = 0x40\n\tNFT_EXTHDR_OP_MAX                           = 0x4\n\tNFT_FIB_RESULT_MAX                          = 0x3\n\tNFT_INNER_MASK                              = 0xf\n\tNFT_LOGLEVEL_MAX                            = 0x8\n\tNFT_NAME_MAXLEN                             = 0x100\n\tNFT_NG_MAX                                  = 0x1\n\tNFT_OBJECT_CONNLIMIT                        = 0x5\n\tNFT_OBJECT_COUNTER                          = 0x1\n\tNFT_OBJECT_CT_EXPECT                        = 0x9\n\tNFT_OBJECT_CT_HELPER                        = 0x3\n\tNFT_OBJECT_CT_TIMEOUT                       = 0x7\n\tNFT_OBJECT_LIMIT                            = 0x4\n\tNFT_OBJECT_MAX                              = 0xa\n\tNFT_OBJECT_QUOTA                            = 0x2\n\tNFT_OBJECT_SECMARK                          = 0x8\n\tNFT_OBJECT_SYNPROXY                         = 0xa\n\tNFT_OBJECT_TUNNEL                           = 0x6\n\tNFT_OBJECT_UNSPEC                           = 0x0\n\tNFT_OBJ_MAXNAMELEN                          = 0x100\n\tNFT_OSF_MAXGENRELEN                         = 0x10\n\tNFT_QUEUE_FLAG_BYPASS                       = 0x1\n\tNFT_QUEUE_FLAG_CPU_FANOUT                   = 0x2\n\tNFT_QUEUE_FLAG_MASK                         = 0x3\n\tNFT_REG32_COUNT                             = 0x10\n\tNFT_REG32_SIZE                              = 0x4\n\tNFT_REG_MAX                                 = 0x4\n\tNFT_REG_SIZE                                = 0x10\n\tNFT_REJECT_ICMPX_MAX                        = 0x3\n\tNFT_RT_MAX                                  = 0x4\n\tNFT_SECMARK_CTX_MAXLEN                      = 0x1000\n\tNFT_SET_MAXNAMELEN                          = 0x100\n\tNFT_SOCKET_MAX                              = 0x3\n\tNFT_TABLE_F_MASK                            = 0x7\n\tNFT_TABLE_MAXNAMELEN                        = 0x100\n\tNFT_TRACETYPE_MAX                           = 0x3\n\tNFT_TUNNEL_F_MASK                           = 0x7\n\tNFT_TUNNEL_MAX                              = 0x1\n\tNFT_TUNNEL_MODE_MAX                         = 0x2\n\tNFT_USERDATA_MAXLEN                         = 0x100\n\tNFT_XFRM_KEY_MAX                            = 0x6\n\tNF_NAT_RANGE_MAP_IPS                        = 0x1\n\tNF_NAT_RANGE_MASK                           = 0x7f\n\tNF_NAT_RANGE_NETMAP                         = 0x40\n\tNF_NAT_RANGE_PERSISTENT                     = 0x8\n\tNF_NAT_RANGE_PROTO_OFFSET                   = 0x20\n\tNF_NAT_RANGE_PROTO_RANDOM                   = 0x4\n\tNF_NAT_RANGE_PROTO_RANDOM_ALL               = 0x14\n\tNF_NAT_RANGE_PROTO_RANDOM_FULLY             = 0x10\n\tNF_NAT_RANGE_PROTO_SPECIFIED                = 0x2\n\tNILFS_SUPER_MAGIC                           = 0x3434\n\tNL0                                         = 0x0\n\tNL1                                         = 0x100\n\tNLA_ALIGNTO                                 = 0x4\n\tNLA_F_NESTED                                = 0x8000\n\tNLA_F_NET_BYTEORDER                         = 0x4000\n\tNLA_HDRLEN                                  = 0x4\n\tNLMSG_ALIGNTO                               = 0x4\n\tNLMSG_DONE                                  = 0x3\n\tNLMSG_ERROR                                 = 0x2\n\tNLMSG_HDRLEN                                = 0x10\n\tNLMSG_MIN_TYPE                              = 0x10\n\tNLMSG_NOOP                                  = 0x1\n\tNLMSG_OVERRUN                               = 0x4\n\tNLM_F_ACK                                   = 0x4\n\tNLM_F_ACK_TLVS                              = 0x200\n\tNLM_F_APPEND                                = 0x800\n\tNLM_F_ATOMIC                                = 0x400\n\tNLM_F_BULK                                  = 0x200\n\tNLM_F_CAPPED                                = 0x100\n\tNLM_F_CREATE                                = 0x400\n\tNLM_F_DUMP                                  = 0x300\n\tNLM_F_DUMP_FILTERED                         = 0x20\n\tNLM_F_DUMP_INTR                             = 0x10\n\tNLM_F_ECHO                                  = 0x8\n\tNLM_F_EXCL                                  = 0x200\n\tNLM_F_MATCH                                 = 0x200\n\tNLM_F_MULTI                                 = 0x2\n\tNLM_F_NONREC                                = 0x100\n\tNLM_F_REPLACE                               = 0x100\n\tNLM_F_REQUEST                               = 0x1\n\tNLM_F_ROOT                                  = 0x100\n\tNN_386_IOPERM                               = \"LINUX\"\n\tNN_386_TLS                                  = \"LINUX\"\n\tNN_ARC_V2                                   = \"LINUX\"\n\tNN_ARM_FPMR                                 = \"LINUX\"\n\tNN_ARM_GCS                                  = \"LINUX\"\n\tNN_ARM_HW_BREAK                             = \"LINUX\"\n\tNN_ARM_HW_WATCH                             = \"LINUX\"\n\tNN_ARM_PACA_KEYS                            = \"LINUX\"\n\tNN_ARM_PACG_KEYS                            = \"LINUX\"\n\tNN_ARM_PAC_ENABLED_KEYS                     = \"LINUX\"\n\tNN_ARM_PAC_MASK                             = \"LINUX\"\n\tNN_ARM_POE                                  = \"LINUX\"\n\tNN_ARM_SSVE                                 = \"LINUX\"\n\tNN_ARM_SVE                                  = \"LINUX\"\n\tNN_ARM_SYSTEM_CALL                          = \"LINUX\"\n\tNN_ARM_TAGGED_ADDR_CTRL                     = \"LINUX\"\n\tNN_ARM_TLS                                  = \"LINUX\"\n\tNN_ARM_VFP                                  = \"LINUX\"\n\tNN_ARM_ZA                                   = \"LINUX\"\n\tNN_ARM_ZT                                   = \"LINUX\"\n\tNN_AUXV                                     = \"CORE\"\n\tNN_FILE                                     = \"CORE\"\n\tNN_GNU_PROPERTY_TYPE_0                      = \"GNU\"\n\tNN_LOONGARCH_CPUCFG                         = \"LINUX\"\n\tNN_LOONGARCH_CSR                            = \"LINUX\"\n\tNN_LOONGARCH_HW_BREAK                       = \"LINUX\"\n\tNN_LOONGARCH_HW_WATCH                       = \"LINUX\"\n\tNN_LOONGARCH_LASX                           = \"LINUX\"\n\tNN_LOONGARCH_LBT                            = \"LINUX\"\n\tNN_LOONGARCH_LSX                            = \"LINUX\"\n\tNN_MIPS_DSP                                 = \"LINUX\"\n\tNN_MIPS_FP_MODE                             = \"LINUX\"\n\tNN_MIPS_MSA                                 = \"LINUX\"\n\tNN_PPC_DEXCR                                = \"LINUX\"\n\tNN_PPC_DSCR                                 = \"LINUX\"\n\tNN_PPC_EBB                                  = \"LINUX\"\n\tNN_PPC_HASHKEYR                             = \"LINUX\"\n\tNN_PPC_PKEY                                 = \"LINUX\"\n\tNN_PPC_PMU                                  = \"LINUX\"\n\tNN_PPC_PPR                                  = \"LINUX\"\n\tNN_PPC_SPE                                  = \"LINUX\"\n\tNN_PPC_TAR                                  = \"LINUX\"\n\tNN_PPC_TM_CDSCR                             = \"LINUX\"\n\tNN_PPC_TM_CFPR                              = \"LINUX\"\n\tNN_PPC_TM_CGPR                              = \"LINUX\"\n\tNN_PPC_TM_CPPR                              = \"LINUX\"\n\tNN_PPC_TM_CTAR                              = \"LINUX\"\n\tNN_PPC_TM_CVMX                              = \"LINUX\"\n\tNN_PPC_TM_CVSX                              = \"LINUX\"\n\tNN_PPC_TM_SPR                               = \"LINUX\"\n\tNN_PPC_VMX                                  = \"LINUX\"\n\tNN_PPC_VSX                                  = \"LINUX\"\n\tNN_PRFPREG                                  = \"CORE\"\n\tNN_PRPSINFO                                 = \"CORE\"\n\tNN_PRSTATUS                                 = \"CORE\"\n\tNN_PRXFPREG                                 = \"LINUX\"\n\tNN_RISCV_CSR                                = \"LINUX\"\n\tNN_RISCV_TAGGED_ADDR_CTRL                   = \"LINUX\"\n\tNN_RISCV_VECTOR                             = \"LINUX\"\n\tNN_S390_CTRS                                = \"LINUX\"\n\tNN_S390_GS_BC                               = \"LINUX\"\n\tNN_S390_GS_CB                               = \"LINUX\"\n\tNN_S390_HIGH_GPRS                           = \"LINUX\"\n\tNN_S390_LAST_BREAK                          = \"LINUX\"\n\tNN_S390_PREFIX                              = \"LINUX\"\n\tNN_S390_PV_CPU_DATA                         = \"LINUX\"\n\tNN_S390_RI_CB                               = \"LINUX\"\n\tNN_S390_SYSTEM_CALL                         = \"LINUX\"\n\tNN_S390_TDB                                 = \"LINUX\"\n\tNN_S390_TIMER                               = \"LINUX\"\n\tNN_S390_TODCMP                              = \"LINUX\"\n\tNN_S390_TODPREG                             = \"LINUX\"\n\tNN_S390_VXRS_HIGH                           = \"LINUX\"\n\tNN_S390_VXRS_LOW                            = \"LINUX\"\n\tNN_SIGINFO                                  = \"CORE\"\n\tNN_TASKSTRUCT                               = \"CORE\"\n\tNN_VMCOREDD                                 = \"LINUX\"\n\tNN_X86_SHSTK                                = \"LINUX\"\n\tNN_X86_XSAVE_LAYOUT                         = \"LINUX\"\n\tNN_X86_XSTATE                               = \"LINUX\"\n\tNSFS_MAGIC                                  = 0x6e736673\n\tNT_386_IOPERM                               = 0x201\n\tNT_386_TLS                                  = 0x200\n\tNT_ARC_V2                                   = 0x600\n\tNT_ARM_FPMR                                 = 0x40e\n\tNT_ARM_GCS                                  = 0x410\n\tNT_ARM_HW_BREAK                             = 0x402\n\tNT_ARM_HW_WATCH                             = 0x403\n\tNT_ARM_PACA_KEYS                            = 0x407\n\tNT_ARM_PACG_KEYS                            = 0x408\n\tNT_ARM_PAC_ENABLED_KEYS                     = 0x40a\n\tNT_ARM_PAC_MASK                             = 0x406\n\tNT_ARM_POE                                  = 0x40f\n\tNT_ARM_SSVE                                 = 0x40b\n\tNT_ARM_SVE                                  = 0x405\n\tNT_ARM_SYSTEM_CALL                          = 0x404\n\tNT_ARM_TAGGED_ADDR_CTRL                     = 0x409\n\tNT_ARM_TLS                                  = 0x401\n\tNT_ARM_VFP                                  = 0x400\n\tNT_ARM_ZA                                   = 0x40c\n\tNT_ARM_ZT                                   = 0x40d\n\tNT_AUXV                                     = 0x6\n\tNT_FILE                                     = 0x46494c45\n\tNT_GNU_PROPERTY_TYPE_0                      = 0x5\n\tNT_LOONGARCH_CPUCFG                         = 0xa00\n\tNT_LOONGARCH_CSR                            = 0xa01\n\tNT_LOONGARCH_HW_BREAK                       = 0xa05\n\tNT_LOONGARCH_HW_WATCH                       = 0xa06\n\tNT_LOONGARCH_LASX                           = 0xa03\n\tNT_LOONGARCH_LBT                            = 0xa04\n\tNT_LOONGARCH_LSX                            = 0xa02\n\tNT_MIPS_DSP                                 = 0x800\n\tNT_MIPS_FP_MODE                             = 0x801\n\tNT_MIPS_MSA                                 = 0x802\n\tNT_PPC_DEXCR                                = 0x111\n\tNT_PPC_DSCR                                 = 0x105\n\tNT_PPC_EBB                                  = 0x106\n\tNT_PPC_HASHKEYR                             = 0x112\n\tNT_PPC_PKEY                                 = 0x110\n\tNT_PPC_PMU                                  = 0x107\n\tNT_PPC_PPR                                  = 0x104\n\tNT_PPC_SPE                                  = 0x101\n\tNT_PPC_TAR                                  = 0x103\n\tNT_PPC_TM_CDSCR                             = 0x10f\n\tNT_PPC_TM_CFPR                              = 0x109\n\tNT_PPC_TM_CGPR                              = 0x108\n\tNT_PPC_TM_CPPR                              = 0x10e\n\tNT_PPC_TM_CTAR                              = 0x10d\n\tNT_PPC_TM_CVMX                              = 0x10a\n\tNT_PPC_TM_CVSX                              = 0x10b\n\tNT_PPC_TM_SPR                               = 0x10c\n\tNT_PPC_VMX                                  = 0x100\n\tNT_PPC_VSX                                  = 0x102\n\tNT_PRFPREG                                  = 0x2\n\tNT_PRPSINFO                                 = 0x3\n\tNT_PRSTATUS                                 = 0x1\n\tNT_PRXFPREG                                 = 0x46e62b7f\n\tNT_RISCV_CSR                                = 0x900\n\tNT_RISCV_TAGGED_ADDR_CTRL                   = 0x902\n\tNT_RISCV_VECTOR                             = 0x901\n\tNT_S390_CTRS                                = 0x304\n\tNT_S390_GS_BC                               = 0x30c\n\tNT_S390_GS_CB                               = 0x30b\n\tNT_S390_HIGH_GPRS                           = 0x300\n\tNT_S390_LAST_BREAK                          = 0x306\n\tNT_S390_PREFIX                              = 0x305\n\tNT_S390_PV_CPU_DATA                         = 0x30e\n\tNT_S390_RI_CB                               = 0x30d\n\tNT_S390_SYSTEM_CALL                         = 0x307\n\tNT_S390_TDB                                 = 0x308\n\tNT_S390_TIMER                               = 0x301\n\tNT_S390_TODCMP                              = 0x302\n\tNT_S390_TODPREG                             = 0x303\n\tNT_S390_VXRS_HIGH                           = 0x30a\n\tNT_S390_VXRS_LOW                            = 0x309\n\tNT_SIGINFO                                  = 0x53494749\n\tNT_TASKSTRUCT                               = 0x4\n\tNT_VMCOREDD                                 = 0x700\n\tNT_X86_SHSTK                                = 0x204\n\tNT_X86_XSAVE_LAYOUT                         = 0x205\n\tNT_X86_XSTATE                               = 0x202\n\tOCFS2_SUPER_MAGIC                           = 0x7461636f\n\tOCRNL                                       = 0x8\n\tOFDEL                                       = 0x80\n\tOFILL                                       = 0x40\n\tONLRET                                      = 0x20\n\tONOCR                                       = 0x10\n\tOPENPROM_SUPER_MAGIC                        = 0x9fa1\n\tOPOST                                       = 0x1\n\tOVERLAYFS_SUPER_MAGIC                       = 0x794c7630\n\tO_ACCMODE                                   = 0x3\n\tO_RDONLY                                    = 0x0\n\tO_RDWR                                      = 0x2\n\tO_WRONLY                                    = 0x1\n\tPACKET_ADD_MEMBERSHIP                       = 0x1\n\tPACKET_AUXDATA                              = 0x8\n\tPACKET_BROADCAST                            = 0x1\n\tPACKET_COPY_THRESH                          = 0x7\n\tPACKET_DROP_MEMBERSHIP                      = 0x2\n\tPACKET_FANOUT                               = 0x12\n\tPACKET_FANOUT_CBPF                          = 0x6\n\tPACKET_FANOUT_CPU                           = 0x2\n\tPACKET_FANOUT_DATA                          = 0x16\n\tPACKET_FANOUT_EBPF                          = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG                   = 0x8000\n\tPACKET_FANOUT_FLAG_IGNORE_OUTGOING          = 0x4000\n\tPACKET_FANOUT_FLAG_ROLLOVER                 = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID                 = 0x2000\n\tPACKET_FANOUT_HASH                          = 0x0\n\tPACKET_FANOUT_LB                            = 0x1\n\tPACKET_FANOUT_QM                            = 0x5\n\tPACKET_FANOUT_RND                           = 0x4\n\tPACKET_FANOUT_ROLLOVER                      = 0x3\n\tPACKET_FASTROUTE                            = 0x6\n\tPACKET_HDRLEN                               = 0xb\n\tPACKET_HOST                                 = 0x0\n\tPACKET_IGNORE_OUTGOING                      = 0x17\n\tPACKET_KERNEL                               = 0x7\n\tPACKET_LOOPBACK                             = 0x5\n\tPACKET_LOSS                                 = 0xe\n\tPACKET_MR_ALLMULTI                          = 0x2\n\tPACKET_MR_MULTICAST                         = 0x0\n\tPACKET_MR_PROMISC                           = 0x1\n\tPACKET_MR_UNICAST                           = 0x3\n\tPACKET_MULTICAST                            = 0x2\n\tPACKET_ORIGDEV                              = 0x9\n\tPACKET_OTHERHOST                            = 0x3\n\tPACKET_OUTGOING                             = 0x4\n\tPACKET_QDISC_BYPASS                         = 0x14\n\tPACKET_RECV_OUTPUT                          = 0x3\n\tPACKET_RESERVE                              = 0xc\n\tPACKET_ROLLOVER_STATS                       = 0x15\n\tPACKET_RX_RING                              = 0x5\n\tPACKET_STATISTICS                           = 0x6\n\tPACKET_TIMESTAMP                            = 0x11\n\tPACKET_TX_HAS_OFF                           = 0x13\n\tPACKET_TX_RING                              = 0xd\n\tPACKET_TX_TIMESTAMP                         = 0x10\n\tPACKET_USER                                 = 0x6\n\tPACKET_VERSION                              = 0xa\n\tPACKET_VNET_HDR                             = 0xf\n\tPACKET_VNET_HDR_SZ                          = 0x18\n\tPARITY_CRC16_PR0                            = 0x2\n\tPARITY_CRC16_PR0_CCITT                      = 0x4\n\tPARITY_CRC16_PR1                            = 0x3\n\tPARITY_CRC16_PR1_CCITT                      = 0x5\n\tPARITY_CRC32_PR0_CCITT                      = 0x6\n\tPARITY_CRC32_PR1_CCITT                      = 0x7\n\tPARITY_DEFAULT                              = 0x0\n\tPARITY_NONE                                 = 0x1\n\tPARMRK                                      = 0x8\n\tPERF_ATTR_SIZE_VER0                         = 0x40\n\tPERF_ATTR_SIZE_VER1                         = 0x48\n\tPERF_ATTR_SIZE_VER2                         = 0x50\n\tPERF_ATTR_SIZE_VER3                         = 0x60\n\tPERF_ATTR_SIZE_VER4                         = 0x68\n\tPERF_ATTR_SIZE_VER5                         = 0x70\n\tPERF_ATTR_SIZE_VER6                         = 0x78\n\tPERF_ATTR_SIZE_VER7                         = 0x80\n\tPERF_ATTR_SIZE_VER8                         = 0x88\n\tPERF_AUX_FLAG_COLLISION                     = 0x8\n\tPERF_AUX_FLAG_CORESIGHT_FORMAT_CORESIGHT    = 0x0\n\tPERF_AUX_FLAG_CORESIGHT_FORMAT_RAW          = 0x100\n\tPERF_AUX_FLAG_OVERWRITE                     = 0x2\n\tPERF_AUX_FLAG_PARTIAL                       = 0x4\n\tPERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK          = 0xff00\n\tPERF_AUX_FLAG_TRUNCATED                     = 0x1\n\tPERF_BRANCH_ENTRY_INFO_BITS_MAX             = 0x21\n\tPERF_BR_ARM64_DEBUG_DATA                    = 0x7\n\tPERF_BR_ARM64_DEBUG_EXIT                    = 0x5\n\tPERF_BR_ARM64_DEBUG_HALT                    = 0x4\n\tPERF_BR_ARM64_DEBUG_INST                    = 0x6\n\tPERF_BR_ARM64_FIQ                           = 0x3\n\tPERF_FLAG_FD_CLOEXEC                        = 0x8\n\tPERF_FLAG_FD_NO_GROUP                       = 0x1\n\tPERF_FLAG_FD_OUTPUT                         = 0x2\n\tPERF_FLAG_PID_CGROUP                        = 0x4\n\tPERF_HW_EVENT_MASK                          = 0xffffffff\n\tPERF_MAX_CONTEXTS_PER_STACK                 = 0x8\n\tPERF_MAX_STACK_DEPTH                        = 0x7f\n\tPERF_MEM_BLK_ADDR                           = 0x4\n\tPERF_MEM_BLK_DATA                           = 0x2\n\tPERF_MEM_BLK_NA                             = 0x1\n\tPERF_MEM_BLK_SHIFT                          = 0x28\n\tPERF_MEM_HOPS_0                             = 0x1\n\tPERF_MEM_HOPS_1                             = 0x2\n\tPERF_MEM_HOPS_2                             = 0x3\n\tPERF_MEM_HOPS_3                             = 0x4\n\tPERF_MEM_HOPS_SHIFT                         = 0x2b\n\tPERF_MEM_LOCK_LOCKED                        = 0x2\n\tPERF_MEM_LOCK_NA                            = 0x1\n\tPERF_MEM_LOCK_SHIFT                         = 0x18\n\tPERF_MEM_LVLNUM_ANY_CACHE                   = 0xb\n\tPERF_MEM_LVLNUM_CXL                         = 0x9\n\tPERF_MEM_LVLNUM_IO                          = 0xa\n\tPERF_MEM_LVLNUM_L1                          = 0x1\n\tPERF_MEM_LVLNUM_L2                          = 0x2\n\tPERF_MEM_LVLNUM_L2_MHB                      = 0x5\n\tPERF_MEM_LVLNUM_L3                          = 0x3\n\tPERF_MEM_LVLNUM_L4                          = 0x4\n\tPERF_MEM_LVLNUM_LFB                         = 0xc\n\tPERF_MEM_LVLNUM_MSC                         = 0x6\n\tPERF_MEM_LVLNUM_NA                          = 0xf\n\tPERF_MEM_LVLNUM_PMEM                        = 0xe\n\tPERF_MEM_LVLNUM_RAM                         = 0xd\n\tPERF_MEM_LVLNUM_SHIFT                       = 0x21\n\tPERF_MEM_LVLNUM_UNC                         = 0x8\n\tPERF_MEM_LVL_HIT                            = 0x2\n\tPERF_MEM_LVL_IO                             = 0x1000\n\tPERF_MEM_LVL_L1                             = 0x8\n\tPERF_MEM_LVL_L2                             = 0x20\n\tPERF_MEM_LVL_L3                             = 0x40\n\tPERF_MEM_LVL_LFB                            = 0x10\n\tPERF_MEM_LVL_LOC_RAM                        = 0x80\n\tPERF_MEM_LVL_MISS                           = 0x4\n\tPERF_MEM_LVL_NA                             = 0x1\n\tPERF_MEM_LVL_REM_CCE1                       = 0x400\n\tPERF_MEM_LVL_REM_CCE2                       = 0x800\n\tPERF_MEM_LVL_REM_RAM1                       = 0x100\n\tPERF_MEM_LVL_REM_RAM2                       = 0x200\n\tPERF_MEM_LVL_SHIFT                          = 0x5\n\tPERF_MEM_LVL_UNC                            = 0x2000\n\tPERF_MEM_OP_EXEC                            = 0x10\n\tPERF_MEM_OP_LOAD                            = 0x2\n\tPERF_MEM_OP_NA                              = 0x1\n\tPERF_MEM_OP_PFETCH                          = 0x8\n\tPERF_MEM_OP_SHIFT                           = 0x0\n\tPERF_MEM_OP_STORE                           = 0x4\n\tPERF_MEM_REMOTE_REMOTE                      = 0x1\n\tPERF_MEM_REMOTE_SHIFT                       = 0x25\n\tPERF_MEM_SNOOPX_FWD                         = 0x1\n\tPERF_MEM_SNOOPX_PEER                        = 0x2\n\tPERF_MEM_SNOOPX_SHIFT                       = 0x26\n\tPERF_MEM_SNOOP_HIT                          = 0x4\n\tPERF_MEM_SNOOP_HITM                         = 0x10\n\tPERF_MEM_SNOOP_MISS                         = 0x8\n\tPERF_MEM_SNOOP_NA                           = 0x1\n\tPERF_MEM_SNOOP_NONE                         = 0x2\n\tPERF_MEM_SNOOP_SHIFT                        = 0x13\n\tPERF_MEM_TLB_HIT                            = 0x2\n\tPERF_MEM_TLB_L1                             = 0x8\n\tPERF_MEM_TLB_L2                             = 0x10\n\tPERF_MEM_TLB_MISS                           = 0x4\n\tPERF_MEM_TLB_NA                             = 0x1\n\tPERF_MEM_TLB_OS                             = 0x40\n\tPERF_MEM_TLB_SHIFT                          = 0x1a\n\tPERF_MEM_TLB_WK                             = 0x20\n\tPERF_PMU_TYPE_SHIFT                         = 0x20\n\tPERF_RECORD_KSYMBOL_FLAGS_UNREGISTER        = 0x1\n\tPERF_RECORD_MISC_COMM_EXEC                  = 0x2000\n\tPERF_RECORD_MISC_CPUMODE_MASK               = 0x7\n\tPERF_RECORD_MISC_CPUMODE_UNKNOWN            = 0x0\n\tPERF_RECORD_MISC_EXACT_IP                   = 0x4000\n\tPERF_RECORD_MISC_EXT_RESERVED               = 0x8000\n\tPERF_RECORD_MISC_FORK_EXEC                  = 0x2000\n\tPERF_RECORD_MISC_GUEST_KERNEL               = 0x4\n\tPERF_RECORD_MISC_GUEST_USER                 = 0x5\n\tPERF_RECORD_MISC_HYPERVISOR                 = 0x3\n\tPERF_RECORD_MISC_KERNEL                     = 0x1\n\tPERF_RECORD_MISC_MMAP_BUILD_ID              = 0x4000\n\tPERF_RECORD_MISC_MMAP_DATA                  = 0x2000\n\tPERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT     = 0x1000\n\tPERF_RECORD_MISC_SWITCH_OUT                 = 0x2000\n\tPERF_RECORD_MISC_SWITCH_OUT_PREEMPT         = 0x4000\n\tPERF_RECORD_MISC_USER                       = 0x2\n\tPERF_SAMPLE_BRANCH_PLM_ALL                  = 0x7\n\tPERF_SAMPLE_WEIGHT_TYPE                     = 0x1004000\n\tPF_ALG                                      = 0x26\n\tPF_APPLETALK                                = 0x5\n\tPF_ASH                                      = 0x12\n\tPF_ATMPVC                                   = 0x8\n\tPF_ATMSVC                                   = 0x14\n\tPF_AX25                                     = 0x3\n\tPF_BLUETOOTH                                = 0x1f\n\tPF_BRIDGE                                   = 0x7\n\tPF_CAIF                                     = 0x25\n\tPF_CAN                                      = 0x1d\n\tPF_DECnet                                   = 0xc\n\tPF_ECONET                                   = 0x13\n\tPF_FILE                                     = 0x1\n\tPF_IB                                       = 0x1b\n\tPF_IEEE802154                               = 0x24\n\tPF_INET                                     = 0x2\n\tPF_INET6                                    = 0xa\n\tPF_IPX                                      = 0x4\n\tPF_IRDA                                     = 0x17\n\tPF_ISDN                                     = 0x22\n\tPF_IUCV                                     = 0x20\n\tPF_KCM                                      = 0x29\n\tPF_KEY                                      = 0xf\n\tPF_LLC                                      = 0x1a\n\tPF_LOCAL                                    = 0x1\n\tPF_MAX                                      = 0x2e\n\tPF_MCTP                                     = 0x2d\n\tPF_MPLS                                     = 0x1c\n\tPF_NETBEUI                                  = 0xd\n\tPF_NETLINK                                  = 0x10\n\tPF_NETROM                                   = 0x6\n\tPF_NFC                                      = 0x27\n\tPF_PACKET                                   = 0x11\n\tPF_PHONET                                   = 0x23\n\tPF_PPPOX                                    = 0x18\n\tPF_QIPCRTR                                  = 0x2a\n\tPF_R                                        = 0x4\n\tPF_RDS                                      = 0x15\n\tPF_ROSE                                     = 0xb\n\tPF_ROUTE                                    = 0x10\n\tPF_RXRPC                                    = 0x21\n\tPF_SECURITY                                 = 0xe\n\tPF_SMC                                      = 0x2b\n\tPF_SNA                                      = 0x16\n\tPF_TIPC                                     = 0x1e\n\tPF_UNIX                                     = 0x1\n\tPF_UNSPEC                                   = 0x0\n\tPF_VSOCK                                    = 0x28\n\tPF_W                                        = 0x2\n\tPF_WANPIPE                                  = 0x19\n\tPF_X                                        = 0x1\n\tPF_X25                                      = 0x9\n\tPF_XDP                                      = 0x2c\n\tPID_FS_MAGIC                                = 0x50494446\n\tPIPEFS_MAGIC                                = 0x50495045\n\tPPPIOCGNPMODE                               = 0xc008744c\n\tPPPIOCNEWUNIT                               = 0xc004743e\n\tPRIO_PGRP                                   = 0x1\n\tPRIO_PROCESS                                = 0x0\n\tPRIO_USER                                   = 0x2\n\tPROCFS_IOCTL_MAGIC                          = 'f'\n\tPROC_SUPER_MAGIC                            = 0x9fa0\n\tPROT_EXEC                                   = 0x4\n\tPROT_GROWSDOWN                              = 0x1000000\n\tPROT_GROWSUP                                = 0x2000000\n\tPROT_NONE                                   = 0x0\n\tPROT_READ                                   = 0x1\n\tPROT_WRITE                                  = 0x2\n\tPR_CAPBSET_DROP                             = 0x18\n\tPR_CAPBSET_READ                             = 0x17\n\tPR_CAP_AMBIENT                              = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL                    = 0x4\n\tPR_CAP_AMBIENT_IS_SET                       = 0x1\n\tPR_CAP_AMBIENT_LOWER                        = 0x3\n\tPR_CAP_AMBIENT_RAISE                        = 0x2\n\tPR_ENDIAN_BIG                               = 0x0\n\tPR_ENDIAN_LITTLE                            = 0x1\n\tPR_ENDIAN_PPC_LITTLE                        = 0x2\n\tPR_FPEMU_NOPRINT                            = 0x1\n\tPR_FPEMU_SIGFPE                             = 0x2\n\tPR_FP_EXC_ASYNC                             = 0x2\n\tPR_FP_EXC_DISABLED                          = 0x0\n\tPR_FP_EXC_DIV                               = 0x10000\n\tPR_FP_EXC_INV                               = 0x100000\n\tPR_FP_EXC_NONRECOV                          = 0x1\n\tPR_FP_EXC_OVF                               = 0x20000\n\tPR_FP_EXC_PRECISE                           = 0x3\n\tPR_FP_EXC_RES                               = 0x80000\n\tPR_FP_EXC_SW_ENABLE                         = 0x80\n\tPR_FP_EXC_UND                               = 0x40000\n\tPR_FP_MODE_FR                               = 0x1\n\tPR_FP_MODE_FRE                              = 0x2\n\tPR_FUTEX_HASH                               = 0x4e\n\tPR_FUTEX_HASH_GET_IMMUTABLE                 = 0x3\n\tPR_FUTEX_HASH_GET_SLOTS                     = 0x2\n\tPR_FUTEX_HASH_SET_SLOTS                     = 0x1\n\tPR_GET_AUXV                                 = 0x41555856\n\tPR_GET_CHILD_SUBREAPER                      = 0x25\n\tPR_GET_DUMPABLE                             = 0x3\n\tPR_GET_ENDIAN                               = 0x13\n\tPR_GET_FPEMU                                = 0x9\n\tPR_GET_FPEXC                                = 0xb\n\tPR_GET_FP_MODE                              = 0x2e\n\tPR_GET_IO_FLUSHER                           = 0x3a\n\tPR_GET_KEEPCAPS                             = 0x7\n\tPR_GET_MDWE                                 = 0x42\n\tPR_GET_MEMORY_MERGE                         = 0x44\n\tPR_GET_NAME                                 = 0x10\n\tPR_GET_NO_NEW_PRIVS                         = 0x27\n\tPR_GET_PDEATHSIG                            = 0x2\n\tPR_GET_SECCOMP                              = 0x15\n\tPR_GET_SECUREBITS                           = 0x1b\n\tPR_GET_SHADOW_STACK_STATUS                  = 0x4a\n\tPR_GET_SPECULATION_CTRL                     = 0x34\n\tPR_GET_TAGGED_ADDR_CTRL                     = 0x38\n\tPR_GET_THP_DISABLE                          = 0x2a\n\tPR_GET_TID_ADDRESS                          = 0x28\n\tPR_GET_TIMERSLACK                           = 0x1e\n\tPR_GET_TIMING                               = 0xd\n\tPR_GET_TSC                                  = 0x19\n\tPR_GET_UNALIGN                              = 0x5\n\tPR_LOCK_SHADOW_STACK_STATUS                 = 0x4c\n\tPR_MCE_KILL                                 = 0x21\n\tPR_MCE_KILL_CLEAR                           = 0x0\n\tPR_MCE_KILL_DEFAULT                         = 0x2\n\tPR_MCE_KILL_EARLY                           = 0x1\n\tPR_MCE_KILL_GET                             = 0x22\n\tPR_MCE_KILL_LATE                            = 0x0\n\tPR_MCE_KILL_SET                             = 0x1\n\tPR_MDWE_NO_INHERIT                          = 0x2\n\tPR_MDWE_REFUSE_EXEC_GAIN                    = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT                   = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT                    = 0x2b\n\tPR_MTE_TAG_MASK                             = 0x7fff8\n\tPR_MTE_TAG_SHIFT                            = 0x3\n\tPR_MTE_TCF_ASYNC                            = 0x4\n\tPR_MTE_TCF_MASK                             = 0x6\n\tPR_MTE_TCF_NONE                             = 0x0\n\tPR_MTE_TCF_SHIFT                            = 0x1\n\tPR_MTE_TCF_SYNC                             = 0x2\n\tPR_PAC_APDAKEY                              = 0x4\n\tPR_PAC_APDBKEY                              = 0x8\n\tPR_PAC_APGAKEY                              = 0x10\n\tPR_PAC_APIAKEY                              = 0x1\n\tPR_PAC_APIBKEY                              = 0x2\n\tPR_PAC_GET_ENABLED_KEYS                     = 0x3d\n\tPR_PAC_RESET_KEYS                           = 0x36\n\tPR_PAC_SET_ENABLED_KEYS                     = 0x3c\n\tPR_PMLEN_MASK                               = 0x7f000000\n\tPR_PMLEN_SHIFT                              = 0x18\n\tPR_PPC_DEXCR_CTRL_CLEAR                     = 0x4\n\tPR_PPC_DEXCR_CTRL_CLEAR_ONEXEC              = 0x10\n\tPR_PPC_DEXCR_CTRL_EDITABLE                  = 0x1\n\tPR_PPC_DEXCR_CTRL_MASK                      = 0x1f\n\tPR_PPC_DEXCR_CTRL_SET                       = 0x2\n\tPR_PPC_DEXCR_CTRL_SET_ONEXEC                = 0x8\n\tPR_PPC_DEXCR_IBRTPD                         = 0x1\n\tPR_PPC_DEXCR_NPHIE                          = 0x3\n\tPR_PPC_DEXCR_SBHE                           = 0x0\n\tPR_PPC_DEXCR_SRAPD                          = 0x2\n\tPR_PPC_GET_DEXCR                            = 0x48\n\tPR_PPC_SET_DEXCR                            = 0x49\n\tPR_RISCV_CTX_SW_FENCEI_OFF                  = 0x1\n\tPR_RISCV_CTX_SW_FENCEI_ON                   = 0x0\n\tPR_RISCV_SCOPE_PER_PROCESS                  = 0x0\n\tPR_RISCV_SCOPE_PER_THREAD                   = 0x1\n\tPR_RISCV_SET_ICACHE_FLUSH_CTX               = 0x47\n\tPR_RISCV_V_GET_CONTROL                      = 0x46\n\tPR_RISCV_V_SET_CONTROL                      = 0x45\n\tPR_RISCV_V_VSTATE_CTRL_CUR_MASK             = 0x3\n\tPR_RISCV_V_VSTATE_CTRL_DEFAULT              = 0x0\n\tPR_RISCV_V_VSTATE_CTRL_INHERIT              = 0x10\n\tPR_RISCV_V_VSTATE_CTRL_MASK                 = 0x1f\n\tPR_RISCV_V_VSTATE_CTRL_NEXT_MASK            = 0xc\n\tPR_RISCV_V_VSTATE_CTRL_OFF                  = 0x1\n\tPR_RISCV_V_VSTATE_CTRL_ON                   = 0x2\n\tPR_SCHED_CORE                               = 0x3e\n\tPR_SCHED_CORE_CREATE                        = 0x1\n\tPR_SCHED_CORE_GET                           = 0x0\n\tPR_SCHED_CORE_MAX                           = 0x4\n\tPR_SCHED_CORE_SCOPE_PROCESS_GROUP           = 0x2\n\tPR_SCHED_CORE_SCOPE_THREAD                  = 0x0\n\tPR_SCHED_CORE_SCOPE_THREAD_GROUP            = 0x1\n\tPR_SCHED_CORE_SHARE_FROM                    = 0x3\n\tPR_SCHED_CORE_SHARE_TO                      = 0x2\n\tPR_SET_CHILD_SUBREAPER                      = 0x24\n\tPR_SET_DUMPABLE                             = 0x4\n\tPR_SET_ENDIAN                               = 0x14\n\tPR_SET_FPEMU                                = 0xa\n\tPR_SET_FPEXC                                = 0xc\n\tPR_SET_FP_MODE                              = 0x2d\n\tPR_SET_IO_FLUSHER                           = 0x39\n\tPR_SET_KEEPCAPS                             = 0x8\n\tPR_SET_MDWE                                 = 0x41\n\tPR_SET_MEMORY_MERGE                         = 0x43\n\tPR_SET_MM                                   = 0x23\n\tPR_SET_MM_ARG_END                           = 0x9\n\tPR_SET_MM_ARG_START                         = 0x8\n\tPR_SET_MM_AUXV                              = 0xc\n\tPR_SET_MM_BRK                               = 0x7\n\tPR_SET_MM_END_CODE                          = 0x2\n\tPR_SET_MM_END_DATA                          = 0x4\n\tPR_SET_MM_ENV_END                           = 0xb\n\tPR_SET_MM_ENV_START                         = 0xa\n\tPR_SET_MM_EXE_FILE                          = 0xd\n\tPR_SET_MM_MAP                               = 0xe\n\tPR_SET_MM_MAP_SIZE                          = 0xf\n\tPR_SET_MM_START_BRK                         = 0x6\n\tPR_SET_MM_START_CODE                        = 0x1\n\tPR_SET_MM_START_DATA                        = 0x3\n\tPR_SET_MM_START_STACK                       = 0x5\n\tPR_SET_NAME                                 = 0xf\n\tPR_SET_NO_NEW_PRIVS                         = 0x26\n\tPR_SET_PDEATHSIG                            = 0x1\n\tPR_SET_PTRACER                              = 0x59616d61\n\tPR_SET_SECCOMP                              = 0x16\n\tPR_SET_SECUREBITS                           = 0x1c\n\tPR_SET_SHADOW_STACK_STATUS                  = 0x4b\n\tPR_SET_SPECULATION_CTRL                     = 0x35\n\tPR_SET_SYSCALL_USER_DISPATCH                = 0x3b\n\tPR_SET_TAGGED_ADDR_CTRL                     = 0x37\n\tPR_SET_THP_DISABLE                          = 0x29\n\tPR_SET_TIMERSLACK                           = 0x1d\n\tPR_SET_TIMING                               = 0xe\n\tPR_SET_TSC                                  = 0x1a\n\tPR_SET_UNALIGN                              = 0x6\n\tPR_SET_VMA                                  = 0x53564d41\n\tPR_SET_VMA_ANON_NAME                        = 0x0\n\tPR_SHADOW_STACK_ENABLE                      = 0x1\n\tPR_SHADOW_STACK_PUSH                        = 0x4\n\tPR_SHADOW_STACK_WRITE                       = 0x2\n\tPR_SME_GET_VL                               = 0x40\n\tPR_SME_SET_VL                               = 0x3f\n\tPR_SME_SET_VL_ONEXEC                        = 0x40000\n\tPR_SME_VL_INHERIT                           = 0x20000\n\tPR_SME_VL_LEN_MASK                          = 0xffff\n\tPR_SPEC_DISABLE                             = 0x4\n\tPR_SPEC_DISABLE_NOEXEC                      = 0x10\n\tPR_SPEC_ENABLE                              = 0x2\n\tPR_SPEC_FORCE_DISABLE                       = 0x8\n\tPR_SPEC_INDIRECT_BRANCH                     = 0x1\n\tPR_SPEC_L1D_FLUSH                           = 0x2\n\tPR_SPEC_NOT_AFFECTED                        = 0x0\n\tPR_SPEC_PRCTL                               = 0x1\n\tPR_SPEC_STORE_BYPASS                        = 0x0\n\tPR_SVE_GET_VL                               = 0x33\n\tPR_SVE_SET_VL                               = 0x32\n\tPR_SVE_SET_VL_ONEXEC                        = 0x40000\n\tPR_SVE_VL_INHERIT                           = 0x20000\n\tPR_SVE_VL_LEN_MASK                          = 0xffff\n\tPR_SYS_DISPATCH_OFF                         = 0x0\n\tPR_SYS_DISPATCH_ON                          = 0x1\n\tPR_TAGGED_ADDR_ENABLE                       = 0x1\n\tPR_TASK_PERF_EVENTS_DISABLE                 = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE                  = 0x20\n\tPR_TIMER_CREATE_RESTORE_IDS                 = 0x4d\n\tPR_TIMER_CREATE_RESTORE_IDS_GET             = 0x2\n\tPR_TIMER_CREATE_RESTORE_IDS_OFF             = 0x0\n\tPR_TIMER_CREATE_RESTORE_IDS_ON              = 0x1\n\tPR_TIMING_STATISTICAL                       = 0x0\n\tPR_TIMING_TIMESTAMP                         = 0x1\n\tPR_TSC_ENABLE                               = 0x1\n\tPR_TSC_SIGSEGV                              = 0x2\n\tPR_UNALIGN_NOPRINT                          = 0x1\n\tPR_UNALIGN_SIGBUS                           = 0x2\n\tPSTOREFS_MAGIC                              = 0x6165676c\n\tPTP_CLK_MAGIC                               = '='\n\tPTP_ENABLE_FEATURE                          = 0x1\n\tPTP_EXTTS_EDGES                             = 0x6\n\tPTP_EXTTS_EVENT_VALID                       = 0x1\n\tPTP_EXTTS_V1_VALID_FLAGS                    = 0x7\n\tPTP_EXTTS_VALID_FLAGS                       = 0x1f\n\tPTP_EXT_OFFSET                              = 0x10\n\tPTP_FALLING_EDGE                            = 0x4\n\tPTP_MAX_SAMPLES                             = 0x19\n\tPTP_PEROUT_DUTY_CYCLE                       = 0x2\n\tPTP_PEROUT_ONE_SHOT                         = 0x1\n\tPTP_PEROUT_PHASE                            = 0x4\n\tPTP_PEROUT_V1_VALID_FLAGS                   = 0x0\n\tPTP_PEROUT_VALID_FLAGS                      = 0x7\n\tPTP_PIN_GETFUNC                             = 0xc0603d06\n\tPTP_PIN_GETFUNC2                            = 0xc0603d0f\n\tPTP_RISING_EDGE                             = 0x2\n\tPTP_STRICT_FLAGS                            = 0x8\n\tPTP_SYS_OFFSET_EXTENDED                     = 0xc4c03d09\n\tPTP_SYS_OFFSET_EXTENDED2                    = 0xc4c03d12\n\tPTP_SYS_OFFSET_PRECISE                      = 0xc0403d08\n\tPTP_SYS_OFFSET_PRECISE2                     = 0xc0403d11\n\tPTRACE_ATTACH                               = 0x10\n\tPTRACE_CONT                                 = 0x7\n\tPTRACE_DETACH                               = 0x11\n\tPTRACE_EVENTMSG_SYSCALL_ENTRY               = 0x1\n\tPTRACE_EVENTMSG_SYSCALL_EXIT                = 0x2\n\tPTRACE_EVENT_CLONE                          = 0x3\n\tPTRACE_EVENT_EXEC                           = 0x4\n\tPTRACE_EVENT_EXIT                           = 0x6\n\tPTRACE_EVENT_FORK                           = 0x1\n\tPTRACE_EVENT_SECCOMP                        = 0x7\n\tPTRACE_EVENT_STOP                           = 0x80\n\tPTRACE_EVENT_VFORK                          = 0x2\n\tPTRACE_EVENT_VFORK_DONE                     = 0x5\n\tPTRACE_GETEVENTMSG                          = 0x4201\n\tPTRACE_GETREGS                              = 0xc\n\tPTRACE_GETREGSET                            = 0x4204\n\tPTRACE_GETSIGINFO                           = 0x4202\n\tPTRACE_GETSIGMASK                           = 0x420a\n\tPTRACE_GET_RSEQ_CONFIGURATION               = 0x420f\n\tPTRACE_GET_SYSCALL_INFO                     = 0x420e\n\tPTRACE_GET_SYSCALL_USER_DISPATCH_CONFIG     = 0x4211\n\tPTRACE_INTERRUPT                            = 0x4207\n\tPTRACE_KILL                                 = 0x8\n\tPTRACE_LISTEN                               = 0x4208\n\tPTRACE_O_EXITKILL                           = 0x100000\n\tPTRACE_O_MASK                               = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP                    = 0x200000\n\tPTRACE_O_TRACECLONE                         = 0x8\n\tPTRACE_O_TRACEEXEC                          = 0x10\n\tPTRACE_O_TRACEEXIT                          = 0x40\n\tPTRACE_O_TRACEFORK                          = 0x2\n\tPTRACE_O_TRACESECCOMP                       = 0x80\n\tPTRACE_O_TRACESYSGOOD                       = 0x1\n\tPTRACE_O_TRACEVFORK                         = 0x4\n\tPTRACE_O_TRACEVFORKDONE                     = 0x20\n\tPTRACE_PEEKDATA                             = 0x2\n\tPTRACE_PEEKSIGINFO                          = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED                   = 0x1\n\tPTRACE_PEEKTEXT                             = 0x1\n\tPTRACE_PEEKUSR                              = 0x3\n\tPTRACE_POKEDATA                             = 0x5\n\tPTRACE_POKETEXT                             = 0x4\n\tPTRACE_POKEUSR                              = 0x6\n\tPTRACE_SECCOMP_GET_FILTER                   = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA                 = 0x420d\n\tPTRACE_SEIZE                                = 0x4206\n\tPTRACE_SETOPTIONS                           = 0x4200\n\tPTRACE_SETREGS                              = 0xd\n\tPTRACE_SETREGSET                            = 0x4205\n\tPTRACE_SETSIGINFO                           = 0x4203\n\tPTRACE_SETSIGMASK                           = 0x420b\n\tPTRACE_SET_SYSCALL_INFO                     = 0x4212\n\tPTRACE_SET_SYSCALL_USER_DISPATCH_CONFIG     = 0x4210\n\tPTRACE_SINGLESTEP                           = 0x9\n\tPTRACE_SYSCALL                              = 0x18\n\tPTRACE_SYSCALL_INFO_ENTRY                   = 0x1\n\tPTRACE_SYSCALL_INFO_EXIT                    = 0x2\n\tPTRACE_SYSCALL_INFO_NONE                    = 0x0\n\tPTRACE_SYSCALL_INFO_SECCOMP                 = 0x3\n\tPTRACE_TRACEME                              = 0x0\n\tPT_AARCH64_MEMTAG_MTE                       = 0x70000002\n\tPT_DYNAMIC                                  = 0x2\n\tPT_GNU_EH_FRAME                             = 0x6474e550\n\tPT_GNU_PROPERTY                             = 0x6474e553\n\tPT_GNU_RELRO                                = 0x6474e552\n\tPT_GNU_STACK                                = 0x6474e551\n\tPT_HIOS                                     = 0x6fffffff\n\tPT_HIPROC                                   = 0x7fffffff\n\tPT_INTERP                                   = 0x3\n\tPT_LOAD                                     = 0x1\n\tPT_LOOS                                     = 0x60000000\n\tPT_LOPROC                                   = 0x70000000\n\tPT_NOTE                                     = 0x4\n\tPT_NULL                                     = 0x0\n\tPT_PHDR                                     = 0x6\n\tPT_SHLIB                                    = 0x5\n\tPT_TLS                                      = 0x7\n\tP_ALL                                       = 0x0\n\tP_PGID                                      = 0x2\n\tP_PID                                       = 0x1\n\tP_PIDFD                                     = 0x3\n\tQNX4_SUPER_MAGIC                            = 0x2f\n\tQNX6_SUPER_MAGIC                            = 0x68191122\n\tRAMFS_MAGIC                                 = 0x858458f6\n\tRAW_PAYLOAD_DIGITAL                         = 0x3\n\tRAW_PAYLOAD_HCI                             = 0x2\n\tRAW_PAYLOAD_LLCP                            = 0x0\n\tRAW_PAYLOAD_NCI                             = 0x1\n\tRAW_PAYLOAD_PROPRIETARY                     = 0x4\n\tRDTGROUP_SUPER_MAGIC                        = 0x7655821\n\tREISERFS_SUPER_MAGIC                        = 0x52654973\n\tRENAME_EXCHANGE                             = 0x2\n\tRENAME_NOREPLACE                            = 0x1\n\tRENAME_WHITEOUT                             = 0x4\n\tRLIMIT_CORE                                 = 0x4\n\tRLIMIT_CPU                                  = 0x0\n\tRLIMIT_DATA                                 = 0x2\n\tRLIMIT_FSIZE                                = 0x1\n\tRLIMIT_LOCKS                                = 0xa\n\tRLIMIT_MSGQUEUE                             = 0xc\n\tRLIMIT_NICE                                 = 0xd\n\tRLIMIT_RTPRIO                               = 0xe\n\tRLIMIT_RTTIME                               = 0xf\n\tRLIMIT_SIGPENDING                           = 0xb\n\tRLIMIT_STACK                                = 0x3\n\tRLIM_INFINITY                               = 0xffffffffffffffff\n\tRTAX_ADVMSS                                 = 0x8\n\tRTAX_CC_ALGO                                = 0x10\n\tRTAX_CWND                                   = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE                     = 0x11\n\tRTAX_FEATURES                               = 0xc\n\tRTAX_FEATURE_ALLFRAG                        = 0x8\n\tRTAX_FEATURE_ECN                            = 0x1\n\tRTAX_FEATURE_MASK                           = 0x1f\n\tRTAX_FEATURE_SACK                           = 0x2\n\tRTAX_FEATURE_TCP_USEC_TS                    = 0x10\n\tRTAX_FEATURE_TIMESTAMP                      = 0x4\n\tRTAX_HOPLIMIT                               = 0xa\n\tRTAX_INITCWND                               = 0xb\n\tRTAX_INITRWND                               = 0xe\n\tRTAX_LOCK                                   = 0x1\n\tRTAX_MAX                                    = 0x11\n\tRTAX_MTU                                    = 0x2\n\tRTAX_QUICKACK                               = 0xf\n\tRTAX_REORDERING                             = 0x9\n\tRTAX_RTO_MIN                                = 0xd\n\tRTAX_RTT                                    = 0x4\n\tRTAX_RTTVAR                                 = 0x5\n\tRTAX_SSTHRESH                               = 0x6\n\tRTAX_UNSPEC                                 = 0x0\n\tRTAX_WINDOW                                 = 0x3\n\tRTA_ALIGNTO                                 = 0x4\n\tRTA_MAX                                     = 0x1f\n\tRTCF_DIRECTSRC                              = 0x4000000\n\tRTCF_DOREDIRECT                             = 0x1000000\n\tRTCF_LOG                                    = 0x2000000\n\tRTCF_MASQ                                   = 0x400000\n\tRTCF_NAT                                    = 0x800000\n\tRTCF_VALVE                                  = 0x200000\n\tRTC_AF                                      = 0x20\n\tRTC_BSM_DIRECT                              = 0x1\n\tRTC_BSM_DISABLED                            = 0x0\n\tRTC_BSM_LEVEL                               = 0x2\n\tRTC_BSM_STANDBY                             = 0x3\n\tRTC_FEATURE_ALARM                           = 0x0\n\tRTC_FEATURE_ALARM_RES_2S                    = 0x3\n\tRTC_FEATURE_ALARM_RES_MINUTE                = 0x1\n\tRTC_FEATURE_ALARM_WAKEUP_ONLY               = 0x7\n\tRTC_FEATURE_BACKUP_SWITCH_MODE              = 0x6\n\tRTC_FEATURE_CNT                             = 0x8\n\tRTC_FEATURE_CORRECTION                      = 0x5\n\tRTC_FEATURE_NEED_WEEK_DAY                   = 0x2\n\tRTC_FEATURE_UPDATE_INTERRUPT                = 0x4\n\tRTC_IRQF                                    = 0x80\n\tRTC_MAX_FREQ                                = 0x2000\n\tRTC_PARAM_BACKUP_SWITCH_MODE                = 0x2\n\tRTC_PARAM_CORRECTION                        = 0x1\n\tRTC_PARAM_FEATURES                          = 0x0\n\tRTC_PF                                      = 0x40\n\tRTC_UF                                      = 0x10\n\tRTF_ADDRCLASSMASK                           = 0xf8000000\n\tRTF_ADDRCONF                                = 0x40000\n\tRTF_ALLONLINK                               = 0x20000\n\tRTF_BROADCAST                               = 0x10000000\n\tRTF_CACHE                                   = 0x1000000\n\tRTF_DEFAULT                                 = 0x10000\n\tRTF_DYNAMIC                                 = 0x10\n\tRTF_FLOW                                    = 0x2000000\n\tRTF_GATEWAY                                 = 0x2\n\tRTF_HOST                                    = 0x4\n\tRTF_INTERFACE                               = 0x40000000\n\tRTF_IRTT                                    = 0x100\n\tRTF_LINKRT                                  = 0x100000\n\tRTF_LOCAL                                   = 0x80000000\n\tRTF_MODIFIED                                = 0x20\n\tRTF_MSS                                     = 0x40\n\tRTF_MTU                                     = 0x40\n\tRTF_MULTICAST                               = 0x20000000\n\tRTF_NAT                                     = 0x8000000\n\tRTF_NOFORWARD                               = 0x1000\n\tRTF_NONEXTHOP                               = 0x200000\n\tRTF_NOPMTUDISC                              = 0x4000\n\tRTF_POLICY                                  = 0x4000000\n\tRTF_REINSTATE                               = 0x8\n\tRTF_REJECT                                  = 0x200\n\tRTF_STATIC                                  = 0x400\n\tRTF_THROW                                   = 0x2000\n\tRTF_UP                                      = 0x1\n\tRTF_WINDOW                                  = 0x80\n\tRTF_XRESOLVE                                = 0x800\n\tRTMGRP_DECnet_IFADDR                        = 0x1000\n\tRTMGRP_DECnet_ROUTE                         = 0x4000\n\tRTMGRP_IPV4_IFADDR                          = 0x10\n\tRTMGRP_IPV4_MROUTE                          = 0x20\n\tRTMGRP_IPV4_ROUTE                           = 0x40\n\tRTMGRP_IPV4_RULE                            = 0x80\n\tRTMGRP_IPV6_IFADDR                          = 0x100\n\tRTMGRP_IPV6_IFINFO                          = 0x800\n\tRTMGRP_IPV6_MROUTE                          = 0x200\n\tRTMGRP_IPV6_PREFIX                          = 0x20000\n\tRTMGRP_IPV6_ROUTE                           = 0x400\n\tRTMGRP_LINK                                 = 0x1\n\tRTMGRP_NEIGH                                = 0x4\n\tRTMGRP_NOTIFY                               = 0x2\n\tRTMGRP_TC                                   = 0x8\n\tRTM_BASE                                    = 0x10\n\tRTM_DELACTION                               = 0x31\n\tRTM_DELADDR                                 = 0x15\n\tRTM_DELADDRLABEL                            = 0x49\n\tRTM_DELANYCAST                              = 0x3d\n\tRTM_DELCHAIN                                = 0x65\n\tRTM_DELLINK                                 = 0x11\n\tRTM_DELLINKPROP                             = 0x6d\n\tRTM_DELMDB                                  = 0x55\n\tRTM_DELMULTICAST                            = 0x39\n\tRTM_DELNEIGH                                = 0x1d\n\tRTM_DELNETCONF                              = 0x51\n\tRTM_DELNEXTHOP                              = 0x69\n\tRTM_DELNEXTHOPBUCKET                        = 0x75\n\tRTM_DELNSID                                 = 0x59\n\tRTM_DELQDISC                                = 0x25\n\tRTM_DELROUTE                                = 0x19\n\tRTM_DELRULE                                 = 0x21\n\tRTM_DELTCLASS                               = 0x29\n\tRTM_DELTFILTER                              = 0x2d\n\tRTM_DELTUNNEL                               = 0x79\n\tRTM_DELVLAN                                 = 0x71\n\tRTM_F_CLONED                                = 0x200\n\tRTM_F_EQUALIZE                              = 0x400\n\tRTM_F_FIB_MATCH                             = 0x2000\n\tRTM_F_LOOKUP_TABLE                          = 0x1000\n\tRTM_F_NOTIFY                                = 0x100\n\tRTM_F_OFFLOAD                               = 0x4000\n\tRTM_F_OFFLOAD_FAILED                        = 0x20000000\n\tRTM_F_PREFIX                                = 0x800\n\tRTM_F_TRAP                                  = 0x8000\n\tRTM_GETACTION                               = 0x32\n\tRTM_GETADDR                                 = 0x16\n\tRTM_GETADDRLABEL                            = 0x4a\n\tRTM_GETANYCAST                              = 0x3e\n\tRTM_GETCHAIN                                = 0x66\n\tRTM_GETDCB                                  = 0x4e\n\tRTM_GETLINK                                 = 0x12\n\tRTM_GETLINKPROP                             = 0x6e\n\tRTM_GETMDB                                  = 0x56\n\tRTM_GETMULTICAST                            = 0x3a\n\tRTM_GETNEIGH                                = 0x1e\n\tRTM_GETNEIGHTBL                             = 0x42\n\tRTM_GETNETCONF                              = 0x52\n\tRTM_GETNEXTHOP                              = 0x6a\n\tRTM_GETNEXTHOPBUCKET                        = 0x76\n\tRTM_GETNSID                                 = 0x5a\n\tRTM_GETQDISC                                = 0x26\n\tRTM_GETROUTE                                = 0x1a\n\tRTM_GETRULE                                 = 0x22\n\tRTM_GETSTATS                                = 0x5e\n\tRTM_GETTCLASS                               = 0x2a\n\tRTM_GETTFILTER                              = 0x2e\n\tRTM_GETTUNNEL                               = 0x7a\n\tRTM_GETVLAN                                 = 0x72\n\tRTM_MAX                                     = 0x7b\n\tRTM_NEWACTION                               = 0x30\n\tRTM_NEWADDR                                 = 0x14\n\tRTM_NEWADDRLABEL                            = 0x48\n\tRTM_NEWANYCAST                              = 0x3c\n\tRTM_NEWCACHEREPORT                          = 0x60\n\tRTM_NEWCHAIN                                = 0x64\n\tRTM_NEWLINK                                 = 0x10\n\tRTM_NEWLINKPROP                             = 0x6c\n\tRTM_NEWMDB                                  = 0x54\n\tRTM_NEWMULTICAST                            = 0x38\n\tRTM_NEWNDUSEROPT                            = 0x44\n\tRTM_NEWNEIGH                                = 0x1c\n\tRTM_NEWNEIGHTBL                             = 0x40\n\tRTM_NEWNETCONF                              = 0x50\n\tRTM_NEWNEXTHOP                              = 0x68\n\tRTM_NEWNEXTHOPBUCKET                        = 0x74\n\tRTM_NEWNSID                                 = 0x58\n\tRTM_NEWPREFIX                               = 0x34\n\tRTM_NEWQDISC                                = 0x24\n\tRTM_NEWROUTE                                = 0x18\n\tRTM_NEWRULE                                 = 0x20\n\tRTM_NEWSTATS                                = 0x5c\n\tRTM_NEWTCLASS                               = 0x28\n\tRTM_NEWTFILTER                              = 0x2c\n\tRTM_NEWTUNNEL                               = 0x78\n\tRTM_NEWVLAN                                 = 0x70\n\tRTM_NR_FAMILIES                             = 0x1b\n\tRTM_NR_MSGTYPES                             = 0x6c\n\tRTM_SETDCB                                  = 0x4f\n\tRTM_SETLINK                                 = 0x13\n\tRTM_SETNEIGHTBL                             = 0x43\n\tRTM_SETSTATS                                = 0x5f\n\tRTNH_ALIGNTO                                = 0x4\n\tRTNH_COMPARE_MASK                           = 0x59\n\tRTNH_F_DEAD                                 = 0x1\n\tRTNH_F_LINKDOWN                             = 0x10\n\tRTNH_F_OFFLOAD                              = 0x8\n\tRTNH_F_ONLINK                               = 0x4\n\tRTNH_F_PERVASIVE                            = 0x2\n\tRTNH_F_TRAP                                 = 0x40\n\tRTNH_F_UNRESOLVED                           = 0x20\n\tRTN_MAX                                     = 0xb\n\tRTPROT_BABEL                                = 0x2a\n\tRTPROT_BGP                                  = 0xba\n\tRTPROT_BIRD                                 = 0xc\n\tRTPROT_BOOT                                 = 0x3\n\tRTPROT_DHCP                                 = 0x10\n\tRTPROT_DNROUTED                             = 0xd\n\tRTPROT_EIGRP                                = 0xc0\n\tRTPROT_GATED                                = 0x8\n\tRTPROT_ISIS                                 = 0xbb\n\tRTPROT_KEEPALIVED                           = 0x12\n\tRTPROT_KERNEL                               = 0x2\n\tRTPROT_MROUTED                              = 0x11\n\tRTPROT_MRT                                  = 0xa\n\tRTPROT_NTK                                  = 0xf\n\tRTPROT_OPENR                                = 0x63\n\tRTPROT_OSPF                                 = 0xbc\n\tRTPROT_OVN                                  = 0x54\n\tRTPROT_RA                                   = 0x9\n\tRTPROT_REDIRECT                             = 0x1\n\tRTPROT_RIP                                  = 0xbd\n\tRTPROT_STATIC                               = 0x4\n\tRTPROT_UNSPEC                               = 0x0\n\tRTPROT_XORP                                 = 0xe\n\tRTPROT_ZEBRA                                = 0xb\n\tRT_CLASS_DEFAULT                            = 0xfd\n\tRT_CLASS_LOCAL                              = 0xff\n\tRT_CLASS_MAIN                               = 0xfe\n\tRT_CLASS_MAX                                = 0xff\n\tRT_CLASS_UNSPEC                             = 0x0\n\tRUSAGE_CHILDREN                             = -0x1\n\tRUSAGE_SELF                                 = 0x0\n\tRUSAGE_THREAD                               = 0x1\n\tRWF_APPEND                                  = 0x10\n\tRWF_ATOMIC                                  = 0x40\n\tRWF_DONTCACHE                               = 0x80\n\tRWF_DSYNC                                   = 0x2\n\tRWF_HIPRI                                   = 0x1\n\tRWF_NOAPPEND                                = 0x20\n\tRWF_NOWAIT                                  = 0x8\n\tRWF_SUPPORTED                               = 0xff\n\tRWF_SYNC                                    = 0x4\n\tRWF_WRITE_LIFE_NOT_SET                      = 0x0\n\tSCHED_BATCH                                 = 0x3\n\tSCHED_DEADLINE                              = 0x6\n\tSCHED_EXT                                   = 0x7\n\tSCHED_FIFO                                  = 0x1\n\tSCHED_FLAG_ALL                              = 0x7f\n\tSCHED_FLAG_DL_OVERRUN                       = 0x4\n\tSCHED_FLAG_KEEP_ALL                         = 0x18\n\tSCHED_FLAG_KEEP_PARAMS                      = 0x10\n\tSCHED_FLAG_KEEP_POLICY                      = 0x8\n\tSCHED_FLAG_RECLAIM                          = 0x2\n\tSCHED_FLAG_RESET_ON_FORK                    = 0x1\n\tSCHED_FLAG_UTIL_CLAMP                       = 0x60\n\tSCHED_FLAG_UTIL_CLAMP_MAX                   = 0x40\n\tSCHED_FLAG_UTIL_CLAMP_MIN                   = 0x20\n\tSCHED_IDLE                                  = 0x5\n\tSCHED_NORMAL                                = 0x0\n\tSCHED_RESET_ON_FORK                         = 0x40000000\n\tSCHED_RR                                    = 0x2\n\tSCM_CREDENTIALS                             = 0x2\n\tSCM_PIDFD                                   = 0x4\n\tSCM_RIGHTS                                  = 0x1\n\tSCM_SECURITY                                = 0x3\n\tSCM_TIMESTAMP                               = 0x1d\n\tSC_LOG_FLUSH                                = 0x100000\n\tSECCOMP_ADDFD_FLAG_SEND                     = 0x2\n\tSECCOMP_ADDFD_FLAG_SETFD                    = 0x1\n\tSECCOMP_FILTER_FLAG_LOG                     = 0x2\n\tSECCOMP_FILTER_FLAG_NEW_LISTENER            = 0x8\n\tSECCOMP_FILTER_FLAG_SPEC_ALLOW              = 0x4\n\tSECCOMP_FILTER_FLAG_TSYNC                   = 0x1\n\tSECCOMP_FILTER_FLAG_TSYNC_ESRCH             = 0x10\n\tSECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV      = 0x20\n\tSECCOMP_GET_ACTION_AVAIL                    = 0x2\n\tSECCOMP_GET_NOTIF_SIZES                     = 0x3\n\tSECCOMP_IOCTL_NOTIF_RECV                    = 0xc0502100\n\tSECCOMP_IOCTL_NOTIF_SEND                    = 0xc0182101\n\tSECCOMP_IOC_MAGIC                           = '!'\n\tSECCOMP_MODE_DISABLED                       = 0x0\n\tSECCOMP_MODE_FILTER                         = 0x2\n\tSECCOMP_MODE_STRICT                         = 0x1\n\tSECCOMP_RET_ACTION                          = 0x7fff0000\n\tSECCOMP_RET_ACTION_FULL                     = 0xffff0000\n\tSECCOMP_RET_ALLOW                           = 0x7fff0000\n\tSECCOMP_RET_DATA                            = 0xffff\n\tSECCOMP_RET_ERRNO                           = 0x50000\n\tSECCOMP_RET_KILL                            = 0x0\n\tSECCOMP_RET_KILL_PROCESS                    = 0x80000000\n\tSECCOMP_RET_KILL_THREAD                     = 0x0\n\tSECCOMP_RET_LOG                             = 0x7ffc0000\n\tSECCOMP_RET_TRACE                           = 0x7ff00000\n\tSECCOMP_RET_TRAP                            = 0x30000\n\tSECCOMP_RET_USER_NOTIF                      = 0x7fc00000\n\tSECCOMP_SET_MODE_FILTER                     = 0x1\n\tSECCOMP_SET_MODE_STRICT                     = 0x0\n\tSECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP          = 0x1\n\tSECCOMP_USER_NOTIF_FLAG_CONTINUE            = 0x1\n\tSECRETMEM_MAGIC                             = 0x5345434d\n\tSECURITYFS_MAGIC                            = 0x73636673\n\tSEEK_CUR                                    = 0x1\n\tSEEK_DATA                                   = 0x3\n\tSEEK_END                                    = 0x2\n\tSEEK_HOLE                                   = 0x4\n\tSEEK_MAX                                    = 0x4\n\tSEEK_SET                                    = 0x0\n\tSELINUX_MAGIC                               = 0xf97cff8c\n\tSHF_ALLOC                                   = 0x2\n\tSHF_EXCLUDE                                 = 0x8000000\n\tSHF_EXECINSTR                               = 0x4\n\tSHF_GROUP                                   = 0x200\n\tSHF_INFO_LINK                               = 0x40\n\tSHF_LINK_ORDER                              = 0x80\n\tSHF_MASKOS                                  = 0xff00000\n\tSHF_MASKPROC                                = 0xf0000000\n\tSHF_MERGE                                   = 0x10\n\tSHF_ORDERED                                 = 0x4000000\n\tSHF_OS_NONCONFORMING                        = 0x100\n\tSHF_RELA_LIVEPATCH                          = 0x100000\n\tSHF_RO_AFTER_INIT                           = 0x200000\n\tSHF_STRINGS                                 = 0x20\n\tSHF_TLS                                     = 0x400\n\tSHF_WRITE                                   = 0x1\n\tSHN_ABS                                     = 0xfff1\n\tSHN_COMMON                                  = 0xfff2\n\tSHN_HIPROC                                  = 0xff1f\n\tSHN_HIRESERVE                               = 0xffff\n\tSHN_LIVEPATCH                               = 0xff20\n\tSHN_LOPROC                                  = 0xff00\n\tSHN_LORESERVE                               = 0xff00\n\tSHN_UNDEF                                   = 0x0\n\tSHT_DYNAMIC                                 = 0x6\n\tSHT_DYNSYM                                  = 0xb\n\tSHT_HASH                                    = 0x5\n\tSHT_HIPROC                                  = 0x7fffffff\n\tSHT_HIUSER                                  = 0xffffffff\n\tSHT_LOPROC                                  = 0x70000000\n\tSHT_LOUSER                                  = 0x80000000\n\tSHT_NOBITS                                  = 0x8\n\tSHT_NOTE                                    = 0x7\n\tSHT_NULL                                    = 0x0\n\tSHT_NUM                                     = 0xc\n\tSHT_PROGBITS                                = 0x1\n\tSHT_REL                                     = 0x9\n\tSHT_RELA                                    = 0x4\n\tSHT_SHLIB                                   = 0xa\n\tSHT_STRTAB                                  = 0x3\n\tSHT_SYMTAB                                  = 0x2\n\tSHUT_RD                                     = 0x0\n\tSHUT_RDWR                                   = 0x2\n\tSHUT_WR                                     = 0x1\n\tSIOCADDDLCI                                 = 0x8980\n\tSIOCADDMULTI                                = 0x8931\n\tSIOCADDRT                                   = 0x890b\n\tSIOCBONDCHANGEACTIVE                        = 0x8995\n\tSIOCBONDENSLAVE                             = 0x8990\n\tSIOCBONDINFOQUERY                           = 0x8994\n\tSIOCBONDRELEASE                             = 0x8991\n\tSIOCBONDSETHWADDR                           = 0x8992\n\tSIOCBONDSLAVEINFOQUERY                      = 0x8993\n\tSIOCBRADDBR                                 = 0x89a0\n\tSIOCBRADDIF                                 = 0x89a2\n\tSIOCBRDELBR                                 = 0x89a1\n\tSIOCBRDELIF                                 = 0x89a3\n\tSIOCDARP                                    = 0x8953\n\tSIOCDELDLCI                                 = 0x8981\n\tSIOCDELMULTI                                = 0x8932\n\tSIOCDELRT                                   = 0x890c\n\tSIOCDEVPRIVATE                              = 0x89f0\n\tSIOCDIFADDR                                 = 0x8936\n\tSIOCDRARP                                   = 0x8960\n\tSIOCETHTOOL                                 = 0x8946\n\tSIOCGARP                                    = 0x8954\n\tSIOCGETLINKNAME                             = 0x89e0\n\tSIOCGETNODEID                               = 0x89e1\n\tSIOCGHWTSTAMP                               = 0x89b1\n\tSIOCGIFADDR                                 = 0x8915\n\tSIOCGIFBR                                   = 0x8940\n\tSIOCGIFBRDADDR                              = 0x8919\n\tSIOCGIFCONF                                 = 0x8912\n\tSIOCGIFCOUNT                                = 0x8938\n\tSIOCGIFDSTADDR                              = 0x8917\n\tSIOCGIFENCAP                                = 0x8925\n\tSIOCGIFFLAGS                                = 0x8913\n\tSIOCGIFHWADDR                               = 0x8927\n\tSIOCGIFINDEX                                = 0x8933\n\tSIOCGIFMAP                                  = 0x8970\n\tSIOCGIFMEM                                  = 0x891f\n\tSIOCGIFMETRIC                               = 0x891d\n\tSIOCGIFMTU                                  = 0x8921\n\tSIOCGIFNAME                                 = 0x8910\n\tSIOCGIFNETMASK                              = 0x891b\n\tSIOCGIFPFLAGS                               = 0x8935\n\tSIOCGIFSLAVE                                = 0x8929\n\tSIOCGIFTXQLEN                               = 0x8942\n\tSIOCGIFVLAN                                 = 0x8982\n\tSIOCGMIIPHY                                 = 0x8947\n\tSIOCGMIIREG                                 = 0x8948\n\tSIOCGPPPCSTATS                              = 0x89f2\n\tSIOCGPPPSTATS                               = 0x89f0\n\tSIOCGPPPVER                                 = 0x89f1\n\tSIOCGRARP                                   = 0x8961\n\tSIOCGSKNS                                   = 0x894c\n\tSIOCGSTAMP                                  = 0x8906\n\tSIOCGSTAMPNS                                = 0x8907\n\tSIOCGSTAMPNS_OLD                            = 0x8907\n\tSIOCGSTAMP_OLD                              = 0x8906\n\tSIOCKCMATTACH                               = 0x89e0\n\tSIOCKCMCLONE                                = 0x89e2\n\tSIOCKCMUNATTACH                             = 0x89e1\n\tSIOCOUTQNSD                                 = 0x894b\n\tSIOCPROTOPRIVATE                            = 0x89e0\n\tSIOCRTMSG                                   = 0x890d\n\tSIOCSARP                                    = 0x8955\n\tSIOCSHWTSTAMP                               = 0x89b0\n\tSIOCSIFADDR                                 = 0x8916\n\tSIOCSIFBR                                   = 0x8941\n\tSIOCSIFBRDADDR                              = 0x891a\n\tSIOCSIFDSTADDR                              = 0x8918\n\tSIOCSIFENCAP                                = 0x8926\n\tSIOCSIFFLAGS                                = 0x8914\n\tSIOCSIFHWADDR                               = 0x8924\n\tSIOCSIFHWBROADCAST                          = 0x8937\n\tSIOCSIFLINK                                 = 0x8911\n\tSIOCSIFMAP                                  = 0x8971\n\tSIOCSIFMEM                                  = 0x8920\n\tSIOCSIFMETRIC                               = 0x891e\n\tSIOCSIFMTU                                  = 0x8922\n\tSIOCSIFNAME                                 = 0x8923\n\tSIOCSIFNETMASK                              = 0x891c\n\tSIOCSIFPFLAGS                               = 0x8934\n\tSIOCSIFSLAVE                                = 0x8930\n\tSIOCSIFTXQLEN                               = 0x8943\n\tSIOCSIFVLAN                                 = 0x8983\n\tSIOCSMIIREG                                 = 0x8949\n\tSIOCSRARP                                   = 0x8962\n\tSIOCWANDEV                                  = 0x894a\n\tSK_DIAG_BPF_STORAGE_MAX                     = 0x3\n\tSK_DIAG_BPF_STORAGE_REQ_MAX                 = 0x1\n\tSMACK_MAGIC                                 = 0x43415d53\n\tSMART_AUTOSAVE                              = 0xd2\n\tSMART_AUTO_OFFLINE                          = 0xdb\n\tSMART_DISABLE                               = 0xd9\n\tSMART_ENABLE                                = 0xd8\n\tSMART_HCYL_PASS                             = 0xc2\n\tSMART_IMMEDIATE_OFFLINE                     = 0xd4\n\tSMART_LCYL_PASS                             = 0x4f\n\tSMART_READ_LOG_SECTOR                       = 0xd5\n\tSMART_READ_THRESHOLDS                       = 0xd1\n\tSMART_READ_VALUES                           = 0xd0\n\tSMART_SAVE                                  = 0xd3\n\tSMART_STATUS                                = 0xda\n\tSMART_WRITE_LOG_SECTOR                      = 0xd6\n\tSMART_WRITE_THRESHOLDS                      = 0xd7\n\tSMB2_SUPER_MAGIC                            = 0xfe534d42\n\tSMB_SUPER_MAGIC                             = 0x517b\n\tSOCKFS_MAGIC                                = 0x534f434b\n\tSOCK_BUF_LOCK_MASK                          = 0x3\n\tSOCK_DCCP                                   = 0x6\n\tSOCK_DESTROY                                = 0x15\n\tSOCK_DIAG_BY_FAMILY                         = 0x14\n\tSOCK_IOC_TYPE                               = 0x89\n\tSOCK_PACKET                                 = 0xa\n\tSOCK_RAW                                    = 0x3\n\tSOCK_RCVBUF_LOCK                            = 0x2\n\tSOCK_RDM                                    = 0x4\n\tSOCK_SEQPACKET                              = 0x5\n\tSOCK_SNDBUF_LOCK                            = 0x1\n\tSOCK_TXREHASH_DEFAULT                       = 0xff\n\tSOCK_TXREHASH_DISABLED                      = 0x0\n\tSOCK_TXREHASH_ENABLED                       = 0x1\n\tSOL_AAL                                     = 0x109\n\tSOL_ALG                                     = 0x117\n\tSOL_ATM                                     = 0x108\n\tSOL_CAIF                                    = 0x116\n\tSOL_CAN_BASE                                = 0x64\n\tSOL_CAN_RAW                                 = 0x65\n\tSOL_DCCP                                    = 0x10d\n\tSOL_DECNET                                  = 0x105\n\tSOL_ICMPV6                                  = 0x3a\n\tSOL_IP                                      = 0x0\n\tSOL_IPV6                                    = 0x29\n\tSOL_IRDA                                    = 0x10a\n\tSOL_IUCV                                    = 0x115\n\tSOL_KCM                                     = 0x119\n\tSOL_LLC                                     = 0x10c\n\tSOL_MCTP                                    = 0x11d\n\tSOL_MPTCP                                   = 0x11c\n\tSOL_NETBEUI                                 = 0x10b\n\tSOL_NETLINK                                 = 0x10e\n\tSOL_NFC                                     = 0x118\n\tSOL_PACKET                                  = 0x107\n\tSOL_PNPIPE                                  = 0x113\n\tSOL_PPPOL2TP                                = 0x111\n\tSOL_RAW                                     = 0xff\n\tSOL_RDS                                     = 0x114\n\tSOL_RXRPC                                   = 0x110\n\tSOL_SMC                                     = 0x11e\n\tSOL_TCP                                     = 0x6\n\tSOL_TIPC                                    = 0x10f\n\tSOL_TLS                                     = 0x11a\n\tSOL_UDP                                     = 0x11\n\tSOL_VSOCK                                   = 0x11f\n\tSOL_X25                                     = 0x106\n\tSOL_XDP                                     = 0x11b\n\tSOMAXCONN                                   = 0x1000\n\tSO_ATTACH_FILTER                            = 0x1a\n\tSO_DEBUG                                    = 0x1\n\tSO_DETACH_BPF                               = 0x1b\n\tSO_DETACH_FILTER                            = 0x1b\n\tSO_EE_CODE_TXTIME_INVALID_PARAM             = 0x1\n\tSO_EE_CODE_TXTIME_MISSED                    = 0x2\n\tSO_EE_CODE_ZEROCOPY_COPIED                  = 0x1\n\tSO_EE_ORIGIN_ICMP                           = 0x2\n\tSO_EE_ORIGIN_ICMP6                          = 0x3\n\tSO_EE_ORIGIN_LOCAL                          = 0x1\n\tSO_EE_ORIGIN_NONE                           = 0x0\n\tSO_EE_ORIGIN_TIMESTAMPING                   = 0x4\n\tSO_EE_ORIGIN_TXSTATUS                       = 0x4\n\tSO_EE_ORIGIN_TXTIME                         = 0x6\n\tSO_EE_ORIGIN_ZEROCOPY                       = 0x5\n\tSO_EE_RFC4884_FLAG_INVALID                  = 0x1\n\tSO_GET_FILTER                               = 0x1a\n\tSO_NO_CHECK                                 = 0xb\n\tSO_PEERNAME                                 = 0x1c\n\tSO_PRIORITY                                 = 0xc\n\tSO_TIMESTAMP                                = 0x1d\n\tSO_TIMESTAMP_OLD                            = 0x1d\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE               = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE               = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE                   = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT               = 0x6\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT_NEW           = 0x8\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT_OLD           = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX                 = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID               = 0x3\n\tSO_VM_SOCKETS_TRUSTED                       = 0x5\n\tSPLICE_F_GIFT                               = 0x8\n\tSPLICE_F_MORE                               = 0x4\n\tSPLICE_F_MOVE                               = 0x1\n\tSPLICE_F_NONBLOCK                           = 0x2\n\tSQUASHFS_MAGIC                              = 0x73717368\n\tSTACK_END_MAGIC                             = 0x57ac6e9d\n\tSTATX_ALL                                   = 0xfff\n\tSTATX_ATIME                                 = 0x20\n\tSTATX_ATTR_APPEND                           = 0x20\n\tSTATX_ATTR_AUTOMOUNT                        = 0x1000\n\tSTATX_ATTR_COMPRESSED                       = 0x4\n\tSTATX_ATTR_DAX                              = 0x200000\n\tSTATX_ATTR_ENCRYPTED                        = 0x800\n\tSTATX_ATTR_IMMUTABLE                        = 0x10\n\tSTATX_ATTR_MOUNT_ROOT                       = 0x2000\n\tSTATX_ATTR_NODUMP                           = 0x40\n\tSTATX_ATTR_VERITY                           = 0x100000\n\tSTATX_ATTR_WRITE_ATOMIC                     = 0x400000\n\tSTATX_BASIC_STATS                           = 0x7ff\n\tSTATX_BLOCKS                                = 0x400\n\tSTATX_BTIME                                 = 0x800\n\tSTATX_CTIME                                 = 0x80\n\tSTATX_DIOALIGN                              = 0x2000\n\tSTATX_DIO_READ_ALIGN                        = 0x20000\n\tSTATX_GID                                   = 0x10\n\tSTATX_INO                                   = 0x100\n\tSTATX_MNT_ID                                = 0x1000\n\tSTATX_MNT_ID_UNIQUE                         = 0x4000\n\tSTATX_MODE                                  = 0x2\n\tSTATX_MTIME                                 = 0x40\n\tSTATX_NLINK                                 = 0x4\n\tSTATX_SIZE                                  = 0x200\n\tSTATX_SUBVOL                                = 0x8000\n\tSTATX_TYPE                                  = 0x1\n\tSTATX_UID                                   = 0x8\n\tSTATX_WRITE_ATOMIC                          = 0x10000\n\tSTATX__RESERVED                             = 0x80000000\n\tSTB_GLOBAL                                  = 0x1\n\tSTB_LOCAL                                   = 0x0\n\tSTB_WEAK                                    = 0x2\n\tSTT_COMMON                                  = 0x5\n\tSTT_FILE                                    = 0x4\n\tSTT_FUNC                                    = 0x2\n\tSTT_NOTYPE                                  = 0x0\n\tSTT_OBJECT                                  = 0x1\n\tSTT_SECTION                                 = 0x3\n\tSTT_TLS                                     = 0x6\n\tSYNC_FILE_RANGE_WAIT_AFTER                  = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE                 = 0x1\n\tSYNC_FILE_RANGE_WRITE                       = 0x2\n\tSYNC_FILE_RANGE_WRITE_AND_WAIT              = 0x7\n\tSYSFS_MAGIC                                 = 0x62656572\n\tS_BLKSIZE                                   = 0x200\n\tS_IEXEC                                     = 0x40\n\tS_IFBLK                                     = 0x6000\n\tS_IFCHR                                     = 0x2000\n\tS_IFDIR                                     = 0x4000\n\tS_IFIFO                                     = 0x1000\n\tS_IFLNK                                     = 0xa000\n\tS_IFMT                                      = 0xf000\n\tS_IFREG                                     = 0x8000\n\tS_IFSOCK                                    = 0xc000\n\tS_IREAD                                     = 0x100\n\tS_IRGRP                                     = 0x20\n\tS_IROTH                                     = 0x4\n\tS_IRUSR                                     = 0x100\n\tS_IRWXG                                     = 0x38\n\tS_IRWXO                                     = 0x7\n\tS_IRWXU                                     = 0x1c0\n\tS_ISGID                                     = 0x400\n\tS_ISUID                                     = 0x800\n\tS_ISVTX                                     = 0x200\n\tS_IWGRP                                     = 0x10\n\tS_IWOTH                                     = 0x2\n\tS_IWRITE                                    = 0x80\n\tS_IWUSR                                     = 0x80\n\tS_IXGRP                                     = 0x8\n\tS_IXOTH                                     = 0x1\n\tS_IXUSR                                     = 0x40\n\tTAB0                                        = 0x0\n\tTASKSTATS_CMD_ATTR_MAX                      = 0x4\n\tTASKSTATS_CMD_MAX                           = 0x2\n\tTASKSTATS_GENL_NAME                         = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION                      = 0x1\n\tTASKSTATS_TYPE_MAX                          = 0x6\n\tTASKSTATS_VERSION                           = 0x10\n\tTCIFLUSH                                    = 0x0\n\tTCIOFF                                      = 0x2\n\tTCIOFLUSH                                   = 0x2\n\tTCION                                       = 0x3\n\tTCOFLUSH                                    = 0x1\n\tTCOOFF                                      = 0x0\n\tTCOON                                       = 0x1\n\tTCPOPT_EOL                                  = 0x0\n\tTCPOPT_MAXSEG                               = 0x2\n\tTCPOPT_NOP                                  = 0x1\n\tTCPOPT_SACK                                 = 0x5\n\tTCPOPT_SACK_PERMITTED                       = 0x4\n\tTCPOPT_TIMESTAMP                            = 0x8\n\tTCPOPT_TSTAMP_HDR                           = 0x101080a\n\tTCPOPT_WINDOW                               = 0x3\n\tTCP_CC_INFO                                 = 0x1a\n\tTCP_CM_INQ                                  = 0x24\n\tTCP_CONGESTION                              = 0xd\n\tTCP_COOKIE_IN_ALWAYS                        = 0x1\n\tTCP_COOKIE_MAX                              = 0x10\n\tTCP_COOKIE_MIN                              = 0x8\n\tTCP_COOKIE_OUT_NEVER                        = 0x2\n\tTCP_COOKIE_PAIR_SIZE                        = 0x20\n\tTCP_COOKIE_TRANSACTIONS                     = 0xf\n\tTCP_CORK                                    = 0x3\n\tTCP_DEFER_ACCEPT                            = 0x9\n\tTCP_FASTOPEN                                = 0x17\n\tTCP_FASTOPEN_CONNECT                        = 0x1e\n\tTCP_FASTOPEN_KEY                            = 0x21\n\tTCP_FASTOPEN_NO_COOKIE                      = 0x22\n\tTCP_INFO                                    = 0xb\n\tTCP_INQ                                     = 0x24\n\tTCP_KEEPCNT                                 = 0x6\n\tTCP_KEEPIDLE                                = 0x4\n\tTCP_KEEPINTVL                               = 0x5\n\tTCP_LINGER2                                 = 0x8\n\tTCP_MAXSEG                                  = 0x2\n\tTCP_MAXWIN                                  = 0xffff\n\tTCP_MAX_WINSHIFT                            = 0xe\n\tTCP_MD5SIG                                  = 0xe\n\tTCP_MD5SIG_EXT                              = 0x20\n\tTCP_MD5SIG_FLAG_IFINDEX                     = 0x2\n\tTCP_MD5SIG_FLAG_PREFIX                      = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                        = 0x50\n\tTCP_MSS                                     = 0x200\n\tTCP_MSS_DEFAULT                             = 0x218\n\tTCP_MSS_DESIRED                             = 0x4c4\n\tTCP_NODELAY                                 = 0x1\n\tTCP_NOTSENT_LOWAT                           = 0x19\n\tTCP_QUEUE_SEQ                               = 0x15\n\tTCP_QUICKACK                                = 0xc\n\tTCP_REPAIR                                  = 0x13\n\tTCP_REPAIR_OFF                              = 0x0\n\tTCP_REPAIR_OFF_NO_WP                        = -0x1\n\tTCP_REPAIR_ON                               = 0x1\n\tTCP_REPAIR_OPTIONS                          = 0x16\n\tTCP_REPAIR_QUEUE                            = 0x14\n\tTCP_REPAIR_WINDOW                           = 0x1d\n\tTCP_SAVED_SYN                               = 0x1c\n\tTCP_SAVE_SYN                                = 0x1b\n\tTCP_SYNCNT                                  = 0x7\n\tTCP_S_DATA_IN                               = 0x4\n\tTCP_S_DATA_OUT                              = 0x8\n\tTCP_THIN_DUPACK                             = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS                    = 0x10\n\tTCP_TIMESTAMP                               = 0x18\n\tTCP_TX_DELAY                                = 0x25\n\tTCP_ULP                                     = 0x1f\n\tTCP_USER_TIMEOUT                            = 0x12\n\tTCP_WINDOW_CLAMP                            = 0xa\n\tTCP_ZEROCOPY_RECEIVE                        = 0x23\n\tTFD_TIMER_ABSTIME                           = 0x1\n\tTFD_TIMER_CANCEL_ON_SET                     = 0x2\n\tTIMER_ABSTIME                               = 0x1\n\tTIOCM_DTR                                   = 0x2\n\tTIOCM_LE                                    = 0x1\n\tTIOCM_RTS                                   = 0x4\n\tTIOCPKT_DATA                                = 0x0\n\tTIOCPKT_DOSTOP                              = 0x20\n\tTIOCPKT_FLUSHREAD                           = 0x1\n\tTIOCPKT_FLUSHWRITE                          = 0x2\n\tTIOCPKT_IOCTL                               = 0x40\n\tTIOCPKT_NOSTOP                              = 0x10\n\tTIOCPKT_START                               = 0x8\n\tTIOCPKT_STOP                                = 0x4\n\tTIPC_ADDR_ID                                = 0x3\n\tTIPC_ADDR_MCAST                             = 0x1\n\tTIPC_ADDR_NAME                              = 0x2\n\tTIPC_ADDR_NAMESEQ                           = 0x1\n\tTIPC_AEAD_ALG_NAME                          = 0x20\n\tTIPC_AEAD_KEYLEN_MAX                        = 0x24\n\tTIPC_AEAD_KEYLEN_MIN                        = 0x14\n\tTIPC_AEAD_KEY_SIZE_MAX                      = 0x48\n\tTIPC_CFG_SRV                                = 0x0\n\tTIPC_CLUSTER_BITS                           = 0xc\n\tTIPC_CLUSTER_MASK                           = 0xfff000\n\tTIPC_CLUSTER_OFFSET                         = 0xc\n\tTIPC_CLUSTER_SIZE                           = 0xfff\n\tTIPC_CONN_SHUTDOWN                          = 0x5\n\tTIPC_CONN_TIMEOUT                           = 0x82\n\tTIPC_CRITICAL_IMPORTANCE                    = 0x3\n\tTIPC_DESTNAME                               = 0x3\n\tTIPC_DEST_DROPPABLE                         = 0x81\n\tTIPC_ERRINFO                                = 0x1\n\tTIPC_ERR_NO_NAME                            = 0x1\n\tTIPC_ERR_NO_NODE                            = 0x3\n\tTIPC_ERR_NO_PORT                            = 0x2\n\tTIPC_ERR_OVERLOAD                           = 0x4\n\tTIPC_GROUP_JOIN                             = 0x87\n\tTIPC_GROUP_LEAVE                            = 0x88\n\tTIPC_GROUP_LOOPBACK                         = 0x1\n\tTIPC_GROUP_MEMBER_EVTS                      = 0x2\n\tTIPC_HIGH_IMPORTANCE                        = 0x2\n\tTIPC_IMPORTANCE                             = 0x7f\n\tTIPC_LINK_STATE                             = 0x2\n\tTIPC_LOW_IMPORTANCE                         = 0x0\n\tTIPC_MAX_BEARER_NAME                        = 0x20\n\tTIPC_MAX_IF_NAME                            = 0x10\n\tTIPC_MAX_LINK_NAME                          = 0x44\n\tTIPC_MAX_MEDIA_NAME                         = 0x10\n\tTIPC_MAX_USER_MSG_SIZE                      = 0x101d0\n\tTIPC_MCAST_BROADCAST                        = 0x85\n\tTIPC_MCAST_REPLICAST                        = 0x86\n\tTIPC_MEDIUM_IMPORTANCE                      = 0x1\n\tTIPC_NODEID_LEN                             = 0x10\n\tTIPC_NODELAY                                = 0x8a\n\tTIPC_NODE_BITS                              = 0xc\n\tTIPC_NODE_MASK                              = 0xfff\n\tTIPC_NODE_OFFSET                            = 0x0\n\tTIPC_NODE_RECVQ_DEPTH                       = 0x83\n\tTIPC_NODE_SIZE                              = 0xfff\n\tTIPC_NODE_STATE                             = 0x0\n\tTIPC_OK                                     = 0x0\n\tTIPC_PUBLISHED                              = 0x1\n\tTIPC_REKEYING_NOW                           = 0xffffffff\n\tTIPC_RESERVED_TYPES                         = 0x40\n\tTIPC_RETDATA                                = 0x2\n\tTIPC_SERVICE_ADDR                           = 0x2\n\tTIPC_SERVICE_RANGE                          = 0x1\n\tTIPC_SOCKET_ADDR                            = 0x3\n\tTIPC_SOCK_RECVQ_DEPTH                       = 0x84\n\tTIPC_SOCK_RECVQ_USED                        = 0x89\n\tTIPC_SRC_DROPPABLE                          = 0x80\n\tTIPC_SUBSCR_TIMEOUT                         = 0x3\n\tTIPC_SUB_CANCEL                             = 0x4\n\tTIPC_SUB_PORTS                              = 0x1\n\tTIPC_SUB_SERVICE                            = 0x2\n\tTIPC_TOP_SRV                                = 0x1\n\tTIPC_WAIT_FOREVER                           = 0xffffffff\n\tTIPC_WITHDRAWN                              = 0x2\n\tTIPC_ZONE_BITS                              = 0x8\n\tTIPC_ZONE_CLUSTER_MASK                      = 0xfffff000\n\tTIPC_ZONE_MASK                              = 0xff000000\n\tTIPC_ZONE_OFFSET                            = 0x18\n\tTIPC_ZONE_SCOPE                             = 0x1\n\tTIPC_ZONE_SIZE                              = 0xff\n\tTMPFS_MAGIC                                 = 0x1021994\n\tTPACKET_ALIGNMENT                           = 0x10\n\tTPACKET_HDRLEN                              = 0x34\n\tTP_STATUS_AVAILABLE                         = 0x0\n\tTP_STATUS_BLK_TMO                           = 0x20\n\tTP_STATUS_COPY                              = 0x2\n\tTP_STATUS_CSUMNOTREADY                      = 0x8\n\tTP_STATUS_CSUM_VALID                        = 0x80\n\tTP_STATUS_GSO_TCP                           = 0x100\n\tTP_STATUS_KERNEL                            = 0x0\n\tTP_STATUS_LOSING                            = 0x4\n\tTP_STATUS_SENDING                           = 0x2\n\tTP_STATUS_SEND_REQUEST                      = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE                   = 0x80000000\n\tTP_STATUS_TS_SOFTWARE                       = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE                   = 0x40000000\n\tTP_STATUS_USER                              = 0x1\n\tTP_STATUS_VLAN_TPID_VALID                   = 0x40\n\tTP_STATUS_VLAN_VALID                        = 0x10\n\tTP_STATUS_WRONG_FORMAT                      = 0x4\n\tTRACEFS_MAGIC                               = 0x74726163\n\tTS_COMM_LEN                                 = 0x20\n\tUBI_IOCECNFO                                = 0xc01c6f06\n\tUDF_SUPER_MAGIC                             = 0x15013346\n\tUDP_CORK                                    = 0x1\n\tUDP_ENCAP                                   = 0x64\n\tUDP_ENCAP_ESPINUDP                          = 0x2\n\tUDP_ENCAP_ESPINUDP_NON_IKE                  = 0x1\n\tUDP_ENCAP_GTP0                              = 0x4\n\tUDP_ENCAP_GTP1U                             = 0x5\n\tUDP_ENCAP_L2TPINUDP                         = 0x3\n\tUDP_GRO                                     = 0x68\n\tUDP_NO_CHECK6_RX                            = 0x66\n\tUDP_NO_CHECK6_TX                            = 0x65\n\tUDP_SEGMENT                                 = 0x67\n\tUMOUNT_NOFOLLOW                             = 0x8\n\tUSBDEVICE_SUPER_MAGIC                       = 0x9fa2\n\tUTIME_NOW                                   = 0x3fffffff\n\tUTIME_OMIT                                  = 0x3ffffffe\n\tV9FS_MAGIC                                  = 0x1021997\n\tVERASE                                      = 0x2\n\tVER_FLG_BASE                                = 0x1\n\tVER_FLG_WEAK                                = 0x2\n\tVINTR                                       = 0x0\n\tVKILL                                       = 0x3\n\tVLNEXT                                      = 0xf\n\tVMADDR_CID_ANY                              = 0xffffffff\n\tVMADDR_CID_HOST                             = 0x2\n\tVMADDR_CID_HYPERVISOR                       = 0x0\n\tVMADDR_CID_LOCAL                            = 0x1\n\tVMADDR_FLAG_TO_HOST                         = 0x1\n\tVMADDR_PORT_ANY                             = 0xffffffff\n\tVM_SOCKETS_INVALID_VERSION                  = 0xffffffff\n\tVQUIT                                       = 0x1\n\tVT0                                         = 0x0\n\tWAKE_MAGIC                                  = 0x20\n\tWALL                                        = 0x40000000\n\tWCLONE                                      = 0x80000000\n\tWCONTINUED                                  = 0x8\n\tWDIOC_SETPRETIMEOUT                         = 0xc0045708\n\tWDIOC_SETTIMEOUT                            = 0xc0045706\n\tWDIOF_ALARMONLY                             = 0x400\n\tWDIOF_CARDRESET                             = 0x20\n\tWDIOF_EXTERN1                               = 0x4\n\tWDIOF_EXTERN2                               = 0x8\n\tWDIOF_FANFAULT                              = 0x2\n\tWDIOF_KEEPALIVEPING                         = 0x8000\n\tWDIOF_MAGICCLOSE                            = 0x100\n\tWDIOF_OVERHEAT                              = 0x1\n\tWDIOF_POWEROVER                             = 0x40\n\tWDIOF_POWERUNDER                            = 0x10\n\tWDIOF_PRETIMEOUT                            = 0x200\n\tWDIOF_SETTIMEOUT                            = 0x80\n\tWDIOF_UNKNOWN                               = -0x1\n\tWDIOS_DISABLECARD                           = 0x1\n\tWDIOS_ENABLECARD                            = 0x2\n\tWDIOS_TEMPPANIC                             = 0x4\n\tWDIOS_UNKNOWN                               = -0x1\n\tWEXITED                                     = 0x4\n\tWGALLOWEDIP_A_MAX                           = 0x4\n\tWGDEVICE_A_MAX                              = 0x8\n\tWGPEER_A_MAX                                = 0xa\n\tWG_CMD_MAX                                  = 0x1\n\tWG_GENL_NAME                                = \"wireguard\"\n\tWG_GENL_VERSION                             = 0x1\n\tWG_KEY_LEN                                  = 0x20\n\tWIN_ACKMEDIACHANGE                          = 0xdb\n\tWIN_CHECKPOWERMODE1                         = 0xe5\n\tWIN_CHECKPOWERMODE2                         = 0x98\n\tWIN_DEVICE_RESET                            = 0x8\n\tWIN_DIAGNOSE                                = 0x90\n\tWIN_DOORLOCK                                = 0xde\n\tWIN_DOORUNLOCK                              = 0xdf\n\tWIN_DOWNLOAD_MICROCODE                      = 0x92\n\tWIN_FLUSH_CACHE                             = 0xe7\n\tWIN_FLUSH_CACHE_EXT                         = 0xea\n\tWIN_FORMAT                                  = 0x50\n\tWIN_GETMEDIASTATUS                          = 0xda\n\tWIN_IDENTIFY                                = 0xec\n\tWIN_IDENTIFY_DMA                            = 0xee\n\tWIN_IDLEIMMEDIATE                           = 0xe1\n\tWIN_INIT                                    = 0x60\n\tWIN_MEDIAEJECT                              = 0xed\n\tWIN_MULTREAD                                = 0xc4\n\tWIN_MULTREAD_EXT                            = 0x29\n\tWIN_MULTWRITE                               = 0xc5\n\tWIN_MULTWRITE_EXT                           = 0x39\n\tWIN_NOP                                     = 0x0\n\tWIN_PACKETCMD                               = 0xa0\n\tWIN_PIDENTIFY                               = 0xa1\n\tWIN_POSTBOOT                                = 0xdc\n\tWIN_PREBOOT                                 = 0xdd\n\tWIN_QUEUED_SERVICE                          = 0xa2\n\tWIN_READ                                    = 0x20\n\tWIN_READDMA                                 = 0xc8\n\tWIN_READDMA_EXT                             = 0x25\n\tWIN_READDMA_ONCE                            = 0xc9\n\tWIN_READDMA_QUEUED                          = 0xc7\n\tWIN_READDMA_QUEUED_EXT                      = 0x26\n\tWIN_READ_BUFFER                             = 0xe4\n\tWIN_READ_EXT                                = 0x24\n\tWIN_READ_LONG                               = 0x22\n\tWIN_READ_LONG_ONCE                          = 0x23\n\tWIN_READ_NATIVE_MAX                         = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT                     = 0x27\n\tWIN_READ_ONCE                               = 0x21\n\tWIN_RECAL                                   = 0x10\n\tWIN_RESTORE                                 = 0x10\n\tWIN_SECURITY_DISABLE                        = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE                  = 0xf3\n\tWIN_SECURITY_ERASE_UNIT                     = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK                    = 0xf5\n\tWIN_SECURITY_SET_PASS                       = 0xf1\n\tWIN_SECURITY_UNLOCK                         = 0xf2\n\tWIN_SEEK                                    = 0x70\n\tWIN_SETFEATURES                             = 0xef\n\tWIN_SETIDLE1                                = 0xe3\n\tWIN_SETIDLE2                                = 0x97\n\tWIN_SETMULT                                 = 0xc6\n\tWIN_SET_MAX                                 = 0xf9\n\tWIN_SET_MAX_EXT                             = 0x37\n\tWIN_SLEEPNOW1                               = 0xe6\n\tWIN_SLEEPNOW2                               = 0x99\n\tWIN_SMART                                   = 0xb0\n\tWIN_SPECIFY                                 = 0x91\n\tWIN_SRST                                    = 0x8\n\tWIN_STANDBY                                 = 0xe2\n\tWIN_STANDBY2                                = 0x96\n\tWIN_STANDBYNOW1                             = 0xe0\n\tWIN_STANDBYNOW2                             = 0x94\n\tWIN_VERIFY                                  = 0x40\n\tWIN_VERIFY_EXT                              = 0x42\n\tWIN_VERIFY_ONCE                             = 0x41\n\tWIN_WRITE                                   = 0x30\n\tWIN_WRITEDMA                                = 0xca\n\tWIN_WRITEDMA_EXT                            = 0x35\n\tWIN_WRITEDMA_ONCE                           = 0xcb\n\tWIN_WRITEDMA_QUEUED                         = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT                     = 0x36\n\tWIN_WRITE_BUFFER                            = 0xe8\n\tWIN_WRITE_EXT                               = 0x34\n\tWIN_WRITE_LONG                              = 0x32\n\tWIN_WRITE_LONG_ONCE                         = 0x33\n\tWIN_WRITE_ONCE                              = 0x31\n\tWIN_WRITE_SAME                              = 0xe9\n\tWIN_WRITE_VERIFY                            = 0x3c\n\tWNOHANG                                     = 0x1\n\tWNOTHREAD                                   = 0x20000000\n\tWNOWAIT                                     = 0x1000000\n\tWSTOPPED                                    = 0x2\n\tWUNTRACED                                   = 0x2\n\tXATTR_CREATE                                = 0x1\n\tXATTR_REPLACE                               = 0x2\n\tXDP_COPY                                    = 0x2\n\tXDP_FLAGS_DRV_MODE                          = 0x4\n\tXDP_FLAGS_HW_MODE                           = 0x8\n\tXDP_FLAGS_MASK                              = 0x1f\n\tXDP_FLAGS_MODES                             = 0xe\n\tXDP_FLAGS_REPLACE                           = 0x10\n\tXDP_FLAGS_SKB_MODE                          = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST                 = 0x1\n\tXDP_MMAP_OFFSETS                            = 0x1\n\tXDP_OPTIONS                                 = 0x8\n\tXDP_OPTIONS_ZEROCOPY                        = 0x1\n\tXDP_PACKET_HEADROOM                         = 0x100\n\tXDP_PGOFF_RX_RING                           = 0x0\n\tXDP_PGOFF_TX_RING                           = 0x80000000\n\tXDP_PKT_CONTD                               = 0x1\n\tXDP_RING_NEED_WAKEUP                        = 0x1\n\tXDP_RX_RING                                 = 0x2\n\tXDP_SHARED_UMEM                             = 0x1\n\tXDP_STATISTICS                              = 0x7\n\tXDP_TXMD_FLAGS_CHECKSUM                     = 0x2\n\tXDP_TXMD_FLAGS_LAUNCH_TIME                  = 0x4\n\tXDP_TXMD_FLAGS_TIMESTAMP                    = 0x1\n\tXDP_TX_METADATA                             = 0x2\n\tXDP_TX_RING                                 = 0x3\n\tXDP_UMEM_COMPLETION_RING                    = 0x6\n\tXDP_UMEM_FILL_RING                          = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING              = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING                    = 0x100000000\n\tXDP_UMEM_REG                                = 0x4\n\tXDP_UMEM_TX_METADATA_LEN                    = 0x4\n\tXDP_UMEM_TX_SW_CSUM                         = 0x2\n\tXDP_UMEM_UNALIGNED_CHUNK_FLAG               = 0x1\n\tXDP_USE_NEED_WAKEUP                         = 0x8\n\tXDP_USE_SG                                  = 0x10\n\tXDP_ZEROCOPY                                = 0x4\n\tXENFS_SUPER_MAGIC                           = 0xabba1974\n\tXFS_SUPER_MAGIC                             = 0x58465342\n\tZONEFS_MAGIC                                = 0x5a4f4653\n\t_HIDIOCGRAWNAME_LEN                         = 0x80\n\t_HIDIOCGRAWPHYS_LEN                         = 0x40\n\t_HIDIOCGRAWUNIQ_LEN                         = 0x40\n)\n\n// Errors\nconst (\n\tE2BIG       = syscall.Errno(0x7)\n\tEACCES      = syscall.Errno(0xd)\n\tEAGAIN      = syscall.Errno(0xb)\n\tEBADF       = syscall.Errno(0x9)\n\tEBUSY       = syscall.Errno(0x10)\n\tECHILD      = syscall.Errno(0xa)\n\tEDOM        = syscall.Errno(0x21)\n\tEEXIST      = syscall.Errno(0x11)\n\tEFAULT      = syscall.Errno(0xe)\n\tEFBIG       = syscall.Errno(0x1b)\n\tEINTR       = syscall.Errno(0x4)\n\tEINVAL      = syscall.Errno(0x16)\n\tEIO         = syscall.Errno(0x5)\n\tEISDIR      = syscall.Errno(0x15)\n\tEMFILE      = syscall.Errno(0x18)\n\tEMLINK      = syscall.Errno(0x1f)\n\tENFILE      = syscall.Errno(0x17)\n\tENODEV      = syscall.Errno(0x13)\n\tENOENT      = syscall.Errno(0x2)\n\tENOEXEC     = syscall.Errno(0x8)\n\tENOMEM      = syscall.Errno(0xc)\n\tENOSPC      = syscall.Errno(0x1c)\n\tENOTBLK     = syscall.Errno(0xf)\n\tENOTDIR     = syscall.Errno(0x14)\n\tENOTTY      = syscall.Errno(0x19)\n\tENXIO       = syscall.Errno(0x6)\n\tEPERM       = syscall.Errno(0x1)\n\tEPIPE       = syscall.Errno(0x20)\n\tERANGE      = syscall.Errno(0x22)\n\tEROFS       = syscall.Errno(0x1e)\n\tESPIPE      = syscall.Errno(0x1d)\n\tESRCH       = syscall.Errno(0x3)\n\tETXTBSY     = syscall.Errno(0x1a)\n\tEWOULDBLOCK = syscall.Errno(0xb)\n\tEXDEV       = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT = syscall.Signal(0x6)\n\tSIGALRM = syscall.Signal(0xe)\n\tSIGFPE  = syscall.Signal(0x8)\n\tSIGHUP  = syscall.Signal(0x1)\n\tSIGILL  = syscall.Signal(0x4)\n\tSIGINT  = syscall.Signal(0x2)\n\tSIGIOT  = syscall.Signal(0x6)\n\tSIGKILL = syscall.Signal(0x9)\n\tSIGPIPE = syscall.Signal(0xd)\n\tSIGQUIT = syscall.Signal(0x3)\n\tSIGSEGV = syscall.Signal(0xb)\n\tSIGTERM = syscall.Signal(0xf)\n\tSIGTRAP = syscall.Signal(0x5)\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_386.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/386/include -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/386/include -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80041270\n\tBLKBSZSET                        = 0x40041271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80041272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFP_XSTATE_MAGIC2                 = 0x46505845\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0xc\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0xd\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0xe\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_32BIT                        = 0x40\n\tMAP_ABOVE4G                      = 0x80\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc03c4d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x8000\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8008743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40087446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x400c744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40087447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETFPXREGS                = 0x12\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETFPXREGS                = 0x13\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x21\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8004700d\n\tRTC_EPOCH_SET                    = 0x4004700e\n\tRTC_IRQP_READ                    = 0x8004700b\n\tRTC_IRQP_SET                     = 0x4004700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x801c7011\n\tRTC_PLL_SET                      = 0x401c7012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x400854d5\n\tTUNDETACHFILTER                  = 0x400854d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x800854db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x20\n\tX86_FXSR_MAGIC                   = 0x0\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/amd64/include -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/amd64/include -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFP_XSTATE_MAGIC2                 = 0x46505845\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_32BIT                        = 0x40\n\tMAP_ABOVE4G                      = 0x80\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_ARCH_PRCTL                = 0x1e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETFPXREGS                = 0x12\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETFPXREGS                = 0x13\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x21\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_arm.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/arm/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/arm/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80041270\n\tBLKBSZSET                        = 0x40041271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80041272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0xc\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0xd\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0xe\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x10000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x20000\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8008743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40087446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x400c744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40087447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_GETCRUNCHREGS             = 0x19\n\tPTRACE_GETFDPIC                  = 0x1f\n\tPTRACE_GETFDPIC_EXEC             = 0x0\n\tPTRACE_GETFDPIC_INTERP           = 0x1\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETHBPREGS                = 0x1d\n\tPTRACE_GETVFPREGS                = 0x1b\n\tPTRACE_GETWMMXREGS               = 0x12\n\tPTRACE_GET_THREAD_AREA           = 0x16\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_SETCRUNCHREGS             = 0x1a\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETHBPREGS                = 0x1e\n\tPTRACE_SETVFPREGS                = 0x1c\n\tPTRACE_SETWMMXREGS               = 0x13\n\tPTRACE_SET_SYSCALL               = 0x17\n\tPT_DATA_ADDR                     = 0x10004\n\tPT_TEXT_ADDR                     = 0x10000\n\tPT_TEXT_END_ADDR                 = 0x10008\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8004700d\n\tRTC_EPOCH_SET                    = 0x4004700e\n\tRTC_IRQP_READ                    = 0x8004700b\n\tRTC_IRQP_SET                     = 0x4004700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x801c7011\n\tRTC_PLL_SET                      = 0x401c7012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x400854d5\n\tTUNDETACHFILTER                  = 0x400854d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x800854db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/arm64/include -fsigned-char\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tESR_MAGIC                        = 0x45535201\n\tEXTPROC                          = 0x10000\n\tEXTRA_MAGIC                      = 0x45585401\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFPMR_MAGIC                       = 0x46504d52\n\tFPSIMD_MAGIC                     = 0x46508001\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tGCS_MAGIC                        = 0x47435300\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x10000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPOE_MAGIC                        = 0x504f4530\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPROT_BTI                         = 0x10\n\tPROT_MTE                         = 0x20\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_PEEKMTETAGS               = 0x21\n\tPTRACE_POKEMTETAGS               = 0x22\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tSVE_MAGIC                        = 0x53564501\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTPIDR2_MAGIC                     = 0x54504902\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\tZA_MAGIC                         = 0x54366345\n\tZT_MAGIC                         = 0x5a544e01\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/loong64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/loong64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFPU_CTX_MAGIC                    = 0x46505501\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tLASX_CTX_MAGIC                   = 0x41535801\n\tLBT_CTX_MAGIC                    = 0x42540001\n\tLSX_CTX_MAGIC                    = 0x53580001\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_mips.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x21\n\tF_GETLK64                        = 0x21\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x22\n\tF_SETLK64                        = 0x22\n\tF_SETLKW                         = 0x23\n\tF_SETLKW64                       = 0x23\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x800\n\tMAP_ANONYMOUS                    = 0x800\n\tMAP_DENYWRITE                    = 0x2000\n\tMAP_EXECUTABLE                   = 0x4000\n\tMAP_GROWSDOWN                    = 0x1000\n\tMAP_HUGETLB                      = 0x80000\n\tMAP_LOCKED                       = 0x8000\n\tMAP_NONBLOCK                     = 0x20000\n\tMAP_NORESERVE                    = 0x400\n\tMAP_POPULATE                     = 0x10000\n\tMAP_RENAME                       = 0x800\n\tMAP_STACK                        = 0x40000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x2000\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4008743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80087446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x800c744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80087447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4004700d\n\tRTC_EPOCH_SET                    = 0x8004700e\n\tRTC_IRQP_READ                    = 0x4004700b\n\tRTC_IRQP_SET                     = 0x8004700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x401c7011\n\tRTC_PLL_SET                      = 0x801c7012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x800854d5\n\tTUNDETACHFILTER                  = 0x800854d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x400854db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0xe\n\tF_GETLK64                        = 0xe\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x800\n\tMAP_ANONYMOUS                    = 0x800\n\tMAP_DENYWRITE                    = 0x2000\n\tMAP_EXECUTABLE                   = 0x4000\n\tMAP_GROWSDOWN                    = 0x1000\n\tMAP_HUGETLB                      = 0x80000\n\tMAP_LOCKED                       = 0x8000\n\tMAP_NONBLOCK                     = 0x20000\n\tMAP_NORESERVE                    = 0x400\n\tMAP_POPULATE                     = 0x10000\n\tMAP_RENAME                       = 0x800\n\tMAP_STACK                        = 0x40000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips64le/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64le/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0xe\n\tF_GETLK64                        = 0xe\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x800\n\tMAP_ANONYMOUS                    = 0x800\n\tMAP_DENYWRITE                    = 0x2000\n\tMAP_EXECUTABLE                   = 0x4000\n\tMAP_GROWSDOWN                    = 0x1000\n\tMAP_HUGETLB                      = 0x80000\n\tMAP_LOCKED                       = 0x8000\n\tMAP_NONBLOCK                     = 0x20000\n\tMAP_NORESERVE                    = 0x400\n\tMAP_POPULATE                     = 0x10000\n\tMAP_RENAME                       = 0x800\n\tMAP_STACK                        = 0x40000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mipsle/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mipsle/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x21\n\tF_GETLK64                        = 0x21\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x22\n\tF_SETLK64                        = 0x22\n\tF_SETLKW                         = 0x23\n\tF_SETLKW64                       = 0x23\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x800\n\tMAP_ANONYMOUS                    = 0x800\n\tMAP_DENYWRITE                    = 0x2000\n\tMAP_EXECUTABLE                   = 0x4000\n\tMAP_GROWSDOWN                    = 0x1000\n\tMAP_HUGETLB                      = 0x80000\n\tMAP_LOCKED                       = 0x8000\n\tMAP_NONBLOCK                     = 0x20000\n\tMAP_NORESERVE                    = 0x400\n\tMAP_POPULATE                     = 0x10000\n\tMAP_RENAME                       = 0x800\n\tMAP_STACK                        = 0x40000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x2000\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4008743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80087446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x800c744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80087447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4004700d\n\tRTC_EPOCH_SET                    = 0x8004700e\n\tRTC_IRQP_READ                    = 0x4004700b\n\tRTC_IRQP_SET                     = 0x8004700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x401c7011\n\tRTC_PLL_SET                      = 0x801c7012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x800854d5\n\tTUNDETACHFILTER                  = 0x800854d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x400854db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x40\n\tECHOE                            = 0x2\n\tECHOK                            = 0x4\n\tECHOKE                           = 0x1\n\tECHONL                           = 0x10\n\tECHOPRT                          = 0x20\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000000\n\tFF1                              = 0x4000\n\tFFDLY                            = 0x4000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x800000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0xc\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0xd\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0xe\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x4000\n\tICANON                           = 0x100\n\tIEXTEN                           = 0x400\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x80\n\tIUCLC                            = 0x1000\n\tIXOFF                            = 0x400\n\tIXON                             = 0x200\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x80\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x40\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x2000\n\tMCL_FUTURE                       = 0x4000\n\tMCL_ONFAULT                      = 0x8000\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x20\n\tNL2                              = 0x200\n\tNL3                              = 0x300\n\tNLDLY                            = 0x300\n\tNOFLSH                           = 0x80000000\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x4\n\tONLCR                            = 0x2\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x20000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x10000\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x1000\n\tPARODD                           = 0x2000\n\tPENDIN                           = 0x20000000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4008743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80087446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x800c744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80087447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPROT_SAO                         = 0x10\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETEVRREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_GETVRREGS                 = 0x12\n\tPTRACE_GETVSRREGS                = 0x1b\n\tPTRACE_GET_DEBUGREG              = 0x19\n\tPTRACE_SETEVRREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SETVRREGS                 = 0x13\n\tPTRACE_SETVSRREGS                = 0x1c\n\tPTRACE_SET_DEBUGREG              = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x100\n\tPTRACE_SYSEMU                    = 0x1d\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x1e\n\tPT_CCR                           = 0x26\n\tPT_CTR                           = 0x23\n\tPT_DAR                           = 0x29\n\tPT_DSCR                          = 0x2c\n\tPT_DSISR                         = 0x2a\n\tPT_FPR0                          = 0x30\n\tPT_FPR31                         = 0x6e\n\tPT_FPSCR                         = 0x71\n\tPT_LNK                           = 0x24\n\tPT_MQ                            = 0x27\n\tPT_MSR                           = 0x21\n\tPT_NIP                           = 0x20\n\tPT_ORIG_R3                       = 0x22\n\tPT_R0                            = 0x0\n\tPT_R1                            = 0x1\n\tPT_R10                           = 0xa\n\tPT_R11                           = 0xb\n\tPT_R12                           = 0xc\n\tPT_R13                           = 0xd\n\tPT_R14                           = 0xe\n\tPT_R15                           = 0xf\n\tPT_R16                           = 0x10\n\tPT_R17                           = 0x11\n\tPT_R18                           = 0x12\n\tPT_R19                           = 0x13\n\tPT_R2                            = 0x2\n\tPT_R20                           = 0x14\n\tPT_R21                           = 0x15\n\tPT_R22                           = 0x16\n\tPT_R23                           = 0x17\n\tPT_R24                           = 0x18\n\tPT_R25                           = 0x19\n\tPT_R26                           = 0x1a\n\tPT_R27                           = 0x1b\n\tPT_R28                           = 0x1c\n\tPT_R29                           = 0x1d\n\tPT_R3                            = 0x3\n\tPT_R30                           = 0x1e\n\tPT_R31                           = 0x1f\n\tPT_R4                            = 0x4\n\tPT_R5                            = 0x5\n\tPT_R6                            = 0x6\n\tPT_R7                            = 0x7\n\tPT_R8                            = 0x8\n\tPT_R9                            = 0x9\n\tPT_REGS_COUNT                    = 0x2c\n\tPT_RESULT                        = 0x2b\n\tPT_TRAP                          = 0x28\n\tPT_XER                           = 0x25\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4004700d\n\tRTC_EPOCH_SET                    = 0x8004700e\n\tRTC_IRQP_READ                    = 0x4004700b\n\tRTC_IRQP_SET                     = 0x8004700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x401c7011\n\tRTC_PLL_SET                      = 0x801c7012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x14\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x15\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x10\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x12\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x12\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x11\n\tSO_SNDTIMEO                      = 0x13\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x13\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x400\n\tTAB2                             = 0x800\n\tTAB3                             = 0xc00\n\tTABDLY                           = 0xc00\n\tTCFLSH                           = 0x2000741f\n\tTCGETA                           = 0x40147417\n\tTCGETS                           = 0x402c7413\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x2000741d\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80147418\n\tTCSETAF                          = 0x8014741c\n\tTCSETAW                          = 0x80147419\n\tTCSETS                           = 0x802c7414\n\tTCSETSF                          = 0x802c7416\n\tTCSETSW                          = 0x802c7415\n\tTCXONC                           = 0x2000741e\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETC                         = 0x40067412\n\tTIOCGETD                         = 0x5424\n\tTIOCGETP                         = 0x40067408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGLTC                         = 0x40067474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_LOOP                       = 0x8000\n\tTIOCM_OUT1                       = 0x2000\n\tTIOCM_OUT2                       = 0x4000\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETC                         = 0x80067411\n\tTIOCSETD                         = 0x5423\n\tTIOCSETN                         = 0x8006740a\n\tTIOCSETP                         = 0x80067409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSLTC                         = 0x80067475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x5412\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x400000\n\tTUNATTACHFILTER                  = 0x800854d5\n\tTUNDETACHFILTER                  = 0x800854d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x400854db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0x10\n\tVEOF                             = 0x4\n\tVEOL                             = 0x6\n\tVEOL2                            = 0x8\n\tVMIN                             = 0x5\n\tVREPRINT                         = 0xb\n\tVSTART                           = 0xd\n\tVSTOP                            = 0xe\n\tVSUSP                            = 0xc\n\tVSWTC                            = 0x9\n\tVT1                              = 0x10000\n\tVTDLY                            = 0x10000\n\tVTIME                            = 0x7\n\tVWERASE                          = 0xa\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4000\n\tXTABS                            = 0xc00\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{58, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x40\n\tECHOE                            = 0x2\n\tECHOK                            = 0x4\n\tECHOKE                           = 0x1\n\tECHONL                           = 0x10\n\tECHOPRT                          = 0x20\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000000\n\tFF1                              = 0x4000\n\tFFDLY                            = 0x4000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x800000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x4000\n\tICANON                           = 0x100\n\tIEXTEN                           = 0x400\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x80\n\tIUCLC                            = 0x1000\n\tIXOFF                            = 0x400\n\tIXON                             = 0x200\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x80\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x40\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x2000\n\tMCL_FUTURE                       = 0x4000\n\tMCL_ONFAULT                      = 0x8000\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNL2                              = 0x200\n\tNL3                              = 0x300\n\tNLDLY                            = 0x300\n\tNOFLSH                           = 0x80000000\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x4\n\tONLCR                            = 0x2\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x20000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x1000\n\tPARODD                           = 0x2000\n\tPENDIN                           = 0x20000000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPROT_SAO                         = 0x10\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETEVRREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_GETVRREGS                 = 0x12\n\tPTRACE_GETVSRREGS                = 0x1b\n\tPTRACE_GET_DEBUGREG              = 0x19\n\tPTRACE_SETEVRREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SETVRREGS                 = 0x13\n\tPTRACE_SETVSRREGS                = 0x1c\n\tPTRACE_SET_DEBUGREG              = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x100\n\tPTRACE_SYSEMU                    = 0x1d\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x1e\n\tPT_CCR                           = 0x26\n\tPT_CTR                           = 0x23\n\tPT_DAR                           = 0x29\n\tPT_DSCR                          = 0x2c\n\tPT_DSISR                         = 0x2a\n\tPT_FPR0                          = 0x30\n\tPT_FPSCR                         = 0x50\n\tPT_LNK                           = 0x24\n\tPT_MSR                           = 0x21\n\tPT_NIP                           = 0x20\n\tPT_ORIG_R3                       = 0x22\n\tPT_R0                            = 0x0\n\tPT_R1                            = 0x1\n\tPT_R10                           = 0xa\n\tPT_R11                           = 0xb\n\tPT_R12                           = 0xc\n\tPT_R13                           = 0xd\n\tPT_R14                           = 0xe\n\tPT_R15                           = 0xf\n\tPT_R16                           = 0x10\n\tPT_R17                           = 0x11\n\tPT_R18                           = 0x12\n\tPT_R19                           = 0x13\n\tPT_R2                            = 0x2\n\tPT_R20                           = 0x14\n\tPT_R21                           = 0x15\n\tPT_R22                           = 0x16\n\tPT_R23                           = 0x17\n\tPT_R24                           = 0x18\n\tPT_R25                           = 0x19\n\tPT_R26                           = 0x1a\n\tPT_R27                           = 0x1b\n\tPT_R28                           = 0x1c\n\tPT_R29                           = 0x1d\n\tPT_R3                            = 0x3\n\tPT_R30                           = 0x1e\n\tPT_R31                           = 0x1f\n\tPT_R4                            = 0x4\n\tPT_R5                            = 0x5\n\tPT_R6                            = 0x6\n\tPT_R7                            = 0x7\n\tPT_R8                            = 0x8\n\tPT_R9                            = 0x9\n\tPT_REGS_COUNT                    = 0x2c\n\tPT_RESULT                        = 0x2b\n\tPT_SOFTE                         = 0x27\n\tPT_TRAP                          = 0x28\n\tPT_VR0                           = 0x52\n\tPT_VRSAVE                        = 0x94\n\tPT_VSCR                          = 0x93\n\tPT_VSR0                          = 0x96\n\tPT_VSR31                         = 0xd4\n\tPT_XER                           = 0x25\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x14\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x15\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x10\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x12\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x12\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x11\n\tSO_SNDTIMEO                      = 0x13\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x13\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x400\n\tTAB2                             = 0x800\n\tTAB3                             = 0xc00\n\tTABDLY                           = 0xc00\n\tTCFLSH                           = 0x2000741f\n\tTCGETA                           = 0x40147417\n\tTCGETS                           = 0x402c7413\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x2000741d\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80147418\n\tTCSETAF                          = 0x8014741c\n\tTCSETAW                          = 0x80147419\n\tTCSETS                           = 0x802c7414\n\tTCSETSF                          = 0x802c7416\n\tTCSETSW                          = 0x802c7415\n\tTCXONC                           = 0x2000741e\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETC                         = 0x40067412\n\tTIOCGETD                         = 0x5424\n\tTIOCGETP                         = 0x40067408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGLTC                         = 0x40067474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_LOOP                       = 0x8000\n\tTIOCM_OUT1                       = 0x2000\n\tTIOCM_OUT2                       = 0x4000\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETC                         = 0x80067411\n\tTIOCSETD                         = 0x5423\n\tTIOCSETN                         = 0x8006740a\n\tTIOCSETP                         = 0x80067409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSLTC                         = 0x80067475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x5412\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x400000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0x10\n\tVEOF                             = 0x4\n\tVEOL                             = 0x6\n\tVEOL2                            = 0x8\n\tVMIN                             = 0x5\n\tVREPRINT                         = 0xb\n\tVSTART                           = 0xd\n\tVSTOP                            = 0xe\n\tVSUSP                            = 0xc\n\tVSWTC                            = 0x9\n\tVT1                              = 0x10000\n\tVTDLY                            = 0x10000\n\tVTIME                            = 0x7\n\tVWERASE                          = 0xa\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4000\n\tXTABS                            = 0xc00\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{58, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64le/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64le/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x40\n\tECHOE                            = 0x2\n\tECHOK                            = 0x4\n\tECHOKE                           = 0x1\n\tECHONL                           = 0x10\n\tECHOPRT                          = 0x20\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000000\n\tFF1                              = 0x4000\n\tFFDLY                            = 0x4000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x800000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x4000\n\tICANON                           = 0x100\n\tIEXTEN                           = 0x400\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x80\n\tIUCLC                            = 0x1000\n\tIXOFF                            = 0x400\n\tIXON                             = 0x200\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x80\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x40\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x2000\n\tMCL_FUTURE                       = 0x4000\n\tMCL_ONFAULT                      = 0x8000\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNL2                              = 0x200\n\tNL3                              = 0x300\n\tNLDLY                            = 0x300\n\tNOFLSH                           = 0x80000000\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x4\n\tONLCR                            = 0x2\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x20000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x1000\n\tPARODD                           = 0x2000\n\tPENDIN                           = 0x20000000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPROT_SAO                         = 0x10\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETEVRREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_GETVRREGS                 = 0x12\n\tPTRACE_GETVSRREGS                = 0x1b\n\tPTRACE_GET_DEBUGREG              = 0x19\n\tPTRACE_SETEVRREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SETVRREGS                 = 0x13\n\tPTRACE_SETVSRREGS                = 0x1c\n\tPTRACE_SET_DEBUGREG              = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x100\n\tPTRACE_SYSEMU                    = 0x1d\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x1e\n\tPT_CCR                           = 0x26\n\tPT_CTR                           = 0x23\n\tPT_DAR                           = 0x29\n\tPT_DSCR                          = 0x2c\n\tPT_DSISR                         = 0x2a\n\tPT_FPR0                          = 0x30\n\tPT_FPSCR                         = 0x50\n\tPT_LNK                           = 0x24\n\tPT_MSR                           = 0x21\n\tPT_NIP                           = 0x20\n\tPT_ORIG_R3                       = 0x22\n\tPT_R0                            = 0x0\n\tPT_R1                            = 0x1\n\tPT_R10                           = 0xa\n\tPT_R11                           = 0xb\n\tPT_R12                           = 0xc\n\tPT_R13                           = 0xd\n\tPT_R14                           = 0xe\n\tPT_R15                           = 0xf\n\tPT_R16                           = 0x10\n\tPT_R17                           = 0x11\n\tPT_R18                           = 0x12\n\tPT_R19                           = 0x13\n\tPT_R2                            = 0x2\n\tPT_R20                           = 0x14\n\tPT_R21                           = 0x15\n\tPT_R22                           = 0x16\n\tPT_R23                           = 0x17\n\tPT_R24                           = 0x18\n\tPT_R25                           = 0x19\n\tPT_R26                           = 0x1a\n\tPT_R27                           = 0x1b\n\tPT_R28                           = 0x1c\n\tPT_R29                           = 0x1d\n\tPT_R3                            = 0x3\n\tPT_R30                           = 0x1e\n\tPT_R31                           = 0x1f\n\tPT_R4                            = 0x4\n\tPT_R5                            = 0x5\n\tPT_R6                            = 0x6\n\tPT_R7                            = 0x7\n\tPT_R8                            = 0x8\n\tPT_R9                            = 0x9\n\tPT_REGS_COUNT                    = 0x2c\n\tPT_RESULT                        = 0x2b\n\tPT_SOFTE                         = 0x27\n\tPT_TRAP                          = 0x28\n\tPT_VR0                           = 0x52\n\tPT_VRSAVE                        = 0x94\n\tPT_VSCR                          = 0x93\n\tPT_VSR0                          = 0x96\n\tPT_VSR31                         = 0xd4\n\tPT_XER                           = 0x25\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x14\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x15\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x10\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x12\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x12\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x11\n\tSO_SNDTIMEO                      = 0x13\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x13\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x400\n\tTAB2                             = 0x800\n\tTAB3                             = 0xc00\n\tTABDLY                           = 0xc00\n\tTCFLSH                           = 0x2000741f\n\tTCGETA                           = 0x40147417\n\tTCGETS                           = 0x402c7413\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x2000741d\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80147418\n\tTCSETAF                          = 0x8014741c\n\tTCSETAW                          = 0x80147419\n\tTCSETS                           = 0x802c7414\n\tTCSETSF                          = 0x802c7416\n\tTCSETSW                          = 0x802c7415\n\tTCXONC                           = 0x2000741e\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETC                         = 0x40067412\n\tTIOCGETD                         = 0x5424\n\tTIOCGETP                         = 0x40067408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGLTC                         = 0x40067474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_LOOP                       = 0x8000\n\tTIOCM_OUT1                       = 0x2000\n\tTIOCM_OUT2                       = 0x4000\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETC                         = 0x80067411\n\tTIOCSETD                         = 0x5423\n\tTIOCSETN                         = 0x8006740a\n\tTIOCSETP                         = 0x80067409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSLTC                         = 0x80067475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x5412\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x400000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0x10\n\tVEOF                             = 0x4\n\tVEOL                             = 0x6\n\tVEOL2                            = 0x8\n\tVMIN                             = 0x5\n\tVREPRINT                         = 0xb\n\tVSTART                           = 0xd\n\tVSTOP                            = 0xe\n\tVSUSP                            = 0xc\n\tVSWTC                            = 0x9\n\tVT1                              = 0x10000\n\tVTDLY                            = 0x10000\n\tVTIME                            = 0x7\n\tVWERASE                          = 0xa\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4000\n\tXTABS                            = 0xc00\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{58, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/riscv64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/riscv64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_GETFDPIC                  = 0x21\n\tPTRACE_GETFDPIC_EXEC             = 0x0\n\tPTRACE_GETFDPIC_INTERP           = 0x1\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/s390x/include -fsigned-char\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_DISABLE_TE                = 0x5010\n\tPTRACE_ENABLE_TE                 = 0x5009\n\tPTRACE_GET_LAST_BREAK            = 0x5006\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_AREA             = 0x5003\n\tPTRACE_PEEKTEXT_AREA             = 0x5002\n\tPTRACE_PEEKUSR_AREA              = 0x5000\n\tPTRACE_PEEK_SYSTEM_CALL          = 0x5007\n\tPTRACE_POKEDATA_AREA             = 0x5005\n\tPTRACE_POKETEXT_AREA             = 0x5004\n\tPTRACE_POKEUSR_AREA              = 0x5001\n\tPTRACE_POKE_SYSTEM_CALL          = 0x5008\n\tPTRACE_PROT                      = 0x15\n\tPTRACE_SINGLEBLOCK               = 0xc\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tPTRACE_TE_ABORT_RAND             = 0x5011\n\tPT_ACR0                          = 0x90\n\tPT_ACR1                          = 0x94\n\tPT_ACR10                         = 0xb8\n\tPT_ACR11                         = 0xbc\n\tPT_ACR12                         = 0xc0\n\tPT_ACR13                         = 0xc4\n\tPT_ACR14                         = 0xc8\n\tPT_ACR15                         = 0xcc\n\tPT_ACR2                          = 0x98\n\tPT_ACR3                          = 0x9c\n\tPT_ACR4                          = 0xa0\n\tPT_ACR5                          = 0xa4\n\tPT_ACR6                          = 0xa8\n\tPT_ACR7                          = 0xac\n\tPT_ACR8                          = 0xb0\n\tPT_ACR9                          = 0xb4\n\tPT_CR_10                         = 0x168\n\tPT_CR_11                         = 0x170\n\tPT_CR_9                          = 0x160\n\tPT_ENDREGS                       = 0x1af\n\tPT_FPC                           = 0xd8\n\tPT_FPR0                          = 0xe0\n\tPT_FPR1                          = 0xe8\n\tPT_FPR10                         = 0x130\n\tPT_FPR11                         = 0x138\n\tPT_FPR12                         = 0x140\n\tPT_FPR13                         = 0x148\n\tPT_FPR14                         = 0x150\n\tPT_FPR15                         = 0x158\n\tPT_FPR2                          = 0xf0\n\tPT_FPR3                          = 0xf8\n\tPT_FPR4                          = 0x100\n\tPT_FPR5                          = 0x108\n\tPT_FPR6                          = 0x110\n\tPT_FPR7                          = 0x118\n\tPT_FPR8                          = 0x120\n\tPT_FPR9                          = 0x128\n\tPT_GPR0                          = 0x10\n\tPT_GPR1                          = 0x18\n\tPT_GPR10                         = 0x60\n\tPT_GPR11                         = 0x68\n\tPT_GPR12                         = 0x70\n\tPT_GPR13                         = 0x78\n\tPT_GPR14                         = 0x80\n\tPT_GPR15                         = 0x88\n\tPT_GPR2                          = 0x20\n\tPT_GPR3                          = 0x28\n\tPT_GPR4                          = 0x30\n\tPT_GPR5                          = 0x38\n\tPT_GPR6                          = 0x40\n\tPT_GPR7                          = 0x48\n\tPT_GPR8                          = 0x50\n\tPT_GPR9                          = 0x58\n\tPT_IEEE_IP                       = 0x1a8\n\tPT_LASTOFF                       = 0x1a8\n\tPT_ORIGGPR2                      = 0xd0\n\tPT_PSWADDR                       = 0x8\n\tPT_PSWMASK                       = 0x0\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/sparc64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/sparc64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tASI_LEON_DFLUSH                  = 0x11\n\tASI_LEON_IFLUSH                  = 0x10\n\tASI_LEON_MMUFLUSH                = 0x18\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x400000\n\tEFD_NONBLOCK                     = 0x4000\n\tEMT_TAGOVF                       = 0x1\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x400000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x7\n\tF_GETLK64                        = 0x7\n\tF_GETOWN                         = 0x5\n\tF_RDLCK                          = 0x1\n\tF_SETLK                          = 0x8\n\tF_SETLK64                        = 0x8\n\tF_SETLKW                         = 0x9\n\tF_SETLKW64                       = 0x9\n\tF_SETOWN                         = 0x6\n\tF_UNLCK                          = 0x3\n\tF_WRLCK                          = 0x2\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x400000\n\tIN_NONBLOCK                      = 0x4000\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x200\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x100\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x40\n\tMAP_POPULATE                     = 0x8000\n\tMAP_RENAME                       = 0x20\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x2000\n\tMCL_FUTURE                       = 0x4000\n\tMCL_ONFAULT                      = 0x8000\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x40\n\tO_CLOEXEC                        = 0x400000\n\tO_CREAT                          = 0x200\n\tO_DIRECT                         = 0x100000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x2000\n\tO_EXCL                           = 0x800\n\tO_FSYNC                          = 0x802000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x4004\n\tO_NOATIME                        = 0x200000\n\tO_NOCTTY                         = 0x8000\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x4000\n\tO_PATH                           = 0x1000000\n\tO_RSYNC                          = 0x802000\n\tO_SYNC                           = 0x802000\n\tO_TMPFILE                        = 0x2010000\n\tO_TRUNC                          = 0x400\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPAREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETFPREGS64               = 0x19\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_READDATA                  = 0x10\n\tPTRACE_READTEXT                  = 0x12\n\tPTRACE_SETFPAREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETFPREGS64               = 0x1a\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SPARC_DETACH              = 0xb\n\tPTRACE_WRITEDATA                 = 0x11\n\tPTRACE_WRITETEXT                 = 0x13\n\tPT_FP                            = 0x48\n\tPT_G0                            = 0x10\n\tPT_G1                            = 0x14\n\tPT_G2                            = 0x18\n\tPT_G3                            = 0x1c\n\tPT_G4                            = 0x20\n\tPT_G5                            = 0x24\n\tPT_G6                            = 0x28\n\tPT_G7                            = 0x2c\n\tPT_I0                            = 0x30\n\tPT_I1                            = 0x34\n\tPT_I2                            = 0x38\n\tPT_I3                            = 0x3c\n\tPT_I4                            = 0x40\n\tPT_I5                            = 0x44\n\tPT_I6                            = 0x48\n\tPT_I7                            = 0x4c\n\tPT_NPC                           = 0x8\n\tPT_PC                            = 0x4\n\tPT_PSR                           = 0x0\n\tPT_REGS_MAGIC                    = 0x57ac6c00\n\tPT_TNPC                          = 0x90\n\tPT_TPC                           = 0x88\n\tPT_TSTATE                        = 0x80\n\tPT_V9_FP                         = 0x70\n\tPT_V9_G0                         = 0x0\n\tPT_V9_G1                         = 0x8\n\tPT_V9_G2                         = 0x10\n\tPT_V9_G3                         = 0x18\n\tPT_V9_G4                         = 0x20\n\tPT_V9_G5                         = 0x28\n\tPT_V9_G6                         = 0x30\n\tPT_V9_G7                         = 0x38\n\tPT_V9_I0                         = 0x40\n\tPT_V9_I1                         = 0x48\n\tPT_V9_I2                         = 0x50\n\tPT_V9_I3                         = 0x58\n\tPT_V9_I4                         = 0x60\n\tPT_V9_I5                         = 0x68\n\tPT_V9_I6                         = 0x70\n\tPT_V9_I7                         = 0x78\n\tPT_V9_MAGIC                      = 0x9c\n\tPT_V9_TNPC                       = 0x90\n\tPT_V9_TPC                        = 0x88\n\tPT_V9_TSTATE                     = 0x80\n\tPT_V9_Y                          = 0x98\n\tPT_WIM                           = 0x10\n\tPT_Y                             = 0xc\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x6\n\tRLIMIT_NPROC                     = 0x7\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x58\n\tSCM_DEVMEM_LINEAR                = 0x57\n\tSCM_TIMESTAMPING                 = 0x23\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x38\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3c\n\tSCM_TIMESTAMPNS                  = 0x21\n\tSCM_TS_OPT_ID                    = 0x5a\n\tSCM_TXTIME                       = 0x3f\n\tSCM_WIFI_STATUS                  = 0x25\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x400000\n\tSFD_NONBLOCK                     = 0x4000\n\tSF_FP                            = 0x38\n\tSF_I0                            = 0x20\n\tSF_I1                            = 0x24\n\tSF_I2                            = 0x28\n\tSF_I3                            = 0x2c\n\tSF_I4                            = 0x30\n\tSF_I5                            = 0x34\n\tSF_L0                            = 0x0\n\tSF_L1                            = 0x4\n\tSF_L2                            = 0x8\n\tSF_L3                            = 0xc\n\tSF_L4                            = 0x10\n\tSF_L5                            = 0x14\n\tSF_L6                            = 0x18\n\tSF_L7                            = 0x1c\n\tSF_PC                            = 0x3c\n\tSF_RETP                          = 0x40\n\tSF_V9_FP                         = 0x70\n\tSF_V9_I0                         = 0x40\n\tSF_V9_I1                         = 0x48\n\tSF_V9_I2                         = 0x50\n\tSF_V9_I3                         = 0x58\n\tSF_V9_I4                         = 0x60\n\tSF_V9_I5                         = 0x68\n\tSF_V9_L0                         = 0x0\n\tSF_V9_L1                         = 0x8\n\tSF_V9_L2                         = 0x10\n\tSF_V9_L3                         = 0x18\n\tSF_V9_L4                         = 0x20\n\tSF_V9_L5                         = 0x28\n\tSF_V9_L6                         = 0x30\n\tSF_V9_L7                         = 0x38\n\tSF_V9_PC                         = 0x78\n\tSF_V9_RETP                       = 0x80\n\tSF_V9_XARG0                      = 0x88\n\tSF_V9_XARG1                      = 0x90\n\tSF_V9_XARG2                      = 0x98\n\tSF_V9_XARG3                      = 0xa0\n\tSF_V9_XARG4                      = 0xa8\n\tSF_V9_XARG5                      = 0xb0\n\tSF_V9_XXARG                      = 0xb8\n\tSF_XARG0                         = 0x44\n\tSF_XARG1                         = 0x48\n\tSF_XARG2                         = 0x4c\n\tSF_XARG3                         = 0x50\n\tSF_XARG4                         = 0x54\n\tSF_XARG5                         = 0x58\n\tSF_XXARG                         = 0x5c\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x400000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x4000\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x8000\n\tSO_ATTACH_BPF                    = 0x34\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x35\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x36\n\tSO_BINDTODEVICE                  = 0xd\n\tSO_BINDTOIFINDEX                 = 0x41\n\tSO_BPF_EXTENSIONS                = 0x32\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0x400\n\tSO_BUF_LOCK                      = 0x51\n\tSO_BUSY_POLL                     = 0x30\n\tSO_BUSY_POLL_BUDGET              = 0x49\n\tSO_CNX_ADVICE                    = 0x37\n\tSO_COOKIE                        = 0x3b\n\tSO_DETACH_REUSEPORT_BPF          = 0x47\n\tSO_DEVMEM_DMABUF                 = 0x58\n\tSO_DEVMEM_DONTNEED               = 0x59\n\tSO_DEVMEM_LINEAR                 = 0x57\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x33\n\tSO_INCOMING_NAPI_ID              = 0x3a\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x28\n\tSO_MARK                          = 0x22\n\tSO_MAX_PACING_RATE               = 0x31\n\tSO_MEMINFO                       = 0x39\n\tSO_NETNS_COOKIE                  = 0x50\n\tSO_NOFCS                         = 0x27\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x2\n\tSO_PASSPIDFD                     = 0x55\n\tSO_PASSRIGHTS                    = 0x5c\n\tSO_PASSSEC                       = 0x1f\n\tSO_PEEK_OFF                      = 0x26\n\tSO_PEERCRED                      = 0x40\n\tSO_PEERGROUPS                    = 0x3d\n\tSO_PEERPIDFD                     = 0x56\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x48\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x100b\n\tSO_RCVLOWAT                      = 0x800\n\tSO_RCVMARK                       = 0x54\n\tSO_RCVPRIORITY                   = 0x5b\n\tSO_RCVTIMEO                      = 0x2000\n\tSO_RCVTIMEO_NEW                  = 0x44\n\tSO_RCVTIMEO_OLD                  = 0x2000\n\tSO_RESERVE_MEM                   = 0x52\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x24\n\tSO_SECURITY_AUTHENTICATION       = 0x5001\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x5004\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x5002\n\tSO_SELECT_ERR_QUEUE              = 0x29\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x100a\n\tSO_SNDLOWAT                      = 0x1000\n\tSO_SNDTIMEO                      = 0x4000\n\tSO_SNDTIMEO_NEW                  = 0x45\n\tSO_SNDTIMEO_OLD                  = 0x4000\n\tSO_TIMESTAMPING                  = 0x23\n\tSO_TIMESTAMPING_NEW              = 0x43\n\tSO_TIMESTAMPING_OLD              = 0x23\n\tSO_TIMESTAMPNS                   = 0x21\n\tSO_TIMESTAMPNS_NEW               = 0x42\n\tSO_TIMESTAMPNS_OLD               = 0x21\n\tSO_TIMESTAMP_NEW                 = 0x46\n\tSO_TXREHASH                      = 0x53\n\tSO_TXTIME                        = 0x3f\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x25\n\tSO_ZEROCOPY                      = 0x3e\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x20005407\n\tTCGETA                           = 0x40125401\n\tTCGETS                           = 0x40245408\n\tTCGETS2                          = 0x402c540c\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x20005405\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80125402\n\tTCSETAF                          = 0x80125404\n\tTCSETAW                          = 0x80125403\n\tTCSETS                           = 0x80245409\n\tTCSETS2                          = 0x802c540d\n\tTCSETSF                          = 0x8024540b\n\tTCSETSF2                         = 0x802c540f\n\tTCSETSW                          = 0x8024540a\n\tTCSETSW2                         = 0x802c540e\n\tTCXONC                           = 0x20005406\n\tTFD_CLOEXEC                      = 0x400000\n\tTFD_NONBLOCK                     = 0x4000\n\tTIOCCBRK                         = 0x2000747a\n\tTIOCCONS                         = 0x20007424\n\tTIOCEXCL                         = 0x2000740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x40047400\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285443\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x40047483\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40047486\n\tTIOCGPTPEER                      = 0x20007489\n\tTIOCGRS485                       = 0x40205441\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x40047485\n\tTIOCGSOFTCAR                     = 0x40047464\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x8004746b\n\tTIOCMBIS                         = 0x8004746c\n\tTIOCMGET                         = 0x4004746a\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x8004746d\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x20007471\n\tTIOCNXCL                         = 0x2000740e\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x80047470\n\tTIOCSBRK                         = 0x2000747b\n\tTIOCSCTTY                        = 0x20007484\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSETD                         = 0x80047401\n\tTIOCSIG                          = 0x80047488\n\tTIOCSISO7816                     = 0xc0285444\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x80047482\n\tTIOCSPTLCK                       = 0x80047487\n\tTIOCSRS485                       = 0xc0205442\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x80047465\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x80017472\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x20005437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n\t__TIOCFLUSH                      = 0x80047410\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEADV            = syscall.Errno(0x53)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEALREADY        = syscall.Errno(0x25)\n\tEBADE           = syscall.Errno(0x66)\n\tEBADFD          = syscall.Errno(0x5d)\n\tEBADMSG         = syscall.Errno(0x4c)\n\tEBADR           = syscall.Errno(0x67)\n\tEBADRQC         = syscall.Errno(0x6a)\n\tEBADSLT         = syscall.Errno(0x6b)\n\tEBFONT          = syscall.Errno(0x6d)\n\tECANCELED       = syscall.Errno(0x7f)\n\tECHRNG          = syscall.Errno(0x5e)\n\tECOMM           = syscall.Errno(0x55)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0x4e)\n\tEDEADLOCK       = syscall.Errno(0x6c)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOTDOT         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEHWPOISON       = syscall.Errno(0x87)\n\tEIDRM           = syscall.Errno(0x4d)\n\tEILSEQ          = syscall.Errno(0x7a)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x81)\n\tEKEYREJECTED    = syscall.Errno(0x83)\n\tEKEYREVOKED     = syscall.Errno(0x82)\n\tEL2HLT          = syscall.Errno(0x65)\n\tEL2NSYNC        = syscall.Errno(0x5f)\n\tEL3HLT          = syscall.Errno(0x60)\n\tEL3RST          = syscall.Errno(0x61)\n\tELIBACC         = syscall.Errno(0x72)\n\tELIBBAD         = syscall.Errno(0x70)\n\tELIBEXEC        = syscall.Errno(0x6e)\n\tELIBMAX         = syscall.Errno(0x7b)\n\tELIBSCN         = syscall.Errno(0x7c)\n\tELNRNG          = syscall.Errno(0x62)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x7e)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x57)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENOANO          = syscall.Errno(0x69)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENOCSI          = syscall.Errno(0x64)\n\tENODATA         = syscall.Errno(0x6f)\n\tENOKEY          = syscall.Errno(0x80)\n\tENOLCK          = syscall.Errno(0x4f)\n\tENOLINK         = syscall.Errno(0x52)\n\tENOMEDIUM       = syscall.Errno(0x7d)\n\tENOMSG          = syscall.Errno(0x4b)\n\tENONET          = syscall.Errno(0x50)\n\tENOPKG          = syscall.Errno(0x71)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSR           = syscall.Errno(0x4a)\n\tENOSTR          = syscall.Errno(0x48)\n\tENOSYS          = syscall.Errno(0x5a)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x85)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTUNIQ        = syscall.Errno(0x73)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x5c)\n\tEOWNERDEAD      = syscall.Errno(0x84)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROTO          = syscall.Errno(0x56)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEREMCHG         = syscall.Errno(0x59)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x74)\n\tERFKILL         = syscall.Errno(0x86)\n\tERREMOTE        = syscall.Errno(0x51)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESRMNT          = syscall.Errno(0x54)\n\tESTALE          = syscall.Errno(0x46)\n\tESTRPIPE        = syscall.Errno(0x5b)\n\tETIME           = syscall.Errno(0x49)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x63)\n\tEUSERS          = syscall.Errno(0x44)\n\tEXFULL          = syscall.Errno(0x68)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCLD    = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGLOST   = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x17)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1d)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{57, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{58, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale file handle\"},\n\t{71, \"EREMOTE\", \"object is remote\"},\n\t{72, \"ENOSTR\", \"device not a stream\"},\n\t{73, \"ETIME\", \"timer expired\"},\n\t{74, \"ENOSR\", \"out of streams resources\"},\n\t{75, \"ENOMSG\", \"no message of desired type\"},\n\t{76, \"EBADMSG\", \"bad message\"},\n\t{77, \"EIDRM\", \"identifier removed\"},\n\t{78, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{79, \"ENOLCK\", \"no locks available\"},\n\t{80, \"ENONET\", \"machine is not on the network\"},\n\t{81, \"ERREMOTE\", \"unknown error 81\"},\n\t{82, \"ENOLINK\", \"link has been severed\"},\n\t{83, \"EADV\", \"advertise error\"},\n\t{84, \"ESRMNT\", \"srmount error\"},\n\t{85, \"ECOMM\", \"communication error on send\"},\n\t{86, \"EPROTO\", \"protocol error\"},\n\t{87, \"EMULTIHOP\", \"multihop attempted\"},\n\t{88, \"EDOTDOT\", \"RFS specific error\"},\n\t{89, \"EREMCHG\", \"remote address changed\"},\n\t{90, \"ENOSYS\", \"function not implemented\"},\n\t{91, \"ESTRPIPE\", \"streams pipe error\"},\n\t{92, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{93, \"EBADFD\", \"file descriptor in bad state\"},\n\t{94, \"ECHRNG\", \"channel number out of range\"},\n\t{95, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{96, \"EL3HLT\", \"level 3 halted\"},\n\t{97, \"EL3RST\", \"level 3 reset\"},\n\t{98, \"ELNRNG\", \"link number out of range\"},\n\t{99, \"EUNATCH\", \"protocol driver not attached\"},\n\t{100, \"ENOCSI\", \"no CSI structure available\"},\n\t{101, \"EL2HLT\", \"level 2 halted\"},\n\t{102, \"EBADE\", \"invalid exchange\"},\n\t{103, \"EBADR\", \"invalid request descriptor\"},\n\t{104, \"EXFULL\", \"exchange full\"},\n\t{105, \"ENOANO\", \"no anode\"},\n\t{106, \"EBADRQC\", \"invalid request code\"},\n\t{107, \"EBADSLT\", \"invalid slot\"},\n\t{108, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{109, \"EBFONT\", \"bad font file format\"},\n\t{110, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{111, \"ENODATA\", \"no data available\"},\n\t{112, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{113, \"ENOPKG\", \"package not installed\"},\n\t{114, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{115, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{116, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{123, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{124, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{125, \"ENOMEDIUM\", \"no medium found\"},\n\t{126, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{127, \"ECANCELED\", \"operation canceled\"},\n\t{128, \"ENOKEY\", \"required key not available\"},\n\t{129, \"EKEYEXPIRED\", \"key has expired\"},\n\t{130, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{131, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{132, \"EOWNERDEAD\", \"owner died\"},\n\t{133, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{134, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{135, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGLOST\", \"power failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0084277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x400c427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x800c427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80084272\n\tBIOCSUDPF                         = 0x80084273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tEN_SW_CTL_INF                     = 0x1000\n\tEN_SW_CTL_PREC                    = 0x300\n\tEN_SW_CTL_ROUND                   = 0xc00\n\tEN_SW_DATACHAIN                   = 0x80\n\tEN_SW_DENORM                      = 0x2\n\tEN_SW_INVOP                       = 0x1\n\tEN_SW_OVERFLOW                    = 0x8\n\tEN_SW_PRECLOSS                    = 0x20\n\tEN_SW_UNDERFLOW                   = 0x10\n\tEN_SW_ZERODIV                     = 0x4\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8030720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8030720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc01c697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0946920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0086926\n\tSIOCGIFDATA                       = 0xc0946985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc01c6987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCINITIFADDR                    = 0xc0446984\n\tSIOCSDRVSPEC                      = 0x801c697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8094691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x801c6988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0946986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x400c7458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80047445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80047444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x4010427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x8010427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80104272\n\tBIOCSUDPF                         = 0x80104273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8038720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8038720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0986920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0106926\n\tSIOCGIFDATA                       = 0xc0986985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0306936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc0286987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCINITIFADDR                    = 0xc0706984\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8098691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x80286988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0986986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80087445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80087444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go",
    "content": "// mkerrors.sh -marm\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -marm _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0084277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x400c427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x800c427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80084272\n\tBIOCSUDPF                         = 0x80084273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8030720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8030720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc01c697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0946920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0086926\n\tSIOCGIFDATA                       = 0xc0946985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc01c6987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCINITIFADDR                    = 0xc0446984\n\tSIOCSDRVSPEC                      = 0x801c697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8094691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x801c6988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0946986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x400c7458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x48087446\n\tTIOCPTSNAME                       = 0x48087448\n\tTIOCRCVFRAME                      = 0x80047445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80047444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x4010427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x8010427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80104272\n\tBIOCSUDPF                         = 0x80104273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8038720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8038720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0986920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0106926\n\tSIOCGIFDATA                       = 0xc0986985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0306936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc0286987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCINITIFADDR                    = 0xc0706984\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8098691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x80286988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0986986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80087445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80087444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc008427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x400c426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80084277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x800c426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc100445d\n\tDIOCADDRULE                       = 0xccc84404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xccc8441a\n\tDIOCCLRIFFLAG                     = 0xc024445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0d04412\n\tDIOCCLRSTATUS                     = 0xc0244416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1084460\n\tDIOCGETQUEUE                      = 0xc100445f\n\tDIOCGETQUEUES                     = 0xc100445e\n\tDIOCGETRULE                       = 0xccc84407\n\tDIOCGETRULES                      = 0xccc84406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0084454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0084419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0244457\n\tDIOCKILLSRCNODES                  = 0xc068445b\n\tDIOCKILLSTATES                    = 0xc0d04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc084444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0844450\n\tDIOCRADDADDRS                     = 0xc44c4443\n\tDIOCRADDTABLES                    = 0xc44c443d\n\tDIOCRCLRADDRS                     = 0xc44c4442\n\tDIOCRCLRASTATS                    = 0xc44c4448\n\tDIOCRCLRTABLES                    = 0xc44c443c\n\tDIOCRCLRTSTATS                    = 0xc44c4441\n\tDIOCRDELADDRS                     = 0xc44c4444\n\tDIOCRDELTABLES                    = 0xc44c443e\n\tDIOCRGETADDRS                     = 0xc44c4446\n\tDIOCRGETASTATS                    = 0xc44c4447\n\tDIOCRGETTABLES                    = 0xc44c443f\n\tDIOCRGETTSTATS                    = 0xc44c4440\n\tDIOCRINADEFINE                    = 0xc44c444d\n\tDIOCRSETADDRS                     = 0xc44c4445\n\tDIOCRSETTFLAGS                    = 0xc44c444a\n\tDIOCRTSTADDRS                     = 0xc44c4449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0244459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0244414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc00c4451\n\tDIOCXCOMMIT                       = 0xc00c4452\n\tDIOCXROLLBACK                     = 0xc00c4453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80246987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x805c693c\n\tSIOCBRDGADDL                      = 0x805c6949\n\tSIOCBRDGADDS                      = 0x805c6941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x805c693d\n\tSIOCBRDGDELS                      = 0x805c6942\n\tSIOCBRDGFLUSH                     = 0x805c6948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc05c693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc03c6958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc028694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc05c6942\n\tSIOCBRDGRTS                       = 0xc0186943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x805c6955\n\tSIOCBRDGSIFFLGS                   = 0x805c693f\n\tSIOCBRDGSIFPRIO                   = 0x805c6954\n\tSIOCBRDGSIFPROT                   = 0x805c694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80246989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0086924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc024698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc024698d\n\tSIOCGIFGMEMB                      = 0xc024698a\n\tSIOCGIFGROUP                      = 0xc0246988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0386938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8024698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x400c745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc008427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80084277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc100445d\n\tDIOCADDRULE                       = 0xcce04404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcce0441a\n\tDIOCCLRIFFLAG                     = 0xc024445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0d04412\n\tDIOCCLRSTATUS                     = 0xc0244416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1084460\n\tDIOCGETQUEUE                      = 0xc100445f\n\tDIOCGETQUEUES                     = 0xc100445e\n\tDIOCGETRULE                       = 0xcce04407\n\tDIOCGETRULES                      = 0xcce04406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0084454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0084419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0244457\n\tDIOCKILLSRCNODES                  = 0xc068445b\n\tDIOCKILLSTATES                    = 0xc0d04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc44c4443\n\tDIOCRADDTABLES                    = 0xc44c443d\n\tDIOCRCLRADDRS                     = 0xc44c4442\n\tDIOCRCLRASTATS                    = 0xc44c4448\n\tDIOCRCLRTABLES                    = 0xc44c443c\n\tDIOCRCLRTSTATS                    = 0xc44c4441\n\tDIOCRDELADDRS                     = 0xc44c4444\n\tDIOCRDELTABLES                    = 0xc44c443e\n\tDIOCRGETADDRS                     = 0xc44c4446\n\tDIOCRGETASTATS                    = 0xc44c4447\n\tDIOCRGETTABLES                    = 0xc44c443f\n\tDIOCRGETTSTATS                    = 0xc44c4440\n\tDIOCRINADEFINE                    = 0xc44c444d\n\tDIOCRSETADDRS                     = 0xc44c4445\n\tDIOCRSETTFLAGS                    = 0xc44c444a\n\tDIOCRTSTADDRS                     = 0xc44c4449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0244459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0244414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc00c4451\n\tDIOCXCOMMIT                       = 0xc00c4452\n\tDIOCXROLLBACK                     = 0xc00c4453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80246987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc028694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0186943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80246989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0086924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc024698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc024698d\n\tSIOCGIFGMEMB                      = 0xc024698a\n\tSIOCGIFGROUP                      = 0xc0246988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0386938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8024698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xfffffff\n\tIPV6_FLOWLABEL_MASK               = 0xfffff\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{81920, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xfffffff\n\tIPV6_FLOWLABEL_MASK               = 0xfffff\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && solaris\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_802                        = 0x12\n\tAF_APPLETALK                  = 0x10\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_FILE                       = 0x1\n\tAF_GOSIP                      = 0x16\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x1a\n\tAF_INET_OFFLOAD               = 0x1e\n\tAF_IPX                        = 0x17\n\tAF_KEY                        = 0x1b\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x19\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x20\n\tAF_NBS                        = 0x7\n\tAF_NCA                        = 0x1c\n\tAF_NIT                        = 0x11\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x13\n\tAF_OSINET                     = 0x15\n\tAF_PACKET                     = 0x20\n\tAF_POLICY                     = 0x1d\n\tAF_PUP                        = 0x4\n\tAF_ROUTE                      = 0x18\n\tAF_SNA                        = 0xb\n\tAF_TRILL                      = 0x1f\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tAF_X25                        = 0x14\n\tARPHRD_ARCNET                 = 0x7\n\tARPHRD_ATM                    = 0x10\n\tARPHRD_AX25                   = 0x3\n\tARPHRD_CHAOS                  = 0x5\n\tARPHRD_EETHER                 = 0x2\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FC                     = 0x12\n\tARPHRD_FRAME                  = 0xf\n\tARPHRD_HDLC                   = 0x11\n\tARPHRD_IB                     = 0x20\n\tARPHRD_IEEE802                = 0x6\n\tARPHRD_IPATM                  = 0x13\n\tARPHRD_METRICOM               = 0x17\n\tARPHRD_TUNNEL                 = 0x1f\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB115200                       = 0x12\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB153600                       = 0x13\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB230400                       = 0x14\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB307200                       = 0x15\n\tB38400                        = 0xf\n\tB460800                       = 0x16\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB57600                        = 0x10\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB76800                        = 0x11\n\tB921600                       = 0x17\n\tB9600                         = 0xd\n\tBIOCFLUSH                     = 0x20004268\n\tBIOCGBLEN                     = 0x40044266\n\tBIOCGDLT                      = 0x4004426a\n\tBIOCGDLTLIST                  = -0x3fefbd89\n\tBIOCGDLTLIST32                = -0x3ff7bd89\n\tBIOCGETIF                     = 0x4020426b\n\tBIOCGETLIF                    = 0x4078426b\n\tBIOCGHDRCMPLT                 = 0x40044274\n\tBIOCGRTIMEOUT                 = 0x4010427b\n\tBIOCGRTIMEOUT32               = 0x4008427b\n\tBIOCGSEESENT                  = 0x40044278\n\tBIOCGSTATS                    = 0x4080426f\n\tBIOCGSTATSOLD                 = 0x4008426f\n\tBIOCIMMEDIATE                 = -0x7ffbbd90\n\tBIOCPROMISC                   = 0x20004269\n\tBIOCSBLEN                     = -0x3ffbbd9a\n\tBIOCSDLT                      = -0x7ffbbd8a\n\tBIOCSETF                      = -0x7fefbd99\n\tBIOCSETF32                    = -0x7ff7bd99\n\tBIOCSETIF                     = -0x7fdfbd94\n\tBIOCSETLIF                    = -0x7f87bd94\n\tBIOCSHDRCMPLT                 = -0x7ffbbd8b\n\tBIOCSRTIMEOUT                 = -0x7fefbd86\n\tBIOCSRTIMEOUT32               = -0x7ff7bd86\n\tBIOCSSEESENT                  = -0x7ffbbd87\n\tBIOCSTCPF                     = -0x7fefbd8e\n\tBIOCSUDPF                     = -0x7fefbd8d\n\tBIOCVERSION                   = 0x40044271\n\tBPF_A                         = 0x10\n\tBPF_ABS                       = 0x20\n\tBPF_ADD                       = 0x0\n\tBPF_ALIGNMENT                 = 0x4\n\tBPF_ALU                       = 0x4\n\tBPF_AND                       = 0x50\n\tBPF_B                         = 0x10\n\tBPF_DFLTBUFSIZE               = 0x100000\n\tBPF_DIV                       = 0x30\n\tBPF_H                         = 0x8\n\tBPF_IMM                       = 0x0\n\tBPF_IND                       = 0x40\n\tBPF_JA                        = 0x0\n\tBPF_JEQ                       = 0x10\n\tBPF_JGE                       = 0x30\n\tBPF_JGT                       = 0x20\n\tBPF_JMP                       = 0x5\n\tBPF_JSET                      = 0x40\n\tBPF_K                         = 0x0\n\tBPF_LD                        = 0x0\n\tBPF_LDX                       = 0x1\n\tBPF_LEN                       = 0x80\n\tBPF_LSH                       = 0x60\n\tBPF_MAJOR_VERSION             = 0x1\n\tBPF_MAXBUFSIZE                = 0x1000000\n\tBPF_MAXINSNS                  = 0x200\n\tBPF_MEM                       = 0x60\n\tBPF_MEMWORDS                  = 0x10\n\tBPF_MINBUFSIZE                = 0x20\n\tBPF_MINOR_VERSION             = 0x1\n\tBPF_MISC                      = 0x7\n\tBPF_MSH                       = 0xa0\n\tBPF_MUL                       = 0x20\n\tBPF_NEG                       = 0x80\n\tBPF_OR                        = 0x40\n\tBPF_RELEASE                   = 0x30bb6\n\tBPF_RET                       = 0x6\n\tBPF_RSH                       = 0x70\n\tBPF_ST                        = 0x2\n\tBPF_STX                       = 0x3\n\tBPF_SUB                       = 0x10\n\tBPF_TAX                       = 0x0\n\tBPF_TXA                       = 0x80\n\tBPF_W                         = 0x0\n\tBPF_X                         = 0x8\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x2000\n\tBSDLY                         = 0x2000\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_HIGHRES                 = 0x4\n\tCLOCK_LEVEL                   = 0xa\n\tCLOCK_MONOTONIC               = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID      = 0x5\n\tCLOCK_PROF                    = 0x2\n\tCLOCK_REALTIME                = 0x3\n\tCLOCK_THREAD_CPUTIME_ID       = 0x2\n\tCLOCK_VIRTUAL                 = 0x1\n\tCR0                           = 0x0\n\tCR1                           = 0x200\n\tCR2                           = 0x400\n\tCR3                           = 0x600\n\tCRDLY                         = 0x600\n\tCREAD                         = 0x80\n\tCRTSCTS                       = 0x80000000\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIZE                         = 0x30\n\tCSTART                        = 0x11\n\tCSTATUS                       = 0x14\n\tCSTOP                         = 0x13\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tCSWTCH                        = 0x1a\n\tDIOC                          = 0x6400\n\tDIOCGETB                      = 0x6402\n\tDIOCGETC                      = 0x6401\n\tDIOCGETP                      = 0x6408\n\tDIOCSETE                      = 0x6403\n\tDIOCSETP                      = 0x6409\n\tDLT_AIRONET_HEADER            = 0x78\n\tDLT_APPLE_IP_OVER_IEEE1394    = 0x8a\n\tDLT_ARCNET                    = 0x7\n\tDLT_ARCNET_LINUX              = 0x81\n\tDLT_ATM_CLIP                  = 0x13\n\tDLT_ATM_RFC1483               = 0xb\n\tDLT_AURORA                    = 0x7e\n\tDLT_AX25                      = 0x3\n\tDLT_BACNET_MS_TP              = 0xa5\n\tDLT_CHAOS                     = 0x5\n\tDLT_CISCO_IOS                 = 0x76\n\tDLT_C_HDLC                    = 0x68\n\tDLT_DOCSIS                    = 0x8f\n\tDLT_ECONET                    = 0x73\n\tDLT_EN10MB                    = 0x1\n\tDLT_EN3MB                     = 0x2\n\tDLT_ENC                       = 0x6d\n\tDLT_ERF_ETH                   = 0xaf\n\tDLT_ERF_POS                   = 0xb0\n\tDLT_FDDI                      = 0xa\n\tDLT_FRELAY                    = 0x6b\n\tDLT_GCOM_SERIAL               = 0xad\n\tDLT_GCOM_T1E1                 = 0xac\n\tDLT_GPF_F                     = 0xab\n\tDLT_GPF_T                     = 0xaa\n\tDLT_GPRS_LLC                  = 0xa9\n\tDLT_HDLC                      = 0x10\n\tDLT_HHDLC                     = 0x79\n\tDLT_HIPPI                     = 0xf\n\tDLT_IBM_SN                    = 0x92\n\tDLT_IBM_SP                    = 0x91\n\tDLT_IEEE802                   = 0x6\n\tDLT_IEEE802_11                = 0x69\n\tDLT_IEEE802_11_RADIO          = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS      = 0xa3\n\tDLT_IPNET                     = 0xe2\n\tDLT_IPOIB                     = 0xa2\n\tDLT_IP_OVER_FC                = 0x7a\n\tDLT_JUNIPER_ATM1              = 0x89\n\tDLT_JUNIPER_ATM2              = 0x87\n\tDLT_JUNIPER_CHDLC             = 0xb5\n\tDLT_JUNIPER_ES                = 0x84\n\tDLT_JUNIPER_ETHER             = 0xb2\n\tDLT_JUNIPER_FRELAY            = 0xb4\n\tDLT_JUNIPER_GGSN              = 0x85\n\tDLT_JUNIPER_MFR               = 0x86\n\tDLT_JUNIPER_MLFR              = 0x83\n\tDLT_JUNIPER_MLPPP             = 0x82\n\tDLT_JUNIPER_MONITOR           = 0xa4\n\tDLT_JUNIPER_PIC_PEER          = 0xae\n\tDLT_JUNIPER_PPP               = 0xb3\n\tDLT_JUNIPER_PPPOE             = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM         = 0xa8\n\tDLT_JUNIPER_SERVICES          = 0x88\n\tDLT_LINUX_IRDA                = 0x90\n\tDLT_LINUX_LAPD                = 0xb1\n\tDLT_LINUX_SLL                 = 0x71\n\tDLT_LOOP                      = 0x6c\n\tDLT_LTALK                     = 0x72\n\tDLT_MTP2                      = 0x8c\n\tDLT_MTP2_WITH_PHDR            = 0x8b\n\tDLT_MTP3                      = 0x8d\n\tDLT_NULL                      = 0x0\n\tDLT_PCI_EXP                   = 0x7d\n\tDLT_PFLOG                     = 0x75\n\tDLT_PFSYNC                    = 0x12\n\tDLT_PPP                       = 0x9\n\tDLT_PPP_BSDOS                 = 0xe\n\tDLT_PPP_PPPD                  = 0xa6\n\tDLT_PRISM_HEADER              = 0x77\n\tDLT_PRONET                    = 0x4\n\tDLT_RAW                       = 0xc\n\tDLT_RAWAF_MASK                = 0x2240000\n\tDLT_RIO                       = 0x7c\n\tDLT_SCCP                      = 0x8e\n\tDLT_SLIP                      = 0x8\n\tDLT_SLIP_BSDOS                = 0xd\n\tDLT_SUNATM                    = 0x7b\n\tDLT_SYMANTEC_FIREWALL         = 0x63\n\tDLT_TZSP                      = 0x80\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x200\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x800\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x400\n\tEMPTY_SET                     = 0x0\n\tEMT_CPCOVF                    = 0x1\n\tEQUALITY_CHECK                = 0x0\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tFD_CLOEXEC                    = 0x1\n\tFD_NFDBITS                    = 0x40\n\tFD_SETSIZE                    = 0x10000\n\tFF0                           = 0x0\n\tFF1                           = 0x8000\n\tFFDLY                         = 0x8000\n\tFIORDCHK                      = 0x6603\n\tFLUSHALL                      = 0x1\n\tFLUSHDATA                     = 0x0\n\tFLUSHO                        = 0x2000\n\tF_ALLOCSP                     = 0xa\n\tF_ALLOCSP64                   = 0xa\n\tF_BADFD                       = 0x2e\n\tF_BLKSIZE                     = 0x13\n\tF_BLOCKS                      = 0x12\n\tF_CHKFL                       = 0x8\n\tF_COMPAT                      = 0x8\n\tF_DUP2FD                      = 0x9\n\tF_DUP2FD_CLOEXEC              = 0x24\n\tF_DUPFD                       = 0x0\n\tF_DUPFD_CLOEXEC               = 0x25\n\tF_FLOCK                       = 0x35\n\tF_FLOCK64                     = 0x35\n\tF_FLOCKW                      = 0x36\n\tF_FLOCKW64                    = 0x36\n\tF_FREESP                      = 0xb\n\tF_FREESP64                    = 0xb\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0xe\n\tF_GETLK64                     = 0xe\n\tF_GETOWN                      = 0x17\n\tF_GETXFL                      = 0x2d\n\tF_HASREMOTELOCKS              = 0x1a\n\tF_ISSTREAM                    = 0xd\n\tF_MANDDNY                     = 0x10\n\tF_MDACC                       = 0x20\n\tF_NODNY                       = 0x0\n\tF_NPRIV                       = 0x10\n\tF_OFD_GETLK                   = 0x2f\n\tF_OFD_GETLK64                 = 0x2f\n\tF_OFD_SETLK                   = 0x30\n\tF_OFD_SETLK64                 = 0x30\n\tF_OFD_SETLKW                  = 0x31\n\tF_OFD_SETLKW64                = 0x31\n\tF_PRIV                        = 0xf\n\tF_QUOTACTL                    = 0x11\n\tF_RDACC                       = 0x1\n\tF_RDDNY                       = 0x1\n\tF_RDLCK                       = 0x1\n\tF_REVOKE                      = 0x19\n\tF_RMACC                       = 0x4\n\tF_RMDNY                       = 0x4\n\tF_RWACC                       = 0x3\n\tF_RWDNY                       = 0x3\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0x6\n\tF_SETLK64                     = 0x6\n\tF_SETLK64_NBMAND              = 0x2a\n\tF_SETLKW                      = 0x7\n\tF_SETLKW64                    = 0x7\n\tF_SETLK_NBMAND                = 0x2a\n\tF_SETOWN                      = 0x18\n\tF_SHARE                       = 0x28\n\tF_SHARE_NBMAND                = 0x2b\n\tF_UNLCK                       = 0x3\n\tF_UNLKSYS                     = 0x4\n\tF_UNSHARE                     = 0x29\n\tF_WRACC                       = 0x2\n\tF_WRDNY                       = 0x2\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x1\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x8000\n\tIFF_ADDRCONF                  = 0x80000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_ANYCAST                   = 0x400000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x7f203003b5a\n\tIFF_COS_ENABLED               = 0x200000000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEPRECATED                = 0x40000\n\tIFF_DHCPRUNNING               = 0x4000\n\tIFF_DUPLICATE                 = 0x4000000000\n\tIFF_FAILED                    = 0x10000000\n\tIFF_FIXEDMTU                  = 0x1000000000\n\tIFF_INACTIVE                  = 0x40000000\n\tIFF_INTELLIGENT               = 0x400\n\tIFF_IPMP                      = 0x8000000000\n\tIFF_IPMP_CANTCHANGE           = 0x10000000\n\tIFF_IPMP_INVALID              = 0x1ec200080\n\tIFF_IPV4                      = 0x1000000\n\tIFF_IPV6                      = 0x2000000\n\tIFF_L3PROTECT                 = 0x40000000000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x800\n\tIFF_MULTI_BCAST               = 0x1000\n\tIFF_NOACCEPT                  = 0x4000000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOFAILOVER                = 0x8000000\n\tIFF_NOLINKLOCAL               = 0x20000000000\n\tIFF_NOLOCAL                   = 0x20000\n\tIFF_NONUD                     = 0x200000\n\tIFF_NORTEXCH                  = 0x800000\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_NOXMIT                    = 0x10000\n\tIFF_OFFLINE                   = 0x80000000\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PREFERRED                 = 0x400000000\n\tIFF_PRIVATE                   = 0x8000\n\tIFF_PROMISC                   = 0x100\n\tIFF_ROUTER                    = 0x100000\n\tIFF_RUNNING                   = 0x40\n\tIFF_STANDBY                   = 0x20000000\n\tIFF_TEMPORARY                 = 0x800000000\n\tIFF_UNNUMBERED                = 0x2000\n\tIFF_UP                        = 0x1\n\tIFF_VIRTUAL                   = 0x2000000000\n\tIFF_VRRP                      = 0x10000000000\n\tIFF_XRESOLV                   = 0x100000000\n\tIFNAMSIZ                      = 0x10\n\tIFT_1822                      = 0x2\n\tIFT_6TO4                      = 0xca\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_IPV4                      = 0xc8\n\tIFT_IPV6                      = 0xc9\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x2000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_AUTOCONF_MASK              = 0xffff0000\n\tIN_AUTOCONF_NET               = 0xa9fe0000\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_CLASSE_NET                 = 0xffffffff\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_PRIVATE12_MASK             = 0xfff00000\n\tIN_PRIVATE12_NET              = 0xac100000\n\tIN_PRIVATE16_MASK             = 0xffff0000\n\tIN_PRIVATE16_NET              = 0xc0a80000\n\tIN_PRIVATE8_MASK              = 0xff000000\n\tIN_PRIVATE8_NET               = 0xa000000\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_ENCAP                 = 0x4\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_HELLO                 = 0x3f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_ND                    = 0x4d\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_OSPF                  = 0x59\n\tIPPROTO_PIM                   = 0x67\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADD_MEMBERSHIP           = 0x9\n\tIPV6_BOUND_IF                 = 0x41\n\tIPV6_CHECKSUM                 = 0x18\n\tIPV6_DONTFRAG                 = 0x21\n\tIPV6_DROP_MEMBERSHIP          = 0xa\n\tIPV6_DSTOPTS                  = 0xf\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffff0f00\n\tIPV6_FLOWINFO_TCLASS          = 0xf00f\n\tIPV6_HOPLIMIT                 = 0xc\n\tIPV6_HOPOPTS                  = 0xe\n\tIPV6_JOIN_GROUP               = 0x9\n\tIPV6_LEAVE_GROUP              = 0xa\n\tIPV6_MULTICAST_HOPS           = 0x7\n\tIPV6_MULTICAST_IF             = 0x6\n\tIPV6_MULTICAST_LOOP           = 0x8\n\tIPV6_NEXTHOP                  = 0xd\n\tIPV6_PAD1_OPT                 = 0x0\n\tIPV6_PATHMTU                  = 0x25\n\tIPV6_PKTINFO                  = 0xb\n\tIPV6_PREFER_SRC_CGA           = 0x20\n\tIPV6_PREFER_SRC_CGADEFAULT    = 0x10\n\tIPV6_PREFER_SRC_CGAMASK       = 0x30\n\tIPV6_PREFER_SRC_COA           = 0x2\n\tIPV6_PREFER_SRC_DEFAULT       = 0x15\n\tIPV6_PREFER_SRC_HOME          = 0x1\n\tIPV6_PREFER_SRC_MASK          = 0x3f\n\tIPV6_PREFER_SRC_MIPDEFAULT    = 0x1\n\tIPV6_PREFER_SRC_MIPMASK       = 0x3\n\tIPV6_PREFER_SRC_NONCGA        = 0x10\n\tIPV6_PREFER_SRC_PUBLIC        = 0x4\n\tIPV6_PREFER_SRC_TMP           = 0x8\n\tIPV6_PREFER_SRC_TMPDEFAULT    = 0x4\n\tIPV6_PREFER_SRC_TMPMASK       = 0xc\n\tIPV6_RECVDSTOPTS              = 0x28\n\tIPV6_RECVHOPLIMIT             = 0x13\n\tIPV6_RECVHOPOPTS              = 0x14\n\tIPV6_RECVPATHMTU              = 0x24\n\tIPV6_RECVPKTINFO              = 0x12\n\tIPV6_RECVRTHDR                = 0x16\n\tIPV6_RECVRTHDRDSTOPTS         = 0x17\n\tIPV6_RECVTCLASS               = 0x19\n\tIPV6_RTHDR                    = 0x10\n\tIPV6_RTHDRDSTOPTS             = 0x11\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_SEC_OPT                  = 0x22\n\tIPV6_SRC_PREFERENCES          = 0x23\n\tIPV6_TCLASS                   = 0x26\n\tIPV6_UNICAST_HOPS             = 0x5\n\tIPV6_UNSPEC_SRC               = 0x42\n\tIPV6_USE_MIN_MTU              = 0x20\n\tIPV6_V6ONLY                   = 0x27\n\tIP_ADD_MEMBERSHIP             = 0x13\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x17\n\tIP_BLOCK_SOURCE               = 0x15\n\tIP_BOUND_IF                   = 0x41\n\tIP_BROADCAST                  = 0x106\n\tIP_BROADCAST_TTL              = 0x43\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPINIT_IF                = 0x45\n\tIP_DONTFRAG                   = 0x1b\n\tIP_DONTROUTE                  = 0x105\n\tIP_DROP_MEMBERSHIP            = 0x14\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x18\n\tIP_HDRINCL                    = 0x2\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_IF               = 0x10\n\tIP_MULTICAST_LOOP             = 0x12\n\tIP_MULTICAST_TTL              = 0x11\n\tIP_NEXTHOP                    = 0x19\n\tIP_OPTIONS                    = 0x1\n\tIP_PKTINFO                    = 0x1a\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x9\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVPKTINFO                = 0x1a\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVSLLA                   = 0xa\n\tIP_RECVTOS                    = 0xc\n\tIP_RECVTTL                    = 0xb\n\tIP_RETOPTS                    = 0x8\n\tIP_REUSEADDR                  = 0x104\n\tIP_SEC_OPT                    = 0x22\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x16\n\tIP_UNSPEC_SRC                 = 0x42\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x200\n\tIXANY                         = 0x800\n\tIXOFF                         = 0x1000\n\tIXON                          = 0x400\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_ACCESS_DEFAULT           = 0x6\n\tMADV_ACCESS_LWP               = 0x7\n\tMADV_ACCESS_MANY              = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_FREE                     = 0x5\n\tMADV_NORMAL                   = 0x0\n\tMADV_PURGE                    = 0x9\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_WILLNEED                 = 0x3\n\tMAP_32BIT                     = 0x80\n\tMAP_ALIGN                     = 0x200\n\tMAP_ANON                      = 0x100\n\tMAP_ANONYMOUS                 = 0x100\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x10\n\tMAP_INITDATA                  = 0x800\n\tMAP_NORESERVE                 = 0x40\n\tMAP_PRIVATE                   = 0x2\n\tMAP_RENAME                    = 0x20\n\tMAP_SHARED                    = 0x1\n\tMAP_TEXT                      = 0x400\n\tMAP_TYPE                      = 0xf\n\tMCAST_BLOCK_SOURCE            = 0x2b\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x29\n\tMCAST_JOIN_SOURCE_GROUP       = 0x2d\n\tMCAST_LEAVE_GROUP             = 0x2a\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x2e\n\tMCAST_UNBLOCK_SOURCE          = 0x2c\n\tMCL_CURRENT                   = 0x1\n\tMCL_FUTURE                    = 0x2\n\tMSG_CTRUNC                    = 0x10\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_DONTWAIT                  = 0x80\n\tMSG_DUPCTRL                   = 0x800\n\tMSG_EOR                       = 0x8\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_NOSIGNAL                  = 0x200\n\tMSG_NOTIFICATION              = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x20\n\tMSG_WAITALL                   = 0x40\n\tMSG_XPG4_2                    = 0x8000\n\tMS_ASYNC                      = 0x1\n\tMS_INVALIDATE                 = 0x2\n\tMS_OLDSYNC                    = 0x0\n\tMS_SYNC                       = 0x4\n\tM_FLUSH                       = 0x86\n\tNAME_MAX                      = 0xff\n\tNEWDEV                        = 0x1\n\tNFDBITS                       = 0x40\n\tNL0                           = 0x0\n\tNL1                           = 0x100\n\tNLDLY                         = 0x100\n\tNOFLSH                        = 0x80\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tOLDDEV                        = 0x0\n\tONBITSMAJOR                   = 0x7\n\tONBITSMINOR                   = 0x8\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tOPENFAIL                      = -0x1\n\tOPOST                         = 0x1\n\tO_ACCMODE                     = 0x600003\n\tO_APPEND                      = 0x8\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DIRECT                      = 0x2000000\n\tO_DIRECTORY                   = 0x1000000\n\tO_DSYNC                       = 0x40\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x400000\n\tO_LARGEFILE                   = 0x2000\n\tO_NDELAY                      = 0x4\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x20000\n\tO_NOLINKS                     = 0x40000\n\tO_NONBLOCK                    = 0x80\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSYNC                       = 0x8000\n\tO_SEARCH                      = 0x200000\n\tO_SIOCGIFCONF                 = -0x3ff796ec\n\tO_SIOCGLIFCONF                = -0x3fef9688\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_WRONLY                      = 0x1\n\tO_XATTR                       = 0x4000\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x4000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0xfffffffffffffffd\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x9\n\tRTAX_NETMASK                  = 0x2\n\tRTAX_SRC                      = 0x8\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTA_NUMBITS                   = 0x9\n\tRTA_SRC                       = 0x100\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_INDIRECT                  = 0x40000\n\tRTF_KERNEL                    = 0x80000\n\tRTF_LLINFO                    = 0x400\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTIRT                   = 0x10000\n\tRTF_PRIVATE                   = 0x2000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_REJECT                    = 0x8\n\tRTF_SETSRC                    = 0x20000\n\tRTF_STATIC                    = 0x800\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTF_ZONE                      = 0x100000\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_CHGADDR                   = 0xf\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_FREEADDR                  = 0x10\n\tRTM_GET                       = 0x4\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_VERSION                   = 0x3\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRT_AWARE                      = 0x1\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tSCM_RIGHTS                    = 0x1010\n\tSCM_TIMESTAMP                 = 0x1013\n\tSCM_UCRED                     = 0x1012\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIG2STR_MAX                   = 0x20\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDRT                     = -0x7fcf8df6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fdb96e0\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELRT                     = -0x7fcf8df5\n\tSIOCDXARP                     = -0x7fff9658\n\tSIOCGARP                      = -0x3fdb96e1\n\tSIOCGDSTINFO                  = -0x3fff965c\n\tSIOCGENADDR                   = -0x3fdf96ab\n\tSIOCGENPSTATS                 = -0x3fdf96c7\n\tSIOCGETLSGCNT                 = -0x3fef8deb\n\tSIOCGETNAME                   = 0x40107334\n\tSIOCGETPEER                   = 0x40107335\n\tSIOCGETPROP                   = -0x3fff8f44\n\tSIOCGETSGCNT                  = -0x3feb8deb\n\tSIOCGETSYNC                   = -0x3fdf96d3\n\tSIOCGETVIFCNT                 = -0x3feb8dec\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fdf96f3\n\tSIOCGIFBRDADDR                = -0x3fdf96e9\n\tSIOCGIFCONF                   = -0x3ff796a4\n\tSIOCGIFDSTADDR                = -0x3fdf96f1\n\tSIOCGIFFLAGS                  = -0x3fdf96ef\n\tSIOCGIFHWADDR                 = -0x3fdf9647\n\tSIOCGIFINDEX                  = -0x3fdf96a6\n\tSIOCGIFMEM                    = -0x3fdf96ed\n\tSIOCGIFMETRIC                 = -0x3fdf96e5\n\tSIOCGIFMTU                    = -0x3fdf96ea\n\tSIOCGIFMUXID                  = -0x3fdf96a8\n\tSIOCGIFNETMASK                = -0x3fdf96e7\n\tSIOCGIFNUM                    = 0x40046957\n\tSIOCGIP6ADDRPOLICY            = -0x3fff965e\n\tSIOCGIPMSFILTER               = -0x3ffb964c\n\tSIOCGLIFADDR                  = -0x3f87968f\n\tSIOCGLIFBINDING               = -0x3f879666\n\tSIOCGLIFBRDADDR               = -0x3f879685\n\tSIOCGLIFCONF                  = -0x3fef965b\n\tSIOCGLIFDADSTATE              = -0x3f879642\n\tSIOCGLIFDSTADDR               = -0x3f87968d\n\tSIOCGLIFFLAGS                 = -0x3f87968b\n\tSIOCGLIFGROUPINFO             = -0x3f4b9663\n\tSIOCGLIFGROUPNAME             = -0x3f879664\n\tSIOCGLIFHWADDR                = -0x3f879640\n\tSIOCGLIFINDEX                 = -0x3f87967b\n\tSIOCGLIFLNKINFO               = -0x3f879674\n\tSIOCGLIFMETRIC                = -0x3f879681\n\tSIOCGLIFMTU                   = -0x3f879686\n\tSIOCGLIFMUXID                 = -0x3f87967d\n\tSIOCGLIFNETMASK               = -0x3f879683\n\tSIOCGLIFNUM                   = -0x3ff3967e\n\tSIOCGLIFSRCOF                 = -0x3fef964f\n\tSIOCGLIFSUBNET                = -0x3f879676\n\tSIOCGLIFTOKEN                 = -0x3f879678\n\tSIOCGLIFUSESRC                = -0x3f879651\n\tSIOCGLIFZONE                  = -0x3f879656\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGMSFILTER                 = -0x3ffb964e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSTAMP                    = -0x3fef9646\n\tSIOCGXARP                     = -0x3fff9659\n\tSIOCIFDETACH                  = -0x7fdf96c8\n\tSIOCILB                       = -0x3ffb9645\n\tSIOCLIFADDIF                  = -0x3f879691\n\tSIOCLIFDELND                  = -0x7f879673\n\tSIOCLIFGETND                  = -0x3f879672\n\tSIOCLIFREMOVEIF               = -0x7f879692\n\tSIOCLIFSETND                  = -0x7f879671\n\tSIOCLOWER                     = -0x7fdf96d7\n\tSIOCSARP                      = -0x7fdb96e2\n\tSIOCSCTPGOPT                  = -0x3fef9653\n\tSIOCSCTPPEELOFF               = -0x3ffb9652\n\tSIOCSCTPSOPT                  = -0x7fef9654\n\tSIOCSENABLESDP                = -0x3ffb9649\n\tSIOCSETPROP                   = -0x7ffb8f43\n\tSIOCSETSYNC                   = -0x7fdf96d4\n\tSIOCSHIWAT                    = -0x7ffb8d00\n\tSIOCSIFADDR                   = -0x7fdf96f4\n\tSIOCSIFBRDADDR                = -0x7fdf96e8\n\tSIOCSIFDSTADDR                = -0x7fdf96f2\n\tSIOCSIFFLAGS                  = -0x7fdf96f0\n\tSIOCSIFINDEX                  = -0x7fdf96a5\n\tSIOCSIFMEM                    = -0x7fdf96ee\n\tSIOCSIFMETRIC                 = -0x7fdf96e4\n\tSIOCSIFMTU                    = -0x7fdf96eb\n\tSIOCSIFMUXID                  = -0x7fdf96a7\n\tSIOCSIFNAME                   = -0x7fdf96b7\n\tSIOCSIFNETMASK                = -0x7fdf96e6\n\tSIOCSIP6ADDRPOLICY            = -0x7fff965d\n\tSIOCSIPMSFILTER               = -0x7ffb964b\n\tSIOCSLGETREQ                  = -0x3fdf96b9\n\tSIOCSLIFADDR                  = -0x7f879690\n\tSIOCSLIFBRDADDR               = -0x7f879684\n\tSIOCSLIFDSTADDR               = -0x7f87968e\n\tSIOCSLIFFLAGS                 = -0x7f87968c\n\tSIOCSLIFGROUPNAME             = -0x7f879665\n\tSIOCSLIFINDEX                 = -0x7f87967a\n\tSIOCSLIFLNKINFO               = -0x7f879675\n\tSIOCSLIFMETRIC                = -0x7f879680\n\tSIOCSLIFMTU                   = -0x7f879687\n\tSIOCSLIFMUXID                 = -0x7f87967c\n\tSIOCSLIFNAME                  = -0x3f87967f\n\tSIOCSLIFNETMASK               = -0x7f879682\n\tSIOCSLIFPREFIX                = -0x3f879641\n\tSIOCSLIFSUBNET                = -0x7f879677\n\tSIOCSLIFTOKEN                 = -0x7f879679\n\tSIOCSLIFUSESRC                = -0x7f879650\n\tSIOCSLIFZONE                  = -0x7f879655\n\tSIOCSLOWAT                    = -0x7ffb8cfe\n\tSIOCSLSTAT                    = -0x7fdf96b8\n\tSIOCSMSFILTER                 = -0x7ffb964d\n\tSIOCSPGRP                     = -0x7ffb8cf8\n\tSIOCSPROMISC                  = -0x7ffb96d0\n\tSIOCSQPTR                     = -0x3ffb9648\n\tSIOCSSDSTATS                  = -0x3fdf96d2\n\tSIOCSSESTATS                  = -0x3fdf96d1\n\tSIOCSXARP                     = -0x7fff965a\n\tSIOCTMYADDR                   = -0x3ff79670\n\tSIOCTMYSITE                   = -0x3ff7966e\n\tSIOCTONLINK                   = -0x3ff7966f\n\tSIOCUPPER                     = -0x7fdf96d8\n\tSIOCX25RCV                    = -0x3fdf96c4\n\tSIOCX25TBL                    = -0x3fdf96c3\n\tSIOCX25XMT                    = -0x3fdf96c5\n\tSIOCXPROTO                    = 0x20007337\n\tSOCK_CLOEXEC                  = 0x80000\n\tSOCK_DGRAM                    = 0x1\n\tSOCK_NDELAY                   = 0x200000\n\tSOCK_NONBLOCK                 = 0x100000\n\tSOCK_RAW                      = 0x4\n\tSOCK_RDM                      = 0x5\n\tSOCK_SEQPACKET                = 0x6\n\tSOCK_STREAM                   = 0x2\n\tSOCK_TYPE_MASK                = 0xffff\n\tSOL_FILTER                    = 0xfffc\n\tSOL_PACKET                    = 0xfffd\n\tSOL_ROUTE                     = 0xfffe\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x80\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_ALL                        = 0x3f\n\tSO_ALLZONES                   = 0x1014\n\tSO_ANON_MLP                   = 0x100a\n\tSO_ATTACH_FILTER              = 0x40000001\n\tSO_BAND                       = 0x4000\n\tSO_BROADCAST                  = 0x20\n\tSO_COPYOPT                    = 0x80000\n\tSO_DEBUG                      = 0x1\n\tSO_DELIM                      = 0x8000\n\tSO_DETACH_FILTER              = 0x40000002\n\tSO_DGRAM_ERRIND               = 0x200\n\tSO_DOMAIN                     = 0x100c\n\tSO_DONTLINGER                 = -0x81\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROPT                     = 0x40000\n\tSO_ERROR                      = 0x1007\n\tSO_EXCLBIND                   = 0x1015\n\tSO_HIWAT                      = 0x10\n\tSO_ISNTTY                     = 0x800\n\tSO_ISTTY                      = 0x400\n\tSO_KEEPALIVE                  = 0x8\n\tSO_LINGER                     = 0x80\n\tSO_LOWAT                      = 0x20\n\tSO_MAC_EXEMPT                 = 0x100b\n\tSO_MAC_IMPLICIT               = 0x1016\n\tSO_MAXBLK                     = 0x100000\n\tSO_MAXPSZ                     = 0x8\n\tSO_MINPSZ                     = 0x4\n\tSO_MREADOFF                   = 0x80\n\tSO_MREADON                    = 0x40\n\tSO_NDELOFF                    = 0x200\n\tSO_NDELON                     = 0x100\n\tSO_NODELIM                    = 0x10000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PROTOTYPE                  = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVPSH                     = 0x100d\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_READOPT                    = 0x1\n\tSO_RECVUCRED                  = 0x400\n\tSO_REUSEADDR                  = 0x4\n\tSO_SECATTR                    = 0x1011\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_STRHOLD                    = 0x20000\n\tSO_TAIL                       = 0x200000\n\tSO_TIMESTAMP                  = 0x1013\n\tSO_TONSTOP                    = 0x2000\n\tSO_TOSTOP                     = 0x1000\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_VRRP                       = 0x1017\n\tSO_WROFF                      = 0x2\n\tS_ENFMT                       = 0x400\n\tS_IAMB                        = 0x1ff\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFDOOR                      = 0xd000\n\tS_IFIFO                       = 0x1000\n\tS_IFLNK                       = 0xa000\n\tS_IFMT                        = 0xf000\n\tS_IFNAM                       = 0x5000\n\tS_IFPORT                      = 0xe000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_INSEM                       = 0x1\n\tS_INSHD                       = 0x2\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXGRP                       = 0x8\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x800\n\tTAB2                          = 0x1000\n\tTAB3                          = 0x1800\n\tTABDLY                        = 0x1800\n\tTCFLSH                        = 0x5407\n\tTCGETA                        = 0x5401\n\tTCGETS                        = 0x540d\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_ABORT_THRESHOLD           = 0x11\n\tTCP_ANONPRIVBIND              = 0x20\n\tTCP_CONGESTION                = 0x25\n\tTCP_CONN_ABORT_THRESHOLD      = 0x13\n\tTCP_CONN_NOTIFY_THRESHOLD     = 0x12\n\tTCP_CORK                      = 0x18\n\tTCP_EXCLBIND                  = 0x21\n\tTCP_INIT_CWND                 = 0x15\n\tTCP_KEEPALIVE                 = 0x8\n\tTCP_KEEPALIVE_ABORT_THRESHOLD = 0x17\n\tTCP_KEEPALIVE_THRESHOLD       = 0x16\n\tTCP_KEEPCNT                   = 0x23\n\tTCP_KEEPIDLE                  = 0x22\n\tTCP_KEEPINTVL                 = 0x24\n\tTCP_LINGER2                   = 0x1c\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MSS                       = 0x218\n\tTCP_NODELAY                   = 0x1\n\tTCP_NOTIFY_THRESHOLD          = 0x10\n\tTCP_RECVDSTADDR               = 0x14\n\tTCP_RTO_INITIAL               = 0x19\n\tTCP_RTO_MAX                   = 0x1b\n\tTCP_RTO_MIN                   = 0x1a\n\tTCSAFLUSH                     = 0x5410\n\tTCSBRK                        = 0x5405\n\tTCSETA                        = 0x5402\n\tTCSETAF                       = 0x5404\n\tTCSETAW                       = 0x5403\n\tTCSETS                        = 0x540e\n\tTCSETSF                       = 0x5410\n\tTCSETSW                       = 0x540f\n\tTCXONC                        = 0x5406\n\tTIMER_ABSTIME                 = 0x1\n\tTIMER_RELTIME                 = 0x0\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x747a\n\tTIOCCDTR                      = 0x7478\n\tTIOCCILOOP                    = 0x746c\n\tTIOCEXCL                      = 0x740d\n\tTIOCFLUSH                     = 0x7410\n\tTIOCGETC                      = 0x7412\n\tTIOCGETD                      = 0x7400\n\tTIOCGETP                      = 0x7408\n\tTIOCGLTC                      = 0x7474\n\tTIOCGPGRP                     = 0x7414\n\tTIOCGPPS                      = 0x547d\n\tTIOCGPPSEV                    = 0x547f\n\tTIOCGSID                      = 0x7416\n\tTIOCGSOFTCAR                  = 0x5469\n\tTIOCGWINSZ                    = 0x5468\n\tTIOCHPCL                      = 0x7402\n\tTIOCKBOF                      = 0x5409\n\tTIOCKBON                      = 0x5408\n\tTIOCLBIC                      = 0x747e\n\tTIOCLBIS                      = 0x747f\n\tTIOCLGET                      = 0x747c\n\tTIOCLSET                      = 0x747d\n\tTIOCMBIC                      = 0x741c\n\tTIOCMBIS                      = 0x741b\n\tTIOCMGET                      = 0x741d\n\tTIOCMSET                      = 0x741a\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x7471\n\tTIOCNXCL                      = 0x740e\n\tTIOCOUTQ                      = 0x7473\n\tTIOCREMOTE                    = 0x741e\n\tTIOCSBRK                      = 0x747b\n\tTIOCSCTTY                     = 0x7484\n\tTIOCSDTR                      = 0x7479\n\tTIOCSETC                      = 0x7411\n\tTIOCSETD                      = 0x7401\n\tTIOCSETN                      = 0x740a\n\tTIOCSETP                      = 0x7409\n\tTIOCSIGNAL                    = 0x741f\n\tTIOCSILOOP                    = 0x746d\n\tTIOCSLTC                      = 0x7475\n\tTIOCSPGRP                     = 0x7415\n\tTIOCSPPS                      = 0x547e\n\tTIOCSSOFTCAR                  = 0x546a\n\tTIOCSTART                     = 0x746e\n\tTIOCSTI                       = 0x7417\n\tTIOCSTOP                      = 0x746f\n\tTIOCSWINSZ                    = 0x5467\n\tTOSTOP                        = 0x100\n\tUTIME_NOW                     = -0x1\n\tUTIME_OMIT                    = -0x2\n\tVCEOF                         = 0x8\n\tVCEOL                         = 0x9\n\tVDISCARD                      = 0xd\n\tVDSUSP                        = 0xb\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVERASE2                       = 0x11\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xf\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xc\n\tVSTART                        = 0x8\n\tVSTATUS                       = 0x10\n\tVSTOP                         = 0x9\n\tVSUSP                         = 0xa\n\tVSWTCH                        = 0x7\n\tVT0                           = 0x0\n\tVT1                           = 0x4000\n\tVTDLY                         = 0x4000\n\tVTIME                         = 0x5\n\tVWERASE                       = 0xe\n\tWCONTFLG                      = 0xffff\n\tWCONTINUED                    = 0x8\n\tWCOREFLG                      = 0x80\n\tWEXITED                       = 0x1\n\tWNOHANG                       = 0x40\n\tWNOWAIT                       = 0x80\n\tWOPTMASK                      = 0xcf\n\tWRAP                          = 0x20000\n\tWSIGMASK                      = 0x7f\n\tWSTOPFLG                      = 0x7f\n\tWSTOPPED                      = 0x4\n\tWTRAPPED                      = 0x2\n\tWUNTRACED                     = 0x4\n\tXCASE                         = 0x4\n\tXTABS                         = 0x1800\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x39)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x2f)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x31)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOCKUNMAPPED   = syscall.Errno(0x48)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTACTIVE      = syscall.Errno(0x49)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTRECOVERABLE = syscall.Errno(0x3b)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x30)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0x3a)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMOTE         = syscall.Errno(0x42)\n\tERESTART        = syscall.Errno(0x5b)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGABRT    = syscall.Signal(0x6)\n\tSIGALRM    = syscall.Signal(0xe)\n\tSIGBUS     = syscall.Signal(0xa)\n\tSIGCANCEL  = syscall.Signal(0x24)\n\tSIGCHLD    = syscall.Signal(0x12)\n\tSIGCLD     = syscall.Signal(0x12)\n\tSIGCONT    = syscall.Signal(0x19)\n\tSIGEMT     = syscall.Signal(0x7)\n\tSIGFPE     = syscall.Signal(0x8)\n\tSIGFREEZE  = syscall.Signal(0x22)\n\tSIGHUP     = syscall.Signal(0x1)\n\tSIGILL     = syscall.Signal(0x4)\n\tSIGINFO    = syscall.Signal(0x29)\n\tSIGINT     = syscall.Signal(0x2)\n\tSIGIO      = syscall.Signal(0x16)\n\tSIGIOT     = syscall.Signal(0x6)\n\tSIGJVM1    = syscall.Signal(0x27)\n\tSIGJVM2    = syscall.Signal(0x28)\n\tSIGKILL    = syscall.Signal(0x9)\n\tSIGLOST    = syscall.Signal(0x25)\n\tSIGLWP     = syscall.Signal(0x21)\n\tSIGPIPE    = syscall.Signal(0xd)\n\tSIGPOLL    = syscall.Signal(0x16)\n\tSIGPROF    = syscall.Signal(0x1d)\n\tSIGPWR     = syscall.Signal(0x13)\n\tSIGQUIT    = syscall.Signal(0x3)\n\tSIGSEGV    = syscall.Signal(0xb)\n\tSIGSTOP    = syscall.Signal(0x17)\n\tSIGSYS     = syscall.Signal(0xc)\n\tSIGTERM    = syscall.Signal(0xf)\n\tSIGTHAW    = syscall.Signal(0x23)\n\tSIGTRAP    = syscall.Signal(0x5)\n\tSIGTSTP    = syscall.Signal(0x18)\n\tSIGTTIN    = syscall.Signal(0x1a)\n\tSIGTTOU    = syscall.Signal(0x1b)\n\tSIGURG     = syscall.Signal(0x15)\n\tSIGUSR1    = syscall.Signal(0x10)\n\tSIGUSR2    = syscall.Signal(0x11)\n\tSIGVTALRM  = syscall.Signal(0x1c)\n\tSIGWAITING = syscall.Signal(0x20)\n\tSIGWINCH   = syscall.Signal(0x14)\n\tSIGXCPU    = syscall.Signal(0x1e)\n\tSIGXFSZ    = syscall.Signal(0x1f)\n\tSIGXRES    = syscall.Signal(0x26)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock situation detected/avoided\"},\n\t{46, \"ENOLCK\", \"no record locks available\"},\n\t{47, \"ECANCELED\", \"operation canceled\"},\n\t{48, \"ENOTSUP\", \"operation not supported\"},\n\t{49, \"EDQUOT\", \"disc quota exceeded\"},\n\t{50, \"EBADE\", \"bad exchange descriptor\"},\n\t{51, \"EBADR\", \"bad request descriptor\"},\n\t{52, \"EXFULL\", \"message tables full\"},\n\t{53, \"ENOANO\", \"anode table overflow\"},\n\t{54, \"EBADRQC\", \"bad request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock\"},\n\t{57, \"EBFONT\", \"bad font file format\"},\n\t{58, \"EOWNERDEAD\", \"owner of the lock died\"},\n\t{59, \"ENOTRECOVERABLE\", \"lock is not recoverable\"},\n\t{60, \"ENOSTR\", \"not a stream device\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of stream resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"ELOCKUNMAPPED\", \"locked lock was unmapped \"},\n\t{73, \"ENOTACTIVE\", \"facility is not active\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"not a data message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in more shared libraries than system limit\"},\n\t{87, \"ELIBEXEC\", \"can not exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"illegal byte sequence\"},\n\t{89, \"ENOSYS\", \"operation not applicable\"},\n\t{90, \"ELOOP\", \"number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS\"},\n\t{91, \"ERESTART\", \"error 91\"},\n\t{92, \"ESTRPIPE\", \"error 92\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"option not supported by protocol\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"EOPNOTSUPP\", \"operation not supported on transport endpoint\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection because of reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after socket shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale NFS file handle\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal Instruction\"},\n\t{5, \"SIGTRAP\", \"trace/Breakpoint Trap\"},\n\t{6, \"SIGABRT\", \"abort\"},\n\t{7, \"SIGEMT\", \"emulation Trap\"},\n\t{8, \"SIGFPE\", \"arithmetic Exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus Error\"},\n\t{11, \"SIGSEGV\", \"segmentation Fault\"},\n\t{12, \"SIGSYS\", \"bad System Call\"},\n\t{13, \"SIGPIPE\", \"broken Pipe\"},\n\t{14, \"SIGALRM\", \"alarm Clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user Signal 1\"},\n\t{17, \"SIGUSR2\", \"user Signal 2\"},\n\t{18, \"SIGCHLD\", \"child Status Changed\"},\n\t{19, \"SIGPWR\", \"power-Fail/Restart\"},\n\t{20, \"SIGWINCH\", \"window Size Change\"},\n\t{21, \"SIGURG\", \"urgent Socket Condition\"},\n\t{22, \"SIGIO\", \"pollable Event\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped (user)\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual Timer Expired\"},\n\t{29, \"SIGPROF\", \"profiling Timer Expired\"},\n\t{30, \"SIGXCPU\", \"cpu Limit Exceeded\"},\n\t{31, \"SIGXFSZ\", \"file Size Limit Exceeded\"},\n\t{32, \"SIGWAITING\", \"no runnable lwp\"},\n\t{33, \"SIGLWP\", \"inter-lwp signal\"},\n\t{34, \"SIGFREEZE\", \"checkpoint Freeze\"},\n\t{35, \"SIGTHAW\", \"checkpoint Thaw\"},\n\t{36, \"SIGCANCEL\", \"thread Cancellation\"},\n\t{37, \"SIGLOST\", \"resource Lost\"},\n\t{38, \"SIGXRES\", \"resource Control Exceeded\"},\n\t{39, \"SIGJVM1\", \"reserved for JVM 1\"},\n\t{40, \"SIGJVM2\", \"reserved for JVM 2\"},\n\t{41, \"SIGINFO\", \"information Request\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Hand edited based on zerrors_linux_s390x.go\n// TODO: auto-generate.\n\npackage unix\n\nconst (\n\tBRKINT                   = 0x0001\n\tCLOCAL                   = 0x1\n\tCLOCK_MONOTONIC          = 0x1\n\tCLOCK_PROCESS_CPUTIME_ID = 0x2\n\tCLOCK_REALTIME           = 0x0\n\tCLOCK_THREAD_CPUTIME_ID  = 0x3\n\tCLONE_NEWIPC             = 0x08000000\n\tCLONE_NEWNET             = 0x40000000\n\tCLONE_NEWNS              = 0x00020000\n\tCLONE_NEWPID             = 0x20000000\n\tCLONE_NEWUTS             = 0x04000000\n\tCLONE_PARENT             = 0x00008000\n\tCS8                      = 0x0030\n\tCSIZE                    = 0x0030\n\tECHO                     = 0x00000008\n\tECHONL                   = 0x00000001\n\tEFD_SEMAPHORE            = 0x00002000\n\tEFD_CLOEXEC              = 0x00001000\n\tEFD_NONBLOCK             = 0x00000004\n\tEPOLL_CLOEXEC            = 0x00001000\n\tEPOLL_CTL_ADD            = 0\n\tEPOLL_CTL_MOD            = 1\n\tEPOLL_CTL_DEL            = 2\n\tEPOLLRDNORM              = 0x0001\n\tEPOLLRDBAND              = 0x0002\n\tEPOLLIN                  = 0x0003\n\tEPOLLOUT                 = 0x0004\n\tEPOLLWRBAND              = 0x0008\n\tEPOLLPRI                 = 0x0010\n\tEPOLLERR                 = 0x0020\n\tEPOLLHUP                 = 0x0040\n\tEPOLLEXCLUSIVE           = 0x20000000\n\tEPOLLONESHOT             = 0x40000000\n\tFD_CLOEXEC               = 0x01\n\tFD_CLOFORK               = 0x02\n\tFD_SETSIZE               = 0x800\n\tFNDELAY                  = 0x04\n\tF_CLOSFD                 = 9\n\tF_CONTROL_CVT            = 13\n\tF_DUPFD                  = 0\n\tF_DUPFD2                 = 8\n\tF_GETFD                  = 1\n\tF_GETFL                  = 259\n\tF_GETLK                  = 5\n\tF_GETOWN                 = 10\n\tF_OK                     = 0x0\n\tF_RDLCK                  = 1\n\tF_SETFD                  = 2\n\tF_SETFL                  = 4\n\tF_SETLK                  = 6\n\tF_SETLKW                 = 7\n\tF_SETOWN                 = 11\n\tF_SETTAG                 = 12\n\tF_UNLCK                  = 3\n\tF_WRLCK                  = 2\n\tFSTYPE_ZFS               = 0xe9 //\"Z\"\n\tFSTYPE_HFS               = 0xc8 //\"H\"\n\tFSTYPE_NFS               = 0xd5 //\"N\"\n\tFSTYPE_TFS               = 0xe3 //\"T\"\n\tFSTYPE_AUTOMOUNT         = 0xc1 //\"A\"\n\tGRND_NONBLOCK            = 1\n\tGRND_RANDOM              = 2\n\tHUPCL                    = 0x0100 // Hang up on last close\n\tIN_CLOEXEC               = 0x00001000\n\tIN_NONBLOCK              = 0x00000004\n\tIN_ACCESS                = 0x00000001\n\tIN_MODIFY                = 0x00000002\n\tIN_ATTRIB                = 0x00000004\n\tIN_CLOSE_WRITE           = 0x00000008\n\tIN_CLOSE_NOWRITE         = 0x00000010\n\tIN_OPEN                  = 0x00000020\n\tIN_MOVED_FROM            = 0x00000040\n\tIN_MOVED_TO              = 0x00000080\n\tIN_CREATE                = 0x00000100\n\tIN_DELETE                = 0x00000200\n\tIN_DELETE_SELF           = 0x00000400\n\tIN_MOVE_SELF             = 0x00000800\n\tIN_UNMOUNT               = 0x00002000\n\tIN_Q_OVERFLOW            = 0x00004000\n\tIN_IGNORED               = 0x00008000\n\tIN_CLOSE                 = (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)\n\tIN_MOVE                  = (IN_MOVED_FROM | IN_MOVED_TO)\n\tIN_ALL_EVENTS            = (IN_ACCESS | IN_MODIFY | IN_ATTRIB |\n\t\tIN_CLOSE | IN_OPEN | IN_MOVE |\n\t\tIN_CREATE | IN_DELETE | IN_DELETE_SELF |\n\t\tIN_MOVE_SELF)\n\tIN_ONLYDIR                      = 0x01000000\n\tIN_DONT_FOLLOW                  = 0x02000000\n\tIN_EXCL_UNLINK                  = 0x04000000\n\tIN_MASK_CREATE                  = 0x10000000\n\tIN_MASK_ADD                     = 0x20000000\n\tIN_ISDIR                        = 0x40000000\n\tIN_ONESHOT                      = 0x80000000\n\tIP6F_MORE_FRAG                  = 0x0001\n\tIP6F_OFF_MASK                   = 0xfff8\n\tIP6F_RESERVED_MASK              = 0x0006\n\tIP6OPT_JUMBO                    = 0xc2\n\tIP6OPT_JUMBO_LEN                = 6\n\tIP6OPT_MUTABLE                  = 0x20\n\tIP6OPT_NSAP_ADDR                = 0xc3\n\tIP6OPT_PAD1                     = 0x00\n\tIP6OPT_PADN                     = 0x01\n\tIP6OPT_ROUTER_ALERT             = 0x05\n\tIP6OPT_TUNNEL_LIMIT             = 0x04\n\tIP6OPT_TYPE_DISCARD             = 0x40\n\tIP6OPT_TYPE_FORCEICMP           = 0x80\n\tIP6OPT_TYPE_ICMP                = 0xc0\n\tIP6OPT_TYPE_SKIP                = 0x00\n\tIP6_ALERT_AN                    = 0x0002\n\tIP6_ALERT_MLD                   = 0x0000\n\tIP6_ALERT_RSVP                  = 0x0001\n\tIPPORT_RESERVED                 = 1024\n\tIPPORT_USERRESERVED             = 5000\n\tIPPROTO_AH                      = 51\n\tSOL_AH                          = 51\n\tIPPROTO_DSTOPTS                 = 60\n\tSOL_DSTOPTS                     = 60\n\tIPPROTO_EGP                     = 8\n\tSOL_EGP                         = 8\n\tIPPROTO_ESP                     = 50\n\tSOL_ESP                         = 50\n\tIPPROTO_FRAGMENT                = 44\n\tSOL_FRAGMENT                    = 44\n\tIPPROTO_GGP                     = 2\n\tSOL_GGP                         = 2\n\tIPPROTO_HOPOPTS                 = 0\n\tSOL_HOPOPTS                     = 0\n\tIPPROTO_ICMP                    = 1\n\tSOL_ICMP                        = 1\n\tIPPROTO_ICMPV6                  = 58\n\tSOL_ICMPV6                      = 58\n\tIPPROTO_IDP                     = 22\n\tSOL_IDP                         = 22\n\tIPPROTO_IP                      = 0\n\tSOL_IP                          = 0\n\tIPPROTO_IPV6                    = 41\n\tSOL_IPV6                        = 41\n\tIPPROTO_MAX                     = 256\n\tSOL_MAX                         = 256\n\tIPPROTO_NONE                    = 59\n\tSOL_NONE                        = 59\n\tIPPROTO_PUP                     = 12\n\tSOL_PUP                         = 12\n\tIPPROTO_RAW                     = 255\n\tSOL_RAW                         = 255\n\tIPPROTO_ROUTING                 = 43\n\tSOL_ROUTING                     = 43\n\tIPPROTO_TCP                     = 6\n\tSOL_TCP                         = 6\n\tIPPROTO_UDP                     = 17\n\tSOL_UDP                         = 17\n\tIPV6_ADDR_PREFERENCES           = 32\n\tIPV6_CHECKSUM                   = 19\n\tIPV6_DONTFRAG                   = 29\n\tIPV6_DSTOPTS                    = 23\n\tIPV6_HOPLIMIT                   = 11\n\tIPV6_HOPOPTS                    = 22\n\tIPV6_JOIN_GROUP                 = 5\n\tIPV6_LEAVE_GROUP                = 6\n\tIPV6_MULTICAST_HOPS             = 9\n\tIPV6_MULTICAST_IF               = 7\n\tIPV6_MULTICAST_LOOP             = 4\n\tIPV6_NEXTHOP                    = 20\n\tIPV6_PATHMTU                    = 12\n\tIPV6_PKTINFO                    = 13\n\tIPV6_PREFER_SRC_CGA             = 0x10\n\tIPV6_PREFER_SRC_COA             = 0x02\n\tIPV6_PREFER_SRC_HOME            = 0x01\n\tIPV6_PREFER_SRC_NONCGA          = 0x20\n\tIPV6_PREFER_SRC_PUBLIC          = 0x08\n\tIPV6_PREFER_SRC_TMP             = 0x04\n\tIPV6_RECVDSTOPTS                = 28\n\tIPV6_RECVHOPLIMIT               = 14\n\tIPV6_RECVHOPOPTS                = 26\n\tIPV6_RECVPATHMTU                = 16\n\tIPV6_RECVPKTINFO                = 15\n\tIPV6_RECVRTHDR                  = 25\n\tIPV6_RECVTCLASS                 = 31\n\tIPV6_RTHDR                      = 21\n\tIPV6_RTHDRDSTOPTS               = 24\n\tIPV6_RTHDR_TYPE_0               = 0\n\tIPV6_TCLASS                     = 30\n\tIPV6_UNICAST_HOPS               = 3\n\tIPV6_USE_MIN_MTU                = 18\n\tIPV6_V6ONLY                     = 10\n\tIP_ADD_MEMBERSHIP               = 5\n\tIP_ADD_SOURCE_MEMBERSHIP        = 12\n\tIP_BLOCK_SOURCE                 = 10\n\tIP_DEFAULT_MULTICAST_LOOP       = 1\n\tIP_DEFAULT_MULTICAST_TTL        = 1\n\tIP_DROP_MEMBERSHIP              = 6\n\tIP_DROP_SOURCE_MEMBERSHIP       = 13\n\tIP_MAX_MEMBERSHIPS              = 20\n\tIP_MULTICAST_IF                 = 7\n\tIP_MULTICAST_LOOP               = 4\n\tIP_MULTICAST_TTL                = 3\n\tIP_OPTIONS                      = 1\n\tIP_PKTINFO                      = 101\n\tIP_RECVPKTINFO                  = 102\n\tIP_TOS                          = 2\n\tIP_TTL                          = 14\n\tIP_UNBLOCK_SOURCE               = 11\n\tICMP6_FILTER                    = 1\n\tMCAST_INCLUDE                   = 0\n\tMCAST_EXCLUDE                   = 1\n\tMCAST_JOIN_GROUP                = 40\n\tMCAST_LEAVE_GROUP               = 41\n\tMCAST_JOIN_SOURCE_GROUP         = 42\n\tMCAST_LEAVE_SOURCE_GROUP        = 43\n\tMCAST_BLOCK_SOURCE              = 44\n\tMCAST_UNBLOCK_SOURCE            = 46\n\tICANON                          = 0x0010\n\tICRNL                           = 0x0002\n\tIEXTEN                          = 0x0020\n\tIGNBRK                          = 0x0004\n\tIGNCR                           = 0x0008\n\tINLCR                           = 0x0020\n\tISIG                            = 0x0040\n\tISTRIP                          = 0x0080\n\tIXON                            = 0x0200\n\tIXOFF                           = 0x0100\n\tLOCK_SH                         = 0x1\n\tLOCK_EX                         = 0x2\n\tLOCK_NB                         = 0x4\n\tLOCK_UN                         = 0x8\n\tPOLLIN                          = 0x0003\n\tPOLLOUT                         = 0x0004\n\tPOLLPRI                         = 0x0010\n\tPOLLERR                         = 0x0020\n\tPOLLHUP                         = 0x0040\n\tPOLLNVAL                        = 0x0080\n\tPROT_READ                       = 0x1 // mmap - page can be read\n\tPROT_WRITE                      = 0x2 // page can be written\n\tPROT_NONE                       = 0x4 // can't be accessed\n\tPROT_EXEC                       = 0x8 // can be executed\n\tMAP_PRIVATE                     = 0x1 // changes are private\n\tMAP_SHARED                      = 0x2 // changes are shared\n\tMAP_FIXED                       = 0x4 // place exactly\n\t__MAP_MEGA                      = 0x8\n\t__MAP_64                        = 0x10\n\tMAP_ANON                        = 0x20\n\tMAP_ANONYMOUS                   = 0x20\n\tMS_SYNC                         = 0x1 // msync - synchronous writes\n\tMS_ASYNC                        = 0x2 // asynchronous writes\n\tMS_INVALIDATE                   = 0x4 // invalidate mappings\n\tMS_BIND                         = 0x00001000\n\tMS_MOVE                         = 0x00002000\n\tMS_NOSUID                       = 0x00000002\n\tMS_PRIVATE                      = 0x00040000\n\tMS_REC                          = 0x00004000\n\tMS_REMOUNT                      = 0x00008000\n\tMS_RDONLY                       = 0x00000001\n\tMS_UNBINDABLE                   = 0x00020000\n\tMNT_DETACH                      = 0x00000004\n\tZOSDSFS_SUPER_MAGIC             = 0x44534653 // zOS DSFS\n\tNFS_SUPER_MAGIC                 = 0x6969     // NFS\n\tNSFS_MAGIC                      = 0x6e736673 // PROCNS\n\tPROC_SUPER_MAGIC                = 0x9fa0     // proc FS\n\tZOSTFS_SUPER_MAGIC              = 0x544653   // zOS TFS\n\tZOSUFS_SUPER_MAGIC              = 0x554653   // zOS UFS\n\tZOSZFS_SUPER_MAGIC              = 0x5A4653   // zOS ZFS\n\tMTM_RDONLY                      = 0x80000000\n\tMTM_RDWR                        = 0x40000000\n\tMTM_UMOUNT                      = 0x10000000\n\tMTM_IMMED                       = 0x08000000\n\tMTM_FORCE                       = 0x04000000\n\tMTM_DRAIN                       = 0x02000000\n\tMTM_RESET                       = 0x01000000\n\tMTM_SAMEMODE                    = 0x00100000\n\tMTM_UNQSEFORCE                  = 0x00040000\n\tMTM_NOSUID                      = 0x00000400\n\tMTM_SYNCHONLY                   = 0x00000200\n\tMTM_REMOUNT                     = 0x00000100\n\tMTM_NOSECURITY                  = 0x00000080\n\tNFDBITS                         = 0x20\n\tONLRET                          = 0x0020 // NL performs CR function\n\tO_ACCMODE                       = 0x03\n\tO_APPEND                        = 0x08\n\tO_ASYNCSIG                      = 0x0200\n\tO_CREAT                         = 0x80\n\tO_DIRECT                        = 0x00002000\n\tO_NOFOLLOW                      = 0x00004000\n\tO_DIRECTORY                     = 0x00008000\n\tO_PATH                          = 0x00080000\n\tO_CLOEXEC                       = 0x00001000\n\tO_EXCL                          = 0x40\n\tO_GETFL                         = 0x0F\n\tO_LARGEFILE                     = 0x0400\n\tO_NDELAY                        = 0x4\n\tO_NONBLOCK                      = 0x04\n\tO_RDONLY                        = 0x02\n\tO_RDWR                          = 0x03\n\tO_SYNC                          = 0x0100\n\tO_TRUNC                         = 0x10\n\tO_WRONLY                        = 0x01\n\tO_NOCTTY                        = 0x20\n\tOPOST                           = 0x0001\n\tONLCR                           = 0x0004\n\tPARENB                          = 0x0200\n\tPARMRK                          = 0x0400\n\tQUERYCVT                        = 3\n\tRUSAGE_CHILDREN                 = -0x1\n\tRUSAGE_SELF                     = 0x0 // RUSAGE_THREAD unsupported on z/OS\n\tSEEK_CUR                        = 1\n\tSEEK_END                        = 2\n\tSEEK_SET                        = 0\n\tSETAUTOCVTALL                   = 5\n\tSETAUTOCVTON                    = 2\n\tSETCVTALL                       = 4\n\tSETCVTOFF                       = 0\n\tSETCVTON                        = 1\n\tAF_APPLETALK                    = 16\n\tAF_CCITT                        = 10\n\tAF_CHAOS                        = 5\n\tAF_DATAKIT                      = 9\n\tAF_DLI                          = 13\n\tAF_ECMA                         = 8\n\tAF_HYLINK                       = 15\n\tAF_IMPLINK                      = 3\n\tAF_INET                         = 2\n\tAF_INET6                        = 19\n\tAF_INTF                         = 20\n\tAF_IUCV                         = 17\n\tAF_LAT                          = 14\n\tAF_LINK                         = 18\n\tAF_LOCAL                        = AF_UNIX // AF_LOCAL is an alias for AF_UNIX\n\tAF_MAX                          = 30\n\tAF_NBS                          = 7\n\tAF_NDD                          = 23\n\tAF_NETWARE                      = 22\n\tAF_NS                           = 6\n\tAF_PUP                          = 4\n\tAF_RIF                          = 21\n\tAF_ROUTE                        = 20\n\tAF_SNA                          = 11\n\tAF_UNIX                         = 1\n\tAF_UNSPEC                       = 0\n\tIBMTCP_IMAGE                    = 1\n\tMSG_ACK_EXPECTED                = 0x10\n\tMSG_ACK_GEN                     = 0x40\n\tMSG_ACK_TIMEOUT                 = 0x20\n\tMSG_CONNTERM                    = 0x80\n\tMSG_CTRUNC                      = 0x20\n\tMSG_DONTROUTE                   = 0x4\n\tMSG_EOF                         = 0x8000\n\tMSG_EOR                         = 0x8\n\tMSG_MAXIOVLEN                   = 16\n\tMSG_NONBLOCK                    = 0x4000\n\tMSG_OOB                         = 0x1\n\tMSG_PEEK                        = 0x2\n\tMSG_TRUNC                       = 0x10\n\tMSG_WAITALL                     = 0x40\n\tPRIO_PROCESS                    = 1\n\tPRIO_PGRP                       = 2\n\tPRIO_USER                       = 3\n\tRLIMIT_CPU                      = 0\n\tRLIMIT_FSIZE                    = 1\n\tRLIMIT_DATA                     = 2\n\tRLIMIT_STACK                    = 3\n\tRLIMIT_CORE                     = 4\n\tRLIMIT_AS                       = 5\n\tRLIMIT_NOFILE                   = 6\n\tRLIMIT_MEMLIMIT                 = 7\n\tRLIMIT_MEMLOCK                  = 0x8\n\tRLIM_INFINITY                   = 2147483647\n\tSCHED_FIFO                      = 0x2\n\tSCM_CREDENTIALS                 = 0x2\n\tSCM_RIGHTS                      = 0x01\n\tSF_CLOSE                        = 0x00000002\n\tSF_REUSE                        = 0x00000001\n\tSHM_RND                         = 0x2\n\tSHM_RDONLY                      = 0x1\n\tSHMLBA                          = 0x1000\n\tIPC_STAT                        = 0x3\n\tIPC_SET                         = 0x2\n\tIPC_RMID                        = 0x1\n\tIPC_PRIVATE                     = 0x0\n\tIPC_CREAT                       = 0x1000000\n\t__IPC_MEGA                      = 0x4000000\n\t__IPC_SHAREAS                   = 0x20000000\n\t__IPC_BELOWBAR                  = 0x10000000\n\tIPC_EXCL                        = 0x2000000\n\t__IPC_GIGA                      = 0x8000000\n\tSHUT_RD                         = 0\n\tSHUT_RDWR                       = 2\n\tSHUT_WR                         = 1\n\tSOCK_CLOEXEC                    = 0x00001000\n\tSOCK_CONN_DGRAM                 = 6\n\tSOCK_DGRAM                      = 2\n\tSOCK_NONBLOCK                   = 0x800\n\tSOCK_RAW                        = 3\n\tSOCK_RDM                        = 4\n\tSOCK_SEQPACKET                  = 5\n\tSOCK_STREAM                     = 1\n\tSOL_SOCKET                      = 0xffff\n\tSOMAXCONN                       = 10\n\tSO_ACCEPTCONN                   = 0x0002\n\tSO_ACCEPTECONNABORTED           = 0x0006\n\tSO_ACKNOW                       = 0x7700\n\tSO_BROADCAST                    = 0x0020\n\tSO_BULKMODE                     = 0x8000\n\tSO_CKSUMRECV                    = 0x0800\n\tSO_CLOSE                        = 0x01\n\tSO_CLUSTERCONNTYPE              = 0x00004001\n\tSO_CLUSTERCONNTYPE_INTERNAL     = 8\n\tSO_CLUSTERCONNTYPE_NOCONN       = 0\n\tSO_CLUSTERCONNTYPE_NONE         = 1\n\tSO_CLUSTERCONNTYPE_SAME_CLUSTER = 2\n\tSO_CLUSTERCONNTYPE_SAME_IMAGE   = 4\n\tSO_DEBUG                        = 0x0001\n\tSO_DONTROUTE                    = 0x0010\n\tSO_ERROR                        = 0x1007\n\tSO_IGNOREINCOMINGPUSH           = 0x1\n\tSO_IGNORESOURCEVIPA             = 0x0002\n\tSO_KEEPALIVE                    = 0x0008\n\tSO_LINGER                       = 0x0080\n\tSO_NONBLOCKLOCAL                = 0x8001\n\tSO_NOREUSEADDR                  = 0x1000\n\tSO_OOBINLINE                    = 0x0100\n\tSO_OPTACK                       = 0x8004\n\tSO_OPTMSS                       = 0x8003\n\tSO_RCVBUF                       = 0x1002\n\tSO_RCVLOWAT                     = 0x1004\n\tSO_RCVTIMEO                     = 0x1006\n\tSO_REUSEADDR                    = 0x0004\n\tSO_REUSEPORT                    = 0x0200\n\tSO_SECINFO                      = 0x00004002\n\tSO_SET                          = 0x0200\n\tSO_SNDBUF                       = 0x1001\n\tSO_SNDLOWAT                     = 0x1003\n\tSO_SNDTIMEO                     = 0x1005\n\tSO_TYPE                         = 0x1008\n\tSO_UNSET                        = 0x0400\n\tSO_USELOOPBACK                  = 0x0040\n\tSO_USE_IFBUFS                   = 0x0400\n\tS_ISUID                         = 0x0800\n\tS_ISGID                         = 0x0400\n\tS_ISVTX                         = 0x0200\n\tS_IRUSR                         = 0x0100\n\tS_IWUSR                         = 0x0080\n\tS_IXUSR                         = 0x0040\n\tS_IRWXU                         = 0x01C0\n\tS_IRGRP                         = 0x0020\n\tS_IWGRP                         = 0x0010\n\tS_IXGRP                         = 0x0008\n\tS_IRWXG                         = 0x0038\n\tS_IROTH                         = 0x0004\n\tS_IWOTH                         = 0x0002\n\tS_IXOTH                         = 0x0001\n\tS_IRWXO                         = 0x0007\n\tS_IREAD                         = S_IRUSR\n\tS_IWRITE                        = S_IWUSR\n\tS_IEXEC                         = S_IXUSR\n\tS_IFDIR                         = 0x01000000\n\tS_IFCHR                         = 0x02000000\n\tS_IFREG                         = 0x03000000\n\tS_IFFIFO                        = 0x04000000\n\tS_IFIFO                         = 0x04000000\n\tS_IFLNK                         = 0x05000000\n\tS_IFBLK                         = 0x06000000\n\tS_IFSOCK                        = 0x07000000\n\tS_IFVMEXTL                      = 0xFE000000\n\tS_IFVMEXTL_EXEC                 = 0x00010000\n\tS_IFVMEXTL_DATA                 = 0x00020000\n\tS_IFVMEXTL_MEL                  = 0x00030000\n\tS_IFEXTL                        = 0x00000001\n\tS_IFPROGCTL                     = 0x00000002\n\tS_IFAPFCTL                      = 0x00000004\n\tS_IFNOSHARE                     = 0x00000008\n\tS_IFSHARELIB                    = 0x00000010\n\tS_IFMT                          = 0xFF000000\n\tS_IFMST                         = 0x00FF0000\n\tTCP_KEEPALIVE                   = 0x8\n\tTCP_NODELAY                     = 0x1\n\tTIOCGWINSZ                      = 0x4008a368\n\tTIOCSWINSZ                      = 0x8008a367\n\tTIOCSBRK                        = 0x2000a77b\n\tTIOCCBRK                        = 0x2000a77a\n\tTIOCSTI                         = 0x8001a772\n\tTIOCGPGRP                       = 0x4004a777 // _IOR(167, 119, int)\n\tTCSANOW                         = 0\n\tTCSETS                          = 0 // equivalent to TCSANOW for tcsetattr\n\tTCSADRAIN                       = 1\n\tTCSETSW                         = 1 // equivalent to TCSADRAIN for tcsetattr\n\tTCSAFLUSH                       = 2\n\tTCSETSF                         = 2 // equivalent to TCSAFLUSH for tcsetattr\n\tTCGETS                          = 3 // not defined in ioctl.h -- zos golang only\n\tTCIFLUSH                        = 0\n\tTCOFLUSH                        = 1\n\tTCIOFLUSH                       = 2\n\tTCOOFF                          = 0\n\tTCOON                           = 1\n\tTCIOFF                          = 2\n\tTCION                           = 3\n\tTIOCSPGRP                       = 0x8004a776\n\tTIOCNOTTY                       = 0x2000a771\n\tTIOCEXCL                        = 0x2000a70d\n\tTIOCNXCL                        = 0x2000a70e\n\tTIOCGETD                        = 0x4004a700\n\tTIOCSETD                        = 0x8004a701\n\tTIOCPKT                         = 0x8004a770\n\tTIOCSTOP                        = 0x2000a76f\n\tTIOCSTART                       = 0x2000a76e\n\tTIOCUCNTL                       = 0x8004a766\n\tTIOCREMOTE                      = 0x8004a769\n\tTIOCMGET                        = 0x4004a76a\n\tTIOCMSET                        = 0x8004a76d\n\tTIOCMBIC                        = 0x8004a76b\n\tTIOCMBIS                        = 0x8004a76c\n\tVINTR                           = 0\n\tVQUIT                           = 1\n\tVERASE                          = 2\n\tVKILL                           = 3\n\tVEOF                            = 4\n\tVEOL                            = 5\n\tVMIN                            = 6\n\tVSTART                          = 7\n\tVSTOP                           = 8\n\tVSUSP                           = 9\n\tVTIME                           = 10\n\tWCONTINUED                      = 0x4\n\tWEXITED                         = 0x8\n\tWNOHANG                         = 0x1\n\tWNOWAIT                         = 0x20\n\tWSTOPPED                        = 0x10\n\tWUNTRACED                       = 0x2\n\t_BPX_SWAP                       = 1\n\t_BPX_NONSWAP                    = 2\n\tMCL_CURRENT                     = 1  // for Linux compatibility -- no zos semantics\n\tMCL_FUTURE                      = 2  // for Linux compatibility -- no zos semantics\n\tMCL_ONFAULT                     = 3  // for Linux compatibility -- no zos semantics\n\tMADV_NORMAL                     = 0  // for Linux compatibility -- no zos semantics\n\tMADV_RANDOM                     = 1  // for Linux compatibility -- no zos semantics\n\tMADV_SEQUENTIAL                 = 2  // for Linux compatibility -- no zos semantics\n\tMADV_WILLNEED                   = 3  // for Linux compatibility -- no zos semantics\n\tMADV_REMOVE                     = 4  // for Linux compatibility -- no zos semantics\n\tMADV_DONTFORK                   = 5  // for Linux compatibility -- no zos semantics\n\tMADV_DOFORK                     = 6  // for Linux compatibility -- no zos semantics\n\tMADV_HWPOISON                   = 7  // for Linux compatibility -- no zos semantics\n\tMADV_MERGEABLE                  = 8  // for Linux compatibility -- no zos semantics\n\tMADV_UNMERGEABLE                = 9  // for Linux compatibility -- no zos semantics\n\tMADV_SOFT_OFFLINE               = 10 // for Linux compatibility -- no zos semantics\n\tMADV_HUGEPAGE                   = 11 // for Linux compatibility -- no zos semantics\n\tMADV_NOHUGEPAGE                 = 12 // for Linux compatibility -- no zos semantics\n\tMADV_DONTDUMP                   = 13 // for Linux compatibility -- no zos semantics\n\tMADV_DODUMP                     = 14 // for Linux compatibility -- no zos semantics\n\tMADV_FREE                       = 15 // for Linux compatibility -- no zos semantics\n\tMADV_WIPEONFORK                 = 16 // for Linux compatibility -- no zos semantics\n\tMADV_KEEPONFORK                 = 17 // for Linux compatibility -- no zos semantics\n\tAT_SYMLINK_FOLLOW               = 0x400\n\tAT_SYMLINK_NOFOLLOW             = 0x100\n\tXATTR_CREATE                    = 0x1\n\tXATTR_REPLACE                   = 0x2\n\tP_PID                           = 0\n\tP_PGID                          = 1\n\tP_ALL                           = 2\n\tPR_SET_NAME                     = 15\n\tPR_GET_NAME                     = 16\n\tPR_SET_NO_NEW_PRIVS             = 38\n\tPR_GET_NO_NEW_PRIVS             = 39\n\tPR_SET_DUMPABLE                 = 4\n\tPR_GET_DUMPABLE                 = 3\n\tPR_SET_PDEATHSIG                = 1\n\tPR_GET_PDEATHSIG                = 2\n\tPR_SET_CHILD_SUBREAPER          = 36\n\tPR_GET_CHILD_SUBREAPER          = 37\n\tAT_FDCWD                        = -100\n\tAT_EACCESS                      = 0x200\n\tAT_EMPTY_PATH                   = 0x1000\n\tAT_REMOVEDIR                    = 0x200\n\tRENAME_NOREPLACE                = 1 << 0\n\tST_RDONLY                       = 1\n\tST_NOSUID                       = 2\n)\n\nconst (\n\tEDOM               = Errno(1)\n\tERANGE             = Errno(2)\n\tEACCES             = Errno(111)\n\tEAGAIN             = Errno(112)\n\tEBADF              = Errno(113)\n\tEBUSY              = Errno(114)\n\tECHILD             = Errno(115)\n\tEDEADLK            = Errno(116)\n\tEEXIST             = Errno(117)\n\tEFAULT             = Errno(118)\n\tEFBIG              = Errno(119)\n\tEINTR              = Errno(120)\n\tEINVAL             = Errno(121)\n\tEIO                = Errno(122)\n\tEISDIR             = Errno(123)\n\tEMFILE             = Errno(124)\n\tEMLINK             = Errno(125)\n\tENAMETOOLONG       = Errno(126)\n\tENFILE             = Errno(127)\n\tENOATTR            = Errno(265)\n\tENODEV             = Errno(128)\n\tENOENT             = Errno(129)\n\tENOEXEC            = Errno(130)\n\tENOLCK             = Errno(131)\n\tENOMEM             = Errno(132)\n\tENOSPC             = Errno(133)\n\tENOSYS             = Errno(134)\n\tENOTDIR            = Errno(135)\n\tENOTEMPTY          = Errno(136)\n\tENOTTY             = Errno(137)\n\tENXIO              = Errno(138)\n\tEPERM              = Errno(139)\n\tEPIPE              = Errno(140)\n\tEROFS              = Errno(141)\n\tESPIPE             = Errno(142)\n\tESRCH              = Errno(143)\n\tEXDEV              = Errno(144)\n\tE2BIG              = Errno(145)\n\tELOOP              = Errno(146)\n\tEILSEQ             = Errno(147)\n\tENODATA            = Errno(148)\n\tEOVERFLOW          = Errno(149)\n\tEMVSNOTUP          = Errno(150)\n\tECMSSTORAGE        = Errno(151)\n\tEMVSDYNALC         = Errno(151)\n\tEMVSCVAF           = Errno(152)\n\tEMVSCATLG          = Errno(153)\n\tECMSINITIAL        = Errno(156)\n\tEMVSINITIAL        = Errno(156)\n\tECMSERR            = Errno(157)\n\tEMVSERR            = Errno(157)\n\tEMVSPARM           = Errno(158)\n\tECMSPFSFILE        = Errno(159)\n\tEMVSPFSFILE        = Errno(159)\n\tEMVSBADCHAR        = Errno(160)\n\tECMSPFSPERM        = Errno(162)\n\tEMVSPFSPERM        = Errno(162)\n\tEMVSSAFEXTRERR     = Errno(163)\n\tEMVSSAF2ERR        = Errno(164)\n\tEMVSTODNOTSET      = Errno(165)\n\tEMVSPATHOPTS       = Errno(166)\n\tEMVSNORTL          = Errno(167)\n\tEMVSEXPIRE         = Errno(168)\n\tEMVSPASSWORD       = Errno(169)\n\tEMVSWLMERROR       = Errno(170)\n\tEMVSCPLERROR       = Errno(171)\n\tEMVSARMERROR       = Errno(172)\n\tELENOFORK          = Errno(200)\n\tELEMSGERR          = Errno(201)\n\tEFPMASKINV         = Errno(202)\n\tEFPMODEINV         = Errno(203)\n\tEBUFLEN            = Errno(227)\n\tEEXTLINK           = Errno(228)\n\tENODD              = Errno(229)\n\tECMSESMERR         = Errno(230)\n\tECPERR             = Errno(231)\n\tELEMULTITHREAD     = Errno(232)\n\tELEFENCE           = Errno(244)\n\tEBADDATA           = Errno(245)\n\tEUNKNOWN           = Errno(246)\n\tENOTSUP            = Errno(247)\n\tEBADNAME           = Errno(248)\n\tENOTSAFE           = Errno(249)\n\tELEMULTITHREADFORK = Errno(257)\n\tECUNNOENV          = Errno(258)\n\tECUNNOCONV         = Errno(259)\n\tECUNNOTALIGNED     = Errno(260)\n\tECUNERR            = Errno(262)\n\tEIBMBADCALL        = Errno(1000)\n\tEIBMBADPARM        = Errno(1001)\n\tEIBMSOCKOUTOFRANGE = Errno(1002)\n\tEIBMSOCKINUSE      = Errno(1003)\n\tEIBMIUCVERR        = Errno(1004)\n\tEOFFLOADboxERROR   = Errno(1005)\n\tEOFFLOADboxRESTART = Errno(1006)\n\tEOFFLOADboxDOWN    = Errno(1007)\n\tEIBMCONFLICT       = Errno(1008)\n\tEIBMCANCELLED      = Errno(1009)\n\tEIBMBADTCPNAME     = Errno(1011)\n\tENOTBLK            = Errno(1100)\n\tETXTBSY            = Errno(1101)\n\tEWOULDBLOCK        = Errno(1102)\n\tEINPROGRESS        = Errno(1103)\n\tEALREADY           = Errno(1104)\n\tENOTSOCK           = Errno(1105)\n\tEDESTADDRREQ       = Errno(1106)\n\tEMSGSIZE           = Errno(1107)\n\tEPROTOTYPE         = Errno(1108)\n\tENOPROTOOPT        = Errno(1109)\n\tEPROTONOSUPPORT    = Errno(1110)\n\tESOCKTNOSUPPORT    = Errno(1111)\n\tEOPNOTSUPP         = Errno(1112)\n\tEPFNOSUPPORT       = Errno(1113)\n\tEAFNOSUPPORT       = Errno(1114)\n\tEADDRINUSE         = Errno(1115)\n\tEADDRNOTAVAIL      = Errno(1116)\n\tENETDOWN           = Errno(1117)\n\tENETUNREACH        = Errno(1118)\n\tENETRESET          = Errno(1119)\n\tECONNABORTED       = Errno(1120)\n\tECONNRESET         = Errno(1121)\n\tENOBUFS            = Errno(1122)\n\tEISCONN            = Errno(1123)\n\tENOTCONN           = Errno(1124)\n\tESHUTDOWN          = Errno(1125)\n\tETOOMANYREFS       = Errno(1126)\n\tETIMEDOUT          = Errno(1127)\n\tECONNREFUSED       = Errno(1128)\n\tEHOSTDOWN          = Errno(1129)\n\tEHOSTUNREACH       = Errno(1130)\n\tEPROCLIM           = Errno(1131)\n\tEUSERS             = Errno(1132)\n\tEDQUOT             = Errno(1133)\n\tESTALE             = Errno(1134)\n\tEREMOTE            = Errno(1135)\n\tENOSTR             = Errno(1136)\n\tETIME              = Errno(1137)\n\tENOSR              = Errno(1138)\n\tENOMSG             = Errno(1139)\n\tEBADMSG            = Errno(1140)\n\tEIDRM              = Errno(1141)\n\tENONET             = Errno(1142)\n\tERREMOTE           = Errno(1143)\n\tENOLINK            = Errno(1144)\n\tEADV               = Errno(1145)\n\tESRMNT             = Errno(1146)\n\tECOMM              = Errno(1147)\n\tEPROTO             = Errno(1148)\n\tEMULTIHOP          = Errno(1149)\n\tEDOTDOT            = Errno(1150)\n\tEREMCHG            = Errno(1151)\n\tECANCELED          = Errno(1152)\n\tEINTRNODATA        = Errno(1159)\n\tENOREUSE           = Errno(1160)\n\tENOMOVE            = Errno(1161)\n)\n\n// Signals\nconst (\n\tSIGHUP    = Signal(1)\n\tSIGINT    = Signal(2)\n\tSIGABRT   = Signal(3)\n\tSIGILL    = Signal(4)\n\tSIGPOLL   = Signal(5)\n\tSIGURG    = Signal(6)\n\tSIGSTOP   = Signal(7)\n\tSIGFPE    = Signal(8)\n\tSIGKILL   = Signal(9)\n\tSIGBUS    = Signal(10)\n\tSIGSEGV   = Signal(11)\n\tSIGSYS    = Signal(12)\n\tSIGPIPE   = Signal(13)\n\tSIGALRM   = Signal(14)\n\tSIGTERM   = Signal(15)\n\tSIGUSR1   = Signal(16)\n\tSIGUSR2   = Signal(17)\n\tSIGABND   = Signal(18)\n\tSIGCONT   = Signal(19)\n\tSIGCHLD   = Signal(20)\n\tSIGTTIN   = Signal(21)\n\tSIGTTOU   = Signal(22)\n\tSIGIO     = Signal(23)\n\tSIGQUIT   = Signal(24)\n\tSIGTSTP   = Signal(25)\n\tSIGTRAP   = Signal(26)\n\tSIGIOERR  = Signal(27)\n\tSIGWINCH  = Signal(28)\n\tSIGXCPU   = Signal(29)\n\tSIGXFSZ   = Signal(30)\n\tSIGVTALRM = Signal(31)\n\tSIGPROF   = Signal(32)\n\tSIGDANGER = Signal(33)\n\tSIGTHSTOP = Signal(34)\n\tSIGTHCONT = Signal(35)\n\tSIGTRACE  = Signal(37)\n\tSIGDCE    = Signal(38)\n\tSIGDUMP   = Signal(39)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EDC5001I\", \"A domain error occurred.\"},\n\t{2, \"EDC5002I\", \"A range error occurred.\"},\n\t{111, \"EDC5111I\", \"Permission denied.\"},\n\t{112, \"EDC5112I\", \"Resource temporarily unavailable.\"},\n\t{113, \"EDC5113I\", \"Bad file descriptor.\"},\n\t{114, \"EDC5114I\", \"Resource busy.\"},\n\t{115, \"EDC5115I\", \"No child processes.\"},\n\t{116, \"EDC5116I\", \"Resource deadlock avoided.\"},\n\t{117, \"EDC5117I\", \"File exists.\"},\n\t{118, \"EDC5118I\", \"Incorrect address.\"},\n\t{119, \"EDC5119I\", \"File too large.\"},\n\t{120, \"EDC5120I\", \"Interrupted function call.\"},\n\t{121, \"EDC5121I\", \"Invalid argument.\"},\n\t{122, \"EDC5122I\", \"Input/output error.\"},\n\t{123, \"EDC5123I\", \"Is a directory.\"},\n\t{124, \"EDC5124I\", \"Too many open files.\"},\n\t{125, \"EDC5125I\", \"Too many links.\"},\n\t{126, \"EDC5126I\", \"Filename too long.\"},\n\t{127, \"EDC5127I\", \"Too many open files in system.\"},\n\t{128, \"EDC5128I\", \"No such device.\"},\n\t{129, \"EDC5129I\", \"No such file or directory.\"},\n\t{130, \"EDC5130I\", \"Exec format error.\"},\n\t{131, \"EDC5131I\", \"No locks available.\"},\n\t{132, \"EDC5132I\", \"Not enough memory.\"},\n\t{133, \"EDC5133I\", \"No space left on device.\"},\n\t{134, \"EDC5134I\", \"Function not implemented.\"},\n\t{135, \"EDC5135I\", \"Not a directory.\"},\n\t{136, \"EDC5136I\", \"Directory not empty.\"},\n\t{137, \"EDC5137I\", \"Inappropriate I/O control operation.\"},\n\t{138, \"EDC5138I\", \"No such device or address.\"},\n\t{139, \"EDC5139I\", \"Operation not permitted.\"},\n\t{140, \"EDC5140I\", \"Broken pipe.\"},\n\t{141, \"EDC5141I\", \"Read-only file system.\"},\n\t{142, \"EDC5142I\", \"Invalid seek.\"},\n\t{143, \"EDC5143I\", \"No such process.\"},\n\t{144, \"EDC5144I\", \"Improper link.\"},\n\t{145, \"EDC5145I\", \"The parameter list is too long, or the message to receive was too large for the buffer.\"},\n\t{146, \"EDC5146I\", \"Too many levels of symbolic links.\"},\n\t{147, \"EDC5147I\", \"Illegal byte sequence.\"},\n\t{148, \"EDC5148I\", \"The named attribute or data not available.\"},\n\t{149, \"EDC5149I\", \"Value Overflow Error.\"},\n\t{150, \"EDC5150I\", \"UNIX System Services is not active.\"},\n\t{151, \"EDC5151I\", \"Dynamic allocation error.\"},\n\t{152, \"EDC5152I\", \"Common VTOC access facility (CVAF) error.\"},\n\t{153, \"EDC5153I\", \"Catalog obtain error.\"},\n\t{156, \"EDC5156I\", \"Process initialization error.\"},\n\t{157, \"EDC5157I\", \"An internal error has occurred.\"},\n\t{158, \"EDC5158I\", \"Bad parameters were passed to the service.\"},\n\t{159, \"EDC5159I\", \"The Physical File System encountered a permanent file error.\"},\n\t{160, \"EDC5160I\", \"Bad character in environment variable name.\"},\n\t{162, \"EDC5162I\", \"The Physical File System encountered a system error.\"},\n\t{163, \"EDC5163I\", \"SAF/RACF extract error.\"},\n\t{164, \"EDC5164I\", \"SAF/RACF error.\"},\n\t{165, \"EDC5165I\", \"System TOD clock not set.\"},\n\t{166, \"EDC5166I\", \"Access mode argument on function call conflicts with PATHOPTS parameter on JCL DD statement.\"},\n\t{167, \"EDC5167I\", \"Access to the UNIX System Services version of the C RTL is denied.\"},\n\t{168, \"EDC5168I\", \"Password has expired.\"},\n\t{169, \"EDC5169I\", \"Password is invalid.\"},\n\t{170, \"EDC5170I\", \"An error was encountered with WLM.\"},\n\t{171, \"EDC5171I\", \"An error was encountered with CPL.\"},\n\t{172, \"EDC5172I\", \"An error was encountered with Application Response Measurement (ARM) component.\"},\n\t{200, \"EDC5200I\", \"The application contains a Language Environment member language that cannot tolerate a fork().\"},\n\t{201, \"EDC5201I\", \"The Language Environment message file was not found in the hierarchical file system.\"},\n\t{202, \"EDC5202E\", \"DLL facilities are not supported under SPC environment.\"},\n\t{203, \"EDC5203E\", \"DLL facilities are not supported under POSIX environment.\"},\n\t{227, \"EDC5227I\", \"Buffer is not long enough to contain a path definition\"},\n\t{228, \"EDC5228I\", \"The file referred to is an external link\"},\n\t{229, \"EDC5229I\", \"No path definition for ddname in effect\"},\n\t{230, \"EDC5230I\", \"ESM error.\"},\n\t{231, \"EDC5231I\", \"CP or the external security manager had an error\"},\n\t{232, \"EDC5232I\", \"The function failed because it was invoked from a multithread environment.\"},\n\t{244, \"EDC5244I\", \"The program, module or DLL is not supported in this environment.\"},\n\t{245, \"EDC5245I\", \"Data is not valid.\"},\n\t{246, \"EDC5246I\", \"Unknown system state.\"},\n\t{247, \"EDC5247I\", \"Operation not supported.\"},\n\t{248, \"EDC5248I\", \"The object name specified is not correct.\"},\n\t{249, \"EDC5249I\", \"The function is not allowed.\"},\n\t{257, \"EDC5257I\", \"Function cannot be called in the child process of a fork() from a multithreaded process until exec() is called.\"},\n\t{258, \"EDC5258I\", \"A CUN_RS_NO_UNI_ENV error was issued by Unicode Services.\"},\n\t{259, \"EDC5259I\", \"A CUN_RS_NO_CONVERSION error was issued by Unicode Services.\"},\n\t{260, \"EDC5260I\", \"A CUN_RS_TABLE_NOT_ALIGNED error was issued by Unicode Services.\"},\n\t{262, \"EDC5262I\", \"An iconv() function encountered an unexpected error while using Unicode Services.\"},\n\t{265, \"EDC5265I\", \"The named attribute not available.\"},\n\t{1000, \"EDC8000I\", \"A bad socket-call constant was found in the IUCV header.\"},\n\t{1001, \"EDC8001I\", \"An error was found in the IUCV header.\"},\n\t{1002, \"EDC8002I\", \"A socket descriptor is out of range.\"},\n\t{1003, \"EDC8003I\", \"A socket descriptor is in use.\"},\n\t{1004, \"EDC8004I\", \"Request failed because of an IUCV error.\"},\n\t{1005, \"EDC8005I\", \"Offload box error.\"},\n\t{1006, \"EDC8006I\", \"Offload box restarted.\"},\n\t{1007, \"EDC8007I\", \"Offload box down.\"},\n\t{1008, \"EDC8008I\", \"Already a conflicting call outstanding on socket.\"},\n\t{1009, \"EDC8009I\", \"Request cancelled using a SOCKcallCANCEL request.\"},\n\t{1011, \"EDC8011I\", \"A name of a PFS was specified that either is not configured or is not a Sockets PFS.\"},\n\t{1100, \"EDC8100I\", \"Block device required.\"},\n\t{1101, \"EDC8101I\", \"Text file busy.\"},\n\t{1102, \"EDC8102I\", \"Operation would block.\"},\n\t{1103, \"EDC8103I\", \"Operation now in progress.\"},\n\t{1104, \"EDC8104I\", \"Connection already in progress.\"},\n\t{1105, \"EDC8105I\", \"Socket operation on non-socket.\"},\n\t{1106, \"EDC8106I\", \"Destination address required.\"},\n\t{1107, \"EDC8107I\", \"Message too long.\"},\n\t{1108, \"EDC8108I\", \"Protocol wrong type for socket.\"},\n\t{1109, \"EDC8109I\", \"Protocol not available.\"},\n\t{1110, \"EDC8110I\", \"Protocol not supported.\"},\n\t{1111, \"EDC8111I\", \"Socket type not supported.\"},\n\t{1112, \"EDC8112I\", \"Operation not supported on socket.\"},\n\t{1113, \"EDC8113I\", \"Protocol family not supported.\"},\n\t{1114, \"EDC8114I\", \"Address family not supported.\"},\n\t{1115, \"EDC8115I\", \"Address already in use.\"},\n\t{1116, \"EDC8116I\", \"Address not available.\"},\n\t{1117, \"EDC8117I\", \"Network is down.\"},\n\t{1118, \"EDC8118I\", \"Network is unreachable.\"},\n\t{1119, \"EDC8119I\", \"Network dropped connection on reset.\"},\n\t{1120, \"EDC8120I\", \"Connection ended abnormally.\"},\n\t{1121, \"EDC8121I\", \"Connection reset.\"},\n\t{1122, \"EDC8122I\", \"No buffer space available.\"},\n\t{1123, \"EDC8123I\", \"Socket already connected.\"},\n\t{1124, \"EDC8124I\", \"Socket not connected.\"},\n\t{1125, \"EDC8125I\", \"Can't send after socket shutdown.\"},\n\t{1126, \"EDC8126I\", \"Too many references; can't splice.\"},\n\t{1127, \"EDC8127I\", \"Connection timed out.\"},\n\t{1128, \"EDC8128I\", \"Connection refused.\"},\n\t{1129, \"EDC8129I\", \"Host is not available.\"},\n\t{1130, \"EDC8130I\", \"Host cannot be reached.\"},\n\t{1131, \"EDC8131I\", \"Too many processes.\"},\n\t{1132, \"EDC8132I\", \"Too many users.\"},\n\t{1133, \"EDC8133I\", \"Disk quota exceeded.\"},\n\t{1134, \"EDC8134I\", \"Stale file handle.\"},\n\t{1135, \"\", \"\"},\n\t{1136, \"EDC8136I\", \"File is not a STREAM.\"},\n\t{1137, \"EDC8137I\", \"STREAMS ioctl() timeout.\"},\n\t{1138, \"EDC8138I\", \"No STREAMS resources.\"},\n\t{1139, \"EDC8139I\", \"The message identified by set_id and msg_id is not in the message catalog.\"},\n\t{1140, \"EDC8140I\", \"Bad message.\"},\n\t{1141, \"EDC8141I\", \"Identifier removed.\"},\n\t{1142, \"\", \"\"},\n\t{1143, \"\", \"\"},\n\t{1144, \"EDC8144I\", \"The link has been severed.\"},\n\t{1145, \"\", \"\"},\n\t{1146, \"\", \"\"},\n\t{1147, \"\", \"\"},\n\t{1148, \"EDC8148I\", \"Protocol error.\"},\n\t{1149, \"EDC8149I\", \"Multihop not allowed.\"},\n\t{1150, \"\", \"\"},\n\t{1151, \"\", \"\"},\n\t{1152, \"EDC8152I\", \"The asynchronous I/O request has been canceled.\"},\n\t{1159, \"EDC8159I\", \"Function call was interrupted before any data was received.\"},\n\t{1160, \"EDC8160I\", \"Socket reuse is not supported.\"},\n\t{1161, \"EDC8161I\", \"The file system cannot currently be moved.\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGABT\", \"aborted\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGPOLL\", \"pollable event\"},\n\t{6, \"SIGURG\", \"urgent I/O condition\"},\n\t{7, \"SIGSTOP\", \"stop process\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad argument to routine\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGABND\", \"abend\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGQUIT\", \"quit\"},\n\t{25, \"SIGTSTP\", \"stopped\"},\n\t{26, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{27, \"SIGIOER\", \"I/O error\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{30, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{31, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"danger\"},\n\t{34, \"SIGTHSTOP\", \"stop thread\"},\n\t{35, \"SIGTHCONT\", \"continue thread\"},\n\t{37, \"SIGTRACE\", \"trace\"},\n\t{38, \"\", \"DCE\"},\n\t{39, \"SIGDUMP\", \"dump\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"arm\", \"arm64\"). DO NOT EDIT.\n\n//go:build linux && (arm || arm64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsArm is the registers used by arm binaries.\ntype PtraceRegsArm struct {\n\tUregs [18]uint32\n}\n\n// PtraceGetRegsArm fetches the registers used by arm binaries.\nfunc PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsArm sets the registers used by arm binaries.\nfunc PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsArm64 is the registers used by arm64 binaries.\ntype PtraceRegsArm64 struct {\n\tRegs   [31]uint64\n\tSp     uint64\n\tPc     uint64\n\tPstate uint64\n}\n\n// PtraceGetRegsArm64 fetches the registers used by arm64 binaries.\nfunc PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsArm64 sets the registers used by arm64 binaries.\nfunc PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go",
    "content": "// Code generated by linux/mkall.go generatePtraceRegSet(\"arm64\"). DO NOT EDIT.\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceGetRegSetArm64 fetches the registers used by arm64 binaries.\nfunc PtraceGetRegSetArm64(pid, addr int, regsout *PtraceRegsArm64) error {\n\tiovec := Iovec{(*byte)(unsafe.Pointer(regsout)), uint64(unsafe.Sizeof(*regsout))}\n\treturn ptracePtr(PTRACE_GETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec))\n}\n\n// PtraceSetRegSetArm64 sets the registers used by arm64 binaries.\nfunc PtraceSetRegSetArm64(pid, addr int, regs *PtraceRegsArm64) error {\n\tiovec := Iovec{(*byte)(unsafe.Pointer(regs)), uint64(unsafe.Sizeof(*regs))}\n\treturn ptracePtr(PTRACE_SETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"mips\", \"mips64\"). DO NOT EDIT.\n\n//go:build linux && (mips || mips64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsMips is the registers used by mips binaries.\ntype PtraceRegsMips struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips fetches the registers used by mips binaries.\nfunc PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips sets the registers used by mips binaries.\nfunc PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsMips64 is the registers used by mips64 binaries.\ntype PtraceRegsMips64 struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips64 fetches the registers used by mips64 binaries.\nfunc PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips64 sets the registers used by mips64 binaries.\nfunc PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"mipsle\", \"mips64le\"). DO NOT EDIT.\n\n//go:build linux && (mipsle || mips64le)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsMipsle is the registers used by mipsle binaries.\ntype PtraceRegsMipsle struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMipsle fetches the registers used by mipsle binaries.\nfunc PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMipsle sets the registers used by mipsle binaries.\nfunc PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsMips64le is the registers used by mips64le binaries.\ntype PtraceRegsMips64le struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips64le fetches the registers used by mips64le binaries.\nfunc PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips64le sets the registers used by mips64le binaries.\nfunc PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zptrace_x86_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"386\", \"amd64\"). DO NOT EDIT.\n\n//go:build linux && (386 || amd64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegs386 is the registers used by 386 binaries.\ntype PtraceRegs386 struct {\n\tEbx      int32\n\tEcx      int32\n\tEdx      int32\n\tEsi      int32\n\tEdi      int32\n\tEbp      int32\n\tEax      int32\n\tXds      int32\n\tXes      int32\n\tXfs      int32\n\tXgs      int32\n\tOrig_eax int32\n\tEip      int32\n\tXcs      int32\n\tEflags   int32\n\tEsp      int32\n\tXss      int32\n}\n\n// PtraceGetRegs386 fetches the registers used by 386 binaries.\nfunc PtraceGetRegs386(pid int, regsout *PtraceRegs386) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegs386 sets the registers used by 386 binaries.\nfunc PtraceSetRegs386(pid int, regs *PtraceRegs386) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsAmd64 is the registers used by amd64 binaries.\ntype PtraceRegsAmd64 struct {\n\tR15      uint64\n\tR14      uint64\n\tR13      uint64\n\tR12      uint64\n\tRbp      uint64\n\tRbx      uint64\n\tR11      uint64\n\tR10      uint64\n\tR9       uint64\n\tR8       uint64\n\tRax      uint64\n\tRcx      uint64\n\tRdx      uint64\n\tRsi      uint64\n\tRdi      uint64\n\tOrig_rax uint64\n\tRip      uint64\n\tCs       uint64\n\tEflags   uint64\n\tRsp      uint64\n\tSs       uint64\n\tFs_base  uint64\n\tGs_base  uint64\n\tDs       uint64\n\tEs       uint64\n\tFs       uint64\n\tGs       uint64\n}\n\n// PtraceGetRegsAmd64 fetches the registers used by amd64 binaries.\nfunc PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsAmd64 sets the registers used by amd64 binaries.\nfunc PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s",
    "content": "// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build zos && s390x\n#include \"textflag.h\"\n\n//  provide the address of function variable to be fixed up.\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FlistxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Flistxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FremovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fremovexattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FgetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fgetxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FsetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fsetxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_accept4Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·accept4(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_RemovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Removexattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_Dup3Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Dup3(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_DirfdAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Dirfd(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollCreateAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollCreate(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollCreate1Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollCreate1(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollCtlAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollCtl(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollPwaitAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollPwait(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollWaitAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollWait(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EventfdAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Eventfd(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FaccessatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Faccessat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FchmodatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fchmodat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FchownatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fchownat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FdatasyncAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fdatasync(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_fstatatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·fstatat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LgetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Lgetxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LsetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Lsetxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FstatfsAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fstatfs(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FutimesAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Futimes(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FutimesatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Futimesat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_GetrandomAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Getrandom(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_InotifyInitAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·InotifyInit(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_InotifyInit1Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·InotifyInit1(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_InotifyAddWatchAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·InotifyAddWatch(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_InotifyRmWatchAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·InotifyRmWatch(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_ListxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Listxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LlistxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Llistxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LremovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Lremovexattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LutimesAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Lutimes(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_StatfsAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Statfs(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_SyncfsAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Syncfs(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_UnshareAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Unshare(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LinkatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Linkat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_MkdiratAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Mkdirat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_MknodatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Mknodat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_PivotRootAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·PivotRoot(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_PrctlAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Prctl(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_PrlimitAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Prlimit(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_RenameatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Renameat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_Renameat2Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Renameat2(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_SethostnameAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Sethostname(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_SetnsAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Setns(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_SymlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Symlinkat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_UnlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Unlinkat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_openatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·openat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_openat2Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·openat2(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_utimensatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·utimensat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go",
    "content": "// go run mksyscall_aix_ppc.go -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc\n\npackage unix\n\n/*\n#include <stdint.h>\n#include <stddef.h>\nint utimes(uintptr_t, uintptr_t);\nint utimensat(int, uintptr_t, uintptr_t, int);\nint getcwd(uintptr_t, size_t);\nint accept(int, uintptr_t, uintptr_t);\nint getdirent(int, uintptr_t, size_t);\nint wait4(int, uintptr_t, int, uintptr_t);\nint ioctl(int, int, uintptr_t);\nint fcntl(uintptr_t, int, uintptr_t);\nint fsync_range(int, int, long long, long long);\nint acct(uintptr_t);\nint chdir(uintptr_t);\nint chroot(uintptr_t);\nint close(int);\nint dup(int);\nvoid exit(int);\nint faccessat(int, uintptr_t, unsigned int, int);\nint fchdir(int);\nint fchmod(int, unsigned int);\nint fchmodat(int, uintptr_t, unsigned int, int);\nint fchownat(int, uintptr_t, int, int, int);\nint fdatasync(int);\nint getpgid(int);\nint getpgrp();\nint getpid();\nint getppid();\nint getpriority(int, int);\nint getrusage(int, uintptr_t);\nint getsid(int);\nint kill(int, int);\nint syslog(int, uintptr_t, size_t);\nint mkdir(int, uintptr_t, unsigned int);\nint mkdirat(int, uintptr_t, unsigned int);\nint mkfifo(uintptr_t, unsigned int);\nint mknod(uintptr_t, unsigned int, int);\nint mknodat(int, uintptr_t, unsigned int, int);\nint nanosleep(uintptr_t, uintptr_t);\nint open64(uintptr_t, int, unsigned int);\nint openat(int, uintptr_t, int, unsigned int);\nint read(int, uintptr_t, size_t);\nint readlink(uintptr_t, uintptr_t, size_t);\nint renameat(int, uintptr_t, int, uintptr_t);\nint setdomainname(uintptr_t, size_t);\nint sethostname(uintptr_t, size_t);\nint setpgid(int, int);\nint setsid();\nint settimeofday(uintptr_t);\nint setuid(int);\nint setgid(int);\nint setpriority(int, int, int);\nint statx(int, uintptr_t, int, int, uintptr_t);\nint sync();\nuintptr_t times(uintptr_t);\nint umask(int);\nint uname(uintptr_t);\nint unlink(uintptr_t);\nint unlinkat(int, uintptr_t, int);\nint ustat(int, uintptr_t);\nint write(int, uintptr_t, size_t);\nint dup2(int, int);\nint posix_fadvise64(int, long long, long long, int);\nint fchown(int, int, int);\nint fstat(int, uintptr_t);\nint fstatat(int, uintptr_t, uintptr_t, int);\nint fstatfs(int, uintptr_t);\nint ftruncate(int, long long);\nint getegid();\nint geteuid();\nint getgid();\nint getuid();\nint lchown(uintptr_t, int, int);\nint listen(int, int);\nint lstat(uintptr_t, uintptr_t);\nint pause();\nint pread64(int, uintptr_t, size_t, long long);\nint pwrite64(int, uintptr_t, size_t, long long);\n#define c_select select\nint select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint setregid(int, int);\nint setreuid(int, int);\nint shutdown(int, int);\nlong long splice(int, uintptr_t, int, uintptr_t, int, int);\nint stat(uintptr_t, uintptr_t);\nint statfs(uintptr_t, uintptr_t);\nint truncate(uintptr_t, long long);\nint bind(int, uintptr_t, uintptr_t);\nint connect(int, uintptr_t, uintptr_t);\nint getgroups(int, uintptr_t);\nint setgroups(int, uintptr_t);\nint getsockopt(int, int, int, uintptr_t, uintptr_t);\nint setsockopt(int, int, int, uintptr_t, uintptr_t);\nint socket(int, int, int);\nint socketpair(int, int, int, uintptr_t);\nint getpeername(int, uintptr_t, uintptr_t);\nint getsockname(int, uintptr_t, uintptr_t);\nint recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint nrecvmsg(int, uintptr_t, int);\nint nsendmsg(int, uintptr_t, int);\nint munmap(uintptr_t, uintptr_t);\nint madvise(uintptr_t, size_t, int);\nint mprotect(uintptr_t, size_t, int);\nint mlock(uintptr_t, size_t);\nint mlockall(int);\nint msync(uintptr_t, size_t, int);\nint munlock(uintptr_t, size_t);\nint munlockall();\nint pipe(uintptr_t);\nint poll(uintptr_t, int, int);\nint gettimeofday(uintptr_t, uintptr_t);\nint time(uintptr_t);\nint utime(uintptr_t, uintptr_t);\nunsigned long long getsystemcfg(int);\nint umount(uintptr_t);\nint getrlimit64(int, uintptr_t);\nlong long lseek64(int, long long, int);\nuintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long);\n\n*/\nimport \"C\"\nimport (\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getcwd(buf []byte) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirent(fd int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {\n\tr0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))\n\twpid = Pid_t(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))\n\tr = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))\n\tval = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsyncRange(fd int, how int, start int64, length int64) (err error) {\n\tr0, er := C.fsync_range(C.int(fd), C.int(how), C.longlong(start), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.acct(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.chdir(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.chroot(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\tr0, er := C.close(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, er := C.dup(C.int(oldfd))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tC.exit(C.int(code))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\tr0, er := C.fchdir(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\tr0, er := C.fchmod(C.int(fd), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\tr0, er := C.fdatasync(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, er := C.getpgid(C.int(pid))\n\tpgid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pid int) {\n\tr0, _ := C.getpgrp()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := C.getpid()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := C.getppid()\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, er := C.getpriority(C.int(which), C.int(who))\n\tprio = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\tr0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, er := C.getsid(C.int(pid))\n\tsid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\tr0, er := C.kill(C.int(pid), C.int(sig))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(dirfd int, path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\tr0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tvar _p2 int\n\t_p2 = len(buf)\n\tr0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(oldpath)))\n\t_p1 := uintptr(unsafe.Pointer(C.CString(newpath)))\n\tr0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\tr0, er := C.setpgid(C.int(pid), C.int(pgid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, er := C.setsid()\n\tpid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\tr0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\tr0, er := C.setuid(C.int(uid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\tr0, er := C.setgid(C.int(uid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\tr0, er := C.setpriority(C.int(which), C.int(who), C.int(prio))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tC.sync()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms))))\n\tticks = uintptr(r0)\n\tif uintptr(r0) == ^uintptr(0) && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := C.umask(C.int(mask))\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\tr0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.unlink(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\tr0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\tr0, er := C.dup2(C.int(oldfd), C.int(newfd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\tr0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\tr0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *Stat_t) (err error) {\n\tr0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\tr0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\tr0, er := C.ftruncate(C.int(fd), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := C.getegid()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := C.geteuid()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := C.getgid()\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := C.getuid()\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\tr0, er := C.listen(C.int(s), C.int(n))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *Stat_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\tr0, er := C.pause()\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, er := C.c_select(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\tr0, er := C.setregid(C.int(rgid), C.int(egid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\tr0, er := C.setreuid(C.int(ruid), C.int(euid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\tr0, er := C.shutdown(C.int(fd), C.int(how))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags))\n\tn = int64(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, statptr *Stat_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(statptr))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\tr0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\tr0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))\n\tnn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\tr0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\tr0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\tr0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, er := C.socket(C.int(domain), C.int(typ), C.int(proto))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\tr0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, er := C.nrecvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, er := C.nsendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\tr0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\tr0, er := C.mlockall(C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\tr0, er := C.munlockall()\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\tr0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *Timeval, tzp *Timezone) (err error) {\n\tr0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t))))\n\ttt = Time_t(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsystemcfg(label int) (n uint64) {\n\tr0, _ := C.getsystemcfg(C.int(label))\n\tn = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc umount(target string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(target)))\n\tr0, er := C.umount(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\tr0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence))\n\toff = int64(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset))\n\txaddr = uintptr(r0)\n\tif uintptr(r0) == ^uintptr(0) && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutimes(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutimensat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), flag)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getcwd(buf []byte) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, e1 := callgetcwd(uintptr(unsafe.Pointer(_p0)), len(buf))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, e1 := callaccept(s, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirent(fd int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, e1 := callgetdirent(fd, uintptr(unsafe.Pointer(_p0)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {\n\tr0, e1 := callwait4(int(pid), uintptr(unsafe.Pointer(status)), options, uintptr(unsafe.Pointer(rusage)))\n\twpid = Pid_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\t_, e1 := callioctl(fd, req, arg)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\t_, e1 := callioctl_ptr(fd, req, arg)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {\n\tr0, e1 := callfcntl(fd, cmd, uintptr(arg))\n\tr = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {\n\t_, e1 := callfcntl(fd, cmd, uintptr(unsafe.Pointer(lk)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, e1 := callfcntl(uintptr(fd), cmd, uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsyncRange(fd int, how int, start int64, length int64) (err error) {\n\t_, e1 := callfsync_range(fd, how, start, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callacct(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callchdir(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callchroot(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, e1 := callclose(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, e1 := calldup(oldfd)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tcallexit(code)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfaccessat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, e1 := callfchdir(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, e1 := callfchmod(fd, mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfchmodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfchownat(dirfd, uintptr(unsafe.Pointer(_p0)), uid, gid, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, e1 := callfdatasync(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, e1 := callgetpgid(pid)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pid int) {\n\tr0, _ := callgetpgrp()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := callgetpid()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := callgetppid()\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, e1 := callgetpriority(which, who)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, e1 := callgetrusage(who, uintptr(unsafe.Pointer(rusage)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, e1 := callgetsid(pid)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\t_, e1 := callkill(pid, int(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, e1 := callsyslog(typ, uintptr(unsafe.Pointer(_p0)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkdir(dirfd, uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkdirat(dirfd, uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkfifo(uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmknod(uintptr(unsafe.Pointer(_p0)), mode, dev)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmknodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, dev)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, e1 := callnanosleep(uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, e1 := callopen64(uintptr(unsafe.Pointer(_p0)), mode, perm)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, e1 := callopenat(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mode)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callread(fd, uintptr(unsafe.Pointer(_p0)), len(p))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tr0, e1 := callreadlink(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callrenameat(olddirfd, uintptr(unsafe.Pointer(_p0)), newdirfd, uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, e1 := callsetdomainname(uintptr(unsafe.Pointer(_p0)), len(p))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, e1 := callsethostname(uintptr(unsafe.Pointer(_p0)), len(p))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, e1 := callsetpgid(pid, pgid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, e1 := callsetsid()\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, e1 := callsettimeofday(uintptr(unsafe.Pointer(tv)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, e1 := callsetuid(uid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\t_, e1 := callsetgid(uid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, e1 := callsetpriority(which, who, prio)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstatx(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mask, uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tcallsync()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, e1 := calltimes(uintptr(unsafe.Pointer(tms)))\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := callumask(mask)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, e1 := calluname(uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callunlink(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callunlinkat(dirfd, uintptr(unsafe.Pointer(_p0)), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, e1 := callustat(dev, uintptr(unsafe.Pointer(ubuf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callwrite(fd, uintptr(unsafe.Pointer(_p0)), len(p))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, e1 := calldup2(oldfd, newfd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, e1 := callposix_fadvise64(fd, offset, length, advice)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, e1 := callfchown(fd, uid, gid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *Stat_t) (err error) {\n\t_, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfstatat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, e1 := callfstatfs(fd, uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, e1 := callftruncate(fd, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := callgetegid()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := callgeteuid()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := callgetgid()\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := callgetuid()\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calllchown(uintptr(unsafe.Pointer(_p0)), uid, gid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, e1 := calllisten(s, n)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calllstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, e1 := callpause()\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callpread64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callpwrite64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, e1 := callselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, e1 := callpselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, e1 := callsetregid(rgid, egid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, e1 := callsetreuid(ruid, euid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, e1 := callshutdown(fd, how)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, e1 := callsplice(rfd, uintptr(unsafe.Pointer(roff)), wfd, uintptr(unsafe.Pointer(woff)), len, flags)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, statptr *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statptr)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstatfs(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calltruncate(uintptr(unsafe.Pointer(_p0)), length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e1 := callbind(s, uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e1 := callconnect(s, uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, e1 := callgetgroups(n, uintptr(unsafe.Pointer(list)))\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, e1 := callsetgroups(n, uintptr(unsafe.Pointer(list)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, e1 := callgetsockopt(s, level, name, uintptr(val), uintptr(unsafe.Pointer(vallen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, e1 := callsetsockopt(s, level, name, uintptr(val), vallen)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, e1 := callsocket(domain, typ, proto)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, e1 := callsocketpair(domain, typ, proto, uintptr(unsafe.Pointer(fd)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e1 := callgetpeername(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e1 := callgetsockname(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callrecvfrom(fd, uintptr(unsafe.Pointer(_p0)), len(p), flags, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, e1 := callsendto(s, uintptr(unsafe.Pointer(_p0)), len(buf), flags, uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, e1 := callnrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, e1 := callnsendmsg(s, uintptr(unsafe.Pointer(msg)), flags)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, e1 := callmunmap(addr, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmadvise(uintptr(unsafe.Pointer(_p0)), len(b), advice)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmprotect(uintptr(unsafe.Pointer(_p0)), len(b), prot)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmlock(uintptr(unsafe.Pointer(_p0)), len(b))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, e1 := callmlockall(flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmsync(uintptr(unsafe.Pointer(_p0)), len(b), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmunlock(uintptr(unsafe.Pointer(_p0)), len(b))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, e1 := callmunlockall()\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\t_, e1 := callpipe(uintptr(unsafe.Pointer(p)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, e1 := callpoll(uintptr(unsafe.Pointer(fds)), nfds, timeout)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *Timeval, tzp *Timezone) (err error) {\n\t_, e1 := callgettimeofday(uintptr(unsafe.Pointer(tv)), uintptr(unsafe.Pointer(tzp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, e1 := calltime(uintptr(unsafe.Pointer(t)))\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutime(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsystemcfg(label int) (n uint64) {\n\tr0, _ := callgetsystemcfg(label)\n\tn = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc umount(target string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callumount(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, e1 := callgetrlimit(resource, uintptr(unsafe.Pointer(rlim)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, e1 := calllseek(fd, offset, whence)\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, e1 := callmmap64(addr, length, prot, flags, fd, offset)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64 && gc\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_accept accept \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getdirent getdirent \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fsync_range fsync_range \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_acct acct \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_chdir chdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_chroot chroot \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_close close \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_dup dup \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_exit exit \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fdatasync fdatasync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpid getpid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getppid getppid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsid getsid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_kill kill \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_syslog syslog \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mknod mknod \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_open64 open64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_openat openat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_read read \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_readlink readlink \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_renameat renameat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setdomainname setdomainname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sethostname sethostname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setsid setsid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setuid setuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setgid setgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_statx statx \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sync sync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_times times \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_umask umask \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_uname uname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_unlink unlink \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ustat ustat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_write write \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_posix_fadvise64 posix_fadvise64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchown fchown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstat fstat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getegid getegid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getgid getgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getuid getuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lchown lchown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_listen listen \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lstat lstat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pause pause \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pread64 pread64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pwrite64 pwrite64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_select select \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pselect pselect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setregid setregid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_splice splice \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_stat stat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_statfs statfs \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_truncate truncate \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_bind bind \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_connect connect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_socket socket \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sendto sendto \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nrecvmsg nrecvmsg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nsendmsg nsendmsg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munmap munmap \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_madvise madvise \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mlock mlock \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_msync msync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munlock munlock \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pipe pipe \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_poll poll \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_time time \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_utime utime \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_umount umount \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lseek lseek \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mmap64 mmap64 \"libc.a/shr_64.o\"\n\n//go:linkname libc_utimes libc_utimes\n//go:linkname libc_utimensat libc_utimensat\n//go:linkname libc_getcwd libc_getcwd\n//go:linkname libc_accept libc_accept\n//go:linkname libc_getdirent libc_getdirent\n//go:linkname libc_wait4 libc_wait4\n//go:linkname libc_ioctl libc_ioctl\n//go:linkname libc_fcntl libc_fcntl\n//go:linkname libc_fsync_range libc_fsync_range\n//go:linkname libc_acct libc_acct\n//go:linkname libc_chdir libc_chdir\n//go:linkname libc_chroot libc_chroot\n//go:linkname libc_close libc_close\n//go:linkname libc_dup libc_dup\n//go:linkname libc_exit libc_exit\n//go:linkname libc_faccessat libc_faccessat\n//go:linkname libc_fchdir libc_fchdir\n//go:linkname libc_fchmod libc_fchmod\n//go:linkname libc_fchmodat libc_fchmodat\n//go:linkname libc_fchownat libc_fchownat\n//go:linkname libc_fdatasync libc_fdatasync\n//go:linkname libc_getpgid libc_getpgid\n//go:linkname libc_getpgrp libc_getpgrp\n//go:linkname libc_getpid libc_getpid\n//go:linkname libc_getppid libc_getppid\n//go:linkname libc_getpriority libc_getpriority\n//go:linkname libc_getrusage libc_getrusage\n//go:linkname libc_getsid libc_getsid\n//go:linkname libc_kill libc_kill\n//go:linkname libc_syslog libc_syslog\n//go:linkname libc_mkdir libc_mkdir\n//go:linkname libc_mkdirat libc_mkdirat\n//go:linkname libc_mkfifo libc_mkfifo\n//go:linkname libc_mknod libc_mknod\n//go:linkname libc_mknodat libc_mknodat\n//go:linkname libc_nanosleep libc_nanosleep\n//go:linkname libc_open64 libc_open64\n//go:linkname libc_openat libc_openat\n//go:linkname libc_read libc_read\n//go:linkname libc_readlink libc_readlink\n//go:linkname libc_renameat libc_renameat\n//go:linkname libc_setdomainname libc_setdomainname\n//go:linkname libc_sethostname libc_sethostname\n//go:linkname libc_setpgid libc_setpgid\n//go:linkname libc_setsid libc_setsid\n//go:linkname libc_settimeofday libc_settimeofday\n//go:linkname libc_setuid libc_setuid\n//go:linkname libc_setgid libc_setgid\n//go:linkname libc_setpriority libc_setpriority\n//go:linkname libc_statx libc_statx\n//go:linkname libc_sync libc_sync\n//go:linkname libc_times libc_times\n//go:linkname libc_umask libc_umask\n//go:linkname libc_uname libc_uname\n//go:linkname libc_unlink libc_unlink\n//go:linkname libc_unlinkat libc_unlinkat\n//go:linkname libc_ustat libc_ustat\n//go:linkname libc_write libc_write\n//go:linkname libc_dup2 libc_dup2\n//go:linkname libc_posix_fadvise64 libc_posix_fadvise64\n//go:linkname libc_fchown libc_fchown\n//go:linkname libc_fstat libc_fstat\n//go:linkname libc_fstatat libc_fstatat\n//go:linkname libc_fstatfs libc_fstatfs\n//go:linkname libc_ftruncate libc_ftruncate\n//go:linkname libc_getegid libc_getegid\n//go:linkname libc_geteuid libc_geteuid\n//go:linkname libc_getgid libc_getgid\n//go:linkname libc_getuid libc_getuid\n//go:linkname libc_lchown libc_lchown\n//go:linkname libc_listen libc_listen\n//go:linkname libc_lstat libc_lstat\n//go:linkname libc_pause libc_pause\n//go:linkname libc_pread64 libc_pread64\n//go:linkname libc_pwrite64 libc_pwrite64\n//go:linkname libc_select libc_select\n//go:linkname libc_pselect libc_pselect\n//go:linkname libc_setregid libc_setregid\n//go:linkname libc_setreuid libc_setreuid\n//go:linkname libc_shutdown libc_shutdown\n//go:linkname libc_splice libc_splice\n//go:linkname libc_stat libc_stat\n//go:linkname libc_statfs libc_statfs\n//go:linkname libc_truncate libc_truncate\n//go:linkname libc_bind libc_bind\n//go:linkname libc_connect libc_connect\n//go:linkname libc_getgroups libc_getgroups\n//go:linkname libc_setgroups libc_setgroups\n//go:linkname libc_getsockopt libc_getsockopt\n//go:linkname libc_setsockopt libc_setsockopt\n//go:linkname libc_socket libc_socket\n//go:linkname libc_socketpair libc_socketpair\n//go:linkname libc_getpeername libc_getpeername\n//go:linkname libc_getsockname libc_getsockname\n//go:linkname libc_recvfrom libc_recvfrom\n//go:linkname libc_sendto libc_sendto\n//go:linkname libc_nrecvmsg libc_nrecvmsg\n//go:linkname libc_nsendmsg libc_nsendmsg\n//go:linkname libc_munmap libc_munmap\n//go:linkname libc_madvise libc_madvise\n//go:linkname libc_mprotect libc_mprotect\n//go:linkname libc_mlock libc_mlock\n//go:linkname libc_mlockall libc_mlockall\n//go:linkname libc_msync libc_msync\n//go:linkname libc_munlock libc_munlock\n//go:linkname libc_munlockall libc_munlockall\n//go:linkname libc_pipe libc_pipe\n//go:linkname libc_poll libc_poll\n//go:linkname libc_gettimeofday libc_gettimeofday\n//go:linkname libc_time libc_time\n//go:linkname libc_utime libc_utime\n//go:linkname libc_getsystemcfg libc_getsystemcfg\n//go:linkname libc_umount libc_umount\n//go:linkname libc_getrlimit libc_getrlimit\n//go:linkname libc_lseek libc_lseek\n//go:linkname libc_mmap64 libc_mmap64\n\ntype syscallFunc uintptr\n\nvar (\n\tlibc_utimes,\n\tlibc_utimensat,\n\tlibc_getcwd,\n\tlibc_accept,\n\tlibc_getdirent,\n\tlibc_wait4,\n\tlibc_ioctl,\n\tlibc_fcntl,\n\tlibc_fsync_range,\n\tlibc_acct,\n\tlibc_chdir,\n\tlibc_chroot,\n\tlibc_close,\n\tlibc_dup,\n\tlibc_exit,\n\tlibc_faccessat,\n\tlibc_fchdir,\n\tlibc_fchmod,\n\tlibc_fchmodat,\n\tlibc_fchownat,\n\tlibc_fdatasync,\n\tlibc_getpgid,\n\tlibc_getpgrp,\n\tlibc_getpid,\n\tlibc_getppid,\n\tlibc_getpriority,\n\tlibc_getrusage,\n\tlibc_getsid,\n\tlibc_kill,\n\tlibc_syslog,\n\tlibc_mkdir,\n\tlibc_mkdirat,\n\tlibc_mkfifo,\n\tlibc_mknod,\n\tlibc_mknodat,\n\tlibc_nanosleep,\n\tlibc_open64,\n\tlibc_openat,\n\tlibc_read,\n\tlibc_readlink,\n\tlibc_renameat,\n\tlibc_setdomainname,\n\tlibc_sethostname,\n\tlibc_setpgid,\n\tlibc_setsid,\n\tlibc_settimeofday,\n\tlibc_setuid,\n\tlibc_setgid,\n\tlibc_setpriority,\n\tlibc_statx,\n\tlibc_sync,\n\tlibc_times,\n\tlibc_umask,\n\tlibc_uname,\n\tlibc_unlink,\n\tlibc_unlinkat,\n\tlibc_ustat,\n\tlibc_write,\n\tlibc_dup2,\n\tlibc_posix_fadvise64,\n\tlibc_fchown,\n\tlibc_fstat,\n\tlibc_fstatat,\n\tlibc_fstatfs,\n\tlibc_ftruncate,\n\tlibc_getegid,\n\tlibc_geteuid,\n\tlibc_getgid,\n\tlibc_getuid,\n\tlibc_lchown,\n\tlibc_listen,\n\tlibc_lstat,\n\tlibc_pause,\n\tlibc_pread64,\n\tlibc_pwrite64,\n\tlibc_select,\n\tlibc_pselect,\n\tlibc_setregid,\n\tlibc_setreuid,\n\tlibc_shutdown,\n\tlibc_splice,\n\tlibc_stat,\n\tlibc_statfs,\n\tlibc_truncate,\n\tlibc_bind,\n\tlibc_connect,\n\tlibc_getgroups,\n\tlibc_setgroups,\n\tlibc_getsockopt,\n\tlibc_setsockopt,\n\tlibc_socket,\n\tlibc_socketpair,\n\tlibc_getpeername,\n\tlibc_getsockname,\n\tlibc_recvfrom,\n\tlibc_sendto,\n\tlibc_nrecvmsg,\n\tlibc_nsendmsg,\n\tlibc_munmap,\n\tlibc_madvise,\n\tlibc_mprotect,\n\tlibc_mlock,\n\tlibc_mlockall,\n\tlibc_msync,\n\tlibc_munlock,\n\tlibc_munlockall,\n\tlibc_pipe,\n\tlibc_poll,\n\tlibc_gettimeofday,\n\tlibc_time,\n\tlibc_utime,\n\tlibc_getsystemcfg,\n\tlibc_umount,\n\tlibc_getrlimit,\n\tlibc_lseek,\n\tlibc_mmap64 syscallFunc\n)\n\n// Implemented in runtime/syscall_aix.go.\nfunc rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimes)), 2, _p0, times, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimensat)), 4, uintptr(dirfd), _p0, times, uintptr(flag), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getcwd)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_accept)), 3, uintptr(s), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getdirent)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_wait4)), 4, uintptr(pid), status, uintptr(options), rusage, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), arg, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fcntl)), 3, fd, uintptr(cmd), arg, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfsync_range(fd int, how int, start int64, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fsync_range)), 4, uintptr(fd), uintptr(how), uintptr(start), uintptr(length), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_acct)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chdir)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chroot)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callclose(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_close)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup(oldfd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup)), 1, uintptr(oldfd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callexit(code int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_exit)), 1, uintptr(code), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_faccessat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchdir(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchownat)), 5, uintptr(dirfd), _p0, uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfdatasync(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgid(pid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgrp() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpgrp)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetppid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getppid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrusage)), 2, uintptr(who), rusage, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsid(pid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callkill(pid int, sig int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_kill)), 2, uintptr(pid), uintptr(sig), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_syslog)), 3, uintptr(typ), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdir)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdirat)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkfifo)), 2, _p0, uintptr(mode), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknod)), 3, _p0, uintptr(mode), uintptr(dev), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(dev), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nanosleep)), 2, time, leftover, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_open64)), 3, _p0, uintptr(mode), uintptr(perm), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_openat)), 4, uintptr(dirfd), _p0, uintptr(flags), uintptr(mode), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_read)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_readlink)), 3, _p0, _p1, uintptr(_lenp1), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_renameat)), 4, uintptr(olddirfd), _p0, uintptr(newdirfd), _p1, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setdomainname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sethostname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setsid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_settimeofday)), 1, tv, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetuid(uid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgid(uid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setgid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statx)), 5, uintptr(dirfd), _p0, uintptr(flags), uintptr(mask), stat, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsync() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sync)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltimes(tms uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_times)), 1, tms, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumask(mask int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_umask)), 1, uintptr(mask), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calluname(buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_uname)), 1, buf, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlink)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlinkat)), 3, uintptr(dirfd), _p0, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ustat)), 2, uintptr(dev), ubuf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_write)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_posix_fadvise64)), 4, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstat)), 2, uintptr(fd), stat, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatat)), 4, uintptr(dirfd), _p0, stat, uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatfs)), 2, uintptr(fd), buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ftruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetegid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getegid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgeteuid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_geteuid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetuid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getuid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lchown)), 3, _p0, uintptr(uid), uintptr(gid), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllisten(s int, n int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_listen)), 2, uintptr(s), uintptr(n), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lstat)), 2, _p0, stat, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpause() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pause)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pread64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pwrite64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_select)), 5, uintptr(nfd), r, w, e, timeout, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pselect)), 6, uintptr(nfd), r, w, e, timeout, sigmask)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_shutdown)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_splice)), 6, uintptr(rfd), roff, uintptr(wfd), woff, uintptr(len), uintptr(flags))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, statptr, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statfs)), 2, _p0, buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_truncate)), 2, _p0, uintptr(length), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_bind)), 3, uintptr(s), addr, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_connect)), 3, uintptr(s), addr, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgroups)), 2, uintptr(n), list, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setgroups)), 2, uintptr(n), list, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), fd, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpeername)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsockname)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvfrom)), 6, uintptr(fd), _p0, uintptr(_lenp0), uintptr(flags), from, fromlen)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendto)), 6, uintptr(s), _p0, uintptr(_lenp0), uintptr(flags), to, addrlen)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nrecvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nsendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munmap)), 2, addr, length, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_madvise)), 3, _p0, uintptr(_lenp0), uintptr(advice), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mprotect)), 3, _p0, uintptr(_lenp0), uintptr(prot), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlockall(flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_msync)), 3, _p0, uintptr(_lenp0), uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlockall() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlockall)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpipe(p uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_pipe)), 1, p, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_poll)), 3, fds, uintptr(nfds), uintptr(timeout), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_gettimeofday)), 2, tv, tzp, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltime(t uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_time)), 1, t, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utime)), 2, _p0, buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsystemcfg(label int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumount(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_umount)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mmap64)), 6, addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64 && gccgo\n\npackage unix\n\n/*\n#include <stdint.h>\nint utimes(uintptr_t, uintptr_t);\nint utimensat(int, uintptr_t, uintptr_t, int);\nint getcwd(uintptr_t, size_t);\nint accept(int, uintptr_t, uintptr_t);\nint getdirent(int, uintptr_t, size_t);\nint wait4(int, uintptr_t, int, uintptr_t);\nint ioctl(int, int, uintptr_t);\nint fcntl(uintptr_t, int, uintptr_t);\nint fsync_range(int, int, long long, long long);\nint acct(uintptr_t);\nint chdir(uintptr_t);\nint chroot(uintptr_t);\nint close(int);\nint dup(int);\nvoid exit(int);\nint faccessat(int, uintptr_t, unsigned int, int);\nint fchdir(int);\nint fchmod(int, unsigned int);\nint fchmodat(int, uintptr_t, unsigned int, int);\nint fchownat(int, uintptr_t, int, int, int);\nint fdatasync(int);\nint getpgid(int);\nint getpgrp();\nint getpid();\nint getppid();\nint getpriority(int, int);\nint getrusage(int, uintptr_t);\nint getsid(int);\nint kill(int, int);\nint syslog(int, uintptr_t, size_t);\nint mkdir(int, uintptr_t, unsigned int);\nint mkdirat(int, uintptr_t, unsigned int);\nint mkfifo(uintptr_t, unsigned int);\nint mknod(uintptr_t, unsigned int, int);\nint mknodat(int, uintptr_t, unsigned int, int);\nint nanosleep(uintptr_t, uintptr_t);\nint open64(uintptr_t, int, unsigned int);\nint openat(int, uintptr_t, int, unsigned int);\nint read(int, uintptr_t, size_t);\nint readlink(uintptr_t, uintptr_t, size_t);\nint renameat(int, uintptr_t, int, uintptr_t);\nint setdomainname(uintptr_t, size_t);\nint sethostname(uintptr_t, size_t);\nint setpgid(int, int);\nint setsid();\nint settimeofday(uintptr_t);\nint setuid(int);\nint setgid(int);\nint setpriority(int, int, int);\nint statx(int, uintptr_t, int, int, uintptr_t);\nint sync();\nuintptr_t times(uintptr_t);\nint umask(int);\nint uname(uintptr_t);\nint unlink(uintptr_t);\nint unlinkat(int, uintptr_t, int);\nint ustat(int, uintptr_t);\nint write(int, uintptr_t, size_t);\nint dup2(int, int);\nint posix_fadvise64(int, long long, long long, int);\nint fchown(int, int, int);\nint fstat(int, uintptr_t);\nint fstatat(int, uintptr_t, uintptr_t, int);\nint fstatfs(int, uintptr_t);\nint ftruncate(int, long long);\nint getegid();\nint geteuid();\nint getgid();\nint getuid();\nint lchown(uintptr_t, int, int);\nint listen(int, int);\nint lstat(uintptr_t, uintptr_t);\nint pause();\nint pread64(int, uintptr_t, size_t, long long);\nint pwrite64(int, uintptr_t, size_t, long long);\n#define c_select select\nint select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint setregid(int, int);\nint setreuid(int, int);\nint shutdown(int, int);\nlong long splice(int, uintptr_t, int, uintptr_t, int, int);\nint stat(uintptr_t, uintptr_t);\nint statfs(uintptr_t, uintptr_t);\nint truncate(uintptr_t, long long);\nint bind(int, uintptr_t, uintptr_t);\nint connect(int, uintptr_t, uintptr_t);\nint getgroups(int, uintptr_t);\nint setgroups(int, uintptr_t);\nint getsockopt(int, int, int, uintptr_t, uintptr_t);\nint setsockopt(int, int, int, uintptr_t, uintptr_t);\nint socket(int, int, int);\nint socketpair(int, int, int, uintptr_t);\nint getpeername(int, uintptr_t, uintptr_t);\nint getsockname(int, uintptr_t, uintptr_t);\nint recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint nrecvmsg(int, uintptr_t, int);\nint nsendmsg(int, uintptr_t, int);\nint munmap(uintptr_t, uintptr_t);\nint madvise(uintptr_t, size_t, int);\nint mprotect(uintptr_t, size_t, int);\nint mlock(uintptr_t, size_t);\nint mlockall(int);\nint msync(uintptr_t, size_t, int);\nint munlock(uintptr_t, size_t);\nint munlockall();\nint pipe(uintptr_t);\nint poll(uintptr_t, int, int);\nint gettimeofday(uintptr_t, uintptr_t);\nint time(uintptr_t);\nint utime(uintptr_t, uintptr_t);\nunsigned long long getsystemcfg(int);\nint umount(uintptr_t);\nint getrlimit(int, uintptr_t);\nlong long lseek(int, long long, int);\nuintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long);\n\n*/\nimport \"C\"\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utimes(C.uintptr_t(_p0), C.uintptr_t(times)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(times), C.int(flag)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getcwd(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.accept(C.int(s), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getdirent(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.wait4(C.int(pid), C.uintptr_t(status), C.int(options), C.uintptr_t(rusage)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg))))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfsync_range(fd int, how int, start int64, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fsync_range(C.int(fd), C.int(how), C.longlong(start), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.acct(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.chdir(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.chroot(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callclose(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.close(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup(oldfd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.dup(C.int(oldfd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callexit(code int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.exit(C.int(code)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchdir(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchdir(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchmod(C.int(fd), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfdatasync(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fdatasync(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgid(pid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpgid(C.int(pid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgrp() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpgrp())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetppid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getppid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpriority(C.int(which), C.int(who)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getrusage(C.int(who), C.uintptr_t(rusage)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsid(pid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsid(C.int(pid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callkill(pid int, sig int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.kill(C.int(pid), C.int(sig)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.syslog(C.int(typ), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkfifo(C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nanosleep(C.uintptr_t(time), C.uintptr_t(leftover)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.read(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.readlink(C.uintptr_t(_p0), C.uintptr_t(_p1), C.size_t(_lenp1)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setdomainname(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sethostname(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setpgid(C.int(pid), C.int(pgid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setsid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.settimeofday(C.uintptr_t(tv)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetuid(uid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setuid(C.int(uid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgid(uid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setgid(C.int(uid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setpriority(C.int(which), C.int(who), C.int(prio)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsync() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sync())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltimes(tms uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.times(C.uintptr_t(tms)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumask(mask int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.umask(C.int(mask)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calluname(buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.uname(C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.unlink(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ustat(C.int(dev), C.uintptr_t(ubuf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.write(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.dup2(C.int(oldfd), C.int(newfd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchown(C.int(fd), C.int(uid), C.int(gid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstat(C.int(fd), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(stat), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstatfs(C.int(fd), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ftruncate(C.int(fd), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetegid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getegid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgeteuid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.geteuid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getgid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetuid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getuid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllisten(s int, n int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.listen(C.int(s), C.int(n)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lstat(C.uintptr_t(_p0), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpause() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pause())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pread64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pwrite64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.c_select(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pselect(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout), C.uintptr_t(sigmask)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setregid(C.int(rgid), C.int(egid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setreuid(C.int(ruid), C.int(euid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.shutdown(C.int(fd), C.int(how)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.splice(C.int(rfd), C.uintptr_t(roff), C.int(wfd), C.uintptr_t(woff), C.int(len), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(statptr)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.statfs(C.uintptr_t(_p0), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.truncate(C.uintptr_t(_p0), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.bind(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.connect(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getgroups(C.int(n), C.uintptr_t(list)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setgroups(C.int(n), C.uintptr_t(list)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.socket(C.int(domain), C.int(typ), C.int(proto)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpeername(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsockname(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.recvfrom(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(from), C.uintptr_t(fromlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sendto(C.int(s), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(to), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nrecvmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nsendmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munmap(C.uintptr_t(addr), C.uintptr_t(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.madvise(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(advice)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mprotect(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(prot)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mlock(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlockall(flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mlockall(C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.msync(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munlock(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlockall() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munlockall())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpipe(p uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pipe(C.uintptr_t(p)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.poll(C.uintptr_t(fds), C.int(nfds), C.int(timeout)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.gettimeofday(C.uintptr_t(tv), C.uintptr_t(tzp)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltime(t uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.time(C.uintptr_t(t)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utime(C.uintptr_t(_p0), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsystemcfg(label int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsystemcfg(C.int(label)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumount(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.umount(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getrlimit(C.int(resource), C.uintptr_t(rlim)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lseek(C.int(fd), C.longlong(offset), C.int(whence)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go",
    "content": "// go run mksyscall.go -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build darwin && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc closedir(dir uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_closedir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_closedir closedir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {\n\tr0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tres = Errno(r0)\n\treturn\n}\n\nvar libc_readdir_r_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readdir_r readdir_r \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe pipe \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getxattr getxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fgetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fgetxattr fgetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setxattr setxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsetxattr fsetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc removexattr(path string, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_removexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_removexattr removexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fremovexattr(fd int, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fremovexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fremovexattr fremovexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc listxattr(path string, dest *byte, size int, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listxattr listxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flistxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flistxattr flistxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kill(pid int, signum int, posix int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc renamexNp(from string, to string, flag uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renamex_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renamex_np renamex_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameatx_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameatx_np renameatx_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pthread_chdir_np(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_pthread_chdir_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pthread_chdir_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pthread_chdir_np pthread_chdir_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pthread_fchdir_np(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pthread_fchdir_np_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pthread_fchdir_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pthread_fchdir_np pthread_fchdir_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iov) > 0 {\n\t\t_p0 = unsafe.Pointer(&iov[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connectx_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connectx connectx \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendfile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendfile sendfile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmat shmat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\tresult = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmctl shmctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmdt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmdt shmdt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag))\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmget_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmget shmget \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefile(src string, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_clonefile_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefile clonefile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_clonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefileat clonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exchangedata(path1 string, path2 string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path1)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(path2)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_exchangedata_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_exchangedata_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exchangedata exchangedata \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fclonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fclonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fclonefileat fclonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := syscall_syscall(libc_getdtablesize_trampoline_addr, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\nvar libc_getdtablesize_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdtablesize getdtablesize \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_rawSyscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(attrBuf) > 0 {\n\t\t_p1 = unsafe.Pointer(&attrBuf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(attrlist)), uintptr(_p1), uintptr(len(attrBuf)), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setattrlist_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setattrlist setattrlist \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setprivexec(flag int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setprivexec_trampoline_addr, uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setprivexec_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setprivexec setprivexec \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_undelete_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_undelete_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_undelete undelete \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovecs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readv_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readv readv \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_preadv_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_preadv preadv \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovecs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_writev_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_writev writev \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwritev_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwritev pwritev \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat64 fstat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat64 fstatat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat64_trampoline_addr, uintptr(buf), uintptr(size), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat64 lstat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ptrace_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ptrace ptrace \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat64 stat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs64 statfs64 \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s",
    "content": "// go run mkasm.go darwin amd64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fdopendir(SB)\nGLOBL\t·libc_fdopendir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB)\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_closedir(SB)\nGLOBL\t·libc_closedir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB)\n\nTEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readdir_r(SB)\nGLOBL\t·libc_readdir_r_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB)\n\nTEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe(SB)\nGLOBL\t·libc_pipe_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB)\n\nTEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getxattr(SB)\nGLOBL\t·libc_getxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB)\n\nTEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fgetxattr(SB)\nGLOBL\t·libc_fgetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB)\n\nTEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setxattr(SB)\nGLOBL\t·libc_setxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB)\n\nTEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsetxattr(SB)\nGLOBL\t·libc_fsetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB)\n\nTEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_removexattr(SB)\nGLOBL\t·libc_removexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB)\n\nTEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fremovexattr(SB)\nGLOBL\t·libc_fremovexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB)\n\nTEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listxattr(SB)\nGLOBL\t·libc_listxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB)\n\nTEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flistxattr(SB)\nGLOBL\t·libc_flistxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renamex_np(SB)\nGLOBL\t·libc_renamex_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB)\n\nTEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameatx_np(SB)\nGLOBL\t·libc_renameatx_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_pthread_chdir_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pthread_chdir_np(SB)\nGLOBL\t·libc_pthread_chdir_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pthread_chdir_np_trampoline_addr(SB)/8, $libc_pthread_chdir_np_trampoline<>(SB)\n\nTEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pthread_fchdir_np(SB)\nGLOBL\t·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB)\n\nTEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connectx(SB)\nGLOBL\t·libc_connectx_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB)\n\nTEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendfile(SB)\nGLOBL\t·libc_sendfile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB)\n\nTEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmat(SB)\nGLOBL\t·libc_shmat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB)\n\nTEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmctl(SB)\nGLOBL\t·libc_shmctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB)\n\nTEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmdt(SB)\nGLOBL\t·libc_shmdt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB)\n\nTEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmget(SB)\nGLOBL\t·libc_shmget_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefile(SB)\nGLOBL\t·libc_clonefile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB)\n\nTEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefileat(SB)\nGLOBL\t·libc_clonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exchangedata(SB)\nGLOBL\t·libc_exchangedata_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fclonefileat(SB)\nGLOBL\t·libc_fclonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdtablesize(SB)\nGLOBL\t·libc_getdtablesize_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setattrlist(SB)\nGLOBL\t·libc_setattrlist_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setprivexec(SB)\nGLOBL\t·libc_setprivexec_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_undelete(SB)\nGLOBL\t·libc_undelete_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readv(SB)\nGLOBL\t·libc_readv_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB)\n\nTEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_preadv(SB)\nGLOBL\t·libc_preadv_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB)\n\nTEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_writev(SB)\nGLOBL\t·libc_writev_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB)\n\nTEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwritev(SB)\nGLOBL\t·libc_pwritev_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB)\n\nTEXT libc_fstat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat64(SB)\nGLOBL\t·libc_fstat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat64_trampoline_addr(SB)/8, $libc_fstat64_trampoline<>(SB)\n\nTEXT libc_fstatat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat64(SB)\nGLOBL\t·libc_fstatat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat64_trampoline_addr(SB)/8, $libc_fstatat64_trampoline<>(SB)\n\nTEXT libc_fstatfs64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs64(SB)\nGLOBL\t·libc_fstatfs64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs64_trampoline_addr(SB)/8, $libc_fstatfs64_trampoline<>(SB)\n\nTEXT libc_getfsstat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat64(SB)\nGLOBL\t·libc_getfsstat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat64_trampoline_addr(SB)/8, $libc_getfsstat64_trampoline<>(SB)\n\nTEXT libc_lstat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat64(SB)\nGLOBL\t·libc_lstat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat64_trampoline_addr(SB)/8, $libc_lstat64_trampoline<>(SB)\n\nTEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ptrace(SB)\nGLOBL\t·libc_ptrace_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB)\n\nTEXT libc_stat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat64(SB)\nGLOBL\t·libc_stat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat64_trampoline_addr(SB)/8, $libc_stat64_trampoline<>(SB)\n\nTEXT libc_statfs64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs64(SB)\nGLOBL\t·libc_statfs64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs64_trampoline_addr(SB)/8, $libc_statfs64_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go",
    "content": "// go run mksyscall.go -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build darwin && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc closedir(dir uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_closedir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_closedir closedir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {\n\tr0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tres = Errno(r0)\n\treturn\n}\n\nvar libc_readdir_r_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readdir_r readdir_r \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe pipe \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getxattr getxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fgetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fgetxattr fgetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setxattr setxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsetxattr fsetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc removexattr(path string, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_removexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_removexattr removexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fremovexattr(fd int, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fremovexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fremovexattr fremovexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc listxattr(path string, dest *byte, size int, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listxattr listxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flistxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flistxattr flistxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kill(pid int, signum int, posix int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc renamexNp(from string, to string, flag uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renamex_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renamex_np renamex_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameatx_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameatx_np renameatx_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pthread_chdir_np(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_pthread_chdir_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pthread_chdir_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pthread_chdir_np pthread_chdir_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pthread_fchdir_np(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pthread_fchdir_np_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pthread_fchdir_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pthread_fchdir_np pthread_fchdir_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iov) > 0 {\n\t\t_p0 = unsafe.Pointer(&iov[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connectx_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connectx connectx \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendfile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendfile sendfile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmat shmat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\tresult = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmctl shmctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmdt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmdt shmdt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag))\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmget_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmget shmget \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefile(src string, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_clonefile_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefile clonefile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_clonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefileat clonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exchangedata(path1 string, path2 string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path1)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(path2)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_exchangedata_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_exchangedata_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exchangedata exchangedata \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fclonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fclonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fclonefileat fclonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := syscall_syscall(libc_getdtablesize_trampoline_addr, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\nvar libc_getdtablesize_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdtablesize getdtablesize \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_rawSyscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(attrBuf) > 0 {\n\t\t_p1 = unsafe.Pointer(&attrBuf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(attrlist)), uintptr(_p1), uintptr(len(attrBuf)), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setattrlist_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setattrlist setattrlist \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setprivexec(flag int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setprivexec_trampoline_addr, uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setprivexec_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setprivexec setprivexec \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_undelete_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_undelete_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_undelete undelete \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovecs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readv_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readv readv \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_preadv_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_preadv preadv \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovecs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_writev_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_writev writev \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwritev_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwritev pwritev \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(buf), uintptr(size), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ptrace_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ptrace ptrace \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s",
    "content": "// go run mkasm.go darwin arm64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fdopendir(SB)\nGLOBL\t·libc_fdopendir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB)\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_closedir(SB)\nGLOBL\t·libc_closedir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB)\n\nTEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readdir_r(SB)\nGLOBL\t·libc_readdir_r_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB)\n\nTEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe(SB)\nGLOBL\t·libc_pipe_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB)\n\nTEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getxattr(SB)\nGLOBL\t·libc_getxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB)\n\nTEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fgetxattr(SB)\nGLOBL\t·libc_fgetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB)\n\nTEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setxattr(SB)\nGLOBL\t·libc_setxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB)\n\nTEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsetxattr(SB)\nGLOBL\t·libc_fsetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB)\n\nTEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_removexattr(SB)\nGLOBL\t·libc_removexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB)\n\nTEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fremovexattr(SB)\nGLOBL\t·libc_fremovexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB)\n\nTEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listxattr(SB)\nGLOBL\t·libc_listxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB)\n\nTEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flistxattr(SB)\nGLOBL\t·libc_flistxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renamex_np(SB)\nGLOBL\t·libc_renamex_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB)\n\nTEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameatx_np(SB)\nGLOBL\t·libc_renameatx_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_pthread_chdir_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pthread_chdir_np(SB)\nGLOBL\t·libc_pthread_chdir_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pthread_chdir_np_trampoline_addr(SB)/8, $libc_pthread_chdir_np_trampoline<>(SB)\n\nTEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pthread_fchdir_np(SB)\nGLOBL\t·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB)\n\nTEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connectx(SB)\nGLOBL\t·libc_connectx_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB)\n\nTEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendfile(SB)\nGLOBL\t·libc_sendfile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB)\n\nTEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmat(SB)\nGLOBL\t·libc_shmat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB)\n\nTEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmctl(SB)\nGLOBL\t·libc_shmctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB)\n\nTEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmdt(SB)\nGLOBL\t·libc_shmdt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB)\n\nTEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmget(SB)\nGLOBL\t·libc_shmget_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefile(SB)\nGLOBL\t·libc_clonefile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB)\n\nTEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefileat(SB)\nGLOBL\t·libc_clonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exchangedata(SB)\nGLOBL\t·libc_exchangedata_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fclonefileat(SB)\nGLOBL\t·libc_fclonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdtablesize(SB)\nGLOBL\t·libc_getdtablesize_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setattrlist(SB)\nGLOBL\t·libc_setattrlist_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setprivexec(SB)\nGLOBL\t·libc_setprivexec_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_undelete(SB)\nGLOBL\t·libc_undelete_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readv(SB)\nGLOBL\t·libc_readv_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB)\n\nTEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_preadv(SB)\nGLOBL\t·libc_preadv_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB)\n\nTEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_writev(SB)\nGLOBL\t·libc_writev_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB)\n\nTEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwritev(SB)\nGLOBL\t·libc_pwritev_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ptrace(SB)\nGLOBL\t·libc_ptrace_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go",
    "content": "// go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build dragonfly && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc extpread(fd int, p []byte, flags int, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go",
    "content": "// go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), uintptr(dev>>32), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go",
    "content": "// go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go",
    "content": "// go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, uintptr(dev), uintptr(dev>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go",
    "content": "// go run mksyscall.go -tags freebsd,arm64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go",
    "content": "// go run mksyscall.go -tags freebsd,riscv64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go",
    "content": "// go run mksyscall_solaris.go -illumos -tags illumos,amd64 syscall_illumos.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build illumos && amd64\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_readv readv \"libc.so\"\n//go:cgo_import_dynamic libc_preadv preadv \"libc.so\"\n//go:cgo_import_dynamic libc_writev writev \"libc.so\"\n//go:cgo_import_dynamic libc_pwritev pwritev \"libc.so\"\n//go:cgo_import_dynamic libc_accept4 accept4 \"libsocket.so\"\n\n//go:linkname procreadv libc_readv\n//go:linkname procpreadv libc_preadv\n//go:linkname procwritev libc_writev\n//go:linkname procpwritev libc_pwritev\n//go:linkname procaccept4 libc_accept4\n\nvar (\n\tprocreadv,\n\tprocpreadv,\n\tprocwritev,\n\tprocpwritev,\n\tprocaccept4 syscallFunc\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procreadv)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovs []Iovec, off int64) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpreadv)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwritev)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovs []Iovec, off int64) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwritev)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept4)), 4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat2(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) {\n\t_, _, e1 := Syscall6(SYS_WAITID, uintptr(idType), uintptr(id), uintptr(unsafe.Pointer(info)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(restriction)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlRestrictKeyring(cmd int, arg2 int) (err error) {\n\t_, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT_SETATTR, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(unsafe.Pointer(attr)), uintptr(size), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Capget(hdr *CapUserHeader, data *CapUserData) (err error) {\n\t_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Capset(hdr *CapUserHeader, data *CapUserData) (err error) {\n\t_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockAdjtime(clockid int32, buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_CLOCK_ADJTIME, uintptr(clockid), uintptr(unsafe.Pointer(buf)), 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockSettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_SETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) {\n\t_, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CloseRange(first uint, last uint, flags uint) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE_RANGE, uintptr(first), uintptr(last), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsmount(fd int, flags int, mountAttrs int) (fsfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_FSMOUNT, uintptr(fd), uintptr(flags), uintptr(mountAttrs))\n\tfsfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsopen(fsName string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsName)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_FSOPEN, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fspick(dirfd int, pathName string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathName)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_FSPICK, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FSCONFIG, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(value)), uintptr(aux), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fromPathName)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(toPathName)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOVE_MOUNT, uintptr(fromDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(toDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc OpenTree(dfd int, fileName string, flags uint) (r int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fileName)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN_TREE, uintptr(dfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tr = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0)\n\tnewfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc TimerfdCreate(clockid int, flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMERFD_CREATE, uintptr(clockid), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc TimerfdGettime(fd int, currValue *ItimerSpec) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TIMERFD_GETTIME, uintptr(fd), uintptr(unsafe.Pointer(currValue)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_TIMERFD_SETTIME, uintptr(fd), uintptr(flags), uintptr(unsafe.Pointer(newValue)), uintptr(unsafe.Pointer(oldValue)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREADV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREADV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITEV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldaddr), uintptr(oldlength), uintptr(newlength), uintptr(flags), uintptr(newaddr), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(localIov) > 0 {\n\t\t_p0 = unsafe.Pointer(&localIov[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(remoteIov) > 0 {\n\t\t_p1 = unsafe.Pointer(&remoteIov[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PROCESS_VM_READV, uintptr(pid), uintptr(_p0), uintptr(len(localIov)), uintptr(_p1), uintptr(len(remoteIov)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(localIov) > 0 {\n\t\t_p0 = unsafe.Pointer(&localIov[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(remoteIov) > 0 {\n\t\t_p1 = unsafe.Pointer(&remoteIov[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PROCESS_VM_WRITEV, uintptr(pid), uintptr(_p0), uintptr(len(localIov)), uintptr(_p1), uintptr(len(remoteIov)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PidfdOpen(pid int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_PIDFD_OPEN, uintptr(pid), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_PIDFD_GETFD, uintptr(pidfd), uintptr(targetfd), uintptr(flags))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PidfdSendSignal(pidfd int, sig Signal, info *Siginfo, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PIDFD_SEND_SIGNAL, uintptr(pidfd), uintptr(sig), uintptr(unsafe.Pointer(info)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall(SYS_SHMAT, uintptr(id), uintptr(addr), uintptr(flag))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\tr0, _, e1 := Syscall(SYS_SHMCTL, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\tresult = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_SHMDT, uintptr(addr), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\tr0, _, e1 := Syscall(SYS_SHMGET, uintptr(key), uintptr(size), uintptr(flag))\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getitimer(which int, currValue *Itimerval) (err error) {\n\t_, _, e1 := Syscall(SYS_GETITIMER, uintptr(which), uintptr(unsafe.Pointer(currValue)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error) {\n\t_, _, e1 := Syscall(SYS_SETITIMER, uintptr(which), uintptr(unsafe.Pointer(newValue)), uintptr(unsafe.Pointer(oldValue)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc rtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_RT_SIGPROCMASK, uintptr(how), uintptr(unsafe.Pointer(set)), uintptr(unsafe.Pointer(oldset)), uintptr(sigsetsize), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tRawSyscallNoError(SYS_GETRESUID, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tRawSyscallNoError(SYS_GETRESGID, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc schedSetattr(pid int, attr *SchedAttr, flags uint) (err error) {\n\t_, _, e1 := Syscall(SYS_SCHED_SETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc schedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error) {\n\t_, _, e1 := Syscall6(SYS_SCHED_GETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(size), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error) {\n\t_, _, e1 := Syscall6(SYS_CACHESTAT, uintptr(fd), uintptr(unsafe.Pointer(crange)), uintptr(unsafe.Pointer(cstat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mseal(b []byte, flags uint) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSEAL, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setMemPolicy(mode int, mask unsafe.Pointer, size uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_SET_MEMPOLICY, uintptr(mode), uintptr(mask), uintptr(size))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_386.go",
    "content": "// go run mksyscall.go -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go",
    "content": "// go run mksyscall.go -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go",
    "content": "// go run mksyscall.go -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc armSyncFileRange(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_ARM_SYNC_FILE_RANGE, uintptr(fd), uintptr(flags), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go",
    "content": "// go run mksyscall.go -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go",
    "content": "// go run mksyscall.go -tags linux,loong64 syscall_linux.go syscall_linux_loong64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && loong64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go",
    "content": "// go run mksyscall.go -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r0)<<32 | int64(r1))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length>>32), uintptr(length), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length>>32), uintptr(length), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go",
    "content": "// go run mksyscall.go -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, st *stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, st *stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go",
    "content": "// go run mksyscall.go -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips64le\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, st *stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, st *stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go",
    "content": "// go run mksyscall.go -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mipsle\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go",
    "content": "// go run mksyscall.go -b32 -tags linux,ppc syscall_linux.go syscall_linux_ppc.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r0)<<32 | int64(r1))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go",
    "content": "// go run mksyscall.go -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go",
    "content": "// go run mksyscall.go -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc64le\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go",
    "content": "// go run mksyscall.go -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc riscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(pairs) > 0 {\n\t\t_p0 = unsafe.Pointer(&pairs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_RISCV_HWPROBE, uintptr(_p0), uintptr(len(pairs)), uintptr(cpuCount), uintptr(unsafe.Pointer(cpus)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go",
    "content": "// go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && s390x\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go",
    "content": "// go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && sparc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go",
    "content": "// go run mksyscall.go -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go",
    "content": "// go run mksyscall.go -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go",
    "content": "// go run mksyscall.go -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go",
    "content": "// go run mksyscall.go -netbsd -tags netbsd,arm64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go",
    "content": "// go run mksyscall.go -l32 -openbsd -libc -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := syscall_syscall6(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall9(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s",
    "content": "// go run mkasm.go openbsd 386\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s",
    "content": "// go run mkasm.go openbsd amd64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go",
    "content": "// go run mksyscall.go -l32 -openbsd -arm -libc -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_ftruncate_trampoline_addr, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := syscall_syscall6(libc_lseek_trampoline_addr, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall9(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s",
    "content": "// go run mkasm.go openbsd arm\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s",
    "content": "// go run mkasm.go openbsd arm64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,mips64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_mips64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && mips64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s",
    "content": "// go run mkasm.go openbsd mips64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,ppc64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && ppc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s",
    "content": "// go run mkasm.go openbsd ppc64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getgroups(SB)\n\tRET\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setgroups(SB)\n\tRET\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_wait4(SB)\n\tRET\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_accept(SB)\n\tRET\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_bind(SB)\n\tRET\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_connect(SB)\n\tRET\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_socket(SB)\n\tRET\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsockopt(SB)\n\tRET\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setsockopt(SB)\n\tRET\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpeername(SB)\n\tRET\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsockname(SB)\n\tRET\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_shutdown(SB)\n\tRET\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_socketpair(SB)\n\tRET\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_recvfrom(SB)\n\tRET\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sendto(SB)\n\tRET\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_recvmsg(SB)\n\tRET\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sendmsg(SB)\n\tRET\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kevent(SB)\n\tRET\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_utimes(SB)\n\tRET\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_futimes(SB)\n\tRET\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_poll(SB)\n\tRET\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_madvise(SB)\n\tRET\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mlock(SB)\n\tRET\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mlockall(SB)\n\tRET\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mprotect(SB)\n\tRET\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_msync(SB)\n\tRET\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munlock(SB)\n\tRET\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munlockall(SB)\n\tRET\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pipe2(SB)\n\tRET\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getdents(SB)\n\tRET\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getcwd(SB)\n\tRET\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getresuid(SB)\n\tRET\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getresgid(SB)\n\tRET\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ioctl(SB)\n\tRET\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sysctl(SB)\n\tRET\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fcntl(SB)\n\tRET\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ppoll(SB)\n\tRET\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_access(SB)\n\tRET\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_adjtime(SB)\n\tRET\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chdir(SB)\n\tRET\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chflags(SB)\n\tRET\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chmod(SB)\n\tRET\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chown(SB)\n\tRET\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chroot(SB)\n\tRET\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_clock_gettime(SB)\n\tRET\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_close(SB)\n\tRET\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup(SB)\n\tRET\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup2(SB)\n\tRET\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup3(SB)\n\tRET\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_exit(SB)\n\tRET\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_faccessat(SB)\n\tRET\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchdir(SB)\n\tRET\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchflags(SB)\n\tRET\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchmod(SB)\n\tRET\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchmodat(SB)\n\tRET\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchown(SB)\n\tRET\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchownat(SB)\n\tRET\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_flock(SB)\n\tRET\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fpathconf(SB)\n\tRET\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstat(SB)\n\tRET\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstatat(SB)\n\tRET\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstatfs(SB)\n\tRET\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fsync(SB)\n\tRET\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ftruncate(SB)\n\tRET\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getegid(SB)\n\tRET\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_geteuid(SB)\n\tRET\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getgid(SB)\n\tRET\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpgid(SB)\n\tRET\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpgrp(SB)\n\tRET\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpid(SB)\n\tRET\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getppid(SB)\n\tRET\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpriority(SB)\n\tRET\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrlimit(SB)\n\tRET\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrtable(SB)\n\tRET\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrusage(SB)\n\tRET\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsid(SB)\n\tRET\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_gettimeofday(SB)\n\tRET\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getuid(SB)\n\tRET\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_issetugid(SB)\n\tRET\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kill(SB)\n\tRET\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kqueue(SB)\n\tRET\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lchown(SB)\n\tRET\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_link(SB)\n\tRET\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_linkat(SB)\n\tRET\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_listen(SB)\n\tRET\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lstat(SB)\n\tRET\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkdir(SB)\n\tRET\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkdirat(SB)\n\tRET\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkfifo(SB)\n\tRET\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkfifoat(SB)\n\tRET\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mknod(SB)\n\tRET\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mknodat(SB)\n\tRET\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mount(SB)\n\tRET\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_nanosleep(SB)\n\tRET\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_open(SB)\n\tRET\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_openat(SB)\n\tRET\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pathconf(SB)\n\tRET\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pread(SB)\n\tRET\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pwrite(SB)\n\tRET\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_read(SB)\n\tRET\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_readlink(SB)\n\tRET\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_readlinkat(SB)\n\tRET\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_rename(SB)\n\tRET\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_renameat(SB)\n\tRET\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_revoke(SB)\n\tRET\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_rmdir(SB)\n\tRET\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lseek(SB)\n\tRET\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_select(SB)\n\tRET\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setegid(SB)\n\tRET\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_seteuid(SB)\n\tRET\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setgid(SB)\n\tRET\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setlogin(SB)\n\tRET\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setpgid(SB)\n\tRET\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setpriority(SB)\n\tRET\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setregid(SB)\n\tRET\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setreuid(SB)\n\tRET\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setresgid(SB)\n\tRET\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setresuid(SB)\n\tRET\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setrtable(SB)\n\tRET\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setsid(SB)\n\tRET\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_settimeofday(SB)\n\tRET\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setuid(SB)\n\tRET\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_stat(SB)\n\tRET\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_statfs(SB)\n\tRET\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_symlink(SB)\n\tRET\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_symlinkat(SB)\n\tRET\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sync(SB)\n\tRET\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_truncate(SB)\n\tRET\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_umask(SB)\n\tRET\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unlink(SB)\n\tRET\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unlinkat(SB)\n\tRET\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unmount(SB)\n\tRET\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_write(SB)\n\tRET\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mmap(SB)\n\tRET\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munmap(SB)\n\tRET\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getfsstat(SB)\n\tRET\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_utimensat(SB)\n\tRET\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pledge(SB)\n\tRET\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unveil(SB)\n\tRET\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,riscv64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s",
    "content": "// go run mkasm.go openbsd riscv64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go",
    "content": "// go run mksyscall_solaris.go -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build solaris && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_pipe pipe \"libc.so\"\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n//go:cgo_import_dynamic libc_getsockname getsockname \"libsocket.so\"\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n//go:cgo_import_dynamic libc_gethostname gethostname \"libc.so\"\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n//go:cgo_import_dynamic libc_futimesat futimesat \"libc.so\"\n//go:cgo_import_dynamic libc_accept accept \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg \"libsocket.so\"\n//go:cgo_import_dynamic libc_acct acct \"libc.so\"\n//go:cgo_import_dynamic libc___makedev __makedev \"libc.so\"\n//go:cgo_import_dynamic libc___major __major \"libc.so\"\n//go:cgo_import_dynamic libc___minor __minor \"libc.so\"\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n//go:cgo_import_dynamic libc_clockgettime clockgettime \"libc.so\"\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n//go:cgo_import_dynamic libc_creat creat \"libc.so\"\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n//go:cgo_import_dynamic libc_fdatasync fdatasync \"libc.so\"\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n//go:cgo_import_dynamic libc_fstatvfs fstatvfs \"libc.so\"\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_listen __xnet_listen \"libsocket.so\"\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n//go:cgo_import_dynamic libc_pause pause \"libc.so\"\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n//go:cgo_import_dynamic libc_sethostname sethostname \"libc.so\"\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n//go:cgo_import_dynamic libc_shutdown shutdown \"libsocket.so\"\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n//go:cgo_import_dynamic libc_statvfs statvfs \"libc.so\"\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n//go:cgo_import_dynamic libc_sysconf sysconf \"libc.so\"\n//go:cgo_import_dynamic libc_times times \"libc.so\"\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n//go:cgo_import_dynamic libc_uname uname \"libc.so\"\n//go:cgo_import_dynamic libc_umount umount \"libc.so\"\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n//go:cgo_import_dynamic libc_ustat ustat \"libc.so\"\n//go:cgo_import_dynamic libc_utime utime \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_bind __xnet_bind \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_connect __xnet_connect \"libsocket.so\"\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n//go:cgo_import_dynamic libc_sendfile sendfile \"libsendfile.so\"\n//go:cgo_import_dynamic libc___xnet_sendto __xnet_sendto \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_socket __xnet_socket \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_socketpair __xnet_socketpair \"libsocket.so\"\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt \"libsocket.so\"\n//go:cgo_import_dynamic libc_getpeername getpeername \"libsocket.so\"\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libsocket.so\"\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libsocket.so\"\n//go:cgo_import_dynamic libc_getpeerucred getpeerucred \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_get ucred_get \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_geteuid ucred_geteuid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getegid ucred_getegid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getruid ucred_getruid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getrgid ucred_getrgid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getsuid ucred_getsuid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getsgid ucred_getsgid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getpid ucred_getpid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_free ucred_free \"libc.so\"\n//go:cgo_import_dynamic libc_port_create port_create \"libc.so\"\n//go:cgo_import_dynamic libc_port_associate port_associate \"libc.so\"\n//go:cgo_import_dynamic libc_port_dissociate port_dissociate \"libc.so\"\n//go:cgo_import_dynamic libc_port_get port_get \"libc.so\"\n//go:cgo_import_dynamic libc_port_getn port_getn \"libc.so\"\n//go:cgo_import_dynamic libc_putmsg putmsg \"libc.so\"\n//go:cgo_import_dynamic libc_getmsg getmsg \"libc.so\"\n\n//go:linkname procpipe libc_pipe\n//go:linkname procpipe2 libc_pipe2\n//go:linkname procgetsockname libc_getsockname\n//go:linkname procGetcwd libc_getcwd\n//go:linkname procgetgroups libc_getgroups\n//go:linkname procsetgroups libc_setgroups\n//go:linkname procwait4 libc_wait4\n//go:linkname procgethostname libc_gethostname\n//go:linkname procutimes libc_utimes\n//go:linkname procutimensat libc_utimensat\n//go:linkname procfcntl libc_fcntl\n//go:linkname procfutimesat libc_futimesat\n//go:linkname procaccept libc_accept\n//go:linkname proc__xnet_recvmsg libc___xnet_recvmsg\n//go:linkname proc__xnet_sendmsg libc___xnet_sendmsg\n//go:linkname procacct libc_acct\n//go:linkname proc__makedev libc___makedev\n//go:linkname proc__major libc___major\n//go:linkname proc__minor libc___minor\n//go:linkname procioctl libc_ioctl\n//go:linkname procpoll libc_poll\n//go:linkname procAccess libc_access\n//go:linkname procAdjtime libc_adjtime\n//go:linkname procChdir libc_chdir\n//go:linkname procChmod libc_chmod\n//go:linkname procChown libc_chown\n//go:linkname procChroot libc_chroot\n//go:linkname procClockGettime libc_clockgettime\n//go:linkname procClose libc_close\n//go:linkname procCreat libc_creat\n//go:linkname procDup libc_dup\n//go:linkname procDup2 libc_dup2\n//go:linkname procExit libc_exit\n//go:linkname procFaccessat libc_faccessat\n//go:linkname procFchdir libc_fchdir\n//go:linkname procFchmod libc_fchmod\n//go:linkname procFchmodat libc_fchmodat\n//go:linkname procFchown libc_fchown\n//go:linkname procFchownat libc_fchownat\n//go:linkname procFdatasync libc_fdatasync\n//go:linkname procFlock libc_flock\n//go:linkname procFpathconf libc_fpathconf\n//go:linkname procFstat libc_fstat\n//go:linkname procFstatat libc_fstatat\n//go:linkname procFstatvfs libc_fstatvfs\n//go:linkname procGetdents libc_getdents\n//go:linkname procGetgid libc_getgid\n//go:linkname procGetpid libc_getpid\n//go:linkname procGetpgid libc_getpgid\n//go:linkname procGetpgrp libc_getpgrp\n//go:linkname procGeteuid libc_geteuid\n//go:linkname procGetegid libc_getegid\n//go:linkname procGetppid libc_getppid\n//go:linkname procGetpriority libc_getpriority\n//go:linkname procGetrlimit libc_getrlimit\n//go:linkname procGetrusage libc_getrusage\n//go:linkname procGetsid libc_getsid\n//go:linkname procGettimeofday libc_gettimeofday\n//go:linkname procGetuid libc_getuid\n//go:linkname procKill libc_kill\n//go:linkname procLchown libc_lchown\n//go:linkname procLink libc_link\n//go:linkname proc__xnet_listen libc___xnet_listen\n//go:linkname procLstat libc_lstat\n//go:linkname procMadvise libc_madvise\n//go:linkname procMkdir libc_mkdir\n//go:linkname procMkdirat libc_mkdirat\n//go:linkname procMkfifo libc_mkfifo\n//go:linkname procMkfifoat libc_mkfifoat\n//go:linkname procMknod libc_mknod\n//go:linkname procMknodat libc_mknodat\n//go:linkname procMlock libc_mlock\n//go:linkname procMlockall libc_mlockall\n//go:linkname procMprotect libc_mprotect\n//go:linkname procMsync libc_msync\n//go:linkname procMunlock libc_munlock\n//go:linkname procMunlockall libc_munlockall\n//go:linkname procNanosleep libc_nanosleep\n//go:linkname procOpen libc_open\n//go:linkname procOpenat libc_openat\n//go:linkname procPathconf libc_pathconf\n//go:linkname procPause libc_pause\n//go:linkname procpread libc_pread\n//go:linkname procpwrite libc_pwrite\n//go:linkname procread libc_read\n//go:linkname procReadlink libc_readlink\n//go:linkname procRename libc_rename\n//go:linkname procRenameat libc_renameat\n//go:linkname procRmdir libc_rmdir\n//go:linkname proclseek libc_lseek\n//go:linkname procSelect libc_select\n//go:linkname procSetegid libc_setegid\n//go:linkname procSeteuid libc_seteuid\n//go:linkname procSetgid libc_setgid\n//go:linkname procSethostname libc_sethostname\n//go:linkname procSetpgid libc_setpgid\n//go:linkname procSetpriority libc_setpriority\n//go:linkname procSetregid libc_setregid\n//go:linkname procSetreuid libc_setreuid\n//go:linkname procSetsid libc_setsid\n//go:linkname procSetuid libc_setuid\n//go:linkname procshutdown libc_shutdown\n//go:linkname procStat libc_stat\n//go:linkname procStatvfs libc_statvfs\n//go:linkname procSymlink libc_symlink\n//go:linkname procSync libc_sync\n//go:linkname procSysconf libc_sysconf\n//go:linkname procTimes libc_times\n//go:linkname procTruncate libc_truncate\n//go:linkname procFsync libc_fsync\n//go:linkname procFtruncate libc_ftruncate\n//go:linkname procUmask libc_umask\n//go:linkname procUname libc_uname\n//go:linkname procumount libc_umount\n//go:linkname procUnlink libc_unlink\n//go:linkname procUnlinkat libc_unlinkat\n//go:linkname procUstat libc_ustat\n//go:linkname procUtime libc_utime\n//go:linkname proc__xnet_bind libc___xnet_bind\n//go:linkname proc__xnet_connect libc___xnet_connect\n//go:linkname procmmap libc_mmap\n//go:linkname procmunmap libc_munmap\n//go:linkname procsendfile libc_sendfile\n//go:linkname proc__xnet_sendto libc___xnet_sendto\n//go:linkname proc__xnet_socket libc___xnet_socket\n//go:linkname proc__xnet_socketpair libc___xnet_socketpair\n//go:linkname procwrite libc_write\n//go:linkname proc__xnet_getsockopt libc___xnet_getsockopt\n//go:linkname procgetpeername libc_getpeername\n//go:linkname procsetsockopt libc_setsockopt\n//go:linkname procrecvfrom libc_recvfrom\n//go:linkname procgetpeerucred libc_getpeerucred\n//go:linkname procucred_get libc_ucred_get\n//go:linkname procucred_geteuid libc_ucred_geteuid\n//go:linkname procucred_getegid libc_ucred_getegid\n//go:linkname procucred_getruid libc_ucred_getruid\n//go:linkname procucred_getrgid libc_ucred_getrgid\n//go:linkname procucred_getsuid libc_ucred_getsuid\n//go:linkname procucred_getsgid libc_ucred_getsgid\n//go:linkname procucred_getpid libc_ucred_getpid\n//go:linkname procucred_free libc_ucred_free\n//go:linkname procport_create libc_port_create\n//go:linkname procport_associate libc_port_associate\n//go:linkname procport_dissociate libc_port_dissociate\n//go:linkname procport_get libc_port_get\n//go:linkname procport_getn libc_port_getn\n//go:linkname procputmsg libc_putmsg\n//go:linkname procgetmsg libc_getmsg\n\nvar (\n\tprocpipe,\n\tprocpipe2,\n\tprocgetsockname,\n\tprocGetcwd,\n\tprocgetgroups,\n\tprocsetgroups,\n\tprocwait4,\n\tprocgethostname,\n\tprocutimes,\n\tprocutimensat,\n\tprocfcntl,\n\tprocfutimesat,\n\tprocaccept,\n\tproc__xnet_recvmsg,\n\tproc__xnet_sendmsg,\n\tprocacct,\n\tproc__makedev,\n\tproc__major,\n\tproc__minor,\n\tprocioctl,\n\tprocpoll,\n\tprocAccess,\n\tprocAdjtime,\n\tprocChdir,\n\tprocChmod,\n\tprocChown,\n\tprocChroot,\n\tprocClockGettime,\n\tprocClose,\n\tprocCreat,\n\tprocDup,\n\tprocDup2,\n\tprocExit,\n\tprocFaccessat,\n\tprocFchdir,\n\tprocFchmod,\n\tprocFchmodat,\n\tprocFchown,\n\tprocFchownat,\n\tprocFdatasync,\n\tprocFlock,\n\tprocFpathconf,\n\tprocFstat,\n\tprocFstatat,\n\tprocFstatvfs,\n\tprocGetdents,\n\tprocGetgid,\n\tprocGetpid,\n\tprocGetpgid,\n\tprocGetpgrp,\n\tprocGeteuid,\n\tprocGetegid,\n\tprocGetppid,\n\tprocGetpriority,\n\tprocGetrlimit,\n\tprocGetrusage,\n\tprocGetsid,\n\tprocGettimeofday,\n\tprocGetuid,\n\tprocKill,\n\tprocLchown,\n\tprocLink,\n\tproc__xnet_listen,\n\tprocLstat,\n\tprocMadvise,\n\tprocMkdir,\n\tprocMkdirat,\n\tprocMkfifo,\n\tprocMkfifoat,\n\tprocMknod,\n\tprocMknodat,\n\tprocMlock,\n\tprocMlockall,\n\tprocMprotect,\n\tprocMsync,\n\tprocMunlock,\n\tprocMunlockall,\n\tprocNanosleep,\n\tprocOpen,\n\tprocOpenat,\n\tprocPathconf,\n\tprocPause,\n\tprocpread,\n\tprocpwrite,\n\tprocread,\n\tprocReadlink,\n\tprocRename,\n\tprocRenameat,\n\tprocRmdir,\n\tproclseek,\n\tprocSelect,\n\tprocSetegid,\n\tprocSeteuid,\n\tprocSetgid,\n\tprocSethostname,\n\tprocSetpgid,\n\tprocSetpriority,\n\tprocSetregid,\n\tprocSetreuid,\n\tprocSetsid,\n\tprocSetuid,\n\tprocshutdown,\n\tprocStat,\n\tprocStatvfs,\n\tprocSymlink,\n\tprocSync,\n\tprocSysconf,\n\tprocTimes,\n\tprocTruncate,\n\tprocFsync,\n\tprocFtruncate,\n\tprocUmask,\n\tprocUname,\n\tprocumount,\n\tprocUnlink,\n\tprocUnlinkat,\n\tprocUstat,\n\tprocUtime,\n\tproc__xnet_bind,\n\tproc__xnet_connect,\n\tprocmmap,\n\tprocmunmap,\n\tprocsendfile,\n\tproc__xnet_sendto,\n\tproc__xnet_socket,\n\tproc__xnet_socketpair,\n\tprocwrite,\n\tproc__xnet_getsockopt,\n\tprocgetpeername,\n\tprocsetsockopt,\n\tprocrecvfrom,\n\tprocgetpeerucred,\n\tprocucred_get,\n\tprocucred_geteuid,\n\tprocucred_getegid,\n\tprocucred_getruid,\n\tprocucred_getrgid,\n\tprocucred_getsuid,\n\tprocucred_getsgid,\n\tprocucred_getpid,\n\tprocucred_free,\n\tprocport_create,\n\tprocport_associate,\n\tprocport_dissociate,\n\tprocport_get,\n\tprocport_getn,\n\tprocputmsg,\n\tprocgetmsg syscallFunc\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (n int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe2)), 2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetcwd)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int32(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gethostname(buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(fildes int, path *byte, times *[2]Timeval) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc acct(path *byte) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __makedev(version int, major uint, minor uint) (val uint64) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__makedev)), 3, uintptr(version), uintptr(major), uintptr(minor), 0, 0, 0)\n\tval = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __major(version int, dev uint64) (val uint) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__major)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0)\n\tval = uint(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __minor(version int, dev uint64) (val uint) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__minor)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0)\n\tval = uint(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlRet(fd int, req int, arg uintptr) (ret int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClockGettime)), 2, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsysvicall6(uintptr(unsafe.Pointer(&procExit)), 1, uintptr(code), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetdents)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetgid)), 0, 0, 0, 0, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpid)), 0, 0, 0, 0, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGeteuid)), 0, 0, 0, 0, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetegid)), 0, 0, 0, 0, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetppid)), 0, 0, 0, 0, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetsid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetuid)), 0, 0, 0, 0, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_listen)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMadvise)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(advice), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMprotect)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(prot), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpread)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwrite)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs(path string, vfsstat *Statvfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStatvfs)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysconf(which int) (n int64, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSysconf)), 1, uintptr(which), 0, 0, 0, 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procUmask)), 1, uintptr(mask), 0, 0, 0, 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendfile)), 4, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvfrom)), 6, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeerucred(fd uintptr, ucred *uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetpeerucred)), 2, uintptr(fd), uintptr(unsafe.Pointer(ucred)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGet(pid int) (ucred uintptr, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procucred_get)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\tucred = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGeteuid(ucred uintptr) (uid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_geteuid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetegid(ucred uintptr) (gid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getegid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetruid(ucred uintptr) (uid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getruid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetrgid(ucred uintptr) (gid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getrgid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetsuid(ucred uintptr) (uid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getsuid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetsgid(ucred uintptr) (gid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getsgid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetpid(ucred uintptr) (pid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getpid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredFree(ucred uintptr) {\n\tsysvicall6(uintptr(unsafe.Pointer(&procucred_free)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_create() (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_create)), 0, 0, 0, 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_associate)), 5, uintptr(port), uintptr(source), uintptr(object), uintptr(events), uintptr(unsafe.Pointer(user)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_dissociate(port int, source int, object uintptr) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_dissociate)), 3, uintptr(port), uintptr(source), uintptr(object), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_get(port int, pe *portEvent, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_get)), 3, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(unsafe.Pointer(timeout)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_getn)), 5, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(max), uintptr(unsafe.Pointer(nget)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procputmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(unsafe.Pointer(flags)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go",
    "content": "// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build zos && s390x\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), uintptr(arg))\n\truntime.ExitSyscall()\n\tval = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FLISTXATTR_A<<4, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FlistxattrAddr() *(func(fd int, dest []byte) (sz int, err error))\n\nvar Flistxattr = enter_Flistxattr\n\nfunc enter_Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tfuncref := get_FlistxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FLISTXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Flistxattr\n\t} else {\n\t\t*funcref = error_Flistxattr\n\t}\n\treturn (*funcref)(fd, dest)\n}\n\nfunc error_Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FREMOVEXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FremovexattrAddr() *(func(fd int, attr string) (err error))\n\nvar Fremovexattr = enter_Fremovexattr\n\nfunc enter_Fremovexattr(fd int, attr string) (err error) {\n\tfuncref := get_FremovexattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FREMOVEXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fremovexattr\n\t} else {\n\t\t*funcref = error_Fremovexattr\n\t}\n\treturn (*funcref)(fd, attr)\n}\n\nfunc error_Fremovexattr(fd int, attr string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_READ<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WRITE<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FGETXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FgetxattrAddr() *(func(fd int, attr string, dest []byte) (sz int, err error))\n\nvar Fgetxattr = enter_Fgetxattr\n\nfunc enter_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tfuncref := get_FgetxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FGETXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fgetxattr\n\t} else {\n\t\t*funcref = error_Fgetxattr\n\t}\n\treturn (*funcref)(fd, attr, dest)\n}\n\nfunc error_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p1 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FSETXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(data)), uintptr(flag))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FsetxattrAddr() *(func(fd int, attr string, data []byte, flag int) (err error))\n\nvar Fsetxattr = enter_Fsetxattr\n\nfunc enter_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) {\n\tfuncref := get_FsetxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FSETXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fsetxattr\n\t} else {\n\t\t*funcref = error_Fsetxattr\n\t}\n\treturn (*funcref)(fd, attr, data, flag)\n}\n\nfunc error_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCEPT_A<<4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCEPT4_A<<4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_accept4Addr() *(func(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error))\n\nvar accept4 = enter_accept4\n\nfunc enter_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tfuncref := get_accept4Addr()\n\tif funcptrtest(GetZosLibVec()+SYS___ACCEPT4_A<<4, \"\") == 0 {\n\t\t*funcref = impl_accept4\n\t} else {\n\t\t*funcref = error_accept4\n\t}\n\treturn (*funcref)(s, rsa, addrlen, flags)\n}\n\nfunc error_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___BIND_A<<4, uintptr(s), uintptr(addr), uintptr(addrlen))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CONNECT_A<<4, uintptr(s), uintptr(addr), uintptr(addrlen))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETGROUPS<<4, uintptr(n), uintptr(unsafe.Pointer(list)))\n\tnn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETGROUPS<<4, uintptr(n), uintptr(unsafe.Pointer(list)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETSOCKOPT<<4, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETSOCKOPT<<4, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SOCKET<<4, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SOCKETPAIR<<4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETPEERNAME_A<<4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETSOCKNAME_A<<4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___REMOVEXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_RemovexattrAddr() *(func(path string, attr string) (err error))\n\nvar Removexattr = enter_Removexattr\n\nfunc enter_Removexattr(path string, attr string) (err error) {\n\tfuncref := get_RemovexattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___REMOVEXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Removexattr\n\t} else {\n\t\t*funcref = error_Removexattr\n\t}\n\treturn (*funcref)(path, attr)\n}\n\nfunc error_Removexattr(path string, attr string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RECVFROM_A<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SENDTO_A<<4, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RECVMSG_A<<4, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SENDMSG_A<<4, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MMAP<<4, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\truntime.ExitSyscall()\n\tret = uintptr(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MUNMAP<<4, uintptr(addr), uintptr(length))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_IOCTL<<4, uintptr(fd), uintptr(req), uintptr(arg))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_IOCTL<<4, uintptr(fd), uintptr(req), uintptr(arg))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMAT<<4, uintptr(id), uintptr(addr), uintptr(flag))\n\truntime.ExitSyscall()\n\tret = uintptr(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMCTL64<<4, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\truntime.ExitSyscall()\n\tresult = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMDT<<4, uintptr(addr))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMGET<<4, uintptr(key), uintptr(size), uintptr(flag))\n\truntime.ExitSyscall()\n\tid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCESS_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHDIR_A<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHOWN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHMOD_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CREAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP<<4, uintptr(oldfd))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP2<<4, uintptr(oldfd), uintptr(newfd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Dup3(oldfd int, newfd int, flags int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP3<<4, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_Dup3Addr() *(func(oldfd int, newfd int, flags int) (err error))\n\nvar Dup3 = enter_Dup3\n\nfunc enter_Dup3(oldfd int, newfd int, flags int) (err error) {\n\tfuncref := get_Dup3Addr()\n\tif funcptrtest(GetZosLibVec()+SYS_DUP3<<4, \"\") == 0 {\n\t\t*funcref = impl_Dup3\n\t} else {\n\t\t*funcref = error_Dup3\n\t}\n\treturn (*funcref)(oldfd, newfd, flags)\n}\n\nfunc error_Dup3(oldfd int, newfd int, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Dirfd(dirp uintptr) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DIRFD<<4, uintptr(dirp))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_DirfdAddr() *(func(dirp uintptr) (fd int, err error))\n\nvar Dirfd = enter_Dirfd\n\nfunc enter_Dirfd(dirp uintptr) (fd int, err error) {\n\tfuncref := get_DirfdAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_DIRFD<<4, \"\") == 0 {\n\t\t*funcref = impl_Dirfd\n\t} else {\n\t\t*funcref = error_Dirfd\n\t}\n\treturn (*funcref)(dirp)\n}\n\nfunc error_Dirfd(dirp uintptr) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollCreate(size int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CREATE<<4, uintptr(size))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollCreateAddr() *(func(size int) (fd int, err error))\n\nvar EpollCreate = enter_EpollCreate\n\nfunc enter_EpollCreate(size int) (fd int, err error) {\n\tfuncref := get_EpollCreateAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_CREATE<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollCreate\n\t} else {\n\t\t*funcref = error_EpollCreate\n\t}\n\treturn (*funcref)(size)\n}\n\nfunc error_EpollCreate(size int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollCreate1(flags int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CREATE1<<4, uintptr(flags))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollCreate1Addr() *(func(flags int) (fd int, err error))\n\nvar EpollCreate1 = enter_EpollCreate1\n\nfunc enter_EpollCreate1(flags int) (fd int, err error) {\n\tfuncref := get_EpollCreate1Addr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_CREATE1<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollCreate1\n\t} else {\n\t\t*funcref = error_EpollCreate1\n\t}\n\treturn (*funcref)(flags)\n}\n\nfunc error_EpollCreate1(flags int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CTL<<4, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollCtlAddr() *(func(epfd int, op int, fd int, event *EpollEvent) (err error))\n\nvar EpollCtl = enter_EpollCtl\n\nfunc enter_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\tfuncref := get_EpollCtlAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_CTL<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollCtl\n\t} else {\n\t\t*funcref = error_EpollCtl\n\t}\n\treturn (*funcref)(epfd, op, fd, event)\n}\n\nfunc error_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_PWAIT<<4, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), uintptr(unsafe.Pointer(sigmask)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollPwaitAddr() *(func(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error))\n\nvar EpollPwait = enter_EpollPwait\n\nfunc enter_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) {\n\tfuncref := get_EpollPwaitAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_PWAIT<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollPwait\n\t} else {\n\t\t*funcref = error_EpollPwait\n\t}\n\treturn (*funcref)(epfd, events, msec, sigmask)\n}\n\nfunc error_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) {\n\tn = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_WAIT<<4, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollWaitAddr() *(func(epfd int, events []EpollEvent, msec int) (n int, err error))\n\nvar EpollWait = enter_EpollWait\n\nfunc enter_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tfuncref := get_EpollWaitAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_WAIT<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollWait\n\t} else {\n\t\t*funcref = error_EpollWait\n\t}\n\treturn (*funcref)(epfd, events, msec)\n}\n\nfunc error_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tn = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Errno2() (er2 int) {\n\truntime.EnterSyscall()\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS___ERRNO2<<4)\n\truntime.ExitSyscall()\n\ter2 = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Eventfd(initval uint, flags int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EVENTFD<<4, uintptr(initval), uintptr(flags))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EventfdAddr() *(func(initval uint, flags int) (fd int, err error))\n\nvar Eventfd = enter_Eventfd\n\nfunc enter_Eventfd(initval uint, flags int) (fd int, err error) {\n\tfuncref := get_EventfdAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EVENTFD<<4, \"\") == 0 {\n\t\t*funcref = impl_Eventfd\n\t} else {\n\t\t*funcref = error_Eventfd\n\t}\n\treturn (*funcref)(initval, flags)\n}\n\nfunc error_Eventfd(initval uint, flags int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\truntime.EnterSyscall()\n\tCallLeFuncWithErr(GetZosLibVec()+SYS_EXIT<<4, uintptr(code))\n\truntime.ExitSyscall()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FACCESSAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FaccessatAddr() *(func(dirfd int, path string, mode uint32, flags int) (err error))\n\nvar Faccessat = enter_Faccessat\n\nfunc enter_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tfuncref := get_FaccessatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FACCESSAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Faccessat\n\t} else {\n\t\t*funcref = error_Faccessat\n\t}\n\treturn (*funcref)(dirfd, path, mode, flags)\n}\n\nfunc error_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHDIR<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHMOD<<4, uintptr(fd), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FCHMODAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FchmodatAddr() *(func(dirfd int, path string, mode uint32, flags int) (err error))\n\nvar Fchmodat = enter_Fchmodat\n\nfunc enter_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tfuncref := get_FchmodatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FCHMODAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fchmodat\n\t} else {\n\t\t*funcref = error_Fchmodat\n\t}\n\treturn (*funcref)(dirfd, path, mode, flags)\n}\n\nfunc error_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHOWN<<4, uintptr(fd), uintptr(uid), uintptr(gid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FCHOWNAT_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FchownatAddr() *(func(fd int, path string, uid int, gid int, flags int) (err error))\n\nvar Fchownat = enter_Fchownat\n\nfunc enter_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) {\n\tfuncref := get_FchownatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FCHOWNAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fchownat\n\t} else {\n\t\t*funcref = error_Fchownat\n\t}\n\treturn (*funcref)(fd, path, uid, gid, flags)\n}\n\nfunc error_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), uintptr(arg))\n\truntime.ExitSyscall()\n\tretval = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fdatasync(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FDATASYNC<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FdatasyncAddr() *(func(fd int) (err error))\n\nvar Fdatasync = enter_Fdatasync\n\nfunc enter_Fdatasync(fd int) (err error) {\n\tfuncref := get_FdatasyncAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_FDATASYNC<<4, \"\") == 0 {\n\t\t*funcref = impl_Fdatasync\n\t} else {\n\t\t*funcref = error_Fdatasync\n\t}\n\treturn (*funcref)(fd)\n}\n\nfunc error_Fdatasync(fd int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *Stat_LE_t) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTAT<<4, uintptr(fd), uintptr(unsafe.Pointer(stat)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FSTATAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_fstatatAddr() *(func(dirfd int, path string, stat *Stat_LE_t, flags int) (err error))\n\nvar fstatat = enter_fstatat\n\nfunc enter_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) {\n\tfuncref := get_fstatatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FSTATAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_fstatat\n\t} else {\n\t\t*funcref = error_fstatat\n\t}\n\treturn (*funcref)(dirfd, path, stat, flags)\n}\n\nfunc error_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LGETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LgetxattrAddr() *(func(link string, attr string, dest []byte) (sz int, err error))\n\nvar Lgetxattr = enter_Lgetxattr\n\nfunc enter_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\tfuncref := get_LgetxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LGETXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Lgetxattr\n\t} else {\n\t\t*funcref = error_Lgetxattr\n\t}\n\treturn (*funcref)(link, attr, dest)\n}\n\nfunc error_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LSETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LsetxattrAddr() *(func(path string, attr string, data []byte, flags int) (err error))\n\nvar Lsetxattr = enter_Lsetxattr\n\nfunc enter_Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tfuncref := get_LsetxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LSETXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Lsetxattr\n\t} else {\n\t\t*funcref = error_Lsetxattr\n\t}\n\treturn (*funcref)(path, attr, data, flags)\n}\n\nfunc error_Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fstatfs(fd int, buf *Statfs_t) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTATFS<<4, uintptr(fd), uintptr(unsafe.Pointer(buf)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FstatfsAddr() *(func(fd int, buf *Statfs_t) (err error))\n\nvar Fstatfs = enter_Fstatfs\n\nfunc enter_Fstatfs(fd int, buf *Statfs_t) (err error) {\n\tfuncref := get_FstatfsAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_FSTATFS<<4, \"\") == 0 {\n\t\t*funcref = impl_Fstatfs\n\t} else {\n\t\t*funcref = error_Fstatfs\n\t}\n\treturn (*funcref)(fd, buf)\n}\n\nfunc error_Fstatfs(fd int, buf *Statfs_t) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs(fd int, stat *Statvfs_t) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTATVFS<<4, uintptr(fd), uintptr(unsafe.Pointer(stat)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSYNC<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Futimes(fd int, tv []Timeval) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(tv) > 0 {\n\t\t_p0 = unsafe.Pointer(&tv[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FUTIMES<<4, uintptr(fd), uintptr(_p0), uintptr(len(tv)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FutimesAddr() *(func(fd int, tv []Timeval) (err error))\n\nvar Futimes = enter_Futimes\n\nfunc enter_Futimes(fd int, tv []Timeval) (err error) {\n\tfuncref := get_FutimesAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_FUTIMES<<4, \"\") == 0 {\n\t\t*funcref = impl_Futimes\n\t} else {\n\t\t*funcref = error_Futimes\n\t}\n\treturn (*funcref)(fd, tv)\n}\n\nfunc error_Futimes(fd int, tv []Timeval) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Futimesat(dirfd int, path string, tv []Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(tv) > 0 {\n\t\t_p1 = unsafe.Pointer(&tv[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FUTIMESAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(tv)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FutimesatAddr() *(func(dirfd int, path string, tv []Timeval) (err error))\n\nvar Futimesat = enter_Futimesat\n\nfunc enter_Futimesat(dirfd int, path string, tv []Timeval) (err error) {\n\tfuncref := get_FutimesatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FUTIMESAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Futimesat\n\t} else {\n\t\t*funcref = error_Futimesat\n\t}\n\treturn (*funcref)(dirfd, path, tv)\n}\n\nfunc error_Futimesat(dirfd int, path string, tv []Timeval) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FTRUNCATE<<4, uintptr(fd), uintptr(length))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRANDOM<<4, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_GetrandomAddr() *(func(buf []byte, flags int) (n int, err error))\n\nvar Getrandom = enter_Getrandom\n\nfunc enter_Getrandom(buf []byte, flags int) (n int, err error) {\n\tfuncref := get_GetrandomAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_GETRANDOM<<4, \"\") == 0 {\n\t\t*funcref = impl_Getrandom\n\t} else {\n\t\t*funcref = error_Getrandom\n\t}\n\treturn (*funcref)(buf, flags)\n}\n\nfunc error_Getrandom(buf []byte, flags int) (n int, err error) {\n\tn = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_InotifyInit() (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec() + SYS_INOTIFY_INIT<<4)\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_InotifyInitAddr() *(func() (fd int, err error))\n\nvar InotifyInit = enter_InotifyInit\n\nfunc enter_InotifyInit() (fd int, err error) {\n\tfuncref := get_InotifyInitAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_INOTIFY_INIT<<4, \"\") == 0 {\n\t\t*funcref = impl_InotifyInit\n\t} else {\n\t\t*funcref = error_InotifyInit\n\t}\n\treturn (*funcref)()\n}\n\nfunc error_InotifyInit() (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_InotifyInit1(flags int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_INOTIFY_INIT1<<4, uintptr(flags))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_InotifyInit1Addr() *(func(flags int) (fd int, err error))\n\nvar InotifyInit1 = enter_InotifyInit1\n\nfunc enter_InotifyInit1(flags int) (fd int, err error) {\n\tfuncref := get_InotifyInit1Addr()\n\tif funcptrtest(GetZosLibVec()+SYS_INOTIFY_INIT1<<4, \"\") == 0 {\n\t\t*funcref = impl_InotifyInit1\n\t} else {\n\t\t*funcref = error_InotifyInit1\n\t}\n\treturn (*funcref)(flags)\n}\n\nfunc error_InotifyInit1(flags int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___INOTIFY_ADD_WATCH_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\truntime.ExitSyscall()\n\twatchdesc = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_InotifyAddWatchAddr() *(func(fd int, pathname string, mask uint32) (watchdesc int, err error))\n\nvar InotifyAddWatch = enter_InotifyAddWatch\n\nfunc enter_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tfuncref := get_InotifyAddWatchAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___INOTIFY_ADD_WATCH_A<<4, \"\") == 0 {\n\t\t*funcref = impl_InotifyAddWatch\n\t} else {\n\t\t*funcref = error_InotifyAddWatch\n\t}\n\treturn (*funcref)(fd, pathname, mask)\n}\n\nfunc error_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\twatchdesc = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_INOTIFY_RM_WATCH<<4, uintptr(fd), uintptr(watchdesc))\n\truntime.ExitSyscall()\n\tsuccess = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_InotifyRmWatchAddr() *(func(fd int, watchdesc uint32) (success int, err error))\n\nvar InotifyRmWatch = enter_InotifyRmWatch\n\nfunc enter_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tfuncref := get_InotifyRmWatchAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_INOTIFY_RM_WATCH<<4, \"\") == 0 {\n\t\t*funcref = impl_InotifyRmWatch\n\t} else {\n\t\t*funcref = error_InotifyRmWatch\n\t}\n\treturn (*funcref)(fd, watchdesc)\n}\n\nfunc error_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tsuccess = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LISTXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_ListxattrAddr() *(func(path string, dest []byte) (sz int, err error))\n\nvar Listxattr = enter_Listxattr\n\nfunc enter_Listxattr(path string, dest []byte) (sz int, err error) {\n\tfuncref := get_ListxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LISTXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Listxattr\n\t} else {\n\t\t*funcref = error_Listxattr\n\t}\n\treturn (*funcref)(path, dest)\n}\n\nfunc error_Listxattr(path string, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LLISTXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LlistxattrAddr() *(func(path string, dest []byte) (sz int, err error))\n\nvar Llistxattr = enter_Llistxattr\n\nfunc enter_Llistxattr(path string, dest []byte) (sz int, err error) {\n\tfuncref := get_LlistxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LLISTXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Llistxattr\n\t} else {\n\t\t*funcref = error_Llistxattr\n\t}\n\treturn (*funcref)(path, dest)\n}\n\nfunc error_Llistxattr(path string, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LREMOVEXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LremovexattrAddr() *(func(path string, attr string) (err error))\n\nvar Lremovexattr = enter_Lremovexattr\n\nfunc enter_Lremovexattr(path string, attr string) (err error) {\n\tfuncref := get_LremovexattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LREMOVEXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Lremovexattr\n\t} else {\n\t\t*funcref = error_Lremovexattr\n\t}\n\treturn (*funcref)(path, attr)\n}\n\nfunc error_Lremovexattr(path string, attr string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Lutimes(path string, tv []Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(tv) > 0 {\n\t\t_p1 = unsafe.Pointer(&tv[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LUTIMES_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(tv)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LutimesAddr() *(func(path string, tv []Timeval) (err error))\n\nvar Lutimes = enter_Lutimes\n\nfunc enter_Lutimes(path string, tv []Timeval) (err error) {\n\tfuncref := get_LutimesAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LUTIMES_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Lutimes\n\t} else {\n\t\t*funcref = error_Lutimes\n\t}\n\treturn (*funcref)(path, tv)\n}\n\nfunc error_Lutimes(path string, tv []Timeval) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MPROTECT<<4, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MSYNC<<4, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Console2(cmsg *ConsMsg2, modstr *byte, concmd *uint32) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CONSOLE2<<4, uintptr(unsafe.Pointer(cmsg)), uintptr(unsafe.Pointer(modstr)), uintptr(unsafe.Pointer(concmd)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(fds) > 0 {\n\t\t_p0 = unsafe.Pointer(&fds[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_POLL<<4, uintptr(_p0), uintptr(len(fds)), uintptr(timeout))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readdir_r(dirp uintptr, entry *direntLE, result **direntLE) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READDIR_R_A<<4, uintptr(dirp), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___STATFS_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_StatfsAddr() *(func(path string, buf *Statfs_t) (err error))\n\nvar Statfs = enter_Statfs\n\nfunc enter_Statfs(path string, buf *Statfs_t) (err error) {\n\tfuncref := get_StatfsAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___STATFS_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Statfs\n\t} else {\n\t\t*funcref = error_Statfs\n\t}\n\treturn (*funcref)(path, buf)\n}\n\nfunc error_Statfs(path string, buf *Statfs_t) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Syncfs(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SYNCFS<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SyncfsAddr() *(func(fd int) (err error))\n\nvar Syncfs = enter_Syncfs\n\nfunc enter_Syncfs(fd int) (err error) {\n\tfuncref := get_SyncfsAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_SYNCFS<<4, \"\") == 0 {\n\t\t*funcref = impl_Syncfs\n\t} else {\n\t\t*funcref = error_Syncfs\n\t}\n\treturn (*funcref)(fd)\n}\n\nfunc error_Syncfs(fd int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TIMES<<4, uintptr(unsafe.Pointer(tms)))\n\truntime.ExitSyscall()\n\tticks = uintptr(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc W_Getmntent(buff *byte, size int) (lastsys int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_W_GETMNTENT<<4, uintptr(unsafe.Pointer(buff)), uintptr(size))\n\truntime.ExitSyscall()\n\tlastsys = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc W_Getmntent_A(buff *byte, size int) (lastsys int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___W_GETMNTENT_A<<4, uintptr(unsafe.Pointer(buff)), uintptr(size))\n\truntime.ExitSyscall()\n\tlastsys = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(filesystem)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p3 *byte\n\t_p3, err = BytePtrFromString(parm)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MOUNT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(mtm), uintptr(parmlen), uintptr(unsafe.Pointer(_p3)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unmount_LE(filesystem string, mtm int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(filesystem)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UMOUNT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mtm))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHROOT_A<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SELECT<<4, uintptr(nmsgsfds), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)))\n\truntime.ExitSyscall()\n\tret = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_____OSNAME_A<<4, uintptr(unsafe.Pointer(buf)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Unshare(flags int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_UNSHARE<<4, uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_UnshareAddr() *(func(flags int) (err error))\n\nvar Unshare = enter_Unshare\n\nfunc enter_Unshare(flags int) (err error) {\n\tfuncref := get_UnshareAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_UNSHARE<<4, \"\") == 0 {\n\t\t*funcref = impl_Unshare\n\t} else {\n\t\t*funcref = error_Unshare\n\t}\n\treturn (*funcref)(flags)\n}\n\nfunc error_Unshare(flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gethostname(buf []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETHOSTNAME_A<<4, uintptr(_p0), uintptr(len(buf)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETGID<<4)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETPID<<4)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETPGID<<4, uintptr(pid))\n\tpgid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (pid int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETPPID<<4)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETPRIORITY<<4, uintptr(which), uintptr(who))\n\truntime.ExitSyscall()\n\tprio = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRLIMIT<<4, uintptr(resource), uintptr(unsafe.Pointer(rlim)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrusage(who int, rusage *rusage_zos) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRUSAGE<<4, uintptr(who), uintptr(unsafe.Pointer(rusage)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\truntime.EnterSyscall()\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETEGID<<4)\n\truntime.ExitSyscall()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\truntime.EnterSyscall()\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETEUID<<4)\n\truntime.ExitSyscall()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETSID<<4, uintptr(pid))\n\tsid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETUID<<4)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_KILL<<4, uintptr(pid), uintptr(sig))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LCHOWN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LINK_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldPath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newPath)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LINKAT_A<<4, uintptr(oldDirFd), uintptr(unsafe.Pointer(_p0)), uintptr(newDirFd), uintptr(unsafe.Pointer(_p1)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LinkatAddr() *(func(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error))\n\nvar Linkat = enter_Linkat\n\nfunc enter_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) {\n\tfuncref := get_LinkatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LINKAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Linkat\n\t} else {\n\t\t*funcref = error_Linkat\n\t}\n\treturn (*funcref)(oldDirFd, oldPath, newDirFd, newPath, flags)\n}\n\nfunc error_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_LISTEN<<4, uintptr(s), uintptr(n))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *Stat_LE_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LSTAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKDIR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKDIRAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_MkdiratAddr() *(func(dirfd int, path string, mode uint32) (err error))\n\nvar Mkdirat = enter_Mkdirat\n\nfunc enter_Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tfuncref := get_MkdiratAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___MKDIRAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Mkdirat\n\t} else {\n\t\t*funcref = error_Mkdirat\n\t}\n\treturn (*funcref)(dirfd, path, mode)\n}\n\nfunc error_Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKFIFO_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKNOD_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKNODAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_MknodatAddr() *(func(dirfd int, path string, mode uint32, dev int) (err error))\n\nvar Mknodat = enter_Mknodat\n\nfunc enter_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tfuncref := get_MknodatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___MKNODAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Mknodat\n\t} else {\n\t\t*funcref = error_Mknodat\n\t}\n\treturn (*funcref)(dirfd, path, mode, dev)\n}\n\nfunc error_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_PivotRoot(newroot string, oldroot string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(oldroot)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___PIVOT_ROOT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_PivotRootAddr() *(func(newroot string, oldroot string) (err error))\n\nvar PivotRoot = enter_PivotRoot\n\nfunc enter_PivotRoot(newroot string, oldroot string) (err error) {\n\tfuncref := get_PivotRootAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___PIVOT_ROOT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_PivotRoot\n\t} else {\n\t\t*funcref = error_PivotRoot\n\t}\n\treturn (*funcref)(newroot, oldroot)\n}\n\nfunc error_PivotRoot(newroot string, oldroot string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PREAD<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PWRITE<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___PRCTL_A<<4, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_PrctlAddr() *(func(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error))\n\nvar Prctl = enter_Prctl\n\nfunc enter_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\tfuncref := get_PrctlAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___PRCTL_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Prctl\n\t} else {\n\t\t*funcref = error_Prctl\n\t}\n\treturn (*funcref)(option, arg2, arg3, arg4, arg5)\n}\n\nfunc error_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PRLIMIT<<4, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_PrlimitAddr() *(func(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error))\n\nvar Prlimit = enter_Prlimit\n\nfunc enter_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\tfuncref := get_PrlimitAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_PRLIMIT<<4, \"\") == 0 {\n\t\t*funcref = impl_Prlimit\n\t} else {\n\t\t*funcref = error_Prlimit\n\t}\n\treturn (*funcref)(pid, resource, newlimit, old)\n}\n\nfunc error_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAME_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAMEAT_A<<4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_RenameatAddr() *(func(olddirfd int, oldpath string, newdirfd int, newpath string) (err error))\n\nvar Renameat = enter_Renameat\n\nfunc enter_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tfuncref := get_RenameatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___RENAMEAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Renameat\n\t} else {\n\t\t*funcref = error_Renameat\n\t}\n\treturn (*funcref)(olddirfd, oldpath, newdirfd, newpath)\n}\n\nfunc error_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAMEAT2_A<<4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_Renameat2Addr() *(func(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error))\n\nvar Renameat2 = enter_Renameat2\n\nfunc enter_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tfuncref := get_Renameat2Addr()\n\tif funcptrtest(GetZosLibVec()+SYS___RENAMEAT2_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Renameat2\n\t} else {\n\t\t*funcref = error_Renameat2\n\t}\n\treturn (*funcref)(olddirfd, oldpath, newdirfd, newpath, flags)\n}\n\nfunc error_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RMDIR_A<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_LSEEK<<4, uintptr(fd), uintptr(offset), uintptr(whence))\n\truntime.ExitSyscall()\n\toff = int64(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETEGID<<4, uintptr(egid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETEUID<<4, uintptr(euid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SETHOSTNAME_A<<4, uintptr(_p0), uintptr(len(p)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SethostnameAddr() *(func(p []byte) (err error))\n\nvar Sethostname = enter_Sethostname\n\nfunc enter_Sethostname(p []byte) (err error) {\n\tfuncref := get_SethostnameAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___SETHOSTNAME_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Sethostname\n\t} else {\n\t\t*funcref = error_Sethostname\n\t}\n\treturn (*funcref)(p)\n}\n\nfunc error_Sethostname(p []byte) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Setns(fd int, nstype int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETNS<<4, uintptr(fd), uintptr(nstype))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SetnsAddr() *(func(fd int, nstype int) (err error))\n\nvar Setns = enter_Setns\n\nfunc enter_Setns(fd int, nstype int) (err error) {\n\tfuncref := get_SetnsAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_SETNS<<4, \"\") == 0 {\n\t\t*funcref = impl_Setns\n\t} else {\n\t\t*funcref = error_Setns\n\t}\n\treturn (*funcref)(fd, nstype)\n}\n\nfunc error_Setns(fd int, nstype int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETPRIORITY<<4, uintptr(which), uintptr(who), uintptr(prio))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETPGID<<4, uintptr(pid), uintptr(pgid))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(resource int, lim *Rlimit) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETRLIMIT<<4, uintptr(resource), uintptr(unsafe.Pointer(lim)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETREGID<<4, uintptr(rgid), uintptr(egid))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETREUID<<4, uintptr(ruid), uintptr(euid))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec() + SYS_SETSID<<4)\n\tpid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETUID<<4, uintptr(uid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETGID<<4, uintptr(uid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHUTDOWN<<4, uintptr(fd), uintptr(how))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, statLE *Stat_LE_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___STAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statLE)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SYMLINK_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Symlinkat(oldPath string, dirfd int, newPath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldPath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newPath)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SYMLINKAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(dirfd), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SymlinkatAddr() *(func(oldPath string, dirfd int, newPath string) (err error))\n\nvar Symlinkat = enter_Symlinkat\n\nfunc enter_Symlinkat(oldPath string, dirfd int, newPath string) (err error) {\n\tfuncref := get_SymlinkatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___SYMLINKAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Symlinkat\n\t} else {\n\t\t*funcref = error_Symlinkat\n\t}\n\treturn (*funcref)(oldPath, dirfd, newPath)\n}\n\nfunc error_Symlinkat(oldPath string, dirfd int, newPath string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\truntime.EnterSyscall()\n\tCallLeFuncWithErr(GetZosLibVec() + SYS_SYNC<<4)\n\truntime.ExitSyscall()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___TRUNCATE_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(length))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tcgetattr(fildes int, termptr *Termios) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TCGETATTR<<4, uintptr(fildes), uintptr(unsafe.Pointer(termptr)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tcsetattr(fildes int, when int, termptr *Termios) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TCSETATTR<<4, uintptr(fildes), uintptr(when), uintptr(unsafe.Pointer(termptr)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\truntime.EnterSyscall()\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec()+SYS_UMASK<<4, uintptr(mask))\n\truntime.ExitSyscall()\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UNLINK_A<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UNLINKAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_UnlinkatAddr() *(func(dirfd int, path string, flags int) (err error))\n\nvar Unlinkat = enter_Unlinkat\n\nfunc enter_Unlinkat(dirfd int, path string, flags int) (err error) {\n\tfuncref := get_UnlinkatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___UNLINKAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Unlinkat\n\t} else {\n\t\t*funcref = error_Unlinkat\n\t}\n\treturn (*funcref)(dirfd, path, flags)\n}\n\nfunc error_Unlinkat(dirfd int, path string, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, utim *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIME_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(utim)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPEN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPENAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_openatAddr() *(func(dirfd int, path string, flags int, mode uint32) (fd int, err error))\n\nvar openat = enter_openat\n\nfunc enter_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tfuncref := get_openatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___OPENAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_openat\n\t} else {\n\t\t*funcref = error_openat\n\t}\n\treturn (*funcref)(dirfd, path, flags, mode)\n}\n\nfunc error_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPENAT2_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_openat2Addr() *(func(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error))\n\nvar openat2 = enter_openat2\n\nfunc enter_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {\n\tfuncref := get_openat2Addr()\n\tif funcptrtest(GetZosLibVec()+SYS___OPENAT2_A<<4, \"\") == 0 {\n\t\t*funcref = impl_openat2\n\t} else {\n\t\t*funcref = error_openat2\n\t}\n\treturn (*funcref)(dirfd, path, open_how, size)\n}\n\nfunc error_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc remove(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_REMOVE<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc waitid(idType int, id int, info *Siginfo, options int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAITID<<4, uintptr(idType), uintptr(id), uintptr(unsafe.Pointer(info)), uintptr(options))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAITPID<<4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options))\n\truntime.ExitSyscall()\n\twpid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *timeval_zos) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETTIMEOFDAY<<4, uintptr(unsafe.Pointer(tv)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PIPE<<4, uintptr(unsafe.Pointer(p)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIMES_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIMENSAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(ts)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_utimensatAddr() *(func(dirfd int, path string, ts *[2]Timespec, flags int) (err error))\n\nvar utimensat = enter_utimensat\n\nfunc enter_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) {\n\tfuncref := get_utimensatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___UTIMENSAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_utimensat\n\t} else {\n\t\t*funcref = error_utimensat\n\t}\n\treturn (*funcref)(dirfd, path, ts, flags)\n}\n\nfunc error_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Posix_openpt(oflag int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_POSIX_OPENPT<<4, uintptr(oflag))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Grantpt(fildes int) (rc int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GRANTPT<<4, uintptr(fildes))\n\truntime.ExitSyscall()\n\trc = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlockpt(fildes int) (rc int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_UNLOCKPT<<4, uintptr(fildes))\n\truntime.ExitSyscall()\n\trc = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nselcoll\", []_C_int{1, 43}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go",
    "content": "// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\npackage unix\n\n// Deprecated: Use libSystem wrappers instead of direct syscalls.\nconst (\n\tSYS_SYSCALL                        = 0\n\tSYS_EXIT                           = 1\n\tSYS_FORK                           = 2\n\tSYS_READ                           = 3\n\tSYS_WRITE                          = 4\n\tSYS_OPEN                           = 5\n\tSYS_CLOSE                          = 6\n\tSYS_WAIT4                          = 7\n\tSYS_LINK                           = 9\n\tSYS_UNLINK                         = 10\n\tSYS_CHDIR                          = 12\n\tSYS_FCHDIR                         = 13\n\tSYS_MKNOD                          = 14\n\tSYS_CHMOD                          = 15\n\tSYS_CHOWN                          = 16\n\tSYS_GETFSSTAT                      = 18\n\tSYS_GETPID                         = 20\n\tSYS_SETUID                         = 23\n\tSYS_GETUID                         = 24\n\tSYS_GETEUID                        = 25\n\tSYS_PTRACE                         = 26\n\tSYS_RECVMSG                        = 27\n\tSYS_SENDMSG                        = 28\n\tSYS_RECVFROM                       = 29\n\tSYS_ACCEPT                         = 30\n\tSYS_GETPEERNAME                    = 31\n\tSYS_GETSOCKNAME                    = 32\n\tSYS_ACCESS                         = 33\n\tSYS_CHFLAGS                        = 34\n\tSYS_FCHFLAGS                       = 35\n\tSYS_SYNC                           = 36\n\tSYS_KILL                           = 37\n\tSYS_GETPPID                        = 39\n\tSYS_DUP                            = 41\n\tSYS_PIPE                           = 42\n\tSYS_GETEGID                        = 43\n\tSYS_SIGACTION                      = 46\n\tSYS_GETGID                         = 47\n\tSYS_SIGPROCMASK                    = 48\n\tSYS_GETLOGIN                       = 49\n\tSYS_SETLOGIN                       = 50\n\tSYS_ACCT                           = 51\n\tSYS_SIGPENDING                     = 52\n\tSYS_SIGALTSTACK                    = 53\n\tSYS_IOCTL                          = 54\n\tSYS_REBOOT                         = 55\n\tSYS_REVOKE                         = 56\n\tSYS_SYMLINK                        = 57\n\tSYS_READLINK                       = 58\n\tSYS_EXECVE                         = 59\n\tSYS_UMASK                          = 60\n\tSYS_CHROOT                         = 61\n\tSYS_MSYNC                          = 65\n\tSYS_VFORK                          = 66\n\tSYS_MUNMAP                         = 73\n\tSYS_MPROTECT                       = 74\n\tSYS_MADVISE                        = 75\n\tSYS_MINCORE                        = 78\n\tSYS_GETGROUPS                      = 79\n\tSYS_SETGROUPS                      = 80\n\tSYS_GETPGRP                        = 81\n\tSYS_SETPGID                        = 82\n\tSYS_SETITIMER                      = 83\n\tSYS_SWAPON                         = 85\n\tSYS_GETITIMER                      = 86\n\tSYS_GETDTABLESIZE                  = 89\n\tSYS_DUP2                           = 90\n\tSYS_FCNTL                          = 92\n\tSYS_SELECT                         = 93\n\tSYS_FSYNC                          = 95\n\tSYS_SETPRIORITY                    = 96\n\tSYS_SOCKET                         = 97\n\tSYS_CONNECT                        = 98\n\tSYS_GETPRIORITY                    = 100\n\tSYS_BIND                           = 104\n\tSYS_SETSOCKOPT                     = 105\n\tSYS_LISTEN                         = 106\n\tSYS_SIGSUSPEND                     = 111\n\tSYS_GETTIMEOFDAY                   = 116\n\tSYS_GETRUSAGE                      = 117\n\tSYS_GETSOCKOPT                     = 118\n\tSYS_READV                          = 120\n\tSYS_WRITEV                         = 121\n\tSYS_SETTIMEOFDAY                   = 122\n\tSYS_FCHOWN                         = 123\n\tSYS_FCHMOD                         = 124\n\tSYS_SETREUID                       = 126\n\tSYS_SETREGID                       = 127\n\tSYS_RENAME                         = 128\n\tSYS_FLOCK                          = 131\n\tSYS_MKFIFO                         = 132\n\tSYS_SENDTO                         = 133\n\tSYS_SHUTDOWN                       = 134\n\tSYS_SOCKETPAIR                     = 135\n\tSYS_MKDIR                          = 136\n\tSYS_RMDIR                          = 137\n\tSYS_UTIMES                         = 138\n\tSYS_FUTIMES                        = 139\n\tSYS_ADJTIME                        = 140\n\tSYS_GETHOSTUUID                    = 142\n\tSYS_SETSID                         = 147\n\tSYS_GETPGID                        = 151\n\tSYS_SETPRIVEXEC                    = 152\n\tSYS_PREAD                          = 153\n\tSYS_PWRITE                         = 154\n\tSYS_NFSSVC                         = 155\n\tSYS_STATFS                         = 157\n\tSYS_FSTATFS                        = 158\n\tSYS_UNMOUNT                        = 159\n\tSYS_GETFH                          = 161\n\tSYS_QUOTACTL                       = 165\n\tSYS_MOUNT                          = 167\n\tSYS_CSOPS                          = 169\n\tSYS_CSOPS_AUDITTOKEN               = 170\n\tSYS_WAITID                         = 173\n\tSYS_KDEBUG_TYPEFILTER              = 177\n\tSYS_KDEBUG_TRACE_STRING            = 178\n\tSYS_KDEBUG_TRACE64                 = 179\n\tSYS_KDEBUG_TRACE                   = 180\n\tSYS_SETGID                         = 181\n\tSYS_SETEGID                        = 182\n\tSYS_SETEUID                        = 183\n\tSYS_SIGRETURN                      = 184\n\tSYS_THREAD_SELFCOUNTS              = 186\n\tSYS_FDATASYNC                      = 187\n\tSYS_STAT                           = 188\n\tSYS_FSTAT                          = 189\n\tSYS_LSTAT                          = 190\n\tSYS_PATHCONF                       = 191\n\tSYS_FPATHCONF                      = 192\n\tSYS_GETRLIMIT                      = 194\n\tSYS_SETRLIMIT                      = 195\n\tSYS_GETDIRENTRIES                  = 196\n\tSYS_MMAP                           = 197\n\tSYS_LSEEK                          = 199\n\tSYS_TRUNCATE                       = 200\n\tSYS_FTRUNCATE                      = 201\n\tSYS_SYSCTL                         = 202\n\tSYS_MLOCK                          = 203\n\tSYS_MUNLOCK                        = 204\n\tSYS_UNDELETE                       = 205\n\tSYS_OPEN_DPROTECTED_NP             = 216\n\tSYS_GETATTRLIST                    = 220\n\tSYS_SETATTRLIST                    = 221\n\tSYS_GETDIRENTRIESATTR              = 222\n\tSYS_EXCHANGEDATA                   = 223\n\tSYS_SEARCHFS                       = 225\n\tSYS_DELETE                         = 226\n\tSYS_COPYFILE                       = 227\n\tSYS_FGETATTRLIST                   = 228\n\tSYS_FSETATTRLIST                   = 229\n\tSYS_POLL                           = 230\n\tSYS_WATCHEVENT                     = 231\n\tSYS_WAITEVENT                      = 232\n\tSYS_MODWATCH                       = 233\n\tSYS_GETXATTR                       = 234\n\tSYS_FGETXATTR                      = 235\n\tSYS_SETXATTR                       = 236\n\tSYS_FSETXATTR                      = 237\n\tSYS_REMOVEXATTR                    = 238\n\tSYS_FREMOVEXATTR                   = 239\n\tSYS_LISTXATTR                      = 240\n\tSYS_FLISTXATTR                     = 241\n\tSYS_FSCTL                          = 242\n\tSYS_INITGROUPS                     = 243\n\tSYS_POSIX_SPAWN                    = 244\n\tSYS_FFSCTL                         = 245\n\tSYS_NFSCLNT                        = 247\n\tSYS_FHOPEN                         = 248\n\tSYS_MINHERIT                       = 250\n\tSYS_SEMSYS                         = 251\n\tSYS_MSGSYS                         = 252\n\tSYS_SHMSYS                         = 253\n\tSYS_SEMCTL                         = 254\n\tSYS_SEMGET                         = 255\n\tSYS_SEMOP                          = 256\n\tSYS_MSGCTL                         = 258\n\tSYS_MSGGET                         = 259\n\tSYS_MSGSND                         = 260\n\tSYS_MSGRCV                         = 261\n\tSYS_SHMAT                          = 262\n\tSYS_SHMCTL                         = 263\n\tSYS_SHMDT                          = 264\n\tSYS_SHMGET                         = 265\n\tSYS_SHM_OPEN                       = 266\n\tSYS_SHM_UNLINK                     = 267\n\tSYS_SEM_OPEN                       = 268\n\tSYS_SEM_CLOSE                      = 269\n\tSYS_SEM_UNLINK                     = 270\n\tSYS_SEM_WAIT                       = 271\n\tSYS_SEM_TRYWAIT                    = 272\n\tSYS_SEM_POST                       = 273\n\tSYS_SYSCTLBYNAME                   = 274\n\tSYS_OPEN_EXTENDED                  = 277\n\tSYS_UMASK_EXTENDED                 = 278\n\tSYS_STAT_EXTENDED                  = 279\n\tSYS_LSTAT_EXTENDED                 = 280\n\tSYS_FSTAT_EXTENDED                 = 281\n\tSYS_CHMOD_EXTENDED                 = 282\n\tSYS_FCHMOD_EXTENDED                = 283\n\tSYS_ACCESS_EXTENDED                = 284\n\tSYS_SETTID                         = 285\n\tSYS_GETTID                         = 286\n\tSYS_SETSGROUPS                     = 287\n\tSYS_GETSGROUPS                     = 288\n\tSYS_SETWGROUPS                     = 289\n\tSYS_GETWGROUPS                     = 290\n\tSYS_MKFIFO_EXTENDED                = 291\n\tSYS_MKDIR_EXTENDED                 = 292\n\tSYS_IDENTITYSVC                    = 293\n\tSYS_SHARED_REGION_CHECK_NP         = 294\n\tSYS_VM_PRESSURE_MONITOR            = 296\n\tSYS_PSYNCH_RW_LONGRDLOCK           = 297\n\tSYS_PSYNCH_RW_YIELDWRLOCK          = 298\n\tSYS_PSYNCH_RW_DOWNGRADE            = 299\n\tSYS_PSYNCH_RW_UPGRADE              = 300\n\tSYS_PSYNCH_MUTEXWAIT               = 301\n\tSYS_PSYNCH_MUTEXDROP               = 302\n\tSYS_PSYNCH_CVBROAD                 = 303\n\tSYS_PSYNCH_CVSIGNAL                = 304\n\tSYS_PSYNCH_CVWAIT                  = 305\n\tSYS_PSYNCH_RW_RDLOCK               = 306\n\tSYS_PSYNCH_RW_WRLOCK               = 307\n\tSYS_PSYNCH_RW_UNLOCK               = 308\n\tSYS_PSYNCH_RW_UNLOCK2              = 309\n\tSYS_GETSID                         = 310\n\tSYS_SETTID_WITH_PID                = 311\n\tSYS_PSYNCH_CVCLRPREPOST            = 312\n\tSYS_AIO_FSYNC                      = 313\n\tSYS_AIO_RETURN                     = 314\n\tSYS_AIO_SUSPEND                    = 315\n\tSYS_AIO_CANCEL                     = 316\n\tSYS_AIO_ERROR                      = 317\n\tSYS_AIO_READ                       = 318\n\tSYS_AIO_WRITE                      = 319\n\tSYS_LIO_LISTIO                     = 320\n\tSYS_IOPOLICYSYS                    = 322\n\tSYS_PROCESS_POLICY                 = 323\n\tSYS_MLOCKALL                       = 324\n\tSYS_MUNLOCKALL                     = 325\n\tSYS_ISSETUGID                      = 327\n\tSYS___PTHREAD_KILL                 = 328\n\tSYS___PTHREAD_SIGMASK              = 329\n\tSYS___SIGWAIT                      = 330\n\tSYS___DISABLE_THREADSIGNAL         = 331\n\tSYS___PTHREAD_MARKCANCEL           = 332\n\tSYS___PTHREAD_CANCELED             = 333\n\tSYS___SEMWAIT_SIGNAL               = 334\n\tSYS_PROC_INFO                      = 336\n\tSYS_SENDFILE                       = 337\n\tSYS_STAT64                         = 338\n\tSYS_FSTAT64                        = 339\n\tSYS_LSTAT64                        = 340\n\tSYS_STAT64_EXTENDED                = 341\n\tSYS_LSTAT64_EXTENDED               = 342\n\tSYS_FSTAT64_EXTENDED               = 343\n\tSYS_GETDIRENTRIES64                = 344\n\tSYS_STATFS64                       = 345\n\tSYS_FSTATFS64                      = 346\n\tSYS_GETFSSTAT64                    = 347\n\tSYS___PTHREAD_CHDIR                = 348\n\tSYS___PTHREAD_FCHDIR               = 349\n\tSYS_AUDIT                          = 350\n\tSYS_AUDITON                        = 351\n\tSYS_GETAUID                        = 353\n\tSYS_SETAUID                        = 354\n\tSYS_GETAUDIT_ADDR                  = 357\n\tSYS_SETAUDIT_ADDR                  = 358\n\tSYS_AUDITCTL                       = 359\n\tSYS_BSDTHREAD_CREATE               = 360\n\tSYS_BSDTHREAD_TERMINATE            = 361\n\tSYS_KQUEUE                         = 362\n\tSYS_KEVENT                         = 363\n\tSYS_LCHOWN                         = 364\n\tSYS_BSDTHREAD_REGISTER             = 366\n\tSYS_WORKQ_OPEN                     = 367\n\tSYS_WORKQ_KERNRETURN               = 368\n\tSYS_KEVENT64                       = 369\n\tSYS___OLD_SEMWAIT_SIGNAL           = 370\n\tSYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371\n\tSYS_THREAD_SELFID                  = 372\n\tSYS_LEDGER                         = 373\n\tSYS_KEVENT_QOS                     = 374\n\tSYS_KEVENT_ID                      = 375\n\tSYS___MAC_EXECVE                   = 380\n\tSYS___MAC_SYSCALL                  = 381\n\tSYS___MAC_GET_FILE                 = 382\n\tSYS___MAC_SET_FILE                 = 383\n\tSYS___MAC_GET_LINK                 = 384\n\tSYS___MAC_SET_LINK                 = 385\n\tSYS___MAC_GET_PROC                 = 386\n\tSYS___MAC_SET_PROC                 = 387\n\tSYS___MAC_GET_FD                   = 388\n\tSYS___MAC_SET_FD                   = 389\n\tSYS___MAC_GET_PID                  = 390\n\tSYS_PSELECT                        = 394\n\tSYS_PSELECT_NOCANCEL               = 395\n\tSYS_READ_NOCANCEL                  = 396\n\tSYS_WRITE_NOCANCEL                 = 397\n\tSYS_OPEN_NOCANCEL                  = 398\n\tSYS_CLOSE_NOCANCEL                 = 399\n\tSYS_WAIT4_NOCANCEL                 = 400\n\tSYS_RECVMSG_NOCANCEL               = 401\n\tSYS_SENDMSG_NOCANCEL               = 402\n\tSYS_RECVFROM_NOCANCEL              = 403\n\tSYS_ACCEPT_NOCANCEL                = 404\n\tSYS_MSYNC_NOCANCEL                 = 405\n\tSYS_FCNTL_NOCANCEL                 = 406\n\tSYS_SELECT_NOCANCEL                = 407\n\tSYS_FSYNC_NOCANCEL                 = 408\n\tSYS_CONNECT_NOCANCEL               = 409\n\tSYS_SIGSUSPEND_NOCANCEL            = 410\n\tSYS_READV_NOCANCEL                 = 411\n\tSYS_WRITEV_NOCANCEL                = 412\n\tSYS_SENDTO_NOCANCEL                = 413\n\tSYS_PREAD_NOCANCEL                 = 414\n\tSYS_PWRITE_NOCANCEL                = 415\n\tSYS_WAITID_NOCANCEL                = 416\n\tSYS_POLL_NOCANCEL                  = 417\n\tSYS_MSGSND_NOCANCEL                = 418\n\tSYS_MSGRCV_NOCANCEL                = 419\n\tSYS_SEM_WAIT_NOCANCEL              = 420\n\tSYS_AIO_SUSPEND_NOCANCEL           = 421\n\tSYS___SIGWAIT_NOCANCEL             = 422\n\tSYS___SEMWAIT_SIGNAL_NOCANCEL      = 423\n\tSYS___MAC_MOUNT                    = 424\n\tSYS___MAC_GET_MOUNT                = 425\n\tSYS___MAC_GETFSSTAT                = 426\n\tSYS_FSGETPATH                      = 427\n\tSYS_AUDIT_SESSION_SELF             = 428\n\tSYS_AUDIT_SESSION_JOIN             = 429\n\tSYS_FILEPORT_MAKEPORT              = 430\n\tSYS_FILEPORT_MAKEFD                = 431\n\tSYS_AUDIT_SESSION_PORT             = 432\n\tSYS_PID_SUSPEND                    = 433\n\tSYS_PID_RESUME                     = 434\n\tSYS_PID_HIBERNATE                  = 435\n\tSYS_PID_SHUTDOWN_SOCKETS           = 436\n\tSYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438\n\tSYS_KAS_INFO                       = 439\n\tSYS_MEMORYSTATUS_CONTROL           = 440\n\tSYS_GUARDED_OPEN_NP                = 441\n\tSYS_GUARDED_CLOSE_NP               = 442\n\tSYS_GUARDED_KQUEUE_NP              = 443\n\tSYS_CHANGE_FDGUARD_NP              = 444\n\tSYS_USRCTL                         = 445\n\tSYS_PROC_RLIMIT_CONTROL            = 446\n\tSYS_CONNECTX                       = 447\n\tSYS_DISCONNECTX                    = 448\n\tSYS_PEELOFF                        = 449\n\tSYS_SOCKET_DELEGATE                = 450\n\tSYS_TELEMETRY                      = 451\n\tSYS_PROC_UUID_POLICY               = 452\n\tSYS_MEMORYSTATUS_GET_LEVEL         = 453\n\tSYS_SYSTEM_OVERRIDE                = 454\n\tSYS_VFS_PURGE                      = 455\n\tSYS_SFI_CTL                        = 456\n\tSYS_SFI_PIDCTL                     = 457\n\tSYS_COALITION                      = 458\n\tSYS_COALITION_INFO                 = 459\n\tSYS_NECP_MATCH_POLICY              = 460\n\tSYS_GETATTRLISTBULK                = 461\n\tSYS_CLONEFILEAT                    = 462\n\tSYS_OPENAT                         = 463\n\tSYS_OPENAT_NOCANCEL                = 464\n\tSYS_RENAMEAT                       = 465\n\tSYS_FACCESSAT                      = 466\n\tSYS_FCHMODAT                       = 467\n\tSYS_FCHOWNAT                       = 468\n\tSYS_FSTATAT                        = 469\n\tSYS_FSTATAT64                      = 470\n\tSYS_LINKAT                         = 471\n\tSYS_UNLINKAT                       = 472\n\tSYS_READLINKAT                     = 473\n\tSYS_SYMLINKAT                      = 474\n\tSYS_MKDIRAT                        = 475\n\tSYS_GETATTRLISTAT                  = 476\n\tSYS_PROC_TRACE_LOG                 = 477\n\tSYS_BSDTHREAD_CTL                  = 478\n\tSYS_OPENBYID_NP                    = 479\n\tSYS_RECVMSG_X                      = 480\n\tSYS_SENDMSG_X                      = 481\n\tSYS_THREAD_SELFUSAGE               = 482\n\tSYS_CSRCTL                         = 483\n\tSYS_GUARDED_OPEN_DPROTECTED_NP     = 484\n\tSYS_GUARDED_WRITE_NP               = 485\n\tSYS_GUARDED_PWRITE_NP              = 486\n\tSYS_GUARDED_WRITEV_NP              = 487\n\tSYS_RENAMEATX_NP                   = 488\n\tSYS_MREMAP_ENCRYPTED               = 489\n\tSYS_NETAGENT_TRIGGER               = 490\n\tSYS_STACK_SNAPSHOT_WITH_CONFIG     = 491\n\tSYS_MICROSTACKSHOT                 = 492\n\tSYS_GRAB_PGO_DATA                  = 493\n\tSYS_PERSONA                        = 494\n\tSYS_WORK_INTERVAL_CTL              = 499\n\tSYS_GETENTROPY                     = 500\n\tSYS_NECP_OPEN                      = 501\n\tSYS_NECP_CLIENT_ACTION             = 502\n\tSYS___NEXUS_OPEN                   = 503\n\tSYS___NEXUS_REGISTER               = 504\n\tSYS___NEXUS_DEREGISTER             = 505\n\tSYS___NEXUS_CREATE                 = 506\n\tSYS___NEXUS_DESTROY                = 507\n\tSYS___NEXUS_GET_OPT                = 508\n\tSYS___NEXUS_SET_OPT                = 509\n\tSYS___CHANNEL_OPEN                 = 510\n\tSYS___CHANNEL_GET_INFO             = 511\n\tSYS___CHANNEL_SYNC                 = 512\n\tSYS___CHANNEL_GET_OPT              = 513\n\tSYS___CHANNEL_SET_OPT              = 514\n\tSYS_ULOCK_WAIT                     = 515\n\tSYS_ULOCK_WAKE                     = 516\n\tSYS_FCLONEFILEAT                   = 517\n\tSYS_FS_SNAPSHOT                    = 518\n\tSYS_TERMINATE_WITH_PAYLOAD         = 520\n\tSYS_ABORT_WITH_PAYLOAD             = 521\n\tSYS_NECP_SESSION_OPEN              = 522\n\tSYS_NECP_SESSION_ACTION            = 523\n\tSYS_SETATTRLISTAT                  = 524\n\tSYS_NET_QOS_GUIDELINE              = 525\n\tSYS_FMOUNT                         = 526\n\tSYS_NTP_ADJTIME                    = 527\n\tSYS_NTP_GETTIME                    = 528\n\tSYS_OS_FAULT_WITH_PAYLOAD          = 529\n\tSYS_KQUEUE_WORKLOOP_CTL            = 530\n\tSYS___MACH_BRIDGE_REMOTE_TIME      = 531\n\tSYS_MAXSYSCALL                     = 532\n\tSYS_INVALID                        = 63\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go",
    "content": "// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\npackage unix\n\n// Deprecated: Use libSystem wrappers instead of direct syscalls.\nconst (\n\tSYS_SYSCALL                        = 0\n\tSYS_EXIT                           = 1\n\tSYS_FORK                           = 2\n\tSYS_READ                           = 3\n\tSYS_WRITE                          = 4\n\tSYS_OPEN                           = 5\n\tSYS_CLOSE                          = 6\n\tSYS_WAIT4                          = 7\n\tSYS_LINK                           = 9\n\tSYS_UNLINK                         = 10\n\tSYS_CHDIR                          = 12\n\tSYS_FCHDIR                         = 13\n\tSYS_MKNOD                          = 14\n\tSYS_CHMOD                          = 15\n\tSYS_CHOWN                          = 16\n\tSYS_GETFSSTAT                      = 18\n\tSYS_GETPID                         = 20\n\tSYS_SETUID                         = 23\n\tSYS_GETUID                         = 24\n\tSYS_GETEUID                        = 25\n\tSYS_PTRACE                         = 26\n\tSYS_RECVMSG                        = 27\n\tSYS_SENDMSG                        = 28\n\tSYS_RECVFROM                       = 29\n\tSYS_ACCEPT                         = 30\n\tSYS_GETPEERNAME                    = 31\n\tSYS_GETSOCKNAME                    = 32\n\tSYS_ACCESS                         = 33\n\tSYS_CHFLAGS                        = 34\n\tSYS_FCHFLAGS                       = 35\n\tSYS_SYNC                           = 36\n\tSYS_KILL                           = 37\n\tSYS_GETPPID                        = 39\n\tSYS_DUP                            = 41\n\tSYS_PIPE                           = 42\n\tSYS_GETEGID                        = 43\n\tSYS_SIGACTION                      = 46\n\tSYS_GETGID                         = 47\n\tSYS_SIGPROCMASK                    = 48\n\tSYS_GETLOGIN                       = 49\n\tSYS_SETLOGIN                       = 50\n\tSYS_ACCT                           = 51\n\tSYS_SIGPENDING                     = 52\n\tSYS_SIGALTSTACK                    = 53\n\tSYS_IOCTL                          = 54\n\tSYS_REBOOT                         = 55\n\tSYS_REVOKE                         = 56\n\tSYS_SYMLINK                        = 57\n\tSYS_READLINK                       = 58\n\tSYS_EXECVE                         = 59\n\tSYS_UMASK                          = 60\n\tSYS_CHROOT                         = 61\n\tSYS_MSYNC                          = 65\n\tSYS_VFORK                          = 66\n\tSYS_MUNMAP                         = 73\n\tSYS_MPROTECT                       = 74\n\tSYS_MADVISE                        = 75\n\tSYS_MINCORE                        = 78\n\tSYS_GETGROUPS                      = 79\n\tSYS_SETGROUPS                      = 80\n\tSYS_GETPGRP                        = 81\n\tSYS_SETPGID                        = 82\n\tSYS_SETITIMER                      = 83\n\tSYS_SWAPON                         = 85\n\tSYS_GETITIMER                      = 86\n\tSYS_GETDTABLESIZE                  = 89\n\tSYS_DUP2                           = 90\n\tSYS_FCNTL                          = 92\n\tSYS_SELECT                         = 93\n\tSYS_FSYNC                          = 95\n\tSYS_SETPRIORITY                    = 96\n\tSYS_SOCKET                         = 97\n\tSYS_CONNECT                        = 98\n\tSYS_GETPRIORITY                    = 100\n\tSYS_BIND                           = 104\n\tSYS_SETSOCKOPT                     = 105\n\tSYS_LISTEN                         = 106\n\tSYS_SIGSUSPEND                     = 111\n\tSYS_GETTIMEOFDAY                   = 116\n\tSYS_GETRUSAGE                      = 117\n\tSYS_GETSOCKOPT                     = 118\n\tSYS_READV                          = 120\n\tSYS_WRITEV                         = 121\n\tSYS_SETTIMEOFDAY                   = 122\n\tSYS_FCHOWN                         = 123\n\tSYS_FCHMOD                         = 124\n\tSYS_SETREUID                       = 126\n\tSYS_SETREGID                       = 127\n\tSYS_RENAME                         = 128\n\tSYS_FLOCK                          = 131\n\tSYS_MKFIFO                         = 132\n\tSYS_SENDTO                         = 133\n\tSYS_SHUTDOWN                       = 134\n\tSYS_SOCKETPAIR                     = 135\n\tSYS_MKDIR                          = 136\n\tSYS_RMDIR                          = 137\n\tSYS_UTIMES                         = 138\n\tSYS_FUTIMES                        = 139\n\tSYS_ADJTIME                        = 140\n\tSYS_GETHOSTUUID                    = 142\n\tSYS_SETSID                         = 147\n\tSYS_GETPGID                        = 151\n\tSYS_SETPRIVEXEC                    = 152\n\tSYS_PREAD                          = 153\n\tSYS_PWRITE                         = 154\n\tSYS_NFSSVC                         = 155\n\tSYS_STATFS                         = 157\n\tSYS_FSTATFS                        = 158\n\tSYS_UNMOUNT                        = 159\n\tSYS_GETFH                          = 161\n\tSYS_QUOTACTL                       = 165\n\tSYS_MOUNT                          = 167\n\tSYS_CSOPS                          = 169\n\tSYS_CSOPS_AUDITTOKEN               = 170\n\tSYS_WAITID                         = 173\n\tSYS_KDEBUG_TYPEFILTER              = 177\n\tSYS_KDEBUG_TRACE_STRING            = 178\n\tSYS_KDEBUG_TRACE64                 = 179\n\tSYS_KDEBUG_TRACE                   = 180\n\tSYS_SETGID                         = 181\n\tSYS_SETEGID                        = 182\n\tSYS_SETEUID                        = 183\n\tSYS_SIGRETURN                      = 184\n\tSYS_THREAD_SELFCOUNTS              = 186\n\tSYS_FDATASYNC                      = 187\n\tSYS_STAT                           = 188\n\tSYS_FSTAT                          = 189\n\tSYS_LSTAT                          = 190\n\tSYS_PATHCONF                       = 191\n\tSYS_FPATHCONF                      = 192\n\tSYS_GETRLIMIT                      = 194\n\tSYS_SETRLIMIT                      = 195\n\tSYS_GETDIRENTRIES                  = 196\n\tSYS_MMAP                           = 197\n\tSYS_LSEEK                          = 199\n\tSYS_TRUNCATE                       = 200\n\tSYS_FTRUNCATE                      = 201\n\tSYS_SYSCTL                         = 202\n\tSYS_MLOCK                          = 203\n\tSYS_MUNLOCK                        = 204\n\tSYS_UNDELETE                       = 205\n\tSYS_OPEN_DPROTECTED_NP             = 216\n\tSYS_GETATTRLIST                    = 220\n\tSYS_SETATTRLIST                    = 221\n\tSYS_GETDIRENTRIESATTR              = 222\n\tSYS_EXCHANGEDATA                   = 223\n\tSYS_SEARCHFS                       = 225\n\tSYS_DELETE                         = 226\n\tSYS_COPYFILE                       = 227\n\tSYS_FGETATTRLIST                   = 228\n\tSYS_FSETATTRLIST                   = 229\n\tSYS_POLL                           = 230\n\tSYS_WATCHEVENT                     = 231\n\tSYS_WAITEVENT                      = 232\n\tSYS_MODWATCH                       = 233\n\tSYS_GETXATTR                       = 234\n\tSYS_FGETXATTR                      = 235\n\tSYS_SETXATTR                       = 236\n\tSYS_FSETXATTR                      = 237\n\tSYS_REMOVEXATTR                    = 238\n\tSYS_FREMOVEXATTR                   = 239\n\tSYS_LISTXATTR                      = 240\n\tSYS_FLISTXATTR                     = 241\n\tSYS_FSCTL                          = 242\n\tSYS_INITGROUPS                     = 243\n\tSYS_POSIX_SPAWN                    = 244\n\tSYS_FFSCTL                         = 245\n\tSYS_NFSCLNT                        = 247\n\tSYS_FHOPEN                         = 248\n\tSYS_MINHERIT                       = 250\n\tSYS_SEMSYS                         = 251\n\tSYS_MSGSYS                         = 252\n\tSYS_SHMSYS                         = 253\n\tSYS_SEMCTL                         = 254\n\tSYS_SEMGET                         = 255\n\tSYS_SEMOP                          = 256\n\tSYS_MSGCTL                         = 258\n\tSYS_MSGGET                         = 259\n\tSYS_MSGSND                         = 260\n\tSYS_MSGRCV                         = 261\n\tSYS_SHMAT                          = 262\n\tSYS_SHMCTL                         = 263\n\tSYS_SHMDT                          = 264\n\tSYS_SHMGET                         = 265\n\tSYS_SHM_OPEN                       = 266\n\tSYS_SHM_UNLINK                     = 267\n\tSYS_SEM_OPEN                       = 268\n\tSYS_SEM_CLOSE                      = 269\n\tSYS_SEM_UNLINK                     = 270\n\tSYS_SEM_WAIT                       = 271\n\tSYS_SEM_TRYWAIT                    = 272\n\tSYS_SEM_POST                       = 273\n\tSYS_SYSCTLBYNAME                   = 274\n\tSYS_OPEN_EXTENDED                  = 277\n\tSYS_UMASK_EXTENDED                 = 278\n\tSYS_STAT_EXTENDED                  = 279\n\tSYS_LSTAT_EXTENDED                 = 280\n\tSYS_FSTAT_EXTENDED                 = 281\n\tSYS_CHMOD_EXTENDED                 = 282\n\tSYS_FCHMOD_EXTENDED                = 283\n\tSYS_ACCESS_EXTENDED                = 284\n\tSYS_SETTID                         = 285\n\tSYS_GETTID                         = 286\n\tSYS_SETSGROUPS                     = 287\n\tSYS_GETSGROUPS                     = 288\n\tSYS_SETWGROUPS                     = 289\n\tSYS_GETWGROUPS                     = 290\n\tSYS_MKFIFO_EXTENDED                = 291\n\tSYS_MKDIR_EXTENDED                 = 292\n\tSYS_IDENTITYSVC                    = 293\n\tSYS_SHARED_REGION_CHECK_NP         = 294\n\tSYS_VM_PRESSURE_MONITOR            = 296\n\tSYS_PSYNCH_RW_LONGRDLOCK           = 297\n\tSYS_PSYNCH_RW_YIELDWRLOCK          = 298\n\tSYS_PSYNCH_RW_DOWNGRADE            = 299\n\tSYS_PSYNCH_RW_UPGRADE              = 300\n\tSYS_PSYNCH_MUTEXWAIT               = 301\n\tSYS_PSYNCH_MUTEXDROP               = 302\n\tSYS_PSYNCH_CVBROAD                 = 303\n\tSYS_PSYNCH_CVSIGNAL                = 304\n\tSYS_PSYNCH_CVWAIT                  = 305\n\tSYS_PSYNCH_RW_RDLOCK               = 306\n\tSYS_PSYNCH_RW_WRLOCK               = 307\n\tSYS_PSYNCH_RW_UNLOCK               = 308\n\tSYS_PSYNCH_RW_UNLOCK2              = 309\n\tSYS_GETSID                         = 310\n\tSYS_SETTID_WITH_PID                = 311\n\tSYS_PSYNCH_CVCLRPREPOST            = 312\n\tSYS_AIO_FSYNC                      = 313\n\tSYS_AIO_RETURN                     = 314\n\tSYS_AIO_SUSPEND                    = 315\n\tSYS_AIO_CANCEL                     = 316\n\tSYS_AIO_ERROR                      = 317\n\tSYS_AIO_READ                       = 318\n\tSYS_AIO_WRITE                      = 319\n\tSYS_LIO_LISTIO                     = 320\n\tSYS_IOPOLICYSYS                    = 322\n\tSYS_PROCESS_POLICY                 = 323\n\tSYS_MLOCKALL                       = 324\n\tSYS_MUNLOCKALL                     = 325\n\tSYS_ISSETUGID                      = 327\n\tSYS___PTHREAD_KILL                 = 328\n\tSYS___PTHREAD_SIGMASK              = 329\n\tSYS___SIGWAIT                      = 330\n\tSYS___DISABLE_THREADSIGNAL         = 331\n\tSYS___PTHREAD_MARKCANCEL           = 332\n\tSYS___PTHREAD_CANCELED             = 333\n\tSYS___SEMWAIT_SIGNAL               = 334\n\tSYS_PROC_INFO                      = 336\n\tSYS_SENDFILE                       = 337\n\tSYS_STAT64                         = 338\n\tSYS_FSTAT64                        = 339\n\tSYS_LSTAT64                        = 340\n\tSYS_STAT64_EXTENDED                = 341\n\tSYS_LSTAT64_EXTENDED               = 342\n\tSYS_FSTAT64_EXTENDED               = 343\n\tSYS_GETDIRENTRIES64                = 344\n\tSYS_STATFS64                       = 345\n\tSYS_FSTATFS64                      = 346\n\tSYS_GETFSSTAT64                    = 347\n\tSYS___PTHREAD_CHDIR                = 348\n\tSYS___PTHREAD_FCHDIR               = 349\n\tSYS_AUDIT                          = 350\n\tSYS_AUDITON                        = 351\n\tSYS_GETAUID                        = 353\n\tSYS_SETAUID                        = 354\n\tSYS_GETAUDIT_ADDR                  = 357\n\tSYS_SETAUDIT_ADDR                  = 358\n\tSYS_AUDITCTL                       = 359\n\tSYS_BSDTHREAD_CREATE               = 360\n\tSYS_BSDTHREAD_TERMINATE            = 361\n\tSYS_KQUEUE                         = 362\n\tSYS_KEVENT                         = 363\n\tSYS_LCHOWN                         = 364\n\tSYS_BSDTHREAD_REGISTER             = 366\n\tSYS_WORKQ_OPEN                     = 367\n\tSYS_WORKQ_KERNRETURN               = 368\n\tSYS_KEVENT64                       = 369\n\tSYS___OLD_SEMWAIT_SIGNAL           = 370\n\tSYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371\n\tSYS_THREAD_SELFID                  = 372\n\tSYS_LEDGER                         = 373\n\tSYS_KEVENT_QOS                     = 374\n\tSYS_KEVENT_ID                      = 375\n\tSYS___MAC_EXECVE                   = 380\n\tSYS___MAC_SYSCALL                  = 381\n\tSYS___MAC_GET_FILE                 = 382\n\tSYS___MAC_SET_FILE                 = 383\n\tSYS___MAC_GET_LINK                 = 384\n\tSYS___MAC_SET_LINK                 = 385\n\tSYS___MAC_GET_PROC                 = 386\n\tSYS___MAC_SET_PROC                 = 387\n\tSYS___MAC_GET_FD                   = 388\n\tSYS___MAC_SET_FD                   = 389\n\tSYS___MAC_GET_PID                  = 390\n\tSYS_PSELECT                        = 394\n\tSYS_PSELECT_NOCANCEL               = 395\n\tSYS_READ_NOCANCEL                  = 396\n\tSYS_WRITE_NOCANCEL                 = 397\n\tSYS_OPEN_NOCANCEL                  = 398\n\tSYS_CLOSE_NOCANCEL                 = 399\n\tSYS_WAIT4_NOCANCEL                 = 400\n\tSYS_RECVMSG_NOCANCEL               = 401\n\tSYS_SENDMSG_NOCANCEL               = 402\n\tSYS_RECVFROM_NOCANCEL              = 403\n\tSYS_ACCEPT_NOCANCEL                = 404\n\tSYS_MSYNC_NOCANCEL                 = 405\n\tSYS_FCNTL_NOCANCEL                 = 406\n\tSYS_SELECT_NOCANCEL                = 407\n\tSYS_FSYNC_NOCANCEL                 = 408\n\tSYS_CONNECT_NOCANCEL               = 409\n\tSYS_SIGSUSPEND_NOCANCEL            = 410\n\tSYS_READV_NOCANCEL                 = 411\n\tSYS_WRITEV_NOCANCEL                = 412\n\tSYS_SENDTO_NOCANCEL                = 413\n\tSYS_PREAD_NOCANCEL                 = 414\n\tSYS_PWRITE_NOCANCEL                = 415\n\tSYS_WAITID_NOCANCEL                = 416\n\tSYS_POLL_NOCANCEL                  = 417\n\tSYS_MSGSND_NOCANCEL                = 418\n\tSYS_MSGRCV_NOCANCEL                = 419\n\tSYS_SEM_WAIT_NOCANCEL              = 420\n\tSYS_AIO_SUSPEND_NOCANCEL           = 421\n\tSYS___SIGWAIT_NOCANCEL             = 422\n\tSYS___SEMWAIT_SIGNAL_NOCANCEL      = 423\n\tSYS___MAC_MOUNT                    = 424\n\tSYS___MAC_GET_MOUNT                = 425\n\tSYS___MAC_GETFSSTAT                = 426\n\tSYS_FSGETPATH                      = 427\n\tSYS_AUDIT_SESSION_SELF             = 428\n\tSYS_AUDIT_SESSION_JOIN             = 429\n\tSYS_FILEPORT_MAKEPORT              = 430\n\tSYS_FILEPORT_MAKEFD                = 431\n\tSYS_AUDIT_SESSION_PORT             = 432\n\tSYS_PID_SUSPEND                    = 433\n\tSYS_PID_RESUME                     = 434\n\tSYS_PID_HIBERNATE                  = 435\n\tSYS_PID_SHUTDOWN_SOCKETS           = 436\n\tSYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438\n\tSYS_KAS_INFO                       = 439\n\tSYS_MEMORYSTATUS_CONTROL           = 440\n\tSYS_GUARDED_OPEN_NP                = 441\n\tSYS_GUARDED_CLOSE_NP               = 442\n\tSYS_GUARDED_KQUEUE_NP              = 443\n\tSYS_CHANGE_FDGUARD_NP              = 444\n\tSYS_USRCTL                         = 445\n\tSYS_PROC_RLIMIT_CONTROL            = 446\n\tSYS_CONNECTX                       = 447\n\tSYS_DISCONNECTX                    = 448\n\tSYS_PEELOFF                        = 449\n\tSYS_SOCKET_DELEGATE                = 450\n\tSYS_TELEMETRY                      = 451\n\tSYS_PROC_UUID_POLICY               = 452\n\tSYS_MEMORYSTATUS_GET_LEVEL         = 453\n\tSYS_SYSTEM_OVERRIDE                = 454\n\tSYS_VFS_PURGE                      = 455\n\tSYS_SFI_CTL                        = 456\n\tSYS_SFI_PIDCTL                     = 457\n\tSYS_COALITION                      = 458\n\tSYS_COALITION_INFO                 = 459\n\tSYS_NECP_MATCH_POLICY              = 460\n\tSYS_GETATTRLISTBULK                = 461\n\tSYS_CLONEFILEAT                    = 462\n\tSYS_OPENAT                         = 463\n\tSYS_OPENAT_NOCANCEL                = 464\n\tSYS_RENAMEAT                       = 465\n\tSYS_FACCESSAT                      = 466\n\tSYS_FCHMODAT                       = 467\n\tSYS_FCHOWNAT                       = 468\n\tSYS_FSTATAT                        = 469\n\tSYS_FSTATAT64                      = 470\n\tSYS_LINKAT                         = 471\n\tSYS_UNLINKAT                       = 472\n\tSYS_READLINKAT                     = 473\n\tSYS_SYMLINKAT                      = 474\n\tSYS_MKDIRAT                        = 475\n\tSYS_GETATTRLISTAT                  = 476\n\tSYS_PROC_TRACE_LOG                 = 477\n\tSYS_BSDTHREAD_CTL                  = 478\n\tSYS_OPENBYID_NP                    = 479\n\tSYS_RECVMSG_X                      = 480\n\tSYS_SENDMSG_X                      = 481\n\tSYS_THREAD_SELFUSAGE               = 482\n\tSYS_CSRCTL                         = 483\n\tSYS_GUARDED_OPEN_DPROTECTED_NP     = 484\n\tSYS_GUARDED_WRITE_NP               = 485\n\tSYS_GUARDED_PWRITE_NP              = 486\n\tSYS_GUARDED_WRITEV_NP              = 487\n\tSYS_RENAMEATX_NP                   = 488\n\tSYS_MREMAP_ENCRYPTED               = 489\n\tSYS_NETAGENT_TRIGGER               = 490\n\tSYS_STACK_SNAPSHOT_WITH_CONFIG     = 491\n\tSYS_MICROSTACKSHOT                 = 492\n\tSYS_GRAB_PGO_DATA                  = 493\n\tSYS_PERSONA                        = 494\n\tSYS_WORK_INTERVAL_CTL              = 499\n\tSYS_GETENTROPY                     = 500\n\tSYS_NECP_OPEN                      = 501\n\tSYS_NECP_CLIENT_ACTION             = 502\n\tSYS___NEXUS_OPEN                   = 503\n\tSYS___NEXUS_REGISTER               = 504\n\tSYS___NEXUS_DEREGISTER             = 505\n\tSYS___NEXUS_CREATE                 = 506\n\tSYS___NEXUS_DESTROY                = 507\n\tSYS___NEXUS_GET_OPT                = 508\n\tSYS___NEXUS_SET_OPT                = 509\n\tSYS___CHANNEL_OPEN                 = 510\n\tSYS___CHANNEL_GET_INFO             = 511\n\tSYS___CHANNEL_SYNC                 = 512\n\tSYS___CHANNEL_GET_OPT              = 513\n\tSYS___CHANNEL_SET_OPT              = 514\n\tSYS_ULOCK_WAIT                     = 515\n\tSYS_ULOCK_WAKE                     = 516\n\tSYS_FCLONEFILEAT                   = 517\n\tSYS_FS_SNAPSHOT                    = 518\n\tSYS_TERMINATE_WITH_PAYLOAD         = 520\n\tSYS_ABORT_WITH_PAYLOAD             = 521\n\tSYS_NECP_SESSION_OPEN              = 522\n\tSYS_NECP_SESSION_ACTION            = 523\n\tSYS_SETATTRLISTAT                  = 524\n\tSYS_NET_QOS_GUIDELINE              = 525\n\tSYS_FMOUNT                         = 526\n\tSYS_NTP_ADJTIME                    = 527\n\tSYS_NTP_GETTIME                    = 528\n\tSYS_OS_FAULT_WITH_PAYLOAD          = 529\n\tSYS_MAXSYSCALL                     = 530\n\tSYS_INVALID                        = 63\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go",
    "content": "// go run mksysnum.go https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nconst (\n\tSYS_EXIT  = 1 // { void exit(int rval); }\n\tSYS_FORK  = 2 // { int fork(void); }\n\tSYS_READ  = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN  = 5 // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE = 6 // { int close(int fd); }\n\tSYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int\n\t// SYS_NOSYS = 8;  // { int nosys(void); } __nosys nosys_args int\n\tSYS_LINK                   = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                 = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                  = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                 = 13  // { int fchdir(int fd); }\n\tSYS_MKNOD                  = 14  // { int mknod(char *path, int mode, int dev); }\n\tSYS_CHMOD                  = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                  = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_OBREAK                 = 17  // { int obreak(char *nsize); } break obreak_args int\n\tSYS_GETFSSTAT              = 18  // { int getfsstat(struct statfs *buf, long bufsize, int flags); }\n\tSYS_GETPID                 = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                  = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                 = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                 = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                 = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                = 28  // { int sendmsg(int s, caddr_t msg, int flags); }\n\tSYS_RECVFROM               = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); }\n\tSYS_ACCEPT                 = 30  // { int accept(int s, caddr_t name, int *anamelen); }\n\tSYS_GETPEERNAME            = 31  // { int getpeername(int fdes, caddr_t asa, int *alen); }\n\tSYS_GETSOCKNAME            = 32  // { int getsockname(int fdes, caddr_t asa, int *alen); }\n\tSYS_ACCESS                 = 33  // { int access(char *path, int flags); }\n\tSYS_CHFLAGS                = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS               = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                   = 36  // { int sync(void); }\n\tSYS_KILL                   = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                = 39  // { pid_t getppid(void); }\n\tSYS_DUP                    = 41  // { int dup(int fd); }\n\tSYS_PIPE                   = 42  // { int pipe(void); }\n\tSYS_GETEGID                = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                 = 44  // { int profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE                 = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                 = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN               = 49  // { int getlogin(char *namebuf, size_t namelen); }\n\tSYS_SETLOGIN               = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                   = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK            = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                  = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                 = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                 = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK               = 58  // { int readlink(char *path, char *buf, int count); }\n\tSYS_EXECVE                 = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                  = 60  // { int umask(int newmask); } umask umask_args int\n\tSYS_CHROOT                 = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                  = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                  = 66  // { pid_t vfork(void); }\n\tSYS_SBRK                   = 69  // { caddr_t sbrk(size_t incr); }\n\tSYS_SSTK                   = 70  // { int sstk(size_t incr); }\n\tSYS_MUNMAP                 = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT               = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS              = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS              = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER              = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                 = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER              = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE          = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                   = 90  // { int dup2(int from, int to); }\n\tSYS_FCNTL                  = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                 = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                  = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY            = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                 = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY            = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                   = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT             = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                 = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY           = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE              = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT             = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                  = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                 = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY           = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                 = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                 = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID               = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID               = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                 = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                  = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                 = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                 = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN               = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR             = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                  = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                  = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                 = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                 = 147 // { int setsid(void); }\n\tSYS_QUOTACTL               = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_STATFS                 = 157 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                = 158 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFH                  = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                 = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_EXTPREAD               = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_EXTPWRITE              = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_NTP_ADJTIME            = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                 = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF               = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF              = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT              = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT              = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS_MMAP                   = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); }\n\tSYS_LSEEK                  = 199 // { off_t lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE               = 200 // { int truncate(char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE              = 201 // { int ftruncate(int fd, int pad, off_t length); }\n\tSYS___SYSCTL               = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                  = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE               = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                   = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS___SEMCTL               = 220 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SEMGET                 = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                  = 222 // { int semop(int semid, struct sembuf *sops, u_int nsops); }\n\tSYS_MSGCTL                 = 224 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_MSGGET                 = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                 = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                 = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                  = 228 // { caddr_t shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMCTL                 = 229 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_SHMDT                  = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                 = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME          = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME          = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES           = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP              = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_MINHERIT               = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                  = 251 // { int rfork(int flags); }\n\tSYS_OPENBSD_POLL           = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID              = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                 = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_LCHMOD                 = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_EXTPREADV              = 289 // { ssize_t extpreadv(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); }\n\tSYS_EXTPWRITEV             = 290 // { ssize_t extpwritev(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); }\n\tSYS_FHSTATFS               = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_FHOPEN                 = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT               = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD              = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }\n\tSYS_KLDFIRSTMOD            = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                 = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID              = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID              = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN             = 314 // { int aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND            = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL             = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR              = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_AIO_READ               = 318 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE              = 319 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO             = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_YIELD                  = 321 // { int yield(void); }\n\tSYS_MLOCKALL               = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL             = 325 // { int munlockall(void); }\n\tSYS___GETCWD               = 326 // { int __getcwd(u_char *buf, u_int buflen); }\n\tSYS_SCHED_SETPARAM         = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM         = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER     = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER     = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD            = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL  = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                 = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                 = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                   = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK            = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND             = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGACTION              = 342 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGPENDING             = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGRETURN              = 344 // { int sigreturn(ucontext_t *sigcntxp); }\n\tSYS_SIGTIMEDWAIT           = 345 // { int sigtimedwait(const sigset_t *set,siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO            = 346 // { int sigwaitinfo(const sigset_t *set,siginfo_t *info); }\n\tSYS___ACL_GET_FILE         = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE         = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD           = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD           = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE      = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD        = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE    = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD      = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL             = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE       = 356 // { int extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE       = 357 // { int extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE    = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE       = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID              = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID              = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                 = 362 // { int kqueue(void); }\n\tSYS_KEVENT                 = 363 // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_KENV                   = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS               = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE               = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_VARSYM_SET             = 450 // { int varsym_set(int level, const char *name, const char *data); }\n\tSYS_VARSYM_GET             = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); }\n\tSYS_VARSYM_LIST            = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); }\n\tSYS_EXEC_SYS_REGISTER      = 465 // { int exec_sys_register(void *entry); }\n\tSYS_EXEC_SYS_UNREGISTER    = 466 // { int exec_sys_unregister(int id); }\n\tSYS_SYS_CHECKPOINT         = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); }\n\tSYS_MOUNTCTL               = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); }\n\tSYS_UMTX_SLEEP             = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); }\n\tSYS_UMTX_WAKEUP            = 470 // { int umtx_wakeup(volatile const int *ptr, int count); }\n\tSYS_JAIL_ATTACH            = 471 // { int jail_attach(int jid); }\n\tSYS_SET_TLS_AREA           = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); }\n\tSYS_GET_TLS_AREA           = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); }\n\tSYS_CLOSEFROM              = 474 // { int closefrom(int fd); }\n\tSYS_STAT                   = 475 // { int stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                  = 476 // { int fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                  = 477 // { int lstat(const char *path, struct stat *ub); }\n\tSYS_FHSTAT                 = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES          = 479 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }\n\tSYS_GETDENTS               = 480 // { int getdents(int fd, char *buf, size_t count); }\n\tSYS_USCHED_SET             = 481 // { int usched_set(pid_t pid, int cmd, void *data, int bytes); }\n\tSYS_EXTACCEPT              = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); }\n\tSYS_EXTCONNECT             = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); }\n\tSYS_MCONTROL               = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); }\n\tSYS_VMSPACE_CREATE         = 486 // { int vmspace_create(void *id, int type, void *data); }\n\tSYS_VMSPACE_DESTROY        = 487 // { int vmspace_destroy(void *id); }\n\tSYS_VMSPACE_CTL            = 488 // { int vmspace_ctl(void *id, int cmd, \t\tstruct trapframe *tframe,\tstruct vextframe *vframe); }\n\tSYS_VMSPACE_MMAP           = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, int prot, int flags, int fd, off_t offset); }\n\tSYS_VMSPACE_MUNMAP         = 490 // { int vmspace_munmap(void *id, void *addr,\tsize_t len); }\n\tSYS_VMSPACE_MCONTROL       = 491 // { int vmspace_mcontrol(void *id, void *addr, \tsize_t len, int behav, off_t value); }\n\tSYS_VMSPACE_PREAD          = 492 // { ssize_t vmspace_pread(void *id, void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_VMSPACE_PWRITE         = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_EXTEXIT                = 494 // { void extexit(int how, int status, void *addr); }\n\tSYS_LWP_CREATE             = 495 // { int lwp_create(struct lwp_params *params); }\n\tSYS_LWP_GETTID             = 496 // { lwpid_t lwp_gettid(void); }\n\tSYS_LWP_KILL               = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); }\n\tSYS_LWP_RTPRIO             = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); }\n\tSYS_PSELECT                = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts,    const sigset_t *sigmask); }\n\tSYS_STATVFS                = 500 // { int statvfs(const char *path, struct statvfs *buf); }\n\tSYS_FSTATVFS               = 501 // { int fstatvfs(int fd, struct statvfs *buf); }\n\tSYS_FHSTATVFS              = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); }\n\tSYS_GETVFSSTAT             = 503 // { int getvfsstat(struct statfs *buf,          struct statvfs *vbuf, long vbufsize, int flags); }\n\tSYS_OPENAT                 = 504 // { int openat(int fd, char *path, int flags, int mode); }\n\tSYS_FSTATAT                = 505 // { int fstatat(int fd, char *path, \tstruct stat *sb, int flags); }\n\tSYS_FCHMODAT               = 506 // { int fchmodat(int fd, char *path, int mode, int flags); }\n\tSYS_FCHOWNAT               = 507 // { int fchownat(int fd, char *path, int uid, int gid, int flags); }\n\tSYS_UNLINKAT               = 508 // { int unlinkat(int fd, char *path, int flags); }\n\tSYS_FACCESSAT              = 509 // { int faccessat(int fd, char *path, int amode, int flags); }\n\tSYS_MQ_OPEN                = 510 // { mqd_t mq_open(const char * name, int oflag, mode_t mode, struct mq_attr *attr); }\n\tSYS_MQ_CLOSE               = 511 // { int mq_close(mqd_t mqdes); }\n\tSYS_MQ_UNLINK              = 512 // { int mq_unlink(const char *name); }\n\tSYS_MQ_GETATTR             = 513 // { int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat); }\n\tSYS_MQ_SETATTR             = 514 // { int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat); }\n\tSYS_MQ_NOTIFY              = 515 // { int mq_notify(mqd_t mqdes, const struct sigevent *notification); }\n\tSYS_MQ_SEND                = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio); }\n\tSYS_MQ_RECEIVE             = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio); }\n\tSYS_MQ_TIMEDSEND           = 518 // { int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_MQ_TIMEDRECEIVE        = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_IOPRIO_SET             = 520 // { int ioprio_set(int which, int who, int prio); }\n\tSYS_IOPRIO_GET             = 521 // { int ioprio_get(int which, int who); }\n\tSYS_CHROOT_KERNEL          = 522 // { int chroot_kernel(char *path); }\n\tSYS_RENAMEAT               = 523 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_MKDIRAT                = 524 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT               = 525 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_MKNODAT                = 526 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_READLINKAT             = 527 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT              = 528 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_SWAPOFF                = 529 // { int swapoff(char *name); }\n\tSYS_VQUOTACTL              = 530 // { int vquotactl(const char *path, struct plistref *pref); }\n\tSYS_LINKAT                 = 531 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flags); }\n\tSYS_EACCESS                = 532 // { int eaccess(char *path, int flags); }\n\tSYS_LPATHCONF              = 533 // { int lpathconf(char *path, int name); }\n\tSYS_VMM_GUEST_CTL          = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }\n\tSYS_VMM_GUEST_SYNC_ADDR    = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); }\n\tSYS_PROCCTL                = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); }\n\tSYS_CHFLAGSAT              = 537 // { int chflagsat(int fd, const char *path, u_long flags, int atflags);}\n\tSYS_PIPE2                  = 538 // { int pipe2(int *fildes, int flags); }\n\tSYS_UTIMENSAT              = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); }\n\tSYS_FUTIMENS               = 540 // { int futimens(int fd, const struct timespec *ts); }\n\tSYS_ACCEPT4                = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); }\n\tSYS_LWP_SETNAME            = 542 // { int lwp_setname(lwpid_t tid, const char *name); }\n\tSYS_PPOLL                  = 543 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *sigmask); }\n\tSYS_LWP_SETAFFINITY        = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); }\n\tSYS_LWP_GETAFFINITY        = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); }\n\tSYS_LWP_CREATE2            = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); }\n\tSYS_GETCPUCLOCKID          = 547 // { int getcpuclockid(pid_t pid, lwpid_t lwp_id, clockid_t *clock_id); }\n\tSYS_WAIT6                  = 548 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_LWP_GETNAME            = 549 // { int lwp_getname(lwpid_t tid, char *name, size_t len); }\n\tSYS_GETRANDOM              = 550 // { ssize_t getrandom(void *buf, size_t len, unsigned flags); }\n\tSYS___REALPATH             = 551 // { ssize_t __realpath(const char *path, char *buf, size_t len); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_386.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/386/include -m32 /tmp/386/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_WAITPID                      = 7\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_TIME                         = 13\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_BREAK                        = 17\n\tSYS_OLDSTAT                      = 18\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_UMOUNT                       = 22\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_STIME                        = 25\n\tSYS_PTRACE                       = 26\n\tSYS_ALARM                        = 27\n\tSYS_OLDFSTAT                     = 28\n\tSYS_PAUSE                        = 29\n\tSYS_UTIME                        = 30\n\tSYS_STTY                         = 31\n\tSYS_GTTY                         = 32\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_FTIME                        = 35\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_PROF                         = 44\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_SIGNAL                       = 48\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_LOCK                         = 53\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_MPX                          = 56\n\tSYS_SETPGID                      = 57\n\tSYS_ULIMIT                       = 58\n\tSYS_OLDOLDUNAME                  = 59\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SGETMASK                     = 68\n\tSYS_SSETMASK                     = 69\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRLIMIT                    = 76\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SELECT                       = 82\n\tSYS_SYMLINK                      = 83\n\tSYS_OLDLSTAT                     = 84\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_READDIR                      = 89\n\tSYS_MMAP                         = 90\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_PROFIL                       = 98\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_IOPERM                       = 101\n\tSYS_SOCKETCALL                   = 102\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_OLDUNAME                     = 109\n\tSYS_IOPL                         = 110\n\tSYS_VHANGUP                      = 111\n\tSYS_IDLE                         = 112\n\tSYS_VM86OLD                      = 113\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_IPC                          = 117\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_MODIFY_LDT                   = 123\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_CREATE_MODULE                = 127\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_GET_KERNEL_SYMS              = 130\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_AFS_SYSCALL                  = 137\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_VM86                         = 166\n\tSYS_QUERY_MODULE                 = 167\n\tSYS_POLL                         = 168\n\tSYS_NFSSERVCTL                   = 169\n\tSYS_SETRESGID                    = 170\n\tSYS_GETRESGID                    = 171\n\tSYS_PRCTL                        = 172\n\tSYS_RT_SIGRETURN                 = 173\n\tSYS_RT_SIGACTION                 = 174\n\tSYS_RT_SIGPROCMASK               = 175\n\tSYS_RT_SIGPENDING                = 176\n\tSYS_RT_SIGTIMEDWAIT              = 177\n\tSYS_RT_SIGQUEUEINFO              = 178\n\tSYS_RT_SIGSUSPEND                = 179\n\tSYS_PREAD64                      = 180\n\tSYS_PWRITE64                     = 181\n\tSYS_CHOWN                        = 182\n\tSYS_GETCWD                       = 183\n\tSYS_CAPGET                       = 184\n\tSYS_CAPSET                       = 185\n\tSYS_SIGALTSTACK                  = 186\n\tSYS_SENDFILE                     = 187\n\tSYS_GETPMSG                      = 188\n\tSYS_PUTPMSG                      = 189\n\tSYS_VFORK                        = 190\n\tSYS_UGETRLIMIT                   = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_LCHOWN32                     = 198\n\tSYS_GETUID32                     = 199\n\tSYS_GETGID32                     = 200\n\tSYS_GETEUID32                    = 201\n\tSYS_GETEGID32                    = 202\n\tSYS_SETREUID32                   = 203\n\tSYS_SETREGID32                   = 204\n\tSYS_GETGROUPS32                  = 205\n\tSYS_SETGROUPS32                  = 206\n\tSYS_FCHOWN32                     = 207\n\tSYS_SETRESUID32                  = 208\n\tSYS_GETRESUID32                  = 209\n\tSYS_SETRESGID32                  = 210\n\tSYS_GETRESGID32                  = 211\n\tSYS_CHOWN32                      = 212\n\tSYS_SETUID32                     = 213\n\tSYS_SETGID32                     = 214\n\tSYS_SETFSUID32                   = 215\n\tSYS_SETFSGID32                   = 216\n\tSYS_PIVOT_ROOT                   = 217\n\tSYS_MINCORE                      = 218\n\tSYS_MADVISE                      = 219\n\tSYS_GETDENTS64                   = 220\n\tSYS_FCNTL64                      = 221\n\tSYS_GETTID                       = 224\n\tSYS_READAHEAD                    = 225\n\tSYS_SETXATTR                     = 226\n\tSYS_LSETXATTR                    = 227\n\tSYS_FSETXATTR                    = 228\n\tSYS_GETXATTR                     = 229\n\tSYS_LGETXATTR                    = 230\n\tSYS_FGETXATTR                    = 231\n\tSYS_LISTXATTR                    = 232\n\tSYS_LLISTXATTR                   = 233\n\tSYS_FLISTXATTR                   = 234\n\tSYS_REMOVEXATTR                  = 235\n\tSYS_LREMOVEXATTR                 = 236\n\tSYS_FREMOVEXATTR                 = 237\n\tSYS_TKILL                        = 238\n\tSYS_SENDFILE64                   = 239\n\tSYS_FUTEX                        = 240\n\tSYS_SCHED_SETAFFINITY            = 241\n\tSYS_SCHED_GETAFFINITY            = 242\n\tSYS_SET_THREAD_AREA              = 243\n\tSYS_GET_THREAD_AREA              = 244\n\tSYS_IO_SETUP                     = 245\n\tSYS_IO_DESTROY                   = 246\n\tSYS_IO_GETEVENTS                 = 247\n\tSYS_IO_SUBMIT                    = 248\n\tSYS_IO_CANCEL                    = 249\n\tSYS_FADVISE64                    = 250\n\tSYS_EXIT_GROUP                   = 252\n\tSYS_LOOKUP_DCOOKIE               = 253\n\tSYS_EPOLL_CREATE                 = 254\n\tSYS_EPOLL_CTL                    = 255\n\tSYS_EPOLL_WAIT                   = 256\n\tSYS_REMAP_FILE_PAGES             = 257\n\tSYS_SET_TID_ADDRESS              = 258\n\tSYS_TIMER_CREATE                 = 259\n\tSYS_TIMER_SETTIME                = 260\n\tSYS_TIMER_GETTIME                = 261\n\tSYS_TIMER_GETOVERRUN             = 262\n\tSYS_TIMER_DELETE                 = 263\n\tSYS_CLOCK_SETTIME                = 264\n\tSYS_CLOCK_GETTIME                = 265\n\tSYS_CLOCK_GETRES                 = 266\n\tSYS_CLOCK_NANOSLEEP              = 267\n\tSYS_STATFS64                     = 268\n\tSYS_FSTATFS64                    = 269\n\tSYS_TGKILL                       = 270\n\tSYS_UTIMES                       = 271\n\tSYS_FADVISE64_64                 = 272\n\tSYS_VSERVER                      = 273\n\tSYS_MBIND                        = 274\n\tSYS_GET_MEMPOLICY                = 275\n\tSYS_SET_MEMPOLICY                = 276\n\tSYS_MQ_OPEN                      = 277\n\tSYS_MQ_UNLINK                    = 278\n\tSYS_MQ_TIMEDSEND                 = 279\n\tSYS_MQ_TIMEDRECEIVE              = 280\n\tSYS_MQ_NOTIFY                    = 281\n\tSYS_MQ_GETSETATTR                = 282\n\tSYS_KEXEC_LOAD                   = 283\n\tSYS_WAITID                       = 284\n\tSYS_ADD_KEY                      = 286\n\tSYS_REQUEST_KEY                  = 287\n\tSYS_KEYCTL                       = 288\n\tSYS_IOPRIO_SET                   = 289\n\tSYS_IOPRIO_GET                   = 290\n\tSYS_INOTIFY_INIT                 = 291\n\tSYS_INOTIFY_ADD_WATCH            = 292\n\tSYS_INOTIFY_RM_WATCH             = 293\n\tSYS_MIGRATE_PAGES                = 294\n\tSYS_OPENAT                       = 295\n\tSYS_MKDIRAT                      = 296\n\tSYS_MKNODAT                      = 297\n\tSYS_FCHOWNAT                     = 298\n\tSYS_FUTIMESAT                    = 299\n\tSYS_FSTATAT64                    = 300\n\tSYS_UNLINKAT                     = 301\n\tSYS_RENAMEAT                     = 302\n\tSYS_LINKAT                       = 303\n\tSYS_SYMLINKAT                    = 304\n\tSYS_READLINKAT                   = 305\n\tSYS_FCHMODAT                     = 306\n\tSYS_FACCESSAT                    = 307\n\tSYS_PSELECT6                     = 308\n\tSYS_PPOLL                        = 309\n\tSYS_UNSHARE                      = 310\n\tSYS_SET_ROBUST_LIST              = 311\n\tSYS_GET_ROBUST_LIST              = 312\n\tSYS_SPLICE                       = 313\n\tSYS_SYNC_FILE_RANGE              = 314\n\tSYS_TEE                          = 315\n\tSYS_VMSPLICE                     = 316\n\tSYS_MOVE_PAGES                   = 317\n\tSYS_GETCPU                       = 318\n\tSYS_EPOLL_PWAIT                  = 319\n\tSYS_UTIMENSAT                    = 320\n\tSYS_SIGNALFD                     = 321\n\tSYS_TIMERFD_CREATE               = 322\n\tSYS_EVENTFD                      = 323\n\tSYS_FALLOCATE                    = 324\n\tSYS_TIMERFD_SETTIME              = 325\n\tSYS_TIMERFD_GETTIME              = 326\n\tSYS_SIGNALFD4                    = 327\n\tSYS_EVENTFD2                     = 328\n\tSYS_EPOLL_CREATE1                = 329\n\tSYS_DUP3                         = 330\n\tSYS_PIPE2                        = 331\n\tSYS_INOTIFY_INIT1                = 332\n\tSYS_PREADV                       = 333\n\tSYS_PWRITEV                      = 334\n\tSYS_RT_TGSIGQUEUEINFO            = 335\n\tSYS_PERF_EVENT_OPEN              = 336\n\tSYS_RECVMMSG                     = 337\n\tSYS_FANOTIFY_INIT                = 338\n\tSYS_FANOTIFY_MARK                = 339\n\tSYS_PRLIMIT64                    = 340\n\tSYS_NAME_TO_HANDLE_AT            = 341\n\tSYS_OPEN_BY_HANDLE_AT            = 342\n\tSYS_CLOCK_ADJTIME                = 343\n\tSYS_SYNCFS                       = 344\n\tSYS_SENDMMSG                     = 345\n\tSYS_SETNS                        = 346\n\tSYS_PROCESS_VM_READV             = 347\n\tSYS_PROCESS_VM_WRITEV            = 348\n\tSYS_KCMP                         = 349\n\tSYS_FINIT_MODULE                 = 350\n\tSYS_SCHED_SETATTR                = 351\n\tSYS_SCHED_GETATTR                = 352\n\tSYS_RENAMEAT2                    = 353\n\tSYS_SECCOMP                      = 354\n\tSYS_GETRANDOM                    = 355\n\tSYS_MEMFD_CREATE                 = 356\n\tSYS_BPF                          = 357\n\tSYS_EXECVEAT                     = 358\n\tSYS_SOCKET                       = 359\n\tSYS_SOCKETPAIR                   = 360\n\tSYS_BIND                         = 361\n\tSYS_CONNECT                      = 362\n\tSYS_LISTEN                       = 363\n\tSYS_ACCEPT4                      = 364\n\tSYS_GETSOCKOPT                   = 365\n\tSYS_SETSOCKOPT                   = 366\n\tSYS_GETSOCKNAME                  = 367\n\tSYS_GETPEERNAME                  = 368\n\tSYS_SENDTO                       = 369\n\tSYS_SENDMSG                      = 370\n\tSYS_RECVFROM                     = 371\n\tSYS_RECVMSG                      = 372\n\tSYS_SHUTDOWN                     = 373\n\tSYS_USERFAULTFD                  = 374\n\tSYS_MEMBARRIER                   = 375\n\tSYS_MLOCK2                       = 376\n\tSYS_COPY_FILE_RANGE              = 377\n\tSYS_PREADV2                      = 378\n\tSYS_PWRITEV2                     = 379\n\tSYS_PKEY_MPROTECT                = 380\n\tSYS_PKEY_ALLOC                   = 381\n\tSYS_PKEY_FREE                    = 382\n\tSYS_STATX                        = 383\n\tSYS_ARCH_PRCTL                   = 384\n\tSYS_IO_PGETEVENTS                = 385\n\tSYS_RSEQ                         = 386\n\tSYS_SEMGET                       = 393\n\tSYS_SEMCTL                       = 394\n\tSYS_SHMGET                       = 395\n\tSYS_SHMCTL                       = 396\n\tSYS_SHMAT                        = 397\n\tSYS_SHMDT                        = 398\n\tSYS_MSGGET                       = 399\n\tSYS_MSGSND                       = 400\n\tSYS_MSGRCV                       = 401\n\tSYS_MSGCTL                       = 402\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_MEMFD_SECRET                 = 447\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n\tSYS_MAP_SHADOW_STACK             = 453\n\tSYS_FUTEX_WAKE                   = 454\n\tSYS_FUTEX_WAIT                   = 455\n\tSYS_FUTEX_REQUEUE                = 456\n\tSYS_STATMOUNT                    = 457\n\tSYS_LISTMOUNT                    = 458\n\tSYS_LSM_GET_SELF_ATTR            = 459\n\tSYS_LSM_SET_SELF_ATTR            = 460\n\tSYS_LSM_LIST_MODULES             = 461\n\tSYS_MSEAL                        = 462\n\tSYS_SETXATTRAT                   = 463\n\tSYS_GETXATTRAT                   = 464\n\tSYS_LISTXATTRAT                  = 465\n\tSYS_REMOVEXATTRAT                = 466\n\tSYS_OPEN_TREE_ATTR               = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/amd64/include -m64 /tmp/amd64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 0\n\tSYS_WRITE                   = 1\n\tSYS_OPEN                    = 2\n\tSYS_CLOSE                   = 3\n\tSYS_STAT                    = 4\n\tSYS_FSTAT                   = 5\n\tSYS_LSTAT                   = 6\n\tSYS_POLL                    = 7\n\tSYS_LSEEK                   = 8\n\tSYS_MMAP                    = 9\n\tSYS_MPROTECT                = 10\n\tSYS_MUNMAP                  = 11\n\tSYS_BRK                     = 12\n\tSYS_RT_SIGACTION            = 13\n\tSYS_RT_SIGPROCMASK          = 14\n\tSYS_RT_SIGRETURN            = 15\n\tSYS_IOCTL                   = 16\n\tSYS_PREAD64                 = 17\n\tSYS_PWRITE64                = 18\n\tSYS_READV                   = 19\n\tSYS_WRITEV                  = 20\n\tSYS_ACCESS                  = 21\n\tSYS_PIPE                    = 22\n\tSYS_SELECT                  = 23\n\tSYS_SCHED_YIELD             = 24\n\tSYS_MREMAP                  = 25\n\tSYS_MSYNC                   = 26\n\tSYS_MINCORE                 = 27\n\tSYS_MADVISE                 = 28\n\tSYS_SHMGET                  = 29\n\tSYS_SHMAT                   = 30\n\tSYS_SHMCTL                  = 31\n\tSYS_DUP                     = 32\n\tSYS_DUP2                    = 33\n\tSYS_PAUSE                   = 34\n\tSYS_NANOSLEEP               = 35\n\tSYS_GETITIMER               = 36\n\tSYS_ALARM                   = 37\n\tSYS_SETITIMER               = 38\n\tSYS_GETPID                  = 39\n\tSYS_SENDFILE                = 40\n\tSYS_SOCKET                  = 41\n\tSYS_CONNECT                 = 42\n\tSYS_ACCEPT                  = 43\n\tSYS_SENDTO                  = 44\n\tSYS_RECVFROM                = 45\n\tSYS_SENDMSG                 = 46\n\tSYS_RECVMSG                 = 47\n\tSYS_SHUTDOWN                = 48\n\tSYS_BIND                    = 49\n\tSYS_LISTEN                  = 50\n\tSYS_GETSOCKNAME             = 51\n\tSYS_GETPEERNAME             = 52\n\tSYS_SOCKETPAIR              = 53\n\tSYS_SETSOCKOPT              = 54\n\tSYS_GETSOCKOPT              = 55\n\tSYS_CLONE                   = 56\n\tSYS_FORK                    = 57\n\tSYS_VFORK                   = 58\n\tSYS_EXECVE                  = 59\n\tSYS_EXIT                    = 60\n\tSYS_WAIT4                   = 61\n\tSYS_KILL                    = 62\n\tSYS_UNAME                   = 63\n\tSYS_SEMGET                  = 64\n\tSYS_SEMOP                   = 65\n\tSYS_SEMCTL                  = 66\n\tSYS_SHMDT                   = 67\n\tSYS_MSGGET                  = 68\n\tSYS_MSGSND                  = 69\n\tSYS_MSGRCV                  = 70\n\tSYS_MSGCTL                  = 71\n\tSYS_FCNTL                   = 72\n\tSYS_FLOCK                   = 73\n\tSYS_FSYNC                   = 74\n\tSYS_FDATASYNC               = 75\n\tSYS_TRUNCATE                = 76\n\tSYS_FTRUNCATE               = 77\n\tSYS_GETDENTS                = 78\n\tSYS_GETCWD                  = 79\n\tSYS_CHDIR                   = 80\n\tSYS_FCHDIR                  = 81\n\tSYS_RENAME                  = 82\n\tSYS_MKDIR                   = 83\n\tSYS_RMDIR                   = 84\n\tSYS_CREAT                   = 85\n\tSYS_LINK                    = 86\n\tSYS_UNLINK                  = 87\n\tSYS_SYMLINK                 = 88\n\tSYS_READLINK                = 89\n\tSYS_CHMOD                   = 90\n\tSYS_FCHMOD                  = 91\n\tSYS_CHOWN                   = 92\n\tSYS_FCHOWN                  = 93\n\tSYS_LCHOWN                  = 94\n\tSYS_UMASK                   = 95\n\tSYS_GETTIMEOFDAY            = 96\n\tSYS_GETRLIMIT               = 97\n\tSYS_GETRUSAGE               = 98\n\tSYS_SYSINFO                 = 99\n\tSYS_TIMES                   = 100\n\tSYS_PTRACE                  = 101\n\tSYS_GETUID                  = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_GETGID                  = 104\n\tSYS_SETUID                  = 105\n\tSYS_SETGID                  = 106\n\tSYS_GETEUID                 = 107\n\tSYS_GETEGID                 = 108\n\tSYS_SETPGID                 = 109\n\tSYS_GETPPID                 = 110\n\tSYS_GETPGRP                 = 111\n\tSYS_SETSID                  = 112\n\tSYS_SETREUID                = 113\n\tSYS_SETREGID                = 114\n\tSYS_GETGROUPS               = 115\n\tSYS_SETGROUPS               = 116\n\tSYS_SETRESUID               = 117\n\tSYS_GETRESUID               = 118\n\tSYS_SETRESGID               = 119\n\tSYS_GETRESGID               = 120\n\tSYS_GETPGID                 = 121\n\tSYS_SETFSUID                = 122\n\tSYS_SETFSGID                = 123\n\tSYS_GETSID                  = 124\n\tSYS_CAPGET                  = 125\n\tSYS_CAPSET                  = 126\n\tSYS_RT_SIGPENDING           = 127\n\tSYS_RT_SIGTIMEDWAIT         = 128\n\tSYS_RT_SIGQUEUEINFO         = 129\n\tSYS_RT_SIGSUSPEND           = 130\n\tSYS_SIGALTSTACK             = 131\n\tSYS_UTIME                   = 132\n\tSYS_MKNOD                   = 133\n\tSYS_USELIB                  = 134\n\tSYS_PERSONALITY             = 135\n\tSYS_USTAT                   = 136\n\tSYS_STATFS                  = 137\n\tSYS_FSTATFS                 = 138\n\tSYS_SYSFS                   = 139\n\tSYS_GETPRIORITY             = 140\n\tSYS_SETPRIORITY             = 141\n\tSYS_SCHED_SETPARAM          = 142\n\tSYS_SCHED_GETPARAM          = 143\n\tSYS_SCHED_SETSCHEDULER      = 144\n\tSYS_SCHED_GETSCHEDULER      = 145\n\tSYS_SCHED_GET_PRIORITY_MAX  = 146\n\tSYS_SCHED_GET_PRIORITY_MIN  = 147\n\tSYS_SCHED_RR_GET_INTERVAL   = 148\n\tSYS_MLOCK                   = 149\n\tSYS_MUNLOCK                 = 150\n\tSYS_MLOCKALL                = 151\n\tSYS_MUNLOCKALL              = 152\n\tSYS_VHANGUP                 = 153\n\tSYS_MODIFY_LDT              = 154\n\tSYS_PIVOT_ROOT              = 155\n\tSYS__SYSCTL                 = 156\n\tSYS_PRCTL                   = 157\n\tSYS_ARCH_PRCTL              = 158\n\tSYS_ADJTIMEX                = 159\n\tSYS_SETRLIMIT               = 160\n\tSYS_CHROOT                  = 161\n\tSYS_SYNC                    = 162\n\tSYS_ACCT                    = 163\n\tSYS_SETTIMEOFDAY            = 164\n\tSYS_MOUNT                   = 165\n\tSYS_UMOUNT2                 = 166\n\tSYS_SWAPON                  = 167\n\tSYS_SWAPOFF                 = 168\n\tSYS_REBOOT                  = 169\n\tSYS_SETHOSTNAME             = 170\n\tSYS_SETDOMAINNAME           = 171\n\tSYS_IOPL                    = 172\n\tSYS_IOPERM                  = 173\n\tSYS_CREATE_MODULE           = 174\n\tSYS_INIT_MODULE             = 175\n\tSYS_DELETE_MODULE           = 176\n\tSYS_GET_KERNEL_SYMS         = 177\n\tSYS_QUERY_MODULE            = 178\n\tSYS_QUOTACTL                = 179\n\tSYS_NFSSERVCTL              = 180\n\tSYS_GETPMSG                 = 181\n\tSYS_PUTPMSG                 = 182\n\tSYS_AFS_SYSCALL             = 183\n\tSYS_TUXCALL                 = 184\n\tSYS_SECURITY                = 185\n\tSYS_GETTID                  = 186\n\tSYS_READAHEAD               = 187\n\tSYS_SETXATTR                = 188\n\tSYS_LSETXATTR               = 189\n\tSYS_FSETXATTR               = 190\n\tSYS_GETXATTR                = 191\n\tSYS_LGETXATTR               = 192\n\tSYS_FGETXATTR               = 193\n\tSYS_LISTXATTR               = 194\n\tSYS_LLISTXATTR              = 195\n\tSYS_FLISTXATTR              = 196\n\tSYS_REMOVEXATTR             = 197\n\tSYS_LREMOVEXATTR            = 198\n\tSYS_FREMOVEXATTR            = 199\n\tSYS_TKILL                   = 200\n\tSYS_TIME                    = 201\n\tSYS_FUTEX                   = 202\n\tSYS_SCHED_SETAFFINITY       = 203\n\tSYS_SCHED_GETAFFINITY       = 204\n\tSYS_SET_THREAD_AREA         = 205\n\tSYS_IO_SETUP                = 206\n\tSYS_IO_DESTROY              = 207\n\tSYS_IO_GETEVENTS            = 208\n\tSYS_IO_SUBMIT               = 209\n\tSYS_IO_CANCEL               = 210\n\tSYS_GET_THREAD_AREA         = 211\n\tSYS_LOOKUP_DCOOKIE          = 212\n\tSYS_EPOLL_CREATE            = 213\n\tSYS_EPOLL_CTL_OLD           = 214\n\tSYS_EPOLL_WAIT_OLD          = 215\n\tSYS_REMAP_FILE_PAGES        = 216\n\tSYS_GETDENTS64              = 217\n\tSYS_SET_TID_ADDRESS         = 218\n\tSYS_RESTART_SYSCALL         = 219\n\tSYS_SEMTIMEDOP              = 220\n\tSYS_FADVISE64               = 221\n\tSYS_TIMER_CREATE            = 222\n\tSYS_TIMER_SETTIME           = 223\n\tSYS_TIMER_GETTIME           = 224\n\tSYS_TIMER_GETOVERRUN        = 225\n\tSYS_TIMER_DELETE            = 226\n\tSYS_CLOCK_SETTIME           = 227\n\tSYS_CLOCK_GETTIME           = 228\n\tSYS_CLOCK_GETRES            = 229\n\tSYS_CLOCK_NANOSLEEP         = 230\n\tSYS_EXIT_GROUP              = 231\n\tSYS_EPOLL_WAIT              = 232\n\tSYS_EPOLL_CTL               = 233\n\tSYS_TGKILL                  = 234\n\tSYS_UTIMES                  = 235\n\tSYS_VSERVER                 = 236\n\tSYS_MBIND                   = 237\n\tSYS_SET_MEMPOLICY           = 238\n\tSYS_GET_MEMPOLICY           = 239\n\tSYS_MQ_OPEN                 = 240\n\tSYS_MQ_UNLINK               = 241\n\tSYS_MQ_TIMEDSEND            = 242\n\tSYS_MQ_TIMEDRECEIVE         = 243\n\tSYS_MQ_NOTIFY               = 244\n\tSYS_MQ_GETSETATTR           = 245\n\tSYS_KEXEC_LOAD              = 246\n\tSYS_WAITID                  = 247\n\tSYS_ADD_KEY                 = 248\n\tSYS_REQUEST_KEY             = 249\n\tSYS_KEYCTL                  = 250\n\tSYS_IOPRIO_SET              = 251\n\tSYS_IOPRIO_GET              = 252\n\tSYS_INOTIFY_INIT            = 253\n\tSYS_INOTIFY_ADD_WATCH       = 254\n\tSYS_INOTIFY_RM_WATCH        = 255\n\tSYS_MIGRATE_PAGES           = 256\n\tSYS_OPENAT                  = 257\n\tSYS_MKDIRAT                 = 258\n\tSYS_MKNODAT                 = 259\n\tSYS_FCHOWNAT                = 260\n\tSYS_FUTIMESAT               = 261\n\tSYS_NEWFSTATAT              = 262\n\tSYS_UNLINKAT                = 263\n\tSYS_RENAMEAT                = 264\n\tSYS_LINKAT                  = 265\n\tSYS_SYMLINKAT               = 266\n\tSYS_READLINKAT              = 267\n\tSYS_FCHMODAT                = 268\n\tSYS_FACCESSAT               = 269\n\tSYS_PSELECT6                = 270\n\tSYS_PPOLL                   = 271\n\tSYS_UNSHARE                 = 272\n\tSYS_SET_ROBUST_LIST         = 273\n\tSYS_GET_ROBUST_LIST         = 274\n\tSYS_SPLICE                  = 275\n\tSYS_TEE                     = 276\n\tSYS_SYNC_FILE_RANGE         = 277\n\tSYS_VMSPLICE                = 278\n\tSYS_MOVE_PAGES              = 279\n\tSYS_UTIMENSAT               = 280\n\tSYS_EPOLL_PWAIT             = 281\n\tSYS_SIGNALFD                = 282\n\tSYS_TIMERFD_CREATE          = 283\n\tSYS_EVENTFD                 = 284\n\tSYS_FALLOCATE               = 285\n\tSYS_TIMERFD_SETTIME         = 286\n\tSYS_TIMERFD_GETTIME         = 287\n\tSYS_ACCEPT4                 = 288\n\tSYS_SIGNALFD4               = 289\n\tSYS_EVENTFD2                = 290\n\tSYS_EPOLL_CREATE1           = 291\n\tSYS_DUP3                    = 292\n\tSYS_PIPE2                   = 293\n\tSYS_INOTIFY_INIT1           = 294\n\tSYS_PREADV                  = 295\n\tSYS_PWRITEV                 = 296\n\tSYS_RT_TGSIGQUEUEINFO       = 297\n\tSYS_PERF_EVENT_OPEN         = 298\n\tSYS_RECVMMSG                = 299\n\tSYS_FANOTIFY_INIT           = 300\n\tSYS_FANOTIFY_MARK           = 301\n\tSYS_PRLIMIT64               = 302\n\tSYS_NAME_TO_HANDLE_AT       = 303\n\tSYS_OPEN_BY_HANDLE_AT       = 304\n\tSYS_CLOCK_ADJTIME           = 305\n\tSYS_SYNCFS                  = 306\n\tSYS_SENDMMSG                = 307\n\tSYS_SETNS                   = 308\n\tSYS_GETCPU                  = 309\n\tSYS_PROCESS_VM_READV        = 310\n\tSYS_PROCESS_VM_WRITEV       = 311\n\tSYS_KCMP                    = 312\n\tSYS_FINIT_MODULE            = 313\n\tSYS_SCHED_SETATTR           = 314\n\tSYS_SCHED_GETATTR           = 315\n\tSYS_RENAMEAT2               = 316\n\tSYS_SECCOMP                 = 317\n\tSYS_GETRANDOM               = 318\n\tSYS_MEMFD_CREATE            = 319\n\tSYS_KEXEC_FILE_LOAD         = 320\n\tSYS_BPF                     = 321\n\tSYS_EXECVEAT                = 322\n\tSYS_USERFAULTFD             = 323\n\tSYS_MEMBARRIER              = 324\n\tSYS_MLOCK2                  = 325\n\tSYS_COPY_FILE_RANGE         = 326\n\tSYS_PREADV2                 = 327\n\tSYS_PWRITEV2                = 328\n\tSYS_PKEY_MPROTECT           = 329\n\tSYS_PKEY_ALLOC              = 330\n\tSYS_PKEY_FREE               = 331\n\tSYS_STATX                   = 332\n\tSYS_IO_PGETEVENTS           = 333\n\tSYS_RSEQ                    = 334\n\tSYS_URETPROBE               = 335\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm/include /tmp/arm/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL_MASK                 = 0\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_PTRACE                       = 26\n\tSYS_PAUSE                        = 29\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_SETPGID                      = 57\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SYMLINK                      = 83\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_VHANGUP                      = 111\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_POLL                         = 168\n\tSYS_NFSSERVCTL                   = 169\n\tSYS_SETRESGID                    = 170\n\tSYS_GETRESGID                    = 171\n\tSYS_PRCTL                        = 172\n\tSYS_RT_SIGRETURN                 = 173\n\tSYS_RT_SIGACTION                 = 174\n\tSYS_RT_SIGPROCMASK               = 175\n\tSYS_RT_SIGPENDING                = 176\n\tSYS_RT_SIGTIMEDWAIT              = 177\n\tSYS_RT_SIGQUEUEINFO              = 178\n\tSYS_RT_SIGSUSPEND                = 179\n\tSYS_PREAD64                      = 180\n\tSYS_PWRITE64                     = 181\n\tSYS_CHOWN                        = 182\n\tSYS_GETCWD                       = 183\n\tSYS_CAPGET                       = 184\n\tSYS_CAPSET                       = 185\n\tSYS_SIGALTSTACK                  = 186\n\tSYS_SENDFILE                     = 187\n\tSYS_VFORK                        = 190\n\tSYS_UGETRLIMIT                   = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_LCHOWN32                     = 198\n\tSYS_GETUID32                     = 199\n\tSYS_GETGID32                     = 200\n\tSYS_GETEUID32                    = 201\n\tSYS_GETEGID32                    = 202\n\tSYS_SETREUID32                   = 203\n\tSYS_SETREGID32                   = 204\n\tSYS_GETGROUPS32                  = 205\n\tSYS_SETGROUPS32                  = 206\n\tSYS_FCHOWN32                     = 207\n\tSYS_SETRESUID32                  = 208\n\tSYS_GETRESUID32                  = 209\n\tSYS_SETRESGID32                  = 210\n\tSYS_GETRESGID32                  = 211\n\tSYS_CHOWN32                      = 212\n\tSYS_SETUID32                     = 213\n\tSYS_SETGID32                     = 214\n\tSYS_SETFSUID32                   = 215\n\tSYS_SETFSGID32                   = 216\n\tSYS_GETDENTS64                   = 217\n\tSYS_PIVOT_ROOT                   = 218\n\tSYS_MINCORE                      = 219\n\tSYS_MADVISE                      = 220\n\tSYS_FCNTL64                      = 221\n\tSYS_GETTID                       = 224\n\tSYS_READAHEAD                    = 225\n\tSYS_SETXATTR                     = 226\n\tSYS_LSETXATTR                    = 227\n\tSYS_FSETXATTR                    = 228\n\tSYS_GETXATTR                     = 229\n\tSYS_LGETXATTR                    = 230\n\tSYS_FGETXATTR                    = 231\n\tSYS_LISTXATTR                    = 232\n\tSYS_LLISTXATTR                   = 233\n\tSYS_FLISTXATTR                   = 234\n\tSYS_REMOVEXATTR                  = 235\n\tSYS_LREMOVEXATTR                 = 236\n\tSYS_FREMOVEXATTR                 = 237\n\tSYS_TKILL                        = 238\n\tSYS_SENDFILE64                   = 239\n\tSYS_FUTEX                        = 240\n\tSYS_SCHED_SETAFFINITY            = 241\n\tSYS_SCHED_GETAFFINITY            = 242\n\tSYS_IO_SETUP                     = 243\n\tSYS_IO_DESTROY                   = 244\n\tSYS_IO_GETEVENTS                 = 245\n\tSYS_IO_SUBMIT                    = 246\n\tSYS_IO_CANCEL                    = 247\n\tSYS_EXIT_GROUP                   = 248\n\tSYS_LOOKUP_DCOOKIE               = 249\n\tSYS_EPOLL_CREATE                 = 250\n\tSYS_EPOLL_CTL                    = 251\n\tSYS_EPOLL_WAIT                   = 252\n\tSYS_REMAP_FILE_PAGES             = 253\n\tSYS_SET_TID_ADDRESS              = 256\n\tSYS_TIMER_CREATE                 = 257\n\tSYS_TIMER_SETTIME                = 258\n\tSYS_TIMER_GETTIME                = 259\n\tSYS_TIMER_GETOVERRUN             = 260\n\tSYS_TIMER_DELETE                 = 261\n\tSYS_CLOCK_SETTIME                = 262\n\tSYS_CLOCK_GETTIME                = 263\n\tSYS_CLOCK_GETRES                 = 264\n\tSYS_CLOCK_NANOSLEEP              = 265\n\tSYS_STATFS64                     = 266\n\tSYS_FSTATFS64                    = 267\n\tSYS_TGKILL                       = 268\n\tSYS_UTIMES                       = 269\n\tSYS_ARM_FADVISE64_64             = 270\n\tSYS_PCICONFIG_IOBASE             = 271\n\tSYS_PCICONFIG_READ               = 272\n\tSYS_PCICONFIG_WRITE              = 273\n\tSYS_MQ_OPEN                      = 274\n\tSYS_MQ_UNLINK                    = 275\n\tSYS_MQ_TIMEDSEND                 = 276\n\tSYS_MQ_TIMEDRECEIVE              = 277\n\tSYS_MQ_NOTIFY                    = 278\n\tSYS_MQ_GETSETATTR                = 279\n\tSYS_WAITID                       = 280\n\tSYS_SOCKET                       = 281\n\tSYS_BIND                         = 282\n\tSYS_CONNECT                      = 283\n\tSYS_LISTEN                       = 284\n\tSYS_ACCEPT                       = 285\n\tSYS_GETSOCKNAME                  = 286\n\tSYS_GETPEERNAME                  = 287\n\tSYS_SOCKETPAIR                   = 288\n\tSYS_SEND                         = 289\n\tSYS_SENDTO                       = 290\n\tSYS_RECV                         = 291\n\tSYS_RECVFROM                     = 292\n\tSYS_SHUTDOWN                     = 293\n\tSYS_SETSOCKOPT                   = 294\n\tSYS_GETSOCKOPT                   = 295\n\tSYS_SENDMSG                      = 296\n\tSYS_RECVMSG                      = 297\n\tSYS_SEMOP                        = 298\n\tSYS_SEMGET                       = 299\n\tSYS_SEMCTL                       = 300\n\tSYS_MSGSND                       = 301\n\tSYS_MSGRCV                       = 302\n\tSYS_MSGGET                       = 303\n\tSYS_MSGCTL                       = 304\n\tSYS_SHMAT                        = 305\n\tSYS_SHMDT                        = 306\n\tSYS_SHMGET                       = 307\n\tSYS_SHMCTL                       = 308\n\tSYS_ADD_KEY                      = 309\n\tSYS_REQUEST_KEY                  = 310\n\tSYS_KEYCTL                       = 311\n\tSYS_SEMTIMEDOP                   = 312\n\tSYS_VSERVER                      = 313\n\tSYS_IOPRIO_SET                   = 314\n\tSYS_IOPRIO_GET                   = 315\n\tSYS_INOTIFY_INIT                 = 316\n\tSYS_INOTIFY_ADD_WATCH            = 317\n\tSYS_INOTIFY_RM_WATCH             = 318\n\tSYS_MBIND                        = 319\n\tSYS_GET_MEMPOLICY                = 320\n\tSYS_SET_MEMPOLICY                = 321\n\tSYS_OPENAT                       = 322\n\tSYS_MKDIRAT                      = 323\n\tSYS_MKNODAT                      = 324\n\tSYS_FCHOWNAT                     = 325\n\tSYS_FUTIMESAT                    = 326\n\tSYS_FSTATAT64                    = 327\n\tSYS_UNLINKAT                     = 328\n\tSYS_RENAMEAT                     = 329\n\tSYS_LINKAT                       = 330\n\tSYS_SYMLINKAT                    = 331\n\tSYS_READLINKAT                   = 332\n\tSYS_FCHMODAT                     = 333\n\tSYS_FACCESSAT                    = 334\n\tSYS_PSELECT6                     = 335\n\tSYS_PPOLL                        = 336\n\tSYS_UNSHARE                      = 337\n\tSYS_SET_ROBUST_LIST              = 338\n\tSYS_GET_ROBUST_LIST              = 339\n\tSYS_SPLICE                       = 340\n\tSYS_ARM_SYNC_FILE_RANGE          = 341\n\tSYS_TEE                          = 342\n\tSYS_VMSPLICE                     = 343\n\tSYS_MOVE_PAGES                   = 344\n\tSYS_GETCPU                       = 345\n\tSYS_EPOLL_PWAIT                  = 346\n\tSYS_KEXEC_LOAD                   = 347\n\tSYS_UTIMENSAT                    = 348\n\tSYS_SIGNALFD                     = 349\n\tSYS_TIMERFD_CREATE               = 350\n\tSYS_EVENTFD                      = 351\n\tSYS_FALLOCATE                    = 352\n\tSYS_TIMERFD_SETTIME              = 353\n\tSYS_TIMERFD_GETTIME              = 354\n\tSYS_SIGNALFD4                    = 355\n\tSYS_EVENTFD2                     = 356\n\tSYS_EPOLL_CREATE1                = 357\n\tSYS_DUP3                         = 358\n\tSYS_PIPE2                        = 359\n\tSYS_INOTIFY_INIT1                = 360\n\tSYS_PREADV                       = 361\n\tSYS_PWRITEV                      = 362\n\tSYS_RT_TGSIGQUEUEINFO            = 363\n\tSYS_PERF_EVENT_OPEN              = 364\n\tSYS_RECVMMSG                     = 365\n\tSYS_ACCEPT4                      = 366\n\tSYS_FANOTIFY_INIT                = 367\n\tSYS_FANOTIFY_MARK                = 368\n\tSYS_PRLIMIT64                    = 369\n\tSYS_NAME_TO_HANDLE_AT            = 370\n\tSYS_OPEN_BY_HANDLE_AT            = 371\n\tSYS_CLOCK_ADJTIME                = 372\n\tSYS_SYNCFS                       = 373\n\tSYS_SENDMMSG                     = 374\n\tSYS_SETNS                        = 375\n\tSYS_PROCESS_VM_READV             = 376\n\tSYS_PROCESS_VM_WRITEV            = 377\n\tSYS_KCMP                         = 378\n\tSYS_FINIT_MODULE                 = 379\n\tSYS_SCHED_SETATTR                = 380\n\tSYS_SCHED_GETATTR                = 381\n\tSYS_RENAMEAT2                    = 382\n\tSYS_SECCOMP                      = 383\n\tSYS_GETRANDOM                    = 384\n\tSYS_MEMFD_CREATE                 = 385\n\tSYS_BPF                          = 386\n\tSYS_EXECVEAT                     = 387\n\tSYS_USERFAULTFD                  = 388\n\tSYS_MEMBARRIER                   = 389\n\tSYS_MLOCK2                       = 390\n\tSYS_COPY_FILE_RANGE              = 391\n\tSYS_PREADV2                      = 392\n\tSYS_PWRITEV2                     = 393\n\tSYS_PKEY_MPROTECT                = 394\n\tSYS_PKEY_ALLOC                   = 395\n\tSYS_PKEY_FREE                    = 396\n\tSYS_STATX                        = 397\n\tSYS_RSEQ                         = 398\n\tSYS_IO_PGETEVENTS                = 399\n\tSYS_MIGRATE_PAGES                = 400\n\tSYS_KEXEC_FILE_LOAD              = 401\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n\tSYS_MAP_SHADOW_STACK             = 453\n\tSYS_FUTEX_WAKE                   = 454\n\tSYS_FUTEX_WAIT                   = 455\n\tSYS_FUTEX_REQUEUE                = 456\n\tSYS_STATMOUNT                    = 457\n\tSYS_LISTMOUNT                    = 458\n\tSYS_LSM_GET_SELF_ATTR            = 459\n\tSYS_LSM_SET_SELF_ATTR            = 460\n\tSYS_LSM_LIST_MODULES             = 461\n\tSYS_MSEAL                        = 462\n\tSYS_SETXATTRAT                   = 463\n\tSYS_GETXATTRAT                   = 464\n\tSYS_LISTXATTRAT                  = 465\n\tSYS_REMOVEXATTRAT                = 466\n\tSYS_OPEN_TREE_ATTR               = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm64/include -fsigned-char /tmp/arm64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_RENAMEAT                = 38\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_NEWFSTATAT              = 79\n\tSYS_FSTAT                   = 80\n\tSYS_SYNC                    = 81\n\tSYS_FSYNC                   = 82\n\tSYS_FDATASYNC               = 83\n\tSYS_SYNC_FILE_RANGE         = 84\n\tSYS_TIMERFD_CREATE          = 85\n\tSYS_TIMERFD_SETTIME         = 86\n\tSYS_TIMERFD_GETTIME         = 87\n\tSYS_UTIMENSAT               = 88\n\tSYS_ACCT                    = 89\n\tSYS_CAPGET                  = 90\n\tSYS_CAPSET                  = 91\n\tSYS_PERSONALITY             = 92\n\tSYS_EXIT                    = 93\n\tSYS_EXIT_GROUP              = 94\n\tSYS_WAITID                  = 95\n\tSYS_SET_TID_ADDRESS         = 96\n\tSYS_UNSHARE                 = 97\n\tSYS_FUTEX                   = 98\n\tSYS_SET_ROBUST_LIST         = 99\n\tSYS_GET_ROBUST_LIST         = 100\n\tSYS_NANOSLEEP               = 101\n\tSYS_GETITIMER               = 102\n\tSYS_SETITIMER               = 103\n\tSYS_KEXEC_LOAD              = 104\n\tSYS_INIT_MODULE             = 105\n\tSYS_DELETE_MODULE           = 106\n\tSYS_TIMER_CREATE            = 107\n\tSYS_TIMER_GETTIME           = 108\n\tSYS_TIMER_GETOVERRUN        = 109\n\tSYS_TIMER_SETTIME           = 110\n\tSYS_TIMER_DELETE            = 111\n\tSYS_CLOCK_SETTIME           = 112\n\tSYS_CLOCK_GETTIME           = 113\n\tSYS_CLOCK_GETRES            = 114\n\tSYS_CLOCK_NANOSLEEP         = 115\n\tSYS_SYSLOG                  = 116\n\tSYS_PTRACE                  = 117\n\tSYS_SCHED_SETPARAM          = 118\n\tSYS_SCHED_SETSCHEDULER      = 119\n\tSYS_SCHED_GETSCHEDULER      = 120\n\tSYS_SCHED_GETPARAM          = 121\n\tSYS_SCHED_SETAFFINITY       = 122\n\tSYS_SCHED_GETAFFINITY       = 123\n\tSYS_SCHED_YIELD             = 124\n\tSYS_SCHED_GET_PRIORITY_MAX  = 125\n\tSYS_SCHED_GET_PRIORITY_MIN  = 126\n\tSYS_SCHED_RR_GET_INTERVAL   = 127\n\tSYS_RESTART_SYSCALL         = 128\n\tSYS_KILL                    = 129\n\tSYS_TKILL                   = 130\n\tSYS_TGKILL                  = 131\n\tSYS_SIGALTSTACK             = 132\n\tSYS_RT_SIGSUSPEND           = 133\n\tSYS_RT_SIGACTION            = 134\n\tSYS_RT_SIGPROCMASK          = 135\n\tSYS_RT_SIGPENDING           = 136\n\tSYS_RT_SIGTIMEDWAIT         = 137\n\tSYS_RT_SIGQUEUEINFO         = 138\n\tSYS_RT_SIGRETURN            = 139\n\tSYS_SETPRIORITY             = 140\n\tSYS_GETPRIORITY             = 141\n\tSYS_REBOOT                  = 142\n\tSYS_SETREGID                = 143\n\tSYS_SETGID                  = 144\n\tSYS_SETREUID                = 145\n\tSYS_SETUID                  = 146\n\tSYS_SETRESUID               = 147\n\tSYS_GETRESUID               = 148\n\tSYS_SETRESGID               = 149\n\tSYS_GETRESGID               = 150\n\tSYS_SETFSUID                = 151\n\tSYS_SETFSGID                = 152\n\tSYS_TIMES                   = 153\n\tSYS_SETPGID                 = 154\n\tSYS_GETPGID                 = 155\n\tSYS_GETSID                  = 156\n\tSYS_SETSID                  = 157\n\tSYS_GETGROUPS               = 158\n\tSYS_SETGROUPS               = 159\n\tSYS_UNAME                   = 160\n\tSYS_SETHOSTNAME             = 161\n\tSYS_SETDOMAINNAME           = 162\n\tSYS_GETRLIMIT               = 163\n\tSYS_SETRLIMIT               = 164\n\tSYS_GETRUSAGE               = 165\n\tSYS_UMASK                   = 166\n\tSYS_PRCTL                   = 167\n\tSYS_GETCPU                  = 168\n\tSYS_GETTIMEOFDAY            = 169\n\tSYS_SETTIMEOFDAY            = 170\n\tSYS_ADJTIMEX                = 171\n\tSYS_GETPID                  = 172\n\tSYS_GETPPID                 = 173\n\tSYS_GETUID                  = 174\n\tSYS_GETEUID                 = 175\n\tSYS_GETGID                  = 176\n\tSYS_GETEGID                 = 177\n\tSYS_GETTID                  = 178\n\tSYS_SYSINFO                 = 179\n\tSYS_MQ_OPEN                 = 180\n\tSYS_MQ_UNLINK               = 181\n\tSYS_MQ_TIMEDSEND            = 182\n\tSYS_MQ_TIMEDRECEIVE         = 183\n\tSYS_MQ_NOTIFY               = 184\n\tSYS_MQ_GETSETATTR           = 185\n\tSYS_MSGGET                  = 186\n\tSYS_MSGCTL                  = 187\n\tSYS_MSGRCV                  = 188\n\tSYS_MSGSND                  = 189\n\tSYS_SEMGET                  = 190\n\tSYS_SEMCTL                  = 191\n\tSYS_SEMTIMEDOP              = 192\n\tSYS_SEMOP                   = 193\n\tSYS_SHMGET                  = 194\n\tSYS_SHMCTL                  = 195\n\tSYS_SHMAT                   = 196\n\tSYS_SHMDT                   = 197\n\tSYS_SOCKET                  = 198\n\tSYS_SOCKETPAIR              = 199\n\tSYS_BIND                    = 200\n\tSYS_LISTEN                  = 201\n\tSYS_ACCEPT                  = 202\n\tSYS_CONNECT                 = 203\n\tSYS_GETSOCKNAME             = 204\n\tSYS_GETPEERNAME             = 205\n\tSYS_SENDTO                  = 206\n\tSYS_RECVFROM                = 207\n\tSYS_SETSOCKOPT              = 208\n\tSYS_GETSOCKOPT              = 209\n\tSYS_SHUTDOWN                = 210\n\tSYS_SENDMSG                 = 211\n\tSYS_RECVMSG                 = 212\n\tSYS_READAHEAD               = 213\n\tSYS_BRK                     = 214\n\tSYS_MUNMAP                  = 215\n\tSYS_MREMAP                  = 216\n\tSYS_ADD_KEY                 = 217\n\tSYS_REQUEST_KEY             = 218\n\tSYS_KEYCTL                  = 219\n\tSYS_CLONE                   = 220\n\tSYS_EXECVE                  = 221\n\tSYS_MMAP                    = 222\n\tSYS_FADVISE64               = 223\n\tSYS_SWAPON                  = 224\n\tSYS_SWAPOFF                 = 225\n\tSYS_MPROTECT                = 226\n\tSYS_MSYNC                   = 227\n\tSYS_MLOCK                   = 228\n\tSYS_MUNLOCK                 = 229\n\tSYS_MLOCKALL                = 230\n\tSYS_MUNLOCKALL              = 231\n\tSYS_MINCORE                 = 232\n\tSYS_MADVISE                 = 233\n\tSYS_REMAP_FILE_PAGES        = 234\n\tSYS_MBIND                   = 235\n\tSYS_GET_MEMPOLICY           = 236\n\tSYS_SET_MEMPOLICY           = 237\n\tSYS_MIGRATE_PAGES           = 238\n\tSYS_MOVE_PAGES              = 239\n\tSYS_RT_TGSIGQUEUEINFO       = 240\n\tSYS_PERF_EVENT_OPEN         = 241\n\tSYS_ACCEPT4                 = 242\n\tSYS_RECVMMSG                = 243\n\tSYS_ARCH_SPECIFIC_SYSCALL   = 244\n\tSYS_WAIT4                   = 260\n\tSYS_PRLIMIT64               = 261\n\tSYS_FANOTIFY_INIT           = 262\n\tSYS_FANOTIFY_MARK           = 263\n\tSYS_NAME_TO_HANDLE_AT       = 264\n\tSYS_OPEN_BY_HANDLE_AT       = 265\n\tSYS_CLOCK_ADJTIME           = 266\n\tSYS_SYNCFS                  = 267\n\tSYS_SETNS                   = 268\n\tSYS_SENDMMSG                = 269\n\tSYS_PROCESS_VM_READV        = 270\n\tSYS_PROCESS_VM_WRITEV       = 271\n\tSYS_KCMP                    = 272\n\tSYS_FINIT_MODULE            = 273\n\tSYS_SCHED_SETATTR           = 274\n\tSYS_SCHED_GETATTR           = 275\n\tSYS_RENAMEAT2               = 276\n\tSYS_SECCOMP                 = 277\n\tSYS_GETRANDOM               = 278\n\tSYS_MEMFD_CREATE            = 279\n\tSYS_BPF                     = 280\n\tSYS_EXECVEAT                = 281\n\tSYS_USERFAULTFD             = 282\n\tSYS_MEMBARRIER              = 283\n\tSYS_MLOCK2                  = 284\n\tSYS_COPY_FILE_RANGE         = 285\n\tSYS_PREADV2                 = 286\n\tSYS_PWRITEV2                = 287\n\tSYS_PKEY_MPROTECT           = 288\n\tSYS_PKEY_ALLOC              = 289\n\tSYS_PKEY_FREE               = 290\n\tSYS_STATX                   = 291\n\tSYS_IO_PGETEVENTS           = 292\n\tSYS_RSEQ                    = 293\n\tSYS_KEXEC_FILE_LOAD         = 294\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/loong64/include /tmp/loong64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_NEWFSTATAT              = 79\n\tSYS_FSTAT                   = 80\n\tSYS_SYNC                    = 81\n\tSYS_FSYNC                   = 82\n\tSYS_FDATASYNC               = 83\n\tSYS_SYNC_FILE_RANGE         = 84\n\tSYS_TIMERFD_CREATE          = 85\n\tSYS_TIMERFD_SETTIME         = 86\n\tSYS_TIMERFD_GETTIME         = 87\n\tSYS_UTIMENSAT               = 88\n\tSYS_ACCT                    = 89\n\tSYS_CAPGET                  = 90\n\tSYS_CAPSET                  = 91\n\tSYS_PERSONALITY             = 92\n\tSYS_EXIT                    = 93\n\tSYS_EXIT_GROUP              = 94\n\tSYS_WAITID                  = 95\n\tSYS_SET_TID_ADDRESS         = 96\n\tSYS_UNSHARE                 = 97\n\tSYS_FUTEX                   = 98\n\tSYS_SET_ROBUST_LIST         = 99\n\tSYS_GET_ROBUST_LIST         = 100\n\tSYS_NANOSLEEP               = 101\n\tSYS_GETITIMER               = 102\n\tSYS_SETITIMER               = 103\n\tSYS_KEXEC_LOAD              = 104\n\tSYS_INIT_MODULE             = 105\n\tSYS_DELETE_MODULE           = 106\n\tSYS_TIMER_CREATE            = 107\n\tSYS_TIMER_GETTIME           = 108\n\tSYS_TIMER_GETOVERRUN        = 109\n\tSYS_TIMER_SETTIME           = 110\n\tSYS_TIMER_DELETE            = 111\n\tSYS_CLOCK_SETTIME           = 112\n\tSYS_CLOCK_GETTIME           = 113\n\tSYS_CLOCK_GETRES            = 114\n\tSYS_CLOCK_NANOSLEEP         = 115\n\tSYS_SYSLOG                  = 116\n\tSYS_PTRACE                  = 117\n\tSYS_SCHED_SETPARAM          = 118\n\tSYS_SCHED_SETSCHEDULER      = 119\n\tSYS_SCHED_GETSCHEDULER      = 120\n\tSYS_SCHED_GETPARAM          = 121\n\tSYS_SCHED_SETAFFINITY       = 122\n\tSYS_SCHED_GETAFFINITY       = 123\n\tSYS_SCHED_YIELD             = 124\n\tSYS_SCHED_GET_PRIORITY_MAX  = 125\n\tSYS_SCHED_GET_PRIORITY_MIN  = 126\n\tSYS_SCHED_RR_GET_INTERVAL   = 127\n\tSYS_RESTART_SYSCALL         = 128\n\tSYS_KILL                    = 129\n\tSYS_TKILL                   = 130\n\tSYS_TGKILL                  = 131\n\tSYS_SIGALTSTACK             = 132\n\tSYS_RT_SIGSUSPEND           = 133\n\tSYS_RT_SIGACTION            = 134\n\tSYS_RT_SIGPROCMASK          = 135\n\tSYS_RT_SIGPENDING           = 136\n\tSYS_RT_SIGTIMEDWAIT         = 137\n\tSYS_RT_SIGQUEUEINFO         = 138\n\tSYS_RT_SIGRETURN            = 139\n\tSYS_SETPRIORITY             = 140\n\tSYS_GETPRIORITY             = 141\n\tSYS_REBOOT                  = 142\n\tSYS_SETREGID                = 143\n\tSYS_SETGID                  = 144\n\tSYS_SETREUID                = 145\n\tSYS_SETUID                  = 146\n\tSYS_SETRESUID               = 147\n\tSYS_GETRESUID               = 148\n\tSYS_SETRESGID               = 149\n\tSYS_GETRESGID               = 150\n\tSYS_SETFSUID                = 151\n\tSYS_SETFSGID                = 152\n\tSYS_TIMES                   = 153\n\tSYS_SETPGID                 = 154\n\tSYS_GETPGID                 = 155\n\tSYS_GETSID                  = 156\n\tSYS_SETSID                  = 157\n\tSYS_GETGROUPS               = 158\n\tSYS_SETGROUPS               = 159\n\tSYS_UNAME                   = 160\n\tSYS_SETHOSTNAME             = 161\n\tSYS_SETDOMAINNAME           = 162\n\tSYS_GETRUSAGE               = 165\n\tSYS_UMASK                   = 166\n\tSYS_PRCTL                   = 167\n\tSYS_GETCPU                  = 168\n\tSYS_GETTIMEOFDAY            = 169\n\tSYS_SETTIMEOFDAY            = 170\n\tSYS_ADJTIMEX                = 171\n\tSYS_GETPID                  = 172\n\tSYS_GETPPID                 = 173\n\tSYS_GETUID                  = 174\n\tSYS_GETEUID                 = 175\n\tSYS_GETGID                  = 176\n\tSYS_GETEGID                 = 177\n\tSYS_GETTID                  = 178\n\tSYS_SYSINFO                 = 179\n\tSYS_MQ_OPEN                 = 180\n\tSYS_MQ_UNLINK               = 181\n\tSYS_MQ_TIMEDSEND            = 182\n\tSYS_MQ_TIMEDRECEIVE         = 183\n\tSYS_MQ_NOTIFY               = 184\n\tSYS_MQ_GETSETATTR           = 185\n\tSYS_MSGGET                  = 186\n\tSYS_MSGCTL                  = 187\n\tSYS_MSGRCV                  = 188\n\tSYS_MSGSND                  = 189\n\tSYS_SEMGET                  = 190\n\tSYS_SEMCTL                  = 191\n\tSYS_SEMTIMEDOP              = 192\n\tSYS_SEMOP                   = 193\n\tSYS_SHMGET                  = 194\n\tSYS_SHMCTL                  = 195\n\tSYS_SHMAT                   = 196\n\tSYS_SHMDT                   = 197\n\tSYS_SOCKET                  = 198\n\tSYS_SOCKETPAIR              = 199\n\tSYS_BIND                    = 200\n\tSYS_LISTEN                  = 201\n\tSYS_ACCEPT                  = 202\n\tSYS_CONNECT                 = 203\n\tSYS_GETSOCKNAME             = 204\n\tSYS_GETPEERNAME             = 205\n\tSYS_SENDTO                  = 206\n\tSYS_RECVFROM                = 207\n\tSYS_SETSOCKOPT              = 208\n\tSYS_GETSOCKOPT              = 209\n\tSYS_SHUTDOWN                = 210\n\tSYS_SENDMSG                 = 211\n\tSYS_RECVMSG                 = 212\n\tSYS_READAHEAD               = 213\n\tSYS_BRK                     = 214\n\tSYS_MUNMAP                  = 215\n\tSYS_MREMAP                  = 216\n\tSYS_ADD_KEY                 = 217\n\tSYS_REQUEST_KEY             = 218\n\tSYS_KEYCTL                  = 219\n\tSYS_CLONE                   = 220\n\tSYS_EXECVE                  = 221\n\tSYS_MMAP                    = 222\n\tSYS_FADVISE64               = 223\n\tSYS_SWAPON                  = 224\n\tSYS_SWAPOFF                 = 225\n\tSYS_MPROTECT                = 226\n\tSYS_MSYNC                   = 227\n\tSYS_MLOCK                   = 228\n\tSYS_MUNLOCK                 = 229\n\tSYS_MLOCKALL                = 230\n\tSYS_MUNLOCKALL              = 231\n\tSYS_MINCORE                 = 232\n\tSYS_MADVISE                 = 233\n\tSYS_REMAP_FILE_PAGES        = 234\n\tSYS_MBIND                   = 235\n\tSYS_GET_MEMPOLICY           = 236\n\tSYS_SET_MEMPOLICY           = 237\n\tSYS_MIGRATE_PAGES           = 238\n\tSYS_MOVE_PAGES              = 239\n\tSYS_RT_TGSIGQUEUEINFO       = 240\n\tSYS_PERF_EVENT_OPEN         = 241\n\tSYS_ACCEPT4                 = 242\n\tSYS_RECVMMSG                = 243\n\tSYS_ARCH_SPECIFIC_SYSCALL   = 244\n\tSYS_WAIT4                   = 260\n\tSYS_PRLIMIT64               = 261\n\tSYS_FANOTIFY_INIT           = 262\n\tSYS_FANOTIFY_MARK           = 263\n\tSYS_NAME_TO_HANDLE_AT       = 264\n\tSYS_OPEN_BY_HANDLE_AT       = 265\n\tSYS_CLOCK_ADJTIME           = 266\n\tSYS_SYNCFS                  = 267\n\tSYS_SETNS                   = 268\n\tSYS_SENDMMSG                = 269\n\tSYS_PROCESS_VM_READV        = 270\n\tSYS_PROCESS_VM_WRITEV       = 271\n\tSYS_KCMP                    = 272\n\tSYS_FINIT_MODULE            = 273\n\tSYS_SCHED_SETATTR           = 274\n\tSYS_SCHED_GETATTR           = 275\n\tSYS_RENAMEAT2               = 276\n\tSYS_SECCOMP                 = 277\n\tSYS_GETRANDOM               = 278\n\tSYS_MEMFD_CREATE            = 279\n\tSYS_BPF                     = 280\n\tSYS_EXECVEAT                = 281\n\tSYS_USERFAULTFD             = 282\n\tSYS_MEMBARRIER              = 283\n\tSYS_MLOCK2                  = 284\n\tSYS_COPY_FILE_RANGE         = 285\n\tSYS_PREADV2                 = 286\n\tSYS_PWRITEV2                = 287\n\tSYS_PKEY_MPROTECT           = 288\n\tSYS_PKEY_ALLOC              = 289\n\tSYS_PKEY_FREE               = 290\n\tSYS_STATX                   = 291\n\tSYS_IO_PGETEVENTS           = 292\n\tSYS_RSEQ                    = 293\n\tSYS_KEXEC_FILE_LOAD         = 294\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips/include /tmp/mips/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                      = 4000\n\tSYS_EXIT                         = 4001\n\tSYS_FORK                         = 4002\n\tSYS_READ                         = 4003\n\tSYS_WRITE                        = 4004\n\tSYS_OPEN                         = 4005\n\tSYS_CLOSE                        = 4006\n\tSYS_WAITPID                      = 4007\n\tSYS_CREAT                        = 4008\n\tSYS_LINK                         = 4009\n\tSYS_UNLINK                       = 4010\n\tSYS_EXECVE                       = 4011\n\tSYS_CHDIR                        = 4012\n\tSYS_TIME                         = 4013\n\tSYS_MKNOD                        = 4014\n\tSYS_CHMOD                        = 4015\n\tSYS_LCHOWN                       = 4016\n\tSYS_BREAK                        = 4017\n\tSYS_UNUSED18                     = 4018\n\tSYS_LSEEK                        = 4019\n\tSYS_GETPID                       = 4020\n\tSYS_MOUNT                        = 4021\n\tSYS_UMOUNT                       = 4022\n\tSYS_SETUID                       = 4023\n\tSYS_GETUID                       = 4024\n\tSYS_STIME                        = 4025\n\tSYS_PTRACE                       = 4026\n\tSYS_ALARM                        = 4027\n\tSYS_UNUSED28                     = 4028\n\tSYS_PAUSE                        = 4029\n\tSYS_UTIME                        = 4030\n\tSYS_STTY                         = 4031\n\tSYS_GTTY                         = 4032\n\tSYS_ACCESS                       = 4033\n\tSYS_NICE                         = 4034\n\tSYS_FTIME                        = 4035\n\tSYS_SYNC                         = 4036\n\tSYS_KILL                         = 4037\n\tSYS_RENAME                       = 4038\n\tSYS_MKDIR                        = 4039\n\tSYS_RMDIR                        = 4040\n\tSYS_DUP                          = 4041\n\tSYS_PIPE                         = 4042\n\tSYS_TIMES                        = 4043\n\tSYS_PROF                         = 4044\n\tSYS_BRK                          = 4045\n\tSYS_SETGID                       = 4046\n\tSYS_GETGID                       = 4047\n\tSYS_SIGNAL                       = 4048\n\tSYS_GETEUID                      = 4049\n\tSYS_GETEGID                      = 4050\n\tSYS_ACCT                         = 4051\n\tSYS_UMOUNT2                      = 4052\n\tSYS_LOCK                         = 4053\n\tSYS_IOCTL                        = 4054\n\tSYS_FCNTL                        = 4055\n\tSYS_MPX                          = 4056\n\tSYS_SETPGID                      = 4057\n\tSYS_ULIMIT                       = 4058\n\tSYS_UNUSED59                     = 4059\n\tSYS_UMASK                        = 4060\n\tSYS_CHROOT                       = 4061\n\tSYS_USTAT                        = 4062\n\tSYS_DUP2                         = 4063\n\tSYS_GETPPID                      = 4064\n\tSYS_GETPGRP                      = 4065\n\tSYS_SETSID                       = 4066\n\tSYS_SIGACTION                    = 4067\n\tSYS_SGETMASK                     = 4068\n\tSYS_SSETMASK                     = 4069\n\tSYS_SETREUID                     = 4070\n\tSYS_SETREGID                     = 4071\n\tSYS_SIGSUSPEND                   = 4072\n\tSYS_SIGPENDING                   = 4073\n\tSYS_SETHOSTNAME                  = 4074\n\tSYS_SETRLIMIT                    = 4075\n\tSYS_GETRLIMIT                    = 4076\n\tSYS_GETRUSAGE                    = 4077\n\tSYS_GETTIMEOFDAY                 = 4078\n\tSYS_SETTIMEOFDAY                 = 4079\n\tSYS_GETGROUPS                    = 4080\n\tSYS_SETGROUPS                    = 4081\n\tSYS_RESERVED82                   = 4082\n\tSYS_SYMLINK                      = 4083\n\tSYS_UNUSED84                     = 4084\n\tSYS_READLINK                     = 4085\n\tSYS_USELIB                       = 4086\n\tSYS_SWAPON                       = 4087\n\tSYS_REBOOT                       = 4088\n\tSYS_READDIR                      = 4089\n\tSYS_MMAP                         = 4090\n\tSYS_MUNMAP                       = 4091\n\tSYS_TRUNCATE                     = 4092\n\tSYS_FTRUNCATE                    = 4093\n\tSYS_FCHMOD                       = 4094\n\tSYS_FCHOWN                       = 4095\n\tSYS_GETPRIORITY                  = 4096\n\tSYS_SETPRIORITY                  = 4097\n\tSYS_PROFIL                       = 4098\n\tSYS_STATFS                       = 4099\n\tSYS_FSTATFS                      = 4100\n\tSYS_IOPERM                       = 4101\n\tSYS_SOCKETCALL                   = 4102\n\tSYS_SYSLOG                       = 4103\n\tSYS_SETITIMER                    = 4104\n\tSYS_GETITIMER                    = 4105\n\tSYS_STAT                         = 4106\n\tSYS_LSTAT                        = 4107\n\tSYS_FSTAT                        = 4108\n\tSYS_UNUSED109                    = 4109\n\tSYS_IOPL                         = 4110\n\tSYS_VHANGUP                      = 4111\n\tSYS_IDLE                         = 4112\n\tSYS_VM86                         = 4113\n\tSYS_WAIT4                        = 4114\n\tSYS_SWAPOFF                      = 4115\n\tSYS_SYSINFO                      = 4116\n\tSYS_IPC                          = 4117\n\tSYS_FSYNC                        = 4118\n\tSYS_SIGRETURN                    = 4119\n\tSYS_CLONE                        = 4120\n\tSYS_SETDOMAINNAME                = 4121\n\tSYS_UNAME                        = 4122\n\tSYS_MODIFY_LDT                   = 4123\n\tSYS_ADJTIMEX                     = 4124\n\tSYS_MPROTECT                     = 4125\n\tSYS_SIGPROCMASK                  = 4126\n\tSYS_CREATE_MODULE                = 4127\n\tSYS_INIT_MODULE                  = 4128\n\tSYS_DELETE_MODULE                = 4129\n\tSYS_GET_KERNEL_SYMS              = 4130\n\tSYS_QUOTACTL                     = 4131\n\tSYS_GETPGID                      = 4132\n\tSYS_FCHDIR                       = 4133\n\tSYS_BDFLUSH                      = 4134\n\tSYS_SYSFS                        = 4135\n\tSYS_PERSONALITY                  = 4136\n\tSYS_AFS_SYSCALL                  = 4137\n\tSYS_SETFSUID                     = 4138\n\tSYS_SETFSGID                     = 4139\n\tSYS__LLSEEK                      = 4140\n\tSYS_GETDENTS                     = 4141\n\tSYS__NEWSELECT                   = 4142\n\tSYS_FLOCK                        = 4143\n\tSYS_MSYNC                        = 4144\n\tSYS_READV                        = 4145\n\tSYS_WRITEV                       = 4146\n\tSYS_CACHEFLUSH                   = 4147\n\tSYS_CACHECTL                     = 4148\n\tSYS_SYSMIPS                      = 4149\n\tSYS_UNUSED150                    = 4150\n\tSYS_GETSID                       = 4151\n\tSYS_FDATASYNC                    = 4152\n\tSYS__SYSCTL                      = 4153\n\tSYS_MLOCK                        = 4154\n\tSYS_MUNLOCK                      = 4155\n\tSYS_MLOCKALL                     = 4156\n\tSYS_MUNLOCKALL                   = 4157\n\tSYS_SCHED_SETPARAM               = 4158\n\tSYS_SCHED_GETPARAM               = 4159\n\tSYS_SCHED_SETSCHEDULER           = 4160\n\tSYS_SCHED_GETSCHEDULER           = 4161\n\tSYS_SCHED_YIELD                  = 4162\n\tSYS_SCHED_GET_PRIORITY_MAX       = 4163\n\tSYS_SCHED_GET_PRIORITY_MIN       = 4164\n\tSYS_SCHED_RR_GET_INTERVAL        = 4165\n\tSYS_NANOSLEEP                    = 4166\n\tSYS_MREMAP                       = 4167\n\tSYS_ACCEPT                       = 4168\n\tSYS_BIND                         = 4169\n\tSYS_CONNECT                      = 4170\n\tSYS_GETPEERNAME                  = 4171\n\tSYS_GETSOCKNAME                  = 4172\n\tSYS_GETSOCKOPT                   = 4173\n\tSYS_LISTEN                       = 4174\n\tSYS_RECV                         = 4175\n\tSYS_RECVFROM                     = 4176\n\tSYS_RECVMSG                      = 4177\n\tSYS_SEND                         = 4178\n\tSYS_SENDMSG                      = 4179\n\tSYS_SENDTO                       = 4180\n\tSYS_SETSOCKOPT                   = 4181\n\tSYS_SHUTDOWN                     = 4182\n\tSYS_SOCKET                       = 4183\n\tSYS_SOCKETPAIR                   = 4184\n\tSYS_SETRESUID                    = 4185\n\tSYS_GETRESUID                    = 4186\n\tSYS_QUERY_MODULE                 = 4187\n\tSYS_POLL                         = 4188\n\tSYS_NFSSERVCTL                   = 4189\n\tSYS_SETRESGID                    = 4190\n\tSYS_GETRESGID                    = 4191\n\tSYS_PRCTL                        = 4192\n\tSYS_RT_SIGRETURN                 = 4193\n\tSYS_RT_SIGACTION                 = 4194\n\tSYS_RT_SIGPROCMASK               = 4195\n\tSYS_RT_SIGPENDING                = 4196\n\tSYS_RT_SIGTIMEDWAIT              = 4197\n\tSYS_RT_SIGQUEUEINFO              = 4198\n\tSYS_RT_SIGSUSPEND                = 4199\n\tSYS_PREAD64                      = 4200\n\tSYS_PWRITE64                     = 4201\n\tSYS_CHOWN                        = 4202\n\tSYS_GETCWD                       = 4203\n\tSYS_CAPGET                       = 4204\n\tSYS_CAPSET                       = 4205\n\tSYS_SIGALTSTACK                  = 4206\n\tSYS_SENDFILE                     = 4207\n\tSYS_GETPMSG                      = 4208\n\tSYS_PUTPMSG                      = 4209\n\tSYS_MMAP2                        = 4210\n\tSYS_TRUNCATE64                   = 4211\n\tSYS_FTRUNCATE64                  = 4212\n\tSYS_STAT64                       = 4213\n\tSYS_LSTAT64                      = 4214\n\tSYS_FSTAT64                      = 4215\n\tSYS_PIVOT_ROOT                   = 4216\n\tSYS_MINCORE                      = 4217\n\tSYS_MADVISE                      = 4218\n\tSYS_GETDENTS64                   = 4219\n\tSYS_FCNTL64                      = 4220\n\tSYS_RESERVED221                  = 4221\n\tSYS_GETTID                       = 4222\n\tSYS_READAHEAD                    = 4223\n\tSYS_SETXATTR                     = 4224\n\tSYS_LSETXATTR                    = 4225\n\tSYS_FSETXATTR                    = 4226\n\tSYS_GETXATTR                     = 4227\n\tSYS_LGETXATTR                    = 4228\n\tSYS_FGETXATTR                    = 4229\n\tSYS_LISTXATTR                    = 4230\n\tSYS_LLISTXATTR                   = 4231\n\tSYS_FLISTXATTR                   = 4232\n\tSYS_REMOVEXATTR                  = 4233\n\tSYS_LREMOVEXATTR                 = 4234\n\tSYS_FREMOVEXATTR                 = 4235\n\tSYS_TKILL                        = 4236\n\tSYS_SENDFILE64                   = 4237\n\tSYS_FUTEX                        = 4238\n\tSYS_SCHED_SETAFFINITY            = 4239\n\tSYS_SCHED_GETAFFINITY            = 4240\n\tSYS_IO_SETUP                     = 4241\n\tSYS_IO_DESTROY                   = 4242\n\tSYS_IO_GETEVENTS                 = 4243\n\tSYS_IO_SUBMIT                    = 4244\n\tSYS_IO_CANCEL                    = 4245\n\tSYS_EXIT_GROUP                   = 4246\n\tSYS_LOOKUP_DCOOKIE               = 4247\n\tSYS_EPOLL_CREATE                 = 4248\n\tSYS_EPOLL_CTL                    = 4249\n\tSYS_EPOLL_WAIT                   = 4250\n\tSYS_REMAP_FILE_PAGES             = 4251\n\tSYS_SET_TID_ADDRESS              = 4252\n\tSYS_RESTART_SYSCALL              = 4253\n\tSYS_FADVISE64                    = 4254\n\tSYS_STATFS64                     = 4255\n\tSYS_FSTATFS64                    = 4256\n\tSYS_TIMER_CREATE                 = 4257\n\tSYS_TIMER_SETTIME                = 4258\n\tSYS_TIMER_GETTIME                = 4259\n\tSYS_TIMER_GETOVERRUN             = 4260\n\tSYS_TIMER_DELETE                 = 4261\n\tSYS_CLOCK_SETTIME                = 4262\n\tSYS_CLOCK_GETTIME                = 4263\n\tSYS_CLOCK_GETRES                 = 4264\n\tSYS_CLOCK_NANOSLEEP              = 4265\n\tSYS_TGKILL                       = 4266\n\tSYS_UTIMES                       = 4267\n\tSYS_MBIND                        = 4268\n\tSYS_GET_MEMPOLICY                = 4269\n\tSYS_SET_MEMPOLICY                = 4270\n\tSYS_MQ_OPEN                      = 4271\n\tSYS_MQ_UNLINK                    = 4272\n\tSYS_MQ_TIMEDSEND                 = 4273\n\tSYS_MQ_TIMEDRECEIVE              = 4274\n\tSYS_MQ_NOTIFY                    = 4275\n\tSYS_MQ_GETSETATTR                = 4276\n\tSYS_VSERVER                      = 4277\n\tSYS_WAITID                       = 4278\n\tSYS_ADD_KEY                      = 4280\n\tSYS_REQUEST_KEY                  = 4281\n\tSYS_KEYCTL                       = 4282\n\tSYS_SET_THREAD_AREA              = 4283\n\tSYS_INOTIFY_INIT                 = 4284\n\tSYS_INOTIFY_ADD_WATCH            = 4285\n\tSYS_INOTIFY_RM_WATCH             = 4286\n\tSYS_MIGRATE_PAGES                = 4287\n\tSYS_OPENAT                       = 4288\n\tSYS_MKDIRAT                      = 4289\n\tSYS_MKNODAT                      = 4290\n\tSYS_FCHOWNAT                     = 4291\n\tSYS_FUTIMESAT                    = 4292\n\tSYS_FSTATAT64                    = 4293\n\tSYS_UNLINKAT                     = 4294\n\tSYS_RENAMEAT                     = 4295\n\tSYS_LINKAT                       = 4296\n\tSYS_SYMLINKAT                    = 4297\n\tSYS_READLINKAT                   = 4298\n\tSYS_FCHMODAT                     = 4299\n\tSYS_FACCESSAT                    = 4300\n\tSYS_PSELECT6                     = 4301\n\tSYS_PPOLL                        = 4302\n\tSYS_UNSHARE                      = 4303\n\tSYS_SPLICE                       = 4304\n\tSYS_SYNC_FILE_RANGE              = 4305\n\tSYS_TEE                          = 4306\n\tSYS_VMSPLICE                     = 4307\n\tSYS_MOVE_PAGES                   = 4308\n\tSYS_SET_ROBUST_LIST              = 4309\n\tSYS_GET_ROBUST_LIST              = 4310\n\tSYS_KEXEC_LOAD                   = 4311\n\tSYS_GETCPU                       = 4312\n\tSYS_EPOLL_PWAIT                  = 4313\n\tSYS_IOPRIO_SET                   = 4314\n\tSYS_IOPRIO_GET                   = 4315\n\tSYS_UTIMENSAT                    = 4316\n\tSYS_SIGNALFD                     = 4317\n\tSYS_TIMERFD                      = 4318\n\tSYS_EVENTFD                      = 4319\n\tSYS_FALLOCATE                    = 4320\n\tSYS_TIMERFD_CREATE               = 4321\n\tSYS_TIMERFD_GETTIME              = 4322\n\tSYS_TIMERFD_SETTIME              = 4323\n\tSYS_SIGNALFD4                    = 4324\n\tSYS_EVENTFD2                     = 4325\n\tSYS_EPOLL_CREATE1                = 4326\n\tSYS_DUP3                         = 4327\n\tSYS_PIPE2                        = 4328\n\tSYS_INOTIFY_INIT1                = 4329\n\tSYS_PREADV                       = 4330\n\tSYS_PWRITEV                      = 4331\n\tSYS_RT_TGSIGQUEUEINFO            = 4332\n\tSYS_PERF_EVENT_OPEN              = 4333\n\tSYS_ACCEPT4                      = 4334\n\tSYS_RECVMMSG                     = 4335\n\tSYS_FANOTIFY_INIT                = 4336\n\tSYS_FANOTIFY_MARK                = 4337\n\tSYS_PRLIMIT64                    = 4338\n\tSYS_NAME_TO_HANDLE_AT            = 4339\n\tSYS_OPEN_BY_HANDLE_AT            = 4340\n\tSYS_CLOCK_ADJTIME                = 4341\n\tSYS_SYNCFS                       = 4342\n\tSYS_SENDMMSG                     = 4343\n\tSYS_SETNS                        = 4344\n\tSYS_PROCESS_VM_READV             = 4345\n\tSYS_PROCESS_VM_WRITEV            = 4346\n\tSYS_KCMP                         = 4347\n\tSYS_FINIT_MODULE                 = 4348\n\tSYS_SCHED_SETATTR                = 4349\n\tSYS_SCHED_GETATTR                = 4350\n\tSYS_RENAMEAT2                    = 4351\n\tSYS_SECCOMP                      = 4352\n\tSYS_GETRANDOM                    = 4353\n\tSYS_MEMFD_CREATE                 = 4354\n\tSYS_BPF                          = 4355\n\tSYS_EXECVEAT                     = 4356\n\tSYS_USERFAULTFD                  = 4357\n\tSYS_MEMBARRIER                   = 4358\n\tSYS_MLOCK2                       = 4359\n\tSYS_COPY_FILE_RANGE              = 4360\n\tSYS_PREADV2                      = 4361\n\tSYS_PWRITEV2                     = 4362\n\tSYS_PKEY_MPROTECT                = 4363\n\tSYS_PKEY_ALLOC                   = 4364\n\tSYS_PKEY_FREE                    = 4365\n\tSYS_STATX                        = 4366\n\tSYS_RSEQ                         = 4367\n\tSYS_IO_PGETEVENTS                = 4368\n\tSYS_SEMGET                       = 4393\n\tSYS_SEMCTL                       = 4394\n\tSYS_SHMGET                       = 4395\n\tSYS_SHMCTL                       = 4396\n\tSYS_SHMAT                        = 4397\n\tSYS_SHMDT                        = 4398\n\tSYS_MSGGET                       = 4399\n\tSYS_MSGSND                       = 4400\n\tSYS_MSGRCV                       = 4401\n\tSYS_MSGCTL                       = 4402\n\tSYS_CLOCK_GETTIME64              = 4403\n\tSYS_CLOCK_SETTIME64              = 4404\n\tSYS_CLOCK_ADJTIME64              = 4405\n\tSYS_CLOCK_GETRES_TIME64          = 4406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 4407\n\tSYS_TIMER_GETTIME64              = 4408\n\tSYS_TIMER_SETTIME64              = 4409\n\tSYS_TIMERFD_GETTIME64            = 4410\n\tSYS_TIMERFD_SETTIME64            = 4411\n\tSYS_UTIMENSAT_TIME64             = 4412\n\tSYS_PSELECT6_TIME64              = 4413\n\tSYS_PPOLL_TIME64                 = 4414\n\tSYS_IO_PGETEVENTS_TIME64         = 4416\n\tSYS_RECVMMSG_TIME64              = 4417\n\tSYS_MQ_TIMEDSEND_TIME64          = 4418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 4419\n\tSYS_SEMTIMEDOP_TIME64            = 4420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 4421\n\tSYS_FUTEX_TIME64                 = 4422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423\n\tSYS_PIDFD_SEND_SIGNAL            = 4424\n\tSYS_IO_URING_SETUP               = 4425\n\tSYS_IO_URING_ENTER               = 4426\n\tSYS_IO_URING_REGISTER            = 4427\n\tSYS_OPEN_TREE                    = 4428\n\tSYS_MOVE_MOUNT                   = 4429\n\tSYS_FSOPEN                       = 4430\n\tSYS_FSCONFIG                     = 4431\n\tSYS_FSMOUNT                      = 4432\n\tSYS_FSPICK                       = 4433\n\tSYS_PIDFD_OPEN                   = 4434\n\tSYS_CLONE3                       = 4435\n\tSYS_CLOSE_RANGE                  = 4436\n\tSYS_OPENAT2                      = 4437\n\tSYS_PIDFD_GETFD                  = 4438\n\tSYS_FACCESSAT2                   = 4439\n\tSYS_PROCESS_MADVISE              = 4440\n\tSYS_EPOLL_PWAIT2                 = 4441\n\tSYS_MOUNT_SETATTR                = 4442\n\tSYS_QUOTACTL_FD                  = 4443\n\tSYS_LANDLOCK_CREATE_RULESET      = 4444\n\tSYS_LANDLOCK_ADD_RULE            = 4445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 4446\n\tSYS_PROCESS_MRELEASE             = 4448\n\tSYS_FUTEX_WAITV                  = 4449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 4450\n\tSYS_CACHESTAT                    = 4451\n\tSYS_FCHMODAT2                    = 4452\n\tSYS_MAP_SHADOW_STACK             = 4453\n\tSYS_FUTEX_WAKE                   = 4454\n\tSYS_FUTEX_WAIT                   = 4455\n\tSYS_FUTEX_REQUEUE                = 4456\n\tSYS_STATMOUNT                    = 4457\n\tSYS_LISTMOUNT                    = 4458\n\tSYS_LSM_GET_SELF_ATTR            = 4459\n\tSYS_LSM_SET_SELF_ATTR            = 4460\n\tSYS_LSM_LIST_MODULES             = 4461\n\tSYS_MSEAL                        = 4462\n\tSYS_SETXATTRAT                   = 4463\n\tSYS_GETXATTRAT                   = 4464\n\tSYS_LISTXATTRAT                  = 4465\n\tSYS_REMOVEXATTRAT                = 4466\n\tSYS_OPEN_TREE_ATTR               = 4467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64/include /tmp/mips64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 5000\n\tSYS_WRITE                   = 5001\n\tSYS_OPEN                    = 5002\n\tSYS_CLOSE                   = 5003\n\tSYS_STAT                    = 5004\n\tSYS_FSTAT                   = 5005\n\tSYS_LSTAT                   = 5006\n\tSYS_POLL                    = 5007\n\tSYS_LSEEK                   = 5008\n\tSYS_MMAP                    = 5009\n\tSYS_MPROTECT                = 5010\n\tSYS_MUNMAP                  = 5011\n\tSYS_BRK                     = 5012\n\tSYS_RT_SIGACTION            = 5013\n\tSYS_RT_SIGPROCMASK          = 5014\n\tSYS_IOCTL                   = 5015\n\tSYS_PREAD64                 = 5016\n\tSYS_PWRITE64                = 5017\n\tSYS_READV                   = 5018\n\tSYS_WRITEV                  = 5019\n\tSYS_ACCESS                  = 5020\n\tSYS_PIPE                    = 5021\n\tSYS__NEWSELECT              = 5022\n\tSYS_SCHED_YIELD             = 5023\n\tSYS_MREMAP                  = 5024\n\tSYS_MSYNC                   = 5025\n\tSYS_MINCORE                 = 5026\n\tSYS_MADVISE                 = 5027\n\tSYS_SHMGET                  = 5028\n\tSYS_SHMAT                   = 5029\n\tSYS_SHMCTL                  = 5030\n\tSYS_DUP                     = 5031\n\tSYS_DUP2                    = 5032\n\tSYS_PAUSE                   = 5033\n\tSYS_NANOSLEEP               = 5034\n\tSYS_GETITIMER               = 5035\n\tSYS_SETITIMER               = 5036\n\tSYS_ALARM                   = 5037\n\tSYS_GETPID                  = 5038\n\tSYS_SENDFILE                = 5039\n\tSYS_SOCKET                  = 5040\n\tSYS_CONNECT                 = 5041\n\tSYS_ACCEPT                  = 5042\n\tSYS_SENDTO                  = 5043\n\tSYS_RECVFROM                = 5044\n\tSYS_SENDMSG                 = 5045\n\tSYS_RECVMSG                 = 5046\n\tSYS_SHUTDOWN                = 5047\n\tSYS_BIND                    = 5048\n\tSYS_LISTEN                  = 5049\n\tSYS_GETSOCKNAME             = 5050\n\tSYS_GETPEERNAME             = 5051\n\tSYS_SOCKETPAIR              = 5052\n\tSYS_SETSOCKOPT              = 5053\n\tSYS_GETSOCKOPT              = 5054\n\tSYS_CLONE                   = 5055\n\tSYS_FORK                    = 5056\n\tSYS_EXECVE                  = 5057\n\tSYS_EXIT                    = 5058\n\tSYS_WAIT4                   = 5059\n\tSYS_KILL                    = 5060\n\tSYS_UNAME                   = 5061\n\tSYS_SEMGET                  = 5062\n\tSYS_SEMOP                   = 5063\n\tSYS_SEMCTL                  = 5064\n\tSYS_SHMDT                   = 5065\n\tSYS_MSGGET                  = 5066\n\tSYS_MSGSND                  = 5067\n\tSYS_MSGRCV                  = 5068\n\tSYS_MSGCTL                  = 5069\n\tSYS_FCNTL                   = 5070\n\tSYS_FLOCK                   = 5071\n\tSYS_FSYNC                   = 5072\n\tSYS_FDATASYNC               = 5073\n\tSYS_TRUNCATE                = 5074\n\tSYS_FTRUNCATE               = 5075\n\tSYS_GETDENTS                = 5076\n\tSYS_GETCWD                  = 5077\n\tSYS_CHDIR                   = 5078\n\tSYS_FCHDIR                  = 5079\n\tSYS_RENAME                  = 5080\n\tSYS_MKDIR                   = 5081\n\tSYS_RMDIR                   = 5082\n\tSYS_CREAT                   = 5083\n\tSYS_LINK                    = 5084\n\tSYS_UNLINK                  = 5085\n\tSYS_SYMLINK                 = 5086\n\tSYS_READLINK                = 5087\n\tSYS_CHMOD                   = 5088\n\tSYS_FCHMOD                  = 5089\n\tSYS_CHOWN                   = 5090\n\tSYS_FCHOWN                  = 5091\n\tSYS_LCHOWN                  = 5092\n\tSYS_UMASK                   = 5093\n\tSYS_GETTIMEOFDAY            = 5094\n\tSYS_GETRLIMIT               = 5095\n\tSYS_GETRUSAGE               = 5096\n\tSYS_SYSINFO                 = 5097\n\tSYS_TIMES                   = 5098\n\tSYS_PTRACE                  = 5099\n\tSYS_GETUID                  = 5100\n\tSYS_SYSLOG                  = 5101\n\tSYS_GETGID                  = 5102\n\tSYS_SETUID                  = 5103\n\tSYS_SETGID                  = 5104\n\tSYS_GETEUID                 = 5105\n\tSYS_GETEGID                 = 5106\n\tSYS_SETPGID                 = 5107\n\tSYS_GETPPID                 = 5108\n\tSYS_GETPGRP                 = 5109\n\tSYS_SETSID                  = 5110\n\tSYS_SETREUID                = 5111\n\tSYS_SETREGID                = 5112\n\tSYS_GETGROUPS               = 5113\n\tSYS_SETGROUPS               = 5114\n\tSYS_SETRESUID               = 5115\n\tSYS_GETRESUID               = 5116\n\tSYS_SETRESGID               = 5117\n\tSYS_GETRESGID               = 5118\n\tSYS_GETPGID                 = 5119\n\tSYS_SETFSUID                = 5120\n\tSYS_SETFSGID                = 5121\n\tSYS_GETSID                  = 5122\n\tSYS_CAPGET                  = 5123\n\tSYS_CAPSET                  = 5124\n\tSYS_RT_SIGPENDING           = 5125\n\tSYS_RT_SIGTIMEDWAIT         = 5126\n\tSYS_RT_SIGQUEUEINFO         = 5127\n\tSYS_RT_SIGSUSPEND           = 5128\n\tSYS_SIGALTSTACK             = 5129\n\tSYS_UTIME                   = 5130\n\tSYS_MKNOD                   = 5131\n\tSYS_PERSONALITY             = 5132\n\tSYS_USTAT                   = 5133\n\tSYS_STATFS                  = 5134\n\tSYS_FSTATFS                 = 5135\n\tSYS_SYSFS                   = 5136\n\tSYS_GETPRIORITY             = 5137\n\tSYS_SETPRIORITY             = 5138\n\tSYS_SCHED_SETPARAM          = 5139\n\tSYS_SCHED_GETPARAM          = 5140\n\tSYS_SCHED_SETSCHEDULER      = 5141\n\tSYS_SCHED_GETSCHEDULER      = 5142\n\tSYS_SCHED_GET_PRIORITY_MAX  = 5143\n\tSYS_SCHED_GET_PRIORITY_MIN  = 5144\n\tSYS_SCHED_RR_GET_INTERVAL   = 5145\n\tSYS_MLOCK                   = 5146\n\tSYS_MUNLOCK                 = 5147\n\tSYS_MLOCKALL                = 5148\n\tSYS_MUNLOCKALL              = 5149\n\tSYS_VHANGUP                 = 5150\n\tSYS_PIVOT_ROOT              = 5151\n\tSYS__SYSCTL                 = 5152\n\tSYS_PRCTL                   = 5153\n\tSYS_ADJTIMEX                = 5154\n\tSYS_SETRLIMIT               = 5155\n\tSYS_CHROOT                  = 5156\n\tSYS_SYNC                    = 5157\n\tSYS_ACCT                    = 5158\n\tSYS_SETTIMEOFDAY            = 5159\n\tSYS_MOUNT                   = 5160\n\tSYS_UMOUNT2                 = 5161\n\tSYS_SWAPON                  = 5162\n\tSYS_SWAPOFF                 = 5163\n\tSYS_REBOOT                  = 5164\n\tSYS_SETHOSTNAME             = 5165\n\tSYS_SETDOMAINNAME           = 5166\n\tSYS_CREATE_MODULE           = 5167\n\tSYS_INIT_MODULE             = 5168\n\tSYS_DELETE_MODULE           = 5169\n\tSYS_GET_KERNEL_SYMS         = 5170\n\tSYS_QUERY_MODULE            = 5171\n\tSYS_QUOTACTL                = 5172\n\tSYS_NFSSERVCTL              = 5173\n\tSYS_GETPMSG                 = 5174\n\tSYS_PUTPMSG                 = 5175\n\tSYS_AFS_SYSCALL             = 5176\n\tSYS_RESERVED177             = 5177\n\tSYS_GETTID                  = 5178\n\tSYS_READAHEAD               = 5179\n\tSYS_SETXATTR                = 5180\n\tSYS_LSETXATTR               = 5181\n\tSYS_FSETXATTR               = 5182\n\tSYS_GETXATTR                = 5183\n\tSYS_LGETXATTR               = 5184\n\tSYS_FGETXATTR               = 5185\n\tSYS_LISTXATTR               = 5186\n\tSYS_LLISTXATTR              = 5187\n\tSYS_FLISTXATTR              = 5188\n\tSYS_REMOVEXATTR             = 5189\n\tSYS_LREMOVEXATTR            = 5190\n\tSYS_FREMOVEXATTR            = 5191\n\tSYS_TKILL                   = 5192\n\tSYS_RESERVED193             = 5193\n\tSYS_FUTEX                   = 5194\n\tSYS_SCHED_SETAFFINITY       = 5195\n\tSYS_SCHED_GETAFFINITY       = 5196\n\tSYS_CACHEFLUSH              = 5197\n\tSYS_CACHECTL                = 5198\n\tSYS_SYSMIPS                 = 5199\n\tSYS_IO_SETUP                = 5200\n\tSYS_IO_DESTROY              = 5201\n\tSYS_IO_GETEVENTS            = 5202\n\tSYS_IO_SUBMIT               = 5203\n\tSYS_IO_CANCEL               = 5204\n\tSYS_EXIT_GROUP              = 5205\n\tSYS_LOOKUP_DCOOKIE          = 5206\n\tSYS_EPOLL_CREATE            = 5207\n\tSYS_EPOLL_CTL               = 5208\n\tSYS_EPOLL_WAIT              = 5209\n\tSYS_REMAP_FILE_PAGES        = 5210\n\tSYS_RT_SIGRETURN            = 5211\n\tSYS_SET_TID_ADDRESS         = 5212\n\tSYS_RESTART_SYSCALL         = 5213\n\tSYS_SEMTIMEDOP              = 5214\n\tSYS_FADVISE64               = 5215\n\tSYS_TIMER_CREATE            = 5216\n\tSYS_TIMER_SETTIME           = 5217\n\tSYS_TIMER_GETTIME           = 5218\n\tSYS_TIMER_GETOVERRUN        = 5219\n\tSYS_TIMER_DELETE            = 5220\n\tSYS_CLOCK_SETTIME           = 5221\n\tSYS_CLOCK_GETTIME           = 5222\n\tSYS_CLOCK_GETRES            = 5223\n\tSYS_CLOCK_NANOSLEEP         = 5224\n\tSYS_TGKILL                  = 5225\n\tSYS_UTIMES                  = 5226\n\tSYS_MBIND                   = 5227\n\tSYS_GET_MEMPOLICY           = 5228\n\tSYS_SET_MEMPOLICY           = 5229\n\tSYS_MQ_OPEN                 = 5230\n\tSYS_MQ_UNLINK               = 5231\n\tSYS_MQ_TIMEDSEND            = 5232\n\tSYS_MQ_TIMEDRECEIVE         = 5233\n\tSYS_MQ_NOTIFY               = 5234\n\tSYS_MQ_GETSETATTR           = 5235\n\tSYS_VSERVER                 = 5236\n\tSYS_WAITID                  = 5237\n\tSYS_ADD_KEY                 = 5239\n\tSYS_REQUEST_KEY             = 5240\n\tSYS_KEYCTL                  = 5241\n\tSYS_SET_THREAD_AREA         = 5242\n\tSYS_INOTIFY_INIT            = 5243\n\tSYS_INOTIFY_ADD_WATCH       = 5244\n\tSYS_INOTIFY_RM_WATCH        = 5245\n\tSYS_MIGRATE_PAGES           = 5246\n\tSYS_OPENAT                  = 5247\n\tSYS_MKDIRAT                 = 5248\n\tSYS_MKNODAT                 = 5249\n\tSYS_FCHOWNAT                = 5250\n\tSYS_FUTIMESAT               = 5251\n\tSYS_NEWFSTATAT              = 5252\n\tSYS_UNLINKAT                = 5253\n\tSYS_RENAMEAT                = 5254\n\tSYS_LINKAT                  = 5255\n\tSYS_SYMLINKAT               = 5256\n\tSYS_READLINKAT              = 5257\n\tSYS_FCHMODAT                = 5258\n\tSYS_FACCESSAT               = 5259\n\tSYS_PSELECT6                = 5260\n\tSYS_PPOLL                   = 5261\n\tSYS_UNSHARE                 = 5262\n\tSYS_SPLICE                  = 5263\n\tSYS_SYNC_FILE_RANGE         = 5264\n\tSYS_TEE                     = 5265\n\tSYS_VMSPLICE                = 5266\n\tSYS_MOVE_PAGES              = 5267\n\tSYS_SET_ROBUST_LIST         = 5268\n\tSYS_GET_ROBUST_LIST         = 5269\n\tSYS_KEXEC_LOAD              = 5270\n\tSYS_GETCPU                  = 5271\n\tSYS_EPOLL_PWAIT             = 5272\n\tSYS_IOPRIO_SET              = 5273\n\tSYS_IOPRIO_GET              = 5274\n\tSYS_UTIMENSAT               = 5275\n\tSYS_SIGNALFD                = 5276\n\tSYS_TIMERFD                 = 5277\n\tSYS_EVENTFD                 = 5278\n\tSYS_FALLOCATE               = 5279\n\tSYS_TIMERFD_CREATE          = 5280\n\tSYS_TIMERFD_GETTIME         = 5281\n\tSYS_TIMERFD_SETTIME         = 5282\n\tSYS_SIGNALFD4               = 5283\n\tSYS_EVENTFD2                = 5284\n\tSYS_EPOLL_CREATE1           = 5285\n\tSYS_DUP3                    = 5286\n\tSYS_PIPE2                   = 5287\n\tSYS_INOTIFY_INIT1           = 5288\n\tSYS_PREADV                  = 5289\n\tSYS_PWRITEV                 = 5290\n\tSYS_RT_TGSIGQUEUEINFO       = 5291\n\tSYS_PERF_EVENT_OPEN         = 5292\n\tSYS_ACCEPT4                 = 5293\n\tSYS_RECVMMSG                = 5294\n\tSYS_FANOTIFY_INIT           = 5295\n\tSYS_FANOTIFY_MARK           = 5296\n\tSYS_PRLIMIT64               = 5297\n\tSYS_NAME_TO_HANDLE_AT       = 5298\n\tSYS_OPEN_BY_HANDLE_AT       = 5299\n\tSYS_CLOCK_ADJTIME           = 5300\n\tSYS_SYNCFS                  = 5301\n\tSYS_SENDMMSG                = 5302\n\tSYS_SETNS                   = 5303\n\tSYS_PROCESS_VM_READV        = 5304\n\tSYS_PROCESS_VM_WRITEV       = 5305\n\tSYS_KCMP                    = 5306\n\tSYS_FINIT_MODULE            = 5307\n\tSYS_GETDENTS64              = 5308\n\tSYS_SCHED_SETATTR           = 5309\n\tSYS_SCHED_GETATTR           = 5310\n\tSYS_RENAMEAT2               = 5311\n\tSYS_SECCOMP                 = 5312\n\tSYS_GETRANDOM               = 5313\n\tSYS_MEMFD_CREATE            = 5314\n\tSYS_BPF                     = 5315\n\tSYS_EXECVEAT                = 5316\n\tSYS_USERFAULTFD             = 5317\n\tSYS_MEMBARRIER              = 5318\n\tSYS_MLOCK2                  = 5319\n\tSYS_COPY_FILE_RANGE         = 5320\n\tSYS_PREADV2                 = 5321\n\tSYS_PWRITEV2                = 5322\n\tSYS_PKEY_MPROTECT           = 5323\n\tSYS_PKEY_ALLOC              = 5324\n\tSYS_PKEY_FREE               = 5325\n\tSYS_STATX                   = 5326\n\tSYS_RSEQ                    = 5327\n\tSYS_IO_PGETEVENTS           = 5328\n\tSYS_PIDFD_SEND_SIGNAL       = 5424\n\tSYS_IO_URING_SETUP          = 5425\n\tSYS_IO_URING_ENTER          = 5426\n\tSYS_IO_URING_REGISTER       = 5427\n\tSYS_OPEN_TREE               = 5428\n\tSYS_MOVE_MOUNT              = 5429\n\tSYS_FSOPEN                  = 5430\n\tSYS_FSCONFIG                = 5431\n\tSYS_FSMOUNT                 = 5432\n\tSYS_FSPICK                  = 5433\n\tSYS_PIDFD_OPEN              = 5434\n\tSYS_CLONE3                  = 5435\n\tSYS_CLOSE_RANGE             = 5436\n\tSYS_OPENAT2                 = 5437\n\tSYS_PIDFD_GETFD             = 5438\n\tSYS_FACCESSAT2              = 5439\n\tSYS_PROCESS_MADVISE         = 5440\n\tSYS_EPOLL_PWAIT2            = 5441\n\tSYS_MOUNT_SETATTR           = 5442\n\tSYS_QUOTACTL_FD             = 5443\n\tSYS_LANDLOCK_CREATE_RULESET = 5444\n\tSYS_LANDLOCK_ADD_RULE       = 5445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 5446\n\tSYS_PROCESS_MRELEASE        = 5448\n\tSYS_FUTEX_WAITV             = 5449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 5450\n\tSYS_CACHESTAT               = 5451\n\tSYS_FCHMODAT2               = 5452\n\tSYS_MAP_SHADOW_STACK        = 5453\n\tSYS_FUTEX_WAKE              = 5454\n\tSYS_FUTEX_WAIT              = 5455\n\tSYS_FUTEX_REQUEUE           = 5456\n\tSYS_STATMOUNT               = 5457\n\tSYS_LISTMOUNT               = 5458\n\tSYS_LSM_GET_SELF_ATTR       = 5459\n\tSYS_LSM_SET_SELF_ATTR       = 5460\n\tSYS_LSM_LIST_MODULES        = 5461\n\tSYS_MSEAL                   = 5462\n\tSYS_SETXATTRAT              = 5463\n\tSYS_GETXATTRAT              = 5464\n\tSYS_LISTXATTRAT             = 5465\n\tSYS_REMOVEXATTRAT           = 5466\n\tSYS_OPEN_TREE_ATTR          = 5467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64le/include /tmp/mips64le/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 5000\n\tSYS_WRITE                   = 5001\n\tSYS_OPEN                    = 5002\n\tSYS_CLOSE                   = 5003\n\tSYS_STAT                    = 5004\n\tSYS_FSTAT                   = 5005\n\tSYS_LSTAT                   = 5006\n\tSYS_POLL                    = 5007\n\tSYS_LSEEK                   = 5008\n\tSYS_MMAP                    = 5009\n\tSYS_MPROTECT                = 5010\n\tSYS_MUNMAP                  = 5011\n\tSYS_BRK                     = 5012\n\tSYS_RT_SIGACTION            = 5013\n\tSYS_RT_SIGPROCMASK          = 5014\n\tSYS_IOCTL                   = 5015\n\tSYS_PREAD64                 = 5016\n\tSYS_PWRITE64                = 5017\n\tSYS_READV                   = 5018\n\tSYS_WRITEV                  = 5019\n\tSYS_ACCESS                  = 5020\n\tSYS_PIPE                    = 5021\n\tSYS__NEWSELECT              = 5022\n\tSYS_SCHED_YIELD             = 5023\n\tSYS_MREMAP                  = 5024\n\tSYS_MSYNC                   = 5025\n\tSYS_MINCORE                 = 5026\n\tSYS_MADVISE                 = 5027\n\tSYS_SHMGET                  = 5028\n\tSYS_SHMAT                   = 5029\n\tSYS_SHMCTL                  = 5030\n\tSYS_DUP                     = 5031\n\tSYS_DUP2                    = 5032\n\tSYS_PAUSE                   = 5033\n\tSYS_NANOSLEEP               = 5034\n\tSYS_GETITIMER               = 5035\n\tSYS_SETITIMER               = 5036\n\tSYS_ALARM                   = 5037\n\tSYS_GETPID                  = 5038\n\tSYS_SENDFILE                = 5039\n\tSYS_SOCKET                  = 5040\n\tSYS_CONNECT                 = 5041\n\tSYS_ACCEPT                  = 5042\n\tSYS_SENDTO                  = 5043\n\tSYS_RECVFROM                = 5044\n\tSYS_SENDMSG                 = 5045\n\tSYS_RECVMSG                 = 5046\n\tSYS_SHUTDOWN                = 5047\n\tSYS_BIND                    = 5048\n\tSYS_LISTEN                  = 5049\n\tSYS_GETSOCKNAME             = 5050\n\tSYS_GETPEERNAME             = 5051\n\tSYS_SOCKETPAIR              = 5052\n\tSYS_SETSOCKOPT              = 5053\n\tSYS_GETSOCKOPT              = 5054\n\tSYS_CLONE                   = 5055\n\tSYS_FORK                    = 5056\n\tSYS_EXECVE                  = 5057\n\tSYS_EXIT                    = 5058\n\tSYS_WAIT4                   = 5059\n\tSYS_KILL                    = 5060\n\tSYS_UNAME                   = 5061\n\tSYS_SEMGET                  = 5062\n\tSYS_SEMOP                   = 5063\n\tSYS_SEMCTL                  = 5064\n\tSYS_SHMDT                   = 5065\n\tSYS_MSGGET                  = 5066\n\tSYS_MSGSND                  = 5067\n\tSYS_MSGRCV                  = 5068\n\tSYS_MSGCTL                  = 5069\n\tSYS_FCNTL                   = 5070\n\tSYS_FLOCK                   = 5071\n\tSYS_FSYNC                   = 5072\n\tSYS_FDATASYNC               = 5073\n\tSYS_TRUNCATE                = 5074\n\tSYS_FTRUNCATE               = 5075\n\tSYS_GETDENTS                = 5076\n\tSYS_GETCWD                  = 5077\n\tSYS_CHDIR                   = 5078\n\tSYS_FCHDIR                  = 5079\n\tSYS_RENAME                  = 5080\n\tSYS_MKDIR                   = 5081\n\tSYS_RMDIR                   = 5082\n\tSYS_CREAT                   = 5083\n\tSYS_LINK                    = 5084\n\tSYS_UNLINK                  = 5085\n\tSYS_SYMLINK                 = 5086\n\tSYS_READLINK                = 5087\n\tSYS_CHMOD                   = 5088\n\tSYS_FCHMOD                  = 5089\n\tSYS_CHOWN                   = 5090\n\tSYS_FCHOWN                  = 5091\n\tSYS_LCHOWN                  = 5092\n\tSYS_UMASK                   = 5093\n\tSYS_GETTIMEOFDAY            = 5094\n\tSYS_GETRLIMIT               = 5095\n\tSYS_GETRUSAGE               = 5096\n\tSYS_SYSINFO                 = 5097\n\tSYS_TIMES                   = 5098\n\tSYS_PTRACE                  = 5099\n\tSYS_GETUID                  = 5100\n\tSYS_SYSLOG                  = 5101\n\tSYS_GETGID                  = 5102\n\tSYS_SETUID                  = 5103\n\tSYS_SETGID                  = 5104\n\tSYS_GETEUID                 = 5105\n\tSYS_GETEGID                 = 5106\n\tSYS_SETPGID                 = 5107\n\tSYS_GETPPID                 = 5108\n\tSYS_GETPGRP                 = 5109\n\tSYS_SETSID                  = 5110\n\tSYS_SETREUID                = 5111\n\tSYS_SETREGID                = 5112\n\tSYS_GETGROUPS               = 5113\n\tSYS_SETGROUPS               = 5114\n\tSYS_SETRESUID               = 5115\n\tSYS_GETRESUID               = 5116\n\tSYS_SETRESGID               = 5117\n\tSYS_GETRESGID               = 5118\n\tSYS_GETPGID                 = 5119\n\tSYS_SETFSUID                = 5120\n\tSYS_SETFSGID                = 5121\n\tSYS_GETSID                  = 5122\n\tSYS_CAPGET                  = 5123\n\tSYS_CAPSET                  = 5124\n\tSYS_RT_SIGPENDING           = 5125\n\tSYS_RT_SIGTIMEDWAIT         = 5126\n\tSYS_RT_SIGQUEUEINFO         = 5127\n\tSYS_RT_SIGSUSPEND           = 5128\n\tSYS_SIGALTSTACK             = 5129\n\tSYS_UTIME                   = 5130\n\tSYS_MKNOD                   = 5131\n\tSYS_PERSONALITY             = 5132\n\tSYS_USTAT                   = 5133\n\tSYS_STATFS                  = 5134\n\tSYS_FSTATFS                 = 5135\n\tSYS_SYSFS                   = 5136\n\tSYS_GETPRIORITY             = 5137\n\tSYS_SETPRIORITY             = 5138\n\tSYS_SCHED_SETPARAM          = 5139\n\tSYS_SCHED_GETPARAM          = 5140\n\tSYS_SCHED_SETSCHEDULER      = 5141\n\tSYS_SCHED_GETSCHEDULER      = 5142\n\tSYS_SCHED_GET_PRIORITY_MAX  = 5143\n\tSYS_SCHED_GET_PRIORITY_MIN  = 5144\n\tSYS_SCHED_RR_GET_INTERVAL   = 5145\n\tSYS_MLOCK                   = 5146\n\tSYS_MUNLOCK                 = 5147\n\tSYS_MLOCKALL                = 5148\n\tSYS_MUNLOCKALL              = 5149\n\tSYS_VHANGUP                 = 5150\n\tSYS_PIVOT_ROOT              = 5151\n\tSYS__SYSCTL                 = 5152\n\tSYS_PRCTL                   = 5153\n\tSYS_ADJTIMEX                = 5154\n\tSYS_SETRLIMIT               = 5155\n\tSYS_CHROOT                  = 5156\n\tSYS_SYNC                    = 5157\n\tSYS_ACCT                    = 5158\n\tSYS_SETTIMEOFDAY            = 5159\n\tSYS_MOUNT                   = 5160\n\tSYS_UMOUNT2                 = 5161\n\tSYS_SWAPON                  = 5162\n\tSYS_SWAPOFF                 = 5163\n\tSYS_REBOOT                  = 5164\n\tSYS_SETHOSTNAME             = 5165\n\tSYS_SETDOMAINNAME           = 5166\n\tSYS_CREATE_MODULE           = 5167\n\tSYS_INIT_MODULE             = 5168\n\tSYS_DELETE_MODULE           = 5169\n\tSYS_GET_KERNEL_SYMS         = 5170\n\tSYS_QUERY_MODULE            = 5171\n\tSYS_QUOTACTL                = 5172\n\tSYS_NFSSERVCTL              = 5173\n\tSYS_GETPMSG                 = 5174\n\tSYS_PUTPMSG                 = 5175\n\tSYS_AFS_SYSCALL             = 5176\n\tSYS_RESERVED177             = 5177\n\tSYS_GETTID                  = 5178\n\tSYS_READAHEAD               = 5179\n\tSYS_SETXATTR                = 5180\n\tSYS_LSETXATTR               = 5181\n\tSYS_FSETXATTR               = 5182\n\tSYS_GETXATTR                = 5183\n\tSYS_LGETXATTR               = 5184\n\tSYS_FGETXATTR               = 5185\n\tSYS_LISTXATTR               = 5186\n\tSYS_LLISTXATTR              = 5187\n\tSYS_FLISTXATTR              = 5188\n\tSYS_REMOVEXATTR             = 5189\n\tSYS_LREMOVEXATTR            = 5190\n\tSYS_FREMOVEXATTR            = 5191\n\tSYS_TKILL                   = 5192\n\tSYS_RESERVED193             = 5193\n\tSYS_FUTEX                   = 5194\n\tSYS_SCHED_SETAFFINITY       = 5195\n\tSYS_SCHED_GETAFFINITY       = 5196\n\tSYS_CACHEFLUSH              = 5197\n\tSYS_CACHECTL                = 5198\n\tSYS_SYSMIPS                 = 5199\n\tSYS_IO_SETUP                = 5200\n\tSYS_IO_DESTROY              = 5201\n\tSYS_IO_GETEVENTS            = 5202\n\tSYS_IO_SUBMIT               = 5203\n\tSYS_IO_CANCEL               = 5204\n\tSYS_EXIT_GROUP              = 5205\n\tSYS_LOOKUP_DCOOKIE          = 5206\n\tSYS_EPOLL_CREATE            = 5207\n\tSYS_EPOLL_CTL               = 5208\n\tSYS_EPOLL_WAIT              = 5209\n\tSYS_REMAP_FILE_PAGES        = 5210\n\tSYS_RT_SIGRETURN            = 5211\n\tSYS_SET_TID_ADDRESS         = 5212\n\tSYS_RESTART_SYSCALL         = 5213\n\tSYS_SEMTIMEDOP              = 5214\n\tSYS_FADVISE64               = 5215\n\tSYS_TIMER_CREATE            = 5216\n\tSYS_TIMER_SETTIME           = 5217\n\tSYS_TIMER_GETTIME           = 5218\n\tSYS_TIMER_GETOVERRUN        = 5219\n\tSYS_TIMER_DELETE            = 5220\n\tSYS_CLOCK_SETTIME           = 5221\n\tSYS_CLOCK_GETTIME           = 5222\n\tSYS_CLOCK_GETRES            = 5223\n\tSYS_CLOCK_NANOSLEEP         = 5224\n\tSYS_TGKILL                  = 5225\n\tSYS_UTIMES                  = 5226\n\tSYS_MBIND                   = 5227\n\tSYS_GET_MEMPOLICY           = 5228\n\tSYS_SET_MEMPOLICY           = 5229\n\tSYS_MQ_OPEN                 = 5230\n\tSYS_MQ_UNLINK               = 5231\n\tSYS_MQ_TIMEDSEND            = 5232\n\tSYS_MQ_TIMEDRECEIVE         = 5233\n\tSYS_MQ_NOTIFY               = 5234\n\tSYS_MQ_GETSETATTR           = 5235\n\tSYS_VSERVER                 = 5236\n\tSYS_WAITID                  = 5237\n\tSYS_ADD_KEY                 = 5239\n\tSYS_REQUEST_KEY             = 5240\n\tSYS_KEYCTL                  = 5241\n\tSYS_SET_THREAD_AREA         = 5242\n\tSYS_INOTIFY_INIT            = 5243\n\tSYS_INOTIFY_ADD_WATCH       = 5244\n\tSYS_INOTIFY_RM_WATCH        = 5245\n\tSYS_MIGRATE_PAGES           = 5246\n\tSYS_OPENAT                  = 5247\n\tSYS_MKDIRAT                 = 5248\n\tSYS_MKNODAT                 = 5249\n\tSYS_FCHOWNAT                = 5250\n\tSYS_FUTIMESAT               = 5251\n\tSYS_NEWFSTATAT              = 5252\n\tSYS_UNLINKAT                = 5253\n\tSYS_RENAMEAT                = 5254\n\tSYS_LINKAT                  = 5255\n\tSYS_SYMLINKAT               = 5256\n\tSYS_READLINKAT              = 5257\n\tSYS_FCHMODAT                = 5258\n\tSYS_FACCESSAT               = 5259\n\tSYS_PSELECT6                = 5260\n\tSYS_PPOLL                   = 5261\n\tSYS_UNSHARE                 = 5262\n\tSYS_SPLICE                  = 5263\n\tSYS_SYNC_FILE_RANGE         = 5264\n\tSYS_TEE                     = 5265\n\tSYS_VMSPLICE                = 5266\n\tSYS_MOVE_PAGES              = 5267\n\tSYS_SET_ROBUST_LIST         = 5268\n\tSYS_GET_ROBUST_LIST         = 5269\n\tSYS_KEXEC_LOAD              = 5270\n\tSYS_GETCPU                  = 5271\n\tSYS_EPOLL_PWAIT             = 5272\n\tSYS_IOPRIO_SET              = 5273\n\tSYS_IOPRIO_GET              = 5274\n\tSYS_UTIMENSAT               = 5275\n\tSYS_SIGNALFD                = 5276\n\tSYS_TIMERFD                 = 5277\n\tSYS_EVENTFD                 = 5278\n\tSYS_FALLOCATE               = 5279\n\tSYS_TIMERFD_CREATE          = 5280\n\tSYS_TIMERFD_GETTIME         = 5281\n\tSYS_TIMERFD_SETTIME         = 5282\n\tSYS_SIGNALFD4               = 5283\n\tSYS_EVENTFD2                = 5284\n\tSYS_EPOLL_CREATE1           = 5285\n\tSYS_DUP3                    = 5286\n\tSYS_PIPE2                   = 5287\n\tSYS_INOTIFY_INIT1           = 5288\n\tSYS_PREADV                  = 5289\n\tSYS_PWRITEV                 = 5290\n\tSYS_RT_TGSIGQUEUEINFO       = 5291\n\tSYS_PERF_EVENT_OPEN         = 5292\n\tSYS_ACCEPT4                 = 5293\n\tSYS_RECVMMSG                = 5294\n\tSYS_FANOTIFY_INIT           = 5295\n\tSYS_FANOTIFY_MARK           = 5296\n\tSYS_PRLIMIT64               = 5297\n\tSYS_NAME_TO_HANDLE_AT       = 5298\n\tSYS_OPEN_BY_HANDLE_AT       = 5299\n\tSYS_CLOCK_ADJTIME           = 5300\n\tSYS_SYNCFS                  = 5301\n\tSYS_SENDMMSG                = 5302\n\tSYS_SETNS                   = 5303\n\tSYS_PROCESS_VM_READV        = 5304\n\tSYS_PROCESS_VM_WRITEV       = 5305\n\tSYS_KCMP                    = 5306\n\tSYS_FINIT_MODULE            = 5307\n\tSYS_GETDENTS64              = 5308\n\tSYS_SCHED_SETATTR           = 5309\n\tSYS_SCHED_GETATTR           = 5310\n\tSYS_RENAMEAT2               = 5311\n\tSYS_SECCOMP                 = 5312\n\tSYS_GETRANDOM               = 5313\n\tSYS_MEMFD_CREATE            = 5314\n\tSYS_BPF                     = 5315\n\tSYS_EXECVEAT                = 5316\n\tSYS_USERFAULTFD             = 5317\n\tSYS_MEMBARRIER              = 5318\n\tSYS_MLOCK2                  = 5319\n\tSYS_COPY_FILE_RANGE         = 5320\n\tSYS_PREADV2                 = 5321\n\tSYS_PWRITEV2                = 5322\n\tSYS_PKEY_MPROTECT           = 5323\n\tSYS_PKEY_ALLOC              = 5324\n\tSYS_PKEY_FREE               = 5325\n\tSYS_STATX                   = 5326\n\tSYS_RSEQ                    = 5327\n\tSYS_IO_PGETEVENTS           = 5328\n\tSYS_PIDFD_SEND_SIGNAL       = 5424\n\tSYS_IO_URING_SETUP          = 5425\n\tSYS_IO_URING_ENTER          = 5426\n\tSYS_IO_URING_REGISTER       = 5427\n\tSYS_OPEN_TREE               = 5428\n\tSYS_MOVE_MOUNT              = 5429\n\tSYS_FSOPEN                  = 5430\n\tSYS_FSCONFIG                = 5431\n\tSYS_FSMOUNT                 = 5432\n\tSYS_FSPICK                  = 5433\n\tSYS_PIDFD_OPEN              = 5434\n\tSYS_CLONE3                  = 5435\n\tSYS_CLOSE_RANGE             = 5436\n\tSYS_OPENAT2                 = 5437\n\tSYS_PIDFD_GETFD             = 5438\n\tSYS_FACCESSAT2              = 5439\n\tSYS_PROCESS_MADVISE         = 5440\n\tSYS_EPOLL_PWAIT2            = 5441\n\tSYS_MOUNT_SETATTR           = 5442\n\tSYS_QUOTACTL_FD             = 5443\n\tSYS_LANDLOCK_CREATE_RULESET = 5444\n\tSYS_LANDLOCK_ADD_RULE       = 5445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 5446\n\tSYS_PROCESS_MRELEASE        = 5448\n\tSYS_FUTEX_WAITV             = 5449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 5450\n\tSYS_CACHESTAT               = 5451\n\tSYS_FCHMODAT2               = 5452\n\tSYS_MAP_SHADOW_STACK        = 5453\n\tSYS_FUTEX_WAKE              = 5454\n\tSYS_FUTEX_WAIT              = 5455\n\tSYS_FUTEX_REQUEUE           = 5456\n\tSYS_STATMOUNT               = 5457\n\tSYS_LISTMOUNT               = 5458\n\tSYS_LSM_GET_SELF_ATTR       = 5459\n\tSYS_LSM_SET_SELF_ATTR       = 5460\n\tSYS_LSM_LIST_MODULES        = 5461\n\tSYS_MSEAL                   = 5462\n\tSYS_SETXATTRAT              = 5463\n\tSYS_GETXATTRAT              = 5464\n\tSYS_LISTXATTRAT             = 5465\n\tSYS_REMOVEXATTRAT           = 5466\n\tSYS_OPEN_TREE_ATTR          = 5467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mipsle/include /tmp/mipsle/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                      = 4000\n\tSYS_EXIT                         = 4001\n\tSYS_FORK                         = 4002\n\tSYS_READ                         = 4003\n\tSYS_WRITE                        = 4004\n\tSYS_OPEN                         = 4005\n\tSYS_CLOSE                        = 4006\n\tSYS_WAITPID                      = 4007\n\tSYS_CREAT                        = 4008\n\tSYS_LINK                         = 4009\n\tSYS_UNLINK                       = 4010\n\tSYS_EXECVE                       = 4011\n\tSYS_CHDIR                        = 4012\n\tSYS_TIME                         = 4013\n\tSYS_MKNOD                        = 4014\n\tSYS_CHMOD                        = 4015\n\tSYS_LCHOWN                       = 4016\n\tSYS_BREAK                        = 4017\n\tSYS_UNUSED18                     = 4018\n\tSYS_LSEEK                        = 4019\n\tSYS_GETPID                       = 4020\n\tSYS_MOUNT                        = 4021\n\tSYS_UMOUNT                       = 4022\n\tSYS_SETUID                       = 4023\n\tSYS_GETUID                       = 4024\n\tSYS_STIME                        = 4025\n\tSYS_PTRACE                       = 4026\n\tSYS_ALARM                        = 4027\n\tSYS_UNUSED28                     = 4028\n\tSYS_PAUSE                        = 4029\n\tSYS_UTIME                        = 4030\n\tSYS_STTY                         = 4031\n\tSYS_GTTY                         = 4032\n\tSYS_ACCESS                       = 4033\n\tSYS_NICE                         = 4034\n\tSYS_FTIME                        = 4035\n\tSYS_SYNC                         = 4036\n\tSYS_KILL                         = 4037\n\tSYS_RENAME                       = 4038\n\tSYS_MKDIR                        = 4039\n\tSYS_RMDIR                        = 4040\n\tSYS_DUP                          = 4041\n\tSYS_PIPE                         = 4042\n\tSYS_TIMES                        = 4043\n\tSYS_PROF                         = 4044\n\tSYS_BRK                          = 4045\n\tSYS_SETGID                       = 4046\n\tSYS_GETGID                       = 4047\n\tSYS_SIGNAL                       = 4048\n\tSYS_GETEUID                      = 4049\n\tSYS_GETEGID                      = 4050\n\tSYS_ACCT                         = 4051\n\tSYS_UMOUNT2                      = 4052\n\tSYS_LOCK                         = 4053\n\tSYS_IOCTL                        = 4054\n\tSYS_FCNTL                        = 4055\n\tSYS_MPX                          = 4056\n\tSYS_SETPGID                      = 4057\n\tSYS_ULIMIT                       = 4058\n\tSYS_UNUSED59                     = 4059\n\tSYS_UMASK                        = 4060\n\tSYS_CHROOT                       = 4061\n\tSYS_USTAT                        = 4062\n\tSYS_DUP2                         = 4063\n\tSYS_GETPPID                      = 4064\n\tSYS_GETPGRP                      = 4065\n\tSYS_SETSID                       = 4066\n\tSYS_SIGACTION                    = 4067\n\tSYS_SGETMASK                     = 4068\n\tSYS_SSETMASK                     = 4069\n\tSYS_SETREUID                     = 4070\n\tSYS_SETREGID                     = 4071\n\tSYS_SIGSUSPEND                   = 4072\n\tSYS_SIGPENDING                   = 4073\n\tSYS_SETHOSTNAME                  = 4074\n\tSYS_SETRLIMIT                    = 4075\n\tSYS_GETRLIMIT                    = 4076\n\tSYS_GETRUSAGE                    = 4077\n\tSYS_GETTIMEOFDAY                 = 4078\n\tSYS_SETTIMEOFDAY                 = 4079\n\tSYS_GETGROUPS                    = 4080\n\tSYS_SETGROUPS                    = 4081\n\tSYS_RESERVED82                   = 4082\n\tSYS_SYMLINK                      = 4083\n\tSYS_UNUSED84                     = 4084\n\tSYS_READLINK                     = 4085\n\tSYS_USELIB                       = 4086\n\tSYS_SWAPON                       = 4087\n\tSYS_REBOOT                       = 4088\n\tSYS_READDIR                      = 4089\n\tSYS_MMAP                         = 4090\n\tSYS_MUNMAP                       = 4091\n\tSYS_TRUNCATE                     = 4092\n\tSYS_FTRUNCATE                    = 4093\n\tSYS_FCHMOD                       = 4094\n\tSYS_FCHOWN                       = 4095\n\tSYS_GETPRIORITY                  = 4096\n\tSYS_SETPRIORITY                  = 4097\n\tSYS_PROFIL                       = 4098\n\tSYS_STATFS                       = 4099\n\tSYS_FSTATFS                      = 4100\n\tSYS_IOPERM                       = 4101\n\tSYS_SOCKETCALL                   = 4102\n\tSYS_SYSLOG                       = 4103\n\tSYS_SETITIMER                    = 4104\n\tSYS_GETITIMER                    = 4105\n\tSYS_STAT                         = 4106\n\tSYS_LSTAT                        = 4107\n\tSYS_FSTAT                        = 4108\n\tSYS_UNUSED109                    = 4109\n\tSYS_IOPL                         = 4110\n\tSYS_VHANGUP                      = 4111\n\tSYS_IDLE                         = 4112\n\tSYS_VM86                         = 4113\n\tSYS_WAIT4                        = 4114\n\tSYS_SWAPOFF                      = 4115\n\tSYS_SYSINFO                      = 4116\n\tSYS_IPC                          = 4117\n\tSYS_FSYNC                        = 4118\n\tSYS_SIGRETURN                    = 4119\n\tSYS_CLONE                        = 4120\n\tSYS_SETDOMAINNAME                = 4121\n\tSYS_UNAME                        = 4122\n\tSYS_MODIFY_LDT                   = 4123\n\tSYS_ADJTIMEX                     = 4124\n\tSYS_MPROTECT                     = 4125\n\tSYS_SIGPROCMASK                  = 4126\n\tSYS_CREATE_MODULE                = 4127\n\tSYS_INIT_MODULE                  = 4128\n\tSYS_DELETE_MODULE                = 4129\n\tSYS_GET_KERNEL_SYMS              = 4130\n\tSYS_QUOTACTL                     = 4131\n\tSYS_GETPGID                      = 4132\n\tSYS_FCHDIR                       = 4133\n\tSYS_BDFLUSH                      = 4134\n\tSYS_SYSFS                        = 4135\n\tSYS_PERSONALITY                  = 4136\n\tSYS_AFS_SYSCALL                  = 4137\n\tSYS_SETFSUID                     = 4138\n\tSYS_SETFSGID                     = 4139\n\tSYS__LLSEEK                      = 4140\n\tSYS_GETDENTS                     = 4141\n\tSYS__NEWSELECT                   = 4142\n\tSYS_FLOCK                        = 4143\n\tSYS_MSYNC                        = 4144\n\tSYS_READV                        = 4145\n\tSYS_WRITEV                       = 4146\n\tSYS_CACHEFLUSH                   = 4147\n\tSYS_CACHECTL                     = 4148\n\tSYS_SYSMIPS                      = 4149\n\tSYS_UNUSED150                    = 4150\n\tSYS_GETSID                       = 4151\n\tSYS_FDATASYNC                    = 4152\n\tSYS__SYSCTL                      = 4153\n\tSYS_MLOCK                        = 4154\n\tSYS_MUNLOCK                      = 4155\n\tSYS_MLOCKALL                     = 4156\n\tSYS_MUNLOCKALL                   = 4157\n\tSYS_SCHED_SETPARAM               = 4158\n\tSYS_SCHED_GETPARAM               = 4159\n\tSYS_SCHED_SETSCHEDULER           = 4160\n\tSYS_SCHED_GETSCHEDULER           = 4161\n\tSYS_SCHED_YIELD                  = 4162\n\tSYS_SCHED_GET_PRIORITY_MAX       = 4163\n\tSYS_SCHED_GET_PRIORITY_MIN       = 4164\n\tSYS_SCHED_RR_GET_INTERVAL        = 4165\n\tSYS_NANOSLEEP                    = 4166\n\tSYS_MREMAP                       = 4167\n\tSYS_ACCEPT                       = 4168\n\tSYS_BIND                         = 4169\n\tSYS_CONNECT                      = 4170\n\tSYS_GETPEERNAME                  = 4171\n\tSYS_GETSOCKNAME                  = 4172\n\tSYS_GETSOCKOPT                   = 4173\n\tSYS_LISTEN                       = 4174\n\tSYS_RECV                         = 4175\n\tSYS_RECVFROM                     = 4176\n\tSYS_RECVMSG                      = 4177\n\tSYS_SEND                         = 4178\n\tSYS_SENDMSG                      = 4179\n\tSYS_SENDTO                       = 4180\n\tSYS_SETSOCKOPT                   = 4181\n\tSYS_SHUTDOWN                     = 4182\n\tSYS_SOCKET                       = 4183\n\tSYS_SOCKETPAIR                   = 4184\n\tSYS_SETRESUID                    = 4185\n\tSYS_GETRESUID                    = 4186\n\tSYS_QUERY_MODULE                 = 4187\n\tSYS_POLL                         = 4188\n\tSYS_NFSSERVCTL                   = 4189\n\tSYS_SETRESGID                    = 4190\n\tSYS_GETRESGID                    = 4191\n\tSYS_PRCTL                        = 4192\n\tSYS_RT_SIGRETURN                 = 4193\n\tSYS_RT_SIGACTION                 = 4194\n\tSYS_RT_SIGPROCMASK               = 4195\n\tSYS_RT_SIGPENDING                = 4196\n\tSYS_RT_SIGTIMEDWAIT              = 4197\n\tSYS_RT_SIGQUEUEINFO              = 4198\n\tSYS_RT_SIGSUSPEND                = 4199\n\tSYS_PREAD64                      = 4200\n\tSYS_PWRITE64                     = 4201\n\tSYS_CHOWN                        = 4202\n\tSYS_GETCWD                       = 4203\n\tSYS_CAPGET                       = 4204\n\tSYS_CAPSET                       = 4205\n\tSYS_SIGALTSTACK                  = 4206\n\tSYS_SENDFILE                     = 4207\n\tSYS_GETPMSG                      = 4208\n\tSYS_PUTPMSG                      = 4209\n\tSYS_MMAP2                        = 4210\n\tSYS_TRUNCATE64                   = 4211\n\tSYS_FTRUNCATE64                  = 4212\n\tSYS_STAT64                       = 4213\n\tSYS_LSTAT64                      = 4214\n\tSYS_FSTAT64                      = 4215\n\tSYS_PIVOT_ROOT                   = 4216\n\tSYS_MINCORE                      = 4217\n\tSYS_MADVISE                      = 4218\n\tSYS_GETDENTS64                   = 4219\n\tSYS_FCNTL64                      = 4220\n\tSYS_RESERVED221                  = 4221\n\tSYS_GETTID                       = 4222\n\tSYS_READAHEAD                    = 4223\n\tSYS_SETXATTR                     = 4224\n\tSYS_LSETXATTR                    = 4225\n\tSYS_FSETXATTR                    = 4226\n\tSYS_GETXATTR                     = 4227\n\tSYS_LGETXATTR                    = 4228\n\tSYS_FGETXATTR                    = 4229\n\tSYS_LISTXATTR                    = 4230\n\tSYS_LLISTXATTR                   = 4231\n\tSYS_FLISTXATTR                   = 4232\n\tSYS_REMOVEXATTR                  = 4233\n\tSYS_LREMOVEXATTR                 = 4234\n\tSYS_FREMOVEXATTR                 = 4235\n\tSYS_TKILL                        = 4236\n\tSYS_SENDFILE64                   = 4237\n\tSYS_FUTEX                        = 4238\n\tSYS_SCHED_SETAFFINITY            = 4239\n\tSYS_SCHED_GETAFFINITY            = 4240\n\tSYS_IO_SETUP                     = 4241\n\tSYS_IO_DESTROY                   = 4242\n\tSYS_IO_GETEVENTS                 = 4243\n\tSYS_IO_SUBMIT                    = 4244\n\tSYS_IO_CANCEL                    = 4245\n\tSYS_EXIT_GROUP                   = 4246\n\tSYS_LOOKUP_DCOOKIE               = 4247\n\tSYS_EPOLL_CREATE                 = 4248\n\tSYS_EPOLL_CTL                    = 4249\n\tSYS_EPOLL_WAIT                   = 4250\n\tSYS_REMAP_FILE_PAGES             = 4251\n\tSYS_SET_TID_ADDRESS              = 4252\n\tSYS_RESTART_SYSCALL              = 4253\n\tSYS_FADVISE64                    = 4254\n\tSYS_STATFS64                     = 4255\n\tSYS_FSTATFS64                    = 4256\n\tSYS_TIMER_CREATE                 = 4257\n\tSYS_TIMER_SETTIME                = 4258\n\tSYS_TIMER_GETTIME                = 4259\n\tSYS_TIMER_GETOVERRUN             = 4260\n\tSYS_TIMER_DELETE                 = 4261\n\tSYS_CLOCK_SETTIME                = 4262\n\tSYS_CLOCK_GETTIME                = 4263\n\tSYS_CLOCK_GETRES                 = 4264\n\tSYS_CLOCK_NANOSLEEP              = 4265\n\tSYS_TGKILL                       = 4266\n\tSYS_UTIMES                       = 4267\n\tSYS_MBIND                        = 4268\n\tSYS_GET_MEMPOLICY                = 4269\n\tSYS_SET_MEMPOLICY                = 4270\n\tSYS_MQ_OPEN                      = 4271\n\tSYS_MQ_UNLINK                    = 4272\n\tSYS_MQ_TIMEDSEND                 = 4273\n\tSYS_MQ_TIMEDRECEIVE              = 4274\n\tSYS_MQ_NOTIFY                    = 4275\n\tSYS_MQ_GETSETATTR                = 4276\n\tSYS_VSERVER                      = 4277\n\tSYS_WAITID                       = 4278\n\tSYS_ADD_KEY                      = 4280\n\tSYS_REQUEST_KEY                  = 4281\n\tSYS_KEYCTL                       = 4282\n\tSYS_SET_THREAD_AREA              = 4283\n\tSYS_INOTIFY_INIT                 = 4284\n\tSYS_INOTIFY_ADD_WATCH            = 4285\n\tSYS_INOTIFY_RM_WATCH             = 4286\n\tSYS_MIGRATE_PAGES                = 4287\n\tSYS_OPENAT                       = 4288\n\tSYS_MKDIRAT                      = 4289\n\tSYS_MKNODAT                      = 4290\n\tSYS_FCHOWNAT                     = 4291\n\tSYS_FUTIMESAT                    = 4292\n\tSYS_FSTATAT64                    = 4293\n\tSYS_UNLINKAT                     = 4294\n\tSYS_RENAMEAT                     = 4295\n\tSYS_LINKAT                       = 4296\n\tSYS_SYMLINKAT                    = 4297\n\tSYS_READLINKAT                   = 4298\n\tSYS_FCHMODAT                     = 4299\n\tSYS_FACCESSAT                    = 4300\n\tSYS_PSELECT6                     = 4301\n\tSYS_PPOLL                        = 4302\n\tSYS_UNSHARE                      = 4303\n\tSYS_SPLICE                       = 4304\n\tSYS_SYNC_FILE_RANGE              = 4305\n\tSYS_TEE                          = 4306\n\tSYS_VMSPLICE                     = 4307\n\tSYS_MOVE_PAGES                   = 4308\n\tSYS_SET_ROBUST_LIST              = 4309\n\tSYS_GET_ROBUST_LIST              = 4310\n\tSYS_KEXEC_LOAD                   = 4311\n\tSYS_GETCPU                       = 4312\n\tSYS_EPOLL_PWAIT                  = 4313\n\tSYS_IOPRIO_SET                   = 4314\n\tSYS_IOPRIO_GET                   = 4315\n\tSYS_UTIMENSAT                    = 4316\n\tSYS_SIGNALFD                     = 4317\n\tSYS_TIMERFD                      = 4318\n\tSYS_EVENTFD                      = 4319\n\tSYS_FALLOCATE                    = 4320\n\tSYS_TIMERFD_CREATE               = 4321\n\tSYS_TIMERFD_GETTIME              = 4322\n\tSYS_TIMERFD_SETTIME              = 4323\n\tSYS_SIGNALFD4                    = 4324\n\tSYS_EVENTFD2                     = 4325\n\tSYS_EPOLL_CREATE1                = 4326\n\tSYS_DUP3                         = 4327\n\tSYS_PIPE2                        = 4328\n\tSYS_INOTIFY_INIT1                = 4329\n\tSYS_PREADV                       = 4330\n\tSYS_PWRITEV                      = 4331\n\tSYS_RT_TGSIGQUEUEINFO            = 4332\n\tSYS_PERF_EVENT_OPEN              = 4333\n\tSYS_ACCEPT4                      = 4334\n\tSYS_RECVMMSG                     = 4335\n\tSYS_FANOTIFY_INIT                = 4336\n\tSYS_FANOTIFY_MARK                = 4337\n\tSYS_PRLIMIT64                    = 4338\n\tSYS_NAME_TO_HANDLE_AT            = 4339\n\tSYS_OPEN_BY_HANDLE_AT            = 4340\n\tSYS_CLOCK_ADJTIME                = 4341\n\tSYS_SYNCFS                       = 4342\n\tSYS_SENDMMSG                     = 4343\n\tSYS_SETNS                        = 4344\n\tSYS_PROCESS_VM_READV             = 4345\n\tSYS_PROCESS_VM_WRITEV            = 4346\n\tSYS_KCMP                         = 4347\n\tSYS_FINIT_MODULE                 = 4348\n\tSYS_SCHED_SETATTR                = 4349\n\tSYS_SCHED_GETATTR                = 4350\n\tSYS_RENAMEAT2                    = 4351\n\tSYS_SECCOMP                      = 4352\n\tSYS_GETRANDOM                    = 4353\n\tSYS_MEMFD_CREATE                 = 4354\n\tSYS_BPF                          = 4355\n\tSYS_EXECVEAT                     = 4356\n\tSYS_USERFAULTFD                  = 4357\n\tSYS_MEMBARRIER                   = 4358\n\tSYS_MLOCK2                       = 4359\n\tSYS_COPY_FILE_RANGE              = 4360\n\tSYS_PREADV2                      = 4361\n\tSYS_PWRITEV2                     = 4362\n\tSYS_PKEY_MPROTECT                = 4363\n\tSYS_PKEY_ALLOC                   = 4364\n\tSYS_PKEY_FREE                    = 4365\n\tSYS_STATX                        = 4366\n\tSYS_RSEQ                         = 4367\n\tSYS_IO_PGETEVENTS                = 4368\n\tSYS_SEMGET                       = 4393\n\tSYS_SEMCTL                       = 4394\n\tSYS_SHMGET                       = 4395\n\tSYS_SHMCTL                       = 4396\n\tSYS_SHMAT                        = 4397\n\tSYS_SHMDT                        = 4398\n\tSYS_MSGGET                       = 4399\n\tSYS_MSGSND                       = 4400\n\tSYS_MSGRCV                       = 4401\n\tSYS_MSGCTL                       = 4402\n\tSYS_CLOCK_GETTIME64              = 4403\n\tSYS_CLOCK_SETTIME64              = 4404\n\tSYS_CLOCK_ADJTIME64              = 4405\n\tSYS_CLOCK_GETRES_TIME64          = 4406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 4407\n\tSYS_TIMER_GETTIME64              = 4408\n\tSYS_TIMER_SETTIME64              = 4409\n\tSYS_TIMERFD_GETTIME64            = 4410\n\tSYS_TIMERFD_SETTIME64            = 4411\n\tSYS_UTIMENSAT_TIME64             = 4412\n\tSYS_PSELECT6_TIME64              = 4413\n\tSYS_PPOLL_TIME64                 = 4414\n\tSYS_IO_PGETEVENTS_TIME64         = 4416\n\tSYS_RECVMMSG_TIME64              = 4417\n\tSYS_MQ_TIMEDSEND_TIME64          = 4418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 4419\n\tSYS_SEMTIMEDOP_TIME64            = 4420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 4421\n\tSYS_FUTEX_TIME64                 = 4422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423\n\tSYS_PIDFD_SEND_SIGNAL            = 4424\n\tSYS_IO_URING_SETUP               = 4425\n\tSYS_IO_URING_ENTER               = 4426\n\tSYS_IO_URING_REGISTER            = 4427\n\tSYS_OPEN_TREE                    = 4428\n\tSYS_MOVE_MOUNT                   = 4429\n\tSYS_FSOPEN                       = 4430\n\tSYS_FSCONFIG                     = 4431\n\tSYS_FSMOUNT                      = 4432\n\tSYS_FSPICK                       = 4433\n\tSYS_PIDFD_OPEN                   = 4434\n\tSYS_CLONE3                       = 4435\n\tSYS_CLOSE_RANGE                  = 4436\n\tSYS_OPENAT2                      = 4437\n\tSYS_PIDFD_GETFD                  = 4438\n\tSYS_FACCESSAT2                   = 4439\n\tSYS_PROCESS_MADVISE              = 4440\n\tSYS_EPOLL_PWAIT2                 = 4441\n\tSYS_MOUNT_SETATTR                = 4442\n\tSYS_QUOTACTL_FD                  = 4443\n\tSYS_LANDLOCK_CREATE_RULESET      = 4444\n\tSYS_LANDLOCK_ADD_RULE            = 4445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 4446\n\tSYS_PROCESS_MRELEASE             = 4448\n\tSYS_FUTEX_WAITV                  = 4449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 4450\n\tSYS_CACHESTAT                    = 4451\n\tSYS_FCHMODAT2                    = 4452\n\tSYS_MAP_SHADOW_STACK             = 4453\n\tSYS_FUTEX_WAKE                   = 4454\n\tSYS_FUTEX_WAIT                   = 4455\n\tSYS_FUTEX_REQUEUE                = 4456\n\tSYS_STATMOUNT                    = 4457\n\tSYS_LISTMOUNT                    = 4458\n\tSYS_LSM_GET_SELF_ATTR            = 4459\n\tSYS_LSM_SET_SELF_ATTR            = 4460\n\tSYS_LSM_LIST_MODULES             = 4461\n\tSYS_MSEAL                        = 4462\n\tSYS_SETXATTRAT                   = 4463\n\tSYS_GETXATTRAT                   = 4464\n\tSYS_LISTXATTRAT                  = 4465\n\tSYS_REMOVEXATTRAT                = 4466\n\tSYS_OPEN_TREE_ATTR               = 4467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc/include /tmp/ppc/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_WAITPID                      = 7\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_TIME                         = 13\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_BREAK                        = 17\n\tSYS_OLDSTAT                      = 18\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_UMOUNT                       = 22\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_STIME                        = 25\n\tSYS_PTRACE                       = 26\n\tSYS_ALARM                        = 27\n\tSYS_OLDFSTAT                     = 28\n\tSYS_PAUSE                        = 29\n\tSYS_UTIME                        = 30\n\tSYS_STTY                         = 31\n\tSYS_GTTY                         = 32\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_FTIME                        = 35\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_PROF                         = 44\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_SIGNAL                       = 48\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_LOCK                         = 53\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_MPX                          = 56\n\tSYS_SETPGID                      = 57\n\tSYS_ULIMIT                       = 58\n\tSYS_OLDOLDUNAME                  = 59\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SGETMASK                     = 68\n\tSYS_SSETMASK                     = 69\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRLIMIT                    = 76\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SELECT                       = 82\n\tSYS_SYMLINK                      = 83\n\tSYS_OLDLSTAT                     = 84\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_READDIR                      = 89\n\tSYS_MMAP                         = 90\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_PROFIL                       = 98\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_IOPERM                       = 101\n\tSYS_SOCKETCALL                   = 102\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_OLDUNAME                     = 109\n\tSYS_IOPL                         = 110\n\tSYS_VHANGUP                      = 111\n\tSYS_IDLE                         = 112\n\tSYS_VM86                         = 113\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_IPC                          = 117\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_MODIFY_LDT                   = 123\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_CREATE_MODULE                = 127\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_GET_KERNEL_SYMS              = 130\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_AFS_SYSCALL                  = 137\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_QUERY_MODULE                 = 166\n\tSYS_POLL                         = 167\n\tSYS_NFSSERVCTL                   = 168\n\tSYS_SETRESGID                    = 169\n\tSYS_GETRESGID                    = 170\n\tSYS_PRCTL                        = 171\n\tSYS_RT_SIGRETURN                 = 172\n\tSYS_RT_SIGACTION                 = 173\n\tSYS_RT_SIGPROCMASK               = 174\n\tSYS_RT_SIGPENDING                = 175\n\tSYS_RT_SIGTIMEDWAIT              = 176\n\tSYS_RT_SIGQUEUEINFO              = 177\n\tSYS_RT_SIGSUSPEND                = 178\n\tSYS_PREAD64                      = 179\n\tSYS_PWRITE64                     = 180\n\tSYS_CHOWN                        = 181\n\tSYS_GETCWD                       = 182\n\tSYS_CAPGET                       = 183\n\tSYS_CAPSET                       = 184\n\tSYS_SIGALTSTACK                  = 185\n\tSYS_SENDFILE                     = 186\n\tSYS_GETPMSG                      = 187\n\tSYS_PUTPMSG                      = 188\n\tSYS_VFORK                        = 189\n\tSYS_UGETRLIMIT                   = 190\n\tSYS_READAHEAD                    = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_PCICONFIG_READ               = 198\n\tSYS_PCICONFIG_WRITE              = 199\n\tSYS_PCICONFIG_IOBASE             = 200\n\tSYS_MULTIPLEXER                  = 201\n\tSYS_GETDENTS64                   = 202\n\tSYS_PIVOT_ROOT                   = 203\n\tSYS_FCNTL64                      = 204\n\tSYS_MADVISE                      = 205\n\tSYS_MINCORE                      = 206\n\tSYS_GETTID                       = 207\n\tSYS_TKILL                        = 208\n\tSYS_SETXATTR                     = 209\n\tSYS_LSETXATTR                    = 210\n\tSYS_FSETXATTR                    = 211\n\tSYS_GETXATTR                     = 212\n\tSYS_LGETXATTR                    = 213\n\tSYS_FGETXATTR                    = 214\n\tSYS_LISTXATTR                    = 215\n\tSYS_LLISTXATTR                   = 216\n\tSYS_FLISTXATTR                   = 217\n\tSYS_REMOVEXATTR                  = 218\n\tSYS_LREMOVEXATTR                 = 219\n\tSYS_FREMOVEXATTR                 = 220\n\tSYS_FUTEX                        = 221\n\tSYS_SCHED_SETAFFINITY            = 222\n\tSYS_SCHED_GETAFFINITY            = 223\n\tSYS_TUXCALL                      = 225\n\tSYS_SENDFILE64                   = 226\n\tSYS_IO_SETUP                     = 227\n\tSYS_IO_DESTROY                   = 228\n\tSYS_IO_GETEVENTS                 = 229\n\tSYS_IO_SUBMIT                    = 230\n\tSYS_IO_CANCEL                    = 231\n\tSYS_SET_TID_ADDRESS              = 232\n\tSYS_FADVISE64                    = 233\n\tSYS_EXIT_GROUP                   = 234\n\tSYS_LOOKUP_DCOOKIE               = 235\n\tSYS_EPOLL_CREATE                 = 236\n\tSYS_EPOLL_CTL                    = 237\n\tSYS_EPOLL_WAIT                   = 238\n\tSYS_REMAP_FILE_PAGES             = 239\n\tSYS_TIMER_CREATE                 = 240\n\tSYS_TIMER_SETTIME                = 241\n\tSYS_TIMER_GETTIME                = 242\n\tSYS_TIMER_GETOVERRUN             = 243\n\tSYS_TIMER_DELETE                 = 244\n\tSYS_CLOCK_SETTIME                = 245\n\tSYS_CLOCK_GETTIME                = 246\n\tSYS_CLOCK_GETRES                 = 247\n\tSYS_CLOCK_NANOSLEEP              = 248\n\tSYS_SWAPCONTEXT                  = 249\n\tSYS_TGKILL                       = 250\n\tSYS_UTIMES                       = 251\n\tSYS_STATFS64                     = 252\n\tSYS_FSTATFS64                    = 253\n\tSYS_FADVISE64_64                 = 254\n\tSYS_RTAS                         = 255\n\tSYS_SYS_DEBUG_SETCONTEXT         = 256\n\tSYS_MIGRATE_PAGES                = 258\n\tSYS_MBIND                        = 259\n\tSYS_GET_MEMPOLICY                = 260\n\tSYS_SET_MEMPOLICY                = 261\n\tSYS_MQ_OPEN                      = 262\n\tSYS_MQ_UNLINK                    = 263\n\tSYS_MQ_TIMEDSEND                 = 264\n\tSYS_MQ_TIMEDRECEIVE              = 265\n\tSYS_MQ_NOTIFY                    = 266\n\tSYS_MQ_GETSETATTR                = 267\n\tSYS_KEXEC_LOAD                   = 268\n\tSYS_ADD_KEY                      = 269\n\tSYS_REQUEST_KEY                  = 270\n\tSYS_KEYCTL                       = 271\n\tSYS_WAITID                       = 272\n\tSYS_IOPRIO_SET                   = 273\n\tSYS_IOPRIO_GET                   = 274\n\tSYS_INOTIFY_INIT                 = 275\n\tSYS_INOTIFY_ADD_WATCH            = 276\n\tSYS_INOTIFY_RM_WATCH             = 277\n\tSYS_SPU_RUN                      = 278\n\tSYS_SPU_CREATE                   = 279\n\tSYS_PSELECT6                     = 280\n\tSYS_PPOLL                        = 281\n\tSYS_UNSHARE                      = 282\n\tSYS_SPLICE                       = 283\n\tSYS_TEE                          = 284\n\tSYS_VMSPLICE                     = 285\n\tSYS_OPENAT                       = 286\n\tSYS_MKDIRAT                      = 287\n\tSYS_MKNODAT                      = 288\n\tSYS_FCHOWNAT                     = 289\n\tSYS_FUTIMESAT                    = 290\n\tSYS_FSTATAT64                    = 291\n\tSYS_UNLINKAT                     = 292\n\tSYS_RENAMEAT                     = 293\n\tSYS_LINKAT                       = 294\n\tSYS_SYMLINKAT                    = 295\n\tSYS_READLINKAT                   = 296\n\tSYS_FCHMODAT                     = 297\n\tSYS_FACCESSAT                    = 298\n\tSYS_GET_ROBUST_LIST              = 299\n\tSYS_SET_ROBUST_LIST              = 300\n\tSYS_MOVE_PAGES                   = 301\n\tSYS_GETCPU                       = 302\n\tSYS_EPOLL_PWAIT                  = 303\n\tSYS_UTIMENSAT                    = 304\n\tSYS_SIGNALFD                     = 305\n\tSYS_TIMERFD_CREATE               = 306\n\tSYS_EVENTFD                      = 307\n\tSYS_SYNC_FILE_RANGE2             = 308\n\tSYS_FALLOCATE                    = 309\n\tSYS_SUBPAGE_PROT                 = 310\n\tSYS_TIMERFD_SETTIME              = 311\n\tSYS_TIMERFD_GETTIME              = 312\n\tSYS_SIGNALFD4                    = 313\n\tSYS_EVENTFD2                     = 314\n\tSYS_EPOLL_CREATE1                = 315\n\tSYS_DUP3                         = 316\n\tSYS_PIPE2                        = 317\n\tSYS_INOTIFY_INIT1                = 318\n\tSYS_PERF_EVENT_OPEN              = 319\n\tSYS_PREADV                       = 320\n\tSYS_PWRITEV                      = 321\n\tSYS_RT_TGSIGQUEUEINFO            = 322\n\tSYS_FANOTIFY_INIT                = 323\n\tSYS_FANOTIFY_MARK                = 324\n\tSYS_PRLIMIT64                    = 325\n\tSYS_SOCKET                       = 326\n\tSYS_BIND                         = 327\n\tSYS_CONNECT                      = 328\n\tSYS_LISTEN                       = 329\n\tSYS_ACCEPT                       = 330\n\tSYS_GETSOCKNAME                  = 331\n\tSYS_GETPEERNAME                  = 332\n\tSYS_SOCKETPAIR                   = 333\n\tSYS_SEND                         = 334\n\tSYS_SENDTO                       = 335\n\tSYS_RECV                         = 336\n\tSYS_RECVFROM                     = 337\n\tSYS_SHUTDOWN                     = 338\n\tSYS_SETSOCKOPT                   = 339\n\tSYS_GETSOCKOPT                   = 340\n\tSYS_SENDMSG                      = 341\n\tSYS_RECVMSG                      = 342\n\tSYS_RECVMMSG                     = 343\n\tSYS_ACCEPT4                      = 344\n\tSYS_NAME_TO_HANDLE_AT            = 345\n\tSYS_OPEN_BY_HANDLE_AT            = 346\n\tSYS_CLOCK_ADJTIME                = 347\n\tSYS_SYNCFS                       = 348\n\tSYS_SENDMMSG                     = 349\n\tSYS_SETNS                        = 350\n\tSYS_PROCESS_VM_READV             = 351\n\tSYS_PROCESS_VM_WRITEV            = 352\n\tSYS_FINIT_MODULE                 = 353\n\tSYS_KCMP                         = 354\n\tSYS_SCHED_SETATTR                = 355\n\tSYS_SCHED_GETATTR                = 356\n\tSYS_RENAMEAT2                    = 357\n\tSYS_SECCOMP                      = 358\n\tSYS_GETRANDOM                    = 359\n\tSYS_MEMFD_CREATE                 = 360\n\tSYS_BPF                          = 361\n\tSYS_EXECVEAT                     = 362\n\tSYS_SWITCH_ENDIAN                = 363\n\tSYS_USERFAULTFD                  = 364\n\tSYS_MEMBARRIER                   = 365\n\tSYS_MLOCK2                       = 378\n\tSYS_COPY_FILE_RANGE              = 379\n\tSYS_PREADV2                      = 380\n\tSYS_PWRITEV2                     = 381\n\tSYS_KEXEC_FILE_LOAD              = 382\n\tSYS_STATX                        = 383\n\tSYS_PKEY_ALLOC                   = 384\n\tSYS_PKEY_FREE                    = 385\n\tSYS_PKEY_MPROTECT                = 386\n\tSYS_RSEQ                         = 387\n\tSYS_IO_PGETEVENTS                = 388\n\tSYS_SEMGET                       = 393\n\tSYS_SEMCTL                       = 394\n\tSYS_SHMGET                       = 395\n\tSYS_SHMCTL                       = 396\n\tSYS_SHMAT                        = 397\n\tSYS_SHMDT                        = 398\n\tSYS_MSGGET                       = 399\n\tSYS_MSGSND                       = 400\n\tSYS_MSGRCV                       = 401\n\tSYS_MSGCTL                       = 402\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n\tSYS_MAP_SHADOW_STACK             = 453\n\tSYS_FUTEX_WAKE                   = 454\n\tSYS_FUTEX_WAIT                   = 455\n\tSYS_FUTEX_REQUEUE                = 456\n\tSYS_STATMOUNT                    = 457\n\tSYS_LISTMOUNT                    = 458\n\tSYS_LSM_GET_SELF_ATTR            = 459\n\tSYS_LSM_SET_SELF_ATTR            = 460\n\tSYS_LSM_LIST_MODULES             = 461\n\tSYS_MSEAL                        = 462\n\tSYS_SETXATTRAT                   = 463\n\tSYS_GETXATTRAT                   = 464\n\tSYS_LISTXATTRAT                  = 465\n\tSYS_REMOVEXATTRAT                = 466\n\tSYS_OPEN_TREE_ATTR               = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64/include /tmp/ppc64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAITPID                 = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_TIME                    = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BREAK                   = 17\n\tSYS_OLDSTAT                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_STIME                   = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_OLDFSTAT                = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_STTY                    = 31\n\tSYS_GTTY                    = 32\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_FTIME                   = 35\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_PROF                    = 44\n\tSYS_BRK                     = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_LOCK                    = 53\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_MPX                     = 56\n\tSYS_SETPGID                 = 57\n\tSYS_ULIMIT                  = 58\n\tSYS_OLDOLDUNAME             = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SGETMASK                = 68\n\tSYS_SSETMASK                = 69\n\tSYS_SETREUID                = 70\n\tSYS_SETREGID                = 71\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRLIMIT               = 76\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_GETGROUPS               = 80\n\tSYS_SETGROUPS               = 81\n\tSYS_SELECT                  = 82\n\tSYS_SYMLINK                 = 83\n\tSYS_OLDLSTAT                = 84\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_FCHOWN                  = 95\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_PROFIL                  = 98\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_IOPERM                  = 101\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_OLDUNAME                = 109\n\tSYS_IOPL                    = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_VM86                    = 113\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_MODIFY_LDT              = 123\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_SETFSUID                = 138\n\tSYS_SETFSGID                = 139\n\tSYS__LLSEEK                 = 140\n\tSYS_GETDENTS                = 141\n\tSYS__NEWSELECT              = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_SETRESUID               = 164\n\tSYS_GETRESUID               = 165\n\tSYS_QUERY_MODULE            = 166\n\tSYS_POLL                    = 167\n\tSYS_NFSSERVCTL              = 168\n\tSYS_SETRESGID               = 169\n\tSYS_GETRESGID               = 170\n\tSYS_PRCTL                   = 171\n\tSYS_RT_SIGRETURN            = 172\n\tSYS_RT_SIGACTION            = 173\n\tSYS_RT_SIGPROCMASK          = 174\n\tSYS_RT_SIGPENDING           = 175\n\tSYS_RT_SIGTIMEDWAIT         = 176\n\tSYS_RT_SIGQUEUEINFO         = 177\n\tSYS_RT_SIGSUSPEND           = 178\n\tSYS_PREAD64                 = 179\n\tSYS_PWRITE64                = 180\n\tSYS_CHOWN                   = 181\n\tSYS_GETCWD                  = 182\n\tSYS_CAPGET                  = 183\n\tSYS_CAPSET                  = 184\n\tSYS_SIGALTSTACK             = 185\n\tSYS_SENDFILE                = 186\n\tSYS_GETPMSG                 = 187\n\tSYS_PUTPMSG                 = 188\n\tSYS_VFORK                   = 189\n\tSYS_UGETRLIMIT              = 190\n\tSYS_READAHEAD               = 191\n\tSYS_PCICONFIG_READ          = 198\n\tSYS_PCICONFIG_WRITE         = 199\n\tSYS_PCICONFIG_IOBASE        = 200\n\tSYS_MULTIPLEXER             = 201\n\tSYS_GETDENTS64              = 202\n\tSYS_PIVOT_ROOT              = 203\n\tSYS_MADVISE                 = 205\n\tSYS_MINCORE                 = 206\n\tSYS_GETTID                  = 207\n\tSYS_TKILL                   = 208\n\tSYS_SETXATTR                = 209\n\tSYS_LSETXATTR               = 210\n\tSYS_FSETXATTR               = 211\n\tSYS_GETXATTR                = 212\n\tSYS_LGETXATTR               = 213\n\tSYS_FGETXATTR               = 214\n\tSYS_LISTXATTR               = 215\n\tSYS_LLISTXATTR              = 216\n\tSYS_FLISTXATTR              = 217\n\tSYS_REMOVEXATTR             = 218\n\tSYS_LREMOVEXATTR            = 219\n\tSYS_FREMOVEXATTR            = 220\n\tSYS_FUTEX                   = 221\n\tSYS_SCHED_SETAFFINITY       = 222\n\tSYS_SCHED_GETAFFINITY       = 223\n\tSYS_TUXCALL                 = 225\n\tSYS_IO_SETUP                = 227\n\tSYS_IO_DESTROY              = 228\n\tSYS_IO_GETEVENTS            = 229\n\tSYS_IO_SUBMIT               = 230\n\tSYS_IO_CANCEL               = 231\n\tSYS_SET_TID_ADDRESS         = 232\n\tSYS_FADVISE64               = 233\n\tSYS_EXIT_GROUP              = 234\n\tSYS_LOOKUP_DCOOKIE          = 235\n\tSYS_EPOLL_CREATE            = 236\n\tSYS_EPOLL_CTL               = 237\n\tSYS_EPOLL_WAIT              = 238\n\tSYS_REMAP_FILE_PAGES        = 239\n\tSYS_TIMER_CREATE            = 240\n\tSYS_TIMER_SETTIME           = 241\n\tSYS_TIMER_GETTIME           = 242\n\tSYS_TIMER_GETOVERRUN        = 243\n\tSYS_TIMER_DELETE            = 244\n\tSYS_CLOCK_SETTIME           = 245\n\tSYS_CLOCK_GETTIME           = 246\n\tSYS_CLOCK_GETRES            = 247\n\tSYS_CLOCK_NANOSLEEP         = 248\n\tSYS_SWAPCONTEXT             = 249\n\tSYS_TGKILL                  = 250\n\tSYS_UTIMES                  = 251\n\tSYS_STATFS64                = 252\n\tSYS_FSTATFS64               = 253\n\tSYS_RTAS                    = 255\n\tSYS_SYS_DEBUG_SETCONTEXT    = 256\n\tSYS_MIGRATE_PAGES           = 258\n\tSYS_MBIND                   = 259\n\tSYS_GET_MEMPOLICY           = 260\n\tSYS_SET_MEMPOLICY           = 261\n\tSYS_MQ_OPEN                 = 262\n\tSYS_MQ_UNLINK               = 263\n\tSYS_MQ_TIMEDSEND            = 264\n\tSYS_MQ_TIMEDRECEIVE         = 265\n\tSYS_MQ_NOTIFY               = 266\n\tSYS_MQ_GETSETATTR           = 267\n\tSYS_KEXEC_LOAD              = 268\n\tSYS_ADD_KEY                 = 269\n\tSYS_REQUEST_KEY             = 270\n\tSYS_KEYCTL                  = 271\n\tSYS_WAITID                  = 272\n\tSYS_IOPRIO_SET              = 273\n\tSYS_IOPRIO_GET              = 274\n\tSYS_INOTIFY_INIT            = 275\n\tSYS_INOTIFY_ADD_WATCH       = 276\n\tSYS_INOTIFY_RM_WATCH        = 277\n\tSYS_SPU_RUN                 = 278\n\tSYS_SPU_CREATE              = 279\n\tSYS_PSELECT6                = 280\n\tSYS_PPOLL                   = 281\n\tSYS_UNSHARE                 = 282\n\tSYS_SPLICE                  = 283\n\tSYS_TEE                     = 284\n\tSYS_VMSPLICE                = 285\n\tSYS_OPENAT                  = 286\n\tSYS_MKDIRAT                 = 287\n\tSYS_MKNODAT                 = 288\n\tSYS_FCHOWNAT                = 289\n\tSYS_FUTIMESAT               = 290\n\tSYS_NEWFSTATAT              = 291\n\tSYS_UNLINKAT                = 292\n\tSYS_RENAMEAT                = 293\n\tSYS_LINKAT                  = 294\n\tSYS_SYMLINKAT               = 295\n\tSYS_READLINKAT              = 296\n\tSYS_FCHMODAT                = 297\n\tSYS_FACCESSAT               = 298\n\tSYS_GET_ROBUST_LIST         = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_MOVE_PAGES              = 301\n\tSYS_GETCPU                  = 302\n\tSYS_EPOLL_PWAIT             = 303\n\tSYS_UTIMENSAT               = 304\n\tSYS_SIGNALFD                = 305\n\tSYS_TIMERFD_CREATE          = 306\n\tSYS_EVENTFD                 = 307\n\tSYS_SYNC_FILE_RANGE2        = 308\n\tSYS_FALLOCATE               = 309\n\tSYS_SUBPAGE_PROT            = 310\n\tSYS_TIMERFD_SETTIME         = 311\n\tSYS_TIMERFD_GETTIME         = 312\n\tSYS_SIGNALFD4               = 313\n\tSYS_EVENTFD2                = 314\n\tSYS_EPOLL_CREATE1           = 315\n\tSYS_DUP3                    = 316\n\tSYS_PIPE2                   = 317\n\tSYS_INOTIFY_INIT1           = 318\n\tSYS_PERF_EVENT_OPEN         = 319\n\tSYS_PREADV                  = 320\n\tSYS_PWRITEV                 = 321\n\tSYS_RT_TGSIGQUEUEINFO       = 322\n\tSYS_FANOTIFY_INIT           = 323\n\tSYS_FANOTIFY_MARK           = 324\n\tSYS_PRLIMIT64               = 325\n\tSYS_SOCKET                  = 326\n\tSYS_BIND                    = 327\n\tSYS_CONNECT                 = 328\n\tSYS_LISTEN                  = 329\n\tSYS_ACCEPT                  = 330\n\tSYS_GETSOCKNAME             = 331\n\tSYS_GETPEERNAME             = 332\n\tSYS_SOCKETPAIR              = 333\n\tSYS_SEND                    = 334\n\tSYS_SENDTO                  = 335\n\tSYS_RECV                    = 336\n\tSYS_RECVFROM                = 337\n\tSYS_SHUTDOWN                = 338\n\tSYS_SETSOCKOPT              = 339\n\tSYS_GETSOCKOPT              = 340\n\tSYS_SENDMSG                 = 341\n\tSYS_RECVMSG                 = 342\n\tSYS_RECVMMSG                = 343\n\tSYS_ACCEPT4                 = 344\n\tSYS_NAME_TO_HANDLE_AT       = 345\n\tSYS_OPEN_BY_HANDLE_AT       = 346\n\tSYS_CLOCK_ADJTIME           = 347\n\tSYS_SYNCFS                  = 348\n\tSYS_SENDMMSG                = 349\n\tSYS_SETNS                   = 350\n\tSYS_PROCESS_VM_READV        = 351\n\tSYS_PROCESS_VM_WRITEV       = 352\n\tSYS_FINIT_MODULE            = 353\n\tSYS_KCMP                    = 354\n\tSYS_SCHED_SETATTR           = 355\n\tSYS_SCHED_GETATTR           = 356\n\tSYS_RENAMEAT2               = 357\n\tSYS_SECCOMP                 = 358\n\tSYS_GETRANDOM               = 359\n\tSYS_MEMFD_CREATE            = 360\n\tSYS_BPF                     = 361\n\tSYS_EXECVEAT                = 362\n\tSYS_SWITCH_ENDIAN           = 363\n\tSYS_USERFAULTFD             = 364\n\tSYS_MEMBARRIER              = 365\n\tSYS_MLOCK2                  = 378\n\tSYS_COPY_FILE_RANGE         = 379\n\tSYS_PREADV2                 = 380\n\tSYS_PWRITEV2                = 381\n\tSYS_KEXEC_FILE_LOAD         = 382\n\tSYS_STATX                   = 383\n\tSYS_PKEY_ALLOC              = 384\n\tSYS_PKEY_FREE               = 385\n\tSYS_PKEY_MPROTECT           = 386\n\tSYS_RSEQ                    = 387\n\tSYS_IO_PGETEVENTS           = 388\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64le/include /tmp/ppc64le/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAITPID                 = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_TIME                    = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BREAK                   = 17\n\tSYS_OLDSTAT                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_STIME                   = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_OLDFSTAT                = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_STTY                    = 31\n\tSYS_GTTY                    = 32\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_FTIME                   = 35\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_PROF                    = 44\n\tSYS_BRK                     = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_LOCK                    = 53\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_MPX                     = 56\n\tSYS_SETPGID                 = 57\n\tSYS_ULIMIT                  = 58\n\tSYS_OLDOLDUNAME             = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SGETMASK                = 68\n\tSYS_SSETMASK                = 69\n\tSYS_SETREUID                = 70\n\tSYS_SETREGID                = 71\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRLIMIT               = 76\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_GETGROUPS               = 80\n\tSYS_SETGROUPS               = 81\n\tSYS_SELECT                  = 82\n\tSYS_SYMLINK                 = 83\n\tSYS_OLDLSTAT                = 84\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_FCHOWN                  = 95\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_PROFIL                  = 98\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_IOPERM                  = 101\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_OLDUNAME                = 109\n\tSYS_IOPL                    = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_VM86                    = 113\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_MODIFY_LDT              = 123\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_SETFSUID                = 138\n\tSYS_SETFSGID                = 139\n\tSYS__LLSEEK                 = 140\n\tSYS_GETDENTS                = 141\n\tSYS__NEWSELECT              = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_SETRESUID               = 164\n\tSYS_GETRESUID               = 165\n\tSYS_QUERY_MODULE            = 166\n\tSYS_POLL                    = 167\n\tSYS_NFSSERVCTL              = 168\n\tSYS_SETRESGID               = 169\n\tSYS_GETRESGID               = 170\n\tSYS_PRCTL                   = 171\n\tSYS_RT_SIGRETURN            = 172\n\tSYS_RT_SIGACTION            = 173\n\tSYS_RT_SIGPROCMASK          = 174\n\tSYS_RT_SIGPENDING           = 175\n\tSYS_RT_SIGTIMEDWAIT         = 176\n\tSYS_RT_SIGQUEUEINFO         = 177\n\tSYS_RT_SIGSUSPEND           = 178\n\tSYS_PREAD64                 = 179\n\tSYS_PWRITE64                = 180\n\tSYS_CHOWN                   = 181\n\tSYS_GETCWD                  = 182\n\tSYS_CAPGET                  = 183\n\tSYS_CAPSET                  = 184\n\tSYS_SIGALTSTACK             = 185\n\tSYS_SENDFILE                = 186\n\tSYS_GETPMSG                 = 187\n\tSYS_PUTPMSG                 = 188\n\tSYS_VFORK                   = 189\n\tSYS_UGETRLIMIT              = 190\n\tSYS_READAHEAD               = 191\n\tSYS_PCICONFIG_READ          = 198\n\tSYS_PCICONFIG_WRITE         = 199\n\tSYS_PCICONFIG_IOBASE        = 200\n\tSYS_MULTIPLEXER             = 201\n\tSYS_GETDENTS64              = 202\n\tSYS_PIVOT_ROOT              = 203\n\tSYS_MADVISE                 = 205\n\tSYS_MINCORE                 = 206\n\tSYS_GETTID                  = 207\n\tSYS_TKILL                   = 208\n\tSYS_SETXATTR                = 209\n\tSYS_LSETXATTR               = 210\n\tSYS_FSETXATTR               = 211\n\tSYS_GETXATTR                = 212\n\tSYS_LGETXATTR               = 213\n\tSYS_FGETXATTR               = 214\n\tSYS_LISTXATTR               = 215\n\tSYS_LLISTXATTR              = 216\n\tSYS_FLISTXATTR              = 217\n\tSYS_REMOVEXATTR             = 218\n\tSYS_LREMOVEXATTR            = 219\n\tSYS_FREMOVEXATTR            = 220\n\tSYS_FUTEX                   = 221\n\tSYS_SCHED_SETAFFINITY       = 222\n\tSYS_SCHED_GETAFFINITY       = 223\n\tSYS_TUXCALL                 = 225\n\tSYS_IO_SETUP                = 227\n\tSYS_IO_DESTROY              = 228\n\tSYS_IO_GETEVENTS            = 229\n\tSYS_IO_SUBMIT               = 230\n\tSYS_IO_CANCEL               = 231\n\tSYS_SET_TID_ADDRESS         = 232\n\tSYS_FADVISE64               = 233\n\tSYS_EXIT_GROUP              = 234\n\tSYS_LOOKUP_DCOOKIE          = 235\n\tSYS_EPOLL_CREATE            = 236\n\tSYS_EPOLL_CTL               = 237\n\tSYS_EPOLL_WAIT              = 238\n\tSYS_REMAP_FILE_PAGES        = 239\n\tSYS_TIMER_CREATE            = 240\n\tSYS_TIMER_SETTIME           = 241\n\tSYS_TIMER_GETTIME           = 242\n\tSYS_TIMER_GETOVERRUN        = 243\n\tSYS_TIMER_DELETE            = 244\n\tSYS_CLOCK_SETTIME           = 245\n\tSYS_CLOCK_GETTIME           = 246\n\tSYS_CLOCK_GETRES            = 247\n\tSYS_CLOCK_NANOSLEEP         = 248\n\tSYS_SWAPCONTEXT             = 249\n\tSYS_TGKILL                  = 250\n\tSYS_UTIMES                  = 251\n\tSYS_STATFS64                = 252\n\tSYS_FSTATFS64               = 253\n\tSYS_RTAS                    = 255\n\tSYS_SYS_DEBUG_SETCONTEXT    = 256\n\tSYS_MIGRATE_PAGES           = 258\n\tSYS_MBIND                   = 259\n\tSYS_GET_MEMPOLICY           = 260\n\tSYS_SET_MEMPOLICY           = 261\n\tSYS_MQ_OPEN                 = 262\n\tSYS_MQ_UNLINK               = 263\n\tSYS_MQ_TIMEDSEND            = 264\n\tSYS_MQ_TIMEDRECEIVE         = 265\n\tSYS_MQ_NOTIFY               = 266\n\tSYS_MQ_GETSETATTR           = 267\n\tSYS_KEXEC_LOAD              = 268\n\tSYS_ADD_KEY                 = 269\n\tSYS_REQUEST_KEY             = 270\n\tSYS_KEYCTL                  = 271\n\tSYS_WAITID                  = 272\n\tSYS_IOPRIO_SET              = 273\n\tSYS_IOPRIO_GET              = 274\n\tSYS_INOTIFY_INIT            = 275\n\tSYS_INOTIFY_ADD_WATCH       = 276\n\tSYS_INOTIFY_RM_WATCH        = 277\n\tSYS_SPU_RUN                 = 278\n\tSYS_SPU_CREATE              = 279\n\tSYS_PSELECT6                = 280\n\tSYS_PPOLL                   = 281\n\tSYS_UNSHARE                 = 282\n\tSYS_SPLICE                  = 283\n\tSYS_TEE                     = 284\n\tSYS_VMSPLICE                = 285\n\tSYS_OPENAT                  = 286\n\tSYS_MKDIRAT                 = 287\n\tSYS_MKNODAT                 = 288\n\tSYS_FCHOWNAT                = 289\n\tSYS_FUTIMESAT               = 290\n\tSYS_NEWFSTATAT              = 291\n\tSYS_UNLINKAT                = 292\n\tSYS_RENAMEAT                = 293\n\tSYS_LINKAT                  = 294\n\tSYS_SYMLINKAT               = 295\n\tSYS_READLINKAT              = 296\n\tSYS_FCHMODAT                = 297\n\tSYS_FACCESSAT               = 298\n\tSYS_GET_ROBUST_LIST         = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_MOVE_PAGES              = 301\n\tSYS_GETCPU                  = 302\n\tSYS_EPOLL_PWAIT             = 303\n\tSYS_UTIMENSAT               = 304\n\tSYS_SIGNALFD                = 305\n\tSYS_TIMERFD_CREATE          = 306\n\tSYS_EVENTFD                 = 307\n\tSYS_SYNC_FILE_RANGE2        = 308\n\tSYS_FALLOCATE               = 309\n\tSYS_SUBPAGE_PROT            = 310\n\tSYS_TIMERFD_SETTIME         = 311\n\tSYS_TIMERFD_GETTIME         = 312\n\tSYS_SIGNALFD4               = 313\n\tSYS_EVENTFD2                = 314\n\tSYS_EPOLL_CREATE1           = 315\n\tSYS_DUP3                    = 316\n\tSYS_PIPE2                   = 317\n\tSYS_INOTIFY_INIT1           = 318\n\tSYS_PERF_EVENT_OPEN         = 319\n\tSYS_PREADV                  = 320\n\tSYS_PWRITEV                 = 321\n\tSYS_RT_TGSIGQUEUEINFO       = 322\n\tSYS_FANOTIFY_INIT           = 323\n\tSYS_FANOTIFY_MARK           = 324\n\tSYS_PRLIMIT64               = 325\n\tSYS_SOCKET                  = 326\n\tSYS_BIND                    = 327\n\tSYS_CONNECT                 = 328\n\tSYS_LISTEN                  = 329\n\tSYS_ACCEPT                  = 330\n\tSYS_GETSOCKNAME             = 331\n\tSYS_GETPEERNAME             = 332\n\tSYS_SOCKETPAIR              = 333\n\tSYS_SEND                    = 334\n\tSYS_SENDTO                  = 335\n\tSYS_RECV                    = 336\n\tSYS_RECVFROM                = 337\n\tSYS_SHUTDOWN                = 338\n\tSYS_SETSOCKOPT              = 339\n\tSYS_GETSOCKOPT              = 340\n\tSYS_SENDMSG                 = 341\n\tSYS_RECVMSG                 = 342\n\tSYS_RECVMMSG                = 343\n\tSYS_ACCEPT4                 = 344\n\tSYS_NAME_TO_HANDLE_AT       = 345\n\tSYS_OPEN_BY_HANDLE_AT       = 346\n\tSYS_CLOCK_ADJTIME           = 347\n\tSYS_SYNCFS                  = 348\n\tSYS_SENDMMSG                = 349\n\tSYS_SETNS                   = 350\n\tSYS_PROCESS_VM_READV        = 351\n\tSYS_PROCESS_VM_WRITEV       = 352\n\tSYS_FINIT_MODULE            = 353\n\tSYS_KCMP                    = 354\n\tSYS_SCHED_SETATTR           = 355\n\tSYS_SCHED_GETATTR           = 356\n\tSYS_RENAMEAT2               = 357\n\tSYS_SECCOMP                 = 358\n\tSYS_GETRANDOM               = 359\n\tSYS_MEMFD_CREATE            = 360\n\tSYS_BPF                     = 361\n\tSYS_EXECVEAT                = 362\n\tSYS_SWITCH_ENDIAN           = 363\n\tSYS_USERFAULTFD             = 364\n\tSYS_MEMBARRIER              = 365\n\tSYS_MLOCK2                  = 378\n\tSYS_COPY_FILE_RANGE         = 379\n\tSYS_PREADV2                 = 380\n\tSYS_PWRITEV2                = 381\n\tSYS_KEXEC_FILE_LOAD         = 382\n\tSYS_STATX                   = 383\n\tSYS_PKEY_ALLOC              = 384\n\tSYS_PKEY_FREE               = 385\n\tSYS_PKEY_MPROTECT           = 386\n\tSYS_RSEQ                    = 387\n\tSYS_IO_PGETEVENTS           = 388\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/riscv64/include /tmp/riscv64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_NEWFSTATAT              = 79\n\tSYS_FSTAT                   = 80\n\tSYS_SYNC                    = 81\n\tSYS_FSYNC                   = 82\n\tSYS_FDATASYNC               = 83\n\tSYS_SYNC_FILE_RANGE         = 84\n\tSYS_TIMERFD_CREATE          = 85\n\tSYS_TIMERFD_SETTIME         = 86\n\tSYS_TIMERFD_GETTIME         = 87\n\tSYS_UTIMENSAT               = 88\n\tSYS_ACCT                    = 89\n\tSYS_CAPGET                  = 90\n\tSYS_CAPSET                  = 91\n\tSYS_PERSONALITY             = 92\n\tSYS_EXIT                    = 93\n\tSYS_EXIT_GROUP              = 94\n\tSYS_WAITID                  = 95\n\tSYS_SET_TID_ADDRESS         = 96\n\tSYS_UNSHARE                 = 97\n\tSYS_FUTEX                   = 98\n\tSYS_SET_ROBUST_LIST         = 99\n\tSYS_GET_ROBUST_LIST         = 100\n\tSYS_NANOSLEEP               = 101\n\tSYS_GETITIMER               = 102\n\tSYS_SETITIMER               = 103\n\tSYS_KEXEC_LOAD              = 104\n\tSYS_INIT_MODULE             = 105\n\tSYS_DELETE_MODULE           = 106\n\tSYS_TIMER_CREATE            = 107\n\tSYS_TIMER_GETTIME           = 108\n\tSYS_TIMER_GETOVERRUN        = 109\n\tSYS_TIMER_SETTIME           = 110\n\tSYS_TIMER_DELETE            = 111\n\tSYS_CLOCK_SETTIME           = 112\n\tSYS_CLOCK_GETTIME           = 113\n\tSYS_CLOCK_GETRES            = 114\n\tSYS_CLOCK_NANOSLEEP         = 115\n\tSYS_SYSLOG                  = 116\n\tSYS_PTRACE                  = 117\n\tSYS_SCHED_SETPARAM          = 118\n\tSYS_SCHED_SETSCHEDULER      = 119\n\tSYS_SCHED_GETSCHEDULER      = 120\n\tSYS_SCHED_GETPARAM          = 121\n\tSYS_SCHED_SETAFFINITY       = 122\n\tSYS_SCHED_GETAFFINITY       = 123\n\tSYS_SCHED_YIELD             = 124\n\tSYS_SCHED_GET_PRIORITY_MAX  = 125\n\tSYS_SCHED_GET_PRIORITY_MIN  = 126\n\tSYS_SCHED_RR_GET_INTERVAL   = 127\n\tSYS_RESTART_SYSCALL         = 128\n\tSYS_KILL                    = 129\n\tSYS_TKILL                   = 130\n\tSYS_TGKILL                  = 131\n\tSYS_SIGALTSTACK             = 132\n\tSYS_RT_SIGSUSPEND           = 133\n\tSYS_RT_SIGACTION            = 134\n\tSYS_RT_SIGPROCMASK          = 135\n\tSYS_RT_SIGPENDING           = 136\n\tSYS_RT_SIGTIMEDWAIT         = 137\n\tSYS_RT_SIGQUEUEINFO         = 138\n\tSYS_RT_SIGRETURN            = 139\n\tSYS_SETPRIORITY             = 140\n\tSYS_GETPRIORITY             = 141\n\tSYS_REBOOT                  = 142\n\tSYS_SETREGID                = 143\n\tSYS_SETGID                  = 144\n\tSYS_SETREUID                = 145\n\tSYS_SETUID                  = 146\n\tSYS_SETRESUID               = 147\n\tSYS_GETRESUID               = 148\n\tSYS_SETRESGID               = 149\n\tSYS_GETRESGID               = 150\n\tSYS_SETFSUID                = 151\n\tSYS_SETFSGID                = 152\n\tSYS_TIMES                   = 153\n\tSYS_SETPGID                 = 154\n\tSYS_GETPGID                 = 155\n\tSYS_GETSID                  = 156\n\tSYS_SETSID                  = 157\n\tSYS_GETGROUPS               = 158\n\tSYS_SETGROUPS               = 159\n\tSYS_UNAME                   = 160\n\tSYS_SETHOSTNAME             = 161\n\tSYS_SETDOMAINNAME           = 162\n\tSYS_GETRLIMIT               = 163\n\tSYS_SETRLIMIT               = 164\n\tSYS_GETRUSAGE               = 165\n\tSYS_UMASK                   = 166\n\tSYS_PRCTL                   = 167\n\tSYS_GETCPU                  = 168\n\tSYS_GETTIMEOFDAY            = 169\n\tSYS_SETTIMEOFDAY            = 170\n\tSYS_ADJTIMEX                = 171\n\tSYS_GETPID                  = 172\n\tSYS_GETPPID                 = 173\n\tSYS_GETUID                  = 174\n\tSYS_GETEUID                 = 175\n\tSYS_GETGID                  = 176\n\tSYS_GETEGID                 = 177\n\tSYS_GETTID                  = 178\n\tSYS_SYSINFO                 = 179\n\tSYS_MQ_OPEN                 = 180\n\tSYS_MQ_UNLINK               = 181\n\tSYS_MQ_TIMEDSEND            = 182\n\tSYS_MQ_TIMEDRECEIVE         = 183\n\tSYS_MQ_NOTIFY               = 184\n\tSYS_MQ_GETSETATTR           = 185\n\tSYS_MSGGET                  = 186\n\tSYS_MSGCTL                  = 187\n\tSYS_MSGRCV                  = 188\n\tSYS_MSGSND                  = 189\n\tSYS_SEMGET                  = 190\n\tSYS_SEMCTL                  = 191\n\tSYS_SEMTIMEDOP              = 192\n\tSYS_SEMOP                   = 193\n\tSYS_SHMGET                  = 194\n\tSYS_SHMCTL                  = 195\n\tSYS_SHMAT                   = 196\n\tSYS_SHMDT                   = 197\n\tSYS_SOCKET                  = 198\n\tSYS_SOCKETPAIR              = 199\n\tSYS_BIND                    = 200\n\tSYS_LISTEN                  = 201\n\tSYS_ACCEPT                  = 202\n\tSYS_CONNECT                 = 203\n\tSYS_GETSOCKNAME             = 204\n\tSYS_GETPEERNAME             = 205\n\tSYS_SENDTO                  = 206\n\tSYS_RECVFROM                = 207\n\tSYS_SETSOCKOPT              = 208\n\tSYS_GETSOCKOPT              = 209\n\tSYS_SHUTDOWN                = 210\n\tSYS_SENDMSG                 = 211\n\tSYS_RECVMSG                 = 212\n\tSYS_READAHEAD               = 213\n\tSYS_BRK                     = 214\n\tSYS_MUNMAP                  = 215\n\tSYS_MREMAP                  = 216\n\tSYS_ADD_KEY                 = 217\n\tSYS_REQUEST_KEY             = 218\n\tSYS_KEYCTL                  = 219\n\tSYS_CLONE                   = 220\n\tSYS_EXECVE                  = 221\n\tSYS_MMAP                    = 222\n\tSYS_FADVISE64               = 223\n\tSYS_SWAPON                  = 224\n\tSYS_SWAPOFF                 = 225\n\tSYS_MPROTECT                = 226\n\tSYS_MSYNC                   = 227\n\tSYS_MLOCK                   = 228\n\tSYS_MUNLOCK                 = 229\n\tSYS_MLOCKALL                = 230\n\tSYS_MUNLOCKALL              = 231\n\tSYS_MINCORE                 = 232\n\tSYS_MADVISE                 = 233\n\tSYS_REMAP_FILE_PAGES        = 234\n\tSYS_MBIND                   = 235\n\tSYS_GET_MEMPOLICY           = 236\n\tSYS_SET_MEMPOLICY           = 237\n\tSYS_MIGRATE_PAGES           = 238\n\tSYS_MOVE_PAGES              = 239\n\tSYS_RT_TGSIGQUEUEINFO       = 240\n\tSYS_PERF_EVENT_OPEN         = 241\n\tSYS_ACCEPT4                 = 242\n\tSYS_RECVMMSG                = 243\n\tSYS_ARCH_SPECIFIC_SYSCALL   = 244\n\tSYS_RISCV_HWPROBE           = 258\n\tSYS_RISCV_FLUSH_ICACHE      = 259\n\tSYS_WAIT4                   = 260\n\tSYS_PRLIMIT64               = 261\n\tSYS_FANOTIFY_INIT           = 262\n\tSYS_FANOTIFY_MARK           = 263\n\tSYS_NAME_TO_HANDLE_AT       = 264\n\tSYS_OPEN_BY_HANDLE_AT       = 265\n\tSYS_CLOCK_ADJTIME           = 266\n\tSYS_SYNCFS                  = 267\n\tSYS_SETNS                   = 268\n\tSYS_SENDMMSG                = 269\n\tSYS_PROCESS_VM_READV        = 270\n\tSYS_PROCESS_VM_WRITEV       = 271\n\tSYS_KCMP                    = 272\n\tSYS_FINIT_MODULE            = 273\n\tSYS_SCHED_SETATTR           = 274\n\tSYS_SCHED_GETATTR           = 275\n\tSYS_RENAMEAT2               = 276\n\tSYS_SECCOMP                 = 277\n\tSYS_GETRANDOM               = 278\n\tSYS_MEMFD_CREATE            = 279\n\tSYS_BPF                     = 280\n\tSYS_EXECVEAT                = 281\n\tSYS_USERFAULTFD             = 282\n\tSYS_MEMBARRIER              = 283\n\tSYS_MLOCK2                  = 284\n\tSYS_COPY_FILE_RANGE         = 285\n\tSYS_PREADV2                 = 286\n\tSYS_PWRITEV2                = 287\n\tSYS_PKEY_MPROTECT           = 288\n\tSYS_PKEY_ALLOC              = 289\n\tSYS_PKEY_FREE               = 290\n\tSYS_STATX                   = 291\n\tSYS_IO_PGETEVENTS           = 292\n\tSYS_RSEQ                    = 293\n\tSYS_KEXEC_FILE_LOAD         = 294\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/s390x/include -fsigned-char /tmp/s390x/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\npackage unix\n\nconst (\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_RESTART_SYSCALL         = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_BRK                     = 45\n\tSYS_SIGNAL                  = 48\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_SETPGID                 = 57\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_SYMLINK                 = 83\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_LOOKUP_DCOOKIE          = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_GETDENTS                = 141\n\tSYS_SELECT                  = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_QUERY_MODULE            = 167\n\tSYS_POLL                    = 168\n\tSYS_NFSSERVCTL              = 169\n\tSYS_PRCTL                   = 172\n\tSYS_RT_SIGRETURN            = 173\n\tSYS_RT_SIGACTION            = 174\n\tSYS_RT_SIGPROCMASK          = 175\n\tSYS_RT_SIGPENDING           = 176\n\tSYS_RT_SIGTIMEDWAIT         = 177\n\tSYS_RT_SIGQUEUEINFO         = 178\n\tSYS_RT_SIGSUSPEND           = 179\n\tSYS_PREAD64                 = 180\n\tSYS_PWRITE64                = 181\n\tSYS_GETCWD                  = 183\n\tSYS_CAPGET                  = 184\n\tSYS_CAPSET                  = 185\n\tSYS_SIGALTSTACK             = 186\n\tSYS_SENDFILE                = 187\n\tSYS_GETPMSG                 = 188\n\tSYS_PUTPMSG                 = 189\n\tSYS_VFORK                   = 190\n\tSYS_GETRLIMIT               = 191\n\tSYS_LCHOWN                  = 198\n\tSYS_GETUID                  = 199\n\tSYS_GETGID                  = 200\n\tSYS_GETEUID                 = 201\n\tSYS_GETEGID                 = 202\n\tSYS_SETREUID                = 203\n\tSYS_SETREGID                = 204\n\tSYS_GETGROUPS               = 205\n\tSYS_SETGROUPS               = 206\n\tSYS_FCHOWN                  = 207\n\tSYS_SETRESUID               = 208\n\tSYS_GETRESUID               = 209\n\tSYS_SETRESGID               = 210\n\tSYS_GETRESGID               = 211\n\tSYS_CHOWN                   = 212\n\tSYS_SETUID                  = 213\n\tSYS_SETGID                  = 214\n\tSYS_SETFSUID                = 215\n\tSYS_SETFSGID                = 216\n\tSYS_PIVOT_ROOT              = 217\n\tSYS_MINCORE                 = 218\n\tSYS_MADVISE                 = 219\n\tSYS_GETDENTS64              = 220\n\tSYS_READAHEAD               = 222\n\tSYS_SETXATTR                = 224\n\tSYS_LSETXATTR               = 225\n\tSYS_FSETXATTR               = 226\n\tSYS_GETXATTR                = 227\n\tSYS_LGETXATTR               = 228\n\tSYS_FGETXATTR               = 229\n\tSYS_LISTXATTR               = 230\n\tSYS_LLISTXATTR              = 231\n\tSYS_FLISTXATTR              = 232\n\tSYS_REMOVEXATTR             = 233\n\tSYS_LREMOVEXATTR            = 234\n\tSYS_FREMOVEXATTR            = 235\n\tSYS_GETTID                  = 236\n\tSYS_TKILL                   = 237\n\tSYS_FUTEX                   = 238\n\tSYS_SCHED_SETAFFINITY       = 239\n\tSYS_SCHED_GETAFFINITY       = 240\n\tSYS_TGKILL                  = 241\n\tSYS_IO_SETUP                = 243\n\tSYS_IO_DESTROY              = 244\n\tSYS_IO_GETEVENTS            = 245\n\tSYS_IO_SUBMIT               = 246\n\tSYS_IO_CANCEL               = 247\n\tSYS_EXIT_GROUP              = 248\n\tSYS_EPOLL_CREATE            = 249\n\tSYS_EPOLL_CTL               = 250\n\tSYS_EPOLL_WAIT              = 251\n\tSYS_SET_TID_ADDRESS         = 252\n\tSYS_FADVISE64               = 253\n\tSYS_TIMER_CREATE            = 254\n\tSYS_TIMER_SETTIME           = 255\n\tSYS_TIMER_GETTIME           = 256\n\tSYS_TIMER_GETOVERRUN        = 257\n\tSYS_TIMER_DELETE            = 258\n\tSYS_CLOCK_SETTIME           = 259\n\tSYS_CLOCK_GETTIME           = 260\n\tSYS_CLOCK_GETRES            = 261\n\tSYS_CLOCK_NANOSLEEP         = 262\n\tSYS_STATFS64                = 265\n\tSYS_FSTATFS64               = 266\n\tSYS_REMAP_FILE_PAGES        = 267\n\tSYS_MBIND                   = 268\n\tSYS_GET_MEMPOLICY           = 269\n\tSYS_SET_MEMPOLICY           = 270\n\tSYS_MQ_OPEN                 = 271\n\tSYS_MQ_UNLINK               = 272\n\tSYS_MQ_TIMEDSEND            = 273\n\tSYS_MQ_TIMEDRECEIVE         = 274\n\tSYS_MQ_NOTIFY               = 275\n\tSYS_MQ_GETSETATTR           = 276\n\tSYS_KEXEC_LOAD              = 277\n\tSYS_ADD_KEY                 = 278\n\tSYS_REQUEST_KEY             = 279\n\tSYS_KEYCTL                  = 280\n\tSYS_WAITID                  = 281\n\tSYS_IOPRIO_SET              = 282\n\tSYS_IOPRIO_GET              = 283\n\tSYS_INOTIFY_INIT            = 284\n\tSYS_INOTIFY_ADD_WATCH       = 285\n\tSYS_INOTIFY_RM_WATCH        = 286\n\tSYS_MIGRATE_PAGES           = 287\n\tSYS_OPENAT                  = 288\n\tSYS_MKDIRAT                 = 289\n\tSYS_MKNODAT                 = 290\n\tSYS_FCHOWNAT                = 291\n\tSYS_FUTIMESAT               = 292\n\tSYS_NEWFSTATAT              = 293\n\tSYS_UNLINKAT                = 294\n\tSYS_RENAMEAT                = 295\n\tSYS_LINKAT                  = 296\n\tSYS_SYMLINKAT               = 297\n\tSYS_READLINKAT              = 298\n\tSYS_FCHMODAT                = 299\n\tSYS_FACCESSAT               = 300\n\tSYS_PSELECT6                = 301\n\tSYS_PPOLL                   = 302\n\tSYS_UNSHARE                 = 303\n\tSYS_SET_ROBUST_LIST         = 304\n\tSYS_GET_ROBUST_LIST         = 305\n\tSYS_SPLICE                  = 306\n\tSYS_SYNC_FILE_RANGE         = 307\n\tSYS_TEE                     = 308\n\tSYS_VMSPLICE                = 309\n\tSYS_MOVE_PAGES              = 310\n\tSYS_GETCPU                  = 311\n\tSYS_EPOLL_PWAIT             = 312\n\tSYS_UTIMES                  = 313\n\tSYS_FALLOCATE               = 314\n\tSYS_UTIMENSAT               = 315\n\tSYS_SIGNALFD                = 316\n\tSYS_TIMERFD                 = 317\n\tSYS_EVENTFD                 = 318\n\tSYS_TIMERFD_CREATE          = 319\n\tSYS_TIMERFD_SETTIME         = 320\n\tSYS_TIMERFD_GETTIME         = 321\n\tSYS_SIGNALFD4               = 322\n\tSYS_EVENTFD2                = 323\n\tSYS_INOTIFY_INIT1           = 324\n\tSYS_PIPE2                   = 325\n\tSYS_DUP3                    = 326\n\tSYS_EPOLL_CREATE1           = 327\n\tSYS_PREADV                  = 328\n\tSYS_PWRITEV                 = 329\n\tSYS_RT_TGSIGQUEUEINFO       = 330\n\tSYS_PERF_EVENT_OPEN         = 331\n\tSYS_FANOTIFY_INIT           = 332\n\tSYS_FANOTIFY_MARK           = 333\n\tSYS_PRLIMIT64               = 334\n\tSYS_NAME_TO_HANDLE_AT       = 335\n\tSYS_OPEN_BY_HANDLE_AT       = 336\n\tSYS_CLOCK_ADJTIME           = 337\n\tSYS_SYNCFS                  = 338\n\tSYS_SETNS                   = 339\n\tSYS_PROCESS_VM_READV        = 340\n\tSYS_PROCESS_VM_WRITEV       = 341\n\tSYS_S390_RUNTIME_INSTR      = 342\n\tSYS_KCMP                    = 343\n\tSYS_FINIT_MODULE            = 344\n\tSYS_SCHED_SETATTR           = 345\n\tSYS_SCHED_GETATTR           = 346\n\tSYS_RENAMEAT2               = 347\n\tSYS_SECCOMP                 = 348\n\tSYS_GETRANDOM               = 349\n\tSYS_MEMFD_CREATE            = 350\n\tSYS_BPF                     = 351\n\tSYS_S390_PCI_MMIO_WRITE     = 352\n\tSYS_S390_PCI_MMIO_READ      = 353\n\tSYS_EXECVEAT                = 354\n\tSYS_USERFAULTFD             = 355\n\tSYS_MEMBARRIER              = 356\n\tSYS_RECVMMSG                = 357\n\tSYS_SENDMMSG                = 358\n\tSYS_SOCKET                  = 359\n\tSYS_SOCKETPAIR              = 360\n\tSYS_BIND                    = 361\n\tSYS_CONNECT                 = 362\n\tSYS_LISTEN                  = 363\n\tSYS_ACCEPT4                 = 364\n\tSYS_GETSOCKOPT              = 365\n\tSYS_SETSOCKOPT              = 366\n\tSYS_GETSOCKNAME             = 367\n\tSYS_GETPEERNAME             = 368\n\tSYS_SENDTO                  = 369\n\tSYS_SENDMSG                 = 370\n\tSYS_RECVFROM                = 371\n\tSYS_RECVMSG                 = 372\n\tSYS_SHUTDOWN                = 373\n\tSYS_MLOCK2                  = 374\n\tSYS_COPY_FILE_RANGE         = 375\n\tSYS_PREADV2                 = 376\n\tSYS_PWRITEV2                = 377\n\tSYS_S390_GUARDED_STORAGE    = 378\n\tSYS_STATX                   = 379\n\tSYS_S390_STHYI              = 380\n\tSYS_KEXEC_FILE_LOAD         = 381\n\tSYS_IO_PGETEVENTS           = 382\n\tSYS_RSEQ                    = 383\n\tSYS_PKEY_MPROTECT           = 384\n\tSYS_PKEY_ALLOC              = 385\n\tSYS_PKEY_FREE               = 386\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/sparc64/include /tmp/sparc64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAIT4                   = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECV                   = 11\n\tSYS_CHDIR                   = 12\n\tSYS_CHOWN                   = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BRK                     = 17\n\tSYS_PERFCTR                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_CAPGET                  = 21\n\tSYS_CAPSET                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_VMSPLICE                = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_SIGALTSTACK             = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_STAT                    = 38\n\tSYS_SENDFILE                = 39\n\tSYS_LSTAT                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_UMOUNT2                 = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_MEMORY_ORDERING         = 52\n\tSYS_IOCTL                   = 54\n\tSYS_REBOOT                  = 55\n\tSYS_SYMLINK                 = 57\n\tSYS_READLINK                = 58\n\tSYS_EXECVE                  = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_FSTAT                   = 62\n\tSYS_FSTAT64                 = 63\n\tSYS_GETPAGESIZE             = 64\n\tSYS_MSYNC                   = 65\n\tSYS_VFORK                   = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_MMAP                    = 71\n\tSYS_MUNMAP                  = 73\n\tSYS_MPROTECT                = 74\n\tSYS_MADVISE                 = 75\n\tSYS_VHANGUP                 = 76\n\tSYS_MINCORE                 = 78\n\tSYS_GETGROUPS               = 79\n\tSYS_SETGROUPS               = 80\n\tSYS_GETPGRP                 = 81\n\tSYS_SETITIMER               = 83\n\tSYS_SWAPON                  = 85\n\tSYS_GETITIMER               = 86\n\tSYS_SETHOSTNAME             = 88\n\tSYS_DUP2                    = 90\n\tSYS_FCNTL                   = 92\n\tSYS_SELECT                  = 93\n\tSYS_FSYNC                   = 95\n\tSYS_SETPRIORITY             = 96\n\tSYS_SOCKET                  = 97\n\tSYS_CONNECT                 = 98\n\tSYS_ACCEPT                  = 99\n\tSYS_GETPRIORITY             = 100\n\tSYS_RT_SIGRETURN            = 101\n\tSYS_RT_SIGACTION            = 102\n\tSYS_RT_SIGPROCMASK          = 103\n\tSYS_RT_SIGPENDING           = 104\n\tSYS_RT_SIGTIMEDWAIT         = 105\n\tSYS_RT_SIGQUEUEINFO         = 106\n\tSYS_RT_SIGSUSPEND           = 107\n\tSYS_SETRESUID               = 108\n\tSYS_GETRESUID               = 109\n\tSYS_SETRESGID               = 110\n\tSYS_GETRESGID               = 111\n\tSYS_RECVMSG                 = 113\n\tSYS_SENDMSG                 = 114\n\tSYS_GETTIMEOFDAY            = 116\n\tSYS_GETRUSAGE               = 117\n\tSYS_GETSOCKOPT              = 118\n\tSYS_GETCWD                  = 119\n\tSYS_READV                   = 120\n\tSYS_WRITEV                  = 121\n\tSYS_SETTIMEOFDAY            = 122\n\tSYS_FCHOWN                  = 123\n\tSYS_FCHMOD                  = 124\n\tSYS_RECVFROM                = 125\n\tSYS_SETREUID                = 126\n\tSYS_SETREGID                = 127\n\tSYS_RENAME                  = 128\n\tSYS_TRUNCATE                = 129\n\tSYS_FTRUNCATE               = 130\n\tSYS_FLOCK                   = 131\n\tSYS_LSTAT64                 = 132\n\tSYS_SENDTO                  = 133\n\tSYS_SHUTDOWN                = 134\n\tSYS_SOCKETPAIR              = 135\n\tSYS_MKDIR                   = 136\n\tSYS_RMDIR                   = 137\n\tSYS_UTIMES                  = 138\n\tSYS_STAT64                  = 139\n\tSYS_SENDFILE64              = 140\n\tSYS_GETPEERNAME             = 141\n\tSYS_FUTEX                   = 142\n\tSYS_GETTID                  = 143\n\tSYS_GETRLIMIT               = 144\n\tSYS_SETRLIMIT               = 145\n\tSYS_PIVOT_ROOT              = 146\n\tSYS_PRCTL                   = 147\n\tSYS_PCICONFIG_READ          = 148\n\tSYS_PCICONFIG_WRITE         = 149\n\tSYS_GETSOCKNAME             = 150\n\tSYS_INOTIFY_INIT            = 151\n\tSYS_INOTIFY_ADD_WATCH       = 152\n\tSYS_POLL                    = 153\n\tSYS_GETDENTS64              = 154\n\tSYS_INOTIFY_RM_WATCH        = 156\n\tSYS_STATFS                  = 157\n\tSYS_FSTATFS                 = 158\n\tSYS_UMOUNT                  = 159\n\tSYS_SCHED_SET_AFFINITY      = 160\n\tSYS_SCHED_GET_AFFINITY      = 161\n\tSYS_GETDOMAINNAME           = 162\n\tSYS_SETDOMAINNAME           = 163\n\tSYS_UTRAP_INSTALL           = 164\n\tSYS_QUOTACTL                = 165\n\tSYS_SET_TID_ADDRESS         = 166\n\tSYS_MOUNT                   = 167\n\tSYS_USTAT                   = 168\n\tSYS_SETXATTR                = 169\n\tSYS_LSETXATTR               = 170\n\tSYS_FSETXATTR               = 171\n\tSYS_GETXATTR                = 172\n\tSYS_LGETXATTR               = 173\n\tSYS_GETDENTS                = 174\n\tSYS_SETSID                  = 175\n\tSYS_FCHDIR                  = 176\n\tSYS_FGETXATTR               = 177\n\tSYS_LISTXATTR               = 178\n\tSYS_LLISTXATTR              = 179\n\tSYS_FLISTXATTR              = 180\n\tSYS_REMOVEXATTR             = 181\n\tSYS_LREMOVEXATTR            = 182\n\tSYS_SIGPENDING              = 183\n\tSYS_QUERY_MODULE            = 184\n\tSYS_SETPGID                 = 185\n\tSYS_FREMOVEXATTR            = 186\n\tSYS_TKILL                   = 187\n\tSYS_EXIT_GROUP              = 188\n\tSYS_UNAME                   = 189\n\tSYS_INIT_MODULE             = 190\n\tSYS_PERSONALITY             = 191\n\tSYS_REMAP_FILE_PAGES        = 192\n\tSYS_EPOLL_CREATE            = 193\n\tSYS_EPOLL_CTL               = 194\n\tSYS_EPOLL_WAIT              = 195\n\tSYS_IOPRIO_SET              = 196\n\tSYS_GETPPID                 = 197\n\tSYS_SIGACTION               = 198\n\tSYS_SGETMASK                = 199\n\tSYS_SSETMASK                = 200\n\tSYS_SIGSUSPEND              = 201\n\tSYS_OLDLSTAT                = 202\n\tSYS_USELIB                  = 203\n\tSYS_READDIR                 = 204\n\tSYS_READAHEAD               = 205\n\tSYS_SOCKETCALL              = 206\n\tSYS_SYSLOG                  = 207\n\tSYS_LOOKUP_DCOOKIE          = 208\n\tSYS_FADVISE64               = 209\n\tSYS_FADVISE64_64            = 210\n\tSYS_TGKILL                  = 211\n\tSYS_WAITPID                 = 212\n\tSYS_SWAPOFF                 = 213\n\tSYS_SYSINFO                 = 214\n\tSYS_IPC                     = 215\n\tSYS_SIGRETURN               = 216\n\tSYS_CLONE                   = 217\n\tSYS_IOPRIO_GET              = 218\n\tSYS_ADJTIMEX                = 219\n\tSYS_SIGPROCMASK             = 220\n\tSYS_CREATE_MODULE           = 221\n\tSYS_DELETE_MODULE           = 222\n\tSYS_GET_KERNEL_SYMS         = 223\n\tSYS_GETPGID                 = 224\n\tSYS_BDFLUSH                 = 225\n\tSYS_SYSFS                   = 226\n\tSYS_AFS_SYSCALL             = 227\n\tSYS_SETFSUID                = 228\n\tSYS_SETFSGID                = 229\n\tSYS__NEWSELECT              = 230\n\tSYS_SPLICE                  = 232\n\tSYS_STIME                   = 233\n\tSYS_STATFS64                = 234\n\tSYS_FSTATFS64               = 235\n\tSYS__LLSEEK                 = 236\n\tSYS_MLOCK                   = 237\n\tSYS_MUNLOCK                 = 238\n\tSYS_MLOCKALL                = 239\n\tSYS_MUNLOCKALL              = 240\n\tSYS_SCHED_SETPARAM          = 241\n\tSYS_SCHED_GETPARAM          = 242\n\tSYS_SCHED_SETSCHEDULER      = 243\n\tSYS_SCHED_GETSCHEDULER      = 244\n\tSYS_SCHED_YIELD             = 245\n\tSYS_SCHED_GET_PRIORITY_MAX  = 246\n\tSYS_SCHED_GET_PRIORITY_MIN  = 247\n\tSYS_SCHED_RR_GET_INTERVAL   = 248\n\tSYS_NANOSLEEP               = 249\n\tSYS_MREMAP                  = 250\n\tSYS__SYSCTL                 = 251\n\tSYS_GETSID                  = 252\n\tSYS_FDATASYNC               = 253\n\tSYS_NFSSERVCTL              = 254\n\tSYS_SYNC_FILE_RANGE         = 255\n\tSYS_CLOCK_SETTIME           = 256\n\tSYS_CLOCK_GETTIME           = 257\n\tSYS_CLOCK_GETRES            = 258\n\tSYS_CLOCK_NANOSLEEP         = 259\n\tSYS_SCHED_GETAFFINITY       = 260\n\tSYS_SCHED_SETAFFINITY       = 261\n\tSYS_TIMER_SETTIME           = 262\n\tSYS_TIMER_GETTIME           = 263\n\tSYS_TIMER_GETOVERRUN        = 264\n\tSYS_TIMER_DELETE            = 265\n\tSYS_TIMER_CREATE            = 266\n\tSYS_VSERVER                 = 267\n\tSYS_IO_SETUP                = 268\n\tSYS_IO_DESTROY              = 269\n\tSYS_IO_SUBMIT               = 270\n\tSYS_IO_CANCEL               = 271\n\tSYS_IO_GETEVENTS            = 272\n\tSYS_MQ_OPEN                 = 273\n\tSYS_MQ_UNLINK               = 274\n\tSYS_MQ_TIMEDSEND            = 275\n\tSYS_MQ_TIMEDRECEIVE         = 276\n\tSYS_MQ_NOTIFY               = 277\n\tSYS_MQ_GETSETATTR           = 278\n\tSYS_WAITID                  = 279\n\tSYS_TEE                     = 280\n\tSYS_ADD_KEY                 = 281\n\tSYS_REQUEST_KEY             = 282\n\tSYS_KEYCTL                  = 283\n\tSYS_OPENAT                  = 284\n\tSYS_MKDIRAT                 = 285\n\tSYS_MKNODAT                 = 286\n\tSYS_FCHOWNAT                = 287\n\tSYS_FUTIMESAT               = 288\n\tSYS_FSTATAT64               = 289\n\tSYS_UNLINKAT                = 290\n\tSYS_RENAMEAT                = 291\n\tSYS_LINKAT                  = 292\n\tSYS_SYMLINKAT               = 293\n\tSYS_READLINKAT              = 294\n\tSYS_FCHMODAT                = 295\n\tSYS_FACCESSAT               = 296\n\tSYS_PSELECT6                = 297\n\tSYS_PPOLL                   = 298\n\tSYS_UNSHARE                 = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_GET_ROBUST_LIST         = 301\n\tSYS_MIGRATE_PAGES           = 302\n\tSYS_MBIND                   = 303\n\tSYS_GET_MEMPOLICY           = 304\n\tSYS_SET_MEMPOLICY           = 305\n\tSYS_KEXEC_LOAD              = 306\n\tSYS_MOVE_PAGES              = 307\n\tSYS_GETCPU                  = 308\n\tSYS_EPOLL_PWAIT             = 309\n\tSYS_UTIMENSAT               = 310\n\tSYS_SIGNALFD                = 311\n\tSYS_TIMERFD_CREATE          = 312\n\tSYS_EVENTFD                 = 313\n\tSYS_FALLOCATE               = 314\n\tSYS_TIMERFD_SETTIME         = 315\n\tSYS_TIMERFD_GETTIME         = 316\n\tSYS_SIGNALFD4               = 317\n\tSYS_EVENTFD2                = 318\n\tSYS_EPOLL_CREATE1           = 319\n\tSYS_DUP3                    = 320\n\tSYS_PIPE2                   = 321\n\tSYS_INOTIFY_INIT1           = 322\n\tSYS_ACCEPT4                 = 323\n\tSYS_PREADV                  = 324\n\tSYS_PWRITEV                 = 325\n\tSYS_RT_TGSIGQUEUEINFO       = 326\n\tSYS_PERF_EVENT_OPEN         = 327\n\tSYS_RECVMMSG                = 328\n\tSYS_FANOTIFY_INIT           = 329\n\tSYS_FANOTIFY_MARK           = 330\n\tSYS_PRLIMIT64               = 331\n\tSYS_NAME_TO_HANDLE_AT       = 332\n\tSYS_OPEN_BY_HANDLE_AT       = 333\n\tSYS_CLOCK_ADJTIME           = 334\n\tSYS_SYNCFS                  = 335\n\tSYS_SENDMMSG                = 336\n\tSYS_SETNS                   = 337\n\tSYS_PROCESS_VM_READV        = 338\n\tSYS_PROCESS_VM_WRITEV       = 339\n\tSYS_KERN_FEATURES           = 340\n\tSYS_KCMP                    = 341\n\tSYS_FINIT_MODULE            = 342\n\tSYS_SCHED_SETATTR           = 343\n\tSYS_SCHED_GETATTR           = 344\n\tSYS_RENAMEAT2               = 345\n\tSYS_SECCOMP                 = 346\n\tSYS_GETRANDOM               = 347\n\tSYS_MEMFD_CREATE            = 348\n\tSYS_BPF                     = 349\n\tSYS_EXECVEAT                = 350\n\tSYS_MEMBARRIER              = 351\n\tSYS_USERFAULTFD             = 352\n\tSYS_BIND                    = 353\n\tSYS_LISTEN                  = 354\n\tSYS_SETSOCKOPT              = 355\n\tSYS_MLOCK2                  = 356\n\tSYS_COPY_FILE_RANGE         = 357\n\tSYS_PREADV2                 = 358\n\tSYS_PWRITEV2                = 359\n\tSYS_STATX                   = 360\n\tSYS_IO_PGETEVENTS           = 361\n\tSYS_PKEY_MPROTECT           = 362\n\tSYS_PKEY_ALLOC              = 363\n\tSYS_PKEY_FREE               = 364\n\tSYS_RSEQ                    = 365\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_MSYSCALL       = 37  // { int sys_msyscall(void *addr, size_t len); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS___REALPATH     = 115 // { int sys___realpath(const char *pathname, char *resolved); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS___TMPFD        = 164 // { int sys___tmpfd(int flags); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go",
    "content": "// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build zos && s390x\n\npackage unix\n\nconst (\n\tSYS_LOG                             = 0x17  // 23\n\tSYS_COSH                            = 0x18  // 24\n\tSYS_TANH                            = 0x19  // 25\n\tSYS_EXP                             = 0x1A  // 26\n\tSYS_MODF                            = 0x1B  // 27\n\tSYS_LOG10                           = 0x1C  // 28\n\tSYS_FREXP                           = 0x1D  // 29\n\tSYS_LDEXP                           = 0x1E  // 30\n\tSYS_CEIL                            = 0x1F  // 31\n\tSYS_POW                             = 0x20  // 32\n\tSYS_SQRT                            = 0x21  // 33\n\tSYS_FLOOR                           = 0x22  // 34\n\tSYS_J1                              = 0x23  // 35\n\tSYS_FABS                            = 0x24  // 36\n\tSYS_FMOD                            = 0x25  // 37\n\tSYS_J0                              = 0x26  // 38\n\tSYS_YN                              = 0x27  // 39\n\tSYS_JN                              = 0x28  // 40\n\tSYS_Y0                              = 0x29  // 41\n\tSYS_Y1                              = 0x2A  // 42\n\tSYS_HYPOT                           = 0x2B  // 43\n\tSYS_ERF                             = 0x2C  // 44\n\tSYS_ERFC                            = 0x2D  // 45\n\tSYS_GAMMA                           = 0x2E  // 46\n\tSYS_ISALPHA                         = 0x30  // 48\n\tSYS_ISALNUM                         = 0x31  // 49\n\tSYS_ISLOWER                         = 0x32  // 50\n\tSYS_ISCNTRL                         = 0x33  // 51\n\tSYS_ISDIGIT                         = 0x34  // 52\n\tSYS_ISGRAPH                         = 0x35  // 53\n\tSYS_ISUPPER                         = 0x36  // 54\n\tSYS_ISPRINT                         = 0x37  // 55\n\tSYS_ISPUNCT                         = 0x38  // 56\n\tSYS_ISSPACE                         = 0x39  // 57\n\tSYS_SETLOCAL                        = 0x3A  // 58\n\tSYS_SETLOCALE                       = 0x3A  // 58\n\tSYS_ISXDIGIT                        = 0x3B  // 59\n\tSYS_TOLOWER                         = 0x3C  // 60\n\tSYS_TOUPPER                         = 0x3D  // 61\n\tSYS_ASIN                            = 0x3E  // 62\n\tSYS_SIN                             = 0x3F  // 63\n\tSYS_COS                             = 0x40  // 64\n\tSYS_TAN                             = 0x41  // 65\n\tSYS_SINH                            = 0x42  // 66\n\tSYS_ACOS                            = 0x43  // 67\n\tSYS_ATAN                            = 0x44  // 68\n\tSYS_ATAN2                           = 0x45  // 69\n\tSYS_FTELL                           = 0x46  // 70\n\tSYS_FGETPOS                         = 0x47  // 71\n\tSYS_FSEEK                           = 0x48  // 72\n\tSYS_FSETPOS                         = 0x49  // 73\n\tSYS_FERROR                          = 0x4A  // 74\n\tSYS_REWIND                          = 0x4B  // 75\n\tSYS_CLEARERR                        = 0x4C  // 76\n\tSYS_FEOF                            = 0x4D  // 77\n\tSYS_ATOL                            = 0x4E  // 78\n\tSYS_PERROR                          = 0x4F  // 79\n\tSYS_ATOF                            = 0x50  // 80\n\tSYS_ATOI                            = 0x51  // 81\n\tSYS_RAND                            = 0x52  // 82\n\tSYS_STRTOD                          = 0x53  // 83\n\tSYS_STRTOL                          = 0x54  // 84\n\tSYS_STRTOUL                         = 0x55  // 85\n\tSYS_MALLOC                          = 0x56  // 86\n\tSYS_SRAND                           = 0x57  // 87\n\tSYS_CALLOC                          = 0x58  // 88\n\tSYS_FREE                            = 0x59  // 89\n\tSYS_EXIT                            = 0x5A  // 90\n\tSYS_REALLOC                         = 0x5B  // 91\n\tSYS_ABORT                           = 0x5C  // 92\n\tSYS___ABORT                         = 0x5C  // 92\n\tSYS_ATEXIT                          = 0x5D  // 93\n\tSYS_RAISE                           = 0x5E  // 94\n\tSYS_SETJMP                          = 0x5F  // 95\n\tSYS_LONGJMP                         = 0x60  // 96\n\tSYS_SIGNAL                          = 0x61  // 97\n\tSYS_TMPNAM                          = 0x62  // 98\n\tSYS_REMOVE                          = 0x63  // 99\n\tSYS_RENAME                          = 0x64  // 100\n\tSYS_TMPFILE                         = 0x65  // 101\n\tSYS_FREOPEN                         = 0x66  // 102\n\tSYS_FCLOSE                          = 0x67  // 103\n\tSYS_FFLUSH                          = 0x68  // 104\n\tSYS_FOPEN                           = 0x69  // 105\n\tSYS_FSCANF                          = 0x6A  // 106\n\tSYS_SETBUF                          = 0x6B  // 107\n\tSYS_SETVBUF                         = 0x6C  // 108\n\tSYS_FPRINTF                         = 0x6D  // 109\n\tSYS_SSCANF                          = 0x6E  // 110\n\tSYS_PRINTF                          = 0x6F  // 111\n\tSYS_SCANF                           = 0x70  // 112\n\tSYS_SPRINTF                         = 0x71  // 113\n\tSYS_FGETC                           = 0x72  // 114\n\tSYS_VFPRINTF                        = 0x73  // 115\n\tSYS_VPRINTF                         = 0x74  // 116\n\tSYS_VSPRINTF                        = 0x75  // 117\n\tSYS_GETC                            = 0x76  // 118\n\tSYS_FGETS                           = 0x77  // 119\n\tSYS_FPUTC                           = 0x78  // 120\n\tSYS_FPUTS                           = 0x79  // 121\n\tSYS_PUTCHAR                         = 0x7A  // 122\n\tSYS_GETCHAR                         = 0x7B  // 123\n\tSYS_GETS                            = 0x7C  // 124\n\tSYS_PUTC                            = 0x7D  // 125\n\tSYS_FWRITE                          = 0x7E  // 126\n\tSYS_PUTS                            = 0x7F  // 127\n\tSYS_UNGETC                          = 0x80  // 128\n\tSYS_FREAD                           = 0x81  // 129\n\tSYS_WCSTOMBS                        = 0x82  // 130\n\tSYS_MBTOWC                          = 0x83  // 131\n\tSYS_WCTOMB                          = 0x84  // 132\n\tSYS_MBSTOWCS                        = 0x85  // 133\n\tSYS_WCSCPY                          = 0x86  // 134\n\tSYS_WCSCAT                          = 0x87  // 135\n\tSYS_WCSCHR                          = 0x88  // 136\n\tSYS_WCSCMP                          = 0x89  // 137\n\tSYS_WCSNCMP                         = 0x8A  // 138\n\tSYS_WCSCSPN                         = 0x8B  // 139\n\tSYS_WCSLEN                          = 0x8C  // 140\n\tSYS_WCSNCAT                         = 0x8D  // 141\n\tSYS_WCSSPN                          = 0x8E  // 142\n\tSYS_WCSNCPY                         = 0x8F  // 143\n\tSYS_ABS                             = 0x90  // 144\n\tSYS_DIV                             = 0x91  // 145\n\tSYS_LABS                            = 0x92  // 146\n\tSYS_STRNCPY                         = 0x93  // 147\n\tSYS_MEMCPY                          = 0x94  // 148\n\tSYS_MEMMOVE                         = 0x95  // 149\n\tSYS_STRCPY                          = 0x96  // 150\n\tSYS_STRCMP                          = 0x97  // 151\n\tSYS_STRCAT                          = 0x98  // 152\n\tSYS_STRNCAT                         = 0x99  // 153\n\tSYS_MEMCMP                          = 0x9A  // 154\n\tSYS_MEMCHR                          = 0x9B  // 155\n\tSYS_STRCOLL                         = 0x9C  // 156\n\tSYS_STRNCMP                         = 0x9D  // 157\n\tSYS_STRXFRM                         = 0x9E  // 158\n\tSYS_STRRCHR                         = 0x9F  // 159\n\tSYS_STRCHR                          = 0xA0  // 160\n\tSYS_STRCSPN                         = 0xA1  // 161\n\tSYS_STRPBRK                         = 0xA2  // 162\n\tSYS_MEMSET                          = 0xA3  // 163\n\tSYS_STRSPN                          = 0xA4  // 164\n\tSYS_STRSTR                          = 0xA5  // 165\n\tSYS_STRTOK                          = 0xA6  // 166\n\tSYS_DIFFTIME                        = 0xA7  // 167\n\tSYS_STRERROR                        = 0xA8  // 168\n\tSYS_STRLEN                          = 0xA9  // 169\n\tSYS_CLOCK                           = 0xAA  // 170\n\tSYS_CTIME                           = 0xAB  // 171\n\tSYS_MKTIME                          = 0xAC  // 172\n\tSYS_TIME                            = 0xAD  // 173\n\tSYS_ASCTIME                         = 0xAE  // 174\n\tSYS_MBLEN                           = 0xAF  // 175\n\tSYS_GMTIME                          = 0xB0  // 176\n\tSYS_LOCALTIM                        = 0xB1  // 177\n\tSYS_LOCALTIME                       = 0xB1  // 177\n\tSYS_STRFTIME                        = 0xB2  // 178\n\tSYS___GETCB                         = 0xB4  // 180\n\tSYS_FUPDATE                         = 0xB5  // 181\n\tSYS___FUPDT                         = 0xB5  // 181\n\tSYS_CLRMEMF                         = 0xBD  // 189\n\tSYS___CLRMF                         = 0xBD  // 189\n\tSYS_FETCHEP                         = 0xBF  // 191\n\tSYS___FTCHEP                        = 0xBF  // 191\n\tSYS_FLDATA                          = 0xC1  // 193\n\tSYS___FLDATA                        = 0xC1  // 193\n\tSYS_DYNFREE                         = 0xC2  // 194\n\tSYS___DYNFRE                        = 0xC2  // 194\n\tSYS_DYNALLOC                        = 0xC3  // 195\n\tSYS___DYNALL                        = 0xC3  // 195\n\tSYS___CDUMP                         = 0xC4  // 196\n\tSYS_CSNAP                           = 0xC5  // 197\n\tSYS___CSNAP                         = 0xC5  // 197\n\tSYS_CTRACE                          = 0xC6  // 198\n\tSYS___CTRACE                        = 0xC6  // 198\n\tSYS___CTEST                         = 0xC7  // 199\n\tSYS_SETENV                          = 0xC8  // 200\n\tSYS___SETENV                        = 0xC8  // 200\n\tSYS_CLEARENV                        = 0xC9  // 201\n\tSYS___CLRENV                        = 0xC9  // 201\n\tSYS___REGCOMP_STD                   = 0xEA  // 234\n\tSYS_NL_LANGINFO                     = 0xFC  // 252\n\tSYS_GETSYNTX                        = 0xFD  // 253\n\tSYS_ISBLANK                         = 0xFE  // 254\n\tSYS___ISBLNK                        = 0xFE  // 254\n\tSYS_ISWALNUM                        = 0xFF  // 255\n\tSYS_ISWALPHA                        = 0x100 // 256\n\tSYS_ISWBLANK                        = 0x101 // 257\n\tSYS___ISWBLK                        = 0x101 // 257\n\tSYS_ISWCNTRL                        = 0x102 // 258\n\tSYS_ISWDIGIT                        = 0x103 // 259\n\tSYS_ISWGRAPH                        = 0x104 // 260\n\tSYS_ISWLOWER                        = 0x105 // 261\n\tSYS_ISWPRINT                        = 0x106 // 262\n\tSYS_ISWPUNCT                        = 0x107 // 263\n\tSYS_ISWSPACE                        = 0x108 // 264\n\tSYS_ISWUPPER                        = 0x109 // 265\n\tSYS_ISWXDIGI                        = 0x10A // 266\n\tSYS_ISWXDIGIT                       = 0x10A // 266\n\tSYS_WCTYPE                          = 0x10B // 267\n\tSYS_ISWCTYPE                        = 0x10C // 268\n\tSYS_TOWLOWER                        = 0x10D // 269\n\tSYS_TOWUPPER                        = 0x10E // 270\n\tSYS_MBSINIT                         = 0x10F // 271\n\tSYS_WCTOB                           = 0x110 // 272\n\tSYS_MBRLEN                          = 0x111 // 273\n\tSYS_MBRTOWC                         = 0x112 // 274\n\tSYS_MBSRTOWC                        = 0x113 // 275\n\tSYS_MBSRTOWCS                       = 0x113 // 275\n\tSYS_WCRTOMB                         = 0x114 // 276\n\tSYS_WCSRTOMB                        = 0x115 // 277\n\tSYS_WCSRTOMBS                       = 0x115 // 277\n\tSYS___CSID                          = 0x116 // 278\n\tSYS___WCSID                         = 0x117 // 279\n\tSYS_STRPTIME                        = 0x118 // 280\n\tSYS___STRPTM                        = 0x118 // 280\n\tSYS_STRFMON                         = 0x119 // 281\n\tSYS___RPMTCH                        = 0x11A // 282\n\tSYS_WCSSTR                          = 0x11B // 283\n\tSYS_WCSTOK                          = 0x12C // 300\n\tSYS_WCSTOL                          = 0x12D // 301\n\tSYS_WCSTOD                          = 0x12E // 302\n\tSYS_WCSTOUL                         = 0x12F // 303\n\tSYS_WCSCOLL                         = 0x130 // 304\n\tSYS_WCSXFRM                         = 0x131 // 305\n\tSYS_WCSWIDTH                        = 0x132 // 306\n\tSYS_WCWIDTH                         = 0x133 // 307\n\tSYS_WCSFTIME                        = 0x134 // 308\n\tSYS_SWPRINTF                        = 0x135 // 309\n\tSYS_VSWPRINT                        = 0x136 // 310\n\tSYS_VSWPRINTF                       = 0x136 // 310\n\tSYS_SWSCANF                         = 0x137 // 311\n\tSYS_REGCOMP                         = 0x138 // 312\n\tSYS_REGEXEC                         = 0x139 // 313\n\tSYS_REGFREE                         = 0x13A // 314\n\tSYS_REGERROR                        = 0x13B // 315\n\tSYS_FGETWC                          = 0x13C // 316\n\tSYS_FGETWS                          = 0x13D // 317\n\tSYS_FPUTWC                          = 0x13E // 318\n\tSYS_FPUTWS                          = 0x13F // 319\n\tSYS_GETWC                           = 0x140 // 320\n\tSYS_GETWCHAR                        = 0x141 // 321\n\tSYS_PUTWC                           = 0x142 // 322\n\tSYS_PUTWCHAR                        = 0x143 // 323\n\tSYS_UNGETWC                         = 0x144 // 324\n\tSYS_ICONV_OPEN                      = 0x145 // 325\n\tSYS_ICONV                           = 0x146 // 326\n\tSYS_ICONV_CLOSE                     = 0x147 // 327\n\tSYS_ISMCCOLLEL                      = 0x14C // 332\n\tSYS_STRTOCOLL                       = 0x14D // 333\n\tSYS_COLLTOSTR                       = 0x14E // 334\n\tSYS_COLLEQUIV                       = 0x14F // 335\n\tSYS_COLLRANGE                       = 0x150 // 336\n\tSYS_CCLASS                          = 0x151 // 337\n\tSYS_COLLORDER                       = 0x152 // 338\n\tSYS___DEMANGLE                      = 0x154 // 340\n\tSYS_FDOPEN                          = 0x155 // 341\n\tSYS___ERRNO                         = 0x156 // 342\n\tSYS___ERRNO2                        = 0x157 // 343\n\tSYS___TERROR                        = 0x158 // 344\n\tSYS_MAXCOLL                         = 0x169 // 361\n\tSYS_GETMCCOLL                       = 0x16A // 362\n\tSYS_GETWMCCOLL                      = 0x16B // 363\n\tSYS___ERR2AD                        = 0x16C // 364\n\tSYS_DLLQUERYFN                      = 0x16D // 365\n\tSYS_DLLQUERYVAR                     = 0x16E // 366\n\tSYS_DLLFREE                         = 0x16F // 367\n\tSYS_DLLLOAD                         = 0x170 // 368\n\tSYS__EXIT                           = 0x174 // 372\n\tSYS_ACCESS                          = 0x175 // 373\n\tSYS_ALARM                           = 0x176 // 374\n\tSYS_CFGETISPEED                     = 0x177 // 375\n\tSYS_CFGETOSPEED                     = 0x178 // 376\n\tSYS_CFSETISPEED                     = 0x179 // 377\n\tSYS_CFSETOSPEED                     = 0x17A // 378\n\tSYS_CHDIR                           = 0x17B // 379\n\tSYS_CHMOD                           = 0x17C // 380\n\tSYS_CHOWN                           = 0x17D // 381\n\tSYS_CLOSE                           = 0x17E // 382\n\tSYS_CLOSEDIR                        = 0x17F // 383\n\tSYS_CREAT                           = 0x180 // 384\n\tSYS_CTERMID                         = 0x181 // 385\n\tSYS_DUP                             = 0x182 // 386\n\tSYS_DUP2                            = 0x183 // 387\n\tSYS_EXECL                           = 0x184 // 388\n\tSYS_EXECLE                          = 0x185 // 389\n\tSYS_EXECLP                          = 0x186 // 390\n\tSYS_EXECV                           = 0x187 // 391\n\tSYS_EXECVE                          = 0x188 // 392\n\tSYS_EXECVP                          = 0x189 // 393\n\tSYS_FCHMOD                          = 0x18A // 394\n\tSYS_FCHOWN                          = 0x18B // 395\n\tSYS_FCNTL                           = 0x18C // 396\n\tSYS_FILENO                          = 0x18D // 397\n\tSYS_FORK                            = 0x18E // 398\n\tSYS_FPATHCONF                       = 0x18F // 399\n\tSYS_FSTAT                           = 0x190 // 400\n\tSYS_FSYNC                           = 0x191 // 401\n\tSYS_FTRUNCATE                       = 0x192 // 402\n\tSYS_GETCWD                          = 0x193 // 403\n\tSYS_GETEGID                         = 0x194 // 404\n\tSYS_GETEUID                         = 0x195 // 405\n\tSYS_GETGID                          = 0x196 // 406\n\tSYS_GETGRGID                        = 0x197 // 407\n\tSYS_GETGRNAM                        = 0x198 // 408\n\tSYS_GETGROUPS                       = 0x199 // 409\n\tSYS_GETLOGIN                        = 0x19A // 410\n\tSYS_W_GETMNTENT                     = 0x19B // 411\n\tSYS_GETPGRP                         = 0x19C // 412\n\tSYS_GETPID                          = 0x19D // 413\n\tSYS_GETPPID                         = 0x19E // 414\n\tSYS_GETPWNAM                        = 0x19F // 415\n\tSYS_GETPWUID                        = 0x1A0 // 416\n\tSYS_GETUID                          = 0x1A1 // 417\n\tSYS_W_IOCTL                         = 0x1A2 // 418\n\tSYS_ISATTY                          = 0x1A3 // 419\n\tSYS_KILL                            = 0x1A4 // 420\n\tSYS_LINK                            = 0x1A5 // 421\n\tSYS_LSEEK                           = 0x1A6 // 422\n\tSYS_LSTAT                           = 0x1A7 // 423\n\tSYS_MKDIR                           = 0x1A8 // 424\n\tSYS_MKFIFO                          = 0x1A9 // 425\n\tSYS_MKNOD                           = 0x1AA // 426\n\tSYS_MOUNT                           = 0x1AB // 427\n\tSYS_OPEN                            = 0x1AC // 428\n\tSYS_OPENDIR                         = 0x1AD // 429\n\tSYS_PATHCONF                        = 0x1AE // 430\n\tSYS_PAUSE                           = 0x1AF // 431\n\tSYS_PIPE                            = 0x1B0 // 432\n\tSYS_W_GETPSENT                      = 0x1B1 // 433\n\tSYS_READ                            = 0x1B2 // 434\n\tSYS_READDIR                         = 0x1B3 // 435\n\tSYS_READLINK                        = 0x1B4 // 436\n\tSYS_REWINDDIR                       = 0x1B5 // 437\n\tSYS_RMDIR                           = 0x1B6 // 438\n\tSYS_SETEGID                         = 0x1B7 // 439\n\tSYS_SETEUID                         = 0x1B8 // 440\n\tSYS_SETGID                          = 0x1B9 // 441\n\tSYS_SETPGID                         = 0x1BA // 442\n\tSYS_SETSID                          = 0x1BB // 443\n\tSYS_SETUID                          = 0x1BC // 444\n\tSYS_SIGACTION                       = 0x1BD // 445\n\tSYS_SIGADDSET                       = 0x1BE // 446\n\tSYS_SIGDELSET                       = 0x1BF // 447\n\tSYS_SIGEMPTYSET                     = 0x1C0 // 448\n\tSYS_SIGFILLSET                      = 0x1C1 // 449\n\tSYS_SIGISMEMBER                     = 0x1C2 // 450\n\tSYS_SIGLONGJMP                      = 0x1C3 // 451\n\tSYS_SIGPENDING                      = 0x1C4 // 452\n\tSYS_SIGPROCMASK                     = 0x1C5 // 453\n\tSYS_SIGSETJMP                       = 0x1C6 // 454\n\tSYS_SIGSUSPEND                      = 0x1C7 // 455\n\tSYS_SLEEP                           = 0x1C8 // 456\n\tSYS_STAT                            = 0x1C9 // 457\n\tSYS_W_STATFS                        = 0x1CA // 458\n\tSYS_SYMLINK                         = 0x1CB // 459\n\tSYS_SYSCONF                         = 0x1CC // 460\n\tSYS_TCDRAIN                         = 0x1CD // 461\n\tSYS_TCFLOW                          = 0x1CE // 462\n\tSYS_TCFLUSH                         = 0x1CF // 463\n\tSYS_TCGETATTR                       = 0x1D0 // 464\n\tSYS_TCGETPGRP                       = 0x1D1 // 465\n\tSYS_TCSENDBREAK                     = 0x1D2 // 466\n\tSYS_TCSETATTR                       = 0x1D3 // 467\n\tSYS_TCSETPGRP                       = 0x1D4 // 468\n\tSYS_TIMES                           = 0x1D5 // 469\n\tSYS_TTYNAME                         = 0x1D6 // 470\n\tSYS_TZSET                           = 0x1D7 // 471\n\tSYS_UMASK                           = 0x1D8 // 472\n\tSYS_UMOUNT                          = 0x1D9 // 473\n\tSYS_UNAME                           = 0x1DA // 474\n\tSYS_UNLINK                          = 0x1DB // 475\n\tSYS_UTIME                           = 0x1DC // 476\n\tSYS_WAIT                            = 0x1DD // 477\n\tSYS_WAITPID                         = 0x1DE // 478\n\tSYS_WRITE                           = 0x1DF // 479\n\tSYS_CHAUDIT                         = 0x1E0 // 480\n\tSYS_FCHAUDIT                        = 0x1E1 // 481\n\tSYS_GETGROUPSBYNAME                 = 0x1E2 // 482\n\tSYS_SIGWAIT                         = 0x1E3 // 483\n\tSYS_PTHREAD_EXIT                    = 0x1E4 // 484\n\tSYS_PTHREAD_KILL                    = 0x1E5 // 485\n\tSYS_PTHREAD_ATTR_INIT               = 0x1E6 // 486\n\tSYS_PTHREAD_ATTR_DESTROY            = 0x1E7 // 487\n\tSYS_PTHREAD_ATTR_SETSTACKSIZE       = 0x1E8 // 488\n\tSYS_PTHREAD_ATTR_GETSTACKSIZE       = 0x1E9 // 489\n\tSYS_PTHREAD_ATTR_SETDETACHSTATE     = 0x1EA // 490\n\tSYS_PTHREAD_ATTR_GETDETACHSTATE     = 0x1EB // 491\n\tSYS_PTHREAD_ATTR_SETWEIGHT_NP       = 0x1EC // 492\n\tSYS_PTHREAD_ATTR_GETWEIGHT_NP       = 0x1ED // 493\n\tSYS_PTHREAD_CANCEL                  = 0x1EE // 494\n\tSYS_PTHREAD_CLEANUP_PUSH            = 0x1EF // 495\n\tSYS_PTHREAD_CLEANUP_POP             = 0x1F0 // 496\n\tSYS_PTHREAD_CONDATTR_INIT           = 0x1F1 // 497\n\tSYS_PTHREAD_CONDATTR_DESTROY        = 0x1F2 // 498\n\tSYS_PTHREAD_COND_INIT               = 0x1F3 // 499\n\tSYS_PTHREAD_COND_DESTROY            = 0x1F4 // 500\n\tSYS_PTHREAD_COND_SIGNAL             = 0x1F5 // 501\n\tSYS_PTHREAD_COND_BROADCAST          = 0x1F6 // 502\n\tSYS_PTHREAD_COND_WAIT               = 0x1F7 // 503\n\tSYS_PTHREAD_COND_TIMEDWAIT          = 0x1F8 // 504\n\tSYS_PTHREAD_CREATE                  = 0x1F9 // 505\n\tSYS_PTHREAD_DETACH                  = 0x1FA // 506\n\tSYS_PTHREAD_EQUAL                   = 0x1FB // 507\n\tSYS_PTHREAD_GETSPECIFIC             = 0x1FC // 508\n\tSYS_PTHREAD_JOIN                    = 0x1FD // 509\n\tSYS_PTHREAD_KEY_CREATE              = 0x1FE // 510\n\tSYS_PTHREAD_MUTEXATTR_INIT          = 0x1FF // 511\n\tSYS_PTHREAD_MUTEXATTR_DESTROY       = 0x200 // 512\n\tSYS_PTHREAD_MUTEXATTR_SETKIND_NP    = 0x201 // 513\n\tSYS_PTHREAD_MUTEXATTR_GETKIND_NP    = 0x202 // 514\n\tSYS_PTHREAD_MUTEX_INIT              = 0x203 // 515\n\tSYS_PTHREAD_MUTEX_DESTROY           = 0x204 // 516\n\tSYS_PTHREAD_MUTEX_LOCK              = 0x205 // 517\n\tSYS_PTHREAD_MUTEX_TRYLOCK           = 0x206 // 518\n\tSYS_PTHREAD_MUTEX_UNLOCK            = 0x207 // 519\n\tSYS_PTHREAD_ONCE                    = 0x209 // 521\n\tSYS_PTHREAD_SELF                    = 0x20A // 522\n\tSYS_PTHREAD_SETINTR                 = 0x20B // 523\n\tSYS_PTHREAD_SETINTRTYPE             = 0x20C // 524\n\tSYS_PTHREAD_SETSPECIFIC             = 0x20D // 525\n\tSYS_PTHREAD_TESTINTR                = 0x20E // 526\n\tSYS_PTHREAD_YIELD                   = 0x20F // 527\n\tSYS_TW_OPEN                         = 0x210 // 528\n\tSYS_TW_FCNTL                        = 0x211 // 529\n\tSYS_PTHREAD_JOIN_D4_NP              = 0x212 // 530\n\tSYS_PTHREAD_CONDATTR_SETKIND_NP     = 0x213 // 531\n\tSYS_PTHREAD_CONDATTR_GETKIND_NP     = 0x214 // 532\n\tSYS_EXTLINK_NP                      = 0x215 // 533\n\tSYS___PASSWD                        = 0x216 // 534\n\tSYS_SETGROUPS                       = 0x217 // 535\n\tSYS_INITGROUPS                      = 0x218 // 536\n\tSYS_WCSPBRK                         = 0x23F // 575\n\tSYS_WCSRCHR                         = 0x240 // 576\n\tSYS_SVC99                           = 0x241 // 577\n\tSYS___SVC99                         = 0x241 // 577\n\tSYS_WCSWCS                          = 0x242 // 578\n\tSYS_LOCALECO                        = 0x243 // 579\n\tSYS_LOCALECONV                      = 0x243 // 579\n\tSYS___LIBREL                        = 0x244 // 580\n\tSYS_RELEASE                         = 0x245 // 581\n\tSYS___RLSE                          = 0x245 // 581\n\tSYS_FLOCATE                         = 0x246 // 582\n\tSYS___FLOCT                         = 0x246 // 582\n\tSYS_FDELREC                         = 0x247 // 583\n\tSYS___FDLREC                        = 0x247 // 583\n\tSYS_FETCH                           = 0x248 // 584\n\tSYS___FETCH                         = 0x248 // 584\n\tSYS_QSORT                           = 0x249 // 585\n\tSYS_GETENV                          = 0x24A // 586\n\tSYS_SYSTEM                          = 0x24B // 587\n\tSYS_BSEARCH                         = 0x24C // 588\n\tSYS_LDIV                            = 0x24D // 589\n\tSYS___THROW                         = 0x25E // 606\n\tSYS___RETHROW                       = 0x25F // 607\n\tSYS___CLEANUPCATCH                  = 0x260 // 608\n\tSYS___CATCHMATCH                    = 0x261 // 609\n\tSYS___CLEAN2UPCATCH                 = 0x262 // 610\n\tSYS_PUTENV                          = 0x26A // 618\n\tSYS___GETENV                        = 0x26F // 623\n\tSYS_GETPRIORITY                     = 0x270 // 624\n\tSYS_NICE                            = 0x271 // 625\n\tSYS_SETPRIORITY                     = 0x272 // 626\n\tSYS_GETITIMER                       = 0x273 // 627\n\tSYS_SETITIMER                       = 0x274 // 628\n\tSYS_MSGCTL                          = 0x275 // 629\n\tSYS_MSGGET                          = 0x276 // 630\n\tSYS_MSGRCV                          = 0x277 // 631\n\tSYS_MSGSND                          = 0x278 // 632\n\tSYS_MSGXRCV                         = 0x279 // 633\n\tSYS___MSGXR                         = 0x279 // 633\n\tSYS_SEMCTL                          = 0x27A // 634\n\tSYS_SEMGET                          = 0x27B // 635\n\tSYS_SEMOP                           = 0x27C // 636\n\tSYS_SHMAT                           = 0x27D // 637\n\tSYS_SHMCTL                          = 0x27E // 638\n\tSYS_SHMDT                           = 0x27F // 639\n\tSYS_SHMGET                          = 0x280 // 640\n\tSYS___GETIPC                        = 0x281 // 641\n\tSYS_SETGRENT                        = 0x282 // 642\n\tSYS_GETGRENT                        = 0x283 // 643\n\tSYS_ENDGRENT                        = 0x284 // 644\n\tSYS_SETPWENT                        = 0x285 // 645\n\tSYS_GETPWENT                        = 0x286 // 646\n\tSYS_ENDPWENT                        = 0x287 // 647\n\tSYS_BSD_SIGNAL                      = 0x288 // 648\n\tSYS_KILLPG                          = 0x289 // 649\n\tSYS_SIGALTSTACK                     = 0x28A // 650\n\tSYS_SIGHOLD                         = 0x28B // 651\n\tSYS_SIGIGNORE                       = 0x28C // 652\n\tSYS_SIGINTERRUPT                    = 0x28D // 653\n\tSYS_SIGPAUSE                        = 0x28E // 654\n\tSYS_SIGRELSE                        = 0x28F // 655\n\tSYS_SIGSET                          = 0x290 // 656\n\tSYS_SIGSTACK                        = 0x291 // 657\n\tSYS_GETRLIMIT                       = 0x292 // 658\n\tSYS_SETRLIMIT                       = 0x293 // 659\n\tSYS_GETRUSAGE                       = 0x294 // 660\n\tSYS_MMAP                            = 0x295 // 661\n\tSYS_MPROTECT                        = 0x296 // 662\n\tSYS_MSYNC                           = 0x297 // 663\n\tSYS_MUNMAP                          = 0x298 // 664\n\tSYS_CONFSTR                         = 0x299 // 665\n\tSYS_GETOPT                          = 0x29A // 666\n\tSYS_LCHOWN                          = 0x29B // 667\n\tSYS_TRUNCATE                        = 0x29C // 668\n\tSYS_GETSUBOPT                       = 0x29D // 669\n\tSYS_SETPGRP                         = 0x29E // 670\n\tSYS___GDERR                         = 0x29F // 671\n\tSYS___TZONE                         = 0x2A0 // 672\n\tSYS___DLGHT                         = 0x2A1 // 673\n\tSYS___OPARGF                        = 0x2A2 // 674\n\tSYS___OPOPTF                        = 0x2A3 // 675\n\tSYS___OPINDF                        = 0x2A4 // 676\n\tSYS___OPERRF                        = 0x2A5 // 677\n\tSYS_GETDATE                         = 0x2A6 // 678\n\tSYS_WAIT3                           = 0x2A7 // 679\n\tSYS_WAITID                          = 0x2A8 // 680\n\tSYS___CATTRM                        = 0x2A9 // 681\n\tSYS___GDTRM                         = 0x2AA // 682\n\tSYS___RNDTRM                        = 0x2AB // 683\n\tSYS_CRYPT                           = 0x2AC // 684\n\tSYS_ENCRYPT                         = 0x2AD // 685\n\tSYS_SETKEY                          = 0x2AE // 686\n\tSYS___CNVBLK                        = 0x2AF // 687\n\tSYS___CRYTRM                        = 0x2B0 // 688\n\tSYS___ECRTRM                        = 0x2B1 // 689\n\tSYS_DRAND48                         = 0x2B2 // 690\n\tSYS_ERAND48                         = 0x2B3 // 691\n\tSYS_FSTATVFS                        = 0x2B4 // 692\n\tSYS_STATVFS                         = 0x2B5 // 693\n\tSYS_CATCLOSE                        = 0x2B6 // 694\n\tSYS_CATGETS                         = 0x2B7 // 695\n\tSYS_CATOPEN                         = 0x2B8 // 696\n\tSYS_BCMP                            = 0x2B9 // 697\n\tSYS_BCOPY                           = 0x2BA // 698\n\tSYS_BZERO                           = 0x2BB // 699\n\tSYS_FFS                             = 0x2BC // 700\n\tSYS_INDEX                           = 0x2BD // 701\n\tSYS_RINDEX                          = 0x2BE // 702\n\tSYS_STRCASECMP                      = 0x2BF // 703\n\tSYS_STRDUP                          = 0x2C0 // 704\n\tSYS_STRNCASECMP                     = 0x2C1 // 705\n\tSYS_INITSTATE                       = 0x2C2 // 706\n\tSYS_SETSTATE                        = 0x2C3 // 707\n\tSYS_RANDOM                          = 0x2C4 // 708\n\tSYS_SRANDOM                         = 0x2C5 // 709\n\tSYS_HCREATE                         = 0x2C6 // 710\n\tSYS_HDESTROY                        = 0x2C7 // 711\n\tSYS_HSEARCH                         = 0x2C8 // 712\n\tSYS_LFIND                           = 0x2C9 // 713\n\tSYS_LSEARCH                         = 0x2CA // 714\n\tSYS_TDELETE                         = 0x2CB // 715\n\tSYS_TFIND                           = 0x2CC // 716\n\tSYS_TSEARCH                         = 0x2CD // 717\n\tSYS_TWALK                           = 0x2CE // 718\n\tSYS_INSQUE                          = 0x2CF // 719\n\tSYS_REMQUE                          = 0x2D0 // 720\n\tSYS_POPEN                           = 0x2D1 // 721\n\tSYS_PCLOSE                          = 0x2D2 // 722\n\tSYS_SWAB                            = 0x2D3 // 723\n\tSYS_MEMCCPY                         = 0x2D4 // 724\n\tSYS_GETPAGESIZE                     = 0x2D8 // 728\n\tSYS_FCHDIR                          = 0x2D9 // 729\n\tSYS___OCLCK                         = 0x2DA // 730\n\tSYS___ATOE                          = 0x2DB // 731\n\tSYS___ATOE_L                        = 0x2DC // 732\n\tSYS___ETOA                          = 0x2DD // 733\n\tSYS___ETOA_L                        = 0x2DE // 734\n\tSYS_SETUTXENT                       = 0x2DF // 735\n\tSYS_GETUTXENT                       = 0x2E0 // 736\n\tSYS_ENDUTXENT                       = 0x2E1 // 737\n\tSYS_GETUTXID                        = 0x2E2 // 738\n\tSYS_GETUTXLINE                      = 0x2E3 // 739\n\tSYS_PUTUTXLINE                      = 0x2E4 // 740\n\tSYS_FMTMSG                          = 0x2E5 // 741\n\tSYS_JRAND48                         = 0x2E6 // 742\n\tSYS_LRAND48                         = 0x2E7 // 743\n\tSYS_MRAND48                         = 0x2E8 // 744\n\tSYS_NRAND48                         = 0x2E9 // 745\n\tSYS_LCONG48                         = 0x2EA // 746\n\tSYS_SRAND48                         = 0x2EB // 747\n\tSYS_SEED48                          = 0x2EC // 748\n\tSYS_ISASCII                         = 0x2ED // 749\n\tSYS_TOASCII                         = 0x2EE // 750\n\tSYS_A64L                            = 0x2EF // 751\n\tSYS_L64A                            = 0x2F0 // 752\n\tSYS_UALARM                          = 0x2F1 // 753\n\tSYS_USLEEP                          = 0x2F2 // 754\n\tSYS___UTXTRM                        = 0x2F3 // 755\n\tSYS___SRCTRM                        = 0x2F4 // 756\n\tSYS_FTIME                           = 0x2F5 // 757\n\tSYS_GETTIMEOFDAY                    = 0x2F6 // 758\n\tSYS_DBM_CLEARERR                    = 0x2F7 // 759\n\tSYS_DBM_CLOSE                       = 0x2F8 // 760\n\tSYS_DBM_DELETE                      = 0x2F9 // 761\n\tSYS_DBM_ERROR                       = 0x2FA // 762\n\tSYS_DBM_FETCH                       = 0x2FB // 763\n\tSYS_DBM_FIRSTKEY                    = 0x2FC // 764\n\tSYS_DBM_NEXTKEY                     = 0x2FD // 765\n\tSYS_DBM_OPEN                        = 0x2FE // 766\n\tSYS_DBM_STORE                       = 0x2FF // 767\n\tSYS___NDMTRM                        = 0x300 // 768\n\tSYS_FTOK                            = 0x301 // 769\n\tSYS_BASENAME                        = 0x302 // 770\n\tSYS_DIRNAME                         = 0x303 // 771\n\tSYS_GETDTABLESIZE                   = 0x304 // 772\n\tSYS_MKSTEMP                         = 0x305 // 773\n\tSYS_MKTEMP                          = 0x306 // 774\n\tSYS_NFTW                            = 0x307 // 775\n\tSYS_GETWD                           = 0x308 // 776\n\tSYS_LOCKF                           = 0x309 // 777\n\tSYS__LONGJMP                        = 0x30D // 781\n\tSYS__SETJMP                         = 0x30E // 782\n\tSYS_VFORK                           = 0x30F // 783\n\tSYS_WORDEXP                         = 0x310 // 784\n\tSYS_WORDFREE                        = 0x311 // 785\n\tSYS_GETPGID                         = 0x312 // 786\n\tSYS_GETSID                          = 0x313 // 787\n\tSYS___UTMPXNAME                     = 0x314 // 788\n\tSYS_CUSERID                         = 0x315 // 789\n\tSYS_GETPASS                         = 0x316 // 790\n\tSYS_FNMATCH                         = 0x317 // 791\n\tSYS_FTW                             = 0x318 // 792\n\tSYS_GETW                            = 0x319 // 793\n\tSYS_GLOB                            = 0x31A // 794\n\tSYS_GLOBFREE                        = 0x31B // 795\n\tSYS_PUTW                            = 0x31C // 796\n\tSYS_SEEKDIR                         = 0x31D // 797\n\tSYS_TELLDIR                         = 0x31E // 798\n\tSYS_TEMPNAM                         = 0x31F // 799\n\tSYS_ACOSH                           = 0x320 // 800\n\tSYS_ASINH                           = 0x321 // 801\n\tSYS_ATANH                           = 0x322 // 802\n\tSYS_CBRT                            = 0x323 // 803\n\tSYS_EXPM1                           = 0x324 // 804\n\tSYS_ILOGB                           = 0x325 // 805\n\tSYS_LOGB                            = 0x326 // 806\n\tSYS_LOG1P                           = 0x327 // 807\n\tSYS_NEXTAFTER                       = 0x328 // 808\n\tSYS_RINT                            = 0x329 // 809\n\tSYS_REMAINDER                       = 0x32A // 810\n\tSYS_SCALB                           = 0x32B // 811\n\tSYS_LGAMMA                          = 0x32C // 812\n\tSYS_TTYSLOT                         = 0x32D // 813\n\tSYS_GETTIMEOFDAY_R                  = 0x32E // 814\n\tSYS_SYNC                            = 0x32F // 815\n\tSYS_SPAWN                           = 0x330 // 816\n\tSYS_SPAWNP                          = 0x331 // 817\n\tSYS_GETLOGIN_UU                     = 0x332 // 818\n\tSYS_ECVT                            = 0x333 // 819\n\tSYS_FCVT                            = 0x334 // 820\n\tSYS_GCVT                            = 0x335 // 821\n\tSYS_ACCEPT                          = 0x336 // 822\n\tSYS_BIND                            = 0x337 // 823\n\tSYS_CONNECT                         = 0x338 // 824\n\tSYS_ENDHOSTENT                      = 0x339 // 825\n\tSYS_ENDPROTOENT                     = 0x33A // 826\n\tSYS_ENDSERVENT                      = 0x33B // 827\n\tSYS_GETHOSTBYADDR_R                 = 0x33C // 828\n\tSYS_GETHOSTBYADDR                   = 0x33D // 829\n\tSYS_GETHOSTBYNAME_R                 = 0x33E // 830\n\tSYS_GETHOSTBYNAME                   = 0x33F // 831\n\tSYS_GETHOSTENT                      = 0x340 // 832\n\tSYS_GETHOSTID                       = 0x341 // 833\n\tSYS_GETHOSTNAME                     = 0x342 // 834\n\tSYS_GETNETBYADDR                    = 0x343 // 835\n\tSYS_GETNETBYNAME                    = 0x344 // 836\n\tSYS_GETNETENT                       = 0x345 // 837\n\tSYS_GETPEERNAME                     = 0x346 // 838\n\tSYS_GETPROTOBYNAME                  = 0x347 // 839\n\tSYS_GETPROTOBYNUMBER                = 0x348 // 840\n\tSYS_GETPROTOENT                     = 0x349 // 841\n\tSYS_GETSERVBYNAME                   = 0x34A // 842\n\tSYS_GETSERVBYPORT                   = 0x34B // 843\n\tSYS_GETSERVENT                      = 0x34C // 844\n\tSYS_GETSOCKNAME                     = 0x34D // 845\n\tSYS_GETSOCKOPT                      = 0x34E // 846\n\tSYS_INET_ADDR                       = 0x34F // 847\n\tSYS_INET_LNAOF                      = 0x350 // 848\n\tSYS_INET_MAKEADDR                   = 0x351 // 849\n\tSYS_INET_NETOF                      = 0x352 // 850\n\tSYS_INET_NETWORK                    = 0x353 // 851\n\tSYS_INET_NTOA                       = 0x354 // 852\n\tSYS_IOCTL                           = 0x355 // 853\n\tSYS_LISTEN                          = 0x356 // 854\n\tSYS_READV                           = 0x357 // 855\n\tSYS_RECV                            = 0x358 // 856\n\tSYS_RECVFROM                        = 0x359 // 857\n\tSYS_SELECT                          = 0x35B // 859\n\tSYS_SELECTEX                        = 0x35C // 860\n\tSYS_SEND                            = 0x35D // 861\n\tSYS_SENDTO                          = 0x35F // 863\n\tSYS_SETHOSTENT                      = 0x360 // 864\n\tSYS_SETNETENT                       = 0x361 // 865\n\tSYS_SETPEER                         = 0x362 // 866\n\tSYS_SETPROTOENT                     = 0x363 // 867\n\tSYS_SETSERVENT                      = 0x364 // 868\n\tSYS_SETSOCKOPT                      = 0x365 // 869\n\tSYS_SHUTDOWN                        = 0x366 // 870\n\tSYS_SOCKET                          = 0x367 // 871\n\tSYS_SOCKETPAIR                      = 0x368 // 872\n\tSYS_WRITEV                          = 0x369 // 873\n\tSYS_CHROOT                          = 0x36A // 874\n\tSYS_W_STATVFS                       = 0x36B // 875\n\tSYS_ULIMIT                          = 0x36C // 876\n\tSYS_ISNAN                           = 0x36D // 877\n\tSYS_UTIMES                          = 0x36E // 878\n\tSYS___H_ERRNO                       = 0x36F // 879\n\tSYS_ENDNETENT                       = 0x370 // 880\n\tSYS_CLOSELOG                        = 0x371 // 881\n\tSYS_OPENLOG                         = 0x372 // 882\n\tSYS_SETLOGMASK                      = 0x373 // 883\n\tSYS_SYSLOG                          = 0x374 // 884\n\tSYS_PTSNAME                         = 0x375 // 885\n\tSYS_SETREUID                        = 0x376 // 886\n\tSYS_SETREGID                        = 0x377 // 887\n\tSYS_REALPATH                        = 0x378 // 888\n\tSYS___SIGNGAM                       = 0x379 // 889\n\tSYS_GRANTPT                         = 0x37A // 890\n\tSYS_UNLOCKPT                        = 0x37B // 891\n\tSYS_TCGETSID                        = 0x37C // 892\n\tSYS___TCGETCP                       = 0x37D // 893\n\tSYS___TCSETCP                       = 0x37E // 894\n\tSYS___TCSETTABLES                   = 0x37F // 895\n\tSYS_POLL                            = 0x380 // 896\n\tSYS_REXEC                           = 0x381 // 897\n\tSYS___ISASCII2                      = 0x382 // 898\n\tSYS___TOASCII2                      = 0x383 // 899\n\tSYS_CHPRIORITY                      = 0x384 // 900\n\tSYS_PTHREAD_ATTR_SETSYNCTYPE_NP     = 0x385 // 901\n\tSYS_PTHREAD_ATTR_GETSYNCTYPE_NP     = 0x386 // 902\n\tSYS_PTHREAD_SET_LIMIT_NP            = 0x387 // 903\n\tSYS___STNETENT                      = 0x388 // 904\n\tSYS___STPROTOENT                    = 0x389 // 905\n\tSYS___STSERVENT                     = 0x38A // 906\n\tSYS___STHOSTENT                     = 0x38B // 907\n\tSYS_NLIST                           = 0x38C // 908\n\tSYS___IPDBCS                        = 0x38D // 909\n\tSYS___IPDSPX                        = 0x38E // 910\n\tSYS___IPMSGC                        = 0x38F // 911\n\tSYS___SELECT1                       = 0x390 // 912\n\tSYS_PTHREAD_SECURITY_NP             = 0x391 // 913\n\tSYS___CHECK_RESOURCE_AUTH_NP        = 0x392 // 914\n\tSYS___CONVERT_ID_NP                 = 0x393 // 915\n\tSYS___OPENVMREL                     = 0x394 // 916\n\tSYS_WMEMCHR                         = 0x395 // 917\n\tSYS_WMEMCMP                         = 0x396 // 918\n\tSYS_WMEMCPY                         = 0x397 // 919\n\tSYS_WMEMMOVE                        = 0x398 // 920\n\tSYS_WMEMSET                         = 0x399 // 921\n\tSYS___FPUTWC                        = 0x400 // 1024\n\tSYS___PUTWC                         = 0x401 // 1025\n\tSYS___PWCHAR                        = 0x402 // 1026\n\tSYS___WCSFTM                        = 0x403 // 1027\n\tSYS___WCSTOK                        = 0x404 // 1028\n\tSYS___WCWDTH                        = 0x405 // 1029\n\tSYS_T_ACCEPT                        = 0x409 // 1033\n\tSYS_T_ALLOC                         = 0x40A // 1034\n\tSYS_T_BIND                          = 0x40B // 1035\n\tSYS_T_CLOSE                         = 0x40C // 1036\n\tSYS_T_CONNECT                       = 0x40D // 1037\n\tSYS_T_ERROR                         = 0x40E // 1038\n\tSYS_T_FREE                          = 0x40F // 1039\n\tSYS_T_GETINFO                       = 0x410 // 1040\n\tSYS_T_GETPROTADDR                   = 0x411 // 1041\n\tSYS_T_GETSTATE                      = 0x412 // 1042\n\tSYS_T_LISTEN                        = 0x413 // 1043\n\tSYS_T_LOOK                          = 0x414 // 1044\n\tSYS_T_OPEN                          = 0x415 // 1045\n\tSYS_T_OPTMGMT                       = 0x416 // 1046\n\tSYS_T_RCV                           = 0x417 // 1047\n\tSYS_T_RCVCONNECT                    = 0x418 // 1048\n\tSYS_T_RCVDIS                        = 0x419 // 1049\n\tSYS_T_RCVREL                        = 0x41A // 1050\n\tSYS_T_RCVUDATA                      = 0x41B // 1051\n\tSYS_T_RCVUDERR                      = 0x41C // 1052\n\tSYS_T_SND                           = 0x41D // 1053\n\tSYS_T_SNDDIS                        = 0x41E // 1054\n\tSYS_T_SNDREL                        = 0x41F // 1055\n\tSYS_T_SNDUDATA                      = 0x420 // 1056\n\tSYS_T_STRERROR                      = 0x421 // 1057\n\tSYS_T_SYNC                          = 0x422 // 1058\n\tSYS_T_UNBIND                        = 0x423 // 1059\n\tSYS___T_ERRNO                       = 0x424 // 1060\n\tSYS___RECVMSG2                      = 0x425 // 1061\n\tSYS___SENDMSG2                      = 0x426 // 1062\n\tSYS_FATTACH                         = 0x427 // 1063\n\tSYS_FDETACH                         = 0x428 // 1064\n\tSYS_GETMSG                          = 0x429 // 1065\n\tSYS_GETPMSG                         = 0x42A // 1066\n\tSYS_ISASTREAM                       = 0x42B // 1067\n\tSYS_PUTMSG                          = 0x42C // 1068\n\tSYS_PUTPMSG                         = 0x42D // 1069\n\tSYS___ISPOSIXON                     = 0x42E // 1070\n\tSYS___OPENMVSREL                    = 0x42F // 1071\n\tSYS_GETCONTEXT                      = 0x430 // 1072\n\tSYS_SETCONTEXT                      = 0x431 // 1073\n\tSYS_MAKECONTEXT                     = 0x432 // 1074\n\tSYS_SWAPCONTEXT                     = 0x433 // 1075\n\tSYS_PTHREAD_GETSPECIFIC_D8_NP       = 0x434 // 1076\n\tSYS_GETCLIENTID                     = 0x470 // 1136\n\tSYS___GETCLIENTID                   = 0x471 // 1137\n\tSYS_GETSTABLESIZE                   = 0x472 // 1138\n\tSYS_GETIBMOPT                       = 0x473 // 1139\n\tSYS_GETIBMSOCKOPT                   = 0x474 // 1140\n\tSYS_GIVESOCKET                      = 0x475 // 1141\n\tSYS_IBMSFLUSH                       = 0x476 // 1142\n\tSYS_MAXDESC                         = 0x477 // 1143\n\tSYS_SETIBMOPT                       = 0x478 // 1144\n\tSYS_SETIBMSOCKOPT                   = 0x479 // 1145\n\tSYS_SOCK_DEBUG                      = 0x47A // 1146\n\tSYS_SOCK_DO_TESTSTOR                = 0x47D // 1149\n\tSYS_TAKESOCKET                      = 0x47E // 1150\n\tSYS___SERVER_INIT                   = 0x47F // 1151\n\tSYS___SERVER_PWU                    = 0x480 // 1152\n\tSYS_PTHREAD_TAG_NP                  = 0x481 // 1153\n\tSYS___CONSOLE                       = 0x482 // 1154\n\tSYS___WSINIT                        = 0x483 // 1155\n\tSYS___IPTCPN                        = 0x489 // 1161\n\tSYS___SMF_RECORD                    = 0x48A // 1162\n\tSYS___IPHOST                        = 0x48B // 1163\n\tSYS___IPNODE                        = 0x48C // 1164\n\tSYS___SERVER_CLASSIFY_CREATE        = 0x48D // 1165\n\tSYS___SERVER_CLASSIFY_DESTROY       = 0x48E // 1166\n\tSYS___SERVER_CLASSIFY_RESET         = 0x48F // 1167\n\tSYS___SERVER_CLASSIFY               = 0x490 // 1168\n\tSYS___HEAPRPT                       = 0x496 // 1174\n\tSYS___FNWSA                         = 0x49B // 1179\n\tSYS___SPAWN2                        = 0x49D // 1181\n\tSYS___SPAWNP2                       = 0x49E // 1182\n\tSYS___GDRR                          = 0x4A1 // 1185\n\tSYS___HRRNO                         = 0x4A2 // 1186\n\tSYS___OPRG                          = 0x4A3 // 1187\n\tSYS___OPRR                          = 0x4A4 // 1188\n\tSYS___OPND                          = 0x4A5 // 1189\n\tSYS___OPPT                          = 0x4A6 // 1190\n\tSYS___SIGGM                         = 0x4A7 // 1191\n\tSYS___DGHT                          = 0x4A8 // 1192\n\tSYS___TZNE                          = 0x4A9 // 1193\n\tSYS___TZZN                          = 0x4AA // 1194\n\tSYS___TRRNO                         = 0x4AF // 1199\n\tSYS___ENVN                          = 0x4B0 // 1200\n\tSYS___MLOCKALL                      = 0x4B1 // 1201\n\tSYS_CREATEWO                        = 0x4B2 // 1202\n\tSYS_CREATEWORKUNIT                  = 0x4B2 // 1202\n\tSYS_CONTINUE                        = 0x4B3 // 1203\n\tSYS_CONTINUEWORKUNIT                = 0x4B3 // 1203\n\tSYS_CONNECTW                        = 0x4B4 // 1204\n\tSYS_CONNECTWORKMGR                  = 0x4B4 // 1204\n\tSYS_CONNECTS                        = 0x4B5 // 1205\n\tSYS_CONNECTSERVER                   = 0x4B5 // 1205\n\tSYS_DISCONNE                        = 0x4B6 // 1206\n\tSYS_DISCONNECTSERVER                = 0x4B6 // 1206\n\tSYS_JOINWORK                        = 0x4B7 // 1207\n\tSYS_JOINWORKUNIT                    = 0x4B7 // 1207\n\tSYS_LEAVEWOR                        = 0x4B8 // 1208\n\tSYS_LEAVEWORKUNIT                   = 0x4B8 // 1208\n\tSYS_DELETEWO                        = 0x4B9 // 1209\n\tSYS_DELETEWORKUNIT                  = 0x4B9 // 1209\n\tSYS_QUERYMET                        = 0x4BA // 1210\n\tSYS_QUERYMETRICS                    = 0x4BA // 1210\n\tSYS_QUERYSCH                        = 0x4BB // 1211\n\tSYS_QUERYSCHENV                     = 0x4BB // 1211\n\tSYS_CHECKSCH                        = 0x4BC // 1212\n\tSYS_CHECKSCHENV                     = 0x4BC // 1212\n\tSYS___PID_AFFINITY                  = 0x4BD // 1213\n\tSYS___ASINH_B                       = 0x4BE // 1214\n\tSYS___ATAN_B                        = 0x4BF // 1215\n\tSYS___CBRT_B                        = 0x4C0 // 1216\n\tSYS___CEIL_B                        = 0x4C1 // 1217\n\tSYS_COPYSIGN                        = 0x4C2 // 1218\n\tSYS___COS_B                         = 0x4C3 // 1219\n\tSYS___ERF_B                         = 0x4C4 // 1220\n\tSYS___ERFC_B                        = 0x4C5 // 1221\n\tSYS___EXPM1_B                       = 0x4C6 // 1222\n\tSYS___FABS_B                        = 0x4C7 // 1223\n\tSYS_FINITE                          = 0x4C8 // 1224\n\tSYS___FLOOR_B                       = 0x4C9 // 1225\n\tSYS___FREXP_B                       = 0x4CA // 1226\n\tSYS___ILOGB_B                       = 0x4CB // 1227\n\tSYS___ISNAN_B                       = 0x4CC // 1228\n\tSYS___LDEXP_B                       = 0x4CD // 1229\n\tSYS___LOG1P_B                       = 0x4CE // 1230\n\tSYS___LOGB_B                        = 0x4CF // 1231\n\tSYS_MATHERR                         = 0x4D0 // 1232\n\tSYS___MODF_B                        = 0x4D1 // 1233\n\tSYS___NEXTAFTER_B                   = 0x4D2 // 1234\n\tSYS___RINT_B                        = 0x4D3 // 1235\n\tSYS_SCALBN                          = 0x4D4 // 1236\n\tSYS_SIGNIFIC                        = 0x4D5 // 1237\n\tSYS_SIGNIFICAND                     = 0x4D5 // 1237\n\tSYS___SIN_B                         = 0x4D6 // 1238\n\tSYS___TAN_B                         = 0x4D7 // 1239\n\tSYS___TANH_B                        = 0x4D8 // 1240\n\tSYS___ACOS_B                        = 0x4D9 // 1241\n\tSYS___ACOSH_B                       = 0x4DA // 1242\n\tSYS___ASIN_B                        = 0x4DB // 1243\n\tSYS___ATAN2_B                       = 0x4DC // 1244\n\tSYS___ATANH_B                       = 0x4DD // 1245\n\tSYS___COSH_B                        = 0x4DE // 1246\n\tSYS___EXP_B                         = 0x4DF // 1247\n\tSYS___FMOD_B                        = 0x4E0 // 1248\n\tSYS___GAMMA_B                       = 0x4E1 // 1249\n\tSYS_GAMMA_R                         = 0x4E2 // 1250\n\tSYS___HYPOT_B                       = 0x4E3 // 1251\n\tSYS___J0_B                          = 0x4E4 // 1252\n\tSYS___Y0_B                          = 0x4E5 // 1253\n\tSYS___J1_B                          = 0x4E6 // 1254\n\tSYS___Y1_B                          = 0x4E7 // 1255\n\tSYS___JN_B                          = 0x4E8 // 1256\n\tSYS___YN_B                          = 0x4E9 // 1257\n\tSYS___LGAMMA_B                      = 0x4EA // 1258\n\tSYS_LGAMMA_R                        = 0x4EB // 1259\n\tSYS___LOG_B                         = 0x4EC // 1260\n\tSYS___LOG10_B                       = 0x4ED // 1261\n\tSYS___POW_B                         = 0x4EE // 1262\n\tSYS___REMAINDER_B                   = 0x4EF // 1263\n\tSYS___SCALB_B                       = 0x4F0 // 1264\n\tSYS___SINH_B                        = 0x4F1 // 1265\n\tSYS___SQRT_B                        = 0x4F2 // 1266\n\tSYS___OPENDIR2                      = 0x4F3 // 1267\n\tSYS___READDIR2                      = 0x4F4 // 1268\n\tSYS___LOGIN                         = 0x4F5 // 1269\n\tSYS___OPEN_STAT                     = 0x4F6 // 1270\n\tSYS_ACCEPT_AND_RECV                 = 0x4F7 // 1271\n\tSYS___FP_SETMODE                    = 0x4F8 // 1272\n\tSYS___SIGACTIONSET                  = 0x4FB // 1275\n\tSYS___UCREATE                       = 0x4FC // 1276\n\tSYS___UMALLOC                       = 0x4FD // 1277\n\tSYS___UFREE                         = 0x4FE // 1278\n\tSYS___UHEAPREPORT                   = 0x4FF // 1279\n\tSYS___ISBFP                         = 0x500 // 1280\n\tSYS___FP_CAST                       = 0x501 // 1281\n\tSYS___CERTIFICATE                   = 0x502 // 1282\n\tSYS_SEND_FILE                       = 0x503 // 1283\n\tSYS_AIO_CANCEL                      = 0x504 // 1284\n\tSYS_AIO_ERROR                       = 0x505 // 1285\n\tSYS_AIO_READ                        = 0x506 // 1286\n\tSYS_AIO_RETURN                      = 0x507 // 1287\n\tSYS_AIO_SUSPEND                     = 0x508 // 1288\n\tSYS_AIO_WRITE                       = 0x509 // 1289\n\tSYS_PTHREAD_MUTEXATTR_GETPSHARED    = 0x50A // 1290\n\tSYS_PTHREAD_MUTEXATTR_SETPSHARED    = 0x50B // 1291\n\tSYS_PTHREAD_RWLOCK_DESTROY          = 0x50C // 1292\n\tSYS_PTHREAD_RWLOCK_INIT             = 0x50D // 1293\n\tSYS_PTHREAD_RWLOCK_RDLOCK           = 0x50E // 1294\n\tSYS_PTHREAD_RWLOCK_TRYRDLOCK        = 0x50F // 1295\n\tSYS_PTHREAD_RWLOCK_TRYWRLOCK        = 0x510 // 1296\n\tSYS_PTHREAD_RWLOCK_UNLOCK           = 0x511 // 1297\n\tSYS_PTHREAD_RWLOCK_WRLOCK           = 0x512 // 1298\n\tSYS_PTHREAD_RWLOCKATTR_GETPSHARED   = 0x513 // 1299\n\tSYS_PTHREAD_RWLOCKATTR_SETPSHARED   = 0x514 // 1300\n\tSYS_PTHREAD_RWLOCKATTR_INIT         = 0x515 // 1301\n\tSYS_PTHREAD_RWLOCKATTR_DESTROY      = 0x516 // 1302\n\tSYS___CTTBL                         = 0x517 // 1303\n\tSYS_PTHREAD_MUTEXATTR_SETTYPE       = 0x518 // 1304\n\tSYS_PTHREAD_MUTEXATTR_GETTYPE       = 0x519 // 1305\n\tSYS___FP_CLR_FLAG                   = 0x51A // 1306\n\tSYS___FP_READ_FLAG                  = 0x51B // 1307\n\tSYS___FP_RAISE_XCP                  = 0x51C // 1308\n\tSYS___FP_CLASS                      = 0x51D // 1309\n\tSYS___FP_FINITE                     = 0x51E // 1310\n\tSYS___FP_ISNAN                      = 0x51F // 1311\n\tSYS___FP_UNORDERED                  = 0x520 // 1312\n\tSYS___FP_READ_RND                   = 0x521 // 1313\n\tSYS___FP_READ_RND_B                 = 0x522 // 1314\n\tSYS___FP_SWAP_RND                   = 0x523 // 1315\n\tSYS___FP_SWAP_RND_B                 = 0x524 // 1316\n\tSYS___FP_LEVEL                      = 0x525 // 1317\n\tSYS___FP_BTOH                       = 0x526 // 1318\n\tSYS___FP_HTOB                       = 0x527 // 1319\n\tSYS___FPC_RD                        = 0x528 // 1320\n\tSYS___FPC_WR                        = 0x529 // 1321\n\tSYS___FPC_RW                        = 0x52A // 1322\n\tSYS___FPC_SM                        = 0x52B // 1323\n\tSYS___FPC_RS                        = 0x52C // 1324\n\tSYS_SIGTIMEDWAIT                    = 0x52D // 1325\n\tSYS_SIGWAITINFO                     = 0x52E // 1326\n\tSYS___CHKBFP                        = 0x52F // 1327\n\tSYS___W_PIOCTL                      = 0x59E // 1438\n\tSYS___OSENV                         = 0x59F // 1439\n\tSYS_EXPORTWO                        = 0x5A1 // 1441\n\tSYS_EXPORTWORKUNIT                  = 0x5A1 // 1441\n\tSYS_UNDOEXPO                        = 0x5A2 // 1442\n\tSYS_UNDOEXPORTWORKUNIT              = 0x5A2 // 1442\n\tSYS_IMPORTWO                        = 0x5A3 // 1443\n\tSYS_IMPORTWORKUNIT                  = 0x5A3 // 1443\n\tSYS_UNDOIMPO                        = 0x5A4 // 1444\n\tSYS_UNDOIMPORTWORKUNIT              = 0x5A4 // 1444\n\tSYS_EXTRACTW                        = 0x5A5 // 1445\n\tSYS_EXTRACTWORKUNIT                 = 0x5A5 // 1445\n\tSYS___CPL                           = 0x5A6 // 1446\n\tSYS___MAP_INIT                      = 0x5A7 // 1447\n\tSYS___MAP_SERVICE                   = 0x5A8 // 1448\n\tSYS_SIGQUEUE                        = 0x5A9 // 1449\n\tSYS___MOUNT                         = 0x5AA // 1450\n\tSYS___GETUSERID                     = 0x5AB // 1451\n\tSYS___IPDOMAINNAME                  = 0x5AC // 1452\n\tSYS_QUERYENC                        = 0x5AD // 1453\n\tSYS_QUERYWORKUNITCLASSIFICATION     = 0x5AD // 1453\n\tSYS_CONNECTE                        = 0x5AE // 1454\n\tSYS_CONNECTEXPORTIMPORT             = 0x5AE // 1454\n\tSYS___FP_SWAPMODE                   = 0x5AF // 1455\n\tSYS_STRTOLL                         = 0x5B0 // 1456\n\tSYS_STRTOULL                        = 0x5B1 // 1457\n\tSYS___DSA_PREV                      = 0x5B2 // 1458\n\tSYS___EP_FIND                       = 0x5B3 // 1459\n\tSYS___SERVER_THREADS_QUERY          = 0x5B4 // 1460\n\tSYS___MSGRCV_TIMED                  = 0x5B7 // 1463\n\tSYS___SEMOP_TIMED                   = 0x5B8 // 1464\n\tSYS___GET_CPUID                     = 0x5B9 // 1465\n\tSYS___GET_SYSTEM_SETTINGS           = 0x5BA // 1466\n\tSYS_FTELLO                          = 0x5C8 // 1480\n\tSYS_FSEEKO                          = 0x5C9 // 1481\n\tSYS_LLDIV                           = 0x5CB // 1483\n\tSYS_WCSTOLL                         = 0x5CC // 1484\n\tSYS_WCSTOULL                        = 0x5CD // 1485\n\tSYS_LLABS                           = 0x5CE // 1486\n\tSYS___CONSOLE2                      = 0x5D2 // 1490\n\tSYS_INET_NTOP                       = 0x5D3 // 1491\n\tSYS_INET_PTON                       = 0x5D4 // 1492\n\tSYS___RES                           = 0x5D6 // 1494\n\tSYS_RES_MKQUERY                     = 0x5D7 // 1495\n\tSYS_RES_INIT                        = 0x5D8 // 1496\n\tSYS_RES_QUERY                       = 0x5D9 // 1497\n\tSYS_RES_SEARCH                      = 0x5DA // 1498\n\tSYS_RES_SEND                        = 0x5DB // 1499\n\tSYS_RES_QUERYDOMAIN                 = 0x5DC // 1500\n\tSYS_DN_EXPAND                       = 0x5DD // 1501\n\tSYS_DN_SKIPNAME                     = 0x5DE // 1502\n\tSYS_DN_COMP                         = 0x5DF // 1503\n\tSYS_ASCTIME_R                       = 0x5E0 // 1504\n\tSYS_CTIME_R                         = 0x5E1 // 1505\n\tSYS_GMTIME_R                        = 0x5E2 // 1506\n\tSYS_LOCALTIME_R                     = 0x5E3 // 1507\n\tSYS_RAND_R                          = 0x5E4 // 1508\n\tSYS_STRTOK_R                        = 0x5E5 // 1509\n\tSYS_READDIR_R                       = 0x5E6 // 1510\n\tSYS_GETGRGID_R                      = 0x5E7 // 1511\n\tSYS_GETGRNAM_R                      = 0x5E8 // 1512\n\tSYS_GETLOGIN_R                      = 0x5E9 // 1513\n\tSYS_GETPWNAM_R                      = 0x5EA // 1514\n\tSYS_GETPWUID_R                      = 0x5EB // 1515\n\tSYS_TTYNAME_R                       = 0x5EC // 1516\n\tSYS_PTHREAD_ATFORK                  = 0x5ED // 1517\n\tSYS_PTHREAD_ATTR_GETGUARDSIZE       = 0x5EE // 1518\n\tSYS_PTHREAD_ATTR_GETSTACKADDR       = 0x5EF // 1519\n\tSYS_PTHREAD_ATTR_SETGUARDSIZE       = 0x5F0 // 1520\n\tSYS_PTHREAD_ATTR_SETSTACKADDR       = 0x5F1 // 1521\n\tSYS_PTHREAD_CONDATTR_GETPSHARED     = 0x5F2 // 1522\n\tSYS_PTHREAD_CONDATTR_SETPSHARED     = 0x5F3 // 1523\n\tSYS_PTHREAD_GETCONCURRENCY          = 0x5F4 // 1524\n\tSYS_PTHREAD_KEY_DELETE              = 0x5F5 // 1525\n\tSYS_PTHREAD_SETCONCURRENCY          = 0x5F6 // 1526\n\tSYS_PTHREAD_SIGMASK                 = 0x5F7 // 1527\n\tSYS___DISCARDDATA                   = 0x5F8 // 1528\n\tSYS_PTHREAD_ATTR_GETSCHEDPARAM      = 0x5F9 // 1529\n\tSYS_PTHREAD_ATTR_SETSCHEDPARAM      = 0x5FA // 1530\n\tSYS_PTHREAD_ATTR_GETDETACHSTATE_U98 = 0x5FB // 1531\n\tSYS_PTHREAD_ATTR_SETDETACHSTATE_U98 = 0x5FC // 1532\n\tSYS_PTHREAD_DETACH_U98              = 0x5FD // 1533\n\tSYS_PTHREAD_GETSPECIFIC_U98         = 0x5FE // 1534\n\tSYS_PTHREAD_SETCANCELSTATE          = 0x5FF // 1535\n\tSYS_PTHREAD_SETCANCELTYPE           = 0x600 // 1536\n\tSYS_PTHREAD_TESTCANCEL              = 0x601 // 1537\n\tSYS___ATANF_B                       = 0x602 // 1538\n\tSYS___ATANL_B                       = 0x603 // 1539\n\tSYS___CEILF_B                       = 0x604 // 1540\n\tSYS___CEILL_B                       = 0x605 // 1541\n\tSYS___COSF_B                        = 0x606 // 1542\n\tSYS___COSL_B                        = 0x607 // 1543\n\tSYS___FABSF_B                       = 0x608 // 1544\n\tSYS___FABSL_B                       = 0x609 // 1545\n\tSYS___FLOORF_B                      = 0x60A // 1546\n\tSYS___FLOORL_B                      = 0x60B // 1547\n\tSYS___FREXPF_B                      = 0x60C // 1548\n\tSYS___FREXPL_B                      = 0x60D // 1549\n\tSYS___LDEXPF_B                      = 0x60E // 1550\n\tSYS___LDEXPL_B                      = 0x60F // 1551\n\tSYS___SINF_B                        = 0x610 // 1552\n\tSYS___SINL_B                        = 0x611 // 1553\n\tSYS___TANF_B                        = 0x612 // 1554\n\tSYS___TANL_B                        = 0x613 // 1555\n\tSYS___TANHF_B                       = 0x614 // 1556\n\tSYS___TANHL_B                       = 0x615 // 1557\n\tSYS___ACOSF_B                       = 0x616 // 1558\n\tSYS___ACOSL_B                       = 0x617 // 1559\n\tSYS___ASINF_B                       = 0x618 // 1560\n\tSYS___ASINL_B                       = 0x619 // 1561\n\tSYS___ATAN2F_B                      = 0x61A // 1562\n\tSYS___ATAN2L_B                      = 0x61B // 1563\n\tSYS___COSHF_B                       = 0x61C // 1564\n\tSYS___COSHL_B                       = 0x61D // 1565\n\tSYS___EXPF_B                        = 0x61E // 1566\n\tSYS___EXPL_B                        = 0x61F // 1567\n\tSYS___LOGF_B                        = 0x620 // 1568\n\tSYS___LOGL_B                        = 0x621 // 1569\n\tSYS___LOG10F_B                      = 0x622 // 1570\n\tSYS___LOG10L_B                      = 0x623 // 1571\n\tSYS___POWF_B                        = 0x624 // 1572\n\tSYS___POWL_B                        = 0x625 // 1573\n\tSYS___SINHF_B                       = 0x626 // 1574\n\tSYS___SINHL_B                       = 0x627 // 1575\n\tSYS___SQRTF_B                       = 0x628 // 1576\n\tSYS___SQRTL_B                       = 0x629 // 1577\n\tSYS___ABSF_B                        = 0x62A // 1578\n\tSYS___ABS_B                         = 0x62B // 1579\n\tSYS___ABSL_B                        = 0x62C // 1580\n\tSYS___FMODF_B                       = 0x62D // 1581\n\tSYS___FMODL_B                       = 0x62E // 1582\n\tSYS___MODFF_B                       = 0x62F // 1583\n\tSYS___MODFL_B                       = 0x630 // 1584\n\tSYS_ABSF                            = 0x631 // 1585\n\tSYS_ABSL                            = 0x632 // 1586\n\tSYS_ACOSF                           = 0x633 // 1587\n\tSYS_ACOSL                           = 0x634 // 1588\n\tSYS_ASINF                           = 0x635 // 1589\n\tSYS_ASINL                           = 0x636 // 1590\n\tSYS_ATAN2F                          = 0x637 // 1591\n\tSYS_ATAN2L                          = 0x638 // 1592\n\tSYS_ATANF                           = 0x639 // 1593\n\tSYS_ATANL                           = 0x63A // 1594\n\tSYS_CEILF                           = 0x63B // 1595\n\tSYS_CEILL                           = 0x63C // 1596\n\tSYS_COSF                            = 0x63D // 1597\n\tSYS_COSL                            = 0x63E // 1598\n\tSYS_COSHF                           = 0x63F // 1599\n\tSYS_COSHL                           = 0x640 // 1600\n\tSYS_EXPF                            = 0x641 // 1601\n\tSYS_EXPL                            = 0x642 // 1602\n\tSYS_TANHF                           = 0x643 // 1603\n\tSYS_TANHL                           = 0x644 // 1604\n\tSYS_LOG10F                          = 0x645 // 1605\n\tSYS_LOG10L                          = 0x646 // 1606\n\tSYS_LOGF                            = 0x647 // 1607\n\tSYS_LOGL                            = 0x648 // 1608\n\tSYS_POWF                            = 0x649 // 1609\n\tSYS_POWL                            = 0x64A // 1610\n\tSYS_SINF                            = 0x64B // 1611\n\tSYS_SINL                            = 0x64C // 1612\n\tSYS_SQRTF                           = 0x64D // 1613\n\tSYS_SQRTL                           = 0x64E // 1614\n\tSYS_SINHF                           = 0x64F // 1615\n\tSYS_SINHL                           = 0x650 // 1616\n\tSYS_TANF                            = 0x651 // 1617\n\tSYS_TANL                            = 0x652 // 1618\n\tSYS_FABSF                           = 0x653 // 1619\n\tSYS_FABSL                           = 0x654 // 1620\n\tSYS_FLOORF                          = 0x655 // 1621\n\tSYS_FLOORL                          = 0x656 // 1622\n\tSYS_FMODF                           = 0x657 // 1623\n\tSYS_FMODL                           = 0x658 // 1624\n\tSYS_FREXPF                          = 0x659 // 1625\n\tSYS_FREXPL                          = 0x65A // 1626\n\tSYS_LDEXPF                          = 0x65B // 1627\n\tSYS_LDEXPL                          = 0x65C // 1628\n\tSYS_MODFF                           = 0x65D // 1629\n\tSYS_MODFL                           = 0x65E // 1630\n\tSYS_BTOWC                           = 0x65F // 1631\n\tSYS___CHATTR                        = 0x660 // 1632\n\tSYS___FCHATTR                       = 0x661 // 1633\n\tSYS___TOCCSID                       = 0x662 // 1634\n\tSYS___CSNAMETYPE                    = 0x663 // 1635\n\tSYS___TOCSNAME                      = 0x664 // 1636\n\tSYS___CCSIDTYPE                     = 0x665 // 1637\n\tSYS___AE_CORRESTBL_QUERY            = 0x666 // 1638\n\tSYS___AE_AUTOCONVERT_STATE          = 0x667 // 1639\n\tSYS_DN_FIND                         = 0x668 // 1640\n\tSYS___GETHOSTBYADDR_A               = 0x669 // 1641\n\tSYS___GETHOSTBYNAME_A               = 0x66A // 1642\n\tSYS___RES_INIT_A                    = 0x66B // 1643\n\tSYS___GETHOSTBYADDR_R_A             = 0x66C // 1644\n\tSYS___GETHOSTBYNAME_R_A             = 0x66D // 1645\n\tSYS___CHARMAP_INIT_A                = 0x66E // 1646\n\tSYS___MBLEN_A                       = 0x66F // 1647\n\tSYS___MBLEN_SB_A                    = 0x670 // 1648\n\tSYS___MBLEN_STD_A                   = 0x671 // 1649\n\tSYS___MBLEN_UTF                     = 0x672 // 1650\n\tSYS___MBSTOWCS_A                    = 0x673 // 1651\n\tSYS___MBSTOWCS_STD_A                = 0x674 // 1652\n\tSYS___MBTOWC_A                      = 0x675 // 1653\n\tSYS___MBTOWC_ISO1                   = 0x676 // 1654\n\tSYS___MBTOWC_SBCS                   = 0x677 // 1655\n\tSYS___MBTOWC_MBCS                   = 0x678 // 1656\n\tSYS___MBTOWC_UTF                    = 0x679 // 1657\n\tSYS___WCSTOMBS_A                    = 0x67A // 1658\n\tSYS___WCSTOMBS_STD_A                = 0x67B // 1659\n\tSYS___WCSWIDTH_A                    = 0x67C // 1660\n\tSYS___GETGRGID_R_A                  = 0x67D // 1661\n\tSYS___WCSWIDTH_STD_A                = 0x67E // 1662\n\tSYS___WCSWIDTH_ASIA                 = 0x67F // 1663\n\tSYS___CSID_A                        = 0x680 // 1664\n\tSYS___CSID_STD_A                    = 0x681 // 1665\n\tSYS___WCSID_A                       = 0x682 // 1666\n\tSYS___WCSID_STD_A                   = 0x683 // 1667\n\tSYS___WCTOMB_A                      = 0x684 // 1668\n\tSYS___WCTOMB_ISO1                   = 0x685 // 1669\n\tSYS___WCTOMB_STD_A                  = 0x686 // 1670\n\tSYS___WCTOMB_UTF                    = 0x687 // 1671\n\tSYS___WCWIDTH_A                     = 0x688 // 1672\n\tSYS___GETGRNAM_R_A                  = 0x689 // 1673\n\tSYS___WCWIDTH_STD_A                 = 0x68A // 1674\n\tSYS___WCWIDTH_ASIA                  = 0x68B // 1675\n\tSYS___GETPWNAM_R_A                  = 0x68C // 1676\n\tSYS___GETPWUID_R_A                  = 0x68D // 1677\n\tSYS___GETLOGIN_R_A                  = 0x68E // 1678\n\tSYS___TTYNAME_R_A                   = 0x68F // 1679\n\tSYS___READDIR_R_A                   = 0x690 // 1680\n\tSYS___E2A_S                         = 0x691 // 1681\n\tSYS___FNMATCH_A                     = 0x692 // 1682\n\tSYS___FNMATCH_C_A                   = 0x693 // 1683\n\tSYS___EXECL_A                       = 0x694 // 1684\n\tSYS___FNMATCH_STD_A                 = 0x695 // 1685\n\tSYS___REGCOMP_A                     = 0x696 // 1686\n\tSYS___REGCOMP_STD_A                 = 0x697 // 1687\n\tSYS___REGERROR_A                    = 0x698 // 1688\n\tSYS___REGERROR_STD_A                = 0x699 // 1689\n\tSYS___REGEXEC_A                     = 0x69A // 1690\n\tSYS___REGEXEC_STD_A                 = 0x69B // 1691\n\tSYS___REGFREE_A                     = 0x69C // 1692\n\tSYS___REGFREE_STD_A                 = 0x69D // 1693\n\tSYS___STRCOLL_A                     = 0x69E // 1694\n\tSYS___STRCOLL_C_A                   = 0x69F // 1695\n\tSYS___EXECLE_A                      = 0x6A0 // 1696\n\tSYS___STRCOLL_STD_A                 = 0x6A1 // 1697\n\tSYS___STRXFRM_A                     = 0x6A2 // 1698\n\tSYS___STRXFRM_C_A                   = 0x6A3 // 1699\n\tSYS___EXECLP_A                      = 0x6A4 // 1700\n\tSYS___STRXFRM_STD_A                 = 0x6A5 // 1701\n\tSYS___WCSCOLL_A                     = 0x6A6 // 1702\n\tSYS___WCSCOLL_C_A                   = 0x6A7 // 1703\n\tSYS___WCSCOLL_STD_A                 = 0x6A8 // 1704\n\tSYS___WCSXFRM_A                     = 0x6A9 // 1705\n\tSYS___WCSXFRM_C_A                   = 0x6AA // 1706\n\tSYS___WCSXFRM_STD_A                 = 0x6AB // 1707\n\tSYS___COLLATE_INIT_A                = 0x6AC // 1708\n\tSYS___WCTYPE_A                      = 0x6AD // 1709\n\tSYS___GET_WCTYPE_STD_A              = 0x6AE // 1710\n\tSYS___CTYPE_INIT_A                  = 0x6AF // 1711\n\tSYS___ISWCTYPE_A                    = 0x6B0 // 1712\n\tSYS___EXECV_A                       = 0x6B1 // 1713\n\tSYS___IS_WCTYPE_STD_A               = 0x6B2 // 1714\n\tSYS___TOWLOWER_A                    = 0x6B3 // 1715\n\tSYS___TOWLOWER_STD_A                = 0x6B4 // 1716\n\tSYS___TOWUPPER_A                    = 0x6B5 // 1717\n\tSYS___TOWUPPER_STD_A                = 0x6B6 // 1718\n\tSYS___LOCALE_INIT_A                 = 0x6B7 // 1719\n\tSYS___LOCALECONV_A                  = 0x6B8 // 1720\n\tSYS___LOCALECONV_STD_A              = 0x6B9 // 1721\n\tSYS___NL_LANGINFO_A                 = 0x6BA // 1722\n\tSYS___NL_LNAGINFO_STD_A             = 0x6BB // 1723\n\tSYS___MONETARY_INIT_A               = 0x6BC // 1724\n\tSYS___STRFMON_A                     = 0x6BD // 1725\n\tSYS___STRFMON_STD_A                 = 0x6BE // 1726\n\tSYS___GETADDRINFO_A                 = 0x6BF // 1727\n\tSYS___CATGETS_A                     = 0x6C0 // 1728\n\tSYS___EXECVE_A                      = 0x6C1 // 1729\n\tSYS___EXECVP_A                      = 0x6C2 // 1730\n\tSYS___SPAWN_A                       = 0x6C3 // 1731\n\tSYS___GETNAMEINFO_A                 = 0x6C4 // 1732\n\tSYS___SPAWNP_A                      = 0x6C5 // 1733\n\tSYS___NUMERIC_INIT_A                = 0x6C6 // 1734\n\tSYS___RESP_INIT_A                   = 0x6C7 // 1735\n\tSYS___RPMATCH_A                     = 0x6C8 // 1736\n\tSYS___RPMATCH_C_A                   = 0x6C9 // 1737\n\tSYS___RPMATCH_STD_A                 = 0x6CA // 1738\n\tSYS___TIME_INIT_A                   = 0x6CB // 1739\n\tSYS___STRFTIME_A                    = 0x6CC // 1740\n\tSYS___STRFTIME_STD_A                = 0x6CD // 1741\n\tSYS___STRPTIME_A                    = 0x6CE // 1742\n\tSYS___STRPTIME_STD_A                = 0x6CF // 1743\n\tSYS___WCSFTIME_A                    = 0x6D0 // 1744\n\tSYS___WCSFTIME_STD_A                = 0x6D1 // 1745\n\tSYS_____SPAWN2_A                    = 0x6D2 // 1746\n\tSYS_____SPAWNP2_A                   = 0x6D3 // 1747\n\tSYS___SYNTAX_INIT_A                 = 0x6D4 // 1748\n\tSYS___TOD_INIT_A                    = 0x6D5 // 1749\n\tSYS___NL_CSINFO_A                   = 0x6D6 // 1750\n\tSYS___NL_MONINFO_A                  = 0x6D7 // 1751\n\tSYS___NL_NUMINFO_A                  = 0x6D8 // 1752\n\tSYS___NL_RESPINFO_A                 = 0x6D9 // 1753\n\tSYS___NL_TIMINFO_A                  = 0x6DA // 1754\n\tSYS___IF_NAMETOINDEX_A              = 0x6DB // 1755\n\tSYS___IF_INDEXTONAME_A              = 0x6DC // 1756\n\tSYS___PRINTF_A                      = 0x6DD // 1757\n\tSYS___ICONV_OPEN_A                  = 0x6DE // 1758\n\tSYS___DLLLOAD_A                     = 0x6DF // 1759\n\tSYS___DLLQUERYFN_A                  = 0x6E0 // 1760\n\tSYS___DLLQUERYVAR_A                 = 0x6E1 // 1761\n\tSYS_____CHATTR_A                    = 0x6E2 // 1762\n\tSYS___E2A_L                         = 0x6E3 // 1763\n\tSYS_____TOCCSID_A                   = 0x6E4 // 1764\n\tSYS_____TOCSNAME_A                  = 0x6E5 // 1765\n\tSYS_____CCSIDTYPE_A                 = 0x6E6 // 1766\n\tSYS_____CSNAMETYPE_A                = 0x6E7 // 1767\n\tSYS___CHMOD_A                       = 0x6E8 // 1768\n\tSYS___MKDIR_A                       = 0x6E9 // 1769\n\tSYS___STAT_A                        = 0x6EA // 1770\n\tSYS___STAT_O_A                      = 0x6EB // 1771\n\tSYS___MKFIFO_A                      = 0x6EC // 1772\n\tSYS_____OPEN_STAT_A                 = 0x6ED // 1773\n\tSYS___LSTAT_A                       = 0x6EE // 1774\n\tSYS___LSTAT_O_A                     = 0x6EF // 1775\n\tSYS___MKNOD_A                       = 0x6F0 // 1776\n\tSYS___MOUNT_A                       = 0x6F1 // 1777\n\tSYS___UMOUNT_A                      = 0x6F2 // 1778\n\tSYS___CHAUDIT_A                     = 0x6F4 // 1780\n\tSYS___W_GETMNTENT_A                 = 0x6F5 // 1781\n\tSYS___CREAT_A                       = 0x6F6 // 1782\n\tSYS___OPEN_A                        = 0x6F7 // 1783\n\tSYS___SETLOCALE_A                   = 0x6F9 // 1785\n\tSYS___FPRINTF_A                     = 0x6FA // 1786\n\tSYS___SPRINTF_A                     = 0x6FB // 1787\n\tSYS___VFPRINTF_A                    = 0x6FC // 1788\n\tSYS___VPRINTF_A                     = 0x6FD // 1789\n\tSYS___VSPRINTF_A                    = 0x6FE // 1790\n\tSYS___VSWPRINTF_A                   = 0x6FF // 1791\n\tSYS___SWPRINTF_A                    = 0x700 // 1792\n\tSYS___FSCANF_A                      = 0x701 // 1793\n\tSYS___SCANF_A                       = 0x702 // 1794\n\tSYS___SSCANF_A                      = 0x703 // 1795\n\tSYS___SWSCANF_A                     = 0x704 // 1796\n\tSYS___ATOF_A                        = 0x705 // 1797\n\tSYS___ATOI_A                        = 0x706 // 1798\n\tSYS___ATOL_A                        = 0x707 // 1799\n\tSYS___STRTOD_A                      = 0x708 // 1800\n\tSYS___STRTOL_A                      = 0x709 // 1801\n\tSYS___STRTOUL_A                     = 0x70A // 1802\n\tSYS_____AE_CORRESTBL_QUERY_A        = 0x70B // 1803\n\tSYS___A64L_A                        = 0x70C // 1804\n\tSYS___ECVT_A                        = 0x70D // 1805\n\tSYS___FCVT_A                        = 0x70E // 1806\n\tSYS___GCVT_A                        = 0x70F // 1807\n\tSYS___L64A_A                        = 0x710 // 1808\n\tSYS___STRERROR_A                    = 0x711 // 1809\n\tSYS___PERROR_A                      = 0x712 // 1810\n\tSYS___FETCH_A                       = 0x713 // 1811\n\tSYS___GETENV_A                      = 0x714 // 1812\n\tSYS___MKSTEMP_A                     = 0x717 // 1815\n\tSYS___PTSNAME_A                     = 0x718 // 1816\n\tSYS___PUTENV_A                      = 0x719 // 1817\n\tSYS___REALPATH_A                    = 0x71A // 1818\n\tSYS___SETENV_A                      = 0x71B // 1819\n\tSYS___SYSTEM_A                      = 0x71C // 1820\n\tSYS___GETOPT_A                      = 0x71D // 1821\n\tSYS___CATOPEN_A                     = 0x71E // 1822\n\tSYS___ACCESS_A                      = 0x71F // 1823\n\tSYS___CHDIR_A                       = 0x720 // 1824\n\tSYS___CHOWN_A                       = 0x721 // 1825\n\tSYS___CHROOT_A                      = 0x722 // 1826\n\tSYS___GETCWD_A                      = 0x723 // 1827\n\tSYS___GETWD_A                       = 0x724 // 1828\n\tSYS___LCHOWN_A                      = 0x725 // 1829\n\tSYS___LINK_A                        = 0x726 // 1830\n\tSYS___PATHCONF_A                    = 0x727 // 1831\n\tSYS___IF_NAMEINDEX_A                = 0x728 // 1832\n\tSYS___READLINK_A                    = 0x729 // 1833\n\tSYS___RMDIR_A                       = 0x72A // 1834\n\tSYS___STATVFS_A                     = 0x72B // 1835\n\tSYS___SYMLINK_A                     = 0x72C // 1836\n\tSYS___TRUNCATE_A                    = 0x72D // 1837\n\tSYS___UNLINK_A                      = 0x72E // 1838\n\tSYS___GAI_STRERROR_A                = 0x72F // 1839\n\tSYS___EXTLINK_NP_A                  = 0x730 // 1840\n\tSYS___ISALNUM_A                     = 0x731 // 1841\n\tSYS___ISALPHA_A                     = 0x732 // 1842\n\tSYS___A2E_S                         = 0x733 // 1843\n\tSYS___ISCNTRL_A                     = 0x734 // 1844\n\tSYS___ISDIGIT_A                     = 0x735 // 1845\n\tSYS___ISGRAPH_A                     = 0x736 // 1846\n\tSYS___ISLOWER_A                     = 0x737 // 1847\n\tSYS___ISPRINT_A                     = 0x738 // 1848\n\tSYS___ISPUNCT_A                     = 0x739 // 1849\n\tSYS___ISSPACE_A                     = 0x73A // 1850\n\tSYS___ISUPPER_A                     = 0x73B // 1851\n\tSYS___ISXDIGIT_A                    = 0x73C // 1852\n\tSYS___TOLOWER_A                     = 0x73D // 1853\n\tSYS___TOUPPER_A                     = 0x73E // 1854\n\tSYS___ISWALNUM_A                    = 0x73F // 1855\n\tSYS___ISWALPHA_A                    = 0x740 // 1856\n\tSYS___A2E_L                         = 0x741 // 1857\n\tSYS___ISWCNTRL_A                    = 0x742 // 1858\n\tSYS___ISWDIGIT_A                    = 0x743 // 1859\n\tSYS___ISWGRAPH_A                    = 0x744 // 1860\n\tSYS___ISWLOWER_A                    = 0x745 // 1861\n\tSYS___ISWPRINT_A                    = 0x746 // 1862\n\tSYS___ISWPUNCT_A                    = 0x747 // 1863\n\tSYS___ISWSPACE_A                    = 0x748 // 1864\n\tSYS___ISWUPPER_A                    = 0x749 // 1865\n\tSYS___ISWXDIGIT_A                   = 0x74A // 1866\n\tSYS___CONFSTR_A                     = 0x74B // 1867\n\tSYS___FTOK_A                        = 0x74C // 1868\n\tSYS___MKTEMP_A                      = 0x74D // 1869\n\tSYS___FDOPEN_A                      = 0x74E // 1870\n\tSYS___FLDATA_A                      = 0x74F // 1871\n\tSYS___REMOVE_A                      = 0x750 // 1872\n\tSYS___RENAME_A                      = 0x751 // 1873\n\tSYS___TMPNAM_A                      = 0x752 // 1874\n\tSYS___FOPEN_A                       = 0x753 // 1875\n\tSYS___FREOPEN_A                     = 0x754 // 1876\n\tSYS___CUSERID_A                     = 0x755 // 1877\n\tSYS___POPEN_A                       = 0x756 // 1878\n\tSYS___TEMPNAM_A                     = 0x757 // 1879\n\tSYS___FTW_A                         = 0x758 // 1880\n\tSYS___GETGRENT_A                    = 0x759 // 1881\n\tSYS___GETGRGID_A                    = 0x75A // 1882\n\tSYS___GETGRNAM_A                    = 0x75B // 1883\n\tSYS___GETGROUPSBYNAME_A             = 0x75C // 1884\n\tSYS___GETHOSTENT_A                  = 0x75D // 1885\n\tSYS___GETHOSTNAME_A                 = 0x75E // 1886\n\tSYS___GETLOGIN_A                    = 0x75F // 1887\n\tSYS___INET_NTOP_A                   = 0x760 // 1888\n\tSYS___GETPASS_A                     = 0x761 // 1889\n\tSYS___GETPWENT_A                    = 0x762 // 1890\n\tSYS___GETPWNAM_A                    = 0x763 // 1891\n\tSYS___GETPWUID_A                    = 0x764 // 1892\n\tSYS_____CHECK_RESOURCE_AUTH_NP_A    = 0x765 // 1893\n\tSYS___CHECKSCHENV_A                 = 0x766 // 1894\n\tSYS___CONNECTSERVER_A               = 0x767 // 1895\n\tSYS___CONNECTWORKMGR_A              = 0x768 // 1896\n\tSYS_____CONSOLE_A                   = 0x769 // 1897\n\tSYS___CREATEWORKUNIT_A              = 0x76A // 1898\n\tSYS___CTERMID_A                     = 0x76B // 1899\n\tSYS___FMTMSG_A                      = 0x76C // 1900\n\tSYS___INITGROUPS_A                  = 0x76D // 1901\n\tSYS_____LOGIN_A                     = 0x76E // 1902\n\tSYS___MSGRCV_A                      = 0x76F // 1903\n\tSYS___MSGSND_A                      = 0x770 // 1904\n\tSYS___MSGXRCV_A                     = 0x771 // 1905\n\tSYS___NFTW_A                        = 0x772 // 1906\n\tSYS_____PASSWD_A                    = 0x773 // 1907\n\tSYS___PTHREAD_SECURITY_NP_A         = 0x774 // 1908\n\tSYS___QUERYMETRICS_A                = 0x775 // 1909\n\tSYS___QUERYSCHENV                   = 0x776 // 1910\n\tSYS___READV_A                       = 0x777 // 1911\n\tSYS_____SERVER_CLASSIFY_A           = 0x778 // 1912\n\tSYS_____SERVER_INIT_A               = 0x779 // 1913\n\tSYS_____SERVER_PWU_A                = 0x77A // 1914\n\tSYS___STRCASECMP_A                  = 0x77B // 1915\n\tSYS___STRNCASECMP_A                 = 0x77C // 1916\n\tSYS___TTYNAME_A                     = 0x77D // 1917\n\tSYS___UNAME_A                       = 0x77E // 1918\n\tSYS___UTIMES_A                      = 0x77F // 1919\n\tSYS___W_GETPSENT_A                  = 0x780 // 1920\n\tSYS___WRITEV_A                      = 0x781 // 1921\n\tSYS___W_STATFS_A                    = 0x782 // 1922\n\tSYS___W_STATVFS_A                   = 0x783 // 1923\n\tSYS___FPUTC_A                       = 0x784 // 1924\n\tSYS___PUTCHAR_A                     = 0x785 // 1925\n\tSYS___PUTS_A                        = 0x786 // 1926\n\tSYS___FGETS_A                       = 0x787 // 1927\n\tSYS___GETS_A                        = 0x788 // 1928\n\tSYS___FPUTS_A                       = 0x789 // 1929\n\tSYS___FREAD_A                       = 0x78A // 1930\n\tSYS___FWRITE_A                      = 0x78B // 1931\n\tSYS___OPEN_O_A                      = 0x78C // 1932\n\tSYS___ISASCII                       = 0x78D // 1933\n\tSYS___CREAT_O_A                     = 0x78E // 1934\n\tSYS___ENVNA                         = 0x78F // 1935\n\tSYS___PUTC_A                        = 0x790 // 1936\n\tSYS___AE_THREAD_SETMODE             = 0x791 // 1937\n\tSYS___AE_THREAD_SWAPMODE            = 0x792 // 1938\n\tSYS___GETNETBYADDR_A                = 0x793 // 1939\n\tSYS___GETNETBYNAME_A                = 0x794 // 1940\n\tSYS___GETNETENT_A                   = 0x795 // 1941\n\tSYS___GETPROTOBYNAME_A              = 0x796 // 1942\n\tSYS___GETPROTOBYNUMBER_A            = 0x797 // 1943\n\tSYS___GETPROTOENT_A                 = 0x798 // 1944\n\tSYS___GETSERVBYNAME_A               = 0x799 // 1945\n\tSYS___GETSERVBYPORT_A               = 0x79A // 1946\n\tSYS___GETSERVENT_A                  = 0x79B // 1947\n\tSYS___ASCTIME_A                     = 0x79C // 1948\n\tSYS___CTIME_A                       = 0x79D // 1949\n\tSYS___GETDATE_A                     = 0x79E // 1950\n\tSYS___TZSET_A                       = 0x79F // 1951\n\tSYS___UTIME_A                       = 0x7A0 // 1952\n\tSYS___ASCTIME_R_A                   = 0x7A1 // 1953\n\tSYS___CTIME_R_A                     = 0x7A2 // 1954\n\tSYS___STRTOLL_A                     = 0x7A3 // 1955\n\tSYS___STRTOULL_A                    = 0x7A4 // 1956\n\tSYS___FPUTWC_A                      = 0x7A5 // 1957\n\tSYS___PUTWC_A                       = 0x7A6 // 1958\n\tSYS___PUTWCHAR_A                    = 0x7A7 // 1959\n\tSYS___FPUTWS_A                      = 0x7A8 // 1960\n\tSYS___UNGETWC_A                     = 0x7A9 // 1961\n\tSYS___FGETWC_A                      = 0x7AA // 1962\n\tSYS___GETWC_A                       = 0x7AB // 1963\n\tSYS___GETWCHAR_A                    = 0x7AC // 1964\n\tSYS___FGETWS_A                      = 0x7AD // 1965\n\tSYS___GETTIMEOFDAY_A                = 0x7AE // 1966\n\tSYS___GMTIME_A                      = 0x7AF // 1967\n\tSYS___GMTIME_R_A                    = 0x7B0 // 1968\n\tSYS___LOCALTIME_A                   = 0x7B1 // 1969\n\tSYS___LOCALTIME_R_A                 = 0x7B2 // 1970\n\tSYS___MKTIME_A                      = 0x7B3 // 1971\n\tSYS___TZZNA                         = 0x7B4 // 1972\n\tSYS_UNATEXIT                        = 0x7B5 // 1973\n\tSYS___CEE3DMP_A                     = 0x7B6 // 1974\n\tSYS___CDUMP_A                       = 0x7B7 // 1975\n\tSYS___CSNAP_A                       = 0x7B8 // 1976\n\tSYS___CTEST_A                       = 0x7B9 // 1977\n\tSYS___CTRACE_A                      = 0x7BA // 1978\n\tSYS___VSWPRNTF2_A                   = 0x7BB // 1979\n\tSYS___INET_PTON_A                   = 0x7BC // 1980\n\tSYS___SYSLOG_A                      = 0x7BD // 1981\n\tSYS___CRYPT_A                       = 0x7BE // 1982\n\tSYS_____OPENDIR2_A                  = 0x7BF // 1983\n\tSYS_____READDIR2_A                  = 0x7C0 // 1984\n\tSYS___OPENDIR_A                     = 0x7C2 // 1986\n\tSYS___READDIR_A                     = 0x7C3 // 1987\n\tSYS_PREAD                           = 0x7C7 // 1991\n\tSYS_PWRITE                          = 0x7C8 // 1992\n\tSYS_M_CREATE_LAYOUT                 = 0x7C9 // 1993\n\tSYS_M_DESTROY_LAYOUT                = 0x7CA // 1994\n\tSYS_M_GETVALUES_LAYOUT              = 0x7CB // 1995\n\tSYS_M_SETVALUES_LAYOUT              = 0x7CC // 1996\n\tSYS_M_TRANSFORM_LAYOUT              = 0x7CD // 1997\n\tSYS_M_WTRANSFORM_LAYOUT             = 0x7CE // 1998\n\tSYS_FWPRINTF                        = 0x7D1 // 2001\n\tSYS_WPRINTF                         = 0x7D2 // 2002\n\tSYS_VFWPRINT                        = 0x7D3 // 2003\n\tSYS_VFWPRINTF                       = 0x7D3 // 2003\n\tSYS_VWPRINTF                        = 0x7D4 // 2004\n\tSYS_FWSCANF                         = 0x7D5 // 2005\n\tSYS_WSCANF                          = 0x7D6 // 2006\n\tSYS_WCTRANS                         = 0x7D7 // 2007\n\tSYS_TOWCTRAN                        = 0x7D8 // 2008\n\tSYS_TOWCTRANS                       = 0x7D8 // 2008\n\tSYS___WCSTOD_A                      = 0x7D9 // 2009\n\tSYS___WCSTOL_A                      = 0x7DA // 2010\n\tSYS___WCSTOUL_A                     = 0x7DB // 2011\n\tSYS___BASENAME_A                    = 0x7DC // 2012\n\tSYS___DIRNAME_A                     = 0x7DD // 2013\n\tSYS___GLOB_A                        = 0x7DE // 2014\n\tSYS_FWIDE                           = 0x7DF // 2015\n\tSYS___OSNAME                        = 0x7E0 // 2016\n\tSYS_____OSNAME_A                    = 0x7E1 // 2017\n\tSYS___BTOWC_A                       = 0x7E4 // 2020\n\tSYS___WCTOB_A                       = 0x7E5 // 2021\n\tSYS___DBM_OPEN_A                    = 0x7E6 // 2022\n\tSYS___VFPRINTF2_A                   = 0x7E7 // 2023\n\tSYS___VPRINTF2_A                    = 0x7E8 // 2024\n\tSYS___VSPRINTF2_A                   = 0x7E9 // 2025\n\tSYS___CEIL_H                        = 0x7EA // 2026\n\tSYS___FLOOR_H                       = 0x7EB // 2027\n\tSYS___MODF_H                        = 0x7EC // 2028\n\tSYS___FABS_H                        = 0x7ED // 2029\n\tSYS___J0_H                          = 0x7EE // 2030\n\tSYS___J1_H                          = 0x7EF // 2031\n\tSYS___JN_H                          = 0x7F0 // 2032\n\tSYS___Y0_H                          = 0x7F1 // 2033\n\tSYS___Y1_H                          = 0x7F2 // 2034\n\tSYS___YN_H                          = 0x7F3 // 2035\n\tSYS___CEILF_H                       = 0x7F4 // 2036\n\tSYS___CEILL_H                       = 0x7F5 // 2037\n\tSYS___FLOORF_H                      = 0x7F6 // 2038\n\tSYS___FLOORL_H                      = 0x7F7 // 2039\n\tSYS___MODFF_H                       = 0x7F8 // 2040\n\tSYS___MODFL_H                       = 0x7F9 // 2041\n\tSYS___FABSF_H                       = 0x7FA // 2042\n\tSYS___FABSL_H                       = 0x7FB // 2043\n\tSYS___MALLOC24                      = 0x7FC // 2044\n\tSYS___MALLOC31                      = 0x7FD // 2045\n\tSYS_ACL_INIT                        = 0x7FE // 2046\n\tSYS_ACL_FREE                        = 0x7FF // 2047\n\tSYS_ACL_FIRST_ENTRY                 = 0x800 // 2048\n\tSYS_ACL_GET_ENTRY                   = 0x801 // 2049\n\tSYS_ACL_VALID                       = 0x802 // 2050\n\tSYS_ACL_CREATE_ENTRY                = 0x803 // 2051\n\tSYS_ACL_DELETE_ENTRY                = 0x804 // 2052\n\tSYS_ACL_UPDATE_ENTRY                = 0x805 // 2053\n\tSYS_ACL_DELETE_FD                   = 0x806 // 2054\n\tSYS_ACL_DELETE_FILE                 = 0x807 // 2055\n\tSYS_ACL_GET_FD                      = 0x808 // 2056\n\tSYS_ACL_GET_FILE                    = 0x809 // 2057\n\tSYS_ACL_SET_FD                      = 0x80A // 2058\n\tSYS_ACL_SET_FILE                    = 0x80B // 2059\n\tSYS_ACL_FROM_TEXT                   = 0x80C // 2060\n\tSYS_ACL_TO_TEXT                     = 0x80D // 2061\n\tSYS_ACL_SORT                        = 0x80E // 2062\n\tSYS___SHUTDOWN_REGISTRATION         = 0x80F // 2063\n\tSYS___ERFL_B                        = 0x810 // 2064\n\tSYS___ERFCL_B                       = 0x811 // 2065\n\tSYS___LGAMMAL_B                     = 0x812 // 2066\n\tSYS___SETHOOKEVENTS                 = 0x813 // 2067\n\tSYS_IF_NAMETOINDEX                  = 0x814 // 2068\n\tSYS_IF_INDEXTONAME                  = 0x815 // 2069\n\tSYS_IF_NAMEINDEX                    = 0x816 // 2070\n\tSYS_IF_FREENAMEINDEX                = 0x817 // 2071\n\tSYS_GETADDRINFO                     = 0x818 // 2072\n\tSYS_GETNAMEINFO                     = 0x819 // 2073\n\tSYS_FREEADDRINFO                    = 0x81A // 2074\n\tSYS_GAI_STRERROR                    = 0x81B // 2075\n\tSYS_REXEC_AF                        = 0x81C // 2076\n\tSYS___POE                           = 0x81D // 2077\n\tSYS___DYNALLOC_A                    = 0x81F // 2079\n\tSYS___DYNFREE_A                     = 0x820 // 2080\n\tSYS___RES_QUERY_A                   = 0x821 // 2081\n\tSYS___RES_SEARCH_A                  = 0x822 // 2082\n\tSYS___RES_QUERYDOMAIN_A             = 0x823 // 2083\n\tSYS___RES_MKQUERY_A                 = 0x824 // 2084\n\tSYS___RES_SEND_A                    = 0x825 // 2085\n\tSYS___DN_EXPAND_A                   = 0x826 // 2086\n\tSYS___DN_SKIPNAME_A                 = 0x827 // 2087\n\tSYS___DN_COMP_A                     = 0x828 // 2088\n\tSYS___DN_FIND_A                     = 0x829 // 2089\n\tSYS___NLIST_A                       = 0x82A // 2090\n\tSYS_____TCGETCP_A                   = 0x82B // 2091\n\tSYS_____TCSETCP_A                   = 0x82C // 2092\n\tSYS_____W_PIOCTL_A                  = 0x82E // 2094\n\tSYS___INET_ADDR_A                   = 0x82F // 2095\n\tSYS___INET_NTOA_A                   = 0x830 // 2096\n\tSYS___INET_NETWORK_A                = 0x831 // 2097\n\tSYS___ACCEPT_A                      = 0x832 // 2098\n\tSYS___ACCEPT_AND_RECV_A             = 0x833 // 2099\n\tSYS___BIND_A                        = 0x834 // 2100\n\tSYS___CONNECT_A                     = 0x835 // 2101\n\tSYS___GETPEERNAME_A                 = 0x836 // 2102\n\tSYS___GETSOCKNAME_A                 = 0x837 // 2103\n\tSYS___RECVFROM_A                    = 0x838 // 2104\n\tSYS___SENDTO_A                      = 0x839 // 2105\n\tSYS___SENDMSG_A                     = 0x83A // 2106\n\tSYS___RECVMSG_A                     = 0x83B // 2107\n\tSYS_____LCHATTR_A                   = 0x83C // 2108\n\tSYS___CABEND                        = 0x83D // 2109\n\tSYS___LE_CIB_GET                    = 0x83E // 2110\n\tSYS___SET_LAA_FOR_JIT               = 0x83F // 2111\n\tSYS___LCHATTR                       = 0x840 // 2112\n\tSYS___WRITEDOWN                     = 0x841 // 2113\n\tSYS_PTHREAD_MUTEX_INIT2             = 0x842 // 2114\n\tSYS___ACOSHF_B                      = 0x843 // 2115\n\tSYS___ACOSHL_B                      = 0x844 // 2116\n\tSYS___ASINHF_B                      = 0x845 // 2117\n\tSYS___ASINHL_B                      = 0x846 // 2118\n\tSYS___ATANHF_B                      = 0x847 // 2119\n\tSYS___ATANHL_B                      = 0x848 // 2120\n\tSYS___CBRTF_B                       = 0x849 // 2121\n\tSYS___CBRTL_B                       = 0x84A // 2122\n\tSYS___COPYSIGNF_B                   = 0x84B // 2123\n\tSYS___COPYSIGNL_B                   = 0x84C // 2124\n\tSYS___COTANF_B                      = 0x84D // 2125\n\tSYS___COTAN_B                       = 0x84E // 2126\n\tSYS___COTANL_B                      = 0x84F // 2127\n\tSYS___EXP2F_B                       = 0x850 // 2128\n\tSYS___EXP2L_B                       = 0x851 // 2129\n\tSYS___EXPM1F_B                      = 0x852 // 2130\n\tSYS___EXPM1L_B                      = 0x853 // 2131\n\tSYS___FDIMF_B                       = 0x854 // 2132\n\tSYS___FDIM_B                        = 0x855 // 2133\n\tSYS___FDIML_B                       = 0x856 // 2134\n\tSYS___HYPOTF_B                      = 0x857 // 2135\n\tSYS___HYPOTL_B                      = 0x858 // 2136\n\tSYS___LOG1PF_B                      = 0x859 // 2137\n\tSYS___LOG1PL_B                      = 0x85A // 2138\n\tSYS___LOG2F_B                       = 0x85B // 2139\n\tSYS___LOG2_B                        = 0x85C // 2140\n\tSYS___LOG2L_B                       = 0x85D // 2141\n\tSYS___REMAINDERF_B                  = 0x85E // 2142\n\tSYS___REMAINDERL_B                  = 0x85F // 2143\n\tSYS___REMQUOF_B                     = 0x860 // 2144\n\tSYS___REMQUO_B                      = 0x861 // 2145\n\tSYS___REMQUOL_B                     = 0x862 // 2146\n\tSYS___TGAMMAF_B                     = 0x863 // 2147\n\tSYS___TGAMMA_B                      = 0x864 // 2148\n\tSYS___TGAMMAL_B                     = 0x865 // 2149\n\tSYS___TRUNCF_B                      = 0x866 // 2150\n\tSYS___TRUNC_B                       = 0x867 // 2151\n\tSYS___TRUNCL_B                      = 0x868 // 2152\n\tSYS___LGAMMAF_B                     = 0x869 // 2153\n\tSYS___LROUNDF_B                     = 0x86A // 2154\n\tSYS___LROUND_B                      = 0x86B // 2155\n\tSYS___ERFF_B                        = 0x86C // 2156\n\tSYS___ERFCF_B                       = 0x86D // 2157\n\tSYS_ACOSHF                          = 0x86E // 2158\n\tSYS_ACOSHL                          = 0x86F // 2159\n\tSYS_ASINHF                          = 0x870 // 2160\n\tSYS_ASINHL                          = 0x871 // 2161\n\tSYS_ATANHF                          = 0x872 // 2162\n\tSYS_ATANHL                          = 0x873 // 2163\n\tSYS_CBRTF                           = 0x874 // 2164\n\tSYS_CBRTL                           = 0x875 // 2165\n\tSYS_COPYSIGNF                       = 0x876 // 2166\n\tSYS_CPYSIGNF                        = 0x876 // 2166\n\tSYS_COPYSIGNL                       = 0x877 // 2167\n\tSYS_CPYSIGNL                        = 0x877 // 2167\n\tSYS_COTANF                          = 0x878 // 2168\n\tSYS___COTANF                        = 0x878 // 2168\n\tSYS_COTAN                           = 0x879 // 2169\n\tSYS___COTAN                         = 0x879 // 2169\n\tSYS_COTANL                          = 0x87A // 2170\n\tSYS___COTANL                        = 0x87A // 2170\n\tSYS_EXP2F                           = 0x87B // 2171\n\tSYS_EXP2L                           = 0x87C // 2172\n\tSYS_EXPM1F                          = 0x87D // 2173\n\tSYS_EXPM1L                          = 0x87E // 2174\n\tSYS_FDIMF                           = 0x87F // 2175\n\tSYS_FDIM                            = 0x881 // 2177\n\tSYS_FDIML                           = 0x882 // 2178\n\tSYS_HYPOTF                          = 0x883 // 2179\n\tSYS_HYPOTL                          = 0x884 // 2180\n\tSYS_LOG1PF                          = 0x885 // 2181\n\tSYS_LOG1PL                          = 0x886 // 2182\n\tSYS_LOG2F                           = 0x887 // 2183\n\tSYS_LOG2                            = 0x888 // 2184\n\tSYS_LOG2L                           = 0x889 // 2185\n\tSYS_REMAINDERF                      = 0x88A // 2186\n\tSYS_REMAINDF                        = 0x88A // 2186\n\tSYS_REMAINDERL                      = 0x88B // 2187\n\tSYS_REMAINDL                        = 0x88B // 2187\n\tSYS_REMQUOF                         = 0x88C // 2188\n\tSYS_REMQUO                          = 0x88D // 2189\n\tSYS_REMQUOL                         = 0x88E // 2190\n\tSYS_TGAMMAF                         = 0x88F // 2191\n\tSYS_TGAMMA                          = 0x890 // 2192\n\tSYS_TGAMMAL                         = 0x891 // 2193\n\tSYS_TRUNCF                          = 0x892 // 2194\n\tSYS_TRUNC                           = 0x893 // 2195\n\tSYS_TRUNCL                          = 0x894 // 2196\n\tSYS_LGAMMAF                         = 0x895 // 2197\n\tSYS_LGAMMAL                         = 0x896 // 2198\n\tSYS_LROUNDF                         = 0x897 // 2199\n\tSYS_LROUND                          = 0x898 // 2200\n\tSYS_ERFF                            = 0x899 // 2201\n\tSYS_ERFL                            = 0x89A // 2202\n\tSYS_ERFCF                           = 0x89B // 2203\n\tSYS_ERFCL                           = 0x89C // 2204\n\tSYS___EXP2_B                        = 0x89D // 2205\n\tSYS_EXP2                            = 0x89E // 2206\n\tSYS___FAR_JUMP                      = 0x89F // 2207\n\tSYS___TCGETATTR_A                   = 0x8A1 // 2209\n\tSYS___TCSETATTR_A                   = 0x8A2 // 2210\n\tSYS___SUPERKILL                     = 0x8A4 // 2212\n\tSYS___LE_CONDITION_TOKEN_BUILD      = 0x8A5 // 2213\n\tSYS___LE_MSG_ADD_INSERT             = 0x8A6 // 2214\n\tSYS___LE_MSG_GET                    = 0x8A7 // 2215\n\tSYS___LE_MSG_GET_AND_WRITE          = 0x8A8 // 2216\n\tSYS___LE_MSG_WRITE                  = 0x8A9 // 2217\n\tSYS___ITOA                          = 0x8AA // 2218\n\tSYS___UTOA                          = 0x8AB // 2219\n\tSYS___LTOA                          = 0x8AC // 2220\n\tSYS___ULTOA                         = 0x8AD // 2221\n\tSYS___LLTOA                         = 0x8AE // 2222\n\tSYS___ULLTOA                        = 0x8AF // 2223\n\tSYS___ITOA_A                        = 0x8B0 // 2224\n\tSYS___UTOA_A                        = 0x8B1 // 2225\n\tSYS___LTOA_A                        = 0x8B2 // 2226\n\tSYS___ULTOA_A                       = 0x8B3 // 2227\n\tSYS___LLTOA_A                       = 0x8B4 // 2228\n\tSYS___ULLTOA_A                      = 0x8B5 // 2229\n\tSYS_____GETENV_A                    = 0x8C3 // 2243\n\tSYS___REXEC_A                       = 0x8C4 // 2244\n\tSYS___REXEC_AF_A                    = 0x8C5 // 2245\n\tSYS___GETUTXENT_A                   = 0x8C6 // 2246\n\tSYS___GETUTXID_A                    = 0x8C7 // 2247\n\tSYS___GETUTXLINE_A                  = 0x8C8 // 2248\n\tSYS___PUTUTXLINE_A                  = 0x8C9 // 2249\n\tSYS_____UTMPXNAME_A                 = 0x8CA // 2250\n\tSYS___PUTC_UNLOCKED_A               = 0x8CB // 2251\n\tSYS___PUTCHAR_UNLOCKED_A            = 0x8CC // 2252\n\tSYS___SNPRINTF_A                    = 0x8CD // 2253\n\tSYS___VSNPRINTF_A                   = 0x8CE // 2254\n\tSYS___DLOPEN_A                      = 0x8D0 // 2256\n\tSYS___DLSYM_A                       = 0x8D1 // 2257\n\tSYS___DLERROR_A                     = 0x8D2 // 2258\n\tSYS_FLOCKFILE                       = 0x8D3 // 2259\n\tSYS_FTRYLOCKFILE                    = 0x8D4 // 2260\n\tSYS_FUNLOCKFILE                     = 0x8D5 // 2261\n\tSYS_GETC_UNLOCKED                   = 0x8D6 // 2262\n\tSYS_GETCHAR_UNLOCKED                = 0x8D7 // 2263\n\tSYS_PUTC_UNLOCKED                   = 0x8D8 // 2264\n\tSYS_PUTCHAR_UNLOCKED                = 0x8D9 // 2265\n\tSYS_SNPRINTF                        = 0x8DA // 2266\n\tSYS_VSNPRINTF                       = 0x8DB // 2267\n\tSYS_DLOPEN                          = 0x8DD // 2269\n\tSYS_DLSYM                           = 0x8DE // 2270\n\tSYS_DLCLOSE                         = 0x8DF // 2271\n\tSYS_DLERROR                         = 0x8E0 // 2272\n\tSYS___SET_EXCEPTION_HANDLER         = 0x8E2 // 2274\n\tSYS___RESET_EXCEPTION_HANDLER       = 0x8E3 // 2275\n\tSYS___VHM_EVENT                     = 0x8E4 // 2276\n\tSYS___ABS_H                         = 0x8E6 // 2278\n\tSYS___ABSF_H                        = 0x8E7 // 2279\n\tSYS___ABSL_H                        = 0x8E8 // 2280\n\tSYS___ACOS_H                        = 0x8E9 // 2281\n\tSYS___ACOSF_H                       = 0x8EA // 2282\n\tSYS___ACOSL_H                       = 0x8EB // 2283\n\tSYS___ACOSH_H                       = 0x8EC // 2284\n\tSYS___ASIN_H                        = 0x8ED // 2285\n\tSYS___ASINF_H                       = 0x8EE // 2286\n\tSYS___ASINL_H                       = 0x8EF // 2287\n\tSYS___ASINH_H                       = 0x8F0 // 2288\n\tSYS___ATAN_H                        = 0x8F1 // 2289\n\tSYS___ATANF_H                       = 0x8F2 // 2290\n\tSYS___ATANL_H                       = 0x8F3 // 2291\n\tSYS___ATANH_H                       = 0x8F4 // 2292\n\tSYS___ATANHF_H                      = 0x8F5 // 2293\n\tSYS___ATANHL_H                      = 0x8F6 // 2294\n\tSYS___ATAN2_H                       = 0x8F7 // 2295\n\tSYS___ATAN2F_H                      = 0x8F8 // 2296\n\tSYS___ATAN2L_H                      = 0x8F9 // 2297\n\tSYS___CBRT_H                        = 0x8FA // 2298\n\tSYS___COPYSIGNF_H                   = 0x8FB // 2299\n\tSYS___COPYSIGNL_H                   = 0x8FC // 2300\n\tSYS___COS_H                         = 0x8FD // 2301\n\tSYS___COSF_H                        = 0x8FE // 2302\n\tSYS___COSL_H                        = 0x8FF // 2303\n\tSYS___COSHF_H                       = 0x900 // 2304\n\tSYS___COSHL_H                       = 0x901 // 2305\n\tSYS___COTAN_H                       = 0x902 // 2306\n\tSYS___COTANF_H                      = 0x903 // 2307\n\tSYS___COTANL_H                      = 0x904 // 2308\n\tSYS___ERF_H                         = 0x905 // 2309\n\tSYS___ERFF_H                        = 0x906 // 2310\n\tSYS___ERFL_H                        = 0x907 // 2311\n\tSYS___ERFC_H                        = 0x908 // 2312\n\tSYS___ERFCF_H                       = 0x909 // 2313\n\tSYS___ERFCL_H                       = 0x90A // 2314\n\tSYS___EXP_H                         = 0x90B // 2315\n\tSYS___EXPF_H                        = 0x90C // 2316\n\tSYS___EXPL_H                        = 0x90D // 2317\n\tSYS___EXPM1_H                       = 0x90E // 2318\n\tSYS___FDIM_H                        = 0x90F // 2319\n\tSYS___FDIMF_H                       = 0x910 // 2320\n\tSYS___FDIML_H                       = 0x911 // 2321\n\tSYS___FMOD_H                        = 0x912 // 2322\n\tSYS___FMODF_H                       = 0x913 // 2323\n\tSYS___FMODL_H                       = 0x914 // 2324\n\tSYS___GAMMA_H                       = 0x915 // 2325\n\tSYS___HYPOT_H                       = 0x916 // 2326\n\tSYS___ILOGB_H                       = 0x917 // 2327\n\tSYS___LGAMMA_H                      = 0x918 // 2328\n\tSYS___LGAMMAF_H                     = 0x919 // 2329\n\tSYS___LOG_H                         = 0x91A // 2330\n\tSYS___LOGF_H                        = 0x91B // 2331\n\tSYS___LOGL_H                        = 0x91C // 2332\n\tSYS___LOGB_H                        = 0x91D // 2333\n\tSYS___LOG2_H                        = 0x91E // 2334\n\tSYS___LOG2F_H                       = 0x91F // 2335\n\tSYS___LOG2L_H                       = 0x920 // 2336\n\tSYS___LOG1P_H                       = 0x921 // 2337\n\tSYS___LOG10_H                       = 0x922 // 2338\n\tSYS___LOG10F_H                      = 0x923 // 2339\n\tSYS___LOG10L_H                      = 0x924 // 2340\n\tSYS___LROUND_H                      = 0x925 // 2341\n\tSYS___LROUNDF_H                     = 0x926 // 2342\n\tSYS___NEXTAFTER_H                   = 0x927 // 2343\n\tSYS___POW_H                         = 0x928 // 2344\n\tSYS___POWF_H                        = 0x929 // 2345\n\tSYS___POWL_H                        = 0x92A // 2346\n\tSYS___REMAINDER_H                   = 0x92B // 2347\n\tSYS___RINT_H                        = 0x92C // 2348\n\tSYS___SCALB_H                       = 0x92D // 2349\n\tSYS___SIN_H                         = 0x92E // 2350\n\tSYS___SINF_H                        = 0x92F // 2351\n\tSYS___SINL_H                        = 0x930 // 2352\n\tSYS___SINH_H                        = 0x931 // 2353\n\tSYS___SINHF_H                       = 0x932 // 2354\n\tSYS___SINHL_H                       = 0x933 // 2355\n\tSYS___SQRT_H                        = 0x934 // 2356\n\tSYS___SQRTF_H                       = 0x935 // 2357\n\tSYS___SQRTL_H                       = 0x936 // 2358\n\tSYS___TAN_H                         = 0x937 // 2359\n\tSYS___TANF_H                        = 0x938 // 2360\n\tSYS___TANL_H                        = 0x939 // 2361\n\tSYS___TANH_H                        = 0x93A // 2362\n\tSYS___TANHF_H                       = 0x93B // 2363\n\tSYS___TANHL_H                       = 0x93C // 2364\n\tSYS___TGAMMA_H                      = 0x93D // 2365\n\tSYS___TGAMMAF_H                     = 0x93E // 2366\n\tSYS___TRUNC_H                       = 0x93F // 2367\n\tSYS___TRUNCF_H                      = 0x940 // 2368\n\tSYS___TRUNCL_H                      = 0x941 // 2369\n\tSYS___COSH_H                        = 0x942 // 2370\n\tSYS___LE_DEBUG_SET_RESUME_MCH       = 0x943 // 2371\n\tSYS_VFSCANF                         = 0x944 // 2372\n\tSYS_VSCANF                          = 0x946 // 2374\n\tSYS_VSSCANF                         = 0x948 // 2376\n\tSYS_VFWSCANF                        = 0x94A // 2378\n\tSYS_VWSCANF                         = 0x94C // 2380\n\tSYS_VSWSCANF                        = 0x94E // 2382\n\tSYS_IMAXABS                         = 0x950 // 2384\n\tSYS_IMAXDIV                         = 0x951 // 2385\n\tSYS_STRTOIMAX                       = 0x952 // 2386\n\tSYS_STRTOUMAX                       = 0x953 // 2387\n\tSYS_WCSTOIMAX                       = 0x954 // 2388\n\tSYS_WCSTOUMAX                       = 0x955 // 2389\n\tSYS_ATOLL                           = 0x956 // 2390\n\tSYS_STRTOF                          = 0x957 // 2391\n\tSYS_STRTOLD                         = 0x958 // 2392\n\tSYS_WCSTOF                          = 0x959 // 2393\n\tSYS_WCSTOLD                         = 0x95A // 2394\n\tSYS_INET6_RTH_SPACE                 = 0x95B // 2395\n\tSYS_INET6_RTH_INIT                  = 0x95C // 2396\n\tSYS_INET6_RTH_ADD                   = 0x95D // 2397\n\tSYS_INET6_RTH_REVERSE               = 0x95E // 2398\n\tSYS_INET6_RTH_SEGMENTS              = 0x95F // 2399\n\tSYS_INET6_RTH_GETADDR               = 0x960 // 2400\n\tSYS_INET6_OPT_INIT                  = 0x961 // 2401\n\tSYS_INET6_OPT_APPEND                = 0x962 // 2402\n\tSYS_INET6_OPT_FINISH                = 0x963 // 2403\n\tSYS_INET6_OPT_SET_VAL               = 0x964 // 2404\n\tSYS_INET6_OPT_NEXT                  = 0x965 // 2405\n\tSYS_INET6_OPT_FIND                  = 0x966 // 2406\n\tSYS_INET6_OPT_GET_VAL               = 0x967 // 2407\n\tSYS___POW_I                         = 0x987 // 2439\n\tSYS___POW_I_B                       = 0x988 // 2440\n\tSYS___POW_I_H                       = 0x989 // 2441\n\tSYS___POW_II                        = 0x98A // 2442\n\tSYS___POW_II_B                      = 0x98B // 2443\n\tSYS___POW_II_H                      = 0x98C // 2444\n\tSYS_CABS                            = 0x98E // 2446\n\tSYS___CABS_B                        = 0x98F // 2447\n\tSYS___CABS_H                        = 0x990 // 2448\n\tSYS_CABSF                           = 0x991 // 2449\n\tSYS___CABSF_B                       = 0x992 // 2450\n\tSYS___CABSF_H                       = 0x993 // 2451\n\tSYS_CABSL                           = 0x994 // 2452\n\tSYS___CABSL_B                       = 0x995 // 2453\n\tSYS___CABSL_H                       = 0x996 // 2454\n\tSYS_CACOS                           = 0x997 // 2455\n\tSYS___CACOS_B                       = 0x998 // 2456\n\tSYS___CACOS_H                       = 0x999 // 2457\n\tSYS_CACOSF                          = 0x99A // 2458\n\tSYS___CACOSF_B                      = 0x99B // 2459\n\tSYS___CACOSF_H                      = 0x99C // 2460\n\tSYS_CACOSL                          = 0x99D // 2461\n\tSYS___CACOSL_B                      = 0x99E // 2462\n\tSYS___CACOSL_H                      = 0x99F // 2463\n\tSYS_CACOSH                          = 0x9A0 // 2464\n\tSYS___CACOSH_B                      = 0x9A1 // 2465\n\tSYS___CACOSH_H                      = 0x9A2 // 2466\n\tSYS_CACOSHF                         = 0x9A3 // 2467\n\tSYS___CACOSHF_B                     = 0x9A4 // 2468\n\tSYS___CACOSHF_H                     = 0x9A5 // 2469\n\tSYS_CACOSHL                         = 0x9A6 // 2470\n\tSYS___CACOSHL_B                     = 0x9A7 // 2471\n\tSYS___CACOSHL_H                     = 0x9A8 // 2472\n\tSYS_CARG                            = 0x9A9 // 2473\n\tSYS___CARG_B                        = 0x9AA // 2474\n\tSYS___CARG_H                        = 0x9AB // 2475\n\tSYS_CARGF                           = 0x9AC // 2476\n\tSYS___CARGF_B                       = 0x9AD // 2477\n\tSYS___CARGF_H                       = 0x9AE // 2478\n\tSYS_CARGL                           = 0x9AF // 2479\n\tSYS___CARGL_B                       = 0x9B0 // 2480\n\tSYS___CARGL_H                       = 0x9B1 // 2481\n\tSYS_CASIN                           = 0x9B2 // 2482\n\tSYS___CASIN_B                       = 0x9B3 // 2483\n\tSYS___CASIN_H                       = 0x9B4 // 2484\n\tSYS_CASINF                          = 0x9B5 // 2485\n\tSYS___CASINF_B                      = 0x9B6 // 2486\n\tSYS___CASINF_H                      = 0x9B7 // 2487\n\tSYS_CASINL                          = 0x9B8 // 2488\n\tSYS___CASINL_B                      = 0x9B9 // 2489\n\tSYS___CASINL_H                      = 0x9BA // 2490\n\tSYS_CASINH                          = 0x9BB // 2491\n\tSYS___CASINH_B                      = 0x9BC // 2492\n\tSYS___CASINH_H                      = 0x9BD // 2493\n\tSYS_CASINHF                         = 0x9BE // 2494\n\tSYS___CASINHF_B                     = 0x9BF // 2495\n\tSYS___CASINHF_H                     = 0x9C0 // 2496\n\tSYS_CASINHL                         = 0x9C1 // 2497\n\tSYS___CASINHL_B                     = 0x9C2 // 2498\n\tSYS___CASINHL_H                     = 0x9C3 // 2499\n\tSYS_CATAN                           = 0x9C4 // 2500\n\tSYS___CATAN_B                       = 0x9C5 // 2501\n\tSYS___CATAN_H                       = 0x9C6 // 2502\n\tSYS_CATANF                          = 0x9C7 // 2503\n\tSYS___CATANF_B                      = 0x9C8 // 2504\n\tSYS___CATANF_H                      = 0x9C9 // 2505\n\tSYS_CATANL                          = 0x9CA // 2506\n\tSYS___CATANL_B                      = 0x9CB // 2507\n\tSYS___CATANL_H                      = 0x9CC // 2508\n\tSYS_CATANH                          = 0x9CD // 2509\n\tSYS___CATANH_B                      = 0x9CE // 2510\n\tSYS___CATANH_H                      = 0x9CF // 2511\n\tSYS_CATANHF                         = 0x9D0 // 2512\n\tSYS___CATANHF_B                     = 0x9D1 // 2513\n\tSYS___CATANHF_H                     = 0x9D2 // 2514\n\tSYS_CATANHL                         = 0x9D3 // 2515\n\tSYS___CATANHL_B                     = 0x9D4 // 2516\n\tSYS___CATANHL_H                     = 0x9D5 // 2517\n\tSYS_CCOS                            = 0x9D6 // 2518\n\tSYS___CCOS_B                        = 0x9D7 // 2519\n\tSYS___CCOS_H                        = 0x9D8 // 2520\n\tSYS_CCOSF                           = 0x9D9 // 2521\n\tSYS___CCOSF_B                       = 0x9DA // 2522\n\tSYS___CCOSF_H                       = 0x9DB // 2523\n\tSYS_CCOSL                           = 0x9DC // 2524\n\tSYS___CCOSL_B                       = 0x9DD // 2525\n\tSYS___CCOSL_H                       = 0x9DE // 2526\n\tSYS_CCOSH                           = 0x9DF // 2527\n\tSYS___CCOSH_B                       = 0x9E0 // 2528\n\tSYS___CCOSH_H                       = 0x9E1 // 2529\n\tSYS_CCOSHF                          = 0x9E2 // 2530\n\tSYS___CCOSHF_B                      = 0x9E3 // 2531\n\tSYS___CCOSHF_H                      = 0x9E4 // 2532\n\tSYS_CCOSHL                          = 0x9E5 // 2533\n\tSYS___CCOSHL_B                      = 0x9E6 // 2534\n\tSYS___CCOSHL_H                      = 0x9E7 // 2535\n\tSYS_CEXP                            = 0x9E8 // 2536\n\tSYS___CEXP_B                        = 0x9E9 // 2537\n\tSYS___CEXP_H                        = 0x9EA // 2538\n\tSYS_CEXPF                           = 0x9EB // 2539\n\tSYS___CEXPF_B                       = 0x9EC // 2540\n\tSYS___CEXPF_H                       = 0x9ED // 2541\n\tSYS_CEXPL                           = 0x9EE // 2542\n\tSYS___CEXPL_B                       = 0x9EF // 2543\n\tSYS___CEXPL_H                       = 0x9F0 // 2544\n\tSYS_CIMAG                           = 0x9F1 // 2545\n\tSYS___CIMAG_B                       = 0x9F2 // 2546\n\tSYS___CIMAG_H                       = 0x9F3 // 2547\n\tSYS_CIMAGF                          = 0x9F4 // 2548\n\tSYS___CIMAGF_B                      = 0x9F5 // 2549\n\tSYS___CIMAGF_H                      = 0x9F6 // 2550\n\tSYS_CIMAGL                          = 0x9F7 // 2551\n\tSYS___CIMAGL_B                      = 0x9F8 // 2552\n\tSYS___CIMAGL_H                      = 0x9F9 // 2553\n\tSYS___CLOG                          = 0x9FA // 2554\n\tSYS___CLOG_B                        = 0x9FB // 2555\n\tSYS___CLOG_H                        = 0x9FC // 2556\n\tSYS_CLOGF                           = 0x9FD // 2557\n\tSYS___CLOGF_B                       = 0x9FE // 2558\n\tSYS___CLOGF_H                       = 0x9FF // 2559\n\tSYS_CLOGL                           = 0xA00 // 2560\n\tSYS___CLOGL_B                       = 0xA01 // 2561\n\tSYS___CLOGL_H                       = 0xA02 // 2562\n\tSYS_CONJ                            = 0xA03 // 2563\n\tSYS___CONJ_B                        = 0xA04 // 2564\n\tSYS___CONJ_H                        = 0xA05 // 2565\n\tSYS_CONJF                           = 0xA06 // 2566\n\tSYS___CONJF_B                       = 0xA07 // 2567\n\tSYS___CONJF_H                       = 0xA08 // 2568\n\tSYS_CONJL                           = 0xA09 // 2569\n\tSYS___CONJL_B                       = 0xA0A // 2570\n\tSYS___CONJL_H                       = 0xA0B // 2571\n\tSYS_CPOW                            = 0xA0C // 2572\n\tSYS___CPOW_B                        = 0xA0D // 2573\n\tSYS___CPOW_H                        = 0xA0E // 2574\n\tSYS_CPOWF                           = 0xA0F // 2575\n\tSYS___CPOWF_B                       = 0xA10 // 2576\n\tSYS___CPOWF_H                       = 0xA11 // 2577\n\tSYS_CPOWL                           = 0xA12 // 2578\n\tSYS___CPOWL_B                       = 0xA13 // 2579\n\tSYS___CPOWL_H                       = 0xA14 // 2580\n\tSYS_CPROJ                           = 0xA15 // 2581\n\tSYS___CPROJ_B                       = 0xA16 // 2582\n\tSYS___CPROJ_H                       = 0xA17 // 2583\n\tSYS_CPROJF                          = 0xA18 // 2584\n\tSYS___CPROJF_B                      = 0xA19 // 2585\n\tSYS___CPROJF_H                      = 0xA1A // 2586\n\tSYS_CPROJL                          = 0xA1B // 2587\n\tSYS___CPROJL_B                      = 0xA1C // 2588\n\tSYS___CPROJL_H                      = 0xA1D // 2589\n\tSYS_CREAL                           = 0xA1E // 2590\n\tSYS___CREAL_B                       = 0xA1F // 2591\n\tSYS___CREAL_H                       = 0xA20 // 2592\n\tSYS_CREALF                          = 0xA21 // 2593\n\tSYS___CREALF_B                      = 0xA22 // 2594\n\tSYS___CREALF_H                      = 0xA23 // 2595\n\tSYS_CREALL                          = 0xA24 // 2596\n\tSYS___CREALL_B                      = 0xA25 // 2597\n\tSYS___CREALL_H                      = 0xA26 // 2598\n\tSYS_CSIN                            = 0xA27 // 2599\n\tSYS___CSIN_B                        = 0xA28 // 2600\n\tSYS___CSIN_H                        = 0xA29 // 2601\n\tSYS_CSINF                           = 0xA2A // 2602\n\tSYS___CSINF_B                       = 0xA2B // 2603\n\tSYS___CSINF_H                       = 0xA2C // 2604\n\tSYS_CSINL                           = 0xA2D // 2605\n\tSYS___CSINL_B                       = 0xA2E // 2606\n\tSYS___CSINL_H                       = 0xA2F // 2607\n\tSYS_CSINH                           = 0xA30 // 2608\n\tSYS___CSINH_B                       = 0xA31 // 2609\n\tSYS___CSINH_H                       = 0xA32 // 2610\n\tSYS_CSINHF                          = 0xA33 // 2611\n\tSYS___CSINHF_B                      = 0xA34 // 2612\n\tSYS___CSINHF_H                      = 0xA35 // 2613\n\tSYS_CSINHL                          = 0xA36 // 2614\n\tSYS___CSINHL_B                      = 0xA37 // 2615\n\tSYS___CSINHL_H                      = 0xA38 // 2616\n\tSYS_CSQRT                           = 0xA39 // 2617\n\tSYS___CSQRT_B                       = 0xA3A // 2618\n\tSYS___CSQRT_H                       = 0xA3B // 2619\n\tSYS_CSQRTF                          = 0xA3C // 2620\n\tSYS___CSQRTF_B                      = 0xA3D // 2621\n\tSYS___CSQRTF_H                      = 0xA3E // 2622\n\tSYS_CSQRTL                          = 0xA3F // 2623\n\tSYS___CSQRTL_B                      = 0xA40 // 2624\n\tSYS___CSQRTL_H                      = 0xA41 // 2625\n\tSYS_CTAN                            = 0xA42 // 2626\n\tSYS___CTAN_B                        = 0xA43 // 2627\n\tSYS___CTAN_H                        = 0xA44 // 2628\n\tSYS_CTANF                           = 0xA45 // 2629\n\tSYS___CTANF_B                       = 0xA46 // 2630\n\tSYS___CTANF_H                       = 0xA47 // 2631\n\tSYS_CTANL                           = 0xA48 // 2632\n\tSYS___CTANL_B                       = 0xA49 // 2633\n\tSYS___CTANL_H                       = 0xA4A // 2634\n\tSYS_CTANH                           = 0xA4B // 2635\n\tSYS___CTANH_B                       = 0xA4C // 2636\n\tSYS___CTANH_H                       = 0xA4D // 2637\n\tSYS_CTANHF                          = 0xA4E // 2638\n\tSYS___CTANHF_B                      = 0xA4F // 2639\n\tSYS___CTANHF_H                      = 0xA50 // 2640\n\tSYS_CTANHL                          = 0xA51 // 2641\n\tSYS___CTANHL_B                      = 0xA52 // 2642\n\tSYS___CTANHL_H                      = 0xA53 // 2643\n\tSYS___ACOSHF_H                      = 0xA54 // 2644\n\tSYS___ACOSHL_H                      = 0xA55 // 2645\n\tSYS___ASINHF_H                      = 0xA56 // 2646\n\tSYS___ASINHL_H                      = 0xA57 // 2647\n\tSYS___CBRTF_H                       = 0xA58 // 2648\n\tSYS___CBRTL_H                       = 0xA59 // 2649\n\tSYS___COPYSIGN_B                    = 0xA5A // 2650\n\tSYS___EXPM1F_H                      = 0xA5B // 2651\n\tSYS___EXPM1L_H                      = 0xA5C // 2652\n\tSYS___EXP2_H                        = 0xA5D // 2653\n\tSYS___EXP2F_H                       = 0xA5E // 2654\n\tSYS___EXP2L_H                       = 0xA5F // 2655\n\tSYS___LOG1PF_H                      = 0xA60 // 2656\n\tSYS___LOG1PL_H                      = 0xA61 // 2657\n\tSYS___LGAMMAL_H                     = 0xA62 // 2658\n\tSYS_FMA                             = 0xA63 // 2659\n\tSYS___FMA_B                         = 0xA64 // 2660\n\tSYS___FMA_H                         = 0xA65 // 2661\n\tSYS_FMAF                            = 0xA66 // 2662\n\tSYS___FMAF_B                        = 0xA67 // 2663\n\tSYS___FMAF_H                        = 0xA68 // 2664\n\tSYS_FMAL                            = 0xA69 // 2665\n\tSYS___FMAL_B                        = 0xA6A // 2666\n\tSYS___FMAL_H                        = 0xA6B // 2667\n\tSYS_FMAX                            = 0xA6C // 2668\n\tSYS___FMAX_B                        = 0xA6D // 2669\n\tSYS___FMAX_H                        = 0xA6E // 2670\n\tSYS_FMAXF                           = 0xA6F // 2671\n\tSYS___FMAXF_B                       = 0xA70 // 2672\n\tSYS___FMAXF_H                       = 0xA71 // 2673\n\tSYS_FMAXL                           = 0xA72 // 2674\n\tSYS___FMAXL_B                       = 0xA73 // 2675\n\tSYS___FMAXL_H                       = 0xA74 // 2676\n\tSYS_FMIN                            = 0xA75 // 2677\n\tSYS___FMIN_B                        = 0xA76 // 2678\n\tSYS___FMIN_H                        = 0xA77 // 2679\n\tSYS_FMINF                           = 0xA78 // 2680\n\tSYS___FMINF_B                       = 0xA79 // 2681\n\tSYS___FMINF_H                       = 0xA7A // 2682\n\tSYS_FMINL                           = 0xA7B // 2683\n\tSYS___FMINL_B                       = 0xA7C // 2684\n\tSYS___FMINL_H                       = 0xA7D // 2685\n\tSYS_ILOGBF                          = 0xA7E // 2686\n\tSYS___ILOGBF_B                      = 0xA7F // 2687\n\tSYS___ILOGBF_H                      = 0xA80 // 2688\n\tSYS_ILOGBL                          = 0xA81 // 2689\n\tSYS___ILOGBL_B                      = 0xA82 // 2690\n\tSYS___ILOGBL_H                      = 0xA83 // 2691\n\tSYS_LLRINT                          = 0xA84 // 2692\n\tSYS___LLRINT_B                      = 0xA85 // 2693\n\tSYS___LLRINT_H                      = 0xA86 // 2694\n\tSYS_LLRINTF                         = 0xA87 // 2695\n\tSYS___LLRINTF_B                     = 0xA88 // 2696\n\tSYS___LLRINTF_H                     = 0xA89 // 2697\n\tSYS_LLRINTL                         = 0xA8A // 2698\n\tSYS___LLRINTL_B                     = 0xA8B // 2699\n\tSYS___LLRINTL_H                     = 0xA8C // 2700\n\tSYS_LLROUND                         = 0xA8D // 2701\n\tSYS___LLROUND_B                     = 0xA8E // 2702\n\tSYS___LLROUND_H                     = 0xA8F // 2703\n\tSYS_LLROUNDF                        = 0xA90 // 2704\n\tSYS___LLROUNDF_B                    = 0xA91 // 2705\n\tSYS___LLROUNDF_H                    = 0xA92 // 2706\n\tSYS_LLROUNDL                        = 0xA93 // 2707\n\tSYS___LLROUNDL_B                    = 0xA94 // 2708\n\tSYS___LLROUNDL_H                    = 0xA95 // 2709\n\tSYS_LOGBF                           = 0xA96 // 2710\n\tSYS___LOGBF_B                       = 0xA97 // 2711\n\tSYS___LOGBF_H                       = 0xA98 // 2712\n\tSYS_LOGBL                           = 0xA99 // 2713\n\tSYS___LOGBL_B                       = 0xA9A // 2714\n\tSYS___LOGBL_H                       = 0xA9B // 2715\n\tSYS_LRINT                           = 0xA9C // 2716\n\tSYS___LRINT_B                       = 0xA9D // 2717\n\tSYS___LRINT_H                       = 0xA9E // 2718\n\tSYS_LRINTF                          = 0xA9F // 2719\n\tSYS___LRINTF_B                      = 0xAA0 // 2720\n\tSYS___LRINTF_H                      = 0xAA1 // 2721\n\tSYS_LRINTL                          = 0xAA2 // 2722\n\tSYS___LRINTL_B                      = 0xAA3 // 2723\n\tSYS___LRINTL_H                      = 0xAA4 // 2724\n\tSYS_LROUNDL                         = 0xAA5 // 2725\n\tSYS___LROUNDL_B                     = 0xAA6 // 2726\n\tSYS___LROUNDL_H                     = 0xAA7 // 2727\n\tSYS_NAN                             = 0xAA8 // 2728\n\tSYS___NAN_B                         = 0xAA9 // 2729\n\tSYS_NANF                            = 0xAAA // 2730\n\tSYS___NANF_B                        = 0xAAB // 2731\n\tSYS_NANL                            = 0xAAC // 2732\n\tSYS___NANL_B                        = 0xAAD // 2733\n\tSYS_NEARBYINT                       = 0xAAE // 2734\n\tSYS___NEARBYINT_B                   = 0xAAF // 2735\n\tSYS___NEARBYINT_H                   = 0xAB0 // 2736\n\tSYS_NEARBYINTF                      = 0xAB1 // 2737\n\tSYS___NEARBYINTF_B                  = 0xAB2 // 2738\n\tSYS___NEARBYINTF_H                  = 0xAB3 // 2739\n\tSYS_NEARBYINTL                      = 0xAB4 // 2740\n\tSYS___NEARBYINTL_B                  = 0xAB5 // 2741\n\tSYS___NEARBYINTL_H                  = 0xAB6 // 2742\n\tSYS_NEXTAFTERF                      = 0xAB7 // 2743\n\tSYS___NEXTAFTERF_B                  = 0xAB8 // 2744\n\tSYS___NEXTAFTERF_H                  = 0xAB9 // 2745\n\tSYS_NEXTAFTERL                      = 0xABA // 2746\n\tSYS___NEXTAFTERL_B                  = 0xABB // 2747\n\tSYS___NEXTAFTERL_H                  = 0xABC // 2748\n\tSYS_NEXTTOWARD                      = 0xABD // 2749\n\tSYS___NEXTTOWARD_B                  = 0xABE // 2750\n\tSYS___NEXTTOWARD_H                  = 0xABF // 2751\n\tSYS_NEXTTOWARDF                     = 0xAC0 // 2752\n\tSYS___NEXTTOWARDF_B                 = 0xAC1 // 2753\n\tSYS___NEXTTOWARDF_H                 = 0xAC2 // 2754\n\tSYS_NEXTTOWARDL                     = 0xAC3 // 2755\n\tSYS___NEXTTOWARDL_B                 = 0xAC4 // 2756\n\tSYS___NEXTTOWARDL_H                 = 0xAC5 // 2757\n\tSYS___REMAINDERF_H                  = 0xAC6 // 2758\n\tSYS___REMAINDERL_H                  = 0xAC7 // 2759\n\tSYS___REMQUO_H                      = 0xAC8 // 2760\n\tSYS___REMQUOF_H                     = 0xAC9 // 2761\n\tSYS___REMQUOL_H                     = 0xACA // 2762\n\tSYS_RINTF                           = 0xACB // 2763\n\tSYS___RINTF_B                       = 0xACC // 2764\n\tSYS_RINTL                           = 0xACD // 2765\n\tSYS___RINTL_B                       = 0xACE // 2766\n\tSYS_ROUND                           = 0xACF // 2767\n\tSYS___ROUND_B                       = 0xAD0 // 2768\n\tSYS___ROUND_H                       = 0xAD1 // 2769\n\tSYS_ROUNDF                          = 0xAD2 // 2770\n\tSYS___ROUNDF_B                      = 0xAD3 // 2771\n\tSYS___ROUNDF_H                      = 0xAD4 // 2772\n\tSYS_ROUNDL                          = 0xAD5 // 2773\n\tSYS___ROUNDL_B                      = 0xAD6 // 2774\n\tSYS___ROUNDL_H                      = 0xAD7 // 2775\n\tSYS_SCALBLN                         = 0xAD8 // 2776\n\tSYS___SCALBLN_B                     = 0xAD9 // 2777\n\tSYS___SCALBLN_H                     = 0xADA // 2778\n\tSYS_SCALBLNF                        = 0xADB // 2779\n\tSYS___SCALBLNF_B                    = 0xADC // 2780\n\tSYS___SCALBLNF_H                    = 0xADD // 2781\n\tSYS_SCALBLNL                        = 0xADE // 2782\n\tSYS___SCALBLNL_B                    = 0xADF // 2783\n\tSYS___SCALBLNL_H                    = 0xAE0 // 2784\n\tSYS___SCALBN_B                      = 0xAE1 // 2785\n\tSYS___SCALBN_H                      = 0xAE2 // 2786\n\tSYS_SCALBNF                         = 0xAE3 // 2787\n\tSYS___SCALBNF_B                     = 0xAE4 // 2788\n\tSYS___SCALBNF_H                     = 0xAE5 // 2789\n\tSYS_SCALBNL                         = 0xAE6 // 2790\n\tSYS___SCALBNL_B                     = 0xAE7 // 2791\n\tSYS___SCALBNL_H                     = 0xAE8 // 2792\n\tSYS___TGAMMAL_H                     = 0xAE9 // 2793\n\tSYS_FECLEAREXCEPT                   = 0xAEA // 2794\n\tSYS_FEGETENV                        = 0xAEB // 2795\n\tSYS_FEGETEXCEPTFLAG                 = 0xAEC // 2796\n\tSYS_FEGETROUND                      = 0xAED // 2797\n\tSYS_FEHOLDEXCEPT                    = 0xAEE // 2798\n\tSYS_FERAISEEXCEPT                   = 0xAEF // 2799\n\tSYS_FESETENV                        = 0xAF0 // 2800\n\tSYS_FESETEXCEPTFLAG                 = 0xAF1 // 2801\n\tSYS_FESETROUND                      = 0xAF2 // 2802\n\tSYS_FETESTEXCEPT                    = 0xAF3 // 2803\n\tSYS_FEUPDATEENV                     = 0xAF4 // 2804\n\tSYS___COPYSIGN_H                    = 0xAF5 // 2805\n\tSYS___HYPOTF_H                      = 0xAF6 // 2806\n\tSYS___HYPOTL_H                      = 0xAF7 // 2807\n\tSYS___CLASS                         = 0xAFA // 2810\n\tSYS___CLASS_B                       = 0xAFB // 2811\n\tSYS___CLASS_H                       = 0xAFC // 2812\n\tSYS___ISBLANK_A                     = 0xB2E // 2862\n\tSYS___ISWBLANK_A                    = 0xB2F // 2863\n\tSYS___LROUND_FIXUP                  = 0xB30 // 2864\n\tSYS___LROUNDF_FIXUP                 = 0xB31 // 2865\n\tSYS_SCHED_YIELD                     = 0xB32 // 2866\n\tSYS_STRERROR_R                      = 0xB33 // 2867\n\tSYS_UNSETENV                        = 0xB34 // 2868\n\tSYS___LGAMMA_H_C99                  = 0xB38 // 2872\n\tSYS___LGAMMA_B_C99                  = 0xB39 // 2873\n\tSYS___LGAMMA_R_C99                  = 0xB3A // 2874\n\tSYS___FTELL2                        = 0xB3B // 2875\n\tSYS___FSEEK2                        = 0xB3C // 2876\n\tSYS___STATIC_REINIT                 = 0xB3D // 2877\n\tSYS_PTHREAD_ATTR_GETSTACK           = 0xB3E // 2878\n\tSYS_PTHREAD_ATTR_SETSTACK           = 0xB3F // 2879\n\tSYS___TGAMMA_H_C99                  = 0xB78 // 2936\n\tSYS___TGAMMAF_H_C99                 = 0xB79 // 2937\n\tSYS___LE_TRACEBACK                  = 0xB7A // 2938\n\tSYS___MUST_STAY_CLEAN               = 0xB7C // 2940\n\tSYS___O_ENV                         = 0xB7D // 2941\n\tSYS_ACOSD32                         = 0xB7E // 2942\n\tSYS_ACOSD64                         = 0xB7F // 2943\n\tSYS_ACOSD128                        = 0xB80 // 2944\n\tSYS_ACOSHD32                        = 0xB81 // 2945\n\tSYS_ACOSHD64                        = 0xB82 // 2946\n\tSYS_ACOSHD128                       = 0xB83 // 2947\n\tSYS_ASIND32                         = 0xB84 // 2948\n\tSYS_ASIND64                         = 0xB85 // 2949\n\tSYS_ASIND128                        = 0xB86 // 2950\n\tSYS_ASINHD32                        = 0xB87 // 2951\n\tSYS_ASINHD64                        = 0xB88 // 2952\n\tSYS_ASINHD128                       = 0xB89 // 2953\n\tSYS_ATAND32                         = 0xB8A // 2954\n\tSYS_ATAND64                         = 0xB8B // 2955\n\tSYS_ATAND128                        = 0xB8C // 2956\n\tSYS_ATAN2D32                        = 0xB8D // 2957\n\tSYS_ATAN2D64                        = 0xB8E // 2958\n\tSYS_ATAN2D128                       = 0xB8F // 2959\n\tSYS_ATANHD32                        = 0xB90 // 2960\n\tSYS_ATANHD64                        = 0xB91 // 2961\n\tSYS_ATANHD128                       = 0xB92 // 2962\n\tSYS_CBRTD32                         = 0xB93 // 2963\n\tSYS_CBRTD64                         = 0xB94 // 2964\n\tSYS_CBRTD128                        = 0xB95 // 2965\n\tSYS_CEILD32                         = 0xB96 // 2966\n\tSYS_CEILD64                         = 0xB97 // 2967\n\tSYS_CEILD128                        = 0xB98 // 2968\n\tSYS___CLASS2                        = 0xB99 // 2969\n\tSYS___CLASS2_B                      = 0xB9A // 2970\n\tSYS___CLASS2_H                      = 0xB9B // 2971\n\tSYS_COPYSIGND32                     = 0xB9C // 2972\n\tSYS_COPYSIGND64                     = 0xB9D // 2973\n\tSYS_COPYSIGND128                    = 0xB9E // 2974\n\tSYS_COSD32                          = 0xB9F // 2975\n\tSYS_COSD64                          = 0xBA0 // 2976\n\tSYS_COSD128                         = 0xBA1 // 2977\n\tSYS_COSHD32                         = 0xBA2 // 2978\n\tSYS_COSHD64                         = 0xBA3 // 2979\n\tSYS_COSHD128                        = 0xBA4 // 2980\n\tSYS_ERFD32                          = 0xBA5 // 2981\n\tSYS_ERFD64                          = 0xBA6 // 2982\n\tSYS_ERFD128                         = 0xBA7 // 2983\n\tSYS_ERFCD32                         = 0xBA8 // 2984\n\tSYS_ERFCD64                         = 0xBA9 // 2985\n\tSYS_ERFCD128                        = 0xBAA // 2986\n\tSYS_EXPD32                          = 0xBAB // 2987\n\tSYS_EXPD64                          = 0xBAC // 2988\n\tSYS_EXPD128                         = 0xBAD // 2989\n\tSYS_EXP2D32                         = 0xBAE // 2990\n\tSYS_EXP2D64                         = 0xBAF // 2991\n\tSYS_EXP2D128                        = 0xBB0 // 2992\n\tSYS_EXPM1D32                        = 0xBB1 // 2993\n\tSYS_EXPM1D64                        = 0xBB2 // 2994\n\tSYS_EXPM1D128                       = 0xBB3 // 2995\n\tSYS_FABSD32                         = 0xBB4 // 2996\n\tSYS_FABSD64                         = 0xBB5 // 2997\n\tSYS_FABSD128                        = 0xBB6 // 2998\n\tSYS_FDIMD32                         = 0xBB7 // 2999\n\tSYS_FDIMD64                         = 0xBB8 // 3000\n\tSYS_FDIMD128                        = 0xBB9 // 3001\n\tSYS_FE_DEC_GETROUND                 = 0xBBA // 3002\n\tSYS_FE_DEC_SETROUND                 = 0xBBB // 3003\n\tSYS_FLOORD32                        = 0xBBC // 3004\n\tSYS_FLOORD64                        = 0xBBD // 3005\n\tSYS_FLOORD128                       = 0xBBE // 3006\n\tSYS_FMAD32                          = 0xBBF // 3007\n\tSYS_FMAD64                          = 0xBC0 // 3008\n\tSYS_FMAD128                         = 0xBC1 // 3009\n\tSYS_FMAXD32                         = 0xBC2 // 3010\n\tSYS_FMAXD64                         = 0xBC3 // 3011\n\tSYS_FMAXD128                        = 0xBC4 // 3012\n\tSYS_FMIND32                         = 0xBC5 // 3013\n\tSYS_FMIND64                         = 0xBC6 // 3014\n\tSYS_FMIND128                        = 0xBC7 // 3015\n\tSYS_FMODD32                         = 0xBC8 // 3016\n\tSYS_FMODD64                         = 0xBC9 // 3017\n\tSYS_FMODD128                        = 0xBCA // 3018\n\tSYS___FP_CAST_D                     = 0xBCB // 3019\n\tSYS_FREXPD32                        = 0xBCC // 3020\n\tSYS_FREXPD64                        = 0xBCD // 3021\n\tSYS_FREXPD128                       = 0xBCE // 3022\n\tSYS_HYPOTD32                        = 0xBCF // 3023\n\tSYS_HYPOTD64                        = 0xBD0 // 3024\n\tSYS_HYPOTD128                       = 0xBD1 // 3025\n\tSYS_ILOGBD32                        = 0xBD2 // 3026\n\tSYS_ILOGBD64                        = 0xBD3 // 3027\n\tSYS_ILOGBD128                       = 0xBD4 // 3028\n\tSYS_LDEXPD32                        = 0xBD5 // 3029\n\tSYS_LDEXPD64                        = 0xBD6 // 3030\n\tSYS_LDEXPD128                       = 0xBD7 // 3031\n\tSYS_LGAMMAD32                       = 0xBD8 // 3032\n\tSYS_LGAMMAD64                       = 0xBD9 // 3033\n\tSYS_LGAMMAD128                      = 0xBDA // 3034\n\tSYS_LLRINTD32                       = 0xBDB // 3035\n\tSYS_LLRINTD64                       = 0xBDC // 3036\n\tSYS_LLRINTD128                      = 0xBDD // 3037\n\tSYS_LLROUNDD32                      = 0xBDE // 3038\n\tSYS_LLROUNDD64                      = 0xBDF // 3039\n\tSYS_LLROUNDD128                     = 0xBE0 // 3040\n\tSYS_LOGD32                          = 0xBE1 // 3041\n\tSYS_LOGD64                          = 0xBE2 // 3042\n\tSYS_LOGD128                         = 0xBE3 // 3043\n\tSYS_LOG10D32                        = 0xBE4 // 3044\n\tSYS_LOG10D64                        = 0xBE5 // 3045\n\tSYS_LOG10D128                       = 0xBE6 // 3046\n\tSYS_LOG1PD32                        = 0xBE7 // 3047\n\tSYS_LOG1PD64                        = 0xBE8 // 3048\n\tSYS_LOG1PD128                       = 0xBE9 // 3049\n\tSYS_LOG2D32                         = 0xBEA // 3050\n\tSYS_LOG2D64                         = 0xBEB // 3051\n\tSYS_LOG2D128                        = 0xBEC // 3052\n\tSYS_LOGBD32                         = 0xBED // 3053\n\tSYS_LOGBD64                         = 0xBEE // 3054\n\tSYS_LOGBD128                        = 0xBEF // 3055\n\tSYS_LRINTD32                        = 0xBF0 // 3056\n\tSYS_LRINTD64                        = 0xBF1 // 3057\n\tSYS_LRINTD128                       = 0xBF2 // 3058\n\tSYS_LROUNDD32                       = 0xBF3 // 3059\n\tSYS_LROUNDD64                       = 0xBF4 // 3060\n\tSYS_LROUNDD128                      = 0xBF5 // 3061\n\tSYS_MODFD32                         = 0xBF6 // 3062\n\tSYS_MODFD64                         = 0xBF7 // 3063\n\tSYS_MODFD128                        = 0xBF8 // 3064\n\tSYS_NAND32                          = 0xBF9 // 3065\n\tSYS_NAND64                          = 0xBFA // 3066\n\tSYS_NAND128                         = 0xBFB // 3067\n\tSYS_NEARBYINTD32                    = 0xBFC // 3068\n\tSYS_NEARBYINTD64                    = 0xBFD // 3069\n\tSYS_NEARBYINTD128                   = 0xBFE // 3070\n\tSYS_NEXTAFTERD32                    = 0xBFF // 3071\n\tSYS_NEXTAFTERD64                    = 0xC00 // 3072\n\tSYS_NEXTAFTERD128                   = 0xC01 // 3073\n\tSYS_NEXTTOWARDD32                   = 0xC02 // 3074\n\tSYS_NEXTTOWARDD64                   = 0xC03 // 3075\n\tSYS_NEXTTOWARDD128                  = 0xC04 // 3076\n\tSYS_POWD32                          = 0xC05 // 3077\n\tSYS_POWD64                          = 0xC06 // 3078\n\tSYS_POWD128                         = 0xC07 // 3079\n\tSYS_QUANTIZED32                     = 0xC08 // 3080\n\tSYS_QUANTIZED64                     = 0xC09 // 3081\n\tSYS_QUANTIZED128                    = 0xC0A // 3082\n\tSYS_REMAINDERD32                    = 0xC0B // 3083\n\tSYS_REMAINDERD64                    = 0xC0C // 3084\n\tSYS_REMAINDERD128                   = 0xC0D // 3085\n\tSYS___REMQUOD32                     = 0xC0E // 3086\n\tSYS___REMQUOD64                     = 0xC0F // 3087\n\tSYS___REMQUOD128                    = 0xC10 // 3088\n\tSYS_RINTD32                         = 0xC11 // 3089\n\tSYS_RINTD64                         = 0xC12 // 3090\n\tSYS_RINTD128                        = 0xC13 // 3091\n\tSYS_ROUNDD32                        = 0xC14 // 3092\n\tSYS_ROUNDD64                        = 0xC15 // 3093\n\tSYS_ROUNDD128                       = 0xC16 // 3094\n\tSYS_SAMEQUANTUMD32                  = 0xC17 // 3095\n\tSYS_SAMEQUANTUMD64                  = 0xC18 // 3096\n\tSYS_SAMEQUANTUMD128                 = 0xC19 // 3097\n\tSYS_SCALBLND32                      = 0xC1A // 3098\n\tSYS_SCALBLND64                      = 0xC1B // 3099\n\tSYS_SCALBLND128                     = 0xC1C // 3100\n\tSYS_SCALBND32                       = 0xC1D // 3101\n\tSYS_SCALBND64                       = 0xC1E // 3102\n\tSYS_SCALBND128                      = 0xC1F // 3103\n\tSYS_SIND32                          = 0xC20 // 3104\n\tSYS_SIND64                          = 0xC21 // 3105\n\tSYS_SIND128                         = 0xC22 // 3106\n\tSYS_SINHD32                         = 0xC23 // 3107\n\tSYS_SINHD64                         = 0xC24 // 3108\n\tSYS_SINHD128                        = 0xC25 // 3109\n\tSYS_SQRTD32                         = 0xC26 // 3110\n\tSYS_SQRTD64                         = 0xC27 // 3111\n\tSYS_SQRTD128                        = 0xC28 // 3112\n\tSYS_STRTOD32                        = 0xC29 // 3113\n\tSYS_STRTOD64                        = 0xC2A // 3114\n\tSYS_STRTOD128                       = 0xC2B // 3115\n\tSYS_TAND32                          = 0xC2C // 3116\n\tSYS_TAND64                          = 0xC2D // 3117\n\tSYS_TAND128                         = 0xC2E // 3118\n\tSYS_TANHD32                         = 0xC2F // 3119\n\tSYS_TANHD64                         = 0xC30 // 3120\n\tSYS_TANHD128                        = 0xC31 // 3121\n\tSYS_TGAMMAD32                       = 0xC32 // 3122\n\tSYS_TGAMMAD64                       = 0xC33 // 3123\n\tSYS_TGAMMAD128                      = 0xC34 // 3124\n\tSYS_TRUNCD32                        = 0xC3E // 3134\n\tSYS_TRUNCD64                        = 0xC3F // 3135\n\tSYS_TRUNCD128                       = 0xC40 // 3136\n\tSYS_WCSTOD32                        = 0xC41 // 3137\n\tSYS_WCSTOD64                        = 0xC42 // 3138\n\tSYS_WCSTOD128                       = 0xC43 // 3139\n\tSYS___CODEPAGE_INFO                 = 0xC64 // 3172\n\tSYS_POSIX_OPENPT                    = 0xC66 // 3174\n\tSYS_PSELECT                         = 0xC67 // 3175\n\tSYS_SOCKATMARK                      = 0xC68 // 3176\n\tSYS_AIO_FSYNC                       = 0xC69 // 3177\n\tSYS_LIO_LISTIO                      = 0xC6A // 3178\n\tSYS___ATANPID32                     = 0xC6B // 3179\n\tSYS___ATANPID64                     = 0xC6C // 3180\n\tSYS___ATANPID128                    = 0xC6D // 3181\n\tSYS___COSPID32                      = 0xC6E // 3182\n\tSYS___COSPID64                      = 0xC6F // 3183\n\tSYS___COSPID128                     = 0xC70 // 3184\n\tSYS___SINPID32                      = 0xC71 // 3185\n\tSYS___SINPID64                      = 0xC72 // 3186\n\tSYS___SINPID128                     = 0xC73 // 3187\n\tSYS_SETIPV4SOURCEFILTER             = 0xC76 // 3190\n\tSYS_GETIPV4SOURCEFILTER             = 0xC77 // 3191\n\tSYS_SETSOURCEFILTER                 = 0xC78 // 3192\n\tSYS_GETSOURCEFILTER                 = 0xC79 // 3193\n\tSYS_FWRITE_UNLOCKED                 = 0xC7A // 3194\n\tSYS_FREAD_UNLOCKED                  = 0xC7B // 3195\n\tSYS_FGETS_UNLOCKED                  = 0xC7C // 3196\n\tSYS_GETS_UNLOCKED                   = 0xC7D // 3197\n\tSYS_FPUTS_UNLOCKED                  = 0xC7E // 3198\n\tSYS_PUTS_UNLOCKED                   = 0xC7F // 3199\n\tSYS_FGETC_UNLOCKED                  = 0xC80 // 3200\n\tSYS_FPUTC_UNLOCKED                  = 0xC81 // 3201\n\tSYS_DLADDR                          = 0xC82 // 3202\n\tSYS_SHM_OPEN                        = 0xC8C // 3212\n\tSYS_SHM_UNLINK                      = 0xC8D // 3213\n\tSYS___CLASS2F                       = 0xC91 // 3217\n\tSYS___CLASS2L                       = 0xC92 // 3218\n\tSYS___CLASS2F_B                     = 0xC93 // 3219\n\tSYS___CLASS2F_H                     = 0xC94 // 3220\n\tSYS___CLASS2L_B                     = 0xC95 // 3221\n\tSYS___CLASS2L_H                     = 0xC96 // 3222\n\tSYS___CLASS2D32                     = 0xC97 // 3223\n\tSYS___CLASS2D64                     = 0xC98 // 3224\n\tSYS___CLASS2D128                    = 0xC99 // 3225\n\tSYS___TOCSNAME2                     = 0xC9A // 3226\n\tSYS___D1TOP                         = 0xC9B // 3227\n\tSYS___D2TOP                         = 0xC9C // 3228\n\tSYS___D4TOP                         = 0xC9D // 3229\n\tSYS___PTOD1                         = 0xC9E // 3230\n\tSYS___PTOD2                         = 0xC9F // 3231\n\tSYS___PTOD4                         = 0xCA0 // 3232\n\tSYS_CLEARERR_UNLOCKED               = 0xCA1 // 3233\n\tSYS_FDELREC_UNLOCKED                = 0xCA2 // 3234\n\tSYS_FEOF_UNLOCKED                   = 0xCA3 // 3235\n\tSYS_FERROR_UNLOCKED                 = 0xCA4 // 3236\n\tSYS_FFLUSH_UNLOCKED                 = 0xCA5 // 3237\n\tSYS_FGETPOS_UNLOCKED                = 0xCA6 // 3238\n\tSYS_FGETWC_UNLOCKED                 = 0xCA7 // 3239\n\tSYS_FGETWS_UNLOCKED                 = 0xCA8 // 3240\n\tSYS_FILENO_UNLOCKED                 = 0xCA9 // 3241\n\tSYS_FLDATA_UNLOCKED                 = 0xCAA // 3242\n\tSYS_FLOCATE_UNLOCKED                = 0xCAB // 3243\n\tSYS_FPRINTF_UNLOCKED                = 0xCAC // 3244\n\tSYS_FPUTWC_UNLOCKED                 = 0xCAD // 3245\n\tSYS_FPUTWS_UNLOCKED                 = 0xCAE // 3246\n\tSYS_FSCANF_UNLOCKED                 = 0xCAF // 3247\n\tSYS_FSEEK_UNLOCKED                  = 0xCB0 // 3248\n\tSYS_FSEEKO_UNLOCKED                 = 0xCB1 // 3249\n\tSYS_FSETPOS_UNLOCKED                = 0xCB3 // 3251\n\tSYS_FTELL_UNLOCKED                  = 0xCB4 // 3252\n\tSYS_FTELLO_UNLOCKED                 = 0xCB5 // 3253\n\tSYS_FUPDATE_UNLOCKED                = 0xCB7 // 3255\n\tSYS_FWIDE_UNLOCKED                  = 0xCB8 // 3256\n\tSYS_FWPRINTF_UNLOCKED               = 0xCB9 // 3257\n\tSYS_FWSCANF_UNLOCKED                = 0xCBA // 3258\n\tSYS_GETWC_UNLOCKED                  = 0xCBB // 3259\n\tSYS_GETWCHAR_UNLOCKED               = 0xCBC // 3260\n\tSYS_PERROR_UNLOCKED                 = 0xCBD // 3261\n\tSYS_PRINTF_UNLOCKED                 = 0xCBE // 3262\n\tSYS_PUTWC_UNLOCKED                  = 0xCBF // 3263\n\tSYS_PUTWCHAR_UNLOCKED               = 0xCC0 // 3264\n\tSYS_REWIND_UNLOCKED                 = 0xCC1 // 3265\n\tSYS_SCANF_UNLOCKED                  = 0xCC2 // 3266\n\tSYS_UNGETC_UNLOCKED                 = 0xCC3 // 3267\n\tSYS_UNGETWC_UNLOCKED                = 0xCC4 // 3268\n\tSYS_VFPRINTF_UNLOCKED               = 0xCC5 // 3269\n\tSYS_VFSCANF_UNLOCKED                = 0xCC7 // 3271\n\tSYS_VFWPRINTF_UNLOCKED              = 0xCC9 // 3273\n\tSYS_VFWSCANF_UNLOCKED               = 0xCCB // 3275\n\tSYS_VPRINTF_UNLOCKED                = 0xCCD // 3277\n\tSYS_VSCANF_UNLOCKED                 = 0xCCF // 3279\n\tSYS_VWPRINTF_UNLOCKED               = 0xCD1 // 3281\n\tSYS_VWSCANF_UNLOCKED                = 0xCD3 // 3283\n\tSYS_WPRINTF_UNLOCKED                = 0xCD5 // 3285\n\tSYS_WSCANF_UNLOCKED                 = 0xCD6 // 3286\n\tSYS_ASCTIME64                       = 0xCD7 // 3287\n\tSYS_ASCTIME64_R                     = 0xCD8 // 3288\n\tSYS_CTIME64                         = 0xCD9 // 3289\n\tSYS_CTIME64_R                       = 0xCDA // 3290\n\tSYS_DIFFTIME64                      = 0xCDB // 3291\n\tSYS_GMTIME64                        = 0xCDC // 3292\n\tSYS_GMTIME64_R                      = 0xCDD // 3293\n\tSYS_LOCALTIME64                     = 0xCDE // 3294\n\tSYS_LOCALTIME64_R                   = 0xCDF // 3295\n\tSYS_MKTIME64                        = 0xCE0 // 3296\n\tSYS_TIME64                          = 0xCE1 // 3297\n\tSYS___LOGIN_APPLID                  = 0xCE2 // 3298\n\tSYS___PASSWD_APPLID                 = 0xCE3 // 3299\n\tSYS_PTHREAD_SECURITY_APPLID_NP      = 0xCE4 // 3300\n\tSYS___GETTHENT                      = 0xCE5 // 3301\n\tSYS_FREEIFADDRS                     = 0xCE6 // 3302\n\tSYS_GETIFADDRS                      = 0xCE7 // 3303\n\tSYS_POSIX_FALLOCATE                 = 0xCE8 // 3304\n\tSYS_POSIX_MEMALIGN                  = 0xCE9 // 3305\n\tSYS_SIZEOF_ALLOC                    = 0xCEA // 3306\n\tSYS_RESIZE_ALLOC                    = 0xCEB // 3307\n\tSYS_FREAD_NOUPDATE                  = 0xCEC // 3308\n\tSYS_FREAD_NOUPDATE_UNLOCKED         = 0xCED // 3309\n\tSYS_FGETPOS64                       = 0xCEE // 3310\n\tSYS_FSEEK64                         = 0xCEF // 3311\n\tSYS_FSEEKO64                        = 0xCF0 // 3312\n\tSYS_FSETPOS64                       = 0xCF1 // 3313\n\tSYS_FTELL64                         = 0xCF2 // 3314\n\tSYS_FTELLO64                        = 0xCF3 // 3315\n\tSYS_FGETPOS64_UNLOCKED              = 0xCF4 // 3316\n\tSYS_FSEEK64_UNLOCKED                = 0xCF5 // 3317\n\tSYS_FSEEKO64_UNLOCKED               = 0xCF6 // 3318\n\tSYS_FSETPOS64_UNLOCKED              = 0xCF7 // 3319\n\tSYS_FTELL64_UNLOCKED                = 0xCF8 // 3320\n\tSYS_FTELLO64_UNLOCKED               = 0xCF9 // 3321\n\tSYS_FOPEN_UNLOCKED                  = 0xCFA // 3322\n\tSYS_FREOPEN_UNLOCKED                = 0xCFB // 3323\n\tSYS_FDOPEN_UNLOCKED                 = 0xCFC // 3324\n\tSYS_TMPFILE_UNLOCKED                = 0xCFD // 3325\n\tSYS___MOSERVICES                    = 0xD3D // 3389\n\tSYS___GETTOD                        = 0xD3E // 3390\n\tSYS_C16RTOMB                        = 0xD40 // 3392\n\tSYS_C32RTOMB                        = 0xD41 // 3393\n\tSYS_MBRTOC16                        = 0xD42 // 3394\n\tSYS_MBRTOC32                        = 0xD43 // 3395\n\tSYS_QUANTEXPD32                     = 0xD44 // 3396\n\tSYS_QUANTEXPD64                     = 0xD45 // 3397\n\tSYS_QUANTEXPD128                    = 0xD46 // 3398\n\tSYS___LOCALE_CTL                    = 0xD47 // 3399\n\tSYS___SMF_RECORD2                   = 0xD48 // 3400\n\tSYS_FOPEN64                         = 0xD49 // 3401\n\tSYS_FOPEN64_UNLOCKED                = 0xD4A // 3402\n\tSYS_FREOPEN64                       = 0xD4B // 3403\n\tSYS_FREOPEN64_UNLOCKED              = 0xD4C // 3404\n\tSYS_TMPFILE64                       = 0xD4D // 3405\n\tSYS_TMPFILE64_UNLOCKED              = 0xD4E // 3406\n\tSYS_GETDATE64                       = 0xD4F // 3407\n\tSYS_GETTIMEOFDAY64                  = 0xD50 // 3408\n\tSYS_BIND2ADDRSEL                    = 0xD59 // 3417\n\tSYS_INET6_IS_SRCADDR                = 0xD5A // 3418\n\tSYS___GETGRGID1                     = 0xD5B // 3419\n\tSYS___GETGRNAM1                     = 0xD5C // 3420\n\tSYS___FBUFSIZE                      = 0xD60 // 3424\n\tSYS___FPENDING                      = 0xD61 // 3425\n\tSYS___FLBF                          = 0xD62 // 3426\n\tSYS___FREADABLE                     = 0xD63 // 3427\n\tSYS___FWRITABLE                     = 0xD64 // 3428\n\tSYS___FREADING                      = 0xD65 // 3429\n\tSYS___FWRITING                      = 0xD66 // 3430\n\tSYS___FSETLOCKING                   = 0xD67 // 3431\n\tSYS__FLUSHLBF                       = 0xD68 // 3432\n\tSYS___FPURGE                        = 0xD69 // 3433\n\tSYS___FREADAHEAD                    = 0xD6A // 3434\n\tSYS___FSETERR                       = 0xD6B // 3435\n\tSYS___FPENDING_UNLOCKED             = 0xD6C // 3436\n\tSYS___FREADING_UNLOCKED             = 0xD6D // 3437\n\tSYS___FWRITING_UNLOCKED             = 0xD6E // 3438\n\tSYS__FLUSHLBF_UNLOCKED              = 0xD6F // 3439\n\tSYS___FPURGE_UNLOCKED               = 0xD70 // 3440\n\tSYS___FREADAHEAD_UNLOCKED           = 0xD71 // 3441\n\tSYS___LE_CEEGTJS                    = 0xD72 // 3442\n\tSYS___LE_RECORD_DUMP                = 0xD73 // 3443\n\tSYS_FSTAT64                         = 0xD74 // 3444\n\tSYS_LSTAT64                         = 0xD75 // 3445\n\tSYS_STAT64                          = 0xD76 // 3446\n\tSYS___READDIR2_64                   = 0xD77 // 3447\n\tSYS___OPEN_STAT64                   = 0xD78 // 3448\n\tSYS_FTW64                           = 0xD79 // 3449\n\tSYS_NFTW64                          = 0xD7A // 3450\n\tSYS_UTIME64                         = 0xD7B // 3451\n\tSYS_UTIMES64                        = 0xD7C // 3452\n\tSYS___GETIPC64                      = 0xD7D // 3453\n\tSYS_MSGCTL64                        = 0xD7E // 3454\n\tSYS_SEMCTL64                        = 0xD7F // 3455\n\tSYS_SHMCTL64                        = 0xD80 // 3456\n\tSYS_MSGXRCV64                       = 0xD81 // 3457\n\tSYS___MGXR64                        = 0xD81 // 3457\n\tSYS_W_GETPSENT64                    = 0xD82 // 3458\n\tSYS_PTHREAD_COND_TIMEDWAIT64        = 0xD83 // 3459\n\tSYS_FTIME64                         = 0xD85 // 3461\n\tSYS_GETUTXENT64                     = 0xD86 // 3462\n\tSYS_GETUTXID64                      = 0xD87 // 3463\n\tSYS_GETUTXLINE64                    = 0xD88 // 3464\n\tSYS_PUTUTXLINE64                    = 0xD89 // 3465\n\tSYS_NEWLOCALE                       = 0xD8A // 3466\n\tSYS_FREELOCALE                      = 0xD8B // 3467\n\tSYS_USELOCALE                       = 0xD8C // 3468\n\tSYS_DUPLOCALE                       = 0xD8D // 3469\n\tSYS___CHATTR64                      = 0xD9C // 3484\n\tSYS___LCHATTR64                     = 0xD9D // 3485\n\tSYS___FCHATTR64                     = 0xD9E // 3486\n\tSYS_____CHATTR64_A                  = 0xD9F // 3487\n\tSYS_____LCHATTR64_A                 = 0xDA0 // 3488\n\tSYS___LE_CEEUSGD                    = 0xDA1 // 3489\n\tSYS___LE_IFAM_CON                   = 0xDA2 // 3490\n\tSYS___LE_IFAM_DSC                   = 0xDA3 // 3491\n\tSYS___LE_IFAM_GET                   = 0xDA4 // 3492\n\tSYS___LE_IFAM_QRY                   = 0xDA5 // 3493\n\tSYS_ALIGNED_ALLOC                   = 0xDA6 // 3494\n\tSYS_ACCEPT4                         = 0xDA7 // 3495\n\tSYS___ACCEPT4_A                     = 0xDA8 // 3496\n\tSYS_COPYFILERANGE                   = 0xDA9 // 3497\n\tSYS_GETLINE                         = 0xDAA // 3498\n\tSYS___GETLINE_A                     = 0xDAB // 3499\n\tSYS_DIRFD                           = 0xDAC // 3500\n\tSYS_CLOCK_GETTIME                   = 0xDAD // 3501\n\tSYS_DUP3                            = 0xDAE // 3502\n\tSYS_EPOLL_CREATE                    = 0xDAF // 3503\n\tSYS_EPOLL_CREATE1                   = 0xDB0 // 3504\n\tSYS_EPOLL_CTL                       = 0xDB1 // 3505\n\tSYS_EPOLL_WAIT                      = 0xDB2 // 3506\n\tSYS_EPOLL_PWAIT                     = 0xDB3 // 3507\n\tSYS_EVENTFD                         = 0xDB4 // 3508\n\tSYS_STATFS                          = 0xDB5 // 3509\n\tSYS___STATFS_A                      = 0xDB6 // 3510\n\tSYS_FSTATFS                         = 0xDB7 // 3511\n\tSYS_INOTIFY_INIT                    = 0xDB8 // 3512\n\tSYS_INOTIFY_INIT1                   = 0xDB9 // 3513\n\tSYS_INOTIFY_ADD_WATCH               = 0xDBA // 3514\n\tSYS___INOTIFY_ADD_WATCH_A           = 0xDBB // 3515\n\tSYS_INOTIFY_RM_WATCH                = 0xDBC // 3516\n\tSYS_PIPE2                           = 0xDBD // 3517\n\tSYS_PIVOT_ROOT                      = 0xDBE // 3518\n\tSYS___PIVOT_ROOT_A                  = 0xDBF // 3519\n\tSYS_PRCTL                           = 0xDC0 // 3520\n\tSYS_PRLIMIT                         = 0xDC1 // 3521\n\tSYS_SETHOSTNAME                     = 0xDC2 // 3522\n\tSYS___SETHOSTNAME_A                 = 0xDC3 // 3523\n\tSYS_SETRESUID                       = 0xDC4 // 3524\n\tSYS_SETRESGID                       = 0xDC5 // 3525\n\tSYS_PTHREAD_CONDATTR_GETCLOCK       = 0xDC6 // 3526\n\tSYS_FLOCK                           = 0xDC7 // 3527\n\tSYS_FGETXATTR                       = 0xDC8 // 3528\n\tSYS___FGETXATTR_A                   = 0xDC9 // 3529\n\tSYS_FLISTXATTR                      = 0xDCA // 3530\n\tSYS___FLISTXATTR_A                  = 0xDCB // 3531\n\tSYS_FREMOVEXATTR                    = 0xDCC // 3532\n\tSYS___FREMOVEXATTR_A                = 0xDCD // 3533\n\tSYS_FSETXATTR                       = 0xDCE // 3534\n\tSYS___FSETXATTR_A                   = 0xDCF // 3535\n\tSYS_GETXATTR                        = 0xDD0 // 3536\n\tSYS___GETXATTR_A                    = 0xDD1 // 3537\n\tSYS_LGETXATTR                       = 0xDD2 // 3538\n\tSYS___LGETXATTR_A                   = 0xDD3 // 3539\n\tSYS_LISTXATTR                       = 0xDD4 // 3540\n\tSYS___LISTXATTR_A                   = 0xDD5 // 3541\n\tSYS_LLISTXATTR                      = 0xDD6 // 3542\n\tSYS___LLISTXATTR_A                  = 0xDD7 // 3543\n\tSYS_LREMOVEXATTR                    = 0xDD8 // 3544\n\tSYS___LREMOVEXATTR_A                = 0xDD9 // 3545\n\tSYS_LSETXATTR                       = 0xDDA // 3546\n\tSYS___LSETXATTR_A                   = 0xDDB // 3547\n\tSYS_REMOVEXATTR                     = 0xDDC // 3548\n\tSYS___REMOVEXATTR_A                 = 0xDDD // 3549\n\tSYS_SETXATTR                        = 0xDDE // 3550\n\tSYS___SETXATTR_A                    = 0xDDF // 3551\n\tSYS_FDATASYNC                       = 0xDE0 // 3552\n\tSYS_SYNCFS                          = 0xDE1 // 3553\n\tSYS_FUTIMES                         = 0xDE2 // 3554\n\tSYS_FUTIMESAT                       = 0xDE3 // 3555\n\tSYS___FUTIMESAT_A                   = 0xDE4 // 3556\n\tSYS_LUTIMES                         = 0xDE5 // 3557\n\tSYS___LUTIMES_A                     = 0xDE6 // 3558\n\tSYS_INET_ATON                       = 0xDE7 // 3559\n\tSYS_GETRANDOM                       = 0xDE8 // 3560\n\tSYS_GETTID                          = 0xDE9 // 3561\n\tSYS_MEMFD_CREATE                    = 0xDEA // 3562\n\tSYS___MEMFD_CREATE_A                = 0xDEB // 3563\n\tSYS_FACCESSAT                       = 0xDEC // 3564\n\tSYS___FACCESSAT_A                   = 0xDED // 3565\n\tSYS_FCHMODAT                        = 0xDEE // 3566\n\tSYS___FCHMODAT_A                    = 0xDEF // 3567\n\tSYS_FCHOWNAT                        = 0xDF0 // 3568\n\tSYS___FCHOWNAT_A                    = 0xDF1 // 3569\n\tSYS_FSTATAT                         = 0xDF2 // 3570\n\tSYS___FSTATAT_A                     = 0xDF3 // 3571\n\tSYS_LINKAT                          = 0xDF4 // 3572\n\tSYS___LINKAT_A                      = 0xDF5 // 3573\n\tSYS_MKDIRAT                         = 0xDF6 // 3574\n\tSYS___MKDIRAT_A                     = 0xDF7 // 3575\n\tSYS_MKFIFOAT                        = 0xDF8 // 3576\n\tSYS___MKFIFOAT_A                    = 0xDF9 // 3577\n\tSYS_MKNODAT                         = 0xDFA // 3578\n\tSYS___MKNODAT_A                     = 0xDFB // 3579\n\tSYS_OPENAT                          = 0xDFC // 3580\n\tSYS___OPENAT_A                      = 0xDFD // 3581\n\tSYS_READLINKAT                      = 0xDFE // 3582\n\tSYS___READLINKAT_A                  = 0xDFF // 3583\n\tSYS_RENAMEAT                        = 0xE00 // 3584\n\tSYS___RENAMEAT_A                    = 0xE01 // 3585\n\tSYS_RENAMEAT2                       = 0xE02 // 3586\n\tSYS___RENAMEAT2_A                   = 0xE03 // 3587\n\tSYS_SYMLINKAT                       = 0xE04 // 3588\n\tSYS___SYMLINKAT_A                   = 0xE05 // 3589\n\tSYS_UNLINKAT                        = 0xE06 // 3590\n\tSYS___UNLINKAT_A                    = 0xE07 // 3591\n\tSYS_SYSINFO                         = 0xE08 // 3592\n\tSYS_WAIT4                           = 0xE0A // 3594\n\tSYS_CLONE                           = 0xE0B // 3595\n\tSYS_UNSHARE                         = 0xE0C // 3596\n\tSYS_SETNS                           = 0xE0D // 3597\n\tSYS_CAPGET                          = 0xE0E // 3598\n\tSYS_CAPSET                          = 0xE0F // 3599\n\tSYS_STRCHRNUL                       = 0xE10 // 3600\n\tSYS_PTHREAD_CONDATTR_SETCLOCK       = 0xE12 // 3602\n\tSYS_OPEN_BY_HANDLE_AT               = 0xE13 // 3603\n\tSYS___OPEN_BY_HANDLE_AT_A           = 0xE14 // 3604\n\tSYS___INET_ATON_A                   = 0xE15 // 3605\n\tSYS_MOUNT1                          = 0xE16 // 3606\n\tSYS___MOUNT1_A                      = 0xE17 // 3607\n\tSYS_UMOUNT1                         = 0xE18 // 3608\n\tSYS___UMOUNT1_A                     = 0xE19 // 3609\n\tSYS_UMOUNT2                         = 0xE1A // 3610\n\tSYS___UMOUNT2_A                     = 0xE1B // 3611\n\tSYS___PRCTL_A                       = 0xE1C // 3612\n\tSYS_LOCALTIME_R2                    = 0xE1D // 3613\n\tSYS___LOCALTIME_R2_A                = 0xE1E // 3614\n\tSYS_OPENAT2                         = 0xE1F // 3615\n\tSYS___OPENAT2_A                     = 0xE20 // 3616\n\tSYS___LE_CEEMICT                    = 0xE21 // 3617\n\tSYS_GETENTROPY                      = 0xE22 // 3618\n\tSYS_NANOSLEEP                       = 0xE23 // 3619\n\tSYS_UTIMENSAT                       = 0xE24 // 3620\n\tSYS___UTIMENSAT_A                   = 0xE25 // 3621\n\tSYS_ASPRINTF                        = 0xE26 // 3622\n\tSYS___ASPRINTF_A                    = 0xE27 // 3623\n\tSYS_VASPRINTF                       = 0xE28 // 3624\n\tSYS___VASPRINTF_A                   = 0xE29 // 3625\n\tSYS_DPRINTF                         = 0xE2A // 3626\n\tSYS___DPRINTF_A                     = 0xE2B // 3627\n\tSYS_GETOPT_LONG                     = 0xE2C // 3628\n\tSYS___GETOPT_LONG_A                 = 0xE2D // 3629\n\tSYS_PSIGNAL                         = 0xE2E // 3630\n\tSYS___PSIGNAL_A                     = 0xE2F // 3631\n\tSYS_PSIGNAL_UNLOCKED                = 0xE30 // 3632\n\tSYS___PSIGNAL_UNLOCKED_A            = 0xE31 // 3633\n\tSYS_FSTATAT_O                       = 0xE32 // 3634\n\tSYS___FSTATAT_O_A                   = 0xE33 // 3635\n\tSYS_FSTATAT64                       = 0xE34 // 3636\n\tSYS___FSTATAT64_A                   = 0xE35 // 3637\n\tSYS___CHATTRAT                      = 0xE36 // 3638\n\tSYS_____CHATTRAT_A                  = 0xE37 // 3639\n\tSYS___CHATTRAT64                    = 0xE38 // 3640\n\tSYS_____CHATTRAT64_A                = 0xE39 // 3641\n\tSYS_MADVISE                         = 0xE3A // 3642\n\tSYS___AUTHENTICATE                  = 0xE3B // 3643\n\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go",
    "content": "// cgo -godefs types_aix.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && aix\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x3ff\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype off64 int64\ntype off int32\ntype Mode_t uint32\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct{}\n\ntype Time_t int32\n\ntype Tms struct{}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Timezone struct {\n\tMinuteswest int32\n\tDsttime     int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype Pid_t int32\n\ntype _Gid_t uint32\n\ntype dev_t uint32\n\ntype Stat_t struct {\n\tDev      uint32\n\tIno      uint32\n\tMode     uint32\n\tNlink    int16\n\tFlag     uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint32\n\tSize     int32\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tBlksize  int32\n\tBlocks   int32\n\tVfstype  int32\n\tVfs      uint32\n\tType     uint32\n\tGen      uint32\n\tReserved [9]uint32\n}\n\ntype StatxTimestamp struct{}\n\ntype Statx_t struct{}\n\ntype Dirent struct {\n\tOffset uint32\n\tIno    uint32\n\tReclen uint16\n\tNamlen uint16\n\tName   [256]uint8\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [1023]uint8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [120]uint8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [1012]uint8\n}\n\ntype _Socklen uint32\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x404\n\tSizeofSockaddrUnix     = 0x401\n\tSizeofSockaddrDatalink = 0x80\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tSizeofIfMsghdr = 0x10\n)\n\ntype IfMsgHdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tAddrlen uint8\n\t_       [1]byte\n}\n\ntype FdSet struct {\n\tBits [2048]int32\n}\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\ntype Ustat_t struct{}\n\ntype Sigset_t struct {\n\tLosigs uint32\n\tHisigs uint32\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x1\n)\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [16]uint8\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  uint8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  uint16\n\tRevents uint16\n}\n\nconst (\n\tPOLLERR    = 0x4000\n\tPOLLHUP    = 0x2000\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x8000\n\tPOLLOUT    = 0x2\n\tPOLLPRI    = 0x4\n\tPOLLRDBAND = 0x20\n\tPOLLRDNORM = 0x10\n\tPOLLWRBAND = 0x40\n\tPOLLWRNORM = 0x2\n)\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tSysid  uint32\n\tPid    int32\n\tVfs    int32\n\tStart  int64\n\tLen    int64\n}\n\ntype Fsid_t struct {\n\tVal [2]uint32\n}\ntype Fsid64_t struct {\n\tVal [2]uint64\n}\n\ntype Statfs_t struct {\n\tVersion   int32\n\tType      int32\n\tBsize     uint32\n\tBlocks    uint32\n\tBfree     uint32\n\tBavail    uint32\n\tFiles     uint32\n\tFfree     uint32\n\tFsid      Fsid_t\n\tVfstype   int32\n\tFsize     uint32\n\tVfsnumber int32\n\tVfsoff    int32\n\tVfslen    int32\n\tVfsvers   int32\n\tFname     [32]uint8\n\tFpack     [32]uint8\n\tName_max  int32\n}\n\nconst RNDGETENTCNT = 0x80045200\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go",
    "content": "// cgo -godefs types_aix.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && aix\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x3ff\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype off64 int64\ntype off int64\ntype Mode_t uint32\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct{}\n\ntype Time_t int64\n\ntype Tms struct{}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Timezone struct {\n\tMinuteswest int32\n\tDsttime     int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype Pid_t int32\n\ntype _Gid_t uint32\n\ntype dev_t uint64\n\ntype Stat_t struct {\n\tDev      uint64\n\tIno      uint64\n\tMode     uint32\n\tNlink    int16\n\tFlag     uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint64\n\tSsize    int32\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tBlksize  int64\n\tBlocks   int64\n\tVfstype  int32\n\tVfs      uint32\n\tType     uint32\n\tGen      uint32\n\tReserved [9]uint32\n\tPadto_ll uint32\n\tSize     int64\n}\n\ntype StatxTimestamp struct{}\n\ntype Statx_t struct{}\n\ntype Dirent struct {\n\tOffset uint64\n\tIno    uint64\n\tReclen uint16\n\tNamlen uint16\n\tName   [256]uint8\n\t_      [4]byte\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [1023]uint8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [120]uint8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [1012]uint8\n}\n\ntype _Socklen uint32\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x404\n\tSizeofSockaddrUnix     = 0x401\n\tSizeofSockaddrDatalink = 0x80\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tSizeofIfMsghdr = 0x10\n)\n\ntype IfMsgHdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tAddrlen uint8\n\t_       [1]byte\n}\n\ntype FdSet struct {\n\tBits [1024]int64\n}\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\ntype Ustat_t struct{}\n\ntype Sigset_t struct {\n\tSet [4]uint64\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x1\n)\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [16]uint8\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  uint8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  uint16\n\tRevents uint16\n}\n\nconst (\n\tPOLLERR    = 0x4000\n\tPOLLHUP    = 0x2000\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x8000\n\tPOLLOUT    = 0x2\n\tPOLLPRI    = 0x4\n\tPOLLRDBAND = 0x20\n\tPOLLRDNORM = 0x10\n\tPOLLWRBAND = 0x40\n\tPOLLWRNORM = 0x2\n)\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tSysid  uint32\n\tPid    int32\n\tVfs    int32\n\tStart  int64\n\tLen    int64\n}\n\ntype Fsid_t struct {\n\tVal [2]uint32\n}\ntype Fsid64_t struct {\n\tVal [2]uint64\n}\n\ntype Statfs_t struct {\n\tVersion   int32\n\tType      int32\n\tBsize     uint64\n\tBlocks    uint64\n\tBfree     uint64\n\tBavail    uint64\n\tFiles     uint64\n\tFfree     uint64\n\tFsid      Fsid64_t\n\tVfstype   int32\n\tFsize     uint64\n\tVfsnumber int32\n\tVfsoff    int32\n\tVfslen    int32\n\tVfsvers   int32\n\tFname     [32]uint8\n\tFpack     [32]uint8\n\tName_max  int32\n\t_         [4]byte\n}\n\nconst RNDGETENTCNT = 0x80045200\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go",
    "content": "// cgo -godefs types_darwin.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     int32\n\tMode    uint16\n\tNlink   uint16\n\tIno     uint64\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tQspare  [2]int64\n}\n\ntype Statfs_t struct {\n\tBsize       uint32\n\tIosize      int32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        uint32\n\tFlags       uint32\n\tFssubtype   uint32\n\tFstypename  [16]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\tFlags_ext   uint32\n\tReserved    [7]uint32\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Fstore_t struct {\n\tFlags      uint32\n\tPosmode    int32\n\tOffset     int64\n\tLength     int64\n\tBytesalloc int64\n}\n\ntype Radvisory_t struct {\n\tOffset int64\n\tCount  int32\n\t_      [4]byte\n}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint64\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags uint32\n\t_     [16]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Dirent struct {\n\tIno     uint64\n\tSeekoff uint64\n\tReclen  uint16\n\tNamlen  uint16\n\tType    uint8\n\tName    [1024]int8\n\t_       [3]byte\n}\n\ntype Attrlist struct {\n\tBitmapcount uint16\n\tReserved    uint16\n\tCommonattr  uint32\n\tVolattr     uint32\n\tDirattr     uint32\n\tFileattr    uint32\n\tForkattr    uint32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype RawSockaddrCtl struct {\n\tSc_len      uint8\n\tSc_family   uint8\n\tSs_sysaddr  uint16\n\tSc_id       uint32\n\tSc_unit     uint32\n\tSc_reserved [5]uint32\n}\n\ntype RawSockaddrVM struct {\n\tLen       uint8\n\tFamily    uint8\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n}\n\ntype XVSockPCB struct {\n\tXv_len           uint32\n\tXv_vsockpp       uint64\n\tXvp_local_cid    uint32\n\tXvp_local_port   uint32\n\tXvp_remote_cid   uint32\n\tXvp_remote_port  uint32\n\tXvp_rxcnt        uint32\n\tXvp_txcnt        uint32\n\tXvp_peer_rxhiwat uint32\n\tXvp_peer_rxcnt   uint32\n\tXvp_last_pid     int32\n\tXvp_gencnt       uint64\n\tXv_socket        XSocket\n\t_                [4]byte\n}\n\ntype XSocket struct {\n\tXso_len      uint32\n\tXso_so       uint32\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\tSo_pcb       uint32\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSocket64 struct {\n\tXso_len      uint32\n\t_            [8]byte\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\t_            [8]byte\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSockbuf struct {\n\tCc    uint32\n\tHiwat uint32\n\tMbcnt uint32\n\tMbmax uint32\n\tLowat int32\n\tFlags int16\n\tTimeo int16\n}\n\ntype XVSockPgen struct {\n\tLen   uint32\n\tCount uint64\n\tGen   uint64\n\tSogen uint64\n}\n\ntype _Socklen uint32\n\ntype SaeAssocID uint32\n\ntype SaeConnID uint32\n\ntype SaEndpoints struct {\n\tSrcif      uint32\n\tSrcaddr    *RawSockaddr\n\tSrcaddrlen uint32\n\tDstaddr    *RawSockaddr\n\tDstaddrlen uint32\n\t_          [4]byte\n}\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype TCPConnectionInfo struct {\n\tState               uint8\n\tSnd_wscale          uint8\n\tRcv_wscale          uint8\n\t_                   uint8\n\tOptions             uint32\n\tFlags               uint32\n\tRto                 uint32\n\tMaxseg              uint32\n\tSnd_ssthresh        uint32\n\tSnd_cwnd            uint32\n\tSnd_wnd             uint32\n\tSnd_sbbytes         uint32\n\tRcv_wnd             uint32\n\tRttcur              uint32\n\tSrtt                uint32\n\tRttvar              uint32\n\tTxpackets           uint64\n\tTxbytes             uint64\n\tTxretransmitbytes   uint64\n\tRxpackets           uint64\n\tRxbytes             uint64\n\tRxoutoforderbytes   uint64\n\tTxretransmitpackets uint64\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x6c\n\tSizeofSockaddrUnix      = 0x6a\n\tSizeofSockaddrDatalink  = 0x14\n\tSizeofSockaddrCtl       = 0x20\n\tSizeofSockaddrVM        = 0xc\n\tSizeofXvsockpcb         = 0xa8\n\tSizeofXSocket           = 0x64\n\tSizeofXSockbuf          = 0x18\n\tSizeofXVSockPgen        = 0x20\n\tSizeofXucred            = 0x4c\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofMsghdr            = 0x30\n\tSizeofCmsghdr           = 0xc\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofTCPConnectionInfo = 0x70\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\tSizeofIfMsghdr2   = 0xa0\n\tSizeofIfData      = 0x60\n\tSizeofIfData64    = 0x80\n\tSizeofIfaMsghdr   = 0x14\n\tSizeofIfmaMsghdr  = 0x10\n\tSizeofIfmaMsghdr2 = 0x14\n\tSizeofRtMsghdr    = 0x5c\n\tSizeofRtMsghdr2   = 0x5c\n\tSizeofRtMetrics   = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype IfMsghdr2 struct {\n\tMsglen     uint16\n\tVersion    uint8\n\tType       uint8\n\tAddrs      int32\n\tFlags      int32\n\tIndex      uint16\n\tSnd_len    int32\n\tSnd_maxlen int32\n\tSnd_drops  int32\n\tTimer      int32\n\tData       IfData64\n}\n\ntype IfData struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval32\n\tUnused2    uint32\n\tHwassist   uint32\n\tReserved1  uint32\n\tReserved2  uint32\n}\n\ntype IfData64 struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfmaMsghdr2 struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tAddrs    int32\n\tFlags    int32\n\tIndex    uint16\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMsghdr2 struct {\n\tMsglen      uint16\n\tVersion     uint8\n\tType        uint8\n\tIndex       uint16\n\tFlags       int32\n\tAddrs       int32\n\tRefcnt      int32\n\tParentflags int32\n\tReserved    int32\n\tUse         int32\n\tInits       uint32\n\tRmx         RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tState    uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval32\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag  uint64\n\tOflag  uint64\n\tCflag  uint64\n\tLflag  uint64\n\tCc     [20]uint8\n\tIspeed uint64\n\tOspeed uint64\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x80\n\tAT_SYMLINK_FOLLOW   = 0x40\n\tAT_SYMLINK_NOFOLLOW = 0x20\n\tAT_EACCESS          = 0x10\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n\ntype CtlInfo struct {\n\tId   uint32\n\tName [96]byte\n}\n\nconst SizeofKinfoProc = 0x288\n\ntype Eproc struct {\n\tPaddr   uintptr\n\tSess    uintptr\n\tPcred   Pcred\n\tUcred   Ucred\n\tVm      Vmspace\n\tPpid    int32\n\tPgid    int32\n\tJobc    int16\n\tTdev    int32\n\tTpgid   int32\n\tTsess   uintptr\n\tWmesg   [8]byte\n\tXsize   int32\n\tXrssize int16\n\tXccount int16\n\tXswrss  int16\n\tFlag    int32\n\tLogin   [12]byte\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype ExternProc struct {\n\tP_starttime Timeval\n\tP_vmspace   *Vmspace\n\tP_sigacts   uintptr\n\tP_flag      int32\n\tP_stat      int8\n\tP_pid       int32\n\tP_oppid     int32\n\tP_dupfd     int32\n\tUser_stack  *int8\n\tExit_thread *byte\n\tP_debugger  int32\n\tSigwait     int32\n\tP_estcpu    uint32\n\tP_cpticks   int32\n\tP_pctcpu    uint32\n\tP_wchan     *byte\n\tP_wmesg     *int8\n\tP_swtime    uint32\n\tP_slptime   uint32\n\tP_realtimer Itimerval\n\tP_rtime     Timeval\n\tP_uticks    uint64\n\tP_sticks    uint64\n\tP_iticks    uint64\n\tP_traceflag int32\n\tP_tracep    uintptr\n\tP_siglist   int32\n\tP_textvp    uintptr\n\tP_holdcnt   int32\n\tP_sigmask   uint32\n\tP_sigignore uint32\n\tP_sigcatch  uint32\n\tP_priority  uint8\n\tP_usrpri    uint8\n\tP_nice      int8\n\tP_comm      [17]byte\n\tP_pgrp      uintptr\n\tP_addr      uintptr\n\tP_xstat     uint16\n\tP_acflag    uint16\n\tP_ru        *Rusage\n}\n\ntype Itimerval struct {\n\tInterval Timeval\n\tValue    Timeval\n}\n\ntype KinfoProc struct {\n\tProc  ExternProc\n\tEproc Eproc\n}\n\ntype Vmspace struct {\n\tDummy  int32\n\tDummy2 *int8\n\tDummy3 [5]int32\n\tDummy4 [3]*int8\n}\n\ntype Pcred struct {\n\tPc_lock  [72]int8\n\tPc_ucred uintptr\n\tP_ruid   uint32\n\tP_svuid  uint32\n\tP_rgid   uint32\n\tP_svgid  uint32\n\tP_refcnt int32\n\t_        [4]byte\n}\n\ntype Ucred struct {\n\tRef     int32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype SysvIpcPerm struct {\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    uint16\n\t_    int32\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tLpid   int32\n\tCpid   int32\n\tNattch uint16\n\t_      [34]byte\n}\n\nconst (\n\tIPC_CREAT   = 0x200\n\tIPC_EXCL    = 0x400\n\tIPC_NOWAIT  = 0x800\n\tIPC_PRIVATE = 0x0\n)\n\nconst (\n\tIPC_RMID = 0x0\n\tIPC_SET  = 0x1\n\tIPC_STAT = 0x2\n)\n\nconst (\n\tSHM_RDONLY = 0x1000\n\tSHM_RND    = 0x2000\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go",
    "content": "// cgo -godefs types_darwin.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     int32\n\tMode    uint16\n\tNlink   uint16\n\tIno     uint64\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tQspare  [2]int64\n}\n\ntype Statfs_t struct {\n\tBsize       uint32\n\tIosize      int32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        uint32\n\tFlags       uint32\n\tFssubtype   uint32\n\tFstypename  [16]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\tFlags_ext   uint32\n\tReserved    [7]uint32\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Fstore_t struct {\n\tFlags      uint32\n\tPosmode    int32\n\tOffset     int64\n\tLength     int64\n\tBytesalloc int64\n}\n\ntype Radvisory_t struct {\n\tOffset int64\n\tCount  int32\n\t_      [4]byte\n}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint64\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags uint32\n\t_     [16]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Dirent struct {\n\tIno     uint64\n\tSeekoff uint64\n\tReclen  uint16\n\tNamlen  uint16\n\tType    uint8\n\tName    [1024]int8\n\t_       [3]byte\n}\n\ntype Attrlist struct {\n\tBitmapcount uint16\n\tReserved    uint16\n\tCommonattr  uint32\n\tVolattr     uint32\n\tDirattr     uint32\n\tFileattr    uint32\n\tForkattr    uint32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype RawSockaddrCtl struct {\n\tSc_len      uint8\n\tSc_family   uint8\n\tSs_sysaddr  uint16\n\tSc_id       uint32\n\tSc_unit     uint32\n\tSc_reserved [5]uint32\n}\n\ntype RawSockaddrVM struct {\n\tLen       uint8\n\tFamily    uint8\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n}\n\ntype XVSockPCB struct {\n\tXv_len           uint32\n\tXv_vsockpp       uint64\n\tXvp_local_cid    uint32\n\tXvp_local_port   uint32\n\tXvp_remote_cid   uint32\n\tXvp_remote_port  uint32\n\tXvp_rxcnt        uint32\n\tXvp_txcnt        uint32\n\tXvp_peer_rxhiwat uint32\n\tXvp_peer_rxcnt   uint32\n\tXvp_last_pid     int32\n\tXvp_gencnt       uint64\n\tXv_socket        XSocket\n\t_                [4]byte\n}\n\ntype XSocket struct {\n\tXso_len      uint32\n\tXso_so       uint32\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\tSo_pcb       uint32\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSocket64 struct {\n\tXso_len      uint32\n\t_            [8]byte\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\t_            [8]byte\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSockbuf struct {\n\tCc    uint32\n\tHiwat uint32\n\tMbcnt uint32\n\tMbmax uint32\n\tLowat int32\n\tFlags int16\n\tTimeo int16\n}\n\ntype XVSockPgen struct {\n\tLen   uint32\n\tCount uint64\n\tGen   uint64\n\tSogen uint64\n}\n\ntype _Socklen uint32\n\ntype SaeAssocID uint32\n\ntype SaeConnID uint32\n\ntype SaEndpoints struct {\n\tSrcif      uint32\n\tSrcaddr    *RawSockaddr\n\tSrcaddrlen uint32\n\tDstaddr    *RawSockaddr\n\tDstaddrlen uint32\n\t_          [4]byte\n}\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype TCPConnectionInfo struct {\n\tState               uint8\n\tSnd_wscale          uint8\n\tRcv_wscale          uint8\n\t_                   uint8\n\tOptions             uint32\n\tFlags               uint32\n\tRto                 uint32\n\tMaxseg              uint32\n\tSnd_ssthresh        uint32\n\tSnd_cwnd            uint32\n\tSnd_wnd             uint32\n\tSnd_sbbytes         uint32\n\tRcv_wnd             uint32\n\tRttcur              uint32\n\tSrtt                uint32\n\tRttvar              uint32\n\tTxpackets           uint64\n\tTxbytes             uint64\n\tTxretransmitbytes   uint64\n\tRxpackets           uint64\n\tRxbytes             uint64\n\tRxoutoforderbytes   uint64\n\tTxretransmitpackets uint64\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x6c\n\tSizeofSockaddrUnix      = 0x6a\n\tSizeofSockaddrDatalink  = 0x14\n\tSizeofSockaddrCtl       = 0x20\n\tSizeofSockaddrVM        = 0xc\n\tSizeofXvsockpcb         = 0xa8\n\tSizeofXSocket           = 0x64\n\tSizeofXSockbuf          = 0x18\n\tSizeofXVSockPgen        = 0x20\n\tSizeofXucred            = 0x4c\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofMsghdr            = 0x30\n\tSizeofCmsghdr           = 0xc\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofTCPConnectionInfo = 0x70\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\tSizeofIfMsghdr2   = 0xa0\n\tSizeofIfData      = 0x60\n\tSizeofIfData64    = 0x80\n\tSizeofIfaMsghdr   = 0x14\n\tSizeofIfmaMsghdr  = 0x10\n\tSizeofIfmaMsghdr2 = 0x14\n\tSizeofRtMsghdr    = 0x5c\n\tSizeofRtMsghdr2   = 0x5c\n\tSizeofRtMetrics   = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype IfMsghdr2 struct {\n\tMsglen     uint16\n\tVersion    uint8\n\tType       uint8\n\tAddrs      int32\n\tFlags      int32\n\tIndex      uint16\n\tSnd_len    int32\n\tSnd_maxlen int32\n\tSnd_drops  int32\n\tTimer      int32\n\tData       IfData64\n}\n\ntype IfData struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval32\n\tUnused2    uint32\n\tHwassist   uint32\n\tReserved1  uint32\n\tReserved2  uint32\n}\n\ntype IfData64 struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfmaMsghdr2 struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tAddrs    int32\n\tFlags    int32\n\tIndex    uint16\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMsghdr2 struct {\n\tMsglen      uint16\n\tVersion     uint8\n\tType        uint8\n\tIndex       uint16\n\tFlags       int32\n\tAddrs       int32\n\tRefcnt      int32\n\tParentflags int32\n\tReserved    int32\n\tUse         int32\n\tInits       uint32\n\tRmx         RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tState    uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval32\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag  uint64\n\tOflag  uint64\n\tCflag  uint64\n\tLflag  uint64\n\tCc     [20]uint8\n\tIspeed uint64\n\tOspeed uint64\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x80\n\tAT_SYMLINK_FOLLOW   = 0x40\n\tAT_SYMLINK_NOFOLLOW = 0x20\n\tAT_EACCESS          = 0x10\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n\ntype CtlInfo struct {\n\tId   uint32\n\tName [96]byte\n}\n\nconst SizeofKinfoProc = 0x288\n\ntype Eproc struct {\n\tPaddr   uintptr\n\tSess    uintptr\n\tPcred   Pcred\n\tUcred   Ucred\n\tVm      Vmspace\n\tPpid    int32\n\tPgid    int32\n\tJobc    int16\n\tTdev    int32\n\tTpgid   int32\n\tTsess   uintptr\n\tWmesg   [8]byte\n\tXsize   int32\n\tXrssize int16\n\tXccount int16\n\tXswrss  int16\n\tFlag    int32\n\tLogin   [12]byte\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype ExternProc struct {\n\tP_starttime Timeval\n\tP_vmspace   *Vmspace\n\tP_sigacts   uintptr\n\tP_flag      int32\n\tP_stat      int8\n\tP_pid       int32\n\tP_oppid     int32\n\tP_dupfd     int32\n\tUser_stack  *int8\n\tExit_thread *byte\n\tP_debugger  int32\n\tSigwait     int32\n\tP_estcpu    uint32\n\tP_cpticks   int32\n\tP_pctcpu    uint32\n\tP_wchan     *byte\n\tP_wmesg     *int8\n\tP_swtime    uint32\n\tP_slptime   uint32\n\tP_realtimer Itimerval\n\tP_rtime     Timeval\n\tP_uticks    uint64\n\tP_sticks    uint64\n\tP_iticks    uint64\n\tP_traceflag int32\n\tP_tracep    uintptr\n\tP_siglist   int32\n\tP_textvp    uintptr\n\tP_holdcnt   int32\n\tP_sigmask   uint32\n\tP_sigignore uint32\n\tP_sigcatch  uint32\n\tP_priority  uint8\n\tP_usrpri    uint8\n\tP_nice      int8\n\tP_comm      [17]byte\n\tP_pgrp      uintptr\n\tP_addr      uintptr\n\tP_xstat     uint16\n\tP_acflag    uint16\n\tP_ru        *Rusage\n}\n\ntype Itimerval struct {\n\tInterval Timeval\n\tValue    Timeval\n}\n\ntype KinfoProc struct {\n\tProc  ExternProc\n\tEproc Eproc\n}\n\ntype Vmspace struct {\n\tDummy  int32\n\tDummy2 *int8\n\tDummy3 [5]int32\n\tDummy4 [3]*int8\n}\n\ntype Pcred struct {\n\tPc_lock  [72]int8\n\tPc_ucred uintptr\n\tP_ruid   uint32\n\tP_svuid  uint32\n\tP_rgid   uint32\n\tP_svgid  uint32\n\tP_refcnt int32\n\t_        [4]byte\n}\n\ntype Ucred struct {\n\tRef     int32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype SysvIpcPerm struct {\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    uint16\n\t_    int32\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tLpid   int32\n\tCpid   int32\n\tNattch uint16\n\t_      [34]byte\n}\n\nconst (\n\tIPC_CREAT   = 0x200\n\tIPC_EXCL    = 0x400\n\tIPC_NOWAIT  = 0x800\n\tIPC_PRIVATE = 0x0\n)\n\nconst (\n\tIPC_RMID = 0x0\n\tIPC_SET  = 0x1\n\tIPC_STAT = 0x2\n)\n\nconst (\n\tSHM_RDONLY = 0x1000\n\tSHM_RND    = 0x2000\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go",
    "content": "// cgo -godefs types_dragonfly.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tIno     uint64\n\tNlink   uint32\n\tDev     uint32\n\tMode    uint16\n\t_1      uint16\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\t_       uint32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tBlksize int64\n\tQspare2 int64\n}\n\ntype Statfs_t struct {\n\tSpare2      int64\n\tBsize       int64\n\tIosize      int64\n\tBlocks      int64\n\tBfree       int64\n\tBavail      int64\n\tFiles       int64\n\tFfree       int64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        int32\n\tFlags       int32\n\tSyncwrites  int64\n\tAsyncwrites int64\n\tFstypename  [16]byte\n\tMntonname   [80]byte\n\tSyncreads   int64\n\tAsyncreads  int64\n\tSpares1     int16\n\tMntfromname [80]byte\n\tSpares2     int16\n\tSpare       [2]int64\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno  uint64\n\tNamlen  uint16\n\tType    uint8\n\tUnused1 uint8\n\tUnused2 uint32\n\tName    [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\tRcf    uint16\n\tRoute  [16]uint16\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xb0\n\tSizeofIfData           = 0xa0\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tMtu        uint64\n\tMetric     uint64\n\tLink_state uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\tOqdrops    uint64\n\tLastchange Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tFlags     int32\n\tAddrs     int32\n\tAddrflags int32\n\tMetric    int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks     uint64\n\tMtu       uint64\n\tPksent    uint64\n\tExpire    uint64\n\tSendpipe  uint64\n\tSsthresh  uint64\n\tRtt       uint64\n\tRttvar    uint64\n\tRecvpipe  uint64\n\tHopcount  uint64\n\tMssopt    uint16\n\tPad       uint16\n\tMsl       uint64\n\tIwmaxsegs uint64\n\tIwcapsegs uint64\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = 0xfffafdcd\n\tAT_SYMLINK_NOFOLLOW = 0x1\n\tAT_REMOVEDIR        = 0x2\n\tAT_EACCESS          = 0x4\n\tAT_SYMLINK_FOLLOW   = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go",
    "content": "// cgo -godefs types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Time_t int32\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\t_       int32\n\tAtim    Timespec\n\t_       int32\n\tMtim    Timespec\n\t_       int32\n\tCtim    Timespec\n\t_       int32\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x50\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [4]byte\n\t_      [32]byte\n}\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tFs     uint32\n\tEs     uint32\n\tDs     uint32\n\tEdi    uint32\n\tEsi    uint32\n\tEbp    uint32\n\tIsp    uint32\n\tEbx    uint32\n\tEdx    uint32\n\tEcx    uint32\n\tEax    uint32\n\tTrapno uint32\n\tErr    uint32\n\tEip    uint32\n\tCs     uint32\n\tEflags uint32\n\tEsp    uint32\n\tSs     uint32\n\tGs     uint32\n}\n\ntype FpReg struct {\n\tEnv   [7]uint32\n\tAcc   [8][10]uint8\n\tEx_sw uint32\n\tPad   [64]uint8\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint32\n}\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0x60\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x50\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x5c\n\tSizeofRtMetrics        = 0x38\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint32\n\tMetric      uint32\n\tBaudrate    uint32\n\tIpackets    uint32\n\tIerrors     uint32\n\tOpackets    uint32\n\tOerrors     uint32\n\tCollisions  uint32\n\tIbytes      uint32\n\tObytes      uint32\n\tImcasts     uint32\n\tOmcasts     uint32\n\tIqdrops     uint32\n\tNoproto     uint32\n\tHwassist    uint32\n\tEpoch       int32\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tWeight   uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0xc\n\tSizeofBpfProgram    = 0x8\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x14\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go",
    "content": "// cgo -godefs types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tR15    int64\n\tR14    int64\n\tR13    int64\n\tR12    int64\n\tR11    int64\n\tR10    int64\n\tR9     int64\n\tR8     int64\n\tRdi    int64\n\tRsi    int64\n\tRbp    int64\n\tRbx    int64\n\tRdx    int64\n\tRcx    int64\n\tRax    int64\n\tTrapno uint32\n\tFs     uint16\n\tGs     uint16\n\tErr    uint32\n\tEs     uint16\n\tDs     uint16\n\tRip    int64\n\tCs     int64\n\tRflags int64\n\tRsp    int64\n\tSs     int64\n}\n\ntype FpReg struct {\n\tEnv   [4]uint64\n\tAcc   [8][16]uint8\n\tXacc  [16][16]uint8\n\tSpare [12]uint64\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tFiller   [3]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n\t_    [4]byte\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x50\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tR    [13]uint32\n\tSp   uint32\n\tLr   uint32\n\tPc   uint32\n\tCpsr uint32\n}\n\ntype FpReg struct {\n\tFpsr uint32\n\tFpr  [8]FpExtendedPrecision\n}\n\ntype FpExtendedPrecision struct {\n\tExponent    uint32\n\tMantissa_hi uint32\n\tMantissa_lo uint32\n}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint32\n}\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\t_      [4]byte\n\tData   int64\n\tUdata  *byte\n\t_      [4]byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0x70\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x60\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x5c\n\tSizeofRtMetrics        = 0x38\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint32\n\tMetric      uint32\n\tBaudrate    uint32\n\tIpackets    uint32\n\tIerrors     uint32\n\tOpackets    uint32\n\tOerrors     uint32\n\tCollisions  uint32\n\tIbytes      uint32\n\tObytes      uint32\n\tImcasts     uint32\n\tOmcasts     uint32\n\tIqdrops     uint32\n\tNoproto     uint32\n\tHwassist    uint32\n\t_           [4]byte\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tWeight   uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0xc\n\tSizeofBpfProgram    = 0x8\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tX    [30]uint64\n\tLr   uint64\n\tSp   uint64\n\tElr  uint64\n\tSpsr uint32\n\t_    [4]byte\n}\n\ntype FpReg struct {\n\tQ  [32][16]uint8\n\tSr uint32\n\tCr uint32\n\t_  [8]byte\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tFiller   [3]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tRa      uint64\n\tSp      uint64\n\tGp      uint64\n\tTp      uint64\n\tT       [7]uint64\n\tS       [12]uint64\n\tA       [8]uint64\n\tSepc    uint64\n\tSstatus uint64\n}\n\ntype FpReg struct {\n\tX    [32][2]uint64\n\tFcsr uint64\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tNhidx    uint64\n\tFiller   [2]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nconst (\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short int16\n\t_C_int   int32\n\n\t_C_long_long int64\n)\n\ntype ItimerSpec struct {\n\tInterval Timespec\n\tValue    Timespec\n}\n\ntype Itimerval struct {\n\tInterval Timeval\n\tValue    Timeval\n}\n\nconst (\n\tADJ_OFFSET            = 0x1\n\tADJ_FREQUENCY         = 0x2\n\tADJ_MAXERROR          = 0x4\n\tADJ_ESTERROR          = 0x8\n\tADJ_STATUS            = 0x10\n\tADJ_TIMECONST         = 0x20\n\tADJ_TAI               = 0x80\n\tADJ_SETOFFSET         = 0x100\n\tADJ_MICRO             = 0x1000\n\tADJ_NANO              = 0x2000\n\tADJ_TICK              = 0x4000\n\tADJ_OFFSET_SINGLESHOT = 0x8001\n\tADJ_OFFSET_SS_READ    = 0xa001\n)\n\nconst (\n\tSTA_PLL       = 0x1\n\tSTA_PPSFREQ   = 0x2\n\tSTA_PPSTIME   = 0x4\n\tSTA_FLL       = 0x8\n\tSTA_INS       = 0x10\n\tSTA_DEL       = 0x20\n\tSTA_UNSYNC    = 0x40\n\tSTA_FREQHOLD  = 0x80\n\tSTA_PPSSIGNAL = 0x100\n\tSTA_PPSJITTER = 0x200\n\tSTA_PPSWANDER = 0x400\n\tSTA_PPSERROR  = 0x800\n\tSTA_CLOCKERR  = 0x1000\n\tSTA_NANO      = 0x2000\n\tSTA_MODE      = 0x4000\n\tSTA_CLK       = 0x8000\n)\n\nconst (\n\tTIME_OK    = 0x0\n\tTIME_INS   = 0x1\n\tTIME_DEL   = 0x2\n\tTIME_OOP   = 0x3\n\tTIME_WAIT  = 0x4\n\tTIME_ERROR = 0x5\n\tTIME_BAD   = 0x5\n)\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask                      uint32\n\tBlksize                   uint32\n\tAttributes                uint64\n\tNlink                     uint32\n\tUid                       uint32\n\tGid                       uint32\n\tMode                      uint16\n\t_                         [1]uint16\n\tIno                       uint64\n\tSize                      uint64\n\tBlocks                    uint64\n\tAttributes_mask           uint64\n\tAtime                     StatxTimestamp\n\tBtime                     StatxTimestamp\n\tCtime                     StatxTimestamp\n\tMtime                     StatxTimestamp\n\tRdev_major                uint32\n\tRdev_minor                uint32\n\tDev_major                 uint32\n\tDev_minor                 uint32\n\tMnt_id                    uint64\n\tDio_mem_align             uint32\n\tDio_offset_align          uint32\n\tSubvol                    uint64\n\tAtomic_write_unit_min     uint32\n\tAtomic_write_unit_max     uint32\n\tAtomic_write_segments_max uint32\n\tDio_read_offset_align     uint32\n\tAtomic_write_unit_max_opt uint32\n\t_                         [1]uint32\n\t_                         [8]uint64\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype FileCloneRange struct {\n\tSrc_fd      int64\n\tSrc_offset  uint64\n\tSrc_length  uint64\n\tDest_offset uint64\n}\n\ntype RawFileDedupeRange struct {\n\tSrc_offset uint64\n\tSrc_length uint64\n\tDest_count uint16\n\tReserved1  uint16\n\tReserved2  uint32\n}\n\ntype RawFileDedupeRangeInfo struct {\n\tDest_fd       int64\n\tDest_offset   uint64\n\tBytes_deduped uint64\n\tStatus        int32\n\tReserved      uint32\n}\n\nconst (\n\tSizeofRawFileDedupeRange     = 0x18\n\tSizeofRawFileDedupeRangeInfo = 0x20\n\tFILE_DEDUPE_RANGE_SAME       = 0x0\n\tFILE_DEDUPE_RANGE_DIFFERS    = 0x1\n)\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype FscryptPolicyV1 struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptPolicyV2 struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tLog2_data_unit_size       uint8\n\t_                         [3]uint8\n\tMaster_key_identifier     [16]uint8\n}\n\ntype FscryptGetPolicyExArg struct {\n\tSize   uint64\n\tPolicy [24]byte\n}\n\ntype FscryptKeySpecifier struct {\n\tType uint32\n\t_    uint32\n\tU    [32]byte\n}\n\ntype FscryptAddKeyArg struct {\n\tKey_spec FscryptKeySpecifier\n\tRaw_size uint32\n\tKey_id   uint32\n\tFlags    uint32\n\t_        [7]uint32\n}\n\ntype FscryptRemoveKeyArg struct {\n\tKey_spec             FscryptKeySpecifier\n\tRemoval_status_flags uint32\n\t_                    [5]uint32\n}\n\ntype FscryptGetKeyStatusArg struct {\n\tKey_spec     FscryptKeySpecifier\n\t_            [6]uint32\n\tStatus       uint32\n\tStatus_flags uint32\n\tUser_count   uint32\n\t_            [13]uint32\n}\n\ntype DmIoctl struct {\n\tVersion      [3]uint32\n\tData_size    uint32\n\tData_start   uint32\n\tTarget_count uint32\n\tOpen_count   int32\n\tFlags        uint32\n\tEvent_nr     uint32\n\t_            uint32\n\tDev          uint64\n\tName         [128]byte\n\tUuid         [129]byte\n\tData         [7]byte\n}\n\ntype DmTargetSpec struct {\n\tSector_start uint64\n\tLength       uint64\n\tStatus       int32\n\tNext         uint32\n\tTarget_type  [16]byte\n}\n\ntype DmTargetDeps struct {\n\tCount uint32\n\t_     uint32\n}\n\ntype DmTargetVersions struct {\n\tNext    uint32\n\tVersion [3]uint32\n}\n\ntype DmTargetMsg struct {\n\tSector uint64\n}\n\nconst (\n\tSizeofDmIoctl      = 0x138\n\tSizeofDmTargetSpec = 0x28\n)\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\tIfindex int32\n\tAddr    [16]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tFlags     uint8\n\tZero      [3]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddrTIPC struct {\n\tFamily   uint16\n\tAddrtype uint8\n\tScope    int8\n\tAddr     [12]byte\n}\n\ntype RawSockaddrL2TPIP struct {\n\tFamily  uint16\n\tUnused  uint16\n\tAddr    [4]byte /* in_addr */\n\tConn_id uint32\n\t_       [4]uint8\n}\n\ntype RawSockaddrL2TPIP6 struct {\n\tFamily   uint16\n\tUnused   uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n\tConn_id  uint32\n}\n\ntype RawSockaddrIUCV struct {\n\tFamily  uint16\n\tPort    uint16\n\tAddr    uint32\n\tNodeid  [8]int8\n\tUser_id [8]int8\n\tName    [8]int8\n}\n\ntype RawSockaddrNFC struct {\n\tSa_family    uint16\n\tDev_idx      uint32\n\tTarget_idx   uint32\n\tNfc_protocol uint32\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState                uint8\n\tCa_state             uint8\n\tRetransmits          uint8\n\tProbes               uint8\n\tBackoff              uint8\n\tOptions              uint8\n\tRto                  uint32\n\tAto                  uint32\n\tSnd_mss              uint32\n\tRcv_mss              uint32\n\tUnacked              uint32\n\tSacked               uint32\n\tLost                 uint32\n\tRetrans              uint32\n\tFackets              uint32\n\tLast_data_sent       uint32\n\tLast_ack_sent        uint32\n\tLast_data_recv       uint32\n\tLast_ack_recv        uint32\n\tPmtu                 uint32\n\tRcv_ssthresh         uint32\n\tRtt                  uint32\n\tRttvar               uint32\n\tSnd_ssthresh         uint32\n\tSnd_cwnd             uint32\n\tAdvmss               uint32\n\tReordering           uint32\n\tRcv_rtt              uint32\n\tRcv_space            uint32\n\tTotal_retrans        uint32\n\tPacing_rate          uint64\n\tMax_pacing_rate      uint64\n\tBytes_acked          uint64\n\tBytes_received       uint64\n\tSegs_out             uint32\n\tSegs_in              uint32\n\tNotsent_bytes        uint32\n\tMin_rtt              uint32\n\tData_segs_in         uint32\n\tData_segs_out        uint32\n\tDelivery_rate        uint64\n\tBusy_time            uint64\n\tRwnd_limited         uint64\n\tSndbuf_limited       uint64\n\tDelivered            uint32\n\tDelivered_ce         uint32\n\tBytes_sent           uint64\n\tBytes_retrans        uint64\n\tDsack_dups           uint32\n\tReord_seen           uint32\n\tRcv_ooopack          uint32\n\tSnd_wnd              uint32\n\tRcv_wnd              uint32\n\tRehash               uint32\n\tTotal_rto            uint16\n\tTotal_rto_recoveries uint16\n\tTotal_rto_time       uint32\n}\n\ntype TCPVegasInfo struct {\n\tEnabled uint32\n\tRttcnt  uint32\n\tRtt     uint32\n\tMinrtt  uint32\n}\n\ntype TCPDCTCPInfo struct {\n\tEnabled  uint16\n\tCe_state uint16\n\tAlpha    uint32\n\tAb_ecn   uint32\n\tAb_tot   uint32\n}\n\ntype TCPBBRInfo struct {\n\tBw_lo       uint32\n\tBw_hi       uint32\n\tMin_rtt     uint32\n\tPacing_gain uint32\n\tCwnd_gain   uint32\n}\n\ntype CanFilter struct {\n\tId   uint32\n\tMask uint32\n}\n\ntype TCPRepairOpt struct {\n\tCode uint32\n\tVal  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x18\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofSockaddrTIPC      = 0x10\n\tSizeofSockaddrL2TPIP    = 0x10\n\tSizeofSockaddrL2TPIP6   = 0x20\n\tSizeofSockaddrIUCV      = 0x20\n\tSizeofSockaddrNFC       = 0x10\n\tSizeofLinger            = 0x8\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0xf8\n\tSizeofTCPCCInfo         = 0x14\n\tSizeofCanFilter         = 0x8\n\tSizeofTCPRepairOpt      = 0x8\n)\n\nconst (\n\tNDA_UNSPEC            = 0x0\n\tNDA_DST               = 0x1\n\tNDA_LLADDR            = 0x2\n\tNDA_CACHEINFO         = 0x3\n\tNDA_PROBES            = 0x4\n\tNDA_VLAN              = 0x5\n\tNDA_PORT              = 0x6\n\tNDA_VNI               = 0x7\n\tNDA_IFINDEX           = 0x8\n\tNDA_MASTER            = 0x9\n\tNDA_LINK_NETNSID      = 0xa\n\tNDA_SRC_VNI           = 0xb\n\tNTF_USE               = 0x1\n\tNTF_SELF              = 0x2\n\tNTF_MASTER            = 0x4\n\tNTF_PROXY             = 0x8\n\tNTF_EXT_LEARNED       = 0x10\n\tNTF_OFFLOADED         = 0x20\n\tNTF_ROUTER            = 0x80\n\tNUD_INCOMPLETE        = 0x1\n\tNUD_REACHABLE         = 0x2\n\tNUD_STALE             = 0x4\n\tNUD_DELAY             = 0x8\n\tNUD_PROBE             = 0x10\n\tNUD_FAILED            = 0x20\n\tNUD_NOARP             = 0x40\n\tNUD_PERMANENT         = 0x80\n\tNUD_NONE              = 0x0\n\tIFA_UNSPEC            = 0x0\n\tIFA_ADDRESS           = 0x1\n\tIFA_LOCAL             = 0x2\n\tIFA_LABEL             = 0x3\n\tIFA_BROADCAST         = 0x4\n\tIFA_ANYCAST           = 0x5\n\tIFA_CACHEINFO         = 0x6\n\tIFA_MULTICAST         = 0x7\n\tIFA_FLAGS             = 0x8\n\tIFA_RT_PRIORITY       = 0x9\n\tIFA_TARGET_NETNSID    = 0xa\n\tIFAL_LABEL            = 0x2\n\tIFAL_ADDRESS          = 0x1\n\tRT_SCOPE_UNIVERSE     = 0x0\n\tRT_SCOPE_SITE         = 0xc8\n\tRT_SCOPE_LINK         = 0xfd\n\tRT_SCOPE_HOST         = 0xfe\n\tRT_SCOPE_NOWHERE      = 0xff\n\tRT_TABLE_UNSPEC       = 0x0\n\tRT_TABLE_COMPAT       = 0xfc\n\tRT_TABLE_DEFAULT      = 0xfd\n\tRT_TABLE_MAIN         = 0xfe\n\tRT_TABLE_LOCAL        = 0xff\n\tRT_TABLE_MAX          = 0xffffffff\n\tRTA_UNSPEC            = 0x0\n\tRTA_DST               = 0x1\n\tRTA_SRC               = 0x2\n\tRTA_IIF               = 0x3\n\tRTA_OIF               = 0x4\n\tRTA_GATEWAY           = 0x5\n\tRTA_PRIORITY          = 0x6\n\tRTA_PREFSRC           = 0x7\n\tRTA_METRICS           = 0x8\n\tRTA_MULTIPATH         = 0x9\n\tRTA_FLOW              = 0xb\n\tRTA_CACHEINFO         = 0xc\n\tRTA_TABLE             = 0xf\n\tRTA_MARK              = 0x10\n\tRTA_MFC_STATS         = 0x11\n\tRTA_VIA               = 0x12\n\tRTA_NEWDST            = 0x13\n\tRTA_PREF              = 0x14\n\tRTA_ENCAP_TYPE        = 0x15\n\tRTA_ENCAP             = 0x16\n\tRTA_EXPIRES           = 0x17\n\tRTA_PAD               = 0x18\n\tRTA_UID               = 0x19\n\tRTA_TTL_PROPAGATE     = 0x1a\n\tRTA_IP_PROTO          = 0x1b\n\tRTA_SPORT             = 0x1c\n\tRTA_DPORT             = 0x1d\n\tRTN_UNSPEC            = 0x0\n\tRTN_UNICAST           = 0x1\n\tRTN_LOCAL             = 0x2\n\tRTN_BROADCAST         = 0x3\n\tRTN_ANYCAST           = 0x4\n\tRTN_MULTICAST         = 0x5\n\tRTN_BLACKHOLE         = 0x6\n\tRTN_UNREACHABLE       = 0x7\n\tRTN_PROHIBIT          = 0x8\n\tRTN_THROW             = 0x9\n\tRTN_NAT               = 0xa\n\tRTN_XRESOLVE          = 0xb\n\tPREFIX_UNSPEC         = 0x0\n\tPREFIX_ADDRESS        = 0x1\n\tPREFIX_CACHEINFO      = 0x2\n\tSizeofNlMsghdr        = 0x10\n\tSizeofNlMsgerr        = 0x14\n\tSizeofRtGenmsg        = 0x1\n\tSizeofNlAttr          = 0x4\n\tSizeofRtAttr          = 0x4\n\tSizeofIfInfomsg       = 0x10\n\tSizeofPrefixmsg       = 0xc\n\tSizeofPrefixCacheinfo = 0x8\n\tSizeofIfAddrmsg       = 0x8\n\tSizeofIfAddrlblmsg    = 0xc\n\tSizeofIfaCacheinfo    = 0x10\n\tSizeofRtMsg           = 0xc\n\tSizeofRtNexthop       = 0x8\n\tSizeofNdUseroptmsg    = 0x10\n\tSizeofNdMsg           = 0xc\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype Prefixmsg struct {\n\tFamily  uint8\n\tPad1    uint8\n\tPad2    uint16\n\tIfindex int32\n\tType    uint8\n\tLen     uint8\n\tFlags   uint8\n\tPad3    uint8\n}\n\ntype PrefixCacheinfo struct {\n\tPreferred_time uint32\n\tValid_time     uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype IfAddrlblmsg struct {\n\tFamily    uint8\n\t_         uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tIndex     uint32\n\tSeq       uint32\n}\n\ntype IfaCacheinfo struct {\n\tPrefered uint32\n\tValid    uint32\n\tCstamp   uint32\n\tTstamp   uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\ntype NdUseroptmsg struct {\n\tFamily    uint8\n\tPad1      uint8\n\tOpts_len  uint16\n\tIfindex   int32\n\tIcmp_type uint8\n\tIcmp_code uint8\n\tPad2      uint16\n\tPad3      uint32\n}\n\ntype NdMsg struct {\n\tFamily  uint8\n\tPad1    uint8\n\tPad2    uint16\n\tIfindex int32\n\tState   uint16\n\tFlags   uint8\n\tType    uint8\n}\n\nconst (\n\tICMP_FILTER = 0x1\n\n\tICMPV6_FILTER             = 0x1\n\tICMPV6_FILTER_BLOCK       = 0x1\n\tICMPV6_FILTER_BLOCKOTHERS = 0x3\n\tICMPV6_FILTER_PASS        = 0x2\n\tICMPV6_FILTER_PASSONLY    = 0x4\n)\n\nconst (\n\tSizeofSockFilter = 0x8\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\nconst SI_LOAD_SHIFT = 0x10\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_RECURSIVE = 0x8000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n\n\tOPEN_TREE_CLONE = 0x1\n\n\tMOVE_MOUNT_F_SYMLINKS   = 0x1\n\tMOVE_MOUNT_F_AUTOMOUNTS = 0x2\n\tMOVE_MOUNT_F_EMPTY_PATH = 0x4\n\tMOVE_MOUNT_T_SYMLINKS   = 0x10\n\tMOVE_MOUNT_T_AUTOMOUNTS = 0x20\n\tMOVE_MOUNT_T_EMPTY_PATH = 0x40\n\tMOVE_MOUNT_SET_GROUP    = 0x100\n\n\tFSOPEN_CLOEXEC = 0x1\n\n\tFSPICK_CLOEXEC          = 0x1\n\tFSPICK_SYMLINK_NOFOLLOW = 0x2\n\tFSPICK_NO_AUTOMOUNT     = 0x4\n\tFSPICK_EMPTY_PATH       = 0x8\n\n\tFSMOUNT_CLOEXEC = 0x1\n\n\tFSCONFIG_SET_FLAG        = 0x0\n\tFSCONFIG_SET_STRING      = 0x1\n\tFSCONFIG_SET_BINARY      = 0x2\n\tFSCONFIG_SET_PATH        = 0x3\n\tFSCONFIG_SET_PATH_EMPTY  = 0x4\n\tFSCONFIG_SET_FD          = 0x5\n\tFSCONFIG_CMD_CREATE      = 0x6\n\tFSCONFIG_CMD_RECONFIGURE = 0x7\n)\n\ntype OpenHow struct {\n\tFlags   uint64\n\tMode    uint64\n\tResolve uint64\n}\n\nconst SizeofOpenHow = 0x18\n\nconst (\n\tRESOLVE_BENEATH       = 0x8\n\tRESOLVE_IN_ROOT       = 0x10\n\tRESOLVE_NO_MAGICLINKS = 0x2\n\tRESOLVE_NO_SYMLINKS   = 0x4\n\tRESOLVE_NO_XDEV       = 0x1\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN   = 0x1\n\tPOLLPRI  = 0x2\n\tPOLLOUT  = 0x4\n\tPOLLERR  = 0x8\n\tPOLLHUP  = 0x10\n\tPOLLNVAL = 0x20\n)\n\ntype sigset_argpack struct {\n\tss    *Sigset_t\n\tssLen uintptr\n}\n\ntype SignalfdSiginfo struct {\n\tSigno     uint32\n\tErrno     int32\n\tCode      int32\n\tPid       uint32\n\tUid       uint32\n\tFd        int32\n\tTid       uint32\n\tBand      uint32\n\tOverrun   uint32\n\tTrapno    uint32\n\tStatus    int32\n\tInt       int32\n\tPtr       uint64\n\tUtime     uint64\n\tStime     uint64\n\tAddr      uint64\n\tAddr_lsb  uint16\n\t_         uint16\n\tSyscall   int32\n\tCall_addr uint64\n\tArch      uint32\n\t_         [28]uint8\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_CMD_GETPOLICY         = 0xa\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_POLICY           = 0x8\n\tCTRL_ATTR_OP_POLICY        = 0x9\n\tCTRL_ATTR_OP               = 0xa\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n\tCTRL_ATTR_POLICY_UNSPEC    = 0x0\n\tCTRL_ATTR_POLICY_DO        = 0x1\n\tCTRL_ATTR_POLICY_DUMP      = 0x2\n\tCTRL_ATTR_POLICY_DUMP_MAX  = 0x2\n)\n\nconst (\n\t_CPU_SETSIZE = 0x400\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\tSample_max_stack   uint16\n\t_                  uint16\n\tAux_sample_size    uint32\n\t_                  uint32\n\tSig_data           uint64\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              uint32\n\tTime_cycles    uint64\n\tTime_mask      uint64\n\t_              [928]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n\tPerfBitWriteBackward                 = CBitFieldMaskBit27\n)\n\nconst (\n\tPERF_TYPE_HARDWARE                    = 0x0\n\tPERF_TYPE_SOFTWARE                    = 0x1\n\tPERF_TYPE_TRACEPOINT                  = 0x2\n\tPERF_TYPE_HW_CACHE                    = 0x3\n\tPERF_TYPE_RAW                         = 0x4\n\tPERF_TYPE_BREAKPOINT                  = 0x5\n\tPERF_TYPE_MAX                         = 0x6\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\tPERF_COUNT_HW_MAX                     = 0xa\n\tPERF_COUNT_HW_CACHE_L1D               = 0x0\n\tPERF_COUNT_HW_CACHE_L1I               = 0x1\n\tPERF_COUNT_HW_CACHE_LL                = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB              = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB              = 0x4\n\tPERF_COUNT_HW_CACHE_BPU               = 0x5\n\tPERF_COUNT_HW_CACHE_NODE              = 0x6\n\tPERF_COUNT_HW_CACHE_MAX               = 0x7\n\tPERF_COUNT_HW_CACHE_OP_READ           = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE          = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH       = 0x2\n\tPERF_COUNT_HW_CACHE_OP_MAX            = 0x3\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS     = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS       = 0x1\n\tPERF_COUNT_HW_CACHE_RESULT_MAX        = 0x2\n\tPERF_COUNT_SW_CPU_CLOCK               = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK              = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS             = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES        = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS          = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN         = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ         = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS        = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS        = 0x8\n\tPERF_COUNT_SW_DUMMY                   = 0x9\n\tPERF_COUNT_SW_BPF_OUTPUT              = 0xa\n\tPERF_COUNT_SW_MAX                     = 0xc\n\tPERF_SAMPLE_IP                        = 0x1\n\tPERF_SAMPLE_TID                       = 0x2\n\tPERF_SAMPLE_TIME                      = 0x4\n\tPERF_SAMPLE_ADDR                      = 0x8\n\tPERF_SAMPLE_READ                      = 0x10\n\tPERF_SAMPLE_CALLCHAIN                 = 0x20\n\tPERF_SAMPLE_ID                        = 0x40\n\tPERF_SAMPLE_CPU                       = 0x80\n\tPERF_SAMPLE_PERIOD                    = 0x100\n\tPERF_SAMPLE_STREAM_ID                 = 0x200\n\tPERF_SAMPLE_RAW                       = 0x400\n\tPERF_SAMPLE_BRANCH_STACK              = 0x800\n\tPERF_SAMPLE_REGS_USER                 = 0x1000\n\tPERF_SAMPLE_STACK_USER                = 0x2000\n\tPERF_SAMPLE_WEIGHT                    = 0x4000\n\tPERF_SAMPLE_DATA_SRC                  = 0x8000\n\tPERF_SAMPLE_IDENTIFIER                = 0x10000\n\tPERF_SAMPLE_TRANSACTION               = 0x20000\n\tPERF_SAMPLE_REGS_INTR                 = 0x40000\n\tPERF_SAMPLE_PHYS_ADDR                 = 0x80000\n\tPERF_SAMPLE_AUX                       = 0x100000\n\tPERF_SAMPLE_CGROUP                    = 0x200000\n\tPERF_SAMPLE_DATA_PAGE_SIZE            = 0x400000\n\tPERF_SAMPLE_CODE_PAGE_SIZE            = 0x800000\n\tPERF_SAMPLE_WEIGHT_STRUCT             = 0x1000000\n\tPERF_SAMPLE_MAX                       = 0x2000000\n\tPERF_SAMPLE_BRANCH_USER_SHIFT         = 0x0\n\tPERF_SAMPLE_BRANCH_KERNEL_SHIFT       = 0x1\n\tPERF_SAMPLE_BRANCH_HV_SHIFT           = 0x2\n\tPERF_SAMPLE_BRANCH_ANY_SHIFT          = 0x3\n\tPERF_SAMPLE_BRANCH_ANY_CALL_SHIFT     = 0x4\n\tPERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT   = 0x5\n\tPERF_SAMPLE_BRANCH_IND_CALL_SHIFT     = 0x6\n\tPERF_SAMPLE_BRANCH_ABORT_TX_SHIFT     = 0x7\n\tPERF_SAMPLE_BRANCH_IN_TX_SHIFT        = 0x8\n\tPERF_SAMPLE_BRANCH_NO_TX_SHIFT        = 0x9\n\tPERF_SAMPLE_BRANCH_COND_SHIFT         = 0xa\n\tPERF_SAMPLE_BRANCH_CALL_STACK_SHIFT   = 0xb\n\tPERF_SAMPLE_BRANCH_IND_JUMP_SHIFT     = 0xc\n\tPERF_SAMPLE_BRANCH_CALL_SHIFT         = 0xd\n\tPERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT     = 0xe\n\tPERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT    = 0xf\n\tPERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT    = 0x10\n\tPERF_SAMPLE_BRANCH_HW_INDEX_SHIFT     = 0x11\n\tPERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT    = 0x12\n\tPERF_SAMPLE_BRANCH_COUNTERS           = 0x80000\n\tPERF_SAMPLE_BRANCH_MAX_SHIFT          = 0x14\n\tPERF_SAMPLE_BRANCH_USER               = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL             = 0x2\n\tPERF_SAMPLE_BRANCH_HV                 = 0x4\n\tPERF_SAMPLE_BRANCH_ANY                = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL           = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN         = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL           = 0x40\n\tPERF_SAMPLE_BRANCH_ABORT_TX           = 0x80\n\tPERF_SAMPLE_BRANCH_IN_TX              = 0x100\n\tPERF_SAMPLE_BRANCH_NO_TX              = 0x200\n\tPERF_SAMPLE_BRANCH_COND               = 0x400\n\tPERF_SAMPLE_BRANCH_CALL_STACK         = 0x800\n\tPERF_SAMPLE_BRANCH_IND_JUMP           = 0x1000\n\tPERF_SAMPLE_BRANCH_CALL               = 0x2000\n\tPERF_SAMPLE_BRANCH_NO_FLAGS           = 0x4000\n\tPERF_SAMPLE_BRANCH_NO_CYCLES          = 0x8000\n\tPERF_SAMPLE_BRANCH_TYPE_SAVE          = 0x10000\n\tPERF_SAMPLE_BRANCH_HW_INDEX           = 0x20000\n\tPERF_SAMPLE_BRANCH_PRIV_SAVE          = 0x40000\n\tPERF_SAMPLE_BRANCH_MAX                = 0x100000\n\tPERF_BR_UNKNOWN                       = 0x0\n\tPERF_BR_COND                          = 0x1\n\tPERF_BR_UNCOND                        = 0x2\n\tPERF_BR_IND                           = 0x3\n\tPERF_BR_CALL                          = 0x4\n\tPERF_BR_IND_CALL                      = 0x5\n\tPERF_BR_RET                           = 0x6\n\tPERF_BR_SYSCALL                       = 0x7\n\tPERF_BR_SYSRET                        = 0x8\n\tPERF_BR_COND_CALL                     = 0x9\n\tPERF_BR_COND_RET                      = 0xa\n\tPERF_BR_ERET                          = 0xb\n\tPERF_BR_IRQ                           = 0xc\n\tPERF_BR_SERROR                        = 0xd\n\tPERF_BR_NO_TX                         = 0xe\n\tPERF_BR_EXTEND_ABI                    = 0xf\n\tPERF_BR_MAX                           = 0x10\n\tPERF_SAMPLE_REGS_ABI_NONE             = 0x0\n\tPERF_SAMPLE_REGS_ABI_32               = 0x1\n\tPERF_SAMPLE_REGS_ABI_64               = 0x2\n\tPERF_TXN_ELISION                      = 0x1\n\tPERF_TXN_TRANSACTION                  = 0x2\n\tPERF_TXN_SYNC                         = 0x4\n\tPERF_TXN_ASYNC                        = 0x8\n\tPERF_TXN_RETRY                        = 0x10\n\tPERF_TXN_CONFLICT                     = 0x20\n\tPERF_TXN_CAPACITY_WRITE               = 0x40\n\tPERF_TXN_CAPACITY_READ                = 0x80\n\tPERF_TXN_MAX                          = 0x100\n\tPERF_TXN_ABORT_MASK                   = -0x100000000\n\tPERF_TXN_ABORT_SHIFT                  = 0x20\n\tPERF_FORMAT_TOTAL_TIME_ENABLED        = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING        = 0x2\n\tPERF_FORMAT_ID                        = 0x4\n\tPERF_FORMAT_GROUP                     = 0x8\n\tPERF_FORMAT_LOST                      = 0x10\n\tPERF_FORMAT_MAX                       = 0x20\n\tPERF_IOC_FLAG_GROUP                   = 0x1\n\tPERF_RECORD_MMAP                      = 0x1\n\tPERF_RECORD_LOST                      = 0x2\n\tPERF_RECORD_COMM                      = 0x3\n\tPERF_RECORD_EXIT                      = 0x4\n\tPERF_RECORD_THROTTLE                  = 0x5\n\tPERF_RECORD_UNTHROTTLE                = 0x6\n\tPERF_RECORD_FORK                      = 0x7\n\tPERF_RECORD_READ                      = 0x8\n\tPERF_RECORD_SAMPLE                    = 0x9\n\tPERF_RECORD_MMAP2                     = 0xa\n\tPERF_RECORD_AUX                       = 0xb\n\tPERF_RECORD_ITRACE_START              = 0xc\n\tPERF_RECORD_LOST_SAMPLES              = 0xd\n\tPERF_RECORD_SWITCH                    = 0xe\n\tPERF_RECORD_SWITCH_CPU_WIDE           = 0xf\n\tPERF_RECORD_NAMESPACES                = 0x10\n\tPERF_RECORD_KSYMBOL                   = 0x11\n\tPERF_RECORD_BPF_EVENT                 = 0x12\n\tPERF_RECORD_CGROUP                    = 0x13\n\tPERF_RECORD_TEXT_POKE                 = 0x14\n\tPERF_RECORD_AUX_OUTPUT_HW_ID          = 0x15\n\tPERF_RECORD_MAX                       = 0x16\n\tPERF_RECORD_KSYMBOL_TYPE_UNKNOWN      = 0x0\n\tPERF_RECORD_KSYMBOL_TYPE_BPF          = 0x1\n\tPERF_RECORD_KSYMBOL_TYPE_OOL          = 0x2\n\tPERF_RECORD_KSYMBOL_TYPE_MAX          = 0x3\n\tPERF_BPF_EVENT_UNKNOWN                = 0x0\n\tPERF_BPF_EVENT_PROG_LOAD              = 0x1\n\tPERF_BPF_EVENT_PROG_UNLOAD            = 0x2\n\tPERF_BPF_EVENT_MAX                    = 0x3\n\tPERF_CONTEXT_HV                       = -0x20\n\tPERF_CONTEXT_KERNEL                   = -0x80\n\tPERF_CONTEXT_USER                     = -0x200\n\tPERF_CONTEXT_GUEST                    = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL             = -0x880\n\tPERF_CONTEXT_GUEST_USER               = -0xa00\n\tPERF_CONTEXT_MAX                      = -0xfff\n)\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\tIfindex   int32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketBDTS struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype TpacketHdrV1 struct {\n\tBlock_status        uint32\n\tNum_pkts            uint32\n\tOffset_to_first_pkt uint32\n\tBlk_len             uint32\n\tSeq_num             uint64\n\tTs_first_pkt        TpacketBDTS\n\tTs_last_pkt         TpacketBDTS\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n\n\tSizeofTpacketStats   = 0x8\n\tSizeofTpacketStatsV3 = 0xc\n)\n\nconst (\n\tIFLA_UNSPEC                                = 0x0\n\tIFLA_ADDRESS                               = 0x1\n\tIFLA_BROADCAST                             = 0x2\n\tIFLA_IFNAME                                = 0x3\n\tIFLA_MTU                                   = 0x4\n\tIFLA_LINK                                  = 0x5\n\tIFLA_QDISC                                 = 0x6\n\tIFLA_STATS                                 = 0x7\n\tIFLA_COST                                  = 0x8\n\tIFLA_PRIORITY                              = 0x9\n\tIFLA_MASTER                                = 0xa\n\tIFLA_WIRELESS                              = 0xb\n\tIFLA_PROTINFO                              = 0xc\n\tIFLA_TXQLEN                                = 0xd\n\tIFLA_MAP                                   = 0xe\n\tIFLA_WEIGHT                                = 0xf\n\tIFLA_OPERSTATE                             = 0x10\n\tIFLA_LINKMODE                              = 0x11\n\tIFLA_LINKINFO                              = 0x12\n\tIFLA_NET_NS_PID                            = 0x13\n\tIFLA_IFALIAS                               = 0x14\n\tIFLA_NUM_VF                                = 0x15\n\tIFLA_VFINFO_LIST                           = 0x16\n\tIFLA_STATS64                               = 0x17\n\tIFLA_VF_PORTS                              = 0x18\n\tIFLA_PORT_SELF                             = 0x19\n\tIFLA_AF_SPEC                               = 0x1a\n\tIFLA_GROUP                                 = 0x1b\n\tIFLA_NET_NS_FD                             = 0x1c\n\tIFLA_EXT_MASK                              = 0x1d\n\tIFLA_PROMISCUITY                           = 0x1e\n\tIFLA_NUM_TX_QUEUES                         = 0x1f\n\tIFLA_NUM_RX_QUEUES                         = 0x20\n\tIFLA_CARRIER                               = 0x21\n\tIFLA_PHYS_PORT_ID                          = 0x22\n\tIFLA_CARRIER_CHANGES                       = 0x23\n\tIFLA_PHYS_SWITCH_ID                        = 0x24\n\tIFLA_LINK_NETNSID                          = 0x25\n\tIFLA_PHYS_PORT_NAME                        = 0x26\n\tIFLA_PROTO_DOWN                            = 0x27\n\tIFLA_GSO_MAX_SEGS                          = 0x28\n\tIFLA_GSO_MAX_SIZE                          = 0x29\n\tIFLA_PAD                                   = 0x2a\n\tIFLA_XDP                                   = 0x2b\n\tIFLA_EVENT                                 = 0x2c\n\tIFLA_NEW_NETNSID                           = 0x2d\n\tIFLA_IF_NETNSID                            = 0x2e\n\tIFLA_TARGET_NETNSID                        = 0x2e\n\tIFLA_CARRIER_UP_COUNT                      = 0x2f\n\tIFLA_CARRIER_DOWN_COUNT                    = 0x30\n\tIFLA_NEW_IFINDEX                           = 0x31\n\tIFLA_MIN_MTU                               = 0x32\n\tIFLA_MAX_MTU                               = 0x33\n\tIFLA_PROP_LIST                             = 0x34\n\tIFLA_ALT_IFNAME                            = 0x35\n\tIFLA_PERM_ADDRESS                          = 0x36\n\tIFLA_PROTO_DOWN_REASON                     = 0x37\n\tIFLA_PARENT_DEV_NAME                       = 0x38\n\tIFLA_PARENT_DEV_BUS_NAME                   = 0x39\n\tIFLA_GRO_MAX_SIZE                          = 0x3a\n\tIFLA_TSO_MAX_SIZE                          = 0x3b\n\tIFLA_TSO_MAX_SEGS                          = 0x3c\n\tIFLA_ALLMULTI                              = 0x3d\n\tIFLA_DEVLINK_PORT                          = 0x3e\n\tIFLA_GSO_IPV4_MAX_SIZE                     = 0x3f\n\tIFLA_GRO_IPV4_MAX_SIZE                     = 0x40\n\tIFLA_DPLL_PIN                              = 0x41\n\tIFLA_PROTO_DOWN_REASON_UNSPEC              = 0x0\n\tIFLA_PROTO_DOWN_REASON_MASK                = 0x1\n\tIFLA_PROTO_DOWN_REASON_VALUE               = 0x2\n\tIFLA_PROTO_DOWN_REASON_MAX                 = 0x2\n\tIFLA_INET_UNSPEC                           = 0x0\n\tIFLA_INET_CONF                             = 0x1\n\tIFLA_INET6_UNSPEC                          = 0x0\n\tIFLA_INET6_FLAGS                           = 0x1\n\tIFLA_INET6_CONF                            = 0x2\n\tIFLA_INET6_STATS                           = 0x3\n\tIFLA_INET6_MCAST                           = 0x4\n\tIFLA_INET6_CACHEINFO                       = 0x5\n\tIFLA_INET6_ICMP6STATS                      = 0x6\n\tIFLA_INET6_TOKEN                           = 0x7\n\tIFLA_INET6_ADDR_GEN_MODE                   = 0x8\n\tIFLA_INET6_RA_MTU                          = 0x9\n\tIFLA_BR_UNSPEC                             = 0x0\n\tIFLA_BR_FORWARD_DELAY                      = 0x1\n\tIFLA_BR_HELLO_TIME                         = 0x2\n\tIFLA_BR_MAX_AGE                            = 0x3\n\tIFLA_BR_AGEING_TIME                        = 0x4\n\tIFLA_BR_STP_STATE                          = 0x5\n\tIFLA_BR_PRIORITY                           = 0x6\n\tIFLA_BR_VLAN_FILTERING                     = 0x7\n\tIFLA_BR_VLAN_PROTOCOL                      = 0x8\n\tIFLA_BR_GROUP_FWD_MASK                     = 0x9\n\tIFLA_BR_ROOT_ID                            = 0xa\n\tIFLA_BR_BRIDGE_ID                          = 0xb\n\tIFLA_BR_ROOT_PORT                          = 0xc\n\tIFLA_BR_ROOT_PATH_COST                     = 0xd\n\tIFLA_BR_TOPOLOGY_CHANGE                    = 0xe\n\tIFLA_BR_TOPOLOGY_CHANGE_DETECTED           = 0xf\n\tIFLA_BR_HELLO_TIMER                        = 0x10\n\tIFLA_BR_TCN_TIMER                          = 0x11\n\tIFLA_BR_TOPOLOGY_CHANGE_TIMER              = 0x12\n\tIFLA_BR_GC_TIMER                           = 0x13\n\tIFLA_BR_GROUP_ADDR                         = 0x14\n\tIFLA_BR_FDB_FLUSH                          = 0x15\n\tIFLA_BR_MCAST_ROUTER                       = 0x16\n\tIFLA_BR_MCAST_SNOOPING                     = 0x17\n\tIFLA_BR_MCAST_QUERY_USE_IFADDR             = 0x18\n\tIFLA_BR_MCAST_QUERIER                      = 0x19\n\tIFLA_BR_MCAST_HASH_ELASTICITY              = 0x1a\n\tIFLA_BR_MCAST_HASH_MAX                     = 0x1b\n\tIFLA_BR_MCAST_LAST_MEMBER_CNT              = 0x1c\n\tIFLA_BR_MCAST_STARTUP_QUERY_CNT            = 0x1d\n\tIFLA_BR_MCAST_LAST_MEMBER_INTVL            = 0x1e\n\tIFLA_BR_MCAST_MEMBERSHIP_INTVL             = 0x1f\n\tIFLA_BR_MCAST_QUERIER_INTVL                = 0x20\n\tIFLA_BR_MCAST_QUERY_INTVL                  = 0x21\n\tIFLA_BR_MCAST_QUERY_RESPONSE_INTVL         = 0x22\n\tIFLA_BR_MCAST_STARTUP_QUERY_INTVL          = 0x23\n\tIFLA_BR_NF_CALL_IPTABLES                   = 0x24\n\tIFLA_BR_NF_CALL_IP6TABLES                  = 0x25\n\tIFLA_BR_NF_CALL_ARPTABLES                  = 0x26\n\tIFLA_BR_VLAN_DEFAULT_PVID                  = 0x27\n\tIFLA_BR_PAD                                = 0x28\n\tIFLA_BR_VLAN_STATS_ENABLED                 = 0x29\n\tIFLA_BR_MCAST_STATS_ENABLED                = 0x2a\n\tIFLA_BR_MCAST_IGMP_VERSION                 = 0x2b\n\tIFLA_BR_MCAST_MLD_VERSION                  = 0x2c\n\tIFLA_BR_VLAN_STATS_PER_PORT                = 0x2d\n\tIFLA_BR_MULTI_BOOLOPT                      = 0x2e\n\tIFLA_BR_MCAST_QUERIER_STATE                = 0x2f\n\tIFLA_BR_FDB_N_LEARNED                      = 0x30\n\tIFLA_BR_FDB_MAX_LEARNED                    = 0x31\n\tIFLA_BRPORT_UNSPEC                         = 0x0\n\tIFLA_BRPORT_STATE                          = 0x1\n\tIFLA_BRPORT_PRIORITY                       = 0x2\n\tIFLA_BRPORT_COST                           = 0x3\n\tIFLA_BRPORT_MODE                           = 0x4\n\tIFLA_BRPORT_GUARD                          = 0x5\n\tIFLA_BRPORT_PROTECT                        = 0x6\n\tIFLA_BRPORT_FAST_LEAVE                     = 0x7\n\tIFLA_BRPORT_LEARNING                       = 0x8\n\tIFLA_BRPORT_UNICAST_FLOOD                  = 0x9\n\tIFLA_BRPORT_PROXYARP                       = 0xa\n\tIFLA_BRPORT_LEARNING_SYNC                  = 0xb\n\tIFLA_BRPORT_PROXYARP_WIFI                  = 0xc\n\tIFLA_BRPORT_ROOT_ID                        = 0xd\n\tIFLA_BRPORT_BRIDGE_ID                      = 0xe\n\tIFLA_BRPORT_DESIGNATED_PORT                = 0xf\n\tIFLA_BRPORT_DESIGNATED_COST                = 0x10\n\tIFLA_BRPORT_ID                             = 0x11\n\tIFLA_BRPORT_NO                             = 0x12\n\tIFLA_BRPORT_TOPOLOGY_CHANGE_ACK            = 0x13\n\tIFLA_BRPORT_CONFIG_PENDING                 = 0x14\n\tIFLA_BRPORT_MESSAGE_AGE_TIMER              = 0x15\n\tIFLA_BRPORT_FORWARD_DELAY_TIMER            = 0x16\n\tIFLA_BRPORT_HOLD_TIMER                     = 0x17\n\tIFLA_BRPORT_FLUSH                          = 0x18\n\tIFLA_BRPORT_MULTICAST_ROUTER               = 0x19\n\tIFLA_BRPORT_PAD                            = 0x1a\n\tIFLA_BRPORT_MCAST_FLOOD                    = 0x1b\n\tIFLA_BRPORT_MCAST_TO_UCAST                 = 0x1c\n\tIFLA_BRPORT_VLAN_TUNNEL                    = 0x1d\n\tIFLA_BRPORT_BCAST_FLOOD                    = 0x1e\n\tIFLA_BRPORT_GROUP_FWD_MASK                 = 0x1f\n\tIFLA_BRPORT_NEIGH_SUPPRESS                 = 0x20\n\tIFLA_BRPORT_ISOLATED                       = 0x21\n\tIFLA_BRPORT_BACKUP_PORT                    = 0x22\n\tIFLA_BRPORT_MRP_RING_OPEN                  = 0x23\n\tIFLA_BRPORT_MRP_IN_OPEN                    = 0x24\n\tIFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT          = 0x25\n\tIFLA_BRPORT_MCAST_EHT_HOSTS_CNT            = 0x26\n\tIFLA_BRPORT_LOCKED                         = 0x27\n\tIFLA_BRPORT_MAB                            = 0x28\n\tIFLA_BRPORT_MCAST_N_GROUPS                 = 0x29\n\tIFLA_BRPORT_MCAST_MAX_GROUPS               = 0x2a\n\tIFLA_BRPORT_NEIGH_VLAN_SUPPRESS            = 0x2b\n\tIFLA_BRPORT_BACKUP_NHID                    = 0x2c\n\tIFLA_INFO_UNSPEC                           = 0x0\n\tIFLA_INFO_KIND                             = 0x1\n\tIFLA_INFO_DATA                             = 0x2\n\tIFLA_INFO_XSTATS                           = 0x3\n\tIFLA_INFO_SLAVE_KIND                       = 0x4\n\tIFLA_INFO_SLAVE_DATA                       = 0x5\n\tIFLA_VLAN_UNSPEC                           = 0x0\n\tIFLA_VLAN_ID                               = 0x1\n\tIFLA_VLAN_FLAGS                            = 0x2\n\tIFLA_VLAN_EGRESS_QOS                       = 0x3\n\tIFLA_VLAN_INGRESS_QOS                      = 0x4\n\tIFLA_VLAN_PROTOCOL                         = 0x5\n\tIFLA_VLAN_QOS_UNSPEC                       = 0x0\n\tIFLA_VLAN_QOS_MAPPING                      = 0x1\n\tIFLA_MACVLAN_UNSPEC                        = 0x0\n\tIFLA_MACVLAN_MODE                          = 0x1\n\tIFLA_MACVLAN_FLAGS                         = 0x2\n\tIFLA_MACVLAN_MACADDR_MODE                  = 0x3\n\tIFLA_MACVLAN_MACADDR                       = 0x4\n\tIFLA_MACVLAN_MACADDR_DATA                  = 0x5\n\tIFLA_MACVLAN_MACADDR_COUNT                 = 0x6\n\tIFLA_MACVLAN_BC_QUEUE_LEN                  = 0x7\n\tIFLA_MACVLAN_BC_QUEUE_LEN_USED             = 0x8\n\tIFLA_MACVLAN_BC_CUTOFF                     = 0x9\n\tIFLA_VRF_UNSPEC                            = 0x0\n\tIFLA_VRF_TABLE                             = 0x1\n\tIFLA_VRF_PORT_UNSPEC                       = 0x0\n\tIFLA_VRF_PORT_TABLE                        = 0x1\n\tIFLA_MACSEC_UNSPEC                         = 0x0\n\tIFLA_MACSEC_SCI                            = 0x1\n\tIFLA_MACSEC_PORT                           = 0x2\n\tIFLA_MACSEC_ICV_LEN                        = 0x3\n\tIFLA_MACSEC_CIPHER_SUITE                   = 0x4\n\tIFLA_MACSEC_WINDOW                         = 0x5\n\tIFLA_MACSEC_ENCODING_SA                    = 0x6\n\tIFLA_MACSEC_ENCRYPT                        = 0x7\n\tIFLA_MACSEC_PROTECT                        = 0x8\n\tIFLA_MACSEC_INC_SCI                        = 0x9\n\tIFLA_MACSEC_ES                             = 0xa\n\tIFLA_MACSEC_SCB                            = 0xb\n\tIFLA_MACSEC_REPLAY_PROTECT                 = 0xc\n\tIFLA_MACSEC_VALIDATION                     = 0xd\n\tIFLA_MACSEC_PAD                            = 0xe\n\tIFLA_MACSEC_OFFLOAD                        = 0xf\n\tIFLA_XFRM_UNSPEC                           = 0x0\n\tIFLA_XFRM_LINK                             = 0x1\n\tIFLA_XFRM_IF_ID                            = 0x2\n\tIFLA_XFRM_COLLECT_METADATA                 = 0x3\n\tIFLA_IPVLAN_UNSPEC                         = 0x0\n\tIFLA_IPVLAN_MODE                           = 0x1\n\tIFLA_IPVLAN_FLAGS                          = 0x2\n\tIFLA_NETKIT_UNSPEC                         = 0x0\n\tIFLA_NETKIT_PEER_INFO                      = 0x1\n\tIFLA_NETKIT_PRIMARY                        = 0x2\n\tIFLA_NETKIT_POLICY                         = 0x3\n\tIFLA_NETKIT_PEER_POLICY                    = 0x4\n\tIFLA_NETKIT_MODE                           = 0x5\n\tIFLA_VXLAN_UNSPEC                          = 0x0\n\tIFLA_VXLAN_ID                              = 0x1\n\tIFLA_VXLAN_GROUP                           = 0x2\n\tIFLA_VXLAN_LINK                            = 0x3\n\tIFLA_VXLAN_LOCAL                           = 0x4\n\tIFLA_VXLAN_TTL                             = 0x5\n\tIFLA_VXLAN_TOS                             = 0x6\n\tIFLA_VXLAN_LEARNING                        = 0x7\n\tIFLA_VXLAN_AGEING                          = 0x8\n\tIFLA_VXLAN_LIMIT                           = 0x9\n\tIFLA_VXLAN_PORT_RANGE                      = 0xa\n\tIFLA_VXLAN_PROXY                           = 0xb\n\tIFLA_VXLAN_RSC                             = 0xc\n\tIFLA_VXLAN_L2MISS                          = 0xd\n\tIFLA_VXLAN_L3MISS                          = 0xe\n\tIFLA_VXLAN_PORT                            = 0xf\n\tIFLA_VXLAN_GROUP6                          = 0x10\n\tIFLA_VXLAN_LOCAL6                          = 0x11\n\tIFLA_VXLAN_UDP_CSUM                        = 0x12\n\tIFLA_VXLAN_UDP_ZERO_CSUM6_TX               = 0x13\n\tIFLA_VXLAN_UDP_ZERO_CSUM6_RX               = 0x14\n\tIFLA_VXLAN_REMCSUM_TX                      = 0x15\n\tIFLA_VXLAN_REMCSUM_RX                      = 0x16\n\tIFLA_VXLAN_GBP                             = 0x17\n\tIFLA_VXLAN_REMCSUM_NOPARTIAL               = 0x18\n\tIFLA_VXLAN_COLLECT_METADATA                = 0x19\n\tIFLA_VXLAN_LABEL                           = 0x1a\n\tIFLA_VXLAN_GPE                             = 0x1b\n\tIFLA_VXLAN_TTL_INHERIT                     = 0x1c\n\tIFLA_VXLAN_DF                              = 0x1d\n\tIFLA_VXLAN_VNIFILTER                       = 0x1e\n\tIFLA_VXLAN_LOCALBYPASS                     = 0x1f\n\tIFLA_VXLAN_LABEL_POLICY                    = 0x20\n\tIFLA_GENEVE_UNSPEC                         = 0x0\n\tIFLA_GENEVE_ID                             = 0x1\n\tIFLA_GENEVE_REMOTE                         = 0x2\n\tIFLA_GENEVE_TTL                            = 0x3\n\tIFLA_GENEVE_TOS                            = 0x4\n\tIFLA_GENEVE_PORT                           = 0x5\n\tIFLA_GENEVE_COLLECT_METADATA               = 0x6\n\tIFLA_GENEVE_REMOTE6                        = 0x7\n\tIFLA_GENEVE_UDP_CSUM                       = 0x8\n\tIFLA_GENEVE_UDP_ZERO_CSUM6_TX              = 0x9\n\tIFLA_GENEVE_UDP_ZERO_CSUM6_RX              = 0xa\n\tIFLA_GENEVE_LABEL                          = 0xb\n\tIFLA_GENEVE_TTL_INHERIT                    = 0xc\n\tIFLA_GENEVE_DF                             = 0xd\n\tIFLA_GENEVE_INNER_PROTO_INHERIT            = 0xe\n\tIFLA_BAREUDP_UNSPEC                        = 0x0\n\tIFLA_BAREUDP_PORT                          = 0x1\n\tIFLA_BAREUDP_ETHERTYPE                     = 0x2\n\tIFLA_BAREUDP_SRCPORT_MIN                   = 0x3\n\tIFLA_BAREUDP_MULTIPROTO_MODE               = 0x4\n\tIFLA_PPP_UNSPEC                            = 0x0\n\tIFLA_PPP_DEV_FD                            = 0x1\n\tIFLA_GTP_UNSPEC                            = 0x0\n\tIFLA_GTP_FD0                               = 0x1\n\tIFLA_GTP_FD1                               = 0x2\n\tIFLA_GTP_PDP_HASHSIZE                      = 0x3\n\tIFLA_GTP_ROLE                              = 0x4\n\tIFLA_GTP_CREATE_SOCKETS                    = 0x5\n\tIFLA_GTP_RESTART_COUNT                     = 0x6\n\tIFLA_GTP_LOCAL                             = 0x7\n\tIFLA_GTP_LOCAL6                            = 0x8\n\tIFLA_BOND_UNSPEC                           = 0x0\n\tIFLA_BOND_MODE                             = 0x1\n\tIFLA_BOND_ACTIVE_SLAVE                     = 0x2\n\tIFLA_BOND_MIIMON                           = 0x3\n\tIFLA_BOND_UPDELAY                          = 0x4\n\tIFLA_BOND_DOWNDELAY                        = 0x5\n\tIFLA_BOND_USE_CARRIER                      = 0x6\n\tIFLA_BOND_ARP_INTERVAL                     = 0x7\n\tIFLA_BOND_ARP_IP_TARGET                    = 0x8\n\tIFLA_BOND_ARP_VALIDATE                     = 0x9\n\tIFLA_BOND_ARP_ALL_TARGETS                  = 0xa\n\tIFLA_BOND_PRIMARY                          = 0xb\n\tIFLA_BOND_PRIMARY_RESELECT                 = 0xc\n\tIFLA_BOND_FAIL_OVER_MAC                    = 0xd\n\tIFLA_BOND_XMIT_HASH_POLICY                 = 0xe\n\tIFLA_BOND_RESEND_IGMP                      = 0xf\n\tIFLA_BOND_NUM_PEER_NOTIF                   = 0x10\n\tIFLA_BOND_ALL_SLAVES_ACTIVE                = 0x11\n\tIFLA_BOND_MIN_LINKS                        = 0x12\n\tIFLA_BOND_LP_INTERVAL                      = 0x13\n\tIFLA_BOND_PACKETS_PER_SLAVE                = 0x14\n\tIFLA_BOND_AD_LACP_RATE                     = 0x15\n\tIFLA_BOND_AD_SELECT                        = 0x16\n\tIFLA_BOND_AD_INFO                          = 0x17\n\tIFLA_BOND_AD_ACTOR_SYS_PRIO                = 0x18\n\tIFLA_BOND_AD_USER_PORT_KEY                 = 0x19\n\tIFLA_BOND_AD_ACTOR_SYSTEM                  = 0x1a\n\tIFLA_BOND_TLB_DYNAMIC_LB                   = 0x1b\n\tIFLA_BOND_PEER_NOTIF_DELAY                 = 0x1c\n\tIFLA_BOND_AD_LACP_ACTIVE                   = 0x1d\n\tIFLA_BOND_MISSED_MAX                       = 0x1e\n\tIFLA_BOND_NS_IP6_TARGET                    = 0x1f\n\tIFLA_BOND_COUPLED_CONTROL                  = 0x20\n\tIFLA_BOND_AD_INFO_UNSPEC                   = 0x0\n\tIFLA_BOND_AD_INFO_AGGREGATOR               = 0x1\n\tIFLA_BOND_AD_INFO_NUM_PORTS                = 0x2\n\tIFLA_BOND_AD_INFO_ACTOR_KEY                = 0x3\n\tIFLA_BOND_AD_INFO_PARTNER_KEY              = 0x4\n\tIFLA_BOND_AD_INFO_PARTNER_MAC              = 0x5\n\tIFLA_BOND_SLAVE_UNSPEC                     = 0x0\n\tIFLA_BOND_SLAVE_STATE                      = 0x1\n\tIFLA_BOND_SLAVE_MII_STATUS                 = 0x2\n\tIFLA_BOND_SLAVE_LINK_FAILURE_COUNT         = 0x3\n\tIFLA_BOND_SLAVE_PERM_HWADDR                = 0x4\n\tIFLA_BOND_SLAVE_QUEUE_ID                   = 0x5\n\tIFLA_BOND_SLAVE_AD_AGGREGATOR_ID           = 0x6\n\tIFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE   = 0x7\n\tIFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 0x8\n\tIFLA_BOND_SLAVE_PRIO                       = 0x9\n\tIFLA_VF_INFO_UNSPEC                        = 0x0\n\tIFLA_VF_INFO                               = 0x1\n\tIFLA_VF_UNSPEC                             = 0x0\n\tIFLA_VF_MAC                                = 0x1\n\tIFLA_VF_VLAN                               = 0x2\n\tIFLA_VF_TX_RATE                            = 0x3\n\tIFLA_VF_SPOOFCHK                           = 0x4\n\tIFLA_VF_LINK_STATE                         = 0x5\n\tIFLA_VF_RATE                               = 0x6\n\tIFLA_VF_RSS_QUERY_EN                       = 0x7\n\tIFLA_VF_STATS                              = 0x8\n\tIFLA_VF_TRUST                              = 0x9\n\tIFLA_VF_IB_NODE_GUID                       = 0xa\n\tIFLA_VF_IB_PORT_GUID                       = 0xb\n\tIFLA_VF_VLAN_LIST                          = 0xc\n\tIFLA_VF_BROADCAST                          = 0xd\n\tIFLA_VF_VLAN_INFO_UNSPEC                   = 0x0\n\tIFLA_VF_VLAN_INFO                          = 0x1\n\tIFLA_VF_LINK_STATE_AUTO                    = 0x0\n\tIFLA_VF_LINK_STATE_ENABLE                  = 0x1\n\tIFLA_VF_LINK_STATE_DISABLE                 = 0x2\n\tIFLA_VF_STATS_RX_PACKETS                   = 0x0\n\tIFLA_VF_STATS_TX_PACKETS                   = 0x1\n\tIFLA_VF_STATS_RX_BYTES                     = 0x2\n\tIFLA_VF_STATS_TX_BYTES                     = 0x3\n\tIFLA_VF_STATS_BROADCAST                    = 0x4\n\tIFLA_VF_STATS_MULTICAST                    = 0x5\n\tIFLA_VF_STATS_PAD                          = 0x6\n\tIFLA_VF_STATS_RX_DROPPED                   = 0x7\n\tIFLA_VF_STATS_TX_DROPPED                   = 0x8\n\tIFLA_VF_PORT_UNSPEC                        = 0x0\n\tIFLA_VF_PORT                               = 0x1\n\tIFLA_PORT_UNSPEC                           = 0x0\n\tIFLA_PORT_VF                               = 0x1\n\tIFLA_PORT_PROFILE                          = 0x2\n\tIFLA_PORT_VSI_TYPE                         = 0x3\n\tIFLA_PORT_INSTANCE_UUID                    = 0x4\n\tIFLA_PORT_HOST_UUID                        = 0x5\n\tIFLA_PORT_REQUEST                          = 0x6\n\tIFLA_PORT_RESPONSE                         = 0x7\n\tIFLA_IPOIB_UNSPEC                          = 0x0\n\tIFLA_IPOIB_PKEY                            = 0x1\n\tIFLA_IPOIB_MODE                            = 0x2\n\tIFLA_IPOIB_UMCAST                          = 0x3\n\tIFLA_HSR_UNSPEC                            = 0x0\n\tIFLA_HSR_SLAVE1                            = 0x1\n\tIFLA_HSR_SLAVE2                            = 0x2\n\tIFLA_HSR_MULTICAST_SPEC                    = 0x3\n\tIFLA_HSR_SUPERVISION_ADDR                  = 0x4\n\tIFLA_HSR_SEQ_NR                            = 0x5\n\tIFLA_HSR_VERSION                           = 0x6\n\tIFLA_HSR_PROTOCOL                          = 0x7\n\tIFLA_HSR_INTERLINK                         = 0x8\n\tIFLA_STATS_UNSPEC                          = 0x0\n\tIFLA_STATS_LINK_64                         = 0x1\n\tIFLA_STATS_LINK_XSTATS                     = 0x2\n\tIFLA_STATS_LINK_XSTATS_SLAVE               = 0x3\n\tIFLA_STATS_LINK_OFFLOAD_XSTATS             = 0x4\n\tIFLA_STATS_AF_SPEC                         = 0x5\n\tIFLA_STATS_GETSET_UNSPEC                   = 0x0\n\tIFLA_STATS_GET_FILTERS                     = 0x1\n\tIFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS     = 0x2\n\tIFLA_OFFLOAD_XSTATS_UNSPEC                 = 0x0\n\tIFLA_OFFLOAD_XSTATS_CPU_HIT                = 0x1\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO              = 0x2\n\tIFLA_OFFLOAD_XSTATS_L3_STATS               = 0x3\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC       = 0x0\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST      = 0x1\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_USED         = 0x2\n\tIFLA_XDP_UNSPEC                            = 0x0\n\tIFLA_XDP_FD                                = 0x1\n\tIFLA_XDP_ATTACHED                          = 0x2\n\tIFLA_XDP_FLAGS                             = 0x3\n\tIFLA_XDP_PROG_ID                           = 0x4\n\tIFLA_XDP_DRV_PROG_ID                       = 0x5\n\tIFLA_XDP_SKB_PROG_ID                       = 0x6\n\tIFLA_XDP_HW_PROG_ID                        = 0x7\n\tIFLA_XDP_EXPECTED_FD                       = 0x8\n\tIFLA_EVENT_NONE                            = 0x0\n\tIFLA_EVENT_REBOOT                          = 0x1\n\tIFLA_EVENT_FEATURES                        = 0x2\n\tIFLA_EVENT_BONDING_FAILOVER                = 0x3\n\tIFLA_EVENT_NOTIFY_PEERS                    = 0x4\n\tIFLA_EVENT_IGMP_RESEND                     = 0x5\n\tIFLA_EVENT_BONDING_OPTIONS                 = 0x6\n\tIFLA_TUN_UNSPEC                            = 0x0\n\tIFLA_TUN_OWNER                             = 0x1\n\tIFLA_TUN_GROUP                             = 0x2\n\tIFLA_TUN_TYPE                              = 0x3\n\tIFLA_TUN_PI                                = 0x4\n\tIFLA_TUN_VNET_HDR                          = 0x5\n\tIFLA_TUN_PERSIST                           = 0x6\n\tIFLA_TUN_MULTI_QUEUE                       = 0x7\n\tIFLA_TUN_NUM_QUEUES                        = 0x8\n\tIFLA_TUN_NUM_DISABLED_QUEUES               = 0x9\n\tIFLA_RMNET_UNSPEC                          = 0x0\n\tIFLA_RMNET_MUX_ID                          = 0x1\n\tIFLA_RMNET_FLAGS                           = 0x2\n\tIFLA_MCTP_UNSPEC                           = 0x0\n\tIFLA_MCTP_NET                              = 0x1\n\tIFLA_DSA_UNSPEC                            = 0x0\n\tIFLA_DSA_CONDUIT                           = 0x1\n\tIFLA_DSA_MASTER                            = 0x1\n)\n\nconst (\n\tNETKIT_NEXT     = -0x1\n\tNETKIT_PASS     = 0x0\n\tNETKIT_DROP     = 0x2\n\tNETKIT_REDIRECT = 0x7\n\tNETKIT_L2       = 0x0\n\tNETKIT_L3       = 0x1\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_EGRESS   = 0x1\n\tNF_NETDEV_NUMHOOKS = 0x2\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\nconst SO_ORIGINAL_DST = 0x50\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_NEWFLOWTABLE              = 0x16\n\tNFT_MSG_GETFLOWTABLE              = 0x17\n\tNFT_MSG_DELFLOWTABLE              = 0x18\n\tNFT_MSG_GETRULE_RESET             = 0x19\n\tNFT_MSG_MAX                       = 0x22\n\tNFTA_LIST_UNSPEC                  = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_INNER_HEADER          = 0x3\n\tNFT_PAYLOAD_TUN_HEADER            = 0x4\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_CSUM_SCTP             = 0x2\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFT_CT_SRC_IP                     = 0x13\n\tNFT_CT_DST_IP                     = 0x14\n\tNFT_CT_SRC_IP6                    = 0x15\n\tNFT_CT_DST_IP6                    = 0x16\n\tNFT_CT_ID                         = 0x17\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\nconst (\n\tNFTA_TARGET_UNSPEC = 0x0\n\tNFTA_TARGET_NAME   = 0x1\n\tNFTA_TARGET_REV    = 0x2\n\tNFTA_TARGET_INFO   = 0x3\n\tNFTA_MATCH_UNSPEC  = 0x0\n\tNFTA_MATCH_NAME    = 0x1\n\tNFTA_MATCH_REV     = 0x2\n\tNFTA_MATCH_INFO    = 0x3\n\tNFTA_COMPAT_UNSPEC = 0x0\n\tNFTA_COMPAT_NAME   = 0x1\n\tNFTA_COMPAT_REV    = 0x2\n\tNFTA_COMPAT_TYPE   = 0x3\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\tTime    RTCTime\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\tData    *byte\n}\n\nconst (\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE         = 0x0\n\tNETNSA_NSID         = 0x1\n\tNETNSA_PID          = 0x2\n\tNETNSA_FD           = 0x3\n\tNETNSA_TARGET_NSID  = 0x4\n\tNETNSA_CURRENT_NSID = 0x5\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n\tFlags    uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr            uint64\n\tLen             uint64\n\tSize            uint32\n\tHeadroom        uint32\n\tFlags           uint32\n\tTx_metadata_len uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped               uint64\n\tRx_invalid_descs         uint64\n\tTx_invalid_descs         uint64\n\tRx_ring_full             uint64\n\tRx_fill_ring_empty_descs uint64\n\tTx_ring_empty_descs      uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\ntype ScmTimestamping struct {\n\tTs [3]Timespec\n}\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\tSOF_TIMESTAMPING_BIND_PHC     = 0x8000\n\tSOF_TIMESTAMPING_OPT_ID_TCP   = 0x10000\n\n\tSOF_TIMESTAMPING_LAST = 0x40000\n\tSOF_TIMESTAMPING_MASK = 0x7ffff\n\n\tSCM_TSTAMP_SND   = 0x0\n\tSCM_TSTAMP_SCHED = 0x1\n\tSCM_TSTAMP_ACK   = 0x2\n)\n\ntype SockExtendedErr struct {\n\tErrno  uint32\n\tOrigin uint8\n\tType   uint8\n\tCode   uint8\n\tPad    uint8\n\tInfo   uint32\n\tData   uint32\n}\n\ntype FanotifyEventMetadata struct {\n\tEvent_len    uint32\n\tVers         uint8\n\tReserved     uint8\n\tMetadata_len uint16\n\tMask         uint64\n\tFd           int32\n\tPid          int32\n}\n\ntype FanotifyResponse struct {\n\tFd       int32\n\tResponse uint32\n}\n\nconst (\n\tCRYPTO_MSG_BASE      = 0x10\n\tCRYPTO_MSG_NEWALG    = 0x10\n\tCRYPTO_MSG_DELALG    = 0x11\n\tCRYPTO_MSG_UPDATEALG = 0x12\n\tCRYPTO_MSG_GETALG    = 0x13\n\tCRYPTO_MSG_DELRNG    = 0x14\n\tCRYPTO_MSG_GETSTAT   = 0x15\n)\n\nconst (\n\tCRYPTOCFGA_UNSPEC           = 0x0\n\tCRYPTOCFGA_PRIORITY_VAL     = 0x1\n\tCRYPTOCFGA_REPORT_LARVAL    = 0x2\n\tCRYPTOCFGA_REPORT_HASH      = 0x3\n\tCRYPTOCFGA_REPORT_BLKCIPHER = 0x4\n\tCRYPTOCFGA_REPORT_AEAD      = 0x5\n\tCRYPTOCFGA_REPORT_COMPRESS  = 0x6\n\tCRYPTOCFGA_REPORT_RNG       = 0x7\n\tCRYPTOCFGA_REPORT_CIPHER    = 0x8\n\tCRYPTOCFGA_REPORT_AKCIPHER  = 0x9\n\tCRYPTOCFGA_REPORT_KPP       = 0xa\n\tCRYPTOCFGA_REPORT_ACOMP     = 0xb\n\tCRYPTOCFGA_STAT_LARVAL      = 0xc\n\tCRYPTOCFGA_STAT_HASH        = 0xd\n\tCRYPTOCFGA_STAT_BLKCIPHER   = 0xe\n\tCRYPTOCFGA_STAT_AEAD        = 0xf\n\tCRYPTOCFGA_STAT_COMPRESS    = 0x10\n\tCRYPTOCFGA_STAT_RNG         = 0x11\n\tCRYPTOCFGA_STAT_CIPHER      = 0x12\n\tCRYPTOCFGA_STAT_AKCIPHER    = 0x13\n\tCRYPTOCFGA_STAT_KPP         = 0x14\n\tCRYPTOCFGA_STAT_ACOMP       = 0x15\n)\n\nconst (\n\tBPF_REG_0                                  = 0x0\n\tBPF_REG_1                                  = 0x1\n\tBPF_REG_2                                  = 0x2\n\tBPF_REG_3                                  = 0x3\n\tBPF_REG_4                                  = 0x4\n\tBPF_REG_5                                  = 0x5\n\tBPF_REG_6                                  = 0x6\n\tBPF_REG_7                                  = 0x7\n\tBPF_REG_8                                  = 0x8\n\tBPF_REG_9                                  = 0x9\n\tBPF_REG_10                                 = 0xa\n\tBPF_CGROUP_ITER_ORDER_UNSPEC               = 0x0\n\tBPF_CGROUP_ITER_SELF_ONLY                  = 0x1\n\tBPF_CGROUP_ITER_DESCENDANTS_PRE            = 0x2\n\tBPF_CGROUP_ITER_DESCENDANTS_POST           = 0x3\n\tBPF_CGROUP_ITER_ANCESTORS_UP               = 0x4\n\tBPF_MAP_CREATE                             = 0x0\n\tBPF_MAP_LOOKUP_ELEM                        = 0x1\n\tBPF_MAP_UPDATE_ELEM                        = 0x2\n\tBPF_MAP_DELETE_ELEM                        = 0x3\n\tBPF_MAP_GET_NEXT_KEY                       = 0x4\n\tBPF_PROG_LOAD                              = 0x5\n\tBPF_OBJ_PIN                                = 0x6\n\tBPF_OBJ_GET                                = 0x7\n\tBPF_PROG_ATTACH                            = 0x8\n\tBPF_PROG_DETACH                            = 0x9\n\tBPF_PROG_TEST_RUN                          = 0xa\n\tBPF_PROG_RUN                               = 0xa\n\tBPF_PROG_GET_NEXT_ID                       = 0xb\n\tBPF_MAP_GET_NEXT_ID                        = 0xc\n\tBPF_PROG_GET_FD_BY_ID                      = 0xd\n\tBPF_MAP_GET_FD_BY_ID                       = 0xe\n\tBPF_OBJ_GET_INFO_BY_FD                     = 0xf\n\tBPF_PROG_QUERY                             = 0x10\n\tBPF_RAW_TRACEPOINT_OPEN                    = 0x11\n\tBPF_BTF_LOAD                               = 0x12\n\tBPF_BTF_GET_FD_BY_ID                       = 0x13\n\tBPF_TASK_FD_QUERY                          = 0x14\n\tBPF_MAP_LOOKUP_AND_DELETE_ELEM             = 0x15\n\tBPF_MAP_FREEZE                             = 0x16\n\tBPF_BTF_GET_NEXT_ID                        = 0x17\n\tBPF_MAP_LOOKUP_BATCH                       = 0x18\n\tBPF_MAP_LOOKUP_AND_DELETE_BATCH            = 0x19\n\tBPF_MAP_UPDATE_BATCH                       = 0x1a\n\tBPF_MAP_DELETE_BATCH                       = 0x1b\n\tBPF_LINK_CREATE                            = 0x1c\n\tBPF_LINK_UPDATE                            = 0x1d\n\tBPF_LINK_GET_FD_BY_ID                      = 0x1e\n\tBPF_LINK_GET_NEXT_ID                       = 0x1f\n\tBPF_ENABLE_STATS                           = 0x20\n\tBPF_ITER_CREATE                            = 0x21\n\tBPF_LINK_DETACH                            = 0x22\n\tBPF_PROG_BIND_MAP                          = 0x23\n\tBPF_MAP_TYPE_UNSPEC                        = 0x0\n\tBPF_MAP_TYPE_HASH                          = 0x1\n\tBPF_MAP_TYPE_ARRAY                         = 0x2\n\tBPF_MAP_TYPE_PROG_ARRAY                    = 0x3\n\tBPF_MAP_TYPE_PERF_EVENT_ARRAY              = 0x4\n\tBPF_MAP_TYPE_PERCPU_HASH                   = 0x5\n\tBPF_MAP_TYPE_PERCPU_ARRAY                  = 0x6\n\tBPF_MAP_TYPE_STACK_TRACE                   = 0x7\n\tBPF_MAP_TYPE_CGROUP_ARRAY                  = 0x8\n\tBPF_MAP_TYPE_LRU_HASH                      = 0x9\n\tBPF_MAP_TYPE_LRU_PERCPU_HASH               = 0xa\n\tBPF_MAP_TYPE_LPM_TRIE                      = 0xb\n\tBPF_MAP_TYPE_ARRAY_OF_MAPS                 = 0xc\n\tBPF_MAP_TYPE_HASH_OF_MAPS                  = 0xd\n\tBPF_MAP_TYPE_DEVMAP                        = 0xe\n\tBPF_MAP_TYPE_SOCKMAP                       = 0xf\n\tBPF_MAP_TYPE_CPUMAP                        = 0x10\n\tBPF_MAP_TYPE_XSKMAP                        = 0x11\n\tBPF_MAP_TYPE_SOCKHASH                      = 0x12\n\tBPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED     = 0x13\n\tBPF_MAP_TYPE_CGROUP_STORAGE                = 0x13\n\tBPF_MAP_TYPE_REUSEPORT_SOCKARRAY           = 0x14\n\tBPF_MAP_TYPE_PERCPU_CGROUP_STORAGE         = 0x15\n\tBPF_MAP_TYPE_QUEUE                         = 0x16\n\tBPF_MAP_TYPE_STACK                         = 0x17\n\tBPF_MAP_TYPE_SK_STORAGE                    = 0x18\n\tBPF_MAP_TYPE_DEVMAP_HASH                   = 0x19\n\tBPF_MAP_TYPE_STRUCT_OPS                    = 0x1a\n\tBPF_MAP_TYPE_RINGBUF                       = 0x1b\n\tBPF_MAP_TYPE_INODE_STORAGE                 = 0x1c\n\tBPF_MAP_TYPE_TASK_STORAGE                  = 0x1d\n\tBPF_MAP_TYPE_BLOOM_FILTER                  = 0x1e\n\tBPF_MAP_TYPE_USER_RINGBUF                  = 0x1f\n\tBPF_MAP_TYPE_CGRP_STORAGE                  = 0x20\n\tBPF_PROG_TYPE_UNSPEC                       = 0x0\n\tBPF_PROG_TYPE_SOCKET_FILTER                = 0x1\n\tBPF_PROG_TYPE_KPROBE                       = 0x2\n\tBPF_PROG_TYPE_SCHED_CLS                    = 0x3\n\tBPF_PROG_TYPE_SCHED_ACT                    = 0x4\n\tBPF_PROG_TYPE_TRACEPOINT                   = 0x5\n\tBPF_PROG_TYPE_XDP                          = 0x6\n\tBPF_PROG_TYPE_PERF_EVENT                   = 0x7\n\tBPF_PROG_TYPE_CGROUP_SKB                   = 0x8\n\tBPF_PROG_TYPE_CGROUP_SOCK                  = 0x9\n\tBPF_PROG_TYPE_LWT_IN                       = 0xa\n\tBPF_PROG_TYPE_LWT_OUT                      = 0xb\n\tBPF_PROG_TYPE_LWT_XMIT                     = 0xc\n\tBPF_PROG_TYPE_SOCK_OPS                     = 0xd\n\tBPF_PROG_TYPE_SK_SKB                       = 0xe\n\tBPF_PROG_TYPE_CGROUP_DEVICE                = 0xf\n\tBPF_PROG_TYPE_SK_MSG                       = 0x10\n\tBPF_PROG_TYPE_RAW_TRACEPOINT               = 0x11\n\tBPF_PROG_TYPE_CGROUP_SOCK_ADDR             = 0x12\n\tBPF_PROG_TYPE_LWT_SEG6LOCAL                = 0x13\n\tBPF_PROG_TYPE_LIRC_MODE2                   = 0x14\n\tBPF_PROG_TYPE_SK_REUSEPORT                 = 0x15\n\tBPF_PROG_TYPE_FLOW_DISSECTOR               = 0x16\n\tBPF_PROG_TYPE_CGROUP_SYSCTL                = 0x17\n\tBPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE      = 0x18\n\tBPF_PROG_TYPE_CGROUP_SOCKOPT               = 0x19\n\tBPF_PROG_TYPE_TRACING                      = 0x1a\n\tBPF_PROG_TYPE_STRUCT_OPS                   = 0x1b\n\tBPF_PROG_TYPE_EXT                          = 0x1c\n\tBPF_PROG_TYPE_LSM                          = 0x1d\n\tBPF_PROG_TYPE_SK_LOOKUP                    = 0x1e\n\tBPF_PROG_TYPE_SYSCALL                      = 0x1f\n\tBPF_PROG_TYPE_NETFILTER                    = 0x20\n\tBPF_CGROUP_INET_INGRESS                    = 0x0\n\tBPF_CGROUP_INET_EGRESS                     = 0x1\n\tBPF_CGROUP_INET_SOCK_CREATE                = 0x2\n\tBPF_CGROUP_SOCK_OPS                        = 0x3\n\tBPF_SK_SKB_STREAM_PARSER                   = 0x4\n\tBPF_SK_SKB_STREAM_VERDICT                  = 0x5\n\tBPF_CGROUP_DEVICE                          = 0x6\n\tBPF_SK_MSG_VERDICT                         = 0x7\n\tBPF_CGROUP_INET4_BIND                      = 0x8\n\tBPF_CGROUP_INET6_BIND                      = 0x9\n\tBPF_CGROUP_INET4_CONNECT                   = 0xa\n\tBPF_CGROUP_INET6_CONNECT                   = 0xb\n\tBPF_CGROUP_INET4_POST_BIND                 = 0xc\n\tBPF_CGROUP_INET6_POST_BIND                 = 0xd\n\tBPF_CGROUP_UDP4_SENDMSG                    = 0xe\n\tBPF_CGROUP_UDP6_SENDMSG                    = 0xf\n\tBPF_LIRC_MODE2                             = 0x10\n\tBPF_FLOW_DISSECTOR                         = 0x11\n\tBPF_CGROUP_SYSCTL                          = 0x12\n\tBPF_CGROUP_UDP4_RECVMSG                    = 0x13\n\tBPF_CGROUP_UDP6_RECVMSG                    = 0x14\n\tBPF_CGROUP_GETSOCKOPT                      = 0x15\n\tBPF_CGROUP_SETSOCKOPT                      = 0x16\n\tBPF_TRACE_RAW_TP                           = 0x17\n\tBPF_TRACE_FENTRY                           = 0x18\n\tBPF_TRACE_FEXIT                            = 0x19\n\tBPF_MODIFY_RETURN                          = 0x1a\n\tBPF_LSM_MAC                                = 0x1b\n\tBPF_TRACE_ITER                             = 0x1c\n\tBPF_CGROUP_INET4_GETPEERNAME               = 0x1d\n\tBPF_CGROUP_INET6_GETPEERNAME               = 0x1e\n\tBPF_CGROUP_INET4_GETSOCKNAME               = 0x1f\n\tBPF_CGROUP_INET6_GETSOCKNAME               = 0x20\n\tBPF_XDP_DEVMAP                             = 0x21\n\tBPF_CGROUP_INET_SOCK_RELEASE               = 0x22\n\tBPF_XDP_CPUMAP                             = 0x23\n\tBPF_SK_LOOKUP                              = 0x24\n\tBPF_XDP                                    = 0x25\n\tBPF_SK_SKB_VERDICT                         = 0x26\n\tBPF_SK_REUSEPORT_SELECT                    = 0x27\n\tBPF_SK_REUSEPORT_SELECT_OR_MIGRATE         = 0x28\n\tBPF_PERF_EVENT                             = 0x29\n\tBPF_TRACE_KPROBE_MULTI                     = 0x2a\n\tBPF_LSM_CGROUP                             = 0x2b\n\tBPF_STRUCT_OPS                             = 0x2c\n\tBPF_NETFILTER                              = 0x2d\n\tBPF_TCX_INGRESS                            = 0x2e\n\tBPF_TCX_EGRESS                             = 0x2f\n\tBPF_TRACE_UPROBE_MULTI                     = 0x30\n\tBPF_LINK_TYPE_UNSPEC                       = 0x0\n\tBPF_LINK_TYPE_RAW_TRACEPOINT               = 0x1\n\tBPF_LINK_TYPE_TRACING                      = 0x2\n\tBPF_LINK_TYPE_CGROUP                       = 0x3\n\tBPF_LINK_TYPE_ITER                         = 0x4\n\tBPF_LINK_TYPE_NETNS                        = 0x5\n\tBPF_LINK_TYPE_XDP                          = 0x6\n\tBPF_LINK_TYPE_PERF_EVENT                   = 0x7\n\tBPF_LINK_TYPE_KPROBE_MULTI                 = 0x8\n\tBPF_LINK_TYPE_STRUCT_OPS                   = 0x9\n\tBPF_LINK_TYPE_NETFILTER                    = 0xa\n\tBPF_LINK_TYPE_TCX                          = 0xb\n\tBPF_LINK_TYPE_UPROBE_MULTI                 = 0xc\n\tBPF_PERF_EVENT_UNSPEC                      = 0x0\n\tBPF_PERF_EVENT_UPROBE                      = 0x1\n\tBPF_PERF_EVENT_URETPROBE                   = 0x2\n\tBPF_PERF_EVENT_KPROBE                      = 0x3\n\tBPF_PERF_EVENT_KRETPROBE                   = 0x4\n\tBPF_PERF_EVENT_TRACEPOINT                  = 0x5\n\tBPF_PERF_EVENT_EVENT                       = 0x6\n\tBPF_F_KPROBE_MULTI_RETURN                  = 0x1\n\tBPF_F_UPROBE_MULTI_RETURN                  = 0x1\n\tBPF_ANY                                    = 0x0\n\tBPF_NOEXIST                                = 0x1\n\tBPF_EXIST                                  = 0x2\n\tBPF_F_LOCK                                 = 0x4\n\tBPF_F_NO_PREALLOC                          = 0x1\n\tBPF_F_NO_COMMON_LRU                        = 0x2\n\tBPF_F_NUMA_NODE                            = 0x4\n\tBPF_F_RDONLY                               = 0x8\n\tBPF_F_WRONLY                               = 0x10\n\tBPF_F_STACK_BUILD_ID                       = 0x20\n\tBPF_F_ZERO_SEED                            = 0x40\n\tBPF_F_RDONLY_PROG                          = 0x80\n\tBPF_F_WRONLY_PROG                          = 0x100\n\tBPF_F_CLONE                                = 0x200\n\tBPF_F_MMAPABLE                             = 0x400\n\tBPF_F_PRESERVE_ELEMS                       = 0x800\n\tBPF_F_INNER_MAP                            = 0x1000\n\tBPF_F_LINK                                 = 0x2000\n\tBPF_F_PATH_FD                              = 0x4000\n\tBPF_STATS_RUN_TIME                         = 0x0\n\tBPF_STACK_BUILD_ID_EMPTY                   = 0x0\n\tBPF_STACK_BUILD_ID_VALID                   = 0x1\n\tBPF_STACK_BUILD_ID_IP                      = 0x2\n\tBPF_F_RECOMPUTE_CSUM                       = 0x1\n\tBPF_F_INVALIDATE_HASH                      = 0x2\n\tBPF_F_HDR_FIELD_MASK                       = 0xf\n\tBPF_F_PSEUDO_HDR                           = 0x10\n\tBPF_F_MARK_MANGLED_0                       = 0x20\n\tBPF_F_MARK_ENFORCE                         = 0x40\n\tBPF_F_INGRESS                              = 0x1\n\tBPF_F_TUNINFO_IPV6                         = 0x1\n\tBPF_F_SKIP_FIELD_MASK                      = 0xff\n\tBPF_F_USER_STACK                           = 0x100\n\tBPF_F_FAST_STACK_CMP                       = 0x200\n\tBPF_F_REUSE_STACKID                        = 0x400\n\tBPF_F_USER_BUILD_ID                        = 0x800\n\tBPF_F_ZERO_CSUM_TX                         = 0x2\n\tBPF_F_DONT_FRAGMENT                        = 0x4\n\tBPF_F_SEQ_NUMBER                           = 0x8\n\tBPF_F_NO_TUNNEL_KEY                        = 0x10\n\tBPF_F_TUNINFO_FLAGS                        = 0x10\n\tBPF_F_INDEX_MASK                           = 0xffffffff\n\tBPF_F_CURRENT_CPU                          = 0xffffffff\n\tBPF_F_CTXLEN_MASK                          = 0xfffff00000000\n\tBPF_F_CURRENT_NETNS                        = -0x1\n\tBPF_CSUM_LEVEL_QUERY                       = 0x0\n\tBPF_CSUM_LEVEL_INC                         = 0x1\n\tBPF_CSUM_LEVEL_DEC                         = 0x2\n\tBPF_CSUM_LEVEL_RESET                       = 0x3\n\tBPF_F_ADJ_ROOM_FIXED_GSO                   = 0x1\n\tBPF_F_ADJ_ROOM_ENCAP_L3_IPV4               = 0x2\n\tBPF_F_ADJ_ROOM_ENCAP_L3_IPV6               = 0x4\n\tBPF_F_ADJ_ROOM_ENCAP_L4_GRE                = 0x8\n\tBPF_F_ADJ_ROOM_ENCAP_L4_UDP                = 0x10\n\tBPF_F_ADJ_ROOM_NO_CSUM_RESET               = 0x20\n\tBPF_F_ADJ_ROOM_ENCAP_L2_ETH                = 0x40\n\tBPF_F_ADJ_ROOM_DECAP_L3_IPV4               = 0x80\n\tBPF_F_ADJ_ROOM_DECAP_L3_IPV6               = 0x100\n\tBPF_ADJ_ROOM_ENCAP_L2_MASK                 = 0xff\n\tBPF_ADJ_ROOM_ENCAP_L2_SHIFT                = 0x38\n\tBPF_F_SYSCTL_BASE_NAME                     = 0x1\n\tBPF_LOCAL_STORAGE_GET_F_CREATE             = 0x1\n\tBPF_SK_STORAGE_GET_F_CREATE                = 0x1\n\tBPF_F_GET_BRANCH_RECORDS_SIZE              = 0x1\n\tBPF_RB_NO_WAKEUP                           = 0x1\n\tBPF_RB_FORCE_WAKEUP                        = 0x2\n\tBPF_RB_AVAIL_DATA                          = 0x0\n\tBPF_RB_RING_SIZE                           = 0x1\n\tBPF_RB_CONS_POS                            = 0x2\n\tBPF_RB_PROD_POS                            = 0x3\n\tBPF_RINGBUF_BUSY_BIT                       = 0x80000000\n\tBPF_RINGBUF_DISCARD_BIT                    = 0x40000000\n\tBPF_RINGBUF_HDR_SZ                         = 0x8\n\tBPF_SK_LOOKUP_F_REPLACE                    = 0x1\n\tBPF_SK_LOOKUP_F_NO_REUSEPORT               = 0x2\n\tBPF_ADJ_ROOM_NET                           = 0x0\n\tBPF_ADJ_ROOM_MAC                           = 0x1\n\tBPF_HDR_START_MAC                          = 0x0\n\tBPF_HDR_START_NET                          = 0x1\n\tBPF_LWT_ENCAP_SEG6                         = 0x0\n\tBPF_LWT_ENCAP_SEG6_INLINE                  = 0x1\n\tBPF_LWT_ENCAP_IP                           = 0x2\n\tBPF_F_BPRM_SECUREEXEC                      = 0x1\n\tBPF_F_BROADCAST                            = 0x8\n\tBPF_F_EXCLUDE_INGRESS                      = 0x10\n\tBPF_SKB_TSTAMP_UNSPEC                      = 0x0\n\tBPF_SKB_TSTAMP_DELIVERY_MONO               = 0x1\n\tBPF_OK                                     = 0x0\n\tBPF_DROP                                   = 0x2\n\tBPF_REDIRECT                               = 0x7\n\tBPF_LWT_REROUTE                            = 0x80\n\tBPF_FLOW_DISSECTOR_CONTINUE                = 0x81\n\tBPF_SOCK_OPS_RTO_CB_FLAG                   = 0x1\n\tBPF_SOCK_OPS_RETRANS_CB_FLAG               = 0x2\n\tBPF_SOCK_OPS_STATE_CB_FLAG                 = 0x4\n\tBPF_SOCK_OPS_RTT_CB_FLAG                   = 0x8\n\tBPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG     = 0x10\n\tBPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG = 0x20\n\tBPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG         = 0x40\n\tBPF_SOCK_OPS_ALL_CB_FLAGS                  = 0x7f\n\tBPF_SOCK_OPS_VOID                          = 0x0\n\tBPF_SOCK_OPS_TIMEOUT_INIT                  = 0x1\n\tBPF_SOCK_OPS_RWND_INIT                     = 0x2\n\tBPF_SOCK_OPS_TCP_CONNECT_CB                = 0x3\n\tBPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB         = 0x4\n\tBPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB        = 0x5\n\tBPF_SOCK_OPS_NEEDS_ECN                     = 0x6\n\tBPF_SOCK_OPS_BASE_RTT                      = 0x7\n\tBPF_SOCK_OPS_RTO_CB                        = 0x8\n\tBPF_SOCK_OPS_RETRANS_CB                    = 0x9\n\tBPF_SOCK_OPS_STATE_CB                      = 0xa\n\tBPF_SOCK_OPS_TCP_LISTEN_CB                 = 0xb\n\tBPF_SOCK_OPS_RTT_CB                        = 0xc\n\tBPF_SOCK_OPS_PARSE_HDR_OPT_CB              = 0xd\n\tBPF_SOCK_OPS_HDR_OPT_LEN_CB                = 0xe\n\tBPF_SOCK_OPS_WRITE_HDR_OPT_CB              = 0xf\n\tBPF_TCP_ESTABLISHED                        = 0x1\n\tBPF_TCP_SYN_SENT                           = 0x2\n\tBPF_TCP_SYN_RECV                           = 0x3\n\tBPF_TCP_FIN_WAIT1                          = 0x4\n\tBPF_TCP_FIN_WAIT2                          = 0x5\n\tBPF_TCP_TIME_WAIT                          = 0x6\n\tBPF_TCP_CLOSE                              = 0x7\n\tBPF_TCP_CLOSE_WAIT                         = 0x8\n\tBPF_TCP_LAST_ACK                           = 0x9\n\tBPF_TCP_LISTEN                             = 0xa\n\tBPF_TCP_CLOSING                            = 0xb\n\tBPF_TCP_NEW_SYN_RECV                       = 0xc\n\tBPF_TCP_MAX_STATES                         = 0xe\n\tTCP_BPF_IW                                 = 0x3e9\n\tTCP_BPF_SNDCWND_CLAMP                      = 0x3ea\n\tTCP_BPF_DELACK_MAX                         = 0x3eb\n\tTCP_BPF_RTO_MIN                            = 0x3ec\n\tTCP_BPF_SYN                                = 0x3ed\n\tTCP_BPF_SYN_IP                             = 0x3ee\n\tTCP_BPF_SYN_MAC                            = 0x3ef\n\tBPF_LOAD_HDR_OPT_TCP_SYN                   = 0x1\n\tBPF_WRITE_HDR_TCP_CURRENT_MSS              = 0x1\n\tBPF_WRITE_HDR_TCP_SYNACK_COOKIE            = 0x2\n\tBPF_DEVCG_ACC_MKNOD                        = 0x1\n\tBPF_DEVCG_ACC_READ                         = 0x2\n\tBPF_DEVCG_ACC_WRITE                        = 0x4\n\tBPF_DEVCG_DEV_BLOCK                        = 0x1\n\tBPF_DEVCG_DEV_CHAR                         = 0x2\n\tBPF_FIB_LOOKUP_DIRECT                      = 0x1\n\tBPF_FIB_LOOKUP_OUTPUT                      = 0x2\n\tBPF_FIB_LOOKUP_SKIP_NEIGH                  = 0x4\n\tBPF_FIB_LOOKUP_TBID                        = 0x8\n\tBPF_FIB_LKUP_RET_SUCCESS                   = 0x0\n\tBPF_FIB_LKUP_RET_BLACKHOLE                 = 0x1\n\tBPF_FIB_LKUP_RET_UNREACHABLE               = 0x2\n\tBPF_FIB_LKUP_RET_PROHIBIT                  = 0x3\n\tBPF_FIB_LKUP_RET_NOT_FWDED                 = 0x4\n\tBPF_FIB_LKUP_RET_FWD_DISABLED              = 0x5\n\tBPF_FIB_LKUP_RET_UNSUPP_LWT                = 0x6\n\tBPF_FIB_LKUP_RET_NO_NEIGH                  = 0x7\n\tBPF_FIB_LKUP_RET_FRAG_NEEDED               = 0x8\n\tBPF_MTU_CHK_SEGS                           = 0x1\n\tBPF_MTU_CHK_RET_SUCCESS                    = 0x0\n\tBPF_MTU_CHK_RET_FRAG_NEEDED                = 0x1\n\tBPF_MTU_CHK_RET_SEGS_TOOBIG                = 0x2\n\tBPF_FD_TYPE_RAW_TRACEPOINT                 = 0x0\n\tBPF_FD_TYPE_TRACEPOINT                     = 0x1\n\tBPF_FD_TYPE_KPROBE                         = 0x2\n\tBPF_FD_TYPE_KRETPROBE                      = 0x3\n\tBPF_FD_TYPE_UPROBE                         = 0x4\n\tBPF_FD_TYPE_URETPROBE                      = 0x5\n\tBPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG        = 0x1\n\tBPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL    = 0x2\n\tBPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP         = 0x4\n\tBPF_CORE_FIELD_BYTE_OFFSET                 = 0x0\n\tBPF_CORE_FIELD_BYTE_SIZE                   = 0x1\n\tBPF_CORE_FIELD_EXISTS                      = 0x2\n\tBPF_CORE_FIELD_SIGNED                      = 0x3\n\tBPF_CORE_FIELD_LSHIFT_U64                  = 0x4\n\tBPF_CORE_FIELD_RSHIFT_U64                  = 0x5\n\tBPF_CORE_TYPE_ID_LOCAL                     = 0x6\n\tBPF_CORE_TYPE_ID_TARGET                    = 0x7\n\tBPF_CORE_TYPE_EXISTS                       = 0x8\n\tBPF_CORE_TYPE_SIZE                         = 0x9\n\tBPF_CORE_ENUMVAL_EXISTS                    = 0xa\n\tBPF_CORE_ENUMVAL_VALUE                     = 0xb\n\tBPF_CORE_TYPE_MATCHES                      = 0xc\n\tBPF_F_TIMER_ABS                            = 0x1\n)\n\nconst (\n\tTCA_UNSPEC            = 0x0\n\tTCA_KIND              = 0x1\n\tTCA_OPTIONS           = 0x2\n\tTCA_STATS             = 0x3\n\tTCA_XSTATS            = 0x4\n\tTCA_RATE              = 0x5\n\tTCA_FCNT              = 0x6\n\tTCA_STATS2            = 0x7\n\tTCA_STAB              = 0x8\n\tTCA_PAD               = 0x9\n\tTCA_DUMP_INVISIBLE    = 0xa\n\tTCA_CHAIN             = 0xb\n\tTCA_HW_OFFLOAD        = 0xc\n\tTCA_INGRESS_BLOCK     = 0xd\n\tTCA_EGRESS_BLOCK      = 0xe\n\tTCA_DUMP_FLAGS        = 0xf\n\tTCA_EXT_WARN_MSG      = 0x10\n\tRTNLGRP_NONE          = 0x0\n\tRTNLGRP_LINK          = 0x1\n\tRTNLGRP_NOTIFY        = 0x2\n\tRTNLGRP_NEIGH         = 0x3\n\tRTNLGRP_TC            = 0x4\n\tRTNLGRP_IPV4_IFADDR   = 0x5\n\tRTNLGRP_IPV4_MROUTE   = 0x6\n\tRTNLGRP_IPV4_ROUTE    = 0x7\n\tRTNLGRP_IPV4_RULE     = 0x8\n\tRTNLGRP_IPV6_IFADDR   = 0x9\n\tRTNLGRP_IPV6_MROUTE   = 0xa\n\tRTNLGRP_IPV6_ROUTE    = 0xb\n\tRTNLGRP_IPV6_IFINFO   = 0xc\n\tRTNLGRP_DECnet_IFADDR = 0xd\n\tRTNLGRP_NOP2          = 0xe\n\tRTNLGRP_DECnet_ROUTE  = 0xf\n\tRTNLGRP_DECnet_RULE   = 0x10\n\tRTNLGRP_NOP4          = 0x11\n\tRTNLGRP_IPV6_PREFIX   = 0x12\n\tRTNLGRP_IPV6_RULE     = 0x13\n\tRTNLGRP_ND_USEROPT    = 0x14\n\tRTNLGRP_PHONET_IFADDR = 0x15\n\tRTNLGRP_PHONET_ROUTE  = 0x16\n\tRTNLGRP_DCB           = 0x17\n\tRTNLGRP_IPV4_NETCONF  = 0x18\n\tRTNLGRP_IPV6_NETCONF  = 0x19\n\tRTNLGRP_MDB           = 0x1a\n\tRTNLGRP_MPLS_ROUTE    = 0x1b\n\tRTNLGRP_NSID          = 0x1c\n\tRTNLGRP_MPLS_NETCONF  = 0x1d\n\tRTNLGRP_IPV4_MROUTE_R = 0x1e\n\tRTNLGRP_IPV6_MROUTE_R = 0x1f\n\tRTNLGRP_NEXTHOP       = 0x20\n\tRTNLGRP_BRVLAN        = 0x21\n\tRTNLGRP_MCTP_IFADDR   = 0x22\n\tRTNLGRP_TUNNEL        = 0x23\n\tRTNLGRP_STATS         = 0x24\n\tRTNLGRP_IPV4_MCADDR   = 0x25\n\tRTNLGRP_IPV6_MCADDR   = 0x26\n\tRTNLGRP_IPV6_ACADDR   = 0x27\n\tTCA_ROOT_UNSPEC       = 0x0\n\tTCA_ROOT_TAB          = 0x1\n\tTCA_ROOT_FLAGS        = 0x2\n\tTCA_ROOT_COUNT        = 0x3\n\tTCA_ROOT_TIME_DELTA   = 0x4\n\tTCA_ROOT_EXT_WARN_MSG = 0x5\n)\n\ntype CapUserHeader struct {\n\tVersion uint32\n\tPid     int32\n}\n\ntype CapUserData struct {\n\tEffective   uint32\n\tPermitted   uint32\n\tInheritable uint32\n}\n\nconst (\n\tLINUX_CAPABILITY_VERSION_1 = 0x19980330\n\tLINUX_CAPABILITY_VERSION_2 = 0x20071026\n\tLINUX_CAPABILITY_VERSION_3 = 0x20080522\n)\n\nconst (\n\tLO_FLAGS_READ_ONLY = 0x1\n\tLO_FLAGS_AUTOCLEAR = 0x4\n\tLO_FLAGS_PARTSCAN  = 0x8\n\tLO_FLAGS_DIRECT_IO = 0x10\n)\n\ntype LoopInfo64 struct {\n\tDevice           uint64\n\tInode            uint64\n\tRdevice          uint64\n\tOffset           uint64\n\tSizelimit        uint64\n\tNumber           uint32\n\tEncrypt_type     uint32\n\tEncrypt_key_size uint32\n\tFlags            uint32\n\tFile_name        [64]uint8\n\tCrypt_name       [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n}\ntype LoopConfig struct {\n\tFd   uint32\n\tSize uint32\n\tInfo LoopInfo64\n\t_    [8]uint64\n}\n\ntype TIPCSocketAddr struct {\n\tRef  uint32\n\tNode uint32\n}\n\ntype TIPCServiceRange struct {\n\tType  uint32\n\tLower uint32\n\tUpper uint32\n}\n\ntype TIPCServiceName struct {\n\tType     uint32\n\tInstance uint32\n\tDomain   uint32\n}\n\ntype TIPCEvent struct {\n\tEvent uint32\n\tLower uint32\n\tUpper uint32\n\tPort  TIPCSocketAddr\n\tS     TIPCSubscr\n}\n\ntype TIPCGroupReq struct {\n\tType     uint32\n\tInstance uint32\n\tScope    uint32\n\tFlags    uint32\n}\n\nconst (\n\tTIPC_CLUSTER_SCOPE = 0x2\n\tTIPC_NODE_SCOPE    = 0x3\n)\n\nconst (\n\tSYSLOG_ACTION_CLOSE         = 0\n\tSYSLOG_ACTION_OPEN          = 1\n\tSYSLOG_ACTION_READ          = 2\n\tSYSLOG_ACTION_READ_ALL      = 3\n\tSYSLOG_ACTION_READ_CLEAR    = 4\n\tSYSLOG_ACTION_CLEAR         = 5\n\tSYSLOG_ACTION_CONSOLE_OFF   = 6\n\tSYSLOG_ACTION_CONSOLE_ON    = 7\n\tSYSLOG_ACTION_CONSOLE_LEVEL = 8\n\tSYSLOG_ACTION_SIZE_UNREAD   = 9\n\tSYSLOG_ACTION_SIZE_BUFFER   = 10\n)\n\nconst (\n\tDEVLINK_CMD_UNSPEC                                 = 0x0\n\tDEVLINK_CMD_GET                                    = 0x1\n\tDEVLINK_CMD_SET                                    = 0x2\n\tDEVLINK_CMD_NEW                                    = 0x3\n\tDEVLINK_CMD_DEL                                    = 0x4\n\tDEVLINK_CMD_PORT_GET                               = 0x5\n\tDEVLINK_CMD_PORT_SET                               = 0x6\n\tDEVLINK_CMD_PORT_NEW                               = 0x7\n\tDEVLINK_CMD_PORT_DEL                               = 0x8\n\tDEVLINK_CMD_PORT_SPLIT                             = 0x9\n\tDEVLINK_CMD_PORT_UNSPLIT                           = 0xa\n\tDEVLINK_CMD_SB_GET                                 = 0xb\n\tDEVLINK_CMD_SB_SET                                 = 0xc\n\tDEVLINK_CMD_SB_NEW                                 = 0xd\n\tDEVLINK_CMD_SB_DEL                                 = 0xe\n\tDEVLINK_CMD_SB_POOL_GET                            = 0xf\n\tDEVLINK_CMD_SB_POOL_SET                            = 0x10\n\tDEVLINK_CMD_SB_POOL_NEW                            = 0x11\n\tDEVLINK_CMD_SB_POOL_DEL                            = 0x12\n\tDEVLINK_CMD_SB_PORT_POOL_GET                       = 0x13\n\tDEVLINK_CMD_SB_PORT_POOL_SET                       = 0x14\n\tDEVLINK_CMD_SB_PORT_POOL_NEW                       = 0x15\n\tDEVLINK_CMD_SB_PORT_POOL_DEL                       = 0x16\n\tDEVLINK_CMD_SB_TC_POOL_BIND_GET                    = 0x17\n\tDEVLINK_CMD_SB_TC_POOL_BIND_SET                    = 0x18\n\tDEVLINK_CMD_SB_TC_POOL_BIND_NEW                    = 0x19\n\tDEVLINK_CMD_SB_TC_POOL_BIND_DEL                    = 0x1a\n\tDEVLINK_CMD_SB_OCC_SNAPSHOT                        = 0x1b\n\tDEVLINK_CMD_SB_OCC_MAX_CLEAR                       = 0x1c\n\tDEVLINK_CMD_ESWITCH_GET                            = 0x1d\n\tDEVLINK_CMD_ESWITCH_SET                            = 0x1e\n\tDEVLINK_CMD_DPIPE_TABLE_GET                        = 0x1f\n\tDEVLINK_CMD_DPIPE_ENTRIES_GET                      = 0x20\n\tDEVLINK_CMD_DPIPE_HEADERS_GET                      = 0x21\n\tDEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET               = 0x22\n\tDEVLINK_CMD_RESOURCE_SET                           = 0x23\n\tDEVLINK_CMD_RESOURCE_DUMP                          = 0x24\n\tDEVLINK_CMD_RELOAD                                 = 0x25\n\tDEVLINK_CMD_PARAM_GET                              = 0x26\n\tDEVLINK_CMD_PARAM_SET                              = 0x27\n\tDEVLINK_CMD_PARAM_NEW                              = 0x28\n\tDEVLINK_CMD_PARAM_DEL                              = 0x29\n\tDEVLINK_CMD_REGION_GET                             = 0x2a\n\tDEVLINK_CMD_REGION_SET                             = 0x2b\n\tDEVLINK_CMD_REGION_NEW                             = 0x2c\n\tDEVLINK_CMD_REGION_DEL                             = 0x2d\n\tDEVLINK_CMD_REGION_READ                            = 0x2e\n\tDEVLINK_CMD_PORT_PARAM_GET                         = 0x2f\n\tDEVLINK_CMD_PORT_PARAM_SET                         = 0x30\n\tDEVLINK_CMD_PORT_PARAM_NEW                         = 0x31\n\tDEVLINK_CMD_PORT_PARAM_DEL                         = 0x32\n\tDEVLINK_CMD_INFO_GET                               = 0x33\n\tDEVLINK_CMD_HEALTH_REPORTER_GET                    = 0x34\n\tDEVLINK_CMD_HEALTH_REPORTER_SET                    = 0x35\n\tDEVLINK_CMD_HEALTH_REPORTER_RECOVER                = 0x36\n\tDEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE               = 0x37\n\tDEVLINK_CMD_HEALTH_REPORTER_DUMP_GET               = 0x38\n\tDEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR             = 0x39\n\tDEVLINK_CMD_FLASH_UPDATE                           = 0x3a\n\tDEVLINK_CMD_FLASH_UPDATE_END                       = 0x3b\n\tDEVLINK_CMD_FLASH_UPDATE_STATUS                    = 0x3c\n\tDEVLINK_CMD_TRAP_GET                               = 0x3d\n\tDEVLINK_CMD_TRAP_SET                               = 0x3e\n\tDEVLINK_CMD_TRAP_NEW                               = 0x3f\n\tDEVLINK_CMD_TRAP_DEL                               = 0x40\n\tDEVLINK_CMD_TRAP_GROUP_GET                         = 0x41\n\tDEVLINK_CMD_TRAP_GROUP_SET                         = 0x42\n\tDEVLINK_CMD_TRAP_GROUP_NEW                         = 0x43\n\tDEVLINK_CMD_TRAP_GROUP_DEL                         = 0x44\n\tDEVLINK_CMD_TRAP_POLICER_GET                       = 0x45\n\tDEVLINK_CMD_TRAP_POLICER_SET                       = 0x46\n\tDEVLINK_CMD_TRAP_POLICER_NEW                       = 0x47\n\tDEVLINK_CMD_TRAP_POLICER_DEL                       = 0x48\n\tDEVLINK_CMD_HEALTH_REPORTER_TEST                   = 0x49\n\tDEVLINK_CMD_RATE_GET                               = 0x4a\n\tDEVLINK_CMD_RATE_SET                               = 0x4b\n\tDEVLINK_CMD_RATE_NEW                               = 0x4c\n\tDEVLINK_CMD_RATE_DEL                               = 0x4d\n\tDEVLINK_CMD_LINECARD_GET                           = 0x4e\n\tDEVLINK_CMD_LINECARD_SET                           = 0x4f\n\tDEVLINK_CMD_LINECARD_NEW                           = 0x50\n\tDEVLINK_CMD_LINECARD_DEL                           = 0x51\n\tDEVLINK_CMD_SELFTESTS_GET                          = 0x52\n\tDEVLINK_CMD_MAX                                    = 0x54\n\tDEVLINK_PORT_TYPE_NOTSET                           = 0x0\n\tDEVLINK_PORT_TYPE_AUTO                             = 0x1\n\tDEVLINK_PORT_TYPE_ETH                              = 0x2\n\tDEVLINK_PORT_TYPE_IB                               = 0x3\n\tDEVLINK_SB_POOL_TYPE_INGRESS                       = 0x0\n\tDEVLINK_SB_POOL_TYPE_EGRESS                        = 0x1\n\tDEVLINK_SB_THRESHOLD_TYPE_STATIC                   = 0x0\n\tDEVLINK_SB_THRESHOLD_TYPE_DYNAMIC                  = 0x1\n\tDEVLINK_ESWITCH_MODE_LEGACY                        = 0x0\n\tDEVLINK_ESWITCH_MODE_SWITCHDEV                     = 0x1\n\tDEVLINK_ESWITCH_INLINE_MODE_NONE                   = 0x0\n\tDEVLINK_ESWITCH_INLINE_MODE_LINK                   = 0x1\n\tDEVLINK_ESWITCH_INLINE_MODE_NETWORK                = 0x2\n\tDEVLINK_ESWITCH_INLINE_MODE_TRANSPORT              = 0x3\n\tDEVLINK_ESWITCH_ENCAP_MODE_NONE                    = 0x0\n\tDEVLINK_ESWITCH_ENCAP_MODE_BASIC                   = 0x1\n\tDEVLINK_PORT_FLAVOUR_PHYSICAL                      = 0x0\n\tDEVLINK_PORT_FLAVOUR_CPU                           = 0x1\n\tDEVLINK_PORT_FLAVOUR_DSA                           = 0x2\n\tDEVLINK_PORT_FLAVOUR_PCI_PF                        = 0x3\n\tDEVLINK_PORT_FLAVOUR_PCI_VF                        = 0x4\n\tDEVLINK_PORT_FLAVOUR_VIRTUAL                       = 0x5\n\tDEVLINK_PORT_FLAVOUR_UNUSED                        = 0x6\n\tDEVLINK_PARAM_CMODE_RUNTIME                        = 0x0\n\tDEVLINK_PARAM_CMODE_DRIVERINIT                     = 0x1\n\tDEVLINK_PARAM_CMODE_PERMANENT                      = 0x2\n\tDEVLINK_PARAM_CMODE_MAX                            = 0x2\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER          = 0x0\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH           = 0x1\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DISK            = 0x2\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_UNKNOWN         = 0x3\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_UNKNOWN = 0x0\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_ALWAYS  = 0x1\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_NEVER   = 0x2\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_DISK    = 0x3\n\tDEVLINK_ATTR_STATS_RX_PACKETS                      = 0x0\n\tDEVLINK_ATTR_STATS_RX_BYTES                        = 0x1\n\tDEVLINK_ATTR_STATS_RX_DROPPED                      = 0x2\n\tDEVLINK_ATTR_STATS_MAX                             = 0x2\n\tDEVLINK_FLASH_OVERWRITE_SETTINGS_BIT               = 0x0\n\tDEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT            = 0x1\n\tDEVLINK_FLASH_OVERWRITE_MAX_BIT                    = 0x1\n\tDEVLINK_TRAP_ACTION_DROP                           = 0x0\n\tDEVLINK_TRAP_ACTION_TRAP                           = 0x1\n\tDEVLINK_TRAP_ACTION_MIRROR                         = 0x2\n\tDEVLINK_TRAP_TYPE_DROP                             = 0x0\n\tDEVLINK_TRAP_TYPE_EXCEPTION                        = 0x1\n\tDEVLINK_TRAP_TYPE_CONTROL                          = 0x2\n\tDEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT            = 0x0\n\tDEVLINK_ATTR_TRAP_METADATA_TYPE_FA_COOKIE          = 0x1\n\tDEVLINK_RELOAD_ACTION_UNSPEC                       = 0x0\n\tDEVLINK_RELOAD_ACTION_DRIVER_REINIT                = 0x1\n\tDEVLINK_RELOAD_ACTION_FW_ACTIVATE                  = 0x2\n\tDEVLINK_RELOAD_ACTION_MAX                          = 0x2\n\tDEVLINK_RELOAD_LIMIT_UNSPEC                        = 0x0\n\tDEVLINK_RELOAD_LIMIT_NO_RESET                      = 0x1\n\tDEVLINK_RELOAD_LIMIT_MAX                           = 0x1\n\tDEVLINK_ATTR_UNSPEC                                = 0x0\n\tDEVLINK_ATTR_BUS_NAME                              = 0x1\n\tDEVLINK_ATTR_DEV_NAME                              = 0x2\n\tDEVLINK_ATTR_PORT_INDEX                            = 0x3\n\tDEVLINK_ATTR_PORT_TYPE                             = 0x4\n\tDEVLINK_ATTR_PORT_DESIRED_TYPE                     = 0x5\n\tDEVLINK_ATTR_PORT_NETDEV_IFINDEX                   = 0x6\n\tDEVLINK_ATTR_PORT_NETDEV_NAME                      = 0x7\n\tDEVLINK_ATTR_PORT_IBDEV_NAME                       = 0x8\n\tDEVLINK_ATTR_PORT_SPLIT_COUNT                      = 0x9\n\tDEVLINK_ATTR_PORT_SPLIT_GROUP                      = 0xa\n\tDEVLINK_ATTR_SB_INDEX                              = 0xb\n\tDEVLINK_ATTR_SB_SIZE                               = 0xc\n\tDEVLINK_ATTR_SB_INGRESS_POOL_COUNT                 = 0xd\n\tDEVLINK_ATTR_SB_EGRESS_POOL_COUNT                  = 0xe\n\tDEVLINK_ATTR_SB_INGRESS_TC_COUNT                   = 0xf\n\tDEVLINK_ATTR_SB_EGRESS_TC_COUNT                    = 0x10\n\tDEVLINK_ATTR_SB_POOL_INDEX                         = 0x11\n\tDEVLINK_ATTR_SB_POOL_TYPE                          = 0x12\n\tDEVLINK_ATTR_SB_POOL_SIZE                          = 0x13\n\tDEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE                = 0x14\n\tDEVLINK_ATTR_SB_THRESHOLD                          = 0x15\n\tDEVLINK_ATTR_SB_TC_INDEX                           = 0x16\n\tDEVLINK_ATTR_SB_OCC_CUR                            = 0x17\n\tDEVLINK_ATTR_SB_OCC_MAX                            = 0x18\n\tDEVLINK_ATTR_ESWITCH_MODE                          = 0x19\n\tDEVLINK_ATTR_ESWITCH_INLINE_MODE                   = 0x1a\n\tDEVLINK_ATTR_DPIPE_TABLES                          = 0x1b\n\tDEVLINK_ATTR_DPIPE_TABLE                           = 0x1c\n\tDEVLINK_ATTR_DPIPE_TABLE_NAME                      = 0x1d\n\tDEVLINK_ATTR_DPIPE_TABLE_SIZE                      = 0x1e\n\tDEVLINK_ATTR_DPIPE_TABLE_MATCHES                   = 0x1f\n\tDEVLINK_ATTR_DPIPE_TABLE_ACTIONS                   = 0x20\n\tDEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED          = 0x21\n\tDEVLINK_ATTR_DPIPE_ENTRIES                         = 0x22\n\tDEVLINK_ATTR_DPIPE_ENTRY                           = 0x23\n\tDEVLINK_ATTR_DPIPE_ENTRY_INDEX                     = 0x24\n\tDEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES              = 0x25\n\tDEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES             = 0x26\n\tDEVLINK_ATTR_DPIPE_ENTRY_COUNTER                   = 0x27\n\tDEVLINK_ATTR_DPIPE_MATCH                           = 0x28\n\tDEVLINK_ATTR_DPIPE_MATCH_VALUE                     = 0x29\n\tDEVLINK_ATTR_DPIPE_MATCH_TYPE                      = 0x2a\n\tDEVLINK_ATTR_DPIPE_ACTION                          = 0x2b\n\tDEVLINK_ATTR_DPIPE_ACTION_VALUE                    = 0x2c\n\tDEVLINK_ATTR_DPIPE_ACTION_TYPE                     = 0x2d\n\tDEVLINK_ATTR_DPIPE_VALUE                           = 0x2e\n\tDEVLINK_ATTR_DPIPE_VALUE_MASK                      = 0x2f\n\tDEVLINK_ATTR_DPIPE_VALUE_MAPPING                   = 0x30\n\tDEVLINK_ATTR_DPIPE_HEADERS                         = 0x31\n\tDEVLINK_ATTR_DPIPE_HEADER                          = 0x32\n\tDEVLINK_ATTR_DPIPE_HEADER_NAME                     = 0x33\n\tDEVLINK_ATTR_DPIPE_HEADER_ID                       = 0x34\n\tDEVLINK_ATTR_DPIPE_HEADER_FIELDS                   = 0x35\n\tDEVLINK_ATTR_DPIPE_HEADER_GLOBAL                   = 0x36\n\tDEVLINK_ATTR_DPIPE_HEADER_INDEX                    = 0x37\n\tDEVLINK_ATTR_DPIPE_FIELD                           = 0x38\n\tDEVLINK_ATTR_DPIPE_FIELD_NAME                      = 0x39\n\tDEVLINK_ATTR_DPIPE_FIELD_ID                        = 0x3a\n\tDEVLINK_ATTR_DPIPE_FIELD_BITWIDTH                  = 0x3b\n\tDEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE              = 0x3c\n\tDEVLINK_ATTR_PAD                                   = 0x3d\n\tDEVLINK_ATTR_ESWITCH_ENCAP_MODE                    = 0x3e\n\tDEVLINK_ATTR_RESOURCE_LIST                         = 0x3f\n\tDEVLINK_ATTR_RESOURCE                              = 0x40\n\tDEVLINK_ATTR_RESOURCE_NAME                         = 0x41\n\tDEVLINK_ATTR_RESOURCE_ID                           = 0x42\n\tDEVLINK_ATTR_RESOURCE_SIZE                         = 0x43\n\tDEVLINK_ATTR_RESOURCE_SIZE_NEW                     = 0x44\n\tDEVLINK_ATTR_RESOURCE_SIZE_VALID                   = 0x45\n\tDEVLINK_ATTR_RESOURCE_SIZE_MIN                     = 0x46\n\tDEVLINK_ATTR_RESOURCE_SIZE_MAX                     = 0x47\n\tDEVLINK_ATTR_RESOURCE_SIZE_GRAN                    = 0x48\n\tDEVLINK_ATTR_RESOURCE_UNIT                         = 0x49\n\tDEVLINK_ATTR_RESOURCE_OCC                          = 0x4a\n\tDEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID               = 0x4b\n\tDEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS            = 0x4c\n\tDEVLINK_ATTR_PORT_FLAVOUR                          = 0x4d\n\tDEVLINK_ATTR_PORT_NUMBER                           = 0x4e\n\tDEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER             = 0x4f\n\tDEVLINK_ATTR_PARAM                                 = 0x50\n\tDEVLINK_ATTR_PARAM_NAME                            = 0x51\n\tDEVLINK_ATTR_PARAM_GENERIC                         = 0x52\n\tDEVLINK_ATTR_PARAM_TYPE                            = 0x53\n\tDEVLINK_ATTR_PARAM_VALUES_LIST                     = 0x54\n\tDEVLINK_ATTR_PARAM_VALUE                           = 0x55\n\tDEVLINK_ATTR_PARAM_VALUE_DATA                      = 0x56\n\tDEVLINK_ATTR_PARAM_VALUE_CMODE                     = 0x57\n\tDEVLINK_ATTR_REGION_NAME                           = 0x58\n\tDEVLINK_ATTR_REGION_SIZE                           = 0x59\n\tDEVLINK_ATTR_REGION_SNAPSHOTS                      = 0x5a\n\tDEVLINK_ATTR_REGION_SNAPSHOT                       = 0x5b\n\tDEVLINK_ATTR_REGION_SNAPSHOT_ID                    = 0x5c\n\tDEVLINK_ATTR_REGION_CHUNKS                         = 0x5d\n\tDEVLINK_ATTR_REGION_CHUNK                          = 0x5e\n\tDEVLINK_ATTR_REGION_CHUNK_DATA                     = 0x5f\n\tDEVLINK_ATTR_REGION_CHUNK_ADDR                     = 0x60\n\tDEVLINK_ATTR_REGION_CHUNK_LEN                      = 0x61\n\tDEVLINK_ATTR_INFO_DRIVER_NAME                      = 0x62\n\tDEVLINK_ATTR_INFO_SERIAL_NUMBER                    = 0x63\n\tDEVLINK_ATTR_INFO_VERSION_FIXED                    = 0x64\n\tDEVLINK_ATTR_INFO_VERSION_RUNNING                  = 0x65\n\tDEVLINK_ATTR_INFO_VERSION_STORED                   = 0x66\n\tDEVLINK_ATTR_INFO_VERSION_NAME                     = 0x67\n\tDEVLINK_ATTR_INFO_VERSION_VALUE                    = 0x68\n\tDEVLINK_ATTR_SB_POOL_CELL_SIZE                     = 0x69\n\tDEVLINK_ATTR_FMSG                                  = 0x6a\n\tDEVLINK_ATTR_FMSG_OBJ_NEST_START                   = 0x6b\n\tDEVLINK_ATTR_FMSG_PAIR_NEST_START                  = 0x6c\n\tDEVLINK_ATTR_FMSG_ARR_NEST_START                   = 0x6d\n\tDEVLINK_ATTR_FMSG_NEST_END                         = 0x6e\n\tDEVLINK_ATTR_FMSG_OBJ_NAME                         = 0x6f\n\tDEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE                   = 0x70\n\tDEVLINK_ATTR_FMSG_OBJ_VALUE_DATA                   = 0x71\n\tDEVLINK_ATTR_HEALTH_REPORTER                       = 0x72\n\tDEVLINK_ATTR_HEALTH_REPORTER_NAME                  = 0x73\n\tDEVLINK_ATTR_HEALTH_REPORTER_STATE                 = 0x74\n\tDEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT             = 0x75\n\tDEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT         = 0x76\n\tDEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS               = 0x77\n\tDEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD       = 0x78\n\tDEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER          = 0x79\n\tDEVLINK_ATTR_FLASH_UPDATE_FILE_NAME                = 0x7a\n\tDEVLINK_ATTR_FLASH_UPDATE_COMPONENT                = 0x7b\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG               = 0x7c\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE              = 0x7d\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL             = 0x7e\n\tDEVLINK_ATTR_PORT_PCI_PF_NUMBER                    = 0x7f\n\tDEVLINK_ATTR_PORT_PCI_VF_NUMBER                    = 0x80\n\tDEVLINK_ATTR_STATS                                 = 0x81\n\tDEVLINK_ATTR_TRAP_NAME                             = 0x82\n\tDEVLINK_ATTR_TRAP_ACTION                           = 0x83\n\tDEVLINK_ATTR_TRAP_TYPE                             = 0x84\n\tDEVLINK_ATTR_TRAP_GENERIC                          = 0x85\n\tDEVLINK_ATTR_TRAP_METADATA                         = 0x86\n\tDEVLINK_ATTR_TRAP_GROUP_NAME                       = 0x87\n\tDEVLINK_ATTR_RELOAD_FAILED                         = 0x88\n\tDEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS            = 0x89\n\tDEVLINK_ATTR_NETNS_FD                              = 0x8a\n\tDEVLINK_ATTR_NETNS_PID                             = 0x8b\n\tDEVLINK_ATTR_NETNS_ID                              = 0x8c\n\tDEVLINK_ATTR_HEALTH_REPORTER_AUTO_DUMP             = 0x8d\n\tDEVLINK_ATTR_TRAP_POLICER_ID                       = 0x8e\n\tDEVLINK_ATTR_TRAP_POLICER_RATE                     = 0x8f\n\tDEVLINK_ATTR_TRAP_POLICER_BURST                    = 0x90\n\tDEVLINK_ATTR_PORT_FUNCTION                         = 0x91\n\tDEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER              = 0x92\n\tDEVLINK_ATTR_PORT_LANES                            = 0x93\n\tDEVLINK_ATTR_PORT_SPLITTABLE                       = 0x94\n\tDEVLINK_ATTR_PORT_EXTERNAL                         = 0x95\n\tDEVLINK_ATTR_PORT_CONTROLLER_NUMBER                = 0x96\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT           = 0x97\n\tDEVLINK_ATTR_FLASH_UPDATE_OVERWRITE_MASK           = 0x98\n\tDEVLINK_ATTR_RELOAD_ACTION                         = 0x99\n\tDEVLINK_ATTR_RELOAD_ACTIONS_PERFORMED              = 0x9a\n\tDEVLINK_ATTR_RELOAD_LIMITS                         = 0x9b\n\tDEVLINK_ATTR_DEV_STATS                             = 0x9c\n\tDEVLINK_ATTR_RELOAD_STATS                          = 0x9d\n\tDEVLINK_ATTR_RELOAD_STATS_ENTRY                    = 0x9e\n\tDEVLINK_ATTR_RELOAD_STATS_LIMIT                    = 0x9f\n\tDEVLINK_ATTR_RELOAD_STATS_VALUE                    = 0xa0\n\tDEVLINK_ATTR_REMOTE_RELOAD_STATS                   = 0xa1\n\tDEVLINK_ATTR_RELOAD_ACTION_INFO                    = 0xa2\n\tDEVLINK_ATTR_RELOAD_ACTION_STATS                   = 0xa3\n\tDEVLINK_ATTR_PORT_PCI_SF_NUMBER                    = 0xa4\n\tDEVLINK_ATTR_RATE_TYPE                             = 0xa5\n\tDEVLINK_ATTR_RATE_TX_SHARE                         = 0xa6\n\tDEVLINK_ATTR_RATE_TX_MAX                           = 0xa7\n\tDEVLINK_ATTR_RATE_NODE_NAME                        = 0xa8\n\tDEVLINK_ATTR_RATE_PARENT_NODE_NAME                 = 0xa9\n\tDEVLINK_ATTR_REGION_MAX_SNAPSHOTS                  = 0xaa\n\tDEVLINK_ATTR_LINECARD_INDEX                        = 0xab\n\tDEVLINK_ATTR_LINECARD_STATE                        = 0xac\n\tDEVLINK_ATTR_LINECARD_TYPE                         = 0xad\n\tDEVLINK_ATTR_LINECARD_SUPPORTED_TYPES              = 0xae\n\tDEVLINK_ATTR_NESTED_DEVLINK                        = 0xaf\n\tDEVLINK_ATTR_SELFTESTS                             = 0xb0\n\tDEVLINK_ATTR_MAX                                   = 0xb3\n\tDEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE              = 0x0\n\tDEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX           = 0x1\n\tDEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT               = 0x0\n\tDEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY             = 0x0\n\tDEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC               = 0x0\n\tDEVLINK_DPIPE_FIELD_IPV4_DST_IP                    = 0x0\n\tDEVLINK_DPIPE_FIELD_IPV6_DST_IP                    = 0x0\n\tDEVLINK_DPIPE_HEADER_ETHERNET                      = 0x0\n\tDEVLINK_DPIPE_HEADER_IPV4                          = 0x1\n\tDEVLINK_DPIPE_HEADER_IPV6                          = 0x2\n\tDEVLINK_RESOURCE_UNIT_ENTRY                        = 0x0\n\tDEVLINK_PORT_FUNCTION_ATTR_UNSPEC                  = 0x0\n\tDEVLINK_PORT_FUNCTION_ATTR_HW_ADDR                 = 0x1\n\tDEVLINK_PORT_FN_ATTR_STATE                         = 0x2\n\tDEVLINK_PORT_FN_ATTR_OPSTATE                       = 0x3\n\tDEVLINK_PORT_FN_ATTR_CAPS                          = 0x4\n\tDEVLINK_PORT_FUNCTION_ATTR_MAX                     = 0x6\n)\n\ntype FsverityDigest struct {\n\tAlgorithm uint16\n\tSize      uint16\n}\n\ntype FsverityEnableArg struct {\n\tVersion        uint32\n\tHash_algorithm uint32\n\tBlock_size     uint32\n\tSalt_size      uint32\n\tSalt_ptr       uint64\n\tSig_size       uint32\n\t_              uint32\n\tSig_ptr        uint64\n\t_              [11]uint64\n}\n\ntype Nhmsg struct {\n\tFamily   uint8\n\tScope    uint8\n\tProtocol uint8\n\tResvd    uint8\n\tFlags    uint32\n}\n\nconst SizeofNhmsg = 0x8\n\ntype NexthopGrp struct {\n\tId     uint32\n\tWeight uint8\n\tHigh   uint8\n\tResvd2 uint16\n}\n\nconst SizeofNexthopGrp = 0x8\n\nconst (\n\tNHA_UNSPEC     = 0x0\n\tNHA_ID         = 0x1\n\tNHA_GROUP      = 0x2\n\tNHA_GROUP_TYPE = 0x3\n\tNHA_BLACKHOLE  = 0x4\n\tNHA_OIF        = 0x5\n\tNHA_GATEWAY    = 0x6\n\tNHA_ENCAP_TYPE = 0x7\n\tNHA_ENCAP      = 0x8\n\tNHA_GROUPS     = 0x9\n\tNHA_MASTER     = 0xa\n)\n\nconst (\n\tCAN_RAW_FILTER        = 0x1\n\tCAN_RAW_ERR_FILTER    = 0x2\n\tCAN_RAW_LOOPBACK      = 0x3\n\tCAN_RAW_RECV_OWN_MSGS = 0x4\n\tCAN_RAW_FD_FRAMES     = 0x5\n\tCAN_RAW_JOIN_FILTERS  = 0x6\n)\n\ntype WatchdogInfo struct {\n\tOptions  uint32\n\tVersion  uint32\n\tIdentity [32]uint8\n}\n\ntype PPSFData struct {\n\tInfo    PPSKInfo\n\tTimeout PPSKTime\n}\n\ntype PPSKParams struct {\n\tApi_version   int32\n\tMode          int32\n\tAssert_off_tu PPSKTime\n\tClear_off_tu  PPSKTime\n}\n\ntype PPSKTime struct {\n\tSec   int64\n\tNsec  int32\n\tFlags uint32\n}\n\nconst (\n\tLWTUNNEL_ENCAP_NONE       = 0x0\n\tLWTUNNEL_ENCAP_MPLS       = 0x1\n\tLWTUNNEL_ENCAP_IP         = 0x2\n\tLWTUNNEL_ENCAP_ILA        = 0x3\n\tLWTUNNEL_ENCAP_IP6        = 0x4\n\tLWTUNNEL_ENCAP_SEG6       = 0x5\n\tLWTUNNEL_ENCAP_BPF        = 0x6\n\tLWTUNNEL_ENCAP_SEG6_LOCAL = 0x7\n\tLWTUNNEL_ENCAP_RPL        = 0x8\n\tLWTUNNEL_ENCAP_IOAM6      = 0x9\n\tLWTUNNEL_ENCAP_XFRM       = 0xa\n\tLWTUNNEL_ENCAP_MAX        = 0xa\n\n\tMPLS_IPTUNNEL_UNSPEC = 0x0\n\tMPLS_IPTUNNEL_DST    = 0x1\n\tMPLS_IPTUNNEL_TTL    = 0x2\n\tMPLS_IPTUNNEL_MAX    = 0x2\n)\n\nconst (\n\tETHTOOL_ID_UNSPEC                                                       = 0x0\n\tETHTOOL_RX_COPYBREAK                                                    = 0x1\n\tETHTOOL_TX_COPYBREAK                                                    = 0x2\n\tETHTOOL_PFC_PREVENTION_TOUT                                             = 0x3\n\tETHTOOL_TUNABLE_UNSPEC                                                  = 0x0\n\tETHTOOL_TUNABLE_U8                                                      = 0x1\n\tETHTOOL_TUNABLE_U16                                                     = 0x2\n\tETHTOOL_TUNABLE_U32                                                     = 0x3\n\tETHTOOL_TUNABLE_U64                                                     = 0x4\n\tETHTOOL_TUNABLE_STRING                                                  = 0x5\n\tETHTOOL_TUNABLE_S8                                                      = 0x6\n\tETHTOOL_TUNABLE_S16                                                     = 0x7\n\tETHTOOL_TUNABLE_S32                                                     = 0x8\n\tETHTOOL_TUNABLE_S64                                                     = 0x9\n\tETHTOOL_PHY_ID_UNSPEC                                                   = 0x0\n\tETHTOOL_PHY_DOWNSHIFT                                                   = 0x1\n\tETHTOOL_PHY_FAST_LINK_DOWN                                              = 0x2\n\tETHTOOL_PHY_EDPD                                                        = 0x3\n\tETHTOOL_LINK_EXT_STATE_AUTONEG                                          = 0x0\n\tETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE                            = 0x1\n\tETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH                            = 0x2\n\tETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY                             = 0x3\n\tETHTOOL_LINK_EXT_STATE_NO_CABLE                                         = 0x4\n\tETHTOOL_LINK_EXT_STATE_CABLE_ISSUE                                      = 0x5\n\tETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE                                     = 0x6\n\tETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE                              = 0x7\n\tETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED                            = 0x8\n\tETHTOOL_LINK_EXT_STATE_OVERHEAT                                         = 0x9\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED                        = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED                           = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED                  = 0x3\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE             = 0x4\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE               = 0x5\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD                                     = 0x6\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED                 = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT                    = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY = 0x3\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT                               = 0x4\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK            = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK               = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS              = 0x3\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED                      = 0x4\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED                      = 0x5\n\tETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS           = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE                          = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE                          = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE                         = 0x2\n\tETHTOOL_FLASH_ALL_REGIONS                                               = 0x0\n\tETHTOOL_F_UNSUPPORTED__BIT                                              = 0x0\n\tETHTOOL_F_WISH__BIT                                                     = 0x1\n\tETHTOOL_F_COMPAT__BIT                                                   = 0x2\n\tETHTOOL_FEC_NONE_BIT                                                    = 0x0\n\tETHTOOL_FEC_AUTO_BIT                                                    = 0x1\n\tETHTOOL_FEC_OFF_BIT                                                     = 0x2\n\tETHTOOL_FEC_RS_BIT                                                      = 0x3\n\tETHTOOL_FEC_BASER_BIT                                                   = 0x4\n\tETHTOOL_FEC_LLRS_BIT                                                    = 0x5\n\tETHTOOL_LINK_MODE_10baseT_Half_BIT                                      = 0x0\n\tETHTOOL_LINK_MODE_10baseT_Full_BIT                                      = 0x1\n\tETHTOOL_LINK_MODE_100baseT_Half_BIT                                     = 0x2\n\tETHTOOL_LINK_MODE_100baseT_Full_BIT                                     = 0x3\n\tETHTOOL_LINK_MODE_1000baseT_Half_BIT                                    = 0x4\n\tETHTOOL_LINK_MODE_1000baseT_Full_BIT                                    = 0x5\n\tETHTOOL_LINK_MODE_Autoneg_BIT                                           = 0x6\n\tETHTOOL_LINK_MODE_TP_BIT                                                = 0x7\n\tETHTOOL_LINK_MODE_AUI_BIT                                               = 0x8\n\tETHTOOL_LINK_MODE_MII_BIT                                               = 0x9\n\tETHTOOL_LINK_MODE_FIBRE_BIT                                             = 0xa\n\tETHTOOL_LINK_MODE_BNC_BIT                                               = 0xb\n\tETHTOOL_LINK_MODE_10000baseT_Full_BIT                                   = 0xc\n\tETHTOOL_LINK_MODE_Pause_BIT                                             = 0xd\n\tETHTOOL_LINK_MODE_Asym_Pause_BIT                                        = 0xe\n\tETHTOOL_LINK_MODE_2500baseX_Full_BIT                                    = 0xf\n\tETHTOOL_LINK_MODE_Backplane_BIT                                         = 0x10\n\tETHTOOL_LINK_MODE_1000baseKX_Full_BIT                                   = 0x11\n\tETHTOOL_LINK_MODE_10000baseKX4_Full_BIT                                 = 0x12\n\tETHTOOL_LINK_MODE_10000baseKR_Full_BIT                                  = 0x13\n\tETHTOOL_LINK_MODE_10000baseR_FEC_BIT                                    = 0x14\n\tETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT                                = 0x15\n\tETHTOOL_LINK_MODE_20000baseKR2_Full_BIT                                 = 0x16\n\tETHTOOL_LINK_MODE_40000baseKR4_Full_BIT                                 = 0x17\n\tETHTOOL_LINK_MODE_40000baseCR4_Full_BIT                                 = 0x18\n\tETHTOOL_LINK_MODE_40000baseSR4_Full_BIT                                 = 0x19\n\tETHTOOL_LINK_MODE_40000baseLR4_Full_BIT                                 = 0x1a\n\tETHTOOL_LINK_MODE_56000baseKR4_Full_BIT                                 = 0x1b\n\tETHTOOL_LINK_MODE_56000baseCR4_Full_BIT                                 = 0x1c\n\tETHTOOL_LINK_MODE_56000baseSR4_Full_BIT                                 = 0x1d\n\tETHTOOL_LINK_MODE_56000baseLR4_Full_BIT                                 = 0x1e\n\tETHTOOL_LINK_MODE_25000baseCR_Full_BIT                                  = 0x1f\n\tETHTOOL_LINK_MODE_25000baseKR_Full_BIT                                  = 0x20\n\tETHTOOL_LINK_MODE_25000baseSR_Full_BIT                                  = 0x21\n\tETHTOOL_LINK_MODE_50000baseCR2_Full_BIT                                 = 0x22\n\tETHTOOL_LINK_MODE_50000baseKR2_Full_BIT                                 = 0x23\n\tETHTOOL_LINK_MODE_100000baseKR4_Full_BIT                                = 0x24\n\tETHTOOL_LINK_MODE_100000baseSR4_Full_BIT                                = 0x25\n\tETHTOOL_LINK_MODE_100000baseCR4_Full_BIT                                = 0x26\n\tETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT                            = 0x27\n\tETHTOOL_LINK_MODE_50000baseSR2_Full_BIT                                 = 0x28\n\tETHTOOL_LINK_MODE_1000baseX_Full_BIT                                    = 0x29\n\tETHTOOL_LINK_MODE_10000baseCR_Full_BIT                                  = 0x2a\n\tETHTOOL_LINK_MODE_10000baseSR_Full_BIT                                  = 0x2b\n\tETHTOOL_LINK_MODE_10000baseLR_Full_BIT                                  = 0x2c\n\tETHTOOL_LINK_MODE_10000baseLRM_Full_BIT                                 = 0x2d\n\tETHTOOL_LINK_MODE_10000baseER_Full_BIT                                  = 0x2e\n\tETHTOOL_LINK_MODE_2500baseT_Full_BIT                                    = 0x2f\n\tETHTOOL_LINK_MODE_5000baseT_Full_BIT                                    = 0x30\n\tETHTOOL_LINK_MODE_FEC_NONE_BIT                                          = 0x31\n\tETHTOOL_LINK_MODE_FEC_RS_BIT                                            = 0x32\n\tETHTOOL_LINK_MODE_FEC_BASER_BIT                                         = 0x33\n\tETHTOOL_LINK_MODE_50000baseKR_Full_BIT                                  = 0x34\n\tETHTOOL_LINK_MODE_50000baseSR_Full_BIT                                  = 0x35\n\tETHTOOL_LINK_MODE_50000baseCR_Full_BIT                                  = 0x36\n\tETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT                            = 0x37\n\tETHTOOL_LINK_MODE_50000baseDR_Full_BIT                                  = 0x38\n\tETHTOOL_LINK_MODE_100000baseKR2_Full_BIT                                = 0x39\n\tETHTOOL_LINK_MODE_100000baseSR2_Full_BIT                                = 0x3a\n\tETHTOOL_LINK_MODE_100000baseCR2_Full_BIT                                = 0x3b\n\tETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT                        = 0x3c\n\tETHTOOL_LINK_MODE_100000baseDR2_Full_BIT                                = 0x3d\n\tETHTOOL_LINK_MODE_200000baseKR4_Full_BIT                                = 0x3e\n\tETHTOOL_LINK_MODE_200000baseSR4_Full_BIT                                = 0x3f\n\tETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT                        = 0x40\n\tETHTOOL_LINK_MODE_200000baseDR4_Full_BIT                                = 0x41\n\tETHTOOL_LINK_MODE_200000baseCR4_Full_BIT                                = 0x42\n\tETHTOOL_LINK_MODE_100baseT1_Full_BIT                                    = 0x43\n\tETHTOOL_LINK_MODE_1000baseT1_Full_BIT                                   = 0x44\n\tETHTOOL_LINK_MODE_400000baseKR8_Full_BIT                                = 0x45\n\tETHTOOL_LINK_MODE_400000baseSR8_Full_BIT                                = 0x46\n\tETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT                        = 0x47\n\tETHTOOL_LINK_MODE_400000baseDR8_Full_BIT                                = 0x48\n\tETHTOOL_LINK_MODE_400000baseCR8_Full_BIT                                = 0x49\n\tETHTOOL_LINK_MODE_FEC_LLRS_BIT                                          = 0x4a\n\tETHTOOL_LINK_MODE_100000baseKR_Full_BIT                                 = 0x4b\n\tETHTOOL_LINK_MODE_100000baseSR_Full_BIT                                 = 0x4c\n\tETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT                           = 0x4d\n\tETHTOOL_LINK_MODE_100000baseCR_Full_BIT                                 = 0x4e\n\tETHTOOL_LINK_MODE_100000baseDR_Full_BIT                                 = 0x4f\n\tETHTOOL_LINK_MODE_200000baseKR2_Full_BIT                                = 0x50\n\tETHTOOL_LINK_MODE_200000baseSR2_Full_BIT                                = 0x51\n\tETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT                        = 0x52\n\tETHTOOL_LINK_MODE_200000baseDR2_Full_BIT                                = 0x53\n\tETHTOOL_LINK_MODE_200000baseCR2_Full_BIT                                = 0x54\n\tETHTOOL_LINK_MODE_400000baseKR4_Full_BIT                                = 0x55\n\tETHTOOL_LINK_MODE_400000baseSR4_Full_BIT                                = 0x56\n\tETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT                        = 0x57\n\tETHTOOL_LINK_MODE_400000baseDR4_Full_BIT                                = 0x58\n\tETHTOOL_LINK_MODE_400000baseCR4_Full_BIT                                = 0x59\n\tETHTOOL_LINK_MODE_100baseFX_Half_BIT                                    = 0x5a\n\tETHTOOL_LINK_MODE_100baseFX_Full_BIT                                    = 0x5b\n\n\tETHTOOL_MSG_USER_NONE                     = 0x0\n\tETHTOOL_MSG_STRSET_GET                    = 0x1\n\tETHTOOL_MSG_LINKINFO_GET                  = 0x2\n\tETHTOOL_MSG_LINKINFO_SET                  = 0x3\n\tETHTOOL_MSG_LINKMODES_GET                 = 0x4\n\tETHTOOL_MSG_LINKMODES_SET                 = 0x5\n\tETHTOOL_MSG_LINKSTATE_GET                 = 0x6\n\tETHTOOL_MSG_DEBUG_GET                     = 0x7\n\tETHTOOL_MSG_DEBUG_SET                     = 0x8\n\tETHTOOL_MSG_WOL_GET                       = 0x9\n\tETHTOOL_MSG_WOL_SET                       = 0xa\n\tETHTOOL_MSG_FEATURES_GET                  = 0xb\n\tETHTOOL_MSG_FEATURES_SET                  = 0xc\n\tETHTOOL_MSG_PRIVFLAGS_GET                 = 0xd\n\tETHTOOL_MSG_PRIVFLAGS_SET                 = 0xe\n\tETHTOOL_MSG_RINGS_GET                     = 0xf\n\tETHTOOL_MSG_RINGS_SET                     = 0x10\n\tETHTOOL_MSG_CHANNELS_GET                  = 0x11\n\tETHTOOL_MSG_CHANNELS_SET                  = 0x12\n\tETHTOOL_MSG_COALESCE_GET                  = 0x13\n\tETHTOOL_MSG_COALESCE_SET                  = 0x14\n\tETHTOOL_MSG_PAUSE_GET                     = 0x15\n\tETHTOOL_MSG_PAUSE_SET                     = 0x16\n\tETHTOOL_MSG_EEE_GET                       = 0x17\n\tETHTOOL_MSG_EEE_SET                       = 0x18\n\tETHTOOL_MSG_TSINFO_GET                    = 0x19\n\tETHTOOL_MSG_CABLE_TEST_ACT                = 0x1a\n\tETHTOOL_MSG_CABLE_TEST_TDR_ACT            = 0x1b\n\tETHTOOL_MSG_TUNNEL_INFO_GET               = 0x1c\n\tETHTOOL_MSG_FEC_GET                       = 0x1d\n\tETHTOOL_MSG_FEC_SET                       = 0x1e\n\tETHTOOL_MSG_MODULE_EEPROM_GET             = 0x1f\n\tETHTOOL_MSG_STATS_GET                     = 0x20\n\tETHTOOL_MSG_PHC_VCLOCKS_GET               = 0x21\n\tETHTOOL_MSG_MODULE_GET                    = 0x22\n\tETHTOOL_MSG_MODULE_SET                    = 0x23\n\tETHTOOL_MSG_PSE_GET                       = 0x24\n\tETHTOOL_MSG_PSE_SET                       = 0x25\n\tETHTOOL_MSG_RSS_GET                       = 0x26\n\tETHTOOL_MSG_PLCA_GET_CFG                  = 0x27\n\tETHTOOL_MSG_PLCA_SET_CFG                  = 0x28\n\tETHTOOL_MSG_PLCA_GET_STATUS               = 0x29\n\tETHTOOL_MSG_MM_GET                        = 0x2a\n\tETHTOOL_MSG_MM_SET                        = 0x2b\n\tETHTOOL_MSG_MODULE_FW_FLASH_ACT           = 0x2c\n\tETHTOOL_MSG_PHY_GET                       = 0x2d\n\tETHTOOL_MSG_TSCONFIG_GET                  = 0x2e\n\tETHTOOL_MSG_TSCONFIG_SET                  = 0x2f\n\tETHTOOL_MSG_USER_MAX                      = 0x2f\n\tETHTOOL_MSG_KERNEL_NONE                   = 0x0\n\tETHTOOL_MSG_STRSET_GET_REPLY              = 0x1\n\tETHTOOL_MSG_LINKINFO_GET_REPLY            = 0x2\n\tETHTOOL_MSG_LINKINFO_NTF                  = 0x3\n\tETHTOOL_MSG_LINKMODES_GET_REPLY           = 0x4\n\tETHTOOL_MSG_LINKMODES_NTF                 = 0x5\n\tETHTOOL_MSG_LINKSTATE_GET_REPLY           = 0x6\n\tETHTOOL_MSG_DEBUG_GET_REPLY               = 0x7\n\tETHTOOL_MSG_DEBUG_NTF                     = 0x8\n\tETHTOOL_MSG_WOL_GET_REPLY                 = 0x9\n\tETHTOOL_MSG_WOL_NTF                       = 0xa\n\tETHTOOL_MSG_FEATURES_GET_REPLY            = 0xb\n\tETHTOOL_MSG_FEATURES_SET_REPLY            = 0xc\n\tETHTOOL_MSG_FEATURES_NTF                  = 0xd\n\tETHTOOL_MSG_PRIVFLAGS_GET_REPLY           = 0xe\n\tETHTOOL_MSG_PRIVFLAGS_NTF                 = 0xf\n\tETHTOOL_MSG_RINGS_GET_REPLY               = 0x10\n\tETHTOOL_MSG_RINGS_NTF                     = 0x11\n\tETHTOOL_MSG_CHANNELS_GET_REPLY            = 0x12\n\tETHTOOL_MSG_CHANNELS_NTF                  = 0x13\n\tETHTOOL_MSG_COALESCE_GET_REPLY            = 0x14\n\tETHTOOL_MSG_COALESCE_NTF                  = 0x15\n\tETHTOOL_MSG_PAUSE_GET_REPLY               = 0x16\n\tETHTOOL_MSG_PAUSE_NTF                     = 0x17\n\tETHTOOL_MSG_EEE_GET_REPLY                 = 0x18\n\tETHTOOL_MSG_EEE_NTF                       = 0x19\n\tETHTOOL_MSG_TSINFO_GET_REPLY              = 0x1a\n\tETHTOOL_MSG_CABLE_TEST_NTF                = 0x1b\n\tETHTOOL_MSG_CABLE_TEST_TDR_NTF            = 0x1c\n\tETHTOOL_MSG_TUNNEL_INFO_GET_REPLY         = 0x1d\n\tETHTOOL_MSG_FEC_GET_REPLY                 = 0x1e\n\tETHTOOL_MSG_FEC_NTF                       = 0x1f\n\tETHTOOL_MSG_MODULE_EEPROM_GET_REPLY       = 0x20\n\tETHTOOL_MSG_STATS_GET_REPLY               = 0x21\n\tETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY         = 0x22\n\tETHTOOL_MSG_MODULE_GET_REPLY              = 0x23\n\tETHTOOL_MSG_MODULE_NTF                    = 0x24\n\tETHTOOL_MSG_PSE_GET_REPLY                 = 0x25\n\tETHTOOL_MSG_RSS_GET_REPLY                 = 0x26\n\tETHTOOL_MSG_PLCA_GET_CFG_REPLY            = 0x27\n\tETHTOOL_MSG_PLCA_GET_STATUS_REPLY         = 0x28\n\tETHTOOL_MSG_PLCA_NTF                      = 0x29\n\tETHTOOL_MSG_MM_GET_REPLY                  = 0x2a\n\tETHTOOL_MSG_MM_NTF                        = 0x2b\n\tETHTOOL_MSG_MODULE_FW_FLASH_NTF           = 0x2c\n\tETHTOOL_MSG_PHY_GET_REPLY                 = 0x2d\n\tETHTOOL_MSG_PHY_NTF                       = 0x2e\n\tETHTOOL_MSG_TSCONFIG_GET_REPLY            = 0x2f\n\tETHTOOL_MSG_TSCONFIG_SET_REPLY            = 0x30\n\tETHTOOL_MSG_KERNEL_MAX                    = 0x30\n\tETHTOOL_FLAG_COMPACT_BITSETS              = 0x1\n\tETHTOOL_FLAG_OMIT_REPLY                   = 0x2\n\tETHTOOL_FLAG_STATS                        = 0x4\n\tETHTOOL_A_HEADER_UNSPEC                   = 0x0\n\tETHTOOL_A_HEADER_DEV_INDEX                = 0x1\n\tETHTOOL_A_HEADER_DEV_NAME                 = 0x2\n\tETHTOOL_A_HEADER_FLAGS                    = 0x3\n\tETHTOOL_A_HEADER_MAX                      = 0x4\n\tETHTOOL_A_BITSET_BIT_UNSPEC               = 0x0\n\tETHTOOL_A_BITSET_BIT_INDEX                = 0x1\n\tETHTOOL_A_BITSET_BIT_NAME                 = 0x2\n\tETHTOOL_A_BITSET_BIT_VALUE                = 0x3\n\tETHTOOL_A_BITSET_BIT_MAX                  = 0x3\n\tETHTOOL_A_BITSET_BITS_UNSPEC              = 0x0\n\tETHTOOL_A_BITSET_BITS_BIT                 = 0x1\n\tETHTOOL_A_BITSET_BITS_MAX                 = 0x1\n\tETHTOOL_A_BITSET_UNSPEC                   = 0x0\n\tETHTOOL_A_BITSET_NOMASK                   = 0x1\n\tETHTOOL_A_BITSET_SIZE                     = 0x2\n\tETHTOOL_A_BITSET_BITS                     = 0x3\n\tETHTOOL_A_BITSET_VALUE                    = 0x4\n\tETHTOOL_A_BITSET_MASK                     = 0x5\n\tETHTOOL_A_BITSET_MAX                      = 0x5\n\tETHTOOL_A_STRING_UNSPEC                   = 0x0\n\tETHTOOL_A_STRING_INDEX                    = 0x1\n\tETHTOOL_A_STRING_VALUE                    = 0x2\n\tETHTOOL_A_STRING_MAX                      = 0x2\n\tETHTOOL_A_STRINGS_UNSPEC                  = 0x0\n\tETHTOOL_A_STRINGS_STRING                  = 0x1\n\tETHTOOL_A_STRINGS_MAX                     = 0x1\n\tETHTOOL_A_STRINGSET_UNSPEC                = 0x0\n\tETHTOOL_A_STRINGSET_ID                    = 0x1\n\tETHTOOL_A_STRINGSET_COUNT                 = 0x2\n\tETHTOOL_A_STRINGSET_STRINGS               = 0x3\n\tETHTOOL_A_STRINGSET_MAX                   = 0x3\n\tETHTOOL_A_STRINGSETS_UNSPEC               = 0x0\n\tETHTOOL_A_STRINGSETS_STRINGSET            = 0x1\n\tETHTOOL_A_STRINGSETS_MAX                  = 0x1\n\tETHTOOL_A_STRSET_UNSPEC                   = 0x0\n\tETHTOOL_A_STRSET_HEADER                   = 0x1\n\tETHTOOL_A_STRSET_STRINGSETS               = 0x2\n\tETHTOOL_A_STRSET_COUNTS_ONLY              = 0x3\n\tETHTOOL_A_STRSET_MAX                      = 0x3\n\tETHTOOL_A_LINKINFO_UNSPEC                 = 0x0\n\tETHTOOL_A_LINKINFO_HEADER                 = 0x1\n\tETHTOOL_A_LINKINFO_PORT                   = 0x2\n\tETHTOOL_A_LINKINFO_PHYADDR                = 0x3\n\tETHTOOL_A_LINKINFO_TP_MDIX                = 0x4\n\tETHTOOL_A_LINKINFO_TP_MDIX_CTRL           = 0x5\n\tETHTOOL_A_LINKINFO_TRANSCEIVER            = 0x6\n\tETHTOOL_A_LINKINFO_MAX                    = 0x6\n\tETHTOOL_A_LINKMODES_UNSPEC                = 0x0\n\tETHTOOL_A_LINKMODES_HEADER                = 0x1\n\tETHTOOL_A_LINKMODES_AUTONEG               = 0x2\n\tETHTOOL_A_LINKMODES_OURS                  = 0x3\n\tETHTOOL_A_LINKMODES_PEER                  = 0x4\n\tETHTOOL_A_LINKMODES_SPEED                 = 0x5\n\tETHTOOL_A_LINKMODES_DUPLEX                = 0x6\n\tETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG      = 0x7\n\tETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE    = 0x8\n\tETHTOOL_A_LINKMODES_LANES                 = 0x9\n\tETHTOOL_A_LINKMODES_RATE_MATCHING         = 0xa\n\tETHTOOL_A_LINKMODES_MAX                   = 0xa\n\tETHTOOL_A_LINKSTATE_UNSPEC                = 0x0\n\tETHTOOL_A_LINKSTATE_HEADER                = 0x1\n\tETHTOOL_A_LINKSTATE_LINK                  = 0x2\n\tETHTOOL_A_LINKSTATE_SQI                   = 0x3\n\tETHTOOL_A_LINKSTATE_SQI_MAX               = 0x4\n\tETHTOOL_A_LINKSTATE_EXT_STATE             = 0x5\n\tETHTOOL_A_LINKSTATE_EXT_SUBSTATE          = 0x6\n\tETHTOOL_A_LINKSTATE_EXT_DOWN_CNT          = 0x7\n\tETHTOOL_A_LINKSTATE_MAX                   = 0x7\n\tETHTOOL_A_DEBUG_UNSPEC                    = 0x0\n\tETHTOOL_A_DEBUG_HEADER                    = 0x1\n\tETHTOOL_A_DEBUG_MSGMASK                   = 0x2\n\tETHTOOL_A_DEBUG_MAX                       = 0x2\n\tETHTOOL_A_WOL_UNSPEC                      = 0x0\n\tETHTOOL_A_WOL_HEADER                      = 0x1\n\tETHTOOL_A_WOL_MODES                       = 0x2\n\tETHTOOL_A_WOL_SOPASS                      = 0x3\n\tETHTOOL_A_WOL_MAX                         = 0x3\n\tETHTOOL_A_FEATURES_UNSPEC                 = 0x0\n\tETHTOOL_A_FEATURES_HEADER                 = 0x1\n\tETHTOOL_A_FEATURES_HW                     = 0x2\n\tETHTOOL_A_FEATURES_WANTED                 = 0x3\n\tETHTOOL_A_FEATURES_ACTIVE                 = 0x4\n\tETHTOOL_A_FEATURES_NOCHANGE               = 0x5\n\tETHTOOL_A_FEATURES_MAX                    = 0x5\n\tETHTOOL_A_PRIVFLAGS_UNSPEC                = 0x0\n\tETHTOOL_A_PRIVFLAGS_HEADER                = 0x1\n\tETHTOOL_A_PRIVFLAGS_FLAGS                 = 0x2\n\tETHTOOL_A_PRIVFLAGS_MAX                   = 0x2\n\tETHTOOL_A_RINGS_UNSPEC                    = 0x0\n\tETHTOOL_A_RINGS_HEADER                    = 0x1\n\tETHTOOL_A_RINGS_RX_MAX                    = 0x2\n\tETHTOOL_A_RINGS_RX_MINI_MAX               = 0x3\n\tETHTOOL_A_RINGS_RX_JUMBO_MAX              = 0x4\n\tETHTOOL_A_RINGS_TX_MAX                    = 0x5\n\tETHTOOL_A_RINGS_RX                        = 0x6\n\tETHTOOL_A_RINGS_RX_MINI                   = 0x7\n\tETHTOOL_A_RINGS_RX_JUMBO                  = 0x8\n\tETHTOOL_A_RINGS_TX                        = 0x9\n\tETHTOOL_A_RINGS_RX_BUF_LEN                = 0xa\n\tETHTOOL_A_RINGS_TCP_DATA_SPLIT            = 0xb\n\tETHTOOL_A_RINGS_CQE_SIZE                  = 0xc\n\tETHTOOL_A_RINGS_TX_PUSH                   = 0xd\n\tETHTOOL_A_RINGS_RX_PUSH                   = 0xe\n\tETHTOOL_A_RINGS_TX_PUSH_BUF_LEN           = 0xf\n\tETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX       = 0x10\n\tETHTOOL_A_RINGS_HDS_THRESH                = 0x11\n\tETHTOOL_A_RINGS_HDS_THRESH_MAX            = 0x12\n\tETHTOOL_A_RINGS_MAX                       = 0x12\n\tETHTOOL_A_CHANNELS_UNSPEC                 = 0x0\n\tETHTOOL_A_CHANNELS_HEADER                 = 0x1\n\tETHTOOL_A_CHANNELS_RX_MAX                 = 0x2\n\tETHTOOL_A_CHANNELS_TX_MAX                 = 0x3\n\tETHTOOL_A_CHANNELS_OTHER_MAX              = 0x4\n\tETHTOOL_A_CHANNELS_COMBINED_MAX           = 0x5\n\tETHTOOL_A_CHANNELS_RX_COUNT               = 0x6\n\tETHTOOL_A_CHANNELS_TX_COUNT               = 0x7\n\tETHTOOL_A_CHANNELS_OTHER_COUNT            = 0x8\n\tETHTOOL_A_CHANNELS_COMBINED_COUNT         = 0x9\n\tETHTOOL_A_CHANNELS_MAX                    = 0x9\n\tETHTOOL_A_COALESCE_UNSPEC                 = 0x0\n\tETHTOOL_A_COALESCE_HEADER                 = 0x1\n\tETHTOOL_A_COALESCE_RX_USECS               = 0x2\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES          = 0x3\n\tETHTOOL_A_COALESCE_RX_USECS_IRQ           = 0x4\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ      = 0x5\n\tETHTOOL_A_COALESCE_TX_USECS               = 0x6\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES          = 0x7\n\tETHTOOL_A_COALESCE_TX_USECS_IRQ           = 0x8\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ      = 0x9\n\tETHTOOL_A_COALESCE_STATS_BLOCK_USECS      = 0xa\n\tETHTOOL_A_COALESCE_USE_ADAPTIVE_RX        = 0xb\n\tETHTOOL_A_COALESCE_USE_ADAPTIVE_TX        = 0xc\n\tETHTOOL_A_COALESCE_PKT_RATE_LOW           = 0xd\n\tETHTOOL_A_COALESCE_RX_USECS_LOW           = 0xe\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW      = 0xf\n\tETHTOOL_A_COALESCE_TX_USECS_LOW           = 0x10\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW      = 0x11\n\tETHTOOL_A_COALESCE_PKT_RATE_HIGH          = 0x12\n\tETHTOOL_A_COALESCE_RX_USECS_HIGH          = 0x13\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH     = 0x14\n\tETHTOOL_A_COALESCE_TX_USECS_HIGH          = 0x15\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH     = 0x16\n\tETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL   = 0x17\n\tETHTOOL_A_COALESCE_USE_CQE_MODE_TX        = 0x18\n\tETHTOOL_A_COALESCE_USE_CQE_MODE_RX        = 0x19\n\tETHTOOL_A_COALESCE_MAX                    = 0x1e\n\tETHTOOL_A_PAUSE_UNSPEC                    = 0x0\n\tETHTOOL_A_PAUSE_HEADER                    = 0x1\n\tETHTOOL_A_PAUSE_AUTONEG                   = 0x2\n\tETHTOOL_A_PAUSE_RX                        = 0x3\n\tETHTOOL_A_PAUSE_TX                        = 0x4\n\tETHTOOL_A_PAUSE_STATS                     = 0x5\n\tETHTOOL_A_PAUSE_MAX                       = 0x6\n\tETHTOOL_A_PAUSE_STAT_UNSPEC               = 0x0\n\tETHTOOL_A_PAUSE_STAT_PAD                  = 0x1\n\tETHTOOL_A_PAUSE_STAT_TX_FRAMES            = 0x2\n\tETHTOOL_A_PAUSE_STAT_RX_FRAMES            = 0x3\n\tETHTOOL_A_PAUSE_STAT_MAX                  = 0x3\n\tETHTOOL_A_EEE_UNSPEC                      = 0x0\n\tETHTOOL_A_EEE_HEADER                      = 0x1\n\tETHTOOL_A_EEE_MODES_OURS                  = 0x2\n\tETHTOOL_A_EEE_MODES_PEER                  = 0x3\n\tETHTOOL_A_EEE_ACTIVE                      = 0x4\n\tETHTOOL_A_EEE_ENABLED                     = 0x5\n\tETHTOOL_A_EEE_TX_LPI_ENABLED              = 0x6\n\tETHTOOL_A_EEE_TX_LPI_TIMER                = 0x7\n\tETHTOOL_A_EEE_MAX                         = 0x7\n\tETHTOOL_A_TSINFO_UNSPEC                   = 0x0\n\tETHTOOL_A_TSINFO_HEADER                   = 0x1\n\tETHTOOL_A_TSINFO_TIMESTAMPING             = 0x2\n\tETHTOOL_A_TSINFO_TX_TYPES                 = 0x3\n\tETHTOOL_A_TSINFO_RX_FILTERS               = 0x4\n\tETHTOOL_A_TSINFO_PHC_INDEX                = 0x5\n\tETHTOOL_A_TSINFO_STATS                    = 0x6\n\tETHTOOL_A_TSINFO_HWTSTAMP_PROVIDER        = 0x7\n\tETHTOOL_A_TSINFO_MAX                      = 0x9\n\tETHTOOL_A_CABLE_TEST_UNSPEC               = 0x0\n\tETHTOOL_A_CABLE_TEST_HEADER               = 0x1\n\tETHTOOL_A_CABLE_TEST_MAX                  = 0x1\n\tETHTOOL_A_CABLE_RESULT_CODE_UNSPEC        = 0x0\n\tETHTOOL_A_CABLE_RESULT_CODE_OK            = 0x1\n\tETHTOOL_A_CABLE_RESULT_CODE_OPEN          = 0x2\n\tETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT    = 0x3\n\tETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT   = 0x4\n\tETHTOOL_A_CABLE_PAIR_A                    = 0x0\n\tETHTOOL_A_CABLE_PAIR_B                    = 0x1\n\tETHTOOL_A_CABLE_PAIR_C                    = 0x2\n\tETHTOOL_A_CABLE_PAIR_D                    = 0x3\n\tETHTOOL_A_CABLE_RESULT_UNSPEC             = 0x0\n\tETHTOOL_A_CABLE_RESULT_PAIR               = 0x1\n\tETHTOOL_A_CABLE_RESULT_CODE               = 0x2\n\tETHTOOL_A_CABLE_RESULT_MAX                = 0x3\n\tETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC       = 0x0\n\tETHTOOL_A_CABLE_FAULT_LENGTH_PAIR         = 0x1\n\tETHTOOL_A_CABLE_FAULT_LENGTH_CM           = 0x2\n\tETHTOOL_A_CABLE_FAULT_LENGTH_MAX          = 0x3\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC    = 0x0\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED   = 0x1\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2\n\tETHTOOL_A_CABLE_NEST_UNSPEC               = 0x0\n\tETHTOOL_A_CABLE_NEST_RESULT               = 0x1\n\tETHTOOL_A_CABLE_NEST_FAULT_LENGTH         = 0x2\n\tETHTOOL_A_CABLE_NEST_MAX                  = 0x2\n\tETHTOOL_A_CABLE_TEST_NTF_UNSPEC           = 0x0\n\tETHTOOL_A_CABLE_TEST_NTF_HEADER           = 0x1\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS           = 0x2\n\tETHTOOL_A_CABLE_TEST_NTF_NEST             = 0x3\n\tETHTOOL_A_CABLE_TEST_NTF_MAX              = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC       = 0x0\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST        = 0x1\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_LAST         = 0x2\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_STEP         = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR         = 0x4\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_MAX          = 0x4\n\tETHTOOL_A_CABLE_TEST_TDR_UNSPEC           = 0x0\n\tETHTOOL_A_CABLE_TEST_TDR_HEADER           = 0x1\n\tETHTOOL_A_CABLE_TEST_TDR_CFG              = 0x2\n\tETHTOOL_A_CABLE_TEST_TDR_MAX              = 0x2\n\tETHTOOL_A_CABLE_AMPLITUDE_UNSPEC          = 0x0\n\tETHTOOL_A_CABLE_AMPLITUDE_PAIR            = 0x1\n\tETHTOOL_A_CABLE_AMPLITUDE_mV              = 0x2\n\tETHTOOL_A_CABLE_AMPLITUDE_MAX             = 0x2\n\tETHTOOL_A_CABLE_PULSE_UNSPEC              = 0x0\n\tETHTOOL_A_CABLE_PULSE_mV                  = 0x1\n\tETHTOOL_A_CABLE_PULSE_MAX                 = 0x1\n\tETHTOOL_A_CABLE_STEP_UNSPEC               = 0x0\n\tETHTOOL_A_CABLE_STEP_FIRST_DISTANCE       = 0x1\n\tETHTOOL_A_CABLE_STEP_LAST_DISTANCE        = 0x2\n\tETHTOOL_A_CABLE_STEP_STEP_DISTANCE        = 0x3\n\tETHTOOL_A_CABLE_STEP_MAX                  = 0x3\n\tETHTOOL_A_CABLE_TDR_NEST_UNSPEC           = 0x0\n\tETHTOOL_A_CABLE_TDR_NEST_STEP             = 0x1\n\tETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE        = 0x2\n\tETHTOOL_A_CABLE_TDR_NEST_PULSE            = 0x3\n\tETHTOOL_A_CABLE_TDR_NEST_MAX              = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC       = 0x0\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER       = 0x1\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS       = 0x2\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_NEST         = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_MAX          = 0x3\n\tETHTOOL_UDP_TUNNEL_TYPE_VXLAN             = 0x0\n\tETHTOOL_UDP_TUNNEL_TYPE_GENEVE            = 0x1\n\tETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE         = 0x2\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC         = 0x0\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_PORT           = 0x1\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE           = 0x2\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_MAX            = 0x2\n\tETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC         = 0x0\n\tETHTOOL_A_TUNNEL_UDP_TABLE_SIZE           = 0x1\n\tETHTOOL_A_TUNNEL_UDP_TABLE_TYPES          = 0x2\n\tETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY          = 0x3\n\tETHTOOL_A_TUNNEL_UDP_TABLE_MAX            = 0x3\n\tETHTOOL_A_TUNNEL_UDP_UNSPEC               = 0x0\n\tETHTOOL_A_TUNNEL_UDP_TABLE                = 0x1\n\tETHTOOL_A_TUNNEL_UDP_MAX                  = 0x1\n\tETHTOOL_A_TUNNEL_INFO_UNSPEC              = 0x0\n\tETHTOOL_A_TUNNEL_INFO_HEADER              = 0x1\n\tETHTOOL_A_TUNNEL_INFO_UDP_PORTS           = 0x2\n\tETHTOOL_A_TUNNEL_INFO_MAX                 = 0x2\n)\n\nconst (\n\tTCP_V4_FLOW    = 0x1\n\tUDP_V4_FLOW    = 0x2\n\tTCP_V6_FLOW    = 0x5\n\tUDP_V6_FLOW    = 0x6\n\tESP_V4_FLOW    = 0xa\n\tESP_V6_FLOW    = 0xc\n\tIP_USER_FLOW   = 0xd\n\tIPV6_USER_FLOW = 0xe\n\tIPV6_FLOW      = 0x11\n\tETHER_FLOW     = 0x12\n)\n\nconst SPEED_UNKNOWN = -0x1\n\ntype EthtoolDrvinfo struct {\n\tCmd          uint32\n\tDriver       [32]byte\n\tVersion      [32]byte\n\tFw_version   [32]byte\n\tBus_info     [32]byte\n\tErom_version [32]byte\n\tReserved2    [12]byte\n\tN_priv_flags uint32\n\tN_stats      uint32\n\tTestinfo_len uint32\n\tEedump_len   uint32\n\tRegdump_len  uint32\n}\n\ntype EthtoolTsInfo struct {\n\tCmd             uint32\n\tSo_timestamping uint32\n\tPhc_index       int32\n\tTx_types        uint32\n\tTx_reserved     [3]uint32\n\tRx_filters      uint32\n\tRx_reserved     [3]uint32\n}\n\ntype HwTstampConfig struct {\n\tFlags     int32\n\tTx_type   int32\n\tRx_filter int32\n}\n\nconst (\n\tHWTSTAMP_FILTER_NONE            = 0x0\n\tHWTSTAMP_FILTER_ALL             = 0x1\n\tHWTSTAMP_FILTER_SOME            = 0x2\n\tHWTSTAMP_FILTER_PTP_V1_L4_EVENT = 0x3\n\tHWTSTAMP_FILTER_PTP_V2_L4_EVENT = 0x6\n\tHWTSTAMP_FILTER_PTP_V2_L2_EVENT = 0x9\n\tHWTSTAMP_FILTER_PTP_V2_EVENT    = 0xc\n)\n\nconst (\n\tHWTSTAMP_TX_OFF          = 0x0\n\tHWTSTAMP_TX_ON           = 0x1\n\tHWTSTAMP_TX_ONESTEP_SYNC = 0x2\n)\n\ntype (\n\tPtpClockCaps struct {\n\t\tMax_adj            int32\n\t\tN_alarm            int32\n\t\tN_ext_ts           int32\n\t\tN_per_out          int32\n\t\tPps                int32\n\t\tN_pins             int32\n\t\tCross_timestamping int32\n\t\tAdjust_phase       int32\n\t\tMax_phase_adj      int32\n\t\tRsv                [11]int32\n\t}\n\tPtpClockTime struct {\n\t\tSec      int64\n\t\tNsec     uint32\n\t\tReserved uint32\n\t}\n\tPtpExttsEvent struct {\n\t\tT     PtpClockTime\n\t\tIndex uint32\n\t\tFlags uint32\n\t\tRsv   [2]uint32\n\t}\n\tPtpExttsRequest struct {\n\t\tIndex uint32\n\t\tFlags uint32\n\t\tRsv   [2]uint32\n\t}\n\tPtpPeroutRequest struct {\n\t\tStartOrPhase PtpClockTime\n\t\tPeriod       PtpClockTime\n\t\tIndex        uint32\n\t\tFlags        uint32\n\t\tOn           PtpClockTime\n\t}\n\tPtpPinDesc struct {\n\t\tName  [64]byte\n\t\tIndex uint32\n\t\tFunc  uint32\n\t\tChan  uint32\n\t\tRsv   [5]uint32\n\t}\n\tPtpSysOffset struct {\n\t\tSamples uint32\n\t\tRsv     [3]uint32\n\t\tTs      [51]PtpClockTime\n\t}\n\tPtpSysOffsetExtended struct {\n\t\tSamples uint32\n\t\tClockid int32\n\t\tRsv     [2]uint32\n\t\tTs      [25][3]PtpClockTime\n\t}\n\tPtpSysOffsetPrecise struct {\n\t\tDevice   PtpClockTime\n\t\tRealtime PtpClockTime\n\t\tMonoraw  PtpClockTime\n\t\tRsv      [4]uint32\n\t}\n)\n\nconst (\n\tPTP_PF_NONE    = 0x0\n\tPTP_PF_EXTTS   = 0x1\n\tPTP_PF_PEROUT  = 0x2\n\tPTP_PF_PHYSYNC = 0x3\n)\n\ntype (\n\tHIDRawReportDescriptor struct {\n\t\tSize  uint32\n\t\tValue [4096]uint8\n\t}\n\tHIDRawDevInfo struct {\n\t\tBustype uint32\n\t\tVendor  int16\n\t\tProduct int16\n\t}\n)\n\nconst (\n\tCLOSE_RANGE_UNSHARE = 0x2\n\tCLOSE_RANGE_CLOEXEC = 0x4\n)\n\nconst (\n\tNLMSGERR_ATTR_MSG    = 0x1\n\tNLMSGERR_ATTR_OFFS   = 0x2\n\tNLMSGERR_ATTR_COOKIE = 0x3\n)\n\ntype (\n\tEraseInfo struct {\n\t\tStart  uint32\n\t\tLength uint32\n\t}\n\tEraseInfo64 struct {\n\t\tStart  uint64\n\t\tLength uint64\n\t}\n\tMtdOobBuf struct {\n\t\tStart  uint32\n\t\tLength uint32\n\t\tPtr    *uint8\n\t}\n\tMtdOobBuf64 struct {\n\t\tStart  uint64\n\t\tPad    uint32\n\t\tLength uint32\n\t\tPtr    uint64\n\t}\n\tMtdWriteReq struct {\n\t\tStart  uint64\n\t\tLen    uint64\n\t\tOoblen uint64\n\t\tData   uint64\n\t\tOob    uint64\n\t\tMode   uint8\n\t\t_      [7]uint8\n\t}\n\tMtdInfo struct {\n\t\tType      uint8\n\t\tFlags     uint32\n\t\tSize      uint32\n\t\tErasesize uint32\n\t\tWritesize uint32\n\t\tOobsize   uint32\n\t\t_         uint64\n\t}\n\tRegionInfo struct {\n\t\tOffset      uint32\n\t\tErasesize   uint32\n\t\tNumblocks   uint32\n\t\tRegionindex uint32\n\t}\n\tOtpInfo struct {\n\t\tStart  uint32\n\t\tLength uint32\n\t\tLocked uint32\n\t}\n\tNandOobinfo struct {\n\t\tUseecc   uint32\n\t\tEccbytes uint32\n\t\tOobfree  [8][2]uint32\n\t\tEccpos   [32]uint32\n\t}\n\tNandOobfree struct {\n\t\tOffset uint32\n\t\tLength uint32\n\t}\n\tNandEcclayout struct {\n\t\tEccbytes uint32\n\t\tEccpos   [64]uint32\n\t\tOobavail uint32\n\t\tOobfree  [8]NandOobfree\n\t}\n\tMtdEccStats struct {\n\t\tCorrected uint32\n\t\tFailed    uint32\n\t\tBadblocks uint32\n\t\tBbtblocks uint32\n\t}\n)\n\nconst (\n\tMTD_OPS_PLACE_OOB = 0x0\n\tMTD_OPS_AUTO_OOB  = 0x1\n\tMTD_OPS_RAW       = 0x2\n)\n\nconst (\n\tMTD_FILE_MODE_NORMAL      = 0x0\n\tMTD_FILE_MODE_OTP_FACTORY = 0x1\n\tMTD_FILE_MODE_OTP_USER    = 0x2\n\tMTD_FILE_MODE_RAW         = 0x3\n)\n\nconst (\n\tNFC_CMD_UNSPEC                    = 0x0\n\tNFC_CMD_GET_DEVICE                = 0x1\n\tNFC_CMD_DEV_UP                    = 0x2\n\tNFC_CMD_DEV_DOWN                  = 0x3\n\tNFC_CMD_DEP_LINK_UP               = 0x4\n\tNFC_CMD_DEP_LINK_DOWN             = 0x5\n\tNFC_CMD_START_POLL                = 0x6\n\tNFC_CMD_STOP_POLL                 = 0x7\n\tNFC_CMD_GET_TARGET                = 0x8\n\tNFC_EVENT_TARGETS_FOUND           = 0x9\n\tNFC_EVENT_DEVICE_ADDED            = 0xa\n\tNFC_EVENT_DEVICE_REMOVED          = 0xb\n\tNFC_EVENT_TARGET_LOST             = 0xc\n\tNFC_EVENT_TM_ACTIVATED            = 0xd\n\tNFC_EVENT_TM_DEACTIVATED          = 0xe\n\tNFC_CMD_LLC_GET_PARAMS            = 0xf\n\tNFC_CMD_LLC_SET_PARAMS            = 0x10\n\tNFC_CMD_ENABLE_SE                 = 0x11\n\tNFC_CMD_DISABLE_SE                = 0x12\n\tNFC_CMD_LLC_SDREQ                 = 0x13\n\tNFC_EVENT_LLC_SDRES               = 0x14\n\tNFC_CMD_FW_DOWNLOAD               = 0x15\n\tNFC_EVENT_SE_ADDED                = 0x16\n\tNFC_EVENT_SE_REMOVED              = 0x17\n\tNFC_EVENT_SE_CONNECTIVITY         = 0x18\n\tNFC_EVENT_SE_TRANSACTION          = 0x19\n\tNFC_CMD_GET_SE                    = 0x1a\n\tNFC_CMD_SE_IO                     = 0x1b\n\tNFC_CMD_ACTIVATE_TARGET           = 0x1c\n\tNFC_CMD_VENDOR                    = 0x1d\n\tNFC_CMD_DEACTIVATE_TARGET         = 0x1e\n\tNFC_ATTR_UNSPEC                   = 0x0\n\tNFC_ATTR_DEVICE_INDEX             = 0x1\n\tNFC_ATTR_DEVICE_NAME              = 0x2\n\tNFC_ATTR_PROTOCOLS                = 0x3\n\tNFC_ATTR_TARGET_INDEX             = 0x4\n\tNFC_ATTR_TARGET_SENS_RES          = 0x5\n\tNFC_ATTR_TARGET_SEL_RES           = 0x6\n\tNFC_ATTR_TARGET_NFCID1            = 0x7\n\tNFC_ATTR_TARGET_SENSB_RES         = 0x8\n\tNFC_ATTR_TARGET_SENSF_RES         = 0x9\n\tNFC_ATTR_COMM_MODE                = 0xa\n\tNFC_ATTR_RF_MODE                  = 0xb\n\tNFC_ATTR_DEVICE_POWERED           = 0xc\n\tNFC_ATTR_IM_PROTOCOLS             = 0xd\n\tNFC_ATTR_TM_PROTOCOLS             = 0xe\n\tNFC_ATTR_LLC_PARAM_LTO            = 0xf\n\tNFC_ATTR_LLC_PARAM_RW             = 0x10\n\tNFC_ATTR_LLC_PARAM_MIUX           = 0x11\n\tNFC_ATTR_SE                       = 0x12\n\tNFC_ATTR_LLC_SDP                  = 0x13\n\tNFC_ATTR_FIRMWARE_NAME            = 0x14\n\tNFC_ATTR_SE_INDEX                 = 0x15\n\tNFC_ATTR_SE_TYPE                  = 0x16\n\tNFC_ATTR_SE_AID                   = 0x17\n\tNFC_ATTR_FIRMWARE_DOWNLOAD_STATUS = 0x18\n\tNFC_ATTR_SE_APDU                  = 0x19\n\tNFC_ATTR_TARGET_ISO15693_DSFID    = 0x1a\n\tNFC_ATTR_TARGET_ISO15693_UID      = 0x1b\n\tNFC_ATTR_SE_PARAMS                = 0x1c\n\tNFC_ATTR_VENDOR_ID                = 0x1d\n\tNFC_ATTR_VENDOR_SUBCMD            = 0x1e\n\tNFC_ATTR_VENDOR_DATA              = 0x1f\n\tNFC_SDP_ATTR_UNSPEC               = 0x0\n\tNFC_SDP_ATTR_URI                  = 0x1\n\tNFC_SDP_ATTR_SAP                  = 0x2\n)\n\ntype LandlockRulesetAttr struct {\n\tAccess_fs  uint64\n\tAccess_net uint64\n\tScoped     uint64\n}\n\ntype LandlockPathBeneathAttr struct {\n\tAllowed_access uint64\n\tParent_fd      int32\n}\n\nconst (\n\tLANDLOCK_RULE_PATH_BENEATH = 0x1\n)\n\nconst (\n\tIPC_CREAT   = 0x200\n\tIPC_EXCL    = 0x400\n\tIPC_NOWAIT  = 0x800\n\tIPC_PRIVATE = 0x0\n\n\tipc_64 = 0x100\n)\n\nconst (\n\tIPC_RMID = 0x0\n\tIPC_SET  = 0x1\n\tIPC_STAT = 0x2\n)\n\nconst (\n\tSHM_RDONLY = 0x1000\n\tSHM_RND    = 0x2000\n)\n\ntype MountAttr struct {\n\tAttr_set    uint64\n\tAttr_clr    uint64\n\tPropagation uint64\n\tUserns_fd   uint64\n}\n\nconst (\n\tWG_CMD_GET_DEVICE                      = 0x0\n\tWG_CMD_SET_DEVICE                      = 0x1\n\tWGDEVICE_F_REPLACE_PEERS               = 0x1\n\tWGDEVICE_A_UNSPEC                      = 0x0\n\tWGDEVICE_A_IFINDEX                     = 0x1\n\tWGDEVICE_A_IFNAME                      = 0x2\n\tWGDEVICE_A_PRIVATE_KEY                 = 0x3\n\tWGDEVICE_A_PUBLIC_KEY                  = 0x4\n\tWGDEVICE_A_FLAGS                       = 0x5\n\tWGDEVICE_A_LISTEN_PORT                 = 0x6\n\tWGDEVICE_A_FWMARK                      = 0x7\n\tWGDEVICE_A_PEERS                       = 0x8\n\tWGPEER_F_REMOVE_ME                     = 0x1\n\tWGPEER_F_REPLACE_ALLOWEDIPS            = 0x2\n\tWGPEER_F_UPDATE_ONLY                   = 0x4\n\tWGPEER_A_UNSPEC                        = 0x0\n\tWGPEER_A_PUBLIC_KEY                    = 0x1\n\tWGPEER_A_PRESHARED_KEY                 = 0x2\n\tWGPEER_A_FLAGS                         = 0x3\n\tWGPEER_A_ENDPOINT                      = 0x4\n\tWGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL = 0x5\n\tWGPEER_A_LAST_HANDSHAKE_TIME           = 0x6\n\tWGPEER_A_RX_BYTES                      = 0x7\n\tWGPEER_A_TX_BYTES                      = 0x8\n\tWGPEER_A_ALLOWEDIPS                    = 0x9\n\tWGPEER_A_PROTOCOL_VERSION              = 0xa\n\tWGALLOWEDIP_A_UNSPEC                   = 0x0\n\tWGALLOWEDIP_A_FAMILY                   = 0x1\n\tWGALLOWEDIP_A_IPADDR                   = 0x2\n\tWGALLOWEDIP_A_CIDR_MASK                = 0x3\n)\n\nconst (\n\tNL_ATTR_TYPE_INVALID      = 0x0\n\tNL_ATTR_TYPE_FLAG         = 0x1\n\tNL_ATTR_TYPE_U8           = 0x2\n\tNL_ATTR_TYPE_U16          = 0x3\n\tNL_ATTR_TYPE_U32          = 0x4\n\tNL_ATTR_TYPE_U64          = 0x5\n\tNL_ATTR_TYPE_S8           = 0x6\n\tNL_ATTR_TYPE_S16          = 0x7\n\tNL_ATTR_TYPE_S32          = 0x8\n\tNL_ATTR_TYPE_S64          = 0x9\n\tNL_ATTR_TYPE_BINARY       = 0xa\n\tNL_ATTR_TYPE_STRING       = 0xb\n\tNL_ATTR_TYPE_NUL_STRING   = 0xc\n\tNL_ATTR_TYPE_NESTED       = 0xd\n\tNL_ATTR_TYPE_NESTED_ARRAY = 0xe\n\tNL_ATTR_TYPE_BITFIELD32   = 0xf\n\n\tNL_POLICY_TYPE_ATTR_UNSPEC          = 0x0\n\tNL_POLICY_TYPE_ATTR_TYPE            = 0x1\n\tNL_POLICY_TYPE_ATTR_MIN_VALUE_S     = 0x2\n\tNL_POLICY_TYPE_ATTR_MAX_VALUE_S     = 0x3\n\tNL_POLICY_TYPE_ATTR_MIN_VALUE_U     = 0x4\n\tNL_POLICY_TYPE_ATTR_MAX_VALUE_U     = 0x5\n\tNL_POLICY_TYPE_ATTR_MIN_LENGTH      = 0x6\n\tNL_POLICY_TYPE_ATTR_MAX_LENGTH      = 0x7\n\tNL_POLICY_TYPE_ATTR_POLICY_IDX      = 0x8\n\tNL_POLICY_TYPE_ATTR_POLICY_MAXTYPE  = 0x9\n\tNL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 0xa\n\tNL_POLICY_TYPE_ATTR_PAD             = 0xb\n\tNL_POLICY_TYPE_ATTR_MASK            = 0xc\n\tNL_POLICY_TYPE_ATTR_MAX             = 0xc\n)\n\ntype CANBitTiming struct {\n\tBitrate      uint32\n\tSample_point uint32\n\tTq           uint32\n\tProp_seg     uint32\n\tPhase_seg1   uint32\n\tPhase_seg2   uint32\n\tSjw          uint32\n\tBrp          uint32\n}\n\ntype CANBitTimingConst struct {\n\tName      [16]uint8\n\tTseg1_min uint32\n\tTseg1_max uint32\n\tTseg2_min uint32\n\tTseg2_max uint32\n\tSjw_max   uint32\n\tBrp_min   uint32\n\tBrp_max   uint32\n\tBrp_inc   uint32\n}\n\ntype CANClock struct {\n\tFreq uint32\n}\n\ntype CANBusErrorCounters struct {\n\tTxerr uint16\n\tRxerr uint16\n}\n\ntype CANCtrlMode struct {\n\tMask  uint32\n\tFlags uint32\n}\n\ntype CANDeviceStats struct {\n\tBus_error        uint32\n\tError_warning    uint32\n\tError_passive    uint32\n\tBus_off          uint32\n\tArbitration_lost uint32\n\tRestarts         uint32\n}\n\nconst (\n\tCAN_STATE_ERROR_ACTIVE  = 0x0\n\tCAN_STATE_ERROR_WARNING = 0x1\n\tCAN_STATE_ERROR_PASSIVE = 0x2\n\tCAN_STATE_BUS_OFF       = 0x3\n\tCAN_STATE_STOPPED       = 0x4\n\tCAN_STATE_SLEEPING      = 0x5\n\tCAN_STATE_MAX           = 0x6\n)\n\nconst (\n\tIFLA_CAN_UNSPEC               = 0x0\n\tIFLA_CAN_BITTIMING            = 0x1\n\tIFLA_CAN_BITTIMING_CONST      = 0x2\n\tIFLA_CAN_CLOCK                = 0x3\n\tIFLA_CAN_STATE                = 0x4\n\tIFLA_CAN_CTRLMODE             = 0x5\n\tIFLA_CAN_RESTART_MS           = 0x6\n\tIFLA_CAN_RESTART              = 0x7\n\tIFLA_CAN_BERR_COUNTER         = 0x8\n\tIFLA_CAN_DATA_BITTIMING       = 0x9\n\tIFLA_CAN_DATA_BITTIMING_CONST = 0xa\n\tIFLA_CAN_TERMINATION          = 0xb\n\tIFLA_CAN_TERMINATION_CONST    = 0xc\n\tIFLA_CAN_BITRATE_CONST        = 0xd\n\tIFLA_CAN_DATA_BITRATE_CONST   = 0xe\n\tIFLA_CAN_BITRATE_MAX          = 0xf\n)\n\ntype KCMAttach struct {\n\tFd     int32\n\tBpf_fd int32\n}\n\ntype KCMUnattach struct {\n\tFd int32\n}\n\ntype KCMClone struct {\n\tFd int32\n}\n\nconst (\n\tNL80211_AC_BE                                           = 0x2\n\tNL80211_AC_BK                                           = 0x3\n\tNL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED                 = 0x0\n\tNL80211_ACL_POLICY_DENY_UNLESS_LISTED                   = 0x1\n\tNL80211_AC_VI                                           = 0x1\n\tNL80211_AC_VO                                           = 0x0\n\tNL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT               = 0x1\n\tNL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT            = 0x2\n\tNL80211_AP_SME_SA_QUERY_OFFLOAD                         = 0x1\n\tNL80211_ATTR_4ADDR                                      = 0x53\n\tNL80211_ATTR_ACK                                        = 0x5c\n\tNL80211_ATTR_ACK_SIGNAL                                 = 0x107\n\tNL80211_ATTR_ACL_POLICY                                 = 0xa5\n\tNL80211_ATTR_ADMITTED_TIME                              = 0xd4\n\tNL80211_ATTR_AIRTIME_WEIGHT                             = 0x112\n\tNL80211_ATTR_AKM_SUITES                                 = 0x4c\n\tNL80211_ATTR_AP_ISOLATE                                 = 0x60\n\tNL80211_ATTR_AP_SETTINGS_FLAGS                          = 0x135\n\tNL80211_ATTR_ASSOC_SPP_AMSDU                            = 0x14a\n\tNL80211_ATTR_AUTH_DATA                                  = 0x9c\n\tNL80211_ATTR_AUTH_TYPE                                  = 0x35\n\tNL80211_ATTR_BANDS                                      = 0xef\n\tNL80211_ATTR_BEACON_HEAD                                = 0xe\n\tNL80211_ATTR_BEACON_INTERVAL                            = 0xc\n\tNL80211_ATTR_BEACON_TAIL                                = 0xf\n\tNL80211_ATTR_BG_SCAN_PERIOD                             = 0x98\n\tNL80211_ATTR_BSS_BASIC_RATES                            = 0x24\n\tNL80211_ATTR_BSS                                        = 0x2f\n\tNL80211_ATTR_BSS_CTS_PROT                               = 0x1c\n\tNL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA                  = 0x147\n\tNL80211_ATTR_BSS_HT_OPMODE                              = 0x6d\n\tNL80211_ATTR_BSSID                                      = 0xf5\n\tNL80211_ATTR_BSS_SELECT                                 = 0xe3\n\tNL80211_ATTR_BSS_SHORT_PREAMBLE                         = 0x1d\n\tNL80211_ATTR_BSS_SHORT_SLOT_TIME                        = 0x1e\n\tNL80211_ATTR_CENTER_FREQ1                               = 0xa0\n\tNL80211_ATTR_CENTER_FREQ1_OFFSET                        = 0x123\n\tNL80211_ATTR_CENTER_FREQ2                               = 0xa1\n\tNL80211_ATTR_CHANNEL_WIDTH                              = 0x9f\n\tNL80211_ATTR_CH_SWITCH_BLOCK_TX                         = 0xb8\n\tNL80211_ATTR_CH_SWITCH_COUNT                            = 0xb7\n\tNL80211_ATTR_CIPHER_SUITE_GROUP                         = 0x4a\n\tNL80211_ATTR_CIPHER_SUITES                              = 0x39\n\tNL80211_ATTR_CIPHER_SUITES_PAIRWISE                     = 0x49\n\tNL80211_ATTR_CNTDWN_OFFS_BEACON                         = 0xba\n\tNL80211_ATTR_CNTDWN_OFFS_PRESP                          = 0xbb\n\tNL80211_ATTR_COALESCE_RULE                              = 0xb6\n\tNL80211_ATTR_COALESCE_RULE_CONDITION                    = 0x2\n\tNL80211_ATTR_COALESCE_RULE_DELAY                        = 0x1\n\tNL80211_ATTR_COALESCE_RULE_MAX                          = 0x3\n\tNL80211_ATTR_COALESCE_RULE_PKT_PATTERN                  = 0x3\n\tNL80211_ATTR_COLOR_CHANGE_COLOR                         = 0x130\n\tNL80211_ATTR_COLOR_CHANGE_COUNT                         = 0x12f\n\tNL80211_ATTR_COLOR_CHANGE_ELEMS                         = 0x131\n\tNL80211_ATTR_CONN_FAILED_REASON                         = 0x9b\n\tNL80211_ATTR_CONTROL_PORT                               = 0x44\n\tNL80211_ATTR_CONTROL_PORT_ETHERTYPE                     = 0x66\n\tNL80211_ATTR_CONTROL_PORT_NO_ENCRYPT                    = 0x67\n\tNL80211_ATTR_CONTROL_PORT_NO_PREAUTH                    = 0x11e\n\tNL80211_ATTR_CONTROL_PORT_OVER_NL80211                  = 0x108\n\tNL80211_ATTR_COOKIE                                     = 0x58\n\tNL80211_ATTR_CQM_BEACON_LOSS_EVENT                      = 0x8\n\tNL80211_ATTR_CQM                                        = 0x5e\n\tNL80211_ATTR_CQM_MAX                                    = 0x9\n\tNL80211_ATTR_CQM_PKT_LOSS_EVENT                         = 0x4\n\tNL80211_ATTR_CQM_RSSI_HYST                              = 0x2\n\tNL80211_ATTR_CQM_RSSI_LEVEL                             = 0x9\n\tNL80211_ATTR_CQM_RSSI_THOLD                             = 0x1\n\tNL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT                   = 0x3\n\tNL80211_ATTR_CQM_TXE_INTVL                              = 0x7\n\tNL80211_ATTR_CQM_TXE_PKTS                               = 0x6\n\tNL80211_ATTR_CQM_TXE_RATE                               = 0x5\n\tNL80211_ATTR_CRIT_PROT_ID                               = 0xb3\n\tNL80211_ATTR_CSA_C_OFF_BEACON                           = 0xba\n\tNL80211_ATTR_CSA_C_OFF_PRESP                            = 0xbb\n\tNL80211_ATTR_CSA_C_OFFSETS_TX                           = 0xcd\n\tNL80211_ATTR_CSA_IES                                    = 0xb9\n\tNL80211_ATTR_DEVICE_AP_SME                              = 0x8d\n\tNL80211_ATTR_DFS_CAC_TIME                               = 0x7\n\tNL80211_ATTR_DFS_REGION                                 = 0x92\n\tNL80211_ATTR_DISABLE_EHT                                = 0x137\n\tNL80211_ATTR_DISABLE_HE                                 = 0x12d\n\tNL80211_ATTR_DISABLE_HT                                 = 0x93\n\tNL80211_ATTR_DISABLE_VHT                                = 0xaf\n\tNL80211_ATTR_DISCONNECTED_BY_AP                         = 0x47\n\tNL80211_ATTR_DONT_WAIT_FOR_ACK                          = 0x8e\n\tNL80211_ATTR_DTIM_PERIOD                                = 0xd\n\tNL80211_ATTR_DURATION                                   = 0x57\n\tNL80211_ATTR_EHT_CAPABILITY                             = 0x136\n\tNL80211_ATTR_EMA_RNR_ELEMS                              = 0x145\n\tNL80211_ATTR_EML_CAPABILITY                             = 0x13d\n\tNL80211_ATTR_EXT_CAPA                                   = 0xa9\n\tNL80211_ATTR_EXT_CAPA_MASK                              = 0xaa\n\tNL80211_ATTR_EXTERNAL_AUTH_ACTION                       = 0x104\n\tNL80211_ATTR_EXTERNAL_AUTH_SUPPORT                      = 0x105\n\tNL80211_ATTR_EXT_FEATURES                               = 0xd9\n\tNL80211_ATTR_FEATURE_FLAGS                              = 0x8f\n\tNL80211_ATTR_FILS_CACHE_ID                              = 0xfd\n\tNL80211_ATTR_FILS_DISCOVERY                             = 0x126\n\tNL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM                      = 0xfb\n\tNL80211_ATTR_FILS_ERP_REALM                             = 0xfa\n\tNL80211_ATTR_FILS_ERP_RRK                               = 0xfc\n\tNL80211_ATTR_FILS_ERP_USERNAME                          = 0xf9\n\tNL80211_ATTR_FILS_KEK                                   = 0xf2\n\tNL80211_ATTR_FILS_NONCES                                = 0xf3\n\tNL80211_ATTR_FRAME                                      = 0x33\n\tNL80211_ATTR_FRAME_MATCH                                = 0x5b\n\tNL80211_ATTR_FRAME_TYPE                                 = 0x65\n\tNL80211_ATTR_FREQ_AFTER                                 = 0x3b\n\tNL80211_ATTR_FREQ_BEFORE                                = 0x3a\n\tNL80211_ATTR_FREQ_FIXED                                 = 0x3c\n\tNL80211_ATTR_FREQ_RANGE_END                             = 0x3\n\tNL80211_ATTR_FREQ_RANGE_MAX_BW                          = 0x4\n\tNL80211_ATTR_FREQ_RANGE_START                           = 0x2\n\tNL80211_ATTR_FTM_RESPONDER                              = 0x10e\n\tNL80211_ATTR_FTM_RESPONDER_STATS                        = 0x10f\n\tNL80211_ATTR_GENERATION                                 = 0x2e\n\tNL80211_ATTR_HANDLE_DFS                                 = 0xbf\n\tNL80211_ATTR_HE_6GHZ_CAPABILITY                         = 0x125\n\tNL80211_ATTR_HE_BSS_COLOR                               = 0x11b\n\tNL80211_ATTR_HE_CAPABILITY                              = 0x10d\n\tNL80211_ATTR_HE_OBSS_PD                                 = 0x117\n\tNL80211_ATTR_HIDDEN_SSID                                = 0x7e\n\tNL80211_ATTR_HT_CAPABILITY                              = 0x1f\n\tNL80211_ATTR_HT_CAPABILITY_MASK                         = 0x94\n\tNL80211_ATTR_HW_TIMESTAMP_ENABLED                       = 0x144\n\tNL80211_ATTR_IE_ASSOC_RESP                              = 0x80\n\tNL80211_ATTR_IE                                         = 0x2a\n\tNL80211_ATTR_IE_PROBE_RESP                              = 0x7f\n\tNL80211_ATTR_IE_RIC                                     = 0xb2\n\tNL80211_ATTR_IFACE_SOCKET_OWNER                         = 0xcc\n\tNL80211_ATTR_IFINDEX                                    = 0x3\n\tNL80211_ATTR_IFNAME                                     = 0x4\n\tNL80211_ATTR_IFTYPE_AKM_SUITES                          = 0x11c\n\tNL80211_ATTR_IFTYPE                                     = 0x5\n\tNL80211_ATTR_IFTYPE_EXT_CAPA                            = 0xe6\n\tNL80211_ATTR_INACTIVITY_TIMEOUT                         = 0x96\n\tNL80211_ATTR_INTERFACE_COMBINATIONS                     = 0x78\n\tNL80211_ATTR_KEY_CIPHER                                 = 0x9\n\tNL80211_ATTR_KEY                                        = 0x50\n\tNL80211_ATTR_KEY_DATA                                   = 0x7\n\tNL80211_ATTR_KEY_DEFAULT                                = 0xb\n\tNL80211_ATTR_KEY_DEFAULT_MGMT                           = 0x28\n\tNL80211_ATTR_KEY_DEFAULT_TYPES                          = 0x6e\n\tNL80211_ATTR_KEY_IDX                                    = 0x8\n\tNL80211_ATTR_KEYS                                       = 0x51\n\tNL80211_ATTR_KEY_SEQ                                    = 0xa\n\tNL80211_ATTR_KEY_TYPE                                   = 0x37\n\tNL80211_ATTR_LOCAL_MESH_POWER_MODE                      = 0xa4\n\tNL80211_ATTR_LOCAL_STATE_CHANGE                         = 0x5f\n\tNL80211_ATTR_MAC_ACL_MAX                                = 0xa7\n\tNL80211_ATTR_MAC_ADDRS                                  = 0xa6\n\tNL80211_ATTR_MAC                                        = 0x6\n\tNL80211_ATTR_MAC_HINT                                   = 0xc8\n\tNL80211_ATTR_MAC_MASK                                   = 0xd7\n\tNL80211_ATTR_MAX_AP_ASSOC_STA                           = 0xca\n\tNL80211_ATTR_MAX                                        = 0x151\n\tNL80211_ATTR_MAX_CRIT_PROT_DURATION                     = 0xb4\n\tNL80211_ATTR_MAX_CSA_COUNTERS                           = 0xce\n\tNL80211_ATTR_MAX_HW_TIMESTAMP_PEERS                     = 0x143\n\tNL80211_ATTR_MAX_MATCH_SETS                             = 0x85\n\tNL80211_ATTR_MAX_NUM_AKM_SUITES                         = 0x13c\n\tNL80211_ATTR_MAX_NUM_PMKIDS                             = 0x56\n\tNL80211_ATTR_MAX_NUM_SCAN_SSIDS                         = 0x2b\n\tNL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS                   = 0xde\n\tNL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS                   = 0x7b\n\tNL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION             = 0x6f\n\tNL80211_ATTR_MAX_SCAN_IE_LEN                            = 0x38\n\tNL80211_ATTR_MAX_SCAN_PLAN_INTERVAL                     = 0xdf\n\tNL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS                   = 0xe0\n\tNL80211_ATTR_MAX_SCHED_SCAN_IE_LEN                      = 0x7c\n\tNL80211_ATTR_MBSSID_CONFIG                              = 0x132\n\tNL80211_ATTR_MBSSID_ELEMS                               = 0x133\n\tNL80211_ATTR_MCAST_RATE                                 = 0x6b\n\tNL80211_ATTR_MDID                                       = 0xb1\n\tNL80211_ATTR_MEASUREMENT_DURATION                       = 0xeb\n\tNL80211_ATTR_MEASUREMENT_DURATION_MANDATORY             = 0xec\n\tNL80211_ATTR_MESH_CONFIG                                = 0x23\n\tNL80211_ATTR_MESH_ID                                    = 0x18\n\tNL80211_ATTR_MESH_PEER_AID                              = 0xed\n\tNL80211_ATTR_MESH_SETUP                                 = 0x70\n\tNL80211_ATTR_MGMT_SUBTYPE                               = 0x29\n\tNL80211_ATTR_MLD_ADDR                                   = 0x13a\n\tNL80211_ATTR_MLD_CAPA_AND_OPS                           = 0x13e\n\tNL80211_ATTR_MLO_LINK_DISABLED                          = 0x146\n\tNL80211_ATTR_MLO_LINK_ID                                = 0x139\n\tNL80211_ATTR_MLO_LINKS                                  = 0x138\n\tNL80211_ATTR_MLO_SUPPORT                                = 0x13b\n\tNL80211_ATTR_MLO_TTLM_DLINK                             = 0x148\n\tNL80211_ATTR_MLO_TTLM_ULINK                             = 0x149\n\tNL80211_ATTR_MNTR_FLAGS                                 = 0x17\n\tNL80211_ATTR_MPATH_INFO                                 = 0x1b\n\tNL80211_ATTR_MPATH_NEXT_HOP                             = 0x1a\n\tNL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED               = 0xf4\n\tNL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR                    = 0xe8\n\tNL80211_ATTR_MU_MIMO_GROUP_DATA                         = 0xe7\n\tNL80211_ATTR_NAN_FUNC                                   = 0xf0\n\tNL80211_ATTR_NAN_MASTER_PREF                            = 0xee\n\tNL80211_ATTR_NAN_MATCH                                  = 0xf1\n\tNL80211_ATTR_NETNS_FD                                   = 0xdb\n\tNL80211_ATTR_NOACK_MAP                                  = 0x95\n\tNL80211_ATTR_NSS                                        = 0x106\n\tNL80211_ATTR_OBSS_COLOR_BITMAP                          = 0x12e\n\tNL80211_ATTR_OFFCHANNEL_TX_OK                           = 0x6c\n\tNL80211_ATTR_OPER_CLASS                                 = 0xd6\n\tNL80211_ATTR_OPMODE_NOTIF                               = 0xc2\n\tNL80211_ATTR_P2P_CTWINDOW                               = 0xa2\n\tNL80211_ATTR_P2P_OPPPS                                  = 0xa3\n\tNL80211_ATTR_PAD                                        = 0xe5\n\tNL80211_ATTR_PBSS                                       = 0xe2\n\tNL80211_ATTR_PEER_AID                                   = 0xb5\n\tNL80211_ATTR_PEER_MEASUREMENTS                          = 0x111\n\tNL80211_ATTR_PID                                        = 0x52\n\tNL80211_ATTR_PMK                                        = 0xfe\n\tNL80211_ATTR_PMKID                                      = 0x55\n\tNL80211_ATTR_PMK_LIFETIME                               = 0x11f\n\tNL80211_ATTR_PMKR0_NAME                                 = 0x102\n\tNL80211_ATTR_PMK_REAUTH_THRESHOLD                       = 0x120\n\tNL80211_ATTR_PMKSA_CANDIDATE                            = 0x86\n\tNL80211_ATTR_PORT_AUTHORIZED                            = 0x103\n\tNL80211_ATTR_POWER_RULE_MAX_ANT_GAIN                    = 0x5\n\tNL80211_ATTR_POWER_RULE_MAX_EIRP                        = 0x6\n\tNL80211_ATTR_POWER_RULE_PSD                             = 0x8\n\tNL80211_ATTR_PREV_BSSID                                 = 0x4f\n\tNL80211_ATTR_PRIVACY                                    = 0x46\n\tNL80211_ATTR_PROBE_RESP                                 = 0x91\n\tNL80211_ATTR_PROBE_RESP_OFFLOAD                         = 0x90\n\tNL80211_ATTR_PROTOCOL_FEATURES                          = 0xad\n\tNL80211_ATTR_PS_STATE                                   = 0x5d\n\tNL80211_ATTR_PUNCT_BITMAP                               = 0x142\n\tNL80211_ATTR_QOS_MAP                                    = 0xc7\n\tNL80211_ATTR_RADAR_BACKGROUND                           = 0x134\n\tNL80211_ATTR_RADAR_EVENT                                = 0xa8\n\tNL80211_ATTR_REASON_CODE                                = 0x36\n\tNL80211_ATTR_RECEIVE_MULTICAST                          = 0x121\n\tNL80211_ATTR_RECONNECT_REQUESTED                        = 0x12b\n\tNL80211_ATTR_REG_ALPHA2                                 = 0x21\n\tNL80211_ATTR_REG_INDOOR                                 = 0xdd\n\tNL80211_ATTR_REG_INITIATOR                              = 0x30\n\tNL80211_ATTR_REG_RULE_FLAGS                             = 0x1\n\tNL80211_ATTR_REG_RULES                                  = 0x22\n\tNL80211_ATTR_REG_TYPE                                   = 0x31\n\tNL80211_ATTR_REKEY_DATA                                 = 0x7a\n\tNL80211_ATTR_REQ_IE                                     = 0x4d\n\tNL80211_ATTR_RESP_IE                                    = 0x4e\n\tNL80211_ATTR_ROAM_SUPPORT                               = 0x83\n\tNL80211_ATTR_RX_FRAME_TYPES                             = 0x64\n\tNL80211_ATTR_RX_HW_TIMESTAMP                            = 0x140\n\tNL80211_ATTR_RXMGMT_FLAGS                               = 0xbc\n\tNL80211_ATTR_RX_SIGNAL_DBM                              = 0x97\n\tNL80211_ATTR_S1G_CAPABILITY                             = 0x128\n\tNL80211_ATTR_S1G_CAPABILITY_MASK                        = 0x129\n\tNL80211_ATTR_SAE_DATA                                   = 0x9c\n\tNL80211_ATTR_SAE_PASSWORD                               = 0x115\n\tNL80211_ATTR_SAE_PWE                                    = 0x12a\n\tNL80211_ATTR_SAR_SPEC                                   = 0x12c\n\tNL80211_ATTR_SCAN_FLAGS                                 = 0x9e\n\tNL80211_ATTR_SCAN_FREQ_KHZ                              = 0x124\n\tNL80211_ATTR_SCAN_FREQUENCIES                           = 0x2c\n\tNL80211_ATTR_SCAN_GENERATION                            = 0x2e\n\tNL80211_ATTR_SCAN_SSIDS                                 = 0x2d\n\tNL80211_ATTR_SCAN_START_TIME_TSF_BSSID                  = 0xea\n\tNL80211_ATTR_SCAN_START_TIME_TSF                        = 0xe9\n\tNL80211_ATTR_SCAN_SUPP_RATES                            = 0x7d\n\tNL80211_ATTR_SCHED_SCAN_DELAY                           = 0xdc\n\tNL80211_ATTR_SCHED_SCAN_INTERVAL                        = 0x77\n\tNL80211_ATTR_SCHED_SCAN_MATCH                           = 0x84\n\tNL80211_ATTR_SCHED_SCAN_MATCH_SSID                      = 0x1\n\tNL80211_ATTR_SCHED_SCAN_MAX_REQS                        = 0x100\n\tNL80211_ATTR_SCHED_SCAN_MULTI                           = 0xff\n\tNL80211_ATTR_SCHED_SCAN_PLANS                           = 0xe1\n\tNL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI                   = 0xf6\n\tNL80211_ATTR_SCHED_SCAN_RSSI_ADJUST                     = 0xf7\n\tNL80211_ATTR_SMPS_MODE                                  = 0xd5\n\tNL80211_ATTR_SOCKET_OWNER                               = 0xcc\n\tNL80211_ATTR_SOFTWARE_IFTYPES                           = 0x79\n\tNL80211_ATTR_SPLIT_WIPHY_DUMP                           = 0xae\n\tNL80211_ATTR_SSID                                       = 0x34\n\tNL80211_ATTR_STA_AID                                    = 0x10\n\tNL80211_ATTR_STA_CAPABILITY                             = 0xab\n\tNL80211_ATTR_STA_EXT_CAPABILITY                         = 0xac\n\tNL80211_ATTR_STA_FLAGS2                                 = 0x43\n\tNL80211_ATTR_STA_FLAGS                                  = 0x11\n\tNL80211_ATTR_STA_INFO                                   = 0x15\n\tNL80211_ATTR_STA_LISTEN_INTERVAL                        = 0x12\n\tNL80211_ATTR_STA_PLINK_ACTION                           = 0x19\n\tNL80211_ATTR_STA_PLINK_STATE                            = 0x74\n\tNL80211_ATTR_STA_SUPPORTED_CHANNELS                     = 0xbd\n\tNL80211_ATTR_STA_SUPPORTED_OPER_CLASSES                 = 0xbe\n\tNL80211_ATTR_STA_SUPPORTED_RATES                        = 0x13\n\tNL80211_ATTR_STA_SUPPORT_P2P_PS                         = 0xe4\n\tNL80211_ATTR_STATUS_CODE                                = 0x48\n\tNL80211_ATTR_STA_TX_POWER                               = 0x114\n\tNL80211_ATTR_STA_TX_POWER_SETTING                       = 0x113\n\tNL80211_ATTR_STA_VLAN                                   = 0x14\n\tNL80211_ATTR_STA_WME                                    = 0x81\n\tNL80211_ATTR_SUPPORT_10_MHZ                             = 0xc1\n\tNL80211_ATTR_SUPPORT_5_MHZ                              = 0xc0\n\tNL80211_ATTR_SUPPORT_AP_UAPSD                           = 0x82\n\tNL80211_ATTR_SUPPORTED_COMMANDS                         = 0x32\n\tNL80211_ATTR_SUPPORTED_IFTYPES                          = 0x20\n\tNL80211_ATTR_SUPPORT_IBSS_RSN                           = 0x68\n\tNL80211_ATTR_SUPPORT_MESH_AUTH                          = 0x73\n\tNL80211_ATTR_SURVEY_INFO                                = 0x54\n\tNL80211_ATTR_SURVEY_RADIO_STATS                         = 0xda\n\tNL80211_ATTR_TD_BITMAP                                  = 0x141\n\tNL80211_ATTR_TDLS_ACTION                                = 0x88\n\tNL80211_ATTR_TDLS_DIALOG_TOKEN                          = 0x89\n\tNL80211_ATTR_TDLS_EXTERNAL_SETUP                        = 0x8c\n\tNL80211_ATTR_TDLS_INITIATOR                             = 0xcf\n\tNL80211_ATTR_TDLS_OPERATION                             = 0x8a\n\tNL80211_ATTR_TDLS_PEER_CAPABILITY                       = 0xcb\n\tNL80211_ATTR_TDLS_SUPPORT                               = 0x8b\n\tNL80211_ATTR_TESTDATA                                   = 0x45\n\tNL80211_ATTR_TID_CONFIG                                 = 0x11d\n\tNL80211_ATTR_TIMED_OUT                                  = 0x41\n\tNL80211_ATTR_TIMEOUT                                    = 0x110\n\tNL80211_ATTR_TIMEOUT_REASON                             = 0xf8\n\tNL80211_ATTR_TSID                                       = 0xd2\n\tNL80211_ATTR_TWT_RESPONDER                              = 0x116\n\tNL80211_ATTR_TX_FRAME_TYPES                             = 0x63\n\tNL80211_ATTR_TX_HW_TIMESTAMP                            = 0x13f\n\tNL80211_ATTR_TX_NO_CCK_RATE                             = 0x87\n\tNL80211_ATTR_TXQ_LIMIT                                  = 0x10a\n\tNL80211_ATTR_TXQ_MEMORY_LIMIT                           = 0x10b\n\tNL80211_ATTR_TXQ_QUANTUM                                = 0x10c\n\tNL80211_ATTR_TXQ_STATS                                  = 0x109\n\tNL80211_ATTR_TX_RATES                                   = 0x5a\n\tNL80211_ATTR_UNSOL_BCAST_PROBE_RESP                     = 0x127\n\tNL80211_ATTR_UNSPEC                                     = 0x0\n\tNL80211_ATTR_USE_MFP                                    = 0x42\n\tNL80211_ATTR_USER_PRIO                                  = 0xd3\n\tNL80211_ATTR_USER_REG_HINT_TYPE                         = 0x9a\n\tNL80211_ATTR_USE_RRM                                    = 0xd0\n\tNL80211_ATTR_VENDOR_DATA                                = 0xc5\n\tNL80211_ATTR_VENDOR_EVENTS                              = 0xc6\n\tNL80211_ATTR_VENDOR_ID                                  = 0xc3\n\tNL80211_ATTR_VENDOR_SUBCMD                              = 0xc4\n\tNL80211_ATTR_VHT_CAPABILITY                             = 0x9d\n\tNL80211_ATTR_VHT_CAPABILITY_MASK                        = 0xb0\n\tNL80211_ATTR_VLAN_ID                                    = 0x11a\n\tNL80211_ATTR_WANT_1X_4WAY_HS                            = 0x101\n\tNL80211_ATTR_WDEV                                       = 0x99\n\tNL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX                     = 0x72\n\tNL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX                     = 0x71\n\tNL80211_ATTR_WIPHY_ANTENNA_RX                           = 0x6a\n\tNL80211_ATTR_WIPHY_ANTENNA_TX                           = 0x69\n\tNL80211_ATTR_WIPHY_BANDS                                = 0x16\n\tNL80211_ATTR_WIPHY_CHANNEL_TYPE                         = 0x27\n\tNL80211_ATTR_WIPHY                                      = 0x1\n\tNL80211_ATTR_WIPHY_COVERAGE_CLASS                       = 0x59\n\tNL80211_ATTR_WIPHY_DYN_ACK                              = 0xd1\n\tNL80211_ATTR_WIPHY_EDMG_BW_CONFIG                       = 0x119\n\tNL80211_ATTR_WIPHY_EDMG_CHANNELS                        = 0x118\n\tNL80211_ATTR_WIPHY_FRAG_THRESHOLD                       = 0x3f\n\tNL80211_ATTR_WIPHY_FREQ                                 = 0x26\n\tNL80211_ATTR_WIPHY_FREQ_HINT                            = 0xc9\n\tNL80211_ATTR_WIPHY_FREQ_OFFSET                          = 0x122\n\tNL80211_ATTR_WIPHY_INTERFACE_COMBINATIONS               = 0x14c\n\tNL80211_ATTR_WIPHY_NAME                                 = 0x2\n\tNL80211_ATTR_WIPHY_RADIOS                               = 0x14b\n\tNL80211_ATTR_WIPHY_RETRY_LONG                           = 0x3e\n\tNL80211_ATTR_WIPHY_RETRY_SHORT                          = 0x3d\n\tNL80211_ATTR_WIPHY_RTS_THRESHOLD                        = 0x40\n\tNL80211_ATTR_WIPHY_SELF_MANAGED_REG                     = 0xd8\n\tNL80211_ATTR_WIPHY_TX_POWER_LEVEL                       = 0x62\n\tNL80211_ATTR_WIPHY_TX_POWER_SETTING                     = 0x61\n\tNL80211_ATTR_WIPHY_TXQ_PARAMS                           = 0x25\n\tNL80211_ATTR_WOWLAN_TRIGGERS                            = 0x75\n\tNL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED                  = 0x76\n\tNL80211_ATTR_WPA_VERSIONS                               = 0x4b\n\tNL80211_AUTHTYPE_AUTOMATIC                              = 0x8\n\tNL80211_AUTHTYPE_FILS_PK                                = 0x7\n\tNL80211_AUTHTYPE_FILS_SK                                = 0x5\n\tNL80211_AUTHTYPE_FILS_SK_PFS                            = 0x6\n\tNL80211_AUTHTYPE_FT                                     = 0x2\n\tNL80211_AUTHTYPE_MAX                                    = 0x7\n\tNL80211_AUTHTYPE_NETWORK_EAP                            = 0x3\n\tNL80211_AUTHTYPE_OPEN_SYSTEM                            = 0x0\n\tNL80211_AUTHTYPE_SAE                                    = 0x4\n\tNL80211_AUTHTYPE_SHARED_KEY                             = 0x1\n\tNL80211_BAND_2GHZ                                       = 0x0\n\tNL80211_BAND_5GHZ                                       = 0x1\n\tNL80211_BAND_60GHZ                                      = 0x2\n\tNL80211_BAND_6GHZ                                       = 0x3\n\tNL80211_BAND_ATTR_EDMG_BW_CONFIG                        = 0xb\n\tNL80211_BAND_ATTR_EDMG_CHANNELS                         = 0xa\n\tNL80211_BAND_ATTR_FREQS                                 = 0x1\n\tNL80211_BAND_ATTR_HT_AMPDU_DENSITY                      = 0x6\n\tNL80211_BAND_ATTR_HT_AMPDU_FACTOR                       = 0x5\n\tNL80211_BAND_ATTR_HT_CAPA                               = 0x4\n\tNL80211_BAND_ATTR_HT_MCS_SET                            = 0x3\n\tNL80211_BAND_ATTR_IFTYPE_DATA                           = 0x9\n\tNL80211_BAND_ATTR_MAX                                   = 0xd\n\tNL80211_BAND_ATTR_RATES                                 = 0x2\n\tNL80211_BAND_ATTR_S1G_CAPA                              = 0xd\n\tNL80211_BAND_ATTR_S1G_MCS_NSS_SET                       = 0xc\n\tNL80211_BAND_ATTR_VHT_CAPA                              = 0x8\n\tNL80211_BAND_ATTR_VHT_MCS_SET                           = 0x7\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC                    = 0x8\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET                = 0xa\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY                    = 0x9\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE                    = 0xb\n\tNL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA                   = 0x6\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC                     = 0x2\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET                 = 0x4\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY                     = 0x3\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE                     = 0x5\n\tNL80211_BAND_IFTYPE_ATTR_IFTYPES                        = 0x1\n\tNL80211_BAND_IFTYPE_ATTR_MAX                            = 0xb\n\tNL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS                   = 0x7\n\tNL80211_BAND_LC                                         = 0x5\n\tNL80211_BAND_S1GHZ                                      = 0x4\n\tNL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE                 = 0x2\n\tNL80211_BITRATE_ATTR_MAX                                = 0x2\n\tNL80211_BITRATE_ATTR_RATE                               = 0x1\n\tNL80211_BSS_BEACON_IES                                  = 0xb\n\tNL80211_BSS_BEACON_INTERVAL                             = 0x4\n\tNL80211_BSS_BEACON_TSF                                  = 0xd\n\tNL80211_BSS_BSSID                                       = 0x1\n\tNL80211_BSS_CANNOT_USE_6GHZ_PWR_MISMATCH                = 0x2\n\tNL80211_BSS_CANNOT_USE_NSTR_NONPRIMARY                  = 0x1\n\tNL80211_BSS_CANNOT_USE_REASONS                          = 0x18\n\tNL80211_BSS_CANNOT_USE_UHB_PWR_MISMATCH                 = 0x2\n\tNL80211_BSS_CAPABILITY                                  = 0x5\n\tNL80211_BSS_CHAIN_SIGNAL                                = 0x13\n\tNL80211_BSS_CHAN_WIDTH_10                               = 0x1\n\tNL80211_BSS_CHAN_WIDTH_1                                = 0x3\n\tNL80211_BSS_CHAN_WIDTH_20                               = 0x0\n\tNL80211_BSS_CHAN_WIDTH_2                                = 0x4\n\tNL80211_BSS_CHAN_WIDTH_5                                = 0x2\n\tNL80211_BSS_CHAN_WIDTH                                  = 0xc\n\tNL80211_BSS_FREQUENCY                                   = 0x2\n\tNL80211_BSS_FREQUENCY_OFFSET                            = 0x14\n\tNL80211_BSS_INFORMATION_ELEMENTS                        = 0x6\n\tNL80211_BSS_LAST_SEEN_BOOTTIME                          = 0xf\n\tNL80211_BSS_MAX                                         = 0x18\n\tNL80211_BSS_MLD_ADDR                                    = 0x16\n\tNL80211_BSS_MLO_LINK_ID                                 = 0x15\n\tNL80211_BSS_PAD                                         = 0x10\n\tNL80211_BSS_PARENT_BSSID                                = 0x12\n\tNL80211_BSS_PARENT_TSF                                  = 0x11\n\tNL80211_BSS_PRESP_DATA                                  = 0xe\n\tNL80211_BSS_SEEN_MS_AGO                                 = 0xa\n\tNL80211_BSS_SELECT_ATTR_BAND_PREF                       = 0x2\n\tNL80211_BSS_SELECT_ATTR_MAX                             = 0x3\n\tNL80211_BSS_SELECT_ATTR_RSSI_ADJUST                     = 0x3\n\tNL80211_BSS_SELECT_ATTR_RSSI                            = 0x1\n\tNL80211_BSS_SIGNAL_MBM                                  = 0x7\n\tNL80211_BSS_SIGNAL_UNSPEC                               = 0x8\n\tNL80211_BSS_STATUS_ASSOCIATED                           = 0x1\n\tNL80211_BSS_STATUS_AUTHENTICATED                        = 0x0\n\tNL80211_BSS_STATUS                                      = 0x9\n\tNL80211_BSS_STATUS_IBSS_JOINED                          = 0x2\n\tNL80211_BSS_TSF                                         = 0x3\n\tNL80211_BSS_USE_FOR                                     = 0x17\n\tNL80211_BSS_USE_FOR_MLD_LINK                            = 0x2\n\tNL80211_BSS_USE_FOR_NORMAL                              = 0x1\n\tNL80211_CHAN_HT20                                       = 0x1\n\tNL80211_CHAN_HT40MINUS                                  = 0x2\n\tNL80211_CHAN_HT40PLUS                                   = 0x3\n\tNL80211_CHAN_NO_HT                                      = 0x0\n\tNL80211_CHAN_WIDTH_10                                   = 0x7\n\tNL80211_CHAN_WIDTH_160                                  = 0x5\n\tNL80211_CHAN_WIDTH_16                                   = 0xc\n\tNL80211_CHAN_WIDTH_1                                    = 0x8\n\tNL80211_CHAN_WIDTH_20                                   = 0x1\n\tNL80211_CHAN_WIDTH_20_NOHT                              = 0x0\n\tNL80211_CHAN_WIDTH_2                                    = 0x9\n\tNL80211_CHAN_WIDTH_320                                  = 0xd\n\tNL80211_CHAN_WIDTH_40                                   = 0x2\n\tNL80211_CHAN_WIDTH_4                                    = 0xa\n\tNL80211_CHAN_WIDTH_5                                    = 0x6\n\tNL80211_CHAN_WIDTH_80                                   = 0x3\n\tNL80211_CHAN_WIDTH_80P80                                = 0x4\n\tNL80211_CHAN_WIDTH_8                                    = 0xb\n\tNL80211_CMD_ABORT_SCAN                                  = 0x72\n\tNL80211_CMD_ACTION                                      = 0x3b\n\tNL80211_CMD_ACTION_TX_STATUS                            = 0x3c\n\tNL80211_CMD_ADD_LINK                                    = 0x94\n\tNL80211_CMD_ADD_LINK_STA                                = 0x96\n\tNL80211_CMD_ADD_NAN_FUNCTION                            = 0x75\n\tNL80211_CMD_ADD_TX_TS                                   = 0x69\n\tNL80211_CMD_ASSOC_COMEBACK                              = 0x93\n\tNL80211_CMD_ASSOCIATE                                   = 0x26\n\tNL80211_CMD_AUTHENTICATE                                = 0x25\n\tNL80211_CMD_CANCEL_REMAIN_ON_CHANNEL                    = 0x38\n\tNL80211_CMD_CHANGE_NAN_CONFIG                           = 0x77\n\tNL80211_CMD_CHANNEL_SWITCH                              = 0x66\n\tNL80211_CMD_CH_SWITCH_NOTIFY                            = 0x58\n\tNL80211_CMD_CH_SWITCH_STARTED_NOTIFY                    = 0x6e\n\tNL80211_CMD_COLOR_CHANGE_ABORTED                        = 0x90\n\tNL80211_CMD_COLOR_CHANGE_COMPLETED                      = 0x91\n\tNL80211_CMD_COLOR_CHANGE_REQUEST                        = 0x8e\n\tNL80211_CMD_COLOR_CHANGE_STARTED                        = 0x8f\n\tNL80211_CMD_CONNECT                                     = 0x2e\n\tNL80211_CMD_CONN_FAILED                                 = 0x5b\n\tNL80211_CMD_CONTROL_PORT_FRAME                          = 0x81\n\tNL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS                = 0x8b\n\tNL80211_CMD_CRIT_PROTOCOL_START                         = 0x62\n\tNL80211_CMD_CRIT_PROTOCOL_STOP                          = 0x63\n\tNL80211_CMD_DEAUTHENTICATE                              = 0x27\n\tNL80211_CMD_DEL_BEACON                                  = 0x10\n\tNL80211_CMD_DEL_INTERFACE                               = 0x8\n\tNL80211_CMD_DEL_KEY                                     = 0xc\n\tNL80211_CMD_DEL_MPATH                                   = 0x18\n\tNL80211_CMD_DEL_NAN_FUNCTION                            = 0x76\n\tNL80211_CMD_DEL_PMK                                     = 0x7c\n\tNL80211_CMD_DEL_PMKSA                                   = 0x35\n\tNL80211_CMD_DEL_STATION                                 = 0x14\n\tNL80211_CMD_DEL_TX_TS                                   = 0x6a\n\tNL80211_CMD_DEL_WIPHY                                   = 0x4\n\tNL80211_CMD_DISASSOCIATE                                = 0x28\n\tNL80211_CMD_DISCONNECT                                  = 0x30\n\tNL80211_CMD_EXTERNAL_AUTH                               = 0x7f\n\tNL80211_CMD_FLUSH_PMKSA                                 = 0x36\n\tNL80211_CMD_FRAME                                       = 0x3b\n\tNL80211_CMD_FRAME_TX_STATUS                             = 0x3c\n\tNL80211_CMD_FRAME_WAIT_CANCEL                           = 0x43\n\tNL80211_CMD_FT_EVENT                                    = 0x61\n\tNL80211_CMD_GET_BEACON                                  = 0xd\n\tNL80211_CMD_GET_COALESCE                                = 0x64\n\tNL80211_CMD_GET_FTM_RESPONDER_STATS                     = 0x82\n\tNL80211_CMD_GET_INTERFACE                               = 0x5\n\tNL80211_CMD_GET_KEY                                     = 0x9\n\tNL80211_CMD_GET_MESH_CONFIG                             = 0x1c\n\tNL80211_CMD_GET_MESH_PARAMS                             = 0x1c\n\tNL80211_CMD_GET_MPATH                                   = 0x15\n\tNL80211_CMD_GET_MPP                                     = 0x6b\n\tNL80211_CMD_GET_POWER_SAVE                              = 0x3e\n\tNL80211_CMD_GET_PROTOCOL_FEATURES                       = 0x5f\n\tNL80211_CMD_GET_REG                                     = 0x1f\n\tNL80211_CMD_GET_SCAN                                    = 0x20\n\tNL80211_CMD_GET_STATION                                 = 0x11\n\tNL80211_CMD_GET_SURVEY                                  = 0x32\n\tNL80211_CMD_GET_WIPHY                                   = 0x1\n\tNL80211_CMD_GET_WOWLAN                                  = 0x49\n\tNL80211_CMD_JOIN_IBSS                                   = 0x2b\n\tNL80211_CMD_JOIN_MESH                                   = 0x44\n\tNL80211_CMD_JOIN_OCB                                    = 0x6c\n\tNL80211_CMD_LEAVE_IBSS                                  = 0x2c\n\tNL80211_CMD_LEAVE_MESH                                  = 0x45\n\tNL80211_CMD_LEAVE_OCB                                   = 0x6d\n\tNL80211_CMD_LINKS_REMOVED                               = 0x9a\n\tNL80211_CMD_MAX                                         = 0x9d\n\tNL80211_CMD_MICHAEL_MIC_FAILURE                         = 0x29\n\tNL80211_CMD_MODIFY_LINK_STA                             = 0x97\n\tNL80211_CMD_NAN_MATCH                                   = 0x78\n\tNL80211_CMD_NEW_BEACON                                  = 0xf\n\tNL80211_CMD_NEW_INTERFACE                               = 0x7\n\tNL80211_CMD_NEW_KEY                                     = 0xb\n\tNL80211_CMD_NEW_MPATH                                   = 0x17\n\tNL80211_CMD_NEW_PEER_CANDIDATE                          = 0x48\n\tNL80211_CMD_NEW_SCAN_RESULTS                            = 0x22\n\tNL80211_CMD_NEW_STATION                                 = 0x13\n\tNL80211_CMD_NEW_SURVEY_RESULTS                          = 0x33\n\tNL80211_CMD_NEW_WIPHY                                   = 0x3\n\tNL80211_CMD_NOTIFY_CQM                                  = 0x40\n\tNL80211_CMD_NOTIFY_RADAR                                = 0x86\n\tNL80211_CMD_OBSS_COLOR_COLLISION                        = 0x8d\n\tNL80211_CMD_PEER_MEASUREMENT_COMPLETE                   = 0x85\n\tNL80211_CMD_PEER_MEASUREMENT_RESULT                     = 0x84\n\tNL80211_CMD_PEER_MEASUREMENT_START                      = 0x83\n\tNL80211_CMD_PMKSA_CANDIDATE                             = 0x50\n\tNL80211_CMD_PORT_AUTHORIZED                             = 0x7d\n\tNL80211_CMD_PROBE_CLIENT                                = 0x54\n\tNL80211_CMD_PROBE_MESH_LINK                             = 0x88\n\tNL80211_CMD_RADAR_DETECT                                = 0x5e\n\tNL80211_CMD_REG_BEACON_HINT                             = 0x2a\n\tNL80211_CMD_REG_CHANGE                                  = 0x24\n\tNL80211_CMD_REGISTER_ACTION                             = 0x3a\n\tNL80211_CMD_REGISTER_BEACONS                            = 0x55\n\tNL80211_CMD_REGISTER_FRAME                              = 0x3a\n\tNL80211_CMD_RELOAD_REGDB                                = 0x7e\n\tNL80211_CMD_REMAIN_ON_CHANNEL                           = 0x37\n\tNL80211_CMD_REMOVE_LINK                                 = 0x95\n\tNL80211_CMD_REMOVE_LINK_STA                             = 0x98\n\tNL80211_CMD_REQ_SET_REG                                 = 0x1b\n\tNL80211_CMD_ROAM                                        = 0x2f\n\tNL80211_CMD_SCAN_ABORTED                                = 0x23\n\tNL80211_CMD_SCHED_SCAN_RESULTS                          = 0x4d\n\tNL80211_CMD_SCHED_SCAN_STOPPED                          = 0x4e\n\tNL80211_CMD_SET_BEACON                                  = 0xe\n\tNL80211_CMD_SET_BSS                                     = 0x19\n\tNL80211_CMD_SET_CHANNEL                                 = 0x41\n\tNL80211_CMD_SET_COALESCE                                = 0x65\n\tNL80211_CMD_SET_CQM                                     = 0x3f\n\tNL80211_CMD_SET_FILS_AAD                                = 0x92\n\tNL80211_CMD_SET_HW_TIMESTAMP                            = 0x99\n\tNL80211_CMD_SET_INTERFACE                               = 0x6\n\tNL80211_CMD_SET_KEY                                     = 0xa\n\tNL80211_CMD_SET_MAC_ACL                                 = 0x5d\n\tNL80211_CMD_SET_MCAST_RATE                              = 0x5c\n\tNL80211_CMD_SET_MESH_CONFIG                             = 0x1d\n\tNL80211_CMD_SET_MESH_PARAMS                             = 0x1d\n\tNL80211_CMD_SET_MGMT_EXTRA_IE                           = 0x1e\n\tNL80211_CMD_SET_MPATH                                   = 0x16\n\tNL80211_CMD_SET_MULTICAST_TO_UNICAST                    = 0x79\n\tNL80211_CMD_SET_NOACK_MAP                               = 0x57\n\tNL80211_CMD_SET_PMK                                     = 0x7b\n\tNL80211_CMD_SET_PMKSA                                   = 0x34\n\tNL80211_CMD_SET_POWER_SAVE                              = 0x3d\n\tNL80211_CMD_SET_QOS_MAP                                 = 0x68\n\tNL80211_CMD_SET_REG                                     = 0x1a\n\tNL80211_CMD_SET_REKEY_OFFLOAD                           = 0x4f\n\tNL80211_CMD_SET_SAR_SPECS                               = 0x8c\n\tNL80211_CMD_SET_STATION                                 = 0x12\n\tNL80211_CMD_SET_TID_CONFIG                              = 0x89\n\tNL80211_CMD_SET_TID_TO_LINK_MAPPING                     = 0x9b\n\tNL80211_CMD_SET_TX_BITRATE_MASK                         = 0x39\n\tNL80211_CMD_SET_WDS_PEER                                = 0x42\n\tNL80211_CMD_SET_WIPHY                                   = 0x2\n\tNL80211_CMD_SET_WIPHY_NETNS                             = 0x31\n\tNL80211_CMD_SET_WOWLAN                                  = 0x4a\n\tNL80211_CMD_STA_OPMODE_CHANGED                          = 0x80\n\tNL80211_CMD_START_AP                                    = 0xf\n\tNL80211_CMD_START_NAN                                   = 0x73\n\tNL80211_CMD_START_P2P_DEVICE                            = 0x59\n\tNL80211_CMD_START_SCHED_SCAN                            = 0x4b\n\tNL80211_CMD_STOP_AP                                     = 0x10\n\tNL80211_CMD_STOP_NAN                                    = 0x74\n\tNL80211_CMD_STOP_P2P_DEVICE                             = 0x5a\n\tNL80211_CMD_STOP_SCHED_SCAN                             = 0x4c\n\tNL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH                  = 0x70\n\tNL80211_CMD_TDLS_CHANNEL_SWITCH                         = 0x6f\n\tNL80211_CMD_TDLS_MGMT                                   = 0x52\n\tNL80211_CMD_TDLS_OPER                                   = 0x51\n\tNL80211_CMD_TESTMODE                                    = 0x2d\n\tNL80211_CMD_TRIGGER_SCAN                                = 0x21\n\tNL80211_CMD_UNEXPECTED_4ADDR_FRAME                      = 0x56\n\tNL80211_CMD_UNEXPECTED_FRAME                            = 0x53\n\tNL80211_CMD_UNPROT_BEACON                               = 0x8a\n\tNL80211_CMD_UNPROT_DEAUTHENTICATE                       = 0x46\n\tNL80211_CMD_UNPROT_DISASSOCIATE                         = 0x47\n\tNL80211_CMD_UNSPEC                                      = 0x0\n\tNL80211_CMD_UPDATE_CONNECT_PARAMS                       = 0x7a\n\tNL80211_CMD_UPDATE_FT_IES                               = 0x60\n\tNL80211_CMD_UPDATE_OWE_INFO                             = 0x87\n\tNL80211_CMD_VENDOR                                      = 0x67\n\tNL80211_CMD_WIPHY_REG_CHANGE                            = 0x71\n\tNL80211_COALESCE_CONDITION_MATCH                        = 0x0\n\tNL80211_COALESCE_CONDITION_NO_MATCH                     = 0x1\n\tNL80211_CONN_FAIL_BLOCKED_CLIENT                        = 0x1\n\tNL80211_CONN_FAIL_MAX_CLIENTS                           = 0x0\n\tNL80211_CQM_RSSI_BEACON_LOSS_EVENT                      = 0x2\n\tNL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH                   = 0x1\n\tNL80211_CQM_RSSI_THRESHOLD_EVENT_LOW                    = 0x0\n\tNL80211_CQM_TXE_MAX_INTVL                               = 0x708\n\tNL80211_CRIT_PROTO_APIPA                                = 0x3\n\tNL80211_CRIT_PROTO_DHCP                                 = 0x1\n\tNL80211_CRIT_PROTO_EAPOL                                = 0x2\n\tNL80211_CRIT_PROTO_MAX_DURATION                         = 0x1388\n\tNL80211_CRIT_PROTO_UNSPEC                               = 0x0\n\tNL80211_DFS_AVAILABLE                                   = 0x2\n\tNL80211_DFS_ETSI                                        = 0x2\n\tNL80211_DFS_FCC                                         = 0x1\n\tNL80211_DFS_JP                                          = 0x3\n\tNL80211_DFS_UNAVAILABLE                                 = 0x1\n\tNL80211_DFS_UNSET                                       = 0x0\n\tNL80211_DFS_USABLE                                      = 0x0\n\tNL80211_EDMG_BW_CONFIG_MAX                              = 0xf\n\tNL80211_EDMG_BW_CONFIG_MIN                              = 0x4\n\tNL80211_EDMG_CHANNELS_MAX                               = 0x3c\n\tNL80211_EDMG_CHANNELS_MIN                               = 0x1\n\tNL80211_EHT_MAX_CAPABILITY_LEN                          = 0x33\n\tNL80211_EHT_MIN_CAPABILITY_LEN                          = 0xd\n\tNL80211_EXTERNAL_AUTH_ABORT                             = 0x1\n\tNL80211_EXTERNAL_AUTH_START                             = 0x0\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK               = 0x32\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X               = 0x10\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK              = 0xf\n\tNL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP             = 0x12\n\tNL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT                  = 0x1b\n\tNL80211_EXT_FEATURE_AIRTIME_FAIRNESS                    = 0x21\n\tNL80211_EXT_FEATURE_AP_PMKSA_CACHING                    = 0x22\n\tNL80211_EXT_FEATURE_AQL                                 = 0x28\n\tNL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA           = 0x40\n\tNL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT            = 0x2e\n\tNL80211_EXT_FEATURE_BEACON_PROTECTION                   = 0x29\n\tNL80211_EXT_FEATURE_BEACON_RATE_HE                      = 0x36\n\tNL80211_EXT_FEATURE_BEACON_RATE_HT                      = 0x7\n\tNL80211_EXT_FEATURE_BEACON_RATE_LEGACY                  = 0x6\n\tNL80211_EXT_FEATURE_BEACON_RATE_VHT                     = 0x8\n\tNL80211_EXT_FEATURE_BSS_COLOR                           = 0x3a\n\tNL80211_EXT_FEATURE_BSS_PARENT_TSF                      = 0x4\n\tNL80211_EXT_FEATURE_CAN_REPLACE_PTK0                    = 0x1f\n\tNL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH             = 0x2a\n\tNL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211           = 0x1a\n\tNL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS = 0x30\n\tNL80211_EXT_FEATURE_CQM_RSSI_LIST                       = 0xd\n\tNL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT             = 0x1b\n\tNL80211_EXT_FEATURE_DEL_IBSS_STA                        = 0x2c\n\tNL80211_EXT_FEATURE_DFS_CONCURRENT                      = 0x43\n\tNL80211_EXT_FEATURE_DFS_OFFLOAD                         = 0x19\n\tNL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER                = 0x20\n\tNL80211_EXT_FEATURE_EXT_KEY_ID                          = 0x24\n\tNL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD                 = 0x3b\n\tNL80211_EXT_FEATURE_FILS_DISCOVERY                      = 0x34\n\tNL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME               = 0x11\n\tNL80211_EXT_FEATURE_FILS_SK_OFFLOAD                     = 0xe\n\tNL80211_EXT_FEATURE_FILS_STA                            = 0x9\n\tNL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN                  = 0x18\n\tNL80211_EXT_FEATURE_LOW_POWER_SCAN                      = 0x17\n\tNL80211_EXT_FEATURE_LOW_SPAN_SCAN                       = 0x16\n\tNL80211_EXT_FEATURE_MFP_OPTIONAL                        = 0x15\n\tNL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA                   = 0xa\n\tNL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED         = 0xb\n\tNL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS             = 0x2d\n\tNL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER                 = 0x2\n\tNL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION  = 0x14\n\tNL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE          = 0x13\n\tNL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION        = 0x31\n\tNL80211_EXT_FEATURE_OWE_OFFLOAD_AP                      = 0x42\n\tNL80211_EXT_FEATURE_OWE_OFFLOAD                         = 0x41\n\tNL80211_EXT_FEATURE_POWERED_ADDR_CHANGE                 = 0x3d\n\tNL80211_EXT_FEATURE_PROTECTED_TWT                       = 0x2b\n\tNL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE         = 0x39\n\tNL80211_EXT_FEATURE_PUNCT                               = 0x3e\n\tNL80211_EXT_FEATURE_RADAR_BACKGROUND                    = 0x3c\n\tNL80211_EXT_FEATURE_RRM                                 = 0x1\n\tNL80211_EXT_FEATURE_SAE_OFFLOAD_AP                      = 0x33\n\tNL80211_EXT_FEATURE_SAE_OFFLOAD                         = 0x26\n\tNL80211_EXT_FEATURE_SCAN_FREQ_KHZ                       = 0x2f\n\tNL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT               = 0x1e\n\tNL80211_EXT_FEATURE_SCAN_RANDOM_SN                      = 0x1d\n\tNL80211_EXT_FEATURE_SCAN_START_TIME                     = 0x3\n\tNL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD = 0x23\n\tNL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI            = 0xc\n\tNL80211_EXT_FEATURE_SECURE_LTF                          = 0x37\n\tNL80211_EXT_FEATURE_SECURE_NAN                          = 0x3f\n\tNL80211_EXT_FEATURE_SECURE_RTT                          = 0x38\n\tNL80211_EXT_FEATURE_SET_SCAN_DWELL                      = 0x5\n\tNL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT                   = 0x44\n\tNL80211_EXT_FEATURE_STA_TX_PWR                          = 0x25\n\tNL80211_EXT_FEATURE_TXQS                                = 0x1c\n\tNL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP              = 0x35\n\tNL80211_EXT_FEATURE_VHT_IBSS                            = 0x0\n\tNL80211_EXT_FEATURE_VLAN_OFFLOAD                        = 0x27\n\tNL80211_FEATURE_ACKTO_ESTIMATION                        = 0x800000\n\tNL80211_FEATURE_ACTIVE_MONITOR                          = 0x20000\n\tNL80211_FEATURE_ADVERTISE_CHAN_LIMITS                   = 0x4000\n\tNL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE               = 0x40000\n\tNL80211_FEATURE_AP_SCAN                                 = 0x100\n\tNL80211_FEATURE_CELL_BASE_REG_HINTS                     = 0x8\n\tNL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES               = 0x80000\n\tNL80211_FEATURE_DYNAMIC_SMPS                            = 0x2000000\n\tNL80211_FEATURE_FULL_AP_CLIENT_STATE                    = 0x8000\n\tNL80211_FEATURE_HT_IBSS                                 = 0x2\n\tNL80211_FEATURE_INACTIVITY_TIMER                        = 0x4\n\tNL80211_FEATURE_LOW_PRIORITY_SCAN                       = 0x40\n\tNL80211_FEATURE_MAC_ON_CREATE                           = 0x8000000\n\tNL80211_FEATURE_ND_RANDOM_MAC_ADDR                      = 0x80000000\n\tNL80211_FEATURE_NEED_OBSS_SCAN                          = 0x400\n\tNL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL                = 0x10\n\tNL80211_FEATURE_P2P_GO_CTWIN                            = 0x800\n\tNL80211_FEATURE_P2P_GO_OPPPS                            = 0x1000\n\tNL80211_FEATURE_QUIET                                   = 0x200000\n\tNL80211_FEATURE_SAE                                     = 0x20\n\tNL80211_FEATURE_SCAN_FLUSH                              = 0x80\n\tNL80211_FEATURE_SCAN_RANDOM_MAC_ADDR                    = 0x20000000\n\tNL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR              = 0x40000000\n\tNL80211_FEATURE_SK_TX_STATUS                            = 0x1\n\tNL80211_FEATURE_STATIC_SMPS                             = 0x1000000\n\tNL80211_FEATURE_SUPPORTS_WMM_ADMISSION                  = 0x4000000\n\tNL80211_FEATURE_TDLS_CHANNEL_SWITCH                     = 0x10000000\n\tNL80211_FEATURE_TX_POWER_INSERTION                      = 0x400000\n\tNL80211_FEATURE_USERSPACE_MPM                           = 0x10000\n\tNL80211_FEATURE_VIF_TXPOWER                             = 0x200\n\tNL80211_FEATURE_WFA_TPC_IE_IN_PROBES                    = 0x100000\n\tNL80211_FILS_DISCOVERY_ATTR_INT_MAX                     = 0x2\n\tNL80211_FILS_DISCOVERY_ATTR_INT_MIN                     = 0x1\n\tNL80211_FILS_DISCOVERY_ATTR_MAX                         = 0x3\n\tNL80211_FILS_DISCOVERY_ATTR_TMPL                        = 0x3\n\tNL80211_FILS_DISCOVERY_TMPL_MIN_LEN                     = 0x2a\n\tNL80211_FREQUENCY_ATTR_16MHZ                            = 0x19\n\tNL80211_FREQUENCY_ATTR_1MHZ                             = 0x15\n\tNL80211_FREQUENCY_ATTR_2MHZ                             = 0x16\n\tNL80211_FREQUENCY_ATTR_4MHZ                             = 0x17\n\tNL80211_FREQUENCY_ATTR_8MHZ                             = 0x18\n\tNL80211_FREQUENCY_ATTR_ALLOW_6GHZ_VLP_AP                = 0x21\n\tNL80211_FREQUENCY_ATTR_CAN_MONITOR                      = 0x20\n\tNL80211_FREQUENCY_ATTR_DFS_CAC_TIME                     = 0xd\n\tNL80211_FREQUENCY_ATTR_DFS_CONCURRENT                   = 0x1d\n\tNL80211_FREQUENCY_ATTR_DFS_STATE                        = 0x7\n\tNL80211_FREQUENCY_ATTR_DFS_TIME                         = 0x8\n\tNL80211_FREQUENCY_ATTR_DISABLED                         = 0x2\n\tNL80211_FREQUENCY_ATTR_FREQ                             = 0x1\n\tNL80211_FREQUENCY_ATTR_GO_CONCURRENT                    = 0xf\n\tNL80211_FREQUENCY_ATTR_INDOOR_ONLY                      = 0xe\n\tNL80211_FREQUENCY_ATTR_IR_CONCURRENT                    = 0xf\n\tNL80211_FREQUENCY_ATTR_MAX                              = 0x22\n\tNL80211_FREQUENCY_ATTR_MAX_TX_POWER                     = 0x6\n\tNL80211_FREQUENCY_ATTR_NO_10MHZ                         = 0x11\n\tNL80211_FREQUENCY_ATTR_NO_160MHZ                        = 0xc\n\tNL80211_FREQUENCY_ATTR_NO_20MHZ                         = 0x10\n\tNL80211_FREQUENCY_ATTR_NO_320MHZ                        = 0x1a\n\tNL80211_FREQUENCY_ATTR_NO_6GHZ_AFC_CLIENT               = 0x1f\n\tNL80211_FREQUENCY_ATTR_NO_6GHZ_VLP_CLIENT               = 0x1e\n\tNL80211_FREQUENCY_ATTR_NO_80MHZ                         = 0xb\n\tNL80211_FREQUENCY_ATTR_NO_EHT                           = 0x1b\n\tNL80211_FREQUENCY_ATTR_NO_HE                            = 0x13\n\tNL80211_FREQUENCY_ATTR_NO_HT40_MINUS                    = 0x9\n\tNL80211_FREQUENCY_ATTR_NO_HT40_PLUS                     = 0xa\n\tNL80211_FREQUENCY_ATTR_NO_IBSS                          = 0x3\n\tNL80211_FREQUENCY_ATTR_NO_IR                            = 0x3\n\tNL80211_FREQUENCY_ATTR_NO_UHB_AFC_CLIENT                = 0x1f\n\tNL80211_FREQUENCY_ATTR_NO_UHB_VLP_CLIENT                = 0x1e\n\tNL80211_FREQUENCY_ATTR_OFFSET                           = 0x14\n\tNL80211_FREQUENCY_ATTR_PASSIVE_SCAN                     = 0x3\n\tNL80211_FREQUENCY_ATTR_PSD                              = 0x1c\n\tNL80211_FREQUENCY_ATTR_RADAR                            = 0x5\n\tNL80211_FREQUENCY_ATTR_WMM                              = 0x12\n\tNL80211_FTM_RESP_ATTR_CIVICLOC                          = 0x3\n\tNL80211_FTM_RESP_ATTR_ENABLED                           = 0x1\n\tNL80211_FTM_RESP_ATTR_LCI                               = 0x2\n\tNL80211_FTM_RESP_ATTR_MAX                               = 0x3\n\tNL80211_FTM_STATS_ASAP_NUM                              = 0x4\n\tNL80211_FTM_STATS_FAILED_NUM                            = 0x3\n\tNL80211_FTM_STATS_MAX                                   = 0xa\n\tNL80211_FTM_STATS_NON_ASAP_NUM                          = 0x5\n\tNL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM            = 0x9\n\tNL80211_FTM_STATS_PAD                                   = 0xa\n\tNL80211_FTM_STATS_PARTIAL_NUM                           = 0x2\n\tNL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM               = 0x8\n\tNL80211_FTM_STATS_SUCCESS_NUM                           = 0x1\n\tNL80211_FTM_STATS_TOTAL_DURATION_MSEC                   = 0x6\n\tNL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM                  = 0x7\n\tNL80211_GENL_NAME                                       = \"nl80211\"\n\tNL80211_HE_BSS_COLOR_ATTR_COLOR                         = 0x1\n\tNL80211_HE_BSS_COLOR_ATTR_DISABLED                      = 0x2\n\tNL80211_HE_BSS_COLOR_ATTR_MAX                           = 0x3\n\tNL80211_HE_BSS_COLOR_ATTR_PARTIAL                       = 0x3\n\tNL80211_HE_MAX_CAPABILITY_LEN                           = 0x36\n\tNL80211_HE_MIN_CAPABILITY_LEN                           = 0x10\n\tNL80211_HE_NSS_MAX                                      = 0x8\n\tNL80211_HE_OBSS_PD_ATTR_BSS_COLOR_BITMAP                = 0x4\n\tNL80211_HE_OBSS_PD_ATTR_MAX                             = 0x6\n\tNL80211_HE_OBSS_PD_ATTR_MAX_OFFSET                      = 0x2\n\tNL80211_HE_OBSS_PD_ATTR_MIN_OFFSET                      = 0x1\n\tNL80211_HE_OBSS_PD_ATTR_NON_SRG_MAX_OFFSET              = 0x3\n\tNL80211_HE_OBSS_PD_ATTR_PARTIAL_BSSID_BITMAP            = 0x5\n\tNL80211_HE_OBSS_PD_ATTR_SR_CTRL                         = 0x6\n\tNL80211_HIDDEN_SSID_NOT_IN_USE                          = 0x0\n\tNL80211_HIDDEN_SSID_ZERO_CONTENTS                       = 0x2\n\tNL80211_HIDDEN_SSID_ZERO_LEN                            = 0x1\n\tNL80211_HT_CAPABILITY_LEN                               = 0x1a\n\tNL80211_IFACE_COMB_BI_MIN_GCD                           = 0x7\n\tNL80211_IFACE_COMB_LIMITS                               = 0x1\n\tNL80211_IFACE_COMB_MAXNUM                               = 0x2\n\tNL80211_IFACE_COMB_NUM_CHANNELS                         = 0x4\n\tNL80211_IFACE_COMB_RADAR_DETECT_REGIONS                 = 0x6\n\tNL80211_IFACE_COMB_RADAR_DETECT_WIDTHS                  = 0x5\n\tNL80211_IFACE_COMB_STA_AP_BI_MATCH                      = 0x3\n\tNL80211_IFACE_COMB_UNSPEC                               = 0x0\n\tNL80211_IFACE_LIMIT_MAX                                 = 0x1\n\tNL80211_IFACE_LIMIT_TYPES                               = 0x2\n\tNL80211_IFACE_LIMIT_UNSPEC                              = 0x0\n\tNL80211_IFTYPE_ADHOC                                    = 0x1\n\tNL80211_IFTYPE_AKM_ATTR_IFTYPES                         = 0x1\n\tNL80211_IFTYPE_AKM_ATTR_MAX                             = 0x2\n\tNL80211_IFTYPE_AKM_ATTR_SUITES                          = 0x2\n\tNL80211_IFTYPE_AP                                       = 0x3\n\tNL80211_IFTYPE_AP_VLAN                                  = 0x4\n\tNL80211_IFTYPE_MAX                                      = 0xc\n\tNL80211_IFTYPE_MESH_POINT                               = 0x7\n\tNL80211_IFTYPE_MONITOR                                  = 0x6\n\tNL80211_IFTYPE_NAN                                      = 0xc\n\tNL80211_IFTYPE_OCB                                      = 0xb\n\tNL80211_IFTYPE_P2P_CLIENT                               = 0x8\n\tNL80211_IFTYPE_P2P_DEVICE                               = 0xa\n\tNL80211_IFTYPE_P2P_GO                                   = 0x9\n\tNL80211_IFTYPE_STATION                                  = 0x2\n\tNL80211_IFTYPE_UNSPECIFIED                              = 0x0\n\tNL80211_IFTYPE_WDS                                      = 0x5\n\tNL80211_KCK_EXT_LEN_32                                  = 0x20\n\tNL80211_KCK_EXT_LEN                                     = 0x18\n\tNL80211_KCK_LEN                                         = 0x10\n\tNL80211_KEK_EXT_LEN                                     = 0x20\n\tNL80211_KEK_LEN                                         = 0x10\n\tNL80211_KEY_CIPHER                                      = 0x3\n\tNL80211_KEY_DATA                                        = 0x1\n\tNL80211_KEY_DEFAULT_BEACON                              = 0xa\n\tNL80211_KEY_DEFAULT                                     = 0x5\n\tNL80211_KEY_DEFAULT_MGMT                                = 0x6\n\tNL80211_KEY_DEFAULT_TYPE_MULTICAST                      = 0x2\n\tNL80211_KEY_DEFAULT_TYPES                               = 0x8\n\tNL80211_KEY_DEFAULT_TYPE_UNICAST                        = 0x1\n\tNL80211_KEY_IDX                                         = 0x2\n\tNL80211_KEY_MAX                                         = 0xa\n\tNL80211_KEY_MODE                                        = 0x9\n\tNL80211_KEY_NO_TX                                       = 0x1\n\tNL80211_KEY_RX_TX                                       = 0x0\n\tNL80211_KEY_SEQ                                         = 0x4\n\tNL80211_KEY_SET_TX                                      = 0x2\n\tNL80211_KEY_TYPE                                        = 0x7\n\tNL80211_KEYTYPE_GROUP                                   = 0x0\n\tNL80211_KEYTYPE_PAIRWISE                                = 0x1\n\tNL80211_KEYTYPE_PEERKEY                                 = 0x2\n\tNL80211_MAX_NR_AKM_SUITES                               = 0x2\n\tNL80211_MAX_NR_CIPHER_SUITES                            = 0x5\n\tNL80211_MAX_SUPP_HT_RATES                               = 0x4d\n\tNL80211_MAX_SUPP_RATES                                  = 0x20\n\tNL80211_MAX_SUPP_REG_RULES                              = 0x80\n\tNL80211_MAX_SUPP_SELECTORS                              = 0x80\n\tNL80211_MBSSID_CONFIG_ATTR_EMA                          = 0x5\n\tNL80211_MBSSID_CONFIG_ATTR_INDEX                        = 0x3\n\tNL80211_MBSSID_CONFIG_ATTR_MAX                          = 0x6\n\tNL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY  = 0x2\n\tNL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES               = 0x1\n\tNL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX                   = 0x4\n\tNL80211_MESHCONF_ATTR_MAX                               = 0x1f\n\tNL80211_MESHCONF_AUTO_OPEN_PLINKS                       = 0x7\n\tNL80211_MESHCONF_AWAKE_WINDOW                           = 0x1b\n\tNL80211_MESHCONF_CONFIRM_TIMEOUT                        = 0x2\n\tNL80211_MESHCONF_CONNECTED_TO_AS                        = 0x1f\n\tNL80211_MESHCONF_CONNECTED_TO_GATE                      = 0x1d\n\tNL80211_MESHCONF_ELEMENT_TTL                            = 0xf\n\tNL80211_MESHCONF_FORWARDING                             = 0x13\n\tNL80211_MESHCONF_GATE_ANNOUNCEMENTS                     = 0x11\n\tNL80211_MESHCONF_HOLDING_TIMEOUT                        = 0x3\n\tNL80211_MESHCONF_HT_OPMODE                              = 0x16\n\tNL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT               = 0xb\n\tNL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL             = 0x19\n\tNL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES                  = 0x8\n\tNL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME                = 0xd\n\tNL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT              = 0x17\n\tNL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL                 = 0x12\n\tNL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL                 = 0xc\n\tNL80211_MESHCONF_HWMP_RANN_INTERVAL                     = 0x10\n\tNL80211_MESHCONF_HWMP_ROOT_INTERVAL                     = 0x18\n\tNL80211_MESHCONF_HWMP_ROOTMODE                          = 0xe\n\tNL80211_MESHCONF_MAX_PEER_LINKS                         = 0x4\n\tNL80211_MESHCONF_MAX_RETRIES                            = 0x5\n\tNL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT                  = 0xa\n\tNL80211_MESHCONF_NOLEARN                                = 0x1e\n\tNL80211_MESHCONF_PATH_REFRESH_TIME                      = 0x9\n\tNL80211_MESHCONF_PLINK_TIMEOUT                          = 0x1c\n\tNL80211_MESHCONF_POWER_MODE                             = 0x1a\n\tNL80211_MESHCONF_RETRY_TIMEOUT                          = 0x1\n\tNL80211_MESHCONF_RSSI_THRESHOLD                         = 0x14\n\tNL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR               = 0x15\n\tNL80211_MESHCONF_TTL                                    = 0x6\n\tNL80211_MESH_POWER_ACTIVE                               = 0x1\n\tNL80211_MESH_POWER_DEEP_SLEEP                           = 0x3\n\tNL80211_MESH_POWER_LIGHT_SLEEP                          = 0x2\n\tNL80211_MESH_POWER_MAX                                  = 0x3\n\tNL80211_MESH_POWER_UNKNOWN                              = 0x0\n\tNL80211_MESH_SETUP_ATTR_MAX                             = 0x8\n\tNL80211_MESH_SETUP_AUTH_PROTOCOL                        = 0x8\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_METRIC                 = 0x2\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL               = 0x1\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_SYNC                   = 0x6\n\tNL80211_MESH_SETUP_IE                                   = 0x3\n\tNL80211_MESH_SETUP_USERSPACE_AMPE                       = 0x5\n\tNL80211_MESH_SETUP_USERSPACE_AUTH                       = 0x4\n\tNL80211_MESH_SETUP_USERSPACE_MPM                        = 0x7\n\tNL80211_MESH_SETUP_VENDOR_PATH_SEL_IE                   = 0x3\n\tNL80211_MFP_NO                                          = 0x0\n\tNL80211_MFP_OPTIONAL                                    = 0x2\n\tNL80211_MFP_REQUIRED                                    = 0x1\n\tNL80211_MIN_REMAIN_ON_CHANNEL_TIME                      = 0xa\n\tNL80211_MNTR_FLAG_ACTIVE                                = 0x6\n\tNL80211_MNTR_FLAG_CONTROL                               = 0x3\n\tNL80211_MNTR_FLAG_COOK_FRAMES                           = 0x5\n\tNL80211_MNTR_FLAG_FCSFAIL                               = 0x1\n\tNL80211_MNTR_FLAG_MAX                                   = 0x7\n\tNL80211_MNTR_FLAG_OTHER_BSS                             = 0x4\n\tNL80211_MNTR_FLAG_PLCPFAIL                              = 0x2\n\tNL80211_MPATH_FLAG_ACTIVE                               = 0x1\n\tNL80211_MPATH_FLAG_FIXED                                = 0x8\n\tNL80211_MPATH_FLAG_RESOLVED                             = 0x10\n\tNL80211_MPATH_FLAG_RESOLVING                            = 0x2\n\tNL80211_MPATH_FLAG_SN_VALID                             = 0x4\n\tNL80211_MPATH_INFO_DISCOVERY_RETRIES                    = 0x7\n\tNL80211_MPATH_INFO_DISCOVERY_TIMEOUT                    = 0x6\n\tNL80211_MPATH_INFO_EXPTIME                              = 0x4\n\tNL80211_MPATH_INFO_FLAGS                                = 0x5\n\tNL80211_MPATH_INFO_FRAME_QLEN                           = 0x1\n\tNL80211_MPATH_INFO_HOP_COUNT                            = 0x8\n\tNL80211_MPATH_INFO_MAX                                  = 0x9\n\tNL80211_MPATH_INFO_METRIC                               = 0x3\n\tNL80211_MPATH_INFO_PATH_CHANGE                          = 0x9\n\tNL80211_MPATH_INFO_SN                                   = 0x2\n\tNL80211_MULTICAST_GROUP_CONFIG                          = \"config\"\n\tNL80211_MULTICAST_GROUP_MLME                            = \"mlme\"\n\tNL80211_MULTICAST_GROUP_NAN                             = \"nan\"\n\tNL80211_MULTICAST_GROUP_REG                             = \"regulatory\"\n\tNL80211_MULTICAST_GROUP_SCAN                            = \"scan\"\n\tNL80211_MULTICAST_GROUP_TESTMODE                        = \"testmode\"\n\tNL80211_MULTICAST_GROUP_VENDOR                          = \"vendor\"\n\tNL80211_NAN_FUNC_ATTR_MAX                               = 0x10\n\tNL80211_NAN_FUNC_CLOSE_RANGE                            = 0x9\n\tNL80211_NAN_FUNC_FOLLOW_UP                              = 0x2\n\tNL80211_NAN_FUNC_FOLLOW_UP_DEST                         = 0x8\n\tNL80211_NAN_FUNC_FOLLOW_UP_ID                           = 0x6\n\tNL80211_NAN_FUNC_FOLLOW_UP_REQ_ID                       = 0x7\n\tNL80211_NAN_FUNC_INSTANCE_ID                            = 0xf\n\tNL80211_NAN_FUNC_MAX_TYPE                               = 0x2\n\tNL80211_NAN_FUNC_PUBLISH_BCAST                          = 0x4\n\tNL80211_NAN_FUNC_PUBLISH                                = 0x0\n\tNL80211_NAN_FUNC_PUBLISH_TYPE                           = 0x3\n\tNL80211_NAN_FUNC_RX_MATCH_FILTER                        = 0xd\n\tNL80211_NAN_FUNC_SERVICE_ID                             = 0x2\n\tNL80211_NAN_FUNC_SERVICE_ID_LEN                         = 0x6\n\tNL80211_NAN_FUNC_SERVICE_INFO                           = 0xb\n\tNL80211_NAN_FUNC_SERVICE_SPEC_INFO_MAX_LEN              = 0xff\n\tNL80211_NAN_FUNC_SRF                                    = 0xc\n\tNL80211_NAN_FUNC_SRF_MAX_LEN                            = 0xff\n\tNL80211_NAN_FUNC_SUBSCRIBE_ACTIVE                       = 0x5\n\tNL80211_NAN_FUNC_SUBSCRIBE                              = 0x1\n\tNL80211_NAN_FUNC_TERM_REASON                            = 0x10\n\tNL80211_NAN_FUNC_TERM_REASON_ERROR                      = 0x2\n\tNL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED                = 0x1\n\tNL80211_NAN_FUNC_TERM_REASON_USER_REQUEST               = 0x0\n\tNL80211_NAN_FUNC_TTL                                    = 0xa\n\tNL80211_NAN_FUNC_TX_MATCH_FILTER                        = 0xe\n\tNL80211_NAN_FUNC_TYPE                                   = 0x1\n\tNL80211_NAN_MATCH_ATTR_MAX                              = 0x2\n\tNL80211_NAN_MATCH_FUNC_LOCAL                            = 0x1\n\tNL80211_NAN_MATCH_FUNC_PEER                             = 0x2\n\tNL80211_NAN_SOLICITED_PUBLISH                           = 0x1\n\tNL80211_NAN_SRF_ATTR_MAX                                = 0x4\n\tNL80211_NAN_SRF_BF                                      = 0x2\n\tNL80211_NAN_SRF_BF_IDX                                  = 0x3\n\tNL80211_NAN_SRF_INCLUDE                                 = 0x1\n\tNL80211_NAN_SRF_MAC_ADDRS                               = 0x4\n\tNL80211_NAN_UNSOLICITED_PUBLISH                         = 0x2\n\tNL80211_NUM_ACS                                         = 0x4\n\tNL80211_P2P_PS_SUPPORTED                                = 0x1\n\tNL80211_P2P_PS_UNSUPPORTED                              = 0x0\n\tNL80211_PKTPAT_MASK                                     = 0x1\n\tNL80211_PKTPAT_OFFSET                                   = 0x3\n\tNL80211_PKTPAT_PATTERN                                  = 0x2\n\tNL80211_PLINK_ACTION_BLOCK                              = 0x2\n\tNL80211_PLINK_ACTION_NO_ACTION                          = 0x0\n\tNL80211_PLINK_ACTION_OPEN                               = 0x1\n\tNL80211_PLINK_BLOCKED                                   = 0x6\n\tNL80211_PLINK_CNF_RCVD                                  = 0x3\n\tNL80211_PLINK_ESTAB                                     = 0x4\n\tNL80211_PLINK_HOLDING                                   = 0x5\n\tNL80211_PLINK_LISTEN                                    = 0x0\n\tNL80211_PLINK_OPN_RCVD                                  = 0x2\n\tNL80211_PLINK_OPN_SNT                                   = 0x1\n\tNL80211_PMKSA_CANDIDATE_BSSID                           = 0x2\n\tNL80211_PMKSA_CANDIDATE_INDEX                           = 0x1\n\tNL80211_PMKSA_CANDIDATE_PREAUTH                         = 0x3\n\tNL80211_PMSR_ATTR_MAX                                   = 0x5\n\tNL80211_PMSR_ATTR_MAX_PEERS                             = 0x1\n\tNL80211_PMSR_ATTR_PEERS                                 = 0x5\n\tNL80211_PMSR_ATTR_RANDOMIZE_MAC_ADDR                    = 0x3\n\tNL80211_PMSR_ATTR_REPORT_AP_TSF                         = 0x2\n\tNL80211_PMSR_ATTR_TYPE_CAPA                             = 0x4\n\tNL80211_PMSR_FTM_CAPA_ATTR_ASAP                         = 0x1\n\tNL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS                   = 0x6\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT          = 0x7\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX                          = 0xa\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST           = 0x8\n\tNL80211_PMSR_FTM_CAPA_ATTR_NON_ASAP                     = 0x2\n\tNL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED            = 0xa\n\tNL80211_PMSR_FTM_CAPA_ATTR_PREAMBLES                    = 0x5\n\tNL80211_PMSR_FTM_CAPA_ATTR_REQ_CIVICLOC                 = 0x4\n\tNL80211_PMSR_FTM_CAPA_ATTR_REQ_LCI                      = 0x3\n\tNL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED                = 0x9\n\tNL80211_PMSR_FTM_FAILURE_BAD_CHANGED_PARAMS             = 0x7\n\tNL80211_PMSR_FTM_FAILURE_INVALID_TIMESTAMP              = 0x5\n\tNL80211_PMSR_FTM_FAILURE_NO_RESPONSE                    = 0x1\n\tNL80211_PMSR_FTM_FAILURE_PEER_BUSY                      = 0x6\n\tNL80211_PMSR_FTM_FAILURE_PEER_NOT_CAPABLE               = 0x4\n\tNL80211_PMSR_FTM_FAILURE_REJECTED                       = 0x2\n\tNL80211_PMSR_FTM_FAILURE_UNSPECIFIED                    = 0x0\n\tNL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL                  = 0x3\n\tNL80211_PMSR_FTM_REQ_ATTR_ASAP                          = 0x1\n\tNL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR                     = 0xd\n\tNL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION                = 0x5\n\tNL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD                  = 0x4\n\tNL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST                = 0x6\n\tNL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK                  = 0xc\n\tNL80211_PMSR_FTM_REQ_ATTR_MAX                           = 0xd\n\tNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED             = 0xb\n\tNL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP                = 0x3\n\tNL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES              = 0x7\n\tNL80211_PMSR_FTM_REQ_ATTR_PREAMBLE                      = 0x2\n\tNL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC              = 0x9\n\tNL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI                   = 0x8\n\tNL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED                 = 0xa\n\tNL80211_PMSR_FTM_RESP_ATTR_BURST_DURATION               = 0x7\n\tNL80211_PMSR_FTM_RESP_ATTR_BURST_INDEX                  = 0x2\n\tNL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME              = 0x5\n\tNL80211_PMSR_FTM_RESP_ATTR_CIVICLOC                     = 0x14\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_AVG                     = 0x10\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_SPREAD                  = 0x12\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_VARIANCE                = 0x11\n\tNL80211_PMSR_FTM_RESP_ATTR_FAIL_REASON                  = 0x1\n\tNL80211_PMSR_FTM_RESP_ATTR_FTMS_PER_BURST               = 0x8\n\tNL80211_PMSR_FTM_RESP_ATTR_LCI                          = 0x13\n\tNL80211_PMSR_FTM_RESP_ATTR_MAX                          = 0x15\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_BURSTS_EXP               = 0x6\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_ATTEMPTS            = 0x3\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_SUCCESSES           = 0x4\n\tNL80211_PMSR_FTM_RESP_ATTR_PAD                          = 0x15\n\tNL80211_PMSR_FTM_RESP_ATTR_RSSI_AVG                     = 0x9\n\tNL80211_PMSR_FTM_RESP_ATTR_RSSI_SPREAD                  = 0xa\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_AVG                      = 0xd\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_SPREAD                   = 0xf\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_VARIANCE                 = 0xe\n\tNL80211_PMSR_FTM_RESP_ATTR_RX_RATE                      = 0xc\n\tNL80211_PMSR_FTM_RESP_ATTR_TX_RATE                      = 0xb\n\tNL80211_PMSR_PEER_ATTR_ADDR                             = 0x1\n\tNL80211_PMSR_PEER_ATTR_CHAN                             = 0x2\n\tNL80211_PMSR_PEER_ATTR_MAX                              = 0x4\n\tNL80211_PMSR_PEER_ATTR_REQ                              = 0x3\n\tNL80211_PMSR_PEER_ATTR_RESP                             = 0x4\n\tNL80211_PMSR_REQ_ATTR_DATA                              = 0x1\n\tNL80211_PMSR_REQ_ATTR_GET_AP_TSF                        = 0x2\n\tNL80211_PMSR_REQ_ATTR_MAX                               = 0x2\n\tNL80211_PMSR_RESP_ATTR_AP_TSF                           = 0x4\n\tNL80211_PMSR_RESP_ATTR_DATA                             = 0x1\n\tNL80211_PMSR_RESP_ATTR_FINAL                            = 0x5\n\tNL80211_PMSR_RESP_ATTR_HOST_TIME                        = 0x3\n\tNL80211_PMSR_RESP_ATTR_MAX                              = 0x6\n\tNL80211_PMSR_RESP_ATTR_PAD                              = 0x6\n\tNL80211_PMSR_RESP_ATTR_STATUS                           = 0x2\n\tNL80211_PMSR_STATUS_FAILURE                             = 0x3\n\tNL80211_PMSR_STATUS_REFUSED                             = 0x1\n\tNL80211_PMSR_STATUS_SUCCESS                             = 0x0\n\tNL80211_PMSR_STATUS_TIMEOUT                             = 0x2\n\tNL80211_PMSR_TYPE_FTM                                   = 0x1\n\tNL80211_PMSR_TYPE_INVALID                               = 0x0\n\tNL80211_PMSR_TYPE_MAX                                   = 0x1\n\tNL80211_PREAMBLE_DMG                                    = 0x3\n\tNL80211_PREAMBLE_HE                                     = 0x4\n\tNL80211_PREAMBLE_HT                                     = 0x1\n\tNL80211_PREAMBLE_LEGACY                                 = 0x0\n\tNL80211_PREAMBLE_VHT                                    = 0x2\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U               = 0x8\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P                  = 0x4\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2                 = 0x2\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS                  = 0x1\n\tNL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP               = 0x1\n\tNL80211_PS_DISABLED                                     = 0x0\n\tNL80211_PS_ENABLED                                      = 0x1\n\tNL80211_RADAR_CAC_ABORTED                               = 0x2\n\tNL80211_RADAR_CAC_FINISHED                              = 0x1\n\tNL80211_RADAR_CAC_STARTED                               = 0x5\n\tNL80211_RADAR_DETECTED                                  = 0x0\n\tNL80211_RADAR_NOP_FINISHED                              = 0x3\n\tNL80211_RADAR_PRE_CAC_EXPIRED                           = 0x4\n\tNL80211_RATE_INFO_10_MHZ_WIDTH                          = 0xb\n\tNL80211_RATE_INFO_160_MHZ_WIDTH                         = 0xa\n\tNL80211_RATE_INFO_16_MHZ_WIDTH                          = 0x1d\n\tNL80211_RATE_INFO_1_MHZ_WIDTH                           = 0x19\n\tNL80211_RATE_INFO_2_MHZ_WIDTH                           = 0x1a\n\tNL80211_RATE_INFO_320_MHZ_WIDTH                         = 0x12\n\tNL80211_RATE_INFO_40_MHZ_WIDTH                          = 0x3\n\tNL80211_RATE_INFO_4_MHZ_WIDTH                           = 0x1b\n\tNL80211_RATE_INFO_5_MHZ_WIDTH                           = 0xc\n\tNL80211_RATE_INFO_80_MHZ_WIDTH                          = 0x8\n\tNL80211_RATE_INFO_80P80_MHZ_WIDTH                       = 0x9\n\tNL80211_RATE_INFO_8_MHZ_WIDTH                           = 0x1c\n\tNL80211_RATE_INFO_BITRATE32                             = 0x5\n\tNL80211_RATE_INFO_BITRATE                               = 0x1\n\tNL80211_RATE_INFO_EHT_GI_0_8                            = 0x0\n\tNL80211_RATE_INFO_EHT_GI_1_6                            = 0x1\n\tNL80211_RATE_INFO_EHT_GI_3_2                            = 0x2\n\tNL80211_RATE_INFO_EHT_GI                                = 0x15\n\tNL80211_RATE_INFO_EHT_MCS                               = 0x13\n\tNL80211_RATE_INFO_EHT_NSS                               = 0x14\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_106                      = 0x3\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_106P26                   = 0x4\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_242                      = 0x5\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_26                       = 0x0\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_2x996                    = 0xb\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484                = 0xc\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_3x996                    = 0xd\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484                = 0xe\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_484                      = 0x6\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_484P242                  = 0x7\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_4x996                    = 0xf\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_52                       = 0x1\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_52P26                    = 0x2\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996                      = 0x8\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996P484                  = 0x9\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242              = 0xa\n\tNL80211_RATE_INFO_EHT_RU_ALLOC                          = 0x16\n\tNL80211_RATE_INFO_HE_1XLTF                              = 0x0\n\tNL80211_RATE_INFO_HE_2XLTF                              = 0x1\n\tNL80211_RATE_INFO_HE_4XLTF                              = 0x2\n\tNL80211_RATE_INFO_HE_DCM                                = 0x10\n\tNL80211_RATE_INFO_HE_GI_0_8                             = 0x0\n\tNL80211_RATE_INFO_HE_GI_1_6                             = 0x1\n\tNL80211_RATE_INFO_HE_GI_3_2                             = 0x2\n\tNL80211_RATE_INFO_HE_GI                                 = 0xf\n\tNL80211_RATE_INFO_HE_MCS                                = 0xd\n\tNL80211_RATE_INFO_HE_NSS                                = 0xe\n\tNL80211_RATE_INFO_HE_RU_ALLOC_106                       = 0x2\n\tNL80211_RATE_INFO_HE_RU_ALLOC_242                       = 0x3\n\tNL80211_RATE_INFO_HE_RU_ALLOC_26                        = 0x0\n\tNL80211_RATE_INFO_HE_RU_ALLOC_2x996                     = 0x6\n\tNL80211_RATE_INFO_HE_RU_ALLOC_484                       = 0x4\n\tNL80211_RATE_INFO_HE_RU_ALLOC_52                        = 0x1\n\tNL80211_RATE_INFO_HE_RU_ALLOC_996                       = 0x5\n\tNL80211_RATE_INFO_HE_RU_ALLOC                           = 0x11\n\tNL80211_RATE_INFO_MAX                                   = 0x1d\n\tNL80211_RATE_INFO_MCS                                   = 0x2\n\tNL80211_RATE_INFO_S1G_MCS                               = 0x17\n\tNL80211_RATE_INFO_S1G_NSS                               = 0x18\n\tNL80211_RATE_INFO_SHORT_GI                              = 0x4\n\tNL80211_RATE_INFO_VHT_MCS                               = 0x6\n\tNL80211_RATE_INFO_VHT_NSS                               = 0x7\n\tNL80211_REGDOM_SET_BY_CORE                              = 0x0\n\tNL80211_REGDOM_SET_BY_COUNTRY_IE                        = 0x3\n\tNL80211_REGDOM_SET_BY_DRIVER                            = 0x2\n\tNL80211_REGDOM_SET_BY_USER                              = 0x1\n\tNL80211_REGDOM_TYPE_COUNTRY                             = 0x0\n\tNL80211_REGDOM_TYPE_CUSTOM_WORLD                        = 0x2\n\tNL80211_REGDOM_TYPE_INTERSECTION                        = 0x3\n\tNL80211_REGDOM_TYPE_WORLD                               = 0x1\n\tNL80211_REG_RULE_ATTR_MAX                               = 0x8\n\tNL80211_REKEY_DATA_AKM                                  = 0x4\n\tNL80211_REKEY_DATA_KCK                                  = 0x2\n\tNL80211_REKEY_DATA_KEK                                  = 0x1\n\tNL80211_REKEY_DATA_REPLAY_CTR                           = 0x3\n\tNL80211_REPLAY_CTR_LEN                                  = 0x8\n\tNL80211_RRF_ALLOW_6GHZ_VLP_AP                           = 0x1000000\n\tNL80211_RRF_AUTO_BW                                     = 0x800\n\tNL80211_RRF_DFS                                         = 0x10\n\tNL80211_RRF_DFS_CONCURRENT                              = 0x200000\n\tNL80211_RRF_GO_CONCURRENT                               = 0x1000\n\tNL80211_RRF_IR_CONCURRENT                               = 0x1000\n\tNL80211_RRF_NO_160MHZ                                   = 0x10000\n\tNL80211_RRF_NO_320MHZ                                   = 0x40000\n\tNL80211_RRF_NO_6GHZ_AFC_CLIENT                          = 0x800000\n\tNL80211_RRF_NO_6GHZ_VLP_CLIENT                          = 0x400000\n\tNL80211_RRF_NO_80MHZ                                    = 0x8000\n\tNL80211_RRF_NO_CCK                                      = 0x2\n\tNL80211_RRF_NO_EHT                                      = 0x80000\n\tNL80211_RRF_NO_HE                                       = 0x20000\n\tNL80211_RRF_NO_HT40                                     = 0x6000\n\tNL80211_RRF_NO_HT40MINUS                                = 0x2000\n\tNL80211_RRF_NO_HT40PLUS                                 = 0x4000\n\tNL80211_RRF_NO_IBSS                                     = 0x80\n\tNL80211_RRF_NO_INDOOR                                   = 0x4\n\tNL80211_RRF_NO_IR_ALL                                   = 0x180\n\tNL80211_RRF_NO_IR                                       = 0x80\n\tNL80211_RRF_NO_OFDM                                     = 0x1\n\tNL80211_RRF_NO_OUTDOOR                                  = 0x8\n\tNL80211_RRF_NO_UHB_AFC_CLIENT                           = 0x800000\n\tNL80211_RRF_NO_UHB_VLP_CLIENT                           = 0x400000\n\tNL80211_RRF_PASSIVE_SCAN                                = 0x80\n\tNL80211_RRF_PSD                                         = 0x100000\n\tNL80211_RRF_PTMP_ONLY                                   = 0x40\n\tNL80211_RRF_PTP_ONLY                                    = 0x20\n\tNL80211_RXMGMT_FLAG_ANSWERED                            = 0x1\n\tNL80211_RXMGMT_FLAG_EXTERNAL_AUTH                       = 0x2\n\tNL80211_SAE_PWE_BOTH                                    = 0x3\n\tNL80211_SAE_PWE_HASH_TO_ELEMENT                         = 0x2\n\tNL80211_SAE_PWE_HUNT_AND_PECK                           = 0x1\n\tNL80211_SAE_PWE_UNSPECIFIED                             = 0x0\n\tNL80211_SAR_ATTR_MAX                                    = 0x2\n\tNL80211_SAR_ATTR_SPECS                                  = 0x2\n\tNL80211_SAR_ATTR_SPECS_END_FREQ                         = 0x4\n\tNL80211_SAR_ATTR_SPECS_MAX                              = 0x4\n\tNL80211_SAR_ATTR_SPECS_POWER                            = 0x1\n\tNL80211_SAR_ATTR_SPECS_RANGE_INDEX                      = 0x2\n\tNL80211_SAR_ATTR_SPECS_START_FREQ                       = 0x3\n\tNL80211_SAR_ATTR_TYPE                                   = 0x1\n\tNL80211_SAR_TYPE_POWER                                  = 0x0\n\tNL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP               = 0x20\n\tNL80211_SCAN_FLAG_AP                                    = 0x4\n\tNL80211_SCAN_FLAG_COLOCATED_6GHZ                        = 0x4000\n\tNL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME                 = 0x10\n\tNL80211_SCAN_FLAG_FLUSH                                 = 0x2\n\tNL80211_SCAN_FLAG_FREQ_KHZ                              = 0x2000\n\tNL80211_SCAN_FLAG_HIGH_ACCURACY                         = 0x400\n\tNL80211_SCAN_FLAG_LOW_POWER                             = 0x200\n\tNL80211_SCAN_FLAG_LOW_PRIORITY                          = 0x1\n\tNL80211_SCAN_FLAG_LOW_SPAN                              = 0x100\n\tNL80211_SCAN_FLAG_MIN_PREQ_CONTENT                      = 0x1000\n\tNL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION    = 0x80\n\tNL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE            = 0x40\n\tNL80211_SCAN_FLAG_RANDOM_ADDR                           = 0x8\n\tNL80211_SCAN_FLAG_RANDOM_SN                             = 0x800\n\tNL80211_SCAN_RSSI_THOLD_OFF                             = -0x12c\n\tNL80211_SCHED_SCAN_MATCH_ATTR_BSSID                     = 0x5\n\tNL80211_SCHED_SCAN_MATCH_ATTR_MAX                       = 0x6\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI             = 0x3\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST               = 0x4\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RSSI                      = 0x2\n\tNL80211_SCHED_SCAN_MATCH_ATTR_SSID                      = 0x1\n\tNL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI                  = 0x6\n\tNL80211_SCHED_SCAN_PLAN_INTERVAL                        = 0x1\n\tNL80211_SCHED_SCAN_PLAN_ITERATIONS                      = 0x2\n\tNL80211_SCHED_SCAN_PLAN_MAX                             = 0x2\n\tNL80211_SMPS_DYNAMIC                                    = 0x2\n\tNL80211_SMPS_MAX                                        = 0x2\n\tNL80211_SMPS_OFF                                        = 0x0\n\tNL80211_SMPS_STATIC                                     = 0x1\n\tNL80211_STA_BSS_PARAM_BEACON_INTERVAL                   = 0x5\n\tNL80211_STA_BSS_PARAM_CTS_PROT                          = 0x1\n\tNL80211_STA_BSS_PARAM_DTIM_PERIOD                       = 0x4\n\tNL80211_STA_BSS_PARAM_MAX                               = 0x5\n\tNL80211_STA_BSS_PARAM_SHORT_PREAMBLE                    = 0x2\n\tNL80211_STA_BSS_PARAM_SHORT_SLOT_TIME                   = 0x3\n\tNL80211_STA_FLAG_ASSOCIATED                             = 0x7\n\tNL80211_STA_FLAG_AUTHENTICATED                          = 0x5\n\tNL80211_STA_FLAG_AUTHORIZED                             = 0x1\n\tNL80211_STA_FLAG_MAX                                    = 0x8\n\tNL80211_STA_FLAG_MAX_OLD_API                            = 0x6\n\tNL80211_STA_FLAG_MFP                                    = 0x4\n\tNL80211_STA_FLAG_SHORT_PREAMBLE                         = 0x2\n\tNL80211_STA_FLAG_SPP_AMSDU                              = 0x8\n\tNL80211_STA_FLAG_TDLS_PEER                              = 0x6\n\tNL80211_STA_FLAG_WME                                    = 0x3\n\tNL80211_STA_INFO_ACK_SIGNAL_AVG                         = 0x23\n\tNL80211_STA_INFO_ACK_SIGNAL                             = 0x22\n\tNL80211_STA_INFO_AIRTIME_LINK_METRIC                    = 0x29\n\tNL80211_STA_INFO_AIRTIME_WEIGHT                         = 0x28\n\tNL80211_STA_INFO_ASSOC_AT_BOOTTIME                      = 0x2a\n\tNL80211_STA_INFO_BEACON_LOSS                            = 0x12\n\tNL80211_STA_INFO_BEACON_RX                              = 0x1d\n\tNL80211_STA_INFO_BEACON_SIGNAL_AVG                      = 0x1e\n\tNL80211_STA_INFO_BSS_PARAM                              = 0xf\n\tNL80211_STA_INFO_CHAIN_SIGNAL_AVG                       = 0x1a\n\tNL80211_STA_INFO_CHAIN_SIGNAL                           = 0x19\n\tNL80211_STA_INFO_CONNECTED_TIME                         = 0x10\n\tNL80211_STA_INFO_CONNECTED_TO_AS                        = 0x2b\n\tNL80211_STA_INFO_CONNECTED_TO_GATE                      = 0x26\n\tNL80211_STA_INFO_DATA_ACK_SIGNAL_AVG                    = 0x23\n\tNL80211_STA_INFO_EXPECTED_THROUGHPUT                    = 0x1b\n\tNL80211_STA_INFO_FCS_ERROR_COUNT                        = 0x25\n\tNL80211_STA_INFO_INACTIVE_TIME                          = 0x1\n\tNL80211_STA_INFO_LLID                                   = 0x4\n\tNL80211_STA_INFO_LOCAL_PM                               = 0x14\n\tNL80211_STA_INFO_MAX                                    = 0x2b\n\tNL80211_STA_INFO_NONPEER_PM                             = 0x16\n\tNL80211_STA_INFO_PAD                                    = 0x21\n\tNL80211_STA_INFO_PEER_PM                                = 0x15\n\tNL80211_STA_INFO_PLID                                   = 0x5\n\tNL80211_STA_INFO_PLINK_STATE                            = 0x6\n\tNL80211_STA_INFO_RX_BITRATE                             = 0xe\n\tNL80211_STA_INFO_RX_BYTES64                             = 0x17\n\tNL80211_STA_INFO_RX_BYTES                               = 0x2\n\tNL80211_STA_INFO_RX_DROP_MISC                           = 0x1c\n\tNL80211_STA_INFO_RX_DURATION                            = 0x20\n\tNL80211_STA_INFO_RX_MPDUS                               = 0x24\n\tNL80211_STA_INFO_RX_PACKETS                             = 0x9\n\tNL80211_STA_INFO_SIGNAL_AVG                             = 0xd\n\tNL80211_STA_INFO_SIGNAL                                 = 0x7\n\tNL80211_STA_INFO_STA_FLAGS                              = 0x11\n\tNL80211_STA_INFO_TID_STATS                              = 0x1f\n\tNL80211_STA_INFO_T_OFFSET                               = 0x13\n\tNL80211_STA_INFO_TX_BITRATE                             = 0x8\n\tNL80211_STA_INFO_TX_BYTES64                             = 0x18\n\tNL80211_STA_INFO_TX_BYTES                               = 0x3\n\tNL80211_STA_INFO_TX_DURATION                            = 0x27\n\tNL80211_STA_INFO_TX_FAILED                              = 0xc\n\tNL80211_STA_INFO_TX_PACKETS                             = 0xa\n\tNL80211_STA_INFO_TX_RETRIES                             = 0xb\n\tNL80211_STA_WME_MAX                                     = 0x2\n\tNL80211_STA_WME_MAX_SP                                  = 0x2\n\tNL80211_STA_WME_UAPSD_QUEUES                            = 0x1\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_BUSY                   = 0x5\n\tNL80211_SURVEY_INFO_CHANNEL_TIME                        = 0x4\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY               = 0x6\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_RX                     = 0x7\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_TX                     = 0x8\n\tNL80211_SURVEY_INFO_FREQUENCY                           = 0x1\n\tNL80211_SURVEY_INFO_FREQUENCY_OFFSET                    = 0xc\n\tNL80211_SURVEY_INFO_IN_USE                              = 0x3\n\tNL80211_SURVEY_INFO_MAX                                 = 0xc\n\tNL80211_SURVEY_INFO_NOISE                               = 0x2\n\tNL80211_SURVEY_INFO_PAD                                 = 0xa\n\tNL80211_SURVEY_INFO_TIME_BSS_RX                         = 0xb\n\tNL80211_SURVEY_INFO_TIME_BUSY                           = 0x5\n\tNL80211_SURVEY_INFO_TIME                                = 0x4\n\tNL80211_SURVEY_INFO_TIME_EXT_BUSY                       = 0x6\n\tNL80211_SURVEY_INFO_TIME_RX                             = 0x7\n\tNL80211_SURVEY_INFO_TIME_SCAN                           = 0x9\n\tNL80211_SURVEY_INFO_TIME_TX                             = 0x8\n\tNL80211_TDLS_DISABLE_LINK                               = 0x4\n\tNL80211_TDLS_DISCOVERY_REQ                              = 0x0\n\tNL80211_TDLS_ENABLE_LINK                                = 0x3\n\tNL80211_TDLS_PEER_HE                                    = 0x8\n\tNL80211_TDLS_PEER_HT                                    = 0x1\n\tNL80211_TDLS_PEER_VHT                                   = 0x2\n\tNL80211_TDLS_PEER_WMM                                   = 0x4\n\tNL80211_TDLS_SETUP                                      = 0x1\n\tNL80211_TDLS_TEARDOWN                                   = 0x2\n\tNL80211_TID_CONFIG_ATTR_AMPDU_CTRL                      = 0x9\n\tNL80211_TID_CONFIG_ATTR_AMSDU_CTRL                      = 0xb\n\tNL80211_TID_CONFIG_ATTR_MAX                             = 0xd\n\tNL80211_TID_CONFIG_ATTR_NOACK                           = 0x6\n\tNL80211_TID_CONFIG_ATTR_OVERRIDE                        = 0x4\n\tNL80211_TID_CONFIG_ATTR_PAD                             = 0x1\n\tNL80211_TID_CONFIG_ATTR_PEER_SUPP                       = 0x3\n\tNL80211_TID_CONFIG_ATTR_RETRY_LONG                      = 0x8\n\tNL80211_TID_CONFIG_ATTR_RETRY_SHORT                     = 0x7\n\tNL80211_TID_CONFIG_ATTR_RTSCTS_CTRL                     = 0xa\n\tNL80211_TID_CONFIG_ATTR_TIDS                            = 0x5\n\tNL80211_TID_CONFIG_ATTR_TX_RATE                         = 0xd\n\tNL80211_TID_CONFIG_ATTR_TX_RATE_TYPE                    = 0xc\n\tNL80211_TID_CONFIG_ATTR_VIF_SUPP                        = 0x2\n\tNL80211_TID_CONFIG_DISABLE                              = 0x1\n\tNL80211_TID_CONFIG_ENABLE                               = 0x0\n\tNL80211_TID_STATS_MAX                                   = 0x6\n\tNL80211_TID_STATS_PAD                                   = 0x5\n\tNL80211_TID_STATS_RX_MSDU                               = 0x1\n\tNL80211_TID_STATS_TX_MSDU                               = 0x2\n\tNL80211_TID_STATS_TX_MSDU_FAILED                        = 0x4\n\tNL80211_TID_STATS_TX_MSDU_RETRIES                       = 0x3\n\tNL80211_TID_STATS_TXQ_STATS                             = 0x6\n\tNL80211_TIMEOUT_ASSOC                                   = 0x3\n\tNL80211_TIMEOUT_AUTH                                    = 0x2\n\tNL80211_TIMEOUT_SCAN                                    = 0x1\n\tNL80211_TIMEOUT_UNSPECIFIED                             = 0x0\n\tNL80211_TKIP_DATA_OFFSET_ENCR_KEY                       = 0x0\n\tNL80211_TKIP_DATA_OFFSET_RX_MIC_KEY                     = 0x18\n\tNL80211_TKIP_DATA_OFFSET_TX_MIC_KEY                     = 0x10\n\tNL80211_TX_POWER_AUTOMATIC                              = 0x0\n\tNL80211_TX_POWER_FIXED                                  = 0x2\n\tNL80211_TX_POWER_LIMITED                                = 0x1\n\tNL80211_TXQ_ATTR_AC                                     = 0x1\n\tNL80211_TXQ_ATTR_AIFS                                   = 0x5\n\tNL80211_TXQ_ATTR_CWMAX                                  = 0x4\n\tNL80211_TXQ_ATTR_CWMIN                                  = 0x3\n\tNL80211_TXQ_ATTR_MAX                                    = 0x5\n\tNL80211_TXQ_ATTR_QUEUE                                  = 0x1\n\tNL80211_TXQ_ATTR_TXOP                                   = 0x2\n\tNL80211_TXQ_Q_BE                                        = 0x2\n\tNL80211_TXQ_Q_BK                                        = 0x3\n\tNL80211_TXQ_Q_VI                                        = 0x1\n\tNL80211_TXQ_Q_VO                                        = 0x0\n\tNL80211_TXQ_STATS_BACKLOG_BYTES                         = 0x1\n\tNL80211_TXQ_STATS_BACKLOG_PACKETS                       = 0x2\n\tNL80211_TXQ_STATS_COLLISIONS                            = 0x8\n\tNL80211_TXQ_STATS_DROPS                                 = 0x4\n\tNL80211_TXQ_STATS_ECN_MARKS                             = 0x5\n\tNL80211_TXQ_STATS_FLOWS                                 = 0x3\n\tNL80211_TXQ_STATS_MAX                                   = 0xb\n\tNL80211_TXQ_STATS_MAX_FLOWS                             = 0xb\n\tNL80211_TXQ_STATS_OVERLIMIT                             = 0x6\n\tNL80211_TXQ_STATS_OVERMEMORY                            = 0x7\n\tNL80211_TXQ_STATS_TX_BYTES                              = 0x9\n\tNL80211_TXQ_STATS_TX_PACKETS                            = 0xa\n\tNL80211_TX_RATE_AUTOMATIC                               = 0x0\n\tNL80211_TXRATE_DEFAULT_GI                               = 0x0\n\tNL80211_TX_RATE_FIXED                                   = 0x2\n\tNL80211_TXRATE_FORCE_LGI                                = 0x2\n\tNL80211_TXRATE_FORCE_SGI                                = 0x1\n\tNL80211_TXRATE_GI                                       = 0x4\n\tNL80211_TXRATE_HE                                       = 0x5\n\tNL80211_TXRATE_HE_GI                                    = 0x6\n\tNL80211_TXRATE_HE_LTF                                   = 0x7\n\tNL80211_TXRATE_HT                                       = 0x2\n\tNL80211_TXRATE_LEGACY                                   = 0x1\n\tNL80211_TX_RATE_LIMITED                                 = 0x1\n\tNL80211_TXRATE_MAX                                      = 0x7\n\tNL80211_TXRATE_MCS                                      = 0x2\n\tNL80211_TXRATE_VHT                                      = 0x3\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_INT                 = 0x1\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_MAX                 = 0x2\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_TMPL                = 0x2\n\tNL80211_USER_REG_HINT_CELL_BASE                         = 0x1\n\tNL80211_USER_REG_HINT_INDOOR                            = 0x2\n\tNL80211_USER_REG_HINT_USER                              = 0x0\n\tNL80211_VENDOR_ID_IS_LINUX                              = 0x80000000\n\tNL80211_VHT_CAPABILITY_LEN                              = 0xc\n\tNL80211_VHT_NSS_MAX                                     = 0x8\n\tNL80211_WIPHY_NAME_MAXLEN                               = 0x40\n\tNL80211_WIPHY_RADIO_ATTR_FREQ_RANGE                     = 0x2\n\tNL80211_WIPHY_RADIO_ATTR_INDEX                          = 0x1\n\tNL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATION          = 0x3\n\tNL80211_WIPHY_RADIO_ATTR_MAX                            = 0x4\n\tNL80211_WIPHY_RADIO_FREQ_ATTR_END                       = 0x2\n\tNL80211_WIPHY_RADIO_FREQ_ATTR_MAX                       = 0x2\n\tNL80211_WIPHY_RADIO_FREQ_ATTR_START                     = 0x1\n\tNL80211_WMMR_AIFSN                                      = 0x3\n\tNL80211_WMMR_CW_MAX                                     = 0x2\n\tNL80211_WMMR_CW_MIN                                     = 0x1\n\tNL80211_WMMR_MAX                                        = 0x4\n\tNL80211_WMMR_TXOP                                       = 0x4\n\tNL80211_WOWLAN_PKTPAT_MASK                              = 0x1\n\tNL80211_WOWLAN_PKTPAT_OFFSET                            = 0x3\n\tNL80211_WOWLAN_PKTPAT_PATTERN                           = 0x2\n\tNL80211_WOWLAN_TCP_DATA_INTERVAL                        = 0x9\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD                         = 0x6\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ                     = 0x7\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN                   = 0x8\n\tNL80211_WOWLAN_TCP_DST_IPV4                             = 0x2\n\tNL80211_WOWLAN_TCP_DST_MAC                              = 0x3\n\tNL80211_WOWLAN_TCP_DST_PORT                             = 0x5\n\tNL80211_WOWLAN_TCP_SRC_IPV4                             = 0x1\n\tNL80211_WOWLAN_TCP_SRC_PORT                             = 0x4\n\tNL80211_WOWLAN_TCP_WAKE_MASK                            = 0xb\n\tNL80211_WOWLAN_TCP_WAKE_PAYLOAD                         = 0xa\n\tNL80211_WOWLAN_TRIG_4WAY_HANDSHAKE                      = 0x8\n\tNL80211_WOWLAN_TRIG_ANY                                 = 0x1\n\tNL80211_WOWLAN_TRIG_DISCONNECT                          = 0x2\n\tNL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST                   = 0x7\n\tNL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE                   = 0x6\n\tNL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED                 = 0x5\n\tNL80211_WOWLAN_TRIG_MAGIC_PKT                           = 0x3\n\tNL80211_WOWLAN_TRIG_NET_DETECT                          = 0x12\n\tNL80211_WOWLAN_TRIG_NET_DETECT_RESULTS                  = 0x13\n\tNL80211_WOWLAN_TRIG_PKT_PATTERN                         = 0x4\n\tNL80211_WOWLAN_TRIG_RFKILL_RELEASE                      = 0x9\n\tNL80211_WOWLAN_TRIG_TCP_CONNECTION                      = 0xe\n\tNL80211_WOWLAN_TRIG_UNPROTECTED_DEAUTH_DISASSOC         = 0x14\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_80211                    = 0xa\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN                = 0xb\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_8023                     = 0xc\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN                 = 0xd\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST                 = 0x10\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH                    = 0xf\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS             = 0x11\n\tNL80211_WPA_VERSION_1                                   = 0x1\n\tNL80211_WPA_VERSION_2                                   = 0x2\n\tNL80211_WPA_VERSION_3                                   = 0x4\n)\n\nconst (\n\tFRA_UNSPEC             = 0x0\n\tFRA_DST                = 0x1\n\tFRA_SRC                = 0x2\n\tFRA_IIFNAME            = 0x3\n\tFRA_GOTO               = 0x4\n\tFRA_UNUSED2            = 0x5\n\tFRA_PRIORITY           = 0x6\n\tFRA_UNUSED3            = 0x7\n\tFRA_UNUSED4            = 0x8\n\tFRA_UNUSED5            = 0x9\n\tFRA_FWMARK             = 0xa\n\tFRA_FLOW               = 0xb\n\tFRA_TUN_ID             = 0xc\n\tFRA_SUPPRESS_IFGROUP   = 0xd\n\tFRA_SUPPRESS_PREFIXLEN = 0xe\n\tFRA_TABLE              = 0xf\n\tFRA_FWMASK             = 0x10\n\tFRA_OIFNAME            = 0x11\n\tFRA_PAD                = 0x12\n\tFRA_L3MDEV             = 0x13\n\tFRA_UID_RANGE          = 0x14\n\tFRA_PROTOCOL           = 0x15\n\tFRA_IP_PROTO           = 0x16\n\tFRA_SPORT_RANGE        = 0x17\n\tFRA_DPORT_RANGE        = 0x18\n\tFR_ACT_UNSPEC          = 0x0\n\tFR_ACT_TO_TBL          = 0x1\n\tFR_ACT_GOTO            = 0x2\n\tFR_ACT_NOP             = 0x3\n\tFR_ACT_RES3            = 0x4\n\tFR_ACT_RES4            = 0x5\n\tFR_ACT_BLACKHOLE       = 0x6\n\tFR_ACT_UNREACHABLE     = 0x7\n\tFR_ACT_PROHIBIT        = 0x8\n)\n\nconst (\n\tAUDIT_NLGRP_NONE    = 0x0\n\tAUDIT_NLGRP_READLOG = 0x1\n)\n\nconst (\n\tTUN_F_CSUM    = 0x1\n\tTUN_F_TSO4    = 0x2\n\tTUN_F_TSO6    = 0x4\n\tTUN_F_TSO_ECN = 0x8\n\tTUN_F_UFO     = 0x10\n\tTUN_F_USO4    = 0x20\n\tTUN_F_USO6    = 0x40\n)\n\nconst (\n\tVIRTIO_NET_HDR_F_NEEDS_CSUM = 0x1\n\tVIRTIO_NET_HDR_F_DATA_VALID = 0x2\n\tVIRTIO_NET_HDR_F_RSC_INFO   = 0x4\n)\n\nconst (\n\tVIRTIO_NET_HDR_GSO_NONE   = 0x0\n\tVIRTIO_NET_HDR_GSO_TCPV4  = 0x1\n\tVIRTIO_NET_HDR_GSO_UDP    = 0x3\n\tVIRTIO_NET_HDR_GSO_TCPV6  = 0x4\n\tVIRTIO_NET_HDR_GSO_UDP_L4 = 0x5\n\tVIRTIO_NET_HDR_GSO_ECN    = 0x80\n)\n\ntype SchedAttr struct {\n\tSize     uint32\n\tPolicy   uint32\n\tFlags    uint64\n\tNice     int32\n\tPriority uint32\n\tRuntime  uint64\n\tDeadline uint64\n\tPeriod   uint64\n\tUtil_min uint32\n\tUtil_max uint32\n}\n\nconst SizeofSchedAttr = 0x38\n\ntype Cachestat_t struct {\n\tCache            uint64\n\tDirty            uint64\n\tWriteback        uint64\n\tEvicted          uint64\n\tRecently_evicted uint64\n}\ntype CachestatRange struct {\n\tOff uint64\n\tLen uint64\n}\n\nconst (\n\tSK_MEMINFO_RMEM_ALLOC          = 0x0\n\tSK_MEMINFO_RCVBUF              = 0x1\n\tSK_MEMINFO_WMEM_ALLOC          = 0x2\n\tSK_MEMINFO_SNDBUF              = 0x3\n\tSK_MEMINFO_FWD_ALLOC           = 0x4\n\tSK_MEMINFO_WMEM_QUEUED         = 0x5\n\tSK_MEMINFO_OPTMEM              = 0x6\n\tSK_MEMINFO_BACKLOG             = 0x7\n\tSK_MEMINFO_DROPS               = 0x8\n\tSK_MEMINFO_VARS                = 0x9\n\tSKNLGRP_NONE                   = 0x0\n\tSKNLGRP_INET_TCP_DESTROY       = 0x1\n\tSKNLGRP_INET_UDP_DESTROY       = 0x2\n\tSKNLGRP_INET6_TCP_DESTROY      = 0x3\n\tSKNLGRP_INET6_UDP_DESTROY      = 0x4\n\tSK_DIAG_BPF_STORAGE_REQ_NONE   = 0x0\n\tSK_DIAG_BPF_STORAGE_REQ_MAP_FD = 0x1\n\tSK_DIAG_BPF_STORAGE_REP_NONE   = 0x0\n\tSK_DIAG_BPF_STORAGE            = 0x1\n\tSK_DIAG_BPF_STORAGE_NONE       = 0x0\n\tSK_DIAG_BPF_STORAGE_PAD        = 0x1\n\tSK_DIAG_BPF_STORAGE_MAP_ID     = 0x2\n\tSK_DIAG_BPF_STORAGE_MAP_VALUE  = 0x3\n)\n\ntype SockDiagReq struct {\n\tFamily   uint8\n\tProtocol uint8\n}\n\nconst RTM_NEWNVLAN = 0x70\n\nconst (\n\tMPOL_BIND                = 0x2\n\tMPOL_DEFAULT             = 0x0\n\tMPOL_F_ADDR              = 0x2\n\tMPOL_F_MEMS_ALLOWED      = 0x4\n\tMPOL_F_MOF               = 0x8\n\tMPOL_F_MORON             = 0x10\n\tMPOL_F_NODE              = 0x1\n\tMPOL_F_NUMA_BALANCING    = 0x2000\n\tMPOL_F_RELATIVE_NODES    = 0x4000\n\tMPOL_F_SHARED            = 0x1\n\tMPOL_F_STATIC_NODES      = 0x8000\n\tMPOL_INTERLEAVE          = 0x3\n\tMPOL_LOCAL               = 0x4\n\tMPOL_MAX                 = 0x7\n\tMPOL_MF_INTERNAL         = 0x10\n\tMPOL_MF_LAZY             = 0x8\n\tMPOL_MF_MOVE_ALL         = 0x4\n\tMPOL_MF_MOVE             = 0x2\n\tMPOL_MF_STRICT           = 0x1\n\tMPOL_MF_VALID            = 0x7\n\tMPOL_MODE_FLAGS          = 0xe000\n\tMPOL_PREFERRED           = 0x1\n\tMPOL_PREFERRED_MANY      = 0x5\n\tMPOL_WEIGHTED_INTERLEAVE = 0x6\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_386.go",
    "content": "// cgo -godefs -objdir=/tmp/386/cgo -- -Wall -Werror -static -I/tmp/386/include -m32 linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\t_       uint32\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\tSize    int64\n\tBlksize int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tIno     uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [1]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tEbx      int32\n\tEcx      int32\n\tEdx      int32\n\tEsi      int32\n\tEdi      int32\n\tEbp      int32\n\tEax      int32\n\tXds      int32\n\tXes      int32\n\tXfs      int32\n\tXgs      int32\n\tOrig_eax int32\n\tEip      int32\n\tXcs      int32\n\tEflags   int32\n\tEsp      int32\n\tXss      int32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFrsize  int32\n\tFlags   int32\n\tSpare   [4]int32\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint16\n\tInode            uint32\n\tRdevice          uint16\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]int8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800470a1\n\tPPS_SETPARAMS = 0x400470a2\n\tPPS_GETCAP    = 0x800470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    [2]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tAtime_high uint32\n\tDtime      uint32\n\tDtime_high uint32\n\tCtime      uint32\n\tCtime_high uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\t_          uint32\n\t_          uint32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go",
    "content": "// cgo -godefs -objdir=/tmp/amd64/cgo -- -Wall -Werror -static -I/tmp/amd64/include -m64 linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [3]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tR15      uint64\n\tR14      uint64\n\tR13      uint64\n\tR12      uint64\n\tRbp      uint64\n\tRbx      uint64\n\tR11      uint64\n\tR10      uint64\n\tR9       uint64\n\tR8       uint64\n\tRax      uint64\n\tRcx      uint64\n\tRdx      uint64\n\tRsi      uint64\n\tRdi      uint64\n\tOrig_rax uint64\n\tRip      uint64\n\tCs       uint64\n\tEflags   uint64\n\tRsp      uint64\n\tSs       uint64\n\tFs_base  uint64\n\tGs_base  uint64\n\tDs       uint64\n\tEs       uint64\n\tFs       uint64\n\tGs       uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint64\n\tInode            uint64\n\tRdevice          uint64\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_arm.go",
    "content": "// cgo -godefs -objdir=/tmp/arm/cgo -- -Wall -Werror -static -I/tmp/arm/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\t_       uint32\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\t_       [6]byte\n\tSize    int64\n\tBlksize int32\n\t_       [4]byte\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tIno     uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tUregs [18]uint32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]uint8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]uint8\n\tFpack  [6]uint8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFrsize  int32\n\tFlags   int32\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint16\n\tInode            uint32\n\tRdevice          uint16\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]uint8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800470a1\n\tPPS_SETPARAMS = 0x400470a2\n\tPPS_GETCAP    = 0x800470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    [2]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tAtime_high uint32\n\tDtime      uint32\n\tDtime_high uint32\n\tCtime      uint32\n\tCtime_high uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\t_          uint32\n\t_          uint32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go",
    "content": "// cgo -godefs -objdir=/tmp/arm64/cgo -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs   [31]uint64\n\tSp     uint64\n\tPc     uint64\n\tPstate uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go",
    "content": "// cgo -godefs -objdir=/tmp/loong64/cgo -- -Wall -Werror -static -I/tmp/loong64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tOrig_a0  uint64\n\tEra      uint64\n\tBadv     uint64\n\tReserved [10]uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_mips.go",
    "content": "// cgo -godefs -objdir=/tmp/mips/cgo -- -Wall -Werror -static -I/tmp/mips/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]int32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]int32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tPad4    int32\n\tBlocks  int64\n\tPad5    [14]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tFrsize  int32\n\t_       [4]byte\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFlags   int32\n\tSpare   [5]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint32\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]int8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400470a1\n\tPPS_SETPARAMS = 0x800470a2\n\tPPS_GETCAP    = 0x400470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tDtime      uint32\n\tCtime      uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\tAtime_high uint16\n\tDtime_high uint16\n\tCtime_high uint16\n\t_          uint16\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go",
    "content": "// cgo -godefs -objdir=/tmp/mips64/cgo -- -Wall -Werror -static -I/tmp/mips64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]uint32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]uint32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize uint32\n\tPad4    uint32\n\tBlocks  int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tFrsize  int64\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFlags   int64\n\tSpare   [5]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go",
    "content": "// cgo -godefs -objdir=/tmp/mips64le/cgo -- -Wall -Werror -static -I/tmp/mips64le/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]uint32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]uint32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize uint32\n\tPad4    uint32\n\tBlocks  int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tFrsize  int64\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFlags   int64\n\tSpare   [5]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go",
    "content": "// cgo -godefs -objdir=/tmp/mipsle/cgo -- -Wall -Werror -static -I/tmp/mipsle/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]int32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]int32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tPad4    int32\n\tBlocks  int64\n\tPad5    [14]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tFrsize  int32\n\t_       [4]byte\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFlags   int32\n\tSpare   [5]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint32\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]int8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400470a1\n\tPPS_SETPARAMS = 0x800470a2\n\tPPS_GETCAP    = 0x400470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tDtime      uint32\n\tCtime      uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\tAtime_high uint16\n\tDtime_high uint16\n\tCtime_high uint16\n\t_          uint16\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc/cgo -- -Wall -Werror -static -I/tmp/ppc/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\t_       [6]byte\n\tSize    int64\n\tBlksize int32\n\t_       [4]byte\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint32\n\t_       uint32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tGpr       [32]uint32\n\tNip       uint32\n\tMsr       uint32\n\tOrig_gpr3 uint32\n\tCtr       uint32\n\tLink      uint32\n\tXer       uint32\n\tCcr       uint32\n\tMq        uint32\n\tTrap      uint32\n\tDar       uint32\n\tDsisr     uint32\n\tResult    uint32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]uint8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]uint8\n\tFpack  [6]uint8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFrsize  int32\n\tFlags   int32\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint32\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]uint8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400470a1\n\tPPS_SETPARAMS = 0x800470a2\n\tPPS_GETCAP    = 0x400470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\tSeq  uint32\n\t_    uint32\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tAtime_high uint32\n\tAtime      uint32\n\tDtime_high uint32\n\tDtime      uint32\n\tCtime_high uint32\n\tCtime      uint32\n\t_          uint32\n\tSegsz      uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\t_          uint32\n\t_          uint32\n\t_          [4]byte\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc64/cgo -- -Wall -Werror -static -I/tmp/ppc64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tGpr       [32]uint64\n\tNip       uint64\n\tMsr       uint64\n\tOrig_gpr3 uint64\n\tCtr       uint64\n\tLink      uint64\n\tXer       uint64\n\tCcr       uint64\n\tSofte     uint64\n\tTrap      uint64\n\tDar       uint64\n\tDsisr     uint64\n\tResult    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint64\n\tInode            uint64\n\tRdevice          uint64\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]uint8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\tSeq  uint32\n\t_    uint32\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tSegsz  uint64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc64le/cgo -- -Wall -Werror -static -I/tmp/ppc64le/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tGpr       [32]uint64\n\tNip       uint64\n\tMsr       uint64\n\tOrig_gpr3 uint64\n\tCtr       uint64\n\tLink      uint64\n\tXer       uint64\n\tCcr       uint64\n\tSofte     uint64\n\tTrap      uint64\n\tDar       uint64\n\tDsisr     uint64\n\tResult    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint64\n\tInode            uint64\n\tRdevice          uint64\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]uint8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\tSeq  uint32\n\t_    uint32\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tSegsz  uint64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go",
    "content": "// cgo -godefs -objdir=/tmp/riscv64/cgo -- -Wall -Werror -static -I/tmp/riscv64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tPc  uint64\n\tRa  uint64\n\tSp  uint64\n\tGp  uint64\n\tTp  uint64\n\tT0  uint64\n\tT1  uint64\n\tT2  uint64\n\tS0  uint64\n\tS1  uint64\n\tA0  uint64\n\tA1  uint64\n\tA2  uint64\n\tA3  uint64\n\tA4  uint64\n\tA5  uint64\n\tA6  uint64\n\tA7  uint64\n\tS2  uint64\n\tS3  uint64\n\tS4  uint64\n\tS5  uint64\n\tS6  uint64\n\tS7  uint64\n\tS8  uint64\n\tS9  uint64\n\tS10 uint64\n\tS11 uint64\n\tT3  uint64\n\tT4  uint64\n\tT5  uint64\n\tT6  uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]uint8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n\ntype RISCVHWProbePairs struct {\n\tKey   int64\n\tValue uint64\n}\n\nconst (\n\tRISCV_HWPROBE_KEY_MVENDORID          = 0x0\n\tRISCV_HWPROBE_KEY_MARCHID            = 0x1\n\tRISCV_HWPROBE_KEY_MIMPID             = 0x2\n\tRISCV_HWPROBE_KEY_BASE_BEHAVIOR      = 0x3\n\tRISCV_HWPROBE_BASE_BEHAVIOR_IMA      = 0x1\n\tRISCV_HWPROBE_KEY_IMA_EXT_0          = 0x4\n\tRISCV_HWPROBE_IMA_FD                 = 0x1\n\tRISCV_HWPROBE_IMA_C                  = 0x2\n\tRISCV_HWPROBE_IMA_V                  = 0x4\n\tRISCV_HWPROBE_EXT_ZBA                = 0x8\n\tRISCV_HWPROBE_EXT_ZBB                = 0x10\n\tRISCV_HWPROBE_EXT_ZBS                = 0x20\n\tRISCV_HWPROBE_EXT_ZICBOZ             = 0x40\n\tRISCV_HWPROBE_EXT_ZBC                = 0x80\n\tRISCV_HWPROBE_EXT_ZBKB               = 0x100\n\tRISCV_HWPROBE_EXT_ZBKC               = 0x200\n\tRISCV_HWPROBE_EXT_ZBKX               = 0x400\n\tRISCV_HWPROBE_EXT_ZKND               = 0x800\n\tRISCV_HWPROBE_EXT_ZKNE               = 0x1000\n\tRISCV_HWPROBE_EXT_ZKNH               = 0x2000\n\tRISCV_HWPROBE_EXT_ZKSED              = 0x4000\n\tRISCV_HWPROBE_EXT_ZKSH               = 0x8000\n\tRISCV_HWPROBE_EXT_ZKT                = 0x10000\n\tRISCV_HWPROBE_EXT_ZVBB               = 0x20000\n\tRISCV_HWPROBE_EXT_ZVBC               = 0x40000\n\tRISCV_HWPROBE_EXT_ZVKB               = 0x80000\n\tRISCV_HWPROBE_EXT_ZVKG               = 0x100000\n\tRISCV_HWPROBE_EXT_ZVKNED             = 0x200000\n\tRISCV_HWPROBE_EXT_ZVKNHA             = 0x400000\n\tRISCV_HWPROBE_EXT_ZVKNHB             = 0x800000\n\tRISCV_HWPROBE_EXT_ZVKSED             = 0x1000000\n\tRISCV_HWPROBE_EXT_ZVKSH              = 0x2000000\n\tRISCV_HWPROBE_EXT_ZVKT               = 0x4000000\n\tRISCV_HWPROBE_EXT_ZFH                = 0x8000000\n\tRISCV_HWPROBE_EXT_ZFHMIN             = 0x10000000\n\tRISCV_HWPROBE_EXT_ZIHINTNTL          = 0x20000000\n\tRISCV_HWPROBE_EXT_ZVFH               = 0x40000000\n\tRISCV_HWPROBE_EXT_ZVFHMIN            = 0x80000000\n\tRISCV_HWPROBE_EXT_ZFA                = 0x100000000\n\tRISCV_HWPROBE_EXT_ZTSO               = 0x200000000\n\tRISCV_HWPROBE_EXT_ZACAS              = 0x400000000\n\tRISCV_HWPROBE_EXT_ZICOND             = 0x800000000\n\tRISCV_HWPROBE_EXT_ZIHINTPAUSE        = 0x1000000000\n\tRISCV_HWPROBE_KEY_CPUPERF_0          = 0x5\n\tRISCV_HWPROBE_MISALIGNED_UNKNOWN     = 0x0\n\tRISCV_HWPROBE_MISALIGNED_EMULATED    = 0x1\n\tRISCV_HWPROBE_MISALIGNED_SLOW        = 0x2\n\tRISCV_HWPROBE_MISALIGNED_FAST        = 0x3\n\tRISCV_HWPROBE_MISALIGNED_UNSUPPORTED = 0x4\n\tRISCV_HWPROBE_MISALIGNED_MASK        = 0x7\n\tRISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE  = 0x6\n\tRISCV_HWPROBE_WHICH_CPUS             = 0x1\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go",
    "content": "// cgo -godefs -objdir=/tmp/s390x/cgo -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int64\n\tBlocks  int64\n\t_       [3]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x6\n\tFADV_NOREUSE  = 0x7\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tPsw                      PtracePsw\n\tGprs                     [16]uint64\n\tAcrs                     [16]uint32\n\tOrig_gpr2                uint64\n\tFp_regs                  PtraceFpregs\n\tPer_info                 PtracePer\n\tIeee_instruction_pointer uint64\n}\n\ntype PtracePsw struct {\n\tMask uint64\n\tAddr uint64\n}\n\ntype PtraceFpregs struct {\n\tFpc  uint32\n\tFprs [16]float64\n}\n\ntype PtracePer struct {\n\tControl_regs  [3]uint64\n\t_             [8]byte\n\tStarting_addr uint64\n\tEnding_addr   uint64\n\tPerc_atmid    uint16\n\tAddress       uint64\n\tAccess_id     uint8\n\t_             [7]byte\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    uint32\n\tBsize   uint32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen uint32\n\tFrsize  uint32\n\tFlags   uint32\n\tSpare   [4]uint32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint16\n\tInode            uint64\n\tRdevice          uint16\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    uint16\n\tSeq  uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go",
    "content": "// cgo -godefs -objdir=/tmp/sparc64/cgo -- -Wall -Werror -static -I/tmp/sparc64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      int16\n\t_      [2]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs   [16]uint64\n\tTstate uint64\n\tTpc    uint64\n\tTnpc   uint64\n\tY      uint32\n\tMagic  uint32\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x400000\n)\n\nconst (\n\tPOLLRDHUP = 0x800\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x4\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x4000\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    uint16\n\tSeq  uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tSegsz  uint64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint32\n\tBsize       uint32\n\tFrsize      uint32\n\tIosize      uint32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint32\n\tNamemax     uint32\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter uint32\n\tFlags  uint32\n\tFflags uint32\n\tData   int64\n\tUdata  int32\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x84\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n\tPad_cgo_1 [4]byte\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [2]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint64\n\tBsize       uint64\n\tFrsize      uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint64\n\tNamemax     uint64\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\t_           [4]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tPad_cgo_0  [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\tPad_cgo_1  [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint64\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tPad_cgo_0 [4]byte\n\tData      int64\n\tUdata     int64\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen       uint32\n\tPad_cgo_0 [4]byte\n\tInsns     *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec       int64\n\tNsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint32\n\tBsize       uint32\n\tFrsize      uint32\n\tIosize      uint32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint32\n\tNamemax     uint32\n\tOwner       uint32\n\tSpare       [4]uint64\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint32\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tData      int64\n\tUdata     int32\n\tPad_cgo_0 [4]byte\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [2]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint64\n\tBsize       uint64\n\tFrsize      uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint64\n\tNamemax     uint64\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\t_           [4]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tPad_cgo_0  [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\tPad_cgo_1  [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint64\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tPad_cgo_0 [4]byte\n\tData      int64\n\tUdata     int64\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen       uint32\n\tPad_cgo_0 [4]byte\n\tInsns     *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go",
    "content": "// cgo -godefs types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa0\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go",
    "content": "// cgo -godefs types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n\t_    [4]byte\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       [4]byte\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\t_             [4]byte\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\t_      [4]byte\n\tData   int64\n\tUdata  *byte\n\t_      [4]byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\t_            [4]byte\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\ntype Mclpool struct{}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\ntype Mclpool struct{}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go",
    "content": "// cgo -godefs types_solaris.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && solaris\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x400\n\tMaxHostNameLen = 0x100\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tBlocks  int64\n\tFstype  [16]int8\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tSysid  int32\n\tPid    int32\n\tPad    [4]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tName   [1]int8\n\t_      [5]byte\n}\n\ntype _Fsblkcnt_t uint64\n\ntype Statvfs_t struct {\n\tBsize    uint64\n\tFrsize   uint64\n\tBlocks   uint64\n\tBfree    uint64\n\tBavail   uint64\n\tFiles    uint64\n\tFfree    uint64\n\tFavail   uint64\n\tFsid     uint64\n\tBasetype [16]int8\n\tFlag     uint64\n\tNamemax  uint64\n\tFstr     [32]int8\n}\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n\t_        uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tFamily uint16\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [244]int8\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [236]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName         *byte\n\tNamelen      uint32\n\tIov          *Iovec\n\tIovlen       int32\n\tAccrights    *int8\n\tAccrightslen int32\n\t_            [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x20\n\tSizeofSockaddrAny      = 0xfc\n\tSizeofSockaddrUnix     = 0x6e\n\tSizeofSockaddrDatalink = 0xfc\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet4Pktinfo     = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x24\n\tSizeofICMPv6Filter     = 0x20\n)\n\ntype FdSet struct {\n\tBits [1024]int64\n}\n\ntype Utsname struct {\n\tSysname  [257]byte\n\tNodename [257]byte\n\tRelease  [257]byte\n\tVersion  [257]byte\n\tMachine  [257]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int64\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\nconst (\n\tAT_FDCWD            = 0xffd19553\n\tAT_SYMLINK_NOFOLLOW = 0x1000\n\tAT_SYMLINK_FOLLOW   = 0x2000\n\tAT_REMOVEDIR        = 0x1\n\tAT_EACCESS          = 0x4\n)\n\nconst (\n\tSizeofIfMsghdr  = 0x54\n\tSizeofIfData    = 0x44\n\tSizeofIfaMsghdr = 0x14\n\tSizeofRtMsghdr  = 0x4c\n\tSizeofRtMetrics = 0x28\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tLastchange Timeval32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tMetric  int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint64\n\tDrop uint64\n\tCapt uint64\n\t_    [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [19]uint8\n\t_     [1]byte\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  int8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype fileObj struct {\n\tAtim Timespec\n\tMtim Timespec\n\tCtim Timespec\n\tPad  [3]uint64\n\tName *int8\n}\n\ntype portEvent struct {\n\tEvents int32\n\tSource uint16\n\tPad    uint16\n\tObject uint64\n\tUser   *byte\n}\n\nconst (\n\tPORT_SOURCE_AIO    = 0x1\n\tPORT_SOURCE_TIMER  = 0x2\n\tPORT_SOURCE_USER   = 0x3\n\tPORT_SOURCE_FD     = 0x4\n\tPORT_SOURCE_ALERT  = 0x5\n\tPORT_SOURCE_MQ     = 0x6\n\tPORT_SOURCE_FILE   = 0x7\n\tPORT_ALERT_SET     = 0x1\n\tPORT_ALERT_UPDATE  = 0x2\n\tPORT_ALERT_INVALID = 0x3\n\tFILE_ACCESS        = 0x1\n\tFILE_MODIFIED      = 0x2\n\tFILE_ATTRIB        = 0x4\n\tFILE_TRUNC         = 0x100000\n\tFILE_NOFOLLOW      = 0x10000000\n\tFILE_DELETE        = 0x10\n\tFILE_RENAME_TO     = 0x20\n\tFILE_RENAME_FROM   = 0x40\n\tUNMOUNTED          = 0x20000000\n\tMOUNTEDOVER        = 0x40000000\n\tFILE_EXCEPTION     = 0x60000070\n)\n\nconst (\n\tTUNNEWPPA = 0x540001\n\tTUNSETPPA = 0x540002\n\n\tI_STR     = 0x5308\n\tI_POP     = 0x5303\n\tI_PUSH    = 0x5302\n\tI_LINK    = 0x530c\n\tI_UNLINK  = 0x530d\n\tI_PLINK   = 0x5316\n\tI_PUNLINK = 0x5317\n\n\tIF_UNITSEL = -0x7ffb8cca\n)\n\ntype strbuf struct {\n\tMaxlen int32\n\tLen    int32\n\tBuf    *int8\n}\n\ntype Strioctl struct {\n\tCmd    int32\n\tTimout int32\n\tLen    int32\n\tDp     *int8\n}\n\ntype Lifreq struct {\n\tName   [32]int8\n\tLifru1 [4]byte\n\tType   uint32\n\tLifru  [336]byte\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Hand edited based on ztypes_linux_s390x.go\n// TODO: auto-generate.\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\nconst (\n\tSizeofSockaddrAny   = 128\n\tSizeofCmsghdr       = 12\n\tSizeofIPMreq        = 8\n\tSizeofIPv6Mreq      = 20\n\tSizeofICMPv6Filter  = 32\n\tSizeofIPv6MTUInfo   = 32\n\tSizeofInet4Pktinfo  = 8\n\tSizeofInet6Pktinfo  = 20\n\tSizeofLinger        = 8\n\tSizeofSockaddrInet4 = 16\n\tSizeofSockaddrInet6 = 28\n\tSizeofTCPInfo       = 0x68\n\tSizeofUcred         = 12\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype timeval_zos struct { //correct (with padding and all)\n\tSec  int64\n\t_    [4]byte // pad\n\tUsec int32\n}\n\ntype Tms struct { //clock_t is 4-byte unsigned int in zos\n\tUtime  uint32\n\tStime  uint32\n\tCutime uint32\n\tCstime uint32\n}\n\ntype Time_t int64\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Utsname struct {\n\tSysname  [16]byte\n\tNodename [32]byte\n\tRelease  [8]byte\n\tVersion  [8]byte\n\tMachine  [16]byte\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [108]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\t_    [112]uint8 // pad\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tIov        *Iovec\n\tControl    *byte\n\tFlags      int32\n\tNamelen    int32\n\tIovlen     int32\n\tControllen int32\n}\n\ntype Cmsghdr struct {\n\tLen   int32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tAddr    [4]byte /* in_addr */\n\tIfindex uint32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\ntype _Gid_t uint32\n\ntype rusage_zos struct {\n\tUtime timeval_zos\n\tStime timeval_zos\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\n// { int, short, short } in poll.h\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\ntype Stat_t struct { //Linux Definition\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int64\n\tBlocks  int64\n\t_       [3]int64\n}\n\ntype Stat_LE_t struct {\n\t_            [4]byte // eye catcher\n\tLength       uint16\n\tVersion      uint16\n\tMode         int32\n\tIno          uint32\n\tDev          uint32\n\tNlink        int32\n\tUid          int32\n\tGid          int32\n\tSize         int64\n\tAtim31       [4]byte\n\tMtim31       [4]byte\n\tCtim31       [4]byte\n\tRdev         uint32\n\tAuditoraudit uint32\n\tUseraudit    uint32\n\tBlksize      int32\n\tCreatim31    [4]byte\n\tAuditID      [16]byte\n\t_            [4]byte // rsrvd1\n\tFile_tag     struct {\n\t\tCcsid   uint16\n\t\tTxtflag uint16 // aggregating Txflag:1 deferred:1 rsvflags:14\n\t}\n\tCharsetID [8]byte\n\tBlocks    int64\n\tGenvalue  uint32\n\tReftim31  [4]byte\n\tFid       [8]byte\n\tFilefmt   byte\n\tFspflag2  byte\n\t_         [2]byte // rsrvd2\n\tCtimemsec int32\n\tSeclabel  [8]byte\n\t_         [4]byte // rsrvd3\n\t_         [4]byte // rsrvd4\n\tAtim      Time_t\n\tMtim      Time_t\n\tCtim      Time_t\n\tCreatim   Time_t\n\tReftim    Time_t\n\t_         [24]byte // rsrvd5\n}\n\ntype Statvfs_t struct {\n\tID          [4]byte\n\tLen         int32\n\tBsize       uint64\n\tBlocks      uint64\n\tUsedspace   uint64\n\tBavail      uint64\n\tFlag        uint64\n\tMaxfilesize int64\n\t_           [16]byte\n\tFrsize      uint64\n\tBfree       uint64\n\tFiles       uint32\n\tFfree       uint32\n\tFavail      uint32\n\tNamemax31   uint32\n\tInvarsec    uint32\n\t_           [4]byte\n\tFsid        uint64\n\tNamemax     uint64\n}\n\ntype Statfs_t struct {\n\tType    uint64\n\tBsize   uint64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint32\n\tFfree   uint32\n\tFsid    uint64\n\tNamelen uint64\n\tFrsize  uint64\n\tFlags   uint64\n\t_       [4]uint64\n}\n\ntype direntLE struct {\n\tReclen uint16\n\tNamlen uint16\n\tIno    uint32\n\tExtra  uintptr\n\tName   [256]byte\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype FdSet struct {\n\tBits [64]int32\n}\n\n// This struct is packed on z/OS so it can't be used directly.\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n}\n\ntype F_cnvrt struct {\n\tCvtcmd int32\n\tPccsid int16\n\tFccsid int16\n}\n\ntype Termios struct {\n\tCflag uint32\n\tIflag uint32\n\tLflag uint32\n\tOflag uint32\n\tCc    [11]uint8\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype W_Mnth struct {\n\tHid   [4]byte\n\tSize  int32\n\tCur1  int32 //32bit pointer\n\tCur2  int32 //^\n\tDevno uint32\n\t_     [4]byte\n}\n\ntype W_Mntent struct {\n\tFstype       uint32\n\tMode         uint32\n\tDev          uint32\n\tParentdev    uint32\n\tRootino      uint32\n\tStatus       byte\n\tDdname       [9]byte\n\tFstname      [9]byte\n\tFsname       [45]byte\n\tPathlen      uint32\n\tMountpoint   [1024]byte\n\tJobname      [8]byte\n\tPID          int32\n\tParmoffset   int32\n\tParmlen      int16\n\tOwner        [8]byte\n\tQuiesceowner [8]byte\n\t_            [38]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n\tName   string\n}\n\nconst (\n\tSizeofInotifyEvent = 0x10\n)\n\ntype ConsMsg2 struct {\n\tCm2Format       uint16\n\tCm2R1           uint16\n\tCm2Msglength    uint32\n\tCm2Msg          *byte\n\tCm2R2           [4]byte\n\tCm2R3           [4]byte\n\tCm2Routcde      *uint32\n\tCm2Descr        *uint32\n\tCm2Msgflag      uint32\n\tCm2Token        uint32\n\tCm2Msgid        *uint32\n\tCm2R4           [4]byte\n\tCm2DomToken     uint32\n\tCm2DomMsgid     *uint32\n\tCm2ModCartptr   *byte\n\tCm2ModConsidptr *byte\n\tCm2MsgCart      [8]byte\n\tCm2MsgConsid    [4]byte\n\tCm2R5           [12]byte\n}\n\nconst (\n\tCC_modify        = 1\n\tCC_stop          = 2\n\tCONSOLE_FORMAT_2 = 2\n\tCONSOLE_FORMAT_3 = 3\n\tCONSOLE_HRDCPY   = 0x80000000\n)\n\ntype OpenHow struct {\n\tFlags   uint64\n\tMode    uint64\n\tResolve uint64\n}\n\nconst SizeofOpenHow = 0x18\n\nconst (\n\tRESOLVE_CACHED        = 0x20\n\tRESOLVE_BENEATH       = 0x8\n\tRESOLVE_IN_ROOT       = 0x10\n\tRESOLVE_NO_MAGICLINKS = 0x2\n\tRESOLVE_NO_SYMLINKS   = 0x4\n\tRESOLVE_NO_XDEV       = 0x1\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\tPid   int32\n\tUid   uint32\n\t_     [44]byte\n}\n\ntype SysvIpcPerm struct {\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode int32\n}\n\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\t_      [4]byte\n\tLpid   int32\n\tCpid   int32\n\tNattch uint32\n\t_      [4]byte\n\t_      [4]byte\n\t_      [4]byte\n\t_      int32\n\t_      uint8\n\t_      uint8\n\t_      uint16\n\t_      *byte\n\tSegsz  uint64\n\tAtime  Time_t\n\tDtime  Time_t\n\tCtime  Time_t\n}\n\ntype SysvShmDesc64 struct {\n\tPerm   SysvIpcPerm\n\t_      [4]byte\n\tLpid   int32\n\tCpid   int32\n\tNattch uint32\n\t_      [4]byte\n\t_      [4]byte\n\t_      [4]byte\n\t_      int32\n\t_      byte\n\t_      uint8\n\t_      uint16\n\t_      *byte\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/aliases.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nimport \"syscall\"\n\ntype Signal = syscall.Signal\ntype Errno = syscall.Errno\ntype SysProcAttr = syscall.SysProcAttr\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/dll_windows.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// We need to use LoadLibrary and GetProcAddress from the Go runtime, because\n// the these symbols are loaded by the system linker and are required to\n// dynamically load additional symbols. Note that in the Go runtime, these\n// return syscall.Handle and syscall.Errno, but these are the same, in fact,\n// as windows.Handle and windows.Errno, and we intend to keep these the same.\n\n//go:linkname syscall_loadlibrary syscall.loadlibrary\nfunc syscall_loadlibrary(filename *uint16) (handle Handle, err Errno)\n\n//go:linkname syscall_getprocaddress syscall.getprocaddress\nfunc syscall_getprocaddress(handle Handle, procname *uint8) (proc uintptr, err Errno)\n\n// DLLError describes reasons for DLL load failures.\ntype DLLError struct {\n\tErr     error\n\tObjName string\n\tMsg     string\n}\n\nfunc (e *DLLError) Error() string { return e.Msg }\n\nfunc (e *DLLError) Unwrap() error { return e.Err }\n\n// A DLL implements access to a single DLL.\ntype DLL struct {\n\tName   string\n\tHandle Handle\n}\n\n// LoadDLL loads DLL file into memory.\n//\n// Warning: using LoadDLL without an absolute path name is subject to\n// DLL preloading attacks. To safely load a system DLL, use [NewLazySystemDLL],\n// or use [LoadLibraryEx] directly.\nfunc LoadDLL(name string) (dll *DLL, err error) {\n\tnamep, err := UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\th, e := syscall_loadlibrary(namep)\n\tif e != 0 {\n\t\treturn nil, &DLLError{\n\t\t\tErr:     e,\n\t\t\tObjName: name,\n\t\t\tMsg:     \"Failed to load \" + name + \": \" + e.Error(),\n\t\t}\n\t}\n\td := &DLL{\n\t\tName:   name,\n\t\tHandle: h,\n\t}\n\treturn d, nil\n}\n\n// MustLoadDLL is like LoadDLL but panics if load operation fails.\nfunc MustLoadDLL(name string) *DLL {\n\td, e := LoadDLL(name)\n\tif e != nil {\n\t\tpanic(e)\n\t}\n\treturn d\n}\n\n// FindProc searches DLL d for procedure named name and returns *Proc\n// if found. It returns an error if search fails.\nfunc (d *DLL) FindProc(name string) (proc *Proc, err error) {\n\tnamep, err := BytePtrFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ta, e := syscall_getprocaddress(d.Handle, namep)\n\tif e != 0 {\n\t\treturn nil, &DLLError{\n\t\t\tErr:     e,\n\t\t\tObjName: name,\n\t\t\tMsg:     \"Failed to find \" + name + \" procedure in \" + d.Name + \": \" + e.Error(),\n\t\t}\n\t}\n\tp := &Proc{\n\t\tDll:  d,\n\t\tName: name,\n\t\taddr: a,\n\t}\n\treturn p, nil\n}\n\n// MustFindProc is like FindProc but panics if search fails.\nfunc (d *DLL) MustFindProc(name string) *Proc {\n\tp, e := d.FindProc(name)\n\tif e != nil {\n\t\tpanic(e)\n\t}\n\treturn p\n}\n\n// FindProcByOrdinal searches DLL d for procedure by ordinal and returns *Proc\n// if found. It returns an error if search fails.\nfunc (d *DLL) FindProcByOrdinal(ordinal uintptr) (proc *Proc, err error) {\n\ta, e := GetProcAddressByOrdinal(d.Handle, ordinal)\n\tname := \"#\" + itoa(int(ordinal))\n\tif e != nil {\n\t\treturn nil, &DLLError{\n\t\t\tErr:     e,\n\t\t\tObjName: name,\n\t\t\tMsg:     \"Failed to find \" + name + \" procedure in \" + d.Name + \": \" + e.Error(),\n\t\t}\n\t}\n\tp := &Proc{\n\t\tDll:  d,\n\t\tName: name,\n\t\taddr: a,\n\t}\n\treturn p, nil\n}\n\n// MustFindProcByOrdinal is like FindProcByOrdinal but panics if search fails.\nfunc (d *DLL) MustFindProcByOrdinal(ordinal uintptr) *Proc {\n\tp, e := d.FindProcByOrdinal(ordinal)\n\tif e != nil {\n\t\tpanic(e)\n\t}\n\treturn p\n}\n\n// Release unloads DLL d from memory.\nfunc (d *DLL) Release() (err error) {\n\treturn FreeLibrary(d.Handle)\n}\n\n// A Proc implements access to a procedure inside a DLL.\ntype Proc struct {\n\tDll  *DLL\n\tName string\n\taddr uintptr\n}\n\n// Addr returns the address of the procedure represented by p.\n// The return value can be passed to Syscall to run the procedure.\nfunc (p *Proc) Addr() uintptr {\n\treturn p.addr\n}\n\n//go:uintptrescapes\n\n// Call executes procedure p with arguments a. It will panic, if more than 15 arguments\n// are supplied.\n//\n// The returned error is always non-nil, constructed from the result of GetLastError.\n// Callers must inspect the primary return value to decide whether an error occurred\n// (according to the semantics of the specific function being called) before consulting\n// the error. The error will be guaranteed to contain windows.Errno.\nfunc (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {\n\treturn syscall.SyscallN(p.Addr(), a...)\n}\n\n// A LazyDLL implements access to a single DLL.\n// It will delay the load of the DLL until the first\n// call to its Handle method or to one of its\n// LazyProc's Addr method.\ntype LazyDLL struct {\n\tName string\n\n\t// System determines whether the DLL must be loaded from the\n\t// Windows System directory, bypassing the normal DLL search\n\t// path.\n\tSystem bool\n\n\tmu  sync.Mutex\n\tdll *DLL // non nil once DLL is loaded\n}\n\n// Load loads DLL file d.Name into memory. It returns an error if fails.\n// Load will not try to load DLL, if it is already loaded into memory.\nfunc (d *LazyDLL) Load() error {\n\t// Non-racy version of:\n\t// if d.dll != nil {\n\tif atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll))) != nil {\n\t\treturn nil\n\t}\n\td.mu.Lock()\n\tdefer d.mu.Unlock()\n\tif d.dll != nil {\n\t\treturn nil\n\t}\n\n\t// kernel32.dll is special, since it's where LoadLibraryEx comes from.\n\t// The kernel already special-cases its name, so it's always\n\t// loaded from system32.\n\tvar dll *DLL\n\tvar err error\n\tif d.Name == \"kernel32.dll\" {\n\t\tdll, err = LoadDLL(d.Name)\n\t} else {\n\t\tdll, err = loadLibraryEx(d.Name, d.System)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Non-racy version of:\n\t// d.dll = dll\n\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll)), unsafe.Pointer(dll))\n\treturn nil\n}\n\n// mustLoad is like Load but panics if search fails.\nfunc (d *LazyDLL) mustLoad() {\n\te := d.Load()\n\tif e != nil {\n\t\tpanic(e)\n\t}\n}\n\n// Handle returns d's module handle.\nfunc (d *LazyDLL) Handle() uintptr {\n\td.mustLoad()\n\treturn uintptr(d.dll.Handle)\n}\n\n// NewProc returns a LazyProc for accessing the named procedure in the DLL d.\nfunc (d *LazyDLL) NewProc(name string) *LazyProc {\n\treturn &LazyProc{l: d, Name: name}\n}\n\n// NewLazyDLL creates new LazyDLL associated with DLL file.\n//\n// Warning: using NewLazyDLL without an absolute path name is subject to\n// DLL preloading attacks. To safely load a system DLL, use [NewLazySystemDLL].\nfunc NewLazyDLL(name string) *LazyDLL {\n\treturn &LazyDLL{Name: name}\n}\n\n// NewLazySystemDLL is like NewLazyDLL, but will only\n// search Windows System directory for the DLL if name is\n// a base name (like \"advapi32.dll\").\nfunc NewLazySystemDLL(name string) *LazyDLL {\n\treturn &LazyDLL{Name: name, System: true}\n}\n\n// A LazyProc implements access to a procedure inside a LazyDLL.\n// It delays the lookup until the Addr method is called.\ntype LazyProc struct {\n\tName string\n\n\tmu   sync.Mutex\n\tl    *LazyDLL\n\tproc *Proc\n}\n\n// Find searches DLL for procedure named p.Name. It returns\n// an error if search fails. Find will not search procedure,\n// if it is already found and loaded into memory.\nfunc (p *LazyProc) Find() error {\n\t// Non-racy version of:\n\t// if p.proc == nil {\n\tif atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc))) == nil {\n\t\tp.mu.Lock()\n\t\tdefer p.mu.Unlock()\n\t\tif p.proc == nil {\n\t\t\te := p.l.Load()\n\t\t\tif e != nil {\n\t\t\t\treturn e\n\t\t\t}\n\t\t\tproc, e := p.l.dll.FindProc(p.Name)\n\t\t\tif e != nil {\n\t\t\t\treturn e\n\t\t\t}\n\t\t\t// Non-racy version of:\n\t\t\t// p.proc = proc\n\t\t\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc)), unsafe.Pointer(proc))\n\t\t}\n\t}\n\treturn nil\n}\n\n// mustFind is like Find but panics if search fails.\nfunc (p *LazyProc) mustFind() {\n\te := p.Find()\n\tif e != nil {\n\t\tpanic(e)\n\t}\n}\n\n// Addr returns the address of the procedure represented by p.\n// The return value can be passed to Syscall to run the procedure.\n// It will panic if the procedure cannot be found.\nfunc (p *LazyProc) Addr() uintptr {\n\tp.mustFind()\n\treturn p.proc.Addr()\n}\n\n//go:uintptrescapes\n\n// Call executes procedure p with arguments a. It will panic, if more than 15 arguments\n// are supplied. It will also panic if the procedure cannot be found.\n//\n// The returned error is always non-nil, constructed from the result of GetLastError.\n// Callers must inspect the primary return value to decide whether an error occurred\n// (according to the semantics of the specific function being called) before consulting\n// the error. The error will be guaranteed to contain windows.Errno.\nfunc (p *LazyProc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {\n\tp.mustFind()\n\treturn p.proc.Call(a...)\n}\n\nvar canDoSearchSystem32Once struct {\n\tsync.Once\n\tv bool\n}\n\nfunc initCanDoSearchSystem32() {\n\t// https://msdn.microsoft.com/en-us/library/ms684179(v=vs.85).aspx says:\n\t// \"Windows 7, Windows Server 2008 R2, Windows Vista, and Windows\n\t// Server 2008: The LOAD_LIBRARY_SEARCH_* flags are available on\n\t// systems that have KB2533623 installed. To determine whether the\n\t// flags are available, use GetProcAddress to get the address of the\n\t// AddDllDirectory, RemoveDllDirectory, or SetDefaultDllDirectories\n\t// function. If GetProcAddress succeeds, the LOAD_LIBRARY_SEARCH_*\n\t// flags can be used with LoadLibraryEx.\"\n\tcanDoSearchSystem32Once.v = (modkernel32.NewProc(\"AddDllDirectory\").Find() == nil)\n}\n\nfunc canDoSearchSystem32() bool {\n\tcanDoSearchSystem32Once.Do(initCanDoSearchSystem32)\n\treturn canDoSearchSystem32Once.v\n}\n\nfunc isBaseName(name string) bool {\n\tfor _, c := range name {\n\t\tif c == ':' || c == '/' || c == '\\\\' {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// loadLibraryEx wraps the Windows LoadLibraryEx function.\n//\n// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx\n//\n// If name is not an absolute path, LoadLibraryEx searches for the DLL\n// in a variety of automatic locations unless constrained by flags.\n// See: https://msdn.microsoft.com/en-us/library/ff919712%28VS.85%29.aspx\nfunc loadLibraryEx(name string, system bool) (*DLL, error) {\n\tloadDLL := name\n\tvar flags uintptr\n\tif system {\n\t\tif canDoSearchSystem32() {\n\t\t\tflags = LOAD_LIBRARY_SEARCH_SYSTEM32\n\t\t} else if isBaseName(name) {\n\t\t\t// WindowsXP or unpatched Windows machine\n\t\t\t// trying to load \"foo.dll\" out of the system\n\t\t\t// folder, but LoadLibraryEx doesn't support\n\t\t\t// that yet on their system, so emulate it.\n\t\t\tsystemdir, err := GetSystemDirectory()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tloadDLL = systemdir + \"\\\\\" + name\n\t\t}\n\t}\n\th, err := LoadLibraryEx(loadDLL, 0, flags)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &DLL{Name: name, Handle: h}, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/env_windows.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Windows environment variables.\n\npackage windows\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc Getenv(key string) (value string, found bool) {\n\treturn syscall.Getenv(key)\n}\n\nfunc Setenv(key, value string) error {\n\treturn syscall.Setenv(key, value)\n}\n\nfunc Clearenv() {\n\tsyscall.Clearenv()\n}\n\nfunc Environ() []string {\n\treturn syscall.Environ()\n}\n\n// Returns a default environment associated with the token, rather than the current\n// process. If inheritExisting is true, then this environment also inherits the\n// environment of the current process.\nfunc (token Token) Environ(inheritExisting bool) (env []string, err error) {\n\tvar block *uint16\n\terr = CreateEnvironmentBlock(&block, token, inheritExisting)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer DestroyEnvironmentBlock(block)\n\tsize := unsafe.Sizeof(*block)\n\tfor *block != 0 {\n\t\t// find NUL terminator\n\t\tend := unsafe.Pointer(block)\n\t\tfor *(*uint16)(end) != 0 {\n\t\t\tend = unsafe.Add(end, size)\n\t\t}\n\n\t\tentry := unsafe.Slice(block, (uintptr(end)-uintptr(unsafe.Pointer(block)))/size)\n\t\tenv = append(env, UTF16ToString(entry))\n\t\tblock = (*uint16)(unsafe.Add(end, size))\n\t}\n\treturn env, nil\n}\n\nfunc Unsetenv(key string) error {\n\treturn syscall.Unsetenv(key)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/eventlog.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nconst (\n\tEVENTLOG_SUCCESS          = 0\n\tEVENTLOG_ERROR_TYPE       = 1\n\tEVENTLOG_WARNING_TYPE     = 2\n\tEVENTLOG_INFORMATION_TYPE = 4\n\tEVENTLOG_AUDIT_SUCCESS    = 8\n\tEVENTLOG_AUDIT_FAILURE    = 16\n)\n\n//sys\tRegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW\n//sys\tDeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource\n//sys\tReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/exec_windows.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Fork, exec, wait, etc.\n\npackage windows\n\nimport (\n\terrorspkg \"errors\"\n\t\"unsafe\"\n)\n\n// EscapeArg rewrites command line argument s as prescribed\n// in http://msdn.microsoft.com/en-us/library/ms880421.\n// This function returns \"\" (2 double quotes) if s is empty.\n// Alternatively, these transformations are done:\n//   - every back slash (\\) is doubled, but only if immediately\n//     followed by double quote (\");\n//   - every double quote (\") is escaped by back slash (\\);\n//   - finally, s is wrapped with double quotes (arg -> \"arg\"),\n//     but only if there is space or tab inside s.\nfunc EscapeArg(s string) string {\n\tif len(s) == 0 {\n\t\treturn `\"\"`\n\t}\n\tn := len(s)\n\thasSpace := false\n\tfor i := 0; i < len(s); i++ {\n\t\tswitch s[i] {\n\t\tcase '\"', '\\\\':\n\t\t\tn++\n\t\tcase ' ', '\\t':\n\t\t\thasSpace = true\n\t\t}\n\t}\n\tif hasSpace {\n\t\tn += 2 // Reserve space for quotes.\n\t}\n\tif n == len(s) {\n\t\treturn s\n\t}\n\n\tqs := make([]byte, n)\n\tj := 0\n\tif hasSpace {\n\t\tqs[j] = '\"'\n\t\tj++\n\t}\n\tslashes := 0\n\tfor i := 0; i < len(s); i++ {\n\t\tswitch s[i] {\n\t\tdefault:\n\t\t\tslashes = 0\n\t\t\tqs[j] = s[i]\n\t\tcase '\\\\':\n\t\t\tslashes++\n\t\t\tqs[j] = s[i]\n\t\tcase '\"':\n\t\t\tfor ; slashes > 0; slashes-- {\n\t\t\t\tqs[j] = '\\\\'\n\t\t\t\tj++\n\t\t\t}\n\t\t\tqs[j] = '\\\\'\n\t\t\tj++\n\t\t\tqs[j] = s[i]\n\t\t}\n\t\tj++\n\t}\n\tif hasSpace {\n\t\tfor ; slashes > 0; slashes-- {\n\t\t\tqs[j] = '\\\\'\n\t\t\tj++\n\t\t}\n\t\tqs[j] = '\"'\n\t\tj++\n\t}\n\treturn string(qs[:j])\n}\n\n// ComposeCommandLine escapes and joins the given arguments suitable for use as a Windows command line,\n// in CreateProcess's CommandLine argument, CreateService/ChangeServiceConfig's BinaryPathName argument,\n// or any program that uses CommandLineToArgv.\nfunc ComposeCommandLine(args []string) string {\n\tif len(args) == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Per https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw:\n\t// “This function accepts command lines that contain a program name; the\n\t// program name can be enclosed in quotation marks or not.”\n\t//\n\t// Unfortunately, it provides no means of escaping interior quotation marks\n\t// within that program name, and we have no way to report them here.\n\tprog := args[0]\n\tmustQuote := len(prog) == 0\n\tfor i := 0; i < len(prog); i++ {\n\t\tc := prog[i]\n\t\tif c <= ' ' || (c == '\"' && i == 0) {\n\t\t\t// Force quotes for not only the ASCII space and tab as described in the\n\t\t\t// MSDN article, but also ASCII control characters.\n\t\t\t// The documentation for CommandLineToArgvW doesn't say what happens when\n\t\t\t// the first argument is not a valid program name, but it empirically\n\t\t\t// seems to drop unquoted control characters.\n\t\t\tmustQuote = true\n\t\t\tbreak\n\t\t}\n\t}\n\tvar commandLine []byte\n\tif mustQuote {\n\t\tcommandLine = make([]byte, 0, len(prog)+2)\n\t\tcommandLine = append(commandLine, '\"')\n\t\tfor i := 0; i < len(prog); i++ {\n\t\t\tc := prog[i]\n\t\t\tif c == '\"' {\n\t\t\t\t// This quote would interfere with our surrounding quotes.\n\t\t\t\t// We have no way to report an error, so just strip out\n\t\t\t\t// the offending character instead.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcommandLine = append(commandLine, c)\n\t\t}\n\t\tcommandLine = append(commandLine, '\"')\n\t} else {\n\t\tif len(args) == 1 {\n\t\t\t// args[0] is a valid command line representing itself.\n\t\t\t// No need to allocate a new slice or string for it.\n\t\t\treturn prog\n\t\t}\n\t\tcommandLine = []byte(prog)\n\t}\n\n\tfor _, arg := range args[1:] {\n\t\tcommandLine = append(commandLine, ' ')\n\t\t// TODO(bcmills): since we're already appending to a slice, it would be nice\n\t\t// to avoid the intermediate allocations of EscapeArg.\n\t\t// Perhaps we can factor out an appendEscapedArg function.\n\t\tcommandLine = append(commandLine, EscapeArg(arg)...)\n\t}\n\treturn string(commandLine)\n}\n\n// DecomposeCommandLine breaks apart its argument command line into unescaped parts using CommandLineToArgv,\n// as gathered from GetCommandLine, QUERY_SERVICE_CONFIG's BinaryPathName argument, or elsewhere that\n// command lines are passed around.\n// DecomposeCommandLine returns an error if commandLine contains NUL.\nfunc DecomposeCommandLine(commandLine string) ([]string, error) {\n\tif len(commandLine) == 0 {\n\t\treturn []string{}, nil\n\t}\n\tutf16CommandLine, err := UTF16FromString(commandLine)\n\tif err != nil {\n\t\treturn nil, errorspkg.New(\"string with NUL passed to DecomposeCommandLine\")\n\t}\n\tvar argc int32\n\targv, err := commandLineToArgv(&utf16CommandLine[0], &argc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(argv)))\n\n\tvar args []string\n\tfor _, p := range unsafe.Slice(argv, argc) {\n\t\targs = append(args, UTF16PtrToString(p))\n\t}\n\treturn args, nil\n}\n\n// CommandLineToArgv parses a Unicode command line string and sets\n// argc to the number of parsed arguments.\n//\n// The returned memory should be freed using a single call to LocalFree.\n//\n// Note that although the return type of CommandLineToArgv indicates 8192\n// entries of up to 8192 characters each, the actual count of parsed arguments\n// may exceed 8192, and the documentation for CommandLineToArgvW does not mention\n// any bound on the lengths of the individual argument strings.\n// (See https://go.dev/issue/63236.)\nfunc CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {\n\targp, err := commandLineToArgv(cmd, argc)\n\targv = (*[8192]*[8192]uint16)(unsafe.Pointer(argp))\n\treturn argv, err\n}\n\nfunc CloseOnExec(fd Handle) {\n\tSetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0)\n}\n\n// FullPath retrieves the full path of the specified file.\nfunc FullPath(name string) (path string, err error) {\n\tp, err := UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := uint32(100)\n\tfor {\n\t\tbuf := make([]uint16, n)\n\t\tn, err = GetFullPathName(p, uint32(len(buf)), &buf[0], nil)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif n <= uint32(len(buf)) {\n\t\t\treturn UTF16ToString(buf[:n]), nil\n\t\t}\n\t}\n}\n\n// NewProcThreadAttributeList allocates a new ProcThreadAttributeListContainer, with the requested maximum number of attributes.\nfunc NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeListContainer, error) {\n\tvar size uintptr\n\terr := initializeProcThreadAttributeList(nil, maxAttrCount, 0, &size)\n\tif err != ERROR_INSUFFICIENT_BUFFER {\n\t\tif err == nil {\n\t\t\treturn nil, errorspkg.New(\"unable to query buffer size from InitializeProcThreadAttributeList\")\n\t\t}\n\t\treturn nil, err\n\t}\n\talloc, err := LocalAlloc(LMEM_FIXED, uint32(size))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// size is guaranteed to be ≥1 by InitializeProcThreadAttributeList.\n\tal := &ProcThreadAttributeListContainer{data: (*ProcThreadAttributeList)(unsafe.Pointer(alloc))}\n\terr = initializeProcThreadAttributeList(al.data, maxAttrCount, 0, &size)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn al, err\n}\n\n// Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute.\nfunc (al *ProcThreadAttributeListContainer) Update(attribute uintptr, value unsafe.Pointer, size uintptr) error {\n\tal.pointers = append(al.pointers, value)\n\treturn updateProcThreadAttribute(al.data, 0, attribute, value, size, nil, nil)\n}\n\n// Delete frees ProcThreadAttributeList's resources.\nfunc (al *ProcThreadAttributeListContainer) Delete() {\n\tdeleteProcThreadAttributeList(al.data)\n\tLocalFree(Handle(unsafe.Pointer(al.data)))\n\tal.data = nil\n\tal.pointers = nil\n}\n\n// List returns the actual ProcThreadAttributeList to be passed to StartupInfoEx.\nfunc (al *ProcThreadAttributeListContainer) List() *ProcThreadAttributeList {\n\treturn al.data\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/memory_windows.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nconst (\n\tMEM_COMMIT      = 0x00001000\n\tMEM_RESERVE     = 0x00002000\n\tMEM_DECOMMIT    = 0x00004000\n\tMEM_RELEASE     = 0x00008000\n\tMEM_RESET       = 0x00080000\n\tMEM_TOP_DOWN    = 0x00100000\n\tMEM_WRITE_WATCH = 0x00200000\n\tMEM_PHYSICAL    = 0x00400000\n\tMEM_RESET_UNDO  = 0x01000000\n\tMEM_LARGE_PAGES = 0x20000000\n\n\tPAGE_NOACCESS          = 0x00000001\n\tPAGE_READONLY          = 0x00000002\n\tPAGE_READWRITE         = 0x00000004\n\tPAGE_WRITECOPY         = 0x00000008\n\tPAGE_EXECUTE           = 0x00000010\n\tPAGE_EXECUTE_READ      = 0x00000020\n\tPAGE_EXECUTE_READWRITE = 0x00000040\n\tPAGE_EXECUTE_WRITECOPY = 0x00000080\n\tPAGE_GUARD             = 0x00000100\n\tPAGE_NOCACHE           = 0x00000200\n\tPAGE_WRITECOMBINE      = 0x00000400\n\tPAGE_TARGETS_INVALID   = 0x40000000\n\tPAGE_TARGETS_NO_UPDATE = 0x40000000\n\n\tQUOTA_LIMITS_HARDWS_MIN_DISABLE = 0x00000002\n\tQUOTA_LIMITS_HARDWS_MIN_ENABLE  = 0x00000001\n\tQUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008\n\tQUOTA_LIMITS_HARDWS_MAX_ENABLE  = 0x00000004\n)\n\ntype MemoryBasicInformation struct {\n\tBaseAddress       uintptr\n\tAllocationBase    uintptr\n\tAllocationProtect uint32\n\tPartitionId       uint16\n\tRegionSize        uintptr\n\tState             uint32\n\tProtect           uint32\n\tType              uint32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/mkerrors.bash",
    "content": "#!/bin/bash\n\n# Copyright 2019 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\nset -e\nshopt -s nullglob\n\nwinerror=\"$(printf '%s\\n' \"/mnt/c/Program Files (x86)/Windows Kits/\"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)\"\n[[ -n $winerror ]] || { echo \"Unable to find winerror.h\" >&2; exit 1; }\nntstatus=\"$(printf '%s\\n' \"/mnt/c/Program Files (x86)/Windows Kits/\"/*/Include/*/shared/ntstatus.h | sort -Vr | head -n 1)\"\n[[ -n $ntstatus ]] || { echo \"Unable to find ntstatus.h\" >&2; exit 1; }\n\ndeclare -A errors\n\n{\n\techo \"// Code generated by 'mkerrors.bash'; DO NOT EDIT.\"\n\techo\n\techo \"package windows\"\n\techo \"import \\\"syscall\\\"\"\n\techo \"const (\"\n\n\twhile read -r line; do\n\t\tunset vtype\n\t\tif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +([A-Z0-9_]+\\()?([A-Z][A-Z0-9_]+k?)\\)? ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\telif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +([A-Z0-9_]+\\()?((0x)?[0-9A-Fa-f]+)L?\\)? ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\t\tvtype=\"${BASH_REMATCH[2]}\"\n\t\telif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +\\(\\(([A-Z]+)\\)((0x)?[0-9A-Fa-f]+)L?\\) ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\t\tvtype=\"${BASH_REMATCH[2]}\"\n\t\telse\n\t\t\tcontinue\n\t\tfi\n\t\t[[ -n $key && -n $value ]] || continue\n\t\t[[ -z ${errors[\"$key\"]} ]] || continue\n\t\terrors[\"$key\"]=\"$value\"\n\t\tif [[ -v vtype ]]; then\n\t\t\tif [[ $key == FACILITY_* || $key == NO_ERROR ]]; then\n\t\t\t\tvtype=\"\"\n\t\t\telif [[ $vtype == *HANDLE* || $vtype == *HRESULT* ]]; then\n\t\t\t\tvtype=\"Handle\"\n\t\t\telse\n\t\t\t\tvtype=\"syscall.Errno\"\n\t\t\tfi\n\t\t\tlast_vtype=\"$vtype\"\n\t\telse\n\t\t\tvtype=\"\"\n\t\t\tif [[ $last_vtype == Handle && $value == NO_ERROR ]]; then\n\t\t\t\tvalue=\"S_OK\"\n\t\t\telif [[ $last_vtype == syscall.Errno && $value == NO_ERROR ]]; then\n\t\t\t\tvalue=\"ERROR_SUCCESS\"\n\t\t\tfi\n\t\tfi\n\n\t\techo \"$key $vtype = $value\"\n\tdone < \"$winerror\"\n\n\twhile read -r line; do\n\t\t[[ $line =~ ^#define\\ (STATUS_[^\\s]+)\\ +\\(\\(NTSTATUS\\)((0x)?[0-9a-fA-F]+)L?\\) ]] || continue\n\t\techo \"${BASH_REMATCH[1]} NTStatus = ${BASH_REMATCH[2]}\"\n\tdone < \"$ntstatus\"\n\n\techo \")\"\n} | gofmt > \"zerrors_windows.go\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/mkknownfolderids.bash",
    "content": "#!/bin/bash\n\n# Copyright 2019 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\nset -e\nshopt -s nullglob\n\nknownfolders=\"$(printf '%s\\n' \"/mnt/c/Program Files (x86)/Windows Kits/\"/*/Include/*/um/KnownFolders.h | sort -Vr | head -n 1)\"\n[[ -n $knownfolders ]] || { echo \"Unable to find KnownFolders.h\" >&2; exit 1; }\n\n{\n\techo \"// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT.\"\n\techo\n\techo \"package windows\"\n\techo \"type KNOWNFOLDERID GUID\"\n\techo \"var (\"\n\twhile read -r line; do\n\t\t[[ $line =~ DEFINE_KNOWN_FOLDER\\((FOLDERID_[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+)\\) ]] || continue\n\t\tprintf \"%s = &KNOWNFOLDERID{0x%08x, 0x%04x, 0x%04x, [8]byte{0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}}\\n\" \\\n\t\t\t\"${BASH_REMATCH[1]}\" $(( \"${BASH_REMATCH[2]}\" )) $(( \"${BASH_REMATCH[3]}\" )) $(( \"${BASH_REMATCH[4]}\" )) \\\n\t\t\t$(( \"${BASH_REMATCH[5]}\" )) $(( \"${BASH_REMATCH[6]}\" )) $(( \"${BASH_REMATCH[7]}\" )) $(( \"${BASH_REMATCH[8]}\" )) \\\n\t\t\t$(( \"${BASH_REMATCH[9]}\" )) $(( \"${BASH_REMATCH[10]}\" )) $(( \"${BASH_REMATCH[11]}\" )) $(( \"${BASH_REMATCH[12]}\" ))\n\tdone < \"$knownfolders\"\n\techo \")\"\n} | gofmt > \"zknownfolderids_windows.go\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/mksyscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build generate\n\npackage windows\n\n//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go setupapi_windows.go\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/race.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows && race\n\npackage windows\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\nconst raceenabled = true\n\nfunc raceAcquire(addr unsafe.Pointer) {\n\truntime.RaceAcquire(addr)\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n\truntime.RaceReleaseMerge(addr)\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n\truntime.RaceReadRange(addr, len)\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n\truntime.RaceWriteRange(addr, len)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/race0.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows && !race\n\npackage windows\n\nimport (\n\t\"unsafe\"\n)\n\nconst raceenabled = false\n\nfunc raceAcquire(addr unsafe.Pointer) {\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/security_windows.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst (\n\tNameUnknown          = 0\n\tNameFullyQualifiedDN = 1\n\tNameSamCompatible    = 2\n\tNameDisplay          = 3\n\tNameUniqueId         = 6\n\tNameCanonical        = 7\n\tNameUserPrincipal    = 8\n\tNameCanonicalEx      = 9\n\tNameServicePrincipal = 10\n\tNameDnsDomain        = 12\n)\n\n// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL.\n// http://blogs.msdn.com/b/drnick/archive/2007/12/19/windows-and-upn-format-credentials.aspx\n//sys\tTranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.TranslateNameW\n//sys\tGetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.GetUserNameExW\n\n// TranslateAccountName converts a directory service\n// object name from one format to another.\nfunc TranslateAccountName(username string, from, to uint32, initSize int) (string, error) {\n\tu, e := UTF16PtrFromString(username)\n\tif e != nil {\n\t\treturn \"\", e\n\t}\n\tn := uint32(50)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\te = TranslateName(u, from, to, &b[0], &n)\n\t\tif e == nil {\n\t\t\treturn UTF16ToString(b[:n]), nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn \"\", e\n\t\t}\n\t}\n}\n\nconst (\n\t// do not reorder\n\tNetSetupUnknownStatus = iota\n\tNetSetupUnjoined\n\tNetSetupWorkgroupName\n\tNetSetupDomainName\n)\n\ntype UserInfo10 struct {\n\tName       *uint16\n\tComment    *uint16\n\tUsrComment *uint16\n\tFullName   *uint16\n}\n\n//sys\tNetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) = netapi32.NetUserGetInfo\n//sys\tNetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) = netapi32.NetGetJoinInformation\n//sys\tNetApiBufferFree(buf *byte) (neterr error) = netapi32.NetApiBufferFree\n//sys   NetUserEnum(serverName *uint16, level uint32, filter uint32, buf **byte, prefMaxLen uint32, entriesRead *uint32, totalEntries *uint32, resumeHandle *uint32) (neterr error) = netapi32.NetUserEnum\n\nconst (\n\t// do not reorder\n\tSidTypeUser = 1 + iota\n\tSidTypeGroup\n\tSidTypeDomain\n\tSidTypeAlias\n\tSidTypeWellKnownGroup\n\tSidTypeDeletedAccount\n\tSidTypeInvalid\n\tSidTypeUnknown\n\tSidTypeComputer\n\tSidTypeLabel\n)\n\ntype SidIdentifierAuthority struct {\n\tValue [6]byte\n}\n\nvar (\n\tSECURITY_NULL_SID_AUTHORITY        = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 0}}\n\tSECURITY_WORLD_SID_AUTHORITY       = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 1}}\n\tSECURITY_LOCAL_SID_AUTHORITY       = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 2}}\n\tSECURITY_CREATOR_SID_AUTHORITY     = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 3}}\n\tSECURITY_NON_UNIQUE_AUTHORITY      = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 4}}\n\tSECURITY_NT_AUTHORITY              = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 5}}\n\tSECURITY_MANDATORY_LABEL_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 16}}\n)\n\nconst (\n\tSECURITY_NULL_RID                   = 0\n\tSECURITY_WORLD_RID                  = 0\n\tSECURITY_LOCAL_RID                  = 0\n\tSECURITY_CREATOR_OWNER_RID          = 0\n\tSECURITY_CREATOR_GROUP_RID          = 1\n\tSECURITY_DIALUP_RID                 = 1\n\tSECURITY_NETWORK_RID                = 2\n\tSECURITY_BATCH_RID                  = 3\n\tSECURITY_INTERACTIVE_RID            = 4\n\tSECURITY_LOGON_IDS_RID              = 5\n\tSECURITY_SERVICE_RID                = 6\n\tSECURITY_LOCAL_SYSTEM_RID           = 18\n\tSECURITY_BUILTIN_DOMAIN_RID         = 32\n\tSECURITY_PRINCIPAL_SELF_RID         = 10\n\tSECURITY_CREATOR_OWNER_SERVER_RID   = 0x2\n\tSECURITY_CREATOR_GROUP_SERVER_RID   = 0x3\n\tSECURITY_LOGON_IDS_RID_COUNT        = 0x3\n\tSECURITY_ANONYMOUS_LOGON_RID        = 0x7\n\tSECURITY_PROXY_RID                  = 0x8\n\tSECURITY_ENTERPRISE_CONTROLLERS_RID = 0x9\n\tSECURITY_SERVER_LOGON_RID           = SECURITY_ENTERPRISE_CONTROLLERS_RID\n\tSECURITY_AUTHENTICATED_USER_RID     = 0xb\n\tSECURITY_RESTRICTED_CODE_RID        = 0xc\n\tSECURITY_NT_NON_UNIQUE_RID          = 0x15\n)\n\n// Predefined domain-relative RIDs for local groups.\n// See https://msdn.microsoft.com/en-us/library/windows/desktop/aa379649(v=vs.85).aspx\nconst (\n\tDOMAIN_ALIAS_RID_ADMINS                         = 0x220\n\tDOMAIN_ALIAS_RID_USERS                          = 0x221\n\tDOMAIN_ALIAS_RID_GUESTS                         = 0x222\n\tDOMAIN_ALIAS_RID_POWER_USERS                    = 0x223\n\tDOMAIN_ALIAS_RID_ACCOUNT_OPS                    = 0x224\n\tDOMAIN_ALIAS_RID_SYSTEM_OPS                     = 0x225\n\tDOMAIN_ALIAS_RID_PRINT_OPS                      = 0x226\n\tDOMAIN_ALIAS_RID_BACKUP_OPS                     = 0x227\n\tDOMAIN_ALIAS_RID_REPLICATOR                     = 0x228\n\tDOMAIN_ALIAS_RID_RAS_SERVERS                    = 0x229\n\tDOMAIN_ALIAS_RID_PREW2KCOMPACCESS               = 0x22a\n\tDOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS           = 0x22b\n\tDOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS      = 0x22c\n\tDOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = 0x22d\n\tDOMAIN_ALIAS_RID_MONITORING_USERS               = 0x22e\n\tDOMAIN_ALIAS_RID_LOGGING_USERS                  = 0x22f\n\tDOMAIN_ALIAS_RID_AUTHORIZATIONACCESS            = 0x230\n\tDOMAIN_ALIAS_RID_TS_LICENSE_SERVERS             = 0x231\n\tDOMAIN_ALIAS_RID_DCOM_USERS                     = 0x232\n\tDOMAIN_ALIAS_RID_IUSERS                         = 0x238\n\tDOMAIN_ALIAS_RID_CRYPTO_OPERATORS               = 0x239\n\tDOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP     = 0x23b\n\tDOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP = 0x23c\n\tDOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP        = 0x23d\n\tDOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP      = 0x23e\n)\n\n//sys\tLookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountSidW\n//sys\tLookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountNameW\n//sys\tConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) = advapi32.ConvertSidToStringSidW\n//sys\tConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) = advapi32.ConvertStringSidToSidW\n//sys\tGetLengthSid(sid *SID) (len uint32) = advapi32.GetLengthSid\n//sys\tCopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) = advapi32.CopySid\n//sys\tAllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) = advapi32.AllocateAndInitializeSid\n//sys\tcreateWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) = advapi32.CreateWellKnownSid\n//sys\tisWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) = advapi32.IsWellKnownSid\n//sys\tFreeSid(sid *SID) (err error) [failretval!=0] = advapi32.FreeSid\n//sys\tEqualSid(sid1 *SID, sid2 *SID) (isEqual bool) = advapi32.EqualSid\n//sys\tgetSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) = advapi32.GetSidIdentifierAuthority\n//sys\tgetSidSubAuthorityCount(sid *SID) (count *uint8) = advapi32.GetSidSubAuthorityCount\n//sys\tgetSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) = advapi32.GetSidSubAuthority\n//sys\tisValidSid(sid *SID) (isValid bool) = advapi32.IsValidSid\n\n// The security identifier (SID) structure is a variable-length\n// structure used to uniquely identify users or groups.\ntype SID struct{}\n\n// StringToSid converts a string-format security identifier\n// SID into a valid, functional SID.\nfunc StringToSid(s string) (*SID, error) {\n\tvar sid *SID\n\tp, e := UTF16PtrFromString(s)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\te = ConvertStringSidToSid(p, &sid)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\tdefer LocalFree((Handle)(unsafe.Pointer(sid)))\n\treturn sid.Copy()\n}\n\n// LookupSID retrieves a security identifier SID for the account\n// and the name of the domain on which the account was found.\n// System specify target computer to search.\nfunc LookupSID(system, account string) (sid *SID, domain string, accType uint32, err error) {\n\tif len(account) == 0 {\n\t\treturn nil, \"\", 0, syscall.EINVAL\n\t}\n\tacc, e := UTF16PtrFromString(account)\n\tif e != nil {\n\t\treturn nil, \"\", 0, e\n\t}\n\tvar sys *uint16\n\tif len(system) > 0 {\n\t\tsys, e = UTF16PtrFromString(system)\n\t\tif e != nil {\n\t\t\treturn nil, \"\", 0, e\n\t\t}\n\t}\n\tn := uint32(50)\n\tdn := uint32(50)\n\tfor {\n\t\tb := make([]byte, n)\n\t\tdb := make([]uint16, dn)\n\t\tsid = (*SID)(unsafe.Pointer(&b[0]))\n\t\te = LookupAccountName(sys, acc, sid, &n, &db[0], &dn, &accType)\n\t\tif e == nil {\n\t\t\treturn sid, UTF16ToString(db), accType, nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn nil, \"\", 0, e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn nil, \"\", 0, e\n\t\t}\n\t}\n}\n\n// String converts SID to a string format suitable for display, storage, or transmission.\nfunc (sid *SID) String() string {\n\tvar s *uint16\n\te := ConvertSidToStringSid(sid, &s)\n\tif e != nil {\n\t\treturn \"\"\n\t}\n\tdefer LocalFree((Handle)(unsafe.Pointer(s)))\n\treturn UTF16ToString((*[256]uint16)(unsafe.Pointer(s))[:])\n}\n\n// Len returns the length, in bytes, of a valid security identifier SID.\nfunc (sid *SID) Len() int {\n\treturn int(GetLengthSid(sid))\n}\n\n// Copy creates a duplicate of security identifier SID.\nfunc (sid *SID) Copy() (*SID, error) {\n\tb := make([]byte, sid.Len())\n\tsid2 := (*SID)(unsafe.Pointer(&b[0]))\n\te := CopySid(uint32(len(b)), sid2, sid)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn sid2, nil\n}\n\n// IdentifierAuthority returns the identifier authority of the SID.\nfunc (sid *SID) IdentifierAuthority() SidIdentifierAuthority {\n\treturn *getSidIdentifierAuthority(sid)\n}\n\n// SubAuthorityCount returns the number of sub-authorities in the SID.\nfunc (sid *SID) SubAuthorityCount() uint8 {\n\treturn *getSidSubAuthorityCount(sid)\n}\n\n// SubAuthority returns the sub-authority of the SID as specified by\n// the index, which must be less than sid.SubAuthorityCount().\nfunc (sid *SID) SubAuthority(idx uint32) uint32 {\n\tif idx >= uint32(sid.SubAuthorityCount()) {\n\t\tpanic(\"sub-authority index out of range\")\n\t}\n\treturn *getSidSubAuthority(sid, idx)\n}\n\n// IsValid returns whether the SID has a valid revision and length.\nfunc (sid *SID) IsValid() bool {\n\treturn isValidSid(sid)\n}\n\n// Equals compares two SIDs for equality.\nfunc (sid *SID) Equals(sid2 *SID) bool {\n\treturn EqualSid(sid, sid2)\n}\n\n// IsWellKnown determines whether the SID matches the well-known sidType.\nfunc (sid *SID) IsWellKnown(sidType WELL_KNOWN_SID_TYPE) bool {\n\treturn isWellKnownSid(sid, sidType)\n}\n\n// LookupAccount retrieves the name of the account for this SID\n// and the name of the first domain on which this SID is found.\n// System specify target computer to search for.\nfunc (sid *SID) LookupAccount(system string) (account, domain string, accType uint32, err error) {\n\tvar sys *uint16\n\tif len(system) > 0 {\n\t\tsys, err = UTF16PtrFromString(system)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", 0, err\n\t\t}\n\t}\n\tn := uint32(50)\n\tdn := uint32(50)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tdb := make([]uint16, dn)\n\t\te := LookupAccountSid(sys, sid, &b[0], &n, &db[0], &dn, &accType)\n\t\tif e == nil {\n\t\t\treturn UTF16ToString(b), UTF16ToString(db), accType, nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn \"\", \"\", 0, e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn \"\", \"\", 0, e\n\t\t}\n\t}\n}\n\n// Various types of pre-specified SIDs that can be synthesized and compared at runtime.\ntype WELL_KNOWN_SID_TYPE uint32\n\nconst (\n\tWinNullSid                                    = 0\n\tWinWorldSid                                   = 1\n\tWinLocalSid                                   = 2\n\tWinCreatorOwnerSid                            = 3\n\tWinCreatorGroupSid                            = 4\n\tWinCreatorOwnerServerSid                      = 5\n\tWinCreatorGroupServerSid                      = 6\n\tWinNtAuthoritySid                             = 7\n\tWinDialupSid                                  = 8\n\tWinNetworkSid                                 = 9\n\tWinBatchSid                                   = 10\n\tWinInteractiveSid                             = 11\n\tWinServiceSid                                 = 12\n\tWinAnonymousSid                               = 13\n\tWinProxySid                                   = 14\n\tWinEnterpriseControllersSid                   = 15\n\tWinSelfSid                                    = 16\n\tWinAuthenticatedUserSid                       = 17\n\tWinRestrictedCodeSid                          = 18\n\tWinTerminalServerSid                          = 19\n\tWinRemoteLogonIdSid                           = 20\n\tWinLogonIdsSid                                = 21\n\tWinLocalSystemSid                             = 22\n\tWinLocalServiceSid                            = 23\n\tWinNetworkServiceSid                          = 24\n\tWinBuiltinDomainSid                           = 25\n\tWinBuiltinAdministratorsSid                   = 26\n\tWinBuiltinUsersSid                            = 27\n\tWinBuiltinGuestsSid                           = 28\n\tWinBuiltinPowerUsersSid                       = 29\n\tWinBuiltinAccountOperatorsSid                 = 30\n\tWinBuiltinSystemOperatorsSid                  = 31\n\tWinBuiltinPrintOperatorsSid                   = 32\n\tWinBuiltinBackupOperatorsSid                  = 33\n\tWinBuiltinReplicatorSid                       = 34\n\tWinBuiltinPreWindows2000CompatibleAccessSid   = 35\n\tWinBuiltinRemoteDesktopUsersSid               = 36\n\tWinBuiltinNetworkConfigurationOperatorsSid    = 37\n\tWinAccountAdministratorSid                    = 38\n\tWinAccountGuestSid                            = 39\n\tWinAccountKrbtgtSid                           = 40\n\tWinAccountDomainAdminsSid                     = 41\n\tWinAccountDomainUsersSid                      = 42\n\tWinAccountDomainGuestsSid                     = 43\n\tWinAccountComputersSid                        = 44\n\tWinAccountControllersSid                      = 45\n\tWinAccountCertAdminsSid                       = 46\n\tWinAccountSchemaAdminsSid                     = 47\n\tWinAccountEnterpriseAdminsSid                 = 48\n\tWinAccountPolicyAdminsSid                     = 49\n\tWinAccountRasAndIasServersSid                 = 50\n\tWinNTLMAuthenticationSid                      = 51\n\tWinDigestAuthenticationSid                    = 52\n\tWinSChannelAuthenticationSid                  = 53\n\tWinThisOrganizationSid                        = 54\n\tWinOtherOrganizationSid                       = 55\n\tWinBuiltinIncomingForestTrustBuildersSid      = 56\n\tWinBuiltinPerfMonitoringUsersSid              = 57\n\tWinBuiltinPerfLoggingUsersSid                 = 58\n\tWinBuiltinAuthorizationAccessSid              = 59\n\tWinBuiltinTerminalServerLicenseServersSid     = 60\n\tWinBuiltinDCOMUsersSid                        = 61\n\tWinBuiltinIUsersSid                           = 62\n\tWinIUserSid                                   = 63\n\tWinBuiltinCryptoOperatorsSid                  = 64\n\tWinUntrustedLabelSid                          = 65\n\tWinLowLabelSid                                = 66\n\tWinMediumLabelSid                             = 67\n\tWinHighLabelSid                               = 68\n\tWinSystemLabelSid                             = 69\n\tWinWriteRestrictedCodeSid                     = 70\n\tWinCreatorOwnerRightsSid                      = 71\n\tWinCacheablePrincipalsGroupSid                = 72\n\tWinNonCacheablePrincipalsGroupSid             = 73\n\tWinEnterpriseReadonlyControllersSid           = 74\n\tWinAccountReadonlyControllersSid              = 75\n\tWinBuiltinEventLogReadersGroup                = 76\n\tWinNewEnterpriseReadonlyControllersSid        = 77\n\tWinBuiltinCertSvcDComAccessGroup              = 78\n\tWinMediumPlusLabelSid                         = 79\n\tWinLocalLogonSid                              = 80\n\tWinConsoleLogonSid                            = 81\n\tWinThisOrganizationCertificateSid             = 82\n\tWinApplicationPackageAuthoritySid             = 83\n\tWinBuiltinAnyPackageSid                       = 84\n\tWinCapabilityInternetClientSid                = 85\n\tWinCapabilityInternetClientServerSid          = 86\n\tWinCapabilityPrivateNetworkClientServerSid    = 87\n\tWinCapabilityPicturesLibrarySid               = 88\n\tWinCapabilityVideosLibrarySid                 = 89\n\tWinCapabilityMusicLibrarySid                  = 90\n\tWinCapabilityDocumentsLibrarySid              = 91\n\tWinCapabilitySharedUserCertificatesSid        = 92\n\tWinCapabilityEnterpriseAuthenticationSid      = 93\n\tWinCapabilityRemovableStorageSid              = 94\n\tWinBuiltinRDSRemoteAccessServersSid           = 95\n\tWinBuiltinRDSEndpointServersSid               = 96\n\tWinBuiltinRDSManagementServersSid             = 97\n\tWinUserModeDriversSid                         = 98\n\tWinBuiltinHyperVAdminsSid                     = 99\n\tWinAccountCloneableControllersSid             = 100\n\tWinBuiltinAccessControlAssistanceOperatorsSid = 101\n\tWinBuiltinRemoteManagementUsersSid            = 102\n\tWinAuthenticationAuthorityAssertedSid         = 103\n\tWinAuthenticationServiceAssertedSid           = 104\n\tWinLocalAccountSid                            = 105\n\tWinLocalAccountAndAdministratorSid            = 106\n\tWinAccountProtectedUsersSid                   = 107\n\tWinCapabilityAppointmentsSid                  = 108\n\tWinCapabilityContactsSid                      = 109\n\tWinAccountDefaultSystemManagedSid             = 110\n\tWinBuiltinDefaultSystemManagedGroupSid        = 111\n\tWinBuiltinStorageReplicaAdminsSid             = 112\n\tWinAccountKeyAdminsSid                        = 113\n\tWinAccountEnterpriseKeyAdminsSid              = 114\n\tWinAuthenticationKeyTrustSid                  = 115\n\tWinAuthenticationKeyPropertyMFASid            = 116\n\tWinAuthenticationKeyPropertyAttestationSid    = 117\n\tWinAuthenticationFreshKeyAuthSid              = 118\n\tWinBuiltinDeviceOwnersSid                     = 119\n)\n\n// Creates a SID for a well-known predefined alias, generally using the constants of the form\n// Win*Sid, for the local machine.\nfunc CreateWellKnownSid(sidType WELL_KNOWN_SID_TYPE) (*SID, error) {\n\treturn CreateWellKnownDomainSid(sidType, nil)\n}\n\n// Creates a SID for a well-known predefined alias, generally using the constants of the form\n// Win*Sid, for the domain specified by the domainSid parameter.\nfunc CreateWellKnownDomainSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID) (*SID, error) {\n\tn := uint32(50)\n\tfor {\n\t\tb := make([]byte, n)\n\t\tsid := (*SID)(unsafe.Pointer(&b[0]))\n\t\terr := createWellKnownSid(sidType, domainSid, sid, &n)\n\t\tif err == nil {\n\t\t\treturn sid, nil\n\t\t}\n\t\tif err != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn nil, err\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn nil, err\n\t\t}\n\t}\n}\n\nconst (\n\t// do not reorder\n\tTOKEN_ASSIGN_PRIMARY = 1 << iota\n\tTOKEN_DUPLICATE\n\tTOKEN_IMPERSONATE\n\tTOKEN_QUERY\n\tTOKEN_QUERY_SOURCE\n\tTOKEN_ADJUST_PRIVILEGES\n\tTOKEN_ADJUST_GROUPS\n\tTOKEN_ADJUST_DEFAULT\n\tTOKEN_ADJUST_SESSIONID\n\n\tTOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED |\n\t\tTOKEN_ASSIGN_PRIMARY |\n\t\tTOKEN_DUPLICATE |\n\t\tTOKEN_IMPERSONATE |\n\t\tTOKEN_QUERY |\n\t\tTOKEN_QUERY_SOURCE |\n\t\tTOKEN_ADJUST_PRIVILEGES |\n\t\tTOKEN_ADJUST_GROUPS |\n\t\tTOKEN_ADJUST_DEFAULT |\n\t\tTOKEN_ADJUST_SESSIONID\n\tTOKEN_READ  = STANDARD_RIGHTS_READ | TOKEN_QUERY\n\tTOKEN_WRITE = STANDARD_RIGHTS_WRITE |\n\t\tTOKEN_ADJUST_PRIVILEGES |\n\t\tTOKEN_ADJUST_GROUPS |\n\t\tTOKEN_ADJUST_DEFAULT\n\tTOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE\n)\n\nconst (\n\t// do not reorder\n\tTokenUser = 1 + iota\n\tTokenGroups\n\tTokenPrivileges\n\tTokenOwner\n\tTokenPrimaryGroup\n\tTokenDefaultDacl\n\tTokenSource\n\tTokenType\n\tTokenImpersonationLevel\n\tTokenStatistics\n\tTokenRestrictedSids\n\tTokenSessionId\n\tTokenGroupsAndPrivileges\n\tTokenSessionReference\n\tTokenSandBoxInert\n\tTokenAuditPolicy\n\tTokenOrigin\n\tTokenElevationType\n\tTokenLinkedToken\n\tTokenElevation\n\tTokenHasRestrictions\n\tTokenAccessInformation\n\tTokenVirtualizationAllowed\n\tTokenVirtualizationEnabled\n\tTokenIntegrityLevel\n\tTokenUIAccess\n\tTokenMandatoryPolicy\n\tTokenLogonSid\n\tMaxTokenInfoClass\n)\n\n// Group attributes inside of Tokengroups.Groups[i].Attributes\nconst (\n\tSE_GROUP_MANDATORY          = 0x00000001\n\tSE_GROUP_ENABLED_BY_DEFAULT = 0x00000002\n\tSE_GROUP_ENABLED            = 0x00000004\n\tSE_GROUP_OWNER              = 0x00000008\n\tSE_GROUP_USE_FOR_DENY_ONLY  = 0x00000010\n\tSE_GROUP_INTEGRITY          = 0x00000020\n\tSE_GROUP_INTEGRITY_ENABLED  = 0x00000040\n\tSE_GROUP_LOGON_ID           = 0xC0000000\n\tSE_GROUP_RESOURCE           = 0x20000000\n\tSE_GROUP_VALID_ATTRIBUTES   = SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED | SE_GROUP_OWNER | SE_GROUP_USE_FOR_DENY_ONLY | SE_GROUP_LOGON_ID | SE_GROUP_RESOURCE | SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED\n)\n\n// Privilege attributes\nconst (\n\tSE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001\n\tSE_PRIVILEGE_ENABLED            = 0x00000002\n\tSE_PRIVILEGE_REMOVED            = 0x00000004\n\tSE_PRIVILEGE_USED_FOR_ACCESS    = 0x80000000\n\tSE_PRIVILEGE_VALID_ATTRIBUTES   = SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS\n)\n\n// Token types\nconst (\n\tTokenPrimary       = 1\n\tTokenImpersonation = 2\n)\n\n// Impersonation levels\nconst (\n\tSecurityAnonymous      = 0\n\tSecurityIdentification = 1\n\tSecurityImpersonation  = 2\n\tSecurityDelegation     = 3\n)\n\ntype LUID struct {\n\tLowPart  uint32\n\tHighPart int32\n}\n\ntype LUIDAndAttributes struct {\n\tLuid       LUID\n\tAttributes uint32\n}\n\ntype SIDAndAttributes struct {\n\tSid        *SID\n\tAttributes uint32\n}\n\ntype Tokenuser struct {\n\tUser SIDAndAttributes\n}\n\ntype Tokenprimarygroup struct {\n\tPrimaryGroup *SID\n}\n\ntype Tokengroups struct {\n\tGroupCount uint32\n\tGroups     [1]SIDAndAttributes // Use AllGroups() for iterating.\n}\n\n// AllGroups returns a slice that can be used to iterate over the groups in g.\nfunc (g *Tokengroups) AllGroups() []SIDAndAttributes {\n\treturn (*[(1 << 28) - 1]SIDAndAttributes)(unsafe.Pointer(&g.Groups[0]))[:g.GroupCount:g.GroupCount]\n}\n\ntype Tokenprivileges struct {\n\tPrivilegeCount uint32\n\tPrivileges     [1]LUIDAndAttributes // Use AllPrivileges() for iterating.\n}\n\n// AllPrivileges returns a slice that can be used to iterate over the privileges in p.\nfunc (p *Tokenprivileges) AllPrivileges() []LUIDAndAttributes {\n\treturn (*[(1 << 27) - 1]LUIDAndAttributes)(unsafe.Pointer(&p.Privileges[0]))[:p.PrivilegeCount:p.PrivilegeCount]\n}\n\ntype Tokenmandatorylabel struct {\n\tLabel SIDAndAttributes\n}\n\nfunc (tml *Tokenmandatorylabel) Size() uint32 {\n\treturn uint32(unsafe.Sizeof(Tokenmandatorylabel{})) + GetLengthSid(tml.Label.Sid)\n}\n\n// Authorization Functions\n//sys\tcheckTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership\n//sys\tisTokenRestricted(tokenHandle Token) (ret bool, err error) [!failretval] = advapi32.IsTokenRestricted\n//sys\tOpenProcessToken(process Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken\n//sys\tOpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) = advapi32.OpenThreadToken\n//sys\tImpersonateSelf(impersonationlevel uint32) (err error) = advapi32.ImpersonateSelf\n//sys\tRevertToSelf() (err error) = advapi32.RevertToSelf\n//sys\tSetThreadToken(thread *Handle, token Token) (err error) = advapi32.SetThreadToken\n//sys\tLookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) = advapi32.LookupPrivilegeValueW\n//sys\tAdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) = advapi32.AdjustTokenPrivileges\n//sys\tAdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) = advapi32.AdjustTokenGroups\n//sys\tGetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation\n//sys\tSetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) = advapi32.SetTokenInformation\n//sys\tDuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) = advapi32.DuplicateTokenEx\n//sys\tGetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW\n//sys\tgetSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemDirectoryW\n//sys\tgetWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetWindowsDirectoryW\n//sys\tgetSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemWindowsDirectoryW\n\n// An access token contains the security information for a logon session.\n// The system creates an access token when a user logs on, and every\n// process executed on behalf of the user has a copy of the token.\n// The token identifies the user, the user's groups, and the user's\n// privileges. The system uses the token to control access to securable\n// objects and to control the ability of the user to perform various\n// system-related operations on the local computer.\ntype Token Handle\n\n// OpenCurrentProcessToken opens an access token associated with current\n// process with TOKEN_QUERY access. It is a real token that needs to be closed.\n//\n// Deprecated: Explicitly call OpenProcessToken(CurrentProcess(), ...)\n// with the desired access instead, or use GetCurrentProcessToken for a\n// TOKEN_QUERY token.\nfunc OpenCurrentProcessToken() (Token, error) {\n\tvar token Token\n\terr := OpenProcessToken(CurrentProcess(), TOKEN_QUERY, &token)\n\treturn token, err\n}\n\n// GetCurrentProcessToken returns the access token associated with\n// the current process. It is a pseudo token that does not need\n// to be closed.\nfunc GetCurrentProcessToken() Token {\n\treturn Token(^uintptr(4 - 1))\n}\n\n// GetCurrentThreadToken return the access token associated with\n// the current thread. It is a pseudo token that does not need\n// to be closed.\nfunc GetCurrentThreadToken() Token {\n\treturn Token(^uintptr(5 - 1))\n}\n\n// GetCurrentThreadEffectiveToken returns the effective access token\n// associated with the current thread. It is a pseudo token that does\n// not need to be closed.\nfunc GetCurrentThreadEffectiveToken() Token {\n\treturn Token(^uintptr(6 - 1))\n}\n\n// Close releases access to access token.\nfunc (t Token) Close() error {\n\treturn CloseHandle(Handle(t))\n}\n\n// getInfo retrieves a specified type of information about an access token.\nfunc (t Token) getInfo(class uint32, initSize int) (unsafe.Pointer, error) {\n\tn := uint32(initSize)\n\tfor {\n\t\tb := make([]byte, n)\n\t\te := GetTokenInformation(t, class, &b[0], uint32(len(b)), &n)\n\t\tif e == nil {\n\t\t\treturn unsafe.Pointer(&b[0]), nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn nil, e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn nil, e\n\t\t}\n\t}\n}\n\n// GetTokenUser retrieves access token t user account information.\nfunc (t Token) GetTokenUser() (*Tokenuser, error) {\n\ti, e := t.getInfo(TokenUser, 50)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn (*Tokenuser)(i), nil\n}\n\n// GetTokenGroups retrieves group accounts associated with access token t.\nfunc (t Token) GetTokenGroups() (*Tokengroups, error) {\n\ti, e := t.getInfo(TokenGroups, 50)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn (*Tokengroups)(i), nil\n}\n\n// GetTokenPrimaryGroup retrieves access token t primary group information.\n// A pointer to a SID structure representing a group that will become\n// the primary group of any objects created by a process using this access token.\nfunc (t Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) {\n\ti, e := t.getInfo(TokenPrimaryGroup, 50)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn (*Tokenprimarygroup)(i), nil\n}\n\n// GetUserProfileDirectory retrieves path to the\n// root directory of the access token t user's profile.\nfunc (t Token) GetUserProfileDirectory() (string, error) {\n\tn := uint32(100)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\te := GetUserProfileDirectory(t, &b[0], &n)\n\t\tif e == nil {\n\t\t\treturn UTF16ToString(b), nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn \"\", e\n\t\t}\n\t}\n}\n\n// IsElevated returns whether the current token is elevated from a UAC perspective.\nfunc (token Token) IsElevated() bool {\n\tvar isElevated uint32\n\tvar outLen uint32\n\terr := GetTokenInformation(token, TokenElevation, (*byte)(unsafe.Pointer(&isElevated)), uint32(unsafe.Sizeof(isElevated)), &outLen)\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn outLen == uint32(unsafe.Sizeof(isElevated)) && isElevated != 0\n}\n\n// GetLinkedToken returns the linked token, which may be an elevated UAC token.\nfunc (token Token) GetLinkedToken() (Token, error) {\n\tvar linkedToken Token\n\tvar outLen uint32\n\terr := GetTokenInformation(token, TokenLinkedToken, (*byte)(unsafe.Pointer(&linkedToken)), uint32(unsafe.Sizeof(linkedToken)), &outLen)\n\tif err != nil {\n\t\treturn Token(0), err\n\t}\n\treturn linkedToken, nil\n}\n\n// GetSystemDirectory retrieves the path to current location of the system\n// directory, which is typically, though not always, `C:\\Windows\\System32`.\nfunc GetSystemDirectory() (string, error) {\n\tn := uint32(MAX_PATH)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tl, e := getSystemDirectory(&b[0], n)\n\t\tif e != nil {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif l <= n {\n\t\t\treturn UTF16ToString(b[:l]), nil\n\t\t}\n\t\tn = l\n\t}\n}\n\n// GetWindowsDirectory retrieves the path to current location of the Windows\n// directory, which is typically, though not always, `C:\\Windows`. This may\n// be a private user directory in the case that the application is running\n// under a terminal server.\nfunc GetWindowsDirectory() (string, error) {\n\tn := uint32(MAX_PATH)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tl, e := getWindowsDirectory(&b[0], n)\n\t\tif e != nil {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif l <= n {\n\t\t\treturn UTF16ToString(b[:l]), nil\n\t\t}\n\t\tn = l\n\t}\n}\n\n// GetSystemWindowsDirectory retrieves the path to current location of the\n// Windows directory, which is typically, though not always, `C:\\Windows`.\nfunc GetSystemWindowsDirectory() (string, error) {\n\tn := uint32(MAX_PATH)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tl, e := getSystemWindowsDirectory(&b[0], n)\n\t\tif e != nil {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif l <= n {\n\t\t\treturn UTF16ToString(b[:l]), nil\n\t\t}\n\t\tn = l\n\t}\n}\n\n// IsMember reports whether the access token t is a member of the provided SID.\nfunc (t Token) IsMember(sid *SID) (bool, error) {\n\tvar b int32\n\tif e := checkTokenMembership(t, sid, &b); e != nil {\n\t\treturn false, e\n\t}\n\treturn b != 0, nil\n}\n\n// IsRestricted reports whether the access token t is a restricted token.\nfunc (t Token) IsRestricted() (isRestricted bool, err error) {\n\tisRestricted, err = isTokenRestricted(t)\n\tif !isRestricted && err == syscall.EINVAL {\n\t\t// If err is EINVAL, this returned ERROR_SUCCESS indicating a non-restricted token.\n\t\terr = nil\n\t}\n\treturn\n}\n\nconst (\n\tWTS_CONSOLE_CONNECT        = 0x1\n\tWTS_CONSOLE_DISCONNECT     = 0x2\n\tWTS_REMOTE_CONNECT         = 0x3\n\tWTS_REMOTE_DISCONNECT      = 0x4\n\tWTS_SESSION_LOGON          = 0x5\n\tWTS_SESSION_LOGOFF         = 0x6\n\tWTS_SESSION_LOCK           = 0x7\n\tWTS_SESSION_UNLOCK         = 0x8\n\tWTS_SESSION_REMOTE_CONTROL = 0x9\n\tWTS_SESSION_CREATE         = 0xa\n\tWTS_SESSION_TERMINATE      = 0xb\n)\n\nconst (\n\tWTSActive       = 0\n\tWTSConnected    = 1\n\tWTSConnectQuery = 2\n\tWTSShadow       = 3\n\tWTSDisconnected = 4\n\tWTSIdle         = 5\n\tWTSListen       = 6\n\tWTSReset        = 7\n\tWTSDown         = 8\n\tWTSInit         = 9\n)\n\ntype WTSSESSION_NOTIFICATION struct {\n\tSize      uint32\n\tSessionID uint32\n}\n\ntype WTS_SESSION_INFO struct {\n\tSessionID         uint32\n\tWindowStationName *uint16\n\tState             uint32\n}\n\n//sys WTSQueryUserToken(session uint32, token *Token) (err error) = wtsapi32.WTSQueryUserToken\n//sys WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW\n//sys WTSFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory\n//sys WTSGetActiveConsoleSessionId() (sessionID uint32)\n\ntype ACL struct {\n\taclRevision byte\n\tsbz1        byte\n\taclSize     uint16\n\tAceCount    uint16\n\tsbz2        uint16\n}\n\ntype SECURITY_DESCRIPTOR struct {\n\trevision byte\n\tsbz1     byte\n\tcontrol  SECURITY_DESCRIPTOR_CONTROL\n\towner    *SID\n\tgroup    *SID\n\tsacl     *ACL\n\tdacl     *ACL\n}\n\ntype SECURITY_QUALITY_OF_SERVICE struct {\n\tLength              uint32\n\tImpersonationLevel  uint32\n\tContextTrackingMode byte\n\tEffectiveOnly       byte\n}\n\n// Constants for the ContextTrackingMode field of SECURITY_QUALITY_OF_SERVICE.\nconst (\n\tSECURITY_STATIC_TRACKING  = 0\n\tSECURITY_DYNAMIC_TRACKING = 1\n)\n\ntype SecurityAttributes struct {\n\tLength             uint32\n\tSecurityDescriptor *SECURITY_DESCRIPTOR\n\tInheritHandle      uint32\n}\n\ntype SE_OBJECT_TYPE uint32\n\n// Constants for type SE_OBJECT_TYPE\nconst (\n\tSE_UNKNOWN_OBJECT_TYPE     = 0\n\tSE_FILE_OBJECT             = 1\n\tSE_SERVICE                 = 2\n\tSE_PRINTER                 = 3\n\tSE_REGISTRY_KEY            = 4\n\tSE_LMSHARE                 = 5\n\tSE_KERNEL_OBJECT           = 6\n\tSE_WINDOW_OBJECT           = 7\n\tSE_DS_OBJECT               = 8\n\tSE_DS_OBJECT_ALL           = 9\n\tSE_PROVIDER_DEFINED_OBJECT = 10\n\tSE_WMIGUID_OBJECT          = 11\n\tSE_REGISTRY_WOW64_32KEY    = 12\n\tSE_REGISTRY_WOW64_64KEY    = 13\n)\n\ntype SECURITY_INFORMATION uint32\n\n// Constants for type SECURITY_INFORMATION\nconst (\n\tOWNER_SECURITY_INFORMATION            = 0x00000001\n\tGROUP_SECURITY_INFORMATION            = 0x00000002\n\tDACL_SECURITY_INFORMATION             = 0x00000004\n\tSACL_SECURITY_INFORMATION             = 0x00000008\n\tLABEL_SECURITY_INFORMATION            = 0x00000010\n\tATTRIBUTE_SECURITY_INFORMATION        = 0x00000020\n\tSCOPE_SECURITY_INFORMATION            = 0x00000040\n\tBACKUP_SECURITY_INFORMATION           = 0x00010000\n\tPROTECTED_DACL_SECURITY_INFORMATION   = 0x80000000\n\tPROTECTED_SACL_SECURITY_INFORMATION   = 0x40000000\n\tUNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000\n\tUNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000\n)\n\ntype SECURITY_DESCRIPTOR_CONTROL uint16\n\n// Constants for type SECURITY_DESCRIPTOR_CONTROL\nconst (\n\tSE_OWNER_DEFAULTED       = 0x0001\n\tSE_GROUP_DEFAULTED       = 0x0002\n\tSE_DACL_PRESENT          = 0x0004\n\tSE_DACL_DEFAULTED        = 0x0008\n\tSE_SACL_PRESENT          = 0x0010\n\tSE_SACL_DEFAULTED        = 0x0020\n\tSE_DACL_AUTO_INHERIT_REQ = 0x0100\n\tSE_SACL_AUTO_INHERIT_REQ = 0x0200\n\tSE_DACL_AUTO_INHERITED   = 0x0400\n\tSE_SACL_AUTO_INHERITED   = 0x0800\n\tSE_DACL_PROTECTED        = 0x1000\n\tSE_SACL_PROTECTED        = 0x2000\n\tSE_RM_CONTROL_VALID      = 0x4000\n\tSE_SELF_RELATIVE         = 0x8000\n)\n\ntype ACCESS_MASK uint32\n\n// Constants for type ACCESS_MASK\nconst (\n\tDELETE                   = 0x00010000\n\tREAD_CONTROL             = 0x00020000\n\tWRITE_DAC                = 0x00040000\n\tWRITE_OWNER              = 0x00080000\n\tSYNCHRONIZE              = 0x00100000\n\tSTANDARD_RIGHTS_REQUIRED = 0x000F0000\n\tSTANDARD_RIGHTS_READ     = READ_CONTROL\n\tSTANDARD_RIGHTS_WRITE    = READ_CONTROL\n\tSTANDARD_RIGHTS_EXECUTE  = READ_CONTROL\n\tSTANDARD_RIGHTS_ALL      = 0x001F0000\n\tSPECIFIC_RIGHTS_ALL      = 0x0000FFFF\n\tACCESS_SYSTEM_SECURITY   = 0x01000000\n\tMAXIMUM_ALLOWED          = 0x02000000\n\tGENERIC_READ             = 0x80000000\n\tGENERIC_WRITE            = 0x40000000\n\tGENERIC_EXECUTE          = 0x20000000\n\tGENERIC_ALL              = 0x10000000\n)\n\ntype ACCESS_MODE uint32\n\n// Constants for type ACCESS_MODE\nconst (\n\tNOT_USED_ACCESS   = 0\n\tGRANT_ACCESS      = 1\n\tSET_ACCESS        = 2\n\tDENY_ACCESS       = 3\n\tREVOKE_ACCESS     = 4\n\tSET_AUDIT_SUCCESS = 5\n\tSET_AUDIT_FAILURE = 6\n)\n\n// Constants for AceFlags and Inheritance fields\nconst (\n\tNO_INHERITANCE                     = 0x0\n\tSUB_OBJECTS_ONLY_INHERIT           = 0x1\n\tSUB_CONTAINERS_ONLY_INHERIT        = 0x2\n\tSUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3\n\tINHERIT_NO_PROPAGATE               = 0x4\n\tINHERIT_ONLY                       = 0x8\n\tINHERITED_ACCESS_ENTRY             = 0x10\n\tINHERITED_PARENT                   = 0x10000000\n\tINHERITED_GRANDPARENT              = 0x20000000\n\tOBJECT_INHERIT_ACE                 = 0x1\n\tCONTAINER_INHERIT_ACE              = 0x2\n\tNO_PROPAGATE_INHERIT_ACE           = 0x4\n\tINHERIT_ONLY_ACE                   = 0x8\n\tINHERITED_ACE                      = 0x10\n\tVALID_INHERIT_FLAGS                = 0x1F\n)\n\ntype MULTIPLE_TRUSTEE_OPERATION uint32\n\n// Constants for MULTIPLE_TRUSTEE_OPERATION\nconst (\n\tNO_MULTIPLE_TRUSTEE    = 0\n\tTRUSTEE_IS_IMPERSONATE = 1\n)\n\ntype TRUSTEE_FORM uint32\n\n// Constants for TRUSTEE_FORM\nconst (\n\tTRUSTEE_IS_SID              = 0\n\tTRUSTEE_IS_NAME             = 1\n\tTRUSTEE_BAD_FORM            = 2\n\tTRUSTEE_IS_OBJECTS_AND_SID  = 3\n\tTRUSTEE_IS_OBJECTS_AND_NAME = 4\n)\n\ntype TRUSTEE_TYPE uint32\n\n// Constants for TRUSTEE_TYPE\nconst (\n\tTRUSTEE_IS_UNKNOWN          = 0\n\tTRUSTEE_IS_USER             = 1\n\tTRUSTEE_IS_GROUP            = 2\n\tTRUSTEE_IS_DOMAIN           = 3\n\tTRUSTEE_IS_ALIAS            = 4\n\tTRUSTEE_IS_WELL_KNOWN_GROUP = 5\n\tTRUSTEE_IS_DELETED          = 6\n\tTRUSTEE_IS_INVALID          = 7\n\tTRUSTEE_IS_COMPUTER         = 8\n)\n\n// Constants for ObjectsPresent field\nconst (\n\tACE_OBJECT_TYPE_PRESENT           = 0x1\n\tACE_INHERITED_OBJECT_TYPE_PRESENT = 0x2\n)\n\ntype EXPLICIT_ACCESS struct {\n\tAccessPermissions ACCESS_MASK\n\tAccessMode        ACCESS_MODE\n\tInheritance       uint32\n\tTrustee           TRUSTEE\n}\n\n// https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-ace_header\ntype ACE_HEADER struct {\n\tAceType  uint8\n\tAceFlags uint8\n\tAceSize  uint16\n}\n\n// https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-access_allowed_ace\ntype ACCESS_ALLOWED_ACE struct {\n\tHeader   ACE_HEADER\n\tMask     ACCESS_MASK\n\tSidStart uint32\n}\n\nconst (\n\t// Constants for AceType\n\t// https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-ace_header\n\tACCESS_ALLOWED_ACE_TYPE = 0\n\tACCESS_DENIED_ACE_TYPE  = 1\n)\n\n// This type is the union inside of TRUSTEE and must be created using one of the TrusteeValueFrom* functions.\ntype TrusteeValue uintptr\n\nfunc TrusteeValueFromString(str string) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(StringToUTF16Ptr(str)))\n}\nfunc TrusteeValueFromSID(sid *SID) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(sid))\n}\nfunc TrusteeValueFromObjectsAndSid(objectsAndSid *OBJECTS_AND_SID) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(objectsAndSid))\n}\nfunc TrusteeValueFromObjectsAndName(objectsAndName *OBJECTS_AND_NAME) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(objectsAndName))\n}\n\ntype TRUSTEE struct {\n\tMultipleTrustee          *TRUSTEE\n\tMultipleTrusteeOperation MULTIPLE_TRUSTEE_OPERATION\n\tTrusteeForm              TRUSTEE_FORM\n\tTrusteeType              TRUSTEE_TYPE\n\tTrusteeValue             TrusteeValue\n}\n\ntype OBJECTS_AND_SID struct {\n\tObjectsPresent          uint32\n\tObjectTypeGuid          GUID\n\tInheritedObjectTypeGuid GUID\n\tSid                     *SID\n}\n\ntype OBJECTS_AND_NAME struct {\n\tObjectsPresent          uint32\n\tObjectType              SE_OBJECT_TYPE\n\tObjectTypeName          *uint16\n\tInheritedObjectTypeName *uint16\n\tName                    *uint16\n}\n\n//sys\tgetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetSecurityInfo\n//sys\tSetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetSecurityInfo\n//sys\tgetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetNamedSecurityInfoW\n//sys\tSetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetNamedSecurityInfoW\n//sys\tSetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) = advapi32.SetKernelObjectSecurity\n\n//sys\tbuildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) = advapi32.BuildSecurityDescriptorW\n//sys\tinitializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) = advapi32.InitializeSecurityDescriptor\n\n//sys\tgetSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) = advapi32.GetSecurityDescriptorControl\n//sys\tgetSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorDacl\n//sys\tgetSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorSacl\n//sys\tgetSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorOwner\n//sys\tgetSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorGroup\n//sys\tgetSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) = advapi32.GetSecurityDescriptorLength\n//sys\tgetSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) [failretval!=0] = advapi32.GetSecurityDescriptorRMControl\n//sys\tisValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) = advapi32.IsValidSecurityDescriptor\n\n//sys\tsetSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) = advapi32.SetSecurityDescriptorControl\n//sys\tsetSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorDacl\n//sys\tsetSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorSacl\n//sys\tsetSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) = advapi32.SetSecurityDescriptorOwner\n//sys\tsetSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) = advapi32.SetSecurityDescriptorGroup\n//sys\tsetSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) = advapi32.SetSecurityDescriptorRMControl\n\n//sys\tconvertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) = advapi32.ConvertStringSecurityDescriptorToSecurityDescriptorW\n//sys\tconvertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) = advapi32.ConvertSecurityDescriptorToStringSecurityDescriptorW\n\n//sys\tmakeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) = advapi32.MakeAbsoluteSD\n//sys\tmakeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) = advapi32.MakeSelfRelativeSD\n\n//sys\tsetEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) = advapi32.SetEntriesInAclW\n//sys\tGetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) = advapi32.GetAce\n\n// Control returns the security descriptor control bits.\nfunc (sd *SECURITY_DESCRIPTOR) Control() (control SECURITY_DESCRIPTOR_CONTROL, revision uint32, err error) {\n\terr = getSecurityDescriptorControl(sd, &control, &revision)\n\treturn\n}\n\n// SetControl sets the security descriptor control bits.\nfunc (sd *SECURITY_DESCRIPTOR) SetControl(controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) error {\n\treturn setSecurityDescriptorControl(sd, controlBitsOfInterest, controlBitsToSet)\n}\n\n// RMControl returns the security descriptor resource manager control bits.\nfunc (sd *SECURITY_DESCRIPTOR) RMControl() (control uint8, err error) {\n\terr = getSecurityDescriptorRMControl(sd, &control)\n\treturn\n}\n\n// SetRMControl sets the security descriptor resource manager control bits.\nfunc (sd *SECURITY_DESCRIPTOR) SetRMControl(rmControl uint8) {\n\tsetSecurityDescriptorRMControl(sd, &rmControl)\n}\n\n// DACL returns the security descriptor DACL and whether it was defaulted. The dacl return value may be nil\n// if a DACL exists but is an \"empty DACL\", meaning fully permissive. If the DACL does not exist, err returns\n// ERROR_OBJECT_NOT_FOUND.\nfunc (sd *SECURITY_DESCRIPTOR) DACL() (dacl *ACL, defaulted bool, err error) {\n\tvar present bool\n\terr = getSecurityDescriptorDacl(sd, &present, &dacl, &defaulted)\n\tif !present {\n\t\terr = ERROR_OBJECT_NOT_FOUND\n\t}\n\treturn\n}\n\n// SetDACL sets the absolute security descriptor DACL.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetDACL(dacl *ACL, present, defaulted bool) error {\n\treturn setSecurityDescriptorDacl(absoluteSD, present, dacl, defaulted)\n}\n\n// SACL returns the security descriptor SACL and whether it was defaulted. The sacl return value may be nil\n// if a SACL exists but is an \"empty SACL\", meaning fully permissive. If the SACL does not exist, err returns\n// ERROR_OBJECT_NOT_FOUND.\nfunc (sd *SECURITY_DESCRIPTOR) SACL() (sacl *ACL, defaulted bool, err error) {\n\tvar present bool\n\terr = getSecurityDescriptorSacl(sd, &present, &sacl, &defaulted)\n\tif !present {\n\t\terr = ERROR_OBJECT_NOT_FOUND\n\t}\n\treturn\n}\n\n// SetSACL sets the absolute security descriptor SACL.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetSACL(sacl *ACL, present, defaulted bool) error {\n\treturn setSecurityDescriptorSacl(absoluteSD, present, sacl, defaulted)\n}\n\n// Owner returns the security descriptor owner and whether it was defaulted.\nfunc (sd *SECURITY_DESCRIPTOR) Owner() (owner *SID, defaulted bool, err error) {\n\terr = getSecurityDescriptorOwner(sd, &owner, &defaulted)\n\treturn\n}\n\n// SetOwner sets the absolute security descriptor owner.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetOwner(owner *SID, defaulted bool) error {\n\treturn setSecurityDescriptorOwner(absoluteSD, owner, defaulted)\n}\n\n// Group returns the security descriptor group and whether it was defaulted.\nfunc (sd *SECURITY_DESCRIPTOR) Group() (group *SID, defaulted bool, err error) {\n\terr = getSecurityDescriptorGroup(sd, &group, &defaulted)\n\treturn\n}\n\n// SetGroup sets the absolute security descriptor owner.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetGroup(group *SID, defaulted bool) error {\n\treturn setSecurityDescriptorGroup(absoluteSD, group, defaulted)\n}\n\n// Length returns the length of the security descriptor.\nfunc (sd *SECURITY_DESCRIPTOR) Length() uint32 {\n\treturn getSecurityDescriptorLength(sd)\n}\n\n// IsValid returns whether the security descriptor is valid.\nfunc (sd *SECURITY_DESCRIPTOR) IsValid() bool {\n\treturn isValidSecurityDescriptor(sd)\n}\n\n// String returns the SDDL form of the security descriptor, with a function signature that can be\n// used with %v formatting directives.\nfunc (sd *SECURITY_DESCRIPTOR) String() string {\n\tvar sddl *uint16\n\terr := convertSecurityDescriptorToStringSecurityDescriptor(sd, 1, 0xff, &sddl, nil)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(sddl)))\n\treturn UTF16PtrToString(sddl)\n}\n\n// ToAbsolute converts a self-relative security descriptor into an absolute one.\nfunc (selfRelativeSD *SECURITY_DESCRIPTOR) ToAbsolute() (absoluteSD *SECURITY_DESCRIPTOR, err error) {\n\tcontrol, _, err := selfRelativeSD.Control()\n\tif err != nil {\n\t\treturn\n\t}\n\tif control&SE_SELF_RELATIVE == 0 {\n\t\terr = ERROR_INVALID_PARAMETER\n\t\treturn\n\t}\n\tvar absoluteSDSize, daclSize, saclSize, ownerSize, groupSize uint32\n\terr = makeAbsoluteSD(selfRelativeSD, nil, &absoluteSDSize,\n\t\tnil, &daclSize, nil, &saclSize, nil, &ownerSize, nil, &groupSize)\n\tswitch err {\n\tcase ERROR_INSUFFICIENT_BUFFER:\n\tcase nil:\n\t\t// makeAbsoluteSD is expected to fail, but it succeeds.\n\t\treturn nil, ERROR_INTERNAL_ERROR\n\tdefault:\n\t\treturn nil, err\n\t}\n\tif absoluteSDSize > 0 {\n\t\tabsoluteSD = new(SECURITY_DESCRIPTOR)\n\t\tif unsafe.Sizeof(*absoluteSD) < uintptr(absoluteSDSize) {\n\t\t\tpanic(\"sizeof(SECURITY_DESCRIPTOR) too small\")\n\t\t}\n\t}\n\tvar (\n\t\tdacl  *ACL\n\t\tsacl  *ACL\n\t\towner *SID\n\t\tgroup *SID\n\t)\n\tif daclSize > 0 {\n\t\tdacl = (*ACL)(unsafe.Pointer(unsafe.SliceData(make([]byte, daclSize))))\n\t}\n\tif saclSize > 0 {\n\t\tsacl = (*ACL)(unsafe.Pointer(unsafe.SliceData(make([]byte, saclSize))))\n\t}\n\tif ownerSize > 0 {\n\t\towner = (*SID)(unsafe.Pointer(unsafe.SliceData(make([]byte, ownerSize))))\n\t}\n\tif groupSize > 0 {\n\t\tgroup = (*SID)(unsafe.Pointer(unsafe.SliceData(make([]byte, groupSize))))\n\t}\n\t// We call into Windows via makeAbsoluteSD, which sets up\n\t// pointers within absoluteSD that point to other chunks of memory\n\t// we pass into makeAbsoluteSD, and that happens outside the view of the GC.\n\t// We therefore take some care here to then verify the pointers are as we expect\n\t// and set them explicitly in view of the GC. See https://go.dev/issue/73199.\n\t// TODO: consider weak pointers once Go 1.24 is appropriate. See suggestion in https://go.dev/cl/663575.\n\terr = makeAbsoluteSD(selfRelativeSD, absoluteSD, &absoluteSDSize,\n\t\tdacl, &daclSize, sacl, &saclSize, owner, &ownerSize, group, &groupSize)\n\tif err != nil {\n\t\t// Don't return absoluteSD, which might be partially initialized.\n\t\treturn nil, err\n\t}\n\t// Before using any fields, verify absoluteSD is in the format we expect according to Windows.\n\t// See https://learn.microsoft.com/en-us/windows/win32/secauthz/absolute-and-self-relative-security-descriptors\n\tabsControl, _, err := absoluteSD.Control()\n\tif err != nil {\n\t\tpanic(\"absoluteSD: \" + err.Error())\n\t}\n\tif absControl&SE_SELF_RELATIVE != 0 {\n\t\tpanic(\"absoluteSD not in absolute format\")\n\t}\n\tif absoluteSD.dacl != dacl {\n\t\tpanic(\"dacl pointer mismatch\")\n\t}\n\tif absoluteSD.sacl != sacl {\n\t\tpanic(\"sacl pointer mismatch\")\n\t}\n\tif absoluteSD.owner != owner {\n\t\tpanic(\"owner pointer mismatch\")\n\t}\n\tif absoluteSD.group != group {\n\t\tpanic(\"group pointer mismatch\")\n\t}\n\tabsoluteSD.dacl = dacl\n\tabsoluteSD.sacl = sacl\n\tabsoluteSD.owner = owner\n\tabsoluteSD.group = group\n\n\treturn\n}\n\n// ToSelfRelative converts an absolute security descriptor into a self-relative one.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) ToSelfRelative() (selfRelativeSD *SECURITY_DESCRIPTOR, err error) {\n\tcontrol, _, err := absoluteSD.Control()\n\tif err != nil {\n\t\treturn\n\t}\n\tif control&SE_SELF_RELATIVE != 0 {\n\t\terr = ERROR_INVALID_PARAMETER\n\t\treturn\n\t}\n\tvar selfRelativeSDSize uint32\n\terr = makeSelfRelativeSD(absoluteSD, nil, &selfRelativeSDSize)\n\tswitch err {\n\tcase ERROR_INSUFFICIENT_BUFFER:\n\tcase nil:\n\t\t// makeSelfRelativeSD is expected to fail, but it succeeds.\n\t\treturn nil, ERROR_INTERNAL_ERROR\n\tdefault:\n\t\treturn nil, err\n\t}\n\tif selfRelativeSDSize > 0 {\n\t\tselfRelativeSD = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, selfRelativeSDSize)[0]))\n\t}\n\terr = makeSelfRelativeSD(absoluteSD, selfRelativeSD, &selfRelativeSDSize)\n\treturn\n}\n\nfunc (selfRelativeSD *SECURITY_DESCRIPTOR) copySelfRelativeSecurityDescriptor() *SECURITY_DESCRIPTOR {\n\tsdLen := int(selfRelativeSD.Length())\n\tconst min = int(unsafe.Sizeof(SECURITY_DESCRIPTOR{}))\n\tif sdLen < min {\n\t\tsdLen = min\n\t}\n\n\tsrc := unsafe.Slice((*byte)(unsafe.Pointer(selfRelativeSD)), sdLen)\n\t// SECURITY_DESCRIPTOR has pointers in it, which means checkptr expects for it to\n\t// be aligned properly. When we're copying a Windows-allocated struct to a\n\t// Go-allocated one, make sure that the Go allocation is aligned to the\n\t// pointer size.\n\tconst psize = int(unsafe.Sizeof(uintptr(0)))\n\talloc := make([]uintptr, (sdLen+psize-1)/psize)\n\tdst := unsafe.Slice((*byte)(unsafe.Pointer(&alloc[0])), sdLen)\n\tcopy(dst, src)\n\treturn (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&dst[0]))\n}\n\n// SecurityDescriptorFromString converts an SDDL string describing a security descriptor into a\n// self-relative security descriptor object allocated on the Go heap.\nfunc SecurityDescriptorFromString(sddl string) (sd *SECURITY_DESCRIPTOR, err error) {\n\tvar winHeapSD *SECURITY_DESCRIPTOR\n\terr = convertStringSecurityDescriptorToSecurityDescriptor(sddl, 1, &winHeapSD, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapSD)))\n\treturn winHeapSD.copySelfRelativeSecurityDescriptor(), nil\n}\n\n// GetSecurityInfo queries the security information for a given handle and returns the self-relative security\n// descriptor result on the Go heap.\nfunc GetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) {\n\tvar winHeapSD *SECURITY_DESCRIPTOR\n\terr = getSecurityInfo(handle, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapSD)))\n\treturn winHeapSD.copySelfRelativeSecurityDescriptor(), nil\n}\n\n// GetNamedSecurityInfo queries the security information for a given named object and returns the self-relative security\n// descriptor result on the Go heap. The security descriptor might be nil, even when err is nil, if the object exists\n// but has no security descriptor.\nfunc GetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) {\n\tvar winHeapSD *SECURITY_DESCRIPTOR\n\terr = getNamedSecurityInfo(objectName, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD)\n\tif err != nil {\n\t\treturn\n\t}\n\tif winHeapSD == nil {\n\t\treturn nil, nil\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapSD)))\n\treturn winHeapSD.copySelfRelativeSecurityDescriptor(), nil\n}\n\n// BuildSecurityDescriptor makes a new security descriptor using the input trustees, explicit access lists, and\n// prior security descriptor to be merged, any of which can be nil, returning the self-relative security descriptor\n// result on the Go heap.\nfunc BuildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, accessEntries []EXPLICIT_ACCESS, auditEntries []EXPLICIT_ACCESS, mergedSecurityDescriptor *SECURITY_DESCRIPTOR) (sd *SECURITY_DESCRIPTOR, err error) {\n\tvar winHeapSD *SECURITY_DESCRIPTOR\n\tvar winHeapSDSize uint32\n\tvar firstAccessEntry *EXPLICIT_ACCESS\n\tif len(accessEntries) > 0 {\n\t\tfirstAccessEntry = &accessEntries[0]\n\t}\n\tvar firstAuditEntry *EXPLICIT_ACCESS\n\tif len(auditEntries) > 0 {\n\t\tfirstAuditEntry = &auditEntries[0]\n\t}\n\terr = buildSecurityDescriptor(owner, group, uint32(len(accessEntries)), firstAccessEntry, uint32(len(auditEntries)), firstAuditEntry, mergedSecurityDescriptor, &winHeapSDSize, &winHeapSD)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapSD)))\n\treturn winHeapSD.copySelfRelativeSecurityDescriptor(), nil\n}\n\n// NewSecurityDescriptor creates and initializes a new absolute security descriptor.\nfunc NewSecurityDescriptor() (absoluteSD *SECURITY_DESCRIPTOR, err error) {\n\tabsoluteSD = &SECURITY_DESCRIPTOR{}\n\terr = initializeSecurityDescriptor(absoluteSD, 1)\n\treturn\n}\n\n// ACLFromEntries returns a new ACL on the Go heap containing a list of explicit entries as well as those of another ACL.\n// Both explicitEntries and mergedACL are optional and can be nil.\nfunc ACLFromEntries(explicitEntries []EXPLICIT_ACCESS, mergedACL *ACL) (acl *ACL, err error) {\n\tvar firstExplicitEntry *EXPLICIT_ACCESS\n\tif len(explicitEntries) > 0 {\n\t\tfirstExplicitEntry = &explicitEntries[0]\n\t}\n\tvar winHeapACL *ACL\n\terr = setEntriesInAcl(uint32(len(explicitEntries)), firstExplicitEntry, mergedACL, &winHeapACL)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapACL)))\n\taclBytes := make([]byte, winHeapACL.aclSize)\n\tcopy(aclBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(winHeapACL))[:len(aclBytes):len(aclBytes)])\n\treturn (*ACL)(unsafe.Pointer(&aclBytes[0])), nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/service.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nconst (\n\tSC_MANAGER_CONNECT            = 1\n\tSC_MANAGER_CREATE_SERVICE     = 2\n\tSC_MANAGER_ENUMERATE_SERVICE  = 4\n\tSC_MANAGER_LOCK               = 8\n\tSC_MANAGER_QUERY_LOCK_STATUS  = 16\n\tSC_MANAGER_MODIFY_BOOT_CONFIG = 32\n\tSC_MANAGER_ALL_ACCESS         = 0xf003f\n)\n\nconst (\n\tSERVICE_KERNEL_DRIVER       = 1\n\tSERVICE_FILE_SYSTEM_DRIVER  = 2\n\tSERVICE_ADAPTER             = 4\n\tSERVICE_RECOGNIZER_DRIVER   = 8\n\tSERVICE_WIN32_OWN_PROCESS   = 16\n\tSERVICE_WIN32_SHARE_PROCESS = 32\n\tSERVICE_WIN32               = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS\n\tSERVICE_INTERACTIVE_PROCESS = 256\n\tSERVICE_DRIVER              = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER\n\tSERVICE_TYPE_ALL            = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS\n\n\tSERVICE_BOOT_START   = 0\n\tSERVICE_SYSTEM_START = 1\n\tSERVICE_AUTO_START   = 2\n\tSERVICE_DEMAND_START = 3\n\tSERVICE_DISABLED     = 4\n\n\tSERVICE_ERROR_IGNORE   = 0\n\tSERVICE_ERROR_NORMAL   = 1\n\tSERVICE_ERROR_SEVERE   = 2\n\tSERVICE_ERROR_CRITICAL = 3\n\n\tSC_STATUS_PROCESS_INFO = 0\n\n\tSC_ACTION_NONE        = 0\n\tSC_ACTION_RESTART     = 1\n\tSC_ACTION_REBOOT      = 2\n\tSC_ACTION_RUN_COMMAND = 3\n\n\tSERVICE_STOPPED          = 1\n\tSERVICE_START_PENDING    = 2\n\tSERVICE_STOP_PENDING     = 3\n\tSERVICE_RUNNING          = 4\n\tSERVICE_CONTINUE_PENDING = 5\n\tSERVICE_PAUSE_PENDING    = 6\n\tSERVICE_PAUSED           = 7\n\tSERVICE_NO_CHANGE        = 0xffffffff\n\n\tSERVICE_ACCEPT_STOP                  = 1\n\tSERVICE_ACCEPT_PAUSE_CONTINUE        = 2\n\tSERVICE_ACCEPT_SHUTDOWN              = 4\n\tSERVICE_ACCEPT_PARAMCHANGE           = 8\n\tSERVICE_ACCEPT_NETBINDCHANGE         = 16\n\tSERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32\n\tSERVICE_ACCEPT_POWEREVENT            = 64\n\tSERVICE_ACCEPT_SESSIONCHANGE         = 128\n\tSERVICE_ACCEPT_PRESHUTDOWN           = 256\n\n\tSERVICE_CONTROL_STOP                  = 1\n\tSERVICE_CONTROL_PAUSE                 = 2\n\tSERVICE_CONTROL_CONTINUE              = 3\n\tSERVICE_CONTROL_INTERROGATE           = 4\n\tSERVICE_CONTROL_SHUTDOWN              = 5\n\tSERVICE_CONTROL_PARAMCHANGE           = 6\n\tSERVICE_CONTROL_NETBINDADD            = 7\n\tSERVICE_CONTROL_NETBINDREMOVE         = 8\n\tSERVICE_CONTROL_NETBINDENABLE         = 9\n\tSERVICE_CONTROL_NETBINDDISABLE        = 10\n\tSERVICE_CONTROL_DEVICEEVENT           = 11\n\tSERVICE_CONTROL_HARDWAREPROFILECHANGE = 12\n\tSERVICE_CONTROL_POWEREVENT            = 13\n\tSERVICE_CONTROL_SESSIONCHANGE         = 14\n\tSERVICE_CONTROL_PRESHUTDOWN           = 15\n\n\tSERVICE_ACTIVE    = 1\n\tSERVICE_INACTIVE  = 2\n\tSERVICE_STATE_ALL = 3\n\n\tSERVICE_QUERY_CONFIG         = 1\n\tSERVICE_CHANGE_CONFIG        = 2\n\tSERVICE_QUERY_STATUS         = 4\n\tSERVICE_ENUMERATE_DEPENDENTS = 8\n\tSERVICE_START                = 16\n\tSERVICE_STOP                 = 32\n\tSERVICE_PAUSE_CONTINUE       = 64\n\tSERVICE_INTERROGATE          = 128\n\tSERVICE_USER_DEFINED_CONTROL = 256\n\tSERVICE_ALL_ACCESS           = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL\n\n\tSERVICE_RUNS_IN_SYSTEM_PROCESS = 1\n\n\tSERVICE_CONFIG_DESCRIPTION              = 1\n\tSERVICE_CONFIG_FAILURE_ACTIONS          = 2\n\tSERVICE_CONFIG_DELAYED_AUTO_START_INFO  = 3\n\tSERVICE_CONFIG_FAILURE_ACTIONS_FLAG     = 4\n\tSERVICE_CONFIG_SERVICE_SID_INFO         = 5\n\tSERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 6\n\tSERVICE_CONFIG_PRESHUTDOWN_INFO         = 7\n\tSERVICE_CONFIG_TRIGGER_INFO             = 8\n\tSERVICE_CONFIG_PREFERRED_NODE           = 9\n\tSERVICE_CONFIG_LAUNCH_PROTECTED         = 12\n\n\tSERVICE_SID_TYPE_NONE         = 0\n\tSERVICE_SID_TYPE_UNRESTRICTED = 1\n\tSERVICE_SID_TYPE_RESTRICTED   = 2 | SERVICE_SID_TYPE_UNRESTRICTED\n\n\tSC_ENUM_PROCESS_INFO = 0\n\n\tSERVICE_NOTIFY_STATUS_CHANGE    = 2\n\tSERVICE_NOTIFY_STOPPED          = 0x00000001\n\tSERVICE_NOTIFY_START_PENDING    = 0x00000002\n\tSERVICE_NOTIFY_STOP_PENDING     = 0x00000004\n\tSERVICE_NOTIFY_RUNNING          = 0x00000008\n\tSERVICE_NOTIFY_CONTINUE_PENDING = 0x00000010\n\tSERVICE_NOTIFY_PAUSE_PENDING    = 0x00000020\n\tSERVICE_NOTIFY_PAUSED           = 0x00000040\n\tSERVICE_NOTIFY_CREATED          = 0x00000080\n\tSERVICE_NOTIFY_DELETED          = 0x00000100\n\tSERVICE_NOTIFY_DELETE_PENDING   = 0x00000200\n\n\tSC_EVENT_DATABASE_CHANGE = 0\n\tSC_EVENT_PROPERTY_CHANGE = 1\n\tSC_EVENT_STATUS_CHANGE   = 2\n\n\tSERVICE_START_REASON_DEMAND             = 0x00000001\n\tSERVICE_START_REASON_AUTO               = 0x00000002\n\tSERVICE_START_REASON_TRIGGER            = 0x00000004\n\tSERVICE_START_REASON_RESTART_ON_FAILURE = 0x00000008\n\tSERVICE_START_REASON_DELAYEDAUTO        = 0x00000010\n\n\tSERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON = 1\n)\n\ntype ENUM_SERVICE_STATUS struct {\n\tServiceName   *uint16\n\tDisplayName   *uint16\n\tServiceStatus SERVICE_STATUS\n}\n\ntype SERVICE_STATUS struct {\n\tServiceType             uint32\n\tCurrentState            uint32\n\tControlsAccepted        uint32\n\tWin32ExitCode           uint32\n\tServiceSpecificExitCode uint32\n\tCheckPoint              uint32\n\tWaitHint                uint32\n}\n\ntype SERVICE_TABLE_ENTRY struct {\n\tServiceName *uint16\n\tServiceProc uintptr\n}\n\ntype QUERY_SERVICE_CONFIG struct {\n\tServiceType      uint32\n\tStartType        uint32\n\tErrorControl     uint32\n\tBinaryPathName   *uint16\n\tLoadOrderGroup   *uint16\n\tTagId            uint32\n\tDependencies     *uint16\n\tServiceStartName *uint16\n\tDisplayName      *uint16\n}\n\ntype SERVICE_DESCRIPTION struct {\n\tDescription *uint16\n}\n\ntype SERVICE_DELAYED_AUTO_START_INFO struct {\n\tIsDelayedAutoStartUp uint32\n}\n\ntype SERVICE_STATUS_PROCESS struct {\n\tServiceType             uint32\n\tCurrentState            uint32\n\tControlsAccepted        uint32\n\tWin32ExitCode           uint32\n\tServiceSpecificExitCode uint32\n\tCheckPoint              uint32\n\tWaitHint                uint32\n\tProcessId               uint32\n\tServiceFlags            uint32\n}\n\ntype ENUM_SERVICE_STATUS_PROCESS struct {\n\tServiceName          *uint16\n\tDisplayName          *uint16\n\tServiceStatusProcess SERVICE_STATUS_PROCESS\n}\n\ntype SERVICE_NOTIFY struct {\n\tVersion               uint32\n\tNotifyCallback        uintptr\n\tContext               uintptr\n\tNotificationStatus    uint32\n\tServiceStatus         SERVICE_STATUS_PROCESS\n\tNotificationTriggered uint32\n\tServiceNames          *uint16\n}\n\ntype SERVICE_FAILURE_ACTIONS struct {\n\tResetPeriod  uint32\n\tRebootMsg    *uint16\n\tCommand      *uint16\n\tActionsCount uint32\n\tActions      *SC_ACTION\n}\n\ntype SERVICE_FAILURE_ACTIONS_FLAG struct {\n\tFailureActionsOnNonCrashFailures int32\n}\n\ntype SC_ACTION struct {\n\tType  uint32\n\tDelay uint32\n}\n\ntype QUERY_SERVICE_LOCK_STATUS struct {\n\tIsLocked     uint32\n\tLockOwner    *uint16\n\tLockDuration uint32\n}\n\n//sys\tOpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW\n//sys\tCloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle\n//sys\tCreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW\n//sys\tOpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW\n//sys\tDeleteService(service Handle) (err error) = advapi32.DeleteService\n//sys\tStartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW\n//sys\tQueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus\n//sys\tQueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceLockStatusW\n//sys\tControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService\n//sys\tStartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW\n//sys\tSetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus\n//sys\tChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW\n//sys\tQueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW\n//sys\tChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W\n//sys\tQueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W\n//sys\tEnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW\n//sys\tQueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx\n//sys\tNotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW\n//sys\tSubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) = sechost.SubscribeServiceChangeNotifications?\n//sys\tUnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications?\n//sys\tRegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) = advapi32.RegisterServiceCtrlHandlerExW\n//sys\tQueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) = advapi32.QueryServiceDynamicInformation?\n//sys\tEnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) = advapi32.EnumDependentServicesW\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/setupapi_windows.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// This file contains functions that wrap SetupAPI.dll and CfgMgr32.dll,\n// core system functions for managing hardware devices, drivers, and the PnP tree.\n// Information about these APIs can be found at:\n//     https://docs.microsoft.com/en-us/windows-hardware/drivers/install/setupapi\n//     https://docs.microsoft.com/en-us/windows/win32/devinst/cfgmgr32-\n\nconst (\n\tERROR_EXPECTED_SECTION_NAME                  Errno = 0x20000000 | 0xC0000000 | 0\n\tERROR_BAD_SECTION_NAME_LINE                  Errno = 0x20000000 | 0xC0000000 | 1\n\tERROR_SECTION_NAME_TOO_LONG                  Errno = 0x20000000 | 0xC0000000 | 2\n\tERROR_GENERAL_SYNTAX                         Errno = 0x20000000 | 0xC0000000 | 3\n\tERROR_WRONG_INF_STYLE                        Errno = 0x20000000 | 0xC0000000 | 0x100\n\tERROR_SECTION_NOT_FOUND                      Errno = 0x20000000 | 0xC0000000 | 0x101\n\tERROR_LINE_NOT_FOUND                         Errno = 0x20000000 | 0xC0000000 | 0x102\n\tERROR_NO_BACKUP                              Errno = 0x20000000 | 0xC0000000 | 0x103\n\tERROR_NO_ASSOCIATED_CLASS                    Errno = 0x20000000 | 0xC0000000 | 0x200\n\tERROR_CLASS_MISMATCH                         Errno = 0x20000000 | 0xC0000000 | 0x201\n\tERROR_DUPLICATE_FOUND                        Errno = 0x20000000 | 0xC0000000 | 0x202\n\tERROR_NO_DRIVER_SELECTED                     Errno = 0x20000000 | 0xC0000000 | 0x203\n\tERROR_KEY_DOES_NOT_EXIST                     Errno = 0x20000000 | 0xC0000000 | 0x204\n\tERROR_INVALID_DEVINST_NAME                   Errno = 0x20000000 | 0xC0000000 | 0x205\n\tERROR_INVALID_CLASS                          Errno = 0x20000000 | 0xC0000000 | 0x206\n\tERROR_DEVINST_ALREADY_EXISTS                 Errno = 0x20000000 | 0xC0000000 | 0x207\n\tERROR_DEVINFO_NOT_REGISTERED                 Errno = 0x20000000 | 0xC0000000 | 0x208\n\tERROR_INVALID_REG_PROPERTY                   Errno = 0x20000000 | 0xC0000000 | 0x209\n\tERROR_NO_INF                                 Errno = 0x20000000 | 0xC0000000 | 0x20A\n\tERROR_NO_SUCH_DEVINST                        Errno = 0x20000000 | 0xC0000000 | 0x20B\n\tERROR_CANT_LOAD_CLASS_ICON                   Errno = 0x20000000 | 0xC0000000 | 0x20C\n\tERROR_INVALID_CLASS_INSTALLER                Errno = 0x20000000 | 0xC0000000 | 0x20D\n\tERROR_DI_DO_DEFAULT                          Errno = 0x20000000 | 0xC0000000 | 0x20E\n\tERROR_DI_NOFILECOPY                          Errno = 0x20000000 | 0xC0000000 | 0x20F\n\tERROR_INVALID_HWPROFILE                      Errno = 0x20000000 | 0xC0000000 | 0x210\n\tERROR_NO_DEVICE_SELECTED                     Errno = 0x20000000 | 0xC0000000 | 0x211\n\tERROR_DEVINFO_LIST_LOCKED                    Errno = 0x20000000 | 0xC0000000 | 0x212\n\tERROR_DEVINFO_DATA_LOCKED                    Errno = 0x20000000 | 0xC0000000 | 0x213\n\tERROR_DI_BAD_PATH                            Errno = 0x20000000 | 0xC0000000 | 0x214\n\tERROR_NO_CLASSINSTALL_PARAMS                 Errno = 0x20000000 | 0xC0000000 | 0x215\n\tERROR_FILEQUEUE_LOCKED                       Errno = 0x20000000 | 0xC0000000 | 0x216\n\tERROR_BAD_SERVICE_INSTALLSECT                Errno = 0x20000000 | 0xC0000000 | 0x217\n\tERROR_NO_CLASS_DRIVER_LIST                   Errno = 0x20000000 | 0xC0000000 | 0x218\n\tERROR_NO_ASSOCIATED_SERVICE                  Errno = 0x20000000 | 0xC0000000 | 0x219\n\tERROR_NO_DEFAULT_DEVICE_INTERFACE            Errno = 0x20000000 | 0xC0000000 | 0x21A\n\tERROR_DEVICE_INTERFACE_ACTIVE                Errno = 0x20000000 | 0xC0000000 | 0x21B\n\tERROR_DEVICE_INTERFACE_REMOVED               Errno = 0x20000000 | 0xC0000000 | 0x21C\n\tERROR_BAD_INTERFACE_INSTALLSECT              Errno = 0x20000000 | 0xC0000000 | 0x21D\n\tERROR_NO_SUCH_INTERFACE_CLASS                Errno = 0x20000000 | 0xC0000000 | 0x21E\n\tERROR_INVALID_REFERENCE_STRING               Errno = 0x20000000 | 0xC0000000 | 0x21F\n\tERROR_INVALID_MACHINENAME                    Errno = 0x20000000 | 0xC0000000 | 0x220\n\tERROR_REMOTE_COMM_FAILURE                    Errno = 0x20000000 | 0xC0000000 | 0x221\n\tERROR_MACHINE_UNAVAILABLE                    Errno = 0x20000000 | 0xC0000000 | 0x222\n\tERROR_NO_CONFIGMGR_SERVICES                  Errno = 0x20000000 | 0xC0000000 | 0x223\n\tERROR_INVALID_PROPPAGE_PROVIDER              Errno = 0x20000000 | 0xC0000000 | 0x224\n\tERROR_NO_SUCH_DEVICE_INTERFACE               Errno = 0x20000000 | 0xC0000000 | 0x225\n\tERROR_DI_POSTPROCESSING_REQUIRED             Errno = 0x20000000 | 0xC0000000 | 0x226\n\tERROR_INVALID_COINSTALLER                    Errno = 0x20000000 | 0xC0000000 | 0x227\n\tERROR_NO_COMPAT_DRIVERS                      Errno = 0x20000000 | 0xC0000000 | 0x228\n\tERROR_NO_DEVICE_ICON                         Errno = 0x20000000 | 0xC0000000 | 0x229\n\tERROR_INVALID_INF_LOGCONFIG                  Errno = 0x20000000 | 0xC0000000 | 0x22A\n\tERROR_DI_DONT_INSTALL                        Errno = 0x20000000 | 0xC0000000 | 0x22B\n\tERROR_INVALID_FILTER_DRIVER                  Errno = 0x20000000 | 0xC0000000 | 0x22C\n\tERROR_NON_WINDOWS_NT_DRIVER                  Errno = 0x20000000 | 0xC0000000 | 0x22D\n\tERROR_NON_WINDOWS_DRIVER                     Errno = 0x20000000 | 0xC0000000 | 0x22E\n\tERROR_NO_CATALOG_FOR_OEM_INF                 Errno = 0x20000000 | 0xC0000000 | 0x22F\n\tERROR_DEVINSTALL_QUEUE_NONNATIVE             Errno = 0x20000000 | 0xC0000000 | 0x230\n\tERROR_NOT_DISABLEABLE                        Errno = 0x20000000 | 0xC0000000 | 0x231\n\tERROR_CANT_REMOVE_DEVINST                    Errno = 0x20000000 | 0xC0000000 | 0x232\n\tERROR_INVALID_TARGET                         Errno = 0x20000000 | 0xC0000000 | 0x233\n\tERROR_DRIVER_NONNATIVE                       Errno = 0x20000000 | 0xC0000000 | 0x234\n\tERROR_IN_WOW64                               Errno = 0x20000000 | 0xC0000000 | 0x235\n\tERROR_SET_SYSTEM_RESTORE_POINT               Errno = 0x20000000 | 0xC0000000 | 0x236\n\tERROR_SCE_DISABLED                           Errno = 0x20000000 | 0xC0000000 | 0x238\n\tERROR_UNKNOWN_EXCEPTION                      Errno = 0x20000000 | 0xC0000000 | 0x239\n\tERROR_PNP_REGISTRY_ERROR                     Errno = 0x20000000 | 0xC0000000 | 0x23A\n\tERROR_REMOTE_REQUEST_UNSUPPORTED             Errno = 0x20000000 | 0xC0000000 | 0x23B\n\tERROR_NOT_AN_INSTALLED_OEM_INF               Errno = 0x20000000 | 0xC0000000 | 0x23C\n\tERROR_INF_IN_USE_BY_DEVICES                  Errno = 0x20000000 | 0xC0000000 | 0x23D\n\tERROR_DI_FUNCTION_OBSOLETE                   Errno = 0x20000000 | 0xC0000000 | 0x23E\n\tERROR_NO_AUTHENTICODE_CATALOG                Errno = 0x20000000 | 0xC0000000 | 0x23F\n\tERROR_AUTHENTICODE_DISALLOWED                Errno = 0x20000000 | 0xC0000000 | 0x240\n\tERROR_AUTHENTICODE_TRUSTED_PUBLISHER         Errno = 0x20000000 | 0xC0000000 | 0x241\n\tERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED     Errno = 0x20000000 | 0xC0000000 | 0x242\n\tERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED     Errno = 0x20000000 | 0xC0000000 | 0x243\n\tERROR_SIGNATURE_OSATTRIBUTE_MISMATCH         Errno = 0x20000000 | 0xC0000000 | 0x244\n\tERROR_ONLY_VALIDATE_VIA_AUTHENTICODE         Errno = 0x20000000 | 0xC0000000 | 0x245\n\tERROR_DEVICE_INSTALLER_NOT_READY             Errno = 0x20000000 | 0xC0000000 | 0x246\n\tERROR_DRIVER_STORE_ADD_FAILED                Errno = 0x20000000 | 0xC0000000 | 0x247\n\tERROR_DEVICE_INSTALL_BLOCKED                 Errno = 0x20000000 | 0xC0000000 | 0x248\n\tERROR_DRIVER_INSTALL_BLOCKED                 Errno = 0x20000000 | 0xC0000000 | 0x249\n\tERROR_WRONG_INF_TYPE                         Errno = 0x20000000 | 0xC0000000 | 0x24A\n\tERROR_FILE_HASH_NOT_IN_CATALOG               Errno = 0x20000000 | 0xC0000000 | 0x24B\n\tERROR_DRIVER_STORE_DELETE_FAILED             Errno = 0x20000000 | 0xC0000000 | 0x24C\n\tERROR_UNRECOVERABLE_STACK_OVERFLOW           Errno = 0x20000000 | 0xC0000000 | 0x300\n\tEXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW Errno = ERROR_UNRECOVERABLE_STACK_OVERFLOW\n\tERROR_NO_DEFAULT_INTERFACE_DEVICE            Errno = ERROR_NO_DEFAULT_DEVICE_INTERFACE\n\tERROR_INTERFACE_DEVICE_ACTIVE                Errno = ERROR_DEVICE_INTERFACE_ACTIVE\n\tERROR_INTERFACE_DEVICE_REMOVED               Errno = ERROR_DEVICE_INTERFACE_REMOVED\n\tERROR_NO_SUCH_INTERFACE_DEVICE               Errno = ERROR_NO_SUCH_DEVICE_INTERFACE\n)\n\nconst (\n\tMAX_DEVICE_ID_LEN   = 200\n\tMAX_DEVNODE_ID_LEN  = MAX_DEVICE_ID_LEN\n\tMAX_GUID_STRING_LEN = 39 // 38 chars + terminator null\n\tMAX_CLASS_NAME_LEN  = 32\n\tMAX_PROFILE_LEN     = 80\n\tMAX_CONFIG_VALUE    = 9999\n\tMAX_INSTANCE_VALUE  = 9999\n\tCONFIGMG_VERSION    = 0x0400\n)\n\n// Maximum string length constants\nconst (\n\tLINE_LEN                    = 256  // Windows 9x-compatible maximum for displayable strings coming from a device INF.\n\tMAX_INF_STRING_LENGTH       = 4096 // Actual maximum size of an INF string (including string substitutions).\n\tMAX_INF_SECTION_NAME_LENGTH = 255  // For Windows 9x compatibility, INF section names should be constrained to 32 characters.\n\tMAX_TITLE_LEN               = 60\n\tMAX_INSTRUCTION_LEN         = 256\n\tMAX_LABEL_LEN               = 30\n\tMAX_SERVICE_NAME_LEN        = 256\n\tMAX_SUBTITLE_LEN            = 256\n)\n\nconst (\n\t// SP_MAX_MACHINENAME_LENGTH defines maximum length of a machine name in the format expected by ConfigMgr32 CM_Connect_Machine (i.e., \"\\\\\\\\MachineName\\0\").\n\tSP_MAX_MACHINENAME_LENGTH = MAX_PATH + 3\n)\n\n// HSPFILEQ is type for setup file queue\ntype HSPFILEQ uintptr\n\n// DevInfo holds reference to device information set\ntype DevInfo Handle\n\n// DEVINST is a handle usually recognized by cfgmgr32 APIs\ntype DEVINST uint32\n\n// DevInfoData is a device information structure (references a device instance that is a member of a device information set)\ntype DevInfoData struct {\n\tsize      uint32\n\tClassGUID GUID\n\tDevInst   DEVINST\n\t_         uintptr\n}\n\n// DevInfoListDetailData is a structure for detailed information on a device information set (used for SetupDiGetDeviceInfoListDetail which supersedes the functionality of SetupDiGetDeviceInfoListClass).\ntype DevInfoListDetailData struct {\n\tsize                uint32 // Use unsafeSizeOf method\n\tClassGUID           GUID\n\tRemoteMachineHandle Handle\n\tremoteMachineName   [SP_MAX_MACHINENAME_LENGTH]uint16\n}\n\nfunc (*DevInfoListDetailData) unsafeSizeOf() uint32 {\n\tif unsafe.Sizeof(uintptr(0)) == 4 {\n\t\t// Windows declares this with pshpack1.h\n\t\treturn uint32(unsafe.Offsetof(DevInfoListDetailData{}.remoteMachineName) + unsafe.Sizeof(DevInfoListDetailData{}.remoteMachineName))\n\t}\n\treturn uint32(unsafe.Sizeof(DevInfoListDetailData{}))\n}\n\nfunc (data *DevInfoListDetailData) RemoteMachineName() string {\n\treturn UTF16ToString(data.remoteMachineName[:])\n}\n\nfunc (data *DevInfoListDetailData) SetRemoteMachineName(remoteMachineName string) error {\n\tstr, err := UTF16FromString(remoteMachineName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.remoteMachineName[:], str)\n\treturn nil\n}\n\n// DI_FUNCTION is function type for device installer\ntype DI_FUNCTION uint32\n\nconst (\n\tDIF_SELECTDEVICE                   DI_FUNCTION = 0x00000001\n\tDIF_INSTALLDEVICE                  DI_FUNCTION = 0x00000002\n\tDIF_ASSIGNRESOURCES                DI_FUNCTION = 0x00000003\n\tDIF_PROPERTIES                     DI_FUNCTION = 0x00000004\n\tDIF_REMOVE                         DI_FUNCTION = 0x00000005\n\tDIF_FIRSTTIMESETUP                 DI_FUNCTION = 0x00000006\n\tDIF_FOUNDDEVICE                    DI_FUNCTION = 0x00000007\n\tDIF_SELECTCLASSDRIVERS             DI_FUNCTION = 0x00000008\n\tDIF_VALIDATECLASSDRIVERS           DI_FUNCTION = 0x00000009\n\tDIF_INSTALLCLASSDRIVERS            DI_FUNCTION = 0x0000000A\n\tDIF_CALCDISKSPACE                  DI_FUNCTION = 0x0000000B\n\tDIF_DESTROYPRIVATEDATA             DI_FUNCTION = 0x0000000C\n\tDIF_VALIDATEDRIVER                 DI_FUNCTION = 0x0000000D\n\tDIF_DETECT                         DI_FUNCTION = 0x0000000F\n\tDIF_INSTALLWIZARD                  DI_FUNCTION = 0x00000010\n\tDIF_DESTROYWIZARDDATA              DI_FUNCTION = 0x00000011\n\tDIF_PROPERTYCHANGE                 DI_FUNCTION = 0x00000012\n\tDIF_ENABLECLASS                    DI_FUNCTION = 0x00000013\n\tDIF_DETECTVERIFY                   DI_FUNCTION = 0x00000014\n\tDIF_INSTALLDEVICEFILES             DI_FUNCTION = 0x00000015\n\tDIF_UNREMOVE                       DI_FUNCTION = 0x00000016\n\tDIF_SELECTBESTCOMPATDRV            DI_FUNCTION = 0x00000017\n\tDIF_ALLOW_INSTALL                  DI_FUNCTION = 0x00000018\n\tDIF_REGISTERDEVICE                 DI_FUNCTION = 0x00000019\n\tDIF_NEWDEVICEWIZARD_PRESELECT      DI_FUNCTION = 0x0000001A\n\tDIF_NEWDEVICEWIZARD_SELECT         DI_FUNCTION = 0x0000001B\n\tDIF_NEWDEVICEWIZARD_PREANALYZE     DI_FUNCTION = 0x0000001C\n\tDIF_NEWDEVICEWIZARD_POSTANALYZE    DI_FUNCTION = 0x0000001D\n\tDIF_NEWDEVICEWIZARD_FINISHINSTALL  DI_FUNCTION = 0x0000001E\n\tDIF_INSTALLINTERFACES              DI_FUNCTION = 0x00000020\n\tDIF_DETECTCANCEL                   DI_FUNCTION = 0x00000021\n\tDIF_REGISTER_COINSTALLERS          DI_FUNCTION = 0x00000022\n\tDIF_ADDPROPERTYPAGE_ADVANCED       DI_FUNCTION = 0x00000023\n\tDIF_ADDPROPERTYPAGE_BASIC          DI_FUNCTION = 0x00000024\n\tDIF_TROUBLESHOOTER                 DI_FUNCTION = 0x00000026\n\tDIF_POWERMESSAGEWAKE               DI_FUNCTION = 0x00000027\n\tDIF_ADDREMOTEPROPERTYPAGE_ADVANCED DI_FUNCTION = 0x00000028\n\tDIF_UPDATEDRIVER_UI                DI_FUNCTION = 0x00000029\n\tDIF_FINISHINSTALL_ACTION           DI_FUNCTION = 0x0000002A\n)\n\n// DevInstallParams is device installation parameters structure (associated with a particular device information element, or globally with a device information set)\ntype DevInstallParams struct {\n\tsize                     uint32\n\tFlags                    DI_FLAGS\n\tFlagsEx                  DI_FLAGSEX\n\thwndParent               uintptr\n\tInstallMsgHandler        uintptr\n\tInstallMsgHandlerContext uintptr\n\tFileQueue                HSPFILEQ\n\t_                        uintptr\n\t_                        uint32\n\tdriverPath               [MAX_PATH]uint16\n}\n\nfunc (params *DevInstallParams) DriverPath() string {\n\treturn UTF16ToString(params.driverPath[:])\n}\n\nfunc (params *DevInstallParams) SetDriverPath(driverPath string) error {\n\tstr, err := UTF16FromString(driverPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(params.driverPath[:], str)\n\treturn nil\n}\n\n// DI_FLAGS is SP_DEVINSTALL_PARAMS.Flags values\ntype DI_FLAGS uint32\n\nconst (\n\t// Flags for choosing a device\n\tDI_SHOWOEM       DI_FLAGS = 0x00000001 // support Other... button\n\tDI_SHOWCOMPAT    DI_FLAGS = 0x00000002 // show compatibility list\n\tDI_SHOWCLASS     DI_FLAGS = 0x00000004 // show class list\n\tDI_SHOWALL       DI_FLAGS = 0x00000007 // both class & compat list shown\n\tDI_NOVCP         DI_FLAGS = 0x00000008 // don't create a new copy queue--use caller-supplied FileQueue\n\tDI_DIDCOMPAT     DI_FLAGS = 0x00000010 // Searched for compatible devices\n\tDI_DIDCLASS      DI_FLAGS = 0x00000020 // Searched for class devices\n\tDI_AUTOASSIGNRES DI_FLAGS = 0x00000040 // No UI for resources if possible\n\n\t// Flags returned by DiInstallDevice to indicate need to reboot/restart\n\tDI_NEEDRESTART DI_FLAGS = 0x00000080 // Reboot required to take effect\n\tDI_NEEDREBOOT  DI_FLAGS = 0x00000100 // \"\"\n\n\t// Flags for device installation\n\tDI_NOBROWSE DI_FLAGS = 0x00000200 // no Browse... in InsertDisk\n\n\t// Flags set by DiBuildDriverInfoList\n\tDI_MULTMFGS DI_FLAGS = 0x00000400 // Set if multiple manufacturers in class driver list\n\n\t// Flag indicates that device is disabled\n\tDI_DISABLED DI_FLAGS = 0x00000800 // Set if device disabled\n\n\t// Flags for Device/Class Properties\n\tDI_GENERALPAGE_ADDED  DI_FLAGS = 0x00001000\n\tDI_RESOURCEPAGE_ADDED DI_FLAGS = 0x00002000\n\n\t// Flag to indicate the setting properties for this Device (or class) caused a change so the Dev Mgr UI probably needs to be updated.\n\tDI_PROPERTIES_CHANGE DI_FLAGS = 0x00004000\n\n\t// Flag to indicate that the sorting from the INF file should be used.\n\tDI_INF_IS_SORTED DI_FLAGS = 0x00008000\n\n\t// Flag to indicate that only the INF specified by SP_DEVINSTALL_PARAMS.DriverPath should be searched.\n\tDI_ENUMSINGLEINF DI_FLAGS = 0x00010000\n\n\t// Flag that prevents ConfigMgr from removing/re-enumerating devices during device\n\t// registration, installation, and deletion.\n\tDI_DONOTCALLCONFIGMG DI_FLAGS = 0x00020000\n\n\t// The following flag can be used to install a device disabled\n\tDI_INSTALLDISABLED DI_FLAGS = 0x00040000\n\n\t// Flag that causes SetupDiBuildDriverInfoList to build a device's compatible driver\n\t// list from its existing class driver list, instead of the normal INF search.\n\tDI_COMPAT_FROM_CLASS DI_FLAGS = 0x00080000\n\n\t// This flag is set if the Class Install params should be used.\n\tDI_CLASSINSTALLPARAMS DI_FLAGS = 0x00100000\n\n\t// This flag is set if the caller of DiCallClassInstaller does NOT want the internal default action performed if the Class installer returns ERROR_DI_DO_DEFAULT.\n\tDI_NODI_DEFAULTACTION DI_FLAGS = 0x00200000\n\n\t// Flags for device installation\n\tDI_QUIETINSTALL        DI_FLAGS = 0x00800000 // don't confuse the user with questions or excess info\n\tDI_NOFILECOPY          DI_FLAGS = 0x01000000 // No file Copy necessary\n\tDI_FORCECOPY           DI_FLAGS = 0x02000000 // Force files to be copied from install path\n\tDI_DRIVERPAGE_ADDED    DI_FLAGS = 0x04000000 // Prop provider added Driver page.\n\tDI_USECI_SELECTSTRINGS DI_FLAGS = 0x08000000 // Use Class Installer Provided strings in the Select Device Dlg\n\tDI_OVERRIDE_INFFLAGS   DI_FLAGS = 0x10000000 // Override INF flags\n\tDI_PROPS_NOCHANGEUSAGE DI_FLAGS = 0x20000000 // No Enable/Disable in General Props\n\n\tDI_NOSELECTICONS DI_FLAGS = 0x40000000 // No small icons in select device dialogs\n\n\tDI_NOWRITE_IDS DI_FLAGS = 0x80000000 // Don't write HW & Compat IDs on install\n)\n\n// DI_FLAGSEX is SP_DEVINSTALL_PARAMS.FlagsEx values\ntype DI_FLAGSEX uint32\n\nconst (\n\tDI_FLAGSEX_CI_FAILED                DI_FLAGSEX = 0x00000004 // Failed to Load/Call class installer\n\tDI_FLAGSEX_FINISHINSTALL_ACTION     DI_FLAGSEX = 0x00000008 // Class/co-installer wants to get a DIF_FINISH_INSTALL action in client context.\n\tDI_FLAGSEX_DIDINFOLIST              DI_FLAGSEX = 0x00000010 // Did the Class Info List\n\tDI_FLAGSEX_DIDCOMPATINFO            DI_FLAGSEX = 0x00000020 // Did the Compat Info List\n\tDI_FLAGSEX_FILTERCLASSES            DI_FLAGSEX = 0x00000040\n\tDI_FLAGSEX_SETFAILEDINSTALL         DI_FLAGSEX = 0x00000080\n\tDI_FLAGSEX_DEVICECHANGE             DI_FLAGSEX = 0x00000100\n\tDI_FLAGSEX_ALWAYSWRITEIDS           DI_FLAGSEX = 0x00000200\n\tDI_FLAGSEX_PROPCHANGE_PENDING       DI_FLAGSEX = 0x00000400 // One or more device property sheets have had changes made to them, and need to have a DIF_PROPERTYCHANGE occur.\n\tDI_FLAGSEX_ALLOWEXCLUDEDDRVS        DI_FLAGSEX = 0x00000800\n\tDI_FLAGSEX_NOUIONQUERYREMOVE        DI_FLAGSEX = 0x00001000\n\tDI_FLAGSEX_USECLASSFORCOMPAT        DI_FLAGSEX = 0x00002000 // Use the device's class when building compat drv list. (Ignored if DI_COMPAT_FROM_CLASS flag is specified.)\n\tDI_FLAGSEX_NO_DRVREG_MODIFY         DI_FLAGSEX = 0x00008000 // Don't run AddReg and DelReg for device's software (driver) key.\n\tDI_FLAGSEX_IN_SYSTEM_SETUP          DI_FLAGSEX = 0x00010000 // Installation is occurring during initial system setup.\n\tDI_FLAGSEX_INET_DRIVER              DI_FLAGSEX = 0x00020000 // Driver came from Windows Update\n\tDI_FLAGSEX_APPENDDRIVERLIST         DI_FLAGSEX = 0x00040000 // Cause SetupDiBuildDriverInfoList to append a new driver list to an existing list.\n\tDI_FLAGSEX_PREINSTALLBACKUP         DI_FLAGSEX = 0x00080000 // not used\n\tDI_FLAGSEX_BACKUPONREPLACE          DI_FLAGSEX = 0x00100000 // not used\n\tDI_FLAGSEX_DRIVERLIST_FROM_URL      DI_FLAGSEX = 0x00200000 // build driver list from INF(s) retrieved from URL specified in SP_DEVINSTALL_PARAMS.DriverPath (empty string means Windows Update website)\n\tDI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS DI_FLAGSEX = 0x00800000 // Don't include old Internet drivers when building a driver list. Ignored on Windows Vista and later.\n\tDI_FLAGSEX_POWERPAGE_ADDED          DI_FLAGSEX = 0x01000000 // class installer added their own power page\n\tDI_FLAGSEX_FILTERSIMILARDRIVERS     DI_FLAGSEX = 0x02000000 // only include similar drivers in class list\n\tDI_FLAGSEX_INSTALLEDDRIVER          DI_FLAGSEX = 0x04000000 // only add the installed driver to the class or compat driver list.  Used in calls to SetupDiBuildDriverInfoList\n\tDI_FLAGSEX_NO_CLASSLIST_NODE_MERGE  DI_FLAGSEX = 0x08000000 // Don't remove identical driver nodes from the class list\n\tDI_FLAGSEX_ALTPLATFORM_DRVSEARCH    DI_FLAGSEX = 0x10000000 // Build driver list based on alternate platform information specified in associated file queue\n\tDI_FLAGSEX_RESTART_DEVICE_ONLY      DI_FLAGSEX = 0x20000000 // only restart the device drivers are being installed on as opposed to restarting all devices using those drivers.\n\tDI_FLAGSEX_RECURSIVESEARCH          DI_FLAGSEX = 0x40000000 // Tell SetupDiBuildDriverInfoList to do a recursive search\n\tDI_FLAGSEX_SEARCH_PUBLISHED_INFS    DI_FLAGSEX = 0x80000000 // Tell SetupDiBuildDriverInfoList to do a \"published INF\" search\n)\n\n// ClassInstallHeader is the first member of any class install parameters structure. It contains the device installation request code that defines the format of the rest of the install parameters structure.\ntype ClassInstallHeader struct {\n\tsize            uint32\n\tInstallFunction DI_FUNCTION\n}\n\nfunc MakeClassInstallHeader(installFunction DI_FUNCTION) *ClassInstallHeader {\n\thdr := &ClassInstallHeader{InstallFunction: installFunction}\n\thdr.size = uint32(unsafe.Sizeof(*hdr))\n\treturn hdr\n}\n\n// DICS_STATE specifies values indicating a change in a device's state\ntype DICS_STATE uint32\n\nconst (\n\tDICS_ENABLE     DICS_STATE = 0x00000001 // The device is being enabled.\n\tDICS_DISABLE    DICS_STATE = 0x00000002 // The device is being disabled.\n\tDICS_PROPCHANGE DICS_STATE = 0x00000003 // The properties of the device have changed.\n\tDICS_START      DICS_STATE = 0x00000004 // The device is being started (if the request is for the currently active hardware profile).\n\tDICS_STOP       DICS_STATE = 0x00000005 // The device is being stopped. The driver stack will be unloaded and the CSCONFIGFLAG_DO_NOT_START flag will be set for the device.\n)\n\n// DICS_FLAG specifies the scope of a device property change\ntype DICS_FLAG uint32\n\nconst (\n\tDICS_FLAG_GLOBAL         DICS_FLAG = 0x00000001 // make change in all hardware profiles\n\tDICS_FLAG_CONFIGSPECIFIC DICS_FLAG = 0x00000002 // make change in specified profile only\n\tDICS_FLAG_CONFIGGENERAL  DICS_FLAG = 0x00000004 // 1 or more hardware profile-specific changes to follow (obsolete)\n)\n\n// PropChangeParams is a structure corresponding to a DIF_PROPERTYCHANGE install function.\ntype PropChangeParams struct {\n\tClassInstallHeader ClassInstallHeader\n\tStateChange        DICS_STATE\n\tScope              DICS_FLAG\n\tHwProfile          uint32\n}\n\n// DI_REMOVEDEVICE specifies the scope of the device removal\ntype DI_REMOVEDEVICE uint32\n\nconst (\n\tDI_REMOVEDEVICE_GLOBAL         DI_REMOVEDEVICE = 0x00000001 // Make this change in all hardware profiles. Remove information about the device from the registry.\n\tDI_REMOVEDEVICE_CONFIGSPECIFIC DI_REMOVEDEVICE = 0x00000002 // Make this change to only the hardware profile specified by HwProfile. this flag only applies to root-enumerated devices. When Windows removes the device from the last hardware profile in which it was configured, Windows performs a global removal.\n)\n\n// RemoveDeviceParams is a structure corresponding to a DIF_REMOVE install function.\ntype RemoveDeviceParams struct {\n\tClassInstallHeader ClassInstallHeader\n\tScope              DI_REMOVEDEVICE\n\tHwProfile          uint32\n}\n\n// DrvInfoData is driver information structure (member of a driver info list that may be associated with a particular device instance, or (globally) with a device information set)\ntype DrvInfoData struct {\n\tsize          uint32\n\tDriverType    uint32\n\t_             uintptr\n\tdescription   [LINE_LEN]uint16\n\tmfgName       [LINE_LEN]uint16\n\tproviderName  [LINE_LEN]uint16\n\tDriverDate    Filetime\n\tDriverVersion uint64\n}\n\nfunc (data *DrvInfoData) Description() string {\n\treturn UTF16ToString(data.description[:])\n}\n\nfunc (data *DrvInfoData) SetDescription(description string) error {\n\tstr, err := UTF16FromString(description)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.description[:], str)\n\treturn nil\n}\n\nfunc (data *DrvInfoData) MfgName() string {\n\treturn UTF16ToString(data.mfgName[:])\n}\n\nfunc (data *DrvInfoData) SetMfgName(mfgName string) error {\n\tstr, err := UTF16FromString(mfgName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.mfgName[:], str)\n\treturn nil\n}\n\nfunc (data *DrvInfoData) ProviderName() string {\n\treturn UTF16ToString(data.providerName[:])\n}\n\nfunc (data *DrvInfoData) SetProviderName(providerName string) error {\n\tstr, err := UTF16FromString(providerName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.providerName[:], str)\n\treturn nil\n}\n\n// IsNewer method returns true if DrvInfoData date and version is newer than supplied parameters.\nfunc (data *DrvInfoData) IsNewer(driverDate Filetime, driverVersion uint64) bool {\n\tif data.DriverDate.HighDateTime > driverDate.HighDateTime {\n\t\treturn true\n\t}\n\tif data.DriverDate.HighDateTime < driverDate.HighDateTime {\n\t\treturn false\n\t}\n\n\tif data.DriverDate.LowDateTime > driverDate.LowDateTime {\n\t\treturn true\n\t}\n\tif data.DriverDate.LowDateTime < driverDate.LowDateTime {\n\t\treturn false\n\t}\n\n\tif data.DriverVersion > driverVersion {\n\t\treturn true\n\t}\n\tif data.DriverVersion < driverVersion {\n\t\treturn false\n\t}\n\n\treturn false\n}\n\n// DrvInfoDetailData is driver information details structure (provides detailed information about a particular driver information structure)\ntype DrvInfoDetailData struct {\n\tsize            uint32 // Use unsafeSizeOf method\n\tInfDate         Filetime\n\tcompatIDsOffset uint32\n\tcompatIDsLength uint32\n\t_               uintptr\n\tsectionName     [LINE_LEN]uint16\n\tinfFileName     [MAX_PATH]uint16\n\tdrvDescription  [LINE_LEN]uint16\n\thardwareID      [1]uint16\n}\n\nfunc (*DrvInfoDetailData) unsafeSizeOf() uint32 {\n\tif unsafe.Sizeof(uintptr(0)) == 4 {\n\t\t// Windows declares this with pshpack1.h\n\t\treturn uint32(unsafe.Offsetof(DrvInfoDetailData{}.hardwareID) + unsafe.Sizeof(DrvInfoDetailData{}.hardwareID))\n\t}\n\treturn uint32(unsafe.Sizeof(DrvInfoDetailData{}))\n}\n\nfunc (data *DrvInfoDetailData) SectionName() string {\n\treturn UTF16ToString(data.sectionName[:])\n}\n\nfunc (data *DrvInfoDetailData) InfFileName() string {\n\treturn UTF16ToString(data.infFileName[:])\n}\n\nfunc (data *DrvInfoDetailData) DrvDescription() string {\n\treturn UTF16ToString(data.drvDescription[:])\n}\n\nfunc (data *DrvInfoDetailData) HardwareID() string {\n\tif data.compatIDsOffset > 1 {\n\t\tbufW := data.getBuf()\n\t\treturn UTF16ToString(bufW[:wcslen(bufW)])\n\t}\n\n\treturn \"\"\n}\n\nfunc (data *DrvInfoDetailData) CompatIDs() []string {\n\ta := make([]string, 0)\n\n\tif data.compatIDsLength > 0 {\n\t\tbufW := data.getBuf()\n\t\tbufW = bufW[data.compatIDsOffset : data.compatIDsOffset+data.compatIDsLength]\n\t\tfor i := 0; i < len(bufW); {\n\t\t\tj := i + wcslen(bufW[i:])\n\t\t\tif i < j {\n\t\t\t\ta = append(a, UTF16ToString(bufW[i:j]))\n\t\t\t}\n\t\t\ti = j + 1\n\t\t}\n\t}\n\n\treturn a\n}\n\nfunc (data *DrvInfoDetailData) getBuf() []uint16 {\n\tlen := (data.size - uint32(unsafe.Offsetof(data.hardwareID))) / 2\n\tsl := struct {\n\t\taddr *uint16\n\t\tlen  int\n\t\tcap  int\n\t}{&data.hardwareID[0], int(len), int(len)}\n\treturn *(*[]uint16)(unsafe.Pointer(&sl))\n}\n\n// IsCompatible method tests if given hardware ID matches the driver or is listed on the compatible ID list.\nfunc (data *DrvInfoDetailData) IsCompatible(hwid string) bool {\n\thwidLC := strings.ToLower(hwid)\n\tif strings.ToLower(data.HardwareID()) == hwidLC {\n\t\treturn true\n\t}\n\ta := data.CompatIDs()\n\tfor i := range a {\n\t\tif strings.ToLower(a[i]) == hwidLC {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// DICD flags control SetupDiCreateDeviceInfo\ntype DICD uint32\n\nconst (\n\tDICD_GENERATE_ID       DICD = 0x00000001\n\tDICD_INHERIT_CLASSDRVS DICD = 0x00000002\n)\n\n// SUOI flags control SetupUninstallOEMInf\ntype SUOI uint32\n\nconst (\n\tSUOI_FORCEDELETE SUOI = 0x0001\n)\n\n// SPDIT flags to distinguish between class drivers and\n// device drivers. (Passed in 'DriverType' parameter of\n// driver information list APIs)\ntype SPDIT uint32\n\nconst (\n\tSPDIT_NODRIVER     SPDIT = 0x00000000\n\tSPDIT_CLASSDRIVER  SPDIT = 0x00000001\n\tSPDIT_COMPATDRIVER SPDIT = 0x00000002\n)\n\n// DIGCF flags control what is included in the device information set built by SetupDiGetClassDevs\ntype DIGCF uint32\n\nconst (\n\tDIGCF_DEFAULT         DIGCF = 0x00000001 // only valid with DIGCF_DEVICEINTERFACE\n\tDIGCF_PRESENT         DIGCF = 0x00000002\n\tDIGCF_ALLCLASSES      DIGCF = 0x00000004\n\tDIGCF_PROFILE         DIGCF = 0x00000008\n\tDIGCF_DEVICEINTERFACE DIGCF = 0x00000010\n)\n\n// DIREG specifies values for SetupDiCreateDevRegKey, SetupDiOpenDevRegKey, and SetupDiDeleteDevRegKey.\ntype DIREG uint32\n\nconst (\n\tDIREG_DEV  DIREG = 0x00000001 // Open/Create/Delete device key\n\tDIREG_DRV  DIREG = 0x00000002 // Open/Create/Delete driver key\n\tDIREG_BOTH DIREG = 0x00000004 // Delete both driver and Device key\n)\n\n// SPDRP specifies device registry property codes\n// (Codes marked as read-only (R) may only be used for\n// SetupDiGetDeviceRegistryProperty)\n//\n// These values should cover the same set of registry properties\n// as defined by the CM_DRP codes in cfgmgr32.h.\n//\n// Note that SPDRP codes are zero based while CM_DRP codes are one based!\ntype SPDRP uint32\n\nconst (\n\tSPDRP_DEVICEDESC                  SPDRP = 0x00000000 // DeviceDesc (R/W)\n\tSPDRP_HARDWAREID                  SPDRP = 0x00000001 // HardwareID (R/W)\n\tSPDRP_COMPATIBLEIDS               SPDRP = 0x00000002 // CompatibleIDs (R/W)\n\tSPDRP_SERVICE                     SPDRP = 0x00000004 // Service (R/W)\n\tSPDRP_CLASS                       SPDRP = 0x00000007 // Class (R--tied to ClassGUID)\n\tSPDRP_CLASSGUID                   SPDRP = 0x00000008 // ClassGUID (R/W)\n\tSPDRP_DRIVER                      SPDRP = 0x00000009 // Driver (R/W)\n\tSPDRP_CONFIGFLAGS                 SPDRP = 0x0000000A // ConfigFlags (R/W)\n\tSPDRP_MFG                         SPDRP = 0x0000000B // Mfg (R/W)\n\tSPDRP_FRIENDLYNAME                SPDRP = 0x0000000C // FriendlyName (R/W)\n\tSPDRP_LOCATION_INFORMATION        SPDRP = 0x0000000D // LocationInformation (R/W)\n\tSPDRP_PHYSICAL_DEVICE_OBJECT_NAME SPDRP = 0x0000000E // PhysicalDeviceObjectName (R)\n\tSPDRP_CAPABILITIES                SPDRP = 0x0000000F // Capabilities (R)\n\tSPDRP_UI_NUMBER                   SPDRP = 0x00000010 // UiNumber (R)\n\tSPDRP_UPPERFILTERS                SPDRP = 0x00000011 // UpperFilters (R/W)\n\tSPDRP_LOWERFILTERS                SPDRP = 0x00000012 // LowerFilters (R/W)\n\tSPDRP_BUSTYPEGUID                 SPDRP = 0x00000013 // BusTypeGUID (R)\n\tSPDRP_LEGACYBUSTYPE               SPDRP = 0x00000014 // LegacyBusType (R)\n\tSPDRP_BUSNUMBER                   SPDRP = 0x00000015 // BusNumber (R)\n\tSPDRP_ENUMERATOR_NAME             SPDRP = 0x00000016 // Enumerator Name (R)\n\tSPDRP_SECURITY                    SPDRP = 0x00000017 // Security (R/W, binary form)\n\tSPDRP_SECURITY_SDS                SPDRP = 0x00000018 // Security (W, SDS form)\n\tSPDRP_DEVTYPE                     SPDRP = 0x00000019 // Device Type (R/W)\n\tSPDRP_EXCLUSIVE                   SPDRP = 0x0000001A // Device is exclusive-access (R/W)\n\tSPDRP_CHARACTERISTICS             SPDRP = 0x0000001B // Device Characteristics (R/W)\n\tSPDRP_ADDRESS                     SPDRP = 0x0000001C // Device Address (R)\n\tSPDRP_UI_NUMBER_DESC_FORMAT       SPDRP = 0x0000001D // UiNumberDescFormat (R/W)\n\tSPDRP_DEVICE_POWER_DATA           SPDRP = 0x0000001E // Device Power Data (R)\n\tSPDRP_REMOVAL_POLICY              SPDRP = 0x0000001F // Removal Policy (R)\n\tSPDRP_REMOVAL_POLICY_HW_DEFAULT   SPDRP = 0x00000020 // Hardware Removal Policy (R)\n\tSPDRP_REMOVAL_POLICY_OVERRIDE     SPDRP = 0x00000021 // Removal Policy Override (RW)\n\tSPDRP_INSTALL_STATE               SPDRP = 0x00000022 // Device Install State (R)\n\tSPDRP_LOCATION_PATHS              SPDRP = 0x00000023 // Device Location Paths (R)\n\tSPDRP_BASE_CONTAINERID            SPDRP = 0x00000024 // Base ContainerID (R)\n\n\tSPDRP_MAXIMUM_PROPERTY SPDRP = 0x00000025 // Upper bound on ordinals\n)\n\n// DEVPROPTYPE represents the property-data-type identifier that specifies the\n// data type of a device property value in the unified device property model.\ntype DEVPROPTYPE uint32\n\nconst (\n\tDEVPROP_TYPEMOD_ARRAY DEVPROPTYPE = 0x00001000\n\tDEVPROP_TYPEMOD_LIST  DEVPROPTYPE = 0x00002000\n\n\tDEVPROP_TYPE_EMPTY                      DEVPROPTYPE = 0x00000000\n\tDEVPROP_TYPE_NULL                       DEVPROPTYPE = 0x00000001\n\tDEVPROP_TYPE_SBYTE                      DEVPROPTYPE = 0x00000002\n\tDEVPROP_TYPE_BYTE                       DEVPROPTYPE = 0x00000003\n\tDEVPROP_TYPE_INT16                      DEVPROPTYPE = 0x00000004\n\tDEVPROP_TYPE_UINT16                     DEVPROPTYPE = 0x00000005\n\tDEVPROP_TYPE_INT32                      DEVPROPTYPE = 0x00000006\n\tDEVPROP_TYPE_UINT32                     DEVPROPTYPE = 0x00000007\n\tDEVPROP_TYPE_INT64                      DEVPROPTYPE = 0x00000008\n\tDEVPROP_TYPE_UINT64                     DEVPROPTYPE = 0x00000009\n\tDEVPROP_TYPE_FLOAT                      DEVPROPTYPE = 0x0000000A\n\tDEVPROP_TYPE_DOUBLE                     DEVPROPTYPE = 0x0000000B\n\tDEVPROP_TYPE_DECIMAL                    DEVPROPTYPE = 0x0000000C\n\tDEVPROP_TYPE_GUID                       DEVPROPTYPE = 0x0000000D\n\tDEVPROP_TYPE_CURRENCY                   DEVPROPTYPE = 0x0000000E\n\tDEVPROP_TYPE_DATE                       DEVPROPTYPE = 0x0000000F\n\tDEVPROP_TYPE_FILETIME                   DEVPROPTYPE = 0x00000010\n\tDEVPROP_TYPE_BOOLEAN                    DEVPROPTYPE = 0x00000011\n\tDEVPROP_TYPE_STRING                     DEVPROPTYPE = 0x00000012\n\tDEVPROP_TYPE_STRING_LIST                DEVPROPTYPE = DEVPROP_TYPE_STRING | DEVPROP_TYPEMOD_LIST\n\tDEVPROP_TYPE_SECURITY_DESCRIPTOR        DEVPROPTYPE = 0x00000013\n\tDEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING DEVPROPTYPE = 0x00000014\n\tDEVPROP_TYPE_DEVPROPKEY                 DEVPROPTYPE = 0x00000015\n\tDEVPROP_TYPE_DEVPROPTYPE                DEVPROPTYPE = 0x00000016\n\tDEVPROP_TYPE_BINARY                     DEVPROPTYPE = DEVPROP_TYPE_BYTE | DEVPROP_TYPEMOD_ARRAY\n\tDEVPROP_TYPE_ERROR                      DEVPROPTYPE = 0x00000017\n\tDEVPROP_TYPE_NTSTATUS                   DEVPROPTYPE = 0x00000018\n\tDEVPROP_TYPE_STRING_INDIRECT            DEVPROPTYPE = 0x00000019\n\n\tMAX_DEVPROP_TYPE    DEVPROPTYPE = 0x00000019\n\tMAX_DEVPROP_TYPEMOD DEVPROPTYPE = 0x00002000\n\n\tDEVPROP_MASK_TYPE    DEVPROPTYPE = 0x00000FFF\n\tDEVPROP_MASK_TYPEMOD DEVPROPTYPE = 0x0000F000\n)\n\n// DEVPROPGUID specifies a property category.\ntype DEVPROPGUID GUID\n\n// DEVPROPID uniquely identifies the property within the property category.\ntype DEVPROPID uint32\n\nconst DEVPROPID_FIRST_USABLE DEVPROPID = 2\n\n// DEVPROPKEY represents a device property key for a device property in the\n// unified device property model.\ntype DEVPROPKEY struct {\n\tFmtID DEVPROPGUID\n\tPID   DEVPROPID\n}\n\n// CONFIGRET is a return value or error code from cfgmgr32 APIs\ntype CONFIGRET uint32\n\nfunc (ret CONFIGRET) Error() string {\n\tif win32Error, ok := ret.Unwrap().(Errno); ok {\n\t\treturn fmt.Sprintf(\"%s (CfgMgr error: 0x%08x)\", win32Error.Error(), uint32(ret))\n\t}\n\treturn fmt.Sprintf(\"CfgMgr error: 0x%08x\", uint32(ret))\n}\n\nfunc (ret CONFIGRET) Win32Error(defaultError Errno) Errno {\n\treturn cm_MapCrToWin32Err(ret, defaultError)\n}\n\nfunc (ret CONFIGRET) Unwrap() error {\n\tconst noMatch = Errno(^uintptr(0))\n\twin32Error := ret.Win32Error(noMatch)\n\tif win32Error == noMatch {\n\t\treturn nil\n\t}\n\treturn win32Error\n}\n\nconst (\n\tCR_SUCCESS                  CONFIGRET = 0x00000000\n\tCR_DEFAULT                  CONFIGRET = 0x00000001\n\tCR_OUT_OF_MEMORY            CONFIGRET = 0x00000002\n\tCR_INVALID_POINTER          CONFIGRET = 0x00000003\n\tCR_INVALID_FLAG             CONFIGRET = 0x00000004\n\tCR_INVALID_DEVNODE          CONFIGRET = 0x00000005\n\tCR_INVALID_DEVINST                    = CR_INVALID_DEVNODE\n\tCR_INVALID_RES_DES          CONFIGRET = 0x00000006\n\tCR_INVALID_LOG_CONF         CONFIGRET = 0x00000007\n\tCR_INVALID_ARBITRATOR       CONFIGRET = 0x00000008\n\tCR_INVALID_NODELIST         CONFIGRET = 0x00000009\n\tCR_DEVNODE_HAS_REQS         CONFIGRET = 0x0000000A\n\tCR_DEVINST_HAS_REQS                   = CR_DEVNODE_HAS_REQS\n\tCR_INVALID_RESOURCEID       CONFIGRET = 0x0000000B\n\tCR_DLVXD_NOT_FOUND          CONFIGRET = 0x0000000C\n\tCR_NO_SUCH_DEVNODE          CONFIGRET = 0x0000000D\n\tCR_NO_SUCH_DEVINST                    = CR_NO_SUCH_DEVNODE\n\tCR_NO_MORE_LOG_CONF         CONFIGRET = 0x0000000E\n\tCR_NO_MORE_RES_DES          CONFIGRET = 0x0000000F\n\tCR_ALREADY_SUCH_DEVNODE     CONFIGRET = 0x00000010\n\tCR_ALREADY_SUCH_DEVINST               = CR_ALREADY_SUCH_DEVNODE\n\tCR_INVALID_RANGE_LIST       CONFIGRET = 0x00000011\n\tCR_INVALID_RANGE            CONFIGRET = 0x00000012\n\tCR_FAILURE                  CONFIGRET = 0x00000013\n\tCR_NO_SUCH_LOGICAL_DEV      CONFIGRET = 0x00000014\n\tCR_CREATE_BLOCKED           CONFIGRET = 0x00000015\n\tCR_NOT_SYSTEM_VM            CONFIGRET = 0x00000016\n\tCR_REMOVE_VETOED            CONFIGRET = 0x00000017\n\tCR_APM_VETOED               CONFIGRET = 0x00000018\n\tCR_INVALID_LOAD_TYPE        CONFIGRET = 0x00000019\n\tCR_BUFFER_SMALL             CONFIGRET = 0x0000001A\n\tCR_NO_ARBITRATOR            CONFIGRET = 0x0000001B\n\tCR_NO_REGISTRY_HANDLE       CONFIGRET = 0x0000001C\n\tCR_REGISTRY_ERROR           CONFIGRET = 0x0000001D\n\tCR_INVALID_DEVICE_ID        CONFIGRET = 0x0000001E\n\tCR_INVALID_DATA             CONFIGRET = 0x0000001F\n\tCR_INVALID_API              CONFIGRET = 0x00000020\n\tCR_DEVLOADER_NOT_READY      CONFIGRET = 0x00000021\n\tCR_NEED_RESTART             CONFIGRET = 0x00000022\n\tCR_NO_MORE_HW_PROFILES      CONFIGRET = 0x00000023\n\tCR_DEVICE_NOT_THERE         CONFIGRET = 0x00000024\n\tCR_NO_SUCH_VALUE            CONFIGRET = 0x00000025\n\tCR_WRONG_TYPE               CONFIGRET = 0x00000026\n\tCR_INVALID_PRIORITY         CONFIGRET = 0x00000027\n\tCR_NOT_DISABLEABLE          CONFIGRET = 0x00000028\n\tCR_FREE_RESOURCES           CONFIGRET = 0x00000029\n\tCR_QUERY_VETOED             CONFIGRET = 0x0000002A\n\tCR_CANT_SHARE_IRQ           CONFIGRET = 0x0000002B\n\tCR_NO_DEPENDENT             CONFIGRET = 0x0000002C\n\tCR_SAME_RESOURCES           CONFIGRET = 0x0000002D\n\tCR_NO_SUCH_REGISTRY_KEY     CONFIGRET = 0x0000002E\n\tCR_INVALID_MACHINENAME      CONFIGRET = 0x0000002F\n\tCR_REMOTE_COMM_FAILURE      CONFIGRET = 0x00000030\n\tCR_MACHINE_UNAVAILABLE      CONFIGRET = 0x00000031\n\tCR_NO_CM_SERVICES           CONFIGRET = 0x00000032\n\tCR_ACCESS_DENIED            CONFIGRET = 0x00000033\n\tCR_CALL_NOT_IMPLEMENTED     CONFIGRET = 0x00000034\n\tCR_INVALID_PROPERTY         CONFIGRET = 0x00000035\n\tCR_DEVICE_INTERFACE_ACTIVE  CONFIGRET = 0x00000036\n\tCR_NO_SUCH_DEVICE_INTERFACE CONFIGRET = 0x00000037\n\tCR_INVALID_REFERENCE_STRING CONFIGRET = 0x00000038\n\tCR_INVALID_CONFLICT_LIST    CONFIGRET = 0x00000039\n\tCR_INVALID_INDEX            CONFIGRET = 0x0000003A\n\tCR_INVALID_STRUCTURE_SIZE   CONFIGRET = 0x0000003B\n\tNUM_CR_RESULTS              CONFIGRET = 0x0000003C\n)\n\nconst (\n\tCM_GET_DEVICE_INTERFACE_LIST_PRESENT     = 0 // only currently 'live' device interfaces\n\tCM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES = 1 // all registered device interfaces, live or not\n)\n\nconst (\n\tDN_ROOT_ENUMERATED       = 0x00000001        // Was enumerated by ROOT\n\tDN_DRIVER_LOADED         = 0x00000002        // Has Register_Device_Driver\n\tDN_ENUM_LOADED           = 0x00000004        // Has Register_Enumerator\n\tDN_STARTED               = 0x00000008        // Is currently configured\n\tDN_MANUAL                = 0x00000010        // Manually installed\n\tDN_NEED_TO_ENUM          = 0x00000020        // May need reenumeration\n\tDN_NOT_FIRST_TIME        = 0x00000040        // Has received a config\n\tDN_HARDWARE_ENUM         = 0x00000080        // Enum generates hardware ID\n\tDN_LIAR                  = 0x00000100        // Lied about can reconfig once\n\tDN_HAS_MARK              = 0x00000200        // Not CM_Create_DevInst lately\n\tDN_HAS_PROBLEM           = 0x00000400        // Need device installer\n\tDN_FILTERED              = 0x00000800        // Is filtered\n\tDN_MOVED                 = 0x00001000        // Has been moved\n\tDN_DISABLEABLE           = 0x00002000        // Can be disabled\n\tDN_REMOVABLE             = 0x00004000        // Can be removed\n\tDN_PRIVATE_PROBLEM       = 0x00008000        // Has a private problem\n\tDN_MF_PARENT             = 0x00010000        // Multi function parent\n\tDN_MF_CHILD              = 0x00020000        // Multi function child\n\tDN_WILL_BE_REMOVED       = 0x00040000        // DevInst is being removed\n\tDN_NOT_FIRST_TIMEE       = 0x00080000        // Has received a config enumerate\n\tDN_STOP_FREE_RES         = 0x00100000        // When child is stopped, free resources\n\tDN_REBAL_CANDIDATE       = 0x00200000        // Don't skip during rebalance\n\tDN_BAD_PARTIAL           = 0x00400000        // This devnode's log_confs do not have same resources\n\tDN_NT_ENUMERATOR         = 0x00800000        // This devnode's is an NT enumerator\n\tDN_NT_DRIVER             = 0x01000000        // This devnode's is an NT driver\n\tDN_NEEDS_LOCKING         = 0x02000000        // Devnode need lock resume processing\n\tDN_ARM_WAKEUP            = 0x04000000        // Devnode can be the wakeup device\n\tDN_APM_ENUMERATOR        = 0x08000000        // APM aware enumerator\n\tDN_APM_DRIVER            = 0x10000000        // APM aware driver\n\tDN_SILENT_INSTALL        = 0x20000000        // Silent install\n\tDN_NO_SHOW_IN_DM         = 0x40000000        // No show in device manager\n\tDN_BOOT_LOG_PROB         = 0x80000000        // Had a problem during preassignment of boot log conf\n\tDN_NEED_RESTART          = DN_LIAR           // System needs to be restarted for this Devnode to work properly\n\tDN_DRIVER_BLOCKED        = DN_NOT_FIRST_TIME // One or more drivers are blocked from loading for this Devnode\n\tDN_LEGACY_DRIVER         = DN_MOVED          // This device is using a legacy driver\n\tDN_CHILD_WITH_INVALID_ID = DN_HAS_MARK       // One or more children have invalid IDs\n\tDN_DEVICE_DISCONNECTED   = DN_NEEDS_LOCKING  // The function driver for a device reported that the device is not connected.  Typically this means a wireless device is out of range.\n\tDN_QUERY_REMOVE_PENDING  = DN_MF_PARENT      // Device is part of a set of related devices collectively pending query-removal\n\tDN_QUERY_REMOVE_ACTIVE   = DN_MF_CHILD       // Device is actively engaged in a query-remove IRP\n\tDN_CHANGEABLE_FLAGS      = DN_NOT_FIRST_TIME | DN_HARDWARE_ENUM | DN_HAS_MARK | DN_DISABLEABLE | DN_REMOVABLE | DN_MF_CHILD | DN_MF_PARENT | DN_NOT_FIRST_TIMEE | DN_STOP_FREE_RES | DN_REBAL_CANDIDATE | DN_NT_ENUMERATOR | DN_NT_DRIVER | DN_SILENT_INSTALL | DN_NO_SHOW_IN_DM\n)\n\n//sys\tsetupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) [failretval==DevInfo(InvalidHandle)] = setupapi.SetupDiCreateDeviceInfoListExW\n\n// SetupDiCreateDeviceInfoListEx function creates an empty device information set on a remote or a local computer and optionally associates the set with a device setup class.\nfunc SetupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName string) (deviceInfoSet DevInfo, err error) {\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn setupDiCreateDeviceInfoListEx(classGUID, hwndParent, machineNameUTF16, 0)\n}\n\n//sys\tsetupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) = setupapi.SetupDiGetDeviceInfoListDetailW\n\n// SetupDiGetDeviceInfoListDetail function retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name.\nfunc SetupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo) (deviceInfoSetDetailData *DevInfoListDetailData, err error) {\n\tdata := &DevInfoListDetailData{}\n\tdata.size = data.unsafeSizeOf()\n\n\treturn data, setupDiGetDeviceInfoListDetail(deviceInfoSet, data)\n}\n\n// DeviceInfoListDetail method retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name.\nfunc (deviceInfoSet DevInfo) DeviceInfoListDetail() (*DevInfoListDetailData, error) {\n\treturn SetupDiGetDeviceInfoListDetail(deviceInfoSet)\n}\n\n//sys\tsetupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiCreateDeviceInfoW\n\n// SetupDiCreateDeviceInfo function creates a new device information element and adds it as a new member to the specified device information set.\nfunc SetupDiCreateDeviceInfo(deviceInfoSet DevInfo, deviceName string, classGUID *GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (deviceInfoData *DevInfoData, err error) {\n\tdeviceNameUTF16, err := UTF16PtrFromString(deviceName)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar deviceDescriptionUTF16 *uint16\n\tif deviceDescription != \"\" {\n\t\tdeviceDescriptionUTF16, err = UTF16PtrFromString(deviceDescription)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiCreateDeviceInfo(deviceInfoSet, deviceNameUTF16, classGUID, deviceDescriptionUTF16, hwndParent, creationFlags, data)\n}\n\n// CreateDeviceInfo method creates a new device information element and adds it as a new member to the specified device information set.\nfunc (deviceInfoSet DevInfo) CreateDeviceInfo(deviceName string, classGUID *GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (*DevInfoData, error) {\n\treturn SetupDiCreateDeviceInfo(deviceInfoSet, deviceName, classGUID, deviceDescription, hwndParent, creationFlags)\n}\n\n//sys\tsetupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiEnumDeviceInfo\n\n// SetupDiEnumDeviceInfo function returns a DevInfoData structure that specifies a device information element in a device information set.\nfunc SetupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex int) (*DevInfoData, error) {\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiEnumDeviceInfo(deviceInfoSet, uint32(memberIndex), data)\n}\n\n// EnumDeviceInfo method returns a DevInfoData structure that specifies a device information element in a device information set.\nfunc (deviceInfoSet DevInfo) EnumDeviceInfo(memberIndex int) (*DevInfoData, error) {\n\treturn SetupDiEnumDeviceInfo(deviceInfoSet, memberIndex)\n}\n\n// SetupDiDestroyDeviceInfoList function deletes a device information set and frees all associated memory.\n//sys\tSetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) = setupapi.SetupDiDestroyDeviceInfoList\n\n// Close method deletes a device information set and frees all associated memory.\nfunc (deviceInfoSet DevInfo) Close() error {\n\treturn SetupDiDestroyDeviceInfoList(deviceInfoSet)\n}\n\n//sys\tSetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) = setupapi.SetupDiBuildDriverInfoList\n\n// BuildDriverInfoList method builds a list of drivers that is associated with a specific device or with the global class driver list for a device information set.\nfunc (deviceInfoSet DevInfo) BuildDriverInfoList(deviceInfoData *DevInfoData, driverType SPDIT) error {\n\treturn SetupDiBuildDriverInfoList(deviceInfoSet, deviceInfoData, driverType)\n}\n\n//sys\tSetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) = setupapi.SetupDiCancelDriverInfoSearch\n\n// CancelDriverInfoSearch method cancels a driver list search that is currently in progress in a different thread.\nfunc (deviceInfoSet DevInfo) CancelDriverInfoSearch() error {\n\treturn SetupDiCancelDriverInfoSearch(deviceInfoSet)\n}\n\n//sys\tsetupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiEnumDriverInfoW\n\n// SetupDiEnumDriverInfo function enumerates the members of a driver list.\nfunc SetupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex int) (*DrvInfoData, error) {\n\tdata := &DrvInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiEnumDriverInfo(deviceInfoSet, deviceInfoData, driverType, uint32(memberIndex), data)\n}\n\n// EnumDriverInfo method enumerates the members of a driver list.\nfunc (deviceInfoSet DevInfo) EnumDriverInfo(deviceInfoData *DevInfoData, driverType SPDIT, memberIndex int) (*DrvInfoData, error) {\n\treturn SetupDiEnumDriverInfo(deviceInfoSet, deviceInfoData, driverType, memberIndex)\n}\n\n//sys\tsetupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiGetSelectedDriverW\n\n// SetupDiGetSelectedDriver function retrieves the selected driver for a device information set or a particular device information element.\nfunc SetupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DrvInfoData, error) {\n\tdata := &DrvInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiGetSelectedDriver(deviceInfoSet, deviceInfoData, data)\n}\n\n// SelectedDriver method retrieves the selected driver for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SelectedDriver(deviceInfoData *DevInfoData) (*DrvInfoData, error) {\n\treturn SetupDiGetSelectedDriver(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tSetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiSetSelectedDriverW\n\n// SetSelectedDriver method sets, or resets, the selected driver for a device information element or the selected class driver for a device information set.\nfunc (deviceInfoSet DevInfo) SetSelectedDriver(deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) error {\n\treturn SetupDiSetSelectedDriver(deviceInfoSet, deviceInfoData, driverInfoData)\n}\n\n//sys\tsetupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetDriverInfoDetailW\n\n// SetupDiGetDriverInfoDetail function retrieves driver information detail for a device information set or a particular device information element in the device information set.\nfunc SetupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (*DrvInfoDetailData, error) {\n\treqSize := uint32(2048)\n\tfor {\n\t\tbuf := make([]byte, reqSize)\n\t\tdata := (*DrvInfoDetailData)(unsafe.Pointer(&buf[0]))\n\t\tdata.size = data.unsafeSizeOf()\n\t\terr := setupDiGetDriverInfoDetail(deviceInfoSet, deviceInfoData, driverInfoData, data, uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdata.size = reqSize\n\t\treturn data, nil\n\t}\n}\n\n// DriverInfoDetail method retrieves driver information detail for a device information set or a particular device information element in the device information set.\nfunc (deviceInfoSet DevInfo) DriverInfoDetail(deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (*DrvInfoDetailData, error) {\n\treturn SetupDiGetDriverInfoDetail(deviceInfoSet, deviceInfoData, driverInfoData)\n}\n\n//sys\tSetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) = setupapi.SetupDiDestroyDriverInfoList\n\n// DestroyDriverInfoList method deletes a driver list.\nfunc (deviceInfoSet DevInfo) DestroyDriverInfoList(deviceInfoData *DevInfoData, driverType SPDIT) error {\n\treturn SetupDiDestroyDriverInfoList(deviceInfoSet, deviceInfoData, driverType)\n}\n\n//sys\tsetupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) [failretval==DevInfo(InvalidHandle)] = setupapi.SetupDiGetClassDevsExW\n\n// SetupDiGetClassDevsEx function returns a handle to a device information set that contains requested device information elements for a local or a remote computer.\nfunc SetupDiGetClassDevsEx(classGUID *GUID, enumerator string, hwndParent uintptr, flags DIGCF, deviceInfoSet DevInfo, machineName string) (handle DevInfo, err error) {\n\tvar enumeratorUTF16 *uint16\n\tif enumerator != \"\" {\n\t\tenumeratorUTF16, err = UTF16PtrFromString(enumerator)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn setupDiGetClassDevsEx(classGUID, enumeratorUTF16, hwndParent, flags, deviceInfoSet, machineNameUTF16, 0)\n}\n\n// SetupDiCallClassInstaller function calls the appropriate class installer, and any registered co-installers, with the specified installation request (DIF code).\n//sys\tSetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiCallClassInstaller\n\n// CallClassInstaller member calls the appropriate class installer, and any registered co-installers, with the specified installation request (DIF code).\nfunc (deviceInfoSet DevInfo) CallClassInstaller(installFunction DI_FUNCTION, deviceInfoData *DevInfoData) error {\n\treturn SetupDiCallClassInstaller(installFunction, deviceInfoSet, deviceInfoData)\n}\n\n// SetupDiOpenDevRegKey function opens a registry key for device-specific configuration information.\n//sys\tSetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) [failretval==InvalidHandle] = setupapi.SetupDiOpenDevRegKey\n\n// OpenDevRegKey method opens a registry key for device-specific configuration information.\nfunc (deviceInfoSet DevInfo) OpenDevRegKey(DeviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (Handle, error) {\n\treturn SetupDiOpenDevRegKey(deviceInfoSet, DeviceInfoData, Scope, HwProfile, KeyType, samDesired)\n}\n\n//sys\tsetupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) = setupapi.SetupDiGetDevicePropertyW\n\n// SetupDiGetDeviceProperty function retrieves a specified device instance property.\nfunc SetupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY) (value interface{}, err error) {\n\treqSize := uint32(256)\n\tfor {\n\t\tvar dataType DEVPROPTYPE\n\t\tbuf := make([]byte, reqSize)\n\t\terr = setupDiGetDeviceProperty(deviceInfoSet, deviceInfoData, propertyKey, &dataType, &buf[0], uint32(len(buf)), &reqSize, 0)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tswitch dataType {\n\t\tcase DEVPROP_TYPE_STRING:\n\t\t\tret := UTF16ToString(bufToUTF16(buf))\n\t\t\truntime.KeepAlive(buf)\n\t\t\treturn ret, nil\n\t\t}\n\t\treturn nil, errors.New(\"unimplemented property type\")\n\t}\n}\n\n//sys\tsetupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetDeviceRegistryPropertyW\n\n// SetupDiGetDeviceRegistryProperty function retrieves a specified Plug and Play device property.\nfunc SetupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP) (value interface{}, err error) {\n\treqSize := uint32(256)\n\tfor {\n\t\tvar dataType uint32\n\t\tbuf := make([]byte, reqSize)\n\t\terr = setupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &dataType, &buf[0], uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\treturn getRegistryValue(buf[:reqSize], dataType)\n\t}\n}\n\nfunc getRegistryValue(buf []byte, dataType uint32) (interface{}, error) {\n\tswitch dataType {\n\tcase REG_SZ:\n\t\tret := UTF16ToString(bufToUTF16(buf))\n\t\truntime.KeepAlive(buf)\n\t\treturn ret, nil\n\tcase REG_EXPAND_SZ:\n\t\tvalue := UTF16ToString(bufToUTF16(buf))\n\t\tif value == \"\" {\n\t\t\treturn \"\", nil\n\t\t}\n\t\tp, err := syscall.UTF16PtrFromString(value)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tret := make([]uint16, 100)\n\t\tfor {\n\t\t\tn, err := ExpandEnvironmentStrings(p, &ret[0], uint32(len(ret)))\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t\tif n <= uint32(len(ret)) {\n\t\t\t\treturn UTF16ToString(ret[:n]), nil\n\t\t\t}\n\t\t\tret = make([]uint16, n)\n\t\t}\n\tcase REG_BINARY:\n\t\treturn buf, nil\n\tcase REG_DWORD_LITTLE_ENDIAN:\n\t\treturn binary.LittleEndian.Uint32(buf), nil\n\tcase REG_DWORD_BIG_ENDIAN:\n\t\treturn binary.BigEndian.Uint32(buf), nil\n\tcase REG_MULTI_SZ:\n\t\tbufW := bufToUTF16(buf)\n\t\ta := []string{}\n\t\tfor i := 0; i < len(bufW); {\n\t\t\tj := i + wcslen(bufW[i:])\n\t\t\tif i < j {\n\t\t\t\ta = append(a, UTF16ToString(bufW[i:j]))\n\t\t\t}\n\t\t\ti = j + 1\n\t\t}\n\t\truntime.KeepAlive(buf)\n\t\treturn a, nil\n\tcase REG_QWORD_LITTLE_ENDIAN:\n\t\treturn binary.LittleEndian.Uint64(buf), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"Unsupported registry value type: %v\", dataType)\n\t}\n}\n\n// bufToUTF16 function reinterprets []byte buffer as []uint16\nfunc bufToUTF16(buf []byte) []uint16 {\n\tsl := struct {\n\t\taddr *uint16\n\t\tlen  int\n\t\tcap  int\n\t}{(*uint16)(unsafe.Pointer(&buf[0])), len(buf) / 2, cap(buf) / 2}\n\treturn *(*[]uint16)(unsafe.Pointer(&sl))\n}\n\n// utf16ToBuf function reinterprets []uint16 as []byte\nfunc utf16ToBuf(buf []uint16) []byte {\n\tsl := struct {\n\t\taddr *byte\n\t\tlen  int\n\t\tcap  int\n\t}{(*byte)(unsafe.Pointer(&buf[0])), len(buf) * 2, cap(buf) * 2}\n\treturn *(*[]byte)(unsafe.Pointer(&sl))\n}\n\nfunc wcslen(str []uint16) int {\n\tfor i := 0; i < len(str); i++ {\n\t\tif str[i] == 0 {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(str)\n}\n\n// DeviceRegistryProperty method retrieves a specified Plug and Play device property.\nfunc (deviceInfoSet DevInfo) DeviceRegistryProperty(deviceInfoData *DevInfoData, property SPDRP) (interface{}, error) {\n\treturn SetupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property)\n}\n\n//sys\tsetupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) = setupapi.SetupDiSetDeviceRegistryPropertyW\n\n// SetupDiSetDeviceRegistryProperty function sets a Plug and Play device property for a device.\nfunc SetupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffers []byte) error {\n\treturn setupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &propertyBuffers[0], uint32(len(propertyBuffers)))\n}\n\n// SetDeviceRegistryProperty function sets a Plug and Play device property for a device.\nfunc (deviceInfoSet DevInfo) SetDeviceRegistryProperty(deviceInfoData *DevInfoData, property SPDRP, propertyBuffers []byte) error {\n\treturn SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, propertyBuffers)\n}\n\n// SetDeviceRegistryPropertyString method sets a Plug and Play device property string for a device.\nfunc (deviceInfoSet DevInfo) SetDeviceRegistryPropertyString(deviceInfoData *DevInfoData, property SPDRP, str string) error {\n\tstr16, err := UTF16FromString(str)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, utf16ToBuf(append(str16, 0)))\n\truntime.KeepAlive(str16)\n\treturn err\n}\n\n//sys\tsetupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiGetDeviceInstallParamsW\n\n// SetupDiGetDeviceInstallParams function retrieves device installation parameters for a device information set or a particular device information element.\nfunc SetupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DevInstallParams, error) {\n\tparams := &DevInstallParams{}\n\tparams.size = uint32(unsafe.Sizeof(*params))\n\n\treturn params, setupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData, params)\n}\n\n// DeviceInstallParams method retrieves device installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) DeviceInstallParams(deviceInfoData *DevInfoData) (*DevInstallParams, error) {\n\treturn SetupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tsetupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) = setupapi.SetupDiGetDeviceInstanceIdW\n\n// SetupDiGetDeviceInstanceId function retrieves the instance ID of the device.\nfunc SetupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (string, error) {\n\treqSize := uint32(1024)\n\tfor {\n\t\tbuf := make([]uint16, reqSize)\n\t\terr := setupDiGetDeviceInstanceId(deviceInfoSet, deviceInfoData, &buf[0], uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn UTF16ToString(buf), nil\n\t}\n}\n\n// DeviceInstanceID method retrieves the instance ID of the device.\nfunc (deviceInfoSet DevInfo) DeviceInstanceID(deviceInfoData *DevInfoData) (string, error) {\n\treturn SetupDiGetDeviceInstanceId(deviceInfoSet, deviceInfoData)\n}\n\n// SetupDiGetClassInstallParams function retrieves class installation parameters for a device information set or a particular device information element.\n//sys\tSetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetClassInstallParamsW\n\n// ClassInstallParams method retrieves class installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) ClassInstallParams(deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) error {\n\treturn SetupDiGetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize, requiredSize)\n}\n\n//sys\tSetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiSetDeviceInstallParamsW\n\n// SetDeviceInstallParams member sets device installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SetDeviceInstallParams(deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) error {\n\treturn SetupDiSetDeviceInstallParams(deviceInfoSet, deviceInfoData, deviceInstallParams)\n}\n\n// SetupDiSetClassInstallParams function sets or clears class install parameters for a device information set or a particular device information element.\n//sys\tSetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) = setupapi.SetupDiSetClassInstallParamsW\n\n// SetClassInstallParams method sets or clears class install parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SetClassInstallParams(deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) error {\n\treturn SetupDiSetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize)\n}\n\n//sys\tsetupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) = setupapi.SetupDiClassNameFromGuidExW\n\n// SetupDiClassNameFromGuidEx function retrieves the class name associated with a class GUID. The class can be installed on a local or remote computer.\nfunc SetupDiClassNameFromGuidEx(classGUID *GUID, machineName string) (className string, err error) {\n\tvar classNameUTF16 [MAX_CLASS_NAME_LEN]uint16\n\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\terr = setupDiClassNameFromGuidEx(classGUID, &classNameUTF16[0], MAX_CLASS_NAME_LEN, nil, machineNameUTF16, 0)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tclassName = UTF16ToString(classNameUTF16[:])\n\treturn\n}\n\n//sys\tsetupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) = setupapi.SetupDiClassGuidsFromNameExW\n\n// SetupDiClassGuidsFromNameEx function retrieves the GUIDs associated with the specified class name. This resulting list contains the classes currently installed on a local or remote computer.\nfunc SetupDiClassGuidsFromNameEx(className string, machineName string) ([]GUID, error) {\n\tclassNameUTF16, err := UTF16PtrFromString(className)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treqSize := uint32(4)\n\tfor {\n\t\tbuf := make([]GUID, reqSize)\n\t\terr = setupDiClassGuidsFromNameEx(classNameUTF16, &buf[0], uint32(len(buf)), &reqSize, machineNameUTF16, 0)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn buf[:reqSize], nil\n\t}\n}\n\n//sys\tsetupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiGetSelectedDevice\n\n// SetupDiGetSelectedDevice function retrieves the selected device information element in a device information set.\nfunc SetupDiGetSelectedDevice(deviceInfoSet DevInfo) (*DevInfoData, error) {\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiGetSelectedDevice(deviceInfoSet, data)\n}\n\n// SelectedDevice method retrieves the selected device information element in a device information set.\nfunc (deviceInfoSet DevInfo) SelectedDevice() (*DevInfoData, error) {\n\treturn SetupDiGetSelectedDevice(deviceInfoSet)\n}\n\n// SetupDiSetSelectedDevice function sets a device information element as the selected member of a device information set. This function is typically used by an installation wizard.\n//sys\tSetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiSetSelectedDevice\n\n// SetSelectedDevice method sets a device information element as the selected member of a device information set. This function is typically used by an installation wizard.\nfunc (deviceInfoSet DevInfo) SetSelectedDevice(deviceInfoData *DevInfoData) error {\n\treturn SetupDiSetSelectedDevice(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tsetupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) = setupapi.SetupUninstallOEMInfW\n\n// SetupUninstallOEMInf uninstalls the specified driver.\nfunc SetupUninstallOEMInf(infFileName string, flags SUOI) error {\n\tinfFileName16, err := UTF16PtrFromString(infFileName)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn setupUninstallOEMInf(infFileName16, flags, 0)\n}\n\n//sys cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) = CfgMgr32.CM_MapCrToWin32Err\n\n//sys cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_Device_Interface_List_SizeW\n//sys cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_Device_Interface_ListW\n\nfunc CM_Get_Device_Interface_List(deviceID string, interfaceClass *GUID, flags uint32) ([]string, error) {\n\tdeviceID16, err := UTF16PtrFromString(deviceID)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar buf []uint16\n\tvar buflen uint32\n\tfor {\n\t\tif ret := cm_Get_Device_Interface_List_Size(&buflen, interfaceClass, deviceID16, flags); ret != CR_SUCCESS {\n\t\t\treturn nil, ret\n\t\t}\n\t\tbuf = make([]uint16, buflen)\n\t\tif ret := cm_Get_Device_Interface_List(interfaceClass, deviceID16, &buf[0], buflen, flags); ret == CR_SUCCESS {\n\t\t\tbreak\n\t\t} else if ret != CR_BUFFER_SMALL {\n\t\t\treturn nil, ret\n\t\t}\n\t}\n\tvar interfaces []string\n\tfor i := 0; i < len(buf); {\n\t\tj := i + wcslen(buf[i:])\n\t\tif i < j {\n\t\t\tinterfaces = append(interfaces, UTF16ToString(buf[i:j]))\n\t\t}\n\t\ti = j + 1\n\t}\n\tif interfaces == nil {\n\t\treturn nil, ERROR_NO_SUCH_DEVICE_INTERFACE\n\t}\n\treturn interfaces, nil\n}\n\n//sys cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_DevNode_Status\n\nfunc CM_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) error {\n\tret := cm_Get_DevNode_Status(status, problemNumber, devInst, flags)\n\tif ret == CR_SUCCESS {\n\t\treturn nil\n\t}\n\treturn ret\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/str.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nfunc itoa(val int) string { // do it here rather than with fmt to avoid dependency\n\tif val < 0 {\n\t\treturn \"-\" + itoa(-val)\n\t}\n\tvar buf [32]byte // big enough for int64\n\ti := len(buf) - 1\n\tfor val >= 10 {\n\t\tbuf[i] = byte(val%10 + '0')\n\t\ti--\n\t\tval /= 10\n\t}\n\tbuf[i] = byte(val + '0')\n\treturn string(buf[i:])\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/syscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\n// Package windows contains an interface to the low-level operating system\n// primitives. OS details vary depending on the underlying system, and\n// by default, godoc will display the OS-specific documentation for the current\n// system. If you want godoc to display syscall documentation for another\n// system, set $GOOS and $GOARCH to the desired system. For example, if\n// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS\n// to freebsd and $GOARCH to arm.\n//\n// The primary use of this package is inside other packages that provide a more\n// portable interface to the system, such as \"os\", \"time\" and \"net\".  Use\n// those packages rather than this one if you can.\n//\n// For details of the functions and data types in this package consult\n// the manuals for the appropriate operating system.\n//\n// These calls return err == nil to indicate success; otherwise\n// err represents an operating system error describing the failure and\n// holds a value of type syscall.Errno.\npackage windows // import \"golang.org/x/sys/windows\"\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// ByteSliceFromString returns a NUL-terminated slice of bytes\n// containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, syscall.EINVAL).\nfunc ByteSliceFromString(s string) ([]byte, error) {\n\tif strings.IndexByte(s, 0) != -1 {\n\t\treturn nil, syscall.EINVAL\n\t}\n\ta := make([]byte, len(s)+1)\n\tcopy(a, s)\n\treturn a, nil\n}\n\n// BytePtrFromString returns a pointer to a NUL-terminated array of\n// bytes containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, syscall.EINVAL).\nfunc BytePtrFromString(s string) (*byte, error) {\n\ta, err := ByteSliceFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any\n// bytes after the NUL removed.\nfunc ByteSliceToString(s []byte) string {\n\tif i := bytes.IndexByte(s, 0); i != -1 {\n\t\ts = s[:i]\n\t}\n\treturn string(s)\n}\n\n// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.\n// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated\n// at a zero byte; if the zero byte is not present, the program may crash.\nfunc BytePtrToString(p *byte) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + 1)\n\t}\n\n\treturn string(unsafe.Slice(p, n))\n}\n\n// Single-word zero for use when we need a valid pointer to 0 bytes.\n// See mksyscall.pl.\nvar _zero uintptr\n\nfunc (ts *Timespec) Unix() (sec int64, nsec int64) {\n\treturn int64(ts.Sec), int64(ts.Nsec)\n}\n\nfunc (tv *Timeval) Unix() (sec int64, nsec int64) {\n\treturn int64(tv.Sec), int64(tv.Usec) * 1000\n}\n\nfunc (ts *Timespec) Nano() int64 {\n\treturn int64(ts.Sec)*1e9 + int64(ts.Nsec)\n}\n\nfunc (tv *Timeval) Nano() int64 {\n\treturn int64(tv.Sec)*1e9 + int64(tv.Usec)*1000\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/syscall_windows.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Windows system calls.\n\npackage windows\n\nimport (\n\terrorspkg \"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n\t\"unicode/utf16\"\n\t\"unsafe\"\n)\n\ntype (\n\tHandle uintptr\n\tHWND   uintptr\n)\n\nconst (\n\tInvalidHandle = ^Handle(0)\n\tInvalidHWND   = ^HWND(0)\n\n\t// Flags for DefineDosDevice.\n\tDDD_EXACT_MATCH_ON_REMOVE = 0x00000004\n\tDDD_NO_BROADCAST_SYSTEM   = 0x00000008\n\tDDD_RAW_TARGET_PATH       = 0x00000001\n\tDDD_REMOVE_DEFINITION     = 0x00000002\n\n\t// Return values for GetDriveType.\n\tDRIVE_UNKNOWN     = 0\n\tDRIVE_NO_ROOT_DIR = 1\n\tDRIVE_REMOVABLE   = 2\n\tDRIVE_FIXED       = 3\n\tDRIVE_REMOTE      = 4\n\tDRIVE_CDROM       = 5\n\tDRIVE_RAMDISK     = 6\n\n\t// File system flags from GetVolumeInformation and GetVolumeInformationByHandle.\n\tFILE_CASE_SENSITIVE_SEARCH        = 0x00000001\n\tFILE_CASE_PRESERVED_NAMES         = 0x00000002\n\tFILE_FILE_COMPRESSION             = 0x00000010\n\tFILE_DAX_VOLUME                   = 0x20000000\n\tFILE_NAMED_STREAMS                = 0x00040000\n\tFILE_PERSISTENT_ACLS              = 0x00000008\n\tFILE_READ_ONLY_VOLUME             = 0x00080000\n\tFILE_SEQUENTIAL_WRITE_ONCE        = 0x00100000\n\tFILE_SUPPORTS_ENCRYPTION          = 0x00020000\n\tFILE_SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000\n\tFILE_SUPPORTS_HARD_LINKS          = 0x00400000\n\tFILE_SUPPORTS_OBJECT_IDS          = 0x00010000\n\tFILE_SUPPORTS_OPEN_BY_FILE_ID     = 0x01000000\n\tFILE_SUPPORTS_REPARSE_POINTS      = 0x00000080\n\tFILE_SUPPORTS_SPARSE_FILES        = 0x00000040\n\tFILE_SUPPORTS_TRANSACTIONS        = 0x00200000\n\tFILE_SUPPORTS_USN_JOURNAL         = 0x02000000\n\tFILE_UNICODE_ON_DISK              = 0x00000004\n\tFILE_VOLUME_IS_COMPRESSED         = 0x00008000\n\tFILE_VOLUME_QUOTAS                = 0x00000020\n\n\t// Flags for LockFileEx.\n\tLOCKFILE_FAIL_IMMEDIATELY = 0x00000001\n\tLOCKFILE_EXCLUSIVE_LOCK   = 0x00000002\n\n\t// Return value of SleepEx and other APC functions\n\tWAIT_IO_COMPLETION = 0x000000C0\n)\n\n// StringToUTF16 is deprecated. Use UTF16FromString instead.\n// If s contains a NUL byte this function panics instead of\n// returning an error.\nfunc StringToUTF16(s string) []uint16 {\n\ta, err := UTF16FromString(s)\n\tif err != nil {\n\t\tpanic(\"windows: string with NUL passed to StringToUTF16\")\n\t}\n\treturn a\n}\n\n// UTF16FromString returns the UTF-16 encoding of the UTF-8 string\n// s, with a terminating NUL added. If s contains a NUL byte at any\n// location, it returns (nil, syscall.EINVAL).\nfunc UTF16FromString(s string) ([]uint16, error) {\n\treturn syscall.UTF16FromString(s)\n}\n\n// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,\n// with a terminating NUL and any bytes after the NUL removed.\nfunc UTF16ToString(s []uint16) string {\n\treturn syscall.UTF16ToString(s)\n}\n\n// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead.\n// If s contains a NUL byte this function panics instead of\n// returning an error.\nfunc StringToUTF16Ptr(s string) *uint16 { return &StringToUTF16(s)[0] }\n\n// UTF16PtrFromString returns pointer to the UTF-16 encoding of\n// the UTF-8 string s, with a terminating NUL added. If s\n// contains a NUL byte at any location, it returns (nil, syscall.EINVAL).\nfunc UTF16PtrFromString(s string) (*uint16, error) {\n\ta, err := UTF16FromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// UTF16PtrToString takes a pointer to a UTF-16 sequence and returns the corresponding UTF-8 encoded string.\n// If the pointer is nil, it returns the empty string. It assumes that the UTF-16 sequence is terminated\n// at a zero word; if the zero word is not present, the program may crash.\nfunc UTF16PtrToString(p *uint16) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*uint16)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + unsafe.Sizeof(*p))\n\t}\n\treturn UTF16ToString(unsafe.Slice(p, n))\n}\n\nfunc Getpagesize() int { return 4096 }\n\n// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention.\n// This is useful when interoperating with Windows code requiring callbacks.\n// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr.\nfunc NewCallback(fn interface{}) uintptr {\n\treturn syscall.NewCallback(fn)\n}\n\n// NewCallbackCDecl converts a Go function to a function pointer conforming to the cdecl calling convention.\n// This is useful when interoperating with Windows code requiring callbacks.\n// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr.\nfunc NewCallbackCDecl(fn interface{}) uintptr {\n\treturn syscall.NewCallbackCDecl(fn)\n}\n\n// windows api calls\n\n//sys\tGetLastError() (lasterr error)\n//sys\tLoadLibrary(libname string) (handle Handle, err error) = LoadLibraryW\n//sys\tLoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) = LoadLibraryExW\n//sys\tFreeLibrary(handle Handle) (err error)\n//sys\tGetProcAddress(module Handle, procname string) (proc uintptr, err error)\n//sys\tGetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) = kernel32.GetModuleFileNameW\n//sys\tGetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) = kernel32.GetModuleHandleExW\n//sys\tSetDefaultDllDirectories(directoryFlags uint32) (err error)\n//sys\tAddDllDirectory(path *uint16) (cookie uintptr, err error) = kernel32.AddDllDirectory\n//sys\tRemoveDllDirectory(cookie uintptr) (err error) = kernel32.RemoveDllDirectory\n//sys\tSetDllDirectory(path string) (err error) = kernel32.SetDllDirectoryW\n//sys\tGetVersion() (ver uint32, err error)\n//sys\tFormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW\n//sys\tExitProcess(exitcode uint32)\n//sys\tIsWow64Process(handle Handle, isWow64 *bool) (err error) = IsWow64Process\n//sys\tIsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) = IsWow64Process2?\n//sys\tCreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW\n//sys\tCreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error)  [failretval==InvalidHandle] = CreateNamedPipeW\n//sys\tConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error)\n//sys\tDisconnectNamedPipe(pipe Handle) (err error)\n//sys   GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error)\n//sys   GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error)\n//sys\tGetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error)\n//sys\tGetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW\n//sys\tSetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState\n//sys\treadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = ReadFile\n//sys\twriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = WriteFile\n//sys\tGetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error)\n//sys\tSetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff]\n//sys\tCloseHandle(handle Handle) (err error)\n//sys\tGetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle]\n//sys\tSetStdHandle(stdhandle uint32, handle Handle) (err error)\n//sys\tfindFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW\n//sys\tfindNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW\n//sys\tFindClose(handle Handle) (err error)\n//sys\tGetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error)\n//sys\tGetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error)\n//sys\tSetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error)\n//sys\tGetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) = GetCurrentDirectoryW\n//sys\tSetCurrentDirectory(path *uint16) (err error) = SetCurrentDirectoryW\n//sys\tCreateDirectory(path *uint16, sa *SecurityAttributes) (err error) = CreateDirectoryW\n//sys\tRemoveDirectory(path *uint16) (err error) = RemoveDirectoryW\n//sys\tDeleteFile(path *uint16) (err error) = DeleteFileW\n//sys\tMoveFile(from *uint16, to *uint16) (err error) = MoveFileW\n//sys\tMoveFileEx(from *uint16, to *uint16, flags uint32) (err error) = MoveFileExW\n//sys\tLockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error)\n//sys\tUnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error)\n//sys\tGetComputerName(buf *uint16, n *uint32) (err error) = GetComputerNameW\n//sys\tGetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW\n//sys\tSetEndOfFile(handle Handle) (err error)\n//sys\tSetFileValidData(handle Handle, validDataLength int64) (err error)\n//sys\tGetSystemTimeAsFileTime(time *Filetime)\n//sys\tGetSystemTimePreciseAsFileTime(time *Filetime)\n//sys\tGetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff]\n//sys\tCreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error)\n//sys\tGetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error)\n//sys\tPostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error)\n//sys\tCancelIo(s Handle) (err error)\n//sys\tCancelIoEx(s Handle, o *Overlapped) (err error)\n//sys\tCreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW\n//sys\tCreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = advapi32.CreateProcessAsUserW\n//sys   initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) = InitializeProcThreadAttributeList\n//sys   deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) = DeleteProcThreadAttributeList\n//sys   updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) = UpdateProcThreadAttribute\n//sys\tOpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error)\n//sys\tShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW\n//sys\tGetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId\n//sys\tLoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) [failretval==0] = user32.LoadKeyboardLayoutW\n//sys\tUnloadKeyboardLayout(hkl Handle) (err error) = user32.UnloadKeyboardLayout\n//sys\tGetKeyboardLayout(tid uint32) (hkl Handle) = user32.GetKeyboardLayout\n//sys\tToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) = user32.ToUnicodeEx\n//sys\tGetShellWindow() (shellWindow HWND) = user32.GetShellWindow\n//sys\tMessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW\n//sys\tExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx\n//sys\tshGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath\n//sys\tTerminateProcess(handle Handle, exitcode uint32) (err error)\n//sys\tGetExitCodeProcess(handle Handle, exitcode *uint32) (err error)\n//sys\tgetStartupInfo(startupInfo *StartupInfo) = GetStartupInfoW\n//sys\tGetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error)\n//sys\tDuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error)\n//sys\tWaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff]\n//sys\twaitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] = WaitForMultipleObjects\n//sys\tGetTempPath(buflen uint32, buf *uint16) (n uint32, err error) = GetTempPathW\n//sys\tCreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error)\n//sys\tGetFileType(filehandle Handle) (n uint32, err error)\n//sys\tCryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) = advapi32.CryptAcquireContextW\n//sys\tCryptReleaseContext(provhandle Handle, flags uint32) (err error) = advapi32.CryptReleaseContext\n//sys\tCryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) = advapi32.CryptGenRandom\n//sys\tGetEnvironmentStrings() (envs *uint16, err error) [failretval==nil] = kernel32.GetEnvironmentStringsW\n//sys\tFreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW\n//sys\tGetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW\n//sys\tSetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW\n//sys\tExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW\n//sys\tCreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) = userenv.CreateEnvironmentBlock\n//sys\tDestroyEnvironmentBlock(block *uint16) (err error) = userenv.DestroyEnvironmentBlock\n//sys\tgetTickCount64() (ms uint64) = kernel32.GetTickCount64\n//sys   GetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error)\n//sys\tSetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error)\n//sys\tGetFileAttributes(name *uint16) (attrs uint32, err error) [failretval==INVALID_FILE_ATTRIBUTES] = kernel32.GetFileAttributesW\n//sys\tSetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW\n//sys\tGetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) = kernel32.GetFileAttributesExW\n//sys\tGetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW\n//sys\tcommandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW\n//sys\tLocalFree(hmem Handle) (handle Handle, err error) [failretval!=0]\n//sys\tLocalAlloc(flags uint32, length uint32) (ptr uintptr, err error)\n//sys\tSetHandleInformation(handle Handle, mask uint32, flags uint32) (err error)\n//sys\tFlushFileBuffers(handle Handle) (err error)\n//sys\tGetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW\n//sys\tGetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW\n//sys\tGetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) = kernel32.GetShortPathNameW\n//sys\tGetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) = kernel32.GetFinalPathNameByHandleW\n//sys\tCreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateFileMappingW\n//sys\tMapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error)\n//sys\tUnmapViewOfFile(addr uintptr) (err error)\n//sys\tFlushViewOfFile(addr uintptr, length uintptr) (err error)\n//sys\tVirtualLock(addr uintptr, length uintptr) (err error)\n//sys\tVirtualUnlock(addr uintptr, length uintptr) (err error)\n//sys\tVirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc\n//sys\tVirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree\n//sys\tVirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect\n//sys\tVirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) = kernel32.VirtualProtectEx\n//sys\tVirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQuery\n//sys\tVirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQueryEx\n//sys\tReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) = kernel32.ReadProcessMemory\n//sys\tWriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) = kernel32.WriteProcessMemory\n//sys\tTransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile\n//sys\tReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW\n//sys\tFindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW\n//sys\tFindNextChangeNotification(handle Handle) (err error)\n//sys\tFindCloseChangeNotification(handle Handle) (err error)\n//sys\tCertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW\n//sys\tCertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) = crypt32.CertOpenStore\n//sys\tCertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore\n//sys\tCertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore\n//sys\tCertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore\n//sys\tCertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore\n//sys\tCertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) = crypt32.CertDuplicateCertificateContext\n//sys\tPFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) = crypt32.PFXImportCertStore\n//sys\tCertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain\n//sys\tCertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain\n//sys\tCertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext\n//sys\tCertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext\n//sys\tCertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy\n//sys\tCertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) = crypt32.CertGetNameStringW\n//sys\tCertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) = crypt32.CertFindExtension\n//sys   CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) [failretval==nil] = crypt32.CertFindCertificateInStore\n//sys   CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) [failretval==nil] = crypt32.CertFindChainInStore\n//sys   CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) = crypt32.CryptAcquireCertificatePrivateKey\n//sys\tCryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) = crypt32.CryptQueryObject\n//sys\tCryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) = crypt32.CryptDecodeObject\n//sys\tCryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptProtectData\n//sys\tCryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptUnprotectData\n//sys\tWinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) = wintrust.WinVerifyTrustEx\n//sys\tRegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW\n//sys\tRegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey\n//sys\tRegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW\n//sys\tRegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW\n//sys\tRegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW\n//sys\tRegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) = advapi32.RegNotifyChangeKeyValue\n//sys\tGetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId\n//sys\tProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) = kernel32.ProcessIdToSessionId\n//sys\tClosePseudoConsole(console Handle) = kernel32.ClosePseudoConsole\n//sys\tcreatePseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) = kernel32.CreatePseudoConsole\n//sys\tGetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode\n//sys\tSetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode\n//sys\tGetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo\n//sys\tsetConsoleCursorPosition(console Handle, position uint32) (err error) = kernel32.SetConsoleCursorPosition\n//sys\tGetConsoleCP() (cp uint32, err error) = kernel32.GetConsoleCP\n//sys\tGetConsoleOutputCP() (cp uint32, err error) = kernel32.GetConsoleOutputCP\n//sys\tSetConsoleCP(cp uint32) (err error) = kernel32.SetConsoleCP\n//sys\tSetConsoleOutputCP(cp uint32) (err error) = kernel32.SetConsoleOutputCP\n//sys\tWriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW\n//sys\tReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW\n//sys\tGetNumberOfConsoleInputEvents(console Handle, numevents *uint32) (err error) = kernel32.GetNumberOfConsoleInputEvents\n//sys\tFlushConsoleInputBuffer(console Handle) (err error) = kernel32.FlushConsoleInputBuffer\n//sys\tresizePseudoConsole(pconsole Handle, size uint32) (hr error) = kernel32.ResizePseudoConsole\n//sys\tCreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot\n//sys\tModule32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32FirstW\n//sys\tModule32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32NextW\n//sys\tProcess32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW\n//sys\tProcess32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW\n//sys\tThread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error)\n//sys\tThread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error)\n//sys\tDeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error)\n// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL.\n//sys\tCreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW\n//sys\tCreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) [failretval&0xff==0] = CreateHardLinkW\n//sys\tGetCurrentThreadId() (id uint32)\n//sys\tCreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateEventW\n//sys\tCreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateEventExW\n//sys\tOpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenEventW\n//sys\tSetEvent(event Handle) (err error) = kernel32.SetEvent\n//sys\tResetEvent(event Handle) (err error) = kernel32.ResetEvent\n//sys\tPulseEvent(event Handle) (err error) = kernel32.PulseEvent\n//sys\tCreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateMutexW\n//sys\tCreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateMutexExW\n//sys\tOpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenMutexW\n//sys\tReleaseMutex(mutex Handle) (err error) = kernel32.ReleaseMutex\n//sys\tSleepEx(milliseconds uint32, alertable bool) (ret uint32) = kernel32.SleepEx\n//sys\tCreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) = kernel32.CreateJobObjectW\n//sys\tAssignProcessToJobObject(job Handle, process Handle) (err error) = kernel32.AssignProcessToJobObject\n//sys\tTerminateJobObject(job Handle, exitCode uint32) (err error) = kernel32.TerminateJobObject\n//sys\tSetErrorMode(mode uint32) (ret uint32) = kernel32.SetErrorMode\n//sys\tResumeThread(thread Handle) (ret uint32, err error) [failretval==0xffffffff] = kernel32.ResumeThread\n//sys\tSetPriorityClass(process Handle, priorityClass uint32) (err error) = kernel32.SetPriorityClass\n//sys\tGetPriorityClass(process Handle) (ret uint32, err error) = kernel32.GetPriorityClass\n//sys\tQueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) = kernel32.QueryInformationJobObject\n//sys\tSetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error)\n//sys\tGenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error)\n//sys\tGetProcessId(process Handle) (id uint32, err error)\n//sys\tQueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) = kernel32.QueryFullProcessImageNameW\n//sys\tOpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error)\n//sys\tSetProcessPriorityBoost(process Handle, disable bool) (err error) = kernel32.SetProcessPriorityBoost\n//sys\tGetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32)\n//sys\tSetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error)\n//sys\tClearCommBreak(handle Handle) (err error)\n//sys\tClearCommError(handle Handle, lpErrors *uint32, lpStat *ComStat) (err error)\n//sys\tEscapeCommFunction(handle Handle, dwFunc uint32) (err error)\n//sys\tGetCommState(handle Handle, lpDCB *DCB) (err error)\n//sys\tGetCommModemStatus(handle Handle, lpModemStat *uint32) (err error)\n//sys\tGetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)\n//sys\tPurgeComm(handle Handle, dwFlags uint32) (err error)\n//sys\tSetCommBreak(handle Handle) (err error)\n//sys\tSetCommMask(handle Handle, dwEvtMask uint32) (err error)\n//sys\tSetCommState(handle Handle, lpDCB *DCB) (err error)\n//sys\tSetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)\n//sys\tSetupComm(handle Handle, dwInQueue uint32, dwOutQueue uint32) (err error)\n//sys\tWaitCommEvent(handle Handle, lpEvtMask *uint32, lpOverlapped *Overlapped) (err error)\n//sys\tGetActiveProcessorCount(groupNumber uint16) (ret uint32)\n//sys\tGetMaximumProcessorCount(groupNumber uint16) (ret uint32)\n//sys\tEnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) = user32.EnumWindows\n//sys\tEnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) = user32.EnumChildWindows\n//sys\tGetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) = user32.GetClassNameW\n//sys\tGetDesktopWindow() (hwnd HWND) = user32.GetDesktopWindow\n//sys\tGetForegroundWindow() (hwnd HWND) = user32.GetForegroundWindow\n//sys\tIsWindow(hwnd HWND) (isWindow bool) = user32.IsWindow\n//sys\tIsWindowUnicode(hwnd HWND) (isUnicode bool) = user32.IsWindowUnicode\n//sys\tIsWindowVisible(hwnd HWND) (isVisible bool) = user32.IsWindowVisible\n//sys\tGetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) = user32.GetGUIThreadInfo\n//sys\tGetLargePageMinimum() (size uintptr)\n\n// Volume Management Functions\n//sys\tDefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW\n//sys\tDeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) = DeleteVolumeMountPointW\n//sys\tFindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeW\n//sys\tFindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeMountPointW\n//sys\tFindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) = FindNextVolumeW\n//sys\tFindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) = FindNextVolumeMountPointW\n//sys\tFindVolumeClose(findVolume Handle) (err error)\n//sys\tFindVolumeMountPointClose(findVolumeMountPoint Handle) (err error)\n//sys\tGetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) = GetDiskFreeSpaceExW\n//sys\tGetDriveType(rootPathName *uint16) (driveType uint32) = GetDriveTypeW\n//sys\tGetLogicalDrives() (drivesBitMask uint32, err error) [failretval==0]\n//sys\tGetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) [failretval==0] = GetLogicalDriveStringsW\n//sys\tGetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationW\n//sys\tGetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationByHandleW\n//sys\tGetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) = GetVolumeNameForVolumeMountPointW\n//sys\tGetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) = GetVolumePathNameW\n//sys\tGetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) = GetVolumePathNamesForVolumeNameW\n//sys\tQueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW\n//sys\tSetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW\n//sys\tSetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW\n//sys\tInitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) = advapi32.InitiateSystemShutdownExW\n//sys\tSetProcessShutdownParameters(level uint32, flags uint32) (err error) = kernel32.SetProcessShutdownParameters\n//sys\tGetProcessShutdownParameters(level *uint32, flags *uint32) (err error) = kernel32.GetProcessShutdownParameters\n//sys\tclsidFromString(lpsz *uint16, pclsid *GUID) (ret error) = ole32.CLSIDFromString\n//sys\tstringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) = ole32.StringFromGUID2\n//sys\tcoCreateGuid(pguid *GUID) (ret error) = ole32.CoCreateGuid\n//sys\tCoTaskMemFree(address unsafe.Pointer) = ole32.CoTaskMemFree\n//sys\tCoInitializeEx(reserved uintptr, coInit uint32) (ret error) = ole32.CoInitializeEx\n//sys\tCoUninitialize() = ole32.CoUninitialize\n//sys\tCoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) = ole32.CoGetObject\n//sys\tgetProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetProcessPreferredUILanguages\n//sys\tgetThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetThreadPreferredUILanguages\n//sys\tgetUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetUserPreferredUILanguages\n//sys\tgetSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetSystemPreferredUILanguages\n//sys\tfindResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) = kernel32.FindResourceW\n//sys\tSizeofResource(module Handle, resInfo Handle) (size uint32, err error) = kernel32.SizeofResource\n//sys\tLoadResource(module Handle, resInfo Handle) (resData Handle, err error) = kernel32.LoadResource\n//sys\tLockResource(resData Handle) (addr uintptr, err error) = kernel32.LockResource\n\n// Version APIs\n//sys\tGetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) = version.GetFileVersionInfoSizeW\n//sys\tGetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) = version.GetFileVersionInfoW\n//sys\tVerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) = version.VerQueryValueW\n\n// Process Status API (PSAPI)\n//sys\tenumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses\n//sys\tEnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) = psapi.EnumProcessModules\n//sys\tEnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) = psapi.EnumProcessModulesEx\n//sys\tGetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) = psapi.GetModuleInformation\n//sys\tGetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) = psapi.GetModuleFileNameExW\n//sys\tGetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) = psapi.GetModuleBaseNameW\n//sys   QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) = psapi.QueryWorkingSetEx\n\n// NT Native APIs\n//sys\trtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb\n//sys\trtlGetVersion(info *OsVersionInfoEx) (ntstatus error) = ntdll.RtlGetVersion\n//sys\trtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) = ntdll.RtlGetNtVersionNumbers\n//sys\tRtlGetCurrentPeb() (peb *PEB) = ntdll.RtlGetCurrentPeb\n//sys\tRtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) = ntdll.RtlInitUnicodeString\n//sys\tRtlInitString(destinationString *NTString, sourceString *byte) = ntdll.RtlInitString\n//sys\tNtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) = ntdll.NtCreateFile\n//sys\tNtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) = ntdll.NtCreateNamedPipeFile\n//sys\tNtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) = ntdll.NtSetInformationFile\n//sys\tRtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToNtPathName_U_WithStatus\n//sys\tRtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToRelativeNtPathName_U_WithStatus\n//sys\tRtlDefaultNpAcl(acl **ACL) (ntstatus error) = ntdll.RtlDefaultNpAcl\n//sys\tNtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQueryInformationProcess\n//sys\tNtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) = ntdll.NtSetInformationProcess\n//sys\tNtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQuerySystemInformation\n//sys\tNtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) = ntdll.NtSetSystemInformation\n//sys\tRtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) = ntdll.RtlAddFunctionTable\n//sys\tRtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) = ntdll.RtlDeleteFunctionTable\n\n// Desktop Window Manager API (Dwmapi)\n//sys\tDwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmGetWindowAttribute\n//sys\tDwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmSetWindowAttribute\n\n// Windows Multimedia API\n//sys TimeBeginPeriod (period uint32) (err error) [failretval != 0] = winmm.timeBeginPeriod\n//sys TimeEndPeriod (period uint32) (err error) [failretval != 0] = winmm.timeEndPeriod\n\n// syscall interface implementation for other packages\n\n// GetCurrentProcess returns the handle for the current process.\n// It is a pseudo handle that does not need to be closed.\n// The returned error is always nil.\n//\n// Deprecated: use CurrentProcess for the same Handle without the nil\n// error.\nfunc GetCurrentProcess() (Handle, error) {\n\treturn CurrentProcess(), nil\n}\n\n// CurrentProcess returns the handle for the current process.\n// It is a pseudo handle that does not need to be closed.\nfunc CurrentProcess() Handle { return Handle(^uintptr(1 - 1)) }\n\n// GetCurrentThread returns the handle for the current thread.\n// It is a pseudo handle that does not need to be closed.\n// The returned error is always nil.\n//\n// Deprecated: use CurrentThread for the same Handle without the nil\n// error.\nfunc GetCurrentThread() (Handle, error) {\n\treturn CurrentThread(), nil\n}\n\n// CurrentThread returns the handle for the current thread.\n// It is a pseudo handle that does not need to be closed.\nfunc CurrentThread() Handle { return Handle(^uintptr(2 - 1)) }\n\n// GetProcAddressByOrdinal retrieves the address of the exported\n// function from module by ordinal.\nfunc GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), ordinal, 0)\n\tproc = uintptr(r0)\n\tif proc == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Exit(code int) { ExitProcess(uint32(code)) }\n\nfunc makeInheritSa() *SecurityAttributes {\n\tvar sa SecurityAttributes\n\tsa.Length = uint32(unsafe.Sizeof(sa))\n\tsa.InheritHandle = 1\n\treturn &sa\n}\n\nfunc Open(path string, mode int, perm uint32) (fd Handle, err error) {\n\tif len(path) == 0 {\n\t\treturn InvalidHandle, ERROR_FILE_NOT_FOUND\n\t}\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn InvalidHandle, err\n\t}\n\tvar access uint32\n\tswitch mode & (O_RDONLY | O_WRONLY | O_RDWR) {\n\tcase O_RDONLY:\n\t\taccess = GENERIC_READ\n\tcase O_WRONLY:\n\t\taccess = GENERIC_WRITE\n\tcase O_RDWR:\n\t\taccess = GENERIC_READ | GENERIC_WRITE\n\t}\n\tif mode&O_CREAT != 0 {\n\t\taccess |= GENERIC_WRITE\n\t}\n\tif mode&O_APPEND != 0 {\n\t\taccess &^= GENERIC_WRITE\n\t\taccess |= FILE_APPEND_DATA\n\t}\n\tsharemode := uint32(FILE_SHARE_READ | FILE_SHARE_WRITE)\n\tvar sa *SecurityAttributes\n\tif mode&O_CLOEXEC == 0 {\n\t\tsa = makeInheritSa()\n\t}\n\tvar createmode uint32\n\tswitch {\n\tcase mode&(O_CREAT|O_EXCL) == (O_CREAT | O_EXCL):\n\t\tcreatemode = CREATE_NEW\n\tcase mode&(O_CREAT|O_TRUNC) == (O_CREAT | O_TRUNC):\n\t\tcreatemode = CREATE_ALWAYS\n\tcase mode&O_CREAT == O_CREAT:\n\t\tcreatemode = OPEN_ALWAYS\n\tcase mode&O_TRUNC == O_TRUNC:\n\t\tcreatemode = TRUNCATE_EXISTING\n\tdefault:\n\t\tcreatemode = OPEN_EXISTING\n\t}\n\tvar attrs uint32 = FILE_ATTRIBUTE_NORMAL\n\tif perm&S_IWRITE == 0 {\n\t\tattrs = FILE_ATTRIBUTE_READONLY\n\t}\n\th, e := CreateFile(pathp, access, sharemode, sa, createmode, attrs, 0)\n\treturn h, e\n}\n\nfunc Read(fd Handle, p []byte) (n int, err error) {\n\tvar done uint32\n\te := ReadFile(fd, p, &done, nil)\n\tif e != nil {\n\t\tif e == ERROR_BROKEN_PIPE {\n\t\t\t// NOTE(brainman): work around ERROR_BROKEN_PIPE is returned on reading EOF from stdin\n\t\t\treturn 0, nil\n\t\t}\n\t\treturn 0, e\n\t}\n\treturn int(done), nil\n}\n\nfunc Write(fd Handle, p []byte) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tvar done uint32\n\te := WriteFile(fd, p, &done, nil)\n\tif e != nil {\n\t\treturn 0, e\n\t}\n\treturn int(done), nil\n}\n\nfunc ReadFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {\n\terr := readFile(fd, p, done, overlapped)\n\tif raceenabled {\n\t\tif *done > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), int(*done))\n\t\t}\n\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t}\n\treturn err\n}\n\nfunc WriteFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\terr := writeFile(fd, p, done, overlapped)\n\tif raceenabled && *done > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), int(*done))\n\t}\n\treturn err\n}\n\nvar ioSync int64\n\nfunc Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) {\n\tvar w uint32\n\tswitch whence {\n\tcase 0:\n\t\tw = FILE_BEGIN\n\tcase 1:\n\t\tw = FILE_CURRENT\n\tcase 2:\n\t\tw = FILE_END\n\t}\n\thi := int32(offset >> 32)\n\tlo := int32(offset)\n\t// use GetFileType to check pipe, pipe can't do seek\n\tft, _ := GetFileType(fd)\n\tif ft == FILE_TYPE_PIPE {\n\t\treturn 0, syscall.EPIPE\n\t}\n\trlo, e := SetFilePointer(fd, lo, &hi, w)\n\tif e != nil {\n\t\treturn 0, e\n\t}\n\treturn int64(hi)<<32 + int64(rlo), nil\n}\n\nfunc Close(fd Handle) (err error) {\n\treturn CloseHandle(fd)\n}\n\nvar (\n\tStdin  = getStdHandle(STD_INPUT_HANDLE)\n\tStdout = getStdHandle(STD_OUTPUT_HANDLE)\n\tStderr = getStdHandle(STD_ERROR_HANDLE)\n)\n\nfunc getStdHandle(stdhandle uint32) (fd Handle) {\n\tr, _ := GetStdHandle(stdhandle)\n\treturn r\n}\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (wd string, err error) {\n\tb := make([]uint16, 300)\n\tn, e := GetCurrentDirectory(uint32(len(b)), &b[0])\n\tif e != nil {\n\t\treturn \"\", e\n\t}\n\treturn string(utf16.Decode(b[0:n])), nil\n}\n\nfunc Chdir(path string) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn SetCurrentDirectory(pathp)\n}\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn CreateDirectory(pathp, nil)\n}\n\nfunc Rmdir(path string) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn RemoveDirectory(pathp)\n}\n\nfunc Unlink(path string) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn DeleteFile(pathp)\n}\n\nfunc Rename(oldpath, newpath string) (err error) {\n\tfrom, err := UTF16PtrFromString(oldpath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tto, err := UTF16PtrFromString(newpath)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING)\n}\n\nfunc ComputerName() (name string, err error) {\n\tvar n uint32 = MAX_COMPUTERNAME_LENGTH + 1\n\tb := make([]uint16, n)\n\te := GetComputerName(&b[0], &n)\n\tif e != nil {\n\t\treturn \"\", e\n\t}\n\treturn string(utf16.Decode(b[0:n])), nil\n}\n\nfunc DurationSinceBoot() time.Duration {\n\treturn time.Duration(getTickCount64()) * time.Millisecond\n}\n\nfunc Ftruncate(fd Handle, length int64) (err error) {\n\ttype _FILE_END_OF_FILE_INFO struct {\n\t\tEndOfFile int64\n\t}\n\tvar info _FILE_END_OF_FILE_INFO\n\tinfo.EndOfFile = length\n\treturn SetFileInformationByHandle(fd, FileEndOfFileInfo, (*byte)(unsafe.Pointer(&info)), uint32(unsafe.Sizeof(info)))\n}\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\tvar ft Filetime\n\tGetSystemTimeAsFileTime(&ft)\n\t*tv = NsecToTimeval(ft.Nanoseconds())\n\treturn nil\n}\n\nfunc Pipe(p []Handle) (err error) {\n\tif len(p) != 2 {\n\t\treturn syscall.EINVAL\n\t}\n\tvar r, w Handle\n\te := CreatePipe(&r, &w, makeInheritSa(), 0)\n\tif e != nil {\n\t\treturn e\n\t}\n\tp[0] = r\n\tp[1] = w\n\treturn nil\n}\n\nfunc Utimes(path string, tv []Timeval) (err error) {\n\tif len(tv) != 2 {\n\t\treturn syscall.EINVAL\n\t}\n\tpathp, e := UTF16PtrFromString(path)\n\tif e != nil {\n\t\treturn e\n\t}\n\th, e := CreateFile(pathp,\n\t\tFILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil,\n\t\tOPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)\n\tif e != nil {\n\t\treturn e\n\t}\n\tdefer CloseHandle(h)\n\ta := NsecToFiletime(tv[0].Nanoseconds())\n\tw := NsecToFiletime(tv[1].Nanoseconds())\n\treturn SetFileTime(h, nil, &a, &w)\n}\n\nfunc UtimesNano(path string, ts []Timespec) (err error) {\n\tif len(ts) != 2 {\n\t\treturn syscall.EINVAL\n\t}\n\tpathp, e := UTF16PtrFromString(path)\n\tif e != nil {\n\t\treturn e\n\t}\n\th, e := CreateFile(pathp,\n\t\tFILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil,\n\t\tOPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)\n\tif e != nil {\n\t\treturn e\n\t}\n\tdefer CloseHandle(h)\n\ta := NsecToFiletime(TimespecToNsec(ts[0]))\n\tw := NsecToFiletime(TimespecToNsec(ts[1]))\n\treturn SetFileTime(h, nil, &a, &w)\n}\n\nfunc Fsync(fd Handle) (err error) {\n\treturn FlushFileBuffers(fd)\n}\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tp, e := UTF16PtrFromString(path)\n\tif e != nil {\n\t\treturn e\n\t}\n\tattrs, e := GetFileAttributes(p)\n\tif e != nil {\n\t\treturn e\n\t}\n\tif mode&S_IWRITE != 0 {\n\t\tattrs &^= FILE_ATTRIBUTE_READONLY\n\t} else {\n\t\tattrs |= FILE_ATTRIBUTE_READONLY\n\t}\n\treturn SetFileAttributes(p, attrs)\n}\n\nfunc LoadGetSystemTimePreciseAsFileTime() error {\n\treturn procGetSystemTimePreciseAsFileTime.Find()\n}\n\nfunc LoadCancelIoEx() error {\n\treturn procCancelIoEx.Find()\n}\n\nfunc LoadSetFileCompletionNotificationModes() error {\n\treturn procSetFileCompletionNotificationModes.Find()\n}\n\nfunc WaitForMultipleObjects(handles []Handle, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {\n\t// Every other win32 array API takes arguments as \"pointer, count\", except for this function. So we\n\t// can't declare it as a usual [] type, because mksyscall will use the opposite order. We therefore\n\t// trivially stub this ourselves.\n\n\tvar handlePtr *Handle\n\tif len(handles) > 0 {\n\t\thandlePtr = &handles[0]\n\t}\n\treturn waitForMultipleObjects(uint32(len(handles)), uintptr(unsafe.Pointer(handlePtr)), waitAll, waitMilliseconds)\n}\n\n// net api calls\n\nconst socket_error = uintptr(^uint32(0))\n\n//sys\tWSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup\n//sys\tWSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup\n//sys\tWSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl\n//sys\tWSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceBeginW\n//sys\tWSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceNextW\n//sys\tWSALookupServiceEnd(handle Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceEnd\n//sys\tsocket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket\n//sys\tsendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) [failretval==socket_error] = ws2_32.sendto\n//sys\trecvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) [failretval==-1] = ws2_32.recvfrom\n//sys\tSetsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) [failretval==socket_error] = ws2_32.setsockopt\n//sys\tGetsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockopt\n//sys\tbind(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.bind\n//sys\tconnect(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.connect\n//sys\tgetsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockname\n//sys\tgetpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getpeername\n//sys\tlisten(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen\n//sys\tshutdown(s Handle, how int32) (err error) [failretval==socket_error] = ws2_32.shutdown\n//sys\tClosesocket(s Handle) (err error) [failretval==socket_error] = ws2_32.closesocket\n//sys\tAcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) = mswsock.AcceptEx\n//sys\tGetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) = mswsock.GetAcceptExSockaddrs\n//sys\tWSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecv\n//sys\tWSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASend\n//sys\tWSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32,  from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom\n//sys\tWSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32,  overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo\n//sys\tWSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.WSASocketW\n//sys\tWSADuplicateSocket(s Handle, processID uint32, info *WSAProtocolInfo) (err error) [failretval!=0] = ws2_32.WSADuplicateSocketW\n//sys\tGetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname\n//sys\tGetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname\n//sys\tNtohs(netshort uint16) (u uint16) = ws2_32.ntohs\n//sys\tGetProtoByName(name string) (p *Protoent, err error) [failretval==nil] = ws2_32.getprotobyname\n//sys\tDnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) = dnsapi.DnsQuery_W\n//sys\tDnsRecordListFree(rl *DNSRecord, freetype uint32) = dnsapi.DnsRecordListFree\n//sys\tDnsNameCompare(name1 *uint16, name2 *uint16) (same bool) = dnsapi.DnsNameCompare_W\n//sys\tGetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) = ws2_32.GetAddrInfoW\n//sys\tFreeAddrInfoW(addrinfo *AddrinfoW) = ws2_32.FreeAddrInfoW\n//sys\tGetIfEntry(pIfRow *MibIfRow) (errcode error) = iphlpapi.GetIfEntry\n//sys\tGetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) = iphlpapi.GetAdaptersInfo\n//sys\tSetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) = kernel32.SetFileCompletionNotificationModes\n//sys\tWSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) [failretval==-1] = ws2_32.WSAEnumProtocolsW\n//sys\tWSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) = ws2_32.WSAGetOverlappedResult\n//sys\tGetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses\n//sys\tGetACP() (acp uint32) = kernel32.GetACP\n//sys\tMultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar\n//sys\tgetBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx\n//sys   GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) = iphlpapi.GetIfEntry2Ex\n//sys   GetIfTable2Ex(level uint32, table **MibIfTable2) (errcode error) = iphlpapi.GetIfTable2Ex\n//sys   GetIpForwardEntry2(row *MibIpForwardRow2) (errcode error) = iphlpapi.GetIpForwardEntry2\n//sys   GetIpForwardTable2(family uint16, table **MibIpForwardTable2) (errcode error) = iphlpapi.GetIpForwardTable2\n//sys   GetIpInterfaceEntry(row *MibIpInterfaceRow) (errcode error) = iphlpapi.GetIpInterfaceEntry\n//sys   GetIpInterfaceTable(family uint16, table **MibIpInterfaceTable) (errcode error) = iphlpapi.GetIpInterfaceTable\n//sys   GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) = iphlpapi.GetUnicastIpAddressEntry\n//sys   GetUnicastIpAddressTable(family uint16, table **MibUnicastIpAddressTable) (errcode error) = iphlpapi.GetUnicastIpAddressTable\n//sys   FreeMibTable(memory unsafe.Pointer) = iphlpapi.FreeMibTable\n//sys   NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyIpInterfaceChange\n//sys   NotifyRouteChange2(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyRouteChange2\n//sys   NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyUnicastIpAddressChange\n//sys   CancelMibChangeNotify2(notificationHandle Handle) (errcode error) = iphlpapi.CancelMibChangeNotify2\n//sys\tIsProcessorFeaturePresent(ProcessorFeature uint32) (ret bool) = kernel32.IsProcessorFeaturePresent\n\n// For testing: clients can set this flag to force\n// creation of IPv6 sockets to return EAFNOSUPPORT.\nvar SocketDisableIPv6 bool\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\n// RawSockaddrInet is a union that contains an IPv4, an IPv6 address, or an address family. See\n// https://learn.microsoft.com/en-us/windows/win32/api/ws2ipdef/ns-ws2ipdef-sockaddr_inet.\n//\n// A [*RawSockaddrInet] may be converted to a [*RawSockaddrInet4] or [*RawSockaddrInet6] using\n// unsafe, depending on the address family.\ntype RawSockaddrInet struct {\n\tFamily uint16\n\tPort   uint16\n\tData   [6]uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [100]int8\n}\n\ntype Sockaddr interface {\n\tsockaddr() (ptr unsafe.Pointer, len int32, err error) // lowercase; only we can define Sockaddrs\n}\n\ntype SockaddrInet4 struct {\n\tPort int\n\tAddr [4]byte\n\traw  RawSockaddrInet4\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil\n}\n\ntype SockaddrInet6 struct {\n\tPort   int\n\tZoneId uint32\n\tAddr   [16]byte\n\traw    RawSockaddrInet6\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [UNIX_PATH_MAX]int8\n}\n\ntype SockaddrUnix struct {\n\tName string\n\traw  RawSockaddrUnix\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n > len(sa.raw.Path) {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tif n == len(sa.raw.Path) && name[0] != '@' {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := int32(2)\n\tif n > 0 {\n\t\tsl += int32(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\ntype RawSockaddrBth struct {\n\tAddressFamily  [2]byte\n\tBtAddr         [8]byte\n\tServiceClassId [16]byte\n\tPort           [4]byte\n}\n\ntype SockaddrBth struct {\n\tBtAddr         uint64\n\tServiceClassId GUID\n\tPort           uint32\n\n\traw RawSockaddrBth\n}\n\nfunc (sa *SockaddrBth) sockaddr() (unsafe.Pointer, int32, error) {\n\tfamily := AF_BTH\n\tsa.raw = RawSockaddrBth{\n\t\tAddressFamily:  *(*[2]byte)(unsafe.Pointer(&family)),\n\t\tBtAddr:         *(*[8]byte)(unsafe.Pointer(&sa.BtAddr)),\n\t\tPort:           *(*[4]byte)(unsafe.Pointer(&sa.Port)),\n\t\tServiceClassId: *(*[16]byte)(unsafe.Pointer(&sa.ServiceClassId)),\n\t}\n\treturn unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil\n}\n\nfunc (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\tif pp.Path[0] == 0 {\n\t\t\t// \"Abstract\" Unix domain socket.\n\t\t\t// Rewrite leading NUL as @ for textual display.\n\t\t\t// (This is the standard convention.)\n\t\t\t// Not friendly to overwrite in place,\n\t\t\t// but the callers below don't care.\n\t\t\tpp.Path[0] = '@'\n\t\t}\n\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Linux semantics for\n\t\t// abstract Unix domain sockets--they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs--but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, syscall.EAFNOSUPPORT\n}\n\nfunc Socket(domain, typ, proto int) (fd Handle, err error) {\n\tif domain == AF_INET6 && SocketDisableIPv6 {\n\t\treturn InvalidHandle, syscall.EAFNOSUPPORT\n\t}\n\treturn socket(int32(domain), int32(typ), int32(proto))\n}\n\nfunc SetsockoptInt(fd Handle, level, opt int, value int) (err error) {\n\tv := int32(value)\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), int32(unsafe.Sizeof(v)))\n}\n\nfunc Bind(fd Handle, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn bind(fd, ptr, n)\n}\n\nfunc Connect(fd Handle, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connect(fd, ptr, n)\n}\n\nfunc GetBestInterfaceEx(sa Sockaddr, pdwBestIfIndex *uint32) (err error) {\n\tptr, _, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn getBestInterfaceEx(ptr, pdwBestIfIndex)\n}\n\nfunc Getsockname(fd Handle) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tl := int32(unsafe.Sizeof(rsa))\n\tif err = getsockname(fd, &rsa, &l); err != nil {\n\t\treturn\n\t}\n\treturn rsa.Sockaddr()\n}\n\nfunc Getpeername(fd Handle) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tl := int32(unsafe.Sizeof(rsa))\n\tif err = getpeername(fd, &rsa, &l); err != nil {\n\t\treturn\n\t}\n\treturn rsa.Sockaddr()\n}\n\nfunc Listen(s Handle, n int) (err error) {\n\treturn listen(s, int32(n))\n}\n\nfunc Shutdown(fd Handle, how int) (err error) {\n\treturn shutdown(fd, int32(how))\n}\n\nfunc WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) {\n\tvar rsa unsafe.Pointer\n\tvar l int32\n\tif to != nil {\n\t\trsa, l, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine)\n}\n\nfunc LoadGetAddrInfo() error {\n\treturn procGetAddrInfoW.Find()\n}\n\nvar connectExFunc struct {\n\tonce sync.Once\n\taddr uintptr\n\terr  error\n}\n\nfunc LoadConnectEx() error {\n\tconnectExFunc.once.Do(func() {\n\t\tvar s Handle\n\t\ts, connectExFunc.err = Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)\n\t\tif connectExFunc.err != nil {\n\t\t\treturn\n\t\t}\n\t\tdefer CloseHandle(s)\n\t\tvar n uint32\n\t\tconnectExFunc.err = WSAIoctl(s,\n\t\t\tSIO_GET_EXTENSION_FUNCTION_POINTER,\n\t\t\t(*byte)(unsafe.Pointer(&WSAID_CONNECTEX)),\n\t\t\tuint32(unsafe.Sizeof(WSAID_CONNECTEX)),\n\t\t\t(*byte)(unsafe.Pointer(&connectExFunc.addr)),\n\t\t\tuint32(unsafe.Sizeof(connectExFunc.addr)),\n\t\t\t&n, nil, 0)\n\t})\n\treturn connectExFunc.err\n}\n\nfunc connectEx(s Handle, name unsafe.Pointer, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = error(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc ConnectEx(fd Handle, sa Sockaddr, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) error {\n\terr := LoadConnectEx()\n\tif err != nil {\n\t\treturn errorspkg.New(\"failed to find ConnectEx: \" + err.Error())\n\t}\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connectEx(fd, ptr, n, sendBuf, sendDataLen, bytesSent, overlapped)\n}\n\nvar sendRecvMsgFunc struct {\n\tonce     sync.Once\n\tsendAddr uintptr\n\trecvAddr uintptr\n\terr      error\n}\n\nfunc loadWSASendRecvMsg() error {\n\tsendRecvMsgFunc.once.Do(func() {\n\t\tvar s Handle\n\t\ts, sendRecvMsgFunc.err = Socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)\n\t\tif sendRecvMsgFunc.err != nil {\n\t\t\treturn\n\t\t}\n\t\tdefer CloseHandle(s)\n\t\tvar n uint32\n\t\tsendRecvMsgFunc.err = WSAIoctl(s,\n\t\t\tSIO_GET_EXTENSION_FUNCTION_POINTER,\n\t\t\t(*byte)(unsafe.Pointer(&WSAID_WSARECVMSG)),\n\t\t\tuint32(unsafe.Sizeof(WSAID_WSARECVMSG)),\n\t\t\t(*byte)(unsafe.Pointer(&sendRecvMsgFunc.recvAddr)),\n\t\t\tuint32(unsafe.Sizeof(sendRecvMsgFunc.recvAddr)),\n\t\t\t&n, nil, 0)\n\t\tif sendRecvMsgFunc.err != nil {\n\t\t\treturn\n\t\t}\n\t\tsendRecvMsgFunc.err = WSAIoctl(s,\n\t\t\tSIO_GET_EXTENSION_FUNCTION_POINTER,\n\t\t\t(*byte)(unsafe.Pointer(&WSAID_WSASENDMSG)),\n\t\t\tuint32(unsafe.Sizeof(WSAID_WSASENDMSG)),\n\t\t\t(*byte)(unsafe.Pointer(&sendRecvMsgFunc.sendAddr)),\n\t\t\tuint32(unsafe.Sizeof(sendRecvMsgFunc.sendAddr)),\n\t\t\t&n, nil, 0)\n\t})\n\treturn sendRecvMsgFunc.err\n}\n\nfunc WSASendMsg(fd Handle, msg *WSAMsg, flags uint32, bytesSent *uint32, overlapped *Overlapped, croutine *byte) error {\n\terr := loadWSASendRecvMsg()\n\tif err != nil {\n\t\treturn err\n\t}\n\tr1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.sendAddr, 6, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(flags), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn err\n}\n\nfunc WSARecvMsg(fd Handle, msg *WSAMsg, bytesReceived *uint32, overlapped *Overlapped, croutine *byte) error {\n\terr := loadWSASendRecvMsg()\n\tif err != nil {\n\t\treturn err\n\t}\n\tr1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.recvAddr, 5, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(bytesReceived)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0)\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn err\n}\n\n// Invented structures to support what package os expects.\ntype Rusage struct {\n\tCreationTime Filetime\n\tExitTime     Filetime\n\tKernelTime   Filetime\n\tUserTime     Filetime\n}\n\ntype WaitStatus struct {\n\tExitCode uint32\n}\n\nfunc (w WaitStatus) Exited() bool { return true }\n\nfunc (w WaitStatus) ExitStatus() int { return int(w.ExitCode) }\n\nfunc (w WaitStatus) Signal() Signal { return -1 }\n\nfunc (w WaitStatus) CoreDump() bool { return false }\n\nfunc (w WaitStatus) Stopped() bool { return false }\n\nfunc (w WaitStatus) Continued() bool { return false }\n\nfunc (w WaitStatus) StopSignal() Signal { return -1 }\n\nfunc (w WaitStatus) Signaled() bool { return false }\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n// Timespec is an invented structure on Windows, but here for\n// consistency with the corresponding package for other operating systems.\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\nfunc TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }\n\nfunc NsecToTimespec(nsec int64) (ts Timespec) {\n\tts.Sec = nsec / 1e9\n\tts.Nsec = nsec % 1e9\n\treturn\n}\n\n// TODO(brainman): fix all needed for net\n\nfunc Accept(fd Handle) (nfd Handle, sa Sockaddr, err error) { return 0, nil, syscall.EWINDOWS }\n\nfunc Recvfrom(fd Handle, p []byte, flags int) (n int, from Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tl := int32(unsafe.Sizeof(rsa))\n\tn32, err := recvfrom(fd, p, int32(flags), &rsa, &l)\n\tn = int(n32)\n\tif err != nil {\n\t\treturn\n\t}\n\tfrom, err = rsa.Sockaddr()\n\treturn\n}\n\nfunc Sendto(fd Handle, p []byte, flags int, to Sockaddr) (err error) {\n\tptr, l, err := to.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn sendto(fd, p, int32(flags), ptr, l)\n}\n\nfunc SetsockoptTimeval(fd Handle, level, opt int, tv *Timeval) (err error) { return syscall.EWINDOWS }\n\n// The Linger struct is wrong but we only noticed after Go 1.\n// sysLinger is the real system call structure.\n\n// BUG(brainman): The definition of Linger is not appropriate for direct use\n// with Setsockopt and Getsockopt.\n// Use SetsockoptLinger instead.\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype sysLinger struct {\n\tOnoff  uint16\n\tLinger uint16\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\nfunc GetsockoptInt(fd Handle, level, opt int) (int, error) {\n\tv := int32(0)\n\tl := int32(unsafe.Sizeof(v))\n\terr := Getsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), &l)\n\treturn int(v), err\n}\n\nfunc SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) {\n\tsys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)}\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&sys)), int32(unsafe.Sizeof(sys)))\n}\n\nfunc SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) {\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4)\n}\n\nfunc SetsockoptIPMreq(fd Handle, level, opt int, mreq *IPMreq) (err error) {\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(mreq)), int32(unsafe.Sizeof(*mreq)))\n}\n\nfunc SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) {\n\treturn syscall.EWINDOWS\n}\n\nfunc EnumProcesses(processIds []uint32, bytesReturned *uint32) error {\n\t// EnumProcesses syscall expects the size parameter to be in bytes, but the code generated with mksyscall uses\n\t// the length of the processIds slice instead. Hence, this wrapper function is added to fix the discrepancy.\n\tvar p *uint32\n\tif len(processIds) > 0 {\n\t\tp = &processIds[0]\n\t}\n\tsize := uint32(len(processIds) * 4)\n\treturn enumProcesses(p, size, bytesReturned)\n}\n\nfunc Getpid() (pid int) { return int(GetCurrentProcessId()) }\n\nfunc FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) {\n\t// NOTE(rsc): The Win32finddata struct is wrong for the system call:\n\t// the two paths are each one uint16 short. Use the correct struct,\n\t// a win32finddata1, and then copy the results out.\n\t// There is no loss of expressivity here, because the final\n\t// uint16, if it is used, is supposed to be a NUL, and Go doesn't need that.\n\t// For Go 1.1, we might avoid the allocation of win32finddata1 here\n\t// by adding a final Bug [2]uint16 field to the struct and then\n\t// adjusting the fields in the result directly.\n\tvar data1 win32finddata1\n\thandle, err = findFirstFile1(name, &data1)\n\tif err == nil {\n\t\tcopyFindData(data, &data1)\n\t}\n\treturn\n}\n\nfunc FindNextFile(handle Handle, data *Win32finddata) (err error) {\n\tvar data1 win32finddata1\n\terr = findNextFile1(handle, &data1)\n\tif err == nil {\n\t\tcopyFindData(data, &data1)\n\t}\n\treturn\n}\n\nfunc getProcessEntry(pid int) (*ProcessEntry32, error) {\n\tsnapshot, err := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer CloseHandle(snapshot)\n\tvar procEntry ProcessEntry32\n\tprocEntry.Size = uint32(unsafe.Sizeof(procEntry))\n\tif err = Process32First(snapshot, &procEntry); err != nil {\n\t\treturn nil, err\n\t}\n\tfor {\n\t\tif procEntry.ProcessID == uint32(pid) {\n\t\t\treturn &procEntry, nil\n\t\t}\n\t\terr = Process32Next(snapshot, &procEntry)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n}\n\nfunc Getppid() (ppid int) {\n\tpe, err := getProcessEntry(Getpid())\n\tif err != nil {\n\t\treturn -1\n\t}\n\treturn int(pe.ParentProcessID)\n}\n\n// TODO(brainman): fix all needed for os\nfunc Fchdir(fd Handle) (err error)             { return syscall.EWINDOWS }\nfunc Link(oldpath, newpath string) (err error) { return syscall.EWINDOWS }\nfunc Symlink(path, link string) (err error)    { return syscall.EWINDOWS }\n\nfunc Fchmod(fd Handle, mode uint32) (err error)        { return syscall.EWINDOWS }\nfunc Chown(path string, uid int, gid int) (err error)  { return syscall.EWINDOWS }\nfunc Lchown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS }\nfunc Fchown(fd Handle, uid int, gid int) (err error)   { return syscall.EWINDOWS }\n\nfunc Getuid() (uid int)                  { return -1 }\nfunc Geteuid() (euid int)                { return -1 }\nfunc Getgid() (gid int)                  { return -1 }\nfunc Getegid() (egid int)                { return -1 }\nfunc Getgroups() (gids []int, err error) { return nil, syscall.EWINDOWS }\n\nfunc LoadCreateSymbolicLink() error {\n\treturn procCreateSymbolicLinkW.Find()\n}\n\n// Readlink returns the destination of the named symbolic link.\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tfd, err := CreateFile(StringToUTF16Ptr(path), GENERIC_READ, 0, nil, OPEN_EXISTING,\n\t\tFILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, 0)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\tdefer CloseHandle(fd)\n\n\trdbbuf := make([]byte, MAXIMUM_REPARSE_DATA_BUFFER_SIZE)\n\tvar bytesReturned uint32\n\terr = DeviceIoControl(fd, FSCTL_GET_REPARSE_POINT, nil, 0, &rdbbuf[0], uint32(len(rdbbuf)), &bytesReturned, nil)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\trdb := (*reparseDataBuffer)(unsafe.Pointer(&rdbbuf[0]))\n\tvar s string\n\tswitch rdb.ReparseTag {\n\tcase IO_REPARSE_TAG_SYMLINK:\n\t\tdata := (*symbolicLinkReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer))\n\t\tp := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0]))\n\t\ts = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2])\n\tcase IO_REPARSE_TAG_MOUNT_POINT:\n\t\tdata := (*mountPointReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer))\n\t\tp := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0]))\n\t\ts = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2])\n\tdefault:\n\t\t// the path is not a symlink or junction but another type of reparse\n\t\t// point\n\t\treturn -1, syscall.ENOENT\n\t}\n\tn = copy(buf, []byte(s))\n\n\treturn n, nil\n}\n\n// GUIDFromString parses a string in the form of\n// \"{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\" into a GUID.\nfunc GUIDFromString(str string) (GUID, error) {\n\tguid := GUID{}\n\tstr16, err := syscall.UTF16PtrFromString(str)\n\tif err != nil {\n\t\treturn guid, err\n\t}\n\terr = clsidFromString(str16, &guid)\n\tif err != nil {\n\t\treturn guid, err\n\t}\n\treturn guid, nil\n}\n\n// GenerateGUID creates a new random GUID.\nfunc GenerateGUID() (GUID, error) {\n\tguid := GUID{}\n\terr := coCreateGuid(&guid)\n\tif err != nil {\n\t\treturn guid, err\n\t}\n\treturn guid, nil\n}\n\n// String returns the canonical string form of the GUID,\n// in the form of \"{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\".\nfunc (guid GUID) String() string {\n\tvar str [100]uint16\n\tchars := stringFromGUID2(&guid, &str[0], int32(len(str)))\n\tif chars <= 1 {\n\t\treturn \"\"\n\t}\n\treturn string(utf16.Decode(str[:chars-1]))\n}\n\n// KnownFolderPath returns a well-known folder path for the current user, specified by one of\n// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag.\nfunc KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) {\n\treturn Token(0).KnownFolderPath(folderID, flags)\n}\n\n// KnownFolderPath returns a well-known folder path for the user token, specified by one of\n// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag.\nfunc (t Token) KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) {\n\tvar p *uint16\n\terr := shGetKnownFolderPath(folderID, flags, t, &p)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer CoTaskMemFree(unsafe.Pointer(p))\n\treturn UTF16PtrToString(p), nil\n}\n\n// RtlGetVersion returns the version of the underlying operating system, ignoring\n// manifest semantics but is affected by the application compatibility layer.\nfunc RtlGetVersion() *OsVersionInfoEx {\n\tinfo := &OsVersionInfoEx{}\n\tinfo.osVersionInfoSize = uint32(unsafe.Sizeof(*info))\n\t// According to documentation, this function always succeeds.\n\t// The function doesn't even check the validity of the\n\t// osVersionInfoSize member. Disassembling ntdll.dll indicates\n\t// that the documentation is indeed correct about that.\n\t_ = rtlGetVersion(info)\n\treturn info\n}\n\n// RtlGetNtVersionNumbers returns the version of the underlying operating system,\n// ignoring manifest semantics and the application compatibility layer.\nfunc RtlGetNtVersionNumbers() (majorVersion, minorVersion, buildNumber uint32) {\n\trtlGetNtVersionNumbers(&majorVersion, &minorVersion, &buildNumber)\n\tbuildNumber &= 0xffff\n\treturn\n}\n\n// GetProcessPreferredUILanguages retrieves the process preferred UI languages.\nfunc GetProcessPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getProcessPreferredUILanguages)\n}\n\n// GetThreadPreferredUILanguages retrieves the thread preferred UI languages for the current thread.\nfunc GetThreadPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getThreadPreferredUILanguages)\n}\n\n// GetUserPreferredUILanguages retrieves information about the user preferred UI languages.\nfunc GetUserPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getUserPreferredUILanguages)\n}\n\n// GetSystemPreferredUILanguages retrieves the system preferred UI languages.\nfunc GetSystemPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getSystemPreferredUILanguages)\n}\n\nfunc getUILanguages(flags uint32, f func(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) error) ([]string, error) {\n\tsize := uint32(128)\n\tfor {\n\t\tvar numLanguages uint32\n\t\tbuf := make([]uint16, size)\n\t\terr := f(flags, &numLanguages, &buf[0], &size)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tbuf = buf[:size]\n\t\tif numLanguages == 0 || len(buf) == 0 { // GetProcessPreferredUILanguages may return numLanguages==0 with \"\\0\\0\"\n\t\t\treturn []string{}, nil\n\t\t}\n\t\tif buf[len(buf)-1] == 0 {\n\t\t\tbuf = buf[:len(buf)-1] // remove terminating null\n\t\t}\n\t\tlanguages := make([]string, 0, numLanguages)\n\t\tfrom := 0\n\t\tfor i, c := range buf {\n\t\t\tif c == 0 {\n\t\t\t\tlanguages = append(languages, string(utf16.Decode(buf[from:i])))\n\t\t\t\tfrom = i + 1\n\t\t\t}\n\t\t}\n\t\treturn languages, nil\n\t}\n}\n\nfunc SetConsoleCursorPosition(console Handle, position Coord) error {\n\treturn setConsoleCursorPosition(console, *((*uint32)(unsafe.Pointer(&position))))\n}\n\nfunc GetStartupInfo(startupInfo *StartupInfo) error {\n\tgetStartupInfo(startupInfo)\n\treturn nil\n}\n\nfunc (s NTStatus) Errno() syscall.Errno {\n\treturn rtlNtStatusToDosErrorNoTeb(s)\n}\n\nfunc langID(pri, sub uint16) uint32 { return uint32(sub)<<10 | uint32(pri) }\n\nfunc (s NTStatus) Error() string {\n\tb := make([]uint16, 300)\n\tn, err := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_ARGUMENT_ARRAY, modntdll.Handle(), uint32(s), langID(LANG_ENGLISH, SUBLANG_ENGLISH_US), b, nil)\n\tif err != nil {\n\t\treturn fmt.Sprintf(\"NTSTATUS 0x%08x\", uint32(s))\n\t}\n\t// trim terminating \\r and \\n\n\tfor ; n > 0 && (b[n-1] == '\\n' || b[n-1] == '\\r'); n-- {\n\t}\n\treturn string(utf16.Decode(b[:n]))\n}\n\n// NewNTUnicodeString returns a new NTUnicodeString structure for use with native\n// NT APIs that work over the NTUnicodeString type. Note that most Windows APIs\n// do not use NTUnicodeString, and instead UTF16PtrFromString should be used for\n// the more common *uint16 string type.\nfunc NewNTUnicodeString(s string) (*NTUnicodeString, error) {\n\ts16, err := UTF16FromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tn := len(s16) * 2\n\tif n > (1<<16)-1 {\n\t\treturn nil, syscall.EINVAL\n\t}\n\treturn &NTUnicodeString{\n\t\tLength:        uint16(n) - 2, // subtract 2 bytes for the NULL terminator\n\t\tMaximumLength: uint16(n),\n\t\tBuffer:        &s16[0],\n\t}, nil\n}\n\n// Slice returns a uint16 slice that aliases the data in the NTUnicodeString.\nfunc (s *NTUnicodeString) Slice() []uint16 {\n\t// Note: this rounds the length down, if it happens\n\t// to (incorrectly) be odd. Probably safer than rounding up.\n\treturn unsafe.Slice(s.Buffer, s.MaximumLength/2)[:s.Length/2]\n}\n\nfunc (s *NTUnicodeString) String() string {\n\treturn UTF16ToString(s.Slice())\n}\n\n// NewNTString returns a new NTString structure for use with native\n// NT APIs that work over the NTString type. Note that most Windows APIs\n// do not use NTString, and instead UTF16PtrFromString should be used for\n// the more common *uint16 string type.\nfunc NewNTString(s string) (*NTString, error) {\n\tvar nts NTString\n\ts8, err := BytePtrFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tRtlInitString(&nts, s8)\n\treturn &nts, nil\n}\n\n// Slice returns a byte slice that aliases the data in the NTString.\nfunc (s *NTString) Slice() []byte {\n\tslice := unsafe.Slice(s.Buffer, s.MaximumLength)\n\treturn slice[:s.Length]\n}\n\nfunc (s *NTString) String() string {\n\treturn ByteSliceToString(s.Slice())\n}\n\n// FindResource resolves a resource of the given name and resource type.\nfunc FindResource(module Handle, name, resType ResourceIDOrString) (Handle, error) {\n\tvar namePtr, resTypePtr uintptr\n\tvar name16, resType16 *uint16\n\tvar err error\n\tresolvePtr := func(i interface{}, keep **uint16) (uintptr, error) {\n\t\tswitch v := i.(type) {\n\t\tcase string:\n\t\t\t*keep, err = UTF16PtrFromString(v)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\treturn uintptr(unsafe.Pointer(*keep)), nil\n\t\tcase ResourceID:\n\t\t\treturn uintptr(v), nil\n\t\t}\n\t\treturn 0, errorspkg.New(\"parameter must be a ResourceID or a string\")\n\t}\n\tnamePtr, err = resolvePtr(name, &name16)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tresTypePtr, err = resolvePtr(resType, &resType16)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tresInfo, err := findResource(module, namePtr, resTypePtr)\n\truntime.KeepAlive(name16)\n\truntime.KeepAlive(resType16)\n\treturn resInfo, err\n}\n\nfunc LoadResourceData(module, resInfo Handle) (data []byte, err error) {\n\tsize, err := SizeofResource(module, resInfo)\n\tif err != nil {\n\t\treturn\n\t}\n\tresData, err := LoadResource(module, resInfo)\n\tif err != nil {\n\t\treturn\n\t}\n\tptr, err := LockResource(resData)\n\tif err != nil {\n\t\treturn\n\t}\n\tdata = unsafe.Slice((*byte)(unsafe.Pointer(ptr)), size)\n\treturn\n}\n\n// PSAPI_WORKING_SET_EX_BLOCK contains extended working set information for a page.\ntype PSAPI_WORKING_SET_EX_BLOCK uint64\n\n// Valid returns the validity of this page.\n// If this bit is 1, the subsequent members are valid; otherwise they should be ignored.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Valid() bool {\n\treturn (b & 1) == 1\n}\n\n// ShareCount is the number of processes that share this page. The maximum value of this member is 7.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) ShareCount() uint64 {\n\treturn b.intField(1, 3)\n}\n\n// Win32Protection is the memory protection attributes of the page. For a list of values, see\n// https://docs.microsoft.com/en-us/windows/win32/memory/memory-protection-constants\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Win32Protection() uint64 {\n\treturn b.intField(4, 11)\n}\n\n// Shared returns the shared status of this page.\n// If this bit is 1, the page can be shared.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Shared() bool {\n\treturn (b & (1 << 15)) == 1\n}\n\n// Node is the NUMA node. The maximum value of this member is 63.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Node() uint64 {\n\treturn b.intField(16, 6)\n}\n\n// Locked returns the locked status of this page.\n// If this bit is 1, the virtual page is locked in physical memory.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Locked() bool {\n\treturn (b & (1 << 22)) == 1\n}\n\n// LargePage returns the large page status of this page.\n// If this bit is 1, the page is a large page.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) LargePage() bool {\n\treturn (b & (1 << 23)) == 1\n}\n\n// Bad returns the bad status of this page.\n// If this bit is 1, the page is has been reported as bad.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Bad() bool {\n\treturn (b & (1 << 31)) == 1\n}\n\n// intField extracts an integer field in the PSAPI_WORKING_SET_EX_BLOCK union.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) intField(start, length int) uint64 {\n\tvar mask PSAPI_WORKING_SET_EX_BLOCK\n\tfor pos := start; pos < start+length; pos++ {\n\t\tmask |= (1 << pos)\n\t}\n\n\tmasked := b & mask\n\treturn uint64(masked >> start)\n}\n\n// PSAPI_WORKING_SET_EX_INFORMATION contains extended working set information for a process.\ntype PSAPI_WORKING_SET_EX_INFORMATION struct {\n\t// The virtual address.\n\tVirtualAddress Pointer\n\t// A PSAPI_WORKING_SET_EX_BLOCK union that indicates the attributes of the page at VirtualAddress.\n\tVirtualAttributes PSAPI_WORKING_SET_EX_BLOCK\n}\n\n// CreatePseudoConsole creates a windows pseudo console.\nfunc CreatePseudoConsole(size Coord, in Handle, out Handle, flags uint32, pconsole *Handle) error {\n\t// We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only\n\t// accept arguments that can be casted to uintptr, and Coord can't.\n\treturn createPseudoConsole(*((*uint32)(unsafe.Pointer(&size))), in, out, flags, pconsole)\n}\n\n// ResizePseudoConsole resizes the internal buffers of the pseudo console to the width and height specified in `size`.\nfunc ResizePseudoConsole(pconsole Handle, size Coord) error {\n\t// We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only\n\t// accept arguments that can be casted to uintptr, and Coord can't.\n\treturn resizePseudoConsole(pconsole, *((*uint32)(unsafe.Pointer(&size))))\n}\n\n// DCB constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/ns-winbase-dcb.\nconst (\n\tCBR_110    = 110\n\tCBR_300    = 300\n\tCBR_600    = 600\n\tCBR_1200   = 1200\n\tCBR_2400   = 2400\n\tCBR_4800   = 4800\n\tCBR_9600   = 9600\n\tCBR_14400  = 14400\n\tCBR_19200  = 19200\n\tCBR_38400  = 38400\n\tCBR_57600  = 57600\n\tCBR_115200 = 115200\n\tCBR_128000 = 128000\n\tCBR_256000 = 256000\n\n\tDTR_CONTROL_DISABLE   = 0x00000000\n\tDTR_CONTROL_ENABLE    = 0x00000010\n\tDTR_CONTROL_HANDSHAKE = 0x00000020\n\n\tRTS_CONTROL_DISABLE   = 0x00000000\n\tRTS_CONTROL_ENABLE    = 0x00001000\n\tRTS_CONTROL_HANDSHAKE = 0x00002000\n\tRTS_CONTROL_TOGGLE    = 0x00003000\n\n\tNOPARITY    = 0\n\tODDPARITY   = 1\n\tEVENPARITY  = 2\n\tMARKPARITY  = 3\n\tSPACEPARITY = 4\n\n\tONESTOPBIT   = 0\n\tONE5STOPBITS = 1\n\tTWOSTOPBITS  = 2\n)\n\n// EscapeCommFunction constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-escapecommfunction.\nconst (\n\tSETXOFF  = 1\n\tSETXON   = 2\n\tSETRTS   = 3\n\tCLRRTS   = 4\n\tSETDTR   = 5\n\tCLRDTR   = 6\n\tSETBREAK = 8\n\tCLRBREAK = 9\n)\n\n// PurgeComm constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-purgecomm.\nconst (\n\tPURGE_TXABORT = 0x0001\n\tPURGE_RXABORT = 0x0002\n\tPURGE_TXCLEAR = 0x0004\n\tPURGE_RXCLEAR = 0x0008\n)\n\n// SetCommMask constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setcommmask.\nconst (\n\tEV_RXCHAR  = 0x0001\n\tEV_RXFLAG  = 0x0002\n\tEV_TXEMPTY = 0x0004\n\tEV_CTS     = 0x0008\n\tEV_DSR     = 0x0010\n\tEV_RLSD    = 0x0020\n\tEV_BREAK   = 0x0040\n\tEV_ERR     = 0x0080\n\tEV_RING    = 0x0100\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"net\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// NTStatus corresponds with NTSTATUS, error values returned by ntdll.dll and\n// other native functions.\ntype NTStatus uint32\n\nconst (\n\t// Invented values to support what package os expects.\n\tO_RDONLY   = 0x00000\n\tO_WRONLY   = 0x00001\n\tO_RDWR     = 0x00002\n\tO_CREAT    = 0x00040\n\tO_EXCL     = 0x00080\n\tO_NOCTTY   = 0x00100\n\tO_TRUNC    = 0x00200\n\tO_NONBLOCK = 0x00800\n\tO_APPEND   = 0x00400\n\tO_SYNC     = 0x01000\n\tO_ASYNC    = 0x02000\n\tO_CLOEXEC  = 0x80000\n)\n\nconst (\n\t// More invented values for signals\n\tSIGHUP  = Signal(0x1)\n\tSIGINT  = Signal(0x2)\n\tSIGQUIT = Signal(0x3)\n\tSIGILL  = Signal(0x4)\n\tSIGTRAP = Signal(0x5)\n\tSIGABRT = Signal(0x6)\n\tSIGBUS  = Signal(0x7)\n\tSIGFPE  = Signal(0x8)\n\tSIGKILL = Signal(0x9)\n\tSIGSEGV = Signal(0xb)\n\tSIGPIPE = Signal(0xd)\n\tSIGALRM = Signal(0xe)\n\tSIGTERM = Signal(0xf)\n)\n\nvar signals = [...]string{\n\t1:  \"hangup\",\n\t2:  \"interrupt\",\n\t3:  \"quit\",\n\t4:  \"illegal instruction\",\n\t5:  \"trace/breakpoint trap\",\n\t6:  \"aborted\",\n\t7:  \"bus error\",\n\t8:  \"floating point exception\",\n\t9:  \"killed\",\n\t10: \"user defined signal 1\",\n\t11: \"segmentation fault\",\n\t12: \"user defined signal 2\",\n\t13: \"broken pipe\",\n\t14: \"alarm clock\",\n\t15: \"terminated\",\n}\n\n// File flags for [os.OpenFile]. The O_ prefix is used to indicate\n// that these flags are specific to the OpenFile function.\nconst (\n\tO_FILE_FLAG_OPEN_NO_RECALL     = FILE_FLAG_OPEN_NO_RECALL\n\tO_FILE_FLAG_OPEN_REPARSE_POINT = FILE_FLAG_OPEN_REPARSE_POINT\n\tO_FILE_FLAG_SESSION_AWARE      = FILE_FLAG_SESSION_AWARE\n\tO_FILE_FLAG_POSIX_SEMANTICS    = FILE_FLAG_POSIX_SEMANTICS\n\tO_FILE_FLAG_BACKUP_SEMANTICS   = FILE_FLAG_BACKUP_SEMANTICS\n\tO_FILE_FLAG_DELETE_ON_CLOSE    = FILE_FLAG_DELETE_ON_CLOSE\n\tO_FILE_FLAG_SEQUENTIAL_SCAN    = FILE_FLAG_SEQUENTIAL_SCAN\n\tO_FILE_FLAG_RANDOM_ACCESS      = FILE_FLAG_RANDOM_ACCESS\n\tO_FILE_FLAG_NO_BUFFERING       = FILE_FLAG_NO_BUFFERING\n\tO_FILE_FLAG_OVERLAPPED         = FILE_FLAG_OVERLAPPED\n\tO_FILE_FLAG_WRITE_THROUGH      = FILE_FLAG_WRITE_THROUGH\n)\n\nconst (\n\tFILE_READ_DATA        = 0x00000001\n\tFILE_READ_ATTRIBUTES  = 0x00000080\n\tFILE_READ_EA          = 0x00000008\n\tFILE_WRITE_DATA       = 0x00000002\n\tFILE_WRITE_ATTRIBUTES = 0x00000100\n\tFILE_WRITE_EA         = 0x00000010\n\tFILE_APPEND_DATA      = 0x00000004\n\tFILE_EXECUTE          = 0x00000020\n\n\tFILE_GENERIC_READ    = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE\n\tFILE_GENERIC_WRITE   = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE\n\tFILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE\n\n\tFILE_LIST_DIRECTORY = 0x00000001\n\tFILE_TRAVERSE       = 0x00000020\n\n\tFILE_SHARE_READ   = 0x00000001\n\tFILE_SHARE_WRITE  = 0x00000002\n\tFILE_SHARE_DELETE = 0x00000004\n\n\tFILE_ATTRIBUTE_READONLY              = 0x00000001\n\tFILE_ATTRIBUTE_HIDDEN                = 0x00000002\n\tFILE_ATTRIBUTE_SYSTEM                = 0x00000004\n\tFILE_ATTRIBUTE_DIRECTORY             = 0x00000010\n\tFILE_ATTRIBUTE_ARCHIVE               = 0x00000020\n\tFILE_ATTRIBUTE_DEVICE                = 0x00000040\n\tFILE_ATTRIBUTE_NORMAL                = 0x00000080\n\tFILE_ATTRIBUTE_TEMPORARY             = 0x00000100\n\tFILE_ATTRIBUTE_SPARSE_FILE           = 0x00000200\n\tFILE_ATTRIBUTE_REPARSE_POINT         = 0x00000400\n\tFILE_ATTRIBUTE_COMPRESSED            = 0x00000800\n\tFILE_ATTRIBUTE_OFFLINE               = 0x00001000\n\tFILE_ATTRIBUTE_NOT_CONTENT_INDEXED   = 0x00002000\n\tFILE_ATTRIBUTE_ENCRYPTED             = 0x00004000\n\tFILE_ATTRIBUTE_INTEGRITY_STREAM      = 0x00008000\n\tFILE_ATTRIBUTE_VIRTUAL               = 0x00010000\n\tFILE_ATTRIBUTE_NO_SCRUB_DATA         = 0x00020000\n\tFILE_ATTRIBUTE_RECALL_ON_OPEN        = 0x00040000\n\tFILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000\n\n\tINVALID_FILE_ATTRIBUTES = 0xffffffff\n\n\tCREATE_NEW        = 1\n\tCREATE_ALWAYS     = 2\n\tOPEN_EXISTING     = 3\n\tOPEN_ALWAYS       = 4\n\tTRUNCATE_EXISTING = 5\n\n\tFILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000\n\tFILE_FLAG_FIRST_PIPE_INSTANCE   = 0x00080000\n\tFILE_FLAG_OPEN_NO_RECALL        = 0x00100000\n\tFILE_FLAG_OPEN_REPARSE_POINT    = 0x00200000\n\tFILE_FLAG_SESSION_AWARE         = 0x00800000\n\tFILE_FLAG_POSIX_SEMANTICS       = 0x01000000\n\tFILE_FLAG_BACKUP_SEMANTICS      = 0x02000000\n\tFILE_FLAG_DELETE_ON_CLOSE       = 0x04000000\n\tFILE_FLAG_SEQUENTIAL_SCAN       = 0x08000000\n\tFILE_FLAG_RANDOM_ACCESS         = 0x10000000\n\tFILE_FLAG_NO_BUFFERING          = 0x20000000\n\tFILE_FLAG_OVERLAPPED            = 0x40000000\n\tFILE_FLAG_WRITE_THROUGH         = 0x80000000\n\n\tHANDLE_FLAG_INHERIT    = 0x00000001\n\tSTARTF_USESTDHANDLES   = 0x00000100\n\tSTARTF_USESHOWWINDOW   = 0x00000001\n\tDUPLICATE_CLOSE_SOURCE = 0x00000001\n\tDUPLICATE_SAME_ACCESS  = 0x00000002\n\n\tSTD_INPUT_HANDLE  = -10 & (1<<32 - 1)\n\tSTD_OUTPUT_HANDLE = -11 & (1<<32 - 1)\n\tSTD_ERROR_HANDLE  = -12 & (1<<32 - 1)\n\n\tFILE_BEGIN   = 0\n\tFILE_CURRENT = 1\n\tFILE_END     = 2\n\n\tLANG_ENGLISH       = 0x09\n\tSUBLANG_ENGLISH_US = 0x01\n\n\tFORMAT_MESSAGE_ALLOCATE_BUFFER = 256\n\tFORMAT_MESSAGE_IGNORE_INSERTS  = 512\n\tFORMAT_MESSAGE_FROM_STRING     = 1024\n\tFORMAT_MESSAGE_FROM_HMODULE    = 2048\n\tFORMAT_MESSAGE_FROM_SYSTEM     = 4096\n\tFORMAT_MESSAGE_ARGUMENT_ARRAY  = 8192\n\tFORMAT_MESSAGE_MAX_WIDTH_MASK  = 255\n\n\tMAX_PATH      = 260\n\tMAX_LONG_PATH = 32768\n\n\tMAX_MODULE_NAME32 = 255\n\n\tMAX_COMPUTERNAME_LENGTH = 15\n\n\tMAX_DHCPV6_DUID_LENGTH = 130\n\n\tMAX_DNS_SUFFIX_STRING_LENGTH = 256\n\n\tTIME_ZONE_ID_UNKNOWN  = 0\n\tTIME_ZONE_ID_STANDARD = 1\n\n\tTIME_ZONE_ID_DAYLIGHT = 2\n\tIGNORE                = 0\n\tINFINITE              = 0xffffffff\n\n\tWAIT_ABANDONED = 0x00000080\n\tWAIT_OBJECT_0  = 0x00000000\n\tWAIT_FAILED    = 0xFFFFFFFF\n\n\t// Access rights for process.\n\tPROCESS_ALL_ACCESS                = 0xFFFF\n\tPROCESS_CREATE_PROCESS            = 0x0080\n\tPROCESS_CREATE_THREAD             = 0x0002\n\tPROCESS_DUP_HANDLE                = 0x0040\n\tPROCESS_QUERY_INFORMATION         = 0x0400\n\tPROCESS_QUERY_LIMITED_INFORMATION = 0x1000\n\tPROCESS_SET_INFORMATION           = 0x0200\n\tPROCESS_SET_QUOTA                 = 0x0100\n\tPROCESS_SUSPEND_RESUME            = 0x0800\n\tPROCESS_TERMINATE                 = 0x0001\n\tPROCESS_VM_OPERATION              = 0x0008\n\tPROCESS_VM_READ                   = 0x0010\n\tPROCESS_VM_WRITE                  = 0x0020\n\n\t// Access rights for thread.\n\tTHREAD_DIRECT_IMPERSONATION      = 0x0200\n\tTHREAD_GET_CONTEXT               = 0x0008\n\tTHREAD_IMPERSONATE               = 0x0100\n\tTHREAD_QUERY_INFORMATION         = 0x0040\n\tTHREAD_QUERY_LIMITED_INFORMATION = 0x0800\n\tTHREAD_SET_CONTEXT               = 0x0010\n\tTHREAD_SET_INFORMATION           = 0x0020\n\tTHREAD_SET_LIMITED_INFORMATION   = 0x0400\n\tTHREAD_SET_THREAD_TOKEN          = 0x0080\n\tTHREAD_SUSPEND_RESUME            = 0x0002\n\tTHREAD_TERMINATE                 = 0x0001\n\n\tFILE_MAP_COPY    = 0x01\n\tFILE_MAP_WRITE   = 0x02\n\tFILE_MAP_READ    = 0x04\n\tFILE_MAP_EXECUTE = 0x20\n\n\tCTRL_C_EVENT        = 0\n\tCTRL_BREAK_EVENT    = 1\n\tCTRL_CLOSE_EVENT    = 2\n\tCTRL_LOGOFF_EVENT   = 5\n\tCTRL_SHUTDOWN_EVENT = 6\n\n\t// Windows reserves errors >= 1<<29 for application use.\n\tAPPLICATION_ERROR = 1 << 29\n)\n\nconst (\n\t// Process creation flags.\n\tCREATE_BREAKAWAY_FROM_JOB        = 0x01000000\n\tCREATE_DEFAULT_ERROR_MODE        = 0x04000000\n\tCREATE_NEW_CONSOLE               = 0x00000010\n\tCREATE_NEW_PROCESS_GROUP         = 0x00000200\n\tCREATE_NO_WINDOW                 = 0x08000000\n\tCREATE_PROTECTED_PROCESS         = 0x00040000\n\tCREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000\n\tCREATE_SEPARATE_WOW_VDM          = 0x00000800\n\tCREATE_SHARED_WOW_VDM            = 0x00001000\n\tCREATE_SUSPENDED                 = 0x00000004\n\tCREATE_UNICODE_ENVIRONMENT       = 0x00000400\n\tDEBUG_ONLY_THIS_PROCESS          = 0x00000002\n\tDEBUG_PROCESS                    = 0x00000001\n\tDETACHED_PROCESS                 = 0x00000008\n\tEXTENDED_STARTUPINFO_PRESENT     = 0x00080000\n\tINHERIT_PARENT_AFFINITY          = 0x00010000\n)\n\nconst (\n\t// attributes for ProcThreadAttributeList\n\tPROC_THREAD_ATTRIBUTE_PARENT_PROCESS    = 0x00020000\n\tPROC_THREAD_ATTRIBUTE_HANDLE_LIST       = 0x00020002\n\tPROC_THREAD_ATTRIBUTE_GROUP_AFFINITY    = 0x00030003\n\tPROC_THREAD_ATTRIBUTE_PREFERRED_NODE    = 0x00020004\n\tPROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR   = 0x00030005\n\tPROC_THREAD_ATTRIBUTE_MITIGATION_POLICY = 0x00020007\n\tPROC_THREAD_ATTRIBUTE_UMS_THREAD        = 0x00030006\n\tPROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL  = 0x0002000b\n\tPROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE     = 0x00020016\n)\n\nconst (\n\t// flags for CreateToolhelp32Snapshot\n\tTH32CS_SNAPHEAPLIST = 0x01\n\tTH32CS_SNAPPROCESS  = 0x02\n\tTH32CS_SNAPTHREAD   = 0x04\n\tTH32CS_SNAPMODULE   = 0x08\n\tTH32CS_SNAPMODULE32 = 0x10\n\tTH32CS_SNAPALL      = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD\n\tTH32CS_INHERIT      = 0x80000000\n)\n\nconst (\n\t// flags for EnumProcessModulesEx\n\tLIST_MODULES_32BIT   = 0x01\n\tLIST_MODULES_64BIT   = 0x02\n\tLIST_MODULES_ALL     = 0x03\n\tLIST_MODULES_DEFAULT = 0x00\n)\n\nconst (\n\t// filters for ReadDirectoryChangesW and FindFirstChangeNotificationW\n\tFILE_NOTIFY_CHANGE_FILE_NAME   = 0x001\n\tFILE_NOTIFY_CHANGE_DIR_NAME    = 0x002\n\tFILE_NOTIFY_CHANGE_ATTRIBUTES  = 0x004\n\tFILE_NOTIFY_CHANGE_SIZE        = 0x008\n\tFILE_NOTIFY_CHANGE_LAST_WRITE  = 0x010\n\tFILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020\n\tFILE_NOTIFY_CHANGE_CREATION    = 0x040\n\tFILE_NOTIFY_CHANGE_SECURITY    = 0x100\n)\n\nconst (\n\t// do not reorder\n\tFILE_ACTION_ADDED = iota + 1\n\tFILE_ACTION_REMOVED\n\tFILE_ACTION_MODIFIED\n\tFILE_ACTION_RENAMED_OLD_NAME\n\tFILE_ACTION_RENAMED_NEW_NAME\n)\n\nconst (\n\t// wincrypt.h\n\t/* certenrolld_begin -- PROV_RSA_*/\n\tPROV_RSA_FULL      = 1\n\tPROV_RSA_SIG       = 2\n\tPROV_DSS           = 3\n\tPROV_FORTEZZA      = 4\n\tPROV_MS_EXCHANGE   = 5\n\tPROV_SSL           = 6\n\tPROV_RSA_SCHANNEL  = 12\n\tPROV_DSS_DH        = 13\n\tPROV_EC_ECDSA_SIG  = 14\n\tPROV_EC_ECNRA_SIG  = 15\n\tPROV_EC_ECDSA_FULL = 16\n\tPROV_EC_ECNRA_FULL = 17\n\tPROV_DH_SCHANNEL   = 18\n\tPROV_SPYRUS_LYNKS  = 20\n\tPROV_RNG           = 21\n\tPROV_INTEL_SEC     = 22\n\tPROV_REPLACE_OWF   = 23\n\tPROV_RSA_AES       = 24\n\n\t/* dwFlags definitions for CryptAcquireContext */\n\tCRYPT_VERIFYCONTEXT              = 0xF0000000\n\tCRYPT_NEWKEYSET                  = 0x00000008\n\tCRYPT_DELETEKEYSET               = 0x00000010\n\tCRYPT_MACHINE_KEYSET             = 0x00000020\n\tCRYPT_SILENT                     = 0x00000040\n\tCRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080\n\n\t/* Flags for PFXImportCertStore */\n\tCRYPT_EXPORTABLE                   = 0x00000001\n\tCRYPT_USER_PROTECTED               = 0x00000002\n\tCRYPT_USER_KEYSET                  = 0x00001000\n\tPKCS12_PREFER_CNG_KSP              = 0x00000100\n\tPKCS12_ALWAYS_CNG_KSP              = 0x00000200\n\tPKCS12_ALLOW_OVERWRITE_KEY         = 0x00004000\n\tPKCS12_NO_PERSIST_KEY              = 0x00008000\n\tPKCS12_INCLUDE_EXTENDED_PROPERTIES = 0x00000010\n\n\t/* Flags for CryptAcquireCertificatePrivateKey */\n\tCRYPT_ACQUIRE_CACHE_FLAG             = 0x00000001\n\tCRYPT_ACQUIRE_USE_PROV_INFO_FLAG     = 0x00000002\n\tCRYPT_ACQUIRE_COMPARE_KEY_FLAG       = 0x00000004\n\tCRYPT_ACQUIRE_NO_HEALING             = 0x00000008\n\tCRYPT_ACQUIRE_SILENT_FLAG            = 0x00000040\n\tCRYPT_ACQUIRE_WINDOW_HANDLE_FLAG     = 0x00000080\n\tCRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK  = 0x00070000\n\tCRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG  = 0x00010000\n\tCRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG = 0x00020000\n\tCRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG   = 0x00040000\n\n\t/* pdwKeySpec for CryptAcquireCertificatePrivateKey */\n\tAT_KEYEXCHANGE       = 1\n\tAT_SIGNATURE         = 2\n\tCERT_NCRYPT_KEY_SPEC = 0xFFFFFFFF\n\n\t/* Default usage match type is AND with value zero */\n\tUSAGE_MATCH_TYPE_AND = 0\n\tUSAGE_MATCH_TYPE_OR  = 1\n\n\t/* msgAndCertEncodingType values for CertOpenStore function */\n\tX509_ASN_ENCODING   = 0x00000001\n\tPKCS_7_ASN_ENCODING = 0x00010000\n\n\t/* storeProvider values for CertOpenStore function */\n\tCERT_STORE_PROV_MSG               = 1\n\tCERT_STORE_PROV_MEMORY            = 2\n\tCERT_STORE_PROV_FILE              = 3\n\tCERT_STORE_PROV_REG               = 4\n\tCERT_STORE_PROV_PKCS7             = 5\n\tCERT_STORE_PROV_SERIALIZED        = 6\n\tCERT_STORE_PROV_FILENAME_A        = 7\n\tCERT_STORE_PROV_FILENAME_W        = 8\n\tCERT_STORE_PROV_FILENAME          = CERT_STORE_PROV_FILENAME_W\n\tCERT_STORE_PROV_SYSTEM_A          = 9\n\tCERT_STORE_PROV_SYSTEM_W          = 10\n\tCERT_STORE_PROV_SYSTEM            = CERT_STORE_PROV_SYSTEM_W\n\tCERT_STORE_PROV_COLLECTION        = 11\n\tCERT_STORE_PROV_SYSTEM_REGISTRY_A = 12\n\tCERT_STORE_PROV_SYSTEM_REGISTRY_W = 13\n\tCERT_STORE_PROV_SYSTEM_REGISTRY   = CERT_STORE_PROV_SYSTEM_REGISTRY_W\n\tCERT_STORE_PROV_PHYSICAL_W        = 14\n\tCERT_STORE_PROV_PHYSICAL          = CERT_STORE_PROV_PHYSICAL_W\n\tCERT_STORE_PROV_SMART_CARD_W      = 15\n\tCERT_STORE_PROV_SMART_CARD        = CERT_STORE_PROV_SMART_CARD_W\n\tCERT_STORE_PROV_LDAP_W            = 16\n\tCERT_STORE_PROV_LDAP              = CERT_STORE_PROV_LDAP_W\n\tCERT_STORE_PROV_PKCS12            = 17\n\n\t/* store characteristics (low WORD of flag) for CertOpenStore function */\n\tCERT_STORE_NO_CRYPT_RELEASE_FLAG            = 0x00000001\n\tCERT_STORE_SET_LOCALIZED_NAME_FLAG          = 0x00000002\n\tCERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004\n\tCERT_STORE_DELETE_FLAG                      = 0x00000010\n\tCERT_STORE_UNSAFE_PHYSICAL_FLAG             = 0x00000020\n\tCERT_STORE_SHARE_STORE_FLAG                 = 0x00000040\n\tCERT_STORE_SHARE_CONTEXT_FLAG               = 0x00000080\n\tCERT_STORE_MANIFOLD_FLAG                    = 0x00000100\n\tCERT_STORE_ENUM_ARCHIVED_FLAG               = 0x00000200\n\tCERT_STORE_UPDATE_KEYID_FLAG                = 0x00000400\n\tCERT_STORE_BACKUP_RESTORE_FLAG              = 0x00000800\n\tCERT_STORE_MAXIMUM_ALLOWED_FLAG             = 0x00001000\n\tCERT_STORE_CREATE_NEW_FLAG                  = 0x00002000\n\tCERT_STORE_OPEN_EXISTING_FLAG               = 0x00004000\n\tCERT_STORE_READONLY_FLAG                    = 0x00008000\n\n\t/* store locations (high WORD of flag) for CertOpenStore function */\n\tCERT_SYSTEM_STORE_CURRENT_USER               = 0x00010000\n\tCERT_SYSTEM_STORE_LOCAL_MACHINE              = 0x00020000\n\tCERT_SYSTEM_STORE_CURRENT_SERVICE            = 0x00040000\n\tCERT_SYSTEM_STORE_SERVICES                   = 0x00050000\n\tCERT_SYSTEM_STORE_USERS                      = 0x00060000\n\tCERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY  = 0x00070000\n\tCERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000\n\tCERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE   = 0x00090000\n\tCERT_SYSTEM_STORE_UNPROTECTED_FLAG           = 0x40000000\n\tCERT_SYSTEM_STORE_RELOCATE_FLAG              = 0x80000000\n\n\t/* Miscellaneous high-WORD flags for CertOpenStore function */\n\tCERT_REGISTRY_STORE_REMOTE_FLAG      = 0x00010000\n\tCERT_REGISTRY_STORE_SERIALIZED_FLAG  = 0x00020000\n\tCERT_REGISTRY_STORE_ROAMING_FLAG     = 0x00040000\n\tCERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000\n\tCERT_REGISTRY_STORE_LM_GPT_FLAG      = 0x01000000\n\tCERT_REGISTRY_STORE_CLIENT_GPT_FLAG  = 0x80000000\n\tCERT_FILE_STORE_COMMIT_ENABLE_FLAG   = 0x00010000\n\tCERT_LDAP_STORE_SIGN_FLAG            = 0x00010000\n\tCERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG  = 0x00020000\n\tCERT_LDAP_STORE_OPENED_FLAG          = 0x00040000\n\tCERT_LDAP_STORE_UNBIND_FLAG          = 0x00080000\n\n\t/* addDisposition values for CertAddCertificateContextToStore function */\n\tCERT_STORE_ADD_NEW                                 = 1\n\tCERT_STORE_ADD_USE_EXISTING                        = 2\n\tCERT_STORE_ADD_REPLACE_EXISTING                    = 3\n\tCERT_STORE_ADD_ALWAYS                              = 4\n\tCERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5\n\tCERT_STORE_ADD_NEWER                               = 6\n\tCERT_STORE_ADD_NEWER_INHERIT_PROPERTIES            = 7\n\n\t/* ErrorStatus values for CertTrustStatus struct */\n\tCERT_TRUST_NO_ERROR                          = 0x00000000\n\tCERT_TRUST_IS_NOT_TIME_VALID                 = 0x00000001\n\tCERT_TRUST_IS_REVOKED                        = 0x00000004\n\tCERT_TRUST_IS_NOT_SIGNATURE_VALID            = 0x00000008\n\tCERT_TRUST_IS_NOT_VALID_FOR_USAGE            = 0x00000010\n\tCERT_TRUST_IS_UNTRUSTED_ROOT                 = 0x00000020\n\tCERT_TRUST_REVOCATION_STATUS_UNKNOWN         = 0x00000040\n\tCERT_TRUST_IS_CYCLIC                         = 0x00000080\n\tCERT_TRUST_INVALID_EXTENSION                 = 0x00000100\n\tCERT_TRUST_INVALID_POLICY_CONSTRAINTS        = 0x00000200\n\tCERT_TRUST_INVALID_BASIC_CONSTRAINTS         = 0x00000400\n\tCERT_TRUST_INVALID_NAME_CONSTRAINTS          = 0x00000800\n\tCERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000\n\tCERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT   = 0x00002000\n\tCERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000\n\tCERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT      = 0x00008000\n\tCERT_TRUST_IS_PARTIAL_CHAIN                  = 0x00010000\n\tCERT_TRUST_CTL_IS_NOT_TIME_VALID             = 0x00020000\n\tCERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID        = 0x00040000\n\tCERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE        = 0x00080000\n\tCERT_TRUST_HAS_WEAK_SIGNATURE                = 0x00100000\n\tCERT_TRUST_IS_OFFLINE_REVOCATION             = 0x01000000\n\tCERT_TRUST_NO_ISSUANCE_CHAIN_POLICY          = 0x02000000\n\tCERT_TRUST_IS_EXPLICIT_DISTRUST              = 0x04000000\n\tCERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT    = 0x08000000\n\n\t/* InfoStatus values for CertTrustStatus struct */\n\tCERT_TRUST_HAS_EXACT_MATCH_ISSUER        = 0x00000001\n\tCERT_TRUST_HAS_KEY_MATCH_ISSUER          = 0x00000002\n\tCERT_TRUST_HAS_NAME_MATCH_ISSUER         = 0x00000004\n\tCERT_TRUST_IS_SELF_SIGNED                = 0x00000008\n\tCERT_TRUST_HAS_PREFERRED_ISSUER          = 0x00000100\n\tCERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY     = 0x00000400\n\tCERT_TRUST_HAS_VALID_NAME_CONSTRAINTS    = 0x00000400\n\tCERT_TRUST_IS_PEER_TRUSTED               = 0x00000800\n\tCERT_TRUST_HAS_CRL_VALIDITY_EXTENDED     = 0x00001000\n\tCERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000\n\tCERT_TRUST_IS_CA_TRUSTED                 = 0x00004000\n\tCERT_TRUST_IS_COMPLEX_CHAIN              = 0x00010000\n\n\t/* Certificate Information Flags */\n\tCERT_INFO_VERSION_FLAG                 = 1\n\tCERT_INFO_SERIAL_NUMBER_FLAG           = 2\n\tCERT_INFO_SIGNATURE_ALGORITHM_FLAG     = 3\n\tCERT_INFO_ISSUER_FLAG                  = 4\n\tCERT_INFO_NOT_BEFORE_FLAG              = 5\n\tCERT_INFO_NOT_AFTER_FLAG               = 6\n\tCERT_INFO_SUBJECT_FLAG                 = 7\n\tCERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG = 8\n\tCERT_INFO_ISSUER_UNIQUE_ID_FLAG        = 9\n\tCERT_INFO_SUBJECT_UNIQUE_ID_FLAG       = 10\n\tCERT_INFO_EXTENSION_FLAG               = 11\n\n\t/* dwFindType for CertFindCertificateInStore  */\n\tCERT_COMPARE_MASK                     = 0xFFFF\n\tCERT_COMPARE_SHIFT                    = 16\n\tCERT_COMPARE_ANY                      = 0\n\tCERT_COMPARE_SHA1_HASH                = 1\n\tCERT_COMPARE_NAME                     = 2\n\tCERT_COMPARE_ATTR                     = 3\n\tCERT_COMPARE_MD5_HASH                 = 4\n\tCERT_COMPARE_PROPERTY                 = 5\n\tCERT_COMPARE_PUBLIC_KEY               = 6\n\tCERT_COMPARE_HASH                     = CERT_COMPARE_SHA1_HASH\n\tCERT_COMPARE_NAME_STR_A               = 7\n\tCERT_COMPARE_NAME_STR_W               = 8\n\tCERT_COMPARE_KEY_SPEC                 = 9\n\tCERT_COMPARE_ENHKEY_USAGE             = 10\n\tCERT_COMPARE_CTL_USAGE                = CERT_COMPARE_ENHKEY_USAGE\n\tCERT_COMPARE_SUBJECT_CERT             = 11\n\tCERT_COMPARE_ISSUER_OF                = 12\n\tCERT_COMPARE_EXISTING                 = 13\n\tCERT_COMPARE_SIGNATURE_HASH           = 14\n\tCERT_COMPARE_KEY_IDENTIFIER           = 15\n\tCERT_COMPARE_CERT_ID                  = 16\n\tCERT_COMPARE_CROSS_CERT_DIST_POINTS   = 17\n\tCERT_COMPARE_PUBKEY_MD5_HASH          = 18\n\tCERT_COMPARE_SUBJECT_INFO_ACCESS      = 19\n\tCERT_COMPARE_HASH_STR                 = 20\n\tCERT_COMPARE_HAS_PRIVATE_KEY          = 21\n\tCERT_FIND_ANY                         = (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SHA1_HASH                   = (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_MD5_HASH                    = (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SIGNATURE_HASH              = (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_KEY_IDENTIFIER              = (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT)\n\tCERT_FIND_HASH                        = CERT_FIND_SHA1_HASH\n\tCERT_FIND_PROPERTY                    = (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_PUBLIC_KEY                  = (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SUBJECT_NAME                = (CERT_COMPARE_NAME<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_SUBJECT_ATTR                = (CERT_COMPARE_ATTR<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_ISSUER_NAME                 = (CERT_COMPARE_NAME<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_ISSUER_ATTR                 = (CERT_COMPARE_ATTR<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_SUBJECT_STR_A               = (CERT_COMPARE_NAME_STR_A<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_SUBJECT_STR_W               = (CERT_COMPARE_NAME_STR_W<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_SUBJECT_STR                 = CERT_FIND_SUBJECT_STR_W\n\tCERT_FIND_ISSUER_STR_A                = (CERT_COMPARE_NAME_STR_A<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_ISSUER_STR_W                = (CERT_COMPARE_NAME_STR_W<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_ISSUER_STR                  = CERT_FIND_ISSUER_STR_W\n\tCERT_FIND_KEY_SPEC                    = (CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT)\n\tCERT_FIND_ENHKEY_USAGE                = (CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT)\n\tCERT_FIND_CTL_USAGE                   = CERT_FIND_ENHKEY_USAGE\n\tCERT_FIND_SUBJECT_CERT                = (CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT)\n\tCERT_FIND_ISSUER_OF                   = (CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT)\n\tCERT_FIND_EXISTING                    = (CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT)\n\tCERT_FIND_CERT_ID                     = (CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT)\n\tCERT_FIND_CROSS_CERT_DIST_POINTS      = (CERT_COMPARE_CROSS_CERT_DIST_POINTS << CERT_COMPARE_SHIFT)\n\tCERT_FIND_PUBKEY_MD5_HASH             = (CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SUBJECT_INFO_ACCESS         = (CERT_COMPARE_SUBJECT_INFO_ACCESS << CERT_COMPARE_SHIFT)\n\tCERT_FIND_HASH_STR                    = (CERT_COMPARE_HASH_STR << CERT_COMPARE_SHIFT)\n\tCERT_FIND_HAS_PRIVATE_KEY             = (CERT_COMPARE_HAS_PRIVATE_KEY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG  = 0x1\n\tCERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG  = 0x2\n\tCERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG = 0x4\n\tCERT_FIND_NO_ENHKEY_USAGE_FLAG        = 0x8\n\tCERT_FIND_OR_ENHKEY_USAGE_FLAG        = 0x10\n\tCERT_FIND_VALID_ENHKEY_USAGE_FLAG     = 0x20\n\tCERT_FIND_OPTIONAL_CTL_USAGE_FLAG     = CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG\n\tCERT_FIND_EXT_ONLY_CTL_USAGE_FLAG     = CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG\n\tCERT_FIND_PROP_ONLY_CTL_USAGE_FLAG    = CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG\n\tCERT_FIND_NO_CTL_USAGE_FLAG           = CERT_FIND_NO_ENHKEY_USAGE_FLAG\n\tCERT_FIND_OR_CTL_USAGE_FLAG           = CERT_FIND_OR_ENHKEY_USAGE_FLAG\n\tCERT_FIND_VALID_CTL_USAGE_FLAG        = CERT_FIND_VALID_ENHKEY_USAGE_FLAG\n\n\t/* policyOID values for CertVerifyCertificateChainPolicy function */\n\tCERT_CHAIN_POLICY_BASE              = 1\n\tCERT_CHAIN_POLICY_AUTHENTICODE      = 2\n\tCERT_CHAIN_POLICY_AUTHENTICODE_TS   = 3\n\tCERT_CHAIN_POLICY_SSL               = 4\n\tCERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5\n\tCERT_CHAIN_POLICY_NT_AUTH           = 6\n\tCERT_CHAIN_POLICY_MICROSOFT_ROOT    = 7\n\tCERT_CHAIN_POLICY_EV                = 8\n\tCERT_CHAIN_POLICY_SSL_F12           = 9\n\n\t/* flag for dwFindType CertFindChainInStore  */\n\tCERT_CHAIN_FIND_BY_ISSUER = 1\n\n\t/* dwFindFlags for CertFindChainInStore when dwFindType == CERT_CHAIN_FIND_BY_ISSUER */\n\tCERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG    = 0x0001\n\tCERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG  = 0x0002\n\tCERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG = 0x0004\n\tCERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG  = 0x0008\n\tCERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG         = 0x4000\n\tCERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG     = 0x8000\n\n\t/* Certificate Store close flags */\n\tCERT_CLOSE_STORE_FORCE_FLAG = 0x00000001\n\tCERT_CLOSE_STORE_CHECK_FLAG = 0x00000002\n\n\t/* CryptQueryObject object type */\n\tCERT_QUERY_OBJECT_FILE = 1\n\tCERT_QUERY_OBJECT_BLOB = 2\n\n\t/* CryptQueryObject content type flags */\n\tCERT_QUERY_CONTENT_CERT                    = 1\n\tCERT_QUERY_CONTENT_CTL                     = 2\n\tCERT_QUERY_CONTENT_CRL                     = 3\n\tCERT_QUERY_CONTENT_SERIALIZED_STORE        = 4\n\tCERT_QUERY_CONTENT_SERIALIZED_CERT         = 5\n\tCERT_QUERY_CONTENT_SERIALIZED_CTL          = 6\n\tCERT_QUERY_CONTENT_SERIALIZED_CRL          = 7\n\tCERT_QUERY_CONTENT_PKCS7_SIGNED            = 8\n\tCERT_QUERY_CONTENT_PKCS7_UNSIGNED          = 9\n\tCERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED      = 10\n\tCERT_QUERY_CONTENT_PKCS10                  = 11\n\tCERT_QUERY_CONTENT_PFX                     = 12\n\tCERT_QUERY_CONTENT_CERT_PAIR               = 13\n\tCERT_QUERY_CONTENT_PFX_AND_LOAD            = 14\n\tCERT_QUERY_CONTENT_FLAG_CERT               = (1 << CERT_QUERY_CONTENT_CERT)\n\tCERT_QUERY_CONTENT_FLAG_CTL                = (1 << CERT_QUERY_CONTENT_CTL)\n\tCERT_QUERY_CONTENT_FLAG_CRL                = (1 << CERT_QUERY_CONTENT_CRL)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE   = (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT    = (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL     = (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL     = (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL)\n\tCERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED       = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED)\n\tCERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED     = (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED)\n\tCERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED)\n\tCERT_QUERY_CONTENT_FLAG_PKCS10             = (1 << CERT_QUERY_CONTENT_PKCS10)\n\tCERT_QUERY_CONTENT_FLAG_PFX                = (1 << CERT_QUERY_CONTENT_PFX)\n\tCERT_QUERY_CONTENT_FLAG_CERT_PAIR          = (1 << CERT_QUERY_CONTENT_CERT_PAIR)\n\tCERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD       = (1 << CERT_QUERY_CONTENT_PFX_AND_LOAD)\n\tCERT_QUERY_CONTENT_FLAG_ALL                = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_CTL | CERT_QUERY_CONTENT_FLAG_CRL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | CERT_QUERY_CONTENT_FLAG_PKCS10 | CERT_QUERY_CONTENT_FLAG_PFX | CERT_QUERY_CONTENT_FLAG_CERT_PAIR)\n\tCERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT    = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED)\n\n\t/* CryptQueryObject format type flags */\n\tCERT_QUERY_FORMAT_BINARY                     = 1\n\tCERT_QUERY_FORMAT_BASE64_ENCODED             = 2\n\tCERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED      = 3\n\tCERT_QUERY_FORMAT_FLAG_BINARY                = (1 << CERT_QUERY_FORMAT_BINARY)\n\tCERT_QUERY_FORMAT_FLAG_BASE64_ENCODED        = (1 << CERT_QUERY_FORMAT_BASE64_ENCODED)\n\tCERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED = (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED)\n\tCERT_QUERY_FORMAT_FLAG_ALL                   = (CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED)\n\n\t/* CertGetNameString name types */\n\tCERT_NAME_EMAIL_TYPE            = 1\n\tCERT_NAME_RDN_TYPE              = 2\n\tCERT_NAME_ATTR_TYPE             = 3\n\tCERT_NAME_SIMPLE_DISPLAY_TYPE   = 4\n\tCERT_NAME_FRIENDLY_DISPLAY_TYPE = 5\n\tCERT_NAME_DNS_TYPE              = 6\n\tCERT_NAME_URL_TYPE              = 7\n\tCERT_NAME_UPN_TYPE              = 8\n\n\t/* CertGetNameString flags */\n\tCERT_NAME_ISSUER_FLAG              = 0x1\n\tCERT_NAME_DISABLE_IE4_UTF8_FLAG    = 0x10000\n\tCERT_NAME_SEARCH_ALL_NAMES_FLAG    = 0x2\n\tCERT_NAME_STR_ENABLE_PUNYCODE_FLAG = 0x00200000\n\n\t/* AuthType values for SSLExtraCertChainPolicyPara struct */\n\tAUTHTYPE_CLIENT = 1\n\tAUTHTYPE_SERVER = 2\n\n\t/* Checks values for SSLExtraCertChainPolicyPara struct */\n\tSECURITY_FLAG_IGNORE_REVOCATION        = 0x00000080\n\tSECURITY_FLAG_IGNORE_UNKNOWN_CA        = 0x00000100\n\tSECURITY_FLAG_IGNORE_WRONG_USAGE       = 0x00000200\n\tSECURITY_FLAG_IGNORE_CERT_CN_INVALID   = 0x00001000\n\tSECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000\n\n\t/* Flags for Crypt[Un]ProtectData */\n\tCRYPTPROTECT_UI_FORBIDDEN      = 0x1\n\tCRYPTPROTECT_LOCAL_MACHINE     = 0x4\n\tCRYPTPROTECT_CRED_SYNC         = 0x8\n\tCRYPTPROTECT_AUDIT             = 0x10\n\tCRYPTPROTECT_NO_RECOVERY       = 0x20\n\tCRYPTPROTECT_VERIFY_PROTECTION = 0x40\n\tCRYPTPROTECT_CRED_REGENERATE   = 0x80\n\n\t/* Flags for CryptProtectPromptStruct */\n\tCRYPTPROTECT_PROMPT_ON_UNPROTECT   = 1\n\tCRYPTPROTECT_PROMPT_ON_PROTECT     = 2\n\tCRYPTPROTECT_PROMPT_RESERVED       = 4\n\tCRYPTPROTECT_PROMPT_STRONG         = 8\n\tCRYPTPROTECT_PROMPT_REQUIRE_STRONG = 16\n)\n\nconst (\n\t// flags for SetErrorMode\n\tSEM_FAILCRITICALERRORS     = 0x0001\n\tSEM_NOALIGNMENTFAULTEXCEPT = 0x0004\n\tSEM_NOGPFAULTERRORBOX      = 0x0002\n\tSEM_NOOPENFILEERRORBOX     = 0x8000\n)\n\nconst (\n\t// Priority class.\n\tABOVE_NORMAL_PRIORITY_CLASS   = 0x00008000\n\tBELOW_NORMAL_PRIORITY_CLASS   = 0x00004000\n\tHIGH_PRIORITY_CLASS           = 0x00000080\n\tIDLE_PRIORITY_CLASS           = 0x00000040\n\tNORMAL_PRIORITY_CLASS         = 0x00000020\n\tPROCESS_MODE_BACKGROUND_BEGIN = 0x00100000\n\tPROCESS_MODE_BACKGROUND_END   = 0x00200000\n\tREALTIME_PRIORITY_CLASS       = 0x00000100\n)\n\n/* wintrust.h constants for WinVerifyTrustEx */\nconst (\n\tWTD_UI_ALL    = 1\n\tWTD_UI_NONE   = 2\n\tWTD_UI_NOBAD  = 3\n\tWTD_UI_NOGOOD = 4\n\n\tWTD_REVOKE_NONE       = 0\n\tWTD_REVOKE_WHOLECHAIN = 1\n\n\tWTD_CHOICE_FILE    = 1\n\tWTD_CHOICE_CATALOG = 2\n\tWTD_CHOICE_BLOB    = 3\n\tWTD_CHOICE_SIGNER  = 4\n\tWTD_CHOICE_CERT    = 5\n\n\tWTD_STATEACTION_IGNORE           = 0x00000000\n\tWTD_STATEACTION_VERIFY           = 0x00000001\n\tWTD_STATEACTION_CLOSE            = 0x00000002\n\tWTD_STATEACTION_AUTO_CACHE       = 0x00000003\n\tWTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004\n\n\tWTD_USE_IE4_TRUST_FLAG                  = 0x1\n\tWTD_NO_IE4_CHAIN_FLAG                   = 0x2\n\tWTD_NO_POLICY_USAGE_FLAG                = 0x4\n\tWTD_REVOCATION_CHECK_NONE               = 0x10\n\tWTD_REVOCATION_CHECK_END_CERT           = 0x20\n\tWTD_REVOCATION_CHECK_CHAIN              = 0x40\n\tWTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x80\n\tWTD_SAFER_FLAG                          = 0x100\n\tWTD_HASH_ONLY_FLAG                      = 0x200\n\tWTD_USE_DEFAULT_OSVER_CHECK             = 0x400\n\tWTD_LIFETIME_SIGNING_FLAG               = 0x800\n\tWTD_CACHE_ONLY_URL_RETRIEVAL            = 0x1000\n\tWTD_DISABLE_MD2_MD4                     = 0x2000\n\tWTD_MOTW                                = 0x4000\n\n\tWTD_UICONTEXT_EXECUTE = 0\n\tWTD_UICONTEXT_INSTALL = 1\n)\n\nvar (\n\tOID_PKIX_KP_SERVER_AUTH = []byte(\"1.3.6.1.5.5.7.3.1\\x00\")\n\tOID_SERVER_GATED_CRYPTO = []byte(\"1.3.6.1.4.1.311.10.3.3\\x00\")\n\tOID_SGC_NETSCAPE        = []byte(\"2.16.840.1.113730.4.1\\x00\")\n\n\tWINTRUST_ACTION_GENERIC_VERIFY_V2 = GUID{\n\t\tData1: 0xaac56b,\n\t\tData2: 0xcd44,\n\t\tData3: 0x11d0,\n\t\tData4: [8]byte{0x8c, 0xc2, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee},\n\t}\n)\n\n// Pointer represents a pointer to an arbitrary Windows type.\n//\n// Pointer-typed fields may point to one of many different types. It's\n// up to the caller to provide a pointer to the appropriate type, cast\n// to Pointer. The caller must obey the unsafe.Pointer rules while\n// doing so.\ntype Pointer *struct{}\n\n// Invented values to support what package os expects.\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\nfunc (tv *Timeval) Nanoseconds() int64 {\n\treturn (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3\n}\n\nfunc NsecToTimeval(nsec int64) (tv Timeval) {\n\ttv.Sec = int32(nsec / 1e9)\n\ttv.Usec = int32(nsec % 1e9 / 1e3)\n\treturn\n}\n\ntype Overlapped struct {\n\tInternal     uintptr\n\tInternalHigh uintptr\n\tOffset       uint32\n\tOffsetHigh   uint32\n\tHEvent       Handle\n}\n\ntype FileNotifyInformation struct {\n\tNextEntryOffset uint32\n\tAction          uint32\n\tFileNameLength  uint32\n\tFileName        uint16\n}\n\ntype Filetime struct {\n\tLowDateTime  uint32\n\tHighDateTime uint32\n}\n\n// Nanoseconds returns Filetime ft in nanoseconds\n// since Epoch (00:00:00 UTC, January 1, 1970).\nfunc (ft *Filetime) Nanoseconds() int64 {\n\t// 100-nanosecond intervals since January 1, 1601\n\tnsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime)\n\t// change starting time to the Epoch (00:00:00 UTC, January 1, 1970)\n\tnsec -= 116444736000000000\n\t// convert into nanoseconds\n\tnsec *= 100\n\treturn nsec\n}\n\nfunc NsecToFiletime(nsec int64) (ft Filetime) {\n\t// convert into 100-nanosecond\n\tnsec /= 100\n\t// change starting time to January 1, 1601\n\tnsec += 116444736000000000\n\t// split into high / low\n\tft.LowDateTime = uint32(nsec & 0xffffffff)\n\tft.HighDateTime = uint32(nsec >> 32 & 0xffffffff)\n\treturn ft\n}\n\ntype Win32finddata struct {\n\tFileAttributes    uint32\n\tCreationTime      Filetime\n\tLastAccessTime    Filetime\n\tLastWriteTime     Filetime\n\tFileSizeHigh      uint32\n\tFileSizeLow       uint32\n\tReserved0         uint32\n\tReserved1         uint32\n\tFileName          [MAX_PATH - 1]uint16\n\tAlternateFileName [13]uint16\n}\n\n// This is the actual system call structure.\n// Win32finddata is what we committed to in Go 1.\ntype win32finddata1 struct {\n\tFileAttributes    uint32\n\tCreationTime      Filetime\n\tLastAccessTime    Filetime\n\tLastWriteTime     Filetime\n\tFileSizeHigh      uint32\n\tFileSizeLow       uint32\n\tReserved0         uint32\n\tReserved1         uint32\n\tFileName          [MAX_PATH]uint16\n\tAlternateFileName [14]uint16\n\n\t// The Microsoft documentation for this struct¹ describes three additional\n\t// fields: dwFileType, dwCreatorType, and wFinderFlags. However, those fields\n\t// are empirically only present in the macOS port of the Win32 API,² and thus\n\t// not needed for binaries built for Windows.\n\t//\n\t// ¹ https://docs.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-win32_find_dataw describe\n\t// ² https://golang.org/issue/42637#issuecomment-760715755.\n}\n\nfunc copyFindData(dst *Win32finddata, src *win32finddata1) {\n\tdst.FileAttributes = src.FileAttributes\n\tdst.CreationTime = src.CreationTime\n\tdst.LastAccessTime = src.LastAccessTime\n\tdst.LastWriteTime = src.LastWriteTime\n\tdst.FileSizeHigh = src.FileSizeHigh\n\tdst.FileSizeLow = src.FileSizeLow\n\tdst.Reserved0 = src.Reserved0\n\tdst.Reserved1 = src.Reserved1\n\n\t// The src is 1 element bigger than dst, but it must be NUL.\n\tcopy(dst.FileName[:], src.FileName[:])\n\tcopy(dst.AlternateFileName[:], src.AlternateFileName[:])\n}\n\ntype ByHandleFileInformation struct {\n\tFileAttributes     uint32\n\tCreationTime       Filetime\n\tLastAccessTime     Filetime\n\tLastWriteTime      Filetime\n\tVolumeSerialNumber uint32\n\tFileSizeHigh       uint32\n\tFileSizeLow        uint32\n\tNumberOfLinks      uint32\n\tFileIndexHigh      uint32\n\tFileIndexLow       uint32\n}\n\nconst (\n\tGetFileExInfoStandard = 0\n\tGetFileExMaxInfoLevel = 1\n)\n\ntype Win32FileAttributeData struct {\n\tFileAttributes uint32\n\tCreationTime   Filetime\n\tLastAccessTime Filetime\n\tLastWriteTime  Filetime\n\tFileSizeHigh   uint32\n\tFileSizeLow    uint32\n}\n\n// ShowWindow constants\nconst (\n\t// winuser.h\n\tSW_HIDE            = 0\n\tSW_NORMAL          = 1\n\tSW_SHOWNORMAL      = 1\n\tSW_SHOWMINIMIZED   = 2\n\tSW_SHOWMAXIMIZED   = 3\n\tSW_MAXIMIZE        = 3\n\tSW_SHOWNOACTIVATE  = 4\n\tSW_SHOW            = 5\n\tSW_MINIMIZE        = 6\n\tSW_SHOWMINNOACTIVE = 7\n\tSW_SHOWNA          = 8\n\tSW_RESTORE         = 9\n\tSW_SHOWDEFAULT     = 10\n\tSW_FORCEMINIMIZE   = 11\n)\n\ntype StartupInfo struct {\n\tCb            uint32\n\t_             *uint16\n\tDesktop       *uint16\n\tTitle         *uint16\n\tX             uint32\n\tY             uint32\n\tXSize         uint32\n\tYSize         uint32\n\tXCountChars   uint32\n\tYCountChars   uint32\n\tFillAttribute uint32\n\tFlags         uint32\n\tShowWindow    uint16\n\t_             uint16\n\t_             *byte\n\tStdInput      Handle\n\tStdOutput     Handle\n\tStdErr        Handle\n}\n\ntype StartupInfoEx struct {\n\tStartupInfo\n\tProcThreadAttributeList *ProcThreadAttributeList\n}\n\n// ProcThreadAttributeList is a placeholder type to represent a PROC_THREAD_ATTRIBUTE_LIST.\n//\n// To create a *ProcThreadAttributeList, use NewProcThreadAttributeList, update\n// it with ProcThreadAttributeListContainer.Update, free its memory using\n// ProcThreadAttributeListContainer.Delete, and access the list itself using\n// ProcThreadAttributeListContainer.List.\ntype ProcThreadAttributeList struct{}\n\ntype ProcThreadAttributeListContainer struct {\n\tdata     *ProcThreadAttributeList\n\tpointers []unsafe.Pointer\n}\n\ntype ProcessInformation struct {\n\tProcess   Handle\n\tThread    Handle\n\tProcessId uint32\n\tThreadId  uint32\n}\n\ntype ProcessEntry32 struct {\n\tSize            uint32\n\tUsage           uint32\n\tProcessID       uint32\n\tDefaultHeapID   uintptr\n\tModuleID        uint32\n\tThreads         uint32\n\tParentProcessID uint32\n\tPriClassBase    int32\n\tFlags           uint32\n\tExeFile         [MAX_PATH]uint16\n}\n\ntype ThreadEntry32 struct {\n\tSize           uint32\n\tUsage          uint32\n\tThreadID       uint32\n\tOwnerProcessID uint32\n\tBasePri        int32\n\tDeltaPri       int32\n\tFlags          uint32\n}\n\ntype ModuleEntry32 struct {\n\tSize         uint32\n\tModuleID     uint32\n\tProcessID    uint32\n\tGlblcntUsage uint32\n\tProccntUsage uint32\n\tModBaseAddr  uintptr\n\tModBaseSize  uint32\n\tModuleHandle Handle\n\tModule       [MAX_MODULE_NAME32 + 1]uint16\n\tExePath      [MAX_PATH]uint16\n}\n\nconst SizeofModuleEntry32 = unsafe.Sizeof(ModuleEntry32{})\n\ntype Systemtime struct {\n\tYear         uint16\n\tMonth        uint16\n\tDayOfWeek    uint16\n\tDay          uint16\n\tHour         uint16\n\tMinute       uint16\n\tSecond       uint16\n\tMilliseconds uint16\n}\n\ntype Timezoneinformation struct {\n\tBias         int32\n\tStandardName [32]uint16\n\tStandardDate Systemtime\n\tStandardBias int32\n\tDaylightName [32]uint16\n\tDaylightDate Systemtime\n\tDaylightBias int32\n}\n\n// Socket related.\n\nconst (\n\tAF_UNSPEC  = 0\n\tAF_UNIX    = 1\n\tAF_INET    = 2\n\tAF_NETBIOS = 17\n\tAF_INET6   = 23\n\tAF_IRDA    = 26\n\tAF_BTH     = 32\n\n\tSOCK_STREAM    = 1\n\tSOCK_DGRAM     = 2\n\tSOCK_RAW       = 3\n\tSOCK_RDM       = 4\n\tSOCK_SEQPACKET = 5\n\n\tIPPROTO_IP      = 0\n\tIPPROTO_ICMP    = 1\n\tIPPROTO_IGMP    = 2\n\tBTHPROTO_RFCOMM = 3\n\tIPPROTO_TCP     = 6\n\tIPPROTO_UDP     = 17\n\tIPPROTO_IPV6    = 41\n\tIPPROTO_ICMPV6  = 58\n\tIPPROTO_RM      = 113\n\n\tSOL_SOCKET                = 0xffff\n\tSO_REUSEADDR              = 4\n\tSO_KEEPALIVE              = 8\n\tSO_DONTROUTE              = 16\n\tSO_BROADCAST              = 32\n\tSO_LINGER                 = 128\n\tSO_RCVBUF                 = 0x1002\n\tSO_RCVTIMEO               = 0x1006\n\tSO_SNDBUF                 = 0x1001\n\tSO_UPDATE_ACCEPT_CONTEXT  = 0x700b\n\tSO_UPDATE_CONNECT_CONTEXT = 0x7010\n\n\tIOC_OUT                            = 0x40000000\n\tIOC_IN                             = 0x80000000\n\tIOC_VENDOR                         = 0x18000000\n\tIOC_INOUT                          = IOC_IN | IOC_OUT\n\tIOC_WS2                            = 0x08000000\n\tSIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6\n\tSIO_KEEPALIVE_VALS                 = IOC_IN | IOC_VENDOR | 4\n\tSIO_UDP_CONNRESET                  = IOC_IN | IOC_VENDOR | 12\n\tSIO_UDP_NETRESET                   = IOC_IN | IOC_VENDOR | 15\n\n\t// cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460\n\n\tIP_HDRINCL         = 0x2\n\tIP_TOS             = 0x3\n\tIP_TTL             = 0x4\n\tIP_MULTICAST_IF    = 0x9\n\tIP_MULTICAST_TTL   = 0xa\n\tIP_MULTICAST_LOOP  = 0xb\n\tIP_ADD_MEMBERSHIP  = 0xc\n\tIP_DROP_MEMBERSHIP = 0xd\n\tIP_PKTINFO         = 0x13\n\tIP_MTU_DISCOVER    = 0x47\n\n\tIPV6_V6ONLY         = 0x1b\n\tIPV6_UNICAST_HOPS   = 0x4\n\tIPV6_MULTICAST_IF   = 0x9\n\tIPV6_MULTICAST_HOPS = 0xa\n\tIPV6_MULTICAST_LOOP = 0xb\n\tIPV6_JOIN_GROUP     = 0xc\n\tIPV6_LEAVE_GROUP    = 0xd\n\tIPV6_PKTINFO        = 0x13\n\tIPV6_MTU_DISCOVER   = 0x47\n\n\tMSG_OOB       = 0x1\n\tMSG_PEEK      = 0x2\n\tMSG_DONTROUTE = 0x4\n\tMSG_WAITALL   = 0x8\n\n\tMSG_TRUNC  = 0x0100\n\tMSG_CTRUNC = 0x0200\n\tMSG_BCAST  = 0x0400\n\tMSG_MCAST  = 0x0800\n\n\tSOMAXCONN = 0x7fffffff\n\n\tTCP_NODELAY                    = 1\n\tTCP_EXPEDITED_1122             = 2\n\tTCP_KEEPALIVE                  = 3\n\tTCP_MAXSEG                     = 4\n\tTCP_MAXRT                      = 5\n\tTCP_STDURG                     = 6\n\tTCP_NOURG                      = 7\n\tTCP_ATMARK                     = 8\n\tTCP_NOSYNRETRIES               = 9\n\tTCP_TIMESTAMPS                 = 10\n\tTCP_OFFLOAD_PREFERENCE         = 11\n\tTCP_CONGESTION_ALGORITHM       = 12\n\tTCP_DELAY_FIN_ACK              = 13\n\tTCP_MAXRTMS                    = 14\n\tTCP_FASTOPEN                   = 15\n\tTCP_KEEPCNT                    = 16\n\tTCP_KEEPIDLE                   = TCP_KEEPALIVE\n\tTCP_KEEPINTVL                  = 17\n\tTCP_FAIL_CONNECT_ON_ICMP_ERROR = 18\n\tTCP_ICMP_ERROR_INFO            = 19\n\n\tUDP_NOCHECKSUM              = 1\n\tUDP_SEND_MSG_SIZE           = 2\n\tUDP_RECV_MAX_COALESCED_SIZE = 3\n\tUDP_CHECKSUM_COVERAGE       = 20\n\n\tUDP_COALESCED_INFO = 3\n\n\tSHUT_RD   = 0\n\tSHUT_WR   = 1\n\tSHUT_RDWR = 2\n\n\tWSADESCRIPTION_LEN = 256\n\tWSASYS_STATUS_LEN  = 128\n)\n\n// enum PMTUD_STATE from ws2ipdef.h\nconst (\n\tIP_PMTUDISC_NOT_SET = 0\n\tIP_PMTUDISC_DO      = 1\n\tIP_PMTUDISC_DONT    = 2\n\tIP_PMTUDISC_PROBE   = 3\n\tIP_PMTUDISC_MAX     = 4\n)\n\ntype WSABuf struct {\n\tLen uint32\n\tBuf *byte\n}\n\ntype WSAMsg struct {\n\tName        *syscall.RawSockaddrAny\n\tNamelen     int32\n\tBuffers     *WSABuf\n\tBufferCount uint32\n\tControl     WSABuf\n\tFlags       uint32\n}\n\ntype WSACMSGHDR struct {\n\tLen   uintptr\n\tLevel int32\n\tType  int32\n}\n\ntype IN_PKTINFO struct {\n\tAddr    [4]byte\n\tIfindex uint32\n}\n\ntype IN6_PKTINFO struct {\n\tAddr    [16]byte\n\tIfindex uint32\n}\n\n// Flags for WSASocket\nconst (\n\tWSA_FLAG_OVERLAPPED             = 0x01\n\tWSA_FLAG_MULTIPOINT_C_ROOT      = 0x02\n\tWSA_FLAG_MULTIPOINT_C_LEAF      = 0x04\n\tWSA_FLAG_MULTIPOINT_D_ROOT      = 0x08\n\tWSA_FLAG_MULTIPOINT_D_LEAF      = 0x10\n\tWSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40\n\tWSA_FLAG_NO_HANDLE_INHERIT      = 0x80\n\tWSA_FLAG_REGISTERED_IO          = 0x100\n)\n\n// Invented values to support what package os expects.\nconst (\n\tS_IFMT   = 0x1f000\n\tS_IFIFO  = 0x1000\n\tS_IFCHR  = 0x2000\n\tS_IFDIR  = 0x4000\n\tS_IFBLK  = 0x6000\n\tS_IFREG  = 0x8000\n\tS_IFLNK  = 0xa000\n\tS_IFSOCK = 0xc000\n\tS_ISUID  = 0x800\n\tS_ISGID  = 0x400\n\tS_ISVTX  = 0x200\n\tS_IRUSR  = 0x100\n\tS_IWRITE = 0x80\n\tS_IWUSR  = 0x80\n\tS_IXUSR  = 0x40\n)\n\nconst (\n\tFILE_TYPE_CHAR    = 0x0002\n\tFILE_TYPE_DISK    = 0x0001\n\tFILE_TYPE_PIPE    = 0x0003\n\tFILE_TYPE_REMOTE  = 0x8000\n\tFILE_TYPE_UNKNOWN = 0x0000\n)\n\ntype Hostent struct {\n\tName     *byte\n\tAliases  **byte\n\tAddrType uint16\n\tLength   uint16\n\tAddrList **byte\n}\n\ntype Protoent struct {\n\tName    *byte\n\tAliases **byte\n\tProto   uint16\n}\n\nconst (\n\tDNS_TYPE_A       = 0x0001\n\tDNS_TYPE_NS      = 0x0002\n\tDNS_TYPE_MD      = 0x0003\n\tDNS_TYPE_MF      = 0x0004\n\tDNS_TYPE_CNAME   = 0x0005\n\tDNS_TYPE_SOA     = 0x0006\n\tDNS_TYPE_MB      = 0x0007\n\tDNS_TYPE_MG      = 0x0008\n\tDNS_TYPE_MR      = 0x0009\n\tDNS_TYPE_NULL    = 0x000a\n\tDNS_TYPE_WKS     = 0x000b\n\tDNS_TYPE_PTR     = 0x000c\n\tDNS_TYPE_HINFO   = 0x000d\n\tDNS_TYPE_MINFO   = 0x000e\n\tDNS_TYPE_MX      = 0x000f\n\tDNS_TYPE_TEXT    = 0x0010\n\tDNS_TYPE_RP      = 0x0011\n\tDNS_TYPE_AFSDB   = 0x0012\n\tDNS_TYPE_X25     = 0x0013\n\tDNS_TYPE_ISDN    = 0x0014\n\tDNS_TYPE_RT      = 0x0015\n\tDNS_TYPE_NSAP    = 0x0016\n\tDNS_TYPE_NSAPPTR = 0x0017\n\tDNS_TYPE_SIG     = 0x0018\n\tDNS_TYPE_KEY     = 0x0019\n\tDNS_TYPE_PX      = 0x001a\n\tDNS_TYPE_GPOS    = 0x001b\n\tDNS_TYPE_AAAA    = 0x001c\n\tDNS_TYPE_LOC     = 0x001d\n\tDNS_TYPE_NXT     = 0x001e\n\tDNS_TYPE_EID     = 0x001f\n\tDNS_TYPE_NIMLOC  = 0x0020\n\tDNS_TYPE_SRV     = 0x0021\n\tDNS_TYPE_ATMA    = 0x0022\n\tDNS_TYPE_NAPTR   = 0x0023\n\tDNS_TYPE_KX      = 0x0024\n\tDNS_TYPE_CERT    = 0x0025\n\tDNS_TYPE_A6      = 0x0026\n\tDNS_TYPE_DNAME   = 0x0027\n\tDNS_TYPE_SINK    = 0x0028\n\tDNS_TYPE_OPT     = 0x0029\n\tDNS_TYPE_DS      = 0x002B\n\tDNS_TYPE_RRSIG   = 0x002E\n\tDNS_TYPE_NSEC    = 0x002F\n\tDNS_TYPE_DNSKEY  = 0x0030\n\tDNS_TYPE_DHCID   = 0x0031\n\tDNS_TYPE_UINFO   = 0x0064\n\tDNS_TYPE_UID     = 0x0065\n\tDNS_TYPE_GID     = 0x0066\n\tDNS_TYPE_UNSPEC  = 0x0067\n\tDNS_TYPE_ADDRS   = 0x00f8\n\tDNS_TYPE_TKEY    = 0x00f9\n\tDNS_TYPE_TSIG    = 0x00fa\n\tDNS_TYPE_IXFR    = 0x00fb\n\tDNS_TYPE_AXFR    = 0x00fc\n\tDNS_TYPE_MAILB   = 0x00fd\n\tDNS_TYPE_MAILA   = 0x00fe\n\tDNS_TYPE_ALL     = 0x00ff\n\tDNS_TYPE_ANY     = 0x00ff\n\tDNS_TYPE_WINS    = 0xff01\n\tDNS_TYPE_WINSR   = 0xff02\n\tDNS_TYPE_NBSTAT  = 0xff01\n)\n\nconst (\n\t// flags inside DNSRecord.Dw\n\tDnsSectionQuestion   = 0x0000\n\tDnsSectionAnswer     = 0x0001\n\tDnsSectionAuthority  = 0x0002\n\tDnsSectionAdditional = 0x0003\n)\n\nconst (\n\t// flags of WSALookupService\n\tLUP_DEEP                = 0x0001\n\tLUP_CONTAINERS          = 0x0002\n\tLUP_NOCONTAINERS        = 0x0004\n\tLUP_NEAREST             = 0x0008\n\tLUP_RETURN_NAME         = 0x0010\n\tLUP_RETURN_TYPE         = 0x0020\n\tLUP_RETURN_VERSION      = 0x0040\n\tLUP_RETURN_COMMENT      = 0x0080\n\tLUP_RETURN_ADDR         = 0x0100\n\tLUP_RETURN_BLOB         = 0x0200\n\tLUP_RETURN_ALIASES      = 0x0400\n\tLUP_RETURN_QUERY_STRING = 0x0800\n\tLUP_RETURN_ALL          = 0x0FF0\n\tLUP_RES_SERVICE         = 0x8000\n\n\tLUP_FLUSHCACHE    = 0x1000\n\tLUP_FLUSHPREVIOUS = 0x2000\n\n\tLUP_NON_AUTHORITATIVE      = 0x4000\n\tLUP_SECURE                 = 0x8000\n\tLUP_RETURN_PREFERRED_NAMES = 0x10000\n\tLUP_DNS_ONLY               = 0x20000\n\n\tLUP_ADDRCONFIG           = 0x100000\n\tLUP_DUAL_ADDR            = 0x200000\n\tLUP_FILESERVER           = 0x400000\n\tLUP_DISABLE_IDN_ENCODING = 0x00800000\n\tLUP_API_ANSI             = 0x01000000\n\n\tLUP_RESOLUTION_HANDLE = 0x80000000\n)\n\nconst (\n\t// values of WSAQUERYSET's namespace\n\tNS_ALL       = 0\n\tNS_DNS       = 12\n\tNS_NLA       = 15\n\tNS_BTH       = 16\n\tNS_EMAIL     = 37\n\tNS_PNRPNAME  = 38\n\tNS_PNRPCLOUD = 39\n)\n\ntype DNSSRVData struct {\n\tTarget   *uint16\n\tPriority uint16\n\tWeight   uint16\n\tPort     uint16\n\tPad      uint16\n}\n\ntype DNSPTRData struct {\n\tHost *uint16\n}\n\ntype DNSMXData struct {\n\tNameExchange *uint16\n\tPreference   uint16\n\tPad          uint16\n}\n\ntype DNSTXTData struct {\n\tStringCount uint16\n\tStringArray [1]*uint16\n}\n\ntype DNSRecord struct {\n\tNext     *DNSRecord\n\tName     *uint16\n\tType     uint16\n\tLength   uint16\n\tDw       uint32\n\tTtl      uint32\n\tReserved uint32\n\tData     [40]byte\n}\n\nconst (\n\tTF_DISCONNECT         = 1\n\tTF_REUSE_SOCKET       = 2\n\tTF_WRITE_BEHIND       = 4\n\tTF_USE_DEFAULT_WORKER = 0\n\tTF_USE_SYSTEM_THREAD  = 16\n\tTF_USE_KERNEL_APC     = 32\n)\n\ntype TransmitFileBuffers struct {\n\tHead       uintptr\n\tHeadLength uint32\n\tTail       uintptr\n\tTailLength uint32\n}\n\nconst (\n\tIFF_UP           = 1\n\tIFF_BROADCAST    = 2\n\tIFF_LOOPBACK     = 4\n\tIFF_POINTTOPOINT = 8\n\tIFF_MULTICAST    = 16\n)\n\nconst SIO_GET_INTERFACE_LIST = 0x4004747F\n\n// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old.\n// will be fixed to change variable type as suitable.\n\ntype SockaddrGen [24]byte\n\ntype InterfaceInfo struct {\n\tFlags            uint32\n\tAddress          SockaddrGen\n\tBroadcastAddress SockaddrGen\n\tNetmask          SockaddrGen\n}\n\ntype IpAddressString struct {\n\tString [16]byte\n}\n\ntype IpMaskString IpAddressString\n\ntype IpAddrString struct {\n\tNext      *IpAddrString\n\tIpAddress IpAddressString\n\tIpMask    IpMaskString\n\tContext   uint32\n}\n\nconst MAX_ADAPTER_NAME_LENGTH = 256\nconst MAX_ADAPTER_DESCRIPTION_LENGTH = 128\nconst MAX_ADAPTER_ADDRESS_LENGTH = 8\n\ntype IpAdapterInfo struct {\n\tNext                *IpAdapterInfo\n\tComboIndex          uint32\n\tAdapterName         [MAX_ADAPTER_NAME_LENGTH + 4]byte\n\tDescription         [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte\n\tAddressLength       uint32\n\tAddress             [MAX_ADAPTER_ADDRESS_LENGTH]byte\n\tIndex               uint32\n\tType                uint32\n\tDhcpEnabled         uint32\n\tCurrentIpAddress    *IpAddrString\n\tIpAddressList       IpAddrString\n\tGatewayList         IpAddrString\n\tDhcpServer          IpAddrString\n\tHaveWins            bool\n\tPrimaryWinsServer   IpAddrString\n\tSecondaryWinsServer IpAddrString\n\tLeaseObtained       int64\n\tLeaseExpires        int64\n}\n\nconst MAXLEN_PHYSADDR = 8\nconst MAX_INTERFACE_NAME_LEN = 256\nconst MAXLEN_IFDESCR = 256\n\ntype MibIfRow struct {\n\tName            [MAX_INTERFACE_NAME_LEN]uint16\n\tIndex           uint32\n\tType            uint32\n\tMtu             uint32\n\tSpeed           uint32\n\tPhysAddrLen     uint32\n\tPhysAddr        [MAXLEN_PHYSADDR]byte\n\tAdminStatus     uint32\n\tOperStatus      uint32\n\tLastChange      uint32\n\tInOctets        uint32\n\tInUcastPkts     uint32\n\tInNUcastPkts    uint32\n\tInDiscards      uint32\n\tInErrors        uint32\n\tInUnknownProtos uint32\n\tOutOctets       uint32\n\tOutUcastPkts    uint32\n\tOutNUcastPkts   uint32\n\tOutDiscards     uint32\n\tOutErrors       uint32\n\tOutQLen         uint32\n\tDescrLen        uint32\n\tDescr           [MAXLEN_IFDESCR]byte\n}\n\ntype CertInfo struct {\n\tVersion              uint32\n\tSerialNumber         CryptIntegerBlob\n\tSignatureAlgorithm   CryptAlgorithmIdentifier\n\tIssuer               CertNameBlob\n\tNotBefore            Filetime\n\tNotAfter             Filetime\n\tSubject              CertNameBlob\n\tSubjectPublicKeyInfo CertPublicKeyInfo\n\tIssuerUniqueId       CryptBitBlob\n\tSubjectUniqueId      CryptBitBlob\n\tCountExtensions      uint32\n\tExtensions           *CertExtension\n}\n\ntype CertExtension struct {\n\tObjId    *byte\n\tCritical int32\n\tValue    CryptObjidBlob\n}\n\ntype CryptAlgorithmIdentifier struct {\n\tObjId      *byte\n\tParameters CryptObjidBlob\n}\n\ntype CertPublicKeyInfo struct {\n\tAlgorithm CryptAlgorithmIdentifier\n\tPublicKey CryptBitBlob\n}\n\ntype DataBlob struct {\n\tSize uint32\n\tData *byte\n}\ntype CryptIntegerBlob DataBlob\ntype CryptUintBlob DataBlob\ntype CryptObjidBlob DataBlob\ntype CertNameBlob DataBlob\ntype CertRdnValueBlob DataBlob\ntype CertBlob DataBlob\ntype CrlBlob DataBlob\ntype CryptDataBlob DataBlob\ntype CryptHashBlob DataBlob\ntype CryptDigestBlob DataBlob\ntype CryptDerBlob DataBlob\ntype CryptAttrBlob DataBlob\n\ntype CryptBitBlob struct {\n\tSize       uint32\n\tData       *byte\n\tUnusedBits uint32\n}\n\ntype CertContext struct {\n\tEncodingType uint32\n\tEncodedCert  *byte\n\tLength       uint32\n\tCertInfo     *CertInfo\n\tStore        Handle\n}\n\ntype CertChainContext struct {\n\tSize                       uint32\n\tTrustStatus                CertTrustStatus\n\tChainCount                 uint32\n\tChains                     **CertSimpleChain\n\tLowerQualityChainCount     uint32\n\tLowerQualityChains         **CertChainContext\n\tHasRevocationFreshnessTime uint32\n\tRevocationFreshnessTime    uint32\n}\n\ntype CertTrustListInfo struct {\n\t// Not implemented\n}\n\ntype CertSimpleChain struct {\n\tSize                       uint32\n\tTrustStatus                CertTrustStatus\n\tNumElements                uint32\n\tElements                   **CertChainElement\n\tTrustListInfo              *CertTrustListInfo\n\tHasRevocationFreshnessTime uint32\n\tRevocationFreshnessTime    uint32\n}\n\ntype CertChainElement struct {\n\tSize              uint32\n\tCertContext       *CertContext\n\tTrustStatus       CertTrustStatus\n\tRevocationInfo    *CertRevocationInfo\n\tIssuanceUsage     *CertEnhKeyUsage\n\tApplicationUsage  *CertEnhKeyUsage\n\tExtendedErrorInfo *uint16\n}\n\ntype CertRevocationCrlInfo struct {\n\t// Not implemented\n}\n\ntype CertRevocationInfo struct {\n\tSize             uint32\n\tRevocationResult uint32\n\tRevocationOid    *byte\n\tOidSpecificInfo  Pointer\n\tHasFreshnessTime uint32\n\tFreshnessTime    uint32\n\tCrlInfo          *CertRevocationCrlInfo\n}\n\ntype CertTrustStatus struct {\n\tErrorStatus uint32\n\tInfoStatus  uint32\n}\n\ntype CertUsageMatch struct {\n\tType  uint32\n\tUsage CertEnhKeyUsage\n}\n\ntype CertEnhKeyUsage struct {\n\tLength           uint32\n\tUsageIdentifiers **byte\n}\n\ntype CertChainPara struct {\n\tSize                         uint32\n\tRequestedUsage               CertUsageMatch\n\tRequstedIssuancePolicy       CertUsageMatch\n\tURLRetrievalTimeout          uint32\n\tCheckRevocationFreshnessTime uint32\n\tRevocationFreshnessTime      uint32\n\tCacheResync                  *Filetime\n}\n\ntype CertChainPolicyPara struct {\n\tSize            uint32\n\tFlags           uint32\n\tExtraPolicyPara Pointer\n}\n\ntype SSLExtraCertChainPolicyPara struct {\n\tSize       uint32\n\tAuthType   uint32\n\tChecks     uint32\n\tServerName *uint16\n}\n\ntype CertChainPolicyStatus struct {\n\tSize              uint32\n\tError             uint32\n\tChainIndex        uint32\n\tElementIndex      uint32\n\tExtraPolicyStatus Pointer\n}\n\ntype CertPolicyInfo struct {\n\tIdentifier      *byte\n\tCountQualifiers uint32\n\tQualifiers      *CertPolicyQualifierInfo\n}\n\ntype CertPoliciesInfo struct {\n\tCount       uint32\n\tPolicyInfos *CertPolicyInfo\n}\n\ntype CertPolicyQualifierInfo struct {\n\t// Not implemented\n}\n\ntype CertStrongSignPara struct {\n\tSize                      uint32\n\tInfoChoice                uint32\n\tInfoOrSerializedInfoOrOID unsafe.Pointer\n}\n\ntype CryptProtectPromptStruct struct {\n\tSize        uint32\n\tPromptFlags uint32\n\tApp         HWND\n\tPrompt      *uint16\n}\n\ntype CertChainFindByIssuerPara struct {\n\tSize                   uint32\n\tUsageIdentifier        *byte\n\tKeySpec                uint32\n\tAcquirePrivateKeyFlags uint32\n\tIssuerCount            uint32\n\tIssuer                 Pointer\n\tFindCallback           Pointer\n\tFindArg                Pointer\n\tIssuerChainIndex       *uint32\n\tIssuerElementIndex     *uint32\n}\n\ntype WinTrustData struct {\n\tSize                            uint32\n\tPolicyCallbackData              uintptr\n\tSIPClientData                   uintptr\n\tUIChoice                        uint32\n\tRevocationChecks                uint32\n\tUnionChoice                     uint32\n\tFileOrCatalogOrBlobOrSgnrOrCert unsafe.Pointer\n\tStateAction                     uint32\n\tStateData                       Handle\n\tURLReference                    *uint16\n\tProvFlags                       uint32\n\tUIContext                       uint32\n\tSignatureSettings               *WinTrustSignatureSettings\n}\n\ntype WinTrustFileInfo struct {\n\tSize         uint32\n\tFilePath     *uint16\n\tFile         Handle\n\tKnownSubject *GUID\n}\n\ntype WinTrustSignatureSettings struct {\n\tSize             uint32\n\tIndex            uint32\n\tFlags            uint32\n\tSecondarySigs    uint32\n\tVerifiedSigIndex uint32\n\tCryptoPolicy     *CertStrongSignPara\n}\n\nconst (\n\t// do not reorder\n\tHKEY_CLASSES_ROOT = 0x80000000 + iota\n\tHKEY_CURRENT_USER\n\tHKEY_LOCAL_MACHINE\n\tHKEY_USERS\n\tHKEY_PERFORMANCE_DATA\n\tHKEY_CURRENT_CONFIG\n\tHKEY_DYN_DATA\n\n\tKEY_QUERY_VALUE        = 1\n\tKEY_SET_VALUE          = 2\n\tKEY_CREATE_SUB_KEY     = 4\n\tKEY_ENUMERATE_SUB_KEYS = 8\n\tKEY_NOTIFY             = 16\n\tKEY_CREATE_LINK        = 32\n\tKEY_WRITE              = 0x20006\n\tKEY_EXECUTE            = 0x20019\n\tKEY_READ               = 0x20019\n\tKEY_WOW64_64KEY        = 0x0100\n\tKEY_WOW64_32KEY        = 0x0200\n\tKEY_ALL_ACCESS         = 0xf003f\n)\n\nconst (\n\t// do not reorder\n\tREG_NONE = iota\n\tREG_SZ\n\tREG_EXPAND_SZ\n\tREG_BINARY\n\tREG_DWORD_LITTLE_ENDIAN\n\tREG_DWORD_BIG_ENDIAN\n\tREG_LINK\n\tREG_MULTI_SZ\n\tREG_RESOURCE_LIST\n\tREG_FULL_RESOURCE_DESCRIPTOR\n\tREG_RESOURCE_REQUIREMENTS_LIST\n\tREG_QWORD_LITTLE_ENDIAN\n\tREG_DWORD = REG_DWORD_LITTLE_ENDIAN\n\tREG_QWORD = REG_QWORD_LITTLE_ENDIAN\n)\n\nconst (\n\tEVENT_MODIFY_STATE = 0x0002\n\tEVENT_ALL_ACCESS   = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3\n\n\tMUTANT_QUERY_STATE = 0x0001\n\tMUTANT_ALL_ACCESS  = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE\n\n\tSEMAPHORE_MODIFY_STATE = 0x0002\n\tSEMAPHORE_ALL_ACCESS   = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3\n\n\tTIMER_QUERY_STATE  = 0x0001\n\tTIMER_MODIFY_STATE = 0x0002\n\tTIMER_ALL_ACCESS   = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE\n\n\tMUTEX_MODIFY_STATE = MUTANT_QUERY_STATE\n\tMUTEX_ALL_ACCESS   = MUTANT_ALL_ACCESS\n\n\tCREATE_EVENT_MANUAL_RESET  = 0x1\n\tCREATE_EVENT_INITIAL_SET   = 0x2\n\tCREATE_MUTEX_INITIAL_OWNER = 0x1\n)\n\ntype AddrinfoW struct {\n\tFlags     int32\n\tFamily    int32\n\tSocktype  int32\n\tProtocol  int32\n\tAddrlen   uintptr\n\tCanonname *uint16\n\tAddr      uintptr\n\tNext      *AddrinfoW\n}\n\nconst (\n\tAI_PASSIVE     = 1\n\tAI_CANONNAME   = 2\n\tAI_NUMERICHOST = 4\n)\n\ntype GUID struct {\n\tData1 uint32\n\tData2 uint16\n\tData3 uint16\n\tData4 [8]byte\n}\n\nvar WSAID_CONNECTEX = GUID{\n\t0x25a207b9,\n\t0xddf3,\n\t0x4660,\n\t[8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e},\n}\n\nvar WSAID_WSASENDMSG = GUID{\n\t0xa441e712,\n\t0x754f,\n\t0x43ca,\n\t[8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d},\n}\n\nvar WSAID_WSARECVMSG = GUID{\n\t0xf689d7c8,\n\t0x6f1f,\n\t0x436b,\n\t[8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22},\n}\n\nconst (\n\tFILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1\n\tFILE_SKIP_SET_EVENT_ON_HANDLE        = 2\n)\n\nconst (\n\tWSAPROTOCOL_LEN    = 255\n\tMAX_PROTOCOL_CHAIN = 7\n\tBASE_PROTOCOL      = 1\n\tLAYERED_PROTOCOL   = 0\n\n\tXP1_CONNECTIONLESS           = 0x00000001\n\tXP1_GUARANTEED_DELIVERY      = 0x00000002\n\tXP1_GUARANTEED_ORDER         = 0x00000004\n\tXP1_MESSAGE_ORIENTED         = 0x00000008\n\tXP1_PSEUDO_STREAM            = 0x00000010\n\tXP1_GRACEFUL_CLOSE           = 0x00000020\n\tXP1_EXPEDITED_DATA           = 0x00000040\n\tXP1_CONNECT_DATA             = 0x00000080\n\tXP1_DISCONNECT_DATA          = 0x00000100\n\tXP1_SUPPORT_BROADCAST        = 0x00000200\n\tXP1_SUPPORT_MULTIPOINT       = 0x00000400\n\tXP1_MULTIPOINT_CONTROL_PLANE = 0x00000800\n\tXP1_MULTIPOINT_DATA_PLANE    = 0x00001000\n\tXP1_QOS_SUPPORTED            = 0x00002000\n\tXP1_UNI_SEND                 = 0x00008000\n\tXP1_UNI_RECV                 = 0x00010000\n\tXP1_IFS_HANDLES              = 0x00020000\n\tXP1_PARTIAL_MESSAGE          = 0x00040000\n\tXP1_SAN_SUPPORT_SDP          = 0x00080000\n\n\tPFL_MULTIPLE_PROTO_ENTRIES  = 0x00000001\n\tPFL_RECOMMENDED_PROTO_ENTRY = 0x00000002\n\tPFL_HIDDEN                  = 0x00000004\n\tPFL_MATCHES_PROTOCOL_ZERO   = 0x00000008\n\tPFL_NETWORKDIRECT_PROVIDER  = 0x00000010\n)\n\ntype WSAProtocolInfo struct {\n\tServiceFlags1     uint32\n\tServiceFlags2     uint32\n\tServiceFlags3     uint32\n\tServiceFlags4     uint32\n\tProviderFlags     uint32\n\tProviderId        GUID\n\tCatalogEntryId    uint32\n\tProtocolChain     WSAProtocolChain\n\tVersion           int32\n\tAddressFamily     int32\n\tMaxSockAddr       int32\n\tMinSockAddr       int32\n\tSocketType        int32\n\tProtocol          int32\n\tProtocolMaxOffset int32\n\tNetworkByteOrder  int32\n\tSecurityScheme    int32\n\tMessageSize       uint32\n\tProviderReserved  uint32\n\tProtocolName      [WSAPROTOCOL_LEN + 1]uint16\n}\n\ntype WSAProtocolChain struct {\n\tChainLen     int32\n\tChainEntries [MAX_PROTOCOL_CHAIN]uint32\n}\n\ntype TCPKeepalive struct {\n\tOnOff    uint32\n\tTime     uint32\n\tInterval uint32\n}\n\ntype symbolicLinkReparseBuffer struct {\n\tSubstituteNameOffset uint16\n\tSubstituteNameLength uint16\n\tPrintNameOffset      uint16\n\tPrintNameLength      uint16\n\tFlags                uint32\n\tPathBuffer           [1]uint16\n}\n\ntype mountPointReparseBuffer struct {\n\tSubstituteNameOffset uint16\n\tSubstituteNameLength uint16\n\tPrintNameOffset      uint16\n\tPrintNameLength      uint16\n\tPathBuffer           [1]uint16\n}\n\ntype reparseDataBuffer struct {\n\tReparseTag        uint32\n\tReparseDataLength uint16\n\tReserved          uint16\n\n\t// GenericReparseBuffer\n\treparseBuffer byte\n}\n\nconst (\n\tFSCTL_CREATE_OR_GET_OBJECT_ID             = 0x0900C0\n\tFSCTL_DELETE_OBJECT_ID                    = 0x0900A0\n\tFSCTL_DELETE_REPARSE_POINT                = 0x0900AC\n\tFSCTL_DUPLICATE_EXTENTS_TO_FILE           = 0x098344\n\tFSCTL_DUPLICATE_EXTENTS_TO_FILE_EX        = 0x0983E8\n\tFSCTL_FILESYSTEM_GET_STATISTICS           = 0x090060\n\tFSCTL_FILE_LEVEL_TRIM                     = 0x098208\n\tFSCTL_FIND_FILES_BY_SID                   = 0x09008F\n\tFSCTL_GET_COMPRESSION                     = 0x09003C\n\tFSCTL_GET_INTEGRITY_INFORMATION           = 0x09027C\n\tFSCTL_GET_NTFS_VOLUME_DATA                = 0x090064\n\tFSCTL_GET_REFS_VOLUME_DATA                = 0x0902D8\n\tFSCTL_GET_OBJECT_ID                       = 0x09009C\n\tFSCTL_GET_REPARSE_POINT                   = 0x0900A8\n\tFSCTL_GET_RETRIEVAL_POINTER_COUNT         = 0x09042B\n\tFSCTL_GET_RETRIEVAL_POINTERS              = 0x090073\n\tFSCTL_GET_RETRIEVAL_POINTERS_AND_REFCOUNT = 0x0903D3\n\tFSCTL_IS_PATHNAME_VALID                   = 0x09002C\n\tFSCTL_LMR_SET_LINK_TRACKING_INFORMATION   = 0x1400EC\n\tFSCTL_MARK_HANDLE                         = 0x0900FC\n\tFSCTL_OFFLOAD_READ                        = 0x094264\n\tFSCTL_OFFLOAD_WRITE                       = 0x098268\n\tFSCTL_PIPE_PEEK                           = 0x11400C\n\tFSCTL_PIPE_TRANSCEIVE                     = 0x11C017\n\tFSCTL_PIPE_WAIT                           = 0x110018\n\tFSCTL_QUERY_ALLOCATED_RANGES              = 0x0940CF\n\tFSCTL_QUERY_FAT_BPB                       = 0x090058\n\tFSCTL_QUERY_FILE_REGIONS                  = 0x090284\n\tFSCTL_QUERY_ON_DISK_VOLUME_INFO           = 0x09013C\n\tFSCTL_QUERY_SPARING_INFO                  = 0x090138\n\tFSCTL_READ_FILE_USN_DATA                  = 0x0900EB\n\tFSCTL_RECALL_FILE                         = 0x090117\n\tFSCTL_REFS_STREAM_SNAPSHOT_MANAGEMENT     = 0x090440\n\tFSCTL_SET_COMPRESSION                     = 0x09C040\n\tFSCTL_SET_DEFECT_MANAGEMENT               = 0x098134\n\tFSCTL_SET_ENCRYPTION                      = 0x0900D7\n\tFSCTL_SET_INTEGRITY_INFORMATION           = 0x09C280\n\tFSCTL_SET_INTEGRITY_INFORMATION_EX        = 0x090380\n\tFSCTL_SET_OBJECT_ID                       = 0x090098\n\tFSCTL_SET_OBJECT_ID_EXTENDED              = 0x0900BC\n\tFSCTL_SET_REPARSE_POINT                   = 0x0900A4\n\tFSCTL_SET_SPARSE                          = 0x0900C4\n\tFSCTL_SET_ZERO_DATA                       = 0x0980C8\n\tFSCTL_SET_ZERO_ON_DEALLOCATION            = 0x090194\n\tFSCTL_SIS_COPYFILE                        = 0x090100\n\tFSCTL_WRITE_USN_CLOSE_RECORD              = 0x0900EF\n\n\tMAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024\n\tIO_REPARSE_TAG_MOUNT_POINT       = 0xA0000003\n\tIO_REPARSE_TAG_SYMLINK           = 0xA000000C\n\tSYMBOLIC_LINK_FLAG_DIRECTORY     = 0x1\n)\n\n// FILE_ZERO_DATA_INFORMATION from winioctl.h\ntype FileZeroDataInformation struct {\n\tFileOffset      int64\n\tBeyondFinalZero int64\n}\n\nconst (\n\tComputerNameNetBIOS                   = 0\n\tComputerNameDnsHostname               = 1\n\tComputerNameDnsDomain                 = 2\n\tComputerNameDnsFullyQualified         = 3\n\tComputerNamePhysicalNetBIOS           = 4\n\tComputerNamePhysicalDnsHostname       = 5\n\tComputerNamePhysicalDnsDomain         = 6\n\tComputerNamePhysicalDnsFullyQualified = 7\n\tComputerNameMax                       = 8\n)\n\n// For MessageBox()\nconst (\n\tMB_OK                   = 0x00000000\n\tMB_OKCANCEL             = 0x00000001\n\tMB_ABORTRETRYIGNORE     = 0x00000002\n\tMB_YESNOCANCEL          = 0x00000003\n\tMB_YESNO                = 0x00000004\n\tMB_RETRYCANCEL          = 0x00000005\n\tMB_CANCELTRYCONTINUE    = 0x00000006\n\tMB_ICONHAND             = 0x00000010\n\tMB_ICONQUESTION         = 0x00000020\n\tMB_ICONEXCLAMATION      = 0x00000030\n\tMB_ICONASTERISK         = 0x00000040\n\tMB_USERICON             = 0x00000080\n\tMB_ICONWARNING          = MB_ICONEXCLAMATION\n\tMB_ICONERROR            = MB_ICONHAND\n\tMB_ICONINFORMATION      = MB_ICONASTERISK\n\tMB_ICONSTOP             = MB_ICONHAND\n\tMB_DEFBUTTON1           = 0x00000000\n\tMB_DEFBUTTON2           = 0x00000100\n\tMB_DEFBUTTON3           = 0x00000200\n\tMB_DEFBUTTON4           = 0x00000300\n\tMB_APPLMODAL            = 0x00000000\n\tMB_SYSTEMMODAL          = 0x00001000\n\tMB_TASKMODAL            = 0x00002000\n\tMB_HELP                 = 0x00004000\n\tMB_NOFOCUS              = 0x00008000\n\tMB_SETFOREGROUND        = 0x00010000\n\tMB_DEFAULT_DESKTOP_ONLY = 0x00020000\n\tMB_TOPMOST              = 0x00040000\n\tMB_RIGHT                = 0x00080000\n\tMB_RTLREADING           = 0x00100000\n\tMB_SERVICE_NOTIFICATION = 0x00200000\n)\n\nconst (\n\tMOVEFILE_REPLACE_EXISTING      = 0x1\n\tMOVEFILE_COPY_ALLOWED          = 0x2\n\tMOVEFILE_DELAY_UNTIL_REBOOT    = 0x4\n\tMOVEFILE_WRITE_THROUGH         = 0x8\n\tMOVEFILE_CREATE_HARDLINK       = 0x10\n\tMOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20\n)\n\n// Flags for GetAdaptersAddresses, see\n// https://learn.microsoft.com/en-us/windows/win32/api/iphlpapi/nf-iphlpapi-getadaptersaddresses.\nconst (\n\tGAA_FLAG_SKIP_UNICAST                = 0x1\n\tGAA_FLAG_SKIP_ANYCAST                = 0x2\n\tGAA_FLAG_SKIP_MULTICAST              = 0x4\n\tGAA_FLAG_SKIP_DNS_SERVER             = 0x8\n\tGAA_FLAG_INCLUDE_PREFIX              = 0x10\n\tGAA_FLAG_SKIP_FRIENDLY_NAME          = 0x20\n\tGAA_FLAG_INCLUDE_WINS_INFO           = 0x40\n\tGAA_FLAG_INCLUDE_GATEWAYS            = 0x80\n\tGAA_FLAG_INCLUDE_ALL_INTERFACES      = 0x100\n\tGAA_FLAG_INCLUDE_ALL_COMPARTMENTS    = 0x200\n\tGAA_FLAG_INCLUDE_TUNNEL_BINDINGORDER = 0x400\n)\n\nconst (\n\tIF_TYPE_OTHER              = 1\n\tIF_TYPE_ETHERNET_CSMACD    = 6\n\tIF_TYPE_ISO88025_TOKENRING = 9\n\tIF_TYPE_PPP                = 23\n\tIF_TYPE_SOFTWARE_LOOPBACK  = 24\n\tIF_TYPE_ATM                = 37\n\tIF_TYPE_IEEE80211          = 71\n\tIF_TYPE_TUNNEL             = 131\n\tIF_TYPE_IEEE1394           = 144\n)\n\n// Enum NL_PREFIX_ORIGIN for [IpAdapterUnicastAddress], see\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_prefix_origin\nconst (\n\tIpPrefixOriginOther               = 0\n\tIpPrefixOriginManual              = 1\n\tIpPrefixOriginWellKnown           = 2\n\tIpPrefixOriginDhcp                = 3\n\tIpPrefixOriginRouterAdvertisement = 4\n\tIpPrefixOriginUnchanged           = 1 << 4\n)\n\n// Enum NL_SUFFIX_ORIGIN for [IpAdapterUnicastAddress], see\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_suffix_origin\nconst (\n\tNlsoOther                      = 0\n\tNlsoManual                     = 1\n\tNlsoWellKnown                  = 2\n\tNlsoDhcp                       = 3\n\tNlsoLinkLayerAddress           = 4\n\tNlsoRandom                     = 5\n\tIpSuffixOriginOther            = 0\n\tIpSuffixOriginManual           = 1\n\tIpSuffixOriginWellKnown        = 2\n\tIpSuffixOriginDhcp             = 3\n\tIpSuffixOriginLinkLayerAddress = 4\n\tIpSuffixOriginRandom           = 5\n\tIpSuffixOriginUnchanged        = 1 << 4\n)\n\n// Enum NL_DAD_STATE for [IpAdapterUnicastAddress], see\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_dad_state\nconst (\n\tNldsInvalid          = 0\n\tNldsTentative        = 1\n\tNldsDuplicate        = 2\n\tNldsDeprecated       = 3\n\tNldsPreferred        = 4\n\tIpDadStateInvalid    = 0\n\tIpDadStateTentative  = 1\n\tIpDadStateDuplicate  = 2\n\tIpDadStateDeprecated = 3\n\tIpDadStatePreferred  = 4\n)\n\ntype SocketAddress struct {\n\tSockaddr       *syscall.RawSockaddrAny\n\tSockaddrLength int32\n}\n\n// IP returns an IPv4 or IPv6 address, or nil if the underlying SocketAddress is neither.\nfunc (addr *SocketAddress) IP() net.IP {\n\tif uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet4{}) && addr.Sockaddr.Addr.Family == AF_INET {\n\t\treturn (*RawSockaddrInet4)(unsafe.Pointer(addr.Sockaddr)).Addr[:]\n\t} else if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet6{}) && addr.Sockaddr.Addr.Family == AF_INET6 {\n\t\treturn (*RawSockaddrInet6)(unsafe.Pointer(addr.Sockaddr)).Addr[:]\n\t}\n\treturn nil\n}\n\ntype IpAdapterUnicastAddress struct {\n\tLength             uint32\n\tFlags              uint32\n\tNext               *IpAdapterUnicastAddress\n\tAddress            SocketAddress\n\tPrefixOrigin       int32\n\tSuffixOrigin       int32\n\tDadState           int32\n\tValidLifetime      uint32\n\tPreferredLifetime  uint32\n\tLeaseLifetime      uint32\n\tOnLinkPrefixLength uint8\n}\n\ntype IpAdapterAnycastAddress struct {\n\tLength  uint32\n\tFlags   uint32\n\tNext    *IpAdapterAnycastAddress\n\tAddress SocketAddress\n}\n\ntype IpAdapterMulticastAddress struct {\n\tLength  uint32\n\tFlags   uint32\n\tNext    *IpAdapterMulticastAddress\n\tAddress SocketAddress\n}\n\ntype IpAdapterDnsServerAdapter struct {\n\tLength   uint32\n\tReserved uint32\n\tNext     *IpAdapterDnsServerAdapter\n\tAddress  SocketAddress\n}\n\ntype IpAdapterPrefix struct {\n\tLength       uint32\n\tFlags        uint32\n\tNext         *IpAdapterPrefix\n\tAddress      SocketAddress\n\tPrefixLength uint32\n}\n\ntype IpAdapterAddresses struct {\n\tLength                 uint32\n\tIfIndex                uint32\n\tNext                   *IpAdapterAddresses\n\tAdapterName            *byte\n\tFirstUnicastAddress    *IpAdapterUnicastAddress\n\tFirstAnycastAddress    *IpAdapterAnycastAddress\n\tFirstMulticastAddress  *IpAdapterMulticastAddress\n\tFirstDnsServerAddress  *IpAdapterDnsServerAdapter\n\tDnsSuffix              *uint16\n\tDescription            *uint16\n\tFriendlyName           *uint16\n\tPhysicalAddress        [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte\n\tPhysicalAddressLength  uint32\n\tFlags                  uint32\n\tMtu                    uint32\n\tIfType                 uint32\n\tOperStatus             uint32\n\tIpv6IfIndex            uint32\n\tZoneIndices            [16]uint32\n\tFirstPrefix            *IpAdapterPrefix\n\tTransmitLinkSpeed      uint64\n\tReceiveLinkSpeed       uint64\n\tFirstWinsServerAddress *IpAdapterWinsServerAddress\n\tFirstGatewayAddress    *IpAdapterGatewayAddress\n\tIpv4Metric             uint32\n\tIpv6Metric             uint32\n\tLuid                   uint64\n\tDhcpv4Server           SocketAddress\n\tCompartmentId          uint32\n\tNetworkGuid            GUID\n\tConnectionType         uint32\n\tTunnelType             uint32\n\tDhcpv6Server           SocketAddress\n\tDhcpv6ClientDuid       [MAX_DHCPV6_DUID_LENGTH]byte\n\tDhcpv6ClientDuidLength uint32\n\tDhcpv6Iaid             uint32\n\tFirstDnsSuffix         *IpAdapterDNSSuffix\n}\n\ntype IpAdapterWinsServerAddress struct {\n\tLength   uint32\n\tReserved uint32\n\tNext     *IpAdapterWinsServerAddress\n\tAddress  SocketAddress\n}\n\ntype IpAdapterGatewayAddress struct {\n\tLength   uint32\n\tReserved uint32\n\tNext     *IpAdapterGatewayAddress\n\tAddress  SocketAddress\n}\n\ntype IpAdapterDNSSuffix struct {\n\tNext   *IpAdapterDNSSuffix\n\tString [MAX_DNS_SUFFIX_STRING_LENGTH]uint16\n}\n\nconst (\n\tIfOperStatusUp             = 1\n\tIfOperStatusDown           = 2\n\tIfOperStatusTesting        = 3\n\tIfOperStatusUnknown        = 4\n\tIfOperStatusDormant        = 5\n\tIfOperStatusNotPresent     = 6\n\tIfOperStatusLowerLayerDown = 7\n)\n\nconst (\n\tIF_MAX_PHYS_ADDRESS_LENGTH = 32\n\tIF_MAX_STRING_SIZE         = 256\n)\n\n// MIB_IF_ENTRY_LEVEL enumeration from netioapi.h or\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/nf-netioapi-getifentry2ex.\nconst (\n\tMibIfEntryNormal                  = 0\n\tMibIfEntryNormalWithoutStatistics = 2\n)\n\n// MIB_NOTIFICATION_TYPE enumeration from netioapi.h or\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ne-netioapi-mib_notification_type.\nconst (\n\tMibParameterNotification = 0\n\tMibAddInstance           = 1\n\tMibDeleteInstance        = 2\n\tMibInitialNotification   = 3\n)\n\n// MibIfRow2 stores information about a particular interface. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_if_row2.\ntype MibIfRow2 struct {\n\tInterfaceLuid               uint64\n\tInterfaceIndex              uint32\n\tInterfaceGuid               GUID\n\tAlias                       [IF_MAX_STRING_SIZE + 1]uint16\n\tDescription                 [IF_MAX_STRING_SIZE + 1]uint16\n\tPhysicalAddressLength       uint32\n\tPhysicalAddress             [IF_MAX_PHYS_ADDRESS_LENGTH]uint8\n\tPermanentPhysicalAddress    [IF_MAX_PHYS_ADDRESS_LENGTH]uint8\n\tMtu                         uint32\n\tType                        uint32\n\tTunnelType                  uint32\n\tMediaType                   uint32\n\tPhysicalMediumType          uint32\n\tAccessType                  uint32\n\tDirectionType               uint32\n\tInterfaceAndOperStatusFlags uint8\n\tOperStatus                  uint32\n\tAdminStatus                 uint32\n\tMediaConnectState           uint32\n\tNetworkGuid                 GUID\n\tConnectionType              uint32\n\tTransmitLinkSpeed           uint64\n\tReceiveLinkSpeed            uint64\n\tInOctets                    uint64\n\tInUcastPkts                 uint64\n\tInNUcastPkts                uint64\n\tInDiscards                  uint64\n\tInErrors                    uint64\n\tInUnknownProtos             uint64\n\tInUcastOctets               uint64\n\tInMulticastOctets           uint64\n\tInBroadcastOctets           uint64\n\tOutOctets                   uint64\n\tOutUcastPkts                uint64\n\tOutNUcastPkts               uint64\n\tOutDiscards                 uint64\n\tOutErrors                   uint64\n\tOutUcastOctets              uint64\n\tOutMulticastOctets          uint64\n\tOutBroadcastOctets          uint64\n\tOutQLen                     uint64\n}\n\n// MIB_IF_TABLE_LEVEL enumeration from netioapi.h or\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ne-netioapi-mib_if_table_level.\nconst (\n\tMibIfTableNormal                  = 0\n\tMibIfTableRaw                     = 1\n\tMibIfTableNormalWithoutStatistics = 2\n)\n\n// MibIfTable2 contains a table of logical and physical interface entries. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_if_table2.\ntype MibIfTable2 struct {\n\tNumEntries uint32\n\tTable      [1]MibIfRow2\n}\n\n// IP_ADDRESS_PREFIX stores an IP address prefix. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-ip_address_prefix.\ntype IpAddressPrefix struct {\n\tPrefix       RawSockaddrInet\n\tPrefixLength uint8\n}\n\n// NL_ROUTE_ORIGIN enumeration from nldef.h or\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_route_origin.\nconst (\n\tNlroManual              = 0\n\tNlroWellKnown           = 1\n\tNlroDHCP                = 2\n\tNlroRouterAdvertisement = 3\n\tNlro6to4                = 4\n)\n\n// NL_ROUTE_ORIGIN enumeration from nldef.h or\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_route_protocol.\nconst (\n\tMIB_IPPROTO_OTHER             = 1\n\tMIB_IPPROTO_LOCAL             = 2\n\tMIB_IPPROTO_NETMGMT           = 3\n\tMIB_IPPROTO_ICMP              = 4\n\tMIB_IPPROTO_EGP               = 5\n\tMIB_IPPROTO_GGP               = 6\n\tMIB_IPPROTO_HELLO             = 7\n\tMIB_IPPROTO_RIP               = 8\n\tMIB_IPPROTO_IS_IS             = 9\n\tMIB_IPPROTO_ES_IS             = 10\n\tMIB_IPPROTO_CISCO             = 11\n\tMIB_IPPROTO_BBN               = 12\n\tMIB_IPPROTO_OSPF              = 13\n\tMIB_IPPROTO_BGP               = 14\n\tMIB_IPPROTO_IDPR              = 15\n\tMIB_IPPROTO_EIGRP             = 16\n\tMIB_IPPROTO_DVMRP             = 17\n\tMIB_IPPROTO_RPL               = 18\n\tMIB_IPPROTO_DHCP              = 19\n\tMIB_IPPROTO_NT_AUTOSTATIC     = 10002\n\tMIB_IPPROTO_NT_STATIC         = 10006\n\tMIB_IPPROTO_NT_STATIC_NON_DOD = 10007\n)\n\n// MIB_IPFORWARD_ROW2 stores information about an IP route entry. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipforward_row2.\ntype MibIpForwardRow2 struct {\n\tInterfaceLuid        uint64\n\tInterfaceIndex       uint32\n\tDestinationPrefix    IpAddressPrefix\n\tNextHop              RawSockaddrInet\n\tSitePrefixLength     uint8\n\tValidLifetime        uint32\n\tPreferredLifetime    uint32\n\tMetric               uint32\n\tProtocol             uint32\n\tLoopback             uint8\n\tAutoconfigureAddress uint8\n\tPublish              uint8\n\tImmortal             uint8\n\tAge                  uint32\n\tOrigin               uint32\n}\n\n// MIB_IPFORWARD_TABLE2 contains a table of IP route entries. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipforward_table2.\ntype MibIpForwardTable2 struct {\n\tNumEntries uint32\n\tTable      [1]MibIpForwardRow2\n}\n\n// Rows returns the IP route entries in the table.\nfunc (t *MibIpForwardTable2) Rows() []MibIpForwardRow2 {\n\treturn unsafe.Slice(&t.Table[0], t.NumEntries)\n}\n\n// MIB_UNICASTIPADDRESS_ROW stores information about a unicast IP address. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_unicastipaddress_row.\ntype MibUnicastIpAddressRow struct {\n\tAddress            RawSockaddrInet6 // SOCKADDR_INET union\n\tInterfaceLuid      uint64\n\tInterfaceIndex     uint32\n\tPrefixOrigin       uint32\n\tSuffixOrigin       uint32\n\tValidLifetime      uint32\n\tPreferredLifetime  uint32\n\tOnLinkPrefixLength uint8\n\tSkipAsSource       uint8\n\tDadState           uint32\n\tScopeId            uint32\n\tCreationTimeStamp  Filetime\n}\n\n// MibUnicastIpAddressTable contains a table of unicast IP address entries. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_unicastipaddress_table.\ntype MibUnicastIpAddressTable struct {\n\tNumEntries uint32\n\tTable      [1]MibUnicastIpAddressRow\n}\n\nconst ScopeLevelCount = 16\n\n// MIB_IPINTERFACE_ROW stores interface management information for a particular IP address family on a network interface.\n// See https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipinterface_row.\ntype MibIpInterfaceRow struct {\n\tFamily                               uint16\n\tInterfaceLuid                        uint64\n\tInterfaceIndex                       uint32\n\tMaxReassemblySize                    uint32\n\tInterfaceIdentifier                  uint64\n\tMinRouterAdvertisementInterval       uint32\n\tMaxRouterAdvertisementInterval       uint32\n\tAdvertisingEnabled                   uint8\n\tForwardingEnabled                    uint8\n\tWeakHostSend                         uint8\n\tWeakHostReceive                      uint8\n\tUseAutomaticMetric                   uint8\n\tUseNeighborUnreachabilityDetection   uint8\n\tManagedAddressConfigurationSupported uint8\n\tOtherStatefulConfigurationSupported  uint8\n\tAdvertiseDefaultRoute                uint8\n\tRouterDiscoveryBehavior              uint32\n\tDadTransmits                         uint32\n\tBaseReachableTime                    uint32\n\tRetransmitTime                       uint32\n\tPathMtuDiscoveryTimeout              uint32\n\tLinkLocalAddressBehavior             uint32\n\tLinkLocalAddressTimeout              uint32\n\tZoneIndices                          [ScopeLevelCount]uint32\n\tSitePrefixLength                     uint32\n\tMetric                               uint32\n\tNlMtu                                uint32\n\tConnected                            uint8\n\tSupportsWakeUpPatterns               uint8\n\tSupportsNeighborDiscovery            uint8\n\tSupportsRouterDiscovery              uint8\n\tReachableTime                        uint32\n\tTransmitOffload                      uint32\n\tReceiveOffload                       uint32\n\tDisableDefaultRoutes                 uint8\n}\n\n// MibIpInterfaceTable contains a table of IP interface entries. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipinterface_table.\ntype MibIpInterfaceTable struct {\n\tNumEntries uint32\n\tTable      [1]MibIpInterfaceRow\n}\n\n// Console related constants used for the mode parameter to SetConsoleMode. See\n// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details.\n\nconst (\n\tENABLE_PROCESSED_INPUT        = 0x1\n\tENABLE_LINE_INPUT             = 0x2\n\tENABLE_ECHO_INPUT             = 0x4\n\tENABLE_WINDOW_INPUT           = 0x8\n\tENABLE_MOUSE_INPUT            = 0x10\n\tENABLE_INSERT_MODE            = 0x20\n\tENABLE_QUICK_EDIT_MODE        = 0x40\n\tENABLE_EXTENDED_FLAGS         = 0x80\n\tENABLE_AUTO_POSITION          = 0x100\n\tENABLE_VIRTUAL_TERMINAL_INPUT = 0x200\n\n\tENABLE_PROCESSED_OUTPUT            = 0x1\n\tENABLE_WRAP_AT_EOL_OUTPUT          = 0x2\n\tENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4\n\tDISABLE_NEWLINE_AUTO_RETURN        = 0x8\n\tENABLE_LVB_GRID_WORLDWIDE          = 0x10\n)\n\n// Pseudo console related constants used for the flags parameter to\n// CreatePseudoConsole. See: https://learn.microsoft.com/en-us/windows/console/createpseudoconsole\nconst (\n\tPSEUDOCONSOLE_INHERIT_CURSOR = 0x1\n)\n\ntype Coord struct {\n\tX int16\n\tY int16\n}\n\ntype SmallRect struct {\n\tLeft   int16\n\tTop    int16\n\tRight  int16\n\tBottom int16\n}\n\n// Used with GetConsoleScreenBuffer to retrieve information about a console\n// screen buffer. See\n// https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str\n// for details.\n\ntype ConsoleScreenBufferInfo struct {\n\tSize              Coord\n\tCursorPosition    Coord\n\tAttributes        uint16\n\tWindow            SmallRect\n\tMaximumWindowSize Coord\n}\n\nconst UNIX_PATH_MAX = 108 // defined in afunix.h\n\nconst (\n\t// flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags\n\tJOB_OBJECT_LIMIT_ACTIVE_PROCESS             = 0x00000008\n\tJOB_OBJECT_LIMIT_AFFINITY                   = 0x00000010\n\tJOB_OBJECT_LIMIT_BREAKAWAY_OK               = 0x00000800\n\tJOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400\n\tJOB_OBJECT_LIMIT_JOB_MEMORY                 = 0x00000200\n\tJOB_OBJECT_LIMIT_JOB_TIME                   = 0x00000004\n\tJOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE          = 0x00002000\n\tJOB_OBJECT_LIMIT_PRESERVE_JOB_TIME          = 0x00000040\n\tJOB_OBJECT_LIMIT_PRIORITY_CLASS             = 0x00000020\n\tJOB_OBJECT_LIMIT_PROCESS_MEMORY             = 0x00000100\n\tJOB_OBJECT_LIMIT_PROCESS_TIME               = 0x00000002\n\tJOB_OBJECT_LIMIT_SCHEDULING_CLASS           = 0x00000080\n\tJOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK        = 0x00001000\n\tJOB_OBJECT_LIMIT_SUBSET_AFFINITY            = 0x00004000\n\tJOB_OBJECT_LIMIT_WORKINGSET                 = 0x00000001\n)\n\ntype IO_COUNTERS struct {\n\tReadOperationCount  uint64\n\tWriteOperationCount uint64\n\tOtherOperationCount uint64\n\tReadTransferCount   uint64\n\tWriteTransferCount  uint64\n\tOtherTransferCount  uint64\n}\n\ntype JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct {\n\tBasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION\n\tIoInfo                IO_COUNTERS\n\tProcessMemoryLimit    uintptr\n\tJobMemoryLimit        uintptr\n\tPeakProcessMemoryUsed uintptr\n\tPeakJobMemoryUsed     uintptr\n}\n\nconst (\n\t// UIRestrictionsClass\n\tJOB_OBJECT_UILIMIT_DESKTOP          = 0x00000040\n\tJOB_OBJECT_UILIMIT_DISPLAYSETTINGS  = 0x00000010\n\tJOB_OBJECT_UILIMIT_EXITWINDOWS      = 0x00000080\n\tJOB_OBJECT_UILIMIT_GLOBALATOMS      = 0x00000020\n\tJOB_OBJECT_UILIMIT_HANDLES          = 0x00000001\n\tJOB_OBJECT_UILIMIT_READCLIPBOARD    = 0x00000002\n\tJOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008\n\tJOB_OBJECT_UILIMIT_WRITECLIPBOARD   = 0x00000004\n)\n\ntype JOBOBJECT_BASIC_UI_RESTRICTIONS struct {\n\tUIRestrictionsClass uint32\n}\n\nconst (\n\t// JobObjectInformationClass for QueryInformationJobObject and SetInformationJobObject\n\tJobObjectAssociateCompletionPortInformation = 7\n\tJobObjectBasicAccountingInformation         = 1\n\tJobObjectBasicAndIoAccountingInformation    = 8\n\tJobObjectBasicLimitInformation              = 2\n\tJobObjectBasicProcessIdList                 = 3\n\tJobObjectBasicUIRestrictions                = 4\n\tJobObjectCpuRateControlInformation          = 15\n\tJobObjectEndOfJobTimeInformation            = 6\n\tJobObjectExtendedLimitInformation           = 9\n\tJobObjectGroupInformation                   = 11\n\tJobObjectGroupInformationEx                 = 14\n\tJobObjectLimitViolationInformation          = 13\n\tJobObjectLimitViolationInformation2         = 34\n\tJobObjectNetRateControlInformation          = 32\n\tJobObjectNotificationLimitInformation       = 12\n\tJobObjectNotificationLimitInformation2      = 33\n\tJobObjectSecurityLimitInformation           = 5\n)\n\nconst (\n\tKF_FLAG_DEFAULT                          = 0x00000000\n\tKF_FLAG_FORCE_APP_DATA_REDIRECTION       = 0x00080000\n\tKF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000\n\tKF_FLAG_FORCE_PACKAGE_REDIRECTION        = 0x00020000\n\tKF_FLAG_NO_PACKAGE_REDIRECTION           = 0x00010000\n\tKF_FLAG_FORCE_APPCONTAINER_REDIRECTION   = 0x00020000\n\tKF_FLAG_NO_APPCONTAINER_REDIRECTION      = 0x00010000\n\tKF_FLAG_CREATE                           = 0x00008000\n\tKF_FLAG_DONT_VERIFY                      = 0x00004000\n\tKF_FLAG_DONT_UNEXPAND                    = 0x00002000\n\tKF_FLAG_NO_ALIAS                         = 0x00001000\n\tKF_FLAG_INIT                             = 0x00000800\n\tKF_FLAG_DEFAULT_PATH                     = 0x00000400\n\tKF_FLAG_NOT_PARENT_RELATIVE              = 0x00000200\n\tKF_FLAG_SIMPLE_IDLIST                    = 0x00000100\n\tKF_FLAG_ALIAS_ONLY                       = 0x80000000\n)\n\ntype OsVersionInfoEx struct {\n\tosVersionInfoSize uint32\n\tMajorVersion      uint32\n\tMinorVersion      uint32\n\tBuildNumber       uint32\n\tPlatformId        uint32\n\tCsdVersion        [128]uint16\n\tServicePackMajor  uint16\n\tServicePackMinor  uint16\n\tSuiteMask         uint16\n\tProductType       byte\n\t_                 byte\n}\n\nconst (\n\tEWX_LOGOFF          = 0x00000000\n\tEWX_SHUTDOWN        = 0x00000001\n\tEWX_REBOOT          = 0x00000002\n\tEWX_FORCE           = 0x00000004\n\tEWX_POWEROFF        = 0x00000008\n\tEWX_FORCEIFHUNG     = 0x00000010\n\tEWX_QUICKRESOLVE    = 0x00000020\n\tEWX_RESTARTAPPS     = 0x00000040\n\tEWX_HYBRID_SHUTDOWN = 0x00400000\n\tEWX_BOOTOPTIONS     = 0x01000000\n\n\tSHTDN_REASON_FLAG_COMMENT_REQUIRED          = 0x01000000\n\tSHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000\n\tSHTDN_REASON_FLAG_CLEAN_UI                  = 0x04000000\n\tSHTDN_REASON_FLAG_DIRTY_UI                  = 0x08000000\n\tSHTDN_REASON_FLAG_USER_DEFINED              = 0x40000000\n\tSHTDN_REASON_FLAG_PLANNED                   = 0x80000000\n\tSHTDN_REASON_MAJOR_OTHER                    = 0x00000000\n\tSHTDN_REASON_MAJOR_NONE                     = 0x00000000\n\tSHTDN_REASON_MAJOR_HARDWARE                 = 0x00010000\n\tSHTDN_REASON_MAJOR_OPERATINGSYSTEM          = 0x00020000\n\tSHTDN_REASON_MAJOR_SOFTWARE                 = 0x00030000\n\tSHTDN_REASON_MAJOR_APPLICATION              = 0x00040000\n\tSHTDN_REASON_MAJOR_SYSTEM                   = 0x00050000\n\tSHTDN_REASON_MAJOR_POWER                    = 0x00060000\n\tSHTDN_REASON_MAJOR_LEGACY_API               = 0x00070000\n\tSHTDN_REASON_MINOR_OTHER                    = 0x00000000\n\tSHTDN_REASON_MINOR_NONE                     = 0x000000ff\n\tSHTDN_REASON_MINOR_MAINTENANCE              = 0x00000001\n\tSHTDN_REASON_MINOR_INSTALLATION             = 0x00000002\n\tSHTDN_REASON_MINOR_UPGRADE                  = 0x00000003\n\tSHTDN_REASON_MINOR_RECONFIG                 = 0x00000004\n\tSHTDN_REASON_MINOR_HUNG                     = 0x00000005\n\tSHTDN_REASON_MINOR_UNSTABLE                 = 0x00000006\n\tSHTDN_REASON_MINOR_DISK                     = 0x00000007\n\tSHTDN_REASON_MINOR_PROCESSOR                = 0x00000008\n\tSHTDN_REASON_MINOR_NETWORKCARD              = 0x00000009\n\tSHTDN_REASON_MINOR_POWER_SUPPLY             = 0x0000000a\n\tSHTDN_REASON_MINOR_CORDUNPLUGGED            = 0x0000000b\n\tSHTDN_REASON_MINOR_ENVIRONMENT              = 0x0000000c\n\tSHTDN_REASON_MINOR_HARDWARE_DRIVER          = 0x0000000d\n\tSHTDN_REASON_MINOR_OTHERDRIVER              = 0x0000000e\n\tSHTDN_REASON_MINOR_BLUESCREEN               = 0x0000000F\n\tSHTDN_REASON_MINOR_SERVICEPACK              = 0x00000010\n\tSHTDN_REASON_MINOR_HOTFIX                   = 0x00000011\n\tSHTDN_REASON_MINOR_SECURITYFIX              = 0x00000012\n\tSHTDN_REASON_MINOR_SECURITY                 = 0x00000013\n\tSHTDN_REASON_MINOR_NETWORK_CONNECTIVITY     = 0x00000014\n\tSHTDN_REASON_MINOR_WMI                      = 0x00000015\n\tSHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL    = 0x00000016\n\tSHTDN_REASON_MINOR_HOTFIX_UNINSTALL         = 0x00000017\n\tSHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL    = 0x00000018\n\tSHTDN_REASON_MINOR_MMC                      = 0x00000019\n\tSHTDN_REASON_MINOR_SYSTEMRESTORE            = 0x0000001a\n\tSHTDN_REASON_MINOR_TERMSRV                  = 0x00000020\n\tSHTDN_REASON_MINOR_DC_PROMOTION             = 0x00000021\n\tSHTDN_REASON_MINOR_DC_DEMOTION              = 0x00000022\n\tSHTDN_REASON_UNKNOWN                        = SHTDN_REASON_MINOR_NONE\n\tSHTDN_REASON_LEGACY_API                     = SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED\n\tSHTDN_REASON_VALID_BIT_MASK                 = 0xc0ffffff\n\n\tSHUTDOWN_NORETRY = 0x1\n)\n\n// Flags used for GetModuleHandleEx\nconst (\n\tGET_MODULE_HANDLE_EX_FLAG_PIN                = 1\n\tGET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2\n\tGET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS       = 4\n)\n\n// MUI function flag values\nconst (\n\tMUI_LANGUAGE_ID                    = 0x4\n\tMUI_LANGUAGE_NAME                  = 0x8\n\tMUI_MERGE_SYSTEM_FALLBACK          = 0x10\n\tMUI_MERGE_USER_FALLBACK            = 0x20\n\tMUI_UI_FALLBACK                    = MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK\n\tMUI_THREAD_LANGUAGES               = 0x40\n\tMUI_CONSOLE_FILTER                 = 0x100\n\tMUI_COMPLEX_SCRIPT_FILTER          = 0x200\n\tMUI_RESET_FILTERS                  = 0x001\n\tMUI_USER_PREFERRED_UI_LANGUAGES    = 0x10\n\tMUI_USE_INSTALLED_LANGUAGES        = 0x20\n\tMUI_USE_SEARCH_ALL_LANGUAGES       = 0x40\n\tMUI_LANG_NEUTRAL_PE_FILE           = 0x100\n\tMUI_NON_LANG_NEUTRAL_FILE          = 0x200\n\tMUI_MACHINE_LANGUAGE_SETTINGS      = 0x400\n\tMUI_FILETYPE_NOT_LANGUAGE_NEUTRAL  = 0x001\n\tMUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN = 0x002\n\tMUI_FILETYPE_LANGUAGE_NEUTRAL_MUI  = 0x004\n\tMUI_QUERY_TYPE                     = 0x001\n\tMUI_QUERY_CHECKSUM                 = 0x002\n\tMUI_QUERY_LANGUAGE_NAME            = 0x004\n\tMUI_QUERY_RESOURCE_TYPES           = 0x008\n\tMUI_FILEINFO_VERSION               = 0x001\n\n\tMUI_FULL_LANGUAGE      = 0x01\n\tMUI_PARTIAL_LANGUAGE   = 0x02\n\tMUI_LIP_LANGUAGE       = 0x04\n\tMUI_LANGUAGE_INSTALLED = 0x20\n\tMUI_LANGUAGE_LICENSED  = 0x40\n)\n\n// FILE_INFO_BY_HANDLE_CLASS constants for SetFileInformationByHandle/GetFileInformationByHandleEx\nconst (\n\tFileBasicInfo                  = 0\n\tFileStandardInfo               = 1\n\tFileNameInfo                   = 2\n\tFileRenameInfo                 = 3\n\tFileDispositionInfo            = 4\n\tFileAllocationInfo             = 5\n\tFileEndOfFileInfo              = 6\n\tFileStreamInfo                 = 7\n\tFileCompressionInfo            = 8\n\tFileAttributeTagInfo           = 9\n\tFileIdBothDirectoryInfo        = 10\n\tFileIdBothDirectoryRestartInfo = 11\n\tFileIoPriorityHintInfo         = 12\n\tFileRemoteProtocolInfo         = 13\n\tFileFullDirectoryInfo          = 14\n\tFileFullDirectoryRestartInfo   = 15\n\tFileStorageInfo                = 16\n\tFileAlignmentInfo              = 17\n\tFileIdInfo                     = 18\n\tFileIdExtdDirectoryInfo        = 19\n\tFileIdExtdDirectoryRestartInfo = 20\n\tFileDispositionInfoEx          = 21\n\tFileRenameInfoEx               = 22\n\tFileCaseSensitiveInfo          = 23\n\tFileNormalizedNameInfo         = 24\n)\n\n// LoadLibrary flags for determining from where to search for a DLL\nconst (\n\tDONT_RESOLVE_DLL_REFERENCES               = 0x1\n\tLOAD_LIBRARY_AS_DATAFILE                  = 0x2\n\tLOAD_WITH_ALTERED_SEARCH_PATH             = 0x8\n\tLOAD_IGNORE_CODE_AUTHZ_LEVEL              = 0x10\n\tLOAD_LIBRARY_AS_IMAGE_RESOURCE            = 0x20\n\tLOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE        = 0x40\n\tLOAD_LIBRARY_REQUIRE_SIGNED_TARGET        = 0x80\n\tLOAD_LIBRARY_SEARCH_DLL_LOAD_DIR          = 0x100\n\tLOAD_LIBRARY_SEARCH_APPLICATION_DIR       = 0x200\n\tLOAD_LIBRARY_SEARCH_USER_DIRS             = 0x400\n\tLOAD_LIBRARY_SEARCH_SYSTEM32              = 0x800\n\tLOAD_LIBRARY_SEARCH_DEFAULT_DIRS          = 0x1000\n\tLOAD_LIBRARY_SAFE_CURRENT_DIRS            = 0x00002000\n\tLOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER = 0x00004000\n\tLOAD_LIBRARY_OS_INTEGRITY_CONTINUITY      = 0x00008000\n)\n\n// RegNotifyChangeKeyValue notifyFilter flags.\nconst (\n\t// REG_NOTIFY_CHANGE_NAME notifies the caller if a subkey is added or deleted.\n\tREG_NOTIFY_CHANGE_NAME = 0x00000001\n\n\t// REG_NOTIFY_CHANGE_ATTRIBUTES notifies the caller of changes to the attributes of the key, such as the security descriptor information.\n\tREG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002\n\n\t// REG_NOTIFY_CHANGE_LAST_SET notifies the caller of changes to a value of the key. This can include adding or deleting a value, or changing an existing value.\n\tREG_NOTIFY_CHANGE_LAST_SET = 0x00000004\n\n\t// REG_NOTIFY_CHANGE_SECURITY notifies the caller of changes to the security descriptor of the key.\n\tREG_NOTIFY_CHANGE_SECURITY = 0x00000008\n\n\t// REG_NOTIFY_THREAD_AGNOSTIC indicates that the lifetime of the registration must not be tied to the lifetime of the thread issuing the RegNotifyChangeKeyValue call. Note: This flag value is only supported in Windows 8 and later.\n\tREG_NOTIFY_THREAD_AGNOSTIC = 0x10000000\n)\n\ntype CommTimeouts struct {\n\tReadIntervalTimeout         uint32\n\tReadTotalTimeoutMultiplier  uint32\n\tReadTotalTimeoutConstant    uint32\n\tWriteTotalTimeoutMultiplier uint32\n\tWriteTotalTimeoutConstant   uint32\n}\n\n// NTUnicodeString is a UTF-16 string for NT native APIs, corresponding to UNICODE_STRING.\ntype NTUnicodeString struct {\n\t// Note: Length and MaximumLength are in *bytes*, not uint16s.\n\t// They should always be even.\n\tLength        uint16\n\tMaximumLength uint16\n\tBuffer        *uint16\n}\n\n// NTString is an ANSI string for NT native APIs, corresponding to STRING.\ntype NTString struct {\n\tLength        uint16\n\tMaximumLength uint16\n\tBuffer        *byte\n}\n\ntype LIST_ENTRY struct {\n\tFlink *LIST_ENTRY\n\tBlink *LIST_ENTRY\n}\n\ntype RUNTIME_FUNCTION struct {\n\tBeginAddress uint32\n\tEndAddress   uint32\n\tUnwindData   uint32\n}\n\ntype LDR_DATA_TABLE_ENTRY struct {\n\treserved1          [2]uintptr\n\tInMemoryOrderLinks LIST_ENTRY\n\treserved2          [2]uintptr\n\tDllBase            uintptr\n\treserved3          [2]uintptr\n\tFullDllName        NTUnicodeString\n\treserved4          [8]byte\n\treserved5          [3]uintptr\n\treserved6          uintptr\n\tTimeDateStamp      uint32\n}\n\ntype PEB_LDR_DATA struct {\n\treserved1               [8]byte\n\treserved2               [3]uintptr\n\tInMemoryOrderModuleList LIST_ENTRY\n}\n\ntype CURDIR struct {\n\tDosPath NTUnicodeString\n\tHandle  Handle\n}\n\ntype RTL_DRIVE_LETTER_CURDIR struct {\n\tFlags     uint16\n\tLength    uint16\n\tTimeStamp uint32\n\tDosPath   NTString\n}\n\ntype RTL_USER_PROCESS_PARAMETERS struct {\n\tMaximumLength, Length uint32\n\n\tFlags, DebugFlags uint32\n\n\tConsoleHandle                                Handle\n\tConsoleFlags                                 uint32\n\tStandardInput, StandardOutput, StandardError Handle\n\n\tCurrentDirectory CURDIR\n\tDllPath          NTUnicodeString\n\tImagePathName    NTUnicodeString\n\tCommandLine      NTUnicodeString\n\tEnvironment      unsafe.Pointer\n\n\tStartingX, StartingY, CountX, CountY, CountCharsX, CountCharsY, FillAttribute uint32\n\n\tWindowFlags, ShowWindowFlags                     uint32\n\tWindowTitle, DesktopInfo, ShellInfo, RuntimeData NTUnicodeString\n\tCurrentDirectories                               [32]RTL_DRIVE_LETTER_CURDIR\n\n\tEnvironmentSize, EnvironmentVersion uintptr\n\n\tPackageDependencyData unsafe.Pointer\n\tProcessGroupId        uint32\n\tLoaderThreads         uint32\n\n\tRedirectionDllName               NTUnicodeString\n\tHeapPartitionName                NTUnicodeString\n\tDefaultThreadpoolCpuSetMasks     uintptr\n\tDefaultThreadpoolCpuSetMaskCount uint32\n}\n\ntype PEB struct {\n\treserved1              [2]byte\n\tBeingDebugged          byte\n\tBitField               byte\n\treserved3              uintptr\n\tImageBaseAddress       uintptr\n\tLdr                    *PEB_LDR_DATA\n\tProcessParameters      *RTL_USER_PROCESS_PARAMETERS\n\treserved4              [3]uintptr\n\tAtlThunkSListPtr       uintptr\n\treserved5              uintptr\n\treserved6              uint32\n\treserved7              uintptr\n\treserved8              uint32\n\tAtlThunkSListPtr32     uint32\n\treserved9              [45]uintptr\n\treserved10             [96]byte\n\tPostProcessInitRoutine uintptr\n\treserved11             [128]byte\n\treserved12             [1]uintptr\n\tSessionId              uint32\n}\n\ntype OBJECT_ATTRIBUTES struct {\n\tLength             uint32\n\tRootDirectory      Handle\n\tObjectName         *NTUnicodeString\n\tAttributes         uint32\n\tSecurityDescriptor *SECURITY_DESCRIPTOR\n\tSecurityQoS        *SECURITY_QUALITY_OF_SERVICE\n}\n\n// Values for the Attributes member of OBJECT_ATTRIBUTES.\nconst (\n\tOBJ_INHERIT                       = 0x00000002\n\tOBJ_PERMANENT                     = 0x00000010\n\tOBJ_EXCLUSIVE                     = 0x00000020\n\tOBJ_CASE_INSENSITIVE              = 0x00000040\n\tOBJ_OPENIF                        = 0x00000080\n\tOBJ_OPENLINK                      = 0x00000100\n\tOBJ_KERNEL_HANDLE                 = 0x00000200\n\tOBJ_FORCE_ACCESS_CHECK            = 0x00000400\n\tOBJ_IGNORE_IMPERSONATED_DEVICEMAP = 0x00000800\n\tOBJ_DONT_REPARSE                  = 0x00001000\n\tOBJ_VALID_ATTRIBUTES              = 0x00001FF2\n)\n\ntype IO_STATUS_BLOCK struct {\n\tStatus      NTStatus\n\tInformation uintptr\n}\n\ntype RTLP_CURDIR_REF struct {\n\tRefCount int32\n\tHandle   Handle\n}\n\ntype RTL_RELATIVE_NAME struct {\n\tRelativeName        NTUnicodeString\n\tContainingDirectory Handle\n\tCurDirRef           *RTLP_CURDIR_REF\n}\n\nconst (\n\t// CreateDisposition flags for NtCreateFile and NtCreateNamedPipeFile.\n\tFILE_SUPERSEDE           = 0x00000000\n\tFILE_OPEN                = 0x00000001\n\tFILE_CREATE              = 0x00000002\n\tFILE_OPEN_IF             = 0x00000003\n\tFILE_OVERWRITE           = 0x00000004\n\tFILE_OVERWRITE_IF        = 0x00000005\n\tFILE_MAXIMUM_DISPOSITION = 0x00000005\n\n\t// CreateOptions flags for NtCreateFile and NtCreateNamedPipeFile.\n\tFILE_DIRECTORY_FILE            = 0x00000001\n\tFILE_WRITE_THROUGH             = 0x00000002\n\tFILE_SEQUENTIAL_ONLY           = 0x00000004\n\tFILE_NO_INTERMEDIATE_BUFFERING = 0x00000008\n\tFILE_SYNCHRONOUS_IO_ALERT      = 0x00000010\n\tFILE_SYNCHRONOUS_IO_NONALERT   = 0x00000020\n\tFILE_NON_DIRECTORY_FILE        = 0x00000040\n\tFILE_CREATE_TREE_CONNECTION    = 0x00000080\n\tFILE_COMPLETE_IF_OPLOCKED      = 0x00000100\n\tFILE_NO_EA_KNOWLEDGE           = 0x00000200\n\tFILE_OPEN_REMOTE_INSTANCE      = 0x00000400\n\tFILE_RANDOM_ACCESS             = 0x00000800\n\tFILE_DELETE_ON_CLOSE           = 0x00001000\n\tFILE_OPEN_BY_FILE_ID           = 0x00002000\n\tFILE_OPEN_FOR_BACKUP_INTENT    = 0x00004000\n\tFILE_NO_COMPRESSION            = 0x00008000\n\tFILE_OPEN_REQUIRING_OPLOCK     = 0x00010000\n\tFILE_DISALLOW_EXCLUSIVE        = 0x00020000\n\tFILE_RESERVE_OPFILTER          = 0x00100000\n\tFILE_OPEN_REPARSE_POINT        = 0x00200000\n\tFILE_OPEN_NO_RECALL            = 0x00400000\n\tFILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000\n\n\t// Parameter constants for NtCreateNamedPipeFile.\n\n\tFILE_PIPE_BYTE_STREAM_TYPE = 0x00000000\n\tFILE_PIPE_MESSAGE_TYPE     = 0x00000001\n\n\tFILE_PIPE_ACCEPT_REMOTE_CLIENTS = 0x00000000\n\tFILE_PIPE_REJECT_REMOTE_CLIENTS = 0x00000002\n\n\tFILE_PIPE_TYPE_VALID_MASK = 0x00000003\n\n\tFILE_PIPE_BYTE_STREAM_MODE = 0x00000000\n\tFILE_PIPE_MESSAGE_MODE     = 0x00000001\n\n\tFILE_PIPE_QUEUE_OPERATION    = 0x00000000\n\tFILE_PIPE_COMPLETE_OPERATION = 0x00000001\n\n\tFILE_PIPE_INBOUND     = 0x00000000\n\tFILE_PIPE_OUTBOUND    = 0x00000001\n\tFILE_PIPE_FULL_DUPLEX = 0x00000002\n\n\tFILE_PIPE_DISCONNECTED_STATE = 0x00000001\n\tFILE_PIPE_LISTENING_STATE    = 0x00000002\n\tFILE_PIPE_CONNECTED_STATE    = 0x00000003\n\tFILE_PIPE_CLOSING_STATE      = 0x00000004\n\n\tFILE_PIPE_CLIENT_END = 0x00000000\n\tFILE_PIPE_SERVER_END = 0x00000001\n)\n\nconst (\n\t// FileInformationClass for NtSetInformationFile\n\tFileBasicInformation                         = 4\n\tFileRenameInformation                        = 10\n\tFileDispositionInformation                   = 13\n\tFilePositionInformation                      = 14\n\tFileEndOfFileInformation                     = 20\n\tFileValidDataLengthInformation               = 39\n\tFileShortNameInformation                     = 40\n\tFileIoPriorityHintInformation                = 43\n\tFileReplaceCompletionInformation             = 61\n\tFileDispositionInformationEx                 = 64\n\tFileCaseSensitiveInformation                 = 71\n\tFileLinkInformation                          = 72\n\tFileCaseSensitiveInformationForceAccessCheck = 75\n\tFileKnownFolderInformation                   = 76\n\n\t// Flags for FILE_RENAME_INFORMATION\n\tFILE_RENAME_REPLACE_IF_EXISTS                    = 0x00000001\n\tFILE_RENAME_POSIX_SEMANTICS                      = 0x00000002\n\tFILE_RENAME_SUPPRESS_PIN_STATE_INHERITANCE       = 0x00000004\n\tFILE_RENAME_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008\n\tFILE_RENAME_NO_INCREASE_AVAILABLE_SPACE          = 0x00000010\n\tFILE_RENAME_NO_DECREASE_AVAILABLE_SPACE          = 0x00000020\n\tFILE_RENAME_PRESERVE_AVAILABLE_SPACE             = 0x00000030\n\tFILE_RENAME_IGNORE_READONLY_ATTRIBUTE            = 0x00000040\n\tFILE_RENAME_FORCE_RESIZE_TARGET_SR               = 0x00000080\n\tFILE_RENAME_FORCE_RESIZE_SOURCE_SR               = 0x00000100\n\tFILE_RENAME_FORCE_RESIZE_SR                      = 0x00000180\n\n\t// Flags for FILE_DISPOSITION_INFORMATION_EX\n\tFILE_DISPOSITION_DO_NOT_DELETE             = 0x00000000\n\tFILE_DISPOSITION_DELETE                    = 0x00000001\n\tFILE_DISPOSITION_POSIX_SEMANTICS           = 0x00000002\n\tFILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK = 0x00000004\n\tFILE_DISPOSITION_ON_CLOSE                  = 0x00000008\n\tFILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE = 0x00000010\n\n\t// Flags for FILE_CASE_SENSITIVE_INFORMATION\n\tFILE_CS_FLAG_CASE_SENSITIVE_DIR = 0x00000001\n\n\t// Flags for FILE_LINK_INFORMATION\n\tFILE_LINK_REPLACE_IF_EXISTS                    = 0x00000001\n\tFILE_LINK_POSIX_SEMANTICS                      = 0x00000002\n\tFILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008\n\tFILE_LINK_NO_INCREASE_AVAILABLE_SPACE          = 0x00000010\n\tFILE_LINK_NO_DECREASE_AVAILABLE_SPACE          = 0x00000020\n\tFILE_LINK_PRESERVE_AVAILABLE_SPACE             = 0x00000030\n\tFILE_LINK_IGNORE_READONLY_ATTRIBUTE            = 0x00000040\n\tFILE_LINK_FORCE_RESIZE_TARGET_SR               = 0x00000080\n\tFILE_LINK_FORCE_RESIZE_SOURCE_SR               = 0x00000100\n\tFILE_LINK_FORCE_RESIZE_SR                      = 0x00000180\n)\n\n// ProcessInformationClasses for NtQueryInformationProcess and NtSetInformationProcess.\nconst (\n\tProcessBasicInformation = iota\n\tProcessQuotaLimits\n\tProcessIoCounters\n\tProcessVmCounters\n\tProcessTimes\n\tProcessBasePriority\n\tProcessRaisePriority\n\tProcessDebugPort\n\tProcessExceptionPort\n\tProcessAccessToken\n\tProcessLdtInformation\n\tProcessLdtSize\n\tProcessDefaultHardErrorMode\n\tProcessIoPortHandlers\n\tProcessPooledUsageAndLimits\n\tProcessWorkingSetWatch\n\tProcessUserModeIOPL\n\tProcessEnableAlignmentFaultFixup\n\tProcessPriorityClass\n\tProcessWx86Information\n\tProcessHandleCount\n\tProcessAffinityMask\n\tProcessPriorityBoost\n\tProcessDeviceMap\n\tProcessSessionInformation\n\tProcessForegroundInformation\n\tProcessWow64Information\n\tProcessImageFileName\n\tProcessLUIDDeviceMapsEnabled\n\tProcessBreakOnTermination\n\tProcessDebugObjectHandle\n\tProcessDebugFlags\n\tProcessHandleTracing\n\tProcessIoPriority\n\tProcessExecuteFlags\n\tProcessTlsInformation\n\tProcessCookie\n\tProcessImageInformation\n\tProcessCycleTime\n\tProcessPagePriority\n\tProcessInstrumentationCallback\n\tProcessThreadStackAllocation\n\tProcessWorkingSetWatchEx\n\tProcessImageFileNameWin32\n\tProcessImageFileMapping\n\tProcessAffinityUpdateMode\n\tProcessMemoryAllocationMode\n\tProcessGroupInformation\n\tProcessTokenVirtualizationEnabled\n\tProcessConsoleHostProcess\n\tProcessWindowInformation\n\tProcessHandleInformation\n\tProcessMitigationPolicy\n\tProcessDynamicFunctionTableInformation\n\tProcessHandleCheckingMode\n\tProcessKeepAliveCount\n\tProcessRevokeFileHandles\n\tProcessWorkingSetControl\n\tProcessHandleTable\n\tProcessCheckStackExtentsMode\n\tProcessCommandLineInformation\n\tProcessProtectionInformation\n\tProcessMemoryExhaustion\n\tProcessFaultInformation\n\tProcessTelemetryIdInformation\n\tProcessCommitReleaseInformation\n\tProcessDefaultCpuSetsInformation\n\tProcessAllowedCpuSetsInformation\n\tProcessSubsystemProcess\n\tProcessJobMemoryInformation\n\tProcessInPrivate\n\tProcessRaiseUMExceptionOnInvalidHandleClose\n\tProcessIumChallengeResponse\n\tProcessChildProcessInformation\n\tProcessHighGraphicsPriorityInformation\n\tProcessSubsystemInformation\n\tProcessEnergyValues\n\tProcessActivityThrottleState\n\tProcessActivityThrottlePolicy\n\tProcessWin32kSyscallFilterInformation\n\tProcessDisableSystemAllowedCpuSets\n\tProcessWakeInformation\n\tProcessEnergyTrackingState\n\tProcessManageWritesToExecutableMemory\n\tProcessCaptureTrustletLiveDump\n\tProcessTelemetryCoverage\n\tProcessEnclaveInformation\n\tProcessEnableReadWriteVmLogging\n\tProcessUptimeInformation\n\tProcessImageSection\n\tProcessDebugAuthInformation\n\tProcessSystemResourceManagement\n\tProcessSequenceNumber\n\tProcessLoaderDetour\n\tProcessSecurityDomainInformation\n\tProcessCombineSecurityDomainsInformation\n\tProcessEnableLogging\n\tProcessLeapSecondInformation\n\tProcessFiberShadowStackAllocation\n\tProcessFreeFiberShadowStackAllocation\n\tProcessAltSystemCallInformation\n\tProcessDynamicEHContinuationTargets\n\tProcessDynamicEnforcedCetCompatibleRanges\n)\n\ntype PROCESS_BASIC_INFORMATION struct {\n\tExitStatus                   NTStatus\n\tPebBaseAddress               *PEB\n\tAffinityMask                 uintptr\n\tBasePriority                 int32\n\tUniqueProcessId              uintptr\n\tInheritedFromUniqueProcessId uintptr\n}\n\ntype SYSTEM_PROCESS_INFORMATION struct {\n\tNextEntryOffset              uint32\n\tNumberOfThreads              uint32\n\tWorkingSetPrivateSize        int64\n\tHardFaultCount               uint32\n\tNumberOfThreadsHighWatermark uint32\n\tCycleTime                    uint64\n\tCreateTime                   int64\n\tUserTime                     int64\n\tKernelTime                   int64\n\tImageName                    NTUnicodeString\n\tBasePriority                 int32\n\tUniqueProcessID              uintptr\n\tInheritedFromUniqueProcessID uintptr\n\tHandleCount                  uint32\n\tSessionID                    uint32\n\tUniqueProcessKey             *uint32\n\tPeakVirtualSize              uintptr\n\tVirtualSize                  uintptr\n\tPageFaultCount               uint32\n\tPeakWorkingSetSize           uintptr\n\tWorkingSetSize               uintptr\n\tQuotaPeakPagedPoolUsage      uintptr\n\tQuotaPagedPoolUsage          uintptr\n\tQuotaPeakNonPagedPoolUsage   uintptr\n\tQuotaNonPagedPoolUsage       uintptr\n\tPagefileUsage                uintptr\n\tPeakPagefileUsage            uintptr\n\tPrivatePageCount             uintptr\n\tReadOperationCount           int64\n\tWriteOperationCount          int64\n\tOtherOperationCount          int64\n\tReadTransferCount            int64\n\tWriteTransferCount           int64\n\tOtherTransferCount           int64\n}\n\n// SystemInformationClasses for NtQuerySystemInformation and NtSetSystemInformation\nconst (\n\tSystemBasicInformation = iota\n\tSystemProcessorInformation\n\tSystemPerformanceInformation\n\tSystemTimeOfDayInformation\n\tSystemPathInformation\n\tSystemProcessInformation\n\tSystemCallCountInformation\n\tSystemDeviceInformation\n\tSystemProcessorPerformanceInformation\n\tSystemFlagsInformation\n\tSystemCallTimeInformation\n\tSystemModuleInformation\n\tSystemLocksInformation\n\tSystemStackTraceInformation\n\tSystemPagedPoolInformation\n\tSystemNonPagedPoolInformation\n\tSystemHandleInformation\n\tSystemObjectInformation\n\tSystemPageFileInformation\n\tSystemVdmInstemulInformation\n\tSystemVdmBopInformation\n\tSystemFileCacheInformation\n\tSystemPoolTagInformation\n\tSystemInterruptInformation\n\tSystemDpcBehaviorInformation\n\tSystemFullMemoryInformation\n\tSystemLoadGdiDriverInformation\n\tSystemUnloadGdiDriverInformation\n\tSystemTimeAdjustmentInformation\n\tSystemSummaryMemoryInformation\n\tSystemMirrorMemoryInformation\n\tSystemPerformanceTraceInformation\n\tsystemObsolete0\n\tSystemExceptionInformation\n\tSystemCrashDumpStateInformation\n\tSystemKernelDebuggerInformation\n\tSystemContextSwitchInformation\n\tSystemRegistryQuotaInformation\n\tSystemExtendServiceTableInformation\n\tSystemPrioritySeperation\n\tSystemVerifierAddDriverInformation\n\tSystemVerifierRemoveDriverInformation\n\tSystemProcessorIdleInformation\n\tSystemLegacyDriverInformation\n\tSystemCurrentTimeZoneInformation\n\tSystemLookasideInformation\n\tSystemTimeSlipNotification\n\tSystemSessionCreate\n\tSystemSessionDetach\n\tSystemSessionInformation\n\tSystemRangeStartInformation\n\tSystemVerifierInformation\n\tSystemVerifierThunkExtend\n\tSystemSessionProcessInformation\n\tSystemLoadGdiDriverInSystemSpace\n\tSystemNumaProcessorMap\n\tSystemPrefetcherInformation\n\tSystemExtendedProcessInformation\n\tSystemRecommendedSharedDataAlignment\n\tSystemComPlusPackage\n\tSystemNumaAvailableMemory\n\tSystemProcessorPowerInformation\n\tSystemEmulationBasicInformation\n\tSystemEmulationProcessorInformation\n\tSystemExtendedHandleInformation\n\tSystemLostDelayedWriteInformation\n\tSystemBigPoolInformation\n\tSystemSessionPoolTagInformation\n\tSystemSessionMappedViewInformation\n\tSystemHotpatchInformation\n\tSystemObjectSecurityMode\n\tSystemWatchdogTimerHandler\n\tSystemWatchdogTimerInformation\n\tSystemLogicalProcessorInformation\n\tSystemWow64SharedInformationObsolete\n\tSystemRegisterFirmwareTableInformationHandler\n\tSystemFirmwareTableInformation\n\tSystemModuleInformationEx\n\tSystemVerifierTriageInformation\n\tSystemSuperfetchInformation\n\tSystemMemoryListInformation\n\tSystemFileCacheInformationEx\n\tSystemThreadPriorityClientIdInformation\n\tSystemProcessorIdleCycleTimeInformation\n\tSystemVerifierCancellationInformation\n\tSystemProcessorPowerInformationEx\n\tSystemRefTraceInformation\n\tSystemSpecialPoolInformation\n\tSystemProcessIdInformation\n\tSystemErrorPortInformation\n\tSystemBootEnvironmentInformation\n\tSystemHypervisorInformation\n\tSystemVerifierInformationEx\n\tSystemTimeZoneInformation\n\tSystemImageFileExecutionOptionsInformation\n\tSystemCoverageInformation\n\tSystemPrefetchPatchInformation\n\tSystemVerifierFaultsInformation\n\tSystemSystemPartitionInformation\n\tSystemSystemDiskInformation\n\tSystemProcessorPerformanceDistribution\n\tSystemNumaProximityNodeInformation\n\tSystemDynamicTimeZoneInformation\n\tSystemCodeIntegrityInformation\n\tSystemProcessorMicrocodeUpdateInformation\n\tSystemProcessorBrandString\n\tSystemVirtualAddressInformation\n\tSystemLogicalProcessorAndGroupInformation\n\tSystemProcessorCycleTimeInformation\n\tSystemStoreInformation\n\tSystemRegistryAppendString\n\tSystemAitSamplingValue\n\tSystemVhdBootInformation\n\tSystemCpuQuotaInformation\n\tSystemNativeBasicInformation\n\tsystemSpare1\n\tSystemLowPriorityIoInformation\n\tSystemTpmBootEntropyInformation\n\tSystemVerifierCountersInformation\n\tSystemPagedPoolInformationEx\n\tSystemSystemPtesInformationEx\n\tSystemNodeDistanceInformation\n\tSystemAcpiAuditInformation\n\tSystemBasicPerformanceInformation\n\tSystemQueryPerformanceCounterInformation\n\tSystemSessionBigPoolInformation\n\tSystemBootGraphicsInformation\n\tSystemScrubPhysicalMemoryInformation\n\tSystemBadPageInformation\n\tSystemProcessorProfileControlArea\n\tSystemCombinePhysicalMemoryInformation\n\tSystemEntropyInterruptTimingCallback\n\tSystemConsoleInformation\n\tSystemPlatformBinaryInformation\n\tSystemThrottleNotificationInformation\n\tSystemHypervisorProcessorCountInformation\n\tSystemDeviceDataInformation\n\tSystemDeviceDataEnumerationInformation\n\tSystemMemoryTopologyInformation\n\tSystemMemoryChannelInformation\n\tSystemBootLogoInformation\n\tSystemProcessorPerformanceInformationEx\n\tsystemSpare0\n\tSystemSecureBootPolicyInformation\n\tSystemPageFileInformationEx\n\tSystemSecureBootInformation\n\tSystemEntropyInterruptTimingRawInformation\n\tSystemPortableWorkspaceEfiLauncherInformation\n\tSystemFullProcessInformation\n\tSystemKernelDebuggerInformationEx\n\tSystemBootMetadataInformation\n\tSystemSoftRebootInformation\n\tSystemElamCertificateInformation\n\tSystemOfflineDumpConfigInformation\n\tSystemProcessorFeaturesInformation\n\tSystemRegistryReconciliationInformation\n\tSystemEdidInformation\n\tSystemManufacturingInformation\n\tSystemEnergyEstimationConfigInformation\n\tSystemHypervisorDetailInformation\n\tSystemProcessorCycleStatsInformation\n\tSystemVmGenerationCountInformation\n\tSystemTrustedPlatformModuleInformation\n\tSystemKernelDebuggerFlags\n\tSystemCodeIntegrityPolicyInformation\n\tSystemIsolatedUserModeInformation\n\tSystemHardwareSecurityTestInterfaceResultsInformation\n\tSystemSingleModuleInformation\n\tSystemAllowedCpuSetsInformation\n\tSystemDmaProtectionInformation\n\tSystemInterruptCpuSetsInformation\n\tSystemSecureBootPolicyFullInformation\n\tSystemCodeIntegrityPolicyFullInformation\n\tSystemAffinitizedInterruptProcessorInformation\n\tSystemRootSiloInformation\n)\n\ntype RTL_PROCESS_MODULE_INFORMATION struct {\n\tSection          Handle\n\tMappedBase       uintptr\n\tImageBase        uintptr\n\tImageSize        uint32\n\tFlags            uint32\n\tLoadOrderIndex   uint16\n\tInitOrderIndex   uint16\n\tLoadCount        uint16\n\tOffsetToFileName uint16\n\tFullPathName     [256]byte\n}\n\ntype RTL_PROCESS_MODULES struct {\n\tNumberOfModules uint32\n\tModules         [1]RTL_PROCESS_MODULE_INFORMATION\n}\n\n// Constants for LocalAlloc flags.\nconst (\n\tLMEM_FIXED          = 0x0\n\tLMEM_MOVEABLE       = 0x2\n\tLMEM_NOCOMPACT      = 0x10\n\tLMEM_NODISCARD      = 0x20\n\tLMEM_ZEROINIT       = 0x40\n\tLMEM_MODIFY         = 0x80\n\tLMEM_DISCARDABLE    = 0xf00\n\tLMEM_VALID_FLAGS    = 0xf72\n\tLMEM_INVALID_HANDLE = 0x8000\n\tLHND                = LMEM_MOVEABLE | LMEM_ZEROINIT\n\tLPTR                = LMEM_FIXED | LMEM_ZEROINIT\n\tNONZEROLHND         = LMEM_MOVEABLE\n\tNONZEROLPTR         = LMEM_FIXED\n)\n\n// Constants for the CreateNamedPipe-family of functions.\nconst (\n\tPIPE_ACCESS_INBOUND  = 0x1\n\tPIPE_ACCESS_OUTBOUND = 0x2\n\tPIPE_ACCESS_DUPLEX   = 0x3\n\n\tPIPE_CLIENT_END = 0x0\n\tPIPE_SERVER_END = 0x1\n\n\tPIPE_WAIT                  = 0x0\n\tPIPE_NOWAIT                = 0x1\n\tPIPE_READMODE_BYTE         = 0x0\n\tPIPE_READMODE_MESSAGE      = 0x2\n\tPIPE_TYPE_BYTE             = 0x0\n\tPIPE_TYPE_MESSAGE          = 0x4\n\tPIPE_ACCEPT_REMOTE_CLIENTS = 0x0\n\tPIPE_REJECT_REMOTE_CLIENTS = 0x8\n\n\tPIPE_UNLIMITED_INSTANCES = 255\n)\n\n// Constants for security attributes when opening named pipes.\nconst (\n\tSECURITY_ANONYMOUS      = SecurityAnonymous << 16\n\tSECURITY_IDENTIFICATION = SecurityIdentification << 16\n\tSECURITY_IMPERSONATION  = SecurityImpersonation << 16\n\tSECURITY_DELEGATION     = SecurityDelegation << 16\n\n\tSECURITY_CONTEXT_TRACKING = 0x40000\n\tSECURITY_EFFECTIVE_ONLY   = 0x80000\n\n\tSECURITY_SQOS_PRESENT     = 0x100000\n\tSECURITY_VALID_SQOS_FLAGS = 0x1f0000\n)\n\n// ResourceID represents a 16-bit resource identifier, traditionally created with the MAKEINTRESOURCE macro.\ntype ResourceID uint16\n\n// ResourceIDOrString must be either a ResourceID, to specify a resource or resource type by ID,\n// or a string, to specify a resource or resource type by name.\ntype ResourceIDOrString interface{}\n\n// Predefined resource names and types.\nvar (\n\t// Predefined names.\n\tCREATEPROCESS_MANIFEST_RESOURCE_ID                 ResourceID = 1\n\tISOLATIONAWARE_MANIFEST_RESOURCE_ID                ResourceID = 2\n\tISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID ResourceID = 3\n\tISOLATIONPOLICY_MANIFEST_RESOURCE_ID               ResourceID = 4\n\tISOLATIONPOLICY_BROWSER_MANIFEST_RESOURCE_ID       ResourceID = 5\n\tMINIMUM_RESERVED_MANIFEST_RESOURCE_ID              ResourceID = 1  // inclusive\n\tMAXIMUM_RESERVED_MANIFEST_RESOURCE_ID              ResourceID = 16 // inclusive\n\n\t// Predefined types.\n\tRT_CURSOR       ResourceID = 1\n\tRT_BITMAP       ResourceID = 2\n\tRT_ICON         ResourceID = 3\n\tRT_MENU         ResourceID = 4\n\tRT_DIALOG       ResourceID = 5\n\tRT_STRING       ResourceID = 6\n\tRT_FONTDIR      ResourceID = 7\n\tRT_FONT         ResourceID = 8\n\tRT_ACCELERATOR  ResourceID = 9\n\tRT_RCDATA       ResourceID = 10\n\tRT_MESSAGETABLE ResourceID = 11\n\tRT_GROUP_CURSOR ResourceID = 12\n\tRT_GROUP_ICON   ResourceID = 14\n\tRT_VERSION      ResourceID = 16\n\tRT_DLGINCLUDE   ResourceID = 17\n\tRT_PLUGPLAY     ResourceID = 19\n\tRT_VXD          ResourceID = 20\n\tRT_ANICURSOR    ResourceID = 21\n\tRT_ANIICON      ResourceID = 22\n\tRT_HTML         ResourceID = 23\n\tRT_MANIFEST     ResourceID = 24\n)\n\ntype VS_FIXEDFILEINFO struct {\n\tSignature        uint32\n\tStrucVersion     uint32\n\tFileVersionMS    uint32\n\tFileVersionLS    uint32\n\tProductVersionMS uint32\n\tProductVersionLS uint32\n\tFileFlagsMask    uint32\n\tFileFlags        uint32\n\tFileOS           uint32\n\tFileType         uint32\n\tFileSubtype      uint32\n\tFileDateMS       uint32\n\tFileDateLS       uint32\n}\n\ntype COAUTHIDENTITY struct {\n\tUser           *uint16\n\tUserLength     uint32\n\tDomain         *uint16\n\tDomainLength   uint32\n\tPassword       *uint16\n\tPasswordLength uint32\n\tFlags          uint32\n}\n\ntype COAUTHINFO struct {\n\tAuthnSvc           uint32\n\tAuthzSvc           uint32\n\tServerPrincName    *uint16\n\tAuthnLevel         uint32\n\tImpersonationLevel uint32\n\tAuthIdentityData   *COAUTHIDENTITY\n\tCapabilities       uint32\n}\n\ntype COSERVERINFO struct {\n\tReserved1 uint32\n\tAame      *uint16\n\tAuthInfo  *COAUTHINFO\n\tReserved2 uint32\n}\n\ntype BIND_OPTS3 struct {\n\tCbStruct          uint32\n\tFlags             uint32\n\tMode              uint32\n\tTickCountDeadline uint32\n\tTrackFlags        uint32\n\tClassContext      uint32\n\tLocale            uint32\n\tServerInfo        *COSERVERINFO\n\tHwnd              HWND\n}\n\nconst (\n\tCLSCTX_INPROC_SERVER          = 0x1\n\tCLSCTX_INPROC_HANDLER         = 0x2\n\tCLSCTX_LOCAL_SERVER           = 0x4\n\tCLSCTX_INPROC_SERVER16        = 0x8\n\tCLSCTX_REMOTE_SERVER          = 0x10\n\tCLSCTX_INPROC_HANDLER16       = 0x20\n\tCLSCTX_RESERVED1              = 0x40\n\tCLSCTX_RESERVED2              = 0x80\n\tCLSCTX_RESERVED3              = 0x100\n\tCLSCTX_RESERVED4              = 0x200\n\tCLSCTX_NO_CODE_DOWNLOAD       = 0x400\n\tCLSCTX_RESERVED5              = 0x800\n\tCLSCTX_NO_CUSTOM_MARSHAL      = 0x1000\n\tCLSCTX_ENABLE_CODE_DOWNLOAD   = 0x2000\n\tCLSCTX_NO_FAILURE_LOG         = 0x4000\n\tCLSCTX_DISABLE_AAA            = 0x8000\n\tCLSCTX_ENABLE_AAA             = 0x10000\n\tCLSCTX_FROM_DEFAULT_CONTEXT   = 0x20000\n\tCLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000\n\tCLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000\n\tCLSCTX_ENABLE_CLOAKING        = 0x100000\n\tCLSCTX_APPCONTAINER           = 0x400000\n\tCLSCTX_ACTIVATE_AAA_AS_IU     = 0x800000\n\tCLSCTX_PS_DLL                 = 0x80000000\n\n\tCOINIT_MULTITHREADED     = 0x0\n\tCOINIT_APARTMENTTHREADED = 0x2\n\tCOINIT_DISABLE_OLE1DDE   = 0x4\n\tCOINIT_SPEED_OVER_MEMORY = 0x8\n)\n\n// Flag for QueryFullProcessImageName.\nconst PROCESS_NAME_NATIVE = 1\n\ntype ModuleInfo struct {\n\tBaseOfDll   uintptr\n\tSizeOfImage uint32\n\tEntryPoint  uintptr\n}\n\nconst ALL_PROCESSOR_GROUPS = 0xFFFF\n\ntype Rect struct {\n\tLeft   int32\n\tTop    int32\n\tRight  int32\n\tBottom int32\n}\n\ntype GUIThreadInfo struct {\n\tSize        uint32\n\tFlags       uint32\n\tActive      HWND\n\tFocus       HWND\n\tCapture     HWND\n\tMenuOwner   HWND\n\tMoveSize    HWND\n\tCaretHandle HWND\n\tCaretRect   Rect\n}\n\nconst (\n\tDWMWA_NCRENDERING_ENABLED            = 1\n\tDWMWA_NCRENDERING_POLICY             = 2\n\tDWMWA_TRANSITIONS_FORCEDISABLED      = 3\n\tDWMWA_ALLOW_NCPAINT                  = 4\n\tDWMWA_CAPTION_BUTTON_BOUNDS          = 5\n\tDWMWA_NONCLIENT_RTL_LAYOUT           = 6\n\tDWMWA_FORCE_ICONIC_REPRESENTATION    = 7\n\tDWMWA_FLIP3D_POLICY                  = 8\n\tDWMWA_EXTENDED_FRAME_BOUNDS          = 9\n\tDWMWA_HAS_ICONIC_BITMAP              = 10\n\tDWMWA_DISALLOW_PEEK                  = 11\n\tDWMWA_EXCLUDED_FROM_PEEK             = 12\n\tDWMWA_CLOAK                          = 13\n\tDWMWA_CLOAKED                        = 14\n\tDWMWA_FREEZE_REPRESENTATION          = 15\n\tDWMWA_PASSIVE_UPDATE_MODE            = 16\n\tDWMWA_USE_HOSTBACKDROPBRUSH          = 17\n\tDWMWA_USE_IMMERSIVE_DARK_MODE        = 20\n\tDWMWA_WINDOW_CORNER_PREFERENCE       = 33\n\tDWMWA_BORDER_COLOR                   = 34\n\tDWMWA_CAPTION_COLOR                  = 35\n\tDWMWA_TEXT_COLOR                     = 36\n\tDWMWA_VISIBLE_FRAME_BORDER_THICKNESS = 37\n)\n\ntype WSAQUERYSET struct {\n\tSize                uint32\n\tServiceInstanceName *uint16\n\tServiceClassId      *GUID\n\tVersion             *WSAVersion\n\tComment             *uint16\n\tNameSpace           uint32\n\tNSProviderId        *GUID\n\tContext             *uint16\n\tNumberOfProtocols   uint32\n\tAfpProtocols        *AFProtocols\n\tQueryString         *uint16\n\tNumberOfCsAddrs     uint32\n\tSaBuffer            *CSAddrInfo\n\tOutputFlags         uint32\n\tBlob                *BLOB\n}\n\ntype WSAVersion struct {\n\tVersion                 uint32\n\tEnumerationOfComparison int32\n}\n\ntype AFProtocols struct {\n\tAddressFamily int32\n\tProtocol      int32\n}\n\ntype CSAddrInfo struct {\n\tLocalAddr  SocketAddress\n\tRemoteAddr SocketAddress\n\tSocketType int32\n\tProtocol   int32\n}\n\ntype BLOB struct {\n\tSize     uint32\n\tBlobData *byte\n}\n\ntype ComStat struct {\n\tFlags    uint32\n\tCBInQue  uint32\n\tCBOutQue uint32\n}\n\ntype DCB struct {\n\tDCBlength  uint32\n\tBaudRate   uint32\n\tFlags      uint32\n\twReserved  uint16\n\tXonLim     uint16\n\tXoffLim    uint16\n\tByteSize   uint8\n\tParity     uint8\n\tStopBits   uint8\n\tXonChar    byte\n\tXoffChar   byte\n\tErrorChar  byte\n\tEofChar    byte\n\tEvtChar    byte\n\twReserved1 uint16\n}\n\n// Keyboard Layout Flags.\n// See https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-loadkeyboardlayoutw\nconst (\n\tKLF_ACTIVATE      = 0x00000001\n\tKLF_SUBSTITUTE_OK = 0x00000002\n\tKLF_REORDER       = 0x00000008\n\tKLF_REPLACELANG   = 0x00000010\n\tKLF_NOTELLSHELL   = 0x00000080\n\tKLF_SETFORPROCESS = 0x00000100\n)\n\n// Virtual Key codes\n// https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes\nconst (\n\tVK_LBUTTON             = 0x01\n\tVK_RBUTTON             = 0x02\n\tVK_CANCEL              = 0x03\n\tVK_MBUTTON             = 0x04\n\tVK_XBUTTON1            = 0x05\n\tVK_XBUTTON2            = 0x06\n\tVK_BACK                = 0x08\n\tVK_TAB                 = 0x09\n\tVK_CLEAR               = 0x0C\n\tVK_RETURN              = 0x0D\n\tVK_SHIFT               = 0x10\n\tVK_CONTROL             = 0x11\n\tVK_MENU                = 0x12\n\tVK_PAUSE               = 0x13\n\tVK_CAPITAL             = 0x14\n\tVK_KANA                = 0x15\n\tVK_HANGEUL             = 0x15\n\tVK_HANGUL              = 0x15\n\tVK_IME_ON              = 0x16\n\tVK_JUNJA               = 0x17\n\tVK_FINAL               = 0x18\n\tVK_HANJA               = 0x19\n\tVK_KANJI               = 0x19\n\tVK_IME_OFF             = 0x1A\n\tVK_ESCAPE              = 0x1B\n\tVK_CONVERT             = 0x1C\n\tVK_NONCONVERT          = 0x1D\n\tVK_ACCEPT              = 0x1E\n\tVK_MODECHANGE          = 0x1F\n\tVK_SPACE               = 0x20\n\tVK_PRIOR               = 0x21\n\tVK_NEXT                = 0x22\n\tVK_END                 = 0x23\n\tVK_HOME                = 0x24\n\tVK_LEFT                = 0x25\n\tVK_UP                  = 0x26\n\tVK_RIGHT               = 0x27\n\tVK_DOWN                = 0x28\n\tVK_SELECT              = 0x29\n\tVK_PRINT               = 0x2A\n\tVK_EXECUTE             = 0x2B\n\tVK_SNAPSHOT            = 0x2C\n\tVK_INSERT              = 0x2D\n\tVK_DELETE              = 0x2E\n\tVK_HELP                = 0x2F\n\tVK_LWIN                = 0x5B\n\tVK_RWIN                = 0x5C\n\tVK_APPS                = 0x5D\n\tVK_SLEEP               = 0x5F\n\tVK_NUMPAD0             = 0x60\n\tVK_NUMPAD1             = 0x61\n\tVK_NUMPAD2             = 0x62\n\tVK_NUMPAD3             = 0x63\n\tVK_NUMPAD4             = 0x64\n\tVK_NUMPAD5             = 0x65\n\tVK_NUMPAD6             = 0x66\n\tVK_NUMPAD7             = 0x67\n\tVK_NUMPAD8             = 0x68\n\tVK_NUMPAD9             = 0x69\n\tVK_MULTIPLY            = 0x6A\n\tVK_ADD                 = 0x6B\n\tVK_SEPARATOR           = 0x6C\n\tVK_SUBTRACT            = 0x6D\n\tVK_DECIMAL             = 0x6E\n\tVK_DIVIDE              = 0x6F\n\tVK_F1                  = 0x70\n\tVK_F2                  = 0x71\n\tVK_F3                  = 0x72\n\tVK_F4                  = 0x73\n\tVK_F5                  = 0x74\n\tVK_F6                  = 0x75\n\tVK_F7                  = 0x76\n\tVK_F8                  = 0x77\n\tVK_F9                  = 0x78\n\tVK_F10                 = 0x79\n\tVK_F11                 = 0x7A\n\tVK_F12                 = 0x7B\n\tVK_F13                 = 0x7C\n\tVK_F14                 = 0x7D\n\tVK_F15                 = 0x7E\n\tVK_F16                 = 0x7F\n\tVK_F17                 = 0x80\n\tVK_F18                 = 0x81\n\tVK_F19                 = 0x82\n\tVK_F20                 = 0x83\n\tVK_F21                 = 0x84\n\tVK_F22                 = 0x85\n\tVK_F23                 = 0x86\n\tVK_F24                 = 0x87\n\tVK_NUMLOCK             = 0x90\n\tVK_SCROLL              = 0x91\n\tVK_OEM_NEC_EQUAL       = 0x92\n\tVK_OEM_FJ_JISHO        = 0x92\n\tVK_OEM_FJ_MASSHOU      = 0x93\n\tVK_OEM_FJ_TOUROKU      = 0x94\n\tVK_OEM_FJ_LOYA         = 0x95\n\tVK_OEM_FJ_ROYA         = 0x96\n\tVK_LSHIFT              = 0xA0\n\tVK_RSHIFT              = 0xA1\n\tVK_LCONTROL            = 0xA2\n\tVK_RCONTROL            = 0xA3\n\tVK_LMENU               = 0xA4\n\tVK_RMENU               = 0xA5\n\tVK_BROWSER_BACK        = 0xA6\n\tVK_BROWSER_FORWARD     = 0xA7\n\tVK_BROWSER_REFRESH     = 0xA8\n\tVK_BROWSER_STOP        = 0xA9\n\tVK_BROWSER_SEARCH      = 0xAA\n\tVK_BROWSER_FAVORITES   = 0xAB\n\tVK_BROWSER_HOME        = 0xAC\n\tVK_VOLUME_MUTE         = 0xAD\n\tVK_VOLUME_DOWN         = 0xAE\n\tVK_VOLUME_UP           = 0xAF\n\tVK_MEDIA_NEXT_TRACK    = 0xB0\n\tVK_MEDIA_PREV_TRACK    = 0xB1\n\tVK_MEDIA_STOP          = 0xB2\n\tVK_MEDIA_PLAY_PAUSE    = 0xB3\n\tVK_LAUNCH_MAIL         = 0xB4\n\tVK_LAUNCH_MEDIA_SELECT = 0xB5\n\tVK_LAUNCH_APP1         = 0xB6\n\tVK_LAUNCH_APP2         = 0xB7\n\tVK_OEM_1               = 0xBA\n\tVK_OEM_PLUS            = 0xBB\n\tVK_OEM_COMMA           = 0xBC\n\tVK_OEM_MINUS           = 0xBD\n\tVK_OEM_PERIOD          = 0xBE\n\tVK_OEM_2               = 0xBF\n\tVK_OEM_3               = 0xC0\n\tVK_OEM_4               = 0xDB\n\tVK_OEM_5               = 0xDC\n\tVK_OEM_6               = 0xDD\n\tVK_OEM_7               = 0xDE\n\tVK_OEM_8               = 0xDF\n\tVK_OEM_AX              = 0xE1\n\tVK_OEM_102             = 0xE2\n\tVK_ICO_HELP            = 0xE3\n\tVK_ICO_00              = 0xE4\n\tVK_PROCESSKEY          = 0xE5\n\tVK_ICO_CLEAR           = 0xE6\n\tVK_OEM_RESET           = 0xE9\n\tVK_OEM_JUMP            = 0xEA\n\tVK_OEM_PA1             = 0xEB\n\tVK_OEM_PA2             = 0xEC\n\tVK_OEM_PA3             = 0xED\n\tVK_OEM_WSCTRL          = 0xEE\n\tVK_OEM_CUSEL           = 0xEF\n\tVK_OEM_ATTN            = 0xF0\n\tVK_OEM_FINISH          = 0xF1\n\tVK_OEM_COPY            = 0xF2\n\tVK_OEM_AUTO            = 0xF3\n\tVK_OEM_ENLW            = 0xF4\n\tVK_OEM_BACKTAB         = 0xF5\n\tVK_ATTN                = 0xF6\n\tVK_CRSEL               = 0xF7\n\tVK_EXSEL               = 0xF8\n\tVK_EREOF               = 0xF9\n\tVK_PLAY                = 0xFA\n\tVK_ZOOM                = 0xFB\n\tVK_NONAME              = 0xFC\n\tVK_PA1                 = 0xFD\n\tVK_OEM_CLEAR           = 0xFE\n)\n\n// Mouse button constants.\n// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str\nconst (\n\tFROM_LEFT_1ST_BUTTON_PRESSED = 0x0001\n\tRIGHTMOST_BUTTON_PRESSED     = 0x0002\n\tFROM_LEFT_2ND_BUTTON_PRESSED = 0x0004\n\tFROM_LEFT_3RD_BUTTON_PRESSED = 0x0008\n\tFROM_LEFT_4TH_BUTTON_PRESSED = 0x0010\n)\n\n// Control key state constaints.\n// https://docs.microsoft.com/en-us/windows/console/key-event-record-str\n// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str\nconst (\n\tCAPSLOCK_ON        = 0x0080\n\tENHANCED_KEY       = 0x0100\n\tLEFT_ALT_PRESSED   = 0x0002\n\tLEFT_CTRL_PRESSED  = 0x0008\n\tNUMLOCK_ON         = 0x0020\n\tRIGHT_ALT_PRESSED  = 0x0001\n\tRIGHT_CTRL_PRESSED = 0x0004\n\tSCROLLLOCK_ON      = 0x0040\n\tSHIFT_PRESSED      = 0x0010\n)\n\n// Mouse event record event flags.\n// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str\nconst (\n\tMOUSE_MOVED    = 0x0001\n\tDOUBLE_CLICK   = 0x0002\n\tMOUSE_WHEELED  = 0x0004\n\tMOUSE_HWHEELED = 0x0008\n)\n\n// Input Record Event Types\n// https://learn.microsoft.com/en-us/windows/console/input-record-str\nconst (\n\tFOCUS_EVENT              = 0x0010\n\tKEY_EVENT                = 0x0001\n\tMENU_EVENT               = 0x0008\n\tMOUSE_EVENT              = 0x0002\n\tWINDOW_BUFFER_SIZE_EVENT = 0x0004\n)\n\n// The processor features to be tested for IsProcessorFeaturePresent, see\n// https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-isprocessorfeaturepresent\nconst (\n\tPF_ARM_64BIT_LOADSTORE_ATOMIC              = 25\n\tPF_ARM_DIVIDE_INSTRUCTION_AVAILABLE        = 24\n\tPF_ARM_EXTERNAL_CACHE_AVAILABLE            = 26\n\tPF_ARM_FMAC_INSTRUCTIONS_AVAILABLE         = 27\n\tPF_ARM_VFP_32_REGISTERS_AVAILABLE          = 18\n\tPF_3DNOW_INSTRUCTIONS_AVAILABLE            = 7\n\tPF_CHANNELS_ENABLED                        = 16\n\tPF_COMPARE_EXCHANGE_DOUBLE                 = 2\n\tPF_COMPARE_EXCHANGE128                     = 14\n\tPF_COMPARE64_EXCHANGE128                   = 15\n\tPF_FASTFAIL_AVAILABLE                      = 23\n\tPF_FLOATING_POINT_EMULATED                 = 1\n\tPF_FLOATING_POINT_PRECISION_ERRATA         = 0\n\tPF_MMX_INSTRUCTIONS_AVAILABLE              = 3\n\tPF_NX_ENABLED                              = 12\n\tPF_PAE_ENABLED                             = 9\n\tPF_RDTSC_INSTRUCTION_AVAILABLE             = 8\n\tPF_RDWRFSGSBASE_AVAILABLE                  = 22\n\tPF_SECOND_LEVEL_ADDRESS_TRANSLATION        = 20\n\tPF_SSE3_INSTRUCTIONS_AVAILABLE             = 13\n\tPF_SSSE3_INSTRUCTIONS_AVAILABLE            = 36\n\tPF_SSE4_1_INSTRUCTIONS_AVAILABLE           = 37\n\tPF_SSE4_2_INSTRUCTIONS_AVAILABLE           = 38\n\tPF_AVX_INSTRUCTIONS_AVAILABLE              = 39\n\tPF_AVX2_INSTRUCTIONS_AVAILABLE             = 40\n\tPF_AVX512F_INSTRUCTIONS_AVAILABLE          = 41\n\tPF_VIRT_FIRMWARE_ENABLED                   = 21\n\tPF_XMMI_INSTRUCTIONS_AVAILABLE             = 6\n\tPF_XMMI64_INSTRUCTIONS_AVAILABLE           = 10\n\tPF_XSAVE_ENABLED                           = 17\n\tPF_ARM_V8_INSTRUCTIONS_AVAILABLE           = 29\n\tPF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE    = 30\n\tPF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE     = 31\n\tPF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE   = 34\n\tPF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE       = 43\n\tPF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE    = 44\n\tPF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE    = 45\n\tPF_ARM_SVE_INSTRUCTIONS_AVAILABLE          = 46\n\tPF_ARM_SVE2_INSTRUCTIONS_AVAILABLE         = 47\n\tPF_ARM_SVE2_1_INSTRUCTIONS_AVAILABLE       = 48\n\tPF_ARM_SVE_AES_INSTRUCTIONS_AVAILABLE      = 49\n\tPF_ARM_SVE_PMULL128_INSTRUCTIONS_AVAILABLE = 50\n\tPF_ARM_SVE_BITPERM_INSTRUCTIONS_AVAILABLE  = 51\n\tPF_ARM_SVE_BF16_INSTRUCTIONS_AVAILABLE     = 52\n\tPF_ARM_SVE_EBF16_INSTRUCTIONS_AVAILABLE    = 53\n\tPF_ARM_SVE_B16B16_INSTRUCTIONS_AVAILABLE   = 54\n\tPF_ARM_SVE_SHA3_INSTRUCTIONS_AVAILABLE     = 55\n\tPF_ARM_SVE_SM4_INSTRUCTIONS_AVAILABLE      = 56\n\tPF_ARM_SVE_I8MM_INSTRUCTIONS_AVAILABLE     = 57\n\tPF_ARM_SVE_F32MM_INSTRUCTIONS_AVAILABLE    = 58\n\tPF_ARM_SVE_F64MM_INSTRUCTIONS_AVAILABLE    = 59\n\tPF_BMI2_INSTRUCTIONS_AVAILABLE             = 60\n\tPF_MOVDIR64B_INSTRUCTION_AVAILABLE         = 61\n\tPF_ARM_LSE2_AVAILABLE                      = 62\n\tPF_ARM_SHA3_INSTRUCTIONS_AVAILABLE         = 64\n\tPF_ARM_SHA512_INSTRUCTIONS_AVAILABLE       = 65\n\tPF_ARM_V82_I8MM_INSTRUCTIONS_AVAILABLE     = 66\n\tPF_ARM_V82_FP16_INSTRUCTIONS_AVAILABLE     = 67\n\tPF_ARM_V86_BF16_INSTRUCTIONS_AVAILABLE     = 68\n\tPF_ARM_V86_EBF16_INSTRUCTIONS_AVAILABLE    = 69\n\tPF_ARM_SME_INSTRUCTIONS_AVAILABLE          = 70\n\tPF_ARM_SME2_INSTRUCTIONS_AVAILABLE         = 71\n\tPF_ARM_SME2_1_INSTRUCTIONS_AVAILABLE       = 72\n\tPF_ARM_SME2_2_INSTRUCTIONS_AVAILABLE       = 73\n\tPF_ARM_SME_AES_INSTRUCTIONS_AVAILABLE      = 74\n\tPF_ARM_SME_SBITPERM_INSTRUCTIONS_AVAILABLE = 75\n\tPF_ARM_SME_SF8MM4_INSTRUCTIONS_AVAILABLE   = 76\n\tPF_ARM_SME_SF8MM8_INSTRUCTIONS_AVAILABLE   = 77\n\tPF_ARM_SME_SF8DP2_INSTRUCTIONS_AVAILABLE   = 78\n\tPF_ARM_SME_SF8DP4_INSTRUCTIONS_AVAILABLE   = 79\n\tPF_ARM_SME_SF8FMA_INSTRUCTIONS_AVAILABLE   = 80\n\tPF_ARM_SME_F8F32_INSTRUCTIONS_AVAILABLE    = 81\n\tPF_ARM_SME_F8F16_INSTRUCTIONS_AVAILABLE    = 82\n\tPF_ARM_SME_F16F16_INSTRUCTIONS_AVAILABLE   = 83\n\tPF_ARM_SME_B16B16_INSTRUCTIONS_AVAILABLE   = 84\n\tPF_ARM_SME_F64F64_INSTRUCTIONS_AVAILABLE   = 85\n\tPF_ARM_SME_I16I64_INSTRUCTIONS_AVAILABLE   = 86\n\tPF_ARM_SME_LUTv2_INSTRUCTIONS_AVAILABLE    = 87\n\tPF_ARM_SME_FA64_INSTRUCTIONS_AVAILABLE     = 88\n\tPF_UMONITOR_INSTRUCTION_AVAILABLE          = 89\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows_386.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tPort    uint16\n\tProto   *byte\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n\t_                       uint32 // pad to 8 byte boundary\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows_amd64.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tProto   *byte\n\tPort    uint16\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows_arm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tPort    uint16\n\tProto   *byte\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n\t_                       uint32 // pad to 8 byte boundary\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows_arm64.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tProto   *byte\n\tPort    uint16\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/zerrors_windows.go",
    "content": "// Code generated by 'mkerrors.bash'; DO NOT EDIT.\n\npackage windows\n\nimport \"syscall\"\n\nconst (\n\tFACILITY_NULL                                                                           = 0\n\tFACILITY_RPC                                                                            = 1\n\tFACILITY_DISPATCH                                                                       = 2\n\tFACILITY_STORAGE                                                                        = 3\n\tFACILITY_ITF                                                                            = 4\n\tFACILITY_WIN32                                                                          = 7\n\tFACILITY_WINDOWS                                                                        = 8\n\tFACILITY_SSPI                                                                           = 9\n\tFACILITY_SECURITY                                                                       = 9\n\tFACILITY_CONTROL                                                                        = 10\n\tFACILITY_CERT                                                                           = 11\n\tFACILITY_INTERNET                                                                       = 12\n\tFACILITY_MEDIASERVER                                                                    = 13\n\tFACILITY_MSMQ                                                                           = 14\n\tFACILITY_SETUPAPI                                                                       = 15\n\tFACILITY_SCARD                                                                          = 16\n\tFACILITY_COMPLUS                                                                        = 17\n\tFACILITY_AAF                                                                            = 18\n\tFACILITY_URT                                                                            = 19\n\tFACILITY_ACS                                                                            = 20\n\tFACILITY_DPLAY                                                                          = 21\n\tFACILITY_UMI                                                                            = 22\n\tFACILITY_SXS                                                                            = 23\n\tFACILITY_WINDOWS_CE                                                                     = 24\n\tFACILITY_HTTP                                                                           = 25\n\tFACILITY_USERMODE_COMMONLOG                                                             = 26\n\tFACILITY_WER                                                                            = 27\n\tFACILITY_USERMODE_FILTER_MANAGER                                                        = 31\n\tFACILITY_BACKGROUNDCOPY                                                                 = 32\n\tFACILITY_CONFIGURATION                                                                  = 33\n\tFACILITY_WIA                                                                            = 33\n\tFACILITY_STATE_MANAGEMENT                                                               = 34\n\tFACILITY_METADIRECTORY                                                                  = 35\n\tFACILITY_WINDOWSUPDATE                                                                  = 36\n\tFACILITY_DIRECTORYSERVICE                                                               = 37\n\tFACILITY_GRAPHICS                                                                       = 38\n\tFACILITY_SHELL                                                                          = 39\n\tFACILITY_NAP                                                                            = 39\n\tFACILITY_TPM_SERVICES                                                                   = 40\n\tFACILITY_TPM_SOFTWARE                                                                   = 41\n\tFACILITY_UI                                                                             = 42\n\tFACILITY_XAML                                                                           = 43\n\tFACILITY_ACTION_QUEUE                                                                   = 44\n\tFACILITY_PLA                                                                            = 48\n\tFACILITY_WINDOWS_SETUP                                                                  = 48\n\tFACILITY_FVE                                                                            = 49\n\tFACILITY_FWP                                                                            = 50\n\tFACILITY_WINRM                                                                          = 51\n\tFACILITY_NDIS                                                                           = 52\n\tFACILITY_USERMODE_HYPERVISOR                                                            = 53\n\tFACILITY_CMI                                                                            = 54\n\tFACILITY_USERMODE_VIRTUALIZATION                                                        = 55\n\tFACILITY_USERMODE_VOLMGR                                                                = 56\n\tFACILITY_BCD                                                                            = 57\n\tFACILITY_USERMODE_VHD                                                                   = 58\n\tFACILITY_USERMODE_HNS                                                                   = 59\n\tFACILITY_SDIAG                                                                          = 60\n\tFACILITY_WEBSERVICES                                                                    = 61\n\tFACILITY_WINPE                                                                          = 61\n\tFACILITY_WPN                                                                            = 62\n\tFACILITY_WINDOWS_STORE                                                                  = 63\n\tFACILITY_INPUT                                                                          = 64\n\tFACILITY_EAP                                                                            = 66\n\tFACILITY_WINDOWS_DEFENDER                                                               = 80\n\tFACILITY_OPC                                                                            = 81\n\tFACILITY_XPS                                                                            = 82\n\tFACILITY_MBN                                                                            = 84\n\tFACILITY_POWERSHELL                                                                     = 84\n\tFACILITY_RAS                                                                            = 83\n\tFACILITY_P2P_INT                                                                        = 98\n\tFACILITY_P2P                                                                            = 99\n\tFACILITY_DAF                                                                            = 100\n\tFACILITY_BLUETOOTH_ATT                                                                  = 101\n\tFACILITY_AUDIO                                                                          = 102\n\tFACILITY_STATEREPOSITORY                                                                = 103\n\tFACILITY_VISUALCPP                                                                      = 109\n\tFACILITY_SCRIPT                                                                         = 112\n\tFACILITY_PARSE                                                                          = 113\n\tFACILITY_BLB                                                                            = 120\n\tFACILITY_BLB_CLI                                                                        = 121\n\tFACILITY_WSBAPP                                                                         = 122\n\tFACILITY_BLBUI                                                                          = 128\n\tFACILITY_USN                                                                            = 129\n\tFACILITY_USERMODE_VOLSNAP                                                               = 130\n\tFACILITY_TIERING                                                                        = 131\n\tFACILITY_WSB_ONLINE                                                                     = 133\n\tFACILITY_ONLINE_ID                                                                      = 134\n\tFACILITY_DEVICE_UPDATE_AGENT                                                            = 135\n\tFACILITY_DRVSERVICING                                                                   = 136\n\tFACILITY_DLS                                                                            = 153\n\tFACILITY_DELIVERY_OPTIMIZATION                                                          = 208\n\tFACILITY_USERMODE_SPACES                                                                = 231\n\tFACILITY_USER_MODE_SECURITY_CORE                                                        = 232\n\tFACILITY_USERMODE_LICENSING                                                             = 234\n\tFACILITY_SOS                                                                            = 160\n\tFACILITY_DEBUGGERS                                                                      = 176\n\tFACILITY_SPP                                                                            = 256\n\tFACILITY_RESTORE                                                                        = 256\n\tFACILITY_DMSERVER                                                                       = 256\n\tFACILITY_DEPLOYMENT_SERVICES_SERVER                                                     = 257\n\tFACILITY_DEPLOYMENT_SERVICES_IMAGING                                                    = 258\n\tFACILITY_DEPLOYMENT_SERVICES_MANAGEMENT                                                 = 259\n\tFACILITY_DEPLOYMENT_SERVICES_UTIL                                                       = 260\n\tFACILITY_DEPLOYMENT_SERVICES_BINLSVC                                                    = 261\n\tFACILITY_DEPLOYMENT_SERVICES_PXE                                                        = 263\n\tFACILITY_DEPLOYMENT_SERVICES_TFTP                                                       = 264\n\tFACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT                                       = 272\n\tFACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING                                        = 278\n\tFACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER                                           = 289\n\tFACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT                                           = 290\n\tFACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER                                           = 293\n\tFACILITY_LINGUISTIC_SERVICES                                                            = 305\n\tFACILITY_AUDIOSTREAMING                                                                 = 1094\n\tFACILITY_ACCELERATOR                                                                    = 1536\n\tFACILITY_WMAAECMA                                                                       = 1996\n\tFACILITY_DIRECTMUSIC                                                                    = 2168\n\tFACILITY_DIRECT3D10                                                                     = 2169\n\tFACILITY_DXGI                                                                           = 2170\n\tFACILITY_DXGI_DDI                                                                       = 2171\n\tFACILITY_DIRECT3D11                                                                     = 2172\n\tFACILITY_DIRECT3D11_DEBUG                                                               = 2173\n\tFACILITY_DIRECT3D12                                                                     = 2174\n\tFACILITY_DIRECT3D12_DEBUG                                                               = 2175\n\tFACILITY_LEAP                                                                           = 2184\n\tFACILITY_AUDCLNT                                                                        = 2185\n\tFACILITY_WINCODEC_DWRITE_DWM                                                            = 2200\n\tFACILITY_WINML                                                                          = 2192\n\tFACILITY_DIRECT2D                                                                       = 2201\n\tFACILITY_DEFRAG                                                                         = 2304\n\tFACILITY_USERMODE_SDBUS                                                                 = 2305\n\tFACILITY_JSCRIPT                                                                        = 2306\n\tFACILITY_PIDGENX                                                                        = 2561\n\tFACILITY_EAS                                                                            = 85\n\tFACILITY_WEB                                                                            = 885\n\tFACILITY_WEB_SOCKET                                                                     = 886\n\tFACILITY_MOBILE                                                                         = 1793\n\tFACILITY_SQLITE                                                                         = 1967\n\tFACILITY_UTC                                                                            = 1989\n\tFACILITY_WEP                                                                            = 2049\n\tFACILITY_SYNCENGINE                                                                     = 2050\n\tFACILITY_XBOX                                                                           = 2339\n\tFACILITY_GAME                                                                           = 2340\n\tFACILITY_PIX                                                                            = 2748\n\tERROR_SUCCESS                                                             syscall.Errno = 0\n\tNO_ERROR                                                                                = 0\n\tSEC_E_OK                                                                  Handle        = 0x00000000\n\tERROR_INVALID_FUNCTION                                                    syscall.Errno = 1\n\tERROR_FILE_NOT_FOUND                                                      syscall.Errno = 2\n\tERROR_PATH_NOT_FOUND                                                      syscall.Errno = 3\n\tERROR_TOO_MANY_OPEN_FILES                                                 syscall.Errno = 4\n\tERROR_ACCESS_DENIED                                                       syscall.Errno = 5\n\tERROR_INVALID_HANDLE                                                      syscall.Errno = 6\n\tERROR_ARENA_TRASHED                                                       syscall.Errno = 7\n\tERROR_NOT_ENOUGH_MEMORY                                                   syscall.Errno = 8\n\tERROR_INVALID_BLOCK                                                       syscall.Errno = 9\n\tERROR_BAD_ENVIRONMENT                                                     syscall.Errno = 10\n\tERROR_BAD_FORMAT                                                          syscall.Errno = 11\n\tERROR_INVALID_ACCESS                                                      syscall.Errno = 12\n\tERROR_INVALID_DATA                                                        syscall.Errno = 13\n\tERROR_OUTOFMEMORY                                                         syscall.Errno = 14\n\tERROR_INVALID_DRIVE                                                       syscall.Errno = 15\n\tERROR_CURRENT_DIRECTORY                                                   syscall.Errno = 16\n\tERROR_NOT_SAME_DEVICE                                                     syscall.Errno = 17\n\tERROR_NO_MORE_FILES                                                       syscall.Errno = 18\n\tERROR_WRITE_PROTECT                                                       syscall.Errno = 19\n\tERROR_BAD_UNIT                                                            syscall.Errno = 20\n\tERROR_NOT_READY                                                           syscall.Errno = 21\n\tERROR_BAD_COMMAND                                                         syscall.Errno = 22\n\tERROR_CRC                                                                 syscall.Errno = 23\n\tERROR_BAD_LENGTH                                                          syscall.Errno = 24\n\tERROR_SEEK                                                                syscall.Errno = 25\n\tERROR_NOT_DOS_DISK                                                        syscall.Errno = 26\n\tERROR_SECTOR_NOT_FOUND                                                    syscall.Errno = 27\n\tERROR_OUT_OF_PAPER                                                        syscall.Errno = 28\n\tERROR_WRITE_FAULT                                                         syscall.Errno = 29\n\tERROR_READ_FAULT                                                          syscall.Errno = 30\n\tERROR_GEN_FAILURE                                                         syscall.Errno = 31\n\tERROR_SHARING_VIOLATION                                                   syscall.Errno = 32\n\tERROR_LOCK_VIOLATION                                                      syscall.Errno = 33\n\tERROR_WRONG_DISK                                                          syscall.Errno = 34\n\tERROR_SHARING_BUFFER_EXCEEDED                                             syscall.Errno = 36\n\tERROR_HANDLE_EOF                                                          syscall.Errno = 38\n\tERROR_HANDLE_DISK_FULL                                                    syscall.Errno = 39\n\tERROR_NOT_SUPPORTED                                                       syscall.Errno = 50\n\tERROR_REM_NOT_LIST                                                        syscall.Errno = 51\n\tERROR_DUP_NAME                                                            syscall.Errno = 52\n\tERROR_BAD_NETPATH                                                         syscall.Errno = 53\n\tERROR_NETWORK_BUSY                                                        syscall.Errno = 54\n\tERROR_DEV_NOT_EXIST                                                       syscall.Errno = 55\n\tERROR_TOO_MANY_CMDS                                                       syscall.Errno = 56\n\tERROR_ADAP_HDW_ERR                                                        syscall.Errno = 57\n\tERROR_BAD_NET_RESP                                                        syscall.Errno = 58\n\tERROR_UNEXP_NET_ERR                                                       syscall.Errno = 59\n\tERROR_BAD_REM_ADAP                                                        syscall.Errno = 60\n\tERROR_PRINTQ_FULL                                                         syscall.Errno = 61\n\tERROR_NO_SPOOL_SPACE                                                      syscall.Errno = 62\n\tERROR_PRINT_CANCELLED                                                     syscall.Errno = 63\n\tERROR_NETNAME_DELETED                                                     syscall.Errno = 64\n\tERROR_NETWORK_ACCESS_DENIED                                               syscall.Errno = 65\n\tERROR_BAD_DEV_TYPE                                                        syscall.Errno = 66\n\tERROR_BAD_NET_NAME                                                        syscall.Errno = 67\n\tERROR_TOO_MANY_NAMES                                                      syscall.Errno = 68\n\tERROR_TOO_MANY_SESS                                                       syscall.Errno = 69\n\tERROR_SHARING_PAUSED                                                      syscall.Errno = 70\n\tERROR_REQ_NOT_ACCEP                                                       syscall.Errno = 71\n\tERROR_REDIR_PAUSED                                                        syscall.Errno = 72\n\tERROR_FILE_EXISTS                                                         syscall.Errno = 80\n\tERROR_CANNOT_MAKE                                                         syscall.Errno = 82\n\tERROR_FAIL_I24                                                            syscall.Errno = 83\n\tERROR_OUT_OF_STRUCTURES                                                   syscall.Errno = 84\n\tERROR_ALREADY_ASSIGNED                                                    syscall.Errno = 85\n\tERROR_INVALID_PASSWORD                                                    syscall.Errno = 86\n\tERROR_INVALID_PARAMETER                                                   syscall.Errno = 87\n\tERROR_NET_WRITE_FAULT                                                     syscall.Errno = 88\n\tERROR_NO_PROC_SLOTS                                                       syscall.Errno = 89\n\tERROR_TOO_MANY_SEMAPHORES                                                 syscall.Errno = 100\n\tERROR_EXCL_SEM_ALREADY_OWNED                                              syscall.Errno = 101\n\tERROR_SEM_IS_SET                                                          syscall.Errno = 102\n\tERROR_TOO_MANY_SEM_REQUESTS                                               syscall.Errno = 103\n\tERROR_INVALID_AT_INTERRUPT_TIME                                           syscall.Errno = 104\n\tERROR_SEM_OWNER_DIED                                                      syscall.Errno = 105\n\tERROR_SEM_USER_LIMIT                                                      syscall.Errno = 106\n\tERROR_DISK_CHANGE                                                         syscall.Errno = 107\n\tERROR_DRIVE_LOCKED                                                        syscall.Errno = 108\n\tERROR_BROKEN_PIPE                                                         syscall.Errno = 109\n\tERROR_OPEN_FAILED                                                         syscall.Errno = 110\n\tERROR_BUFFER_OVERFLOW                                                     syscall.Errno = 111\n\tERROR_DISK_FULL                                                           syscall.Errno = 112\n\tERROR_NO_MORE_SEARCH_HANDLES                                              syscall.Errno = 113\n\tERROR_INVALID_TARGET_HANDLE                                               syscall.Errno = 114\n\tERROR_INVALID_CATEGORY                                                    syscall.Errno = 117\n\tERROR_INVALID_VERIFY_SWITCH                                               syscall.Errno = 118\n\tERROR_BAD_DRIVER_LEVEL                                                    syscall.Errno = 119\n\tERROR_CALL_NOT_IMPLEMENTED                                                syscall.Errno = 120\n\tERROR_SEM_TIMEOUT                                                         syscall.Errno = 121\n\tERROR_INSUFFICIENT_BUFFER                                                 syscall.Errno = 122\n\tERROR_INVALID_NAME                                                        syscall.Errno = 123\n\tERROR_INVALID_LEVEL                                                       syscall.Errno = 124\n\tERROR_NO_VOLUME_LABEL                                                     syscall.Errno = 125\n\tERROR_MOD_NOT_FOUND                                                       syscall.Errno = 126\n\tERROR_PROC_NOT_FOUND                                                      syscall.Errno = 127\n\tERROR_WAIT_NO_CHILDREN                                                    syscall.Errno = 128\n\tERROR_CHILD_NOT_COMPLETE                                                  syscall.Errno = 129\n\tERROR_DIRECT_ACCESS_HANDLE                                                syscall.Errno = 130\n\tERROR_NEGATIVE_SEEK                                                       syscall.Errno = 131\n\tERROR_SEEK_ON_DEVICE                                                      syscall.Errno = 132\n\tERROR_IS_JOIN_TARGET                                                      syscall.Errno = 133\n\tERROR_IS_JOINED                                                           syscall.Errno = 134\n\tERROR_IS_SUBSTED                                                          syscall.Errno = 135\n\tERROR_NOT_JOINED                                                          syscall.Errno = 136\n\tERROR_NOT_SUBSTED                                                         syscall.Errno = 137\n\tERROR_JOIN_TO_JOIN                                                        syscall.Errno = 138\n\tERROR_SUBST_TO_SUBST                                                      syscall.Errno = 139\n\tERROR_JOIN_TO_SUBST                                                       syscall.Errno = 140\n\tERROR_SUBST_TO_JOIN                                                       syscall.Errno = 141\n\tERROR_BUSY_DRIVE                                                          syscall.Errno = 142\n\tERROR_SAME_DRIVE                                                          syscall.Errno = 143\n\tERROR_DIR_NOT_ROOT                                                        syscall.Errno = 144\n\tERROR_DIR_NOT_EMPTY                                                       syscall.Errno = 145\n\tERROR_IS_SUBST_PATH                                                       syscall.Errno = 146\n\tERROR_IS_JOIN_PATH                                                        syscall.Errno = 147\n\tERROR_PATH_BUSY                                                           syscall.Errno = 148\n\tERROR_IS_SUBST_TARGET                                                     syscall.Errno = 149\n\tERROR_SYSTEM_TRACE                                                        syscall.Errno = 150\n\tERROR_INVALID_EVENT_COUNT                                                 syscall.Errno = 151\n\tERROR_TOO_MANY_MUXWAITERS                                                 syscall.Errno = 152\n\tERROR_INVALID_LIST_FORMAT                                                 syscall.Errno = 153\n\tERROR_LABEL_TOO_LONG                                                      syscall.Errno = 154\n\tERROR_TOO_MANY_TCBS                                                       syscall.Errno = 155\n\tERROR_SIGNAL_REFUSED                                                      syscall.Errno = 156\n\tERROR_DISCARDED                                                           syscall.Errno = 157\n\tERROR_NOT_LOCKED                                                          syscall.Errno = 158\n\tERROR_BAD_THREADID_ADDR                                                   syscall.Errno = 159\n\tERROR_BAD_ARGUMENTS                                                       syscall.Errno = 160\n\tERROR_BAD_PATHNAME                                                        syscall.Errno = 161\n\tERROR_SIGNAL_PENDING                                                      syscall.Errno = 162\n\tERROR_MAX_THRDS_REACHED                                                   syscall.Errno = 164\n\tERROR_LOCK_FAILED                                                         syscall.Errno = 167\n\tERROR_BUSY                                                                syscall.Errno = 170\n\tERROR_DEVICE_SUPPORT_IN_PROGRESS                                          syscall.Errno = 171\n\tERROR_CANCEL_VIOLATION                                                    syscall.Errno = 173\n\tERROR_ATOMIC_LOCKS_NOT_SUPPORTED                                          syscall.Errno = 174\n\tERROR_INVALID_SEGMENT_NUMBER                                              syscall.Errno = 180\n\tERROR_INVALID_ORDINAL                                                     syscall.Errno = 182\n\tERROR_ALREADY_EXISTS                                                      syscall.Errno = 183\n\tERROR_INVALID_FLAG_NUMBER                                                 syscall.Errno = 186\n\tERROR_SEM_NOT_FOUND                                                       syscall.Errno = 187\n\tERROR_INVALID_STARTING_CODESEG                                            syscall.Errno = 188\n\tERROR_INVALID_STACKSEG                                                    syscall.Errno = 189\n\tERROR_INVALID_MODULETYPE                                                  syscall.Errno = 190\n\tERROR_INVALID_EXE_SIGNATURE                                               syscall.Errno = 191\n\tERROR_EXE_MARKED_INVALID                                                  syscall.Errno = 192\n\tERROR_BAD_EXE_FORMAT                                                      syscall.Errno = 193\n\tERROR_ITERATED_DATA_EXCEEDS_64k                                           syscall.Errno = 194\n\tERROR_INVALID_MINALLOCSIZE                                                syscall.Errno = 195\n\tERROR_DYNLINK_FROM_INVALID_RING                                           syscall.Errno = 196\n\tERROR_IOPL_NOT_ENABLED                                                    syscall.Errno = 197\n\tERROR_INVALID_SEGDPL                                                      syscall.Errno = 198\n\tERROR_AUTODATASEG_EXCEEDS_64k                                             syscall.Errno = 199\n\tERROR_RING2SEG_MUST_BE_MOVABLE                                            syscall.Errno = 200\n\tERROR_RELOC_CHAIN_XEEDS_SEGLIM                                            syscall.Errno = 201\n\tERROR_INFLOOP_IN_RELOC_CHAIN                                              syscall.Errno = 202\n\tERROR_ENVVAR_NOT_FOUND                                                    syscall.Errno = 203\n\tERROR_NO_SIGNAL_SENT                                                      syscall.Errno = 205\n\tERROR_FILENAME_EXCED_RANGE                                                syscall.Errno = 206\n\tERROR_RING2_STACK_IN_USE                                                  syscall.Errno = 207\n\tERROR_META_EXPANSION_TOO_LONG                                             syscall.Errno = 208\n\tERROR_INVALID_SIGNAL_NUMBER                                               syscall.Errno = 209\n\tERROR_THREAD_1_INACTIVE                                                   syscall.Errno = 210\n\tERROR_LOCKED                                                              syscall.Errno = 212\n\tERROR_TOO_MANY_MODULES                                                    syscall.Errno = 214\n\tERROR_NESTING_NOT_ALLOWED                                                 syscall.Errno = 215\n\tERROR_EXE_MACHINE_TYPE_MISMATCH                                           syscall.Errno = 216\n\tERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY                                     syscall.Errno = 217\n\tERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY                              syscall.Errno = 218\n\tERROR_FILE_CHECKED_OUT                                                    syscall.Errno = 220\n\tERROR_CHECKOUT_REQUIRED                                                   syscall.Errno = 221\n\tERROR_BAD_FILE_TYPE                                                       syscall.Errno = 222\n\tERROR_FILE_TOO_LARGE                                                      syscall.Errno = 223\n\tERROR_FORMS_AUTH_REQUIRED                                                 syscall.Errno = 224\n\tERROR_VIRUS_INFECTED                                                      syscall.Errno = 225\n\tERROR_VIRUS_DELETED                                                       syscall.Errno = 226\n\tERROR_PIPE_LOCAL                                                          syscall.Errno = 229\n\tERROR_BAD_PIPE                                                            syscall.Errno = 230\n\tERROR_PIPE_BUSY                                                           syscall.Errno = 231\n\tERROR_NO_DATA                                                             syscall.Errno = 232\n\tERROR_PIPE_NOT_CONNECTED                                                  syscall.Errno = 233\n\tERROR_MORE_DATA                                                           syscall.Errno = 234\n\tERROR_NO_WORK_DONE                                                        syscall.Errno = 235\n\tERROR_VC_DISCONNECTED                                                     syscall.Errno = 240\n\tERROR_INVALID_EA_NAME                                                     syscall.Errno = 254\n\tERROR_EA_LIST_INCONSISTENT                                                syscall.Errno = 255\n\tWAIT_TIMEOUT                                                              syscall.Errno = 258\n\tERROR_NO_MORE_ITEMS                                                       syscall.Errno = 259\n\tERROR_CANNOT_COPY                                                         syscall.Errno = 266\n\tERROR_DIRECTORY                                                           syscall.Errno = 267\n\tERROR_EAS_DIDNT_FIT                                                       syscall.Errno = 275\n\tERROR_EA_FILE_CORRUPT                                                     syscall.Errno = 276\n\tERROR_EA_TABLE_FULL                                                       syscall.Errno = 277\n\tERROR_INVALID_EA_HANDLE                                                   syscall.Errno = 278\n\tERROR_EAS_NOT_SUPPORTED                                                   syscall.Errno = 282\n\tERROR_NOT_OWNER                                                           syscall.Errno = 288\n\tERROR_TOO_MANY_POSTS                                                      syscall.Errno = 298\n\tERROR_PARTIAL_COPY                                                        syscall.Errno = 299\n\tERROR_OPLOCK_NOT_GRANTED                                                  syscall.Errno = 300\n\tERROR_INVALID_OPLOCK_PROTOCOL                                             syscall.Errno = 301\n\tERROR_DISK_TOO_FRAGMENTED                                                 syscall.Errno = 302\n\tERROR_DELETE_PENDING                                                      syscall.Errno = 303\n\tERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING                syscall.Errno = 304\n\tERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME                                   syscall.Errno = 305\n\tERROR_SECURITY_STREAM_IS_INCONSISTENT                                     syscall.Errno = 306\n\tERROR_INVALID_LOCK_RANGE                                                  syscall.Errno = 307\n\tERROR_IMAGE_SUBSYSTEM_NOT_PRESENT                                         syscall.Errno = 308\n\tERROR_NOTIFICATION_GUID_ALREADY_DEFINED                                   syscall.Errno = 309\n\tERROR_INVALID_EXCEPTION_HANDLER                                           syscall.Errno = 310\n\tERROR_DUPLICATE_PRIVILEGES                                                syscall.Errno = 311\n\tERROR_NO_RANGES_PROCESSED                                                 syscall.Errno = 312\n\tERROR_NOT_ALLOWED_ON_SYSTEM_FILE                                          syscall.Errno = 313\n\tERROR_DISK_RESOURCES_EXHAUSTED                                            syscall.Errno = 314\n\tERROR_INVALID_TOKEN                                                       syscall.Errno = 315\n\tERROR_DEVICE_FEATURE_NOT_SUPPORTED                                        syscall.Errno = 316\n\tERROR_MR_MID_NOT_FOUND                                                    syscall.Errno = 317\n\tERROR_SCOPE_NOT_FOUND                                                     syscall.Errno = 318\n\tERROR_UNDEFINED_SCOPE                                                     syscall.Errno = 319\n\tERROR_INVALID_CAP                                                         syscall.Errno = 320\n\tERROR_DEVICE_UNREACHABLE                                                  syscall.Errno = 321\n\tERROR_DEVICE_NO_RESOURCES                                                 syscall.Errno = 322\n\tERROR_DATA_CHECKSUM_ERROR                                                 syscall.Errno = 323\n\tERROR_INTERMIXED_KERNEL_EA_OPERATION                                      syscall.Errno = 324\n\tERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED                                       syscall.Errno = 326\n\tERROR_OFFSET_ALIGNMENT_VIOLATION                                          syscall.Errno = 327\n\tERROR_INVALID_FIELD_IN_PARAMETER_LIST                                     syscall.Errno = 328\n\tERROR_OPERATION_IN_PROGRESS                                               syscall.Errno = 329\n\tERROR_BAD_DEVICE_PATH                                                     syscall.Errno = 330\n\tERROR_TOO_MANY_DESCRIPTORS                                                syscall.Errno = 331\n\tERROR_SCRUB_DATA_DISABLED                                                 syscall.Errno = 332\n\tERROR_NOT_REDUNDANT_STORAGE                                               syscall.Errno = 333\n\tERROR_RESIDENT_FILE_NOT_SUPPORTED                                         syscall.Errno = 334\n\tERROR_COMPRESSED_FILE_NOT_SUPPORTED                                       syscall.Errno = 335\n\tERROR_DIRECTORY_NOT_SUPPORTED                                             syscall.Errno = 336\n\tERROR_NOT_READ_FROM_COPY                                                  syscall.Errno = 337\n\tERROR_FT_WRITE_FAILURE                                                    syscall.Errno = 338\n\tERROR_FT_DI_SCAN_REQUIRED                                                 syscall.Errno = 339\n\tERROR_INVALID_KERNEL_INFO_VERSION                                         syscall.Errno = 340\n\tERROR_INVALID_PEP_INFO_VERSION                                            syscall.Errno = 341\n\tERROR_OBJECT_NOT_EXTERNALLY_BACKED                                        syscall.Errno = 342\n\tERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN                                   syscall.Errno = 343\n\tERROR_COMPRESSION_NOT_BENEFICIAL                                          syscall.Errno = 344\n\tERROR_STORAGE_TOPOLOGY_ID_MISMATCH                                        syscall.Errno = 345\n\tERROR_BLOCKED_BY_PARENTAL_CONTROLS                                        syscall.Errno = 346\n\tERROR_BLOCK_TOO_MANY_REFERENCES                                           syscall.Errno = 347\n\tERROR_MARKED_TO_DISALLOW_WRITES                                           syscall.Errno = 348\n\tERROR_ENCLAVE_FAILURE                                                     syscall.Errno = 349\n\tERROR_FAIL_NOACTION_REBOOT                                                syscall.Errno = 350\n\tERROR_FAIL_SHUTDOWN                                                       syscall.Errno = 351\n\tERROR_FAIL_RESTART                                                        syscall.Errno = 352\n\tERROR_MAX_SESSIONS_REACHED                                                syscall.Errno = 353\n\tERROR_NETWORK_ACCESS_DENIED_EDP                                           syscall.Errno = 354\n\tERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL                                   syscall.Errno = 355\n\tERROR_EDP_POLICY_DENIES_OPERATION                                         syscall.Errno = 356\n\tERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED                                    syscall.Errno = 357\n\tERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT                               syscall.Errno = 358\n\tERROR_DEVICE_IN_MAINTENANCE                                               syscall.Errno = 359\n\tERROR_NOT_SUPPORTED_ON_DAX                                                syscall.Errno = 360\n\tERROR_DAX_MAPPING_EXISTS                                                  syscall.Errno = 361\n\tERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING                                     syscall.Errno = 362\n\tERROR_CLOUD_FILE_METADATA_CORRUPT                                         syscall.Errno = 363\n\tERROR_CLOUD_FILE_METADATA_TOO_LARGE                                       syscall.Errno = 364\n\tERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE                                  syscall.Errno = 365\n\tERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH                          syscall.Errno = 366\n\tERROR_CHILD_PROCESS_BLOCKED                                               syscall.Errno = 367\n\tERROR_STORAGE_LOST_DATA_PERSISTENCE                                       syscall.Errno = 368\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE                              syscall.Errno = 369\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT                         syscall.Errno = 370\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY                                     syscall.Errno = 371\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN                         syscall.Errno = 372\n\tERROR_GDI_HANDLE_LEAK                                                     syscall.Errno = 373\n\tERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS                                  syscall.Errno = 374\n\tERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED                           syscall.Errno = 375\n\tERROR_NOT_A_CLOUD_FILE                                                    syscall.Errno = 376\n\tERROR_CLOUD_FILE_NOT_IN_SYNC                                              syscall.Errno = 377\n\tERROR_CLOUD_FILE_ALREADY_CONNECTED                                        syscall.Errno = 378\n\tERROR_CLOUD_FILE_NOT_SUPPORTED                                            syscall.Errno = 379\n\tERROR_CLOUD_FILE_INVALID_REQUEST                                          syscall.Errno = 380\n\tERROR_CLOUD_FILE_READ_ONLY_VOLUME                                         syscall.Errno = 381\n\tERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY                                  syscall.Errno = 382\n\tERROR_CLOUD_FILE_VALIDATION_FAILED                                        syscall.Errno = 383\n\tERROR_SMB1_NOT_AVAILABLE                                                  syscall.Errno = 384\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION                        syscall.Errno = 385\n\tERROR_CLOUD_FILE_AUTHENTICATION_FAILED                                    syscall.Errno = 386\n\tERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES                                   syscall.Errno = 387\n\tERROR_CLOUD_FILE_NETWORK_UNAVAILABLE                                      syscall.Errno = 388\n\tERROR_CLOUD_FILE_UNSUCCESSFUL                                             syscall.Errno = 389\n\tERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT                                      syscall.Errno = 390\n\tERROR_CLOUD_FILE_IN_USE                                                   syscall.Errno = 391\n\tERROR_CLOUD_FILE_PINNED                                                   syscall.Errno = 392\n\tERROR_CLOUD_FILE_REQUEST_ABORTED                                          syscall.Errno = 393\n\tERROR_CLOUD_FILE_PROPERTY_CORRUPT                                         syscall.Errno = 394\n\tERROR_CLOUD_FILE_ACCESS_DENIED                                            syscall.Errno = 395\n\tERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS                                   syscall.Errno = 396\n\tERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT                                   syscall.Errno = 397\n\tERROR_CLOUD_FILE_REQUEST_CANCELED                                         syscall.Errno = 398\n\tERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED                                       syscall.Errno = 399\n\tERROR_THREAD_MODE_ALREADY_BACKGROUND                                      syscall.Errno = 400\n\tERROR_THREAD_MODE_NOT_BACKGROUND                                          syscall.Errno = 401\n\tERROR_PROCESS_MODE_ALREADY_BACKGROUND                                     syscall.Errno = 402\n\tERROR_PROCESS_MODE_NOT_BACKGROUND                                         syscall.Errno = 403\n\tERROR_CLOUD_FILE_PROVIDER_TERMINATED                                      syscall.Errno = 404\n\tERROR_NOT_A_CLOUD_SYNC_ROOT                                               syscall.Errno = 405\n\tERROR_FILE_PROTECTED_UNDER_DPL                                            syscall.Errno = 406\n\tERROR_VOLUME_NOT_CLUSTER_ALIGNED                                          syscall.Errno = 407\n\tERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND                              syscall.Errno = 408\n\tERROR_APPX_FILE_NOT_ENCRYPTED                                             syscall.Errno = 409\n\tERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED                                  syscall.Errno = 410\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET                        syscall.Errno = 411\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE                         syscall.Errno = 412\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER                         syscall.Errno = 413\n\tERROR_LINUX_SUBSYSTEM_NOT_PRESENT                                         syscall.Errno = 414\n\tERROR_FT_READ_FAILURE                                                     syscall.Errno = 415\n\tERROR_STORAGE_RESERVE_ID_INVALID                                          syscall.Errno = 416\n\tERROR_STORAGE_RESERVE_DOES_NOT_EXIST                                      syscall.Errno = 417\n\tERROR_STORAGE_RESERVE_ALREADY_EXISTS                                      syscall.Errno = 418\n\tERROR_STORAGE_RESERVE_NOT_EMPTY                                           syscall.Errno = 419\n\tERROR_NOT_A_DAX_VOLUME                                                    syscall.Errno = 420\n\tERROR_NOT_DAX_MAPPABLE                                                    syscall.Errno = 421\n\tERROR_TIME_SENSITIVE_THREAD                                               syscall.Errno = 422\n\tERROR_DPL_NOT_SUPPORTED_FOR_USER                                          syscall.Errno = 423\n\tERROR_CASE_DIFFERING_NAMES_IN_DIR                                         syscall.Errno = 424\n\tERROR_FILE_NOT_SUPPORTED                                                  syscall.Errno = 425\n\tERROR_CLOUD_FILE_REQUEST_TIMEOUT                                          syscall.Errno = 426\n\tERROR_NO_TASK_QUEUE                                                       syscall.Errno = 427\n\tERROR_SRC_SRV_DLL_LOAD_FAILED                                             syscall.Errno = 428\n\tERROR_NOT_SUPPORTED_WITH_BTT                                              syscall.Errno = 429\n\tERROR_ENCRYPTION_DISABLED                                                 syscall.Errno = 430\n\tERROR_ENCRYPTING_METADATA_DISALLOWED                                      syscall.Errno = 431\n\tERROR_CANT_CLEAR_ENCRYPTION_FLAG                                          syscall.Errno = 432\n\tERROR_NO_SUCH_DEVICE                                                      syscall.Errno = 433\n\tERROR_CAPAUTHZ_NOT_DEVUNLOCKED                                            syscall.Errno = 450\n\tERROR_CAPAUTHZ_CHANGE_TYPE                                                syscall.Errno = 451\n\tERROR_CAPAUTHZ_NOT_PROVISIONED                                            syscall.Errno = 452\n\tERROR_CAPAUTHZ_NOT_AUTHORIZED                                             syscall.Errno = 453\n\tERROR_CAPAUTHZ_NO_POLICY                                                  syscall.Errno = 454\n\tERROR_CAPAUTHZ_DB_CORRUPTED                                               syscall.Errno = 455\n\tERROR_CAPAUTHZ_SCCD_INVALID_CATALOG                                       syscall.Errno = 456\n\tERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY                                        syscall.Errno = 457\n\tERROR_CAPAUTHZ_SCCD_PARSE_ERROR                                           syscall.Errno = 458\n\tERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED                                     syscall.Errno = 459\n\tERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH                                   syscall.Errno = 460\n\tERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT                                     syscall.Errno = 480\n\tERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT                             syscall.Errno = 481\n\tERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT                           syscall.Errno = 482\n\tERROR_DEVICE_HARDWARE_ERROR                                               syscall.Errno = 483\n\tERROR_INVALID_ADDRESS                                                     syscall.Errno = 487\n\tERROR_VRF_CFG_ENABLED                                                     syscall.Errno = 1183\n\tERROR_PARTITION_TERMINATING                                               syscall.Errno = 1184\n\tERROR_USER_PROFILE_LOAD                                                   syscall.Errno = 500\n\tERROR_ARITHMETIC_OVERFLOW                                                 syscall.Errno = 534\n\tERROR_PIPE_CONNECTED                                                      syscall.Errno = 535\n\tERROR_PIPE_LISTENING                                                      syscall.Errno = 536\n\tERROR_VERIFIER_STOP                                                       syscall.Errno = 537\n\tERROR_ABIOS_ERROR                                                         syscall.Errno = 538\n\tERROR_WX86_WARNING                                                        syscall.Errno = 539\n\tERROR_WX86_ERROR                                                          syscall.Errno = 540\n\tERROR_TIMER_NOT_CANCELED                                                  syscall.Errno = 541\n\tERROR_UNWIND                                                              syscall.Errno = 542\n\tERROR_BAD_STACK                                                           syscall.Errno = 543\n\tERROR_INVALID_UNWIND_TARGET                                               syscall.Errno = 544\n\tERROR_INVALID_PORT_ATTRIBUTES                                             syscall.Errno = 545\n\tERROR_PORT_MESSAGE_TOO_LONG                                               syscall.Errno = 546\n\tERROR_INVALID_QUOTA_LOWER                                                 syscall.Errno = 547\n\tERROR_DEVICE_ALREADY_ATTACHED                                             syscall.Errno = 548\n\tERROR_INSTRUCTION_MISALIGNMENT                                            syscall.Errno = 549\n\tERROR_PROFILING_NOT_STARTED                                               syscall.Errno = 550\n\tERROR_PROFILING_NOT_STOPPED                                               syscall.Errno = 551\n\tERROR_COULD_NOT_INTERPRET                                                 syscall.Errno = 552\n\tERROR_PROFILING_AT_LIMIT                                                  syscall.Errno = 553\n\tERROR_CANT_WAIT                                                           syscall.Errno = 554\n\tERROR_CANT_TERMINATE_SELF                                                 syscall.Errno = 555\n\tERROR_UNEXPECTED_MM_CREATE_ERR                                            syscall.Errno = 556\n\tERROR_UNEXPECTED_MM_MAP_ERROR                                             syscall.Errno = 557\n\tERROR_UNEXPECTED_MM_EXTEND_ERR                                            syscall.Errno = 558\n\tERROR_BAD_FUNCTION_TABLE                                                  syscall.Errno = 559\n\tERROR_NO_GUID_TRANSLATION                                                 syscall.Errno = 560\n\tERROR_INVALID_LDT_SIZE                                                    syscall.Errno = 561\n\tERROR_INVALID_LDT_OFFSET                                                  syscall.Errno = 563\n\tERROR_INVALID_LDT_DESCRIPTOR                                              syscall.Errno = 564\n\tERROR_TOO_MANY_THREADS                                                    syscall.Errno = 565\n\tERROR_THREAD_NOT_IN_PROCESS                                               syscall.Errno = 566\n\tERROR_PAGEFILE_QUOTA_EXCEEDED                                             syscall.Errno = 567\n\tERROR_LOGON_SERVER_CONFLICT                                               syscall.Errno = 568\n\tERROR_SYNCHRONIZATION_REQUIRED                                            syscall.Errno = 569\n\tERROR_NET_OPEN_FAILED                                                     syscall.Errno = 570\n\tERROR_IO_PRIVILEGE_FAILED                                                 syscall.Errno = 571\n\tERROR_CONTROL_C_EXIT                                                      syscall.Errno = 572\n\tERROR_MISSING_SYSTEMFILE                                                  syscall.Errno = 573\n\tERROR_UNHANDLED_EXCEPTION                                                 syscall.Errno = 574\n\tERROR_APP_INIT_FAILURE                                                    syscall.Errno = 575\n\tERROR_PAGEFILE_CREATE_FAILED                                              syscall.Errno = 576\n\tERROR_INVALID_IMAGE_HASH                                                  syscall.Errno = 577\n\tERROR_NO_PAGEFILE                                                         syscall.Errno = 578\n\tERROR_ILLEGAL_FLOAT_CONTEXT                                               syscall.Errno = 579\n\tERROR_NO_EVENT_PAIR                                                       syscall.Errno = 580\n\tERROR_DOMAIN_CTRLR_CONFIG_ERROR                                           syscall.Errno = 581\n\tERROR_ILLEGAL_CHARACTER                                                   syscall.Errno = 582\n\tERROR_UNDEFINED_CHARACTER                                                 syscall.Errno = 583\n\tERROR_FLOPPY_VOLUME                                                       syscall.Errno = 584\n\tERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT                                    syscall.Errno = 585\n\tERROR_BACKUP_CONTROLLER                                                   syscall.Errno = 586\n\tERROR_MUTANT_LIMIT_EXCEEDED                                               syscall.Errno = 587\n\tERROR_FS_DRIVER_REQUIRED                                                  syscall.Errno = 588\n\tERROR_CANNOT_LOAD_REGISTRY_FILE                                           syscall.Errno = 589\n\tERROR_DEBUG_ATTACH_FAILED                                                 syscall.Errno = 590\n\tERROR_SYSTEM_PROCESS_TERMINATED                                           syscall.Errno = 591\n\tERROR_DATA_NOT_ACCEPTED                                                   syscall.Errno = 592\n\tERROR_VDM_HARD_ERROR                                                      syscall.Errno = 593\n\tERROR_DRIVER_CANCEL_TIMEOUT                                               syscall.Errno = 594\n\tERROR_REPLY_MESSAGE_MISMATCH                                              syscall.Errno = 595\n\tERROR_LOST_WRITEBEHIND_DATA                                               syscall.Errno = 596\n\tERROR_CLIENT_SERVER_PARAMETERS_INVALID                                    syscall.Errno = 597\n\tERROR_NOT_TINY_STREAM                                                     syscall.Errno = 598\n\tERROR_STACK_OVERFLOW_READ                                                 syscall.Errno = 599\n\tERROR_CONVERT_TO_LARGE                                                    syscall.Errno = 600\n\tERROR_FOUND_OUT_OF_SCOPE                                                  syscall.Errno = 601\n\tERROR_ALLOCATE_BUCKET                                                     syscall.Errno = 602\n\tERROR_MARSHALL_OVERFLOW                                                   syscall.Errno = 603\n\tERROR_INVALID_VARIANT                                                     syscall.Errno = 604\n\tERROR_BAD_COMPRESSION_BUFFER                                              syscall.Errno = 605\n\tERROR_AUDIT_FAILED                                                        syscall.Errno = 606\n\tERROR_TIMER_RESOLUTION_NOT_SET                                            syscall.Errno = 607\n\tERROR_INSUFFICIENT_LOGON_INFO                                             syscall.Errno = 608\n\tERROR_BAD_DLL_ENTRYPOINT                                                  syscall.Errno = 609\n\tERROR_BAD_SERVICE_ENTRYPOINT                                              syscall.Errno = 610\n\tERROR_IP_ADDRESS_CONFLICT1                                                syscall.Errno = 611\n\tERROR_IP_ADDRESS_CONFLICT2                                                syscall.Errno = 612\n\tERROR_REGISTRY_QUOTA_LIMIT                                                syscall.Errno = 613\n\tERROR_NO_CALLBACK_ACTIVE                                                  syscall.Errno = 614\n\tERROR_PWD_TOO_SHORT                                                       syscall.Errno = 615\n\tERROR_PWD_TOO_RECENT                                                      syscall.Errno = 616\n\tERROR_PWD_HISTORY_CONFLICT                                                syscall.Errno = 617\n\tERROR_UNSUPPORTED_COMPRESSION                                             syscall.Errno = 618\n\tERROR_INVALID_HW_PROFILE                                                  syscall.Errno = 619\n\tERROR_INVALID_PLUGPLAY_DEVICE_PATH                                        syscall.Errno = 620\n\tERROR_QUOTA_LIST_INCONSISTENT                                             syscall.Errno = 621\n\tERROR_EVALUATION_EXPIRATION                                               syscall.Errno = 622\n\tERROR_ILLEGAL_DLL_RELOCATION                                              syscall.Errno = 623\n\tERROR_DLL_INIT_FAILED_LOGOFF                                              syscall.Errno = 624\n\tERROR_VALIDATE_CONTINUE                                                   syscall.Errno = 625\n\tERROR_NO_MORE_MATCHES                                                     syscall.Errno = 626\n\tERROR_RANGE_LIST_CONFLICT                                                 syscall.Errno = 627\n\tERROR_SERVER_SID_MISMATCH                                                 syscall.Errno = 628\n\tERROR_CANT_ENABLE_DENY_ONLY                                               syscall.Errno = 629\n\tERROR_FLOAT_MULTIPLE_FAULTS                                               syscall.Errno = 630\n\tERROR_FLOAT_MULTIPLE_TRAPS                                                syscall.Errno = 631\n\tERROR_NOINTERFACE                                                         syscall.Errno = 632\n\tERROR_DRIVER_FAILED_SLEEP                                                 syscall.Errno = 633\n\tERROR_CORRUPT_SYSTEM_FILE                                                 syscall.Errno = 634\n\tERROR_COMMITMENT_MINIMUM                                                  syscall.Errno = 635\n\tERROR_PNP_RESTART_ENUMERATION                                             syscall.Errno = 636\n\tERROR_SYSTEM_IMAGE_BAD_SIGNATURE                                          syscall.Errno = 637\n\tERROR_PNP_REBOOT_REQUIRED                                                 syscall.Errno = 638\n\tERROR_INSUFFICIENT_POWER                                                  syscall.Errno = 639\n\tERROR_MULTIPLE_FAULT_VIOLATION                                            syscall.Errno = 640\n\tERROR_SYSTEM_SHUTDOWN                                                     syscall.Errno = 641\n\tERROR_PORT_NOT_SET                                                        syscall.Errno = 642\n\tERROR_DS_VERSION_CHECK_FAILURE                                            syscall.Errno = 643\n\tERROR_RANGE_NOT_FOUND                                                     syscall.Errno = 644\n\tERROR_NOT_SAFE_MODE_DRIVER                                                syscall.Errno = 646\n\tERROR_FAILED_DRIVER_ENTRY                                                 syscall.Errno = 647\n\tERROR_DEVICE_ENUMERATION_ERROR                                            syscall.Errno = 648\n\tERROR_MOUNT_POINT_NOT_RESOLVED                                            syscall.Errno = 649\n\tERROR_INVALID_DEVICE_OBJECT_PARAMETER                                     syscall.Errno = 650\n\tERROR_MCA_OCCURED                                                         syscall.Errno = 651\n\tERROR_DRIVER_DATABASE_ERROR                                               syscall.Errno = 652\n\tERROR_SYSTEM_HIVE_TOO_LARGE                                               syscall.Errno = 653\n\tERROR_DRIVER_FAILED_PRIOR_UNLOAD                                          syscall.Errno = 654\n\tERROR_VOLSNAP_PREPARE_HIBERNATE                                           syscall.Errno = 655\n\tERROR_HIBERNATION_FAILURE                                                 syscall.Errno = 656\n\tERROR_PWD_TOO_LONG                                                        syscall.Errno = 657\n\tERROR_FILE_SYSTEM_LIMITATION                                              syscall.Errno = 665\n\tERROR_ASSERTION_FAILURE                                                   syscall.Errno = 668\n\tERROR_ACPI_ERROR                                                          syscall.Errno = 669\n\tERROR_WOW_ASSERTION                                                       syscall.Errno = 670\n\tERROR_PNP_BAD_MPS_TABLE                                                   syscall.Errno = 671\n\tERROR_PNP_TRANSLATION_FAILED                                              syscall.Errno = 672\n\tERROR_PNP_IRQ_TRANSLATION_FAILED                                          syscall.Errno = 673\n\tERROR_PNP_INVALID_ID                                                      syscall.Errno = 674\n\tERROR_WAKE_SYSTEM_DEBUGGER                                                syscall.Errno = 675\n\tERROR_HANDLES_CLOSED                                                      syscall.Errno = 676\n\tERROR_EXTRANEOUS_INFORMATION                                              syscall.Errno = 677\n\tERROR_RXACT_COMMIT_NECESSARY                                              syscall.Errno = 678\n\tERROR_MEDIA_CHECK                                                         syscall.Errno = 679\n\tERROR_GUID_SUBSTITUTION_MADE                                              syscall.Errno = 680\n\tERROR_STOPPED_ON_SYMLINK                                                  syscall.Errno = 681\n\tERROR_LONGJUMP                                                            syscall.Errno = 682\n\tERROR_PLUGPLAY_QUERY_VETOED                                               syscall.Errno = 683\n\tERROR_UNWIND_CONSOLIDATE                                                  syscall.Errno = 684\n\tERROR_REGISTRY_HIVE_RECOVERED                                             syscall.Errno = 685\n\tERROR_DLL_MIGHT_BE_INSECURE                                               syscall.Errno = 686\n\tERROR_DLL_MIGHT_BE_INCOMPATIBLE                                           syscall.Errno = 687\n\tERROR_DBG_EXCEPTION_NOT_HANDLED                                           syscall.Errno = 688\n\tERROR_DBG_REPLY_LATER                                                     syscall.Errno = 689\n\tERROR_DBG_UNABLE_TO_PROVIDE_HANDLE                                        syscall.Errno = 690\n\tERROR_DBG_TERMINATE_THREAD                                                syscall.Errno = 691\n\tERROR_DBG_TERMINATE_PROCESS                                               syscall.Errno = 692\n\tERROR_DBG_CONTROL_C                                                       syscall.Errno = 693\n\tERROR_DBG_PRINTEXCEPTION_C                                                syscall.Errno = 694\n\tERROR_DBG_RIPEXCEPTION                                                    syscall.Errno = 695\n\tERROR_DBG_CONTROL_BREAK                                                   syscall.Errno = 696\n\tERROR_DBG_COMMAND_EXCEPTION                                               syscall.Errno = 697\n\tERROR_OBJECT_NAME_EXISTS                                                  syscall.Errno = 698\n\tERROR_THREAD_WAS_SUSPENDED                                                syscall.Errno = 699\n\tERROR_IMAGE_NOT_AT_BASE                                                   syscall.Errno = 700\n\tERROR_RXACT_STATE_CREATED                                                 syscall.Errno = 701\n\tERROR_SEGMENT_NOTIFICATION                                                syscall.Errno = 702\n\tERROR_BAD_CURRENT_DIRECTORY                                               syscall.Errno = 703\n\tERROR_FT_READ_RECOVERY_FROM_BACKUP                                        syscall.Errno = 704\n\tERROR_FT_WRITE_RECOVERY                                                   syscall.Errno = 705\n\tERROR_IMAGE_MACHINE_TYPE_MISMATCH                                         syscall.Errno = 706\n\tERROR_RECEIVE_PARTIAL                                                     syscall.Errno = 707\n\tERROR_RECEIVE_EXPEDITED                                                   syscall.Errno = 708\n\tERROR_RECEIVE_PARTIAL_EXPEDITED                                           syscall.Errno = 709\n\tERROR_EVENT_DONE                                                          syscall.Errno = 710\n\tERROR_EVENT_PENDING                                                       syscall.Errno = 711\n\tERROR_CHECKING_FILE_SYSTEM                                                syscall.Errno = 712\n\tERROR_FATAL_APP_EXIT                                                      syscall.Errno = 713\n\tERROR_PREDEFINED_HANDLE                                                   syscall.Errno = 714\n\tERROR_WAS_UNLOCKED                                                        syscall.Errno = 715\n\tERROR_SERVICE_NOTIFICATION                                                syscall.Errno = 716\n\tERROR_WAS_LOCKED                                                          syscall.Errno = 717\n\tERROR_LOG_HARD_ERROR                                                      syscall.Errno = 718\n\tERROR_ALREADY_WIN32                                                       syscall.Errno = 719\n\tERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE                                     syscall.Errno = 720\n\tERROR_NO_YIELD_PERFORMED                                                  syscall.Errno = 721\n\tERROR_TIMER_RESUME_IGNORED                                                syscall.Errno = 722\n\tERROR_ARBITRATION_UNHANDLED                                               syscall.Errno = 723\n\tERROR_CARDBUS_NOT_SUPPORTED                                               syscall.Errno = 724\n\tERROR_MP_PROCESSOR_MISMATCH                                               syscall.Errno = 725\n\tERROR_HIBERNATED                                                          syscall.Errno = 726\n\tERROR_RESUME_HIBERNATION                                                  syscall.Errno = 727\n\tERROR_FIRMWARE_UPDATED                                                    syscall.Errno = 728\n\tERROR_DRIVERS_LEAKING_LOCKED_PAGES                                        syscall.Errno = 729\n\tERROR_WAKE_SYSTEM                                                         syscall.Errno = 730\n\tERROR_WAIT_1                                                              syscall.Errno = 731\n\tERROR_WAIT_2                                                              syscall.Errno = 732\n\tERROR_WAIT_3                                                              syscall.Errno = 733\n\tERROR_WAIT_63                                                             syscall.Errno = 734\n\tERROR_ABANDONED_WAIT_0                                                    syscall.Errno = 735\n\tERROR_ABANDONED_WAIT_63                                                   syscall.Errno = 736\n\tERROR_USER_APC                                                            syscall.Errno = 737\n\tERROR_KERNEL_APC                                                          syscall.Errno = 738\n\tERROR_ALERTED                                                             syscall.Errno = 739\n\tERROR_ELEVATION_REQUIRED                                                  syscall.Errno = 740\n\tERROR_REPARSE                                                             syscall.Errno = 741\n\tERROR_OPLOCK_BREAK_IN_PROGRESS                                            syscall.Errno = 742\n\tERROR_VOLUME_MOUNTED                                                      syscall.Errno = 743\n\tERROR_RXACT_COMMITTED                                                     syscall.Errno = 744\n\tERROR_NOTIFY_CLEANUP                                                      syscall.Errno = 745\n\tERROR_PRIMARY_TRANSPORT_CONNECT_FAILED                                    syscall.Errno = 746\n\tERROR_PAGE_FAULT_TRANSITION                                               syscall.Errno = 747\n\tERROR_PAGE_FAULT_DEMAND_ZERO                                              syscall.Errno = 748\n\tERROR_PAGE_FAULT_COPY_ON_WRITE                                            syscall.Errno = 749\n\tERROR_PAGE_FAULT_GUARD_PAGE                                               syscall.Errno = 750\n\tERROR_PAGE_FAULT_PAGING_FILE                                              syscall.Errno = 751\n\tERROR_CACHE_PAGE_LOCKED                                                   syscall.Errno = 752\n\tERROR_CRASH_DUMP                                                          syscall.Errno = 753\n\tERROR_BUFFER_ALL_ZEROS                                                    syscall.Errno = 754\n\tERROR_REPARSE_OBJECT                                                      syscall.Errno = 755\n\tERROR_RESOURCE_REQUIREMENTS_CHANGED                                       syscall.Errno = 756\n\tERROR_TRANSLATION_COMPLETE                                                syscall.Errno = 757\n\tERROR_NOTHING_TO_TERMINATE                                                syscall.Errno = 758\n\tERROR_PROCESS_NOT_IN_JOB                                                  syscall.Errno = 759\n\tERROR_PROCESS_IN_JOB                                                      syscall.Errno = 760\n\tERROR_VOLSNAP_HIBERNATE_READY                                             syscall.Errno = 761\n\tERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY                                  syscall.Errno = 762\n\tERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED                                  syscall.Errno = 763\n\tERROR_INTERRUPT_STILL_CONNECTED                                           syscall.Errno = 764\n\tERROR_WAIT_FOR_OPLOCK                                                     syscall.Errno = 765\n\tERROR_DBG_EXCEPTION_HANDLED                                               syscall.Errno = 766\n\tERROR_DBG_CONTINUE                                                        syscall.Errno = 767\n\tERROR_CALLBACK_POP_STACK                                                  syscall.Errno = 768\n\tERROR_COMPRESSION_DISABLED                                                syscall.Errno = 769\n\tERROR_CANTFETCHBACKWARDS                                                  syscall.Errno = 770\n\tERROR_CANTSCROLLBACKWARDS                                                 syscall.Errno = 771\n\tERROR_ROWSNOTRELEASED                                                     syscall.Errno = 772\n\tERROR_BAD_ACCESSOR_FLAGS                                                  syscall.Errno = 773\n\tERROR_ERRORS_ENCOUNTERED                                                  syscall.Errno = 774\n\tERROR_NOT_CAPABLE                                                         syscall.Errno = 775\n\tERROR_REQUEST_OUT_OF_SEQUENCE                                             syscall.Errno = 776\n\tERROR_VERSION_PARSE_ERROR                                                 syscall.Errno = 777\n\tERROR_BADSTARTPOSITION                                                    syscall.Errno = 778\n\tERROR_MEMORY_HARDWARE                                                     syscall.Errno = 779\n\tERROR_DISK_REPAIR_DISABLED                                                syscall.Errno = 780\n\tERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE             syscall.Errno = 781\n\tERROR_SYSTEM_POWERSTATE_TRANSITION                                        syscall.Errno = 782\n\tERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION                                syscall.Errno = 783\n\tERROR_MCA_EXCEPTION                                                       syscall.Errno = 784\n\tERROR_ACCESS_AUDIT_BY_POLICY                                              syscall.Errno = 785\n\tERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY                               syscall.Errno = 786\n\tERROR_ABANDON_HIBERFILE                                                   syscall.Errno = 787\n\tERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED                          syscall.Errno = 788\n\tERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR                          syscall.Errno = 789\n\tERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR                              syscall.Errno = 790\n\tERROR_BAD_MCFG_TABLE                                                      syscall.Errno = 791\n\tERROR_DISK_REPAIR_REDIRECTED                                              syscall.Errno = 792\n\tERROR_DISK_REPAIR_UNSUCCESSFUL                                            syscall.Errno = 793\n\tERROR_CORRUPT_LOG_OVERFULL                                                syscall.Errno = 794\n\tERROR_CORRUPT_LOG_CORRUPTED                                               syscall.Errno = 795\n\tERROR_CORRUPT_LOG_UNAVAILABLE                                             syscall.Errno = 796\n\tERROR_CORRUPT_LOG_DELETED_FULL                                            syscall.Errno = 797\n\tERROR_CORRUPT_LOG_CLEARED                                                 syscall.Errno = 798\n\tERROR_ORPHAN_NAME_EXHAUSTED                                               syscall.Errno = 799\n\tERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE                                       syscall.Errno = 800\n\tERROR_CANNOT_GRANT_REQUESTED_OPLOCK                                       syscall.Errno = 801\n\tERROR_CANNOT_BREAK_OPLOCK                                                 syscall.Errno = 802\n\tERROR_OPLOCK_HANDLE_CLOSED                                                syscall.Errno = 803\n\tERROR_NO_ACE_CONDITION                                                    syscall.Errno = 804\n\tERROR_INVALID_ACE_CONDITION                                               syscall.Errno = 805\n\tERROR_FILE_HANDLE_REVOKED                                                 syscall.Errno = 806\n\tERROR_IMAGE_AT_DIFFERENT_BASE                                             syscall.Errno = 807\n\tERROR_ENCRYPTED_IO_NOT_POSSIBLE                                           syscall.Errno = 808\n\tERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS                              syscall.Errno = 809\n\tERROR_QUOTA_ACTIVITY                                                      syscall.Errno = 810\n\tERROR_HANDLE_REVOKED                                                      syscall.Errno = 811\n\tERROR_CALLBACK_INVOKE_INLINE                                              syscall.Errno = 812\n\tERROR_CPU_SET_INVALID                                                     syscall.Errno = 813\n\tERROR_ENCLAVE_NOT_TERMINATED                                              syscall.Errno = 814\n\tERROR_ENCLAVE_VIOLATION                                                   syscall.Errno = 815\n\tERROR_EA_ACCESS_DENIED                                                    syscall.Errno = 994\n\tERROR_OPERATION_ABORTED                                                   syscall.Errno = 995\n\tERROR_IO_INCOMPLETE                                                       syscall.Errno = 996\n\tERROR_IO_PENDING                                                          syscall.Errno = 997\n\tERROR_NOACCESS                                                            syscall.Errno = 998\n\tERROR_SWAPERROR                                                           syscall.Errno = 999\n\tERROR_STACK_OVERFLOW                                                      syscall.Errno = 1001\n\tERROR_INVALID_MESSAGE                                                     syscall.Errno = 1002\n\tERROR_CAN_NOT_COMPLETE                                                    syscall.Errno = 1003\n\tERROR_INVALID_FLAGS                                                       syscall.Errno = 1004\n\tERROR_UNRECOGNIZED_VOLUME                                                 syscall.Errno = 1005\n\tERROR_FILE_INVALID                                                        syscall.Errno = 1006\n\tERROR_FULLSCREEN_MODE                                                     syscall.Errno = 1007\n\tERROR_NO_TOKEN                                                            syscall.Errno = 1008\n\tERROR_BADDB                                                               syscall.Errno = 1009\n\tERROR_BADKEY                                                              syscall.Errno = 1010\n\tERROR_CANTOPEN                                                            syscall.Errno = 1011\n\tERROR_CANTREAD                                                            syscall.Errno = 1012\n\tERROR_CANTWRITE                                                           syscall.Errno = 1013\n\tERROR_REGISTRY_RECOVERED                                                  syscall.Errno = 1014\n\tERROR_REGISTRY_CORRUPT                                                    syscall.Errno = 1015\n\tERROR_REGISTRY_IO_FAILED                                                  syscall.Errno = 1016\n\tERROR_NOT_REGISTRY_FILE                                                   syscall.Errno = 1017\n\tERROR_KEY_DELETED                                                         syscall.Errno = 1018\n\tERROR_NO_LOG_SPACE                                                        syscall.Errno = 1019\n\tERROR_KEY_HAS_CHILDREN                                                    syscall.Errno = 1020\n\tERROR_CHILD_MUST_BE_VOLATILE                                              syscall.Errno = 1021\n\tERROR_NOTIFY_ENUM_DIR                                                     syscall.Errno = 1022\n\tERROR_DEPENDENT_SERVICES_RUNNING                                          syscall.Errno = 1051\n\tERROR_INVALID_SERVICE_CONTROL                                             syscall.Errno = 1052\n\tERROR_SERVICE_REQUEST_TIMEOUT                                             syscall.Errno = 1053\n\tERROR_SERVICE_NO_THREAD                                                   syscall.Errno = 1054\n\tERROR_SERVICE_DATABASE_LOCKED                                             syscall.Errno = 1055\n\tERROR_SERVICE_ALREADY_RUNNING                                             syscall.Errno = 1056\n\tERROR_INVALID_SERVICE_ACCOUNT                                             syscall.Errno = 1057\n\tERROR_SERVICE_DISABLED                                                    syscall.Errno = 1058\n\tERROR_CIRCULAR_DEPENDENCY                                                 syscall.Errno = 1059\n\tERROR_SERVICE_DOES_NOT_EXIST                                              syscall.Errno = 1060\n\tERROR_SERVICE_CANNOT_ACCEPT_CTRL                                          syscall.Errno = 1061\n\tERROR_SERVICE_NOT_ACTIVE                                                  syscall.Errno = 1062\n\tERROR_FAILED_SERVICE_CONTROLLER_CONNECT                                   syscall.Errno = 1063\n\tERROR_EXCEPTION_IN_SERVICE                                                syscall.Errno = 1064\n\tERROR_DATABASE_DOES_NOT_EXIST                                             syscall.Errno = 1065\n\tERROR_SERVICE_SPECIFIC_ERROR                                              syscall.Errno = 1066\n\tERROR_PROCESS_ABORTED                                                     syscall.Errno = 1067\n\tERROR_SERVICE_DEPENDENCY_FAIL                                             syscall.Errno = 1068\n\tERROR_SERVICE_LOGON_FAILED                                                syscall.Errno = 1069\n\tERROR_SERVICE_START_HANG                                                  syscall.Errno = 1070\n\tERROR_INVALID_SERVICE_LOCK                                                syscall.Errno = 1071\n\tERROR_SERVICE_MARKED_FOR_DELETE                                           syscall.Errno = 1072\n\tERROR_SERVICE_EXISTS                                                      syscall.Errno = 1073\n\tERROR_ALREADY_RUNNING_LKG                                                 syscall.Errno = 1074\n\tERROR_SERVICE_DEPENDENCY_DELETED                                          syscall.Errno = 1075\n\tERROR_BOOT_ALREADY_ACCEPTED                                               syscall.Errno = 1076\n\tERROR_SERVICE_NEVER_STARTED                                               syscall.Errno = 1077\n\tERROR_DUPLICATE_SERVICE_NAME                                              syscall.Errno = 1078\n\tERROR_DIFFERENT_SERVICE_ACCOUNT                                           syscall.Errno = 1079\n\tERROR_CANNOT_DETECT_DRIVER_FAILURE                                        syscall.Errno = 1080\n\tERROR_CANNOT_DETECT_PROCESS_ABORT                                         syscall.Errno = 1081\n\tERROR_NO_RECOVERY_PROGRAM                                                 syscall.Errno = 1082\n\tERROR_SERVICE_NOT_IN_EXE                                                  syscall.Errno = 1083\n\tERROR_NOT_SAFEBOOT_SERVICE                                                syscall.Errno = 1084\n\tERROR_END_OF_MEDIA                                                        syscall.Errno = 1100\n\tERROR_FILEMARK_DETECTED                                                   syscall.Errno = 1101\n\tERROR_BEGINNING_OF_MEDIA                                                  syscall.Errno = 1102\n\tERROR_SETMARK_DETECTED                                                    syscall.Errno = 1103\n\tERROR_NO_DATA_DETECTED                                                    syscall.Errno = 1104\n\tERROR_PARTITION_FAILURE                                                   syscall.Errno = 1105\n\tERROR_INVALID_BLOCK_LENGTH                                                syscall.Errno = 1106\n\tERROR_DEVICE_NOT_PARTITIONED                                              syscall.Errno = 1107\n\tERROR_UNABLE_TO_LOCK_MEDIA                                                syscall.Errno = 1108\n\tERROR_UNABLE_TO_UNLOAD_MEDIA                                              syscall.Errno = 1109\n\tERROR_MEDIA_CHANGED                                                       syscall.Errno = 1110\n\tERROR_BUS_RESET                                                           syscall.Errno = 1111\n\tERROR_NO_MEDIA_IN_DRIVE                                                   syscall.Errno = 1112\n\tERROR_NO_UNICODE_TRANSLATION                                              syscall.Errno = 1113\n\tERROR_DLL_INIT_FAILED                                                     syscall.Errno = 1114\n\tERROR_SHUTDOWN_IN_PROGRESS                                                syscall.Errno = 1115\n\tERROR_NO_SHUTDOWN_IN_PROGRESS                                             syscall.Errno = 1116\n\tERROR_IO_DEVICE                                                           syscall.Errno = 1117\n\tERROR_SERIAL_NO_DEVICE                                                    syscall.Errno = 1118\n\tERROR_IRQ_BUSY                                                            syscall.Errno = 1119\n\tERROR_MORE_WRITES                                                         syscall.Errno = 1120\n\tERROR_COUNTER_TIMEOUT                                                     syscall.Errno = 1121\n\tERROR_FLOPPY_ID_MARK_NOT_FOUND                                            syscall.Errno = 1122\n\tERROR_FLOPPY_WRONG_CYLINDER                                               syscall.Errno = 1123\n\tERROR_FLOPPY_UNKNOWN_ERROR                                                syscall.Errno = 1124\n\tERROR_FLOPPY_BAD_REGISTERS                                                syscall.Errno = 1125\n\tERROR_DISK_RECALIBRATE_FAILED                                             syscall.Errno = 1126\n\tERROR_DISK_OPERATION_FAILED                                               syscall.Errno = 1127\n\tERROR_DISK_RESET_FAILED                                                   syscall.Errno = 1128\n\tERROR_EOM_OVERFLOW                                                        syscall.Errno = 1129\n\tERROR_NOT_ENOUGH_SERVER_MEMORY                                            syscall.Errno = 1130\n\tERROR_POSSIBLE_DEADLOCK                                                   syscall.Errno = 1131\n\tERROR_MAPPED_ALIGNMENT                                                    syscall.Errno = 1132\n\tERROR_SET_POWER_STATE_VETOED                                              syscall.Errno = 1140\n\tERROR_SET_POWER_STATE_FAILED                                              syscall.Errno = 1141\n\tERROR_TOO_MANY_LINKS                                                      syscall.Errno = 1142\n\tERROR_OLD_WIN_VERSION                                                     syscall.Errno = 1150\n\tERROR_APP_WRONG_OS                                                        syscall.Errno = 1151\n\tERROR_SINGLE_INSTANCE_APP                                                 syscall.Errno = 1152\n\tERROR_RMODE_APP                                                           syscall.Errno = 1153\n\tERROR_INVALID_DLL                                                         syscall.Errno = 1154\n\tERROR_NO_ASSOCIATION                                                      syscall.Errno = 1155\n\tERROR_DDE_FAIL                                                            syscall.Errno = 1156\n\tERROR_DLL_NOT_FOUND                                                       syscall.Errno = 1157\n\tERROR_NO_MORE_USER_HANDLES                                                syscall.Errno = 1158\n\tERROR_MESSAGE_SYNC_ONLY                                                   syscall.Errno = 1159\n\tERROR_SOURCE_ELEMENT_EMPTY                                                syscall.Errno = 1160\n\tERROR_DESTINATION_ELEMENT_FULL                                            syscall.Errno = 1161\n\tERROR_ILLEGAL_ELEMENT_ADDRESS                                             syscall.Errno = 1162\n\tERROR_MAGAZINE_NOT_PRESENT                                                syscall.Errno = 1163\n\tERROR_DEVICE_REINITIALIZATION_NEEDED                                      syscall.Errno = 1164\n\tERROR_DEVICE_REQUIRES_CLEANING                                            syscall.Errno = 1165\n\tERROR_DEVICE_DOOR_OPEN                                                    syscall.Errno = 1166\n\tERROR_DEVICE_NOT_CONNECTED                                                syscall.Errno = 1167\n\tERROR_NOT_FOUND                                                           syscall.Errno = 1168\n\tERROR_NO_MATCH                                                            syscall.Errno = 1169\n\tERROR_SET_NOT_FOUND                                                       syscall.Errno = 1170\n\tERROR_POINT_NOT_FOUND                                                     syscall.Errno = 1171\n\tERROR_NO_TRACKING_SERVICE                                                 syscall.Errno = 1172\n\tERROR_NO_VOLUME_ID                                                        syscall.Errno = 1173\n\tERROR_UNABLE_TO_REMOVE_REPLACED                                           syscall.Errno = 1175\n\tERROR_UNABLE_TO_MOVE_REPLACEMENT                                          syscall.Errno = 1176\n\tERROR_UNABLE_TO_MOVE_REPLACEMENT_2                                        syscall.Errno = 1177\n\tERROR_JOURNAL_DELETE_IN_PROGRESS                                          syscall.Errno = 1178\n\tERROR_JOURNAL_NOT_ACTIVE                                                  syscall.Errno = 1179\n\tERROR_POTENTIAL_FILE_FOUND                                                syscall.Errno = 1180\n\tERROR_JOURNAL_ENTRY_DELETED                                               syscall.Errno = 1181\n\tERROR_SHUTDOWN_IS_SCHEDULED                                               syscall.Errno = 1190\n\tERROR_SHUTDOWN_USERS_LOGGED_ON                                            syscall.Errno = 1191\n\tERROR_BAD_DEVICE                                                          syscall.Errno = 1200\n\tERROR_CONNECTION_UNAVAIL                                                  syscall.Errno = 1201\n\tERROR_DEVICE_ALREADY_REMEMBERED                                           syscall.Errno = 1202\n\tERROR_NO_NET_OR_BAD_PATH                                                  syscall.Errno = 1203\n\tERROR_BAD_PROVIDER                                                        syscall.Errno = 1204\n\tERROR_CANNOT_OPEN_PROFILE                                                 syscall.Errno = 1205\n\tERROR_BAD_PROFILE                                                         syscall.Errno = 1206\n\tERROR_NOT_CONTAINER                                                       syscall.Errno = 1207\n\tERROR_EXTENDED_ERROR                                                      syscall.Errno = 1208\n\tERROR_INVALID_GROUPNAME                                                   syscall.Errno = 1209\n\tERROR_INVALID_COMPUTERNAME                                                syscall.Errno = 1210\n\tERROR_INVALID_EVENTNAME                                                   syscall.Errno = 1211\n\tERROR_INVALID_DOMAINNAME                                                  syscall.Errno = 1212\n\tERROR_INVALID_SERVICENAME                                                 syscall.Errno = 1213\n\tERROR_INVALID_NETNAME                                                     syscall.Errno = 1214\n\tERROR_INVALID_SHARENAME                                                   syscall.Errno = 1215\n\tERROR_INVALID_PASSWORDNAME                                                syscall.Errno = 1216\n\tERROR_INVALID_MESSAGENAME                                                 syscall.Errno = 1217\n\tERROR_INVALID_MESSAGEDEST                                                 syscall.Errno = 1218\n\tERROR_SESSION_CREDENTIAL_CONFLICT                                         syscall.Errno = 1219\n\tERROR_REMOTE_SESSION_LIMIT_EXCEEDED                                       syscall.Errno = 1220\n\tERROR_DUP_DOMAINNAME                                                      syscall.Errno = 1221\n\tERROR_NO_NETWORK                                                          syscall.Errno = 1222\n\tERROR_CANCELLED                                                           syscall.Errno = 1223\n\tERROR_USER_MAPPED_FILE                                                    syscall.Errno = 1224\n\tERROR_CONNECTION_REFUSED                                                  syscall.Errno = 1225\n\tERROR_GRACEFUL_DISCONNECT                                                 syscall.Errno = 1226\n\tERROR_ADDRESS_ALREADY_ASSOCIATED                                          syscall.Errno = 1227\n\tERROR_ADDRESS_NOT_ASSOCIATED                                              syscall.Errno = 1228\n\tERROR_CONNECTION_INVALID                                                  syscall.Errno = 1229\n\tERROR_CONNECTION_ACTIVE                                                   syscall.Errno = 1230\n\tERROR_NETWORK_UNREACHABLE                                                 syscall.Errno = 1231\n\tERROR_HOST_UNREACHABLE                                                    syscall.Errno = 1232\n\tERROR_PROTOCOL_UNREACHABLE                                                syscall.Errno = 1233\n\tERROR_PORT_UNREACHABLE                                                    syscall.Errno = 1234\n\tERROR_REQUEST_ABORTED                                                     syscall.Errno = 1235\n\tERROR_CONNECTION_ABORTED                                                  syscall.Errno = 1236\n\tERROR_RETRY                                                               syscall.Errno = 1237\n\tERROR_CONNECTION_COUNT_LIMIT                                              syscall.Errno = 1238\n\tERROR_LOGIN_TIME_RESTRICTION                                              syscall.Errno = 1239\n\tERROR_LOGIN_WKSTA_RESTRICTION                                             syscall.Errno = 1240\n\tERROR_INCORRECT_ADDRESS                                                   syscall.Errno = 1241\n\tERROR_ALREADY_REGISTERED                                                  syscall.Errno = 1242\n\tERROR_SERVICE_NOT_FOUND                                                   syscall.Errno = 1243\n\tERROR_NOT_AUTHENTICATED                                                   syscall.Errno = 1244\n\tERROR_NOT_LOGGED_ON                                                       syscall.Errno = 1245\n\tERROR_CONTINUE                                                            syscall.Errno = 1246\n\tERROR_ALREADY_INITIALIZED                                                 syscall.Errno = 1247\n\tERROR_NO_MORE_DEVICES                                                     syscall.Errno = 1248\n\tERROR_NO_SUCH_SITE                                                        syscall.Errno = 1249\n\tERROR_DOMAIN_CONTROLLER_EXISTS                                            syscall.Errno = 1250\n\tERROR_ONLY_IF_CONNECTED                                                   syscall.Errno = 1251\n\tERROR_OVERRIDE_NOCHANGES                                                  syscall.Errno = 1252\n\tERROR_BAD_USER_PROFILE                                                    syscall.Errno = 1253\n\tERROR_NOT_SUPPORTED_ON_SBS                                                syscall.Errno = 1254\n\tERROR_SERVER_SHUTDOWN_IN_PROGRESS                                         syscall.Errno = 1255\n\tERROR_HOST_DOWN                                                           syscall.Errno = 1256\n\tERROR_NON_ACCOUNT_SID                                                     syscall.Errno = 1257\n\tERROR_NON_DOMAIN_SID                                                      syscall.Errno = 1258\n\tERROR_APPHELP_BLOCK                                                       syscall.Errno = 1259\n\tERROR_ACCESS_DISABLED_BY_POLICY                                           syscall.Errno = 1260\n\tERROR_REG_NAT_CONSUMPTION                                                 syscall.Errno = 1261\n\tERROR_CSCSHARE_OFFLINE                                                    syscall.Errno = 1262\n\tERROR_PKINIT_FAILURE                                                      syscall.Errno = 1263\n\tERROR_SMARTCARD_SUBSYSTEM_FAILURE                                         syscall.Errno = 1264\n\tERROR_DOWNGRADE_DETECTED                                                  syscall.Errno = 1265\n\tERROR_MACHINE_LOCKED                                                      syscall.Errno = 1271\n\tERROR_SMB_GUEST_LOGON_BLOCKED                                             syscall.Errno = 1272\n\tERROR_CALLBACK_SUPPLIED_INVALID_DATA                                      syscall.Errno = 1273\n\tERROR_SYNC_FOREGROUND_REFRESH_REQUIRED                                    syscall.Errno = 1274\n\tERROR_DRIVER_BLOCKED                                                      syscall.Errno = 1275\n\tERROR_INVALID_IMPORT_OF_NON_DLL                                           syscall.Errno = 1276\n\tERROR_ACCESS_DISABLED_WEBBLADE                                            syscall.Errno = 1277\n\tERROR_ACCESS_DISABLED_WEBBLADE_TAMPER                                     syscall.Errno = 1278\n\tERROR_RECOVERY_FAILURE                                                    syscall.Errno = 1279\n\tERROR_ALREADY_FIBER                                                       syscall.Errno = 1280\n\tERROR_ALREADY_THREAD                                                      syscall.Errno = 1281\n\tERROR_STACK_BUFFER_OVERRUN                                                syscall.Errno = 1282\n\tERROR_PARAMETER_QUOTA_EXCEEDED                                            syscall.Errno = 1283\n\tERROR_DEBUGGER_INACTIVE                                                   syscall.Errno = 1284\n\tERROR_DELAY_LOAD_FAILED                                                   syscall.Errno = 1285\n\tERROR_VDM_DISALLOWED                                                      syscall.Errno = 1286\n\tERROR_UNIDENTIFIED_ERROR                                                  syscall.Errno = 1287\n\tERROR_INVALID_CRUNTIME_PARAMETER                                          syscall.Errno = 1288\n\tERROR_BEYOND_VDL                                                          syscall.Errno = 1289\n\tERROR_INCOMPATIBLE_SERVICE_SID_TYPE                                       syscall.Errno = 1290\n\tERROR_DRIVER_PROCESS_TERMINATED                                           syscall.Errno = 1291\n\tERROR_IMPLEMENTATION_LIMIT                                                syscall.Errno = 1292\n\tERROR_PROCESS_IS_PROTECTED                                                syscall.Errno = 1293\n\tERROR_SERVICE_NOTIFY_CLIENT_LAGGING                                       syscall.Errno = 1294\n\tERROR_DISK_QUOTA_EXCEEDED                                                 syscall.Errno = 1295\n\tERROR_CONTENT_BLOCKED                                                     syscall.Errno = 1296\n\tERROR_INCOMPATIBLE_SERVICE_PRIVILEGE                                      syscall.Errno = 1297\n\tERROR_APP_HANG                                                            syscall.Errno = 1298\n\tERROR_INVALID_LABEL                                                       syscall.Errno = 1299\n\tERROR_NOT_ALL_ASSIGNED                                                    syscall.Errno = 1300\n\tERROR_SOME_NOT_MAPPED                                                     syscall.Errno = 1301\n\tERROR_NO_QUOTAS_FOR_ACCOUNT                                               syscall.Errno = 1302\n\tERROR_LOCAL_USER_SESSION_KEY                                              syscall.Errno = 1303\n\tERROR_NULL_LM_PASSWORD                                                    syscall.Errno = 1304\n\tERROR_UNKNOWN_REVISION                                                    syscall.Errno = 1305\n\tERROR_REVISION_MISMATCH                                                   syscall.Errno = 1306\n\tERROR_INVALID_OWNER                                                       syscall.Errno = 1307\n\tERROR_INVALID_PRIMARY_GROUP                                               syscall.Errno = 1308\n\tERROR_NO_IMPERSONATION_TOKEN                                              syscall.Errno = 1309\n\tERROR_CANT_DISABLE_MANDATORY                                              syscall.Errno = 1310\n\tERROR_NO_LOGON_SERVERS                                                    syscall.Errno = 1311\n\tERROR_NO_SUCH_LOGON_SESSION                                               syscall.Errno = 1312\n\tERROR_NO_SUCH_PRIVILEGE                                                   syscall.Errno = 1313\n\tERROR_PRIVILEGE_NOT_HELD                                                  syscall.Errno = 1314\n\tERROR_INVALID_ACCOUNT_NAME                                                syscall.Errno = 1315\n\tERROR_USER_EXISTS                                                         syscall.Errno = 1316\n\tERROR_NO_SUCH_USER                                                        syscall.Errno = 1317\n\tERROR_GROUP_EXISTS                                                        syscall.Errno = 1318\n\tERROR_NO_SUCH_GROUP                                                       syscall.Errno = 1319\n\tERROR_MEMBER_IN_GROUP                                                     syscall.Errno = 1320\n\tERROR_MEMBER_NOT_IN_GROUP                                                 syscall.Errno = 1321\n\tERROR_LAST_ADMIN                                                          syscall.Errno = 1322\n\tERROR_WRONG_PASSWORD                                                      syscall.Errno = 1323\n\tERROR_ILL_FORMED_PASSWORD                                                 syscall.Errno = 1324\n\tERROR_PASSWORD_RESTRICTION                                                syscall.Errno = 1325\n\tERROR_LOGON_FAILURE                                                       syscall.Errno = 1326\n\tERROR_ACCOUNT_RESTRICTION                                                 syscall.Errno = 1327\n\tERROR_INVALID_LOGON_HOURS                                                 syscall.Errno = 1328\n\tERROR_INVALID_WORKSTATION                                                 syscall.Errno = 1329\n\tERROR_PASSWORD_EXPIRED                                                    syscall.Errno = 1330\n\tERROR_ACCOUNT_DISABLED                                                    syscall.Errno = 1331\n\tERROR_NONE_MAPPED                                                         syscall.Errno = 1332\n\tERROR_TOO_MANY_LUIDS_REQUESTED                                            syscall.Errno = 1333\n\tERROR_LUIDS_EXHAUSTED                                                     syscall.Errno = 1334\n\tERROR_INVALID_SUB_AUTHORITY                                               syscall.Errno = 1335\n\tERROR_INVALID_ACL                                                         syscall.Errno = 1336\n\tERROR_INVALID_SID                                                         syscall.Errno = 1337\n\tERROR_INVALID_SECURITY_DESCR                                              syscall.Errno = 1338\n\tERROR_BAD_INHERITANCE_ACL                                                 syscall.Errno = 1340\n\tERROR_SERVER_DISABLED                                                     syscall.Errno = 1341\n\tERROR_SERVER_NOT_DISABLED                                                 syscall.Errno = 1342\n\tERROR_INVALID_ID_AUTHORITY                                                syscall.Errno = 1343\n\tERROR_ALLOTTED_SPACE_EXCEEDED                                             syscall.Errno = 1344\n\tERROR_INVALID_GROUP_ATTRIBUTES                                            syscall.Errno = 1345\n\tERROR_BAD_IMPERSONATION_LEVEL                                             syscall.Errno = 1346\n\tERROR_CANT_OPEN_ANONYMOUS                                                 syscall.Errno = 1347\n\tERROR_BAD_VALIDATION_CLASS                                                syscall.Errno = 1348\n\tERROR_BAD_TOKEN_TYPE                                                      syscall.Errno = 1349\n\tERROR_NO_SECURITY_ON_OBJECT                                               syscall.Errno = 1350\n\tERROR_CANT_ACCESS_DOMAIN_INFO                                             syscall.Errno = 1351\n\tERROR_INVALID_SERVER_STATE                                                syscall.Errno = 1352\n\tERROR_INVALID_DOMAIN_STATE                                                syscall.Errno = 1353\n\tERROR_INVALID_DOMAIN_ROLE                                                 syscall.Errno = 1354\n\tERROR_NO_SUCH_DOMAIN                                                      syscall.Errno = 1355\n\tERROR_DOMAIN_EXISTS                                                       syscall.Errno = 1356\n\tERROR_DOMAIN_LIMIT_EXCEEDED                                               syscall.Errno = 1357\n\tERROR_INTERNAL_DB_CORRUPTION                                              syscall.Errno = 1358\n\tERROR_INTERNAL_ERROR                                                      syscall.Errno = 1359\n\tERROR_GENERIC_NOT_MAPPED                                                  syscall.Errno = 1360\n\tERROR_BAD_DESCRIPTOR_FORMAT                                               syscall.Errno = 1361\n\tERROR_NOT_LOGON_PROCESS                                                   syscall.Errno = 1362\n\tERROR_LOGON_SESSION_EXISTS                                                syscall.Errno = 1363\n\tERROR_NO_SUCH_PACKAGE                                                     syscall.Errno = 1364\n\tERROR_BAD_LOGON_SESSION_STATE                                             syscall.Errno = 1365\n\tERROR_LOGON_SESSION_COLLISION                                             syscall.Errno = 1366\n\tERROR_INVALID_LOGON_TYPE                                                  syscall.Errno = 1367\n\tERROR_CANNOT_IMPERSONATE                                                  syscall.Errno = 1368\n\tERROR_RXACT_INVALID_STATE                                                 syscall.Errno = 1369\n\tERROR_RXACT_COMMIT_FAILURE                                                syscall.Errno = 1370\n\tERROR_SPECIAL_ACCOUNT                                                     syscall.Errno = 1371\n\tERROR_SPECIAL_GROUP                                                       syscall.Errno = 1372\n\tERROR_SPECIAL_USER                                                        syscall.Errno = 1373\n\tERROR_MEMBERS_PRIMARY_GROUP                                               syscall.Errno = 1374\n\tERROR_TOKEN_ALREADY_IN_USE                                                syscall.Errno = 1375\n\tERROR_NO_SUCH_ALIAS                                                       syscall.Errno = 1376\n\tERROR_MEMBER_NOT_IN_ALIAS                                                 syscall.Errno = 1377\n\tERROR_MEMBER_IN_ALIAS                                                     syscall.Errno = 1378\n\tERROR_ALIAS_EXISTS                                                        syscall.Errno = 1379\n\tERROR_LOGON_NOT_GRANTED                                                   syscall.Errno = 1380\n\tERROR_TOO_MANY_SECRETS                                                    syscall.Errno = 1381\n\tERROR_SECRET_TOO_LONG                                                     syscall.Errno = 1382\n\tERROR_INTERNAL_DB_ERROR                                                   syscall.Errno = 1383\n\tERROR_TOO_MANY_CONTEXT_IDS                                                syscall.Errno = 1384\n\tERROR_LOGON_TYPE_NOT_GRANTED                                              syscall.Errno = 1385\n\tERROR_NT_CROSS_ENCRYPTION_REQUIRED                                        syscall.Errno = 1386\n\tERROR_NO_SUCH_MEMBER                                                      syscall.Errno = 1387\n\tERROR_INVALID_MEMBER                                                      syscall.Errno = 1388\n\tERROR_TOO_MANY_SIDS                                                       syscall.Errno = 1389\n\tERROR_LM_CROSS_ENCRYPTION_REQUIRED                                        syscall.Errno = 1390\n\tERROR_NO_INHERITANCE                                                      syscall.Errno = 1391\n\tERROR_FILE_CORRUPT                                                        syscall.Errno = 1392\n\tERROR_DISK_CORRUPT                                                        syscall.Errno = 1393\n\tERROR_NO_USER_SESSION_KEY                                                 syscall.Errno = 1394\n\tERROR_LICENSE_QUOTA_EXCEEDED                                              syscall.Errno = 1395\n\tERROR_WRONG_TARGET_NAME                                                   syscall.Errno = 1396\n\tERROR_MUTUAL_AUTH_FAILED                                                  syscall.Errno = 1397\n\tERROR_TIME_SKEW                                                           syscall.Errno = 1398\n\tERROR_CURRENT_DOMAIN_NOT_ALLOWED                                          syscall.Errno = 1399\n\tERROR_INVALID_WINDOW_HANDLE                                               syscall.Errno = 1400\n\tERROR_INVALID_MENU_HANDLE                                                 syscall.Errno = 1401\n\tERROR_INVALID_CURSOR_HANDLE                                               syscall.Errno = 1402\n\tERROR_INVALID_ACCEL_HANDLE                                                syscall.Errno = 1403\n\tERROR_INVALID_HOOK_HANDLE                                                 syscall.Errno = 1404\n\tERROR_INVALID_DWP_HANDLE                                                  syscall.Errno = 1405\n\tERROR_TLW_WITH_WSCHILD                                                    syscall.Errno = 1406\n\tERROR_CANNOT_FIND_WND_CLASS                                               syscall.Errno = 1407\n\tERROR_WINDOW_OF_OTHER_THREAD                                              syscall.Errno = 1408\n\tERROR_HOTKEY_ALREADY_REGISTERED                                           syscall.Errno = 1409\n\tERROR_CLASS_ALREADY_EXISTS                                                syscall.Errno = 1410\n\tERROR_CLASS_DOES_NOT_EXIST                                                syscall.Errno = 1411\n\tERROR_CLASS_HAS_WINDOWS                                                   syscall.Errno = 1412\n\tERROR_INVALID_INDEX                                                       syscall.Errno = 1413\n\tERROR_INVALID_ICON_HANDLE                                                 syscall.Errno = 1414\n\tERROR_PRIVATE_DIALOG_INDEX                                                syscall.Errno = 1415\n\tERROR_LISTBOX_ID_NOT_FOUND                                                syscall.Errno = 1416\n\tERROR_NO_WILDCARD_CHARACTERS                                              syscall.Errno = 1417\n\tERROR_CLIPBOARD_NOT_OPEN                                                  syscall.Errno = 1418\n\tERROR_HOTKEY_NOT_REGISTERED                                               syscall.Errno = 1419\n\tERROR_WINDOW_NOT_DIALOG                                                   syscall.Errno = 1420\n\tERROR_CONTROL_ID_NOT_FOUND                                                syscall.Errno = 1421\n\tERROR_INVALID_COMBOBOX_MESSAGE                                            syscall.Errno = 1422\n\tERROR_WINDOW_NOT_COMBOBOX                                                 syscall.Errno = 1423\n\tERROR_INVALID_EDIT_HEIGHT                                                 syscall.Errno = 1424\n\tERROR_DC_NOT_FOUND                                                        syscall.Errno = 1425\n\tERROR_INVALID_HOOK_FILTER                                                 syscall.Errno = 1426\n\tERROR_INVALID_FILTER_PROC                                                 syscall.Errno = 1427\n\tERROR_HOOK_NEEDS_HMOD                                                     syscall.Errno = 1428\n\tERROR_GLOBAL_ONLY_HOOK                                                    syscall.Errno = 1429\n\tERROR_JOURNAL_HOOK_SET                                                    syscall.Errno = 1430\n\tERROR_HOOK_NOT_INSTALLED                                                  syscall.Errno = 1431\n\tERROR_INVALID_LB_MESSAGE                                                  syscall.Errno = 1432\n\tERROR_SETCOUNT_ON_BAD_LB                                                  syscall.Errno = 1433\n\tERROR_LB_WITHOUT_TABSTOPS                                                 syscall.Errno = 1434\n\tERROR_DESTROY_OBJECT_OF_OTHER_THREAD                                      syscall.Errno = 1435\n\tERROR_CHILD_WINDOW_MENU                                                   syscall.Errno = 1436\n\tERROR_NO_SYSTEM_MENU                                                      syscall.Errno = 1437\n\tERROR_INVALID_MSGBOX_STYLE                                                syscall.Errno = 1438\n\tERROR_INVALID_SPI_VALUE                                                   syscall.Errno = 1439\n\tERROR_SCREEN_ALREADY_LOCKED                                               syscall.Errno = 1440\n\tERROR_HWNDS_HAVE_DIFF_PARENT                                              syscall.Errno = 1441\n\tERROR_NOT_CHILD_WINDOW                                                    syscall.Errno = 1442\n\tERROR_INVALID_GW_COMMAND                                                  syscall.Errno = 1443\n\tERROR_INVALID_THREAD_ID                                                   syscall.Errno = 1444\n\tERROR_NON_MDICHILD_WINDOW                                                 syscall.Errno = 1445\n\tERROR_POPUP_ALREADY_ACTIVE                                                syscall.Errno = 1446\n\tERROR_NO_SCROLLBARS                                                       syscall.Errno = 1447\n\tERROR_INVALID_SCROLLBAR_RANGE                                             syscall.Errno = 1448\n\tERROR_INVALID_SHOWWIN_COMMAND                                             syscall.Errno = 1449\n\tERROR_NO_SYSTEM_RESOURCES                                                 syscall.Errno = 1450\n\tERROR_NONPAGED_SYSTEM_RESOURCES                                           syscall.Errno = 1451\n\tERROR_PAGED_SYSTEM_RESOURCES                                              syscall.Errno = 1452\n\tERROR_WORKING_SET_QUOTA                                                   syscall.Errno = 1453\n\tERROR_PAGEFILE_QUOTA                                                      syscall.Errno = 1454\n\tERROR_COMMITMENT_LIMIT                                                    syscall.Errno = 1455\n\tERROR_MENU_ITEM_NOT_FOUND                                                 syscall.Errno = 1456\n\tERROR_INVALID_KEYBOARD_HANDLE                                             syscall.Errno = 1457\n\tERROR_HOOK_TYPE_NOT_ALLOWED                                               syscall.Errno = 1458\n\tERROR_REQUIRES_INTERACTIVE_WINDOWSTATION                                  syscall.Errno = 1459\n\tERROR_TIMEOUT                                                             syscall.Errno = 1460\n\tERROR_INVALID_MONITOR_HANDLE                                              syscall.Errno = 1461\n\tERROR_INCORRECT_SIZE                                                      syscall.Errno = 1462\n\tERROR_SYMLINK_CLASS_DISABLED                                              syscall.Errno = 1463\n\tERROR_SYMLINK_NOT_SUPPORTED                                               syscall.Errno = 1464\n\tERROR_XML_PARSE_ERROR                                                     syscall.Errno = 1465\n\tERROR_XMLDSIG_ERROR                                                       syscall.Errno = 1466\n\tERROR_RESTART_APPLICATION                                                 syscall.Errno = 1467\n\tERROR_WRONG_COMPARTMENT                                                   syscall.Errno = 1468\n\tERROR_AUTHIP_FAILURE                                                      syscall.Errno = 1469\n\tERROR_NO_NVRAM_RESOURCES                                                  syscall.Errno = 1470\n\tERROR_NOT_GUI_PROCESS                                                     syscall.Errno = 1471\n\tERROR_EVENTLOG_FILE_CORRUPT                                               syscall.Errno = 1500\n\tERROR_EVENTLOG_CANT_START                                                 syscall.Errno = 1501\n\tERROR_LOG_FILE_FULL                                                       syscall.Errno = 1502\n\tERROR_EVENTLOG_FILE_CHANGED                                               syscall.Errno = 1503\n\tERROR_CONTAINER_ASSIGNED                                                  syscall.Errno = 1504\n\tERROR_JOB_NO_CONTAINER                                                    syscall.Errno = 1505\n\tERROR_INVALID_TASK_NAME                                                   syscall.Errno = 1550\n\tERROR_INVALID_TASK_INDEX                                                  syscall.Errno = 1551\n\tERROR_THREAD_ALREADY_IN_TASK                                              syscall.Errno = 1552\n\tERROR_INSTALL_SERVICE_FAILURE                                             syscall.Errno = 1601\n\tERROR_INSTALL_USEREXIT                                                    syscall.Errno = 1602\n\tERROR_INSTALL_FAILURE                                                     syscall.Errno = 1603\n\tERROR_INSTALL_SUSPEND                                                     syscall.Errno = 1604\n\tERROR_UNKNOWN_PRODUCT                                                     syscall.Errno = 1605\n\tERROR_UNKNOWN_FEATURE                                                     syscall.Errno = 1606\n\tERROR_UNKNOWN_COMPONENT                                                   syscall.Errno = 1607\n\tERROR_UNKNOWN_PROPERTY                                                    syscall.Errno = 1608\n\tERROR_INVALID_HANDLE_STATE                                                syscall.Errno = 1609\n\tERROR_BAD_CONFIGURATION                                                   syscall.Errno = 1610\n\tERROR_INDEX_ABSENT                                                        syscall.Errno = 1611\n\tERROR_INSTALL_SOURCE_ABSENT                                               syscall.Errno = 1612\n\tERROR_INSTALL_PACKAGE_VERSION                                             syscall.Errno = 1613\n\tERROR_PRODUCT_UNINSTALLED                                                 syscall.Errno = 1614\n\tERROR_BAD_QUERY_SYNTAX                                                    syscall.Errno = 1615\n\tERROR_INVALID_FIELD                                                       syscall.Errno = 1616\n\tERROR_DEVICE_REMOVED                                                      syscall.Errno = 1617\n\tERROR_INSTALL_ALREADY_RUNNING                                             syscall.Errno = 1618\n\tERROR_INSTALL_PACKAGE_OPEN_FAILED                                         syscall.Errno = 1619\n\tERROR_INSTALL_PACKAGE_INVALID                                             syscall.Errno = 1620\n\tERROR_INSTALL_UI_FAILURE                                                  syscall.Errno = 1621\n\tERROR_INSTALL_LOG_FAILURE                                                 syscall.Errno = 1622\n\tERROR_INSTALL_LANGUAGE_UNSUPPORTED                                        syscall.Errno = 1623\n\tERROR_INSTALL_TRANSFORM_FAILURE                                           syscall.Errno = 1624\n\tERROR_INSTALL_PACKAGE_REJECTED                                            syscall.Errno = 1625\n\tERROR_FUNCTION_NOT_CALLED                                                 syscall.Errno = 1626\n\tERROR_FUNCTION_FAILED                                                     syscall.Errno = 1627\n\tERROR_INVALID_TABLE                                                       syscall.Errno = 1628\n\tERROR_DATATYPE_MISMATCH                                                   syscall.Errno = 1629\n\tERROR_UNSUPPORTED_TYPE                                                    syscall.Errno = 1630\n\tERROR_CREATE_FAILED                                                       syscall.Errno = 1631\n\tERROR_INSTALL_TEMP_UNWRITABLE                                             syscall.Errno = 1632\n\tERROR_INSTALL_PLATFORM_UNSUPPORTED                                        syscall.Errno = 1633\n\tERROR_INSTALL_NOTUSED                                                     syscall.Errno = 1634\n\tERROR_PATCH_PACKAGE_OPEN_FAILED                                           syscall.Errno = 1635\n\tERROR_PATCH_PACKAGE_INVALID                                               syscall.Errno = 1636\n\tERROR_PATCH_PACKAGE_UNSUPPORTED                                           syscall.Errno = 1637\n\tERROR_PRODUCT_VERSION                                                     syscall.Errno = 1638\n\tERROR_INVALID_COMMAND_LINE                                                syscall.Errno = 1639\n\tERROR_INSTALL_REMOTE_DISALLOWED                                           syscall.Errno = 1640\n\tERROR_SUCCESS_REBOOT_INITIATED                                            syscall.Errno = 1641\n\tERROR_PATCH_TARGET_NOT_FOUND                                              syscall.Errno = 1642\n\tERROR_PATCH_PACKAGE_REJECTED                                              syscall.Errno = 1643\n\tERROR_INSTALL_TRANSFORM_REJECTED                                          syscall.Errno = 1644\n\tERROR_INSTALL_REMOTE_PROHIBITED                                           syscall.Errno = 1645\n\tERROR_PATCH_REMOVAL_UNSUPPORTED                                           syscall.Errno = 1646\n\tERROR_UNKNOWN_PATCH                                                       syscall.Errno = 1647\n\tERROR_PATCH_NO_SEQUENCE                                                   syscall.Errno = 1648\n\tERROR_PATCH_REMOVAL_DISALLOWED                                            syscall.Errno = 1649\n\tERROR_INVALID_PATCH_XML                                                   syscall.Errno = 1650\n\tERROR_PATCH_MANAGED_ADVERTISED_PRODUCT                                    syscall.Errno = 1651\n\tERROR_INSTALL_SERVICE_SAFEBOOT                                            syscall.Errno = 1652\n\tERROR_FAIL_FAST_EXCEPTION                                                 syscall.Errno = 1653\n\tERROR_INSTALL_REJECTED                                                    syscall.Errno = 1654\n\tERROR_DYNAMIC_CODE_BLOCKED                                                syscall.Errno = 1655\n\tERROR_NOT_SAME_OBJECT                                                     syscall.Errno = 1656\n\tERROR_STRICT_CFG_VIOLATION                                                syscall.Errno = 1657\n\tERROR_SET_CONTEXT_DENIED                                                  syscall.Errno = 1660\n\tERROR_CROSS_PARTITION_VIOLATION                                           syscall.Errno = 1661\n\tRPC_S_INVALID_STRING_BINDING                                              syscall.Errno = 1700\n\tRPC_S_WRONG_KIND_OF_BINDING                                               syscall.Errno = 1701\n\tRPC_S_INVALID_BINDING                                                     syscall.Errno = 1702\n\tRPC_S_PROTSEQ_NOT_SUPPORTED                                               syscall.Errno = 1703\n\tRPC_S_INVALID_RPC_PROTSEQ                                                 syscall.Errno = 1704\n\tRPC_S_INVALID_STRING_UUID                                                 syscall.Errno = 1705\n\tRPC_S_INVALID_ENDPOINT_FORMAT                                             syscall.Errno = 1706\n\tRPC_S_INVALID_NET_ADDR                                                    syscall.Errno = 1707\n\tRPC_S_NO_ENDPOINT_FOUND                                                   syscall.Errno = 1708\n\tRPC_S_INVALID_TIMEOUT                                                     syscall.Errno = 1709\n\tRPC_S_OBJECT_NOT_FOUND                                                    syscall.Errno = 1710\n\tRPC_S_ALREADY_REGISTERED                                                  syscall.Errno = 1711\n\tRPC_S_TYPE_ALREADY_REGISTERED                                             syscall.Errno = 1712\n\tRPC_S_ALREADY_LISTENING                                                   syscall.Errno = 1713\n\tRPC_S_NO_PROTSEQS_REGISTERED                                              syscall.Errno = 1714\n\tRPC_S_NOT_LISTENING                                                       syscall.Errno = 1715\n\tRPC_S_UNKNOWN_MGR_TYPE                                                    syscall.Errno = 1716\n\tRPC_S_UNKNOWN_IF                                                          syscall.Errno = 1717\n\tRPC_S_NO_BINDINGS                                                         syscall.Errno = 1718\n\tRPC_S_NO_PROTSEQS                                                         syscall.Errno = 1719\n\tRPC_S_CANT_CREATE_ENDPOINT                                                syscall.Errno = 1720\n\tRPC_S_OUT_OF_RESOURCES                                                    syscall.Errno = 1721\n\tRPC_S_SERVER_UNAVAILABLE                                                  syscall.Errno = 1722\n\tRPC_S_SERVER_TOO_BUSY                                                     syscall.Errno = 1723\n\tRPC_S_INVALID_NETWORK_OPTIONS                                             syscall.Errno = 1724\n\tRPC_S_NO_CALL_ACTIVE                                                      syscall.Errno = 1725\n\tRPC_S_CALL_FAILED                                                         syscall.Errno = 1726\n\tRPC_S_CALL_FAILED_DNE                                                     syscall.Errno = 1727\n\tRPC_S_PROTOCOL_ERROR                                                      syscall.Errno = 1728\n\tRPC_S_PROXY_ACCESS_DENIED                                                 syscall.Errno = 1729\n\tRPC_S_UNSUPPORTED_TRANS_SYN                                               syscall.Errno = 1730\n\tRPC_S_UNSUPPORTED_TYPE                                                    syscall.Errno = 1732\n\tRPC_S_INVALID_TAG                                                         syscall.Errno = 1733\n\tRPC_S_INVALID_BOUND                                                       syscall.Errno = 1734\n\tRPC_S_NO_ENTRY_NAME                                                       syscall.Errno = 1735\n\tRPC_S_INVALID_NAME_SYNTAX                                                 syscall.Errno = 1736\n\tRPC_S_UNSUPPORTED_NAME_SYNTAX                                             syscall.Errno = 1737\n\tRPC_S_UUID_NO_ADDRESS                                                     syscall.Errno = 1739\n\tRPC_S_DUPLICATE_ENDPOINT                                                  syscall.Errno = 1740\n\tRPC_S_UNKNOWN_AUTHN_TYPE                                                  syscall.Errno = 1741\n\tRPC_S_MAX_CALLS_TOO_SMALL                                                 syscall.Errno = 1742\n\tRPC_S_STRING_TOO_LONG                                                     syscall.Errno = 1743\n\tRPC_S_PROTSEQ_NOT_FOUND                                                   syscall.Errno = 1744\n\tRPC_S_PROCNUM_OUT_OF_RANGE                                                syscall.Errno = 1745\n\tRPC_S_BINDING_HAS_NO_AUTH                                                 syscall.Errno = 1746\n\tRPC_S_UNKNOWN_AUTHN_SERVICE                                               syscall.Errno = 1747\n\tRPC_S_UNKNOWN_AUTHN_LEVEL                                                 syscall.Errno = 1748\n\tRPC_S_INVALID_AUTH_IDENTITY                                               syscall.Errno = 1749\n\tRPC_S_UNKNOWN_AUTHZ_SERVICE                                               syscall.Errno = 1750\n\tEPT_S_INVALID_ENTRY                                                       syscall.Errno = 1751\n\tEPT_S_CANT_PERFORM_OP                                                     syscall.Errno = 1752\n\tEPT_S_NOT_REGISTERED                                                      syscall.Errno = 1753\n\tRPC_S_NOTHING_TO_EXPORT                                                   syscall.Errno = 1754\n\tRPC_S_INCOMPLETE_NAME                                                     syscall.Errno = 1755\n\tRPC_S_INVALID_VERS_OPTION                                                 syscall.Errno = 1756\n\tRPC_S_NO_MORE_MEMBERS                                                     syscall.Errno = 1757\n\tRPC_S_NOT_ALL_OBJS_UNEXPORTED                                             syscall.Errno = 1758\n\tRPC_S_INTERFACE_NOT_FOUND                                                 syscall.Errno = 1759\n\tRPC_S_ENTRY_ALREADY_EXISTS                                                syscall.Errno = 1760\n\tRPC_S_ENTRY_NOT_FOUND                                                     syscall.Errno = 1761\n\tRPC_S_NAME_SERVICE_UNAVAILABLE                                            syscall.Errno = 1762\n\tRPC_S_INVALID_NAF_ID                                                      syscall.Errno = 1763\n\tRPC_S_CANNOT_SUPPORT                                                      syscall.Errno = 1764\n\tRPC_S_NO_CONTEXT_AVAILABLE                                                syscall.Errno = 1765\n\tRPC_S_INTERNAL_ERROR                                                      syscall.Errno = 1766\n\tRPC_S_ZERO_DIVIDE                                                         syscall.Errno = 1767\n\tRPC_S_ADDRESS_ERROR                                                       syscall.Errno = 1768\n\tRPC_S_FP_DIV_ZERO                                                         syscall.Errno = 1769\n\tRPC_S_FP_UNDERFLOW                                                        syscall.Errno = 1770\n\tRPC_S_FP_OVERFLOW                                                         syscall.Errno = 1771\n\tRPC_X_NO_MORE_ENTRIES                                                     syscall.Errno = 1772\n\tRPC_X_SS_CHAR_TRANS_OPEN_FAIL                                             syscall.Errno = 1773\n\tRPC_X_SS_CHAR_TRANS_SHORT_FILE                                            syscall.Errno = 1774\n\tRPC_X_SS_IN_NULL_CONTEXT                                                  syscall.Errno = 1775\n\tRPC_X_SS_CONTEXT_DAMAGED                                                  syscall.Errno = 1777\n\tRPC_X_SS_HANDLES_MISMATCH                                                 syscall.Errno = 1778\n\tRPC_X_SS_CANNOT_GET_CALL_HANDLE                                           syscall.Errno = 1779\n\tRPC_X_NULL_REF_POINTER                                                    syscall.Errno = 1780\n\tRPC_X_ENUM_VALUE_OUT_OF_RANGE                                             syscall.Errno = 1781\n\tRPC_X_BYTE_COUNT_TOO_SMALL                                                syscall.Errno = 1782\n\tRPC_X_BAD_STUB_DATA                                                       syscall.Errno = 1783\n\tERROR_INVALID_USER_BUFFER                                                 syscall.Errno = 1784\n\tERROR_UNRECOGNIZED_MEDIA                                                  syscall.Errno = 1785\n\tERROR_NO_TRUST_LSA_SECRET                                                 syscall.Errno = 1786\n\tERROR_NO_TRUST_SAM_ACCOUNT                                                syscall.Errno = 1787\n\tERROR_TRUSTED_DOMAIN_FAILURE                                              syscall.Errno = 1788\n\tERROR_TRUSTED_RELATIONSHIP_FAILURE                                        syscall.Errno = 1789\n\tERROR_TRUST_FAILURE                                                       syscall.Errno = 1790\n\tRPC_S_CALL_IN_PROGRESS                                                    syscall.Errno = 1791\n\tERROR_NETLOGON_NOT_STARTED                                                syscall.Errno = 1792\n\tERROR_ACCOUNT_EXPIRED                                                     syscall.Errno = 1793\n\tERROR_REDIRECTOR_HAS_OPEN_HANDLES                                         syscall.Errno = 1794\n\tERROR_PRINTER_DRIVER_ALREADY_INSTALLED                                    syscall.Errno = 1795\n\tERROR_UNKNOWN_PORT                                                        syscall.Errno = 1796\n\tERROR_UNKNOWN_PRINTER_DRIVER                                              syscall.Errno = 1797\n\tERROR_UNKNOWN_PRINTPROCESSOR                                              syscall.Errno = 1798\n\tERROR_INVALID_SEPARATOR_FILE                                              syscall.Errno = 1799\n\tERROR_INVALID_PRIORITY                                                    syscall.Errno = 1800\n\tERROR_INVALID_PRINTER_NAME                                                syscall.Errno = 1801\n\tERROR_PRINTER_ALREADY_EXISTS                                              syscall.Errno = 1802\n\tERROR_INVALID_PRINTER_COMMAND                                             syscall.Errno = 1803\n\tERROR_INVALID_DATATYPE                                                    syscall.Errno = 1804\n\tERROR_INVALID_ENVIRONMENT                                                 syscall.Errno = 1805\n\tRPC_S_NO_MORE_BINDINGS                                                    syscall.Errno = 1806\n\tERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT                                   syscall.Errno = 1807\n\tERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT                                   syscall.Errno = 1808\n\tERROR_NOLOGON_SERVER_TRUST_ACCOUNT                                        syscall.Errno = 1809\n\tERROR_DOMAIN_TRUST_INCONSISTENT                                           syscall.Errno = 1810\n\tERROR_SERVER_HAS_OPEN_HANDLES                                             syscall.Errno = 1811\n\tERROR_RESOURCE_DATA_NOT_FOUND                                             syscall.Errno = 1812\n\tERROR_RESOURCE_TYPE_NOT_FOUND                                             syscall.Errno = 1813\n\tERROR_RESOURCE_NAME_NOT_FOUND                                             syscall.Errno = 1814\n\tERROR_RESOURCE_LANG_NOT_FOUND                                             syscall.Errno = 1815\n\tERROR_NOT_ENOUGH_QUOTA                                                    syscall.Errno = 1816\n\tRPC_S_NO_INTERFACES                                                       syscall.Errno = 1817\n\tRPC_S_CALL_CANCELLED                                                      syscall.Errno = 1818\n\tRPC_S_BINDING_INCOMPLETE                                                  syscall.Errno = 1819\n\tRPC_S_COMM_FAILURE                                                        syscall.Errno = 1820\n\tRPC_S_UNSUPPORTED_AUTHN_LEVEL                                             syscall.Errno = 1821\n\tRPC_S_NO_PRINC_NAME                                                       syscall.Errno = 1822\n\tRPC_S_NOT_RPC_ERROR                                                       syscall.Errno = 1823\n\tRPC_S_UUID_LOCAL_ONLY                                                     syscall.Errno = 1824\n\tRPC_S_SEC_PKG_ERROR                                                       syscall.Errno = 1825\n\tRPC_S_NOT_CANCELLED                                                       syscall.Errno = 1826\n\tRPC_X_INVALID_ES_ACTION                                                   syscall.Errno = 1827\n\tRPC_X_WRONG_ES_VERSION                                                    syscall.Errno = 1828\n\tRPC_X_WRONG_STUB_VERSION                                                  syscall.Errno = 1829\n\tRPC_X_INVALID_PIPE_OBJECT                                                 syscall.Errno = 1830\n\tRPC_X_WRONG_PIPE_ORDER                                                    syscall.Errno = 1831\n\tRPC_X_WRONG_PIPE_VERSION                                                  syscall.Errno = 1832\n\tRPC_S_COOKIE_AUTH_FAILED                                                  syscall.Errno = 1833\n\tRPC_S_DO_NOT_DISTURB                                                      syscall.Errno = 1834\n\tRPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED                                        syscall.Errno = 1835\n\tRPC_S_SYSTEM_HANDLE_TYPE_MISMATCH                                         syscall.Errno = 1836\n\tRPC_S_GROUP_MEMBER_NOT_FOUND                                              syscall.Errno = 1898\n\tEPT_S_CANT_CREATE                                                         syscall.Errno = 1899\n\tRPC_S_INVALID_OBJECT                                                      syscall.Errno = 1900\n\tERROR_INVALID_TIME                                                        syscall.Errno = 1901\n\tERROR_INVALID_FORM_NAME                                                   syscall.Errno = 1902\n\tERROR_INVALID_FORM_SIZE                                                   syscall.Errno = 1903\n\tERROR_ALREADY_WAITING                                                     syscall.Errno = 1904\n\tERROR_PRINTER_DELETED                                                     syscall.Errno = 1905\n\tERROR_INVALID_PRINTER_STATE                                               syscall.Errno = 1906\n\tERROR_PASSWORD_MUST_CHANGE                                                syscall.Errno = 1907\n\tERROR_DOMAIN_CONTROLLER_NOT_FOUND                                         syscall.Errno = 1908\n\tERROR_ACCOUNT_LOCKED_OUT                                                  syscall.Errno = 1909\n\tOR_INVALID_OXID                                                           syscall.Errno = 1910\n\tOR_INVALID_OID                                                            syscall.Errno = 1911\n\tOR_INVALID_SET                                                            syscall.Errno = 1912\n\tRPC_S_SEND_INCOMPLETE                                                     syscall.Errno = 1913\n\tRPC_S_INVALID_ASYNC_HANDLE                                                syscall.Errno = 1914\n\tRPC_S_INVALID_ASYNC_CALL                                                  syscall.Errno = 1915\n\tRPC_X_PIPE_CLOSED                                                         syscall.Errno = 1916\n\tRPC_X_PIPE_DISCIPLINE_ERROR                                               syscall.Errno = 1917\n\tRPC_X_PIPE_EMPTY                                                          syscall.Errno = 1918\n\tERROR_NO_SITENAME                                                         syscall.Errno = 1919\n\tERROR_CANT_ACCESS_FILE                                                    syscall.Errno = 1920\n\tERROR_CANT_RESOLVE_FILENAME                                               syscall.Errno = 1921\n\tRPC_S_ENTRY_TYPE_MISMATCH                                                 syscall.Errno = 1922\n\tRPC_S_NOT_ALL_OBJS_EXPORTED                                               syscall.Errno = 1923\n\tRPC_S_INTERFACE_NOT_EXPORTED                                              syscall.Errno = 1924\n\tRPC_S_PROFILE_NOT_ADDED                                                   syscall.Errno = 1925\n\tRPC_S_PRF_ELT_NOT_ADDED                                                   syscall.Errno = 1926\n\tRPC_S_PRF_ELT_NOT_REMOVED                                                 syscall.Errno = 1927\n\tRPC_S_GRP_ELT_NOT_ADDED                                                   syscall.Errno = 1928\n\tRPC_S_GRP_ELT_NOT_REMOVED                                                 syscall.Errno = 1929\n\tERROR_KM_DRIVER_BLOCKED                                                   syscall.Errno = 1930\n\tERROR_CONTEXT_EXPIRED                                                     syscall.Errno = 1931\n\tERROR_PER_USER_TRUST_QUOTA_EXCEEDED                                       syscall.Errno = 1932\n\tERROR_ALL_USER_TRUST_QUOTA_EXCEEDED                                       syscall.Errno = 1933\n\tERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED                                    syscall.Errno = 1934\n\tERROR_AUTHENTICATION_FIREWALL_FAILED                                      syscall.Errno = 1935\n\tERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED                                    syscall.Errno = 1936\n\tERROR_NTLM_BLOCKED                                                        syscall.Errno = 1937\n\tERROR_PASSWORD_CHANGE_REQUIRED                                            syscall.Errno = 1938\n\tERROR_LOST_MODE_LOGON_RESTRICTION                                         syscall.Errno = 1939\n\tERROR_INVALID_PIXEL_FORMAT                                                syscall.Errno = 2000\n\tERROR_BAD_DRIVER                                                          syscall.Errno = 2001\n\tERROR_INVALID_WINDOW_STYLE                                                syscall.Errno = 2002\n\tERROR_METAFILE_NOT_SUPPORTED                                              syscall.Errno = 2003\n\tERROR_TRANSFORM_NOT_SUPPORTED                                             syscall.Errno = 2004\n\tERROR_CLIPPING_NOT_SUPPORTED                                              syscall.Errno = 2005\n\tERROR_INVALID_CMM                                                         syscall.Errno = 2010\n\tERROR_INVALID_PROFILE                                                     syscall.Errno = 2011\n\tERROR_TAG_NOT_FOUND                                                       syscall.Errno = 2012\n\tERROR_TAG_NOT_PRESENT                                                     syscall.Errno = 2013\n\tERROR_DUPLICATE_TAG                                                       syscall.Errno = 2014\n\tERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE                                  syscall.Errno = 2015\n\tERROR_PROFILE_NOT_FOUND                                                   syscall.Errno = 2016\n\tERROR_INVALID_COLORSPACE                                                  syscall.Errno = 2017\n\tERROR_ICM_NOT_ENABLED                                                     syscall.Errno = 2018\n\tERROR_DELETING_ICM_XFORM                                                  syscall.Errno = 2019\n\tERROR_INVALID_TRANSFORM                                                   syscall.Errno = 2020\n\tERROR_COLORSPACE_MISMATCH                                                 syscall.Errno = 2021\n\tERROR_INVALID_COLORINDEX                                                  syscall.Errno = 2022\n\tERROR_PROFILE_DOES_NOT_MATCH_DEVICE                                       syscall.Errno = 2023\n\tERROR_CONNECTED_OTHER_PASSWORD                                            syscall.Errno = 2108\n\tERROR_CONNECTED_OTHER_PASSWORD_DEFAULT                                    syscall.Errno = 2109\n\tERROR_BAD_USERNAME                                                        syscall.Errno = 2202\n\tERROR_NOT_CONNECTED                                                       syscall.Errno = 2250\n\tERROR_OPEN_FILES                                                          syscall.Errno = 2401\n\tERROR_ACTIVE_CONNECTIONS                                                  syscall.Errno = 2402\n\tERROR_DEVICE_IN_USE                                                       syscall.Errno = 2404\n\tERROR_UNKNOWN_PRINT_MONITOR                                               syscall.Errno = 3000\n\tERROR_PRINTER_DRIVER_IN_USE                                               syscall.Errno = 3001\n\tERROR_SPOOL_FILE_NOT_FOUND                                                syscall.Errno = 3002\n\tERROR_SPL_NO_STARTDOC                                                     syscall.Errno = 3003\n\tERROR_SPL_NO_ADDJOB                                                       syscall.Errno = 3004\n\tERROR_PRINT_PROCESSOR_ALREADY_INSTALLED                                   syscall.Errno = 3005\n\tERROR_PRINT_MONITOR_ALREADY_INSTALLED                                     syscall.Errno = 3006\n\tERROR_INVALID_PRINT_MONITOR                                               syscall.Errno = 3007\n\tERROR_PRINT_MONITOR_IN_USE                                                syscall.Errno = 3008\n\tERROR_PRINTER_HAS_JOBS_QUEUED                                             syscall.Errno = 3009\n\tERROR_SUCCESS_REBOOT_REQUIRED                                             syscall.Errno = 3010\n\tERROR_SUCCESS_RESTART_REQUIRED                                            syscall.Errno = 3011\n\tERROR_PRINTER_NOT_FOUND                                                   syscall.Errno = 3012\n\tERROR_PRINTER_DRIVER_WARNED                                               syscall.Errno = 3013\n\tERROR_PRINTER_DRIVER_BLOCKED                                              syscall.Errno = 3014\n\tERROR_PRINTER_DRIVER_PACKAGE_IN_USE                                       syscall.Errno = 3015\n\tERROR_CORE_DRIVER_PACKAGE_NOT_FOUND                                       syscall.Errno = 3016\n\tERROR_FAIL_REBOOT_REQUIRED                                                syscall.Errno = 3017\n\tERROR_FAIL_REBOOT_INITIATED                                               syscall.Errno = 3018\n\tERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED                                      syscall.Errno = 3019\n\tERROR_PRINT_JOB_RESTART_REQUIRED                                          syscall.Errno = 3020\n\tERROR_INVALID_PRINTER_DRIVER_MANIFEST                                     syscall.Errno = 3021\n\tERROR_PRINTER_NOT_SHAREABLE                                               syscall.Errno = 3022\n\tERROR_REQUEST_PAUSED                                                      syscall.Errno = 3050\n\tERROR_APPEXEC_CONDITION_NOT_SATISFIED                                     syscall.Errno = 3060\n\tERROR_APPEXEC_HANDLE_INVALIDATED                                          syscall.Errno = 3061\n\tERROR_APPEXEC_INVALID_HOST_GENERATION                                     syscall.Errno = 3062\n\tERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION                             syscall.Errno = 3063\n\tERROR_APPEXEC_INVALID_HOST_STATE                                          syscall.Errno = 3064\n\tERROR_APPEXEC_NO_DONOR                                                    syscall.Errno = 3065\n\tERROR_APPEXEC_HOST_ID_MISMATCH                                            syscall.Errno = 3066\n\tERROR_APPEXEC_UNKNOWN_USER                                                syscall.Errno = 3067\n\tERROR_IO_REISSUE_AS_CACHED                                                syscall.Errno = 3950\n\tERROR_WINS_INTERNAL                                                       syscall.Errno = 4000\n\tERROR_CAN_NOT_DEL_LOCAL_WINS                                              syscall.Errno = 4001\n\tERROR_STATIC_INIT                                                         syscall.Errno = 4002\n\tERROR_INC_BACKUP                                                          syscall.Errno = 4003\n\tERROR_FULL_BACKUP                                                         syscall.Errno = 4004\n\tERROR_REC_NON_EXISTENT                                                    syscall.Errno = 4005\n\tERROR_RPL_NOT_ALLOWED                                                     syscall.Errno = 4006\n\tPEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED                            syscall.Errno = 4050\n\tPEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO                                   syscall.Errno = 4051\n\tPEERDIST_ERROR_MISSING_DATA                                               syscall.Errno = 4052\n\tPEERDIST_ERROR_NO_MORE                                                    syscall.Errno = 4053\n\tPEERDIST_ERROR_NOT_INITIALIZED                                            syscall.Errno = 4054\n\tPEERDIST_ERROR_ALREADY_INITIALIZED                                        syscall.Errno = 4055\n\tPEERDIST_ERROR_SHUTDOWN_IN_PROGRESS                                       syscall.Errno = 4056\n\tPEERDIST_ERROR_INVALIDATED                                                syscall.Errno = 4057\n\tPEERDIST_ERROR_ALREADY_EXISTS                                             syscall.Errno = 4058\n\tPEERDIST_ERROR_OPERATION_NOTFOUND                                         syscall.Errno = 4059\n\tPEERDIST_ERROR_ALREADY_COMPLETED                                          syscall.Errno = 4060\n\tPEERDIST_ERROR_OUT_OF_BOUNDS                                              syscall.Errno = 4061\n\tPEERDIST_ERROR_VERSION_UNSUPPORTED                                        syscall.Errno = 4062\n\tPEERDIST_ERROR_INVALID_CONFIGURATION                                      syscall.Errno = 4063\n\tPEERDIST_ERROR_NOT_LICENSED                                               syscall.Errno = 4064\n\tPEERDIST_ERROR_SERVICE_UNAVAILABLE                                        syscall.Errno = 4065\n\tPEERDIST_ERROR_TRUST_FAILURE                                              syscall.Errno = 4066\n\tERROR_DHCP_ADDRESS_CONFLICT                                               syscall.Errno = 4100\n\tERROR_WMI_GUID_NOT_FOUND                                                  syscall.Errno = 4200\n\tERROR_WMI_INSTANCE_NOT_FOUND                                              syscall.Errno = 4201\n\tERROR_WMI_ITEMID_NOT_FOUND                                                syscall.Errno = 4202\n\tERROR_WMI_TRY_AGAIN                                                       syscall.Errno = 4203\n\tERROR_WMI_DP_NOT_FOUND                                                    syscall.Errno = 4204\n\tERROR_WMI_UNRESOLVED_INSTANCE_REF                                         syscall.Errno = 4205\n\tERROR_WMI_ALREADY_ENABLED                                                 syscall.Errno = 4206\n\tERROR_WMI_GUID_DISCONNECTED                                               syscall.Errno = 4207\n\tERROR_WMI_SERVER_UNAVAILABLE                                              syscall.Errno = 4208\n\tERROR_WMI_DP_FAILED                                                       syscall.Errno = 4209\n\tERROR_WMI_INVALID_MOF                                                     syscall.Errno = 4210\n\tERROR_WMI_INVALID_REGINFO                                                 syscall.Errno = 4211\n\tERROR_WMI_ALREADY_DISABLED                                                syscall.Errno = 4212\n\tERROR_WMI_READ_ONLY                                                       syscall.Errno = 4213\n\tERROR_WMI_SET_FAILURE                                                     syscall.Errno = 4214\n\tERROR_NOT_APPCONTAINER                                                    syscall.Errno = 4250\n\tERROR_APPCONTAINER_REQUIRED                                               syscall.Errno = 4251\n\tERROR_NOT_SUPPORTED_IN_APPCONTAINER                                       syscall.Errno = 4252\n\tERROR_INVALID_PACKAGE_SID_LENGTH                                          syscall.Errno = 4253\n\tERROR_INVALID_MEDIA                                                       syscall.Errno = 4300\n\tERROR_INVALID_LIBRARY                                                     syscall.Errno = 4301\n\tERROR_INVALID_MEDIA_POOL                                                  syscall.Errno = 4302\n\tERROR_DRIVE_MEDIA_MISMATCH                                                syscall.Errno = 4303\n\tERROR_MEDIA_OFFLINE                                                       syscall.Errno = 4304\n\tERROR_LIBRARY_OFFLINE                                                     syscall.Errno = 4305\n\tERROR_EMPTY                                                               syscall.Errno = 4306\n\tERROR_NOT_EMPTY                                                           syscall.Errno = 4307\n\tERROR_MEDIA_UNAVAILABLE                                                   syscall.Errno = 4308\n\tERROR_RESOURCE_DISABLED                                                   syscall.Errno = 4309\n\tERROR_INVALID_CLEANER                                                     syscall.Errno = 4310\n\tERROR_UNABLE_TO_CLEAN                                                     syscall.Errno = 4311\n\tERROR_OBJECT_NOT_FOUND                                                    syscall.Errno = 4312\n\tERROR_DATABASE_FAILURE                                                    syscall.Errno = 4313\n\tERROR_DATABASE_FULL                                                       syscall.Errno = 4314\n\tERROR_MEDIA_INCOMPATIBLE                                                  syscall.Errno = 4315\n\tERROR_RESOURCE_NOT_PRESENT                                                syscall.Errno = 4316\n\tERROR_INVALID_OPERATION                                                   syscall.Errno = 4317\n\tERROR_MEDIA_NOT_AVAILABLE                                                 syscall.Errno = 4318\n\tERROR_DEVICE_NOT_AVAILABLE                                                syscall.Errno = 4319\n\tERROR_REQUEST_REFUSED                                                     syscall.Errno = 4320\n\tERROR_INVALID_DRIVE_OBJECT                                                syscall.Errno = 4321\n\tERROR_LIBRARY_FULL                                                        syscall.Errno = 4322\n\tERROR_MEDIUM_NOT_ACCESSIBLE                                               syscall.Errno = 4323\n\tERROR_UNABLE_TO_LOAD_MEDIUM                                               syscall.Errno = 4324\n\tERROR_UNABLE_TO_INVENTORY_DRIVE                                           syscall.Errno = 4325\n\tERROR_UNABLE_TO_INVENTORY_SLOT                                            syscall.Errno = 4326\n\tERROR_UNABLE_TO_INVENTORY_TRANSPORT                                       syscall.Errno = 4327\n\tERROR_TRANSPORT_FULL                                                      syscall.Errno = 4328\n\tERROR_CONTROLLING_IEPORT                                                  syscall.Errno = 4329\n\tERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA                                       syscall.Errno = 4330\n\tERROR_CLEANER_SLOT_SET                                                    syscall.Errno = 4331\n\tERROR_CLEANER_SLOT_NOT_SET                                                syscall.Errno = 4332\n\tERROR_CLEANER_CARTRIDGE_SPENT                                             syscall.Errno = 4333\n\tERROR_UNEXPECTED_OMID                                                     syscall.Errno = 4334\n\tERROR_CANT_DELETE_LAST_ITEM                                               syscall.Errno = 4335\n\tERROR_MESSAGE_EXCEEDS_MAX_SIZE                                            syscall.Errno = 4336\n\tERROR_VOLUME_CONTAINS_SYS_FILES                                           syscall.Errno = 4337\n\tERROR_INDIGENOUS_TYPE                                                     syscall.Errno = 4338\n\tERROR_NO_SUPPORTING_DRIVES                                                syscall.Errno = 4339\n\tERROR_CLEANER_CARTRIDGE_INSTALLED                                         syscall.Errno = 4340\n\tERROR_IEPORT_FULL                                                         syscall.Errno = 4341\n\tERROR_FILE_OFFLINE                                                        syscall.Errno = 4350\n\tERROR_REMOTE_STORAGE_NOT_ACTIVE                                           syscall.Errno = 4351\n\tERROR_REMOTE_STORAGE_MEDIA_ERROR                                          syscall.Errno = 4352\n\tERROR_NOT_A_REPARSE_POINT                                                 syscall.Errno = 4390\n\tERROR_REPARSE_ATTRIBUTE_CONFLICT                                          syscall.Errno = 4391\n\tERROR_INVALID_REPARSE_DATA                                                syscall.Errno = 4392\n\tERROR_REPARSE_TAG_INVALID                                                 syscall.Errno = 4393\n\tERROR_REPARSE_TAG_MISMATCH                                                syscall.Errno = 4394\n\tERROR_REPARSE_POINT_ENCOUNTERED                                           syscall.Errno = 4395\n\tERROR_APP_DATA_NOT_FOUND                                                  syscall.Errno = 4400\n\tERROR_APP_DATA_EXPIRED                                                    syscall.Errno = 4401\n\tERROR_APP_DATA_CORRUPT                                                    syscall.Errno = 4402\n\tERROR_APP_DATA_LIMIT_EXCEEDED                                             syscall.Errno = 4403\n\tERROR_APP_DATA_REBOOT_REQUIRED                                            syscall.Errno = 4404\n\tERROR_SECUREBOOT_ROLLBACK_DETECTED                                        syscall.Errno = 4420\n\tERROR_SECUREBOOT_POLICY_VIOLATION                                         syscall.Errno = 4421\n\tERROR_SECUREBOOT_INVALID_POLICY                                           syscall.Errno = 4422\n\tERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND                               syscall.Errno = 4423\n\tERROR_SECUREBOOT_POLICY_NOT_SIGNED                                        syscall.Errno = 4424\n\tERROR_SECUREBOOT_NOT_ENABLED                                              syscall.Errno = 4425\n\tERROR_SECUREBOOT_FILE_REPLACED                                            syscall.Errno = 4426\n\tERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED                                    syscall.Errno = 4427\n\tERROR_SECUREBOOT_POLICY_UNKNOWN                                           syscall.Errno = 4428\n\tERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION                       syscall.Errno = 4429\n\tERROR_SECUREBOOT_PLATFORM_ID_MISMATCH                                     syscall.Errno = 4430\n\tERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED                                 syscall.Errno = 4431\n\tERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH                                  syscall.Errno = 4432\n\tERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING                             syscall.Errno = 4433\n\tERROR_SECUREBOOT_NOT_BASE_POLICY                                          syscall.Errno = 4434\n\tERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY                                  syscall.Errno = 4435\n\tERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED                                      syscall.Errno = 4440\n\tERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED                                     syscall.Errno = 4441\n\tERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED                                     syscall.Errno = 4442\n\tERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED                                    syscall.Errno = 4443\n\tERROR_ALREADY_HAS_STREAM_ID                                               syscall.Errno = 4444\n\tERROR_SMR_GARBAGE_COLLECTION_REQUIRED                                     syscall.Errno = 4445\n\tERROR_WOF_WIM_HEADER_CORRUPT                                              syscall.Errno = 4446\n\tERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT                                      syscall.Errno = 4447\n\tERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT                                     syscall.Errno = 4448\n\tERROR_VOLUME_NOT_SIS_ENABLED                                              syscall.Errno = 4500\n\tERROR_SYSTEM_INTEGRITY_ROLLBACK_DETECTED                                  syscall.Errno = 4550\n\tERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION                                   syscall.Errno = 4551\n\tERROR_SYSTEM_INTEGRITY_INVALID_POLICY                                     syscall.Errno = 4552\n\tERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED                                  syscall.Errno = 4553\n\tERROR_SYSTEM_INTEGRITY_TOO_MANY_POLICIES                                  syscall.Errno = 4554\n\tERROR_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED                 syscall.Errno = 4555\n\tERROR_VSM_NOT_INITIALIZED                                                 syscall.Errno = 4560\n\tERROR_VSM_DMA_PROTECTION_NOT_IN_USE                                       syscall.Errno = 4561\n\tERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED                                    syscall.Errno = 4570\n\tERROR_PLATFORM_MANIFEST_INVALID                                           syscall.Errno = 4571\n\tERROR_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED                               syscall.Errno = 4572\n\tERROR_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED                            syscall.Errno = 4573\n\tERROR_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND                               syscall.Errno = 4574\n\tERROR_PLATFORM_MANIFEST_NOT_ACTIVE                                        syscall.Errno = 4575\n\tERROR_PLATFORM_MANIFEST_NOT_SIGNED                                        syscall.Errno = 4576\n\tERROR_DEPENDENT_RESOURCE_EXISTS                                           syscall.Errno = 5001\n\tERROR_DEPENDENCY_NOT_FOUND                                                syscall.Errno = 5002\n\tERROR_DEPENDENCY_ALREADY_EXISTS                                           syscall.Errno = 5003\n\tERROR_RESOURCE_NOT_ONLINE                                                 syscall.Errno = 5004\n\tERROR_HOST_NODE_NOT_AVAILABLE                                             syscall.Errno = 5005\n\tERROR_RESOURCE_NOT_AVAILABLE                                              syscall.Errno = 5006\n\tERROR_RESOURCE_NOT_FOUND                                                  syscall.Errno = 5007\n\tERROR_SHUTDOWN_CLUSTER                                                    syscall.Errno = 5008\n\tERROR_CANT_EVICT_ACTIVE_NODE                                              syscall.Errno = 5009\n\tERROR_OBJECT_ALREADY_EXISTS                                               syscall.Errno = 5010\n\tERROR_OBJECT_IN_LIST                                                      syscall.Errno = 5011\n\tERROR_GROUP_NOT_AVAILABLE                                                 syscall.Errno = 5012\n\tERROR_GROUP_NOT_FOUND                                                     syscall.Errno = 5013\n\tERROR_GROUP_NOT_ONLINE                                                    syscall.Errno = 5014\n\tERROR_HOST_NODE_NOT_RESOURCE_OWNER                                        syscall.Errno = 5015\n\tERROR_HOST_NODE_NOT_GROUP_OWNER                                           syscall.Errno = 5016\n\tERROR_RESMON_CREATE_FAILED                                                syscall.Errno = 5017\n\tERROR_RESMON_ONLINE_FAILED                                                syscall.Errno = 5018\n\tERROR_RESOURCE_ONLINE                                                     syscall.Errno = 5019\n\tERROR_QUORUM_RESOURCE                                                     syscall.Errno = 5020\n\tERROR_NOT_QUORUM_CAPABLE                                                  syscall.Errno = 5021\n\tERROR_CLUSTER_SHUTTING_DOWN                                               syscall.Errno = 5022\n\tERROR_INVALID_STATE                                                       syscall.Errno = 5023\n\tERROR_RESOURCE_PROPERTIES_STORED                                          syscall.Errno = 5024\n\tERROR_NOT_QUORUM_CLASS                                                    syscall.Errno = 5025\n\tERROR_CORE_RESOURCE                                                       syscall.Errno = 5026\n\tERROR_QUORUM_RESOURCE_ONLINE_FAILED                                       syscall.Errno = 5027\n\tERROR_QUORUMLOG_OPEN_FAILED                                               syscall.Errno = 5028\n\tERROR_CLUSTERLOG_CORRUPT                                                  syscall.Errno = 5029\n\tERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE                                   syscall.Errno = 5030\n\tERROR_CLUSTERLOG_EXCEEDS_MAXSIZE                                          syscall.Errno = 5031\n\tERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND                                       syscall.Errno = 5032\n\tERROR_CLUSTERLOG_NOT_ENOUGH_SPACE                                         syscall.Errno = 5033\n\tERROR_QUORUM_OWNER_ALIVE                                                  syscall.Errno = 5034\n\tERROR_NETWORK_NOT_AVAILABLE                                               syscall.Errno = 5035\n\tERROR_NODE_NOT_AVAILABLE                                                  syscall.Errno = 5036\n\tERROR_ALL_NODES_NOT_AVAILABLE                                             syscall.Errno = 5037\n\tERROR_RESOURCE_FAILED                                                     syscall.Errno = 5038\n\tERROR_CLUSTER_INVALID_NODE                                                syscall.Errno = 5039\n\tERROR_CLUSTER_NODE_EXISTS                                                 syscall.Errno = 5040\n\tERROR_CLUSTER_JOIN_IN_PROGRESS                                            syscall.Errno = 5041\n\tERROR_CLUSTER_NODE_NOT_FOUND                                              syscall.Errno = 5042\n\tERROR_CLUSTER_LOCAL_NODE_NOT_FOUND                                        syscall.Errno = 5043\n\tERROR_CLUSTER_NETWORK_EXISTS                                              syscall.Errno = 5044\n\tERROR_CLUSTER_NETWORK_NOT_FOUND                                           syscall.Errno = 5045\n\tERROR_CLUSTER_NETINTERFACE_EXISTS                                         syscall.Errno = 5046\n\tERROR_CLUSTER_NETINTERFACE_NOT_FOUND                                      syscall.Errno = 5047\n\tERROR_CLUSTER_INVALID_REQUEST                                             syscall.Errno = 5048\n\tERROR_CLUSTER_INVALID_NETWORK_PROVIDER                                    syscall.Errno = 5049\n\tERROR_CLUSTER_NODE_DOWN                                                   syscall.Errno = 5050\n\tERROR_CLUSTER_NODE_UNREACHABLE                                            syscall.Errno = 5051\n\tERROR_CLUSTER_NODE_NOT_MEMBER                                             syscall.Errno = 5052\n\tERROR_CLUSTER_JOIN_NOT_IN_PROGRESS                                        syscall.Errno = 5053\n\tERROR_CLUSTER_INVALID_NETWORK                                             syscall.Errno = 5054\n\tERROR_CLUSTER_NODE_UP                                                     syscall.Errno = 5056\n\tERROR_CLUSTER_IPADDR_IN_USE                                               syscall.Errno = 5057\n\tERROR_CLUSTER_NODE_NOT_PAUSED                                             syscall.Errno = 5058\n\tERROR_CLUSTER_NO_SECURITY_CONTEXT                                         syscall.Errno = 5059\n\tERROR_CLUSTER_NETWORK_NOT_INTERNAL                                        syscall.Errno = 5060\n\tERROR_CLUSTER_NODE_ALREADY_UP                                             syscall.Errno = 5061\n\tERROR_CLUSTER_NODE_ALREADY_DOWN                                           syscall.Errno = 5062\n\tERROR_CLUSTER_NETWORK_ALREADY_ONLINE                                      syscall.Errno = 5063\n\tERROR_CLUSTER_NETWORK_ALREADY_OFFLINE                                     syscall.Errno = 5064\n\tERROR_CLUSTER_NODE_ALREADY_MEMBER                                         syscall.Errno = 5065\n\tERROR_CLUSTER_LAST_INTERNAL_NETWORK                                       syscall.Errno = 5066\n\tERROR_CLUSTER_NETWORK_HAS_DEPENDENTS                                      syscall.Errno = 5067\n\tERROR_INVALID_OPERATION_ON_QUORUM                                         syscall.Errno = 5068\n\tERROR_DEPENDENCY_NOT_ALLOWED                                              syscall.Errno = 5069\n\tERROR_CLUSTER_NODE_PAUSED                                                 syscall.Errno = 5070\n\tERROR_NODE_CANT_HOST_RESOURCE                                             syscall.Errno = 5071\n\tERROR_CLUSTER_NODE_NOT_READY                                              syscall.Errno = 5072\n\tERROR_CLUSTER_NODE_SHUTTING_DOWN                                          syscall.Errno = 5073\n\tERROR_CLUSTER_JOIN_ABORTED                                                syscall.Errno = 5074\n\tERROR_CLUSTER_INCOMPATIBLE_VERSIONS                                       syscall.Errno = 5075\n\tERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED                                syscall.Errno = 5076\n\tERROR_CLUSTER_SYSTEM_CONFIG_CHANGED                                       syscall.Errno = 5077\n\tERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND                                     syscall.Errno = 5078\n\tERROR_CLUSTER_RESTYPE_NOT_SUPPORTED                                       syscall.Errno = 5079\n\tERROR_CLUSTER_RESNAME_NOT_FOUND                                           syscall.Errno = 5080\n\tERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED                                  syscall.Errno = 5081\n\tERROR_CLUSTER_OWNER_NOT_IN_PREFLIST                                       syscall.Errno = 5082\n\tERROR_CLUSTER_DATABASE_SEQMISMATCH                                        syscall.Errno = 5083\n\tERROR_RESMON_INVALID_STATE                                                syscall.Errno = 5084\n\tERROR_CLUSTER_GUM_NOT_LOCKER                                              syscall.Errno = 5085\n\tERROR_QUORUM_DISK_NOT_FOUND                                               syscall.Errno = 5086\n\tERROR_DATABASE_BACKUP_CORRUPT                                             syscall.Errno = 5087\n\tERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT                                   syscall.Errno = 5088\n\tERROR_RESOURCE_PROPERTY_UNCHANGEABLE                                      syscall.Errno = 5089\n\tERROR_NO_ADMIN_ACCESS_POINT                                               syscall.Errno = 5090\n\tERROR_CLUSTER_MEMBERSHIP_INVALID_STATE                                    syscall.Errno = 5890\n\tERROR_CLUSTER_QUORUMLOG_NOT_FOUND                                         syscall.Errno = 5891\n\tERROR_CLUSTER_MEMBERSHIP_HALT                                             syscall.Errno = 5892\n\tERROR_CLUSTER_INSTANCE_ID_MISMATCH                                        syscall.Errno = 5893\n\tERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP                                    syscall.Errno = 5894\n\tERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH                                 syscall.Errno = 5895\n\tERROR_CLUSTER_EVICT_WITHOUT_CLEANUP                                       syscall.Errno = 5896\n\tERROR_CLUSTER_PARAMETER_MISMATCH                                          syscall.Errno = 5897\n\tERROR_NODE_CANNOT_BE_CLUSTERED                                            syscall.Errno = 5898\n\tERROR_CLUSTER_WRONG_OS_VERSION                                            syscall.Errno = 5899\n\tERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME                                syscall.Errno = 5900\n\tERROR_CLUSCFG_ALREADY_COMMITTED                                           syscall.Errno = 5901\n\tERROR_CLUSCFG_ROLLBACK_FAILED                                             syscall.Errno = 5902\n\tERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT                           syscall.Errno = 5903\n\tERROR_CLUSTER_OLD_VERSION                                                 syscall.Errno = 5904\n\tERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME                               syscall.Errno = 5905\n\tERROR_CLUSTER_NO_NET_ADAPTERS                                             syscall.Errno = 5906\n\tERROR_CLUSTER_POISONED                                                    syscall.Errno = 5907\n\tERROR_CLUSTER_GROUP_MOVING                                                syscall.Errno = 5908\n\tERROR_CLUSTER_RESOURCE_TYPE_BUSY                                          syscall.Errno = 5909\n\tERROR_RESOURCE_CALL_TIMED_OUT                                             syscall.Errno = 5910\n\tERROR_INVALID_CLUSTER_IPV6_ADDRESS                                        syscall.Errno = 5911\n\tERROR_CLUSTER_INTERNAL_INVALID_FUNCTION                                   syscall.Errno = 5912\n\tERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS                                     syscall.Errno = 5913\n\tERROR_CLUSTER_PARTIAL_SEND                                                syscall.Errno = 5914\n\tERROR_CLUSTER_REGISTRY_INVALID_FUNCTION                                   syscall.Errno = 5915\n\tERROR_CLUSTER_INVALID_STRING_TERMINATION                                  syscall.Errno = 5916\n\tERROR_CLUSTER_INVALID_STRING_FORMAT                                       syscall.Errno = 5917\n\tERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS                            syscall.Errno = 5918\n\tERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS                        syscall.Errno = 5919\n\tERROR_CLUSTER_NULL_DATA                                                   syscall.Errno = 5920\n\tERROR_CLUSTER_PARTIAL_READ                                                syscall.Errno = 5921\n\tERROR_CLUSTER_PARTIAL_WRITE                                               syscall.Errno = 5922\n\tERROR_CLUSTER_CANT_DESERIALIZE_DATA                                       syscall.Errno = 5923\n\tERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT                                syscall.Errno = 5924\n\tERROR_CLUSTER_NO_QUORUM                                                   syscall.Errno = 5925\n\tERROR_CLUSTER_INVALID_IPV6_NETWORK                                        syscall.Errno = 5926\n\tERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK                                 syscall.Errno = 5927\n\tERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP                                    syscall.Errno = 5928\n\tERROR_DEPENDENCY_TREE_TOO_COMPLEX                                         syscall.Errno = 5929\n\tERROR_EXCEPTION_IN_RESOURCE_CALL                                          syscall.Errno = 5930\n\tERROR_CLUSTER_RHS_FAILED_INITIALIZATION                                   syscall.Errno = 5931\n\tERROR_CLUSTER_NOT_INSTALLED                                               syscall.Errno = 5932\n\tERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE                   syscall.Errno = 5933\n\tERROR_CLUSTER_MAX_NODES_IN_CLUSTER                                        syscall.Errno = 5934\n\tERROR_CLUSTER_TOO_MANY_NODES                                              syscall.Errno = 5935\n\tERROR_CLUSTER_OBJECT_ALREADY_USED                                         syscall.Errno = 5936\n\tERROR_NONCORE_GROUPS_FOUND                                                syscall.Errno = 5937\n\tERROR_FILE_SHARE_RESOURCE_CONFLICT                                        syscall.Errno = 5938\n\tERROR_CLUSTER_EVICT_INVALID_REQUEST                                       syscall.Errno = 5939\n\tERROR_CLUSTER_SINGLETON_RESOURCE                                          syscall.Errno = 5940\n\tERROR_CLUSTER_GROUP_SINGLETON_RESOURCE                                    syscall.Errno = 5941\n\tERROR_CLUSTER_RESOURCE_PROVIDER_FAILED                                    syscall.Errno = 5942\n\tERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR                                syscall.Errno = 5943\n\tERROR_CLUSTER_GROUP_BUSY                                                  syscall.Errno = 5944\n\tERROR_CLUSTER_NOT_SHARED_VOLUME                                           syscall.Errno = 5945\n\tERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR                                 syscall.Errno = 5946\n\tERROR_CLUSTER_SHARED_VOLUMES_IN_USE                                       syscall.Errno = 5947\n\tERROR_CLUSTER_USE_SHARED_VOLUMES_API                                      syscall.Errno = 5948\n\tERROR_CLUSTER_BACKUP_IN_PROGRESS                                          syscall.Errno = 5949\n\tERROR_NON_CSV_PATH                                                        syscall.Errno = 5950\n\tERROR_CSV_VOLUME_NOT_LOCAL                                                syscall.Errno = 5951\n\tERROR_CLUSTER_WATCHDOG_TERMINATING                                        syscall.Errno = 5952\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES                     syscall.Errno = 5953\n\tERROR_CLUSTER_INVALID_NODE_WEIGHT                                         syscall.Errno = 5954\n\tERROR_CLUSTER_RESOURCE_VETOED_CALL                                        syscall.Errno = 5955\n\tERROR_RESMON_SYSTEM_RESOURCES_LACKING                                     syscall.Errno = 5956\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION    syscall.Errno = 5957\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE         syscall.Errno = 5958\n\tERROR_CLUSTER_GROUP_QUEUED                                                syscall.Errno = 5959\n\tERROR_CLUSTER_RESOURCE_LOCKED_STATUS                                      syscall.Errno = 5960\n\tERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED                          syscall.Errno = 5961\n\tERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS                                      syscall.Errno = 5962\n\tERROR_CLUSTER_DISK_NOT_CONNECTED                                          syscall.Errno = 5963\n\tERROR_DISK_NOT_CSV_CAPABLE                                                syscall.Errno = 5964\n\tERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE                                   syscall.Errno = 5965\n\tERROR_CLUSTER_SHARED_VOLUME_REDIRECTED                                    syscall.Errno = 5966\n\tERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED                                syscall.Errno = 5967\n\tERROR_CLUSTER_CANNOT_RETURN_PROPERTIES                                    syscall.Errno = 5968\n\tERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES  syscall.Errno = 5969\n\tERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE                             syscall.Errno = 5970\n\tERROR_CLUSTER_AFFINITY_CONFLICT                                           syscall.Errno = 5971\n\tERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE                         syscall.Errno = 5972\n\tERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS                               syscall.Errno = 5973\n\tERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED                            syscall.Errno = 5974\n\tERROR_CLUSTER_UPGRADE_RESTART_REQUIRED                                    syscall.Errno = 5975\n\tERROR_CLUSTER_UPGRADE_IN_PROGRESS                                         syscall.Errno = 5976\n\tERROR_CLUSTER_UPGRADE_INCOMPLETE                                          syscall.Errno = 5977\n\tERROR_CLUSTER_NODE_IN_GRACE_PERIOD                                        syscall.Errno = 5978\n\tERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT                                        syscall.Errno = 5979\n\tERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER                                      syscall.Errno = 5980\n\tERROR_CLUSTER_RESOURCE_NOT_MONITORED                                      syscall.Errno = 5981\n\tERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED                       syscall.Errno = 5982\n\tERROR_CLUSTER_RESOURCE_IS_REPLICATED                                      syscall.Errno = 5983\n\tERROR_CLUSTER_NODE_ISOLATED                                               syscall.Errno = 5984\n\tERROR_CLUSTER_NODE_QUARANTINED                                            syscall.Errno = 5985\n\tERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED                            syscall.Errno = 5986\n\tERROR_CLUSTER_SPACE_DEGRADED                                              syscall.Errno = 5987\n\tERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED                              syscall.Errno = 5988\n\tERROR_CLUSTER_CSV_INVALID_HANDLE                                          syscall.Errno = 5989\n\tERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR                           syscall.Errno = 5990\n\tERROR_GROUPSET_NOT_AVAILABLE                                              syscall.Errno = 5991\n\tERROR_GROUPSET_NOT_FOUND                                                  syscall.Errno = 5992\n\tERROR_GROUPSET_CANT_PROVIDE                                               syscall.Errno = 5993\n\tERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND                               syscall.Errno = 5994\n\tERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY                              syscall.Errno = 5995\n\tERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION                          syscall.Errno = 5996\n\tERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS                          syscall.Errno = 5997\n\tERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME                      syscall.Errno = 5998\n\tERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE                           syscall.Errno = 5999\n\tERROR_ENCRYPTION_FAILED                                                   syscall.Errno = 6000\n\tERROR_DECRYPTION_FAILED                                                   syscall.Errno = 6001\n\tERROR_FILE_ENCRYPTED                                                      syscall.Errno = 6002\n\tERROR_NO_RECOVERY_POLICY                                                  syscall.Errno = 6003\n\tERROR_NO_EFS                                                              syscall.Errno = 6004\n\tERROR_WRONG_EFS                                                           syscall.Errno = 6005\n\tERROR_NO_USER_KEYS                                                        syscall.Errno = 6006\n\tERROR_FILE_NOT_ENCRYPTED                                                  syscall.Errno = 6007\n\tERROR_NOT_EXPORT_FORMAT                                                   syscall.Errno = 6008\n\tERROR_FILE_READ_ONLY                                                      syscall.Errno = 6009\n\tERROR_DIR_EFS_DISALLOWED                                                  syscall.Errno = 6010\n\tERROR_EFS_SERVER_NOT_TRUSTED                                              syscall.Errno = 6011\n\tERROR_BAD_RECOVERY_POLICY                                                 syscall.Errno = 6012\n\tERROR_EFS_ALG_BLOB_TOO_BIG                                                syscall.Errno = 6013\n\tERROR_VOLUME_NOT_SUPPORT_EFS                                              syscall.Errno = 6014\n\tERROR_EFS_DISABLED                                                        syscall.Errno = 6015\n\tERROR_EFS_VERSION_NOT_SUPPORT                                             syscall.Errno = 6016\n\tERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE                               syscall.Errno = 6017\n\tERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER                                    syscall.Errno = 6018\n\tERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE                               syscall.Errno = 6019\n\tERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE                                    syscall.Errno = 6020\n\tERROR_CS_ENCRYPTION_FILE_NOT_CSE                                          syscall.Errno = 6021\n\tERROR_ENCRYPTION_POLICY_DENIES_OPERATION                                  syscall.Errno = 6022\n\tERROR_WIP_ENCRYPTION_FAILED                                               syscall.Errno = 6023\n\tERROR_NO_BROWSER_SERVERS_FOUND                                            syscall.Errno = 6118\n\tSCHED_E_SERVICE_NOT_LOCALSYSTEM                                           syscall.Errno = 6200\n\tERROR_LOG_SECTOR_INVALID                                                  syscall.Errno = 6600\n\tERROR_LOG_SECTOR_PARITY_INVALID                                           syscall.Errno = 6601\n\tERROR_LOG_SECTOR_REMAPPED                                                 syscall.Errno = 6602\n\tERROR_LOG_BLOCK_INCOMPLETE                                                syscall.Errno = 6603\n\tERROR_LOG_INVALID_RANGE                                                   syscall.Errno = 6604\n\tERROR_LOG_BLOCKS_EXHAUSTED                                                syscall.Errno = 6605\n\tERROR_LOG_READ_CONTEXT_INVALID                                            syscall.Errno = 6606\n\tERROR_LOG_RESTART_INVALID                                                 syscall.Errno = 6607\n\tERROR_LOG_BLOCK_VERSION                                                   syscall.Errno = 6608\n\tERROR_LOG_BLOCK_INVALID                                                   syscall.Errno = 6609\n\tERROR_LOG_READ_MODE_INVALID                                               syscall.Errno = 6610\n\tERROR_LOG_NO_RESTART                                                      syscall.Errno = 6611\n\tERROR_LOG_METADATA_CORRUPT                                                syscall.Errno = 6612\n\tERROR_LOG_METADATA_INVALID                                                syscall.Errno = 6613\n\tERROR_LOG_METADATA_INCONSISTENT                                           syscall.Errno = 6614\n\tERROR_LOG_RESERVATION_INVALID                                             syscall.Errno = 6615\n\tERROR_LOG_CANT_DELETE                                                     syscall.Errno = 6616\n\tERROR_LOG_CONTAINER_LIMIT_EXCEEDED                                        syscall.Errno = 6617\n\tERROR_LOG_START_OF_LOG                                                    syscall.Errno = 6618\n\tERROR_LOG_POLICY_ALREADY_INSTALLED                                        syscall.Errno = 6619\n\tERROR_LOG_POLICY_NOT_INSTALLED                                            syscall.Errno = 6620\n\tERROR_LOG_POLICY_INVALID                                                  syscall.Errno = 6621\n\tERROR_LOG_POLICY_CONFLICT                                                 syscall.Errno = 6622\n\tERROR_LOG_PINNED_ARCHIVE_TAIL                                             syscall.Errno = 6623\n\tERROR_LOG_RECORD_NONEXISTENT                                              syscall.Errno = 6624\n\tERROR_LOG_RECORDS_RESERVED_INVALID                                        syscall.Errno = 6625\n\tERROR_LOG_SPACE_RESERVED_INVALID                                          syscall.Errno = 6626\n\tERROR_LOG_TAIL_INVALID                                                    syscall.Errno = 6627\n\tERROR_LOG_FULL                                                            syscall.Errno = 6628\n\tERROR_COULD_NOT_RESIZE_LOG                                                syscall.Errno = 6629\n\tERROR_LOG_MULTIPLEXED                                                     syscall.Errno = 6630\n\tERROR_LOG_DEDICATED                                                       syscall.Errno = 6631\n\tERROR_LOG_ARCHIVE_NOT_IN_PROGRESS                                         syscall.Errno = 6632\n\tERROR_LOG_ARCHIVE_IN_PROGRESS                                             syscall.Errno = 6633\n\tERROR_LOG_EPHEMERAL                                                       syscall.Errno = 6634\n\tERROR_LOG_NOT_ENOUGH_CONTAINERS                                           syscall.Errno = 6635\n\tERROR_LOG_CLIENT_ALREADY_REGISTERED                                       syscall.Errno = 6636\n\tERROR_LOG_CLIENT_NOT_REGISTERED                                           syscall.Errno = 6637\n\tERROR_LOG_FULL_HANDLER_IN_PROGRESS                                        syscall.Errno = 6638\n\tERROR_LOG_CONTAINER_READ_FAILED                                           syscall.Errno = 6639\n\tERROR_LOG_CONTAINER_WRITE_FAILED                                          syscall.Errno = 6640\n\tERROR_LOG_CONTAINER_OPEN_FAILED                                           syscall.Errno = 6641\n\tERROR_LOG_CONTAINER_STATE_INVALID                                         syscall.Errno = 6642\n\tERROR_LOG_STATE_INVALID                                                   syscall.Errno = 6643\n\tERROR_LOG_PINNED                                                          syscall.Errno = 6644\n\tERROR_LOG_METADATA_FLUSH_FAILED                                           syscall.Errno = 6645\n\tERROR_LOG_INCONSISTENT_SECURITY                                           syscall.Errno = 6646\n\tERROR_LOG_APPENDED_FLUSH_FAILED                                           syscall.Errno = 6647\n\tERROR_LOG_PINNED_RESERVATION                                              syscall.Errno = 6648\n\tERROR_INVALID_TRANSACTION                                                 syscall.Errno = 6700\n\tERROR_TRANSACTION_NOT_ACTIVE                                              syscall.Errno = 6701\n\tERROR_TRANSACTION_REQUEST_NOT_VALID                                       syscall.Errno = 6702\n\tERROR_TRANSACTION_NOT_REQUESTED                                           syscall.Errno = 6703\n\tERROR_TRANSACTION_ALREADY_ABORTED                                         syscall.Errno = 6704\n\tERROR_TRANSACTION_ALREADY_COMMITTED                                       syscall.Errno = 6705\n\tERROR_TM_INITIALIZATION_FAILED                                            syscall.Errno = 6706\n\tERROR_RESOURCEMANAGER_READ_ONLY                                           syscall.Errno = 6707\n\tERROR_TRANSACTION_NOT_JOINED                                              syscall.Errno = 6708\n\tERROR_TRANSACTION_SUPERIOR_EXISTS                                         syscall.Errno = 6709\n\tERROR_CRM_PROTOCOL_ALREADY_EXISTS                                         syscall.Errno = 6710\n\tERROR_TRANSACTION_PROPAGATION_FAILED                                      syscall.Errno = 6711\n\tERROR_CRM_PROTOCOL_NOT_FOUND                                              syscall.Errno = 6712\n\tERROR_TRANSACTION_INVALID_MARSHALL_BUFFER                                 syscall.Errno = 6713\n\tERROR_CURRENT_TRANSACTION_NOT_VALID                                       syscall.Errno = 6714\n\tERROR_TRANSACTION_NOT_FOUND                                               syscall.Errno = 6715\n\tERROR_RESOURCEMANAGER_NOT_FOUND                                           syscall.Errno = 6716\n\tERROR_ENLISTMENT_NOT_FOUND                                                syscall.Errno = 6717\n\tERROR_TRANSACTIONMANAGER_NOT_FOUND                                        syscall.Errno = 6718\n\tERROR_TRANSACTIONMANAGER_NOT_ONLINE                                       syscall.Errno = 6719\n\tERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION                          syscall.Errno = 6720\n\tERROR_TRANSACTION_NOT_ROOT                                                syscall.Errno = 6721\n\tERROR_TRANSACTION_OBJECT_EXPIRED                                          syscall.Errno = 6722\n\tERROR_TRANSACTION_RESPONSE_NOT_ENLISTED                                   syscall.Errno = 6723\n\tERROR_TRANSACTION_RECORD_TOO_LONG                                         syscall.Errno = 6724\n\tERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED                                  syscall.Errno = 6725\n\tERROR_TRANSACTION_INTEGRITY_VIOLATED                                      syscall.Errno = 6726\n\tERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH                                syscall.Errno = 6727\n\tERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT                                    syscall.Errno = 6728\n\tERROR_TRANSACTION_MUST_WRITETHROUGH                                       syscall.Errno = 6729\n\tERROR_TRANSACTION_NO_SUPERIOR                                             syscall.Errno = 6730\n\tERROR_HEURISTIC_DAMAGE_POSSIBLE                                           syscall.Errno = 6731\n\tERROR_TRANSACTIONAL_CONFLICT                                              syscall.Errno = 6800\n\tERROR_RM_NOT_ACTIVE                                                       syscall.Errno = 6801\n\tERROR_RM_METADATA_CORRUPT                                                 syscall.Errno = 6802\n\tERROR_DIRECTORY_NOT_RM                                                    syscall.Errno = 6803\n\tERROR_TRANSACTIONS_UNSUPPORTED_REMOTE                                     syscall.Errno = 6805\n\tERROR_LOG_RESIZE_INVALID_SIZE                                             syscall.Errno = 6806\n\tERROR_OBJECT_NO_LONGER_EXISTS                                             syscall.Errno = 6807\n\tERROR_STREAM_MINIVERSION_NOT_FOUND                                        syscall.Errno = 6808\n\tERROR_STREAM_MINIVERSION_NOT_VALID                                        syscall.Errno = 6809\n\tERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION                 syscall.Errno = 6810\n\tERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT                            syscall.Errno = 6811\n\tERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS                                syscall.Errno = 6812\n\tERROR_REMOTE_FILE_VERSION_MISMATCH                                        syscall.Errno = 6814\n\tERROR_HANDLE_NO_LONGER_VALID                                              syscall.Errno = 6815\n\tERROR_NO_TXF_METADATA                                                     syscall.Errno = 6816\n\tERROR_LOG_CORRUPTION_DETECTED                                             syscall.Errno = 6817\n\tERROR_CANT_RECOVER_WITH_HANDLE_OPEN                                       syscall.Errno = 6818\n\tERROR_RM_DISCONNECTED                                                     syscall.Errno = 6819\n\tERROR_ENLISTMENT_NOT_SUPERIOR                                             syscall.Errno = 6820\n\tERROR_RECOVERY_NOT_NEEDED                                                 syscall.Errno = 6821\n\tERROR_RM_ALREADY_STARTED                                                  syscall.Errno = 6822\n\tERROR_FILE_IDENTITY_NOT_PERSISTENT                                        syscall.Errno = 6823\n\tERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY                                 syscall.Errno = 6824\n\tERROR_CANT_CROSS_RM_BOUNDARY                                              syscall.Errno = 6825\n\tERROR_TXF_DIR_NOT_EMPTY                                                   syscall.Errno = 6826\n\tERROR_INDOUBT_TRANSACTIONS_EXIST                                          syscall.Errno = 6827\n\tERROR_TM_VOLATILE                                                         syscall.Errno = 6828\n\tERROR_ROLLBACK_TIMER_EXPIRED                                              syscall.Errno = 6829\n\tERROR_TXF_ATTRIBUTE_CORRUPT                                               syscall.Errno = 6830\n\tERROR_EFS_NOT_ALLOWED_IN_TRANSACTION                                      syscall.Errno = 6831\n\tERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED                                      syscall.Errno = 6832\n\tERROR_LOG_GROWTH_FAILED                                                   syscall.Errno = 6833\n\tERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE                               syscall.Errno = 6834\n\tERROR_TXF_METADATA_ALREADY_PRESENT                                        syscall.Errno = 6835\n\tERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET                                 syscall.Errno = 6836\n\tERROR_TRANSACTION_REQUIRED_PROMOTION                                      syscall.Errno = 6837\n\tERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION                                  syscall.Errno = 6838\n\tERROR_TRANSACTIONS_NOT_FROZEN                                             syscall.Errno = 6839\n\tERROR_TRANSACTION_FREEZE_IN_PROGRESS                                      syscall.Errno = 6840\n\tERROR_NOT_SNAPSHOT_VOLUME                                                 syscall.Errno = 6841\n\tERROR_NO_SAVEPOINT_WITH_OPEN_FILES                                        syscall.Errno = 6842\n\tERROR_DATA_LOST_REPAIR                                                    syscall.Errno = 6843\n\tERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION                                   syscall.Errno = 6844\n\tERROR_TM_IDENTITY_MISMATCH                                                syscall.Errno = 6845\n\tERROR_FLOATED_SECTION                                                     syscall.Errno = 6846\n\tERROR_CANNOT_ACCEPT_TRANSACTED_WORK                                       syscall.Errno = 6847\n\tERROR_CANNOT_ABORT_TRANSACTIONS                                           syscall.Errno = 6848\n\tERROR_BAD_CLUSTERS                                                        syscall.Errno = 6849\n\tERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION                              syscall.Errno = 6850\n\tERROR_VOLUME_DIRTY                                                        syscall.Errno = 6851\n\tERROR_NO_LINK_TRACKING_IN_TRANSACTION                                     syscall.Errno = 6852\n\tERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION                              syscall.Errno = 6853\n\tERROR_EXPIRED_HANDLE                                                      syscall.Errno = 6854\n\tERROR_TRANSACTION_NOT_ENLISTED                                            syscall.Errno = 6855\n\tERROR_CTX_WINSTATION_NAME_INVALID                                         syscall.Errno = 7001\n\tERROR_CTX_INVALID_PD                                                      syscall.Errno = 7002\n\tERROR_CTX_PD_NOT_FOUND                                                    syscall.Errno = 7003\n\tERROR_CTX_WD_NOT_FOUND                                                    syscall.Errno = 7004\n\tERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY                                      syscall.Errno = 7005\n\tERROR_CTX_SERVICE_NAME_COLLISION                                          syscall.Errno = 7006\n\tERROR_CTX_CLOSE_PENDING                                                   syscall.Errno = 7007\n\tERROR_CTX_NO_OUTBUF                                                       syscall.Errno = 7008\n\tERROR_CTX_MODEM_INF_NOT_FOUND                                             syscall.Errno = 7009\n\tERROR_CTX_INVALID_MODEMNAME                                               syscall.Errno = 7010\n\tERROR_CTX_MODEM_RESPONSE_ERROR                                            syscall.Errno = 7011\n\tERROR_CTX_MODEM_RESPONSE_TIMEOUT                                          syscall.Errno = 7012\n\tERROR_CTX_MODEM_RESPONSE_NO_CARRIER                                       syscall.Errno = 7013\n\tERROR_CTX_MODEM_RESPONSE_NO_DIALTONE                                      syscall.Errno = 7014\n\tERROR_CTX_MODEM_RESPONSE_BUSY                                             syscall.Errno = 7015\n\tERROR_CTX_MODEM_RESPONSE_VOICE                                            syscall.Errno = 7016\n\tERROR_CTX_TD_ERROR                                                        syscall.Errno = 7017\n\tERROR_CTX_WINSTATION_NOT_FOUND                                            syscall.Errno = 7022\n\tERROR_CTX_WINSTATION_ALREADY_EXISTS                                       syscall.Errno = 7023\n\tERROR_CTX_WINSTATION_BUSY                                                 syscall.Errno = 7024\n\tERROR_CTX_BAD_VIDEO_MODE                                                  syscall.Errno = 7025\n\tERROR_CTX_GRAPHICS_INVALID                                                syscall.Errno = 7035\n\tERROR_CTX_LOGON_DISABLED                                                  syscall.Errno = 7037\n\tERROR_CTX_NOT_CONSOLE                                                     syscall.Errno = 7038\n\tERROR_CTX_CLIENT_QUERY_TIMEOUT                                            syscall.Errno = 7040\n\tERROR_CTX_CONSOLE_DISCONNECT                                              syscall.Errno = 7041\n\tERROR_CTX_CONSOLE_CONNECT                                                 syscall.Errno = 7042\n\tERROR_CTX_SHADOW_DENIED                                                   syscall.Errno = 7044\n\tERROR_CTX_WINSTATION_ACCESS_DENIED                                        syscall.Errno = 7045\n\tERROR_CTX_INVALID_WD                                                      syscall.Errno = 7049\n\tERROR_CTX_SHADOW_INVALID                                                  syscall.Errno = 7050\n\tERROR_CTX_SHADOW_DISABLED                                                 syscall.Errno = 7051\n\tERROR_CTX_CLIENT_LICENSE_IN_USE                                           syscall.Errno = 7052\n\tERROR_CTX_CLIENT_LICENSE_NOT_SET                                          syscall.Errno = 7053\n\tERROR_CTX_LICENSE_NOT_AVAILABLE                                           syscall.Errno = 7054\n\tERROR_CTX_LICENSE_CLIENT_INVALID                                          syscall.Errno = 7055\n\tERROR_CTX_LICENSE_EXPIRED                                                 syscall.Errno = 7056\n\tERROR_CTX_SHADOW_NOT_RUNNING                                              syscall.Errno = 7057\n\tERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE                                     syscall.Errno = 7058\n\tERROR_ACTIVATION_COUNT_EXCEEDED                                           syscall.Errno = 7059\n\tERROR_CTX_WINSTATIONS_DISABLED                                            syscall.Errno = 7060\n\tERROR_CTX_ENCRYPTION_LEVEL_REQUIRED                                       syscall.Errno = 7061\n\tERROR_CTX_SESSION_IN_USE                                                  syscall.Errno = 7062\n\tERROR_CTX_NO_FORCE_LOGOFF                                                 syscall.Errno = 7063\n\tERROR_CTX_ACCOUNT_RESTRICTION                                             syscall.Errno = 7064\n\tERROR_RDP_PROTOCOL_ERROR                                                  syscall.Errno = 7065\n\tERROR_CTX_CDM_CONNECT                                                     syscall.Errno = 7066\n\tERROR_CTX_CDM_DISCONNECT                                                  syscall.Errno = 7067\n\tERROR_CTX_SECURITY_LAYER_ERROR                                            syscall.Errno = 7068\n\tERROR_TS_INCOMPATIBLE_SESSIONS                                            syscall.Errno = 7069\n\tERROR_TS_VIDEO_SUBSYSTEM_ERROR                                            syscall.Errno = 7070\n\tFRS_ERR_INVALID_API_SEQUENCE                                              syscall.Errno = 8001\n\tFRS_ERR_STARTING_SERVICE                                                  syscall.Errno = 8002\n\tFRS_ERR_STOPPING_SERVICE                                                  syscall.Errno = 8003\n\tFRS_ERR_INTERNAL_API                                                      syscall.Errno = 8004\n\tFRS_ERR_INTERNAL                                                          syscall.Errno = 8005\n\tFRS_ERR_SERVICE_COMM                                                      syscall.Errno = 8006\n\tFRS_ERR_INSUFFICIENT_PRIV                                                 syscall.Errno = 8007\n\tFRS_ERR_AUTHENTICATION                                                    syscall.Errno = 8008\n\tFRS_ERR_PARENT_INSUFFICIENT_PRIV                                          syscall.Errno = 8009\n\tFRS_ERR_PARENT_AUTHENTICATION                                             syscall.Errno = 8010\n\tFRS_ERR_CHILD_TO_PARENT_COMM                                              syscall.Errno = 8011\n\tFRS_ERR_PARENT_TO_CHILD_COMM                                              syscall.Errno = 8012\n\tFRS_ERR_SYSVOL_POPULATE                                                   syscall.Errno = 8013\n\tFRS_ERR_SYSVOL_POPULATE_TIMEOUT                                           syscall.Errno = 8014\n\tFRS_ERR_SYSVOL_IS_BUSY                                                    syscall.Errno = 8015\n\tFRS_ERR_SYSVOL_DEMOTE                                                     syscall.Errno = 8016\n\tFRS_ERR_INVALID_SERVICE_PARAMETER                                         syscall.Errno = 8017\n\tDS_S_SUCCESS                                                                            = ERROR_SUCCESS\n\tERROR_DS_NOT_INSTALLED                                                    syscall.Errno = 8200\n\tERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY                                     syscall.Errno = 8201\n\tERROR_DS_NO_ATTRIBUTE_OR_VALUE                                            syscall.Errno = 8202\n\tERROR_DS_INVALID_ATTRIBUTE_SYNTAX                                         syscall.Errno = 8203\n\tERROR_DS_ATTRIBUTE_TYPE_UNDEFINED                                         syscall.Errno = 8204\n\tERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS                                        syscall.Errno = 8205\n\tERROR_DS_BUSY                                                             syscall.Errno = 8206\n\tERROR_DS_UNAVAILABLE                                                      syscall.Errno = 8207\n\tERROR_DS_NO_RIDS_ALLOCATED                                                syscall.Errno = 8208\n\tERROR_DS_NO_MORE_RIDS                                                     syscall.Errno = 8209\n\tERROR_DS_INCORRECT_ROLE_OWNER                                             syscall.Errno = 8210\n\tERROR_DS_RIDMGR_INIT_ERROR                                                syscall.Errno = 8211\n\tERROR_DS_OBJ_CLASS_VIOLATION                                              syscall.Errno = 8212\n\tERROR_DS_CANT_ON_NON_LEAF                                                 syscall.Errno = 8213\n\tERROR_DS_CANT_ON_RDN                                                      syscall.Errno = 8214\n\tERROR_DS_CANT_MOD_OBJ_CLASS                                               syscall.Errno = 8215\n\tERROR_DS_CROSS_DOM_MOVE_ERROR                                             syscall.Errno = 8216\n\tERROR_DS_GC_NOT_AVAILABLE                                                 syscall.Errno = 8217\n\tERROR_SHARED_POLICY                                                       syscall.Errno = 8218\n\tERROR_POLICY_OBJECT_NOT_FOUND                                             syscall.Errno = 8219\n\tERROR_POLICY_ONLY_IN_DS                                                   syscall.Errno = 8220\n\tERROR_PROMOTION_ACTIVE                                                    syscall.Errno = 8221\n\tERROR_NO_PROMOTION_ACTIVE                                                 syscall.Errno = 8222\n\tERROR_DS_OPERATIONS_ERROR                                                 syscall.Errno = 8224\n\tERROR_DS_PROTOCOL_ERROR                                                   syscall.Errno = 8225\n\tERROR_DS_TIMELIMIT_EXCEEDED                                               syscall.Errno = 8226\n\tERROR_DS_SIZELIMIT_EXCEEDED                                               syscall.Errno = 8227\n\tERROR_DS_ADMIN_LIMIT_EXCEEDED                                             syscall.Errno = 8228\n\tERROR_DS_COMPARE_FALSE                                                    syscall.Errno = 8229\n\tERROR_DS_COMPARE_TRUE                                                     syscall.Errno = 8230\n\tERROR_DS_AUTH_METHOD_NOT_SUPPORTED                                        syscall.Errno = 8231\n\tERROR_DS_STRONG_AUTH_REQUIRED                                             syscall.Errno = 8232\n\tERROR_DS_INAPPROPRIATE_AUTH                                               syscall.Errno = 8233\n\tERROR_DS_AUTH_UNKNOWN                                                     syscall.Errno = 8234\n\tERROR_DS_REFERRAL                                                         syscall.Errno = 8235\n\tERROR_DS_UNAVAILABLE_CRIT_EXTENSION                                       syscall.Errno = 8236\n\tERROR_DS_CONFIDENTIALITY_REQUIRED                                         syscall.Errno = 8237\n\tERROR_DS_INAPPROPRIATE_MATCHING                                           syscall.Errno = 8238\n\tERROR_DS_CONSTRAINT_VIOLATION                                             syscall.Errno = 8239\n\tERROR_DS_NO_SUCH_OBJECT                                                   syscall.Errno = 8240\n\tERROR_DS_ALIAS_PROBLEM                                                    syscall.Errno = 8241\n\tERROR_DS_INVALID_DN_SYNTAX                                                syscall.Errno = 8242\n\tERROR_DS_IS_LEAF                                                          syscall.Errno = 8243\n\tERROR_DS_ALIAS_DEREF_PROBLEM                                              syscall.Errno = 8244\n\tERROR_DS_UNWILLING_TO_PERFORM                                             syscall.Errno = 8245\n\tERROR_DS_LOOP_DETECT                                                      syscall.Errno = 8246\n\tERROR_DS_NAMING_VIOLATION                                                 syscall.Errno = 8247\n\tERROR_DS_OBJECT_RESULTS_TOO_LARGE                                         syscall.Errno = 8248\n\tERROR_DS_AFFECTS_MULTIPLE_DSAS                                            syscall.Errno = 8249\n\tERROR_DS_SERVER_DOWN                                                      syscall.Errno = 8250\n\tERROR_DS_LOCAL_ERROR                                                      syscall.Errno = 8251\n\tERROR_DS_ENCODING_ERROR                                                   syscall.Errno = 8252\n\tERROR_DS_DECODING_ERROR                                                   syscall.Errno = 8253\n\tERROR_DS_FILTER_UNKNOWN                                                   syscall.Errno = 8254\n\tERROR_DS_PARAM_ERROR                                                      syscall.Errno = 8255\n\tERROR_DS_NOT_SUPPORTED                                                    syscall.Errno = 8256\n\tERROR_DS_NO_RESULTS_RETURNED                                              syscall.Errno = 8257\n\tERROR_DS_CONTROL_NOT_FOUND                                                syscall.Errno = 8258\n\tERROR_DS_CLIENT_LOOP                                                      syscall.Errno = 8259\n\tERROR_DS_REFERRAL_LIMIT_EXCEEDED                                          syscall.Errno = 8260\n\tERROR_DS_SORT_CONTROL_MISSING                                             syscall.Errno = 8261\n\tERROR_DS_OFFSET_RANGE_ERROR                                               syscall.Errno = 8262\n\tERROR_DS_RIDMGR_DISABLED                                                  syscall.Errno = 8263\n\tERROR_DS_ROOT_MUST_BE_NC                                                  syscall.Errno = 8301\n\tERROR_DS_ADD_REPLICA_INHIBITED                                            syscall.Errno = 8302\n\tERROR_DS_ATT_NOT_DEF_IN_SCHEMA                                            syscall.Errno = 8303\n\tERROR_DS_MAX_OBJ_SIZE_EXCEEDED                                            syscall.Errno = 8304\n\tERROR_DS_OBJ_STRING_NAME_EXISTS                                           syscall.Errno = 8305\n\tERROR_DS_NO_RDN_DEFINED_IN_SCHEMA                                         syscall.Errno = 8306\n\tERROR_DS_RDN_DOESNT_MATCH_SCHEMA                                          syscall.Errno = 8307\n\tERROR_DS_NO_REQUESTED_ATTS_FOUND                                          syscall.Errno = 8308\n\tERROR_DS_USER_BUFFER_TO_SMALL                                             syscall.Errno = 8309\n\tERROR_DS_ATT_IS_NOT_ON_OBJ                                                syscall.Errno = 8310\n\tERROR_DS_ILLEGAL_MOD_OPERATION                                            syscall.Errno = 8311\n\tERROR_DS_OBJ_TOO_LARGE                                                    syscall.Errno = 8312\n\tERROR_DS_BAD_INSTANCE_TYPE                                                syscall.Errno = 8313\n\tERROR_DS_MASTERDSA_REQUIRED                                               syscall.Errno = 8314\n\tERROR_DS_OBJECT_CLASS_REQUIRED                                            syscall.Errno = 8315\n\tERROR_DS_MISSING_REQUIRED_ATT                                             syscall.Errno = 8316\n\tERROR_DS_ATT_NOT_DEF_FOR_CLASS                                            syscall.Errno = 8317\n\tERROR_DS_ATT_ALREADY_EXISTS                                               syscall.Errno = 8318\n\tERROR_DS_CANT_ADD_ATT_VALUES                                              syscall.Errno = 8320\n\tERROR_DS_SINGLE_VALUE_CONSTRAINT                                          syscall.Errno = 8321\n\tERROR_DS_RANGE_CONSTRAINT                                                 syscall.Errno = 8322\n\tERROR_DS_ATT_VAL_ALREADY_EXISTS                                           syscall.Errno = 8323\n\tERROR_DS_CANT_REM_MISSING_ATT                                             syscall.Errno = 8324\n\tERROR_DS_CANT_REM_MISSING_ATT_VAL                                         syscall.Errno = 8325\n\tERROR_DS_ROOT_CANT_BE_SUBREF                                              syscall.Errno = 8326\n\tERROR_DS_NO_CHAINING                                                      syscall.Errno = 8327\n\tERROR_DS_NO_CHAINED_EVAL                                                  syscall.Errno = 8328\n\tERROR_DS_NO_PARENT_OBJECT                                                 syscall.Errno = 8329\n\tERROR_DS_PARENT_IS_AN_ALIAS                                               syscall.Errno = 8330\n\tERROR_DS_CANT_MIX_MASTER_AND_REPS                                         syscall.Errno = 8331\n\tERROR_DS_CHILDREN_EXIST                                                   syscall.Errno = 8332\n\tERROR_DS_OBJ_NOT_FOUND                                                    syscall.Errno = 8333\n\tERROR_DS_ALIASED_OBJ_MISSING                                              syscall.Errno = 8334\n\tERROR_DS_BAD_NAME_SYNTAX                                                  syscall.Errno = 8335\n\tERROR_DS_ALIAS_POINTS_TO_ALIAS                                            syscall.Errno = 8336\n\tERROR_DS_CANT_DEREF_ALIAS                                                 syscall.Errno = 8337\n\tERROR_DS_OUT_OF_SCOPE                                                     syscall.Errno = 8338\n\tERROR_DS_OBJECT_BEING_REMOVED                                             syscall.Errno = 8339\n\tERROR_DS_CANT_DELETE_DSA_OBJ                                              syscall.Errno = 8340\n\tERROR_DS_GENERIC_ERROR                                                    syscall.Errno = 8341\n\tERROR_DS_DSA_MUST_BE_INT_MASTER                                           syscall.Errno = 8342\n\tERROR_DS_CLASS_NOT_DSA                                                    syscall.Errno = 8343\n\tERROR_DS_INSUFF_ACCESS_RIGHTS                                             syscall.Errno = 8344\n\tERROR_DS_ILLEGAL_SUPERIOR                                                 syscall.Errno = 8345\n\tERROR_DS_ATTRIBUTE_OWNED_BY_SAM                                           syscall.Errno = 8346\n\tERROR_DS_NAME_TOO_MANY_PARTS                                              syscall.Errno = 8347\n\tERROR_DS_NAME_TOO_LONG                                                    syscall.Errno = 8348\n\tERROR_DS_NAME_VALUE_TOO_LONG                                              syscall.Errno = 8349\n\tERROR_DS_NAME_UNPARSEABLE                                                 syscall.Errno = 8350\n\tERROR_DS_NAME_TYPE_UNKNOWN                                                syscall.Errno = 8351\n\tERROR_DS_NOT_AN_OBJECT                                                    syscall.Errno = 8352\n\tERROR_DS_SEC_DESC_TOO_SHORT                                               syscall.Errno = 8353\n\tERROR_DS_SEC_DESC_INVALID                                                 syscall.Errno = 8354\n\tERROR_DS_NO_DELETED_NAME                                                  syscall.Errno = 8355\n\tERROR_DS_SUBREF_MUST_HAVE_PARENT                                          syscall.Errno = 8356\n\tERROR_DS_NCNAME_MUST_BE_NC                                                syscall.Errno = 8357\n\tERROR_DS_CANT_ADD_SYSTEM_ONLY                                             syscall.Errno = 8358\n\tERROR_DS_CLASS_MUST_BE_CONCRETE                                           syscall.Errno = 8359\n\tERROR_DS_INVALID_DMD                                                      syscall.Errno = 8360\n\tERROR_DS_OBJ_GUID_EXISTS                                                  syscall.Errno = 8361\n\tERROR_DS_NOT_ON_BACKLINK                                                  syscall.Errno = 8362\n\tERROR_DS_NO_CROSSREF_FOR_NC                                               syscall.Errno = 8363\n\tERROR_DS_SHUTTING_DOWN                                                    syscall.Errno = 8364\n\tERROR_DS_UNKNOWN_OPERATION                                                syscall.Errno = 8365\n\tERROR_DS_INVALID_ROLE_OWNER                                               syscall.Errno = 8366\n\tERROR_DS_COULDNT_CONTACT_FSMO                                             syscall.Errno = 8367\n\tERROR_DS_CROSS_NC_DN_RENAME                                               syscall.Errno = 8368\n\tERROR_DS_CANT_MOD_SYSTEM_ONLY                                             syscall.Errno = 8369\n\tERROR_DS_REPLICATOR_ONLY                                                  syscall.Errno = 8370\n\tERROR_DS_OBJ_CLASS_NOT_DEFINED                                            syscall.Errno = 8371\n\tERROR_DS_OBJ_CLASS_NOT_SUBCLASS                                           syscall.Errno = 8372\n\tERROR_DS_NAME_REFERENCE_INVALID                                           syscall.Errno = 8373\n\tERROR_DS_CROSS_REF_EXISTS                                                 syscall.Errno = 8374\n\tERROR_DS_CANT_DEL_MASTER_CROSSREF                                         syscall.Errno = 8375\n\tERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD                                       syscall.Errno = 8376\n\tERROR_DS_NOTIFY_FILTER_TOO_COMPLEX                                        syscall.Errno = 8377\n\tERROR_DS_DUP_RDN                                                          syscall.Errno = 8378\n\tERROR_DS_DUP_OID                                                          syscall.Errno = 8379\n\tERROR_DS_DUP_MAPI_ID                                                      syscall.Errno = 8380\n\tERROR_DS_DUP_SCHEMA_ID_GUID                                               syscall.Errno = 8381\n\tERROR_DS_DUP_LDAP_DISPLAY_NAME                                            syscall.Errno = 8382\n\tERROR_DS_SEMANTIC_ATT_TEST                                                syscall.Errno = 8383\n\tERROR_DS_SYNTAX_MISMATCH                                                  syscall.Errno = 8384\n\tERROR_DS_EXISTS_IN_MUST_HAVE                                              syscall.Errno = 8385\n\tERROR_DS_EXISTS_IN_MAY_HAVE                                               syscall.Errno = 8386\n\tERROR_DS_NONEXISTENT_MAY_HAVE                                             syscall.Errno = 8387\n\tERROR_DS_NONEXISTENT_MUST_HAVE                                            syscall.Errno = 8388\n\tERROR_DS_AUX_CLS_TEST_FAIL                                                syscall.Errno = 8389\n\tERROR_DS_NONEXISTENT_POSS_SUP                                             syscall.Errno = 8390\n\tERROR_DS_SUB_CLS_TEST_FAIL                                                syscall.Errno = 8391\n\tERROR_DS_BAD_RDN_ATT_ID_SYNTAX                                            syscall.Errno = 8392\n\tERROR_DS_EXISTS_IN_AUX_CLS                                                syscall.Errno = 8393\n\tERROR_DS_EXISTS_IN_SUB_CLS                                                syscall.Errno = 8394\n\tERROR_DS_EXISTS_IN_POSS_SUP                                               syscall.Errno = 8395\n\tERROR_DS_RECALCSCHEMA_FAILED                                              syscall.Errno = 8396\n\tERROR_DS_TREE_DELETE_NOT_FINISHED                                         syscall.Errno = 8397\n\tERROR_DS_CANT_DELETE                                                      syscall.Errno = 8398\n\tERROR_DS_ATT_SCHEMA_REQ_ID                                                syscall.Errno = 8399\n\tERROR_DS_BAD_ATT_SCHEMA_SYNTAX                                            syscall.Errno = 8400\n\tERROR_DS_CANT_CACHE_ATT                                                   syscall.Errno = 8401\n\tERROR_DS_CANT_CACHE_CLASS                                                 syscall.Errno = 8402\n\tERROR_DS_CANT_REMOVE_ATT_CACHE                                            syscall.Errno = 8403\n\tERROR_DS_CANT_REMOVE_CLASS_CACHE                                          syscall.Errno = 8404\n\tERROR_DS_CANT_RETRIEVE_DN                                                 syscall.Errno = 8405\n\tERROR_DS_MISSING_SUPREF                                                   syscall.Errno = 8406\n\tERROR_DS_CANT_RETRIEVE_INSTANCE                                           syscall.Errno = 8407\n\tERROR_DS_CODE_INCONSISTENCY                                               syscall.Errno = 8408\n\tERROR_DS_DATABASE_ERROR                                                   syscall.Errno = 8409\n\tERROR_DS_GOVERNSID_MISSING                                                syscall.Errno = 8410\n\tERROR_DS_MISSING_EXPECTED_ATT                                             syscall.Errno = 8411\n\tERROR_DS_NCNAME_MISSING_CR_REF                                            syscall.Errno = 8412\n\tERROR_DS_SECURITY_CHECKING_ERROR                                          syscall.Errno = 8413\n\tERROR_DS_SCHEMA_NOT_LOADED                                                syscall.Errno = 8414\n\tERROR_DS_SCHEMA_ALLOC_FAILED                                              syscall.Errno = 8415\n\tERROR_DS_ATT_SCHEMA_REQ_SYNTAX                                            syscall.Errno = 8416\n\tERROR_DS_GCVERIFY_ERROR                                                   syscall.Errno = 8417\n\tERROR_DS_DRA_SCHEMA_MISMATCH                                              syscall.Errno = 8418\n\tERROR_DS_CANT_FIND_DSA_OBJ                                                syscall.Errno = 8419\n\tERROR_DS_CANT_FIND_EXPECTED_NC                                            syscall.Errno = 8420\n\tERROR_DS_CANT_FIND_NC_IN_CACHE                                            syscall.Errno = 8421\n\tERROR_DS_CANT_RETRIEVE_CHILD                                              syscall.Errno = 8422\n\tERROR_DS_SECURITY_ILLEGAL_MODIFY                                          syscall.Errno = 8423\n\tERROR_DS_CANT_REPLACE_HIDDEN_REC                                          syscall.Errno = 8424\n\tERROR_DS_BAD_HIERARCHY_FILE                                               syscall.Errno = 8425\n\tERROR_DS_BUILD_HIERARCHY_TABLE_FAILED                                     syscall.Errno = 8426\n\tERROR_DS_CONFIG_PARAM_MISSING                                             syscall.Errno = 8427\n\tERROR_DS_COUNTING_AB_INDICES_FAILED                                       syscall.Errno = 8428\n\tERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED                                    syscall.Errno = 8429\n\tERROR_DS_INTERNAL_FAILURE                                                 syscall.Errno = 8430\n\tERROR_DS_UNKNOWN_ERROR                                                    syscall.Errno = 8431\n\tERROR_DS_ROOT_REQUIRES_CLASS_TOP                                          syscall.Errno = 8432\n\tERROR_DS_REFUSING_FSMO_ROLES                                              syscall.Errno = 8433\n\tERROR_DS_MISSING_FSMO_SETTINGS                                            syscall.Errno = 8434\n\tERROR_DS_UNABLE_TO_SURRENDER_ROLES                                        syscall.Errno = 8435\n\tERROR_DS_DRA_GENERIC                                                      syscall.Errno = 8436\n\tERROR_DS_DRA_INVALID_PARAMETER                                            syscall.Errno = 8437\n\tERROR_DS_DRA_BUSY                                                         syscall.Errno = 8438\n\tERROR_DS_DRA_BAD_DN                                                       syscall.Errno = 8439\n\tERROR_DS_DRA_BAD_NC                                                       syscall.Errno = 8440\n\tERROR_DS_DRA_DN_EXISTS                                                    syscall.Errno = 8441\n\tERROR_DS_DRA_INTERNAL_ERROR                                               syscall.Errno = 8442\n\tERROR_DS_DRA_INCONSISTENT_DIT                                             syscall.Errno = 8443\n\tERROR_DS_DRA_CONNECTION_FAILED                                            syscall.Errno = 8444\n\tERROR_DS_DRA_BAD_INSTANCE_TYPE                                            syscall.Errno = 8445\n\tERROR_DS_DRA_OUT_OF_MEM                                                   syscall.Errno = 8446\n\tERROR_DS_DRA_MAIL_PROBLEM                                                 syscall.Errno = 8447\n\tERROR_DS_DRA_REF_ALREADY_EXISTS                                           syscall.Errno = 8448\n\tERROR_DS_DRA_REF_NOT_FOUND                                                syscall.Errno = 8449\n\tERROR_DS_DRA_OBJ_IS_REP_SOURCE                                            syscall.Errno = 8450\n\tERROR_DS_DRA_DB_ERROR                                                     syscall.Errno = 8451\n\tERROR_DS_DRA_NO_REPLICA                                                   syscall.Errno = 8452\n\tERROR_DS_DRA_ACCESS_DENIED                                                syscall.Errno = 8453\n\tERROR_DS_DRA_NOT_SUPPORTED                                                syscall.Errno = 8454\n\tERROR_DS_DRA_RPC_CANCELLED                                                syscall.Errno = 8455\n\tERROR_DS_DRA_SOURCE_DISABLED                                              syscall.Errno = 8456\n\tERROR_DS_DRA_SINK_DISABLED                                                syscall.Errno = 8457\n\tERROR_DS_DRA_NAME_COLLISION                                               syscall.Errno = 8458\n\tERROR_DS_DRA_SOURCE_REINSTALLED                                           syscall.Errno = 8459\n\tERROR_DS_DRA_MISSING_PARENT                                               syscall.Errno = 8460\n\tERROR_DS_DRA_PREEMPTED                                                    syscall.Errno = 8461\n\tERROR_DS_DRA_ABANDON_SYNC                                                 syscall.Errno = 8462\n\tERROR_DS_DRA_SHUTDOWN                                                     syscall.Errno = 8463\n\tERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET                                     syscall.Errno = 8464\n\tERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA                                    syscall.Errno = 8465\n\tERROR_DS_DRA_EXTN_CONNECTION_FAILED                                       syscall.Errno = 8466\n\tERROR_DS_INSTALL_SCHEMA_MISMATCH                                          syscall.Errno = 8467\n\tERROR_DS_DUP_LINK_ID                                                      syscall.Errno = 8468\n\tERROR_DS_NAME_ERROR_RESOLVING                                             syscall.Errno = 8469\n\tERROR_DS_NAME_ERROR_NOT_FOUND                                             syscall.Errno = 8470\n\tERROR_DS_NAME_ERROR_NOT_UNIQUE                                            syscall.Errno = 8471\n\tERROR_DS_NAME_ERROR_NO_MAPPING                                            syscall.Errno = 8472\n\tERROR_DS_NAME_ERROR_DOMAIN_ONLY                                           syscall.Errno = 8473\n\tERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING                                syscall.Errno = 8474\n\tERROR_DS_CONSTRUCTED_ATT_MOD                                              syscall.Errno = 8475\n\tERROR_DS_WRONG_OM_OBJ_CLASS                                               syscall.Errno = 8476\n\tERROR_DS_DRA_REPL_PENDING                                                 syscall.Errno = 8477\n\tERROR_DS_DS_REQUIRED                                                      syscall.Errno = 8478\n\tERROR_DS_INVALID_LDAP_DISPLAY_NAME                                        syscall.Errno = 8479\n\tERROR_DS_NON_BASE_SEARCH                                                  syscall.Errno = 8480\n\tERROR_DS_CANT_RETRIEVE_ATTS                                               syscall.Errno = 8481\n\tERROR_DS_BACKLINK_WITHOUT_LINK                                            syscall.Errno = 8482\n\tERROR_DS_EPOCH_MISMATCH                                                   syscall.Errno = 8483\n\tERROR_DS_SRC_NAME_MISMATCH                                                syscall.Errno = 8484\n\tERROR_DS_SRC_AND_DST_NC_IDENTICAL                                         syscall.Errno = 8485\n\tERROR_DS_DST_NC_MISMATCH                                                  syscall.Errno = 8486\n\tERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC                                       syscall.Errno = 8487\n\tERROR_DS_SRC_GUID_MISMATCH                                                syscall.Errno = 8488\n\tERROR_DS_CANT_MOVE_DELETED_OBJECT                                         syscall.Errno = 8489\n\tERROR_DS_PDC_OPERATION_IN_PROGRESS                                        syscall.Errno = 8490\n\tERROR_DS_CROSS_DOMAIN_CLEANUP_REQD                                        syscall.Errno = 8491\n\tERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION                                      syscall.Errno = 8492\n\tERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS                                  syscall.Errno = 8493\n\tERROR_DS_NC_MUST_HAVE_NC_PARENT                                           syscall.Errno = 8494\n\tERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE                                        syscall.Errno = 8495\n\tERROR_DS_DST_DOMAIN_NOT_NATIVE                                            syscall.Errno = 8496\n\tERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER                                 syscall.Errno = 8497\n\tERROR_DS_CANT_MOVE_ACCOUNT_GROUP                                          syscall.Errno = 8498\n\tERROR_DS_CANT_MOVE_RESOURCE_GROUP                                         syscall.Errno = 8499\n\tERROR_DS_INVALID_SEARCH_FLAG                                              syscall.Errno = 8500\n\tERROR_DS_NO_TREE_DELETE_ABOVE_NC                                          syscall.Errno = 8501\n\tERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE                                     syscall.Errno = 8502\n\tERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE                         syscall.Errno = 8503\n\tERROR_DS_SAM_INIT_FAILURE                                                 syscall.Errno = 8504\n\tERROR_DS_SENSITIVE_GROUP_VIOLATION                                        syscall.Errno = 8505\n\tERROR_DS_CANT_MOD_PRIMARYGROUPID                                          syscall.Errno = 8506\n\tERROR_DS_ILLEGAL_BASE_SCHEMA_MOD                                          syscall.Errno = 8507\n\tERROR_DS_NONSAFE_SCHEMA_CHANGE                                            syscall.Errno = 8508\n\tERROR_DS_SCHEMA_UPDATE_DISALLOWED                                         syscall.Errno = 8509\n\tERROR_DS_CANT_CREATE_UNDER_SCHEMA                                         syscall.Errno = 8510\n\tERROR_DS_INSTALL_NO_SRC_SCH_VERSION                                       syscall.Errno = 8511\n\tERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE                                syscall.Errno = 8512\n\tERROR_DS_INVALID_GROUP_TYPE                                               syscall.Errno = 8513\n\tERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN                               syscall.Errno = 8514\n\tERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN                                syscall.Errno = 8515\n\tERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER                                    syscall.Errno = 8516\n\tERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER                                syscall.Errno = 8517\n\tERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER                                 syscall.Errno = 8518\n\tERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER                              syscall.Errno = 8519\n\tERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER                         syscall.Errno = 8520\n\tERROR_DS_HAVE_PRIMARY_MEMBERS                                             syscall.Errno = 8521\n\tERROR_DS_STRING_SD_CONVERSION_FAILED                                      syscall.Errno = 8522\n\tERROR_DS_NAMING_MASTER_GC                                                 syscall.Errno = 8523\n\tERROR_DS_DNS_LOOKUP_FAILURE                                               syscall.Errno = 8524\n\tERROR_DS_COULDNT_UPDATE_SPNS                                              syscall.Errno = 8525\n\tERROR_DS_CANT_RETRIEVE_SD                                                 syscall.Errno = 8526\n\tERROR_DS_KEY_NOT_UNIQUE                                                   syscall.Errno = 8527\n\tERROR_DS_WRONG_LINKED_ATT_SYNTAX                                          syscall.Errno = 8528\n\tERROR_DS_SAM_NEED_BOOTKEY_PASSWORD                                        syscall.Errno = 8529\n\tERROR_DS_SAM_NEED_BOOTKEY_FLOPPY                                          syscall.Errno = 8530\n\tERROR_DS_CANT_START                                                       syscall.Errno = 8531\n\tERROR_DS_INIT_FAILURE                                                     syscall.Errno = 8532\n\tERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION                                     syscall.Errno = 8533\n\tERROR_DS_SOURCE_DOMAIN_IN_FOREST                                          syscall.Errno = 8534\n\tERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST                                 syscall.Errno = 8535\n\tERROR_DS_DESTINATION_AUDITING_NOT_ENABLED                                 syscall.Errno = 8536\n\tERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN                                      syscall.Errno = 8537\n\tERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER                                        syscall.Errno = 8538\n\tERROR_DS_SRC_SID_EXISTS_IN_FOREST                                         syscall.Errno = 8539\n\tERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH                                syscall.Errno = 8540\n\tERROR_SAM_INIT_FAILURE                                                    syscall.Errno = 8541\n\tERROR_DS_DRA_SCHEMA_INFO_SHIP                                             syscall.Errno = 8542\n\tERROR_DS_DRA_SCHEMA_CONFLICT                                              syscall.Errno = 8543\n\tERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT                                      syscall.Errno = 8544\n\tERROR_DS_DRA_OBJ_NC_MISMATCH                                              syscall.Errno = 8545\n\tERROR_DS_NC_STILL_HAS_DSAS                                                syscall.Errno = 8546\n\tERROR_DS_GC_REQUIRED                                                      syscall.Errno = 8547\n\tERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY                                       syscall.Errno = 8548\n\tERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS                                       syscall.Errno = 8549\n\tERROR_DS_CANT_ADD_TO_GC                                                   syscall.Errno = 8550\n\tERROR_DS_NO_CHECKPOINT_WITH_PDC                                           syscall.Errno = 8551\n\tERROR_DS_SOURCE_AUDITING_NOT_ENABLED                                      syscall.Errno = 8552\n\tERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC                                      syscall.Errno = 8553\n\tERROR_DS_INVALID_NAME_FOR_SPN                                             syscall.Errno = 8554\n\tERROR_DS_FILTER_USES_CONTRUCTED_ATTRS                                     syscall.Errno = 8555\n\tERROR_DS_UNICODEPWD_NOT_IN_QUOTES                                         syscall.Errno = 8556\n\tERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED                                   syscall.Errno = 8557\n\tERROR_DS_MUST_BE_RUN_ON_DST_DC                                            syscall.Errno = 8558\n\tERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER                                    syscall.Errno = 8559\n\tERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ                                    syscall.Errno = 8560\n\tERROR_DS_INIT_FAILURE_CONSOLE                                             syscall.Errno = 8561\n\tERROR_DS_SAM_INIT_FAILURE_CONSOLE                                         syscall.Errno = 8562\n\tERROR_DS_FOREST_VERSION_TOO_HIGH                                          syscall.Errno = 8563\n\tERROR_DS_DOMAIN_VERSION_TOO_HIGH                                          syscall.Errno = 8564\n\tERROR_DS_FOREST_VERSION_TOO_LOW                                           syscall.Errno = 8565\n\tERROR_DS_DOMAIN_VERSION_TOO_LOW                                           syscall.Errno = 8566\n\tERROR_DS_INCOMPATIBLE_VERSION                                             syscall.Errno = 8567\n\tERROR_DS_LOW_DSA_VERSION                                                  syscall.Errno = 8568\n\tERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN                               syscall.Errno = 8569\n\tERROR_DS_NOT_SUPPORTED_SORT_ORDER                                         syscall.Errno = 8570\n\tERROR_DS_NAME_NOT_UNIQUE                                                  syscall.Errno = 8571\n\tERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4                                   syscall.Errno = 8572\n\tERROR_DS_OUT_OF_VERSION_STORE                                             syscall.Errno = 8573\n\tERROR_DS_INCOMPATIBLE_CONTROLS_USED                                       syscall.Errno = 8574\n\tERROR_DS_NO_REF_DOMAIN                                                    syscall.Errno = 8575\n\tERROR_DS_RESERVED_LINK_ID                                                 syscall.Errno = 8576\n\tERROR_DS_LINK_ID_NOT_AVAILABLE                                            syscall.Errno = 8577\n\tERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER                                    syscall.Errno = 8578\n\tERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE                             syscall.Errno = 8579\n\tERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC                                      syscall.Errno = 8580\n\tERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG                                      syscall.Errno = 8581\n\tERROR_DS_MODIFYDN_WRONG_GRANDPARENT                                       syscall.Errno = 8582\n\tERROR_DS_NAME_ERROR_TRUST_REFERRAL                                        syscall.Errno = 8583\n\tERROR_NOT_SUPPORTED_ON_STANDARD_SERVER                                    syscall.Errno = 8584\n\tERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD                                    syscall.Errno = 8585\n\tERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2                                     syscall.Errno = 8586\n\tERROR_DS_THREAD_LIMIT_EXCEEDED                                            syscall.Errno = 8587\n\tERROR_DS_NOT_CLOSEST                                                      syscall.Errno = 8588\n\tERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF                               syscall.Errno = 8589\n\tERROR_DS_SINGLE_USER_MODE_FAILED                                          syscall.Errno = 8590\n\tERROR_DS_NTDSCRIPT_SYNTAX_ERROR                                           syscall.Errno = 8591\n\tERROR_DS_NTDSCRIPT_PROCESS_ERROR                                          syscall.Errno = 8592\n\tERROR_DS_DIFFERENT_REPL_EPOCHS                                            syscall.Errno = 8593\n\tERROR_DS_DRS_EXTENSIONS_CHANGED                                           syscall.Errno = 8594\n\tERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR                    syscall.Errno = 8595\n\tERROR_DS_NO_MSDS_INTID                                                    syscall.Errno = 8596\n\tERROR_DS_DUP_MSDS_INTID                                                   syscall.Errno = 8597\n\tERROR_DS_EXISTS_IN_RDNATTID                                               syscall.Errno = 8598\n\tERROR_DS_AUTHORIZATION_FAILED                                             syscall.Errno = 8599\n\tERROR_DS_INVALID_SCRIPT                                                   syscall.Errno = 8600\n\tERROR_DS_REMOTE_CROSSREF_OP_FAILED                                        syscall.Errno = 8601\n\tERROR_DS_CROSS_REF_BUSY                                                   syscall.Errno = 8602\n\tERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN                               syscall.Errno = 8603\n\tERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC                                    syscall.Errno = 8604\n\tERROR_DS_DUPLICATE_ID_FOUND                                               syscall.Errno = 8605\n\tERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT                               syscall.Errno = 8606\n\tERROR_DS_GROUP_CONVERSION_ERROR                                           syscall.Errno = 8607\n\tERROR_DS_CANT_MOVE_APP_BASIC_GROUP                                        syscall.Errno = 8608\n\tERROR_DS_CANT_MOVE_APP_QUERY_GROUP                                        syscall.Errno = 8609\n\tERROR_DS_ROLE_NOT_VERIFIED                                                syscall.Errno = 8610\n\tERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL                                  syscall.Errno = 8611\n\tERROR_DS_DOMAIN_RENAME_IN_PROGRESS                                        syscall.Errno = 8612\n\tERROR_DS_EXISTING_AD_CHILD_NC                                             syscall.Errno = 8613\n\tERROR_DS_REPL_LIFETIME_EXCEEDED                                           syscall.Errno = 8614\n\tERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER                                   syscall.Errno = 8615\n\tERROR_DS_LDAP_SEND_QUEUE_FULL                                             syscall.Errno = 8616\n\tERROR_DS_DRA_OUT_SCHEDULE_WINDOW                                          syscall.Errno = 8617\n\tERROR_DS_POLICY_NOT_KNOWN                                                 syscall.Errno = 8618\n\tERROR_NO_SITE_SETTINGS_OBJECT                                             syscall.Errno = 8619\n\tERROR_NO_SECRETS                                                          syscall.Errno = 8620\n\tERROR_NO_WRITABLE_DC_FOUND                                                syscall.Errno = 8621\n\tERROR_DS_NO_SERVER_OBJECT                                                 syscall.Errno = 8622\n\tERROR_DS_NO_NTDSA_OBJECT                                                  syscall.Errno = 8623\n\tERROR_DS_NON_ASQ_SEARCH                                                   syscall.Errno = 8624\n\tERROR_DS_AUDIT_FAILURE                                                    syscall.Errno = 8625\n\tERROR_DS_INVALID_SEARCH_FLAG_SUBTREE                                      syscall.Errno = 8626\n\tERROR_DS_INVALID_SEARCH_FLAG_TUPLE                                        syscall.Errno = 8627\n\tERROR_DS_HIERARCHY_TABLE_TOO_DEEP                                         syscall.Errno = 8628\n\tERROR_DS_DRA_CORRUPT_UTD_VECTOR                                           syscall.Errno = 8629\n\tERROR_DS_DRA_SECRETS_DENIED                                               syscall.Errno = 8630\n\tERROR_DS_RESERVED_MAPI_ID                                                 syscall.Errno = 8631\n\tERROR_DS_MAPI_ID_NOT_AVAILABLE                                            syscall.Errno = 8632\n\tERROR_DS_DRA_MISSING_KRBTGT_SECRET                                        syscall.Errno = 8633\n\tERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST                                     syscall.Errno = 8634\n\tERROR_DS_FLAT_NAME_EXISTS_IN_FOREST                                       syscall.Errno = 8635\n\tERROR_INVALID_USER_PRINCIPAL_NAME                                         syscall.Errno = 8636\n\tERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS                               syscall.Errno = 8637\n\tERROR_DS_OID_NOT_FOUND                                                    syscall.Errno = 8638\n\tERROR_DS_DRA_RECYCLED_TARGET                                              syscall.Errno = 8639\n\tERROR_DS_DISALLOWED_NC_REDIRECT                                           syscall.Errno = 8640\n\tERROR_DS_HIGH_ADLDS_FFL                                                   syscall.Errno = 8641\n\tERROR_DS_HIGH_DSA_VERSION                                                 syscall.Errno = 8642\n\tERROR_DS_LOW_ADLDS_FFL                                                    syscall.Errno = 8643\n\tERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION                                syscall.Errno = 8644\n\tERROR_DS_UNDELETE_SAM_VALIDATION_FAILED                                   syscall.Errno = 8645\n\tERROR_INCORRECT_ACCOUNT_TYPE                                              syscall.Errno = 8646\n\tERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST                                   syscall.Errno = 8647\n\tERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST                                   syscall.Errno = 8648\n\tERROR_DS_MISSING_FOREST_TRUST                                             syscall.Errno = 8649\n\tERROR_DS_VALUE_KEY_NOT_UNIQUE                                             syscall.Errno = 8650\n\tDNS_ERROR_RESPONSE_CODES_BASE                                             syscall.Errno = 9000\n\tDNS_ERROR_RCODE_NO_ERROR                                                                = ERROR_SUCCESS\n\tDNS_ERROR_MASK                                                            syscall.Errno = 0x00002328\n\tDNS_ERROR_RCODE_FORMAT_ERROR                                              syscall.Errno = 9001\n\tDNS_ERROR_RCODE_SERVER_FAILURE                                            syscall.Errno = 9002\n\tDNS_ERROR_RCODE_NAME_ERROR                                                syscall.Errno = 9003\n\tDNS_ERROR_RCODE_NOT_IMPLEMENTED                                           syscall.Errno = 9004\n\tDNS_ERROR_RCODE_REFUSED                                                   syscall.Errno = 9005\n\tDNS_ERROR_RCODE_YXDOMAIN                                                  syscall.Errno = 9006\n\tDNS_ERROR_RCODE_YXRRSET                                                   syscall.Errno = 9007\n\tDNS_ERROR_RCODE_NXRRSET                                                   syscall.Errno = 9008\n\tDNS_ERROR_RCODE_NOTAUTH                                                   syscall.Errno = 9009\n\tDNS_ERROR_RCODE_NOTZONE                                                   syscall.Errno = 9010\n\tDNS_ERROR_RCODE_BADSIG                                                    syscall.Errno = 9016\n\tDNS_ERROR_RCODE_BADKEY                                                    syscall.Errno = 9017\n\tDNS_ERROR_RCODE_BADTIME                                                   syscall.Errno = 9018\n\tDNS_ERROR_RCODE_LAST                                                                    = DNS_ERROR_RCODE_BADTIME\n\tDNS_ERROR_DNSSEC_BASE                                                     syscall.Errno = 9100\n\tDNS_ERROR_KEYMASTER_REQUIRED                                              syscall.Errno = 9101\n\tDNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE                                      syscall.Errno = 9102\n\tDNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1                                syscall.Errno = 9103\n\tDNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS                              syscall.Errno = 9104\n\tDNS_ERROR_UNSUPPORTED_ALGORITHM                                           syscall.Errno = 9105\n\tDNS_ERROR_INVALID_KEY_SIZE                                                syscall.Errno = 9106\n\tDNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE                                      syscall.Errno = 9107\n\tDNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION                                 syscall.Errno = 9108\n\tDNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR                                syscall.Errno = 9109\n\tDNS_ERROR_UNEXPECTED_CNG_ERROR                                            syscall.Errno = 9110\n\tDNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION                               syscall.Errno = 9111\n\tDNS_ERROR_KSP_NOT_ACCESSIBLE                                              syscall.Errno = 9112\n\tDNS_ERROR_TOO_MANY_SKDS                                                   syscall.Errno = 9113\n\tDNS_ERROR_INVALID_ROLLOVER_PERIOD                                         syscall.Errno = 9114\n\tDNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET                                 syscall.Errno = 9115\n\tDNS_ERROR_ROLLOVER_IN_PROGRESS                                            syscall.Errno = 9116\n\tDNS_ERROR_STANDBY_KEY_NOT_PRESENT                                         syscall.Errno = 9117\n\tDNS_ERROR_NOT_ALLOWED_ON_ZSK                                              syscall.Errno = 9118\n\tDNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD                                       syscall.Errno = 9119\n\tDNS_ERROR_ROLLOVER_ALREADY_QUEUED                                         syscall.Errno = 9120\n\tDNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE                                    syscall.Errno = 9121\n\tDNS_ERROR_BAD_KEYMASTER                                                   syscall.Errno = 9122\n\tDNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD                               syscall.Errno = 9123\n\tDNS_ERROR_INVALID_NSEC3_ITERATION_COUNT                                   syscall.Errno = 9124\n\tDNS_ERROR_DNSSEC_IS_DISABLED                                              syscall.Errno = 9125\n\tDNS_ERROR_INVALID_XML                                                     syscall.Errno = 9126\n\tDNS_ERROR_NO_VALID_TRUST_ANCHORS                                          syscall.Errno = 9127\n\tDNS_ERROR_ROLLOVER_NOT_POKEABLE                                           syscall.Errno = 9128\n\tDNS_ERROR_NSEC3_NAME_COLLISION                                            syscall.Errno = 9129\n\tDNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1                           syscall.Errno = 9130\n\tDNS_ERROR_PACKET_FMT_BASE                                                 syscall.Errno = 9500\n\tDNS_INFO_NO_RECORDS                                                       syscall.Errno = 9501\n\tDNS_ERROR_BAD_PACKET                                                      syscall.Errno = 9502\n\tDNS_ERROR_NO_PACKET                                                       syscall.Errno = 9503\n\tDNS_ERROR_RCODE                                                           syscall.Errno = 9504\n\tDNS_ERROR_UNSECURE_PACKET                                                 syscall.Errno = 9505\n\tDNS_STATUS_PACKET_UNSECURE                                                              = DNS_ERROR_UNSECURE_PACKET\n\tDNS_REQUEST_PENDING                                                       syscall.Errno = 9506\n\tDNS_ERROR_NO_MEMORY                                                                     = ERROR_OUTOFMEMORY\n\tDNS_ERROR_INVALID_NAME                                                                  = ERROR_INVALID_NAME\n\tDNS_ERROR_INVALID_DATA                                                                  = ERROR_INVALID_DATA\n\tDNS_ERROR_GENERAL_API_BASE                                                syscall.Errno = 9550\n\tDNS_ERROR_INVALID_TYPE                                                    syscall.Errno = 9551\n\tDNS_ERROR_INVALID_IP_ADDRESS                                              syscall.Errno = 9552\n\tDNS_ERROR_INVALID_PROPERTY                                                syscall.Errno = 9553\n\tDNS_ERROR_TRY_AGAIN_LATER                                                 syscall.Errno = 9554\n\tDNS_ERROR_NOT_UNIQUE                                                      syscall.Errno = 9555\n\tDNS_ERROR_NON_RFC_NAME                                                    syscall.Errno = 9556\n\tDNS_STATUS_FQDN                                                           syscall.Errno = 9557\n\tDNS_STATUS_DOTTED_NAME                                                    syscall.Errno = 9558\n\tDNS_STATUS_SINGLE_PART_NAME                                               syscall.Errno = 9559\n\tDNS_ERROR_INVALID_NAME_CHAR                                               syscall.Errno = 9560\n\tDNS_ERROR_NUMERIC_NAME                                                    syscall.Errno = 9561\n\tDNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER                                      syscall.Errno = 9562\n\tDNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION                                    syscall.Errno = 9563\n\tDNS_ERROR_CANNOT_FIND_ROOT_HINTS                                          syscall.Errno = 9564\n\tDNS_ERROR_INCONSISTENT_ROOT_HINTS                                         syscall.Errno = 9565\n\tDNS_ERROR_DWORD_VALUE_TOO_SMALL                                           syscall.Errno = 9566\n\tDNS_ERROR_DWORD_VALUE_TOO_LARGE                                           syscall.Errno = 9567\n\tDNS_ERROR_BACKGROUND_LOADING                                              syscall.Errno = 9568\n\tDNS_ERROR_NOT_ALLOWED_ON_RODC                                             syscall.Errno = 9569\n\tDNS_ERROR_NOT_ALLOWED_UNDER_DNAME                                         syscall.Errno = 9570\n\tDNS_ERROR_DELEGATION_REQUIRED                                             syscall.Errno = 9571\n\tDNS_ERROR_INVALID_POLICY_TABLE                                            syscall.Errno = 9572\n\tDNS_ERROR_ADDRESS_REQUIRED                                                syscall.Errno = 9573\n\tDNS_ERROR_ZONE_BASE                                                       syscall.Errno = 9600\n\tDNS_ERROR_ZONE_DOES_NOT_EXIST                                             syscall.Errno = 9601\n\tDNS_ERROR_NO_ZONE_INFO                                                    syscall.Errno = 9602\n\tDNS_ERROR_INVALID_ZONE_OPERATION                                          syscall.Errno = 9603\n\tDNS_ERROR_ZONE_CONFIGURATION_ERROR                                        syscall.Errno = 9604\n\tDNS_ERROR_ZONE_HAS_NO_SOA_RECORD                                          syscall.Errno = 9605\n\tDNS_ERROR_ZONE_HAS_NO_NS_RECORDS                                          syscall.Errno = 9606\n\tDNS_ERROR_ZONE_LOCKED                                                     syscall.Errno = 9607\n\tDNS_ERROR_ZONE_CREATION_FAILED                                            syscall.Errno = 9608\n\tDNS_ERROR_ZONE_ALREADY_EXISTS                                             syscall.Errno = 9609\n\tDNS_ERROR_AUTOZONE_ALREADY_EXISTS                                         syscall.Errno = 9610\n\tDNS_ERROR_INVALID_ZONE_TYPE                                               syscall.Errno = 9611\n\tDNS_ERROR_SECONDARY_REQUIRES_MASTER_IP                                    syscall.Errno = 9612\n\tDNS_ERROR_ZONE_NOT_SECONDARY                                              syscall.Errno = 9613\n\tDNS_ERROR_NEED_SECONDARY_ADDRESSES                                        syscall.Errno = 9614\n\tDNS_ERROR_WINS_INIT_FAILED                                                syscall.Errno = 9615\n\tDNS_ERROR_NEED_WINS_SERVERS                                               syscall.Errno = 9616\n\tDNS_ERROR_NBSTAT_INIT_FAILED                                              syscall.Errno = 9617\n\tDNS_ERROR_SOA_DELETE_INVALID                                              syscall.Errno = 9618\n\tDNS_ERROR_FORWARDER_ALREADY_EXISTS                                        syscall.Errno = 9619\n\tDNS_ERROR_ZONE_REQUIRES_MASTER_IP                                         syscall.Errno = 9620\n\tDNS_ERROR_ZONE_IS_SHUTDOWN                                                syscall.Errno = 9621\n\tDNS_ERROR_ZONE_LOCKED_FOR_SIGNING                                         syscall.Errno = 9622\n\tDNS_ERROR_DATAFILE_BASE                                                   syscall.Errno = 9650\n\tDNS_ERROR_PRIMARY_REQUIRES_DATAFILE                                       syscall.Errno = 9651\n\tDNS_ERROR_INVALID_DATAFILE_NAME                                           syscall.Errno = 9652\n\tDNS_ERROR_DATAFILE_OPEN_FAILURE                                           syscall.Errno = 9653\n\tDNS_ERROR_FILE_WRITEBACK_FAILED                                           syscall.Errno = 9654\n\tDNS_ERROR_DATAFILE_PARSING                                                syscall.Errno = 9655\n\tDNS_ERROR_DATABASE_BASE                                                   syscall.Errno = 9700\n\tDNS_ERROR_RECORD_DOES_NOT_EXIST                                           syscall.Errno = 9701\n\tDNS_ERROR_RECORD_FORMAT                                                   syscall.Errno = 9702\n\tDNS_ERROR_NODE_CREATION_FAILED                                            syscall.Errno = 9703\n\tDNS_ERROR_UNKNOWN_RECORD_TYPE                                             syscall.Errno = 9704\n\tDNS_ERROR_RECORD_TIMED_OUT                                                syscall.Errno = 9705\n\tDNS_ERROR_NAME_NOT_IN_ZONE                                                syscall.Errno = 9706\n\tDNS_ERROR_CNAME_LOOP                                                      syscall.Errno = 9707\n\tDNS_ERROR_NODE_IS_CNAME                                                   syscall.Errno = 9708\n\tDNS_ERROR_CNAME_COLLISION                                                 syscall.Errno = 9709\n\tDNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT                                        syscall.Errno = 9710\n\tDNS_ERROR_RECORD_ALREADY_EXISTS                                           syscall.Errno = 9711\n\tDNS_ERROR_SECONDARY_DATA                                                  syscall.Errno = 9712\n\tDNS_ERROR_NO_CREATE_CACHE_DATA                                            syscall.Errno = 9713\n\tDNS_ERROR_NAME_DOES_NOT_EXIST                                             syscall.Errno = 9714\n\tDNS_WARNING_PTR_CREATE_FAILED                                             syscall.Errno = 9715\n\tDNS_WARNING_DOMAIN_UNDELETED                                              syscall.Errno = 9716\n\tDNS_ERROR_DS_UNAVAILABLE                                                  syscall.Errno = 9717\n\tDNS_ERROR_DS_ZONE_ALREADY_EXISTS                                          syscall.Errno = 9718\n\tDNS_ERROR_NO_BOOTFILE_IF_DS_ZONE                                          syscall.Errno = 9719\n\tDNS_ERROR_NODE_IS_DNAME                                                   syscall.Errno = 9720\n\tDNS_ERROR_DNAME_COLLISION                                                 syscall.Errno = 9721\n\tDNS_ERROR_ALIAS_LOOP                                                      syscall.Errno = 9722\n\tDNS_ERROR_OPERATION_BASE                                                  syscall.Errno = 9750\n\tDNS_INFO_AXFR_COMPLETE                                                    syscall.Errno = 9751\n\tDNS_ERROR_AXFR                                                            syscall.Errno = 9752\n\tDNS_INFO_ADDED_LOCAL_WINS                                                 syscall.Errno = 9753\n\tDNS_ERROR_SECURE_BASE                                                     syscall.Errno = 9800\n\tDNS_STATUS_CONTINUE_NEEDED                                                syscall.Errno = 9801\n\tDNS_ERROR_SETUP_BASE                                                      syscall.Errno = 9850\n\tDNS_ERROR_NO_TCPIP                                                        syscall.Errno = 9851\n\tDNS_ERROR_NO_DNS_SERVERS                                                  syscall.Errno = 9852\n\tDNS_ERROR_DP_BASE                                                         syscall.Errno = 9900\n\tDNS_ERROR_DP_DOES_NOT_EXIST                                               syscall.Errno = 9901\n\tDNS_ERROR_DP_ALREADY_EXISTS                                               syscall.Errno = 9902\n\tDNS_ERROR_DP_NOT_ENLISTED                                                 syscall.Errno = 9903\n\tDNS_ERROR_DP_ALREADY_ENLISTED                                             syscall.Errno = 9904\n\tDNS_ERROR_DP_NOT_AVAILABLE                                                syscall.Errno = 9905\n\tDNS_ERROR_DP_FSMO_ERROR                                                   syscall.Errno = 9906\n\tDNS_ERROR_RRL_NOT_ENABLED                                                 syscall.Errno = 9911\n\tDNS_ERROR_RRL_INVALID_WINDOW_SIZE                                         syscall.Errno = 9912\n\tDNS_ERROR_RRL_INVALID_IPV4_PREFIX                                         syscall.Errno = 9913\n\tDNS_ERROR_RRL_INVALID_IPV6_PREFIX                                         syscall.Errno = 9914\n\tDNS_ERROR_RRL_INVALID_TC_RATE                                             syscall.Errno = 9915\n\tDNS_ERROR_RRL_INVALID_LEAK_RATE                                           syscall.Errno = 9916\n\tDNS_ERROR_RRL_LEAK_RATE_LESSTHAN_TC_RATE                                  syscall.Errno = 9917\n\tDNS_ERROR_VIRTUALIZATION_INSTANCE_ALREADY_EXISTS                          syscall.Errno = 9921\n\tDNS_ERROR_VIRTUALIZATION_INSTANCE_DOES_NOT_EXIST                          syscall.Errno = 9922\n\tDNS_ERROR_VIRTUALIZATION_TREE_LOCKED                                      syscall.Errno = 9923\n\tDNS_ERROR_INVAILD_VIRTUALIZATION_INSTANCE_NAME                            syscall.Errno = 9924\n\tDNS_ERROR_DEFAULT_VIRTUALIZATION_INSTANCE                                 syscall.Errno = 9925\n\tDNS_ERROR_ZONESCOPE_ALREADY_EXISTS                                        syscall.Errno = 9951\n\tDNS_ERROR_ZONESCOPE_DOES_NOT_EXIST                                        syscall.Errno = 9952\n\tDNS_ERROR_DEFAULT_ZONESCOPE                                               syscall.Errno = 9953\n\tDNS_ERROR_INVALID_ZONESCOPE_NAME                                          syscall.Errno = 9954\n\tDNS_ERROR_NOT_ALLOWED_WITH_ZONESCOPES                                     syscall.Errno = 9955\n\tDNS_ERROR_LOAD_ZONESCOPE_FAILED                                           syscall.Errno = 9956\n\tDNS_ERROR_ZONESCOPE_FILE_WRITEBACK_FAILED                                 syscall.Errno = 9957\n\tDNS_ERROR_INVALID_SCOPE_NAME                                              syscall.Errno = 9958\n\tDNS_ERROR_SCOPE_DOES_NOT_EXIST                                            syscall.Errno = 9959\n\tDNS_ERROR_DEFAULT_SCOPE                                                   syscall.Errno = 9960\n\tDNS_ERROR_INVALID_SCOPE_OPERATION                                         syscall.Errno = 9961\n\tDNS_ERROR_SCOPE_LOCKED                                                    syscall.Errno = 9962\n\tDNS_ERROR_SCOPE_ALREADY_EXISTS                                            syscall.Errno = 9963\n\tDNS_ERROR_POLICY_ALREADY_EXISTS                                           syscall.Errno = 9971\n\tDNS_ERROR_POLICY_DOES_NOT_EXIST                                           syscall.Errno = 9972\n\tDNS_ERROR_POLICY_INVALID_CRITERIA                                         syscall.Errno = 9973\n\tDNS_ERROR_POLICY_INVALID_SETTINGS                                         syscall.Errno = 9974\n\tDNS_ERROR_CLIENT_SUBNET_IS_ACCESSED                                       syscall.Errno = 9975\n\tDNS_ERROR_CLIENT_SUBNET_DOES_NOT_EXIST                                    syscall.Errno = 9976\n\tDNS_ERROR_CLIENT_SUBNET_ALREADY_EXISTS                                    syscall.Errno = 9977\n\tDNS_ERROR_SUBNET_DOES_NOT_EXIST                                           syscall.Errno = 9978\n\tDNS_ERROR_SUBNET_ALREADY_EXISTS                                           syscall.Errno = 9979\n\tDNS_ERROR_POLICY_LOCKED                                                   syscall.Errno = 9980\n\tDNS_ERROR_POLICY_INVALID_WEIGHT                                           syscall.Errno = 9981\n\tDNS_ERROR_POLICY_INVALID_NAME                                             syscall.Errno = 9982\n\tDNS_ERROR_POLICY_MISSING_CRITERIA                                         syscall.Errno = 9983\n\tDNS_ERROR_INVALID_CLIENT_SUBNET_NAME                                      syscall.Errno = 9984\n\tDNS_ERROR_POLICY_PROCESSING_ORDER_INVALID                                 syscall.Errno = 9985\n\tDNS_ERROR_POLICY_SCOPE_MISSING                                            syscall.Errno = 9986\n\tDNS_ERROR_POLICY_SCOPE_NOT_ALLOWED                                        syscall.Errno = 9987\n\tDNS_ERROR_SERVERSCOPE_IS_REFERENCED                                       syscall.Errno = 9988\n\tDNS_ERROR_ZONESCOPE_IS_REFERENCED                                         syscall.Errno = 9989\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_CLIENT_SUBNET                           syscall.Errno = 9990\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_TRANSPORT_PROTOCOL                      syscall.Errno = 9991\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_NETWORK_PROTOCOL                        syscall.Errno = 9992\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_INTERFACE                               syscall.Errno = 9993\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_FQDN                                    syscall.Errno = 9994\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_QUERY_TYPE                              syscall.Errno = 9995\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_TIME_OF_DAY                             syscall.Errno = 9996\n\tWSABASEERR                                                                syscall.Errno = 10000\n\tWSAEINTR                                                                  syscall.Errno = 10004\n\tWSAEBADF                                                                  syscall.Errno = 10009\n\tWSAEACCES                                                                 syscall.Errno = 10013\n\tWSAEFAULT                                                                 syscall.Errno = 10014\n\tWSAEINVAL                                                                 syscall.Errno = 10022\n\tWSAEMFILE                                                                 syscall.Errno = 10024\n\tWSAEWOULDBLOCK                                                            syscall.Errno = 10035\n\tWSAEINPROGRESS                                                            syscall.Errno = 10036\n\tWSAEALREADY                                                               syscall.Errno = 10037\n\tWSAENOTSOCK                                                               syscall.Errno = 10038\n\tWSAEDESTADDRREQ                                                           syscall.Errno = 10039\n\tWSAEMSGSIZE                                                               syscall.Errno = 10040\n\tWSAEPROTOTYPE                                                             syscall.Errno = 10041\n\tWSAENOPROTOOPT                                                            syscall.Errno = 10042\n\tWSAEPROTONOSUPPORT                                                        syscall.Errno = 10043\n\tWSAESOCKTNOSUPPORT                                                        syscall.Errno = 10044\n\tWSAEOPNOTSUPP                                                             syscall.Errno = 10045\n\tWSAEPFNOSUPPORT                                                           syscall.Errno = 10046\n\tWSAEAFNOSUPPORT                                                           syscall.Errno = 10047\n\tWSAEADDRINUSE                                                             syscall.Errno = 10048\n\tWSAEADDRNOTAVAIL                                                          syscall.Errno = 10049\n\tWSAENETDOWN                                                               syscall.Errno = 10050\n\tWSAENETUNREACH                                                            syscall.Errno = 10051\n\tWSAENETRESET                                                              syscall.Errno = 10052\n\tWSAECONNABORTED                                                           syscall.Errno = 10053\n\tWSAECONNRESET                                                             syscall.Errno = 10054\n\tWSAENOBUFS                                                                syscall.Errno = 10055\n\tWSAEISCONN                                                                syscall.Errno = 10056\n\tWSAENOTCONN                                                               syscall.Errno = 10057\n\tWSAESHUTDOWN                                                              syscall.Errno = 10058\n\tWSAETOOMANYREFS                                                           syscall.Errno = 10059\n\tWSAETIMEDOUT                                                              syscall.Errno = 10060\n\tWSAECONNREFUSED                                                           syscall.Errno = 10061\n\tWSAELOOP                                                                  syscall.Errno = 10062\n\tWSAENAMETOOLONG                                                           syscall.Errno = 10063\n\tWSAEHOSTDOWN                                                              syscall.Errno = 10064\n\tWSAEHOSTUNREACH                                                           syscall.Errno = 10065\n\tWSAENOTEMPTY                                                              syscall.Errno = 10066\n\tWSAEPROCLIM                                                               syscall.Errno = 10067\n\tWSAEUSERS                                                                 syscall.Errno = 10068\n\tWSAEDQUOT                                                                 syscall.Errno = 10069\n\tWSAESTALE                                                                 syscall.Errno = 10070\n\tWSAEREMOTE                                                                syscall.Errno = 10071\n\tWSASYSNOTREADY                                                            syscall.Errno = 10091\n\tWSAVERNOTSUPPORTED                                                        syscall.Errno = 10092\n\tWSANOTINITIALISED                                                         syscall.Errno = 10093\n\tWSAEDISCON                                                                syscall.Errno = 10101\n\tWSAENOMORE                                                                syscall.Errno = 10102\n\tWSAECANCELLED                                                             syscall.Errno = 10103\n\tWSAEINVALIDPROCTABLE                                                      syscall.Errno = 10104\n\tWSAEINVALIDPROVIDER                                                       syscall.Errno = 10105\n\tWSAEPROVIDERFAILEDINIT                                                    syscall.Errno = 10106\n\tWSASYSCALLFAILURE                                                         syscall.Errno = 10107\n\tWSASERVICE_NOT_FOUND                                                      syscall.Errno = 10108\n\tWSATYPE_NOT_FOUND                                                         syscall.Errno = 10109\n\tWSA_E_NO_MORE                                                             syscall.Errno = 10110\n\tWSA_E_CANCELLED                                                           syscall.Errno = 10111\n\tWSAEREFUSED                                                               syscall.Errno = 10112\n\tWSAHOST_NOT_FOUND                                                         syscall.Errno = 11001\n\tWSATRY_AGAIN                                                              syscall.Errno = 11002\n\tWSANO_RECOVERY                                                            syscall.Errno = 11003\n\tWSANO_DATA                                                                syscall.Errno = 11004\n\tWSA_QOS_RECEIVERS                                                         syscall.Errno = 11005\n\tWSA_QOS_SENDERS                                                           syscall.Errno = 11006\n\tWSA_QOS_NO_SENDERS                                                        syscall.Errno = 11007\n\tWSA_QOS_NO_RECEIVERS                                                      syscall.Errno = 11008\n\tWSA_QOS_REQUEST_CONFIRMED                                                 syscall.Errno = 11009\n\tWSA_QOS_ADMISSION_FAILURE                                                 syscall.Errno = 11010\n\tWSA_QOS_POLICY_FAILURE                                                    syscall.Errno = 11011\n\tWSA_QOS_BAD_STYLE                                                         syscall.Errno = 11012\n\tWSA_QOS_BAD_OBJECT                                                        syscall.Errno = 11013\n\tWSA_QOS_TRAFFIC_CTRL_ERROR                                                syscall.Errno = 11014\n\tWSA_QOS_GENERIC_ERROR                                                     syscall.Errno = 11015\n\tWSA_QOS_ESERVICETYPE                                                      syscall.Errno = 11016\n\tWSA_QOS_EFLOWSPEC                                                         syscall.Errno = 11017\n\tWSA_QOS_EPROVSPECBUF                                                      syscall.Errno = 11018\n\tWSA_QOS_EFILTERSTYLE                                                      syscall.Errno = 11019\n\tWSA_QOS_EFILTERTYPE                                                       syscall.Errno = 11020\n\tWSA_QOS_EFILTERCOUNT                                                      syscall.Errno = 11021\n\tWSA_QOS_EOBJLENGTH                                                        syscall.Errno = 11022\n\tWSA_QOS_EFLOWCOUNT                                                        syscall.Errno = 11023\n\tWSA_QOS_EUNKOWNPSOBJ                                                      syscall.Errno = 11024\n\tWSA_QOS_EPOLICYOBJ                                                        syscall.Errno = 11025\n\tWSA_QOS_EFLOWDESC                                                         syscall.Errno = 11026\n\tWSA_QOS_EPSFLOWSPEC                                                       syscall.Errno = 11027\n\tWSA_QOS_EPSFILTERSPEC                                                     syscall.Errno = 11028\n\tWSA_QOS_ESDMODEOBJ                                                        syscall.Errno = 11029\n\tWSA_QOS_ESHAPERATEOBJ                                                     syscall.Errno = 11030\n\tWSA_QOS_RESERVED_PETYPE                                                   syscall.Errno = 11031\n\tWSA_SECURE_HOST_NOT_FOUND                                                 syscall.Errno = 11032\n\tWSA_IPSEC_NAME_POLICY_ERROR                                               syscall.Errno = 11033\n\tERROR_IPSEC_QM_POLICY_EXISTS                                              syscall.Errno = 13000\n\tERROR_IPSEC_QM_POLICY_NOT_FOUND                                           syscall.Errno = 13001\n\tERROR_IPSEC_QM_POLICY_IN_USE                                              syscall.Errno = 13002\n\tERROR_IPSEC_MM_POLICY_EXISTS                                              syscall.Errno = 13003\n\tERROR_IPSEC_MM_POLICY_NOT_FOUND                                           syscall.Errno = 13004\n\tERROR_IPSEC_MM_POLICY_IN_USE                                              syscall.Errno = 13005\n\tERROR_IPSEC_MM_FILTER_EXISTS                                              syscall.Errno = 13006\n\tERROR_IPSEC_MM_FILTER_NOT_FOUND                                           syscall.Errno = 13007\n\tERROR_IPSEC_TRANSPORT_FILTER_EXISTS                                       syscall.Errno = 13008\n\tERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND                                    syscall.Errno = 13009\n\tERROR_IPSEC_MM_AUTH_EXISTS                                                syscall.Errno = 13010\n\tERROR_IPSEC_MM_AUTH_NOT_FOUND                                             syscall.Errno = 13011\n\tERROR_IPSEC_MM_AUTH_IN_USE                                                syscall.Errno = 13012\n\tERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND                                   syscall.Errno = 13013\n\tERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND                                     syscall.Errno = 13014\n\tERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND                                   syscall.Errno = 13015\n\tERROR_IPSEC_TUNNEL_FILTER_EXISTS                                          syscall.Errno = 13016\n\tERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND                                       syscall.Errno = 13017\n\tERROR_IPSEC_MM_FILTER_PENDING_DELETION                                    syscall.Errno = 13018\n\tERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION                             syscall.Errno = 13019\n\tERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION                                syscall.Errno = 13020\n\tERROR_IPSEC_MM_POLICY_PENDING_DELETION                                    syscall.Errno = 13021\n\tERROR_IPSEC_MM_AUTH_PENDING_DELETION                                      syscall.Errno = 13022\n\tERROR_IPSEC_QM_POLICY_PENDING_DELETION                                    syscall.Errno = 13023\n\tWARNING_IPSEC_MM_POLICY_PRUNED                                            syscall.Errno = 13024\n\tWARNING_IPSEC_QM_POLICY_PRUNED                                            syscall.Errno = 13025\n\tERROR_IPSEC_IKE_NEG_STATUS_BEGIN                                          syscall.Errno = 13800\n\tERROR_IPSEC_IKE_AUTH_FAIL                                                 syscall.Errno = 13801\n\tERROR_IPSEC_IKE_ATTRIB_FAIL                                               syscall.Errno = 13802\n\tERROR_IPSEC_IKE_NEGOTIATION_PENDING                                       syscall.Errno = 13803\n\tERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR                                  syscall.Errno = 13804\n\tERROR_IPSEC_IKE_TIMED_OUT                                                 syscall.Errno = 13805\n\tERROR_IPSEC_IKE_NO_CERT                                                   syscall.Errno = 13806\n\tERROR_IPSEC_IKE_SA_DELETED                                                syscall.Errno = 13807\n\tERROR_IPSEC_IKE_SA_REAPED                                                 syscall.Errno = 13808\n\tERROR_IPSEC_IKE_MM_ACQUIRE_DROP                                           syscall.Errno = 13809\n\tERROR_IPSEC_IKE_QM_ACQUIRE_DROP                                           syscall.Errno = 13810\n\tERROR_IPSEC_IKE_QUEUE_DROP_MM                                             syscall.Errno = 13811\n\tERROR_IPSEC_IKE_QUEUE_DROP_NO_MM                                          syscall.Errno = 13812\n\tERROR_IPSEC_IKE_DROP_NO_RESPONSE                                          syscall.Errno = 13813\n\tERROR_IPSEC_IKE_MM_DELAY_DROP                                             syscall.Errno = 13814\n\tERROR_IPSEC_IKE_QM_DELAY_DROP                                             syscall.Errno = 13815\n\tERROR_IPSEC_IKE_ERROR                                                     syscall.Errno = 13816\n\tERROR_IPSEC_IKE_CRL_FAILED                                                syscall.Errno = 13817\n\tERROR_IPSEC_IKE_INVALID_KEY_USAGE                                         syscall.Errno = 13818\n\tERROR_IPSEC_IKE_INVALID_CERT_TYPE                                         syscall.Errno = 13819\n\tERROR_IPSEC_IKE_NO_PRIVATE_KEY                                            syscall.Errno = 13820\n\tERROR_IPSEC_IKE_SIMULTANEOUS_REKEY                                        syscall.Errno = 13821\n\tERROR_IPSEC_IKE_DH_FAIL                                                   syscall.Errno = 13822\n\tERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED                           syscall.Errno = 13823\n\tERROR_IPSEC_IKE_INVALID_HEADER                                            syscall.Errno = 13824\n\tERROR_IPSEC_IKE_NO_POLICY                                                 syscall.Errno = 13825\n\tERROR_IPSEC_IKE_INVALID_SIGNATURE                                         syscall.Errno = 13826\n\tERROR_IPSEC_IKE_KERBEROS_ERROR                                            syscall.Errno = 13827\n\tERROR_IPSEC_IKE_NO_PUBLIC_KEY                                             syscall.Errno = 13828\n\tERROR_IPSEC_IKE_PROCESS_ERR                                               syscall.Errno = 13829\n\tERROR_IPSEC_IKE_PROCESS_ERR_SA                                            syscall.Errno = 13830\n\tERROR_IPSEC_IKE_PROCESS_ERR_PROP                                          syscall.Errno = 13831\n\tERROR_IPSEC_IKE_PROCESS_ERR_TRANS                                         syscall.Errno = 13832\n\tERROR_IPSEC_IKE_PROCESS_ERR_KE                                            syscall.Errno = 13833\n\tERROR_IPSEC_IKE_PROCESS_ERR_ID                                            syscall.Errno = 13834\n\tERROR_IPSEC_IKE_PROCESS_ERR_CERT                                          syscall.Errno = 13835\n\tERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ                                      syscall.Errno = 13836\n\tERROR_IPSEC_IKE_PROCESS_ERR_HASH                                          syscall.Errno = 13837\n\tERROR_IPSEC_IKE_PROCESS_ERR_SIG                                           syscall.Errno = 13838\n\tERROR_IPSEC_IKE_PROCESS_ERR_NONCE                                         syscall.Errno = 13839\n\tERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY                                        syscall.Errno = 13840\n\tERROR_IPSEC_IKE_PROCESS_ERR_DELETE                                        syscall.Errno = 13841\n\tERROR_IPSEC_IKE_PROCESS_ERR_VENDOR                                        syscall.Errno = 13842\n\tERROR_IPSEC_IKE_INVALID_PAYLOAD                                           syscall.Errno = 13843\n\tERROR_IPSEC_IKE_LOAD_SOFT_SA                                              syscall.Errno = 13844\n\tERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN                                         syscall.Errno = 13845\n\tERROR_IPSEC_IKE_INVALID_COOKIE                                            syscall.Errno = 13846\n\tERROR_IPSEC_IKE_NO_PEER_CERT                                              syscall.Errno = 13847\n\tERROR_IPSEC_IKE_PEER_CRL_FAILED                                           syscall.Errno = 13848\n\tERROR_IPSEC_IKE_POLICY_CHANGE                                             syscall.Errno = 13849\n\tERROR_IPSEC_IKE_NO_MM_POLICY                                              syscall.Errno = 13850\n\tERROR_IPSEC_IKE_NOTCBPRIV                                                 syscall.Errno = 13851\n\tERROR_IPSEC_IKE_SECLOADFAIL                                               syscall.Errno = 13852\n\tERROR_IPSEC_IKE_FAILSSPINIT                                               syscall.Errno = 13853\n\tERROR_IPSEC_IKE_FAILQUERYSSP                                              syscall.Errno = 13854\n\tERROR_IPSEC_IKE_SRVACQFAIL                                                syscall.Errno = 13855\n\tERROR_IPSEC_IKE_SRVQUERYCRED                                              syscall.Errno = 13856\n\tERROR_IPSEC_IKE_GETSPIFAIL                                                syscall.Errno = 13857\n\tERROR_IPSEC_IKE_INVALID_FILTER                                            syscall.Errno = 13858\n\tERROR_IPSEC_IKE_OUT_OF_MEMORY                                             syscall.Errno = 13859\n\tERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED                                     syscall.Errno = 13860\n\tERROR_IPSEC_IKE_INVALID_POLICY                                            syscall.Errno = 13861\n\tERROR_IPSEC_IKE_UNKNOWN_DOI                                               syscall.Errno = 13862\n\tERROR_IPSEC_IKE_INVALID_SITUATION                                         syscall.Errno = 13863\n\tERROR_IPSEC_IKE_DH_FAILURE                                                syscall.Errno = 13864\n\tERROR_IPSEC_IKE_INVALID_GROUP                                             syscall.Errno = 13865\n\tERROR_IPSEC_IKE_ENCRYPT                                                   syscall.Errno = 13866\n\tERROR_IPSEC_IKE_DECRYPT                                                   syscall.Errno = 13867\n\tERROR_IPSEC_IKE_POLICY_MATCH                                              syscall.Errno = 13868\n\tERROR_IPSEC_IKE_UNSUPPORTED_ID                                            syscall.Errno = 13869\n\tERROR_IPSEC_IKE_INVALID_HASH                                              syscall.Errno = 13870\n\tERROR_IPSEC_IKE_INVALID_HASH_ALG                                          syscall.Errno = 13871\n\tERROR_IPSEC_IKE_INVALID_HASH_SIZE                                         syscall.Errno = 13872\n\tERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG                                       syscall.Errno = 13873\n\tERROR_IPSEC_IKE_INVALID_AUTH_ALG                                          syscall.Errno = 13874\n\tERROR_IPSEC_IKE_INVALID_SIG                                               syscall.Errno = 13875\n\tERROR_IPSEC_IKE_LOAD_FAILED                                               syscall.Errno = 13876\n\tERROR_IPSEC_IKE_RPC_DELETE                                                syscall.Errno = 13877\n\tERROR_IPSEC_IKE_BENIGN_REINIT                                             syscall.Errno = 13878\n\tERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY                         syscall.Errno = 13879\n\tERROR_IPSEC_IKE_INVALID_MAJOR_VERSION                                     syscall.Errno = 13880\n\tERROR_IPSEC_IKE_INVALID_CERT_KEYLEN                                       syscall.Errno = 13881\n\tERROR_IPSEC_IKE_MM_LIMIT                                                  syscall.Errno = 13882\n\tERROR_IPSEC_IKE_NEGOTIATION_DISABLED                                      syscall.Errno = 13883\n\tERROR_IPSEC_IKE_QM_LIMIT                                                  syscall.Errno = 13884\n\tERROR_IPSEC_IKE_MM_EXPIRED                                                syscall.Errno = 13885\n\tERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID                                   syscall.Errno = 13886\n\tERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH                                syscall.Errno = 13887\n\tERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID                                     syscall.Errno = 13888\n\tERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD                                      syscall.Errno = 13889\n\tERROR_IPSEC_IKE_DOS_COOKIE_SENT                                           syscall.Errno = 13890\n\tERROR_IPSEC_IKE_SHUTTING_DOWN                                             syscall.Errno = 13891\n\tERROR_IPSEC_IKE_CGA_AUTH_FAILED                                           syscall.Errno = 13892\n\tERROR_IPSEC_IKE_PROCESS_ERR_NATOA                                         syscall.Errno = 13893\n\tERROR_IPSEC_IKE_INVALID_MM_FOR_QM                                         syscall.Errno = 13894\n\tERROR_IPSEC_IKE_QM_EXPIRED                                                syscall.Errno = 13895\n\tERROR_IPSEC_IKE_TOO_MANY_FILTERS                                          syscall.Errno = 13896\n\tERROR_IPSEC_IKE_NEG_STATUS_END                                            syscall.Errno = 13897\n\tERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL                                     syscall.Errno = 13898\n\tERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE                               syscall.Errno = 13899\n\tERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING                                syscall.Errno = 13900\n\tERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING                  syscall.Errno = 13901\n\tERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS                                      syscall.Errno = 13902\n\tERROR_IPSEC_IKE_RATELIMIT_DROP                                            syscall.Errno = 13903\n\tERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE                                syscall.Errno = 13904\n\tERROR_IPSEC_IKE_AUTHORIZATION_FAILURE                                     syscall.Errno = 13905\n\tERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE                         syscall.Errno = 13906\n\tERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY                 syscall.Errno = 13907\n\tERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE             syscall.Errno = 13908\n\tERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END                                   syscall.Errno = 13909\n\tERROR_IPSEC_BAD_SPI                                                       syscall.Errno = 13910\n\tERROR_IPSEC_SA_LIFETIME_EXPIRED                                           syscall.Errno = 13911\n\tERROR_IPSEC_WRONG_SA                                                      syscall.Errno = 13912\n\tERROR_IPSEC_REPLAY_CHECK_FAILED                                           syscall.Errno = 13913\n\tERROR_IPSEC_INVALID_PACKET                                                syscall.Errno = 13914\n\tERROR_IPSEC_INTEGRITY_CHECK_FAILED                                        syscall.Errno = 13915\n\tERROR_IPSEC_CLEAR_TEXT_DROP                                               syscall.Errno = 13916\n\tERROR_IPSEC_AUTH_FIREWALL_DROP                                            syscall.Errno = 13917\n\tERROR_IPSEC_THROTTLE_DROP                                                 syscall.Errno = 13918\n\tERROR_IPSEC_DOSP_BLOCK                                                    syscall.Errno = 13925\n\tERROR_IPSEC_DOSP_RECEIVED_MULTICAST                                       syscall.Errno = 13926\n\tERROR_IPSEC_DOSP_INVALID_PACKET                                           syscall.Errno = 13927\n\tERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED                                      syscall.Errno = 13928\n\tERROR_IPSEC_DOSP_MAX_ENTRIES                                              syscall.Errno = 13929\n\tERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED                                       syscall.Errno = 13930\n\tERROR_IPSEC_DOSP_NOT_INSTALLED                                            syscall.Errno = 13931\n\tERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES                              syscall.Errno = 13932\n\tERROR_SXS_SECTION_NOT_FOUND                                               syscall.Errno = 14000\n\tERROR_SXS_CANT_GEN_ACTCTX                                                 syscall.Errno = 14001\n\tERROR_SXS_INVALID_ACTCTXDATA_FORMAT                                       syscall.Errno = 14002\n\tERROR_SXS_ASSEMBLY_NOT_FOUND                                              syscall.Errno = 14003\n\tERROR_SXS_MANIFEST_FORMAT_ERROR                                           syscall.Errno = 14004\n\tERROR_SXS_MANIFEST_PARSE_ERROR                                            syscall.Errno = 14005\n\tERROR_SXS_ACTIVATION_CONTEXT_DISABLED                                     syscall.Errno = 14006\n\tERROR_SXS_KEY_NOT_FOUND                                                   syscall.Errno = 14007\n\tERROR_SXS_VERSION_CONFLICT                                                syscall.Errno = 14008\n\tERROR_SXS_WRONG_SECTION_TYPE                                              syscall.Errno = 14009\n\tERROR_SXS_THREAD_QUERIES_DISABLED                                         syscall.Errno = 14010\n\tERROR_SXS_PROCESS_DEFAULT_ALREADY_SET                                     syscall.Errno = 14011\n\tERROR_SXS_UNKNOWN_ENCODING_GROUP                                          syscall.Errno = 14012\n\tERROR_SXS_UNKNOWN_ENCODING                                                syscall.Errno = 14013\n\tERROR_SXS_INVALID_XML_NAMESPACE_URI                                       syscall.Errno = 14014\n\tERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED                          syscall.Errno = 14015\n\tERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED                          syscall.Errno = 14016\n\tERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE                             syscall.Errno = 14017\n\tERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE                     syscall.Errno = 14018\n\tERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE                     syscall.Errno = 14019\n\tERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT                  syscall.Errno = 14020\n\tERROR_SXS_DUPLICATE_DLL_NAME                                              syscall.Errno = 14021\n\tERROR_SXS_DUPLICATE_WINDOWCLASS_NAME                                      syscall.Errno = 14022\n\tERROR_SXS_DUPLICATE_CLSID                                                 syscall.Errno = 14023\n\tERROR_SXS_DUPLICATE_IID                                                   syscall.Errno = 14024\n\tERROR_SXS_DUPLICATE_TLBID                                                 syscall.Errno = 14025\n\tERROR_SXS_DUPLICATE_PROGID                                                syscall.Errno = 14026\n\tERROR_SXS_DUPLICATE_ASSEMBLY_NAME                                         syscall.Errno = 14027\n\tERROR_SXS_FILE_HASH_MISMATCH                                              syscall.Errno = 14028\n\tERROR_SXS_POLICY_PARSE_ERROR                                              syscall.Errno = 14029\n\tERROR_SXS_XML_E_MISSINGQUOTE                                              syscall.Errno = 14030\n\tERROR_SXS_XML_E_COMMENTSYNTAX                                             syscall.Errno = 14031\n\tERROR_SXS_XML_E_BADSTARTNAMECHAR                                          syscall.Errno = 14032\n\tERROR_SXS_XML_E_BADNAMECHAR                                               syscall.Errno = 14033\n\tERROR_SXS_XML_E_BADCHARINSTRING                                           syscall.Errno = 14034\n\tERROR_SXS_XML_E_XMLDECLSYNTAX                                             syscall.Errno = 14035\n\tERROR_SXS_XML_E_BADCHARDATA                                               syscall.Errno = 14036\n\tERROR_SXS_XML_E_MISSINGWHITESPACE                                         syscall.Errno = 14037\n\tERROR_SXS_XML_E_EXPECTINGTAGEND                                           syscall.Errno = 14038\n\tERROR_SXS_XML_E_MISSINGSEMICOLON                                          syscall.Errno = 14039\n\tERROR_SXS_XML_E_UNBALANCEDPAREN                                           syscall.Errno = 14040\n\tERROR_SXS_XML_E_INTERNALERROR                                             syscall.Errno = 14041\n\tERROR_SXS_XML_E_UNEXPECTED_WHITESPACE                                     syscall.Errno = 14042\n\tERROR_SXS_XML_E_INCOMPLETE_ENCODING                                       syscall.Errno = 14043\n\tERROR_SXS_XML_E_MISSING_PAREN                                             syscall.Errno = 14044\n\tERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE                                       syscall.Errno = 14045\n\tERROR_SXS_XML_E_MULTIPLE_COLONS                                           syscall.Errno = 14046\n\tERROR_SXS_XML_E_INVALID_DECIMAL                                           syscall.Errno = 14047\n\tERROR_SXS_XML_E_INVALID_HEXIDECIMAL                                       syscall.Errno = 14048\n\tERROR_SXS_XML_E_INVALID_UNICODE                                           syscall.Errno = 14049\n\tERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK                                  syscall.Errno = 14050\n\tERROR_SXS_XML_E_UNEXPECTEDENDTAG                                          syscall.Errno = 14051\n\tERROR_SXS_XML_E_UNCLOSEDTAG                                               syscall.Errno = 14052\n\tERROR_SXS_XML_E_DUPLICATEATTRIBUTE                                        syscall.Errno = 14053\n\tERROR_SXS_XML_E_MULTIPLEROOTS                                             syscall.Errno = 14054\n\tERROR_SXS_XML_E_INVALIDATROOTLEVEL                                        syscall.Errno = 14055\n\tERROR_SXS_XML_E_BADXMLDECL                                                syscall.Errno = 14056\n\tERROR_SXS_XML_E_MISSINGROOT                                               syscall.Errno = 14057\n\tERROR_SXS_XML_E_UNEXPECTEDEOF                                             syscall.Errno = 14058\n\tERROR_SXS_XML_E_BADPEREFINSUBSET                                          syscall.Errno = 14059\n\tERROR_SXS_XML_E_UNCLOSEDSTARTTAG                                          syscall.Errno = 14060\n\tERROR_SXS_XML_E_UNCLOSEDENDTAG                                            syscall.Errno = 14061\n\tERROR_SXS_XML_E_UNCLOSEDSTRING                                            syscall.Errno = 14062\n\tERROR_SXS_XML_E_UNCLOSEDCOMMENT                                           syscall.Errno = 14063\n\tERROR_SXS_XML_E_UNCLOSEDDECL                                              syscall.Errno = 14064\n\tERROR_SXS_XML_E_UNCLOSEDCDATA                                             syscall.Errno = 14065\n\tERROR_SXS_XML_E_RESERVEDNAMESPACE                                         syscall.Errno = 14066\n\tERROR_SXS_XML_E_INVALIDENCODING                                           syscall.Errno = 14067\n\tERROR_SXS_XML_E_INVALIDSWITCH                                             syscall.Errno = 14068\n\tERROR_SXS_XML_E_BADXMLCASE                                                syscall.Errno = 14069\n\tERROR_SXS_XML_E_INVALID_STANDALONE                                        syscall.Errno = 14070\n\tERROR_SXS_XML_E_UNEXPECTED_STANDALONE                                     syscall.Errno = 14071\n\tERROR_SXS_XML_E_INVALID_VERSION                                           syscall.Errno = 14072\n\tERROR_SXS_XML_E_MISSINGEQUALS                                             syscall.Errno = 14073\n\tERROR_SXS_PROTECTION_RECOVERY_FAILED                                      syscall.Errno = 14074\n\tERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT                                 syscall.Errno = 14075\n\tERROR_SXS_PROTECTION_CATALOG_NOT_VALID                                    syscall.Errno = 14076\n\tERROR_SXS_UNTRANSLATABLE_HRESULT                                          syscall.Errno = 14077\n\tERROR_SXS_PROTECTION_CATALOG_FILE_MISSING                                 syscall.Errno = 14078\n\tERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE                             syscall.Errno = 14079\n\tERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME                        syscall.Errno = 14080\n\tERROR_SXS_ASSEMBLY_MISSING                                                syscall.Errno = 14081\n\tERROR_SXS_CORRUPT_ACTIVATION_STACK                                        syscall.Errno = 14082\n\tERROR_SXS_CORRUPTION                                                      syscall.Errno = 14083\n\tERROR_SXS_EARLY_DEACTIVATION                                              syscall.Errno = 14084\n\tERROR_SXS_INVALID_DEACTIVATION                                            syscall.Errno = 14085\n\tERROR_SXS_MULTIPLE_DEACTIVATION                                           syscall.Errno = 14086\n\tERROR_SXS_PROCESS_TERMINATION_REQUESTED                                   syscall.Errno = 14087\n\tERROR_SXS_RELEASE_ACTIVATION_CONTEXT                                      syscall.Errno = 14088\n\tERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY                         syscall.Errno = 14089\n\tERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE                                syscall.Errno = 14090\n\tERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME                                 syscall.Errno = 14091\n\tERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE                                    syscall.Errno = 14092\n\tERROR_SXS_IDENTITY_PARSE_ERROR                                            syscall.Errno = 14093\n\tERROR_MALFORMED_SUBSTITUTION_STRING                                       syscall.Errno = 14094\n\tERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN                                      syscall.Errno = 14095\n\tERROR_UNMAPPED_SUBSTITUTION_STRING                                        syscall.Errno = 14096\n\tERROR_SXS_ASSEMBLY_NOT_LOCKED                                             syscall.Errno = 14097\n\tERROR_SXS_COMPONENT_STORE_CORRUPT                                         syscall.Errno = 14098\n\tERROR_ADVANCED_INSTALLER_FAILED                                           syscall.Errno = 14099\n\tERROR_XML_ENCODING_MISMATCH                                               syscall.Errno = 14100\n\tERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT                   syscall.Errno = 14101\n\tERROR_SXS_IDENTITIES_DIFFERENT                                            syscall.Errno = 14102\n\tERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT                                    syscall.Errno = 14103\n\tERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY                                       syscall.Errno = 14104\n\tERROR_SXS_MANIFEST_TOO_BIG                                                syscall.Errno = 14105\n\tERROR_SXS_SETTING_NOT_REGISTERED                                          syscall.Errno = 14106\n\tERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE                                  syscall.Errno = 14107\n\tERROR_SMI_PRIMITIVE_INSTALLER_FAILED                                      syscall.Errno = 14108\n\tERROR_GENERIC_COMMAND_FAILED                                              syscall.Errno = 14109\n\tERROR_SXS_FILE_HASH_MISSING                                               syscall.Errno = 14110\n\tERROR_SXS_DUPLICATE_ACTIVATABLE_CLASS                                     syscall.Errno = 14111\n\tERROR_EVT_INVALID_CHANNEL_PATH                                            syscall.Errno = 15000\n\tERROR_EVT_INVALID_QUERY                                                   syscall.Errno = 15001\n\tERROR_EVT_PUBLISHER_METADATA_NOT_FOUND                                    syscall.Errno = 15002\n\tERROR_EVT_EVENT_TEMPLATE_NOT_FOUND                                        syscall.Errno = 15003\n\tERROR_EVT_INVALID_PUBLISHER_NAME                                          syscall.Errno = 15004\n\tERROR_EVT_INVALID_EVENT_DATA                                              syscall.Errno = 15005\n\tERROR_EVT_CHANNEL_NOT_FOUND                                               syscall.Errno = 15007\n\tERROR_EVT_MALFORMED_XML_TEXT                                              syscall.Errno = 15008\n\tERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL                                  syscall.Errno = 15009\n\tERROR_EVT_CONFIGURATION_ERROR                                             syscall.Errno = 15010\n\tERROR_EVT_QUERY_RESULT_STALE                                              syscall.Errno = 15011\n\tERROR_EVT_QUERY_RESULT_INVALID_POSITION                                   syscall.Errno = 15012\n\tERROR_EVT_NON_VALIDATING_MSXML                                            syscall.Errno = 15013\n\tERROR_EVT_FILTER_ALREADYSCOPED                                            syscall.Errno = 15014\n\tERROR_EVT_FILTER_NOTELTSET                                                syscall.Errno = 15015\n\tERROR_EVT_FILTER_INVARG                                                   syscall.Errno = 15016\n\tERROR_EVT_FILTER_INVTEST                                                  syscall.Errno = 15017\n\tERROR_EVT_FILTER_INVTYPE                                                  syscall.Errno = 15018\n\tERROR_EVT_FILTER_PARSEERR                                                 syscall.Errno = 15019\n\tERROR_EVT_FILTER_UNSUPPORTEDOP                                            syscall.Errno = 15020\n\tERROR_EVT_FILTER_UNEXPECTEDTOKEN                                          syscall.Errno = 15021\n\tERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL                   syscall.Errno = 15022\n\tERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE                                  syscall.Errno = 15023\n\tERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE                                syscall.Errno = 15024\n\tERROR_EVT_CHANNEL_CANNOT_ACTIVATE                                         syscall.Errno = 15025\n\tERROR_EVT_FILTER_TOO_COMPLEX                                              syscall.Errno = 15026\n\tERROR_EVT_MESSAGE_NOT_FOUND                                               syscall.Errno = 15027\n\tERROR_EVT_MESSAGE_ID_NOT_FOUND                                            syscall.Errno = 15028\n\tERROR_EVT_UNRESOLVED_VALUE_INSERT                                         syscall.Errno = 15029\n\tERROR_EVT_UNRESOLVED_PARAMETER_INSERT                                     syscall.Errno = 15030\n\tERROR_EVT_MAX_INSERTS_REACHED                                             syscall.Errno = 15031\n\tERROR_EVT_EVENT_DEFINITION_NOT_FOUND                                      syscall.Errno = 15032\n\tERROR_EVT_MESSAGE_LOCALE_NOT_FOUND                                        syscall.Errno = 15033\n\tERROR_EVT_VERSION_TOO_OLD                                                 syscall.Errno = 15034\n\tERROR_EVT_VERSION_TOO_NEW                                                 syscall.Errno = 15035\n\tERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY                                    syscall.Errno = 15036\n\tERROR_EVT_PUBLISHER_DISABLED                                              syscall.Errno = 15037\n\tERROR_EVT_FILTER_OUT_OF_RANGE                                             syscall.Errno = 15038\n\tERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE                                     syscall.Errno = 15080\n\tERROR_EC_LOG_DISABLED                                                     syscall.Errno = 15081\n\tERROR_EC_CIRCULAR_FORWARDING                                              syscall.Errno = 15082\n\tERROR_EC_CREDSTORE_FULL                                                   syscall.Errno = 15083\n\tERROR_EC_CRED_NOT_FOUND                                                   syscall.Errno = 15084\n\tERROR_EC_NO_ACTIVE_CHANNEL                                                syscall.Errno = 15085\n\tERROR_MUI_FILE_NOT_FOUND                                                  syscall.Errno = 15100\n\tERROR_MUI_INVALID_FILE                                                    syscall.Errno = 15101\n\tERROR_MUI_INVALID_RC_CONFIG                                               syscall.Errno = 15102\n\tERROR_MUI_INVALID_LOCALE_NAME                                             syscall.Errno = 15103\n\tERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME                                   syscall.Errno = 15104\n\tERROR_MUI_FILE_NOT_LOADED                                                 syscall.Errno = 15105\n\tERROR_RESOURCE_ENUM_USER_STOP                                             syscall.Errno = 15106\n\tERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED                               syscall.Errno = 15107\n\tERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME                                syscall.Errno = 15108\n\tERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE                          syscall.Errno = 15110\n\tERROR_MRM_INVALID_PRICONFIG                                               syscall.Errno = 15111\n\tERROR_MRM_INVALID_FILE_TYPE                                               syscall.Errno = 15112\n\tERROR_MRM_UNKNOWN_QUALIFIER                                               syscall.Errno = 15113\n\tERROR_MRM_INVALID_QUALIFIER_VALUE                                         syscall.Errno = 15114\n\tERROR_MRM_NO_CANDIDATE                                                    syscall.Errno = 15115\n\tERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE                                   syscall.Errno = 15116\n\tERROR_MRM_RESOURCE_TYPE_MISMATCH                                          syscall.Errno = 15117\n\tERROR_MRM_DUPLICATE_MAP_NAME                                              syscall.Errno = 15118\n\tERROR_MRM_DUPLICATE_ENTRY                                                 syscall.Errno = 15119\n\tERROR_MRM_INVALID_RESOURCE_IDENTIFIER                                     syscall.Errno = 15120\n\tERROR_MRM_FILEPATH_TOO_LONG                                               syscall.Errno = 15121\n\tERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE                                      syscall.Errno = 15122\n\tERROR_MRM_INVALID_PRI_FILE                                                syscall.Errno = 15126\n\tERROR_MRM_NAMED_RESOURCE_NOT_FOUND                                        syscall.Errno = 15127\n\tERROR_MRM_MAP_NOT_FOUND                                                   syscall.Errno = 15135\n\tERROR_MRM_UNSUPPORTED_PROFILE_TYPE                                        syscall.Errno = 15136\n\tERROR_MRM_INVALID_QUALIFIER_OPERATOR                                      syscall.Errno = 15137\n\tERROR_MRM_INDETERMINATE_QUALIFIER_VALUE                                   syscall.Errno = 15138\n\tERROR_MRM_AUTOMERGE_ENABLED                                               syscall.Errno = 15139\n\tERROR_MRM_TOO_MANY_RESOURCES                                              syscall.Errno = 15140\n\tERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE                                 syscall.Errno = 15141\n\tERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE                  syscall.Errno = 15142\n\tERROR_MRM_NO_CURRENT_VIEW_ON_THREAD                                       syscall.Errno = 15143\n\tERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST                            syscall.Errno = 15144\n\tERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT                         syscall.Errno = 15145\n\tERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE                              syscall.Errno = 15146\n\tERROR_MRM_GENERATION_COUNT_MISMATCH                                       syscall.Errno = 15147\n\tERROR_PRI_MERGE_VERSION_MISMATCH                                          syscall.Errno = 15148\n\tERROR_PRI_MERGE_MISSING_SCHEMA                                            syscall.Errno = 15149\n\tERROR_PRI_MERGE_LOAD_FILE_FAILED                                          syscall.Errno = 15150\n\tERROR_PRI_MERGE_ADD_FILE_FAILED                                           syscall.Errno = 15151\n\tERROR_PRI_MERGE_WRITE_FILE_FAILED                                         syscall.Errno = 15152\n\tERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED                     syscall.Errno = 15153\n\tERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED                        syscall.Errno = 15154\n\tERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED                               syscall.Errno = 15155\n\tERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED                                     syscall.Errno = 15156\n\tERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED                                 syscall.Errno = 15157\n\tERROR_PRI_MERGE_INVALID_FILE_NAME                                         syscall.Errno = 15158\n\tERROR_MRM_PACKAGE_NOT_FOUND                                               syscall.Errno = 15159\n\tERROR_MRM_MISSING_DEFAULT_LANGUAGE                                        syscall.Errno = 15160\n\tERROR_MCA_INVALID_CAPABILITIES_STRING                                     syscall.Errno = 15200\n\tERROR_MCA_INVALID_VCP_VERSION                                             syscall.Errno = 15201\n\tERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION                             syscall.Errno = 15202\n\tERROR_MCA_MCCS_VERSION_MISMATCH                                           syscall.Errno = 15203\n\tERROR_MCA_UNSUPPORTED_MCCS_VERSION                                        syscall.Errno = 15204\n\tERROR_MCA_INTERNAL_ERROR                                                  syscall.Errno = 15205\n\tERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED                                syscall.Errno = 15206\n\tERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE                                   syscall.Errno = 15207\n\tERROR_AMBIGUOUS_SYSTEM_DEVICE                                             syscall.Errno = 15250\n\tERROR_SYSTEM_DEVICE_NOT_FOUND                                             syscall.Errno = 15299\n\tERROR_HASH_NOT_SUPPORTED                                                  syscall.Errno = 15300\n\tERROR_HASH_NOT_PRESENT                                                    syscall.Errno = 15301\n\tERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED                                syscall.Errno = 15321\n\tERROR_GPIO_CLIENT_INFORMATION_INVALID                                     syscall.Errno = 15322\n\tERROR_GPIO_VERSION_NOT_SUPPORTED                                          syscall.Errno = 15323\n\tERROR_GPIO_INVALID_REGISTRATION_PACKET                                    syscall.Errno = 15324\n\tERROR_GPIO_OPERATION_DENIED                                               syscall.Errno = 15325\n\tERROR_GPIO_INCOMPATIBLE_CONNECT_MODE                                      syscall.Errno = 15326\n\tERROR_GPIO_INTERRUPT_ALREADY_UNMASKED                                     syscall.Errno = 15327\n\tERROR_CANNOT_SWITCH_RUNLEVEL                                              syscall.Errno = 15400\n\tERROR_INVALID_RUNLEVEL_SETTING                                            syscall.Errno = 15401\n\tERROR_RUNLEVEL_SWITCH_TIMEOUT                                             syscall.Errno = 15402\n\tERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT                                       syscall.Errno = 15403\n\tERROR_RUNLEVEL_SWITCH_IN_PROGRESS                                         syscall.Errno = 15404\n\tERROR_SERVICES_FAILED_AUTOSTART                                           syscall.Errno = 15405\n\tERROR_COM_TASK_STOP_PENDING                                               syscall.Errno = 15501\n\tERROR_INSTALL_OPEN_PACKAGE_FAILED                                         syscall.Errno = 15600\n\tERROR_INSTALL_PACKAGE_NOT_FOUND                                           syscall.Errno = 15601\n\tERROR_INSTALL_INVALID_PACKAGE                                             syscall.Errno = 15602\n\tERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED                                   syscall.Errno = 15603\n\tERROR_INSTALL_OUT_OF_DISK_SPACE                                           syscall.Errno = 15604\n\tERROR_INSTALL_NETWORK_FAILURE                                             syscall.Errno = 15605\n\tERROR_INSTALL_REGISTRATION_FAILURE                                        syscall.Errno = 15606\n\tERROR_INSTALL_DEREGISTRATION_FAILURE                                      syscall.Errno = 15607\n\tERROR_INSTALL_CANCEL                                                      syscall.Errno = 15608\n\tERROR_INSTALL_FAILED                                                      syscall.Errno = 15609\n\tERROR_REMOVE_FAILED                                                       syscall.Errno = 15610\n\tERROR_PACKAGE_ALREADY_EXISTS                                              syscall.Errno = 15611\n\tERROR_NEEDS_REMEDIATION                                                   syscall.Errno = 15612\n\tERROR_INSTALL_PREREQUISITE_FAILED                                         syscall.Errno = 15613\n\tERROR_PACKAGE_REPOSITORY_CORRUPTED                                        syscall.Errno = 15614\n\tERROR_INSTALL_POLICY_FAILURE                                              syscall.Errno = 15615\n\tERROR_PACKAGE_UPDATING                                                    syscall.Errno = 15616\n\tERROR_DEPLOYMENT_BLOCKED_BY_POLICY                                        syscall.Errno = 15617\n\tERROR_PACKAGES_IN_USE                                                     syscall.Errno = 15618\n\tERROR_RECOVERY_FILE_CORRUPT                                               syscall.Errno = 15619\n\tERROR_INVALID_STAGED_SIGNATURE                                            syscall.Errno = 15620\n\tERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED                      syscall.Errno = 15621\n\tERROR_INSTALL_PACKAGE_DOWNGRADE                                           syscall.Errno = 15622\n\tERROR_SYSTEM_NEEDS_REMEDIATION                                            syscall.Errno = 15623\n\tERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN                                     syscall.Errno = 15624\n\tERROR_RESILIENCY_FILE_CORRUPT                                             syscall.Errno = 15625\n\tERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING                                syscall.Errno = 15626\n\tERROR_PACKAGE_MOVE_FAILED                                                 syscall.Errno = 15627\n\tERROR_INSTALL_VOLUME_NOT_EMPTY                                            syscall.Errno = 15628\n\tERROR_INSTALL_VOLUME_OFFLINE                                              syscall.Errno = 15629\n\tERROR_INSTALL_VOLUME_CORRUPT                                              syscall.Errno = 15630\n\tERROR_NEEDS_REGISTRATION                                                  syscall.Errno = 15631\n\tERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE                                syscall.Errno = 15632\n\tERROR_DEV_SIDELOAD_LIMIT_EXCEEDED                                         syscall.Errno = 15633\n\tERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE                      syscall.Errno = 15634\n\tERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM                                 syscall.Errno = 15635\n\tERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING                                   syscall.Errno = 15636\n\tERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE                   syscall.Errno = 15637\n\tERROR_PACKAGE_STAGING_ONHOLD                                              syscall.Errno = 15638\n\tERROR_INSTALL_INVALID_RELATED_SET_UPDATE                                  syscall.Errno = 15639\n\tERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY syscall.Errno = 15640\n\tERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF                                  syscall.Errno = 15641\n\tERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED        syscall.Errno = 15642\n\tERROR_PACKAGES_REPUTATION_CHECK_FAILED                                    syscall.Errno = 15643\n\tERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT                                  syscall.Errno = 15644\n\tERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED                                     syscall.Errno = 15645\n\tERROR_APPINSTALLER_ACTIVATION_BLOCKED                                     syscall.Errno = 15646\n\tERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED                        syscall.Errno = 15647\n\tERROR_APPX_RAW_DATA_WRITE_FAILED                                          syscall.Errno = 15648\n\tERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_PACKAGE                         syscall.Errno = 15649\n\tERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_MACHINE                         syscall.Errno = 15650\n\tERROR_DEPLOYMENT_BLOCKED_BY_PROFILE_POLICY                                syscall.Errno = 15651\n\tERROR_DEPLOYMENT_FAILED_CONFLICTING_MUTABLE_PACKAGE_DIRECTORY             syscall.Errno = 15652\n\tERROR_SINGLETON_RESOURCE_INSTALLED_IN_ACTIVE_USER                         syscall.Errno = 15653\n\tERROR_DIFFERENT_VERSION_OF_PACKAGED_SERVICE_INSTALLED                     syscall.Errno = 15654\n\tERROR_SERVICE_EXISTS_AS_NON_PACKAGED_SERVICE                              syscall.Errno = 15655\n\tERROR_PACKAGED_SERVICE_REQUIRES_ADMIN_PRIVILEGES                          syscall.Errno = 15656\n\tAPPMODEL_ERROR_NO_PACKAGE                                                 syscall.Errno = 15700\n\tAPPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT                                    syscall.Errno = 15701\n\tAPPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT                                   syscall.Errno = 15702\n\tAPPMODEL_ERROR_NO_APPLICATION                                             syscall.Errno = 15703\n\tAPPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED                               syscall.Errno = 15704\n\tAPPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID                                   syscall.Errno = 15705\n\tAPPMODEL_ERROR_PACKAGE_NOT_AVAILABLE                                      syscall.Errno = 15706\n\tAPPMODEL_ERROR_NO_MUTABLE_DIRECTORY                                       syscall.Errno = 15707\n\tERROR_STATE_LOAD_STORE_FAILED                                             syscall.Errno = 15800\n\tERROR_STATE_GET_VERSION_FAILED                                            syscall.Errno = 15801\n\tERROR_STATE_SET_VERSION_FAILED                                            syscall.Errno = 15802\n\tERROR_STATE_STRUCTURED_RESET_FAILED                                       syscall.Errno = 15803\n\tERROR_STATE_OPEN_CONTAINER_FAILED                                         syscall.Errno = 15804\n\tERROR_STATE_CREATE_CONTAINER_FAILED                                       syscall.Errno = 15805\n\tERROR_STATE_DELETE_CONTAINER_FAILED                                       syscall.Errno = 15806\n\tERROR_STATE_READ_SETTING_FAILED                                           syscall.Errno = 15807\n\tERROR_STATE_WRITE_SETTING_FAILED                                          syscall.Errno = 15808\n\tERROR_STATE_DELETE_SETTING_FAILED                                         syscall.Errno = 15809\n\tERROR_STATE_QUERY_SETTING_FAILED                                          syscall.Errno = 15810\n\tERROR_STATE_READ_COMPOSITE_SETTING_FAILED                                 syscall.Errno = 15811\n\tERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED                                syscall.Errno = 15812\n\tERROR_STATE_ENUMERATE_CONTAINER_FAILED                                    syscall.Errno = 15813\n\tERROR_STATE_ENUMERATE_SETTINGS_FAILED                                     syscall.Errno = 15814\n\tERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED                   syscall.Errno = 15815\n\tERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED                             syscall.Errno = 15816\n\tERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED                              syscall.Errno = 15817\n\tERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED                            syscall.Errno = 15818\n\tERROR_API_UNAVAILABLE                                                     syscall.Errno = 15841\n\tSTORE_ERROR_UNLICENSED                                                    syscall.Errno = 15861\n\tSTORE_ERROR_UNLICENSED_USER                                               syscall.Errno = 15862\n\tSTORE_ERROR_PENDING_COM_TRANSACTION                                       syscall.Errno = 15863\n\tSTORE_ERROR_LICENSE_REVOKED                                               syscall.Errno = 15864\n\tSEVERITY_SUCCESS                                                          syscall.Errno = 0\n\tSEVERITY_ERROR                                                            syscall.Errno = 1\n\tFACILITY_NT_BIT                                                                         = 0x10000000\n\tE_NOT_SET                                                                               = ERROR_NOT_FOUND\n\tE_NOT_VALID_STATE                                                                       = ERROR_INVALID_STATE\n\tE_NOT_SUFFICIENT_BUFFER                                                                 = ERROR_INSUFFICIENT_BUFFER\n\tE_TIME_SENSITIVE_THREAD                                                                 = ERROR_TIME_SENSITIVE_THREAD\n\tE_NO_TASK_QUEUE                                                                         = ERROR_NO_TASK_QUEUE\n\tNOERROR                                                                   syscall.Errno = 0\n\tE_UNEXPECTED                                                              Handle        = 0x8000FFFF\n\tE_NOTIMPL                                                                 Handle        = 0x80004001\n\tE_OUTOFMEMORY                                                             Handle        = 0x8007000E\n\tE_INVALIDARG                                                              Handle        = 0x80070057\n\tE_NOINTERFACE                                                             Handle        = 0x80004002\n\tE_POINTER                                                                 Handle        = 0x80004003\n\tE_HANDLE                                                                  Handle        = 0x80070006\n\tE_ABORT                                                                   Handle        = 0x80004004\n\tE_FAIL                                                                    Handle        = 0x80004005\n\tE_ACCESSDENIED                                                            Handle        = 0x80070005\n\tE_PENDING                                                                 Handle        = 0x8000000A\n\tE_BOUNDS                                                                  Handle        = 0x8000000B\n\tE_CHANGED_STATE                                                           Handle        = 0x8000000C\n\tE_ILLEGAL_STATE_CHANGE                                                    Handle        = 0x8000000D\n\tE_ILLEGAL_METHOD_CALL                                                     Handle        = 0x8000000E\n\tRO_E_METADATA_NAME_NOT_FOUND                                              Handle        = 0x8000000F\n\tRO_E_METADATA_NAME_IS_NAMESPACE                                           Handle        = 0x80000010\n\tRO_E_METADATA_INVALID_TYPE_FORMAT                                         Handle        = 0x80000011\n\tRO_E_INVALID_METADATA_FILE                                                Handle        = 0x80000012\n\tRO_E_CLOSED                                                               Handle        = 0x80000013\n\tRO_E_EXCLUSIVE_WRITE                                                      Handle        = 0x80000014\n\tRO_E_CHANGE_NOTIFICATION_IN_PROGRESS                                      Handle        = 0x80000015\n\tRO_E_ERROR_STRING_NOT_FOUND                                               Handle        = 0x80000016\n\tE_STRING_NOT_NULL_TERMINATED                                              Handle        = 0x80000017\n\tE_ILLEGAL_DELEGATE_ASSIGNMENT                                             Handle        = 0x80000018\n\tE_ASYNC_OPERATION_NOT_STARTED                                             Handle        = 0x80000019\n\tE_APPLICATION_EXITING                                                     Handle        = 0x8000001A\n\tE_APPLICATION_VIEW_EXITING                                                Handle        = 0x8000001B\n\tRO_E_MUST_BE_AGILE                                                        Handle        = 0x8000001C\n\tRO_E_UNSUPPORTED_FROM_MTA                                                 Handle        = 0x8000001D\n\tRO_E_COMMITTED                                                            Handle        = 0x8000001E\n\tRO_E_BLOCKED_CROSS_ASTA_CALL                                              Handle        = 0x8000001F\n\tRO_E_CANNOT_ACTIVATE_FULL_TRUST_SERVER                                    Handle        = 0x80000020\n\tRO_E_CANNOT_ACTIVATE_UNIVERSAL_APPLICATION_SERVER                         Handle        = 0x80000021\n\tCO_E_INIT_TLS                                                             Handle        = 0x80004006\n\tCO_E_INIT_SHARED_ALLOCATOR                                                Handle        = 0x80004007\n\tCO_E_INIT_MEMORY_ALLOCATOR                                                Handle        = 0x80004008\n\tCO_E_INIT_CLASS_CACHE                                                     Handle        = 0x80004009\n\tCO_E_INIT_RPC_CHANNEL                                                     Handle        = 0x8000400A\n\tCO_E_INIT_TLS_SET_CHANNEL_CONTROL                                         Handle        = 0x8000400B\n\tCO_E_INIT_TLS_CHANNEL_CONTROL                                             Handle        = 0x8000400C\n\tCO_E_INIT_UNACCEPTED_USER_ALLOCATOR                                       Handle        = 0x8000400D\n\tCO_E_INIT_SCM_MUTEX_EXISTS                                                Handle        = 0x8000400E\n\tCO_E_INIT_SCM_FILE_MAPPING_EXISTS                                         Handle        = 0x8000400F\n\tCO_E_INIT_SCM_MAP_VIEW_OF_FILE                                            Handle        = 0x80004010\n\tCO_E_INIT_SCM_EXEC_FAILURE                                                Handle        = 0x80004011\n\tCO_E_INIT_ONLY_SINGLE_THREADED                                            Handle        = 0x80004012\n\tCO_E_CANT_REMOTE                                                          Handle        = 0x80004013\n\tCO_E_BAD_SERVER_NAME                                                      Handle        = 0x80004014\n\tCO_E_WRONG_SERVER_IDENTITY                                                Handle        = 0x80004015\n\tCO_E_OLE1DDE_DISABLED                                                     Handle        = 0x80004016\n\tCO_E_RUNAS_SYNTAX                                                         Handle        = 0x80004017\n\tCO_E_CREATEPROCESS_FAILURE                                                Handle        = 0x80004018\n\tCO_E_RUNAS_CREATEPROCESS_FAILURE                                          Handle        = 0x80004019\n\tCO_E_RUNAS_LOGON_FAILURE                                                  Handle        = 0x8000401A\n\tCO_E_LAUNCH_PERMSSION_DENIED                                              Handle        = 0x8000401B\n\tCO_E_START_SERVICE_FAILURE                                                Handle        = 0x8000401C\n\tCO_E_REMOTE_COMMUNICATION_FAILURE                                         Handle        = 0x8000401D\n\tCO_E_SERVER_START_TIMEOUT                                                 Handle        = 0x8000401E\n\tCO_E_CLSREG_INCONSISTENT                                                  Handle        = 0x8000401F\n\tCO_E_IIDREG_INCONSISTENT                                                  Handle        = 0x80004020\n\tCO_E_NOT_SUPPORTED                                                        Handle        = 0x80004021\n\tCO_E_RELOAD_DLL                                                           Handle        = 0x80004022\n\tCO_E_MSI_ERROR                                                            Handle        = 0x80004023\n\tCO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT                             Handle        = 0x80004024\n\tCO_E_SERVER_PAUSED                                                        Handle        = 0x80004025\n\tCO_E_SERVER_NOT_PAUSED                                                    Handle        = 0x80004026\n\tCO_E_CLASS_DISABLED                                                       Handle        = 0x80004027\n\tCO_E_CLRNOTAVAILABLE                                                      Handle        = 0x80004028\n\tCO_E_ASYNC_WORK_REJECTED                                                  Handle        = 0x80004029\n\tCO_E_SERVER_INIT_TIMEOUT                                                  Handle        = 0x8000402A\n\tCO_E_NO_SECCTX_IN_ACTIVATE                                                Handle        = 0x8000402B\n\tCO_E_TRACKER_CONFIG                                                       Handle        = 0x80004030\n\tCO_E_THREADPOOL_CONFIG                                                    Handle        = 0x80004031\n\tCO_E_SXS_CONFIG                                                           Handle        = 0x80004032\n\tCO_E_MALFORMED_SPN                                                        Handle        = 0x80004033\n\tCO_E_UNREVOKED_REGISTRATION_ON_APARTMENT_SHUTDOWN                         Handle        = 0x80004034\n\tCO_E_PREMATURE_STUB_RUNDOWN                                               Handle        = 0x80004035\n\tS_OK                                                                      Handle        = 0\n\tS_FALSE                                                                   Handle        = 1\n\tOLE_E_FIRST                                                               Handle        = 0x80040000\n\tOLE_E_LAST                                                                Handle        = 0x800400FF\n\tOLE_S_FIRST                                                               Handle        = 0x00040000\n\tOLE_S_LAST                                                                Handle        = 0x000400FF\n\tOLE_E_OLEVERB                                                             Handle        = 0x80040000\n\tOLE_E_ADVF                                                                Handle        = 0x80040001\n\tOLE_E_ENUM_NOMORE                                                         Handle        = 0x80040002\n\tOLE_E_ADVISENOTSUPPORTED                                                  Handle        = 0x80040003\n\tOLE_E_NOCONNECTION                                                        Handle        = 0x80040004\n\tOLE_E_NOTRUNNING                                                          Handle        = 0x80040005\n\tOLE_E_NOCACHE                                                             Handle        = 0x80040006\n\tOLE_E_BLANK                                                               Handle        = 0x80040007\n\tOLE_E_CLASSDIFF                                                           Handle        = 0x80040008\n\tOLE_E_CANT_GETMONIKER                                                     Handle        = 0x80040009\n\tOLE_E_CANT_BINDTOSOURCE                                                   Handle        = 0x8004000A\n\tOLE_E_STATIC                                                              Handle        = 0x8004000B\n\tOLE_E_PROMPTSAVECANCELLED                                                 Handle        = 0x8004000C\n\tOLE_E_INVALIDRECT                                                         Handle        = 0x8004000D\n\tOLE_E_WRONGCOMPOBJ                                                        Handle        = 0x8004000E\n\tOLE_E_INVALIDHWND                                                         Handle        = 0x8004000F\n\tOLE_E_NOT_INPLACEACTIVE                                                   Handle        = 0x80040010\n\tOLE_E_CANTCONVERT                                                         Handle        = 0x80040011\n\tOLE_E_NOSTORAGE                                                           Handle        = 0x80040012\n\tDV_E_FORMATETC                                                            Handle        = 0x80040064\n\tDV_E_DVTARGETDEVICE                                                       Handle        = 0x80040065\n\tDV_E_STGMEDIUM                                                            Handle        = 0x80040066\n\tDV_E_STATDATA                                                             Handle        = 0x80040067\n\tDV_E_LINDEX                                                               Handle        = 0x80040068\n\tDV_E_TYMED                                                                Handle        = 0x80040069\n\tDV_E_CLIPFORMAT                                                           Handle        = 0x8004006A\n\tDV_E_DVASPECT                                                             Handle        = 0x8004006B\n\tDV_E_DVTARGETDEVICE_SIZE                                                  Handle        = 0x8004006C\n\tDV_E_NOIVIEWOBJECT                                                        Handle        = 0x8004006D\n\tDRAGDROP_E_FIRST                                                          syscall.Errno = 0x80040100\n\tDRAGDROP_E_LAST                                                           syscall.Errno = 0x8004010F\n\tDRAGDROP_S_FIRST                                                          syscall.Errno = 0x00040100\n\tDRAGDROP_S_LAST                                                           syscall.Errno = 0x0004010F\n\tDRAGDROP_E_NOTREGISTERED                                                  Handle        = 0x80040100\n\tDRAGDROP_E_ALREADYREGISTERED                                              Handle        = 0x80040101\n\tDRAGDROP_E_INVALIDHWND                                                    Handle        = 0x80040102\n\tDRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED                                      Handle        = 0x80040103\n\tCLASSFACTORY_E_FIRST                                                      syscall.Errno = 0x80040110\n\tCLASSFACTORY_E_LAST                                                       syscall.Errno = 0x8004011F\n\tCLASSFACTORY_S_FIRST                                                      syscall.Errno = 0x00040110\n\tCLASSFACTORY_S_LAST                                                       syscall.Errno = 0x0004011F\n\tCLASS_E_NOAGGREGATION                                                     Handle        = 0x80040110\n\tCLASS_E_CLASSNOTAVAILABLE                                                 Handle        = 0x80040111\n\tCLASS_E_NOTLICENSED                                                       Handle        = 0x80040112\n\tMARSHAL_E_FIRST                                                           syscall.Errno = 0x80040120\n\tMARSHAL_E_LAST                                                            syscall.Errno = 0x8004012F\n\tMARSHAL_S_FIRST                                                           syscall.Errno = 0x00040120\n\tMARSHAL_S_LAST                                                            syscall.Errno = 0x0004012F\n\tDATA_E_FIRST                                                              syscall.Errno = 0x80040130\n\tDATA_E_LAST                                                               syscall.Errno = 0x8004013F\n\tDATA_S_FIRST                                                              syscall.Errno = 0x00040130\n\tDATA_S_LAST                                                               syscall.Errno = 0x0004013F\n\tVIEW_E_FIRST                                                              syscall.Errno = 0x80040140\n\tVIEW_E_LAST                                                               syscall.Errno = 0x8004014F\n\tVIEW_S_FIRST                                                              syscall.Errno = 0x00040140\n\tVIEW_S_LAST                                                               syscall.Errno = 0x0004014F\n\tVIEW_E_DRAW                                                               Handle        = 0x80040140\n\tREGDB_E_FIRST                                                             syscall.Errno = 0x80040150\n\tREGDB_E_LAST                                                              syscall.Errno = 0x8004015F\n\tREGDB_S_FIRST                                                             syscall.Errno = 0x00040150\n\tREGDB_S_LAST                                                              syscall.Errno = 0x0004015F\n\tREGDB_E_READREGDB                                                         Handle        = 0x80040150\n\tREGDB_E_WRITEREGDB                                                        Handle        = 0x80040151\n\tREGDB_E_KEYMISSING                                                        Handle        = 0x80040152\n\tREGDB_E_INVALIDVALUE                                                      Handle        = 0x80040153\n\tREGDB_E_CLASSNOTREG                                                       Handle        = 0x80040154\n\tREGDB_E_IIDNOTREG                                                         Handle        = 0x80040155\n\tREGDB_E_BADTHREADINGMODEL                                                 Handle        = 0x80040156\n\tREGDB_E_PACKAGEPOLICYVIOLATION                                            Handle        = 0x80040157\n\tCAT_E_FIRST                                                               syscall.Errno = 0x80040160\n\tCAT_E_LAST                                                                syscall.Errno = 0x80040161\n\tCAT_E_CATIDNOEXIST                                                        Handle        = 0x80040160\n\tCAT_E_NODESCRIPTION                                                       Handle        = 0x80040161\n\tCS_E_FIRST                                                                syscall.Errno = 0x80040164\n\tCS_E_LAST                                                                 syscall.Errno = 0x8004016F\n\tCS_E_PACKAGE_NOTFOUND                                                     Handle        = 0x80040164\n\tCS_E_NOT_DELETABLE                                                        Handle        = 0x80040165\n\tCS_E_CLASS_NOTFOUND                                                       Handle        = 0x80040166\n\tCS_E_INVALID_VERSION                                                      Handle        = 0x80040167\n\tCS_E_NO_CLASSSTORE                                                        Handle        = 0x80040168\n\tCS_E_OBJECT_NOTFOUND                                                      Handle        = 0x80040169\n\tCS_E_OBJECT_ALREADY_EXISTS                                                Handle        = 0x8004016A\n\tCS_E_INVALID_PATH                                                         Handle        = 0x8004016B\n\tCS_E_NETWORK_ERROR                                                        Handle        = 0x8004016C\n\tCS_E_ADMIN_LIMIT_EXCEEDED                                                 Handle        = 0x8004016D\n\tCS_E_SCHEMA_MISMATCH                                                      Handle        = 0x8004016E\n\tCS_E_INTERNAL_ERROR                                                       Handle        = 0x8004016F\n\tCACHE_E_FIRST                                                             syscall.Errno = 0x80040170\n\tCACHE_E_LAST                                                              syscall.Errno = 0x8004017F\n\tCACHE_S_FIRST                                                             syscall.Errno = 0x00040170\n\tCACHE_S_LAST                                                              syscall.Errno = 0x0004017F\n\tCACHE_E_NOCACHE_UPDATED                                                   Handle        = 0x80040170\n\tOLEOBJ_E_FIRST                                                            syscall.Errno = 0x80040180\n\tOLEOBJ_E_LAST                                                             syscall.Errno = 0x8004018F\n\tOLEOBJ_S_FIRST                                                            syscall.Errno = 0x00040180\n\tOLEOBJ_S_LAST                                                             syscall.Errno = 0x0004018F\n\tOLEOBJ_E_NOVERBS                                                          Handle        = 0x80040180\n\tOLEOBJ_E_INVALIDVERB                                                      Handle        = 0x80040181\n\tCLIENTSITE_E_FIRST                                                        syscall.Errno = 0x80040190\n\tCLIENTSITE_E_LAST                                                         syscall.Errno = 0x8004019F\n\tCLIENTSITE_S_FIRST                                                        syscall.Errno = 0x00040190\n\tCLIENTSITE_S_LAST                                                         syscall.Errno = 0x0004019F\n\tINPLACE_E_NOTUNDOABLE                                                     Handle        = 0x800401A0\n\tINPLACE_E_NOTOOLSPACE                                                     Handle        = 0x800401A1\n\tINPLACE_E_FIRST                                                           syscall.Errno = 0x800401A0\n\tINPLACE_E_LAST                                                            syscall.Errno = 0x800401AF\n\tINPLACE_S_FIRST                                                           syscall.Errno = 0x000401A0\n\tINPLACE_S_LAST                                                            syscall.Errno = 0x000401AF\n\tENUM_E_FIRST                                                              syscall.Errno = 0x800401B0\n\tENUM_E_LAST                                                               syscall.Errno = 0x800401BF\n\tENUM_S_FIRST                                                              syscall.Errno = 0x000401B0\n\tENUM_S_LAST                                                               syscall.Errno = 0x000401BF\n\tCONVERT10_E_FIRST                                                         syscall.Errno = 0x800401C0\n\tCONVERT10_E_LAST                                                          syscall.Errno = 0x800401CF\n\tCONVERT10_S_FIRST                                                         syscall.Errno = 0x000401C0\n\tCONVERT10_S_LAST                                                          syscall.Errno = 0x000401CF\n\tCONVERT10_E_OLESTREAM_GET                                                 Handle        = 0x800401C0\n\tCONVERT10_E_OLESTREAM_PUT                                                 Handle        = 0x800401C1\n\tCONVERT10_E_OLESTREAM_FMT                                                 Handle        = 0x800401C2\n\tCONVERT10_E_OLESTREAM_BITMAP_TO_DIB                                       Handle        = 0x800401C3\n\tCONVERT10_E_STG_FMT                                                       Handle        = 0x800401C4\n\tCONVERT10_E_STG_NO_STD_STREAM                                             Handle        = 0x800401C5\n\tCONVERT10_E_STG_DIB_TO_BITMAP                                             Handle        = 0x800401C6\n\tCLIPBRD_E_FIRST                                                           syscall.Errno = 0x800401D0\n\tCLIPBRD_E_LAST                                                            syscall.Errno = 0x800401DF\n\tCLIPBRD_S_FIRST                                                           syscall.Errno = 0x000401D0\n\tCLIPBRD_S_LAST                                                            syscall.Errno = 0x000401DF\n\tCLIPBRD_E_CANT_OPEN                                                       Handle        = 0x800401D0\n\tCLIPBRD_E_CANT_EMPTY                                                      Handle        = 0x800401D1\n\tCLIPBRD_E_CANT_SET                                                        Handle        = 0x800401D2\n\tCLIPBRD_E_BAD_DATA                                                        Handle        = 0x800401D3\n\tCLIPBRD_E_CANT_CLOSE                                                      Handle        = 0x800401D4\n\tMK_E_FIRST                                                                syscall.Errno = 0x800401E0\n\tMK_E_LAST                                                                 syscall.Errno = 0x800401EF\n\tMK_S_FIRST                                                                syscall.Errno = 0x000401E0\n\tMK_S_LAST                                                                 syscall.Errno = 0x000401EF\n\tMK_E_CONNECTMANUALLY                                                      Handle        = 0x800401E0\n\tMK_E_EXCEEDEDDEADLINE                                                     Handle        = 0x800401E1\n\tMK_E_NEEDGENERIC                                                          Handle        = 0x800401E2\n\tMK_E_UNAVAILABLE                                                          Handle        = 0x800401E3\n\tMK_E_SYNTAX                                                               Handle        = 0x800401E4\n\tMK_E_NOOBJECT                                                             Handle        = 0x800401E5\n\tMK_E_INVALIDEXTENSION                                                     Handle        = 0x800401E6\n\tMK_E_INTERMEDIATEINTERFACENOTSUPPORTED                                    Handle        = 0x800401E7\n\tMK_E_NOTBINDABLE                                                          Handle        = 0x800401E8\n\tMK_E_NOTBOUND                                                             Handle        = 0x800401E9\n\tMK_E_CANTOPENFILE                                                         Handle        = 0x800401EA\n\tMK_E_MUSTBOTHERUSER                                                       Handle        = 0x800401EB\n\tMK_E_NOINVERSE                                                            Handle        = 0x800401EC\n\tMK_E_NOSTORAGE                                                            Handle        = 0x800401ED\n\tMK_E_NOPREFIX                                                             Handle        = 0x800401EE\n\tMK_E_ENUMERATION_FAILED                                                   Handle        = 0x800401EF\n\tCO_E_FIRST                                                                syscall.Errno = 0x800401F0\n\tCO_E_LAST                                                                 syscall.Errno = 0x800401FF\n\tCO_S_FIRST                                                                syscall.Errno = 0x000401F0\n\tCO_S_LAST                                                                 syscall.Errno = 0x000401FF\n\tCO_E_NOTINITIALIZED                                                       Handle        = 0x800401F0\n\tCO_E_ALREADYINITIALIZED                                                   Handle        = 0x800401F1\n\tCO_E_CANTDETERMINECLASS                                                   Handle        = 0x800401F2\n\tCO_E_CLASSSTRING                                                          Handle        = 0x800401F3\n\tCO_E_IIDSTRING                                                            Handle        = 0x800401F4\n\tCO_E_APPNOTFOUND                                                          Handle        = 0x800401F5\n\tCO_E_APPSINGLEUSE                                                         Handle        = 0x800401F6\n\tCO_E_ERRORINAPP                                                           Handle        = 0x800401F7\n\tCO_E_DLLNOTFOUND                                                          Handle        = 0x800401F8\n\tCO_E_ERRORINDLL                                                           Handle        = 0x800401F9\n\tCO_E_WRONGOSFORAPP                                                        Handle        = 0x800401FA\n\tCO_E_OBJNOTREG                                                            Handle        = 0x800401FB\n\tCO_E_OBJISREG                                                             Handle        = 0x800401FC\n\tCO_E_OBJNOTCONNECTED                                                      Handle        = 0x800401FD\n\tCO_E_APPDIDNTREG                                                          Handle        = 0x800401FE\n\tCO_E_RELEASED                                                             Handle        = 0x800401FF\n\tEVENT_E_FIRST                                                             syscall.Errno = 0x80040200\n\tEVENT_E_LAST                                                              syscall.Errno = 0x8004021F\n\tEVENT_S_FIRST                                                             syscall.Errno = 0x00040200\n\tEVENT_S_LAST                                                              syscall.Errno = 0x0004021F\n\tEVENT_S_SOME_SUBSCRIBERS_FAILED                                           Handle        = 0x00040200\n\tEVENT_E_ALL_SUBSCRIBERS_FAILED                                            Handle        = 0x80040201\n\tEVENT_S_NOSUBSCRIBERS                                                     Handle        = 0x00040202\n\tEVENT_E_QUERYSYNTAX                                                       Handle        = 0x80040203\n\tEVENT_E_QUERYFIELD                                                        Handle        = 0x80040204\n\tEVENT_E_INTERNALEXCEPTION                                                 Handle        = 0x80040205\n\tEVENT_E_INTERNALERROR                                                     Handle        = 0x80040206\n\tEVENT_E_INVALID_PER_USER_SID                                              Handle        = 0x80040207\n\tEVENT_E_USER_EXCEPTION                                                    Handle        = 0x80040208\n\tEVENT_E_TOO_MANY_METHODS                                                  Handle        = 0x80040209\n\tEVENT_E_MISSING_EVENTCLASS                                                Handle        = 0x8004020A\n\tEVENT_E_NOT_ALL_REMOVED                                                   Handle        = 0x8004020B\n\tEVENT_E_COMPLUS_NOT_INSTALLED                                             Handle        = 0x8004020C\n\tEVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT                         Handle        = 0x8004020D\n\tEVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT                           Handle        = 0x8004020E\n\tEVENT_E_INVALID_EVENT_CLASS_PARTITION                                     Handle        = 0x8004020F\n\tEVENT_E_PER_USER_SID_NOT_LOGGED_ON                                        Handle        = 0x80040210\n\tTPC_E_INVALID_PROPERTY                                                    Handle        = 0x80040241\n\tTPC_E_NO_DEFAULT_TABLET                                                   Handle        = 0x80040212\n\tTPC_E_UNKNOWN_PROPERTY                                                    Handle        = 0x8004021B\n\tTPC_E_INVALID_INPUT_RECT                                                  Handle        = 0x80040219\n\tTPC_E_INVALID_STROKE                                                      Handle        = 0x80040222\n\tTPC_E_INITIALIZE_FAIL                                                     Handle        = 0x80040223\n\tTPC_E_NOT_RELEVANT                                                        Handle        = 0x80040232\n\tTPC_E_INVALID_PACKET_DESCRIPTION                                          Handle        = 0x80040233\n\tTPC_E_RECOGNIZER_NOT_REGISTERED                                           Handle        = 0x80040235\n\tTPC_E_INVALID_RIGHTS                                                      Handle        = 0x80040236\n\tTPC_E_OUT_OF_ORDER_CALL                                                   Handle        = 0x80040237\n\tTPC_E_QUEUE_FULL                                                          Handle        = 0x80040238\n\tTPC_E_INVALID_CONFIGURATION                                               Handle        = 0x80040239\n\tTPC_E_INVALID_DATA_FROM_RECOGNIZER                                        Handle        = 0x8004023A\n\tTPC_S_TRUNCATED                                                           Handle        = 0x00040252\n\tTPC_S_INTERRUPTED                                                         Handle        = 0x00040253\n\tTPC_S_NO_DATA_TO_PROCESS                                                  Handle        = 0x00040254\n\tXACT_E_FIRST                                                              syscall.Errno = 0x8004D000\n\tXACT_E_LAST                                                               syscall.Errno = 0x8004D02B\n\tXACT_S_FIRST                                                              syscall.Errno = 0x0004D000\n\tXACT_S_LAST                                                               syscall.Errno = 0x0004D010\n\tXACT_E_ALREADYOTHERSINGLEPHASE                                            Handle        = 0x8004D000\n\tXACT_E_CANTRETAIN                                                         Handle        = 0x8004D001\n\tXACT_E_COMMITFAILED                                                       Handle        = 0x8004D002\n\tXACT_E_COMMITPREVENTED                                                    Handle        = 0x8004D003\n\tXACT_E_HEURISTICABORT                                                     Handle        = 0x8004D004\n\tXACT_E_HEURISTICCOMMIT                                                    Handle        = 0x8004D005\n\tXACT_E_HEURISTICDAMAGE                                                    Handle        = 0x8004D006\n\tXACT_E_HEURISTICDANGER                                                    Handle        = 0x8004D007\n\tXACT_E_ISOLATIONLEVEL                                                     Handle        = 0x8004D008\n\tXACT_E_NOASYNC                                                            Handle        = 0x8004D009\n\tXACT_E_NOENLIST                                                           Handle        = 0x8004D00A\n\tXACT_E_NOISORETAIN                                                        Handle        = 0x8004D00B\n\tXACT_E_NORESOURCE                                                         Handle        = 0x8004D00C\n\tXACT_E_NOTCURRENT                                                         Handle        = 0x8004D00D\n\tXACT_E_NOTRANSACTION                                                      Handle        = 0x8004D00E\n\tXACT_E_NOTSUPPORTED                                                       Handle        = 0x8004D00F\n\tXACT_E_UNKNOWNRMGRID                                                      Handle        = 0x8004D010\n\tXACT_E_WRONGSTATE                                                         Handle        = 0x8004D011\n\tXACT_E_WRONGUOW                                                           Handle        = 0x8004D012\n\tXACT_E_XTIONEXISTS                                                        Handle        = 0x8004D013\n\tXACT_E_NOIMPORTOBJECT                                                     Handle        = 0x8004D014\n\tXACT_E_INVALIDCOOKIE                                                      Handle        = 0x8004D015\n\tXACT_E_INDOUBT                                                            Handle        = 0x8004D016\n\tXACT_E_NOTIMEOUT                                                          Handle        = 0x8004D017\n\tXACT_E_ALREADYINPROGRESS                                                  Handle        = 0x8004D018\n\tXACT_E_ABORTED                                                            Handle        = 0x8004D019\n\tXACT_E_LOGFULL                                                            Handle        = 0x8004D01A\n\tXACT_E_TMNOTAVAILABLE                                                     Handle        = 0x8004D01B\n\tXACT_E_CONNECTION_DOWN                                                    Handle        = 0x8004D01C\n\tXACT_E_CONNECTION_DENIED                                                  Handle        = 0x8004D01D\n\tXACT_E_REENLISTTIMEOUT                                                    Handle        = 0x8004D01E\n\tXACT_E_TIP_CONNECT_FAILED                                                 Handle        = 0x8004D01F\n\tXACT_E_TIP_PROTOCOL_ERROR                                                 Handle        = 0x8004D020\n\tXACT_E_TIP_PULL_FAILED                                                    Handle        = 0x8004D021\n\tXACT_E_DEST_TMNOTAVAILABLE                                                Handle        = 0x8004D022\n\tXACT_E_TIP_DISABLED                                                       Handle        = 0x8004D023\n\tXACT_E_NETWORK_TX_DISABLED                                                Handle        = 0x8004D024\n\tXACT_E_PARTNER_NETWORK_TX_DISABLED                                        Handle        = 0x8004D025\n\tXACT_E_XA_TX_DISABLED                                                     Handle        = 0x8004D026\n\tXACT_E_UNABLE_TO_READ_DTC_CONFIG                                          Handle        = 0x8004D027\n\tXACT_E_UNABLE_TO_LOAD_DTC_PROXY                                           Handle        = 0x8004D028\n\tXACT_E_ABORTING                                                           Handle        = 0x8004D029\n\tXACT_E_PUSH_COMM_FAILURE                                                  Handle        = 0x8004D02A\n\tXACT_E_PULL_COMM_FAILURE                                                  Handle        = 0x8004D02B\n\tXACT_E_LU_TX_DISABLED                                                     Handle        = 0x8004D02C\n\tXACT_E_CLERKNOTFOUND                                                      Handle        = 0x8004D080\n\tXACT_E_CLERKEXISTS                                                        Handle        = 0x8004D081\n\tXACT_E_RECOVERYINPROGRESS                                                 Handle        = 0x8004D082\n\tXACT_E_TRANSACTIONCLOSED                                                  Handle        = 0x8004D083\n\tXACT_E_INVALIDLSN                                                         Handle        = 0x8004D084\n\tXACT_E_REPLAYREQUEST                                                      Handle        = 0x8004D085\n\tXACT_S_ASYNC                                                              Handle        = 0x0004D000\n\tXACT_S_DEFECT                                                             Handle        = 0x0004D001\n\tXACT_S_READONLY                                                           Handle        = 0x0004D002\n\tXACT_S_SOMENORETAIN                                                       Handle        = 0x0004D003\n\tXACT_S_OKINFORM                                                           Handle        = 0x0004D004\n\tXACT_S_MADECHANGESCONTENT                                                 Handle        = 0x0004D005\n\tXACT_S_MADECHANGESINFORM                                                  Handle        = 0x0004D006\n\tXACT_S_ALLNORETAIN                                                        Handle        = 0x0004D007\n\tXACT_S_ABORTING                                                           Handle        = 0x0004D008\n\tXACT_S_SINGLEPHASE                                                        Handle        = 0x0004D009\n\tXACT_S_LOCALLY_OK                                                         Handle        = 0x0004D00A\n\tXACT_S_LASTRESOURCEMANAGER                                                Handle        = 0x0004D010\n\tCONTEXT_E_FIRST                                                           syscall.Errno = 0x8004E000\n\tCONTEXT_E_LAST                                                            syscall.Errno = 0x8004E02F\n\tCONTEXT_S_FIRST                                                           syscall.Errno = 0x0004E000\n\tCONTEXT_S_LAST                                                            syscall.Errno = 0x0004E02F\n\tCONTEXT_E_ABORTED                                                         Handle        = 0x8004E002\n\tCONTEXT_E_ABORTING                                                        Handle        = 0x8004E003\n\tCONTEXT_E_NOCONTEXT                                                       Handle        = 0x8004E004\n\tCONTEXT_E_WOULD_DEADLOCK                                                  Handle        = 0x8004E005\n\tCONTEXT_E_SYNCH_TIMEOUT                                                   Handle        = 0x8004E006\n\tCONTEXT_E_OLDREF                                                          Handle        = 0x8004E007\n\tCONTEXT_E_ROLENOTFOUND                                                    Handle        = 0x8004E00C\n\tCONTEXT_E_TMNOTAVAILABLE                                                  Handle        = 0x8004E00F\n\tCO_E_ACTIVATIONFAILED                                                     Handle        = 0x8004E021\n\tCO_E_ACTIVATIONFAILED_EVENTLOGGED                                         Handle        = 0x8004E022\n\tCO_E_ACTIVATIONFAILED_CATALOGERROR                                        Handle        = 0x8004E023\n\tCO_E_ACTIVATIONFAILED_TIMEOUT                                             Handle        = 0x8004E024\n\tCO_E_INITIALIZATIONFAILED                                                 Handle        = 0x8004E025\n\tCONTEXT_E_NOJIT                                                           Handle        = 0x8004E026\n\tCONTEXT_E_NOTRANSACTION                                                   Handle        = 0x8004E027\n\tCO_E_THREADINGMODEL_CHANGED                                               Handle        = 0x8004E028\n\tCO_E_NOIISINTRINSICS                                                      Handle        = 0x8004E029\n\tCO_E_NOCOOKIES                                                            Handle        = 0x8004E02A\n\tCO_E_DBERROR                                                              Handle        = 0x8004E02B\n\tCO_E_NOTPOOLED                                                            Handle        = 0x8004E02C\n\tCO_E_NOTCONSTRUCTED                                                       Handle        = 0x8004E02D\n\tCO_E_NOSYNCHRONIZATION                                                    Handle        = 0x8004E02E\n\tCO_E_ISOLEVELMISMATCH                                                     Handle        = 0x8004E02F\n\tCO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED                                     Handle        = 0x8004E030\n\tCO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED                                    Handle        = 0x8004E031\n\tOLE_S_USEREG                                                              Handle        = 0x00040000\n\tOLE_S_STATIC                                                              Handle        = 0x00040001\n\tOLE_S_MAC_CLIPFORMAT                                                      Handle        = 0x00040002\n\tDRAGDROP_S_DROP                                                           Handle        = 0x00040100\n\tDRAGDROP_S_CANCEL                                                         Handle        = 0x00040101\n\tDRAGDROP_S_USEDEFAULTCURSORS                                              Handle        = 0x00040102\n\tDATA_S_SAMEFORMATETC                                                      Handle        = 0x00040130\n\tVIEW_S_ALREADY_FROZEN                                                     Handle        = 0x00040140\n\tCACHE_S_FORMATETC_NOTSUPPORTED                                            Handle        = 0x00040170\n\tCACHE_S_SAMECACHE                                                         Handle        = 0x00040171\n\tCACHE_S_SOMECACHES_NOTUPDATED                                             Handle        = 0x00040172\n\tOLEOBJ_S_INVALIDVERB                                                      Handle        = 0x00040180\n\tOLEOBJ_S_CANNOT_DOVERB_NOW                                                Handle        = 0x00040181\n\tOLEOBJ_S_INVALIDHWND                                                      Handle        = 0x00040182\n\tINPLACE_S_TRUNCATED                                                       Handle        = 0x000401A0\n\tCONVERT10_S_NO_PRESENTATION                                               Handle        = 0x000401C0\n\tMK_S_REDUCED_TO_SELF                                                      Handle        = 0x000401E2\n\tMK_S_ME                                                                   Handle        = 0x000401E4\n\tMK_S_HIM                                                                  Handle        = 0x000401E5\n\tMK_S_US                                                                   Handle        = 0x000401E6\n\tMK_S_MONIKERALREADYREGISTERED                                             Handle        = 0x000401E7\n\tSCHED_S_TASK_READY                                                        Handle        = 0x00041300\n\tSCHED_S_TASK_RUNNING                                                      Handle        = 0x00041301\n\tSCHED_S_TASK_DISABLED                                                     Handle        = 0x00041302\n\tSCHED_S_TASK_HAS_NOT_RUN                                                  Handle        = 0x00041303\n\tSCHED_S_TASK_NO_MORE_RUNS                                                 Handle        = 0x00041304\n\tSCHED_S_TASK_NOT_SCHEDULED                                                Handle        = 0x00041305\n\tSCHED_S_TASK_TERMINATED                                                   Handle        = 0x00041306\n\tSCHED_S_TASK_NO_VALID_TRIGGERS                                            Handle        = 0x00041307\n\tSCHED_S_EVENT_TRIGGER                                                     Handle        = 0x00041308\n\tSCHED_E_TRIGGER_NOT_FOUND                                                 Handle        = 0x80041309\n\tSCHED_E_TASK_NOT_READY                                                    Handle        = 0x8004130A\n\tSCHED_E_TASK_NOT_RUNNING                                                  Handle        = 0x8004130B\n\tSCHED_E_SERVICE_NOT_INSTALLED                                             Handle        = 0x8004130C\n\tSCHED_E_CANNOT_OPEN_TASK                                                  Handle        = 0x8004130D\n\tSCHED_E_INVALID_TASK                                                      Handle        = 0x8004130E\n\tSCHED_E_ACCOUNT_INFORMATION_NOT_SET                                       Handle        = 0x8004130F\n\tSCHED_E_ACCOUNT_NAME_NOT_FOUND                                            Handle        = 0x80041310\n\tSCHED_E_ACCOUNT_DBASE_CORRUPT                                             Handle        = 0x80041311\n\tSCHED_E_NO_SECURITY_SERVICES                                              Handle        = 0x80041312\n\tSCHED_E_UNKNOWN_OBJECT_VERSION                                            Handle        = 0x80041313\n\tSCHED_E_UNSUPPORTED_ACCOUNT_OPTION                                        Handle        = 0x80041314\n\tSCHED_E_SERVICE_NOT_RUNNING                                               Handle        = 0x80041315\n\tSCHED_E_UNEXPECTEDNODE                                                    Handle        = 0x80041316\n\tSCHED_E_NAMESPACE                                                         Handle        = 0x80041317\n\tSCHED_E_INVALIDVALUE                                                      Handle        = 0x80041318\n\tSCHED_E_MISSINGNODE                                                       Handle        = 0x80041319\n\tSCHED_E_MALFORMEDXML                                                      Handle        = 0x8004131A\n\tSCHED_S_SOME_TRIGGERS_FAILED                                              Handle        = 0x0004131B\n\tSCHED_S_BATCH_LOGON_PROBLEM                                               Handle        = 0x0004131C\n\tSCHED_E_TOO_MANY_NODES                                                    Handle        = 0x8004131D\n\tSCHED_E_PAST_END_BOUNDARY                                                 Handle        = 0x8004131E\n\tSCHED_E_ALREADY_RUNNING                                                   Handle        = 0x8004131F\n\tSCHED_E_USER_NOT_LOGGED_ON                                                Handle        = 0x80041320\n\tSCHED_E_INVALID_TASK_HASH                                                 Handle        = 0x80041321\n\tSCHED_E_SERVICE_NOT_AVAILABLE                                             Handle        = 0x80041322\n\tSCHED_E_SERVICE_TOO_BUSY                                                  Handle        = 0x80041323\n\tSCHED_E_TASK_ATTEMPTED                                                    Handle        = 0x80041324\n\tSCHED_S_TASK_QUEUED                                                       Handle        = 0x00041325\n\tSCHED_E_TASK_DISABLED                                                     Handle        = 0x80041326\n\tSCHED_E_TASK_NOT_V1_COMPAT                                                Handle        = 0x80041327\n\tSCHED_E_START_ON_DEMAND                                                   Handle        = 0x80041328\n\tSCHED_E_TASK_NOT_UBPM_COMPAT                                              Handle        = 0x80041329\n\tSCHED_E_DEPRECATED_FEATURE_USED                                           Handle        = 0x80041330\n\tCO_E_CLASS_CREATE_FAILED                                                  Handle        = 0x80080001\n\tCO_E_SCM_ERROR                                                            Handle        = 0x80080002\n\tCO_E_SCM_RPC_FAILURE                                                      Handle        = 0x80080003\n\tCO_E_BAD_PATH                                                             Handle        = 0x80080004\n\tCO_E_SERVER_EXEC_FAILURE                                                  Handle        = 0x80080005\n\tCO_E_OBJSRV_RPC_FAILURE                                                   Handle        = 0x80080006\n\tMK_E_NO_NORMALIZED                                                        Handle        = 0x80080007\n\tCO_E_SERVER_STOPPING                                                      Handle        = 0x80080008\n\tMEM_E_INVALID_ROOT                                                        Handle        = 0x80080009\n\tMEM_E_INVALID_LINK                                                        Handle        = 0x80080010\n\tMEM_E_INVALID_SIZE                                                        Handle        = 0x80080011\n\tCO_S_NOTALLINTERFACES                                                     Handle        = 0x00080012\n\tCO_S_MACHINENAMENOTFOUND                                                  Handle        = 0x00080013\n\tCO_E_MISSING_DISPLAYNAME                                                  Handle        = 0x80080015\n\tCO_E_RUNAS_VALUE_MUST_BE_AAA                                              Handle        = 0x80080016\n\tCO_E_ELEVATION_DISABLED                                                   Handle        = 0x80080017\n\tAPPX_E_PACKAGING_INTERNAL                                                 Handle        = 0x80080200\n\tAPPX_E_INTERLEAVING_NOT_ALLOWED                                           Handle        = 0x80080201\n\tAPPX_E_RELATIONSHIPS_NOT_ALLOWED                                          Handle        = 0x80080202\n\tAPPX_E_MISSING_REQUIRED_FILE                                              Handle        = 0x80080203\n\tAPPX_E_INVALID_MANIFEST                                                   Handle        = 0x80080204\n\tAPPX_E_INVALID_BLOCKMAP                                                   Handle        = 0x80080205\n\tAPPX_E_CORRUPT_CONTENT                                                    Handle        = 0x80080206\n\tAPPX_E_BLOCK_HASH_INVALID                                                 Handle        = 0x80080207\n\tAPPX_E_REQUESTED_RANGE_TOO_LARGE                                          Handle        = 0x80080208\n\tAPPX_E_INVALID_SIP_CLIENT_DATA                                            Handle        = 0x80080209\n\tAPPX_E_INVALID_KEY_INFO                                                   Handle        = 0x8008020A\n\tAPPX_E_INVALID_CONTENTGROUPMAP                                            Handle        = 0x8008020B\n\tAPPX_E_INVALID_APPINSTALLER                                               Handle        = 0x8008020C\n\tAPPX_E_DELTA_BASELINE_VERSION_MISMATCH                                    Handle        = 0x8008020D\n\tAPPX_E_DELTA_PACKAGE_MISSING_FILE                                         Handle        = 0x8008020E\n\tAPPX_E_INVALID_DELTA_PACKAGE                                              Handle        = 0x8008020F\n\tAPPX_E_DELTA_APPENDED_PACKAGE_NOT_ALLOWED                                 Handle        = 0x80080210\n\tAPPX_E_INVALID_PACKAGING_LAYOUT                                           Handle        = 0x80080211\n\tAPPX_E_INVALID_PACKAGESIGNCONFIG                                          Handle        = 0x80080212\n\tAPPX_E_RESOURCESPRI_NOT_ALLOWED                                           Handle        = 0x80080213\n\tAPPX_E_FILE_COMPRESSION_MISMATCH                                          Handle        = 0x80080214\n\tAPPX_E_INVALID_PAYLOAD_PACKAGE_EXTENSION                                  Handle        = 0x80080215\n\tAPPX_E_INVALID_ENCRYPTION_EXCLUSION_FILE_LIST                             Handle        = 0x80080216\n\tBT_E_SPURIOUS_ACTIVATION                                                  Handle        = 0x80080300\n\tDISP_E_UNKNOWNINTERFACE                                                   Handle        = 0x80020001\n\tDISP_E_MEMBERNOTFOUND                                                     Handle        = 0x80020003\n\tDISP_E_PARAMNOTFOUND                                                      Handle        = 0x80020004\n\tDISP_E_TYPEMISMATCH                                                       Handle        = 0x80020005\n\tDISP_E_UNKNOWNNAME                                                        Handle        = 0x80020006\n\tDISP_E_NONAMEDARGS                                                        Handle        = 0x80020007\n\tDISP_E_BADVARTYPE                                                         Handle        = 0x80020008\n\tDISP_E_EXCEPTION                                                          Handle        = 0x80020009\n\tDISP_E_OVERFLOW                                                           Handle        = 0x8002000A\n\tDISP_E_BADINDEX                                                           Handle        = 0x8002000B\n\tDISP_E_UNKNOWNLCID                                                        Handle        = 0x8002000C\n\tDISP_E_ARRAYISLOCKED                                                      Handle        = 0x8002000D\n\tDISP_E_BADPARAMCOUNT                                                      Handle        = 0x8002000E\n\tDISP_E_PARAMNOTOPTIONAL                                                   Handle        = 0x8002000F\n\tDISP_E_BADCALLEE                                                          Handle        = 0x80020010\n\tDISP_E_NOTACOLLECTION                                                     Handle        = 0x80020011\n\tDISP_E_DIVBYZERO                                                          Handle        = 0x80020012\n\tDISP_E_BUFFERTOOSMALL                                                     Handle        = 0x80020013\n\tTYPE_E_BUFFERTOOSMALL                                                     Handle        = 0x80028016\n\tTYPE_E_FIELDNOTFOUND                                                      Handle        = 0x80028017\n\tTYPE_E_INVDATAREAD                                                        Handle        = 0x80028018\n\tTYPE_E_UNSUPFORMAT                                                        Handle        = 0x80028019\n\tTYPE_E_REGISTRYACCESS                                                     Handle        = 0x8002801C\n\tTYPE_E_LIBNOTREGISTERED                                                   Handle        = 0x8002801D\n\tTYPE_E_UNDEFINEDTYPE                                                      Handle        = 0x80028027\n\tTYPE_E_QUALIFIEDNAMEDISALLOWED                                            Handle        = 0x80028028\n\tTYPE_E_INVALIDSTATE                                                       Handle        = 0x80028029\n\tTYPE_E_WRONGTYPEKIND                                                      Handle        = 0x8002802A\n\tTYPE_E_ELEMENTNOTFOUND                                                    Handle        = 0x8002802B\n\tTYPE_E_AMBIGUOUSNAME                                                      Handle        = 0x8002802C\n\tTYPE_E_NAMECONFLICT                                                       Handle        = 0x8002802D\n\tTYPE_E_UNKNOWNLCID                                                        Handle        = 0x8002802E\n\tTYPE_E_DLLFUNCTIONNOTFOUND                                                Handle        = 0x8002802F\n\tTYPE_E_BADMODULEKIND                                                      Handle        = 0x800288BD\n\tTYPE_E_SIZETOOBIG                                                         Handle        = 0x800288C5\n\tTYPE_E_DUPLICATEID                                                        Handle        = 0x800288C6\n\tTYPE_E_INVALIDID                                                          Handle        = 0x800288CF\n\tTYPE_E_TYPEMISMATCH                                                       Handle        = 0x80028CA0\n\tTYPE_E_OUTOFBOUNDS                                                        Handle        = 0x80028CA1\n\tTYPE_E_IOERROR                                                            Handle        = 0x80028CA2\n\tTYPE_E_CANTCREATETMPFILE                                                  Handle        = 0x80028CA3\n\tTYPE_E_CANTLOADLIBRARY                                                    Handle        = 0x80029C4A\n\tTYPE_E_INCONSISTENTPROPFUNCS                                              Handle        = 0x80029C83\n\tTYPE_E_CIRCULARTYPE                                                       Handle        = 0x80029C84\n\tSTG_E_INVALIDFUNCTION                                                     Handle        = 0x80030001\n\tSTG_E_FILENOTFOUND                                                        Handle        = 0x80030002\n\tSTG_E_PATHNOTFOUND                                                        Handle        = 0x80030003\n\tSTG_E_TOOMANYOPENFILES                                                    Handle        = 0x80030004\n\tSTG_E_ACCESSDENIED                                                        Handle        = 0x80030005\n\tSTG_E_INVALIDHANDLE                                                       Handle        = 0x80030006\n\tSTG_E_INSUFFICIENTMEMORY                                                  Handle        = 0x80030008\n\tSTG_E_INVALIDPOINTER                                                      Handle        = 0x80030009\n\tSTG_E_NOMOREFILES                                                         Handle        = 0x80030012\n\tSTG_E_DISKISWRITEPROTECTED                                                Handle        = 0x80030013\n\tSTG_E_SEEKERROR                                                           Handle        = 0x80030019\n\tSTG_E_WRITEFAULT                                                          Handle        = 0x8003001D\n\tSTG_E_READFAULT                                                           Handle        = 0x8003001E\n\tSTG_E_SHAREVIOLATION                                                      Handle        = 0x80030020\n\tSTG_E_LOCKVIOLATION                                                       Handle        = 0x80030021\n\tSTG_E_FILEALREADYEXISTS                                                   Handle        = 0x80030050\n\tSTG_E_INVALIDPARAMETER                                                    Handle        = 0x80030057\n\tSTG_E_MEDIUMFULL                                                          Handle        = 0x80030070\n\tSTG_E_PROPSETMISMATCHED                                                   Handle        = 0x800300F0\n\tSTG_E_ABNORMALAPIEXIT                                                     Handle        = 0x800300FA\n\tSTG_E_INVALIDHEADER                                                       Handle        = 0x800300FB\n\tSTG_E_INVALIDNAME                                                         Handle        = 0x800300FC\n\tSTG_E_UNKNOWN                                                             Handle        = 0x800300FD\n\tSTG_E_UNIMPLEMENTEDFUNCTION                                               Handle        = 0x800300FE\n\tSTG_E_INVALIDFLAG                                                         Handle        = 0x800300FF\n\tSTG_E_INUSE                                                               Handle        = 0x80030100\n\tSTG_E_NOTCURRENT                                                          Handle        = 0x80030101\n\tSTG_E_REVERTED                                                            Handle        = 0x80030102\n\tSTG_E_CANTSAVE                                                            Handle        = 0x80030103\n\tSTG_E_OLDFORMAT                                                           Handle        = 0x80030104\n\tSTG_E_OLDDLL                                                              Handle        = 0x80030105\n\tSTG_E_SHAREREQUIRED                                                       Handle        = 0x80030106\n\tSTG_E_NOTFILEBASEDSTORAGE                                                 Handle        = 0x80030107\n\tSTG_E_EXTANTMARSHALLINGS                                                  Handle        = 0x80030108\n\tSTG_E_DOCFILECORRUPT                                                      Handle        = 0x80030109\n\tSTG_E_BADBASEADDRESS                                                      Handle        = 0x80030110\n\tSTG_E_DOCFILETOOLARGE                                                     Handle        = 0x80030111\n\tSTG_E_NOTSIMPLEFORMAT                                                     Handle        = 0x80030112\n\tSTG_E_INCOMPLETE                                                          Handle        = 0x80030201\n\tSTG_E_TERMINATED                                                          Handle        = 0x80030202\n\tSTG_S_CONVERTED                                                           Handle        = 0x00030200\n\tSTG_S_BLOCK                                                               Handle        = 0x00030201\n\tSTG_S_RETRYNOW                                                            Handle        = 0x00030202\n\tSTG_S_MONITORING                                                          Handle        = 0x00030203\n\tSTG_S_MULTIPLEOPENS                                                       Handle        = 0x00030204\n\tSTG_S_CONSOLIDATIONFAILED                                                 Handle        = 0x00030205\n\tSTG_S_CANNOTCONSOLIDATE                                                   Handle        = 0x00030206\n\tSTG_S_POWER_CYCLE_REQUIRED                                                Handle        = 0x00030207\n\tSTG_E_FIRMWARE_SLOT_INVALID                                               Handle        = 0x80030208\n\tSTG_E_FIRMWARE_IMAGE_INVALID                                              Handle        = 0x80030209\n\tSTG_E_DEVICE_UNRESPONSIVE                                                 Handle        = 0x8003020A\n\tSTG_E_STATUS_COPY_PROTECTION_FAILURE                                      Handle        = 0x80030305\n\tSTG_E_CSS_AUTHENTICATION_FAILURE                                          Handle        = 0x80030306\n\tSTG_E_CSS_KEY_NOT_PRESENT                                                 Handle        = 0x80030307\n\tSTG_E_CSS_KEY_NOT_ESTABLISHED                                             Handle        = 0x80030308\n\tSTG_E_CSS_SCRAMBLED_SECTOR                                                Handle        = 0x80030309\n\tSTG_E_CSS_REGION_MISMATCH                                                 Handle        = 0x8003030A\n\tSTG_E_RESETS_EXHAUSTED                                                    Handle        = 0x8003030B\n\tRPC_E_CALL_REJECTED                                                       Handle        = 0x80010001\n\tRPC_E_CALL_CANCELED                                                       Handle        = 0x80010002\n\tRPC_E_CANTPOST_INSENDCALL                                                 Handle        = 0x80010003\n\tRPC_E_CANTCALLOUT_INASYNCCALL                                             Handle        = 0x80010004\n\tRPC_E_CANTCALLOUT_INEXTERNALCALL                                          Handle        = 0x80010005\n\tRPC_E_CONNECTION_TERMINATED                                               Handle        = 0x80010006\n\tRPC_E_SERVER_DIED                                                         Handle        = 0x80010007\n\tRPC_E_CLIENT_DIED                                                         Handle        = 0x80010008\n\tRPC_E_INVALID_DATAPACKET                                                  Handle        = 0x80010009\n\tRPC_E_CANTTRANSMIT_CALL                                                   Handle        = 0x8001000A\n\tRPC_E_CLIENT_CANTMARSHAL_DATA                                             Handle        = 0x8001000B\n\tRPC_E_CLIENT_CANTUNMARSHAL_DATA                                           Handle        = 0x8001000C\n\tRPC_E_SERVER_CANTMARSHAL_DATA                                             Handle        = 0x8001000D\n\tRPC_E_SERVER_CANTUNMARSHAL_DATA                                           Handle        = 0x8001000E\n\tRPC_E_INVALID_DATA                                                        Handle        = 0x8001000F\n\tRPC_E_INVALID_PARAMETER                                                   Handle        = 0x80010010\n\tRPC_E_CANTCALLOUT_AGAIN                                                   Handle        = 0x80010011\n\tRPC_E_SERVER_DIED_DNE                                                     Handle        = 0x80010012\n\tRPC_E_SYS_CALL_FAILED                                                     Handle        = 0x80010100\n\tRPC_E_OUT_OF_RESOURCES                                                    Handle        = 0x80010101\n\tRPC_E_ATTEMPTED_MULTITHREAD                                               Handle        = 0x80010102\n\tRPC_E_NOT_REGISTERED                                                      Handle        = 0x80010103\n\tRPC_E_FAULT                                                               Handle        = 0x80010104\n\tRPC_E_SERVERFAULT                                                         Handle        = 0x80010105\n\tRPC_E_CHANGED_MODE                                                        Handle        = 0x80010106\n\tRPC_E_INVALIDMETHOD                                                       Handle        = 0x80010107\n\tRPC_E_DISCONNECTED                                                        Handle        = 0x80010108\n\tRPC_E_RETRY                                                               Handle        = 0x80010109\n\tRPC_E_SERVERCALL_RETRYLATER                                               Handle        = 0x8001010A\n\tRPC_E_SERVERCALL_REJECTED                                                 Handle        = 0x8001010B\n\tRPC_E_INVALID_CALLDATA                                                    Handle        = 0x8001010C\n\tRPC_E_CANTCALLOUT_ININPUTSYNCCALL                                         Handle        = 0x8001010D\n\tRPC_E_WRONG_THREAD                                                        Handle        = 0x8001010E\n\tRPC_E_THREAD_NOT_INIT                                                     Handle        = 0x8001010F\n\tRPC_E_VERSION_MISMATCH                                                    Handle        = 0x80010110\n\tRPC_E_INVALID_HEADER                                                      Handle        = 0x80010111\n\tRPC_E_INVALID_EXTENSION                                                   Handle        = 0x80010112\n\tRPC_E_INVALID_IPID                                                        Handle        = 0x80010113\n\tRPC_E_INVALID_OBJECT                                                      Handle        = 0x80010114\n\tRPC_S_CALLPENDING                                                         Handle        = 0x80010115\n\tRPC_S_WAITONTIMER                                                         Handle        = 0x80010116\n\tRPC_E_CALL_COMPLETE                                                       Handle        = 0x80010117\n\tRPC_E_UNSECURE_CALL                                                       Handle        = 0x80010118\n\tRPC_E_TOO_LATE                                                            Handle        = 0x80010119\n\tRPC_E_NO_GOOD_SECURITY_PACKAGES                                           Handle        = 0x8001011A\n\tRPC_E_ACCESS_DENIED                                                       Handle        = 0x8001011B\n\tRPC_E_REMOTE_DISABLED                                                     Handle        = 0x8001011C\n\tRPC_E_INVALID_OBJREF                                                      Handle        = 0x8001011D\n\tRPC_E_NO_CONTEXT                                                          Handle        = 0x8001011E\n\tRPC_E_TIMEOUT                                                             Handle        = 0x8001011F\n\tRPC_E_NO_SYNC                                                             Handle        = 0x80010120\n\tRPC_E_FULLSIC_REQUIRED                                                    Handle        = 0x80010121\n\tRPC_E_INVALID_STD_NAME                                                    Handle        = 0x80010122\n\tCO_E_FAILEDTOIMPERSONATE                                                  Handle        = 0x80010123\n\tCO_E_FAILEDTOGETSECCTX                                                    Handle        = 0x80010124\n\tCO_E_FAILEDTOOPENTHREADTOKEN                                              Handle        = 0x80010125\n\tCO_E_FAILEDTOGETTOKENINFO                                                 Handle        = 0x80010126\n\tCO_E_TRUSTEEDOESNTMATCHCLIENT                                             Handle        = 0x80010127\n\tCO_E_FAILEDTOQUERYCLIENTBLANKET                                           Handle        = 0x80010128\n\tCO_E_FAILEDTOSETDACL                                                      Handle        = 0x80010129\n\tCO_E_ACCESSCHECKFAILED                                                    Handle        = 0x8001012A\n\tCO_E_NETACCESSAPIFAILED                                                   Handle        = 0x8001012B\n\tCO_E_WRONGTRUSTEENAMESYNTAX                                               Handle        = 0x8001012C\n\tCO_E_INVALIDSID                                                           Handle        = 0x8001012D\n\tCO_E_CONVERSIONFAILED                                                     Handle        = 0x8001012E\n\tCO_E_NOMATCHINGSIDFOUND                                                   Handle        = 0x8001012F\n\tCO_E_LOOKUPACCSIDFAILED                                                   Handle        = 0x80010130\n\tCO_E_NOMATCHINGNAMEFOUND                                                  Handle        = 0x80010131\n\tCO_E_LOOKUPACCNAMEFAILED                                                  Handle        = 0x80010132\n\tCO_E_SETSERLHNDLFAILED                                                    Handle        = 0x80010133\n\tCO_E_FAILEDTOGETWINDIR                                                    Handle        = 0x80010134\n\tCO_E_PATHTOOLONG                                                          Handle        = 0x80010135\n\tCO_E_FAILEDTOGENUUID                                                      Handle        = 0x80010136\n\tCO_E_FAILEDTOCREATEFILE                                                   Handle        = 0x80010137\n\tCO_E_FAILEDTOCLOSEHANDLE                                                  Handle        = 0x80010138\n\tCO_E_EXCEEDSYSACLLIMIT                                                    Handle        = 0x80010139\n\tCO_E_ACESINWRONGORDER                                                     Handle        = 0x8001013A\n\tCO_E_INCOMPATIBLESTREAMVERSION                                            Handle        = 0x8001013B\n\tCO_E_FAILEDTOOPENPROCESSTOKEN                                             Handle        = 0x8001013C\n\tCO_E_DECODEFAILED                                                         Handle        = 0x8001013D\n\tCO_E_ACNOTINITIALIZED                                                     Handle        = 0x8001013F\n\tCO_E_CANCEL_DISABLED                                                      Handle        = 0x80010140\n\tRPC_E_UNEXPECTED                                                          Handle        = 0x8001FFFF\n\tERROR_AUDITING_DISABLED                                                   Handle        = 0xC0090001\n\tERROR_ALL_SIDS_FILTERED                                                   Handle        = 0xC0090002\n\tERROR_BIZRULES_NOT_ENABLED                                                Handle        = 0xC0090003\n\tNTE_BAD_UID                                                               Handle        = 0x80090001\n\tNTE_BAD_HASH                                                              Handle        = 0x80090002\n\tNTE_BAD_KEY                                                               Handle        = 0x80090003\n\tNTE_BAD_LEN                                                               Handle        = 0x80090004\n\tNTE_BAD_DATA                                                              Handle        = 0x80090005\n\tNTE_BAD_SIGNATURE                                                         Handle        = 0x80090006\n\tNTE_BAD_VER                                                               Handle        = 0x80090007\n\tNTE_BAD_ALGID                                                             Handle        = 0x80090008\n\tNTE_BAD_FLAGS                                                             Handle        = 0x80090009\n\tNTE_BAD_TYPE                                                              Handle        = 0x8009000A\n\tNTE_BAD_KEY_STATE                                                         Handle        = 0x8009000B\n\tNTE_BAD_HASH_STATE                                                        Handle        = 0x8009000C\n\tNTE_NO_KEY                                                                Handle        = 0x8009000D\n\tNTE_NO_MEMORY                                                             Handle        = 0x8009000E\n\tNTE_EXISTS                                                                Handle        = 0x8009000F\n\tNTE_PERM                                                                  Handle        = 0x80090010\n\tNTE_NOT_FOUND                                                             Handle        = 0x80090011\n\tNTE_DOUBLE_ENCRYPT                                                        Handle        = 0x80090012\n\tNTE_BAD_PROVIDER                                                          Handle        = 0x80090013\n\tNTE_BAD_PROV_TYPE                                                         Handle        = 0x80090014\n\tNTE_BAD_PUBLIC_KEY                                                        Handle        = 0x80090015\n\tNTE_BAD_KEYSET                                                            Handle        = 0x80090016\n\tNTE_PROV_TYPE_NOT_DEF                                                     Handle        = 0x80090017\n\tNTE_PROV_TYPE_ENTRY_BAD                                                   Handle        = 0x80090018\n\tNTE_KEYSET_NOT_DEF                                                        Handle        = 0x80090019\n\tNTE_KEYSET_ENTRY_BAD                                                      Handle        = 0x8009001A\n\tNTE_PROV_TYPE_NO_MATCH                                                    Handle        = 0x8009001B\n\tNTE_SIGNATURE_FILE_BAD                                                    Handle        = 0x8009001C\n\tNTE_PROVIDER_DLL_FAIL                                                     Handle        = 0x8009001D\n\tNTE_PROV_DLL_NOT_FOUND                                                    Handle        = 0x8009001E\n\tNTE_BAD_KEYSET_PARAM                                                      Handle        = 0x8009001F\n\tNTE_FAIL                                                                  Handle        = 0x80090020\n\tNTE_SYS_ERR                                                               Handle        = 0x80090021\n\tNTE_SILENT_CONTEXT                                                        Handle        = 0x80090022\n\tNTE_TOKEN_KEYSET_STORAGE_FULL                                             Handle        = 0x80090023\n\tNTE_TEMPORARY_PROFILE                                                     Handle        = 0x80090024\n\tNTE_FIXEDPARAMETER                                                        Handle        = 0x80090025\n\tNTE_INVALID_HANDLE                                                        Handle        = 0x80090026\n\tNTE_INVALID_PARAMETER                                                     Handle        = 0x80090027\n\tNTE_BUFFER_TOO_SMALL                                                      Handle        = 0x80090028\n\tNTE_NOT_SUPPORTED                                                         Handle        = 0x80090029\n\tNTE_NO_MORE_ITEMS                                                         Handle        = 0x8009002A\n\tNTE_BUFFERS_OVERLAP                                                       Handle        = 0x8009002B\n\tNTE_DECRYPTION_FAILURE                                                    Handle        = 0x8009002C\n\tNTE_INTERNAL_ERROR                                                        Handle        = 0x8009002D\n\tNTE_UI_REQUIRED                                                           Handle        = 0x8009002E\n\tNTE_HMAC_NOT_SUPPORTED                                                    Handle        = 0x8009002F\n\tNTE_DEVICE_NOT_READY                                                      Handle        = 0x80090030\n\tNTE_AUTHENTICATION_IGNORED                                                Handle        = 0x80090031\n\tNTE_VALIDATION_FAILED                                                     Handle        = 0x80090032\n\tNTE_INCORRECT_PASSWORD                                                    Handle        = 0x80090033\n\tNTE_ENCRYPTION_FAILURE                                                    Handle        = 0x80090034\n\tNTE_DEVICE_NOT_FOUND                                                      Handle        = 0x80090035\n\tNTE_USER_CANCELLED                                                        Handle        = 0x80090036\n\tNTE_PASSWORD_CHANGE_REQUIRED                                              Handle        = 0x80090037\n\tNTE_NOT_ACTIVE_CONSOLE                                                    Handle        = 0x80090038\n\tSEC_E_INSUFFICIENT_MEMORY                                                 Handle        = 0x80090300\n\tSEC_E_INVALID_HANDLE                                                      Handle        = 0x80090301\n\tSEC_E_UNSUPPORTED_FUNCTION                                                Handle        = 0x80090302\n\tSEC_E_TARGET_UNKNOWN                                                      Handle        = 0x80090303\n\tSEC_E_INTERNAL_ERROR                                                      Handle        = 0x80090304\n\tSEC_E_SECPKG_NOT_FOUND                                                    Handle        = 0x80090305\n\tSEC_E_NOT_OWNER                                                           Handle        = 0x80090306\n\tSEC_E_CANNOT_INSTALL                                                      Handle        = 0x80090307\n\tSEC_E_INVALID_TOKEN                                                       Handle        = 0x80090308\n\tSEC_E_CANNOT_PACK                                                         Handle        = 0x80090309\n\tSEC_E_QOP_NOT_SUPPORTED                                                   Handle        = 0x8009030A\n\tSEC_E_NO_IMPERSONATION                                                    Handle        = 0x8009030B\n\tSEC_E_LOGON_DENIED                                                        Handle        = 0x8009030C\n\tSEC_E_UNKNOWN_CREDENTIALS                                                 Handle        = 0x8009030D\n\tSEC_E_NO_CREDENTIALS                                                      Handle        = 0x8009030E\n\tSEC_E_MESSAGE_ALTERED                                                     Handle        = 0x8009030F\n\tSEC_E_OUT_OF_SEQUENCE                                                     Handle        = 0x80090310\n\tSEC_E_NO_AUTHENTICATING_AUTHORITY                                         Handle        = 0x80090311\n\tSEC_I_CONTINUE_NEEDED                                                     Handle        = 0x00090312\n\tSEC_I_COMPLETE_NEEDED                                                     Handle        = 0x00090313\n\tSEC_I_COMPLETE_AND_CONTINUE                                               Handle        = 0x00090314\n\tSEC_I_LOCAL_LOGON                                                         Handle        = 0x00090315\n\tSEC_I_GENERIC_EXTENSION_RECEIVED                                          Handle        = 0x00090316\n\tSEC_E_BAD_PKGID                                                           Handle        = 0x80090316\n\tSEC_E_CONTEXT_EXPIRED                                                     Handle        = 0x80090317\n\tSEC_I_CONTEXT_EXPIRED                                                     Handle        = 0x00090317\n\tSEC_E_INCOMPLETE_MESSAGE                                                  Handle        = 0x80090318\n\tSEC_E_INCOMPLETE_CREDENTIALS                                              Handle        = 0x80090320\n\tSEC_E_BUFFER_TOO_SMALL                                                    Handle        = 0x80090321\n\tSEC_I_INCOMPLETE_CREDENTIALS                                              Handle        = 0x00090320\n\tSEC_I_RENEGOTIATE                                                         Handle        = 0x00090321\n\tSEC_E_WRONG_PRINCIPAL                                                     Handle        = 0x80090322\n\tSEC_I_NO_LSA_CONTEXT                                                      Handle        = 0x00090323\n\tSEC_E_TIME_SKEW                                                           Handle        = 0x80090324\n\tSEC_E_UNTRUSTED_ROOT                                                      Handle        = 0x80090325\n\tSEC_E_ILLEGAL_MESSAGE                                                     Handle        = 0x80090326\n\tSEC_E_CERT_UNKNOWN                                                        Handle        = 0x80090327\n\tSEC_E_CERT_EXPIRED                                                        Handle        = 0x80090328\n\tSEC_E_ENCRYPT_FAILURE                                                     Handle        = 0x80090329\n\tSEC_E_DECRYPT_FAILURE                                                     Handle        = 0x80090330\n\tSEC_E_ALGORITHM_MISMATCH                                                  Handle        = 0x80090331\n\tSEC_E_SECURITY_QOS_FAILED                                                 Handle        = 0x80090332\n\tSEC_E_UNFINISHED_CONTEXT_DELETED                                          Handle        = 0x80090333\n\tSEC_E_NO_TGT_REPLY                                                        Handle        = 0x80090334\n\tSEC_E_NO_IP_ADDRESSES                                                     Handle        = 0x80090335\n\tSEC_E_WRONG_CREDENTIAL_HANDLE                                             Handle        = 0x80090336\n\tSEC_E_CRYPTO_SYSTEM_INVALID                                               Handle        = 0x80090337\n\tSEC_E_MAX_REFERRALS_EXCEEDED                                              Handle        = 0x80090338\n\tSEC_E_MUST_BE_KDC                                                         Handle        = 0x80090339\n\tSEC_E_STRONG_CRYPTO_NOT_SUPPORTED                                         Handle        = 0x8009033A\n\tSEC_E_TOO_MANY_PRINCIPALS                                                 Handle        = 0x8009033B\n\tSEC_E_NO_PA_DATA                                                          Handle        = 0x8009033C\n\tSEC_E_PKINIT_NAME_MISMATCH                                                Handle        = 0x8009033D\n\tSEC_E_SMARTCARD_LOGON_REQUIRED                                            Handle        = 0x8009033E\n\tSEC_E_SHUTDOWN_IN_PROGRESS                                                Handle        = 0x8009033F\n\tSEC_E_KDC_INVALID_REQUEST                                                 Handle        = 0x80090340\n\tSEC_E_KDC_UNABLE_TO_REFER                                                 Handle        = 0x80090341\n\tSEC_E_KDC_UNKNOWN_ETYPE                                                   Handle        = 0x80090342\n\tSEC_E_UNSUPPORTED_PREAUTH                                                 Handle        = 0x80090343\n\tSEC_E_DELEGATION_REQUIRED                                                 Handle        = 0x80090345\n\tSEC_E_BAD_BINDINGS                                                        Handle        = 0x80090346\n\tSEC_E_MULTIPLE_ACCOUNTS                                                   Handle        = 0x80090347\n\tSEC_E_NO_KERB_KEY                                                         Handle        = 0x80090348\n\tSEC_E_CERT_WRONG_USAGE                                                    Handle        = 0x80090349\n\tSEC_E_DOWNGRADE_DETECTED                                                  Handle        = 0x80090350\n\tSEC_E_SMARTCARD_CERT_REVOKED                                              Handle        = 0x80090351\n\tSEC_E_ISSUING_CA_UNTRUSTED                                                Handle        = 0x80090352\n\tSEC_E_REVOCATION_OFFLINE_C                                                Handle        = 0x80090353\n\tSEC_E_PKINIT_CLIENT_FAILURE                                               Handle        = 0x80090354\n\tSEC_E_SMARTCARD_CERT_EXPIRED                                              Handle        = 0x80090355\n\tSEC_E_NO_S4U_PROT_SUPPORT                                                 Handle        = 0x80090356\n\tSEC_E_CROSSREALM_DELEGATION_FAILURE                                       Handle        = 0x80090357\n\tSEC_E_REVOCATION_OFFLINE_KDC                                              Handle        = 0x80090358\n\tSEC_E_ISSUING_CA_UNTRUSTED_KDC                                            Handle        = 0x80090359\n\tSEC_E_KDC_CERT_EXPIRED                                                    Handle        = 0x8009035A\n\tSEC_E_KDC_CERT_REVOKED                                                    Handle        = 0x8009035B\n\tSEC_I_SIGNATURE_NEEDED                                                    Handle        = 0x0009035C\n\tSEC_E_INVALID_PARAMETER                                                   Handle        = 0x8009035D\n\tSEC_E_DELEGATION_POLICY                                                   Handle        = 0x8009035E\n\tSEC_E_POLICY_NLTM_ONLY                                                    Handle        = 0x8009035F\n\tSEC_I_NO_RENEGOTIATION                                                    Handle        = 0x00090360\n\tSEC_E_NO_CONTEXT                                                          Handle        = 0x80090361\n\tSEC_E_PKU2U_CERT_FAILURE                                                  Handle        = 0x80090362\n\tSEC_E_MUTUAL_AUTH_FAILED                                                  Handle        = 0x80090363\n\tSEC_I_MESSAGE_FRAGMENT                                                    Handle        = 0x00090364\n\tSEC_E_ONLY_HTTPS_ALLOWED                                                  Handle        = 0x80090365\n\tSEC_I_CONTINUE_NEEDED_MESSAGE_OK                                          Handle        = 0x00090366\n\tSEC_E_APPLICATION_PROTOCOL_MISMATCH                                       Handle        = 0x80090367\n\tSEC_I_ASYNC_CALL_PENDING                                                  Handle        = 0x00090368\n\tSEC_E_INVALID_UPN_NAME                                                    Handle        = 0x80090369\n\tSEC_E_EXT_BUFFER_TOO_SMALL                                                Handle        = 0x8009036A\n\tSEC_E_INSUFFICIENT_BUFFERS                                                Handle        = 0x8009036B\n\tSEC_E_NO_SPM                                                                            = SEC_E_INTERNAL_ERROR\n\tSEC_E_NOT_SUPPORTED                                                                     = SEC_E_UNSUPPORTED_FUNCTION\n\tCRYPT_E_MSG_ERROR                                                         Handle        = 0x80091001\n\tCRYPT_E_UNKNOWN_ALGO                                                      Handle        = 0x80091002\n\tCRYPT_E_OID_FORMAT                                                        Handle        = 0x80091003\n\tCRYPT_E_INVALID_MSG_TYPE                                                  Handle        = 0x80091004\n\tCRYPT_E_UNEXPECTED_ENCODING                                               Handle        = 0x80091005\n\tCRYPT_E_AUTH_ATTR_MISSING                                                 Handle        = 0x80091006\n\tCRYPT_E_HASH_VALUE                                                        Handle        = 0x80091007\n\tCRYPT_E_INVALID_INDEX                                                     Handle        = 0x80091008\n\tCRYPT_E_ALREADY_DECRYPTED                                                 Handle        = 0x80091009\n\tCRYPT_E_NOT_DECRYPTED                                                     Handle        = 0x8009100A\n\tCRYPT_E_RECIPIENT_NOT_FOUND                                               Handle        = 0x8009100B\n\tCRYPT_E_CONTROL_TYPE                                                      Handle        = 0x8009100C\n\tCRYPT_E_ISSUER_SERIALNUMBER                                               Handle        = 0x8009100D\n\tCRYPT_E_SIGNER_NOT_FOUND                                                  Handle        = 0x8009100E\n\tCRYPT_E_ATTRIBUTES_MISSING                                                Handle        = 0x8009100F\n\tCRYPT_E_STREAM_MSG_NOT_READY                                              Handle        = 0x80091010\n\tCRYPT_E_STREAM_INSUFFICIENT_DATA                                          Handle        = 0x80091011\n\tCRYPT_I_NEW_PROTECTION_REQUIRED                                           Handle        = 0x00091012\n\tCRYPT_E_BAD_LEN                                                           Handle        = 0x80092001\n\tCRYPT_E_BAD_ENCODE                                                        Handle        = 0x80092002\n\tCRYPT_E_FILE_ERROR                                                        Handle        = 0x80092003\n\tCRYPT_E_NOT_FOUND                                                         Handle        = 0x80092004\n\tCRYPT_E_EXISTS                                                            Handle        = 0x80092005\n\tCRYPT_E_NO_PROVIDER                                                       Handle        = 0x80092006\n\tCRYPT_E_SELF_SIGNED                                                       Handle        = 0x80092007\n\tCRYPT_E_DELETED_PREV                                                      Handle        = 0x80092008\n\tCRYPT_E_NO_MATCH                                                          Handle        = 0x80092009\n\tCRYPT_E_UNEXPECTED_MSG_TYPE                                               Handle        = 0x8009200A\n\tCRYPT_E_NO_KEY_PROPERTY                                                   Handle        = 0x8009200B\n\tCRYPT_E_NO_DECRYPT_CERT                                                   Handle        = 0x8009200C\n\tCRYPT_E_BAD_MSG                                                           Handle        = 0x8009200D\n\tCRYPT_E_NO_SIGNER                                                         Handle        = 0x8009200E\n\tCRYPT_E_PENDING_CLOSE                                                     Handle        = 0x8009200F\n\tCRYPT_E_REVOKED                                                           Handle        = 0x80092010\n\tCRYPT_E_NO_REVOCATION_DLL                                                 Handle        = 0x80092011\n\tCRYPT_E_NO_REVOCATION_CHECK                                               Handle        = 0x80092012\n\tCRYPT_E_REVOCATION_OFFLINE                                                Handle        = 0x80092013\n\tCRYPT_E_NOT_IN_REVOCATION_DATABASE                                        Handle        = 0x80092014\n\tCRYPT_E_INVALID_NUMERIC_STRING                                            Handle        = 0x80092020\n\tCRYPT_E_INVALID_PRINTABLE_STRING                                          Handle        = 0x80092021\n\tCRYPT_E_INVALID_IA5_STRING                                                Handle        = 0x80092022\n\tCRYPT_E_INVALID_X500_STRING                                               Handle        = 0x80092023\n\tCRYPT_E_NOT_CHAR_STRING                                                   Handle        = 0x80092024\n\tCRYPT_E_FILERESIZED                                                       Handle        = 0x80092025\n\tCRYPT_E_SECURITY_SETTINGS                                                 Handle        = 0x80092026\n\tCRYPT_E_NO_VERIFY_USAGE_DLL                                               Handle        = 0x80092027\n\tCRYPT_E_NO_VERIFY_USAGE_CHECK                                             Handle        = 0x80092028\n\tCRYPT_E_VERIFY_USAGE_OFFLINE                                              Handle        = 0x80092029\n\tCRYPT_E_NOT_IN_CTL                                                        Handle        = 0x8009202A\n\tCRYPT_E_NO_TRUSTED_SIGNER                                                 Handle        = 0x8009202B\n\tCRYPT_E_MISSING_PUBKEY_PARA                                               Handle        = 0x8009202C\n\tCRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND                                   Handle        = 0x8009202D\n\tCRYPT_E_OSS_ERROR                                                         Handle        = 0x80093000\n\tOSS_MORE_BUF                                                              Handle        = 0x80093001\n\tOSS_NEGATIVE_UINTEGER                                                     Handle        = 0x80093002\n\tOSS_PDU_RANGE                                                             Handle        = 0x80093003\n\tOSS_MORE_INPUT                                                            Handle        = 0x80093004\n\tOSS_DATA_ERROR                                                            Handle        = 0x80093005\n\tOSS_BAD_ARG                                                               Handle        = 0x80093006\n\tOSS_BAD_VERSION                                                           Handle        = 0x80093007\n\tOSS_OUT_MEMORY                                                            Handle        = 0x80093008\n\tOSS_PDU_MISMATCH                                                          Handle        = 0x80093009\n\tOSS_LIMITED                                                               Handle        = 0x8009300A\n\tOSS_BAD_PTR                                                               Handle        = 0x8009300B\n\tOSS_BAD_TIME                                                              Handle        = 0x8009300C\n\tOSS_INDEFINITE_NOT_SUPPORTED                                              Handle        = 0x8009300D\n\tOSS_MEM_ERROR                                                             Handle        = 0x8009300E\n\tOSS_BAD_TABLE                                                             Handle        = 0x8009300F\n\tOSS_TOO_LONG                                                              Handle        = 0x80093010\n\tOSS_CONSTRAINT_VIOLATED                                                   Handle        = 0x80093011\n\tOSS_FATAL_ERROR                                                           Handle        = 0x80093012\n\tOSS_ACCESS_SERIALIZATION_ERROR                                            Handle        = 0x80093013\n\tOSS_NULL_TBL                                                              Handle        = 0x80093014\n\tOSS_NULL_FCN                                                              Handle        = 0x80093015\n\tOSS_BAD_ENCRULES                                                          Handle        = 0x80093016\n\tOSS_UNAVAIL_ENCRULES                                                      Handle        = 0x80093017\n\tOSS_CANT_OPEN_TRACE_WINDOW                                                Handle        = 0x80093018\n\tOSS_UNIMPLEMENTED                                                         Handle        = 0x80093019\n\tOSS_OID_DLL_NOT_LINKED                                                    Handle        = 0x8009301A\n\tOSS_CANT_OPEN_TRACE_FILE                                                  Handle        = 0x8009301B\n\tOSS_TRACE_FILE_ALREADY_OPEN                                               Handle        = 0x8009301C\n\tOSS_TABLE_MISMATCH                                                        Handle        = 0x8009301D\n\tOSS_TYPE_NOT_SUPPORTED                                                    Handle        = 0x8009301E\n\tOSS_REAL_DLL_NOT_LINKED                                                   Handle        = 0x8009301F\n\tOSS_REAL_CODE_NOT_LINKED                                                  Handle        = 0x80093020\n\tOSS_OUT_OF_RANGE                                                          Handle        = 0x80093021\n\tOSS_COPIER_DLL_NOT_LINKED                                                 Handle        = 0x80093022\n\tOSS_CONSTRAINT_DLL_NOT_LINKED                                             Handle        = 0x80093023\n\tOSS_COMPARATOR_DLL_NOT_LINKED                                             Handle        = 0x80093024\n\tOSS_COMPARATOR_CODE_NOT_LINKED                                            Handle        = 0x80093025\n\tOSS_MEM_MGR_DLL_NOT_LINKED                                                Handle        = 0x80093026\n\tOSS_PDV_DLL_NOT_LINKED                                                    Handle        = 0x80093027\n\tOSS_PDV_CODE_NOT_LINKED                                                   Handle        = 0x80093028\n\tOSS_API_DLL_NOT_LINKED                                                    Handle        = 0x80093029\n\tOSS_BERDER_DLL_NOT_LINKED                                                 Handle        = 0x8009302A\n\tOSS_PER_DLL_NOT_LINKED                                                    Handle        = 0x8009302B\n\tOSS_OPEN_TYPE_ERROR                                                       Handle        = 0x8009302C\n\tOSS_MUTEX_NOT_CREATED                                                     Handle        = 0x8009302D\n\tOSS_CANT_CLOSE_TRACE_FILE                                                 Handle        = 0x8009302E\n\tCRYPT_E_ASN1_ERROR                                                        Handle        = 0x80093100\n\tCRYPT_E_ASN1_INTERNAL                                                     Handle        = 0x80093101\n\tCRYPT_E_ASN1_EOD                                                          Handle        = 0x80093102\n\tCRYPT_E_ASN1_CORRUPT                                                      Handle        = 0x80093103\n\tCRYPT_E_ASN1_LARGE                                                        Handle        = 0x80093104\n\tCRYPT_E_ASN1_CONSTRAINT                                                   Handle        = 0x80093105\n\tCRYPT_E_ASN1_MEMORY                                                       Handle        = 0x80093106\n\tCRYPT_E_ASN1_OVERFLOW                                                     Handle        = 0x80093107\n\tCRYPT_E_ASN1_BADPDU                                                       Handle        = 0x80093108\n\tCRYPT_E_ASN1_BADARGS                                                      Handle        = 0x80093109\n\tCRYPT_E_ASN1_BADREAL                                                      Handle        = 0x8009310A\n\tCRYPT_E_ASN1_BADTAG                                                       Handle        = 0x8009310B\n\tCRYPT_E_ASN1_CHOICE                                                       Handle        = 0x8009310C\n\tCRYPT_E_ASN1_RULE                                                         Handle        = 0x8009310D\n\tCRYPT_E_ASN1_UTF8                                                         Handle        = 0x8009310E\n\tCRYPT_E_ASN1_PDU_TYPE                                                     Handle        = 0x80093133\n\tCRYPT_E_ASN1_NYI                                                          Handle        = 0x80093134\n\tCRYPT_E_ASN1_EXTENDED                                                     Handle        = 0x80093201\n\tCRYPT_E_ASN1_NOEOD                                                        Handle        = 0x80093202\n\tCERTSRV_E_BAD_REQUESTSUBJECT                                              Handle        = 0x80094001\n\tCERTSRV_E_NO_REQUEST                                                      Handle        = 0x80094002\n\tCERTSRV_E_BAD_REQUESTSTATUS                                               Handle        = 0x80094003\n\tCERTSRV_E_PROPERTY_EMPTY                                                  Handle        = 0x80094004\n\tCERTSRV_E_INVALID_CA_CERTIFICATE                                          Handle        = 0x80094005\n\tCERTSRV_E_SERVER_SUSPENDED                                                Handle        = 0x80094006\n\tCERTSRV_E_ENCODING_LENGTH                                                 Handle        = 0x80094007\n\tCERTSRV_E_ROLECONFLICT                                                    Handle        = 0x80094008\n\tCERTSRV_E_RESTRICTEDOFFICER                                               Handle        = 0x80094009\n\tCERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED                                     Handle        = 0x8009400A\n\tCERTSRV_E_NO_VALID_KRA                                                    Handle        = 0x8009400B\n\tCERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL                                        Handle        = 0x8009400C\n\tCERTSRV_E_NO_CAADMIN_DEFINED                                              Handle        = 0x8009400D\n\tCERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE                                      Handle        = 0x8009400E\n\tCERTSRV_E_NO_DB_SESSIONS                                                  Handle        = 0x8009400F\n\tCERTSRV_E_ALIGNMENT_FAULT                                                 Handle        = 0x80094010\n\tCERTSRV_E_ENROLL_DENIED                                                   Handle        = 0x80094011\n\tCERTSRV_E_TEMPLATE_DENIED                                                 Handle        = 0x80094012\n\tCERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE                                     Handle        = 0x80094013\n\tCERTSRV_E_ADMIN_DENIED_REQUEST                                            Handle        = 0x80094014\n\tCERTSRV_E_NO_POLICY_SERVER                                                Handle        = 0x80094015\n\tCERTSRV_E_WEAK_SIGNATURE_OR_KEY                                           Handle        = 0x80094016\n\tCERTSRV_E_KEY_ATTESTATION_NOT_SUPPORTED                                   Handle        = 0x80094017\n\tCERTSRV_E_ENCRYPTION_CERT_REQUIRED                                        Handle        = 0x80094018\n\tCERTSRV_E_UNSUPPORTED_CERT_TYPE                                           Handle        = 0x80094800\n\tCERTSRV_E_NO_CERT_TYPE                                                    Handle        = 0x80094801\n\tCERTSRV_E_TEMPLATE_CONFLICT                                               Handle        = 0x80094802\n\tCERTSRV_E_SUBJECT_ALT_NAME_REQUIRED                                       Handle        = 0x80094803\n\tCERTSRV_E_ARCHIVED_KEY_REQUIRED                                           Handle        = 0x80094804\n\tCERTSRV_E_SMIME_REQUIRED                                                  Handle        = 0x80094805\n\tCERTSRV_E_BAD_RENEWAL_SUBJECT                                             Handle        = 0x80094806\n\tCERTSRV_E_BAD_TEMPLATE_VERSION                                            Handle        = 0x80094807\n\tCERTSRV_E_TEMPLATE_POLICY_REQUIRED                                        Handle        = 0x80094808\n\tCERTSRV_E_SIGNATURE_POLICY_REQUIRED                                       Handle        = 0x80094809\n\tCERTSRV_E_SIGNATURE_COUNT                                                 Handle        = 0x8009480A\n\tCERTSRV_E_SIGNATURE_REJECTED                                              Handle        = 0x8009480B\n\tCERTSRV_E_ISSUANCE_POLICY_REQUIRED                                        Handle        = 0x8009480C\n\tCERTSRV_E_SUBJECT_UPN_REQUIRED                                            Handle        = 0x8009480D\n\tCERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED                                 Handle        = 0x8009480E\n\tCERTSRV_E_SUBJECT_DNS_REQUIRED                                            Handle        = 0x8009480F\n\tCERTSRV_E_ARCHIVED_KEY_UNEXPECTED                                         Handle        = 0x80094810\n\tCERTSRV_E_KEY_LENGTH                                                      Handle        = 0x80094811\n\tCERTSRV_E_SUBJECT_EMAIL_REQUIRED                                          Handle        = 0x80094812\n\tCERTSRV_E_UNKNOWN_CERT_TYPE                                               Handle        = 0x80094813\n\tCERTSRV_E_CERT_TYPE_OVERLAP                                               Handle        = 0x80094814\n\tCERTSRV_E_TOO_MANY_SIGNATURES                                             Handle        = 0x80094815\n\tCERTSRV_E_RENEWAL_BAD_PUBLIC_KEY                                          Handle        = 0x80094816\n\tCERTSRV_E_INVALID_EK                                                      Handle        = 0x80094817\n\tCERTSRV_E_INVALID_IDBINDING                                               Handle        = 0x80094818\n\tCERTSRV_E_INVALID_ATTESTATION                                             Handle        = 0x80094819\n\tCERTSRV_E_KEY_ATTESTATION                                                 Handle        = 0x8009481A\n\tCERTSRV_E_CORRUPT_KEY_ATTESTATION                                         Handle        = 0x8009481B\n\tCERTSRV_E_EXPIRED_CHALLENGE                                               Handle        = 0x8009481C\n\tCERTSRV_E_INVALID_RESPONSE                                                Handle        = 0x8009481D\n\tCERTSRV_E_INVALID_REQUESTID                                               Handle        = 0x8009481E\n\tCERTSRV_E_REQUEST_PRECERTIFICATE_MISMATCH                                 Handle        = 0x8009481F\n\tCERTSRV_E_PENDING_CLIENT_RESPONSE                                         Handle        = 0x80094820\n\tXENROLL_E_KEY_NOT_EXPORTABLE                                              Handle        = 0x80095000\n\tXENROLL_E_CANNOT_ADD_ROOT_CERT                                            Handle        = 0x80095001\n\tXENROLL_E_RESPONSE_KA_HASH_NOT_FOUND                                      Handle        = 0x80095002\n\tXENROLL_E_RESPONSE_UNEXPECTED_KA_HASH                                     Handle        = 0x80095003\n\tXENROLL_E_RESPONSE_KA_HASH_MISMATCH                                       Handle        = 0x80095004\n\tXENROLL_E_KEYSPEC_SMIME_MISMATCH                                          Handle        = 0x80095005\n\tTRUST_E_SYSTEM_ERROR                                                      Handle        = 0x80096001\n\tTRUST_E_NO_SIGNER_CERT                                                    Handle        = 0x80096002\n\tTRUST_E_COUNTER_SIGNER                                                    Handle        = 0x80096003\n\tTRUST_E_CERT_SIGNATURE                                                    Handle        = 0x80096004\n\tTRUST_E_TIME_STAMP                                                        Handle        = 0x80096005\n\tTRUST_E_BAD_DIGEST                                                        Handle        = 0x80096010\n\tTRUST_E_MALFORMED_SIGNATURE                                               Handle        = 0x80096011\n\tTRUST_E_BASIC_CONSTRAINTS                                                 Handle        = 0x80096019\n\tTRUST_E_FINANCIAL_CRITERIA                                                Handle        = 0x8009601E\n\tMSSIPOTF_E_OUTOFMEMRANGE                                                  Handle        = 0x80097001\n\tMSSIPOTF_E_CANTGETOBJECT                                                  Handle        = 0x80097002\n\tMSSIPOTF_E_NOHEADTABLE                                                    Handle        = 0x80097003\n\tMSSIPOTF_E_BAD_MAGICNUMBER                                                Handle        = 0x80097004\n\tMSSIPOTF_E_BAD_OFFSET_TABLE                                               Handle        = 0x80097005\n\tMSSIPOTF_E_TABLE_TAGORDER                                                 Handle        = 0x80097006\n\tMSSIPOTF_E_TABLE_LONGWORD                                                 Handle        = 0x80097007\n\tMSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT                                      Handle        = 0x80097008\n\tMSSIPOTF_E_TABLES_OVERLAP                                                 Handle        = 0x80097009\n\tMSSIPOTF_E_TABLE_PADBYTES                                                 Handle        = 0x8009700A\n\tMSSIPOTF_E_FILETOOSMALL                                                   Handle        = 0x8009700B\n\tMSSIPOTF_E_TABLE_CHECKSUM                                                 Handle        = 0x8009700C\n\tMSSIPOTF_E_FILE_CHECKSUM                                                  Handle        = 0x8009700D\n\tMSSIPOTF_E_FAILED_POLICY                                                  Handle        = 0x80097010\n\tMSSIPOTF_E_FAILED_HINTS_CHECK                                             Handle        = 0x80097011\n\tMSSIPOTF_E_NOT_OPENTYPE                                                   Handle        = 0x80097012\n\tMSSIPOTF_E_FILE                                                           Handle        = 0x80097013\n\tMSSIPOTF_E_CRYPT                                                          Handle        = 0x80097014\n\tMSSIPOTF_E_BADVERSION                                                     Handle        = 0x80097015\n\tMSSIPOTF_E_DSIG_STRUCTURE                                                 Handle        = 0x80097016\n\tMSSIPOTF_E_PCONST_CHECK                                                   Handle        = 0x80097017\n\tMSSIPOTF_E_STRUCTURE                                                      Handle        = 0x80097018\n\tERROR_CRED_REQUIRES_CONFIRMATION                                          Handle        = 0x80097019\n\tNTE_OP_OK                                                                 syscall.Errno = 0\n\tTRUST_E_PROVIDER_UNKNOWN                                                  Handle        = 0x800B0001\n\tTRUST_E_ACTION_UNKNOWN                                                    Handle        = 0x800B0002\n\tTRUST_E_SUBJECT_FORM_UNKNOWN                                              Handle        = 0x800B0003\n\tTRUST_E_SUBJECT_NOT_TRUSTED                                               Handle        = 0x800B0004\n\tDIGSIG_E_ENCODE                                                           Handle        = 0x800B0005\n\tDIGSIG_E_DECODE                                                           Handle        = 0x800B0006\n\tDIGSIG_E_EXTENSIBILITY                                                    Handle        = 0x800B0007\n\tDIGSIG_E_CRYPTO                                                           Handle        = 0x800B0008\n\tPERSIST_E_SIZEDEFINITE                                                    Handle        = 0x800B0009\n\tPERSIST_E_SIZEINDEFINITE                                                  Handle        = 0x800B000A\n\tPERSIST_E_NOTSELFSIZING                                                   Handle        = 0x800B000B\n\tTRUST_E_NOSIGNATURE                                                       Handle        = 0x800B0100\n\tCERT_E_EXPIRED                                                            Handle        = 0x800B0101\n\tCERT_E_VALIDITYPERIODNESTING                                              Handle        = 0x800B0102\n\tCERT_E_ROLE                                                               Handle        = 0x800B0103\n\tCERT_E_PATHLENCONST                                                       Handle        = 0x800B0104\n\tCERT_E_CRITICAL                                                           Handle        = 0x800B0105\n\tCERT_E_PURPOSE                                                            Handle        = 0x800B0106\n\tCERT_E_ISSUERCHAINING                                                     Handle        = 0x800B0107\n\tCERT_E_MALFORMED                                                          Handle        = 0x800B0108\n\tCERT_E_UNTRUSTEDROOT                                                      Handle        = 0x800B0109\n\tCERT_E_CHAINING                                                           Handle        = 0x800B010A\n\tTRUST_E_FAIL                                                              Handle        = 0x800B010B\n\tCERT_E_REVOKED                                                            Handle        = 0x800B010C\n\tCERT_E_UNTRUSTEDTESTROOT                                                  Handle        = 0x800B010D\n\tCERT_E_REVOCATION_FAILURE                                                 Handle        = 0x800B010E\n\tCERT_E_CN_NO_MATCH                                                        Handle        = 0x800B010F\n\tCERT_E_WRONG_USAGE                                                        Handle        = 0x800B0110\n\tTRUST_E_EXPLICIT_DISTRUST                                                 Handle        = 0x800B0111\n\tCERT_E_UNTRUSTEDCA                                                        Handle        = 0x800B0112\n\tCERT_E_INVALID_POLICY                                                     Handle        = 0x800B0113\n\tCERT_E_INVALID_NAME                                                       Handle        = 0x800B0114\n\tSPAPI_E_EXPECTED_SECTION_NAME                                             Handle        = 0x800F0000\n\tSPAPI_E_BAD_SECTION_NAME_LINE                                             Handle        = 0x800F0001\n\tSPAPI_E_SECTION_NAME_TOO_LONG                                             Handle        = 0x800F0002\n\tSPAPI_E_GENERAL_SYNTAX                                                    Handle        = 0x800F0003\n\tSPAPI_E_WRONG_INF_STYLE                                                   Handle        = 0x800F0100\n\tSPAPI_E_SECTION_NOT_FOUND                                                 Handle        = 0x800F0101\n\tSPAPI_E_LINE_NOT_FOUND                                                    Handle        = 0x800F0102\n\tSPAPI_E_NO_BACKUP                                                         Handle        = 0x800F0103\n\tSPAPI_E_NO_ASSOCIATED_CLASS                                               Handle        = 0x800F0200\n\tSPAPI_E_CLASS_MISMATCH                                                    Handle        = 0x800F0201\n\tSPAPI_E_DUPLICATE_FOUND                                                   Handle        = 0x800F0202\n\tSPAPI_E_NO_DRIVER_SELECTED                                                Handle        = 0x800F0203\n\tSPAPI_E_KEY_DOES_NOT_EXIST                                                Handle        = 0x800F0204\n\tSPAPI_E_INVALID_DEVINST_NAME                                              Handle        = 0x800F0205\n\tSPAPI_E_INVALID_CLASS                                                     Handle        = 0x800F0206\n\tSPAPI_E_DEVINST_ALREADY_EXISTS                                            Handle        = 0x800F0207\n\tSPAPI_E_DEVINFO_NOT_REGISTERED                                            Handle        = 0x800F0208\n\tSPAPI_E_INVALID_REG_PROPERTY                                              Handle        = 0x800F0209\n\tSPAPI_E_NO_INF                                                            Handle        = 0x800F020A\n\tSPAPI_E_NO_SUCH_DEVINST                                                   Handle        = 0x800F020B\n\tSPAPI_E_CANT_LOAD_CLASS_ICON                                              Handle        = 0x800F020C\n\tSPAPI_E_INVALID_CLASS_INSTALLER                                           Handle        = 0x800F020D\n\tSPAPI_E_DI_DO_DEFAULT                                                     Handle        = 0x800F020E\n\tSPAPI_E_DI_NOFILECOPY                                                     Handle        = 0x800F020F\n\tSPAPI_E_INVALID_HWPROFILE                                                 Handle        = 0x800F0210\n\tSPAPI_E_NO_DEVICE_SELECTED                                                Handle        = 0x800F0211\n\tSPAPI_E_DEVINFO_LIST_LOCKED                                               Handle        = 0x800F0212\n\tSPAPI_E_DEVINFO_DATA_LOCKED                                               Handle        = 0x800F0213\n\tSPAPI_E_DI_BAD_PATH                                                       Handle        = 0x800F0214\n\tSPAPI_E_NO_CLASSINSTALL_PARAMS                                            Handle        = 0x800F0215\n\tSPAPI_E_FILEQUEUE_LOCKED                                                  Handle        = 0x800F0216\n\tSPAPI_E_BAD_SERVICE_INSTALLSECT                                           Handle        = 0x800F0217\n\tSPAPI_E_NO_CLASS_DRIVER_LIST                                              Handle        = 0x800F0218\n\tSPAPI_E_NO_ASSOCIATED_SERVICE                                             Handle        = 0x800F0219\n\tSPAPI_E_NO_DEFAULT_DEVICE_INTERFACE                                       Handle        = 0x800F021A\n\tSPAPI_E_DEVICE_INTERFACE_ACTIVE                                           Handle        = 0x800F021B\n\tSPAPI_E_DEVICE_INTERFACE_REMOVED                                          Handle        = 0x800F021C\n\tSPAPI_E_BAD_INTERFACE_INSTALLSECT                                         Handle        = 0x800F021D\n\tSPAPI_E_NO_SUCH_INTERFACE_CLASS                                           Handle        = 0x800F021E\n\tSPAPI_E_INVALID_REFERENCE_STRING                                          Handle        = 0x800F021F\n\tSPAPI_E_INVALID_MACHINENAME                                               Handle        = 0x800F0220\n\tSPAPI_E_REMOTE_COMM_FAILURE                                               Handle        = 0x800F0221\n\tSPAPI_E_MACHINE_UNAVAILABLE                                               Handle        = 0x800F0222\n\tSPAPI_E_NO_CONFIGMGR_SERVICES                                             Handle        = 0x800F0223\n\tSPAPI_E_INVALID_PROPPAGE_PROVIDER                                         Handle        = 0x800F0224\n\tSPAPI_E_NO_SUCH_DEVICE_INTERFACE                                          Handle        = 0x800F0225\n\tSPAPI_E_DI_POSTPROCESSING_REQUIRED                                        Handle        = 0x800F0226\n\tSPAPI_E_INVALID_COINSTALLER                                               Handle        = 0x800F0227\n\tSPAPI_E_NO_COMPAT_DRIVERS                                                 Handle        = 0x800F0228\n\tSPAPI_E_NO_DEVICE_ICON                                                    Handle        = 0x800F0229\n\tSPAPI_E_INVALID_INF_LOGCONFIG                                             Handle        = 0x800F022A\n\tSPAPI_E_DI_DONT_INSTALL                                                   Handle        = 0x800F022B\n\tSPAPI_E_INVALID_FILTER_DRIVER                                             Handle        = 0x800F022C\n\tSPAPI_E_NON_WINDOWS_NT_DRIVER                                             Handle        = 0x800F022D\n\tSPAPI_E_NON_WINDOWS_DRIVER                                                Handle        = 0x800F022E\n\tSPAPI_E_NO_CATALOG_FOR_OEM_INF                                            Handle        = 0x800F022F\n\tSPAPI_E_DEVINSTALL_QUEUE_NONNATIVE                                        Handle        = 0x800F0230\n\tSPAPI_E_NOT_DISABLEABLE                                                   Handle        = 0x800F0231\n\tSPAPI_E_CANT_REMOVE_DEVINST                                               Handle        = 0x800F0232\n\tSPAPI_E_INVALID_TARGET                                                    Handle        = 0x800F0233\n\tSPAPI_E_DRIVER_NONNATIVE                                                  Handle        = 0x800F0234\n\tSPAPI_E_IN_WOW64                                                          Handle        = 0x800F0235\n\tSPAPI_E_SET_SYSTEM_RESTORE_POINT                                          Handle        = 0x800F0236\n\tSPAPI_E_INCORRECTLY_COPIED_INF                                            Handle        = 0x800F0237\n\tSPAPI_E_SCE_DISABLED                                                      Handle        = 0x800F0238\n\tSPAPI_E_UNKNOWN_EXCEPTION                                                 Handle        = 0x800F0239\n\tSPAPI_E_PNP_REGISTRY_ERROR                                                Handle        = 0x800F023A\n\tSPAPI_E_REMOTE_REQUEST_UNSUPPORTED                                        Handle        = 0x800F023B\n\tSPAPI_E_NOT_AN_INSTALLED_OEM_INF                                          Handle        = 0x800F023C\n\tSPAPI_E_INF_IN_USE_BY_DEVICES                                             Handle        = 0x800F023D\n\tSPAPI_E_DI_FUNCTION_OBSOLETE                                              Handle        = 0x800F023E\n\tSPAPI_E_NO_AUTHENTICODE_CATALOG                                           Handle        = 0x800F023F\n\tSPAPI_E_AUTHENTICODE_DISALLOWED                                           Handle        = 0x800F0240\n\tSPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER                                    Handle        = 0x800F0241\n\tSPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED                                Handle        = 0x800F0242\n\tSPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED                                Handle        = 0x800F0243\n\tSPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH                                    Handle        = 0x800F0244\n\tSPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE                                    Handle        = 0x800F0245\n\tSPAPI_E_DEVICE_INSTALLER_NOT_READY                                        Handle        = 0x800F0246\n\tSPAPI_E_DRIVER_STORE_ADD_FAILED                                           Handle        = 0x800F0247\n\tSPAPI_E_DEVICE_INSTALL_BLOCKED                                            Handle        = 0x800F0248\n\tSPAPI_E_DRIVER_INSTALL_BLOCKED                                            Handle        = 0x800F0249\n\tSPAPI_E_WRONG_INF_TYPE                                                    Handle        = 0x800F024A\n\tSPAPI_E_FILE_HASH_NOT_IN_CATALOG                                          Handle        = 0x800F024B\n\tSPAPI_E_DRIVER_STORE_DELETE_FAILED                                        Handle        = 0x800F024C\n\tSPAPI_E_UNRECOVERABLE_STACK_OVERFLOW                                      Handle        = 0x800F0300\n\tSPAPI_E_ERROR_NOT_INSTALLED                                               Handle        = 0x800F1000\n\tSCARD_S_SUCCESS                                                                         = S_OK\n\tSCARD_F_INTERNAL_ERROR                                                    Handle        = 0x80100001\n\tSCARD_E_CANCELLED                                                         Handle        = 0x80100002\n\tSCARD_E_INVALID_HANDLE                                                    Handle        = 0x80100003\n\tSCARD_E_INVALID_PARAMETER                                                 Handle        = 0x80100004\n\tSCARD_E_INVALID_TARGET                                                    Handle        = 0x80100005\n\tSCARD_E_NO_MEMORY                                                         Handle        = 0x80100006\n\tSCARD_F_WAITED_TOO_LONG                                                   Handle        = 0x80100007\n\tSCARD_E_INSUFFICIENT_BUFFER                                               Handle        = 0x80100008\n\tSCARD_E_UNKNOWN_READER                                                    Handle        = 0x80100009\n\tSCARD_E_TIMEOUT                                                           Handle        = 0x8010000A\n\tSCARD_E_SHARING_VIOLATION                                                 Handle        = 0x8010000B\n\tSCARD_E_NO_SMARTCARD                                                      Handle        = 0x8010000C\n\tSCARD_E_UNKNOWN_CARD                                                      Handle        = 0x8010000D\n\tSCARD_E_CANT_DISPOSE                                                      Handle        = 0x8010000E\n\tSCARD_E_PROTO_MISMATCH                                                    Handle        = 0x8010000F\n\tSCARD_E_NOT_READY                                                         Handle        = 0x80100010\n\tSCARD_E_INVALID_VALUE                                                     Handle        = 0x80100011\n\tSCARD_E_SYSTEM_CANCELLED                                                  Handle        = 0x80100012\n\tSCARD_F_COMM_ERROR                                                        Handle        = 0x80100013\n\tSCARD_F_UNKNOWN_ERROR                                                     Handle        = 0x80100014\n\tSCARD_E_INVALID_ATR                                                       Handle        = 0x80100015\n\tSCARD_E_NOT_TRANSACTED                                                    Handle        = 0x80100016\n\tSCARD_E_READER_UNAVAILABLE                                                Handle        = 0x80100017\n\tSCARD_P_SHUTDOWN                                                          Handle        = 0x80100018\n\tSCARD_E_PCI_TOO_SMALL                                                     Handle        = 0x80100019\n\tSCARD_E_READER_UNSUPPORTED                                                Handle        = 0x8010001A\n\tSCARD_E_DUPLICATE_READER                                                  Handle        = 0x8010001B\n\tSCARD_E_CARD_UNSUPPORTED                                                  Handle        = 0x8010001C\n\tSCARD_E_NO_SERVICE                                                        Handle        = 0x8010001D\n\tSCARD_E_SERVICE_STOPPED                                                   Handle        = 0x8010001E\n\tSCARD_E_UNEXPECTED                                                        Handle        = 0x8010001F\n\tSCARD_E_ICC_INSTALLATION                                                  Handle        = 0x80100020\n\tSCARD_E_ICC_CREATEORDER                                                   Handle        = 0x80100021\n\tSCARD_E_UNSUPPORTED_FEATURE                                               Handle        = 0x80100022\n\tSCARD_E_DIR_NOT_FOUND                                                     Handle        = 0x80100023\n\tSCARD_E_FILE_NOT_FOUND                                                    Handle        = 0x80100024\n\tSCARD_E_NO_DIR                                                            Handle        = 0x80100025\n\tSCARD_E_NO_FILE                                                           Handle        = 0x80100026\n\tSCARD_E_NO_ACCESS                                                         Handle        = 0x80100027\n\tSCARD_E_WRITE_TOO_MANY                                                    Handle        = 0x80100028\n\tSCARD_E_BAD_SEEK                                                          Handle        = 0x80100029\n\tSCARD_E_INVALID_CHV                                                       Handle        = 0x8010002A\n\tSCARD_E_UNKNOWN_RES_MNG                                                   Handle        = 0x8010002B\n\tSCARD_E_NO_SUCH_CERTIFICATE                                               Handle        = 0x8010002C\n\tSCARD_E_CERTIFICATE_UNAVAILABLE                                           Handle        = 0x8010002D\n\tSCARD_E_NO_READERS_AVAILABLE                                              Handle        = 0x8010002E\n\tSCARD_E_COMM_DATA_LOST                                                    Handle        = 0x8010002F\n\tSCARD_E_NO_KEY_CONTAINER                                                  Handle        = 0x80100030\n\tSCARD_E_SERVER_TOO_BUSY                                                   Handle        = 0x80100031\n\tSCARD_E_PIN_CACHE_EXPIRED                                                 Handle        = 0x80100032\n\tSCARD_E_NO_PIN_CACHE                                                      Handle        = 0x80100033\n\tSCARD_E_READ_ONLY_CARD                                                    Handle        = 0x80100034\n\tSCARD_W_UNSUPPORTED_CARD                                                  Handle        = 0x80100065\n\tSCARD_W_UNRESPONSIVE_CARD                                                 Handle        = 0x80100066\n\tSCARD_W_UNPOWERED_CARD                                                    Handle        = 0x80100067\n\tSCARD_W_RESET_CARD                                                        Handle        = 0x80100068\n\tSCARD_W_REMOVED_CARD                                                      Handle        = 0x80100069\n\tSCARD_W_SECURITY_VIOLATION                                                Handle        = 0x8010006A\n\tSCARD_W_WRONG_CHV                                                         Handle        = 0x8010006B\n\tSCARD_W_CHV_BLOCKED                                                       Handle        = 0x8010006C\n\tSCARD_W_EOF                                                               Handle        = 0x8010006D\n\tSCARD_W_CANCELLED_BY_USER                                                 Handle        = 0x8010006E\n\tSCARD_W_CARD_NOT_AUTHENTICATED                                            Handle        = 0x8010006F\n\tSCARD_W_CACHE_ITEM_NOT_FOUND                                              Handle        = 0x80100070\n\tSCARD_W_CACHE_ITEM_STALE                                                  Handle        = 0x80100071\n\tSCARD_W_CACHE_ITEM_TOO_BIG                                                Handle        = 0x80100072\n\tCOMADMIN_E_OBJECTERRORS                                                   Handle        = 0x80110401\n\tCOMADMIN_E_OBJECTINVALID                                                  Handle        = 0x80110402\n\tCOMADMIN_E_KEYMISSING                                                     Handle        = 0x80110403\n\tCOMADMIN_E_ALREADYINSTALLED                                               Handle        = 0x80110404\n\tCOMADMIN_E_APP_FILE_WRITEFAIL                                             Handle        = 0x80110407\n\tCOMADMIN_E_APP_FILE_READFAIL                                              Handle        = 0x80110408\n\tCOMADMIN_E_APP_FILE_VERSION                                               Handle        = 0x80110409\n\tCOMADMIN_E_BADPATH                                                        Handle        = 0x8011040A\n\tCOMADMIN_E_APPLICATIONEXISTS                                              Handle        = 0x8011040B\n\tCOMADMIN_E_ROLEEXISTS                                                     Handle        = 0x8011040C\n\tCOMADMIN_E_CANTCOPYFILE                                                   Handle        = 0x8011040D\n\tCOMADMIN_E_NOUSER                                                         Handle        = 0x8011040F\n\tCOMADMIN_E_INVALIDUSERIDS                                                 Handle        = 0x80110410\n\tCOMADMIN_E_NOREGISTRYCLSID                                                Handle        = 0x80110411\n\tCOMADMIN_E_BADREGISTRYPROGID                                              Handle        = 0x80110412\n\tCOMADMIN_E_AUTHENTICATIONLEVEL                                            Handle        = 0x80110413\n\tCOMADMIN_E_USERPASSWDNOTVALID                                             Handle        = 0x80110414\n\tCOMADMIN_E_CLSIDORIIDMISMATCH                                             Handle        = 0x80110418\n\tCOMADMIN_E_REMOTEINTERFACE                                                Handle        = 0x80110419\n\tCOMADMIN_E_DLLREGISTERSERVER                                              Handle        = 0x8011041A\n\tCOMADMIN_E_NOSERVERSHARE                                                  Handle        = 0x8011041B\n\tCOMADMIN_E_DLLLOADFAILED                                                  Handle        = 0x8011041D\n\tCOMADMIN_E_BADREGISTRYLIBID                                               Handle        = 0x8011041E\n\tCOMADMIN_E_APPDIRNOTFOUND                                                 Handle        = 0x8011041F\n\tCOMADMIN_E_REGISTRARFAILED                                                Handle        = 0x80110423\n\tCOMADMIN_E_COMPFILE_DOESNOTEXIST                                          Handle        = 0x80110424\n\tCOMADMIN_E_COMPFILE_LOADDLLFAIL                                           Handle        = 0x80110425\n\tCOMADMIN_E_COMPFILE_GETCLASSOBJ                                           Handle        = 0x80110426\n\tCOMADMIN_E_COMPFILE_CLASSNOTAVAIL                                         Handle        = 0x80110427\n\tCOMADMIN_E_COMPFILE_BADTLB                                                Handle        = 0x80110428\n\tCOMADMIN_E_COMPFILE_NOTINSTALLABLE                                        Handle        = 0x80110429\n\tCOMADMIN_E_NOTCHANGEABLE                                                  Handle        = 0x8011042A\n\tCOMADMIN_E_NOTDELETEABLE                                                  Handle        = 0x8011042B\n\tCOMADMIN_E_SESSION                                                        Handle        = 0x8011042C\n\tCOMADMIN_E_COMP_MOVE_LOCKED                                               Handle        = 0x8011042D\n\tCOMADMIN_E_COMP_MOVE_BAD_DEST                                             Handle        = 0x8011042E\n\tCOMADMIN_E_REGISTERTLB                                                    Handle        = 0x80110430\n\tCOMADMIN_E_SYSTEMAPP                                                      Handle        = 0x80110433\n\tCOMADMIN_E_COMPFILE_NOREGISTRAR                                           Handle        = 0x80110434\n\tCOMADMIN_E_COREQCOMPINSTALLED                                             Handle        = 0x80110435\n\tCOMADMIN_E_SERVICENOTINSTALLED                                            Handle        = 0x80110436\n\tCOMADMIN_E_PROPERTYSAVEFAILED                                             Handle        = 0x80110437\n\tCOMADMIN_E_OBJECTEXISTS                                                   Handle        = 0x80110438\n\tCOMADMIN_E_COMPONENTEXISTS                                                Handle        = 0x80110439\n\tCOMADMIN_E_REGFILE_CORRUPT                                                Handle        = 0x8011043B\n\tCOMADMIN_E_PROPERTY_OVERFLOW                                              Handle        = 0x8011043C\n\tCOMADMIN_E_NOTINREGISTRY                                                  Handle        = 0x8011043E\n\tCOMADMIN_E_OBJECTNOTPOOLABLE                                              Handle        = 0x8011043F\n\tCOMADMIN_E_APPLID_MATCHES_CLSID                                           Handle        = 0x80110446\n\tCOMADMIN_E_ROLE_DOES_NOT_EXIST                                            Handle        = 0x80110447\n\tCOMADMIN_E_START_APP_NEEDS_COMPONENTS                                     Handle        = 0x80110448\n\tCOMADMIN_E_REQUIRES_DIFFERENT_PLATFORM                                    Handle        = 0x80110449\n\tCOMADMIN_E_CAN_NOT_EXPORT_APP_PROXY                                       Handle        = 0x8011044A\n\tCOMADMIN_E_CAN_NOT_START_APP                                              Handle        = 0x8011044B\n\tCOMADMIN_E_CAN_NOT_EXPORT_SYS_APP                                         Handle        = 0x8011044C\n\tCOMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT                                    Handle        = 0x8011044D\n\tCOMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER                                  Handle        = 0x8011044E\n\tCOMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE                                     Handle        = 0x8011044F\n\tCOMADMIN_E_BASE_PARTITION_ONLY                                            Handle        = 0x80110450\n\tCOMADMIN_E_START_APP_DISABLED                                             Handle        = 0x80110451\n\tCOMADMIN_E_CAT_DUPLICATE_PARTITION_NAME                                   Handle        = 0x80110457\n\tCOMADMIN_E_CAT_INVALID_PARTITION_NAME                                     Handle        = 0x80110458\n\tCOMADMIN_E_CAT_PARTITION_IN_USE                                           Handle        = 0x80110459\n\tCOMADMIN_E_FILE_PARTITION_DUPLICATE_FILES                                 Handle        = 0x8011045A\n\tCOMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED                            Handle        = 0x8011045B\n\tCOMADMIN_E_AMBIGUOUS_APPLICATION_NAME                                     Handle        = 0x8011045C\n\tCOMADMIN_E_AMBIGUOUS_PARTITION_NAME                                       Handle        = 0x8011045D\n\tCOMADMIN_E_REGDB_NOTINITIALIZED                                           Handle        = 0x80110472\n\tCOMADMIN_E_REGDB_NOTOPEN                                                  Handle        = 0x80110473\n\tCOMADMIN_E_REGDB_SYSTEMERR                                                Handle        = 0x80110474\n\tCOMADMIN_E_REGDB_ALREADYRUNNING                                           Handle        = 0x80110475\n\tCOMADMIN_E_MIG_VERSIONNOTSUPPORTED                                        Handle        = 0x80110480\n\tCOMADMIN_E_MIG_SCHEMANOTFOUND                                             Handle        = 0x80110481\n\tCOMADMIN_E_CAT_BITNESSMISMATCH                                            Handle        = 0x80110482\n\tCOMADMIN_E_CAT_UNACCEPTABLEBITNESS                                        Handle        = 0x80110483\n\tCOMADMIN_E_CAT_WRONGAPPBITNESS                                            Handle        = 0x80110484\n\tCOMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED                                 Handle        = 0x80110485\n\tCOMADMIN_E_CAT_SERVERFAULT                                                Handle        = 0x80110486\n\tCOMQC_E_APPLICATION_NOT_QUEUED                                            Handle        = 0x80110600\n\tCOMQC_E_NO_QUEUEABLE_INTERFACES                                           Handle        = 0x80110601\n\tCOMQC_E_QUEUING_SERVICE_NOT_AVAILABLE                                     Handle        = 0x80110602\n\tCOMQC_E_NO_IPERSISTSTREAM                                                 Handle        = 0x80110603\n\tCOMQC_E_BAD_MESSAGE                                                       Handle        = 0x80110604\n\tCOMQC_E_UNAUTHENTICATED                                                   Handle        = 0x80110605\n\tCOMQC_E_UNTRUSTED_ENQUEUER                                                Handle        = 0x80110606\n\tMSDTC_E_DUPLICATE_RESOURCE                                                Handle        = 0x80110701\n\tCOMADMIN_E_OBJECT_PARENT_MISSING                                          Handle        = 0x80110808\n\tCOMADMIN_E_OBJECT_DOES_NOT_EXIST                                          Handle        = 0x80110809\n\tCOMADMIN_E_APP_NOT_RUNNING                                                Handle        = 0x8011080A\n\tCOMADMIN_E_INVALID_PARTITION                                              Handle        = 0x8011080B\n\tCOMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE                              Handle        = 0x8011080D\n\tCOMADMIN_E_USER_IN_SET                                                    Handle        = 0x8011080E\n\tCOMADMIN_E_CANTRECYCLELIBRARYAPPS                                         Handle        = 0x8011080F\n\tCOMADMIN_E_CANTRECYCLESERVICEAPPS                                         Handle        = 0x80110811\n\tCOMADMIN_E_PROCESSALREADYRECYCLED                                         Handle        = 0x80110812\n\tCOMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED                                  Handle        = 0x80110813\n\tCOMADMIN_E_CANTMAKEINPROCSERVICE                                          Handle        = 0x80110814\n\tCOMADMIN_E_PROGIDINUSEBYCLSID                                             Handle        = 0x80110815\n\tCOMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET                                   Handle        = 0x80110816\n\tCOMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED                                  Handle        = 0x80110817\n\tCOMADMIN_E_PARTITION_ACCESSDENIED                                         Handle        = 0x80110818\n\tCOMADMIN_E_PARTITION_MSI_ONLY                                             Handle        = 0x80110819\n\tCOMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT                          Handle        = 0x8011081A\n\tCOMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS                  Handle        = 0x8011081B\n\tCOMADMIN_E_COMP_MOVE_SOURCE                                               Handle        = 0x8011081C\n\tCOMADMIN_E_COMP_MOVE_DEST                                                 Handle        = 0x8011081D\n\tCOMADMIN_E_COMP_MOVE_PRIVATE                                              Handle        = 0x8011081E\n\tCOMADMIN_E_BASEPARTITION_REQUIRED_IN_SET                                  Handle        = 0x8011081F\n\tCOMADMIN_E_CANNOT_ALIAS_EVENTCLASS                                        Handle        = 0x80110820\n\tCOMADMIN_E_PRIVATE_ACCESSDENIED                                           Handle        = 0x80110821\n\tCOMADMIN_E_SAFERINVALID                                                   Handle        = 0x80110822\n\tCOMADMIN_E_REGISTRY_ACCESSDENIED                                          Handle        = 0x80110823\n\tCOMADMIN_E_PARTITIONS_DISABLED                                            Handle        = 0x80110824\n\tWER_S_REPORT_DEBUG                                                        Handle        = 0x001B0000\n\tWER_S_REPORT_UPLOADED                                                     Handle        = 0x001B0001\n\tWER_S_REPORT_QUEUED                                                       Handle        = 0x001B0002\n\tWER_S_DISABLED                                                            Handle        = 0x001B0003\n\tWER_S_SUSPENDED_UPLOAD                                                    Handle        = 0x001B0004\n\tWER_S_DISABLED_QUEUE                                                      Handle        = 0x001B0005\n\tWER_S_DISABLED_ARCHIVE                                                    Handle        = 0x001B0006\n\tWER_S_REPORT_ASYNC                                                        Handle        = 0x001B0007\n\tWER_S_IGNORE_ASSERT_INSTANCE                                              Handle        = 0x001B0008\n\tWER_S_IGNORE_ALL_ASSERTS                                                  Handle        = 0x001B0009\n\tWER_S_ASSERT_CONTINUE                                                     Handle        = 0x001B000A\n\tWER_S_THROTTLED                                                           Handle        = 0x001B000B\n\tWER_S_REPORT_UPLOADED_CAB                                                 Handle        = 0x001B000C\n\tWER_E_CRASH_FAILURE                                                       Handle        = 0x801B8000\n\tWER_E_CANCELED                                                            Handle        = 0x801B8001\n\tWER_E_NETWORK_FAILURE                                                     Handle        = 0x801B8002\n\tWER_E_NOT_INITIALIZED                                                     Handle        = 0x801B8003\n\tWER_E_ALREADY_REPORTING                                                   Handle        = 0x801B8004\n\tWER_E_DUMP_THROTTLED                                                      Handle        = 0x801B8005\n\tWER_E_INSUFFICIENT_CONSENT                                                Handle        = 0x801B8006\n\tWER_E_TOO_HEAVY                                                           Handle        = 0x801B8007\n\tERROR_FLT_IO_COMPLETE                                                     Handle        = 0x001F0001\n\tERROR_FLT_NO_HANDLER_DEFINED                                              Handle        = 0x801F0001\n\tERROR_FLT_CONTEXT_ALREADY_DEFINED                                         Handle        = 0x801F0002\n\tERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST                                    Handle        = 0x801F0003\n\tERROR_FLT_DISALLOW_FAST_IO                                                Handle        = 0x801F0004\n\tERROR_FLT_INVALID_NAME_REQUEST                                            Handle        = 0x801F0005\n\tERROR_FLT_NOT_SAFE_TO_POST_OPERATION                                      Handle        = 0x801F0006\n\tERROR_FLT_NOT_INITIALIZED                                                 Handle        = 0x801F0007\n\tERROR_FLT_FILTER_NOT_READY                                                Handle        = 0x801F0008\n\tERROR_FLT_POST_OPERATION_CLEANUP                                          Handle        = 0x801F0009\n\tERROR_FLT_INTERNAL_ERROR                                                  Handle        = 0x801F000A\n\tERROR_FLT_DELETING_OBJECT                                                 Handle        = 0x801F000B\n\tERROR_FLT_MUST_BE_NONPAGED_POOL                                           Handle        = 0x801F000C\n\tERROR_FLT_DUPLICATE_ENTRY                                                 Handle        = 0x801F000D\n\tERROR_FLT_CBDQ_DISABLED                                                   Handle        = 0x801F000E\n\tERROR_FLT_DO_NOT_ATTACH                                                   Handle        = 0x801F000F\n\tERROR_FLT_DO_NOT_DETACH                                                   Handle        = 0x801F0010\n\tERROR_FLT_INSTANCE_ALTITUDE_COLLISION                                     Handle        = 0x801F0011\n\tERROR_FLT_INSTANCE_NAME_COLLISION                                         Handle        = 0x801F0012\n\tERROR_FLT_FILTER_NOT_FOUND                                                Handle        = 0x801F0013\n\tERROR_FLT_VOLUME_NOT_FOUND                                                Handle        = 0x801F0014\n\tERROR_FLT_INSTANCE_NOT_FOUND                                              Handle        = 0x801F0015\n\tERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND                                    Handle        = 0x801F0016\n\tERROR_FLT_INVALID_CONTEXT_REGISTRATION                                    Handle        = 0x801F0017\n\tERROR_FLT_NAME_CACHE_MISS                                                 Handle        = 0x801F0018\n\tERROR_FLT_NO_DEVICE_OBJECT                                                Handle        = 0x801F0019\n\tERROR_FLT_VOLUME_ALREADY_MOUNTED                                          Handle        = 0x801F001A\n\tERROR_FLT_ALREADY_ENLISTED                                                Handle        = 0x801F001B\n\tERROR_FLT_CONTEXT_ALREADY_LINKED                                          Handle        = 0x801F001C\n\tERROR_FLT_NO_WAITER_FOR_REPLY                                             Handle        = 0x801F0020\n\tERROR_FLT_REGISTRATION_BUSY                                               Handle        = 0x801F0023\n\tERROR_HUNG_DISPLAY_DRIVER_THREAD                                          Handle        = 0x80260001\n\tDWM_E_COMPOSITIONDISABLED                                                 Handle        = 0x80263001\n\tDWM_E_REMOTING_NOT_SUPPORTED                                              Handle        = 0x80263002\n\tDWM_E_NO_REDIRECTION_SURFACE_AVAILABLE                                    Handle        = 0x80263003\n\tDWM_E_NOT_QUEUING_PRESENTS                                                Handle        = 0x80263004\n\tDWM_E_ADAPTER_NOT_FOUND                                                   Handle        = 0x80263005\n\tDWM_S_GDI_REDIRECTION_SURFACE                                             Handle        = 0x00263005\n\tDWM_E_TEXTURE_TOO_LARGE                                                   Handle        = 0x80263007\n\tDWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI                                 Handle        = 0x00263008\n\tERROR_MONITOR_NO_DESCRIPTOR                                               Handle        = 0x00261001\n\tERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT                                   Handle        = 0x00261002\n\tERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM                                 Handle        = 0xC0261003\n\tERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK                               Handle        = 0xC0261004\n\tERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED                           Handle        = 0xC0261005\n\tERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK                          Handle        = 0xC0261006\n\tERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK                          Handle        = 0xC0261007\n\tERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA                                     Handle        = 0xC0261008\n\tERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK                               Handle        = 0xC0261009\n\tERROR_MONITOR_INVALID_MANUFACTURE_DATE                                    Handle        = 0xC026100A\n\tERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER                                   Handle        = 0xC0262000\n\tERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER                                    Handle        = 0xC0262001\n\tERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER                                    Handle        = 0xC0262002\n\tERROR_GRAPHICS_ADAPTER_WAS_RESET                                          Handle        = 0xC0262003\n\tERROR_GRAPHICS_INVALID_DRIVER_MODEL                                       Handle        = 0xC0262004\n\tERROR_GRAPHICS_PRESENT_MODE_CHANGED                                       Handle        = 0xC0262005\n\tERROR_GRAPHICS_PRESENT_OCCLUDED                                           Handle        = 0xC0262006\n\tERROR_GRAPHICS_PRESENT_DENIED                                             Handle        = 0xC0262007\n\tERROR_GRAPHICS_CANNOTCOLORCONVERT                                         Handle        = 0xC0262008\n\tERROR_GRAPHICS_DRIVER_MISMATCH                                            Handle        = 0xC0262009\n\tERROR_GRAPHICS_PARTIAL_DATA_POPULATED                                     Handle        = 0x4026200A\n\tERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED                               Handle        = 0xC026200B\n\tERROR_GRAPHICS_PRESENT_UNOCCLUDED                                         Handle        = 0xC026200C\n\tERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE                                     Handle        = 0xC026200D\n\tERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED                                Handle        = 0xC026200E\n\tERROR_GRAPHICS_PRESENT_INVALID_WINDOW                                     Handle        = 0xC026200F\n\tERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND                                   Handle        = 0xC0262010\n\tERROR_GRAPHICS_VAIL_STATE_CHANGED                                         Handle        = 0xC0262011\n\tERROR_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN                         Handle        = 0xC0262012\n\tERROR_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED                            Handle        = 0xC0262013\n\tERROR_GRAPHICS_NO_VIDEO_MEMORY                                            Handle        = 0xC0262100\n\tERROR_GRAPHICS_CANT_LOCK_MEMORY                                           Handle        = 0xC0262101\n\tERROR_GRAPHICS_ALLOCATION_BUSY                                            Handle        = 0xC0262102\n\tERROR_GRAPHICS_TOO_MANY_REFERENCES                                        Handle        = 0xC0262103\n\tERROR_GRAPHICS_TRY_AGAIN_LATER                                            Handle        = 0xC0262104\n\tERROR_GRAPHICS_TRY_AGAIN_NOW                                              Handle        = 0xC0262105\n\tERROR_GRAPHICS_ALLOCATION_INVALID                                         Handle        = 0xC0262106\n\tERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE                           Handle        = 0xC0262107\n\tERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED                           Handle        = 0xC0262108\n\tERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION                               Handle        = 0xC0262109\n\tERROR_GRAPHICS_INVALID_ALLOCATION_USAGE                                   Handle        = 0xC0262110\n\tERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION                              Handle        = 0xC0262111\n\tERROR_GRAPHICS_ALLOCATION_CLOSED                                          Handle        = 0xC0262112\n\tERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE                                Handle        = 0xC0262113\n\tERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE                                  Handle        = 0xC0262114\n\tERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE                                    Handle        = 0xC0262115\n\tERROR_GRAPHICS_ALLOCATION_CONTENT_LOST                                    Handle        = 0xC0262116\n\tERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE                                    Handle        = 0xC0262200\n\tERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION                                Handle        = 0x40262201\n\tERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY                                     Handle        = 0xC0262300\n\tERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED                               Handle        = 0xC0262301\n\tERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED                     Handle        = 0xC0262302\n\tERROR_GRAPHICS_INVALID_VIDPN                                              Handle        = 0xC0262303\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE                               Handle        = 0xC0262304\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET                               Handle        = 0xC0262305\n\tERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED                               Handle        = 0xC0262306\n\tERROR_GRAPHICS_MODE_NOT_PINNED                                            Handle        = 0x00262307\n\tERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET                                Handle        = 0xC0262308\n\tERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET                                Handle        = 0xC0262309\n\tERROR_GRAPHICS_INVALID_FREQUENCY                                          Handle        = 0xC026230A\n\tERROR_GRAPHICS_INVALID_ACTIVE_REGION                                      Handle        = 0xC026230B\n\tERROR_GRAPHICS_INVALID_TOTAL_REGION                                       Handle        = 0xC026230C\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE                          Handle        = 0xC0262310\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE                          Handle        = 0xC0262311\n\tERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET                             Handle        = 0xC0262312\n\tERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY                                   Handle        = 0xC0262313\n\tERROR_GRAPHICS_MODE_ALREADY_IN_MODESET                                    Handle        = 0xC0262314\n\tERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET                              Handle        = 0xC0262315\n\tERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET                              Handle        = 0xC0262316\n\tERROR_GRAPHICS_SOURCE_ALREADY_IN_SET                                      Handle        = 0xC0262317\n\tERROR_GRAPHICS_TARGET_ALREADY_IN_SET                                      Handle        = 0xC0262318\n\tERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH                                 Handle        = 0xC0262319\n\tERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY                              Handle        = 0xC026231A\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET                          Handle        = 0xC026231B\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE                             Handle        = 0xC026231C\n\tERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET                                  Handle        = 0xC026231D\n\tERROR_GRAPHICS_NO_PREFERRED_MODE                                          Handle        = 0x0026231E\n\tERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET                              Handle        = 0xC026231F\n\tERROR_GRAPHICS_STALE_MODESET                                              Handle        = 0xC0262320\n\tERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET                              Handle        = 0xC0262321\n\tERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE                                Handle        = 0xC0262322\n\tERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN                            Handle        = 0xC0262323\n\tERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE                                     Handle        = 0xC0262324\n\tERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION            Handle        = 0xC0262325\n\tERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES                    Handle        = 0xC0262326\n\tERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY                                       Handle        = 0xC0262327\n\tERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE                      Handle        = 0xC0262328\n\tERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET                      Handle        = 0xC0262329\n\tERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET                               Handle        = 0xC026232A\n\tERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR                                  Handle        = 0xC026232B\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET                               Handle        = 0xC026232C\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET                           Handle        = 0xC026232D\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE                        Handle        = 0xC026232E\n\tERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE                           Handle        = 0xC026232F\n\tERROR_GRAPHICS_RESOURCES_NOT_RELATED                                      Handle        = 0xC0262330\n\tERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE                                   Handle        = 0xC0262331\n\tERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE                                   Handle        = 0xC0262332\n\tERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET                                  Handle        = 0xC0262333\n\tERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER               Handle        = 0xC0262334\n\tERROR_GRAPHICS_NO_VIDPNMGR                                                Handle        = 0xC0262335\n\tERROR_GRAPHICS_NO_ACTIVE_VIDPN                                            Handle        = 0xC0262336\n\tERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY                                       Handle        = 0xC0262337\n\tERROR_GRAPHICS_MONITOR_NOT_CONNECTED                                      Handle        = 0xC0262338\n\tERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY                                     Handle        = 0xC0262339\n\tERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE                                Handle        = 0xC026233A\n\tERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE                                 Handle        = 0xC026233B\n\tERROR_GRAPHICS_INVALID_STRIDE                                             Handle        = 0xC026233C\n\tERROR_GRAPHICS_INVALID_PIXELFORMAT                                        Handle        = 0xC026233D\n\tERROR_GRAPHICS_INVALID_COLORBASIS                                         Handle        = 0xC026233E\n\tERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE                               Handle        = 0xC026233F\n\tERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY                                     Handle        = 0xC0262340\n\tERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT                         Handle        = 0xC0262341\n\tERROR_GRAPHICS_VIDPN_SOURCE_IN_USE                                        Handle        = 0xC0262342\n\tERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN                                   Handle        = 0xC0262343\n\tERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL                            Handle        = 0xC0262344\n\tERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION               Handle        = 0xC0262345\n\tERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED         Handle        = 0xC0262346\n\tERROR_GRAPHICS_INVALID_GAMMA_RAMP                                         Handle        = 0xC0262347\n\tERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED                                   Handle        = 0xC0262348\n\tERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED                                Handle        = 0xC0262349\n\tERROR_GRAPHICS_MODE_NOT_IN_MODESET                                        Handle        = 0xC026234A\n\tERROR_GRAPHICS_DATASET_IS_EMPTY                                           Handle        = 0x0026234B\n\tERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET                                Handle        = 0x0026234C\n\tERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON               Handle        = 0xC026234D\n\tERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE                                  Handle        = 0xC026234E\n\tERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE                                Handle        = 0xC026234F\n\tERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS                          Handle        = 0xC0262350\n\tERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED            Handle        = 0x00262351\n\tERROR_GRAPHICS_INVALID_SCANLINE_ORDERING                                  Handle        = 0xC0262352\n\tERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED                               Handle        = 0xC0262353\n\tERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS                           Handle        = 0xC0262354\n\tERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT                                Handle        = 0xC0262355\n\tERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM                             Handle        = 0xC0262356\n\tERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN                          Handle        = 0xC0262357\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT                  Handle        = 0xC0262358\n\tERROR_GRAPHICS_MAX_NUM_PATHS_REACHED                                      Handle        = 0xC0262359\n\tERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION                         Handle        = 0xC026235A\n\tERROR_GRAPHICS_INVALID_CLIENT_TYPE                                        Handle        = 0xC026235B\n\tERROR_GRAPHICS_CLIENTVIDPN_NOT_SET                                        Handle        = 0xC026235C\n\tERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED                          Handle        = 0xC0262400\n\tERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED                             Handle        = 0xC0262401\n\tERROR_GRAPHICS_UNKNOWN_CHILD_STATUS                                       Handle        = 0x4026242F\n\tERROR_GRAPHICS_NOT_A_LINKED_ADAPTER                                       Handle        = 0xC0262430\n\tERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED                                    Handle        = 0xC0262431\n\tERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED                                  Handle        = 0xC0262432\n\tERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY                                    Handle        = 0xC0262433\n\tERROR_GRAPHICS_CHAINLINKS_NOT_STARTED                                     Handle        = 0xC0262434\n\tERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON                                  Handle        = 0xC0262435\n\tERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE                             Handle        = 0xC0262436\n\tERROR_GRAPHICS_LEADLINK_START_DEFERRED                                    Handle        = 0x40262437\n\tERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER                                     Handle        = 0xC0262438\n\tERROR_GRAPHICS_POLLING_TOO_FREQUENTLY                                     Handle        = 0x40262439\n\tERROR_GRAPHICS_START_DEFERRED                                             Handle        = 0x4026243A\n\tERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED                                Handle        = 0xC026243B\n\tERROR_GRAPHICS_DEPENDABLE_CHILD_STATUS                                    Handle        = 0x4026243C\n\tERROR_GRAPHICS_OPM_NOT_SUPPORTED                                          Handle        = 0xC0262500\n\tERROR_GRAPHICS_COPP_NOT_SUPPORTED                                         Handle        = 0xC0262501\n\tERROR_GRAPHICS_UAB_NOT_SUPPORTED                                          Handle        = 0xC0262502\n\tERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS                           Handle        = 0xC0262503\n\tERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST                                 Handle        = 0xC0262505\n\tERROR_GRAPHICS_OPM_INTERNAL_ERROR                                         Handle        = 0xC026250B\n\tERROR_GRAPHICS_OPM_INVALID_HANDLE                                         Handle        = 0xC026250C\n\tERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH                             Handle        = 0xC026250E\n\tERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED                                  Handle        = 0xC026250F\n\tERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED                                   Handle        = 0xC0262510\n\tERROR_GRAPHICS_PVP_HFS_FAILED                                             Handle        = 0xC0262511\n\tERROR_GRAPHICS_OPM_INVALID_SRM                                            Handle        = 0xC0262512\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP                           Handle        = 0xC0262513\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP                            Handle        = 0xC0262514\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA                          Handle        = 0xC0262515\n\tERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET                                     Handle        = 0xC0262516\n\tERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH                                    Handle        = 0xC0262517\n\tERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE                       Handle        = 0xC0262518\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS                          Handle        = 0xC026251A\n\tERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS                        Handle        = 0xC026251B\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS              Handle        = 0xC026251C\n\tERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST                            Handle        = 0xC026251D\n\tERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR                                  Handle        = 0xC026251E\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS               Handle        = 0xC026251F\n\tERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED                                Handle        = 0xC0262520\n\tERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST                          Handle        = 0xC0262521\n\tERROR_GRAPHICS_I2C_NOT_SUPPORTED                                          Handle        = 0xC0262580\n\tERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST                                  Handle        = 0xC0262581\n\tERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA                                Handle        = 0xC0262582\n\tERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA                                   Handle        = 0xC0262583\n\tERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED                                    Handle        = 0xC0262584\n\tERROR_GRAPHICS_DDCCI_INVALID_DATA                                         Handle        = 0xC0262585\n\tERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE          Handle        = 0xC0262586\n\tERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING                            Handle        = 0xC0262587\n\tERROR_GRAPHICS_MCA_INTERNAL_ERROR                                         Handle        = 0xC0262588\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND                              Handle        = 0xC0262589\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH                               Handle        = 0xC026258A\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM                             Handle        = 0xC026258B\n\tERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE                            Handle        = 0xC026258C\n\tERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS                                   Handle        = 0xC026258D\n\tERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE     Handle        = 0xC02625D8\n\tERROR_GRAPHICS_MCA_INVALID_VCP_VERSION                                    Handle        = 0xC02625D9\n\tERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION                    Handle        = 0xC02625DA\n\tERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH                                  Handle        = 0xC02625DB\n\tERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION                               Handle        = 0xC02625DC\n\tERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED                       Handle        = 0xC02625DE\n\tERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE                          Handle        = 0xC02625DF\n\tERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED                             Handle        = 0xC02625E0\n\tERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME                      Handle        = 0xC02625E1\n\tERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP                     Handle        = 0xC02625E2\n\tERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED                            Handle        = 0xC02625E3\n\tERROR_GRAPHICS_INVALID_POINTER                                            Handle        = 0xC02625E4\n\tERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE                   Handle        = 0xC02625E5\n\tERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL                                  Handle        = 0xC02625E6\n\tERROR_GRAPHICS_INTERNAL_ERROR                                             Handle        = 0xC02625E7\n\tERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS                            Handle        = 0xC02605E8\n\tNAP_E_INVALID_PACKET                                                      Handle        = 0x80270001\n\tNAP_E_MISSING_SOH                                                         Handle        = 0x80270002\n\tNAP_E_CONFLICTING_ID                                                      Handle        = 0x80270003\n\tNAP_E_NO_CACHED_SOH                                                       Handle        = 0x80270004\n\tNAP_E_STILL_BOUND                                                         Handle        = 0x80270005\n\tNAP_E_NOT_REGISTERED                                                      Handle        = 0x80270006\n\tNAP_E_NOT_INITIALIZED                                                     Handle        = 0x80270007\n\tNAP_E_MISMATCHED_ID                                                       Handle        = 0x80270008\n\tNAP_E_NOT_PENDING                                                         Handle        = 0x80270009\n\tNAP_E_ID_NOT_FOUND                                                        Handle        = 0x8027000A\n\tNAP_E_MAXSIZE_TOO_SMALL                                                   Handle        = 0x8027000B\n\tNAP_E_SERVICE_NOT_RUNNING                                                 Handle        = 0x8027000C\n\tNAP_S_CERT_ALREADY_PRESENT                                                Handle        = 0x0027000D\n\tNAP_E_ENTITY_DISABLED                                                     Handle        = 0x8027000E\n\tNAP_E_NETSH_GROUPPOLICY_ERROR                                             Handle        = 0x8027000F\n\tNAP_E_TOO_MANY_CALLS                                                      Handle        = 0x80270010\n\tNAP_E_SHV_CONFIG_EXISTED                                                  Handle        = 0x80270011\n\tNAP_E_SHV_CONFIG_NOT_FOUND                                                Handle        = 0x80270012\n\tNAP_E_SHV_TIMEOUT                                                         Handle        = 0x80270013\n\tTPM_E_ERROR_MASK                                                          Handle        = 0x80280000\n\tTPM_E_AUTHFAIL                                                            Handle        = 0x80280001\n\tTPM_E_BADINDEX                                                            Handle        = 0x80280002\n\tTPM_E_BAD_PARAMETER                                                       Handle        = 0x80280003\n\tTPM_E_AUDITFAILURE                                                        Handle        = 0x80280004\n\tTPM_E_CLEAR_DISABLED                                                      Handle        = 0x80280005\n\tTPM_E_DEACTIVATED                                                         Handle        = 0x80280006\n\tTPM_E_DISABLED                                                            Handle        = 0x80280007\n\tTPM_E_DISABLED_CMD                                                        Handle        = 0x80280008\n\tTPM_E_FAIL                                                                Handle        = 0x80280009\n\tTPM_E_BAD_ORDINAL                                                         Handle        = 0x8028000A\n\tTPM_E_INSTALL_DISABLED                                                    Handle        = 0x8028000B\n\tTPM_E_INVALID_KEYHANDLE                                                   Handle        = 0x8028000C\n\tTPM_E_KEYNOTFOUND                                                         Handle        = 0x8028000D\n\tTPM_E_INAPPROPRIATE_ENC                                                   Handle        = 0x8028000E\n\tTPM_E_MIGRATEFAIL                                                         Handle        = 0x8028000F\n\tTPM_E_INVALID_PCR_INFO                                                    Handle        = 0x80280010\n\tTPM_E_NOSPACE                                                             Handle        = 0x80280011\n\tTPM_E_NOSRK                                                               Handle        = 0x80280012\n\tTPM_E_NOTSEALED_BLOB                                                      Handle        = 0x80280013\n\tTPM_E_OWNER_SET                                                           Handle        = 0x80280014\n\tTPM_E_RESOURCES                                                           Handle        = 0x80280015\n\tTPM_E_SHORTRANDOM                                                         Handle        = 0x80280016\n\tTPM_E_SIZE                                                                Handle        = 0x80280017\n\tTPM_E_WRONGPCRVAL                                                         Handle        = 0x80280018\n\tTPM_E_BAD_PARAM_SIZE                                                      Handle        = 0x80280019\n\tTPM_E_SHA_THREAD                                                          Handle        = 0x8028001A\n\tTPM_E_SHA_ERROR                                                           Handle        = 0x8028001B\n\tTPM_E_FAILEDSELFTEST                                                      Handle        = 0x8028001C\n\tTPM_E_AUTH2FAIL                                                           Handle        = 0x8028001D\n\tTPM_E_BADTAG                                                              Handle        = 0x8028001E\n\tTPM_E_IOERROR                                                             Handle        = 0x8028001F\n\tTPM_E_ENCRYPT_ERROR                                                       Handle        = 0x80280020\n\tTPM_E_DECRYPT_ERROR                                                       Handle        = 0x80280021\n\tTPM_E_INVALID_AUTHHANDLE                                                  Handle        = 0x80280022\n\tTPM_E_NO_ENDORSEMENT                                                      Handle        = 0x80280023\n\tTPM_E_INVALID_KEYUSAGE                                                    Handle        = 0x80280024\n\tTPM_E_WRONG_ENTITYTYPE                                                    Handle        = 0x80280025\n\tTPM_E_INVALID_POSTINIT                                                    Handle        = 0x80280026\n\tTPM_E_INAPPROPRIATE_SIG                                                   Handle        = 0x80280027\n\tTPM_E_BAD_KEY_PROPERTY                                                    Handle        = 0x80280028\n\tTPM_E_BAD_MIGRATION                                                       Handle        = 0x80280029\n\tTPM_E_BAD_SCHEME                                                          Handle        = 0x8028002A\n\tTPM_E_BAD_DATASIZE                                                        Handle        = 0x8028002B\n\tTPM_E_BAD_MODE                                                            Handle        = 0x8028002C\n\tTPM_E_BAD_PRESENCE                                                        Handle        = 0x8028002D\n\tTPM_E_BAD_VERSION                                                         Handle        = 0x8028002E\n\tTPM_E_NO_WRAP_TRANSPORT                                                   Handle        = 0x8028002F\n\tTPM_E_AUDITFAIL_UNSUCCESSFUL                                              Handle        = 0x80280030\n\tTPM_E_AUDITFAIL_SUCCESSFUL                                                Handle        = 0x80280031\n\tTPM_E_NOTRESETABLE                                                        Handle        = 0x80280032\n\tTPM_E_NOTLOCAL                                                            Handle        = 0x80280033\n\tTPM_E_BAD_TYPE                                                            Handle        = 0x80280034\n\tTPM_E_INVALID_RESOURCE                                                    Handle        = 0x80280035\n\tTPM_E_NOTFIPS                                                             Handle        = 0x80280036\n\tTPM_E_INVALID_FAMILY                                                      Handle        = 0x80280037\n\tTPM_E_NO_NV_PERMISSION                                                    Handle        = 0x80280038\n\tTPM_E_REQUIRES_SIGN                                                       Handle        = 0x80280039\n\tTPM_E_KEY_NOTSUPPORTED                                                    Handle        = 0x8028003A\n\tTPM_E_AUTH_CONFLICT                                                       Handle        = 0x8028003B\n\tTPM_E_AREA_LOCKED                                                         Handle        = 0x8028003C\n\tTPM_E_BAD_LOCALITY                                                        Handle        = 0x8028003D\n\tTPM_E_READ_ONLY                                                           Handle        = 0x8028003E\n\tTPM_E_PER_NOWRITE                                                         Handle        = 0x8028003F\n\tTPM_E_FAMILYCOUNT                                                         Handle        = 0x80280040\n\tTPM_E_WRITE_LOCKED                                                        Handle        = 0x80280041\n\tTPM_E_BAD_ATTRIBUTES                                                      Handle        = 0x80280042\n\tTPM_E_INVALID_STRUCTURE                                                   Handle        = 0x80280043\n\tTPM_E_KEY_OWNER_CONTROL                                                   Handle        = 0x80280044\n\tTPM_E_BAD_COUNTER                                                         Handle        = 0x80280045\n\tTPM_E_NOT_FULLWRITE                                                       Handle        = 0x80280046\n\tTPM_E_CONTEXT_GAP                                                         Handle        = 0x80280047\n\tTPM_E_MAXNVWRITES                                                         Handle        = 0x80280048\n\tTPM_E_NOOPERATOR                                                          Handle        = 0x80280049\n\tTPM_E_RESOURCEMISSING                                                     Handle        = 0x8028004A\n\tTPM_E_DELEGATE_LOCK                                                       Handle        = 0x8028004B\n\tTPM_E_DELEGATE_FAMILY                                                     Handle        = 0x8028004C\n\tTPM_E_DELEGATE_ADMIN                                                      Handle        = 0x8028004D\n\tTPM_E_TRANSPORT_NOTEXCLUSIVE                                              Handle        = 0x8028004E\n\tTPM_E_OWNER_CONTROL                                                       Handle        = 0x8028004F\n\tTPM_E_DAA_RESOURCES                                                       Handle        = 0x80280050\n\tTPM_E_DAA_INPUT_DATA0                                                     Handle        = 0x80280051\n\tTPM_E_DAA_INPUT_DATA1                                                     Handle        = 0x80280052\n\tTPM_E_DAA_ISSUER_SETTINGS                                                 Handle        = 0x80280053\n\tTPM_E_DAA_TPM_SETTINGS                                                    Handle        = 0x80280054\n\tTPM_E_DAA_STAGE                                                           Handle        = 0x80280055\n\tTPM_E_DAA_ISSUER_VALIDITY                                                 Handle        = 0x80280056\n\tTPM_E_DAA_WRONG_W                                                         Handle        = 0x80280057\n\tTPM_E_BAD_HANDLE                                                          Handle        = 0x80280058\n\tTPM_E_BAD_DELEGATE                                                        Handle        = 0x80280059\n\tTPM_E_BADCONTEXT                                                          Handle        = 0x8028005A\n\tTPM_E_TOOMANYCONTEXTS                                                     Handle        = 0x8028005B\n\tTPM_E_MA_TICKET_SIGNATURE                                                 Handle        = 0x8028005C\n\tTPM_E_MA_DESTINATION                                                      Handle        = 0x8028005D\n\tTPM_E_MA_SOURCE                                                           Handle        = 0x8028005E\n\tTPM_E_MA_AUTHORITY                                                        Handle        = 0x8028005F\n\tTPM_E_PERMANENTEK                                                         Handle        = 0x80280061\n\tTPM_E_BAD_SIGNATURE                                                       Handle        = 0x80280062\n\tTPM_E_NOCONTEXTSPACE                                                      Handle        = 0x80280063\n\tTPM_20_E_ASYMMETRIC                                                       Handle        = 0x80280081\n\tTPM_20_E_ATTRIBUTES                                                       Handle        = 0x80280082\n\tTPM_20_E_HASH                                                             Handle        = 0x80280083\n\tTPM_20_E_VALUE                                                            Handle        = 0x80280084\n\tTPM_20_E_HIERARCHY                                                        Handle        = 0x80280085\n\tTPM_20_E_KEY_SIZE                                                         Handle        = 0x80280087\n\tTPM_20_E_MGF                                                              Handle        = 0x80280088\n\tTPM_20_E_MODE                                                             Handle        = 0x80280089\n\tTPM_20_E_TYPE                                                             Handle        = 0x8028008A\n\tTPM_20_E_HANDLE                                                           Handle        = 0x8028008B\n\tTPM_20_E_KDF                                                              Handle        = 0x8028008C\n\tTPM_20_E_RANGE                                                            Handle        = 0x8028008D\n\tTPM_20_E_AUTH_FAIL                                                        Handle        = 0x8028008E\n\tTPM_20_E_NONCE                                                            Handle        = 0x8028008F\n\tTPM_20_E_PP                                                               Handle        = 0x80280090\n\tTPM_20_E_SCHEME                                                           Handle        = 0x80280092\n\tTPM_20_E_SIZE                                                             Handle        = 0x80280095\n\tTPM_20_E_SYMMETRIC                                                        Handle        = 0x80280096\n\tTPM_20_E_TAG                                                              Handle        = 0x80280097\n\tTPM_20_E_SELECTOR                                                         Handle        = 0x80280098\n\tTPM_20_E_INSUFFICIENT                                                     Handle        = 0x8028009A\n\tTPM_20_E_SIGNATURE                                                        Handle        = 0x8028009B\n\tTPM_20_E_KEY                                                              Handle        = 0x8028009C\n\tTPM_20_E_POLICY_FAIL                                                      Handle        = 0x8028009D\n\tTPM_20_E_INTEGRITY                                                        Handle        = 0x8028009F\n\tTPM_20_E_TICKET                                                           Handle        = 0x802800A0\n\tTPM_20_E_RESERVED_BITS                                                    Handle        = 0x802800A1\n\tTPM_20_E_BAD_AUTH                                                         Handle        = 0x802800A2\n\tTPM_20_E_EXPIRED                                                          Handle        = 0x802800A3\n\tTPM_20_E_POLICY_CC                                                        Handle        = 0x802800A4\n\tTPM_20_E_BINDING                                                          Handle        = 0x802800A5\n\tTPM_20_E_CURVE                                                            Handle        = 0x802800A6\n\tTPM_20_E_ECC_POINT                                                        Handle        = 0x802800A7\n\tTPM_20_E_INITIALIZE                                                       Handle        = 0x80280100\n\tTPM_20_E_FAILURE                                                          Handle        = 0x80280101\n\tTPM_20_E_SEQUENCE                                                         Handle        = 0x80280103\n\tTPM_20_E_PRIVATE                                                          Handle        = 0x8028010B\n\tTPM_20_E_HMAC                                                             Handle        = 0x80280119\n\tTPM_20_E_DISABLED                                                         Handle        = 0x80280120\n\tTPM_20_E_EXCLUSIVE                                                        Handle        = 0x80280121\n\tTPM_20_E_ECC_CURVE                                                        Handle        = 0x80280123\n\tTPM_20_E_AUTH_TYPE                                                        Handle        = 0x80280124\n\tTPM_20_E_AUTH_MISSING                                                     Handle        = 0x80280125\n\tTPM_20_E_POLICY                                                           Handle        = 0x80280126\n\tTPM_20_E_PCR                                                              Handle        = 0x80280127\n\tTPM_20_E_PCR_CHANGED                                                      Handle        = 0x80280128\n\tTPM_20_E_UPGRADE                                                          Handle        = 0x8028012D\n\tTPM_20_E_TOO_MANY_CONTEXTS                                                Handle        = 0x8028012E\n\tTPM_20_E_AUTH_UNAVAILABLE                                                 Handle        = 0x8028012F\n\tTPM_20_E_REBOOT                                                           Handle        = 0x80280130\n\tTPM_20_E_UNBALANCED                                                       Handle        = 0x80280131\n\tTPM_20_E_COMMAND_SIZE                                                     Handle        = 0x80280142\n\tTPM_20_E_COMMAND_CODE                                                     Handle        = 0x80280143\n\tTPM_20_E_AUTHSIZE                                                         Handle        = 0x80280144\n\tTPM_20_E_AUTH_CONTEXT                                                     Handle        = 0x80280145\n\tTPM_20_E_NV_RANGE                                                         Handle        = 0x80280146\n\tTPM_20_E_NV_SIZE                                                          Handle        = 0x80280147\n\tTPM_20_E_NV_LOCKED                                                        Handle        = 0x80280148\n\tTPM_20_E_NV_AUTHORIZATION                                                 Handle        = 0x80280149\n\tTPM_20_E_NV_UNINITIALIZED                                                 Handle        = 0x8028014A\n\tTPM_20_E_NV_SPACE                                                         Handle        = 0x8028014B\n\tTPM_20_E_NV_DEFINED                                                       Handle        = 0x8028014C\n\tTPM_20_E_BAD_CONTEXT                                                      Handle        = 0x80280150\n\tTPM_20_E_CPHASH                                                           Handle        = 0x80280151\n\tTPM_20_E_PARENT                                                           Handle        = 0x80280152\n\tTPM_20_E_NEEDS_TEST                                                       Handle        = 0x80280153\n\tTPM_20_E_NO_RESULT                                                        Handle        = 0x80280154\n\tTPM_20_E_SENSITIVE                                                        Handle        = 0x80280155\n\tTPM_E_COMMAND_BLOCKED                                                     Handle        = 0x80280400\n\tTPM_E_INVALID_HANDLE                                                      Handle        = 0x80280401\n\tTPM_E_DUPLICATE_VHANDLE                                                   Handle        = 0x80280402\n\tTPM_E_EMBEDDED_COMMAND_BLOCKED                                            Handle        = 0x80280403\n\tTPM_E_EMBEDDED_COMMAND_UNSUPPORTED                                        Handle        = 0x80280404\n\tTPM_E_RETRY                                                               Handle        = 0x80280800\n\tTPM_E_NEEDS_SELFTEST                                                      Handle        = 0x80280801\n\tTPM_E_DOING_SELFTEST                                                      Handle        = 0x80280802\n\tTPM_E_DEFEND_LOCK_RUNNING                                                 Handle        = 0x80280803\n\tTPM_20_E_CONTEXT_GAP                                                      Handle        = 0x80280901\n\tTPM_20_E_OBJECT_MEMORY                                                    Handle        = 0x80280902\n\tTPM_20_E_SESSION_MEMORY                                                   Handle        = 0x80280903\n\tTPM_20_E_MEMORY                                                           Handle        = 0x80280904\n\tTPM_20_E_SESSION_HANDLES                                                  Handle        = 0x80280905\n\tTPM_20_E_OBJECT_HANDLES                                                   Handle        = 0x80280906\n\tTPM_20_E_LOCALITY                                                         Handle        = 0x80280907\n\tTPM_20_E_YIELDED                                                          Handle        = 0x80280908\n\tTPM_20_E_CANCELED                                                         Handle        = 0x80280909\n\tTPM_20_E_TESTING                                                          Handle        = 0x8028090A\n\tTPM_20_E_NV_RATE                                                          Handle        = 0x80280920\n\tTPM_20_E_LOCKOUT                                                          Handle        = 0x80280921\n\tTPM_20_E_RETRY                                                            Handle        = 0x80280922\n\tTPM_20_E_NV_UNAVAILABLE                                                   Handle        = 0x80280923\n\tTBS_E_INTERNAL_ERROR                                                      Handle        = 0x80284001\n\tTBS_E_BAD_PARAMETER                                                       Handle        = 0x80284002\n\tTBS_E_INVALID_OUTPUT_POINTER                                              Handle        = 0x80284003\n\tTBS_E_INVALID_CONTEXT                                                     Handle        = 0x80284004\n\tTBS_E_INSUFFICIENT_BUFFER                                                 Handle        = 0x80284005\n\tTBS_E_IOERROR                                                             Handle        = 0x80284006\n\tTBS_E_INVALID_CONTEXT_PARAM                                               Handle        = 0x80284007\n\tTBS_E_SERVICE_NOT_RUNNING                                                 Handle        = 0x80284008\n\tTBS_E_TOO_MANY_TBS_CONTEXTS                                               Handle        = 0x80284009\n\tTBS_E_TOO_MANY_RESOURCES                                                  Handle        = 0x8028400A\n\tTBS_E_SERVICE_START_PENDING                                               Handle        = 0x8028400B\n\tTBS_E_PPI_NOT_SUPPORTED                                                   Handle        = 0x8028400C\n\tTBS_E_COMMAND_CANCELED                                                    Handle        = 0x8028400D\n\tTBS_E_BUFFER_TOO_LARGE                                                    Handle        = 0x8028400E\n\tTBS_E_TPM_NOT_FOUND                                                       Handle        = 0x8028400F\n\tTBS_E_SERVICE_DISABLED                                                    Handle        = 0x80284010\n\tTBS_E_NO_EVENT_LOG                                                        Handle        = 0x80284011\n\tTBS_E_ACCESS_DENIED                                                       Handle        = 0x80284012\n\tTBS_E_PROVISIONING_NOT_ALLOWED                                            Handle        = 0x80284013\n\tTBS_E_PPI_FUNCTION_UNSUPPORTED                                            Handle        = 0x80284014\n\tTBS_E_OWNERAUTH_NOT_FOUND                                                 Handle        = 0x80284015\n\tTBS_E_PROVISIONING_INCOMPLETE                                             Handle        = 0x80284016\n\tTPMAPI_E_INVALID_STATE                                                    Handle        = 0x80290100\n\tTPMAPI_E_NOT_ENOUGH_DATA                                                  Handle        = 0x80290101\n\tTPMAPI_E_TOO_MUCH_DATA                                                    Handle        = 0x80290102\n\tTPMAPI_E_INVALID_OUTPUT_POINTER                                           Handle        = 0x80290103\n\tTPMAPI_E_INVALID_PARAMETER                                                Handle        = 0x80290104\n\tTPMAPI_E_OUT_OF_MEMORY                                                    Handle        = 0x80290105\n\tTPMAPI_E_BUFFER_TOO_SMALL                                                 Handle        = 0x80290106\n\tTPMAPI_E_INTERNAL_ERROR                                                   Handle        = 0x80290107\n\tTPMAPI_E_ACCESS_DENIED                                                    Handle        = 0x80290108\n\tTPMAPI_E_AUTHORIZATION_FAILED                                             Handle        = 0x80290109\n\tTPMAPI_E_INVALID_CONTEXT_HANDLE                                           Handle        = 0x8029010A\n\tTPMAPI_E_TBS_COMMUNICATION_ERROR                                          Handle        = 0x8029010B\n\tTPMAPI_E_TPM_COMMAND_ERROR                                                Handle        = 0x8029010C\n\tTPMAPI_E_MESSAGE_TOO_LARGE                                                Handle        = 0x8029010D\n\tTPMAPI_E_INVALID_ENCODING                                                 Handle        = 0x8029010E\n\tTPMAPI_E_INVALID_KEY_SIZE                                                 Handle        = 0x8029010F\n\tTPMAPI_E_ENCRYPTION_FAILED                                                Handle        = 0x80290110\n\tTPMAPI_E_INVALID_KEY_PARAMS                                               Handle        = 0x80290111\n\tTPMAPI_E_INVALID_MIGRATION_AUTHORIZATION_BLOB                             Handle        = 0x80290112\n\tTPMAPI_E_INVALID_PCR_INDEX                                                Handle        = 0x80290113\n\tTPMAPI_E_INVALID_DELEGATE_BLOB                                            Handle        = 0x80290114\n\tTPMAPI_E_INVALID_CONTEXT_PARAMS                                           Handle        = 0x80290115\n\tTPMAPI_E_INVALID_KEY_BLOB                                                 Handle        = 0x80290116\n\tTPMAPI_E_INVALID_PCR_DATA                                                 Handle        = 0x80290117\n\tTPMAPI_E_INVALID_OWNER_AUTH                                               Handle        = 0x80290118\n\tTPMAPI_E_FIPS_RNG_CHECK_FAILED                                            Handle        = 0x80290119\n\tTPMAPI_E_EMPTY_TCG_LOG                                                    Handle        = 0x8029011A\n\tTPMAPI_E_INVALID_TCG_LOG_ENTRY                                            Handle        = 0x8029011B\n\tTPMAPI_E_TCG_SEPARATOR_ABSENT                                             Handle        = 0x8029011C\n\tTPMAPI_E_TCG_INVALID_DIGEST_ENTRY                                         Handle        = 0x8029011D\n\tTPMAPI_E_POLICY_DENIES_OPERATION                                          Handle        = 0x8029011E\n\tTPMAPI_E_NV_BITS_NOT_DEFINED                                              Handle        = 0x8029011F\n\tTPMAPI_E_NV_BITS_NOT_READY                                                Handle        = 0x80290120\n\tTPMAPI_E_SEALING_KEY_NOT_AVAILABLE                                        Handle        = 0x80290121\n\tTPMAPI_E_NO_AUTHORIZATION_CHAIN_FOUND                                     Handle        = 0x80290122\n\tTPMAPI_E_SVN_COUNTER_NOT_AVAILABLE                                        Handle        = 0x80290123\n\tTPMAPI_E_OWNER_AUTH_NOT_NULL                                              Handle        = 0x80290124\n\tTPMAPI_E_ENDORSEMENT_AUTH_NOT_NULL                                        Handle        = 0x80290125\n\tTPMAPI_E_AUTHORIZATION_REVOKED                                            Handle        = 0x80290126\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_KEY                                      Handle        = 0x80290127\n\tTPMAPI_E_AUTHORIZING_KEY_NOT_SUPPORTED                                    Handle        = 0x80290128\n\tTPMAPI_E_INVALID_AUTHORIZATION_SIGNATURE                                  Handle        = 0x80290129\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_POLICY                                   Handle        = 0x8029012A\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_OTHER                                    Handle        = 0x8029012B\n\tTPMAPI_E_SEALING_KEY_CHANGED                                              Handle        = 0x8029012C\n\tTBSIMP_E_BUFFER_TOO_SMALL                                                 Handle        = 0x80290200\n\tTBSIMP_E_CLEANUP_FAILED                                                   Handle        = 0x80290201\n\tTBSIMP_E_INVALID_CONTEXT_HANDLE                                           Handle        = 0x80290202\n\tTBSIMP_E_INVALID_CONTEXT_PARAM                                            Handle        = 0x80290203\n\tTBSIMP_E_TPM_ERROR                                                        Handle        = 0x80290204\n\tTBSIMP_E_HASH_BAD_KEY                                                     Handle        = 0x80290205\n\tTBSIMP_E_DUPLICATE_VHANDLE                                                Handle        = 0x80290206\n\tTBSIMP_E_INVALID_OUTPUT_POINTER                                           Handle        = 0x80290207\n\tTBSIMP_E_INVALID_PARAMETER                                                Handle        = 0x80290208\n\tTBSIMP_E_RPC_INIT_FAILED                                                  Handle        = 0x80290209\n\tTBSIMP_E_SCHEDULER_NOT_RUNNING                                            Handle        = 0x8029020A\n\tTBSIMP_E_COMMAND_CANCELED                                                 Handle        = 0x8029020B\n\tTBSIMP_E_OUT_OF_MEMORY                                                    Handle        = 0x8029020C\n\tTBSIMP_E_LIST_NO_MORE_ITEMS                                               Handle        = 0x8029020D\n\tTBSIMP_E_LIST_NOT_FOUND                                                   Handle        = 0x8029020E\n\tTBSIMP_E_NOT_ENOUGH_SPACE                                                 Handle        = 0x8029020F\n\tTBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS                                          Handle        = 0x80290210\n\tTBSIMP_E_COMMAND_FAILED                                                   Handle        = 0x80290211\n\tTBSIMP_E_UNKNOWN_ORDINAL                                                  Handle        = 0x80290212\n\tTBSIMP_E_RESOURCE_EXPIRED                                                 Handle        = 0x80290213\n\tTBSIMP_E_INVALID_RESOURCE                                                 Handle        = 0x80290214\n\tTBSIMP_E_NOTHING_TO_UNLOAD                                                Handle        = 0x80290215\n\tTBSIMP_E_HASH_TABLE_FULL                                                  Handle        = 0x80290216\n\tTBSIMP_E_TOO_MANY_TBS_CONTEXTS                                            Handle        = 0x80290217\n\tTBSIMP_E_TOO_MANY_RESOURCES                                               Handle        = 0x80290218\n\tTBSIMP_E_PPI_NOT_SUPPORTED                                                Handle        = 0x80290219\n\tTBSIMP_E_TPM_INCOMPATIBLE                                                 Handle        = 0x8029021A\n\tTBSIMP_E_NO_EVENT_LOG                                                     Handle        = 0x8029021B\n\tTPM_E_PPI_ACPI_FAILURE                                                    Handle        = 0x80290300\n\tTPM_E_PPI_USER_ABORT                                                      Handle        = 0x80290301\n\tTPM_E_PPI_BIOS_FAILURE                                                    Handle        = 0x80290302\n\tTPM_E_PPI_NOT_SUPPORTED                                                   Handle        = 0x80290303\n\tTPM_E_PPI_BLOCKED_IN_BIOS                                                 Handle        = 0x80290304\n\tTPM_E_PCP_ERROR_MASK                                                      Handle        = 0x80290400\n\tTPM_E_PCP_DEVICE_NOT_READY                                                Handle        = 0x80290401\n\tTPM_E_PCP_INVALID_HANDLE                                                  Handle        = 0x80290402\n\tTPM_E_PCP_INVALID_PARAMETER                                               Handle        = 0x80290403\n\tTPM_E_PCP_FLAG_NOT_SUPPORTED                                              Handle        = 0x80290404\n\tTPM_E_PCP_NOT_SUPPORTED                                                   Handle        = 0x80290405\n\tTPM_E_PCP_BUFFER_TOO_SMALL                                                Handle        = 0x80290406\n\tTPM_E_PCP_INTERNAL_ERROR                                                  Handle        = 0x80290407\n\tTPM_E_PCP_AUTHENTICATION_FAILED                                           Handle        = 0x80290408\n\tTPM_E_PCP_AUTHENTICATION_IGNORED                                          Handle        = 0x80290409\n\tTPM_E_PCP_POLICY_NOT_FOUND                                                Handle        = 0x8029040A\n\tTPM_E_PCP_PROFILE_NOT_FOUND                                               Handle        = 0x8029040B\n\tTPM_E_PCP_VALIDATION_FAILED                                               Handle        = 0x8029040C\n\tTPM_E_PCP_WRONG_PARENT                                                    Handle        = 0x8029040E\n\tTPM_E_KEY_NOT_LOADED                                                      Handle        = 0x8029040F\n\tTPM_E_NO_KEY_CERTIFICATION                                                Handle        = 0x80290410\n\tTPM_E_KEY_NOT_FINALIZED                                                   Handle        = 0x80290411\n\tTPM_E_ATTESTATION_CHALLENGE_NOT_SET                                       Handle        = 0x80290412\n\tTPM_E_NOT_PCR_BOUND                                                       Handle        = 0x80290413\n\tTPM_E_KEY_ALREADY_FINALIZED                                               Handle        = 0x80290414\n\tTPM_E_KEY_USAGE_POLICY_NOT_SUPPORTED                                      Handle        = 0x80290415\n\tTPM_E_KEY_USAGE_POLICY_INVALID                                            Handle        = 0x80290416\n\tTPM_E_SOFT_KEY_ERROR                                                      Handle        = 0x80290417\n\tTPM_E_KEY_NOT_AUTHENTICATED                                               Handle        = 0x80290418\n\tTPM_E_PCP_KEY_NOT_AIK                                                     Handle        = 0x80290419\n\tTPM_E_KEY_NOT_SIGNING_KEY                                                 Handle        = 0x8029041A\n\tTPM_E_LOCKED_OUT                                                          Handle        = 0x8029041B\n\tTPM_E_CLAIM_TYPE_NOT_SUPPORTED                                            Handle        = 0x8029041C\n\tTPM_E_VERSION_NOT_SUPPORTED                                               Handle        = 0x8029041D\n\tTPM_E_BUFFER_LENGTH_MISMATCH                                              Handle        = 0x8029041E\n\tTPM_E_PCP_IFX_RSA_KEY_CREATION_BLOCKED                                    Handle        = 0x8029041F\n\tTPM_E_PCP_TICKET_MISSING                                                  Handle        = 0x80290420\n\tTPM_E_PCP_RAW_POLICY_NOT_SUPPORTED                                        Handle        = 0x80290421\n\tTPM_E_PCP_KEY_HANDLE_INVALIDATED                                          Handle        = 0x80290422\n\tTPM_E_PCP_UNSUPPORTED_PSS_SALT                                            Handle        = 0x40290423\n\tTPM_E_ZERO_EXHAUST_ENABLED                                                Handle        = 0x80290500\n\tPLA_E_DCS_NOT_FOUND                                                       Handle        = 0x80300002\n\tPLA_E_DCS_IN_USE                                                          Handle        = 0x803000AA\n\tPLA_E_TOO_MANY_FOLDERS                                                    Handle        = 0x80300045\n\tPLA_E_NO_MIN_DISK                                                         Handle        = 0x80300070\n\tPLA_E_DCS_ALREADY_EXISTS                                                  Handle        = 0x803000B7\n\tPLA_S_PROPERTY_IGNORED                                                    Handle        = 0x00300100\n\tPLA_E_PROPERTY_CONFLICT                                                   Handle        = 0x80300101\n\tPLA_E_DCS_SINGLETON_REQUIRED                                              Handle        = 0x80300102\n\tPLA_E_CREDENTIALS_REQUIRED                                                Handle        = 0x80300103\n\tPLA_E_DCS_NOT_RUNNING                                                     Handle        = 0x80300104\n\tPLA_E_CONFLICT_INCL_EXCL_API                                              Handle        = 0x80300105\n\tPLA_E_NETWORK_EXE_NOT_VALID                                               Handle        = 0x80300106\n\tPLA_E_EXE_ALREADY_CONFIGURED                                              Handle        = 0x80300107\n\tPLA_E_EXE_PATH_NOT_VALID                                                  Handle        = 0x80300108\n\tPLA_E_DC_ALREADY_EXISTS                                                   Handle        = 0x80300109\n\tPLA_E_DCS_START_WAIT_TIMEOUT                                              Handle        = 0x8030010A\n\tPLA_E_DC_START_WAIT_TIMEOUT                                               Handle        = 0x8030010B\n\tPLA_E_REPORT_WAIT_TIMEOUT                                                 Handle        = 0x8030010C\n\tPLA_E_NO_DUPLICATES                                                       Handle        = 0x8030010D\n\tPLA_E_EXE_FULL_PATH_REQUIRED                                              Handle        = 0x8030010E\n\tPLA_E_INVALID_SESSION_NAME                                                Handle        = 0x8030010F\n\tPLA_E_PLA_CHANNEL_NOT_ENABLED                                             Handle        = 0x80300110\n\tPLA_E_TASKSCHED_CHANNEL_NOT_ENABLED                                       Handle        = 0x80300111\n\tPLA_E_RULES_MANAGER_FAILED                                                Handle        = 0x80300112\n\tPLA_E_CABAPI_FAILURE                                                      Handle        = 0x80300113\n\tFVE_E_LOCKED_VOLUME                                                       Handle        = 0x80310000\n\tFVE_E_NOT_ENCRYPTED                                                       Handle        = 0x80310001\n\tFVE_E_NO_TPM_BIOS                                                         Handle        = 0x80310002\n\tFVE_E_NO_MBR_METRIC                                                       Handle        = 0x80310003\n\tFVE_E_NO_BOOTSECTOR_METRIC                                                Handle        = 0x80310004\n\tFVE_E_NO_BOOTMGR_METRIC                                                   Handle        = 0x80310005\n\tFVE_E_WRONG_BOOTMGR                                                       Handle        = 0x80310006\n\tFVE_E_SECURE_KEY_REQUIRED                                                 Handle        = 0x80310007\n\tFVE_E_NOT_ACTIVATED                                                       Handle        = 0x80310008\n\tFVE_E_ACTION_NOT_ALLOWED                                                  Handle        = 0x80310009\n\tFVE_E_AD_SCHEMA_NOT_INSTALLED                                             Handle        = 0x8031000A\n\tFVE_E_AD_INVALID_DATATYPE                                                 Handle        = 0x8031000B\n\tFVE_E_AD_INVALID_DATASIZE                                                 Handle        = 0x8031000C\n\tFVE_E_AD_NO_VALUES                                                        Handle        = 0x8031000D\n\tFVE_E_AD_ATTR_NOT_SET                                                     Handle        = 0x8031000E\n\tFVE_E_AD_GUID_NOT_FOUND                                                   Handle        = 0x8031000F\n\tFVE_E_BAD_INFORMATION                                                     Handle        = 0x80310010\n\tFVE_E_TOO_SMALL                                                           Handle        = 0x80310011\n\tFVE_E_SYSTEM_VOLUME                                                       Handle        = 0x80310012\n\tFVE_E_FAILED_WRONG_FS                                                     Handle        = 0x80310013\n\tFVE_E_BAD_PARTITION_SIZE                                                  Handle        = 0x80310014\n\tFVE_E_NOT_SUPPORTED                                                       Handle        = 0x80310015\n\tFVE_E_BAD_DATA                                                            Handle        = 0x80310016\n\tFVE_E_VOLUME_NOT_BOUND                                                    Handle        = 0x80310017\n\tFVE_E_TPM_NOT_OWNED                                                       Handle        = 0x80310018\n\tFVE_E_NOT_DATA_VOLUME                                                     Handle        = 0x80310019\n\tFVE_E_AD_INSUFFICIENT_BUFFER                                              Handle        = 0x8031001A\n\tFVE_E_CONV_READ                                                           Handle        = 0x8031001B\n\tFVE_E_CONV_WRITE                                                          Handle        = 0x8031001C\n\tFVE_E_KEY_REQUIRED                                                        Handle        = 0x8031001D\n\tFVE_E_CLUSTERING_NOT_SUPPORTED                                            Handle        = 0x8031001E\n\tFVE_E_VOLUME_BOUND_ALREADY                                                Handle        = 0x8031001F\n\tFVE_E_OS_NOT_PROTECTED                                                    Handle        = 0x80310020\n\tFVE_E_PROTECTION_DISABLED                                                 Handle        = 0x80310021\n\tFVE_E_RECOVERY_KEY_REQUIRED                                               Handle        = 0x80310022\n\tFVE_E_FOREIGN_VOLUME                                                      Handle        = 0x80310023\n\tFVE_E_OVERLAPPED_UPDATE                                                   Handle        = 0x80310024\n\tFVE_E_TPM_SRK_AUTH_NOT_ZERO                                               Handle        = 0x80310025\n\tFVE_E_FAILED_SECTOR_SIZE                                                  Handle        = 0x80310026\n\tFVE_E_FAILED_AUTHENTICATION                                               Handle        = 0x80310027\n\tFVE_E_NOT_OS_VOLUME                                                       Handle        = 0x80310028\n\tFVE_E_AUTOUNLOCK_ENABLED                                                  Handle        = 0x80310029\n\tFVE_E_WRONG_BOOTSECTOR                                                    Handle        = 0x8031002A\n\tFVE_E_WRONG_SYSTEM_FS                                                     Handle        = 0x8031002B\n\tFVE_E_POLICY_PASSWORD_REQUIRED                                            Handle        = 0x8031002C\n\tFVE_E_CANNOT_SET_FVEK_ENCRYPTED                                           Handle        = 0x8031002D\n\tFVE_E_CANNOT_ENCRYPT_NO_KEY                                               Handle        = 0x8031002E\n\tFVE_E_BOOTABLE_CDDVD                                                      Handle        = 0x80310030\n\tFVE_E_PROTECTOR_EXISTS                                                    Handle        = 0x80310031\n\tFVE_E_RELATIVE_PATH                                                       Handle        = 0x80310032\n\tFVE_E_PROTECTOR_NOT_FOUND                                                 Handle        = 0x80310033\n\tFVE_E_INVALID_KEY_FORMAT                                                  Handle        = 0x80310034\n\tFVE_E_INVALID_PASSWORD_FORMAT                                             Handle        = 0x80310035\n\tFVE_E_FIPS_RNG_CHECK_FAILED                                               Handle        = 0x80310036\n\tFVE_E_FIPS_PREVENTS_RECOVERY_PASSWORD                                     Handle        = 0x80310037\n\tFVE_E_FIPS_PREVENTS_EXTERNAL_KEY_EXPORT                                   Handle        = 0x80310038\n\tFVE_E_NOT_DECRYPTED                                                       Handle        = 0x80310039\n\tFVE_E_INVALID_PROTECTOR_TYPE                                              Handle        = 0x8031003A\n\tFVE_E_NO_PROTECTORS_TO_TEST                                               Handle        = 0x8031003B\n\tFVE_E_KEYFILE_NOT_FOUND                                                   Handle        = 0x8031003C\n\tFVE_E_KEYFILE_INVALID                                                     Handle        = 0x8031003D\n\tFVE_E_KEYFILE_NO_VMK                                                      Handle        = 0x8031003E\n\tFVE_E_TPM_DISABLED                                                        Handle        = 0x8031003F\n\tFVE_E_NOT_ALLOWED_IN_SAFE_MODE                                            Handle        = 0x80310040\n\tFVE_E_TPM_INVALID_PCR                                                     Handle        = 0x80310041\n\tFVE_E_TPM_NO_VMK                                                          Handle        = 0x80310042\n\tFVE_E_PIN_INVALID                                                         Handle        = 0x80310043\n\tFVE_E_AUTH_INVALID_APPLICATION                                            Handle        = 0x80310044\n\tFVE_E_AUTH_INVALID_CONFIG                                                 Handle        = 0x80310045\n\tFVE_E_FIPS_DISABLE_PROTECTION_NOT_ALLOWED                                 Handle        = 0x80310046\n\tFVE_E_FS_NOT_EXTENDED                                                     Handle        = 0x80310047\n\tFVE_E_FIRMWARE_TYPE_NOT_SUPPORTED                                         Handle        = 0x80310048\n\tFVE_E_NO_LICENSE                                                          Handle        = 0x80310049\n\tFVE_E_NOT_ON_STACK                                                        Handle        = 0x8031004A\n\tFVE_E_FS_MOUNTED                                                          Handle        = 0x8031004B\n\tFVE_E_TOKEN_NOT_IMPERSONATED                                              Handle        = 0x8031004C\n\tFVE_E_DRY_RUN_FAILED                                                      Handle        = 0x8031004D\n\tFVE_E_REBOOT_REQUIRED                                                     Handle        = 0x8031004E\n\tFVE_E_DEBUGGER_ENABLED                                                    Handle        = 0x8031004F\n\tFVE_E_RAW_ACCESS                                                          Handle        = 0x80310050\n\tFVE_E_RAW_BLOCKED                                                         Handle        = 0x80310051\n\tFVE_E_BCD_APPLICATIONS_PATH_INCORRECT                                     Handle        = 0x80310052\n\tFVE_E_NOT_ALLOWED_IN_VERSION                                              Handle        = 0x80310053\n\tFVE_E_NO_AUTOUNLOCK_MASTER_KEY                                            Handle        = 0x80310054\n\tFVE_E_MOR_FAILED                                                          Handle        = 0x80310055\n\tFVE_E_HIDDEN_VOLUME                                                       Handle        = 0x80310056\n\tFVE_E_TRANSIENT_STATE                                                     Handle        = 0x80310057\n\tFVE_E_PUBKEY_NOT_ALLOWED                                                  Handle        = 0x80310058\n\tFVE_E_VOLUME_HANDLE_OPEN                                                  Handle        = 0x80310059\n\tFVE_E_NO_FEATURE_LICENSE                                                  Handle        = 0x8031005A\n\tFVE_E_INVALID_STARTUP_OPTIONS                                             Handle        = 0x8031005B\n\tFVE_E_POLICY_RECOVERY_PASSWORD_NOT_ALLOWED                                Handle        = 0x8031005C\n\tFVE_E_POLICY_RECOVERY_PASSWORD_REQUIRED                                   Handle        = 0x8031005D\n\tFVE_E_POLICY_RECOVERY_KEY_NOT_ALLOWED                                     Handle        = 0x8031005E\n\tFVE_E_POLICY_RECOVERY_KEY_REQUIRED                                        Handle        = 0x8031005F\n\tFVE_E_POLICY_STARTUP_PIN_NOT_ALLOWED                                      Handle        = 0x80310060\n\tFVE_E_POLICY_STARTUP_PIN_REQUIRED                                         Handle        = 0x80310061\n\tFVE_E_POLICY_STARTUP_KEY_NOT_ALLOWED                                      Handle        = 0x80310062\n\tFVE_E_POLICY_STARTUP_KEY_REQUIRED                                         Handle        = 0x80310063\n\tFVE_E_POLICY_STARTUP_PIN_KEY_NOT_ALLOWED                                  Handle        = 0x80310064\n\tFVE_E_POLICY_STARTUP_PIN_KEY_REQUIRED                                     Handle        = 0x80310065\n\tFVE_E_POLICY_STARTUP_TPM_NOT_ALLOWED                                      Handle        = 0x80310066\n\tFVE_E_POLICY_STARTUP_TPM_REQUIRED                                         Handle        = 0x80310067\n\tFVE_E_POLICY_INVALID_PIN_LENGTH                                           Handle        = 0x80310068\n\tFVE_E_KEY_PROTECTOR_NOT_SUPPORTED                                         Handle        = 0x80310069\n\tFVE_E_POLICY_PASSPHRASE_NOT_ALLOWED                                       Handle        = 0x8031006A\n\tFVE_E_POLICY_PASSPHRASE_REQUIRED                                          Handle        = 0x8031006B\n\tFVE_E_FIPS_PREVENTS_PASSPHRASE                                            Handle        = 0x8031006C\n\tFVE_E_OS_VOLUME_PASSPHRASE_NOT_ALLOWED                                    Handle        = 0x8031006D\n\tFVE_E_INVALID_BITLOCKER_OID                                               Handle        = 0x8031006E\n\tFVE_E_VOLUME_TOO_SMALL                                                    Handle        = 0x8031006F\n\tFVE_E_DV_NOT_SUPPORTED_ON_FS                                              Handle        = 0x80310070\n\tFVE_E_DV_NOT_ALLOWED_BY_GP                                                Handle        = 0x80310071\n\tFVE_E_POLICY_USER_CERTIFICATE_NOT_ALLOWED                                 Handle        = 0x80310072\n\tFVE_E_POLICY_USER_CERTIFICATE_REQUIRED                                    Handle        = 0x80310073\n\tFVE_E_POLICY_USER_CERT_MUST_BE_HW                                         Handle        = 0x80310074\n\tFVE_E_POLICY_USER_CONFIGURE_FDV_AUTOUNLOCK_NOT_ALLOWED                    Handle        = 0x80310075\n\tFVE_E_POLICY_USER_CONFIGURE_RDV_AUTOUNLOCK_NOT_ALLOWED                    Handle        = 0x80310076\n\tFVE_E_POLICY_USER_CONFIGURE_RDV_NOT_ALLOWED                               Handle        = 0x80310077\n\tFVE_E_POLICY_USER_ENABLE_RDV_NOT_ALLOWED                                  Handle        = 0x80310078\n\tFVE_E_POLICY_USER_DISABLE_RDV_NOT_ALLOWED                                 Handle        = 0x80310079\n\tFVE_E_POLICY_INVALID_PASSPHRASE_LENGTH                                    Handle        = 0x80310080\n\tFVE_E_POLICY_PASSPHRASE_TOO_SIMPLE                                        Handle        = 0x80310081\n\tFVE_E_RECOVERY_PARTITION                                                  Handle        = 0x80310082\n\tFVE_E_POLICY_CONFLICT_FDV_RK_OFF_AUK_ON                                   Handle        = 0x80310083\n\tFVE_E_POLICY_CONFLICT_RDV_RK_OFF_AUK_ON                                   Handle        = 0x80310084\n\tFVE_E_NON_BITLOCKER_OID                                                   Handle        = 0x80310085\n\tFVE_E_POLICY_PROHIBITS_SELFSIGNED                                         Handle        = 0x80310086\n\tFVE_E_POLICY_CONFLICT_RO_AND_STARTUP_KEY_REQUIRED                         Handle        = 0x80310087\n\tFVE_E_CONV_RECOVERY_FAILED                                                Handle        = 0x80310088\n\tFVE_E_VIRTUALIZED_SPACE_TOO_BIG                                           Handle        = 0x80310089\n\tFVE_E_POLICY_CONFLICT_OSV_RP_OFF_ADB_ON                                   Handle        = 0x80310090\n\tFVE_E_POLICY_CONFLICT_FDV_RP_OFF_ADB_ON                                   Handle        = 0x80310091\n\tFVE_E_POLICY_CONFLICT_RDV_RP_OFF_ADB_ON                                   Handle        = 0x80310092\n\tFVE_E_NON_BITLOCKER_KU                                                    Handle        = 0x80310093\n\tFVE_E_PRIVATEKEY_AUTH_FAILED                                              Handle        = 0x80310094\n\tFVE_E_REMOVAL_OF_DRA_FAILED                                               Handle        = 0x80310095\n\tFVE_E_OPERATION_NOT_SUPPORTED_ON_VISTA_VOLUME                             Handle        = 0x80310096\n\tFVE_E_CANT_LOCK_AUTOUNLOCK_ENABLED_VOLUME                                 Handle        = 0x80310097\n\tFVE_E_FIPS_HASH_KDF_NOT_ALLOWED                                           Handle        = 0x80310098\n\tFVE_E_ENH_PIN_INVALID                                                     Handle        = 0x80310099\n\tFVE_E_INVALID_PIN_CHARS                                                   Handle        = 0x8031009A\n\tFVE_E_INVALID_DATUM_TYPE                                                  Handle        = 0x8031009B\n\tFVE_E_EFI_ONLY                                                            Handle        = 0x8031009C\n\tFVE_E_MULTIPLE_NKP_CERTS                                                  Handle        = 0x8031009D\n\tFVE_E_REMOVAL_OF_NKP_FAILED                                               Handle        = 0x8031009E\n\tFVE_E_INVALID_NKP_CERT                                                    Handle        = 0x8031009F\n\tFVE_E_NO_EXISTING_PIN                                                     Handle        = 0x803100A0\n\tFVE_E_PROTECTOR_CHANGE_PIN_MISMATCH                                       Handle        = 0x803100A1\n\tFVE_E_PIN_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED                         Handle        = 0x803100A2\n\tFVE_E_PROTECTOR_CHANGE_MAX_PIN_CHANGE_ATTEMPTS_REACHED                    Handle        = 0x803100A3\n\tFVE_E_POLICY_PASSPHRASE_REQUIRES_ASCII                                    Handle        = 0x803100A4\n\tFVE_E_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE                           Handle        = 0x803100A5\n\tFVE_E_WIPE_NOT_ALLOWED_ON_TP_STORAGE                                      Handle        = 0x803100A6\n\tFVE_E_KEY_LENGTH_NOT_SUPPORTED_BY_EDRIVE                                  Handle        = 0x803100A7\n\tFVE_E_NO_EXISTING_PASSPHRASE                                              Handle        = 0x803100A8\n\tFVE_E_PROTECTOR_CHANGE_PASSPHRASE_MISMATCH                                Handle        = 0x803100A9\n\tFVE_E_PASSPHRASE_TOO_LONG                                                 Handle        = 0x803100AA\n\tFVE_E_NO_PASSPHRASE_WITH_TPM                                              Handle        = 0x803100AB\n\tFVE_E_NO_TPM_WITH_PASSPHRASE                                              Handle        = 0x803100AC\n\tFVE_E_NOT_ALLOWED_ON_CSV_STACK                                            Handle        = 0x803100AD\n\tFVE_E_NOT_ALLOWED_ON_CLUSTER                                              Handle        = 0x803100AE\n\tFVE_E_EDRIVE_NO_FAILOVER_TO_SW                                            Handle        = 0x803100AF\n\tFVE_E_EDRIVE_BAND_IN_USE                                                  Handle        = 0x803100B0\n\tFVE_E_EDRIVE_DISALLOWED_BY_GP                                             Handle        = 0x803100B1\n\tFVE_E_EDRIVE_INCOMPATIBLE_VOLUME                                          Handle        = 0x803100B2\n\tFVE_E_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING                             Handle        = 0x803100B3\n\tFVE_E_EDRIVE_DV_NOT_SUPPORTED                                             Handle        = 0x803100B4\n\tFVE_E_NO_PREBOOT_KEYBOARD_DETECTED                                        Handle        = 0x803100B5\n\tFVE_E_NO_PREBOOT_KEYBOARD_OR_WINRE_DETECTED                               Handle        = 0x803100B6\n\tFVE_E_POLICY_REQUIRES_STARTUP_PIN_ON_TOUCH_DEVICE                         Handle        = 0x803100B7\n\tFVE_E_POLICY_REQUIRES_RECOVERY_PASSWORD_ON_TOUCH_DEVICE                   Handle        = 0x803100B8\n\tFVE_E_WIPE_CANCEL_NOT_APPLICABLE                                          Handle        = 0x803100B9\n\tFVE_E_SECUREBOOT_DISABLED                                                 Handle        = 0x803100BA\n\tFVE_E_SECUREBOOT_CONFIGURATION_INVALID                                    Handle        = 0x803100BB\n\tFVE_E_EDRIVE_DRY_RUN_FAILED                                               Handle        = 0x803100BC\n\tFVE_E_SHADOW_COPY_PRESENT                                                 Handle        = 0x803100BD\n\tFVE_E_POLICY_INVALID_ENHANCED_BCD_SETTINGS                                Handle        = 0x803100BE\n\tFVE_E_EDRIVE_INCOMPATIBLE_FIRMWARE                                        Handle        = 0x803100BF\n\tFVE_E_PROTECTOR_CHANGE_MAX_PASSPHRASE_CHANGE_ATTEMPTS_REACHED             Handle        = 0x803100C0\n\tFVE_E_PASSPHRASE_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED                  Handle        = 0x803100C1\n\tFVE_E_LIVEID_ACCOUNT_SUSPENDED                                            Handle        = 0x803100C2\n\tFVE_E_LIVEID_ACCOUNT_BLOCKED                                              Handle        = 0x803100C3\n\tFVE_E_NOT_PROVISIONED_ON_ALL_VOLUMES                                      Handle        = 0x803100C4\n\tFVE_E_DE_FIXED_DATA_NOT_SUPPORTED                                         Handle        = 0x803100C5\n\tFVE_E_DE_HARDWARE_NOT_COMPLIANT                                           Handle        = 0x803100C6\n\tFVE_E_DE_WINRE_NOT_CONFIGURED                                             Handle        = 0x803100C7\n\tFVE_E_DE_PROTECTION_SUSPENDED                                             Handle        = 0x803100C8\n\tFVE_E_DE_OS_VOLUME_NOT_PROTECTED                                          Handle        = 0x803100C9\n\tFVE_E_DE_DEVICE_LOCKEDOUT                                                 Handle        = 0x803100CA\n\tFVE_E_DE_PROTECTION_NOT_YET_ENABLED                                       Handle        = 0x803100CB\n\tFVE_E_INVALID_PIN_CHARS_DETAILED                                          Handle        = 0x803100CC\n\tFVE_E_DEVICE_LOCKOUT_COUNTER_UNAVAILABLE                                  Handle        = 0x803100CD\n\tFVE_E_DEVICELOCKOUT_COUNTER_MISMATCH                                      Handle        = 0x803100CE\n\tFVE_E_BUFFER_TOO_LARGE                                                    Handle        = 0x803100CF\n\tFVE_E_NO_SUCH_CAPABILITY_ON_TARGET                                        Handle        = 0x803100D0\n\tFVE_E_DE_PREVENTED_FOR_OS                                                 Handle        = 0x803100D1\n\tFVE_E_DE_VOLUME_OPTED_OUT                                                 Handle        = 0x803100D2\n\tFVE_E_DE_VOLUME_NOT_SUPPORTED                                             Handle        = 0x803100D3\n\tFVE_E_EOW_NOT_SUPPORTED_IN_VERSION                                        Handle        = 0x803100D4\n\tFVE_E_ADBACKUP_NOT_ENABLED                                                Handle        = 0x803100D5\n\tFVE_E_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT                                  Handle        = 0x803100D6\n\tFVE_E_NOT_DE_VOLUME                                                       Handle        = 0x803100D7\n\tFVE_E_PROTECTION_CANNOT_BE_DISABLED                                       Handle        = 0x803100D8\n\tFVE_E_OSV_KSR_NOT_ALLOWED                                                 Handle        = 0x803100D9\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_OS_DRIVE                          Handle        = 0x803100DA\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_FIXED_DRIVE                       Handle        = 0x803100DB\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_REMOVABLE_DRIVE                   Handle        = 0x803100DC\n\tFVE_E_KEY_ROTATION_NOT_SUPPORTED                                          Handle        = 0x803100DD\n\tFVE_E_EXECUTE_REQUEST_SENT_TOO_SOON                                       Handle        = 0x803100DE\n\tFVE_E_KEY_ROTATION_NOT_ENABLED                                            Handle        = 0x803100DF\n\tFVE_E_DEVICE_NOT_JOINED                                                   Handle        = 0x803100E0\n\tFWP_E_CALLOUT_NOT_FOUND                                                   Handle        = 0x80320001\n\tFWP_E_CONDITION_NOT_FOUND                                                 Handle        = 0x80320002\n\tFWP_E_FILTER_NOT_FOUND                                                    Handle        = 0x80320003\n\tFWP_E_LAYER_NOT_FOUND                                                     Handle        = 0x80320004\n\tFWP_E_PROVIDER_NOT_FOUND                                                  Handle        = 0x80320005\n\tFWP_E_PROVIDER_CONTEXT_NOT_FOUND                                          Handle        = 0x80320006\n\tFWP_E_SUBLAYER_NOT_FOUND                                                  Handle        = 0x80320007\n\tFWP_E_NOT_FOUND                                                           Handle        = 0x80320008\n\tFWP_E_ALREADY_EXISTS                                                      Handle        = 0x80320009\n\tFWP_E_IN_USE                                                              Handle        = 0x8032000A\n\tFWP_E_DYNAMIC_SESSION_IN_PROGRESS                                         Handle        = 0x8032000B\n\tFWP_E_WRONG_SESSION                                                       Handle        = 0x8032000C\n\tFWP_E_NO_TXN_IN_PROGRESS                                                  Handle        = 0x8032000D\n\tFWP_E_TXN_IN_PROGRESS                                                     Handle        = 0x8032000E\n\tFWP_E_TXN_ABORTED                                                         Handle        = 0x8032000F\n\tFWP_E_SESSION_ABORTED                                                     Handle        = 0x80320010\n\tFWP_E_INCOMPATIBLE_TXN                                                    Handle        = 0x80320011\n\tFWP_E_TIMEOUT                                                             Handle        = 0x80320012\n\tFWP_E_NET_EVENTS_DISABLED                                                 Handle        = 0x80320013\n\tFWP_E_INCOMPATIBLE_LAYER                                                  Handle        = 0x80320014\n\tFWP_E_KM_CLIENTS_ONLY                                                     Handle        = 0x80320015\n\tFWP_E_LIFETIME_MISMATCH                                                   Handle        = 0x80320016\n\tFWP_E_BUILTIN_OBJECT                                                      Handle        = 0x80320017\n\tFWP_E_TOO_MANY_CALLOUTS                                                   Handle        = 0x80320018\n\tFWP_E_NOTIFICATION_DROPPED                                                Handle        = 0x80320019\n\tFWP_E_TRAFFIC_MISMATCH                                                    Handle        = 0x8032001A\n\tFWP_E_INCOMPATIBLE_SA_STATE                                               Handle        = 0x8032001B\n\tFWP_E_NULL_POINTER                                                        Handle        = 0x8032001C\n\tFWP_E_INVALID_ENUMERATOR                                                  Handle        = 0x8032001D\n\tFWP_E_INVALID_FLAGS                                                       Handle        = 0x8032001E\n\tFWP_E_INVALID_NET_MASK                                                    Handle        = 0x8032001F\n\tFWP_E_INVALID_RANGE                                                       Handle        = 0x80320020\n\tFWP_E_INVALID_INTERVAL                                                    Handle        = 0x80320021\n\tFWP_E_ZERO_LENGTH_ARRAY                                                   Handle        = 0x80320022\n\tFWP_E_NULL_DISPLAY_NAME                                                   Handle        = 0x80320023\n\tFWP_E_INVALID_ACTION_TYPE                                                 Handle        = 0x80320024\n\tFWP_E_INVALID_WEIGHT                                                      Handle        = 0x80320025\n\tFWP_E_MATCH_TYPE_MISMATCH                                                 Handle        = 0x80320026\n\tFWP_E_TYPE_MISMATCH                                                       Handle        = 0x80320027\n\tFWP_E_OUT_OF_BOUNDS                                                       Handle        = 0x80320028\n\tFWP_E_RESERVED                                                            Handle        = 0x80320029\n\tFWP_E_DUPLICATE_CONDITION                                                 Handle        = 0x8032002A\n\tFWP_E_DUPLICATE_KEYMOD                                                    Handle        = 0x8032002B\n\tFWP_E_ACTION_INCOMPATIBLE_WITH_LAYER                                      Handle        = 0x8032002C\n\tFWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER                                   Handle        = 0x8032002D\n\tFWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER                                     Handle        = 0x8032002E\n\tFWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT                                   Handle        = 0x8032002F\n\tFWP_E_INCOMPATIBLE_AUTH_METHOD                                            Handle        = 0x80320030\n\tFWP_E_INCOMPATIBLE_DH_GROUP                                               Handle        = 0x80320031\n\tFWP_E_EM_NOT_SUPPORTED                                                    Handle        = 0x80320032\n\tFWP_E_NEVER_MATCH                                                         Handle        = 0x80320033\n\tFWP_E_PROVIDER_CONTEXT_MISMATCH                                           Handle        = 0x80320034\n\tFWP_E_INVALID_PARAMETER                                                   Handle        = 0x80320035\n\tFWP_E_TOO_MANY_SUBLAYERS                                                  Handle        = 0x80320036\n\tFWP_E_CALLOUT_NOTIFICATION_FAILED                                         Handle        = 0x80320037\n\tFWP_E_INVALID_AUTH_TRANSFORM                                              Handle        = 0x80320038\n\tFWP_E_INVALID_CIPHER_TRANSFORM                                            Handle        = 0x80320039\n\tFWP_E_INCOMPATIBLE_CIPHER_TRANSFORM                                       Handle        = 0x8032003A\n\tFWP_E_INVALID_TRANSFORM_COMBINATION                                       Handle        = 0x8032003B\n\tFWP_E_DUPLICATE_AUTH_METHOD                                               Handle        = 0x8032003C\n\tFWP_E_INVALID_TUNNEL_ENDPOINT                                             Handle        = 0x8032003D\n\tFWP_E_L2_DRIVER_NOT_READY                                                 Handle        = 0x8032003E\n\tFWP_E_KEY_DICTATOR_ALREADY_REGISTERED                                     Handle        = 0x8032003F\n\tFWP_E_KEY_DICTATION_INVALID_KEYING_MATERIAL                               Handle        = 0x80320040\n\tFWP_E_CONNECTIONS_DISABLED                                                Handle        = 0x80320041\n\tFWP_E_INVALID_DNS_NAME                                                    Handle        = 0x80320042\n\tFWP_E_STILL_ON                                                            Handle        = 0x80320043\n\tFWP_E_IKEEXT_NOT_RUNNING                                                  Handle        = 0x80320044\n\tFWP_E_DROP_NOICMP                                                         Handle        = 0x80320104\n\tWS_S_ASYNC                                                                Handle        = 0x003D0000\n\tWS_S_END                                                                  Handle        = 0x003D0001\n\tWS_E_INVALID_FORMAT                                                       Handle        = 0x803D0000\n\tWS_E_OBJECT_FAULTED                                                       Handle        = 0x803D0001\n\tWS_E_NUMERIC_OVERFLOW                                                     Handle        = 0x803D0002\n\tWS_E_INVALID_OPERATION                                                    Handle        = 0x803D0003\n\tWS_E_OPERATION_ABORTED                                                    Handle        = 0x803D0004\n\tWS_E_ENDPOINT_ACCESS_DENIED                                               Handle        = 0x803D0005\n\tWS_E_OPERATION_TIMED_OUT                                                  Handle        = 0x803D0006\n\tWS_E_OPERATION_ABANDONED                                                  Handle        = 0x803D0007\n\tWS_E_QUOTA_EXCEEDED                                                       Handle        = 0x803D0008\n\tWS_E_NO_TRANSLATION_AVAILABLE                                             Handle        = 0x803D0009\n\tWS_E_SECURITY_VERIFICATION_FAILURE                                        Handle        = 0x803D000A\n\tWS_E_ADDRESS_IN_USE                                                       Handle        = 0x803D000B\n\tWS_E_ADDRESS_NOT_AVAILABLE                                                Handle        = 0x803D000C\n\tWS_E_ENDPOINT_NOT_FOUND                                                   Handle        = 0x803D000D\n\tWS_E_ENDPOINT_NOT_AVAILABLE                                               Handle        = 0x803D000E\n\tWS_E_ENDPOINT_FAILURE                                                     Handle        = 0x803D000F\n\tWS_E_ENDPOINT_UNREACHABLE                                                 Handle        = 0x803D0010\n\tWS_E_ENDPOINT_ACTION_NOT_SUPPORTED                                        Handle        = 0x803D0011\n\tWS_E_ENDPOINT_TOO_BUSY                                                    Handle        = 0x803D0012\n\tWS_E_ENDPOINT_FAULT_RECEIVED                                              Handle        = 0x803D0013\n\tWS_E_ENDPOINT_DISCONNECTED                                                Handle        = 0x803D0014\n\tWS_E_PROXY_FAILURE                                                        Handle        = 0x803D0015\n\tWS_E_PROXY_ACCESS_DENIED                                                  Handle        = 0x803D0016\n\tWS_E_NOT_SUPPORTED                                                        Handle        = 0x803D0017\n\tWS_E_PROXY_REQUIRES_BASIC_AUTH                                            Handle        = 0x803D0018\n\tWS_E_PROXY_REQUIRES_DIGEST_AUTH                                           Handle        = 0x803D0019\n\tWS_E_PROXY_REQUIRES_NTLM_AUTH                                             Handle        = 0x803D001A\n\tWS_E_PROXY_REQUIRES_NEGOTIATE_AUTH                                        Handle        = 0x803D001B\n\tWS_E_SERVER_REQUIRES_BASIC_AUTH                                           Handle        = 0x803D001C\n\tWS_E_SERVER_REQUIRES_DIGEST_AUTH                                          Handle        = 0x803D001D\n\tWS_E_SERVER_REQUIRES_NTLM_AUTH                                            Handle        = 0x803D001E\n\tWS_E_SERVER_REQUIRES_NEGOTIATE_AUTH                                       Handle        = 0x803D001F\n\tWS_E_INVALID_ENDPOINT_URL                                                 Handle        = 0x803D0020\n\tWS_E_OTHER                                                                Handle        = 0x803D0021\n\tWS_E_SECURITY_TOKEN_EXPIRED                                               Handle        = 0x803D0022\n\tWS_E_SECURITY_SYSTEM_FAILURE                                              Handle        = 0x803D0023\n\tERROR_NDIS_INTERFACE_CLOSING                                              syscall.Errno = 0x80340002\n\tERROR_NDIS_BAD_VERSION                                                    syscall.Errno = 0x80340004\n\tERROR_NDIS_BAD_CHARACTERISTICS                                            syscall.Errno = 0x80340005\n\tERROR_NDIS_ADAPTER_NOT_FOUND                                              syscall.Errno = 0x80340006\n\tERROR_NDIS_OPEN_FAILED                                                    syscall.Errno = 0x80340007\n\tERROR_NDIS_DEVICE_FAILED                                                  syscall.Errno = 0x80340008\n\tERROR_NDIS_MULTICAST_FULL                                                 syscall.Errno = 0x80340009\n\tERROR_NDIS_MULTICAST_EXISTS                                               syscall.Errno = 0x8034000A\n\tERROR_NDIS_MULTICAST_NOT_FOUND                                            syscall.Errno = 0x8034000B\n\tERROR_NDIS_REQUEST_ABORTED                                                syscall.Errno = 0x8034000C\n\tERROR_NDIS_RESET_IN_PROGRESS                                              syscall.Errno = 0x8034000D\n\tERROR_NDIS_NOT_SUPPORTED                                                  syscall.Errno = 0x803400BB\n\tERROR_NDIS_INVALID_PACKET                                                 syscall.Errno = 0x8034000F\n\tERROR_NDIS_ADAPTER_NOT_READY                                              syscall.Errno = 0x80340011\n\tERROR_NDIS_INVALID_LENGTH                                                 syscall.Errno = 0x80340014\n\tERROR_NDIS_INVALID_DATA                                                   syscall.Errno = 0x80340015\n\tERROR_NDIS_BUFFER_TOO_SHORT                                               syscall.Errno = 0x80340016\n\tERROR_NDIS_INVALID_OID                                                    syscall.Errno = 0x80340017\n\tERROR_NDIS_ADAPTER_REMOVED                                                syscall.Errno = 0x80340018\n\tERROR_NDIS_UNSUPPORTED_MEDIA                                              syscall.Errno = 0x80340019\n\tERROR_NDIS_GROUP_ADDRESS_IN_USE                                           syscall.Errno = 0x8034001A\n\tERROR_NDIS_FILE_NOT_FOUND                                                 syscall.Errno = 0x8034001B\n\tERROR_NDIS_ERROR_READING_FILE                                             syscall.Errno = 0x8034001C\n\tERROR_NDIS_ALREADY_MAPPED                                                 syscall.Errno = 0x8034001D\n\tERROR_NDIS_RESOURCE_CONFLICT                                              syscall.Errno = 0x8034001E\n\tERROR_NDIS_MEDIA_DISCONNECTED                                             syscall.Errno = 0x8034001F\n\tERROR_NDIS_INVALID_ADDRESS                                                syscall.Errno = 0x80340022\n\tERROR_NDIS_INVALID_DEVICE_REQUEST                                         syscall.Errno = 0x80340010\n\tERROR_NDIS_PAUSED                                                         syscall.Errno = 0x8034002A\n\tERROR_NDIS_INTERFACE_NOT_FOUND                                            syscall.Errno = 0x8034002B\n\tERROR_NDIS_UNSUPPORTED_REVISION                                           syscall.Errno = 0x8034002C\n\tERROR_NDIS_INVALID_PORT                                                   syscall.Errno = 0x8034002D\n\tERROR_NDIS_INVALID_PORT_STATE                                             syscall.Errno = 0x8034002E\n\tERROR_NDIS_LOW_POWER_STATE                                                syscall.Errno = 0x8034002F\n\tERROR_NDIS_REINIT_REQUIRED                                                syscall.Errno = 0x80340030\n\tERROR_NDIS_NO_QUEUES                                                      syscall.Errno = 0x80340031\n\tERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED                                      syscall.Errno = 0x80342000\n\tERROR_NDIS_DOT11_MEDIA_IN_USE                                             syscall.Errno = 0x80342001\n\tERROR_NDIS_DOT11_POWER_STATE_INVALID                                      syscall.Errno = 0x80342002\n\tERROR_NDIS_PM_WOL_PATTERN_LIST_FULL                                       syscall.Errno = 0x80342003\n\tERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL                                  syscall.Errno = 0x80342004\n\tERROR_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE                       syscall.Errno = 0x80342005\n\tERROR_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE                          syscall.Errno = 0x80342006\n\tERROR_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED                                   syscall.Errno = 0x80342007\n\tERROR_NDIS_DOT11_AP_BAND_NOT_ALLOWED                                      syscall.Errno = 0x80342008\n\tERROR_NDIS_INDICATION_REQUIRED                                            syscall.Errno = 0x00340001\n\tERROR_NDIS_OFFLOAD_POLICY                                                 syscall.Errno = 0xC034100F\n\tERROR_NDIS_OFFLOAD_CONNECTION_REJECTED                                    syscall.Errno = 0xC0341012\n\tERROR_NDIS_OFFLOAD_PATH_REJECTED                                          syscall.Errno = 0xC0341013\n\tERROR_HV_INVALID_HYPERCALL_CODE                                           syscall.Errno = 0xC0350002\n\tERROR_HV_INVALID_HYPERCALL_INPUT                                          syscall.Errno = 0xC0350003\n\tERROR_HV_INVALID_ALIGNMENT                                                syscall.Errno = 0xC0350004\n\tERROR_HV_INVALID_PARAMETER                                                syscall.Errno = 0xC0350005\n\tERROR_HV_ACCESS_DENIED                                                    syscall.Errno = 0xC0350006\n\tERROR_HV_INVALID_PARTITION_STATE                                          syscall.Errno = 0xC0350007\n\tERROR_HV_OPERATION_DENIED                                                 syscall.Errno = 0xC0350008\n\tERROR_HV_UNKNOWN_PROPERTY                                                 syscall.Errno = 0xC0350009\n\tERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE                                      syscall.Errno = 0xC035000A\n\tERROR_HV_INSUFFICIENT_MEMORY                                              syscall.Errno = 0xC035000B\n\tERROR_HV_PARTITION_TOO_DEEP                                               syscall.Errno = 0xC035000C\n\tERROR_HV_INVALID_PARTITION_ID                                             syscall.Errno = 0xC035000D\n\tERROR_HV_INVALID_VP_INDEX                                                 syscall.Errno = 0xC035000E\n\tERROR_HV_INVALID_PORT_ID                                                  syscall.Errno = 0xC0350011\n\tERROR_HV_INVALID_CONNECTION_ID                                            syscall.Errno = 0xC0350012\n\tERROR_HV_INSUFFICIENT_BUFFERS                                             syscall.Errno = 0xC0350013\n\tERROR_HV_NOT_ACKNOWLEDGED                                                 syscall.Errno = 0xC0350014\n\tERROR_HV_INVALID_VP_STATE                                                 syscall.Errno = 0xC0350015\n\tERROR_HV_ACKNOWLEDGED                                                     syscall.Errno = 0xC0350016\n\tERROR_HV_INVALID_SAVE_RESTORE_STATE                                       syscall.Errno = 0xC0350017\n\tERROR_HV_INVALID_SYNIC_STATE                                              syscall.Errno = 0xC0350018\n\tERROR_HV_OBJECT_IN_USE                                                    syscall.Errno = 0xC0350019\n\tERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO                                    syscall.Errno = 0xC035001A\n\tERROR_HV_NO_DATA                                                          syscall.Errno = 0xC035001B\n\tERROR_HV_INACTIVE                                                         syscall.Errno = 0xC035001C\n\tERROR_HV_NO_RESOURCES                                                     syscall.Errno = 0xC035001D\n\tERROR_HV_FEATURE_UNAVAILABLE                                              syscall.Errno = 0xC035001E\n\tERROR_HV_INSUFFICIENT_BUFFER                                              syscall.Errno = 0xC0350033\n\tERROR_HV_INSUFFICIENT_DEVICE_DOMAINS                                      syscall.Errno = 0xC0350038\n\tERROR_HV_CPUID_FEATURE_VALIDATION                                         syscall.Errno = 0xC035003C\n\tERROR_HV_CPUID_XSAVE_FEATURE_VALIDATION                                   syscall.Errno = 0xC035003D\n\tERROR_HV_PROCESSOR_STARTUP_TIMEOUT                                        syscall.Errno = 0xC035003E\n\tERROR_HV_SMX_ENABLED                                                      syscall.Errno = 0xC035003F\n\tERROR_HV_INVALID_LP_INDEX                                                 syscall.Errno = 0xC0350041\n\tERROR_HV_INVALID_REGISTER_VALUE                                           syscall.Errno = 0xC0350050\n\tERROR_HV_INVALID_VTL_STATE                                                syscall.Errno = 0xC0350051\n\tERROR_HV_NX_NOT_DETECTED                                                  syscall.Errno = 0xC0350055\n\tERROR_HV_INVALID_DEVICE_ID                                                syscall.Errno = 0xC0350057\n\tERROR_HV_INVALID_DEVICE_STATE                                             syscall.Errno = 0xC0350058\n\tERROR_HV_PENDING_PAGE_REQUESTS                                            syscall.Errno = 0x00350059\n\tERROR_HV_PAGE_REQUEST_INVALID                                             syscall.Errno = 0xC0350060\n\tERROR_HV_INVALID_CPU_GROUP_ID                                             syscall.Errno = 0xC035006F\n\tERROR_HV_INVALID_CPU_GROUP_STATE                                          syscall.Errno = 0xC0350070\n\tERROR_HV_OPERATION_FAILED                                                 syscall.Errno = 0xC0350071\n\tERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE                              syscall.Errno = 0xC0350072\n\tERROR_HV_INSUFFICIENT_ROOT_MEMORY                                         syscall.Errno = 0xC0350073\n\tERROR_HV_NOT_PRESENT                                                      syscall.Errno = 0xC0351000\n\tERROR_VID_DUPLICATE_HANDLER                                               syscall.Errno = 0xC0370001\n\tERROR_VID_TOO_MANY_HANDLERS                                               syscall.Errno = 0xC0370002\n\tERROR_VID_QUEUE_FULL                                                      syscall.Errno = 0xC0370003\n\tERROR_VID_HANDLER_NOT_PRESENT                                             syscall.Errno = 0xC0370004\n\tERROR_VID_INVALID_OBJECT_NAME                                             syscall.Errno = 0xC0370005\n\tERROR_VID_PARTITION_NAME_TOO_LONG                                         syscall.Errno = 0xC0370006\n\tERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG                                     syscall.Errno = 0xC0370007\n\tERROR_VID_PARTITION_ALREADY_EXISTS                                        syscall.Errno = 0xC0370008\n\tERROR_VID_PARTITION_DOES_NOT_EXIST                                        syscall.Errno = 0xC0370009\n\tERROR_VID_PARTITION_NAME_NOT_FOUND                                        syscall.Errno = 0xC037000A\n\tERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS                                    syscall.Errno = 0xC037000B\n\tERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT                                    syscall.Errno = 0xC037000C\n\tERROR_VID_MB_STILL_REFERENCED                                             syscall.Errno = 0xC037000D\n\tERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED                                    syscall.Errno = 0xC037000E\n\tERROR_VID_INVALID_NUMA_SETTINGS                                           syscall.Errno = 0xC037000F\n\tERROR_VID_INVALID_NUMA_NODE_INDEX                                         syscall.Errno = 0xC0370010\n\tERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED                           syscall.Errno = 0xC0370011\n\tERROR_VID_INVALID_MEMORY_BLOCK_HANDLE                                     syscall.Errno = 0xC0370012\n\tERROR_VID_PAGE_RANGE_OVERFLOW                                             syscall.Errno = 0xC0370013\n\tERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE                                    syscall.Errno = 0xC0370014\n\tERROR_VID_INVALID_GPA_RANGE_HANDLE                                        syscall.Errno = 0xC0370015\n\tERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE                              syscall.Errno = 0xC0370016\n\tERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED                                syscall.Errno = 0xC0370017\n\tERROR_VID_INVALID_PPM_HANDLE                                              syscall.Errno = 0xC0370018\n\tERROR_VID_MBPS_ARE_LOCKED                                                 syscall.Errno = 0xC0370019\n\tERROR_VID_MESSAGE_QUEUE_CLOSED                                            syscall.Errno = 0xC037001A\n\tERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED                                syscall.Errno = 0xC037001B\n\tERROR_VID_STOP_PENDING                                                    syscall.Errno = 0xC037001C\n\tERROR_VID_INVALID_PROCESSOR_STATE                                         syscall.Errno = 0xC037001D\n\tERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT                                 syscall.Errno = 0xC037001E\n\tERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED                                syscall.Errno = 0xC037001F\n\tERROR_VID_MB_PROPERTY_ALREADY_SET_RESET                                   syscall.Errno = 0xC0370020\n\tERROR_VID_MMIO_RANGE_DESTROYED                                            syscall.Errno = 0xC0370021\n\tERROR_VID_INVALID_CHILD_GPA_PAGE_SET                                      syscall.Errno = 0xC0370022\n\tERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED                                  syscall.Errno = 0xC0370023\n\tERROR_VID_RESERVE_PAGE_SET_TOO_SMALL                                      syscall.Errno = 0xC0370024\n\tERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE                          syscall.Errno = 0xC0370025\n\tERROR_VID_MBP_COUNT_EXCEEDED_LIMIT                                        syscall.Errno = 0xC0370026\n\tERROR_VID_SAVED_STATE_CORRUPT                                             syscall.Errno = 0xC0370027\n\tERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM                                   syscall.Errno = 0xC0370028\n\tERROR_VID_SAVED_STATE_INCOMPATIBLE                                        syscall.Errno = 0xC0370029\n\tERROR_VID_VTL_ACCESS_DENIED                                               syscall.Errno = 0xC037002A\n\tERROR_VMCOMPUTE_TERMINATED_DURING_START                                   syscall.Errno = 0xC0370100\n\tERROR_VMCOMPUTE_IMAGE_MISMATCH                                            syscall.Errno = 0xC0370101\n\tERROR_VMCOMPUTE_HYPERV_NOT_INSTALLED                                      syscall.Errno = 0xC0370102\n\tERROR_VMCOMPUTE_OPERATION_PENDING                                         syscall.Errno = 0xC0370103\n\tERROR_VMCOMPUTE_TOO_MANY_NOTIFICATIONS                                    syscall.Errno = 0xC0370104\n\tERROR_VMCOMPUTE_INVALID_STATE                                             syscall.Errno = 0xC0370105\n\tERROR_VMCOMPUTE_UNEXPECTED_EXIT                                           syscall.Errno = 0xC0370106\n\tERROR_VMCOMPUTE_TERMINATED                                                syscall.Errno = 0xC0370107\n\tERROR_VMCOMPUTE_CONNECT_FAILED                                            syscall.Errno = 0xC0370108\n\tERROR_VMCOMPUTE_TIMEOUT                                                   syscall.Errno = 0xC0370109\n\tERROR_VMCOMPUTE_CONNECTION_CLOSED                                         syscall.Errno = 0xC037010A\n\tERROR_VMCOMPUTE_UNKNOWN_MESSAGE                                           syscall.Errno = 0xC037010B\n\tERROR_VMCOMPUTE_UNSUPPORTED_PROTOCOL_VERSION                              syscall.Errno = 0xC037010C\n\tERROR_VMCOMPUTE_INVALID_JSON                                              syscall.Errno = 0xC037010D\n\tERROR_VMCOMPUTE_SYSTEM_NOT_FOUND                                          syscall.Errno = 0xC037010E\n\tERROR_VMCOMPUTE_SYSTEM_ALREADY_EXISTS                                     syscall.Errno = 0xC037010F\n\tERROR_VMCOMPUTE_SYSTEM_ALREADY_STOPPED                                    syscall.Errno = 0xC0370110\n\tERROR_VMCOMPUTE_PROTOCOL_ERROR                                            syscall.Errno = 0xC0370111\n\tERROR_VMCOMPUTE_INVALID_LAYER                                             syscall.Errno = 0xC0370112\n\tERROR_VMCOMPUTE_WINDOWS_INSIDER_REQUIRED                                  syscall.Errno = 0xC0370113\n\tHCS_E_TERMINATED_DURING_START                                             Handle        = 0x80370100\n\tHCS_E_IMAGE_MISMATCH                                                      Handle        = 0x80370101\n\tHCS_E_HYPERV_NOT_INSTALLED                                                Handle        = 0x80370102\n\tHCS_E_INVALID_STATE                                                       Handle        = 0x80370105\n\tHCS_E_UNEXPECTED_EXIT                                                     Handle        = 0x80370106\n\tHCS_E_TERMINATED                                                          Handle        = 0x80370107\n\tHCS_E_CONNECT_FAILED                                                      Handle        = 0x80370108\n\tHCS_E_CONNECTION_TIMEOUT                                                  Handle        = 0x80370109\n\tHCS_E_CONNECTION_CLOSED                                                   Handle        = 0x8037010A\n\tHCS_E_UNKNOWN_MESSAGE                                                     Handle        = 0x8037010B\n\tHCS_E_UNSUPPORTED_PROTOCOL_VERSION                                        Handle        = 0x8037010C\n\tHCS_E_INVALID_JSON                                                        Handle        = 0x8037010D\n\tHCS_E_SYSTEM_NOT_FOUND                                                    Handle        = 0x8037010E\n\tHCS_E_SYSTEM_ALREADY_EXISTS                                               Handle        = 0x8037010F\n\tHCS_E_SYSTEM_ALREADY_STOPPED                                              Handle        = 0x80370110\n\tHCS_E_PROTOCOL_ERROR                                                      Handle        = 0x80370111\n\tHCS_E_INVALID_LAYER                                                       Handle        = 0x80370112\n\tHCS_E_WINDOWS_INSIDER_REQUIRED                                            Handle        = 0x80370113\n\tHCS_E_SERVICE_NOT_AVAILABLE                                               Handle        = 0x80370114\n\tHCS_E_OPERATION_NOT_STARTED                                               Handle        = 0x80370115\n\tHCS_E_OPERATION_ALREADY_STARTED                                           Handle        = 0x80370116\n\tHCS_E_OPERATION_PENDING                                                   Handle        = 0x80370117\n\tHCS_E_OPERATION_TIMEOUT                                                   Handle        = 0x80370118\n\tHCS_E_OPERATION_SYSTEM_CALLBACK_ALREADY_SET                               Handle        = 0x80370119\n\tHCS_E_OPERATION_RESULT_ALLOCATION_FAILED                                  Handle        = 0x8037011A\n\tHCS_E_ACCESS_DENIED                                                       Handle        = 0x8037011B\n\tHCS_E_GUEST_CRITICAL_ERROR                                                Handle        = 0x8037011C\n\tERROR_VNET_VIRTUAL_SWITCH_NAME_NOT_FOUND                                  syscall.Errno = 0xC0370200\n\tERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED                               syscall.Errno = 0x80370001\n\tWHV_E_UNKNOWN_CAPABILITY                                                  Handle        = 0x80370300\n\tWHV_E_INSUFFICIENT_BUFFER                                                 Handle        = 0x80370301\n\tWHV_E_UNKNOWN_PROPERTY                                                    Handle        = 0x80370302\n\tWHV_E_UNSUPPORTED_HYPERVISOR_CONFIG                                       Handle        = 0x80370303\n\tWHV_E_INVALID_PARTITION_CONFIG                                            Handle        = 0x80370304\n\tWHV_E_GPA_RANGE_NOT_FOUND                                                 Handle        = 0x80370305\n\tWHV_E_VP_ALREADY_EXISTS                                                   Handle        = 0x80370306\n\tWHV_E_VP_DOES_NOT_EXIST                                                   Handle        = 0x80370307\n\tWHV_E_INVALID_VP_STATE                                                    Handle        = 0x80370308\n\tWHV_E_INVALID_VP_REGISTER_NAME                                            Handle        = 0x80370309\n\tERROR_VSMB_SAVED_STATE_FILE_NOT_FOUND                                     syscall.Errno = 0xC0370400\n\tERROR_VSMB_SAVED_STATE_CORRUPT                                            syscall.Errno = 0xC0370401\n\tERROR_VOLMGR_INCOMPLETE_REGENERATION                                      syscall.Errno = 0x80380001\n\tERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION                                    syscall.Errno = 0x80380002\n\tERROR_VOLMGR_DATABASE_FULL                                                syscall.Errno = 0xC0380001\n\tERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED                                 syscall.Errno = 0xC0380002\n\tERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC                               syscall.Errno = 0xC0380003\n\tERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED                                    syscall.Errno = 0xC0380004\n\tERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME                              syscall.Errno = 0xC0380005\n\tERROR_VOLMGR_DISK_DUPLICATE                                               syscall.Errno = 0xC0380006\n\tERROR_VOLMGR_DISK_DYNAMIC                                                 syscall.Errno = 0xC0380007\n\tERROR_VOLMGR_DISK_ID_INVALID                                              syscall.Errno = 0xC0380008\n\tERROR_VOLMGR_DISK_INVALID                                                 syscall.Errno = 0xC0380009\n\tERROR_VOLMGR_DISK_LAST_VOTER                                              syscall.Errno = 0xC038000A\n\tERROR_VOLMGR_DISK_LAYOUT_INVALID                                          syscall.Errno = 0xC038000B\n\tERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS               syscall.Errno = 0xC038000C\n\tERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED                             syscall.Errno = 0xC038000D\n\tERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL                             syscall.Errno = 0xC038000E\n\tERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS               syscall.Errno = 0xC038000F\n\tERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS                              syscall.Errno = 0xC0380010\n\tERROR_VOLMGR_DISK_MISSING                                                 syscall.Errno = 0xC0380011\n\tERROR_VOLMGR_DISK_NOT_EMPTY                                               syscall.Errno = 0xC0380012\n\tERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE                                        syscall.Errno = 0xC0380013\n\tERROR_VOLMGR_DISK_REVECTORING_FAILED                                      syscall.Errno = 0xC0380014\n\tERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID                                     syscall.Errno = 0xC0380015\n\tERROR_VOLMGR_DISK_SET_NOT_CONTAINED                                       syscall.Errno = 0xC0380016\n\tERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS                                syscall.Errno = 0xC0380017\n\tERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES                                 syscall.Errno = 0xC0380018\n\tERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED                                   syscall.Errno = 0xC0380019\n\tERROR_VOLMGR_EXTENT_ALREADY_USED                                          syscall.Errno = 0xC038001A\n\tERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS                                        syscall.Errno = 0xC038001B\n\tERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION                                  syscall.Errno = 0xC038001C\n\tERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED                                    syscall.Errno = 0xC038001D\n\tERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION                                syscall.Errno = 0xC038001E\n\tERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH                           syscall.Errno = 0xC038001F\n\tERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED                                 syscall.Errno = 0xC0380020\n\tERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID                                    syscall.Errno = 0xC0380021\n\tERROR_VOLMGR_MAXIMUM_REGISTERED_USERS                                     syscall.Errno = 0xC0380022\n\tERROR_VOLMGR_MEMBER_IN_SYNC                                               syscall.Errno = 0xC0380023\n\tERROR_VOLMGR_MEMBER_INDEX_DUPLICATE                                       syscall.Errno = 0xC0380024\n\tERROR_VOLMGR_MEMBER_INDEX_INVALID                                         syscall.Errno = 0xC0380025\n\tERROR_VOLMGR_MEMBER_MISSING                                               syscall.Errno = 0xC0380026\n\tERROR_VOLMGR_MEMBER_NOT_DETACHED                                          syscall.Errno = 0xC0380027\n\tERROR_VOLMGR_MEMBER_REGENERATING                                          syscall.Errno = 0xC0380028\n\tERROR_VOLMGR_ALL_DISKS_FAILED                                             syscall.Errno = 0xC0380029\n\tERROR_VOLMGR_NO_REGISTERED_USERS                                          syscall.Errno = 0xC038002A\n\tERROR_VOLMGR_NO_SUCH_USER                                                 syscall.Errno = 0xC038002B\n\tERROR_VOLMGR_NOTIFICATION_RESET                                           syscall.Errno = 0xC038002C\n\tERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID                                    syscall.Errno = 0xC038002D\n\tERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID                                     syscall.Errno = 0xC038002E\n\tERROR_VOLMGR_PACK_DUPLICATE                                               syscall.Errno = 0xC038002F\n\tERROR_VOLMGR_PACK_ID_INVALID                                              syscall.Errno = 0xC0380030\n\tERROR_VOLMGR_PACK_INVALID                                                 syscall.Errno = 0xC0380031\n\tERROR_VOLMGR_PACK_NAME_INVALID                                            syscall.Errno = 0xC0380032\n\tERROR_VOLMGR_PACK_OFFLINE                                                 syscall.Errno = 0xC0380033\n\tERROR_VOLMGR_PACK_HAS_QUORUM                                              syscall.Errno = 0xC0380034\n\tERROR_VOLMGR_PACK_WITHOUT_QUORUM                                          syscall.Errno = 0xC0380035\n\tERROR_VOLMGR_PARTITION_STYLE_INVALID                                      syscall.Errno = 0xC0380036\n\tERROR_VOLMGR_PARTITION_UPDATE_FAILED                                      syscall.Errno = 0xC0380037\n\tERROR_VOLMGR_PLEX_IN_SYNC                                                 syscall.Errno = 0xC0380038\n\tERROR_VOLMGR_PLEX_INDEX_DUPLICATE                                         syscall.Errno = 0xC0380039\n\tERROR_VOLMGR_PLEX_INDEX_INVALID                                           syscall.Errno = 0xC038003A\n\tERROR_VOLMGR_PLEX_LAST_ACTIVE                                             syscall.Errno = 0xC038003B\n\tERROR_VOLMGR_PLEX_MISSING                                                 syscall.Errno = 0xC038003C\n\tERROR_VOLMGR_PLEX_REGENERATING                                            syscall.Errno = 0xC038003D\n\tERROR_VOLMGR_PLEX_TYPE_INVALID                                            syscall.Errno = 0xC038003E\n\tERROR_VOLMGR_PLEX_NOT_RAID5                                               syscall.Errno = 0xC038003F\n\tERROR_VOLMGR_PLEX_NOT_SIMPLE                                              syscall.Errno = 0xC0380040\n\tERROR_VOLMGR_STRUCTURE_SIZE_INVALID                                       syscall.Errno = 0xC0380041\n\tERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS                               syscall.Errno = 0xC0380042\n\tERROR_VOLMGR_TRANSACTION_IN_PROGRESS                                      syscall.Errno = 0xC0380043\n\tERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE                                syscall.Errno = 0xC0380044\n\tERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK                                 syscall.Errno = 0xC0380045\n\tERROR_VOLMGR_VOLUME_ID_INVALID                                            syscall.Errno = 0xC0380046\n\tERROR_VOLMGR_VOLUME_LENGTH_INVALID                                        syscall.Errno = 0xC0380047\n\tERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE                       syscall.Errno = 0xC0380048\n\tERROR_VOLMGR_VOLUME_NOT_MIRRORED                                          syscall.Errno = 0xC0380049\n\tERROR_VOLMGR_VOLUME_NOT_RETAINED                                          syscall.Errno = 0xC038004A\n\tERROR_VOLMGR_VOLUME_OFFLINE                                               syscall.Errno = 0xC038004B\n\tERROR_VOLMGR_VOLUME_RETAINED                                              syscall.Errno = 0xC038004C\n\tERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID                                    syscall.Errno = 0xC038004D\n\tERROR_VOLMGR_DIFFERENT_SECTOR_SIZE                                        syscall.Errno = 0xC038004E\n\tERROR_VOLMGR_BAD_BOOT_DISK                                                syscall.Errno = 0xC038004F\n\tERROR_VOLMGR_PACK_CONFIG_OFFLINE                                          syscall.Errno = 0xC0380050\n\tERROR_VOLMGR_PACK_CONFIG_ONLINE                                           syscall.Errno = 0xC0380051\n\tERROR_VOLMGR_NOT_PRIMARY_PACK                                             syscall.Errno = 0xC0380052\n\tERROR_VOLMGR_PACK_LOG_UPDATE_FAILED                                       syscall.Errno = 0xC0380053\n\tERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID                              syscall.Errno = 0xC0380054\n\tERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID                            syscall.Errno = 0xC0380055\n\tERROR_VOLMGR_VOLUME_MIRRORED                                              syscall.Errno = 0xC0380056\n\tERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED                                      syscall.Errno = 0xC0380057\n\tERROR_VOLMGR_NO_VALID_LOG_COPIES                                          syscall.Errno = 0xC0380058\n\tERROR_VOLMGR_PRIMARY_PACK_PRESENT                                         syscall.Errno = 0xC0380059\n\tERROR_VOLMGR_NUMBER_OF_DISKS_INVALID                                      syscall.Errno = 0xC038005A\n\tERROR_VOLMGR_MIRROR_NOT_SUPPORTED                                         syscall.Errno = 0xC038005B\n\tERROR_VOLMGR_RAID5_NOT_SUPPORTED                                          syscall.Errno = 0xC038005C\n\tERROR_BCD_NOT_ALL_ENTRIES_IMPORTED                                        syscall.Errno = 0x80390001\n\tERROR_BCD_TOO_MANY_ELEMENTS                                               syscall.Errno = 0xC0390002\n\tERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED                                    syscall.Errno = 0x80390003\n\tERROR_VHD_DRIVE_FOOTER_MISSING                                            syscall.Errno = 0xC03A0001\n\tERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH                                  syscall.Errno = 0xC03A0002\n\tERROR_VHD_DRIVE_FOOTER_CORRUPT                                            syscall.Errno = 0xC03A0003\n\tERROR_VHD_FORMAT_UNKNOWN                                                  syscall.Errno = 0xC03A0004\n\tERROR_VHD_FORMAT_UNSUPPORTED_VERSION                                      syscall.Errno = 0xC03A0005\n\tERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH                                 syscall.Errno = 0xC03A0006\n\tERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION                               syscall.Errno = 0xC03A0007\n\tERROR_VHD_SPARSE_HEADER_CORRUPT                                           syscall.Errno = 0xC03A0008\n\tERROR_VHD_BLOCK_ALLOCATION_FAILURE                                        syscall.Errno = 0xC03A0009\n\tERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT                                  syscall.Errno = 0xC03A000A\n\tERROR_VHD_INVALID_BLOCK_SIZE                                              syscall.Errno = 0xC03A000B\n\tERROR_VHD_BITMAP_MISMATCH                                                 syscall.Errno = 0xC03A000C\n\tERROR_VHD_PARENT_VHD_NOT_FOUND                                            syscall.Errno = 0xC03A000D\n\tERROR_VHD_CHILD_PARENT_ID_MISMATCH                                        syscall.Errno = 0xC03A000E\n\tERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH                                 syscall.Errno = 0xC03A000F\n\tERROR_VHD_METADATA_READ_FAILURE                                           syscall.Errno = 0xC03A0010\n\tERROR_VHD_METADATA_WRITE_FAILURE                                          syscall.Errno = 0xC03A0011\n\tERROR_VHD_INVALID_SIZE                                                    syscall.Errno = 0xC03A0012\n\tERROR_VHD_INVALID_FILE_SIZE                                               syscall.Errno = 0xC03A0013\n\tERROR_VIRTDISK_PROVIDER_NOT_FOUND                                         syscall.Errno = 0xC03A0014\n\tERROR_VIRTDISK_NOT_VIRTUAL_DISK                                           syscall.Errno = 0xC03A0015\n\tERROR_VHD_PARENT_VHD_ACCESS_DENIED                                        syscall.Errno = 0xC03A0016\n\tERROR_VHD_CHILD_PARENT_SIZE_MISMATCH                                      syscall.Errno = 0xC03A0017\n\tERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED                               syscall.Errno = 0xC03A0018\n\tERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT                              syscall.Errno = 0xC03A0019\n\tERROR_VIRTUAL_DISK_LIMITATION                                             syscall.Errno = 0xC03A001A\n\tERROR_VHD_INVALID_TYPE                                                    syscall.Errno = 0xC03A001B\n\tERROR_VHD_INVALID_STATE                                                   syscall.Errno = 0xC03A001C\n\tERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE                               syscall.Errno = 0xC03A001D\n\tERROR_VIRTDISK_DISK_ALREADY_OWNED                                         syscall.Errno = 0xC03A001E\n\tERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE                                   syscall.Errno = 0xC03A001F\n\tERROR_CTLOG_TRACKING_NOT_INITIALIZED                                      syscall.Errno = 0xC03A0020\n\tERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE                                 syscall.Errno = 0xC03A0021\n\tERROR_CTLOG_VHD_CHANGED_OFFLINE                                           syscall.Errno = 0xC03A0022\n\tERROR_CTLOG_INVALID_TRACKING_STATE                                        syscall.Errno = 0xC03A0023\n\tERROR_CTLOG_INCONSISTENT_TRACKING_FILE                                    syscall.Errno = 0xC03A0024\n\tERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA                                      syscall.Errno = 0xC03A0025\n\tERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE                          syscall.Errno = 0xC03A0026\n\tERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE                        syscall.Errno = 0xC03A0027\n\tERROR_VHD_METADATA_FULL                                                   syscall.Errno = 0xC03A0028\n\tERROR_VHD_INVALID_CHANGE_TRACKING_ID                                      syscall.Errno = 0xC03A0029\n\tERROR_VHD_CHANGE_TRACKING_DISABLED                                        syscall.Errno = 0xC03A002A\n\tERROR_VHD_MISSING_CHANGE_TRACKING_INFORMATION                             syscall.Errno = 0xC03A0030\n\tERROR_QUERY_STORAGE_ERROR                                                 syscall.Errno = 0x803A0001\n\tHCN_E_NETWORK_NOT_FOUND                                                   Handle        = 0x803B0001\n\tHCN_E_ENDPOINT_NOT_FOUND                                                  Handle        = 0x803B0002\n\tHCN_E_LAYER_NOT_FOUND                                                     Handle        = 0x803B0003\n\tHCN_E_SWITCH_NOT_FOUND                                                    Handle        = 0x803B0004\n\tHCN_E_SUBNET_NOT_FOUND                                                    Handle        = 0x803B0005\n\tHCN_E_ADAPTER_NOT_FOUND                                                   Handle        = 0x803B0006\n\tHCN_E_PORT_NOT_FOUND                                                      Handle        = 0x803B0007\n\tHCN_E_POLICY_NOT_FOUND                                                    Handle        = 0x803B0008\n\tHCN_E_VFP_PORTSETTING_NOT_FOUND                                           Handle        = 0x803B0009\n\tHCN_E_INVALID_NETWORK                                                     Handle        = 0x803B000A\n\tHCN_E_INVALID_NETWORK_TYPE                                                Handle        = 0x803B000B\n\tHCN_E_INVALID_ENDPOINT                                                    Handle        = 0x803B000C\n\tHCN_E_INVALID_POLICY                                                      Handle        = 0x803B000D\n\tHCN_E_INVALID_POLICY_TYPE                                                 Handle        = 0x803B000E\n\tHCN_E_INVALID_REMOTE_ENDPOINT_OPERATION                                   Handle        = 0x803B000F\n\tHCN_E_NETWORK_ALREADY_EXISTS                                              Handle        = 0x803B0010\n\tHCN_E_LAYER_ALREADY_EXISTS                                                Handle        = 0x803B0011\n\tHCN_E_POLICY_ALREADY_EXISTS                                               Handle        = 0x803B0012\n\tHCN_E_PORT_ALREADY_EXISTS                                                 Handle        = 0x803B0013\n\tHCN_E_ENDPOINT_ALREADY_ATTACHED                                           Handle        = 0x803B0014\n\tHCN_E_REQUEST_UNSUPPORTED                                                 Handle        = 0x803B0015\n\tHCN_E_MAPPING_NOT_SUPPORTED                                               Handle        = 0x803B0016\n\tHCN_E_DEGRADED_OPERATION                                                  Handle        = 0x803B0017\n\tHCN_E_SHARED_SWITCH_MODIFICATION                                          Handle        = 0x803B0018\n\tHCN_E_GUID_CONVERSION_FAILURE                                             Handle        = 0x803B0019\n\tHCN_E_REGKEY_FAILURE                                                      Handle        = 0x803B001A\n\tHCN_E_INVALID_JSON                                                        Handle        = 0x803B001B\n\tHCN_E_INVALID_JSON_REFERENCE                                              Handle        = 0x803B001C\n\tHCN_E_ENDPOINT_SHARING_DISABLED                                           Handle        = 0x803B001D\n\tHCN_E_INVALID_IP                                                          Handle        = 0x803B001E\n\tHCN_E_SWITCH_EXTENSION_NOT_FOUND                                          Handle        = 0x803B001F\n\tHCN_E_MANAGER_STOPPED                                                     Handle        = 0x803B0020\n\tGCN_E_MODULE_NOT_FOUND                                                    Handle        = 0x803B0021\n\tGCN_E_NO_REQUEST_HANDLERS                                                 Handle        = 0x803B0022\n\tGCN_E_REQUEST_UNSUPPORTED                                                 Handle        = 0x803B0023\n\tGCN_E_RUNTIMEKEYS_FAILED                                                  Handle        = 0x803B0024\n\tGCN_E_NETADAPTER_TIMEOUT                                                  Handle        = 0x803B0025\n\tGCN_E_NETADAPTER_NOT_FOUND                                                Handle        = 0x803B0026\n\tGCN_E_NETCOMPARTMENT_NOT_FOUND                                            Handle        = 0x803B0027\n\tGCN_E_NETINTERFACE_NOT_FOUND                                              Handle        = 0x803B0028\n\tGCN_E_DEFAULTNAMESPACE_EXISTS                                             Handle        = 0x803B0029\n\tHCN_E_ICS_DISABLED                                                        Handle        = 0x803B002A\n\tHCN_E_ENDPOINT_NAMESPACE_ALREADY_EXISTS                                   Handle        = 0x803B002B\n\tHCN_E_ENTITY_HAS_REFERENCES                                               Handle        = 0x803B002C\n\tHCN_E_INVALID_INTERNAL_PORT                                               Handle        = 0x803B002D\n\tHCN_E_NAMESPACE_ATTACH_FAILED                                             Handle        = 0x803B002E\n\tHCN_E_ADDR_INVALID_OR_RESERVED                                            Handle        = 0x803B002F\n\tSDIAG_E_CANCELLED                                                         syscall.Errno = 0x803C0100\n\tSDIAG_E_SCRIPT                                                            syscall.Errno = 0x803C0101\n\tSDIAG_E_POWERSHELL                                                        syscall.Errno = 0x803C0102\n\tSDIAG_E_MANAGEDHOST                                                       syscall.Errno = 0x803C0103\n\tSDIAG_E_NOVERIFIER                                                        syscall.Errno = 0x803C0104\n\tSDIAG_S_CANNOTRUN                                                         syscall.Errno = 0x003C0105\n\tSDIAG_E_DISABLED                                                          syscall.Errno = 0x803C0106\n\tSDIAG_E_TRUST                                                             syscall.Errno = 0x803C0107\n\tSDIAG_E_CANNOTRUN                                                         syscall.Errno = 0x803C0108\n\tSDIAG_E_VERSION                                                           syscall.Errno = 0x803C0109\n\tSDIAG_E_RESOURCE                                                          syscall.Errno = 0x803C010A\n\tSDIAG_E_ROOTCAUSE                                                         syscall.Errno = 0x803C010B\n\tWPN_E_CHANNEL_CLOSED                                                      Handle        = 0x803E0100\n\tWPN_E_CHANNEL_REQUEST_NOT_COMPLETE                                        Handle        = 0x803E0101\n\tWPN_E_INVALID_APP                                                         Handle        = 0x803E0102\n\tWPN_E_OUTSTANDING_CHANNEL_REQUEST                                         Handle        = 0x803E0103\n\tWPN_E_DUPLICATE_CHANNEL                                                   Handle        = 0x803E0104\n\tWPN_E_PLATFORM_UNAVAILABLE                                                Handle        = 0x803E0105\n\tWPN_E_NOTIFICATION_POSTED                                                 Handle        = 0x803E0106\n\tWPN_E_NOTIFICATION_HIDDEN                                                 Handle        = 0x803E0107\n\tWPN_E_NOTIFICATION_NOT_POSTED                                             Handle        = 0x803E0108\n\tWPN_E_CLOUD_DISABLED                                                      Handle        = 0x803E0109\n\tWPN_E_CLOUD_INCAPABLE                                                     Handle        = 0x803E0110\n\tWPN_E_CLOUD_AUTH_UNAVAILABLE                                              Handle        = 0x803E011A\n\tWPN_E_CLOUD_SERVICE_UNAVAILABLE                                           Handle        = 0x803E011B\n\tWPN_E_FAILED_LOCK_SCREEN_UPDATE_INTIALIZATION                             Handle        = 0x803E011C\n\tWPN_E_NOTIFICATION_DISABLED                                               Handle        = 0x803E0111\n\tWPN_E_NOTIFICATION_INCAPABLE                                              Handle        = 0x803E0112\n\tWPN_E_INTERNET_INCAPABLE                                                  Handle        = 0x803E0113\n\tWPN_E_NOTIFICATION_TYPE_DISABLED                                          Handle        = 0x803E0114\n\tWPN_E_NOTIFICATION_SIZE                                                   Handle        = 0x803E0115\n\tWPN_E_TAG_SIZE                                                            Handle        = 0x803E0116\n\tWPN_E_ACCESS_DENIED                                                       Handle        = 0x803E0117\n\tWPN_E_DUPLICATE_REGISTRATION                                              Handle        = 0x803E0118\n\tWPN_E_PUSH_NOTIFICATION_INCAPABLE                                         Handle        = 0x803E0119\n\tWPN_E_DEV_ID_SIZE                                                         Handle        = 0x803E0120\n\tWPN_E_TAG_ALPHANUMERIC                                                    Handle        = 0x803E012A\n\tWPN_E_INVALID_HTTP_STATUS_CODE                                            Handle        = 0x803E012B\n\tWPN_E_OUT_OF_SESSION                                                      Handle        = 0x803E0200\n\tWPN_E_POWER_SAVE                                                          Handle        = 0x803E0201\n\tWPN_E_IMAGE_NOT_FOUND_IN_CACHE                                            Handle        = 0x803E0202\n\tWPN_E_ALL_URL_NOT_COMPLETED                                               Handle        = 0x803E0203\n\tWPN_E_INVALID_CLOUD_IMAGE                                                 Handle        = 0x803E0204\n\tWPN_E_NOTIFICATION_ID_MATCHED                                             Handle        = 0x803E0205\n\tWPN_E_CALLBACK_ALREADY_REGISTERED                                         Handle        = 0x803E0206\n\tWPN_E_TOAST_NOTIFICATION_DROPPED                                          Handle        = 0x803E0207\n\tWPN_E_STORAGE_LOCKED                                                      Handle        = 0x803E0208\n\tWPN_E_GROUP_SIZE                                                          Handle        = 0x803E0209\n\tWPN_E_GROUP_ALPHANUMERIC                                                  Handle        = 0x803E020A\n\tWPN_E_CLOUD_DISABLED_FOR_APP                                              Handle        = 0x803E020B\n\tE_MBN_CONTEXT_NOT_ACTIVATED                                               Handle        = 0x80548201\n\tE_MBN_BAD_SIM                                                             Handle        = 0x80548202\n\tE_MBN_DATA_CLASS_NOT_AVAILABLE                                            Handle        = 0x80548203\n\tE_MBN_INVALID_ACCESS_STRING                                               Handle        = 0x80548204\n\tE_MBN_MAX_ACTIVATED_CONTEXTS                                              Handle        = 0x80548205\n\tE_MBN_PACKET_SVC_DETACHED                                                 Handle        = 0x80548206\n\tE_MBN_PROVIDER_NOT_VISIBLE                                                Handle        = 0x80548207\n\tE_MBN_RADIO_POWER_OFF                                                     Handle        = 0x80548208\n\tE_MBN_SERVICE_NOT_ACTIVATED                                               Handle        = 0x80548209\n\tE_MBN_SIM_NOT_INSERTED                                                    Handle        = 0x8054820A\n\tE_MBN_VOICE_CALL_IN_PROGRESS                                              Handle        = 0x8054820B\n\tE_MBN_INVALID_CACHE                                                       Handle        = 0x8054820C\n\tE_MBN_NOT_REGISTERED                                                      Handle        = 0x8054820D\n\tE_MBN_PROVIDERS_NOT_FOUND                                                 Handle        = 0x8054820E\n\tE_MBN_PIN_NOT_SUPPORTED                                                   Handle        = 0x8054820F\n\tE_MBN_PIN_REQUIRED                                                        Handle        = 0x80548210\n\tE_MBN_PIN_DISABLED                                                        Handle        = 0x80548211\n\tE_MBN_FAILURE                                                             Handle        = 0x80548212\n\tE_MBN_INVALID_PROFILE                                                     Handle        = 0x80548218\n\tE_MBN_DEFAULT_PROFILE_EXIST                                               Handle        = 0x80548219\n\tE_MBN_SMS_ENCODING_NOT_SUPPORTED                                          Handle        = 0x80548220\n\tE_MBN_SMS_FILTER_NOT_SUPPORTED                                            Handle        = 0x80548221\n\tE_MBN_SMS_INVALID_MEMORY_INDEX                                            Handle        = 0x80548222\n\tE_MBN_SMS_LANG_NOT_SUPPORTED                                              Handle        = 0x80548223\n\tE_MBN_SMS_MEMORY_FAILURE                                                  Handle        = 0x80548224\n\tE_MBN_SMS_NETWORK_TIMEOUT                                                 Handle        = 0x80548225\n\tE_MBN_SMS_UNKNOWN_SMSC_ADDRESS                                            Handle        = 0x80548226\n\tE_MBN_SMS_FORMAT_NOT_SUPPORTED                                            Handle        = 0x80548227\n\tE_MBN_SMS_OPERATION_NOT_ALLOWED                                           Handle        = 0x80548228\n\tE_MBN_SMS_MEMORY_FULL                                                     Handle        = 0x80548229\n\tPEER_E_IPV6_NOT_INSTALLED                                                 Handle        = 0x80630001\n\tPEER_E_NOT_INITIALIZED                                                    Handle        = 0x80630002\n\tPEER_E_CANNOT_START_SERVICE                                               Handle        = 0x80630003\n\tPEER_E_NOT_LICENSED                                                       Handle        = 0x80630004\n\tPEER_E_INVALID_GRAPH                                                      Handle        = 0x80630010\n\tPEER_E_DBNAME_CHANGED                                                     Handle        = 0x80630011\n\tPEER_E_DUPLICATE_GRAPH                                                    Handle        = 0x80630012\n\tPEER_E_GRAPH_NOT_READY                                                    Handle        = 0x80630013\n\tPEER_E_GRAPH_SHUTTING_DOWN                                                Handle        = 0x80630014\n\tPEER_E_GRAPH_IN_USE                                                       Handle        = 0x80630015\n\tPEER_E_INVALID_DATABASE                                                   Handle        = 0x80630016\n\tPEER_E_TOO_MANY_ATTRIBUTES                                                Handle        = 0x80630017\n\tPEER_E_CONNECTION_NOT_FOUND                                               Handle        = 0x80630103\n\tPEER_E_CONNECT_SELF                                                       Handle        = 0x80630106\n\tPEER_E_ALREADY_LISTENING                                                  Handle        = 0x80630107\n\tPEER_E_NODE_NOT_FOUND                                                     Handle        = 0x80630108\n\tPEER_E_CONNECTION_FAILED                                                  Handle        = 0x80630109\n\tPEER_E_CONNECTION_NOT_AUTHENTICATED                                       Handle        = 0x8063010A\n\tPEER_E_CONNECTION_REFUSED                                                 Handle        = 0x8063010B\n\tPEER_E_CLASSIFIER_TOO_LONG                                                Handle        = 0x80630201\n\tPEER_E_TOO_MANY_IDENTITIES                                                Handle        = 0x80630202\n\tPEER_E_NO_KEY_ACCESS                                                      Handle        = 0x80630203\n\tPEER_E_GROUPS_EXIST                                                       Handle        = 0x80630204\n\tPEER_E_RECORD_NOT_FOUND                                                   Handle        = 0x80630301\n\tPEER_E_DATABASE_ACCESSDENIED                                              Handle        = 0x80630302\n\tPEER_E_DBINITIALIZATION_FAILED                                            Handle        = 0x80630303\n\tPEER_E_MAX_RECORD_SIZE_EXCEEDED                                           Handle        = 0x80630304\n\tPEER_E_DATABASE_ALREADY_PRESENT                                           Handle        = 0x80630305\n\tPEER_E_DATABASE_NOT_PRESENT                                               Handle        = 0x80630306\n\tPEER_E_IDENTITY_NOT_FOUND                                                 Handle        = 0x80630401\n\tPEER_E_EVENT_HANDLE_NOT_FOUND                                             Handle        = 0x80630501\n\tPEER_E_INVALID_SEARCH                                                     Handle        = 0x80630601\n\tPEER_E_INVALID_ATTRIBUTES                                                 Handle        = 0x80630602\n\tPEER_E_INVITATION_NOT_TRUSTED                                             Handle        = 0x80630701\n\tPEER_E_CHAIN_TOO_LONG                                                     Handle        = 0x80630703\n\tPEER_E_INVALID_TIME_PERIOD                                                Handle        = 0x80630705\n\tPEER_E_CIRCULAR_CHAIN_DETECTED                                            Handle        = 0x80630706\n\tPEER_E_CERT_STORE_CORRUPTED                                               Handle        = 0x80630801\n\tPEER_E_NO_CLOUD                                                           Handle        = 0x80631001\n\tPEER_E_CLOUD_NAME_AMBIGUOUS                                               Handle        = 0x80631005\n\tPEER_E_INVALID_RECORD                                                     Handle        = 0x80632010\n\tPEER_E_NOT_AUTHORIZED                                                     Handle        = 0x80632020\n\tPEER_E_PASSWORD_DOES_NOT_MEET_POLICY                                      Handle        = 0x80632021\n\tPEER_E_DEFERRED_VALIDATION                                                Handle        = 0x80632030\n\tPEER_E_INVALID_GROUP_PROPERTIES                                           Handle        = 0x80632040\n\tPEER_E_INVALID_PEER_NAME                                                  Handle        = 0x80632050\n\tPEER_E_INVALID_CLASSIFIER                                                 Handle        = 0x80632060\n\tPEER_E_INVALID_FRIENDLY_NAME                                              Handle        = 0x80632070\n\tPEER_E_INVALID_ROLE_PROPERTY                                              Handle        = 0x80632071\n\tPEER_E_INVALID_CLASSIFIER_PROPERTY                                        Handle        = 0x80632072\n\tPEER_E_INVALID_RECORD_EXPIRATION                                          Handle        = 0x80632080\n\tPEER_E_INVALID_CREDENTIAL_INFO                                            Handle        = 0x80632081\n\tPEER_E_INVALID_CREDENTIAL                                                 Handle        = 0x80632082\n\tPEER_E_INVALID_RECORD_SIZE                                                Handle        = 0x80632083\n\tPEER_E_UNSUPPORTED_VERSION                                                Handle        = 0x80632090\n\tPEER_E_GROUP_NOT_READY                                                    Handle        = 0x80632091\n\tPEER_E_GROUP_IN_USE                                                       Handle        = 0x80632092\n\tPEER_E_INVALID_GROUP                                                      Handle        = 0x80632093\n\tPEER_E_NO_MEMBERS_FOUND                                                   Handle        = 0x80632094\n\tPEER_E_NO_MEMBER_CONNECTIONS                                              Handle        = 0x80632095\n\tPEER_E_UNABLE_TO_LISTEN                                                   Handle        = 0x80632096\n\tPEER_E_IDENTITY_DELETED                                                   Handle        = 0x806320A0\n\tPEER_E_SERVICE_NOT_AVAILABLE                                              Handle        = 0x806320A1\n\tPEER_E_CONTACT_NOT_FOUND                                                  Handle        = 0x80636001\n\tPEER_S_GRAPH_DATA_CREATED                                                 Handle        = 0x00630001\n\tPEER_S_NO_EVENT_DATA                                                      Handle        = 0x00630002\n\tPEER_S_ALREADY_CONNECTED                                                  Handle        = 0x00632000\n\tPEER_S_SUBSCRIPTION_EXISTS                                                Handle        = 0x00636000\n\tPEER_S_NO_CONNECTIVITY                                                    Handle        = 0x00630005\n\tPEER_S_ALREADY_A_MEMBER                                                   Handle        = 0x00630006\n\tPEER_E_CANNOT_CONVERT_PEER_NAME                                           Handle        = 0x80634001\n\tPEER_E_INVALID_PEER_HOST_NAME                                             Handle        = 0x80634002\n\tPEER_E_NO_MORE                                                            Handle        = 0x80634003\n\tPEER_E_PNRP_DUPLICATE_PEER_NAME                                           Handle        = 0x80634005\n\tPEER_E_INVITE_CANCELLED                                                   Handle        = 0x80637000\n\tPEER_E_INVITE_RESPONSE_NOT_AVAILABLE                                      Handle        = 0x80637001\n\tPEER_E_NOT_SIGNED_IN                                                      Handle        = 0x80637003\n\tPEER_E_PRIVACY_DECLINED                                                   Handle        = 0x80637004\n\tPEER_E_TIMEOUT                                                            Handle        = 0x80637005\n\tPEER_E_INVALID_ADDRESS                                                    Handle        = 0x80637007\n\tPEER_E_FW_EXCEPTION_DISABLED                                              Handle        = 0x80637008\n\tPEER_E_FW_BLOCKED_BY_POLICY                                               Handle        = 0x80637009\n\tPEER_E_FW_BLOCKED_BY_SHIELDS_UP                                           Handle        = 0x8063700A\n\tPEER_E_FW_DECLINED                                                        Handle        = 0x8063700B\n\tUI_E_CREATE_FAILED                                                        Handle        = 0x802A0001\n\tUI_E_SHUTDOWN_CALLED                                                      Handle        = 0x802A0002\n\tUI_E_ILLEGAL_REENTRANCY                                                   Handle        = 0x802A0003\n\tUI_E_OBJECT_SEALED                                                        Handle        = 0x802A0004\n\tUI_E_VALUE_NOT_SET                                                        Handle        = 0x802A0005\n\tUI_E_VALUE_NOT_DETERMINED                                                 Handle        = 0x802A0006\n\tUI_E_INVALID_OUTPUT                                                       Handle        = 0x802A0007\n\tUI_E_BOOLEAN_EXPECTED                                                     Handle        = 0x802A0008\n\tUI_E_DIFFERENT_OWNER                                                      Handle        = 0x802A0009\n\tUI_E_AMBIGUOUS_MATCH                                                      Handle        = 0x802A000A\n\tUI_E_FP_OVERFLOW                                                          Handle        = 0x802A000B\n\tUI_E_WRONG_THREAD                                                         Handle        = 0x802A000C\n\tUI_E_STORYBOARD_ACTIVE                                                    Handle        = 0x802A0101\n\tUI_E_STORYBOARD_NOT_PLAYING                                               Handle        = 0x802A0102\n\tUI_E_START_KEYFRAME_AFTER_END                                             Handle        = 0x802A0103\n\tUI_E_END_KEYFRAME_NOT_DETERMINED                                          Handle        = 0x802A0104\n\tUI_E_LOOPS_OVERLAP                                                        Handle        = 0x802A0105\n\tUI_E_TRANSITION_ALREADY_USED                                              Handle        = 0x802A0106\n\tUI_E_TRANSITION_NOT_IN_STORYBOARD                                         Handle        = 0x802A0107\n\tUI_E_TRANSITION_ECLIPSED                                                  Handle        = 0x802A0108\n\tUI_E_TIME_BEFORE_LAST_UPDATE                                              Handle        = 0x802A0109\n\tUI_E_TIMER_CLIENT_ALREADY_CONNECTED                                       Handle        = 0x802A010A\n\tUI_E_INVALID_DIMENSION                                                    Handle        = 0x802A010B\n\tUI_E_PRIMITIVE_OUT_OF_BOUNDS                                              Handle        = 0x802A010C\n\tUI_E_WINDOW_CLOSED                                                        Handle        = 0x802A0201\n\tE_BLUETOOTH_ATT_INVALID_HANDLE                                            Handle        = 0x80650001\n\tE_BLUETOOTH_ATT_READ_NOT_PERMITTED                                        Handle        = 0x80650002\n\tE_BLUETOOTH_ATT_WRITE_NOT_PERMITTED                                       Handle        = 0x80650003\n\tE_BLUETOOTH_ATT_INVALID_PDU                                               Handle        = 0x80650004\n\tE_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION                               Handle        = 0x80650005\n\tE_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED                                     Handle        = 0x80650006\n\tE_BLUETOOTH_ATT_INVALID_OFFSET                                            Handle        = 0x80650007\n\tE_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION                                Handle        = 0x80650008\n\tE_BLUETOOTH_ATT_PREPARE_QUEUE_FULL                                        Handle        = 0x80650009\n\tE_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND                                       Handle        = 0x8065000A\n\tE_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG                                        Handle        = 0x8065000B\n\tE_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE                          Handle        = 0x8065000C\n\tE_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH                            Handle        = 0x8065000D\n\tE_BLUETOOTH_ATT_UNLIKELY                                                  Handle        = 0x8065000E\n\tE_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION                                   Handle        = 0x8065000F\n\tE_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE                                    Handle        = 0x80650010\n\tE_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES                                    Handle        = 0x80650011\n\tE_BLUETOOTH_ATT_UNKNOWN_ERROR                                             Handle        = 0x80651000\n\tE_AUDIO_ENGINE_NODE_NOT_FOUND                                             Handle        = 0x80660001\n\tE_HDAUDIO_EMPTY_CONNECTION_LIST                                           Handle        = 0x80660002\n\tE_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED                                   Handle        = 0x80660003\n\tE_HDAUDIO_NO_LOGICAL_DEVICES_CREATED                                      Handle        = 0x80660004\n\tE_HDAUDIO_NULL_LINKED_LIST_ENTRY                                          Handle        = 0x80660005\n\tSTATEREPOSITORY_E_CONCURRENCY_LOCKING_FAILURE                             Handle        = 0x80670001\n\tSTATEREPOSITORY_E_STATEMENT_INPROGRESS                                    Handle        = 0x80670002\n\tSTATEREPOSITORY_E_CONFIGURATION_INVALID                                   Handle        = 0x80670003\n\tSTATEREPOSITORY_E_UNKNOWN_SCHEMA_VERSION                                  Handle        = 0x80670004\n\tSTATEREPOSITORY_ERROR_DICTIONARY_CORRUPTED                                Handle        = 0x80670005\n\tSTATEREPOSITORY_E_BLOCKED                                                 Handle        = 0x80670006\n\tSTATEREPOSITORY_E_BUSY_RETRY                                              Handle        = 0x80670007\n\tSTATEREPOSITORY_E_BUSY_RECOVERY_RETRY                                     Handle        = 0x80670008\n\tSTATEREPOSITORY_E_LOCKED_RETRY                                            Handle        = 0x80670009\n\tSTATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY                                Handle        = 0x8067000A\n\tSTATEREPOSITORY_E_TRANSACTION_REQUIRED                                    Handle        = 0x8067000B\n\tSTATEREPOSITORY_E_BUSY_TIMEOUT_EXCEEDED                                   Handle        = 0x8067000C\n\tSTATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED                          Handle        = 0x8067000D\n\tSTATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED                                 Handle        = 0x8067000E\n\tSTATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED                     Handle        = 0x8067000F\n\tSTATEREPOSITORY_E_SERVICE_STOP_IN_PROGRESS                                Handle        = 0x80670010\n\tSTATEREPOSTORY_E_NESTED_TRANSACTION_NOT_SUPPORTED                         Handle        = 0x80670011\n\tSTATEREPOSITORY_ERROR_CACHE_CORRUPTED                                     Handle        = 0x80670012\n\tSTATEREPOSITORY_TRANSACTION_CALLER_ID_CHANGED                             Handle        = 0x00670013\n\tSTATEREPOSITORY_TRANSACTION_IN_PROGRESS                                   Handle        = 0x00670014\n\tERROR_SPACES_POOL_WAS_DELETED                                             Handle        = 0x00E70001\n\tERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID                                    Handle        = 0x80E70001\n\tERROR_SPACES_INTERNAL_ERROR                                               Handle        = 0x80E70002\n\tERROR_SPACES_RESILIENCY_TYPE_INVALID                                      Handle        = 0x80E70003\n\tERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID                                    Handle        = 0x80E70004\n\tERROR_SPACES_DRIVE_REDUNDANCY_INVALID                                     Handle        = 0x80E70006\n\tERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID                                Handle        = 0x80E70007\n\tERROR_SPACES_PARITY_LAYOUT_INVALID                                        Handle        = 0x80E70008\n\tERROR_SPACES_INTERLEAVE_LENGTH_INVALID                                    Handle        = 0x80E70009\n\tERROR_SPACES_NUMBER_OF_COLUMNS_INVALID                                    Handle        = 0x80E7000A\n\tERROR_SPACES_NOT_ENOUGH_DRIVES                                            Handle        = 0x80E7000B\n\tERROR_SPACES_EXTENDED_ERROR                                               Handle        = 0x80E7000C\n\tERROR_SPACES_PROVISIONING_TYPE_INVALID                                    Handle        = 0x80E7000D\n\tERROR_SPACES_ALLOCATION_SIZE_INVALID                                      Handle        = 0x80E7000E\n\tERROR_SPACES_ENCLOSURE_AWARE_INVALID                                      Handle        = 0x80E7000F\n\tERROR_SPACES_WRITE_CACHE_SIZE_INVALID                                     Handle        = 0x80E70010\n\tERROR_SPACES_NUMBER_OF_GROUPS_INVALID                                     Handle        = 0x80E70011\n\tERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID                              Handle        = 0x80E70012\n\tERROR_SPACES_ENTRY_INCOMPLETE                                             Handle        = 0x80E70013\n\tERROR_SPACES_ENTRY_INVALID                                                Handle        = 0x80E70014\n\tERROR_VOLSNAP_BOOTFILE_NOT_VALID                                          Handle        = 0x80820001\n\tERROR_VOLSNAP_ACTIVATION_TIMEOUT                                          Handle        = 0x80820002\n\tERROR_TIERING_NOT_SUPPORTED_ON_VOLUME                                     Handle        = 0x80830001\n\tERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS                                 Handle        = 0x80830002\n\tERROR_TIERING_STORAGE_TIER_NOT_FOUND                                      Handle        = 0x80830003\n\tERROR_TIERING_INVALID_FILE_ID                                             Handle        = 0x80830004\n\tERROR_TIERING_WRONG_CLUSTER_NODE                                          Handle        = 0x80830005\n\tERROR_TIERING_ALREADY_PROCESSING                                          Handle        = 0x80830006\n\tERROR_TIERING_CANNOT_PIN_OBJECT                                           Handle        = 0x80830007\n\tERROR_TIERING_FILE_IS_NOT_PINNED                                          Handle        = 0x80830008\n\tERROR_NOT_A_TIERED_VOLUME                                                 Handle        = 0x80830009\n\tERROR_ATTRIBUTE_NOT_PRESENT                                               Handle        = 0x8083000A\n\tERROR_SECCORE_INVALID_COMMAND                                             Handle        = 0xC0E80000\n\tERROR_NO_APPLICABLE_APP_LICENSES_FOUND                                    Handle        = 0xC0EA0001\n\tERROR_CLIP_LICENSE_NOT_FOUND                                              Handle        = 0xC0EA0002\n\tERROR_CLIP_DEVICE_LICENSE_MISSING                                         Handle        = 0xC0EA0003\n\tERROR_CLIP_LICENSE_INVALID_SIGNATURE                                      Handle        = 0xC0EA0004\n\tERROR_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID                           Handle        = 0xC0EA0005\n\tERROR_CLIP_LICENSE_EXPIRED                                                Handle        = 0xC0EA0006\n\tERROR_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE                               Handle        = 0xC0EA0007\n\tERROR_CLIP_LICENSE_NOT_SIGNED                                             Handle        = 0xC0EA0008\n\tERROR_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE                           Handle        = 0xC0EA0009\n\tERROR_CLIP_LICENSE_DEVICE_ID_MISMATCH                                     Handle        = 0xC0EA000A\n\tDXGI_STATUS_OCCLUDED                                                      Handle        = 0x087A0001\n\tDXGI_STATUS_CLIPPED                                                       Handle        = 0x087A0002\n\tDXGI_STATUS_NO_REDIRECTION                                                Handle        = 0x087A0004\n\tDXGI_STATUS_NO_DESKTOP_ACCESS                                             Handle        = 0x087A0005\n\tDXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE                                  Handle        = 0x087A0006\n\tDXGI_STATUS_MODE_CHANGED                                                  Handle        = 0x087A0007\n\tDXGI_STATUS_MODE_CHANGE_IN_PROGRESS                                       Handle        = 0x087A0008\n\tDXGI_ERROR_INVALID_CALL                                                   Handle        = 0x887A0001\n\tDXGI_ERROR_NOT_FOUND                                                      Handle        = 0x887A0002\n\tDXGI_ERROR_MORE_DATA                                                      Handle        = 0x887A0003\n\tDXGI_ERROR_UNSUPPORTED                                                    Handle        = 0x887A0004\n\tDXGI_ERROR_DEVICE_REMOVED                                                 Handle        = 0x887A0005\n\tDXGI_ERROR_DEVICE_HUNG                                                    Handle        = 0x887A0006\n\tDXGI_ERROR_DEVICE_RESET                                                   Handle        = 0x887A0007\n\tDXGI_ERROR_WAS_STILL_DRAWING                                              Handle        = 0x887A000A\n\tDXGI_ERROR_FRAME_STATISTICS_DISJOINT                                      Handle        = 0x887A000B\n\tDXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE                                   Handle        = 0x887A000C\n\tDXGI_ERROR_DRIVER_INTERNAL_ERROR                                          Handle        = 0x887A0020\n\tDXGI_ERROR_NONEXCLUSIVE                                                   Handle        = 0x887A0021\n\tDXGI_ERROR_NOT_CURRENTLY_AVAILABLE                                        Handle        = 0x887A0022\n\tDXGI_ERROR_REMOTE_CLIENT_DISCONNECTED                                     Handle        = 0x887A0023\n\tDXGI_ERROR_REMOTE_OUTOFMEMORY                                             Handle        = 0x887A0024\n\tDXGI_ERROR_ACCESS_LOST                                                    Handle        = 0x887A0026\n\tDXGI_ERROR_WAIT_TIMEOUT                                                   Handle        = 0x887A0027\n\tDXGI_ERROR_SESSION_DISCONNECTED                                           Handle        = 0x887A0028\n\tDXGI_ERROR_RESTRICT_TO_OUTPUT_STALE                                       Handle        = 0x887A0029\n\tDXGI_ERROR_CANNOT_PROTECT_CONTENT                                         Handle        = 0x887A002A\n\tDXGI_ERROR_ACCESS_DENIED                                                  Handle        = 0x887A002B\n\tDXGI_ERROR_NAME_ALREADY_EXISTS                                            Handle        = 0x887A002C\n\tDXGI_ERROR_SDK_COMPONENT_MISSING                                          Handle        = 0x887A002D\n\tDXGI_ERROR_NOT_CURRENT                                                    Handle        = 0x887A002E\n\tDXGI_ERROR_HW_PROTECTION_OUTOFMEMORY                                      Handle        = 0x887A0030\n\tDXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION                                  Handle        = 0x887A0031\n\tDXGI_ERROR_NON_COMPOSITED_UI                                              Handle        = 0x887A0032\n\tDXGI_STATUS_UNOCCLUDED                                                    Handle        = 0x087A0009\n\tDXGI_STATUS_DDA_WAS_STILL_DRAWING                                         Handle        = 0x087A000A\n\tDXGI_ERROR_MODE_CHANGE_IN_PROGRESS                                        Handle        = 0x887A0025\n\tDXGI_STATUS_PRESENT_REQUIRED                                              Handle        = 0x087A002F\n\tDXGI_ERROR_CACHE_CORRUPT                                                  Handle        = 0x887A0033\n\tDXGI_ERROR_CACHE_FULL                                                     Handle        = 0x887A0034\n\tDXGI_ERROR_CACHE_HASH_COLLISION                                           Handle        = 0x887A0035\n\tDXGI_ERROR_ALREADY_EXISTS                                                 Handle        = 0x887A0036\n\tDXGI_DDI_ERR_WASSTILLDRAWING                                              Handle        = 0x887B0001\n\tDXGI_DDI_ERR_UNSUPPORTED                                                  Handle        = 0x887B0002\n\tDXGI_DDI_ERR_NONEXCLUSIVE                                                 Handle        = 0x887B0003\n\tD3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS                                 Handle        = 0x88790001\n\tD3D10_ERROR_FILE_NOT_FOUND                                                Handle        = 0x88790002\n\tD3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS                                 Handle        = 0x887C0001\n\tD3D11_ERROR_FILE_NOT_FOUND                                                Handle        = 0x887C0002\n\tD3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS                                  Handle        = 0x887C0003\n\tD3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD                  Handle        = 0x887C0004\n\tD3D12_ERROR_ADAPTER_NOT_FOUND                                             Handle        = 0x887E0001\n\tD3D12_ERROR_DRIVER_VERSION_MISMATCH                                       Handle        = 0x887E0002\n\tD2DERR_WRONG_STATE                                                        Handle        = 0x88990001\n\tD2DERR_NOT_INITIALIZED                                                    Handle        = 0x88990002\n\tD2DERR_UNSUPPORTED_OPERATION                                              Handle        = 0x88990003\n\tD2DERR_SCANNER_FAILED                                                     Handle        = 0x88990004\n\tD2DERR_SCREEN_ACCESS_DENIED                                               Handle        = 0x88990005\n\tD2DERR_DISPLAY_STATE_INVALID                                              Handle        = 0x88990006\n\tD2DERR_ZERO_VECTOR                                                        Handle        = 0x88990007\n\tD2DERR_INTERNAL_ERROR                                                     Handle        = 0x88990008\n\tD2DERR_DISPLAY_FORMAT_NOT_SUPPORTED                                       Handle        = 0x88990009\n\tD2DERR_INVALID_CALL                                                       Handle        = 0x8899000A\n\tD2DERR_NO_HARDWARE_DEVICE                                                 Handle        = 0x8899000B\n\tD2DERR_RECREATE_TARGET                                                    Handle        = 0x8899000C\n\tD2DERR_TOO_MANY_SHADER_ELEMENTS                                           Handle        = 0x8899000D\n\tD2DERR_SHADER_COMPILE_FAILED                                              Handle        = 0x8899000E\n\tD2DERR_MAX_TEXTURE_SIZE_EXCEEDED                                          Handle        = 0x8899000F\n\tD2DERR_UNSUPPORTED_VERSION                                                Handle        = 0x88990010\n\tD2DERR_BAD_NUMBER                                                         Handle        = 0x88990011\n\tD2DERR_WRONG_FACTORY                                                      Handle        = 0x88990012\n\tD2DERR_LAYER_ALREADY_IN_USE                                               Handle        = 0x88990013\n\tD2DERR_POP_CALL_DID_NOT_MATCH_PUSH                                        Handle        = 0x88990014\n\tD2DERR_WRONG_RESOURCE_DOMAIN                                              Handle        = 0x88990015\n\tD2DERR_PUSH_POP_UNBALANCED                                                Handle        = 0x88990016\n\tD2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT                                Handle        = 0x88990017\n\tD2DERR_INCOMPATIBLE_BRUSH_TYPES                                           Handle        = 0x88990018\n\tD2DERR_WIN32_ERROR                                                        Handle        = 0x88990019\n\tD2DERR_TARGET_NOT_GDI_COMPATIBLE                                          Handle        = 0x8899001A\n\tD2DERR_TEXT_EFFECT_IS_WRONG_TYPE                                          Handle        = 0x8899001B\n\tD2DERR_TEXT_RENDERER_NOT_RELEASED                                         Handle        = 0x8899001C\n\tD2DERR_EXCEEDS_MAX_BITMAP_SIZE                                            Handle        = 0x8899001D\n\tD2DERR_INVALID_GRAPH_CONFIGURATION                                        Handle        = 0x8899001E\n\tD2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION                               Handle        = 0x8899001F\n\tD2DERR_CYCLIC_GRAPH                                                       Handle        = 0x88990020\n\tD2DERR_BITMAP_CANNOT_DRAW                                                 Handle        = 0x88990021\n\tD2DERR_OUTSTANDING_BITMAP_REFERENCES                                      Handle        = 0x88990022\n\tD2DERR_ORIGINAL_TARGET_NOT_BOUND                                          Handle        = 0x88990023\n\tD2DERR_INVALID_TARGET                                                     Handle        = 0x88990024\n\tD2DERR_BITMAP_BOUND_AS_TARGET                                             Handle        = 0x88990025\n\tD2DERR_INSUFFICIENT_DEVICE_CAPABILITIES                                   Handle        = 0x88990026\n\tD2DERR_INTERMEDIATE_TOO_LARGE                                             Handle        = 0x88990027\n\tD2DERR_EFFECT_IS_NOT_REGISTERED                                           Handle        = 0x88990028\n\tD2DERR_INVALID_PROPERTY                                                   Handle        = 0x88990029\n\tD2DERR_NO_SUBPROPERTIES                                                   Handle        = 0x8899002A\n\tD2DERR_PRINT_JOB_CLOSED                                                   Handle        = 0x8899002B\n\tD2DERR_PRINT_FORMAT_NOT_SUPPORTED                                         Handle        = 0x8899002C\n\tD2DERR_TOO_MANY_TRANSFORM_INPUTS                                          Handle        = 0x8899002D\n\tD2DERR_INVALID_GLYPH_IMAGE                                                Handle        = 0x8899002E\n\tDWRITE_E_FILEFORMAT                                                       Handle        = 0x88985000\n\tDWRITE_E_UNEXPECTED                                                       Handle        = 0x88985001\n\tDWRITE_E_NOFONT                                                           Handle        = 0x88985002\n\tDWRITE_E_FILENOTFOUND                                                     Handle        = 0x88985003\n\tDWRITE_E_FILEACCESS                                                       Handle        = 0x88985004\n\tDWRITE_E_FONTCOLLECTIONOBSOLETE                                           Handle        = 0x88985005\n\tDWRITE_E_ALREADYREGISTERED                                                Handle        = 0x88985006\n\tDWRITE_E_CACHEFORMAT                                                      Handle        = 0x88985007\n\tDWRITE_E_CACHEVERSION                                                     Handle        = 0x88985008\n\tDWRITE_E_UNSUPPORTEDOPERATION                                             Handle        = 0x88985009\n\tDWRITE_E_TEXTRENDERERINCOMPATIBLE                                         Handle        = 0x8898500A\n\tDWRITE_E_FLOWDIRECTIONCONFLICTS                                           Handle        = 0x8898500B\n\tDWRITE_E_NOCOLOR                                                          Handle        = 0x8898500C\n\tDWRITE_E_REMOTEFONT                                                       Handle        = 0x8898500D\n\tDWRITE_E_DOWNLOADCANCELLED                                                Handle        = 0x8898500E\n\tDWRITE_E_DOWNLOADFAILED                                                   Handle        = 0x8898500F\n\tDWRITE_E_TOOMANYDOWNLOADS                                                 Handle        = 0x88985010\n\tWINCODEC_ERR_WRONGSTATE                                                   Handle        = 0x88982F04\n\tWINCODEC_ERR_VALUEOUTOFRANGE                                              Handle        = 0x88982F05\n\tWINCODEC_ERR_UNKNOWNIMAGEFORMAT                                           Handle        = 0x88982F07\n\tWINCODEC_ERR_UNSUPPORTEDVERSION                                           Handle        = 0x88982F0B\n\tWINCODEC_ERR_NOTINITIALIZED                                               Handle        = 0x88982F0C\n\tWINCODEC_ERR_ALREADYLOCKED                                                Handle        = 0x88982F0D\n\tWINCODEC_ERR_PROPERTYNOTFOUND                                             Handle        = 0x88982F40\n\tWINCODEC_ERR_PROPERTYNOTSUPPORTED                                         Handle        = 0x88982F41\n\tWINCODEC_ERR_PROPERTYSIZE                                                 Handle        = 0x88982F42\n\tWINCODEC_ERR_CODECPRESENT                                                 Handle        = 0x88982F43\n\tWINCODEC_ERR_CODECNOTHUMBNAIL                                             Handle        = 0x88982F44\n\tWINCODEC_ERR_PALETTEUNAVAILABLE                                           Handle        = 0x88982F45\n\tWINCODEC_ERR_CODECTOOMANYSCANLINES                                        Handle        = 0x88982F46\n\tWINCODEC_ERR_INTERNALERROR                                                Handle        = 0x88982F48\n\tWINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS                             Handle        = 0x88982F49\n\tWINCODEC_ERR_COMPONENTNOTFOUND                                            Handle        = 0x88982F50\n\tWINCODEC_ERR_IMAGESIZEOUTOFRANGE                                          Handle        = 0x88982F51\n\tWINCODEC_ERR_TOOMUCHMETADATA                                              Handle        = 0x88982F52\n\tWINCODEC_ERR_BADIMAGE                                                     Handle        = 0x88982F60\n\tWINCODEC_ERR_BADHEADER                                                    Handle        = 0x88982F61\n\tWINCODEC_ERR_FRAMEMISSING                                                 Handle        = 0x88982F62\n\tWINCODEC_ERR_BADMETADATAHEADER                                            Handle        = 0x88982F63\n\tWINCODEC_ERR_BADSTREAMDATA                                                Handle        = 0x88982F70\n\tWINCODEC_ERR_STREAMWRITE                                                  Handle        = 0x88982F71\n\tWINCODEC_ERR_STREAMREAD                                                   Handle        = 0x88982F72\n\tWINCODEC_ERR_STREAMNOTAVAILABLE                                           Handle        = 0x88982F73\n\tWINCODEC_ERR_UNSUPPORTEDPIXELFORMAT                                       Handle        = 0x88982F80\n\tWINCODEC_ERR_UNSUPPORTEDOPERATION                                         Handle        = 0x88982F81\n\tWINCODEC_ERR_INVALIDREGISTRATION                                          Handle        = 0x88982F8A\n\tWINCODEC_ERR_COMPONENTINITIALIZEFAILURE                                   Handle        = 0x88982F8B\n\tWINCODEC_ERR_INSUFFICIENTBUFFER                                           Handle        = 0x88982F8C\n\tWINCODEC_ERR_DUPLICATEMETADATAPRESENT                                     Handle        = 0x88982F8D\n\tWINCODEC_ERR_PROPERTYUNEXPECTEDTYPE                                       Handle        = 0x88982F8E\n\tWINCODEC_ERR_UNEXPECTEDSIZE                                               Handle        = 0x88982F8F\n\tWINCODEC_ERR_INVALIDQUERYREQUEST                                          Handle        = 0x88982F90\n\tWINCODEC_ERR_UNEXPECTEDMETADATATYPE                                       Handle        = 0x88982F91\n\tWINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT                               Handle        = 0x88982F92\n\tWINCODEC_ERR_INVALIDQUERYCHARACTER                                        Handle        = 0x88982F93\n\tWINCODEC_ERR_WIN32ERROR                                                   Handle        = 0x88982F94\n\tWINCODEC_ERR_INVALIDPROGRESSIVELEVEL                                      Handle        = 0x88982F95\n\tWINCODEC_ERR_INVALIDJPEGSCANINDEX                                         Handle        = 0x88982F96\n\tMILERR_OBJECTBUSY                                                         Handle        = 0x88980001\n\tMILERR_INSUFFICIENTBUFFER                                                 Handle        = 0x88980002\n\tMILERR_WIN32ERROR                                                         Handle        = 0x88980003\n\tMILERR_SCANNER_FAILED                                                     Handle        = 0x88980004\n\tMILERR_SCREENACCESSDENIED                                                 Handle        = 0x88980005\n\tMILERR_DISPLAYSTATEINVALID                                                Handle        = 0x88980006\n\tMILERR_NONINVERTIBLEMATRIX                                                Handle        = 0x88980007\n\tMILERR_ZEROVECTOR                                                         Handle        = 0x88980008\n\tMILERR_TERMINATED                                                         Handle        = 0x88980009\n\tMILERR_BADNUMBER                                                          Handle        = 0x8898000A\n\tMILERR_INTERNALERROR                                                      Handle        = 0x88980080\n\tMILERR_DISPLAYFORMATNOTSUPPORTED                                          Handle        = 0x88980084\n\tMILERR_INVALIDCALL                                                        Handle        = 0x88980085\n\tMILERR_ALREADYLOCKED                                                      Handle        = 0x88980086\n\tMILERR_NOTLOCKED                                                          Handle        = 0x88980087\n\tMILERR_DEVICECANNOTRENDERTEXT                                             Handle        = 0x88980088\n\tMILERR_GLYPHBITMAPMISSED                                                  Handle        = 0x88980089\n\tMILERR_MALFORMEDGLYPHCACHE                                                Handle        = 0x8898008A\n\tMILERR_GENERIC_IGNORE                                                     Handle        = 0x8898008B\n\tMILERR_MALFORMED_GUIDELINE_DATA                                           Handle        = 0x8898008C\n\tMILERR_NO_HARDWARE_DEVICE                                                 Handle        = 0x8898008D\n\tMILERR_NEED_RECREATE_AND_PRESENT                                          Handle        = 0x8898008E\n\tMILERR_ALREADY_INITIALIZED                                                Handle        = 0x8898008F\n\tMILERR_MISMATCHED_SIZE                                                    Handle        = 0x88980090\n\tMILERR_NO_REDIRECTION_SURFACE_AVAILABLE                                   Handle        = 0x88980091\n\tMILERR_REMOTING_NOT_SUPPORTED                                             Handle        = 0x88980092\n\tMILERR_QUEUED_PRESENT_NOT_SUPPORTED                                       Handle        = 0x88980093\n\tMILERR_NOT_QUEUING_PRESENTS                                               Handle        = 0x88980094\n\tMILERR_NO_REDIRECTION_SURFACE_RETRY_LATER                                 Handle        = 0x88980095\n\tMILERR_TOOMANYSHADERELEMNTS                                               Handle        = 0x88980096\n\tMILERR_MROW_READLOCK_FAILED                                               Handle        = 0x88980097\n\tMILERR_MROW_UPDATE_FAILED                                                 Handle        = 0x88980098\n\tMILERR_SHADER_COMPILE_FAILED                                              Handle        = 0x88980099\n\tMILERR_MAX_TEXTURE_SIZE_EXCEEDED                                          Handle        = 0x8898009A\n\tMILERR_QPC_TIME_WENT_BACKWARD                                             Handle        = 0x8898009B\n\tMILERR_DXGI_ENUMERATION_OUT_OF_SYNC                                       Handle        = 0x8898009D\n\tMILERR_ADAPTER_NOT_FOUND                                                  Handle        = 0x8898009E\n\tMILERR_COLORSPACE_NOT_SUPPORTED                                           Handle        = 0x8898009F\n\tMILERR_PREFILTER_NOT_SUPPORTED                                            Handle        = 0x889800A0\n\tMILERR_DISPLAYID_ACCESS_DENIED                                            Handle        = 0x889800A1\n\tUCEERR_INVALIDPACKETHEADER                                                Handle        = 0x88980400\n\tUCEERR_UNKNOWNPACKET                                                      Handle        = 0x88980401\n\tUCEERR_ILLEGALPACKET                                                      Handle        = 0x88980402\n\tUCEERR_MALFORMEDPACKET                                                    Handle        = 0x88980403\n\tUCEERR_ILLEGALHANDLE                                                      Handle        = 0x88980404\n\tUCEERR_HANDLELOOKUPFAILED                                                 Handle        = 0x88980405\n\tUCEERR_RENDERTHREADFAILURE                                                Handle        = 0x88980406\n\tUCEERR_CTXSTACKFRSTTARGETNULL                                             Handle        = 0x88980407\n\tUCEERR_CONNECTIONIDLOOKUPFAILED                                           Handle        = 0x88980408\n\tUCEERR_BLOCKSFULL                                                         Handle        = 0x88980409\n\tUCEERR_MEMORYFAILURE                                                      Handle        = 0x8898040A\n\tUCEERR_PACKETRECORDOUTOFRANGE                                             Handle        = 0x8898040B\n\tUCEERR_ILLEGALRECORDTYPE                                                  Handle        = 0x8898040C\n\tUCEERR_OUTOFHANDLES                                                       Handle        = 0x8898040D\n\tUCEERR_UNCHANGABLE_UPDATE_ATTEMPTED                                       Handle        = 0x8898040E\n\tUCEERR_NO_MULTIPLE_WORKER_THREADS                                         Handle        = 0x8898040F\n\tUCEERR_REMOTINGNOTSUPPORTED                                               Handle        = 0x88980410\n\tUCEERR_MISSINGENDCOMMAND                                                  Handle        = 0x88980411\n\tUCEERR_MISSINGBEGINCOMMAND                                                Handle        = 0x88980412\n\tUCEERR_CHANNELSYNCTIMEDOUT                                                Handle        = 0x88980413\n\tUCEERR_CHANNELSYNCABANDONED                                               Handle        = 0x88980414\n\tUCEERR_UNSUPPORTEDTRANSPORTVERSION                                        Handle        = 0x88980415\n\tUCEERR_TRANSPORTUNAVAILABLE                                               Handle        = 0x88980416\n\tUCEERR_FEEDBACK_UNSUPPORTED                                               Handle        = 0x88980417\n\tUCEERR_COMMANDTRANSPORTDENIED                                             Handle        = 0x88980418\n\tUCEERR_GRAPHICSSTREAMUNAVAILABLE                                          Handle        = 0x88980419\n\tUCEERR_GRAPHICSSTREAMALREADYOPEN                                          Handle        = 0x88980420\n\tUCEERR_TRANSPORTDISCONNECTED                                              Handle        = 0x88980421\n\tUCEERR_TRANSPORTOVERLOADED                                                Handle        = 0x88980422\n\tUCEERR_PARTITION_ZOMBIED                                                  Handle        = 0x88980423\n\tMILAVERR_NOCLOCK                                                          Handle        = 0x88980500\n\tMILAVERR_NOMEDIATYPE                                                      Handle        = 0x88980501\n\tMILAVERR_NOVIDEOMIXER                                                     Handle        = 0x88980502\n\tMILAVERR_NOVIDEOPRESENTER                                                 Handle        = 0x88980503\n\tMILAVERR_NOREADYFRAMES                                                    Handle        = 0x88980504\n\tMILAVERR_MODULENOTLOADED                                                  Handle        = 0x88980505\n\tMILAVERR_WMPFACTORYNOTREGISTERED                                          Handle        = 0x88980506\n\tMILAVERR_INVALIDWMPVERSION                                                Handle        = 0x88980507\n\tMILAVERR_INSUFFICIENTVIDEORESOURCES                                       Handle        = 0x88980508\n\tMILAVERR_VIDEOACCELERATIONNOTAVAILABLE                                    Handle        = 0x88980509\n\tMILAVERR_REQUESTEDTEXTURETOOBIG                                           Handle        = 0x8898050A\n\tMILAVERR_SEEKFAILED                                                       Handle        = 0x8898050B\n\tMILAVERR_UNEXPECTEDWMPFAILURE                                             Handle        = 0x8898050C\n\tMILAVERR_MEDIAPLAYERCLOSED                                                Handle        = 0x8898050D\n\tMILAVERR_UNKNOWNHARDWAREERROR                                             Handle        = 0x8898050E\n\tMILEFFECTSERR_UNKNOWNPROPERTY                                             Handle        = 0x8898060E\n\tMILEFFECTSERR_EFFECTNOTPARTOFGROUP                                        Handle        = 0x8898060F\n\tMILEFFECTSERR_NOINPUTSOURCEATTACHED                                       Handle        = 0x88980610\n\tMILEFFECTSERR_CONNECTORNOTCONNECTED                                       Handle        = 0x88980611\n\tMILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT                            Handle        = 0x88980612\n\tMILEFFECTSERR_RESERVED                                                    Handle        = 0x88980613\n\tMILEFFECTSERR_CYCLEDETECTED                                               Handle        = 0x88980614\n\tMILEFFECTSERR_EFFECTINMORETHANONEGRAPH                                    Handle        = 0x88980615\n\tMILEFFECTSERR_EFFECTALREADYINAGRAPH                                       Handle        = 0x88980616\n\tMILEFFECTSERR_EFFECTHASNOCHILDREN                                         Handle        = 0x88980617\n\tMILEFFECTSERR_ALREADYATTACHEDTOLISTENER                                   Handle        = 0x88980618\n\tMILEFFECTSERR_NOTAFFINETRANSFORM                                          Handle        = 0x88980619\n\tMILEFFECTSERR_EMPTYBOUNDS                                                 Handle        = 0x8898061A\n\tMILEFFECTSERR_OUTPUTSIZETOOLARGE                                          Handle        = 0x8898061B\n\tDWMERR_STATE_TRANSITION_FAILED                                            Handle        = 0x88980700\n\tDWMERR_THEME_FAILED                                                       Handle        = 0x88980701\n\tDWMERR_CATASTROPHIC_FAILURE                                               Handle        = 0x88980702\n\tDCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED                                Handle        = 0x88980800\n\tDCOMPOSITION_ERROR_SURFACE_BEING_RENDERED                                 Handle        = 0x88980801\n\tDCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED                             Handle        = 0x88980802\n\tONL_E_INVALID_AUTHENTICATION_TARGET                                       Handle        = 0x80860001\n\tONL_E_ACCESS_DENIED_BY_TOU                                                Handle        = 0x80860002\n\tONL_E_INVALID_APPLICATION                                                 Handle        = 0x80860003\n\tONL_E_PASSWORD_UPDATE_REQUIRED                                            Handle        = 0x80860004\n\tONL_E_ACCOUNT_UPDATE_REQUIRED                                             Handle        = 0x80860005\n\tONL_E_FORCESIGNIN                                                         Handle        = 0x80860006\n\tONL_E_ACCOUNT_LOCKED                                                      Handle        = 0x80860007\n\tONL_E_PARENTAL_CONSENT_REQUIRED                                           Handle        = 0x80860008\n\tONL_E_EMAIL_VERIFICATION_REQUIRED                                         Handle        = 0x80860009\n\tONL_E_ACCOUNT_SUSPENDED_COMPROIMISE                                       Handle        = 0x8086000A\n\tONL_E_ACCOUNT_SUSPENDED_ABUSE                                             Handle        = 0x8086000B\n\tONL_E_ACTION_REQUIRED                                                     Handle        = 0x8086000C\n\tONL_CONNECTION_COUNT_LIMIT                                                Handle        = 0x8086000D\n\tONL_E_CONNECTED_ACCOUNT_CAN_NOT_SIGNOUT                                   Handle        = 0x8086000E\n\tONL_E_USER_AUTHENTICATION_REQUIRED                                        Handle        = 0x8086000F\n\tONL_E_REQUEST_THROTTLED                                                   Handle        = 0x80860010\n\tFA_E_MAX_PERSISTED_ITEMS_REACHED                                          Handle        = 0x80270220\n\tFA_E_HOMEGROUP_NOT_AVAILABLE                                              Handle        = 0x80270222\n\tE_MONITOR_RESOLUTION_TOO_LOW                                              Handle        = 0x80270250\n\tE_ELEVATED_ACTIVATION_NOT_SUPPORTED                                       Handle        = 0x80270251\n\tE_UAC_DISABLED                                                            Handle        = 0x80270252\n\tE_FULL_ADMIN_NOT_SUPPORTED                                                Handle        = 0x80270253\n\tE_APPLICATION_NOT_REGISTERED                                              Handle        = 0x80270254\n\tE_MULTIPLE_EXTENSIONS_FOR_APPLICATION                                     Handle        = 0x80270255\n\tE_MULTIPLE_PACKAGES_FOR_FAMILY                                            Handle        = 0x80270256\n\tE_APPLICATION_MANAGER_NOT_RUNNING                                         Handle        = 0x80270257\n\tS_STORE_LAUNCHED_FOR_REMEDIATION                                          Handle        = 0x00270258\n\tS_APPLICATION_ACTIVATION_ERROR_HANDLED_BY_DIALOG                          Handle        = 0x00270259\n\tE_APPLICATION_ACTIVATION_TIMED_OUT                                        Handle        = 0x8027025A\n\tE_APPLICATION_ACTIVATION_EXEC_FAILURE                                     Handle        = 0x8027025B\n\tE_APPLICATION_TEMPORARY_LICENSE_ERROR                                     Handle        = 0x8027025C\n\tE_APPLICATION_TRIAL_LICENSE_EXPIRED                                       Handle        = 0x8027025D\n\tE_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED                          Handle        = 0x80270260\n\tE_SKYDRIVE_ROOT_TARGET_OVERLAP                                            Handle        = 0x80270261\n\tE_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX                                       Handle        = 0x80270262\n\tE_SKYDRIVE_FILE_NOT_UPLOADED                                              Handle        = 0x80270263\n\tE_SKYDRIVE_UPDATE_AVAILABILITY_FAIL                                       Handle        = 0x80270264\n\tE_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED                          Handle        = 0x80270265\n\tE_SYNCENGINE_FILE_SIZE_OVER_LIMIT                                         Handle        = 0x8802B001\n\tE_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA                            Handle        = 0x8802B002\n\tE_SYNCENGINE_UNSUPPORTED_FILE_NAME                                        Handle        = 0x8802B003\n\tE_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED                             Handle        = 0x8802B004\n\tE_SYNCENGINE_FILE_SYNC_PARTNER_ERROR                                      Handle        = 0x8802B005\n\tE_SYNCENGINE_SYNC_PAUSED_BY_SERVICE                                       Handle        = 0x8802B006\n\tE_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN                                      Handle        = 0x8802C002\n\tE_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED                                Handle        = 0x8802C003\n\tE_SYNCENGINE_UNKNOWN_SERVICE_ERROR                                        Handle        = 0x8802C004\n\tE_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE                             Handle        = 0x8802C005\n\tE_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE                                   Handle        = 0x8802C006\n\tE_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR                          Handle        = 0x8802C007\n\tE_SYNCENGINE_FOLDER_INACCESSIBLE                                          Handle        = 0x8802D001\n\tE_SYNCENGINE_UNSUPPORTED_FOLDER_NAME                                      Handle        = 0x8802D002\n\tE_SYNCENGINE_UNSUPPORTED_MARKET                                           Handle        = 0x8802D003\n\tE_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED                                   Handle        = 0x8802D004\n\tE_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED                            Handle        = 0x8802D005\n\tE_SYNCENGINE_CLIENT_UPDATE_NEEDED                                         Handle        = 0x8802D006\n\tE_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED                                Handle        = 0x8802D007\n\tE_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED                          Handle        = 0x8802D008\n\tE_SYNCENGINE_UNSUPPORTED_REPARSE_POINT                                    Handle        = 0x8802D009\n\tE_SYNCENGINE_STORAGE_SERVICE_BLOCKED                                      Handle        = 0x8802D00A\n\tE_SYNCENGINE_FOLDER_IN_REDIRECTION                                        Handle        = 0x8802D00B\n\tEAS_E_POLICY_NOT_MANAGED_BY_OS                                            Handle        = 0x80550001\n\tEAS_E_POLICY_COMPLIANT_WITH_ACTIONS                                       Handle        = 0x80550002\n\tEAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE                                    Handle        = 0x80550003\n\tEAS_E_CURRENT_USER_HAS_BLANK_PASSWORD                                     Handle        = 0x80550004\n\tEAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE                   Handle        = 0x80550005\n\tEAS_E_USER_CANNOT_CHANGE_PASSWORD                                         Handle        = 0x80550006\n\tEAS_E_ADMINS_HAVE_BLANK_PASSWORD                                          Handle        = 0x80550007\n\tEAS_E_ADMINS_CANNOT_CHANGE_PASSWORD                                       Handle        = 0x80550008\n\tEAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD                       Handle        = 0x80550009\n\tEAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS                Handle        = 0x8055000A\n\tEAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD                            Handle        = 0x8055000B\n\tEAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER          Handle        = 0x8055000C\n\tEAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD                      Handle        = 0x8055000D\n\tWEB_E_UNSUPPORTED_FORMAT                                                  Handle        = 0x83750001\n\tWEB_E_INVALID_XML                                                         Handle        = 0x83750002\n\tWEB_E_MISSING_REQUIRED_ELEMENT                                            Handle        = 0x83750003\n\tWEB_E_MISSING_REQUIRED_ATTRIBUTE                                          Handle        = 0x83750004\n\tWEB_E_UNEXPECTED_CONTENT                                                  Handle        = 0x83750005\n\tWEB_E_RESOURCE_TOO_LARGE                                                  Handle        = 0x83750006\n\tWEB_E_INVALID_JSON_STRING                                                 Handle        = 0x83750007\n\tWEB_E_INVALID_JSON_NUMBER                                                 Handle        = 0x83750008\n\tWEB_E_JSON_VALUE_NOT_FOUND                                                Handle        = 0x83750009\n\tHTTP_E_STATUS_UNEXPECTED                                                  Handle        = 0x80190001\n\tHTTP_E_STATUS_UNEXPECTED_REDIRECTION                                      Handle        = 0x80190003\n\tHTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR                                     Handle        = 0x80190004\n\tHTTP_E_STATUS_UNEXPECTED_SERVER_ERROR                                     Handle        = 0x80190005\n\tHTTP_E_STATUS_AMBIGUOUS                                                   Handle        = 0x8019012C\n\tHTTP_E_STATUS_MOVED                                                       Handle        = 0x8019012D\n\tHTTP_E_STATUS_REDIRECT                                                    Handle        = 0x8019012E\n\tHTTP_E_STATUS_REDIRECT_METHOD                                             Handle        = 0x8019012F\n\tHTTP_E_STATUS_NOT_MODIFIED                                                Handle        = 0x80190130\n\tHTTP_E_STATUS_USE_PROXY                                                   Handle        = 0x80190131\n\tHTTP_E_STATUS_REDIRECT_KEEP_VERB                                          Handle        = 0x80190133\n\tHTTP_E_STATUS_BAD_REQUEST                                                 Handle        = 0x80190190\n\tHTTP_E_STATUS_DENIED                                                      Handle        = 0x80190191\n\tHTTP_E_STATUS_PAYMENT_REQ                                                 Handle        = 0x80190192\n\tHTTP_E_STATUS_FORBIDDEN                                                   Handle        = 0x80190193\n\tHTTP_E_STATUS_NOT_FOUND                                                   Handle        = 0x80190194\n\tHTTP_E_STATUS_BAD_METHOD                                                  Handle        = 0x80190195\n\tHTTP_E_STATUS_NONE_ACCEPTABLE                                             Handle        = 0x80190196\n\tHTTP_E_STATUS_PROXY_AUTH_REQ                                              Handle        = 0x80190197\n\tHTTP_E_STATUS_REQUEST_TIMEOUT                                             Handle        = 0x80190198\n\tHTTP_E_STATUS_CONFLICT                                                    Handle        = 0x80190199\n\tHTTP_E_STATUS_GONE                                                        Handle        = 0x8019019A\n\tHTTP_E_STATUS_LENGTH_REQUIRED                                             Handle        = 0x8019019B\n\tHTTP_E_STATUS_PRECOND_FAILED                                              Handle        = 0x8019019C\n\tHTTP_E_STATUS_REQUEST_TOO_LARGE                                           Handle        = 0x8019019D\n\tHTTP_E_STATUS_URI_TOO_LONG                                                Handle        = 0x8019019E\n\tHTTP_E_STATUS_UNSUPPORTED_MEDIA                                           Handle        = 0x8019019F\n\tHTTP_E_STATUS_RANGE_NOT_SATISFIABLE                                       Handle        = 0x801901A0\n\tHTTP_E_STATUS_EXPECTATION_FAILED                                          Handle        = 0x801901A1\n\tHTTP_E_STATUS_SERVER_ERROR                                                Handle        = 0x801901F4\n\tHTTP_E_STATUS_NOT_SUPPORTED                                               Handle        = 0x801901F5\n\tHTTP_E_STATUS_BAD_GATEWAY                                                 Handle        = 0x801901F6\n\tHTTP_E_STATUS_SERVICE_UNAVAIL                                             Handle        = 0x801901F7\n\tHTTP_E_STATUS_GATEWAY_TIMEOUT                                             Handle        = 0x801901F8\n\tHTTP_E_STATUS_VERSION_NOT_SUP                                             Handle        = 0x801901F9\n\tE_INVALID_PROTOCOL_OPERATION                                              Handle        = 0x83760001\n\tE_INVALID_PROTOCOL_FORMAT                                                 Handle        = 0x83760002\n\tE_PROTOCOL_EXTENSIONS_NOT_SUPPORTED                                       Handle        = 0x83760003\n\tE_SUBPROTOCOL_NOT_SUPPORTED                                               Handle        = 0x83760004\n\tE_PROTOCOL_VERSION_NOT_SUPPORTED                                          Handle        = 0x83760005\n\tINPUT_E_OUT_OF_ORDER                                                      Handle        = 0x80400000\n\tINPUT_E_REENTRANCY                                                        Handle        = 0x80400001\n\tINPUT_E_MULTIMODAL                                                        Handle        = 0x80400002\n\tINPUT_E_PACKET                                                            Handle        = 0x80400003\n\tINPUT_E_FRAME                                                             Handle        = 0x80400004\n\tINPUT_E_HISTORY                                                           Handle        = 0x80400005\n\tINPUT_E_DEVICE_INFO                                                       Handle        = 0x80400006\n\tINPUT_E_TRANSFORM                                                         Handle        = 0x80400007\n\tINPUT_E_DEVICE_PROPERTY                                                   Handle        = 0x80400008\n\tINET_E_INVALID_URL                                                        Handle        = 0x800C0002\n\tINET_E_NO_SESSION                                                         Handle        = 0x800C0003\n\tINET_E_CANNOT_CONNECT                                                     Handle        = 0x800C0004\n\tINET_E_RESOURCE_NOT_FOUND                                                 Handle        = 0x800C0005\n\tINET_E_OBJECT_NOT_FOUND                                                   Handle        = 0x800C0006\n\tINET_E_DATA_NOT_AVAILABLE                                                 Handle        = 0x800C0007\n\tINET_E_DOWNLOAD_FAILURE                                                   Handle        = 0x800C0008\n\tINET_E_AUTHENTICATION_REQUIRED                                            Handle        = 0x800C0009\n\tINET_E_NO_VALID_MEDIA                                                     Handle        = 0x800C000A\n\tINET_E_CONNECTION_TIMEOUT                                                 Handle        = 0x800C000B\n\tINET_E_INVALID_REQUEST                                                    Handle        = 0x800C000C\n\tINET_E_UNKNOWN_PROTOCOL                                                   Handle        = 0x800C000D\n\tINET_E_SECURITY_PROBLEM                                                   Handle        = 0x800C000E\n\tINET_E_CANNOT_LOAD_DATA                                                   Handle        = 0x800C000F\n\tINET_E_CANNOT_INSTANTIATE_OBJECT                                          Handle        = 0x800C0010\n\tINET_E_INVALID_CERTIFICATE                                                Handle        = 0x800C0019\n\tINET_E_REDIRECT_FAILED                                                    Handle        = 0x800C0014\n\tINET_E_REDIRECT_TO_DIR                                                    Handle        = 0x800C0015\n\tERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN                                 Handle        = 0x80B00001\n\tERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN                                 Handle        = 0x80B00002\n\tERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN                                 Handle        = 0x80B00003\n\tERROR_DBG_START_SERVER_FAILURE_LOCKDOWN                                   Handle        = 0x80B00004\n\tERROR_IO_PREEMPTED                                                        Handle        = 0x89010001\n\tJSCRIPT_E_CANTEXECUTE                                                     Handle        = 0x89020001\n\tWEP_E_NOT_PROVISIONED_ON_ALL_VOLUMES                                      Handle        = 0x88010001\n\tWEP_E_FIXED_DATA_NOT_SUPPORTED                                            Handle        = 0x88010002\n\tWEP_E_HARDWARE_NOT_COMPLIANT                                              Handle        = 0x88010003\n\tWEP_E_LOCK_NOT_CONFIGURED                                                 Handle        = 0x88010004\n\tWEP_E_PROTECTION_SUSPENDED                                                Handle        = 0x88010005\n\tWEP_E_NO_LICENSE                                                          Handle        = 0x88010006\n\tWEP_E_OS_NOT_PROTECTED                                                    Handle        = 0x88010007\n\tWEP_E_UNEXPECTED_FAIL                                                     Handle        = 0x88010008\n\tWEP_E_BUFFER_TOO_LARGE                                                    Handle        = 0x88010009\n\tERROR_SVHDX_ERROR_STORED                                                  Handle        = 0xC05C0000\n\tERROR_SVHDX_ERROR_NOT_AVAILABLE                                           Handle        = 0xC05CFF00\n\tERROR_SVHDX_UNIT_ATTENTION_AVAILABLE                                      Handle        = 0xC05CFF01\n\tERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED                          Handle        = 0xC05CFF02\n\tERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED                         Handle        = 0xC05CFF03\n\tERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED                          Handle        = 0xC05CFF04\n\tERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED                        Handle        = 0xC05CFF05\n\tERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED                   Handle        = 0xC05CFF06\n\tERROR_SVHDX_RESERVATION_CONFLICT                                          Handle        = 0xC05CFF07\n\tERROR_SVHDX_WRONG_FILE_TYPE                                               Handle        = 0xC05CFF08\n\tERROR_SVHDX_VERSION_MISMATCH                                              Handle        = 0xC05CFF09\n\tERROR_VHD_SHARED                                                          Handle        = 0xC05CFF0A\n\tERROR_SVHDX_NO_INITIATOR                                                  Handle        = 0xC05CFF0B\n\tERROR_VHDSET_BACKING_STORAGE_NOT_FOUND                                    Handle        = 0xC05CFF0C\n\tERROR_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP                               Handle        = 0xC05D0000\n\tERROR_SMB_BAD_CLUSTER_DIALECT                                             Handle        = 0xC05D0001\n\tWININET_E_OUT_OF_HANDLES                                                  Handle        = 0x80072EE1\n\tWININET_E_TIMEOUT                                                         Handle        = 0x80072EE2\n\tWININET_E_EXTENDED_ERROR                                                  Handle        = 0x80072EE3\n\tWININET_E_INTERNAL_ERROR                                                  Handle        = 0x80072EE4\n\tWININET_E_INVALID_URL                                                     Handle        = 0x80072EE5\n\tWININET_E_UNRECOGNIZED_SCHEME                                             Handle        = 0x80072EE6\n\tWININET_E_NAME_NOT_RESOLVED                                               Handle        = 0x80072EE7\n\tWININET_E_PROTOCOL_NOT_FOUND                                              Handle        = 0x80072EE8\n\tWININET_E_INVALID_OPTION                                                  Handle        = 0x80072EE9\n\tWININET_E_BAD_OPTION_LENGTH                                               Handle        = 0x80072EEA\n\tWININET_E_OPTION_NOT_SETTABLE                                             Handle        = 0x80072EEB\n\tWININET_E_SHUTDOWN                                                        Handle        = 0x80072EEC\n\tWININET_E_INCORRECT_USER_NAME                                             Handle        = 0x80072EED\n\tWININET_E_INCORRECT_PASSWORD                                              Handle        = 0x80072EEE\n\tWININET_E_LOGIN_FAILURE                                                   Handle        = 0x80072EEF\n\tWININET_E_INVALID_OPERATION                                               Handle        = 0x80072EF0\n\tWININET_E_OPERATION_CANCELLED                                             Handle        = 0x80072EF1\n\tWININET_E_INCORRECT_HANDLE_TYPE                                           Handle        = 0x80072EF2\n\tWININET_E_INCORRECT_HANDLE_STATE                                          Handle        = 0x80072EF3\n\tWININET_E_NOT_PROXY_REQUEST                                               Handle        = 0x80072EF4\n\tWININET_E_REGISTRY_VALUE_NOT_FOUND                                        Handle        = 0x80072EF5\n\tWININET_E_BAD_REGISTRY_PARAMETER                                          Handle        = 0x80072EF6\n\tWININET_E_NO_DIRECT_ACCESS                                                Handle        = 0x80072EF7\n\tWININET_E_NO_CONTEXT                                                      Handle        = 0x80072EF8\n\tWININET_E_NO_CALLBACK                                                     Handle        = 0x80072EF9\n\tWININET_E_REQUEST_PENDING                                                 Handle        = 0x80072EFA\n\tWININET_E_INCORRECT_FORMAT                                                Handle        = 0x80072EFB\n\tWININET_E_ITEM_NOT_FOUND                                                  Handle        = 0x80072EFC\n\tWININET_E_CANNOT_CONNECT                                                  Handle        = 0x80072EFD\n\tWININET_E_CONNECTION_ABORTED                                              Handle        = 0x80072EFE\n\tWININET_E_CONNECTION_RESET                                                Handle        = 0x80072EFF\n\tWININET_E_FORCE_RETRY                                                     Handle        = 0x80072F00\n\tWININET_E_INVALID_PROXY_REQUEST                                           Handle        = 0x80072F01\n\tWININET_E_NEED_UI                                                         Handle        = 0x80072F02\n\tWININET_E_HANDLE_EXISTS                                                   Handle        = 0x80072F04\n\tWININET_E_SEC_CERT_DATE_INVALID                                           Handle        = 0x80072F05\n\tWININET_E_SEC_CERT_CN_INVALID                                             Handle        = 0x80072F06\n\tWININET_E_HTTP_TO_HTTPS_ON_REDIR                                          Handle        = 0x80072F07\n\tWININET_E_HTTPS_TO_HTTP_ON_REDIR                                          Handle        = 0x80072F08\n\tWININET_E_MIXED_SECURITY                                                  Handle        = 0x80072F09\n\tWININET_E_CHG_POST_IS_NON_SECURE                                          Handle        = 0x80072F0A\n\tWININET_E_POST_IS_NON_SECURE                                              Handle        = 0x80072F0B\n\tWININET_E_CLIENT_AUTH_CERT_NEEDED                                         Handle        = 0x80072F0C\n\tWININET_E_INVALID_CA                                                      Handle        = 0x80072F0D\n\tWININET_E_CLIENT_AUTH_NOT_SETUP                                           Handle        = 0x80072F0E\n\tWININET_E_ASYNC_THREAD_FAILED                                             Handle        = 0x80072F0F\n\tWININET_E_REDIRECT_SCHEME_CHANGE                                          Handle        = 0x80072F10\n\tWININET_E_DIALOG_PENDING                                                  Handle        = 0x80072F11\n\tWININET_E_RETRY_DIALOG                                                    Handle        = 0x80072F12\n\tWININET_E_NO_NEW_CONTAINERS                                               Handle        = 0x80072F13\n\tWININET_E_HTTPS_HTTP_SUBMIT_REDIR                                         Handle        = 0x80072F14\n\tWININET_E_SEC_CERT_ERRORS                                                 Handle        = 0x80072F17\n\tWININET_E_SEC_CERT_REV_FAILED                                             Handle        = 0x80072F19\n\tWININET_E_HEADER_NOT_FOUND                                                Handle        = 0x80072F76\n\tWININET_E_DOWNLEVEL_SERVER                                                Handle        = 0x80072F77\n\tWININET_E_INVALID_SERVER_RESPONSE                                         Handle        = 0x80072F78\n\tWININET_E_INVALID_HEADER                                                  Handle        = 0x80072F79\n\tWININET_E_INVALID_QUERY_REQUEST                                           Handle        = 0x80072F7A\n\tWININET_E_HEADER_ALREADY_EXISTS                                           Handle        = 0x80072F7B\n\tWININET_E_REDIRECT_FAILED                                                 Handle        = 0x80072F7C\n\tWININET_E_SECURITY_CHANNEL_ERROR                                          Handle        = 0x80072F7D\n\tWININET_E_UNABLE_TO_CACHE_FILE                                            Handle        = 0x80072F7E\n\tWININET_E_TCPIP_NOT_INSTALLED                                             Handle        = 0x80072F7F\n\tWININET_E_DISCONNECTED                                                    Handle        = 0x80072F83\n\tWININET_E_SERVER_UNREACHABLE                                              Handle        = 0x80072F84\n\tWININET_E_PROXY_SERVER_UNREACHABLE                                        Handle        = 0x80072F85\n\tWININET_E_BAD_AUTO_PROXY_SCRIPT                                           Handle        = 0x80072F86\n\tWININET_E_UNABLE_TO_DOWNLOAD_SCRIPT                                       Handle        = 0x80072F87\n\tWININET_E_SEC_INVALID_CERT                                                Handle        = 0x80072F89\n\tWININET_E_SEC_CERT_REVOKED                                                Handle        = 0x80072F8A\n\tWININET_E_FAILED_DUETOSECURITYCHECK                                       Handle        = 0x80072F8B\n\tWININET_E_NOT_INITIALIZED                                                 Handle        = 0x80072F8C\n\tWININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY                               Handle        = 0x80072F8E\n\tWININET_E_DECODING_FAILED                                                 Handle        = 0x80072F8F\n\tWININET_E_NOT_REDIRECTED                                                  Handle        = 0x80072F80\n\tWININET_E_COOKIE_NEEDS_CONFIRMATION                                       Handle        = 0x80072F81\n\tWININET_E_COOKIE_DECLINED                                                 Handle        = 0x80072F82\n\tWININET_E_REDIRECT_NEEDS_CONFIRMATION                                     Handle        = 0x80072F88\n\tSQLITE_E_ERROR                                                            Handle        = 0x87AF0001\n\tSQLITE_E_INTERNAL                                                         Handle        = 0x87AF0002\n\tSQLITE_E_PERM                                                             Handle        = 0x87AF0003\n\tSQLITE_E_ABORT                                                            Handle        = 0x87AF0004\n\tSQLITE_E_BUSY                                                             Handle        = 0x87AF0005\n\tSQLITE_E_LOCKED                                                           Handle        = 0x87AF0006\n\tSQLITE_E_NOMEM                                                            Handle        = 0x87AF0007\n\tSQLITE_E_READONLY                                                         Handle        = 0x87AF0008\n\tSQLITE_E_INTERRUPT                                                        Handle        = 0x87AF0009\n\tSQLITE_E_IOERR                                                            Handle        = 0x87AF000A\n\tSQLITE_E_CORRUPT                                                          Handle        = 0x87AF000B\n\tSQLITE_E_NOTFOUND                                                         Handle        = 0x87AF000C\n\tSQLITE_E_FULL                                                             Handle        = 0x87AF000D\n\tSQLITE_E_CANTOPEN                                                         Handle        = 0x87AF000E\n\tSQLITE_E_PROTOCOL                                                         Handle        = 0x87AF000F\n\tSQLITE_E_EMPTY                                                            Handle        = 0x87AF0010\n\tSQLITE_E_SCHEMA                                                           Handle        = 0x87AF0011\n\tSQLITE_E_TOOBIG                                                           Handle        = 0x87AF0012\n\tSQLITE_E_CONSTRAINT                                                       Handle        = 0x87AF0013\n\tSQLITE_E_MISMATCH                                                         Handle        = 0x87AF0014\n\tSQLITE_E_MISUSE                                                           Handle        = 0x87AF0015\n\tSQLITE_E_NOLFS                                                            Handle        = 0x87AF0016\n\tSQLITE_E_AUTH                                                             Handle        = 0x87AF0017\n\tSQLITE_E_FORMAT                                                           Handle        = 0x87AF0018\n\tSQLITE_E_RANGE                                                            Handle        = 0x87AF0019\n\tSQLITE_E_NOTADB                                                           Handle        = 0x87AF001A\n\tSQLITE_E_NOTICE                                                           Handle        = 0x87AF001B\n\tSQLITE_E_WARNING                                                          Handle        = 0x87AF001C\n\tSQLITE_E_ROW                                                              Handle        = 0x87AF0064\n\tSQLITE_E_DONE                                                             Handle        = 0x87AF0065\n\tSQLITE_E_IOERR_READ                                                       Handle        = 0x87AF010A\n\tSQLITE_E_IOERR_SHORT_READ                                                 Handle        = 0x87AF020A\n\tSQLITE_E_IOERR_WRITE                                                      Handle        = 0x87AF030A\n\tSQLITE_E_IOERR_FSYNC                                                      Handle        = 0x87AF040A\n\tSQLITE_E_IOERR_DIR_FSYNC                                                  Handle        = 0x87AF050A\n\tSQLITE_E_IOERR_TRUNCATE                                                   Handle        = 0x87AF060A\n\tSQLITE_E_IOERR_FSTAT                                                      Handle        = 0x87AF070A\n\tSQLITE_E_IOERR_UNLOCK                                                     Handle        = 0x87AF080A\n\tSQLITE_E_IOERR_RDLOCK                                                     Handle        = 0x87AF090A\n\tSQLITE_E_IOERR_DELETE                                                     Handle        = 0x87AF0A0A\n\tSQLITE_E_IOERR_BLOCKED                                                    Handle        = 0x87AF0B0A\n\tSQLITE_E_IOERR_NOMEM                                                      Handle        = 0x87AF0C0A\n\tSQLITE_E_IOERR_ACCESS                                                     Handle        = 0x87AF0D0A\n\tSQLITE_E_IOERR_CHECKRESERVEDLOCK                                          Handle        = 0x87AF0E0A\n\tSQLITE_E_IOERR_LOCK                                                       Handle        = 0x87AF0F0A\n\tSQLITE_E_IOERR_CLOSE                                                      Handle        = 0x87AF100A\n\tSQLITE_E_IOERR_DIR_CLOSE                                                  Handle        = 0x87AF110A\n\tSQLITE_E_IOERR_SHMOPEN                                                    Handle        = 0x87AF120A\n\tSQLITE_E_IOERR_SHMSIZE                                                    Handle        = 0x87AF130A\n\tSQLITE_E_IOERR_SHMLOCK                                                    Handle        = 0x87AF140A\n\tSQLITE_E_IOERR_SHMMAP                                                     Handle        = 0x87AF150A\n\tSQLITE_E_IOERR_SEEK                                                       Handle        = 0x87AF160A\n\tSQLITE_E_IOERR_DELETE_NOENT                                               Handle        = 0x87AF170A\n\tSQLITE_E_IOERR_MMAP                                                       Handle        = 0x87AF180A\n\tSQLITE_E_IOERR_GETTEMPPATH                                                Handle        = 0x87AF190A\n\tSQLITE_E_IOERR_CONVPATH                                                   Handle        = 0x87AF1A0A\n\tSQLITE_E_IOERR_VNODE                                                      Handle        = 0x87AF1A02\n\tSQLITE_E_IOERR_AUTH                                                       Handle        = 0x87AF1A03\n\tSQLITE_E_LOCKED_SHAREDCACHE                                               Handle        = 0x87AF0106\n\tSQLITE_E_BUSY_RECOVERY                                                    Handle        = 0x87AF0105\n\tSQLITE_E_BUSY_SNAPSHOT                                                    Handle        = 0x87AF0205\n\tSQLITE_E_CANTOPEN_NOTEMPDIR                                               Handle        = 0x87AF010E\n\tSQLITE_E_CANTOPEN_ISDIR                                                   Handle        = 0x87AF020E\n\tSQLITE_E_CANTOPEN_FULLPATH                                                Handle        = 0x87AF030E\n\tSQLITE_E_CANTOPEN_CONVPATH                                                Handle        = 0x87AF040E\n\tSQLITE_E_CORRUPT_VTAB                                                     Handle        = 0x87AF010B\n\tSQLITE_E_READONLY_RECOVERY                                                Handle        = 0x87AF0108\n\tSQLITE_E_READONLY_CANTLOCK                                                Handle        = 0x87AF0208\n\tSQLITE_E_READONLY_ROLLBACK                                                Handle        = 0x87AF0308\n\tSQLITE_E_READONLY_DBMOVED                                                 Handle        = 0x87AF0408\n\tSQLITE_E_ABORT_ROLLBACK                                                   Handle        = 0x87AF0204\n\tSQLITE_E_CONSTRAINT_CHECK                                                 Handle        = 0x87AF0113\n\tSQLITE_E_CONSTRAINT_COMMITHOOK                                            Handle        = 0x87AF0213\n\tSQLITE_E_CONSTRAINT_FOREIGNKEY                                            Handle        = 0x87AF0313\n\tSQLITE_E_CONSTRAINT_FUNCTION                                              Handle        = 0x87AF0413\n\tSQLITE_E_CONSTRAINT_NOTNULL                                               Handle        = 0x87AF0513\n\tSQLITE_E_CONSTRAINT_PRIMARYKEY                                            Handle        = 0x87AF0613\n\tSQLITE_E_CONSTRAINT_TRIGGER                                               Handle        = 0x87AF0713\n\tSQLITE_E_CONSTRAINT_UNIQUE                                                Handle        = 0x87AF0813\n\tSQLITE_E_CONSTRAINT_VTAB                                                  Handle        = 0x87AF0913\n\tSQLITE_E_CONSTRAINT_ROWID                                                 Handle        = 0x87AF0A13\n\tSQLITE_E_NOTICE_RECOVER_WAL                                               Handle        = 0x87AF011B\n\tSQLITE_E_NOTICE_RECOVER_ROLLBACK                                          Handle        = 0x87AF021B\n\tSQLITE_E_WARNING_AUTOINDEX                                                Handle        = 0x87AF011C\n\tUTC_E_TOGGLE_TRACE_STARTED                                                Handle        = 0x87C51001\n\tUTC_E_ALTERNATIVE_TRACE_CANNOT_PREEMPT                                    Handle        = 0x87C51002\n\tUTC_E_AOT_NOT_RUNNING                                                     Handle        = 0x87C51003\n\tUTC_E_SCRIPT_TYPE_INVALID                                                 Handle        = 0x87C51004\n\tUTC_E_SCENARIODEF_NOT_FOUND                                               Handle        = 0x87C51005\n\tUTC_E_TRACEPROFILE_NOT_FOUND                                              Handle        = 0x87C51006\n\tUTC_E_FORWARDER_ALREADY_ENABLED                                           Handle        = 0x87C51007\n\tUTC_E_FORWARDER_ALREADY_DISABLED                                          Handle        = 0x87C51008\n\tUTC_E_EVENTLOG_ENTRY_MALFORMED                                            Handle        = 0x87C51009\n\tUTC_E_DIAGRULES_SCHEMAVERSION_MISMATCH                                    Handle        = 0x87C5100A\n\tUTC_E_SCRIPT_TERMINATED                                                   Handle        = 0x87C5100B\n\tUTC_E_INVALID_CUSTOM_FILTER                                               Handle        = 0x87C5100C\n\tUTC_E_TRACE_NOT_RUNNING                                                   Handle        = 0x87C5100D\n\tUTC_E_REESCALATED_TOO_QUICKLY                                             Handle        = 0x87C5100E\n\tUTC_E_ESCALATION_ALREADY_RUNNING                                          Handle        = 0x87C5100F\n\tUTC_E_PERFTRACK_ALREADY_TRACING                                           Handle        = 0x87C51010\n\tUTC_E_REACHED_MAX_ESCALATIONS                                             Handle        = 0x87C51011\n\tUTC_E_FORWARDER_PRODUCER_MISMATCH                                         Handle        = 0x87C51012\n\tUTC_E_INTENTIONAL_SCRIPT_FAILURE                                          Handle        = 0x87C51013\n\tUTC_E_SQM_INIT_FAILED                                                     Handle        = 0x87C51014\n\tUTC_E_NO_WER_LOGGER_SUPPORTED                                             Handle        = 0x87C51015\n\tUTC_E_TRACERS_DONT_EXIST                                                  Handle        = 0x87C51016\n\tUTC_E_WINRT_INIT_FAILED                                                   Handle        = 0x87C51017\n\tUTC_E_SCENARIODEF_SCHEMAVERSION_MISMATCH                                  Handle        = 0x87C51018\n\tUTC_E_INVALID_FILTER                                                      Handle        = 0x87C51019\n\tUTC_E_EXE_TERMINATED                                                      Handle        = 0x87C5101A\n\tUTC_E_ESCALATION_NOT_AUTHORIZED                                           Handle        = 0x87C5101B\n\tUTC_E_SETUP_NOT_AUTHORIZED                                                Handle        = 0x87C5101C\n\tUTC_E_CHILD_PROCESS_FAILED                                                Handle        = 0x87C5101D\n\tUTC_E_COMMAND_LINE_NOT_AUTHORIZED                                         Handle        = 0x87C5101E\n\tUTC_E_CANNOT_LOAD_SCENARIO_EDITOR_XML                                     Handle        = 0x87C5101F\n\tUTC_E_ESCALATION_TIMED_OUT                                                Handle        = 0x87C51020\n\tUTC_E_SETUP_TIMED_OUT                                                     Handle        = 0x87C51021\n\tUTC_E_TRIGGER_MISMATCH                                                    Handle        = 0x87C51022\n\tUTC_E_TRIGGER_NOT_FOUND                                                   Handle        = 0x87C51023\n\tUTC_E_SIF_NOT_SUPPORTED                                                   Handle        = 0x87C51024\n\tUTC_E_DELAY_TERMINATED                                                    Handle        = 0x87C51025\n\tUTC_E_DEVICE_TICKET_ERROR                                                 Handle        = 0x87C51026\n\tUTC_E_TRACE_BUFFER_LIMIT_EXCEEDED                                         Handle        = 0x87C51027\n\tUTC_E_API_RESULT_UNAVAILABLE                                              Handle        = 0x87C51028\n\tUTC_E_RPC_TIMEOUT                                                         Handle        = 0x87C51029\n\tUTC_E_RPC_WAIT_FAILED                                                     Handle        = 0x87C5102A\n\tUTC_E_API_BUSY                                                            Handle        = 0x87C5102B\n\tUTC_E_TRACE_MIN_DURATION_REQUIREMENT_NOT_MET                              Handle        = 0x87C5102C\n\tUTC_E_EXCLUSIVITY_NOT_AVAILABLE                                           Handle        = 0x87C5102D\n\tUTC_E_GETFILE_FILE_PATH_NOT_APPROVED                                      Handle        = 0x87C5102E\n\tUTC_E_ESCALATION_DIRECTORY_ALREADY_EXISTS                                 Handle        = 0x87C5102F\n\tUTC_E_TIME_TRIGGER_ON_START_INVALID                                       Handle        = 0x87C51030\n\tUTC_E_TIME_TRIGGER_ONLY_VALID_ON_SINGLE_TRANSITION                        Handle        = 0x87C51031\n\tUTC_E_TIME_TRIGGER_INVALID_TIME_RANGE                                     Handle        = 0x87C51032\n\tUTC_E_MULTIPLE_TIME_TRIGGER_ON_SINGLE_STATE                               Handle        = 0x87C51033\n\tUTC_E_BINARY_MISSING                                                      Handle        = 0x87C51034\n\tUTC_E_NETWORK_CAPTURE_NOT_ALLOWED                                         Handle        = 0x87C51035\n\tUTC_E_FAILED_TO_RESOLVE_CONTAINER_ID                                      Handle        = 0x87C51036\n\tUTC_E_UNABLE_TO_RESOLVE_SESSION                                           Handle        = 0x87C51037\n\tUTC_E_THROTTLED                                                           Handle        = 0x87C51038\n\tUTC_E_UNAPPROVED_SCRIPT                                                   Handle        = 0x87C51039\n\tUTC_E_SCRIPT_MISSING                                                      Handle        = 0x87C5103A\n\tUTC_E_SCENARIO_THROTTLED                                                  Handle        = 0x87C5103B\n\tUTC_E_API_NOT_SUPPORTED                                                   Handle        = 0x87C5103C\n\tUTC_E_GETFILE_EXTERNAL_PATH_NOT_APPROVED                                  Handle        = 0x87C5103D\n\tUTC_E_TRY_GET_SCENARIO_TIMEOUT_EXCEEDED                                   Handle        = 0x87C5103E\n\tUTC_E_CERT_REV_FAILED                                                     Handle        = 0x87C5103F\n\tUTC_E_FAILED_TO_START_NDISCAP                                             Handle        = 0x87C51040\n\tUTC_E_KERNELDUMP_LIMIT_REACHED                                            Handle        = 0x87C51041\n\tUTC_E_MISSING_AGGREGATE_EVENT_TAG                                         Handle        = 0x87C51042\n\tUTC_E_INVALID_AGGREGATION_STRUCT                                          Handle        = 0x87C51043\n\tUTC_E_ACTION_NOT_SUPPORTED_IN_DESTINATION                                 Handle        = 0x87C51044\n\tUTC_E_FILTER_MISSING_ATTRIBUTE                                            Handle        = 0x87C51045\n\tUTC_E_FILTER_INVALID_TYPE                                                 Handle        = 0x87C51046\n\tUTC_E_FILTER_VARIABLE_NOT_FOUND                                           Handle        = 0x87C51047\n\tUTC_E_FILTER_FUNCTION_RESTRICTED                                          Handle        = 0x87C51048\n\tUTC_E_FILTER_VERSION_MISMATCH                                             Handle        = 0x87C51049\n\tUTC_E_FILTER_INVALID_FUNCTION                                             Handle        = 0x87C51050\n\tUTC_E_FILTER_INVALID_FUNCTION_PARAMS                                      Handle        = 0x87C51051\n\tUTC_E_FILTER_INVALID_COMMAND                                              Handle        = 0x87C51052\n\tUTC_E_FILTER_ILLEGAL_EVAL                                                 Handle        = 0x87C51053\n\tUTC_E_TTTRACER_RETURNED_ERROR                                             Handle        = 0x87C51054\n\tUTC_E_AGENT_DIAGNOSTICS_TOO_LARGE                                         Handle        = 0x87C51055\n\tUTC_E_FAILED_TO_RECEIVE_AGENT_DIAGNOSTICS                                 Handle        = 0x87C51056\n\tUTC_E_SCENARIO_HAS_NO_ACTIONS                                             Handle        = 0x87C51057\n\tUTC_E_TTTRACER_STORAGE_FULL                                               Handle        = 0x87C51058\n\tUTC_E_INSUFFICIENT_SPACE_TO_START_TRACE                                   Handle        = 0x87C51059\n\tUTC_E_ESCALATION_CANCELLED_AT_SHUTDOWN                                    Handle        = 0x87C5105A\n\tUTC_E_GETFILEINFOACTION_FILE_NOT_APPROVED                                 Handle        = 0x87C5105B\n\tUTC_E_SETREGKEYACTION_TYPE_NOT_APPROVED                                   Handle        = 0x87C5105C\n\tWINML_ERR_INVALID_DEVICE                                                  Handle        = 0x88900001\n\tWINML_ERR_INVALID_BINDING                                                 Handle        = 0x88900002\n\tWINML_ERR_VALUE_NOTFOUND                                                  Handle        = 0x88900003\n\tWINML_ERR_SIZE_MISMATCH                                                   Handle        = 0x88900004\n\tSTATUS_WAIT_0                                                             NTStatus      = 0x00000000\n\tSTATUS_SUCCESS                                                            NTStatus      = 0x00000000\n\tSTATUS_WAIT_1                                                             NTStatus      = 0x00000001\n\tSTATUS_WAIT_2                                                             NTStatus      = 0x00000002\n\tSTATUS_WAIT_3                                                             NTStatus      = 0x00000003\n\tSTATUS_WAIT_63                                                            NTStatus      = 0x0000003F\n\tSTATUS_ABANDONED                                                          NTStatus      = 0x00000080\n\tSTATUS_ABANDONED_WAIT_0                                                   NTStatus      = 0x00000080\n\tSTATUS_ABANDONED_WAIT_63                                                  NTStatus      = 0x000000BF\n\tSTATUS_USER_APC                                                           NTStatus      = 0x000000C0\n\tSTATUS_ALREADY_COMPLETE                                                   NTStatus      = 0x000000FF\n\tSTATUS_KERNEL_APC                                                         NTStatus      = 0x00000100\n\tSTATUS_ALERTED                                                            NTStatus      = 0x00000101\n\tSTATUS_TIMEOUT                                                            NTStatus      = 0x00000102\n\tSTATUS_PENDING                                                            NTStatus      = 0x00000103\n\tSTATUS_REPARSE                                                            NTStatus      = 0x00000104\n\tSTATUS_MORE_ENTRIES                                                       NTStatus      = 0x00000105\n\tSTATUS_NOT_ALL_ASSIGNED                                                   NTStatus      = 0x00000106\n\tSTATUS_SOME_NOT_MAPPED                                                    NTStatus      = 0x00000107\n\tSTATUS_OPLOCK_BREAK_IN_PROGRESS                                           NTStatus      = 0x00000108\n\tSTATUS_VOLUME_MOUNTED                                                     NTStatus      = 0x00000109\n\tSTATUS_RXACT_COMMITTED                                                    NTStatus      = 0x0000010A\n\tSTATUS_NOTIFY_CLEANUP                                                     NTStatus      = 0x0000010B\n\tSTATUS_NOTIFY_ENUM_DIR                                                    NTStatus      = 0x0000010C\n\tSTATUS_NO_QUOTAS_FOR_ACCOUNT                                              NTStatus      = 0x0000010D\n\tSTATUS_PRIMARY_TRANSPORT_CONNECT_FAILED                                   NTStatus      = 0x0000010E\n\tSTATUS_PAGE_FAULT_TRANSITION                                              NTStatus      = 0x00000110\n\tSTATUS_PAGE_FAULT_DEMAND_ZERO                                             NTStatus      = 0x00000111\n\tSTATUS_PAGE_FAULT_COPY_ON_WRITE                                           NTStatus      = 0x00000112\n\tSTATUS_PAGE_FAULT_GUARD_PAGE                                              NTStatus      = 0x00000113\n\tSTATUS_PAGE_FAULT_PAGING_FILE                                             NTStatus      = 0x00000114\n\tSTATUS_CACHE_PAGE_LOCKED                                                  NTStatus      = 0x00000115\n\tSTATUS_CRASH_DUMP                                                         NTStatus      = 0x00000116\n\tSTATUS_BUFFER_ALL_ZEROS                                                   NTStatus      = 0x00000117\n\tSTATUS_REPARSE_OBJECT                                                     NTStatus      = 0x00000118\n\tSTATUS_RESOURCE_REQUIREMENTS_CHANGED                                      NTStatus      = 0x00000119\n\tSTATUS_TRANSLATION_COMPLETE                                               NTStatus      = 0x00000120\n\tSTATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY                                    NTStatus      = 0x00000121\n\tSTATUS_NOTHING_TO_TERMINATE                                               NTStatus      = 0x00000122\n\tSTATUS_PROCESS_NOT_IN_JOB                                                 NTStatus      = 0x00000123\n\tSTATUS_PROCESS_IN_JOB                                                     NTStatus      = 0x00000124\n\tSTATUS_VOLSNAP_HIBERNATE_READY                                            NTStatus      = 0x00000125\n\tSTATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY                                 NTStatus      = 0x00000126\n\tSTATUS_INTERRUPT_VECTOR_ALREADY_CONNECTED                                 NTStatus      = 0x00000127\n\tSTATUS_INTERRUPT_STILL_CONNECTED                                          NTStatus      = 0x00000128\n\tSTATUS_PROCESS_CLONED                                                     NTStatus      = 0x00000129\n\tSTATUS_FILE_LOCKED_WITH_ONLY_READERS                                      NTStatus      = 0x0000012A\n\tSTATUS_FILE_LOCKED_WITH_WRITERS                                           NTStatus      = 0x0000012B\n\tSTATUS_VALID_IMAGE_HASH                                                   NTStatus      = 0x0000012C\n\tSTATUS_VALID_CATALOG_HASH                                                 NTStatus      = 0x0000012D\n\tSTATUS_VALID_STRONG_CODE_HASH                                             NTStatus      = 0x0000012E\n\tSTATUS_GHOSTED                                                            NTStatus      = 0x0000012F\n\tSTATUS_DATA_OVERWRITTEN                                                   NTStatus      = 0x00000130\n\tSTATUS_RESOURCEMANAGER_READ_ONLY                                          NTStatus      = 0x00000202\n\tSTATUS_RING_PREVIOUSLY_EMPTY                                              NTStatus      = 0x00000210\n\tSTATUS_RING_PREVIOUSLY_FULL                                               NTStatus      = 0x00000211\n\tSTATUS_RING_PREVIOUSLY_ABOVE_QUOTA                                        NTStatus      = 0x00000212\n\tSTATUS_RING_NEWLY_EMPTY                                                   NTStatus      = 0x00000213\n\tSTATUS_RING_SIGNAL_OPPOSITE_ENDPOINT                                      NTStatus      = 0x00000214\n\tSTATUS_OPLOCK_SWITCHED_TO_NEW_HANDLE                                      NTStatus      = 0x00000215\n\tSTATUS_OPLOCK_HANDLE_CLOSED                                               NTStatus      = 0x00000216\n\tSTATUS_WAIT_FOR_OPLOCK                                                    NTStatus      = 0x00000367\n\tSTATUS_REPARSE_GLOBAL                                                     NTStatus      = 0x00000368\n\tSTATUS_FLT_IO_COMPLETE                                                    NTStatus      = 0x001C0001\n\tSTATUS_OBJECT_NAME_EXISTS                                                 NTStatus      = 0x40000000\n\tSTATUS_THREAD_WAS_SUSPENDED                                               NTStatus      = 0x40000001\n\tSTATUS_WORKING_SET_LIMIT_RANGE                                            NTStatus      = 0x40000002\n\tSTATUS_IMAGE_NOT_AT_BASE                                                  NTStatus      = 0x40000003\n\tSTATUS_RXACT_STATE_CREATED                                                NTStatus      = 0x40000004\n\tSTATUS_SEGMENT_NOTIFICATION                                               NTStatus      = 0x40000005\n\tSTATUS_LOCAL_USER_SESSION_KEY                                             NTStatus      = 0x40000006\n\tSTATUS_BAD_CURRENT_DIRECTORY                                              NTStatus      = 0x40000007\n\tSTATUS_SERIAL_MORE_WRITES                                                 NTStatus      = 0x40000008\n\tSTATUS_REGISTRY_RECOVERED                                                 NTStatus      = 0x40000009\n\tSTATUS_FT_READ_RECOVERY_FROM_BACKUP                                       NTStatus      = 0x4000000A\n\tSTATUS_FT_WRITE_RECOVERY                                                  NTStatus      = 0x4000000B\n\tSTATUS_SERIAL_COUNTER_TIMEOUT                                             NTStatus      = 0x4000000C\n\tSTATUS_NULL_LM_PASSWORD                                                   NTStatus      = 0x4000000D\n\tSTATUS_IMAGE_MACHINE_TYPE_MISMATCH                                        NTStatus      = 0x4000000E\n\tSTATUS_RECEIVE_PARTIAL                                                    NTStatus      = 0x4000000F\n\tSTATUS_RECEIVE_EXPEDITED                                                  NTStatus      = 0x40000010\n\tSTATUS_RECEIVE_PARTIAL_EXPEDITED                                          NTStatus      = 0x40000011\n\tSTATUS_EVENT_DONE                                                         NTStatus      = 0x40000012\n\tSTATUS_EVENT_PENDING                                                      NTStatus      = 0x40000013\n\tSTATUS_CHECKING_FILE_SYSTEM                                               NTStatus      = 0x40000014\n\tSTATUS_FATAL_APP_EXIT                                                     NTStatus      = 0x40000015\n\tSTATUS_PREDEFINED_HANDLE                                                  NTStatus      = 0x40000016\n\tSTATUS_WAS_UNLOCKED                                                       NTStatus      = 0x40000017\n\tSTATUS_SERVICE_NOTIFICATION                                               NTStatus      = 0x40000018\n\tSTATUS_WAS_LOCKED                                                         NTStatus      = 0x40000019\n\tSTATUS_LOG_HARD_ERROR                                                     NTStatus      = 0x4000001A\n\tSTATUS_ALREADY_WIN32                                                      NTStatus      = 0x4000001B\n\tSTATUS_WX86_UNSIMULATE                                                    NTStatus      = 0x4000001C\n\tSTATUS_WX86_CONTINUE                                                      NTStatus      = 0x4000001D\n\tSTATUS_WX86_SINGLE_STEP                                                   NTStatus      = 0x4000001E\n\tSTATUS_WX86_BREAKPOINT                                                    NTStatus      = 0x4000001F\n\tSTATUS_WX86_EXCEPTION_CONTINUE                                            NTStatus      = 0x40000020\n\tSTATUS_WX86_EXCEPTION_LASTCHANCE                                          NTStatus      = 0x40000021\n\tSTATUS_WX86_EXCEPTION_CHAIN                                               NTStatus      = 0x40000022\n\tSTATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE                                    NTStatus      = 0x40000023\n\tSTATUS_NO_YIELD_PERFORMED                                                 NTStatus      = 0x40000024\n\tSTATUS_TIMER_RESUME_IGNORED                                               NTStatus      = 0x40000025\n\tSTATUS_ARBITRATION_UNHANDLED                                              NTStatus      = 0x40000026\n\tSTATUS_CARDBUS_NOT_SUPPORTED                                              NTStatus      = 0x40000027\n\tSTATUS_WX86_CREATEWX86TIB                                                 NTStatus      = 0x40000028\n\tSTATUS_MP_PROCESSOR_MISMATCH                                              NTStatus      = 0x40000029\n\tSTATUS_HIBERNATED                                                         NTStatus      = 0x4000002A\n\tSTATUS_RESUME_HIBERNATION                                                 NTStatus      = 0x4000002B\n\tSTATUS_FIRMWARE_UPDATED                                                   NTStatus      = 0x4000002C\n\tSTATUS_DRIVERS_LEAKING_LOCKED_PAGES                                       NTStatus      = 0x4000002D\n\tSTATUS_MESSAGE_RETRIEVED                                                  NTStatus      = 0x4000002E\n\tSTATUS_SYSTEM_POWERSTATE_TRANSITION                                       NTStatus      = 0x4000002F\n\tSTATUS_ALPC_CHECK_COMPLETION_LIST                                         NTStatus      = 0x40000030\n\tSTATUS_SYSTEM_POWERSTATE_COMPLEX_TRANSITION                               NTStatus      = 0x40000031\n\tSTATUS_ACCESS_AUDIT_BY_POLICY                                             NTStatus      = 0x40000032\n\tSTATUS_ABANDON_HIBERFILE                                                  NTStatus      = 0x40000033\n\tSTATUS_BIZRULES_NOT_ENABLED                                               NTStatus      = 0x40000034\n\tSTATUS_FT_READ_FROM_COPY                                                  NTStatus      = 0x40000035\n\tSTATUS_IMAGE_AT_DIFFERENT_BASE                                            NTStatus      = 0x40000036\n\tSTATUS_PATCH_DEFERRED                                                     NTStatus      = 0x40000037\n\tSTATUS_HEURISTIC_DAMAGE_POSSIBLE                                          NTStatus      = 0x40190001\n\tSTATUS_GUARD_PAGE_VIOLATION                                               NTStatus      = 0x80000001\n\tSTATUS_DATATYPE_MISALIGNMENT                                              NTStatus      = 0x80000002\n\tSTATUS_BREAKPOINT                                                         NTStatus      = 0x80000003\n\tSTATUS_SINGLE_STEP                                                        NTStatus      = 0x80000004\n\tSTATUS_BUFFER_OVERFLOW                                                    NTStatus      = 0x80000005\n\tSTATUS_NO_MORE_FILES                                                      NTStatus      = 0x80000006\n\tSTATUS_WAKE_SYSTEM_DEBUGGER                                               NTStatus      = 0x80000007\n\tSTATUS_HANDLES_CLOSED                                                     NTStatus      = 0x8000000A\n\tSTATUS_NO_INHERITANCE                                                     NTStatus      = 0x8000000B\n\tSTATUS_GUID_SUBSTITUTION_MADE                                             NTStatus      = 0x8000000C\n\tSTATUS_PARTIAL_COPY                                                       NTStatus      = 0x8000000D\n\tSTATUS_DEVICE_PAPER_EMPTY                                                 NTStatus      = 0x8000000E\n\tSTATUS_DEVICE_POWERED_OFF                                                 NTStatus      = 0x8000000F\n\tSTATUS_DEVICE_OFF_LINE                                                    NTStatus      = 0x80000010\n\tSTATUS_DEVICE_BUSY                                                        NTStatus      = 0x80000011\n\tSTATUS_NO_MORE_EAS                                                        NTStatus      = 0x80000012\n\tSTATUS_INVALID_EA_NAME                                                    NTStatus      = 0x80000013\n\tSTATUS_EA_LIST_INCONSISTENT                                               NTStatus      = 0x80000014\n\tSTATUS_INVALID_EA_FLAG                                                    NTStatus      = 0x80000015\n\tSTATUS_VERIFY_REQUIRED                                                    NTStatus      = 0x80000016\n\tSTATUS_EXTRANEOUS_INFORMATION                                             NTStatus      = 0x80000017\n\tSTATUS_RXACT_COMMIT_NECESSARY                                             NTStatus      = 0x80000018\n\tSTATUS_NO_MORE_ENTRIES                                                    NTStatus      = 0x8000001A\n\tSTATUS_FILEMARK_DETECTED                                                  NTStatus      = 0x8000001B\n\tSTATUS_MEDIA_CHANGED                                                      NTStatus      = 0x8000001C\n\tSTATUS_BUS_RESET                                                          NTStatus      = 0x8000001D\n\tSTATUS_END_OF_MEDIA                                                       NTStatus      = 0x8000001E\n\tSTATUS_BEGINNING_OF_MEDIA                                                 NTStatus      = 0x8000001F\n\tSTATUS_MEDIA_CHECK                                                        NTStatus      = 0x80000020\n\tSTATUS_SETMARK_DETECTED                                                   NTStatus      = 0x80000021\n\tSTATUS_NO_DATA_DETECTED                                                   NTStatus      = 0x80000022\n\tSTATUS_REDIRECTOR_HAS_OPEN_HANDLES                                        NTStatus      = 0x80000023\n\tSTATUS_SERVER_HAS_OPEN_HANDLES                                            NTStatus      = 0x80000024\n\tSTATUS_ALREADY_DISCONNECTED                                               NTStatus      = 0x80000025\n\tSTATUS_LONGJUMP                                                           NTStatus      = 0x80000026\n\tSTATUS_CLEANER_CARTRIDGE_INSTALLED                                        NTStatus      = 0x80000027\n\tSTATUS_PLUGPLAY_QUERY_VETOED                                              NTStatus      = 0x80000028\n\tSTATUS_UNWIND_CONSOLIDATE                                                 NTStatus      = 0x80000029\n\tSTATUS_REGISTRY_HIVE_RECOVERED                                            NTStatus      = 0x8000002A\n\tSTATUS_DLL_MIGHT_BE_INSECURE                                              NTStatus      = 0x8000002B\n\tSTATUS_DLL_MIGHT_BE_INCOMPATIBLE                                          NTStatus      = 0x8000002C\n\tSTATUS_STOPPED_ON_SYMLINK                                                 NTStatus      = 0x8000002D\n\tSTATUS_CANNOT_GRANT_REQUESTED_OPLOCK                                      NTStatus      = 0x8000002E\n\tSTATUS_NO_ACE_CONDITION                                                   NTStatus      = 0x8000002F\n\tSTATUS_DEVICE_SUPPORT_IN_PROGRESS                                         NTStatus      = 0x80000030\n\tSTATUS_DEVICE_POWER_CYCLE_REQUIRED                                        NTStatus      = 0x80000031\n\tSTATUS_NO_WORK_DONE                                                       NTStatus      = 0x80000032\n\tSTATUS_CLUSTER_NODE_ALREADY_UP                                            NTStatus      = 0x80130001\n\tSTATUS_CLUSTER_NODE_ALREADY_DOWN                                          NTStatus      = 0x80130002\n\tSTATUS_CLUSTER_NETWORK_ALREADY_ONLINE                                     NTStatus      = 0x80130003\n\tSTATUS_CLUSTER_NETWORK_ALREADY_OFFLINE                                    NTStatus      = 0x80130004\n\tSTATUS_CLUSTER_NODE_ALREADY_MEMBER                                        NTStatus      = 0x80130005\n\tSTATUS_FLT_BUFFER_TOO_SMALL                                               NTStatus      = 0x801C0001\n\tSTATUS_FVE_PARTIAL_METADATA                                               NTStatus      = 0x80210001\n\tSTATUS_FVE_TRANSIENT_STATE                                                NTStatus      = 0x80210002\n\tSTATUS_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH                         NTStatus      = 0x8000CF00\n\tSTATUS_UNSUCCESSFUL                                                       NTStatus      = 0xC0000001\n\tSTATUS_NOT_IMPLEMENTED                                                    NTStatus      = 0xC0000002\n\tSTATUS_INVALID_INFO_CLASS                                                 NTStatus      = 0xC0000003\n\tSTATUS_INFO_LENGTH_MISMATCH                                               NTStatus      = 0xC0000004\n\tSTATUS_ACCESS_VIOLATION                                                   NTStatus      = 0xC0000005\n\tSTATUS_IN_PAGE_ERROR                                                      NTStatus      = 0xC0000006\n\tSTATUS_PAGEFILE_QUOTA                                                     NTStatus      = 0xC0000007\n\tSTATUS_INVALID_HANDLE                                                     NTStatus      = 0xC0000008\n\tSTATUS_BAD_INITIAL_STACK                                                  NTStatus      = 0xC0000009\n\tSTATUS_BAD_INITIAL_PC                                                     NTStatus      = 0xC000000A\n\tSTATUS_INVALID_CID                                                        NTStatus      = 0xC000000B\n\tSTATUS_TIMER_NOT_CANCELED                                                 NTStatus      = 0xC000000C\n\tSTATUS_INVALID_PARAMETER                                                  NTStatus      = 0xC000000D\n\tSTATUS_NO_SUCH_DEVICE                                                     NTStatus      = 0xC000000E\n\tSTATUS_NO_SUCH_FILE                                                       NTStatus      = 0xC000000F\n\tSTATUS_INVALID_DEVICE_REQUEST                                             NTStatus      = 0xC0000010\n\tSTATUS_END_OF_FILE                                                        NTStatus      = 0xC0000011\n\tSTATUS_WRONG_VOLUME                                                       NTStatus      = 0xC0000012\n\tSTATUS_NO_MEDIA_IN_DEVICE                                                 NTStatus      = 0xC0000013\n\tSTATUS_UNRECOGNIZED_MEDIA                                                 NTStatus      = 0xC0000014\n\tSTATUS_NONEXISTENT_SECTOR                                                 NTStatus      = 0xC0000015\n\tSTATUS_MORE_PROCESSING_REQUIRED                                           NTStatus      = 0xC0000016\n\tSTATUS_NO_MEMORY                                                          NTStatus      = 0xC0000017\n\tSTATUS_CONFLICTING_ADDRESSES                                              NTStatus      = 0xC0000018\n\tSTATUS_NOT_MAPPED_VIEW                                                    NTStatus      = 0xC0000019\n\tSTATUS_UNABLE_TO_FREE_VM                                                  NTStatus      = 0xC000001A\n\tSTATUS_UNABLE_TO_DELETE_SECTION                                           NTStatus      = 0xC000001B\n\tSTATUS_INVALID_SYSTEM_SERVICE                                             NTStatus      = 0xC000001C\n\tSTATUS_ILLEGAL_INSTRUCTION                                                NTStatus      = 0xC000001D\n\tSTATUS_INVALID_LOCK_SEQUENCE                                              NTStatus      = 0xC000001E\n\tSTATUS_INVALID_VIEW_SIZE                                                  NTStatus      = 0xC000001F\n\tSTATUS_INVALID_FILE_FOR_SECTION                                           NTStatus      = 0xC0000020\n\tSTATUS_ALREADY_COMMITTED                                                  NTStatus      = 0xC0000021\n\tSTATUS_ACCESS_DENIED                                                      NTStatus      = 0xC0000022\n\tSTATUS_BUFFER_TOO_SMALL                                                   NTStatus      = 0xC0000023\n\tSTATUS_OBJECT_TYPE_MISMATCH                                               NTStatus      = 0xC0000024\n\tSTATUS_NONCONTINUABLE_EXCEPTION                                           NTStatus      = 0xC0000025\n\tSTATUS_INVALID_DISPOSITION                                                NTStatus      = 0xC0000026\n\tSTATUS_UNWIND                                                             NTStatus      = 0xC0000027\n\tSTATUS_BAD_STACK                                                          NTStatus      = 0xC0000028\n\tSTATUS_INVALID_UNWIND_TARGET                                              NTStatus      = 0xC0000029\n\tSTATUS_NOT_LOCKED                                                         NTStatus      = 0xC000002A\n\tSTATUS_PARITY_ERROR                                                       NTStatus      = 0xC000002B\n\tSTATUS_UNABLE_TO_DECOMMIT_VM                                              NTStatus      = 0xC000002C\n\tSTATUS_NOT_COMMITTED                                                      NTStatus      = 0xC000002D\n\tSTATUS_INVALID_PORT_ATTRIBUTES                                            NTStatus      = 0xC000002E\n\tSTATUS_PORT_MESSAGE_TOO_LONG                                              NTStatus      = 0xC000002F\n\tSTATUS_INVALID_PARAMETER_MIX                                              NTStatus      = 0xC0000030\n\tSTATUS_INVALID_QUOTA_LOWER                                                NTStatus      = 0xC0000031\n\tSTATUS_DISK_CORRUPT_ERROR                                                 NTStatus      = 0xC0000032\n\tSTATUS_OBJECT_NAME_INVALID                                                NTStatus      = 0xC0000033\n\tSTATUS_OBJECT_NAME_NOT_FOUND                                              NTStatus      = 0xC0000034\n\tSTATUS_OBJECT_NAME_COLLISION                                              NTStatus      = 0xC0000035\n\tSTATUS_PORT_DO_NOT_DISTURB                                                NTStatus      = 0xC0000036\n\tSTATUS_PORT_DISCONNECTED                                                  NTStatus      = 0xC0000037\n\tSTATUS_DEVICE_ALREADY_ATTACHED                                            NTStatus      = 0xC0000038\n\tSTATUS_OBJECT_PATH_INVALID                                                NTStatus      = 0xC0000039\n\tSTATUS_OBJECT_PATH_NOT_FOUND                                              NTStatus      = 0xC000003A\n\tSTATUS_OBJECT_PATH_SYNTAX_BAD                                             NTStatus      = 0xC000003B\n\tSTATUS_DATA_OVERRUN                                                       NTStatus      = 0xC000003C\n\tSTATUS_DATA_LATE_ERROR                                                    NTStatus      = 0xC000003D\n\tSTATUS_DATA_ERROR                                                         NTStatus      = 0xC000003E\n\tSTATUS_CRC_ERROR                                                          NTStatus      = 0xC000003F\n\tSTATUS_SECTION_TOO_BIG                                                    NTStatus      = 0xC0000040\n\tSTATUS_PORT_CONNECTION_REFUSED                                            NTStatus      = 0xC0000041\n\tSTATUS_INVALID_PORT_HANDLE                                                NTStatus      = 0xC0000042\n\tSTATUS_SHARING_VIOLATION                                                  NTStatus      = 0xC0000043\n\tSTATUS_QUOTA_EXCEEDED                                                     NTStatus      = 0xC0000044\n\tSTATUS_INVALID_PAGE_PROTECTION                                            NTStatus      = 0xC0000045\n\tSTATUS_MUTANT_NOT_OWNED                                                   NTStatus      = 0xC0000046\n\tSTATUS_SEMAPHORE_LIMIT_EXCEEDED                                           NTStatus      = 0xC0000047\n\tSTATUS_PORT_ALREADY_SET                                                   NTStatus      = 0xC0000048\n\tSTATUS_SECTION_NOT_IMAGE                                                  NTStatus      = 0xC0000049\n\tSTATUS_SUSPEND_COUNT_EXCEEDED                                             NTStatus      = 0xC000004A\n\tSTATUS_THREAD_IS_TERMINATING                                              NTStatus      = 0xC000004B\n\tSTATUS_BAD_WORKING_SET_LIMIT                                              NTStatus      = 0xC000004C\n\tSTATUS_INCOMPATIBLE_FILE_MAP                                              NTStatus      = 0xC000004D\n\tSTATUS_SECTION_PROTECTION                                                 NTStatus      = 0xC000004E\n\tSTATUS_EAS_NOT_SUPPORTED                                                  NTStatus      = 0xC000004F\n\tSTATUS_EA_TOO_LARGE                                                       NTStatus      = 0xC0000050\n\tSTATUS_NONEXISTENT_EA_ENTRY                                               NTStatus      = 0xC0000051\n\tSTATUS_NO_EAS_ON_FILE                                                     NTStatus      = 0xC0000052\n\tSTATUS_EA_CORRUPT_ERROR                                                   NTStatus      = 0xC0000053\n\tSTATUS_FILE_LOCK_CONFLICT                                                 NTStatus      = 0xC0000054\n\tSTATUS_LOCK_NOT_GRANTED                                                   NTStatus      = 0xC0000055\n\tSTATUS_DELETE_PENDING                                                     NTStatus      = 0xC0000056\n\tSTATUS_CTL_FILE_NOT_SUPPORTED                                             NTStatus      = 0xC0000057\n\tSTATUS_UNKNOWN_REVISION                                                   NTStatus      = 0xC0000058\n\tSTATUS_REVISION_MISMATCH                                                  NTStatus      = 0xC0000059\n\tSTATUS_INVALID_OWNER                                                      NTStatus      = 0xC000005A\n\tSTATUS_INVALID_PRIMARY_GROUP                                              NTStatus      = 0xC000005B\n\tSTATUS_NO_IMPERSONATION_TOKEN                                             NTStatus      = 0xC000005C\n\tSTATUS_CANT_DISABLE_MANDATORY                                             NTStatus      = 0xC000005D\n\tSTATUS_NO_LOGON_SERVERS                                                   NTStatus      = 0xC000005E\n\tSTATUS_NO_SUCH_LOGON_SESSION                                              NTStatus      = 0xC000005F\n\tSTATUS_NO_SUCH_PRIVILEGE                                                  NTStatus      = 0xC0000060\n\tSTATUS_PRIVILEGE_NOT_HELD                                                 NTStatus      = 0xC0000061\n\tSTATUS_INVALID_ACCOUNT_NAME                                               NTStatus      = 0xC0000062\n\tSTATUS_USER_EXISTS                                                        NTStatus      = 0xC0000063\n\tSTATUS_NO_SUCH_USER                                                       NTStatus      = 0xC0000064\n\tSTATUS_GROUP_EXISTS                                                       NTStatus      = 0xC0000065\n\tSTATUS_NO_SUCH_GROUP                                                      NTStatus      = 0xC0000066\n\tSTATUS_MEMBER_IN_GROUP                                                    NTStatus      = 0xC0000067\n\tSTATUS_MEMBER_NOT_IN_GROUP                                                NTStatus      = 0xC0000068\n\tSTATUS_LAST_ADMIN                                                         NTStatus      = 0xC0000069\n\tSTATUS_WRONG_PASSWORD                                                     NTStatus      = 0xC000006A\n\tSTATUS_ILL_FORMED_PASSWORD                                                NTStatus      = 0xC000006B\n\tSTATUS_PASSWORD_RESTRICTION                                               NTStatus      = 0xC000006C\n\tSTATUS_LOGON_FAILURE                                                      NTStatus      = 0xC000006D\n\tSTATUS_ACCOUNT_RESTRICTION                                                NTStatus      = 0xC000006E\n\tSTATUS_INVALID_LOGON_HOURS                                                NTStatus      = 0xC000006F\n\tSTATUS_INVALID_WORKSTATION                                                NTStatus      = 0xC0000070\n\tSTATUS_PASSWORD_EXPIRED                                                   NTStatus      = 0xC0000071\n\tSTATUS_ACCOUNT_DISABLED                                                   NTStatus      = 0xC0000072\n\tSTATUS_NONE_MAPPED                                                        NTStatus      = 0xC0000073\n\tSTATUS_TOO_MANY_LUIDS_REQUESTED                                           NTStatus      = 0xC0000074\n\tSTATUS_LUIDS_EXHAUSTED                                                    NTStatus      = 0xC0000075\n\tSTATUS_INVALID_SUB_AUTHORITY                                              NTStatus      = 0xC0000076\n\tSTATUS_INVALID_ACL                                                        NTStatus      = 0xC0000077\n\tSTATUS_INVALID_SID                                                        NTStatus      = 0xC0000078\n\tSTATUS_INVALID_SECURITY_DESCR                                             NTStatus      = 0xC0000079\n\tSTATUS_PROCEDURE_NOT_FOUND                                                NTStatus      = 0xC000007A\n\tSTATUS_INVALID_IMAGE_FORMAT                                               NTStatus      = 0xC000007B\n\tSTATUS_NO_TOKEN                                                           NTStatus      = 0xC000007C\n\tSTATUS_BAD_INHERITANCE_ACL                                                NTStatus      = 0xC000007D\n\tSTATUS_RANGE_NOT_LOCKED                                                   NTStatus      = 0xC000007E\n\tSTATUS_DISK_FULL                                                          NTStatus      = 0xC000007F\n\tSTATUS_SERVER_DISABLED                                                    NTStatus      = 0xC0000080\n\tSTATUS_SERVER_NOT_DISABLED                                                NTStatus      = 0xC0000081\n\tSTATUS_TOO_MANY_GUIDS_REQUESTED                                           NTStatus      = 0xC0000082\n\tSTATUS_GUIDS_EXHAUSTED                                                    NTStatus      = 0xC0000083\n\tSTATUS_INVALID_ID_AUTHORITY                                               NTStatus      = 0xC0000084\n\tSTATUS_AGENTS_EXHAUSTED                                                   NTStatus      = 0xC0000085\n\tSTATUS_INVALID_VOLUME_LABEL                                               NTStatus      = 0xC0000086\n\tSTATUS_SECTION_NOT_EXTENDED                                               NTStatus      = 0xC0000087\n\tSTATUS_NOT_MAPPED_DATA                                                    NTStatus      = 0xC0000088\n\tSTATUS_RESOURCE_DATA_NOT_FOUND                                            NTStatus      = 0xC0000089\n\tSTATUS_RESOURCE_TYPE_NOT_FOUND                                            NTStatus      = 0xC000008A\n\tSTATUS_RESOURCE_NAME_NOT_FOUND                                            NTStatus      = 0xC000008B\n\tSTATUS_ARRAY_BOUNDS_EXCEEDED                                              NTStatus      = 0xC000008C\n\tSTATUS_FLOAT_DENORMAL_OPERAND                                             NTStatus      = 0xC000008D\n\tSTATUS_FLOAT_DIVIDE_BY_ZERO                                               NTStatus      = 0xC000008E\n\tSTATUS_FLOAT_INEXACT_RESULT                                               NTStatus      = 0xC000008F\n\tSTATUS_FLOAT_INVALID_OPERATION                                            NTStatus      = 0xC0000090\n\tSTATUS_FLOAT_OVERFLOW                                                     NTStatus      = 0xC0000091\n\tSTATUS_FLOAT_STACK_CHECK                                                  NTStatus      = 0xC0000092\n\tSTATUS_FLOAT_UNDERFLOW                                                    NTStatus      = 0xC0000093\n\tSTATUS_INTEGER_DIVIDE_BY_ZERO                                             NTStatus      = 0xC0000094\n\tSTATUS_INTEGER_OVERFLOW                                                   NTStatus      = 0xC0000095\n\tSTATUS_PRIVILEGED_INSTRUCTION                                             NTStatus      = 0xC0000096\n\tSTATUS_TOO_MANY_PAGING_FILES                                              NTStatus      = 0xC0000097\n\tSTATUS_FILE_INVALID                                                       NTStatus      = 0xC0000098\n\tSTATUS_ALLOTTED_SPACE_EXCEEDED                                            NTStatus      = 0xC0000099\n\tSTATUS_INSUFFICIENT_RESOURCES                                             NTStatus      = 0xC000009A\n\tSTATUS_DFS_EXIT_PATH_FOUND                                                NTStatus      = 0xC000009B\n\tSTATUS_DEVICE_DATA_ERROR                                                  NTStatus      = 0xC000009C\n\tSTATUS_DEVICE_NOT_CONNECTED                                               NTStatus      = 0xC000009D\n\tSTATUS_DEVICE_POWER_FAILURE                                               NTStatus      = 0xC000009E\n\tSTATUS_FREE_VM_NOT_AT_BASE                                                NTStatus      = 0xC000009F\n\tSTATUS_MEMORY_NOT_ALLOCATED                                               NTStatus      = 0xC00000A0\n\tSTATUS_WORKING_SET_QUOTA                                                  NTStatus      = 0xC00000A1\n\tSTATUS_MEDIA_WRITE_PROTECTED                                              NTStatus      = 0xC00000A2\n\tSTATUS_DEVICE_NOT_READY                                                   NTStatus      = 0xC00000A3\n\tSTATUS_INVALID_GROUP_ATTRIBUTES                                           NTStatus      = 0xC00000A4\n\tSTATUS_BAD_IMPERSONATION_LEVEL                                            NTStatus      = 0xC00000A5\n\tSTATUS_CANT_OPEN_ANONYMOUS                                                NTStatus      = 0xC00000A6\n\tSTATUS_BAD_VALIDATION_CLASS                                               NTStatus      = 0xC00000A7\n\tSTATUS_BAD_TOKEN_TYPE                                                     NTStatus      = 0xC00000A8\n\tSTATUS_BAD_MASTER_BOOT_RECORD                                             NTStatus      = 0xC00000A9\n\tSTATUS_INSTRUCTION_MISALIGNMENT                                           NTStatus      = 0xC00000AA\n\tSTATUS_INSTANCE_NOT_AVAILABLE                                             NTStatus      = 0xC00000AB\n\tSTATUS_PIPE_NOT_AVAILABLE                                                 NTStatus      = 0xC00000AC\n\tSTATUS_INVALID_PIPE_STATE                                                 NTStatus      = 0xC00000AD\n\tSTATUS_PIPE_BUSY                                                          NTStatus      = 0xC00000AE\n\tSTATUS_ILLEGAL_FUNCTION                                                   NTStatus      = 0xC00000AF\n\tSTATUS_PIPE_DISCONNECTED                                                  NTStatus      = 0xC00000B0\n\tSTATUS_PIPE_CLOSING                                                       NTStatus      = 0xC00000B1\n\tSTATUS_PIPE_CONNECTED                                                     NTStatus      = 0xC00000B2\n\tSTATUS_PIPE_LISTENING                                                     NTStatus      = 0xC00000B3\n\tSTATUS_INVALID_READ_MODE                                                  NTStatus      = 0xC00000B4\n\tSTATUS_IO_TIMEOUT                                                         NTStatus      = 0xC00000B5\n\tSTATUS_FILE_FORCED_CLOSED                                                 NTStatus      = 0xC00000B6\n\tSTATUS_PROFILING_NOT_STARTED                                              NTStatus      = 0xC00000B7\n\tSTATUS_PROFILING_NOT_STOPPED                                              NTStatus      = 0xC00000B8\n\tSTATUS_COULD_NOT_INTERPRET                                                NTStatus      = 0xC00000B9\n\tSTATUS_FILE_IS_A_DIRECTORY                                                NTStatus      = 0xC00000BA\n\tSTATUS_NOT_SUPPORTED                                                      NTStatus      = 0xC00000BB\n\tSTATUS_REMOTE_NOT_LISTENING                                               NTStatus      = 0xC00000BC\n\tSTATUS_DUPLICATE_NAME                                                     NTStatus      = 0xC00000BD\n\tSTATUS_BAD_NETWORK_PATH                                                   NTStatus      = 0xC00000BE\n\tSTATUS_NETWORK_BUSY                                                       NTStatus      = 0xC00000BF\n\tSTATUS_DEVICE_DOES_NOT_EXIST                                              NTStatus      = 0xC00000C0\n\tSTATUS_TOO_MANY_COMMANDS                                                  NTStatus      = 0xC00000C1\n\tSTATUS_ADAPTER_HARDWARE_ERROR                                             NTStatus      = 0xC00000C2\n\tSTATUS_INVALID_NETWORK_RESPONSE                                           NTStatus      = 0xC00000C3\n\tSTATUS_UNEXPECTED_NETWORK_ERROR                                           NTStatus      = 0xC00000C4\n\tSTATUS_BAD_REMOTE_ADAPTER                                                 NTStatus      = 0xC00000C5\n\tSTATUS_PRINT_QUEUE_FULL                                                   NTStatus      = 0xC00000C6\n\tSTATUS_NO_SPOOL_SPACE                                                     NTStatus      = 0xC00000C7\n\tSTATUS_PRINT_CANCELLED                                                    NTStatus      = 0xC00000C8\n\tSTATUS_NETWORK_NAME_DELETED                                               NTStatus      = 0xC00000C9\n\tSTATUS_NETWORK_ACCESS_DENIED                                              NTStatus      = 0xC00000CA\n\tSTATUS_BAD_DEVICE_TYPE                                                    NTStatus      = 0xC00000CB\n\tSTATUS_BAD_NETWORK_NAME                                                   NTStatus      = 0xC00000CC\n\tSTATUS_TOO_MANY_NAMES                                                     NTStatus      = 0xC00000CD\n\tSTATUS_TOO_MANY_SESSIONS                                                  NTStatus      = 0xC00000CE\n\tSTATUS_SHARING_PAUSED                                                     NTStatus      = 0xC00000CF\n\tSTATUS_REQUEST_NOT_ACCEPTED                                               NTStatus      = 0xC00000D0\n\tSTATUS_REDIRECTOR_PAUSED                                                  NTStatus      = 0xC00000D1\n\tSTATUS_NET_WRITE_FAULT                                                    NTStatus      = 0xC00000D2\n\tSTATUS_PROFILING_AT_LIMIT                                                 NTStatus      = 0xC00000D3\n\tSTATUS_NOT_SAME_DEVICE                                                    NTStatus      = 0xC00000D4\n\tSTATUS_FILE_RENAMED                                                       NTStatus      = 0xC00000D5\n\tSTATUS_VIRTUAL_CIRCUIT_CLOSED                                             NTStatus      = 0xC00000D6\n\tSTATUS_NO_SECURITY_ON_OBJECT                                              NTStatus      = 0xC00000D7\n\tSTATUS_CANT_WAIT                                                          NTStatus      = 0xC00000D8\n\tSTATUS_PIPE_EMPTY                                                         NTStatus      = 0xC00000D9\n\tSTATUS_CANT_ACCESS_DOMAIN_INFO                                            NTStatus      = 0xC00000DA\n\tSTATUS_CANT_TERMINATE_SELF                                                NTStatus      = 0xC00000DB\n\tSTATUS_INVALID_SERVER_STATE                                               NTStatus      = 0xC00000DC\n\tSTATUS_INVALID_DOMAIN_STATE                                               NTStatus      = 0xC00000DD\n\tSTATUS_INVALID_DOMAIN_ROLE                                                NTStatus      = 0xC00000DE\n\tSTATUS_NO_SUCH_DOMAIN                                                     NTStatus      = 0xC00000DF\n\tSTATUS_DOMAIN_EXISTS                                                      NTStatus      = 0xC00000E0\n\tSTATUS_DOMAIN_LIMIT_EXCEEDED                                              NTStatus      = 0xC00000E1\n\tSTATUS_OPLOCK_NOT_GRANTED                                                 NTStatus      = 0xC00000E2\n\tSTATUS_INVALID_OPLOCK_PROTOCOL                                            NTStatus      = 0xC00000E3\n\tSTATUS_INTERNAL_DB_CORRUPTION                                             NTStatus      = 0xC00000E4\n\tSTATUS_INTERNAL_ERROR                                                     NTStatus      = 0xC00000E5\n\tSTATUS_GENERIC_NOT_MAPPED                                                 NTStatus      = 0xC00000E6\n\tSTATUS_BAD_DESCRIPTOR_FORMAT                                              NTStatus      = 0xC00000E7\n\tSTATUS_INVALID_USER_BUFFER                                                NTStatus      = 0xC00000E8\n\tSTATUS_UNEXPECTED_IO_ERROR                                                NTStatus      = 0xC00000E9\n\tSTATUS_UNEXPECTED_MM_CREATE_ERR                                           NTStatus      = 0xC00000EA\n\tSTATUS_UNEXPECTED_MM_MAP_ERROR                                            NTStatus      = 0xC00000EB\n\tSTATUS_UNEXPECTED_MM_EXTEND_ERR                                           NTStatus      = 0xC00000EC\n\tSTATUS_NOT_LOGON_PROCESS                                                  NTStatus      = 0xC00000ED\n\tSTATUS_LOGON_SESSION_EXISTS                                               NTStatus      = 0xC00000EE\n\tSTATUS_INVALID_PARAMETER_1                                                NTStatus      = 0xC00000EF\n\tSTATUS_INVALID_PARAMETER_2                                                NTStatus      = 0xC00000F0\n\tSTATUS_INVALID_PARAMETER_3                                                NTStatus      = 0xC00000F1\n\tSTATUS_INVALID_PARAMETER_4                                                NTStatus      = 0xC00000F2\n\tSTATUS_INVALID_PARAMETER_5                                                NTStatus      = 0xC00000F3\n\tSTATUS_INVALID_PARAMETER_6                                                NTStatus      = 0xC00000F4\n\tSTATUS_INVALID_PARAMETER_7                                                NTStatus      = 0xC00000F5\n\tSTATUS_INVALID_PARAMETER_8                                                NTStatus      = 0xC00000F6\n\tSTATUS_INVALID_PARAMETER_9                                                NTStatus      = 0xC00000F7\n\tSTATUS_INVALID_PARAMETER_10                                               NTStatus      = 0xC00000F8\n\tSTATUS_INVALID_PARAMETER_11                                               NTStatus      = 0xC00000F9\n\tSTATUS_INVALID_PARAMETER_12                                               NTStatus      = 0xC00000FA\n\tSTATUS_REDIRECTOR_NOT_STARTED                                             NTStatus      = 0xC00000FB\n\tSTATUS_REDIRECTOR_STARTED                                                 NTStatus      = 0xC00000FC\n\tSTATUS_STACK_OVERFLOW                                                     NTStatus      = 0xC00000FD\n\tSTATUS_NO_SUCH_PACKAGE                                                    NTStatus      = 0xC00000FE\n\tSTATUS_BAD_FUNCTION_TABLE                                                 NTStatus      = 0xC00000FF\n\tSTATUS_VARIABLE_NOT_FOUND                                                 NTStatus      = 0xC0000100\n\tSTATUS_DIRECTORY_NOT_EMPTY                                                NTStatus      = 0xC0000101\n\tSTATUS_FILE_CORRUPT_ERROR                                                 NTStatus      = 0xC0000102\n\tSTATUS_NOT_A_DIRECTORY                                                    NTStatus      = 0xC0000103\n\tSTATUS_BAD_LOGON_SESSION_STATE                                            NTStatus      = 0xC0000104\n\tSTATUS_LOGON_SESSION_COLLISION                                            NTStatus      = 0xC0000105\n\tSTATUS_NAME_TOO_LONG                                                      NTStatus      = 0xC0000106\n\tSTATUS_FILES_OPEN                                                         NTStatus      = 0xC0000107\n\tSTATUS_CONNECTION_IN_USE                                                  NTStatus      = 0xC0000108\n\tSTATUS_MESSAGE_NOT_FOUND                                                  NTStatus      = 0xC0000109\n\tSTATUS_PROCESS_IS_TERMINATING                                             NTStatus      = 0xC000010A\n\tSTATUS_INVALID_LOGON_TYPE                                                 NTStatus      = 0xC000010B\n\tSTATUS_NO_GUID_TRANSLATION                                                NTStatus      = 0xC000010C\n\tSTATUS_CANNOT_IMPERSONATE                                                 NTStatus      = 0xC000010D\n\tSTATUS_IMAGE_ALREADY_LOADED                                               NTStatus      = 0xC000010E\n\tSTATUS_ABIOS_NOT_PRESENT                                                  NTStatus      = 0xC000010F\n\tSTATUS_ABIOS_LID_NOT_EXIST                                                NTStatus      = 0xC0000110\n\tSTATUS_ABIOS_LID_ALREADY_OWNED                                            NTStatus      = 0xC0000111\n\tSTATUS_ABIOS_NOT_LID_OWNER                                                NTStatus      = 0xC0000112\n\tSTATUS_ABIOS_INVALID_COMMAND                                              NTStatus      = 0xC0000113\n\tSTATUS_ABIOS_INVALID_LID                                                  NTStatus      = 0xC0000114\n\tSTATUS_ABIOS_SELECTOR_NOT_AVAILABLE                                       NTStatus      = 0xC0000115\n\tSTATUS_ABIOS_INVALID_SELECTOR                                             NTStatus      = 0xC0000116\n\tSTATUS_NO_LDT                                                             NTStatus      = 0xC0000117\n\tSTATUS_INVALID_LDT_SIZE                                                   NTStatus      = 0xC0000118\n\tSTATUS_INVALID_LDT_OFFSET                                                 NTStatus      = 0xC0000119\n\tSTATUS_INVALID_LDT_DESCRIPTOR                                             NTStatus      = 0xC000011A\n\tSTATUS_INVALID_IMAGE_NE_FORMAT                                            NTStatus      = 0xC000011B\n\tSTATUS_RXACT_INVALID_STATE                                                NTStatus      = 0xC000011C\n\tSTATUS_RXACT_COMMIT_FAILURE                                               NTStatus      = 0xC000011D\n\tSTATUS_MAPPED_FILE_SIZE_ZERO                                              NTStatus      = 0xC000011E\n\tSTATUS_TOO_MANY_OPENED_FILES                                              NTStatus      = 0xC000011F\n\tSTATUS_CANCELLED                                                          NTStatus      = 0xC0000120\n\tSTATUS_CANNOT_DELETE                                                      NTStatus      = 0xC0000121\n\tSTATUS_INVALID_COMPUTER_NAME                                              NTStatus      = 0xC0000122\n\tSTATUS_FILE_DELETED                                                       NTStatus      = 0xC0000123\n\tSTATUS_SPECIAL_ACCOUNT                                                    NTStatus      = 0xC0000124\n\tSTATUS_SPECIAL_GROUP                                                      NTStatus      = 0xC0000125\n\tSTATUS_SPECIAL_USER                                                       NTStatus      = 0xC0000126\n\tSTATUS_MEMBERS_PRIMARY_GROUP                                              NTStatus      = 0xC0000127\n\tSTATUS_FILE_CLOSED                                                        NTStatus      = 0xC0000128\n\tSTATUS_TOO_MANY_THREADS                                                   NTStatus      = 0xC0000129\n\tSTATUS_THREAD_NOT_IN_PROCESS                                              NTStatus      = 0xC000012A\n\tSTATUS_TOKEN_ALREADY_IN_USE                                               NTStatus      = 0xC000012B\n\tSTATUS_PAGEFILE_QUOTA_EXCEEDED                                            NTStatus      = 0xC000012C\n\tSTATUS_COMMITMENT_LIMIT                                                   NTStatus      = 0xC000012D\n\tSTATUS_INVALID_IMAGE_LE_FORMAT                                            NTStatus      = 0xC000012E\n\tSTATUS_INVALID_IMAGE_NOT_MZ                                               NTStatus      = 0xC000012F\n\tSTATUS_INVALID_IMAGE_PROTECT                                              NTStatus      = 0xC0000130\n\tSTATUS_INVALID_IMAGE_WIN_16                                               NTStatus      = 0xC0000131\n\tSTATUS_LOGON_SERVER_CONFLICT                                              NTStatus      = 0xC0000132\n\tSTATUS_TIME_DIFFERENCE_AT_DC                                              NTStatus      = 0xC0000133\n\tSTATUS_SYNCHRONIZATION_REQUIRED                                           NTStatus      = 0xC0000134\n\tSTATUS_DLL_NOT_FOUND                                                      NTStatus      = 0xC0000135\n\tSTATUS_OPEN_FAILED                                                        NTStatus      = 0xC0000136\n\tSTATUS_IO_PRIVILEGE_FAILED                                                NTStatus      = 0xC0000137\n\tSTATUS_ORDINAL_NOT_FOUND                                                  NTStatus      = 0xC0000138\n\tSTATUS_ENTRYPOINT_NOT_FOUND                                               NTStatus      = 0xC0000139\n\tSTATUS_CONTROL_C_EXIT                                                     NTStatus      = 0xC000013A\n\tSTATUS_LOCAL_DISCONNECT                                                   NTStatus      = 0xC000013B\n\tSTATUS_REMOTE_DISCONNECT                                                  NTStatus      = 0xC000013C\n\tSTATUS_REMOTE_RESOURCES                                                   NTStatus      = 0xC000013D\n\tSTATUS_LINK_FAILED                                                        NTStatus      = 0xC000013E\n\tSTATUS_LINK_TIMEOUT                                                       NTStatus      = 0xC000013F\n\tSTATUS_INVALID_CONNECTION                                                 NTStatus      = 0xC0000140\n\tSTATUS_INVALID_ADDRESS                                                    NTStatus      = 0xC0000141\n\tSTATUS_DLL_INIT_FAILED                                                    NTStatus      = 0xC0000142\n\tSTATUS_MISSING_SYSTEMFILE                                                 NTStatus      = 0xC0000143\n\tSTATUS_UNHANDLED_EXCEPTION                                                NTStatus      = 0xC0000144\n\tSTATUS_APP_INIT_FAILURE                                                   NTStatus      = 0xC0000145\n\tSTATUS_PAGEFILE_CREATE_FAILED                                             NTStatus      = 0xC0000146\n\tSTATUS_NO_PAGEFILE                                                        NTStatus      = 0xC0000147\n\tSTATUS_INVALID_LEVEL                                                      NTStatus      = 0xC0000148\n\tSTATUS_WRONG_PASSWORD_CORE                                                NTStatus      = 0xC0000149\n\tSTATUS_ILLEGAL_FLOAT_CONTEXT                                              NTStatus      = 0xC000014A\n\tSTATUS_PIPE_BROKEN                                                        NTStatus      = 0xC000014B\n\tSTATUS_REGISTRY_CORRUPT                                                   NTStatus      = 0xC000014C\n\tSTATUS_REGISTRY_IO_FAILED                                                 NTStatus      = 0xC000014D\n\tSTATUS_NO_EVENT_PAIR                                                      NTStatus      = 0xC000014E\n\tSTATUS_UNRECOGNIZED_VOLUME                                                NTStatus      = 0xC000014F\n\tSTATUS_SERIAL_NO_DEVICE_INITED                                            NTStatus      = 0xC0000150\n\tSTATUS_NO_SUCH_ALIAS                                                      NTStatus      = 0xC0000151\n\tSTATUS_MEMBER_NOT_IN_ALIAS                                                NTStatus      = 0xC0000152\n\tSTATUS_MEMBER_IN_ALIAS                                                    NTStatus      = 0xC0000153\n\tSTATUS_ALIAS_EXISTS                                                       NTStatus      = 0xC0000154\n\tSTATUS_LOGON_NOT_GRANTED                                                  NTStatus      = 0xC0000155\n\tSTATUS_TOO_MANY_SECRETS                                                   NTStatus      = 0xC0000156\n\tSTATUS_SECRET_TOO_LONG                                                    NTStatus      = 0xC0000157\n\tSTATUS_INTERNAL_DB_ERROR                                                  NTStatus      = 0xC0000158\n\tSTATUS_FULLSCREEN_MODE                                                    NTStatus      = 0xC0000159\n\tSTATUS_TOO_MANY_CONTEXT_IDS                                               NTStatus      = 0xC000015A\n\tSTATUS_LOGON_TYPE_NOT_GRANTED                                             NTStatus      = 0xC000015B\n\tSTATUS_NOT_REGISTRY_FILE                                                  NTStatus      = 0xC000015C\n\tSTATUS_NT_CROSS_ENCRYPTION_REQUIRED                                       NTStatus      = 0xC000015D\n\tSTATUS_DOMAIN_CTRLR_CONFIG_ERROR                                          NTStatus      = 0xC000015E\n\tSTATUS_FT_MISSING_MEMBER                                                  NTStatus      = 0xC000015F\n\tSTATUS_ILL_FORMED_SERVICE_ENTRY                                           NTStatus      = 0xC0000160\n\tSTATUS_ILLEGAL_CHARACTER                                                  NTStatus      = 0xC0000161\n\tSTATUS_UNMAPPABLE_CHARACTER                                               NTStatus      = 0xC0000162\n\tSTATUS_UNDEFINED_CHARACTER                                                NTStatus      = 0xC0000163\n\tSTATUS_FLOPPY_VOLUME                                                      NTStatus      = 0xC0000164\n\tSTATUS_FLOPPY_ID_MARK_NOT_FOUND                                           NTStatus      = 0xC0000165\n\tSTATUS_FLOPPY_WRONG_CYLINDER                                              NTStatus      = 0xC0000166\n\tSTATUS_FLOPPY_UNKNOWN_ERROR                                               NTStatus      = 0xC0000167\n\tSTATUS_FLOPPY_BAD_REGISTERS                                               NTStatus      = 0xC0000168\n\tSTATUS_DISK_RECALIBRATE_FAILED                                            NTStatus      = 0xC0000169\n\tSTATUS_DISK_OPERATION_FAILED                                              NTStatus      = 0xC000016A\n\tSTATUS_DISK_RESET_FAILED                                                  NTStatus      = 0xC000016B\n\tSTATUS_SHARED_IRQ_BUSY                                                    NTStatus      = 0xC000016C\n\tSTATUS_FT_ORPHANING                                                       NTStatus      = 0xC000016D\n\tSTATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT                                   NTStatus      = 0xC000016E\n\tSTATUS_PARTITION_FAILURE                                                  NTStatus      = 0xC0000172\n\tSTATUS_INVALID_BLOCK_LENGTH                                               NTStatus      = 0xC0000173\n\tSTATUS_DEVICE_NOT_PARTITIONED                                             NTStatus      = 0xC0000174\n\tSTATUS_UNABLE_TO_LOCK_MEDIA                                               NTStatus      = 0xC0000175\n\tSTATUS_UNABLE_TO_UNLOAD_MEDIA                                             NTStatus      = 0xC0000176\n\tSTATUS_EOM_OVERFLOW                                                       NTStatus      = 0xC0000177\n\tSTATUS_NO_MEDIA                                                           NTStatus      = 0xC0000178\n\tSTATUS_NO_SUCH_MEMBER                                                     NTStatus      = 0xC000017A\n\tSTATUS_INVALID_MEMBER                                                     NTStatus      = 0xC000017B\n\tSTATUS_KEY_DELETED                                                        NTStatus      = 0xC000017C\n\tSTATUS_NO_LOG_SPACE                                                       NTStatus      = 0xC000017D\n\tSTATUS_TOO_MANY_SIDS                                                      NTStatus      = 0xC000017E\n\tSTATUS_LM_CROSS_ENCRYPTION_REQUIRED                                       NTStatus      = 0xC000017F\n\tSTATUS_KEY_HAS_CHILDREN                                                   NTStatus      = 0xC0000180\n\tSTATUS_CHILD_MUST_BE_VOLATILE                                             NTStatus      = 0xC0000181\n\tSTATUS_DEVICE_CONFIGURATION_ERROR                                         NTStatus      = 0xC0000182\n\tSTATUS_DRIVER_INTERNAL_ERROR                                              NTStatus      = 0xC0000183\n\tSTATUS_INVALID_DEVICE_STATE                                               NTStatus      = 0xC0000184\n\tSTATUS_IO_DEVICE_ERROR                                                    NTStatus      = 0xC0000185\n\tSTATUS_DEVICE_PROTOCOL_ERROR                                              NTStatus      = 0xC0000186\n\tSTATUS_BACKUP_CONTROLLER                                                  NTStatus      = 0xC0000187\n\tSTATUS_LOG_FILE_FULL                                                      NTStatus      = 0xC0000188\n\tSTATUS_TOO_LATE                                                           NTStatus      = 0xC0000189\n\tSTATUS_NO_TRUST_LSA_SECRET                                                NTStatus      = 0xC000018A\n\tSTATUS_NO_TRUST_SAM_ACCOUNT                                               NTStatus      = 0xC000018B\n\tSTATUS_TRUSTED_DOMAIN_FAILURE                                             NTStatus      = 0xC000018C\n\tSTATUS_TRUSTED_RELATIONSHIP_FAILURE                                       NTStatus      = 0xC000018D\n\tSTATUS_EVENTLOG_FILE_CORRUPT                                              NTStatus      = 0xC000018E\n\tSTATUS_EVENTLOG_CANT_START                                                NTStatus      = 0xC000018F\n\tSTATUS_TRUST_FAILURE                                                      NTStatus      = 0xC0000190\n\tSTATUS_MUTANT_LIMIT_EXCEEDED                                              NTStatus      = 0xC0000191\n\tSTATUS_NETLOGON_NOT_STARTED                                               NTStatus      = 0xC0000192\n\tSTATUS_ACCOUNT_EXPIRED                                                    NTStatus      = 0xC0000193\n\tSTATUS_POSSIBLE_DEADLOCK                                                  NTStatus      = 0xC0000194\n\tSTATUS_NETWORK_CREDENTIAL_CONFLICT                                        NTStatus      = 0xC0000195\n\tSTATUS_REMOTE_SESSION_LIMIT                                               NTStatus      = 0xC0000196\n\tSTATUS_EVENTLOG_FILE_CHANGED                                              NTStatus      = 0xC0000197\n\tSTATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT                                  NTStatus      = 0xC0000198\n\tSTATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT                                  NTStatus      = 0xC0000199\n\tSTATUS_NOLOGON_SERVER_TRUST_ACCOUNT                                       NTStatus      = 0xC000019A\n\tSTATUS_DOMAIN_TRUST_INCONSISTENT                                          NTStatus      = 0xC000019B\n\tSTATUS_FS_DRIVER_REQUIRED                                                 NTStatus      = 0xC000019C\n\tSTATUS_IMAGE_ALREADY_LOADED_AS_DLL                                        NTStatus      = 0xC000019D\n\tSTATUS_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING               NTStatus      = 0xC000019E\n\tSTATUS_SHORT_NAMES_NOT_ENABLED_ON_VOLUME                                  NTStatus      = 0xC000019F\n\tSTATUS_SECURITY_STREAM_IS_INCONSISTENT                                    NTStatus      = 0xC00001A0\n\tSTATUS_INVALID_LOCK_RANGE                                                 NTStatus      = 0xC00001A1\n\tSTATUS_INVALID_ACE_CONDITION                                              NTStatus      = 0xC00001A2\n\tSTATUS_IMAGE_SUBSYSTEM_NOT_PRESENT                                        NTStatus      = 0xC00001A3\n\tSTATUS_NOTIFICATION_GUID_ALREADY_DEFINED                                  NTStatus      = 0xC00001A4\n\tSTATUS_INVALID_EXCEPTION_HANDLER                                          NTStatus      = 0xC00001A5\n\tSTATUS_DUPLICATE_PRIVILEGES                                               NTStatus      = 0xC00001A6\n\tSTATUS_NOT_ALLOWED_ON_SYSTEM_FILE                                         NTStatus      = 0xC00001A7\n\tSTATUS_REPAIR_NEEDED                                                      NTStatus      = 0xC00001A8\n\tSTATUS_QUOTA_NOT_ENABLED                                                  NTStatus      = 0xC00001A9\n\tSTATUS_NO_APPLICATION_PACKAGE                                             NTStatus      = 0xC00001AA\n\tSTATUS_FILE_METADATA_OPTIMIZATION_IN_PROGRESS                             NTStatus      = 0xC00001AB\n\tSTATUS_NOT_SAME_OBJECT                                                    NTStatus      = 0xC00001AC\n\tSTATUS_FATAL_MEMORY_EXHAUSTION                                            NTStatus      = 0xC00001AD\n\tSTATUS_ERROR_PROCESS_NOT_IN_JOB                                           NTStatus      = 0xC00001AE\n\tSTATUS_CPU_SET_INVALID                                                    NTStatus      = 0xC00001AF\n\tSTATUS_IO_DEVICE_INVALID_DATA                                             NTStatus      = 0xC00001B0\n\tSTATUS_IO_UNALIGNED_WRITE                                                 NTStatus      = 0xC00001B1\n\tSTATUS_NETWORK_OPEN_RESTRICTION                                           NTStatus      = 0xC0000201\n\tSTATUS_NO_USER_SESSION_KEY                                                NTStatus      = 0xC0000202\n\tSTATUS_USER_SESSION_DELETED                                               NTStatus      = 0xC0000203\n\tSTATUS_RESOURCE_LANG_NOT_FOUND                                            NTStatus      = 0xC0000204\n\tSTATUS_INSUFF_SERVER_RESOURCES                                            NTStatus      = 0xC0000205\n\tSTATUS_INVALID_BUFFER_SIZE                                                NTStatus      = 0xC0000206\n\tSTATUS_INVALID_ADDRESS_COMPONENT                                          NTStatus      = 0xC0000207\n\tSTATUS_INVALID_ADDRESS_WILDCARD                                           NTStatus      = 0xC0000208\n\tSTATUS_TOO_MANY_ADDRESSES                                                 NTStatus      = 0xC0000209\n\tSTATUS_ADDRESS_ALREADY_EXISTS                                             NTStatus      = 0xC000020A\n\tSTATUS_ADDRESS_CLOSED                                                     NTStatus      = 0xC000020B\n\tSTATUS_CONNECTION_DISCONNECTED                                            NTStatus      = 0xC000020C\n\tSTATUS_CONNECTION_RESET                                                   NTStatus      = 0xC000020D\n\tSTATUS_TOO_MANY_NODES                                                     NTStatus      = 0xC000020E\n\tSTATUS_TRANSACTION_ABORTED                                                NTStatus      = 0xC000020F\n\tSTATUS_TRANSACTION_TIMED_OUT                                              NTStatus      = 0xC0000210\n\tSTATUS_TRANSACTION_NO_RELEASE                                             NTStatus      = 0xC0000211\n\tSTATUS_TRANSACTION_NO_MATCH                                               NTStatus      = 0xC0000212\n\tSTATUS_TRANSACTION_RESPONDED                                              NTStatus      = 0xC0000213\n\tSTATUS_TRANSACTION_INVALID_ID                                             NTStatus      = 0xC0000214\n\tSTATUS_TRANSACTION_INVALID_TYPE                                           NTStatus      = 0xC0000215\n\tSTATUS_NOT_SERVER_SESSION                                                 NTStatus      = 0xC0000216\n\tSTATUS_NOT_CLIENT_SESSION                                                 NTStatus      = 0xC0000217\n\tSTATUS_CANNOT_LOAD_REGISTRY_FILE                                          NTStatus      = 0xC0000218\n\tSTATUS_DEBUG_ATTACH_FAILED                                                NTStatus      = 0xC0000219\n\tSTATUS_SYSTEM_PROCESS_TERMINATED                                          NTStatus      = 0xC000021A\n\tSTATUS_DATA_NOT_ACCEPTED                                                  NTStatus      = 0xC000021B\n\tSTATUS_NO_BROWSER_SERVERS_FOUND                                           NTStatus      = 0xC000021C\n\tSTATUS_VDM_HARD_ERROR                                                     NTStatus      = 0xC000021D\n\tSTATUS_DRIVER_CANCEL_TIMEOUT                                              NTStatus      = 0xC000021E\n\tSTATUS_REPLY_MESSAGE_MISMATCH                                             NTStatus      = 0xC000021F\n\tSTATUS_MAPPED_ALIGNMENT                                                   NTStatus      = 0xC0000220\n\tSTATUS_IMAGE_CHECKSUM_MISMATCH                                            NTStatus      = 0xC0000221\n\tSTATUS_LOST_WRITEBEHIND_DATA                                              NTStatus      = 0xC0000222\n\tSTATUS_CLIENT_SERVER_PARAMETERS_INVALID                                   NTStatus      = 0xC0000223\n\tSTATUS_PASSWORD_MUST_CHANGE                                               NTStatus      = 0xC0000224\n\tSTATUS_NOT_FOUND                                                          NTStatus      = 0xC0000225\n\tSTATUS_NOT_TINY_STREAM                                                    NTStatus      = 0xC0000226\n\tSTATUS_RECOVERY_FAILURE                                                   NTStatus      = 0xC0000227\n\tSTATUS_STACK_OVERFLOW_READ                                                NTStatus      = 0xC0000228\n\tSTATUS_FAIL_CHECK                                                         NTStatus      = 0xC0000229\n\tSTATUS_DUPLICATE_OBJECTID                                                 NTStatus      = 0xC000022A\n\tSTATUS_OBJECTID_EXISTS                                                    NTStatus      = 0xC000022B\n\tSTATUS_CONVERT_TO_LARGE                                                   NTStatus      = 0xC000022C\n\tSTATUS_RETRY                                                              NTStatus      = 0xC000022D\n\tSTATUS_FOUND_OUT_OF_SCOPE                                                 NTStatus      = 0xC000022E\n\tSTATUS_ALLOCATE_BUCKET                                                    NTStatus      = 0xC000022F\n\tSTATUS_PROPSET_NOT_FOUND                                                  NTStatus      = 0xC0000230\n\tSTATUS_MARSHALL_OVERFLOW                                                  NTStatus      = 0xC0000231\n\tSTATUS_INVALID_VARIANT                                                    NTStatus      = 0xC0000232\n\tSTATUS_DOMAIN_CONTROLLER_NOT_FOUND                                        NTStatus      = 0xC0000233\n\tSTATUS_ACCOUNT_LOCKED_OUT                                                 NTStatus      = 0xC0000234\n\tSTATUS_HANDLE_NOT_CLOSABLE                                                NTStatus      = 0xC0000235\n\tSTATUS_CONNECTION_REFUSED                                                 NTStatus      = 0xC0000236\n\tSTATUS_GRACEFUL_DISCONNECT                                                NTStatus      = 0xC0000237\n\tSTATUS_ADDRESS_ALREADY_ASSOCIATED                                         NTStatus      = 0xC0000238\n\tSTATUS_ADDRESS_NOT_ASSOCIATED                                             NTStatus      = 0xC0000239\n\tSTATUS_CONNECTION_INVALID                                                 NTStatus      = 0xC000023A\n\tSTATUS_CONNECTION_ACTIVE                                                  NTStatus      = 0xC000023B\n\tSTATUS_NETWORK_UNREACHABLE                                                NTStatus      = 0xC000023C\n\tSTATUS_HOST_UNREACHABLE                                                   NTStatus      = 0xC000023D\n\tSTATUS_PROTOCOL_UNREACHABLE                                               NTStatus      = 0xC000023E\n\tSTATUS_PORT_UNREACHABLE                                                   NTStatus      = 0xC000023F\n\tSTATUS_REQUEST_ABORTED                                                    NTStatus      = 0xC0000240\n\tSTATUS_CONNECTION_ABORTED                                                 NTStatus      = 0xC0000241\n\tSTATUS_BAD_COMPRESSION_BUFFER                                             NTStatus      = 0xC0000242\n\tSTATUS_USER_MAPPED_FILE                                                   NTStatus      = 0xC0000243\n\tSTATUS_AUDIT_FAILED                                                       NTStatus      = 0xC0000244\n\tSTATUS_TIMER_RESOLUTION_NOT_SET                                           NTStatus      = 0xC0000245\n\tSTATUS_CONNECTION_COUNT_LIMIT                                             NTStatus      = 0xC0000246\n\tSTATUS_LOGIN_TIME_RESTRICTION                                             NTStatus      = 0xC0000247\n\tSTATUS_LOGIN_WKSTA_RESTRICTION                                            NTStatus      = 0xC0000248\n\tSTATUS_IMAGE_MP_UP_MISMATCH                                               NTStatus      = 0xC0000249\n\tSTATUS_INSUFFICIENT_LOGON_INFO                                            NTStatus      = 0xC0000250\n\tSTATUS_BAD_DLL_ENTRYPOINT                                                 NTStatus      = 0xC0000251\n\tSTATUS_BAD_SERVICE_ENTRYPOINT                                             NTStatus      = 0xC0000252\n\tSTATUS_LPC_REPLY_LOST                                                     NTStatus      = 0xC0000253\n\tSTATUS_IP_ADDRESS_CONFLICT1                                               NTStatus      = 0xC0000254\n\tSTATUS_IP_ADDRESS_CONFLICT2                                               NTStatus      = 0xC0000255\n\tSTATUS_REGISTRY_QUOTA_LIMIT                                               NTStatus      = 0xC0000256\n\tSTATUS_PATH_NOT_COVERED                                                   NTStatus      = 0xC0000257\n\tSTATUS_NO_CALLBACK_ACTIVE                                                 NTStatus      = 0xC0000258\n\tSTATUS_LICENSE_QUOTA_EXCEEDED                                             NTStatus      = 0xC0000259\n\tSTATUS_PWD_TOO_SHORT                                                      NTStatus      = 0xC000025A\n\tSTATUS_PWD_TOO_RECENT                                                     NTStatus      = 0xC000025B\n\tSTATUS_PWD_HISTORY_CONFLICT                                               NTStatus      = 0xC000025C\n\tSTATUS_PLUGPLAY_NO_DEVICE                                                 NTStatus      = 0xC000025E\n\tSTATUS_UNSUPPORTED_COMPRESSION                                            NTStatus      = 0xC000025F\n\tSTATUS_INVALID_HW_PROFILE                                                 NTStatus      = 0xC0000260\n\tSTATUS_INVALID_PLUGPLAY_DEVICE_PATH                                       NTStatus      = 0xC0000261\n\tSTATUS_DRIVER_ORDINAL_NOT_FOUND                                           NTStatus      = 0xC0000262\n\tSTATUS_DRIVER_ENTRYPOINT_NOT_FOUND                                        NTStatus      = 0xC0000263\n\tSTATUS_RESOURCE_NOT_OWNED                                                 NTStatus      = 0xC0000264\n\tSTATUS_TOO_MANY_LINKS                                                     NTStatus      = 0xC0000265\n\tSTATUS_QUOTA_LIST_INCONSISTENT                                            NTStatus      = 0xC0000266\n\tSTATUS_FILE_IS_OFFLINE                                                    NTStatus      = 0xC0000267\n\tSTATUS_EVALUATION_EXPIRATION                                              NTStatus      = 0xC0000268\n\tSTATUS_ILLEGAL_DLL_RELOCATION                                             NTStatus      = 0xC0000269\n\tSTATUS_LICENSE_VIOLATION                                                  NTStatus      = 0xC000026A\n\tSTATUS_DLL_INIT_FAILED_LOGOFF                                             NTStatus      = 0xC000026B\n\tSTATUS_DRIVER_UNABLE_TO_LOAD                                              NTStatus      = 0xC000026C\n\tSTATUS_DFS_UNAVAILABLE                                                    NTStatus      = 0xC000026D\n\tSTATUS_VOLUME_DISMOUNTED                                                  NTStatus      = 0xC000026E\n\tSTATUS_WX86_INTERNAL_ERROR                                                NTStatus      = 0xC000026F\n\tSTATUS_WX86_FLOAT_STACK_CHECK                                             NTStatus      = 0xC0000270\n\tSTATUS_VALIDATE_CONTINUE                                                  NTStatus      = 0xC0000271\n\tSTATUS_NO_MATCH                                                           NTStatus      = 0xC0000272\n\tSTATUS_NO_MORE_MATCHES                                                    NTStatus      = 0xC0000273\n\tSTATUS_NOT_A_REPARSE_POINT                                                NTStatus      = 0xC0000275\n\tSTATUS_IO_REPARSE_TAG_INVALID                                             NTStatus      = 0xC0000276\n\tSTATUS_IO_REPARSE_TAG_MISMATCH                                            NTStatus      = 0xC0000277\n\tSTATUS_IO_REPARSE_DATA_INVALID                                            NTStatus      = 0xC0000278\n\tSTATUS_IO_REPARSE_TAG_NOT_HANDLED                                         NTStatus      = 0xC0000279\n\tSTATUS_PWD_TOO_LONG                                                       NTStatus      = 0xC000027A\n\tSTATUS_STOWED_EXCEPTION                                                   NTStatus      = 0xC000027B\n\tSTATUS_CONTEXT_STOWED_EXCEPTION                                           NTStatus      = 0xC000027C\n\tSTATUS_REPARSE_POINT_NOT_RESOLVED                                         NTStatus      = 0xC0000280\n\tSTATUS_DIRECTORY_IS_A_REPARSE_POINT                                       NTStatus      = 0xC0000281\n\tSTATUS_RANGE_LIST_CONFLICT                                                NTStatus      = 0xC0000282\n\tSTATUS_SOURCE_ELEMENT_EMPTY                                               NTStatus      = 0xC0000283\n\tSTATUS_DESTINATION_ELEMENT_FULL                                           NTStatus      = 0xC0000284\n\tSTATUS_ILLEGAL_ELEMENT_ADDRESS                                            NTStatus      = 0xC0000285\n\tSTATUS_MAGAZINE_NOT_PRESENT                                               NTStatus      = 0xC0000286\n\tSTATUS_REINITIALIZATION_NEEDED                                            NTStatus      = 0xC0000287\n\tSTATUS_DEVICE_REQUIRES_CLEANING                                           NTStatus      = 0x80000288\n\tSTATUS_DEVICE_DOOR_OPEN                                                   NTStatus      = 0x80000289\n\tSTATUS_ENCRYPTION_FAILED                                                  NTStatus      = 0xC000028A\n\tSTATUS_DECRYPTION_FAILED                                                  NTStatus      = 0xC000028B\n\tSTATUS_RANGE_NOT_FOUND                                                    NTStatus      = 0xC000028C\n\tSTATUS_NO_RECOVERY_POLICY                                                 NTStatus      = 0xC000028D\n\tSTATUS_NO_EFS                                                             NTStatus      = 0xC000028E\n\tSTATUS_WRONG_EFS                                                          NTStatus      = 0xC000028F\n\tSTATUS_NO_USER_KEYS                                                       NTStatus      = 0xC0000290\n\tSTATUS_FILE_NOT_ENCRYPTED                                                 NTStatus      = 0xC0000291\n\tSTATUS_NOT_EXPORT_FORMAT                                                  NTStatus      = 0xC0000292\n\tSTATUS_FILE_ENCRYPTED                                                     NTStatus      = 0xC0000293\n\tSTATUS_WAKE_SYSTEM                                                        NTStatus      = 0x40000294\n\tSTATUS_WMI_GUID_NOT_FOUND                                                 NTStatus      = 0xC0000295\n\tSTATUS_WMI_INSTANCE_NOT_FOUND                                             NTStatus      = 0xC0000296\n\tSTATUS_WMI_ITEMID_NOT_FOUND                                               NTStatus      = 0xC0000297\n\tSTATUS_WMI_TRY_AGAIN                                                      NTStatus      = 0xC0000298\n\tSTATUS_SHARED_POLICY                                                      NTStatus      = 0xC0000299\n\tSTATUS_POLICY_OBJECT_NOT_FOUND                                            NTStatus      = 0xC000029A\n\tSTATUS_POLICY_ONLY_IN_DS                                                  NTStatus      = 0xC000029B\n\tSTATUS_VOLUME_NOT_UPGRADED                                                NTStatus      = 0xC000029C\n\tSTATUS_REMOTE_STORAGE_NOT_ACTIVE                                          NTStatus      = 0xC000029D\n\tSTATUS_REMOTE_STORAGE_MEDIA_ERROR                                         NTStatus      = 0xC000029E\n\tSTATUS_NO_TRACKING_SERVICE                                                NTStatus      = 0xC000029F\n\tSTATUS_SERVER_SID_MISMATCH                                                NTStatus      = 0xC00002A0\n\tSTATUS_DS_NO_ATTRIBUTE_OR_VALUE                                           NTStatus      = 0xC00002A1\n\tSTATUS_DS_INVALID_ATTRIBUTE_SYNTAX                                        NTStatus      = 0xC00002A2\n\tSTATUS_DS_ATTRIBUTE_TYPE_UNDEFINED                                        NTStatus      = 0xC00002A3\n\tSTATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS                                       NTStatus      = 0xC00002A4\n\tSTATUS_DS_BUSY                                                            NTStatus      = 0xC00002A5\n\tSTATUS_DS_UNAVAILABLE                                                     NTStatus      = 0xC00002A6\n\tSTATUS_DS_NO_RIDS_ALLOCATED                                               NTStatus      = 0xC00002A7\n\tSTATUS_DS_NO_MORE_RIDS                                                    NTStatus      = 0xC00002A8\n\tSTATUS_DS_INCORRECT_ROLE_OWNER                                            NTStatus      = 0xC00002A9\n\tSTATUS_DS_RIDMGR_INIT_ERROR                                               NTStatus      = 0xC00002AA\n\tSTATUS_DS_OBJ_CLASS_VIOLATION                                             NTStatus      = 0xC00002AB\n\tSTATUS_DS_CANT_ON_NON_LEAF                                                NTStatus      = 0xC00002AC\n\tSTATUS_DS_CANT_ON_RDN                                                     NTStatus      = 0xC00002AD\n\tSTATUS_DS_CANT_MOD_OBJ_CLASS                                              NTStatus      = 0xC00002AE\n\tSTATUS_DS_CROSS_DOM_MOVE_FAILED                                           NTStatus      = 0xC00002AF\n\tSTATUS_DS_GC_NOT_AVAILABLE                                                NTStatus      = 0xC00002B0\n\tSTATUS_DIRECTORY_SERVICE_REQUIRED                                         NTStatus      = 0xC00002B1\n\tSTATUS_REPARSE_ATTRIBUTE_CONFLICT                                         NTStatus      = 0xC00002B2\n\tSTATUS_CANT_ENABLE_DENY_ONLY                                              NTStatus      = 0xC00002B3\n\tSTATUS_FLOAT_MULTIPLE_FAULTS                                              NTStatus      = 0xC00002B4\n\tSTATUS_FLOAT_MULTIPLE_TRAPS                                               NTStatus      = 0xC00002B5\n\tSTATUS_DEVICE_REMOVED                                                     NTStatus      = 0xC00002B6\n\tSTATUS_JOURNAL_DELETE_IN_PROGRESS                                         NTStatus      = 0xC00002B7\n\tSTATUS_JOURNAL_NOT_ACTIVE                                                 NTStatus      = 0xC00002B8\n\tSTATUS_NOINTERFACE                                                        NTStatus      = 0xC00002B9\n\tSTATUS_DS_RIDMGR_DISABLED                                                 NTStatus      = 0xC00002BA\n\tSTATUS_DS_ADMIN_LIMIT_EXCEEDED                                            NTStatus      = 0xC00002C1\n\tSTATUS_DRIVER_FAILED_SLEEP                                                NTStatus      = 0xC00002C2\n\tSTATUS_MUTUAL_AUTHENTICATION_FAILED                                       NTStatus      = 0xC00002C3\n\tSTATUS_CORRUPT_SYSTEM_FILE                                                NTStatus      = 0xC00002C4\n\tSTATUS_DATATYPE_MISALIGNMENT_ERROR                                        NTStatus      = 0xC00002C5\n\tSTATUS_WMI_READ_ONLY                                                      NTStatus      = 0xC00002C6\n\tSTATUS_WMI_SET_FAILURE                                                    NTStatus      = 0xC00002C7\n\tSTATUS_COMMITMENT_MINIMUM                                                 NTStatus      = 0xC00002C8\n\tSTATUS_REG_NAT_CONSUMPTION                                                NTStatus      = 0xC00002C9\n\tSTATUS_TRANSPORT_FULL                                                     NTStatus      = 0xC00002CA\n\tSTATUS_DS_SAM_INIT_FAILURE                                                NTStatus      = 0xC00002CB\n\tSTATUS_ONLY_IF_CONNECTED                                                  NTStatus      = 0xC00002CC\n\tSTATUS_DS_SENSITIVE_GROUP_VIOLATION                                       NTStatus      = 0xC00002CD\n\tSTATUS_PNP_RESTART_ENUMERATION                                            NTStatus      = 0xC00002CE\n\tSTATUS_JOURNAL_ENTRY_DELETED                                              NTStatus      = 0xC00002CF\n\tSTATUS_DS_CANT_MOD_PRIMARYGROUPID                                         NTStatus      = 0xC00002D0\n\tSTATUS_SYSTEM_IMAGE_BAD_SIGNATURE                                         NTStatus      = 0xC00002D1\n\tSTATUS_PNP_REBOOT_REQUIRED                                                NTStatus      = 0xC00002D2\n\tSTATUS_POWER_STATE_INVALID                                                NTStatus      = 0xC00002D3\n\tSTATUS_DS_INVALID_GROUP_TYPE                                              NTStatus      = 0xC00002D4\n\tSTATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN                              NTStatus      = 0xC00002D5\n\tSTATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN                               NTStatus      = 0xC00002D6\n\tSTATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER                                   NTStatus      = 0xC00002D7\n\tSTATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER                               NTStatus      = 0xC00002D8\n\tSTATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER                                NTStatus      = 0xC00002D9\n\tSTATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER                             NTStatus      = 0xC00002DA\n\tSTATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER                        NTStatus      = 0xC00002DB\n\tSTATUS_DS_HAVE_PRIMARY_MEMBERS                                            NTStatus      = 0xC00002DC\n\tSTATUS_WMI_NOT_SUPPORTED                                                  NTStatus      = 0xC00002DD\n\tSTATUS_INSUFFICIENT_POWER                                                 NTStatus      = 0xC00002DE\n\tSTATUS_SAM_NEED_BOOTKEY_PASSWORD                                          NTStatus      = 0xC00002DF\n\tSTATUS_SAM_NEED_BOOTKEY_FLOPPY                                            NTStatus      = 0xC00002E0\n\tSTATUS_DS_CANT_START                                                      NTStatus      = 0xC00002E1\n\tSTATUS_DS_INIT_FAILURE                                                    NTStatus      = 0xC00002E2\n\tSTATUS_SAM_INIT_FAILURE                                                   NTStatus      = 0xC00002E3\n\tSTATUS_DS_GC_REQUIRED                                                     NTStatus      = 0xC00002E4\n\tSTATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY                                      NTStatus      = 0xC00002E5\n\tSTATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS                                      NTStatus      = 0xC00002E6\n\tSTATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED                                  NTStatus      = 0xC00002E7\n\tSTATUS_MULTIPLE_FAULT_VIOLATION                                           NTStatus      = 0xC00002E8\n\tSTATUS_CURRENT_DOMAIN_NOT_ALLOWED                                         NTStatus      = 0xC00002E9\n\tSTATUS_CANNOT_MAKE                                                        NTStatus      = 0xC00002EA\n\tSTATUS_SYSTEM_SHUTDOWN                                                    NTStatus      = 0xC00002EB\n\tSTATUS_DS_INIT_FAILURE_CONSOLE                                            NTStatus      = 0xC00002EC\n\tSTATUS_DS_SAM_INIT_FAILURE_CONSOLE                                        NTStatus      = 0xC00002ED\n\tSTATUS_UNFINISHED_CONTEXT_DELETED                                         NTStatus      = 0xC00002EE\n\tSTATUS_NO_TGT_REPLY                                                       NTStatus      = 0xC00002EF\n\tSTATUS_OBJECTID_NOT_FOUND                                                 NTStatus      = 0xC00002F0\n\tSTATUS_NO_IP_ADDRESSES                                                    NTStatus      = 0xC00002F1\n\tSTATUS_WRONG_CREDENTIAL_HANDLE                                            NTStatus      = 0xC00002F2\n\tSTATUS_CRYPTO_SYSTEM_INVALID                                              NTStatus      = 0xC00002F3\n\tSTATUS_MAX_REFERRALS_EXCEEDED                                             NTStatus      = 0xC00002F4\n\tSTATUS_MUST_BE_KDC                                                        NTStatus      = 0xC00002F5\n\tSTATUS_STRONG_CRYPTO_NOT_SUPPORTED                                        NTStatus      = 0xC00002F6\n\tSTATUS_TOO_MANY_PRINCIPALS                                                NTStatus      = 0xC00002F7\n\tSTATUS_NO_PA_DATA                                                         NTStatus      = 0xC00002F8\n\tSTATUS_PKINIT_NAME_MISMATCH                                               NTStatus      = 0xC00002F9\n\tSTATUS_SMARTCARD_LOGON_REQUIRED                                           NTStatus      = 0xC00002FA\n\tSTATUS_KDC_INVALID_REQUEST                                                NTStatus      = 0xC00002FB\n\tSTATUS_KDC_UNABLE_TO_REFER                                                NTStatus      = 0xC00002FC\n\tSTATUS_KDC_UNKNOWN_ETYPE                                                  NTStatus      = 0xC00002FD\n\tSTATUS_SHUTDOWN_IN_PROGRESS                                               NTStatus      = 0xC00002FE\n\tSTATUS_SERVER_SHUTDOWN_IN_PROGRESS                                        NTStatus      = 0xC00002FF\n\tSTATUS_NOT_SUPPORTED_ON_SBS                                               NTStatus      = 0xC0000300\n\tSTATUS_WMI_GUID_DISCONNECTED                                              NTStatus      = 0xC0000301\n\tSTATUS_WMI_ALREADY_DISABLED                                               NTStatus      = 0xC0000302\n\tSTATUS_WMI_ALREADY_ENABLED                                                NTStatus      = 0xC0000303\n\tSTATUS_MFT_TOO_FRAGMENTED                                                 NTStatus      = 0xC0000304\n\tSTATUS_COPY_PROTECTION_FAILURE                                            NTStatus      = 0xC0000305\n\tSTATUS_CSS_AUTHENTICATION_FAILURE                                         NTStatus      = 0xC0000306\n\tSTATUS_CSS_KEY_NOT_PRESENT                                                NTStatus      = 0xC0000307\n\tSTATUS_CSS_KEY_NOT_ESTABLISHED                                            NTStatus      = 0xC0000308\n\tSTATUS_CSS_SCRAMBLED_SECTOR                                               NTStatus      = 0xC0000309\n\tSTATUS_CSS_REGION_MISMATCH                                                NTStatus      = 0xC000030A\n\tSTATUS_CSS_RESETS_EXHAUSTED                                               NTStatus      = 0xC000030B\n\tSTATUS_PASSWORD_CHANGE_REQUIRED                                           NTStatus      = 0xC000030C\n\tSTATUS_LOST_MODE_LOGON_RESTRICTION                                        NTStatus      = 0xC000030D\n\tSTATUS_PKINIT_FAILURE                                                     NTStatus      = 0xC0000320\n\tSTATUS_SMARTCARD_SUBSYSTEM_FAILURE                                        NTStatus      = 0xC0000321\n\tSTATUS_NO_KERB_KEY                                                        NTStatus      = 0xC0000322\n\tSTATUS_HOST_DOWN                                                          NTStatus      = 0xC0000350\n\tSTATUS_UNSUPPORTED_PREAUTH                                                NTStatus      = 0xC0000351\n\tSTATUS_EFS_ALG_BLOB_TOO_BIG                                               NTStatus      = 0xC0000352\n\tSTATUS_PORT_NOT_SET                                                       NTStatus      = 0xC0000353\n\tSTATUS_DEBUGGER_INACTIVE                                                  NTStatus      = 0xC0000354\n\tSTATUS_DS_VERSION_CHECK_FAILURE                                           NTStatus      = 0xC0000355\n\tSTATUS_AUDITING_DISABLED                                                  NTStatus      = 0xC0000356\n\tSTATUS_PRENT4_MACHINE_ACCOUNT                                             NTStatus      = 0xC0000357\n\tSTATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER                                   NTStatus      = 0xC0000358\n\tSTATUS_INVALID_IMAGE_WIN_32                                               NTStatus      = 0xC0000359\n\tSTATUS_INVALID_IMAGE_WIN_64                                               NTStatus      = 0xC000035A\n\tSTATUS_BAD_BINDINGS                                                       NTStatus      = 0xC000035B\n\tSTATUS_NETWORK_SESSION_EXPIRED                                            NTStatus      = 0xC000035C\n\tSTATUS_APPHELP_BLOCK                                                      NTStatus      = 0xC000035D\n\tSTATUS_ALL_SIDS_FILTERED                                                  NTStatus      = 0xC000035E\n\tSTATUS_NOT_SAFE_MODE_DRIVER                                               NTStatus      = 0xC000035F\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT                                  NTStatus      = 0xC0000361\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_PATH                                     NTStatus      = 0xC0000362\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER                                NTStatus      = 0xC0000363\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_OTHER                                    NTStatus      = 0xC0000364\n\tSTATUS_FAILED_DRIVER_ENTRY                                                NTStatus      = 0xC0000365\n\tSTATUS_DEVICE_ENUMERATION_ERROR                                           NTStatus      = 0xC0000366\n\tSTATUS_MOUNT_POINT_NOT_RESOLVED                                           NTStatus      = 0xC0000368\n\tSTATUS_INVALID_DEVICE_OBJECT_PARAMETER                                    NTStatus      = 0xC0000369\n\tSTATUS_MCA_OCCURED                                                        NTStatus      = 0xC000036A\n\tSTATUS_DRIVER_BLOCKED_CRITICAL                                            NTStatus      = 0xC000036B\n\tSTATUS_DRIVER_BLOCKED                                                     NTStatus      = 0xC000036C\n\tSTATUS_DRIVER_DATABASE_ERROR                                              NTStatus      = 0xC000036D\n\tSTATUS_SYSTEM_HIVE_TOO_LARGE                                              NTStatus      = 0xC000036E\n\tSTATUS_INVALID_IMPORT_OF_NON_DLL                                          NTStatus      = 0xC000036F\n\tSTATUS_DS_SHUTTING_DOWN                                                   NTStatus      = 0x40000370\n\tSTATUS_NO_SECRETS                                                         NTStatus      = 0xC0000371\n\tSTATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY                              NTStatus      = 0xC0000372\n\tSTATUS_FAILED_STACK_SWITCH                                                NTStatus      = 0xC0000373\n\tSTATUS_HEAP_CORRUPTION                                                    NTStatus      = 0xC0000374\n\tSTATUS_SMARTCARD_WRONG_PIN                                                NTStatus      = 0xC0000380\n\tSTATUS_SMARTCARD_CARD_BLOCKED                                             NTStatus      = 0xC0000381\n\tSTATUS_SMARTCARD_CARD_NOT_AUTHENTICATED                                   NTStatus      = 0xC0000382\n\tSTATUS_SMARTCARD_NO_CARD                                                  NTStatus      = 0xC0000383\n\tSTATUS_SMARTCARD_NO_KEY_CONTAINER                                         NTStatus      = 0xC0000384\n\tSTATUS_SMARTCARD_NO_CERTIFICATE                                           NTStatus      = 0xC0000385\n\tSTATUS_SMARTCARD_NO_KEYSET                                                NTStatus      = 0xC0000386\n\tSTATUS_SMARTCARD_IO_ERROR                                                 NTStatus      = 0xC0000387\n\tSTATUS_DOWNGRADE_DETECTED                                                 NTStatus      = 0xC0000388\n\tSTATUS_SMARTCARD_CERT_REVOKED                                             NTStatus      = 0xC0000389\n\tSTATUS_ISSUING_CA_UNTRUSTED                                               NTStatus      = 0xC000038A\n\tSTATUS_REVOCATION_OFFLINE_C                                               NTStatus      = 0xC000038B\n\tSTATUS_PKINIT_CLIENT_FAILURE                                              NTStatus      = 0xC000038C\n\tSTATUS_SMARTCARD_CERT_EXPIRED                                             NTStatus      = 0xC000038D\n\tSTATUS_DRIVER_FAILED_PRIOR_UNLOAD                                         NTStatus      = 0xC000038E\n\tSTATUS_SMARTCARD_SILENT_CONTEXT                                           NTStatus      = 0xC000038F\n\tSTATUS_PER_USER_TRUST_QUOTA_EXCEEDED                                      NTStatus      = 0xC0000401\n\tSTATUS_ALL_USER_TRUST_QUOTA_EXCEEDED                                      NTStatus      = 0xC0000402\n\tSTATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED                                   NTStatus      = 0xC0000403\n\tSTATUS_DS_NAME_NOT_UNIQUE                                                 NTStatus      = 0xC0000404\n\tSTATUS_DS_DUPLICATE_ID_FOUND                                              NTStatus      = 0xC0000405\n\tSTATUS_DS_GROUP_CONVERSION_ERROR                                          NTStatus      = 0xC0000406\n\tSTATUS_VOLSNAP_PREPARE_HIBERNATE                                          NTStatus      = 0xC0000407\n\tSTATUS_USER2USER_REQUIRED                                                 NTStatus      = 0xC0000408\n\tSTATUS_STACK_BUFFER_OVERRUN                                               NTStatus      = 0xC0000409\n\tSTATUS_NO_S4U_PROT_SUPPORT                                                NTStatus      = 0xC000040A\n\tSTATUS_CROSSREALM_DELEGATION_FAILURE                                      NTStatus      = 0xC000040B\n\tSTATUS_REVOCATION_OFFLINE_KDC                                             NTStatus      = 0xC000040C\n\tSTATUS_ISSUING_CA_UNTRUSTED_KDC                                           NTStatus      = 0xC000040D\n\tSTATUS_KDC_CERT_EXPIRED                                                   NTStatus      = 0xC000040E\n\tSTATUS_KDC_CERT_REVOKED                                                   NTStatus      = 0xC000040F\n\tSTATUS_PARAMETER_QUOTA_EXCEEDED                                           NTStatus      = 0xC0000410\n\tSTATUS_HIBERNATION_FAILURE                                                NTStatus      = 0xC0000411\n\tSTATUS_DELAY_LOAD_FAILED                                                  NTStatus      = 0xC0000412\n\tSTATUS_AUTHENTICATION_FIREWALL_FAILED                                     NTStatus      = 0xC0000413\n\tSTATUS_VDM_DISALLOWED                                                     NTStatus      = 0xC0000414\n\tSTATUS_HUNG_DISPLAY_DRIVER_THREAD                                         NTStatus      = 0xC0000415\n\tSTATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE            NTStatus      = 0xC0000416\n\tSTATUS_INVALID_CRUNTIME_PARAMETER                                         NTStatus      = 0xC0000417\n\tSTATUS_NTLM_BLOCKED                                                       NTStatus      = 0xC0000418\n\tSTATUS_DS_SRC_SID_EXISTS_IN_FOREST                                        NTStatus      = 0xC0000419\n\tSTATUS_DS_DOMAIN_NAME_EXISTS_IN_FOREST                                    NTStatus      = 0xC000041A\n\tSTATUS_DS_FLAT_NAME_EXISTS_IN_FOREST                                      NTStatus      = 0xC000041B\n\tSTATUS_INVALID_USER_PRINCIPAL_NAME                                        NTStatus      = 0xC000041C\n\tSTATUS_FATAL_USER_CALLBACK_EXCEPTION                                      NTStatus      = 0xC000041D\n\tSTATUS_ASSERTION_FAILURE                                                  NTStatus      = 0xC0000420\n\tSTATUS_VERIFIER_STOP                                                      NTStatus      = 0xC0000421\n\tSTATUS_CALLBACK_POP_STACK                                                 NTStatus      = 0xC0000423\n\tSTATUS_INCOMPATIBLE_DRIVER_BLOCKED                                        NTStatus      = 0xC0000424\n\tSTATUS_HIVE_UNLOADED                                                      NTStatus      = 0xC0000425\n\tSTATUS_COMPRESSION_DISABLED                                               NTStatus      = 0xC0000426\n\tSTATUS_FILE_SYSTEM_LIMITATION                                             NTStatus      = 0xC0000427\n\tSTATUS_INVALID_IMAGE_HASH                                                 NTStatus      = 0xC0000428\n\tSTATUS_NOT_CAPABLE                                                        NTStatus      = 0xC0000429\n\tSTATUS_REQUEST_OUT_OF_SEQUENCE                                            NTStatus      = 0xC000042A\n\tSTATUS_IMPLEMENTATION_LIMIT                                               NTStatus      = 0xC000042B\n\tSTATUS_ELEVATION_REQUIRED                                                 NTStatus      = 0xC000042C\n\tSTATUS_NO_SECURITY_CONTEXT                                                NTStatus      = 0xC000042D\n\tSTATUS_PKU2U_CERT_FAILURE                                                 NTStatus      = 0xC000042F\n\tSTATUS_BEYOND_VDL                                                         NTStatus      = 0xC0000432\n\tSTATUS_ENCOUNTERED_WRITE_IN_PROGRESS                                      NTStatus      = 0xC0000433\n\tSTATUS_PTE_CHANGED                                                        NTStatus      = 0xC0000434\n\tSTATUS_PURGE_FAILED                                                       NTStatus      = 0xC0000435\n\tSTATUS_CRED_REQUIRES_CONFIRMATION                                         NTStatus      = 0xC0000440\n\tSTATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE                              NTStatus      = 0xC0000441\n\tSTATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER                                   NTStatus      = 0xC0000442\n\tSTATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE                              NTStatus      = 0xC0000443\n\tSTATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE                                   NTStatus      = 0xC0000444\n\tSTATUS_CS_ENCRYPTION_FILE_NOT_CSE                                         NTStatus      = 0xC0000445\n\tSTATUS_INVALID_LABEL                                                      NTStatus      = 0xC0000446\n\tSTATUS_DRIVER_PROCESS_TERMINATED                                          NTStatus      = 0xC0000450\n\tSTATUS_AMBIGUOUS_SYSTEM_DEVICE                                            NTStatus      = 0xC0000451\n\tSTATUS_SYSTEM_DEVICE_NOT_FOUND                                            NTStatus      = 0xC0000452\n\tSTATUS_RESTART_BOOT_APPLICATION                                           NTStatus      = 0xC0000453\n\tSTATUS_INSUFFICIENT_NVRAM_RESOURCES                                       NTStatus      = 0xC0000454\n\tSTATUS_INVALID_SESSION                                                    NTStatus      = 0xC0000455\n\tSTATUS_THREAD_ALREADY_IN_SESSION                                          NTStatus      = 0xC0000456\n\tSTATUS_THREAD_NOT_IN_SESSION                                              NTStatus      = 0xC0000457\n\tSTATUS_INVALID_WEIGHT                                                     NTStatus      = 0xC0000458\n\tSTATUS_REQUEST_PAUSED                                                     NTStatus      = 0xC0000459\n\tSTATUS_NO_RANGES_PROCESSED                                                NTStatus      = 0xC0000460\n\tSTATUS_DISK_RESOURCES_EXHAUSTED                                           NTStatus      = 0xC0000461\n\tSTATUS_NEEDS_REMEDIATION                                                  NTStatus      = 0xC0000462\n\tSTATUS_DEVICE_FEATURE_NOT_SUPPORTED                                       NTStatus      = 0xC0000463\n\tSTATUS_DEVICE_UNREACHABLE                                                 NTStatus      = 0xC0000464\n\tSTATUS_INVALID_TOKEN                                                      NTStatus      = 0xC0000465\n\tSTATUS_SERVER_UNAVAILABLE                                                 NTStatus      = 0xC0000466\n\tSTATUS_FILE_NOT_AVAILABLE                                                 NTStatus      = 0xC0000467\n\tSTATUS_DEVICE_INSUFFICIENT_RESOURCES                                      NTStatus      = 0xC0000468\n\tSTATUS_PACKAGE_UPDATING                                                   NTStatus      = 0xC0000469\n\tSTATUS_NOT_READ_FROM_COPY                                                 NTStatus      = 0xC000046A\n\tSTATUS_FT_WRITE_FAILURE                                                   NTStatus      = 0xC000046B\n\tSTATUS_FT_DI_SCAN_REQUIRED                                                NTStatus      = 0xC000046C\n\tSTATUS_OBJECT_NOT_EXTERNALLY_BACKED                                       NTStatus      = 0xC000046D\n\tSTATUS_EXTERNAL_BACKING_PROVIDER_UNKNOWN                                  NTStatus      = 0xC000046E\n\tSTATUS_COMPRESSION_NOT_BENEFICIAL                                         NTStatus      = 0xC000046F\n\tSTATUS_DATA_CHECKSUM_ERROR                                                NTStatus      = 0xC0000470\n\tSTATUS_INTERMIXED_KERNEL_EA_OPERATION                                     NTStatus      = 0xC0000471\n\tSTATUS_TRIM_READ_ZERO_NOT_SUPPORTED                                       NTStatus      = 0xC0000472\n\tSTATUS_TOO_MANY_SEGMENT_DESCRIPTORS                                       NTStatus      = 0xC0000473\n\tSTATUS_INVALID_OFFSET_ALIGNMENT                                           NTStatus      = 0xC0000474\n\tSTATUS_INVALID_FIELD_IN_PARAMETER_LIST                                    NTStatus      = 0xC0000475\n\tSTATUS_OPERATION_IN_PROGRESS                                              NTStatus      = 0xC0000476\n\tSTATUS_INVALID_INITIATOR_TARGET_PATH                                      NTStatus      = 0xC0000477\n\tSTATUS_SCRUB_DATA_DISABLED                                                NTStatus      = 0xC0000478\n\tSTATUS_NOT_REDUNDANT_STORAGE                                              NTStatus      = 0xC0000479\n\tSTATUS_RESIDENT_FILE_NOT_SUPPORTED                                        NTStatus      = 0xC000047A\n\tSTATUS_COMPRESSED_FILE_NOT_SUPPORTED                                      NTStatus      = 0xC000047B\n\tSTATUS_DIRECTORY_NOT_SUPPORTED                                            NTStatus      = 0xC000047C\n\tSTATUS_IO_OPERATION_TIMEOUT                                               NTStatus      = 0xC000047D\n\tSTATUS_SYSTEM_NEEDS_REMEDIATION                                           NTStatus      = 0xC000047E\n\tSTATUS_APPX_INTEGRITY_FAILURE_CLR_NGEN                                    NTStatus      = 0xC000047F\n\tSTATUS_SHARE_UNAVAILABLE                                                  NTStatus      = 0xC0000480\n\tSTATUS_APISET_NOT_HOSTED                                                  NTStatus      = 0xC0000481\n\tSTATUS_APISET_NOT_PRESENT                                                 NTStatus      = 0xC0000482\n\tSTATUS_DEVICE_HARDWARE_ERROR                                              NTStatus      = 0xC0000483\n\tSTATUS_FIRMWARE_SLOT_INVALID                                              NTStatus      = 0xC0000484\n\tSTATUS_FIRMWARE_IMAGE_INVALID                                             NTStatus      = 0xC0000485\n\tSTATUS_STORAGE_TOPOLOGY_ID_MISMATCH                                       NTStatus      = 0xC0000486\n\tSTATUS_WIM_NOT_BOOTABLE                                                   NTStatus      = 0xC0000487\n\tSTATUS_BLOCKED_BY_PARENTAL_CONTROLS                                       NTStatus      = 0xC0000488\n\tSTATUS_NEEDS_REGISTRATION                                                 NTStatus      = 0xC0000489\n\tSTATUS_QUOTA_ACTIVITY                                                     NTStatus      = 0xC000048A\n\tSTATUS_CALLBACK_INVOKE_INLINE                                             NTStatus      = 0xC000048B\n\tSTATUS_BLOCK_TOO_MANY_REFERENCES                                          NTStatus      = 0xC000048C\n\tSTATUS_MARKED_TO_DISALLOW_WRITES                                          NTStatus      = 0xC000048D\n\tSTATUS_NETWORK_ACCESS_DENIED_EDP                                          NTStatus      = 0xC000048E\n\tSTATUS_ENCLAVE_FAILURE                                                    NTStatus      = 0xC000048F\n\tSTATUS_PNP_NO_COMPAT_DRIVERS                                              NTStatus      = 0xC0000490\n\tSTATUS_PNP_DRIVER_PACKAGE_NOT_FOUND                                       NTStatus      = 0xC0000491\n\tSTATUS_PNP_DRIVER_CONFIGURATION_NOT_FOUND                                 NTStatus      = 0xC0000492\n\tSTATUS_PNP_DRIVER_CONFIGURATION_INCOMPLETE                                NTStatus      = 0xC0000493\n\tSTATUS_PNP_FUNCTION_DRIVER_REQUIRED                                       NTStatus      = 0xC0000494\n\tSTATUS_PNP_DEVICE_CONFIGURATION_PENDING                                   NTStatus      = 0xC0000495\n\tSTATUS_DEVICE_HINT_NAME_BUFFER_TOO_SMALL                                  NTStatus      = 0xC0000496\n\tSTATUS_PACKAGE_NOT_AVAILABLE                                              NTStatus      = 0xC0000497\n\tSTATUS_DEVICE_IN_MAINTENANCE                                              NTStatus      = 0xC0000499\n\tSTATUS_NOT_SUPPORTED_ON_DAX                                               NTStatus      = 0xC000049A\n\tSTATUS_FREE_SPACE_TOO_FRAGMENTED                                          NTStatus      = 0xC000049B\n\tSTATUS_DAX_MAPPING_EXISTS                                                 NTStatus      = 0xC000049C\n\tSTATUS_CHILD_PROCESS_BLOCKED                                              NTStatus      = 0xC000049D\n\tSTATUS_STORAGE_LOST_DATA_PERSISTENCE                                      NTStatus      = 0xC000049E\n\tSTATUS_VRF_CFG_ENABLED                                                    NTStatus      = 0xC000049F\n\tSTATUS_PARTITION_TERMINATING                                              NTStatus      = 0xC00004A0\n\tSTATUS_EXTERNAL_SYSKEY_NOT_SUPPORTED                                      NTStatus      = 0xC00004A1\n\tSTATUS_ENCLAVE_VIOLATION                                                  NTStatus      = 0xC00004A2\n\tSTATUS_FILE_PROTECTED_UNDER_DPL                                           NTStatus      = 0xC00004A3\n\tSTATUS_VOLUME_NOT_CLUSTER_ALIGNED                                         NTStatus      = 0xC00004A4\n\tSTATUS_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND                             NTStatus      = 0xC00004A5\n\tSTATUS_APPX_FILE_NOT_ENCRYPTED                                            NTStatus      = 0xC00004A6\n\tSTATUS_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED                                 NTStatus      = 0xC00004A7\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET                       NTStatus      = 0xC00004A8\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE                        NTStatus      = 0xC00004A9\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER                        NTStatus      = 0xC00004AA\n\tSTATUS_FT_READ_FAILURE                                                    NTStatus      = 0xC00004AB\n\tSTATUS_PATCH_CONFLICT                                                     NTStatus      = 0xC00004AC\n\tSTATUS_STORAGE_RESERVE_ID_INVALID                                         NTStatus      = 0xC00004AD\n\tSTATUS_STORAGE_RESERVE_DOES_NOT_EXIST                                     NTStatus      = 0xC00004AE\n\tSTATUS_STORAGE_RESERVE_ALREADY_EXISTS                                     NTStatus      = 0xC00004AF\n\tSTATUS_STORAGE_RESERVE_NOT_EMPTY                                          NTStatus      = 0xC00004B0\n\tSTATUS_NOT_A_DAX_VOLUME                                                   NTStatus      = 0xC00004B1\n\tSTATUS_NOT_DAX_MAPPABLE                                                   NTStatus      = 0xC00004B2\n\tSTATUS_CASE_DIFFERING_NAMES_IN_DIR                                        NTStatus      = 0xC00004B3\n\tSTATUS_FILE_NOT_SUPPORTED                                                 NTStatus      = 0xC00004B4\n\tSTATUS_NOT_SUPPORTED_WITH_BTT                                             NTStatus      = 0xC00004B5\n\tSTATUS_ENCRYPTION_DISABLED                                                NTStatus      = 0xC00004B6\n\tSTATUS_ENCRYPTING_METADATA_DISALLOWED                                     NTStatus      = 0xC00004B7\n\tSTATUS_CANT_CLEAR_ENCRYPTION_FLAG                                         NTStatus      = 0xC00004B8\n\tSTATUS_INVALID_TASK_NAME                                                  NTStatus      = 0xC0000500\n\tSTATUS_INVALID_TASK_INDEX                                                 NTStatus      = 0xC0000501\n\tSTATUS_THREAD_ALREADY_IN_TASK                                             NTStatus      = 0xC0000502\n\tSTATUS_CALLBACK_BYPASS                                                    NTStatus      = 0xC0000503\n\tSTATUS_UNDEFINED_SCOPE                                                    NTStatus      = 0xC0000504\n\tSTATUS_INVALID_CAP                                                        NTStatus      = 0xC0000505\n\tSTATUS_NOT_GUI_PROCESS                                                    NTStatus      = 0xC0000506\n\tSTATUS_DEVICE_HUNG                                                        NTStatus      = 0xC0000507\n\tSTATUS_CONTAINER_ASSIGNED                                                 NTStatus      = 0xC0000508\n\tSTATUS_JOB_NO_CONTAINER                                                   NTStatus      = 0xC0000509\n\tSTATUS_DEVICE_UNRESPONSIVE                                                NTStatus      = 0xC000050A\n\tSTATUS_REPARSE_POINT_ENCOUNTERED                                          NTStatus      = 0xC000050B\n\tSTATUS_ATTRIBUTE_NOT_PRESENT                                              NTStatus      = 0xC000050C\n\tSTATUS_NOT_A_TIERED_VOLUME                                                NTStatus      = 0xC000050D\n\tSTATUS_ALREADY_HAS_STREAM_ID                                              NTStatus      = 0xC000050E\n\tSTATUS_JOB_NOT_EMPTY                                                      NTStatus      = 0xC000050F\n\tSTATUS_ALREADY_INITIALIZED                                                NTStatus      = 0xC0000510\n\tSTATUS_ENCLAVE_NOT_TERMINATED                                             NTStatus      = 0xC0000511\n\tSTATUS_ENCLAVE_IS_TERMINATING                                             NTStatus      = 0xC0000512\n\tSTATUS_SMB1_NOT_AVAILABLE                                                 NTStatus      = 0xC0000513\n\tSTATUS_SMR_GARBAGE_COLLECTION_REQUIRED                                    NTStatus      = 0xC0000514\n\tSTATUS_INTERRUPTED                                                        NTStatus      = 0xC0000515\n\tSTATUS_THREAD_NOT_RUNNING                                                 NTStatus      = 0xC0000516\n\tSTATUS_FAIL_FAST_EXCEPTION                                                NTStatus      = 0xC0000602\n\tSTATUS_IMAGE_CERT_REVOKED                                                 NTStatus      = 0xC0000603\n\tSTATUS_DYNAMIC_CODE_BLOCKED                                               NTStatus      = 0xC0000604\n\tSTATUS_IMAGE_CERT_EXPIRED                                                 NTStatus      = 0xC0000605\n\tSTATUS_STRICT_CFG_VIOLATION                                               NTStatus      = 0xC0000606\n\tSTATUS_SET_CONTEXT_DENIED                                                 NTStatus      = 0xC000060A\n\tSTATUS_CROSS_PARTITION_VIOLATION                                          NTStatus      = 0xC000060B\n\tSTATUS_PORT_CLOSED                                                        NTStatus      = 0xC0000700\n\tSTATUS_MESSAGE_LOST                                                       NTStatus      = 0xC0000701\n\tSTATUS_INVALID_MESSAGE                                                    NTStatus      = 0xC0000702\n\tSTATUS_REQUEST_CANCELED                                                   NTStatus      = 0xC0000703\n\tSTATUS_RECURSIVE_DISPATCH                                                 NTStatus      = 0xC0000704\n\tSTATUS_LPC_RECEIVE_BUFFER_EXPECTED                                        NTStatus      = 0xC0000705\n\tSTATUS_LPC_INVALID_CONNECTION_USAGE                                       NTStatus      = 0xC0000706\n\tSTATUS_LPC_REQUESTS_NOT_ALLOWED                                           NTStatus      = 0xC0000707\n\tSTATUS_RESOURCE_IN_USE                                                    NTStatus      = 0xC0000708\n\tSTATUS_HARDWARE_MEMORY_ERROR                                              NTStatus      = 0xC0000709\n\tSTATUS_THREADPOOL_HANDLE_EXCEPTION                                        NTStatus      = 0xC000070A\n\tSTATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED                          NTStatus      = 0xC000070B\n\tSTATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED                  NTStatus      = 0xC000070C\n\tSTATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED                      NTStatus      = 0xC000070D\n\tSTATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED                       NTStatus      = 0xC000070E\n\tSTATUS_THREADPOOL_RELEASED_DURING_OPERATION                               NTStatus      = 0xC000070F\n\tSTATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING                              NTStatus      = 0xC0000710\n\tSTATUS_APC_RETURNED_WHILE_IMPERSONATING                                   NTStatus      = 0xC0000711\n\tSTATUS_PROCESS_IS_PROTECTED                                               NTStatus      = 0xC0000712\n\tSTATUS_MCA_EXCEPTION                                                      NTStatus      = 0xC0000713\n\tSTATUS_CERTIFICATE_MAPPING_NOT_UNIQUE                                     NTStatus      = 0xC0000714\n\tSTATUS_SYMLINK_CLASS_DISABLED                                             NTStatus      = 0xC0000715\n\tSTATUS_INVALID_IDN_NORMALIZATION                                          NTStatus      = 0xC0000716\n\tSTATUS_NO_UNICODE_TRANSLATION                                             NTStatus      = 0xC0000717\n\tSTATUS_ALREADY_REGISTERED                                                 NTStatus      = 0xC0000718\n\tSTATUS_CONTEXT_MISMATCH                                                   NTStatus      = 0xC0000719\n\tSTATUS_PORT_ALREADY_HAS_COMPLETION_LIST                                   NTStatus      = 0xC000071A\n\tSTATUS_CALLBACK_RETURNED_THREAD_PRIORITY                                  NTStatus      = 0xC000071B\n\tSTATUS_INVALID_THREAD                                                     NTStatus      = 0xC000071C\n\tSTATUS_CALLBACK_RETURNED_TRANSACTION                                      NTStatus      = 0xC000071D\n\tSTATUS_CALLBACK_RETURNED_LDR_LOCK                                         NTStatus      = 0xC000071E\n\tSTATUS_CALLBACK_RETURNED_LANG                                             NTStatus      = 0xC000071F\n\tSTATUS_CALLBACK_RETURNED_PRI_BACK                                         NTStatus      = 0xC0000720\n\tSTATUS_CALLBACK_RETURNED_THREAD_AFFINITY                                  NTStatus      = 0xC0000721\n\tSTATUS_LPC_HANDLE_COUNT_EXCEEDED                                          NTStatus      = 0xC0000722\n\tSTATUS_EXECUTABLE_MEMORY_WRITE                                            NTStatus      = 0xC0000723\n\tSTATUS_KERNEL_EXECUTABLE_MEMORY_WRITE                                     NTStatus      = 0xC0000724\n\tSTATUS_ATTACHED_EXECUTABLE_MEMORY_WRITE                                   NTStatus      = 0xC0000725\n\tSTATUS_TRIGGERED_EXECUTABLE_MEMORY_WRITE                                  NTStatus      = 0xC0000726\n\tSTATUS_DISK_REPAIR_DISABLED                                               NTStatus      = 0xC0000800\n\tSTATUS_DS_DOMAIN_RENAME_IN_PROGRESS                                       NTStatus      = 0xC0000801\n\tSTATUS_DISK_QUOTA_EXCEEDED                                                NTStatus      = 0xC0000802\n\tSTATUS_DATA_LOST_REPAIR                                                   NTStatus      = 0x80000803\n\tSTATUS_CONTENT_BLOCKED                                                    NTStatus      = 0xC0000804\n\tSTATUS_BAD_CLUSTERS                                                       NTStatus      = 0xC0000805\n\tSTATUS_VOLUME_DIRTY                                                       NTStatus      = 0xC0000806\n\tSTATUS_DISK_REPAIR_REDIRECTED                                             NTStatus      = 0x40000807\n\tSTATUS_DISK_REPAIR_UNSUCCESSFUL                                           NTStatus      = 0xC0000808\n\tSTATUS_CORRUPT_LOG_OVERFULL                                               NTStatus      = 0xC0000809\n\tSTATUS_CORRUPT_LOG_CORRUPTED                                              NTStatus      = 0xC000080A\n\tSTATUS_CORRUPT_LOG_UNAVAILABLE                                            NTStatus      = 0xC000080B\n\tSTATUS_CORRUPT_LOG_DELETED_FULL                                           NTStatus      = 0xC000080C\n\tSTATUS_CORRUPT_LOG_CLEARED                                                NTStatus      = 0xC000080D\n\tSTATUS_ORPHAN_NAME_EXHAUSTED                                              NTStatus      = 0xC000080E\n\tSTATUS_PROACTIVE_SCAN_IN_PROGRESS                                         NTStatus      = 0xC000080F\n\tSTATUS_ENCRYPTED_IO_NOT_POSSIBLE                                          NTStatus      = 0xC0000810\n\tSTATUS_CORRUPT_LOG_UPLEVEL_RECORDS                                        NTStatus      = 0xC0000811\n\tSTATUS_FILE_CHECKED_OUT                                                   NTStatus      = 0xC0000901\n\tSTATUS_CHECKOUT_REQUIRED                                                  NTStatus      = 0xC0000902\n\tSTATUS_BAD_FILE_TYPE                                                      NTStatus      = 0xC0000903\n\tSTATUS_FILE_TOO_LARGE                                                     NTStatus      = 0xC0000904\n\tSTATUS_FORMS_AUTH_REQUIRED                                                NTStatus      = 0xC0000905\n\tSTATUS_VIRUS_INFECTED                                                     NTStatus      = 0xC0000906\n\tSTATUS_VIRUS_DELETED                                                      NTStatus      = 0xC0000907\n\tSTATUS_BAD_MCFG_TABLE                                                     NTStatus      = 0xC0000908\n\tSTATUS_CANNOT_BREAK_OPLOCK                                                NTStatus      = 0xC0000909\n\tSTATUS_BAD_KEY                                                            NTStatus      = 0xC000090A\n\tSTATUS_BAD_DATA                                                           NTStatus      = 0xC000090B\n\tSTATUS_NO_KEY                                                             NTStatus      = 0xC000090C\n\tSTATUS_FILE_HANDLE_REVOKED                                                NTStatus      = 0xC0000910\n\tSTATUS_WOW_ASSERTION                                                      NTStatus      = 0xC0009898\n\tSTATUS_INVALID_SIGNATURE                                                  NTStatus      = 0xC000A000\n\tSTATUS_HMAC_NOT_SUPPORTED                                                 NTStatus      = 0xC000A001\n\tSTATUS_AUTH_TAG_MISMATCH                                                  NTStatus      = 0xC000A002\n\tSTATUS_INVALID_STATE_TRANSITION                                           NTStatus      = 0xC000A003\n\tSTATUS_INVALID_KERNEL_INFO_VERSION                                        NTStatus      = 0xC000A004\n\tSTATUS_INVALID_PEP_INFO_VERSION                                           NTStatus      = 0xC000A005\n\tSTATUS_HANDLE_REVOKED                                                     NTStatus      = 0xC000A006\n\tSTATUS_EOF_ON_GHOSTED_RANGE                                               NTStatus      = 0xC000A007\n\tSTATUS_IPSEC_QUEUE_OVERFLOW                                               NTStatus      = 0xC000A010\n\tSTATUS_ND_QUEUE_OVERFLOW                                                  NTStatus      = 0xC000A011\n\tSTATUS_HOPLIMIT_EXCEEDED                                                  NTStatus      = 0xC000A012\n\tSTATUS_PROTOCOL_NOT_SUPPORTED                                             NTStatus      = 0xC000A013\n\tSTATUS_FASTPATH_REJECTED                                                  NTStatus      = 0xC000A014\n\tSTATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED                         NTStatus      = 0xC000A080\n\tSTATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR                         NTStatus      = 0xC000A081\n\tSTATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR                             NTStatus      = 0xC000A082\n\tSTATUS_XML_PARSE_ERROR                                                    NTStatus      = 0xC000A083\n\tSTATUS_XMLDSIG_ERROR                                                      NTStatus      = 0xC000A084\n\tSTATUS_WRONG_COMPARTMENT                                                  NTStatus      = 0xC000A085\n\tSTATUS_AUTHIP_FAILURE                                                     NTStatus      = 0xC000A086\n\tSTATUS_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS                              NTStatus      = 0xC000A087\n\tSTATUS_DS_OID_NOT_FOUND                                                   NTStatus      = 0xC000A088\n\tSTATUS_INCORRECT_ACCOUNT_TYPE                                             NTStatus      = 0xC000A089\n\tSTATUS_HASH_NOT_SUPPORTED                                                 NTStatus      = 0xC000A100\n\tSTATUS_HASH_NOT_PRESENT                                                   NTStatus      = 0xC000A101\n\tSTATUS_SECONDARY_IC_PROVIDER_NOT_REGISTERED                               NTStatus      = 0xC000A121\n\tSTATUS_GPIO_CLIENT_INFORMATION_INVALID                                    NTStatus      = 0xC000A122\n\tSTATUS_GPIO_VERSION_NOT_SUPPORTED                                         NTStatus      = 0xC000A123\n\tSTATUS_GPIO_INVALID_REGISTRATION_PACKET                                   NTStatus      = 0xC000A124\n\tSTATUS_GPIO_OPERATION_DENIED                                              NTStatus      = 0xC000A125\n\tSTATUS_GPIO_INCOMPATIBLE_CONNECT_MODE                                     NTStatus      = 0xC000A126\n\tSTATUS_GPIO_INTERRUPT_ALREADY_UNMASKED                                    NTStatus      = 0x8000A127\n\tSTATUS_CANNOT_SWITCH_RUNLEVEL                                             NTStatus      = 0xC000A141\n\tSTATUS_INVALID_RUNLEVEL_SETTING                                           NTStatus      = 0xC000A142\n\tSTATUS_RUNLEVEL_SWITCH_TIMEOUT                                            NTStatus      = 0xC000A143\n\tSTATUS_SERVICES_FAILED_AUTOSTART                                          NTStatus      = 0x4000A144\n\tSTATUS_RUNLEVEL_SWITCH_AGENT_TIMEOUT                                      NTStatus      = 0xC000A145\n\tSTATUS_RUNLEVEL_SWITCH_IN_PROGRESS                                        NTStatus      = 0xC000A146\n\tSTATUS_NOT_APPCONTAINER                                                   NTStatus      = 0xC000A200\n\tSTATUS_NOT_SUPPORTED_IN_APPCONTAINER                                      NTStatus      = 0xC000A201\n\tSTATUS_INVALID_PACKAGE_SID_LENGTH                                         NTStatus      = 0xC000A202\n\tSTATUS_LPAC_ACCESS_DENIED                                                 NTStatus      = 0xC000A203\n\tSTATUS_ADMINLESS_ACCESS_DENIED                                            NTStatus      = 0xC000A204\n\tSTATUS_APP_DATA_NOT_FOUND                                                 NTStatus      = 0xC000A281\n\tSTATUS_APP_DATA_EXPIRED                                                   NTStatus      = 0xC000A282\n\tSTATUS_APP_DATA_CORRUPT                                                   NTStatus      = 0xC000A283\n\tSTATUS_APP_DATA_LIMIT_EXCEEDED                                            NTStatus      = 0xC000A284\n\tSTATUS_APP_DATA_REBOOT_REQUIRED                                           NTStatus      = 0xC000A285\n\tSTATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED                                     NTStatus      = 0xC000A2A1\n\tSTATUS_OFFLOAD_WRITE_FLT_NOT_SUPPORTED                                    NTStatus      = 0xC000A2A2\n\tSTATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED                                    NTStatus      = 0xC000A2A3\n\tSTATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED                                   NTStatus      = 0xC000A2A4\n\tSTATUS_WOF_WIM_HEADER_CORRUPT                                             NTStatus      = 0xC000A2A5\n\tSTATUS_WOF_WIM_RESOURCE_TABLE_CORRUPT                                     NTStatus      = 0xC000A2A6\n\tSTATUS_WOF_FILE_RESOURCE_TABLE_CORRUPT                                    NTStatus      = 0xC000A2A7\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE                             NTStatus      = 0xC000CE01\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT                        NTStatus      = 0xC000CE02\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_BUSY                                    NTStatus      = 0xC000CE03\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN                        NTStatus      = 0xC000CE04\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION                       NTStatus      = 0xC000CE05\n\tSTATUS_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT                              NTStatus      = 0xC000CF00\n\tSTATUS_CLOUD_FILE_PROVIDER_NOT_RUNNING                                    NTStatus      = 0xC000CF01\n\tSTATUS_CLOUD_FILE_METADATA_CORRUPT                                        NTStatus      = 0xC000CF02\n\tSTATUS_CLOUD_FILE_METADATA_TOO_LARGE                                      NTStatus      = 0xC000CF03\n\tSTATUS_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE                                 NTStatus      = 0x8000CF04\n\tSTATUS_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS                                 NTStatus      = 0x8000CF05\n\tSTATUS_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED                          NTStatus      = 0xC000CF06\n\tSTATUS_NOT_A_CLOUD_FILE                                                   NTStatus      = 0xC000CF07\n\tSTATUS_CLOUD_FILE_NOT_IN_SYNC                                             NTStatus      = 0xC000CF08\n\tSTATUS_CLOUD_FILE_ALREADY_CONNECTED                                       NTStatus      = 0xC000CF09\n\tSTATUS_CLOUD_FILE_NOT_SUPPORTED                                           NTStatus      = 0xC000CF0A\n\tSTATUS_CLOUD_FILE_INVALID_REQUEST                                         NTStatus      = 0xC000CF0B\n\tSTATUS_CLOUD_FILE_READ_ONLY_VOLUME                                        NTStatus      = 0xC000CF0C\n\tSTATUS_CLOUD_FILE_CONNECTED_PROVIDER_ONLY                                 NTStatus      = 0xC000CF0D\n\tSTATUS_CLOUD_FILE_VALIDATION_FAILED                                       NTStatus      = 0xC000CF0E\n\tSTATUS_CLOUD_FILE_AUTHENTICATION_FAILED                                   NTStatus      = 0xC000CF0F\n\tSTATUS_CLOUD_FILE_INSUFFICIENT_RESOURCES                                  NTStatus      = 0xC000CF10\n\tSTATUS_CLOUD_FILE_NETWORK_UNAVAILABLE                                     NTStatus      = 0xC000CF11\n\tSTATUS_CLOUD_FILE_UNSUCCESSFUL                                            NTStatus      = 0xC000CF12\n\tSTATUS_CLOUD_FILE_NOT_UNDER_SYNC_ROOT                                     NTStatus      = 0xC000CF13\n\tSTATUS_CLOUD_FILE_IN_USE                                                  NTStatus      = 0xC000CF14\n\tSTATUS_CLOUD_FILE_PINNED                                                  NTStatus      = 0xC000CF15\n\tSTATUS_CLOUD_FILE_REQUEST_ABORTED                                         NTStatus      = 0xC000CF16\n\tSTATUS_CLOUD_FILE_PROPERTY_CORRUPT                                        NTStatus      = 0xC000CF17\n\tSTATUS_CLOUD_FILE_ACCESS_DENIED                                           NTStatus      = 0xC000CF18\n\tSTATUS_CLOUD_FILE_INCOMPATIBLE_HARDLINKS                                  NTStatus      = 0xC000CF19\n\tSTATUS_CLOUD_FILE_PROPERTY_LOCK_CONFLICT                                  NTStatus      = 0xC000CF1A\n\tSTATUS_CLOUD_FILE_REQUEST_CANCELED                                        NTStatus      = 0xC000CF1B\n\tSTATUS_CLOUD_FILE_PROVIDER_TERMINATED                                     NTStatus      = 0xC000CF1D\n\tSTATUS_NOT_A_CLOUD_SYNC_ROOT                                              NTStatus      = 0xC000CF1E\n\tSTATUS_CLOUD_FILE_REQUEST_TIMEOUT                                         NTStatus      = 0xC000CF1F\n\tSTATUS_ACPI_INVALID_OPCODE                                                NTStatus      = 0xC0140001\n\tSTATUS_ACPI_STACK_OVERFLOW                                                NTStatus      = 0xC0140002\n\tSTATUS_ACPI_ASSERT_FAILED                                                 NTStatus      = 0xC0140003\n\tSTATUS_ACPI_INVALID_INDEX                                                 NTStatus      = 0xC0140004\n\tSTATUS_ACPI_INVALID_ARGUMENT                                              NTStatus      = 0xC0140005\n\tSTATUS_ACPI_FATAL                                                         NTStatus      = 0xC0140006\n\tSTATUS_ACPI_INVALID_SUPERNAME                                             NTStatus      = 0xC0140007\n\tSTATUS_ACPI_INVALID_ARGTYPE                                               NTStatus      = 0xC0140008\n\tSTATUS_ACPI_INVALID_OBJTYPE                                               NTStatus      = 0xC0140009\n\tSTATUS_ACPI_INVALID_TARGETTYPE                                            NTStatus      = 0xC014000A\n\tSTATUS_ACPI_INCORRECT_ARGUMENT_COUNT                                      NTStatus      = 0xC014000B\n\tSTATUS_ACPI_ADDRESS_NOT_MAPPED                                            NTStatus      = 0xC014000C\n\tSTATUS_ACPI_INVALID_EVENTTYPE                                             NTStatus      = 0xC014000D\n\tSTATUS_ACPI_HANDLER_COLLISION                                             NTStatus      = 0xC014000E\n\tSTATUS_ACPI_INVALID_DATA                                                  NTStatus      = 0xC014000F\n\tSTATUS_ACPI_INVALID_REGION                                                NTStatus      = 0xC0140010\n\tSTATUS_ACPI_INVALID_ACCESS_SIZE                                           NTStatus      = 0xC0140011\n\tSTATUS_ACPI_ACQUIRE_GLOBAL_LOCK                                           NTStatus      = 0xC0140012\n\tSTATUS_ACPI_ALREADY_INITIALIZED                                           NTStatus      = 0xC0140013\n\tSTATUS_ACPI_NOT_INITIALIZED                                               NTStatus      = 0xC0140014\n\tSTATUS_ACPI_INVALID_MUTEX_LEVEL                                           NTStatus      = 0xC0140015\n\tSTATUS_ACPI_MUTEX_NOT_OWNED                                               NTStatus      = 0xC0140016\n\tSTATUS_ACPI_MUTEX_NOT_OWNER                                               NTStatus      = 0xC0140017\n\tSTATUS_ACPI_RS_ACCESS                                                     NTStatus      = 0xC0140018\n\tSTATUS_ACPI_INVALID_TABLE                                                 NTStatus      = 0xC0140019\n\tSTATUS_ACPI_REG_HANDLER_FAILED                                            NTStatus      = 0xC0140020\n\tSTATUS_ACPI_POWER_REQUEST_FAILED                                          NTStatus      = 0xC0140021\n\tSTATUS_CTX_WINSTATION_NAME_INVALID                                        NTStatus      = 0xC00A0001\n\tSTATUS_CTX_INVALID_PD                                                     NTStatus      = 0xC00A0002\n\tSTATUS_CTX_PD_NOT_FOUND                                                   NTStatus      = 0xC00A0003\n\tSTATUS_CTX_CDM_CONNECT                                                    NTStatus      = 0x400A0004\n\tSTATUS_CTX_CDM_DISCONNECT                                                 NTStatus      = 0x400A0005\n\tSTATUS_CTX_CLOSE_PENDING                                                  NTStatus      = 0xC00A0006\n\tSTATUS_CTX_NO_OUTBUF                                                      NTStatus      = 0xC00A0007\n\tSTATUS_CTX_MODEM_INF_NOT_FOUND                                            NTStatus      = 0xC00A0008\n\tSTATUS_CTX_INVALID_MODEMNAME                                              NTStatus      = 0xC00A0009\n\tSTATUS_CTX_RESPONSE_ERROR                                                 NTStatus      = 0xC00A000A\n\tSTATUS_CTX_MODEM_RESPONSE_TIMEOUT                                         NTStatus      = 0xC00A000B\n\tSTATUS_CTX_MODEM_RESPONSE_NO_CARRIER                                      NTStatus      = 0xC00A000C\n\tSTATUS_CTX_MODEM_RESPONSE_NO_DIALTONE                                     NTStatus      = 0xC00A000D\n\tSTATUS_CTX_MODEM_RESPONSE_BUSY                                            NTStatus      = 0xC00A000E\n\tSTATUS_CTX_MODEM_RESPONSE_VOICE                                           NTStatus      = 0xC00A000F\n\tSTATUS_CTX_TD_ERROR                                                       NTStatus      = 0xC00A0010\n\tSTATUS_CTX_LICENSE_CLIENT_INVALID                                         NTStatus      = 0xC00A0012\n\tSTATUS_CTX_LICENSE_NOT_AVAILABLE                                          NTStatus      = 0xC00A0013\n\tSTATUS_CTX_LICENSE_EXPIRED                                                NTStatus      = 0xC00A0014\n\tSTATUS_CTX_WINSTATION_NOT_FOUND                                           NTStatus      = 0xC00A0015\n\tSTATUS_CTX_WINSTATION_NAME_COLLISION                                      NTStatus      = 0xC00A0016\n\tSTATUS_CTX_WINSTATION_BUSY                                                NTStatus      = 0xC00A0017\n\tSTATUS_CTX_BAD_VIDEO_MODE                                                 NTStatus      = 0xC00A0018\n\tSTATUS_CTX_GRAPHICS_INVALID                                               NTStatus      = 0xC00A0022\n\tSTATUS_CTX_NOT_CONSOLE                                                    NTStatus      = 0xC00A0024\n\tSTATUS_CTX_CLIENT_QUERY_TIMEOUT                                           NTStatus      = 0xC00A0026\n\tSTATUS_CTX_CONSOLE_DISCONNECT                                             NTStatus      = 0xC00A0027\n\tSTATUS_CTX_CONSOLE_CONNECT                                                NTStatus      = 0xC00A0028\n\tSTATUS_CTX_SHADOW_DENIED                                                  NTStatus      = 0xC00A002A\n\tSTATUS_CTX_WINSTATION_ACCESS_DENIED                                       NTStatus      = 0xC00A002B\n\tSTATUS_CTX_INVALID_WD                                                     NTStatus      = 0xC00A002E\n\tSTATUS_CTX_WD_NOT_FOUND                                                   NTStatus      = 0xC00A002F\n\tSTATUS_CTX_SHADOW_INVALID                                                 NTStatus      = 0xC00A0030\n\tSTATUS_CTX_SHADOW_DISABLED                                                NTStatus      = 0xC00A0031\n\tSTATUS_RDP_PROTOCOL_ERROR                                                 NTStatus      = 0xC00A0032\n\tSTATUS_CTX_CLIENT_LICENSE_NOT_SET                                         NTStatus      = 0xC00A0033\n\tSTATUS_CTX_CLIENT_LICENSE_IN_USE                                          NTStatus      = 0xC00A0034\n\tSTATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE                                    NTStatus      = 0xC00A0035\n\tSTATUS_CTX_SHADOW_NOT_RUNNING                                             NTStatus      = 0xC00A0036\n\tSTATUS_CTX_LOGON_DISABLED                                                 NTStatus      = 0xC00A0037\n\tSTATUS_CTX_SECURITY_LAYER_ERROR                                           NTStatus      = 0xC00A0038\n\tSTATUS_TS_INCOMPATIBLE_SESSIONS                                           NTStatus      = 0xC00A0039\n\tSTATUS_TS_VIDEO_SUBSYSTEM_ERROR                                           NTStatus      = 0xC00A003A\n\tSTATUS_PNP_BAD_MPS_TABLE                                                  NTStatus      = 0xC0040035\n\tSTATUS_PNP_TRANSLATION_FAILED                                             NTStatus      = 0xC0040036\n\tSTATUS_PNP_IRQ_TRANSLATION_FAILED                                         NTStatus      = 0xC0040037\n\tSTATUS_PNP_INVALID_ID                                                     NTStatus      = 0xC0040038\n\tSTATUS_IO_REISSUE_AS_CACHED                                               NTStatus      = 0xC0040039\n\tSTATUS_MUI_FILE_NOT_FOUND                                                 NTStatus      = 0xC00B0001\n\tSTATUS_MUI_INVALID_FILE                                                   NTStatus      = 0xC00B0002\n\tSTATUS_MUI_INVALID_RC_CONFIG                                              NTStatus      = 0xC00B0003\n\tSTATUS_MUI_INVALID_LOCALE_NAME                                            NTStatus      = 0xC00B0004\n\tSTATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME                                  NTStatus      = 0xC00B0005\n\tSTATUS_MUI_FILE_NOT_LOADED                                                NTStatus      = 0xC00B0006\n\tSTATUS_RESOURCE_ENUM_USER_STOP                                            NTStatus      = 0xC00B0007\n\tSTATUS_FLT_NO_HANDLER_DEFINED                                             NTStatus      = 0xC01C0001\n\tSTATUS_FLT_CONTEXT_ALREADY_DEFINED                                        NTStatus      = 0xC01C0002\n\tSTATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST                                   NTStatus      = 0xC01C0003\n\tSTATUS_FLT_DISALLOW_FAST_IO                                               NTStatus      = 0xC01C0004\n\tSTATUS_FLT_INVALID_NAME_REQUEST                                           NTStatus      = 0xC01C0005\n\tSTATUS_FLT_NOT_SAFE_TO_POST_OPERATION                                     NTStatus      = 0xC01C0006\n\tSTATUS_FLT_NOT_INITIALIZED                                                NTStatus      = 0xC01C0007\n\tSTATUS_FLT_FILTER_NOT_READY                                               NTStatus      = 0xC01C0008\n\tSTATUS_FLT_POST_OPERATION_CLEANUP                                         NTStatus      = 0xC01C0009\n\tSTATUS_FLT_INTERNAL_ERROR                                                 NTStatus      = 0xC01C000A\n\tSTATUS_FLT_DELETING_OBJECT                                                NTStatus      = 0xC01C000B\n\tSTATUS_FLT_MUST_BE_NONPAGED_POOL                                          NTStatus      = 0xC01C000C\n\tSTATUS_FLT_DUPLICATE_ENTRY                                                NTStatus      = 0xC01C000D\n\tSTATUS_FLT_CBDQ_DISABLED                                                  NTStatus      = 0xC01C000E\n\tSTATUS_FLT_DO_NOT_ATTACH                                                  NTStatus      = 0xC01C000F\n\tSTATUS_FLT_DO_NOT_DETACH                                                  NTStatus      = 0xC01C0010\n\tSTATUS_FLT_INSTANCE_ALTITUDE_COLLISION                                    NTStatus      = 0xC01C0011\n\tSTATUS_FLT_INSTANCE_NAME_COLLISION                                        NTStatus      = 0xC01C0012\n\tSTATUS_FLT_FILTER_NOT_FOUND                                               NTStatus      = 0xC01C0013\n\tSTATUS_FLT_VOLUME_NOT_FOUND                                               NTStatus      = 0xC01C0014\n\tSTATUS_FLT_INSTANCE_NOT_FOUND                                             NTStatus      = 0xC01C0015\n\tSTATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND                                   NTStatus      = 0xC01C0016\n\tSTATUS_FLT_INVALID_CONTEXT_REGISTRATION                                   NTStatus      = 0xC01C0017\n\tSTATUS_FLT_NAME_CACHE_MISS                                                NTStatus      = 0xC01C0018\n\tSTATUS_FLT_NO_DEVICE_OBJECT                                               NTStatus      = 0xC01C0019\n\tSTATUS_FLT_VOLUME_ALREADY_MOUNTED                                         NTStatus      = 0xC01C001A\n\tSTATUS_FLT_ALREADY_ENLISTED                                               NTStatus      = 0xC01C001B\n\tSTATUS_FLT_CONTEXT_ALREADY_LINKED                                         NTStatus      = 0xC01C001C\n\tSTATUS_FLT_NO_WAITER_FOR_REPLY                                            NTStatus      = 0xC01C0020\n\tSTATUS_FLT_REGISTRATION_BUSY                                              NTStatus      = 0xC01C0023\n\tSTATUS_SXS_SECTION_NOT_FOUND                                              NTStatus      = 0xC0150001\n\tSTATUS_SXS_CANT_GEN_ACTCTX                                                NTStatus      = 0xC0150002\n\tSTATUS_SXS_INVALID_ACTCTXDATA_FORMAT                                      NTStatus      = 0xC0150003\n\tSTATUS_SXS_ASSEMBLY_NOT_FOUND                                             NTStatus      = 0xC0150004\n\tSTATUS_SXS_MANIFEST_FORMAT_ERROR                                          NTStatus      = 0xC0150005\n\tSTATUS_SXS_MANIFEST_PARSE_ERROR                                           NTStatus      = 0xC0150006\n\tSTATUS_SXS_ACTIVATION_CONTEXT_DISABLED                                    NTStatus      = 0xC0150007\n\tSTATUS_SXS_KEY_NOT_FOUND                                                  NTStatus      = 0xC0150008\n\tSTATUS_SXS_VERSION_CONFLICT                                               NTStatus      = 0xC0150009\n\tSTATUS_SXS_WRONG_SECTION_TYPE                                             NTStatus      = 0xC015000A\n\tSTATUS_SXS_THREAD_QUERIES_DISABLED                                        NTStatus      = 0xC015000B\n\tSTATUS_SXS_ASSEMBLY_MISSING                                               NTStatus      = 0xC015000C\n\tSTATUS_SXS_RELEASE_ACTIVATION_CONTEXT                                     NTStatus      = 0x4015000D\n\tSTATUS_SXS_PROCESS_DEFAULT_ALREADY_SET                                    NTStatus      = 0xC015000E\n\tSTATUS_SXS_EARLY_DEACTIVATION                                             NTStatus      = 0xC015000F\n\tSTATUS_SXS_INVALID_DEACTIVATION                                           NTStatus      = 0xC0150010\n\tSTATUS_SXS_MULTIPLE_DEACTIVATION                                          NTStatus      = 0xC0150011\n\tSTATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY                        NTStatus      = 0xC0150012\n\tSTATUS_SXS_PROCESS_TERMINATION_REQUESTED                                  NTStatus      = 0xC0150013\n\tSTATUS_SXS_CORRUPT_ACTIVATION_STACK                                       NTStatus      = 0xC0150014\n\tSTATUS_SXS_CORRUPTION                                                     NTStatus      = 0xC0150015\n\tSTATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE                               NTStatus      = 0xC0150016\n\tSTATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME                                NTStatus      = 0xC0150017\n\tSTATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE                                   NTStatus      = 0xC0150018\n\tSTATUS_SXS_IDENTITY_PARSE_ERROR                                           NTStatus      = 0xC0150019\n\tSTATUS_SXS_COMPONENT_STORE_CORRUPT                                        NTStatus      = 0xC015001A\n\tSTATUS_SXS_FILE_HASH_MISMATCH                                             NTStatus      = 0xC015001B\n\tSTATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT                  NTStatus      = 0xC015001C\n\tSTATUS_SXS_IDENTITIES_DIFFERENT                                           NTStatus      = 0xC015001D\n\tSTATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT                                   NTStatus      = 0xC015001E\n\tSTATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY                                      NTStatus      = 0xC015001F\n\tSTATUS_ADVANCED_INSTALLER_FAILED                                          NTStatus      = 0xC0150020\n\tSTATUS_XML_ENCODING_MISMATCH                                              NTStatus      = 0xC0150021\n\tSTATUS_SXS_MANIFEST_TOO_BIG                                               NTStatus      = 0xC0150022\n\tSTATUS_SXS_SETTING_NOT_REGISTERED                                         NTStatus      = 0xC0150023\n\tSTATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE                                 NTStatus      = 0xC0150024\n\tSTATUS_SMI_PRIMITIVE_INSTALLER_FAILED                                     NTStatus      = 0xC0150025\n\tSTATUS_GENERIC_COMMAND_FAILED                                             NTStatus      = 0xC0150026\n\tSTATUS_SXS_FILE_HASH_MISSING                                              NTStatus      = 0xC0150027\n\tSTATUS_CLUSTER_INVALID_NODE                                               NTStatus      = 0xC0130001\n\tSTATUS_CLUSTER_NODE_EXISTS                                                NTStatus      = 0xC0130002\n\tSTATUS_CLUSTER_JOIN_IN_PROGRESS                                           NTStatus      = 0xC0130003\n\tSTATUS_CLUSTER_NODE_NOT_FOUND                                             NTStatus      = 0xC0130004\n\tSTATUS_CLUSTER_LOCAL_NODE_NOT_FOUND                                       NTStatus      = 0xC0130005\n\tSTATUS_CLUSTER_NETWORK_EXISTS                                             NTStatus      = 0xC0130006\n\tSTATUS_CLUSTER_NETWORK_NOT_FOUND                                          NTStatus      = 0xC0130007\n\tSTATUS_CLUSTER_NETINTERFACE_EXISTS                                        NTStatus      = 0xC0130008\n\tSTATUS_CLUSTER_NETINTERFACE_NOT_FOUND                                     NTStatus      = 0xC0130009\n\tSTATUS_CLUSTER_INVALID_REQUEST                                            NTStatus      = 0xC013000A\n\tSTATUS_CLUSTER_INVALID_NETWORK_PROVIDER                                   NTStatus      = 0xC013000B\n\tSTATUS_CLUSTER_NODE_DOWN                                                  NTStatus      = 0xC013000C\n\tSTATUS_CLUSTER_NODE_UNREACHABLE                                           NTStatus      = 0xC013000D\n\tSTATUS_CLUSTER_NODE_NOT_MEMBER                                            NTStatus      = 0xC013000E\n\tSTATUS_CLUSTER_JOIN_NOT_IN_PROGRESS                                       NTStatus      = 0xC013000F\n\tSTATUS_CLUSTER_INVALID_NETWORK                                            NTStatus      = 0xC0130010\n\tSTATUS_CLUSTER_NO_NET_ADAPTERS                                            NTStatus      = 0xC0130011\n\tSTATUS_CLUSTER_NODE_UP                                                    NTStatus      = 0xC0130012\n\tSTATUS_CLUSTER_NODE_PAUSED                                                NTStatus      = 0xC0130013\n\tSTATUS_CLUSTER_NODE_NOT_PAUSED                                            NTStatus      = 0xC0130014\n\tSTATUS_CLUSTER_NO_SECURITY_CONTEXT                                        NTStatus      = 0xC0130015\n\tSTATUS_CLUSTER_NETWORK_NOT_INTERNAL                                       NTStatus      = 0xC0130016\n\tSTATUS_CLUSTER_POISONED                                                   NTStatus      = 0xC0130017\n\tSTATUS_CLUSTER_NON_CSV_PATH                                               NTStatus      = 0xC0130018\n\tSTATUS_CLUSTER_CSV_VOLUME_NOT_LOCAL                                       NTStatus      = 0xC0130019\n\tSTATUS_CLUSTER_CSV_READ_OPLOCK_BREAK_IN_PROGRESS                          NTStatus      = 0xC0130020\n\tSTATUS_CLUSTER_CSV_AUTO_PAUSE_ERROR                                       NTStatus      = 0xC0130021\n\tSTATUS_CLUSTER_CSV_REDIRECTED                                             NTStatus      = 0xC0130022\n\tSTATUS_CLUSTER_CSV_NOT_REDIRECTED                                         NTStatus      = 0xC0130023\n\tSTATUS_CLUSTER_CSV_VOLUME_DRAINING                                        NTStatus      = 0xC0130024\n\tSTATUS_CLUSTER_CSV_SNAPSHOT_CREATION_IN_PROGRESS                          NTStatus      = 0xC0130025\n\tSTATUS_CLUSTER_CSV_VOLUME_DRAINING_SUCCEEDED_DOWNLEVEL                    NTStatus      = 0xC0130026\n\tSTATUS_CLUSTER_CSV_NO_SNAPSHOTS                                           NTStatus      = 0xC0130027\n\tSTATUS_CSV_IO_PAUSE_TIMEOUT                                               NTStatus      = 0xC0130028\n\tSTATUS_CLUSTER_CSV_INVALID_HANDLE                                         NTStatus      = 0xC0130029\n\tSTATUS_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR                          NTStatus      = 0xC0130030\n\tSTATUS_CLUSTER_CAM_TICKET_REPLAY_DETECTED                                 NTStatus      = 0xC0130031\n\tSTATUS_TRANSACTIONAL_CONFLICT                                             NTStatus      = 0xC0190001\n\tSTATUS_INVALID_TRANSACTION                                                NTStatus      = 0xC0190002\n\tSTATUS_TRANSACTION_NOT_ACTIVE                                             NTStatus      = 0xC0190003\n\tSTATUS_TM_INITIALIZATION_FAILED                                           NTStatus      = 0xC0190004\n\tSTATUS_RM_NOT_ACTIVE                                                      NTStatus      = 0xC0190005\n\tSTATUS_RM_METADATA_CORRUPT                                                NTStatus      = 0xC0190006\n\tSTATUS_TRANSACTION_NOT_JOINED                                             NTStatus      = 0xC0190007\n\tSTATUS_DIRECTORY_NOT_RM                                                   NTStatus      = 0xC0190008\n\tSTATUS_COULD_NOT_RESIZE_LOG                                               NTStatus      = 0x80190009\n\tSTATUS_TRANSACTIONS_UNSUPPORTED_REMOTE                                    NTStatus      = 0xC019000A\n\tSTATUS_LOG_RESIZE_INVALID_SIZE                                            NTStatus      = 0xC019000B\n\tSTATUS_REMOTE_FILE_VERSION_MISMATCH                                       NTStatus      = 0xC019000C\n\tSTATUS_CRM_PROTOCOL_ALREADY_EXISTS                                        NTStatus      = 0xC019000F\n\tSTATUS_TRANSACTION_PROPAGATION_FAILED                                     NTStatus      = 0xC0190010\n\tSTATUS_CRM_PROTOCOL_NOT_FOUND                                             NTStatus      = 0xC0190011\n\tSTATUS_TRANSACTION_SUPERIOR_EXISTS                                        NTStatus      = 0xC0190012\n\tSTATUS_TRANSACTION_REQUEST_NOT_VALID                                      NTStatus      = 0xC0190013\n\tSTATUS_TRANSACTION_NOT_REQUESTED                                          NTStatus      = 0xC0190014\n\tSTATUS_TRANSACTION_ALREADY_ABORTED                                        NTStatus      = 0xC0190015\n\tSTATUS_TRANSACTION_ALREADY_COMMITTED                                      NTStatus      = 0xC0190016\n\tSTATUS_TRANSACTION_INVALID_MARSHALL_BUFFER                                NTStatus      = 0xC0190017\n\tSTATUS_CURRENT_TRANSACTION_NOT_VALID                                      NTStatus      = 0xC0190018\n\tSTATUS_LOG_GROWTH_FAILED                                                  NTStatus      = 0xC0190019\n\tSTATUS_OBJECT_NO_LONGER_EXISTS                                            NTStatus      = 0xC0190021\n\tSTATUS_STREAM_MINIVERSION_NOT_FOUND                                       NTStatus      = 0xC0190022\n\tSTATUS_STREAM_MINIVERSION_NOT_VALID                                       NTStatus      = 0xC0190023\n\tSTATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION                NTStatus      = 0xC0190024\n\tSTATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT                           NTStatus      = 0xC0190025\n\tSTATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS                               NTStatus      = 0xC0190026\n\tSTATUS_HANDLE_NO_LONGER_VALID                                             NTStatus      = 0xC0190028\n\tSTATUS_NO_TXF_METADATA                                                    NTStatus      = 0x80190029\n\tSTATUS_LOG_CORRUPTION_DETECTED                                            NTStatus      = 0xC0190030\n\tSTATUS_CANT_RECOVER_WITH_HANDLE_OPEN                                      NTStatus      = 0x80190031\n\tSTATUS_RM_DISCONNECTED                                                    NTStatus      = 0xC0190032\n\tSTATUS_ENLISTMENT_NOT_SUPERIOR                                            NTStatus      = 0xC0190033\n\tSTATUS_RECOVERY_NOT_NEEDED                                                NTStatus      = 0x40190034\n\tSTATUS_RM_ALREADY_STARTED                                                 NTStatus      = 0x40190035\n\tSTATUS_FILE_IDENTITY_NOT_PERSISTENT                                       NTStatus      = 0xC0190036\n\tSTATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY                                NTStatus      = 0xC0190037\n\tSTATUS_CANT_CROSS_RM_BOUNDARY                                             NTStatus      = 0xC0190038\n\tSTATUS_TXF_DIR_NOT_EMPTY                                                  NTStatus      = 0xC0190039\n\tSTATUS_INDOUBT_TRANSACTIONS_EXIST                                         NTStatus      = 0xC019003A\n\tSTATUS_TM_VOLATILE                                                        NTStatus      = 0xC019003B\n\tSTATUS_ROLLBACK_TIMER_EXPIRED                                             NTStatus      = 0xC019003C\n\tSTATUS_TXF_ATTRIBUTE_CORRUPT                                              NTStatus      = 0xC019003D\n\tSTATUS_EFS_NOT_ALLOWED_IN_TRANSACTION                                     NTStatus      = 0xC019003E\n\tSTATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED                                     NTStatus      = 0xC019003F\n\tSTATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE                              NTStatus      = 0xC0190040\n\tSTATUS_TXF_METADATA_ALREADY_PRESENT                                       NTStatus      = 0x80190041\n\tSTATUS_TRANSACTION_SCOPE_CALLBACKS_NOT_SET                                NTStatus      = 0x80190042\n\tSTATUS_TRANSACTION_REQUIRED_PROMOTION                                     NTStatus      = 0xC0190043\n\tSTATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION                                 NTStatus      = 0xC0190044\n\tSTATUS_TRANSACTIONS_NOT_FROZEN                                            NTStatus      = 0xC0190045\n\tSTATUS_TRANSACTION_FREEZE_IN_PROGRESS                                     NTStatus      = 0xC0190046\n\tSTATUS_NOT_SNAPSHOT_VOLUME                                                NTStatus      = 0xC0190047\n\tSTATUS_NO_SAVEPOINT_WITH_OPEN_FILES                                       NTStatus      = 0xC0190048\n\tSTATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION                                  NTStatus      = 0xC0190049\n\tSTATUS_TM_IDENTITY_MISMATCH                                               NTStatus      = 0xC019004A\n\tSTATUS_FLOATED_SECTION                                                    NTStatus      = 0xC019004B\n\tSTATUS_CANNOT_ACCEPT_TRANSACTED_WORK                                      NTStatus      = 0xC019004C\n\tSTATUS_CANNOT_ABORT_TRANSACTIONS                                          NTStatus      = 0xC019004D\n\tSTATUS_TRANSACTION_NOT_FOUND                                              NTStatus      = 0xC019004E\n\tSTATUS_RESOURCEMANAGER_NOT_FOUND                                          NTStatus      = 0xC019004F\n\tSTATUS_ENLISTMENT_NOT_FOUND                                               NTStatus      = 0xC0190050\n\tSTATUS_TRANSACTIONMANAGER_NOT_FOUND                                       NTStatus      = 0xC0190051\n\tSTATUS_TRANSACTIONMANAGER_NOT_ONLINE                                      NTStatus      = 0xC0190052\n\tSTATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION                         NTStatus      = 0xC0190053\n\tSTATUS_TRANSACTION_NOT_ROOT                                               NTStatus      = 0xC0190054\n\tSTATUS_TRANSACTION_OBJECT_EXPIRED                                         NTStatus      = 0xC0190055\n\tSTATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION                             NTStatus      = 0xC0190056\n\tSTATUS_TRANSACTION_RESPONSE_NOT_ENLISTED                                  NTStatus      = 0xC0190057\n\tSTATUS_TRANSACTION_RECORD_TOO_LONG                                        NTStatus      = 0xC0190058\n\tSTATUS_NO_LINK_TRACKING_IN_TRANSACTION                                    NTStatus      = 0xC0190059\n\tSTATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION                             NTStatus      = 0xC019005A\n\tSTATUS_TRANSACTION_INTEGRITY_VIOLATED                                     NTStatus      = 0xC019005B\n\tSTATUS_TRANSACTIONMANAGER_IDENTITY_MISMATCH                               NTStatus      = 0xC019005C\n\tSTATUS_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT                                   NTStatus      = 0xC019005D\n\tSTATUS_TRANSACTION_MUST_WRITETHROUGH                                      NTStatus      = 0xC019005E\n\tSTATUS_TRANSACTION_NO_SUPERIOR                                            NTStatus      = 0xC019005F\n\tSTATUS_EXPIRED_HANDLE                                                     NTStatus      = 0xC0190060\n\tSTATUS_TRANSACTION_NOT_ENLISTED                                           NTStatus      = 0xC0190061\n\tSTATUS_LOG_SECTOR_INVALID                                                 NTStatus      = 0xC01A0001\n\tSTATUS_LOG_SECTOR_PARITY_INVALID                                          NTStatus      = 0xC01A0002\n\tSTATUS_LOG_SECTOR_REMAPPED                                                NTStatus      = 0xC01A0003\n\tSTATUS_LOG_BLOCK_INCOMPLETE                                               NTStatus      = 0xC01A0004\n\tSTATUS_LOG_INVALID_RANGE                                                  NTStatus      = 0xC01A0005\n\tSTATUS_LOG_BLOCKS_EXHAUSTED                                               NTStatus      = 0xC01A0006\n\tSTATUS_LOG_READ_CONTEXT_INVALID                                           NTStatus      = 0xC01A0007\n\tSTATUS_LOG_RESTART_INVALID                                                NTStatus      = 0xC01A0008\n\tSTATUS_LOG_BLOCK_VERSION                                                  NTStatus      = 0xC01A0009\n\tSTATUS_LOG_BLOCK_INVALID                                                  NTStatus      = 0xC01A000A\n\tSTATUS_LOG_READ_MODE_INVALID                                              NTStatus      = 0xC01A000B\n\tSTATUS_LOG_NO_RESTART                                                     NTStatus      = 0x401A000C\n\tSTATUS_LOG_METADATA_CORRUPT                                               NTStatus      = 0xC01A000D\n\tSTATUS_LOG_METADATA_INVALID                                               NTStatus      = 0xC01A000E\n\tSTATUS_LOG_METADATA_INCONSISTENT                                          NTStatus      = 0xC01A000F\n\tSTATUS_LOG_RESERVATION_INVALID                                            NTStatus      = 0xC01A0010\n\tSTATUS_LOG_CANT_DELETE                                                    NTStatus      = 0xC01A0011\n\tSTATUS_LOG_CONTAINER_LIMIT_EXCEEDED                                       NTStatus      = 0xC01A0012\n\tSTATUS_LOG_START_OF_LOG                                                   NTStatus      = 0xC01A0013\n\tSTATUS_LOG_POLICY_ALREADY_INSTALLED                                       NTStatus      = 0xC01A0014\n\tSTATUS_LOG_POLICY_NOT_INSTALLED                                           NTStatus      = 0xC01A0015\n\tSTATUS_LOG_POLICY_INVALID                                                 NTStatus      = 0xC01A0016\n\tSTATUS_LOG_POLICY_CONFLICT                                                NTStatus      = 0xC01A0017\n\tSTATUS_LOG_PINNED_ARCHIVE_TAIL                                            NTStatus      = 0xC01A0018\n\tSTATUS_LOG_RECORD_NONEXISTENT                                             NTStatus      = 0xC01A0019\n\tSTATUS_LOG_RECORDS_RESERVED_INVALID                                       NTStatus      = 0xC01A001A\n\tSTATUS_LOG_SPACE_RESERVED_INVALID                                         NTStatus      = 0xC01A001B\n\tSTATUS_LOG_TAIL_INVALID                                                   NTStatus      = 0xC01A001C\n\tSTATUS_LOG_FULL                                                           NTStatus      = 0xC01A001D\n\tSTATUS_LOG_MULTIPLEXED                                                    NTStatus      = 0xC01A001E\n\tSTATUS_LOG_DEDICATED                                                      NTStatus      = 0xC01A001F\n\tSTATUS_LOG_ARCHIVE_NOT_IN_PROGRESS                                        NTStatus      = 0xC01A0020\n\tSTATUS_LOG_ARCHIVE_IN_PROGRESS                                            NTStatus      = 0xC01A0021\n\tSTATUS_LOG_EPHEMERAL                                                      NTStatus      = 0xC01A0022\n\tSTATUS_LOG_NOT_ENOUGH_CONTAINERS                                          NTStatus      = 0xC01A0023\n\tSTATUS_LOG_CLIENT_ALREADY_REGISTERED                                      NTStatus      = 0xC01A0024\n\tSTATUS_LOG_CLIENT_NOT_REGISTERED                                          NTStatus      = 0xC01A0025\n\tSTATUS_LOG_FULL_HANDLER_IN_PROGRESS                                       NTStatus      = 0xC01A0026\n\tSTATUS_LOG_CONTAINER_READ_FAILED                                          NTStatus      = 0xC01A0027\n\tSTATUS_LOG_CONTAINER_WRITE_FAILED                                         NTStatus      = 0xC01A0028\n\tSTATUS_LOG_CONTAINER_OPEN_FAILED                                          NTStatus      = 0xC01A0029\n\tSTATUS_LOG_CONTAINER_STATE_INVALID                                        NTStatus      = 0xC01A002A\n\tSTATUS_LOG_STATE_INVALID                                                  NTStatus      = 0xC01A002B\n\tSTATUS_LOG_PINNED                                                         NTStatus      = 0xC01A002C\n\tSTATUS_LOG_METADATA_FLUSH_FAILED                                          NTStatus      = 0xC01A002D\n\tSTATUS_LOG_INCONSISTENT_SECURITY                                          NTStatus      = 0xC01A002E\n\tSTATUS_LOG_APPENDED_FLUSH_FAILED                                          NTStatus      = 0xC01A002F\n\tSTATUS_LOG_PINNED_RESERVATION                                             NTStatus      = 0xC01A0030\n\tSTATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD                                   NTStatus      = 0xC01B00EA\n\tSTATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD_RECOVERED                         NTStatus      = 0x801B00EB\n\tSTATUS_VIDEO_DRIVER_DEBUG_REPORT_REQUEST                                  NTStatus      = 0x401B00EC\n\tSTATUS_MONITOR_NO_DESCRIPTOR                                              NTStatus      = 0xC01D0001\n\tSTATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT                                  NTStatus      = 0xC01D0002\n\tSTATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM                                NTStatus      = 0xC01D0003\n\tSTATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK                              NTStatus      = 0xC01D0004\n\tSTATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED                          NTStatus      = 0xC01D0005\n\tSTATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK                         NTStatus      = 0xC01D0006\n\tSTATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK                         NTStatus      = 0xC01D0007\n\tSTATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA                                    NTStatus      = 0xC01D0008\n\tSTATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK                              NTStatus      = 0xC01D0009\n\tSTATUS_MONITOR_INVALID_MANUFACTURE_DATE                                   NTStatus      = 0xC01D000A\n\tSTATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER                                  NTStatus      = 0xC01E0000\n\tSTATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER                                   NTStatus      = 0xC01E0001\n\tSTATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER                                   NTStatus      = 0xC01E0002\n\tSTATUS_GRAPHICS_ADAPTER_WAS_RESET                                         NTStatus      = 0xC01E0003\n\tSTATUS_GRAPHICS_INVALID_DRIVER_MODEL                                      NTStatus      = 0xC01E0004\n\tSTATUS_GRAPHICS_PRESENT_MODE_CHANGED                                      NTStatus      = 0xC01E0005\n\tSTATUS_GRAPHICS_PRESENT_OCCLUDED                                          NTStatus      = 0xC01E0006\n\tSTATUS_GRAPHICS_PRESENT_DENIED                                            NTStatus      = 0xC01E0007\n\tSTATUS_GRAPHICS_CANNOTCOLORCONVERT                                        NTStatus      = 0xC01E0008\n\tSTATUS_GRAPHICS_DRIVER_MISMATCH                                           NTStatus      = 0xC01E0009\n\tSTATUS_GRAPHICS_PARTIAL_DATA_POPULATED                                    NTStatus      = 0x401E000A\n\tSTATUS_GRAPHICS_PRESENT_REDIRECTION_DISABLED                              NTStatus      = 0xC01E000B\n\tSTATUS_GRAPHICS_PRESENT_UNOCCLUDED                                        NTStatus      = 0xC01E000C\n\tSTATUS_GRAPHICS_WINDOWDC_NOT_AVAILABLE                                    NTStatus      = 0xC01E000D\n\tSTATUS_GRAPHICS_WINDOWLESS_PRESENT_DISABLED                               NTStatus      = 0xC01E000E\n\tSTATUS_GRAPHICS_PRESENT_INVALID_WINDOW                                    NTStatus      = 0xC01E000F\n\tSTATUS_GRAPHICS_PRESENT_BUFFER_NOT_BOUND                                  NTStatus      = 0xC01E0010\n\tSTATUS_GRAPHICS_VAIL_STATE_CHANGED                                        NTStatus      = 0xC01E0011\n\tSTATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN                        NTStatus      = 0xC01E0012\n\tSTATUS_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED                           NTStatus      = 0xC01E0013\n\tSTATUS_GRAPHICS_NO_VIDEO_MEMORY                                           NTStatus      = 0xC01E0100\n\tSTATUS_GRAPHICS_CANT_LOCK_MEMORY                                          NTStatus      = 0xC01E0101\n\tSTATUS_GRAPHICS_ALLOCATION_BUSY                                           NTStatus      = 0xC01E0102\n\tSTATUS_GRAPHICS_TOO_MANY_REFERENCES                                       NTStatus      = 0xC01E0103\n\tSTATUS_GRAPHICS_TRY_AGAIN_LATER                                           NTStatus      = 0xC01E0104\n\tSTATUS_GRAPHICS_TRY_AGAIN_NOW                                             NTStatus      = 0xC01E0105\n\tSTATUS_GRAPHICS_ALLOCATION_INVALID                                        NTStatus      = 0xC01E0106\n\tSTATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE                          NTStatus      = 0xC01E0107\n\tSTATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED                          NTStatus      = 0xC01E0108\n\tSTATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION                              NTStatus      = 0xC01E0109\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_USAGE                                  NTStatus      = 0xC01E0110\n\tSTATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION                             NTStatus      = 0xC01E0111\n\tSTATUS_GRAPHICS_ALLOCATION_CLOSED                                         NTStatus      = 0xC01E0112\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE                               NTStatus      = 0xC01E0113\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE                                 NTStatus      = 0xC01E0114\n\tSTATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE                                   NTStatus      = 0xC01E0115\n\tSTATUS_GRAPHICS_ALLOCATION_CONTENT_LOST                                   NTStatus      = 0xC01E0116\n\tSTATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE                                   NTStatus      = 0xC01E0200\n\tSTATUS_GRAPHICS_SKIP_ALLOCATION_PREPARATION                               NTStatus      = 0x401E0201\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY                                    NTStatus      = 0xC01E0300\n\tSTATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED                              NTStatus      = 0xC01E0301\n\tSTATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED                    NTStatus      = 0xC01E0302\n\tSTATUS_GRAPHICS_INVALID_VIDPN                                             NTStatus      = 0xC01E0303\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE                              NTStatus      = 0xC01E0304\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET                              NTStatus      = 0xC01E0305\n\tSTATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED                              NTStatus      = 0xC01E0306\n\tSTATUS_GRAPHICS_MODE_NOT_PINNED                                           NTStatus      = 0x401E0307\n\tSTATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET                               NTStatus      = 0xC01E0308\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET                               NTStatus      = 0xC01E0309\n\tSTATUS_GRAPHICS_INVALID_FREQUENCY                                         NTStatus      = 0xC01E030A\n\tSTATUS_GRAPHICS_INVALID_ACTIVE_REGION                                     NTStatus      = 0xC01E030B\n\tSTATUS_GRAPHICS_INVALID_TOTAL_REGION                                      NTStatus      = 0xC01E030C\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE                         NTStatus      = 0xC01E0310\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE                         NTStatus      = 0xC01E0311\n\tSTATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET                            NTStatus      = 0xC01E0312\n\tSTATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY                                  NTStatus      = 0xC01E0313\n\tSTATUS_GRAPHICS_MODE_ALREADY_IN_MODESET                                   NTStatus      = 0xC01E0314\n\tSTATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET                             NTStatus      = 0xC01E0315\n\tSTATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET                             NTStatus      = 0xC01E0316\n\tSTATUS_GRAPHICS_SOURCE_ALREADY_IN_SET                                     NTStatus      = 0xC01E0317\n\tSTATUS_GRAPHICS_TARGET_ALREADY_IN_SET                                     NTStatus      = 0xC01E0318\n\tSTATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH                                NTStatus      = 0xC01E0319\n\tSTATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY                             NTStatus      = 0xC01E031A\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET                         NTStatus      = 0xC01E031B\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE                            NTStatus      = 0xC01E031C\n\tSTATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET                                 NTStatus      = 0xC01E031D\n\tSTATUS_GRAPHICS_NO_PREFERRED_MODE                                         NTStatus      = 0x401E031E\n\tSTATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET                             NTStatus      = 0xC01E031F\n\tSTATUS_GRAPHICS_STALE_MODESET                                             NTStatus      = 0xC01E0320\n\tSTATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET                             NTStatus      = 0xC01E0321\n\tSTATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE                               NTStatus      = 0xC01E0322\n\tSTATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN                           NTStatus      = 0xC01E0323\n\tSTATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE                                    NTStatus      = 0xC01E0324\n\tSTATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION           NTStatus      = 0xC01E0325\n\tSTATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES                   NTStatus      = 0xC01E0326\n\tSTATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY                                      NTStatus      = 0xC01E0327\n\tSTATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE                     NTStatus      = 0xC01E0328\n\tSTATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET                     NTStatus      = 0xC01E0329\n\tSTATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET                              NTStatus      = 0xC01E032A\n\tSTATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR                                 NTStatus      = 0xC01E032B\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET                              NTStatus      = 0xC01E032C\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET                          NTStatus      = 0xC01E032D\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE                       NTStatus      = 0xC01E032E\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE                          NTStatus      = 0xC01E032F\n\tSTATUS_GRAPHICS_RESOURCES_NOT_RELATED                                     NTStatus      = 0xC01E0330\n\tSTATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE                                  NTStatus      = 0xC01E0331\n\tSTATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE                                  NTStatus      = 0xC01E0332\n\tSTATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET                                 NTStatus      = 0xC01E0333\n\tSTATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER              NTStatus      = 0xC01E0334\n\tSTATUS_GRAPHICS_NO_VIDPNMGR                                               NTStatus      = 0xC01E0335\n\tSTATUS_GRAPHICS_NO_ACTIVE_VIDPN                                           NTStatus      = 0xC01E0336\n\tSTATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY                                      NTStatus      = 0xC01E0337\n\tSTATUS_GRAPHICS_MONITOR_NOT_CONNECTED                                     NTStatus      = 0xC01E0338\n\tSTATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY                                    NTStatus      = 0xC01E0339\n\tSTATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE                               NTStatus      = 0xC01E033A\n\tSTATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE                                NTStatus      = 0xC01E033B\n\tSTATUS_GRAPHICS_INVALID_STRIDE                                            NTStatus      = 0xC01E033C\n\tSTATUS_GRAPHICS_INVALID_PIXELFORMAT                                       NTStatus      = 0xC01E033D\n\tSTATUS_GRAPHICS_INVALID_COLORBASIS                                        NTStatus      = 0xC01E033E\n\tSTATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE                              NTStatus      = 0xC01E033F\n\tSTATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY                                    NTStatus      = 0xC01E0340\n\tSTATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT                        NTStatus      = 0xC01E0341\n\tSTATUS_GRAPHICS_VIDPN_SOURCE_IN_USE                                       NTStatus      = 0xC01E0342\n\tSTATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN                                  NTStatus      = 0xC01E0343\n\tSTATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL                           NTStatus      = 0xC01E0344\n\tSTATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION              NTStatus      = 0xC01E0345\n\tSTATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED        NTStatus      = 0xC01E0346\n\tSTATUS_GRAPHICS_INVALID_GAMMA_RAMP                                        NTStatus      = 0xC01E0347\n\tSTATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED                                  NTStatus      = 0xC01E0348\n\tSTATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED                               NTStatus      = 0xC01E0349\n\tSTATUS_GRAPHICS_MODE_NOT_IN_MODESET                                       NTStatus      = 0xC01E034A\n\tSTATUS_GRAPHICS_DATASET_IS_EMPTY                                          NTStatus      = 0x401E034B\n\tSTATUS_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET                               NTStatus      = 0x401E034C\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON              NTStatus      = 0xC01E034D\n\tSTATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE                                 NTStatus      = 0xC01E034E\n\tSTATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE                               NTStatus      = 0xC01E034F\n\tSTATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS                         NTStatus      = 0xC01E0350\n\tSTATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED           NTStatus      = 0x401E0351\n\tSTATUS_GRAPHICS_INVALID_SCANLINE_ORDERING                                 NTStatus      = 0xC01E0352\n\tSTATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED                              NTStatus      = 0xC01E0353\n\tSTATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS                          NTStatus      = 0xC01E0354\n\tSTATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT                               NTStatus      = 0xC01E0355\n\tSTATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM                            NTStatus      = 0xC01E0356\n\tSTATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN                         NTStatus      = 0xC01E0357\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT                 NTStatus      = 0xC01E0358\n\tSTATUS_GRAPHICS_MAX_NUM_PATHS_REACHED                                     NTStatus      = 0xC01E0359\n\tSTATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION                        NTStatus      = 0xC01E035A\n\tSTATUS_GRAPHICS_INVALID_CLIENT_TYPE                                       NTStatus      = 0xC01E035B\n\tSTATUS_GRAPHICS_CLIENTVIDPN_NOT_SET                                       NTStatus      = 0xC01E035C\n\tSTATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED                         NTStatus      = 0xC01E0400\n\tSTATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED                            NTStatus      = 0xC01E0401\n\tSTATUS_GRAPHICS_UNKNOWN_CHILD_STATUS                                      NTStatus      = 0x401E042F\n\tSTATUS_GRAPHICS_NOT_A_LINKED_ADAPTER                                      NTStatus      = 0xC01E0430\n\tSTATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED                                   NTStatus      = 0xC01E0431\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED                                 NTStatus      = 0xC01E0432\n\tSTATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY                                   NTStatus      = 0xC01E0433\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_STARTED                                    NTStatus      = 0xC01E0434\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON                                 NTStatus      = 0xC01E0435\n\tSTATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE                            NTStatus      = 0xC01E0436\n\tSTATUS_GRAPHICS_LEADLINK_START_DEFERRED                                   NTStatus      = 0x401E0437\n\tSTATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER                                    NTStatus      = 0xC01E0438\n\tSTATUS_GRAPHICS_POLLING_TOO_FREQUENTLY                                    NTStatus      = 0x401E0439\n\tSTATUS_GRAPHICS_START_DEFERRED                                            NTStatus      = 0x401E043A\n\tSTATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED                               NTStatus      = 0xC01E043B\n\tSTATUS_GRAPHICS_DEPENDABLE_CHILD_STATUS                                   NTStatus      = 0x401E043C\n\tSTATUS_GRAPHICS_OPM_NOT_SUPPORTED                                         NTStatus      = 0xC01E0500\n\tSTATUS_GRAPHICS_COPP_NOT_SUPPORTED                                        NTStatus      = 0xC01E0501\n\tSTATUS_GRAPHICS_UAB_NOT_SUPPORTED                                         NTStatus      = 0xC01E0502\n\tSTATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS                          NTStatus      = 0xC01E0503\n\tSTATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST                            NTStatus      = 0xC01E0505\n\tSTATUS_GRAPHICS_OPM_INTERNAL_ERROR                                        NTStatus      = 0xC01E050B\n\tSTATUS_GRAPHICS_OPM_INVALID_HANDLE                                        NTStatus      = 0xC01E050C\n\tSTATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH                            NTStatus      = 0xC01E050E\n\tSTATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED                                 NTStatus      = 0xC01E050F\n\tSTATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED                                  NTStatus      = 0xC01E0510\n\tSTATUS_GRAPHICS_PVP_HFS_FAILED                                            NTStatus      = 0xC01E0511\n\tSTATUS_GRAPHICS_OPM_INVALID_SRM                                           NTStatus      = 0xC01E0512\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP                          NTStatus      = 0xC01E0513\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP                           NTStatus      = 0xC01E0514\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA                         NTStatus      = 0xC01E0515\n\tSTATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET                                    NTStatus      = 0xC01E0516\n\tSTATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH                                   NTStatus      = 0xC01E0517\n\tSTATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE                      NTStatus      = 0xC01E0518\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS                     NTStatus      = 0xC01E051A\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS         NTStatus      = 0xC01E051C\n\tSTATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST                           NTStatus      = 0xC01E051D\n\tSTATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR                                 NTStatus      = 0xC01E051E\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS          NTStatus      = 0xC01E051F\n\tSTATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED                               NTStatus      = 0xC01E0520\n\tSTATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST                         NTStatus      = 0xC01E0521\n\tSTATUS_GRAPHICS_I2C_NOT_SUPPORTED                                         NTStatus      = 0xC01E0580\n\tSTATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST                                 NTStatus      = 0xC01E0581\n\tSTATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA                               NTStatus      = 0xC01E0582\n\tSTATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA                                  NTStatus      = 0xC01E0583\n\tSTATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED                                   NTStatus      = 0xC01E0584\n\tSTATUS_GRAPHICS_DDCCI_INVALID_DATA                                        NTStatus      = 0xC01E0585\n\tSTATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE         NTStatus      = 0xC01E0586\n\tSTATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING                         NTStatus      = 0xC01E0587\n\tSTATUS_GRAPHICS_MCA_INTERNAL_ERROR                                        NTStatus      = 0xC01E0588\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND                             NTStatus      = 0xC01E0589\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH                              NTStatus      = 0xC01E058A\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM                            NTStatus      = 0xC01E058B\n\tSTATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE                           NTStatus      = 0xC01E058C\n\tSTATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS                                  NTStatus      = 0xC01E058D\n\tSTATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED                            NTStatus      = 0xC01E05E0\n\tSTATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME                     NTStatus      = 0xC01E05E1\n\tSTATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP                    NTStatus      = 0xC01E05E2\n\tSTATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED                           NTStatus      = 0xC01E05E3\n\tSTATUS_GRAPHICS_INVALID_POINTER                                           NTStatus      = 0xC01E05E4\n\tSTATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE                  NTStatus      = 0xC01E05E5\n\tSTATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL                                 NTStatus      = 0xC01E05E6\n\tSTATUS_GRAPHICS_INTERNAL_ERROR                                            NTStatus      = 0xC01E05E7\n\tSTATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS                           NTStatus      = 0xC01E05E8\n\tSTATUS_FVE_LOCKED_VOLUME                                                  NTStatus      = 0xC0210000\n\tSTATUS_FVE_NOT_ENCRYPTED                                                  NTStatus      = 0xC0210001\n\tSTATUS_FVE_BAD_INFORMATION                                                NTStatus      = 0xC0210002\n\tSTATUS_FVE_TOO_SMALL                                                      NTStatus      = 0xC0210003\n\tSTATUS_FVE_FAILED_WRONG_FS                                                NTStatus      = 0xC0210004\n\tSTATUS_FVE_BAD_PARTITION_SIZE                                             NTStatus      = 0xC0210005\n\tSTATUS_FVE_FS_NOT_EXTENDED                                                NTStatus      = 0xC0210006\n\tSTATUS_FVE_FS_MOUNTED                                                     NTStatus      = 0xC0210007\n\tSTATUS_FVE_NO_LICENSE                                                     NTStatus      = 0xC0210008\n\tSTATUS_FVE_ACTION_NOT_ALLOWED                                             NTStatus      = 0xC0210009\n\tSTATUS_FVE_BAD_DATA                                                       NTStatus      = 0xC021000A\n\tSTATUS_FVE_VOLUME_NOT_BOUND                                               NTStatus      = 0xC021000B\n\tSTATUS_FVE_NOT_DATA_VOLUME                                                NTStatus      = 0xC021000C\n\tSTATUS_FVE_CONV_READ_ERROR                                                NTStatus      = 0xC021000D\n\tSTATUS_FVE_CONV_WRITE_ERROR                                               NTStatus      = 0xC021000E\n\tSTATUS_FVE_OVERLAPPED_UPDATE                                              NTStatus      = 0xC021000F\n\tSTATUS_FVE_FAILED_SECTOR_SIZE                                             NTStatus      = 0xC0210010\n\tSTATUS_FVE_FAILED_AUTHENTICATION                                          NTStatus      = 0xC0210011\n\tSTATUS_FVE_NOT_OS_VOLUME                                                  NTStatus      = 0xC0210012\n\tSTATUS_FVE_KEYFILE_NOT_FOUND                                              NTStatus      = 0xC0210013\n\tSTATUS_FVE_KEYFILE_INVALID                                                NTStatus      = 0xC0210014\n\tSTATUS_FVE_KEYFILE_NO_VMK                                                 NTStatus      = 0xC0210015\n\tSTATUS_FVE_TPM_DISABLED                                                   NTStatus      = 0xC0210016\n\tSTATUS_FVE_TPM_SRK_AUTH_NOT_ZERO                                          NTStatus      = 0xC0210017\n\tSTATUS_FVE_TPM_INVALID_PCR                                                NTStatus      = 0xC0210018\n\tSTATUS_FVE_TPM_NO_VMK                                                     NTStatus      = 0xC0210019\n\tSTATUS_FVE_PIN_INVALID                                                    NTStatus      = 0xC021001A\n\tSTATUS_FVE_AUTH_INVALID_APPLICATION                                       NTStatus      = 0xC021001B\n\tSTATUS_FVE_AUTH_INVALID_CONFIG                                            NTStatus      = 0xC021001C\n\tSTATUS_FVE_DEBUGGER_ENABLED                                               NTStatus      = 0xC021001D\n\tSTATUS_FVE_DRY_RUN_FAILED                                                 NTStatus      = 0xC021001E\n\tSTATUS_FVE_BAD_METADATA_POINTER                                           NTStatus      = 0xC021001F\n\tSTATUS_FVE_OLD_METADATA_COPY                                              NTStatus      = 0xC0210020\n\tSTATUS_FVE_REBOOT_REQUIRED                                                NTStatus      = 0xC0210021\n\tSTATUS_FVE_RAW_ACCESS                                                     NTStatus      = 0xC0210022\n\tSTATUS_FVE_RAW_BLOCKED                                                    NTStatus      = 0xC0210023\n\tSTATUS_FVE_NO_AUTOUNLOCK_MASTER_KEY                                       NTStatus      = 0xC0210024\n\tSTATUS_FVE_MOR_FAILED                                                     NTStatus      = 0xC0210025\n\tSTATUS_FVE_NO_FEATURE_LICENSE                                             NTStatus      = 0xC0210026\n\tSTATUS_FVE_POLICY_USER_DISABLE_RDV_NOT_ALLOWED                            NTStatus      = 0xC0210027\n\tSTATUS_FVE_CONV_RECOVERY_FAILED                                           NTStatus      = 0xC0210028\n\tSTATUS_FVE_VIRTUALIZED_SPACE_TOO_BIG                                      NTStatus      = 0xC0210029\n\tSTATUS_FVE_INVALID_DATUM_TYPE                                             NTStatus      = 0xC021002A\n\tSTATUS_FVE_VOLUME_TOO_SMALL                                               NTStatus      = 0xC0210030\n\tSTATUS_FVE_ENH_PIN_INVALID                                                NTStatus      = 0xC0210031\n\tSTATUS_FVE_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE                      NTStatus      = 0xC0210032\n\tSTATUS_FVE_WIPE_NOT_ALLOWED_ON_TP_STORAGE                                 NTStatus      = 0xC0210033\n\tSTATUS_FVE_NOT_ALLOWED_ON_CSV_STACK                                       NTStatus      = 0xC0210034\n\tSTATUS_FVE_NOT_ALLOWED_ON_CLUSTER                                         NTStatus      = 0xC0210035\n\tSTATUS_FVE_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING                        NTStatus      = 0xC0210036\n\tSTATUS_FVE_WIPE_CANCEL_NOT_APPLICABLE                                     NTStatus      = 0xC0210037\n\tSTATUS_FVE_EDRIVE_DRY_RUN_FAILED                                          NTStatus      = 0xC0210038\n\tSTATUS_FVE_SECUREBOOT_DISABLED                                            NTStatus      = 0xC0210039\n\tSTATUS_FVE_SECUREBOOT_CONFIG_CHANGE                                       NTStatus      = 0xC021003A\n\tSTATUS_FVE_DEVICE_LOCKEDOUT                                               NTStatus      = 0xC021003B\n\tSTATUS_FVE_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT                             NTStatus      = 0xC021003C\n\tSTATUS_FVE_NOT_DE_VOLUME                                                  NTStatus      = 0xC021003D\n\tSTATUS_FVE_PROTECTION_DISABLED                                            NTStatus      = 0xC021003E\n\tSTATUS_FVE_PROTECTION_CANNOT_BE_DISABLED                                  NTStatus      = 0xC021003F\n\tSTATUS_FVE_OSV_KSR_NOT_ALLOWED                                            NTStatus      = 0xC0210040\n\tSTATUS_FWP_CALLOUT_NOT_FOUND                                              NTStatus      = 0xC0220001\n\tSTATUS_FWP_CONDITION_NOT_FOUND                                            NTStatus      = 0xC0220002\n\tSTATUS_FWP_FILTER_NOT_FOUND                                               NTStatus      = 0xC0220003\n\tSTATUS_FWP_LAYER_NOT_FOUND                                                NTStatus      = 0xC0220004\n\tSTATUS_FWP_PROVIDER_NOT_FOUND                                             NTStatus      = 0xC0220005\n\tSTATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND                                     NTStatus      = 0xC0220006\n\tSTATUS_FWP_SUBLAYER_NOT_FOUND                                             NTStatus      = 0xC0220007\n\tSTATUS_FWP_NOT_FOUND                                                      NTStatus      = 0xC0220008\n\tSTATUS_FWP_ALREADY_EXISTS                                                 NTStatus      = 0xC0220009\n\tSTATUS_FWP_IN_USE                                                         NTStatus      = 0xC022000A\n\tSTATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS                                    NTStatus      = 0xC022000B\n\tSTATUS_FWP_WRONG_SESSION                                                  NTStatus      = 0xC022000C\n\tSTATUS_FWP_NO_TXN_IN_PROGRESS                                             NTStatus      = 0xC022000D\n\tSTATUS_FWP_TXN_IN_PROGRESS                                                NTStatus      = 0xC022000E\n\tSTATUS_FWP_TXN_ABORTED                                                    NTStatus      = 0xC022000F\n\tSTATUS_FWP_SESSION_ABORTED                                                NTStatus      = 0xC0220010\n\tSTATUS_FWP_INCOMPATIBLE_TXN                                               NTStatus      = 0xC0220011\n\tSTATUS_FWP_TIMEOUT                                                        NTStatus      = 0xC0220012\n\tSTATUS_FWP_NET_EVENTS_DISABLED                                            NTStatus      = 0xC0220013\n\tSTATUS_FWP_INCOMPATIBLE_LAYER                                             NTStatus      = 0xC0220014\n\tSTATUS_FWP_KM_CLIENTS_ONLY                                                NTStatus      = 0xC0220015\n\tSTATUS_FWP_LIFETIME_MISMATCH                                              NTStatus      = 0xC0220016\n\tSTATUS_FWP_BUILTIN_OBJECT                                                 NTStatus      = 0xC0220017\n\tSTATUS_FWP_TOO_MANY_CALLOUTS                                              NTStatus      = 0xC0220018\n\tSTATUS_FWP_NOTIFICATION_DROPPED                                           NTStatus      = 0xC0220019\n\tSTATUS_FWP_TRAFFIC_MISMATCH                                               NTStatus      = 0xC022001A\n\tSTATUS_FWP_INCOMPATIBLE_SA_STATE                                          NTStatus      = 0xC022001B\n\tSTATUS_FWP_NULL_POINTER                                                   NTStatus      = 0xC022001C\n\tSTATUS_FWP_INVALID_ENUMERATOR                                             NTStatus      = 0xC022001D\n\tSTATUS_FWP_INVALID_FLAGS                                                  NTStatus      = 0xC022001E\n\tSTATUS_FWP_INVALID_NET_MASK                                               NTStatus      = 0xC022001F\n\tSTATUS_FWP_INVALID_RANGE                                                  NTStatus      = 0xC0220020\n\tSTATUS_FWP_INVALID_INTERVAL                                               NTStatus      = 0xC0220021\n\tSTATUS_FWP_ZERO_LENGTH_ARRAY                                              NTStatus      = 0xC0220022\n\tSTATUS_FWP_NULL_DISPLAY_NAME                                              NTStatus      = 0xC0220023\n\tSTATUS_FWP_INVALID_ACTION_TYPE                                            NTStatus      = 0xC0220024\n\tSTATUS_FWP_INVALID_WEIGHT                                                 NTStatus      = 0xC0220025\n\tSTATUS_FWP_MATCH_TYPE_MISMATCH                                            NTStatus      = 0xC0220026\n\tSTATUS_FWP_TYPE_MISMATCH                                                  NTStatus      = 0xC0220027\n\tSTATUS_FWP_OUT_OF_BOUNDS                                                  NTStatus      = 0xC0220028\n\tSTATUS_FWP_RESERVED                                                       NTStatus      = 0xC0220029\n\tSTATUS_FWP_DUPLICATE_CONDITION                                            NTStatus      = 0xC022002A\n\tSTATUS_FWP_DUPLICATE_KEYMOD                                               NTStatus      = 0xC022002B\n\tSTATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER                                 NTStatus      = 0xC022002C\n\tSTATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER                              NTStatus      = 0xC022002D\n\tSTATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER                                NTStatus      = 0xC022002E\n\tSTATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT                              NTStatus      = 0xC022002F\n\tSTATUS_FWP_INCOMPATIBLE_AUTH_METHOD                                       NTStatus      = 0xC0220030\n\tSTATUS_FWP_INCOMPATIBLE_DH_GROUP                                          NTStatus      = 0xC0220031\n\tSTATUS_FWP_EM_NOT_SUPPORTED                                               NTStatus      = 0xC0220032\n\tSTATUS_FWP_NEVER_MATCH                                                    NTStatus      = 0xC0220033\n\tSTATUS_FWP_PROVIDER_CONTEXT_MISMATCH                                      NTStatus      = 0xC0220034\n\tSTATUS_FWP_INVALID_PARAMETER                                              NTStatus      = 0xC0220035\n\tSTATUS_FWP_TOO_MANY_SUBLAYERS                                             NTStatus      = 0xC0220036\n\tSTATUS_FWP_CALLOUT_NOTIFICATION_FAILED                                    NTStatus      = 0xC0220037\n\tSTATUS_FWP_INVALID_AUTH_TRANSFORM                                         NTStatus      = 0xC0220038\n\tSTATUS_FWP_INVALID_CIPHER_TRANSFORM                                       NTStatus      = 0xC0220039\n\tSTATUS_FWP_INCOMPATIBLE_CIPHER_TRANSFORM                                  NTStatus      = 0xC022003A\n\tSTATUS_FWP_INVALID_TRANSFORM_COMBINATION                                  NTStatus      = 0xC022003B\n\tSTATUS_FWP_DUPLICATE_AUTH_METHOD                                          NTStatus      = 0xC022003C\n\tSTATUS_FWP_INVALID_TUNNEL_ENDPOINT                                        NTStatus      = 0xC022003D\n\tSTATUS_FWP_L2_DRIVER_NOT_READY                                            NTStatus      = 0xC022003E\n\tSTATUS_FWP_KEY_DICTATOR_ALREADY_REGISTERED                                NTStatus      = 0xC022003F\n\tSTATUS_FWP_KEY_DICTATION_INVALID_KEYING_MATERIAL                          NTStatus      = 0xC0220040\n\tSTATUS_FWP_CONNECTIONS_DISABLED                                           NTStatus      = 0xC0220041\n\tSTATUS_FWP_INVALID_DNS_NAME                                               NTStatus      = 0xC0220042\n\tSTATUS_FWP_STILL_ON                                                       NTStatus      = 0xC0220043\n\tSTATUS_FWP_IKEEXT_NOT_RUNNING                                             NTStatus      = 0xC0220044\n\tSTATUS_FWP_TCPIP_NOT_READY                                                NTStatus      = 0xC0220100\n\tSTATUS_FWP_INJECT_HANDLE_CLOSING                                          NTStatus      = 0xC0220101\n\tSTATUS_FWP_INJECT_HANDLE_STALE                                            NTStatus      = 0xC0220102\n\tSTATUS_FWP_CANNOT_PEND                                                    NTStatus      = 0xC0220103\n\tSTATUS_FWP_DROP_NOICMP                                                    NTStatus      = 0xC0220104\n\tSTATUS_NDIS_CLOSING                                                       NTStatus      = 0xC0230002\n\tSTATUS_NDIS_BAD_VERSION                                                   NTStatus      = 0xC0230004\n\tSTATUS_NDIS_BAD_CHARACTERISTICS                                           NTStatus      = 0xC0230005\n\tSTATUS_NDIS_ADAPTER_NOT_FOUND                                             NTStatus      = 0xC0230006\n\tSTATUS_NDIS_OPEN_FAILED                                                   NTStatus      = 0xC0230007\n\tSTATUS_NDIS_DEVICE_FAILED                                                 NTStatus      = 0xC0230008\n\tSTATUS_NDIS_MULTICAST_FULL                                                NTStatus      = 0xC0230009\n\tSTATUS_NDIS_MULTICAST_EXISTS                                              NTStatus      = 0xC023000A\n\tSTATUS_NDIS_MULTICAST_NOT_FOUND                                           NTStatus      = 0xC023000B\n\tSTATUS_NDIS_REQUEST_ABORTED                                               NTStatus      = 0xC023000C\n\tSTATUS_NDIS_RESET_IN_PROGRESS                                             NTStatus      = 0xC023000D\n\tSTATUS_NDIS_NOT_SUPPORTED                                                 NTStatus      = 0xC02300BB\n\tSTATUS_NDIS_INVALID_PACKET                                                NTStatus      = 0xC023000F\n\tSTATUS_NDIS_ADAPTER_NOT_READY                                             NTStatus      = 0xC0230011\n\tSTATUS_NDIS_INVALID_LENGTH                                                NTStatus      = 0xC0230014\n\tSTATUS_NDIS_INVALID_DATA                                                  NTStatus      = 0xC0230015\n\tSTATUS_NDIS_BUFFER_TOO_SHORT                                              NTStatus      = 0xC0230016\n\tSTATUS_NDIS_INVALID_OID                                                   NTStatus      = 0xC0230017\n\tSTATUS_NDIS_ADAPTER_REMOVED                                               NTStatus      = 0xC0230018\n\tSTATUS_NDIS_UNSUPPORTED_MEDIA                                             NTStatus      = 0xC0230019\n\tSTATUS_NDIS_GROUP_ADDRESS_IN_USE                                          NTStatus      = 0xC023001A\n\tSTATUS_NDIS_FILE_NOT_FOUND                                                NTStatus      = 0xC023001B\n\tSTATUS_NDIS_ERROR_READING_FILE                                            NTStatus      = 0xC023001C\n\tSTATUS_NDIS_ALREADY_MAPPED                                                NTStatus      = 0xC023001D\n\tSTATUS_NDIS_RESOURCE_CONFLICT                                             NTStatus      = 0xC023001E\n\tSTATUS_NDIS_MEDIA_DISCONNECTED                                            NTStatus      = 0xC023001F\n\tSTATUS_NDIS_INVALID_ADDRESS                                               NTStatus      = 0xC0230022\n\tSTATUS_NDIS_INVALID_DEVICE_REQUEST                                        NTStatus      = 0xC0230010\n\tSTATUS_NDIS_PAUSED                                                        NTStatus      = 0xC023002A\n\tSTATUS_NDIS_INTERFACE_NOT_FOUND                                           NTStatus      = 0xC023002B\n\tSTATUS_NDIS_UNSUPPORTED_REVISION                                          NTStatus      = 0xC023002C\n\tSTATUS_NDIS_INVALID_PORT                                                  NTStatus      = 0xC023002D\n\tSTATUS_NDIS_INVALID_PORT_STATE                                            NTStatus      = 0xC023002E\n\tSTATUS_NDIS_LOW_POWER_STATE                                               NTStatus      = 0xC023002F\n\tSTATUS_NDIS_REINIT_REQUIRED                                               NTStatus      = 0xC0230030\n\tSTATUS_NDIS_NO_QUEUES                                                     NTStatus      = 0xC0230031\n\tSTATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED                                     NTStatus      = 0xC0232000\n\tSTATUS_NDIS_DOT11_MEDIA_IN_USE                                            NTStatus      = 0xC0232001\n\tSTATUS_NDIS_DOT11_POWER_STATE_INVALID                                     NTStatus      = 0xC0232002\n\tSTATUS_NDIS_PM_WOL_PATTERN_LIST_FULL                                      NTStatus      = 0xC0232003\n\tSTATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL                                 NTStatus      = 0xC0232004\n\tSTATUS_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE                      NTStatus      = 0xC0232005\n\tSTATUS_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE                         NTStatus      = 0xC0232006\n\tSTATUS_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED                                  NTStatus      = 0xC0232007\n\tSTATUS_NDIS_DOT11_AP_BAND_NOT_ALLOWED                                     NTStatus      = 0xC0232008\n\tSTATUS_NDIS_INDICATION_REQUIRED                                           NTStatus      = 0x40230001\n\tSTATUS_NDIS_OFFLOAD_POLICY                                                NTStatus      = 0xC023100F\n\tSTATUS_NDIS_OFFLOAD_CONNECTION_REJECTED                                   NTStatus      = 0xC0231012\n\tSTATUS_NDIS_OFFLOAD_PATH_REJECTED                                         NTStatus      = 0xC0231013\n\tSTATUS_TPM_ERROR_MASK                                                     NTStatus      = 0xC0290000\n\tSTATUS_TPM_AUTHFAIL                                                       NTStatus      = 0xC0290001\n\tSTATUS_TPM_BADINDEX                                                       NTStatus      = 0xC0290002\n\tSTATUS_TPM_BAD_PARAMETER                                                  NTStatus      = 0xC0290003\n\tSTATUS_TPM_AUDITFAILURE                                                   NTStatus      = 0xC0290004\n\tSTATUS_TPM_CLEAR_DISABLED                                                 NTStatus      = 0xC0290005\n\tSTATUS_TPM_DEACTIVATED                                                    NTStatus      = 0xC0290006\n\tSTATUS_TPM_DISABLED                                                       NTStatus      = 0xC0290007\n\tSTATUS_TPM_DISABLED_CMD                                                   NTStatus      = 0xC0290008\n\tSTATUS_TPM_FAIL                                                           NTStatus      = 0xC0290009\n\tSTATUS_TPM_BAD_ORDINAL                                                    NTStatus      = 0xC029000A\n\tSTATUS_TPM_INSTALL_DISABLED                                               NTStatus      = 0xC029000B\n\tSTATUS_TPM_INVALID_KEYHANDLE                                              NTStatus      = 0xC029000C\n\tSTATUS_TPM_KEYNOTFOUND                                                    NTStatus      = 0xC029000D\n\tSTATUS_TPM_INAPPROPRIATE_ENC                                              NTStatus      = 0xC029000E\n\tSTATUS_TPM_MIGRATEFAIL                                                    NTStatus      = 0xC029000F\n\tSTATUS_TPM_INVALID_PCR_INFO                                               NTStatus      = 0xC0290010\n\tSTATUS_TPM_NOSPACE                                                        NTStatus      = 0xC0290011\n\tSTATUS_TPM_NOSRK                                                          NTStatus      = 0xC0290012\n\tSTATUS_TPM_NOTSEALED_BLOB                                                 NTStatus      = 0xC0290013\n\tSTATUS_TPM_OWNER_SET                                                      NTStatus      = 0xC0290014\n\tSTATUS_TPM_RESOURCES                                                      NTStatus      = 0xC0290015\n\tSTATUS_TPM_SHORTRANDOM                                                    NTStatus      = 0xC0290016\n\tSTATUS_TPM_SIZE                                                           NTStatus      = 0xC0290017\n\tSTATUS_TPM_WRONGPCRVAL                                                    NTStatus      = 0xC0290018\n\tSTATUS_TPM_BAD_PARAM_SIZE                                                 NTStatus      = 0xC0290019\n\tSTATUS_TPM_SHA_THREAD                                                     NTStatus      = 0xC029001A\n\tSTATUS_TPM_SHA_ERROR                                                      NTStatus      = 0xC029001B\n\tSTATUS_TPM_FAILEDSELFTEST                                                 NTStatus      = 0xC029001C\n\tSTATUS_TPM_AUTH2FAIL                                                      NTStatus      = 0xC029001D\n\tSTATUS_TPM_BADTAG                                                         NTStatus      = 0xC029001E\n\tSTATUS_TPM_IOERROR                                                        NTStatus      = 0xC029001F\n\tSTATUS_TPM_ENCRYPT_ERROR                                                  NTStatus      = 0xC0290020\n\tSTATUS_TPM_DECRYPT_ERROR                                                  NTStatus      = 0xC0290021\n\tSTATUS_TPM_INVALID_AUTHHANDLE                                             NTStatus      = 0xC0290022\n\tSTATUS_TPM_NO_ENDORSEMENT                                                 NTStatus      = 0xC0290023\n\tSTATUS_TPM_INVALID_KEYUSAGE                                               NTStatus      = 0xC0290024\n\tSTATUS_TPM_WRONG_ENTITYTYPE                                               NTStatus      = 0xC0290025\n\tSTATUS_TPM_INVALID_POSTINIT                                               NTStatus      = 0xC0290026\n\tSTATUS_TPM_INAPPROPRIATE_SIG                                              NTStatus      = 0xC0290027\n\tSTATUS_TPM_BAD_KEY_PROPERTY                                               NTStatus      = 0xC0290028\n\tSTATUS_TPM_BAD_MIGRATION                                                  NTStatus      = 0xC0290029\n\tSTATUS_TPM_BAD_SCHEME                                                     NTStatus      = 0xC029002A\n\tSTATUS_TPM_BAD_DATASIZE                                                   NTStatus      = 0xC029002B\n\tSTATUS_TPM_BAD_MODE                                                       NTStatus      = 0xC029002C\n\tSTATUS_TPM_BAD_PRESENCE                                                   NTStatus      = 0xC029002D\n\tSTATUS_TPM_BAD_VERSION                                                    NTStatus      = 0xC029002E\n\tSTATUS_TPM_NO_WRAP_TRANSPORT                                              NTStatus      = 0xC029002F\n\tSTATUS_TPM_AUDITFAIL_UNSUCCESSFUL                                         NTStatus      = 0xC0290030\n\tSTATUS_TPM_AUDITFAIL_SUCCESSFUL                                           NTStatus      = 0xC0290031\n\tSTATUS_TPM_NOTRESETABLE                                                   NTStatus      = 0xC0290032\n\tSTATUS_TPM_NOTLOCAL                                                       NTStatus      = 0xC0290033\n\tSTATUS_TPM_BAD_TYPE                                                       NTStatus      = 0xC0290034\n\tSTATUS_TPM_INVALID_RESOURCE                                               NTStatus      = 0xC0290035\n\tSTATUS_TPM_NOTFIPS                                                        NTStatus      = 0xC0290036\n\tSTATUS_TPM_INVALID_FAMILY                                                 NTStatus      = 0xC0290037\n\tSTATUS_TPM_NO_NV_PERMISSION                                               NTStatus      = 0xC0290038\n\tSTATUS_TPM_REQUIRES_SIGN                                                  NTStatus      = 0xC0290039\n\tSTATUS_TPM_KEY_NOTSUPPORTED                                               NTStatus      = 0xC029003A\n\tSTATUS_TPM_AUTH_CONFLICT                                                  NTStatus      = 0xC029003B\n\tSTATUS_TPM_AREA_LOCKED                                                    NTStatus      = 0xC029003C\n\tSTATUS_TPM_BAD_LOCALITY                                                   NTStatus      = 0xC029003D\n\tSTATUS_TPM_READ_ONLY                                                      NTStatus      = 0xC029003E\n\tSTATUS_TPM_PER_NOWRITE                                                    NTStatus      = 0xC029003F\n\tSTATUS_TPM_FAMILYCOUNT                                                    NTStatus      = 0xC0290040\n\tSTATUS_TPM_WRITE_LOCKED                                                   NTStatus      = 0xC0290041\n\tSTATUS_TPM_BAD_ATTRIBUTES                                                 NTStatus      = 0xC0290042\n\tSTATUS_TPM_INVALID_STRUCTURE                                              NTStatus      = 0xC0290043\n\tSTATUS_TPM_KEY_OWNER_CONTROL                                              NTStatus      = 0xC0290044\n\tSTATUS_TPM_BAD_COUNTER                                                    NTStatus      = 0xC0290045\n\tSTATUS_TPM_NOT_FULLWRITE                                                  NTStatus      = 0xC0290046\n\tSTATUS_TPM_CONTEXT_GAP                                                    NTStatus      = 0xC0290047\n\tSTATUS_TPM_MAXNVWRITES                                                    NTStatus      = 0xC0290048\n\tSTATUS_TPM_NOOPERATOR                                                     NTStatus      = 0xC0290049\n\tSTATUS_TPM_RESOURCEMISSING                                                NTStatus      = 0xC029004A\n\tSTATUS_TPM_DELEGATE_LOCK                                                  NTStatus      = 0xC029004B\n\tSTATUS_TPM_DELEGATE_FAMILY                                                NTStatus      = 0xC029004C\n\tSTATUS_TPM_DELEGATE_ADMIN                                                 NTStatus      = 0xC029004D\n\tSTATUS_TPM_TRANSPORT_NOTEXCLUSIVE                                         NTStatus      = 0xC029004E\n\tSTATUS_TPM_OWNER_CONTROL                                                  NTStatus      = 0xC029004F\n\tSTATUS_TPM_DAA_RESOURCES                                                  NTStatus      = 0xC0290050\n\tSTATUS_TPM_DAA_INPUT_DATA0                                                NTStatus      = 0xC0290051\n\tSTATUS_TPM_DAA_INPUT_DATA1                                                NTStatus      = 0xC0290052\n\tSTATUS_TPM_DAA_ISSUER_SETTINGS                                            NTStatus      = 0xC0290053\n\tSTATUS_TPM_DAA_TPM_SETTINGS                                               NTStatus      = 0xC0290054\n\tSTATUS_TPM_DAA_STAGE                                                      NTStatus      = 0xC0290055\n\tSTATUS_TPM_DAA_ISSUER_VALIDITY                                            NTStatus      = 0xC0290056\n\tSTATUS_TPM_DAA_WRONG_W                                                    NTStatus      = 0xC0290057\n\tSTATUS_TPM_BAD_HANDLE                                                     NTStatus      = 0xC0290058\n\tSTATUS_TPM_BAD_DELEGATE                                                   NTStatus      = 0xC0290059\n\tSTATUS_TPM_BADCONTEXT                                                     NTStatus      = 0xC029005A\n\tSTATUS_TPM_TOOMANYCONTEXTS                                                NTStatus      = 0xC029005B\n\tSTATUS_TPM_MA_TICKET_SIGNATURE                                            NTStatus      = 0xC029005C\n\tSTATUS_TPM_MA_DESTINATION                                                 NTStatus      = 0xC029005D\n\tSTATUS_TPM_MA_SOURCE                                                      NTStatus      = 0xC029005E\n\tSTATUS_TPM_MA_AUTHORITY                                                   NTStatus      = 0xC029005F\n\tSTATUS_TPM_PERMANENTEK                                                    NTStatus      = 0xC0290061\n\tSTATUS_TPM_BAD_SIGNATURE                                                  NTStatus      = 0xC0290062\n\tSTATUS_TPM_NOCONTEXTSPACE                                                 NTStatus      = 0xC0290063\n\tSTATUS_TPM_20_E_ASYMMETRIC                                                NTStatus      = 0xC0290081\n\tSTATUS_TPM_20_E_ATTRIBUTES                                                NTStatus      = 0xC0290082\n\tSTATUS_TPM_20_E_HASH                                                      NTStatus      = 0xC0290083\n\tSTATUS_TPM_20_E_VALUE                                                     NTStatus      = 0xC0290084\n\tSTATUS_TPM_20_E_HIERARCHY                                                 NTStatus      = 0xC0290085\n\tSTATUS_TPM_20_E_KEY_SIZE                                                  NTStatus      = 0xC0290087\n\tSTATUS_TPM_20_E_MGF                                                       NTStatus      = 0xC0290088\n\tSTATUS_TPM_20_E_MODE                                                      NTStatus      = 0xC0290089\n\tSTATUS_TPM_20_E_TYPE                                                      NTStatus      = 0xC029008A\n\tSTATUS_TPM_20_E_HANDLE                                                    NTStatus      = 0xC029008B\n\tSTATUS_TPM_20_E_KDF                                                       NTStatus      = 0xC029008C\n\tSTATUS_TPM_20_E_RANGE                                                     NTStatus      = 0xC029008D\n\tSTATUS_TPM_20_E_AUTH_FAIL                                                 NTStatus      = 0xC029008E\n\tSTATUS_TPM_20_E_NONCE                                                     NTStatus      = 0xC029008F\n\tSTATUS_TPM_20_E_PP                                                        NTStatus      = 0xC0290090\n\tSTATUS_TPM_20_E_SCHEME                                                    NTStatus      = 0xC0290092\n\tSTATUS_TPM_20_E_SIZE                                                      NTStatus      = 0xC0290095\n\tSTATUS_TPM_20_E_SYMMETRIC                                                 NTStatus      = 0xC0290096\n\tSTATUS_TPM_20_E_TAG                                                       NTStatus      = 0xC0290097\n\tSTATUS_TPM_20_E_SELECTOR                                                  NTStatus      = 0xC0290098\n\tSTATUS_TPM_20_E_INSUFFICIENT                                              NTStatus      = 0xC029009A\n\tSTATUS_TPM_20_E_SIGNATURE                                                 NTStatus      = 0xC029009B\n\tSTATUS_TPM_20_E_KEY                                                       NTStatus      = 0xC029009C\n\tSTATUS_TPM_20_E_POLICY_FAIL                                               NTStatus      = 0xC029009D\n\tSTATUS_TPM_20_E_INTEGRITY                                                 NTStatus      = 0xC029009F\n\tSTATUS_TPM_20_E_TICKET                                                    NTStatus      = 0xC02900A0\n\tSTATUS_TPM_20_E_RESERVED_BITS                                             NTStatus      = 0xC02900A1\n\tSTATUS_TPM_20_E_BAD_AUTH                                                  NTStatus      = 0xC02900A2\n\tSTATUS_TPM_20_E_EXPIRED                                                   NTStatus      = 0xC02900A3\n\tSTATUS_TPM_20_E_POLICY_CC                                                 NTStatus      = 0xC02900A4\n\tSTATUS_TPM_20_E_BINDING                                                   NTStatus      = 0xC02900A5\n\tSTATUS_TPM_20_E_CURVE                                                     NTStatus      = 0xC02900A6\n\tSTATUS_TPM_20_E_ECC_POINT                                                 NTStatus      = 0xC02900A7\n\tSTATUS_TPM_20_E_INITIALIZE                                                NTStatus      = 0xC0290100\n\tSTATUS_TPM_20_E_FAILURE                                                   NTStatus      = 0xC0290101\n\tSTATUS_TPM_20_E_SEQUENCE                                                  NTStatus      = 0xC0290103\n\tSTATUS_TPM_20_E_PRIVATE                                                   NTStatus      = 0xC029010B\n\tSTATUS_TPM_20_E_HMAC                                                      NTStatus      = 0xC0290119\n\tSTATUS_TPM_20_E_DISABLED                                                  NTStatus      = 0xC0290120\n\tSTATUS_TPM_20_E_EXCLUSIVE                                                 NTStatus      = 0xC0290121\n\tSTATUS_TPM_20_E_ECC_CURVE                                                 NTStatus      = 0xC0290123\n\tSTATUS_TPM_20_E_AUTH_TYPE                                                 NTStatus      = 0xC0290124\n\tSTATUS_TPM_20_E_AUTH_MISSING                                              NTStatus      = 0xC0290125\n\tSTATUS_TPM_20_E_POLICY                                                    NTStatus      = 0xC0290126\n\tSTATUS_TPM_20_E_PCR                                                       NTStatus      = 0xC0290127\n\tSTATUS_TPM_20_E_PCR_CHANGED                                               NTStatus      = 0xC0290128\n\tSTATUS_TPM_20_E_UPGRADE                                                   NTStatus      = 0xC029012D\n\tSTATUS_TPM_20_E_TOO_MANY_CONTEXTS                                         NTStatus      = 0xC029012E\n\tSTATUS_TPM_20_E_AUTH_UNAVAILABLE                                          NTStatus      = 0xC029012F\n\tSTATUS_TPM_20_E_REBOOT                                                    NTStatus      = 0xC0290130\n\tSTATUS_TPM_20_E_UNBALANCED                                                NTStatus      = 0xC0290131\n\tSTATUS_TPM_20_E_COMMAND_SIZE                                              NTStatus      = 0xC0290142\n\tSTATUS_TPM_20_E_COMMAND_CODE                                              NTStatus      = 0xC0290143\n\tSTATUS_TPM_20_E_AUTHSIZE                                                  NTStatus      = 0xC0290144\n\tSTATUS_TPM_20_E_AUTH_CONTEXT                                              NTStatus      = 0xC0290145\n\tSTATUS_TPM_20_E_NV_RANGE                                                  NTStatus      = 0xC0290146\n\tSTATUS_TPM_20_E_NV_SIZE                                                   NTStatus      = 0xC0290147\n\tSTATUS_TPM_20_E_NV_LOCKED                                                 NTStatus      = 0xC0290148\n\tSTATUS_TPM_20_E_NV_AUTHORIZATION                                          NTStatus      = 0xC0290149\n\tSTATUS_TPM_20_E_NV_UNINITIALIZED                                          NTStatus      = 0xC029014A\n\tSTATUS_TPM_20_E_NV_SPACE                                                  NTStatus      = 0xC029014B\n\tSTATUS_TPM_20_E_NV_DEFINED                                                NTStatus      = 0xC029014C\n\tSTATUS_TPM_20_E_BAD_CONTEXT                                               NTStatus      = 0xC0290150\n\tSTATUS_TPM_20_E_CPHASH                                                    NTStatus      = 0xC0290151\n\tSTATUS_TPM_20_E_PARENT                                                    NTStatus      = 0xC0290152\n\tSTATUS_TPM_20_E_NEEDS_TEST                                                NTStatus      = 0xC0290153\n\tSTATUS_TPM_20_E_NO_RESULT                                                 NTStatus      = 0xC0290154\n\tSTATUS_TPM_20_E_SENSITIVE                                                 NTStatus      = 0xC0290155\n\tSTATUS_TPM_COMMAND_BLOCKED                                                NTStatus      = 0xC0290400\n\tSTATUS_TPM_INVALID_HANDLE                                                 NTStatus      = 0xC0290401\n\tSTATUS_TPM_DUPLICATE_VHANDLE                                              NTStatus      = 0xC0290402\n\tSTATUS_TPM_EMBEDDED_COMMAND_BLOCKED                                       NTStatus      = 0xC0290403\n\tSTATUS_TPM_EMBEDDED_COMMAND_UNSUPPORTED                                   NTStatus      = 0xC0290404\n\tSTATUS_TPM_RETRY                                                          NTStatus      = 0xC0290800\n\tSTATUS_TPM_NEEDS_SELFTEST                                                 NTStatus      = 0xC0290801\n\tSTATUS_TPM_DOING_SELFTEST                                                 NTStatus      = 0xC0290802\n\tSTATUS_TPM_DEFEND_LOCK_RUNNING                                            NTStatus      = 0xC0290803\n\tSTATUS_TPM_COMMAND_CANCELED                                               NTStatus      = 0xC0291001\n\tSTATUS_TPM_TOO_MANY_CONTEXTS                                              NTStatus      = 0xC0291002\n\tSTATUS_TPM_NOT_FOUND                                                      NTStatus      = 0xC0291003\n\tSTATUS_TPM_ACCESS_DENIED                                                  NTStatus      = 0xC0291004\n\tSTATUS_TPM_INSUFFICIENT_BUFFER                                            NTStatus      = 0xC0291005\n\tSTATUS_TPM_PPI_FUNCTION_UNSUPPORTED                                       NTStatus      = 0xC0291006\n\tSTATUS_PCP_ERROR_MASK                                                     NTStatus      = 0xC0292000\n\tSTATUS_PCP_DEVICE_NOT_READY                                               NTStatus      = 0xC0292001\n\tSTATUS_PCP_INVALID_HANDLE                                                 NTStatus      = 0xC0292002\n\tSTATUS_PCP_INVALID_PARAMETER                                              NTStatus      = 0xC0292003\n\tSTATUS_PCP_FLAG_NOT_SUPPORTED                                             NTStatus      = 0xC0292004\n\tSTATUS_PCP_NOT_SUPPORTED                                                  NTStatus      = 0xC0292005\n\tSTATUS_PCP_BUFFER_TOO_SMALL                                               NTStatus      = 0xC0292006\n\tSTATUS_PCP_INTERNAL_ERROR                                                 NTStatus      = 0xC0292007\n\tSTATUS_PCP_AUTHENTICATION_FAILED                                          NTStatus      = 0xC0292008\n\tSTATUS_PCP_AUTHENTICATION_IGNORED                                         NTStatus      = 0xC0292009\n\tSTATUS_PCP_POLICY_NOT_FOUND                                               NTStatus      = 0xC029200A\n\tSTATUS_PCP_PROFILE_NOT_FOUND                                              NTStatus      = 0xC029200B\n\tSTATUS_PCP_VALIDATION_FAILED                                              NTStatus      = 0xC029200C\n\tSTATUS_PCP_DEVICE_NOT_FOUND                                               NTStatus      = 0xC029200D\n\tSTATUS_PCP_WRONG_PARENT                                                   NTStatus      = 0xC029200E\n\tSTATUS_PCP_KEY_NOT_LOADED                                                 NTStatus      = 0xC029200F\n\tSTATUS_PCP_NO_KEY_CERTIFICATION                                           NTStatus      = 0xC0292010\n\tSTATUS_PCP_KEY_NOT_FINALIZED                                              NTStatus      = 0xC0292011\n\tSTATUS_PCP_ATTESTATION_CHALLENGE_NOT_SET                                  NTStatus      = 0xC0292012\n\tSTATUS_PCP_NOT_PCR_BOUND                                                  NTStatus      = 0xC0292013\n\tSTATUS_PCP_KEY_ALREADY_FINALIZED                                          NTStatus      = 0xC0292014\n\tSTATUS_PCP_KEY_USAGE_POLICY_NOT_SUPPORTED                                 NTStatus      = 0xC0292015\n\tSTATUS_PCP_KEY_USAGE_POLICY_INVALID                                       NTStatus      = 0xC0292016\n\tSTATUS_PCP_SOFT_KEY_ERROR                                                 NTStatus      = 0xC0292017\n\tSTATUS_PCP_KEY_NOT_AUTHENTICATED                                          NTStatus      = 0xC0292018\n\tSTATUS_PCP_KEY_NOT_AIK                                                    NTStatus      = 0xC0292019\n\tSTATUS_PCP_KEY_NOT_SIGNING_KEY                                            NTStatus      = 0xC029201A\n\tSTATUS_PCP_LOCKED_OUT                                                     NTStatus      = 0xC029201B\n\tSTATUS_PCP_CLAIM_TYPE_NOT_SUPPORTED                                       NTStatus      = 0xC029201C\n\tSTATUS_PCP_TPM_VERSION_NOT_SUPPORTED                                      NTStatus      = 0xC029201D\n\tSTATUS_PCP_BUFFER_LENGTH_MISMATCH                                         NTStatus      = 0xC029201E\n\tSTATUS_PCP_IFX_RSA_KEY_CREATION_BLOCKED                                   NTStatus      = 0xC029201F\n\tSTATUS_PCP_TICKET_MISSING                                                 NTStatus      = 0xC0292020\n\tSTATUS_PCP_RAW_POLICY_NOT_SUPPORTED                                       NTStatus      = 0xC0292021\n\tSTATUS_PCP_KEY_HANDLE_INVALIDATED                                         NTStatus      = 0xC0292022\n\tSTATUS_PCP_UNSUPPORTED_PSS_SALT                                           NTStatus      = 0x40292023\n\tSTATUS_RTPM_CONTEXT_CONTINUE                                              NTStatus      = 0x00293000\n\tSTATUS_RTPM_CONTEXT_COMPLETE                                              NTStatus      = 0x00293001\n\tSTATUS_RTPM_NO_RESULT                                                     NTStatus      = 0xC0293002\n\tSTATUS_RTPM_PCR_READ_INCOMPLETE                                           NTStatus      = 0xC0293003\n\tSTATUS_RTPM_INVALID_CONTEXT                                               NTStatus      = 0xC0293004\n\tSTATUS_RTPM_UNSUPPORTED_CMD                                               NTStatus      = 0xC0293005\n\tSTATUS_TPM_ZERO_EXHAUST_ENABLED                                           NTStatus      = 0xC0294000\n\tSTATUS_HV_INVALID_HYPERCALL_CODE                                          NTStatus      = 0xC0350002\n\tSTATUS_HV_INVALID_HYPERCALL_INPUT                                         NTStatus      = 0xC0350003\n\tSTATUS_HV_INVALID_ALIGNMENT                                               NTStatus      = 0xC0350004\n\tSTATUS_HV_INVALID_PARAMETER                                               NTStatus      = 0xC0350005\n\tSTATUS_HV_ACCESS_DENIED                                                   NTStatus      = 0xC0350006\n\tSTATUS_HV_INVALID_PARTITION_STATE                                         NTStatus      = 0xC0350007\n\tSTATUS_HV_OPERATION_DENIED                                                NTStatus      = 0xC0350008\n\tSTATUS_HV_UNKNOWN_PROPERTY                                                NTStatus      = 0xC0350009\n\tSTATUS_HV_PROPERTY_VALUE_OUT_OF_RANGE                                     NTStatus      = 0xC035000A\n\tSTATUS_HV_INSUFFICIENT_MEMORY                                             NTStatus      = 0xC035000B\n\tSTATUS_HV_PARTITION_TOO_DEEP                                              NTStatus      = 0xC035000C\n\tSTATUS_HV_INVALID_PARTITION_ID                                            NTStatus      = 0xC035000D\n\tSTATUS_HV_INVALID_VP_INDEX                                                NTStatus      = 0xC035000E\n\tSTATUS_HV_INVALID_PORT_ID                                                 NTStatus      = 0xC0350011\n\tSTATUS_HV_INVALID_CONNECTION_ID                                           NTStatus      = 0xC0350012\n\tSTATUS_HV_INSUFFICIENT_BUFFERS                                            NTStatus      = 0xC0350013\n\tSTATUS_HV_NOT_ACKNOWLEDGED                                                NTStatus      = 0xC0350014\n\tSTATUS_HV_INVALID_VP_STATE                                                NTStatus      = 0xC0350015\n\tSTATUS_HV_ACKNOWLEDGED                                                    NTStatus      = 0xC0350016\n\tSTATUS_HV_INVALID_SAVE_RESTORE_STATE                                      NTStatus      = 0xC0350017\n\tSTATUS_HV_INVALID_SYNIC_STATE                                             NTStatus      = 0xC0350018\n\tSTATUS_HV_OBJECT_IN_USE                                                   NTStatus      = 0xC0350019\n\tSTATUS_HV_INVALID_PROXIMITY_DOMAIN_INFO                                   NTStatus      = 0xC035001A\n\tSTATUS_HV_NO_DATA                                                         NTStatus      = 0xC035001B\n\tSTATUS_HV_INACTIVE                                                        NTStatus      = 0xC035001C\n\tSTATUS_HV_NO_RESOURCES                                                    NTStatus      = 0xC035001D\n\tSTATUS_HV_FEATURE_UNAVAILABLE                                             NTStatus      = 0xC035001E\n\tSTATUS_HV_INSUFFICIENT_BUFFER                                             NTStatus      = 0xC0350033\n\tSTATUS_HV_INSUFFICIENT_DEVICE_DOMAINS                                     NTStatus      = 0xC0350038\n\tSTATUS_HV_CPUID_FEATURE_VALIDATION_ERROR                                  NTStatus      = 0xC035003C\n\tSTATUS_HV_CPUID_XSAVE_FEATURE_VALIDATION_ERROR                            NTStatus      = 0xC035003D\n\tSTATUS_HV_PROCESSOR_STARTUP_TIMEOUT                                       NTStatus      = 0xC035003E\n\tSTATUS_HV_SMX_ENABLED                                                     NTStatus      = 0xC035003F\n\tSTATUS_HV_INVALID_LP_INDEX                                                NTStatus      = 0xC0350041\n\tSTATUS_HV_INVALID_REGISTER_VALUE                                          NTStatus      = 0xC0350050\n\tSTATUS_HV_INVALID_VTL_STATE                                               NTStatus      = 0xC0350051\n\tSTATUS_HV_NX_NOT_DETECTED                                                 NTStatus      = 0xC0350055\n\tSTATUS_HV_INVALID_DEVICE_ID                                               NTStatus      = 0xC0350057\n\tSTATUS_HV_INVALID_DEVICE_STATE                                            NTStatus      = 0xC0350058\n\tSTATUS_HV_PENDING_PAGE_REQUESTS                                           NTStatus      = 0x00350059\n\tSTATUS_HV_PAGE_REQUEST_INVALID                                            NTStatus      = 0xC0350060\n\tSTATUS_HV_INVALID_CPU_GROUP_ID                                            NTStatus      = 0xC035006F\n\tSTATUS_HV_INVALID_CPU_GROUP_STATE                                         NTStatus      = 0xC0350070\n\tSTATUS_HV_OPERATION_FAILED                                                NTStatus      = 0xC0350071\n\tSTATUS_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE                             NTStatus      = 0xC0350072\n\tSTATUS_HV_INSUFFICIENT_ROOT_MEMORY                                        NTStatus      = 0xC0350073\n\tSTATUS_HV_NOT_PRESENT                                                     NTStatus      = 0xC0351000\n\tSTATUS_VID_DUPLICATE_HANDLER                                              NTStatus      = 0xC0370001\n\tSTATUS_VID_TOO_MANY_HANDLERS                                              NTStatus      = 0xC0370002\n\tSTATUS_VID_QUEUE_FULL                                                     NTStatus      = 0xC0370003\n\tSTATUS_VID_HANDLER_NOT_PRESENT                                            NTStatus      = 0xC0370004\n\tSTATUS_VID_INVALID_OBJECT_NAME                                            NTStatus      = 0xC0370005\n\tSTATUS_VID_PARTITION_NAME_TOO_LONG                                        NTStatus      = 0xC0370006\n\tSTATUS_VID_MESSAGE_QUEUE_NAME_TOO_LONG                                    NTStatus      = 0xC0370007\n\tSTATUS_VID_PARTITION_ALREADY_EXISTS                                       NTStatus      = 0xC0370008\n\tSTATUS_VID_PARTITION_DOES_NOT_EXIST                                       NTStatus      = 0xC0370009\n\tSTATUS_VID_PARTITION_NAME_NOT_FOUND                                       NTStatus      = 0xC037000A\n\tSTATUS_VID_MESSAGE_QUEUE_ALREADY_EXISTS                                   NTStatus      = 0xC037000B\n\tSTATUS_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT                                   NTStatus      = 0xC037000C\n\tSTATUS_VID_MB_STILL_REFERENCED                                            NTStatus      = 0xC037000D\n\tSTATUS_VID_CHILD_GPA_PAGE_SET_CORRUPTED                                   NTStatus      = 0xC037000E\n\tSTATUS_VID_INVALID_NUMA_SETTINGS                                          NTStatus      = 0xC037000F\n\tSTATUS_VID_INVALID_NUMA_NODE_INDEX                                        NTStatus      = 0xC0370010\n\tSTATUS_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED                          NTStatus      = 0xC0370011\n\tSTATUS_VID_INVALID_MEMORY_BLOCK_HANDLE                                    NTStatus      = 0xC0370012\n\tSTATUS_VID_PAGE_RANGE_OVERFLOW                                            NTStatus      = 0xC0370013\n\tSTATUS_VID_INVALID_MESSAGE_QUEUE_HANDLE                                   NTStatus      = 0xC0370014\n\tSTATUS_VID_INVALID_GPA_RANGE_HANDLE                                       NTStatus      = 0xC0370015\n\tSTATUS_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE                             NTStatus      = 0xC0370016\n\tSTATUS_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED                               NTStatus      = 0xC0370017\n\tSTATUS_VID_INVALID_PPM_HANDLE                                             NTStatus      = 0xC0370018\n\tSTATUS_VID_MBPS_ARE_LOCKED                                                NTStatus      = 0xC0370019\n\tSTATUS_VID_MESSAGE_QUEUE_CLOSED                                           NTStatus      = 0xC037001A\n\tSTATUS_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED                               NTStatus      = 0xC037001B\n\tSTATUS_VID_STOP_PENDING                                                   NTStatus      = 0xC037001C\n\tSTATUS_VID_INVALID_PROCESSOR_STATE                                        NTStatus      = 0xC037001D\n\tSTATUS_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT                                NTStatus      = 0xC037001E\n\tSTATUS_VID_KM_INTERFACE_ALREADY_INITIALIZED                               NTStatus      = 0xC037001F\n\tSTATUS_VID_MB_PROPERTY_ALREADY_SET_RESET                                  NTStatus      = 0xC0370020\n\tSTATUS_VID_MMIO_RANGE_DESTROYED                                           NTStatus      = 0xC0370021\n\tSTATUS_VID_INVALID_CHILD_GPA_PAGE_SET                                     NTStatus      = 0xC0370022\n\tSTATUS_VID_RESERVE_PAGE_SET_IS_BEING_USED                                 NTStatus      = 0xC0370023\n\tSTATUS_VID_RESERVE_PAGE_SET_TOO_SMALL                                     NTStatus      = 0xC0370024\n\tSTATUS_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE                         NTStatus      = 0xC0370025\n\tSTATUS_VID_MBP_COUNT_EXCEEDED_LIMIT                                       NTStatus      = 0xC0370026\n\tSTATUS_VID_SAVED_STATE_CORRUPT                                            NTStatus      = 0xC0370027\n\tSTATUS_VID_SAVED_STATE_UNRECOGNIZED_ITEM                                  NTStatus      = 0xC0370028\n\tSTATUS_VID_SAVED_STATE_INCOMPATIBLE                                       NTStatus      = 0xC0370029\n\tSTATUS_VID_VTL_ACCESS_DENIED                                              NTStatus      = 0xC037002A\n\tSTATUS_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED                              NTStatus      = 0x80370001\n\tSTATUS_IPSEC_BAD_SPI                                                      NTStatus      = 0xC0360001\n\tSTATUS_IPSEC_SA_LIFETIME_EXPIRED                                          NTStatus      = 0xC0360002\n\tSTATUS_IPSEC_WRONG_SA                                                     NTStatus      = 0xC0360003\n\tSTATUS_IPSEC_REPLAY_CHECK_FAILED                                          NTStatus      = 0xC0360004\n\tSTATUS_IPSEC_INVALID_PACKET                                               NTStatus      = 0xC0360005\n\tSTATUS_IPSEC_INTEGRITY_CHECK_FAILED                                       NTStatus      = 0xC0360006\n\tSTATUS_IPSEC_CLEAR_TEXT_DROP                                              NTStatus      = 0xC0360007\n\tSTATUS_IPSEC_AUTH_FIREWALL_DROP                                           NTStatus      = 0xC0360008\n\tSTATUS_IPSEC_THROTTLE_DROP                                                NTStatus      = 0xC0360009\n\tSTATUS_IPSEC_DOSP_BLOCK                                                   NTStatus      = 0xC0368000\n\tSTATUS_IPSEC_DOSP_RECEIVED_MULTICAST                                      NTStatus      = 0xC0368001\n\tSTATUS_IPSEC_DOSP_INVALID_PACKET                                          NTStatus      = 0xC0368002\n\tSTATUS_IPSEC_DOSP_STATE_LOOKUP_FAILED                                     NTStatus      = 0xC0368003\n\tSTATUS_IPSEC_DOSP_MAX_ENTRIES                                             NTStatus      = 0xC0368004\n\tSTATUS_IPSEC_DOSP_KEYMOD_NOT_ALLOWED                                      NTStatus      = 0xC0368005\n\tSTATUS_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES                             NTStatus      = 0xC0368006\n\tSTATUS_VOLMGR_INCOMPLETE_REGENERATION                                     NTStatus      = 0x80380001\n\tSTATUS_VOLMGR_INCOMPLETE_DISK_MIGRATION                                   NTStatus      = 0x80380002\n\tSTATUS_VOLMGR_DATABASE_FULL                                               NTStatus      = 0xC0380001\n\tSTATUS_VOLMGR_DISK_CONFIGURATION_CORRUPTED                                NTStatus      = 0xC0380002\n\tSTATUS_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC                              NTStatus      = 0xC0380003\n\tSTATUS_VOLMGR_PACK_CONFIG_UPDATE_FAILED                                   NTStatus      = 0xC0380004\n\tSTATUS_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME                             NTStatus      = 0xC0380005\n\tSTATUS_VOLMGR_DISK_DUPLICATE                                              NTStatus      = 0xC0380006\n\tSTATUS_VOLMGR_DISK_DYNAMIC                                                NTStatus      = 0xC0380007\n\tSTATUS_VOLMGR_DISK_ID_INVALID                                             NTStatus      = 0xC0380008\n\tSTATUS_VOLMGR_DISK_INVALID                                                NTStatus      = 0xC0380009\n\tSTATUS_VOLMGR_DISK_LAST_VOTER                                             NTStatus      = 0xC038000A\n\tSTATUS_VOLMGR_DISK_LAYOUT_INVALID                                         NTStatus      = 0xC038000B\n\tSTATUS_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS              NTStatus      = 0xC038000C\n\tSTATUS_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED                            NTStatus      = 0xC038000D\n\tSTATUS_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL                            NTStatus      = 0xC038000E\n\tSTATUS_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS              NTStatus      = 0xC038000F\n\tSTATUS_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS                             NTStatus      = 0xC0380010\n\tSTATUS_VOLMGR_DISK_MISSING                                                NTStatus      = 0xC0380011\n\tSTATUS_VOLMGR_DISK_NOT_EMPTY                                              NTStatus      = 0xC0380012\n\tSTATUS_VOLMGR_DISK_NOT_ENOUGH_SPACE                                       NTStatus      = 0xC0380013\n\tSTATUS_VOLMGR_DISK_REVECTORING_FAILED                                     NTStatus      = 0xC0380014\n\tSTATUS_VOLMGR_DISK_SECTOR_SIZE_INVALID                                    NTStatus      = 0xC0380015\n\tSTATUS_VOLMGR_DISK_SET_NOT_CONTAINED                                      NTStatus      = 0xC0380016\n\tSTATUS_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS                               NTStatus      = 0xC0380017\n\tSTATUS_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES                                NTStatus      = 0xC0380018\n\tSTATUS_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED                                  NTStatus      = 0xC0380019\n\tSTATUS_VOLMGR_EXTENT_ALREADY_USED                                         NTStatus      = 0xC038001A\n\tSTATUS_VOLMGR_EXTENT_NOT_CONTIGUOUS                                       NTStatus      = 0xC038001B\n\tSTATUS_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION                                 NTStatus      = 0xC038001C\n\tSTATUS_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED                                   NTStatus      = 0xC038001D\n\tSTATUS_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION                               NTStatus      = 0xC038001E\n\tSTATUS_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH                          NTStatus      = 0xC038001F\n\tSTATUS_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED                                NTStatus      = 0xC0380020\n\tSTATUS_VOLMGR_INTERLEAVE_LENGTH_INVALID                                   NTStatus      = 0xC0380021\n\tSTATUS_VOLMGR_MAXIMUM_REGISTERED_USERS                                    NTStatus      = 0xC0380022\n\tSTATUS_VOLMGR_MEMBER_IN_SYNC                                              NTStatus      = 0xC0380023\n\tSTATUS_VOLMGR_MEMBER_INDEX_DUPLICATE                                      NTStatus      = 0xC0380024\n\tSTATUS_VOLMGR_MEMBER_INDEX_INVALID                                        NTStatus      = 0xC0380025\n\tSTATUS_VOLMGR_MEMBER_MISSING                                              NTStatus      = 0xC0380026\n\tSTATUS_VOLMGR_MEMBER_NOT_DETACHED                                         NTStatus      = 0xC0380027\n\tSTATUS_VOLMGR_MEMBER_REGENERATING                                         NTStatus      = 0xC0380028\n\tSTATUS_VOLMGR_ALL_DISKS_FAILED                                            NTStatus      = 0xC0380029\n\tSTATUS_VOLMGR_NO_REGISTERED_USERS                                         NTStatus      = 0xC038002A\n\tSTATUS_VOLMGR_NO_SUCH_USER                                                NTStatus      = 0xC038002B\n\tSTATUS_VOLMGR_NOTIFICATION_RESET                                          NTStatus      = 0xC038002C\n\tSTATUS_VOLMGR_NUMBER_OF_MEMBERS_INVALID                                   NTStatus      = 0xC038002D\n\tSTATUS_VOLMGR_NUMBER_OF_PLEXES_INVALID                                    NTStatus      = 0xC038002E\n\tSTATUS_VOLMGR_PACK_DUPLICATE                                              NTStatus      = 0xC038002F\n\tSTATUS_VOLMGR_PACK_ID_INVALID                                             NTStatus      = 0xC0380030\n\tSTATUS_VOLMGR_PACK_INVALID                                                NTStatus      = 0xC0380031\n\tSTATUS_VOLMGR_PACK_NAME_INVALID                                           NTStatus      = 0xC0380032\n\tSTATUS_VOLMGR_PACK_OFFLINE                                                NTStatus      = 0xC0380033\n\tSTATUS_VOLMGR_PACK_HAS_QUORUM                                             NTStatus      = 0xC0380034\n\tSTATUS_VOLMGR_PACK_WITHOUT_QUORUM                                         NTStatus      = 0xC0380035\n\tSTATUS_VOLMGR_PARTITION_STYLE_INVALID                                     NTStatus      = 0xC0380036\n\tSTATUS_VOLMGR_PARTITION_UPDATE_FAILED                                     NTStatus      = 0xC0380037\n\tSTATUS_VOLMGR_PLEX_IN_SYNC                                                NTStatus      = 0xC0380038\n\tSTATUS_VOLMGR_PLEX_INDEX_DUPLICATE                                        NTStatus      = 0xC0380039\n\tSTATUS_VOLMGR_PLEX_INDEX_INVALID                                          NTStatus      = 0xC038003A\n\tSTATUS_VOLMGR_PLEX_LAST_ACTIVE                                            NTStatus      = 0xC038003B\n\tSTATUS_VOLMGR_PLEX_MISSING                                                NTStatus      = 0xC038003C\n\tSTATUS_VOLMGR_PLEX_REGENERATING                                           NTStatus      = 0xC038003D\n\tSTATUS_VOLMGR_PLEX_TYPE_INVALID                                           NTStatus      = 0xC038003E\n\tSTATUS_VOLMGR_PLEX_NOT_RAID5                                              NTStatus      = 0xC038003F\n\tSTATUS_VOLMGR_PLEX_NOT_SIMPLE                                             NTStatus      = 0xC0380040\n\tSTATUS_VOLMGR_STRUCTURE_SIZE_INVALID                                      NTStatus      = 0xC0380041\n\tSTATUS_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS                              NTStatus      = 0xC0380042\n\tSTATUS_VOLMGR_TRANSACTION_IN_PROGRESS                                     NTStatus      = 0xC0380043\n\tSTATUS_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE                               NTStatus      = 0xC0380044\n\tSTATUS_VOLMGR_VOLUME_CONTAINS_MISSING_DISK                                NTStatus      = 0xC0380045\n\tSTATUS_VOLMGR_VOLUME_ID_INVALID                                           NTStatus      = 0xC0380046\n\tSTATUS_VOLMGR_VOLUME_LENGTH_INVALID                                       NTStatus      = 0xC0380047\n\tSTATUS_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE                      NTStatus      = 0xC0380048\n\tSTATUS_VOLMGR_VOLUME_NOT_MIRRORED                                         NTStatus      = 0xC0380049\n\tSTATUS_VOLMGR_VOLUME_NOT_RETAINED                                         NTStatus      = 0xC038004A\n\tSTATUS_VOLMGR_VOLUME_OFFLINE                                              NTStatus      = 0xC038004B\n\tSTATUS_VOLMGR_VOLUME_RETAINED                                             NTStatus      = 0xC038004C\n\tSTATUS_VOLMGR_NUMBER_OF_EXTENTS_INVALID                                   NTStatus      = 0xC038004D\n\tSTATUS_VOLMGR_DIFFERENT_SECTOR_SIZE                                       NTStatus      = 0xC038004E\n\tSTATUS_VOLMGR_BAD_BOOT_DISK                                               NTStatus      = 0xC038004F\n\tSTATUS_VOLMGR_PACK_CONFIG_OFFLINE                                         NTStatus      = 0xC0380050\n\tSTATUS_VOLMGR_PACK_CONFIG_ONLINE                                          NTStatus      = 0xC0380051\n\tSTATUS_VOLMGR_NOT_PRIMARY_PACK                                            NTStatus      = 0xC0380052\n\tSTATUS_VOLMGR_PACK_LOG_UPDATE_FAILED                                      NTStatus      = 0xC0380053\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID                             NTStatus      = 0xC0380054\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID                           NTStatus      = 0xC0380055\n\tSTATUS_VOLMGR_VOLUME_MIRRORED                                             NTStatus      = 0xC0380056\n\tSTATUS_VOLMGR_PLEX_NOT_SIMPLE_SPANNED                                     NTStatus      = 0xC0380057\n\tSTATUS_VOLMGR_NO_VALID_LOG_COPIES                                         NTStatus      = 0xC0380058\n\tSTATUS_VOLMGR_PRIMARY_PACK_PRESENT                                        NTStatus      = 0xC0380059\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_INVALID                                     NTStatus      = 0xC038005A\n\tSTATUS_VOLMGR_MIRROR_NOT_SUPPORTED                                        NTStatus      = 0xC038005B\n\tSTATUS_VOLMGR_RAID5_NOT_SUPPORTED                                         NTStatus      = 0xC038005C\n\tSTATUS_BCD_NOT_ALL_ENTRIES_IMPORTED                                       NTStatus      = 0x80390001\n\tSTATUS_BCD_TOO_MANY_ELEMENTS                                              NTStatus      = 0xC0390002\n\tSTATUS_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED                                   NTStatus      = 0x80390003\n\tSTATUS_VHD_DRIVE_FOOTER_MISSING                                           NTStatus      = 0xC03A0001\n\tSTATUS_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH                                 NTStatus      = 0xC03A0002\n\tSTATUS_VHD_DRIVE_FOOTER_CORRUPT                                           NTStatus      = 0xC03A0003\n\tSTATUS_VHD_FORMAT_UNKNOWN                                                 NTStatus      = 0xC03A0004\n\tSTATUS_VHD_FORMAT_UNSUPPORTED_VERSION                                     NTStatus      = 0xC03A0005\n\tSTATUS_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH                                NTStatus      = 0xC03A0006\n\tSTATUS_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION                              NTStatus      = 0xC03A0007\n\tSTATUS_VHD_SPARSE_HEADER_CORRUPT                                          NTStatus      = 0xC03A0008\n\tSTATUS_VHD_BLOCK_ALLOCATION_FAILURE                                       NTStatus      = 0xC03A0009\n\tSTATUS_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT                                 NTStatus      = 0xC03A000A\n\tSTATUS_VHD_INVALID_BLOCK_SIZE                                             NTStatus      = 0xC03A000B\n\tSTATUS_VHD_BITMAP_MISMATCH                                                NTStatus      = 0xC03A000C\n\tSTATUS_VHD_PARENT_VHD_NOT_FOUND                                           NTStatus      = 0xC03A000D\n\tSTATUS_VHD_CHILD_PARENT_ID_MISMATCH                                       NTStatus      = 0xC03A000E\n\tSTATUS_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH                                NTStatus      = 0xC03A000F\n\tSTATUS_VHD_METADATA_READ_FAILURE                                          NTStatus      = 0xC03A0010\n\tSTATUS_VHD_METADATA_WRITE_FAILURE                                         NTStatus      = 0xC03A0011\n\tSTATUS_VHD_INVALID_SIZE                                                   NTStatus      = 0xC03A0012\n\tSTATUS_VHD_INVALID_FILE_SIZE                                              NTStatus      = 0xC03A0013\n\tSTATUS_VIRTDISK_PROVIDER_NOT_FOUND                                        NTStatus      = 0xC03A0014\n\tSTATUS_VIRTDISK_NOT_VIRTUAL_DISK                                          NTStatus      = 0xC03A0015\n\tSTATUS_VHD_PARENT_VHD_ACCESS_DENIED                                       NTStatus      = 0xC03A0016\n\tSTATUS_VHD_CHILD_PARENT_SIZE_MISMATCH                                     NTStatus      = 0xC03A0017\n\tSTATUS_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED                              NTStatus      = 0xC03A0018\n\tSTATUS_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT                             NTStatus      = 0xC03A0019\n\tSTATUS_VIRTUAL_DISK_LIMITATION                                            NTStatus      = 0xC03A001A\n\tSTATUS_VHD_INVALID_TYPE                                                   NTStatus      = 0xC03A001B\n\tSTATUS_VHD_INVALID_STATE                                                  NTStatus      = 0xC03A001C\n\tSTATUS_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE                              NTStatus      = 0xC03A001D\n\tSTATUS_VIRTDISK_DISK_ALREADY_OWNED                                        NTStatus      = 0xC03A001E\n\tSTATUS_VIRTDISK_DISK_ONLINE_AND_WRITABLE                                  NTStatus      = 0xC03A001F\n\tSTATUS_CTLOG_TRACKING_NOT_INITIALIZED                                     NTStatus      = 0xC03A0020\n\tSTATUS_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE                                NTStatus      = 0xC03A0021\n\tSTATUS_CTLOG_VHD_CHANGED_OFFLINE                                          NTStatus      = 0xC03A0022\n\tSTATUS_CTLOG_INVALID_TRACKING_STATE                                       NTStatus      = 0xC03A0023\n\tSTATUS_CTLOG_INCONSISTENT_TRACKING_FILE                                   NTStatus      = 0xC03A0024\n\tSTATUS_VHD_METADATA_FULL                                                  NTStatus      = 0xC03A0028\n\tSTATUS_VHD_INVALID_CHANGE_TRACKING_ID                                     NTStatus      = 0xC03A0029\n\tSTATUS_VHD_CHANGE_TRACKING_DISABLED                                       NTStatus      = 0xC03A002A\n\tSTATUS_VHD_MISSING_CHANGE_TRACKING_INFORMATION                            NTStatus      = 0xC03A0030\n\tSTATUS_VHD_RESIZE_WOULD_TRUNCATE_DATA                                     NTStatus      = 0xC03A0031\n\tSTATUS_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE                         NTStatus      = 0xC03A0032\n\tSTATUS_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE                       NTStatus      = 0xC03A0033\n\tSTATUS_QUERY_STORAGE_ERROR                                                NTStatus      = 0x803A0001\n\tSTATUS_GDI_HANDLE_LEAK                                                    NTStatus      = 0x803F0001\n\tSTATUS_RKF_KEY_NOT_FOUND                                                  NTStatus      = 0xC0400001\n\tSTATUS_RKF_DUPLICATE_KEY                                                  NTStatus      = 0xC0400002\n\tSTATUS_RKF_BLOB_FULL                                                      NTStatus      = 0xC0400003\n\tSTATUS_RKF_STORE_FULL                                                     NTStatus      = 0xC0400004\n\tSTATUS_RKF_FILE_BLOCKED                                                   NTStatus      = 0xC0400005\n\tSTATUS_RKF_ACTIVE_KEY                                                     NTStatus      = 0xC0400006\n\tSTATUS_RDBSS_RESTART_OPERATION                                            NTStatus      = 0xC0410001\n\tSTATUS_RDBSS_CONTINUE_OPERATION                                           NTStatus      = 0xC0410002\n\tSTATUS_RDBSS_POST_OPERATION                                               NTStatus      = 0xC0410003\n\tSTATUS_RDBSS_RETRY_LOOKUP                                                 NTStatus      = 0xC0410004\n\tSTATUS_BTH_ATT_INVALID_HANDLE                                             NTStatus      = 0xC0420001\n\tSTATUS_BTH_ATT_READ_NOT_PERMITTED                                         NTStatus      = 0xC0420002\n\tSTATUS_BTH_ATT_WRITE_NOT_PERMITTED                                        NTStatus      = 0xC0420003\n\tSTATUS_BTH_ATT_INVALID_PDU                                                NTStatus      = 0xC0420004\n\tSTATUS_BTH_ATT_INSUFFICIENT_AUTHENTICATION                                NTStatus      = 0xC0420005\n\tSTATUS_BTH_ATT_REQUEST_NOT_SUPPORTED                                      NTStatus      = 0xC0420006\n\tSTATUS_BTH_ATT_INVALID_OFFSET                                             NTStatus      = 0xC0420007\n\tSTATUS_BTH_ATT_INSUFFICIENT_AUTHORIZATION                                 NTStatus      = 0xC0420008\n\tSTATUS_BTH_ATT_PREPARE_QUEUE_FULL                                         NTStatus      = 0xC0420009\n\tSTATUS_BTH_ATT_ATTRIBUTE_NOT_FOUND                                        NTStatus      = 0xC042000A\n\tSTATUS_BTH_ATT_ATTRIBUTE_NOT_LONG                                         NTStatus      = 0xC042000B\n\tSTATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE                           NTStatus      = 0xC042000C\n\tSTATUS_BTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH                             NTStatus      = 0xC042000D\n\tSTATUS_BTH_ATT_UNLIKELY                                                   NTStatus      = 0xC042000E\n\tSTATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION                                    NTStatus      = 0xC042000F\n\tSTATUS_BTH_ATT_UNSUPPORTED_GROUP_TYPE                                     NTStatus      = 0xC0420010\n\tSTATUS_BTH_ATT_INSUFFICIENT_RESOURCES                                     NTStatus      = 0xC0420011\n\tSTATUS_BTH_ATT_UNKNOWN_ERROR                                              NTStatus      = 0xC0421000\n\tSTATUS_SECUREBOOT_ROLLBACK_DETECTED                                       NTStatus      = 0xC0430001\n\tSTATUS_SECUREBOOT_POLICY_VIOLATION                                        NTStatus      = 0xC0430002\n\tSTATUS_SECUREBOOT_INVALID_POLICY                                          NTStatus      = 0xC0430003\n\tSTATUS_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND                              NTStatus      = 0xC0430004\n\tSTATUS_SECUREBOOT_POLICY_NOT_SIGNED                                       NTStatus      = 0xC0430005\n\tSTATUS_SECUREBOOT_NOT_ENABLED                                             NTStatus      = 0x80430006\n\tSTATUS_SECUREBOOT_FILE_REPLACED                                           NTStatus      = 0xC0430007\n\tSTATUS_SECUREBOOT_POLICY_NOT_AUTHORIZED                                   NTStatus      = 0xC0430008\n\tSTATUS_SECUREBOOT_POLICY_UNKNOWN                                          NTStatus      = 0xC0430009\n\tSTATUS_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION                      NTStatus      = 0xC043000A\n\tSTATUS_SECUREBOOT_PLATFORM_ID_MISMATCH                                    NTStatus      = 0xC043000B\n\tSTATUS_SECUREBOOT_POLICY_ROLLBACK_DETECTED                                NTStatus      = 0xC043000C\n\tSTATUS_SECUREBOOT_POLICY_UPGRADE_MISMATCH                                 NTStatus      = 0xC043000D\n\tSTATUS_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING                            NTStatus      = 0xC043000E\n\tSTATUS_SECUREBOOT_NOT_BASE_POLICY                                         NTStatus      = 0xC043000F\n\tSTATUS_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY                                 NTStatus      = 0xC0430010\n\tSTATUS_PLATFORM_MANIFEST_NOT_AUTHORIZED                                   NTStatus      = 0xC0EB0001\n\tSTATUS_PLATFORM_MANIFEST_INVALID                                          NTStatus      = 0xC0EB0002\n\tSTATUS_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED                              NTStatus      = 0xC0EB0003\n\tSTATUS_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED                           NTStatus      = 0xC0EB0004\n\tSTATUS_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND                              NTStatus      = 0xC0EB0005\n\tSTATUS_PLATFORM_MANIFEST_NOT_ACTIVE                                       NTStatus      = 0xC0EB0006\n\tSTATUS_PLATFORM_MANIFEST_NOT_SIGNED                                       NTStatus      = 0xC0EB0007\n\tSTATUS_SYSTEM_INTEGRITY_ROLLBACK_DETECTED                                 NTStatus      = 0xC0E90001\n\tSTATUS_SYSTEM_INTEGRITY_POLICY_VIOLATION                                  NTStatus      = 0xC0E90002\n\tSTATUS_SYSTEM_INTEGRITY_INVALID_POLICY                                    NTStatus      = 0xC0E90003\n\tSTATUS_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED                                 NTStatus      = 0xC0E90004\n\tSTATUS_SYSTEM_INTEGRITY_TOO_MANY_POLICIES                                 NTStatus      = 0xC0E90005\n\tSTATUS_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED                NTStatus      = 0xC0E90006\n\tSTATUS_NO_APPLICABLE_APP_LICENSES_FOUND                                   NTStatus      = 0xC0EA0001\n\tSTATUS_CLIP_LICENSE_NOT_FOUND                                             NTStatus      = 0xC0EA0002\n\tSTATUS_CLIP_DEVICE_LICENSE_MISSING                                        NTStatus      = 0xC0EA0003\n\tSTATUS_CLIP_LICENSE_INVALID_SIGNATURE                                     NTStatus      = 0xC0EA0004\n\tSTATUS_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID                          NTStatus      = 0xC0EA0005\n\tSTATUS_CLIP_LICENSE_EXPIRED                                               NTStatus      = 0xC0EA0006\n\tSTATUS_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE                              NTStatus      = 0xC0EA0007\n\tSTATUS_CLIP_LICENSE_NOT_SIGNED                                            NTStatus      = 0xC0EA0008\n\tSTATUS_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE                          NTStatus      = 0xC0EA0009\n\tSTATUS_CLIP_LICENSE_DEVICE_ID_MISMATCH                                    NTStatus      = 0xC0EA000A\n\tSTATUS_AUDIO_ENGINE_NODE_NOT_FOUND                                        NTStatus      = 0xC0440001\n\tSTATUS_HDAUDIO_EMPTY_CONNECTION_LIST                                      NTStatus      = 0xC0440002\n\tSTATUS_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED                              NTStatus      = 0xC0440003\n\tSTATUS_HDAUDIO_NO_LOGICAL_DEVICES_CREATED                                 NTStatus      = 0xC0440004\n\tSTATUS_HDAUDIO_NULL_LINKED_LIST_ENTRY                                     NTStatus      = 0xC0440005\n\tSTATUS_SPACES_REPAIRED                                                    NTStatus      = 0x00E70000\n\tSTATUS_SPACES_PAUSE                                                       NTStatus      = 0x00E70001\n\tSTATUS_SPACES_COMPLETE                                                    NTStatus      = 0x00E70002\n\tSTATUS_SPACES_REDIRECT                                                    NTStatus      = 0x00E70003\n\tSTATUS_SPACES_FAULT_DOMAIN_TYPE_INVALID                                   NTStatus      = 0xC0E70001\n\tSTATUS_SPACES_RESILIENCY_TYPE_INVALID                                     NTStatus      = 0xC0E70003\n\tSTATUS_SPACES_DRIVE_SECTOR_SIZE_INVALID                                   NTStatus      = 0xC0E70004\n\tSTATUS_SPACES_DRIVE_REDUNDANCY_INVALID                                    NTStatus      = 0xC0E70006\n\tSTATUS_SPACES_NUMBER_OF_DATA_COPIES_INVALID                               NTStatus      = 0xC0E70007\n\tSTATUS_SPACES_INTERLEAVE_LENGTH_INVALID                                   NTStatus      = 0xC0E70009\n\tSTATUS_SPACES_NUMBER_OF_COLUMNS_INVALID                                   NTStatus      = 0xC0E7000A\n\tSTATUS_SPACES_NOT_ENOUGH_DRIVES                                           NTStatus      = 0xC0E7000B\n\tSTATUS_SPACES_EXTENDED_ERROR                                              NTStatus      = 0xC0E7000C\n\tSTATUS_SPACES_PROVISIONING_TYPE_INVALID                                   NTStatus      = 0xC0E7000D\n\tSTATUS_SPACES_ALLOCATION_SIZE_INVALID                                     NTStatus      = 0xC0E7000E\n\tSTATUS_SPACES_ENCLOSURE_AWARE_INVALID                                     NTStatus      = 0xC0E7000F\n\tSTATUS_SPACES_WRITE_CACHE_SIZE_INVALID                                    NTStatus      = 0xC0E70010\n\tSTATUS_SPACES_NUMBER_OF_GROUPS_INVALID                                    NTStatus      = 0xC0E70011\n\tSTATUS_SPACES_DRIVE_OPERATIONAL_STATE_INVALID                             NTStatus      = 0xC0E70012\n\tSTATUS_SPACES_UPDATE_COLUMN_STATE                                         NTStatus      = 0xC0E70013\n\tSTATUS_SPACES_MAP_REQUIRED                                                NTStatus      = 0xC0E70014\n\tSTATUS_SPACES_UNSUPPORTED_VERSION                                         NTStatus      = 0xC0E70015\n\tSTATUS_SPACES_CORRUPT_METADATA                                            NTStatus      = 0xC0E70016\n\tSTATUS_SPACES_DRT_FULL                                                    NTStatus      = 0xC0E70017\n\tSTATUS_SPACES_INCONSISTENCY                                               NTStatus      = 0xC0E70018\n\tSTATUS_SPACES_LOG_NOT_READY                                               NTStatus      = 0xC0E70019\n\tSTATUS_SPACES_NO_REDUNDANCY                                               NTStatus      = 0xC0E7001A\n\tSTATUS_SPACES_DRIVE_NOT_READY                                             NTStatus      = 0xC0E7001B\n\tSTATUS_SPACES_DRIVE_SPLIT                                                 NTStatus      = 0xC0E7001C\n\tSTATUS_SPACES_DRIVE_LOST_DATA                                             NTStatus      = 0xC0E7001D\n\tSTATUS_SPACES_ENTRY_INCOMPLETE                                            NTStatus      = 0xC0E7001E\n\tSTATUS_SPACES_ENTRY_INVALID                                               NTStatus      = 0xC0E7001F\n\tSTATUS_SPACES_MARK_DIRTY                                                  NTStatus      = 0xC0E70020\n\tSTATUS_VOLSNAP_BOOTFILE_NOT_VALID                                         NTStatus      = 0xC0500003\n\tSTATUS_VOLSNAP_ACTIVATION_TIMEOUT                                         NTStatus      = 0xC0500004\n\tSTATUS_IO_PREEMPTED                                                       NTStatus      = 0xC0510001\n\tSTATUS_SVHDX_ERROR_STORED                                                 NTStatus      = 0xC05C0000\n\tSTATUS_SVHDX_ERROR_NOT_AVAILABLE                                          NTStatus      = 0xC05CFF00\n\tSTATUS_SVHDX_UNIT_ATTENTION_AVAILABLE                                     NTStatus      = 0xC05CFF01\n\tSTATUS_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED                         NTStatus      = 0xC05CFF02\n\tSTATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED                        NTStatus      = 0xC05CFF03\n\tSTATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED                         NTStatus      = 0xC05CFF04\n\tSTATUS_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED                       NTStatus      = 0xC05CFF05\n\tSTATUS_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED                  NTStatus      = 0xC05CFF06\n\tSTATUS_SVHDX_RESERVATION_CONFLICT                                         NTStatus      = 0xC05CFF07\n\tSTATUS_SVHDX_WRONG_FILE_TYPE                                              NTStatus      = 0xC05CFF08\n\tSTATUS_SVHDX_VERSION_MISMATCH                                             NTStatus      = 0xC05CFF09\n\tSTATUS_VHD_SHARED                                                         NTStatus      = 0xC05CFF0A\n\tSTATUS_SVHDX_NO_INITIATOR                                                 NTStatus      = 0xC05CFF0B\n\tSTATUS_VHDSET_BACKING_STORAGE_NOT_FOUND                                   NTStatus      = 0xC05CFF0C\n\tSTATUS_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP                              NTStatus      = 0xC05D0000\n\tSTATUS_SMB_BAD_CLUSTER_DIALECT                                            NTStatus      = 0xC05D0001\n\tSTATUS_SMB_GUEST_LOGON_BLOCKED                                            NTStatus      = 0xC05D0002\n\tSTATUS_SECCORE_INVALID_COMMAND                                            NTStatus      = 0xC0E80000\n\tSTATUS_VSM_NOT_INITIALIZED                                                NTStatus      = 0xC0450000\n\tSTATUS_VSM_DMA_PROTECTION_NOT_IN_USE                                      NTStatus      = 0xC0450001\n\tSTATUS_APPEXEC_CONDITION_NOT_SATISFIED                                    NTStatus      = 0xC0EC0000\n\tSTATUS_APPEXEC_HANDLE_INVALIDATED                                         NTStatus      = 0xC0EC0001\n\tSTATUS_APPEXEC_INVALID_HOST_GENERATION                                    NTStatus      = 0xC0EC0002\n\tSTATUS_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION                            NTStatus      = 0xC0EC0003\n\tSTATUS_APPEXEC_INVALID_HOST_STATE                                         NTStatus      = 0xC0EC0004\n\tSTATUS_APPEXEC_NO_DONOR                                                   NTStatus      = 0xC0EC0005\n\tSTATUS_APPEXEC_HOST_ID_MISMATCH                                           NTStatus      = 0xC0EC0006\n\tSTATUS_APPEXEC_UNKNOWN_USER                                               NTStatus      = 0xC0EC0007\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/zknownfolderids_windows.go",
    "content": "// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT.\n\npackage windows\n\ntype KNOWNFOLDERID GUID\n\nvar (\n\tFOLDERID_NetworkFolder          = &KNOWNFOLDERID{0xd20beec4, 0x5ca8, 0x4905, [8]byte{0xae, 0x3b, 0xbf, 0x25, 0x1e, 0xa0, 0x9b, 0x53}}\n\tFOLDERID_ComputerFolder         = &KNOWNFOLDERID{0x0ac0837c, 0xbbf8, 0x452a, [8]byte{0x85, 0x0d, 0x79, 0xd0, 0x8e, 0x66, 0x7c, 0xa7}}\n\tFOLDERID_InternetFolder         = &KNOWNFOLDERID{0x4d9f7874, 0x4e0c, 0x4904, [8]byte{0x96, 0x7b, 0x40, 0xb0, 0xd2, 0x0c, 0x3e, 0x4b}}\n\tFOLDERID_ControlPanelFolder     = &KNOWNFOLDERID{0x82a74aeb, 0xaeb4, 0x465c, [8]byte{0xa0, 0x14, 0xd0, 0x97, 0xee, 0x34, 0x6d, 0x63}}\n\tFOLDERID_PrintersFolder         = &KNOWNFOLDERID{0x76fc4e2d, 0xd6ad, 0x4519, [8]byte{0xa6, 0x63, 0x37, 0xbd, 0x56, 0x06, 0x81, 0x85}}\n\tFOLDERID_SyncManagerFolder      = &KNOWNFOLDERID{0x43668bf8, 0xc14e, 0x49b2, [8]byte{0x97, 0xc9, 0x74, 0x77, 0x84, 0xd7, 0x84, 0xb7}}\n\tFOLDERID_SyncSetupFolder        = &KNOWNFOLDERID{0x0f214138, 0xb1d3, 0x4a90, [8]byte{0xbb, 0xa9, 0x27, 0xcb, 0xc0, 0xc5, 0x38, 0x9a}}\n\tFOLDERID_ConflictFolder         = &KNOWNFOLDERID{0x4bfefb45, 0x347d, 0x4006, [8]byte{0xa5, 0xbe, 0xac, 0x0c, 0xb0, 0x56, 0x71, 0x92}}\n\tFOLDERID_SyncResultsFolder      = &KNOWNFOLDERID{0x289a9a43, 0xbe44, 0x4057, [8]byte{0xa4, 0x1b, 0x58, 0x7a, 0x76, 0xd7, 0xe7, 0xf9}}\n\tFOLDERID_RecycleBinFolder       = &KNOWNFOLDERID{0xb7534046, 0x3ecb, 0x4c18, [8]byte{0xbe, 0x4e, 0x64, 0xcd, 0x4c, 0xb7, 0xd6, 0xac}}\n\tFOLDERID_ConnectionsFolder      = &KNOWNFOLDERID{0x6f0cd92b, 0x2e97, 0x45d1, [8]byte{0x88, 0xff, 0xb0, 0xd1, 0x86, 0xb8, 0xde, 0xdd}}\n\tFOLDERID_Fonts                  = &KNOWNFOLDERID{0xfd228cb7, 0xae11, 0x4ae3, [8]byte{0x86, 0x4c, 0x16, 0xf3, 0x91, 0x0a, 0xb8, 0xfe}}\n\tFOLDERID_Desktop                = &KNOWNFOLDERID{0xb4bfcc3a, 0xdb2c, 0x424c, [8]byte{0xb0, 0x29, 0x7f, 0xe9, 0x9a, 0x87, 0xc6, 0x41}}\n\tFOLDERID_Startup                = &KNOWNFOLDERID{0xb97d20bb, 0xf46a, 0x4c97, [8]byte{0xba, 0x10, 0x5e, 0x36, 0x08, 0x43, 0x08, 0x54}}\n\tFOLDERID_Programs               = &KNOWNFOLDERID{0xa77f5d77, 0x2e2b, 0x44c3, [8]byte{0xa6, 0xa2, 0xab, 0xa6, 0x01, 0x05, 0x4a, 0x51}}\n\tFOLDERID_StartMenu              = &KNOWNFOLDERID{0x625b53c3, 0xab48, 0x4ec1, [8]byte{0xba, 0x1f, 0xa1, 0xef, 0x41, 0x46, 0xfc, 0x19}}\n\tFOLDERID_Recent                 = &KNOWNFOLDERID{0xae50c081, 0xebd2, 0x438a, [8]byte{0x86, 0x55, 0x8a, 0x09, 0x2e, 0x34, 0x98, 0x7a}}\n\tFOLDERID_SendTo                 = &KNOWNFOLDERID{0x8983036c, 0x27c0, 0x404b, [8]byte{0x8f, 0x08, 0x10, 0x2d, 0x10, 0xdc, 0xfd, 0x74}}\n\tFOLDERID_Documents              = &KNOWNFOLDERID{0xfdd39ad0, 0x238f, 0x46af, [8]byte{0xad, 0xb4, 0x6c, 0x85, 0x48, 0x03, 0x69, 0xc7}}\n\tFOLDERID_Favorites              = &KNOWNFOLDERID{0x1777f761, 0x68ad, 0x4d8a, [8]byte{0x87, 0xbd, 0x30, 0xb7, 0x59, 0xfa, 0x33, 0xdd}}\n\tFOLDERID_NetHood                = &KNOWNFOLDERID{0xc5abbf53, 0xe17f, 0x4121, [8]byte{0x89, 0x00, 0x86, 0x62, 0x6f, 0xc2, 0xc9, 0x73}}\n\tFOLDERID_PrintHood              = &KNOWNFOLDERID{0x9274bd8d, 0xcfd1, 0x41c3, [8]byte{0xb3, 0x5e, 0xb1, 0x3f, 0x55, 0xa7, 0x58, 0xf4}}\n\tFOLDERID_Templates              = &KNOWNFOLDERID{0xa63293e8, 0x664e, 0x48db, [8]byte{0xa0, 0x79, 0xdf, 0x75, 0x9e, 0x05, 0x09, 0xf7}}\n\tFOLDERID_CommonStartup          = &KNOWNFOLDERID{0x82a5ea35, 0xd9cd, 0x47c5, [8]byte{0x96, 0x29, 0xe1, 0x5d, 0x2f, 0x71, 0x4e, 0x6e}}\n\tFOLDERID_CommonPrograms         = &KNOWNFOLDERID{0x0139d44e, 0x6afe, 0x49f2, [8]byte{0x86, 0x90, 0x3d, 0xaf, 0xca, 0xe6, 0xff, 0xb8}}\n\tFOLDERID_CommonStartMenu        = &KNOWNFOLDERID{0xa4115719, 0xd62e, 0x491d, [8]byte{0xaa, 0x7c, 0xe7, 0x4b, 0x8b, 0xe3, 0xb0, 0x67}}\n\tFOLDERID_PublicDesktop          = &KNOWNFOLDERID{0xc4aa340d, 0xf20f, 0x4863, [8]byte{0xaf, 0xef, 0xf8, 0x7e, 0xf2, 0xe6, 0xba, 0x25}}\n\tFOLDERID_ProgramData            = &KNOWNFOLDERID{0x62ab5d82, 0xfdc1, 0x4dc3, [8]byte{0xa9, 0xdd, 0x07, 0x0d, 0x1d, 0x49, 0x5d, 0x97}}\n\tFOLDERID_CommonTemplates        = &KNOWNFOLDERID{0xb94237e7, 0x57ac, 0x4347, [8]byte{0x91, 0x51, 0xb0, 0x8c, 0x6c, 0x32, 0xd1, 0xf7}}\n\tFOLDERID_PublicDocuments        = &KNOWNFOLDERID{0xed4824af, 0xdce4, 0x45a8, [8]byte{0x81, 0xe2, 0xfc, 0x79, 0x65, 0x08, 0x36, 0x34}}\n\tFOLDERID_RoamingAppData         = &KNOWNFOLDERID{0x3eb685db, 0x65f9, 0x4cf6, [8]byte{0xa0, 0x3a, 0xe3, 0xef, 0x65, 0x72, 0x9f, 0x3d}}\n\tFOLDERID_LocalAppData           = &KNOWNFOLDERID{0xf1b32785, 0x6fba, 0x4fcf, [8]byte{0x9d, 0x55, 0x7b, 0x8e, 0x7f, 0x15, 0x70, 0x91}}\n\tFOLDERID_LocalAppDataLow        = &KNOWNFOLDERID{0xa520a1a4, 0x1780, 0x4ff6, [8]byte{0xbd, 0x18, 0x16, 0x73, 0x43, 0xc5, 0xaf, 0x16}}\n\tFOLDERID_InternetCache          = &KNOWNFOLDERID{0x352481e8, 0x33be, 0x4251, [8]byte{0xba, 0x85, 0x60, 0x07, 0xca, 0xed, 0xcf, 0x9d}}\n\tFOLDERID_Cookies                = &KNOWNFOLDERID{0x2b0f765d, 0xc0e9, 0x4171, [8]byte{0x90, 0x8e, 0x08, 0xa6, 0x11, 0xb8, 0x4f, 0xf6}}\n\tFOLDERID_History                = &KNOWNFOLDERID{0xd9dc8a3b, 0xb784, 0x432e, [8]byte{0xa7, 0x81, 0x5a, 0x11, 0x30, 0xa7, 0x59, 0x63}}\n\tFOLDERID_System                 = &KNOWNFOLDERID{0x1ac14e77, 0x02e7, 0x4e5d, [8]byte{0xb7, 0x44, 0x2e, 0xb1, 0xae, 0x51, 0x98, 0xb7}}\n\tFOLDERID_SystemX86              = &KNOWNFOLDERID{0xd65231b0, 0xb2f1, 0x4857, [8]byte{0xa4, 0xce, 0xa8, 0xe7, 0xc6, 0xea, 0x7d, 0x27}}\n\tFOLDERID_Windows                = &KNOWNFOLDERID{0xf38bf404, 0x1d43, 0x42f2, [8]byte{0x93, 0x05, 0x67, 0xde, 0x0b, 0x28, 0xfc, 0x23}}\n\tFOLDERID_Profile                = &KNOWNFOLDERID{0x5e6c858f, 0x0e22, 0x4760, [8]byte{0x9a, 0xfe, 0xea, 0x33, 0x17, 0xb6, 0x71, 0x73}}\n\tFOLDERID_Pictures               = &KNOWNFOLDERID{0x33e28130, 0x4e1e, 0x4676, [8]byte{0x83, 0x5a, 0x98, 0x39, 0x5c, 0x3b, 0xc3, 0xbb}}\n\tFOLDERID_ProgramFilesX86        = &KNOWNFOLDERID{0x7c5a40ef, 0xa0fb, 0x4bfc, [8]byte{0x87, 0x4a, 0xc0, 0xf2, 0xe0, 0xb9, 0xfa, 0x8e}}\n\tFOLDERID_ProgramFilesCommonX86  = &KNOWNFOLDERID{0xde974d24, 0xd9c6, 0x4d3e, [8]byte{0xbf, 0x91, 0xf4, 0x45, 0x51, 0x20, 0xb9, 0x17}}\n\tFOLDERID_ProgramFilesX64        = &KNOWNFOLDERID{0x6d809377, 0x6af0, 0x444b, [8]byte{0x89, 0x57, 0xa3, 0x77, 0x3f, 0x02, 0x20, 0x0e}}\n\tFOLDERID_ProgramFilesCommonX64  = &KNOWNFOLDERID{0x6365d5a7, 0x0f0d, 0x45e5, [8]byte{0x87, 0xf6, 0x0d, 0xa5, 0x6b, 0x6a, 0x4f, 0x7d}}\n\tFOLDERID_ProgramFiles           = &KNOWNFOLDERID{0x905e63b6, 0xc1bf, 0x494e, [8]byte{0xb2, 0x9c, 0x65, 0xb7, 0x32, 0xd3, 0xd2, 0x1a}}\n\tFOLDERID_ProgramFilesCommon     = &KNOWNFOLDERID{0xf7f1ed05, 0x9f6d, 0x47a2, [8]byte{0xaa, 0xae, 0x29, 0xd3, 0x17, 0xc6, 0xf0, 0x66}}\n\tFOLDERID_UserProgramFiles       = &KNOWNFOLDERID{0x5cd7aee2, 0x2219, 0x4a67, [8]byte{0xb8, 0x5d, 0x6c, 0x9c, 0xe1, 0x56, 0x60, 0xcb}}\n\tFOLDERID_UserProgramFilesCommon = &KNOWNFOLDERID{0xbcbd3057, 0xca5c, 0x4622, [8]byte{0xb4, 0x2d, 0xbc, 0x56, 0xdb, 0x0a, 0xe5, 0x16}}\n\tFOLDERID_AdminTools             = &KNOWNFOLDERID{0x724ef170, 0xa42d, 0x4fef, [8]byte{0x9f, 0x26, 0xb6, 0x0e, 0x84, 0x6f, 0xba, 0x4f}}\n\tFOLDERID_CommonAdminTools       = &KNOWNFOLDERID{0xd0384e7d, 0xbac3, 0x4797, [8]byte{0x8f, 0x14, 0xcb, 0xa2, 0x29, 0xb3, 0x92, 0xb5}}\n\tFOLDERID_Music                  = &KNOWNFOLDERID{0x4bd8d571, 0x6d19, 0x48d3, [8]byte{0xbe, 0x97, 0x42, 0x22, 0x20, 0x08, 0x0e, 0x43}}\n\tFOLDERID_Videos                 = &KNOWNFOLDERID{0x18989b1d, 0x99b5, 0x455b, [8]byte{0x84, 0x1c, 0xab, 0x7c, 0x74, 0xe4, 0xdd, 0xfc}}\n\tFOLDERID_Ringtones              = &KNOWNFOLDERID{0xc870044b, 0xf49e, 0x4126, [8]byte{0xa9, 0xc3, 0xb5, 0x2a, 0x1f, 0xf4, 0x11, 0xe8}}\n\tFOLDERID_PublicPictures         = &KNOWNFOLDERID{0xb6ebfb86, 0x6907, 0x413c, [8]byte{0x9a, 0xf7, 0x4f, 0xc2, 0xab, 0xf0, 0x7c, 0xc5}}\n\tFOLDERID_PublicMusic            = &KNOWNFOLDERID{0x3214fab5, 0x9757, 0x4298, [8]byte{0xbb, 0x61, 0x92, 0xa9, 0xde, 0xaa, 0x44, 0xff}}\n\tFOLDERID_PublicVideos           = &KNOWNFOLDERID{0x2400183a, 0x6185, 0x49fb, [8]byte{0xa2, 0xd8, 0x4a, 0x39, 0x2a, 0x60, 0x2b, 0xa3}}\n\tFOLDERID_PublicRingtones        = &KNOWNFOLDERID{0xe555ab60, 0x153b, 0x4d17, [8]byte{0x9f, 0x04, 0xa5, 0xfe, 0x99, 0xfc, 0x15, 0xec}}\n\tFOLDERID_ResourceDir            = &KNOWNFOLDERID{0x8ad10c31, 0x2adb, 0x4296, [8]byte{0xa8, 0xf7, 0xe4, 0x70, 0x12, 0x32, 0xc9, 0x72}}\n\tFOLDERID_LocalizedResourcesDir  = &KNOWNFOLDERID{0x2a00375e, 0x224c, 0x49de, [8]byte{0xb8, 0xd1, 0x44, 0x0d, 0xf7, 0xef, 0x3d, 0xdc}}\n\tFOLDERID_CommonOEMLinks         = &KNOWNFOLDERID{0xc1bae2d0, 0x10df, 0x4334, [8]byte{0xbe, 0xdd, 0x7a, 0xa2, 0x0b, 0x22, 0x7a, 0x9d}}\n\tFOLDERID_CDBurning              = &KNOWNFOLDERID{0x9e52ab10, 0xf80d, 0x49df, [8]byte{0xac, 0xb8, 0x43, 0x30, 0xf5, 0x68, 0x78, 0x55}}\n\tFOLDERID_UserProfiles           = &KNOWNFOLDERID{0x0762d272, 0xc50a, 0x4bb0, [8]byte{0xa3, 0x82, 0x69, 0x7d, 0xcd, 0x72, 0x9b, 0x80}}\n\tFOLDERID_Playlists              = &KNOWNFOLDERID{0xde92c1c7, 0x837f, 0x4f69, [8]byte{0xa3, 0xbb, 0x86, 0xe6, 0x31, 0x20, 0x4a, 0x23}}\n\tFOLDERID_SamplePlaylists        = &KNOWNFOLDERID{0x15ca69b3, 0x30ee, 0x49c1, [8]byte{0xac, 0xe1, 0x6b, 0x5e, 0xc3, 0x72, 0xaf, 0xb5}}\n\tFOLDERID_SampleMusic            = &KNOWNFOLDERID{0xb250c668, 0xf57d, 0x4ee1, [8]byte{0xa6, 0x3c, 0x29, 0x0e, 0xe7, 0xd1, 0xaa, 0x1f}}\n\tFOLDERID_SamplePictures         = &KNOWNFOLDERID{0xc4900540, 0x2379, 0x4c75, [8]byte{0x84, 0x4b, 0x64, 0xe6, 0xfa, 0xf8, 0x71, 0x6b}}\n\tFOLDERID_SampleVideos           = &KNOWNFOLDERID{0x859ead94, 0x2e85, 0x48ad, [8]byte{0xa7, 0x1a, 0x09, 0x69, 0xcb, 0x56, 0xa6, 0xcd}}\n\tFOLDERID_PhotoAlbums            = &KNOWNFOLDERID{0x69d2cf90, 0xfc33, 0x4fb7, [8]byte{0x9a, 0x0c, 0xeb, 0xb0, 0xf0, 0xfc, 0xb4, 0x3c}}\n\tFOLDERID_Public                 = &KNOWNFOLDERID{0xdfdf76a2, 0xc82a, 0x4d63, [8]byte{0x90, 0x6a, 0x56, 0x44, 0xac, 0x45, 0x73, 0x85}}\n\tFOLDERID_ChangeRemovePrograms   = &KNOWNFOLDERID{0xdf7266ac, 0x9274, 0x4867, [8]byte{0x8d, 0x55, 0x3b, 0xd6, 0x61, 0xde, 0x87, 0x2d}}\n\tFOLDERID_AppUpdates             = &KNOWNFOLDERID{0xa305ce99, 0xf527, 0x492b, [8]byte{0x8b, 0x1a, 0x7e, 0x76, 0xfa, 0x98, 0xd6, 0xe4}}\n\tFOLDERID_AddNewPrograms         = &KNOWNFOLDERID{0xde61d971, 0x5ebc, 0x4f02, [8]byte{0xa3, 0xa9, 0x6c, 0x82, 0x89, 0x5e, 0x5c, 0x04}}\n\tFOLDERID_Downloads              = &KNOWNFOLDERID{0x374de290, 0x123f, 0x4565, [8]byte{0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b}}\n\tFOLDERID_PublicDownloads        = &KNOWNFOLDERID{0x3d644c9b, 0x1fb8, 0x4f30, [8]byte{0x9b, 0x45, 0xf6, 0x70, 0x23, 0x5f, 0x79, 0xc0}}\n\tFOLDERID_SavedSearches          = &KNOWNFOLDERID{0x7d1d3a04, 0xdebb, 0x4115, [8]byte{0x95, 0xcf, 0x2f, 0x29, 0xda, 0x29, 0x20, 0xda}}\n\tFOLDERID_QuickLaunch            = &KNOWNFOLDERID{0x52a4f021, 0x7b75, 0x48a9, [8]byte{0x9f, 0x6b, 0x4b, 0x87, 0xa2, 0x10, 0xbc, 0x8f}}\n\tFOLDERID_Contacts               = &KNOWNFOLDERID{0x56784854, 0xc6cb, 0x462b, [8]byte{0x81, 0x69, 0x88, 0xe3, 0x50, 0xac, 0xb8, 0x82}}\n\tFOLDERID_SidebarParts           = &KNOWNFOLDERID{0xa75d362e, 0x50fc, 0x4fb7, [8]byte{0xac, 0x2c, 0xa8, 0xbe, 0xaa, 0x31, 0x44, 0x93}}\n\tFOLDERID_SidebarDefaultParts    = &KNOWNFOLDERID{0x7b396e54, 0x9ec5, 0x4300, [8]byte{0xbe, 0x0a, 0x24, 0x82, 0xeb, 0xae, 0x1a, 0x26}}\n\tFOLDERID_PublicGameTasks        = &KNOWNFOLDERID{0xdebf2536, 0xe1a8, 0x4c59, [8]byte{0xb6, 0xa2, 0x41, 0x45, 0x86, 0x47, 0x6a, 0xea}}\n\tFOLDERID_GameTasks              = &KNOWNFOLDERID{0x054fae61, 0x4dd8, 0x4787, [8]byte{0x80, 0xb6, 0x09, 0x02, 0x20, 0xc4, 0xb7, 0x00}}\n\tFOLDERID_SavedGames             = &KNOWNFOLDERID{0x4c5c32ff, 0xbb9d, 0x43b0, [8]byte{0xb5, 0xb4, 0x2d, 0x72, 0xe5, 0x4e, 0xaa, 0xa4}}\n\tFOLDERID_Games                  = &KNOWNFOLDERID{0xcac52c1a, 0xb53d, 0x4edc, [8]byte{0x92, 0xd7, 0x6b, 0x2e, 0x8a, 0xc1, 0x94, 0x34}}\n\tFOLDERID_SEARCH_MAPI            = &KNOWNFOLDERID{0x98ec0e18, 0x2098, 0x4d44, [8]byte{0x86, 0x44, 0x66, 0x97, 0x93, 0x15, 0xa2, 0x81}}\n\tFOLDERID_SEARCH_CSC             = &KNOWNFOLDERID{0xee32e446, 0x31ca, 0x4aba, [8]byte{0x81, 0x4f, 0xa5, 0xeb, 0xd2, 0xfd, 0x6d, 0x5e}}\n\tFOLDERID_Links                  = &KNOWNFOLDERID{0xbfb9d5e0, 0xc6a9, 0x404c, [8]byte{0xb2, 0xb2, 0xae, 0x6d, 0xb6, 0xaf, 0x49, 0x68}}\n\tFOLDERID_UsersFiles             = &KNOWNFOLDERID{0xf3ce0f7c, 0x4901, 0x4acc, [8]byte{0x86, 0x48, 0xd5, 0xd4, 0x4b, 0x04, 0xef, 0x8f}}\n\tFOLDERID_UsersLibraries         = &KNOWNFOLDERID{0xa302545d, 0xdeff, 0x464b, [8]byte{0xab, 0xe8, 0x61, 0xc8, 0x64, 0x8d, 0x93, 0x9b}}\n\tFOLDERID_SearchHome             = &KNOWNFOLDERID{0x190337d1, 0xb8ca, 0x4121, [8]byte{0xa6, 0x39, 0x6d, 0x47, 0x2d, 0x16, 0x97, 0x2a}}\n\tFOLDERID_OriginalImages         = &KNOWNFOLDERID{0x2c36c0aa, 0x5812, 0x4b87, [8]byte{0xbf, 0xd0, 0x4c, 0xd0, 0xdf, 0xb1, 0x9b, 0x39}}\n\tFOLDERID_DocumentsLibrary       = &KNOWNFOLDERID{0x7b0db17d, 0x9cd2, 0x4a93, [8]byte{0x97, 0x33, 0x46, 0xcc, 0x89, 0x02, 0x2e, 0x7c}}\n\tFOLDERID_MusicLibrary           = &KNOWNFOLDERID{0x2112ab0a, 0xc86a, 0x4ffe, [8]byte{0xa3, 0x68, 0x0d, 0xe9, 0x6e, 0x47, 0x01, 0x2e}}\n\tFOLDERID_PicturesLibrary        = &KNOWNFOLDERID{0xa990ae9f, 0xa03b, 0x4e80, [8]byte{0x94, 0xbc, 0x99, 0x12, 0xd7, 0x50, 0x41, 0x04}}\n\tFOLDERID_VideosLibrary          = &KNOWNFOLDERID{0x491e922f, 0x5643, 0x4af4, [8]byte{0xa7, 0xeb, 0x4e, 0x7a, 0x13, 0x8d, 0x81, 0x74}}\n\tFOLDERID_RecordedTVLibrary      = &KNOWNFOLDERID{0x1a6fdba2, 0xf42d, 0x4358, [8]byte{0xa7, 0x98, 0xb7, 0x4d, 0x74, 0x59, 0x26, 0xc5}}\n\tFOLDERID_HomeGroup              = &KNOWNFOLDERID{0x52528a6b, 0xb9e3, 0x4add, [8]byte{0xb6, 0x0d, 0x58, 0x8c, 0x2d, 0xba, 0x84, 0x2d}}\n\tFOLDERID_HomeGroupCurrentUser   = &KNOWNFOLDERID{0x9b74b6a3, 0x0dfd, 0x4f11, [8]byte{0x9e, 0x78, 0x5f, 0x78, 0x00, 0xf2, 0xe7, 0x72}}\n\tFOLDERID_DeviceMetadataStore    = &KNOWNFOLDERID{0x5ce4a5e9, 0xe4eb, 0x479d, [8]byte{0xb8, 0x9f, 0x13, 0x0c, 0x02, 0x88, 0x61, 0x55}}\n\tFOLDERID_Libraries              = &KNOWNFOLDERID{0x1b3ea5dc, 0xb587, 0x4786, [8]byte{0xb4, 0xef, 0xbd, 0x1d, 0xc3, 0x32, 0xae, 0xae}}\n\tFOLDERID_PublicLibraries        = &KNOWNFOLDERID{0x48daf80b, 0xe6cf, 0x4f4e, [8]byte{0xb8, 0x00, 0x0e, 0x69, 0xd8, 0x4e, 0xe3, 0x84}}\n\tFOLDERID_UserPinned             = &KNOWNFOLDERID{0x9e3995ab, 0x1f9c, 0x4f13, [8]byte{0xb8, 0x27, 0x48, 0xb2, 0x4b, 0x6c, 0x71, 0x74}}\n\tFOLDERID_ImplicitAppShortcuts   = &KNOWNFOLDERID{0xbcb5256f, 0x79f6, 0x4cee, [8]byte{0xb7, 0x25, 0xdc, 0x34, 0xe4, 0x02, 0xfd, 0x46}}\n\tFOLDERID_AccountPictures        = &KNOWNFOLDERID{0x008ca0b1, 0x55b4, 0x4c56, [8]byte{0xb8, 0xa8, 0x4d, 0xe4, 0xb2, 0x99, 0xd3, 0xbe}}\n\tFOLDERID_PublicUserTiles        = &KNOWNFOLDERID{0x0482af6c, 0x08f1, 0x4c34, [8]byte{0x8c, 0x90, 0xe1, 0x7e, 0xc9, 0x8b, 0x1e, 0x17}}\n\tFOLDERID_AppsFolder             = &KNOWNFOLDERID{0x1e87508d, 0x89c2, 0x42f0, [8]byte{0x8a, 0x7e, 0x64, 0x5a, 0x0f, 0x50, 0xca, 0x58}}\n\tFOLDERID_StartMenuAllPrograms   = &KNOWNFOLDERID{0xf26305ef, 0x6948, 0x40b9, [8]byte{0xb2, 0x55, 0x81, 0x45, 0x3d, 0x09, 0xc7, 0x85}}\n\tFOLDERID_CommonStartMenuPlaces  = &KNOWNFOLDERID{0xa440879f, 0x87a0, 0x4f7d, [8]byte{0xb7, 0x00, 0x02, 0x07, 0xb9, 0x66, 0x19, 0x4a}}\n\tFOLDERID_ApplicationShortcuts   = &KNOWNFOLDERID{0xa3918781, 0xe5f2, 0x4890, [8]byte{0xb3, 0xd9, 0xa7, 0xe5, 0x43, 0x32, 0x32, 0x8c}}\n\tFOLDERID_RoamingTiles           = &KNOWNFOLDERID{0x00bcfc5a, 0xed94, 0x4e48, [8]byte{0x96, 0xa1, 0x3f, 0x62, 0x17, 0xf2, 0x19, 0x90}}\n\tFOLDERID_RoamedTileImages       = &KNOWNFOLDERID{0xaaa8d5a5, 0xf1d6, 0x4259, [8]byte{0xba, 0xa8, 0x78, 0xe7, 0xef, 0x60, 0x83, 0x5e}}\n\tFOLDERID_Screenshots            = &KNOWNFOLDERID{0xb7bede81, 0xdf94, 0x4682, [8]byte{0xa7, 0xd8, 0x57, 0xa5, 0x26, 0x20, 0xb8, 0x6f}}\n\tFOLDERID_CameraRoll             = &KNOWNFOLDERID{0xab5fb87b, 0x7ce2, 0x4f83, [8]byte{0x91, 0x5d, 0x55, 0x08, 0x46, 0xc9, 0x53, 0x7b}}\n\tFOLDERID_SkyDrive               = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}}\n\tFOLDERID_OneDrive               = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}}\n\tFOLDERID_SkyDriveDocuments      = &KNOWNFOLDERID{0x24d89e24, 0x2f19, 0x4534, [8]byte{0x9d, 0xde, 0x6a, 0x66, 0x71, 0xfb, 0xb8, 0xfe}}\n\tFOLDERID_SkyDrivePictures       = &KNOWNFOLDERID{0x339719b5, 0x8c47, 0x4894, [8]byte{0x94, 0xc2, 0xd8, 0xf7, 0x7a, 0xdd, 0x44, 0xa6}}\n\tFOLDERID_SkyDriveMusic          = &KNOWNFOLDERID{0xc3f2459e, 0x80d6, 0x45dc, [8]byte{0xbf, 0xef, 0x1f, 0x76, 0x9f, 0x2b, 0xe7, 0x30}}\n\tFOLDERID_SkyDriveCameraRoll     = &KNOWNFOLDERID{0x767e6811, 0x49cb, 0x4273, [8]byte{0x87, 0xc2, 0x20, 0xf3, 0x55, 0xe1, 0x08, 0x5b}}\n\tFOLDERID_SearchHistory          = &KNOWNFOLDERID{0x0d4c3db6, 0x03a3, 0x462f, [8]byte{0xa0, 0xe6, 0x08, 0x92, 0x4c, 0x41, 0xb5, 0xd4}}\n\tFOLDERID_SearchTemplates        = &KNOWNFOLDERID{0x7e636bfe, 0xdfa9, 0x4d5e, [8]byte{0xb4, 0x56, 0xd7, 0xb3, 0x98, 0x51, 0xd8, 0xa9}}\n\tFOLDERID_CameraRollLibrary      = &KNOWNFOLDERID{0x2b20df75, 0x1eda, 0x4039, [8]byte{0x80, 0x97, 0x38, 0x79, 0x82, 0x27, 0xd5, 0xb7}}\n\tFOLDERID_SavedPictures          = &KNOWNFOLDERID{0x3b193882, 0xd3ad, 0x4eab, [8]byte{0x96, 0x5a, 0x69, 0x82, 0x9d, 0x1f, 0xb5, 0x9f}}\n\tFOLDERID_SavedPicturesLibrary   = &KNOWNFOLDERID{0xe25b5812, 0xbe88, 0x4bd9, [8]byte{0x94, 0xb0, 0x29, 0x23, 0x34, 0x77, 0xb6, 0xc3}}\n\tFOLDERID_RetailDemo             = &KNOWNFOLDERID{0x12d4c69e, 0x24ad, 0x4923, [8]byte{0xbe, 0x19, 0x31, 0x32, 0x1c, 0x43, 0xa7, 0x67}}\n\tFOLDERID_Device                 = &KNOWNFOLDERID{0x1c2ac1dc, 0x4358, 0x4b6c, [8]byte{0x97, 0x33, 0xaf, 0x21, 0x15, 0x65, 0x76, 0xf0}}\n\tFOLDERID_DevelopmentFiles       = &KNOWNFOLDERID{0xdbe8e08e, 0x3053, 0x4bbc, [8]byte{0xb1, 0x83, 0x2a, 0x7b, 0x2b, 0x19, 0x1e, 0x59}}\n\tFOLDERID_Objects3D              = &KNOWNFOLDERID{0x31c0dd25, 0x9439, 0x4f12, [8]byte{0xbf, 0x41, 0x7f, 0xf4, 0xed, 0xa3, 0x87, 0x22}}\n\tFOLDERID_AppCaptures            = &KNOWNFOLDERID{0xedc0fe71, 0x98d8, 0x4f4a, [8]byte{0xb9, 0x20, 0xc8, 0xdc, 0x13, 0x3c, 0xb1, 0x65}}\n\tFOLDERID_LocalDocuments         = &KNOWNFOLDERID{0xf42ee2d3, 0x909f, 0x4907, [8]byte{0x88, 0x71, 0x4c, 0x22, 0xfc, 0x0b, 0xf7, 0x56}}\n\tFOLDERID_LocalPictures          = &KNOWNFOLDERID{0x0ddd015d, 0xb06c, 0x45d5, [8]byte{0x8c, 0x4c, 0xf5, 0x97, 0x13, 0x85, 0x46, 0x39}}\n\tFOLDERID_LocalVideos            = &KNOWNFOLDERID{0x35286a68, 0x3c57, 0x41a1, [8]byte{0xbb, 0xb1, 0x0e, 0xae, 0x73, 0xd7, 0x6c, 0x95}}\n\tFOLDERID_LocalMusic             = &KNOWNFOLDERID{0xa0c69a99, 0x21c8, 0x4671, [8]byte{0x87, 0x03, 0x79, 0x34, 0x16, 0x2f, 0xcf, 0x1d}}\n\tFOLDERID_LocalDownloads         = &KNOWNFOLDERID{0x7d83ee9b, 0x2244, 0x4e70, [8]byte{0xb1, 0xf5, 0x53, 0x93, 0x04, 0x2a, 0xf1, 0xe4}}\n\tFOLDERID_RecordedCalls          = &KNOWNFOLDERID{0x2f8b40c2, 0x83ed, 0x48ee, [8]byte{0xb3, 0x83, 0xa1, 0xf1, 0x57, 0xec, 0x6f, 0x9a}}\n\tFOLDERID_AllAppMods             = &KNOWNFOLDERID{0x7ad67899, 0x66af, 0x43ba, [8]byte{0x91, 0x56, 0x6a, 0xad, 0x42, 0xe6, 0xc5, 0x96}}\n\tFOLDERID_CurrentAppMods         = &KNOWNFOLDERID{0x3db40b20, 0x2a30, 0x4dbe, [8]byte{0x91, 0x7e, 0x77, 0x1d, 0xd2, 0x1d, 0xd0, 0x99}}\n\tFOLDERID_AppDataDesktop         = &KNOWNFOLDERID{0xb2c5e279, 0x7add, 0x439f, [8]byte{0xb2, 0x8c, 0xc4, 0x1f, 0xe1, 0xbb, 0xf6, 0x72}}\n\tFOLDERID_AppDataDocuments       = &KNOWNFOLDERID{0x7be16610, 0x1f7f, 0x44ac, [8]byte{0xbf, 0xf0, 0x83, 0xe1, 0x5f, 0x2f, 0xfc, 0xa1}}\n\tFOLDERID_AppDataFavorites       = &KNOWNFOLDERID{0x7cfbefbc, 0xde1f, 0x45aa, [8]byte{0xb8, 0x43, 0xa5, 0x42, 0xac, 0x53, 0x6c, 0xc9}}\n\tFOLDERID_AppDataProgramData     = &KNOWNFOLDERID{0x559d40a3, 0xa036, 0x40fa, [8]byte{0xaf, 0x61, 0x84, 0xcb, 0x43, 0x0a, 0x4d, 0x34}}\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/zsyscall_windows.go",
    "content": "// Code generated by 'go generate'; DO NOT EDIT.\n\npackage windows\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ unsafe.Pointer\n\n// Do the interface allocations only once for common\n// Errno values.\nconst (\n\terrnoERROR_IO_PENDING = 997\n)\n\nvar (\n\terrERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)\n\terrERROR_EINVAL     error = syscall.EINVAL\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e syscall.Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn errERROR_EINVAL\n\tcase errnoERROR_IO_PENDING:\n\t\treturn errERROR_IO_PENDING\n\t}\n\t// TODO: add more here, after collecting data on the common\n\t// error values see on Windows. (perhaps when running\n\t// all.bat?)\n\treturn e\n}\n\nvar (\n\tmodCfgMgr32 = NewLazySystemDLL(\"CfgMgr32.dll\")\n\tmodadvapi32 = NewLazySystemDLL(\"advapi32.dll\")\n\tmodcrypt32  = NewLazySystemDLL(\"crypt32.dll\")\n\tmoddnsapi   = NewLazySystemDLL(\"dnsapi.dll\")\n\tmoddwmapi   = NewLazySystemDLL(\"dwmapi.dll\")\n\tmodiphlpapi = NewLazySystemDLL(\"iphlpapi.dll\")\n\tmodkernel32 = NewLazySystemDLL(\"kernel32.dll\")\n\tmodmswsock  = NewLazySystemDLL(\"mswsock.dll\")\n\tmodnetapi32 = NewLazySystemDLL(\"netapi32.dll\")\n\tmodntdll    = NewLazySystemDLL(\"ntdll.dll\")\n\tmodole32    = NewLazySystemDLL(\"ole32.dll\")\n\tmodpsapi    = NewLazySystemDLL(\"psapi.dll\")\n\tmodsechost  = NewLazySystemDLL(\"sechost.dll\")\n\tmodsecur32  = NewLazySystemDLL(\"secur32.dll\")\n\tmodsetupapi = NewLazySystemDLL(\"setupapi.dll\")\n\tmodshell32  = NewLazySystemDLL(\"shell32.dll\")\n\tmoduser32   = NewLazySystemDLL(\"user32.dll\")\n\tmoduserenv  = NewLazySystemDLL(\"userenv.dll\")\n\tmodversion  = NewLazySystemDLL(\"version.dll\")\n\tmodwinmm    = NewLazySystemDLL(\"winmm.dll\")\n\tmodwintrust = NewLazySystemDLL(\"wintrust.dll\")\n\tmodws2_32   = NewLazySystemDLL(\"ws2_32.dll\")\n\tmodwtsapi32 = NewLazySystemDLL(\"wtsapi32.dll\")\n\n\tprocCM_Get_DevNode_Status                                = modCfgMgr32.NewProc(\"CM_Get_DevNode_Status\")\n\tprocCM_Get_Device_Interface_ListW                        = modCfgMgr32.NewProc(\"CM_Get_Device_Interface_ListW\")\n\tprocCM_Get_Device_Interface_List_SizeW                   = modCfgMgr32.NewProc(\"CM_Get_Device_Interface_List_SizeW\")\n\tprocCM_MapCrToWin32Err                                   = modCfgMgr32.NewProc(\"CM_MapCrToWin32Err\")\n\tprocAdjustTokenGroups                                    = modadvapi32.NewProc(\"AdjustTokenGroups\")\n\tprocAdjustTokenPrivileges                                = modadvapi32.NewProc(\"AdjustTokenPrivileges\")\n\tprocAllocateAndInitializeSid                             = modadvapi32.NewProc(\"AllocateAndInitializeSid\")\n\tprocBuildSecurityDescriptorW                             = modadvapi32.NewProc(\"BuildSecurityDescriptorW\")\n\tprocChangeServiceConfig2W                                = modadvapi32.NewProc(\"ChangeServiceConfig2W\")\n\tprocChangeServiceConfigW                                 = modadvapi32.NewProc(\"ChangeServiceConfigW\")\n\tprocCheckTokenMembership                                 = modadvapi32.NewProc(\"CheckTokenMembership\")\n\tprocCloseServiceHandle                                   = modadvapi32.NewProc(\"CloseServiceHandle\")\n\tprocControlService                                       = modadvapi32.NewProc(\"ControlService\")\n\tprocConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc(\"ConvertSecurityDescriptorToStringSecurityDescriptorW\")\n\tprocConvertSidToStringSidW                               = modadvapi32.NewProc(\"ConvertSidToStringSidW\")\n\tprocConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc(\"ConvertStringSecurityDescriptorToSecurityDescriptorW\")\n\tprocConvertStringSidToSidW                               = modadvapi32.NewProc(\"ConvertStringSidToSidW\")\n\tprocCopySid                                              = modadvapi32.NewProc(\"CopySid\")\n\tprocCreateProcessAsUserW                                 = modadvapi32.NewProc(\"CreateProcessAsUserW\")\n\tprocCreateServiceW                                       = modadvapi32.NewProc(\"CreateServiceW\")\n\tprocCreateWellKnownSid                                   = modadvapi32.NewProc(\"CreateWellKnownSid\")\n\tprocCryptAcquireContextW                                 = modadvapi32.NewProc(\"CryptAcquireContextW\")\n\tprocCryptGenRandom                                       = modadvapi32.NewProc(\"CryptGenRandom\")\n\tprocCryptReleaseContext                                  = modadvapi32.NewProc(\"CryptReleaseContext\")\n\tprocDeleteService                                        = modadvapi32.NewProc(\"DeleteService\")\n\tprocDeregisterEventSource                                = modadvapi32.NewProc(\"DeregisterEventSource\")\n\tprocDuplicateTokenEx                                     = modadvapi32.NewProc(\"DuplicateTokenEx\")\n\tprocEnumDependentServicesW                               = modadvapi32.NewProc(\"EnumDependentServicesW\")\n\tprocEnumServicesStatusExW                                = modadvapi32.NewProc(\"EnumServicesStatusExW\")\n\tprocEqualSid                                             = modadvapi32.NewProc(\"EqualSid\")\n\tprocFreeSid                                              = modadvapi32.NewProc(\"FreeSid\")\n\tprocGetAce                                               = modadvapi32.NewProc(\"GetAce\")\n\tprocGetLengthSid                                         = modadvapi32.NewProc(\"GetLengthSid\")\n\tprocGetNamedSecurityInfoW                                = modadvapi32.NewProc(\"GetNamedSecurityInfoW\")\n\tprocGetSecurityDescriptorControl                         = modadvapi32.NewProc(\"GetSecurityDescriptorControl\")\n\tprocGetSecurityDescriptorDacl                            = modadvapi32.NewProc(\"GetSecurityDescriptorDacl\")\n\tprocGetSecurityDescriptorGroup                           = modadvapi32.NewProc(\"GetSecurityDescriptorGroup\")\n\tprocGetSecurityDescriptorLength                          = modadvapi32.NewProc(\"GetSecurityDescriptorLength\")\n\tprocGetSecurityDescriptorOwner                           = modadvapi32.NewProc(\"GetSecurityDescriptorOwner\")\n\tprocGetSecurityDescriptorRMControl                       = modadvapi32.NewProc(\"GetSecurityDescriptorRMControl\")\n\tprocGetSecurityDescriptorSacl                            = modadvapi32.NewProc(\"GetSecurityDescriptorSacl\")\n\tprocGetSecurityInfo                                      = modadvapi32.NewProc(\"GetSecurityInfo\")\n\tprocGetSidIdentifierAuthority                            = modadvapi32.NewProc(\"GetSidIdentifierAuthority\")\n\tprocGetSidSubAuthority                                   = modadvapi32.NewProc(\"GetSidSubAuthority\")\n\tprocGetSidSubAuthorityCount                              = modadvapi32.NewProc(\"GetSidSubAuthorityCount\")\n\tprocGetTokenInformation                                  = modadvapi32.NewProc(\"GetTokenInformation\")\n\tprocImpersonateSelf                                      = modadvapi32.NewProc(\"ImpersonateSelf\")\n\tprocInitializeSecurityDescriptor                         = modadvapi32.NewProc(\"InitializeSecurityDescriptor\")\n\tprocInitiateSystemShutdownExW                            = modadvapi32.NewProc(\"InitiateSystemShutdownExW\")\n\tprocIsTokenRestricted                                    = modadvapi32.NewProc(\"IsTokenRestricted\")\n\tprocIsValidSecurityDescriptor                            = modadvapi32.NewProc(\"IsValidSecurityDescriptor\")\n\tprocIsValidSid                                           = modadvapi32.NewProc(\"IsValidSid\")\n\tprocIsWellKnownSid                                       = modadvapi32.NewProc(\"IsWellKnownSid\")\n\tprocLookupAccountNameW                                   = modadvapi32.NewProc(\"LookupAccountNameW\")\n\tprocLookupAccountSidW                                    = modadvapi32.NewProc(\"LookupAccountSidW\")\n\tprocLookupPrivilegeValueW                                = modadvapi32.NewProc(\"LookupPrivilegeValueW\")\n\tprocMakeAbsoluteSD                                       = modadvapi32.NewProc(\"MakeAbsoluteSD\")\n\tprocMakeSelfRelativeSD                                   = modadvapi32.NewProc(\"MakeSelfRelativeSD\")\n\tprocNotifyServiceStatusChangeW                           = modadvapi32.NewProc(\"NotifyServiceStatusChangeW\")\n\tprocOpenProcessToken                                     = modadvapi32.NewProc(\"OpenProcessToken\")\n\tprocOpenSCManagerW                                       = modadvapi32.NewProc(\"OpenSCManagerW\")\n\tprocOpenServiceW                                         = modadvapi32.NewProc(\"OpenServiceW\")\n\tprocOpenThreadToken                                      = modadvapi32.NewProc(\"OpenThreadToken\")\n\tprocQueryServiceConfig2W                                 = modadvapi32.NewProc(\"QueryServiceConfig2W\")\n\tprocQueryServiceConfigW                                  = modadvapi32.NewProc(\"QueryServiceConfigW\")\n\tprocQueryServiceDynamicInformation                       = modadvapi32.NewProc(\"QueryServiceDynamicInformation\")\n\tprocQueryServiceLockStatusW                              = modadvapi32.NewProc(\"QueryServiceLockStatusW\")\n\tprocQueryServiceStatus                                   = modadvapi32.NewProc(\"QueryServiceStatus\")\n\tprocQueryServiceStatusEx                                 = modadvapi32.NewProc(\"QueryServiceStatusEx\")\n\tprocRegCloseKey                                          = modadvapi32.NewProc(\"RegCloseKey\")\n\tprocRegEnumKeyExW                                        = modadvapi32.NewProc(\"RegEnumKeyExW\")\n\tprocRegNotifyChangeKeyValue                              = modadvapi32.NewProc(\"RegNotifyChangeKeyValue\")\n\tprocRegOpenKeyExW                                        = modadvapi32.NewProc(\"RegOpenKeyExW\")\n\tprocRegQueryInfoKeyW                                     = modadvapi32.NewProc(\"RegQueryInfoKeyW\")\n\tprocRegQueryValueExW                                     = modadvapi32.NewProc(\"RegQueryValueExW\")\n\tprocRegisterEventSourceW                                 = modadvapi32.NewProc(\"RegisterEventSourceW\")\n\tprocRegisterServiceCtrlHandlerExW                        = modadvapi32.NewProc(\"RegisterServiceCtrlHandlerExW\")\n\tprocReportEventW                                         = modadvapi32.NewProc(\"ReportEventW\")\n\tprocRevertToSelf                                         = modadvapi32.NewProc(\"RevertToSelf\")\n\tprocSetEntriesInAclW                                     = modadvapi32.NewProc(\"SetEntriesInAclW\")\n\tprocSetKernelObjectSecurity                              = modadvapi32.NewProc(\"SetKernelObjectSecurity\")\n\tprocSetNamedSecurityInfoW                                = modadvapi32.NewProc(\"SetNamedSecurityInfoW\")\n\tprocSetSecurityDescriptorControl                         = modadvapi32.NewProc(\"SetSecurityDescriptorControl\")\n\tprocSetSecurityDescriptorDacl                            = modadvapi32.NewProc(\"SetSecurityDescriptorDacl\")\n\tprocSetSecurityDescriptorGroup                           = modadvapi32.NewProc(\"SetSecurityDescriptorGroup\")\n\tprocSetSecurityDescriptorOwner                           = modadvapi32.NewProc(\"SetSecurityDescriptorOwner\")\n\tprocSetSecurityDescriptorRMControl                       = modadvapi32.NewProc(\"SetSecurityDescriptorRMControl\")\n\tprocSetSecurityDescriptorSacl                            = modadvapi32.NewProc(\"SetSecurityDescriptorSacl\")\n\tprocSetSecurityInfo                                      = modadvapi32.NewProc(\"SetSecurityInfo\")\n\tprocSetServiceStatus                                     = modadvapi32.NewProc(\"SetServiceStatus\")\n\tprocSetThreadToken                                       = modadvapi32.NewProc(\"SetThreadToken\")\n\tprocSetTokenInformation                                  = modadvapi32.NewProc(\"SetTokenInformation\")\n\tprocStartServiceCtrlDispatcherW                          = modadvapi32.NewProc(\"StartServiceCtrlDispatcherW\")\n\tprocStartServiceW                                        = modadvapi32.NewProc(\"StartServiceW\")\n\tprocCertAddCertificateContextToStore                     = modcrypt32.NewProc(\"CertAddCertificateContextToStore\")\n\tprocCertCloseStore                                       = modcrypt32.NewProc(\"CertCloseStore\")\n\tprocCertCreateCertificateContext                         = modcrypt32.NewProc(\"CertCreateCertificateContext\")\n\tprocCertDeleteCertificateFromStore                       = modcrypt32.NewProc(\"CertDeleteCertificateFromStore\")\n\tprocCertDuplicateCertificateContext                      = modcrypt32.NewProc(\"CertDuplicateCertificateContext\")\n\tprocCertEnumCertificatesInStore                          = modcrypt32.NewProc(\"CertEnumCertificatesInStore\")\n\tprocCertFindCertificateInStore                           = modcrypt32.NewProc(\"CertFindCertificateInStore\")\n\tprocCertFindChainInStore                                 = modcrypt32.NewProc(\"CertFindChainInStore\")\n\tprocCertFindExtension                                    = modcrypt32.NewProc(\"CertFindExtension\")\n\tprocCertFreeCertificateChain                             = modcrypt32.NewProc(\"CertFreeCertificateChain\")\n\tprocCertFreeCertificateContext                           = modcrypt32.NewProc(\"CertFreeCertificateContext\")\n\tprocCertGetCertificateChain                              = modcrypt32.NewProc(\"CertGetCertificateChain\")\n\tprocCertGetNameStringW                                   = modcrypt32.NewProc(\"CertGetNameStringW\")\n\tprocCertOpenStore                                        = modcrypt32.NewProc(\"CertOpenStore\")\n\tprocCertOpenSystemStoreW                                 = modcrypt32.NewProc(\"CertOpenSystemStoreW\")\n\tprocCertVerifyCertificateChainPolicy                     = modcrypt32.NewProc(\"CertVerifyCertificateChainPolicy\")\n\tprocCryptAcquireCertificatePrivateKey                    = modcrypt32.NewProc(\"CryptAcquireCertificatePrivateKey\")\n\tprocCryptDecodeObject                                    = modcrypt32.NewProc(\"CryptDecodeObject\")\n\tprocCryptProtectData                                     = modcrypt32.NewProc(\"CryptProtectData\")\n\tprocCryptQueryObject                                     = modcrypt32.NewProc(\"CryptQueryObject\")\n\tprocCryptUnprotectData                                   = modcrypt32.NewProc(\"CryptUnprotectData\")\n\tprocPFXImportCertStore                                   = modcrypt32.NewProc(\"PFXImportCertStore\")\n\tprocDnsNameCompare_W                                     = moddnsapi.NewProc(\"DnsNameCompare_W\")\n\tprocDnsQuery_W                                           = moddnsapi.NewProc(\"DnsQuery_W\")\n\tprocDnsRecordListFree                                    = moddnsapi.NewProc(\"DnsRecordListFree\")\n\tprocDwmGetWindowAttribute                                = moddwmapi.NewProc(\"DwmGetWindowAttribute\")\n\tprocDwmSetWindowAttribute                                = moddwmapi.NewProc(\"DwmSetWindowAttribute\")\n\tprocCancelMibChangeNotify2                               = modiphlpapi.NewProc(\"CancelMibChangeNotify2\")\n\tprocFreeMibTable                                         = modiphlpapi.NewProc(\"FreeMibTable\")\n\tprocGetAdaptersAddresses                                 = modiphlpapi.NewProc(\"GetAdaptersAddresses\")\n\tprocGetAdaptersInfo                                      = modiphlpapi.NewProc(\"GetAdaptersInfo\")\n\tprocGetBestInterfaceEx                                   = modiphlpapi.NewProc(\"GetBestInterfaceEx\")\n\tprocGetIfEntry                                           = modiphlpapi.NewProc(\"GetIfEntry\")\n\tprocGetIfEntry2Ex                                        = modiphlpapi.NewProc(\"GetIfEntry2Ex\")\n\tprocGetIfTable2Ex                                        = modiphlpapi.NewProc(\"GetIfTable2Ex\")\n\tprocGetIpForwardEntry2                                   = modiphlpapi.NewProc(\"GetIpForwardEntry2\")\n\tprocGetIpForwardTable2                                   = modiphlpapi.NewProc(\"GetIpForwardTable2\")\n\tprocGetIpInterfaceEntry                                  = modiphlpapi.NewProc(\"GetIpInterfaceEntry\")\n\tprocGetIpInterfaceTable                                  = modiphlpapi.NewProc(\"GetIpInterfaceTable\")\n\tprocGetUnicastIpAddressEntry                             = modiphlpapi.NewProc(\"GetUnicastIpAddressEntry\")\n\tprocGetUnicastIpAddressTable                             = modiphlpapi.NewProc(\"GetUnicastIpAddressTable\")\n\tprocNotifyIpInterfaceChange                              = modiphlpapi.NewProc(\"NotifyIpInterfaceChange\")\n\tprocNotifyRouteChange2                                   = modiphlpapi.NewProc(\"NotifyRouteChange2\")\n\tprocNotifyUnicastIpAddressChange                         = modiphlpapi.NewProc(\"NotifyUnicastIpAddressChange\")\n\tprocAddDllDirectory                                      = modkernel32.NewProc(\"AddDllDirectory\")\n\tprocAssignProcessToJobObject                             = modkernel32.NewProc(\"AssignProcessToJobObject\")\n\tprocCancelIo                                             = modkernel32.NewProc(\"CancelIo\")\n\tprocCancelIoEx                                           = modkernel32.NewProc(\"CancelIoEx\")\n\tprocClearCommBreak                                       = modkernel32.NewProc(\"ClearCommBreak\")\n\tprocClearCommError                                       = modkernel32.NewProc(\"ClearCommError\")\n\tprocCloseHandle                                          = modkernel32.NewProc(\"CloseHandle\")\n\tprocClosePseudoConsole                                   = modkernel32.NewProc(\"ClosePseudoConsole\")\n\tprocConnectNamedPipe                                     = modkernel32.NewProc(\"ConnectNamedPipe\")\n\tprocCreateDirectoryW                                     = modkernel32.NewProc(\"CreateDirectoryW\")\n\tprocCreateEventExW                                       = modkernel32.NewProc(\"CreateEventExW\")\n\tprocCreateEventW                                         = modkernel32.NewProc(\"CreateEventW\")\n\tprocCreateFileMappingW                                   = modkernel32.NewProc(\"CreateFileMappingW\")\n\tprocCreateFileW                                          = modkernel32.NewProc(\"CreateFileW\")\n\tprocCreateHardLinkW                                      = modkernel32.NewProc(\"CreateHardLinkW\")\n\tprocCreateIoCompletionPort                               = modkernel32.NewProc(\"CreateIoCompletionPort\")\n\tprocCreateJobObjectW                                     = modkernel32.NewProc(\"CreateJobObjectW\")\n\tprocCreateMutexExW                                       = modkernel32.NewProc(\"CreateMutexExW\")\n\tprocCreateMutexW                                         = modkernel32.NewProc(\"CreateMutexW\")\n\tprocCreateNamedPipeW                                     = modkernel32.NewProc(\"CreateNamedPipeW\")\n\tprocCreatePipe                                           = modkernel32.NewProc(\"CreatePipe\")\n\tprocCreateProcessW                                       = modkernel32.NewProc(\"CreateProcessW\")\n\tprocCreatePseudoConsole                                  = modkernel32.NewProc(\"CreatePseudoConsole\")\n\tprocCreateSymbolicLinkW                                  = modkernel32.NewProc(\"CreateSymbolicLinkW\")\n\tprocCreateToolhelp32Snapshot                             = modkernel32.NewProc(\"CreateToolhelp32Snapshot\")\n\tprocDefineDosDeviceW                                     = modkernel32.NewProc(\"DefineDosDeviceW\")\n\tprocDeleteFileW                                          = modkernel32.NewProc(\"DeleteFileW\")\n\tprocDeleteProcThreadAttributeList                        = modkernel32.NewProc(\"DeleteProcThreadAttributeList\")\n\tprocDeleteVolumeMountPointW                              = modkernel32.NewProc(\"DeleteVolumeMountPointW\")\n\tprocDeviceIoControl                                      = modkernel32.NewProc(\"DeviceIoControl\")\n\tprocDisconnectNamedPipe                                  = modkernel32.NewProc(\"DisconnectNamedPipe\")\n\tprocDuplicateHandle                                      = modkernel32.NewProc(\"DuplicateHandle\")\n\tprocEscapeCommFunction                                   = modkernel32.NewProc(\"EscapeCommFunction\")\n\tprocExitProcess                                          = modkernel32.NewProc(\"ExitProcess\")\n\tprocExpandEnvironmentStringsW                            = modkernel32.NewProc(\"ExpandEnvironmentStringsW\")\n\tprocFindClose                                            = modkernel32.NewProc(\"FindClose\")\n\tprocFindCloseChangeNotification                          = modkernel32.NewProc(\"FindCloseChangeNotification\")\n\tprocFindFirstChangeNotificationW                         = modkernel32.NewProc(\"FindFirstChangeNotificationW\")\n\tprocFindFirstFileW                                       = modkernel32.NewProc(\"FindFirstFileW\")\n\tprocFindFirstVolumeMountPointW                           = modkernel32.NewProc(\"FindFirstVolumeMountPointW\")\n\tprocFindFirstVolumeW                                     = modkernel32.NewProc(\"FindFirstVolumeW\")\n\tprocFindNextChangeNotification                           = modkernel32.NewProc(\"FindNextChangeNotification\")\n\tprocFindNextFileW                                        = modkernel32.NewProc(\"FindNextFileW\")\n\tprocFindNextVolumeMountPointW                            = modkernel32.NewProc(\"FindNextVolumeMountPointW\")\n\tprocFindNextVolumeW                                      = modkernel32.NewProc(\"FindNextVolumeW\")\n\tprocFindResourceW                                        = modkernel32.NewProc(\"FindResourceW\")\n\tprocFindVolumeClose                                      = modkernel32.NewProc(\"FindVolumeClose\")\n\tprocFindVolumeMountPointClose                            = modkernel32.NewProc(\"FindVolumeMountPointClose\")\n\tprocFlushConsoleInputBuffer                              = modkernel32.NewProc(\"FlushConsoleInputBuffer\")\n\tprocFlushFileBuffers                                     = modkernel32.NewProc(\"FlushFileBuffers\")\n\tprocFlushViewOfFile                                      = modkernel32.NewProc(\"FlushViewOfFile\")\n\tprocFormatMessageW                                       = modkernel32.NewProc(\"FormatMessageW\")\n\tprocFreeEnvironmentStringsW                              = modkernel32.NewProc(\"FreeEnvironmentStringsW\")\n\tprocFreeLibrary                                          = modkernel32.NewProc(\"FreeLibrary\")\n\tprocGenerateConsoleCtrlEvent                             = modkernel32.NewProc(\"GenerateConsoleCtrlEvent\")\n\tprocGetACP                                               = modkernel32.NewProc(\"GetACP\")\n\tprocGetActiveProcessorCount                              = modkernel32.NewProc(\"GetActiveProcessorCount\")\n\tprocGetCommModemStatus                                   = modkernel32.NewProc(\"GetCommModemStatus\")\n\tprocGetCommState                                         = modkernel32.NewProc(\"GetCommState\")\n\tprocGetCommTimeouts                                      = modkernel32.NewProc(\"GetCommTimeouts\")\n\tprocGetCommandLineW                                      = modkernel32.NewProc(\"GetCommandLineW\")\n\tprocGetComputerNameExW                                   = modkernel32.NewProc(\"GetComputerNameExW\")\n\tprocGetComputerNameW                                     = modkernel32.NewProc(\"GetComputerNameW\")\n\tprocGetConsoleCP                                         = modkernel32.NewProc(\"GetConsoleCP\")\n\tprocGetConsoleMode                                       = modkernel32.NewProc(\"GetConsoleMode\")\n\tprocGetConsoleOutputCP                                   = modkernel32.NewProc(\"GetConsoleOutputCP\")\n\tprocGetConsoleScreenBufferInfo                           = modkernel32.NewProc(\"GetConsoleScreenBufferInfo\")\n\tprocGetCurrentDirectoryW                                 = modkernel32.NewProc(\"GetCurrentDirectoryW\")\n\tprocGetCurrentProcessId                                  = modkernel32.NewProc(\"GetCurrentProcessId\")\n\tprocGetCurrentThreadId                                   = modkernel32.NewProc(\"GetCurrentThreadId\")\n\tprocGetDiskFreeSpaceExW                                  = modkernel32.NewProc(\"GetDiskFreeSpaceExW\")\n\tprocGetDriveTypeW                                        = modkernel32.NewProc(\"GetDriveTypeW\")\n\tprocGetEnvironmentStringsW                               = modkernel32.NewProc(\"GetEnvironmentStringsW\")\n\tprocGetEnvironmentVariableW                              = modkernel32.NewProc(\"GetEnvironmentVariableW\")\n\tprocGetExitCodeProcess                                   = modkernel32.NewProc(\"GetExitCodeProcess\")\n\tprocGetFileAttributesExW                                 = modkernel32.NewProc(\"GetFileAttributesExW\")\n\tprocGetFileAttributesW                                   = modkernel32.NewProc(\"GetFileAttributesW\")\n\tprocGetFileInformationByHandle                           = modkernel32.NewProc(\"GetFileInformationByHandle\")\n\tprocGetFileInformationByHandleEx                         = modkernel32.NewProc(\"GetFileInformationByHandleEx\")\n\tprocGetFileTime                                          = modkernel32.NewProc(\"GetFileTime\")\n\tprocGetFileType                                          = modkernel32.NewProc(\"GetFileType\")\n\tprocGetFinalPathNameByHandleW                            = modkernel32.NewProc(\"GetFinalPathNameByHandleW\")\n\tprocGetFullPathNameW                                     = modkernel32.NewProc(\"GetFullPathNameW\")\n\tprocGetLargePageMinimum                                  = modkernel32.NewProc(\"GetLargePageMinimum\")\n\tprocGetLastError                                         = modkernel32.NewProc(\"GetLastError\")\n\tprocGetLogicalDriveStringsW                              = modkernel32.NewProc(\"GetLogicalDriveStringsW\")\n\tprocGetLogicalDrives                                     = modkernel32.NewProc(\"GetLogicalDrives\")\n\tprocGetLongPathNameW                                     = modkernel32.NewProc(\"GetLongPathNameW\")\n\tprocGetMaximumProcessorCount                             = modkernel32.NewProc(\"GetMaximumProcessorCount\")\n\tprocGetModuleFileNameW                                   = modkernel32.NewProc(\"GetModuleFileNameW\")\n\tprocGetModuleHandleExW                                   = modkernel32.NewProc(\"GetModuleHandleExW\")\n\tprocGetNamedPipeClientProcessId                          = modkernel32.NewProc(\"GetNamedPipeClientProcessId\")\n\tprocGetNamedPipeHandleStateW                             = modkernel32.NewProc(\"GetNamedPipeHandleStateW\")\n\tprocGetNamedPipeInfo                                     = modkernel32.NewProc(\"GetNamedPipeInfo\")\n\tprocGetNamedPipeServerProcessId                          = modkernel32.NewProc(\"GetNamedPipeServerProcessId\")\n\tprocGetNumberOfConsoleInputEvents                        = modkernel32.NewProc(\"GetNumberOfConsoleInputEvents\")\n\tprocGetOverlappedResult                                  = modkernel32.NewProc(\"GetOverlappedResult\")\n\tprocGetPriorityClass                                     = modkernel32.NewProc(\"GetPriorityClass\")\n\tprocGetProcAddress                                       = modkernel32.NewProc(\"GetProcAddress\")\n\tprocGetProcessId                                         = modkernel32.NewProc(\"GetProcessId\")\n\tprocGetProcessPreferredUILanguages                       = modkernel32.NewProc(\"GetProcessPreferredUILanguages\")\n\tprocGetProcessShutdownParameters                         = modkernel32.NewProc(\"GetProcessShutdownParameters\")\n\tprocGetProcessTimes                                      = modkernel32.NewProc(\"GetProcessTimes\")\n\tprocGetProcessWorkingSetSizeEx                           = modkernel32.NewProc(\"GetProcessWorkingSetSizeEx\")\n\tprocGetQueuedCompletionStatus                            = modkernel32.NewProc(\"GetQueuedCompletionStatus\")\n\tprocGetShortPathNameW                                    = modkernel32.NewProc(\"GetShortPathNameW\")\n\tprocGetStartupInfoW                                      = modkernel32.NewProc(\"GetStartupInfoW\")\n\tprocGetStdHandle                                         = modkernel32.NewProc(\"GetStdHandle\")\n\tprocGetSystemDirectoryW                                  = modkernel32.NewProc(\"GetSystemDirectoryW\")\n\tprocGetSystemPreferredUILanguages                        = modkernel32.NewProc(\"GetSystemPreferredUILanguages\")\n\tprocGetSystemTimeAsFileTime                              = modkernel32.NewProc(\"GetSystemTimeAsFileTime\")\n\tprocGetSystemTimePreciseAsFileTime                       = modkernel32.NewProc(\"GetSystemTimePreciseAsFileTime\")\n\tprocGetSystemWindowsDirectoryW                           = modkernel32.NewProc(\"GetSystemWindowsDirectoryW\")\n\tprocGetTempPathW                                         = modkernel32.NewProc(\"GetTempPathW\")\n\tprocGetThreadPreferredUILanguages                        = modkernel32.NewProc(\"GetThreadPreferredUILanguages\")\n\tprocGetTickCount64                                       = modkernel32.NewProc(\"GetTickCount64\")\n\tprocGetTimeZoneInformation                               = modkernel32.NewProc(\"GetTimeZoneInformation\")\n\tprocGetUserPreferredUILanguages                          = modkernel32.NewProc(\"GetUserPreferredUILanguages\")\n\tprocGetVersion                                           = modkernel32.NewProc(\"GetVersion\")\n\tprocGetVolumeInformationByHandleW                        = modkernel32.NewProc(\"GetVolumeInformationByHandleW\")\n\tprocGetVolumeInformationW                                = modkernel32.NewProc(\"GetVolumeInformationW\")\n\tprocGetVolumeNameForVolumeMountPointW                    = modkernel32.NewProc(\"GetVolumeNameForVolumeMountPointW\")\n\tprocGetVolumePathNameW                                   = modkernel32.NewProc(\"GetVolumePathNameW\")\n\tprocGetVolumePathNamesForVolumeNameW                     = modkernel32.NewProc(\"GetVolumePathNamesForVolumeNameW\")\n\tprocGetWindowsDirectoryW                                 = modkernel32.NewProc(\"GetWindowsDirectoryW\")\n\tprocInitializeProcThreadAttributeList                    = modkernel32.NewProc(\"InitializeProcThreadAttributeList\")\n\tprocIsProcessorFeaturePresent                            = modkernel32.NewProc(\"IsProcessorFeaturePresent\")\n\tprocIsWow64Process                                       = modkernel32.NewProc(\"IsWow64Process\")\n\tprocIsWow64Process2                                      = modkernel32.NewProc(\"IsWow64Process2\")\n\tprocLoadLibraryExW                                       = modkernel32.NewProc(\"LoadLibraryExW\")\n\tprocLoadLibraryW                                         = modkernel32.NewProc(\"LoadLibraryW\")\n\tprocLoadResource                                         = modkernel32.NewProc(\"LoadResource\")\n\tprocLocalAlloc                                           = modkernel32.NewProc(\"LocalAlloc\")\n\tprocLocalFree                                            = modkernel32.NewProc(\"LocalFree\")\n\tprocLockFileEx                                           = modkernel32.NewProc(\"LockFileEx\")\n\tprocLockResource                                         = modkernel32.NewProc(\"LockResource\")\n\tprocMapViewOfFile                                        = modkernel32.NewProc(\"MapViewOfFile\")\n\tprocModule32FirstW                                       = modkernel32.NewProc(\"Module32FirstW\")\n\tprocModule32NextW                                        = modkernel32.NewProc(\"Module32NextW\")\n\tprocMoveFileExW                                          = modkernel32.NewProc(\"MoveFileExW\")\n\tprocMoveFileW                                            = modkernel32.NewProc(\"MoveFileW\")\n\tprocMultiByteToWideChar                                  = modkernel32.NewProc(\"MultiByteToWideChar\")\n\tprocOpenEventW                                           = modkernel32.NewProc(\"OpenEventW\")\n\tprocOpenMutexW                                           = modkernel32.NewProc(\"OpenMutexW\")\n\tprocOpenProcess                                          = modkernel32.NewProc(\"OpenProcess\")\n\tprocOpenThread                                           = modkernel32.NewProc(\"OpenThread\")\n\tprocPostQueuedCompletionStatus                           = modkernel32.NewProc(\"PostQueuedCompletionStatus\")\n\tprocProcess32FirstW                                      = modkernel32.NewProc(\"Process32FirstW\")\n\tprocProcess32NextW                                       = modkernel32.NewProc(\"Process32NextW\")\n\tprocProcessIdToSessionId                                 = modkernel32.NewProc(\"ProcessIdToSessionId\")\n\tprocPulseEvent                                           = modkernel32.NewProc(\"PulseEvent\")\n\tprocPurgeComm                                            = modkernel32.NewProc(\"PurgeComm\")\n\tprocQueryDosDeviceW                                      = modkernel32.NewProc(\"QueryDosDeviceW\")\n\tprocQueryFullProcessImageNameW                           = modkernel32.NewProc(\"QueryFullProcessImageNameW\")\n\tprocQueryInformationJobObject                            = modkernel32.NewProc(\"QueryInformationJobObject\")\n\tprocReadConsoleW                                         = modkernel32.NewProc(\"ReadConsoleW\")\n\tprocReadDirectoryChangesW                                = modkernel32.NewProc(\"ReadDirectoryChangesW\")\n\tprocReadFile                                             = modkernel32.NewProc(\"ReadFile\")\n\tprocReadProcessMemory                                    = modkernel32.NewProc(\"ReadProcessMemory\")\n\tprocReleaseMutex                                         = modkernel32.NewProc(\"ReleaseMutex\")\n\tprocRemoveDirectoryW                                     = modkernel32.NewProc(\"RemoveDirectoryW\")\n\tprocRemoveDllDirectory                                   = modkernel32.NewProc(\"RemoveDllDirectory\")\n\tprocResetEvent                                           = modkernel32.NewProc(\"ResetEvent\")\n\tprocResizePseudoConsole                                  = modkernel32.NewProc(\"ResizePseudoConsole\")\n\tprocResumeThread                                         = modkernel32.NewProc(\"ResumeThread\")\n\tprocSetCommBreak                                         = modkernel32.NewProc(\"SetCommBreak\")\n\tprocSetCommMask                                          = modkernel32.NewProc(\"SetCommMask\")\n\tprocSetCommState                                         = modkernel32.NewProc(\"SetCommState\")\n\tprocSetCommTimeouts                                      = modkernel32.NewProc(\"SetCommTimeouts\")\n\tprocSetConsoleCP                                         = modkernel32.NewProc(\"SetConsoleCP\")\n\tprocSetConsoleCursorPosition                             = modkernel32.NewProc(\"SetConsoleCursorPosition\")\n\tprocSetConsoleMode                                       = modkernel32.NewProc(\"SetConsoleMode\")\n\tprocSetConsoleOutputCP                                   = modkernel32.NewProc(\"SetConsoleOutputCP\")\n\tprocSetCurrentDirectoryW                                 = modkernel32.NewProc(\"SetCurrentDirectoryW\")\n\tprocSetDefaultDllDirectories                             = modkernel32.NewProc(\"SetDefaultDllDirectories\")\n\tprocSetDllDirectoryW                                     = modkernel32.NewProc(\"SetDllDirectoryW\")\n\tprocSetEndOfFile                                         = modkernel32.NewProc(\"SetEndOfFile\")\n\tprocSetEnvironmentVariableW                              = modkernel32.NewProc(\"SetEnvironmentVariableW\")\n\tprocSetErrorMode                                         = modkernel32.NewProc(\"SetErrorMode\")\n\tprocSetEvent                                             = modkernel32.NewProc(\"SetEvent\")\n\tprocSetFileAttributesW                                   = modkernel32.NewProc(\"SetFileAttributesW\")\n\tprocSetFileCompletionNotificationModes                   = modkernel32.NewProc(\"SetFileCompletionNotificationModes\")\n\tprocSetFileInformationByHandle                           = modkernel32.NewProc(\"SetFileInformationByHandle\")\n\tprocSetFilePointer                                       = modkernel32.NewProc(\"SetFilePointer\")\n\tprocSetFileTime                                          = modkernel32.NewProc(\"SetFileTime\")\n\tprocSetFileValidData                                     = modkernel32.NewProc(\"SetFileValidData\")\n\tprocSetHandleInformation                                 = modkernel32.NewProc(\"SetHandleInformation\")\n\tprocSetInformationJobObject                              = modkernel32.NewProc(\"SetInformationJobObject\")\n\tprocSetNamedPipeHandleState                              = modkernel32.NewProc(\"SetNamedPipeHandleState\")\n\tprocSetPriorityClass                                     = modkernel32.NewProc(\"SetPriorityClass\")\n\tprocSetProcessPriorityBoost                              = modkernel32.NewProc(\"SetProcessPriorityBoost\")\n\tprocSetProcessShutdownParameters                         = modkernel32.NewProc(\"SetProcessShutdownParameters\")\n\tprocSetProcessWorkingSetSizeEx                           = modkernel32.NewProc(\"SetProcessWorkingSetSizeEx\")\n\tprocSetStdHandle                                         = modkernel32.NewProc(\"SetStdHandle\")\n\tprocSetVolumeLabelW                                      = modkernel32.NewProc(\"SetVolumeLabelW\")\n\tprocSetVolumeMountPointW                                 = modkernel32.NewProc(\"SetVolumeMountPointW\")\n\tprocSetupComm                                            = modkernel32.NewProc(\"SetupComm\")\n\tprocSizeofResource                                       = modkernel32.NewProc(\"SizeofResource\")\n\tprocSleepEx                                              = modkernel32.NewProc(\"SleepEx\")\n\tprocTerminateJobObject                                   = modkernel32.NewProc(\"TerminateJobObject\")\n\tprocTerminateProcess                                     = modkernel32.NewProc(\"TerminateProcess\")\n\tprocThread32First                                        = modkernel32.NewProc(\"Thread32First\")\n\tprocThread32Next                                         = modkernel32.NewProc(\"Thread32Next\")\n\tprocUnlockFileEx                                         = modkernel32.NewProc(\"UnlockFileEx\")\n\tprocUnmapViewOfFile                                      = modkernel32.NewProc(\"UnmapViewOfFile\")\n\tprocUpdateProcThreadAttribute                            = modkernel32.NewProc(\"UpdateProcThreadAttribute\")\n\tprocVirtualAlloc                                         = modkernel32.NewProc(\"VirtualAlloc\")\n\tprocVirtualFree                                          = modkernel32.NewProc(\"VirtualFree\")\n\tprocVirtualLock                                          = modkernel32.NewProc(\"VirtualLock\")\n\tprocVirtualProtect                                       = modkernel32.NewProc(\"VirtualProtect\")\n\tprocVirtualProtectEx                                     = modkernel32.NewProc(\"VirtualProtectEx\")\n\tprocVirtualQuery                                         = modkernel32.NewProc(\"VirtualQuery\")\n\tprocVirtualQueryEx                                       = modkernel32.NewProc(\"VirtualQueryEx\")\n\tprocVirtualUnlock                                        = modkernel32.NewProc(\"VirtualUnlock\")\n\tprocWTSGetActiveConsoleSessionId                         = modkernel32.NewProc(\"WTSGetActiveConsoleSessionId\")\n\tprocWaitCommEvent                                        = modkernel32.NewProc(\"WaitCommEvent\")\n\tprocWaitForMultipleObjects                               = modkernel32.NewProc(\"WaitForMultipleObjects\")\n\tprocWaitForSingleObject                                  = modkernel32.NewProc(\"WaitForSingleObject\")\n\tprocWriteConsoleW                                        = modkernel32.NewProc(\"WriteConsoleW\")\n\tprocWriteFile                                            = modkernel32.NewProc(\"WriteFile\")\n\tprocWriteProcessMemory                                   = modkernel32.NewProc(\"WriteProcessMemory\")\n\tprocAcceptEx                                             = modmswsock.NewProc(\"AcceptEx\")\n\tprocGetAcceptExSockaddrs                                 = modmswsock.NewProc(\"GetAcceptExSockaddrs\")\n\tprocTransmitFile                                         = modmswsock.NewProc(\"TransmitFile\")\n\tprocNetApiBufferFree                                     = modnetapi32.NewProc(\"NetApiBufferFree\")\n\tprocNetGetJoinInformation                                = modnetapi32.NewProc(\"NetGetJoinInformation\")\n\tprocNetUserEnum                                          = modnetapi32.NewProc(\"NetUserEnum\")\n\tprocNetUserGetInfo                                       = modnetapi32.NewProc(\"NetUserGetInfo\")\n\tprocNtCreateFile                                         = modntdll.NewProc(\"NtCreateFile\")\n\tprocNtCreateNamedPipeFile                                = modntdll.NewProc(\"NtCreateNamedPipeFile\")\n\tprocNtQueryInformationProcess                            = modntdll.NewProc(\"NtQueryInformationProcess\")\n\tprocNtQuerySystemInformation                             = modntdll.NewProc(\"NtQuerySystemInformation\")\n\tprocNtSetInformationFile                                 = modntdll.NewProc(\"NtSetInformationFile\")\n\tprocNtSetInformationProcess                              = modntdll.NewProc(\"NtSetInformationProcess\")\n\tprocNtSetSystemInformation                               = modntdll.NewProc(\"NtSetSystemInformation\")\n\tprocRtlAddFunctionTable                                  = modntdll.NewProc(\"RtlAddFunctionTable\")\n\tprocRtlDefaultNpAcl                                      = modntdll.NewProc(\"RtlDefaultNpAcl\")\n\tprocRtlDeleteFunctionTable                               = modntdll.NewProc(\"RtlDeleteFunctionTable\")\n\tprocRtlDosPathNameToNtPathName_U_WithStatus              = modntdll.NewProc(\"RtlDosPathNameToNtPathName_U_WithStatus\")\n\tprocRtlDosPathNameToRelativeNtPathName_U_WithStatus      = modntdll.NewProc(\"RtlDosPathNameToRelativeNtPathName_U_WithStatus\")\n\tprocRtlGetCurrentPeb                                     = modntdll.NewProc(\"RtlGetCurrentPeb\")\n\tprocRtlGetNtVersionNumbers                               = modntdll.NewProc(\"RtlGetNtVersionNumbers\")\n\tprocRtlGetVersion                                        = modntdll.NewProc(\"RtlGetVersion\")\n\tprocRtlInitString                                        = modntdll.NewProc(\"RtlInitString\")\n\tprocRtlInitUnicodeString                                 = modntdll.NewProc(\"RtlInitUnicodeString\")\n\tprocRtlNtStatusToDosErrorNoTeb                           = modntdll.NewProc(\"RtlNtStatusToDosErrorNoTeb\")\n\tprocCLSIDFromString                                      = modole32.NewProc(\"CLSIDFromString\")\n\tprocCoCreateGuid                                         = modole32.NewProc(\"CoCreateGuid\")\n\tprocCoGetObject                                          = modole32.NewProc(\"CoGetObject\")\n\tprocCoInitializeEx                                       = modole32.NewProc(\"CoInitializeEx\")\n\tprocCoTaskMemFree                                        = modole32.NewProc(\"CoTaskMemFree\")\n\tprocCoUninitialize                                       = modole32.NewProc(\"CoUninitialize\")\n\tprocStringFromGUID2                                      = modole32.NewProc(\"StringFromGUID2\")\n\tprocEnumProcessModules                                   = modpsapi.NewProc(\"EnumProcessModules\")\n\tprocEnumProcessModulesEx                                 = modpsapi.NewProc(\"EnumProcessModulesEx\")\n\tprocEnumProcesses                                        = modpsapi.NewProc(\"EnumProcesses\")\n\tprocGetModuleBaseNameW                                   = modpsapi.NewProc(\"GetModuleBaseNameW\")\n\tprocGetModuleFileNameExW                                 = modpsapi.NewProc(\"GetModuleFileNameExW\")\n\tprocGetModuleInformation                                 = modpsapi.NewProc(\"GetModuleInformation\")\n\tprocQueryWorkingSetEx                                    = modpsapi.NewProc(\"QueryWorkingSetEx\")\n\tprocSubscribeServiceChangeNotifications                  = modsechost.NewProc(\"SubscribeServiceChangeNotifications\")\n\tprocUnsubscribeServiceChangeNotifications                = modsechost.NewProc(\"UnsubscribeServiceChangeNotifications\")\n\tprocGetUserNameExW                                       = modsecur32.NewProc(\"GetUserNameExW\")\n\tprocTranslateNameW                                       = modsecur32.NewProc(\"TranslateNameW\")\n\tprocSetupDiBuildDriverInfoList                           = modsetupapi.NewProc(\"SetupDiBuildDriverInfoList\")\n\tprocSetupDiCallClassInstaller                            = modsetupapi.NewProc(\"SetupDiCallClassInstaller\")\n\tprocSetupDiCancelDriverInfoSearch                        = modsetupapi.NewProc(\"SetupDiCancelDriverInfoSearch\")\n\tprocSetupDiClassGuidsFromNameExW                         = modsetupapi.NewProc(\"SetupDiClassGuidsFromNameExW\")\n\tprocSetupDiClassNameFromGuidExW                          = modsetupapi.NewProc(\"SetupDiClassNameFromGuidExW\")\n\tprocSetupDiCreateDeviceInfoListExW                       = modsetupapi.NewProc(\"SetupDiCreateDeviceInfoListExW\")\n\tprocSetupDiCreateDeviceInfoW                             = modsetupapi.NewProc(\"SetupDiCreateDeviceInfoW\")\n\tprocSetupDiDestroyDeviceInfoList                         = modsetupapi.NewProc(\"SetupDiDestroyDeviceInfoList\")\n\tprocSetupDiDestroyDriverInfoList                         = modsetupapi.NewProc(\"SetupDiDestroyDriverInfoList\")\n\tprocSetupDiEnumDeviceInfo                                = modsetupapi.NewProc(\"SetupDiEnumDeviceInfo\")\n\tprocSetupDiEnumDriverInfoW                               = modsetupapi.NewProc(\"SetupDiEnumDriverInfoW\")\n\tprocSetupDiGetClassDevsExW                               = modsetupapi.NewProc(\"SetupDiGetClassDevsExW\")\n\tprocSetupDiGetClassInstallParamsW                        = modsetupapi.NewProc(\"SetupDiGetClassInstallParamsW\")\n\tprocSetupDiGetDeviceInfoListDetailW                      = modsetupapi.NewProc(\"SetupDiGetDeviceInfoListDetailW\")\n\tprocSetupDiGetDeviceInstallParamsW                       = modsetupapi.NewProc(\"SetupDiGetDeviceInstallParamsW\")\n\tprocSetupDiGetDeviceInstanceIdW                          = modsetupapi.NewProc(\"SetupDiGetDeviceInstanceIdW\")\n\tprocSetupDiGetDevicePropertyW                            = modsetupapi.NewProc(\"SetupDiGetDevicePropertyW\")\n\tprocSetupDiGetDeviceRegistryPropertyW                    = modsetupapi.NewProc(\"SetupDiGetDeviceRegistryPropertyW\")\n\tprocSetupDiGetDriverInfoDetailW                          = modsetupapi.NewProc(\"SetupDiGetDriverInfoDetailW\")\n\tprocSetupDiGetSelectedDevice                             = modsetupapi.NewProc(\"SetupDiGetSelectedDevice\")\n\tprocSetupDiGetSelectedDriverW                            = modsetupapi.NewProc(\"SetupDiGetSelectedDriverW\")\n\tprocSetupDiOpenDevRegKey                                 = modsetupapi.NewProc(\"SetupDiOpenDevRegKey\")\n\tprocSetupDiSetClassInstallParamsW                        = modsetupapi.NewProc(\"SetupDiSetClassInstallParamsW\")\n\tprocSetupDiSetDeviceInstallParamsW                       = modsetupapi.NewProc(\"SetupDiSetDeviceInstallParamsW\")\n\tprocSetupDiSetDeviceRegistryPropertyW                    = modsetupapi.NewProc(\"SetupDiSetDeviceRegistryPropertyW\")\n\tprocSetupDiSetSelectedDevice                             = modsetupapi.NewProc(\"SetupDiSetSelectedDevice\")\n\tprocSetupDiSetSelectedDriverW                            = modsetupapi.NewProc(\"SetupDiSetSelectedDriverW\")\n\tprocSetupUninstallOEMInfW                                = modsetupapi.NewProc(\"SetupUninstallOEMInfW\")\n\tprocCommandLineToArgvW                                   = modshell32.NewProc(\"CommandLineToArgvW\")\n\tprocSHGetKnownFolderPath                                 = modshell32.NewProc(\"SHGetKnownFolderPath\")\n\tprocShellExecuteW                                        = modshell32.NewProc(\"ShellExecuteW\")\n\tprocEnumChildWindows                                     = moduser32.NewProc(\"EnumChildWindows\")\n\tprocEnumWindows                                          = moduser32.NewProc(\"EnumWindows\")\n\tprocExitWindowsEx                                        = moduser32.NewProc(\"ExitWindowsEx\")\n\tprocGetClassNameW                                        = moduser32.NewProc(\"GetClassNameW\")\n\tprocGetDesktopWindow                                     = moduser32.NewProc(\"GetDesktopWindow\")\n\tprocGetForegroundWindow                                  = moduser32.NewProc(\"GetForegroundWindow\")\n\tprocGetGUIThreadInfo                                     = moduser32.NewProc(\"GetGUIThreadInfo\")\n\tprocGetKeyboardLayout                                    = moduser32.NewProc(\"GetKeyboardLayout\")\n\tprocGetShellWindow                                       = moduser32.NewProc(\"GetShellWindow\")\n\tprocGetWindowThreadProcessId                             = moduser32.NewProc(\"GetWindowThreadProcessId\")\n\tprocIsWindow                                             = moduser32.NewProc(\"IsWindow\")\n\tprocIsWindowUnicode                                      = moduser32.NewProc(\"IsWindowUnicode\")\n\tprocIsWindowVisible                                      = moduser32.NewProc(\"IsWindowVisible\")\n\tprocLoadKeyboardLayoutW                                  = moduser32.NewProc(\"LoadKeyboardLayoutW\")\n\tprocMessageBoxW                                          = moduser32.NewProc(\"MessageBoxW\")\n\tprocToUnicodeEx                                          = moduser32.NewProc(\"ToUnicodeEx\")\n\tprocUnloadKeyboardLayout                                 = moduser32.NewProc(\"UnloadKeyboardLayout\")\n\tprocCreateEnvironmentBlock                               = moduserenv.NewProc(\"CreateEnvironmentBlock\")\n\tprocDestroyEnvironmentBlock                              = moduserenv.NewProc(\"DestroyEnvironmentBlock\")\n\tprocGetUserProfileDirectoryW                             = moduserenv.NewProc(\"GetUserProfileDirectoryW\")\n\tprocGetFileVersionInfoSizeW                              = modversion.NewProc(\"GetFileVersionInfoSizeW\")\n\tprocGetFileVersionInfoW                                  = modversion.NewProc(\"GetFileVersionInfoW\")\n\tprocVerQueryValueW                                       = modversion.NewProc(\"VerQueryValueW\")\n\tproctimeBeginPeriod                                      = modwinmm.NewProc(\"timeBeginPeriod\")\n\tproctimeEndPeriod                                        = modwinmm.NewProc(\"timeEndPeriod\")\n\tprocWinVerifyTrustEx                                     = modwintrust.NewProc(\"WinVerifyTrustEx\")\n\tprocFreeAddrInfoW                                        = modws2_32.NewProc(\"FreeAddrInfoW\")\n\tprocGetAddrInfoW                                         = modws2_32.NewProc(\"GetAddrInfoW\")\n\tprocWSACleanup                                           = modws2_32.NewProc(\"WSACleanup\")\n\tprocWSADuplicateSocketW                                  = modws2_32.NewProc(\"WSADuplicateSocketW\")\n\tprocWSAEnumProtocolsW                                    = modws2_32.NewProc(\"WSAEnumProtocolsW\")\n\tprocWSAGetOverlappedResult                               = modws2_32.NewProc(\"WSAGetOverlappedResult\")\n\tprocWSAIoctl                                             = modws2_32.NewProc(\"WSAIoctl\")\n\tprocWSALookupServiceBeginW                               = modws2_32.NewProc(\"WSALookupServiceBeginW\")\n\tprocWSALookupServiceEnd                                  = modws2_32.NewProc(\"WSALookupServiceEnd\")\n\tprocWSALookupServiceNextW                                = modws2_32.NewProc(\"WSALookupServiceNextW\")\n\tprocWSARecv                                              = modws2_32.NewProc(\"WSARecv\")\n\tprocWSARecvFrom                                          = modws2_32.NewProc(\"WSARecvFrom\")\n\tprocWSASend                                              = modws2_32.NewProc(\"WSASend\")\n\tprocWSASendTo                                            = modws2_32.NewProc(\"WSASendTo\")\n\tprocWSASocketW                                           = modws2_32.NewProc(\"WSASocketW\")\n\tprocWSAStartup                                           = modws2_32.NewProc(\"WSAStartup\")\n\tprocbind                                                 = modws2_32.NewProc(\"bind\")\n\tprocclosesocket                                          = modws2_32.NewProc(\"closesocket\")\n\tprocconnect                                              = modws2_32.NewProc(\"connect\")\n\tprocgethostbyname                                        = modws2_32.NewProc(\"gethostbyname\")\n\tprocgetpeername                                          = modws2_32.NewProc(\"getpeername\")\n\tprocgetprotobyname                                       = modws2_32.NewProc(\"getprotobyname\")\n\tprocgetservbyname                                        = modws2_32.NewProc(\"getservbyname\")\n\tprocgetsockname                                          = modws2_32.NewProc(\"getsockname\")\n\tprocgetsockopt                                           = modws2_32.NewProc(\"getsockopt\")\n\tproclisten                                               = modws2_32.NewProc(\"listen\")\n\tprocntohs                                                = modws2_32.NewProc(\"ntohs\")\n\tprocrecvfrom                                             = modws2_32.NewProc(\"recvfrom\")\n\tprocsendto                                               = modws2_32.NewProc(\"sendto\")\n\tprocsetsockopt                                           = modws2_32.NewProc(\"setsockopt\")\n\tprocshutdown                                             = modws2_32.NewProc(\"shutdown\")\n\tprocsocket                                               = modws2_32.NewProc(\"socket\")\n\tprocWTSEnumerateSessionsW                                = modwtsapi32.NewProc(\"WTSEnumerateSessionsW\")\n\tprocWTSFreeMemory                                        = modwtsapi32.NewProc(\"WTSFreeMemory\")\n\tprocWTSQueryUserToken                                    = modwtsapi32.NewProc(\"WTSQueryUserToken\")\n)\n\nfunc cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) {\n\tr0, _, _ := syscall.SyscallN(procCM_Get_DevNode_Status.Addr(), uintptr(unsafe.Pointer(status)), uintptr(unsafe.Pointer(problemNumber)), uintptr(devInst), uintptr(flags))\n\tret = CONFIGRET(r0)\n\treturn\n}\n\nfunc cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) {\n\tr0, _, _ := syscall.SyscallN(procCM_Get_Device_Interface_ListW.Addr(), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(unsafe.Pointer(buffer)), uintptr(bufferLen), uintptr(flags))\n\tret = CONFIGRET(r0)\n\treturn\n}\n\nfunc cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) {\n\tr0, _, _ := syscall.SyscallN(procCM_Get_Device_Interface_List_SizeW.Addr(), uintptr(unsafe.Pointer(len)), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(flags))\n\tret = CONFIGRET(r0)\n\treturn\n}\n\nfunc cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) {\n\tr0, _, _ := syscall.SyscallN(procCM_MapCrToWin32Err.Addr(), uintptr(configRet), uintptr(defaultWin32Error))\n\tret = Errno(r0)\n\treturn\n}\n\nfunc AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) {\n\tvar _p0 uint32\n\tif resetToDefault {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procAdjustTokenGroups.Addr(), uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) {\n\tvar _p0 uint32\n\tif disableAllPrivileges {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procAdjustTokenPrivileges.Addr(), uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procAllocateAndInitializeSid.Addr(), uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procBuildSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(countAccessEntries), uintptr(unsafe.Pointer(accessEntries)), uintptr(countAuditEntries), uintptr(unsafe.Pointer(auditEntries)), uintptr(unsafe.Pointer(oldSecurityDescriptor)), uintptr(unsafe.Pointer(sizeNewSecurityDescriptor)), uintptr(unsafe.Pointer(newSecurityDescriptor)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procChangeServiceConfig2W.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procChangeServiceConfigW.Addr(), uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCheckTokenMembership.Addr(), uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CloseServiceHandle(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCloseServiceHandle.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procControlService.Addr(), uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConvertSidToStringSidW.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(str)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size)\n}\n\nfunc _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConvertStringSidToSidW.Addr(), uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCopySid.Addr(), uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {\n\tvar _p0 uint32\n\tif inheritHandles {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procCreateProcessAsUserW.Addr(), uintptr(token), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateServiceW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreateWellKnownSid.Addr(), uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptAcquireContextW.Addr(), uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptGenRandom.Addr(), uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptReleaseContext(provhandle Handle, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptReleaseContext.Addr(), uintptr(provhandle), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DeleteService(service Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeleteService.Addr(), uintptr(service))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DeregisterEventSource(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeregisterEventSource.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDuplicateTokenEx.Addr(), uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumDependentServicesW.Addr(), uintptr(service), uintptr(activityState), uintptr(unsafe.Pointer(services)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumServicesStatusExW.Addr(), uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) {\n\tr0, _, _ := syscall.SyscallN(procEqualSid.Addr(), uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)))\n\tisEqual = r0 != 0\n\treturn\n}\n\nfunc FreeSid(sid *SID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFreeSid.Addr(), uintptr(unsafe.Pointer(sid)))\n\tif r1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetAce.Addr(), uintptr(unsafe.Pointer(acl)), uintptr(aceIndex), uintptr(unsafe.Pointer(pAce)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetLengthSid(sid *SID) (len uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetLengthSid.Addr(), uintptr(unsafe.Pointer(sid)))\n\tlen = uint32(r0)\n\treturn\n}\n\nfunc getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {\n\tvar _p0 *uint16\n\t_p0, ret = syscall.UTF16PtrFromString(objectName)\n\tif ret != nil {\n\t\treturn\n\t}\n\treturn _getNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl, sd)\n}\n\nfunc _getNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procGetNamedSecurityInfoW.Addr(), uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *daclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif *daclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorDacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1)))\n\t*daclPresent = _p0 != 0\n\t*daclDefaulted = _p1 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *groupDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorGroup.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0)))\n\t*groupDefaulted = _p0 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetSecurityDescriptorLength.Addr(), uintptr(unsafe.Pointer(sd)))\n\tlen = uint32(r0)\n\treturn\n}\n\nfunc getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *ownerDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorOwner.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0)))\n\t*ownerDefaulted = _p0 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procGetSecurityDescriptorRMControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *saclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif *saclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorSacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1)))\n\t*saclPresent = _p0 != 0\n\t*saclDefaulted = _p1 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procGetSecurityInfo.Addr(), uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) {\n\tr0, _, _ := syscall.SyscallN(procGetSidIdentifierAuthority.Addr(), uintptr(unsafe.Pointer(sid)))\n\tauthority = (*SidIdentifierAuthority)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetSidSubAuthority.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(index))\n\tsubAuthority = (*uint32)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc getSidSubAuthorityCount(sid *SID) (count *uint8) {\n\tr0, _, _ := syscall.SyscallN(procGetSidSubAuthorityCount.Addr(), uintptr(unsafe.Pointer(sid)))\n\tcount = (*uint8)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetTokenInformation.Addr(), uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ImpersonateSelf(impersonationlevel uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procImpersonateSelf.Addr(), uintptr(impersonationlevel))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procInitializeSecurityDescriptor.Addr(), uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) {\n\tvar _p0 uint32\n\tif forceAppsClosed {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif rebootAfterShutdown {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procInitiateSystemShutdownExW.Addr(), uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(message)), uintptr(timeout), uintptr(_p0), uintptr(_p1), uintptr(reason))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc isTokenRestricted(tokenHandle Token) (ret bool, err error) {\n\tr0, _, e1 := syscall.SyscallN(procIsTokenRestricted.Addr(), uintptr(tokenHandle))\n\tret = r0 != 0\n\tif !ret {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) {\n\tr0, _, _ := syscall.SyscallN(procIsValidSecurityDescriptor.Addr(), uintptr(unsafe.Pointer(sd)))\n\tisValid = r0 != 0\n\treturn\n}\n\nfunc isValidSid(sid *SID) (isValid bool) {\n\tr0, _, _ := syscall.SyscallN(procIsValidSid.Addr(), uintptr(unsafe.Pointer(sid)))\n\tisValid = r0 != 0\n\treturn\n}\n\nfunc isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) {\n\tr0, _, _ := syscall.SyscallN(procIsWellKnownSid.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(sidType))\n\tisWellKnown = r0 != 0\n\treturn\n}\n\nfunc LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procLookupAccountNameW.Addr(), uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procLookupAccountSidW.Addr(), uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procLookupPrivilegeValueW.Addr(), uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procMakeAbsoluteSD.Addr(), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(absoluteSDSize)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclSize)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(saclSize)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(ownerSize)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(groupSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procMakeSelfRelativeSD.Addr(), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procNotifyServiceStatusChangeW.Addr(), uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc OpenProcessToken(process Handle, access uint32, token *Token) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procOpenProcessToken.Addr(), uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procOpenSCManagerW.Addr(), uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procOpenServiceW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) {\n\tvar _p0 uint32\n\tif openAsSelf {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procOpenThreadToken.Addr(), uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceConfig2W.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceConfigW.Addr(), uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) {\n\terr = procQueryServiceDynamicInformation.Find()\n\tif err != nil {\n\t\treturn\n\t}\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceDynamicInformation.Addr(), uintptr(service), uintptr(infoLevel), uintptr(dynamicInfo))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceLockStatusW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceStatus.Addr(), uintptr(service), uintptr(unsafe.Pointer(status)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceStatusEx.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RegCloseKey(key Handle) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegCloseKey.Addr(), uintptr(key))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegEnumKeyExW.Addr(), uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) {\n\tvar _p0 uint32\n\tif watchSubtree {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif asynchronous {\n\t\t_p1 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procRegNotifyChangeKeyValue.Addr(), uintptr(key), uintptr(_p0), uintptr(notifyFilter), uintptr(event), uintptr(_p1))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegOpenKeyExW.Addr(), uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegQueryInfoKeyW.Addr(), uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime)))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegQueryValueExW.Addr(), uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procRegisterEventSourceW.Addr(), uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procRegisterServiceCtrlHandlerExW.Addr(), uintptr(unsafe.Pointer(serviceName)), uintptr(handlerProc), uintptr(context))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procReportEventW.Addr(), uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RevertToSelf() (err error) {\n\tr1, _, e1 := syscall.SyscallN(procRevertToSelf.Addr())\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procSetEntriesInAclW.Addr(), uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetKernelObjectSecurity.Addr(), uintptr(handle), uintptr(securityInformation), uintptr(unsafe.Pointer(securityDescriptor)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {\n\tvar _p0 *uint16\n\t_p0, ret = syscall.UTF16PtrFromString(objectName)\n\tif ret != nil {\n\t\treturn\n\t}\n\treturn _SetNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl)\n}\n\nfunc _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procSetNamedSecurityInfoW.Addr(), uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif daclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif daclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorDacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif groupDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorGroup.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif ownerDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorOwner.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) {\n\tsyscall.SyscallN(procSetSecurityDescriptorRMControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)))\n\treturn\n}\n\nfunc setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif saclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif saclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorSacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procSetSecurityInfo.Addr(), uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetServiceStatus.Addr(), uintptr(service), uintptr(unsafe.Pointer(serviceStatus)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetThreadToken(thread *Handle, token Token) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetThreadToken.Addr(), uintptr(unsafe.Pointer(thread)), uintptr(token))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetTokenInformation.Addr(), uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procStartServiceCtrlDispatcherW.Addr(), uintptr(unsafe.Pointer(serviceTable)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procStartServiceW.Addr(), uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertAddCertificateContextToStore.Addr(), uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertCloseStore(store Handle, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertCloseStore.Addr(), uintptr(store), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertCreateCertificateContext.Addr(), uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))\n\tcontext = (*CertContext)(unsafe.Pointer(r0))\n\tif context == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertDeleteCertificateFromStore(certContext *CertContext) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertDeleteCertificateFromStore.Addr(), uintptr(unsafe.Pointer(certContext)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) {\n\tr0, _, _ := syscall.SyscallN(procCertDuplicateCertificateContext.Addr(), uintptr(unsafe.Pointer(certContext)))\n\tdupContext = (*CertContext)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertEnumCertificatesInStore.Addr(), uintptr(store), uintptr(unsafe.Pointer(prevContext)))\n\tcontext = (*CertContext)(unsafe.Pointer(r0))\n\tif context == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertFindCertificateInStore.Addr(), uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevCertContext)))\n\tcert = (*CertContext)(unsafe.Pointer(r0))\n\tif cert == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertFindChainInStore.Addr(), uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevChainContext)))\n\tcertchain = (*CertChainContext)(unsafe.Pointer(r0))\n\tif certchain == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) {\n\tr0, _, _ := syscall.SyscallN(procCertFindExtension.Addr(), uintptr(unsafe.Pointer(objId)), uintptr(countExtensions), uintptr(unsafe.Pointer(extensions)))\n\tret = (*CertExtension)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc CertFreeCertificateChain(ctx *CertChainContext) {\n\tsyscall.SyscallN(procCertFreeCertificateChain.Addr(), uintptr(unsafe.Pointer(ctx)))\n\treturn\n}\n\nfunc CertFreeCertificateContext(ctx *CertContext) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertFreeCertificateContext.Addr(), uintptr(unsafe.Pointer(ctx)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertGetCertificateChain.Addr(), uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) {\n\tr0, _, _ := syscall.SyscallN(procCertGetNameStringW.Addr(), uintptr(unsafe.Pointer(certContext)), uintptr(nameType), uintptr(flags), uintptr(typePara), uintptr(unsafe.Pointer(name)), uintptr(size))\n\tchars = uint32(r0)\n\treturn\n}\n\nfunc CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertOpenStore.Addr(), uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertOpenSystemStoreW.Addr(), uintptr(hprov), uintptr(unsafe.Pointer(name)))\n\tstore = Handle(r0)\n\tif store == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertVerifyCertificateChainPolicy.Addr(), uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) {\n\tvar _p0 uint32\n\tif *callerFreeProvOrNCryptKey {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procCryptAcquireCertificatePrivateKey.Addr(), uintptr(unsafe.Pointer(cert)), uintptr(flags), uintptr(parameters), uintptr(unsafe.Pointer(cryptProvOrNCryptKey)), uintptr(unsafe.Pointer(keySpec)), uintptr(unsafe.Pointer(&_p0)))\n\t*callerFreeProvOrNCryptKey = _p0 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptDecodeObject.Addr(), uintptr(encodingType), uintptr(unsafe.Pointer(structType)), uintptr(unsafe.Pointer(encodedBytes)), uintptr(lenEncodedBytes), uintptr(flags), uintptr(decoded), uintptr(unsafe.Pointer(decodedLen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptProtectData.Addr(), uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptQueryObject.Addr(), uintptr(objectType), uintptr(object), uintptr(expectedContentTypeFlags), uintptr(expectedFormatTypeFlags), uintptr(flags), uintptr(unsafe.Pointer(msgAndCertEncodingType)), uintptr(unsafe.Pointer(contentType)), uintptr(unsafe.Pointer(formatType)), uintptr(unsafe.Pointer(certStore)), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(context)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptUnprotectData.Addr(), uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procPFXImportCertStore.Addr(), uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags))\n\tstore = Handle(r0)\n\tif store == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {\n\tr0, _, _ := syscall.SyscallN(procDnsNameCompare_W.Addr(), uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)))\n\tsame = r0 != 0\n\treturn\n}\n\nfunc DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {\n\tvar _p0 *uint16\n\t_p0, status = syscall.UTF16PtrFromString(name)\n\tif status != nil {\n\t\treturn\n\t}\n\treturn _DnsQuery(_p0, qtype, options, extra, qrs, pr)\n}\n\nfunc _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {\n\tr0, _, _ := syscall.SyscallN(procDnsQuery_W.Addr(), uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr)))\n\tif r0 != 0 {\n\t\tstatus = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc DnsRecordListFree(rl *DNSRecord, freetype uint32) {\n\tsyscall.SyscallN(procDnsRecordListFree.Addr(), uintptr(unsafe.Pointer(rl)), uintptr(freetype))\n\treturn\n}\n\nfunc DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procDwmGetWindowAttribute.Addr(), uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procDwmSetWindowAttribute.Addr(), uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CancelMibChangeNotify2(notificationHandle Handle) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procCancelMibChangeNotify2.Addr(), uintptr(notificationHandle))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc FreeMibTable(memory unsafe.Pointer) {\n\tsyscall.SyscallN(procFreeMibTable.Addr(), uintptr(memory))\n\treturn\n}\n\nfunc GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetAdaptersAddresses.Addr(), uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetAdaptersInfo.Addr(), uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetBestInterfaceEx.Addr(), uintptr(sockaddr), uintptr(unsafe.Pointer(pdwBestIfIndex)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIfEntry(pIfRow *MibIfRow) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIfEntry.Addr(), uintptr(unsafe.Pointer(pIfRow)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIfEntry2Ex.Addr(), uintptr(level), uintptr(unsafe.Pointer(row)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIfTable2Ex(level uint32, table **MibIfTable2) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIfTable2Ex.Addr(), uintptr(level), uintptr(unsafe.Pointer(table)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIpForwardEntry2(row *MibIpForwardRow2) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIpForwardEntry2.Addr(), uintptr(unsafe.Pointer(row)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIpForwardTable2(family uint16, table **MibIpForwardTable2) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIpForwardTable2.Addr(), uintptr(family), uintptr(unsafe.Pointer(table)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIpInterfaceEntry(row *MibIpInterfaceRow) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIpInterfaceEntry.Addr(), uintptr(unsafe.Pointer(row)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIpInterfaceTable(family uint16, table **MibIpInterfaceTable) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIpInterfaceTable.Addr(), uintptr(family), uintptr(unsafe.Pointer(table)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetUnicastIpAddressEntry.Addr(), uintptr(unsafe.Pointer(row)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetUnicastIpAddressTable(family uint16, table **MibUnicastIpAddressTable) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetUnicastIpAddressTable.Addr(), uintptr(family), uintptr(unsafe.Pointer(table)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) {\n\tvar _p0 uint32\n\tif initialNotification {\n\t\t_p0 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procNotifyIpInterfaceChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NotifyRouteChange2(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) {\n\tvar _p0 uint32\n\tif initialNotification {\n\t\t_p0 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procNotifyRouteChange2.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) {\n\tvar _p0 uint32\n\tif initialNotification {\n\t\t_p0 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procNotifyUnicastIpAddressChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc AddDllDirectory(path *uint16) (cookie uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procAddDllDirectory.Addr(), uintptr(unsafe.Pointer(path)))\n\tcookie = uintptr(r0)\n\tif cookie == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AssignProcessToJobObject(job Handle, process Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procAssignProcessToJobObject.Addr(), uintptr(job), uintptr(process))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CancelIo(s Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCancelIo.Addr(), uintptr(s))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CancelIoEx(s Handle, o *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCancelIoEx.Addr(), uintptr(s), uintptr(unsafe.Pointer(o)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ClearCommBreak(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procClearCommBreak.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ClearCommError(handle Handle, lpErrors *uint32, lpStat *ComStat) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procClearCommError.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpErrors)), uintptr(unsafe.Pointer(lpStat)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CloseHandle(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCloseHandle.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ClosePseudoConsole(console Handle) {\n\tsyscall.SyscallN(procClosePseudoConsole.Addr(), uintptr(console))\n\treturn\n}\n\nfunc ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConnectNamedPipe.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreateDirectoryW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateEventExW.Addr(), uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateEventW.Addr(), uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateFileMappingW.Addr(), uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateFileW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreateHardLinkW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))\n\tif r1&0xff == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateIoCompletionPort.Addr(), uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateJobObjectW.Addr(), uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateMutexExW.Addr(), uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif initialOwner {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procCreateMutexW.Addr(), uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateNamedPipeW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(pipeMode), uintptr(maxInstances), uintptr(outSize), uintptr(inSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa)))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreatePipe.Addr(), uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {\n\tvar _p0 uint32\n\tif inheritHandles {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procCreateProcessW.Addr(), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc createPseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) {\n\tr0, _, _ := syscall.SyscallN(procCreatePseudoConsole.Addr(), uintptr(size), uintptr(in), uintptr(out), uintptr(flags), uintptr(unsafe.Pointer(pconsole)))\n\tif r0 != 0 {\n\t\thr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreateSymbolicLinkW.Addr(), uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))\n\tif r1&0xff == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateToolhelp32Snapshot.Addr(), uintptr(flags), uintptr(processId))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDefineDosDeviceW.Addr(), uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DeleteFile(path *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeleteFileW.Addr(), uintptr(unsafe.Pointer(path)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) {\n\tsyscall.SyscallN(procDeleteProcThreadAttributeList.Addr(), uintptr(unsafe.Pointer(attrlist)))\n\treturn\n}\n\nfunc DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeleteVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeviceIoControl.Addr(), uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DisconnectNamedPipe(pipe Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDisconnectNamedPipe.Addr(), uintptr(pipe))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {\n\tvar _p0 uint32\n\tif bInheritHandle {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procDuplicateHandle.Addr(), uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EscapeCommFunction(handle Handle, dwFunc uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEscapeCommFunction.Addr(), uintptr(handle), uintptr(dwFunc))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ExitProcess(exitcode uint32) {\n\tsyscall.SyscallN(procExitProcess.Addr(), uintptr(exitcode))\n\treturn\n}\n\nfunc ExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procExpandEnvironmentStringsW.Addr(), uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindClose(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindClose.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindCloseChangeNotification(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindCloseChangeNotification.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _FindFirstChangeNotification(_p0, watchSubtree, notifyFilter)\n}\n\nfunc _FindFirstChangeNotification(path *uint16, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {\n\tvar _p1 uint32\n\tif watchSubtree {\n\t\t_p1 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procFindFirstChangeNotificationW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(_p1), uintptr(notifyFilter))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procFindFirstFileW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procFindFirstVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procFindFirstVolumeW.Addr(), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindNextChangeNotification(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindNextChangeNotification.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc findNextFile1(handle Handle, data *win32finddata1) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindNextFileW.Addr(), uintptr(handle), uintptr(unsafe.Pointer(data)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindNextVolumeMountPointW.Addr(), uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindNextVolumeW.Addr(), uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc findResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procFindResourceW.Addr(), uintptr(module), uintptr(name), uintptr(resType))\n\tresInfo = Handle(r0)\n\tif resInfo == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindVolumeClose(findVolume Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindVolumeClose.Addr(), uintptr(findVolume))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindVolumeMountPointClose.Addr(), uintptr(findVolumeMountPoint))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FlushConsoleInputBuffer(console Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFlushConsoleInputBuffer.Addr(), uintptr(console))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FlushFileBuffers(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFlushFileBuffers.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FlushViewOfFile(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFlushViewOfFile.Addr(), uintptr(addr), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {\n\tvar _p0 *uint16\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := syscall.SyscallN(procFormatMessageW.Addr(), uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FreeEnvironmentStrings(envs *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFreeEnvironmentStringsW.Addr(), uintptr(unsafe.Pointer(envs)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FreeLibrary(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFreeLibrary.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGenerateConsoleCtrlEvent.Addr(), uintptr(ctrlEvent), uintptr(processGroupID))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetACP() (acp uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetACP.Addr())\n\tacp = uint32(r0)\n\treturn\n}\n\nfunc GetActiveProcessorCount(groupNumber uint16) (ret uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetActiveProcessorCount.Addr(), uintptr(groupNumber))\n\tret = uint32(r0)\n\treturn\n}\n\nfunc GetCommModemStatus(handle Handle, lpModemStat *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetCommModemStatus.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpModemStat)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCommState(handle Handle, lpDCB *DCB) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetCommState.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpDCB)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetCommTimeouts.Addr(), uintptr(handle), uintptr(unsafe.Pointer(timeouts)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCommandLine() (cmd *uint16) {\n\tr0, _, _ := syscall.SyscallN(procGetCommandLineW.Addr())\n\tcmd = (*uint16)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetComputerNameExW.Addr(), uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetComputerName(buf *uint16, n *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetComputerNameW.Addr(), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetConsoleCP() (cp uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetConsoleCP.Addr())\n\tcp = uint32(r0)\n\tif cp == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetConsoleMode(console Handle, mode *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetConsoleMode.Addr(), uintptr(console), uintptr(unsafe.Pointer(mode)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetConsoleOutputCP() (cp uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetConsoleOutputCP.Addr())\n\tcp = uint32(r0)\n\tif cp == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetConsoleScreenBufferInfo.Addr(), uintptr(console), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetCurrentDirectoryW.Addr(), uintptr(buflen), uintptr(unsafe.Pointer(buf)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCurrentProcessId() (pid uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetCurrentProcessId.Addr())\n\tpid = uint32(r0)\n\treturn\n}\n\nfunc GetCurrentThreadId() (id uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetCurrentThreadId.Addr())\n\tid = uint32(r0)\n\treturn\n}\n\nfunc GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetDiskFreeSpaceExW.Addr(), uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetDriveType(rootPathName *uint16) (driveType uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetDriveTypeW.Addr(), uintptr(unsafe.Pointer(rootPathName)))\n\tdriveType = uint32(r0)\n\treturn\n}\n\nfunc GetEnvironmentStrings() (envs *uint16, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetEnvironmentStringsW.Addr())\n\tenvs = (*uint16)(unsafe.Pointer(r0))\n\tif envs == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetEnvironmentVariableW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetExitCodeProcess.Addr(), uintptr(handle), uintptr(unsafe.Pointer(exitcode)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileAttributesExW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileAttributes(name *uint16) (attrs uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFileAttributesW.Addr(), uintptr(unsafe.Pointer(name)))\n\tattrs = uint32(r0)\n\tif attrs == INVALID_FILE_ATTRIBUTES {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileInformationByHandle.Addr(), uintptr(handle), uintptr(unsafe.Pointer(data)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileInformationByHandleEx.Addr(), uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileTime.Addr(), uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileType(filehandle Handle) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFileType.Addr(), uintptr(filehandle))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFinalPathNameByHandleW.Addr(), uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFullPathNameW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetLargePageMinimum() (size uintptr) {\n\tr0, _, _ := syscall.SyscallN(procGetLargePageMinimum.Addr())\n\tsize = uintptr(r0)\n\treturn\n}\n\nfunc GetLastError() (lasterr error) {\n\tr0, _, _ := syscall.SyscallN(procGetLastError.Addr())\n\tif r0 != 0 {\n\t\tlasterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetLogicalDriveStringsW.Addr(), uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetLogicalDrives() (drivesBitMask uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetLogicalDrives.Addr())\n\tdrivesBitMask = uint32(r0)\n\tif drivesBitMask == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetLongPathNameW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetMaximumProcessorCount(groupNumber uint16) (ret uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetMaximumProcessorCount.Addr(), uintptr(groupNumber))\n\tret = uint32(r0)\n\treturn\n}\n\nfunc GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetModuleFileNameW.Addr(), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetModuleHandleExW.Addr(), uintptr(flags), uintptr(unsafe.Pointer(moduleName)), uintptr(unsafe.Pointer(module)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNamedPipeClientProcessId.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(clientProcessID)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNamedPipeHandleStateW.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNamedPipeInfo.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNamedPipeServerProcessId.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(serverProcessID)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNumberOfConsoleInputEvents(console Handle, numevents *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNumberOfConsoleInputEvents.Addr(), uintptr(console), uintptr(unsafe.Pointer(numevents)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) {\n\tvar _p0 uint32\n\tif wait {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetOverlappedResult.Addr(), uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetPriorityClass(process Handle) (ret uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetPriorityClass.Addr(), uintptr(process))\n\tret = uint32(r0)\n\tif ret == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcAddress(module Handle, procname string) (proc uintptr, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(procname)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetProcAddress(module, _p0)\n}\n\nfunc _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetProcAddress.Addr(), uintptr(module), uintptr(unsafe.Pointer(procname)))\n\tproc = uintptr(r0)\n\tif proc == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessId(process Handle) (id uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetProcessId.Addr(), uintptr(process))\n\tid = uint32(r0)\n\tif id == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetProcessPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetProcessShutdownParameters.Addr(), uintptr(unsafe.Pointer(level)), uintptr(unsafe.Pointer(flags)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetProcessTimes.Addr(), uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) {\n\tsyscall.SyscallN(procGetProcessWorkingSetSizeEx.Addr(), uintptr(hProcess), uintptr(unsafe.Pointer(lpMinimumWorkingSetSize)), uintptr(unsafe.Pointer(lpMaximumWorkingSetSize)), uintptr(unsafe.Pointer(flags)))\n\treturn\n}\n\nfunc GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetQueuedCompletionStatus.Addr(), uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetShortPathNameW.Addr(), uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getStartupInfo(startupInfo *StartupInfo) {\n\tsyscall.SyscallN(procGetStartupInfoW.Addr(), uintptr(unsafe.Pointer(startupInfo)))\n\treturn\n}\n\nfunc GetStdHandle(stdhandle uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetStdHandle.Addr(), uintptr(stdhandle))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetSystemDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen))\n\tlen = uint32(r0)\n\tif len == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetSystemPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetSystemTimeAsFileTime(time *Filetime) {\n\tsyscall.SyscallN(procGetSystemTimeAsFileTime.Addr(), uintptr(unsafe.Pointer(time)))\n\treturn\n}\n\nfunc GetSystemTimePreciseAsFileTime(time *Filetime) {\n\tsyscall.SyscallN(procGetSystemTimePreciseAsFileTime.Addr(), uintptr(unsafe.Pointer(time)))\n\treturn\n}\n\nfunc getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetSystemWindowsDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen))\n\tlen = uint32(r0)\n\tif len == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetTempPathW.Addr(), uintptr(buflen), uintptr(unsafe.Pointer(buf)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetThreadPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getTickCount64() (ms uint64) {\n\tr0, _, _ := syscall.SyscallN(procGetTickCount64.Addr())\n\tms = uint64(r0)\n\treturn\n}\n\nfunc GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetTimeZoneInformation.Addr(), uintptr(unsafe.Pointer(tzi)))\n\trc = uint32(r0)\n\tif rc == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetUserPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVersion() (ver uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetVersion.Addr())\n\tver = uint32(r0)\n\tif ver == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumeInformationByHandleW.Addr(), uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumeInformationW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumeNameForVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumePathNameW.Addr(), uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumePathNamesForVolumeNameW.Addr(), uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetWindowsDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen))\n\tlen = uint32(r0)\n\tif len == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procInitializeProcThreadAttributeList.Addr(), uintptr(unsafe.Pointer(attrlist)), uintptr(attrcount), uintptr(flags), uintptr(unsafe.Pointer(size)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc IsProcessorFeaturePresent(ProcessorFeature uint32) (ret bool) {\n\tr0, _, _ := syscall.SyscallN(procIsProcessorFeaturePresent.Addr(), uintptr(ProcessorFeature))\n\tret = r0 != 0\n\treturn\n}\n\nfunc IsWow64Process(handle Handle, isWow64 *bool) (err error) {\n\tvar _p0 uint32\n\tif *isWow64 {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procIsWow64Process.Addr(), uintptr(handle), uintptr(unsafe.Pointer(&_p0)))\n\t*isWow64 = _p0 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) {\n\terr = procIsWow64Process2.Find()\n\tif err != nil {\n\t\treturn\n\t}\n\tr1, _, e1 := syscall.SyscallN(procIsWow64Process2.Addr(), uintptr(handle), uintptr(unsafe.Pointer(processMachine)), uintptr(unsafe.Pointer(nativeMachine)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(libname)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _LoadLibraryEx(_p0, zero, flags)\n}\n\nfunc _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLoadLibraryExW.Addr(), uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LoadLibrary(libname string) (handle Handle, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(libname)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _LoadLibrary(_p0)\n}\n\nfunc _LoadLibrary(libname *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLoadLibraryW.Addr(), uintptr(unsafe.Pointer(libname)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LoadResource(module Handle, resInfo Handle) (resData Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLoadResource.Addr(), uintptr(module), uintptr(resInfo))\n\tresData = Handle(r0)\n\tif resData == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LocalAlloc(flags uint32, length uint32) (ptr uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLocalAlloc.Addr(), uintptr(flags), uintptr(length))\n\tptr = uintptr(r0)\n\tif ptr == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LocalFree(hmem Handle) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLocalFree.Addr(), uintptr(hmem))\n\thandle = Handle(r0)\n\tif handle != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procLockFileEx.Addr(), uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LockResource(resData Handle) (addr uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLockResource.Addr(), uintptr(resData))\n\taddr = uintptr(r0)\n\tif addr == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procMapViewOfFile.Addr(), uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length))\n\taddr = uintptr(r0)\n\tif addr == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procModule32FirstW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procModule32NextW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procMoveFileExW.Addr(), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MoveFile(from *uint16, to *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procMoveFileW.Addr(), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procMultiByteToWideChar.Addr(), uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar))\n\tnwrite = int32(r0)\n\tif nwrite == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procOpenEventW.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procOpenMutexW.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procOpenProcess.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(processId))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procOpenThread.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(threadId))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procPostQueuedCompletionStatus.Addr(), uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procProcess32FirstW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procProcess32NextW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procProcessIdToSessionId.Addr(), uintptr(pid), uintptr(unsafe.Pointer(sessionid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PulseEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procPulseEvent.Addr(), uintptr(event))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PurgeComm(handle Handle, dwFlags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procPurgeComm.Addr(), uintptr(handle), uintptr(dwFlags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procQueryDosDeviceW.Addr(), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryFullProcessImageNameW.Addr(), uintptr(proc), uintptr(flags), uintptr(unsafe.Pointer(exeName)), uintptr(unsafe.Pointer(size)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryInformationJobObject.Addr(), uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), uintptr(unsafe.Pointer(retlen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procReadConsoleW.Addr(), uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {\n\tvar _p0 uint32\n\tif watchSubTree {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procReadDirectoryChangesW.Addr(), uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr1, _, e1 := syscall.SyscallN(procReadFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procReadProcessMemory.Addr(), uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesRead)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReleaseMutex(mutex Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procReleaseMutex.Addr(), uintptr(mutex))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RemoveDirectory(path *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procRemoveDirectoryW.Addr(), uintptr(unsafe.Pointer(path)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RemoveDllDirectory(cookie uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procRemoveDllDirectory.Addr(), uintptr(cookie))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ResetEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procResetEvent.Addr(), uintptr(event))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc resizePseudoConsole(pconsole Handle, size uint32) (hr error) {\n\tr0, _, _ := syscall.SyscallN(procResizePseudoConsole.Addr(), uintptr(pconsole), uintptr(size))\n\tif r0 != 0 {\n\t\thr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc ResumeThread(thread Handle) (ret uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procResumeThread.Addr(), uintptr(thread))\n\tret = uint32(r0)\n\tif ret == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCommBreak(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCommBreak.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCommMask(handle Handle, dwEvtMask uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCommMask.Addr(), uintptr(handle), uintptr(dwEvtMask))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCommState(handle Handle, lpDCB *DCB) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCommState.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpDCB)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCommTimeouts.Addr(), uintptr(handle), uintptr(unsafe.Pointer(timeouts)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetConsoleCP(cp uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetConsoleCP.Addr(), uintptr(cp))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setConsoleCursorPosition(console Handle, position uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetConsoleCursorPosition.Addr(), uintptr(console), uintptr(position))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetConsoleMode(console Handle, mode uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetConsoleMode.Addr(), uintptr(console), uintptr(mode))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetConsoleOutputCP(cp uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetConsoleOutputCP.Addr(), uintptr(cp))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCurrentDirectory(path *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCurrentDirectoryW.Addr(), uintptr(unsafe.Pointer(path)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetDefaultDllDirectories(directoryFlags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetDefaultDllDirectories.Addr(), uintptr(directoryFlags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetDllDirectory(path string) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _SetDllDirectory(_p0)\n}\n\nfunc _SetDllDirectory(path *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetDllDirectoryW.Addr(), uintptr(unsafe.Pointer(path)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetEndOfFile(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetEndOfFile.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetEnvironmentVariable(name *uint16, value *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetEnvironmentVariableW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetErrorMode(mode uint32) (ret uint32) {\n\tr0, _, _ := syscall.SyscallN(procSetErrorMode.Addr(), uintptr(mode))\n\tret = uint32(r0)\n\treturn\n}\n\nfunc SetEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetEvent.Addr(), uintptr(event))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileAttributes(name *uint16, attrs uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileAttributesW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(attrs))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileCompletionNotificationModes.Addr(), uintptr(handle), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileInformationByHandle.Addr(), uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetFilePointer.Addr(), uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence))\n\tnewlowoffset = uint32(r0)\n\tif newlowoffset == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileTime.Addr(), uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileValidData(handle Handle, validDataLength int64) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileValidData.Addr(), uintptr(handle), uintptr(validDataLength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetHandleInformation.Addr(), uintptr(handle), uintptr(mask), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetInformationJobObject.Addr(), uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength))\n\tret = int(r0)\n\tif ret == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetNamedPipeHandleState.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetPriorityClass(process Handle, priorityClass uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetPriorityClass.Addr(), uintptr(process), uintptr(priorityClass))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetProcessPriorityBoost(process Handle, disable bool) (err error) {\n\tvar _p0 uint32\n\tif disable {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetProcessPriorityBoost.Addr(), uintptr(process), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetProcessShutdownParameters(level uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetProcessShutdownParameters.Addr(), uintptr(level), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetProcessWorkingSetSizeEx.Addr(), uintptr(hProcess), uintptr(dwMinimumWorkingSetSize), uintptr(dwMaximumWorkingSetSize), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetStdHandle(stdhandle uint32, handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetStdHandle.Addr(), uintptr(stdhandle), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetVolumeLabelW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupComm(handle Handle, dwInQueue uint32, dwOutQueue uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupComm.Addr(), uintptr(handle), uintptr(dwInQueue), uintptr(dwOutQueue))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SizeofResource(module Handle, resInfo Handle) (size uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSizeofResource.Addr(), uintptr(module), uintptr(resInfo))\n\tsize = uint32(r0)\n\tif size == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SleepEx(milliseconds uint32, alertable bool) (ret uint32) {\n\tvar _p0 uint32\n\tif alertable {\n\t\t_p0 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procSleepEx.Addr(), uintptr(milliseconds), uintptr(_p0))\n\tret = uint32(r0)\n\treturn\n}\n\nfunc TerminateJobObject(job Handle, exitCode uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procTerminateJobObject.Addr(), uintptr(job), uintptr(exitCode))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TerminateProcess(handle Handle, exitcode uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procTerminateProcess.Addr(), uintptr(handle), uintptr(exitcode))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procThread32First.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procThread32Next.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procUnlockFileEx.Addr(), uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc UnmapViewOfFile(addr uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procUnmapViewOfFile.Addr(), uintptr(addr))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procUpdateProcThreadAttribute.Addr(), uintptr(unsafe.Pointer(attrlist)), uintptr(flags), uintptr(attr), uintptr(value), uintptr(size), uintptr(prevvalue), uintptr(unsafe.Pointer(returnedsize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procVirtualAlloc.Addr(), uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect))\n\tvalue = uintptr(r0)\n\tif value == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualFree.Addr(), uintptr(address), uintptr(size), uintptr(freetype))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualLock(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualLock.Addr(), uintptr(addr), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualProtect.Addr(), uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualProtectEx.Addr(), uintptr(process), uintptr(address), uintptr(size), uintptr(newProtect), uintptr(unsafe.Pointer(oldProtect)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualQuery.Addr(), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualQueryEx.Addr(), uintptr(process), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualUnlock(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualUnlock.Addr(), uintptr(addr), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WTSGetActiveConsoleSessionId() (sessionID uint32) {\n\tr0, _, _ := syscall.SyscallN(procWTSGetActiveConsoleSessionId.Addr())\n\tsessionID = uint32(r0)\n\treturn\n}\n\nfunc WaitCommEvent(handle Handle, lpEvtMask *uint32, lpOverlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWaitCommEvent.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpEvtMask)), uintptr(unsafe.Pointer(lpOverlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {\n\tvar _p0 uint32\n\tif waitAll {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procWaitForMultipleObjects.Addr(), uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds))\n\tevent = uint32(r0)\n\tif event == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procWaitForSingleObject.Addr(), uintptr(handle), uintptr(waitMilliseconds))\n\tevent = uint32(r0)\n\tif event == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWriteConsoleW.Addr(), uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr1, _, e1 := syscall.SyscallN(procWriteFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWriteProcessMemory.Addr(), uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesWritten)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procAcceptEx.Addr(), uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {\n\tsyscall.SyscallN(procGetAcceptExSockaddrs.Addr(), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)))\n\treturn\n}\n\nfunc TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procTransmitFile.Addr(), uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc NetApiBufferFree(buf *byte) (neterr error) {\n\tr0, _, _ := syscall.SyscallN(procNetApiBufferFree.Addr(), uintptr(unsafe.Pointer(buf)))\n\tif r0 != 0 {\n\t\tneterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) {\n\tr0, _, _ := syscall.SyscallN(procNetGetJoinInformation.Addr(), uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType)))\n\tif r0 != 0 {\n\t\tneterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NetUserEnum(serverName *uint16, level uint32, filter uint32, buf **byte, prefMaxLen uint32, entriesRead *uint32, totalEntries *uint32, resumeHandle *uint32) (neterr error) {\n\tr0, _, _ := syscall.SyscallN(procNetUserEnum.Addr(), uintptr(unsafe.Pointer(serverName)), uintptr(level), uintptr(filter), uintptr(unsafe.Pointer(buf)), uintptr(prefMaxLen), uintptr(unsafe.Pointer(entriesRead)), uintptr(unsafe.Pointer(totalEntries)), uintptr(unsafe.Pointer(resumeHandle)))\n\tif r0 != 0 {\n\t\tneterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {\n\tr0, _, _ := syscall.SyscallN(procNetUserGetInfo.Addr(), uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)))\n\tif r0 != 0 {\n\t\tneterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtCreateFile.Addr(), uintptr(unsafe.Pointer(handle)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(allocationSize)), uintptr(attributes), uintptr(share), uintptr(disposition), uintptr(options), uintptr(eabuffer), uintptr(ealength))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtCreateNamedPipeFile.Addr(), uintptr(unsafe.Pointer(pipe)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(share), uintptr(disposition), uintptr(options), uintptr(typ), uintptr(readMode), uintptr(completionMode), uintptr(maxInstances), uintptr(inboundQuota), uintptr(outputQuota), uintptr(unsafe.Pointer(timeout)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtQueryInformationProcess.Addr(), uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), uintptr(unsafe.Pointer(retLen)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtQuerySystemInformation.Addr(), uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen), uintptr(unsafe.Pointer(retLen)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtSetInformationFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), uintptr(class))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtSetInformationProcess.Addr(), uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtSetSystemInformation.Addr(), uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) {\n\tr0, _, _ := syscall.SyscallN(procRtlAddFunctionTable.Addr(), uintptr(unsafe.Pointer(functionTable)), uintptr(entryCount), uintptr(baseAddress))\n\tret = r0 != 0\n\treturn\n}\n\nfunc RtlDefaultNpAcl(acl **ACL) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procRtlDefaultNpAcl.Addr(), uintptr(unsafe.Pointer(acl)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) {\n\tr0, _, _ := syscall.SyscallN(procRtlDeleteFunctionTable.Addr(), uintptr(unsafe.Pointer(functionTable)))\n\tret = r0 != 0\n\treturn\n}\n\nfunc RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procRtlDosPathNameToNtPathName_U_WithStatus.Addr(), uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procRtlDosPathNameToRelativeNtPathName_U_WithStatus.Addr(), uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlGetCurrentPeb() (peb *PEB) {\n\tr0, _, _ := syscall.SyscallN(procRtlGetCurrentPeb.Addr())\n\tpeb = (*PEB)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) {\n\tsyscall.SyscallN(procRtlGetNtVersionNumbers.Addr(), uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber)))\n\treturn\n}\n\nfunc rtlGetVersion(info *OsVersionInfoEx) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procRtlGetVersion.Addr(), uintptr(unsafe.Pointer(info)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlInitString(destinationString *NTString, sourceString *byte) {\n\tsyscall.SyscallN(procRtlInitString.Addr(), uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString)))\n\treturn\n}\n\nfunc RtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) {\n\tsyscall.SyscallN(procRtlInitUnicodeString.Addr(), uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString)))\n\treturn\n}\n\nfunc rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) {\n\tr0, _, _ := syscall.SyscallN(procRtlNtStatusToDosErrorNoTeb.Addr(), uintptr(ntstatus))\n\tret = syscall.Errno(r0)\n\treturn\n}\n\nfunc clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procCLSIDFromString.Addr(), uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc coCreateGuid(pguid *GUID) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procCoCreateGuid.Addr(), uintptr(unsafe.Pointer(pguid)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procCoGetObject.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bindOpts)), uintptr(unsafe.Pointer(guid)), uintptr(unsafe.Pointer(functionTable)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CoInitializeEx(reserved uintptr, coInit uint32) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procCoInitializeEx.Addr(), uintptr(reserved), uintptr(coInit))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CoTaskMemFree(address unsafe.Pointer) {\n\tsyscall.SyscallN(procCoTaskMemFree.Addr(), uintptr(address))\n\treturn\n}\n\nfunc CoUninitialize() {\n\tsyscall.SyscallN(procCoUninitialize.Addr())\n\treturn\n}\n\nfunc stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) {\n\tr0, _, _ := syscall.SyscallN(procStringFromGUID2.Addr(), uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax))\n\tchars = int32(r0)\n\treturn\n}\n\nfunc EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumProcessModules.Addr(), uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumProcessModulesEx.Addr(), uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), uintptr(filterFlag))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc enumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumProcesses.Addr(), uintptr(unsafe.Pointer(processIds)), uintptr(nSize), uintptr(unsafe.Pointer(bytesReturned)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetModuleBaseNameW.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(baseName)), uintptr(size))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetModuleFileNameExW.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetModuleInformation.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(modinfo)), uintptr(cb))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryWorkingSetEx.Addr(), uintptr(process), uintptr(pv), uintptr(cb))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) {\n\tret = procSubscribeServiceChangeNotifications.Find()\n\tif ret != nil {\n\t\treturn\n\t}\n\tr0, _, _ := syscall.SyscallN(procSubscribeServiceChangeNotifications.Addr(), uintptr(service), uintptr(eventType), uintptr(callback), uintptr(callbackCtx), uintptr(unsafe.Pointer(subscription)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc UnsubscribeServiceChangeNotifications(subscription uintptr) (err error) {\n\terr = procUnsubscribeServiceChangeNotifications.Find()\n\tif err != nil {\n\t\treturn\n\t}\n\tsyscall.SyscallN(procUnsubscribeServiceChangeNotifications.Addr(), uintptr(subscription))\n\treturn\n}\n\nfunc GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetUserNameExW.Addr(), uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))\n\tif r1&0xff == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procTranslateNameW.Addr(), uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)))\n\tif r1&0xff == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiBuildDriverInfoList.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiCallClassInstaller.Addr(), uintptr(installFunction), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiCancelDriverInfoSearch.Addr(), uintptr(deviceInfoSet))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiClassGuidsFromNameExW.Addr(), uintptr(unsafe.Pointer(className)), uintptr(unsafe.Pointer(classGuidList)), uintptr(classGuidListSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiClassNameFromGuidExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(className)), uintptr(classNameSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetupDiCreateDeviceInfoListExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(hwndParent), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))\n\thandle = DevInfo(r0)\n\tif handle == DevInfo(InvalidHandle) {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiCreateDeviceInfoW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(DeviceName)), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(DeviceDescription)), uintptr(hwndParent), uintptr(CreationFlags), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiDestroyDeviceInfoList.Addr(), uintptr(deviceInfoSet))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiDestroyDriverInfoList.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiEnumDeviceInfo.Addr(), uintptr(deviceInfoSet), uintptr(memberIndex), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiEnumDriverInfoW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType), uintptr(memberIndex), uintptr(unsafe.Pointer(driverInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetupDiGetClassDevsExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(Enumerator)), uintptr(hwndParent), uintptr(Flags), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))\n\thandle = DevInfo(r0)\n\tif handle == DevInfo(InvalidHandle) {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetClassInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), uintptr(unsafe.Pointer(requiredSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInfoListDetailW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoSetDetailData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInstanceIdW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(instanceId)), uintptr(instanceIdSize), uintptr(unsafe.Pointer(instanceIdRequiredSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDevicePropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(propertyKey)), uintptr(unsafe.Pointer(propertyType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceRegistryPropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyRegDataType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDriverInfoDetailW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)), uintptr(unsafe.Pointer(driverInfoDetailData)), uintptr(driverInfoDetailDataSize), uintptr(unsafe.Pointer(requiredSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetSelectedDevice.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetSelectedDriverW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetupDiOpenDevRegKey.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(Scope), uintptr(HwProfile), uintptr(KeyType), uintptr(samDesired))\n\tkey = Handle(r0)\n\tif key == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetClassInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetDeviceInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetDeviceRegistryPropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetSelectedDevice.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetSelectedDriverW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupUninstallOEMInfW.Addr(), uintptr(unsafe.Pointer(infFileName)), uintptr(flags), uintptr(reserved))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc commandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCommandLineToArgvW.Addr(), uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)))\n\targv = (**uint16)(unsafe.Pointer(r0))\n\tif argv == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procSHGetKnownFolderPath.Addr(), uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procShellExecuteW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(verb)), uintptr(unsafe.Pointer(file)), uintptr(unsafe.Pointer(args)), uintptr(unsafe.Pointer(cwd)), uintptr(showCmd))\n\tif r1 <= 32 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) {\n\tsyscall.SyscallN(procEnumChildWindows.Addr(), uintptr(hwnd), uintptr(enumFunc), uintptr(param))\n\treturn\n}\n\nfunc EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumWindows.Addr(), uintptr(enumFunc), uintptr(param))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ExitWindowsEx(flags uint32, reason uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procExitWindowsEx.Addr(), uintptr(flags), uintptr(reason))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetClassNameW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(className)), uintptr(maxCount))\n\tcopied = int32(r0)\n\tif copied == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetDesktopWindow() (hwnd HWND) {\n\tr0, _, _ := syscall.SyscallN(procGetDesktopWindow.Addr())\n\thwnd = HWND(r0)\n\treturn\n}\n\nfunc GetForegroundWindow() (hwnd HWND) {\n\tr0, _, _ := syscall.SyscallN(procGetForegroundWindow.Addr())\n\thwnd = HWND(r0)\n\treturn\n}\n\nfunc GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetGUIThreadInfo.Addr(), uintptr(thread), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetKeyboardLayout(tid uint32) (hkl Handle) {\n\tr0, _, _ := syscall.SyscallN(procGetKeyboardLayout.Addr(), uintptr(tid))\n\thkl = Handle(r0)\n\treturn\n}\n\nfunc GetShellWindow() (shellWindow HWND) {\n\tr0, _, _ := syscall.SyscallN(procGetShellWindow.Addr())\n\tshellWindow = HWND(r0)\n\treturn\n}\n\nfunc GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetWindowThreadProcessId.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(pid)))\n\ttid = uint32(r0)\n\tif tid == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc IsWindow(hwnd HWND) (isWindow bool) {\n\tr0, _, _ := syscall.SyscallN(procIsWindow.Addr(), uintptr(hwnd))\n\tisWindow = r0 != 0\n\treturn\n}\n\nfunc IsWindowUnicode(hwnd HWND) (isUnicode bool) {\n\tr0, _, _ := syscall.SyscallN(procIsWindowUnicode.Addr(), uintptr(hwnd))\n\tisUnicode = r0 != 0\n\treturn\n}\n\nfunc IsWindowVisible(hwnd HWND) (isVisible bool) {\n\tr0, _, _ := syscall.SyscallN(procIsWindowVisible.Addr(), uintptr(hwnd))\n\tisVisible = r0 != 0\n\treturn\n}\n\nfunc LoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLoadKeyboardLayoutW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(flags))\n\thkl = Handle(r0)\n\tif hkl == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procMessageBoxW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype))\n\tret = int32(r0)\n\tif ret == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) {\n\tr0, _, _ := syscall.SyscallN(procToUnicodeEx.Addr(), uintptr(vkey), uintptr(scancode), uintptr(unsafe.Pointer(keystate)), uintptr(unsafe.Pointer(pwszBuff)), uintptr(cchBuff), uintptr(flags), uintptr(hkl))\n\tret = int32(r0)\n\treturn\n}\n\nfunc UnloadKeyboardLayout(hkl Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procUnloadKeyboardLayout.Addr(), uintptr(hkl))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) {\n\tvar _p0 uint32\n\tif inheritExisting {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procCreateEnvironmentBlock.Addr(), uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DestroyEnvironmentBlock(block *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDestroyEnvironmentBlock.Addr(), uintptr(unsafe.Pointer(block)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetUserProfileDirectoryW.Addr(), uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(filename)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetFileVersionInfoSize(_p0, zeroHandle)\n}\n\nfunc _GetFileVersionInfoSize(filename *uint16, zeroHandle *Handle) (bufSize uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFileVersionInfoSizeW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(zeroHandle)))\n\tbufSize = uint32(r0)\n\tif bufSize == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(filename)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetFileVersionInfo(_p0, handle, bufSize, buffer)\n}\n\nfunc _GetFileVersionInfo(filename *uint16, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileVersionInfoW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(handle), uintptr(bufSize), uintptr(buffer))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(subBlock)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _VerQueryValue(block, _p0, pointerToBufferPointer, bufSize)\n}\n\nfunc _VerQueryValue(block unsafe.Pointer, subBlock *uint16, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVerQueryValueW.Addr(), uintptr(block), uintptr(unsafe.Pointer(subBlock)), uintptr(pointerToBufferPointer), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TimeBeginPeriod(period uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(proctimeBeginPeriod.Addr(), uintptr(period))\n\tif r1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TimeEndPeriod(period uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(proctimeEndPeriod.Addr(), uintptr(period))\n\tif r1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procWinVerifyTrustEx.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc FreeAddrInfoW(addrinfo *AddrinfoW) {\n\tsyscall.SyscallN(procFreeAddrInfoW.Addr(), uintptr(unsafe.Pointer(addrinfo)))\n\treturn\n}\n\nfunc GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {\n\tr0, _, _ := syscall.SyscallN(procGetAddrInfoW.Addr(), uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)))\n\tif r0 != 0 {\n\t\tsockerr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc WSACleanup() (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSACleanup.Addr())\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSADuplicateSocket(s Handle, processID uint32, info *WSAProtocolInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSADuplicateSocketW.Addr(), uintptr(s), uintptr(processID), uintptr(unsafe.Pointer(info)))\n\tif r1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procWSAEnumProtocolsW.Addr(), uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))\n\tn = int32(r0)\n\tif n == -1 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) {\n\tvar _p0 uint32\n\tif wait {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procWSAGetOverlappedResult.Addr(), uintptr(h), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(bytes)), uintptr(_p0), uintptr(unsafe.Pointer(flags)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSAIoctl.Addr(), uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSALookupServiceBeginW.Addr(), uintptr(unsafe.Pointer(querySet)), uintptr(flags), uintptr(unsafe.Pointer(handle)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSALookupServiceEnd(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSALookupServiceEnd.Addr(), uintptr(handle))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSALookupServiceNextW.Addr(), uintptr(handle), uintptr(flags), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(querySet)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSARecv.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSARecvFrom.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSASend.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSASendTo.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procWSASocketW.Addr(), uintptr(af), uintptr(typ), uintptr(protocol), uintptr(unsafe.Pointer(protoInfo)), uintptr(group), uintptr(flags))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAStartup(verreq uint32, data *WSAData) (sockerr error) {\n\tr0, _, _ := syscall.SyscallN(procWSAStartup.Addr(), uintptr(verreq), uintptr(unsafe.Pointer(data)))\n\tif r0 != 0 {\n\t\tsockerr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procbind.Addr(), uintptr(s), uintptr(name), uintptr(namelen))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Closesocket(s Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procclosesocket.Addr(), uintptr(s))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procconnect.Addr(), uintptr(s), uintptr(name), uintptr(namelen))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetHostByName(name string) (h *Hostent, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetHostByName(_p0)\n}\n\nfunc _GetHostByName(name *byte) (h *Hostent, err error) {\n\tr0, _, e1 := syscall.SyscallN(procgethostbyname.Addr(), uintptr(unsafe.Pointer(name)))\n\th = (*Hostent)(unsafe.Pointer(r0))\n\tif h == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procgetpeername.Addr(), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProtoByName(name string) (p *Protoent, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetProtoByName(_p0)\n}\n\nfunc _GetProtoByName(name *byte) (p *Protoent, err error) {\n\tr0, _, e1 := syscall.SyscallN(procgetprotobyname.Addr(), uintptr(unsafe.Pointer(name)))\n\tp = (*Protoent)(unsafe.Pointer(r0))\n\tif p == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetServByName(name string, proto string) (s *Servent, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = syscall.BytePtrFromString(proto)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetServByName(_p0, _p1)\n}\n\nfunc _GetServByName(name *byte, proto *byte) (s *Servent, err error) {\n\tr0, _, e1 := syscall.SyscallN(procgetservbyname.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)))\n\ts = (*Servent)(unsafe.Pointer(r0))\n\tif s == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procgetsockname.Addr(), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procgetsockopt.Addr(), uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc listen(s Handle, backlog int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(proclisten.Addr(), uintptr(s), uintptr(backlog))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Ntohs(netshort uint16) (u uint16) {\n\tr0, _, _ := syscall.SyscallN(procntohs.Addr(), uintptr(netshort))\n\tu = uint16(r0)\n\treturn\n}\n\nfunc recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := syscall.SyscallN(procrecvfrom.Addr(), uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int32(r0)\n\tif n == -1 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr1, _, e1 := syscall.SyscallN(procsendto.Addr(), uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(tolen))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procsetsockopt.Addr(), uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc shutdown(s Handle, how int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procshutdown.Addr(), uintptr(s), uintptr(how))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc socket(af int32, typ int32, protocol int32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procsocket.Addr(), uintptr(af), uintptr(typ), uintptr(protocol))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWTSEnumerateSessionsW.Addr(), uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WTSFreeMemory(ptr uintptr) {\n\tsyscall.SyscallN(procWTSFreeMemory.Addr(), uintptr(ptr))\n\treturn\n}\n\nfunc WTSQueryUserToken(session uint32, token *Token) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWTSQueryUserToken.Addr(), uintptr(session), uintptr(unsafe.Pointer(token)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/golang.org/x/text/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/golang.org/x/text/runes/cond.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage runes\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/transform\"\n)\n\n// Note: below we pass invalid UTF-8 to the tIn and tNotIn transformers as is.\n// This is done for various reasons:\n// - To retain the semantics of the Nop transformer: if input is passed to a Nop\n//   one would expect it to be unchanged.\n// - It would be very expensive to pass a converted RuneError to a transformer:\n//   a transformer might need more source bytes after RuneError, meaning that\n//   the only way to pass it safely is to create a new buffer and manage the\n//   intermingling of RuneErrors and normal input.\n// - Many transformers leave ill-formed UTF-8 as is, so this is not\n//   inconsistent. Generally ill-formed UTF-8 is only replaced if it is a\n//   logical consequence of the operation (as for Map) or if it otherwise would\n//   pose security concerns (as for Remove).\n// - An alternative would be to return an error on ill-formed UTF-8, but this\n//   would be inconsistent with other operations.\n\n// If returns a transformer that applies tIn to consecutive runes for which\n// s.Contains(r) and tNotIn to consecutive runes for which !s.Contains(r). Reset\n// is called on tIn and tNotIn at the start of each run. A Nop transformer will\n// substitute a nil value passed to tIn or tNotIn. Invalid UTF-8 is translated\n// to RuneError to determine which transformer to apply, but is passed as is to\n// the respective transformer.\nfunc If(s Set, tIn, tNotIn transform.Transformer) Transformer {\n\tif tIn == nil && tNotIn == nil {\n\t\treturn Transformer{transform.Nop}\n\t}\n\tif tIn == nil {\n\t\ttIn = transform.Nop\n\t}\n\tif tNotIn == nil {\n\t\ttNotIn = transform.Nop\n\t}\n\tsIn, ok := tIn.(transform.SpanningTransformer)\n\tif !ok {\n\t\tsIn = dummySpan{tIn}\n\t}\n\tsNotIn, ok := tNotIn.(transform.SpanningTransformer)\n\tif !ok {\n\t\tsNotIn = dummySpan{tNotIn}\n\t}\n\n\ta := &cond{\n\t\ttIn:    sIn,\n\t\ttNotIn: sNotIn,\n\t\tf:      s.Contains,\n\t}\n\ta.Reset()\n\treturn Transformer{a}\n}\n\ntype dummySpan struct{ transform.Transformer }\n\nfunc (d dummySpan) Span(src []byte, atEOF bool) (n int, err error) {\n\treturn 0, transform.ErrEndOfSpan\n}\n\ntype cond struct {\n\ttIn, tNotIn transform.SpanningTransformer\n\tf           func(rune) bool\n\tcheck       func(rune) bool               // current check to perform\n\tt           transform.SpanningTransformer // current transformer to use\n}\n\n// Reset implements transform.Transformer.\nfunc (t *cond) Reset() {\n\tt.check = t.is\n\tt.t = t.tIn\n\tt.t.Reset() // notIn will be reset on first usage.\n}\n\nfunc (t *cond) is(r rune) bool {\n\tif t.f(r) {\n\t\treturn true\n\t}\n\tt.check = t.isNot\n\tt.t = t.tNotIn\n\tt.tNotIn.Reset()\n\treturn false\n}\n\nfunc (t *cond) isNot(r rune) bool {\n\tif !t.f(r) {\n\t\treturn true\n\t}\n\tt.check = t.is\n\tt.t = t.tIn\n\tt.tIn.Reset()\n\treturn false\n}\n\n// This implementation of Span doesn't help all too much, but it needs to be\n// there to satisfy this package's Transformer interface.\n// TODO: there are certainly room for improvements, though. For example, if\n// t.t == transform.Nop (which will a common occurrence) it will save a bundle\n// to special-case that loop.\nfunc (t *cond) Span(src []byte, atEOF bool) (n int, err error) {\n\tp := 0\n\tfor n < len(src) && err == nil {\n\t\t// Don't process too much at a time as the Spanner that will be\n\t\t// called on this block may terminate early.\n\t\tconst maxChunk = 4096\n\t\tmax := len(src)\n\t\tif v := n + maxChunk; v < max {\n\t\t\tmax = v\n\t\t}\n\t\tatEnd := false\n\t\tsize := 0\n\t\tcurrent := t.t\n\t\tfor ; p < max; p += size {\n\t\t\tr := rune(src[p])\n\t\t\tif r < utf8.RuneSelf {\n\t\t\t\tsize = 1\n\t\t\t} else if r, size = utf8.DecodeRune(src[p:]); size == 1 {\n\t\t\t\tif !atEOF && !utf8.FullRune(src[p:]) {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !t.check(r) {\n\t\t\t\t// The next rune will be the start of a new run.\n\t\t\t\tatEnd = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tn2, err2 := current.Span(src[n:p], atEnd || (atEOF && p == len(src)))\n\t\tn += n2\n\t\tif err2 != nil {\n\t\t\treturn n, err2\n\t\t}\n\t\t// At this point either err != nil or t.check will pass for the rune at p.\n\t\tp = n + size\n\t}\n\treturn n, err\n}\n\nfunc (t *cond) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tp := 0\n\tfor nSrc < len(src) && err == nil {\n\t\t// Don't process too much at a time, as the work might be wasted if the\n\t\t// destination buffer isn't large enough to hold the result or a\n\t\t// transform returns an error early.\n\t\tconst maxChunk = 4096\n\t\tmax := len(src)\n\t\tif n := nSrc + maxChunk; n < len(src) {\n\t\t\tmax = n\n\t\t}\n\t\tatEnd := false\n\t\tsize := 0\n\t\tcurrent := t.t\n\t\tfor ; p < max; p += size {\n\t\t\tr := rune(src[p])\n\t\t\tif r < utf8.RuneSelf {\n\t\t\t\tsize = 1\n\t\t\t} else if r, size = utf8.DecodeRune(src[p:]); size == 1 {\n\t\t\t\tif !atEOF && !utf8.FullRune(src[p:]) {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !t.check(r) {\n\t\t\t\t// The next rune will be the start of a new run.\n\t\t\t\tatEnd = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tnDst2, nSrc2, err2 := current.Transform(dst[nDst:], src[nSrc:p], atEnd || (atEOF && p == len(src)))\n\t\tnDst += nDst2\n\t\tnSrc += nSrc2\n\t\tif err2 != nil {\n\t\t\treturn nDst, nSrc, err2\n\t\t}\n\t\t// At this point either err != nil or t.check will pass for the rune at p.\n\t\tp = nSrc + size\n\t}\n\treturn nDst, nSrc, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/runes/runes.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package runes provide transforms for UTF-8 encoded text.\npackage runes // import \"golang.org/x/text/runes\"\n\nimport (\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/transform\"\n)\n\n// A Set is a collection of runes.\ntype Set interface {\n\t// Contains returns true if r is contained in the set.\n\tContains(r rune) bool\n}\n\ntype setFunc func(rune) bool\n\nfunc (s setFunc) Contains(r rune) bool {\n\treturn s(r)\n}\n\n// Note: using funcs here instead of wrapping types result in cleaner\n// documentation and a smaller API.\n\n// In creates a Set with a Contains method that returns true for all runes in\n// the given RangeTable.\nfunc In(rt *unicode.RangeTable) Set {\n\treturn setFunc(func(r rune) bool { return unicode.Is(rt, r) })\n}\n\n// NotIn creates a Set with a Contains method that returns true for all runes not\n// in the given RangeTable.\nfunc NotIn(rt *unicode.RangeTable) Set {\n\treturn setFunc(func(r rune) bool { return !unicode.Is(rt, r) })\n}\n\n// Predicate creates a Set with a Contains method that returns f(r).\nfunc Predicate(f func(rune) bool) Set {\n\treturn setFunc(f)\n}\n\n// Transformer implements the transform.Transformer interface.\ntype Transformer struct {\n\tt transform.SpanningTransformer\n}\n\nfunc (t Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\treturn t.t.Transform(dst, src, atEOF)\n}\n\nfunc (t Transformer) Span(b []byte, atEOF bool) (n int, err error) {\n\treturn t.t.Span(b, atEOF)\n}\n\nfunc (t Transformer) Reset() { t.t.Reset() }\n\n// Bytes returns a new byte slice with the result of converting b using t.  It\n// calls Reset on t. It returns nil if any error was found. This can only happen\n// if an error-producing Transformer is passed to If.\nfunc (t Transformer) Bytes(b []byte) []byte {\n\tb, _, err := transform.Bytes(t, b)\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn b\n}\n\n// String returns a string with the result of converting s using t. It calls\n// Reset on t. It returns the empty string if any error was found. This can only\n// happen if an error-producing Transformer is passed to If.\nfunc (t Transformer) String(s string) string {\n\ts, _, err := transform.String(t, s)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\treturn s\n}\n\n// TODO:\n// - Copy: copying strings and bytes in whole-rune units.\n// - Validation (maybe)\n// - Well-formed-ness (maybe)\n\nconst runeErrorString = string(utf8.RuneError)\n\n// Remove returns a Transformer that removes runes r for which s.Contains(r).\n// Illegal input bytes are replaced by RuneError before being passed to f.\nfunc Remove(s Set) Transformer {\n\tif f, ok := s.(setFunc); ok {\n\t\t// This little trick cuts the running time of BenchmarkRemove for sets\n\t\t// created by Predicate roughly in half.\n\t\t// TODO: special-case RangeTables as well.\n\t\treturn Transformer{remove(f)}\n\t}\n\treturn Transformer{remove(s.Contains)}\n}\n\n// TODO: remove transform.RemoveFunc.\n\ntype remove func(r rune) bool\n\nfunc (remove) Reset() {}\n\n// Span implements transform.Spanner.\nfunc (t remove) Span(src []byte, atEOF bool) (n int, err error) {\n\tfor r, size := rune(0), 0; n < len(src); {\n\t\tif r = rune(src[n]); r < utf8.RuneSelf {\n\t\t\tsize = 1\n\t\t} else if r, size = utf8.DecodeRune(src[n:]); size == 1 {\n\t\t\t// Invalid rune.\n\t\t\tif !atEOF && !utf8.FullRune(src[n:]) {\n\t\t\t\terr = transform.ErrShortSrc\n\t\t\t} else {\n\t\t\t\terr = transform.ErrEndOfSpan\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tif t(r) {\n\t\t\terr = transform.ErrEndOfSpan\n\t\t\tbreak\n\t\t}\n\t\tn += size\n\t}\n\treturn\n}\n\n// Transform implements transform.Transformer.\nfunc (t remove) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tfor r, size := rune(0), 0; nSrc < len(src); {\n\t\tif r = rune(src[nSrc]); r < utf8.RuneSelf {\n\t\t\tsize = 1\n\t\t} else if r, size = utf8.DecodeRune(src[nSrc:]); size == 1 {\n\t\t\t// Invalid rune.\n\t\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// We replace illegal bytes with RuneError. Not doing so might\n\t\t\t// otherwise turn a sequence of invalid UTF-8 into valid UTF-8.\n\t\t\t// The resulting byte sequence may subsequently contain runes\n\t\t\t// for which t(r) is true that were passed unnoticed.\n\t\t\tif !t(utf8.RuneError) {\n\t\t\t\tif nDst+3 > len(dst) {\n\t\t\t\t\terr = transform.ErrShortDst\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdst[nDst+0] = runeErrorString[0]\n\t\t\t\tdst[nDst+1] = runeErrorString[1]\n\t\t\t\tdst[nDst+2] = runeErrorString[2]\n\t\t\t\tnDst += 3\n\t\t\t}\n\t\t\tnSrc++\n\t\t\tcontinue\n\t\t}\n\t\tif t(r) {\n\t\t\tnSrc += size\n\t\t\tcontinue\n\t\t}\n\t\tif nDst+size > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tfor i := 0; i < size; i++ {\n\t\t\tdst[nDst] = src[nSrc]\n\t\t\tnDst++\n\t\t\tnSrc++\n\t\t}\n\t}\n\treturn\n}\n\n// Map returns a Transformer that maps the runes in the input using the given\n// mapping. Illegal bytes in the input are converted to utf8.RuneError before\n// being passed to the mapping func.\nfunc Map(mapping func(rune) rune) Transformer {\n\treturn Transformer{mapper(mapping)}\n}\n\ntype mapper func(rune) rune\n\nfunc (mapper) Reset() {}\n\n// Span implements transform.Spanner.\nfunc (t mapper) Span(src []byte, atEOF bool) (n int, err error) {\n\tfor r, size := rune(0), 0; n < len(src); n += size {\n\t\tif r = rune(src[n]); r < utf8.RuneSelf {\n\t\t\tsize = 1\n\t\t} else if r, size = utf8.DecodeRune(src[n:]); size == 1 {\n\t\t\t// Invalid rune.\n\t\t\tif !atEOF && !utf8.FullRune(src[n:]) {\n\t\t\t\terr = transform.ErrShortSrc\n\t\t\t} else {\n\t\t\t\terr = transform.ErrEndOfSpan\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tif t(r) != r {\n\t\t\terr = transform.ErrEndOfSpan\n\t\t\tbreak\n\t\t}\n\t}\n\treturn n, err\n}\n\n// Transform implements transform.Transformer.\nfunc (t mapper) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tvar replacement rune\n\tvar b [utf8.UTFMax]byte\n\n\tfor r, size := rune(0), 0; nSrc < len(src); {\n\t\tif r = rune(src[nSrc]); r < utf8.RuneSelf {\n\t\t\tif replacement = t(r); replacement < utf8.RuneSelf {\n\t\t\t\tif nDst == len(dst) {\n\t\t\t\t\terr = transform.ErrShortDst\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdst[nDst] = byte(replacement)\n\t\t\t\tnDst++\n\t\t\t\tnSrc++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tsize = 1\n\t\t} else if r, size = utf8.DecodeRune(src[nSrc:]); size == 1 {\n\t\t\t// Invalid rune.\n\t\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif replacement = t(utf8.RuneError); replacement == utf8.RuneError {\n\t\t\t\tif nDst+3 > len(dst) {\n\t\t\t\t\terr = transform.ErrShortDst\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdst[nDst+0] = runeErrorString[0]\n\t\t\t\tdst[nDst+1] = runeErrorString[1]\n\t\t\t\tdst[nDst+2] = runeErrorString[2]\n\t\t\t\tnDst += 3\n\t\t\t\tnSrc++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else if replacement = t(r); replacement == r {\n\t\t\tif nDst+size > len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tfor i := 0; i < size; i++ {\n\t\t\t\tdst[nDst] = src[nSrc]\n\t\t\t\tnDst++\n\t\t\t\tnSrc++\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tn := utf8.EncodeRune(b[:], replacement)\n\n\t\tif nDst+n > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tfor i := 0; i < n; i++ {\n\t\t\tdst[nDst] = b[i]\n\t\t\tnDst++\n\t\t}\n\t\tnSrc += size\n\t}\n\treturn\n}\n\n// ReplaceIllFormed returns a transformer that replaces all input bytes that are\n// not part of a well-formed UTF-8 code sequence with utf8.RuneError.\nfunc ReplaceIllFormed() Transformer {\n\treturn Transformer{&replaceIllFormed{}}\n}\n\ntype replaceIllFormed struct{ transform.NopResetter }\n\nfunc (t replaceIllFormed) Span(src []byte, atEOF bool) (n int, err error) {\n\tfor n < len(src) {\n\t\t// ASCII fast path.\n\t\tif src[n] < utf8.RuneSelf {\n\t\t\tn++\n\t\t\tcontinue\n\t\t}\n\n\t\tr, size := utf8.DecodeRune(src[n:])\n\n\t\t// Look for a valid non-ASCII rune.\n\t\tif r != utf8.RuneError || size != 1 {\n\t\t\tn += size\n\t\t\tcontinue\n\t\t}\n\n\t\t// Look for short source data.\n\t\tif !atEOF && !utf8.FullRune(src[n:]) {\n\t\t\terr = transform.ErrShortSrc\n\t\t\tbreak\n\t\t}\n\n\t\t// We have an invalid rune.\n\t\terr = transform.ErrEndOfSpan\n\t\tbreak\n\t}\n\treturn n, err\n}\n\nfunc (t replaceIllFormed) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tfor nSrc < len(src) {\n\t\t// ASCII fast path.\n\t\tif r := src[nSrc]; r < utf8.RuneSelf {\n\t\t\tif nDst == len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdst[nDst] = r\n\t\t\tnDst++\n\t\t\tnSrc++\n\t\t\tcontinue\n\t\t}\n\n\t\t// Look for a valid non-ASCII rune.\n\t\tif _, size := utf8.DecodeRune(src[nSrc:]); size != 1 {\n\t\t\tif size != copy(dst[nDst:], src[nSrc:nSrc+size]) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tnDst += size\n\t\t\tnSrc += size\n\t\t\tcontinue\n\t\t}\n\n\t\t// Look for short source data.\n\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\terr = transform.ErrShortSrc\n\t\t\tbreak\n\t\t}\n\n\t\t// We have an invalid rune.\n\t\tif nDst+3 > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tdst[nDst+0] = runeErrorString[0]\n\t\tdst[nDst+1] = runeErrorString[1]\n\t\tdst[nDst+2] = runeErrorString[2]\n\t\tnDst += 3\n\t\tnSrc++\n\t}\n\treturn nDst, nSrc, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/secure/bidirule/bidirule.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package bidirule implements the Bidi Rule defined by RFC 5893.\n//\n// This package is under development. The API may change without notice and\n// without preserving backward compatibility.\npackage bidirule\n\nimport (\n\t\"errors\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/transform\"\n\t\"golang.org/x/text/unicode/bidi\"\n)\n\n// This file contains an implementation of RFC 5893: Right-to-Left Scripts for\n// Internationalized Domain Names for Applications (IDNA)\n//\n// A label is an individual component of a domain name.  Labels are usually\n// shown separated by dots; for example, the domain name \"www.example.com\" is\n// composed of three labels: \"www\", \"example\", and \"com\".\n//\n// An RTL label is a label that contains at least one character of class R, AL,\n// or AN. An LTR label is any label that is not an RTL label.\n//\n// A \"Bidi domain name\" is a domain name that contains at least one RTL label.\n//\n//  The following guarantees can be made based on the above:\n//\n//  o  In a domain name consisting of only labels that satisfy the rule,\n//     the requirements of Section 3 are satisfied.  Note that even LTR\n//     labels and pure ASCII labels have to be tested.\n//\n//  o  In a domain name consisting of only LDH labels (as defined in the\n//     Definitions document [RFC5890]) and labels that satisfy the rule,\n//     the requirements of Section 3 are satisfied as long as a label\n//     that starts with an ASCII digit does not come after a\n//     right-to-left label.\n//\n//  No guarantee is given for other combinations.\n\n// ErrInvalid indicates a label is invalid according to the Bidi Rule.\nvar ErrInvalid = errors.New(\"bidirule: failed Bidi Rule\")\n\ntype ruleState uint8\n\nconst (\n\truleInitial ruleState = iota\n\truleLTR\n\truleLTRFinal\n\truleRTL\n\truleRTLFinal\n\truleInvalid\n)\n\ntype ruleTransition struct {\n\tnext ruleState\n\tmask uint16\n}\n\nvar transitions = [...][2]ruleTransition{\n\t// [2.1] The first character must be a character with Bidi property L, R, or\n\t// AL. If it has the R or AL property, it is an RTL label; if it has the L\n\t// property, it is an LTR label.\n\truleInitial: {\n\t\t{ruleLTRFinal, 1 << bidi.L},\n\t\t{ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL},\n\t},\n\truleRTL: {\n\t\t// [2.3] In an RTL label, the end of the label must be a character with\n\t\t// Bidi property R, AL, EN, or AN, followed by zero or more characters\n\t\t// with Bidi property NSM.\n\t\t{ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL | 1<<bidi.EN | 1<<bidi.AN},\n\n\t\t// [2.2] In an RTL label, only characters with the Bidi properties R,\n\t\t// AL, AN, EN, ES, CS, ET, ON, BN, or NSM are allowed.\n\t\t// We exclude the entries from [2.3]\n\t\t{ruleRTL, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN | 1<<bidi.NSM},\n\t},\n\truleRTLFinal: {\n\t\t// [2.3] In an RTL label, the end of the label must be a character with\n\t\t// Bidi property R, AL, EN, or AN, followed by zero or more characters\n\t\t// with Bidi property NSM.\n\t\t{ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL | 1<<bidi.EN | 1<<bidi.AN | 1<<bidi.NSM},\n\n\t\t// [2.2] In an RTL label, only characters with the Bidi properties R,\n\t\t// AL, AN, EN, ES, CS, ET, ON, BN, or NSM are allowed.\n\t\t// We exclude the entries from [2.3] and NSM.\n\t\t{ruleRTL, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN},\n\t},\n\truleLTR: {\n\t\t// [2.6] In an LTR label, the end of the label must be a character with\n\t\t// Bidi property L or EN, followed by zero or more characters with Bidi\n\t\t// property NSM.\n\t\t{ruleLTRFinal, 1<<bidi.L | 1<<bidi.EN},\n\n\t\t// [2.5] In an LTR label, only characters with the Bidi properties L,\n\t\t// EN, ES, CS, ET, ON, BN, or NSM are allowed.\n\t\t// We exclude the entries from [2.6].\n\t\t{ruleLTR, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN | 1<<bidi.NSM},\n\t},\n\truleLTRFinal: {\n\t\t// [2.6] In an LTR label, the end of the label must be a character with\n\t\t// Bidi property L or EN, followed by zero or more characters with Bidi\n\t\t// property NSM.\n\t\t{ruleLTRFinal, 1<<bidi.L | 1<<bidi.EN | 1<<bidi.NSM},\n\n\t\t// [2.5] In an LTR label, only characters with the Bidi properties L,\n\t\t// EN, ES, CS, ET, ON, BN, or NSM are allowed.\n\t\t// We exclude the entries from [2.6].\n\t\t{ruleLTR, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN},\n\t},\n\truleInvalid: {\n\t\t{ruleInvalid, 0},\n\t\t{ruleInvalid, 0},\n\t},\n}\n\n// [2.4] In an RTL label, if an EN is present, no AN may be present, and\n// vice versa.\nconst exclusiveRTL = uint16(1<<bidi.EN | 1<<bidi.AN)\n\n// From RFC 5893\n// An RTL label is a label that contains at least one character of type\n// R, AL, or AN.\n//\n// An LTR label is any label that is not an RTL label.\n\n// Direction reports the direction of the given label as defined by RFC 5893.\n// The Bidi Rule does not have to be applied to labels of the category\n// LeftToRight.\nfunc Direction(b []byte) bidi.Direction {\n\tfor i := 0; i < len(b); {\n\t\te, sz := bidi.Lookup(b[i:])\n\t\tif sz == 0 {\n\t\t\ti++\n\t\t}\n\t\tc := e.Class()\n\t\tif c == bidi.R || c == bidi.AL || c == bidi.AN {\n\t\t\treturn bidi.RightToLeft\n\t\t}\n\t\ti += sz\n\t}\n\treturn bidi.LeftToRight\n}\n\n// DirectionString reports the direction of the given label as defined by RFC\n// 5893. The Bidi Rule does not have to be applied to labels of the category\n// LeftToRight.\nfunc DirectionString(s string) bidi.Direction {\n\tfor i := 0; i < len(s); {\n\t\te, sz := bidi.LookupString(s[i:])\n\t\tif sz == 0 {\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\t\tc := e.Class()\n\t\tif c == bidi.R || c == bidi.AL || c == bidi.AN {\n\t\t\treturn bidi.RightToLeft\n\t\t}\n\t\ti += sz\n\t}\n\treturn bidi.LeftToRight\n}\n\n// Valid reports whether b conforms to the BiDi rule.\nfunc Valid(b []byte) bool {\n\tvar t Transformer\n\tif n, ok := t.advance(b); !ok || n < len(b) {\n\t\treturn false\n\t}\n\treturn t.isFinal()\n}\n\n// ValidString reports whether s conforms to the BiDi rule.\nfunc ValidString(s string) bool {\n\tvar t Transformer\n\tif n, ok := t.advanceString(s); !ok || n < len(s) {\n\t\treturn false\n\t}\n\treturn t.isFinal()\n}\n\n// New returns a Transformer that verifies that input adheres to the Bidi Rule.\nfunc New() *Transformer {\n\treturn &Transformer{}\n}\n\n// Transformer implements transform.Transform.\ntype Transformer struct {\n\tstate  ruleState\n\thasRTL bool\n\tseen   uint16\n}\n\n// A rule can only be violated for \"Bidi Domain names\", meaning if one of the\n// following categories has been observed.\nfunc (t *Transformer) isRTL() bool {\n\tconst isRTL = 1<<bidi.R | 1<<bidi.AL | 1<<bidi.AN\n\treturn t.seen&isRTL != 0\n}\n\n// Reset implements transform.Transformer.\nfunc (t *Transformer) Reset() { *t = Transformer{} }\n\n// Transform implements transform.Transformer. This Transformer has state and\n// needs to be reset between uses.\nfunc (t *Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tif len(dst) < len(src) {\n\t\tsrc = src[:len(dst)]\n\t\tatEOF = false\n\t\terr = transform.ErrShortDst\n\t}\n\tn, err1 := t.Span(src, atEOF)\n\tcopy(dst, src[:n])\n\tif err == nil || err1 != nil && err1 != transform.ErrShortSrc {\n\t\terr = err1\n\t}\n\treturn n, n, err\n}\n\n// Span returns the first n bytes of src that conform to the Bidi rule.\nfunc (t *Transformer) Span(src []byte, atEOF bool) (n int, err error) {\n\tif t.state == ruleInvalid && t.isRTL() {\n\t\treturn 0, ErrInvalid\n\t}\n\tn, ok := t.advance(src)\n\tswitch {\n\tcase !ok:\n\t\terr = ErrInvalid\n\tcase n < len(src):\n\t\tif !atEOF {\n\t\t\terr = transform.ErrShortSrc\n\t\t\tbreak\n\t\t}\n\t\terr = ErrInvalid\n\tcase !t.isFinal():\n\t\terr = ErrInvalid\n\t}\n\treturn n, err\n}\n\n// Precomputing the ASCII values decreases running time for the ASCII fast path\n// by about 30%.\nvar asciiTable [128]bidi.Properties\n\nfunc init() {\n\tfor i := range asciiTable {\n\t\tp, _ := bidi.LookupRune(rune(i))\n\t\tasciiTable[i] = p\n\t}\n}\n\nfunc (t *Transformer) advance(s []byte) (n int, ok bool) {\n\tvar e bidi.Properties\n\tvar sz int\n\tfor n < len(s) {\n\t\tif s[n] < utf8.RuneSelf {\n\t\t\te, sz = asciiTable[s[n]], 1\n\t\t} else {\n\t\t\te, sz = bidi.Lookup(s[n:])\n\t\t\tif sz <= 1 {\n\t\t\t\tif sz == 1 {\n\t\t\t\t\t// We always consider invalid UTF-8 to be invalid, even if\n\t\t\t\t\t// the string has not yet been determined to be RTL.\n\t\t\t\t\t// TODO: is this correct?\n\t\t\t\t\treturn n, false\n\t\t\t\t}\n\t\t\t\treturn n, true // incomplete UTF-8 encoding\n\t\t\t}\n\t\t}\n\t\t// TODO: using CompactClass would result in noticeable speedup.\n\t\t// See unicode/bidi/prop.go:Properties.CompactClass.\n\t\tc := uint16(1 << e.Class())\n\t\tt.seen |= c\n\t\tif t.seen&exclusiveRTL == exclusiveRTL {\n\t\t\tt.state = ruleInvalid\n\t\t\treturn n, false\n\t\t}\n\t\tswitch tr := transitions[t.state]; {\n\t\tcase tr[0].mask&c != 0:\n\t\t\tt.state = tr[0].next\n\t\tcase tr[1].mask&c != 0:\n\t\t\tt.state = tr[1].next\n\t\tdefault:\n\t\t\tt.state = ruleInvalid\n\t\t\tif t.isRTL() {\n\t\t\t\treturn n, false\n\t\t\t}\n\t\t}\n\t\tn += sz\n\t}\n\treturn n, true\n}\n\nfunc (t *Transformer) advanceString(s string) (n int, ok bool) {\n\tvar e bidi.Properties\n\tvar sz int\n\tfor n < len(s) {\n\t\tif s[n] < utf8.RuneSelf {\n\t\t\te, sz = asciiTable[s[n]], 1\n\t\t} else {\n\t\t\te, sz = bidi.LookupString(s[n:])\n\t\t\tif sz <= 1 {\n\t\t\t\tif sz == 1 {\n\t\t\t\t\treturn n, false // invalid UTF-8\n\t\t\t\t}\n\t\t\t\treturn n, true // incomplete UTF-8 encoding\n\t\t\t}\n\t\t}\n\t\t// TODO: using CompactClass results in noticeable speedup.\n\t\t// See unicode/bidi/prop.go:Properties.CompactClass.\n\t\tc := uint16(1 << e.Class())\n\t\tt.seen |= c\n\t\tif t.seen&exclusiveRTL == exclusiveRTL {\n\t\t\tt.state = ruleInvalid\n\t\t\treturn n, false\n\t\t}\n\t\tswitch tr := transitions[t.state]; {\n\t\tcase tr[0].mask&c != 0:\n\t\t\tt.state = tr[0].next\n\t\tcase tr[1].mask&c != 0:\n\t\t\tt.state = tr[1].next\n\t\tdefault:\n\t\t\tt.state = ruleInvalid\n\t\t\tif t.isRTL() {\n\t\t\t\treturn n, false\n\t\t\t}\n\t\t}\n\t\tn += sz\n\t}\n\treturn n, true\n}\n\nfunc (t *Transformer) isFinal() bool {\n\treturn t.state == ruleLTRFinal || t.state == ruleRTLFinal || t.state == ruleInitial\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/transform/transform.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package transform provides reader and writer wrappers that transform the\n// bytes passing through as well as various transformations. Example\n// transformations provided by other packages include normalization and\n// conversion between character sets.\npackage transform // import \"golang.org/x/text/transform\"\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"unicode/utf8\"\n)\n\nvar (\n\t// ErrShortDst means that the destination buffer was too short to\n\t// receive all of the transformed bytes.\n\tErrShortDst = errors.New(\"transform: short destination buffer\")\n\n\t// ErrShortSrc means that the source buffer has insufficient data to\n\t// complete the transformation.\n\tErrShortSrc = errors.New(\"transform: short source buffer\")\n\n\t// ErrEndOfSpan means that the input and output (the transformed input)\n\t// are not identical.\n\tErrEndOfSpan = errors.New(\"transform: input and output are not identical\")\n\n\t// errInconsistentByteCount means that Transform returned success (nil\n\t// error) but also returned nSrc inconsistent with the src argument.\n\terrInconsistentByteCount = errors.New(\"transform: inconsistent byte count returned\")\n\n\t// errShortInternal means that an internal buffer is not large enough\n\t// to make progress and the Transform operation must be aborted.\n\terrShortInternal = errors.New(\"transform: short internal buffer\")\n)\n\n// Transformer transforms bytes.\ntype Transformer interface {\n\t// Transform writes to dst the transformed bytes read from src, and\n\t// returns the number of dst bytes written and src bytes read. The\n\t// atEOF argument tells whether src represents the last bytes of the\n\t// input.\n\t//\n\t// Callers should always process the nDst bytes produced and account\n\t// for the nSrc bytes consumed before considering the error err.\n\t//\n\t// A nil error means that all of the transformed bytes (whether freshly\n\t// transformed from src or left over from previous Transform calls)\n\t// were written to dst. A nil error can be returned regardless of\n\t// whether atEOF is true. If err is nil then nSrc must equal len(src);\n\t// the converse is not necessarily true.\n\t//\n\t// ErrShortDst means that dst was too short to receive all of the\n\t// transformed bytes. ErrShortSrc means that src had insufficient data\n\t// to complete the transformation. If both conditions apply, then\n\t// either error may be returned. Other than the error conditions listed\n\t// here, implementations are free to report other errors that arise.\n\tTransform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error)\n\n\t// Reset resets the state and allows a Transformer to be reused.\n\tReset()\n}\n\n// SpanningTransformer extends the Transformer interface with a Span method\n// that determines how much of the input already conforms to the Transformer.\ntype SpanningTransformer interface {\n\tTransformer\n\n\t// Span returns a position in src such that transforming src[:n] results in\n\t// identical output src[:n] for these bytes. It does not necessarily return\n\t// the largest such n. The atEOF argument tells whether src represents the\n\t// last bytes of the input.\n\t//\n\t// Callers should always account for the n bytes consumed before\n\t// considering the error err.\n\t//\n\t// A nil error means that all input bytes are known to be identical to the\n\t// output produced by the Transformer. A nil error can be returned\n\t// regardless of whether atEOF is true. If err is nil, then n must\n\t// equal len(src); the converse is not necessarily true.\n\t//\n\t// ErrEndOfSpan means that the Transformer output may differ from the\n\t// input after n bytes. Note that n may be len(src), meaning that the output\n\t// would contain additional bytes after otherwise identical output.\n\t// ErrShortSrc means that src had insufficient data to determine whether the\n\t// remaining bytes would change. Other than the error conditions listed\n\t// here, implementations are free to report other errors that arise.\n\t//\n\t// Calling Span can modify the Transformer state as a side effect. In\n\t// effect, it does the transformation just as calling Transform would, only\n\t// without copying to a destination buffer and only up to a point it can\n\t// determine the input and output bytes are the same. This is obviously more\n\t// limited than calling Transform, but can be more efficient in terms of\n\t// copying and allocating buffers. Calls to Span and Transform may be\n\t// interleaved.\n\tSpan(src []byte, atEOF bool) (n int, err error)\n}\n\n// NopResetter can be embedded by implementations of Transformer to add a nop\n// Reset method.\ntype NopResetter struct{}\n\n// Reset implements the Reset method of the Transformer interface.\nfunc (NopResetter) Reset() {}\n\n// Reader wraps another io.Reader by transforming the bytes read.\ntype Reader struct {\n\tr   io.Reader\n\tt   Transformer\n\terr error\n\n\t// dst[dst0:dst1] contains bytes that have been transformed by t but\n\t// not yet copied out via Read.\n\tdst        []byte\n\tdst0, dst1 int\n\n\t// src[src0:src1] contains bytes that have been read from r but not\n\t// yet transformed through t.\n\tsrc        []byte\n\tsrc0, src1 int\n\n\t// transformComplete is whether the transformation is complete,\n\t// regardless of whether or not it was successful.\n\ttransformComplete bool\n}\n\nconst defaultBufSize = 4096\n\n// NewReader returns a new Reader that wraps r by transforming the bytes read\n// via t. It calls Reset on t.\nfunc NewReader(r io.Reader, t Transformer) *Reader {\n\tt.Reset()\n\treturn &Reader{\n\t\tr:   r,\n\t\tt:   t,\n\t\tdst: make([]byte, defaultBufSize),\n\t\tsrc: make([]byte, defaultBufSize),\n\t}\n}\n\n// Read implements the io.Reader interface.\nfunc (r *Reader) Read(p []byte) (int, error) {\n\tn, err := 0, error(nil)\n\tfor {\n\t\t// Copy out any transformed bytes and return the final error if we are done.\n\t\tif r.dst0 != r.dst1 {\n\t\t\tn = copy(p, r.dst[r.dst0:r.dst1])\n\t\t\tr.dst0 += n\n\t\t\tif r.dst0 == r.dst1 && r.transformComplete {\n\t\t\t\treturn n, r.err\n\t\t\t}\n\t\t\treturn n, nil\n\t\t} else if r.transformComplete {\n\t\t\treturn 0, r.err\n\t\t}\n\n\t\t// Try to transform some source bytes, or to flush the transformer if we\n\t\t// are out of source bytes. We do this even if r.r.Read returned an error.\n\t\t// As the io.Reader documentation says, \"process the n > 0 bytes returned\n\t\t// before considering the error\".\n\t\tif r.src0 != r.src1 || r.err != nil {\n\t\t\tr.dst0 = 0\n\t\t\tr.dst1, n, err = r.t.Transform(r.dst, r.src[r.src0:r.src1], r.err == io.EOF)\n\t\t\tr.src0 += n\n\n\t\t\tswitch {\n\t\t\tcase err == nil:\n\t\t\t\tif r.src0 != r.src1 {\n\t\t\t\t\tr.err = errInconsistentByteCount\n\t\t\t\t}\n\t\t\t\t// The Transform call was successful; we are complete if we\n\t\t\t\t// cannot read more bytes into src.\n\t\t\t\tr.transformComplete = r.err != nil\n\t\t\t\tcontinue\n\t\t\tcase err == ErrShortDst && (r.dst1 != 0 || n != 0):\n\t\t\t\t// Make room in dst by copying out, and try again.\n\t\t\t\tcontinue\n\t\t\tcase err == ErrShortSrc && r.src1-r.src0 != len(r.src) && r.err == nil:\n\t\t\t\t// Read more bytes into src via the code below, and try again.\n\t\t\tdefault:\n\t\t\t\tr.transformComplete = true\n\t\t\t\t// The reader error (r.err) takes precedence over the\n\t\t\t\t// transformer error (err) unless r.err is nil or io.EOF.\n\t\t\t\tif r.err == nil || r.err == io.EOF {\n\t\t\t\t\tr.err = err\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// Move any untransformed source bytes to the start of the buffer\n\t\t// and read more bytes.\n\t\tif r.src0 != 0 {\n\t\t\tr.src0, r.src1 = 0, copy(r.src, r.src[r.src0:r.src1])\n\t\t}\n\t\tn, r.err = r.r.Read(r.src[r.src1:])\n\t\tr.src1 += n\n\t}\n}\n\n// TODO: implement ReadByte (and ReadRune??).\n\n// Writer wraps another io.Writer by transforming the bytes read.\n// The user needs to call Close to flush unwritten bytes that may\n// be buffered.\ntype Writer struct {\n\tw   io.Writer\n\tt   Transformer\n\tdst []byte\n\n\t// src[:n] contains bytes that have not yet passed through t.\n\tsrc []byte\n\tn   int\n}\n\n// NewWriter returns a new Writer that wraps w by transforming the bytes written\n// via t. It calls Reset on t.\nfunc NewWriter(w io.Writer, t Transformer) *Writer {\n\tt.Reset()\n\treturn &Writer{\n\t\tw:   w,\n\t\tt:   t,\n\t\tdst: make([]byte, defaultBufSize),\n\t\tsrc: make([]byte, defaultBufSize),\n\t}\n}\n\n// Write implements the io.Writer interface. If there are not enough\n// bytes available to complete a Transform, the bytes will be buffered\n// for the next write. Call Close to convert the remaining bytes.\nfunc (w *Writer) Write(data []byte) (n int, err error) {\n\tsrc := data\n\tif w.n > 0 {\n\t\t// Append bytes from data to the last remainder.\n\t\t// TODO: limit the amount copied on first try.\n\t\tn = copy(w.src[w.n:], data)\n\t\tw.n += n\n\t\tsrc = w.src[:w.n]\n\t}\n\tfor {\n\t\tnDst, nSrc, err := w.t.Transform(w.dst, src, false)\n\t\tif _, werr := w.w.Write(w.dst[:nDst]); werr != nil {\n\t\t\treturn n, werr\n\t\t}\n\t\tsrc = src[nSrc:]\n\t\tif w.n == 0 {\n\t\t\tn += nSrc\n\t\t} else if len(src) <= n {\n\t\t\t// Enough bytes from w.src have been consumed. We make src point\n\t\t\t// to data instead to reduce the copying.\n\t\t\tw.n = 0\n\t\t\tn -= len(src)\n\t\t\tsrc = data[n:]\n\t\t\tif n < len(data) && (err == nil || err == ErrShortSrc) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tswitch err {\n\t\tcase ErrShortDst:\n\t\t\t// This error is okay as long as we are making progress.\n\t\t\tif nDst > 0 || nSrc > 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase ErrShortSrc:\n\t\t\tif len(src) < len(w.src) {\n\t\t\t\tm := copy(w.src, src)\n\t\t\t\t// If w.n > 0, bytes from data were already copied to w.src and n\n\t\t\t\t// was already set to the number of bytes consumed.\n\t\t\t\tif w.n == 0 {\n\t\t\t\t\tn += m\n\t\t\t\t}\n\t\t\t\tw.n = m\n\t\t\t\terr = nil\n\t\t\t} else if nDst > 0 || nSrc > 0 {\n\t\t\t\t// Not enough buffer to store the remainder. Keep processing as\n\t\t\t\t// long as there is progress. Without this case, transforms that\n\t\t\t\t// require a lookahead larger than the buffer may result in an\n\t\t\t\t// error. This is not something one may expect to be common in\n\t\t\t\t// practice, but it may occur when buffers are set to small\n\t\t\t\t// sizes during testing.\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase nil:\n\t\t\tif w.n > 0 {\n\t\t\t\terr = errInconsistentByteCount\n\t\t\t}\n\t\t}\n\t\treturn n, err\n\t}\n}\n\n// Close implements the io.Closer interface.\nfunc (w *Writer) Close() error {\n\tsrc := w.src[:w.n]\n\tfor {\n\t\tnDst, nSrc, err := w.t.Transform(w.dst, src, true)\n\t\tif _, werr := w.w.Write(w.dst[:nDst]); werr != nil {\n\t\t\treturn werr\n\t\t}\n\t\tif err != ErrShortDst {\n\t\t\treturn err\n\t\t}\n\t\tsrc = src[nSrc:]\n\t}\n}\n\ntype nop struct{ NopResetter }\n\nfunc (nop) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tn := copy(dst, src)\n\tif n < len(src) {\n\t\terr = ErrShortDst\n\t}\n\treturn n, n, err\n}\n\nfunc (nop) Span(src []byte, atEOF bool) (n int, err error) {\n\treturn len(src), nil\n}\n\ntype discard struct{ NopResetter }\n\nfunc (discard) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\treturn 0, len(src), nil\n}\n\nvar (\n\t// Discard is a Transformer for which all Transform calls succeed\n\t// by consuming all bytes and writing nothing.\n\tDiscard Transformer = discard{}\n\n\t// Nop is a SpanningTransformer that copies src to dst.\n\tNop SpanningTransformer = nop{}\n)\n\n// chain is a sequence of links. A chain with N Transformers has N+1 links and\n// N+1 buffers. Of those N+1 buffers, the first and last are the src and dst\n// buffers given to chain.Transform and the middle N-1 buffers are intermediate\n// buffers owned by the chain. The i'th link transforms bytes from the i'th\n// buffer chain.link[i].b at read offset chain.link[i].p to the i+1'th buffer\n// chain.link[i+1].b at write offset chain.link[i+1].n, for i in [0, N).\ntype chain struct {\n\tlink []link\n\terr  error\n\t// errStart is the index at which the error occurred plus 1. Processing\n\t// errStart at this level at the next call to Transform. As long as\n\t// errStart > 0, chain will not consume any more source bytes.\n\terrStart int\n}\n\nfunc (c *chain) fatalError(errIndex int, err error) {\n\tif i := errIndex + 1; i > c.errStart {\n\t\tc.errStart = i\n\t\tc.err = err\n\t}\n}\n\ntype link struct {\n\tt Transformer\n\t// b[p:n] holds the bytes to be transformed by t.\n\tb []byte\n\tp int\n\tn int\n}\n\nfunc (l *link) src() []byte {\n\treturn l.b[l.p:l.n]\n}\n\nfunc (l *link) dst() []byte {\n\treturn l.b[l.n:]\n}\n\n// Chain returns a Transformer that applies t in sequence.\nfunc Chain(t ...Transformer) Transformer {\n\tif len(t) == 0 {\n\t\treturn nop{}\n\t}\n\tc := &chain{link: make([]link, len(t)+1)}\n\tfor i, tt := range t {\n\t\tc.link[i].t = tt\n\t}\n\t// Allocate intermediate buffers.\n\tb := make([][defaultBufSize]byte, len(t)-1)\n\tfor i := range b {\n\t\tc.link[i+1].b = b[i][:]\n\t}\n\treturn c\n}\n\n// Reset resets the state of Chain. It calls Reset on all the Transformers.\nfunc (c *chain) Reset() {\n\tfor i, l := range c.link {\n\t\tif l.t != nil {\n\t\t\tl.t.Reset()\n\t\t}\n\t\tc.link[i].p, c.link[i].n = 0, 0\n\t}\n}\n\n// TODO: make chain use Span (is going to be fun to implement!)\n\n// Transform applies the transformers of c in sequence.\nfunc (c *chain) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\t// Set up src and dst in the chain.\n\tsrcL := &c.link[0]\n\tdstL := &c.link[len(c.link)-1]\n\tsrcL.b, srcL.p, srcL.n = src, 0, len(src)\n\tdstL.b, dstL.n = dst, 0\n\tvar lastFull, needProgress bool // for detecting progress\n\n\t// i is the index of the next Transformer to apply, for i in [low, high].\n\t// low is the lowest index for which c.link[low] may still produce bytes.\n\t// high is the highest index for which c.link[high] has a Transformer.\n\t// The error returned by Transform determines whether to increase or\n\t// decrease i. We try to completely fill a buffer before converting it.\n\tfor low, i, high := c.errStart, c.errStart, len(c.link)-2; low <= i && i <= high; {\n\t\tin, out := &c.link[i], &c.link[i+1]\n\t\tnDst, nSrc, err0 := in.t.Transform(out.dst(), in.src(), atEOF && low == i)\n\t\tout.n += nDst\n\t\tin.p += nSrc\n\t\tif i > 0 && in.p == in.n {\n\t\t\tin.p, in.n = 0, 0\n\t\t}\n\t\tneedProgress, lastFull = lastFull, false\n\t\tswitch err0 {\n\t\tcase ErrShortDst:\n\t\t\t// Process the destination buffer next. Return if we are already\n\t\t\t// at the high index.\n\t\t\tif i == high {\n\t\t\t\treturn dstL.n, srcL.p, ErrShortDst\n\t\t\t}\n\t\t\tif out.n != 0 {\n\t\t\t\ti++\n\t\t\t\t// If the Transformer at the next index is not able to process any\n\t\t\t\t// source bytes there is nothing that can be done to make progress\n\t\t\t\t// and the bytes will remain unprocessed. lastFull is used to\n\t\t\t\t// detect this and break out of the loop with a fatal error.\n\t\t\t\tlastFull = true\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// The destination buffer was too small, but is completely empty.\n\t\t\t// Return a fatal error as this transformation can never complete.\n\t\t\tc.fatalError(i, errShortInternal)\n\t\tcase ErrShortSrc:\n\t\t\tif i == 0 {\n\t\t\t\t// Save ErrShortSrc in err. All other errors take precedence.\n\t\t\t\terr = ErrShortSrc\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Source bytes were depleted before filling up the destination buffer.\n\t\t\t// Verify we made some progress, move the remaining bytes to the errStart\n\t\t\t// and try to get more source bytes.\n\t\t\tif needProgress && nSrc == 0 || in.n-in.p == len(in.b) {\n\t\t\t\t// There were not enough source bytes to proceed while the source\n\t\t\t\t// buffer cannot hold any more bytes. Return a fatal error as this\n\t\t\t\t// transformation can never complete.\n\t\t\t\tc.fatalError(i, errShortInternal)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// in.b is an internal buffer and we can make progress.\n\t\t\tin.p, in.n = 0, copy(in.b, in.src())\n\t\t\tfallthrough\n\t\tcase nil:\n\t\t\t// if i == low, we have depleted the bytes at index i or any lower levels.\n\t\t\t// In that case we increase low and i. In all other cases we decrease i to\n\t\t\t// fetch more bytes before proceeding to the next index.\n\t\t\tif i > low {\n\t\t\t\ti--\n\t\t\t\tcontinue\n\t\t\t}\n\t\tdefault:\n\t\t\tc.fatalError(i, err0)\n\t\t}\n\t\t// Exhausted level low or fatal error: increase low and continue\n\t\t// to process the bytes accepted so far.\n\t\ti++\n\t\tlow = i\n\t}\n\n\t// If c.errStart > 0, this means we found a fatal error.  We will clear\n\t// all upstream buffers. At this point, no more progress can be made\n\t// downstream, as Transform would have bailed while handling ErrShortDst.\n\tif c.errStart > 0 {\n\t\tfor i := 1; i < c.errStart; i++ {\n\t\t\tc.link[i].p, c.link[i].n = 0, 0\n\t\t}\n\t\terr, c.errStart, c.err = c.err, 0, nil\n\t}\n\treturn dstL.n, srcL.p, err\n}\n\n// Deprecated: Use runes.Remove instead.\nfunc RemoveFunc(f func(r rune) bool) Transformer {\n\treturn removeF(f)\n}\n\ntype removeF func(r rune) bool\n\nfunc (removeF) Reset() {}\n\n// Transform implements the Transformer interface.\nfunc (t removeF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tfor r, sz := rune(0), 0; len(src) > 0; src = src[sz:] {\n\n\t\tif r = rune(src[0]); r < utf8.RuneSelf {\n\t\t\tsz = 1\n\t\t} else {\n\t\t\tr, sz = utf8.DecodeRune(src)\n\n\t\t\tif sz == 1 {\n\t\t\t\t// Invalid rune.\n\t\t\t\tif !atEOF && !utf8.FullRune(src) {\n\t\t\t\t\terr = ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// We replace illegal bytes with RuneError. Not doing so might\n\t\t\t\t// otherwise turn a sequence of invalid UTF-8 into valid UTF-8.\n\t\t\t\t// The resulting byte sequence may subsequently contain runes\n\t\t\t\t// for which t(r) is true that were passed unnoticed.\n\t\t\t\tif !t(r) {\n\t\t\t\t\tif nDst+3 > len(dst) {\n\t\t\t\t\t\terr = ErrShortDst\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tnDst += copy(dst[nDst:], \"\\uFFFD\")\n\t\t\t\t}\n\t\t\t\tnSrc++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif !t(r) {\n\t\t\tif nDst+sz > len(dst) {\n\t\t\t\terr = ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tnDst += copy(dst[nDst:], src[:sz])\n\t\t}\n\t\tnSrc += sz\n\t}\n\treturn\n}\n\n// grow returns a new []byte that is longer than b, and copies the first n bytes\n// of b to the start of the new slice.\nfunc grow(b []byte, n int) []byte {\n\tm := len(b)\n\tif m <= 32 {\n\t\tm = 64\n\t} else if m <= 256 {\n\t\tm *= 2\n\t} else {\n\t\tm += m >> 1\n\t}\n\tbuf := make([]byte, m)\n\tcopy(buf, b[:n])\n\treturn buf\n}\n\nconst initialBufSize = 128\n\n// String returns a string with the result of converting s[:n] using t, where\n// n <= len(s). If err == nil, n will be len(s). It calls Reset on t.\nfunc String(t Transformer, s string) (result string, n int, err error) {\n\tt.Reset()\n\tif s == \"\" {\n\t\t// Fast path for the common case for empty input. Results in about a\n\t\t// 86% reduction of running time for BenchmarkStringLowerEmpty.\n\t\tif _, _, err := t.Transform(nil, nil, true); err == nil {\n\t\t\treturn \"\", 0, nil\n\t\t}\n\t}\n\n\t// Allocate only once. Note that both dst and src escape when passed to\n\t// Transform.\n\tbuf := [2 * initialBufSize]byte{}\n\tdst := buf[:initialBufSize:initialBufSize]\n\tsrc := buf[initialBufSize : 2*initialBufSize]\n\n\t// The input string s is transformed in multiple chunks (starting with a\n\t// chunk size of initialBufSize). nDst and nSrc are per-chunk (or\n\t// per-Transform-call) indexes, pDst and pSrc are overall indexes.\n\tnDst, nSrc := 0, 0\n\tpDst, pSrc := 0, 0\n\n\t// pPrefix is the length of a common prefix: the first pPrefix bytes of the\n\t// result will equal the first pPrefix bytes of s. It is not guaranteed to\n\t// be the largest such value, but if pPrefix, len(result) and len(s) are\n\t// all equal after the final transform (i.e. calling Transform with atEOF\n\t// being true returned nil error) then we don't need to allocate a new\n\t// result string.\n\tpPrefix := 0\n\tfor {\n\t\t// Invariant: pDst == pPrefix && pSrc == pPrefix.\n\n\t\tn := copy(src, s[pSrc:])\n\t\tnDst, nSrc, err = t.Transform(dst, src[:n], pSrc+n == len(s))\n\t\tpDst += nDst\n\t\tpSrc += nSrc\n\n\t\t// TODO:  let transformers implement an optional Spanner interface, akin\n\t\t// to norm's QuickSpan. This would even allow us to avoid any allocation.\n\t\tif !bytes.Equal(dst[:nDst], src[:nSrc]) {\n\t\t\tbreak\n\t\t}\n\t\tpPrefix = pSrc\n\t\tif err == ErrShortDst {\n\t\t\t// A buffer can only be short if a transformer modifies its input.\n\t\t\tbreak\n\t\t} else if err == ErrShortSrc {\n\t\t\tif nSrc == 0 {\n\t\t\t\t// No progress was made.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Equal so far and !atEOF, so continue checking.\n\t\t} else if err != nil || pPrefix == len(s) {\n\t\t\treturn string(s[:pPrefix]), pPrefix, err\n\t\t}\n\t}\n\t// Post-condition: pDst == pPrefix + nDst && pSrc == pPrefix + nSrc.\n\n\t// We have transformed the first pSrc bytes of the input s to become pDst\n\t// transformed bytes. Those transformed bytes are discontiguous: the first\n\t// pPrefix of them equal s[:pPrefix] and the last nDst of them equal\n\t// dst[:nDst]. We copy them around, into a new dst buffer if necessary, so\n\t// that they become one contiguous slice: dst[:pDst].\n\tif pPrefix != 0 {\n\t\tnewDst := dst\n\t\tif pDst > len(newDst) {\n\t\t\tnewDst = make([]byte, len(s)+nDst-nSrc)\n\t\t}\n\t\tcopy(newDst[pPrefix:pDst], dst[:nDst])\n\t\tcopy(newDst[:pPrefix], s[:pPrefix])\n\t\tdst = newDst\n\t}\n\n\t// Prevent duplicate Transform calls with atEOF being true at the end of\n\t// the input. Also return if we have an unrecoverable error.\n\tif (err == nil && pSrc == len(s)) ||\n\t\t(err != nil && err != ErrShortDst && err != ErrShortSrc) {\n\t\treturn string(dst[:pDst]), pSrc, err\n\t}\n\n\t// Transform the remaining input, growing dst and src buffers as necessary.\n\tfor {\n\t\tn := copy(src, s[pSrc:])\n\t\tatEOF := pSrc+n == len(s)\n\t\tnDst, nSrc, err := t.Transform(dst[pDst:], src[:n], atEOF)\n\t\tpDst += nDst\n\t\tpSrc += nSrc\n\n\t\t// If we got ErrShortDst or ErrShortSrc, do not grow as long as we can\n\t\t// make progress. This may avoid excessive allocations.\n\t\tif err == ErrShortDst {\n\t\t\tif nDst == 0 {\n\t\t\t\tdst = grow(dst, pDst)\n\t\t\t}\n\t\t} else if err == ErrShortSrc {\n\t\t\tif atEOF {\n\t\t\t\treturn string(dst[:pDst]), pSrc, err\n\t\t\t}\n\t\t\tif nSrc == 0 {\n\t\t\t\tsrc = grow(src, 0)\n\t\t\t}\n\t\t} else if err != nil || pSrc == len(s) {\n\t\t\treturn string(dst[:pDst]), pSrc, err\n\t\t}\n\t}\n}\n\n// Bytes returns a new byte slice with the result of converting b[:n] using t,\n// where n <= len(b). If err == nil, n will be len(b). It calls Reset on t.\nfunc Bytes(t Transformer, b []byte) (result []byte, n int, err error) {\n\treturn doAppend(t, 0, make([]byte, len(b)), b)\n}\n\n// Append appends the result of converting src[:n] using t to dst, where\n// n <= len(src), If err == nil, n will be len(src). It calls Reset on t.\nfunc Append(t Transformer, dst, src []byte) (result []byte, n int, err error) {\n\tif len(dst) == cap(dst) {\n\t\tn := len(src) + len(dst) // It is okay for this to be 0.\n\t\tb := make([]byte, n)\n\t\tdst = b[:copy(b, dst)]\n\t}\n\treturn doAppend(t, len(dst), dst[:cap(dst)], src)\n}\n\nfunc doAppend(t Transformer, pDst int, dst, src []byte) (result []byte, n int, err error) {\n\tt.Reset()\n\tpSrc := 0\n\tfor {\n\t\tnDst, nSrc, err := t.Transform(dst[pDst:], src[pSrc:], true)\n\t\tpDst += nDst\n\t\tpSrc += nSrc\n\t\tif err != ErrShortDst {\n\t\t\treturn dst[:pDst], pSrc, err\n\t\t}\n\n\t\t// Grow the destination buffer, but do not grow as long as we can make\n\t\t// progress. This may avoid excessive allocations.\n\t\tif nDst == 0 {\n\t\t\tdst = grow(dst, pDst)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/bidi.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run gen.go gen_trieval.go gen_ranges.go\n\n// Package bidi contains functionality for bidirectional text support.\n//\n// See https://www.unicode.org/reports/tr9.\n//\n// NOTE: UNDER CONSTRUCTION. This API may change in backwards incompatible ways\n// and without notice.\npackage bidi // import \"golang.org/x/text/unicode/bidi\"\n\n// TODO\n// - Transformer for reordering?\n// - Transformer (validator, really) for Bidi Rule.\n\nimport (\n\t\"bytes\"\n)\n\n// This API tries to avoid dealing with embedding levels for now. Under the hood\n// these will be computed, but the question is to which extent the user should\n// know they exist. We should at some point allow the user to specify an\n// embedding hierarchy, though.\n\n// A Direction indicates the overall flow of text.\ntype Direction int\n\nconst (\n\t// LeftToRight indicates the text contains no right-to-left characters and\n\t// that either there are some left-to-right characters or the option\n\t// DefaultDirection(LeftToRight) was passed.\n\tLeftToRight Direction = iota\n\n\t// RightToLeft indicates the text contains no left-to-right characters and\n\t// that either there are some right-to-left characters or the option\n\t// DefaultDirection(RightToLeft) was passed.\n\tRightToLeft\n\n\t// Mixed indicates text contains both left-to-right and right-to-left\n\t// characters.\n\tMixed\n\n\t// Neutral means that text contains no left-to-right and right-to-left\n\t// characters and that no default direction has been set.\n\tNeutral\n)\n\ntype options struct {\n\tdefaultDirection Direction\n}\n\n// An Option is an option for Bidi processing.\ntype Option func(*options)\n\n// ICU allows the user to define embedding levels. This may be used, for example,\n// to use hierarchical structure of markup languages to define embeddings.\n// The following option may be a way to expose this functionality in this API.\n// // LevelFunc sets a function that associates nesting levels with the given text.\n// // The levels function will be called with monotonically increasing values for p.\n// func LevelFunc(levels func(p int) int) Option {\n// \tpanic(\"unimplemented\")\n// }\n\n// DefaultDirection sets the default direction for a Paragraph. The direction is\n// overridden if the text contains directional characters.\nfunc DefaultDirection(d Direction) Option {\n\treturn func(opts *options) {\n\t\topts.defaultDirection = d\n\t}\n}\n\n// A Paragraph holds a single Paragraph for Bidi processing.\ntype Paragraph struct {\n\tp          []byte\n\to          Ordering\n\topts       []Option\n\ttypes      []Class\n\tpairTypes  []bracketType\n\tpairValues []rune\n\trunes      []rune\n\toptions    options\n}\n\n// Initialize the p.pairTypes, p.pairValues and p.types from the input previously\n// set by p.SetBytes() or p.SetString(). Also limit the input up to (and including) a paragraph\n// separator (bidi class B).\n//\n// The function p.Order() needs these values to be set, so this preparation could be postponed.\n// But since the SetBytes and SetStrings functions return the length of the input up to the paragraph\n// separator, the whole input needs to be processed anyway and should not be done twice.\n//\n// The function has the same return values as SetBytes() / SetString()\nfunc (p *Paragraph) prepareInput() (n int, err error) {\n\tp.runes = bytes.Runes(p.p)\n\tbytecount := 0\n\t// clear slices from previous SetString or SetBytes\n\tp.pairTypes = nil\n\tp.pairValues = nil\n\tp.types = nil\n\n\tfor _, r := range p.runes {\n\t\tprops, i := LookupRune(r)\n\t\tbytecount += i\n\t\tcls := props.Class()\n\t\tif cls == B {\n\t\t\treturn bytecount, nil\n\t\t}\n\t\tp.types = append(p.types, cls)\n\t\tif props.IsOpeningBracket() {\n\t\t\tp.pairTypes = append(p.pairTypes, bpOpen)\n\t\t\tp.pairValues = append(p.pairValues, r)\n\t\t} else if props.IsBracket() {\n\t\t\t// this must be a closing bracket,\n\t\t\t// since IsOpeningBracket is not true\n\t\t\tp.pairTypes = append(p.pairTypes, bpClose)\n\t\t\tp.pairValues = append(p.pairValues, r)\n\t\t} else {\n\t\t\tp.pairTypes = append(p.pairTypes, bpNone)\n\t\t\tp.pairValues = append(p.pairValues, 0)\n\t\t}\n\t}\n\treturn bytecount, nil\n}\n\n// SetBytes configures p for the given paragraph text. It replaces text\n// previously set by SetBytes or SetString. If b contains a paragraph separator\n// it will only process the first paragraph and report the number of bytes\n// consumed from b including this separator. Error may be non-nil if options are\n// given.\nfunc (p *Paragraph) SetBytes(b []byte, opts ...Option) (n int, err error) {\n\tp.p = b\n\tp.opts = opts\n\treturn p.prepareInput()\n}\n\n// SetString configures s for the given paragraph text. It replaces text\n// previously set by SetBytes or SetString. If s contains a paragraph separator\n// it will only process the first paragraph and report the number of bytes\n// consumed from s including this separator. Error may be non-nil if options are\n// given.\nfunc (p *Paragraph) SetString(s string, opts ...Option) (n int, err error) {\n\tp.p = []byte(s)\n\tp.opts = opts\n\treturn p.prepareInput()\n}\n\n// IsLeftToRight reports whether the principle direction of rendering for this\n// paragraphs is left-to-right. If this returns false, the principle direction\n// of rendering is right-to-left.\nfunc (p *Paragraph) IsLeftToRight() bool {\n\treturn p.Direction() == LeftToRight\n}\n\n// Direction returns the direction of the text of this paragraph.\n//\n// The direction may be LeftToRight, RightToLeft, Mixed, or Neutral.\nfunc (p *Paragraph) Direction() Direction {\n\treturn p.o.Direction()\n}\n\n// TODO: what happens if the position is > len(input)? This should return an error.\n\n// RunAt reports the Run at the given position of the input text.\n//\n// This method can be used for computing line breaks on paragraphs.\nfunc (p *Paragraph) RunAt(pos int) Run {\n\tc := 0\n\trunNumber := 0\n\tfor i, r := range p.o.runes {\n\t\tc += len(r)\n\t\tif pos < c {\n\t\t\trunNumber = i\n\t\t}\n\t}\n\treturn p.o.Run(runNumber)\n}\n\nfunc calculateOrdering(levels []level, runes []rune) Ordering {\n\tvar curDir Direction\n\n\tprevDir := Neutral\n\tprevI := 0\n\n\to := Ordering{}\n\t// lvl = 0,2,4,...: left to right\n\t// lvl = 1,3,5,...: right to left\n\tfor i, lvl := range levels {\n\t\tif lvl%2 == 0 {\n\t\t\tcurDir = LeftToRight\n\t\t} else {\n\t\t\tcurDir = RightToLeft\n\t\t}\n\t\tif curDir != prevDir {\n\t\t\tif i > 0 {\n\t\t\t\to.runes = append(o.runes, runes[prevI:i])\n\t\t\t\to.directions = append(o.directions, prevDir)\n\t\t\t\to.startpos = append(o.startpos, prevI)\n\t\t\t}\n\t\t\tprevI = i\n\t\t\tprevDir = curDir\n\t\t}\n\t}\n\to.runes = append(o.runes, runes[prevI:])\n\to.directions = append(o.directions, prevDir)\n\to.startpos = append(o.startpos, prevI)\n\treturn o\n}\n\n// Order computes the visual ordering of all the runs in a Paragraph.\nfunc (p *Paragraph) Order() (Ordering, error) {\n\tif len(p.types) == 0 {\n\t\treturn Ordering{}, nil\n\t}\n\n\tfor _, fn := range p.opts {\n\t\tfn(&p.options)\n\t}\n\tlvl := level(-1)\n\tif p.options.defaultDirection == RightToLeft {\n\t\tlvl = 1\n\t}\n\tpara, err := newParagraph(p.types, p.pairTypes, p.pairValues, lvl)\n\tif err != nil {\n\t\treturn Ordering{}, err\n\t}\n\n\tlevels := para.getLevels([]int{len(p.types)})\n\n\tp.o = calculateOrdering(levels, p.runes)\n\treturn p.o, nil\n}\n\n// Line computes the visual ordering of runs for a single line starting and\n// ending at the given positions in the original text.\nfunc (p *Paragraph) Line(start, end int) (Ordering, error) {\n\tlineTypes := p.types[start:end]\n\tpara, err := newParagraph(lineTypes, p.pairTypes[start:end], p.pairValues[start:end], -1)\n\tif err != nil {\n\t\treturn Ordering{}, err\n\t}\n\tlevels := para.getLevels([]int{len(lineTypes)})\n\to := calculateOrdering(levels, p.runes[start:end])\n\treturn o, nil\n}\n\n// An Ordering holds the computed visual order of runs of a Paragraph. Calling\n// SetBytes or SetString on the originating Paragraph invalidates an Ordering.\n// The methods of an Ordering should only be called by one goroutine at a time.\ntype Ordering struct {\n\trunes      [][]rune\n\tdirections []Direction\n\tstartpos   []int\n}\n\n// Direction reports the directionality of the runs.\n//\n// The direction may be LeftToRight, RightToLeft, Mixed, or Neutral.\nfunc (o *Ordering) Direction() Direction {\n\treturn o.directions[0]\n}\n\n// NumRuns returns the number of runs.\nfunc (o *Ordering) NumRuns() int {\n\treturn len(o.runes)\n}\n\n// Run returns the ith run within the ordering.\nfunc (o *Ordering) Run(i int) Run {\n\tr := Run{\n\t\trunes:     o.runes[i],\n\t\tdirection: o.directions[i],\n\t\tstartpos:  o.startpos[i],\n\t}\n\treturn r\n}\n\n// TODO: perhaps with options.\n// // Reorder creates a reader that reads the runes in visual order per character.\n// // Modifiers remain after the runes they modify.\n// func (l *Runs) Reorder() io.Reader {\n// \tpanic(\"unimplemented\")\n// }\n\n// A Run is a continuous sequence of characters of a single direction.\ntype Run struct {\n\trunes     []rune\n\tdirection Direction\n\tstartpos  int\n}\n\n// String returns the text of the run in its original order.\nfunc (r *Run) String() string {\n\treturn string(r.runes)\n}\n\n// Bytes returns the text of the run in its original order.\nfunc (r *Run) Bytes() []byte {\n\treturn []byte(r.String())\n}\n\n// TODO: methods for\n// - Display order\n// - headers and footers\n// - bracket replacement.\n\n// Direction reports the direction of the run.\nfunc (r *Run) Direction() Direction {\n\treturn r.direction\n}\n\n// Pos returns the position of the Run within the text passed to SetBytes or SetString of the\n// originating Paragraph value.\nfunc (r *Run) Pos() (start, end int) {\n\treturn r.startpos, r.startpos + len(r.runes) - 1\n}\n\n// AppendReverse reverses the order of characters of in, appends them to out,\n// and returns the result. Modifiers will still follow the runes they modify.\n// Brackets are replaced with their counterparts.\nfunc AppendReverse(out, in []byte) []byte {\n\tret := make([]byte, len(in)+len(out))\n\tcopy(ret, out)\n\tinRunes := bytes.Runes(in)\n\n\tfor i, r := range inRunes {\n\t\tprop, _ := LookupRune(r)\n\t\tif prop.IsBracket() {\n\t\t\tinRunes[i] = prop.reverseBracket(r)\n\t\t}\n\t}\n\n\tfor i, j := 0, len(inRunes)-1; i < j; i, j = i+1, j-1 {\n\t\tinRunes[i], inRunes[j] = inRunes[j], inRunes[i]\n\t}\n\tcopy(ret[len(out):], string(inRunes))\n\n\treturn ret\n}\n\n// ReverseString reverses the order of characters in s and returns a new string.\n// Modifiers will still follow the runes they modify. Brackets are replaced with\n// their counterparts.\nfunc ReverseString(s string) string {\n\tinput := []rune(s)\n\tli := len(input)\n\tret := make([]rune, li)\n\tfor i, r := range input {\n\t\tprop, _ := LookupRune(r)\n\t\tif prop.IsBracket() {\n\t\t\tret[li-i-1] = prop.reverseBracket(r)\n\t\t} else {\n\t\t\tret[li-i-1] = r\n\t\t}\n\t}\n\treturn string(ret)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/bracket.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage bidi\n\nimport (\n\t\"container/list\"\n\t\"fmt\"\n\t\"sort\"\n)\n\n// This file contains a port of the reference implementation of the\n// Bidi Parentheses Algorithm:\n// https://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/BidiPBAReference.java\n//\n// The implementation in this file covers definitions BD14-BD16 and rule N0\n// of UAX#9.\n//\n// Some preprocessing is done for each rune before data is passed to this\n// algorithm:\n//  - opening and closing brackets are identified\n//  - a bracket pair type, like '(' and ')' is assigned a unique identifier that\n//    is identical for the opening and closing bracket. It is left to do these\n//    mappings.\n//  - The BPA algorithm requires that bracket characters that are canonical\n//    equivalents of each other be able to be substituted for each other.\n//    It is the responsibility of the caller to do this canonicalization.\n//\n// In implementing BD16, this implementation departs slightly from the \"logical\"\n// algorithm defined in UAX#9. In particular, the stack referenced there\n// supports operations that go beyond a \"basic\" stack. An equivalent\n// implementation based on a linked list is used here.\n\n// Bidi_Paired_Bracket_Type\n// BD14. An opening paired bracket is a character whose\n// Bidi_Paired_Bracket_Type property value is Open.\n//\n// BD15. A closing paired bracket is a character whose\n// Bidi_Paired_Bracket_Type property value is Close.\ntype bracketType byte\n\nconst (\n\tbpNone bracketType = iota\n\tbpOpen\n\tbpClose\n)\n\n// bracketPair holds a pair of index values for opening and closing bracket\n// location of a bracket pair.\ntype bracketPair struct {\n\topener int\n\tcloser int\n}\n\nfunc (b *bracketPair) String() string {\n\treturn fmt.Sprintf(\"(%v, %v)\", b.opener, b.closer)\n}\n\n// bracketPairs is a slice of bracketPairs with a sort.Interface implementation.\ntype bracketPairs []bracketPair\n\nfunc (b bracketPairs) Len() int           { return len(b) }\nfunc (b bracketPairs) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }\nfunc (b bracketPairs) Less(i, j int) bool { return b[i].opener < b[j].opener }\n\n// resolvePairedBrackets runs the paired bracket part of the UBA algorithm.\n//\n// For each rune, it takes the indexes into the original string, the class the\n// bracket type (in pairTypes) and the bracket identifier (pairValues). It also\n// takes the direction type for the start-of-sentence and the embedding level.\n//\n// The identifiers for bracket types are the rune of the canonicalized opening\n// bracket for brackets (open or close) or 0 for runes that are not brackets.\nfunc resolvePairedBrackets(s *isolatingRunSequence) {\n\tp := bracketPairer{\n\t\tsos:              s.sos,\n\t\topeners:          list.New(),\n\t\tcodesIsolatedRun: s.types,\n\t\tindexes:          s.indexes,\n\t}\n\tdirEmbed := L\n\tif s.level&1 != 0 {\n\t\tdirEmbed = R\n\t}\n\tp.locateBrackets(s.p.pairTypes, s.p.pairValues)\n\tp.resolveBrackets(dirEmbed, s.p.initialTypes)\n}\n\ntype bracketPairer struct {\n\tsos Class // direction corresponding to start of sequence\n\n\t// The following is a restatement of BD 16 using non-algorithmic language.\n\t//\n\t// A bracket pair is a pair of characters consisting of an opening\n\t// paired bracket and a closing paired bracket such that the\n\t// Bidi_Paired_Bracket property value of the former equals the latter,\n\t// subject to the following constraints.\n\t// - both characters of a pair occur in the same isolating run sequence\n\t// - the closing character of a pair follows the opening character\n\t// - any bracket character can belong at most to one pair, the earliest possible one\n\t// - any bracket character not part of a pair is treated like an ordinary character\n\t// - pairs may nest properly, but their spans may not overlap otherwise\n\n\t// Bracket characters with canonical decompositions are supposed to be\n\t// treated as if they had been normalized, to allow normalized and non-\n\t// normalized text to give the same result. In this implementation that step\n\t// is pushed out to the caller. The caller has to ensure that the pairValue\n\t// slices contain the rune of the opening bracket after normalization for\n\t// any opening or closing bracket.\n\n\topeners *list.List // list of positions for opening brackets\n\n\t// bracket pair positions sorted by location of opening bracket\n\tpairPositions bracketPairs\n\n\tcodesIsolatedRun []Class // directional bidi codes for an isolated run\n\tindexes          []int   // array of index values into the original string\n\n}\n\n// matchOpener reports whether characters at given positions form a matching\n// bracket pair.\nfunc (p *bracketPairer) matchOpener(pairValues []rune, opener, closer int) bool {\n\treturn pairValues[p.indexes[opener]] == pairValues[p.indexes[closer]]\n}\n\nconst maxPairingDepth = 63\n\n// locateBrackets locates matching bracket pairs according to BD16.\n//\n// This implementation uses a linked list instead of a stack, because, while\n// elements are added at the front (like a push) they are not generally removed\n// in atomic 'pop' operations, reducing the benefit of the stack archetype.\nfunc (p *bracketPairer) locateBrackets(pairTypes []bracketType, pairValues []rune) {\n\t// traverse the run\n\t// do that explicitly (not in a for-each) so we can record position\n\tfor i, index := range p.indexes {\n\n\t\t// look at the bracket type for each character\n\t\tif pairTypes[index] == bpNone || p.codesIsolatedRun[i] != ON {\n\t\t\t// continue scanning\n\t\t\tcontinue\n\t\t}\n\t\tswitch pairTypes[index] {\n\t\tcase bpOpen:\n\t\t\t// check if maximum pairing depth reached\n\t\t\tif p.openers.Len() == maxPairingDepth {\n\t\t\t\tp.openers.Init()\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// remember opener location, most recent first\n\t\t\tp.openers.PushFront(i)\n\n\t\tcase bpClose:\n\t\t\t// see if there is a match\n\t\t\tcount := 0\n\t\t\tfor elem := p.openers.Front(); elem != nil; elem = elem.Next() {\n\t\t\t\tcount++\n\t\t\t\topener := elem.Value.(int)\n\t\t\t\tif p.matchOpener(pairValues, opener, i) {\n\t\t\t\t\t// if the opener matches, add nested pair to the ordered list\n\t\t\t\t\tp.pairPositions = append(p.pairPositions, bracketPair{opener, i})\n\t\t\t\t\t// remove up to and including matched opener\n\t\t\t\t\tfor ; count > 0; count-- {\n\t\t\t\t\t\tp.openers.Remove(p.openers.Front())\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tsort.Sort(p.pairPositions)\n\t\t\t// if we get here, the closing bracket matched no openers\n\t\t\t// and gets ignored\n\t\t}\n\t}\n}\n\n// Bracket pairs within an isolating run sequence are processed as units so\n// that both the opening and the closing paired bracket in a pair resolve to\n// the same direction.\n//\n// N0. Process bracket pairs in an isolating run sequence sequentially in\n// the logical order of the text positions of the opening paired brackets\n// using the logic given below. Within this scope, bidirectional types EN\n// and AN are treated as R.\n//\n// Identify the bracket pairs in the current isolating run sequence\n// according to BD16. For each bracket-pair element in the list of pairs of\n// text positions:\n//\n// a Inspect the bidirectional types of the characters enclosed within the\n// bracket pair.\n//\n// b If any strong type (either L or R) matching the embedding direction is\n// found, set the type for both brackets in the pair to match the embedding\n// direction.\n//\n// o [ e ] o -> o e e e o\n//\n// o [ o e ] -> o e o e e\n//\n// o [ NI e ] -> o e NI e e\n//\n// c Otherwise, if a strong type (opposite the embedding direction) is\n// found, test for adjacent strong types as follows: 1 First, check\n// backwards before the opening paired bracket until the first strong type\n// (L, R, or sos) is found. If that first preceding strong type is opposite\n// the embedding direction, then set the type for both brackets in the pair\n// to that type. 2 Otherwise, set the type for both brackets in the pair to\n// the embedding direction.\n//\n// o [ o ] e -> o o o o e\n//\n// o [ o NI ] o -> o o o NI o o\n//\n// e [ o ] o -> e e o e o\n//\n// e [ o ] e -> e e o e e\n//\n// e ( o [ o ] NI ) e -> e e o o o o NI e e\n//\n// d Otherwise, do not set the type for the current bracket pair. Note that\n// if the enclosed text contains no strong types the paired brackets will\n// both resolve to the same level when resolved individually using rules N1\n// and N2.\n//\n// e ( NI ) o -> e ( NI ) o\n\n// getStrongTypeN0 maps character's directional code to strong type as required\n// by rule N0.\n//\n// TODO: have separate type for \"strong\" directionality.\nfunc (p *bracketPairer) getStrongTypeN0(index int) Class {\n\tswitch p.codesIsolatedRun[index] {\n\t// in the scope of N0, number types are treated as R\n\tcase EN, AN, AL, R:\n\t\treturn R\n\tcase L:\n\t\treturn L\n\tdefault:\n\t\treturn ON\n\t}\n}\n\n// classifyPairContent reports the strong types contained inside a Bracket Pair,\n// assuming the given embedding direction.\n//\n// It returns ON if no strong type is found. If a single strong type is found,\n// it returns this type. Otherwise it returns the embedding direction.\n//\n// TODO: use separate type for \"strong\" directionality.\nfunc (p *bracketPairer) classifyPairContent(loc bracketPair, dirEmbed Class) Class {\n\tdirOpposite := ON\n\tfor i := loc.opener + 1; i < loc.closer; i++ {\n\t\tdir := p.getStrongTypeN0(i)\n\t\tif dir == ON {\n\t\t\tcontinue\n\t\t}\n\t\tif dir == dirEmbed {\n\t\t\treturn dir // type matching embedding direction found\n\t\t}\n\t\tdirOpposite = dir\n\t}\n\t// return ON if no strong type found, or class opposite to dirEmbed\n\treturn dirOpposite\n}\n\n// classBeforePair determines which strong types are present before a Bracket\n// Pair. Return R or L if strong type found, otherwise ON.\nfunc (p *bracketPairer) classBeforePair(loc bracketPair) Class {\n\tfor i := loc.opener - 1; i >= 0; i-- {\n\t\tif dir := p.getStrongTypeN0(i); dir != ON {\n\t\t\treturn dir\n\t\t}\n\t}\n\t// no strong types found, return sos\n\treturn p.sos\n}\n\n// assignBracketType implements rule N0 for a single bracket pair.\nfunc (p *bracketPairer) assignBracketType(loc bracketPair, dirEmbed Class, initialTypes []Class) {\n\t// rule \"N0, a\", inspect contents of pair\n\tdirPair := p.classifyPairContent(loc, dirEmbed)\n\n\t// dirPair is now L, R, or N (no strong type found)\n\n\t// the following logical tests are performed out of order compared to\n\t// the statement of the rules but yield the same results\n\tif dirPair == ON {\n\t\treturn // case \"d\" - nothing to do\n\t}\n\n\tif dirPair != dirEmbed {\n\t\t// case \"c\": strong type found, opposite - check before (c.1)\n\t\tdirPair = p.classBeforePair(loc)\n\t\tif dirPair == dirEmbed || dirPair == ON {\n\t\t\t// no strong opposite type found before - use embedding (c.2)\n\t\t\tdirPair = dirEmbed\n\t\t}\n\t}\n\t// else: case \"b\", strong type found matching embedding,\n\t// no explicit action needed, as dirPair is already set to embedding\n\t// direction\n\n\t// set the bracket types to the type found\n\tp.setBracketsToType(loc, dirPair, initialTypes)\n}\n\nfunc (p *bracketPairer) setBracketsToType(loc bracketPair, dirPair Class, initialTypes []Class) {\n\tp.codesIsolatedRun[loc.opener] = dirPair\n\tp.codesIsolatedRun[loc.closer] = dirPair\n\n\tfor i := loc.opener + 1; i < loc.closer; i++ {\n\t\tindex := p.indexes[i]\n\t\tif initialTypes[index] != NSM {\n\t\t\tbreak\n\t\t}\n\t\tp.codesIsolatedRun[i] = dirPair\n\t}\n\n\tfor i := loc.closer + 1; i < len(p.indexes); i++ {\n\t\tindex := p.indexes[i]\n\t\tif initialTypes[index] != NSM {\n\t\t\tbreak\n\t\t}\n\t\tp.codesIsolatedRun[i] = dirPair\n\t}\n}\n\n// resolveBrackets implements rule N0 for a list of pairs.\nfunc (p *bracketPairer) resolveBrackets(dirEmbed Class, initialTypes []Class) {\n\tfor _, loc := range p.pairPositions {\n\t\tp.assignBracketType(loc, dirEmbed, initialTypes)\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/core.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage bidi\n\nimport (\n\t\"fmt\"\n\t\"log\"\n)\n\n// This implementation is a port based on the reference implementation found at:\n// https://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/\n//\n// described in Unicode Bidirectional Algorithm (UAX #9).\n//\n// Input:\n// There are two levels of input to the algorithm, since clients may prefer to\n// supply some information from out-of-band sources rather than relying on the\n// default behavior.\n//\n// - Bidi class array\n// - Bidi class array, with externally supplied base line direction\n//\n// Output:\n// Output is separated into several stages:\n//\n//  - levels array over entire paragraph\n//  - reordering array over entire paragraph\n//  - levels array over line\n//  - reordering array over line\n//\n// Note that for conformance to the Unicode Bidirectional Algorithm,\n// implementations are only required to generate correct reordering and\n// character directionality (odd or even levels) over a line. Generating\n// identical level arrays over a line is not required. Bidi explicit format\n// codes (LRE, RLE, LRO, RLO, PDF) and BN can be assigned arbitrary levels and\n// positions as long as the rest of the input is properly reordered.\n//\n// As the algorithm is defined to operate on a single paragraph at a time, this\n// implementation is written to handle single paragraphs. Thus rule P1 is\n// presumed by this implementation-- the data provided to the implementation is\n// assumed to be a single paragraph, and either contains no 'B' codes, or a\n// single 'B' code at the end of the input. 'B' is allowed as input to\n// illustrate how the algorithm assigns it a level.\n//\n// Also note that rules L3 and L4 depend on the rendering engine that uses the\n// result of the bidi algorithm. This implementation assumes that the rendering\n// engine expects combining marks in visual order (e.g. to the left of their\n// base character in RTL runs) and that it adjusts the glyphs used to render\n// mirrored characters that are in RTL runs so that they render appropriately.\n\n// level is the embedding level of a character. Even embedding levels indicate\n// left-to-right order and odd levels indicate right-to-left order. The special\n// level of -1 is reserved for undefined order.\ntype level int8\n\nconst implicitLevel level = -1\n\n// in returns if x is equal to any of the values in set.\nfunc (c Class) in(set ...Class) bool {\n\tfor _, s := range set {\n\t\tif c == s {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// A paragraph contains the state of a paragraph.\ntype paragraph struct {\n\tinitialTypes []Class\n\n\t// Arrays of properties needed for paired bracket evaluation in N0\n\tpairTypes  []bracketType // paired Bracket types for paragraph\n\tpairValues []rune        // rune for opening bracket or pbOpen and pbClose; 0 for pbNone\n\n\tembeddingLevel level // default: = implicitLevel;\n\n\t// at the paragraph levels\n\tresultTypes  []Class\n\tresultLevels []level\n\n\t// Index of matching PDI for isolate initiator characters. For other\n\t// characters, the value of matchingPDI will be set to -1. For isolate\n\t// initiators with no matching PDI, matchingPDI will be set to the length of\n\t// the input string.\n\tmatchingPDI []int\n\n\t// Index of matching isolate initiator for PDI characters. For other\n\t// characters, and for PDIs with no matching isolate initiator, the value of\n\t// matchingIsolateInitiator will be set to -1.\n\tmatchingIsolateInitiator []int\n}\n\n// newParagraph initializes a paragraph. The user needs to supply a few arrays\n// corresponding to the preprocessed text input. The types correspond to the\n// Unicode BiDi classes for each rune. pairTypes indicates the bracket type for\n// each rune. pairValues provides a unique bracket class identifier for each\n// rune (suggested is the rune of the open bracket for opening and matching\n// close brackets, after normalization). The embedding levels are optional, but\n// may be supplied to encode embedding levels of styled text.\nfunc newParagraph(types []Class, pairTypes []bracketType, pairValues []rune, levels level) (*paragraph, error) {\n\tvar err error\n\tif err = validateTypes(types); err != nil {\n\t\treturn nil, err\n\t}\n\tif err = validatePbTypes(pairTypes); err != nil {\n\t\treturn nil, err\n\t}\n\tif err = validatePbValues(pairValues, pairTypes); err != nil {\n\t\treturn nil, err\n\t}\n\tif err = validateParagraphEmbeddingLevel(levels); err != nil {\n\t\treturn nil, err\n\t}\n\n\tp := &paragraph{\n\t\tinitialTypes:   append([]Class(nil), types...),\n\t\tembeddingLevel: levels,\n\n\t\tpairTypes:  pairTypes,\n\t\tpairValues: pairValues,\n\n\t\tresultTypes: append([]Class(nil), types...),\n\t}\n\tp.run()\n\treturn p, nil\n}\n\nfunc (p *paragraph) Len() int { return len(p.initialTypes) }\n\n// The algorithm. Does not include line-based processing (Rules L1, L2).\n// These are applied later in the line-based phase of the algorithm.\nfunc (p *paragraph) run() {\n\tp.determineMatchingIsolates()\n\n\t// 1) determining the paragraph level\n\t// Rule P1 is the requirement for entering this algorithm.\n\t// Rules P2, P3.\n\t// If no externally supplied paragraph embedding level, use default.\n\tif p.embeddingLevel == implicitLevel {\n\t\tp.embeddingLevel = p.determineParagraphEmbeddingLevel(0, p.Len())\n\t}\n\n\t// Initialize result levels to paragraph embedding level.\n\tp.resultLevels = make([]level, p.Len())\n\tsetLevels(p.resultLevels, p.embeddingLevel)\n\n\t// 2) Explicit levels and directions\n\t// Rules X1-X8.\n\tp.determineExplicitEmbeddingLevels()\n\n\t// Rule X9.\n\t// We do not remove the embeddings, the overrides, the PDFs, and the BNs\n\t// from the string explicitly. But they are not copied into isolating run\n\t// sequences when they are created, so they are removed for all\n\t// practical purposes.\n\n\t// Rule X10.\n\t// Run remainder of algorithm one isolating run sequence at a time\n\tfor _, seq := range p.determineIsolatingRunSequences() {\n\t\t// 3) resolving weak types\n\t\t// Rules W1-W7.\n\t\tseq.resolveWeakTypes()\n\n\t\t// 4a) resolving paired brackets\n\t\t// Rule N0\n\t\tresolvePairedBrackets(seq)\n\n\t\t// 4b) resolving neutral types\n\t\t// Rules N1-N3.\n\t\tseq.resolveNeutralTypes()\n\n\t\t// 5) resolving implicit embedding levels\n\t\t// Rules I1, I2.\n\t\tseq.resolveImplicitLevels()\n\n\t\t// Apply the computed levels and types\n\t\tseq.applyLevelsAndTypes()\n\t}\n\n\t// Assign appropriate levels to 'hide' LREs, RLEs, LROs, RLOs, PDFs, and\n\t// BNs. This is for convenience, so the resulting level array will have\n\t// a value for every character.\n\tp.assignLevelsToCharactersRemovedByX9()\n}\n\n// determineMatchingIsolates determines the matching PDI for each isolate\n// initiator and vice versa.\n//\n// Definition BD9.\n//\n// At the end of this function:\n//\n//   - The member variable matchingPDI is set to point to the index of the\n//     matching PDI character for each isolate initiator character. If there is\n//     no matching PDI, it is set to the length of the input text. For other\n//     characters, it is set to -1.\n//   - The member variable matchingIsolateInitiator is set to point to the\n//     index of the matching isolate initiator character for each PDI character.\n//     If there is no matching isolate initiator, or the character is not a PDI,\n//     it is set to -1.\nfunc (p *paragraph) determineMatchingIsolates() {\n\tp.matchingPDI = make([]int, p.Len())\n\tp.matchingIsolateInitiator = make([]int, p.Len())\n\n\tfor i := range p.matchingIsolateInitiator {\n\t\tp.matchingIsolateInitiator[i] = -1\n\t}\n\n\tfor i := range p.matchingPDI {\n\t\tp.matchingPDI[i] = -1\n\n\t\tif t := p.resultTypes[i]; t.in(LRI, RLI, FSI) {\n\t\t\tdepthCounter := 1\n\t\t\tfor j := i + 1; j < p.Len(); j++ {\n\t\t\t\tif u := p.resultTypes[j]; u.in(LRI, RLI, FSI) {\n\t\t\t\t\tdepthCounter++\n\t\t\t\t} else if u == PDI {\n\t\t\t\t\tif depthCounter--; depthCounter == 0 {\n\t\t\t\t\t\tp.matchingPDI[i] = j\n\t\t\t\t\t\tp.matchingIsolateInitiator[j] = i\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif p.matchingPDI[i] == -1 {\n\t\t\t\tp.matchingPDI[i] = p.Len()\n\t\t\t}\n\t\t}\n\t}\n}\n\n// determineParagraphEmbeddingLevel reports the resolved paragraph direction of\n// the substring limited by the given range [start, end).\n//\n// Determines the paragraph level based on rules P2, P3. This is also used\n// in rule X5c to find if an FSI should resolve to LRI or RLI.\nfunc (p *paragraph) determineParagraphEmbeddingLevel(start, end int) level {\n\tvar strongType Class = unknownClass\n\n\t// Rule P2.\n\tfor i := start; i < end; i++ {\n\t\tif t := p.resultTypes[i]; t.in(L, AL, R) {\n\t\t\tstrongType = t\n\t\t\tbreak\n\t\t} else if t.in(FSI, LRI, RLI) {\n\t\t\ti = p.matchingPDI[i] // skip over to the matching PDI\n\t\t\tif i > end {\n\t\t\t\tlog.Panic(\"assert (i <= end)\")\n\t\t\t}\n\t\t}\n\t}\n\t// Rule P3.\n\tswitch strongType {\n\tcase unknownClass: // none found\n\t\t// default embedding level when no strong types found is 0.\n\t\treturn 0\n\tcase L:\n\t\treturn 0\n\tdefault: // AL, R\n\t\treturn 1\n\t}\n}\n\nconst maxDepth = 125\n\n// This stack will store the embedding levels and override and isolated\n// statuses\ntype directionalStatusStack struct {\n\tstackCounter        int\n\tembeddingLevelStack [maxDepth + 1]level\n\toverrideStatusStack [maxDepth + 1]Class\n\tisolateStatusStack  [maxDepth + 1]bool\n}\n\nfunc (s *directionalStatusStack) empty()     { s.stackCounter = 0 }\nfunc (s *directionalStatusStack) pop()       { s.stackCounter-- }\nfunc (s *directionalStatusStack) depth() int { return s.stackCounter }\n\nfunc (s *directionalStatusStack) push(level level, overrideStatus Class, isolateStatus bool) {\n\ts.embeddingLevelStack[s.stackCounter] = level\n\ts.overrideStatusStack[s.stackCounter] = overrideStatus\n\ts.isolateStatusStack[s.stackCounter] = isolateStatus\n\ts.stackCounter++\n}\n\nfunc (s *directionalStatusStack) lastEmbeddingLevel() level {\n\treturn s.embeddingLevelStack[s.stackCounter-1]\n}\n\nfunc (s *directionalStatusStack) lastDirectionalOverrideStatus() Class {\n\treturn s.overrideStatusStack[s.stackCounter-1]\n}\n\nfunc (s *directionalStatusStack) lastDirectionalIsolateStatus() bool {\n\treturn s.isolateStatusStack[s.stackCounter-1]\n}\n\n// Determine explicit levels using rules X1 - X8\nfunc (p *paragraph) determineExplicitEmbeddingLevels() {\n\tvar stack directionalStatusStack\n\tvar overflowIsolateCount, overflowEmbeddingCount, validIsolateCount int\n\n\t// Rule X1.\n\tstack.push(p.embeddingLevel, ON, false)\n\n\tfor i, t := range p.resultTypes {\n\t\t// Rules X2, X3, X4, X5, X5a, X5b, X5c\n\t\tswitch t {\n\t\tcase RLE, LRE, RLO, LRO, RLI, LRI, FSI:\n\t\t\tisIsolate := t.in(RLI, LRI, FSI)\n\t\t\tisRTL := t.in(RLE, RLO, RLI)\n\n\t\t\t// override if this is an FSI that resolves to RLI\n\t\t\tif t == FSI {\n\t\t\t\tisRTL = (p.determineParagraphEmbeddingLevel(i+1, p.matchingPDI[i]) == 1)\n\t\t\t}\n\t\t\tif isIsolate {\n\t\t\t\tp.resultLevels[i] = stack.lastEmbeddingLevel()\n\t\t\t\tif stack.lastDirectionalOverrideStatus() != ON {\n\t\t\t\t\tp.resultTypes[i] = stack.lastDirectionalOverrideStatus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar newLevel level\n\t\t\tif isRTL {\n\t\t\t\t// least greater odd\n\t\t\t\tnewLevel = (stack.lastEmbeddingLevel() + 1) | 1\n\t\t\t} else {\n\t\t\t\t// least greater even\n\t\t\t\tnewLevel = (stack.lastEmbeddingLevel() + 2) &^ 1\n\t\t\t}\n\n\t\t\tif newLevel <= maxDepth && overflowIsolateCount == 0 && overflowEmbeddingCount == 0 {\n\t\t\t\tif isIsolate {\n\t\t\t\t\tvalidIsolateCount++\n\t\t\t\t}\n\t\t\t\t// Push new embedding level, override status, and isolated\n\t\t\t\t// status.\n\t\t\t\t// No check for valid stack counter, since the level check\n\t\t\t\t// suffices.\n\t\t\t\tswitch t {\n\t\t\t\tcase LRO:\n\t\t\t\t\tstack.push(newLevel, L, isIsolate)\n\t\t\t\tcase RLO:\n\t\t\t\t\tstack.push(newLevel, R, isIsolate)\n\t\t\t\tdefault:\n\t\t\t\t\tstack.push(newLevel, ON, isIsolate)\n\t\t\t\t}\n\t\t\t\t// Not really part of the spec\n\t\t\t\tif !isIsolate {\n\t\t\t\t\tp.resultLevels[i] = newLevel\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// This is an invalid explicit formatting character,\n\t\t\t\t// so apply the \"Otherwise\" part of rules X2-X5b.\n\t\t\t\tif isIsolate {\n\t\t\t\t\toverflowIsolateCount++\n\t\t\t\t} else { // !isIsolate\n\t\t\t\t\tif overflowIsolateCount == 0 {\n\t\t\t\t\t\toverflowEmbeddingCount++\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Rule X6a\n\t\tcase PDI:\n\t\t\tif overflowIsolateCount > 0 {\n\t\t\t\toverflowIsolateCount--\n\t\t\t} else if validIsolateCount == 0 {\n\t\t\t\t// do nothing\n\t\t\t} else {\n\t\t\t\toverflowEmbeddingCount = 0\n\t\t\t\tfor !stack.lastDirectionalIsolateStatus() {\n\t\t\t\t\tstack.pop()\n\t\t\t\t}\n\t\t\t\tstack.pop()\n\t\t\t\tvalidIsolateCount--\n\t\t\t}\n\t\t\tp.resultLevels[i] = stack.lastEmbeddingLevel()\n\n\t\t// Rule X7\n\t\tcase PDF:\n\t\t\t// Not really part of the spec\n\t\t\tp.resultLevels[i] = stack.lastEmbeddingLevel()\n\n\t\t\tif overflowIsolateCount > 0 {\n\t\t\t\t// do nothing\n\t\t\t} else if overflowEmbeddingCount > 0 {\n\t\t\t\toverflowEmbeddingCount--\n\t\t\t} else if !stack.lastDirectionalIsolateStatus() && stack.depth() >= 2 {\n\t\t\t\tstack.pop()\n\t\t\t}\n\n\t\tcase B: // paragraph separator.\n\t\t\t// Rule X8.\n\n\t\t\t// These values are reset for clarity, in this implementation B\n\t\t\t// can only occur as the last code in the array.\n\t\t\tstack.empty()\n\t\t\toverflowIsolateCount = 0\n\t\t\toverflowEmbeddingCount = 0\n\t\t\tvalidIsolateCount = 0\n\t\t\tp.resultLevels[i] = p.embeddingLevel\n\n\t\tdefault:\n\t\t\tp.resultLevels[i] = stack.lastEmbeddingLevel()\n\t\t\tif stack.lastDirectionalOverrideStatus() != ON {\n\t\t\t\tp.resultTypes[i] = stack.lastDirectionalOverrideStatus()\n\t\t\t}\n\t\t}\n\t}\n}\n\ntype isolatingRunSequence struct {\n\tp *paragraph\n\n\tindexes []int // indexes to the original string\n\n\ttypes          []Class // type of each character using the index\n\tresolvedLevels []level // resolved levels after application of rules\n\tlevel          level\n\tsos, eos       Class\n}\n\nfunc (i *isolatingRunSequence) Len() int { return len(i.indexes) }\n\n// Rule X10, second bullet: Determine the start-of-sequence (sos) and end-of-sequence (eos) types,\n// either L or R, for each isolating run sequence.\nfunc (p *paragraph) isolatingRunSequence(indexes []int) *isolatingRunSequence {\n\tlength := len(indexes)\n\ttypes := make([]Class, length)\n\tfor i, x := range indexes {\n\t\ttypes[i] = p.resultTypes[x]\n\t}\n\n\t// assign level, sos and eos\n\tprevChar := indexes[0] - 1\n\tfor prevChar >= 0 && isRemovedByX9(p.initialTypes[prevChar]) {\n\t\tprevChar--\n\t}\n\tprevLevel := p.embeddingLevel\n\tif prevChar >= 0 {\n\t\tprevLevel = p.resultLevels[prevChar]\n\t}\n\n\tvar succLevel level\n\tlastType := types[length-1]\n\tif lastType.in(LRI, RLI, FSI) {\n\t\tsuccLevel = p.embeddingLevel\n\t} else {\n\t\t// the first character after the end of run sequence\n\t\tlimit := indexes[length-1] + 1\n\t\tfor ; limit < p.Len() && isRemovedByX9(p.initialTypes[limit]); limit++ {\n\n\t\t}\n\t\tsuccLevel = p.embeddingLevel\n\t\tif limit < p.Len() {\n\t\t\tsuccLevel = p.resultLevels[limit]\n\t\t}\n\t}\n\tlevel := p.resultLevels[indexes[0]]\n\treturn &isolatingRunSequence{\n\t\tp:       p,\n\t\tindexes: indexes,\n\t\ttypes:   types,\n\t\tlevel:   level,\n\t\tsos:     typeForLevel(max(prevLevel, level)),\n\t\teos:     typeForLevel(max(succLevel, level)),\n\t}\n}\n\n// Resolving weak types Rules W1-W7.\n//\n// Note that some weak types (EN, AN) remain after this processing is\n// complete.\nfunc (s *isolatingRunSequence) resolveWeakTypes() {\n\n\t// on entry, only these types remain\n\ts.assertOnly(L, R, AL, EN, ES, ET, AN, CS, B, S, WS, ON, NSM, LRI, RLI, FSI, PDI)\n\n\t// Rule W1.\n\t// Changes all NSMs.\n\tprecedingCharacterType := s.sos\n\tfor i, t := range s.types {\n\t\tif t == NSM {\n\t\t\ts.types[i] = precedingCharacterType\n\t\t} else {\n\t\t\t// if t.in(LRI, RLI, FSI, PDI) {\n\t\t\t// \tprecedingCharacterType = ON\n\t\t\t// }\n\t\t\tprecedingCharacterType = t\n\t\t}\n\t}\n\n\t// Rule W2.\n\t// EN does not change at the start of the run, because sos != AL.\n\tfor i, t := range s.types {\n\t\tif t == EN {\n\t\t\tfor j := i - 1; j >= 0; j-- {\n\t\t\t\tif t := s.types[j]; t.in(L, R, AL) {\n\t\t\t\t\tif t == AL {\n\t\t\t\t\t\ts.types[i] = AN\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Rule W3.\n\tfor i, t := range s.types {\n\t\tif t == AL {\n\t\t\ts.types[i] = R\n\t\t}\n\t}\n\n\t// Rule W4.\n\t// Since there must be values on both sides for this rule to have an\n\t// effect, the scan skips the first and last value.\n\t//\n\t// Although the scan proceeds left to right, and changes the type\n\t// values in a way that would appear to affect the computations\n\t// later in the scan, there is actually no problem. A change in the\n\t// current value can only affect the value to its immediate right,\n\t// and only affect it if it is ES or CS. But the current value can\n\t// only change if the value to its right is not ES or CS. Thus\n\t// either the current value will not change, or its change will have\n\t// no effect on the remainder of the analysis.\n\n\tfor i := 1; i < s.Len()-1; i++ {\n\t\tt := s.types[i]\n\t\tif t == ES || t == CS {\n\t\t\tprevSepType := s.types[i-1]\n\t\t\tsuccSepType := s.types[i+1]\n\t\t\tif prevSepType == EN && succSepType == EN {\n\t\t\t\ts.types[i] = EN\n\t\t\t} else if s.types[i] == CS && prevSepType == AN && succSepType == AN {\n\t\t\t\ts.types[i] = AN\n\t\t\t}\n\t\t}\n\t}\n\n\t// Rule W5.\n\tfor i, t := range s.types {\n\t\tif t == ET {\n\t\t\t// locate end of sequence\n\t\t\trunStart := i\n\t\t\trunEnd := s.findRunLimit(runStart, ET)\n\n\t\t\t// check values at ends of sequence\n\t\t\tt := s.sos\n\t\t\tif runStart > 0 {\n\t\t\t\tt = s.types[runStart-1]\n\t\t\t}\n\t\t\tif t != EN {\n\t\t\t\tt = s.eos\n\t\t\t\tif runEnd < len(s.types) {\n\t\t\t\t\tt = s.types[runEnd]\n\t\t\t\t}\n\t\t\t}\n\t\t\tif t == EN {\n\t\t\t\tsetTypes(s.types[runStart:runEnd], EN)\n\t\t\t}\n\t\t\t// continue at end of sequence\n\t\t\ti = runEnd\n\t\t}\n\t}\n\n\t// Rule W6.\n\tfor i, t := range s.types {\n\t\tif t.in(ES, ET, CS) {\n\t\t\ts.types[i] = ON\n\t\t}\n\t}\n\n\t// Rule W7.\n\tfor i, t := range s.types {\n\t\tif t == EN {\n\t\t\t// set default if we reach start of run\n\t\t\tprevStrongType := s.sos\n\t\t\tfor j := i - 1; j >= 0; j-- {\n\t\t\t\tt = s.types[j]\n\t\t\t\tif t == L || t == R { // AL's have been changed to R\n\t\t\t\t\tprevStrongType = t\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif prevStrongType == L {\n\t\t\t\ts.types[i] = L\n\t\t\t}\n\t\t}\n\t}\n}\n\n// 6) resolving neutral types Rules N1-N2.\nfunc (s *isolatingRunSequence) resolveNeutralTypes() {\n\n\t// on entry, only these types can be in resultTypes\n\ts.assertOnly(L, R, EN, AN, B, S, WS, ON, RLI, LRI, FSI, PDI)\n\n\tfor i, t := range s.types {\n\t\tswitch t {\n\t\tcase WS, ON, B, S, RLI, LRI, FSI, PDI:\n\t\t\t// find bounds of run of neutrals\n\t\t\trunStart := i\n\t\t\trunEnd := s.findRunLimit(runStart, B, S, WS, ON, RLI, LRI, FSI, PDI)\n\n\t\t\t// determine effective types at ends of run\n\t\t\tvar leadType, trailType Class\n\n\t\t\t// Note that the character found can only be L, R, AN, or\n\t\t\t// EN.\n\t\t\tif runStart == 0 {\n\t\t\t\tleadType = s.sos\n\t\t\t} else {\n\t\t\t\tleadType = s.types[runStart-1]\n\t\t\t\tif leadType.in(AN, EN) {\n\t\t\t\t\tleadType = R\n\t\t\t\t}\n\t\t\t}\n\t\t\tif runEnd == len(s.types) {\n\t\t\t\ttrailType = s.eos\n\t\t\t} else {\n\t\t\t\ttrailType = s.types[runEnd]\n\t\t\t\tif trailType.in(AN, EN) {\n\t\t\t\t\ttrailType = R\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar resolvedType Class\n\t\t\tif leadType == trailType {\n\t\t\t\t// Rule N1.\n\t\t\t\tresolvedType = leadType\n\t\t\t} else {\n\t\t\t\t// Rule N2.\n\t\t\t\t// Notice the embedding level of the run is used, not\n\t\t\t\t// the paragraph embedding level.\n\t\t\t\tresolvedType = typeForLevel(s.level)\n\t\t\t}\n\n\t\t\tsetTypes(s.types[runStart:runEnd], resolvedType)\n\n\t\t\t// skip over run of (former) neutrals\n\t\t\ti = runEnd\n\t\t}\n\t}\n}\n\nfunc setLevels(levels []level, newLevel level) {\n\tfor i := range levels {\n\t\tlevels[i] = newLevel\n\t}\n}\n\nfunc setTypes(types []Class, newType Class) {\n\tfor i := range types {\n\t\ttypes[i] = newType\n\t}\n}\n\n// 7) resolving implicit embedding levels Rules I1, I2.\nfunc (s *isolatingRunSequence) resolveImplicitLevels() {\n\n\t// on entry, only these types can be in resultTypes\n\ts.assertOnly(L, R, EN, AN)\n\n\ts.resolvedLevels = make([]level, len(s.types))\n\tsetLevels(s.resolvedLevels, s.level)\n\n\tif (s.level & 1) == 0 { // even level\n\t\tfor i, t := range s.types {\n\t\t\t// Rule I1.\n\t\t\tif t == L {\n\t\t\t\t// no change\n\t\t\t} else if t == R {\n\t\t\t\ts.resolvedLevels[i] += 1\n\t\t\t} else { // t == AN || t == EN\n\t\t\t\ts.resolvedLevels[i] += 2\n\t\t\t}\n\t\t}\n\t} else { // odd level\n\t\tfor i, t := range s.types {\n\t\t\t// Rule I2.\n\t\t\tif t == R {\n\t\t\t\t// no change\n\t\t\t} else { // t == L || t == AN || t == EN\n\t\t\t\ts.resolvedLevels[i] += 1\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Applies the levels and types resolved in rules W1-I2 to the\n// resultLevels array.\nfunc (s *isolatingRunSequence) applyLevelsAndTypes() {\n\tfor i, x := range s.indexes {\n\t\ts.p.resultTypes[x] = s.types[i]\n\t\ts.p.resultLevels[x] = s.resolvedLevels[i]\n\t}\n}\n\n// Return the limit of the run consisting only of the types in validSet\n// starting at index. This checks the value at index, and will return\n// index if that value is not in validSet.\nfunc (s *isolatingRunSequence) findRunLimit(index int, validSet ...Class) int {\nloop:\n\tfor ; index < len(s.types); index++ {\n\t\tt := s.types[index]\n\t\tfor _, valid := range validSet {\n\t\t\tif t == valid {\n\t\t\t\tcontinue loop\n\t\t\t}\n\t\t}\n\t\treturn index // didn't find a match in validSet\n\t}\n\treturn len(s.types)\n}\n\n// Algorithm validation. Assert that all values in types are in the\n// provided set.\nfunc (s *isolatingRunSequence) assertOnly(codes ...Class) {\nloop:\n\tfor i, t := range s.types {\n\t\tfor _, c := range codes {\n\t\t\tif t == c {\n\t\t\t\tcontinue loop\n\t\t\t}\n\t\t}\n\t\tlog.Panicf(\"invalid bidi code %v present in assertOnly at position %d\", t, s.indexes[i])\n\t}\n}\n\n// determineLevelRuns returns an array of level runs. Each level run is\n// described as an array of indexes into the input string.\n//\n// Determines the level runs. Rule X9 will be applied in determining the\n// runs, in the way that makes sure the characters that are supposed to be\n// removed are not included in the runs.\nfunc (p *paragraph) determineLevelRuns() [][]int {\n\trun := []int{}\n\tallRuns := [][]int{}\n\tcurrentLevel := implicitLevel\n\n\tfor i := range p.initialTypes {\n\t\tif !isRemovedByX9(p.initialTypes[i]) {\n\t\t\tif p.resultLevels[i] != currentLevel {\n\t\t\t\t// we just encountered a new run; wrap up last run\n\t\t\t\tif currentLevel >= 0 { // only wrap it up if there was a run\n\t\t\t\t\tallRuns = append(allRuns, run)\n\t\t\t\t\trun = nil\n\t\t\t\t}\n\t\t\t\t// Start new run\n\t\t\t\tcurrentLevel = p.resultLevels[i]\n\t\t\t}\n\t\t\trun = append(run, i)\n\t\t}\n\t}\n\t// Wrap up the final run, if any\n\tif len(run) > 0 {\n\t\tallRuns = append(allRuns, run)\n\t}\n\treturn allRuns\n}\n\n// Definition BD13. Determine isolating run sequences.\nfunc (p *paragraph) determineIsolatingRunSequences() []*isolatingRunSequence {\n\tlevelRuns := p.determineLevelRuns()\n\n\t// Compute the run that each character belongs to\n\trunForCharacter := make([]int, p.Len())\n\tfor i, run := range levelRuns {\n\t\tfor _, index := range run {\n\t\t\trunForCharacter[index] = i\n\t\t}\n\t}\n\n\tsequences := []*isolatingRunSequence{}\n\n\tvar currentRunSequence []int\n\n\tfor _, run := range levelRuns {\n\t\tfirst := run[0]\n\t\tif p.initialTypes[first] != PDI || p.matchingIsolateInitiator[first] == -1 {\n\t\t\tcurrentRunSequence = nil\n\t\t\t// int run = i;\n\t\t\tfor {\n\t\t\t\t// Copy this level run into currentRunSequence\n\t\t\t\tcurrentRunSequence = append(currentRunSequence, run...)\n\n\t\t\t\tlast := currentRunSequence[len(currentRunSequence)-1]\n\t\t\t\tlastT := p.initialTypes[last]\n\t\t\t\tif lastT.in(LRI, RLI, FSI) && p.matchingPDI[last] != p.Len() {\n\t\t\t\t\trun = levelRuns[runForCharacter[p.matchingPDI[last]]]\n\t\t\t\t} else {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tsequences = append(sequences, p.isolatingRunSequence(currentRunSequence))\n\t\t}\n\t}\n\treturn sequences\n}\n\n// Assign level information to characters removed by rule X9. This is for\n// ease of relating the level information to the original input data. Note\n// that the levels assigned to these codes are arbitrary, they're chosen so\n// as to avoid breaking level runs.\nfunc (p *paragraph) assignLevelsToCharactersRemovedByX9() {\n\tfor i, t := range p.initialTypes {\n\t\tif t.in(LRE, RLE, LRO, RLO, PDF, BN) {\n\t\t\tp.resultTypes[i] = t\n\t\t\tp.resultLevels[i] = -1\n\t\t}\n\t}\n\t// now propagate forward the levels information (could have\n\t// propagated backward, the main thing is not to introduce a level\n\t// break where one doesn't already exist).\n\n\tif p.resultLevels[0] == -1 {\n\t\tp.resultLevels[0] = p.embeddingLevel\n\t}\n\tfor i := 1; i < len(p.initialTypes); i++ {\n\t\tif p.resultLevels[i] == -1 {\n\t\t\tp.resultLevels[i] = p.resultLevels[i-1]\n\t\t}\n\t}\n\t// Embedding information is for informational purposes only so need not be\n\t// adjusted.\n}\n\n//\n// Output\n//\n\n// getLevels computes levels array breaking lines at offsets in linebreaks.\n// Rule L1.\n//\n// The linebreaks array must include at least one value. The values must be\n// in strictly increasing order (no duplicates) between 1 and the length of\n// the text, inclusive. The last value must be the length of the text.\nfunc (p *paragraph) getLevels(linebreaks []int) []level {\n\t// Note that since the previous processing has removed all\n\t// P, S, and WS values from resultTypes, the values referred to\n\t// in these rules are the initial types, before any processing\n\t// has been applied (including processing of overrides).\n\t//\n\t// This example implementation has reinserted explicit format codes\n\t// and BN, in order that the levels array correspond to the\n\t// initial text. Their final placement is not normative.\n\t// These codes are treated like WS in this implementation,\n\t// so they don't interrupt sequences of WS.\n\n\tvalidateLineBreaks(linebreaks, p.Len())\n\n\tresult := append([]level(nil), p.resultLevels...)\n\n\t// don't worry about linebreaks since if there is a break within\n\t// a series of WS values preceding S, the linebreak itself\n\t// causes the reset.\n\tfor i, t := range p.initialTypes {\n\t\tif t.in(B, S) {\n\t\t\t// Rule L1, clauses one and two.\n\t\t\tresult[i] = p.embeddingLevel\n\n\t\t\t// Rule L1, clause three.\n\t\t\tfor j := i - 1; j >= 0; j-- {\n\t\t\t\tif isWhitespace(p.initialTypes[j]) { // including format codes\n\t\t\t\t\tresult[j] = p.embeddingLevel\n\t\t\t\t} else {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Rule L1, clause four.\n\tstart := 0\n\tfor _, limit := range linebreaks {\n\t\tfor j := limit - 1; j >= start; j-- {\n\t\t\tif isWhitespace(p.initialTypes[j]) { // including format codes\n\t\t\t\tresult[j] = p.embeddingLevel\n\t\t\t} else {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tstart = limit\n\t}\n\n\treturn result\n}\n\n// getReordering returns the reordering of lines from a visual index to a\n// logical index for line breaks at the given offsets.\n//\n// Lines are concatenated from left to right. So for example, the fifth\n// character from the left on the third line is\n//\n//\tgetReordering(linebreaks)[linebreaks[1] + 4]\n//\n// (linebreaks[1] is the position after the last character of the second\n// line, which is also the index of the first character on the third line,\n// and adding four gets the fifth character from the left).\n//\n// The linebreaks array must include at least one value. The values must be\n// in strictly increasing order (no duplicates) between 1 and the length of\n// the text, inclusive. The last value must be the length of the text.\nfunc (p *paragraph) getReordering(linebreaks []int) []int {\n\tvalidateLineBreaks(linebreaks, p.Len())\n\n\treturn computeMultilineReordering(p.getLevels(linebreaks), linebreaks)\n}\n\n// Return multiline reordering array for a given level array. Reordering\n// does not occur across a line break.\nfunc computeMultilineReordering(levels []level, linebreaks []int) []int {\n\tresult := make([]int, len(levels))\n\n\tstart := 0\n\tfor _, limit := range linebreaks {\n\t\ttempLevels := make([]level, limit-start)\n\t\tcopy(tempLevels, levels[start:])\n\n\t\tfor j, order := range computeReordering(tempLevels) {\n\t\t\tresult[start+j] = order + start\n\t\t}\n\t\tstart = limit\n\t}\n\treturn result\n}\n\n// Return reordering array for a given level array. This reorders a single\n// line. The reordering is a visual to logical map. For example, the\n// leftmost char is string.charAt(order[0]). Rule L2.\nfunc computeReordering(levels []level) []int {\n\tresult := make([]int, len(levels))\n\t// initialize order\n\tfor i := range result {\n\t\tresult[i] = i\n\t}\n\n\t// locate highest level found on line.\n\t// Note the rules say text, but no reordering across line bounds is\n\t// performed, so this is sufficient.\n\thighestLevel := level(0)\n\tlowestOddLevel := level(maxDepth + 2)\n\tfor _, level := range levels {\n\t\tif level > highestLevel {\n\t\t\thighestLevel = level\n\t\t}\n\t\tif level&1 != 0 && level < lowestOddLevel {\n\t\t\tlowestOddLevel = level\n\t\t}\n\t}\n\n\tfor level := highestLevel; level >= lowestOddLevel; level-- {\n\t\tfor i := 0; i < len(levels); i++ {\n\t\t\tif levels[i] >= level {\n\t\t\t\t// find range of text at or above this level\n\t\t\t\tstart := i\n\t\t\t\tlimit := i + 1\n\t\t\t\tfor limit < len(levels) && levels[limit] >= level {\n\t\t\t\t\tlimit++\n\t\t\t\t}\n\n\t\t\t\tfor j, k := start, limit-1; j < k; j, k = j+1, k-1 {\n\t\t\t\t\tresult[j], result[k] = result[k], result[j]\n\t\t\t\t}\n\t\t\t\t// skip to end of level run\n\t\t\t\ti = limit\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result\n}\n\n// isWhitespace reports whether the type is considered a whitespace type for the\n// line break rules.\nfunc isWhitespace(c Class) bool {\n\tswitch c {\n\tcase LRE, RLE, LRO, RLO, PDF, LRI, RLI, FSI, PDI, BN, WS:\n\t\treturn true\n\t}\n\treturn false\n}\n\n// isRemovedByX9 reports whether the type is one of the types removed in X9.\nfunc isRemovedByX9(c Class) bool {\n\tswitch c {\n\tcase LRE, RLE, LRO, RLO, PDF, BN:\n\t\treturn true\n\t}\n\treturn false\n}\n\n// typeForLevel reports the strong type (L or R) corresponding to the level.\nfunc typeForLevel(level level) Class {\n\tif (level & 0x1) == 0 {\n\t\treturn L\n\t}\n\treturn R\n}\n\nfunc validateTypes(types []Class) error {\n\tif len(types) == 0 {\n\t\treturn fmt.Errorf(\"types is null\")\n\t}\n\tfor i, t := range types[:len(types)-1] {\n\t\tif t == B {\n\t\t\treturn fmt.Errorf(\"B type before end of paragraph at index: %d\", i)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validateParagraphEmbeddingLevel(embeddingLevel level) error {\n\tif embeddingLevel != implicitLevel &&\n\t\tembeddingLevel != 0 &&\n\t\tembeddingLevel != 1 {\n\t\treturn fmt.Errorf(\"illegal paragraph embedding level: %d\", embeddingLevel)\n\t}\n\treturn nil\n}\n\nfunc validateLineBreaks(linebreaks []int, textLength int) error {\n\tprev := 0\n\tfor i, next := range linebreaks {\n\t\tif next <= prev {\n\t\t\treturn fmt.Errorf(\"bad linebreak: %d at index: %d\", next, i)\n\t\t}\n\t\tprev = next\n\t}\n\tif prev != textLength {\n\t\treturn fmt.Errorf(\"last linebreak was %d, want %d\", prev, textLength)\n\t}\n\treturn nil\n}\n\nfunc validatePbTypes(pairTypes []bracketType) error {\n\tif len(pairTypes) == 0 {\n\t\treturn fmt.Errorf(\"pairTypes is null\")\n\t}\n\tfor i, pt := range pairTypes {\n\t\tswitch pt {\n\t\tcase bpNone, bpOpen, bpClose:\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"illegal pairType value at %d: %v\", i, pairTypes[i])\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validatePbValues(pairValues []rune, pairTypes []bracketType) error {\n\tif pairValues == nil {\n\t\treturn fmt.Errorf(\"pairValues is null\")\n\t}\n\tif len(pairTypes) != len(pairValues) {\n\t\treturn fmt.Errorf(\"pairTypes is different length from pairValues\")\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/prop.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage bidi\n\nimport \"unicode/utf8\"\n\n// Properties provides access to BiDi properties of runes.\ntype Properties struct {\n\tentry uint8\n\tlast  uint8\n}\n\nvar trie = newBidiTrie(0)\n\n// TODO: using this for bidirule reduces the running time by about 5%. Consider\n// if this is worth exposing or if we can find a way to speed up the Class\n// method.\n//\n// // CompactClass is like Class, but maps all of the BiDi control classes\n// // (LRO, RLO, LRE, RLE, PDF, LRI, RLI, FSI, PDI) to the class Control.\n// func (p Properties) CompactClass() Class {\n// \treturn Class(p.entry & 0x0F)\n// }\n\n// Class returns the Bidi class for p.\nfunc (p Properties) Class() Class {\n\tc := Class(p.entry & 0x0F)\n\tif c == Control {\n\t\tc = controlByteToClass[p.last&0xF]\n\t}\n\treturn c\n}\n\n// IsBracket reports whether the rune is a bracket.\nfunc (p Properties) IsBracket() bool { return p.entry&0xF0 != 0 }\n\n// IsOpeningBracket reports whether the rune is an opening bracket.\n// IsBracket must return true.\nfunc (p Properties) IsOpeningBracket() bool { return p.entry&openMask != 0 }\n\n// TODO: find a better API and expose.\nfunc (p Properties) reverseBracket(r rune) rune {\n\treturn xorMasks[p.entry>>xorMaskShift] ^ r\n}\n\nvar controlByteToClass = [16]Class{\n\t0xD: LRO, // U+202D LeftToRightOverride,\n\t0xE: RLO, // U+202E RightToLeftOverride,\n\t0xA: LRE, // U+202A LeftToRightEmbedding,\n\t0xB: RLE, // U+202B RightToLeftEmbedding,\n\t0xC: PDF, // U+202C PopDirectionalFormat,\n\t0x6: LRI, // U+2066 LeftToRightIsolate,\n\t0x7: RLI, // U+2067 RightToLeftIsolate,\n\t0x8: FSI, // U+2068 FirstStrongIsolate,\n\t0x9: PDI, // U+2069 PopDirectionalIsolate,\n}\n\n// LookupRune returns properties for r.\nfunc LookupRune(r rune) (p Properties, size int) {\n\tvar buf [4]byte\n\tn := utf8.EncodeRune(buf[:], r)\n\treturn Lookup(buf[:n])\n}\n\n// TODO: these lookup methods are based on the generated trie code. The returned\n// sizes have slightly different semantics from the generated code, in that it\n// always returns size==1 for an illegal UTF-8 byte (instead of the length\n// of the maximum invalid subsequence). Most Transformers, like unicode/norm,\n// leave invalid UTF-8 untouched, in which case it has performance benefits to\n// do so (without changing the semantics). Bidi requires the semantics used here\n// for the bidirule implementation to be compatible with the Go semantics.\n//  They ultimately should perhaps be adopted by all trie implementations, for\n// convenience sake.\n// This unrolled code also boosts performance of the secure/bidirule package by\n// about 30%.\n// So, to remove this code:\n//   - add option to trie generator to define return type.\n//   - always return 1 byte size for ill-formed UTF-8 runes.\n\n// Lookup returns properties for the first rune in s and the width in bytes of\n// its encoding. The size will be 0 if s does not hold enough bytes to complete\n// the encoding.\nfunc Lookup(s []byte) (p Properties, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn Properties{entry: bidiValues[c0]}, 1\n\tcase c0 < 0xC2:\n\t\treturn Properties{}, 1\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c1)}, 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c2), last: c2}, 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c3)}, 4\n\t}\n\t// Illegal rune\n\treturn Properties{}, 1\n}\n\n// LookupString returns properties for the first rune in s and the width in\n// bytes of its encoding. The size will be 0 if s does not hold enough bytes to\n// complete the encoding.\nfunc LookupString(s string) (p Properties, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn Properties{entry: bidiValues[c0]}, 1\n\tcase c0 < 0xC2:\n\t\treturn Properties{}, 1\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c1)}, 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c2), last: c2}, 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c3)}, 4\n\t}\n\t// Illegal rune\n\treturn Properties{}, 1\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build !go1.27\n\npackage bidi\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"15.0.0\"\n\n// xorMasks contains masks to be xor-ed with brackets to get the reverse\n// version.\nvar xorMasks = []int32{ // 8 elements\n\t0, 1, 6, 7, 3, 15, 29, 63,\n} // Size: 56 bytes\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookup(s []byte) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupUnsafe(s []byte) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookupString(s string) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupStringUnsafe(s string) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// bidiTrie. Total size: 19904 bytes (19.44 KiB). Checksum: b1f201ed2debb6c8.\ntype bidiTrie struct{}\n\nfunc newBidiTrie(i int) *bidiTrie {\n\treturn &bidiTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *bidiTrie) lookupValue(n uint32, b byte) uint8 {\n\tswitch {\n\tdefault:\n\t\treturn uint8(bidiValues[n<<6+uint32(b)])\n\t}\n}\n\n// bidiValues: 259 blocks, 16576 entries, 16576 bytes\n// The third block is the zero block.\nvar bidiValues = [16576]uint8{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b,\n\t0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008,\n\t0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b,\n\t0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b,\n\t0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007,\n\t0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004,\n\t0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a,\n\t0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006,\n\t0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002,\n\t0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a,\n\t0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x000a,\n\t0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a,\n\t0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a,\n\t0x7b: 0x005a,\n\t0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007,\n\t0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b,\n\t0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b,\n\t0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b,\n\t0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b,\n\t0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004,\n\t0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a,\n\t0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a,\n\t0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a,\n\t0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a,\n\t0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a,\n\t// Block 0x4, offset 0x100\n\t0x117: 0x000a,\n\t0x137: 0x000a,\n\t// Block 0x5, offset 0x140\n\t0x179: 0x000a, 0x17a: 0x000a,\n\t// Block 0x6, offset 0x180\n\t0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a,\n\t0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a,\n\t0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a,\n\t0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a,\n\t0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a,\n\t0x19e: 0x000a, 0x19f: 0x000a,\n\t0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a,\n\t0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a,\n\t0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a,\n\t0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a,\n\t0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c,\n\t0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c,\n\t0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c,\n\t0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c,\n\t0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c,\n\t0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c,\n\t0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c,\n\t0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c,\n\t0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c,\n\t0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c,\n\t0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c,\n\t0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c,\n\t0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c,\n\t0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c,\n\t0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c,\n\t0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c,\n\t0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c,\n\t0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c,\n\t0x234: 0x000a, 0x235: 0x000a,\n\t0x23e: 0x000a,\n\t// Block 0x9, offset 0x240\n\t0x244: 0x000a, 0x245: 0x000a,\n\t0x247: 0x000a,\n\t// Block 0xa, offset 0x280\n\t0x2b6: 0x000a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c,\n\t0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c,\n\t// Block 0xc, offset 0x300\n\t0x30a: 0x000a,\n\t0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c,\n\t0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c,\n\t0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c,\n\t0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c,\n\t0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c,\n\t0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c,\n\t0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c,\n\t0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c,\n\t0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c,\n\t0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001,\n\t0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001,\n\t0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001,\n\t0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001,\n\t0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001,\n\t0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001,\n\t0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001,\n\t0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001,\n\t0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001,\n\t0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001,\n\t// Block 0xe, offset 0x380\n\t0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005,\n\t0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d,\n\t0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c,\n\t0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c,\n\t0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d,\n\t0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d,\n\t0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d,\n\t0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d,\n\t0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d,\n\t0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d,\n\t0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d,\n\t0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c,\n\t0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c,\n\t0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c,\n\t0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c,\n\t0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005,\n\t0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005,\n\t0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d,\n\t0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d,\n\t0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d,\n\t0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d,\n\t0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d,\n\t0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d,\n\t0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d,\n\t0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d,\n\t0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d,\n\t0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d,\n\t0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d,\n\t0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d,\n\t0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d,\n\t0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d,\n\t0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d,\n\t0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d,\n\t0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c,\n\t0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005,\n\t0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c,\n\t0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a,\n\t0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d,\n\t0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002,\n\t0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d,\n\t0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d,\n\t0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d,\n\t0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c,\n\t0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d,\n\t0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d,\n\t0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d,\n\t0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d,\n\t0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d,\n\t0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c,\n\t0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c,\n\t0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c,\n\t0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d,\n\t0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d,\n\t0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d,\n\t0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d,\n\t0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d,\n\t0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d,\n\t0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d,\n\t0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d,\n\t0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d,\n\t0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d,\n\t0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d,\n\t0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d,\n\t0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d,\n\t0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d,\n\t0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d,\n\t0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c,\n\t0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c,\n\t0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d,\n\t0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d,\n\t0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001,\n\t0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001,\n\t0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001,\n\t0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001,\n\t0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001,\n\t0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001,\n\t0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001,\n\t0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c,\n\t0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001,\n\t0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001,\n\t0x57c: 0x0001, 0x57d: 0x000c, 0x57e: 0x0001, 0x57f: 0x0001,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001,\n\t0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001,\n\t0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001,\n\t0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c,\n\t0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c,\n\t0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c,\n\t0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c,\n\t0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001,\n\t0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001,\n\t0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001,\n\t0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001,\n\t0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001,\n\t0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001,\n\t0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001,\n\t0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001,\n\t0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x000d, 0x5e1: 0x000d, 0x5e2: 0x000d, 0x5e3: 0x000d,\n\t0x5e4: 0x000d, 0x5e5: 0x000d, 0x5e6: 0x000d, 0x5e7: 0x000d, 0x5e8: 0x000d, 0x5e9: 0x000d,\n\t0x5ea: 0x000d, 0x5eb: 0x0001, 0x5ec: 0x0001, 0x5ed: 0x0001, 0x5ee: 0x0001, 0x5ef: 0x0001,\n\t0x5f0: 0x000d, 0x5f1: 0x000d, 0x5f2: 0x000d, 0x5f3: 0x000d, 0x5f4: 0x000d, 0x5f5: 0x000d,\n\t0x5f6: 0x000d, 0x5f7: 0x000d, 0x5f8: 0x000d, 0x5f9: 0x000d, 0x5fa: 0x000d, 0x5fb: 0x000d,\n\t0x5fc: 0x000d, 0x5fd: 0x000d, 0x5fe: 0x000d, 0x5ff: 0x000d,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x000d, 0x601: 0x000d, 0x602: 0x000d, 0x603: 0x000d, 0x604: 0x000d, 0x605: 0x000d,\n\t0x606: 0x000d, 0x607: 0x000d, 0x608: 0x000d, 0x609: 0x000d, 0x60a: 0x000d, 0x60b: 0x000d,\n\t0x60c: 0x000d, 0x60d: 0x000d, 0x60e: 0x000d, 0x60f: 0x0001, 0x610: 0x0005, 0x611: 0x0005,\n\t0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x0001,\n\t0x618: 0x000c, 0x619: 0x000c, 0x61a: 0x000c, 0x61b: 0x000c, 0x61c: 0x000c, 0x61d: 0x000c,\n\t0x61e: 0x000c, 0x61f: 0x000c, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d,\n\t0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d,\n\t0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d,\n\t0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d,\n\t0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d,\n\t0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d,\n\t0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000c, 0x64b: 0x000c,\n\t0x64c: 0x000c, 0x64d: 0x000c, 0x64e: 0x000c, 0x64f: 0x000c, 0x650: 0x000c, 0x651: 0x000c,\n\t0x652: 0x000c, 0x653: 0x000c, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c,\n\t0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c,\n\t0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c,\n\t0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c,\n\t0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c,\n\t0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c,\n\t0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c,\n\t0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c,\n\t0x6ba: 0x000c,\n\t0x6bc: 0x000c,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c,\n\t0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c,\n\t0x6cd: 0x000c, 0x6d1: 0x000c,\n\t0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c,\n\t0x6e2: 0x000c, 0x6e3: 0x000c,\n\t// Block 0x1c, offset 0x700\n\t0x701: 0x000c,\n\t0x73c: 0x000c,\n\t// Block 0x1d, offset 0x740\n\t0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c,\n\t0x74d: 0x000c,\n\t0x762: 0x000c, 0x763: 0x000c,\n\t0x772: 0x0004, 0x773: 0x0004,\n\t0x77b: 0x0004,\n\t0x77e: 0x000c,\n\t// Block 0x1e, offset 0x780\n\t0x781: 0x000c, 0x782: 0x000c,\n\t0x7bc: 0x000c,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x000c, 0x7c2: 0x000c,\n\t0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c,\n\t0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c,\n\t0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c,\n\t// Block 0x20, offset 0x800\n\t0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c,\n\t0x807: 0x000c, 0x808: 0x000c,\n\t0x80d: 0x000c,\n\t0x822: 0x000c, 0x823: 0x000c,\n\t0x831: 0x0004,\n\t0x83a: 0x000c, 0x83b: 0x000c,\n\t0x83c: 0x000c, 0x83d: 0x000c, 0x83e: 0x000c, 0x83f: 0x000c,\n\t// Block 0x21, offset 0x840\n\t0x841: 0x000c,\n\t0x87c: 0x000c, 0x87f: 0x000c,\n\t// Block 0x22, offset 0x880\n\t0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c,\n\t0x88d: 0x000c,\n\t0x895: 0x000c, 0x896: 0x000c,\n\t0x8a2: 0x000c, 0x8a3: 0x000c,\n\t// Block 0x23, offset 0x8c0\n\t0x8c2: 0x000c,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x000c,\n\t0x90d: 0x000c,\n\t0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a,\n\t0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x000c, 0x944: 0x000c,\n\t0x97c: 0x000c, 0x97e: 0x000c, 0x97f: 0x000c,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x000c,\n\t0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c,\n\t0x98c: 0x000c, 0x98d: 0x000c,\n\t0x995: 0x000c, 0x996: 0x000c,\n\t0x9a2: 0x000c, 0x9a3: 0x000c,\n\t0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a,\n\t0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a,\n\t// Block 0x27, offset 0x9c0\n\t0x9cc: 0x000c, 0x9cd: 0x000c,\n\t0x9e2: 0x000c, 0x9e3: 0x000c,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x000c, 0xa01: 0x000c,\n\t0xa3b: 0x000c,\n\t0xa3c: 0x000c,\n\t// Block 0x29, offset 0xa40\n\t0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c,\n\t0xa4d: 0x000c,\n\t0xa62: 0x000c, 0xa63: 0x000c,\n\t// Block 0x2a, offset 0xa80\n\t0xa81: 0x000c,\n\t// Block 0x2b, offset 0xac0\n\t0xaca: 0x000c,\n\t0xad2: 0x000c, 0xad3: 0x000c, 0xad4: 0x000c, 0xad6: 0x000c,\n\t// Block 0x2c, offset 0xb00\n\t0xb31: 0x000c, 0xb34: 0x000c, 0xb35: 0x000c,\n\t0xb36: 0x000c, 0xb37: 0x000c, 0xb38: 0x000c, 0xb39: 0x000c, 0xb3a: 0x000c,\n\t0xb3f: 0x0004,\n\t// Block 0x2d, offset 0xb40\n\t0xb47: 0x000c, 0xb48: 0x000c, 0xb49: 0x000c, 0xb4a: 0x000c, 0xb4b: 0x000c,\n\t0xb4c: 0x000c, 0xb4d: 0x000c, 0xb4e: 0x000c,\n\t// Block 0x2e, offset 0xb80\n\t0xbb1: 0x000c, 0xbb4: 0x000c, 0xbb5: 0x000c,\n\t0xbb6: 0x000c, 0xbb7: 0x000c, 0xbb8: 0x000c, 0xbb9: 0x000c, 0xbba: 0x000c, 0xbbb: 0x000c,\n\t0xbbc: 0x000c,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc8: 0x000c, 0xbc9: 0x000c, 0xbca: 0x000c, 0xbcb: 0x000c,\n\t0xbcc: 0x000c, 0xbcd: 0x000c, 0xbce: 0x000c,\n\t// Block 0x30, offset 0xc00\n\t0xc18: 0x000c, 0xc19: 0x000c,\n\t0xc35: 0x000c,\n\t0xc37: 0x000c, 0xc39: 0x000c, 0xc3a: 0x003a, 0xc3b: 0x002a,\n\t0xc3c: 0x003a, 0xc3d: 0x002a,\n\t// Block 0x31, offset 0xc40\n\t0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c,\n\t0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c,\n\t0xc7c: 0x000c, 0xc7d: 0x000c, 0xc7e: 0x000c,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x000c, 0xc81: 0x000c, 0xc82: 0x000c, 0xc83: 0x000c, 0xc84: 0x000c,\n\t0xc86: 0x000c, 0xc87: 0x000c,\n\t0xc8d: 0x000c, 0xc8e: 0x000c, 0xc8f: 0x000c, 0xc90: 0x000c, 0xc91: 0x000c,\n\t0xc92: 0x000c, 0xc93: 0x000c, 0xc94: 0x000c, 0xc95: 0x000c, 0xc96: 0x000c, 0xc97: 0x000c,\n\t0xc99: 0x000c, 0xc9a: 0x000c, 0xc9b: 0x000c, 0xc9c: 0x000c, 0xc9d: 0x000c,\n\t0xc9e: 0x000c, 0xc9f: 0x000c, 0xca0: 0x000c, 0xca1: 0x000c, 0xca2: 0x000c, 0xca3: 0x000c,\n\t0xca4: 0x000c, 0xca5: 0x000c, 0xca6: 0x000c, 0xca7: 0x000c, 0xca8: 0x000c, 0xca9: 0x000c,\n\t0xcaa: 0x000c, 0xcab: 0x000c, 0xcac: 0x000c, 0xcad: 0x000c, 0xcae: 0x000c, 0xcaf: 0x000c,\n\t0xcb0: 0x000c, 0xcb1: 0x000c, 0xcb2: 0x000c, 0xcb3: 0x000c, 0xcb4: 0x000c, 0xcb5: 0x000c,\n\t0xcb6: 0x000c, 0xcb7: 0x000c, 0xcb8: 0x000c, 0xcb9: 0x000c, 0xcba: 0x000c, 0xcbb: 0x000c,\n\t0xcbc: 0x000c,\n\t// Block 0x33, offset 0xcc0\n\t0xcc6: 0x000c,\n\t// Block 0x34, offset 0xd00\n\t0xd2d: 0x000c, 0xd2e: 0x000c, 0xd2f: 0x000c,\n\t0xd30: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c, 0xd35: 0x000c,\n\t0xd36: 0x000c, 0xd37: 0x000c, 0xd39: 0x000c, 0xd3a: 0x000c,\n\t0xd3d: 0x000c, 0xd3e: 0x000c,\n\t// Block 0x35, offset 0xd40\n\t0xd58: 0x000c, 0xd59: 0x000c,\n\t0xd5e: 0x000c, 0xd5f: 0x000c, 0xd60: 0x000c,\n\t0xd71: 0x000c, 0xd72: 0x000c, 0xd73: 0x000c, 0xd74: 0x000c,\n\t// Block 0x36, offset 0xd80\n\t0xd82: 0x000c, 0xd85: 0x000c,\n\t0xd86: 0x000c,\n\t0xd8d: 0x000c,\n\t0xd9d: 0x000c,\n\t// Block 0x37, offset 0xdc0\n\t0xddd: 0x000c,\n\t0xdde: 0x000c, 0xddf: 0x000c,\n\t// Block 0x38, offset 0xe00\n\t0xe10: 0x000a, 0xe11: 0x000a,\n\t0xe12: 0x000a, 0xe13: 0x000a, 0xe14: 0x000a, 0xe15: 0x000a, 0xe16: 0x000a, 0xe17: 0x000a,\n\t0xe18: 0x000a, 0xe19: 0x000a,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x000a,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x0009,\n\t0xe9b: 0x007a, 0xe9c: 0x006a,\n\t// Block 0x3b, offset 0xec0\n\t0xed2: 0x000c, 0xed3: 0x000c, 0xed4: 0x000c,\n\t0xef2: 0x000c, 0xef3: 0x000c,\n\t// Block 0x3c, offset 0xf00\n\t0xf12: 0x000c, 0xf13: 0x000c,\n\t0xf32: 0x000c, 0xf33: 0x000c,\n\t// Block 0x3d, offset 0xf40\n\t0xf74: 0x000c, 0xf75: 0x000c,\n\t0xf77: 0x000c, 0xf78: 0x000c, 0xf79: 0x000c, 0xf7a: 0x000c, 0xf7b: 0x000c,\n\t0xf7c: 0x000c, 0xf7d: 0x000c,\n\t// Block 0x3e, offset 0xf80\n\t0xf86: 0x000c, 0xf89: 0x000c, 0xf8a: 0x000c, 0xf8b: 0x000c,\n\t0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000c, 0xf8f: 0x000c, 0xf90: 0x000c, 0xf91: 0x000c,\n\t0xf92: 0x000c, 0xf93: 0x000c,\n\t0xf9b: 0x0004, 0xf9d: 0x000c,\n\t0xfb0: 0x000a, 0xfb1: 0x000a, 0xfb2: 0x000a, 0xfb3: 0x000a, 0xfb4: 0x000a, 0xfb5: 0x000a,\n\t0xfb6: 0x000a, 0xfb7: 0x000a, 0xfb8: 0x000a, 0xfb9: 0x000a,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x000a, 0xfc1: 0x000a, 0xfc2: 0x000a, 0xfc3: 0x000a, 0xfc4: 0x000a, 0xfc5: 0x000a,\n\t0xfc6: 0x000a, 0xfc7: 0x000a, 0xfc8: 0x000a, 0xfc9: 0x000a, 0xfca: 0x000a, 0xfcb: 0x000c,\n\t0xfcc: 0x000c, 0xfcd: 0x000c, 0xfce: 0x000b, 0xfcf: 0x000c,\n\t// Block 0x40, offset 0x1000\n\t0x1005: 0x000c,\n\t0x1006: 0x000c,\n\t0x1029: 0x000c,\n\t// Block 0x41, offset 0x1040\n\t0x1060: 0x000c, 0x1061: 0x000c, 0x1062: 0x000c,\n\t0x1067: 0x000c, 0x1068: 0x000c,\n\t0x1072: 0x000c,\n\t0x1079: 0x000c, 0x107a: 0x000c, 0x107b: 0x000c,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x000a, 0x1084: 0x000a, 0x1085: 0x000a,\n\t// Block 0x43, offset 0x10c0\n\t0x10de: 0x000a, 0x10df: 0x000a, 0x10e0: 0x000a, 0x10e1: 0x000a, 0x10e2: 0x000a, 0x10e3: 0x000a,\n\t0x10e4: 0x000a, 0x10e5: 0x000a, 0x10e6: 0x000a, 0x10e7: 0x000a, 0x10e8: 0x000a, 0x10e9: 0x000a,\n\t0x10ea: 0x000a, 0x10eb: 0x000a, 0x10ec: 0x000a, 0x10ed: 0x000a, 0x10ee: 0x000a, 0x10ef: 0x000a,\n\t0x10f0: 0x000a, 0x10f1: 0x000a, 0x10f2: 0x000a, 0x10f3: 0x000a, 0x10f4: 0x000a, 0x10f5: 0x000a,\n\t0x10f6: 0x000a, 0x10f7: 0x000a, 0x10f8: 0x000a, 0x10f9: 0x000a, 0x10fa: 0x000a, 0x10fb: 0x000a,\n\t0x10fc: 0x000a, 0x10fd: 0x000a, 0x10fe: 0x000a, 0x10ff: 0x000a,\n\t// Block 0x44, offset 0x1100\n\t0x1117: 0x000c,\n\t0x1118: 0x000c, 0x111b: 0x000c,\n\t// Block 0x45, offset 0x1140\n\t0x1156: 0x000c,\n\t0x1158: 0x000c, 0x1159: 0x000c, 0x115a: 0x000c, 0x115b: 0x000c, 0x115c: 0x000c, 0x115d: 0x000c,\n\t0x115e: 0x000c, 0x1160: 0x000c, 0x1162: 0x000c,\n\t0x1165: 0x000c, 0x1166: 0x000c, 0x1167: 0x000c, 0x1168: 0x000c, 0x1169: 0x000c,\n\t0x116a: 0x000c, 0x116b: 0x000c, 0x116c: 0x000c,\n\t0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c,\n\t0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c,\n\t0x117c: 0x000c, 0x117f: 0x000c,\n\t// Block 0x46, offset 0x1180\n\t0x11b0: 0x000c, 0x11b1: 0x000c, 0x11b2: 0x000c, 0x11b3: 0x000c, 0x11b4: 0x000c, 0x11b5: 0x000c,\n\t0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c, 0x11bb: 0x000c,\n\t0x11bc: 0x000c, 0x11bd: 0x000c, 0x11be: 0x000c, 0x11bf: 0x000c,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0x000c, 0x11c1: 0x000c, 0x11c2: 0x000c, 0x11c3: 0x000c, 0x11c4: 0x000c, 0x11c5: 0x000c,\n\t0x11c6: 0x000c, 0x11c7: 0x000c, 0x11c8: 0x000c, 0x11c9: 0x000c, 0x11ca: 0x000c, 0x11cb: 0x000c,\n\t0x11cc: 0x000c, 0x11cd: 0x000c, 0x11ce: 0x000c,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x000c, 0x1201: 0x000c, 0x1202: 0x000c, 0x1203: 0x000c,\n\t0x1234: 0x000c,\n\t0x1236: 0x000c, 0x1237: 0x000c, 0x1238: 0x000c, 0x1239: 0x000c, 0x123a: 0x000c,\n\t0x123c: 0x000c,\n\t// Block 0x49, offset 0x1240\n\t0x1242: 0x000c,\n\t0x126b: 0x000c, 0x126c: 0x000c, 0x126d: 0x000c, 0x126e: 0x000c, 0x126f: 0x000c,\n\t0x1270: 0x000c, 0x1271: 0x000c, 0x1272: 0x000c, 0x1273: 0x000c,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x000c, 0x1281: 0x000c,\n\t0x12a2: 0x000c, 0x12a3: 0x000c,\n\t0x12a4: 0x000c, 0x12a5: 0x000c, 0x12a8: 0x000c, 0x12a9: 0x000c,\n\t0x12ab: 0x000c, 0x12ac: 0x000c, 0x12ad: 0x000c,\n\t// Block 0x4b, offset 0x12c0\n\t0x12e6: 0x000c, 0x12e8: 0x000c, 0x12e9: 0x000c,\n\t0x12ed: 0x000c, 0x12ef: 0x000c,\n\t0x12f0: 0x000c, 0x12f1: 0x000c,\n\t// Block 0x4c, offset 0x1300\n\t0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c,\n\t0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c,\n\t0x1336: 0x000c, 0x1337: 0x000c,\n\t// Block 0x4d, offset 0x1340\n\t0x1350: 0x000c, 0x1351: 0x000c,\n\t0x1352: 0x000c, 0x1354: 0x000c, 0x1355: 0x000c, 0x1356: 0x000c, 0x1357: 0x000c,\n\t0x1358: 0x000c, 0x1359: 0x000c, 0x135a: 0x000c, 0x135b: 0x000c, 0x135c: 0x000c, 0x135d: 0x000c,\n\t0x135e: 0x000c, 0x135f: 0x000c, 0x1360: 0x000c, 0x1362: 0x000c, 0x1363: 0x000c,\n\t0x1364: 0x000c, 0x1365: 0x000c, 0x1366: 0x000c, 0x1367: 0x000c, 0x1368: 0x000c,\n\t0x136d: 0x000c,\n\t0x1374: 0x000c,\n\t0x1378: 0x000c, 0x1379: 0x000c,\n\t// Block 0x4e, offset 0x1380\n\t0x13bd: 0x000a, 0x13bf: 0x000a,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x000a, 0x13c1: 0x000a,\n\t0x13cd: 0x000a, 0x13ce: 0x000a, 0x13cf: 0x000a,\n\t0x13dd: 0x000a,\n\t0x13de: 0x000a, 0x13df: 0x000a,\n\t0x13ed: 0x000a, 0x13ee: 0x000a, 0x13ef: 0x000a,\n\t0x13fd: 0x000a, 0x13fe: 0x000a,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x0009, 0x1401: 0x0009, 0x1402: 0x0009, 0x1403: 0x0009, 0x1404: 0x0009, 0x1405: 0x0009,\n\t0x1406: 0x0009, 0x1407: 0x0009, 0x1408: 0x0009, 0x1409: 0x0009, 0x140a: 0x0009, 0x140b: 0x000b,\n\t0x140c: 0x000b, 0x140d: 0x000b, 0x140f: 0x0001, 0x1410: 0x000a, 0x1411: 0x000a,\n\t0x1412: 0x000a, 0x1413: 0x000a, 0x1414: 0x000a, 0x1415: 0x000a, 0x1416: 0x000a, 0x1417: 0x000a,\n\t0x1418: 0x000a, 0x1419: 0x000a, 0x141a: 0x000a, 0x141b: 0x000a, 0x141c: 0x000a, 0x141d: 0x000a,\n\t0x141e: 0x000a, 0x141f: 0x000a, 0x1420: 0x000a, 0x1421: 0x000a, 0x1422: 0x000a, 0x1423: 0x000a,\n\t0x1424: 0x000a, 0x1425: 0x000a, 0x1426: 0x000a, 0x1427: 0x000a, 0x1428: 0x0009, 0x1429: 0x0007,\n\t0x142a: 0x000e, 0x142b: 0x000e, 0x142c: 0x000e, 0x142d: 0x000e, 0x142e: 0x000e, 0x142f: 0x0006,\n\t0x1430: 0x0004, 0x1431: 0x0004, 0x1432: 0x0004, 0x1433: 0x0004, 0x1434: 0x0004, 0x1435: 0x000a,\n\t0x1436: 0x000a, 0x1437: 0x000a, 0x1438: 0x000a, 0x1439: 0x000a, 0x143a: 0x000a, 0x143b: 0x000a,\n\t0x143c: 0x000a, 0x143d: 0x000a, 0x143e: 0x000a, 0x143f: 0x000a,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x000a, 0x1441: 0x000a, 0x1442: 0x000a, 0x1443: 0x000a, 0x1444: 0x0006, 0x1445: 0x009a,\n\t0x1446: 0x008a, 0x1447: 0x000a, 0x1448: 0x000a, 0x1449: 0x000a, 0x144a: 0x000a, 0x144b: 0x000a,\n\t0x144c: 0x000a, 0x144d: 0x000a, 0x144e: 0x000a, 0x144f: 0x000a, 0x1450: 0x000a, 0x1451: 0x000a,\n\t0x1452: 0x000a, 0x1453: 0x000a, 0x1454: 0x000a, 0x1455: 0x000a, 0x1456: 0x000a, 0x1457: 0x000a,\n\t0x1458: 0x000a, 0x1459: 0x000a, 0x145a: 0x000a, 0x145b: 0x000a, 0x145c: 0x000a, 0x145d: 0x000a,\n\t0x145e: 0x000a, 0x145f: 0x0009, 0x1460: 0x000b, 0x1461: 0x000b, 0x1462: 0x000b, 0x1463: 0x000b,\n\t0x1464: 0x000b, 0x1465: 0x000b, 0x1466: 0x000e, 0x1467: 0x000e, 0x1468: 0x000e, 0x1469: 0x000e,\n\t0x146a: 0x000b, 0x146b: 0x000b, 0x146c: 0x000b, 0x146d: 0x000b, 0x146e: 0x000b, 0x146f: 0x000b,\n\t0x1470: 0x0002, 0x1474: 0x0002, 0x1475: 0x0002,\n\t0x1476: 0x0002, 0x1477: 0x0002, 0x1478: 0x0002, 0x1479: 0x0002, 0x147a: 0x0003, 0x147b: 0x0003,\n\t0x147c: 0x000a, 0x147d: 0x009a, 0x147e: 0x008a,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x0002, 0x1481: 0x0002, 0x1482: 0x0002, 0x1483: 0x0002, 0x1484: 0x0002, 0x1485: 0x0002,\n\t0x1486: 0x0002, 0x1487: 0x0002, 0x1488: 0x0002, 0x1489: 0x0002, 0x148a: 0x0003, 0x148b: 0x0003,\n\t0x148c: 0x000a, 0x148d: 0x009a, 0x148e: 0x008a,\n\t0x14a0: 0x0004, 0x14a1: 0x0004, 0x14a2: 0x0004, 0x14a3: 0x0004,\n\t0x14a4: 0x0004, 0x14a5: 0x0004, 0x14a6: 0x0004, 0x14a7: 0x0004, 0x14a8: 0x0004, 0x14a9: 0x0004,\n\t0x14aa: 0x0004, 0x14ab: 0x0004, 0x14ac: 0x0004, 0x14ad: 0x0004, 0x14ae: 0x0004, 0x14af: 0x0004,\n\t0x14b0: 0x0004, 0x14b1: 0x0004, 0x14b2: 0x0004, 0x14b3: 0x0004, 0x14b4: 0x0004, 0x14b5: 0x0004,\n\t0x14b6: 0x0004, 0x14b7: 0x0004, 0x14b8: 0x0004, 0x14b9: 0x0004, 0x14ba: 0x0004, 0x14bb: 0x0004,\n\t0x14bc: 0x0004, 0x14bd: 0x0004, 0x14be: 0x0004, 0x14bf: 0x0004,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x0004, 0x14c1: 0x0004, 0x14c2: 0x0004, 0x14c3: 0x0004, 0x14c4: 0x0004, 0x14c5: 0x0004,\n\t0x14c6: 0x0004, 0x14c7: 0x0004, 0x14c8: 0x0004, 0x14c9: 0x0004, 0x14ca: 0x0004, 0x14cb: 0x0004,\n\t0x14cc: 0x0004, 0x14cd: 0x0004, 0x14ce: 0x0004, 0x14cf: 0x0004, 0x14d0: 0x000c, 0x14d1: 0x000c,\n\t0x14d2: 0x000c, 0x14d3: 0x000c, 0x14d4: 0x000c, 0x14d5: 0x000c, 0x14d6: 0x000c, 0x14d7: 0x000c,\n\t0x14d8: 0x000c, 0x14d9: 0x000c, 0x14da: 0x000c, 0x14db: 0x000c, 0x14dc: 0x000c, 0x14dd: 0x000c,\n\t0x14de: 0x000c, 0x14df: 0x000c, 0x14e0: 0x000c, 0x14e1: 0x000c, 0x14e2: 0x000c, 0x14e3: 0x000c,\n\t0x14e4: 0x000c, 0x14e5: 0x000c, 0x14e6: 0x000c, 0x14e7: 0x000c, 0x14e8: 0x000c, 0x14e9: 0x000c,\n\t0x14ea: 0x000c, 0x14eb: 0x000c, 0x14ec: 0x000c, 0x14ed: 0x000c, 0x14ee: 0x000c, 0x14ef: 0x000c,\n\t0x14f0: 0x000c,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x000a, 0x1501: 0x000a, 0x1503: 0x000a, 0x1504: 0x000a, 0x1505: 0x000a,\n\t0x1506: 0x000a, 0x1508: 0x000a, 0x1509: 0x000a,\n\t0x1514: 0x000a, 0x1516: 0x000a, 0x1517: 0x000a,\n\t0x1518: 0x000a,\n\t0x151e: 0x000a, 0x151f: 0x000a, 0x1520: 0x000a, 0x1521: 0x000a, 0x1522: 0x000a, 0x1523: 0x000a,\n\t0x1525: 0x000a, 0x1527: 0x000a, 0x1529: 0x000a,\n\t0x152e: 0x0004,\n\t0x153a: 0x000a, 0x153b: 0x000a,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x000a, 0x1541: 0x000a, 0x1542: 0x000a, 0x1543: 0x000a, 0x1544: 0x000a,\n\t0x154a: 0x000a, 0x154b: 0x000a,\n\t0x154c: 0x000a, 0x154d: 0x000a, 0x1550: 0x000a, 0x1551: 0x000a,\n\t0x1552: 0x000a, 0x1553: 0x000a, 0x1554: 0x000a, 0x1555: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a,\n\t0x1558: 0x000a, 0x1559: 0x000a, 0x155a: 0x000a, 0x155b: 0x000a, 0x155c: 0x000a, 0x155d: 0x000a,\n\t0x155e: 0x000a, 0x155f: 0x000a,\n\t// Block 0x56, offset 0x1580\n\t0x1589: 0x000a, 0x158a: 0x000a, 0x158b: 0x000a,\n\t0x1590: 0x000a, 0x1591: 0x000a,\n\t0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a,\n\t0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a,\n\t0x159e: 0x000a, 0x159f: 0x000a, 0x15a0: 0x000a, 0x15a1: 0x000a, 0x15a2: 0x000a, 0x15a3: 0x000a,\n\t0x15a4: 0x000a, 0x15a5: 0x000a, 0x15a6: 0x000a, 0x15a7: 0x000a, 0x15a8: 0x000a, 0x15a9: 0x000a,\n\t0x15aa: 0x000a, 0x15ab: 0x000a, 0x15ac: 0x000a, 0x15ad: 0x000a, 0x15ae: 0x000a, 0x15af: 0x000a,\n\t0x15b0: 0x000a, 0x15b1: 0x000a, 0x15b2: 0x000a, 0x15b3: 0x000a, 0x15b4: 0x000a, 0x15b5: 0x000a,\n\t0x15b6: 0x000a, 0x15b7: 0x000a, 0x15b8: 0x000a, 0x15b9: 0x000a, 0x15ba: 0x000a, 0x15bb: 0x000a,\n\t0x15bc: 0x000a, 0x15bd: 0x000a, 0x15be: 0x000a, 0x15bf: 0x000a,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x000a, 0x15c1: 0x000a, 0x15c2: 0x000a, 0x15c3: 0x000a, 0x15c4: 0x000a, 0x15c5: 0x000a,\n\t0x15c6: 0x000a, 0x15c7: 0x000a, 0x15c8: 0x000a, 0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a,\n\t0x15cc: 0x000a, 0x15cd: 0x000a, 0x15ce: 0x000a, 0x15cf: 0x000a, 0x15d0: 0x000a, 0x15d1: 0x000a,\n\t0x15d2: 0x000a, 0x15d3: 0x000a, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a,\n\t0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a,\n\t0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a,\n\t0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a,\n\t0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a,\n\t0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a,\n\t0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a,\n\t0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a,\n\t0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x000a, 0x1609: 0x000a, 0x160a: 0x000a, 0x160b: 0x000a,\n\t0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a,\n\t0x1612: 0x0003, 0x1613: 0x0004, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a,\n\t0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a,\n\t0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a,\n\t0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x000a,\n\t0x162a: 0x000a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a,\n\t0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a,\n\t0x1636: 0x000a, 0x1637: 0x000a, 0x1638: 0x000a, 0x1639: 0x000a, 0x163a: 0x000a, 0x163b: 0x000a,\n\t0x163c: 0x000a, 0x163d: 0x000a, 0x163e: 0x000a, 0x163f: 0x000a,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x000a, 0x1641: 0x000a, 0x1642: 0x000a, 0x1643: 0x000a, 0x1644: 0x000a, 0x1645: 0x000a,\n\t0x1646: 0x000a, 0x1647: 0x000a, 0x1648: 0x003a, 0x1649: 0x002a, 0x164a: 0x003a, 0x164b: 0x002a,\n\t0x164c: 0x000a, 0x164d: 0x000a, 0x164e: 0x000a, 0x164f: 0x000a, 0x1650: 0x000a, 0x1651: 0x000a,\n\t0x1652: 0x000a, 0x1653: 0x000a, 0x1654: 0x000a, 0x1655: 0x000a, 0x1656: 0x000a, 0x1657: 0x000a,\n\t0x1658: 0x000a, 0x1659: 0x000a, 0x165a: 0x000a, 0x165b: 0x000a, 0x165c: 0x000a, 0x165d: 0x000a,\n\t0x165e: 0x000a, 0x165f: 0x000a, 0x1660: 0x000a, 0x1661: 0x000a, 0x1662: 0x000a, 0x1663: 0x000a,\n\t0x1664: 0x000a, 0x1665: 0x000a, 0x1666: 0x000a, 0x1667: 0x000a, 0x1668: 0x000a, 0x1669: 0x009a,\n\t0x166a: 0x008a, 0x166b: 0x000a, 0x166c: 0x000a, 0x166d: 0x000a, 0x166e: 0x000a, 0x166f: 0x000a,\n\t0x1670: 0x000a, 0x1671: 0x000a, 0x1672: 0x000a, 0x1673: 0x000a, 0x1674: 0x000a, 0x1675: 0x000a,\n\t// Block 0x5a, offset 0x1680\n\t0x16bb: 0x000a,\n\t0x16bc: 0x000a, 0x16bd: 0x000a, 0x16be: 0x000a, 0x16bf: 0x000a,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x000a, 0x16c1: 0x000a, 0x16c2: 0x000a, 0x16c3: 0x000a, 0x16c4: 0x000a, 0x16c5: 0x000a,\n\t0x16c6: 0x000a, 0x16c7: 0x000a, 0x16c8: 0x000a, 0x16c9: 0x000a, 0x16ca: 0x000a, 0x16cb: 0x000a,\n\t0x16cc: 0x000a, 0x16cd: 0x000a, 0x16ce: 0x000a, 0x16cf: 0x000a, 0x16d0: 0x000a, 0x16d1: 0x000a,\n\t0x16d2: 0x000a, 0x16d3: 0x000a, 0x16d4: 0x000a, 0x16d6: 0x000a, 0x16d7: 0x000a,\n\t0x16d8: 0x000a, 0x16d9: 0x000a, 0x16da: 0x000a, 0x16db: 0x000a, 0x16dc: 0x000a, 0x16dd: 0x000a,\n\t0x16de: 0x000a, 0x16df: 0x000a, 0x16e0: 0x000a, 0x16e1: 0x000a, 0x16e2: 0x000a, 0x16e3: 0x000a,\n\t0x16e4: 0x000a, 0x16e5: 0x000a, 0x16e6: 0x000a, 0x16e7: 0x000a, 0x16e8: 0x000a, 0x16e9: 0x000a,\n\t0x16ea: 0x000a, 0x16eb: 0x000a, 0x16ec: 0x000a, 0x16ed: 0x000a, 0x16ee: 0x000a, 0x16ef: 0x000a,\n\t0x16f0: 0x000a, 0x16f1: 0x000a, 0x16f2: 0x000a, 0x16f3: 0x000a, 0x16f4: 0x000a, 0x16f5: 0x000a,\n\t0x16f6: 0x000a, 0x16f7: 0x000a, 0x16f8: 0x000a, 0x16f9: 0x000a, 0x16fa: 0x000a, 0x16fb: 0x000a,\n\t0x16fc: 0x000a, 0x16fd: 0x000a, 0x16fe: 0x000a, 0x16ff: 0x000a,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a,\n\t0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a, 0x170b: 0x000a,\n\t0x170c: 0x000a, 0x170d: 0x000a, 0x170e: 0x000a, 0x170f: 0x000a, 0x1710: 0x000a, 0x1711: 0x000a,\n\t0x1712: 0x000a, 0x1713: 0x000a, 0x1714: 0x000a, 0x1715: 0x000a, 0x1716: 0x000a, 0x1717: 0x000a,\n\t0x1718: 0x000a, 0x1719: 0x000a, 0x171a: 0x000a, 0x171b: 0x000a, 0x171c: 0x000a, 0x171d: 0x000a,\n\t0x171e: 0x000a, 0x171f: 0x000a, 0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a,\n\t0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a,\n\t0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x000a, 0x1749: 0x000a, 0x174a: 0x000a,\n\t0x1760: 0x000a, 0x1761: 0x000a, 0x1762: 0x000a, 0x1763: 0x000a,\n\t0x1764: 0x000a, 0x1765: 0x000a, 0x1766: 0x000a, 0x1767: 0x000a, 0x1768: 0x000a, 0x1769: 0x000a,\n\t0x176a: 0x000a, 0x176b: 0x000a, 0x176c: 0x000a, 0x176d: 0x000a, 0x176e: 0x000a, 0x176f: 0x000a,\n\t0x1770: 0x000a, 0x1771: 0x000a, 0x1772: 0x000a, 0x1773: 0x000a, 0x1774: 0x000a, 0x1775: 0x000a,\n\t0x1776: 0x000a, 0x1777: 0x000a, 0x1778: 0x000a, 0x1779: 0x000a, 0x177a: 0x000a, 0x177b: 0x000a,\n\t0x177c: 0x000a, 0x177d: 0x000a, 0x177e: 0x000a, 0x177f: 0x000a,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x000a, 0x1781: 0x000a, 0x1782: 0x000a, 0x1783: 0x000a, 0x1784: 0x000a, 0x1785: 0x000a,\n\t0x1786: 0x000a, 0x1787: 0x000a, 0x1788: 0x0002, 0x1789: 0x0002, 0x178a: 0x0002, 0x178b: 0x0002,\n\t0x178c: 0x0002, 0x178d: 0x0002, 0x178e: 0x0002, 0x178f: 0x0002, 0x1790: 0x0002, 0x1791: 0x0002,\n\t0x1792: 0x0002, 0x1793: 0x0002, 0x1794: 0x0002, 0x1795: 0x0002, 0x1796: 0x0002, 0x1797: 0x0002,\n\t0x1798: 0x0002, 0x1799: 0x0002, 0x179a: 0x0002, 0x179b: 0x0002,\n\t// Block 0x5f, offset 0x17c0\n\t0x17ea: 0x000a, 0x17eb: 0x000a, 0x17ec: 0x000a, 0x17ed: 0x000a, 0x17ee: 0x000a, 0x17ef: 0x000a,\n\t0x17f0: 0x000a, 0x17f1: 0x000a, 0x17f2: 0x000a, 0x17f3: 0x000a, 0x17f4: 0x000a, 0x17f5: 0x000a,\n\t0x17f6: 0x000a, 0x17f7: 0x000a, 0x17f8: 0x000a, 0x17f9: 0x000a, 0x17fa: 0x000a, 0x17fb: 0x000a,\n\t0x17fc: 0x000a, 0x17fd: 0x000a, 0x17fe: 0x000a, 0x17ff: 0x000a,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x000a, 0x1801: 0x000a, 0x1802: 0x000a, 0x1803: 0x000a, 0x1804: 0x000a, 0x1805: 0x000a,\n\t0x1806: 0x000a, 0x1807: 0x000a, 0x1808: 0x000a, 0x1809: 0x000a, 0x180a: 0x000a, 0x180b: 0x000a,\n\t0x180c: 0x000a, 0x180d: 0x000a, 0x180e: 0x000a, 0x180f: 0x000a, 0x1810: 0x000a, 0x1811: 0x000a,\n\t0x1812: 0x000a, 0x1813: 0x000a, 0x1814: 0x000a, 0x1815: 0x000a, 0x1816: 0x000a, 0x1817: 0x000a,\n\t0x1818: 0x000a, 0x1819: 0x000a, 0x181a: 0x000a, 0x181b: 0x000a, 0x181c: 0x000a, 0x181d: 0x000a,\n\t0x181e: 0x000a, 0x181f: 0x000a, 0x1820: 0x000a, 0x1821: 0x000a, 0x1822: 0x000a, 0x1823: 0x000a,\n\t0x1824: 0x000a, 0x1825: 0x000a, 0x1826: 0x000a, 0x1827: 0x000a, 0x1828: 0x000a, 0x1829: 0x000a,\n\t0x182a: 0x000a, 0x182b: 0x000a, 0x182d: 0x000a, 0x182e: 0x000a, 0x182f: 0x000a,\n\t0x1830: 0x000a, 0x1831: 0x000a, 0x1832: 0x000a, 0x1833: 0x000a, 0x1834: 0x000a, 0x1835: 0x000a,\n\t0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a,\n\t0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x000a,\n\t0x1846: 0x000a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a,\n\t0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a,\n\t0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a,\n\t0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a,\n\t0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a,\n\t0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x000a, 0x1867: 0x000a, 0x1868: 0x003a, 0x1869: 0x002a,\n\t0x186a: 0x003a, 0x186b: 0x002a, 0x186c: 0x003a, 0x186d: 0x002a, 0x186e: 0x003a, 0x186f: 0x002a,\n\t0x1870: 0x003a, 0x1871: 0x002a, 0x1872: 0x003a, 0x1873: 0x002a, 0x1874: 0x003a, 0x1875: 0x002a,\n\t0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a,\n\t0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x000a, 0x1884: 0x000a, 0x1885: 0x009a,\n\t0x1886: 0x008a, 0x1887: 0x000a, 0x1888: 0x000a, 0x1889: 0x000a, 0x188a: 0x000a, 0x188b: 0x000a,\n\t0x188c: 0x000a, 0x188d: 0x000a, 0x188e: 0x000a, 0x188f: 0x000a, 0x1890: 0x000a, 0x1891: 0x000a,\n\t0x1892: 0x000a, 0x1893: 0x000a, 0x1894: 0x000a, 0x1895: 0x000a, 0x1896: 0x000a, 0x1897: 0x000a,\n\t0x1898: 0x000a, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a,\n\t0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a,\n\t0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x003a, 0x18a7: 0x002a, 0x18a8: 0x003a, 0x18a9: 0x002a,\n\t0x18aa: 0x003a, 0x18ab: 0x002a, 0x18ac: 0x003a, 0x18ad: 0x002a, 0x18ae: 0x003a, 0x18af: 0x002a,\n\t0x18b0: 0x000a, 0x18b1: 0x000a, 0x18b2: 0x000a, 0x18b3: 0x000a, 0x18b4: 0x000a, 0x18b5: 0x000a,\n\t0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a,\n\t0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x007a, 0x18c4: 0x006a, 0x18c5: 0x009a,\n\t0x18c6: 0x008a, 0x18c7: 0x00ba, 0x18c8: 0x00aa, 0x18c9: 0x009a, 0x18ca: 0x008a, 0x18cb: 0x007a,\n\t0x18cc: 0x006a, 0x18cd: 0x00da, 0x18ce: 0x002a, 0x18cf: 0x003a, 0x18d0: 0x00ca, 0x18d1: 0x009a,\n\t0x18d2: 0x008a, 0x18d3: 0x007a, 0x18d4: 0x006a, 0x18d5: 0x009a, 0x18d6: 0x008a, 0x18d7: 0x00ba,\n\t0x18d8: 0x00aa, 0x18d9: 0x000a, 0x18da: 0x000a, 0x18db: 0x000a, 0x18dc: 0x000a, 0x18dd: 0x000a,\n\t0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a,\n\t0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x000a, 0x18e7: 0x000a, 0x18e8: 0x000a, 0x18e9: 0x000a,\n\t0x18ea: 0x000a, 0x18eb: 0x000a, 0x18ec: 0x000a, 0x18ed: 0x000a, 0x18ee: 0x000a, 0x18ef: 0x000a,\n\t0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a,\n\t0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a,\n\t0x18fc: 0x000a, 0x18fd: 0x000a, 0x18fe: 0x000a, 0x18ff: 0x000a,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x000a, 0x1904: 0x000a, 0x1905: 0x000a,\n\t0x1906: 0x000a, 0x1907: 0x000a, 0x1908: 0x000a, 0x1909: 0x000a, 0x190a: 0x000a, 0x190b: 0x000a,\n\t0x190c: 0x000a, 0x190d: 0x000a, 0x190e: 0x000a, 0x190f: 0x000a, 0x1910: 0x000a, 0x1911: 0x000a,\n\t0x1912: 0x000a, 0x1913: 0x000a, 0x1914: 0x000a, 0x1915: 0x000a, 0x1916: 0x000a, 0x1917: 0x000a,\n\t0x1918: 0x003a, 0x1919: 0x002a, 0x191a: 0x003a, 0x191b: 0x002a, 0x191c: 0x000a, 0x191d: 0x000a,\n\t0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a,\n\t0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a,\n\t0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a,\n\t0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a, 0x1934: 0x000a, 0x1935: 0x000a,\n\t0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a,\n\t0x193c: 0x003a, 0x193d: 0x002a, 0x193e: 0x000a, 0x193f: 0x000a,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a,\n\t0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a,\n\t0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a,\n\t0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a, 0x1956: 0x000a, 0x1957: 0x000a,\n\t0x1958: 0x000a, 0x1959: 0x000a, 0x195a: 0x000a, 0x195b: 0x000a, 0x195c: 0x000a, 0x195d: 0x000a,\n\t0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a,\n\t0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a,\n\t0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a,\n\t0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a,\n\t0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, 0x197a: 0x000a, 0x197b: 0x000a,\n\t0x197c: 0x000a, 0x197d: 0x000a, 0x197e: 0x000a, 0x197f: 0x000a,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x000a, 0x1981: 0x000a, 0x1982: 0x000a, 0x1983: 0x000a, 0x1984: 0x000a, 0x1985: 0x000a,\n\t0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x1989: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a,\n\t0x198c: 0x000a, 0x198d: 0x000a, 0x198e: 0x000a, 0x198f: 0x000a, 0x1990: 0x000a, 0x1991: 0x000a,\n\t0x1992: 0x000a, 0x1993: 0x000a, 0x1994: 0x000a, 0x1995: 0x000a, 0x1997: 0x000a,\n\t0x1998: 0x000a, 0x1999: 0x000a, 0x199a: 0x000a, 0x199b: 0x000a, 0x199c: 0x000a, 0x199d: 0x000a,\n\t0x199e: 0x000a, 0x199f: 0x000a, 0x19a0: 0x000a, 0x19a1: 0x000a, 0x19a2: 0x000a, 0x19a3: 0x000a,\n\t0x19a4: 0x000a, 0x19a5: 0x000a, 0x19a6: 0x000a, 0x19a7: 0x000a, 0x19a8: 0x000a, 0x19a9: 0x000a,\n\t0x19aa: 0x000a, 0x19ab: 0x000a, 0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a,\n\t0x19b0: 0x000a, 0x19b1: 0x000a, 0x19b2: 0x000a, 0x19b3: 0x000a, 0x19b4: 0x000a, 0x19b5: 0x000a,\n\t0x19b6: 0x000a, 0x19b7: 0x000a, 0x19b8: 0x000a, 0x19b9: 0x000a, 0x19ba: 0x000a, 0x19bb: 0x000a,\n\t0x19bc: 0x000a, 0x19bd: 0x000a, 0x19be: 0x000a, 0x19bf: 0x000a,\n\t// Block 0x67, offset 0x19c0\n\t0x19e5: 0x000a, 0x19e6: 0x000a, 0x19e7: 0x000a, 0x19e8: 0x000a, 0x19e9: 0x000a,\n\t0x19ea: 0x000a, 0x19ef: 0x000c,\n\t0x19f0: 0x000c, 0x19f1: 0x000c,\n\t0x19f9: 0x000a, 0x19fa: 0x000a, 0x19fb: 0x000a,\n\t0x19fc: 0x000a, 0x19fd: 0x000a, 0x19fe: 0x000a, 0x19ff: 0x000a,\n\t// Block 0x68, offset 0x1a00\n\t0x1a3f: 0x000c,\n\t// Block 0x69, offset 0x1a40\n\t0x1a60: 0x000c, 0x1a61: 0x000c, 0x1a62: 0x000c, 0x1a63: 0x000c,\n\t0x1a64: 0x000c, 0x1a65: 0x000c, 0x1a66: 0x000c, 0x1a67: 0x000c, 0x1a68: 0x000c, 0x1a69: 0x000c,\n\t0x1a6a: 0x000c, 0x1a6b: 0x000c, 0x1a6c: 0x000c, 0x1a6d: 0x000c, 0x1a6e: 0x000c, 0x1a6f: 0x000c,\n\t0x1a70: 0x000c, 0x1a71: 0x000c, 0x1a72: 0x000c, 0x1a73: 0x000c, 0x1a74: 0x000c, 0x1a75: 0x000c,\n\t0x1a76: 0x000c, 0x1a77: 0x000c, 0x1a78: 0x000c, 0x1a79: 0x000c, 0x1a7a: 0x000c, 0x1a7b: 0x000c,\n\t0x1a7c: 0x000c, 0x1a7d: 0x000c, 0x1a7e: 0x000c, 0x1a7f: 0x000c,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x000a, 0x1a81: 0x000a, 0x1a82: 0x000a, 0x1a83: 0x000a, 0x1a84: 0x000a, 0x1a85: 0x000a,\n\t0x1a86: 0x000a, 0x1a87: 0x000a, 0x1a88: 0x000a, 0x1a89: 0x000a, 0x1a8a: 0x000a, 0x1a8b: 0x000a,\n\t0x1a8c: 0x000a, 0x1a8d: 0x000a, 0x1a8e: 0x000a, 0x1a8f: 0x000a, 0x1a90: 0x000a, 0x1a91: 0x000a,\n\t0x1a92: 0x000a, 0x1a93: 0x000a, 0x1a94: 0x000a, 0x1a95: 0x000a, 0x1a96: 0x000a, 0x1a97: 0x000a,\n\t0x1a98: 0x000a, 0x1a99: 0x000a, 0x1a9a: 0x000a, 0x1a9b: 0x000a, 0x1a9c: 0x000a, 0x1a9d: 0x000a,\n\t0x1a9e: 0x000a, 0x1a9f: 0x000a, 0x1aa0: 0x000a, 0x1aa1: 0x000a, 0x1aa2: 0x003a, 0x1aa3: 0x002a,\n\t0x1aa4: 0x003a, 0x1aa5: 0x002a, 0x1aa6: 0x003a, 0x1aa7: 0x002a, 0x1aa8: 0x003a, 0x1aa9: 0x002a,\n\t0x1aaa: 0x000a, 0x1aab: 0x000a, 0x1aac: 0x000a, 0x1aad: 0x000a, 0x1aae: 0x000a, 0x1aaf: 0x000a,\n\t0x1ab0: 0x000a, 0x1ab1: 0x000a, 0x1ab2: 0x000a, 0x1ab3: 0x000a, 0x1ab4: 0x000a, 0x1ab5: 0x000a,\n\t0x1ab6: 0x000a, 0x1ab7: 0x000a, 0x1ab8: 0x000a, 0x1ab9: 0x000a, 0x1aba: 0x000a, 0x1abb: 0x000a,\n\t0x1abc: 0x000a, 0x1abd: 0x000a, 0x1abe: 0x000a, 0x1abf: 0x000a,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a,\n\t0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, 0x1aca: 0x000a, 0x1acb: 0x000a,\n\t0x1acc: 0x000a, 0x1acd: 0x000a, 0x1ace: 0x000a, 0x1acf: 0x000a, 0x1ad0: 0x000a, 0x1ad1: 0x000a,\n\t0x1ad2: 0x000a, 0x1ad3: 0x000a, 0x1ad4: 0x000a, 0x1ad5: 0x009a, 0x1ad6: 0x008a, 0x1ad7: 0x00ba,\n\t0x1ad8: 0x00aa, 0x1ad9: 0x009a, 0x1ada: 0x008a, 0x1adb: 0x007a, 0x1adc: 0x006a, 0x1add: 0x000a,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, 0x1b05: 0x000a,\n\t0x1b06: 0x000a, 0x1b07: 0x000a, 0x1b08: 0x000a, 0x1b09: 0x000a, 0x1b0a: 0x000a, 0x1b0b: 0x000a,\n\t0x1b0c: 0x000a, 0x1b0d: 0x000a, 0x1b0e: 0x000a, 0x1b0f: 0x000a, 0x1b10: 0x000a, 0x1b11: 0x000a,\n\t0x1b12: 0x000a, 0x1b13: 0x000a, 0x1b14: 0x000a, 0x1b15: 0x000a, 0x1b16: 0x000a, 0x1b17: 0x000a,\n\t0x1b18: 0x000a, 0x1b19: 0x000a, 0x1b1b: 0x000a, 0x1b1c: 0x000a, 0x1b1d: 0x000a,\n\t0x1b1e: 0x000a, 0x1b1f: 0x000a, 0x1b20: 0x000a, 0x1b21: 0x000a, 0x1b22: 0x000a, 0x1b23: 0x000a,\n\t0x1b24: 0x000a, 0x1b25: 0x000a, 0x1b26: 0x000a, 0x1b27: 0x000a, 0x1b28: 0x000a, 0x1b29: 0x000a,\n\t0x1b2a: 0x000a, 0x1b2b: 0x000a, 0x1b2c: 0x000a, 0x1b2d: 0x000a, 0x1b2e: 0x000a, 0x1b2f: 0x000a,\n\t0x1b30: 0x000a, 0x1b31: 0x000a, 0x1b32: 0x000a, 0x1b33: 0x000a, 0x1b34: 0x000a, 0x1b35: 0x000a,\n\t0x1b36: 0x000a, 0x1b37: 0x000a, 0x1b38: 0x000a, 0x1b39: 0x000a, 0x1b3a: 0x000a, 0x1b3b: 0x000a,\n\t0x1b3c: 0x000a, 0x1b3d: 0x000a, 0x1b3e: 0x000a, 0x1b3f: 0x000a,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a,\n\t0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a,\n\t0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a,\n\t0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a, 0x1b56: 0x000a, 0x1b57: 0x000a,\n\t0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5a: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a,\n\t0x1b5e: 0x000a, 0x1b5f: 0x000a, 0x1b60: 0x000a, 0x1b61: 0x000a, 0x1b62: 0x000a, 0x1b63: 0x000a,\n\t0x1b64: 0x000a, 0x1b65: 0x000a, 0x1b66: 0x000a, 0x1b67: 0x000a, 0x1b68: 0x000a, 0x1b69: 0x000a,\n\t0x1b6a: 0x000a, 0x1b6b: 0x000a, 0x1b6c: 0x000a, 0x1b6d: 0x000a, 0x1b6e: 0x000a, 0x1b6f: 0x000a,\n\t0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x000a, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a, 0x1b85: 0x000a,\n\t0x1b86: 0x000a, 0x1b87: 0x000a, 0x1b88: 0x000a, 0x1b89: 0x000a, 0x1b8a: 0x000a, 0x1b8b: 0x000a,\n\t0x1b8c: 0x000a, 0x1b8d: 0x000a, 0x1b8e: 0x000a, 0x1b8f: 0x000a, 0x1b90: 0x000a, 0x1b91: 0x000a,\n\t0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a,\n\t0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a, 0x1bb4: 0x000a, 0x1bb5: 0x000a,\n\t0x1bb6: 0x000a, 0x1bb7: 0x000a, 0x1bb8: 0x000a, 0x1bb9: 0x000a, 0x1bba: 0x000a, 0x1bbb: 0x000a,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x0009, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a,\n\t0x1bc8: 0x003a, 0x1bc9: 0x002a, 0x1bca: 0x003a, 0x1bcb: 0x002a,\n\t0x1bcc: 0x003a, 0x1bcd: 0x002a, 0x1bce: 0x003a, 0x1bcf: 0x002a, 0x1bd0: 0x003a, 0x1bd1: 0x002a,\n\t0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x003a, 0x1bd5: 0x002a, 0x1bd6: 0x003a, 0x1bd7: 0x002a,\n\t0x1bd8: 0x003a, 0x1bd9: 0x002a, 0x1bda: 0x003a, 0x1bdb: 0x002a, 0x1bdc: 0x000a, 0x1bdd: 0x000a,\n\t0x1bde: 0x000a, 0x1bdf: 0x000a, 0x1be0: 0x000a,\n\t0x1bea: 0x000c, 0x1beb: 0x000c, 0x1bec: 0x000c, 0x1bed: 0x000c,\n\t0x1bf0: 0x000a,\n\t0x1bf6: 0x000a, 0x1bf7: 0x000a,\n\t0x1bfd: 0x000a, 0x1bfe: 0x000a, 0x1bff: 0x000a,\n\t// Block 0x70, offset 0x1c00\n\t0x1c19: 0x000c, 0x1c1a: 0x000c, 0x1c1b: 0x000a, 0x1c1c: 0x000a,\n\t0x1c20: 0x000a,\n\t// Block 0x71, offset 0x1c40\n\t0x1c7b: 0x000a,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0x000a, 0x1c81: 0x000a, 0x1c82: 0x000a, 0x1c83: 0x000a, 0x1c84: 0x000a, 0x1c85: 0x000a,\n\t0x1c86: 0x000a, 0x1c87: 0x000a, 0x1c88: 0x000a, 0x1c89: 0x000a, 0x1c8a: 0x000a, 0x1c8b: 0x000a,\n\t0x1c8c: 0x000a, 0x1c8d: 0x000a, 0x1c8e: 0x000a, 0x1c8f: 0x000a, 0x1c90: 0x000a, 0x1c91: 0x000a,\n\t0x1c92: 0x000a, 0x1c93: 0x000a, 0x1c94: 0x000a, 0x1c95: 0x000a, 0x1c96: 0x000a, 0x1c97: 0x000a,\n\t0x1c98: 0x000a, 0x1c99: 0x000a, 0x1c9a: 0x000a, 0x1c9b: 0x000a, 0x1c9c: 0x000a, 0x1c9d: 0x000a,\n\t0x1c9e: 0x000a, 0x1c9f: 0x000a, 0x1ca0: 0x000a, 0x1ca1: 0x000a, 0x1ca2: 0x000a, 0x1ca3: 0x000a,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cdd: 0x000a,\n\t0x1cde: 0x000a,\n\t// Block 0x74, offset 0x1d00\n\t0x1d10: 0x000a, 0x1d11: 0x000a,\n\t0x1d12: 0x000a, 0x1d13: 0x000a, 0x1d14: 0x000a, 0x1d15: 0x000a, 0x1d16: 0x000a, 0x1d17: 0x000a,\n\t0x1d18: 0x000a, 0x1d19: 0x000a, 0x1d1a: 0x000a, 0x1d1b: 0x000a, 0x1d1c: 0x000a, 0x1d1d: 0x000a,\n\t0x1d1e: 0x000a, 0x1d1f: 0x000a,\n\t0x1d3c: 0x000a, 0x1d3d: 0x000a, 0x1d3e: 0x000a,\n\t// Block 0x75, offset 0x1d40\n\t0x1d71: 0x000a, 0x1d72: 0x000a, 0x1d73: 0x000a, 0x1d74: 0x000a, 0x1d75: 0x000a,\n\t0x1d76: 0x000a, 0x1d77: 0x000a, 0x1d78: 0x000a, 0x1d79: 0x000a, 0x1d7a: 0x000a, 0x1d7b: 0x000a,\n\t0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a, 0x1d7f: 0x000a,\n\t// Block 0x76, offset 0x1d80\n\t0x1d8c: 0x000a, 0x1d8d: 0x000a, 0x1d8e: 0x000a, 0x1d8f: 0x000a,\n\t// Block 0x77, offset 0x1dc0\n\t0x1df7: 0x000a, 0x1df8: 0x000a, 0x1df9: 0x000a, 0x1dfa: 0x000a,\n\t// Block 0x78, offset 0x1e00\n\t0x1e1e: 0x000a, 0x1e1f: 0x000a,\n\t0x1e3f: 0x000a,\n\t// Block 0x79, offset 0x1e40\n\t0x1e50: 0x000a, 0x1e51: 0x000a,\n\t0x1e52: 0x000a, 0x1e53: 0x000a, 0x1e54: 0x000a, 0x1e55: 0x000a, 0x1e56: 0x000a, 0x1e57: 0x000a,\n\t0x1e58: 0x000a, 0x1e59: 0x000a, 0x1e5a: 0x000a, 0x1e5b: 0x000a, 0x1e5c: 0x000a, 0x1e5d: 0x000a,\n\t0x1e5e: 0x000a, 0x1e5f: 0x000a, 0x1e60: 0x000a, 0x1e61: 0x000a, 0x1e62: 0x000a, 0x1e63: 0x000a,\n\t0x1e64: 0x000a, 0x1e65: 0x000a, 0x1e66: 0x000a, 0x1e67: 0x000a, 0x1e68: 0x000a, 0x1e69: 0x000a,\n\t0x1e6a: 0x000a, 0x1e6b: 0x000a, 0x1e6c: 0x000a, 0x1e6d: 0x000a, 0x1e6e: 0x000a, 0x1e6f: 0x000a,\n\t0x1e70: 0x000a, 0x1e71: 0x000a, 0x1e72: 0x000a, 0x1e73: 0x000a, 0x1e74: 0x000a, 0x1e75: 0x000a,\n\t0x1e76: 0x000a, 0x1e77: 0x000a, 0x1e78: 0x000a, 0x1e79: 0x000a, 0x1e7a: 0x000a, 0x1e7b: 0x000a,\n\t0x1e7c: 0x000a, 0x1e7d: 0x000a, 0x1e7e: 0x000a, 0x1e7f: 0x000a,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0x000a, 0x1e81: 0x000a, 0x1e82: 0x000a, 0x1e83: 0x000a, 0x1e84: 0x000a, 0x1e85: 0x000a,\n\t0x1e86: 0x000a,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ecd: 0x000a, 0x1ece: 0x000a, 0x1ecf: 0x000a,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f2f: 0x000c,\n\t0x1f30: 0x000c, 0x1f31: 0x000c, 0x1f32: 0x000c, 0x1f33: 0x000a, 0x1f34: 0x000c, 0x1f35: 0x000c,\n\t0x1f36: 0x000c, 0x1f37: 0x000c, 0x1f38: 0x000c, 0x1f39: 0x000c, 0x1f3a: 0x000c, 0x1f3b: 0x000c,\n\t0x1f3c: 0x000c, 0x1f3d: 0x000c, 0x1f3e: 0x000a, 0x1f3f: 0x000a,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f5e: 0x000c, 0x1f5f: 0x000c,\n\t// Block 0x7e, offset 0x1f80\n\t0x1fb0: 0x000c, 0x1fb1: 0x000c,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1fc0: 0x000a, 0x1fc1: 0x000a, 0x1fc2: 0x000a, 0x1fc3: 0x000a, 0x1fc4: 0x000a, 0x1fc5: 0x000a,\n\t0x1fc6: 0x000a, 0x1fc7: 0x000a, 0x1fc8: 0x000a, 0x1fc9: 0x000a, 0x1fca: 0x000a, 0x1fcb: 0x000a,\n\t0x1fcc: 0x000a, 0x1fcd: 0x000a, 0x1fce: 0x000a, 0x1fcf: 0x000a, 0x1fd0: 0x000a, 0x1fd1: 0x000a,\n\t0x1fd2: 0x000a, 0x1fd3: 0x000a, 0x1fd4: 0x000a, 0x1fd5: 0x000a, 0x1fd6: 0x000a, 0x1fd7: 0x000a,\n\t0x1fd8: 0x000a, 0x1fd9: 0x000a, 0x1fda: 0x000a, 0x1fdb: 0x000a, 0x1fdc: 0x000a, 0x1fdd: 0x000a,\n\t0x1fde: 0x000a, 0x1fdf: 0x000a, 0x1fe0: 0x000a, 0x1fe1: 0x000a,\n\t// Block 0x80, offset 0x2000\n\t0x2008: 0x000a,\n\t// Block 0x81, offset 0x2040\n\t0x2042: 0x000c,\n\t0x2046: 0x000c, 0x204b: 0x000c,\n\t0x2065: 0x000c, 0x2066: 0x000c, 0x2068: 0x000a, 0x2069: 0x000a,\n\t0x206a: 0x000a, 0x206b: 0x000a, 0x206c: 0x000c,\n\t0x2078: 0x0004, 0x2079: 0x0004,\n\t// Block 0x82, offset 0x2080\n\t0x20b4: 0x000a, 0x20b5: 0x000a,\n\t0x20b6: 0x000a, 0x20b7: 0x000a,\n\t// Block 0x83, offset 0x20c0\n\t0x20c4: 0x000c, 0x20c5: 0x000c,\n\t0x20e0: 0x000c, 0x20e1: 0x000c, 0x20e2: 0x000c, 0x20e3: 0x000c,\n\t0x20e4: 0x000c, 0x20e5: 0x000c, 0x20e6: 0x000c, 0x20e7: 0x000c, 0x20e8: 0x000c, 0x20e9: 0x000c,\n\t0x20ea: 0x000c, 0x20eb: 0x000c, 0x20ec: 0x000c, 0x20ed: 0x000c, 0x20ee: 0x000c, 0x20ef: 0x000c,\n\t0x20f0: 0x000c, 0x20f1: 0x000c,\n\t0x20ff: 0x000c,\n\t// Block 0x84, offset 0x2100\n\t0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c,\n\t0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c,\n\t// Block 0x85, offset 0x2140\n\t0x2147: 0x000c, 0x2148: 0x000c, 0x2149: 0x000c, 0x214a: 0x000c, 0x214b: 0x000c,\n\t0x214c: 0x000c, 0x214d: 0x000c, 0x214e: 0x000c, 0x214f: 0x000c, 0x2150: 0x000c, 0x2151: 0x000c,\n\t// Block 0x86, offset 0x2180\n\t0x2180: 0x000c, 0x2181: 0x000c, 0x2182: 0x000c,\n\t0x21b3: 0x000c,\n\t0x21b6: 0x000c, 0x21b7: 0x000c, 0x21b8: 0x000c, 0x21b9: 0x000c,\n\t0x21bc: 0x000c, 0x21bd: 0x000c,\n\t// Block 0x87, offset 0x21c0\n\t0x21e5: 0x000c,\n\t// Block 0x88, offset 0x2200\n\t0x2229: 0x000c,\n\t0x222a: 0x000c, 0x222b: 0x000c, 0x222c: 0x000c, 0x222d: 0x000c, 0x222e: 0x000c,\n\t0x2231: 0x000c, 0x2232: 0x000c, 0x2235: 0x000c,\n\t0x2236: 0x000c,\n\t// Block 0x89, offset 0x2240\n\t0x2243: 0x000c,\n\t0x224c: 0x000c,\n\t0x227c: 0x000c,\n\t// Block 0x8a, offset 0x2280\n\t0x22b0: 0x000c, 0x22b2: 0x000c, 0x22b3: 0x000c, 0x22b4: 0x000c,\n\t0x22b7: 0x000c, 0x22b8: 0x000c,\n\t0x22be: 0x000c, 0x22bf: 0x000c,\n\t// Block 0x8b, offset 0x22c0\n\t0x22c1: 0x000c,\n\t0x22ec: 0x000c, 0x22ed: 0x000c,\n\t0x22f6: 0x000c,\n\t// Block 0x8c, offset 0x2300\n\t0x232a: 0x000a, 0x232b: 0x000a,\n\t// Block 0x8d, offset 0x2340\n\t0x2365: 0x000c, 0x2368: 0x000c,\n\t0x236d: 0x000c,\n\t// Block 0x8e, offset 0x2380\n\t0x239d: 0x0001,\n\t0x239e: 0x000c, 0x239f: 0x0001, 0x23a0: 0x0001, 0x23a1: 0x0001, 0x23a2: 0x0001, 0x23a3: 0x0001,\n\t0x23a4: 0x0001, 0x23a5: 0x0001, 0x23a6: 0x0001, 0x23a7: 0x0001, 0x23a8: 0x0001, 0x23a9: 0x0003,\n\t0x23aa: 0x0001, 0x23ab: 0x0001, 0x23ac: 0x0001, 0x23ad: 0x0001, 0x23ae: 0x0001, 0x23af: 0x0001,\n\t0x23b0: 0x0001, 0x23b1: 0x0001, 0x23b2: 0x0001, 0x23b3: 0x0001, 0x23b4: 0x0001, 0x23b5: 0x0001,\n\t0x23b6: 0x0001, 0x23b7: 0x0001, 0x23b8: 0x0001, 0x23b9: 0x0001, 0x23ba: 0x0001, 0x23bb: 0x0001,\n\t0x23bc: 0x0001, 0x23bd: 0x0001, 0x23be: 0x0001, 0x23bf: 0x0001,\n\t// Block 0x8f, offset 0x23c0\n\t0x23c0: 0x0001, 0x23c1: 0x0001, 0x23c2: 0x0001, 0x23c3: 0x0001, 0x23c4: 0x0001, 0x23c5: 0x0001,\n\t0x23c6: 0x0001, 0x23c7: 0x0001, 0x23c8: 0x0001, 0x23c9: 0x0001, 0x23ca: 0x0001, 0x23cb: 0x0001,\n\t0x23cc: 0x0001, 0x23cd: 0x0001, 0x23ce: 0x0001, 0x23cf: 0x0001, 0x23d0: 0x000d, 0x23d1: 0x000d,\n\t0x23d2: 0x000d, 0x23d3: 0x000d, 0x23d4: 0x000d, 0x23d5: 0x000d, 0x23d6: 0x000d, 0x23d7: 0x000d,\n\t0x23d8: 0x000d, 0x23d9: 0x000d, 0x23da: 0x000d, 0x23db: 0x000d, 0x23dc: 0x000d, 0x23dd: 0x000d,\n\t0x23de: 0x000d, 0x23df: 0x000d, 0x23e0: 0x000d, 0x23e1: 0x000d, 0x23e2: 0x000d, 0x23e3: 0x000d,\n\t0x23e4: 0x000d, 0x23e5: 0x000d, 0x23e6: 0x000d, 0x23e7: 0x000d, 0x23e8: 0x000d, 0x23e9: 0x000d,\n\t0x23ea: 0x000d, 0x23eb: 0x000d, 0x23ec: 0x000d, 0x23ed: 0x000d, 0x23ee: 0x000d, 0x23ef: 0x000d,\n\t0x23f0: 0x000d, 0x23f1: 0x000d, 0x23f2: 0x000d, 0x23f3: 0x000d, 0x23f4: 0x000d, 0x23f5: 0x000d,\n\t0x23f6: 0x000d, 0x23f7: 0x000d, 0x23f8: 0x000d, 0x23f9: 0x000d, 0x23fa: 0x000d, 0x23fb: 0x000d,\n\t0x23fc: 0x000d, 0x23fd: 0x000d, 0x23fe: 0x000d, 0x23ff: 0x000d,\n\t// Block 0x90, offset 0x2400\n\t0x2400: 0x000d, 0x2401: 0x000d, 0x2402: 0x000d, 0x2403: 0x000d, 0x2404: 0x000d, 0x2405: 0x000d,\n\t0x2406: 0x000d, 0x2407: 0x000d, 0x2408: 0x000d, 0x2409: 0x000d, 0x240a: 0x000d, 0x240b: 0x000d,\n\t0x240c: 0x000d, 0x240d: 0x000d, 0x240e: 0x000d, 0x240f: 0x000d, 0x2410: 0x000d, 0x2411: 0x000d,\n\t0x2412: 0x000d, 0x2413: 0x000d, 0x2414: 0x000d, 0x2415: 0x000d, 0x2416: 0x000d, 0x2417: 0x000d,\n\t0x2418: 0x000d, 0x2419: 0x000d, 0x241a: 0x000d, 0x241b: 0x000d, 0x241c: 0x000d, 0x241d: 0x000d,\n\t0x241e: 0x000d, 0x241f: 0x000d, 0x2420: 0x000d, 0x2421: 0x000d, 0x2422: 0x000d, 0x2423: 0x000d,\n\t0x2424: 0x000d, 0x2425: 0x000d, 0x2426: 0x000d, 0x2427: 0x000d, 0x2428: 0x000d, 0x2429: 0x000d,\n\t0x242a: 0x000d, 0x242b: 0x000d, 0x242c: 0x000d, 0x242d: 0x000d, 0x242e: 0x000d, 0x242f: 0x000d,\n\t0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d,\n\t0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d,\n\t0x243c: 0x000d, 0x243d: 0x000d, 0x243e: 0x000a, 0x243f: 0x000a,\n\t// Block 0x91, offset 0x2440\n\t0x2440: 0x000a, 0x2441: 0x000a, 0x2442: 0x000a, 0x2443: 0x000a, 0x2444: 0x000a, 0x2445: 0x000a,\n\t0x2446: 0x000a, 0x2447: 0x000a, 0x2448: 0x000a, 0x2449: 0x000a, 0x244a: 0x000a, 0x244b: 0x000a,\n\t0x244c: 0x000a, 0x244d: 0x000a, 0x244e: 0x000a, 0x244f: 0x000a, 0x2450: 0x000d, 0x2451: 0x000d,\n\t0x2452: 0x000d, 0x2453: 0x000d, 0x2454: 0x000d, 0x2455: 0x000d, 0x2456: 0x000d, 0x2457: 0x000d,\n\t0x2458: 0x000d, 0x2459: 0x000d, 0x245a: 0x000d, 0x245b: 0x000d, 0x245c: 0x000d, 0x245d: 0x000d,\n\t0x245e: 0x000d, 0x245f: 0x000d, 0x2460: 0x000d, 0x2461: 0x000d, 0x2462: 0x000d, 0x2463: 0x000d,\n\t0x2464: 0x000d, 0x2465: 0x000d, 0x2466: 0x000d, 0x2467: 0x000d, 0x2468: 0x000d, 0x2469: 0x000d,\n\t0x246a: 0x000d, 0x246b: 0x000d, 0x246c: 0x000d, 0x246d: 0x000d, 0x246e: 0x000d, 0x246f: 0x000d,\n\t0x2470: 0x000d, 0x2471: 0x000d, 0x2472: 0x000d, 0x2473: 0x000d, 0x2474: 0x000d, 0x2475: 0x000d,\n\t0x2476: 0x000d, 0x2477: 0x000d, 0x2478: 0x000d, 0x2479: 0x000d, 0x247a: 0x000d, 0x247b: 0x000d,\n\t0x247c: 0x000d, 0x247d: 0x000d, 0x247e: 0x000d, 0x247f: 0x000d,\n\t// Block 0x92, offset 0x2480\n\t0x2480: 0x000d, 0x2481: 0x000d, 0x2482: 0x000d, 0x2483: 0x000d, 0x2484: 0x000d, 0x2485: 0x000d,\n\t0x2486: 0x000d, 0x2487: 0x000d, 0x2488: 0x000d, 0x2489: 0x000d, 0x248a: 0x000d, 0x248b: 0x000d,\n\t0x248c: 0x000d, 0x248d: 0x000d, 0x248e: 0x000d, 0x248f: 0x000a, 0x2490: 0x000b, 0x2491: 0x000b,\n\t0x2492: 0x000b, 0x2493: 0x000b, 0x2494: 0x000b, 0x2495: 0x000b, 0x2496: 0x000b, 0x2497: 0x000b,\n\t0x2498: 0x000b, 0x2499: 0x000b, 0x249a: 0x000b, 0x249b: 0x000b, 0x249c: 0x000b, 0x249d: 0x000b,\n\t0x249e: 0x000b, 0x249f: 0x000b, 0x24a0: 0x000b, 0x24a1: 0x000b, 0x24a2: 0x000b, 0x24a3: 0x000b,\n\t0x24a4: 0x000b, 0x24a5: 0x000b, 0x24a6: 0x000b, 0x24a7: 0x000b, 0x24a8: 0x000b, 0x24a9: 0x000b,\n\t0x24aa: 0x000b, 0x24ab: 0x000b, 0x24ac: 0x000b, 0x24ad: 0x000b, 0x24ae: 0x000b, 0x24af: 0x000b,\n\t0x24b0: 0x000d, 0x24b1: 0x000d, 0x24b2: 0x000d, 0x24b3: 0x000d, 0x24b4: 0x000d, 0x24b5: 0x000d,\n\t0x24b6: 0x000d, 0x24b7: 0x000d, 0x24b8: 0x000d, 0x24b9: 0x000d, 0x24ba: 0x000d, 0x24bb: 0x000d,\n\t0x24bc: 0x000d, 0x24bd: 0x000a, 0x24be: 0x000a, 0x24bf: 0x000a,\n\t// Block 0x93, offset 0x24c0\n\t0x24c0: 0x000c, 0x24c1: 0x000c, 0x24c2: 0x000c, 0x24c3: 0x000c, 0x24c4: 0x000c, 0x24c5: 0x000c,\n\t0x24c6: 0x000c, 0x24c7: 0x000c, 0x24c8: 0x000c, 0x24c9: 0x000c, 0x24ca: 0x000c, 0x24cb: 0x000c,\n\t0x24cc: 0x000c, 0x24cd: 0x000c, 0x24ce: 0x000c, 0x24cf: 0x000c, 0x24d0: 0x000a, 0x24d1: 0x000a,\n\t0x24d2: 0x000a, 0x24d3: 0x000a, 0x24d4: 0x000a, 0x24d5: 0x000a, 0x24d6: 0x000a, 0x24d7: 0x000a,\n\t0x24d8: 0x000a, 0x24d9: 0x000a,\n\t0x24e0: 0x000c, 0x24e1: 0x000c, 0x24e2: 0x000c, 0x24e3: 0x000c,\n\t0x24e4: 0x000c, 0x24e5: 0x000c, 0x24e6: 0x000c, 0x24e7: 0x000c, 0x24e8: 0x000c, 0x24e9: 0x000c,\n\t0x24ea: 0x000c, 0x24eb: 0x000c, 0x24ec: 0x000c, 0x24ed: 0x000c, 0x24ee: 0x000c, 0x24ef: 0x000c,\n\t0x24f0: 0x000a, 0x24f1: 0x000a, 0x24f2: 0x000a, 0x24f3: 0x000a, 0x24f4: 0x000a, 0x24f5: 0x000a,\n\t0x24f6: 0x000a, 0x24f7: 0x000a, 0x24f8: 0x000a, 0x24f9: 0x000a, 0x24fa: 0x000a, 0x24fb: 0x000a,\n\t0x24fc: 0x000a, 0x24fd: 0x000a, 0x24fe: 0x000a, 0x24ff: 0x000a,\n\t// Block 0x94, offset 0x2500\n\t0x2500: 0x000a, 0x2501: 0x000a, 0x2502: 0x000a, 0x2503: 0x000a, 0x2504: 0x000a, 0x2505: 0x000a,\n\t0x2506: 0x000a, 0x2507: 0x000a, 0x2508: 0x000a, 0x2509: 0x000a, 0x250a: 0x000a, 0x250b: 0x000a,\n\t0x250c: 0x000a, 0x250d: 0x000a, 0x250e: 0x000a, 0x250f: 0x000a, 0x2510: 0x0006, 0x2511: 0x000a,\n\t0x2512: 0x0006, 0x2514: 0x000a, 0x2515: 0x0006, 0x2516: 0x000a, 0x2517: 0x000a,\n\t0x2518: 0x000a, 0x2519: 0x009a, 0x251a: 0x008a, 0x251b: 0x007a, 0x251c: 0x006a, 0x251d: 0x009a,\n\t0x251e: 0x008a, 0x251f: 0x0004, 0x2520: 0x000a, 0x2521: 0x000a, 0x2522: 0x0003, 0x2523: 0x0003,\n\t0x2524: 0x000a, 0x2525: 0x000a, 0x2526: 0x000a, 0x2528: 0x000a, 0x2529: 0x0004,\n\t0x252a: 0x0004, 0x252b: 0x000a,\n\t0x2530: 0x000d, 0x2531: 0x000d, 0x2532: 0x000d, 0x2533: 0x000d, 0x2534: 0x000d, 0x2535: 0x000d,\n\t0x2536: 0x000d, 0x2537: 0x000d, 0x2538: 0x000d, 0x2539: 0x000d, 0x253a: 0x000d, 0x253b: 0x000d,\n\t0x253c: 0x000d, 0x253d: 0x000d, 0x253e: 0x000d, 0x253f: 0x000d,\n\t// Block 0x95, offset 0x2540\n\t0x2540: 0x000d, 0x2541: 0x000d, 0x2542: 0x000d, 0x2543: 0x000d, 0x2544: 0x000d, 0x2545: 0x000d,\n\t0x2546: 0x000d, 0x2547: 0x000d, 0x2548: 0x000d, 0x2549: 0x000d, 0x254a: 0x000d, 0x254b: 0x000d,\n\t0x254c: 0x000d, 0x254d: 0x000d, 0x254e: 0x000d, 0x254f: 0x000d, 0x2550: 0x000d, 0x2551: 0x000d,\n\t0x2552: 0x000d, 0x2553: 0x000d, 0x2554: 0x000d, 0x2555: 0x000d, 0x2556: 0x000d, 0x2557: 0x000d,\n\t0x2558: 0x000d, 0x2559: 0x000d, 0x255a: 0x000d, 0x255b: 0x000d, 0x255c: 0x000d, 0x255d: 0x000d,\n\t0x255e: 0x000d, 0x255f: 0x000d, 0x2560: 0x000d, 0x2561: 0x000d, 0x2562: 0x000d, 0x2563: 0x000d,\n\t0x2564: 0x000d, 0x2565: 0x000d, 0x2566: 0x000d, 0x2567: 0x000d, 0x2568: 0x000d, 0x2569: 0x000d,\n\t0x256a: 0x000d, 0x256b: 0x000d, 0x256c: 0x000d, 0x256d: 0x000d, 0x256e: 0x000d, 0x256f: 0x000d,\n\t0x2570: 0x000d, 0x2571: 0x000d, 0x2572: 0x000d, 0x2573: 0x000d, 0x2574: 0x000d, 0x2575: 0x000d,\n\t0x2576: 0x000d, 0x2577: 0x000d, 0x2578: 0x000d, 0x2579: 0x000d, 0x257a: 0x000d, 0x257b: 0x000d,\n\t0x257c: 0x000d, 0x257d: 0x000d, 0x257e: 0x000d, 0x257f: 0x000b,\n\t// Block 0x96, offset 0x2580\n\t0x2581: 0x000a, 0x2582: 0x000a, 0x2583: 0x0004, 0x2584: 0x0004, 0x2585: 0x0004,\n\t0x2586: 0x000a, 0x2587: 0x000a, 0x2588: 0x003a, 0x2589: 0x002a, 0x258a: 0x000a, 0x258b: 0x0003,\n\t0x258c: 0x0006, 0x258d: 0x0003, 0x258e: 0x0006, 0x258f: 0x0006, 0x2590: 0x0002, 0x2591: 0x0002,\n\t0x2592: 0x0002, 0x2593: 0x0002, 0x2594: 0x0002, 0x2595: 0x0002, 0x2596: 0x0002, 0x2597: 0x0002,\n\t0x2598: 0x0002, 0x2599: 0x0002, 0x259a: 0x0006, 0x259b: 0x000a, 0x259c: 0x000a, 0x259d: 0x000a,\n\t0x259e: 0x000a, 0x259f: 0x000a, 0x25a0: 0x000a,\n\t0x25bb: 0x005a,\n\t0x25bc: 0x000a, 0x25bd: 0x004a, 0x25be: 0x000a, 0x25bf: 0x000a,\n\t// Block 0x97, offset 0x25c0\n\t0x25c0: 0x000a,\n\t0x25db: 0x005a, 0x25dc: 0x000a, 0x25dd: 0x004a,\n\t0x25de: 0x000a, 0x25df: 0x00fa, 0x25e0: 0x00ea, 0x25e1: 0x000a, 0x25e2: 0x003a, 0x25e3: 0x002a,\n\t0x25e4: 0x000a, 0x25e5: 0x000a,\n\t// Block 0x98, offset 0x2600\n\t0x2620: 0x0004, 0x2621: 0x0004, 0x2622: 0x000a, 0x2623: 0x000a,\n\t0x2624: 0x000a, 0x2625: 0x0004, 0x2626: 0x0004, 0x2628: 0x000a, 0x2629: 0x000a,\n\t0x262a: 0x000a, 0x262b: 0x000a, 0x262c: 0x000a, 0x262d: 0x000a, 0x262e: 0x000a,\n\t0x2630: 0x000b, 0x2631: 0x000b, 0x2632: 0x000b, 0x2633: 0x000b, 0x2634: 0x000b, 0x2635: 0x000b,\n\t0x2636: 0x000b, 0x2637: 0x000b, 0x2638: 0x000b, 0x2639: 0x000a, 0x263a: 0x000a, 0x263b: 0x000a,\n\t0x263c: 0x000a, 0x263d: 0x000a, 0x263e: 0x000b, 0x263f: 0x000b,\n\t// Block 0x99, offset 0x2640\n\t0x2641: 0x000a,\n\t// Block 0x9a, offset 0x2680\n\t0x2680: 0x000a, 0x2681: 0x000a, 0x2682: 0x000a, 0x2683: 0x000a, 0x2684: 0x000a, 0x2685: 0x000a,\n\t0x2686: 0x000a, 0x2687: 0x000a, 0x2688: 0x000a, 0x2689: 0x000a, 0x268a: 0x000a, 0x268b: 0x000a,\n\t0x268c: 0x000a, 0x2690: 0x000a, 0x2691: 0x000a,\n\t0x2692: 0x000a, 0x2693: 0x000a, 0x2694: 0x000a, 0x2695: 0x000a, 0x2696: 0x000a, 0x2697: 0x000a,\n\t0x2698: 0x000a, 0x2699: 0x000a, 0x269a: 0x000a, 0x269b: 0x000a, 0x269c: 0x000a,\n\t0x26a0: 0x000a,\n\t// Block 0x9b, offset 0x26c0\n\t0x26fd: 0x000c,\n\t// Block 0x9c, offset 0x2700\n\t0x2720: 0x000c, 0x2721: 0x0002, 0x2722: 0x0002, 0x2723: 0x0002,\n\t0x2724: 0x0002, 0x2725: 0x0002, 0x2726: 0x0002, 0x2727: 0x0002, 0x2728: 0x0002, 0x2729: 0x0002,\n\t0x272a: 0x0002, 0x272b: 0x0002, 0x272c: 0x0002, 0x272d: 0x0002, 0x272e: 0x0002, 0x272f: 0x0002,\n\t0x2730: 0x0002, 0x2731: 0x0002, 0x2732: 0x0002, 0x2733: 0x0002, 0x2734: 0x0002, 0x2735: 0x0002,\n\t0x2736: 0x0002, 0x2737: 0x0002, 0x2738: 0x0002, 0x2739: 0x0002, 0x273a: 0x0002, 0x273b: 0x0002,\n\t// Block 0x9d, offset 0x2740\n\t0x2776: 0x000c, 0x2777: 0x000c, 0x2778: 0x000c, 0x2779: 0x000c, 0x277a: 0x000c,\n\t// Block 0x9e, offset 0x2780\n\t0x2780: 0x0001, 0x2781: 0x0001, 0x2782: 0x0001, 0x2783: 0x0001, 0x2784: 0x0001, 0x2785: 0x0001,\n\t0x2786: 0x0001, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001,\n\t0x278c: 0x0001, 0x278d: 0x0001, 0x278e: 0x0001, 0x278f: 0x0001, 0x2790: 0x0001, 0x2791: 0x0001,\n\t0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001,\n\t0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001,\n\t0x279e: 0x0001, 0x279f: 0x0001, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001,\n\t0x27a4: 0x0001, 0x27a5: 0x0001, 0x27a6: 0x0001, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001,\n\t0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001,\n\t0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001,\n\t0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x0001, 0x27b9: 0x0001, 0x27ba: 0x0001, 0x27bb: 0x0001,\n\t0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x0001,\n\t// Block 0x9f, offset 0x27c0\n\t0x27c0: 0x0001, 0x27c1: 0x0001, 0x27c2: 0x0001, 0x27c3: 0x0001, 0x27c4: 0x0001, 0x27c5: 0x0001,\n\t0x27c6: 0x0001, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001,\n\t0x27cc: 0x0001, 0x27cd: 0x0001, 0x27ce: 0x0001, 0x27cf: 0x0001, 0x27d0: 0x0001, 0x27d1: 0x0001,\n\t0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001,\n\t0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001,\n\t0x27de: 0x0001, 0x27df: 0x000a, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001,\n\t0x27e4: 0x0001, 0x27e5: 0x0001, 0x27e6: 0x0001, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001,\n\t0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001,\n\t0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001,\n\t0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x0001, 0x27f9: 0x0001, 0x27fa: 0x0001, 0x27fb: 0x0001,\n\t0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x0001,\n\t// Block 0xa0, offset 0x2800\n\t0x2800: 0x0001, 0x2801: 0x000c, 0x2802: 0x000c, 0x2803: 0x000c, 0x2804: 0x0001, 0x2805: 0x000c,\n\t0x2806: 0x000c, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001,\n\t0x280c: 0x000c, 0x280d: 0x000c, 0x280e: 0x000c, 0x280f: 0x000c, 0x2810: 0x0001, 0x2811: 0x0001,\n\t0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001,\n\t0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001,\n\t0x281e: 0x0001, 0x281f: 0x0001, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001,\n\t0x2824: 0x0001, 0x2825: 0x0001, 0x2826: 0x0001, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001,\n\t0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001,\n\t0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001,\n\t0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x000c, 0x2839: 0x000c, 0x283a: 0x000c, 0x283b: 0x0001,\n\t0x283c: 0x0001, 0x283d: 0x0001, 0x283e: 0x0001, 0x283f: 0x000c,\n\t// Block 0xa1, offset 0x2840\n\t0x2840: 0x0001, 0x2841: 0x0001, 0x2842: 0x0001, 0x2843: 0x0001, 0x2844: 0x0001, 0x2845: 0x0001,\n\t0x2846: 0x0001, 0x2847: 0x0001, 0x2848: 0x0001, 0x2849: 0x0001, 0x284a: 0x0001, 0x284b: 0x0001,\n\t0x284c: 0x0001, 0x284d: 0x0001, 0x284e: 0x0001, 0x284f: 0x0001, 0x2850: 0x0001, 0x2851: 0x0001,\n\t0x2852: 0x0001, 0x2853: 0x0001, 0x2854: 0x0001, 0x2855: 0x0001, 0x2856: 0x0001, 0x2857: 0x0001,\n\t0x2858: 0x0001, 0x2859: 0x0001, 0x285a: 0x0001, 0x285b: 0x0001, 0x285c: 0x0001, 0x285d: 0x0001,\n\t0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0001, 0x2861: 0x0001, 0x2862: 0x0001, 0x2863: 0x0001,\n\t0x2864: 0x0001, 0x2865: 0x000c, 0x2866: 0x000c, 0x2867: 0x0001, 0x2868: 0x0001, 0x2869: 0x0001,\n\t0x286a: 0x0001, 0x286b: 0x0001, 0x286c: 0x0001, 0x286d: 0x0001, 0x286e: 0x0001, 0x286f: 0x0001,\n\t0x2870: 0x0001, 0x2871: 0x0001, 0x2872: 0x0001, 0x2873: 0x0001, 0x2874: 0x0001, 0x2875: 0x0001,\n\t0x2876: 0x0001, 0x2877: 0x0001, 0x2878: 0x0001, 0x2879: 0x0001, 0x287a: 0x0001, 0x287b: 0x0001,\n\t0x287c: 0x0001, 0x287d: 0x0001, 0x287e: 0x0001, 0x287f: 0x0001,\n\t// Block 0xa2, offset 0x2880\n\t0x2880: 0x0001, 0x2881: 0x0001, 0x2882: 0x0001, 0x2883: 0x0001, 0x2884: 0x0001, 0x2885: 0x0001,\n\t0x2886: 0x0001, 0x2887: 0x0001, 0x2888: 0x0001, 0x2889: 0x0001, 0x288a: 0x0001, 0x288b: 0x0001,\n\t0x288c: 0x0001, 0x288d: 0x0001, 0x288e: 0x0001, 0x288f: 0x0001, 0x2890: 0x0001, 0x2891: 0x0001,\n\t0x2892: 0x0001, 0x2893: 0x0001, 0x2894: 0x0001, 0x2895: 0x0001, 0x2896: 0x0001, 0x2897: 0x0001,\n\t0x2898: 0x0001, 0x2899: 0x0001, 0x289a: 0x0001, 0x289b: 0x0001, 0x289c: 0x0001, 0x289d: 0x0001,\n\t0x289e: 0x0001, 0x289f: 0x0001, 0x28a0: 0x0001, 0x28a1: 0x0001, 0x28a2: 0x0001, 0x28a3: 0x0001,\n\t0x28a4: 0x0001, 0x28a5: 0x0001, 0x28a6: 0x0001, 0x28a7: 0x0001, 0x28a8: 0x0001, 0x28a9: 0x0001,\n\t0x28aa: 0x0001, 0x28ab: 0x0001, 0x28ac: 0x0001, 0x28ad: 0x0001, 0x28ae: 0x0001, 0x28af: 0x0001,\n\t0x28b0: 0x0001, 0x28b1: 0x0001, 0x28b2: 0x0001, 0x28b3: 0x0001, 0x28b4: 0x0001, 0x28b5: 0x0001,\n\t0x28b6: 0x0001, 0x28b7: 0x0001, 0x28b8: 0x0001, 0x28b9: 0x000a, 0x28ba: 0x000a, 0x28bb: 0x000a,\n\t0x28bc: 0x000a, 0x28bd: 0x000a, 0x28be: 0x000a, 0x28bf: 0x000a,\n\t// Block 0xa3, offset 0x28c0\n\t0x28c0: 0x000d, 0x28c1: 0x000d, 0x28c2: 0x000d, 0x28c3: 0x000d, 0x28c4: 0x000d, 0x28c5: 0x000d,\n\t0x28c6: 0x000d, 0x28c7: 0x000d, 0x28c8: 0x000d, 0x28c9: 0x000d, 0x28ca: 0x000d, 0x28cb: 0x000d,\n\t0x28cc: 0x000d, 0x28cd: 0x000d, 0x28ce: 0x000d, 0x28cf: 0x000d, 0x28d0: 0x000d, 0x28d1: 0x000d,\n\t0x28d2: 0x000d, 0x28d3: 0x000d, 0x28d4: 0x000d, 0x28d5: 0x000d, 0x28d6: 0x000d, 0x28d7: 0x000d,\n\t0x28d8: 0x000d, 0x28d9: 0x000d, 0x28da: 0x000d, 0x28db: 0x000d, 0x28dc: 0x000d, 0x28dd: 0x000d,\n\t0x28de: 0x000d, 0x28df: 0x000d, 0x28e0: 0x000d, 0x28e1: 0x000d, 0x28e2: 0x000d, 0x28e3: 0x000d,\n\t0x28e4: 0x000c, 0x28e5: 0x000c, 0x28e6: 0x000c, 0x28e7: 0x000c, 0x28e8: 0x0001, 0x28e9: 0x0001,\n\t0x28ea: 0x0001, 0x28eb: 0x0001, 0x28ec: 0x0001, 0x28ed: 0x0001, 0x28ee: 0x0001, 0x28ef: 0x0001,\n\t0x28f0: 0x0005, 0x28f1: 0x0005, 0x28f2: 0x0005, 0x28f3: 0x0005, 0x28f4: 0x0005, 0x28f5: 0x0005,\n\t0x28f6: 0x0005, 0x28f7: 0x0005, 0x28f8: 0x0005, 0x28f9: 0x0005, 0x28fa: 0x0001, 0x28fb: 0x0001,\n\t0x28fc: 0x0001, 0x28fd: 0x0001, 0x28fe: 0x0001, 0x28ff: 0x0001,\n\t// Block 0xa4, offset 0x2900\n\t0x2900: 0x0001, 0x2901: 0x0001, 0x2902: 0x0001, 0x2903: 0x0001, 0x2904: 0x0001, 0x2905: 0x0001,\n\t0x2906: 0x0001, 0x2907: 0x0001, 0x2908: 0x0001, 0x2909: 0x0001, 0x290a: 0x0001, 0x290b: 0x0001,\n\t0x290c: 0x0001, 0x290d: 0x0001, 0x290e: 0x0001, 0x290f: 0x0001, 0x2910: 0x0001, 0x2911: 0x0001,\n\t0x2912: 0x0001, 0x2913: 0x0001, 0x2914: 0x0001, 0x2915: 0x0001, 0x2916: 0x0001, 0x2917: 0x0001,\n\t0x2918: 0x0001, 0x2919: 0x0001, 0x291a: 0x0001, 0x291b: 0x0001, 0x291c: 0x0001, 0x291d: 0x0001,\n\t0x291e: 0x0001, 0x291f: 0x0001, 0x2920: 0x0005, 0x2921: 0x0005, 0x2922: 0x0005, 0x2923: 0x0005,\n\t0x2924: 0x0005, 0x2925: 0x0005, 0x2926: 0x0005, 0x2927: 0x0005, 0x2928: 0x0005, 0x2929: 0x0005,\n\t0x292a: 0x0005, 0x292b: 0x0005, 0x292c: 0x0005, 0x292d: 0x0005, 0x292e: 0x0005, 0x292f: 0x0005,\n\t0x2930: 0x0005, 0x2931: 0x0005, 0x2932: 0x0005, 0x2933: 0x0005, 0x2934: 0x0005, 0x2935: 0x0005,\n\t0x2936: 0x0005, 0x2937: 0x0005, 0x2938: 0x0005, 0x2939: 0x0005, 0x293a: 0x0005, 0x293b: 0x0005,\n\t0x293c: 0x0005, 0x293d: 0x0005, 0x293e: 0x0005, 0x293f: 0x0001,\n\t// Block 0xa5, offset 0x2940\n\t0x2940: 0x0001, 0x2941: 0x0001, 0x2942: 0x0001, 0x2943: 0x0001, 0x2944: 0x0001, 0x2945: 0x0001,\n\t0x2946: 0x0001, 0x2947: 0x0001, 0x2948: 0x0001, 0x2949: 0x0001, 0x294a: 0x0001, 0x294b: 0x0001,\n\t0x294c: 0x0001, 0x294d: 0x0001, 0x294e: 0x0001, 0x294f: 0x0001, 0x2950: 0x0001, 0x2951: 0x0001,\n\t0x2952: 0x0001, 0x2953: 0x0001, 0x2954: 0x0001, 0x2955: 0x0001, 0x2956: 0x0001, 0x2957: 0x0001,\n\t0x2958: 0x0001, 0x2959: 0x0001, 0x295a: 0x0001, 0x295b: 0x0001, 0x295c: 0x0001, 0x295d: 0x0001,\n\t0x295e: 0x0001, 0x295f: 0x0001, 0x2960: 0x0001, 0x2961: 0x0001, 0x2962: 0x0001, 0x2963: 0x0001,\n\t0x2964: 0x0001, 0x2965: 0x0001, 0x2966: 0x0001, 0x2967: 0x0001, 0x2968: 0x0001, 0x2969: 0x0001,\n\t0x296a: 0x0001, 0x296b: 0x000c, 0x296c: 0x000c, 0x296d: 0x0001, 0x296e: 0x0001, 0x296f: 0x0001,\n\t0x2970: 0x0001, 0x2971: 0x0001, 0x2972: 0x0001, 0x2973: 0x0001, 0x2974: 0x0001, 0x2975: 0x0001,\n\t0x2976: 0x0001, 0x2977: 0x0001, 0x2978: 0x0001, 0x2979: 0x0001, 0x297a: 0x0001, 0x297b: 0x0001,\n\t0x297c: 0x0001, 0x297d: 0x0001, 0x297e: 0x0001, 0x297f: 0x0001,\n\t// Block 0xa6, offset 0x2980\n\t0x2980: 0x0001, 0x2981: 0x0001, 0x2982: 0x0001, 0x2983: 0x0001, 0x2984: 0x0001, 0x2985: 0x0001,\n\t0x2986: 0x0001, 0x2987: 0x0001, 0x2988: 0x0001, 0x2989: 0x0001, 0x298a: 0x0001, 0x298b: 0x0001,\n\t0x298c: 0x0001, 0x298d: 0x0001, 0x298e: 0x0001, 0x298f: 0x0001, 0x2990: 0x0001, 0x2991: 0x0001,\n\t0x2992: 0x0001, 0x2993: 0x0001, 0x2994: 0x0001, 0x2995: 0x0001, 0x2996: 0x0001, 0x2997: 0x0001,\n\t0x2998: 0x0001, 0x2999: 0x0001, 0x299a: 0x0001, 0x299b: 0x0001, 0x299c: 0x0001, 0x299d: 0x0001,\n\t0x299e: 0x0001, 0x299f: 0x0001, 0x29a0: 0x0001, 0x29a1: 0x0001, 0x29a2: 0x0001, 0x29a3: 0x0001,\n\t0x29a4: 0x0001, 0x29a5: 0x0001, 0x29a6: 0x0001, 0x29a7: 0x0001, 0x29a8: 0x0001, 0x29a9: 0x0001,\n\t0x29aa: 0x0001, 0x29ab: 0x0001, 0x29ac: 0x0001, 0x29ad: 0x0001, 0x29ae: 0x0001, 0x29af: 0x0001,\n\t0x29b0: 0x0001, 0x29b1: 0x0001, 0x29b2: 0x0001, 0x29b3: 0x0001, 0x29b4: 0x0001, 0x29b5: 0x0001,\n\t0x29b6: 0x0001, 0x29b7: 0x0001, 0x29b8: 0x0001, 0x29b9: 0x0001, 0x29ba: 0x0001, 0x29bb: 0x0001,\n\t0x29bc: 0x0001, 0x29bd: 0x000c, 0x29be: 0x000c, 0x29bf: 0x000c,\n\t// Block 0xa7, offset 0x29c0\n\t0x29c0: 0x0001, 0x29c1: 0x0001, 0x29c2: 0x0001, 0x29c3: 0x0001, 0x29c4: 0x0001, 0x29c5: 0x0001,\n\t0x29c6: 0x0001, 0x29c7: 0x0001, 0x29c8: 0x0001, 0x29c9: 0x0001, 0x29ca: 0x0001, 0x29cb: 0x0001,\n\t0x29cc: 0x0001, 0x29cd: 0x0001, 0x29ce: 0x0001, 0x29cf: 0x0001, 0x29d0: 0x0001, 0x29d1: 0x0001,\n\t0x29d2: 0x0001, 0x29d3: 0x0001, 0x29d4: 0x0001, 0x29d5: 0x0001, 0x29d6: 0x0001, 0x29d7: 0x0001,\n\t0x29d8: 0x0001, 0x29d9: 0x0001, 0x29da: 0x0001, 0x29db: 0x0001, 0x29dc: 0x0001, 0x29dd: 0x0001,\n\t0x29de: 0x0001, 0x29df: 0x0001, 0x29e0: 0x0001, 0x29e1: 0x0001, 0x29e2: 0x0001, 0x29e3: 0x0001,\n\t0x29e4: 0x0001, 0x29e5: 0x0001, 0x29e6: 0x0001, 0x29e7: 0x0001, 0x29e8: 0x0001, 0x29e9: 0x0001,\n\t0x29ea: 0x0001, 0x29eb: 0x0001, 0x29ec: 0x0001, 0x29ed: 0x0001, 0x29ee: 0x0001, 0x29ef: 0x0001,\n\t0x29f0: 0x000d, 0x29f1: 0x000d, 0x29f2: 0x000d, 0x29f3: 0x000d, 0x29f4: 0x000d, 0x29f5: 0x000d,\n\t0x29f6: 0x000d, 0x29f7: 0x000d, 0x29f8: 0x000d, 0x29f9: 0x000d, 0x29fa: 0x000d, 0x29fb: 0x000d,\n\t0x29fc: 0x000d, 0x29fd: 0x000d, 0x29fe: 0x000d, 0x29ff: 0x000d,\n\t// Block 0xa8, offset 0x2a00\n\t0x2a00: 0x000d, 0x2a01: 0x000d, 0x2a02: 0x000d, 0x2a03: 0x000d, 0x2a04: 0x000d, 0x2a05: 0x000d,\n\t0x2a06: 0x000c, 0x2a07: 0x000c, 0x2a08: 0x000c, 0x2a09: 0x000c, 0x2a0a: 0x000c, 0x2a0b: 0x000c,\n\t0x2a0c: 0x000c, 0x2a0d: 0x000c, 0x2a0e: 0x000c, 0x2a0f: 0x000c, 0x2a10: 0x000c, 0x2a11: 0x000d,\n\t0x2a12: 0x000d, 0x2a13: 0x000d, 0x2a14: 0x000d, 0x2a15: 0x000d, 0x2a16: 0x000d, 0x2a17: 0x000d,\n\t0x2a18: 0x000d, 0x2a19: 0x000d, 0x2a1a: 0x0001, 0x2a1b: 0x0001, 0x2a1c: 0x0001, 0x2a1d: 0x0001,\n\t0x2a1e: 0x0001, 0x2a1f: 0x0001, 0x2a20: 0x0001, 0x2a21: 0x0001, 0x2a22: 0x0001, 0x2a23: 0x0001,\n\t0x2a24: 0x0001, 0x2a25: 0x0001, 0x2a26: 0x0001, 0x2a27: 0x0001, 0x2a28: 0x0001, 0x2a29: 0x0001,\n\t0x2a2a: 0x0001, 0x2a2b: 0x0001, 0x2a2c: 0x0001, 0x2a2d: 0x0001, 0x2a2e: 0x0001, 0x2a2f: 0x0001,\n\t0x2a30: 0x0001, 0x2a31: 0x0001, 0x2a32: 0x0001, 0x2a33: 0x0001, 0x2a34: 0x0001, 0x2a35: 0x0001,\n\t0x2a36: 0x0001, 0x2a37: 0x0001, 0x2a38: 0x0001, 0x2a39: 0x0001, 0x2a3a: 0x0001, 0x2a3b: 0x0001,\n\t0x2a3c: 0x0001, 0x2a3d: 0x0001, 0x2a3e: 0x0001, 0x2a3f: 0x0001,\n\t// Block 0xa9, offset 0x2a40\n\t0x2a40: 0x0001, 0x2a41: 0x0001, 0x2a42: 0x000c, 0x2a43: 0x000c, 0x2a44: 0x000c, 0x2a45: 0x000c,\n\t0x2a46: 0x0001, 0x2a47: 0x0001, 0x2a48: 0x0001, 0x2a49: 0x0001, 0x2a4a: 0x0001, 0x2a4b: 0x0001,\n\t0x2a4c: 0x0001, 0x2a4d: 0x0001, 0x2a4e: 0x0001, 0x2a4f: 0x0001, 0x2a50: 0x0001, 0x2a51: 0x0001,\n\t0x2a52: 0x0001, 0x2a53: 0x0001, 0x2a54: 0x0001, 0x2a55: 0x0001, 0x2a56: 0x0001, 0x2a57: 0x0001,\n\t0x2a58: 0x0001, 0x2a59: 0x0001, 0x2a5a: 0x0001, 0x2a5b: 0x0001, 0x2a5c: 0x0001, 0x2a5d: 0x0001,\n\t0x2a5e: 0x0001, 0x2a5f: 0x0001, 0x2a60: 0x0001, 0x2a61: 0x0001, 0x2a62: 0x0001, 0x2a63: 0x0001,\n\t0x2a64: 0x0001, 0x2a65: 0x0001, 0x2a66: 0x0001, 0x2a67: 0x0001, 0x2a68: 0x0001, 0x2a69: 0x0001,\n\t0x2a6a: 0x0001, 0x2a6b: 0x0001, 0x2a6c: 0x0001, 0x2a6d: 0x0001, 0x2a6e: 0x0001, 0x2a6f: 0x0001,\n\t0x2a70: 0x0001, 0x2a71: 0x0001, 0x2a72: 0x0001, 0x2a73: 0x0001, 0x2a74: 0x0001, 0x2a75: 0x0001,\n\t0x2a76: 0x0001, 0x2a77: 0x0001, 0x2a78: 0x0001, 0x2a79: 0x0001, 0x2a7a: 0x0001, 0x2a7b: 0x0001,\n\t0x2a7c: 0x0001, 0x2a7d: 0x0001, 0x2a7e: 0x0001, 0x2a7f: 0x0001,\n\t// Block 0xaa, offset 0x2a80\n\t0x2a81: 0x000c,\n\t0x2ab8: 0x000c, 0x2ab9: 0x000c, 0x2aba: 0x000c, 0x2abb: 0x000c,\n\t0x2abc: 0x000c, 0x2abd: 0x000c, 0x2abe: 0x000c, 0x2abf: 0x000c,\n\t// Block 0xab, offset 0x2ac0\n\t0x2ac0: 0x000c, 0x2ac1: 0x000c, 0x2ac2: 0x000c, 0x2ac3: 0x000c, 0x2ac4: 0x000c, 0x2ac5: 0x000c,\n\t0x2ac6: 0x000c,\n\t0x2ad2: 0x000a, 0x2ad3: 0x000a, 0x2ad4: 0x000a, 0x2ad5: 0x000a, 0x2ad6: 0x000a, 0x2ad7: 0x000a,\n\t0x2ad8: 0x000a, 0x2ad9: 0x000a, 0x2ada: 0x000a, 0x2adb: 0x000a, 0x2adc: 0x000a, 0x2add: 0x000a,\n\t0x2ade: 0x000a, 0x2adf: 0x000a, 0x2ae0: 0x000a, 0x2ae1: 0x000a, 0x2ae2: 0x000a, 0x2ae3: 0x000a,\n\t0x2ae4: 0x000a, 0x2ae5: 0x000a,\n\t0x2af0: 0x000c, 0x2af3: 0x000c, 0x2af4: 0x000c,\n\t0x2aff: 0x000c,\n\t// Block 0xac, offset 0x2b00\n\t0x2b00: 0x000c, 0x2b01: 0x000c,\n\t0x2b33: 0x000c, 0x2b34: 0x000c, 0x2b35: 0x000c,\n\t0x2b36: 0x000c, 0x2b39: 0x000c, 0x2b3a: 0x000c,\n\t// Block 0xad, offset 0x2b40\n\t0x2b40: 0x000c, 0x2b41: 0x000c, 0x2b42: 0x000c,\n\t0x2b67: 0x000c, 0x2b68: 0x000c, 0x2b69: 0x000c,\n\t0x2b6a: 0x000c, 0x2b6b: 0x000c, 0x2b6d: 0x000c, 0x2b6e: 0x000c, 0x2b6f: 0x000c,\n\t0x2b70: 0x000c, 0x2b71: 0x000c, 0x2b72: 0x000c, 0x2b73: 0x000c, 0x2b74: 0x000c,\n\t// Block 0xae, offset 0x2b80\n\t0x2bb3: 0x000c,\n\t// Block 0xaf, offset 0x2bc0\n\t0x2bc0: 0x000c, 0x2bc1: 0x000c,\n\t0x2bf6: 0x000c, 0x2bf7: 0x000c, 0x2bf8: 0x000c, 0x2bf9: 0x000c, 0x2bfa: 0x000c, 0x2bfb: 0x000c,\n\t0x2bfc: 0x000c, 0x2bfd: 0x000c, 0x2bfe: 0x000c,\n\t// Block 0xb0, offset 0x2c00\n\t0x2c09: 0x000c, 0x2c0a: 0x000c, 0x2c0b: 0x000c,\n\t0x2c0c: 0x000c, 0x2c0f: 0x000c,\n\t// Block 0xb1, offset 0x2c40\n\t0x2c6f: 0x000c,\n\t0x2c70: 0x000c, 0x2c71: 0x000c, 0x2c74: 0x000c,\n\t0x2c76: 0x000c, 0x2c77: 0x000c,\n\t0x2c7e: 0x000c,\n\t// Block 0xb2, offset 0x2c80\n\t0x2c9f: 0x000c, 0x2ca3: 0x000c,\n\t0x2ca4: 0x000c, 0x2ca5: 0x000c, 0x2ca6: 0x000c, 0x2ca7: 0x000c, 0x2ca8: 0x000c, 0x2ca9: 0x000c,\n\t0x2caa: 0x000c,\n\t// Block 0xb3, offset 0x2cc0\n\t0x2cc0: 0x000c,\n\t0x2ce6: 0x000c, 0x2ce7: 0x000c, 0x2ce8: 0x000c, 0x2ce9: 0x000c,\n\t0x2cea: 0x000c, 0x2ceb: 0x000c, 0x2cec: 0x000c,\n\t0x2cf0: 0x000c, 0x2cf1: 0x000c, 0x2cf2: 0x000c, 0x2cf3: 0x000c, 0x2cf4: 0x000c,\n\t// Block 0xb4, offset 0x2d00\n\t0x2d38: 0x000c, 0x2d39: 0x000c, 0x2d3a: 0x000c, 0x2d3b: 0x000c,\n\t0x2d3c: 0x000c, 0x2d3d: 0x000c, 0x2d3e: 0x000c, 0x2d3f: 0x000c,\n\t// Block 0xb5, offset 0x2d40\n\t0x2d42: 0x000c, 0x2d43: 0x000c, 0x2d44: 0x000c,\n\t0x2d46: 0x000c,\n\t0x2d5e: 0x000c,\n\t// Block 0xb6, offset 0x2d80\n\t0x2db3: 0x000c, 0x2db4: 0x000c, 0x2db5: 0x000c,\n\t0x2db6: 0x000c, 0x2db7: 0x000c, 0x2db8: 0x000c, 0x2dba: 0x000c,\n\t0x2dbf: 0x000c,\n\t// Block 0xb7, offset 0x2dc0\n\t0x2dc0: 0x000c, 0x2dc2: 0x000c, 0x2dc3: 0x000c,\n\t// Block 0xb8, offset 0x2e00\n\t0x2e32: 0x000c, 0x2e33: 0x000c, 0x2e34: 0x000c, 0x2e35: 0x000c,\n\t0x2e3c: 0x000c, 0x2e3d: 0x000c, 0x2e3f: 0x000c,\n\t// Block 0xb9, offset 0x2e40\n\t0x2e40: 0x000c,\n\t0x2e5c: 0x000c, 0x2e5d: 0x000c,\n\t// Block 0xba, offset 0x2e80\n\t0x2eb3: 0x000c, 0x2eb4: 0x000c, 0x2eb5: 0x000c,\n\t0x2eb6: 0x000c, 0x2eb7: 0x000c, 0x2eb8: 0x000c, 0x2eb9: 0x000c, 0x2eba: 0x000c,\n\t0x2ebd: 0x000c, 0x2ebf: 0x000c,\n\t// Block 0xbb, offset 0x2ec0\n\t0x2ec0: 0x000c,\n\t0x2ee0: 0x000a, 0x2ee1: 0x000a, 0x2ee2: 0x000a, 0x2ee3: 0x000a,\n\t0x2ee4: 0x000a, 0x2ee5: 0x000a, 0x2ee6: 0x000a, 0x2ee7: 0x000a, 0x2ee8: 0x000a, 0x2ee9: 0x000a,\n\t0x2eea: 0x000a, 0x2eeb: 0x000a, 0x2eec: 0x000a,\n\t// Block 0xbc, offset 0x2f00\n\t0x2f2b: 0x000c, 0x2f2d: 0x000c,\n\t0x2f30: 0x000c, 0x2f31: 0x000c, 0x2f32: 0x000c, 0x2f33: 0x000c, 0x2f34: 0x000c, 0x2f35: 0x000c,\n\t0x2f37: 0x000c,\n\t// Block 0xbd, offset 0x2f40\n\t0x2f5d: 0x000c,\n\t0x2f5e: 0x000c, 0x2f5f: 0x000c, 0x2f62: 0x000c, 0x2f63: 0x000c,\n\t0x2f64: 0x000c, 0x2f65: 0x000c, 0x2f67: 0x000c, 0x2f68: 0x000c, 0x2f69: 0x000c,\n\t0x2f6a: 0x000c, 0x2f6b: 0x000c,\n\t// Block 0xbe, offset 0x2f80\n\t0x2faf: 0x000c,\n\t0x2fb0: 0x000c, 0x2fb1: 0x000c, 0x2fb2: 0x000c, 0x2fb3: 0x000c, 0x2fb4: 0x000c, 0x2fb5: 0x000c,\n\t0x2fb6: 0x000c, 0x2fb7: 0x000c, 0x2fb9: 0x000c, 0x2fba: 0x000c,\n\t// Block 0xbf, offset 0x2fc0\n\t0x2ffb: 0x000c,\n\t0x2ffc: 0x000c, 0x2ffe: 0x000c,\n\t// Block 0xc0, offset 0x3000\n\t0x3003: 0x000c,\n\t// Block 0xc1, offset 0x3040\n\t0x3054: 0x000c, 0x3055: 0x000c, 0x3056: 0x000c, 0x3057: 0x000c,\n\t0x305a: 0x000c, 0x305b: 0x000c,\n\t0x3060: 0x000c,\n\t// Block 0xc2, offset 0x3080\n\t0x3081: 0x000c, 0x3082: 0x000c, 0x3083: 0x000c, 0x3084: 0x000c, 0x3085: 0x000c,\n\t0x3086: 0x000c, 0x3089: 0x000c, 0x308a: 0x000c,\n\t0x30b3: 0x000c, 0x30b4: 0x000c, 0x30b5: 0x000c,\n\t0x30b6: 0x000c, 0x30b7: 0x000c, 0x30b8: 0x000c, 0x30bb: 0x000c,\n\t0x30bc: 0x000c, 0x30bd: 0x000c, 0x30be: 0x000c,\n\t// Block 0xc3, offset 0x30c0\n\t0x30c7: 0x000c,\n\t0x30d1: 0x000c,\n\t0x30d2: 0x000c, 0x30d3: 0x000c, 0x30d4: 0x000c, 0x30d5: 0x000c, 0x30d6: 0x000c,\n\t0x30d9: 0x000c, 0x30da: 0x000c, 0x30db: 0x000c,\n\t// Block 0xc4, offset 0x3100\n\t0x310a: 0x000c, 0x310b: 0x000c,\n\t0x310c: 0x000c, 0x310d: 0x000c, 0x310e: 0x000c, 0x310f: 0x000c, 0x3110: 0x000c, 0x3111: 0x000c,\n\t0x3112: 0x000c, 0x3113: 0x000c, 0x3114: 0x000c, 0x3115: 0x000c, 0x3116: 0x000c,\n\t0x3118: 0x000c, 0x3119: 0x000c,\n\t// Block 0xc5, offset 0x3140\n\t0x3170: 0x000c, 0x3171: 0x000c, 0x3172: 0x000c, 0x3173: 0x000c, 0x3174: 0x000c, 0x3175: 0x000c,\n\t0x3176: 0x000c, 0x3178: 0x000c, 0x3179: 0x000c, 0x317a: 0x000c, 0x317b: 0x000c,\n\t0x317c: 0x000c, 0x317d: 0x000c,\n\t// Block 0xc6, offset 0x3180\n\t0x3192: 0x000c, 0x3193: 0x000c, 0x3194: 0x000c, 0x3195: 0x000c, 0x3196: 0x000c, 0x3197: 0x000c,\n\t0x3198: 0x000c, 0x3199: 0x000c, 0x319a: 0x000c, 0x319b: 0x000c, 0x319c: 0x000c, 0x319d: 0x000c,\n\t0x319e: 0x000c, 0x319f: 0x000c, 0x31a0: 0x000c, 0x31a1: 0x000c, 0x31a2: 0x000c, 0x31a3: 0x000c,\n\t0x31a4: 0x000c, 0x31a5: 0x000c, 0x31a6: 0x000c, 0x31a7: 0x000c,\n\t0x31aa: 0x000c, 0x31ab: 0x000c, 0x31ac: 0x000c, 0x31ad: 0x000c, 0x31ae: 0x000c, 0x31af: 0x000c,\n\t0x31b0: 0x000c, 0x31b2: 0x000c, 0x31b3: 0x000c, 0x31b5: 0x000c,\n\t0x31b6: 0x000c,\n\t// Block 0xc7, offset 0x31c0\n\t0x31f1: 0x000c, 0x31f2: 0x000c, 0x31f3: 0x000c, 0x31f4: 0x000c, 0x31f5: 0x000c,\n\t0x31f6: 0x000c, 0x31fa: 0x000c,\n\t0x31fc: 0x000c, 0x31fd: 0x000c, 0x31ff: 0x000c,\n\t// Block 0xc8, offset 0x3200\n\t0x3200: 0x000c, 0x3201: 0x000c, 0x3202: 0x000c, 0x3203: 0x000c, 0x3204: 0x000c, 0x3205: 0x000c,\n\t0x3207: 0x000c,\n\t// Block 0xc9, offset 0x3240\n\t0x3250: 0x000c, 0x3251: 0x000c,\n\t0x3255: 0x000c, 0x3257: 0x000c,\n\t// Block 0xca, offset 0x3280\n\t0x32b3: 0x000c, 0x32b4: 0x000c,\n\t// Block 0xcb, offset 0x32c0\n\t0x32c0: 0x000c, 0x32c1: 0x000c,\n\t0x32f6: 0x000c, 0x32f7: 0x000c, 0x32f8: 0x000c, 0x32f9: 0x000c, 0x32fa: 0x000c,\n\t// Block 0xcc, offset 0x3300\n\t0x3300: 0x000c, 0x3302: 0x000c,\n\t// Block 0xcd, offset 0x3340\n\t0x3355: 0x000a, 0x3356: 0x000a, 0x3357: 0x000a,\n\t0x3358: 0x000a, 0x3359: 0x000a, 0x335a: 0x000a, 0x335b: 0x000a, 0x335c: 0x000a, 0x335d: 0x0004,\n\t0x335e: 0x0004, 0x335f: 0x0004, 0x3360: 0x0004, 0x3361: 0x000a, 0x3362: 0x000a, 0x3363: 0x000a,\n\t0x3364: 0x000a, 0x3365: 0x000a, 0x3366: 0x000a, 0x3367: 0x000a, 0x3368: 0x000a, 0x3369: 0x000a,\n\t0x336a: 0x000a, 0x336b: 0x000a, 0x336c: 0x000a, 0x336d: 0x000a, 0x336e: 0x000a, 0x336f: 0x000a,\n\t0x3370: 0x000a, 0x3371: 0x000a,\n\t// Block 0xce, offset 0x3380\n\t0x3380: 0x000c,\n\t0x3387: 0x000c, 0x3388: 0x000c, 0x3389: 0x000c, 0x338a: 0x000c, 0x338b: 0x000c,\n\t0x338c: 0x000c, 0x338d: 0x000c, 0x338e: 0x000c, 0x338f: 0x000c, 0x3390: 0x000c, 0x3391: 0x000c,\n\t0x3392: 0x000c, 0x3393: 0x000c, 0x3394: 0x000c, 0x3395: 0x000c,\n\t// Block 0xcf, offset 0x33c0\n\t0x33f0: 0x000c, 0x33f1: 0x000c, 0x33f2: 0x000c, 0x33f3: 0x000c, 0x33f4: 0x000c,\n\t// Block 0xd0, offset 0x3400\n\t0x3430: 0x000c, 0x3431: 0x000c, 0x3432: 0x000c, 0x3433: 0x000c, 0x3434: 0x000c, 0x3435: 0x000c,\n\t0x3436: 0x000c,\n\t// Block 0xd1, offset 0x3440\n\t0x344f: 0x000c,\n\t// Block 0xd2, offset 0x3480\n\t0x348f: 0x000c, 0x3490: 0x000c, 0x3491: 0x000c,\n\t0x3492: 0x000c,\n\t// Block 0xd3, offset 0x34c0\n\t0x34e2: 0x000a,\n\t0x34e4: 0x000c,\n\t// Block 0xd4, offset 0x3500\n\t0x351d: 0x000c,\n\t0x351e: 0x000c, 0x3520: 0x000b, 0x3521: 0x000b, 0x3522: 0x000b, 0x3523: 0x000b,\n\t// Block 0xd5, offset 0x3540\n\t0x3540: 0x000c, 0x3541: 0x000c, 0x3542: 0x000c, 0x3543: 0x000c, 0x3544: 0x000c, 0x3545: 0x000c,\n\t0x3546: 0x000c, 0x3547: 0x000c, 0x3548: 0x000c, 0x3549: 0x000c, 0x354a: 0x000c, 0x354b: 0x000c,\n\t0x354c: 0x000c, 0x354d: 0x000c, 0x354e: 0x000c, 0x354f: 0x000c, 0x3550: 0x000c, 0x3551: 0x000c,\n\t0x3552: 0x000c, 0x3553: 0x000c, 0x3554: 0x000c, 0x3555: 0x000c, 0x3556: 0x000c, 0x3557: 0x000c,\n\t0x3558: 0x000c, 0x3559: 0x000c, 0x355a: 0x000c, 0x355b: 0x000c, 0x355c: 0x000c, 0x355d: 0x000c,\n\t0x355e: 0x000c, 0x355f: 0x000c, 0x3560: 0x000c, 0x3561: 0x000c, 0x3562: 0x000c, 0x3563: 0x000c,\n\t0x3564: 0x000c, 0x3565: 0x000c, 0x3566: 0x000c, 0x3567: 0x000c, 0x3568: 0x000c, 0x3569: 0x000c,\n\t0x356a: 0x000c, 0x356b: 0x000c, 0x356c: 0x000c, 0x356d: 0x000c,\n\t0x3570: 0x000c, 0x3571: 0x000c, 0x3572: 0x000c, 0x3573: 0x000c, 0x3574: 0x000c, 0x3575: 0x000c,\n\t0x3576: 0x000c, 0x3577: 0x000c, 0x3578: 0x000c, 0x3579: 0x000c, 0x357a: 0x000c, 0x357b: 0x000c,\n\t0x357c: 0x000c, 0x357d: 0x000c, 0x357e: 0x000c, 0x357f: 0x000c,\n\t// Block 0xd6, offset 0x3580\n\t0x3580: 0x000c, 0x3581: 0x000c, 0x3582: 0x000c, 0x3583: 0x000c, 0x3584: 0x000c, 0x3585: 0x000c,\n\t0x3586: 0x000c,\n\t// Block 0xd7, offset 0x35c0\n\t0x35e7: 0x000c, 0x35e8: 0x000c, 0x35e9: 0x000c,\n\t0x35f3: 0x000b, 0x35f4: 0x000b, 0x35f5: 0x000b,\n\t0x35f6: 0x000b, 0x35f7: 0x000b, 0x35f8: 0x000b, 0x35f9: 0x000b, 0x35fa: 0x000b, 0x35fb: 0x000c,\n\t0x35fc: 0x000c, 0x35fd: 0x000c, 0x35fe: 0x000c, 0x35ff: 0x000c,\n\t// Block 0xd8, offset 0x3600\n\t0x3600: 0x000c, 0x3601: 0x000c, 0x3602: 0x000c, 0x3605: 0x000c,\n\t0x3606: 0x000c, 0x3607: 0x000c, 0x3608: 0x000c, 0x3609: 0x000c, 0x360a: 0x000c, 0x360b: 0x000c,\n\t0x362a: 0x000c, 0x362b: 0x000c, 0x362c: 0x000c, 0x362d: 0x000c,\n\t// Block 0xd9, offset 0x3640\n\t0x3669: 0x000a,\n\t0x366a: 0x000a,\n\t// Block 0xda, offset 0x3680\n\t0x3680: 0x000a, 0x3681: 0x000a, 0x3682: 0x000c, 0x3683: 0x000c, 0x3684: 0x000c, 0x3685: 0x000a,\n\t// Block 0xdb, offset 0x36c0\n\t0x36c0: 0x000a, 0x36c1: 0x000a, 0x36c2: 0x000a, 0x36c3: 0x000a, 0x36c4: 0x000a, 0x36c5: 0x000a,\n\t0x36c6: 0x000a, 0x36c7: 0x000a, 0x36c8: 0x000a, 0x36c9: 0x000a, 0x36ca: 0x000a, 0x36cb: 0x000a,\n\t0x36cc: 0x000a, 0x36cd: 0x000a, 0x36ce: 0x000a, 0x36cf: 0x000a, 0x36d0: 0x000a, 0x36d1: 0x000a,\n\t0x36d2: 0x000a, 0x36d3: 0x000a, 0x36d4: 0x000a, 0x36d5: 0x000a, 0x36d6: 0x000a,\n\t// Block 0xdc, offset 0x3700\n\t0x371b: 0x000a,\n\t// Block 0xdd, offset 0x3740\n\t0x3755: 0x000a,\n\t// Block 0xde, offset 0x3780\n\t0x378f: 0x000a,\n\t// Block 0xdf, offset 0x37c0\n\t0x37c9: 0x000a,\n\t// Block 0xe0, offset 0x3800\n\t0x3803: 0x000a,\n\t0x380e: 0x0002, 0x380f: 0x0002, 0x3810: 0x0002, 0x3811: 0x0002,\n\t0x3812: 0x0002, 0x3813: 0x0002, 0x3814: 0x0002, 0x3815: 0x0002, 0x3816: 0x0002, 0x3817: 0x0002,\n\t0x3818: 0x0002, 0x3819: 0x0002, 0x381a: 0x0002, 0x381b: 0x0002, 0x381c: 0x0002, 0x381d: 0x0002,\n\t0x381e: 0x0002, 0x381f: 0x0002, 0x3820: 0x0002, 0x3821: 0x0002, 0x3822: 0x0002, 0x3823: 0x0002,\n\t0x3824: 0x0002, 0x3825: 0x0002, 0x3826: 0x0002, 0x3827: 0x0002, 0x3828: 0x0002, 0x3829: 0x0002,\n\t0x382a: 0x0002, 0x382b: 0x0002, 0x382c: 0x0002, 0x382d: 0x0002, 0x382e: 0x0002, 0x382f: 0x0002,\n\t0x3830: 0x0002, 0x3831: 0x0002, 0x3832: 0x0002, 0x3833: 0x0002, 0x3834: 0x0002, 0x3835: 0x0002,\n\t0x3836: 0x0002, 0x3837: 0x0002, 0x3838: 0x0002, 0x3839: 0x0002, 0x383a: 0x0002, 0x383b: 0x0002,\n\t0x383c: 0x0002, 0x383d: 0x0002, 0x383e: 0x0002, 0x383f: 0x0002,\n\t// Block 0xe1, offset 0x3840\n\t0x3840: 0x000c, 0x3841: 0x000c, 0x3842: 0x000c, 0x3843: 0x000c, 0x3844: 0x000c, 0x3845: 0x000c,\n\t0x3846: 0x000c, 0x3847: 0x000c, 0x3848: 0x000c, 0x3849: 0x000c, 0x384a: 0x000c, 0x384b: 0x000c,\n\t0x384c: 0x000c, 0x384d: 0x000c, 0x384e: 0x000c, 0x384f: 0x000c, 0x3850: 0x000c, 0x3851: 0x000c,\n\t0x3852: 0x000c, 0x3853: 0x000c, 0x3854: 0x000c, 0x3855: 0x000c, 0x3856: 0x000c, 0x3857: 0x000c,\n\t0x3858: 0x000c, 0x3859: 0x000c, 0x385a: 0x000c, 0x385b: 0x000c, 0x385c: 0x000c, 0x385d: 0x000c,\n\t0x385e: 0x000c, 0x385f: 0x000c, 0x3860: 0x000c, 0x3861: 0x000c, 0x3862: 0x000c, 0x3863: 0x000c,\n\t0x3864: 0x000c, 0x3865: 0x000c, 0x3866: 0x000c, 0x3867: 0x000c, 0x3868: 0x000c, 0x3869: 0x000c,\n\t0x386a: 0x000c, 0x386b: 0x000c, 0x386c: 0x000c, 0x386d: 0x000c, 0x386e: 0x000c, 0x386f: 0x000c,\n\t0x3870: 0x000c, 0x3871: 0x000c, 0x3872: 0x000c, 0x3873: 0x000c, 0x3874: 0x000c, 0x3875: 0x000c,\n\t0x3876: 0x000c, 0x387b: 0x000c,\n\t0x387c: 0x000c, 0x387d: 0x000c, 0x387e: 0x000c, 0x387f: 0x000c,\n\t// Block 0xe2, offset 0x3880\n\t0x3880: 0x000c, 0x3881: 0x000c, 0x3882: 0x000c, 0x3883: 0x000c, 0x3884: 0x000c, 0x3885: 0x000c,\n\t0x3886: 0x000c, 0x3887: 0x000c, 0x3888: 0x000c, 0x3889: 0x000c, 0x388a: 0x000c, 0x388b: 0x000c,\n\t0x388c: 0x000c, 0x388d: 0x000c, 0x388e: 0x000c, 0x388f: 0x000c, 0x3890: 0x000c, 0x3891: 0x000c,\n\t0x3892: 0x000c, 0x3893: 0x000c, 0x3894: 0x000c, 0x3895: 0x000c, 0x3896: 0x000c, 0x3897: 0x000c,\n\t0x3898: 0x000c, 0x3899: 0x000c, 0x389a: 0x000c, 0x389b: 0x000c, 0x389c: 0x000c, 0x389d: 0x000c,\n\t0x389e: 0x000c, 0x389f: 0x000c, 0x38a0: 0x000c, 0x38a1: 0x000c, 0x38a2: 0x000c, 0x38a3: 0x000c,\n\t0x38a4: 0x000c, 0x38a5: 0x000c, 0x38a6: 0x000c, 0x38a7: 0x000c, 0x38a8: 0x000c, 0x38a9: 0x000c,\n\t0x38aa: 0x000c, 0x38ab: 0x000c, 0x38ac: 0x000c,\n\t0x38b5: 0x000c,\n\t// Block 0xe3, offset 0x38c0\n\t0x38c4: 0x000c,\n\t0x38db: 0x000c, 0x38dc: 0x000c, 0x38dd: 0x000c,\n\t0x38de: 0x000c, 0x38df: 0x000c, 0x38e1: 0x000c, 0x38e2: 0x000c, 0x38e3: 0x000c,\n\t0x38e4: 0x000c, 0x38e5: 0x000c, 0x38e6: 0x000c, 0x38e7: 0x000c, 0x38e8: 0x000c, 0x38e9: 0x000c,\n\t0x38ea: 0x000c, 0x38eb: 0x000c, 0x38ec: 0x000c, 0x38ed: 0x000c, 0x38ee: 0x000c, 0x38ef: 0x000c,\n\t// Block 0xe4, offset 0x3900\n\t0x3900: 0x000c, 0x3901: 0x000c, 0x3902: 0x000c, 0x3903: 0x000c, 0x3904: 0x000c, 0x3905: 0x000c,\n\t0x3906: 0x000c, 0x3908: 0x000c, 0x3909: 0x000c, 0x390a: 0x000c, 0x390b: 0x000c,\n\t0x390c: 0x000c, 0x390d: 0x000c, 0x390e: 0x000c, 0x390f: 0x000c, 0x3910: 0x000c, 0x3911: 0x000c,\n\t0x3912: 0x000c, 0x3913: 0x000c, 0x3914: 0x000c, 0x3915: 0x000c, 0x3916: 0x000c, 0x3917: 0x000c,\n\t0x3918: 0x000c, 0x391b: 0x000c, 0x391c: 0x000c, 0x391d: 0x000c,\n\t0x391e: 0x000c, 0x391f: 0x000c, 0x3920: 0x000c, 0x3921: 0x000c, 0x3923: 0x000c,\n\t0x3924: 0x000c, 0x3926: 0x000c, 0x3927: 0x000c, 0x3928: 0x000c, 0x3929: 0x000c,\n\t0x392a: 0x000c,\n\t// Block 0xe5, offset 0x3940\n\t0x396e: 0x000c,\n\t// Block 0xe6, offset 0x3980\n\t0x39ac: 0x000c, 0x39ad: 0x000c, 0x39ae: 0x000c, 0x39af: 0x000c,\n\t0x39bf: 0x0004,\n\t// Block 0xe7, offset 0x39c0\n\t0x39ec: 0x000c, 0x39ed: 0x000c, 0x39ee: 0x000c, 0x39ef: 0x000c,\n\t// Block 0xe8, offset 0x3a00\n\t0x3a00: 0x0001, 0x3a01: 0x0001, 0x3a02: 0x0001, 0x3a03: 0x0001, 0x3a04: 0x0001, 0x3a05: 0x0001,\n\t0x3a06: 0x0001, 0x3a07: 0x0001, 0x3a08: 0x0001, 0x3a09: 0x0001, 0x3a0a: 0x0001, 0x3a0b: 0x0001,\n\t0x3a0c: 0x0001, 0x3a0d: 0x0001, 0x3a0e: 0x0001, 0x3a0f: 0x0001, 0x3a10: 0x000c, 0x3a11: 0x000c,\n\t0x3a12: 0x000c, 0x3a13: 0x000c, 0x3a14: 0x000c, 0x3a15: 0x000c, 0x3a16: 0x000c, 0x3a17: 0x0001,\n\t0x3a18: 0x0001, 0x3a19: 0x0001, 0x3a1a: 0x0001, 0x3a1b: 0x0001, 0x3a1c: 0x0001, 0x3a1d: 0x0001,\n\t0x3a1e: 0x0001, 0x3a1f: 0x0001, 0x3a20: 0x0001, 0x3a21: 0x0001, 0x3a22: 0x0001, 0x3a23: 0x0001,\n\t0x3a24: 0x0001, 0x3a25: 0x0001, 0x3a26: 0x0001, 0x3a27: 0x0001, 0x3a28: 0x0001, 0x3a29: 0x0001,\n\t0x3a2a: 0x0001, 0x3a2b: 0x0001, 0x3a2c: 0x0001, 0x3a2d: 0x0001, 0x3a2e: 0x0001, 0x3a2f: 0x0001,\n\t0x3a30: 0x0001, 0x3a31: 0x0001, 0x3a32: 0x0001, 0x3a33: 0x0001, 0x3a34: 0x0001, 0x3a35: 0x0001,\n\t0x3a36: 0x0001, 0x3a37: 0x0001, 0x3a38: 0x0001, 0x3a39: 0x0001, 0x3a3a: 0x0001, 0x3a3b: 0x0001,\n\t0x3a3c: 0x0001, 0x3a3d: 0x0001, 0x3a3e: 0x0001, 0x3a3f: 0x0001,\n\t// Block 0xe9, offset 0x3a40\n\t0x3a40: 0x0001, 0x3a41: 0x0001, 0x3a42: 0x0001, 0x3a43: 0x0001, 0x3a44: 0x000c, 0x3a45: 0x000c,\n\t0x3a46: 0x000c, 0x3a47: 0x000c, 0x3a48: 0x000c, 0x3a49: 0x000c, 0x3a4a: 0x000c, 0x3a4b: 0x0001,\n\t0x3a4c: 0x0001, 0x3a4d: 0x0001, 0x3a4e: 0x0001, 0x3a4f: 0x0001, 0x3a50: 0x0001, 0x3a51: 0x0001,\n\t0x3a52: 0x0001, 0x3a53: 0x0001, 0x3a54: 0x0001, 0x3a55: 0x0001, 0x3a56: 0x0001, 0x3a57: 0x0001,\n\t0x3a58: 0x0001, 0x3a59: 0x0001, 0x3a5a: 0x0001, 0x3a5b: 0x0001, 0x3a5c: 0x0001, 0x3a5d: 0x0001,\n\t0x3a5e: 0x0001, 0x3a5f: 0x0001, 0x3a60: 0x0001, 0x3a61: 0x0001, 0x3a62: 0x0001, 0x3a63: 0x0001,\n\t0x3a64: 0x0001, 0x3a65: 0x0001, 0x3a66: 0x0001, 0x3a67: 0x0001, 0x3a68: 0x0001, 0x3a69: 0x0001,\n\t0x3a6a: 0x0001, 0x3a6b: 0x0001, 0x3a6c: 0x0001, 0x3a6d: 0x0001, 0x3a6e: 0x0001, 0x3a6f: 0x0001,\n\t0x3a70: 0x0001, 0x3a71: 0x0001, 0x3a72: 0x0001, 0x3a73: 0x0001, 0x3a74: 0x0001, 0x3a75: 0x0001,\n\t0x3a76: 0x0001, 0x3a77: 0x0001, 0x3a78: 0x0001, 0x3a79: 0x0001, 0x3a7a: 0x0001, 0x3a7b: 0x0001,\n\t0x3a7c: 0x0001, 0x3a7d: 0x0001, 0x3a7e: 0x0001, 0x3a7f: 0x0001,\n\t// Block 0xea, offset 0x3a80\n\t0x3a80: 0x0001, 0x3a81: 0x0001, 0x3a82: 0x0001, 0x3a83: 0x0001, 0x3a84: 0x0001, 0x3a85: 0x0001,\n\t0x3a86: 0x0001, 0x3a87: 0x0001, 0x3a88: 0x0001, 0x3a89: 0x0001, 0x3a8a: 0x0001, 0x3a8b: 0x0001,\n\t0x3a8c: 0x0001, 0x3a8d: 0x0001, 0x3a8e: 0x0001, 0x3a8f: 0x0001, 0x3a90: 0x0001, 0x3a91: 0x0001,\n\t0x3a92: 0x0001, 0x3a93: 0x0001, 0x3a94: 0x0001, 0x3a95: 0x0001, 0x3a96: 0x0001, 0x3a97: 0x0001,\n\t0x3a98: 0x0001, 0x3a99: 0x0001, 0x3a9a: 0x0001, 0x3a9b: 0x0001, 0x3a9c: 0x0001, 0x3a9d: 0x0001,\n\t0x3a9e: 0x0001, 0x3a9f: 0x0001, 0x3aa0: 0x0001, 0x3aa1: 0x0001, 0x3aa2: 0x0001, 0x3aa3: 0x0001,\n\t0x3aa4: 0x0001, 0x3aa5: 0x0001, 0x3aa6: 0x0001, 0x3aa7: 0x0001, 0x3aa8: 0x0001, 0x3aa9: 0x0001,\n\t0x3aaa: 0x0001, 0x3aab: 0x0001, 0x3aac: 0x0001, 0x3aad: 0x0001, 0x3aae: 0x0001, 0x3aaf: 0x0001,\n\t0x3ab0: 0x0001, 0x3ab1: 0x000d, 0x3ab2: 0x000d, 0x3ab3: 0x000d, 0x3ab4: 0x000d, 0x3ab5: 0x000d,\n\t0x3ab6: 0x000d, 0x3ab7: 0x000d, 0x3ab8: 0x000d, 0x3ab9: 0x000d, 0x3aba: 0x000d, 0x3abb: 0x000d,\n\t0x3abc: 0x000d, 0x3abd: 0x000d, 0x3abe: 0x000d, 0x3abf: 0x000d,\n\t// Block 0xeb, offset 0x3ac0\n\t0x3ac0: 0x000d, 0x3ac1: 0x000d, 0x3ac2: 0x000d, 0x3ac3: 0x000d, 0x3ac4: 0x000d, 0x3ac5: 0x000d,\n\t0x3ac6: 0x000d, 0x3ac7: 0x000d, 0x3ac8: 0x000d, 0x3ac9: 0x000d, 0x3aca: 0x000d, 0x3acb: 0x000d,\n\t0x3acc: 0x000d, 0x3acd: 0x000d, 0x3ace: 0x000d, 0x3acf: 0x000d, 0x3ad0: 0x000d, 0x3ad1: 0x000d,\n\t0x3ad2: 0x000d, 0x3ad3: 0x000d, 0x3ad4: 0x000d, 0x3ad5: 0x000d, 0x3ad6: 0x000d, 0x3ad7: 0x000d,\n\t0x3ad8: 0x000d, 0x3ad9: 0x000d, 0x3ada: 0x000d, 0x3adb: 0x000d, 0x3adc: 0x000d, 0x3add: 0x000d,\n\t0x3ade: 0x000d, 0x3adf: 0x000d, 0x3ae0: 0x000d, 0x3ae1: 0x000d, 0x3ae2: 0x000d, 0x3ae3: 0x000d,\n\t0x3ae4: 0x000d, 0x3ae5: 0x000d, 0x3ae6: 0x000d, 0x3ae7: 0x000d, 0x3ae8: 0x000d, 0x3ae9: 0x000d,\n\t0x3aea: 0x000d, 0x3aeb: 0x000d, 0x3aec: 0x000d, 0x3aed: 0x000d, 0x3aee: 0x000d, 0x3aef: 0x000d,\n\t0x3af0: 0x000d, 0x3af1: 0x000d, 0x3af2: 0x000d, 0x3af3: 0x000d, 0x3af4: 0x000d, 0x3af5: 0x0001,\n\t0x3af6: 0x0001, 0x3af7: 0x0001, 0x3af8: 0x0001, 0x3af9: 0x0001, 0x3afa: 0x0001, 0x3afb: 0x0001,\n\t0x3afc: 0x0001, 0x3afd: 0x0001, 0x3afe: 0x0001, 0x3aff: 0x0001,\n\t// Block 0xec, offset 0x3b00\n\t0x3b00: 0x0001, 0x3b01: 0x000d, 0x3b02: 0x000d, 0x3b03: 0x000d, 0x3b04: 0x000d, 0x3b05: 0x000d,\n\t0x3b06: 0x000d, 0x3b07: 0x000d, 0x3b08: 0x000d, 0x3b09: 0x000d, 0x3b0a: 0x000d, 0x3b0b: 0x000d,\n\t0x3b0c: 0x000d, 0x3b0d: 0x000d, 0x3b0e: 0x000d, 0x3b0f: 0x000d, 0x3b10: 0x000d, 0x3b11: 0x000d,\n\t0x3b12: 0x000d, 0x3b13: 0x000d, 0x3b14: 0x000d, 0x3b15: 0x000d, 0x3b16: 0x000d, 0x3b17: 0x000d,\n\t0x3b18: 0x000d, 0x3b19: 0x000d, 0x3b1a: 0x000d, 0x3b1b: 0x000d, 0x3b1c: 0x000d, 0x3b1d: 0x000d,\n\t0x3b1e: 0x000d, 0x3b1f: 0x000d, 0x3b20: 0x000d, 0x3b21: 0x000d, 0x3b22: 0x000d, 0x3b23: 0x000d,\n\t0x3b24: 0x000d, 0x3b25: 0x000d, 0x3b26: 0x000d, 0x3b27: 0x000d, 0x3b28: 0x000d, 0x3b29: 0x000d,\n\t0x3b2a: 0x000d, 0x3b2b: 0x000d, 0x3b2c: 0x000d, 0x3b2d: 0x000d, 0x3b2e: 0x000d, 0x3b2f: 0x000d,\n\t0x3b30: 0x000d, 0x3b31: 0x000d, 0x3b32: 0x000d, 0x3b33: 0x000d, 0x3b34: 0x000d, 0x3b35: 0x000d,\n\t0x3b36: 0x000d, 0x3b37: 0x000d, 0x3b38: 0x000d, 0x3b39: 0x000d, 0x3b3a: 0x000d, 0x3b3b: 0x000d,\n\t0x3b3c: 0x000d, 0x3b3d: 0x000d, 0x3b3e: 0x0001, 0x3b3f: 0x0001,\n\t// Block 0xed, offset 0x3b40\n\t0x3b40: 0x000d, 0x3b41: 0x000d, 0x3b42: 0x000d, 0x3b43: 0x000d, 0x3b44: 0x000d, 0x3b45: 0x000d,\n\t0x3b46: 0x000d, 0x3b47: 0x000d, 0x3b48: 0x000d, 0x3b49: 0x000d, 0x3b4a: 0x000d, 0x3b4b: 0x000d,\n\t0x3b4c: 0x000d, 0x3b4d: 0x000d, 0x3b4e: 0x000d, 0x3b4f: 0x000d, 0x3b50: 0x000d, 0x3b51: 0x000d,\n\t0x3b52: 0x000d, 0x3b53: 0x000d, 0x3b54: 0x000d, 0x3b55: 0x000d, 0x3b56: 0x000d, 0x3b57: 0x000d,\n\t0x3b58: 0x000d, 0x3b59: 0x000d, 0x3b5a: 0x000d, 0x3b5b: 0x000d, 0x3b5c: 0x000d, 0x3b5d: 0x000d,\n\t0x3b5e: 0x000d, 0x3b5f: 0x000d, 0x3b60: 0x000d, 0x3b61: 0x000d, 0x3b62: 0x000d, 0x3b63: 0x000d,\n\t0x3b64: 0x000d, 0x3b65: 0x000d, 0x3b66: 0x000d, 0x3b67: 0x000d, 0x3b68: 0x000d, 0x3b69: 0x000d,\n\t0x3b6a: 0x000d, 0x3b6b: 0x000d, 0x3b6c: 0x000d, 0x3b6d: 0x000d, 0x3b6e: 0x000d, 0x3b6f: 0x000d,\n\t0x3b70: 0x000a, 0x3b71: 0x000a, 0x3b72: 0x000d, 0x3b73: 0x000d, 0x3b74: 0x000d, 0x3b75: 0x000d,\n\t0x3b76: 0x000d, 0x3b77: 0x000d, 0x3b78: 0x000d, 0x3b79: 0x000d, 0x3b7a: 0x000d, 0x3b7b: 0x000d,\n\t0x3b7c: 0x000d, 0x3b7d: 0x000d, 0x3b7e: 0x000d, 0x3b7f: 0x000d,\n\t// Block 0xee, offset 0x3b80\n\t0x3b80: 0x000a, 0x3b81: 0x000a, 0x3b82: 0x000a, 0x3b83: 0x000a, 0x3b84: 0x000a, 0x3b85: 0x000a,\n\t0x3b86: 0x000a, 0x3b87: 0x000a, 0x3b88: 0x000a, 0x3b89: 0x000a, 0x3b8a: 0x000a, 0x3b8b: 0x000a,\n\t0x3b8c: 0x000a, 0x3b8d: 0x000a, 0x3b8e: 0x000a, 0x3b8f: 0x000a, 0x3b90: 0x000a, 0x3b91: 0x000a,\n\t0x3b92: 0x000a, 0x3b93: 0x000a, 0x3b94: 0x000a, 0x3b95: 0x000a, 0x3b96: 0x000a, 0x3b97: 0x000a,\n\t0x3b98: 0x000a, 0x3b99: 0x000a, 0x3b9a: 0x000a, 0x3b9b: 0x000a, 0x3b9c: 0x000a, 0x3b9d: 0x000a,\n\t0x3b9e: 0x000a, 0x3b9f: 0x000a, 0x3ba0: 0x000a, 0x3ba1: 0x000a, 0x3ba2: 0x000a, 0x3ba3: 0x000a,\n\t0x3ba4: 0x000a, 0x3ba5: 0x000a, 0x3ba6: 0x000a, 0x3ba7: 0x000a, 0x3ba8: 0x000a, 0x3ba9: 0x000a,\n\t0x3baa: 0x000a, 0x3bab: 0x000a,\n\t0x3bb0: 0x000a, 0x3bb1: 0x000a, 0x3bb2: 0x000a, 0x3bb3: 0x000a, 0x3bb4: 0x000a, 0x3bb5: 0x000a,\n\t0x3bb6: 0x000a, 0x3bb7: 0x000a, 0x3bb8: 0x000a, 0x3bb9: 0x000a, 0x3bba: 0x000a, 0x3bbb: 0x000a,\n\t0x3bbc: 0x000a, 0x3bbd: 0x000a, 0x3bbe: 0x000a, 0x3bbf: 0x000a,\n\t// Block 0xef, offset 0x3bc0\n\t0x3bc0: 0x000a, 0x3bc1: 0x000a, 0x3bc2: 0x000a, 0x3bc3: 0x000a, 0x3bc4: 0x000a, 0x3bc5: 0x000a,\n\t0x3bc6: 0x000a, 0x3bc7: 0x000a, 0x3bc8: 0x000a, 0x3bc9: 0x000a, 0x3bca: 0x000a, 0x3bcb: 0x000a,\n\t0x3bcc: 0x000a, 0x3bcd: 0x000a, 0x3bce: 0x000a, 0x3bcf: 0x000a, 0x3bd0: 0x000a, 0x3bd1: 0x000a,\n\t0x3bd2: 0x000a, 0x3bd3: 0x000a,\n\t0x3be0: 0x000a, 0x3be1: 0x000a, 0x3be2: 0x000a, 0x3be3: 0x000a,\n\t0x3be4: 0x000a, 0x3be5: 0x000a, 0x3be6: 0x000a, 0x3be7: 0x000a, 0x3be8: 0x000a, 0x3be9: 0x000a,\n\t0x3bea: 0x000a, 0x3beb: 0x000a, 0x3bec: 0x000a, 0x3bed: 0x000a, 0x3bee: 0x000a,\n\t0x3bf1: 0x000a, 0x3bf2: 0x000a, 0x3bf3: 0x000a, 0x3bf4: 0x000a, 0x3bf5: 0x000a,\n\t0x3bf6: 0x000a, 0x3bf7: 0x000a, 0x3bf8: 0x000a, 0x3bf9: 0x000a, 0x3bfa: 0x000a, 0x3bfb: 0x000a,\n\t0x3bfc: 0x000a, 0x3bfd: 0x000a, 0x3bfe: 0x000a, 0x3bff: 0x000a,\n\t// Block 0xf0, offset 0x3c00\n\t0x3c01: 0x000a, 0x3c02: 0x000a, 0x3c03: 0x000a, 0x3c04: 0x000a, 0x3c05: 0x000a,\n\t0x3c06: 0x000a, 0x3c07: 0x000a, 0x3c08: 0x000a, 0x3c09: 0x000a, 0x3c0a: 0x000a, 0x3c0b: 0x000a,\n\t0x3c0c: 0x000a, 0x3c0d: 0x000a, 0x3c0e: 0x000a, 0x3c0f: 0x000a, 0x3c11: 0x000a,\n\t0x3c12: 0x000a, 0x3c13: 0x000a, 0x3c14: 0x000a, 0x3c15: 0x000a, 0x3c16: 0x000a, 0x3c17: 0x000a,\n\t0x3c18: 0x000a, 0x3c19: 0x000a, 0x3c1a: 0x000a, 0x3c1b: 0x000a, 0x3c1c: 0x000a, 0x3c1d: 0x000a,\n\t0x3c1e: 0x000a, 0x3c1f: 0x000a, 0x3c20: 0x000a, 0x3c21: 0x000a, 0x3c22: 0x000a, 0x3c23: 0x000a,\n\t0x3c24: 0x000a, 0x3c25: 0x000a, 0x3c26: 0x000a, 0x3c27: 0x000a, 0x3c28: 0x000a, 0x3c29: 0x000a,\n\t0x3c2a: 0x000a, 0x3c2b: 0x000a, 0x3c2c: 0x000a, 0x3c2d: 0x000a, 0x3c2e: 0x000a, 0x3c2f: 0x000a,\n\t0x3c30: 0x000a, 0x3c31: 0x000a, 0x3c32: 0x000a, 0x3c33: 0x000a, 0x3c34: 0x000a, 0x3c35: 0x000a,\n\t// Block 0xf1, offset 0x3c40\n\t0x3c40: 0x0002, 0x3c41: 0x0002, 0x3c42: 0x0002, 0x3c43: 0x0002, 0x3c44: 0x0002, 0x3c45: 0x0002,\n\t0x3c46: 0x0002, 0x3c47: 0x0002, 0x3c48: 0x0002, 0x3c49: 0x0002, 0x3c4a: 0x0002, 0x3c4b: 0x000a,\n\t0x3c4c: 0x000a, 0x3c4d: 0x000a, 0x3c4e: 0x000a, 0x3c4f: 0x000a,\n\t0x3c6f: 0x000a,\n\t// Block 0xf2, offset 0x3c80\n\t0x3caa: 0x000a, 0x3cab: 0x000a, 0x3cac: 0x000a, 0x3cad: 0x000a, 0x3cae: 0x000a, 0x3caf: 0x000a,\n\t// Block 0xf3, offset 0x3cc0\n\t0x3ced: 0x000a,\n\t// Block 0xf4, offset 0x3d00\n\t0x3d20: 0x000a, 0x3d21: 0x000a, 0x3d22: 0x000a, 0x3d23: 0x000a,\n\t0x3d24: 0x000a, 0x3d25: 0x000a,\n\t// Block 0xf5, offset 0x3d40\n\t0x3d40: 0x000a, 0x3d41: 0x000a, 0x3d42: 0x000a, 0x3d43: 0x000a, 0x3d44: 0x000a, 0x3d45: 0x000a,\n\t0x3d46: 0x000a, 0x3d47: 0x000a, 0x3d48: 0x000a, 0x3d49: 0x000a, 0x3d4a: 0x000a, 0x3d4b: 0x000a,\n\t0x3d4c: 0x000a, 0x3d4d: 0x000a, 0x3d4e: 0x000a, 0x3d4f: 0x000a, 0x3d50: 0x000a, 0x3d51: 0x000a,\n\t0x3d52: 0x000a, 0x3d53: 0x000a, 0x3d54: 0x000a, 0x3d55: 0x000a, 0x3d56: 0x000a, 0x3d57: 0x000a,\n\t0x3d5c: 0x000a, 0x3d5d: 0x000a,\n\t0x3d5e: 0x000a, 0x3d5f: 0x000a, 0x3d60: 0x000a, 0x3d61: 0x000a, 0x3d62: 0x000a, 0x3d63: 0x000a,\n\t0x3d64: 0x000a, 0x3d65: 0x000a, 0x3d66: 0x000a, 0x3d67: 0x000a, 0x3d68: 0x000a, 0x3d69: 0x000a,\n\t0x3d6a: 0x000a, 0x3d6b: 0x000a, 0x3d6c: 0x000a,\n\t0x3d70: 0x000a, 0x3d71: 0x000a, 0x3d72: 0x000a, 0x3d73: 0x000a, 0x3d74: 0x000a, 0x3d75: 0x000a,\n\t0x3d76: 0x000a, 0x3d77: 0x000a, 0x3d78: 0x000a, 0x3d79: 0x000a, 0x3d7a: 0x000a, 0x3d7b: 0x000a,\n\t0x3d7c: 0x000a,\n\t// Block 0xf6, offset 0x3d80\n\t0x3d80: 0x000a, 0x3d81: 0x000a, 0x3d82: 0x000a, 0x3d83: 0x000a, 0x3d84: 0x000a, 0x3d85: 0x000a,\n\t0x3d86: 0x000a, 0x3d87: 0x000a, 0x3d88: 0x000a, 0x3d89: 0x000a, 0x3d8a: 0x000a, 0x3d8b: 0x000a,\n\t0x3d8c: 0x000a, 0x3d8d: 0x000a, 0x3d8e: 0x000a, 0x3d8f: 0x000a, 0x3d90: 0x000a, 0x3d91: 0x000a,\n\t0x3d92: 0x000a, 0x3d93: 0x000a, 0x3d94: 0x000a, 0x3d95: 0x000a, 0x3d96: 0x000a, 0x3d97: 0x000a,\n\t0x3d98: 0x000a, 0x3d99: 0x000a, 0x3d9a: 0x000a, 0x3d9b: 0x000a, 0x3d9c: 0x000a, 0x3d9d: 0x000a,\n\t0x3d9e: 0x000a, 0x3d9f: 0x000a, 0x3da0: 0x000a, 0x3da1: 0x000a, 0x3da2: 0x000a, 0x3da3: 0x000a,\n\t0x3da4: 0x000a, 0x3da5: 0x000a, 0x3da6: 0x000a, 0x3da7: 0x000a, 0x3da8: 0x000a, 0x3da9: 0x000a,\n\t0x3daa: 0x000a, 0x3dab: 0x000a, 0x3dac: 0x000a, 0x3dad: 0x000a, 0x3dae: 0x000a, 0x3daf: 0x000a,\n\t0x3db0: 0x000a, 0x3db1: 0x000a, 0x3db2: 0x000a, 0x3db3: 0x000a, 0x3db4: 0x000a, 0x3db5: 0x000a,\n\t0x3db6: 0x000a, 0x3dbb: 0x000a,\n\t0x3dbc: 0x000a, 0x3dbd: 0x000a, 0x3dbe: 0x000a, 0x3dbf: 0x000a,\n\t// Block 0xf7, offset 0x3dc0\n\t0x3dc0: 0x000a, 0x3dc1: 0x000a, 0x3dc2: 0x000a, 0x3dc3: 0x000a, 0x3dc4: 0x000a, 0x3dc5: 0x000a,\n\t0x3dc6: 0x000a, 0x3dc7: 0x000a, 0x3dc8: 0x000a, 0x3dc9: 0x000a, 0x3dca: 0x000a, 0x3dcb: 0x000a,\n\t0x3dcc: 0x000a, 0x3dcd: 0x000a, 0x3dce: 0x000a, 0x3dcf: 0x000a, 0x3dd0: 0x000a, 0x3dd1: 0x000a,\n\t0x3dd2: 0x000a, 0x3dd3: 0x000a, 0x3dd4: 0x000a, 0x3dd5: 0x000a, 0x3dd6: 0x000a, 0x3dd7: 0x000a,\n\t0x3dd8: 0x000a, 0x3dd9: 0x000a,\n\t0x3de0: 0x000a, 0x3de1: 0x000a, 0x3de2: 0x000a, 0x3de3: 0x000a,\n\t0x3de4: 0x000a, 0x3de5: 0x000a, 0x3de6: 0x000a, 0x3de7: 0x000a, 0x3de8: 0x000a, 0x3de9: 0x000a,\n\t0x3dea: 0x000a, 0x3deb: 0x000a,\n\t0x3df0: 0x000a,\n\t// Block 0xf8, offset 0x3e00\n\t0x3e00: 0x000a, 0x3e01: 0x000a, 0x3e02: 0x000a, 0x3e03: 0x000a, 0x3e04: 0x000a, 0x3e05: 0x000a,\n\t0x3e06: 0x000a, 0x3e07: 0x000a, 0x3e08: 0x000a, 0x3e09: 0x000a, 0x3e0a: 0x000a, 0x3e0b: 0x000a,\n\t0x3e10: 0x000a, 0x3e11: 0x000a,\n\t0x3e12: 0x000a, 0x3e13: 0x000a, 0x3e14: 0x000a, 0x3e15: 0x000a, 0x3e16: 0x000a, 0x3e17: 0x000a,\n\t0x3e18: 0x000a, 0x3e19: 0x000a, 0x3e1a: 0x000a, 0x3e1b: 0x000a, 0x3e1c: 0x000a, 0x3e1d: 0x000a,\n\t0x3e1e: 0x000a, 0x3e1f: 0x000a, 0x3e20: 0x000a, 0x3e21: 0x000a, 0x3e22: 0x000a, 0x3e23: 0x000a,\n\t0x3e24: 0x000a, 0x3e25: 0x000a, 0x3e26: 0x000a, 0x3e27: 0x000a, 0x3e28: 0x000a, 0x3e29: 0x000a,\n\t0x3e2a: 0x000a, 0x3e2b: 0x000a, 0x3e2c: 0x000a, 0x3e2d: 0x000a, 0x3e2e: 0x000a, 0x3e2f: 0x000a,\n\t0x3e30: 0x000a, 0x3e31: 0x000a, 0x3e32: 0x000a, 0x3e33: 0x000a, 0x3e34: 0x000a, 0x3e35: 0x000a,\n\t0x3e36: 0x000a, 0x3e37: 0x000a, 0x3e38: 0x000a, 0x3e39: 0x000a, 0x3e3a: 0x000a, 0x3e3b: 0x000a,\n\t0x3e3c: 0x000a, 0x3e3d: 0x000a, 0x3e3e: 0x000a, 0x3e3f: 0x000a,\n\t// Block 0xf9, offset 0x3e40\n\t0x3e40: 0x000a, 0x3e41: 0x000a, 0x3e42: 0x000a, 0x3e43: 0x000a, 0x3e44: 0x000a, 0x3e45: 0x000a,\n\t0x3e46: 0x000a, 0x3e47: 0x000a,\n\t0x3e50: 0x000a, 0x3e51: 0x000a,\n\t0x3e52: 0x000a, 0x3e53: 0x000a, 0x3e54: 0x000a, 0x3e55: 0x000a, 0x3e56: 0x000a, 0x3e57: 0x000a,\n\t0x3e58: 0x000a, 0x3e59: 0x000a,\n\t0x3e60: 0x000a, 0x3e61: 0x000a, 0x3e62: 0x000a, 0x3e63: 0x000a,\n\t0x3e64: 0x000a, 0x3e65: 0x000a, 0x3e66: 0x000a, 0x3e67: 0x000a, 0x3e68: 0x000a, 0x3e69: 0x000a,\n\t0x3e6a: 0x000a, 0x3e6b: 0x000a, 0x3e6c: 0x000a, 0x3e6d: 0x000a, 0x3e6e: 0x000a, 0x3e6f: 0x000a,\n\t0x3e70: 0x000a, 0x3e71: 0x000a, 0x3e72: 0x000a, 0x3e73: 0x000a, 0x3e74: 0x000a, 0x3e75: 0x000a,\n\t0x3e76: 0x000a, 0x3e77: 0x000a, 0x3e78: 0x000a, 0x3e79: 0x000a, 0x3e7a: 0x000a, 0x3e7b: 0x000a,\n\t0x3e7c: 0x000a, 0x3e7d: 0x000a, 0x3e7e: 0x000a, 0x3e7f: 0x000a,\n\t// Block 0xfa, offset 0x3e80\n\t0x3e80: 0x000a, 0x3e81: 0x000a, 0x3e82: 0x000a, 0x3e83: 0x000a, 0x3e84: 0x000a, 0x3e85: 0x000a,\n\t0x3e86: 0x000a, 0x3e87: 0x000a,\n\t0x3e90: 0x000a, 0x3e91: 0x000a,\n\t0x3e92: 0x000a, 0x3e93: 0x000a, 0x3e94: 0x000a, 0x3e95: 0x000a, 0x3e96: 0x000a, 0x3e97: 0x000a,\n\t0x3e98: 0x000a, 0x3e99: 0x000a, 0x3e9a: 0x000a, 0x3e9b: 0x000a, 0x3e9c: 0x000a, 0x3e9d: 0x000a,\n\t0x3e9e: 0x000a, 0x3e9f: 0x000a, 0x3ea0: 0x000a, 0x3ea1: 0x000a, 0x3ea2: 0x000a, 0x3ea3: 0x000a,\n\t0x3ea4: 0x000a, 0x3ea5: 0x000a, 0x3ea6: 0x000a, 0x3ea7: 0x000a, 0x3ea8: 0x000a, 0x3ea9: 0x000a,\n\t0x3eaa: 0x000a, 0x3eab: 0x000a, 0x3eac: 0x000a, 0x3ead: 0x000a,\n\t0x3eb0: 0x000a, 0x3eb1: 0x000a,\n\t// Block 0xfb, offset 0x3ec0\n\t0x3ec0: 0x000a, 0x3ec1: 0x000a, 0x3ec2: 0x000a, 0x3ec3: 0x000a, 0x3ec4: 0x000a, 0x3ec5: 0x000a,\n\t0x3ec6: 0x000a, 0x3ec7: 0x000a, 0x3ec8: 0x000a, 0x3ec9: 0x000a, 0x3eca: 0x000a, 0x3ecb: 0x000a,\n\t0x3ecc: 0x000a, 0x3ecd: 0x000a, 0x3ece: 0x000a, 0x3ecf: 0x000a, 0x3ed0: 0x000a, 0x3ed1: 0x000a,\n\t0x3ed2: 0x000a, 0x3ed3: 0x000a,\n\t0x3ee0: 0x000a, 0x3ee1: 0x000a, 0x3ee2: 0x000a, 0x3ee3: 0x000a,\n\t0x3ee4: 0x000a, 0x3ee5: 0x000a, 0x3ee6: 0x000a, 0x3ee7: 0x000a, 0x3ee8: 0x000a, 0x3ee9: 0x000a,\n\t0x3eea: 0x000a, 0x3eeb: 0x000a, 0x3eec: 0x000a, 0x3eed: 0x000a,\n\t0x3ef0: 0x000a, 0x3ef1: 0x000a, 0x3ef2: 0x000a, 0x3ef3: 0x000a, 0x3ef4: 0x000a, 0x3ef5: 0x000a,\n\t0x3ef6: 0x000a, 0x3ef7: 0x000a, 0x3ef8: 0x000a, 0x3ef9: 0x000a, 0x3efa: 0x000a, 0x3efb: 0x000a,\n\t0x3efc: 0x000a,\n\t// Block 0xfc, offset 0x3f00\n\t0x3f00: 0x000a, 0x3f01: 0x000a, 0x3f02: 0x000a, 0x3f03: 0x000a, 0x3f04: 0x000a, 0x3f05: 0x000a,\n\t0x3f06: 0x000a, 0x3f07: 0x000a, 0x3f08: 0x000a,\n\t0x3f10: 0x000a, 0x3f11: 0x000a,\n\t0x3f12: 0x000a, 0x3f13: 0x000a, 0x3f14: 0x000a, 0x3f15: 0x000a, 0x3f16: 0x000a, 0x3f17: 0x000a,\n\t0x3f18: 0x000a, 0x3f19: 0x000a, 0x3f1a: 0x000a, 0x3f1b: 0x000a, 0x3f1c: 0x000a, 0x3f1d: 0x000a,\n\t0x3f1e: 0x000a, 0x3f1f: 0x000a, 0x3f20: 0x000a, 0x3f21: 0x000a, 0x3f22: 0x000a, 0x3f23: 0x000a,\n\t0x3f24: 0x000a, 0x3f25: 0x000a, 0x3f26: 0x000a, 0x3f27: 0x000a, 0x3f28: 0x000a, 0x3f29: 0x000a,\n\t0x3f2a: 0x000a, 0x3f2b: 0x000a, 0x3f2c: 0x000a, 0x3f2d: 0x000a, 0x3f2e: 0x000a, 0x3f2f: 0x000a,\n\t0x3f30: 0x000a, 0x3f31: 0x000a, 0x3f32: 0x000a, 0x3f33: 0x000a, 0x3f34: 0x000a, 0x3f35: 0x000a,\n\t0x3f36: 0x000a, 0x3f37: 0x000a, 0x3f38: 0x000a, 0x3f39: 0x000a, 0x3f3a: 0x000a, 0x3f3b: 0x000a,\n\t0x3f3c: 0x000a, 0x3f3d: 0x000a, 0x3f3f: 0x000a,\n\t// Block 0xfd, offset 0x3f40\n\t0x3f40: 0x000a, 0x3f41: 0x000a, 0x3f42: 0x000a, 0x3f43: 0x000a, 0x3f44: 0x000a, 0x3f45: 0x000a,\n\t0x3f4e: 0x000a, 0x3f4f: 0x000a, 0x3f50: 0x000a, 0x3f51: 0x000a,\n\t0x3f52: 0x000a, 0x3f53: 0x000a, 0x3f54: 0x000a, 0x3f55: 0x000a, 0x3f56: 0x000a, 0x3f57: 0x000a,\n\t0x3f58: 0x000a, 0x3f59: 0x000a, 0x3f5a: 0x000a, 0x3f5b: 0x000a,\n\t0x3f60: 0x000a, 0x3f61: 0x000a, 0x3f62: 0x000a, 0x3f63: 0x000a,\n\t0x3f64: 0x000a, 0x3f65: 0x000a, 0x3f66: 0x000a, 0x3f67: 0x000a, 0x3f68: 0x000a,\n\t0x3f70: 0x000a, 0x3f71: 0x000a, 0x3f72: 0x000a, 0x3f73: 0x000a, 0x3f74: 0x000a, 0x3f75: 0x000a,\n\t0x3f76: 0x000a, 0x3f77: 0x000a, 0x3f78: 0x000a,\n\t// Block 0xfe, offset 0x3f80\n\t0x3f80: 0x000a, 0x3f81: 0x000a, 0x3f82: 0x000a, 0x3f83: 0x000a, 0x3f84: 0x000a, 0x3f85: 0x000a,\n\t0x3f86: 0x000a, 0x3f87: 0x000a, 0x3f88: 0x000a, 0x3f89: 0x000a, 0x3f8a: 0x000a, 0x3f8b: 0x000a,\n\t0x3f8c: 0x000a, 0x3f8d: 0x000a, 0x3f8e: 0x000a, 0x3f8f: 0x000a, 0x3f90: 0x000a, 0x3f91: 0x000a,\n\t0x3f92: 0x000a, 0x3f94: 0x000a, 0x3f95: 0x000a, 0x3f96: 0x000a, 0x3f97: 0x000a,\n\t0x3f98: 0x000a, 0x3f99: 0x000a, 0x3f9a: 0x000a, 0x3f9b: 0x000a, 0x3f9c: 0x000a, 0x3f9d: 0x000a,\n\t0x3f9e: 0x000a, 0x3f9f: 0x000a, 0x3fa0: 0x000a, 0x3fa1: 0x000a, 0x3fa2: 0x000a, 0x3fa3: 0x000a,\n\t0x3fa4: 0x000a, 0x3fa5: 0x000a, 0x3fa6: 0x000a, 0x3fa7: 0x000a, 0x3fa8: 0x000a, 0x3fa9: 0x000a,\n\t0x3faa: 0x000a, 0x3fab: 0x000a, 0x3fac: 0x000a, 0x3fad: 0x000a, 0x3fae: 0x000a, 0x3faf: 0x000a,\n\t0x3fb0: 0x000a, 0x3fb1: 0x000a, 0x3fb2: 0x000a, 0x3fb3: 0x000a, 0x3fb4: 0x000a, 0x3fb5: 0x000a,\n\t0x3fb6: 0x000a, 0x3fb7: 0x000a, 0x3fb8: 0x000a, 0x3fb9: 0x000a, 0x3fba: 0x000a, 0x3fbb: 0x000a,\n\t0x3fbc: 0x000a, 0x3fbd: 0x000a, 0x3fbe: 0x000a, 0x3fbf: 0x000a,\n\t// Block 0xff, offset 0x3fc0\n\t0x3fc0: 0x000a, 0x3fc1: 0x000a, 0x3fc2: 0x000a, 0x3fc3: 0x000a, 0x3fc4: 0x000a, 0x3fc5: 0x000a,\n\t0x3fc6: 0x000a, 0x3fc7: 0x000a, 0x3fc8: 0x000a, 0x3fc9: 0x000a, 0x3fca: 0x000a,\n\t0x3ff0: 0x0002, 0x3ff1: 0x0002, 0x3ff2: 0x0002, 0x3ff3: 0x0002, 0x3ff4: 0x0002, 0x3ff5: 0x0002,\n\t0x3ff6: 0x0002, 0x3ff7: 0x0002, 0x3ff8: 0x0002, 0x3ff9: 0x0002,\n\t// Block 0x100, offset 0x4000\n\t0x403e: 0x000b, 0x403f: 0x000b,\n\t// Block 0x101, offset 0x4040\n\t0x4040: 0x000b, 0x4041: 0x000b, 0x4042: 0x000b, 0x4043: 0x000b, 0x4044: 0x000b, 0x4045: 0x000b,\n\t0x4046: 0x000b, 0x4047: 0x000b, 0x4048: 0x000b, 0x4049: 0x000b, 0x404a: 0x000b, 0x404b: 0x000b,\n\t0x404c: 0x000b, 0x404d: 0x000b, 0x404e: 0x000b, 0x404f: 0x000b, 0x4050: 0x000b, 0x4051: 0x000b,\n\t0x4052: 0x000b, 0x4053: 0x000b, 0x4054: 0x000b, 0x4055: 0x000b, 0x4056: 0x000b, 0x4057: 0x000b,\n\t0x4058: 0x000b, 0x4059: 0x000b, 0x405a: 0x000b, 0x405b: 0x000b, 0x405c: 0x000b, 0x405d: 0x000b,\n\t0x405e: 0x000b, 0x405f: 0x000b, 0x4060: 0x000b, 0x4061: 0x000b, 0x4062: 0x000b, 0x4063: 0x000b,\n\t0x4064: 0x000b, 0x4065: 0x000b, 0x4066: 0x000b, 0x4067: 0x000b, 0x4068: 0x000b, 0x4069: 0x000b,\n\t0x406a: 0x000b, 0x406b: 0x000b, 0x406c: 0x000b, 0x406d: 0x000b, 0x406e: 0x000b, 0x406f: 0x000b,\n\t0x4070: 0x000b, 0x4071: 0x000b, 0x4072: 0x000b, 0x4073: 0x000b, 0x4074: 0x000b, 0x4075: 0x000b,\n\t0x4076: 0x000b, 0x4077: 0x000b, 0x4078: 0x000b, 0x4079: 0x000b, 0x407a: 0x000b, 0x407b: 0x000b,\n\t0x407c: 0x000b, 0x407d: 0x000b, 0x407e: 0x000b, 0x407f: 0x000b,\n\t// Block 0x102, offset 0x4080\n\t0x4080: 0x000c, 0x4081: 0x000c, 0x4082: 0x000c, 0x4083: 0x000c, 0x4084: 0x000c, 0x4085: 0x000c,\n\t0x4086: 0x000c, 0x4087: 0x000c, 0x4088: 0x000c, 0x4089: 0x000c, 0x408a: 0x000c, 0x408b: 0x000c,\n\t0x408c: 0x000c, 0x408d: 0x000c, 0x408e: 0x000c, 0x408f: 0x000c, 0x4090: 0x000c, 0x4091: 0x000c,\n\t0x4092: 0x000c, 0x4093: 0x000c, 0x4094: 0x000c, 0x4095: 0x000c, 0x4096: 0x000c, 0x4097: 0x000c,\n\t0x4098: 0x000c, 0x4099: 0x000c, 0x409a: 0x000c, 0x409b: 0x000c, 0x409c: 0x000c, 0x409d: 0x000c,\n\t0x409e: 0x000c, 0x409f: 0x000c, 0x40a0: 0x000c, 0x40a1: 0x000c, 0x40a2: 0x000c, 0x40a3: 0x000c,\n\t0x40a4: 0x000c, 0x40a5: 0x000c, 0x40a6: 0x000c, 0x40a7: 0x000c, 0x40a8: 0x000c, 0x40a9: 0x000c,\n\t0x40aa: 0x000c, 0x40ab: 0x000c, 0x40ac: 0x000c, 0x40ad: 0x000c, 0x40ae: 0x000c, 0x40af: 0x000c,\n\t0x40b0: 0x000b, 0x40b1: 0x000b, 0x40b2: 0x000b, 0x40b3: 0x000b, 0x40b4: 0x000b, 0x40b5: 0x000b,\n\t0x40b6: 0x000b, 0x40b7: 0x000b, 0x40b8: 0x000b, 0x40b9: 0x000b, 0x40ba: 0x000b, 0x40bb: 0x000b,\n\t0x40bc: 0x000b, 0x40bd: 0x000b, 0x40be: 0x000b, 0x40bf: 0x000b,\n}\n\n// bidiIndex: 26 blocks, 1664 entries, 3328 bytes\n// Block 0 is the zero block.\nvar bidiIndex = [1664]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x02,\n\t0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08,\n\t0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b,\n\t0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06,\n\t0xea: 0x07, 0xef: 0x08,\n\t0xf0: 0x13, 0xf1: 0x14, 0xf2: 0x14, 0xf3: 0x16, 0xf4: 0x17,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b,\n\t0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22,\n\t0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x136: 0x28, 0x137: 0x29,\n\t0x138: 0x2a, 0x139: 0x2b, 0x13a: 0x2c, 0x13b: 0x2d, 0x13c: 0x2e, 0x13d: 0x2f, 0x13e: 0x30, 0x13f: 0x31,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x32, 0x141: 0x33, 0x142: 0x34,\n\t0x14d: 0x35, 0x14e: 0x36,\n\t0x150: 0x37,\n\t0x15a: 0x38, 0x15c: 0x39, 0x15d: 0x3a, 0x15e: 0x3b, 0x15f: 0x3c,\n\t0x160: 0x3d, 0x162: 0x3e, 0x164: 0x3f, 0x165: 0x40, 0x167: 0x41,\n\t0x168: 0x42, 0x169: 0x43, 0x16a: 0x44, 0x16b: 0x45, 0x16c: 0x46, 0x16d: 0x47, 0x16e: 0x48, 0x16f: 0x49,\n\t0x170: 0x4a, 0x173: 0x4b, 0x177: 0x05,\n\t0x17e: 0x4c, 0x17f: 0x4d,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x4e, 0x181: 0x4f, 0x182: 0x50, 0x183: 0x51, 0x184: 0x52, 0x185: 0x53, 0x186: 0x54, 0x187: 0x55,\n\t0x188: 0x56, 0x189: 0x55, 0x18a: 0x55, 0x18b: 0x55, 0x18c: 0x57, 0x18d: 0x58, 0x18e: 0x59, 0x18f: 0x55,\n\t0x190: 0x5a, 0x191: 0x5b, 0x192: 0x5c, 0x193: 0x5d, 0x194: 0x55, 0x195: 0x55, 0x196: 0x55, 0x197: 0x55,\n\t0x198: 0x55, 0x199: 0x55, 0x19a: 0x5e, 0x19b: 0x55, 0x19c: 0x55, 0x19d: 0x5f, 0x19e: 0x55, 0x19f: 0x60,\n\t0x1a4: 0x55, 0x1a5: 0x55, 0x1a6: 0x61, 0x1a7: 0x62,\n\t0x1a8: 0x55, 0x1a9: 0x55, 0x1aa: 0x55, 0x1ab: 0x55, 0x1ac: 0x55, 0x1ad: 0x63, 0x1ae: 0x64, 0x1af: 0x55,\n\t0x1b3: 0x65, 0x1b5: 0x66, 0x1b7: 0x67,\n\t0x1b8: 0x68, 0x1b9: 0x69, 0x1ba: 0x6a, 0x1bb: 0x6b, 0x1bc: 0x55, 0x1bd: 0x55, 0x1be: 0x55, 0x1bf: 0x6c,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x6d, 0x1c2: 0x6e, 0x1c3: 0x6f, 0x1c7: 0x70,\n\t0x1c8: 0x71, 0x1c9: 0x72, 0x1ca: 0x73, 0x1cb: 0x74, 0x1cd: 0x75, 0x1cf: 0x76,\n\t// Block 0x8, offset 0x200\n\t0x237: 0x55,\n\t// Block 0x9, offset 0x240\n\t0x252: 0x77, 0x253: 0x78,\n\t0x258: 0x79, 0x259: 0x7a, 0x25a: 0x7b, 0x25b: 0x7c, 0x25c: 0x7d, 0x25e: 0x7e,\n\t0x260: 0x7f, 0x261: 0x80, 0x263: 0x81, 0x264: 0x82, 0x265: 0x83, 0x266: 0x84, 0x267: 0x85,\n\t0x268: 0x86, 0x269: 0x87, 0x26a: 0x88, 0x26b: 0x89, 0x26d: 0x8a, 0x26f: 0x8b,\n\t// Block 0xa, offset 0x280\n\t0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x0e, 0x2af: 0x0e,\n\t0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8e, 0x2b5: 0x8f, 0x2b6: 0x0e, 0x2b7: 0x90,\n\t0x2b8: 0x91, 0x2b9: 0x92, 0x2ba: 0x0e, 0x2bb: 0x93, 0x2bc: 0x94, 0x2bd: 0x95, 0x2bf: 0x96,\n\t// Block 0xb, offset 0x2c0\n\t0x2c4: 0x97, 0x2c5: 0x55, 0x2c6: 0x98, 0x2c7: 0x99,\n\t0x2cb: 0x9a, 0x2cd: 0x9b,\n\t0x2e0: 0x9c, 0x2e1: 0x9c, 0x2e2: 0x9c, 0x2e3: 0x9c, 0x2e4: 0x9d, 0x2e5: 0x9c, 0x2e6: 0x9c, 0x2e7: 0x9c,\n\t0x2e8: 0x9e, 0x2e9: 0x9c, 0x2ea: 0x9c, 0x2eb: 0x9f, 0x2ec: 0xa0, 0x2ed: 0x9c, 0x2ee: 0x9c, 0x2ef: 0x9c,\n\t0x2f0: 0x9c, 0x2f1: 0x9c, 0x2f2: 0x9c, 0x2f3: 0x9c, 0x2f4: 0xa1, 0x2f5: 0x9c, 0x2f6: 0x9c, 0x2f7: 0x9c,\n\t0x2f8: 0x9c, 0x2f9: 0xa2, 0x2fa: 0xa3, 0x2fb: 0xa4, 0x2fc: 0xa5, 0x2fd: 0xa6, 0x2fe: 0xa7, 0x2ff: 0x9c,\n\t// Block 0xc, offset 0x300\n\t0x300: 0xa8, 0x301: 0xa9, 0x302: 0xaa, 0x303: 0x21, 0x304: 0xab, 0x305: 0xac, 0x306: 0xad, 0x307: 0xae,\n\t0x308: 0xaf, 0x309: 0x28, 0x30b: 0xb0, 0x30c: 0x26, 0x30d: 0xb1,\n\t0x310: 0xb2, 0x311: 0xb3, 0x312: 0xb4, 0x313: 0xb5, 0x316: 0xb6, 0x317: 0xb7,\n\t0x318: 0xb8, 0x319: 0xb9, 0x31a: 0xba, 0x31c: 0xbb,\n\t0x320: 0xbc, 0x324: 0xbd, 0x325: 0xbe, 0x327: 0xbf,\n\t0x328: 0xc0, 0x329: 0xc1, 0x32a: 0xc2,\n\t0x330: 0xc3, 0x332: 0xc4, 0x334: 0xc5, 0x335: 0xc6, 0x336: 0xc7,\n\t0x33b: 0xc8, 0x33c: 0xc9, 0x33d: 0xca, 0x33f: 0xcb,\n\t// Block 0xd, offset 0x340\n\t0x351: 0xcc,\n\t// Block 0xe, offset 0x380\n\t0x3ab: 0xcd, 0x3ac: 0xce,\n\t0x3bd: 0xcf, 0x3be: 0xd0, 0x3bf: 0xd1,\n\t// Block 0xf, offset 0x3c0\n\t0x3f2: 0xd2,\n\t// Block 0x10, offset 0x400\n\t0x43c: 0xd3, 0x43d: 0xd4,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xd5, 0x446: 0xd6, 0x447: 0xd7,\n\t0x448: 0x55, 0x449: 0xd8, 0x44c: 0x55, 0x44d: 0xd9,\n\t0x45b: 0xda, 0x45c: 0xdb, 0x45d: 0xdc, 0x45e: 0xdd, 0x45f: 0xde,\n\t0x468: 0xdf, 0x469: 0xe0, 0x46a: 0xe1,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xe2, 0x482: 0xcf, 0x484: 0xce,\n\t0x48a: 0xe3, 0x48b: 0xe4,\n\t0x493: 0xe5,\n\t0x4a0: 0x9c, 0x4a1: 0x9c, 0x4a2: 0x9c, 0x4a3: 0xe6, 0x4a4: 0x9c, 0x4a5: 0xe7, 0x4a6: 0x9c, 0x4a7: 0x9c,\n\t0x4a8: 0x9c, 0x4a9: 0x9c, 0x4aa: 0x9c, 0x4ab: 0x9c, 0x4ac: 0x9c, 0x4ad: 0x9c, 0x4ae: 0x9c, 0x4af: 0x9c,\n\t0x4b0: 0x9c, 0x4b1: 0xe8, 0x4b2: 0xe9, 0x4b3: 0x9c, 0x4b4: 0xea, 0x4b5: 0x9c, 0x4b6: 0x9c, 0x4b7: 0x9c,\n\t0x4b8: 0x0e, 0x4b9: 0x0e, 0x4ba: 0x0e, 0x4bb: 0xeb, 0x4bc: 0x9c, 0x4bd: 0x9c, 0x4be: 0x9c, 0x4bf: 0x9c,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0xec, 0x4c1: 0x55, 0x4c2: 0xed, 0x4c3: 0xee, 0x4c4: 0xef, 0x4c5: 0xf0, 0x4c6: 0xf1,\n\t0x4c9: 0xf2, 0x4cc: 0x55, 0x4cd: 0x55, 0x4ce: 0x55, 0x4cf: 0x55,\n\t0x4d0: 0x55, 0x4d1: 0x55, 0x4d2: 0x55, 0x4d3: 0x55, 0x4d4: 0x55, 0x4d5: 0x55, 0x4d6: 0x55, 0x4d7: 0x55,\n\t0x4d8: 0x55, 0x4d9: 0x55, 0x4da: 0x55, 0x4db: 0xf3, 0x4dc: 0x55, 0x4dd: 0xf4, 0x4de: 0x55, 0x4df: 0xf5,\n\t0x4e0: 0xf6, 0x4e1: 0xf7, 0x4e2: 0xf8, 0x4e4: 0x55, 0x4e5: 0x55, 0x4e6: 0x55, 0x4e7: 0x55,\n\t0x4e8: 0x55, 0x4e9: 0xf9, 0x4ea: 0xfa, 0x4eb: 0xfb, 0x4ec: 0x55, 0x4ed: 0x55, 0x4ee: 0xfc, 0x4ef: 0xfd,\n\t0x4ff: 0xfe,\n\t// Block 0x14, offset 0x500\n\t0x53f: 0xfe,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x09, 0x551: 0x0a, 0x553: 0x0b, 0x556: 0x0c,\n\t0x55b: 0x0d, 0x55c: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n\t0x57f: 0x12,\n\t// Block 0x16, offset 0x580\n\t0x58f: 0x12,\n\t0x59f: 0x12,\n\t0x5af: 0x12,\n\t0x5bf: 0x12,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0xff, 0x5c1: 0xff, 0x5c2: 0xff, 0x5c3: 0xff, 0x5c4: 0x05, 0x5c5: 0x05, 0x5c6: 0x05, 0x5c7: 0x100,\n\t0x5c8: 0xff, 0x5c9: 0xff, 0x5ca: 0xff, 0x5cb: 0xff, 0x5cc: 0xff, 0x5cd: 0xff, 0x5ce: 0xff, 0x5cf: 0xff,\n\t0x5d0: 0xff, 0x5d1: 0xff, 0x5d2: 0xff, 0x5d3: 0xff, 0x5d4: 0xff, 0x5d5: 0xff, 0x5d6: 0xff, 0x5d7: 0xff,\n\t0x5d8: 0xff, 0x5d9: 0xff, 0x5da: 0xff, 0x5db: 0xff, 0x5dc: 0xff, 0x5dd: 0xff, 0x5de: 0xff, 0x5df: 0xff,\n\t0x5e0: 0xff, 0x5e1: 0xff, 0x5e2: 0xff, 0x5e3: 0xff, 0x5e4: 0xff, 0x5e5: 0xff, 0x5e6: 0xff, 0x5e7: 0xff,\n\t0x5e8: 0xff, 0x5e9: 0xff, 0x5ea: 0xff, 0x5eb: 0xff, 0x5ec: 0xff, 0x5ed: 0xff, 0x5ee: 0xff, 0x5ef: 0xff,\n\t0x5f0: 0xff, 0x5f1: 0xff, 0x5f2: 0xff, 0x5f3: 0xff, 0x5f4: 0xff, 0x5f5: 0xff, 0x5f6: 0xff, 0x5f7: 0xff,\n\t0x5f8: 0xff, 0x5f9: 0xff, 0x5fa: 0xff, 0x5fb: 0xff, 0x5fc: 0xff, 0x5fd: 0xff, 0x5fe: 0xff, 0x5ff: 0xff,\n\t// Block 0x18, offset 0x600\n\t0x60f: 0x12,\n\t0x61f: 0x12,\n\t0x620: 0x15,\n\t0x62f: 0x12,\n\t0x63f: 0x12,\n\t// Block 0x19, offset 0x640\n\t0x64f: 0x12,\n}\n\n// Total table size 19960 bytes (19KiB); checksum: F50EF68C\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/tables17.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.27\n\npackage bidi\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"17.0.0\"\n\n// xorMasks contains masks to be xor-ed with brackets to get the reverse\n// version.\nvar xorMasks = []int32{ // 8 elements\n\t0, 1, 6, 7, 3, 15, 29, 63,\n} // Size: 56 bytes\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookup(s []byte) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupUnsafe(s []byte) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookupString(s string) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupStringUnsafe(s string) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// bidiTrie. Total size: 20608 bytes (20.12 KiB). Checksum: 291cd0103a32a537.\ntype bidiTrie struct{}\n\nfunc newBidiTrie(i int) *bidiTrie {\n\treturn &bidiTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *bidiTrie) lookupValue(n uint32, b byte) uint8 {\n\tswitch {\n\tdefault:\n\t\treturn uint8(bidiValues[n<<6+uint32(b)])\n\t}\n}\n\n// bidiValues: 270 blocks, 17280 entries, 17280 bytes\n// The third block is the zero block.\nvar bidiValues = [17280]uint8{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b,\n\t0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008,\n\t0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b,\n\t0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b,\n\t0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007,\n\t0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004,\n\t0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a,\n\t0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006,\n\t0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002,\n\t0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a,\n\t0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x000a,\n\t0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a,\n\t0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a,\n\t0x7b: 0x005a,\n\t0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007,\n\t0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b,\n\t0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b,\n\t0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b,\n\t0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b,\n\t0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004,\n\t0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a,\n\t0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a,\n\t0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a,\n\t0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a,\n\t0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a,\n\t// Block 0x4, offset 0x100\n\t0x117: 0x000a,\n\t0x137: 0x000a,\n\t// Block 0x5, offset 0x140\n\t0x179: 0x000a, 0x17a: 0x000a,\n\t// Block 0x6, offset 0x180\n\t0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a,\n\t0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a,\n\t0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a,\n\t0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a,\n\t0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a,\n\t0x19e: 0x000a, 0x19f: 0x000a,\n\t0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a,\n\t0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a,\n\t0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a,\n\t0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a,\n\t0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c,\n\t0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c,\n\t0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c,\n\t0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c,\n\t0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c,\n\t0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c,\n\t0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c,\n\t0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c,\n\t0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c,\n\t0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c,\n\t0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c,\n\t0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c,\n\t0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c,\n\t0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c,\n\t0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c,\n\t0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c,\n\t0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c,\n\t0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c,\n\t0x234: 0x000a, 0x235: 0x000a,\n\t0x23e: 0x000a,\n\t// Block 0x9, offset 0x240\n\t0x244: 0x000a, 0x245: 0x000a,\n\t0x247: 0x000a,\n\t// Block 0xa, offset 0x280\n\t0x2b6: 0x000a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c,\n\t0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c,\n\t// Block 0xc, offset 0x300\n\t0x30a: 0x000a,\n\t0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c,\n\t0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c,\n\t0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c,\n\t0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c,\n\t0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c,\n\t0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c,\n\t0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c,\n\t0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c,\n\t0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c,\n\t0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001,\n\t0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001,\n\t0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001,\n\t0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001,\n\t0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001,\n\t0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001,\n\t0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001,\n\t0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001,\n\t0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001,\n\t0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001,\n\t// Block 0xe, offset 0x380\n\t0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005,\n\t0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d,\n\t0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c,\n\t0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c,\n\t0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d,\n\t0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d,\n\t0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d,\n\t0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d,\n\t0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d,\n\t0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d,\n\t0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d,\n\t0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c,\n\t0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c,\n\t0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c,\n\t0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c,\n\t0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005,\n\t0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005,\n\t0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d,\n\t0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d,\n\t0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d,\n\t0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d,\n\t0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d,\n\t0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d,\n\t0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d,\n\t0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d,\n\t0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d,\n\t0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d,\n\t0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d,\n\t0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d,\n\t0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d,\n\t0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d,\n\t0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d,\n\t0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d,\n\t0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c,\n\t0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005,\n\t0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c,\n\t0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a,\n\t0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d,\n\t0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002,\n\t0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d,\n\t0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d,\n\t0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d,\n\t0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c,\n\t0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d,\n\t0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d,\n\t0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d,\n\t0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d,\n\t0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d,\n\t0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c,\n\t0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c,\n\t0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c,\n\t0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d,\n\t0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d,\n\t0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d,\n\t0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d,\n\t0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d,\n\t0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d,\n\t0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d,\n\t0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d,\n\t0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d,\n\t0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d,\n\t0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d,\n\t0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d,\n\t0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d,\n\t0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d,\n\t0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d,\n\t0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c,\n\t0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c,\n\t0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d,\n\t0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d,\n\t0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001,\n\t0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001,\n\t0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001,\n\t0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001,\n\t0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001,\n\t0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001,\n\t0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001,\n\t0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c,\n\t0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001,\n\t0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001,\n\t0x57c: 0x0001, 0x57d: 0x000c, 0x57e: 0x0001, 0x57f: 0x0001,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001,\n\t0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001,\n\t0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001,\n\t0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c,\n\t0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c,\n\t0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c,\n\t0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c,\n\t0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001,\n\t0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001,\n\t0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001,\n\t0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001,\n\t0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001,\n\t0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001,\n\t0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001,\n\t0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001,\n\t0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x000d, 0x5e1: 0x000d, 0x5e2: 0x000d, 0x5e3: 0x000d,\n\t0x5e4: 0x000d, 0x5e5: 0x000d, 0x5e6: 0x000d, 0x5e7: 0x000d, 0x5e8: 0x000d, 0x5e9: 0x000d,\n\t0x5ea: 0x000d, 0x5eb: 0x0001, 0x5ec: 0x0001, 0x5ed: 0x0001, 0x5ee: 0x0001, 0x5ef: 0x0001,\n\t0x5f0: 0x000d, 0x5f1: 0x000d, 0x5f2: 0x000d, 0x5f3: 0x000d, 0x5f4: 0x000d, 0x5f5: 0x000d,\n\t0x5f6: 0x000d, 0x5f7: 0x000d, 0x5f8: 0x000d, 0x5f9: 0x000d, 0x5fa: 0x000d, 0x5fb: 0x000d,\n\t0x5fc: 0x000d, 0x5fd: 0x000d, 0x5fe: 0x000d, 0x5ff: 0x000d,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x000d, 0x601: 0x000d, 0x602: 0x000d, 0x603: 0x000d, 0x604: 0x000d, 0x605: 0x000d,\n\t0x606: 0x000d, 0x607: 0x000d, 0x608: 0x000d, 0x609: 0x000d, 0x60a: 0x000d, 0x60b: 0x000d,\n\t0x60c: 0x000d, 0x60d: 0x000d, 0x60e: 0x000d, 0x60f: 0x000d, 0x610: 0x0005, 0x611: 0x0005,\n\t0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x000c,\n\t0x618: 0x000c, 0x619: 0x000c, 0x61a: 0x000c, 0x61b: 0x000c, 0x61c: 0x000c, 0x61d: 0x000c,\n\t0x61e: 0x000c, 0x61f: 0x000c, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d,\n\t0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d,\n\t0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d,\n\t0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d,\n\t0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d,\n\t0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d,\n\t0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000c, 0x64b: 0x000c,\n\t0x64c: 0x000c, 0x64d: 0x000c, 0x64e: 0x000c, 0x64f: 0x000c, 0x650: 0x000c, 0x651: 0x000c,\n\t0x652: 0x000c, 0x653: 0x000c, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c,\n\t0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c,\n\t0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c,\n\t0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c,\n\t0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c,\n\t0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c,\n\t0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c,\n\t0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c,\n\t0x6ba: 0x000c,\n\t0x6bc: 0x000c,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c,\n\t0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c,\n\t0x6cd: 0x000c, 0x6d1: 0x000c,\n\t0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c,\n\t0x6e2: 0x000c, 0x6e3: 0x000c,\n\t// Block 0x1c, offset 0x700\n\t0x701: 0x000c,\n\t0x73c: 0x000c,\n\t// Block 0x1d, offset 0x740\n\t0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c,\n\t0x74d: 0x000c,\n\t0x762: 0x000c, 0x763: 0x000c,\n\t0x772: 0x0004, 0x773: 0x0004,\n\t0x77b: 0x0004,\n\t0x77e: 0x000c,\n\t// Block 0x1e, offset 0x780\n\t0x781: 0x000c, 0x782: 0x000c,\n\t0x7bc: 0x000c,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x000c, 0x7c2: 0x000c,\n\t0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c,\n\t0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c,\n\t0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c,\n\t// Block 0x20, offset 0x800\n\t0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c,\n\t0x807: 0x000c, 0x808: 0x000c,\n\t0x80d: 0x000c,\n\t0x822: 0x000c, 0x823: 0x000c,\n\t0x831: 0x0004,\n\t0x83a: 0x000c, 0x83b: 0x000c,\n\t0x83c: 0x000c, 0x83d: 0x000c, 0x83e: 0x000c, 0x83f: 0x000c,\n\t// Block 0x21, offset 0x840\n\t0x841: 0x000c,\n\t0x87c: 0x000c, 0x87f: 0x000c,\n\t// Block 0x22, offset 0x880\n\t0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c,\n\t0x88d: 0x000c,\n\t0x895: 0x000c, 0x896: 0x000c,\n\t0x8a2: 0x000c, 0x8a3: 0x000c,\n\t// Block 0x23, offset 0x8c0\n\t0x8c2: 0x000c,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x000c,\n\t0x90d: 0x000c,\n\t0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a,\n\t0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x000c, 0x944: 0x000c,\n\t0x97c: 0x000c, 0x97e: 0x000c, 0x97f: 0x000c,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x000c,\n\t0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c,\n\t0x98c: 0x000c, 0x98d: 0x000c,\n\t0x995: 0x000c, 0x996: 0x000c,\n\t0x9a2: 0x000c, 0x9a3: 0x000c,\n\t0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a,\n\t0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a,\n\t// Block 0x27, offset 0x9c0\n\t0x9cc: 0x000c, 0x9cd: 0x000c,\n\t0x9e2: 0x000c, 0x9e3: 0x000c,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x000c, 0xa01: 0x000c,\n\t0xa3b: 0x000c,\n\t0xa3c: 0x000c,\n\t// Block 0x29, offset 0xa40\n\t0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c,\n\t0xa4d: 0x000c,\n\t0xa62: 0x000c, 0xa63: 0x000c,\n\t// Block 0x2a, offset 0xa80\n\t0xa81: 0x000c,\n\t// Block 0x2b, offset 0xac0\n\t0xaca: 0x000c,\n\t0xad2: 0x000c, 0xad3: 0x000c, 0xad4: 0x000c, 0xad6: 0x000c,\n\t// Block 0x2c, offset 0xb00\n\t0xb31: 0x000c, 0xb34: 0x000c, 0xb35: 0x000c,\n\t0xb36: 0x000c, 0xb37: 0x000c, 0xb38: 0x000c, 0xb39: 0x000c, 0xb3a: 0x000c,\n\t0xb3f: 0x0004,\n\t// Block 0x2d, offset 0xb40\n\t0xb47: 0x000c, 0xb48: 0x000c, 0xb49: 0x000c, 0xb4a: 0x000c, 0xb4b: 0x000c,\n\t0xb4c: 0x000c, 0xb4d: 0x000c, 0xb4e: 0x000c,\n\t// Block 0x2e, offset 0xb80\n\t0xbb1: 0x000c, 0xbb4: 0x000c, 0xbb5: 0x000c,\n\t0xbb6: 0x000c, 0xbb7: 0x000c, 0xbb8: 0x000c, 0xbb9: 0x000c, 0xbba: 0x000c, 0xbbb: 0x000c,\n\t0xbbc: 0x000c,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc8: 0x000c, 0xbc9: 0x000c, 0xbca: 0x000c, 0xbcb: 0x000c,\n\t0xbcc: 0x000c, 0xbcd: 0x000c, 0xbce: 0x000c,\n\t// Block 0x30, offset 0xc00\n\t0xc18: 0x000c, 0xc19: 0x000c,\n\t0xc35: 0x000c,\n\t0xc37: 0x000c, 0xc39: 0x000c, 0xc3a: 0x003a, 0xc3b: 0x002a,\n\t0xc3c: 0x003a, 0xc3d: 0x002a,\n\t// Block 0x31, offset 0xc40\n\t0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c,\n\t0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c,\n\t0xc7c: 0x000c, 0xc7d: 0x000c, 0xc7e: 0x000c,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x000c, 0xc81: 0x000c, 0xc82: 0x000c, 0xc83: 0x000c, 0xc84: 0x000c,\n\t0xc86: 0x000c, 0xc87: 0x000c,\n\t0xc8d: 0x000c, 0xc8e: 0x000c, 0xc8f: 0x000c, 0xc90: 0x000c, 0xc91: 0x000c,\n\t0xc92: 0x000c, 0xc93: 0x000c, 0xc94: 0x000c, 0xc95: 0x000c, 0xc96: 0x000c, 0xc97: 0x000c,\n\t0xc99: 0x000c, 0xc9a: 0x000c, 0xc9b: 0x000c, 0xc9c: 0x000c, 0xc9d: 0x000c,\n\t0xc9e: 0x000c, 0xc9f: 0x000c, 0xca0: 0x000c, 0xca1: 0x000c, 0xca2: 0x000c, 0xca3: 0x000c,\n\t0xca4: 0x000c, 0xca5: 0x000c, 0xca6: 0x000c, 0xca7: 0x000c, 0xca8: 0x000c, 0xca9: 0x000c,\n\t0xcaa: 0x000c, 0xcab: 0x000c, 0xcac: 0x000c, 0xcad: 0x000c, 0xcae: 0x000c, 0xcaf: 0x000c,\n\t0xcb0: 0x000c, 0xcb1: 0x000c, 0xcb2: 0x000c, 0xcb3: 0x000c, 0xcb4: 0x000c, 0xcb5: 0x000c,\n\t0xcb6: 0x000c, 0xcb7: 0x000c, 0xcb8: 0x000c, 0xcb9: 0x000c, 0xcba: 0x000c, 0xcbb: 0x000c,\n\t0xcbc: 0x000c,\n\t// Block 0x33, offset 0xcc0\n\t0xcc6: 0x000c,\n\t// Block 0x34, offset 0xd00\n\t0xd2d: 0x000c, 0xd2e: 0x000c, 0xd2f: 0x000c,\n\t0xd30: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c, 0xd35: 0x000c,\n\t0xd36: 0x000c, 0xd37: 0x000c, 0xd39: 0x000c, 0xd3a: 0x000c,\n\t0xd3d: 0x000c, 0xd3e: 0x000c,\n\t// Block 0x35, offset 0xd40\n\t0xd58: 0x000c, 0xd59: 0x000c,\n\t0xd5e: 0x000c, 0xd5f: 0x000c, 0xd60: 0x000c,\n\t0xd71: 0x000c, 0xd72: 0x000c, 0xd73: 0x000c, 0xd74: 0x000c,\n\t// Block 0x36, offset 0xd80\n\t0xd82: 0x000c, 0xd85: 0x000c,\n\t0xd86: 0x000c,\n\t0xd8d: 0x000c,\n\t0xd9d: 0x000c,\n\t// Block 0x37, offset 0xdc0\n\t0xddd: 0x000c,\n\t0xdde: 0x000c, 0xddf: 0x000c,\n\t// Block 0x38, offset 0xe00\n\t0xe10: 0x000a, 0xe11: 0x000a,\n\t0xe12: 0x000a, 0xe13: 0x000a, 0xe14: 0x000a, 0xe15: 0x000a, 0xe16: 0x000a, 0xe17: 0x000a,\n\t0xe18: 0x000a, 0xe19: 0x000a,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x000a,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x0009,\n\t0xe9b: 0x007a, 0xe9c: 0x006a,\n\t// Block 0x3b, offset 0xec0\n\t0xed2: 0x000c, 0xed3: 0x000c, 0xed4: 0x000c,\n\t0xef2: 0x000c, 0xef3: 0x000c,\n\t// Block 0x3c, offset 0xf00\n\t0xf12: 0x000c, 0xf13: 0x000c,\n\t0xf32: 0x000c, 0xf33: 0x000c,\n\t// Block 0x3d, offset 0xf40\n\t0xf74: 0x000c, 0xf75: 0x000c,\n\t0xf77: 0x000c, 0xf78: 0x000c, 0xf79: 0x000c, 0xf7a: 0x000c, 0xf7b: 0x000c,\n\t0xf7c: 0x000c, 0xf7d: 0x000c,\n\t// Block 0x3e, offset 0xf80\n\t0xf86: 0x000c, 0xf89: 0x000c, 0xf8a: 0x000c, 0xf8b: 0x000c,\n\t0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000c, 0xf8f: 0x000c, 0xf90: 0x000c, 0xf91: 0x000c,\n\t0xf92: 0x000c, 0xf93: 0x000c,\n\t0xf9b: 0x0004, 0xf9d: 0x000c,\n\t0xfb0: 0x000a, 0xfb1: 0x000a, 0xfb2: 0x000a, 0xfb3: 0x000a, 0xfb4: 0x000a, 0xfb5: 0x000a,\n\t0xfb6: 0x000a, 0xfb7: 0x000a, 0xfb8: 0x000a, 0xfb9: 0x000a,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x000a, 0xfc1: 0x000a, 0xfc2: 0x000a, 0xfc3: 0x000a, 0xfc4: 0x000a, 0xfc5: 0x000a,\n\t0xfc6: 0x000a, 0xfc7: 0x000a, 0xfc8: 0x000a, 0xfc9: 0x000a, 0xfca: 0x000a, 0xfcb: 0x000c,\n\t0xfcc: 0x000c, 0xfcd: 0x000c, 0xfce: 0x000b, 0xfcf: 0x000c,\n\t// Block 0x40, offset 0x1000\n\t0x1005: 0x000c,\n\t0x1006: 0x000c,\n\t0x1029: 0x000c,\n\t// Block 0x41, offset 0x1040\n\t0x1060: 0x000c, 0x1061: 0x000c, 0x1062: 0x000c,\n\t0x1067: 0x000c, 0x1068: 0x000c,\n\t0x1072: 0x000c,\n\t0x1079: 0x000c, 0x107a: 0x000c, 0x107b: 0x000c,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x000a, 0x1084: 0x000a, 0x1085: 0x000a,\n\t// Block 0x43, offset 0x10c0\n\t0x10de: 0x000a, 0x10df: 0x000a, 0x10e0: 0x000a, 0x10e1: 0x000a, 0x10e2: 0x000a, 0x10e3: 0x000a,\n\t0x10e4: 0x000a, 0x10e5: 0x000a, 0x10e6: 0x000a, 0x10e7: 0x000a, 0x10e8: 0x000a, 0x10e9: 0x000a,\n\t0x10ea: 0x000a, 0x10eb: 0x000a, 0x10ec: 0x000a, 0x10ed: 0x000a, 0x10ee: 0x000a, 0x10ef: 0x000a,\n\t0x10f0: 0x000a, 0x10f1: 0x000a, 0x10f2: 0x000a, 0x10f3: 0x000a, 0x10f4: 0x000a, 0x10f5: 0x000a,\n\t0x10f6: 0x000a, 0x10f7: 0x000a, 0x10f8: 0x000a, 0x10f9: 0x000a, 0x10fa: 0x000a, 0x10fb: 0x000a,\n\t0x10fc: 0x000a, 0x10fd: 0x000a, 0x10fe: 0x000a, 0x10ff: 0x000a,\n\t// Block 0x44, offset 0x1100\n\t0x1117: 0x000c,\n\t0x1118: 0x000c, 0x111b: 0x000c,\n\t// Block 0x45, offset 0x1140\n\t0x1156: 0x000c,\n\t0x1158: 0x000c, 0x1159: 0x000c, 0x115a: 0x000c, 0x115b: 0x000c, 0x115c: 0x000c, 0x115d: 0x000c,\n\t0x115e: 0x000c, 0x1160: 0x000c, 0x1162: 0x000c,\n\t0x1165: 0x000c, 0x1166: 0x000c, 0x1167: 0x000c, 0x1168: 0x000c, 0x1169: 0x000c,\n\t0x116a: 0x000c, 0x116b: 0x000c, 0x116c: 0x000c,\n\t0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c,\n\t0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c,\n\t0x117c: 0x000c, 0x117f: 0x000c,\n\t// Block 0x46, offset 0x1180\n\t0x11b0: 0x000c, 0x11b1: 0x000c, 0x11b2: 0x000c, 0x11b3: 0x000c, 0x11b4: 0x000c, 0x11b5: 0x000c,\n\t0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c, 0x11bb: 0x000c,\n\t0x11bc: 0x000c, 0x11bd: 0x000c, 0x11be: 0x000c, 0x11bf: 0x000c,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0x000c, 0x11c1: 0x000c, 0x11c2: 0x000c, 0x11c3: 0x000c, 0x11c4: 0x000c, 0x11c5: 0x000c,\n\t0x11c6: 0x000c, 0x11c7: 0x000c, 0x11c8: 0x000c, 0x11c9: 0x000c, 0x11ca: 0x000c, 0x11cb: 0x000c,\n\t0x11cc: 0x000c, 0x11cd: 0x000c, 0x11ce: 0x000c, 0x11cf: 0x000c, 0x11d0: 0x000c, 0x11d1: 0x000c,\n\t0x11d2: 0x000c, 0x11d3: 0x000c, 0x11d4: 0x000c, 0x11d5: 0x000c, 0x11d6: 0x000c, 0x11d7: 0x000c,\n\t0x11d8: 0x000c, 0x11d9: 0x000c, 0x11da: 0x000c, 0x11db: 0x000c, 0x11dc: 0x000c, 0x11dd: 0x000c,\n\t0x11e0: 0x000c, 0x11e1: 0x000c, 0x11e2: 0x000c, 0x11e3: 0x000c,\n\t0x11e4: 0x000c, 0x11e5: 0x000c, 0x11e6: 0x000c, 0x11e7: 0x000c, 0x11e8: 0x000c, 0x11e9: 0x000c,\n\t0x11ea: 0x000c, 0x11eb: 0x000c,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x000c, 0x1201: 0x000c, 0x1202: 0x000c, 0x1203: 0x000c,\n\t0x1234: 0x000c,\n\t0x1236: 0x000c, 0x1237: 0x000c, 0x1238: 0x000c, 0x1239: 0x000c, 0x123a: 0x000c,\n\t0x123c: 0x000c,\n\t// Block 0x49, offset 0x1240\n\t0x1242: 0x000c,\n\t0x126b: 0x000c, 0x126c: 0x000c, 0x126d: 0x000c, 0x126e: 0x000c, 0x126f: 0x000c,\n\t0x1270: 0x000c, 0x1271: 0x000c, 0x1272: 0x000c, 0x1273: 0x000c,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x000c, 0x1281: 0x000c,\n\t0x12a2: 0x000c, 0x12a3: 0x000c,\n\t0x12a4: 0x000c, 0x12a5: 0x000c, 0x12a8: 0x000c, 0x12a9: 0x000c,\n\t0x12ab: 0x000c, 0x12ac: 0x000c, 0x12ad: 0x000c,\n\t// Block 0x4b, offset 0x12c0\n\t0x12e6: 0x000c, 0x12e8: 0x000c, 0x12e9: 0x000c,\n\t0x12ed: 0x000c, 0x12ef: 0x000c,\n\t0x12f0: 0x000c, 0x12f1: 0x000c,\n\t// Block 0x4c, offset 0x1300\n\t0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c,\n\t0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c,\n\t0x1336: 0x000c, 0x1337: 0x000c,\n\t// Block 0x4d, offset 0x1340\n\t0x1350: 0x000c, 0x1351: 0x000c,\n\t0x1352: 0x000c, 0x1354: 0x000c, 0x1355: 0x000c, 0x1356: 0x000c, 0x1357: 0x000c,\n\t0x1358: 0x000c, 0x1359: 0x000c, 0x135a: 0x000c, 0x135b: 0x000c, 0x135c: 0x000c, 0x135d: 0x000c,\n\t0x135e: 0x000c, 0x135f: 0x000c, 0x1360: 0x000c, 0x1362: 0x000c, 0x1363: 0x000c,\n\t0x1364: 0x000c, 0x1365: 0x000c, 0x1366: 0x000c, 0x1367: 0x000c, 0x1368: 0x000c,\n\t0x136d: 0x000c,\n\t0x1374: 0x000c,\n\t0x1378: 0x000c, 0x1379: 0x000c,\n\t// Block 0x4e, offset 0x1380\n\t0x13bd: 0x000a, 0x13bf: 0x000a,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x000a, 0x13c1: 0x000a,\n\t0x13cd: 0x000a, 0x13ce: 0x000a, 0x13cf: 0x000a,\n\t0x13dd: 0x000a,\n\t0x13de: 0x000a, 0x13df: 0x000a,\n\t0x13ed: 0x000a, 0x13ee: 0x000a, 0x13ef: 0x000a,\n\t0x13fd: 0x000a, 0x13fe: 0x000a,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x0009, 0x1401: 0x0009, 0x1402: 0x0009, 0x1403: 0x0009, 0x1404: 0x0009, 0x1405: 0x0009,\n\t0x1406: 0x0009, 0x1407: 0x0009, 0x1408: 0x0009, 0x1409: 0x0009, 0x140a: 0x0009, 0x140b: 0x000b,\n\t0x140c: 0x000b, 0x140d: 0x000b, 0x140f: 0x0001, 0x1410: 0x000a, 0x1411: 0x000a,\n\t0x1412: 0x000a, 0x1413: 0x000a, 0x1414: 0x000a, 0x1415: 0x000a, 0x1416: 0x000a, 0x1417: 0x000a,\n\t0x1418: 0x000a, 0x1419: 0x000a, 0x141a: 0x000a, 0x141b: 0x000a, 0x141c: 0x000a, 0x141d: 0x000a,\n\t0x141e: 0x000a, 0x141f: 0x000a, 0x1420: 0x000a, 0x1421: 0x000a, 0x1422: 0x000a, 0x1423: 0x000a,\n\t0x1424: 0x000a, 0x1425: 0x000a, 0x1426: 0x000a, 0x1427: 0x000a, 0x1428: 0x0009, 0x1429: 0x0007,\n\t0x142a: 0x000e, 0x142b: 0x000e, 0x142c: 0x000e, 0x142d: 0x000e, 0x142e: 0x000e, 0x142f: 0x0006,\n\t0x1430: 0x0004, 0x1431: 0x0004, 0x1432: 0x0004, 0x1433: 0x0004, 0x1434: 0x0004, 0x1435: 0x000a,\n\t0x1436: 0x000a, 0x1437: 0x000a, 0x1438: 0x000a, 0x1439: 0x000a, 0x143a: 0x000a, 0x143b: 0x000a,\n\t0x143c: 0x000a, 0x143d: 0x000a, 0x143e: 0x000a, 0x143f: 0x000a,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x000a, 0x1441: 0x000a, 0x1442: 0x000a, 0x1443: 0x000a, 0x1444: 0x0006, 0x1445: 0x009a,\n\t0x1446: 0x008a, 0x1447: 0x000a, 0x1448: 0x000a, 0x1449: 0x000a, 0x144a: 0x000a, 0x144b: 0x000a,\n\t0x144c: 0x000a, 0x144d: 0x000a, 0x144e: 0x000a, 0x144f: 0x000a, 0x1450: 0x000a, 0x1451: 0x000a,\n\t0x1452: 0x000a, 0x1453: 0x000a, 0x1454: 0x000a, 0x1455: 0x000a, 0x1456: 0x000a, 0x1457: 0x000a,\n\t0x1458: 0x000a, 0x1459: 0x000a, 0x145a: 0x000a, 0x145b: 0x000a, 0x145c: 0x000a, 0x145d: 0x000a,\n\t0x145e: 0x000a, 0x145f: 0x0009, 0x1460: 0x000b, 0x1461: 0x000b, 0x1462: 0x000b, 0x1463: 0x000b,\n\t0x1464: 0x000b, 0x1465: 0x000b, 0x1466: 0x000e, 0x1467: 0x000e, 0x1468: 0x000e, 0x1469: 0x000e,\n\t0x146a: 0x000b, 0x146b: 0x000b, 0x146c: 0x000b, 0x146d: 0x000b, 0x146e: 0x000b, 0x146f: 0x000b,\n\t0x1470: 0x0002, 0x1474: 0x0002, 0x1475: 0x0002,\n\t0x1476: 0x0002, 0x1477: 0x0002, 0x1478: 0x0002, 0x1479: 0x0002, 0x147a: 0x0003, 0x147b: 0x0003,\n\t0x147c: 0x000a, 0x147d: 0x009a, 0x147e: 0x008a,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x0002, 0x1481: 0x0002, 0x1482: 0x0002, 0x1483: 0x0002, 0x1484: 0x0002, 0x1485: 0x0002,\n\t0x1486: 0x0002, 0x1487: 0x0002, 0x1488: 0x0002, 0x1489: 0x0002, 0x148a: 0x0003, 0x148b: 0x0003,\n\t0x148c: 0x000a, 0x148d: 0x009a, 0x148e: 0x008a,\n\t0x14a0: 0x0004, 0x14a1: 0x0004, 0x14a2: 0x0004, 0x14a3: 0x0004,\n\t0x14a4: 0x0004, 0x14a5: 0x0004, 0x14a6: 0x0004, 0x14a7: 0x0004, 0x14a8: 0x0004, 0x14a9: 0x0004,\n\t0x14aa: 0x0004, 0x14ab: 0x0004, 0x14ac: 0x0004, 0x14ad: 0x0004, 0x14ae: 0x0004, 0x14af: 0x0004,\n\t0x14b0: 0x0004, 0x14b1: 0x0004, 0x14b2: 0x0004, 0x14b3: 0x0004, 0x14b4: 0x0004, 0x14b5: 0x0004,\n\t0x14b6: 0x0004, 0x14b7: 0x0004, 0x14b8: 0x0004, 0x14b9: 0x0004, 0x14ba: 0x0004, 0x14bb: 0x0004,\n\t0x14bc: 0x0004, 0x14bd: 0x0004, 0x14be: 0x0004, 0x14bf: 0x0004,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x0004, 0x14c1: 0x0004, 0x14c2: 0x0004, 0x14c3: 0x0004, 0x14c4: 0x0004, 0x14c5: 0x0004,\n\t0x14c6: 0x0004, 0x14c7: 0x0004, 0x14c8: 0x0004, 0x14c9: 0x0004, 0x14ca: 0x0004, 0x14cb: 0x0004,\n\t0x14cc: 0x0004, 0x14cd: 0x0004, 0x14ce: 0x0004, 0x14cf: 0x0004, 0x14d0: 0x000c, 0x14d1: 0x000c,\n\t0x14d2: 0x000c, 0x14d3: 0x000c, 0x14d4: 0x000c, 0x14d5: 0x000c, 0x14d6: 0x000c, 0x14d7: 0x000c,\n\t0x14d8: 0x000c, 0x14d9: 0x000c, 0x14da: 0x000c, 0x14db: 0x000c, 0x14dc: 0x000c, 0x14dd: 0x000c,\n\t0x14de: 0x000c, 0x14df: 0x000c, 0x14e0: 0x000c, 0x14e1: 0x000c, 0x14e2: 0x000c, 0x14e3: 0x000c,\n\t0x14e4: 0x000c, 0x14e5: 0x000c, 0x14e6: 0x000c, 0x14e7: 0x000c, 0x14e8: 0x000c, 0x14e9: 0x000c,\n\t0x14ea: 0x000c, 0x14eb: 0x000c, 0x14ec: 0x000c, 0x14ed: 0x000c, 0x14ee: 0x000c, 0x14ef: 0x000c,\n\t0x14f0: 0x000c,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x000a, 0x1501: 0x000a, 0x1503: 0x000a, 0x1504: 0x000a, 0x1505: 0x000a,\n\t0x1506: 0x000a, 0x1508: 0x000a, 0x1509: 0x000a,\n\t0x1514: 0x000a, 0x1516: 0x000a, 0x1517: 0x000a,\n\t0x1518: 0x000a,\n\t0x151e: 0x000a, 0x151f: 0x000a, 0x1520: 0x000a, 0x1521: 0x000a, 0x1522: 0x000a, 0x1523: 0x000a,\n\t0x1525: 0x000a, 0x1527: 0x000a, 0x1529: 0x000a,\n\t0x152e: 0x0004,\n\t0x153a: 0x000a, 0x153b: 0x000a,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x000a, 0x1541: 0x000a, 0x1542: 0x000a, 0x1543: 0x000a, 0x1544: 0x000a,\n\t0x154a: 0x000a, 0x154b: 0x000a,\n\t0x154c: 0x000a, 0x154d: 0x000a, 0x1550: 0x000a, 0x1551: 0x000a,\n\t0x1552: 0x000a, 0x1553: 0x000a, 0x1554: 0x000a, 0x1555: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a,\n\t0x1558: 0x000a, 0x1559: 0x000a, 0x155a: 0x000a, 0x155b: 0x000a, 0x155c: 0x000a, 0x155d: 0x000a,\n\t0x155e: 0x000a, 0x155f: 0x000a,\n\t// Block 0x56, offset 0x1580\n\t0x1589: 0x000a, 0x158a: 0x000a, 0x158b: 0x000a,\n\t0x1590: 0x000a, 0x1591: 0x000a,\n\t0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a,\n\t0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a,\n\t0x159e: 0x000a, 0x159f: 0x000a, 0x15a0: 0x000a, 0x15a1: 0x000a, 0x15a2: 0x000a, 0x15a3: 0x000a,\n\t0x15a4: 0x000a, 0x15a5: 0x000a, 0x15a6: 0x000a, 0x15a7: 0x000a, 0x15a8: 0x000a, 0x15a9: 0x000a,\n\t0x15aa: 0x000a, 0x15ab: 0x000a, 0x15ac: 0x000a, 0x15ad: 0x000a, 0x15ae: 0x000a, 0x15af: 0x000a,\n\t0x15b0: 0x000a, 0x15b1: 0x000a, 0x15b2: 0x000a, 0x15b3: 0x000a, 0x15b4: 0x000a, 0x15b5: 0x000a,\n\t0x15b6: 0x000a, 0x15b7: 0x000a, 0x15b8: 0x000a, 0x15b9: 0x000a, 0x15ba: 0x000a, 0x15bb: 0x000a,\n\t0x15bc: 0x000a, 0x15bd: 0x000a, 0x15be: 0x000a, 0x15bf: 0x000a,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x000a, 0x15c1: 0x000a, 0x15c2: 0x000a, 0x15c3: 0x000a, 0x15c4: 0x000a, 0x15c5: 0x000a,\n\t0x15c6: 0x000a, 0x15c7: 0x000a, 0x15c8: 0x000a, 0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a,\n\t0x15cc: 0x000a, 0x15cd: 0x000a, 0x15ce: 0x000a, 0x15cf: 0x000a, 0x15d0: 0x000a, 0x15d1: 0x000a,\n\t0x15d2: 0x000a, 0x15d3: 0x000a, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a,\n\t0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a,\n\t0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a,\n\t0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a,\n\t0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a,\n\t0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a,\n\t0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a,\n\t0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a,\n\t0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x000a, 0x1609: 0x000a, 0x160a: 0x000a, 0x160b: 0x000a,\n\t0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a,\n\t0x1612: 0x0003, 0x1613: 0x0004, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a,\n\t0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a,\n\t0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a,\n\t0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x000a,\n\t0x162a: 0x000a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a,\n\t0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a,\n\t0x1636: 0x000a, 0x1637: 0x000a, 0x1638: 0x000a, 0x1639: 0x000a, 0x163a: 0x000a, 0x163b: 0x000a,\n\t0x163c: 0x000a, 0x163d: 0x000a, 0x163e: 0x000a, 0x163f: 0x000a,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x000a, 0x1641: 0x000a, 0x1642: 0x000a, 0x1643: 0x000a, 0x1644: 0x000a, 0x1645: 0x000a,\n\t0x1646: 0x000a, 0x1647: 0x000a, 0x1648: 0x003a, 0x1649: 0x002a, 0x164a: 0x003a, 0x164b: 0x002a,\n\t0x164c: 0x000a, 0x164d: 0x000a, 0x164e: 0x000a, 0x164f: 0x000a, 0x1650: 0x000a, 0x1651: 0x000a,\n\t0x1652: 0x000a, 0x1653: 0x000a, 0x1654: 0x000a, 0x1655: 0x000a, 0x1656: 0x000a, 0x1657: 0x000a,\n\t0x1658: 0x000a, 0x1659: 0x000a, 0x165a: 0x000a, 0x165b: 0x000a, 0x165c: 0x000a, 0x165d: 0x000a,\n\t0x165e: 0x000a, 0x165f: 0x000a, 0x1660: 0x000a, 0x1661: 0x000a, 0x1662: 0x000a, 0x1663: 0x000a,\n\t0x1664: 0x000a, 0x1665: 0x000a, 0x1666: 0x000a, 0x1667: 0x000a, 0x1668: 0x000a, 0x1669: 0x009a,\n\t0x166a: 0x008a, 0x166b: 0x000a, 0x166c: 0x000a, 0x166d: 0x000a, 0x166e: 0x000a, 0x166f: 0x000a,\n\t0x1670: 0x000a, 0x1671: 0x000a, 0x1672: 0x000a, 0x1673: 0x000a, 0x1674: 0x000a, 0x1675: 0x000a,\n\t// Block 0x5a, offset 0x1680\n\t0x16bb: 0x000a,\n\t0x16bc: 0x000a, 0x16bd: 0x000a, 0x16be: 0x000a, 0x16bf: 0x000a,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x000a, 0x16c1: 0x000a, 0x16c2: 0x000a, 0x16c3: 0x000a, 0x16c4: 0x000a, 0x16c5: 0x000a,\n\t0x16c6: 0x000a, 0x16c7: 0x000a, 0x16c8: 0x000a, 0x16c9: 0x000a, 0x16ca: 0x000a, 0x16cb: 0x000a,\n\t0x16cc: 0x000a, 0x16cd: 0x000a, 0x16ce: 0x000a, 0x16cf: 0x000a, 0x16d0: 0x000a, 0x16d1: 0x000a,\n\t0x16d2: 0x000a, 0x16d3: 0x000a, 0x16d4: 0x000a, 0x16d6: 0x000a, 0x16d7: 0x000a,\n\t0x16d8: 0x000a, 0x16d9: 0x000a, 0x16da: 0x000a, 0x16db: 0x000a, 0x16dc: 0x000a, 0x16dd: 0x000a,\n\t0x16de: 0x000a, 0x16df: 0x000a, 0x16e0: 0x000a, 0x16e1: 0x000a, 0x16e2: 0x000a, 0x16e3: 0x000a,\n\t0x16e4: 0x000a, 0x16e5: 0x000a, 0x16e6: 0x000a, 0x16e7: 0x000a, 0x16e8: 0x000a, 0x16e9: 0x000a,\n\t0x16ea: 0x000a, 0x16eb: 0x000a, 0x16ec: 0x000a, 0x16ed: 0x000a, 0x16ee: 0x000a, 0x16ef: 0x000a,\n\t0x16f0: 0x000a, 0x16f1: 0x000a, 0x16f2: 0x000a, 0x16f3: 0x000a, 0x16f4: 0x000a, 0x16f5: 0x000a,\n\t0x16f6: 0x000a, 0x16f7: 0x000a, 0x16f8: 0x000a, 0x16f9: 0x000a, 0x16fa: 0x000a, 0x16fb: 0x000a,\n\t0x16fc: 0x000a, 0x16fd: 0x000a, 0x16fe: 0x000a, 0x16ff: 0x000a,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a,\n\t0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a, 0x170b: 0x000a,\n\t0x170c: 0x000a, 0x170d: 0x000a, 0x170e: 0x000a, 0x170f: 0x000a, 0x1710: 0x000a, 0x1711: 0x000a,\n\t0x1712: 0x000a, 0x1713: 0x000a, 0x1714: 0x000a, 0x1715: 0x000a, 0x1716: 0x000a, 0x1717: 0x000a,\n\t0x1718: 0x000a, 0x1719: 0x000a, 0x171a: 0x000a, 0x171b: 0x000a, 0x171c: 0x000a, 0x171d: 0x000a,\n\t0x171e: 0x000a, 0x171f: 0x000a, 0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a,\n\t0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a, 0x1727: 0x000a, 0x1728: 0x000a, 0x1729: 0x000a,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a,\n\t0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x000a, 0x1749: 0x000a, 0x174a: 0x000a,\n\t0x1760: 0x000a, 0x1761: 0x000a, 0x1762: 0x000a, 0x1763: 0x000a,\n\t0x1764: 0x000a, 0x1765: 0x000a, 0x1766: 0x000a, 0x1767: 0x000a, 0x1768: 0x000a, 0x1769: 0x000a,\n\t0x176a: 0x000a, 0x176b: 0x000a, 0x176c: 0x000a, 0x176d: 0x000a, 0x176e: 0x000a, 0x176f: 0x000a,\n\t0x1770: 0x000a, 0x1771: 0x000a, 0x1772: 0x000a, 0x1773: 0x000a, 0x1774: 0x000a, 0x1775: 0x000a,\n\t0x1776: 0x000a, 0x1777: 0x000a, 0x1778: 0x000a, 0x1779: 0x000a, 0x177a: 0x000a, 0x177b: 0x000a,\n\t0x177c: 0x000a, 0x177d: 0x000a, 0x177e: 0x000a, 0x177f: 0x000a,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x000a, 0x1781: 0x000a, 0x1782: 0x000a, 0x1783: 0x000a, 0x1784: 0x000a, 0x1785: 0x000a,\n\t0x1786: 0x000a, 0x1787: 0x000a, 0x1788: 0x0002, 0x1789: 0x0002, 0x178a: 0x0002, 0x178b: 0x0002,\n\t0x178c: 0x0002, 0x178d: 0x0002, 0x178e: 0x0002, 0x178f: 0x0002, 0x1790: 0x0002, 0x1791: 0x0002,\n\t0x1792: 0x0002, 0x1793: 0x0002, 0x1794: 0x0002, 0x1795: 0x0002, 0x1796: 0x0002, 0x1797: 0x0002,\n\t0x1798: 0x0002, 0x1799: 0x0002, 0x179a: 0x0002, 0x179b: 0x0002,\n\t// Block 0x5f, offset 0x17c0\n\t0x17ea: 0x000a, 0x17eb: 0x000a, 0x17ec: 0x000a, 0x17ed: 0x000a, 0x17ee: 0x000a, 0x17ef: 0x000a,\n\t0x17f0: 0x000a, 0x17f1: 0x000a, 0x17f2: 0x000a, 0x17f3: 0x000a, 0x17f4: 0x000a, 0x17f5: 0x000a,\n\t0x17f6: 0x000a, 0x17f7: 0x000a, 0x17f8: 0x000a, 0x17f9: 0x000a, 0x17fa: 0x000a, 0x17fb: 0x000a,\n\t0x17fc: 0x000a, 0x17fd: 0x000a, 0x17fe: 0x000a, 0x17ff: 0x000a,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x000a, 0x1801: 0x000a, 0x1802: 0x000a, 0x1803: 0x000a, 0x1804: 0x000a, 0x1805: 0x000a,\n\t0x1806: 0x000a, 0x1807: 0x000a, 0x1808: 0x000a, 0x1809: 0x000a, 0x180a: 0x000a, 0x180b: 0x000a,\n\t0x180c: 0x000a, 0x180d: 0x000a, 0x180e: 0x000a, 0x180f: 0x000a, 0x1810: 0x000a, 0x1811: 0x000a,\n\t0x1812: 0x000a, 0x1813: 0x000a, 0x1814: 0x000a, 0x1815: 0x000a, 0x1816: 0x000a, 0x1817: 0x000a,\n\t0x1818: 0x000a, 0x1819: 0x000a, 0x181a: 0x000a, 0x181b: 0x000a, 0x181c: 0x000a, 0x181d: 0x000a,\n\t0x181e: 0x000a, 0x181f: 0x000a, 0x1820: 0x000a, 0x1821: 0x000a, 0x1822: 0x000a, 0x1823: 0x000a,\n\t0x1824: 0x000a, 0x1825: 0x000a, 0x1826: 0x000a, 0x1827: 0x000a, 0x1828: 0x000a, 0x1829: 0x000a,\n\t0x182a: 0x000a, 0x182b: 0x000a, 0x182d: 0x000a, 0x182e: 0x000a, 0x182f: 0x000a,\n\t0x1830: 0x000a, 0x1831: 0x000a, 0x1832: 0x000a, 0x1833: 0x000a, 0x1834: 0x000a, 0x1835: 0x000a,\n\t0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a,\n\t0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x000a,\n\t0x1846: 0x000a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a,\n\t0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a,\n\t0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a,\n\t0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a,\n\t0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a,\n\t0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x000a, 0x1867: 0x000a, 0x1868: 0x003a, 0x1869: 0x002a,\n\t0x186a: 0x003a, 0x186b: 0x002a, 0x186c: 0x003a, 0x186d: 0x002a, 0x186e: 0x003a, 0x186f: 0x002a,\n\t0x1870: 0x003a, 0x1871: 0x002a, 0x1872: 0x003a, 0x1873: 0x002a, 0x1874: 0x003a, 0x1875: 0x002a,\n\t0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a,\n\t0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x000a, 0x1884: 0x000a, 0x1885: 0x009a,\n\t0x1886: 0x008a, 0x1887: 0x000a, 0x1888: 0x000a, 0x1889: 0x000a, 0x188a: 0x000a, 0x188b: 0x000a,\n\t0x188c: 0x000a, 0x188d: 0x000a, 0x188e: 0x000a, 0x188f: 0x000a, 0x1890: 0x000a, 0x1891: 0x000a,\n\t0x1892: 0x000a, 0x1893: 0x000a, 0x1894: 0x000a, 0x1895: 0x000a, 0x1896: 0x000a, 0x1897: 0x000a,\n\t0x1898: 0x000a, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a,\n\t0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a,\n\t0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x003a, 0x18a7: 0x002a, 0x18a8: 0x003a, 0x18a9: 0x002a,\n\t0x18aa: 0x003a, 0x18ab: 0x002a, 0x18ac: 0x003a, 0x18ad: 0x002a, 0x18ae: 0x003a, 0x18af: 0x002a,\n\t0x18b0: 0x000a, 0x18b1: 0x000a, 0x18b2: 0x000a, 0x18b3: 0x000a, 0x18b4: 0x000a, 0x18b5: 0x000a,\n\t0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a,\n\t0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x007a, 0x18c4: 0x006a, 0x18c5: 0x009a,\n\t0x18c6: 0x008a, 0x18c7: 0x00ba, 0x18c8: 0x00aa, 0x18c9: 0x009a, 0x18ca: 0x008a, 0x18cb: 0x007a,\n\t0x18cc: 0x006a, 0x18cd: 0x00da, 0x18ce: 0x002a, 0x18cf: 0x003a, 0x18d0: 0x00ca, 0x18d1: 0x009a,\n\t0x18d2: 0x008a, 0x18d3: 0x007a, 0x18d4: 0x006a, 0x18d5: 0x009a, 0x18d6: 0x008a, 0x18d7: 0x00ba,\n\t0x18d8: 0x00aa, 0x18d9: 0x000a, 0x18da: 0x000a, 0x18db: 0x000a, 0x18dc: 0x000a, 0x18dd: 0x000a,\n\t0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a,\n\t0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x000a, 0x18e7: 0x000a, 0x18e8: 0x000a, 0x18e9: 0x000a,\n\t0x18ea: 0x000a, 0x18eb: 0x000a, 0x18ec: 0x000a, 0x18ed: 0x000a, 0x18ee: 0x000a, 0x18ef: 0x000a,\n\t0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a,\n\t0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a,\n\t0x18fc: 0x000a, 0x18fd: 0x000a, 0x18fe: 0x000a, 0x18ff: 0x000a,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x000a, 0x1904: 0x000a, 0x1905: 0x000a,\n\t0x1906: 0x000a, 0x1907: 0x000a, 0x1908: 0x000a, 0x1909: 0x000a, 0x190a: 0x000a, 0x190b: 0x000a,\n\t0x190c: 0x000a, 0x190d: 0x000a, 0x190e: 0x000a, 0x190f: 0x000a, 0x1910: 0x000a, 0x1911: 0x000a,\n\t0x1912: 0x000a, 0x1913: 0x000a, 0x1914: 0x000a, 0x1915: 0x000a, 0x1916: 0x000a, 0x1917: 0x000a,\n\t0x1918: 0x003a, 0x1919: 0x002a, 0x191a: 0x003a, 0x191b: 0x002a, 0x191c: 0x000a, 0x191d: 0x000a,\n\t0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a,\n\t0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a,\n\t0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a,\n\t0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a, 0x1934: 0x000a, 0x1935: 0x000a,\n\t0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a,\n\t0x193c: 0x003a, 0x193d: 0x002a, 0x193e: 0x000a, 0x193f: 0x000a,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a,\n\t0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a,\n\t0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a,\n\t0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a, 0x1956: 0x000a, 0x1957: 0x000a,\n\t0x1958: 0x000a, 0x1959: 0x000a, 0x195a: 0x000a, 0x195b: 0x000a, 0x195c: 0x000a, 0x195d: 0x000a,\n\t0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a,\n\t0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a,\n\t0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a,\n\t0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a,\n\t0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, 0x197a: 0x000a, 0x197b: 0x000a,\n\t0x197c: 0x000a, 0x197d: 0x000a, 0x197e: 0x000a, 0x197f: 0x000a,\n\t// Block 0x66, offset 0x1980\n\t0x19a5: 0x000a, 0x19a6: 0x000a, 0x19a7: 0x000a, 0x19a8: 0x000a, 0x19a9: 0x000a,\n\t0x19aa: 0x000a, 0x19af: 0x000c,\n\t0x19b0: 0x000c, 0x19b1: 0x000c,\n\t0x19b9: 0x000a, 0x19ba: 0x000a, 0x19bb: 0x000a,\n\t0x19bc: 0x000a, 0x19bd: 0x000a, 0x19be: 0x000a, 0x19bf: 0x000a,\n\t// Block 0x67, offset 0x19c0\n\t0x19ff: 0x000c,\n\t// Block 0x68, offset 0x1a00\n\t0x1a20: 0x000c, 0x1a21: 0x000c, 0x1a22: 0x000c, 0x1a23: 0x000c,\n\t0x1a24: 0x000c, 0x1a25: 0x000c, 0x1a26: 0x000c, 0x1a27: 0x000c, 0x1a28: 0x000c, 0x1a29: 0x000c,\n\t0x1a2a: 0x000c, 0x1a2b: 0x000c, 0x1a2c: 0x000c, 0x1a2d: 0x000c, 0x1a2e: 0x000c, 0x1a2f: 0x000c,\n\t0x1a30: 0x000c, 0x1a31: 0x000c, 0x1a32: 0x000c, 0x1a33: 0x000c, 0x1a34: 0x000c, 0x1a35: 0x000c,\n\t0x1a36: 0x000c, 0x1a37: 0x000c, 0x1a38: 0x000c, 0x1a39: 0x000c, 0x1a3a: 0x000c, 0x1a3b: 0x000c,\n\t0x1a3c: 0x000c, 0x1a3d: 0x000c, 0x1a3e: 0x000c, 0x1a3f: 0x000c,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x000a, 0x1a41: 0x000a, 0x1a42: 0x000a, 0x1a43: 0x000a, 0x1a44: 0x000a, 0x1a45: 0x000a,\n\t0x1a46: 0x000a, 0x1a47: 0x000a, 0x1a48: 0x000a, 0x1a49: 0x000a, 0x1a4a: 0x000a, 0x1a4b: 0x000a,\n\t0x1a4c: 0x000a, 0x1a4d: 0x000a, 0x1a4e: 0x000a, 0x1a4f: 0x000a, 0x1a50: 0x000a, 0x1a51: 0x000a,\n\t0x1a52: 0x000a, 0x1a53: 0x000a, 0x1a54: 0x000a, 0x1a55: 0x000a, 0x1a56: 0x000a, 0x1a57: 0x000a,\n\t0x1a58: 0x000a, 0x1a59: 0x000a, 0x1a5a: 0x000a, 0x1a5b: 0x000a, 0x1a5c: 0x000a, 0x1a5d: 0x000a,\n\t0x1a5e: 0x000a, 0x1a5f: 0x000a, 0x1a60: 0x000a, 0x1a61: 0x000a, 0x1a62: 0x003a, 0x1a63: 0x002a,\n\t0x1a64: 0x003a, 0x1a65: 0x002a, 0x1a66: 0x003a, 0x1a67: 0x002a, 0x1a68: 0x003a, 0x1a69: 0x002a,\n\t0x1a6a: 0x000a, 0x1a6b: 0x000a, 0x1a6c: 0x000a, 0x1a6d: 0x000a, 0x1a6e: 0x000a, 0x1a6f: 0x000a,\n\t0x1a70: 0x000a, 0x1a71: 0x000a, 0x1a72: 0x000a, 0x1a73: 0x000a, 0x1a74: 0x000a, 0x1a75: 0x000a,\n\t0x1a76: 0x000a, 0x1a77: 0x000a, 0x1a78: 0x000a, 0x1a79: 0x000a, 0x1a7a: 0x000a, 0x1a7b: 0x000a,\n\t0x1a7c: 0x000a, 0x1a7d: 0x000a, 0x1a7e: 0x000a, 0x1a7f: 0x000a,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x000a, 0x1a81: 0x000a, 0x1a82: 0x000a, 0x1a83: 0x000a, 0x1a84: 0x000a, 0x1a85: 0x000a,\n\t0x1a86: 0x000a, 0x1a87: 0x000a, 0x1a88: 0x000a, 0x1a89: 0x000a, 0x1a8a: 0x000a, 0x1a8b: 0x000a,\n\t0x1a8c: 0x000a, 0x1a8d: 0x000a, 0x1a8e: 0x000a, 0x1a8f: 0x000a, 0x1a90: 0x000a, 0x1a91: 0x000a,\n\t0x1a92: 0x000a, 0x1a93: 0x000a, 0x1a94: 0x000a, 0x1a95: 0x009a, 0x1a96: 0x008a, 0x1a97: 0x00ba,\n\t0x1a98: 0x00aa, 0x1a99: 0x009a, 0x1a9a: 0x008a, 0x1a9b: 0x007a, 0x1a9c: 0x006a, 0x1a9d: 0x000a,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a,\n\t0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, 0x1aca: 0x000a, 0x1acb: 0x000a,\n\t0x1acc: 0x000a, 0x1acd: 0x000a, 0x1ace: 0x000a, 0x1acf: 0x000a, 0x1ad0: 0x000a, 0x1ad1: 0x000a,\n\t0x1ad2: 0x000a, 0x1ad3: 0x000a, 0x1ad4: 0x000a, 0x1ad5: 0x000a, 0x1ad6: 0x000a, 0x1ad7: 0x000a,\n\t0x1ad8: 0x000a, 0x1ad9: 0x000a, 0x1adb: 0x000a, 0x1adc: 0x000a, 0x1add: 0x000a,\n\t0x1ade: 0x000a, 0x1adf: 0x000a, 0x1ae0: 0x000a, 0x1ae1: 0x000a, 0x1ae2: 0x000a, 0x1ae3: 0x000a,\n\t0x1ae4: 0x000a, 0x1ae5: 0x000a, 0x1ae6: 0x000a, 0x1ae7: 0x000a, 0x1ae8: 0x000a, 0x1ae9: 0x000a,\n\t0x1aea: 0x000a, 0x1aeb: 0x000a, 0x1aec: 0x000a, 0x1aed: 0x000a, 0x1aee: 0x000a, 0x1aef: 0x000a,\n\t0x1af0: 0x000a, 0x1af1: 0x000a, 0x1af2: 0x000a, 0x1af3: 0x000a, 0x1af4: 0x000a, 0x1af5: 0x000a,\n\t0x1af6: 0x000a, 0x1af7: 0x000a, 0x1af8: 0x000a, 0x1af9: 0x000a, 0x1afa: 0x000a, 0x1afb: 0x000a,\n\t0x1afc: 0x000a, 0x1afd: 0x000a, 0x1afe: 0x000a, 0x1aff: 0x000a,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, 0x1b05: 0x000a,\n\t0x1b06: 0x000a, 0x1b07: 0x000a, 0x1b08: 0x000a, 0x1b09: 0x000a, 0x1b0a: 0x000a, 0x1b0b: 0x000a,\n\t0x1b0c: 0x000a, 0x1b0d: 0x000a, 0x1b0e: 0x000a, 0x1b0f: 0x000a, 0x1b10: 0x000a, 0x1b11: 0x000a,\n\t0x1b12: 0x000a, 0x1b13: 0x000a, 0x1b14: 0x000a, 0x1b15: 0x000a, 0x1b16: 0x000a, 0x1b17: 0x000a,\n\t0x1b18: 0x000a, 0x1b19: 0x000a, 0x1b1a: 0x000a, 0x1b1b: 0x000a, 0x1b1c: 0x000a, 0x1b1d: 0x000a,\n\t0x1b1e: 0x000a, 0x1b1f: 0x000a, 0x1b20: 0x000a, 0x1b21: 0x000a, 0x1b22: 0x000a, 0x1b23: 0x000a,\n\t0x1b24: 0x000a, 0x1b25: 0x000a, 0x1b26: 0x000a, 0x1b27: 0x000a, 0x1b28: 0x000a, 0x1b29: 0x000a,\n\t0x1b2a: 0x000a, 0x1b2b: 0x000a, 0x1b2c: 0x000a, 0x1b2d: 0x000a, 0x1b2e: 0x000a, 0x1b2f: 0x000a,\n\t0x1b30: 0x000a, 0x1b31: 0x000a, 0x1b32: 0x000a, 0x1b33: 0x000a,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a,\n\t0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a,\n\t0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a,\n\t0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a,\n\t0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a, 0x1b74: 0x000a, 0x1b75: 0x000a,\n\t0x1b76: 0x000a, 0x1b77: 0x000a, 0x1b78: 0x000a, 0x1b79: 0x000a, 0x1b7a: 0x000a, 0x1b7b: 0x000a,\n\t0x1b7c: 0x000a, 0x1b7d: 0x000a, 0x1b7e: 0x000a, 0x1b7f: 0x000a,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x0009, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a,\n\t0x1b88: 0x003a, 0x1b89: 0x002a, 0x1b8a: 0x003a, 0x1b8b: 0x002a,\n\t0x1b8c: 0x003a, 0x1b8d: 0x002a, 0x1b8e: 0x003a, 0x1b8f: 0x002a, 0x1b90: 0x003a, 0x1b91: 0x002a,\n\t0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x003a, 0x1b95: 0x002a, 0x1b96: 0x003a, 0x1b97: 0x002a,\n\t0x1b98: 0x003a, 0x1b99: 0x002a, 0x1b9a: 0x003a, 0x1b9b: 0x002a, 0x1b9c: 0x000a, 0x1b9d: 0x000a,\n\t0x1b9e: 0x000a, 0x1b9f: 0x000a, 0x1ba0: 0x000a,\n\t0x1baa: 0x000c, 0x1bab: 0x000c, 0x1bac: 0x000c, 0x1bad: 0x000c,\n\t0x1bb0: 0x000a,\n\t0x1bb6: 0x000a, 0x1bb7: 0x000a,\n\t0x1bbd: 0x000a, 0x1bbe: 0x000a, 0x1bbf: 0x000a,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bd9: 0x000c, 0x1bda: 0x000c, 0x1bdb: 0x000a, 0x1bdc: 0x000a,\n\t0x1be0: 0x000a,\n\t// Block 0x70, offset 0x1c00\n\t0x1c3b: 0x000a,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0x000a, 0x1c41: 0x000a, 0x1c42: 0x000a, 0x1c43: 0x000a, 0x1c44: 0x000a, 0x1c45: 0x000a,\n\t0x1c46: 0x000a, 0x1c47: 0x000a, 0x1c48: 0x000a, 0x1c49: 0x000a, 0x1c4a: 0x000a, 0x1c4b: 0x000a,\n\t0x1c4c: 0x000a, 0x1c4d: 0x000a, 0x1c4e: 0x000a, 0x1c4f: 0x000a, 0x1c50: 0x000a, 0x1c51: 0x000a,\n\t0x1c52: 0x000a, 0x1c53: 0x000a, 0x1c54: 0x000a, 0x1c55: 0x000a, 0x1c56: 0x000a, 0x1c57: 0x000a,\n\t0x1c58: 0x000a, 0x1c59: 0x000a, 0x1c5a: 0x000a, 0x1c5b: 0x000a, 0x1c5c: 0x000a, 0x1c5d: 0x000a,\n\t0x1c5e: 0x000a, 0x1c5f: 0x000a, 0x1c60: 0x000a, 0x1c61: 0x000a, 0x1c62: 0x000a, 0x1c63: 0x000a,\n\t0x1c64: 0x000a, 0x1c65: 0x000a,\n\t0x1c6f: 0x000a,\n\t// Block 0x72, offset 0x1c80\n\t0x1c9d: 0x000a,\n\t0x1c9e: 0x000a,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cd0: 0x000a, 0x1cd1: 0x000a,\n\t0x1cd2: 0x000a, 0x1cd3: 0x000a, 0x1cd4: 0x000a, 0x1cd5: 0x000a, 0x1cd6: 0x000a, 0x1cd7: 0x000a,\n\t0x1cd8: 0x000a, 0x1cd9: 0x000a, 0x1cda: 0x000a, 0x1cdb: 0x000a, 0x1cdc: 0x000a, 0x1cdd: 0x000a,\n\t0x1cde: 0x000a, 0x1cdf: 0x000a,\n\t0x1cfc: 0x000a, 0x1cfd: 0x000a, 0x1cfe: 0x000a,\n\t// Block 0x74, offset 0x1d00\n\t0x1d31: 0x000a, 0x1d32: 0x000a, 0x1d33: 0x000a, 0x1d34: 0x000a, 0x1d35: 0x000a,\n\t0x1d36: 0x000a, 0x1d37: 0x000a, 0x1d38: 0x000a, 0x1d39: 0x000a, 0x1d3a: 0x000a, 0x1d3b: 0x000a,\n\t0x1d3c: 0x000a, 0x1d3d: 0x000a, 0x1d3e: 0x000a, 0x1d3f: 0x000a,\n\t// Block 0x75, offset 0x1d40\n\t0x1d4c: 0x000a, 0x1d4d: 0x000a, 0x1d4e: 0x000a, 0x1d4f: 0x000a,\n\t// Block 0x76, offset 0x1d80\n\t0x1db7: 0x000a, 0x1db8: 0x000a, 0x1db9: 0x000a, 0x1dba: 0x000a,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dde: 0x000a, 0x1ddf: 0x000a,\n\t0x1dff: 0x000a,\n\t// Block 0x78, offset 0x1e00\n\t0x1e10: 0x000a, 0x1e11: 0x000a,\n\t0x1e12: 0x000a, 0x1e13: 0x000a, 0x1e14: 0x000a, 0x1e15: 0x000a, 0x1e16: 0x000a, 0x1e17: 0x000a,\n\t0x1e18: 0x000a, 0x1e19: 0x000a, 0x1e1a: 0x000a, 0x1e1b: 0x000a, 0x1e1c: 0x000a, 0x1e1d: 0x000a,\n\t0x1e1e: 0x000a, 0x1e1f: 0x000a, 0x1e20: 0x000a, 0x1e21: 0x000a, 0x1e22: 0x000a, 0x1e23: 0x000a,\n\t0x1e24: 0x000a, 0x1e25: 0x000a, 0x1e26: 0x000a, 0x1e27: 0x000a, 0x1e28: 0x000a, 0x1e29: 0x000a,\n\t0x1e2a: 0x000a, 0x1e2b: 0x000a, 0x1e2c: 0x000a, 0x1e2d: 0x000a, 0x1e2e: 0x000a, 0x1e2f: 0x000a,\n\t0x1e30: 0x000a, 0x1e31: 0x000a, 0x1e32: 0x000a, 0x1e33: 0x000a, 0x1e34: 0x000a, 0x1e35: 0x000a,\n\t0x1e36: 0x000a, 0x1e37: 0x000a, 0x1e38: 0x000a, 0x1e39: 0x000a, 0x1e3a: 0x000a, 0x1e3b: 0x000a,\n\t0x1e3c: 0x000a, 0x1e3d: 0x000a, 0x1e3e: 0x000a, 0x1e3f: 0x000a,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0x000a, 0x1e41: 0x000a, 0x1e42: 0x000a, 0x1e43: 0x000a, 0x1e44: 0x000a, 0x1e45: 0x000a,\n\t0x1e46: 0x000a,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e8d: 0x000a, 0x1e8e: 0x000a, 0x1e8f: 0x000a,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1eef: 0x000c,\n\t0x1ef0: 0x000c, 0x1ef1: 0x000c, 0x1ef2: 0x000c, 0x1ef3: 0x000a, 0x1ef4: 0x000c, 0x1ef5: 0x000c,\n\t0x1ef6: 0x000c, 0x1ef7: 0x000c, 0x1ef8: 0x000c, 0x1ef9: 0x000c, 0x1efa: 0x000c, 0x1efb: 0x000c,\n\t0x1efc: 0x000c, 0x1efd: 0x000c, 0x1efe: 0x000a, 0x1eff: 0x000a,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f1e: 0x000c, 0x1f1f: 0x000c,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f70: 0x000c, 0x1f71: 0x000c,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f80: 0x000a, 0x1f81: 0x000a, 0x1f82: 0x000a, 0x1f83: 0x000a, 0x1f84: 0x000a, 0x1f85: 0x000a,\n\t0x1f86: 0x000a, 0x1f87: 0x000a, 0x1f88: 0x000a, 0x1f89: 0x000a, 0x1f8a: 0x000a, 0x1f8b: 0x000a,\n\t0x1f8c: 0x000a, 0x1f8d: 0x000a, 0x1f8e: 0x000a, 0x1f8f: 0x000a, 0x1f90: 0x000a, 0x1f91: 0x000a,\n\t0x1f92: 0x000a, 0x1f93: 0x000a, 0x1f94: 0x000a, 0x1f95: 0x000a, 0x1f96: 0x000a, 0x1f97: 0x000a,\n\t0x1f98: 0x000a, 0x1f99: 0x000a, 0x1f9a: 0x000a, 0x1f9b: 0x000a, 0x1f9c: 0x000a, 0x1f9d: 0x000a,\n\t0x1f9e: 0x000a, 0x1f9f: 0x000a, 0x1fa0: 0x000a, 0x1fa1: 0x000a,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1fc8: 0x000a,\n\t// Block 0x80, offset 0x2000\n\t0x2002: 0x000c,\n\t0x2006: 0x000c, 0x200b: 0x000c,\n\t0x2025: 0x000c, 0x2026: 0x000c, 0x2028: 0x000a, 0x2029: 0x000a,\n\t0x202a: 0x000a, 0x202b: 0x000a, 0x202c: 0x000c,\n\t0x2038: 0x0004, 0x2039: 0x0004,\n\t// Block 0x81, offset 0x2040\n\t0x2074: 0x000a, 0x2075: 0x000a,\n\t0x2076: 0x000a, 0x2077: 0x000a,\n\t// Block 0x82, offset 0x2080\n\t0x2084: 0x000c, 0x2085: 0x000c,\n\t0x20a0: 0x000c, 0x20a1: 0x000c, 0x20a2: 0x000c, 0x20a3: 0x000c,\n\t0x20a4: 0x000c, 0x20a5: 0x000c, 0x20a6: 0x000c, 0x20a7: 0x000c, 0x20a8: 0x000c, 0x20a9: 0x000c,\n\t0x20aa: 0x000c, 0x20ab: 0x000c, 0x20ac: 0x000c, 0x20ad: 0x000c, 0x20ae: 0x000c, 0x20af: 0x000c,\n\t0x20b0: 0x000c, 0x20b1: 0x000c,\n\t0x20bf: 0x000c,\n\t// Block 0x83, offset 0x20c0\n\t0x20e6: 0x000c, 0x20e7: 0x000c, 0x20e8: 0x000c, 0x20e9: 0x000c,\n\t0x20ea: 0x000c, 0x20eb: 0x000c, 0x20ec: 0x000c, 0x20ed: 0x000c,\n\t// Block 0x84, offset 0x2100\n\t0x2107: 0x000c, 0x2108: 0x000c, 0x2109: 0x000c, 0x210a: 0x000c, 0x210b: 0x000c,\n\t0x210c: 0x000c, 0x210d: 0x000c, 0x210e: 0x000c, 0x210f: 0x000c, 0x2110: 0x000c, 0x2111: 0x000c,\n\t// Block 0x85, offset 0x2140\n\t0x2140: 0x000c, 0x2141: 0x000c, 0x2142: 0x000c,\n\t0x2173: 0x000c,\n\t0x2176: 0x000c, 0x2177: 0x000c, 0x2178: 0x000c, 0x2179: 0x000c,\n\t0x217c: 0x000c, 0x217d: 0x000c,\n\t// Block 0x86, offset 0x2180\n\t0x21a5: 0x000c,\n\t// Block 0x87, offset 0x21c0\n\t0x21e9: 0x000c,\n\t0x21ea: 0x000c, 0x21eb: 0x000c, 0x21ec: 0x000c, 0x21ed: 0x000c, 0x21ee: 0x000c,\n\t0x21f1: 0x000c, 0x21f2: 0x000c, 0x21f5: 0x000c,\n\t0x21f6: 0x000c,\n\t// Block 0x88, offset 0x2200\n\t0x2203: 0x000c,\n\t0x220c: 0x000c,\n\t0x223c: 0x000c,\n\t// Block 0x89, offset 0x2240\n\t0x2270: 0x000c, 0x2272: 0x000c, 0x2273: 0x000c, 0x2274: 0x000c,\n\t0x2277: 0x000c, 0x2278: 0x000c,\n\t0x227e: 0x000c, 0x227f: 0x000c,\n\t// Block 0x8a, offset 0x2280\n\t0x2281: 0x000c,\n\t0x22ac: 0x000c, 0x22ad: 0x000c,\n\t0x22b6: 0x000c,\n\t// Block 0x8b, offset 0x22c0\n\t0x22ea: 0x000a, 0x22eb: 0x000a,\n\t// Block 0x8c, offset 0x2300\n\t0x2325: 0x000c, 0x2328: 0x000c,\n\t0x232d: 0x000c,\n\t// Block 0x8d, offset 0x2340\n\t0x235d: 0x0001,\n\t0x235e: 0x000c, 0x235f: 0x0001, 0x2360: 0x0001, 0x2361: 0x0001, 0x2362: 0x0001, 0x2363: 0x0001,\n\t0x2364: 0x0001, 0x2365: 0x0001, 0x2366: 0x0001, 0x2367: 0x0001, 0x2368: 0x0001, 0x2369: 0x0003,\n\t0x236a: 0x0001, 0x236b: 0x0001, 0x236c: 0x0001, 0x236d: 0x0001, 0x236e: 0x0001, 0x236f: 0x0001,\n\t0x2370: 0x0001, 0x2371: 0x0001, 0x2372: 0x0001, 0x2373: 0x0001, 0x2374: 0x0001, 0x2375: 0x0001,\n\t0x2376: 0x0001, 0x2377: 0x0001, 0x2378: 0x0001, 0x2379: 0x0001, 0x237a: 0x0001, 0x237b: 0x0001,\n\t0x237c: 0x0001, 0x237d: 0x0001, 0x237e: 0x0001, 0x237f: 0x0001,\n\t// Block 0x8e, offset 0x2380\n\t0x2380: 0x0001, 0x2381: 0x0001, 0x2382: 0x0001, 0x2383: 0x0001, 0x2384: 0x0001, 0x2385: 0x0001,\n\t0x2386: 0x0001, 0x2387: 0x0001, 0x2388: 0x0001, 0x2389: 0x0001, 0x238a: 0x0001, 0x238b: 0x0001,\n\t0x238c: 0x0001, 0x238d: 0x0001, 0x238e: 0x0001, 0x238f: 0x0001, 0x2390: 0x000d, 0x2391: 0x000d,\n\t0x2392: 0x000d, 0x2393: 0x000d, 0x2394: 0x000d, 0x2395: 0x000d, 0x2396: 0x000d, 0x2397: 0x000d,\n\t0x2398: 0x000d, 0x2399: 0x000d, 0x239a: 0x000d, 0x239b: 0x000d, 0x239c: 0x000d, 0x239d: 0x000d,\n\t0x239e: 0x000d, 0x239f: 0x000d, 0x23a0: 0x000d, 0x23a1: 0x000d, 0x23a2: 0x000d, 0x23a3: 0x000d,\n\t0x23a4: 0x000d, 0x23a5: 0x000d, 0x23a6: 0x000d, 0x23a7: 0x000d, 0x23a8: 0x000d, 0x23a9: 0x000d,\n\t0x23aa: 0x000d, 0x23ab: 0x000d, 0x23ac: 0x000d, 0x23ad: 0x000d, 0x23ae: 0x000d, 0x23af: 0x000d,\n\t0x23b0: 0x000d, 0x23b1: 0x000d, 0x23b2: 0x000d, 0x23b3: 0x000d, 0x23b4: 0x000d, 0x23b5: 0x000d,\n\t0x23b6: 0x000d, 0x23b7: 0x000d, 0x23b8: 0x000d, 0x23b9: 0x000d, 0x23ba: 0x000d, 0x23bb: 0x000d,\n\t0x23bc: 0x000d, 0x23bd: 0x000d, 0x23be: 0x000d, 0x23bf: 0x000d,\n\t// Block 0x8f, offset 0x23c0\n\t0x23c0: 0x000d, 0x23c1: 0x000d, 0x23c2: 0x000d, 0x23c3: 0x000a, 0x23c4: 0x000a, 0x23c5: 0x000a,\n\t0x23c6: 0x000a, 0x23c7: 0x000a, 0x23c8: 0x000a, 0x23c9: 0x000a, 0x23ca: 0x000a, 0x23cb: 0x000a,\n\t0x23cc: 0x000a, 0x23cd: 0x000a, 0x23ce: 0x000a, 0x23cf: 0x000a, 0x23d0: 0x000a, 0x23d1: 0x000a,\n\t0x23d2: 0x000a, 0x23d3: 0x000d, 0x23d4: 0x000d, 0x23d5: 0x000d, 0x23d6: 0x000d, 0x23d7: 0x000d,\n\t0x23d8: 0x000d, 0x23d9: 0x000d, 0x23da: 0x000d, 0x23db: 0x000d, 0x23dc: 0x000d, 0x23dd: 0x000d,\n\t0x23de: 0x000d, 0x23df: 0x000d, 0x23e0: 0x000d, 0x23e1: 0x000d, 0x23e2: 0x000d, 0x23e3: 0x000d,\n\t0x23e4: 0x000d, 0x23e5: 0x000d, 0x23e6: 0x000d, 0x23e7: 0x000d, 0x23e8: 0x000d, 0x23e9: 0x000d,\n\t0x23ea: 0x000d, 0x23eb: 0x000d, 0x23ec: 0x000d, 0x23ed: 0x000d, 0x23ee: 0x000d, 0x23ef: 0x000d,\n\t0x23f0: 0x000d, 0x23f1: 0x000d, 0x23f2: 0x000d, 0x23f3: 0x000d, 0x23f4: 0x000d, 0x23f5: 0x000d,\n\t0x23f6: 0x000d, 0x23f7: 0x000d, 0x23f8: 0x000d, 0x23f9: 0x000d, 0x23fa: 0x000d, 0x23fb: 0x000d,\n\t0x23fc: 0x000d, 0x23fd: 0x000d, 0x23fe: 0x000d, 0x23ff: 0x000d,\n\t// Block 0x90, offset 0x2400\n\t0x2400: 0x000d, 0x2401: 0x000d, 0x2402: 0x000d, 0x2403: 0x000d, 0x2404: 0x000d, 0x2405: 0x000d,\n\t0x2406: 0x000d, 0x2407: 0x000d, 0x2408: 0x000d, 0x2409: 0x000d, 0x240a: 0x000d, 0x240b: 0x000d,\n\t0x240c: 0x000d, 0x240d: 0x000d, 0x240e: 0x000d, 0x240f: 0x000d, 0x2410: 0x000d, 0x2411: 0x000d,\n\t0x2412: 0x000d, 0x2413: 0x000d, 0x2414: 0x000d, 0x2415: 0x000d, 0x2416: 0x000d, 0x2417: 0x000d,\n\t0x2418: 0x000d, 0x2419: 0x000d, 0x241a: 0x000d, 0x241b: 0x000d, 0x241c: 0x000d, 0x241d: 0x000d,\n\t0x241e: 0x000d, 0x241f: 0x000d, 0x2420: 0x000d, 0x2421: 0x000d, 0x2422: 0x000d, 0x2423: 0x000d,\n\t0x2424: 0x000d, 0x2425: 0x000d, 0x2426: 0x000d, 0x2427: 0x000d, 0x2428: 0x000d, 0x2429: 0x000d,\n\t0x242a: 0x000d, 0x242b: 0x000d, 0x242c: 0x000d, 0x242d: 0x000d, 0x242e: 0x000d, 0x242f: 0x000d,\n\t0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d,\n\t0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d,\n\t0x243c: 0x000d, 0x243d: 0x000d, 0x243e: 0x000a, 0x243f: 0x000a,\n\t// Block 0x91, offset 0x2440\n\t0x2440: 0x000a, 0x2441: 0x000a, 0x2442: 0x000a, 0x2443: 0x000a, 0x2444: 0x000a, 0x2445: 0x000a,\n\t0x2446: 0x000a, 0x2447: 0x000a, 0x2448: 0x000a, 0x2449: 0x000a, 0x244a: 0x000a, 0x244b: 0x000a,\n\t0x244c: 0x000a, 0x244d: 0x000a, 0x244e: 0x000a, 0x244f: 0x000a, 0x2450: 0x000d, 0x2451: 0x000d,\n\t0x2452: 0x000d, 0x2453: 0x000d, 0x2454: 0x000d, 0x2455: 0x000d, 0x2456: 0x000d, 0x2457: 0x000d,\n\t0x2458: 0x000d, 0x2459: 0x000d, 0x245a: 0x000d, 0x245b: 0x000d, 0x245c: 0x000d, 0x245d: 0x000d,\n\t0x245e: 0x000d, 0x245f: 0x000d, 0x2460: 0x000d, 0x2461: 0x000d, 0x2462: 0x000d, 0x2463: 0x000d,\n\t0x2464: 0x000d, 0x2465: 0x000d, 0x2466: 0x000d, 0x2467: 0x000d, 0x2468: 0x000d, 0x2469: 0x000d,\n\t0x246a: 0x000d, 0x246b: 0x000d, 0x246c: 0x000d, 0x246d: 0x000d, 0x246e: 0x000d, 0x246f: 0x000d,\n\t0x2470: 0x000d, 0x2471: 0x000d, 0x2472: 0x000d, 0x2473: 0x000d, 0x2474: 0x000d, 0x2475: 0x000d,\n\t0x2476: 0x000d, 0x2477: 0x000d, 0x2478: 0x000d, 0x2479: 0x000d, 0x247a: 0x000d, 0x247b: 0x000d,\n\t0x247c: 0x000d, 0x247d: 0x000d, 0x247e: 0x000d, 0x247f: 0x000d,\n\t// Block 0x92, offset 0x2480\n\t0x2480: 0x000d, 0x2481: 0x000d, 0x2482: 0x000d, 0x2483: 0x000d, 0x2484: 0x000d, 0x2485: 0x000d,\n\t0x2486: 0x000d, 0x2487: 0x000d, 0x2488: 0x000d, 0x2489: 0x000d, 0x248a: 0x000d, 0x248b: 0x000d,\n\t0x248c: 0x000d, 0x248d: 0x000d, 0x248e: 0x000d, 0x248f: 0x000d, 0x2490: 0x000a, 0x2491: 0x000a,\n\t0x2492: 0x000d, 0x2493: 0x000d, 0x2494: 0x000d, 0x2495: 0x000d, 0x2496: 0x000d, 0x2497: 0x000d,\n\t0x2498: 0x000d, 0x2499: 0x000d, 0x249a: 0x000d, 0x249b: 0x000d, 0x249c: 0x000d, 0x249d: 0x000d,\n\t0x249e: 0x000d, 0x249f: 0x000d, 0x24a0: 0x000d, 0x24a1: 0x000d, 0x24a2: 0x000d, 0x24a3: 0x000d,\n\t0x24a4: 0x000d, 0x24a5: 0x000d, 0x24a6: 0x000d, 0x24a7: 0x000d, 0x24a8: 0x000d, 0x24a9: 0x000d,\n\t0x24aa: 0x000d, 0x24ab: 0x000d, 0x24ac: 0x000d, 0x24ad: 0x000d, 0x24ae: 0x000d, 0x24af: 0x000d,\n\t0x24b0: 0x000d, 0x24b1: 0x000d, 0x24b2: 0x000d, 0x24b3: 0x000d, 0x24b4: 0x000d, 0x24b5: 0x000d,\n\t0x24b6: 0x000d, 0x24b7: 0x000d, 0x24b8: 0x000d, 0x24b9: 0x000d, 0x24ba: 0x000d, 0x24bb: 0x000d,\n\t0x24bc: 0x000d, 0x24bd: 0x000d, 0x24be: 0x000d, 0x24bf: 0x000d,\n\t// Block 0x93, offset 0x24c0\n\t0x24c0: 0x000d, 0x24c1: 0x000d, 0x24c2: 0x000d, 0x24c3: 0x000d, 0x24c4: 0x000d, 0x24c5: 0x000d,\n\t0x24c6: 0x000d, 0x24c7: 0x000d, 0x24c8: 0x000a, 0x24c9: 0x000a, 0x24ca: 0x000a, 0x24cb: 0x000a,\n\t0x24cc: 0x000a, 0x24cd: 0x000a, 0x24ce: 0x000a, 0x24cf: 0x000a, 0x24d0: 0x000b, 0x24d1: 0x000b,\n\t0x24d2: 0x000b, 0x24d3: 0x000b, 0x24d4: 0x000b, 0x24d5: 0x000b, 0x24d6: 0x000b, 0x24d7: 0x000b,\n\t0x24d8: 0x000b, 0x24d9: 0x000b, 0x24da: 0x000b, 0x24db: 0x000b, 0x24dc: 0x000b, 0x24dd: 0x000b,\n\t0x24de: 0x000b, 0x24df: 0x000b, 0x24e0: 0x000b, 0x24e1: 0x000b, 0x24e2: 0x000b, 0x24e3: 0x000b,\n\t0x24e4: 0x000b, 0x24e5: 0x000b, 0x24e6: 0x000b, 0x24e7: 0x000b, 0x24e8: 0x000b, 0x24e9: 0x000b,\n\t0x24ea: 0x000b, 0x24eb: 0x000b, 0x24ec: 0x000b, 0x24ed: 0x000b, 0x24ee: 0x000b, 0x24ef: 0x000b,\n\t0x24f0: 0x000d, 0x24f1: 0x000d, 0x24f2: 0x000d, 0x24f3: 0x000d, 0x24f4: 0x000d, 0x24f5: 0x000d,\n\t0x24f6: 0x000d, 0x24f7: 0x000d, 0x24f8: 0x000d, 0x24f9: 0x000d, 0x24fa: 0x000d, 0x24fb: 0x000d,\n\t0x24fc: 0x000d, 0x24fd: 0x000a, 0x24fe: 0x000a, 0x24ff: 0x000a,\n\t// Block 0x94, offset 0x2500\n\t0x2500: 0x000c, 0x2501: 0x000c, 0x2502: 0x000c, 0x2503: 0x000c, 0x2504: 0x000c, 0x2505: 0x000c,\n\t0x2506: 0x000c, 0x2507: 0x000c, 0x2508: 0x000c, 0x2509: 0x000c, 0x250a: 0x000c, 0x250b: 0x000c,\n\t0x250c: 0x000c, 0x250d: 0x000c, 0x250e: 0x000c, 0x250f: 0x000c, 0x2510: 0x000a, 0x2511: 0x000a,\n\t0x2512: 0x000a, 0x2513: 0x000a, 0x2514: 0x000a, 0x2515: 0x000a, 0x2516: 0x000a, 0x2517: 0x000a,\n\t0x2518: 0x000a, 0x2519: 0x000a,\n\t0x2520: 0x000c, 0x2521: 0x000c, 0x2522: 0x000c, 0x2523: 0x000c,\n\t0x2524: 0x000c, 0x2525: 0x000c, 0x2526: 0x000c, 0x2527: 0x000c, 0x2528: 0x000c, 0x2529: 0x000c,\n\t0x252a: 0x000c, 0x252b: 0x000c, 0x252c: 0x000c, 0x252d: 0x000c, 0x252e: 0x000c, 0x252f: 0x000c,\n\t0x2530: 0x000a, 0x2531: 0x000a, 0x2532: 0x000a, 0x2533: 0x000a, 0x2534: 0x000a, 0x2535: 0x000a,\n\t0x2536: 0x000a, 0x2537: 0x000a, 0x2538: 0x000a, 0x2539: 0x000a, 0x253a: 0x000a, 0x253b: 0x000a,\n\t0x253c: 0x000a, 0x253d: 0x000a, 0x253e: 0x000a, 0x253f: 0x000a,\n\t// Block 0x95, offset 0x2540\n\t0x2540: 0x000a, 0x2541: 0x000a, 0x2542: 0x000a, 0x2543: 0x000a, 0x2544: 0x000a, 0x2545: 0x000a,\n\t0x2546: 0x000a, 0x2547: 0x000a, 0x2548: 0x000a, 0x2549: 0x000a, 0x254a: 0x000a, 0x254b: 0x000a,\n\t0x254c: 0x000a, 0x254d: 0x000a, 0x254e: 0x000a, 0x254f: 0x000a, 0x2550: 0x0006, 0x2551: 0x000a,\n\t0x2552: 0x0006, 0x2554: 0x000a, 0x2555: 0x0006, 0x2556: 0x000a, 0x2557: 0x000a,\n\t0x2558: 0x000a, 0x2559: 0x009a, 0x255a: 0x008a, 0x255b: 0x007a, 0x255c: 0x006a, 0x255d: 0x009a,\n\t0x255e: 0x008a, 0x255f: 0x0004, 0x2560: 0x000a, 0x2561: 0x000a, 0x2562: 0x0003, 0x2563: 0x0003,\n\t0x2564: 0x000a, 0x2565: 0x000a, 0x2566: 0x000a, 0x2568: 0x000a, 0x2569: 0x0004,\n\t0x256a: 0x0004, 0x256b: 0x000a,\n\t0x2570: 0x000d, 0x2571: 0x000d, 0x2572: 0x000d, 0x2573: 0x000d, 0x2574: 0x000d, 0x2575: 0x000d,\n\t0x2576: 0x000d, 0x2577: 0x000d, 0x2578: 0x000d, 0x2579: 0x000d, 0x257a: 0x000d, 0x257b: 0x000d,\n\t0x257c: 0x000d, 0x257d: 0x000d, 0x257e: 0x000d, 0x257f: 0x000d,\n\t// Block 0x96, offset 0x2580\n\t0x2580: 0x000d, 0x2581: 0x000d, 0x2582: 0x000d, 0x2583: 0x000d, 0x2584: 0x000d, 0x2585: 0x000d,\n\t0x2586: 0x000d, 0x2587: 0x000d, 0x2588: 0x000d, 0x2589: 0x000d, 0x258a: 0x000d, 0x258b: 0x000d,\n\t0x258c: 0x000d, 0x258d: 0x000d, 0x258e: 0x000d, 0x258f: 0x000d, 0x2590: 0x000d, 0x2591: 0x000d,\n\t0x2592: 0x000d, 0x2593: 0x000d, 0x2594: 0x000d, 0x2595: 0x000d, 0x2596: 0x000d, 0x2597: 0x000d,\n\t0x2598: 0x000d, 0x2599: 0x000d, 0x259a: 0x000d, 0x259b: 0x000d, 0x259c: 0x000d, 0x259d: 0x000d,\n\t0x259e: 0x000d, 0x259f: 0x000d, 0x25a0: 0x000d, 0x25a1: 0x000d, 0x25a2: 0x000d, 0x25a3: 0x000d,\n\t0x25a4: 0x000d, 0x25a5: 0x000d, 0x25a6: 0x000d, 0x25a7: 0x000d, 0x25a8: 0x000d, 0x25a9: 0x000d,\n\t0x25aa: 0x000d, 0x25ab: 0x000d, 0x25ac: 0x000d, 0x25ad: 0x000d, 0x25ae: 0x000d, 0x25af: 0x000d,\n\t0x25b0: 0x000d, 0x25b1: 0x000d, 0x25b2: 0x000d, 0x25b3: 0x000d, 0x25b4: 0x000d, 0x25b5: 0x000d,\n\t0x25b6: 0x000d, 0x25b7: 0x000d, 0x25b8: 0x000d, 0x25b9: 0x000d, 0x25ba: 0x000d, 0x25bb: 0x000d,\n\t0x25bc: 0x000d, 0x25bd: 0x000d, 0x25be: 0x000d, 0x25bf: 0x000b,\n\t// Block 0x97, offset 0x25c0\n\t0x25c1: 0x000a, 0x25c2: 0x000a, 0x25c3: 0x0004, 0x25c4: 0x0004, 0x25c5: 0x0004,\n\t0x25c6: 0x000a, 0x25c7: 0x000a, 0x25c8: 0x003a, 0x25c9: 0x002a, 0x25ca: 0x000a, 0x25cb: 0x0003,\n\t0x25cc: 0x0006, 0x25cd: 0x0003, 0x25ce: 0x0006, 0x25cf: 0x0006, 0x25d0: 0x0002, 0x25d1: 0x0002,\n\t0x25d2: 0x0002, 0x25d3: 0x0002, 0x25d4: 0x0002, 0x25d5: 0x0002, 0x25d6: 0x0002, 0x25d7: 0x0002,\n\t0x25d8: 0x0002, 0x25d9: 0x0002, 0x25da: 0x0006, 0x25db: 0x000a, 0x25dc: 0x000a, 0x25dd: 0x000a,\n\t0x25de: 0x000a, 0x25df: 0x000a, 0x25e0: 0x000a,\n\t0x25fb: 0x005a,\n\t0x25fc: 0x000a, 0x25fd: 0x004a, 0x25fe: 0x000a, 0x25ff: 0x000a,\n\t// Block 0x98, offset 0x2600\n\t0x2600: 0x000a,\n\t0x261b: 0x005a, 0x261c: 0x000a, 0x261d: 0x004a,\n\t0x261e: 0x000a, 0x261f: 0x00fa, 0x2620: 0x00ea, 0x2621: 0x000a, 0x2622: 0x003a, 0x2623: 0x002a,\n\t0x2624: 0x000a, 0x2625: 0x000a,\n\t// Block 0x99, offset 0x2640\n\t0x2660: 0x0004, 0x2661: 0x0004, 0x2662: 0x000a, 0x2663: 0x000a,\n\t0x2664: 0x000a, 0x2665: 0x0004, 0x2666: 0x0004, 0x2668: 0x000a, 0x2669: 0x000a,\n\t0x266a: 0x000a, 0x266b: 0x000a, 0x266c: 0x000a, 0x266d: 0x000a, 0x266e: 0x000a,\n\t0x2670: 0x000b, 0x2671: 0x000b, 0x2672: 0x000b, 0x2673: 0x000b, 0x2674: 0x000b, 0x2675: 0x000b,\n\t0x2676: 0x000b, 0x2677: 0x000b, 0x2678: 0x000b, 0x2679: 0x000a, 0x267a: 0x000a, 0x267b: 0x000a,\n\t0x267c: 0x000a, 0x267d: 0x000a, 0x267e: 0x000b, 0x267f: 0x000b,\n\t// Block 0x9a, offset 0x2680\n\t0x2681: 0x000a,\n\t// Block 0x9b, offset 0x26c0\n\t0x26c0: 0x000a, 0x26c1: 0x000a, 0x26c2: 0x000a, 0x26c3: 0x000a, 0x26c4: 0x000a, 0x26c5: 0x000a,\n\t0x26c6: 0x000a, 0x26c7: 0x000a, 0x26c8: 0x000a, 0x26c9: 0x000a, 0x26ca: 0x000a, 0x26cb: 0x000a,\n\t0x26cc: 0x000a, 0x26d0: 0x000a, 0x26d1: 0x000a,\n\t0x26d2: 0x000a, 0x26d3: 0x000a, 0x26d4: 0x000a, 0x26d5: 0x000a, 0x26d6: 0x000a, 0x26d7: 0x000a,\n\t0x26d8: 0x000a, 0x26d9: 0x000a, 0x26da: 0x000a, 0x26db: 0x000a, 0x26dc: 0x000a,\n\t0x26e0: 0x000a,\n\t// Block 0x9c, offset 0x2700\n\t0x273d: 0x000c,\n\t// Block 0x9d, offset 0x2740\n\t0x2760: 0x000c, 0x2761: 0x0002, 0x2762: 0x0002, 0x2763: 0x0002,\n\t0x2764: 0x0002, 0x2765: 0x0002, 0x2766: 0x0002, 0x2767: 0x0002, 0x2768: 0x0002, 0x2769: 0x0002,\n\t0x276a: 0x0002, 0x276b: 0x0002, 0x276c: 0x0002, 0x276d: 0x0002, 0x276e: 0x0002, 0x276f: 0x0002,\n\t0x2770: 0x0002, 0x2771: 0x0002, 0x2772: 0x0002, 0x2773: 0x0002, 0x2774: 0x0002, 0x2775: 0x0002,\n\t0x2776: 0x0002, 0x2777: 0x0002, 0x2778: 0x0002, 0x2779: 0x0002, 0x277a: 0x0002, 0x277b: 0x0002,\n\t// Block 0x9e, offset 0x2780\n\t0x27b6: 0x000c, 0x27b7: 0x000c, 0x27b8: 0x000c, 0x27b9: 0x000c, 0x27ba: 0x000c,\n\t// Block 0x9f, offset 0x27c0\n\t0x27c0: 0x0001, 0x27c1: 0x0001, 0x27c2: 0x0001, 0x27c3: 0x0001, 0x27c4: 0x0001, 0x27c5: 0x0001,\n\t0x27c6: 0x0001, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001,\n\t0x27cc: 0x0001, 0x27cd: 0x0001, 0x27ce: 0x0001, 0x27cf: 0x0001, 0x27d0: 0x0001, 0x27d1: 0x0001,\n\t0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001,\n\t0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001,\n\t0x27de: 0x0001, 0x27df: 0x0001, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001,\n\t0x27e4: 0x0001, 0x27e5: 0x0001, 0x27e6: 0x0001, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001,\n\t0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001,\n\t0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001,\n\t0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x0001, 0x27f9: 0x0001, 0x27fa: 0x0001, 0x27fb: 0x0001,\n\t0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x0001,\n\t// Block 0xa0, offset 0x2800\n\t0x2800: 0x0001, 0x2801: 0x0001, 0x2802: 0x0001, 0x2803: 0x0001, 0x2804: 0x0001, 0x2805: 0x0001,\n\t0x2806: 0x0001, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001,\n\t0x280c: 0x0001, 0x280d: 0x0001, 0x280e: 0x0001, 0x280f: 0x0001, 0x2810: 0x0001, 0x2811: 0x0001,\n\t0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001,\n\t0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001,\n\t0x281e: 0x0001, 0x281f: 0x000a, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001,\n\t0x2824: 0x0001, 0x2825: 0x0001, 0x2826: 0x0001, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001,\n\t0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001,\n\t0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001,\n\t0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x0001, 0x2839: 0x0001, 0x283a: 0x0001, 0x283b: 0x0001,\n\t0x283c: 0x0001, 0x283d: 0x0001, 0x283e: 0x0001, 0x283f: 0x0001,\n\t// Block 0xa1, offset 0x2840\n\t0x2840: 0x0001, 0x2841: 0x000c, 0x2842: 0x000c, 0x2843: 0x000c, 0x2844: 0x0001, 0x2845: 0x000c,\n\t0x2846: 0x000c, 0x2847: 0x0001, 0x2848: 0x0001, 0x2849: 0x0001, 0x284a: 0x0001, 0x284b: 0x0001,\n\t0x284c: 0x000c, 0x284d: 0x000c, 0x284e: 0x000c, 0x284f: 0x000c, 0x2850: 0x0001, 0x2851: 0x0001,\n\t0x2852: 0x0001, 0x2853: 0x0001, 0x2854: 0x0001, 0x2855: 0x0001, 0x2856: 0x0001, 0x2857: 0x0001,\n\t0x2858: 0x0001, 0x2859: 0x0001, 0x285a: 0x0001, 0x285b: 0x0001, 0x285c: 0x0001, 0x285d: 0x0001,\n\t0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0001, 0x2861: 0x0001, 0x2862: 0x0001, 0x2863: 0x0001,\n\t0x2864: 0x0001, 0x2865: 0x0001, 0x2866: 0x0001, 0x2867: 0x0001, 0x2868: 0x0001, 0x2869: 0x0001,\n\t0x286a: 0x0001, 0x286b: 0x0001, 0x286c: 0x0001, 0x286d: 0x0001, 0x286e: 0x0001, 0x286f: 0x0001,\n\t0x2870: 0x0001, 0x2871: 0x0001, 0x2872: 0x0001, 0x2873: 0x0001, 0x2874: 0x0001, 0x2875: 0x0001,\n\t0x2876: 0x0001, 0x2877: 0x0001, 0x2878: 0x000c, 0x2879: 0x000c, 0x287a: 0x000c, 0x287b: 0x0001,\n\t0x287c: 0x0001, 0x287d: 0x0001, 0x287e: 0x0001, 0x287f: 0x000c,\n\t// Block 0xa2, offset 0x2880\n\t0x2880: 0x0001, 0x2881: 0x0001, 0x2882: 0x0001, 0x2883: 0x0001, 0x2884: 0x0001, 0x2885: 0x0001,\n\t0x2886: 0x0001, 0x2887: 0x0001, 0x2888: 0x0001, 0x2889: 0x0001, 0x288a: 0x0001, 0x288b: 0x0001,\n\t0x288c: 0x0001, 0x288d: 0x0001, 0x288e: 0x0001, 0x288f: 0x0001, 0x2890: 0x0001, 0x2891: 0x0001,\n\t0x2892: 0x0001, 0x2893: 0x0001, 0x2894: 0x0001, 0x2895: 0x0001, 0x2896: 0x0001, 0x2897: 0x0001,\n\t0x2898: 0x0001, 0x2899: 0x0001, 0x289a: 0x0001, 0x289b: 0x0001, 0x289c: 0x0001, 0x289d: 0x0001,\n\t0x289e: 0x0001, 0x289f: 0x0001, 0x28a0: 0x0001, 0x28a1: 0x0001, 0x28a2: 0x0001, 0x28a3: 0x0001,\n\t0x28a4: 0x0001, 0x28a5: 0x000c, 0x28a6: 0x000c, 0x28a7: 0x0001, 0x28a8: 0x0001, 0x28a9: 0x0001,\n\t0x28aa: 0x0001, 0x28ab: 0x0001, 0x28ac: 0x0001, 0x28ad: 0x0001, 0x28ae: 0x0001, 0x28af: 0x0001,\n\t0x28b0: 0x0001, 0x28b1: 0x0001, 0x28b2: 0x0001, 0x28b3: 0x0001, 0x28b4: 0x0001, 0x28b5: 0x0001,\n\t0x28b6: 0x0001, 0x28b7: 0x0001, 0x28b8: 0x0001, 0x28b9: 0x0001, 0x28ba: 0x0001, 0x28bb: 0x0001,\n\t0x28bc: 0x0001, 0x28bd: 0x0001, 0x28be: 0x0001, 0x28bf: 0x0001,\n\t// Block 0xa3, offset 0x28c0\n\t0x28c0: 0x0001, 0x28c1: 0x0001, 0x28c2: 0x0001, 0x28c3: 0x0001, 0x28c4: 0x0001, 0x28c5: 0x0001,\n\t0x28c6: 0x0001, 0x28c7: 0x0001, 0x28c8: 0x0001, 0x28c9: 0x0001, 0x28ca: 0x0001, 0x28cb: 0x0001,\n\t0x28cc: 0x0001, 0x28cd: 0x0001, 0x28ce: 0x0001, 0x28cf: 0x0001, 0x28d0: 0x0001, 0x28d1: 0x0001,\n\t0x28d2: 0x0001, 0x28d3: 0x0001, 0x28d4: 0x0001, 0x28d5: 0x0001, 0x28d6: 0x0001, 0x28d7: 0x0001,\n\t0x28d8: 0x0001, 0x28d9: 0x0001, 0x28da: 0x0001, 0x28db: 0x0001, 0x28dc: 0x0001, 0x28dd: 0x0001,\n\t0x28de: 0x0001, 0x28df: 0x0001, 0x28e0: 0x0001, 0x28e1: 0x0001, 0x28e2: 0x0001, 0x28e3: 0x0001,\n\t0x28e4: 0x0001, 0x28e5: 0x0001, 0x28e6: 0x0001, 0x28e7: 0x0001, 0x28e8: 0x0001, 0x28e9: 0x0001,\n\t0x28ea: 0x0001, 0x28eb: 0x0001, 0x28ec: 0x0001, 0x28ed: 0x0001, 0x28ee: 0x0001, 0x28ef: 0x0001,\n\t0x28f0: 0x0001, 0x28f1: 0x0001, 0x28f2: 0x0001, 0x28f3: 0x0001, 0x28f4: 0x0001, 0x28f5: 0x0001,\n\t0x28f6: 0x0001, 0x28f7: 0x0001, 0x28f8: 0x0001, 0x28f9: 0x000a, 0x28fa: 0x000a, 0x28fb: 0x000a,\n\t0x28fc: 0x000a, 0x28fd: 0x000a, 0x28fe: 0x000a, 0x28ff: 0x000a,\n\t// Block 0xa4, offset 0x2900\n\t0x2900: 0x000d, 0x2901: 0x000d, 0x2902: 0x000d, 0x2903: 0x000d, 0x2904: 0x000d, 0x2905: 0x000d,\n\t0x2906: 0x000d, 0x2907: 0x000d, 0x2908: 0x000d, 0x2909: 0x000d, 0x290a: 0x000d, 0x290b: 0x000d,\n\t0x290c: 0x000d, 0x290d: 0x000d, 0x290e: 0x000d, 0x290f: 0x000d, 0x2910: 0x000d, 0x2911: 0x000d,\n\t0x2912: 0x000d, 0x2913: 0x000d, 0x2914: 0x000d, 0x2915: 0x000d, 0x2916: 0x000d, 0x2917: 0x000d,\n\t0x2918: 0x000d, 0x2919: 0x000d, 0x291a: 0x000d, 0x291b: 0x000d, 0x291c: 0x000d, 0x291d: 0x000d,\n\t0x291e: 0x000d, 0x291f: 0x000d, 0x2920: 0x000d, 0x2921: 0x000d, 0x2922: 0x000d, 0x2923: 0x000d,\n\t0x2924: 0x000c, 0x2925: 0x000c, 0x2926: 0x000c, 0x2927: 0x000c, 0x2928: 0x0001, 0x2929: 0x0001,\n\t0x292a: 0x0001, 0x292b: 0x0001, 0x292c: 0x0001, 0x292d: 0x0001, 0x292e: 0x0001, 0x292f: 0x0001,\n\t0x2930: 0x0005, 0x2931: 0x0005, 0x2932: 0x0005, 0x2933: 0x0005, 0x2934: 0x0005, 0x2935: 0x0005,\n\t0x2936: 0x0005, 0x2937: 0x0005, 0x2938: 0x0005, 0x2939: 0x0005, 0x293a: 0x0001, 0x293b: 0x0001,\n\t0x293c: 0x0001, 0x293d: 0x0001, 0x293e: 0x0001, 0x293f: 0x0001,\n\t// Block 0xa5, offset 0x2940\n\t0x2940: 0x0005, 0x2941: 0x0005, 0x2942: 0x0005, 0x2943: 0x0005, 0x2944: 0x0005, 0x2945: 0x0005,\n\t0x2946: 0x0005, 0x2947: 0x0005, 0x2948: 0x0005, 0x2949: 0x0005, 0x294a: 0x0001, 0x294b: 0x0001,\n\t0x294c: 0x0001, 0x294d: 0x0001, 0x294e: 0x0001, 0x294f: 0x0001, 0x2950: 0x0001, 0x2951: 0x0001,\n\t0x2952: 0x0001, 0x2953: 0x0001, 0x2954: 0x0001, 0x2955: 0x0001, 0x2956: 0x0001, 0x2957: 0x0001,\n\t0x2958: 0x0001, 0x2959: 0x0001, 0x295a: 0x0001, 0x295b: 0x0001, 0x295c: 0x0001, 0x295d: 0x0001,\n\t0x295e: 0x0001, 0x295f: 0x0001, 0x2960: 0x0001, 0x2961: 0x0001, 0x2962: 0x0001, 0x2963: 0x0001,\n\t0x2964: 0x0001, 0x2965: 0x0001, 0x2966: 0x0001, 0x2967: 0x0001, 0x2968: 0x0001, 0x2969: 0x000c,\n\t0x296a: 0x000c, 0x296b: 0x000c, 0x296c: 0x000c, 0x296d: 0x000c, 0x296e: 0x000a, 0x296f: 0x0001,\n\t0x2970: 0x0001, 0x2971: 0x0001, 0x2972: 0x0001, 0x2973: 0x0001, 0x2974: 0x0001, 0x2975: 0x0001,\n\t0x2976: 0x0001, 0x2977: 0x0001, 0x2978: 0x0001, 0x2979: 0x0001, 0x297a: 0x0001, 0x297b: 0x0001,\n\t0x297c: 0x0001, 0x297d: 0x0001, 0x297e: 0x0001, 0x297f: 0x0001,\n\t// Block 0xa6, offset 0x2980\n\t0x2980: 0x0001, 0x2981: 0x0001, 0x2982: 0x0001, 0x2983: 0x0001, 0x2984: 0x0001, 0x2985: 0x0001,\n\t0x2986: 0x0001, 0x2987: 0x0001, 0x2988: 0x0001, 0x2989: 0x0001, 0x298a: 0x0001, 0x298b: 0x0001,\n\t0x298c: 0x0001, 0x298d: 0x0001, 0x298e: 0x0001, 0x298f: 0x0001, 0x2990: 0x0001, 0x2991: 0x0001,\n\t0x2992: 0x0001, 0x2993: 0x0001, 0x2994: 0x0001, 0x2995: 0x0001, 0x2996: 0x0001, 0x2997: 0x0001,\n\t0x2998: 0x0001, 0x2999: 0x0001, 0x299a: 0x0001, 0x299b: 0x0001, 0x299c: 0x0001, 0x299d: 0x0001,\n\t0x299e: 0x0001, 0x299f: 0x0001, 0x29a0: 0x0005, 0x29a1: 0x0005, 0x29a2: 0x0005, 0x29a3: 0x0005,\n\t0x29a4: 0x0005, 0x29a5: 0x0005, 0x29a6: 0x0005, 0x29a7: 0x0005, 0x29a8: 0x0005, 0x29a9: 0x0005,\n\t0x29aa: 0x0005, 0x29ab: 0x0005, 0x29ac: 0x0005, 0x29ad: 0x0005, 0x29ae: 0x0005, 0x29af: 0x0005,\n\t0x29b0: 0x0005, 0x29b1: 0x0005, 0x29b2: 0x0005, 0x29b3: 0x0005, 0x29b4: 0x0005, 0x29b5: 0x0005,\n\t0x29b6: 0x0005, 0x29b7: 0x0005, 0x29b8: 0x0005, 0x29b9: 0x0005, 0x29ba: 0x0005, 0x29bb: 0x0005,\n\t0x29bc: 0x0005, 0x29bd: 0x0005, 0x29be: 0x0005, 0x29bf: 0x0001,\n\t// Block 0xa7, offset 0x29c0\n\t0x29c0: 0x0001, 0x29c1: 0x0001, 0x29c2: 0x0001, 0x29c3: 0x0001, 0x29c4: 0x0001, 0x29c5: 0x0001,\n\t0x29c6: 0x0001, 0x29c7: 0x0001, 0x29c8: 0x0001, 0x29c9: 0x0001, 0x29ca: 0x0001, 0x29cb: 0x0001,\n\t0x29cc: 0x0001, 0x29cd: 0x0001, 0x29ce: 0x0001, 0x29cf: 0x0001, 0x29d0: 0x0001, 0x29d1: 0x0001,\n\t0x29d2: 0x0001, 0x29d3: 0x0001, 0x29d4: 0x0001, 0x29d5: 0x0001, 0x29d6: 0x0001, 0x29d7: 0x0001,\n\t0x29d8: 0x0001, 0x29d9: 0x0001, 0x29da: 0x0001, 0x29db: 0x0001, 0x29dc: 0x0001, 0x29dd: 0x0001,\n\t0x29de: 0x0001, 0x29df: 0x0001, 0x29e0: 0x0001, 0x29e1: 0x0001, 0x29e2: 0x0001, 0x29e3: 0x0001,\n\t0x29e4: 0x0001, 0x29e5: 0x0001, 0x29e6: 0x0001, 0x29e7: 0x0001, 0x29e8: 0x0001, 0x29e9: 0x0001,\n\t0x29ea: 0x0001, 0x29eb: 0x000c, 0x29ec: 0x000c, 0x29ed: 0x0001, 0x29ee: 0x0001, 0x29ef: 0x0001,\n\t0x29f0: 0x0001, 0x29f1: 0x0001, 0x29f2: 0x0001, 0x29f3: 0x0001, 0x29f4: 0x0001, 0x29f5: 0x0001,\n\t0x29f6: 0x0001, 0x29f7: 0x0001, 0x29f8: 0x0001, 0x29f9: 0x0001, 0x29fa: 0x0001, 0x29fb: 0x0001,\n\t0x29fc: 0x0001, 0x29fd: 0x0001, 0x29fe: 0x0001, 0x29ff: 0x0001,\n\t// Block 0xa8, offset 0x2a00\n\t0x2a00: 0x0001, 0x2a01: 0x0001, 0x2a02: 0x000d, 0x2a03: 0x000d, 0x2a04: 0x000d, 0x2a05: 0x000d,\n\t0x2a06: 0x000d, 0x2a07: 0x000d, 0x2a08: 0x0001, 0x2a09: 0x0001, 0x2a0a: 0x0001, 0x2a0b: 0x0001,\n\t0x2a0c: 0x0001, 0x2a0d: 0x0001, 0x2a0e: 0x0001, 0x2a0f: 0x0001, 0x2a10: 0x000a, 0x2a11: 0x000a,\n\t0x2a12: 0x000a, 0x2a13: 0x000a, 0x2a14: 0x000a, 0x2a15: 0x000a, 0x2a16: 0x000a, 0x2a17: 0x000a,\n\t0x2a18: 0x000a, 0x2a19: 0x0001, 0x2a1a: 0x0001, 0x2a1b: 0x0001, 0x2a1c: 0x0001, 0x2a1d: 0x0001,\n\t0x2a1e: 0x0001, 0x2a1f: 0x0001, 0x2a20: 0x0001, 0x2a21: 0x0001, 0x2a22: 0x0001, 0x2a23: 0x0001,\n\t0x2a24: 0x0001, 0x2a25: 0x0001, 0x2a26: 0x0001, 0x2a27: 0x0001, 0x2a28: 0x0001, 0x2a29: 0x0001,\n\t0x2a2a: 0x0001, 0x2a2b: 0x0001, 0x2a2c: 0x0001, 0x2a2d: 0x0001, 0x2a2e: 0x0001, 0x2a2f: 0x0001,\n\t0x2a30: 0x0001, 0x2a31: 0x0001, 0x2a32: 0x0001, 0x2a33: 0x0001, 0x2a34: 0x0001, 0x2a35: 0x0001,\n\t0x2a36: 0x0001, 0x2a37: 0x0001, 0x2a38: 0x0001, 0x2a39: 0x0001, 0x2a3a: 0x000c, 0x2a3b: 0x000c,\n\t0x2a3c: 0x000c, 0x2a3d: 0x000c, 0x2a3e: 0x000c, 0x2a3f: 0x000c,\n\t// Block 0xa9, offset 0x2a40\n\t0x2a40: 0x0001, 0x2a41: 0x0001, 0x2a42: 0x0001, 0x2a43: 0x0001, 0x2a44: 0x0001, 0x2a45: 0x0001,\n\t0x2a46: 0x0001, 0x2a47: 0x0001, 0x2a48: 0x0001, 0x2a49: 0x0001, 0x2a4a: 0x0001, 0x2a4b: 0x0001,\n\t0x2a4c: 0x0001, 0x2a4d: 0x0001, 0x2a4e: 0x0001, 0x2a4f: 0x0001, 0x2a50: 0x0001, 0x2a51: 0x0001,\n\t0x2a52: 0x0001, 0x2a53: 0x0001, 0x2a54: 0x0001, 0x2a55: 0x0001, 0x2a56: 0x0001, 0x2a57: 0x0001,\n\t0x2a58: 0x0001, 0x2a59: 0x0001, 0x2a5a: 0x0001, 0x2a5b: 0x0001, 0x2a5c: 0x0001, 0x2a5d: 0x0001,\n\t0x2a5e: 0x0001, 0x2a5f: 0x0001, 0x2a60: 0x0001, 0x2a61: 0x0001, 0x2a62: 0x0001, 0x2a63: 0x0001,\n\t0x2a64: 0x0001, 0x2a65: 0x0001, 0x2a66: 0x0001, 0x2a67: 0x0001, 0x2a68: 0x0001, 0x2a69: 0x0001,\n\t0x2a6a: 0x0001, 0x2a6b: 0x0001, 0x2a6c: 0x0001, 0x2a6d: 0x0001, 0x2a6e: 0x0001, 0x2a6f: 0x0001,\n\t0x2a70: 0x000d, 0x2a71: 0x000d, 0x2a72: 0x000d, 0x2a73: 0x000d, 0x2a74: 0x000d, 0x2a75: 0x000d,\n\t0x2a76: 0x000d, 0x2a77: 0x000d, 0x2a78: 0x000d, 0x2a79: 0x000d, 0x2a7a: 0x000d, 0x2a7b: 0x000d,\n\t0x2a7c: 0x000d, 0x2a7d: 0x000d, 0x2a7e: 0x000d, 0x2a7f: 0x000d,\n\t// Block 0xaa, offset 0x2a80\n\t0x2a80: 0x000d, 0x2a81: 0x000d, 0x2a82: 0x000d, 0x2a83: 0x000d, 0x2a84: 0x000d, 0x2a85: 0x000d,\n\t0x2a86: 0x000c, 0x2a87: 0x000c, 0x2a88: 0x000c, 0x2a89: 0x000c, 0x2a8a: 0x000c, 0x2a8b: 0x000c,\n\t0x2a8c: 0x000c, 0x2a8d: 0x000c, 0x2a8e: 0x000c, 0x2a8f: 0x000c, 0x2a90: 0x000c, 0x2a91: 0x000d,\n\t0x2a92: 0x000d, 0x2a93: 0x000d, 0x2a94: 0x000d, 0x2a95: 0x000d, 0x2a96: 0x000d, 0x2a97: 0x000d,\n\t0x2a98: 0x000d, 0x2a99: 0x000d, 0x2a9a: 0x0001, 0x2a9b: 0x0001, 0x2a9c: 0x0001, 0x2a9d: 0x0001,\n\t0x2a9e: 0x0001, 0x2a9f: 0x0001, 0x2aa0: 0x0001, 0x2aa1: 0x0001, 0x2aa2: 0x0001, 0x2aa3: 0x0001,\n\t0x2aa4: 0x0001, 0x2aa5: 0x0001, 0x2aa6: 0x0001, 0x2aa7: 0x0001, 0x2aa8: 0x0001, 0x2aa9: 0x0001,\n\t0x2aaa: 0x0001, 0x2aab: 0x0001, 0x2aac: 0x0001, 0x2aad: 0x0001, 0x2aae: 0x0001, 0x2aaf: 0x0001,\n\t0x2ab0: 0x0001, 0x2ab1: 0x0001, 0x2ab2: 0x0001, 0x2ab3: 0x0001, 0x2ab4: 0x0001, 0x2ab5: 0x0001,\n\t0x2ab6: 0x0001, 0x2ab7: 0x0001, 0x2ab8: 0x0001, 0x2ab9: 0x0001, 0x2aba: 0x0001, 0x2abb: 0x0001,\n\t0x2abc: 0x0001, 0x2abd: 0x0001, 0x2abe: 0x0001, 0x2abf: 0x0001,\n\t// Block 0xab, offset 0x2ac0\n\t0x2ac0: 0x0001, 0x2ac1: 0x0001, 0x2ac2: 0x000c, 0x2ac3: 0x000c, 0x2ac4: 0x000c, 0x2ac5: 0x000c,\n\t0x2ac6: 0x0001, 0x2ac7: 0x0001, 0x2ac8: 0x0001, 0x2ac9: 0x0001, 0x2aca: 0x0001, 0x2acb: 0x0001,\n\t0x2acc: 0x0001, 0x2acd: 0x0001, 0x2ace: 0x0001, 0x2acf: 0x0001, 0x2ad0: 0x0001, 0x2ad1: 0x0001,\n\t0x2ad2: 0x0001, 0x2ad3: 0x0001, 0x2ad4: 0x0001, 0x2ad5: 0x0001, 0x2ad6: 0x0001, 0x2ad7: 0x0001,\n\t0x2ad8: 0x0001, 0x2ad9: 0x0001, 0x2ada: 0x0001, 0x2adb: 0x0001, 0x2adc: 0x0001, 0x2add: 0x0001,\n\t0x2ade: 0x0001, 0x2adf: 0x0001, 0x2ae0: 0x0001, 0x2ae1: 0x0001, 0x2ae2: 0x0001, 0x2ae3: 0x0001,\n\t0x2ae4: 0x0001, 0x2ae5: 0x0001, 0x2ae6: 0x0001, 0x2ae7: 0x0001, 0x2ae8: 0x0001, 0x2ae9: 0x0001,\n\t0x2aea: 0x0001, 0x2aeb: 0x0001, 0x2aec: 0x0001, 0x2aed: 0x0001, 0x2aee: 0x0001, 0x2aef: 0x0001,\n\t0x2af0: 0x0001, 0x2af1: 0x0001, 0x2af2: 0x0001, 0x2af3: 0x0001, 0x2af4: 0x0001, 0x2af5: 0x0001,\n\t0x2af6: 0x0001, 0x2af7: 0x0001, 0x2af8: 0x0001, 0x2af9: 0x0001, 0x2afa: 0x0001, 0x2afb: 0x0001,\n\t0x2afc: 0x0001, 0x2afd: 0x0001, 0x2afe: 0x0001, 0x2aff: 0x0001,\n\t// Block 0xac, offset 0x2b00\n\t0x2b01: 0x000c,\n\t0x2b38: 0x000c, 0x2b39: 0x000c, 0x2b3a: 0x000c, 0x2b3b: 0x000c,\n\t0x2b3c: 0x000c, 0x2b3d: 0x000c, 0x2b3e: 0x000c, 0x2b3f: 0x000c,\n\t// Block 0xad, offset 0x2b40\n\t0x2b40: 0x000c, 0x2b41: 0x000c, 0x2b42: 0x000c, 0x2b43: 0x000c, 0x2b44: 0x000c, 0x2b45: 0x000c,\n\t0x2b46: 0x000c,\n\t0x2b52: 0x000a, 0x2b53: 0x000a, 0x2b54: 0x000a, 0x2b55: 0x000a, 0x2b56: 0x000a, 0x2b57: 0x000a,\n\t0x2b58: 0x000a, 0x2b59: 0x000a, 0x2b5a: 0x000a, 0x2b5b: 0x000a, 0x2b5c: 0x000a, 0x2b5d: 0x000a,\n\t0x2b5e: 0x000a, 0x2b5f: 0x000a, 0x2b60: 0x000a, 0x2b61: 0x000a, 0x2b62: 0x000a, 0x2b63: 0x000a,\n\t0x2b64: 0x000a, 0x2b65: 0x000a,\n\t0x2b70: 0x000c, 0x2b73: 0x000c, 0x2b74: 0x000c,\n\t0x2b7f: 0x000c,\n\t// Block 0xae, offset 0x2b80\n\t0x2b80: 0x000c, 0x2b81: 0x000c,\n\t0x2bb3: 0x000c, 0x2bb4: 0x000c, 0x2bb5: 0x000c,\n\t0x2bb6: 0x000c, 0x2bb9: 0x000c, 0x2bba: 0x000c,\n\t// Block 0xaf, offset 0x2bc0\n\t0x2bc0: 0x000c, 0x2bc1: 0x000c, 0x2bc2: 0x000c,\n\t0x2be7: 0x000c, 0x2be8: 0x000c, 0x2be9: 0x000c,\n\t0x2bea: 0x000c, 0x2beb: 0x000c, 0x2bed: 0x000c, 0x2bee: 0x000c, 0x2bef: 0x000c,\n\t0x2bf0: 0x000c, 0x2bf1: 0x000c, 0x2bf2: 0x000c, 0x2bf3: 0x000c, 0x2bf4: 0x000c,\n\t// Block 0xb0, offset 0x2c00\n\t0x2c33: 0x000c,\n\t// Block 0xb1, offset 0x2c40\n\t0x2c40: 0x000c, 0x2c41: 0x000c,\n\t0x2c76: 0x000c, 0x2c77: 0x000c, 0x2c78: 0x000c, 0x2c79: 0x000c, 0x2c7a: 0x000c, 0x2c7b: 0x000c,\n\t0x2c7c: 0x000c, 0x2c7d: 0x000c, 0x2c7e: 0x000c,\n\t// Block 0xb2, offset 0x2c80\n\t0x2c89: 0x000c, 0x2c8a: 0x000c, 0x2c8b: 0x000c,\n\t0x2c8c: 0x000c, 0x2c8f: 0x000c,\n\t// Block 0xb3, offset 0x2cc0\n\t0x2cef: 0x000c,\n\t0x2cf0: 0x000c, 0x2cf1: 0x000c, 0x2cf4: 0x000c,\n\t0x2cf6: 0x000c, 0x2cf7: 0x000c,\n\t0x2cfe: 0x000c,\n\t// Block 0xb4, offset 0x2d00\n\t0x2d1f: 0x000c, 0x2d23: 0x000c,\n\t0x2d24: 0x000c, 0x2d25: 0x000c, 0x2d26: 0x000c, 0x2d27: 0x000c, 0x2d28: 0x000c, 0x2d29: 0x000c,\n\t0x2d2a: 0x000c,\n\t// Block 0xb5, offset 0x2d40\n\t0x2d40: 0x000c,\n\t0x2d66: 0x000c, 0x2d67: 0x000c, 0x2d68: 0x000c, 0x2d69: 0x000c,\n\t0x2d6a: 0x000c, 0x2d6b: 0x000c, 0x2d6c: 0x000c,\n\t0x2d70: 0x000c, 0x2d71: 0x000c, 0x2d72: 0x000c, 0x2d73: 0x000c, 0x2d74: 0x000c,\n\t// Block 0xb6, offset 0x2d80\n\t0x2dbb: 0x000c,\n\t0x2dbc: 0x000c, 0x2dbd: 0x000c, 0x2dbe: 0x000c, 0x2dbf: 0x000c,\n\t// Block 0xb7, offset 0x2dc0\n\t0x2dc0: 0x000c,\n\t0x2dce: 0x000c, 0x2dd0: 0x000c,\n\t0x2dd2: 0x000c,\n\t0x2de1: 0x000c, 0x2de2: 0x000c,\n\t// Block 0xb8, offset 0x2e00\n\t0x2e38: 0x000c, 0x2e39: 0x000c, 0x2e3a: 0x000c, 0x2e3b: 0x000c,\n\t0x2e3c: 0x000c, 0x2e3d: 0x000c, 0x2e3e: 0x000c, 0x2e3f: 0x000c,\n\t// Block 0xb9, offset 0x2e40\n\t0x2e42: 0x000c, 0x2e43: 0x000c, 0x2e44: 0x000c,\n\t0x2e46: 0x000c,\n\t0x2e5e: 0x000c,\n\t// Block 0xba, offset 0x2e80\n\t0x2eb3: 0x000c, 0x2eb4: 0x000c, 0x2eb5: 0x000c,\n\t0x2eb6: 0x000c, 0x2eb7: 0x000c, 0x2eb8: 0x000c, 0x2eba: 0x000c,\n\t0x2ebf: 0x000c,\n\t// Block 0xbb, offset 0x2ec0\n\t0x2ec0: 0x000c, 0x2ec2: 0x000c, 0x2ec3: 0x000c,\n\t// Block 0xbc, offset 0x2f00\n\t0x2f32: 0x000c, 0x2f33: 0x000c, 0x2f34: 0x000c, 0x2f35: 0x000c,\n\t0x2f3c: 0x000c, 0x2f3d: 0x000c, 0x2f3f: 0x000c,\n\t// Block 0xbd, offset 0x2f40\n\t0x2f40: 0x000c,\n\t0x2f5c: 0x000c, 0x2f5d: 0x000c,\n\t// Block 0xbe, offset 0x2f80\n\t0x2fb3: 0x000c, 0x2fb4: 0x000c, 0x2fb5: 0x000c,\n\t0x2fb6: 0x000c, 0x2fb7: 0x000c, 0x2fb8: 0x000c, 0x2fb9: 0x000c, 0x2fba: 0x000c,\n\t0x2fbd: 0x000c, 0x2fbf: 0x000c,\n\t// Block 0xbf, offset 0x2fc0\n\t0x2fc0: 0x000c,\n\t0x2fe0: 0x000a, 0x2fe1: 0x000a, 0x2fe2: 0x000a, 0x2fe3: 0x000a,\n\t0x2fe4: 0x000a, 0x2fe5: 0x000a, 0x2fe6: 0x000a, 0x2fe7: 0x000a, 0x2fe8: 0x000a, 0x2fe9: 0x000a,\n\t0x2fea: 0x000a, 0x2feb: 0x000a, 0x2fec: 0x000a,\n\t// Block 0xc0, offset 0x3000\n\t0x302b: 0x000c, 0x302d: 0x000c,\n\t0x3030: 0x000c, 0x3031: 0x000c, 0x3032: 0x000c, 0x3033: 0x000c, 0x3034: 0x000c, 0x3035: 0x000c,\n\t0x3037: 0x000c,\n\t// Block 0xc1, offset 0x3040\n\t0x305d: 0x000c,\n\t0x305f: 0x000c, 0x3062: 0x000c, 0x3063: 0x000c,\n\t0x3064: 0x000c, 0x3065: 0x000c, 0x3067: 0x000c, 0x3068: 0x000c, 0x3069: 0x000c,\n\t0x306a: 0x000c, 0x306b: 0x000c,\n\t// Block 0xc2, offset 0x3080\n\t0x30af: 0x000c,\n\t0x30b0: 0x000c, 0x30b1: 0x000c, 0x30b2: 0x000c, 0x30b3: 0x000c, 0x30b4: 0x000c, 0x30b5: 0x000c,\n\t0x30b6: 0x000c, 0x30b7: 0x000c, 0x30b9: 0x000c, 0x30ba: 0x000c,\n\t// Block 0xc3, offset 0x30c0\n\t0x30fb: 0x000c,\n\t0x30fc: 0x000c, 0x30fe: 0x000c,\n\t// Block 0xc4, offset 0x3100\n\t0x3103: 0x000c,\n\t// Block 0xc5, offset 0x3140\n\t0x3154: 0x000c, 0x3155: 0x000c, 0x3156: 0x000c, 0x3157: 0x000c,\n\t0x315a: 0x000c, 0x315b: 0x000c,\n\t0x3160: 0x000c,\n\t// Block 0xc6, offset 0x3180\n\t0x3181: 0x000c, 0x3182: 0x000c, 0x3183: 0x000c, 0x3184: 0x000c, 0x3185: 0x000c,\n\t0x3186: 0x000c, 0x3189: 0x000c, 0x318a: 0x000c,\n\t0x31b3: 0x000c, 0x31b4: 0x000c, 0x31b5: 0x000c,\n\t0x31b6: 0x000c, 0x31b7: 0x000c, 0x31b8: 0x000c, 0x31bb: 0x000c,\n\t0x31bc: 0x000c, 0x31bd: 0x000c, 0x31be: 0x000c,\n\t// Block 0xc7, offset 0x31c0\n\t0x31c7: 0x000c,\n\t0x31d1: 0x000c,\n\t0x31d2: 0x000c, 0x31d3: 0x000c, 0x31d4: 0x000c, 0x31d5: 0x000c, 0x31d6: 0x000c,\n\t0x31d9: 0x000c, 0x31da: 0x000c, 0x31db: 0x000c,\n\t// Block 0xc8, offset 0x3200\n\t0x320a: 0x000c, 0x320b: 0x000c,\n\t0x320c: 0x000c, 0x320d: 0x000c, 0x320e: 0x000c, 0x320f: 0x000c, 0x3210: 0x000c, 0x3211: 0x000c,\n\t0x3212: 0x000c, 0x3213: 0x000c, 0x3214: 0x000c, 0x3215: 0x000c, 0x3216: 0x000c,\n\t0x3218: 0x000c, 0x3219: 0x000c,\n\t// Block 0xc9, offset 0x3240\n\t0x3260: 0x000c, 0x3262: 0x000c, 0x3263: 0x000c,\n\t0x3264: 0x000c, 0x3266: 0x000c,\n\t// Block 0xca, offset 0x3280\n\t0x32b0: 0x000c, 0x32b1: 0x000c, 0x32b2: 0x000c, 0x32b3: 0x000c, 0x32b4: 0x000c, 0x32b5: 0x000c,\n\t0x32b6: 0x000c, 0x32b8: 0x000c, 0x32b9: 0x000c, 0x32ba: 0x000c, 0x32bb: 0x000c,\n\t0x32bc: 0x000c, 0x32bd: 0x000c,\n\t// Block 0xcb, offset 0x32c0\n\t0x32d2: 0x000c, 0x32d3: 0x000c, 0x32d4: 0x000c, 0x32d5: 0x000c, 0x32d6: 0x000c, 0x32d7: 0x000c,\n\t0x32d8: 0x000c, 0x32d9: 0x000c, 0x32da: 0x000c, 0x32db: 0x000c, 0x32dc: 0x000c, 0x32dd: 0x000c,\n\t0x32de: 0x000c, 0x32df: 0x000c, 0x32e0: 0x000c, 0x32e1: 0x000c, 0x32e2: 0x000c, 0x32e3: 0x000c,\n\t0x32e4: 0x000c, 0x32e5: 0x000c, 0x32e6: 0x000c, 0x32e7: 0x000c,\n\t0x32ea: 0x000c, 0x32eb: 0x000c, 0x32ec: 0x000c, 0x32ed: 0x000c, 0x32ee: 0x000c, 0x32ef: 0x000c,\n\t0x32f0: 0x000c, 0x32f2: 0x000c, 0x32f3: 0x000c, 0x32f5: 0x000c,\n\t0x32f6: 0x000c,\n\t// Block 0xcc, offset 0x3300\n\t0x3331: 0x000c, 0x3332: 0x000c, 0x3333: 0x000c, 0x3334: 0x000c, 0x3335: 0x000c,\n\t0x3336: 0x000c, 0x333a: 0x000c,\n\t0x333c: 0x000c, 0x333d: 0x000c, 0x333f: 0x000c,\n\t// Block 0xcd, offset 0x3340\n\t0x3340: 0x000c, 0x3341: 0x000c, 0x3342: 0x000c, 0x3343: 0x000c, 0x3344: 0x000c, 0x3345: 0x000c,\n\t0x3347: 0x000c,\n\t// Block 0xce, offset 0x3380\n\t0x3390: 0x000c, 0x3391: 0x000c,\n\t0x3395: 0x000c, 0x3397: 0x000c,\n\t// Block 0xcf, offset 0x33c0\n\t0x33f3: 0x000c, 0x33f4: 0x000c,\n\t// Block 0xd0, offset 0x3400\n\t0x3400: 0x000c, 0x3401: 0x000c,\n\t0x3436: 0x000c, 0x3437: 0x000c, 0x3438: 0x000c, 0x3439: 0x000c, 0x343a: 0x000c,\n\t// Block 0xd1, offset 0x3440\n\t0x3440: 0x000c, 0x3442: 0x000c,\n\t0x345a: 0x000c,\n\t// Block 0xd2, offset 0x3480\n\t0x3495: 0x000a, 0x3496: 0x000a, 0x3497: 0x000a,\n\t0x3498: 0x000a, 0x3499: 0x000a, 0x349a: 0x000a, 0x349b: 0x000a, 0x349c: 0x000a, 0x349d: 0x0004,\n\t0x349e: 0x0004, 0x349f: 0x0004, 0x34a0: 0x0004, 0x34a1: 0x000a, 0x34a2: 0x000a, 0x34a3: 0x000a,\n\t0x34a4: 0x000a, 0x34a5: 0x000a, 0x34a6: 0x000a, 0x34a7: 0x000a, 0x34a8: 0x000a, 0x34a9: 0x000a,\n\t0x34aa: 0x000a, 0x34ab: 0x000a, 0x34ac: 0x000a, 0x34ad: 0x000a, 0x34ae: 0x000a, 0x34af: 0x000a,\n\t0x34b0: 0x000a, 0x34b1: 0x000a,\n\t// Block 0xd3, offset 0x34c0\n\t0x34c0: 0x000c,\n\t0x34c7: 0x000c, 0x34c8: 0x000c, 0x34c9: 0x000c, 0x34ca: 0x000c, 0x34cb: 0x000c,\n\t0x34cc: 0x000c, 0x34cd: 0x000c, 0x34ce: 0x000c, 0x34cf: 0x000c, 0x34d0: 0x000c, 0x34d1: 0x000c,\n\t0x34d2: 0x000c, 0x34d3: 0x000c, 0x34d4: 0x000c, 0x34d5: 0x000c,\n\t// Block 0xd4, offset 0x3500\n\t0x351e: 0x000c, 0x351f: 0x000c, 0x3520: 0x000c, 0x3521: 0x000c, 0x3522: 0x000c, 0x3523: 0x000c,\n\t0x3524: 0x000c, 0x3525: 0x000c, 0x3526: 0x000c, 0x3527: 0x000c, 0x3528: 0x000c, 0x3529: 0x000c,\n\t0x352d: 0x000c, 0x352e: 0x000c, 0x352f: 0x000c,\n\t// Block 0xd5, offset 0x3540\n\t0x3570: 0x000c, 0x3571: 0x000c, 0x3572: 0x000c, 0x3573: 0x000c, 0x3574: 0x000c,\n\t// Block 0xd6, offset 0x3580\n\t0x35b0: 0x000c, 0x35b1: 0x000c, 0x35b2: 0x000c, 0x35b3: 0x000c, 0x35b4: 0x000c, 0x35b5: 0x000c,\n\t0x35b6: 0x000c,\n\t// Block 0xd7, offset 0x35c0\n\t0x35cf: 0x000c,\n\t// Block 0xd8, offset 0x3600\n\t0x360f: 0x000c, 0x3610: 0x000c, 0x3611: 0x000c,\n\t0x3612: 0x000c,\n\t// Block 0xd9, offset 0x3640\n\t0x3662: 0x000a,\n\t0x3664: 0x000c,\n\t// Block 0xda, offset 0x3680\n\t0x369d: 0x000c,\n\t0x369e: 0x000c, 0x36a0: 0x000b, 0x36a1: 0x000b, 0x36a2: 0x000b, 0x36a3: 0x000b,\n\t// Block 0xdb, offset 0x36c0\n\t0x36c0: 0x000a, 0x36c1: 0x000a, 0x36c2: 0x000a, 0x36c3: 0x000a, 0x36c4: 0x000a, 0x36c5: 0x000a,\n\t0x36c6: 0x000a, 0x36c7: 0x000a, 0x36c8: 0x000a, 0x36c9: 0x000a, 0x36ca: 0x000a, 0x36cb: 0x000a,\n\t0x36cc: 0x000a, 0x36cd: 0x000a, 0x36ce: 0x000a, 0x36cf: 0x000a, 0x36d0: 0x000a, 0x36d1: 0x000a,\n\t0x36d2: 0x000a, 0x36d3: 0x000a, 0x36d4: 0x000a, 0x36d5: 0x000a,\n\t0x36f0: 0x0002, 0x36f1: 0x0002, 0x36f2: 0x0002, 0x36f3: 0x0002, 0x36f4: 0x0002, 0x36f5: 0x0002,\n\t0x36f6: 0x0002, 0x36f7: 0x0002, 0x36f8: 0x0002, 0x36f9: 0x0002, 0x36fa: 0x000a, 0x36fb: 0x000a,\n\t0x36fc: 0x000a,\n\t// Block 0xdc, offset 0x3700\n\t0x3700: 0x000a, 0x3701: 0x000a, 0x3702: 0x000a, 0x3703: 0x000a, 0x3704: 0x000a, 0x3705: 0x000a,\n\t0x3706: 0x000a, 0x3707: 0x000a, 0x3708: 0x000a, 0x3709: 0x000a, 0x370a: 0x000a, 0x370b: 0x000a,\n\t0x370c: 0x000a, 0x370d: 0x000a, 0x370e: 0x000a, 0x370f: 0x000a, 0x3710: 0x000a, 0x3711: 0x000a,\n\t0x3712: 0x000a, 0x3713: 0x000a, 0x3714: 0x000a, 0x3715: 0x000a, 0x3716: 0x000a, 0x3717: 0x000a,\n\t0x3718: 0x000a, 0x3719: 0x000a, 0x371a: 0x000a, 0x371b: 0x000a, 0x371c: 0x000a, 0x371d: 0x000a,\n\t0x371e: 0x000a, 0x371f: 0x000a, 0x3720: 0x000a, 0x3721: 0x000a, 0x3722: 0x000a, 0x3723: 0x000a,\n\t0x3724: 0x000a, 0x3725: 0x000a, 0x3726: 0x000a, 0x3727: 0x000a, 0x3728: 0x000a, 0x3729: 0x000a,\n\t0x372a: 0x000a, 0x372b: 0x000a, 0x372c: 0x000a, 0x372d: 0x000a, 0x372e: 0x000a, 0x372f: 0x000a,\n\t0x3730: 0x000a, 0x3731: 0x000a, 0x3732: 0x000a, 0x3733: 0x000a,\n\t0x373a: 0x000a, 0x373b: 0x000a,\n\t0x373c: 0x000a, 0x373d: 0x000a, 0x373e: 0x000a, 0x373f: 0x000a,\n\t// Block 0xdd, offset 0x3740\n\t0x3740: 0x000a, 0x3741: 0x000a, 0x3742: 0x000a, 0x3743: 0x000a, 0x3744: 0x000a, 0x3745: 0x000a,\n\t0x3746: 0x000a, 0x3747: 0x000a, 0x3748: 0x000a, 0x3749: 0x000a, 0x374a: 0x000a, 0x374b: 0x000a,\n\t0x374c: 0x000a, 0x374d: 0x000a, 0x374e: 0x000a, 0x374f: 0x000a, 0x3750: 0x000a,\n\t0x3760: 0x000a, 0x3761: 0x000a, 0x3762: 0x000a, 0x3763: 0x000a,\n\t0x3764: 0x000a, 0x3765: 0x000a, 0x3766: 0x000a, 0x3767: 0x000a, 0x3768: 0x000a, 0x3769: 0x000a,\n\t0x376a: 0x000a, 0x376b: 0x000a, 0x376c: 0x000a, 0x376d: 0x000a, 0x376e: 0x000a, 0x376f: 0x000a,\n\t0x3770: 0x000a,\n\t// Block 0xde, offset 0x3780\n\t0x3780: 0x000c, 0x3781: 0x000c, 0x3782: 0x000c, 0x3783: 0x000c, 0x3784: 0x000c, 0x3785: 0x000c,\n\t0x3786: 0x000c, 0x3787: 0x000c, 0x3788: 0x000c, 0x3789: 0x000c, 0x378a: 0x000c, 0x378b: 0x000c,\n\t0x378c: 0x000c, 0x378d: 0x000c, 0x378e: 0x000c, 0x378f: 0x000c, 0x3790: 0x000c, 0x3791: 0x000c,\n\t0x3792: 0x000c, 0x3793: 0x000c, 0x3794: 0x000c, 0x3795: 0x000c, 0x3796: 0x000c, 0x3797: 0x000c,\n\t0x3798: 0x000c, 0x3799: 0x000c, 0x379a: 0x000c, 0x379b: 0x000c, 0x379c: 0x000c, 0x379d: 0x000c,\n\t0x379e: 0x000c, 0x379f: 0x000c, 0x37a0: 0x000c, 0x37a1: 0x000c, 0x37a2: 0x000c, 0x37a3: 0x000c,\n\t0x37a4: 0x000c, 0x37a5: 0x000c, 0x37a6: 0x000c, 0x37a7: 0x000c, 0x37a8: 0x000c, 0x37a9: 0x000c,\n\t0x37aa: 0x000c, 0x37ab: 0x000c, 0x37ac: 0x000c, 0x37ad: 0x000c,\n\t0x37b0: 0x000c, 0x37b1: 0x000c, 0x37b2: 0x000c, 0x37b3: 0x000c, 0x37b4: 0x000c, 0x37b5: 0x000c,\n\t0x37b6: 0x000c, 0x37b7: 0x000c, 0x37b8: 0x000c, 0x37b9: 0x000c, 0x37ba: 0x000c, 0x37bb: 0x000c,\n\t0x37bc: 0x000c, 0x37bd: 0x000c, 0x37be: 0x000c, 0x37bf: 0x000c,\n\t// Block 0xdf, offset 0x37c0\n\t0x37c0: 0x000c, 0x37c1: 0x000c, 0x37c2: 0x000c, 0x37c3: 0x000c, 0x37c4: 0x000c, 0x37c5: 0x000c,\n\t0x37c6: 0x000c,\n\t// Block 0xe0, offset 0x3800\n\t0x3827: 0x000c, 0x3828: 0x000c, 0x3829: 0x000c,\n\t0x3833: 0x000b, 0x3834: 0x000b, 0x3835: 0x000b,\n\t0x3836: 0x000b, 0x3837: 0x000b, 0x3838: 0x000b, 0x3839: 0x000b, 0x383a: 0x000b, 0x383b: 0x000c,\n\t0x383c: 0x000c, 0x383d: 0x000c, 0x383e: 0x000c, 0x383f: 0x000c,\n\t// Block 0xe1, offset 0x3840\n\t0x3840: 0x000c, 0x3841: 0x000c, 0x3842: 0x000c, 0x3845: 0x000c,\n\t0x3846: 0x000c, 0x3847: 0x000c, 0x3848: 0x000c, 0x3849: 0x000c, 0x384a: 0x000c, 0x384b: 0x000c,\n\t0x386a: 0x000c, 0x386b: 0x000c, 0x386c: 0x000c, 0x386d: 0x000c,\n\t// Block 0xe2, offset 0x3880\n\t0x38a9: 0x000a,\n\t0x38aa: 0x000a,\n\t// Block 0xe3, offset 0x38c0\n\t0x38c0: 0x000a, 0x38c1: 0x000a, 0x38c2: 0x000c, 0x38c3: 0x000c, 0x38c4: 0x000c, 0x38c5: 0x000a,\n\t// Block 0xe4, offset 0x3900\n\t0x3900: 0x000a, 0x3901: 0x000a, 0x3902: 0x000a, 0x3903: 0x000a, 0x3904: 0x000a, 0x3905: 0x000a,\n\t0x3906: 0x000a, 0x3907: 0x000a, 0x3908: 0x000a, 0x3909: 0x000a, 0x390a: 0x000a, 0x390b: 0x000a,\n\t0x390c: 0x000a, 0x390d: 0x000a, 0x390e: 0x000a, 0x390f: 0x000a, 0x3910: 0x000a, 0x3911: 0x000a,\n\t0x3912: 0x000a, 0x3913: 0x000a, 0x3914: 0x000a, 0x3915: 0x000a, 0x3916: 0x000a,\n\t// Block 0xe5, offset 0x3940\n\t0x3941: 0x000a,\n\t0x395b: 0x000a,\n\t0x397b: 0x000a,\n\t// Block 0xe6, offset 0x3980\n\t0x3995: 0x000a,\n\t0x39b5: 0x000a,\n\t// Block 0xe7, offset 0x39c0\n\t0x39cf: 0x000a,\n\t0x39ef: 0x000a,\n\t// Block 0xe8, offset 0x3a00\n\t0x3a09: 0x000a,\n\t0x3a29: 0x000a,\n\t// Block 0xe9, offset 0x3a40\n\t0x3a43: 0x000a,\n\t0x3a4e: 0x0002, 0x3a4f: 0x0002, 0x3a50: 0x0002, 0x3a51: 0x0002,\n\t0x3a52: 0x0002, 0x3a53: 0x0002, 0x3a54: 0x0002, 0x3a55: 0x0002, 0x3a56: 0x0002, 0x3a57: 0x0002,\n\t0x3a58: 0x0002, 0x3a59: 0x0002, 0x3a5a: 0x0002, 0x3a5b: 0x0002, 0x3a5c: 0x0002, 0x3a5d: 0x0002,\n\t0x3a5e: 0x0002, 0x3a5f: 0x0002, 0x3a60: 0x0002, 0x3a61: 0x0002, 0x3a62: 0x0002, 0x3a63: 0x0002,\n\t0x3a64: 0x0002, 0x3a65: 0x0002, 0x3a66: 0x0002, 0x3a67: 0x0002, 0x3a68: 0x0002, 0x3a69: 0x0002,\n\t0x3a6a: 0x0002, 0x3a6b: 0x0002, 0x3a6c: 0x0002, 0x3a6d: 0x0002, 0x3a6e: 0x0002, 0x3a6f: 0x0002,\n\t0x3a70: 0x0002, 0x3a71: 0x0002, 0x3a72: 0x0002, 0x3a73: 0x0002, 0x3a74: 0x0002, 0x3a75: 0x0002,\n\t0x3a76: 0x0002, 0x3a77: 0x0002, 0x3a78: 0x0002, 0x3a79: 0x0002, 0x3a7a: 0x0002, 0x3a7b: 0x0002,\n\t0x3a7c: 0x0002, 0x3a7d: 0x0002, 0x3a7e: 0x0002, 0x3a7f: 0x0002,\n\t// Block 0xea, offset 0x3a80\n\t0x3a80: 0x000c, 0x3a81: 0x000c, 0x3a82: 0x000c, 0x3a83: 0x000c, 0x3a84: 0x000c, 0x3a85: 0x000c,\n\t0x3a86: 0x000c, 0x3a87: 0x000c, 0x3a88: 0x000c, 0x3a89: 0x000c, 0x3a8a: 0x000c, 0x3a8b: 0x000c,\n\t0x3a8c: 0x000c, 0x3a8d: 0x000c, 0x3a8e: 0x000c, 0x3a8f: 0x000c, 0x3a90: 0x000c, 0x3a91: 0x000c,\n\t0x3a92: 0x000c, 0x3a93: 0x000c, 0x3a94: 0x000c, 0x3a95: 0x000c, 0x3a96: 0x000c, 0x3a97: 0x000c,\n\t0x3a98: 0x000c, 0x3a99: 0x000c, 0x3a9a: 0x000c, 0x3a9b: 0x000c, 0x3a9c: 0x000c, 0x3a9d: 0x000c,\n\t0x3a9e: 0x000c, 0x3a9f: 0x000c, 0x3aa0: 0x000c, 0x3aa1: 0x000c, 0x3aa2: 0x000c, 0x3aa3: 0x000c,\n\t0x3aa4: 0x000c, 0x3aa5: 0x000c, 0x3aa6: 0x000c, 0x3aa7: 0x000c, 0x3aa8: 0x000c, 0x3aa9: 0x000c,\n\t0x3aaa: 0x000c, 0x3aab: 0x000c, 0x3aac: 0x000c, 0x3aad: 0x000c, 0x3aae: 0x000c, 0x3aaf: 0x000c,\n\t0x3ab0: 0x000c, 0x3ab1: 0x000c, 0x3ab2: 0x000c, 0x3ab3: 0x000c, 0x3ab4: 0x000c, 0x3ab5: 0x000c,\n\t0x3ab6: 0x000c, 0x3abb: 0x000c,\n\t0x3abc: 0x000c, 0x3abd: 0x000c, 0x3abe: 0x000c, 0x3abf: 0x000c,\n\t// Block 0xeb, offset 0x3ac0\n\t0x3ac0: 0x000c, 0x3ac1: 0x000c, 0x3ac2: 0x000c, 0x3ac3: 0x000c, 0x3ac4: 0x000c, 0x3ac5: 0x000c,\n\t0x3ac6: 0x000c, 0x3ac7: 0x000c, 0x3ac8: 0x000c, 0x3ac9: 0x000c, 0x3aca: 0x000c, 0x3acb: 0x000c,\n\t0x3acc: 0x000c, 0x3acd: 0x000c, 0x3ace: 0x000c, 0x3acf: 0x000c, 0x3ad0: 0x000c, 0x3ad1: 0x000c,\n\t0x3ad2: 0x000c, 0x3ad3: 0x000c, 0x3ad4: 0x000c, 0x3ad5: 0x000c, 0x3ad6: 0x000c, 0x3ad7: 0x000c,\n\t0x3ad8: 0x000c, 0x3ad9: 0x000c, 0x3ada: 0x000c, 0x3adb: 0x000c, 0x3adc: 0x000c, 0x3add: 0x000c,\n\t0x3ade: 0x000c, 0x3adf: 0x000c, 0x3ae0: 0x000c, 0x3ae1: 0x000c, 0x3ae2: 0x000c, 0x3ae3: 0x000c,\n\t0x3ae4: 0x000c, 0x3ae5: 0x000c, 0x3ae6: 0x000c, 0x3ae7: 0x000c, 0x3ae8: 0x000c, 0x3ae9: 0x000c,\n\t0x3aea: 0x000c, 0x3aeb: 0x000c, 0x3aec: 0x000c,\n\t0x3af5: 0x000c,\n\t// Block 0xec, offset 0x3b00\n\t0x3b04: 0x000c,\n\t0x3b1b: 0x000c, 0x3b1c: 0x000c, 0x3b1d: 0x000c,\n\t0x3b1e: 0x000c, 0x3b1f: 0x000c, 0x3b21: 0x000c, 0x3b22: 0x000c, 0x3b23: 0x000c,\n\t0x3b24: 0x000c, 0x3b25: 0x000c, 0x3b26: 0x000c, 0x3b27: 0x000c, 0x3b28: 0x000c, 0x3b29: 0x000c,\n\t0x3b2a: 0x000c, 0x3b2b: 0x000c, 0x3b2c: 0x000c, 0x3b2d: 0x000c, 0x3b2e: 0x000c, 0x3b2f: 0x000c,\n\t// Block 0xed, offset 0x3b40\n\t0x3b40: 0x000c, 0x3b41: 0x000c, 0x3b42: 0x000c, 0x3b43: 0x000c, 0x3b44: 0x000c, 0x3b45: 0x000c,\n\t0x3b46: 0x000c, 0x3b48: 0x000c, 0x3b49: 0x000c, 0x3b4a: 0x000c, 0x3b4b: 0x000c,\n\t0x3b4c: 0x000c, 0x3b4d: 0x000c, 0x3b4e: 0x000c, 0x3b4f: 0x000c, 0x3b50: 0x000c, 0x3b51: 0x000c,\n\t0x3b52: 0x000c, 0x3b53: 0x000c, 0x3b54: 0x000c, 0x3b55: 0x000c, 0x3b56: 0x000c, 0x3b57: 0x000c,\n\t0x3b58: 0x000c, 0x3b5b: 0x000c, 0x3b5c: 0x000c, 0x3b5d: 0x000c,\n\t0x3b5e: 0x000c, 0x3b5f: 0x000c, 0x3b60: 0x000c, 0x3b61: 0x000c, 0x3b63: 0x000c,\n\t0x3b64: 0x000c, 0x3b66: 0x000c, 0x3b67: 0x000c, 0x3b68: 0x000c, 0x3b69: 0x000c,\n\t0x3b6a: 0x000c,\n\t// Block 0xee, offset 0x3b80\n\t0x3bae: 0x000c,\n\t// Block 0xef, offset 0x3bc0\n\t0x3bec: 0x000c, 0x3bed: 0x000c, 0x3bee: 0x000c, 0x3bef: 0x000c,\n\t0x3bff: 0x0004,\n\t// Block 0xf0, offset 0x3c00\n\t0x3c2c: 0x000c, 0x3c2d: 0x000c, 0x3c2e: 0x000c, 0x3c2f: 0x000c,\n\t// Block 0xf1, offset 0x3c40\n\t0x3c6e: 0x000c, 0x3c6f: 0x000c,\n\t// Block 0xf2, offset 0x3c80\n\t0x3ca3: 0x000c,\n\t0x3ca6: 0x000c,\n\t0x3cae: 0x000c, 0x3caf: 0x000c,\n\t0x3cb5: 0x000c,\n\t// Block 0xf3, offset 0x3cc0\n\t0x3cc0: 0x0001, 0x3cc1: 0x0001, 0x3cc2: 0x0001, 0x3cc3: 0x0001, 0x3cc4: 0x0001, 0x3cc5: 0x0001,\n\t0x3cc6: 0x0001, 0x3cc7: 0x0001, 0x3cc8: 0x0001, 0x3cc9: 0x0001, 0x3cca: 0x0001, 0x3ccb: 0x0001,\n\t0x3ccc: 0x0001, 0x3ccd: 0x0001, 0x3cce: 0x0001, 0x3ccf: 0x0001, 0x3cd0: 0x000c, 0x3cd1: 0x000c,\n\t0x3cd2: 0x000c, 0x3cd3: 0x000c, 0x3cd4: 0x000c, 0x3cd5: 0x000c, 0x3cd6: 0x000c, 0x3cd7: 0x0001,\n\t0x3cd8: 0x0001, 0x3cd9: 0x0001, 0x3cda: 0x0001, 0x3cdb: 0x0001, 0x3cdc: 0x0001, 0x3cdd: 0x0001,\n\t0x3cde: 0x0001, 0x3cdf: 0x0001, 0x3ce0: 0x0001, 0x3ce1: 0x0001, 0x3ce2: 0x0001, 0x3ce3: 0x0001,\n\t0x3ce4: 0x0001, 0x3ce5: 0x0001, 0x3ce6: 0x0001, 0x3ce7: 0x0001, 0x3ce8: 0x0001, 0x3ce9: 0x0001,\n\t0x3cea: 0x0001, 0x3ceb: 0x0001, 0x3cec: 0x0001, 0x3ced: 0x0001, 0x3cee: 0x0001, 0x3cef: 0x0001,\n\t0x3cf0: 0x0001, 0x3cf1: 0x0001, 0x3cf2: 0x0001, 0x3cf3: 0x0001, 0x3cf4: 0x0001, 0x3cf5: 0x0001,\n\t0x3cf6: 0x0001, 0x3cf7: 0x0001, 0x3cf8: 0x0001, 0x3cf9: 0x0001, 0x3cfa: 0x0001, 0x3cfb: 0x0001,\n\t0x3cfc: 0x0001, 0x3cfd: 0x0001, 0x3cfe: 0x0001, 0x3cff: 0x0001,\n\t// Block 0xf4, offset 0x3d00\n\t0x3d00: 0x0001, 0x3d01: 0x0001, 0x3d02: 0x0001, 0x3d03: 0x0001, 0x3d04: 0x000c, 0x3d05: 0x000c,\n\t0x3d06: 0x000c, 0x3d07: 0x000c, 0x3d08: 0x000c, 0x3d09: 0x000c, 0x3d0a: 0x000c, 0x3d0b: 0x0001,\n\t0x3d0c: 0x0001, 0x3d0d: 0x0001, 0x3d0e: 0x0001, 0x3d0f: 0x0001, 0x3d10: 0x0001, 0x3d11: 0x0001,\n\t0x3d12: 0x0001, 0x3d13: 0x0001, 0x3d14: 0x0001, 0x3d15: 0x0001, 0x3d16: 0x0001, 0x3d17: 0x0001,\n\t0x3d18: 0x0001, 0x3d19: 0x0001, 0x3d1a: 0x0001, 0x3d1b: 0x0001, 0x3d1c: 0x0001, 0x3d1d: 0x0001,\n\t0x3d1e: 0x0001, 0x3d1f: 0x0001, 0x3d20: 0x0001, 0x3d21: 0x0001, 0x3d22: 0x0001, 0x3d23: 0x0001,\n\t0x3d24: 0x0001, 0x3d25: 0x0001, 0x3d26: 0x0001, 0x3d27: 0x0001, 0x3d28: 0x0001, 0x3d29: 0x0001,\n\t0x3d2a: 0x0001, 0x3d2b: 0x0001, 0x3d2c: 0x0001, 0x3d2d: 0x0001, 0x3d2e: 0x0001, 0x3d2f: 0x0001,\n\t0x3d30: 0x0001, 0x3d31: 0x0001, 0x3d32: 0x0001, 0x3d33: 0x0001, 0x3d34: 0x0001, 0x3d35: 0x0001,\n\t0x3d36: 0x0001, 0x3d37: 0x0001, 0x3d38: 0x0001, 0x3d39: 0x0001, 0x3d3a: 0x0001, 0x3d3b: 0x0001,\n\t0x3d3c: 0x0001, 0x3d3d: 0x0001, 0x3d3e: 0x0001, 0x3d3f: 0x0001,\n\t// Block 0xf5, offset 0x3d40\n\t0x3d40: 0x0001, 0x3d41: 0x0001, 0x3d42: 0x0001, 0x3d43: 0x0001, 0x3d44: 0x0001, 0x3d45: 0x0001,\n\t0x3d46: 0x0001, 0x3d47: 0x0001, 0x3d48: 0x0001, 0x3d49: 0x0001, 0x3d4a: 0x0001, 0x3d4b: 0x0001,\n\t0x3d4c: 0x0001, 0x3d4d: 0x0001, 0x3d4e: 0x0001, 0x3d4f: 0x0001, 0x3d50: 0x0001, 0x3d51: 0x0001,\n\t0x3d52: 0x0001, 0x3d53: 0x0001, 0x3d54: 0x0001, 0x3d55: 0x0001, 0x3d56: 0x0001, 0x3d57: 0x0001,\n\t0x3d58: 0x0001, 0x3d59: 0x0001, 0x3d5a: 0x0001, 0x3d5b: 0x0001, 0x3d5c: 0x0001, 0x3d5d: 0x0001,\n\t0x3d5e: 0x0001, 0x3d5f: 0x0001, 0x3d60: 0x0001, 0x3d61: 0x0001, 0x3d62: 0x0001, 0x3d63: 0x0001,\n\t0x3d64: 0x0001, 0x3d65: 0x0001, 0x3d66: 0x0001, 0x3d67: 0x0001, 0x3d68: 0x0001, 0x3d69: 0x0001,\n\t0x3d6a: 0x0001, 0x3d6b: 0x0001, 0x3d6c: 0x0001, 0x3d6d: 0x0001, 0x3d6e: 0x0001, 0x3d6f: 0x0001,\n\t0x3d70: 0x0001, 0x3d71: 0x000d, 0x3d72: 0x000d, 0x3d73: 0x000d, 0x3d74: 0x000d, 0x3d75: 0x000d,\n\t0x3d76: 0x000d, 0x3d77: 0x000d, 0x3d78: 0x000d, 0x3d79: 0x000d, 0x3d7a: 0x000d, 0x3d7b: 0x000d,\n\t0x3d7c: 0x000d, 0x3d7d: 0x000d, 0x3d7e: 0x000d, 0x3d7f: 0x000d,\n\t// Block 0xf6, offset 0x3d80\n\t0x3d80: 0x000d, 0x3d81: 0x000d, 0x3d82: 0x000d, 0x3d83: 0x000d, 0x3d84: 0x000d, 0x3d85: 0x000d,\n\t0x3d86: 0x000d, 0x3d87: 0x000d, 0x3d88: 0x000d, 0x3d89: 0x000d, 0x3d8a: 0x000d, 0x3d8b: 0x000d,\n\t0x3d8c: 0x000d, 0x3d8d: 0x000d, 0x3d8e: 0x000d, 0x3d8f: 0x000d, 0x3d90: 0x000d, 0x3d91: 0x000d,\n\t0x3d92: 0x000d, 0x3d93: 0x000d, 0x3d94: 0x000d, 0x3d95: 0x000d, 0x3d96: 0x000d, 0x3d97: 0x000d,\n\t0x3d98: 0x000d, 0x3d99: 0x000d, 0x3d9a: 0x000d, 0x3d9b: 0x000d, 0x3d9c: 0x000d, 0x3d9d: 0x000d,\n\t0x3d9e: 0x000d, 0x3d9f: 0x000d, 0x3da0: 0x000d, 0x3da1: 0x000d, 0x3da2: 0x000d, 0x3da3: 0x000d,\n\t0x3da4: 0x000d, 0x3da5: 0x000d, 0x3da6: 0x000d, 0x3da7: 0x000d, 0x3da8: 0x000d, 0x3da9: 0x000d,\n\t0x3daa: 0x000d, 0x3dab: 0x000d, 0x3dac: 0x000d, 0x3dad: 0x000d, 0x3dae: 0x000d, 0x3daf: 0x000d,\n\t0x3db0: 0x000d, 0x3db1: 0x000d, 0x3db2: 0x000d, 0x3db3: 0x000d, 0x3db4: 0x000d, 0x3db5: 0x0001,\n\t0x3db6: 0x0001, 0x3db7: 0x0001, 0x3db8: 0x0001, 0x3db9: 0x0001, 0x3dba: 0x0001, 0x3dbb: 0x0001,\n\t0x3dbc: 0x0001, 0x3dbd: 0x0001, 0x3dbe: 0x0001, 0x3dbf: 0x0001,\n\t// Block 0xf7, offset 0x3dc0\n\t0x3dc0: 0x0001, 0x3dc1: 0x000d, 0x3dc2: 0x000d, 0x3dc3: 0x000d, 0x3dc4: 0x000d, 0x3dc5: 0x000d,\n\t0x3dc6: 0x000d, 0x3dc7: 0x000d, 0x3dc8: 0x000d, 0x3dc9: 0x000d, 0x3dca: 0x000d, 0x3dcb: 0x000d,\n\t0x3dcc: 0x000d, 0x3dcd: 0x000d, 0x3dce: 0x000d, 0x3dcf: 0x000d, 0x3dd0: 0x000d, 0x3dd1: 0x000d,\n\t0x3dd2: 0x000d, 0x3dd3: 0x000d, 0x3dd4: 0x000d, 0x3dd5: 0x000d, 0x3dd6: 0x000d, 0x3dd7: 0x000d,\n\t0x3dd8: 0x000d, 0x3dd9: 0x000d, 0x3dda: 0x000d, 0x3ddb: 0x000d, 0x3ddc: 0x000d, 0x3ddd: 0x000d,\n\t0x3dde: 0x000d, 0x3ddf: 0x000d, 0x3de0: 0x000d, 0x3de1: 0x000d, 0x3de2: 0x000d, 0x3de3: 0x000d,\n\t0x3de4: 0x000d, 0x3de5: 0x000d, 0x3de6: 0x000d, 0x3de7: 0x000d, 0x3de8: 0x000d, 0x3de9: 0x000d,\n\t0x3dea: 0x000d, 0x3deb: 0x000d, 0x3dec: 0x000d, 0x3ded: 0x000d, 0x3dee: 0x000d, 0x3def: 0x000d,\n\t0x3df0: 0x000d, 0x3df1: 0x000d, 0x3df2: 0x000d, 0x3df3: 0x000d, 0x3df4: 0x000d, 0x3df5: 0x000d,\n\t0x3df6: 0x000d, 0x3df7: 0x000d, 0x3df8: 0x000d, 0x3df9: 0x000d, 0x3dfa: 0x000d, 0x3dfb: 0x000d,\n\t0x3dfc: 0x000d, 0x3dfd: 0x000d, 0x3dfe: 0x0001, 0x3dff: 0x0001,\n\t// Block 0xf8, offset 0x3e00\n\t0x3e00: 0x000d, 0x3e01: 0x000d, 0x3e02: 0x000d, 0x3e03: 0x000d, 0x3e04: 0x000d, 0x3e05: 0x000d,\n\t0x3e06: 0x000d, 0x3e07: 0x000d, 0x3e08: 0x000d, 0x3e09: 0x000d, 0x3e0a: 0x000d, 0x3e0b: 0x000d,\n\t0x3e0c: 0x000d, 0x3e0d: 0x000d, 0x3e0e: 0x000d, 0x3e0f: 0x000d, 0x3e10: 0x000d, 0x3e11: 0x000d,\n\t0x3e12: 0x000d, 0x3e13: 0x000d, 0x3e14: 0x000d, 0x3e15: 0x000d, 0x3e16: 0x000d, 0x3e17: 0x000d,\n\t0x3e18: 0x000d, 0x3e19: 0x000d, 0x3e1a: 0x000d, 0x3e1b: 0x000d, 0x3e1c: 0x000d, 0x3e1d: 0x000d,\n\t0x3e1e: 0x000d, 0x3e1f: 0x000d, 0x3e20: 0x000d, 0x3e21: 0x000d, 0x3e22: 0x000d, 0x3e23: 0x000d,\n\t0x3e24: 0x000d, 0x3e25: 0x000d, 0x3e26: 0x000d, 0x3e27: 0x000d, 0x3e28: 0x000d, 0x3e29: 0x000d,\n\t0x3e2a: 0x000d, 0x3e2b: 0x000d, 0x3e2c: 0x000d, 0x3e2d: 0x000d, 0x3e2e: 0x000d, 0x3e2f: 0x000d,\n\t0x3e30: 0x000a, 0x3e31: 0x000a, 0x3e32: 0x000d, 0x3e33: 0x000d, 0x3e34: 0x000d, 0x3e35: 0x000d,\n\t0x3e36: 0x000d, 0x3e37: 0x000d, 0x3e38: 0x000d, 0x3e39: 0x000d, 0x3e3a: 0x000d, 0x3e3b: 0x000d,\n\t0x3e3c: 0x000d, 0x3e3d: 0x000d, 0x3e3e: 0x000d, 0x3e3f: 0x000d,\n\t// Block 0xf9, offset 0x3e40\n\t0x3e40: 0x000a, 0x3e41: 0x000a, 0x3e42: 0x000a, 0x3e43: 0x000a, 0x3e44: 0x000a, 0x3e45: 0x000a,\n\t0x3e46: 0x000a, 0x3e47: 0x000a, 0x3e48: 0x000a, 0x3e49: 0x000a, 0x3e4a: 0x000a, 0x3e4b: 0x000a,\n\t0x3e4c: 0x000a, 0x3e4d: 0x000a, 0x3e4e: 0x000a, 0x3e4f: 0x000a, 0x3e50: 0x000a, 0x3e51: 0x000a,\n\t0x3e52: 0x000a, 0x3e53: 0x000a, 0x3e54: 0x000a, 0x3e55: 0x000a, 0x3e56: 0x000a, 0x3e57: 0x000a,\n\t0x3e58: 0x000a, 0x3e59: 0x000a, 0x3e5a: 0x000a, 0x3e5b: 0x000a, 0x3e5c: 0x000a, 0x3e5d: 0x000a,\n\t0x3e5e: 0x000a, 0x3e5f: 0x000a, 0x3e60: 0x000a, 0x3e61: 0x000a, 0x3e62: 0x000a, 0x3e63: 0x000a,\n\t0x3e64: 0x000a, 0x3e65: 0x000a, 0x3e66: 0x000a, 0x3e67: 0x000a, 0x3e68: 0x000a, 0x3e69: 0x000a,\n\t0x3e6a: 0x000a, 0x3e6b: 0x000a,\n\t0x3e70: 0x000a, 0x3e71: 0x000a, 0x3e72: 0x000a, 0x3e73: 0x000a, 0x3e74: 0x000a, 0x3e75: 0x000a,\n\t0x3e76: 0x000a, 0x3e77: 0x000a, 0x3e78: 0x000a, 0x3e79: 0x000a, 0x3e7a: 0x000a, 0x3e7b: 0x000a,\n\t0x3e7c: 0x000a, 0x3e7d: 0x000a, 0x3e7e: 0x000a, 0x3e7f: 0x000a,\n\t// Block 0xfa, offset 0x3e80\n\t0x3e80: 0x000a, 0x3e81: 0x000a, 0x3e82: 0x000a, 0x3e83: 0x000a, 0x3e84: 0x000a, 0x3e85: 0x000a,\n\t0x3e86: 0x000a, 0x3e87: 0x000a, 0x3e88: 0x000a, 0x3e89: 0x000a, 0x3e8a: 0x000a, 0x3e8b: 0x000a,\n\t0x3e8c: 0x000a, 0x3e8d: 0x000a, 0x3e8e: 0x000a, 0x3e8f: 0x000a, 0x3e90: 0x000a, 0x3e91: 0x000a,\n\t0x3e92: 0x000a, 0x3e93: 0x000a,\n\t0x3ea0: 0x000a, 0x3ea1: 0x000a, 0x3ea2: 0x000a, 0x3ea3: 0x000a,\n\t0x3ea4: 0x000a, 0x3ea5: 0x000a, 0x3ea6: 0x000a, 0x3ea7: 0x000a, 0x3ea8: 0x000a, 0x3ea9: 0x000a,\n\t0x3eaa: 0x000a, 0x3eab: 0x000a, 0x3eac: 0x000a, 0x3ead: 0x000a, 0x3eae: 0x000a,\n\t0x3eb1: 0x000a, 0x3eb2: 0x000a, 0x3eb3: 0x000a, 0x3eb4: 0x000a, 0x3eb5: 0x000a,\n\t0x3eb6: 0x000a, 0x3eb7: 0x000a, 0x3eb8: 0x000a, 0x3eb9: 0x000a, 0x3eba: 0x000a, 0x3ebb: 0x000a,\n\t0x3ebc: 0x000a, 0x3ebd: 0x000a, 0x3ebe: 0x000a, 0x3ebf: 0x000a,\n\t// Block 0xfb, offset 0x3ec0\n\t0x3ec1: 0x000a, 0x3ec2: 0x000a, 0x3ec3: 0x000a, 0x3ec4: 0x000a, 0x3ec5: 0x000a,\n\t0x3ec6: 0x000a, 0x3ec7: 0x000a, 0x3ec8: 0x000a, 0x3ec9: 0x000a, 0x3eca: 0x000a, 0x3ecb: 0x000a,\n\t0x3ecc: 0x000a, 0x3ecd: 0x000a, 0x3ece: 0x000a, 0x3ecf: 0x000a, 0x3ed1: 0x000a,\n\t0x3ed2: 0x000a, 0x3ed3: 0x000a, 0x3ed4: 0x000a, 0x3ed5: 0x000a, 0x3ed6: 0x000a, 0x3ed7: 0x000a,\n\t0x3ed8: 0x000a, 0x3ed9: 0x000a, 0x3eda: 0x000a, 0x3edb: 0x000a, 0x3edc: 0x000a, 0x3edd: 0x000a,\n\t0x3ede: 0x000a, 0x3edf: 0x000a, 0x3ee0: 0x000a, 0x3ee1: 0x000a, 0x3ee2: 0x000a, 0x3ee3: 0x000a,\n\t0x3ee4: 0x000a, 0x3ee5: 0x000a, 0x3ee6: 0x000a, 0x3ee7: 0x000a, 0x3ee8: 0x000a, 0x3ee9: 0x000a,\n\t0x3eea: 0x000a, 0x3eeb: 0x000a, 0x3eec: 0x000a, 0x3eed: 0x000a, 0x3eee: 0x000a, 0x3eef: 0x000a,\n\t0x3ef0: 0x000a, 0x3ef1: 0x000a, 0x3ef2: 0x000a, 0x3ef3: 0x000a, 0x3ef4: 0x000a, 0x3ef5: 0x000a,\n\t// Block 0xfc, offset 0x3f00\n\t0x3f00: 0x0002, 0x3f01: 0x0002, 0x3f02: 0x0002, 0x3f03: 0x0002, 0x3f04: 0x0002, 0x3f05: 0x0002,\n\t0x3f06: 0x0002, 0x3f07: 0x0002, 0x3f08: 0x0002, 0x3f09: 0x0002, 0x3f0a: 0x0002, 0x3f0b: 0x000a,\n\t0x3f0c: 0x000a, 0x3f0d: 0x000a, 0x3f0e: 0x000a, 0x3f0f: 0x000a,\n\t0x3f2f: 0x000a,\n\t// Block 0xfd, offset 0x3f40\n\t0x3f6a: 0x000a, 0x3f6b: 0x000a, 0x3f6c: 0x000a, 0x3f6d: 0x000a, 0x3f6e: 0x000a, 0x3f6f: 0x000a,\n\t// Block 0xfe, offset 0x3f80\n\t0x3fad: 0x000a,\n\t// Block 0xff, offset 0x3fc0\n\t0x3fe0: 0x000a, 0x3fe1: 0x000a, 0x3fe2: 0x000a, 0x3fe3: 0x000a,\n\t0x3fe4: 0x000a, 0x3fe5: 0x000a,\n\t// Block 0x100, offset 0x4000\n\t0x4000: 0x000a, 0x4001: 0x000a, 0x4002: 0x000a, 0x4003: 0x000a, 0x4004: 0x000a, 0x4005: 0x000a,\n\t0x4006: 0x000a, 0x4007: 0x000a, 0x4008: 0x000a, 0x4009: 0x000a, 0x400a: 0x000a, 0x400b: 0x000a,\n\t0x400c: 0x000a, 0x400d: 0x000a, 0x400e: 0x000a, 0x400f: 0x000a, 0x4010: 0x000a, 0x4011: 0x000a,\n\t0x4012: 0x000a, 0x4013: 0x000a, 0x4014: 0x000a, 0x4015: 0x000a, 0x4016: 0x000a, 0x4017: 0x000a,\n\t0x4018: 0x000a, 0x401c: 0x000a, 0x401d: 0x000a,\n\t0x401e: 0x000a, 0x401f: 0x000a, 0x4020: 0x000a, 0x4021: 0x000a, 0x4022: 0x000a, 0x4023: 0x000a,\n\t0x4024: 0x000a, 0x4025: 0x000a, 0x4026: 0x000a, 0x4027: 0x000a, 0x4028: 0x000a, 0x4029: 0x000a,\n\t0x402a: 0x000a, 0x402b: 0x000a, 0x402c: 0x000a,\n\t0x4030: 0x000a, 0x4031: 0x000a, 0x4032: 0x000a, 0x4033: 0x000a, 0x4034: 0x000a, 0x4035: 0x000a,\n\t0x4036: 0x000a, 0x4037: 0x000a, 0x4038: 0x000a, 0x4039: 0x000a, 0x403a: 0x000a, 0x403b: 0x000a,\n\t0x403c: 0x000a,\n\t// Block 0x101, offset 0x4040\n\t0x4040: 0x000a, 0x4041: 0x000a, 0x4042: 0x000a, 0x4043: 0x000a, 0x4044: 0x000a, 0x4045: 0x000a,\n\t0x4046: 0x000a, 0x4047: 0x000a, 0x4048: 0x000a, 0x4049: 0x000a, 0x404a: 0x000a, 0x404b: 0x000a,\n\t0x404c: 0x000a, 0x404d: 0x000a, 0x404e: 0x000a, 0x404f: 0x000a, 0x4050: 0x000a, 0x4051: 0x000a,\n\t0x4052: 0x000a, 0x4053: 0x000a, 0x4054: 0x000a, 0x4055: 0x000a, 0x4056: 0x000a, 0x4057: 0x000a,\n\t0x4058: 0x000a, 0x4059: 0x000a,\n\t0x4060: 0x000a, 0x4061: 0x000a, 0x4062: 0x000a, 0x4063: 0x000a,\n\t0x4064: 0x000a, 0x4065: 0x000a, 0x4066: 0x000a, 0x4067: 0x000a, 0x4068: 0x000a, 0x4069: 0x000a,\n\t0x406a: 0x000a, 0x406b: 0x000a,\n\t0x4070: 0x000a,\n\t// Block 0x102, offset 0x4080\n\t0x4080: 0x000a, 0x4081: 0x000a, 0x4082: 0x000a, 0x4083: 0x000a, 0x4084: 0x000a, 0x4085: 0x000a,\n\t0x4086: 0x000a, 0x4087: 0x000a, 0x4088: 0x000a, 0x4089: 0x000a, 0x408a: 0x000a, 0x408b: 0x000a,\n\t0x4090: 0x000a, 0x4091: 0x000a,\n\t0x4092: 0x000a, 0x4093: 0x000a, 0x4094: 0x000a, 0x4095: 0x000a, 0x4096: 0x000a, 0x4097: 0x000a,\n\t0x4098: 0x000a, 0x4099: 0x000a, 0x409a: 0x000a, 0x409b: 0x000a, 0x409c: 0x000a, 0x409d: 0x000a,\n\t0x409e: 0x000a, 0x409f: 0x000a, 0x40a0: 0x000a, 0x40a1: 0x000a, 0x40a2: 0x000a, 0x40a3: 0x000a,\n\t0x40a4: 0x000a, 0x40a5: 0x000a, 0x40a6: 0x000a, 0x40a7: 0x000a, 0x40a8: 0x000a, 0x40a9: 0x000a,\n\t0x40aa: 0x000a, 0x40ab: 0x000a, 0x40ac: 0x000a, 0x40ad: 0x000a, 0x40ae: 0x000a, 0x40af: 0x000a,\n\t0x40b0: 0x000a, 0x40b1: 0x000a, 0x40b2: 0x000a, 0x40b3: 0x000a, 0x40b4: 0x000a, 0x40b5: 0x000a,\n\t0x40b6: 0x000a, 0x40b7: 0x000a, 0x40b8: 0x000a, 0x40b9: 0x000a, 0x40ba: 0x000a, 0x40bb: 0x000a,\n\t0x40bc: 0x000a, 0x40bd: 0x000a, 0x40be: 0x000a, 0x40bf: 0x000a,\n\t// Block 0x103, offset 0x40c0\n\t0x40c0: 0x000a, 0x40c1: 0x000a, 0x40c2: 0x000a, 0x40c3: 0x000a, 0x40c4: 0x000a, 0x40c5: 0x000a,\n\t0x40c6: 0x000a, 0x40c7: 0x000a,\n\t0x40d0: 0x000a, 0x40d1: 0x000a,\n\t0x40d2: 0x000a, 0x40d3: 0x000a, 0x40d4: 0x000a, 0x40d5: 0x000a, 0x40d6: 0x000a, 0x40d7: 0x000a,\n\t0x40d8: 0x000a, 0x40d9: 0x000a,\n\t0x40e0: 0x000a, 0x40e1: 0x000a, 0x40e2: 0x000a, 0x40e3: 0x000a,\n\t0x40e4: 0x000a, 0x40e5: 0x000a, 0x40e6: 0x000a, 0x40e7: 0x000a, 0x40e8: 0x000a, 0x40e9: 0x000a,\n\t0x40ea: 0x000a, 0x40eb: 0x000a, 0x40ec: 0x000a, 0x40ed: 0x000a, 0x40ee: 0x000a, 0x40ef: 0x000a,\n\t0x40f0: 0x000a, 0x40f1: 0x000a, 0x40f2: 0x000a, 0x40f3: 0x000a, 0x40f4: 0x000a, 0x40f5: 0x000a,\n\t0x40f6: 0x000a, 0x40f7: 0x000a, 0x40f8: 0x000a, 0x40f9: 0x000a, 0x40fa: 0x000a, 0x40fb: 0x000a,\n\t0x40fc: 0x000a, 0x40fd: 0x000a, 0x40fe: 0x000a, 0x40ff: 0x000a,\n\t// Block 0x104, offset 0x4100\n\t0x4100: 0x000a, 0x4101: 0x000a, 0x4102: 0x000a, 0x4103: 0x000a, 0x4104: 0x000a, 0x4105: 0x000a,\n\t0x4106: 0x000a, 0x4107: 0x000a,\n\t0x4110: 0x000a, 0x4111: 0x000a,\n\t0x4112: 0x000a, 0x4113: 0x000a, 0x4114: 0x000a, 0x4115: 0x000a, 0x4116: 0x000a, 0x4117: 0x000a,\n\t0x4118: 0x000a, 0x4119: 0x000a, 0x411a: 0x000a, 0x411b: 0x000a, 0x411c: 0x000a, 0x411d: 0x000a,\n\t0x411e: 0x000a, 0x411f: 0x000a, 0x4120: 0x000a, 0x4121: 0x000a, 0x4122: 0x000a, 0x4123: 0x000a,\n\t0x4124: 0x000a, 0x4125: 0x000a, 0x4126: 0x000a, 0x4127: 0x000a, 0x4128: 0x000a, 0x4129: 0x000a,\n\t0x412a: 0x000a, 0x412b: 0x000a, 0x412c: 0x000a, 0x412d: 0x000a,\n\t0x4130: 0x000a, 0x4131: 0x000a, 0x4132: 0x000a, 0x4133: 0x000a, 0x4134: 0x000a, 0x4135: 0x000a,\n\t0x4136: 0x000a, 0x4137: 0x000a, 0x4138: 0x000a, 0x4139: 0x000a, 0x413a: 0x000a, 0x413b: 0x000a,\n\t// Block 0x105, offset 0x4140\n\t0x4140: 0x000a, 0x4141: 0x000a,\n\t0x4150: 0x000a, 0x4151: 0x000a,\n\t0x4152: 0x000a, 0x4153: 0x000a, 0x4154: 0x000a, 0x4155: 0x000a, 0x4156: 0x000a, 0x4157: 0x000a,\n\t0x4158: 0x000a,\n\t// Block 0x106, offset 0x4180\n\t0x4180: 0x000a, 0x4181: 0x000a, 0x4182: 0x000a, 0x4183: 0x000a, 0x4184: 0x000a, 0x4185: 0x000a,\n\t0x4186: 0x000a, 0x4187: 0x000a, 0x4188: 0x000a, 0x4189: 0x000a, 0x418a: 0x000a, 0x418b: 0x000a,\n\t0x418c: 0x000a, 0x418d: 0x000a, 0x418e: 0x000a, 0x418f: 0x000a, 0x4190: 0x000a, 0x4191: 0x000a,\n\t0x4192: 0x000a, 0x4193: 0x000a, 0x4194: 0x000a, 0x4195: 0x000a, 0x4196: 0x000a, 0x4197: 0x000a,\n\t0x41a0: 0x000a, 0x41a1: 0x000a, 0x41a2: 0x000a, 0x41a3: 0x000a,\n\t0x41a4: 0x000a, 0x41a5: 0x000a, 0x41a6: 0x000a, 0x41a7: 0x000a, 0x41a8: 0x000a, 0x41a9: 0x000a,\n\t0x41aa: 0x000a, 0x41ab: 0x000a, 0x41ac: 0x000a, 0x41ad: 0x000a,\n\t0x41b0: 0x000a, 0x41b1: 0x000a, 0x41b2: 0x000a, 0x41b3: 0x000a, 0x41b4: 0x000a, 0x41b5: 0x000a,\n\t0x41b6: 0x000a, 0x41b7: 0x000a, 0x41b8: 0x000a, 0x41b9: 0x000a, 0x41ba: 0x000a, 0x41bb: 0x000a,\n\t0x41bc: 0x000a,\n\t// Block 0x107, offset 0x41c0\n\t0x41c0: 0x000a, 0x41c1: 0x000a, 0x41c2: 0x000a, 0x41c3: 0x000a, 0x41c4: 0x000a, 0x41c5: 0x000a,\n\t0x41c6: 0x000a, 0x41c7: 0x000a, 0x41c8: 0x000a, 0x41c9: 0x000a, 0x41ca: 0x000a,\n\t0x41ce: 0x000a, 0x41cf: 0x000a, 0x41d0: 0x000a, 0x41d1: 0x000a,\n\t0x41d2: 0x000a, 0x41d3: 0x000a, 0x41d4: 0x000a, 0x41d5: 0x000a, 0x41d6: 0x000a, 0x41d7: 0x000a,\n\t0x41d8: 0x000a, 0x41d9: 0x000a, 0x41da: 0x000a, 0x41db: 0x000a, 0x41dc: 0x000a, 0x41dd: 0x000a,\n\t0x41de: 0x000a, 0x41df: 0x000a, 0x41e0: 0x000a, 0x41e1: 0x000a, 0x41e2: 0x000a, 0x41e3: 0x000a,\n\t0x41e4: 0x000a, 0x41e5: 0x000a, 0x41e6: 0x000a, 0x41e7: 0x000a, 0x41e8: 0x000a, 0x41e9: 0x000a,\n\t0x41ea: 0x000a, 0x41eb: 0x000a, 0x41ec: 0x000a, 0x41ed: 0x000a, 0x41ee: 0x000a, 0x41ef: 0x000a,\n\t0x41f0: 0x000a, 0x41f1: 0x000a, 0x41f2: 0x000a, 0x41f3: 0x000a, 0x41f4: 0x000a, 0x41f5: 0x000a,\n\t0x41f6: 0x000a, 0x41f7: 0x000a, 0x41f8: 0x000a, 0x41f9: 0x000a, 0x41fa: 0x000a, 0x41fb: 0x000a,\n\t0x41fc: 0x000a, 0x41fd: 0x000a, 0x41fe: 0x000a, 0x41ff: 0x000a,\n\t// Block 0x108, offset 0x4200\n\t0x4200: 0x000a, 0x4201: 0x000a, 0x4202: 0x000a, 0x4203: 0x000a, 0x4204: 0x000a, 0x4205: 0x000a,\n\t0x4206: 0x000a, 0x4208: 0x000a,\n\t0x420d: 0x000a, 0x420e: 0x000a, 0x420f: 0x000a, 0x4210: 0x000a, 0x4211: 0x000a,\n\t0x4212: 0x000a, 0x4213: 0x000a, 0x4214: 0x000a, 0x4215: 0x000a, 0x4216: 0x000a, 0x4217: 0x000a,\n\t0x4218: 0x000a, 0x4219: 0x000a, 0x421a: 0x000a, 0x421b: 0x000a, 0x421c: 0x000a,\n\t0x421f: 0x000a, 0x4220: 0x000a, 0x4221: 0x000a, 0x4222: 0x000a, 0x4223: 0x000a,\n\t0x4224: 0x000a, 0x4225: 0x000a, 0x4226: 0x000a, 0x4227: 0x000a, 0x4228: 0x000a, 0x4229: 0x000a,\n\t0x422a: 0x000a, 0x422f: 0x000a,\n\t0x4230: 0x000a, 0x4231: 0x000a, 0x4232: 0x000a, 0x4233: 0x000a, 0x4234: 0x000a, 0x4235: 0x000a,\n\t0x4236: 0x000a, 0x4237: 0x000a, 0x4238: 0x000a,\n\t// Block 0x109, offset 0x4240\n\t0x4240: 0x000a, 0x4241: 0x000a, 0x4242: 0x000a, 0x4243: 0x000a, 0x4244: 0x000a, 0x4245: 0x000a,\n\t0x4246: 0x000a, 0x4247: 0x000a, 0x4248: 0x000a, 0x4249: 0x000a, 0x424a: 0x000a, 0x424b: 0x000a,\n\t0x424c: 0x000a, 0x424d: 0x000a, 0x424e: 0x000a, 0x424f: 0x000a, 0x4250: 0x000a, 0x4251: 0x000a,\n\t0x4252: 0x000a, 0x4254: 0x000a, 0x4255: 0x000a, 0x4256: 0x000a, 0x4257: 0x000a,\n\t0x4258: 0x000a, 0x4259: 0x000a, 0x425a: 0x000a, 0x425b: 0x000a, 0x425c: 0x000a, 0x425d: 0x000a,\n\t0x425e: 0x000a, 0x425f: 0x000a, 0x4260: 0x000a, 0x4261: 0x000a, 0x4262: 0x000a, 0x4263: 0x000a,\n\t0x4264: 0x000a, 0x4265: 0x000a, 0x4266: 0x000a, 0x4267: 0x000a, 0x4268: 0x000a, 0x4269: 0x000a,\n\t0x426a: 0x000a, 0x426b: 0x000a, 0x426c: 0x000a, 0x426d: 0x000a, 0x426e: 0x000a, 0x426f: 0x000a,\n\t0x4270: 0x000a, 0x4271: 0x000a, 0x4272: 0x000a, 0x4273: 0x000a, 0x4274: 0x000a, 0x4275: 0x000a,\n\t0x4276: 0x000a, 0x4277: 0x000a, 0x4278: 0x000a, 0x4279: 0x000a, 0x427a: 0x000a, 0x427b: 0x000a,\n\t0x427c: 0x000a, 0x427d: 0x000a, 0x427e: 0x000a, 0x427f: 0x000a,\n\t// Block 0x10a, offset 0x4280\n\t0x4280: 0x000a, 0x4281: 0x000a, 0x4282: 0x000a, 0x4283: 0x000a, 0x4284: 0x000a, 0x4285: 0x000a,\n\t0x4286: 0x000a, 0x4287: 0x000a, 0x4288: 0x000a, 0x4289: 0x000a, 0x428a: 0x000a, 0x428b: 0x000a,\n\t0x428c: 0x000a, 0x428d: 0x000a, 0x428e: 0x000a, 0x428f: 0x000a, 0x4290: 0x000a, 0x4291: 0x000a,\n\t0x4292: 0x000a, 0x4293: 0x000a, 0x4294: 0x000a, 0x4295: 0x000a, 0x4296: 0x000a, 0x4297: 0x000a,\n\t0x4298: 0x000a, 0x4299: 0x000a, 0x429a: 0x000a, 0x429b: 0x000a, 0x429c: 0x000a, 0x429d: 0x000a,\n\t0x429e: 0x000a, 0x429f: 0x000a, 0x42a0: 0x000a, 0x42a1: 0x000a, 0x42a2: 0x000a, 0x42a3: 0x000a,\n\t0x42a4: 0x000a, 0x42a5: 0x000a, 0x42a6: 0x000a, 0x42a7: 0x000a, 0x42a8: 0x000a, 0x42a9: 0x000a,\n\t0x42aa: 0x000a, 0x42ab: 0x000a, 0x42ac: 0x000a, 0x42ad: 0x000a, 0x42ae: 0x000a, 0x42af: 0x000a,\n\t0x42b0: 0x0002, 0x42b1: 0x0002, 0x42b2: 0x0002, 0x42b3: 0x0002, 0x42b4: 0x0002, 0x42b5: 0x0002,\n\t0x42b6: 0x0002, 0x42b7: 0x0002, 0x42b8: 0x0002, 0x42b9: 0x0002, 0x42ba: 0x000a,\n\t// Block 0x10b, offset 0x42c0\n\t0x42fe: 0x000b, 0x42ff: 0x000b,\n\t// Block 0x10c, offset 0x4300\n\t0x4300: 0x000b, 0x4301: 0x000b, 0x4302: 0x000b, 0x4303: 0x000b, 0x4304: 0x000b, 0x4305: 0x000b,\n\t0x4306: 0x000b, 0x4307: 0x000b, 0x4308: 0x000b, 0x4309: 0x000b, 0x430a: 0x000b, 0x430b: 0x000b,\n\t0x430c: 0x000b, 0x430d: 0x000b, 0x430e: 0x000b, 0x430f: 0x000b, 0x4310: 0x000b, 0x4311: 0x000b,\n\t0x4312: 0x000b, 0x4313: 0x000b, 0x4314: 0x000b, 0x4315: 0x000b, 0x4316: 0x000b, 0x4317: 0x000b,\n\t0x4318: 0x000b, 0x4319: 0x000b, 0x431a: 0x000b, 0x431b: 0x000b, 0x431c: 0x000b, 0x431d: 0x000b,\n\t0x431e: 0x000b, 0x431f: 0x000b, 0x4320: 0x000b, 0x4321: 0x000b, 0x4322: 0x000b, 0x4323: 0x000b,\n\t0x4324: 0x000b, 0x4325: 0x000b, 0x4326: 0x000b, 0x4327: 0x000b, 0x4328: 0x000b, 0x4329: 0x000b,\n\t0x432a: 0x000b, 0x432b: 0x000b, 0x432c: 0x000b, 0x432d: 0x000b, 0x432e: 0x000b, 0x432f: 0x000b,\n\t0x4330: 0x000b, 0x4331: 0x000b, 0x4332: 0x000b, 0x4333: 0x000b, 0x4334: 0x000b, 0x4335: 0x000b,\n\t0x4336: 0x000b, 0x4337: 0x000b, 0x4338: 0x000b, 0x4339: 0x000b, 0x433a: 0x000b, 0x433b: 0x000b,\n\t0x433c: 0x000b, 0x433d: 0x000b, 0x433e: 0x000b, 0x433f: 0x000b,\n\t// Block 0x10d, offset 0x4340\n\t0x4340: 0x000c, 0x4341: 0x000c, 0x4342: 0x000c, 0x4343: 0x000c, 0x4344: 0x000c, 0x4345: 0x000c,\n\t0x4346: 0x000c, 0x4347: 0x000c, 0x4348: 0x000c, 0x4349: 0x000c, 0x434a: 0x000c, 0x434b: 0x000c,\n\t0x434c: 0x000c, 0x434d: 0x000c, 0x434e: 0x000c, 0x434f: 0x000c, 0x4350: 0x000c, 0x4351: 0x000c,\n\t0x4352: 0x000c, 0x4353: 0x000c, 0x4354: 0x000c, 0x4355: 0x000c, 0x4356: 0x000c, 0x4357: 0x000c,\n\t0x4358: 0x000c, 0x4359: 0x000c, 0x435a: 0x000c, 0x435b: 0x000c, 0x435c: 0x000c, 0x435d: 0x000c,\n\t0x435e: 0x000c, 0x435f: 0x000c, 0x4360: 0x000c, 0x4361: 0x000c, 0x4362: 0x000c, 0x4363: 0x000c,\n\t0x4364: 0x000c, 0x4365: 0x000c, 0x4366: 0x000c, 0x4367: 0x000c, 0x4368: 0x000c, 0x4369: 0x000c,\n\t0x436a: 0x000c, 0x436b: 0x000c, 0x436c: 0x000c, 0x436d: 0x000c, 0x436e: 0x000c, 0x436f: 0x000c,\n\t0x4370: 0x000b, 0x4371: 0x000b, 0x4372: 0x000b, 0x4373: 0x000b, 0x4374: 0x000b, 0x4375: 0x000b,\n\t0x4376: 0x000b, 0x4377: 0x000b, 0x4378: 0x000b, 0x4379: 0x000b, 0x437a: 0x000b, 0x437b: 0x000b,\n\t0x437c: 0x000b, 0x437d: 0x000b, 0x437e: 0x000b, 0x437f: 0x000b,\n}\n\n// bidiIndex: 26 blocks, 1664 entries, 3328 bytes\n// Block 0 is the zero block.\nvar bidiIndex = [1664]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x02,\n\t0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08,\n\t0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b,\n\t0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06,\n\t0xea: 0x07, 0xef: 0x08,\n\t0xf0: 0x13, 0xf1: 0x14, 0xf2: 0x14, 0xf3: 0x16, 0xf4: 0x17,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b,\n\t0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22,\n\t0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x136: 0x28, 0x137: 0x29,\n\t0x138: 0x2a, 0x139: 0x2b, 0x13a: 0x2c, 0x13b: 0x2d, 0x13c: 0x2e, 0x13d: 0x2f, 0x13e: 0x30, 0x13f: 0x31,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x32, 0x141: 0x33, 0x142: 0x34,\n\t0x14d: 0x35, 0x14e: 0x36,\n\t0x150: 0x37,\n\t0x15a: 0x38, 0x15c: 0x39, 0x15d: 0x3a, 0x15e: 0x3b, 0x15f: 0x3c,\n\t0x160: 0x3d, 0x162: 0x3e, 0x164: 0x3f, 0x165: 0x40, 0x167: 0x41,\n\t0x168: 0x42, 0x169: 0x43, 0x16a: 0x44, 0x16b: 0x45, 0x16c: 0x46, 0x16d: 0x47, 0x16e: 0x48, 0x16f: 0x49,\n\t0x170: 0x4a, 0x173: 0x4b, 0x177: 0x05,\n\t0x17e: 0x4c, 0x17f: 0x4d,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x4e, 0x181: 0x4f, 0x182: 0x50, 0x183: 0x51, 0x184: 0x52, 0x185: 0x53, 0x186: 0x54, 0x187: 0x55,\n\t0x188: 0x56, 0x189: 0x55, 0x18a: 0x55, 0x18b: 0x55, 0x18c: 0x57, 0x18d: 0x58, 0x18e: 0x59, 0x18f: 0x55,\n\t0x190: 0x5a, 0x191: 0x5b, 0x192: 0x5c, 0x193: 0x5d, 0x194: 0x55, 0x195: 0x55, 0x196: 0x55, 0x197: 0x55,\n\t0x198: 0x55, 0x199: 0x55, 0x19a: 0x5e, 0x19b: 0x55, 0x19c: 0x55, 0x19d: 0x5f, 0x19e: 0x55, 0x19f: 0x60,\n\t0x1a4: 0x55, 0x1a5: 0x55, 0x1a6: 0x61, 0x1a7: 0x62,\n\t0x1a8: 0x55, 0x1a9: 0x55, 0x1aa: 0x55, 0x1ab: 0x55, 0x1ac: 0x55, 0x1ad: 0x63, 0x1ae: 0x55, 0x1af: 0x55,\n\t0x1b3: 0x64, 0x1b5: 0x65, 0x1b7: 0x66,\n\t0x1b8: 0x67, 0x1b9: 0x68, 0x1ba: 0x69, 0x1bb: 0x6a, 0x1bc: 0x55, 0x1bd: 0x55, 0x1be: 0x55, 0x1bf: 0x6b,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x6c, 0x1c2: 0x6d, 0x1c3: 0x6e, 0x1c7: 0x6f,\n\t0x1c8: 0x70, 0x1c9: 0x71, 0x1ca: 0x72, 0x1cb: 0x73, 0x1cd: 0x74, 0x1cf: 0x75,\n\t// Block 0x8, offset 0x200\n\t0x237: 0x55,\n\t// Block 0x9, offset 0x240\n\t0x252: 0x76, 0x253: 0x77,\n\t0x258: 0x78, 0x259: 0x79, 0x25a: 0x7a, 0x25b: 0x7b, 0x25c: 0x7c, 0x25e: 0x7d,\n\t0x260: 0x7e, 0x261: 0x7f, 0x263: 0x80, 0x264: 0x81, 0x265: 0x82, 0x266: 0x83, 0x267: 0x84,\n\t0x268: 0x85, 0x269: 0x86, 0x26a: 0x87, 0x26b: 0x88, 0x26d: 0x89, 0x26f: 0x8a,\n\t// Block 0xa, offset 0x280\n\t0x2ac: 0x8b, 0x2ad: 0x8c, 0x2ae: 0x0e, 0x2af: 0x8d,\n\t0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8e, 0x2b5: 0x8f, 0x2b6: 0x90, 0x2b7: 0x91,\n\t0x2b8: 0x92, 0x2b9: 0x93, 0x2ba: 0x0e, 0x2bb: 0x94, 0x2bc: 0x95, 0x2bd: 0x96, 0x2bf: 0x97,\n\t// Block 0xb, offset 0x2c0\n\t0x2c4: 0x98, 0x2c5: 0x55, 0x2c6: 0x99, 0x2c7: 0x9a,\n\t0x2cb: 0x9b, 0x2cd: 0x9c,\n\t0x2e0: 0x9d, 0x2e1: 0x9d, 0x2e2: 0x9d, 0x2e3: 0x9d, 0x2e4: 0x9e, 0x2e5: 0x9d, 0x2e6: 0x9d, 0x2e7: 0x9d,\n\t0x2e8: 0x9f, 0x2e9: 0x9d, 0x2ea: 0x9d, 0x2eb: 0xa0, 0x2ec: 0xa1, 0x2ed: 0x9d, 0x2ee: 0x9d, 0x2ef: 0x9d,\n\t0x2f0: 0x9d, 0x2f1: 0x9d, 0x2f2: 0x9d, 0x2f3: 0x9d, 0x2f4: 0xa2, 0x2f5: 0xa3, 0x2f6: 0x9d, 0x2f7: 0x9d,\n\t0x2f8: 0x9d, 0x2f9: 0xa4, 0x2fa: 0xa5, 0x2fb: 0xa6, 0x2fc: 0xa7, 0x2fd: 0xa8, 0x2fe: 0xa9, 0x2ff: 0x9d,\n\t// Block 0xc, offset 0x300\n\t0x300: 0xaa, 0x301: 0xab, 0x302: 0xac, 0x303: 0x21, 0x304: 0xad, 0x305: 0xae, 0x306: 0xaf, 0x307: 0xb0,\n\t0x308: 0xb1, 0x309: 0x28, 0x30b: 0xb2, 0x30c: 0x26, 0x30d: 0xb3, 0x30e: 0xb4, 0x30f: 0xb5,\n\t0x310: 0xb6, 0x311: 0xb7, 0x312: 0xb8, 0x313: 0xb9, 0x316: 0xba, 0x317: 0xbb,\n\t0x318: 0xbc, 0x319: 0xbd, 0x31a: 0xbe, 0x31c: 0xbf,\n\t0x320: 0xc0, 0x324: 0xc1, 0x325: 0xc2, 0x327: 0xc3,\n\t0x328: 0xc4, 0x329: 0xc5, 0x32a: 0xc6, 0x32d: 0xc7,\n\t0x330: 0xc8, 0x332: 0xc9, 0x334: 0xca, 0x335: 0xcb, 0x336: 0xcc,\n\t0x33b: 0xcd, 0x33c: 0xce, 0x33d: 0xcf, 0x33f: 0xd0,\n\t// Block 0xd, offset 0x340\n\t0x351: 0xd1,\n\t// Block 0xe, offset 0x380\n\t0x384: 0xd2,\n\t0x3ab: 0xd3, 0x3ac: 0xd4,\n\t0x3bd: 0xd5, 0x3be: 0xd6, 0x3bf: 0xd7,\n\t// Block 0xf, offset 0x3c0\n\t0x3f2: 0xd8,\n\t// Block 0x10, offset 0x400\n\t0x430: 0x55, 0x431: 0x55, 0x432: 0x55, 0x433: 0xd9, 0x434: 0x55, 0x435: 0x55, 0x436: 0x55, 0x437: 0x55,\n\t0x438: 0x55, 0x439: 0x55, 0x43a: 0xda, 0x43b: 0xdb, 0x43c: 0xdc, 0x43d: 0xdd,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xde, 0x446: 0xdf, 0x447: 0xe0,\n\t0x448: 0x55, 0x449: 0xe1, 0x44c: 0x55, 0x44d: 0xe2,\n\t0x45b: 0xe3, 0x45c: 0xe4, 0x45d: 0xe5, 0x45e: 0xe6, 0x45f: 0xe7,\n\t0x468: 0xe8, 0x469: 0xe9, 0x46a: 0xea,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xeb, 0x482: 0xd5, 0x484: 0xd4,\n\t0x48a: 0xec, 0x48b: 0xed,\n\t0x493: 0xee, 0x497: 0xef,\n\t0x49b: 0xf0,\n\t0x4a0: 0x9d, 0x4a1: 0x9d, 0x4a2: 0x9d, 0x4a3: 0xf1, 0x4a4: 0x9d, 0x4a5: 0xf2, 0x4a6: 0x9d, 0x4a7: 0x9d,\n\t0x4a8: 0x9d, 0x4a9: 0x9d, 0x4aa: 0x9d, 0x4ab: 0x9d, 0x4ac: 0x9d, 0x4ad: 0x9d, 0x4ae: 0x9d, 0x4af: 0x9d,\n\t0x4b0: 0x9d, 0x4b1: 0xf3, 0x4b2: 0xf4, 0x4b3: 0x9d, 0x4b4: 0xf5, 0x4b5: 0x9d, 0x4b6: 0x9d, 0x4b7: 0x9d,\n\t0x4b8: 0x0e, 0x4b9: 0x0e, 0x4ba: 0x0e, 0x4bb: 0xf6, 0x4bc: 0x9d, 0x4bd: 0x9d, 0x4be: 0x9d, 0x4bf: 0x9d,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0xf7, 0x4c1: 0x55, 0x4c2: 0xf8, 0x4c3: 0xf9, 0x4c4: 0xfa, 0x4c5: 0xfb, 0x4c6: 0xfc,\n\t0x4c9: 0xfd, 0x4cc: 0x55, 0x4cd: 0x55, 0x4ce: 0x55, 0x4cf: 0x55,\n\t0x4d0: 0x55, 0x4d1: 0x55, 0x4d2: 0x55, 0x4d3: 0x55, 0x4d4: 0x55, 0x4d5: 0x55, 0x4d6: 0x55, 0x4d7: 0x55,\n\t0x4d8: 0x55, 0x4d9: 0x55, 0x4da: 0x55, 0x4db: 0xfe, 0x4dc: 0x55, 0x4dd: 0x55, 0x4de: 0x55, 0x4df: 0xff,\n\t0x4e0: 0x100, 0x4e1: 0x101, 0x4e2: 0x102, 0x4e3: 0x103, 0x4e4: 0x55, 0x4e5: 0x55, 0x4e6: 0x55, 0x4e7: 0x55,\n\t0x4e8: 0x55, 0x4e9: 0x104, 0x4ea: 0x105, 0x4eb: 0x106, 0x4ec: 0x55, 0x4ed: 0x55, 0x4ee: 0x107, 0x4ef: 0x108,\n\t0x4ff: 0x109,\n\t// Block 0x14, offset 0x500\n\t0x53f: 0x109,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x09, 0x551: 0x0a, 0x553: 0x0b, 0x556: 0x0c,\n\t0x55b: 0x0d, 0x55c: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n\t0x57f: 0x12,\n\t// Block 0x16, offset 0x580\n\t0x58f: 0x12,\n\t0x59f: 0x12,\n\t0x5af: 0x12,\n\t0x5bf: 0x12,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x10a, 0x5c1: 0x10a, 0x5c2: 0x10a, 0x5c3: 0x10a, 0x5c4: 0x05, 0x5c5: 0x05, 0x5c6: 0x05, 0x5c7: 0x10b,\n\t0x5c8: 0x10a, 0x5c9: 0x10a, 0x5ca: 0x10a, 0x5cb: 0x10a, 0x5cc: 0x10a, 0x5cd: 0x10a, 0x5ce: 0x10a, 0x5cf: 0x10a,\n\t0x5d0: 0x10a, 0x5d1: 0x10a, 0x5d2: 0x10a, 0x5d3: 0x10a, 0x5d4: 0x10a, 0x5d5: 0x10a, 0x5d6: 0x10a, 0x5d7: 0x10a,\n\t0x5d8: 0x10a, 0x5d9: 0x10a, 0x5da: 0x10a, 0x5db: 0x10a, 0x5dc: 0x10a, 0x5dd: 0x10a, 0x5de: 0x10a, 0x5df: 0x10a,\n\t0x5e0: 0x10a, 0x5e1: 0x10a, 0x5e2: 0x10a, 0x5e3: 0x10a, 0x5e4: 0x10a, 0x5e5: 0x10a, 0x5e6: 0x10a, 0x5e7: 0x10a,\n\t0x5e8: 0x10a, 0x5e9: 0x10a, 0x5ea: 0x10a, 0x5eb: 0x10a, 0x5ec: 0x10a, 0x5ed: 0x10a, 0x5ee: 0x10a, 0x5ef: 0x10a,\n\t0x5f0: 0x10a, 0x5f1: 0x10a, 0x5f2: 0x10a, 0x5f3: 0x10a, 0x5f4: 0x10a, 0x5f5: 0x10a, 0x5f6: 0x10a, 0x5f7: 0x10a,\n\t0x5f8: 0x10a, 0x5f9: 0x10a, 0x5fa: 0x10a, 0x5fb: 0x10a, 0x5fc: 0x10a, 0x5fd: 0x10a, 0x5fe: 0x10a, 0x5ff: 0x10a,\n\t// Block 0x18, offset 0x600\n\t0x60f: 0x12,\n\t0x61f: 0x12,\n\t0x620: 0x15,\n\t0x62f: 0x12,\n\t0x63f: 0x12,\n\t// Block 0x19, offset 0x640\n\t0x64f: 0x12,\n}\n\n// Total table size 20664 bytes (20KiB); checksum: F50EF68C\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/trieval.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage bidi\n\n// Class is the Unicode BiDi class. Each rune has a single class.\ntype Class uint\n\nconst (\n\tL       Class = iota // LeftToRight\n\tR                    // RightToLeft\n\tEN                   // EuropeanNumber\n\tES                   // EuropeanSeparator\n\tET                   // EuropeanTerminator\n\tAN                   // ArabicNumber\n\tCS                   // CommonSeparator\n\tB                    // ParagraphSeparator\n\tS                    // SegmentSeparator\n\tWS                   // WhiteSpace\n\tON                   // OtherNeutral\n\tBN                   // BoundaryNeutral\n\tNSM                  // NonspacingMark\n\tAL                   // ArabicLetter\n\tControl              // Control LRO - PDI\n\n\tnumClass\n\n\tLRO // LeftToRightOverride\n\tRLO // RightToLeftOverride\n\tLRE // LeftToRightEmbedding\n\tRLE // RightToLeftEmbedding\n\tPDF // PopDirectionalFormat\n\tLRI // LeftToRightIsolate\n\tRLI // RightToLeftIsolate\n\tFSI // FirstStrongIsolate\n\tPDI // PopDirectionalIsolate\n\n\tunknownClass = ^Class(0)\n)\n\n// A trie entry has the following bits:\n// 7..5  XOR mask for brackets\n// 4     1: Bracket open, 0: Bracket close\n// 3..0  Class type\n\nconst (\n\topenMask     = 0x10\n\txorMaskShift = 5\n)\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/composition.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport \"unicode/utf8\"\n\nconst (\n\tmaxNonStarters = 30\n\t// The maximum number of characters needed for a buffer is\n\t// maxNonStarters + 1 for the starter + 1 for the GCJ\n\tmaxBufferSize    = maxNonStarters + 2\n\tmaxNFCExpansion  = 3  // NFC(0x1D160)\n\tmaxNFKCExpansion = 18 // NFKC(0xFDFA)\n\n\tmaxByteBufferSize = utf8.UTFMax * maxBufferSize // 128\n)\n\n// ssState is used for reporting the segment state after inserting a rune.\n// It is returned by streamSafe.next.\ntype ssState int\n\nconst (\n\t// Indicates a rune was successfully added to the segment.\n\tssSuccess ssState = iota\n\t// Indicates a rune starts a new segment and should not be added.\n\tssStarter\n\t// Indicates a rune caused a segment overflow and a CGJ should be inserted.\n\tssOverflow\n)\n\n// streamSafe implements the policy of when a CGJ should be inserted.\ntype streamSafe uint8\n\n// first inserts the first rune of a segment. It is a faster version of next if\n// it is known p represents the first rune in a segment.\nfunc (ss *streamSafe) first(p Properties) {\n\t*ss = streamSafe(p.nTrailingNonStarters())\n}\n\n// insert returns a ssState value to indicate whether a rune represented by p\n// can be inserted.\nfunc (ss *streamSafe) next(p Properties) ssState {\n\tif *ss > maxNonStarters {\n\t\tpanic(\"streamSafe was not reset\")\n\t}\n\tn := p.nLeadingNonStarters()\n\tif *ss += streamSafe(n); *ss > maxNonStarters {\n\t\t*ss = 0\n\t\treturn ssOverflow\n\t}\n\t// The Stream-Safe Text Processing prescribes that the counting can stop\n\t// as soon as a starter is encountered. However, there are some starters,\n\t// like Jamo V and T, that can combine with other runes, leaving their\n\t// successive non-starters appended to the previous, possibly causing an\n\t// overflow. We will therefore consider any rune with a non-zero nLead to\n\t// be a non-starter. Note that it always hold that if nLead > 0 then\n\t// nLead == nTrail.\n\tif n == 0 {\n\t\t*ss = streamSafe(p.nTrailingNonStarters())\n\t\treturn ssStarter\n\t}\n\treturn ssSuccess\n}\n\n// backwards is used for checking for overflow and segment starts\n// when traversing a string backwards. Users do not need to call first\n// for the first rune. The state of the streamSafe retains the count of\n// the non-starters loaded.\nfunc (ss *streamSafe) backwards(p Properties) ssState {\n\tif *ss > maxNonStarters {\n\t\tpanic(\"streamSafe was not reset\")\n\t}\n\tc := *ss + streamSafe(p.nTrailingNonStarters())\n\tif c > maxNonStarters {\n\t\treturn ssOverflow\n\t}\n\t*ss = c\n\tif p.nLeadingNonStarters() == 0 {\n\t\treturn ssStarter\n\t}\n\treturn ssSuccess\n}\n\nfunc (ss streamSafe) isMax() bool {\n\treturn ss == maxNonStarters\n}\n\n// GraphemeJoiner is inserted after maxNonStarters non-starter runes.\nconst GraphemeJoiner = \"\\u034F\"\n\n// reorderBuffer is used to normalize a single segment.  Characters inserted with\n// insert are decomposed and reordered based on CCC. The compose method can\n// be used to recombine characters.  Note that the byte buffer does not hold\n// the UTF-8 characters in order.  Only the rune array is maintained in sorted\n// order. flush writes the resulting segment to a byte array.\ntype reorderBuffer struct {\n\trune  [maxBufferSize]Properties // Per character info.\n\tbyte  [maxByteBufferSize]byte   // UTF-8 buffer. Referenced by runeInfo.pos.\n\tnbyte uint8                     // Number or bytes.\n\tss    streamSafe                // For limiting length of non-starter sequence.\n\tnrune int                       // Number of runeInfos.\n\tf     formInfo\n\n\tsrc      input\n\tnsrc     int\n\ttmpBytes input\n\n\tout    []byte\n\tflushF func(*reorderBuffer) bool\n}\n\nfunc (rb *reorderBuffer) init(f Form, src []byte) {\n\trb.f = *formTable[f]\n\trb.src.setBytes(src)\n\trb.nsrc = len(src)\n\trb.ss = 0\n}\n\nfunc (rb *reorderBuffer) initString(f Form, src string) {\n\trb.f = *formTable[f]\n\trb.src.setString(src)\n\trb.nsrc = len(src)\n\trb.ss = 0\n}\n\nfunc (rb *reorderBuffer) setFlusher(out []byte, f func(*reorderBuffer) bool) {\n\trb.out = out\n\trb.flushF = f\n}\n\n// reset discards all characters from the buffer.\nfunc (rb *reorderBuffer) reset() {\n\trb.nrune = 0\n\trb.nbyte = 0\n}\n\nfunc (rb *reorderBuffer) doFlush() bool {\n\tif rb.f.composing {\n\t\trb.compose()\n\t}\n\tres := rb.flushF(rb)\n\trb.reset()\n\treturn res\n}\n\n// appendFlush appends the normalized segment to rb.out.\nfunc appendFlush(rb *reorderBuffer) bool {\n\tfor i := 0; i < rb.nrune; i++ {\n\t\tstart := rb.rune[i].pos\n\t\tend := start + rb.rune[i].size\n\t\trb.out = append(rb.out, rb.byte[start:end]...)\n\t}\n\treturn true\n}\n\n// flush appends the normalized segment to out and resets rb.\nfunc (rb *reorderBuffer) flush(out []byte) []byte {\n\tfor i := 0; i < rb.nrune; i++ {\n\t\tstart := rb.rune[i].pos\n\t\tend := start + rb.rune[i].size\n\t\tout = append(out, rb.byte[start:end]...)\n\t}\n\trb.reset()\n\treturn out\n}\n\n// flushCopy copies the normalized segment to buf and resets rb.\n// It returns the number of bytes written to buf.\nfunc (rb *reorderBuffer) flushCopy(buf []byte) int {\n\tp := 0\n\tfor i := 0; i < rb.nrune; i++ {\n\t\trunep := rb.rune[i]\n\t\tp += copy(buf[p:], rb.byte[runep.pos:runep.pos+runep.size])\n\t}\n\trb.reset()\n\treturn p\n}\n\n// insertOrdered inserts a rune in the buffer, ordered by Canonical Combining Class.\n// It returns false if the buffer is not large enough to hold the rune.\n// It is used internally by insert and insertString only.\nfunc (rb *reorderBuffer) insertOrdered(info Properties) {\n\tn := rb.nrune\n\tb := rb.rune[:]\n\tcc := info.ccc\n\tif cc > 0 {\n\t\t// Find insertion position + move elements to make room.\n\t\tfor ; n > 0; n-- {\n\t\t\tif b[n-1].ccc <= cc {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tb[n] = b[n-1]\n\t\t}\n\t}\n\trb.nrune += 1\n\tpos := uint8(rb.nbyte)\n\trb.nbyte += utf8.UTFMax\n\tinfo.pos = pos\n\tb[n] = info\n}\n\n// insertErr is an error code returned by insert. Using this type instead\n// of error improves performance up to 20% for many of the benchmarks.\ntype insertErr int\n\nconst (\n\tiSuccess insertErr = -iota\n\tiShortDst\n\tiShortSrc\n)\n\n// insertFlush inserts the given rune in the buffer ordered by CCC.\n// If a decomposition with multiple segments are encountered, they leading\n// ones are flushed.\n// It returns a non-zero error code if the rune was not inserted.\nfunc (rb *reorderBuffer) insertFlush(src input, i int, info Properties) insertErr {\n\tif rune := src.hangul(i); rune != 0 {\n\t\trb.decomposeHangul(rune)\n\t\treturn iSuccess\n\t}\n\tif info.hasDecomposition() {\n\t\treturn rb.insertDecomposed(info.Decomposition())\n\t}\n\trb.insertSingle(src, i, info)\n\treturn iSuccess\n}\n\n// insertUnsafe inserts the given rune in the buffer ordered by CCC.\n// It is assumed there is sufficient space to hold the runes. It is the\n// responsibility of the caller to ensure this. This can be done by checking\n// the state returned by the streamSafe type.\nfunc (rb *reorderBuffer) insertUnsafe(src input, i int, info Properties) {\n\tif rune := src.hangul(i); rune != 0 {\n\t\trb.decomposeHangul(rune)\n\t}\n\tif info.hasDecomposition() {\n\t\t// TODO: inline.\n\t\trb.insertDecomposed(info.Decomposition())\n\t} else {\n\t\trb.insertSingle(src, i, info)\n\t}\n}\n\n// insertDecomposed inserts an entry in to the reorderBuffer for each rune\n// in dcomp. dcomp must be a sequence of decomposed UTF-8-encoded runes.\n// It flushes the buffer on each new segment start.\nfunc (rb *reorderBuffer) insertDecomposed(dcomp []byte) insertErr {\n\trb.tmpBytes.setBytes(dcomp)\n\t// As the streamSafe accounting already handles the counting for modifiers,\n\t// we don't have to call next. However, we do need to keep the accounting\n\t// intact when flushing the buffer.\n\tfor i := 0; i < len(dcomp); {\n\t\tinfo := rb.f.info(rb.tmpBytes, i)\n\t\tif info.BoundaryBefore() && rb.nrune > 0 && !rb.doFlush() {\n\t\t\treturn iShortDst\n\t\t}\n\t\ti += copy(rb.byte[rb.nbyte:], dcomp[i:i+int(info.size)])\n\t\trb.insertOrdered(info)\n\t}\n\treturn iSuccess\n}\n\n// insertSingle inserts an entry in the reorderBuffer for the rune at\n// position i. info is the runeInfo for the rune at position i.\nfunc (rb *reorderBuffer) insertSingle(src input, i int, info Properties) {\n\tsrc.copySlice(rb.byte[rb.nbyte:], i, i+int(info.size))\n\trb.insertOrdered(info)\n}\n\n// insertCGJ inserts a Combining Grapheme Joiner (0x034f) into rb.\nfunc (rb *reorderBuffer) insertCGJ() {\n\trb.insertSingle(input{str: GraphemeJoiner}, 0, Properties{size: uint8(len(GraphemeJoiner))})\n}\n\n// appendRune inserts a rune at the end of the buffer. It is used for Hangul.\nfunc (rb *reorderBuffer) appendRune(r rune) {\n\tbn := rb.nbyte\n\tsz := utf8.EncodeRune(rb.byte[bn:], rune(r))\n\trb.nbyte += utf8.UTFMax\n\trb.rune[rb.nrune] = Properties{pos: bn, size: uint8(sz)}\n\trb.nrune++\n}\n\n// assignRune sets a rune at position pos. It is used for Hangul and recomposition.\nfunc (rb *reorderBuffer) assignRune(pos int, r rune) {\n\tbn := rb.rune[pos].pos\n\tsz := utf8.EncodeRune(rb.byte[bn:], rune(r))\n\trb.rune[pos] = Properties{pos: bn, size: uint8(sz)}\n}\n\n// runeAt returns the rune at position n. It is used for Hangul and recomposition.\nfunc (rb *reorderBuffer) runeAt(n int) rune {\n\tinf := rb.rune[n]\n\tr, _ := utf8.DecodeRune(rb.byte[inf.pos : inf.pos+inf.size])\n\treturn r\n}\n\n// bytesAt returns the UTF-8 encoding of the rune at position n.\n// It is used for Hangul and recomposition.\nfunc (rb *reorderBuffer) bytesAt(n int) []byte {\n\tinf := rb.rune[n]\n\treturn rb.byte[inf.pos : int(inf.pos)+int(inf.size)]\n}\n\n// For Hangul we combine algorithmically, instead of using tables.\nconst (\n\thangulBase  = 0xAC00 // UTF-8(hangulBase) -> EA B0 80\n\thangulBase0 = 0xEA\n\thangulBase1 = 0xB0\n\thangulBase2 = 0x80\n\n\thangulEnd  = hangulBase + jamoLVTCount // UTF-8(0xD7A4) -> ED 9E A4\n\thangulEnd0 = 0xED\n\thangulEnd1 = 0x9E\n\thangulEnd2 = 0xA4\n\n\tjamoLBase  = 0x1100 // UTF-8(jamoLBase) -> E1 84 00\n\tjamoLBase0 = 0xE1\n\tjamoLBase1 = 0x84\n\tjamoLEnd   = 0x1113\n\tjamoVBase  = 0x1161\n\tjamoVEnd   = 0x1176\n\tjamoTBase  = 0x11A7\n\tjamoTEnd   = 0x11C3\n\n\tjamoTCount   = 28\n\tjamoVCount   = 21\n\tjamoVTCount  = 21 * 28\n\tjamoLVTCount = 19 * 21 * 28\n)\n\nconst hangulUTF8Size = 3\n\nfunc isHangul(b []byte) bool {\n\tif len(b) < hangulUTF8Size {\n\t\treturn false\n\t}\n\tb0 := b[0]\n\tif b0 < hangulBase0 {\n\t\treturn false\n\t}\n\tb1 := b[1]\n\tswitch {\n\tcase b0 == hangulBase0:\n\t\treturn b1 >= hangulBase1\n\tcase b0 < hangulEnd0:\n\t\treturn true\n\tcase b0 > hangulEnd0:\n\t\treturn false\n\tcase b1 < hangulEnd1:\n\t\treturn true\n\t}\n\treturn b1 == hangulEnd1 && b[2] < hangulEnd2\n}\n\nfunc isHangulString(b string) bool {\n\tif len(b) < hangulUTF8Size {\n\t\treturn false\n\t}\n\tb0 := b[0]\n\tif b0 < hangulBase0 {\n\t\treturn false\n\t}\n\tb1 := b[1]\n\tswitch {\n\tcase b0 == hangulBase0:\n\t\treturn b1 >= hangulBase1\n\tcase b0 < hangulEnd0:\n\t\treturn true\n\tcase b0 > hangulEnd0:\n\t\treturn false\n\tcase b1 < hangulEnd1:\n\t\treturn true\n\t}\n\treturn b1 == hangulEnd1 && b[2] < hangulEnd2\n}\n\n// Caller must ensure len(b) >= 2.\nfunc isJamoVT(b []byte) bool {\n\t// True if (rune & 0xff00) == jamoLBase\n\treturn b[0] == jamoLBase0 && (b[1]&0xFC) == jamoLBase1\n}\n\nfunc isHangulWithoutJamoT(b []byte) bool {\n\tc, _ := utf8.DecodeRune(b)\n\tc -= hangulBase\n\treturn c < jamoLVTCount && c%jamoTCount == 0\n}\n\n// decomposeHangul writes the decomposed Hangul to buf and returns the number\n// of bytes written.  len(buf) should be at least 9.\nfunc decomposeHangul(buf []byte, r rune) int {\n\tconst JamoUTF8Len = 3\n\tr -= hangulBase\n\tx := r % jamoTCount\n\tr /= jamoTCount\n\tutf8.EncodeRune(buf, jamoLBase+r/jamoVCount)\n\tutf8.EncodeRune(buf[JamoUTF8Len:], jamoVBase+r%jamoVCount)\n\tif x != 0 {\n\t\tutf8.EncodeRune(buf[2*JamoUTF8Len:], jamoTBase+x)\n\t\treturn 3 * JamoUTF8Len\n\t}\n\treturn 2 * JamoUTF8Len\n}\n\n// decomposeHangul algorithmically decomposes a Hangul rune into\n// its Jamo components.\n// See https://unicode.org/reports/tr15/#Hangul for details on decomposing Hangul.\nfunc (rb *reorderBuffer) decomposeHangul(r rune) {\n\tr -= hangulBase\n\tx := r % jamoTCount\n\tr /= jamoTCount\n\trb.appendRune(jamoLBase + r/jamoVCount)\n\trb.appendRune(jamoVBase + r%jamoVCount)\n\tif x != 0 {\n\t\trb.appendRune(jamoTBase + x)\n\t}\n}\n\n// combineHangul algorithmically combines Jamo character components into Hangul.\n// See https://unicode.org/reports/tr15/#Hangul for details on combining Hangul.\nfunc (rb *reorderBuffer) combineHangul(s, i, k int) {\n\tb := rb.rune[:]\n\tbn := rb.nrune\n\tfor ; i < bn; i++ {\n\t\tcccB := b[k-1].ccc\n\t\tcccC := b[i].ccc\n\t\tif cccB == 0 {\n\t\t\ts = k - 1\n\t\t}\n\t\tif s != k-1 && cccB >= cccC {\n\t\t\t// b[i] is blocked by greater-equal cccX below it\n\t\t\tb[k] = b[i]\n\t\t\tk++\n\t\t} else {\n\t\t\tl := rb.runeAt(s) // also used to compare to hangulBase\n\t\t\tv := rb.runeAt(i) // also used to compare to jamoT\n\t\t\tswitch {\n\t\t\tcase jamoLBase <= l && l < jamoLEnd &&\n\t\t\t\tjamoVBase <= v && v < jamoVEnd:\n\t\t\t\t// 11xx plus 116x to LV\n\t\t\t\trb.assignRune(s, hangulBase+\n\t\t\t\t\t(l-jamoLBase)*jamoVTCount+(v-jamoVBase)*jamoTCount)\n\t\t\tcase hangulBase <= l && l < hangulEnd &&\n\t\t\t\tjamoTBase < v && v < jamoTEnd &&\n\t\t\t\t((l-hangulBase)%jamoTCount) == 0:\n\t\t\t\t// ACxx plus 11Ax to LVT\n\t\t\t\trb.assignRune(s, l+v-jamoTBase)\n\t\t\tdefault:\n\t\t\t\tb[k] = b[i]\n\t\t\t\tk++\n\t\t\t}\n\t\t}\n\t}\n\trb.nrune = k\n}\n\n// compose recombines the runes in the buffer.\n// It should only be used to recompose a single segment, as it will not\n// handle alternations between Hangul and non-Hangul characters correctly.\nfunc (rb *reorderBuffer) compose() {\n\t// Lazily load the map used by the combine func below, but do\n\t// it outside of the loop.\n\trecompMapOnce.Do(buildRecompMap)\n\n\t// UAX #15, section X5 , including Corrigendum #5\n\t// \"In any character sequence beginning with starter S, a character C is\n\t//  blocked from S if and only if there is some character B between S\n\t//  and C, and either B is a starter or it has the same or higher\n\t//  combining class as C.\"\n\tbn := rb.nrune\n\tif bn == 0 {\n\t\treturn\n\t}\n\tk := 1\n\tb := rb.rune[:]\n\tfor s, i := 0, 1; i < bn; i++ {\n\t\tif isJamoVT(rb.bytesAt(i)) {\n\t\t\t// Redo from start in Hangul mode. Necessary to support\n\t\t\t// U+320E..U+321E in NFKC mode.\n\t\t\trb.combineHangul(s, i, k)\n\t\t\treturn\n\t\t}\n\t\tii := b[i]\n\t\t// We can only use combineForward as a filter if we later\n\t\t// get the info for the combined character. This is more\n\t\t// expensive than using the filter. Using combinesBackward()\n\t\t// is safe.\n\t\tif ii.combinesBackward() {\n\t\t\tcccB := b[k-1].ccc\n\t\t\tcccC := ii.ccc\n\t\t\tblocked := false // b[i] blocked by starter or greater or equal CCC?\n\t\t\tif cccB == 0 {\n\t\t\t\ts = k - 1\n\t\t\t} else {\n\t\t\t\tblocked = s != k-1 && cccB >= cccC\n\t\t\t}\n\t\t\tif !blocked {\n\t\t\t\tcombined := combine(rb.runeAt(s), rb.runeAt(i))\n\t\t\t\tif combined != 0 {\n\t\t\t\t\trb.assignRune(s, combined)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tb[k] = b[i]\n\t\tk++\n\t}\n\trb.nrune = k\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/forminfo.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport \"encoding/binary\"\n\n// This file contains Form-specific logic and wrappers for data in tables.go.\n\n// Rune info is stored in a separate trie per composing form. A composing form\n// and its corresponding decomposing form share the same trie.  Each trie maps\n// a rune to a uint16. The values take two forms.  For v >= 0x8000:\n//   bits\n//   15:    1 (inverse of NFD_QC bit of qcInfo)\n//   12..7: qcInfo (see below). isYesD is always true (no decomposition).\n//    6..0: ccc (compressed CCC value).\n// For v < 0x8000, the respective rune has a decomposition and v is an index\n// into a byte array of UTF-8 decomposition sequences and additional info and\n// has the form:\n//    <header> <decomp_byte>* [<tccc> [<lccc>]]\n// The header contains the number of bytes in the decomposition (excluding this\n// length byte), with 33 mapped to 31 to fit in 5 bits.\n// (If any 31- or 32-byte decompositions come along, we could switch to using\n// use a general lookup table as long as there are at most 32 distinct lengths.)\n// The three most significant bits of this length byte correspond\n// to bit 5, 4, and 3 of qcInfo (see below).  The byte sequence itself starts at v+1.\n// The byte sequence is followed by a trailing and leading CCC if the values\n// for these are not zero.  The value of v determines which ccc are appended\n// to the sequences.  For v < firstCCC, there are none, for v >= firstCCC,\n// the sequence is followed by a trailing ccc, and for v >= firstLeadingCC\n// there is an additional leading ccc. The value of tccc itself is the\n// trailing CCC shifted left 2 bits. The two least-significant bits of tccc\n// are the number of trailing non-starters.\n\nconst (\n\tqcInfoMask      = 0x3F // to clear all but the relevant bits in a qcInfo\n\theaderLenMask   = 0x1F // extract the length value from the header byte (31 => 33)\n\theaderFlagsMask = 0xE0 // extract the qcInfo bits from the header byte\n)\n\n// Properties provides access to normalization properties of a rune.\ntype Properties struct {\n\tpos   uint8  // start position in reorderBuffer; used in composition.go\n\tsize  uint8  // length of UTF-8 encoding of this rune\n\tccc   uint8  // leading canonical combining class (ccc if not decomposition)\n\ttccc  uint8  // trailing canonical combining class (ccc if not decomposition)\n\tnLead uint8  // number of leading non-starters.\n\tflags qcInfo // quick check flags\n\tindex uint16\n}\n\n// functions dispatchable per form\ntype lookupFunc func(b input, i int) Properties\n\n// formInfo holds Form-specific functions and tables.\ntype formInfo struct {\n\tform                     Form\n\tcomposing, compatibility bool // form type\n\tinfo                     lookupFunc\n\tnextMain                 iterFunc\n}\n\nvar formTable = []*formInfo{{\n\tform:          NFC,\n\tcomposing:     true,\n\tcompatibility: false,\n\tinfo:          lookupInfoNFC,\n\tnextMain:      nextComposed,\n}, {\n\tform:          NFD,\n\tcomposing:     false,\n\tcompatibility: false,\n\tinfo:          lookupInfoNFC,\n\tnextMain:      nextDecomposed,\n}, {\n\tform:          NFKC,\n\tcomposing:     true,\n\tcompatibility: true,\n\tinfo:          lookupInfoNFKC,\n\tnextMain:      nextComposed,\n}, {\n\tform:          NFKD,\n\tcomposing:     false,\n\tcompatibility: true,\n\tinfo:          lookupInfoNFKC,\n\tnextMain:      nextDecomposed,\n}}\n\n// We do not distinguish between boundaries for NFC, NFD, etc. to avoid\n// unexpected behavior for the user.  For example, in NFD, there is a boundary\n// after 'a'.  However, 'a' might combine with modifiers, so from the application's\n// perspective it is not a good boundary. We will therefore always use the\n// boundaries for the combining variants.\n\n// BoundaryBefore returns true if this rune starts a new segment and\n// cannot combine with any rune on the left.\nfunc (p Properties) BoundaryBefore() bool {\n\tif p.ccc == 0 && !p.combinesBackward() {\n\t\treturn true\n\t}\n\t// We assume that the CCC of the first character in a decomposition\n\t// is always non-zero if different from info.ccc and that we can return\n\t// false at this point. This is verified by maketables.\n\treturn false\n}\n\n// BoundaryAfter returns true if runes cannot combine with or otherwise\n// interact with this or previous runes.\nfunc (p Properties) BoundaryAfter() bool {\n\t// TODO: loosen these conditions.\n\treturn p.isInert()\n}\n\n// We pack quick check data in 6 bits:\n//\n//\t5:    Combines forward  (0 == false, 1 == true)\n//\t4..3: NFC_QC Yes(00), No (10), or Maybe (11)\n//\t2:    NFD_QC Yes (0) or No (1). No also means there is a decomposition.\n//\t1..0: Number of trailing non-starters.\n//\n// When all 6 bits are zero, the character is inert, meaning it is never\n// influenced by normalization.\ntype qcInfo uint8\n\nfunc (p Properties) isYesC() bool { return p.flags&0x10 == 0 }\nfunc (p Properties) isYesD() bool { return p.flags&0x4 == 0 }\n\nfunc (p Properties) combinesForward() bool  { return p.flags&0x20 != 0 }\nfunc (p Properties) combinesBackward() bool { return p.flags&0x8 != 0 } // == isMaybe\nfunc (p Properties) hasDecomposition() bool { return p.flags&0x4 != 0 } // == isNoD\n\nfunc (p Properties) isInert() bool {\n\treturn p.flags&qcInfoMask == 0 && p.ccc == 0\n}\n\nfunc (p Properties) multiSegment() bool {\n\treturn p.index >= firstMulti && p.index < endMulti\n}\n\nfunc (p Properties) nLeadingNonStarters() uint8 {\n\treturn p.nLead\n}\n\nfunc (p Properties) nTrailingNonStarters() uint8 {\n\treturn uint8(p.flags & 0x03)\n}\n\n// Decomposition returns the decomposition for the underlying rune\n// or nil if there is none.\nfunc (p Properties) Decomposition() []byte {\n\t// TODO: create the decomposition for Hangul?\n\tif p.index == 0 {\n\t\treturn nil\n\t}\n\ti := p.index\n\tn := decomps[i] & headerLenMask\n\tif n == 31 {\n\t\tn = 33\n\t}\n\ti++\n\treturn decomps[i : i+uint16(n)]\n}\n\n// Size returns the length of UTF-8 encoding of the rune.\nfunc (p Properties) Size() int {\n\treturn int(p.size)\n}\n\n// CCC returns the canonical combining class of the underlying rune.\nfunc (p Properties) CCC() uint8 {\n\tif p.index >= firstCCCZeroExcept {\n\t\treturn 0\n\t}\n\treturn ccc[p.ccc]\n}\n\n// LeadCCC returns the CCC of the first rune in the decomposition.\n// If there is no decomposition, LeadCCC equals CCC.\nfunc (p Properties) LeadCCC() uint8 {\n\treturn ccc[p.ccc]\n}\n\n// TrailCCC returns the CCC of the last rune in the decomposition.\n// If there is no decomposition, TrailCCC equals CCC.\nfunc (p Properties) TrailCCC() uint8 {\n\treturn ccc[p.tccc]\n}\n\nfunc buildRecompMap() {\n\trecompMap = make(map[uint32]rune, len(recompMapPacked)/8)\n\tvar buf [8]byte\n\tfor i := 0; i < len(recompMapPacked); i += 8 {\n\t\tcopy(buf[:], recompMapPacked[i:i+8])\n\t\tkey := binary.BigEndian.Uint32(buf[:4])\n\t\tval := binary.BigEndian.Uint32(buf[4:])\n\t\trecompMap[key] = rune(val)\n\t}\n}\n\n// Recomposition\n// We use 32-bit keys instead of 64-bit for the two codepoint keys.\n// This clips off the bits of three entries, but we know this will not\n// result in a collision. In the unlikely event that changes to\n// UnicodeData.txt introduce collisions, the compiler will catch it.\n// Note that the recomposition map for NFC and NFKC are identical.\n\n// combine returns the combined rune or 0 if it doesn't exist.\n//\n// The caller is responsible for calling\n// recompMapOnce.Do(buildRecompMap) sometime before this is called.\nfunc combine(a, b rune) rune {\n\tkey := uint32(uint16(a))<<16 + uint32(uint16(b))\n\tif recompMap == nil {\n\t\tpanic(\"caller error\") // see func comment\n\t}\n\treturn recompMap[key]\n}\n\nfunc lookupInfoNFC(b input, i int) Properties {\n\tv, sz := b.charinfoNFC(i)\n\treturn compInfo(v, sz)\n}\n\nfunc lookupInfoNFKC(b input, i int) Properties {\n\tv, sz := b.charinfoNFKC(i)\n\treturn compInfo(v, sz)\n}\n\n// Properties returns properties for the first rune in s.\nfunc (f Form) Properties(s []byte) Properties {\n\tif f == NFC || f == NFD {\n\t\treturn compInfo(nfcData.lookup(s))\n\t}\n\treturn compInfo(nfkcData.lookup(s))\n}\n\n// PropertiesString returns properties for the first rune in s.\nfunc (f Form) PropertiesString(s string) Properties {\n\tif f == NFC || f == NFD {\n\t\treturn compInfo(nfcData.lookupString(s))\n\t}\n\treturn compInfo(nfkcData.lookupString(s))\n}\n\n// compInfo converts the information contained in v and sz\n// to a Properties.  See the comment at the top of the file\n// for more information on the format.\nfunc compInfo(v uint16, sz int) Properties {\n\tif v == 0 {\n\t\treturn Properties{size: uint8(sz)}\n\t} else if v >= 0x8000 {\n\t\tp := Properties{\n\t\t\tsize:  uint8(sz),\n\t\t\tccc:   uint8(v),\n\t\t\ttccc:  uint8(v),\n\t\t\tflags: qcInfo(v >> 8),\n\t\t}\n\t\tif p.ccc > 0 || p.combinesBackward() {\n\t\t\tp.nLead = uint8(p.flags & 0x3)\n\t\t}\n\t\treturn p\n\t}\n\t// has decomposition\n\th := decomps[v]\n\tf := (qcInfo(h&headerFlagsMask) >> 2) | 0x4\n\tp := Properties{size: uint8(sz), flags: f, index: v}\n\tif v >= firstCCC {\n\t\tn := uint16(h & headerLenMask)\n\t\tif n == 31 {\n\t\t\tn = 33\n\t\t}\n\t\tv += n + 1\n\t\tc := decomps[v]\n\t\tp.tccc = c >> 2\n\t\tp.flags |= qcInfo(c & 0x3)\n\t\tif v >= firstLeadingCCC {\n\t\t\tp.nLead = c & 0x3\n\t\t\tif v >= firstStarterWithNLead {\n\t\t\t\t// We were tricked. Remove the decomposition.\n\t\t\t\tp.flags &= 0x03\n\t\t\t\tp.index = 0\n\t\t\t\treturn p\n\t\t\t}\n\t\t\tp.ccc = decomps[v+1]\n\t\t}\n\t}\n\treturn p\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/input.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport \"unicode/utf8\"\n\ntype input struct {\n\tstr   string\n\tbytes []byte\n}\n\nfunc inputBytes(str []byte) input {\n\treturn input{bytes: str}\n}\n\nfunc inputString(str string) input {\n\treturn input{str: str}\n}\n\nfunc (in *input) setBytes(str []byte) {\n\tin.str = \"\"\n\tin.bytes = str\n}\n\nfunc (in *input) setString(str string) {\n\tin.str = str\n\tin.bytes = nil\n}\n\nfunc (in *input) _byte(p int) byte {\n\tif in.bytes == nil {\n\t\treturn in.str[p]\n\t}\n\treturn in.bytes[p]\n}\n\nfunc (in *input) skipASCII(p, max int) int {\n\tif in.bytes == nil {\n\t\tfor ; p < max && in.str[p] < utf8.RuneSelf; p++ {\n\t\t}\n\t} else {\n\t\tfor ; p < max && in.bytes[p] < utf8.RuneSelf; p++ {\n\t\t}\n\t}\n\treturn p\n}\n\nfunc (in *input) skipContinuationBytes(p int) int {\n\tif in.bytes == nil {\n\t\tfor ; p < len(in.str) && !utf8.RuneStart(in.str[p]); p++ {\n\t\t}\n\t} else {\n\t\tfor ; p < len(in.bytes) && !utf8.RuneStart(in.bytes[p]); p++ {\n\t\t}\n\t}\n\treturn p\n}\n\nfunc (in *input) appendSlice(buf []byte, b, e int) []byte {\n\tif in.bytes != nil {\n\t\treturn append(buf, in.bytes[b:e]...)\n\t}\n\tfor i := b; i < e; i++ {\n\t\tbuf = append(buf, in.str[i])\n\t}\n\treturn buf\n}\n\nfunc (in *input) copySlice(buf []byte, b, e int) int {\n\tif in.bytes == nil {\n\t\treturn copy(buf, in.str[b:e])\n\t}\n\treturn copy(buf, in.bytes[b:e])\n}\n\nfunc (in *input) charinfoNFC(p int) (uint16, int) {\n\tif in.bytes == nil {\n\t\treturn nfcData.lookupString(in.str[p:])\n\t}\n\treturn nfcData.lookup(in.bytes[p:])\n}\n\nfunc (in *input) charinfoNFKC(p int) (uint16, int) {\n\tif in.bytes == nil {\n\t\treturn nfkcData.lookupString(in.str[p:])\n\t}\n\treturn nfkcData.lookup(in.bytes[p:])\n}\n\nfunc (in *input) hangul(p int) (r rune) {\n\tvar size int\n\tif in.bytes == nil {\n\t\tif !isHangulString(in.str[p:]) {\n\t\t\treturn 0\n\t\t}\n\t\tr, size = utf8.DecodeRuneInString(in.str[p:])\n\t} else {\n\t\tif !isHangul(in.bytes[p:]) {\n\t\t\treturn 0\n\t\t}\n\t\tr, size = utf8.DecodeRune(in.bytes[p:])\n\t}\n\tif size != hangulUTF8Size {\n\t\treturn 0\n\t}\n\treturn r\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/iter.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport (\n\t\"fmt\"\n\t\"unicode/utf8\"\n)\n\n// MaxSegmentSize is the maximum size of a byte buffer needed to consider any\n// sequence of starter and non-starter runes for the purpose of normalization.\nconst MaxSegmentSize = maxByteBufferSize\n\n// An Iter iterates over a string or byte slice, while normalizing it\n// to a given Form.\ntype Iter struct {\n\trb     reorderBuffer\n\tbuf    [maxByteBufferSize]byte\n\tinfo   Properties // first character saved from previous iteration\n\tnext   iterFunc   // implementation of next depends on form\n\tasciiF iterFunc\n\n\tp        int    // current position in input source\n\tmultiSeg []byte // remainder of multi-segment decomposition\n}\n\ntype iterFunc func(*Iter) []byte\n\n// Init initializes i to iterate over src after normalizing it to Form f.\nfunc (i *Iter) Init(f Form, src []byte) {\n\ti.p = 0\n\tif len(src) == 0 {\n\t\ti.setDone()\n\t\ti.rb.nsrc = 0\n\t\treturn\n\t}\n\ti.multiSeg = nil\n\ti.rb.init(f, src)\n\ti.next = i.rb.f.nextMain\n\ti.asciiF = nextASCIIBytes\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.rb.ss.first(i.info)\n}\n\n// InitString initializes i to iterate over src after normalizing it to Form f.\nfunc (i *Iter) InitString(f Form, src string) {\n\ti.p = 0\n\tif len(src) == 0 {\n\t\ti.setDone()\n\t\ti.rb.nsrc = 0\n\t\treturn\n\t}\n\ti.multiSeg = nil\n\ti.rb.initString(f, src)\n\ti.next = i.rb.f.nextMain\n\ti.asciiF = nextASCIIString\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.rb.ss.first(i.info)\n}\n\n// Seek sets the segment to be returned by the next call to Next to start\n// at position p.  It is the responsibility of the caller to set p to the\n// start of a segment.\nfunc (i *Iter) Seek(offset int64, whence int) (int64, error) {\n\tvar abs int64\n\tswitch whence {\n\tcase 0:\n\t\tabs = offset\n\tcase 1:\n\t\tabs = int64(i.p) + offset\n\tcase 2:\n\t\tabs = int64(i.rb.nsrc) + offset\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"norm: invalid whence\")\n\t}\n\tif abs < 0 {\n\t\treturn 0, fmt.Errorf(\"norm: negative position\")\n\t}\n\tif int(abs) >= i.rb.nsrc {\n\t\ti.setDone()\n\t\treturn int64(i.p), nil\n\t}\n\ti.p = int(abs)\n\ti.multiSeg = nil\n\ti.next = i.rb.f.nextMain\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.rb.ss.first(i.info)\n\treturn abs, nil\n}\n\n// returnSlice returns a slice of the underlying input type as a byte slice.\n// If the underlying is of type []byte, it will simply return a slice.\n// If the underlying is of type string, it will copy the slice to the buffer\n// and return that.\nfunc (i *Iter) returnSlice(a, b int) []byte {\n\tif i.rb.src.bytes == nil {\n\t\treturn i.buf[:copy(i.buf[:], i.rb.src.str[a:b])]\n\t}\n\treturn i.rb.src.bytes[a:b]\n}\n\n// Pos returns the byte position at which the next call to Next will commence processing.\nfunc (i *Iter) Pos() int {\n\treturn i.p\n}\n\nfunc (i *Iter) setDone() {\n\ti.next = nextDone\n\ti.p = i.rb.nsrc\n}\n\n// Done returns true if there is no more input to process.\nfunc (i *Iter) Done() bool {\n\treturn i.p >= i.rb.nsrc\n}\n\n// Next returns f(i.input[i.Pos():n]), where n is a boundary of i.input.\n// For any input a and b for which f(a) == f(b), subsequent calls\n// to Next will return the same segments.\n// Modifying runes are grouped together with the preceding starter, if such a starter exists.\n// Although not guaranteed, n will typically be the smallest possible n.\nfunc (i *Iter) Next() []byte {\n\treturn i.next(i)\n}\n\nfunc nextASCIIBytes(i *Iter) []byte {\n\tp := i.p + 1\n\tif p >= i.rb.nsrc {\n\t\tp0 := i.p\n\t\ti.setDone()\n\t\treturn i.rb.src.bytes[p0:p]\n\t}\n\tif i.rb.src.bytes[p] < utf8.RuneSelf {\n\t\tp0 := i.p\n\t\ti.p = p\n\t\treturn i.rb.src.bytes[p0:p]\n\t}\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.next = i.rb.f.nextMain\n\treturn i.next(i)\n}\n\nfunc nextASCIIString(i *Iter) []byte {\n\tp := i.p + 1\n\tif p >= i.rb.nsrc {\n\t\ti.buf[0] = i.rb.src.str[i.p]\n\t\ti.setDone()\n\t\treturn i.buf[:1]\n\t}\n\tif i.rb.src.str[p] < utf8.RuneSelf {\n\t\ti.buf[0] = i.rb.src.str[i.p]\n\t\ti.p = p\n\t\treturn i.buf[:1]\n\t}\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.next = i.rb.f.nextMain\n\treturn i.next(i)\n}\n\nfunc nextHangul(i *Iter) []byte {\n\tp := i.p\n\tnext := p + hangulUTF8Size\n\tif next >= i.rb.nsrc {\n\t\ti.setDone()\n\t} else if i.rb.src.hangul(next) == 0 {\n\t\ti.rb.ss.next(i.info)\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\ti.next = i.rb.f.nextMain\n\t\treturn i.next(i)\n\t}\n\ti.p = next\n\treturn i.buf[:decomposeHangul(i.buf[:], i.rb.src.hangul(p))]\n}\n\nfunc nextDone(i *Iter) []byte {\n\treturn nil\n}\n\n// nextMulti is used for iterating over multi-segment decompositions\n// for decomposing normal forms.\nfunc nextMulti(i *Iter) []byte {\n\tj := 0\n\td := i.multiSeg\n\t// skip first rune\n\tfor j = 1; j < len(d) && !utf8.RuneStart(d[j]); j++ {\n\t}\n\tfor j < len(d) {\n\t\tinfo := i.rb.f.info(input{bytes: d}, j)\n\t\tif info.BoundaryBefore() {\n\t\t\ti.multiSeg = d[j:]\n\t\t\treturn d[:j]\n\t\t}\n\t\tj += int(info.size)\n\t}\n\t// treat last segment as normal decomposition\n\ti.next = i.rb.f.nextMain\n\treturn i.next(i)\n}\n\n// nextMultiNorm is used for iterating over multi-segment decompositions\n// for composing normal forms.\nfunc nextMultiNorm(i *Iter) []byte {\n\tj := 0\n\td := i.multiSeg\n\tfor j < len(d) {\n\t\tinfo := i.rb.f.info(input{bytes: d}, j)\n\t\tif info.BoundaryBefore() {\n\t\t\ti.rb.compose()\n\t\t\tseg := i.buf[:i.rb.flushCopy(i.buf[:])]\n\t\t\ti.rb.insertUnsafe(input{bytes: d}, j, info)\n\t\t\ti.multiSeg = d[j+int(info.size):]\n\t\t\treturn seg\n\t\t}\n\t\ti.rb.insertUnsafe(input{bytes: d}, j, info)\n\t\tj += int(info.size)\n\t}\n\ti.multiSeg = nil\n\ti.next = nextComposed\n\treturn doNormComposed(i)\n}\n\n// nextDecomposed is the implementation of Next for forms NFD and NFKD.\nfunc nextDecomposed(i *Iter) (next []byte) {\n\toutp := 0\n\tinCopyStart, outCopyStart := i.p, 0\n\tfor {\n\t\tif sz := int(i.info.size); sz <= 1 {\n\t\t\ti.rb.ss = 0\n\t\t\tp := i.p\n\t\t\ti.p++ // ASCII or illegal byte.  Either way, advance by 1.\n\t\t\tif i.p >= i.rb.nsrc {\n\t\t\t\ti.setDone()\n\t\t\t\treturn i.returnSlice(p, i.p)\n\t\t\t} else if i.rb.src._byte(i.p) < utf8.RuneSelf {\n\t\t\t\ti.next = i.asciiF\n\t\t\t\treturn i.returnSlice(p, i.p)\n\t\t\t}\n\t\t\toutp++\n\t\t} else if d := i.info.Decomposition(); d != nil {\n\t\t\t// Note: If leading CCC != 0, then len(d) == 2 and last is also non-zero.\n\t\t\t// Case 1: there is a leftover to copy.  In this case the decomposition\n\t\t\t// must begin with a modifier and should always be appended.\n\t\t\t// Case 2: no leftover. Simply return d if followed by a ccc == 0 value.\n\t\t\tp := outp + len(d)\n\t\t\tif outp > 0 {\n\t\t\t\ti.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p)\n\t\t\t\t// TODO: this condition should not be possible, but we leave it\n\t\t\t\t// in for defensive purposes.\n\t\t\t\tif p > len(i.buf) {\n\t\t\t\t\treturn i.buf[:outp]\n\t\t\t\t}\n\t\t\t} else if i.info.multiSegment() {\n\t\t\t\t// outp must be 0 as multi-segment decompositions always\n\t\t\t\t// start a new segment.\n\t\t\t\tif i.multiSeg == nil {\n\t\t\t\t\ti.multiSeg = d\n\t\t\t\t\ti.next = nextMulti\n\t\t\t\t\treturn nextMulti(i)\n\t\t\t\t}\n\t\t\t\t// We are in the last segment.  Treat as normal decomposition.\n\t\t\t\td = i.multiSeg\n\t\t\t\ti.multiSeg = nil\n\t\t\t\tp = len(d)\n\t\t\t}\n\t\t\tprevCC := i.info.tccc\n\t\t\tif i.p += sz; i.p >= i.rb.nsrc {\n\t\t\t\ti.setDone()\n\t\t\t\ti.info = Properties{} // Force BoundaryBefore to succeed.\n\t\t\t} else {\n\t\t\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\t\t}\n\t\t\tswitch i.rb.ss.next(i.info) {\n\t\t\tcase ssOverflow:\n\t\t\t\ti.next = nextCGJDecompose\n\t\t\t\tfallthrough\n\t\t\tcase ssStarter:\n\t\t\t\tif outp > 0 {\n\t\t\t\t\tcopy(i.buf[outp:], d)\n\t\t\t\t\treturn i.buf[:p]\n\t\t\t\t}\n\t\t\t\treturn d\n\t\t\t}\n\t\t\tcopy(i.buf[outp:], d)\n\t\t\toutp = p\n\t\t\tinCopyStart, outCopyStart = i.p, outp\n\t\t\tif i.info.ccc < prevCC {\n\t\t\t\tgoto doNorm\n\t\t\t}\n\t\t\tcontinue\n\t\t} else if r := i.rb.src.hangul(i.p); r != 0 {\n\t\t\toutp = decomposeHangul(i.buf[:], r)\n\t\t\ti.p += hangulUTF8Size\n\t\t\tinCopyStart, outCopyStart = i.p, outp\n\t\t\tif i.p >= i.rb.nsrc {\n\t\t\t\ti.setDone()\n\t\t\t\tbreak\n\t\t\t} else if i.rb.src.hangul(i.p) != 0 {\n\t\t\t\ti.next = nextHangul\n\t\t\t\treturn i.buf[:outp]\n\t\t\t}\n\t\t} else {\n\t\t\tp := outp + sz\n\t\t\tif p > len(i.buf) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\toutp = p\n\t\t\ti.p += sz\n\t\t}\n\t\tif i.p >= i.rb.nsrc {\n\t\t\ti.setDone()\n\t\t\tbreak\n\t\t}\n\t\tprevCC := i.info.tccc\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\tif v := i.rb.ss.next(i.info); v == ssStarter {\n\t\t\tbreak\n\t\t} else if v == ssOverflow {\n\t\t\ti.next = nextCGJDecompose\n\t\t\tbreak\n\t\t}\n\t\tif i.info.ccc < prevCC {\n\t\t\tgoto doNorm\n\t\t}\n\t}\n\tif outCopyStart == 0 {\n\t\treturn i.returnSlice(inCopyStart, i.p)\n\t} else if inCopyStart < i.p {\n\t\ti.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p)\n\t}\n\treturn i.buf[:outp]\ndoNorm:\n\t// Insert what we have decomposed so far in the reorderBuffer.\n\t// As we will only reorder, there will always be enough room.\n\ti.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p)\n\ti.rb.insertDecomposed(i.buf[0:outp])\n\treturn doNormDecomposed(i)\n}\n\nfunc doNormDecomposed(i *Iter) []byte {\n\tfor {\n\t\ti.rb.insertUnsafe(i.rb.src, i.p, i.info)\n\t\tif i.p += int(i.info.size); i.p >= i.rb.nsrc {\n\t\t\ti.setDone()\n\t\t\tbreak\n\t\t}\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\tif i.info.ccc == 0 {\n\t\t\tbreak\n\t\t}\n\t\tif s := i.rb.ss.next(i.info); s == ssOverflow {\n\t\t\ti.next = nextCGJDecompose\n\t\t\tbreak\n\t\t}\n\t}\n\t// new segment or too many combining characters: exit normalization\n\treturn i.buf[:i.rb.flushCopy(i.buf[:])]\n}\n\nfunc nextCGJDecompose(i *Iter) []byte {\n\ti.rb.ss = 0\n\ti.rb.insertCGJ()\n\ti.next = nextDecomposed\n\ti.rb.ss.first(i.info)\n\tbuf := doNormDecomposed(i)\n\treturn buf\n}\n\n// nextComposed is the implementation of Next for forms NFC and NFKC.\nfunc nextComposed(i *Iter) []byte {\n\toutp, startp := 0, i.p\n\tvar prevCC uint8\n\tfor {\n\t\tif !i.info.isYesC() {\n\t\t\tgoto doNorm\n\t\t}\n\t\tprevCC = i.info.tccc\n\t\tsz := int(i.info.size)\n\t\tif sz == 0 {\n\t\t\tsz = 1 // illegal rune: copy byte-by-byte\n\t\t}\n\t\tp := outp + sz\n\t\tif p > len(i.buf) {\n\t\t\tbreak\n\t\t}\n\t\toutp = p\n\t\ti.p += sz\n\t\tif i.p >= i.rb.nsrc {\n\t\t\ti.setDone()\n\t\t\tbreak\n\t\t} else if i.rb.src._byte(i.p) < utf8.RuneSelf {\n\t\t\ti.rb.ss = 0\n\t\t\ti.next = i.asciiF\n\t\t\tbreak\n\t\t}\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\tif v := i.rb.ss.next(i.info); v == ssStarter {\n\t\t\tbreak\n\t\t} else if v == ssOverflow {\n\t\t\ti.next = nextCGJCompose\n\t\t\tbreak\n\t\t}\n\t\tif i.info.ccc < prevCC {\n\t\t\tgoto doNorm\n\t\t}\n\t}\n\treturn i.returnSlice(startp, i.p)\ndoNorm:\n\t// reset to start position\n\ti.p = startp\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.rb.ss.first(i.info)\n\tif i.info.multiSegment() {\n\t\td := i.info.Decomposition()\n\t\tinfo := i.rb.f.info(input{bytes: d}, 0)\n\t\ti.rb.insertUnsafe(input{bytes: d}, 0, info)\n\t\ti.multiSeg = d[int(info.size):]\n\t\ti.next = nextMultiNorm\n\t\treturn nextMultiNorm(i)\n\t}\n\ti.rb.ss.first(i.info)\n\ti.rb.insertUnsafe(i.rb.src, i.p, i.info)\n\treturn doNormComposed(i)\n}\n\nfunc doNormComposed(i *Iter) []byte {\n\t// First rune should already be inserted.\n\tfor {\n\t\tif i.p += int(i.info.size); i.p >= i.rb.nsrc {\n\t\t\ti.setDone()\n\t\t\tbreak\n\t\t}\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\tif s := i.rb.ss.next(i.info); s == ssStarter {\n\t\t\tbreak\n\t\t} else if s == ssOverflow {\n\t\t\ti.next = nextCGJCompose\n\t\t\tbreak\n\t\t}\n\t\ti.rb.insertUnsafe(i.rb.src, i.p, i.info)\n\t}\n\ti.rb.compose()\n\tseg := i.buf[:i.rb.flushCopy(i.buf[:])]\n\treturn seg\n}\n\nfunc nextCGJCompose(i *Iter) []byte {\n\ti.rb.ss = 0 // instead of first\n\ti.rb.insertCGJ()\n\ti.next = nextComposed\n\t// Note that we treat any rune with nLeadingNonStarters > 0 as a non-starter,\n\t// even if they are not. This is particularly dubious for U+FF9E and UFF9A.\n\t// If we ever change that, insert a check here.\n\ti.rb.ss.first(i.info)\n\ti.rb.insertUnsafe(i.rb.src, i.p, i.info)\n\treturn doNormComposed(i)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/normalize.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Note: the file data_test.go that is generated should not be checked in.\n//go:generate go run maketables.go triegen.go\n//go:generate go test -tags test\n\n// Package norm contains types and functions for normalizing Unicode strings.\npackage norm // import \"golang.org/x/text/unicode/norm\"\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/transform\"\n)\n\n// A Form denotes a canonical representation of Unicode code points.\n// The Unicode-defined normalization and equivalence forms are:\n//\n//\tNFC   Unicode Normalization Form C\n//\tNFD   Unicode Normalization Form D\n//\tNFKC  Unicode Normalization Form KC\n//\tNFKD  Unicode Normalization Form KD\n//\n// For a Form f, this documentation uses the notation f(x) to mean\n// the bytes or string x converted to the given form.\n// A position n in x is called a boundary if conversion to the form can\n// proceed independently on both sides:\n//\n//\tf(x) == append(f(x[0:n]), f(x[n:])...)\n//\n// References: https://unicode.org/reports/tr15/ and\n// https://unicode.org/notes/tn5/.\ntype Form int\n\nconst (\n\tNFC Form = iota\n\tNFD\n\tNFKC\n\tNFKD\n)\n\n// Bytes returns f(b). May return b if f(b) = b.\nfunc (f Form) Bytes(b []byte) []byte {\n\tsrc := inputBytes(b)\n\tft := formTable[f]\n\tn, ok := ft.quickSpan(src, 0, len(b), true)\n\tif ok {\n\t\treturn b\n\t}\n\tout := make([]byte, n, len(b))\n\tcopy(out, b[0:n])\n\trb := reorderBuffer{f: *ft, src: src, nsrc: len(b), out: out, flushF: appendFlush}\n\treturn doAppendInner(&rb, n)\n}\n\n// String returns f(s).\nfunc (f Form) String(s string) string {\n\tsrc := inputString(s)\n\tft := formTable[f]\n\tn, ok := ft.quickSpan(src, 0, len(s), true)\n\tif ok {\n\t\treturn s\n\t}\n\tout := make([]byte, n, len(s))\n\tcopy(out, s[0:n])\n\trb := reorderBuffer{f: *ft, src: src, nsrc: len(s), out: out, flushF: appendFlush}\n\treturn string(doAppendInner(&rb, n))\n}\n\n// IsNormal returns true if b == f(b).\nfunc (f Form) IsNormal(b []byte) bool {\n\tsrc := inputBytes(b)\n\tft := formTable[f]\n\tbp, ok := ft.quickSpan(src, 0, len(b), true)\n\tif ok {\n\t\treturn true\n\t}\n\trb := reorderBuffer{f: *ft, src: src, nsrc: len(b)}\n\trb.setFlusher(nil, cmpNormalBytes)\n\tfor bp < len(b) {\n\t\trb.out = b[bp:]\n\t\tif bp = decomposeSegment(&rb, bp, true); bp < 0 {\n\t\t\treturn false\n\t\t}\n\t\tbp, _ = rb.f.quickSpan(rb.src, bp, len(b), true)\n\t}\n\treturn true\n}\n\nfunc cmpNormalBytes(rb *reorderBuffer) bool {\n\tb := rb.out\n\tfor i := 0; i < rb.nrune; i++ {\n\t\tinfo := rb.rune[i]\n\t\tif int(info.size) > len(b) {\n\t\t\treturn false\n\t\t}\n\t\tp := info.pos\n\t\tpe := p + info.size\n\t\tfor ; p < pe; p++ {\n\t\t\tif b[0] != rb.byte[p] {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tb = b[1:]\n\t\t}\n\t}\n\treturn true\n}\n\n// IsNormalString returns true if s == f(s).\nfunc (f Form) IsNormalString(s string) bool {\n\tsrc := inputString(s)\n\tft := formTable[f]\n\tbp, ok := ft.quickSpan(src, 0, len(s), true)\n\tif ok {\n\t\treturn true\n\t}\n\trb := reorderBuffer{f: *ft, src: src, nsrc: len(s)}\n\trb.setFlusher(nil, func(rb *reorderBuffer) bool {\n\t\tfor i := 0; i < rb.nrune; i++ {\n\t\t\tinfo := rb.rune[i]\n\t\t\tif bp+int(info.size) > len(s) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tp := info.pos\n\t\t\tpe := p + info.size\n\t\t\tfor ; p < pe; p++ {\n\t\t\t\tif s[bp] != rb.byte[p] {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tbp++\n\t\t\t}\n\t\t}\n\t\treturn true\n\t})\n\tfor bp < len(s) {\n\t\tif bp = decomposeSegment(&rb, bp, true); bp < 0 {\n\t\t\treturn false\n\t\t}\n\t\tbp, _ = rb.f.quickSpan(rb.src, bp, len(s), true)\n\t}\n\treturn true\n}\n\n// patchTail fixes a case where a rune may be incorrectly normalized\n// if it is followed by illegal continuation bytes. It returns the\n// patched buffer and whether the decomposition is still in progress.\nfunc patchTail(rb *reorderBuffer) bool {\n\tinfo, p := lastRuneStart(&rb.f, rb.out)\n\tif p == -1 || info.size == 0 {\n\t\treturn true\n\t}\n\tend := p + int(info.size)\n\textra := len(rb.out) - end\n\tif extra > 0 {\n\t\t// Potentially allocating memory. However, this only\n\t\t// happens with ill-formed UTF-8.\n\t\tx := make([]byte, 0)\n\t\tx = append(x, rb.out[len(rb.out)-extra:]...)\n\t\trb.out = rb.out[:end]\n\t\tdecomposeToLastBoundary(rb)\n\t\trb.doFlush()\n\t\trb.out = append(rb.out, x...)\n\t\treturn false\n\t}\n\tbuf := rb.out[p:]\n\trb.out = rb.out[:p]\n\tdecomposeToLastBoundary(rb)\n\tif s := rb.ss.next(info); s == ssStarter {\n\t\trb.doFlush()\n\t\trb.ss.first(info)\n\t} else if s == ssOverflow {\n\t\trb.doFlush()\n\t\trb.insertCGJ()\n\t\trb.ss = 0\n\t}\n\trb.insertUnsafe(inputBytes(buf), 0, info)\n\treturn true\n}\n\nfunc appendQuick(rb *reorderBuffer, i int) int {\n\tif rb.nsrc == i {\n\t\treturn i\n\t}\n\tend, _ := rb.f.quickSpan(rb.src, i, rb.nsrc, true)\n\trb.out = rb.src.appendSlice(rb.out, i, end)\n\treturn end\n}\n\n// Append returns f(append(out, b...)).\n// The buffer out must be nil, empty, or equal to f(out).\nfunc (f Form) Append(out []byte, src ...byte) []byte {\n\treturn f.doAppend(out, inputBytes(src), len(src))\n}\n\nfunc (f Form) doAppend(out []byte, src input, n int) []byte {\n\tif n == 0 {\n\t\treturn out\n\t}\n\tft := formTable[f]\n\t// Attempt to do a quickSpan first so we can avoid initializing the reorderBuffer.\n\tif len(out) == 0 {\n\t\tp, _ := ft.quickSpan(src, 0, n, true)\n\t\tout = src.appendSlice(out, 0, p)\n\t\tif p == n {\n\t\t\treturn out\n\t\t}\n\t\trb := reorderBuffer{f: *ft, src: src, nsrc: n, out: out, flushF: appendFlush}\n\t\treturn doAppendInner(&rb, p)\n\t}\n\trb := reorderBuffer{f: *ft, src: src, nsrc: n}\n\treturn doAppend(&rb, out, 0)\n}\n\nfunc doAppend(rb *reorderBuffer, out []byte, p int) []byte {\n\trb.setFlusher(out, appendFlush)\n\tsrc, n := rb.src, rb.nsrc\n\tdoMerge := len(out) > 0\n\tif q := src.skipContinuationBytes(p); q > p {\n\t\t// Move leading non-starters to destination.\n\t\trb.out = src.appendSlice(rb.out, p, q)\n\t\tp = q\n\t\tdoMerge = patchTail(rb)\n\t}\n\tfd := &rb.f\n\tif doMerge {\n\t\tvar info Properties\n\t\tif p < n {\n\t\t\tinfo = fd.info(src, p)\n\t\t\tif !info.BoundaryBefore() || info.nLeadingNonStarters() > 0 {\n\t\t\t\tif p == 0 {\n\t\t\t\t\tdecomposeToLastBoundary(rb)\n\t\t\t\t}\n\t\t\t\tp = decomposeSegment(rb, p, true)\n\t\t\t}\n\t\t}\n\t\tif info.size == 0 {\n\t\t\trb.doFlush()\n\t\t\t// Append incomplete UTF-8 encoding.\n\t\t\treturn src.appendSlice(rb.out, p, n)\n\t\t}\n\t\tif rb.nrune > 0 {\n\t\t\treturn doAppendInner(rb, p)\n\t\t}\n\t}\n\tp = appendQuick(rb, p)\n\treturn doAppendInner(rb, p)\n}\n\nfunc doAppendInner(rb *reorderBuffer, p int) []byte {\n\tfor n := rb.nsrc; p < n; {\n\t\tp = decomposeSegment(rb, p, true)\n\t\tp = appendQuick(rb, p)\n\t}\n\treturn rb.out\n}\n\n// AppendString returns f(append(out, []byte(s))).\n// The buffer out must be nil, empty, or equal to f(out).\nfunc (f Form) AppendString(out []byte, src string) []byte {\n\treturn f.doAppend(out, inputString(src), len(src))\n}\n\n// QuickSpan returns a boundary n such that b[0:n] == f(b[0:n]).\n// It is not guaranteed to return the largest such n.\nfunc (f Form) QuickSpan(b []byte) int {\n\tn, _ := formTable[f].quickSpan(inputBytes(b), 0, len(b), true)\n\treturn n\n}\n\n// Span implements transform.SpanningTransformer. It returns a boundary n such\n// that b[0:n] == f(b[0:n]). It is not guaranteed to return the largest such n.\nfunc (f Form) Span(b []byte, atEOF bool) (n int, err error) {\n\tn, ok := formTable[f].quickSpan(inputBytes(b), 0, len(b), atEOF)\n\tif n < len(b) {\n\t\tif !ok {\n\t\t\terr = transform.ErrEndOfSpan\n\t\t} else {\n\t\t\terr = transform.ErrShortSrc\n\t\t}\n\t}\n\treturn n, err\n}\n\n// SpanString returns a boundary n such that s[0:n] == f(s[0:n]).\n// It is not guaranteed to return the largest such n.\nfunc (f Form) SpanString(s string, atEOF bool) (n int, err error) {\n\tn, ok := formTable[f].quickSpan(inputString(s), 0, len(s), atEOF)\n\tif n < len(s) {\n\t\tif !ok {\n\t\t\terr = transform.ErrEndOfSpan\n\t\t} else {\n\t\t\terr = transform.ErrShortSrc\n\t\t}\n\t}\n\treturn n, err\n}\n\n// quickSpan returns a boundary n such that src[0:n] == f(src[0:n]) and\n// whether any non-normalized parts were found. If atEOF is false, n will\n// not point past the last segment if this segment might be become\n// non-normalized by appending other runes.\nfunc (f *formInfo) quickSpan(src input, i, end int, atEOF bool) (n int, ok bool) {\n\tvar lastCC uint8\n\tss := streamSafe(0)\n\tlastSegStart := i\n\tfor n = end; i < n; {\n\t\tif j := src.skipASCII(i, n); i != j {\n\t\t\ti = j\n\t\t\tlastSegStart = i - 1\n\t\t\tlastCC = 0\n\t\t\tss = 0\n\t\t\tcontinue\n\t\t}\n\t\tinfo := f.info(src, i)\n\t\tif info.size == 0 {\n\t\t\tif atEOF {\n\t\t\t\t// include incomplete runes\n\t\t\t\treturn n, true\n\t\t\t}\n\t\t\treturn lastSegStart, true\n\t\t}\n\t\t// This block needs to be before the next, because it is possible to\n\t\t// have an overflow for runes that are starters (e.g. with U+FF9E).\n\t\tswitch ss.next(info) {\n\t\tcase ssStarter:\n\t\t\tlastSegStart = i\n\t\tcase ssOverflow:\n\t\t\treturn lastSegStart, false\n\t\tcase ssSuccess:\n\t\t\tif lastCC > info.ccc {\n\t\t\t\treturn lastSegStart, false\n\t\t\t}\n\t\t}\n\t\tif f.composing {\n\t\t\tif !info.isYesC() {\n\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tif !info.isYesD() {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tlastCC = info.ccc\n\t\ti += int(info.size)\n\t}\n\tif i == n {\n\t\tif !atEOF {\n\t\t\tn = lastSegStart\n\t\t}\n\t\treturn n, true\n\t}\n\treturn lastSegStart, false\n}\n\n// QuickSpanString returns a boundary n such that s[0:n] == f(s[0:n]).\n// It is not guaranteed to return the largest such n.\nfunc (f Form) QuickSpanString(s string) int {\n\tn, _ := formTable[f].quickSpan(inputString(s), 0, len(s), true)\n\treturn n\n}\n\n// FirstBoundary returns the position i of the first boundary in b\n// or -1 if b contains no boundary.\nfunc (f Form) FirstBoundary(b []byte) int {\n\treturn f.firstBoundary(inputBytes(b), len(b))\n}\n\nfunc (f Form) firstBoundary(src input, nsrc int) int {\n\ti := src.skipContinuationBytes(0)\n\tif i >= nsrc {\n\t\treturn -1\n\t}\n\tfd := formTable[f]\n\tss := streamSafe(0)\n\t// We should call ss.first here, but we can't as the first rune is\n\t// skipped already. This means FirstBoundary can't really determine\n\t// CGJ insertion points correctly. Luckily it doesn't have to.\n\tfor {\n\t\tinfo := fd.info(src, i)\n\t\tif info.size == 0 {\n\t\t\treturn -1\n\t\t}\n\t\tif s := ss.next(info); s != ssSuccess {\n\t\t\treturn i\n\t\t}\n\t\ti += int(info.size)\n\t\tif i >= nsrc {\n\t\t\tif !info.BoundaryAfter() && !ss.isMax() {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn nsrc\n\t\t}\n\t}\n}\n\n// FirstBoundaryInString returns the position i of the first boundary in s\n// or -1 if s contains no boundary.\nfunc (f Form) FirstBoundaryInString(s string) int {\n\treturn f.firstBoundary(inputString(s), len(s))\n}\n\n// NextBoundary reports the index of the boundary between the first and next\n// segment in b or -1 if atEOF is false and there are not enough bytes to\n// determine this boundary.\nfunc (f Form) NextBoundary(b []byte, atEOF bool) int {\n\treturn f.nextBoundary(inputBytes(b), len(b), atEOF)\n}\n\n// NextBoundaryInString reports the index of the boundary between the first and\n// next segment in b or -1 if atEOF is false and there are not enough bytes to\n// determine this boundary.\nfunc (f Form) NextBoundaryInString(s string, atEOF bool) int {\n\treturn f.nextBoundary(inputString(s), len(s), atEOF)\n}\n\nfunc (f Form) nextBoundary(src input, nsrc int, atEOF bool) int {\n\tif nsrc == 0 {\n\t\tif atEOF {\n\t\t\treturn 0\n\t\t}\n\t\treturn -1\n\t}\n\tfd := formTable[f]\n\tinfo := fd.info(src, 0)\n\tif info.size == 0 {\n\t\tif atEOF {\n\t\t\treturn 1\n\t\t}\n\t\treturn -1\n\t}\n\tss := streamSafe(0)\n\tss.first(info)\n\n\tfor i := int(info.size); i < nsrc; i += int(info.size) {\n\t\tinfo = fd.info(src, i)\n\t\tif info.size == 0 {\n\t\t\tif atEOF {\n\t\t\t\treturn i\n\t\t\t}\n\t\t\treturn -1\n\t\t}\n\t\t// TODO: Using streamSafe to determine the boundary isn't the same as\n\t\t// using BoundaryBefore. Determine which should be used.\n\t\tif s := ss.next(info); s != ssSuccess {\n\t\t\treturn i\n\t\t}\n\t}\n\tif !atEOF && !info.BoundaryAfter() && !ss.isMax() {\n\t\treturn -1\n\t}\n\treturn nsrc\n}\n\n// LastBoundary returns the position i of the last boundary in b\n// or -1 if b contains no boundary.\nfunc (f Form) LastBoundary(b []byte) int {\n\treturn lastBoundary(formTable[f], b)\n}\n\nfunc lastBoundary(fd *formInfo, b []byte) int {\n\ti := len(b)\n\tinfo, p := lastRuneStart(fd, b)\n\tif p == -1 {\n\t\treturn -1\n\t}\n\tif info.size == 0 { // ends with incomplete rune\n\t\tif p == 0 { // starts with incomplete rune\n\t\t\treturn -1\n\t\t}\n\t\ti = p\n\t\tinfo, p = lastRuneStart(fd, b[:i])\n\t\tif p == -1 { // incomplete UTF-8 encoding or non-starter bytes without a starter\n\t\t\treturn i\n\t\t}\n\t}\n\tif p+int(info.size) != i { // trailing non-starter bytes: illegal UTF-8\n\t\treturn i\n\t}\n\tif info.BoundaryAfter() {\n\t\treturn i\n\t}\n\tss := streamSafe(0)\n\tv := ss.backwards(info)\n\tfor i = p; i >= 0 && v != ssStarter; i = p {\n\t\tinfo, p = lastRuneStart(fd, b[:i])\n\t\tif v = ss.backwards(info); v == ssOverflow {\n\t\t\tbreak\n\t\t}\n\t\tif p+int(info.size) != i {\n\t\t\tif p == -1 { // no boundary found\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn i // boundary after an illegal UTF-8 encoding\n\t\t}\n\t}\n\treturn i\n}\n\n// decomposeSegment scans the first segment in src into rb. It inserts 0x034f\n// (Grapheme Joiner) when it encounters a sequence of more than 30 non-starters\n// and returns the number of bytes consumed from src or iShortDst or iShortSrc.\nfunc decomposeSegment(rb *reorderBuffer, sp int, atEOF bool) int {\n\t// Force one character to be consumed.\n\tinfo := rb.f.info(rb.src, sp)\n\tif info.size == 0 {\n\t\treturn 0\n\t}\n\tif s := rb.ss.next(info); s == ssStarter {\n\t\t// TODO: this could be removed if we don't support merging.\n\t\tif rb.nrune > 0 {\n\t\t\tgoto end\n\t\t}\n\t} else if s == ssOverflow {\n\t\trb.insertCGJ()\n\t\tgoto end\n\t}\n\tif err := rb.insertFlush(rb.src, sp, info); err != iSuccess {\n\t\treturn int(err)\n\t}\n\tfor {\n\t\tsp += int(info.size)\n\t\tif sp >= rb.nsrc {\n\t\t\tif !atEOF && !info.BoundaryAfter() {\n\t\t\t\treturn int(iShortSrc)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tinfo = rb.f.info(rb.src, sp)\n\t\tif info.size == 0 {\n\t\t\tif !atEOF {\n\t\t\t\treturn int(iShortSrc)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tif s := rb.ss.next(info); s == ssStarter {\n\t\t\tbreak\n\t\t} else if s == ssOverflow {\n\t\t\trb.insertCGJ()\n\t\t\tbreak\n\t\t}\n\t\tif err := rb.insertFlush(rb.src, sp, info); err != iSuccess {\n\t\t\treturn int(err)\n\t\t}\n\t}\nend:\n\tif !rb.doFlush() {\n\t\treturn int(iShortDst)\n\t}\n\treturn sp\n}\n\n// lastRuneStart returns the runeInfo and position of the last\n// rune in buf or the zero runeInfo and -1 if no rune was found.\nfunc lastRuneStart(fd *formInfo, buf []byte) (Properties, int) {\n\tp := len(buf) - 1\n\tfor ; p >= 0 && !utf8.RuneStart(buf[p]); p-- {\n\t}\n\tif p < 0 {\n\t\treturn Properties{}, -1\n\t}\n\treturn fd.info(inputBytes(buf), p), p\n}\n\n// decomposeToLastBoundary finds an open segment at the end of the buffer\n// and scans it into rb. Returns the buffer minus the last segment.\nfunc decomposeToLastBoundary(rb *reorderBuffer) {\n\tfd := &rb.f\n\tinfo, i := lastRuneStart(fd, rb.out)\n\tif int(info.size) != len(rb.out)-i {\n\t\t// illegal trailing continuation bytes\n\t\treturn\n\t}\n\tif info.BoundaryAfter() {\n\t\treturn\n\t}\n\tvar add [maxNonStarters + 1]Properties // stores runeInfo in reverse order\n\tpadd := 0\n\tss := streamSafe(0)\n\tp := len(rb.out)\n\tfor {\n\t\tadd[padd] = info\n\t\tv := ss.backwards(info)\n\t\tif v == ssOverflow {\n\t\t\t// Note that if we have an overflow, it the string we are appending to\n\t\t\t// is not correctly normalized. In this case the behavior is undefined.\n\t\t\tbreak\n\t\t}\n\t\tpadd++\n\t\tp -= int(info.size)\n\t\tif v == ssStarter || p < 0 {\n\t\t\tbreak\n\t\t}\n\t\tinfo, i = lastRuneStart(fd, rb.out[:p])\n\t\tif int(info.size) != p-i {\n\t\t\tbreak\n\t\t}\n\t}\n\trb.ss = ss\n\t// Copy bytes for insertion as we may need to overwrite rb.out.\n\tvar buf [maxBufferSize * utf8.UTFMax]byte\n\tcp := buf[:copy(buf[:], rb.out[p:])]\n\trb.out = rb.out[:p]\n\tfor padd--; padd >= 0; padd-- {\n\t\tinfo = add[padd]\n\t\trb.insertUnsafe(inputBytes(cp), 0, info)\n\t\tcp = cp[info.size:]\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/readwriter.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport \"io\"\n\ntype normWriter struct {\n\trb  reorderBuffer\n\tw   io.Writer\n\tbuf []byte\n}\n\n// Write implements the standard write interface.  If the last characters are\n// not at a normalization boundary, the bytes will be buffered for the next\n// write. The remaining bytes will be written on close.\nfunc (w *normWriter) Write(data []byte) (n int, err error) {\n\t// Process data in pieces to keep w.buf size bounded.\n\tconst chunk = 4000\n\n\tfor len(data) > 0 {\n\t\t// Normalize into w.buf.\n\t\tm := len(data)\n\t\tif m > chunk {\n\t\t\tm = chunk\n\t\t}\n\t\tw.rb.src = inputBytes(data[:m])\n\t\tw.rb.nsrc = m\n\t\tw.buf = doAppend(&w.rb, w.buf, 0)\n\t\tdata = data[m:]\n\t\tn += m\n\n\t\t// Write out complete prefix, save remainder.\n\t\t// Note that lastBoundary looks back at most 31 runes.\n\t\ti := lastBoundary(&w.rb.f, w.buf)\n\t\tif i == -1 {\n\t\t\ti = 0\n\t\t}\n\t\tif i > 0 {\n\t\t\tif _, err = w.w.Write(w.buf[:i]); err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tbn := copy(w.buf, w.buf[i:])\n\t\t\tw.buf = w.buf[:bn]\n\t\t}\n\t}\n\treturn n, err\n}\n\n// Close forces data that remains in the buffer to be written.\nfunc (w *normWriter) Close() error {\n\tif len(w.buf) > 0 {\n\t\t_, err := w.w.Write(w.buf)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// Writer returns a new writer that implements Write(b)\n// by writing f(b) to w. The returned writer may use an\n// internal buffer to maintain state across Write calls.\n// Calling its Close method writes any buffered data to w.\nfunc (f Form) Writer(w io.Writer) io.WriteCloser {\n\twr := &normWriter{rb: reorderBuffer{}, w: w}\n\twr.rb.init(f, nil)\n\treturn wr\n}\n\ntype normReader struct {\n\trb           reorderBuffer\n\tr            io.Reader\n\tinbuf        []byte\n\toutbuf       []byte\n\tbufStart     int\n\tlastBoundary int\n\terr          error\n}\n\n// Read implements the standard read interface.\nfunc (r *normReader) Read(p []byte) (int, error) {\n\tfor {\n\t\tif r.lastBoundary-r.bufStart > 0 {\n\t\t\tn := copy(p, r.outbuf[r.bufStart:r.lastBoundary])\n\t\t\tr.bufStart += n\n\t\t\tif r.lastBoundary-r.bufStart > 0 {\n\t\t\t\treturn n, nil\n\t\t\t}\n\t\t\treturn n, r.err\n\t\t}\n\t\tif r.err != nil {\n\t\t\treturn 0, r.err\n\t\t}\n\t\toutn := copy(r.outbuf, r.outbuf[r.lastBoundary:])\n\t\tr.outbuf = r.outbuf[0:outn]\n\t\tr.bufStart = 0\n\n\t\tn, err := r.r.Read(r.inbuf)\n\t\tr.rb.src = inputBytes(r.inbuf[0:n])\n\t\tr.rb.nsrc, r.err = n, err\n\t\tif n > 0 {\n\t\t\tr.outbuf = doAppend(&r.rb, r.outbuf, 0)\n\t\t}\n\t\tif err == io.EOF {\n\t\t\tr.lastBoundary = len(r.outbuf)\n\t\t} else {\n\t\t\tr.lastBoundary = lastBoundary(&r.rb.f, r.outbuf)\n\t\t\tif r.lastBoundary == -1 {\n\t\t\t\tr.lastBoundary = 0\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Reader returns a new reader that implements Read\n// by reading data from r and returning f(data).\nfunc (f Form) Reader(r io.Reader) io.Reader {\n\tconst chunk = 4000\n\tbuf := make([]byte, chunk)\n\trr := &normReader{rb: reorderBuffer{}, r: r, inbuf: buf}\n\trr.rb.init(f, buf)\n\treturn rr\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/tables15.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build !go1.27\n\npackage norm\n\nimport \"sync\"\n\nconst (\n\t// Version is the Unicode edition from which the tables are derived.\n\tVersion = \"15.0.0\"\n\n\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform\n\t// may need to write atomically for any Form. Making a destination buffer at\n\t// least this size ensures that Transform can always make progress and that\n\t// the user does not need to grow the buffer on an ErrShortDst.\n\tMaxTransformChunkSize = 35 + maxNonStarters*4\n)\n\nvar ccc = [56]uint8{\n\t0, 1, 6, 7, 8, 9, 10, 11,\n\t12, 13, 14, 15, 16, 17, 18, 19,\n\t20, 21, 22, 23, 24, 25, 26, 27,\n\t28, 29, 30, 31, 32, 33, 34, 35,\n\t36, 84, 91, 103, 107, 118, 122, 129,\n\t130, 132, 202, 214, 216, 218, 220, 222,\n\t224, 226, 228, 230, 232, 233, 234, 240,\n}\n\nconst (\n\tfirstMulti            = 0x199A\n\tfirstCCC              = 0x2DD5\n\tendMulti              = 0x2EBF\n\tfirstLeadingCCC       = 0x4AEF\n\tfirstCCCZeroExcept    = 0x4BB9\n\tfirstStarterWithNLead = 0x4BE0\n\tlastDecomp            = 0x4BE2\n\tmaxDecomp             = 0x8000\n)\n\n// decomps: 19426 bytes\nvar decomps = [...]byte{\n\t// Bytes 0 - 3f\n\t0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41,\n\t0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41,\n\t0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41,\n\t0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41,\n\t0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41,\n\t0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41,\n\t0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41,\n\t0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41,\n\t// Bytes 40 - 7f\n\t0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41,\n\t0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41,\n\t0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41,\n\t0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41,\n\t0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41,\n\t0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41,\n\t0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41,\n\t0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41,\n\t// Bytes 80 - bf\n\t0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41,\n\t0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41,\n\t0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41,\n\t0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41,\n\t0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41,\n\t0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41,\n\t0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41,\n\t0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42,\n\t// Bytes c0 - ff\n\t0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5,\n\t0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2,\n\t0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xA6, 0x42,\n\t0xC3, 0xB0, 0x42, 0xC3, 0xB8, 0x42, 0xC4, 0xA6,\n\t0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1, 0x42, 0xC5,\n\t0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6, 0x8E, 0x42,\n\t0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42, 0xC7, 0x80,\n\t0x42, 0xC7, 0x81, 0x42, 0xC7, 0x82, 0x42, 0xC8,\n\t// Bytes 100 - 13f\n\t0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90, 0x42,\n\t0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9, 0x93,\n\t0x42, 0xC9, 0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9,\n\t0x96, 0x42, 0xC9, 0x97, 0x42, 0xC9, 0x98, 0x42,\n\t0xC9, 0x99, 0x42, 0xC9, 0x9B, 0x42, 0xC9, 0x9C,\n\t0x42, 0xC9, 0x9E, 0x42, 0xC9, 0x9F, 0x42, 0xC9,\n\t0xA0, 0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA2, 0x42,\n\t0xC9, 0xA3, 0x42, 0xC9, 0xA4, 0x42, 0xC9, 0xA5,\n\t// Bytes 140 - 17f\n\t0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA7, 0x42, 0xC9,\n\t0xA8, 0x42, 0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42,\n\t0xC9, 0xAB, 0x42, 0xC9, 0xAC, 0x42, 0xC9, 0xAD,\n\t0x42, 0xC9, 0xAE, 0x42, 0xC9, 0xAF, 0x42, 0xC9,\n\t0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42,\n\t0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5,\n\t0x42, 0xC9, 0xB6, 0x42, 0xC9, 0xB7, 0x42, 0xC9,\n\t0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9, 0xBA, 0x42,\n\t// Bytes 180 - 1bf\n\t0xC9, 0xBB, 0x42, 0xC9, 0xBD, 0x42, 0xC9, 0xBE,\n\t0x42, 0xCA, 0x80, 0x42, 0xCA, 0x81, 0x42, 0xCA,\n\t0x82, 0x42, 0xCA, 0x83, 0x42, 0xCA, 0x84, 0x42,\n\t0xCA, 0x88, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A,\n\t0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA,\n\t0x8D, 0x42, 0xCA, 0x8E, 0x42, 0xCA, 0x8F, 0x42,\n\t0xCA, 0x90, 0x42, 0xCA, 0x91, 0x42, 0xCA, 0x92,\n\t0x42, 0xCA, 0x95, 0x42, 0xCA, 0x98, 0x42, 0xCA,\n\t// Bytes 1c0 - 1ff\n\t0x99, 0x42, 0xCA, 0x9B, 0x42, 0xCA, 0x9C, 0x42,\n\t0xCA, 0x9D, 0x42, 0xCA, 0x9F, 0x42, 0xCA, 0xA1,\n\t0x42, 0xCA, 0xA2, 0x42, 0xCA, 0xA3, 0x42, 0xCA,\n\t0xA4, 0x42, 0xCA, 0xA5, 0x42, 0xCA, 0xA6, 0x42,\n\t0xCA, 0xA7, 0x42, 0xCA, 0xA8, 0x42, 0xCA, 0xA9,\n\t0x42, 0xCA, 0xAA, 0x42, 0xCA, 0xAB, 0x42, 0xCA,\n\t0xB9, 0x42, 0xCB, 0x90, 0x42, 0xCB, 0x91, 0x42,\n\t0xCE, 0x91, 0x42, 0xCE, 0x92, 0x42, 0xCE, 0x93,\n\t// Bytes 200 - 23f\n\t0x42, 0xCE, 0x94, 0x42, 0xCE, 0x95, 0x42, 0xCE,\n\t0x96, 0x42, 0xCE, 0x97, 0x42, 0xCE, 0x98, 0x42,\n\t0xCE, 0x99, 0x42, 0xCE, 0x9A, 0x42, 0xCE, 0x9B,\n\t0x42, 0xCE, 0x9C, 0x42, 0xCE, 0x9D, 0x42, 0xCE,\n\t0x9E, 0x42, 0xCE, 0x9F, 0x42, 0xCE, 0xA0, 0x42,\n\t0xCE, 0xA1, 0x42, 0xCE, 0xA3, 0x42, 0xCE, 0xA4,\n\t0x42, 0xCE, 0xA5, 0x42, 0xCE, 0xA6, 0x42, 0xCE,\n\t0xA7, 0x42, 0xCE, 0xA8, 0x42, 0xCE, 0xA9, 0x42,\n\t// Bytes 240 - 27f\n\t0xCE, 0xB1, 0x42, 0xCE, 0xB2, 0x42, 0xCE, 0xB3,\n\t0x42, 0xCE, 0xB4, 0x42, 0xCE, 0xB5, 0x42, 0xCE,\n\t0xB6, 0x42, 0xCE, 0xB7, 0x42, 0xCE, 0xB8, 0x42,\n\t0xCE, 0xB9, 0x42, 0xCE, 0xBA, 0x42, 0xCE, 0xBB,\n\t0x42, 0xCE, 0xBC, 0x42, 0xCE, 0xBD, 0x42, 0xCE,\n\t0xBE, 0x42, 0xCE, 0xBF, 0x42, 0xCF, 0x80, 0x42,\n\t0xCF, 0x81, 0x42, 0xCF, 0x82, 0x42, 0xCF, 0x83,\n\t0x42, 0xCF, 0x84, 0x42, 0xCF, 0x85, 0x42, 0xCF,\n\t// Bytes 280 - 2bf\n\t0x86, 0x42, 0xCF, 0x87, 0x42, 0xCF, 0x88, 0x42,\n\t0xCF, 0x89, 0x42, 0xCF, 0x9C, 0x42, 0xCF, 0x9D,\n\t0x42, 0xD0, 0xB0, 0x42, 0xD0, 0xB1, 0x42, 0xD0,\n\t0xB2, 0x42, 0xD0, 0xB3, 0x42, 0xD0, 0xB4, 0x42,\n\t0xD0, 0xB5, 0x42, 0xD0, 0xB6, 0x42, 0xD0, 0xB7,\n\t0x42, 0xD0, 0xB8, 0x42, 0xD0, 0xBA, 0x42, 0xD0,\n\t0xBB, 0x42, 0xD0, 0xBC, 0x42, 0xD0, 0xBD, 0x42,\n\t0xD0, 0xBE, 0x42, 0xD0, 0xBF, 0x42, 0xD1, 0x80,\n\t// Bytes 2c0 - 2ff\n\t0x42, 0xD1, 0x81, 0x42, 0xD1, 0x82, 0x42, 0xD1,\n\t0x83, 0x42, 0xD1, 0x84, 0x42, 0xD1, 0x85, 0x42,\n\t0xD1, 0x86, 0x42, 0xD1, 0x87, 0x42, 0xD1, 0x88,\n\t0x42, 0xD1, 0x8A, 0x42, 0xD1, 0x8B, 0x42, 0xD1,\n\t0x8C, 0x42, 0xD1, 0x8D, 0x42, 0xD1, 0x8E, 0x42,\n\t0xD1, 0x95, 0x42, 0xD1, 0x96, 0x42, 0xD1, 0x98,\n\t0x42, 0xD1, 0x9F, 0x42, 0xD2, 0x91, 0x42, 0xD2,\n\t0xAB, 0x42, 0xD2, 0xAF, 0x42, 0xD2, 0xB1, 0x42,\n\t// Bytes 300 - 33f\n\t0xD3, 0x8F, 0x42, 0xD3, 0x99, 0x42, 0xD3, 0xA9,\n\t0x42, 0xD7, 0x90, 0x42, 0xD7, 0x91, 0x42, 0xD7,\n\t0x92, 0x42, 0xD7, 0x93, 0x42, 0xD7, 0x94, 0x42,\n\t0xD7, 0x9B, 0x42, 0xD7, 0x9C, 0x42, 0xD7, 0x9D,\n\t0x42, 0xD7, 0xA2, 0x42, 0xD7, 0xA8, 0x42, 0xD7,\n\t0xAA, 0x42, 0xD8, 0xA1, 0x42, 0xD8, 0xA7, 0x42,\n\t0xD8, 0xA8, 0x42, 0xD8, 0xA9, 0x42, 0xD8, 0xAA,\n\t0x42, 0xD8, 0xAB, 0x42, 0xD8, 0xAC, 0x42, 0xD8,\n\t// Bytes 340 - 37f\n\t0xAD, 0x42, 0xD8, 0xAE, 0x42, 0xD8, 0xAF, 0x42,\n\t0xD8, 0xB0, 0x42, 0xD8, 0xB1, 0x42, 0xD8, 0xB2,\n\t0x42, 0xD8, 0xB3, 0x42, 0xD8, 0xB4, 0x42, 0xD8,\n\t0xB5, 0x42, 0xD8, 0xB6, 0x42, 0xD8, 0xB7, 0x42,\n\t0xD8, 0xB8, 0x42, 0xD8, 0xB9, 0x42, 0xD8, 0xBA,\n\t0x42, 0xD9, 0x81, 0x42, 0xD9, 0x82, 0x42, 0xD9,\n\t0x83, 0x42, 0xD9, 0x84, 0x42, 0xD9, 0x85, 0x42,\n\t0xD9, 0x86, 0x42, 0xD9, 0x87, 0x42, 0xD9, 0x88,\n\t// Bytes 380 - 3bf\n\t0x42, 0xD9, 0x89, 0x42, 0xD9, 0x8A, 0x42, 0xD9,\n\t0xAE, 0x42, 0xD9, 0xAF, 0x42, 0xD9, 0xB1, 0x42,\n\t0xD9, 0xB9, 0x42, 0xD9, 0xBA, 0x42, 0xD9, 0xBB,\n\t0x42, 0xD9, 0xBE, 0x42, 0xD9, 0xBF, 0x42, 0xDA,\n\t0x80, 0x42, 0xDA, 0x83, 0x42, 0xDA, 0x84, 0x42,\n\t0xDA, 0x86, 0x42, 0xDA, 0x87, 0x42, 0xDA, 0x88,\n\t0x42, 0xDA, 0x8C, 0x42, 0xDA, 0x8D, 0x42, 0xDA,\n\t0x8E, 0x42, 0xDA, 0x91, 0x42, 0xDA, 0x98, 0x42,\n\t// Bytes 3c0 - 3ff\n\t0xDA, 0xA1, 0x42, 0xDA, 0xA4, 0x42, 0xDA, 0xA6,\n\t0x42, 0xDA, 0xA9, 0x42, 0xDA, 0xAD, 0x42, 0xDA,\n\t0xAF, 0x42, 0xDA, 0xB1, 0x42, 0xDA, 0xB3, 0x42,\n\t0xDA, 0xBA, 0x42, 0xDA, 0xBB, 0x42, 0xDA, 0xBE,\n\t0x42, 0xDB, 0x81, 0x42, 0xDB, 0x85, 0x42, 0xDB,\n\t0x86, 0x42, 0xDB, 0x87, 0x42, 0xDB, 0x88, 0x42,\n\t0xDB, 0x89, 0x42, 0xDB, 0x8B, 0x42, 0xDB, 0x8C,\n\t0x42, 0xDB, 0x90, 0x42, 0xDB, 0x92, 0x43, 0xE0,\n\t// Bytes 400 - 43f\n\t0xBC, 0x8B, 0x43, 0xE1, 0x83, 0x9C, 0x43, 0xE1,\n\t0x84, 0x80, 0x43, 0xE1, 0x84, 0x81, 0x43, 0xE1,\n\t0x84, 0x82, 0x43, 0xE1, 0x84, 0x83, 0x43, 0xE1,\n\t0x84, 0x84, 0x43, 0xE1, 0x84, 0x85, 0x43, 0xE1,\n\t0x84, 0x86, 0x43, 0xE1, 0x84, 0x87, 0x43, 0xE1,\n\t0x84, 0x88, 0x43, 0xE1, 0x84, 0x89, 0x43, 0xE1,\n\t0x84, 0x8A, 0x43, 0xE1, 0x84, 0x8B, 0x43, 0xE1,\n\t0x84, 0x8C, 0x43, 0xE1, 0x84, 0x8D, 0x43, 0xE1,\n\t// Bytes 440 - 47f\n\t0x84, 0x8E, 0x43, 0xE1, 0x84, 0x8F, 0x43, 0xE1,\n\t0x84, 0x90, 0x43, 0xE1, 0x84, 0x91, 0x43, 0xE1,\n\t0x84, 0x92, 0x43, 0xE1, 0x84, 0x94, 0x43, 0xE1,\n\t0x84, 0x95, 0x43, 0xE1, 0x84, 0x9A, 0x43, 0xE1,\n\t0x84, 0x9C, 0x43, 0xE1, 0x84, 0x9D, 0x43, 0xE1,\n\t0x84, 0x9E, 0x43, 0xE1, 0x84, 0xA0, 0x43, 0xE1,\n\t0x84, 0xA1, 0x43, 0xE1, 0x84, 0xA2, 0x43, 0xE1,\n\t0x84, 0xA3, 0x43, 0xE1, 0x84, 0xA7, 0x43, 0xE1,\n\t// Bytes 480 - 4bf\n\t0x84, 0xA9, 0x43, 0xE1, 0x84, 0xAB, 0x43, 0xE1,\n\t0x84, 0xAC, 0x43, 0xE1, 0x84, 0xAD, 0x43, 0xE1,\n\t0x84, 0xAE, 0x43, 0xE1, 0x84, 0xAF, 0x43, 0xE1,\n\t0x84, 0xB2, 0x43, 0xE1, 0x84, 0xB6, 0x43, 0xE1,\n\t0x85, 0x80, 0x43, 0xE1, 0x85, 0x87, 0x43, 0xE1,\n\t0x85, 0x8C, 0x43, 0xE1, 0x85, 0x97, 0x43, 0xE1,\n\t0x85, 0x98, 0x43, 0xE1, 0x85, 0x99, 0x43, 0xE1,\n\t0x85, 0xA0, 0x43, 0xE1, 0x86, 0x84, 0x43, 0xE1,\n\t// Bytes 4c0 - 4ff\n\t0x86, 0x85, 0x43, 0xE1, 0x86, 0x88, 0x43, 0xE1,\n\t0x86, 0x91, 0x43, 0xE1, 0x86, 0x92, 0x43, 0xE1,\n\t0x86, 0x94, 0x43, 0xE1, 0x86, 0x9E, 0x43, 0xE1,\n\t0x86, 0xA1, 0x43, 0xE1, 0x87, 0x87, 0x43, 0xE1,\n\t0x87, 0x88, 0x43, 0xE1, 0x87, 0x8C, 0x43, 0xE1,\n\t0x87, 0x8E, 0x43, 0xE1, 0x87, 0x93, 0x43, 0xE1,\n\t0x87, 0x97, 0x43, 0xE1, 0x87, 0x99, 0x43, 0xE1,\n\t0x87, 0x9D, 0x43, 0xE1, 0x87, 0x9F, 0x43, 0xE1,\n\t// Bytes 500 - 53f\n\t0x87, 0xB1, 0x43, 0xE1, 0x87, 0xB2, 0x43, 0xE1,\n\t0xB4, 0x82, 0x43, 0xE1, 0xB4, 0x96, 0x43, 0xE1,\n\t0xB4, 0x97, 0x43, 0xE1, 0xB4, 0x9C, 0x43, 0xE1,\n\t0xB4, 0x9D, 0x43, 0xE1, 0xB4, 0xA5, 0x43, 0xE1,\n\t0xB5, 0xBB, 0x43, 0xE1, 0xB6, 0x85, 0x43, 0xE1,\n\t0xB6, 0x91, 0x43, 0xE2, 0x80, 0x82, 0x43, 0xE2,\n\t0x80, 0x83, 0x43, 0xE2, 0x80, 0x90, 0x43, 0xE2,\n\t0x80, 0x93, 0x43, 0xE2, 0x80, 0x94, 0x43, 0xE2,\n\t// Bytes 540 - 57f\n\t0x82, 0xA9, 0x43, 0xE2, 0x86, 0x90, 0x43, 0xE2,\n\t0x86, 0x91, 0x43, 0xE2, 0x86, 0x92, 0x43, 0xE2,\n\t0x86, 0x93, 0x43, 0xE2, 0x88, 0x82, 0x43, 0xE2,\n\t0x88, 0x87, 0x43, 0xE2, 0x88, 0x91, 0x43, 0xE2,\n\t0x88, 0x92, 0x43, 0xE2, 0x94, 0x82, 0x43, 0xE2,\n\t0x96, 0xA0, 0x43, 0xE2, 0x97, 0x8B, 0x43, 0xE2,\n\t0xA6, 0x85, 0x43, 0xE2, 0xA6, 0x86, 0x43, 0xE2,\n\t0xB1, 0xB1, 0x43, 0xE2, 0xB5, 0xA1, 0x43, 0xE3,\n\t// Bytes 580 - 5bf\n\t0x80, 0x81, 0x43, 0xE3, 0x80, 0x82, 0x43, 0xE3,\n\t0x80, 0x88, 0x43, 0xE3, 0x80, 0x89, 0x43, 0xE3,\n\t0x80, 0x8A, 0x43, 0xE3, 0x80, 0x8B, 0x43, 0xE3,\n\t0x80, 0x8C, 0x43, 0xE3, 0x80, 0x8D, 0x43, 0xE3,\n\t0x80, 0x8E, 0x43, 0xE3, 0x80, 0x8F, 0x43, 0xE3,\n\t0x80, 0x90, 0x43, 0xE3, 0x80, 0x91, 0x43, 0xE3,\n\t0x80, 0x92, 0x43, 0xE3, 0x80, 0x94, 0x43, 0xE3,\n\t0x80, 0x95, 0x43, 0xE3, 0x80, 0x96, 0x43, 0xE3,\n\t// Bytes 5c0 - 5ff\n\t0x80, 0x97, 0x43, 0xE3, 0x82, 0xA1, 0x43, 0xE3,\n\t0x82, 0xA2, 0x43, 0xE3, 0x82, 0xA3, 0x43, 0xE3,\n\t0x82, 0xA4, 0x43, 0xE3, 0x82, 0xA5, 0x43, 0xE3,\n\t0x82, 0xA6, 0x43, 0xE3, 0x82, 0xA7, 0x43, 0xE3,\n\t0x82, 0xA8, 0x43, 0xE3, 0x82, 0xA9, 0x43, 0xE3,\n\t0x82, 0xAA, 0x43, 0xE3, 0x82, 0xAB, 0x43, 0xE3,\n\t0x82, 0xAD, 0x43, 0xE3, 0x82, 0xAF, 0x43, 0xE3,\n\t0x82, 0xB1, 0x43, 0xE3, 0x82, 0xB3, 0x43, 0xE3,\n\t// Bytes 600 - 63f\n\t0x82, 0xB5, 0x43, 0xE3, 0x82, 0xB7, 0x43, 0xE3,\n\t0x82, 0xB9, 0x43, 0xE3, 0x82, 0xBB, 0x43, 0xE3,\n\t0x82, 0xBD, 0x43, 0xE3, 0x82, 0xBF, 0x43, 0xE3,\n\t0x83, 0x81, 0x43, 0xE3, 0x83, 0x83, 0x43, 0xE3,\n\t0x83, 0x84, 0x43, 0xE3, 0x83, 0x86, 0x43, 0xE3,\n\t0x83, 0x88, 0x43, 0xE3, 0x83, 0x8A, 0x43, 0xE3,\n\t0x83, 0x8B, 0x43, 0xE3, 0x83, 0x8C, 0x43, 0xE3,\n\t0x83, 0x8D, 0x43, 0xE3, 0x83, 0x8E, 0x43, 0xE3,\n\t// Bytes 640 - 67f\n\t0x83, 0x8F, 0x43, 0xE3, 0x83, 0x92, 0x43, 0xE3,\n\t0x83, 0x95, 0x43, 0xE3, 0x83, 0x98, 0x43, 0xE3,\n\t0x83, 0x9B, 0x43, 0xE3, 0x83, 0x9E, 0x43, 0xE3,\n\t0x83, 0x9F, 0x43, 0xE3, 0x83, 0xA0, 0x43, 0xE3,\n\t0x83, 0xA1, 0x43, 0xE3, 0x83, 0xA2, 0x43, 0xE3,\n\t0x83, 0xA3, 0x43, 0xE3, 0x83, 0xA4, 0x43, 0xE3,\n\t0x83, 0xA5, 0x43, 0xE3, 0x83, 0xA6, 0x43, 0xE3,\n\t0x83, 0xA7, 0x43, 0xE3, 0x83, 0xA8, 0x43, 0xE3,\n\t// Bytes 680 - 6bf\n\t0x83, 0xA9, 0x43, 0xE3, 0x83, 0xAA, 0x43, 0xE3,\n\t0x83, 0xAB, 0x43, 0xE3, 0x83, 0xAC, 0x43, 0xE3,\n\t0x83, 0xAD, 0x43, 0xE3, 0x83, 0xAF, 0x43, 0xE3,\n\t0x83, 0xB0, 0x43, 0xE3, 0x83, 0xB1, 0x43, 0xE3,\n\t0x83, 0xB2, 0x43, 0xE3, 0x83, 0xB3, 0x43, 0xE3,\n\t0x83, 0xBB, 0x43, 0xE3, 0x83, 0xBC, 0x43, 0xE3,\n\t0x92, 0x9E, 0x43, 0xE3, 0x92, 0xB9, 0x43, 0xE3,\n\t0x92, 0xBB, 0x43, 0xE3, 0x93, 0x9F, 0x43, 0xE3,\n\t// Bytes 6c0 - 6ff\n\t0x94, 0x95, 0x43, 0xE3, 0x9B, 0xAE, 0x43, 0xE3,\n\t0x9B, 0xBC, 0x43, 0xE3, 0x9E, 0x81, 0x43, 0xE3,\n\t0xA0, 0xAF, 0x43, 0xE3, 0xA1, 0xA2, 0x43, 0xE3,\n\t0xA1, 0xBC, 0x43, 0xE3, 0xA3, 0x87, 0x43, 0xE3,\n\t0xA3, 0xA3, 0x43, 0xE3, 0xA4, 0x9C, 0x43, 0xE3,\n\t0xA4, 0xBA, 0x43, 0xE3, 0xA8, 0xAE, 0x43, 0xE3,\n\t0xA9, 0xAC, 0x43, 0xE3, 0xAB, 0xA4, 0x43, 0xE3,\n\t0xAC, 0x88, 0x43, 0xE3, 0xAC, 0x99, 0x43, 0xE3,\n\t// Bytes 700 - 73f\n\t0xAD, 0x89, 0x43, 0xE3, 0xAE, 0x9D, 0x43, 0xE3,\n\t0xB0, 0x98, 0x43, 0xE3, 0xB1, 0x8E, 0x43, 0xE3,\n\t0xB4, 0xB3, 0x43, 0xE3, 0xB6, 0x96, 0x43, 0xE3,\n\t0xBA, 0xAC, 0x43, 0xE3, 0xBA, 0xB8, 0x43, 0xE3,\n\t0xBC, 0x9B, 0x43, 0xE3, 0xBF, 0xBC, 0x43, 0xE4,\n\t0x80, 0x88, 0x43, 0xE4, 0x80, 0x98, 0x43, 0xE4,\n\t0x80, 0xB9, 0x43, 0xE4, 0x81, 0x86, 0x43, 0xE4,\n\t0x82, 0x96, 0x43, 0xE4, 0x83, 0xA3, 0x43, 0xE4,\n\t// Bytes 740 - 77f\n\t0x84, 0xAF, 0x43, 0xE4, 0x88, 0x82, 0x43, 0xE4,\n\t0x88, 0xA7, 0x43, 0xE4, 0x8A, 0xA0, 0x43, 0xE4,\n\t0x8C, 0x81, 0x43, 0xE4, 0x8C, 0xB4, 0x43, 0xE4,\n\t0x8D, 0x99, 0x43, 0xE4, 0x8F, 0x95, 0x43, 0xE4,\n\t0x8F, 0x99, 0x43, 0xE4, 0x90, 0x8B, 0x43, 0xE4,\n\t0x91, 0xAB, 0x43, 0xE4, 0x94, 0xAB, 0x43, 0xE4,\n\t0x95, 0x9D, 0x43, 0xE4, 0x95, 0xA1, 0x43, 0xE4,\n\t0x95, 0xAB, 0x43, 0xE4, 0x97, 0x97, 0x43, 0xE4,\n\t// Bytes 780 - 7bf\n\t0x97, 0xB9, 0x43, 0xE4, 0x98, 0xB5, 0x43, 0xE4,\n\t0x9A, 0xBE, 0x43, 0xE4, 0x9B, 0x87, 0x43, 0xE4,\n\t0xA6, 0x95, 0x43, 0xE4, 0xA7, 0xA6, 0x43, 0xE4,\n\t0xA9, 0xAE, 0x43, 0xE4, 0xA9, 0xB6, 0x43, 0xE4,\n\t0xAA, 0xB2, 0x43, 0xE4, 0xAC, 0xB3, 0x43, 0xE4,\n\t0xAF, 0x8E, 0x43, 0xE4, 0xB3, 0x8E, 0x43, 0xE4,\n\t0xB3, 0xAD, 0x43, 0xE4, 0xB3, 0xB8, 0x43, 0xE4,\n\t0xB5, 0x96, 0x43, 0xE4, 0xB8, 0x80, 0x43, 0xE4,\n\t// Bytes 7c0 - 7ff\n\t0xB8, 0x81, 0x43, 0xE4, 0xB8, 0x83, 0x43, 0xE4,\n\t0xB8, 0x89, 0x43, 0xE4, 0xB8, 0x8A, 0x43, 0xE4,\n\t0xB8, 0x8B, 0x43, 0xE4, 0xB8, 0x8D, 0x43, 0xE4,\n\t0xB8, 0x99, 0x43, 0xE4, 0xB8, 0xA6, 0x43, 0xE4,\n\t0xB8, 0xA8, 0x43, 0xE4, 0xB8, 0xAD, 0x43, 0xE4,\n\t0xB8, 0xB2, 0x43, 0xE4, 0xB8, 0xB6, 0x43, 0xE4,\n\t0xB8, 0xB8, 0x43, 0xE4, 0xB8, 0xB9, 0x43, 0xE4,\n\t0xB8, 0xBD, 0x43, 0xE4, 0xB8, 0xBF, 0x43, 0xE4,\n\t// Bytes 800 - 83f\n\t0xB9, 0x81, 0x43, 0xE4, 0xB9, 0x99, 0x43, 0xE4,\n\t0xB9, 0x9D, 0x43, 0xE4, 0xBA, 0x82, 0x43, 0xE4,\n\t0xBA, 0x85, 0x43, 0xE4, 0xBA, 0x86, 0x43, 0xE4,\n\t0xBA, 0x8C, 0x43, 0xE4, 0xBA, 0x94, 0x43, 0xE4,\n\t0xBA, 0xA0, 0x43, 0xE4, 0xBA, 0xA4, 0x43, 0xE4,\n\t0xBA, 0xAE, 0x43, 0xE4, 0xBA, 0xBA, 0x43, 0xE4,\n\t0xBB, 0x80, 0x43, 0xE4, 0xBB, 0x8C, 0x43, 0xE4,\n\t0xBB, 0xA4, 0x43, 0xE4, 0xBC, 0x81, 0x43, 0xE4,\n\t// Bytes 840 - 87f\n\t0xBC, 0x91, 0x43, 0xE4, 0xBD, 0xA0, 0x43, 0xE4,\n\t0xBE, 0x80, 0x43, 0xE4, 0xBE, 0x86, 0x43, 0xE4,\n\t0xBE, 0x8B, 0x43, 0xE4, 0xBE, 0xAE, 0x43, 0xE4,\n\t0xBE, 0xBB, 0x43, 0xE4, 0xBE, 0xBF, 0x43, 0xE5,\n\t0x80, 0x82, 0x43, 0xE5, 0x80, 0xAB, 0x43, 0xE5,\n\t0x81, 0xBA, 0x43, 0xE5, 0x82, 0x99, 0x43, 0xE5,\n\t0x83, 0x8F, 0x43, 0xE5, 0x83, 0x9A, 0x43, 0xE5,\n\t0x83, 0xA7, 0x43, 0xE5, 0x84, 0xAA, 0x43, 0xE5,\n\t// Bytes 880 - 8bf\n\t0x84, 0xBF, 0x43, 0xE5, 0x85, 0x80, 0x43, 0xE5,\n\t0x85, 0x85, 0x43, 0xE5, 0x85, 0x8D, 0x43, 0xE5,\n\t0x85, 0x94, 0x43, 0xE5, 0x85, 0xA4, 0x43, 0xE5,\n\t0x85, 0xA5, 0x43, 0xE5, 0x85, 0xA7, 0x43, 0xE5,\n\t0x85, 0xA8, 0x43, 0xE5, 0x85, 0xA9, 0x43, 0xE5,\n\t0x85, 0xAB, 0x43, 0xE5, 0x85, 0xAD, 0x43, 0xE5,\n\t0x85, 0xB7, 0x43, 0xE5, 0x86, 0x80, 0x43, 0xE5,\n\t0x86, 0x82, 0x43, 0xE5, 0x86, 0x8D, 0x43, 0xE5,\n\t// Bytes 8c0 - 8ff\n\t0x86, 0x92, 0x43, 0xE5, 0x86, 0x95, 0x43, 0xE5,\n\t0x86, 0x96, 0x43, 0xE5, 0x86, 0x97, 0x43, 0xE5,\n\t0x86, 0x99, 0x43, 0xE5, 0x86, 0xA4, 0x43, 0xE5,\n\t0x86, 0xAB, 0x43, 0xE5, 0x86, 0xAC, 0x43, 0xE5,\n\t0x86, 0xB5, 0x43, 0xE5, 0x86, 0xB7, 0x43, 0xE5,\n\t0x87, 0x89, 0x43, 0xE5, 0x87, 0x8C, 0x43, 0xE5,\n\t0x87, 0x9C, 0x43, 0xE5, 0x87, 0x9E, 0x43, 0xE5,\n\t0x87, 0xA0, 0x43, 0xE5, 0x87, 0xB5, 0x43, 0xE5,\n\t// Bytes 900 - 93f\n\t0x88, 0x80, 0x43, 0xE5, 0x88, 0x83, 0x43, 0xE5,\n\t0x88, 0x87, 0x43, 0xE5, 0x88, 0x97, 0x43, 0xE5,\n\t0x88, 0x9D, 0x43, 0xE5, 0x88, 0xA9, 0x43, 0xE5,\n\t0x88, 0xBA, 0x43, 0xE5, 0x88, 0xBB, 0x43, 0xE5,\n\t0x89, 0x86, 0x43, 0xE5, 0x89, 0x8D, 0x43, 0xE5,\n\t0x89, 0xB2, 0x43, 0xE5, 0x89, 0xB7, 0x43, 0xE5,\n\t0x8A, 0x89, 0x43, 0xE5, 0x8A, 0x9B, 0x43, 0xE5,\n\t0x8A, 0xA3, 0x43, 0xE5, 0x8A, 0xB3, 0x43, 0xE5,\n\t// Bytes 940 - 97f\n\t0x8A, 0xB4, 0x43, 0xE5, 0x8B, 0x87, 0x43, 0xE5,\n\t0x8B, 0x89, 0x43, 0xE5, 0x8B, 0x92, 0x43, 0xE5,\n\t0x8B, 0x9E, 0x43, 0xE5, 0x8B, 0xA4, 0x43, 0xE5,\n\t0x8B, 0xB5, 0x43, 0xE5, 0x8B, 0xB9, 0x43, 0xE5,\n\t0x8B, 0xBA, 0x43, 0xE5, 0x8C, 0x85, 0x43, 0xE5,\n\t0x8C, 0x86, 0x43, 0xE5, 0x8C, 0x95, 0x43, 0xE5,\n\t0x8C, 0x97, 0x43, 0xE5, 0x8C, 0x9A, 0x43, 0xE5,\n\t0x8C, 0xB8, 0x43, 0xE5, 0x8C, 0xBB, 0x43, 0xE5,\n\t// Bytes 980 - 9bf\n\t0x8C, 0xBF, 0x43, 0xE5, 0x8D, 0x81, 0x43, 0xE5,\n\t0x8D, 0x84, 0x43, 0xE5, 0x8D, 0x85, 0x43, 0xE5,\n\t0x8D, 0x89, 0x43, 0xE5, 0x8D, 0x91, 0x43, 0xE5,\n\t0x8D, 0x94, 0x43, 0xE5, 0x8D, 0x9A, 0x43, 0xE5,\n\t0x8D, 0x9C, 0x43, 0xE5, 0x8D, 0xA9, 0x43, 0xE5,\n\t0x8D, 0xB0, 0x43, 0xE5, 0x8D, 0xB3, 0x43, 0xE5,\n\t0x8D, 0xB5, 0x43, 0xE5, 0x8D, 0xBD, 0x43, 0xE5,\n\t0x8D, 0xBF, 0x43, 0xE5, 0x8E, 0x82, 0x43, 0xE5,\n\t// Bytes 9c0 - 9ff\n\t0x8E, 0xB6, 0x43, 0xE5, 0x8F, 0x83, 0x43, 0xE5,\n\t0x8F, 0x88, 0x43, 0xE5, 0x8F, 0x8A, 0x43, 0xE5,\n\t0x8F, 0x8C, 0x43, 0xE5, 0x8F, 0x9F, 0x43, 0xE5,\n\t0x8F, 0xA3, 0x43, 0xE5, 0x8F, 0xA5, 0x43, 0xE5,\n\t0x8F, 0xAB, 0x43, 0xE5, 0x8F, 0xAF, 0x43, 0xE5,\n\t0x8F, 0xB1, 0x43, 0xE5, 0x8F, 0xB3, 0x43, 0xE5,\n\t0x90, 0x86, 0x43, 0xE5, 0x90, 0x88, 0x43, 0xE5,\n\t0x90, 0x8D, 0x43, 0xE5, 0x90, 0x8F, 0x43, 0xE5,\n\t// Bytes a00 - a3f\n\t0x90, 0x9D, 0x43, 0xE5, 0x90, 0xB8, 0x43, 0xE5,\n\t0x90, 0xB9, 0x43, 0xE5, 0x91, 0x82, 0x43, 0xE5,\n\t0x91, 0x88, 0x43, 0xE5, 0x91, 0xA8, 0x43, 0xE5,\n\t0x92, 0x9E, 0x43, 0xE5, 0x92, 0xA2, 0x43, 0xE5,\n\t0x92, 0xBD, 0x43, 0xE5, 0x93, 0xB6, 0x43, 0xE5,\n\t0x94, 0x90, 0x43, 0xE5, 0x95, 0x8F, 0x43, 0xE5,\n\t0x95, 0x93, 0x43, 0xE5, 0x95, 0x95, 0x43, 0xE5,\n\t0x95, 0xA3, 0x43, 0xE5, 0x96, 0x84, 0x43, 0xE5,\n\t// Bytes a40 - a7f\n\t0x96, 0x87, 0x43, 0xE5, 0x96, 0x99, 0x43, 0xE5,\n\t0x96, 0x9D, 0x43, 0xE5, 0x96, 0xAB, 0x43, 0xE5,\n\t0x96, 0xB3, 0x43, 0xE5, 0x96, 0xB6, 0x43, 0xE5,\n\t0x97, 0x80, 0x43, 0xE5, 0x97, 0x82, 0x43, 0xE5,\n\t0x97, 0xA2, 0x43, 0xE5, 0x98, 0x86, 0x43, 0xE5,\n\t0x99, 0x91, 0x43, 0xE5, 0x99, 0xA8, 0x43, 0xE5,\n\t0x99, 0xB4, 0x43, 0xE5, 0x9B, 0x97, 0x43, 0xE5,\n\t0x9B, 0x9B, 0x43, 0xE5, 0x9B, 0xB9, 0x43, 0xE5,\n\t// Bytes a80 - abf\n\t0x9C, 0x96, 0x43, 0xE5, 0x9C, 0x97, 0x43, 0xE5,\n\t0x9C, 0x9F, 0x43, 0xE5, 0x9C, 0xB0, 0x43, 0xE5,\n\t0x9E, 0x8B, 0x43, 0xE5, 0x9F, 0x8E, 0x43, 0xE5,\n\t0x9F, 0xB4, 0x43, 0xE5, 0xA0, 0x8D, 0x43, 0xE5,\n\t0xA0, 0xB1, 0x43, 0xE5, 0xA0, 0xB2, 0x43, 0xE5,\n\t0xA1, 0x80, 0x43, 0xE5, 0xA1, 0x9A, 0x43, 0xE5,\n\t0xA1, 0x9E, 0x43, 0xE5, 0xA2, 0xA8, 0x43, 0xE5,\n\t0xA2, 0xAC, 0x43, 0xE5, 0xA2, 0xB3, 0x43, 0xE5,\n\t// Bytes ac0 - aff\n\t0xA3, 0x98, 0x43, 0xE5, 0xA3, 0x9F, 0x43, 0xE5,\n\t0xA3, 0xAB, 0x43, 0xE5, 0xA3, 0xAE, 0x43, 0xE5,\n\t0xA3, 0xB0, 0x43, 0xE5, 0xA3, 0xB2, 0x43, 0xE5,\n\t0xA3, 0xB7, 0x43, 0xE5, 0xA4, 0x82, 0x43, 0xE5,\n\t0xA4, 0x86, 0x43, 0xE5, 0xA4, 0x8A, 0x43, 0xE5,\n\t0xA4, 0x95, 0x43, 0xE5, 0xA4, 0x9A, 0x43, 0xE5,\n\t0xA4, 0x9C, 0x43, 0xE5, 0xA4, 0xA2, 0x43, 0xE5,\n\t0xA4, 0xA7, 0x43, 0xE5, 0xA4, 0xA9, 0x43, 0xE5,\n\t// Bytes b00 - b3f\n\t0xA5, 0x84, 0x43, 0xE5, 0xA5, 0x88, 0x43, 0xE5,\n\t0xA5, 0x91, 0x43, 0xE5, 0xA5, 0x94, 0x43, 0xE5,\n\t0xA5, 0xA2, 0x43, 0xE5, 0xA5, 0xB3, 0x43, 0xE5,\n\t0xA7, 0x98, 0x43, 0xE5, 0xA7, 0xAC, 0x43, 0xE5,\n\t0xA8, 0x9B, 0x43, 0xE5, 0xA8, 0xA7, 0x43, 0xE5,\n\t0xA9, 0xA2, 0x43, 0xE5, 0xA9, 0xA6, 0x43, 0xE5,\n\t0xAA, 0xB5, 0x43, 0xE5, 0xAC, 0x88, 0x43, 0xE5,\n\t0xAC, 0xA8, 0x43, 0xE5, 0xAC, 0xBE, 0x43, 0xE5,\n\t// Bytes b40 - b7f\n\t0xAD, 0x90, 0x43, 0xE5, 0xAD, 0x97, 0x43, 0xE5,\n\t0xAD, 0xA6, 0x43, 0xE5, 0xAE, 0x80, 0x43, 0xE5,\n\t0xAE, 0x85, 0x43, 0xE5, 0xAE, 0x97, 0x43, 0xE5,\n\t0xAF, 0x83, 0x43, 0xE5, 0xAF, 0x98, 0x43, 0xE5,\n\t0xAF, 0xA7, 0x43, 0xE5, 0xAF, 0xAE, 0x43, 0xE5,\n\t0xAF, 0xB3, 0x43, 0xE5, 0xAF, 0xB8, 0x43, 0xE5,\n\t0xAF, 0xBF, 0x43, 0xE5, 0xB0, 0x86, 0x43, 0xE5,\n\t0xB0, 0x8F, 0x43, 0xE5, 0xB0, 0xA2, 0x43, 0xE5,\n\t// Bytes b80 - bbf\n\t0xB0, 0xB8, 0x43, 0xE5, 0xB0, 0xBF, 0x43, 0xE5,\n\t0xB1, 0xA0, 0x43, 0xE5, 0xB1, 0xA2, 0x43, 0xE5,\n\t0xB1, 0xA4, 0x43, 0xE5, 0xB1, 0xA5, 0x43, 0xE5,\n\t0xB1, 0xAE, 0x43, 0xE5, 0xB1, 0xB1, 0x43, 0xE5,\n\t0xB2, 0x8D, 0x43, 0xE5, 0xB3, 0x80, 0x43, 0xE5,\n\t0xB4, 0x99, 0x43, 0xE5, 0xB5, 0x83, 0x43, 0xE5,\n\t0xB5, 0x90, 0x43, 0xE5, 0xB5, 0xAB, 0x43, 0xE5,\n\t0xB5, 0xAE, 0x43, 0xE5, 0xB5, 0xBC, 0x43, 0xE5,\n\t// Bytes bc0 - bff\n\t0xB6, 0xB2, 0x43, 0xE5, 0xB6, 0xBA, 0x43, 0xE5,\n\t0xB7, 0x9B, 0x43, 0xE5, 0xB7, 0xA1, 0x43, 0xE5,\n\t0xB7, 0xA2, 0x43, 0xE5, 0xB7, 0xA5, 0x43, 0xE5,\n\t0xB7, 0xA6, 0x43, 0xE5, 0xB7, 0xB1, 0x43, 0xE5,\n\t0xB7, 0xBD, 0x43, 0xE5, 0xB7, 0xBE, 0x43, 0xE5,\n\t0xB8, 0xA8, 0x43, 0xE5, 0xB8, 0xBD, 0x43, 0xE5,\n\t0xB9, 0xA9, 0x43, 0xE5, 0xB9, 0xB2, 0x43, 0xE5,\n\t0xB9, 0xB4, 0x43, 0xE5, 0xB9, 0xBA, 0x43, 0xE5,\n\t// Bytes c00 - c3f\n\t0xB9, 0xBC, 0x43, 0xE5, 0xB9, 0xBF, 0x43, 0xE5,\n\t0xBA, 0xA6, 0x43, 0xE5, 0xBA, 0xB0, 0x43, 0xE5,\n\t0xBA, 0xB3, 0x43, 0xE5, 0xBA, 0xB6, 0x43, 0xE5,\n\t0xBB, 0x89, 0x43, 0xE5, 0xBB, 0x8A, 0x43, 0xE5,\n\t0xBB, 0x92, 0x43, 0xE5, 0xBB, 0x93, 0x43, 0xE5,\n\t0xBB, 0x99, 0x43, 0xE5, 0xBB, 0xAC, 0x43, 0xE5,\n\t0xBB, 0xB4, 0x43, 0xE5, 0xBB, 0xBE, 0x43, 0xE5,\n\t0xBC, 0x84, 0x43, 0xE5, 0xBC, 0x8B, 0x43, 0xE5,\n\t// Bytes c40 - c7f\n\t0xBC, 0x93, 0x43, 0xE5, 0xBC, 0xA2, 0x43, 0xE5,\n\t0xBD, 0x90, 0x43, 0xE5, 0xBD, 0x93, 0x43, 0xE5,\n\t0xBD, 0xA1, 0x43, 0xE5, 0xBD, 0xA2, 0x43, 0xE5,\n\t0xBD, 0xA9, 0x43, 0xE5, 0xBD, 0xAB, 0x43, 0xE5,\n\t0xBD, 0xB3, 0x43, 0xE5, 0xBE, 0x8B, 0x43, 0xE5,\n\t0xBE, 0x8C, 0x43, 0xE5, 0xBE, 0x97, 0x43, 0xE5,\n\t0xBE, 0x9A, 0x43, 0xE5, 0xBE, 0xA9, 0x43, 0xE5,\n\t0xBE, 0xAD, 0x43, 0xE5, 0xBF, 0x83, 0x43, 0xE5,\n\t// Bytes c80 - cbf\n\t0xBF, 0x8D, 0x43, 0xE5, 0xBF, 0x97, 0x43, 0xE5,\n\t0xBF, 0xB5, 0x43, 0xE5, 0xBF, 0xB9, 0x43, 0xE6,\n\t0x80, 0x92, 0x43, 0xE6, 0x80, 0x9C, 0x43, 0xE6,\n\t0x81, 0xB5, 0x43, 0xE6, 0x82, 0x81, 0x43, 0xE6,\n\t0x82, 0x94, 0x43, 0xE6, 0x83, 0x87, 0x43, 0xE6,\n\t0x83, 0x98, 0x43, 0xE6, 0x83, 0xA1, 0x43, 0xE6,\n\t0x84, 0x88, 0x43, 0xE6, 0x85, 0x84, 0x43, 0xE6,\n\t0x85, 0x88, 0x43, 0xE6, 0x85, 0x8C, 0x43, 0xE6,\n\t// Bytes cc0 - cff\n\t0x85, 0x8E, 0x43, 0xE6, 0x85, 0xA0, 0x43, 0xE6,\n\t0x85, 0xA8, 0x43, 0xE6, 0x85, 0xBA, 0x43, 0xE6,\n\t0x86, 0x8E, 0x43, 0xE6, 0x86, 0x90, 0x43, 0xE6,\n\t0x86, 0xA4, 0x43, 0xE6, 0x86, 0xAF, 0x43, 0xE6,\n\t0x86, 0xB2, 0x43, 0xE6, 0x87, 0x9E, 0x43, 0xE6,\n\t0x87, 0xB2, 0x43, 0xE6, 0x87, 0xB6, 0x43, 0xE6,\n\t0x88, 0x80, 0x43, 0xE6, 0x88, 0x88, 0x43, 0xE6,\n\t0x88, 0x90, 0x43, 0xE6, 0x88, 0x9B, 0x43, 0xE6,\n\t// Bytes d00 - d3f\n\t0x88, 0xAE, 0x43, 0xE6, 0x88, 0xB4, 0x43, 0xE6,\n\t0x88, 0xB6, 0x43, 0xE6, 0x89, 0x8B, 0x43, 0xE6,\n\t0x89, 0x93, 0x43, 0xE6, 0x89, 0x9D, 0x43, 0xE6,\n\t0x8A, 0x95, 0x43, 0xE6, 0x8A, 0xB1, 0x43, 0xE6,\n\t0x8B, 0x89, 0x43, 0xE6, 0x8B, 0x8F, 0x43, 0xE6,\n\t0x8B, 0x93, 0x43, 0xE6, 0x8B, 0x94, 0x43, 0xE6,\n\t0x8B, 0xBC, 0x43, 0xE6, 0x8B, 0xBE, 0x43, 0xE6,\n\t0x8C, 0x87, 0x43, 0xE6, 0x8C, 0xBD, 0x43, 0xE6,\n\t// Bytes d40 - d7f\n\t0x8D, 0x90, 0x43, 0xE6, 0x8D, 0x95, 0x43, 0xE6,\n\t0x8D, 0xA8, 0x43, 0xE6, 0x8D, 0xBB, 0x43, 0xE6,\n\t0x8E, 0x83, 0x43, 0xE6, 0x8E, 0xA0, 0x43, 0xE6,\n\t0x8E, 0xA9, 0x43, 0xE6, 0x8F, 0x84, 0x43, 0xE6,\n\t0x8F, 0x85, 0x43, 0xE6, 0x8F, 0xA4, 0x43, 0xE6,\n\t0x90, 0x9C, 0x43, 0xE6, 0x90, 0xA2, 0x43, 0xE6,\n\t0x91, 0x92, 0x43, 0xE6, 0x91, 0xA9, 0x43, 0xE6,\n\t0x91, 0xB7, 0x43, 0xE6, 0x91, 0xBE, 0x43, 0xE6,\n\t// Bytes d80 - dbf\n\t0x92, 0x9A, 0x43, 0xE6, 0x92, 0x9D, 0x43, 0xE6,\n\t0x93, 0x84, 0x43, 0xE6, 0x94, 0xAF, 0x43, 0xE6,\n\t0x94, 0xB4, 0x43, 0xE6, 0x95, 0x8F, 0x43, 0xE6,\n\t0x95, 0x96, 0x43, 0xE6, 0x95, 0xAC, 0x43, 0xE6,\n\t0x95, 0xB8, 0x43, 0xE6, 0x96, 0x87, 0x43, 0xE6,\n\t0x96, 0x97, 0x43, 0xE6, 0x96, 0x99, 0x43, 0xE6,\n\t0x96, 0xA4, 0x43, 0xE6, 0x96, 0xB0, 0x43, 0xE6,\n\t0x96, 0xB9, 0x43, 0xE6, 0x97, 0x85, 0x43, 0xE6,\n\t// Bytes dc0 - dff\n\t0x97, 0xA0, 0x43, 0xE6, 0x97, 0xA2, 0x43, 0xE6,\n\t0x97, 0xA3, 0x43, 0xE6, 0x97, 0xA5, 0x43, 0xE6,\n\t0x98, 0x93, 0x43, 0xE6, 0x98, 0xA0, 0x43, 0xE6,\n\t0x99, 0x89, 0x43, 0xE6, 0x99, 0xB4, 0x43, 0xE6,\n\t0x9A, 0x88, 0x43, 0xE6, 0x9A, 0x91, 0x43, 0xE6,\n\t0x9A, 0x9C, 0x43, 0xE6, 0x9A, 0xB4, 0x43, 0xE6,\n\t0x9B, 0x86, 0x43, 0xE6, 0x9B, 0xB0, 0x43, 0xE6,\n\t0x9B, 0xB4, 0x43, 0xE6, 0x9B, 0xB8, 0x43, 0xE6,\n\t// Bytes e00 - e3f\n\t0x9C, 0x80, 0x43, 0xE6, 0x9C, 0x88, 0x43, 0xE6,\n\t0x9C, 0x89, 0x43, 0xE6, 0x9C, 0x97, 0x43, 0xE6,\n\t0x9C, 0x9B, 0x43, 0xE6, 0x9C, 0xA1, 0x43, 0xE6,\n\t0x9C, 0xA8, 0x43, 0xE6, 0x9D, 0x8E, 0x43, 0xE6,\n\t0x9D, 0x93, 0x43, 0xE6, 0x9D, 0x96, 0x43, 0xE6,\n\t0x9D, 0x9E, 0x43, 0xE6, 0x9D, 0xBB, 0x43, 0xE6,\n\t0x9E, 0x85, 0x43, 0xE6, 0x9E, 0x97, 0x43, 0xE6,\n\t0x9F, 0xB3, 0x43, 0xE6, 0x9F, 0xBA, 0x43, 0xE6,\n\t// Bytes e40 - e7f\n\t0xA0, 0x97, 0x43, 0xE6, 0xA0, 0x9F, 0x43, 0xE6,\n\t0xA0, 0xAA, 0x43, 0xE6, 0xA1, 0x92, 0x43, 0xE6,\n\t0xA2, 0x81, 0x43, 0xE6, 0xA2, 0x85, 0x43, 0xE6,\n\t0xA2, 0x8E, 0x43, 0xE6, 0xA2, 0xA8, 0x43, 0xE6,\n\t0xA4, 0x94, 0x43, 0xE6, 0xA5, 0x82, 0x43, 0xE6,\n\t0xA6, 0xA3, 0x43, 0xE6, 0xA7, 0xAA, 0x43, 0xE6,\n\t0xA8, 0x82, 0x43, 0xE6, 0xA8, 0x93, 0x43, 0xE6,\n\t0xAA, 0xA8, 0x43, 0xE6, 0xAB, 0x93, 0x43, 0xE6,\n\t// Bytes e80 - ebf\n\t0xAB, 0x9B, 0x43, 0xE6, 0xAC, 0x84, 0x43, 0xE6,\n\t0xAC, 0xA0, 0x43, 0xE6, 0xAC, 0xA1, 0x43, 0xE6,\n\t0xAD, 0x94, 0x43, 0xE6, 0xAD, 0xA2, 0x43, 0xE6,\n\t0xAD, 0xA3, 0x43, 0xE6, 0xAD, 0xB2, 0x43, 0xE6,\n\t0xAD, 0xB7, 0x43, 0xE6, 0xAD, 0xB9, 0x43, 0xE6,\n\t0xAE, 0x9F, 0x43, 0xE6, 0xAE, 0xAE, 0x43, 0xE6,\n\t0xAE, 0xB3, 0x43, 0xE6, 0xAE, 0xBA, 0x43, 0xE6,\n\t0xAE, 0xBB, 0x43, 0xE6, 0xAF, 0x8B, 0x43, 0xE6,\n\t// Bytes ec0 - eff\n\t0xAF, 0x8D, 0x43, 0xE6, 0xAF, 0x94, 0x43, 0xE6,\n\t0xAF, 0x9B, 0x43, 0xE6, 0xB0, 0x8F, 0x43, 0xE6,\n\t0xB0, 0x94, 0x43, 0xE6, 0xB0, 0xB4, 0x43, 0xE6,\n\t0xB1, 0x8E, 0x43, 0xE6, 0xB1, 0xA7, 0x43, 0xE6,\n\t0xB2, 0x88, 0x43, 0xE6, 0xB2, 0xBF, 0x43, 0xE6,\n\t0xB3, 0x8C, 0x43, 0xE6, 0xB3, 0x8D, 0x43, 0xE6,\n\t0xB3, 0xA5, 0x43, 0xE6, 0xB3, 0xA8, 0x43, 0xE6,\n\t0xB4, 0x96, 0x43, 0xE6, 0xB4, 0x9B, 0x43, 0xE6,\n\t// Bytes f00 - f3f\n\t0xB4, 0x9E, 0x43, 0xE6, 0xB4, 0xB4, 0x43, 0xE6,\n\t0xB4, 0xBE, 0x43, 0xE6, 0xB5, 0x81, 0x43, 0xE6,\n\t0xB5, 0xA9, 0x43, 0xE6, 0xB5, 0xAA, 0x43, 0xE6,\n\t0xB5, 0xB7, 0x43, 0xE6, 0xB5, 0xB8, 0x43, 0xE6,\n\t0xB6, 0x85, 0x43, 0xE6, 0xB7, 0x8B, 0x43, 0xE6,\n\t0xB7, 0x9A, 0x43, 0xE6, 0xB7, 0xAA, 0x43, 0xE6,\n\t0xB7, 0xB9, 0x43, 0xE6, 0xB8, 0x9A, 0x43, 0xE6,\n\t0xB8, 0xAF, 0x43, 0xE6, 0xB9, 0xAE, 0x43, 0xE6,\n\t// Bytes f40 - f7f\n\t0xBA, 0x80, 0x43, 0xE6, 0xBA, 0x9C, 0x43, 0xE6,\n\t0xBA, 0xBA, 0x43, 0xE6, 0xBB, 0x87, 0x43, 0xE6,\n\t0xBB, 0x8B, 0x43, 0xE6, 0xBB, 0x91, 0x43, 0xE6,\n\t0xBB, 0x9B, 0x43, 0xE6, 0xBC, 0x8F, 0x43, 0xE6,\n\t0xBC, 0x94, 0x43, 0xE6, 0xBC, 0xA2, 0x43, 0xE6,\n\t0xBC, 0xA3, 0x43, 0xE6, 0xBD, 0xAE, 0x43, 0xE6,\n\t0xBF, 0x86, 0x43, 0xE6, 0xBF, 0xAB, 0x43, 0xE6,\n\t0xBF, 0xBE, 0x43, 0xE7, 0x80, 0x9B, 0x43, 0xE7,\n\t// Bytes f80 - fbf\n\t0x80, 0x9E, 0x43, 0xE7, 0x80, 0xB9, 0x43, 0xE7,\n\t0x81, 0x8A, 0x43, 0xE7, 0x81, 0xAB, 0x43, 0xE7,\n\t0x81, 0xB0, 0x43, 0xE7, 0x81, 0xB7, 0x43, 0xE7,\n\t0x81, 0xBD, 0x43, 0xE7, 0x82, 0x99, 0x43, 0xE7,\n\t0x82, 0xAD, 0x43, 0xE7, 0x83, 0x88, 0x43, 0xE7,\n\t0x83, 0x99, 0x43, 0xE7, 0x84, 0xA1, 0x43, 0xE7,\n\t0x85, 0x85, 0x43, 0xE7, 0x85, 0x89, 0x43, 0xE7,\n\t0x85, 0xAE, 0x43, 0xE7, 0x86, 0x9C, 0x43, 0xE7,\n\t// Bytes fc0 - fff\n\t0x87, 0x8E, 0x43, 0xE7, 0x87, 0x90, 0x43, 0xE7,\n\t0x88, 0x90, 0x43, 0xE7, 0x88, 0x9B, 0x43, 0xE7,\n\t0x88, 0xA8, 0x43, 0xE7, 0x88, 0xAA, 0x43, 0xE7,\n\t0x88, 0xAB, 0x43, 0xE7, 0x88, 0xB5, 0x43, 0xE7,\n\t0x88, 0xB6, 0x43, 0xE7, 0x88, 0xBB, 0x43, 0xE7,\n\t0x88, 0xBF, 0x43, 0xE7, 0x89, 0x87, 0x43, 0xE7,\n\t0x89, 0x90, 0x43, 0xE7, 0x89, 0x99, 0x43, 0xE7,\n\t0x89, 0x9B, 0x43, 0xE7, 0x89, 0xA2, 0x43, 0xE7,\n\t// Bytes 1000 - 103f\n\t0x89, 0xB9, 0x43, 0xE7, 0x8A, 0x80, 0x43, 0xE7,\n\t0x8A, 0x95, 0x43, 0xE7, 0x8A, 0xAC, 0x43, 0xE7,\n\t0x8A, 0xAF, 0x43, 0xE7, 0x8B, 0x80, 0x43, 0xE7,\n\t0x8B, 0xBC, 0x43, 0xE7, 0x8C, 0xAA, 0x43, 0xE7,\n\t0x8D, 0xB5, 0x43, 0xE7, 0x8D, 0xBA, 0x43, 0xE7,\n\t0x8E, 0x84, 0x43, 0xE7, 0x8E, 0x87, 0x43, 0xE7,\n\t0x8E, 0x89, 0x43, 0xE7, 0x8E, 0x8B, 0x43, 0xE7,\n\t0x8E, 0xA5, 0x43, 0xE7, 0x8E, 0xB2, 0x43, 0xE7,\n\t// Bytes 1040 - 107f\n\t0x8F, 0x9E, 0x43, 0xE7, 0x90, 0x86, 0x43, 0xE7,\n\t0x90, 0x89, 0x43, 0xE7, 0x90, 0xA2, 0x43, 0xE7,\n\t0x91, 0x87, 0x43, 0xE7, 0x91, 0x9C, 0x43, 0xE7,\n\t0x91, 0xA9, 0x43, 0xE7, 0x91, 0xB1, 0x43, 0xE7,\n\t0x92, 0x85, 0x43, 0xE7, 0x92, 0x89, 0x43, 0xE7,\n\t0x92, 0x98, 0x43, 0xE7, 0x93, 0x8A, 0x43, 0xE7,\n\t0x93, 0x9C, 0x43, 0xE7, 0x93, 0xA6, 0x43, 0xE7,\n\t0x94, 0x86, 0x43, 0xE7, 0x94, 0x98, 0x43, 0xE7,\n\t// Bytes 1080 - 10bf\n\t0x94, 0x9F, 0x43, 0xE7, 0x94, 0xA4, 0x43, 0xE7,\n\t0x94, 0xA8, 0x43, 0xE7, 0x94, 0xB0, 0x43, 0xE7,\n\t0x94, 0xB2, 0x43, 0xE7, 0x94, 0xB3, 0x43, 0xE7,\n\t0x94, 0xB7, 0x43, 0xE7, 0x94, 0xBB, 0x43, 0xE7,\n\t0x94, 0xBE, 0x43, 0xE7, 0x95, 0x99, 0x43, 0xE7,\n\t0x95, 0xA5, 0x43, 0xE7, 0x95, 0xB0, 0x43, 0xE7,\n\t0x96, 0x8B, 0x43, 0xE7, 0x96, 0x92, 0x43, 0xE7,\n\t0x97, 0xA2, 0x43, 0xE7, 0x98, 0x90, 0x43, 0xE7,\n\t// Bytes 10c0 - 10ff\n\t0x98, 0x9D, 0x43, 0xE7, 0x98, 0x9F, 0x43, 0xE7,\n\t0x99, 0x82, 0x43, 0xE7, 0x99, 0xA9, 0x43, 0xE7,\n\t0x99, 0xB6, 0x43, 0xE7, 0x99, 0xBD, 0x43, 0xE7,\n\t0x9A, 0xAE, 0x43, 0xE7, 0x9A, 0xBF, 0x43, 0xE7,\n\t0x9B, 0x8A, 0x43, 0xE7, 0x9B, 0x9B, 0x43, 0xE7,\n\t0x9B, 0xA3, 0x43, 0xE7, 0x9B, 0xA7, 0x43, 0xE7,\n\t0x9B, 0xAE, 0x43, 0xE7, 0x9B, 0xB4, 0x43, 0xE7,\n\t0x9C, 0x81, 0x43, 0xE7, 0x9C, 0x9E, 0x43, 0xE7,\n\t// Bytes 1100 - 113f\n\t0x9C, 0x9F, 0x43, 0xE7, 0x9D, 0x80, 0x43, 0xE7,\n\t0x9D, 0x8A, 0x43, 0xE7, 0x9E, 0x8B, 0x43, 0xE7,\n\t0x9E, 0xA7, 0x43, 0xE7, 0x9F, 0x9B, 0x43, 0xE7,\n\t0x9F, 0xA2, 0x43, 0xE7, 0x9F, 0xB3, 0x43, 0xE7,\n\t0xA1, 0x8E, 0x43, 0xE7, 0xA1, 0xAB, 0x43, 0xE7,\n\t0xA2, 0x8C, 0x43, 0xE7, 0xA2, 0x91, 0x43, 0xE7,\n\t0xA3, 0x8A, 0x43, 0xE7, 0xA3, 0x8C, 0x43, 0xE7,\n\t0xA3, 0xBB, 0x43, 0xE7, 0xA4, 0xAA, 0x43, 0xE7,\n\t// Bytes 1140 - 117f\n\t0xA4, 0xBA, 0x43, 0xE7, 0xA4, 0xBC, 0x43, 0xE7,\n\t0xA4, 0xBE, 0x43, 0xE7, 0xA5, 0x88, 0x43, 0xE7,\n\t0xA5, 0x89, 0x43, 0xE7, 0xA5, 0x90, 0x43, 0xE7,\n\t0xA5, 0x96, 0x43, 0xE7, 0xA5, 0x9D, 0x43, 0xE7,\n\t0xA5, 0x9E, 0x43, 0xE7, 0xA5, 0xA5, 0x43, 0xE7,\n\t0xA5, 0xBF, 0x43, 0xE7, 0xA6, 0x81, 0x43, 0xE7,\n\t0xA6, 0x8D, 0x43, 0xE7, 0xA6, 0x8E, 0x43, 0xE7,\n\t0xA6, 0x8F, 0x43, 0xE7, 0xA6, 0xAE, 0x43, 0xE7,\n\t// Bytes 1180 - 11bf\n\t0xA6, 0xB8, 0x43, 0xE7, 0xA6, 0xBE, 0x43, 0xE7,\n\t0xA7, 0x8A, 0x43, 0xE7, 0xA7, 0x98, 0x43, 0xE7,\n\t0xA7, 0xAB, 0x43, 0xE7, 0xA8, 0x9C, 0x43, 0xE7,\n\t0xA9, 0x80, 0x43, 0xE7, 0xA9, 0x8A, 0x43, 0xE7,\n\t0xA9, 0x8F, 0x43, 0xE7, 0xA9, 0xB4, 0x43, 0xE7,\n\t0xA9, 0xBA, 0x43, 0xE7, 0xAA, 0x81, 0x43, 0xE7,\n\t0xAA, 0xB1, 0x43, 0xE7, 0xAB, 0x8B, 0x43, 0xE7,\n\t0xAB, 0xAE, 0x43, 0xE7, 0xAB, 0xB9, 0x43, 0xE7,\n\t// Bytes 11c0 - 11ff\n\t0xAC, 0xA0, 0x43, 0xE7, 0xAE, 0x8F, 0x43, 0xE7,\n\t0xAF, 0x80, 0x43, 0xE7, 0xAF, 0x86, 0x43, 0xE7,\n\t0xAF, 0x89, 0x43, 0xE7, 0xB0, 0xBE, 0x43, 0xE7,\n\t0xB1, 0xA0, 0x43, 0xE7, 0xB1, 0xB3, 0x43, 0xE7,\n\t0xB1, 0xBB, 0x43, 0xE7, 0xB2, 0x92, 0x43, 0xE7,\n\t0xB2, 0xBE, 0x43, 0xE7, 0xB3, 0x92, 0x43, 0xE7,\n\t0xB3, 0x96, 0x43, 0xE7, 0xB3, 0xA3, 0x43, 0xE7,\n\t0xB3, 0xA7, 0x43, 0xE7, 0xB3, 0xA8, 0x43, 0xE7,\n\t// Bytes 1200 - 123f\n\t0xB3, 0xB8, 0x43, 0xE7, 0xB4, 0x80, 0x43, 0xE7,\n\t0xB4, 0x90, 0x43, 0xE7, 0xB4, 0xA2, 0x43, 0xE7,\n\t0xB4, 0xAF, 0x43, 0xE7, 0xB5, 0x82, 0x43, 0xE7,\n\t0xB5, 0x9B, 0x43, 0xE7, 0xB5, 0xA3, 0x43, 0xE7,\n\t0xB6, 0xA0, 0x43, 0xE7, 0xB6, 0xBE, 0x43, 0xE7,\n\t0xB7, 0x87, 0x43, 0xE7, 0xB7, 0xB4, 0x43, 0xE7,\n\t0xB8, 0x82, 0x43, 0xE7, 0xB8, 0x89, 0x43, 0xE7,\n\t0xB8, 0xB7, 0x43, 0xE7, 0xB9, 0x81, 0x43, 0xE7,\n\t// Bytes 1240 - 127f\n\t0xB9, 0x85, 0x43, 0xE7, 0xBC, 0xB6, 0x43, 0xE7,\n\t0xBC, 0xBE, 0x43, 0xE7, 0xBD, 0x91, 0x43, 0xE7,\n\t0xBD, 0xB2, 0x43, 0xE7, 0xBD, 0xB9, 0x43, 0xE7,\n\t0xBD, 0xBA, 0x43, 0xE7, 0xBE, 0x85, 0x43, 0xE7,\n\t0xBE, 0x8A, 0x43, 0xE7, 0xBE, 0x95, 0x43, 0xE7,\n\t0xBE, 0x9A, 0x43, 0xE7, 0xBE, 0xBD, 0x43, 0xE7,\n\t0xBF, 0xBA, 0x43, 0xE8, 0x80, 0x81, 0x43, 0xE8,\n\t0x80, 0x85, 0x43, 0xE8, 0x80, 0x8C, 0x43, 0xE8,\n\t// Bytes 1280 - 12bf\n\t0x80, 0x92, 0x43, 0xE8, 0x80, 0xB3, 0x43, 0xE8,\n\t0x81, 0x86, 0x43, 0xE8, 0x81, 0xA0, 0x43, 0xE8,\n\t0x81, 0xAF, 0x43, 0xE8, 0x81, 0xB0, 0x43, 0xE8,\n\t0x81, 0xBE, 0x43, 0xE8, 0x81, 0xBF, 0x43, 0xE8,\n\t0x82, 0x89, 0x43, 0xE8, 0x82, 0x8B, 0x43, 0xE8,\n\t0x82, 0xAD, 0x43, 0xE8, 0x82, 0xB2, 0x43, 0xE8,\n\t0x84, 0x83, 0x43, 0xE8, 0x84, 0xBE, 0x43, 0xE8,\n\t0x87, 0x98, 0x43, 0xE8, 0x87, 0xA3, 0x43, 0xE8,\n\t// Bytes 12c0 - 12ff\n\t0x87, 0xA8, 0x43, 0xE8, 0x87, 0xAA, 0x43, 0xE8,\n\t0x87, 0xAD, 0x43, 0xE8, 0x87, 0xB3, 0x43, 0xE8,\n\t0x87, 0xBC, 0x43, 0xE8, 0x88, 0x81, 0x43, 0xE8,\n\t0x88, 0x84, 0x43, 0xE8, 0x88, 0x8C, 0x43, 0xE8,\n\t0x88, 0x98, 0x43, 0xE8, 0x88, 0x9B, 0x43, 0xE8,\n\t0x88, 0x9F, 0x43, 0xE8, 0x89, 0xAE, 0x43, 0xE8,\n\t0x89, 0xAF, 0x43, 0xE8, 0x89, 0xB2, 0x43, 0xE8,\n\t0x89, 0xB8, 0x43, 0xE8, 0x89, 0xB9, 0x43, 0xE8,\n\t// Bytes 1300 - 133f\n\t0x8A, 0x8B, 0x43, 0xE8, 0x8A, 0x91, 0x43, 0xE8,\n\t0x8A, 0x9D, 0x43, 0xE8, 0x8A, 0xB1, 0x43, 0xE8,\n\t0x8A, 0xB3, 0x43, 0xE8, 0x8A, 0xBD, 0x43, 0xE8,\n\t0x8B, 0xA5, 0x43, 0xE8, 0x8B, 0xA6, 0x43, 0xE8,\n\t0x8C, 0x9D, 0x43, 0xE8, 0x8C, 0xA3, 0x43, 0xE8,\n\t0x8C, 0xB6, 0x43, 0xE8, 0x8D, 0x92, 0x43, 0xE8,\n\t0x8D, 0x93, 0x43, 0xE8, 0x8D, 0xA3, 0x43, 0xE8,\n\t0x8E, 0xAD, 0x43, 0xE8, 0x8E, 0xBD, 0x43, 0xE8,\n\t// Bytes 1340 - 137f\n\t0x8F, 0x89, 0x43, 0xE8, 0x8F, 0x8A, 0x43, 0xE8,\n\t0x8F, 0x8C, 0x43, 0xE8, 0x8F, 0x9C, 0x43, 0xE8,\n\t0x8F, 0xA7, 0x43, 0xE8, 0x8F, 0xAF, 0x43, 0xE8,\n\t0x8F, 0xB1, 0x43, 0xE8, 0x90, 0xBD, 0x43, 0xE8,\n\t0x91, 0x89, 0x43, 0xE8, 0x91, 0x97, 0x43, 0xE8,\n\t0x93, 0xAE, 0x43, 0xE8, 0x93, 0xB1, 0x43, 0xE8,\n\t0x93, 0xB3, 0x43, 0xE8, 0x93, 0xBC, 0x43, 0xE8,\n\t0x94, 0x96, 0x43, 0xE8, 0x95, 0xA4, 0x43, 0xE8,\n\t// Bytes 1380 - 13bf\n\t0x97, 0x8D, 0x43, 0xE8, 0x97, 0xBA, 0x43, 0xE8,\n\t0x98, 0x86, 0x43, 0xE8, 0x98, 0x92, 0x43, 0xE8,\n\t0x98, 0xAD, 0x43, 0xE8, 0x98, 0xBF, 0x43, 0xE8,\n\t0x99, 0x8D, 0x43, 0xE8, 0x99, 0x90, 0x43, 0xE8,\n\t0x99, 0x9C, 0x43, 0xE8, 0x99, 0xA7, 0x43, 0xE8,\n\t0x99, 0xA9, 0x43, 0xE8, 0x99, 0xAB, 0x43, 0xE8,\n\t0x9A, 0x88, 0x43, 0xE8, 0x9A, 0xA9, 0x43, 0xE8,\n\t0x9B, 0xA2, 0x43, 0xE8, 0x9C, 0x8E, 0x43, 0xE8,\n\t// Bytes 13c0 - 13ff\n\t0x9C, 0xA8, 0x43, 0xE8, 0x9D, 0xAB, 0x43, 0xE8,\n\t0x9D, 0xB9, 0x43, 0xE8, 0x9E, 0x86, 0x43, 0xE8,\n\t0x9E, 0xBA, 0x43, 0xE8, 0x9F, 0xA1, 0x43, 0xE8,\n\t0xA0, 0x81, 0x43, 0xE8, 0xA0, 0x9F, 0x43, 0xE8,\n\t0xA1, 0x80, 0x43, 0xE8, 0xA1, 0x8C, 0x43, 0xE8,\n\t0xA1, 0xA0, 0x43, 0xE8, 0xA1, 0xA3, 0x43, 0xE8,\n\t0xA3, 0x82, 0x43, 0xE8, 0xA3, 0x8F, 0x43, 0xE8,\n\t0xA3, 0x97, 0x43, 0xE8, 0xA3, 0x9E, 0x43, 0xE8,\n\t// Bytes 1400 - 143f\n\t0xA3, 0xA1, 0x43, 0xE8, 0xA3, 0xB8, 0x43, 0xE8,\n\t0xA3, 0xBA, 0x43, 0xE8, 0xA4, 0x90, 0x43, 0xE8,\n\t0xA5, 0x81, 0x43, 0xE8, 0xA5, 0xA4, 0x43, 0xE8,\n\t0xA5, 0xBE, 0x43, 0xE8, 0xA6, 0x86, 0x43, 0xE8,\n\t0xA6, 0x8B, 0x43, 0xE8, 0xA6, 0x96, 0x43, 0xE8,\n\t0xA7, 0x92, 0x43, 0xE8, 0xA7, 0xA3, 0x43, 0xE8,\n\t0xA8, 0x80, 0x43, 0xE8, 0xAA, 0xA0, 0x43, 0xE8,\n\t0xAA, 0xAA, 0x43, 0xE8, 0xAA, 0xBF, 0x43, 0xE8,\n\t// Bytes 1440 - 147f\n\t0xAB, 0x8B, 0x43, 0xE8, 0xAB, 0x92, 0x43, 0xE8,\n\t0xAB, 0x96, 0x43, 0xE8, 0xAB, 0xAD, 0x43, 0xE8,\n\t0xAB, 0xB8, 0x43, 0xE8, 0xAB, 0xBE, 0x43, 0xE8,\n\t0xAC, 0x81, 0x43, 0xE8, 0xAC, 0xB9, 0x43, 0xE8,\n\t0xAD, 0x98, 0x43, 0xE8, 0xAE, 0x80, 0x43, 0xE8,\n\t0xAE, 0x8A, 0x43, 0xE8, 0xB0, 0xB7, 0x43, 0xE8,\n\t0xB1, 0x86, 0x43, 0xE8, 0xB1, 0x88, 0x43, 0xE8,\n\t0xB1, 0x95, 0x43, 0xE8, 0xB1, 0xB8, 0x43, 0xE8,\n\t// Bytes 1480 - 14bf\n\t0xB2, 0x9D, 0x43, 0xE8, 0xB2, 0xA1, 0x43, 0xE8,\n\t0xB2, 0xA9, 0x43, 0xE8, 0xB2, 0xAB, 0x43, 0xE8,\n\t0xB3, 0x81, 0x43, 0xE8, 0xB3, 0x82, 0x43, 0xE8,\n\t0xB3, 0x87, 0x43, 0xE8, 0xB3, 0x88, 0x43, 0xE8,\n\t0xB3, 0x93, 0x43, 0xE8, 0xB4, 0x88, 0x43, 0xE8,\n\t0xB4, 0x9B, 0x43, 0xE8, 0xB5, 0xA4, 0x43, 0xE8,\n\t0xB5, 0xB0, 0x43, 0xE8, 0xB5, 0xB7, 0x43, 0xE8,\n\t0xB6, 0xB3, 0x43, 0xE8, 0xB6, 0xBC, 0x43, 0xE8,\n\t// Bytes 14c0 - 14ff\n\t0xB7, 0x8B, 0x43, 0xE8, 0xB7, 0xAF, 0x43, 0xE8,\n\t0xB7, 0xB0, 0x43, 0xE8, 0xBA, 0xAB, 0x43, 0xE8,\n\t0xBB, 0x8A, 0x43, 0xE8, 0xBB, 0x94, 0x43, 0xE8,\n\t0xBC, 0xA6, 0x43, 0xE8, 0xBC, 0xAA, 0x43, 0xE8,\n\t0xBC, 0xB8, 0x43, 0xE8, 0xBC, 0xBB, 0x43, 0xE8,\n\t0xBD, 0xA2, 0x43, 0xE8, 0xBE, 0x9B, 0x43, 0xE8,\n\t0xBE, 0x9E, 0x43, 0xE8, 0xBE, 0xB0, 0x43, 0xE8,\n\t0xBE, 0xB5, 0x43, 0xE8, 0xBE, 0xB6, 0x43, 0xE9,\n\t// Bytes 1500 - 153f\n\t0x80, 0xA3, 0x43, 0xE9, 0x80, 0xB8, 0x43, 0xE9,\n\t0x81, 0x8A, 0x43, 0xE9, 0x81, 0xA9, 0x43, 0xE9,\n\t0x81, 0xB2, 0x43, 0xE9, 0x81, 0xBC, 0x43, 0xE9,\n\t0x82, 0x8F, 0x43, 0xE9, 0x82, 0x91, 0x43, 0xE9,\n\t0x82, 0x94, 0x43, 0xE9, 0x83, 0x8E, 0x43, 0xE9,\n\t0x83, 0x9E, 0x43, 0xE9, 0x83, 0xB1, 0x43, 0xE9,\n\t0x83, 0xBD, 0x43, 0xE9, 0x84, 0x91, 0x43, 0xE9,\n\t0x84, 0x9B, 0x43, 0xE9, 0x85, 0x89, 0x43, 0xE9,\n\t// Bytes 1540 - 157f\n\t0x85, 0x8D, 0x43, 0xE9, 0x85, 0xAA, 0x43, 0xE9,\n\t0x86, 0x99, 0x43, 0xE9, 0x86, 0xB4, 0x43, 0xE9,\n\t0x87, 0x86, 0x43, 0xE9, 0x87, 0x8C, 0x43, 0xE9,\n\t0x87, 0x8F, 0x43, 0xE9, 0x87, 0x91, 0x43, 0xE9,\n\t0x88, 0xB4, 0x43, 0xE9, 0x88, 0xB8, 0x43, 0xE9,\n\t0x89, 0xB6, 0x43, 0xE9, 0x89, 0xBC, 0x43, 0xE9,\n\t0x8B, 0x97, 0x43, 0xE9, 0x8B, 0x98, 0x43, 0xE9,\n\t0x8C, 0x84, 0x43, 0xE9, 0x8D, 0x8A, 0x43, 0xE9,\n\t// Bytes 1580 - 15bf\n\t0x8F, 0xB9, 0x43, 0xE9, 0x90, 0x95, 0x43, 0xE9,\n\t0x95, 0xB7, 0x43, 0xE9, 0x96, 0x80, 0x43, 0xE9,\n\t0x96, 0x8B, 0x43, 0xE9, 0x96, 0xAD, 0x43, 0xE9,\n\t0x96, 0xB7, 0x43, 0xE9, 0x98, 0x9C, 0x43, 0xE9,\n\t0x98, 0xAE, 0x43, 0xE9, 0x99, 0x8B, 0x43, 0xE9,\n\t0x99, 0x8D, 0x43, 0xE9, 0x99, 0xB5, 0x43, 0xE9,\n\t0x99, 0xB8, 0x43, 0xE9, 0x99, 0xBC, 0x43, 0xE9,\n\t0x9A, 0x86, 0x43, 0xE9, 0x9A, 0xA3, 0x43, 0xE9,\n\t// Bytes 15c0 - 15ff\n\t0x9A, 0xB6, 0x43, 0xE9, 0x9A, 0xB7, 0x43, 0xE9,\n\t0x9A, 0xB8, 0x43, 0xE9, 0x9A, 0xB9, 0x43, 0xE9,\n\t0x9B, 0x83, 0x43, 0xE9, 0x9B, 0xA2, 0x43, 0xE9,\n\t0x9B, 0xA3, 0x43, 0xE9, 0x9B, 0xA8, 0x43, 0xE9,\n\t0x9B, 0xB6, 0x43, 0xE9, 0x9B, 0xB7, 0x43, 0xE9,\n\t0x9C, 0xA3, 0x43, 0xE9, 0x9C, 0xB2, 0x43, 0xE9,\n\t0x9D, 0x88, 0x43, 0xE9, 0x9D, 0x91, 0x43, 0xE9,\n\t0x9D, 0x96, 0x43, 0xE9, 0x9D, 0x9E, 0x43, 0xE9,\n\t// Bytes 1600 - 163f\n\t0x9D, 0xA2, 0x43, 0xE9, 0x9D, 0xA9, 0x43, 0xE9,\n\t0x9F, 0x8B, 0x43, 0xE9, 0x9F, 0x9B, 0x43, 0xE9,\n\t0x9F, 0xA0, 0x43, 0xE9, 0x9F, 0xAD, 0x43, 0xE9,\n\t0x9F, 0xB3, 0x43, 0xE9, 0x9F, 0xBF, 0x43, 0xE9,\n\t0xA0, 0x81, 0x43, 0xE9, 0xA0, 0x85, 0x43, 0xE9,\n\t0xA0, 0x8B, 0x43, 0xE9, 0xA0, 0x98, 0x43, 0xE9,\n\t0xA0, 0xA9, 0x43, 0xE9, 0xA0, 0xBB, 0x43, 0xE9,\n\t0xA1, 0x9E, 0x43, 0xE9, 0xA2, 0xA8, 0x43, 0xE9,\n\t// Bytes 1640 - 167f\n\t0xA3, 0x9B, 0x43, 0xE9, 0xA3, 0x9F, 0x43, 0xE9,\n\t0xA3, 0xA2, 0x43, 0xE9, 0xA3, 0xAF, 0x43, 0xE9,\n\t0xA3, 0xBC, 0x43, 0xE9, 0xA4, 0xA8, 0x43, 0xE9,\n\t0xA4, 0xA9, 0x43, 0xE9, 0xA6, 0x96, 0x43, 0xE9,\n\t0xA6, 0x99, 0x43, 0xE9, 0xA6, 0xA7, 0x43, 0xE9,\n\t0xA6, 0xAC, 0x43, 0xE9, 0xA7, 0x82, 0x43, 0xE9,\n\t0xA7, 0xB1, 0x43, 0xE9, 0xA7, 0xBE, 0x43, 0xE9,\n\t0xA9, 0xAA, 0x43, 0xE9, 0xAA, 0xA8, 0x43, 0xE9,\n\t// Bytes 1680 - 16bf\n\t0xAB, 0x98, 0x43, 0xE9, 0xAB, 0x9F, 0x43, 0xE9,\n\t0xAC, 0x92, 0x43, 0xE9, 0xAC, 0xA5, 0x43, 0xE9,\n\t0xAC, 0xAF, 0x43, 0xE9, 0xAC, 0xB2, 0x43, 0xE9,\n\t0xAC, 0xBC, 0x43, 0xE9, 0xAD, 0x9A, 0x43, 0xE9,\n\t0xAD, 0xAF, 0x43, 0xE9, 0xB1, 0x80, 0x43, 0xE9,\n\t0xB1, 0x97, 0x43, 0xE9, 0xB3, 0xA5, 0x43, 0xE9,\n\t0xB3, 0xBD, 0x43, 0xE9, 0xB5, 0xA7, 0x43, 0xE9,\n\t0xB6, 0xB4, 0x43, 0xE9, 0xB7, 0xBA, 0x43, 0xE9,\n\t// Bytes 16c0 - 16ff\n\t0xB8, 0x9E, 0x43, 0xE9, 0xB9, 0xB5, 0x43, 0xE9,\n\t0xB9, 0xBF, 0x43, 0xE9, 0xBA, 0x97, 0x43, 0xE9,\n\t0xBA, 0x9F, 0x43, 0xE9, 0xBA, 0xA5, 0x43, 0xE9,\n\t0xBA, 0xBB, 0x43, 0xE9, 0xBB, 0x83, 0x43, 0xE9,\n\t0xBB, 0x8D, 0x43, 0xE9, 0xBB, 0x8E, 0x43, 0xE9,\n\t0xBB, 0x91, 0x43, 0xE9, 0xBB, 0xB9, 0x43, 0xE9,\n\t0xBB, 0xBD, 0x43, 0xE9, 0xBB, 0xBE, 0x43, 0xE9,\n\t0xBC, 0x85, 0x43, 0xE9, 0xBC, 0x8E, 0x43, 0xE9,\n\t// Bytes 1700 - 173f\n\t0xBC, 0x8F, 0x43, 0xE9, 0xBC, 0x93, 0x43, 0xE9,\n\t0xBC, 0x96, 0x43, 0xE9, 0xBC, 0xA0, 0x43, 0xE9,\n\t0xBC, 0xBB, 0x43, 0xE9, 0xBD, 0x83, 0x43, 0xE9,\n\t0xBD, 0x8A, 0x43, 0xE9, 0xBD, 0x92, 0x43, 0xE9,\n\t0xBE, 0x8D, 0x43, 0xE9, 0xBE, 0x8E, 0x43, 0xE9,\n\t0xBE, 0x9C, 0x43, 0xE9, 0xBE, 0x9F, 0x43, 0xE9,\n\t0xBE, 0xA0, 0x43, 0xEA, 0x99, 0x91, 0x43, 0xEA,\n\t0x9A, 0x89, 0x43, 0xEA, 0x9C, 0xA7, 0x43, 0xEA,\n\t// Bytes 1740 - 177f\n\t0x9D, 0xAF, 0x43, 0xEA, 0x9E, 0x8E, 0x43, 0xEA,\n\t0xAC, 0xB7, 0x43, 0xEA, 0xAD, 0x92, 0x43, 0xEA,\n\t0xAD, 0xA6, 0x43, 0xEA, 0xAD, 0xA7, 0x44, 0xF0,\n\t0x9D, 0xBC, 0x84, 0x44, 0xF0, 0x9D, 0xBC, 0x85,\n\t0x44, 0xF0, 0x9D, 0xBC, 0x86, 0x44, 0xF0, 0x9D,\n\t0xBC, 0x88, 0x44, 0xF0, 0x9D, 0xBC, 0x8A, 0x44,\n\t0xF0, 0x9D, 0xBC, 0x9E, 0x44, 0xF0, 0xA0, 0x84,\n\t0xA2, 0x44, 0xF0, 0xA0, 0x94, 0x9C, 0x44, 0xF0,\n\t// Bytes 1780 - 17bf\n\t0xA0, 0x94, 0xA5, 0x44, 0xF0, 0xA0, 0x95, 0x8B,\n\t0x44, 0xF0, 0xA0, 0x98, 0xBA, 0x44, 0xF0, 0xA0,\n\t0xA0, 0x84, 0x44, 0xF0, 0xA0, 0xA3, 0x9E, 0x44,\n\t0xF0, 0xA0, 0xA8, 0xAC, 0x44, 0xF0, 0xA0, 0xAD,\n\t0xA3, 0x44, 0xF0, 0xA1, 0x93, 0xA4, 0x44, 0xF0,\n\t0xA1, 0x9A, 0xA8, 0x44, 0xF0, 0xA1, 0x9B, 0xAA,\n\t0x44, 0xF0, 0xA1, 0xA7, 0x88, 0x44, 0xF0, 0xA1,\n\t0xAC, 0x98, 0x44, 0xF0, 0xA1, 0xB4, 0x8B, 0x44,\n\t// Bytes 17c0 - 17ff\n\t0xF0, 0xA1, 0xB7, 0xA4, 0x44, 0xF0, 0xA1, 0xB7,\n\t0xA6, 0x44, 0xF0, 0xA2, 0x86, 0x83, 0x44, 0xF0,\n\t0xA2, 0x86, 0x9F, 0x44, 0xF0, 0xA2, 0x8C, 0xB1,\n\t0x44, 0xF0, 0xA2, 0x9B, 0x94, 0x44, 0xF0, 0xA2,\n\t0xA1, 0x84, 0x44, 0xF0, 0xA2, 0xA1, 0x8A, 0x44,\n\t0xF0, 0xA2, 0xAC, 0x8C, 0x44, 0xF0, 0xA2, 0xAF,\n\t0xB1, 0x44, 0xF0, 0xA3, 0x80, 0x8A, 0x44, 0xF0,\n\t0xA3, 0x8A, 0xB8, 0x44, 0xF0, 0xA3, 0x8D, 0x9F,\n\t// Bytes 1800 - 183f\n\t0x44, 0xF0, 0xA3, 0x8E, 0x93, 0x44, 0xF0, 0xA3,\n\t0x8E, 0x9C, 0x44, 0xF0, 0xA3, 0x8F, 0x83, 0x44,\n\t0xF0, 0xA3, 0x8F, 0x95, 0x44, 0xF0, 0xA3, 0x91,\n\t0xAD, 0x44, 0xF0, 0xA3, 0x9A, 0xA3, 0x44, 0xF0,\n\t0xA3, 0xA2, 0xA7, 0x44, 0xF0, 0xA3, 0xAA, 0x8D,\n\t0x44, 0xF0, 0xA3, 0xAB, 0xBA, 0x44, 0xF0, 0xA3,\n\t0xB2, 0xBC, 0x44, 0xF0, 0xA3, 0xB4, 0x9E, 0x44,\n\t0xF0, 0xA3, 0xBB, 0x91, 0x44, 0xF0, 0xA3, 0xBD,\n\t// Bytes 1840 - 187f\n\t0x9E, 0x44, 0xF0, 0xA3, 0xBE, 0x8E, 0x44, 0xF0,\n\t0xA4, 0x89, 0xA3, 0x44, 0xF0, 0xA4, 0x8B, 0xAE,\n\t0x44, 0xF0, 0xA4, 0x8E, 0xAB, 0x44, 0xF0, 0xA4,\n\t0x98, 0x88, 0x44, 0xF0, 0xA4, 0x9C, 0xB5, 0x44,\n\t0xF0, 0xA4, 0xA0, 0x94, 0x44, 0xF0, 0xA4, 0xB0,\n\t0xB6, 0x44, 0xF0, 0xA4, 0xB2, 0x92, 0x44, 0xF0,\n\t0xA4, 0xBE, 0xA1, 0x44, 0xF0, 0xA4, 0xBE, 0xB8,\n\t0x44, 0xF0, 0xA5, 0x81, 0x84, 0x44, 0xF0, 0xA5,\n\t// Bytes 1880 - 18bf\n\t0x83, 0xB2, 0x44, 0xF0, 0xA5, 0x83, 0xB3, 0x44,\n\t0xF0, 0xA5, 0x84, 0x99, 0x44, 0xF0, 0xA5, 0x84,\n\t0xB3, 0x44, 0xF0, 0xA5, 0x89, 0x89, 0x44, 0xF0,\n\t0xA5, 0x90, 0x9D, 0x44, 0xF0, 0xA5, 0x98, 0xA6,\n\t0x44, 0xF0, 0xA5, 0x9A, 0x9A, 0x44, 0xF0, 0xA5,\n\t0x9B, 0x85, 0x44, 0xF0, 0xA5, 0xA5, 0xBC, 0x44,\n\t0xF0, 0xA5, 0xAA, 0xA7, 0x44, 0xF0, 0xA5, 0xAE,\n\t0xAB, 0x44, 0xF0, 0xA5, 0xB2, 0x80, 0x44, 0xF0,\n\t// Bytes 18c0 - 18ff\n\t0xA5, 0xB3, 0x90, 0x44, 0xF0, 0xA5, 0xBE, 0x86,\n\t0x44, 0xF0, 0xA6, 0x87, 0x9A, 0x44, 0xF0, 0xA6,\n\t0x88, 0xA8, 0x44, 0xF0, 0xA6, 0x89, 0x87, 0x44,\n\t0xF0, 0xA6, 0x8B, 0x99, 0x44, 0xF0, 0xA6, 0x8C,\n\t0xBE, 0x44, 0xF0, 0xA6, 0x93, 0x9A, 0x44, 0xF0,\n\t0xA6, 0x94, 0xA3, 0x44, 0xF0, 0xA6, 0x96, 0xA8,\n\t0x44, 0xF0, 0xA6, 0x9E, 0xA7, 0x44, 0xF0, 0xA6,\n\t0x9E, 0xB5, 0x44, 0xF0, 0xA6, 0xAC, 0xBC, 0x44,\n\t// Bytes 1900 - 193f\n\t0xF0, 0xA6, 0xB0, 0xB6, 0x44, 0xF0, 0xA6, 0xB3,\n\t0x95, 0x44, 0xF0, 0xA6, 0xB5, 0xAB, 0x44, 0xF0,\n\t0xA6, 0xBC, 0xAC, 0x44, 0xF0, 0xA6, 0xBE, 0xB1,\n\t0x44, 0xF0, 0xA7, 0x83, 0x92, 0x44, 0xF0, 0xA7,\n\t0x8F, 0x8A, 0x44, 0xF0, 0xA7, 0x99, 0xA7, 0x44,\n\t0xF0, 0xA7, 0xA2, 0xAE, 0x44, 0xF0, 0xA7, 0xA5,\n\t0xA6, 0x44, 0xF0, 0xA7, 0xB2, 0xA8, 0x44, 0xF0,\n\t0xA7, 0xBB, 0x93, 0x44, 0xF0, 0xA7, 0xBC, 0xAF,\n\t// Bytes 1940 - 197f\n\t0x44, 0xF0, 0xA8, 0x97, 0x92, 0x44, 0xF0, 0xA8,\n\t0x97, 0xAD, 0x44, 0xF0, 0xA8, 0x9C, 0xAE, 0x44,\n\t0xF0, 0xA8, 0xAF, 0xBA, 0x44, 0xF0, 0xA8, 0xB5,\n\t0xB7, 0x44, 0xF0, 0xA9, 0x85, 0x85, 0x44, 0xF0,\n\t0xA9, 0x87, 0x9F, 0x44, 0xF0, 0xA9, 0x88, 0x9A,\n\t0x44, 0xF0, 0xA9, 0x90, 0x8A, 0x44, 0xF0, 0xA9,\n\t0x92, 0x96, 0x44, 0xF0, 0xA9, 0x96, 0xB6, 0x44,\n\t0xF0, 0xA9, 0xAC, 0xB0, 0x44, 0xF0, 0xAA, 0x83,\n\t// Bytes 1980 - 19bf\n\t0x8E, 0x44, 0xF0, 0xAA, 0x84, 0x85, 0x44, 0xF0,\n\t0xAA, 0x88, 0x8E, 0x44, 0xF0, 0xAA, 0x8A, 0x91,\n\t0x44, 0xF0, 0xAA, 0x8E, 0x92, 0x44, 0xF0, 0xAA,\n\t0x98, 0x80, 0x42, 0x21, 0x21, 0x42, 0x21, 0x3F,\n\t0x42, 0x2E, 0x2E, 0x42, 0x30, 0x2C, 0x42, 0x30,\n\t0x2E, 0x42, 0x31, 0x2C, 0x42, 0x31, 0x2E, 0x42,\n\t0x31, 0x30, 0x42, 0x31, 0x31, 0x42, 0x31, 0x32,\n\t0x42, 0x31, 0x33, 0x42, 0x31, 0x34, 0x42, 0x31,\n\t// Bytes 19c0 - 19ff\n\t0x35, 0x42, 0x31, 0x36, 0x42, 0x31, 0x37, 0x42,\n\t0x31, 0x38, 0x42, 0x31, 0x39, 0x42, 0x32, 0x2C,\n\t0x42, 0x32, 0x2E, 0x42, 0x32, 0x30, 0x42, 0x32,\n\t0x31, 0x42, 0x32, 0x32, 0x42, 0x32, 0x33, 0x42,\n\t0x32, 0x34, 0x42, 0x32, 0x35, 0x42, 0x32, 0x36,\n\t0x42, 0x32, 0x37, 0x42, 0x32, 0x38, 0x42, 0x32,\n\t0x39, 0x42, 0x33, 0x2C, 0x42, 0x33, 0x2E, 0x42,\n\t0x33, 0x30, 0x42, 0x33, 0x31, 0x42, 0x33, 0x32,\n\t// Bytes 1a00 - 1a3f\n\t0x42, 0x33, 0x33, 0x42, 0x33, 0x34, 0x42, 0x33,\n\t0x35, 0x42, 0x33, 0x36, 0x42, 0x33, 0x37, 0x42,\n\t0x33, 0x38, 0x42, 0x33, 0x39, 0x42, 0x34, 0x2C,\n\t0x42, 0x34, 0x2E, 0x42, 0x34, 0x30, 0x42, 0x34,\n\t0x31, 0x42, 0x34, 0x32, 0x42, 0x34, 0x33, 0x42,\n\t0x34, 0x34, 0x42, 0x34, 0x35, 0x42, 0x34, 0x36,\n\t0x42, 0x34, 0x37, 0x42, 0x34, 0x38, 0x42, 0x34,\n\t0x39, 0x42, 0x35, 0x2C, 0x42, 0x35, 0x2E, 0x42,\n\t// Bytes 1a40 - 1a7f\n\t0x35, 0x30, 0x42, 0x36, 0x2C, 0x42, 0x36, 0x2E,\n\t0x42, 0x37, 0x2C, 0x42, 0x37, 0x2E, 0x42, 0x38,\n\t0x2C, 0x42, 0x38, 0x2E, 0x42, 0x39, 0x2C, 0x42,\n\t0x39, 0x2E, 0x42, 0x3D, 0x3D, 0x42, 0x3F, 0x21,\n\t0x42, 0x3F, 0x3F, 0x42, 0x41, 0x55, 0x42, 0x42,\n\t0x71, 0x42, 0x43, 0x44, 0x42, 0x44, 0x4A, 0x42,\n\t0x44, 0x5A, 0x42, 0x44, 0x7A, 0x42, 0x47, 0x42,\n\t0x42, 0x47, 0x79, 0x42, 0x48, 0x50, 0x42, 0x48,\n\t// Bytes 1a80 - 1abf\n\t0x56, 0x42, 0x48, 0x67, 0x42, 0x48, 0x7A, 0x42,\n\t0x49, 0x49, 0x42, 0x49, 0x4A, 0x42, 0x49, 0x55,\n\t0x42, 0x49, 0x56, 0x42, 0x49, 0x58, 0x42, 0x4B,\n\t0x42, 0x42, 0x4B, 0x4B, 0x42, 0x4B, 0x4D, 0x42,\n\t0x4C, 0x4A, 0x42, 0x4C, 0x6A, 0x42, 0x4D, 0x42,\n\t0x42, 0x4D, 0x43, 0x42, 0x4D, 0x44, 0x42, 0x4D,\n\t0x52, 0x42, 0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42,\n\t0x4E, 0x4A, 0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F,\n\t// Bytes 1ac0 - 1aff\n\t0x42, 0x50, 0x48, 0x42, 0x50, 0x52, 0x42, 0x50,\n\t0x61, 0x42, 0x52, 0x73, 0x42, 0x53, 0x44, 0x42,\n\t0x53, 0x4D, 0x42, 0x53, 0x53, 0x42, 0x53, 0x76,\n\t0x42, 0x54, 0x4D, 0x42, 0x56, 0x49, 0x42, 0x57,\n\t0x43, 0x42, 0x57, 0x5A, 0x42, 0x57, 0x62, 0x42,\n\t0x58, 0x49, 0x42, 0x63, 0x63, 0x42, 0x63, 0x64,\n\t0x42, 0x63, 0x6D, 0x42, 0x64, 0x42, 0x42, 0x64,\n\t0x61, 0x42, 0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42,\n\t// Bytes 1b00 - 1b3f\n\t0x64, 0x7A, 0x42, 0x65, 0x56, 0x42, 0x66, 0x66,\n\t0x42, 0x66, 0x69, 0x42, 0x66, 0x6C, 0x42, 0x66,\n\t0x6D, 0x42, 0x68, 0x61, 0x42, 0x69, 0x69, 0x42,\n\t0x69, 0x6A, 0x42, 0x69, 0x6E, 0x42, 0x69, 0x76,\n\t0x42, 0x69, 0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B,\n\t0x56, 0x42, 0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42,\n\t0x6B, 0x6C, 0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74,\n\t0x42, 0x6C, 0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C,\n\t// Bytes 1b40 - 1b7f\n\t0x6E, 0x42, 0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42,\n\t0x6D, 0x33, 0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56,\n\t0x42, 0x6D, 0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D,\n\t0x67, 0x42, 0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42,\n\t0x6D, 0x73, 0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46,\n\t0x42, 0x6E, 0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E,\n\t0x6A, 0x42, 0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42,\n\t0x6F, 0x56, 0x42, 0x70, 0x41, 0x42, 0x70, 0x46,\n\t// Bytes 1b80 - 1bbf\n\t0x42, 0x70, 0x56, 0x42, 0x70, 0x57, 0x42, 0x70,\n\t0x63, 0x42, 0x70, 0x73, 0x42, 0x73, 0x72, 0x42,\n\t0x73, 0x74, 0x42, 0x76, 0x69, 0x42, 0x78, 0x69,\n\t0x43, 0x28, 0x31, 0x29, 0x43, 0x28, 0x32, 0x29,\n\t0x43, 0x28, 0x33, 0x29, 0x43, 0x28, 0x34, 0x29,\n\t0x43, 0x28, 0x35, 0x29, 0x43, 0x28, 0x36, 0x29,\n\t0x43, 0x28, 0x37, 0x29, 0x43, 0x28, 0x38, 0x29,\n\t0x43, 0x28, 0x39, 0x29, 0x43, 0x28, 0x41, 0x29,\n\t// Bytes 1bc0 - 1bff\n\t0x43, 0x28, 0x42, 0x29, 0x43, 0x28, 0x43, 0x29,\n\t0x43, 0x28, 0x44, 0x29, 0x43, 0x28, 0x45, 0x29,\n\t0x43, 0x28, 0x46, 0x29, 0x43, 0x28, 0x47, 0x29,\n\t0x43, 0x28, 0x48, 0x29, 0x43, 0x28, 0x49, 0x29,\n\t0x43, 0x28, 0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29,\n\t0x43, 0x28, 0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29,\n\t0x43, 0x28, 0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29,\n\t0x43, 0x28, 0x50, 0x29, 0x43, 0x28, 0x51, 0x29,\n\t// Bytes 1c00 - 1c3f\n\t0x43, 0x28, 0x52, 0x29, 0x43, 0x28, 0x53, 0x29,\n\t0x43, 0x28, 0x54, 0x29, 0x43, 0x28, 0x55, 0x29,\n\t0x43, 0x28, 0x56, 0x29, 0x43, 0x28, 0x57, 0x29,\n\t0x43, 0x28, 0x58, 0x29, 0x43, 0x28, 0x59, 0x29,\n\t0x43, 0x28, 0x5A, 0x29, 0x43, 0x28, 0x61, 0x29,\n\t0x43, 0x28, 0x62, 0x29, 0x43, 0x28, 0x63, 0x29,\n\t0x43, 0x28, 0x64, 0x29, 0x43, 0x28, 0x65, 0x29,\n\t0x43, 0x28, 0x66, 0x29, 0x43, 0x28, 0x67, 0x29,\n\t// Bytes 1c40 - 1c7f\n\t0x43, 0x28, 0x68, 0x29, 0x43, 0x28, 0x69, 0x29,\n\t0x43, 0x28, 0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29,\n\t0x43, 0x28, 0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29,\n\t0x43, 0x28, 0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29,\n\t0x43, 0x28, 0x70, 0x29, 0x43, 0x28, 0x71, 0x29,\n\t0x43, 0x28, 0x72, 0x29, 0x43, 0x28, 0x73, 0x29,\n\t0x43, 0x28, 0x74, 0x29, 0x43, 0x28, 0x75, 0x29,\n\t0x43, 0x28, 0x76, 0x29, 0x43, 0x28, 0x77, 0x29,\n\t// Bytes 1c80 - 1cbf\n\t0x43, 0x28, 0x78, 0x29, 0x43, 0x28, 0x79, 0x29,\n\t0x43, 0x28, 0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E,\n\t0x43, 0x31, 0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E,\n\t0x43, 0x31, 0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E,\n\t0x43, 0x31, 0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E,\n\t0x43, 0x31, 0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E,\n\t0x43, 0x31, 0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E,\n\t0x43, 0x32, 0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D,\n\t// Bytes 1cc0 - 1cff\n\t0x43, 0x3D, 0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E,\n\t0x43, 0x46, 0x41, 0x58, 0x43, 0x47, 0x48, 0x7A,\n\t0x43, 0x47, 0x50, 0x61, 0x43, 0x49, 0x49, 0x49,\n\t0x43, 0x4C, 0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7,\n\t0x43, 0x4D, 0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61,\n\t0x43, 0x4D, 0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D,\n\t0x43, 0x50, 0x50, 0x56, 0x43, 0x50, 0x54, 0x45,\n\t0x43, 0x54, 0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A,\n\t// Bytes 1d00 - 1d3f\n\t0x43, 0x56, 0x49, 0x49, 0x43, 0x58, 0x49, 0x49,\n\t0x43, 0x61, 0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73,\n\t0x43, 0x61, 0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72,\n\t0x43, 0x63, 0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75,\n\t0x43, 0x63, 0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32,\n\t0x43, 0x63, 0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32,\n\t0x43, 0x64, 0x6D, 0x33, 0x43, 0x65, 0x72, 0x67,\n\t0x43, 0x66, 0x66, 0x69, 0x43, 0x66, 0x66, 0x6C,\n\t// Bytes 1d40 - 1d7f\n\t0x43, 0x67, 0x61, 0x6C, 0x43, 0x68, 0x50, 0x61,\n\t0x43, 0x69, 0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A,\n\t0x43, 0x6B, 0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32,\n\t0x43, 0x6B, 0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9,\n\t0x43, 0x6C, 0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7,\n\t0x43, 0x6D, 0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32,\n\t0x43, 0x6D, 0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C,\n\t0x43, 0x72, 0x61, 0x64, 0x43, 0x76, 0x69, 0x69,\n\t// Bytes 1d80 - 1dbf\n\t0x43, 0x78, 0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43,\n\t0x43, 0xC2, 0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E,\n\t0x43, 0xCE, 0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46,\n\t0x43, 0xCE, 0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57,\n\t0x43, 0xCE, 0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C,\n\t0x43, 0xCE, 0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73,\n\t0x44, 0x28, 0x31, 0x30, 0x29, 0x44, 0x28, 0x31,\n\t0x31, 0x29, 0x44, 0x28, 0x31, 0x32, 0x29, 0x44,\n\t// Bytes 1dc0 - 1dff\n\t0x28, 0x31, 0x33, 0x29, 0x44, 0x28, 0x31, 0x34,\n\t0x29, 0x44, 0x28, 0x31, 0x35, 0x29, 0x44, 0x28,\n\t0x31, 0x36, 0x29, 0x44, 0x28, 0x31, 0x37, 0x29,\n\t0x44, 0x28, 0x31, 0x38, 0x29, 0x44, 0x28, 0x31,\n\t0x39, 0x29, 0x44, 0x28, 0x32, 0x30, 0x29, 0x44,\n\t0x30, 0xE7, 0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81,\n\t0x84, 0x44, 0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31,\n\t0xE6, 0x9C, 0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9,\n\t// Bytes 1e00 - 1e3f\n\t0x44, 0x32, 0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6,\n\t0x9C, 0x88, 0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44,\n\t0x33, 0xE6, 0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C,\n\t0x88, 0x44, 0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34,\n\t0xE6, 0x97, 0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88,\n\t0x44, 0x34, 0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6,\n\t0x97, 0xA5, 0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44,\n\t0x35, 0xE7, 0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97,\n\t// Bytes 1e40 - 1e7f\n\t0xA5, 0x44, 0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36,\n\t0xE7, 0x82, 0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5,\n\t0x44, 0x37, 0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7,\n\t0x82, 0xB9, 0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44,\n\t0x38, 0xE6, 0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82,\n\t0xB9, 0x44, 0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39,\n\t0xE6, 0x9C, 0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9,\n\t0x44, 0x56, 0x49, 0x49, 0x49, 0x44, 0x61, 0x2E,\n\t// Bytes 1e80 - 1ebf\n\t0x6D, 0x2E, 0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44,\n\t0x70, 0x2E, 0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69,\n\t0x69, 0x44, 0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5,\n\t0xB4, 0xD5, 0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB,\n\t0x44, 0xD5, 0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4,\n\t0xD5, 0xB6, 0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44,\n\t0xD7, 0x90, 0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9,\n\t0xB4, 0x44, 0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8,\n\t// Bytes 1ec0 - 1eff\n\t0xA8, 0xD8, 0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8,\n\t0xD8, 0xB2, 0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44,\n\t0xD8, 0xA8, 0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9,\n\t0x87, 0x44, 0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8,\n\t0xA8, 0xD9, 0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC,\n\t0x44, 0xD8, 0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA,\n\t0xD8, 0xAE, 0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44,\n\t// Bytes 1f00 - 1f3f\n\t0xD8, 0xAA, 0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9,\n\t0x85, 0x44, 0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAA, 0xD9, 0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB,\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44,\n\t0xD8, 0xAB, 0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9,\n\t0x85, 0x44, 0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAB, 0xD9, 0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89,\n\t// Bytes 1f40 - 1f7f\n\t0x44, 0xD8, 0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC,\n\t0xD8, 0xAD, 0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44,\n\t0xD8, 0xAC, 0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9,\n\t0x8A, 0x44, 0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xAD, 0xD9, 0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE,\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44,\n\t0xD8, 0xAE, 0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9,\n\t// Bytes 1f80 - 1fbf\n\t0x89, 0x44, 0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB3, 0xD8, 0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB3, 0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB4, 0xD8, 0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4,\n\t// Bytes 1fc0 - 1fff\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB4, 0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44,\n\t0xD8, 0xB5, 0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8,\n\t// Bytes 2000 - 203f\n\t0xB6, 0xD8, 0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1,\n\t0x44, 0xD8, 0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6,\n\t0xD9, 0x89, 0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44,\n\t0xD8, 0xB7, 0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9,\n\t0x85, 0x44, 0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8,\n\t0xB7, 0xD9, 0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85,\n\t0x44, 0xD8, 0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44,\n\t// Bytes 2040 - 207f\n\t0xD8, 0xB9, 0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8,\n\t0xBA, 0xD9, 0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A,\n\t0x44, 0xD9, 0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x81, 0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9,\n\t0x89, 0x44, 0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9,\n\t0x82, 0xD8, 0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85,\n\t// Bytes 2080 - 20bf\n\t0x44, 0xD9, 0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x83, 0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x83, 0xD9, 0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85,\n\t0x44, 0xD9, 0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x84, 0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8,\n\t// Bytes 20c0 - 20ff\n\t0xAD, 0x44, 0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x84, 0xD9, 0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87,\n\t0x44, 0xD9, 0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x85, 0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x85, 0xD9, 0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89,\n\t0x44, 0xD9, 0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86,\n\t// Bytes 2100 - 213f\n\t0xD8, 0xAC, 0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44,\n\t0xD9, 0x86, 0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8,\n\t0xB1, 0x44, 0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9,\n\t0x86, 0xD9, 0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86,\n\t0x44, 0xD9, 0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86,\n\t0xD9, 0x89, 0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44,\n\t0xD9, 0x87, 0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9,\n\t0x85, 0x44, 0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9,\n\t// Bytes 2140 - 217f\n\t0x87, 0xD9, 0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4,\n\t0x44, 0xD9, 0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x8A, 0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8,\n\t0xB2, 0x44, 0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9,\n\t0x8A, 0xD9, 0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87,\n\t0x44, 0xD9, 0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44,\n\t// Bytes 2180 - 21bf\n\t0xDB, 0x87, 0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84,\n\t0x80, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x82, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x83, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x85, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x86, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x87, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x89, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x8C, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29,\n\t// Bytes 21c0 - 21ff\n\t0x45, 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x90, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x91, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x92, 0x29,\n\t0x45, 0x28, 0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28,\n\t0xE4, 0xB8, 0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8,\n\t0x89, 0x29, 0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29,\n\t0x45, 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28,\n\t0xE4, 0xBA, 0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB,\n\t// Bytes 2200 - 223f\n\t0xA3, 0x29, 0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29,\n\t0x45, 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28,\n\t0xE5, 0x85, 0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85,\n\t0xAD, 0x29, 0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29,\n\t0x45, 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28,\n\t0xE5, 0x8D, 0x94, 0x29, 0x45, 0x28, 0xE5, 0x90,\n\t0x8D, 0x29, 0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29,\n\t0x45, 0x28, 0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28,\n\t// Bytes 2240 - 227f\n\t0xE5, 0x9C, 0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD,\n\t0xA6, 0x29, 0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29,\n\t0x45, 0x28, 0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28,\n\t0xE6, 0x9C, 0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C,\n\t0xA8, 0x29, 0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29,\n\t0x45, 0x28, 0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28,\n\t0xE7, 0x81, 0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89,\n\t0xB9, 0x29, 0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29,\n\t// Bytes 2280 - 22bf\n\t0x45, 0x28, 0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28,\n\t0xE7, 0xA5, 0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5,\n\t0xAD, 0x29, 0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29,\n\t0x45, 0x28, 0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28,\n\t0xE8, 0xB2, 0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3,\n\t0x87, 0x29, 0x45, 0x28, 0xE9, 0x87, 0x91, 0x29,\n\t0x45, 0x30, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6,\n\t// Bytes 22c0 - 22ff\n\t0x9C, 0x88, 0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x31, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7,\n\t0x82, 0xB9, 0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5,\n\t0x45, 0x31, 0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t// Bytes 2300 - 233f\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x36, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x38, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9,\n\t// Bytes 2340 - 237f\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x34, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x35,\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x37, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x38, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x39,\n\t0x45, 0x32, 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x30, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6,\n\t// Bytes 2380 - 23bf\n\t0x97, 0xA5, 0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5,\n\t0x45, 0x32, 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t// Bytes 23c0 - 23ff\n\t0x38, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0xE2, 0x81, 0x84, 0x33,\n\t0x45, 0x32, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6,\n\t0x97, 0xA5, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x34,\n\t0x45, 0x33, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x34, 0xE2, 0x81,\n\t0x84, 0x35, 0x45, 0x35, 0xE2, 0x81, 0x84, 0x36,\n\t// Bytes 2400 - 243f\n\t0x45, 0x35, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x37,\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x41, 0xE2, 0x88,\n\t0x95, 0x6D, 0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D,\n\t0x45, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x46, 0x31,\n\t0xE2, 0x81, 0x84, 0x31, 0x30, 0x46, 0x43, 0xE2,\n\t0x88, 0x95, 0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88,\n\t0x95, 0x73, 0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9,\n\t// Bytes 2440 - 247f\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85,\n\t0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46,\n\t0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE,\n\t0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC,\n\t// Bytes 2480 - 24bf\n\t0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46,\n\t0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8,\n\t0xAA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89,\n\t0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t// Bytes 24c0 - 24ff\n\t0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAD, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC,\n\t0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8,\n\t0xAC, 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89,\n\t0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8,\n\t// Bytes 2500 - 253f\n\t0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3,\n\t0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8,\n\t0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE,\n\t0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5,\n\t// Bytes 2540 - 257f\n\t0xD9, 0x84, 0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9,\n\t0x84, 0xDB, 0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46,\n\t0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8,\n\t0xB7, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8,\n\t// Bytes 2580 - 25bf\n\t0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8,\n\t0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81,\n\t0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9,\n\t0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84,\n\t// Bytes 25c0 - 25ff\n\t0xDB, 0x92, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85,\n\t0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x83, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84,\n\t0xD8, 0xAC, 0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8,\n\t0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9,\n\t// Bytes 2600 - 263f\n\t0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9,\n\t0x84, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC,\n\t0xD8, 0xAE, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9,\n\t0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A,\n\t// Bytes 2640 - 267f\n\t0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9,\n\t0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85,\n\t0xD8, 0xAE, 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9,\n\t0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46,\n\t// Bytes 2680 - 26bf\n\t0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9,\n\t0x86, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t// Bytes 26c0 - 26ff\n\t0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8,\n\t0xA7, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A,\n\t// Bytes 2700 - 273f\n\t0xD9, 0x94, 0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xD9, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9,\n\t0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9,\n\t// Bytes 2740 - 277f\n\t0x94, 0xDB, 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xDB, 0x90, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB,\n\t0x95, 0x46, 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2,\n\t0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46,\n\t0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0,\n\t0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD,\n\t0x80, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82,\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0,\n\t// Bytes 2780 - 27bf\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7,\n\t0x46, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46,\n\t0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0,\n\t0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE,\n\t0x9C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1,\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0,\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE,\n\t// Bytes 27c0 - 27ff\n\t0xB7, 0x46, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0x46, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46,\n\t0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2,\n\t0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81,\n\t0xBB, 0xE3, 0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88,\n\t0xE3, 0x82, 0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x83, 0xAD, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82,\n\t0xB3, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88,\n\t// Bytes 2800 - 283f\n\t0x46, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46,\n\t0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3,\n\t0x83, 0x9B, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83,\n\t0x9F, 0xE3, 0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA,\n\t0xE3, 0x83, 0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3,\n\t0x83, 0xA0, 0x46, 0xE4, 0xBB, 0xA4, 0xE5, 0x92,\n\t0x8C, 0x46, 0xE5, 0xA4, 0xA7, 0xE6, 0xAD, 0xA3,\n\t0x46, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, 0x90, 0x46,\n\t// Bytes 2840 - 287f\n\t0xE6, 0x98, 0x8E, 0xE6, 0xB2, 0xBB, 0x46, 0xE6,\n\t0x98, 0xAD, 0xE5, 0x92, 0x8C, 0x47, 0x72, 0x61,\n\t0x64, 0xE2, 0x88, 0x95, 0x73, 0x47, 0xE3, 0x80,\n\t0x94, 0x53, 0xE3, 0x80, 0x95, 0x48, 0x28, 0xE1,\n\t0x84, 0x80, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x29,\n\t0x48, 0x28, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1,\n\t// Bytes 2880 - 28bf\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x86, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x87, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x89,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x8B, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,\n\t0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x29,\n\t// Bytes 28c0 - 28ff\n\t0x48, 0x28, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1,\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x90, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x91, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x92,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x72, 0x61, 0x64,\n\t0xE2, 0x88, 0x95, 0x73, 0x32, 0x48, 0xD8, 0xA7,\n\t0xD9, 0x83, 0xD8, 0xA8, 0xD8, 0xB1, 0x48, 0xD8,\n\t0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87, 0x48,\n\t// Bytes 2900 - 293f\n\t0xD8, 0xB1, 0xD8, 0xB3, 0xD9, 0x88, 0xD9, 0x84,\n\t0x48, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7, 0xD9,\n\t0x84, 0x48, 0xD8, 0xB5, 0xD9, 0x84, 0xD8, 0xB9,\n\t0xD9, 0x85, 0x48, 0xD8, 0xB9, 0xD9, 0x84, 0xD9,\n\t0x8A, 0xD9, 0x87, 0x48, 0xD9, 0x85, 0xD8, 0xAD,\n\t0xD9, 0x85, 0xD8, 0xAF, 0x48, 0xD9, 0x88, 0xD8,\n\t0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x49, 0xE2, 0x80,\n\t0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x49,\n\t// Bytes 2940 - 297f\n\t0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80,\n\t0xB5, 0x49, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB,\n\t0xE2, 0x88, 0xAB, 0x49, 0xE2, 0x88, 0xAE, 0xE2,\n\t0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x49, 0xE3, 0x80,\n\t0x94, 0xE4, 0xB8, 0x89, 0xE3, 0x80, 0x95, 0x49,\n\t0xE3, 0x80, 0x94, 0xE4, 0xBA, 0x8C, 0xE3, 0x80,\n\t0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0x8B, 0x9D,\n\t0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5,\n\t// Bytes 2980 - 29bf\n\t0xAE, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,\n\t0x94, 0xE6, 0x89, 0x93, 0xE3, 0x80, 0x95, 0x49,\n\t0xE3, 0x80, 0x94, 0xE6, 0x95, 0x97, 0xE3, 0x80,\n\t0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x9C, 0xAC,\n\t0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7,\n\t0x82, 0xB9, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,\n\t0x94, 0xE7, 0x9B, 0x97, 0xE3, 0x80, 0x95, 0x49,\n\t0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t// Bytes 29c0 - 29ff\n\t0xAB, 0x49, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x81, 0x49, 0xE3, 0x82, 0xA6, 0xE3,\n\t0x82, 0xA9, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x82,\n\t0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0x49,\n\t0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xA0, 0x49, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xA4,\n\t0xE3, 0x83, 0xAA, 0x49, 0xE3, 0x82, 0xB1, 0xE3,\n\t0x83, 0xBC, 0xE3, 0x82, 0xB9, 0x49, 0xE3, 0x82,\n\t// Bytes 2a00 - 2a3f\n\t0xB3, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x8A, 0x49,\n\t0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83,\n\t0x81, 0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0x49, 0xE3, 0x83, 0x86, 0xE3,\n\t0x82, 0x99, 0xE3, 0x82, 0xB7, 0x49, 0xE3, 0x83,\n\t0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49,\n\t0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x83, 0xE3, 0x83,\n\t0x88, 0x49, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0xA4,\n\t// Bytes 2a40 - 2a7f\n\t0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x92, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83,\n\t0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB3, 0x49,\n\t0xE3, 0x83, 0x95, 0xE3, 0x83, 0xA9, 0xE3, 0x83,\n\t0xB3, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x82, 0xBD, 0x49, 0xE3, 0x83, 0x98, 0xE3,\n\t0x83, 0xAB, 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83,\n\t0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49,\n\t// Bytes 2a80 - 2abf\n\t0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xB3, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4,\n\t0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x9E, 0xE3,\n\t0x83, 0x83, 0xE3, 0x83, 0x8F, 0x49, 0xE3, 0x83,\n\t0x9E, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAF, 0x49,\n\t0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xAB, 0x49, 0xE3, 0x83, 0xA6, 0xE3, 0x82, 0xA2,\n\t0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83, 0xAF, 0xE3,\n\t// Bytes 2ac0 - 2aff\n\t0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE2, 0x80,\n\t0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2,\n\t0x80, 0xB2, 0x4C, 0xE2, 0x88, 0xAB, 0xE2, 0x88,\n\t0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x4C,\n\t0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3, 0x83,\n\t0x95, 0xE3, 0x82, 0xA1, 0x4C, 0xE3, 0x82, 0xA8,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3, 0x83,\n\t0xBC, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99,\n\t// Bytes 2b00 - 2b3f\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C, 0xE3,\n\t0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x9E, 0x4C, 0xE3, 0x82, 0xAB, 0xE3,\n\t0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88,\n\t0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xAD, 0xE3,\n\t0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82,\n\t0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B, 0xE3,\n\t0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x83,\n\t// Bytes 2b40 - 2b7f\n\t0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xA9, 0xE3, 0x83, 0xA0, 0x4C, 0xE3, 0x82, 0xAF,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0x8D, 0x4C, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xA4,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,\n\t0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x8F, 0xE3,\n\t// Bytes 2b80 - 2bbf\n\t0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x84,\n\t0x4C, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83,\n\t0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0x88, 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF, 0x4C,\n\t0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0x8B, 0xE3, 0x83, 0x92, 0x4C, 0xE3, 0x83, 0x98,\n\t// Bytes 2bc0 - 2bff\n\t0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x82,\n\t0xB9, 0x4C, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99,\n\t0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0x4C, 0xE3,\n\t0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xAF,\n\t0xE3, 0x83, 0xAD, 0x4C, 0xE3, 0x83, 0x9F, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3,\n\t0x4C, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83,\n\t// Bytes 2c00 - 2c3f\n\t0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3,\n\t0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAB, 0xE3, 0x83,\n\t0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0x4C,\n\t0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4, 0xBC,\n\t0x9A, 0xE7, 0xA4, 0xBE, 0x4E, 0x28, 0xE1, 0x84,\n\t0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x92, 0xE1,\n\t0x85, 0xAE, 0x29, 0x4F, 0xD8, 0xAC, 0xD9, 0x84,\n\t0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7, 0xD9,\n\t// Bytes 2c40 - 2c7f\n\t0x84, 0xD9, 0x87, 0x4F, 0xE3, 0x82, 0xA2, 0xE3,\n\t0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xA2, 0xE3,\n\t0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x82, 0xA2, 0x4F, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83,\n\t0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xB5, 0xE3,\n\t0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC,\n\t// Bytes 2c80 - 2cbf\n\t0xE3, 0x83, 0xA0, 0x4F, 0xE3, 0x83, 0x8F, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAC,\n\t0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x98, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x9B, 0xE3,\n\t0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x83, 0x9E, 0xE3,\n\t0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xA7,\n\t// Bytes 2cc0 - 2cff\n\t0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xA1, 0xE3,\n\t0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x88,\n\t0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xAB, 0xE3,\n\t0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99,\n\t0xE3, 0x83, 0xAB, 0x51, 0x28, 0xE1, 0x84, 0x8B,\n\t0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1, 0x85,\n\t0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x52, 0xE3, 0x82,\n\t0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3,\n\t// Bytes 2d00 - 2d3f\n\t0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC,\n\t0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9,\n\t0xE3, 0x83, 0xA0, 0x52, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x52, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9,\n\t0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3, 0x83,\n\t// Bytes 2d40 - 2d7f\n\t0xB3, 0x52, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xAD, 0x52, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82,\n\t0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0x52,\n\t0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82,\n\t0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88, 0xE3,\n\t0x83, 0xAB, 0x52, 0xE3, 0x83, 0x95, 0xE3, 0x82,\n\t// Bytes 2d80 - 2dbf\n\t0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7, 0xE3,\n\t0x82, 0xA7, 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83,\n\t0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x8F, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB,\n\t0x52, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xB3, 0xE3,\n\t0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99,\n\t0xE3, 0x83, 0xB3, 0x5F, 0xD8, 0xB5, 0xD9, 0x84,\n\t0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD9,\n\t// Bytes 2dc0 - 2dff\n\t0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9, 0x84,\n\t0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88, 0xD8,\n\t0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x44, 0x44, 0x5A,\n\t0xCC, 0x8C, 0xCD, 0x44, 0x44, 0x7A, 0xCC, 0x8C,\n\t0xCD, 0x44, 0x64, 0x7A, 0xCC, 0x8C, 0xCD, 0x46,\n\t0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x46,\n\t0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xCD, 0x46,\n\t0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xB9, 0x49,\n\t// Bytes 2e00 - 2e3f\n\t0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0x99, 0x11, 0x4C, 0xE1, 0x84, 0x8C, 0xE1, 0x85,\n\t0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4, 0x01,\n\t0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3,\n\t0x82, 0xAB, 0xE3, 0x82, 0x99, 0x11, 0x4C, 0xE3,\n\t0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x9B,\n\t0xE3, 0x82, 0x9A, 0x11, 0x4C, 0xE3, 0x83, 0xA4,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82,\n\t// Bytes 2e40 - 2e7f\n\t0x99, 0x11, 0x4F, 0xE1, 0x84, 0x8E, 0xE1, 0x85,\n\t0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, 0x80, 0xE1,\n\t0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82, 0xA4, 0xE3,\n\t0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF,\n\t0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3, 0x82, 0xB7,\n\t0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3, 0x83,\n\t0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3,\n\t// Bytes 2e80 - 2ebf\n\t0x82, 0xB7, 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3,\n\t0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x52,\n\t0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3,\n\t0x82, 0x99, 0x11, 0x52, 0xE3, 0x83, 0x95, 0xE3,\n\t0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x03,\n\t// Bytes 2ec0 - 2eff\n\t0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D, 0xCC, 0xB8,\n\t0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05, 0x03, 0x41,\n\t0xCC, 0x80, 0xCD, 0x03, 0x41, 0xCC, 0x81, 0xCD,\n\t0x03, 0x41, 0xCC, 0x83, 0xCD, 0x03, 0x41, 0xCC,\n\t0x84, 0xCD, 0x03, 0x41, 0xCC, 0x89, 0xCD, 0x03,\n\t0x41, 0xCC, 0x8C, 0xCD, 0x03, 0x41, 0xCC, 0x8F,\n\t0xCD, 0x03, 0x41, 0xCC, 0x91, 0xCD, 0x03, 0x41,\n\t0xCC, 0xA5, 0xB9, 0x03, 0x41, 0xCC, 0xA8, 0xA9,\n\t// Bytes 2f00 - 2f3f\n\t0x03, 0x42, 0xCC, 0x87, 0xCD, 0x03, 0x42, 0xCC,\n\t0xA3, 0xB9, 0x03, 0x42, 0xCC, 0xB1, 0xB9, 0x03,\n\t0x43, 0xCC, 0x81, 0xCD, 0x03, 0x43, 0xCC, 0x82,\n\t0xCD, 0x03, 0x43, 0xCC, 0x87, 0xCD, 0x03, 0x43,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x44, 0xCC, 0x87, 0xCD,\n\t0x03, 0x44, 0xCC, 0x8C, 0xCD, 0x03, 0x44, 0xCC,\n\t0xA3, 0xB9, 0x03, 0x44, 0xCC, 0xA7, 0xA9, 0x03,\n\t0x44, 0xCC, 0xAD, 0xB9, 0x03, 0x44, 0xCC, 0xB1,\n\t// Bytes 2f40 - 2f7f\n\t0xB9, 0x03, 0x45, 0xCC, 0x80, 0xCD, 0x03, 0x45,\n\t0xCC, 0x81, 0xCD, 0x03, 0x45, 0xCC, 0x83, 0xCD,\n\t0x03, 0x45, 0xCC, 0x86, 0xCD, 0x03, 0x45, 0xCC,\n\t0x87, 0xCD, 0x03, 0x45, 0xCC, 0x88, 0xCD, 0x03,\n\t0x45, 0xCC, 0x89, 0xCD, 0x03, 0x45, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x45, 0xCC, 0x8F, 0xCD, 0x03, 0x45,\n\t0xCC, 0x91, 0xCD, 0x03, 0x45, 0xCC, 0xA8, 0xA9,\n\t0x03, 0x45, 0xCC, 0xAD, 0xB9, 0x03, 0x45, 0xCC,\n\t// Bytes 2f80 - 2fbf\n\t0xB0, 0xB9, 0x03, 0x46, 0xCC, 0x87, 0xCD, 0x03,\n\t0x47, 0xCC, 0x81, 0xCD, 0x03, 0x47, 0xCC, 0x82,\n\t0xCD, 0x03, 0x47, 0xCC, 0x84, 0xCD, 0x03, 0x47,\n\t0xCC, 0x86, 0xCD, 0x03, 0x47, 0xCC, 0x87, 0xCD,\n\t0x03, 0x47, 0xCC, 0x8C, 0xCD, 0x03, 0x47, 0xCC,\n\t0xA7, 0xA9, 0x03, 0x48, 0xCC, 0x82, 0xCD, 0x03,\n\t0x48, 0xCC, 0x87, 0xCD, 0x03, 0x48, 0xCC, 0x88,\n\t0xCD, 0x03, 0x48, 0xCC, 0x8C, 0xCD, 0x03, 0x48,\n\t// Bytes 2fc0 - 2fff\n\t0xCC, 0xA3, 0xB9, 0x03, 0x48, 0xCC, 0xA7, 0xA9,\n\t0x03, 0x48, 0xCC, 0xAE, 0xB9, 0x03, 0x49, 0xCC,\n\t0x80, 0xCD, 0x03, 0x49, 0xCC, 0x81, 0xCD, 0x03,\n\t0x49, 0xCC, 0x82, 0xCD, 0x03, 0x49, 0xCC, 0x83,\n\t0xCD, 0x03, 0x49, 0xCC, 0x84, 0xCD, 0x03, 0x49,\n\t0xCC, 0x86, 0xCD, 0x03, 0x49, 0xCC, 0x87, 0xCD,\n\t0x03, 0x49, 0xCC, 0x89, 0xCD, 0x03, 0x49, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x49, 0xCC, 0x8F, 0xCD, 0x03,\n\t// Bytes 3000 - 303f\n\t0x49, 0xCC, 0x91, 0xCD, 0x03, 0x49, 0xCC, 0xA3,\n\t0xB9, 0x03, 0x49, 0xCC, 0xA8, 0xA9, 0x03, 0x49,\n\t0xCC, 0xB0, 0xB9, 0x03, 0x4A, 0xCC, 0x82, 0xCD,\n\t0x03, 0x4B, 0xCC, 0x81, 0xCD, 0x03, 0x4B, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x4B, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x4B, 0xCC, 0xA7, 0xA9, 0x03, 0x4B, 0xCC, 0xB1,\n\t0xB9, 0x03, 0x4C, 0xCC, 0x81, 0xCD, 0x03, 0x4C,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x4C, 0xCC, 0xA7, 0xA9,\n\t// Bytes 3040 - 307f\n\t0x03, 0x4C, 0xCC, 0xAD, 0xB9, 0x03, 0x4C, 0xCC,\n\t0xB1, 0xB9, 0x03, 0x4D, 0xCC, 0x81, 0xCD, 0x03,\n\t0x4D, 0xCC, 0x87, 0xCD, 0x03, 0x4D, 0xCC, 0xA3,\n\t0xB9, 0x03, 0x4E, 0xCC, 0x80, 0xCD, 0x03, 0x4E,\n\t0xCC, 0x81, 0xCD, 0x03, 0x4E, 0xCC, 0x83, 0xCD,\n\t0x03, 0x4E, 0xCC, 0x87, 0xCD, 0x03, 0x4E, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x4E, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x4E, 0xCC, 0xA7, 0xA9, 0x03, 0x4E, 0xCC, 0xAD,\n\t// Bytes 3080 - 30bf\n\t0xB9, 0x03, 0x4E, 0xCC, 0xB1, 0xB9, 0x03, 0x4F,\n\t0xCC, 0x80, 0xCD, 0x03, 0x4F, 0xCC, 0x81, 0xCD,\n\t0x03, 0x4F, 0xCC, 0x86, 0xCD, 0x03, 0x4F, 0xCC,\n\t0x89, 0xCD, 0x03, 0x4F, 0xCC, 0x8B, 0xCD, 0x03,\n\t0x4F, 0xCC, 0x8C, 0xCD, 0x03, 0x4F, 0xCC, 0x8F,\n\t0xCD, 0x03, 0x4F, 0xCC, 0x91, 0xCD, 0x03, 0x50,\n\t0xCC, 0x81, 0xCD, 0x03, 0x50, 0xCC, 0x87, 0xCD,\n\t0x03, 0x52, 0xCC, 0x81, 0xCD, 0x03, 0x52, 0xCC,\n\t// Bytes 30c0 - 30ff\n\t0x87, 0xCD, 0x03, 0x52, 0xCC, 0x8C, 0xCD, 0x03,\n\t0x52, 0xCC, 0x8F, 0xCD, 0x03, 0x52, 0xCC, 0x91,\n\t0xCD, 0x03, 0x52, 0xCC, 0xA7, 0xA9, 0x03, 0x52,\n\t0xCC, 0xB1, 0xB9, 0x03, 0x53, 0xCC, 0x82, 0xCD,\n\t0x03, 0x53, 0xCC, 0x87, 0xCD, 0x03, 0x53, 0xCC,\n\t0xA6, 0xB9, 0x03, 0x53, 0xCC, 0xA7, 0xA9, 0x03,\n\t0x54, 0xCC, 0x87, 0xCD, 0x03, 0x54, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x54, 0xCC, 0xA3, 0xB9, 0x03, 0x54,\n\t// Bytes 3100 - 313f\n\t0xCC, 0xA6, 0xB9, 0x03, 0x54, 0xCC, 0xA7, 0xA9,\n\t0x03, 0x54, 0xCC, 0xAD, 0xB9, 0x03, 0x54, 0xCC,\n\t0xB1, 0xB9, 0x03, 0x55, 0xCC, 0x80, 0xCD, 0x03,\n\t0x55, 0xCC, 0x81, 0xCD, 0x03, 0x55, 0xCC, 0x82,\n\t0xCD, 0x03, 0x55, 0xCC, 0x86, 0xCD, 0x03, 0x55,\n\t0xCC, 0x89, 0xCD, 0x03, 0x55, 0xCC, 0x8A, 0xCD,\n\t0x03, 0x55, 0xCC, 0x8B, 0xCD, 0x03, 0x55, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x55, 0xCC, 0x8F, 0xCD, 0x03,\n\t// Bytes 3140 - 317f\n\t0x55, 0xCC, 0x91, 0xCD, 0x03, 0x55, 0xCC, 0xA3,\n\t0xB9, 0x03, 0x55, 0xCC, 0xA4, 0xB9, 0x03, 0x55,\n\t0xCC, 0xA8, 0xA9, 0x03, 0x55, 0xCC, 0xAD, 0xB9,\n\t0x03, 0x55, 0xCC, 0xB0, 0xB9, 0x03, 0x56, 0xCC,\n\t0x83, 0xCD, 0x03, 0x56, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x57, 0xCC, 0x80, 0xCD, 0x03, 0x57, 0xCC, 0x81,\n\t0xCD, 0x03, 0x57, 0xCC, 0x82, 0xCD, 0x03, 0x57,\n\t0xCC, 0x87, 0xCD, 0x03, 0x57, 0xCC, 0x88, 0xCD,\n\t// Bytes 3180 - 31bf\n\t0x03, 0x57, 0xCC, 0xA3, 0xB9, 0x03, 0x58, 0xCC,\n\t0x87, 0xCD, 0x03, 0x58, 0xCC, 0x88, 0xCD, 0x03,\n\t0x59, 0xCC, 0x80, 0xCD, 0x03, 0x59, 0xCC, 0x81,\n\t0xCD, 0x03, 0x59, 0xCC, 0x82, 0xCD, 0x03, 0x59,\n\t0xCC, 0x83, 0xCD, 0x03, 0x59, 0xCC, 0x84, 0xCD,\n\t0x03, 0x59, 0xCC, 0x87, 0xCD, 0x03, 0x59, 0xCC,\n\t0x88, 0xCD, 0x03, 0x59, 0xCC, 0x89, 0xCD, 0x03,\n\t0x59, 0xCC, 0xA3, 0xB9, 0x03, 0x5A, 0xCC, 0x81,\n\t// Bytes 31c0 - 31ff\n\t0xCD, 0x03, 0x5A, 0xCC, 0x82, 0xCD, 0x03, 0x5A,\n\t0xCC, 0x87, 0xCD, 0x03, 0x5A, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x5A, 0xCC, 0xA3, 0xB9, 0x03, 0x5A, 0xCC,\n\t0xB1, 0xB9, 0x03, 0x61, 0xCC, 0x80, 0xCD, 0x03,\n\t0x61, 0xCC, 0x81, 0xCD, 0x03, 0x61, 0xCC, 0x83,\n\t0xCD, 0x03, 0x61, 0xCC, 0x84, 0xCD, 0x03, 0x61,\n\t0xCC, 0x89, 0xCD, 0x03, 0x61, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x61, 0xCC, 0x8F, 0xCD, 0x03, 0x61, 0xCC,\n\t// Bytes 3200 - 323f\n\t0x91, 0xCD, 0x03, 0x61, 0xCC, 0xA5, 0xB9, 0x03,\n\t0x61, 0xCC, 0xA8, 0xA9, 0x03, 0x62, 0xCC, 0x87,\n\t0xCD, 0x03, 0x62, 0xCC, 0xA3, 0xB9, 0x03, 0x62,\n\t0xCC, 0xB1, 0xB9, 0x03, 0x63, 0xCC, 0x81, 0xCD,\n\t0x03, 0x63, 0xCC, 0x82, 0xCD, 0x03, 0x63, 0xCC,\n\t0x87, 0xCD, 0x03, 0x63, 0xCC, 0x8C, 0xCD, 0x03,\n\t0x64, 0xCC, 0x87, 0xCD, 0x03, 0x64, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x64, 0xCC, 0xA3, 0xB9, 0x03, 0x64,\n\t// Bytes 3240 - 327f\n\t0xCC, 0xA7, 0xA9, 0x03, 0x64, 0xCC, 0xAD, 0xB9,\n\t0x03, 0x64, 0xCC, 0xB1, 0xB9, 0x03, 0x65, 0xCC,\n\t0x80, 0xCD, 0x03, 0x65, 0xCC, 0x81, 0xCD, 0x03,\n\t0x65, 0xCC, 0x83, 0xCD, 0x03, 0x65, 0xCC, 0x86,\n\t0xCD, 0x03, 0x65, 0xCC, 0x87, 0xCD, 0x03, 0x65,\n\t0xCC, 0x88, 0xCD, 0x03, 0x65, 0xCC, 0x89, 0xCD,\n\t0x03, 0x65, 0xCC, 0x8C, 0xCD, 0x03, 0x65, 0xCC,\n\t0x8F, 0xCD, 0x03, 0x65, 0xCC, 0x91, 0xCD, 0x03,\n\t// Bytes 3280 - 32bf\n\t0x65, 0xCC, 0xA8, 0xA9, 0x03, 0x65, 0xCC, 0xAD,\n\t0xB9, 0x03, 0x65, 0xCC, 0xB0, 0xB9, 0x03, 0x66,\n\t0xCC, 0x87, 0xCD, 0x03, 0x67, 0xCC, 0x81, 0xCD,\n\t0x03, 0x67, 0xCC, 0x82, 0xCD, 0x03, 0x67, 0xCC,\n\t0x84, 0xCD, 0x03, 0x67, 0xCC, 0x86, 0xCD, 0x03,\n\t0x67, 0xCC, 0x87, 0xCD, 0x03, 0x67, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x67, 0xCC, 0xA7, 0xA9, 0x03, 0x68,\n\t0xCC, 0x82, 0xCD, 0x03, 0x68, 0xCC, 0x87, 0xCD,\n\t// Bytes 32c0 - 32ff\n\t0x03, 0x68, 0xCC, 0x88, 0xCD, 0x03, 0x68, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x68, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x68, 0xCC, 0xA7, 0xA9, 0x03, 0x68, 0xCC, 0xAE,\n\t0xB9, 0x03, 0x68, 0xCC, 0xB1, 0xB9, 0x03, 0x69,\n\t0xCC, 0x80, 0xCD, 0x03, 0x69, 0xCC, 0x81, 0xCD,\n\t0x03, 0x69, 0xCC, 0x82, 0xCD, 0x03, 0x69, 0xCC,\n\t0x83, 0xCD, 0x03, 0x69, 0xCC, 0x84, 0xCD, 0x03,\n\t0x69, 0xCC, 0x86, 0xCD, 0x03, 0x69, 0xCC, 0x89,\n\t// Bytes 3300 - 333f\n\t0xCD, 0x03, 0x69, 0xCC, 0x8C, 0xCD, 0x03, 0x69,\n\t0xCC, 0x8F, 0xCD, 0x03, 0x69, 0xCC, 0x91, 0xCD,\n\t0x03, 0x69, 0xCC, 0xA3, 0xB9, 0x03, 0x69, 0xCC,\n\t0xA8, 0xA9, 0x03, 0x69, 0xCC, 0xB0, 0xB9, 0x03,\n\t0x6A, 0xCC, 0x82, 0xCD, 0x03, 0x6A, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x6B, 0xCC, 0x81, 0xCD, 0x03, 0x6B,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x6B, 0xCC, 0xA3, 0xB9,\n\t0x03, 0x6B, 0xCC, 0xA7, 0xA9, 0x03, 0x6B, 0xCC,\n\t// Bytes 3340 - 337f\n\t0xB1, 0xB9, 0x03, 0x6C, 0xCC, 0x81, 0xCD, 0x03,\n\t0x6C, 0xCC, 0x8C, 0xCD, 0x03, 0x6C, 0xCC, 0xA7,\n\t0xA9, 0x03, 0x6C, 0xCC, 0xAD, 0xB9, 0x03, 0x6C,\n\t0xCC, 0xB1, 0xB9, 0x03, 0x6D, 0xCC, 0x81, 0xCD,\n\t0x03, 0x6D, 0xCC, 0x87, 0xCD, 0x03, 0x6D, 0xCC,\n\t0xA3, 0xB9, 0x03, 0x6E, 0xCC, 0x80, 0xCD, 0x03,\n\t0x6E, 0xCC, 0x81, 0xCD, 0x03, 0x6E, 0xCC, 0x83,\n\t0xCD, 0x03, 0x6E, 0xCC, 0x87, 0xCD, 0x03, 0x6E,\n\t// Bytes 3380 - 33bf\n\t0xCC, 0x8C, 0xCD, 0x03, 0x6E, 0xCC, 0xA3, 0xB9,\n\t0x03, 0x6E, 0xCC, 0xA7, 0xA9, 0x03, 0x6E, 0xCC,\n\t0xAD, 0xB9, 0x03, 0x6E, 0xCC, 0xB1, 0xB9, 0x03,\n\t0x6F, 0xCC, 0x80, 0xCD, 0x03, 0x6F, 0xCC, 0x81,\n\t0xCD, 0x03, 0x6F, 0xCC, 0x86, 0xCD, 0x03, 0x6F,\n\t0xCC, 0x89, 0xCD, 0x03, 0x6F, 0xCC, 0x8B, 0xCD,\n\t0x03, 0x6F, 0xCC, 0x8C, 0xCD, 0x03, 0x6F, 0xCC,\n\t0x8F, 0xCD, 0x03, 0x6F, 0xCC, 0x91, 0xCD, 0x03,\n\t// Bytes 33c0 - 33ff\n\t0x70, 0xCC, 0x81, 0xCD, 0x03, 0x70, 0xCC, 0x87,\n\t0xCD, 0x03, 0x72, 0xCC, 0x81, 0xCD, 0x03, 0x72,\n\t0xCC, 0x87, 0xCD, 0x03, 0x72, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x72, 0xCC, 0x8F, 0xCD, 0x03, 0x72, 0xCC,\n\t0x91, 0xCD, 0x03, 0x72, 0xCC, 0xA7, 0xA9, 0x03,\n\t0x72, 0xCC, 0xB1, 0xB9, 0x03, 0x73, 0xCC, 0x82,\n\t0xCD, 0x03, 0x73, 0xCC, 0x87, 0xCD, 0x03, 0x73,\n\t0xCC, 0xA6, 0xB9, 0x03, 0x73, 0xCC, 0xA7, 0xA9,\n\t// Bytes 3400 - 343f\n\t0x03, 0x74, 0xCC, 0x87, 0xCD, 0x03, 0x74, 0xCC,\n\t0x88, 0xCD, 0x03, 0x74, 0xCC, 0x8C, 0xCD, 0x03,\n\t0x74, 0xCC, 0xA3, 0xB9, 0x03, 0x74, 0xCC, 0xA6,\n\t0xB9, 0x03, 0x74, 0xCC, 0xA7, 0xA9, 0x03, 0x74,\n\t0xCC, 0xAD, 0xB9, 0x03, 0x74, 0xCC, 0xB1, 0xB9,\n\t0x03, 0x75, 0xCC, 0x80, 0xCD, 0x03, 0x75, 0xCC,\n\t0x81, 0xCD, 0x03, 0x75, 0xCC, 0x82, 0xCD, 0x03,\n\t0x75, 0xCC, 0x86, 0xCD, 0x03, 0x75, 0xCC, 0x89,\n\t// Bytes 3440 - 347f\n\t0xCD, 0x03, 0x75, 0xCC, 0x8A, 0xCD, 0x03, 0x75,\n\t0xCC, 0x8B, 0xCD, 0x03, 0x75, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x75, 0xCC, 0x8F, 0xCD, 0x03, 0x75, 0xCC,\n\t0x91, 0xCD, 0x03, 0x75, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x75, 0xCC, 0xA4, 0xB9, 0x03, 0x75, 0xCC, 0xA8,\n\t0xA9, 0x03, 0x75, 0xCC, 0xAD, 0xB9, 0x03, 0x75,\n\t0xCC, 0xB0, 0xB9, 0x03, 0x76, 0xCC, 0x83, 0xCD,\n\t0x03, 0x76, 0xCC, 0xA3, 0xB9, 0x03, 0x77, 0xCC,\n\t// Bytes 3480 - 34bf\n\t0x80, 0xCD, 0x03, 0x77, 0xCC, 0x81, 0xCD, 0x03,\n\t0x77, 0xCC, 0x82, 0xCD, 0x03, 0x77, 0xCC, 0x87,\n\t0xCD, 0x03, 0x77, 0xCC, 0x88, 0xCD, 0x03, 0x77,\n\t0xCC, 0x8A, 0xCD, 0x03, 0x77, 0xCC, 0xA3, 0xB9,\n\t0x03, 0x78, 0xCC, 0x87, 0xCD, 0x03, 0x78, 0xCC,\n\t0x88, 0xCD, 0x03, 0x79, 0xCC, 0x80, 0xCD, 0x03,\n\t0x79, 0xCC, 0x81, 0xCD, 0x03, 0x79, 0xCC, 0x82,\n\t0xCD, 0x03, 0x79, 0xCC, 0x83, 0xCD, 0x03, 0x79,\n\t// Bytes 34c0 - 34ff\n\t0xCC, 0x84, 0xCD, 0x03, 0x79, 0xCC, 0x87, 0xCD,\n\t0x03, 0x79, 0xCC, 0x88, 0xCD, 0x03, 0x79, 0xCC,\n\t0x89, 0xCD, 0x03, 0x79, 0xCC, 0x8A, 0xCD, 0x03,\n\t0x79, 0xCC, 0xA3, 0xB9, 0x03, 0x7A, 0xCC, 0x81,\n\t0xCD, 0x03, 0x7A, 0xCC, 0x82, 0xCD, 0x03, 0x7A,\n\t0xCC, 0x87, 0xCD, 0x03, 0x7A, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x7A, 0xCC, 0xA3, 0xB9, 0x03, 0x7A, 0xCC,\n\t0xB1, 0xB9, 0x04, 0xC2, 0xA8, 0xCC, 0x80, 0xCE,\n\t// Bytes 3500 - 353f\n\t0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCE, 0x04, 0xC2,\n\t0xA8, 0xCD, 0x82, 0xCE, 0x04, 0xC3, 0x86, 0xCC,\n\t0x81, 0xCD, 0x04, 0xC3, 0x86, 0xCC, 0x84, 0xCD,\n\t0x04, 0xC3, 0x98, 0xCC, 0x81, 0xCD, 0x04, 0xC3,\n\t0xA6, 0xCC, 0x81, 0xCD, 0x04, 0xC3, 0xA6, 0xCC,\n\t0x84, 0xCD, 0x04, 0xC3, 0xB8, 0xCC, 0x81, 0xCD,\n\t0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xCD, 0x04, 0xC6,\n\t0xB7, 0xCC, 0x8C, 0xCD, 0x04, 0xCA, 0x92, 0xCC,\n\t// Bytes 3540 - 357f\n\t0x8C, 0xCD, 0x04, 0xCE, 0x91, 0xCC, 0x80, 0xCD,\n\t0x04, 0xCE, 0x91, 0xCC, 0x81, 0xCD, 0x04, 0xCE,\n\t0x91, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0x91, 0xCC,\n\t0x86, 0xCD, 0x04, 0xCE, 0x91, 0xCD, 0x85, 0xDD,\n\t0x04, 0xCE, 0x95, 0xCC, 0x80, 0xCD, 0x04, 0xCE,\n\t0x95, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0x97, 0xCC,\n\t0x80, 0xCD, 0x04, 0xCE, 0x97, 0xCC, 0x81, 0xCD,\n\t0x04, 0xCE, 0x97, 0xCD, 0x85, 0xDD, 0x04, 0xCE,\n\t// Bytes 3580 - 35bf\n\t0x99, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0x99, 0xCC,\n\t0x81, 0xCD, 0x04, 0xCE, 0x99, 0xCC, 0x84, 0xCD,\n\t0x04, 0xCE, 0x99, 0xCC, 0x86, 0xCD, 0x04, 0xCE,\n\t0x99, 0xCC, 0x88, 0xCD, 0x04, 0xCE, 0x9F, 0xCC,\n\t0x80, 0xCD, 0x04, 0xCE, 0x9F, 0xCC, 0x81, 0xCD,\n\t0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xCD, 0x04, 0xCE,\n\t0xA5, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0xA5, 0xCC,\n\t0x81, 0xCD, 0x04, 0xCE, 0xA5, 0xCC, 0x84, 0xCD,\n\t// Bytes 35c0 - 35ff\n\t0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xCD, 0x04, 0xCE,\n\t0xA5, 0xCC, 0x88, 0xCD, 0x04, 0xCE, 0xA9, 0xCC,\n\t0x80, 0xCD, 0x04, 0xCE, 0xA9, 0xCC, 0x81, 0xCD,\n\t0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xDD, 0x04, 0xCE,\n\t0xB1, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0xB1, 0xCC,\n\t0x86, 0xCD, 0x04, 0xCE, 0xB1, 0xCD, 0x85, 0xDD,\n\t0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xCD, 0x04, 0xCE,\n\t0xB5, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0xB7, 0xCD,\n\t// Bytes 3600 - 363f\n\t0x85, 0xDD, 0x04, 0xCE, 0xB9, 0xCC, 0x80, 0xCD,\n\t0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xCD, 0x04, 0xCE,\n\t0xB9, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0xB9, 0xCC,\n\t0x86, 0xCD, 0x04, 0xCE, 0xB9, 0xCD, 0x82, 0xCD,\n\t0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xCD, 0x04, 0xCE,\n\t0xBF, 0xCC, 0x81, 0xCD, 0x04, 0xCF, 0x81, 0xCC,\n\t0x93, 0xCD, 0x04, 0xCF, 0x81, 0xCC, 0x94, 0xCD,\n\t0x04, 0xCF, 0x85, 0xCC, 0x80, 0xCD, 0x04, 0xCF,\n\t// Bytes 3640 - 367f\n\t0x85, 0xCC, 0x81, 0xCD, 0x04, 0xCF, 0x85, 0xCC,\n\t0x84, 0xCD, 0x04, 0xCF, 0x85, 0xCC, 0x86, 0xCD,\n\t0x04, 0xCF, 0x85, 0xCD, 0x82, 0xCD, 0x04, 0xCF,\n\t0x89, 0xCD, 0x85, 0xDD, 0x04, 0xCF, 0x92, 0xCC,\n\t0x81, 0xCD, 0x04, 0xCF, 0x92, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD0, 0x86, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0x90, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0x90, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0x93, 0xCC, 0x81, 0xCD,\n\t// Bytes 3680 - 36bf\n\t0x04, 0xD0, 0x95, 0xCC, 0x80, 0xCD, 0x04, 0xD0,\n\t0x95, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0x95, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0x96, 0xCC, 0x86, 0xCD,\n\t0x04, 0xD0, 0x96, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0x97, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x98, 0xCC,\n\t0x80, 0xCD, 0x04, 0xD0, 0x98, 0xCC, 0x84, 0xCD,\n\t0x04, 0xD0, 0x98, 0xCC, 0x86, 0xCD, 0x04, 0xD0,\n\t0x98, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x9A, 0xCC,\n\t// Bytes 36c0 - 36ff\n\t0x81, 0xCD, 0x04, 0xD0, 0x9E, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xCD, 0x04, 0xD0,\n\t0xA3, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0xA3, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0xA3, 0xCC, 0x8B, 0xCD,\n\t0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0xAB, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0xAD, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0xB0, 0xCC, 0x86, 0xCD,\n\t0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t// Bytes 3700 - 373f\n\t0xB3, 0xCC, 0x81, 0xCD, 0x04, 0xD0, 0xB5, 0xCC,\n\t0x80, 0xCD, 0x04, 0xD0, 0xB5, 0xCC, 0x86, 0xCD,\n\t0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0xB6, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0xB6, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0xB7, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xCD, 0x04, 0xD0,\n\t0xB8, 0xCC, 0x84, 0xCD, 0x04, 0xD0, 0xB8, 0xCC,\n\t0x86, 0xCD, 0x04, 0xD0, 0xB8, 0xCC, 0x88, 0xCD,\n\t// Bytes 3740 - 377f\n\t0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xCD, 0x04, 0xD0,\n\t0xBE, 0xCC, 0x88, 0xCD, 0x04, 0xD1, 0x83, 0xCC,\n\t0x84, 0xCD, 0x04, 0xD1, 0x83, 0xCC, 0x86, 0xCD,\n\t0x04, 0xD1, 0x83, 0xCC, 0x88, 0xCD, 0x04, 0xD1,\n\t0x83, 0xCC, 0x8B, 0xCD, 0x04, 0xD1, 0x87, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD1, 0x8B, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xCD, 0x04, 0xD1,\n\t0x96, 0xCC, 0x88, 0xCD, 0x04, 0xD1, 0xB4, 0xCC,\n\t// Bytes 3780 - 37bf\n\t0x8F, 0xCD, 0x04, 0xD1, 0xB5, 0xCC, 0x8F, 0xCD,\n\t0x04, 0xD3, 0x98, 0xCC, 0x88, 0xCD, 0x04, 0xD3,\n\t0x99, 0xCC, 0x88, 0xCD, 0x04, 0xD3, 0xA8, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD3, 0xA9, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x04, 0xD8,\n\t0xA7, 0xD9, 0x94, 0xCD, 0x04, 0xD8, 0xA7, 0xD9,\n\t0x95, 0xB9, 0x04, 0xD9, 0x88, 0xD9, 0x94, 0xCD,\n\t0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xCD, 0x04, 0xDB,\n\t// Bytes 37c0 - 37ff\n\t0x81, 0xD9, 0x94, 0xCD, 0x04, 0xDB, 0x92, 0xD9,\n\t0x94, 0xCD, 0x04, 0xDB, 0x95, 0xD9, 0x94, 0xCD,\n\t0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05,\n\t0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x41,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x41, 0xCC,\n\t0x82, 0xCC, 0x89, 0xCE, 0x05, 0x41, 0xCC, 0x86,\n\t0xCC, 0x80, 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC,\n\t0x81, 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x83,\n\t// Bytes 3800 - 383f\n\t0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x89, 0xCE,\n\t0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05,\n\t0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x41,\n\t0xCC, 0x8A, 0xCC, 0x81, 0xCE, 0x05, 0x41, 0xCC,\n\t0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x41, 0xCC, 0xA3,\n\t0xCC, 0x86, 0xCE, 0x05, 0x43, 0xCC, 0xA7, 0xCC,\n\t0x81, 0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x80,\n\t0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x81, 0xCE,\n\t// Bytes 3840 - 387f\n\t0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05,\n\t0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x45,\n\t0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05, 0x45, 0xCC,\n\t0x84, 0xCC, 0x81, 0xCE, 0x05, 0x45, 0xCC, 0xA3,\n\t0xCC, 0x82, 0xCE, 0x05, 0x45, 0xCC, 0xA7, 0xCC,\n\t0x86, 0xCE, 0x05, 0x49, 0xCC, 0x88, 0xCC, 0x81,\n\t0xCE, 0x05, 0x4C, 0xCC, 0xA3, 0xCC, 0x84, 0xCE,\n\t0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05,\n\t// Bytes 3880 - 38bf\n\t0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x4F,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x4F, 0xCC,\n\t0x82, 0xCC, 0x89, 0xCE, 0x05, 0x4F, 0xCC, 0x83,\n\t0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC, 0x83, 0xCC,\n\t0x84, 0xCE, 0x05, 0x4F, 0xCC, 0x83, 0xCC, 0x88,\n\t0xCE, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x80, 0xCE,\n\t0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05,\n\t0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x4F,\n\t// Bytes 38c0 - 38ff\n\t0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x4F, 0xCC,\n\t0x9B, 0xCC, 0x80, 0xCE, 0x05, 0x4F, 0xCC, 0x9B,\n\t0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC,\n\t0x83, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0x89,\n\t0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA,\n\t0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05,\n\t0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCE, 0x05, 0x52,\n\t0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05, 0x53, 0xCC,\n\t// Bytes 3900 - 393f\n\t0x81, 0xCC, 0x87, 0xCE, 0x05, 0x53, 0xCC, 0x8C,\n\t0xCC, 0x87, 0xCE, 0x05, 0x53, 0xCC, 0xA3, 0xCC,\n\t0x87, 0xCE, 0x05, 0x55, 0xCC, 0x83, 0xCC, 0x81,\n\t0xCE, 0x05, 0x55, 0xCC, 0x84, 0xCC, 0x88, 0xCE,\n\t0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x05,\n\t0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x05, 0x55,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x55, 0xCC,\n\t0x88, 0xCC, 0x8C, 0xCE, 0x05, 0x55, 0xCC, 0x9B,\n\t// Bytes 3940 - 397f\n\t0xCC, 0x80, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC,\n\t0x81, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x83,\n\t0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x89, 0xCE,\n\t0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05,\n\t0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05, 0x61,\n\t0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x61, 0xCC,\n\t0x82, 0xCC, 0x83, 0xCE, 0x05, 0x61, 0xCC, 0x82,\n\t0xCC, 0x89, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC,\n\t// Bytes 3980 - 39bf\n\t0x80, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x81,\n\t0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x83, 0xCE,\n\t0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xCE, 0x05,\n\t0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x61,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x61, 0xCC,\n\t0x8A, 0xCC, 0x81, 0xCE, 0x05, 0x61, 0xCC, 0xA3,\n\t0xCC, 0x82, 0xCE, 0x05, 0x61, 0xCC, 0xA3, 0xCC,\n\t0x86, 0xCE, 0x05, 0x63, 0xCC, 0xA7, 0xCC, 0x81,\n\t// Bytes 39c0 - 39ff\n\t0xCE, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x80, 0xCE,\n\t0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05,\n\t0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x65,\n\t0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x65, 0xCC,\n\t0x84, 0xCC, 0x80, 0xCE, 0x05, 0x65, 0xCC, 0x84,\n\t0xCC, 0x81, 0xCE, 0x05, 0x65, 0xCC, 0xA3, 0xCC,\n\t0x82, 0xCE, 0x05, 0x65, 0xCC, 0xA7, 0xCC, 0x86,\n\t0xCE, 0x05, 0x69, 0xCC, 0x88, 0xCC, 0x81, 0xCE,\n\t// Bytes 3a00 - 3a3f\n\t0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05,\n\t0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05, 0x6F,\n\t0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x6F, 0xCC,\n\t0x82, 0xCC, 0x83, 0xCE, 0x05, 0x6F, 0xCC, 0x82,\n\t0xCC, 0x89, 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC,\n\t0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x84,\n\t0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x88, 0xCE,\n\t0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05,\n\t// Bytes 3a40 - 3a7f\n\t0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05, 0x6F,\n\t0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x6F, 0xCC,\n\t0x88, 0xCC, 0x84, 0xCE, 0x05, 0x6F, 0xCC, 0x9B,\n\t0xCC, 0x80, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC,\n\t0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x83,\n\t0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x89, 0xCE,\n\t0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05,\n\t0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x6F,\n\t// Bytes 3a80 - 3abf\n\t0xCC, 0xA8, 0xCC, 0x84, 0xCE, 0x05, 0x72, 0xCC,\n\t0xA3, 0xCC, 0x84, 0xCE, 0x05, 0x73, 0xCC, 0x81,\n\t0xCC, 0x87, 0xCE, 0x05, 0x73, 0xCC, 0x8C, 0xCC,\n\t0x87, 0xCE, 0x05, 0x73, 0xCC, 0xA3, 0xCC, 0x87,\n\t0xCE, 0x05, 0x75, 0xCC, 0x83, 0xCC, 0x81, 0xCE,\n\t0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xCE, 0x05,\n\t0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x05, 0x75,\n\t0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x05, 0x75, 0xCC,\n\t// Bytes 3ac0 - 3aff\n\t0x88, 0xCC, 0x84, 0xCE, 0x05, 0x75, 0xCC, 0x88,\n\t0xCC, 0x8C, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC,\n\t0x80, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x81,\n\t0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x83, 0xCE,\n\t0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xCE, 0x05,\n\t0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05, 0xE1,\n\t0xBE, 0xBF, 0xCC, 0x80, 0xCE, 0x05, 0xE1, 0xBE,\n\t0xBF, 0xCC, 0x81, 0xCE, 0x05, 0xE1, 0xBE, 0xBF,\n\t// Bytes 3b00 - 3b3f\n\t0xCD, 0x82, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCC,\n\t0x80, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCC, 0x81,\n\t0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCD, 0x82, 0xCE,\n\t0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87,\n\t0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x92,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x94, 0xCC,\n\t// Bytes 3b40 - 3b7f\n\t0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88,\n\t0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x83,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x85, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88, 0xCC, 0xB8,\n\t// Bytes 3b80 - 3bbf\n\t0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB3,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB6, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC, 0xB8, 0x05,\n\t// Bytes 3bc0 - 3bff\n\t0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x83,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x86, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0x05, 0x05,\n\t// Bytes 3c00 - 3c3f\n\t0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xAB,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB2, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0x05, 0x06,\n\t0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t// Bytes 3c40 - 3c7f\n\t0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t// Bytes 3c80 - 3cbf\n\t0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t// Bytes 3cc0 - 3cff\n\t0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,\n\t// Bytes 3d00 - 3d3f\n\t0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,\n\t// Bytes 3d40 - 3d7f\n\t0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t// Bytes 3d80 - 3dbf\n\t0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t// Bytes 3dc0 - 3dff\n\t0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t// Bytes 3e00 - 3e3f\n\t0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,\n\t0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,\n\t// Bytes 3e40 - 3e7f\n\t0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,\n\t0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,\n\t0xE0, 0xA7, 0x87, 0xE0, 0xA6, 0xBE, 0x01, 0x06,\n\t0xE0, 0xA7, 0x87, 0xE0, 0xA7, 0x97, 0x01, 0x06,\n\t0xE0, 0xAD, 0x87, 0xE0, 0xAC, 0xBE, 0x01, 0x06,\n\t0xE0, 0xAD, 0x87, 0xE0, 0xAD, 0x96, 0x01, 0x06,\n\t0xE0, 0xAD, 0x87, 0xE0, 0xAD, 0x97, 0x01, 0x06,\n\t0xE0, 0xAE, 0x92, 0xE0, 0xAF, 0x97, 0x01, 0x06,\n\t// Bytes 3e80 - 3ebf\n\t0xE0, 0xAF, 0x86, 0xE0, 0xAE, 0xBE, 0x01, 0x06,\n\t0xE0, 0xAF, 0x86, 0xE0, 0xAF, 0x97, 0x01, 0x06,\n\t0xE0, 0xAF, 0x87, 0xE0, 0xAE, 0xBE, 0x01, 0x06,\n\t0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0x89, 0x06,\n\t0xE0, 0xB2, 0xBF, 0xE0, 0xB3, 0x95, 0x01, 0x06,\n\t0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x95, 0x01, 0x06,\n\t0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x96, 0x01, 0x06,\n\t0xE0, 0xB5, 0x86, 0xE0, 0xB4, 0xBE, 0x01, 0x06,\n\t// Bytes 3ec0 - 3eff\n\t0xE0, 0xB5, 0x86, 0xE0, 0xB5, 0x97, 0x01, 0x06,\n\t0xE0, 0xB5, 0x87, 0xE0, 0xB4, 0xBE, 0x01, 0x06,\n\t0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0x15, 0x06,\n\t0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x9F, 0x01, 0x06,\n\t0xE1, 0x80, 0xA5, 0xE1, 0x80, 0xAE, 0x01, 0x06,\n\t0xE1, 0xAC, 0x85, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0x87, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0x89, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t// Bytes 3f00 - 3f3f\n\t0xE1, 0xAC, 0x8B, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0x8D, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0x91, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0xBA, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0xBC, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0xBE, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0xBF, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAD, 0x82, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t// Bytes 3f40 - 3f7f\n\t0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 3f80 - 3fbf\n\t0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 3fc0 - 3fff\n\t0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t// Bytes 4000 - 403f\n\t0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 4040 - 407f\n\t0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 4080 - 40bf\n\t0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 40c0 - 40ff\n\t0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 4100 - 413f\n\t0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0x11, 0x08,\n\t0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x93,\n\t0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,\n\t// Bytes 4140 - 417f\n\t0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97,\n\t// Bytes 4180 - 41bf\n\t0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93,\n\t0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82,\n\t// Bytes 41c0 - 41ff\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,\n\t// Bytes 4200 - 423f\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93,\n\t0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x93,\n\t// Bytes 4240 - 427f\n\t0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,\n\t0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91, 0x82, 0xBA,\n\t// Bytes 4280 - 42bf\n\t0x0D, 0x08, 0xF0, 0x91, 0x82, 0x9B, 0xF0, 0x91,\n\t0x82, 0xBA, 0x0D, 0x08, 0xF0, 0x91, 0x82, 0xA5,\n\t0xF0, 0x91, 0x82, 0xBA, 0x0D, 0x08, 0xF0, 0x91,\n\t0x84, 0xB1, 0xF0, 0x91, 0x84, 0xA7, 0x01, 0x08,\n\t0xF0, 0x91, 0x84, 0xB2, 0xF0, 0x91, 0x84, 0xA7,\n\t0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91,\n\t0x8C, 0xBE, 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87,\n\t0xF0, 0x91, 0x8D, 0x97, 0x01, 0x08, 0xF0, 0x91,\n\t// Bytes 42c0 - 42ff\n\t0x92, 0xB9, 0xF0, 0x91, 0x92, 0xB0, 0x01, 0x08,\n\t0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xBA,\n\t0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91,\n\t0x92, 0xBD, 0x01, 0x08, 0xF0, 0x91, 0x96, 0xB8,\n\t0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0, 0x91,\n\t0x96, 0xB9, 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08,\n\t0xF0, 0x91, 0xA4, 0xB5, 0xF0, 0x91, 0xA4, 0xB0,\n\t0x01, 0x09, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82,\n\t// Bytes 4300 - 433f\n\t0xE0, 0xB3, 0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99,\n\t0xE0, 0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0x16, 0x42,\n\t0xC2, 0xB4, 0x01, 0x43, 0x20, 0xCC, 0x81, 0xCD,\n\t0x43, 0x20, 0xCC, 0x83, 0xCD, 0x43, 0x20, 0xCC,\n\t0x84, 0xCD, 0x43, 0x20, 0xCC, 0x85, 0xCD, 0x43,\n\t0x20, 0xCC, 0x86, 0xCD, 0x43, 0x20, 0xCC, 0x87,\n\t0xCD, 0x43, 0x20, 0xCC, 0x88, 0xCD, 0x43, 0x20,\n\t0xCC, 0x8A, 0xCD, 0x43, 0x20, 0xCC, 0x8B, 0xCD,\n\t// Bytes 4340 - 437f\n\t0x43, 0x20, 0xCC, 0x93, 0xCD, 0x43, 0x20, 0xCC,\n\t0x94, 0xCD, 0x43, 0x20, 0xCC, 0xA7, 0xA9, 0x43,\n\t0x20, 0xCC, 0xA8, 0xA9, 0x43, 0x20, 0xCC, 0xB3,\n\t0xB9, 0x43, 0x20, 0xCD, 0x82, 0xCD, 0x43, 0x20,\n\t0xCD, 0x85, 0xDD, 0x43, 0x20, 0xD9, 0x8B, 0x5D,\n\t0x43, 0x20, 0xD9, 0x8C, 0x61, 0x43, 0x20, 0xD9,\n\t0x8D, 0x65, 0x43, 0x20, 0xD9, 0x8E, 0x69, 0x43,\n\t0x20, 0xD9, 0x8F, 0x6D, 0x43, 0x20, 0xD9, 0x90,\n\t// Bytes 4380 - 43bf\n\t0x71, 0x43, 0x20, 0xD9, 0x91, 0x75, 0x43, 0x20,\n\t0xD9, 0x92, 0x79, 0x43, 0x41, 0xCC, 0x8A, 0xCD,\n\t0x43, 0x73, 0xCC, 0x87, 0xCD, 0x44, 0x20, 0xE3,\n\t0x82, 0x99, 0x11, 0x44, 0x20, 0xE3, 0x82, 0x9A,\n\t0x11, 0x44, 0xC2, 0xA8, 0xCC, 0x81, 0xCE, 0x44,\n\t0xCE, 0x91, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x95,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x97, 0xCC, 0x81,\n\t0xCD, 0x44, 0xCE, 0x99, 0xCC, 0x81, 0xCD, 0x44,\n\t// Bytes 43c0 - 43ff\n\t0xCE, 0x9F, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xA5,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xA5, 0xCC, 0x88,\n\t0xCD, 0x44, 0xCE, 0xA9, 0xCC, 0x81, 0xCD, 0x44,\n\t0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB5,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB7, 0xCC, 0x81,\n\t0xCD, 0x44, 0xCE, 0xB9, 0xCC, 0x81, 0xCD, 0x44,\n\t0xCE, 0xBF, 0xCC, 0x81, 0xCD, 0x44, 0xCF, 0x85,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCF, 0x89, 0xCC, 0x81,\n\t// Bytes 4400 - 443f\n\t0xCD, 0x44, 0xD7, 0x90, 0xD6, 0xB7, 0x35, 0x44,\n\t0xD7, 0x90, 0xD6, 0xB8, 0x39, 0x44, 0xD7, 0x90,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x91, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x91, 0xD6, 0xBF, 0x4D, 0x44,\n\t0xD7, 0x92, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x93,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x94, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x95, 0xD6, 0xB9, 0x3D, 0x44,\n\t0xD7, 0x95, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x96,\n\t// Bytes 4440 - 447f\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x98, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x99, 0xD6, 0xB4, 0x29, 0x44,\n\t0xD7, 0x99, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9A,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9B, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x9B, 0xD6, 0xBF, 0x4D, 0x44,\n\t0xD7, 0x9C, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9E,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA0, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0xA1, 0xD6, 0xBC, 0x45, 0x44,\n\t// Bytes 4480 - 44bf\n\t0xD7, 0xA3, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA4,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA4, 0xD6, 0xBF,\n\t0x4D, 0x44, 0xD7, 0xA6, 0xD6, 0xBC, 0x45, 0x44,\n\t0xD7, 0xA7, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA8,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA9, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0xA9, 0xD7, 0x81, 0x51, 0x44,\n\t0xD7, 0xA9, 0xD7, 0x82, 0x55, 0x44, 0xD7, 0xAA,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xB2, 0xD6, 0xB7,\n\t// Bytes 44c0 - 44ff\n\t0x35, 0x44, 0xD8, 0xA7, 0xD9, 0x8B, 0x5D, 0x44,\n\t0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x44, 0xD8, 0xA7,\n\t0xD9, 0x94, 0xCD, 0x44, 0xD8, 0xA7, 0xD9, 0x95,\n\t0xB9, 0x44, 0xD8, 0xB0, 0xD9, 0xB0, 0x7D, 0x44,\n\t0xD8, 0xB1, 0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x80,\n\t0xD9, 0x8B, 0x5D, 0x44, 0xD9, 0x80, 0xD9, 0x8E,\n\t0x69, 0x44, 0xD9, 0x80, 0xD9, 0x8F, 0x6D, 0x44,\n\t0xD9, 0x80, 0xD9, 0x90, 0x71, 0x44, 0xD9, 0x80,\n\t// Bytes 4500 - 453f\n\t0xD9, 0x91, 0x75, 0x44, 0xD9, 0x80, 0xD9, 0x92,\n\t0x79, 0x44, 0xD9, 0x87, 0xD9, 0xB0, 0x7D, 0x44,\n\t0xD9, 0x88, 0xD9, 0x94, 0xCD, 0x44, 0xD9, 0x89,\n\t0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xCD, 0x44, 0xDB, 0x92, 0xD9, 0x94, 0xCD, 0x44,\n\t0xDB, 0x95, 0xD9, 0x94, 0xCD, 0x45, 0x20, 0xCC,\n\t0x88, 0xCC, 0x80, 0xCE, 0x45, 0x20, 0xCC, 0x88,\n\t0xCC, 0x81, 0xCE, 0x45, 0x20, 0xCC, 0x88, 0xCD,\n\t// Bytes 4540 - 457f\n\t0x82, 0xCE, 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCE, 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xCE,\n\t0x45, 0x20, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x45,\n\t0x20, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x45, 0x20,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x45, 0x20, 0xCC,\n\t0x94, 0xCD, 0x82, 0xCE, 0x45, 0x20, 0xD9, 0x8C,\n\t0xD9, 0x91, 0x76, 0x45, 0x20, 0xD9, 0x8D, 0xD9,\n\t0x91, 0x76, 0x45, 0x20, 0xD9, 0x8E, 0xD9, 0x91,\n\t// Bytes 4580 - 45bf\n\t0x76, 0x45, 0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x76,\n\t0x45, 0x20, 0xD9, 0x90, 0xD9, 0x91, 0x76, 0x45,\n\t0x20, 0xD9, 0x91, 0xD9, 0xB0, 0x7E, 0x45, 0xE2,\n\t0xAB, 0x9D, 0xCC, 0xB8, 0x05, 0x46, 0xCE, 0xB9,\n\t0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x46, 0xCF, 0x85,\n\t0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x46, 0xD7, 0xA9,\n\t0xD6, 0xBC, 0xD7, 0x81, 0x52, 0x46, 0xD7, 0xA9,\n\t0xD6, 0xBC, 0xD7, 0x82, 0x56, 0x46, 0xD9, 0x80,\n\t// Bytes 45c0 - 45ff\n\t0xD9, 0x8E, 0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80,\n\t0xD9, 0x8F, 0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80,\n\t0xD9, 0x90, 0xD9, 0x91, 0x76, 0x46, 0xE0, 0xA4,\n\t0x95, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4,\n\t0x96, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4,\n\t0x97, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4,\n\t0x9C, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4,\n\t0xA1, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4,\n\t// Bytes 4600 - 463f\n\t0xA2, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4,\n\t0xAB, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4,\n\t0xAF, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA6,\n\t0xA1, 0xE0, 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6,\n\t0xA2, 0xE0, 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6,\n\t0xAF, 0xE0, 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA8,\n\t0x96, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8,\n\t0x97, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8,\n\t// Bytes 4640 - 467f\n\t0x9C, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8,\n\t0xAB, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8,\n\t0xB2, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8,\n\t0xB8, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xAC,\n\t0xA1, 0xE0, 0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xAC,\n\t0xA2, 0xE0, 0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xBE,\n\t0xB2, 0xE0, 0xBE, 0x80, 0xA1, 0x46, 0xE0, 0xBE,\n\t0xB3, 0xE0, 0xBE, 0x80, 0xA1, 0x46, 0xE1, 0x84,\n\t// Bytes 4680 - 46bf\n\t0x80, 0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84,\n\t0x82, 0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84,\n\t0x83, 0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84,\n\t0x85, 0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84,\n\t0x86, 0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84,\n\t0x87, 0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84,\n\t0x89, 0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84,\n\t0x8B, 0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84,\n\t// Bytes 46c0 - 46ff\n\t0x8B, 0xE1, 0x85, 0xAE, 0x01, 0x46, 0xE1, 0x84,\n\t0x8C, 0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84,\n\t0x8E, 0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84,\n\t0x8F, 0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84,\n\t0x90, 0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84,\n\t0x91, 0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84,\n\t0x92, 0xE1, 0x85, 0xA1, 0x01, 0x46, 0xE3, 0x83,\n\t0x86, 0xE3, 0x82, 0x99, 0x11, 0x48, 0xF0, 0x9D,\n\t// Bytes 4700 - 473f\n\t0x85, 0x97, 0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x48,\n\t0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5,\n\t0xB1, 0x48, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xB1, 0x48, 0xF0, 0x9D, 0x86, 0xBA,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x49, 0xE0, 0xBE,\n\t0xB2, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xA2,\n\t0x49, 0xE0, 0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0,\n\t0xBE, 0x80, 0xA2, 0x4C, 0xF0, 0x9D, 0x85, 0x98,\n\t// Bytes 4740 - 477f\n\t0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE,\n\t0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x4C,\n\t0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5,\n\t0xF0, 0x9D, 0x85, 0xB0, 0xB2, 0x4C, 0xF0, 0x9D,\n\t0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,\n\t0x85, 0xB1, 0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2,\n\t// Bytes 4780 - 47bf\n\t0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xB2, 0x4C,\n\t0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5,\n\t0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x4C, 0xF0, 0x9D,\n\t0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,\n\t0x85, 0xAE, 0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xBA,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF,\n\t0xB2, 0x83, 0x41, 0xCC, 0x82, 0xCD, 0x83, 0x41,\n\t// Bytes 47c0 - 47ff\n\t0xCC, 0x86, 0xCD, 0x83, 0x41, 0xCC, 0x87, 0xCD,\n\t0x83, 0x41, 0xCC, 0x88, 0xCD, 0x83, 0x41, 0xCC,\n\t0x8A, 0xCD, 0x83, 0x41, 0xCC, 0xA3, 0xB9, 0x83,\n\t0x43, 0xCC, 0xA7, 0xA9, 0x83, 0x45, 0xCC, 0x82,\n\t0xCD, 0x83, 0x45, 0xCC, 0x84, 0xCD, 0x83, 0x45,\n\t0xCC, 0xA3, 0xB9, 0x83, 0x45, 0xCC, 0xA7, 0xA9,\n\t0x83, 0x49, 0xCC, 0x88, 0xCD, 0x83, 0x4C, 0xCC,\n\t0xA3, 0xB9, 0x83, 0x4F, 0xCC, 0x82, 0xCD, 0x83,\n\t// Bytes 4800 - 483f\n\t0x4F, 0xCC, 0x83, 0xCD, 0x83, 0x4F, 0xCC, 0x84,\n\t0xCD, 0x83, 0x4F, 0xCC, 0x87, 0xCD, 0x83, 0x4F,\n\t0xCC, 0x88, 0xCD, 0x83, 0x4F, 0xCC, 0x9B, 0xB1,\n\t0x83, 0x4F, 0xCC, 0xA3, 0xB9, 0x83, 0x4F, 0xCC,\n\t0xA8, 0xA9, 0x83, 0x52, 0xCC, 0xA3, 0xB9, 0x83,\n\t0x53, 0xCC, 0x81, 0xCD, 0x83, 0x53, 0xCC, 0x8C,\n\t0xCD, 0x83, 0x53, 0xCC, 0xA3, 0xB9, 0x83, 0x55,\n\t0xCC, 0x83, 0xCD, 0x83, 0x55, 0xCC, 0x84, 0xCD,\n\t// Bytes 4840 - 487f\n\t0x83, 0x55, 0xCC, 0x88, 0xCD, 0x83, 0x55, 0xCC,\n\t0x9B, 0xB1, 0x83, 0x61, 0xCC, 0x82, 0xCD, 0x83,\n\t0x61, 0xCC, 0x86, 0xCD, 0x83, 0x61, 0xCC, 0x87,\n\t0xCD, 0x83, 0x61, 0xCC, 0x88, 0xCD, 0x83, 0x61,\n\t0xCC, 0x8A, 0xCD, 0x83, 0x61, 0xCC, 0xA3, 0xB9,\n\t0x83, 0x63, 0xCC, 0xA7, 0xA9, 0x83, 0x65, 0xCC,\n\t0x82, 0xCD, 0x83, 0x65, 0xCC, 0x84, 0xCD, 0x83,\n\t0x65, 0xCC, 0xA3, 0xB9, 0x83, 0x65, 0xCC, 0xA7,\n\t// Bytes 4880 - 48bf\n\t0xA9, 0x83, 0x69, 0xCC, 0x88, 0xCD, 0x83, 0x6C,\n\t0xCC, 0xA3, 0xB9, 0x83, 0x6F, 0xCC, 0x82, 0xCD,\n\t0x83, 0x6F, 0xCC, 0x83, 0xCD, 0x83, 0x6F, 0xCC,\n\t0x84, 0xCD, 0x83, 0x6F, 0xCC, 0x87, 0xCD, 0x83,\n\t0x6F, 0xCC, 0x88, 0xCD, 0x83, 0x6F, 0xCC, 0x9B,\n\t0xB1, 0x83, 0x6F, 0xCC, 0xA3, 0xB9, 0x83, 0x6F,\n\t0xCC, 0xA8, 0xA9, 0x83, 0x72, 0xCC, 0xA3, 0xB9,\n\t0x83, 0x73, 0xCC, 0x81, 0xCD, 0x83, 0x73, 0xCC,\n\t// Bytes 48c0 - 48ff\n\t0x8C, 0xCD, 0x83, 0x73, 0xCC, 0xA3, 0xB9, 0x83,\n\t0x75, 0xCC, 0x83, 0xCD, 0x83, 0x75, 0xCC, 0x84,\n\t0xCD, 0x83, 0x75, 0xCC, 0x88, 0xCD, 0x83, 0x75,\n\t0xCC, 0x9B, 0xB1, 0x84, 0xCE, 0x91, 0xCC, 0x93,\n\t0xCD, 0x84, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x84,\n\t0xCE, 0x95, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x95,\n\t0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x97, 0xCC, 0x93,\n\t0xCD, 0x84, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x84,\n\t// Bytes 4900 - 493f\n\t0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x99,\n\t0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x9F, 0xCC, 0x93,\n\t0xCD, 0x84, 0xCE, 0x9F, 0xCC, 0x94, 0xCD, 0x84,\n\t0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xA9,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xA9, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x84,\n\t0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x84, 0xCE, 0xB1,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x94,\n\t// Bytes 4940 - 497f\n\t0xCD, 0x84, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x84,\n\t0xCE, 0xB5, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB5,\n\t0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x80,\n\t0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x84,\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB7,\n\t0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xB7, 0xCD, 0x82,\n\t0xCD, 0x84, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x84,\n\t0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB9,\n\t// Bytes 4980 - 49bf\n\t0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xBF, 0xCC, 0x93,\n\t0xCD, 0x84, 0xCE, 0xBF, 0xCC, 0x94, 0xCD, 0x84,\n\t0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x84, 0xCF, 0x85,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCF, 0x85, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x84,\n\t0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x84, 0xCF, 0x89,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x86,\n\t// Bytes 49c0 - 49ff\n\t0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86,\n\t// Bytes 4a00 - 4a3f\n\t0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86,\n\t// Bytes 4a40 - 4a7f\n\t0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86,\n\t// Bytes 4a80 - 4abf\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86,\n\t// Bytes 4ac0 - 4aff\n\t0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86,\n\t0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0x01, 0x86,\n\t0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0x01, 0x42,\n\t0xCC, 0x80, 0xCD, 0x33, 0x42, 0xCC, 0x81, 0xCD,\n\t0x33, 0x42, 0xCC, 0x93, 0xCD, 0x33, 0x43, 0xE1,\n\t// Bytes 4b00 - 4b3f\n\t0x85, 0xA1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xA5, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xA9, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00,\n\t// Bytes 4b40 - 4b7f\n\t0x43, 0xE1, 0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xB1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xB5, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA,\n\t// Bytes 4b80 - 4bbf\n\t0x01, 0x00, 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00,\n\t0x43, 0xE1, 0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1,\n\t0x86, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1,\n\t0x01, 0x00, 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00,\n\t0x43, 0xE1, 0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1,\n\t0x86, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5,\n\t0x01, 0x00, 0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCE,\n\t0x33, 0x43, 0xE3, 0x82, 0x99, 0x11, 0x04, 0x43,\n\t// Bytes 4bc0 - 4bff\n\t0xE3, 0x82, 0x9A, 0x11, 0x04, 0x46, 0xE0, 0xBD,\n\t0xB1, 0xE0, 0xBD, 0xB2, 0xA2, 0x27, 0x46, 0xE0,\n\t0xBD, 0xB1, 0xE0, 0xBD, 0xB4, 0xA6, 0x27, 0x46,\n\t0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xA2, 0x27,\n\t0x00, 0x01,\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfcTrie. Total size: 10798 bytes (10.54 KiB). Checksum: 721e0f15a4524bda.\ntype nfcTrie struct{}\n\nfunc newNfcTrie(i int) *nfcTrie {\n\treturn &nfcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 46:\n\t\treturn uint16(nfcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 46\n\t\treturn uint16(nfcSparse.lookup(n, b))\n\t}\n}\n\n// nfcValues: 48 blocks, 3072 entries, 6144 bytes\n// The third block is the zero block.\nvar nfcValues = [3072]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2ece, 0xc1: 0x2ed3, 0xc2: 0x47b9, 0xc3: 0x2ed8, 0xc4: 0x47c8, 0xc5: 0x47cd,\n\t0xc6: 0xa000, 0xc7: 0x47d7, 0xc8: 0x2f41, 0xc9: 0x2f46, 0xca: 0x47dc, 0xcb: 0x2f5a,\n\t0xcc: 0x2fcd, 0xcd: 0x2fd2, 0xce: 0x2fd7, 0xcf: 0x47f0, 0xd1: 0x3063,\n\t0xd2: 0x3086, 0xd3: 0x308b, 0xd4: 0x47fa, 0xd5: 0x47ff, 0xd6: 0x480e,\n\t0xd8: 0xa000, 0xd9: 0x3112, 0xda: 0x3117, 0xdb: 0x311c, 0xdc: 0x4840, 0xdd: 0x3194,\n\t0xe0: 0x31da, 0xe1: 0x31df, 0xe2: 0x484a, 0xe3: 0x31e4,\n\t0xe4: 0x4859, 0xe5: 0x485e, 0xe6: 0xa000, 0xe7: 0x4868, 0xe8: 0x324d, 0xe9: 0x3252,\n\t0xea: 0x486d, 0xeb: 0x3266, 0xec: 0x32de, 0xed: 0x32e3, 0xee: 0x32e8, 0xef: 0x4881,\n\t0xf1: 0x3374, 0xf2: 0x3397, 0xf3: 0x339c, 0xf4: 0x488b, 0xf5: 0x4890,\n\t0xf6: 0x489f, 0xf8: 0xa000, 0xf9: 0x3428, 0xfa: 0x342d, 0xfb: 0x3432,\n\t0xfc: 0x48d1, 0xfd: 0x34af, 0xff: 0x34c8,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2edd, 0x101: 0x31e9, 0x102: 0x47be, 0x103: 0x484f, 0x104: 0x2efb, 0x105: 0x3207,\n\t0x106: 0x2f0f, 0x107: 0x321b, 0x108: 0x2f14, 0x109: 0x3220, 0x10a: 0x2f19, 0x10b: 0x3225,\n\t0x10c: 0x2f1e, 0x10d: 0x322a, 0x10e: 0x2f28, 0x10f: 0x3234,\n\t0x112: 0x47e1, 0x113: 0x4872, 0x114: 0x2f50, 0x115: 0x325c, 0x116: 0x2f55, 0x117: 0x3261,\n\t0x118: 0x2f73, 0x119: 0x327f, 0x11a: 0x2f64, 0x11b: 0x3270, 0x11c: 0x2f8c, 0x11d: 0x3298,\n\t0x11e: 0x2f96, 0x11f: 0x32a2, 0x120: 0x2f9b, 0x121: 0x32a7, 0x122: 0x2fa5, 0x123: 0x32b1,\n\t0x124: 0x2faa, 0x125: 0x32b6, 0x128: 0x2fdc, 0x129: 0x32ed,\n\t0x12a: 0x2fe1, 0x12b: 0x32f2, 0x12c: 0x2fe6, 0x12d: 0x32f7, 0x12e: 0x3009, 0x12f: 0x3315,\n\t0x130: 0x2feb, 0x134: 0x3013, 0x135: 0x331f,\n\t0x136: 0x3027, 0x137: 0x3338, 0x139: 0x3031, 0x13a: 0x3342, 0x13b: 0x303b,\n\t0x13c: 0x334c, 0x13d: 0x3036, 0x13e: 0x3347,\n\t// Block 0x5, offset 0x140\n\t0x143: 0x305e, 0x144: 0x336f, 0x145: 0x3077,\n\t0x146: 0x3388, 0x147: 0x306d, 0x148: 0x337e,\n\t0x14c: 0x4804, 0x14d: 0x4895, 0x14e: 0x3090, 0x14f: 0x33a1, 0x150: 0x309a, 0x151: 0x33ab,\n\t0x154: 0x30b8, 0x155: 0x33c9, 0x156: 0x30d1, 0x157: 0x33e2,\n\t0x158: 0x30c2, 0x159: 0x33d3, 0x15a: 0x4827, 0x15b: 0x48b8, 0x15c: 0x30db, 0x15d: 0x33ec,\n\t0x15e: 0x30ea, 0x15f: 0x33fb, 0x160: 0x482c, 0x161: 0x48bd, 0x162: 0x3103, 0x163: 0x3419,\n\t0x164: 0x30f4, 0x165: 0x340a, 0x168: 0x4836, 0x169: 0x48c7,\n\t0x16a: 0x483b, 0x16b: 0x48cc, 0x16c: 0x3121, 0x16d: 0x3437, 0x16e: 0x312b, 0x16f: 0x3441,\n\t0x170: 0x3130, 0x171: 0x3446, 0x172: 0x314e, 0x173: 0x3464, 0x174: 0x3171, 0x175: 0x3487,\n\t0x176: 0x3199, 0x177: 0x34b4, 0x178: 0x31ad, 0x179: 0x31bc, 0x17a: 0x34dc, 0x17b: 0x31c6,\n\t0x17c: 0x34e6, 0x17d: 0x31cb, 0x17e: 0x34eb, 0x17f: 0xa000,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x8100, 0x185: 0x8100,\n\t0x186: 0x8100,\n\t0x18d: 0x2ee7, 0x18e: 0x31f3, 0x18f: 0x2ff5, 0x190: 0x3301, 0x191: 0x309f,\n\t0x192: 0x33b0, 0x193: 0x3135, 0x194: 0x344b, 0x195: 0x392e, 0x196: 0x3abd, 0x197: 0x3927,\n\t0x198: 0x3ab6, 0x199: 0x3935, 0x19a: 0x3ac4, 0x19b: 0x3920, 0x19c: 0x3aaf,\n\t0x19e: 0x380f, 0x19f: 0x399e, 0x1a0: 0x3808, 0x1a1: 0x3997, 0x1a2: 0x3512, 0x1a3: 0x3524,\n\t0x1a6: 0x2fa0, 0x1a7: 0x32ac, 0x1a8: 0x301d, 0x1a9: 0x332e,\n\t0x1aa: 0x481d, 0x1ab: 0x48ae, 0x1ac: 0x38ef, 0x1ad: 0x3a7e, 0x1ae: 0x3536, 0x1af: 0x353c,\n\t0x1b0: 0x3324, 0x1b4: 0x2f87, 0x1b5: 0x3293,\n\t0x1b8: 0x3059, 0x1b9: 0x336a, 0x1ba: 0x3816, 0x1bb: 0x39a5,\n\t0x1bc: 0x350c, 0x1bd: 0x351e, 0x1be: 0x3518, 0x1bf: 0x352a,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2eec, 0x1c1: 0x31f8, 0x1c2: 0x2ef1, 0x1c3: 0x31fd, 0x1c4: 0x2f69, 0x1c5: 0x3275,\n\t0x1c6: 0x2f6e, 0x1c7: 0x327a, 0x1c8: 0x2ffa, 0x1c9: 0x3306, 0x1ca: 0x2fff, 0x1cb: 0x330b,\n\t0x1cc: 0x30a4, 0x1cd: 0x33b5, 0x1ce: 0x30a9, 0x1cf: 0x33ba, 0x1d0: 0x30c7, 0x1d1: 0x33d8,\n\t0x1d2: 0x30cc, 0x1d3: 0x33dd, 0x1d4: 0x313a, 0x1d5: 0x3450, 0x1d6: 0x313f, 0x1d7: 0x3455,\n\t0x1d8: 0x30e5, 0x1d9: 0x33f6, 0x1da: 0x30fe, 0x1db: 0x3414,\n\t0x1de: 0x2fb9, 0x1df: 0x32c5,\n\t0x1e6: 0x47c3, 0x1e7: 0x4854, 0x1e8: 0x47eb, 0x1e9: 0x487c,\n\t0x1ea: 0x38be, 0x1eb: 0x3a4d, 0x1ec: 0x389b, 0x1ed: 0x3a2a, 0x1ee: 0x4809, 0x1ef: 0x489a,\n\t0x1f0: 0x38b7, 0x1f1: 0x3a46, 0x1f2: 0x31a3, 0x1f3: 0x34be,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133,\n\t0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933,\n\t0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933,\n\t0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e,\n\t0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e,\n\t0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e,\n\t0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e,\n\t0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e,\n\t0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e,\n\t0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x4aef, 0x241: 0x4af4, 0x242: 0x9933, 0x243: 0x4af9, 0x244: 0x4bb2, 0x245: 0x9937,\n\t0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133,\n\t0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133,\n\t0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133,\n\t0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136,\n\t0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133,\n\t0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133,\n\t0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133,\n\t0x274: 0x01ee,\n\t0x27a: 0x8100,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x8100, 0x285: 0x3500,\n\t0x286: 0x3548, 0x287: 0x00ce, 0x288: 0x3566, 0x289: 0x3572, 0x28a: 0x3584,\n\t0x28c: 0x35a2, 0x28e: 0x35b4, 0x28f: 0x35d2, 0x290: 0x3d67, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3596, 0x2ab: 0x35c6, 0x2ac: 0x492f, 0x2ad: 0x35f6, 0x2ae: 0x4959, 0x2af: 0x3608,\n\t0x2b0: 0x3dcf, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x3680, 0x2c1: 0x368c, 0x2c3: 0x367a,\n\t0x2c6: 0xa000, 0x2c7: 0x3668,\n\t0x2cc: 0x36bc, 0x2cd: 0x36a4, 0x2ce: 0x36ce, 0x2d0: 0xa000,\n\t0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000,\n\t0x2d8: 0xa000, 0x2d9: 0x36b0, 0x2da: 0xa000,\n\t0x2de: 0xa000, 0x2e3: 0xa000,\n\t0x2e7: 0xa000,\n\t0x2eb: 0xa000, 0x2ed: 0xa000,\n\t0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000,\n\t0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x3734, 0x2fa: 0xa000,\n\t0x2fe: 0xa000,\n\t// Block 0xc, offset 0x300\n\t0x301: 0x3692, 0x302: 0x3716,\n\t0x310: 0x366e, 0x311: 0x36f2,\n\t0x312: 0x3674, 0x313: 0x36f8, 0x316: 0x3686, 0x317: 0x370a,\n\t0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3788, 0x31b: 0x378e, 0x31c: 0x3698, 0x31d: 0x371c,\n\t0x31e: 0x369e, 0x31f: 0x3722, 0x322: 0x36aa, 0x323: 0x372e,\n\t0x324: 0x36b6, 0x325: 0x373a, 0x326: 0x36c2, 0x327: 0x3746, 0x328: 0xa000, 0x329: 0xa000,\n\t0x32a: 0x3794, 0x32b: 0x379a, 0x32c: 0x36ec, 0x32d: 0x3770, 0x32e: 0x36c8, 0x32f: 0x374c,\n\t0x330: 0x36d4, 0x331: 0x3758, 0x332: 0x36da, 0x333: 0x375e, 0x334: 0x36e0, 0x335: 0x3764,\n\t0x338: 0x36e6, 0x339: 0x376a,\n\t// Block 0xd, offset 0x340\n\t0x351: 0x812e,\n\t0x352: 0x8133, 0x353: 0x8133, 0x354: 0x8133, 0x355: 0x8133, 0x356: 0x812e, 0x357: 0x8133,\n\t0x358: 0x8133, 0x359: 0x8133, 0x35a: 0x812f, 0x35b: 0x812e, 0x35c: 0x8133, 0x35d: 0x8133,\n\t0x35e: 0x8133, 0x35f: 0x8133, 0x360: 0x8133, 0x361: 0x8133, 0x362: 0x812e, 0x363: 0x812e,\n\t0x364: 0x812e, 0x365: 0x812e, 0x366: 0x812e, 0x367: 0x812e, 0x368: 0x8133, 0x369: 0x8133,\n\t0x36a: 0x812e, 0x36b: 0x8133, 0x36c: 0x8133, 0x36d: 0x812f, 0x36e: 0x8132, 0x36f: 0x8133,\n\t0x370: 0x8106, 0x371: 0x8107, 0x372: 0x8108, 0x373: 0x8109, 0x374: 0x810a, 0x375: 0x810b,\n\t0x376: 0x810c, 0x377: 0x810d, 0x378: 0x810e, 0x379: 0x810f, 0x37a: 0x810f, 0x37b: 0x8110,\n\t0x37c: 0x8111, 0x37d: 0x8112, 0x37f: 0x8113,\n\t// Block 0xe, offset 0x380\n\t0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8117,\n\t0x38c: 0x8118, 0x38d: 0x8119, 0x38e: 0x811a, 0x38f: 0x811b, 0x390: 0x811c, 0x391: 0x811d,\n\t0x392: 0x811e, 0x393: 0x9933, 0x394: 0x9933, 0x395: 0x992e, 0x396: 0x812e, 0x397: 0x8133,\n\t0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x8133, 0x39b: 0x8133, 0x39c: 0x812e, 0x39d: 0x8133,\n\t0x39e: 0x8133, 0x39f: 0x812e,\n\t0x3b0: 0x811f,\n\t// Block 0xf, offset 0x3c0\n\t0x3ca: 0x8133, 0x3cb: 0x8133,\n\t0x3cc: 0x8133, 0x3cd: 0x8133, 0x3ce: 0x8133, 0x3cf: 0x812e, 0x3d0: 0x812e, 0x3d1: 0x812e,\n\t0x3d2: 0x812e, 0x3d3: 0x812e, 0x3d4: 0x8133, 0x3d5: 0x8133, 0x3d6: 0x8133, 0x3d7: 0x8133,\n\t0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x8133, 0x3dd: 0x8133,\n\t0x3de: 0x8133, 0x3df: 0x8133, 0x3e0: 0x8133, 0x3e1: 0x8133, 0x3e3: 0x812e,\n\t0x3e4: 0x8133, 0x3e5: 0x8133, 0x3e6: 0x812e, 0x3e7: 0x8133, 0x3e8: 0x8133, 0x3e9: 0x812e,\n\t0x3ea: 0x8133, 0x3eb: 0x8133, 0x3ec: 0x8133, 0x3ed: 0x812e, 0x3ee: 0x812e, 0x3ef: 0x812e,\n\t0x3f0: 0x8117, 0x3f1: 0x8118, 0x3f2: 0x8119, 0x3f3: 0x8133, 0x3f4: 0x8133, 0x3f5: 0x8133,\n\t0x3f6: 0x812e, 0x3f7: 0x8133, 0x3f8: 0x8133, 0x3f9: 0x812e, 0x3fa: 0x812e, 0x3fb: 0x8133,\n\t0x3fc: 0x8133, 0x3fd: 0x8133, 0x3fe: 0x8133, 0x3ff: 0x8133,\n\t// Block 0x10, offset 0x400\n\t0x405: 0xa000,\n\t0x406: 0x3ee7, 0x407: 0xa000, 0x408: 0x3eef, 0x409: 0xa000, 0x40a: 0x3ef7, 0x40b: 0xa000,\n\t0x40c: 0x3eff, 0x40d: 0xa000, 0x40e: 0x3f07, 0x411: 0xa000,\n\t0x412: 0x3f0f,\n\t0x434: 0x8103, 0x435: 0x9900,\n\t0x43a: 0xa000, 0x43b: 0x3f17,\n\t0x43c: 0xa000, 0x43d: 0x3f1f, 0x43e: 0xa000, 0x43f: 0xa000,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x8133, 0x441: 0x8133, 0x442: 0x812e, 0x443: 0x8133, 0x444: 0x8133, 0x445: 0x8133,\n\t0x446: 0x8133, 0x447: 0x8133, 0x448: 0x8133, 0x449: 0x8133, 0x44a: 0x812e, 0x44b: 0x8133,\n\t0x44c: 0x8133, 0x44d: 0x8136, 0x44e: 0x812b, 0x44f: 0x812e, 0x450: 0x812a, 0x451: 0x8133,\n\t0x452: 0x8133, 0x453: 0x8133, 0x454: 0x8133, 0x455: 0x8133, 0x456: 0x8133, 0x457: 0x8133,\n\t0x458: 0x8133, 0x459: 0x8133, 0x45a: 0x8133, 0x45b: 0x8133, 0x45c: 0x8133, 0x45d: 0x8133,\n\t0x45e: 0x8133, 0x45f: 0x8133, 0x460: 0x8133, 0x461: 0x8133, 0x462: 0x8133, 0x463: 0x8133,\n\t0x464: 0x8133, 0x465: 0x8133, 0x466: 0x8133, 0x467: 0x8133, 0x468: 0x8133, 0x469: 0x8133,\n\t0x46a: 0x8133, 0x46b: 0x8133, 0x46c: 0x8133, 0x46d: 0x8133, 0x46e: 0x8133, 0x46f: 0x8133,\n\t0x470: 0x8133, 0x471: 0x8133, 0x472: 0x8133, 0x473: 0x8133, 0x474: 0x8133, 0x475: 0x8133,\n\t0x476: 0x8134, 0x477: 0x8132, 0x478: 0x8132, 0x479: 0x812e, 0x47a: 0x812d, 0x47b: 0x8133,\n\t0x47c: 0x8135, 0x47d: 0x812e, 0x47e: 0x8133, 0x47f: 0x812e,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x2ef6, 0x481: 0x3202, 0x482: 0x2f00, 0x483: 0x320c, 0x484: 0x2f05, 0x485: 0x3211,\n\t0x486: 0x2f0a, 0x487: 0x3216, 0x488: 0x382b, 0x489: 0x39ba, 0x48a: 0x2f23, 0x48b: 0x322f,\n\t0x48c: 0x2f2d, 0x48d: 0x3239, 0x48e: 0x2f3c, 0x48f: 0x3248, 0x490: 0x2f32, 0x491: 0x323e,\n\t0x492: 0x2f37, 0x493: 0x3243, 0x494: 0x384e, 0x495: 0x39dd, 0x496: 0x3855, 0x497: 0x39e4,\n\t0x498: 0x2f78, 0x499: 0x3284, 0x49a: 0x2f7d, 0x49b: 0x3289, 0x49c: 0x3863, 0x49d: 0x39f2,\n\t0x49e: 0x2f82, 0x49f: 0x328e, 0x4a0: 0x2f91, 0x4a1: 0x329d, 0x4a2: 0x2faf, 0x4a3: 0x32bb,\n\t0x4a4: 0x2fbe, 0x4a5: 0x32ca, 0x4a6: 0x2fb4, 0x4a7: 0x32c0, 0x4a8: 0x2fc3, 0x4a9: 0x32cf,\n\t0x4aa: 0x2fc8, 0x4ab: 0x32d4, 0x4ac: 0x300e, 0x4ad: 0x331a, 0x4ae: 0x386a, 0x4af: 0x39f9,\n\t0x4b0: 0x3018, 0x4b1: 0x3329, 0x4b2: 0x3022, 0x4b3: 0x3333, 0x4b4: 0x302c, 0x4b5: 0x333d,\n\t0x4b6: 0x47f5, 0x4b7: 0x4886, 0x4b8: 0x3871, 0x4b9: 0x3a00, 0x4ba: 0x3045, 0x4bb: 0x3356,\n\t0x4bc: 0x3040, 0x4bd: 0x3351, 0x4be: 0x304a, 0x4bf: 0x335b,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x304f, 0x4c1: 0x3360, 0x4c2: 0x3054, 0x4c3: 0x3365, 0x4c4: 0x3068, 0x4c5: 0x3379,\n\t0x4c6: 0x3072, 0x4c7: 0x3383, 0x4c8: 0x3081, 0x4c9: 0x3392, 0x4ca: 0x307c, 0x4cb: 0x338d,\n\t0x4cc: 0x3894, 0x4cd: 0x3a23, 0x4ce: 0x38a2, 0x4cf: 0x3a31, 0x4d0: 0x38a9, 0x4d1: 0x3a38,\n\t0x4d2: 0x38b0, 0x4d3: 0x3a3f, 0x4d4: 0x30ae, 0x4d5: 0x33bf, 0x4d6: 0x30b3, 0x4d7: 0x33c4,\n\t0x4d8: 0x30bd, 0x4d9: 0x33ce, 0x4da: 0x4822, 0x4db: 0x48b3, 0x4dc: 0x38f6, 0x4dd: 0x3a85,\n\t0x4de: 0x30d6, 0x4df: 0x33e7, 0x4e0: 0x30e0, 0x4e1: 0x33f1, 0x4e2: 0x4831, 0x4e3: 0x48c2,\n\t0x4e4: 0x38fd, 0x4e5: 0x3a8c, 0x4e6: 0x3904, 0x4e7: 0x3a93, 0x4e8: 0x390b, 0x4e9: 0x3a9a,\n\t0x4ea: 0x30ef, 0x4eb: 0x3400, 0x4ec: 0x30f9, 0x4ed: 0x340f, 0x4ee: 0x310d, 0x4ef: 0x3423,\n\t0x4f0: 0x3108, 0x4f1: 0x341e, 0x4f2: 0x3149, 0x4f3: 0x345f, 0x4f4: 0x3158, 0x4f5: 0x346e,\n\t0x4f6: 0x3153, 0x4f7: 0x3469, 0x4f8: 0x3912, 0x4f9: 0x3aa1, 0x4fa: 0x3919, 0x4fb: 0x3aa8,\n\t0x4fc: 0x315d, 0x4fd: 0x3473, 0x4fe: 0x3162, 0x4ff: 0x3478,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x3167, 0x501: 0x347d, 0x502: 0x316c, 0x503: 0x3482, 0x504: 0x317b, 0x505: 0x3491,\n\t0x506: 0x3176, 0x507: 0x348c, 0x508: 0x3180, 0x509: 0x349b, 0x50a: 0x3185, 0x50b: 0x34a0,\n\t0x50c: 0x318a, 0x50d: 0x34a5, 0x50e: 0x31a8, 0x50f: 0x34c3, 0x510: 0x31c1, 0x511: 0x34e1,\n\t0x512: 0x31d0, 0x513: 0x34f0, 0x514: 0x31d5, 0x515: 0x34f5, 0x516: 0x32d9, 0x517: 0x3405,\n\t0x518: 0x3496, 0x519: 0x34d2, 0x51b: 0x3530,\n\t0x520: 0x47d2, 0x521: 0x4863, 0x522: 0x2ee2, 0x523: 0x31ee,\n\t0x524: 0x37d7, 0x525: 0x3966, 0x526: 0x37d0, 0x527: 0x395f, 0x528: 0x37e5, 0x529: 0x3974,\n\t0x52a: 0x37de, 0x52b: 0x396d, 0x52c: 0x381d, 0x52d: 0x39ac, 0x52e: 0x37f3, 0x52f: 0x3982,\n\t0x530: 0x37ec, 0x531: 0x397b, 0x532: 0x3801, 0x533: 0x3990, 0x534: 0x37fa, 0x535: 0x3989,\n\t0x536: 0x3824, 0x537: 0x39b3, 0x538: 0x47e6, 0x539: 0x4877, 0x53a: 0x2f5f, 0x53b: 0x326b,\n\t0x53c: 0x2f4b, 0x53d: 0x3257, 0x53e: 0x3839, 0x53f: 0x39c8,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x3832, 0x541: 0x39c1, 0x542: 0x3847, 0x543: 0x39d6, 0x544: 0x3840, 0x545: 0x39cf,\n\t0x546: 0x385c, 0x547: 0x39eb, 0x548: 0x2ff0, 0x549: 0x32fc, 0x54a: 0x3004, 0x54b: 0x3310,\n\t0x54c: 0x4818, 0x54d: 0x48a9, 0x54e: 0x3095, 0x54f: 0x33a6, 0x550: 0x387f, 0x551: 0x3a0e,\n\t0x552: 0x3878, 0x553: 0x3a07, 0x554: 0x388d, 0x555: 0x3a1c, 0x556: 0x3886, 0x557: 0x3a15,\n\t0x558: 0x38e8, 0x559: 0x3a77, 0x55a: 0x38cc, 0x55b: 0x3a5b, 0x55c: 0x38c5, 0x55d: 0x3a54,\n\t0x55e: 0x38da, 0x55f: 0x3a69, 0x560: 0x38d3, 0x561: 0x3a62, 0x562: 0x38e1, 0x563: 0x3a70,\n\t0x564: 0x3144, 0x565: 0x345a, 0x566: 0x3126, 0x567: 0x343c, 0x568: 0x3943, 0x569: 0x3ad2,\n\t0x56a: 0x393c, 0x56b: 0x3acb, 0x56c: 0x3951, 0x56d: 0x3ae0, 0x56e: 0x394a, 0x56f: 0x3ad9,\n\t0x570: 0x3958, 0x571: 0x3ae7, 0x572: 0x318f, 0x573: 0x34aa, 0x574: 0x31b7, 0x575: 0x34d7,\n\t0x576: 0x31b2, 0x577: 0x34cd, 0x578: 0x319e, 0x579: 0x34b9,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x4935, 0x581: 0x493b, 0x582: 0x4a4f, 0x583: 0x4a67, 0x584: 0x4a57, 0x585: 0x4a6f,\n\t0x586: 0x4a5f, 0x587: 0x4a77, 0x588: 0x48db, 0x589: 0x48e1, 0x58a: 0x49bf, 0x58b: 0x49d7,\n\t0x58c: 0x49c7, 0x58d: 0x49df, 0x58e: 0x49cf, 0x58f: 0x49e7, 0x590: 0x4947, 0x591: 0x494d,\n\t0x592: 0x3d17, 0x593: 0x3d27, 0x594: 0x3d1f, 0x595: 0x3d2f,\n\t0x598: 0x48e7, 0x599: 0x48ed, 0x59a: 0x3c47, 0x59b: 0x3c57, 0x59c: 0x3c4f, 0x59d: 0x3c5f,\n\t0x5a0: 0x495f, 0x5a1: 0x4965, 0x5a2: 0x4a7f, 0x5a3: 0x4a97,\n\t0x5a4: 0x4a87, 0x5a5: 0x4a9f, 0x5a6: 0x4a8f, 0x5a7: 0x4aa7, 0x5a8: 0x48f3, 0x5a9: 0x48f9,\n\t0x5aa: 0x49ef, 0x5ab: 0x4a07, 0x5ac: 0x49f7, 0x5ad: 0x4a0f, 0x5ae: 0x49ff, 0x5af: 0x4a17,\n\t0x5b0: 0x4977, 0x5b1: 0x497d, 0x5b2: 0x3d77, 0x5b3: 0x3d8f, 0x5b4: 0x3d7f, 0x5b5: 0x3d97,\n\t0x5b6: 0x3d87, 0x5b7: 0x3d9f, 0x5b8: 0x48ff, 0x5b9: 0x4905, 0x5ba: 0x3c77, 0x5bb: 0x3c8f,\n\t0x5bc: 0x3c7f, 0x5bd: 0x3c97, 0x5be: 0x3c87, 0x5bf: 0x3c9f,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x4983, 0x5c1: 0x4989, 0x5c2: 0x3da7, 0x5c3: 0x3db7, 0x5c4: 0x3daf, 0x5c5: 0x3dbf,\n\t0x5c8: 0x490b, 0x5c9: 0x4911, 0x5ca: 0x3ca7, 0x5cb: 0x3cb7,\n\t0x5cc: 0x3caf, 0x5cd: 0x3cbf, 0x5d0: 0x4995, 0x5d1: 0x499b,\n\t0x5d2: 0x3ddf, 0x5d3: 0x3df7, 0x5d4: 0x3de7, 0x5d5: 0x3dff, 0x5d6: 0x3def, 0x5d7: 0x3e07,\n\t0x5d9: 0x4917, 0x5db: 0x3cc7, 0x5dd: 0x3ccf,\n\t0x5df: 0x3cd7, 0x5e0: 0x49ad, 0x5e1: 0x49b3, 0x5e2: 0x4aaf, 0x5e3: 0x4ac7,\n\t0x5e4: 0x4ab7, 0x5e5: 0x4acf, 0x5e6: 0x4abf, 0x5e7: 0x4ad7, 0x5e8: 0x491d, 0x5e9: 0x4923,\n\t0x5ea: 0x4a1f, 0x5eb: 0x4a37, 0x5ec: 0x4a27, 0x5ed: 0x4a3f, 0x5ee: 0x4a2f, 0x5ef: 0x4a47,\n\t0x5f0: 0x4929, 0x5f1: 0x43d7, 0x5f2: 0x35f0, 0x5f3: 0x43dd, 0x5f4: 0x4953, 0x5f5: 0x43e3,\n\t0x5f6: 0x3602, 0x5f7: 0x43e9, 0x5f8: 0x3620, 0x5f9: 0x43ef, 0x5fa: 0x3638, 0x5fb: 0x43f5,\n\t0x5fc: 0x49a1, 0x5fd: 0x43fb,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3cff, 0x601: 0x3d07, 0x602: 0x41c3, 0x603: 0x41e1, 0x604: 0x41cd, 0x605: 0x41eb,\n\t0x606: 0x41d7, 0x607: 0x41f5, 0x608: 0x3c37, 0x609: 0x3c3f, 0x60a: 0x410f, 0x60b: 0x412d,\n\t0x60c: 0x4119, 0x60d: 0x4137, 0x60e: 0x4123, 0x60f: 0x4141, 0x610: 0x3d47, 0x611: 0x3d4f,\n\t0x612: 0x41ff, 0x613: 0x421d, 0x614: 0x4209, 0x615: 0x4227, 0x616: 0x4213, 0x617: 0x4231,\n\t0x618: 0x3c67, 0x619: 0x3c6f, 0x61a: 0x414b, 0x61b: 0x4169, 0x61c: 0x4155, 0x61d: 0x4173,\n\t0x61e: 0x415f, 0x61f: 0x417d, 0x620: 0x3e1f, 0x621: 0x3e27, 0x622: 0x423b, 0x623: 0x4259,\n\t0x624: 0x4245, 0x625: 0x4263, 0x626: 0x424f, 0x627: 0x426d, 0x628: 0x3cdf, 0x629: 0x3ce7,\n\t0x62a: 0x4187, 0x62b: 0x41a5, 0x62c: 0x4191, 0x62d: 0x41af, 0x62e: 0x419b, 0x62f: 0x41b9,\n\t0x630: 0x35e4, 0x631: 0x35de, 0x632: 0x3cef, 0x633: 0x35ea, 0x634: 0x3cf7,\n\t0x636: 0x4941, 0x637: 0x3d0f, 0x638: 0x3554, 0x639: 0x354e, 0x63a: 0x3542, 0x63b: 0x43a7,\n\t0x63c: 0x355a, 0x63d: 0x8100, 0x63e: 0x0257, 0x63f: 0xa100,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x8100, 0x641: 0x3506, 0x642: 0x3d37, 0x643: 0x35fc, 0x644: 0x3d3f,\n\t0x646: 0x496b, 0x647: 0x3d57, 0x648: 0x3560, 0x649: 0x43ad, 0x64a: 0x356c, 0x64b: 0x43b3,\n\t0x64c: 0x3578, 0x64d: 0x3aee, 0x64e: 0x3af5, 0x64f: 0x3afc, 0x650: 0x3614, 0x651: 0x360e,\n\t0x652: 0x3d5f, 0x653: 0x459d, 0x656: 0x361a, 0x657: 0x3d6f,\n\t0x658: 0x3590, 0x659: 0x358a, 0x65a: 0x357e, 0x65b: 0x43b9, 0x65d: 0x3b03,\n\t0x65e: 0x3b0a, 0x65f: 0x3b11, 0x660: 0x364a, 0x661: 0x3644, 0x662: 0x3dc7, 0x663: 0x45a5,\n\t0x664: 0x362c, 0x665: 0x3632, 0x666: 0x3650, 0x667: 0x3dd7, 0x668: 0x35c0, 0x669: 0x35ba,\n\t0x66a: 0x35ae, 0x66b: 0x43c5, 0x66c: 0x35a8, 0x66d: 0x34fa, 0x66e: 0x43a1, 0x66f: 0x0081,\n\t0x672: 0x3e0f, 0x673: 0x3656, 0x674: 0x3e17,\n\t0x676: 0x49b9, 0x677: 0x3e2f, 0x678: 0x359c, 0x679: 0x43bf, 0x67a: 0x35cc, 0x67b: 0x43d1,\n\t0x67c: 0x35d8, 0x67d: 0x430f, 0x67e: 0xa100,\n\t// Block 0x1a, offset 0x680\n\t0x681: 0x3b65, 0x683: 0xa000, 0x684: 0x3b6c, 0x685: 0xa000,\n\t0x687: 0x3b73, 0x688: 0xa000, 0x689: 0x3b7a,\n\t0x68d: 0xa000,\n\t0x6a0: 0x2ec4, 0x6a1: 0xa000, 0x6a2: 0x3b88,\n\t0x6a4: 0xa000, 0x6a5: 0xa000,\n\t0x6ad: 0x3b81, 0x6ae: 0x2ebf, 0x6af: 0x2ec9,\n\t0x6b0: 0x3b8f, 0x6b1: 0x3b96, 0x6b2: 0xa000, 0x6b3: 0xa000, 0x6b4: 0x3b9d, 0x6b5: 0x3ba4,\n\t0x6b6: 0xa000, 0x6b7: 0xa000, 0x6b8: 0x3bab, 0x6b9: 0x3bb2, 0x6ba: 0xa000, 0x6bb: 0xa000,\n\t0x6bc: 0xa000, 0x6bd: 0xa000,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3bb9, 0x6c1: 0x3bc0, 0x6c2: 0xa000, 0x6c3: 0xa000, 0x6c4: 0x3bd5, 0x6c5: 0x3bdc,\n\t0x6c6: 0xa000, 0x6c7: 0xa000, 0x6c8: 0x3be3, 0x6c9: 0x3bea,\n\t0x6d1: 0xa000,\n\t0x6d2: 0xa000,\n\t0x6e2: 0xa000,\n\t0x6e8: 0xa000, 0x6e9: 0xa000,\n\t0x6eb: 0xa000, 0x6ec: 0x3bff, 0x6ed: 0x3c06, 0x6ee: 0x3c0d, 0x6ef: 0x3c14,\n\t0x6f2: 0xa000, 0x6f3: 0xa000, 0x6f4: 0xa000, 0x6f5: 0xa000,\n\t// Block 0x1c, offset 0x700\n\t0x706: 0xa000, 0x70b: 0xa000,\n\t0x70c: 0x3f47, 0x70d: 0xa000, 0x70e: 0x3f4f, 0x70f: 0xa000, 0x710: 0x3f57, 0x711: 0xa000,\n\t0x712: 0x3f5f, 0x713: 0xa000, 0x714: 0x3f67, 0x715: 0xa000, 0x716: 0x3f6f, 0x717: 0xa000,\n\t0x718: 0x3f77, 0x719: 0xa000, 0x71a: 0x3f7f, 0x71b: 0xa000, 0x71c: 0x3f87, 0x71d: 0xa000,\n\t0x71e: 0x3f8f, 0x71f: 0xa000, 0x720: 0x3f97, 0x721: 0xa000, 0x722: 0x3f9f,\n\t0x724: 0xa000, 0x725: 0x3fa7, 0x726: 0xa000, 0x727: 0x3faf, 0x728: 0xa000, 0x729: 0x3fb7,\n\t0x72f: 0xa000,\n\t0x730: 0x3fbf, 0x731: 0x3fc7, 0x732: 0xa000, 0x733: 0x3fcf, 0x734: 0x3fd7, 0x735: 0xa000,\n\t0x736: 0x3fdf, 0x737: 0x3fe7, 0x738: 0xa000, 0x739: 0x3fef, 0x73a: 0x3ff7, 0x73b: 0xa000,\n\t0x73c: 0x3fff, 0x73d: 0x4007,\n\t// Block 0x1d, offset 0x740\n\t0x754: 0x3f3f,\n\t0x759: 0x9904, 0x75a: 0x9904, 0x75b: 0x8100, 0x75c: 0x8100, 0x75d: 0xa000,\n\t0x75e: 0x400f,\n\t0x766: 0xa000,\n\t0x76b: 0xa000, 0x76c: 0x401f, 0x76d: 0xa000, 0x76e: 0x4027, 0x76f: 0xa000,\n\t0x770: 0x402f, 0x771: 0xa000, 0x772: 0x4037, 0x773: 0xa000, 0x774: 0x403f, 0x775: 0xa000,\n\t0x776: 0x4047, 0x777: 0xa000, 0x778: 0x404f, 0x779: 0xa000, 0x77a: 0x4057, 0x77b: 0xa000,\n\t0x77c: 0x405f, 0x77d: 0xa000, 0x77e: 0x4067, 0x77f: 0xa000,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x406f, 0x781: 0xa000, 0x782: 0x4077, 0x784: 0xa000, 0x785: 0x407f,\n\t0x786: 0xa000, 0x787: 0x4087, 0x788: 0xa000, 0x789: 0x408f,\n\t0x78f: 0xa000, 0x790: 0x4097, 0x791: 0x409f,\n\t0x792: 0xa000, 0x793: 0x40a7, 0x794: 0x40af, 0x795: 0xa000, 0x796: 0x40b7, 0x797: 0x40bf,\n\t0x798: 0xa000, 0x799: 0x40c7, 0x79a: 0x40cf, 0x79b: 0xa000, 0x79c: 0x40d7, 0x79d: 0x40df,\n\t0x7af: 0xa000,\n\t0x7b0: 0xa000, 0x7b1: 0xa000, 0x7b2: 0xa000, 0x7b4: 0x4017,\n\t0x7b7: 0x40e7, 0x7b8: 0x40ef, 0x7b9: 0x40f7, 0x7ba: 0x40ff,\n\t0x7bd: 0xa000, 0x7be: 0x4107,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x1472, 0x7c1: 0x0df6, 0x7c2: 0x14ce, 0x7c3: 0x149a, 0x7c4: 0x0f52, 0x7c5: 0x07e6,\n\t0x7c6: 0x09da, 0x7c7: 0x1726, 0x7c8: 0x1726, 0x7c9: 0x0b06, 0x7ca: 0x155a, 0x7cb: 0x0a3e,\n\t0x7cc: 0x0b02, 0x7cd: 0x0cea, 0x7ce: 0x10ca, 0x7cf: 0x125a, 0x7d0: 0x1392, 0x7d1: 0x13ce,\n\t0x7d2: 0x1402, 0x7d3: 0x1516, 0x7d4: 0x0e6e, 0x7d5: 0x0efa, 0x7d6: 0x0fa6, 0x7d7: 0x103e,\n\t0x7d8: 0x135a, 0x7d9: 0x1542, 0x7da: 0x166e, 0x7db: 0x080a, 0x7dc: 0x09ae, 0x7dd: 0x0e82,\n\t0x7de: 0x0fca, 0x7df: 0x138e, 0x7e0: 0x16be, 0x7e1: 0x0bae, 0x7e2: 0x0f72, 0x7e3: 0x137e,\n\t0x7e4: 0x1412, 0x7e5: 0x0d1e, 0x7e6: 0x12b6, 0x7e7: 0x13da, 0x7e8: 0x0c1a, 0x7e9: 0x0e0a,\n\t0x7ea: 0x0f12, 0x7eb: 0x1016, 0x7ec: 0x1522, 0x7ed: 0x084a, 0x7ee: 0x08e2, 0x7ef: 0x094e,\n\t0x7f0: 0x0d86, 0x7f1: 0x0e7a, 0x7f2: 0x0fc6, 0x7f3: 0x10ea, 0x7f4: 0x1272, 0x7f5: 0x1386,\n\t0x7f6: 0x139e, 0x7f7: 0x14c2, 0x7f8: 0x15ea, 0x7f9: 0x169e, 0x7fa: 0x16ba, 0x7fb: 0x1126,\n\t0x7fc: 0x1166, 0x7fd: 0x121e, 0x7fe: 0x133e, 0x7ff: 0x1576,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x16c6, 0x801: 0x1446, 0x802: 0x0ac2, 0x803: 0x0c36, 0x804: 0x11d6, 0x805: 0x1296,\n\t0x806: 0x0ffa, 0x807: 0x112e, 0x808: 0x1492, 0x809: 0x15e2, 0x80a: 0x0abe, 0x80b: 0x0b8a,\n\t0x80c: 0x0e72, 0x80d: 0x0f26, 0x80e: 0x0f5a, 0x80f: 0x120e, 0x810: 0x1236, 0x811: 0x15a2,\n\t0x812: 0x094a, 0x813: 0x12a2, 0x814: 0x08ee, 0x815: 0x08ea, 0x816: 0x1192, 0x817: 0x1222,\n\t0x818: 0x1356, 0x819: 0x15aa, 0x81a: 0x1462, 0x81b: 0x0d22, 0x81c: 0x0e6e, 0x81d: 0x1452,\n\t0x81e: 0x07f2, 0x81f: 0x0b5e, 0x820: 0x0c8e, 0x821: 0x102a, 0x822: 0x10aa, 0x823: 0x096e,\n\t0x824: 0x1136, 0x825: 0x085a, 0x826: 0x0c72, 0x827: 0x07d2, 0x828: 0x0ee6, 0x829: 0x0d9e,\n\t0x82a: 0x120a, 0x82b: 0x09c2, 0x82c: 0x0aae, 0x82d: 0x10f6, 0x82e: 0x135e, 0x82f: 0x1436,\n\t0x830: 0x0eb2, 0x831: 0x14f2, 0x832: 0x0ede, 0x833: 0x0d32, 0x834: 0x1316, 0x835: 0x0d52,\n\t0x836: 0x10a6, 0x837: 0x0826, 0x838: 0x08a2, 0x839: 0x08e6, 0x83a: 0x0e4e, 0x83b: 0x11f6,\n\t0x83c: 0x12ee, 0x83d: 0x1442, 0x83e: 0x1556, 0x83f: 0x0956,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0a0a, 0x841: 0x0b12, 0x842: 0x0c2a, 0x843: 0x0dba, 0x844: 0x0f76, 0x845: 0x113a,\n\t0x846: 0x1592, 0x847: 0x1676, 0x848: 0x16ca, 0x849: 0x16e2, 0x84a: 0x0932, 0x84b: 0x0dee,\n\t0x84c: 0x0e9e, 0x84d: 0x14e6, 0x84e: 0x0bf6, 0x84f: 0x0cd2, 0x850: 0x0cee, 0x851: 0x0d7e,\n\t0x852: 0x0f66, 0x853: 0x0fb2, 0x854: 0x1062, 0x855: 0x1186, 0x856: 0x122a, 0x857: 0x128e,\n\t0x858: 0x14d6, 0x859: 0x1366, 0x85a: 0x14fe, 0x85b: 0x157a, 0x85c: 0x090a, 0x85d: 0x0936,\n\t0x85e: 0x0a1e, 0x85f: 0x0fa2, 0x860: 0x13ee, 0x861: 0x1436, 0x862: 0x0c16, 0x863: 0x0c86,\n\t0x864: 0x0d4a, 0x865: 0x0eaa, 0x866: 0x11d2, 0x867: 0x101e, 0x868: 0x0836, 0x869: 0x0a7a,\n\t0x86a: 0x0b5e, 0x86b: 0x0bc2, 0x86c: 0x0c92, 0x86d: 0x103a, 0x86e: 0x1056, 0x86f: 0x1266,\n\t0x870: 0x1286, 0x871: 0x155e, 0x872: 0x15de, 0x873: 0x15ee, 0x874: 0x162a, 0x875: 0x084e,\n\t0x876: 0x117a, 0x877: 0x154a, 0x878: 0x15c6, 0x879: 0x0caa, 0x87a: 0x0812, 0x87b: 0x0872,\n\t0x87c: 0x0b62, 0x87d: 0x0b82, 0x87e: 0x0daa, 0x87f: 0x0e6e,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0fbe, 0x881: 0x10c6, 0x882: 0x1372, 0x883: 0x1512, 0x884: 0x171e, 0x885: 0x0dde,\n\t0x886: 0x159e, 0x887: 0x092e, 0x888: 0x0e2a, 0x889: 0x0e36, 0x88a: 0x0f0a, 0x88b: 0x0f42,\n\t0x88c: 0x1046, 0x88d: 0x10a2, 0x88e: 0x1122, 0x88f: 0x1206, 0x890: 0x1636, 0x891: 0x08aa,\n\t0x892: 0x0cfe, 0x893: 0x15ae, 0x894: 0x0862, 0x895: 0x0ba6, 0x896: 0x0f2a, 0x897: 0x14da,\n\t0x898: 0x0c62, 0x899: 0x0cb2, 0x89a: 0x0e3e, 0x89b: 0x102a, 0x89c: 0x15b6, 0x89d: 0x0912,\n\t0x89e: 0x09fa, 0x89f: 0x0b92, 0x8a0: 0x0dce, 0x8a1: 0x0e1a, 0x8a2: 0x0e5a, 0x8a3: 0x0eee,\n\t0x8a4: 0x1042, 0x8a5: 0x10b6, 0x8a6: 0x1252, 0x8a7: 0x13f2, 0x8a8: 0x13fe, 0x8a9: 0x1552,\n\t0x8aa: 0x15d2, 0x8ab: 0x097e, 0x8ac: 0x0f46, 0x8ad: 0x09fe, 0x8ae: 0x0fc2, 0x8af: 0x1066,\n\t0x8b0: 0x1382, 0x8b1: 0x15ba, 0x8b2: 0x16a6, 0x8b3: 0x16ce, 0x8b4: 0x0e32, 0x8b5: 0x0f22,\n\t0x8b6: 0x12be, 0x8b7: 0x11b2, 0x8b8: 0x11be, 0x8b9: 0x11e2, 0x8ba: 0x1012, 0x8bb: 0x0f9a,\n\t0x8bc: 0x145e, 0x8bd: 0x082e, 0x8be: 0x1326, 0x8bf: 0x0916,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0906, 0x8c1: 0x0c06, 0x8c2: 0x0d26, 0x8c3: 0x11ee, 0x8c4: 0x0b4e, 0x8c5: 0x0efe,\n\t0x8c6: 0x0dea, 0x8c7: 0x14e2, 0x8c8: 0x13e2, 0x8c9: 0x15a6, 0x8ca: 0x141e, 0x8cb: 0x0c22,\n\t0x8cc: 0x0882, 0x8cd: 0x0a56, 0x8d0: 0x0aaa,\n\t0x8d2: 0x0dda, 0x8d5: 0x08f2, 0x8d6: 0x101a, 0x8d7: 0x10de,\n\t0x8d8: 0x1142, 0x8d9: 0x115e, 0x8da: 0x1162, 0x8db: 0x1176, 0x8dc: 0x15f6, 0x8dd: 0x11e6,\n\t0x8de: 0x126a, 0x8e0: 0x138a, 0x8e2: 0x144e,\n\t0x8e5: 0x1502, 0x8e6: 0x152e,\n\t0x8ea: 0x164a, 0x8eb: 0x164e, 0x8ec: 0x1652, 0x8ed: 0x16b6, 0x8ee: 0x1526, 0x8ef: 0x15c2,\n\t0x8f0: 0x0852, 0x8f1: 0x0876, 0x8f2: 0x088a, 0x8f3: 0x0946, 0x8f4: 0x0952, 0x8f5: 0x0992,\n\t0x8f6: 0x0a46, 0x8f7: 0x0a62, 0x8f8: 0x0a6a, 0x8f9: 0x0aa6, 0x8fa: 0x0ab2, 0x8fb: 0x0b8e,\n\t0x8fc: 0x0b96, 0x8fd: 0x0c9e, 0x8fe: 0x0cc6, 0x8ff: 0x0cce,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0ce6, 0x901: 0x0d92, 0x902: 0x0dc2, 0x903: 0x0de2, 0x904: 0x0e52, 0x905: 0x0f16,\n\t0x906: 0x0f32, 0x907: 0x0f62, 0x908: 0x0fb6, 0x909: 0x0fd6, 0x90a: 0x104a, 0x90b: 0x112a,\n\t0x90c: 0x1146, 0x90d: 0x114e, 0x90e: 0x114a, 0x90f: 0x1152, 0x910: 0x1156, 0x911: 0x115a,\n\t0x912: 0x116e, 0x913: 0x1172, 0x914: 0x1196, 0x915: 0x11aa, 0x916: 0x11c6, 0x917: 0x122a,\n\t0x918: 0x1232, 0x919: 0x123a, 0x91a: 0x124e, 0x91b: 0x1276, 0x91c: 0x12c6, 0x91d: 0x12fa,\n\t0x91e: 0x12fa, 0x91f: 0x1362, 0x920: 0x140a, 0x921: 0x1422, 0x922: 0x1456, 0x923: 0x145a,\n\t0x924: 0x149e, 0x925: 0x14a2, 0x926: 0x14fa, 0x927: 0x1502, 0x928: 0x15d6, 0x929: 0x161a,\n\t0x92a: 0x1632, 0x92b: 0x0c96, 0x92c: 0x184b, 0x92d: 0x12de,\n\t0x930: 0x07da, 0x931: 0x08de, 0x932: 0x089e, 0x933: 0x0846, 0x934: 0x0886, 0x935: 0x08b2,\n\t0x936: 0x0942, 0x937: 0x095e, 0x938: 0x0a46, 0x939: 0x0a32, 0x93a: 0x0a42, 0x93b: 0x0a5e,\n\t0x93c: 0x0aaa, 0x93d: 0x0aba, 0x93e: 0x0afe, 0x93f: 0x0b0a,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0b26, 0x941: 0x0b36, 0x942: 0x0c1e, 0x943: 0x0c26, 0x944: 0x0c56, 0x945: 0x0c76,\n\t0x946: 0x0ca6, 0x947: 0x0cbe, 0x948: 0x0cae, 0x949: 0x0cce, 0x94a: 0x0cc2, 0x94b: 0x0ce6,\n\t0x94c: 0x0d02, 0x94d: 0x0d5a, 0x94e: 0x0d66, 0x94f: 0x0d6e, 0x950: 0x0d96, 0x951: 0x0dda,\n\t0x952: 0x0e0a, 0x953: 0x0e0e, 0x954: 0x0e22, 0x955: 0x0ea2, 0x956: 0x0eb2, 0x957: 0x0f0a,\n\t0x958: 0x0f56, 0x959: 0x0f4e, 0x95a: 0x0f62, 0x95b: 0x0f7e, 0x95c: 0x0fb6, 0x95d: 0x110e,\n\t0x95e: 0x0fda, 0x95f: 0x100e, 0x960: 0x101a, 0x961: 0x105a, 0x962: 0x1076, 0x963: 0x109a,\n\t0x964: 0x10be, 0x965: 0x10c2, 0x966: 0x10de, 0x967: 0x10e2, 0x968: 0x10f2, 0x969: 0x1106,\n\t0x96a: 0x1102, 0x96b: 0x1132, 0x96c: 0x11ae, 0x96d: 0x11c6, 0x96e: 0x11de, 0x96f: 0x1216,\n\t0x970: 0x122a, 0x971: 0x1246, 0x972: 0x1276, 0x973: 0x132a, 0x974: 0x1352, 0x975: 0x13c6,\n\t0x976: 0x140e, 0x977: 0x141a, 0x978: 0x1422, 0x979: 0x143a, 0x97a: 0x144e, 0x97b: 0x143e,\n\t0x97c: 0x1456, 0x97d: 0x1452, 0x97e: 0x144a, 0x97f: 0x145a,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x1466, 0x981: 0x14a2, 0x982: 0x14de, 0x983: 0x150e, 0x984: 0x1546, 0x985: 0x1566,\n\t0x986: 0x15b2, 0x987: 0x15d6, 0x988: 0x15f6, 0x989: 0x160a, 0x98a: 0x161a, 0x98b: 0x1626,\n\t0x98c: 0x1632, 0x98d: 0x1686, 0x98e: 0x1726, 0x98f: 0x17e2, 0x990: 0x17dd, 0x991: 0x180f,\n\t0x992: 0x0702, 0x993: 0x072a, 0x994: 0x072e, 0x995: 0x1891, 0x996: 0x18be, 0x997: 0x1936,\n\t0x998: 0x1712, 0x999: 0x1722,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x07f6, 0x9c1: 0x07ee, 0x9c2: 0x07fe, 0x9c3: 0x1774, 0x9c4: 0x0842, 0x9c5: 0x0852,\n\t0x9c6: 0x0856, 0x9c7: 0x085e, 0x9c8: 0x0866, 0x9c9: 0x086a, 0x9ca: 0x0876, 0x9cb: 0x086e,\n\t0x9cc: 0x06ae, 0x9cd: 0x1788, 0x9ce: 0x088a, 0x9cf: 0x088e, 0x9d0: 0x0892, 0x9d1: 0x08ae,\n\t0x9d2: 0x1779, 0x9d3: 0x06b2, 0x9d4: 0x089a, 0x9d5: 0x08ba, 0x9d6: 0x1783, 0x9d7: 0x08ca,\n\t0x9d8: 0x08d2, 0x9d9: 0x0832, 0x9da: 0x08da, 0x9db: 0x08de, 0x9dc: 0x195e, 0x9dd: 0x08fa,\n\t0x9de: 0x0902, 0x9df: 0x06ba, 0x9e0: 0x091a, 0x9e1: 0x091e, 0x9e2: 0x0926, 0x9e3: 0x092a,\n\t0x9e4: 0x06be, 0x9e5: 0x0942, 0x9e6: 0x0946, 0x9e7: 0x0952, 0x9e8: 0x095e, 0x9e9: 0x0962,\n\t0x9ea: 0x0966, 0x9eb: 0x096e, 0x9ec: 0x098e, 0x9ed: 0x0992, 0x9ee: 0x099a, 0x9ef: 0x09aa,\n\t0x9f0: 0x09b2, 0x9f1: 0x09b6, 0x9f2: 0x09b6, 0x9f3: 0x09b6, 0x9f4: 0x1797, 0x9f5: 0x0f8e,\n\t0x9f6: 0x09ca, 0x9f7: 0x09d2, 0x9f8: 0x179c, 0x9f9: 0x09de, 0x9fa: 0x09e6, 0x9fb: 0x09ee,\n\t0x9fc: 0x0a16, 0x9fd: 0x0a02, 0x9fe: 0x0a0e, 0x9ff: 0x0a12,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0a1a, 0xa01: 0x0a22, 0xa02: 0x0a26, 0xa03: 0x0a2e, 0xa04: 0x0a36, 0xa05: 0x0a3a,\n\t0xa06: 0x0a3a, 0xa07: 0x0a42, 0xa08: 0x0a4a, 0xa09: 0x0a4e, 0xa0a: 0x0a5a, 0xa0b: 0x0a7e,\n\t0xa0c: 0x0a62, 0xa0d: 0x0a82, 0xa0e: 0x0a66, 0xa0f: 0x0a6e, 0xa10: 0x0906, 0xa11: 0x0aca,\n\t0xa12: 0x0a92, 0xa13: 0x0a96, 0xa14: 0x0a9a, 0xa15: 0x0a8e, 0xa16: 0x0aa2, 0xa17: 0x0a9e,\n\t0xa18: 0x0ab6, 0xa19: 0x17a1, 0xa1a: 0x0ad2, 0xa1b: 0x0ad6, 0xa1c: 0x0ade, 0xa1d: 0x0aea,\n\t0xa1e: 0x0af2, 0xa1f: 0x0b0e, 0xa20: 0x17a6, 0xa21: 0x17ab, 0xa22: 0x0b1a, 0xa23: 0x0b1e,\n\t0xa24: 0x0b22, 0xa25: 0x0b16, 0xa26: 0x0b2a, 0xa27: 0x06c2, 0xa28: 0x06c6, 0xa29: 0x0b32,\n\t0xa2a: 0x0b3a, 0xa2b: 0x0b3a, 0xa2c: 0x17b0, 0xa2d: 0x0b56, 0xa2e: 0x0b5a, 0xa2f: 0x0b5e,\n\t0xa30: 0x0b66, 0xa31: 0x17b5, 0xa32: 0x0b6e, 0xa33: 0x0b72, 0xa34: 0x0c4a, 0xa35: 0x0b7a,\n\t0xa36: 0x06ca, 0xa37: 0x0b86, 0xa38: 0x0b96, 0xa39: 0x0ba2, 0xa3a: 0x0b9e, 0xa3b: 0x17bf,\n\t0xa3c: 0x0baa, 0xa3d: 0x17c4, 0xa3e: 0x0bb6, 0xa3f: 0x0bb2,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0bba, 0xa41: 0x0bca, 0xa42: 0x0bce, 0xa43: 0x06ce, 0xa44: 0x0bde, 0xa45: 0x0be6,\n\t0xa46: 0x0bea, 0xa47: 0x0bee, 0xa48: 0x06d2, 0xa49: 0x17c9, 0xa4a: 0x06d6, 0xa4b: 0x0c0a,\n\t0xa4c: 0x0c0e, 0xa4d: 0x0c12, 0xa4e: 0x0c1a, 0xa4f: 0x1990, 0xa50: 0x0c32, 0xa51: 0x17d3,\n\t0xa52: 0x17d3, 0xa53: 0x12d2, 0xa54: 0x0c42, 0xa55: 0x0c42, 0xa56: 0x06da, 0xa57: 0x17f6,\n\t0xa58: 0x18c8, 0xa59: 0x0c52, 0xa5a: 0x0c5a, 0xa5b: 0x06de, 0xa5c: 0x0c6e, 0xa5d: 0x0c7e,\n\t0xa5e: 0x0c82, 0xa5f: 0x0c8a, 0xa60: 0x0c9a, 0xa61: 0x06e6, 0xa62: 0x06e2, 0xa63: 0x0c9e,\n\t0xa64: 0x17d8, 0xa65: 0x0ca2, 0xa66: 0x0cb6, 0xa67: 0x0cba, 0xa68: 0x0cbe, 0xa69: 0x0cba,\n\t0xa6a: 0x0cca, 0xa6b: 0x0cce, 0xa6c: 0x0cde, 0xa6d: 0x0cd6, 0xa6e: 0x0cda, 0xa6f: 0x0ce2,\n\t0xa70: 0x0ce6, 0xa71: 0x0cea, 0xa72: 0x0cf6, 0xa73: 0x0cfa, 0xa74: 0x0d12, 0xa75: 0x0d1a,\n\t0xa76: 0x0d2a, 0xa77: 0x0d3e, 0xa78: 0x17e7, 0xa79: 0x0d3a, 0xa7a: 0x0d2e, 0xa7b: 0x0d46,\n\t0xa7c: 0x0d4e, 0xa7d: 0x0d62, 0xa7e: 0x17ec, 0xa7f: 0x0d6a,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x0d5e, 0xa81: 0x0d56, 0xa82: 0x06ea, 0xa83: 0x0d72, 0xa84: 0x0d7a, 0xa85: 0x0d82,\n\t0xa86: 0x0d76, 0xa87: 0x06ee, 0xa88: 0x0d92, 0xa89: 0x0d9a, 0xa8a: 0x17f1, 0xa8b: 0x0dc6,\n\t0xa8c: 0x0dfa, 0xa8d: 0x0dd6, 0xa8e: 0x06fa, 0xa8f: 0x0de2, 0xa90: 0x06f6, 0xa91: 0x06f2,\n\t0xa92: 0x08be, 0xa93: 0x08c2, 0xa94: 0x0dfe, 0xa95: 0x0de6, 0xa96: 0x12a6, 0xa97: 0x075e,\n\t0xa98: 0x0e0a, 0xa99: 0x0e0e, 0xa9a: 0x0e12, 0xa9b: 0x0e26, 0xa9c: 0x0e1e, 0xa9d: 0x180a,\n\t0xa9e: 0x06fe, 0xa9f: 0x0e3a, 0xaa0: 0x0e2e, 0xaa1: 0x0e4a, 0xaa2: 0x0e52, 0xaa3: 0x1814,\n\t0xaa4: 0x0e56, 0xaa5: 0x0e42, 0xaa6: 0x0e5e, 0xaa7: 0x0702, 0xaa8: 0x0e62, 0xaa9: 0x0e66,\n\t0xaaa: 0x0e6a, 0xaab: 0x0e76, 0xaac: 0x1819, 0xaad: 0x0e7e, 0xaae: 0x0706, 0xaaf: 0x0e8a,\n\t0xab0: 0x181e, 0xab1: 0x0e8e, 0xab2: 0x070a, 0xab3: 0x0e9a, 0xab4: 0x0ea6, 0xab5: 0x0eb2,\n\t0xab6: 0x0eb6, 0xab7: 0x1823, 0xab8: 0x17ba, 0xab9: 0x1828, 0xaba: 0x0ed6, 0xabb: 0x182d,\n\t0xabc: 0x0ee2, 0xabd: 0x0eea, 0xabe: 0x0eda, 0xabf: 0x0ef6,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x0f06, 0xac1: 0x0f16, 0xac2: 0x0f0a, 0xac3: 0x0f0e, 0xac4: 0x0f1a, 0xac5: 0x0f1e,\n\t0xac6: 0x1832, 0xac7: 0x0f02, 0xac8: 0x0f36, 0xac9: 0x0f3a, 0xaca: 0x070e, 0xacb: 0x0f4e,\n\t0xacc: 0x0f4a, 0xacd: 0x1837, 0xace: 0x0f2e, 0xacf: 0x0f6a, 0xad0: 0x183c, 0xad1: 0x1841,\n\t0xad2: 0x0f6e, 0xad3: 0x0f82, 0xad4: 0x0f7e, 0xad5: 0x0f7a, 0xad6: 0x0712, 0xad7: 0x0f86,\n\t0xad8: 0x0f96, 0xad9: 0x0f92, 0xada: 0x0f9e, 0xadb: 0x177e, 0xadc: 0x0fae, 0xadd: 0x1846,\n\t0xade: 0x0fba, 0xadf: 0x1850, 0xae0: 0x0fce, 0xae1: 0x0fda, 0xae2: 0x0fee, 0xae3: 0x1855,\n\t0xae4: 0x1002, 0xae5: 0x1006, 0xae6: 0x185a, 0xae7: 0x185f, 0xae8: 0x1022, 0xae9: 0x1032,\n\t0xaea: 0x0716, 0xaeb: 0x1036, 0xaec: 0x071a, 0xaed: 0x071a, 0xaee: 0x104e, 0xaef: 0x1052,\n\t0xaf0: 0x105a, 0xaf1: 0x105e, 0xaf2: 0x106a, 0xaf3: 0x071e, 0xaf4: 0x1082, 0xaf5: 0x1864,\n\t0xaf6: 0x109e, 0xaf7: 0x1869, 0xaf8: 0x10aa, 0xaf9: 0x17ce, 0xafa: 0x10ba, 0xafb: 0x186e,\n\t0xafc: 0x1873, 0xafd: 0x1878, 0xafe: 0x0722, 0xaff: 0x0726,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x10f2, 0xb01: 0x1882, 0xb02: 0x187d, 0xb03: 0x1887, 0xb04: 0x188c, 0xb05: 0x10fa,\n\t0xb06: 0x10fe, 0xb07: 0x10fe, 0xb08: 0x1106, 0xb09: 0x072e, 0xb0a: 0x110a, 0xb0b: 0x0732,\n\t0xb0c: 0x0736, 0xb0d: 0x1896, 0xb0e: 0x111e, 0xb0f: 0x1126, 0xb10: 0x1132, 0xb11: 0x073a,\n\t0xb12: 0x189b, 0xb13: 0x1156, 0xb14: 0x18a0, 0xb15: 0x18a5, 0xb16: 0x1176, 0xb17: 0x118e,\n\t0xb18: 0x073e, 0xb19: 0x1196, 0xb1a: 0x119a, 0xb1b: 0x119e, 0xb1c: 0x18aa, 0xb1d: 0x18af,\n\t0xb1e: 0x18af, 0xb1f: 0x11b6, 0xb20: 0x0742, 0xb21: 0x18b4, 0xb22: 0x11ca, 0xb23: 0x11ce,\n\t0xb24: 0x0746, 0xb25: 0x18b9, 0xb26: 0x11ea, 0xb27: 0x074a, 0xb28: 0x11fa, 0xb29: 0x11f2,\n\t0xb2a: 0x1202, 0xb2b: 0x18c3, 0xb2c: 0x121a, 0xb2d: 0x074e, 0xb2e: 0x1226, 0xb2f: 0x122e,\n\t0xb30: 0x123e, 0xb31: 0x0752, 0xb32: 0x18cd, 0xb33: 0x18d2, 0xb34: 0x0756, 0xb35: 0x18d7,\n\t0xb36: 0x1256, 0xb37: 0x18dc, 0xb38: 0x1262, 0xb39: 0x126e, 0xb3a: 0x1276, 0xb3b: 0x18e1,\n\t0xb3c: 0x18e6, 0xb3d: 0x128a, 0xb3e: 0x18eb, 0xb3f: 0x1292,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x17fb, 0xb41: 0x075a, 0xb42: 0x12aa, 0xb43: 0x12ae, 0xb44: 0x0762, 0xb45: 0x12b2,\n\t0xb46: 0x0b2e, 0xb47: 0x18f0, 0xb48: 0x18f5, 0xb49: 0x1800, 0xb4a: 0x1805, 0xb4b: 0x12d2,\n\t0xb4c: 0x12d6, 0xb4d: 0x14ee, 0xb4e: 0x0766, 0xb4f: 0x1302, 0xb50: 0x12fe, 0xb51: 0x1306,\n\t0xb52: 0x093a, 0xb53: 0x130a, 0xb54: 0x130e, 0xb55: 0x1312, 0xb56: 0x131a, 0xb57: 0x18fa,\n\t0xb58: 0x1316, 0xb59: 0x131e, 0xb5a: 0x1332, 0xb5b: 0x1336, 0xb5c: 0x1322, 0xb5d: 0x133a,\n\t0xb5e: 0x134e, 0xb5f: 0x1362, 0xb60: 0x132e, 0xb61: 0x1342, 0xb62: 0x1346, 0xb63: 0x134a,\n\t0xb64: 0x18ff, 0xb65: 0x1909, 0xb66: 0x1904, 0xb67: 0x076a, 0xb68: 0x136a, 0xb69: 0x136e,\n\t0xb6a: 0x1376, 0xb6b: 0x191d, 0xb6c: 0x137a, 0xb6d: 0x190e, 0xb6e: 0x076e, 0xb6f: 0x0772,\n\t0xb70: 0x1913, 0xb71: 0x1918, 0xb72: 0x0776, 0xb73: 0x139a, 0xb74: 0x139e, 0xb75: 0x13a2,\n\t0xb76: 0x13a6, 0xb77: 0x13b2, 0xb78: 0x13ae, 0xb79: 0x13ba, 0xb7a: 0x13b6, 0xb7b: 0x13c6,\n\t0xb7c: 0x13be, 0xb7d: 0x13c2, 0xb7e: 0x13ca, 0xb7f: 0x077a,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x13d2, 0xb81: 0x13d6, 0xb82: 0x077e, 0xb83: 0x13e6, 0xb84: 0x13ea, 0xb85: 0x1922,\n\t0xb86: 0x13f6, 0xb87: 0x13fa, 0xb88: 0x0782, 0xb89: 0x1406, 0xb8a: 0x06b6, 0xb8b: 0x1927,\n\t0xb8c: 0x192c, 0xb8d: 0x0786, 0xb8e: 0x078a, 0xb8f: 0x1432, 0xb90: 0x144a, 0xb91: 0x1466,\n\t0xb92: 0x1476, 0xb93: 0x1931, 0xb94: 0x148a, 0xb95: 0x148e, 0xb96: 0x14a6, 0xb97: 0x14b2,\n\t0xb98: 0x193b, 0xb99: 0x178d, 0xb9a: 0x14be, 0xb9b: 0x14ba, 0xb9c: 0x14c6, 0xb9d: 0x1792,\n\t0xb9e: 0x14d2, 0xb9f: 0x14de, 0xba0: 0x1940, 0xba1: 0x1945, 0xba2: 0x151e, 0xba3: 0x152a,\n\t0xba4: 0x1532, 0xba5: 0x194a, 0xba6: 0x1536, 0xba7: 0x1562, 0xba8: 0x156e, 0xba9: 0x1572,\n\t0xbaa: 0x156a, 0xbab: 0x157e, 0xbac: 0x1582, 0xbad: 0x194f, 0xbae: 0x158e, 0xbaf: 0x078e,\n\t0xbb0: 0x1596, 0xbb1: 0x1954, 0xbb2: 0x0792, 0xbb3: 0x15ce, 0xbb4: 0x0bbe, 0xbb5: 0x15e6,\n\t0xbb6: 0x1959, 0xbb7: 0x1963, 0xbb8: 0x0796, 0xbb9: 0x079a, 0xbba: 0x160e, 0xbbb: 0x1968,\n\t0xbbc: 0x079e, 0xbbd: 0x196d, 0xbbe: 0x1626, 0xbbf: 0x1626,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x162e, 0xbc1: 0x1972, 0xbc2: 0x1646, 0xbc3: 0x07a2, 0xbc4: 0x1656, 0xbc5: 0x1662,\n\t0xbc6: 0x166a, 0xbc7: 0x1672, 0xbc8: 0x07a6, 0xbc9: 0x1977, 0xbca: 0x1686, 0xbcb: 0x16a2,\n\t0xbcc: 0x16ae, 0xbcd: 0x07aa, 0xbce: 0x07ae, 0xbcf: 0x16b2, 0xbd0: 0x197c, 0xbd1: 0x07b2,\n\t0xbd2: 0x1981, 0xbd3: 0x1986, 0xbd4: 0x198b, 0xbd5: 0x16d6, 0xbd6: 0x07b6, 0xbd7: 0x16ea,\n\t0xbd8: 0x16f2, 0xbd9: 0x16f6, 0xbda: 0x16fe, 0xbdb: 0x1706, 0xbdc: 0x170e, 0xbdd: 0x1995,\n}\n\n// nfcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x2e, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2f, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x30, 0xcb: 0x31, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x32,\n\t0xd0: 0x09, 0xd1: 0x33, 0xd2: 0x34, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x35,\n\t0xd8: 0x36, 0xd9: 0x0c, 0xdb: 0x37, 0xdc: 0x38, 0xdd: 0x39, 0xdf: 0x3a,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x3b, 0x121: 0x3c, 0x122: 0x3d, 0x123: 0x0d, 0x124: 0x3e, 0x125: 0x3f, 0x126: 0x40, 0x127: 0x41,\n\t0x128: 0x42, 0x129: 0x43, 0x12a: 0x44, 0x12b: 0x45, 0x12c: 0x40, 0x12d: 0x46, 0x12e: 0x47, 0x12f: 0x48,\n\t0x130: 0x44, 0x131: 0x49, 0x132: 0x4a, 0x133: 0x4b, 0x134: 0x4c, 0x135: 0x4d, 0x137: 0x4e,\n\t0x138: 0x4f, 0x139: 0x50, 0x13a: 0x51, 0x13b: 0x52, 0x13c: 0x53, 0x13d: 0x54, 0x13e: 0x55, 0x13f: 0x56,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x57, 0x142: 0x58, 0x144: 0x59, 0x145: 0x5a, 0x146: 0x5b, 0x147: 0x5c,\n\t0x14d: 0x5d,\n\t0x15c: 0x5e, 0x15f: 0x5f,\n\t0x162: 0x60, 0x164: 0x61,\n\t0x168: 0x62, 0x169: 0x63, 0x16a: 0x64, 0x16b: 0x65, 0x16c: 0x0e, 0x16d: 0x66, 0x16e: 0x67, 0x16f: 0x68,\n\t0x170: 0x69, 0x173: 0x6a, 0x177: 0x0f,\n\t0x178: 0x10, 0x179: 0x11, 0x17a: 0x12, 0x17b: 0x13, 0x17c: 0x14, 0x17d: 0x15, 0x17e: 0x16, 0x17f: 0x17,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x6b, 0x183: 0x6c, 0x184: 0x6d, 0x186: 0x6e, 0x187: 0x6f,\n\t0x188: 0x70, 0x189: 0x18, 0x18a: 0x19, 0x18b: 0x71, 0x18c: 0x72,\n\t0x1ab: 0x73,\n\t0x1b3: 0x74, 0x1b5: 0x75, 0x1b7: 0x76,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x77, 0x1c1: 0x1a, 0x1c2: 0x1b, 0x1c3: 0x1c, 0x1c4: 0x78, 0x1c5: 0x79,\n\t0x1c9: 0x7a, 0x1cc: 0x7b, 0x1cd: 0x7c,\n\t// Block 0x8, offset 0x200\n\t0x219: 0x7d, 0x21a: 0x7e, 0x21b: 0x7f,\n\t0x220: 0x80, 0x223: 0x81, 0x224: 0x82, 0x225: 0x83, 0x226: 0x84, 0x227: 0x85,\n\t0x22a: 0x86, 0x22b: 0x87, 0x22f: 0x88,\n\t0x230: 0x89, 0x231: 0x8a, 0x232: 0x8b, 0x233: 0x8c, 0x234: 0x8d, 0x235: 0x8e, 0x236: 0x8f, 0x237: 0x89,\n\t0x238: 0x8a, 0x239: 0x8b, 0x23a: 0x8c, 0x23b: 0x8d, 0x23c: 0x8e, 0x23d: 0x8f, 0x23e: 0x89, 0x23f: 0x8a,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x8b, 0x241: 0x8c, 0x242: 0x8d, 0x243: 0x8e, 0x244: 0x8f, 0x245: 0x89, 0x246: 0x8a, 0x247: 0x8b,\n\t0x248: 0x8c, 0x249: 0x8d, 0x24a: 0x8e, 0x24b: 0x8f, 0x24c: 0x89, 0x24d: 0x8a, 0x24e: 0x8b, 0x24f: 0x8c,\n\t0x250: 0x8d, 0x251: 0x8e, 0x252: 0x8f, 0x253: 0x89, 0x254: 0x8a, 0x255: 0x8b, 0x256: 0x8c, 0x257: 0x8d,\n\t0x258: 0x8e, 0x259: 0x8f, 0x25a: 0x89, 0x25b: 0x8a, 0x25c: 0x8b, 0x25d: 0x8c, 0x25e: 0x8d, 0x25f: 0x8e,\n\t0x260: 0x8f, 0x261: 0x89, 0x262: 0x8a, 0x263: 0x8b, 0x264: 0x8c, 0x265: 0x8d, 0x266: 0x8e, 0x267: 0x8f,\n\t0x268: 0x89, 0x269: 0x8a, 0x26a: 0x8b, 0x26b: 0x8c, 0x26c: 0x8d, 0x26d: 0x8e, 0x26e: 0x8f, 0x26f: 0x89,\n\t0x270: 0x8a, 0x271: 0x8b, 0x272: 0x8c, 0x273: 0x8d, 0x274: 0x8e, 0x275: 0x8f, 0x276: 0x89, 0x277: 0x8a,\n\t0x278: 0x8b, 0x279: 0x8c, 0x27a: 0x8d, 0x27b: 0x8e, 0x27c: 0x8f, 0x27d: 0x89, 0x27e: 0x8a, 0x27f: 0x8b,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x8c, 0x281: 0x8d, 0x282: 0x8e, 0x283: 0x8f, 0x284: 0x89, 0x285: 0x8a, 0x286: 0x8b, 0x287: 0x8c,\n\t0x288: 0x8d, 0x289: 0x8e, 0x28a: 0x8f, 0x28b: 0x89, 0x28c: 0x8a, 0x28d: 0x8b, 0x28e: 0x8c, 0x28f: 0x8d,\n\t0x290: 0x8e, 0x291: 0x8f, 0x292: 0x89, 0x293: 0x8a, 0x294: 0x8b, 0x295: 0x8c, 0x296: 0x8d, 0x297: 0x8e,\n\t0x298: 0x8f, 0x299: 0x89, 0x29a: 0x8a, 0x29b: 0x8b, 0x29c: 0x8c, 0x29d: 0x8d, 0x29e: 0x8e, 0x29f: 0x8f,\n\t0x2a0: 0x89, 0x2a1: 0x8a, 0x2a2: 0x8b, 0x2a3: 0x8c, 0x2a4: 0x8d, 0x2a5: 0x8e, 0x2a6: 0x8f, 0x2a7: 0x89,\n\t0x2a8: 0x8a, 0x2a9: 0x8b, 0x2aa: 0x8c, 0x2ab: 0x8d, 0x2ac: 0x8e, 0x2ad: 0x8f, 0x2ae: 0x89, 0x2af: 0x8a,\n\t0x2b0: 0x8b, 0x2b1: 0x8c, 0x2b2: 0x8d, 0x2b3: 0x8e, 0x2b4: 0x8f, 0x2b5: 0x89, 0x2b6: 0x8a, 0x2b7: 0x8b,\n\t0x2b8: 0x8c, 0x2b9: 0x8d, 0x2ba: 0x8e, 0x2bb: 0x8f, 0x2bc: 0x89, 0x2bd: 0x8a, 0x2be: 0x8b, 0x2bf: 0x8c,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x8d, 0x2c1: 0x8e, 0x2c2: 0x8f, 0x2c3: 0x89, 0x2c4: 0x8a, 0x2c5: 0x8b, 0x2c6: 0x8c, 0x2c7: 0x8d,\n\t0x2c8: 0x8e, 0x2c9: 0x8f, 0x2ca: 0x89, 0x2cb: 0x8a, 0x2cc: 0x8b, 0x2cd: 0x8c, 0x2ce: 0x8d, 0x2cf: 0x8e,\n\t0x2d0: 0x8f, 0x2d1: 0x89, 0x2d2: 0x8a, 0x2d3: 0x8b, 0x2d4: 0x8c, 0x2d5: 0x8d, 0x2d6: 0x8e, 0x2d7: 0x8f,\n\t0x2d8: 0x89, 0x2d9: 0x8a, 0x2da: 0x8b, 0x2db: 0x8c, 0x2dc: 0x8d, 0x2dd: 0x8e, 0x2de: 0x90,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x1d, 0x325: 0x1e, 0x326: 0x1f, 0x327: 0x20,\n\t0x328: 0x21, 0x329: 0x22, 0x32a: 0x23, 0x32b: 0x24, 0x32c: 0x91, 0x32d: 0x92, 0x32e: 0x93,\n\t0x331: 0x94, 0x332: 0x95, 0x333: 0x96, 0x334: 0x97,\n\t0x338: 0x98, 0x339: 0x99, 0x33a: 0x9a, 0x33b: 0x9b, 0x33e: 0x9c, 0x33f: 0x9d,\n\t// Block 0xd, offset 0x340\n\t0x347: 0x9e,\n\t0x34b: 0x9f, 0x34d: 0xa0,\n\t0x368: 0xa1, 0x36b: 0xa2,\n\t0x374: 0xa3,\n\t0x37a: 0xa4, 0x37b: 0xa5, 0x37d: 0xa6, 0x37e: 0xa7,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xa8, 0x382: 0xa9, 0x384: 0xaa, 0x385: 0x84, 0x387: 0xab,\n\t0x388: 0xac, 0x38b: 0xad, 0x38c: 0xae, 0x38d: 0xaf,\n\t0x391: 0xb0, 0x392: 0xb1, 0x393: 0xb2, 0x396: 0xb3, 0x397: 0xb4,\n\t0x398: 0x75, 0x39a: 0xb5, 0x39c: 0xb6,\n\t0x3a0: 0xb7, 0x3a4: 0xb8, 0x3a5: 0xb9, 0x3a7: 0xba,\n\t0x3a8: 0xbb, 0x3a9: 0xbc, 0x3aa: 0xbd,\n\t0x3b0: 0x75, 0x3b5: 0xbe, 0x3b6: 0xbf,\n\t0x3bd: 0xc0,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xc1, 0x3ec: 0xc2,\n\t0x3ff: 0xc3,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xc4,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xc5, 0x446: 0xc6, 0x447: 0xc7,\n\t0x449: 0xc8,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xc9, 0x482: 0xca, 0x484: 0xc2,\n\t0x48a: 0xcb, 0x48b: 0xcc,\n\t0x493: 0xcd,\n\t0x4a3: 0xce, 0x4a5: 0xcf,\n\t// Block 0x13, offset 0x4c0\n\t0x4c8: 0xd0,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x25, 0x521: 0x26, 0x522: 0x27, 0x523: 0x28, 0x524: 0x29, 0x525: 0x2a, 0x526: 0x2b, 0x527: 0x2c,\n\t0x528: 0x2d,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfcSparseOffset: 163 entries, 326 bytes\nvar nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x63, 0x68, 0x6a, 0x6e, 0x76, 0x7d, 0x80, 0x88, 0x8c, 0x90, 0x92, 0x94, 0x9d, 0xa1, 0xa8, 0xad, 0xb0, 0xba, 0xbd, 0xc4, 0xcc, 0xcf, 0xd1, 0xd4, 0xd6, 0xdb, 0xec, 0xf8, 0xfa, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10a, 0x10c, 0x10f, 0x112, 0x114, 0x117, 0x11a, 0x11e, 0x124, 0x12b, 0x134, 0x136, 0x139, 0x13b, 0x146, 0x14a, 0x158, 0x15b, 0x161, 0x167, 0x172, 0x176, 0x178, 0x17a, 0x17c, 0x17e, 0x180, 0x186, 0x18a, 0x18c, 0x18e, 0x196, 0x19a, 0x19d, 0x19f, 0x1a1, 0x1a4, 0x1a7, 0x1a9, 0x1ab, 0x1ad, 0x1af, 0x1b5, 0x1b8, 0x1ba, 0x1c1, 0x1c7, 0x1cd, 0x1d5, 0x1db, 0x1e1, 0x1e7, 0x1eb, 0x1f9, 0x202, 0x205, 0x208, 0x20a, 0x20d, 0x20f, 0x213, 0x218, 0x21a, 0x21c, 0x221, 0x227, 0x229, 0x22b, 0x22d, 0x233, 0x236, 0x238, 0x23a, 0x23c, 0x242, 0x246, 0x24a, 0x252, 0x259, 0x25c, 0x25f, 0x261, 0x264, 0x26c, 0x270, 0x277, 0x27a, 0x280, 0x282, 0x285, 0x287, 0x28a, 0x28f, 0x291, 0x293, 0x295, 0x297, 0x299, 0x29c, 0x29e, 0x2a0, 0x2a2, 0x2a4, 0x2a6, 0x2a8, 0x2b5, 0x2bf, 0x2c1, 0x2c3, 0x2c9, 0x2cb, 0x2cd, 0x2cf, 0x2d3, 0x2d5, 0x2d8}\n\n// nfcSparseValues: 730 entries, 2920 bytes\nvar nfcSparseValues = [730]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0xa100, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8100, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb8, hi: 0xb8},\n\t// Block 0x1, offset 0x5\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x4813, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4845, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t// Block 0x3, offset 0xb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x98, hi: 0x9d},\n\t// Block 0x4, offset 0xd\n\t{value: 0x0006, lo: 0x0a},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x85, hi: 0x85},\n\t{value: 0xa000, lo: 0x89, hi: 0x89},\n\t{value: 0x4971, lo: 0x8a, hi: 0x8a},\n\t{value: 0x498f, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3626, lo: 0x8c, hi: 0x8c},\n\t{value: 0x363e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x49a7, lo: 0x8e, hi: 0x8e},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x365c, lo: 0x93, hi: 0x94},\n\t// Block 0x5, offset 0x18\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x3704, lo: 0x90, hi: 0x90},\n\t{value: 0x3710, lo: 0x91, hi: 0x91},\n\t{value: 0x36fe, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3776, lo: 0x97, hi: 0x97},\n\t{value: 0x3740, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3728, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3752, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x377c, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3782, lo: 0xb7, hi: 0xb7},\n\t// Block 0x6, offset 0x28\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x83, hi: 0x87},\n\t// Block 0x7, offset 0x2a\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8114, lo: 0x81, hi: 0x82},\n\t{value: 0x8133, lo: 0x84, hi: 0x84},\n\t{value: 0x812e, lo: 0x85, hi: 0x85},\n\t{value: 0x810e, lo: 0x87, hi: 0x87},\n\t// Block 0x8, offset 0x2f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x97},\n\t{value: 0x811a, lo: 0x98, hi: 0x98},\n\t{value: 0x811b, lo: 0x99, hi: 0x99},\n\t{value: 0x811c, lo: 0x9a, hi: 0x9a},\n\t{value: 0x37a0, lo: 0xa2, hi: 0xa2},\n\t{value: 0x37a6, lo: 0xa3, hi: 0xa3},\n\t{value: 0x37b2, lo: 0xa4, hi: 0xa4},\n\t{value: 0x37ac, lo: 0xa5, hi: 0xa5},\n\t{value: 0x37b8, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x9, offset 0x3a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x37ca, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x37be, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x37c4, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8133, lo: 0x96, hi: 0x9c},\n\t{value: 0x8133, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812e, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812e, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t// Block 0xa, offset 0x49\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x8120, lo: 0x91, hi: 0x91},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812e, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8133, lo: 0xba, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8133, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8133, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb, offset 0x56\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8133, lo: 0x80, hi: 0x80},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x812e, lo: 0x82, hi: 0x83},\n\t{value: 0x812e, lo: 0x84, hi: 0x85},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x812e, lo: 0x88, hi: 0x89},\n\t{value: 0x8133, lo: 0x8a, hi: 0x8a},\n\t// Block 0xc, offset 0x5e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0xab, hi: 0xb1},\n\t{value: 0x812e, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8133, lo: 0xb3, hi: 0xb3},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0xd, offset 0x63\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0x96, hi: 0x99},\n\t{value: 0x8133, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8133, lo: 0xa9, hi: 0xad},\n\t// Block 0xe, offset 0x68\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x99, hi: 0x9b},\n\t// Block 0xf, offset 0x6a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8133, lo: 0x98, hi: 0x98},\n\t{value: 0x812e, lo: 0x99, hi: 0x9b},\n\t{value: 0x8133, lo: 0x9c, hi: 0x9f},\n\t// Block 0x10, offset 0x6e\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3e37, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3e3f, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3e47, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9903, lo: 0xbc, hi: 0xbc},\n\t// Block 0x11, offset 0x76\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x91, hi: 0x91},\n\t{value: 0x812e, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x93, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x94},\n\t{value: 0x45d5, lo: 0x98, hi: 0x9f},\n\t// Block 0x12, offset 0x7d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x13, offset 0x80\n\t{value: 0x0008, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x3e4f, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x4615, lo: 0x9c, hi: 0x9d},\n\t{value: 0x4625, lo: 0x9f, hi: 0x9f},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbe},\n\t// Block 0x14, offset 0x88\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x464d, lo: 0xb3, hi: 0xb3},\n\t{value: 0x4655, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x15, offset 0x8c\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x462d, lo: 0x99, hi: 0x9b},\n\t{value: 0x4645, lo: 0x9e, hi: 0x9e},\n\t// Block 0x16, offset 0x90\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x17, offset 0x92\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t// Block 0x18, offset 0x94\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x3e67, lo: 0x88, hi: 0x88},\n\t{value: 0x3e5f, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3e6f, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x465d, lo: 0x9c, hi: 0x9c},\n\t{value: 0x4665, lo: 0x9d, hi: 0x9d},\n\t// Block 0x19, offset 0x9d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3e77, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1a, offset 0xa1\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x3e7f, lo: 0x8a, hi: 0x8a},\n\t{value: 0x3e8f, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3e87, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1b, offset 0xa8\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3e97, lo: 0x88, hi: 0x88},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8121, lo: 0x95, hi: 0x96},\n\t// Block 0x1c, offset 0xad\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1d, offset 0xb0\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3e9f, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ea7, lo: 0x87, hi: 0x87},\n\t{value: 0x3eaf, lo: 0x88, hi: 0x88},\n\t{value: 0x4adf, lo: 0x8a, hi: 0x8a},\n\t{value: 0x42f9, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1e, offset 0xba\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1f, offset 0xbd\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x3eb7, lo: 0x8a, hi: 0x8a},\n\t{value: 0x3ec7, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3ebf, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x20, offset 0xc4\n\t{value: 0x5a29, lo: 0x07},\n\t{value: 0x9905, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3ecf, lo: 0x9a, hi: 0x9a},\n\t{value: 0x4ae7, lo: 0x9c, hi: 0x9c},\n\t{value: 0x4304, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3ed7, lo: 0x9e, hi: 0x9f},\n\t// Block 0x21, offset 0xcc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8123, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x22, offset 0xcf\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8124, lo: 0x88, hi: 0x8b},\n\t// Block 0x23, offset 0xd1\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8125, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x24, offset 0xd4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8126, lo: 0x88, hi: 0x8b},\n\t// Block 0x25, offset 0xd6\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x812e, lo: 0x98, hi: 0x99},\n\t{value: 0x812e, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812c, lo: 0xb9, hi: 0xb9},\n\t// Block 0x26, offset 0xdb\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2774, lo: 0x83, hi: 0x83},\n\t{value: 0x277b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2782, lo: 0x92, hi: 0x92},\n\t{value: 0x2789, lo: 0x97, hi: 0x97},\n\t{value: 0x2790, lo: 0x9c, hi: 0x9c},\n\t{value: 0x276d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8127, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8128, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4bc5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8129, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4bce, lo: 0xb5, hi: 0xb5},\n\t{value: 0x466d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8200, lo: 0xb7, hi: 0xb7},\n\t{value: 0x4675, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8200, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8128, lo: 0xba, hi: 0xbd},\n\t// Block 0x27, offset 0xec\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8128, lo: 0x80, hi: 0x80},\n\t{value: 0x4bd7, lo: 0x81, hi: 0x81},\n\t{value: 0x8133, lo: 0x82, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0x86, hi: 0x87},\n\t{value: 0x279e, lo: 0x93, hi: 0x93},\n\t{value: 0x27a5, lo: 0x9d, hi: 0x9d},\n\t{value: 0x27ac, lo: 0xa2, hi: 0xa2},\n\t{value: 0x27b3, lo: 0xa7, hi: 0xa7},\n\t{value: 0x27ba, lo: 0xac, hi: 0xac},\n\t{value: 0x2797, lo: 0xb9, hi: 0xb9},\n\t// Block 0x28, offset 0xf8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x86, hi: 0x86},\n\t// Block 0x29, offset 0xfa\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3edf, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x2a, offset 0x100\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2b, offset 0x102\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2c, offset 0x104\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2d, offset 0x106\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2e, offset 0x108\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2f, offset 0x10a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9f},\n\t// Block 0x30, offset 0x10c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x94, hi: 0x95},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x31, offset 0x10f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9d},\n\t// Block 0x32, offset 0x112\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t// Block 0x33, offset 0x114\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812f, lo: 0xb9, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbb},\n\t// Block 0x34, offset 0x117\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x97, hi: 0x97},\n\t{value: 0x812e, lo: 0x98, hi: 0x98},\n\t// Block 0x35, offset 0x11a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8133, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x11e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812e, lo: 0xb5, hi: 0xba},\n\t{value: 0x8133, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x37, offset 0x124\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x812e, lo: 0x80, hi: 0x80},\n\t{value: 0x8133, lo: 0x81, hi: 0x82},\n\t{value: 0x812e, lo: 0x83, hi: 0x84},\n\t{value: 0x8133, lo: 0x85, hi: 0x89},\n\t{value: 0x812e, lo: 0x8a, hi: 0x8a},\n\t{value: 0x8133, lo: 0x8b, hi: 0x8e},\n\t// Block 0x38, offset 0x12b\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3f27, lo: 0x80, hi: 0x80},\n\t{value: 0x3f2f, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x3f37, lo: 0x83, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xab, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xac},\n\t{value: 0x8133, lo: 0xad, hi: 0xb3},\n\t// Block 0x39, offset 0x134\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xaa, hi: 0xab},\n\t// Block 0x3a, offset 0x136\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8105, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3b, offset 0x139\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3c, offset 0x13b\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812e, lo: 0x95, hi: 0x99},\n\t{value: 0x8133, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812e, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8133, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x8133, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3d, offset 0x146\n\t{value: 0x0004, lo: 0x03},\n\t{value: 0x052a, lo: 0x80, hi: 0x81},\n\t{value: 0x8100, lo: 0x97, hi: 0x97},\n\t{value: 0x8100, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3e, offset 0x14a\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8133, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8133, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8133, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812e, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8133, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t// Block 0x3f, offset 0x158\n\t{value: 0x4334, lo: 0x02},\n\t{value: 0x023c, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0057, lo: 0xaa, hi: 0xab},\n\t// Block 0x40, offset 0x15b\n\t{value: 0x0007, lo: 0x05},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3b18, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3b26, lo: 0xae, hi: 0xae},\n\t// Block 0x41, offset 0x161\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3b2d, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3b34, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x42, offset 0x167\n\t{value: 0x64a9, lo: 0x0a},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3b42, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3b49, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3b50, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3b57, lo: 0xa4, hi: 0xa5},\n\t{value: 0x3b5e, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x43, offset 0x172\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3bc7, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3bf1, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3c1b, lo: 0xaa, hi: 0xad},\n\t// Block 0x44, offset 0x176\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x0586, lo: 0xa9, hi: 0xaa},\n\t// Block 0x45, offset 0x178\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x4596, lo: 0x9c, hi: 0x9c},\n\t// Block 0x46, offset 0x17a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xaf, hi: 0xb1},\n\t// Block 0x47, offset 0x17c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x48, offset 0x17e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa0, hi: 0xbf},\n\t// Block 0x49, offset 0x180\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x8134, lo: 0xac, hi: 0xac},\n\t{value: 0x812f, lo: 0xad, hi: 0xad},\n\t{value: 0x8130, lo: 0xae, hi: 0xaf},\n\t// Block 0x4a, offset 0x186\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4be0, lo: 0xb3, hi: 0xb3},\n\t{value: 0x4be0, lo: 0xb5, hi: 0xb6},\n\t{value: 0x4be0, lo: 0xba, hi: 0xbf},\n\t// Block 0x4b, offset 0x18a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x4be0, lo: 0x8f, hi: 0xa3},\n\t// Block 0x4c, offset 0x18c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xae, hi: 0xbe},\n\t// Block 0x4d, offset 0x18e\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x8100, lo: 0x84, hi: 0x84},\n\t{value: 0x8100, lo: 0x87, hi: 0x87},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t{value: 0x8100, lo: 0x9e, hi: 0x9e},\n\t{value: 0x8100, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8100, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8100, lo: 0xbb, hi: 0xbb},\n\t// Block 0x4e, offset 0x196\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8100, lo: 0x80, hi: 0x80},\n\t{value: 0x8100, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8100, lo: 0x8e, hi: 0x8e},\n\t// Block 0x4f, offset 0x19a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb4, hi: 0xbd},\n\t// Block 0x50, offset 0x19d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9f},\n\t// Block 0x51, offset 0x19f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb1},\n\t// Block 0x52, offset 0x1a1\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xac, hi: 0xac},\n\t// Block 0x53, offset 0x1a4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xa0, hi: 0xb1},\n\t// Block 0x54, offset 0x1a7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xab, hi: 0xad},\n\t// Block 0x55, offset 0x1a9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x93, hi: 0x93},\n\t// Block 0x56, offset 0x1ab\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb3, hi: 0xb3},\n\t// Block 0x57, offset 0x1ad\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t// Block 0x58, offset 0x1af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbf},\n\t// Block 0x59, offset 0x1b5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t// Block 0x5a, offset 0x1b8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xad, hi: 0xad},\n\t// Block 0x5b, offset 0x1ba\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x5c, offset 0x1c1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x5d, offset 0x1c7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x5e, offset 0x1cd\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x5f, offset 0x1d5\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x60, offset 0x1db\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x61, offset 0x1e1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x62, offset 0x1e7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x63, offset 0x1eb\n\t{value: 0x0006, lo: 0x0d},\n\t{value: 0x4449, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8116, lo: 0x9e, hi: 0x9e},\n\t{value: 0x44bb, lo: 0x9f, hi: 0x9f},\n\t{value: 0x44a9, lo: 0xaa, hi: 0xab},\n\t{value: 0x45ad, lo: 0xac, hi: 0xac},\n\t{value: 0x45b5, lo: 0xad, hi: 0xad},\n\t{value: 0x4401, lo: 0xae, hi: 0xb1},\n\t{value: 0x441f, lo: 0xb2, hi: 0xb4},\n\t{value: 0x4437, lo: 0xb5, hi: 0xb6},\n\t{value: 0x4443, lo: 0xb8, hi: 0xb8},\n\t{value: 0x444f, lo: 0xb9, hi: 0xbb},\n\t{value: 0x4467, lo: 0xbc, hi: 0xbc},\n\t{value: 0x446d, lo: 0xbe, hi: 0xbe},\n\t// Block 0x64, offset 0x1f9\n\t{value: 0x0006, lo: 0x08},\n\t{value: 0x4473, lo: 0x80, hi: 0x81},\n\t{value: 0x447f, lo: 0x83, hi: 0x84},\n\t{value: 0x4491, lo: 0x86, hi: 0x89},\n\t{value: 0x44b5, lo: 0x8a, hi: 0x8a},\n\t{value: 0x4431, lo: 0x8b, hi: 0x8b},\n\t{value: 0x4419, lo: 0x8c, hi: 0x8c},\n\t{value: 0x4461, lo: 0x8d, hi: 0x8d},\n\t{value: 0x448b, lo: 0x8e, hi: 0x8e},\n\t// Block 0x65, offset 0x202\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0xa4, hi: 0xa5},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb1},\n\t// Block 0x66, offset 0x205\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x9b, hi: 0x9d},\n\t{value: 0x8200, lo: 0x9e, hi: 0xa3},\n\t// Block 0x67, offset 0x208\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t// Block 0x68, offset 0x20a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x99, hi: 0x99},\n\t{value: 0x8200, lo: 0xb2, hi: 0xb4},\n\t// Block 0x69, offset 0x20d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xbc, hi: 0xbd},\n\t// Block 0x6a, offset 0x20f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8133, lo: 0xa0, hi: 0xa6},\n\t{value: 0x812e, lo: 0xa7, hi: 0xad},\n\t{value: 0x8133, lo: 0xae, hi: 0xaf},\n\t// Block 0x6b, offset 0x213\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8100, lo: 0x89, hi: 0x8c},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb2},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb6, hi: 0xbf},\n\t// Block 0x6c, offset 0x218\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x81, hi: 0x8c},\n\t// Block 0x6d, offset 0x21a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xb5, hi: 0xba},\n\t// Block 0x6e, offset 0x21c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x4be0, lo: 0x9e, hi: 0x9f},\n\t{value: 0x4be0, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4be0, lo: 0xa5, hi: 0xa6},\n\t{value: 0x4be0, lo: 0xaa, hi: 0xaf},\n\t// Block 0x6f, offset 0x221\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x4be0, lo: 0x82, hi: 0x87},\n\t{value: 0x4be0, lo: 0x8a, hi: 0x8f},\n\t{value: 0x4be0, lo: 0x92, hi: 0x97},\n\t{value: 0x4be0, lo: 0x9a, hi: 0x9c},\n\t{value: 0x8100, lo: 0xa3, hi: 0xa3},\n\t// Block 0x70, offset 0x227\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0x71, offset 0x229\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xa0, hi: 0xa0},\n\t// Block 0x72, offset 0x22b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb6, hi: 0xba},\n\t// Block 0x73, offset 0x22d\n\t{value: 0x002d, lo: 0x05},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x74, offset 0x233\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812e, lo: 0xa6, hi: 0xa6},\n\t// Block 0x75, offset 0x236\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa7},\n\t// Block 0x76, offset 0x238\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t// Block 0x77, offset 0x23a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbf},\n\t// Block 0x78, offset 0x23c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x8133, lo: 0x88, hi: 0x8a},\n\t{value: 0x812e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8133, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812e, lo: 0x8d, hi: 0x90},\n\t// Block 0x79, offset 0x242\n\t{value: 0x0005, lo: 0x03},\n\t{value: 0x8133, lo: 0x82, hi: 0x82},\n\t{value: 0x812e, lo: 0x83, hi: 0x84},\n\t{value: 0x812e, lo: 0x85, hi: 0x85},\n\t// Block 0x7a, offset 0x246\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7b, offset 0x24a\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4277, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4281, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x428b, lo: 0xab, hi: 0xab},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x7c, offset 0x252\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8133, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x4295, lo: 0xae, hi: 0xae},\n\t{value: 0x429f, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8105, lo: 0xb3, hi: 0xb4},\n\t// Block 0x7d, offset 0x259\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0x7e, offset 0x25c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8103, lo: 0xb6, hi: 0xb6},\n\t// Block 0x7f, offset 0x25f\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8103, lo: 0xa9, hi: 0xaa},\n\t// Block 0x80, offset 0x261\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x81, offset 0x264\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x42a9, lo: 0x8b, hi: 0x8b},\n\t{value: 0x42b3, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8133, lo: 0xa6, hi: 0xac},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t// Block 0x82, offset 0x26c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x86, hi: 0x86},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9e},\n\t// Block 0x83, offset 0x270\n\t{value: 0x5643, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x42c7, lo: 0xbb, hi: 0xbb},\n\t{value: 0x42bd, lo: 0xbc, hi: 0xbd},\n\t{value: 0x42d1, lo: 0xbe, hi: 0xbe},\n\t// Block 0x84, offset 0x277\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x85, offset 0x27a\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x42db, lo: 0xba, hi: 0xba},\n\t{value: 0x42e5, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x86, offset 0x280\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x80, hi: 0x80},\n\t// Block 0x87, offset 0x282\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x88, offset 0x285\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xab, hi: 0xab},\n\t// Block 0x89, offset 0x287\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8103, lo: 0xba, hi: 0xba},\n\t// Block 0x8a, offset 0x28a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb5, hi: 0xb5},\n\t{value: 0x42ef, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8105, lo: 0xbd, hi: 0xbe},\n\t// Block 0x8b, offset 0x28f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x8c, offset 0x291\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t// Block 0x8d, offset 0x293\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x8e, offset 0x295\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x87, hi: 0x87},\n\t// Block 0x8f, offset 0x297\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x99, hi: 0x99},\n\t// Block 0x90, offset 0x299\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0x82, hi: 0x82},\n\t{value: 0x8105, lo: 0x84, hi: 0x85},\n\t// Block 0x91, offset 0x29c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x97, hi: 0x97},\n\t// Block 0x92, offset 0x29e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x81, hi: 0x82},\n\t// Block 0x93, offset 0x2a0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x94, offset 0x2a2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb6},\n\t// Block 0x95, offset 0x2a4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb0, hi: 0xb1},\n\t// Block 0x96, offset 0x2a6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x97, offset 0x2a8\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x46fd, lo: 0x9e, hi: 0x9e},\n\t{value: 0x4707, lo: 0x9f, hi: 0x9f},\n\t{value: 0x473b, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4749, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4757, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4765, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4773, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812c, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8131, lo: 0xad, hi: 0xad},\n\t{value: 0x812c, lo: 0xae, hi: 0xb2},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbf},\n\t// Block 0x98, offset 0x2b5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812e, lo: 0x80, hi: 0x82},\n\t{value: 0x8133, lo: 0x85, hi: 0x89},\n\t{value: 0x812e, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8133, lo: 0xaa, hi: 0xad},\n\t{value: 0x4711, lo: 0xbb, hi: 0xbb},\n\t{value: 0x471b, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4781, lo: 0xbd, hi: 0xbd},\n\t{value: 0x479d, lo: 0xbe, hi: 0xbe},\n\t{value: 0x478f, lo: 0xbf, hi: 0xbf},\n\t// Block 0x99, offset 0x2bf\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x47ab, lo: 0x80, hi: 0x80},\n\t// Block 0x9a, offset 0x2c1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x82, hi: 0x84},\n\t// Block 0x9b, offset 0x2c3\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0x80, hi: 0x86},\n\t{value: 0x8133, lo: 0x88, hi: 0x98},\n\t{value: 0x8133, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8133, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8133, lo: 0xa6, hi: 0xaa},\n\t// Block 0x9c, offset 0x2c9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x8f, hi: 0x8f},\n\t// Block 0x9d, offset 0x2cb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xae, hi: 0xae},\n\t// Block 0x9e, offset 0x2cd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xac, hi: 0xaf},\n\t// Block 0x9f, offset 0x2cf\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8134, lo: 0xac, hi: 0xad},\n\t{value: 0x812e, lo: 0xae, hi: 0xae},\n\t{value: 0x8133, lo: 0xaf, hi: 0xaf},\n\t// Block 0xa0, offset 0x2d3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x90, hi: 0x96},\n\t// Block 0xa1, offset 0x2d5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x84, hi: 0x89},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0xa2, offset 0x2d8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x93, hi: 0x93},\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfkcTrie. Total size: 19260 bytes (18.81 KiB). Checksum: 4d294206c9ae0ba8.\ntype nfkcTrie struct{}\n\nfunc newNfkcTrie(i int) *nfkcTrie {\n\treturn &nfkcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 95:\n\t\treturn uint16(nfkcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 95\n\t\treturn uint16(nfkcSparse.lookup(n, b))\n\t}\n}\n\n// nfkcValues: 97 blocks, 6208 entries, 12416 bytes\n// The third block is the zero block.\nvar nfkcValues = [6208]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2ece, 0xc1: 0x2ed3, 0xc2: 0x47b9, 0xc3: 0x2ed8, 0xc4: 0x47c8, 0xc5: 0x47cd,\n\t0xc6: 0xa000, 0xc7: 0x47d7, 0xc8: 0x2f41, 0xc9: 0x2f46, 0xca: 0x47dc, 0xcb: 0x2f5a,\n\t0xcc: 0x2fcd, 0xcd: 0x2fd2, 0xce: 0x2fd7, 0xcf: 0x47f0, 0xd1: 0x3063,\n\t0xd2: 0x3086, 0xd3: 0x308b, 0xd4: 0x47fa, 0xd5: 0x47ff, 0xd6: 0x480e,\n\t0xd8: 0xa000, 0xd9: 0x3112, 0xda: 0x3117, 0xdb: 0x311c, 0xdc: 0x4840, 0xdd: 0x3194,\n\t0xe0: 0x31da, 0xe1: 0x31df, 0xe2: 0x484a, 0xe3: 0x31e4,\n\t0xe4: 0x4859, 0xe5: 0x485e, 0xe6: 0xa000, 0xe7: 0x4868, 0xe8: 0x324d, 0xe9: 0x3252,\n\t0xea: 0x486d, 0xeb: 0x3266, 0xec: 0x32de, 0xed: 0x32e3, 0xee: 0x32e8, 0xef: 0x4881,\n\t0xf1: 0x3374, 0xf2: 0x3397, 0xf3: 0x339c, 0xf4: 0x488b, 0xf5: 0x4890,\n\t0xf6: 0x489f, 0xf8: 0xa000, 0xf9: 0x3428, 0xfa: 0x342d, 0xfb: 0x3432,\n\t0xfc: 0x48d1, 0xfd: 0x34af, 0xff: 0x34c8,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2edd, 0x101: 0x31e9, 0x102: 0x47be, 0x103: 0x484f, 0x104: 0x2efb, 0x105: 0x3207,\n\t0x106: 0x2f0f, 0x107: 0x321b, 0x108: 0x2f14, 0x109: 0x3220, 0x10a: 0x2f19, 0x10b: 0x3225,\n\t0x10c: 0x2f1e, 0x10d: 0x322a, 0x10e: 0x2f28, 0x10f: 0x3234,\n\t0x112: 0x47e1, 0x113: 0x4872, 0x114: 0x2f50, 0x115: 0x325c, 0x116: 0x2f55, 0x117: 0x3261,\n\t0x118: 0x2f73, 0x119: 0x327f, 0x11a: 0x2f64, 0x11b: 0x3270, 0x11c: 0x2f8c, 0x11d: 0x3298,\n\t0x11e: 0x2f96, 0x11f: 0x32a2, 0x120: 0x2f9b, 0x121: 0x32a7, 0x122: 0x2fa5, 0x123: 0x32b1,\n\t0x124: 0x2faa, 0x125: 0x32b6, 0x128: 0x2fdc, 0x129: 0x32ed,\n\t0x12a: 0x2fe1, 0x12b: 0x32f2, 0x12c: 0x2fe6, 0x12d: 0x32f7, 0x12e: 0x3009, 0x12f: 0x3315,\n\t0x130: 0x2feb, 0x132: 0x1a8a, 0x133: 0x1b17, 0x134: 0x3013, 0x135: 0x331f,\n\t0x136: 0x3027, 0x137: 0x3338, 0x139: 0x3031, 0x13a: 0x3342, 0x13b: 0x303b,\n\t0x13c: 0x334c, 0x13d: 0x3036, 0x13e: 0x3347, 0x13f: 0x1cdc,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x1d64, 0x143: 0x305e, 0x144: 0x336f, 0x145: 0x3077,\n\t0x146: 0x3388, 0x147: 0x306d, 0x148: 0x337e, 0x149: 0x1d8c,\n\t0x14c: 0x4804, 0x14d: 0x4895, 0x14e: 0x3090, 0x14f: 0x33a1, 0x150: 0x309a, 0x151: 0x33ab,\n\t0x154: 0x30b8, 0x155: 0x33c9, 0x156: 0x30d1, 0x157: 0x33e2,\n\t0x158: 0x30c2, 0x159: 0x33d3, 0x15a: 0x4827, 0x15b: 0x48b8, 0x15c: 0x30db, 0x15d: 0x33ec,\n\t0x15e: 0x30ea, 0x15f: 0x33fb, 0x160: 0x482c, 0x161: 0x48bd, 0x162: 0x3103, 0x163: 0x3419,\n\t0x164: 0x30f4, 0x165: 0x340a, 0x168: 0x4836, 0x169: 0x48c7,\n\t0x16a: 0x483b, 0x16b: 0x48cc, 0x16c: 0x3121, 0x16d: 0x3437, 0x16e: 0x312b, 0x16f: 0x3441,\n\t0x170: 0x3130, 0x171: 0x3446, 0x172: 0x314e, 0x173: 0x3464, 0x174: 0x3171, 0x175: 0x3487,\n\t0x176: 0x3199, 0x177: 0x34b4, 0x178: 0x31ad, 0x179: 0x31bc, 0x17a: 0x34dc, 0x17b: 0x31c6,\n\t0x17c: 0x34e6, 0x17d: 0x31cb, 0x17e: 0x34eb, 0x17f: 0x00a7,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x2dd5, 0x185: 0x2ddb,\n\t0x186: 0x2de1, 0x187: 0x1a9f, 0x188: 0x1aa2, 0x189: 0x1b38, 0x18a: 0x1ab7, 0x18b: 0x1aba,\n\t0x18c: 0x1b6e, 0x18d: 0x2ee7, 0x18e: 0x31f3, 0x18f: 0x2ff5, 0x190: 0x3301, 0x191: 0x309f,\n\t0x192: 0x33b0, 0x193: 0x3135, 0x194: 0x344b, 0x195: 0x392e, 0x196: 0x3abd, 0x197: 0x3927,\n\t0x198: 0x3ab6, 0x199: 0x3935, 0x19a: 0x3ac4, 0x19b: 0x3920, 0x19c: 0x3aaf,\n\t0x19e: 0x380f, 0x19f: 0x399e, 0x1a0: 0x3808, 0x1a1: 0x3997, 0x1a2: 0x3512, 0x1a3: 0x3524,\n\t0x1a6: 0x2fa0, 0x1a7: 0x32ac, 0x1a8: 0x301d, 0x1a9: 0x332e,\n\t0x1aa: 0x481d, 0x1ab: 0x48ae, 0x1ac: 0x38ef, 0x1ad: 0x3a7e, 0x1ae: 0x3536, 0x1af: 0x353c,\n\t0x1b0: 0x3324, 0x1b1: 0x1a6f, 0x1b2: 0x1a72, 0x1b3: 0x1aff, 0x1b4: 0x2f87, 0x1b5: 0x3293,\n\t0x1b8: 0x3059, 0x1b9: 0x336a, 0x1ba: 0x3816, 0x1bb: 0x39a5,\n\t0x1bc: 0x350c, 0x1bd: 0x351e, 0x1be: 0x3518, 0x1bf: 0x352a,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2eec, 0x1c1: 0x31f8, 0x1c2: 0x2ef1, 0x1c3: 0x31fd, 0x1c4: 0x2f69, 0x1c5: 0x3275,\n\t0x1c6: 0x2f6e, 0x1c7: 0x327a, 0x1c8: 0x2ffa, 0x1c9: 0x3306, 0x1ca: 0x2fff, 0x1cb: 0x330b,\n\t0x1cc: 0x30a4, 0x1cd: 0x33b5, 0x1ce: 0x30a9, 0x1cf: 0x33ba, 0x1d0: 0x30c7, 0x1d1: 0x33d8,\n\t0x1d2: 0x30cc, 0x1d3: 0x33dd, 0x1d4: 0x313a, 0x1d5: 0x3450, 0x1d6: 0x313f, 0x1d7: 0x3455,\n\t0x1d8: 0x30e5, 0x1d9: 0x33f6, 0x1da: 0x30fe, 0x1db: 0x3414,\n\t0x1de: 0x2fb9, 0x1df: 0x32c5,\n\t0x1e6: 0x47c3, 0x1e7: 0x4854, 0x1e8: 0x47eb, 0x1e9: 0x487c,\n\t0x1ea: 0x38be, 0x1eb: 0x3a4d, 0x1ec: 0x389b, 0x1ed: 0x3a2a, 0x1ee: 0x4809, 0x1ef: 0x489a,\n\t0x1f0: 0x38b7, 0x1f1: 0x3a46, 0x1f2: 0x31a3, 0x1f3: 0x34be,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133,\n\t0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933,\n\t0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933,\n\t0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e,\n\t0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e,\n\t0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e,\n\t0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e,\n\t0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e,\n\t0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e,\n\t0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x4aef, 0x241: 0x4af4, 0x242: 0x9933, 0x243: 0x4af9, 0x244: 0x4bb2, 0x245: 0x9937,\n\t0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133,\n\t0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133,\n\t0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133,\n\t0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136,\n\t0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133,\n\t0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133,\n\t0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133,\n\t0x274: 0x01ee,\n\t0x27a: 0x435e,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x4313, 0x285: 0x4534,\n\t0x286: 0x3548, 0x287: 0x00ce, 0x288: 0x3566, 0x289: 0x3572, 0x28a: 0x3584,\n\t0x28c: 0x35a2, 0x28e: 0x35b4, 0x28f: 0x35d2, 0x290: 0x3d67, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3596, 0x2ab: 0x35c6, 0x2ac: 0x492f, 0x2ad: 0x35f6, 0x2ae: 0x4959, 0x2af: 0x3608,\n\t0x2b0: 0x3dcf, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c1: 0xa000, 0x2c5: 0xa000,\n\t0x2c9: 0xa000, 0x2ca: 0x4971, 0x2cb: 0x498f,\n\t0x2cc: 0x3626, 0x2cd: 0x363e, 0x2ce: 0x49a7, 0x2d0: 0x0242, 0x2d1: 0x0254,\n\t0x2d2: 0x0230, 0x2d3: 0x43c5, 0x2d4: 0x43cb, 0x2d5: 0x027e, 0x2d6: 0x026c,\n\t0x2f0: 0x025a, 0x2f1: 0x026f, 0x2f2: 0x0272, 0x2f4: 0x020c, 0x2f5: 0x024b,\n\t0x2f9: 0x022a,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x3680, 0x301: 0x368c, 0x303: 0x367a,\n\t0x306: 0xa000, 0x307: 0x3668,\n\t0x30c: 0x36bc, 0x30d: 0x36a4, 0x30e: 0x36ce, 0x310: 0xa000,\n\t0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000,\n\t0x318: 0xa000, 0x319: 0x36b0, 0x31a: 0xa000,\n\t0x31e: 0xa000, 0x323: 0xa000,\n\t0x327: 0xa000,\n\t0x32b: 0xa000, 0x32d: 0xa000,\n\t0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000,\n\t0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x3734, 0x33a: 0xa000,\n\t0x33e: 0xa000,\n\t// Block 0xd, offset 0x340\n\t0x341: 0x3692, 0x342: 0x3716,\n\t0x350: 0x366e, 0x351: 0x36f2,\n\t0x352: 0x3674, 0x353: 0x36f8, 0x356: 0x3686, 0x357: 0x370a,\n\t0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3788, 0x35b: 0x378e, 0x35c: 0x3698, 0x35d: 0x371c,\n\t0x35e: 0x369e, 0x35f: 0x3722, 0x362: 0x36aa, 0x363: 0x372e,\n\t0x364: 0x36b6, 0x365: 0x373a, 0x366: 0x36c2, 0x367: 0x3746, 0x368: 0xa000, 0x369: 0xa000,\n\t0x36a: 0x3794, 0x36b: 0x379a, 0x36c: 0x36ec, 0x36d: 0x3770, 0x36e: 0x36c8, 0x36f: 0x374c,\n\t0x370: 0x36d4, 0x371: 0x3758, 0x372: 0x36da, 0x373: 0x375e, 0x374: 0x36e0, 0x375: 0x3764,\n\t0x378: 0x36e6, 0x379: 0x376a,\n\t// Block 0xe, offset 0x380\n\t0x387: 0x1e91,\n\t0x391: 0x812e,\n\t0x392: 0x8133, 0x393: 0x8133, 0x394: 0x8133, 0x395: 0x8133, 0x396: 0x812e, 0x397: 0x8133,\n\t0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x812f, 0x39b: 0x812e, 0x39c: 0x8133, 0x39d: 0x8133,\n\t0x39e: 0x8133, 0x39f: 0x8133, 0x3a0: 0x8133, 0x3a1: 0x8133, 0x3a2: 0x812e, 0x3a3: 0x812e,\n\t0x3a4: 0x812e, 0x3a5: 0x812e, 0x3a6: 0x812e, 0x3a7: 0x812e, 0x3a8: 0x8133, 0x3a9: 0x8133,\n\t0x3aa: 0x812e, 0x3ab: 0x8133, 0x3ac: 0x8133, 0x3ad: 0x812f, 0x3ae: 0x8132, 0x3af: 0x8133,\n\t0x3b0: 0x8106, 0x3b1: 0x8107, 0x3b2: 0x8108, 0x3b3: 0x8109, 0x3b4: 0x810a, 0x3b5: 0x810b,\n\t0x3b6: 0x810c, 0x3b7: 0x810d, 0x3b8: 0x810e, 0x3b9: 0x810f, 0x3ba: 0x810f, 0x3bb: 0x8110,\n\t0x3bc: 0x8111, 0x3bd: 0x8112, 0x3bf: 0x8113,\n\t// Block 0xf, offset 0x3c0\n\t0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8117,\n\t0x3cc: 0x8118, 0x3cd: 0x8119, 0x3ce: 0x811a, 0x3cf: 0x811b, 0x3d0: 0x811c, 0x3d1: 0x811d,\n\t0x3d2: 0x811e, 0x3d3: 0x9933, 0x3d4: 0x9933, 0x3d5: 0x992e, 0x3d6: 0x812e, 0x3d7: 0x8133,\n\t0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x812e, 0x3dd: 0x8133,\n\t0x3de: 0x8133, 0x3df: 0x812e,\n\t0x3f0: 0x811f, 0x3f5: 0x1eb4,\n\t0x3f6: 0x2143, 0x3f7: 0x217f, 0x3f8: 0x217a,\n\t// Block 0x10, offset 0x400\n\t0x40a: 0x8133, 0x40b: 0x8133,\n\t0x40c: 0x8133, 0x40d: 0x8133, 0x40e: 0x8133, 0x40f: 0x812e, 0x410: 0x812e, 0x411: 0x812e,\n\t0x412: 0x812e, 0x413: 0x812e, 0x414: 0x8133, 0x415: 0x8133, 0x416: 0x8133, 0x417: 0x8133,\n\t0x418: 0x8133, 0x419: 0x8133, 0x41a: 0x8133, 0x41b: 0x8133, 0x41c: 0x8133, 0x41d: 0x8133,\n\t0x41e: 0x8133, 0x41f: 0x8133, 0x420: 0x8133, 0x421: 0x8133, 0x423: 0x812e,\n\t0x424: 0x8133, 0x425: 0x8133, 0x426: 0x812e, 0x427: 0x8133, 0x428: 0x8133, 0x429: 0x812e,\n\t0x42a: 0x8133, 0x42b: 0x8133, 0x42c: 0x8133, 0x42d: 0x812e, 0x42e: 0x812e, 0x42f: 0x812e,\n\t0x430: 0x8117, 0x431: 0x8118, 0x432: 0x8119, 0x433: 0x8133, 0x434: 0x8133, 0x435: 0x8133,\n\t0x436: 0x812e, 0x437: 0x8133, 0x438: 0x8133, 0x439: 0x812e, 0x43a: 0x812e, 0x43b: 0x8133,\n\t0x43c: 0x8133, 0x43d: 0x8133, 0x43e: 0x8133, 0x43f: 0x8133,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xa000,\n\t0x446: 0x3ee7, 0x447: 0xa000, 0x448: 0x3eef, 0x449: 0xa000, 0x44a: 0x3ef7, 0x44b: 0xa000,\n\t0x44c: 0x3eff, 0x44d: 0xa000, 0x44e: 0x3f07, 0x451: 0xa000,\n\t0x452: 0x3f0f,\n\t0x474: 0x8103, 0x475: 0x9900,\n\t0x47a: 0xa000, 0x47b: 0x3f17,\n\t0x47c: 0xa000, 0x47d: 0x3f1f, 0x47e: 0xa000, 0x47f: 0xa000,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0069, 0x481: 0x006b, 0x482: 0x006f, 0x483: 0x0083, 0x484: 0x0104, 0x485: 0x0107,\n\t0x486: 0x0506, 0x487: 0x0085, 0x488: 0x0089, 0x489: 0x008b, 0x48a: 0x011f, 0x48b: 0x0122,\n\t0x48c: 0x0125, 0x48d: 0x008f, 0x48f: 0x0097, 0x490: 0x009b, 0x491: 0x00e6,\n\t0x492: 0x009f, 0x493: 0x0110, 0x494: 0x050a, 0x495: 0x050e, 0x496: 0x00a1, 0x497: 0x00a9,\n\t0x498: 0x00ab, 0x499: 0x0516, 0x49a: 0x015b, 0x49b: 0x00ad, 0x49c: 0x051a, 0x49d: 0x0242,\n\t0x49e: 0x0245, 0x49f: 0x0248, 0x4a0: 0x027e, 0x4a1: 0x0281, 0x4a2: 0x0093, 0x4a3: 0x00a5,\n\t0x4a4: 0x00ab, 0x4a5: 0x00ad, 0x4a6: 0x0242, 0x4a7: 0x0245, 0x4a8: 0x026f, 0x4a9: 0x027e,\n\t0x4aa: 0x0281,\n\t0x4b8: 0x02b4,\n\t// Block 0x13, offset 0x4c0\n\t0x4db: 0x010a, 0x4dc: 0x0087, 0x4dd: 0x0113,\n\t0x4de: 0x00d7, 0x4df: 0x0125, 0x4e0: 0x008d, 0x4e1: 0x012b, 0x4e2: 0x0131, 0x4e3: 0x013d,\n\t0x4e4: 0x0146, 0x4e5: 0x0149, 0x4e6: 0x014c, 0x4e7: 0x051e, 0x4e8: 0x01c7, 0x4e9: 0x0155,\n\t0x4ea: 0x0522, 0x4eb: 0x01ca, 0x4ec: 0x0161, 0x4ed: 0x015e, 0x4ee: 0x0164, 0x4ef: 0x0167,\n\t0x4f0: 0x016a, 0x4f1: 0x016d, 0x4f2: 0x0176, 0x4f3: 0x018e, 0x4f4: 0x0191, 0x4f5: 0x00f2,\n\t0x4f6: 0x019a, 0x4f7: 0x019d, 0x4f8: 0x0512, 0x4f9: 0x01a0, 0x4fa: 0x01a3, 0x4fb: 0x00b5,\n\t0x4fc: 0x01af, 0x4fd: 0x01b2, 0x4fe: 0x01b5, 0x4ff: 0x0254,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x8133, 0x501: 0x8133, 0x502: 0x812e, 0x503: 0x8133, 0x504: 0x8133, 0x505: 0x8133,\n\t0x506: 0x8133, 0x507: 0x8133, 0x508: 0x8133, 0x509: 0x8133, 0x50a: 0x812e, 0x50b: 0x8133,\n\t0x50c: 0x8133, 0x50d: 0x8136, 0x50e: 0x812b, 0x50f: 0x812e, 0x510: 0x812a, 0x511: 0x8133,\n\t0x512: 0x8133, 0x513: 0x8133, 0x514: 0x8133, 0x515: 0x8133, 0x516: 0x8133, 0x517: 0x8133,\n\t0x518: 0x8133, 0x519: 0x8133, 0x51a: 0x8133, 0x51b: 0x8133, 0x51c: 0x8133, 0x51d: 0x8133,\n\t0x51e: 0x8133, 0x51f: 0x8133, 0x520: 0x8133, 0x521: 0x8133, 0x522: 0x8133, 0x523: 0x8133,\n\t0x524: 0x8133, 0x525: 0x8133, 0x526: 0x8133, 0x527: 0x8133, 0x528: 0x8133, 0x529: 0x8133,\n\t0x52a: 0x8133, 0x52b: 0x8133, 0x52c: 0x8133, 0x52d: 0x8133, 0x52e: 0x8133, 0x52f: 0x8133,\n\t0x530: 0x8133, 0x531: 0x8133, 0x532: 0x8133, 0x533: 0x8133, 0x534: 0x8133, 0x535: 0x8133,\n\t0x536: 0x8134, 0x537: 0x8132, 0x538: 0x8132, 0x539: 0x812e, 0x53a: 0x812d, 0x53b: 0x8133,\n\t0x53c: 0x8135, 0x53d: 0x812e, 0x53e: 0x8133, 0x53f: 0x812e,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x2ef6, 0x541: 0x3202, 0x542: 0x2f00, 0x543: 0x320c, 0x544: 0x2f05, 0x545: 0x3211,\n\t0x546: 0x2f0a, 0x547: 0x3216, 0x548: 0x382b, 0x549: 0x39ba, 0x54a: 0x2f23, 0x54b: 0x322f,\n\t0x54c: 0x2f2d, 0x54d: 0x3239, 0x54e: 0x2f3c, 0x54f: 0x3248, 0x550: 0x2f32, 0x551: 0x323e,\n\t0x552: 0x2f37, 0x553: 0x3243, 0x554: 0x384e, 0x555: 0x39dd, 0x556: 0x3855, 0x557: 0x39e4,\n\t0x558: 0x2f78, 0x559: 0x3284, 0x55a: 0x2f7d, 0x55b: 0x3289, 0x55c: 0x3863, 0x55d: 0x39f2,\n\t0x55e: 0x2f82, 0x55f: 0x328e, 0x560: 0x2f91, 0x561: 0x329d, 0x562: 0x2faf, 0x563: 0x32bb,\n\t0x564: 0x2fbe, 0x565: 0x32ca, 0x566: 0x2fb4, 0x567: 0x32c0, 0x568: 0x2fc3, 0x569: 0x32cf,\n\t0x56a: 0x2fc8, 0x56b: 0x32d4, 0x56c: 0x300e, 0x56d: 0x331a, 0x56e: 0x386a, 0x56f: 0x39f9,\n\t0x570: 0x3018, 0x571: 0x3329, 0x572: 0x3022, 0x573: 0x3333, 0x574: 0x302c, 0x575: 0x333d,\n\t0x576: 0x47f5, 0x577: 0x4886, 0x578: 0x3871, 0x579: 0x3a00, 0x57a: 0x3045, 0x57b: 0x3356,\n\t0x57c: 0x3040, 0x57d: 0x3351, 0x57e: 0x304a, 0x57f: 0x335b,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x304f, 0x581: 0x3360, 0x582: 0x3054, 0x583: 0x3365, 0x584: 0x3068, 0x585: 0x3379,\n\t0x586: 0x3072, 0x587: 0x3383, 0x588: 0x3081, 0x589: 0x3392, 0x58a: 0x307c, 0x58b: 0x338d,\n\t0x58c: 0x3894, 0x58d: 0x3a23, 0x58e: 0x38a2, 0x58f: 0x3a31, 0x590: 0x38a9, 0x591: 0x3a38,\n\t0x592: 0x38b0, 0x593: 0x3a3f, 0x594: 0x30ae, 0x595: 0x33bf, 0x596: 0x30b3, 0x597: 0x33c4,\n\t0x598: 0x30bd, 0x599: 0x33ce, 0x59a: 0x4822, 0x59b: 0x48b3, 0x59c: 0x38f6, 0x59d: 0x3a85,\n\t0x59e: 0x30d6, 0x59f: 0x33e7, 0x5a0: 0x30e0, 0x5a1: 0x33f1, 0x5a2: 0x4831, 0x5a3: 0x48c2,\n\t0x5a4: 0x38fd, 0x5a5: 0x3a8c, 0x5a6: 0x3904, 0x5a7: 0x3a93, 0x5a8: 0x390b, 0x5a9: 0x3a9a,\n\t0x5aa: 0x30ef, 0x5ab: 0x3400, 0x5ac: 0x30f9, 0x5ad: 0x340f, 0x5ae: 0x310d, 0x5af: 0x3423,\n\t0x5b0: 0x3108, 0x5b1: 0x341e, 0x5b2: 0x3149, 0x5b3: 0x345f, 0x5b4: 0x3158, 0x5b5: 0x346e,\n\t0x5b6: 0x3153, 0x5b7: 0x3469, 0x5b8: 0x3912, 0x5b9: 0x3aa1, 0x5ba: 0x3919, 0x5bb: 0x3aa8,\n\t0x5bc: 0x315d, 0x5bd: 0x3473, 0x5be: 0x3162, 0x5bf: 0x3478,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x3167, 0x5c1: 0x347d, 0x5c2: 0x316c, 0x5c3: 0x3482, 0x5c4: 0x317b, 0x5c5: 0x3491,\n\t0x5c6: 0x3176, 0x5c7: 0x348c, 0x5c8: 0x3180, 0x5c9: 0x349b, 0x5ca: 0x3185, 0x5cb: 0x34a0,\n\t0x5cc: 0x318a, 0x5cd: 0x34a5, 0x5ce: 0x31a8, 0x5cf: 0x34c3, 0x5d0: 0x31c1, 0x5d1: 0x34e1,\n\t0x5d2: 0x31d0, 0x5d3: 0x34f0, 0x5d4: 0x31d5, 0x5d5: 0x34f5, 0x5d6: 0x32d9, 0x5d7: 0x3405,\n\t0x5d8: 0x3496, 0x5d9: 0x34d2, 0x5da: 0x1d10, 0x5db: 0x4390,\n\t0x5e0: 0x47d2, 0x5e1: 0x4863, 0x5e2: 0x2ee2, 0x5e3: 0x31ee,\n\t0x5e4: 0x37d7, 0x5e5: 0x3966, 0x5e6: 0x37d0, 0x5e7: 0x395f, 0x5e8: 0x37e5, 0x5e9: 0x3974,\n\t0x5ea: 0x37de, 0x5eb: 0x396d, 0x5ec: 0x381d, 0x5ed: 0x39ac, 0x5ee: 0x37f3, 0x5ef: 0x3982,\n\t0x5f0: 0x37ec, 0x5f1: 0x397b, 0x5f2: 0x3801, 0x5f3: 0x3990, 0x5f4: 0x37fa, 0x5f5: 0x3989,\n\t0x5f6: 0x3824, 0x5f7: 0x39b3, 0x5f8: 0x47e6, 0x5f9: 0x4877, 0x5fa: 0x2f5f, 0x5fb: 0x326b,\n\t0x5fc: 0x2f4b, 0x5fd: 0x3257, 0x5fe: 0x3839, 0x5ff: 0x39c8,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3832, 0x601: 0x39c1, 0x602: 0x3847, 0x603: 0x39d6, 0x604: 0x3840, 0x605: 0x39cf,\n\t0x606: 0x385c, 0x607: 0x39eb, 0x608: 0x2ff0, 0x609: 0x32fc, 0x60a: 0x3004, 0x60b: 0x3310,\n\t0x60c: 0x4818, 0x60d: 0x48a9, 0x60e: 0x3095, 0x60f: 0x33a6, 0x610: 0x387f, 0x611: 0x3a0e,\n\t0x612: 0x3878, 0x613: 0x3a07, 0x614: 0x388d, 0x615: 0x3a1c, 0x616: 0x3886, 0x617: 0x3a15,\n\t0x618: 0x38e8, 0x619: 0x3a77, 0x61a: 0x38cc, 0x61b: 0x3a5b, 0x61c: 0x38c5, 0x61d: 0x3a54,\n\t0x61e: 0x38da, 0x61f: 0x3a69, 0x620: 0x38d3, 0x621: 0x3a62, 0x622: 0x38e1, 0x623: 0x3a70,\n\t0x624: 0x3144, 0x625: 0x345a, 0x626: 0x3126, 0x627: 0x343c, 0x628: 0x3943, 0x629: 0x3ad2,\n\t0x62a: 0x393c, 0x62b: 0x3acb, 0x62c: 0x3951, 0x62d: 0x3ae0, 0x62e: 0x394a, 0x62f: 0x3ad9,\n\t0x630: 0x3958, 0x631: 0x3ae7, 0x632: 0x318f, 0x633: 0x34aa, 0x634: 0x31b7, 0x635: 0x34d7,\n\t0x636: 0x31b2, 0x637: 0x34cd, 0x638: 0x319e, 0x639: 0x34b9,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x4935, 0x641: 0x493b, 0x642: 0x4a4f, 0x643: 0x4a67, 0x644: 0x4a57, 0x645: 0x4a6f,\n\t0x646: 0x4a5f, 0x647: 0x4a77, 0x648: 0x48db, 0x649: 0x48e1, 0x64a: 0x49bf, 0x64b: 0x49d7,\n\t0x64c: 0x49c7, 0x64d: 0x49df, 0x64e: 0x49cf, 0x64f: 0x49e7, 0x650: 0x4947, 0x651: 0x494d,\n\t0x652: 0x3d17, 0x653: 0x3d27, 0x654: 0x3d1f, 0x655: 0x3d2f,\n\t0x658: 0x48e7, 0x659: 0x48ed, 0x65a: 0x3c47, 0x65b: 0x3c57, 0x65c: 0x3c4f, 0x65d: 0x3c5f,\n\t0x660: 0x495f, 0x661: 0x4965, 0x662: 0x4a7f, 0x663: 0x4a97,\n\t0x664: 0x4a87, 0x665: 0x4a9f, 0x666: 0x4a8f, 0x667: 0x4aa7, 0x668: 0x48f3, 0x669: 0x48f9,\n\t0x66a: 0x49ef, 0x66b: 0x4a07, 0x66c: 0x49f7, 0x66d: 0x4a0f, 0x66e: 0x49ff, 0x66f: 0x4a17,\n\t0x670: 0x4977, 0x671: 0x497d, 0x672: 0x3d77, 0x673: 0x3d8f, 0x674: 0x3d7f, 0x675: 0x3d97,\n\t0x676: 0x3d87, 0x677: 0x3d9f, 0x678: 0x48ff, 0x679: 0x4905, 0x67a: 0x3c77, 0x67b: 0x3c8f,\n\t0x67c: 0x3c7f, 0x67d: 0x3c97, 0x67e: 0x3c87, 0x67f: 0x3c9f,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x4983, 0x681: 0x4989, 0x682: 0x3da7, 0x683: 0x3db7, 0x684: 0x3daf, 0x685: 0x3dbf,\n\t0x688: 0x490b, 0x689: 0x4911, 0x68a: 0x3ca7, 0x68b: 0x3cb7,\n\t0x68c: 0x3caf, 0x68d: 0x3cbf, 0x690: 0x4995, 0x691: 0x499b,\n\t0x692: 0x3ddf, 0x693: 0x3df7, 0x694: 0x3de7, 0x695: 0x3dff, 0x696: 0x3def, 0x697: 0x3e07,\n\t0x699: 0x4917, 0x69b: 0x3cc7, 0x69d: 0x3ccf,\n\t0x69f: 0x3cd7, 0x6a0: 0x49ad, 0x6a1: 0x49b3, 0x6a2: 0x4aaf, 0x6a3: 0x4ac7,\n\t0x6a4: 0x4ab7, 0x6a5: 0x4acf, 0x6a6: 0x4abf, 0x6a7: 0x4ad7, 0x6a8: 0x491d, 0x6a9: 0x4923,\n\t0x6aa: 0x4a1f, 0x6ab: 0x4a37, 0x6ac: 0x4a27, 0x6ad: 0x4a3f, 0x6ae: 0x4a2f, 0x6af: 0x4a47,\n\t0x6b0: 0x4929, 0x6b1: 0x43d7, 0x6b2: 0x35f0, 0x6b3: 0x43dd, 0x6b4: 0x4953, 0x6b5: 0x43e3,\n\t0x6b6: 0x3602, 0x6b7: 0x43e9, 0x6b8: 0x3620, 0x6b9: 0x43ef, 0x6ba: 0x3638, 0x6bb: 0x43f5,\n\t0x6bc: 0x49a1, 0x6bd: 0x43fb,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3cff, 0x6c1: 0x3d07, 0x6c2: 0x41c3, 0x6c3: 0x41e1, 0x6c4: 0x41cd, 0x6c5: 0x41eb,\n\t0x6c6: 0x41d7, 0x6c7: 0x41f5, 0x6c8: 0x3c37, 0x6c9: 0x3c3f, 0x6ca: 0x410f, 0x6cb: 0x412d,\n\t0x6cc: 0x4119, 0x6cd: 0x4137, 0x6ce: 0x4123, 0x6cf: 0x4141, 0x6d0: 0x3d47, 0x6d1: 0x3d4f,\n\t0x6d2: 0x41ff, 0x6d3: 0x421d, 0x6d4: 0x4209, 0x6d5: 0x4227, 0x6d6: 0x4213, 0x6d7: 0x4231,\n\t0x6d8: 0x3c67, 0x6d9: 0x3c6f, 0x6da: 0x414b, 0x6db: 0x4169, 0x6dc: 0x4155, 0x6dd: 0x4173,\n\t0x6de: 0x415f, 0x6df: 0x417d, 0x6e0: 0x3e1f, 0x6e1: 0x3e27, 0x6e2: 0x423b, 0x6e3: 0x4259,\n\t0x6e4: 0x4245, 0x6e5: 0x4263, 0x6e6: 0x424f, 0x6e7: 0x426d, 0x6e8: 0x3cdf, 0x6e9: 0x3ce7,\n\t0x6ea: 0x4187, 0x6eb: 0x41a5, 0x6ec: 0x4191, 0x6ed: 0x41af, 0x6ee: 0x419b, 0x6ef: 0x41b9,\n\t0x6f0: 0x35e4, 0x6f1: 0x35de, 0x6f2: 0x3cef, 0x6f3: 0x35ea, 0x6f4: 0x3cf7,\n\t0x6f6: 0x4941, 0x6f7: 0x3d0f, 0x6f8: 0x3554, 0x6f9: 0x354e, 0x6fa: 0x3542, 0x6fb: 0x43a7,\n\t0x6fc: 0x355a, 0x6fd: 0x4340, 0x6fe: 0x0257, 0x6ff: 0x4340,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x4359, 0x701: 0x453b, 0x702: 0x3d37, 0x703: 0x35fc, 0x704: 0x3d3f,\n\t0x706: 0x496b, 0x707: 0x3d57, 0x708: 0x3560, 0x709: 0x43ad, 0x70a: 0x356c, 0x70b: 0x43b3,\n\t0x70c: 0x3578, 0x70d: 0x4542, 0x70e: 0x4549, 0x70f: 0x4550, 0x710: 0x3614, 0x711: 0x360e,\n\t0x712: 0x3d5f, 0x713: 0x459d, 0x716: 0x361a, 0x717: 0x3d6f,\n\t0x718: 0x3590, 0x719: 0x358a, 0x71a: 0x357e, 0x71b: 0x43b9, 0x71d: 0x4557,\n\t0x71e: 0x455e, 0x71f: 0x4565, 0x720: 0x364a, 0x721: 0x3644, 0x722: 0x3dc7, 0x723: 0x45a5,\n\t0x724: 0x362c, 0x725: 0x3632, 0x726: 0x3650, 0x727: 0x3dd7, 0x728: 0x35c0, 0x729: 0x35ba,\n\t0x72a: 0x35ae, 0x72b: 0x43c5, 0x72c: 0x35a8, 0x72d: 0x452d, 0x72e: 0x4534, 0x72f: 0x0081,\n\t0x732: 0x3e0f, 0x733: 0x3656, 0x734: 0x3e17,\n\t0x736: 0x49b9, 0x737: 0x3e2f, 0x738: 0x359c, 0x739: 0x43bf, 0x73a: 0x35cc, 0x73b: 0x43d1,\n\t0x73c: 0x35d8, 0x73d: 0x4313, 0x73e: 0x4345,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x1d08, 0x741: 0x1d0c, 0x742: 0x0047, 0x743: 0x1d84, 0x745: 0x1d18,\n\t0x746: 0x1d1c, 0x747: 0x00ef, 0x749: 0x1d88, 0x74a: 0x008f, 0x74b: 0x0051,\n\t0x74c: 0x0051, 0x74d: 0x0051, 0x74e: 0x0091, 0x74f: 0x00e0, 0x750: 0x0053, 0x751: 0x0053,\n\t0x752: 0x0059, 0x753: 0x0099, 0x755: 0x005d, 0x756: 0x1abd,\n\t0x759: 0x0061, 0x75a: 0x0063, 0x75b: 0x0065, 0x75c: 0x0065, 0x75d: 0x0065,\n\t0x760: 0x1acf, 0x761: 0x1cf8, 0x762: 0x1ad8,\n\t0x764: 0x0075, 0x766: 0x023c, 0x768: 0x0075,\n\t0x76a: 0x0057, 0x76b: 0x438b, 0x76c: 0x0045, 0x76d: 0x0047, 0x76f: 0x008b,\n\t0x770: 0x004b, 0x771: 0x004d, 0x773: 0x005b, 0x774: 0x009f, 0x775: 0x0308,\n\t0x776: 0x030b, 0x777: 0x030e, 0x778: 0x0311, 0x779: 0x0093, 0x77b: 0x1cc8,\n\t0x77c: 0x026c, 0x77d: 0x0245, 0x77e: 0x01fd, 0x77f: 0x0224,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x055a, 0x785: 0x0049,\n\t0x786: 0x0089, 0x787: 0x008b, 0x788: 0x0093, 0x789: 0x0095,\n\t0x790: 0x235e, 0x791: 0x236a,\n\t0x792: 0x241e, 0x793: 0x2346, 0x794: 0x23ca, 0x795: 0x2352, 0x796: 0x23d0, 0x797: 0x23e8,\n\t0x798: 0x23f4, 0x799: 0x2358, 0x79a: 0x23fa, 0x79b: 0x2364, 0x79c: 0x23ee, 0x79d: 0x2400,\n\t0x79e: 0x2406, 0x79f: 0x1dec, 0x7a0: 0x0053, 0x7a1: 0x1a87, 0x7a2: 0x1cd4, 0x7a3: 0x1a90,\n\t0x7a4: 0x006d, 0x7a5: 0x1adb, 0x7a6: 0x1d00, 0x7a7: 0x1e78, 0x7a8: 0x1a93, 0x7a9: 0x0071,\n\t0x7aa: 0x1ae7, 0x7ab: 0x1d04, 0x7ac: 0x0059, 0x7ad: 0x0047, 0x7ae: 0x0049, 0x7af: 0x005b,\n\t0x7b0: 0x0093, 0x7b1: 0x1b14, 0x7b2: 0x1d48, 0x7b3: 0x1b1d, 0x7b4: 0x00ad, 0x7b5: 0x1b92,\n\t0x7b6: 0x1d7c, 0x7b7: 0x1e8c, 0x7b8: 0x1b20, 0x7b9: 0x00b1, 0x7ba: 0x1b95, 0x7bb: 0x1d80,\n\t0x7bc: 0x0099, 0x7bd: 0x0087, 0x7be: 0x0089, 0x7bf: 0x009b,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x3b65, 0x7c3: 0xa000, 0x7c4: 0x3b6c, 0x7c5: 0xa000,\n\t0x7c7: 0x3b73, 0x7c8: 0xa000, 0x7c9: 0x3b7a,\n\t0x7cd: 0xa000,\n\t0x7e0: 0x2ec4, 0x7e1: 0xa000, 0x7e2: 0x3b88,\n\t0x7e4: 0xa000, 0x7e5: 0xa000,\n\t0x7ed: 0x3b81, 0x7ee: 0x2ebf, 0x7ef: 0x2ec9,\n\t0x7f0: 0x3b8f, 0x7f1: 0x3b96, 0x7f2: 0xa000, 0x7f3: 0xa000, 0x7f4: 0x3b9d, 0x7f5: 0x3ba4,\n\t0x7f6: 0xa000, 0x7f7: 0xa000, 0x7f8: 0x3bab, 0x7f9: 0x3bb2, 0x7fa: 0xa000, 0x7fb: 0xa000,\n\t0x7fc: 0xa000, 0x7fd: 0xa000,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3bb9, 0x801: 0x3bc0, 0x802: 0xa000, 0x803: 0xa000, 0x804: 0x3bd5, 0x805: 0x3bdc,\n\t0x806: 0xa000, 0x807: 0xa000, 0x808: 0x3be3, 0x809: 0x3bea,\n\t0x811: 0xa000,\n\t0x812: 0xa000,\n\t0x822: 0xa000,\n\t0x828: 0xa000, 0x829: 0xa000,\n\t0x82b: 0xa000, 0x82c: 0x3bff, 0x82d: 0x3c06, 0x82e: 0x3c0d, 0x82f: 0x3c14,\n\t0x832: 0xa000, 0x833: 0xa000, 0x834: 0xa000, 0x835: 0xa000,\n\t// Block 0x21, offset 0x840\n\t0x860: 0x0023, 0x861: 0x0025, 0x862: 0x0027, 0x863: 0x0029,\n\t0x864: 0x002b, 0x865: 0x002d, 0x866: 0x002f, 0x867: 0x0031, 0x868: 0x0033, 0x869: 0x19af,\n\t0x86a: 0x19b2, 0x86b: 0x19b5, 0x86c: 0x19b8, 0x86d: 0x19bb, 0x86e: 0x19be, 0x86f: 0x19c1,\n\t0x870: 0x19c4, 0x871: 0x19c7, 0x872: 0x19ca, 0x873: 0x19d3, 0x874: 0x1b98, 0x875: 0x1b9c,\n\t0x876: 0x1ba0, 0x877: 0x1ba4, 0x878: 0x1ba8, 0x879: 0x1bac, 0x87a: 0x1bb0, 0x87b: 0x1bb4,\n\t0x87c: 0x1bb8, 0x87d: 0x1db0, 0x87e: 0x1db5, 0x87f: 0x1dba,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x1dbf, 0x881: 0x1dc4, 0x882: 0x1dc9, 0x883: 0x1dce, 0x884: 0x1dd3, 0x885: 0x1dd8,\n\t0x886: 0x1ddd, 0x887: 0x1de2, 0x888: 0x19ac, 0x889: 0x19d0, 0x88a: 0x19f4, 0x88b: 0x1a18,\n\t0x88c: 0x1a3c, 0x88d: 0x1a45, 0x88e: 0x1a4b, 0x88f: 0x1a51, 0x890: 0x1a57, 0x891: 0x1c90,\n\t0x892: 0x1c94, 0x893: 0x1c98, 0x894: 0x1c9c, 0x895: 0x1ca0, 0x896: 0x1ca4, 0x897: 0x1ca8,\n\t0x898: 0x1cac, 0x899: 0x1cb0, 0x89a: 0x1cb4, 0x89b: 0x1cb8, 0x89c: 0x1c24, 0x89d: 0x1c28,\n\t0x89e: 0x1c2c, 0x89f: 0x1c30, 0x8a0: 0x1c34, 0x8a1: 0x1c38, 0x8a2: 0x1c3c, 0x8a3: 0x1c40,\n\t0x8a4: 0x1c44, 0x8a5: 0x1c48, 0x8a6: 0x1c4c, 0x8a7: 0x1c50, 0x8a8: 0x1c54, 0x8a9: 0x1c58,\n\t0x8aa: 0x1c5c, 0x8ab: 0x1c60, 0x8ac: 0x1c64, 0x8ad: 0x1c68, 0x8ae: 0x1c6c, 0x8af: 0x1c70,\n\t0x8b0: 0x1c74, 0x8b1: 0x1c78, 0x8b2: 0x1c7c, 0x8b3: 0x1c80, 0x8b4: 0x1c84, 0x8b5: 0x1c88,\n\t0x8b6: 0x0043, 0x8b7: 0x0045, 0x8b8: 0x0047, 0x8b9: 0x0049, 0x8ba: 0x004b, 0x8bb: 0x004d,\n\t0x8bc: 0x004f, 0x8bd: 0x0051, 0x8be: 0x0053, 0x8bf: 0x0055,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x07ba, 0x8c1: 0x07de, 0x8c2: 0x07ea, 0x8c3: 0x07fa, 0x8c4: 0x0802, 0x8c5: 0x080e,\n\t0x8c6: 0x0816, 0x8c7: 0x081e, 0x8c8: 0x082a, 0x8c9: 0x087e, 0x8ca: 0x0896, 0x8cb: 0x08a6,\n\t0x8cc: 0x08b6, 0x8cd: 0x08c6, 0x8ce: 0x08d6, 0x8cf: 0x08f6, 0x8d0: 0x08fa, 0x8d1: 0x08fe,\n\t0x8d2: 0x0932, 0x8d3: 0x095a, 0x8d4: 0x096a, 0x8d5: 0x0972, 0x8d6: 0x0976, 0x8d7: 0x0982,\n\t0x8d8: 0x099e, 0x8d9: 0x09a2, 0x8da: 0x09ba, 0x8db: 0x09be, 0x8dc: 0x09c6, 0x8dd: 0x09d6,\n\t0x8de: 0x0a72, 0x8df: 0x0a86, 0x8e0: 0x0ac6, 0x8e1: 0x0ada, 0x8e2: 0x0ae2, 0x8e3: 0x0ae6,\n\t0x8e4: 0x0af6, 0x8e5: 0x0b12, 0x8e6: 0x0b3e, 0x8e7: 0x0b4a, 0x8e8: 0x0b6a, 0x8e9: 0x0b76,\n\t0x8ea: 0x0b7a, 0x8eb: 0x0b7e, 0x8ec: 0x0b96, 0x8ed: 0x0b9a, 0x8ee: 0x0bc6, 0x8ef: 0x0bd2,\n\t0x8f0: 0x0bda, 0x8f1: 0x0be2, 0x8f2: 0x0bf2, 0x8f3: 0x0bfa, 0x8f4: 0x0c02, 0x8f5: 0x0c2e,\n\t0x8f6: 0x0c32, 0x8f7: 0x0c3a, 0x8f8: 0x0c3e, 0x8f9: 0x0c46, 0x8fa: 0x0c4e, 0x8fb: 0x0c5e,\n\t0x8fc: 0x0c7a, 0x8fd: 0x0cf2, 0x8fe: 0x0d06, 0x8ff: 0x0d0a,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0d8a, 0x901: 0x0d8e, 0x902: 0x0da2, 0x903: 0x0da6, 0x904: 0x0dae, 0x905: 0x0db6,\n\t0x906: 0x0dbe, 0x907: 0x0dca, 0x908: 0x0df2, 0x909: 0x0e02, 0x90a: 0x0e16, 0x90b: 0x0e86,\n\t0x90c: 0x0e92, 0x90d: 0x0ea2, 0x90e: 0x0eae, 0x90f: 0x0eba, 0x910: 0x0ec2, 0x911: 0x0ec6,\n\t0x912: 0x0eca, 0x913: 0x0ece, 0x914: 0x0ed2, 0x915: 0x0f8a, 0x916: 0x0fd2, 0x917: 0x0fde,\n\t0x918: 0x0fe2, 0x919: 0x0fe6, 0x91a: 0x0fea, 0x91b: 0x0ff2, 0x91c: 0x0ff6, 0x91d: 0x100a,\n\t0x91e: 0x1026, 0x91f: 0x102e, 0x920: 0x106e, 0x921: 0x1072, 0x922: 0x107a, 0x923: 0x107e,\n\t0x924: 0x1086, 0x925: 0x108a, 0x926: 0x10ae, 0x927: 0x10b2, 0x928: 0x10ce, 0x929: 0x10d2,\n\t0x92a: 0x10d6, 0x92b: 0x10da, 0x92c: 0x10ee, 0x92d: 0x1112, 0x92e: 0x1116, 0x92f: 0x111a,\n\t0x930: 0x113e, 0x931: 0x117e, 0x932: 0x1182, 0x933: 0x11a2, 0x934: 0x11b2, 0x935: 0x11ba,\n\t0x936: 0x11da, 0x937: 0x11fe, 0x938: 0x1242, 0x939: 0x124a, 0x93a: 0x125e, 0x93b: 0x126a,\n\t0x93c: 0x1272, 0x93d: 0x127a, 0x93e: 0x127e, 0x93f: 0x1282,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x129a, 0x941: 0x129e, 0x942: 0x12ba, 0x943: 0x12c2, 0x944: 0x12ca, 0x945: 0x12ce,\n\t0x946: 0x12da, 0x947: 0x12e2, 0x948: 0x12e6, 0x949: 0x12ea, 0x94a: 0x12f2, 0x94b: 0x12f6,\n\t0x94c: 0x1396, 0x94d: 0x13aa, 0x94e: 0x13de, 0x94f: 0x13e2, 0x950: 0x13ea, 0x951: 0x1416,\n\t0x952: 0x141e, 0x953: 0x1426, 0x954: 0x142e, 0x955: 0x146a, 0x956: 0x146e, 0x957: 0x1476,\n\t0x958: 0x147a, 0x959: 0x147e, 0x95a: 0x14aa, 0x95b: 0x14ae, 0x95c: 0x14b6, 0x95d: 0x14ca,\n\t0x95e: 0x14ce, 0x95f: 0x14ea, 0x960: 0x14f2, 0x961: 0x14f6, 0x962: 0x151a, 0x963: 0x153a,\n\t0x964: 0x154e, 0x965: 0x1552, 0x966: 0x155a, 0x967: 0x1586, 0x968: 0x158a, 0x969: 0x159a,\n\t0x96a: 0x15be, 0x96b: 0x15ca, 0x96c: 0x15da, 0x96d: 0x15f2, 0x96e: 0x15fa, 0x96f: 0x15fe,\n\t0x970: 0x1602, 0x971: 0x1606, 0x972: 0x1612, 0x973: 0x1616, 0x974: 0x161e, 0x975: 0x163a,\n\t0x976: 0x163e, 0x977: 0x1642, 0x978: 0x165a, 0x979: 0x165e, 0x97a: 0x1666, 0x97b: 0x167a,\n\t0x97c: 0x167e, 0x97d: 0x1682, 0x97e: 0x168a, 0x97f: 0x168e,\n\t// Block 0x26, offset 0x980\n\t0x986: 0xa000, 0x98b: 0xa000,\n\t0x98c: 0x3f47, 0x98d: 0xa000, 0x98e: 0x3f4f, 0x98f: 0xa000, 0x990: 0x3f57, 0x991: 0xa000,\n\t0x992: 0x3f5f, 0x993: 0xa000, 0x994: 0x3f67, 0x995: 0xa000, 0x996: 0x3f6f, 0x997: 0xa000,\n\t0x998: 0x3f77, 0x999: 0xa000, 0x99a: 0x3f7f, 0x99b: 0xa000, 0x99c: 0x3f87, 0x99d: 0xa000,\n\t0x99e: 0x3f8f, 0x99f: 0xa000, 0x9a0: 0x3f97, 0x9a1: 0xa000, 0x9a2: 0x3f9f,\n\t0x9a4: 0xa000, 0x9a5: 0x3fa7, 0x9a6: 0xa000, 0x9a7: 0x3faf, 0x9a8: 0xa000, 0x9a9: 0x3fb7,\n\t0x9af: 0xa000,\n\t0x9b0: 0x3fbf, 0x9b1: 0x3fc7, 0x9b2: 0xa000, 0x9b3: 0x3fcf, 0x9b4: 0x3fd7, 0x9b5: 0xa000,\n\t0x9b6: 0x3fdf, 0x9b7: 0x3fe7, 0x9b8: 0xa000, 0x9b9: 0x3fef, 0x9ba: 0x3ff7, 0x9bb: 0xa000,\n\t0x9bc: 0x3fff, 0x9bd: 0x4007,\n\t// Block 0x27, offset 0x9c0\n\t0x9d4: 0x3f3f,\n\t0x9d9: 0x9904, 0x9da: 0x9904, 0x9db: 0x4395, 0x9dc: 0x439b, 0x9dd: 0xa000,\n\t0x9de: 0x400f, 0x9df: 0x27e4,\n\t0x9e6: 0xa000,\n\t0x9eb: 0xa000, 0x9ec: 0x401f, 0x9ed: 0xa000, 0x9ee: 0x4027, 0x9ef: 0xa000,\n\t0x9f0: 0x402f, 0x9f1: 0xa000, 0x9f2: 0x4037, 0x9f3: 0xa000, 0x9f4: 0x403f, 0x9f5: 0xa000,\n\t0x9f6: 0x4047, 0x9f7: 0xa000, 0x9f8: 0x404f, 0x9f9: 0xa000, 0x9fa: 0x4057, 0x9fb: 0xa000,\n\t0x9fc: 0x405f, 0x9fd: 0xa000, 0x9fe: 0x4067, 0x9ff: 0xa000,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x406f, 0xa01: 0xa000, 0xa02: 0x4077, 0xa04: 0xa000, 0xa05: 0x407f,\n\t0xa06: 0xa000, 0xa07: 0x4087, 0xa08: 0xa000, 0xa09: 0x408f,\n\t0xa0f: 0xa000, 0xa10: 0x4097, 0xa11: 0x409f,\n\t0xa12: 0xa000, 0xa13: 0x40a7, 0xa14: 0x40af, 0xa15: 0xa000, 0xa16: 0x40b7, 0xa17: 0x40bf,\n\t0xa18: 0xa000, 0xa19: 0x40c7, 0xa1a: 0x40cf, 0xa1b: 0xa000, 0xa1c: 0x40d7, 0xa1d: 0x40df,\n\t0xa2f: 0xa000,\n\t0xa30: 0xa000, 0xa31: 0xa000, 0xa32: 0xa000, 0xa34: 0x4017,\n\t0xa37: 0x40e7, 0xa38: 0x40ef, 0xa39: 0x40f7, 0xa3a: 0x40ff,\n\t0xa3d: 0xa000, 0xa3e: 0x4107, 0xa3f: 0x27f9,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x045a, 0xa41: 0x041e, 0xa42: 0x0422, 0xa43: 0x0426, 0xa44: 0x046e, 0xa45: 0x042a,\n\t0xa46: 0x042e, 0xa47: 0x0432, 0xa48: 0x0436, 0xa49: 0x043a, 0xa4a: 0x043e, 0xa4b: 0x0442,\n\t0xa4c: 0x0446, 0xa4d: 0x044a, 0xa4e: 0x044e, 0xa4f: 0x4afe, 0xa50: 0x4b04, 0xa51: 0x4b0a,\n\t0xa52: 0x4b10, 0xa53: 0x4b16, 0xa54: 0x4b1c, 0xa55: 0x4b22, 0xa56: 0x4b28, 0xa57: 0x4b2e,\n\t0xa58: 0x4b34, 0xa59: 0x4b3a, 0xa5a: 0x4b40, 0xa5b: 0x4b46, 0xa5c: 0x4b4c, 0xa5d: 0x4b52,\n\t0xa5e: 0x4b58, 0xa5f: 0x4b5e, 0xa60: 0x4b64, 0xa61: 0x4b6a, 0xa62: 0x4b70, 0xa63: 0x4b76,\n\t0xa64: 0x04b6, 0xa65: 0x0452, 0xa66: 0x0456, 0xa67: 0x04da, 0xa68: 0x04de, 0xa69: 0x04e2,\n\t0xa6a: 0x04e6, 0xa6b: 0x04ea, 0xa6c: 0x04ee, 0xa6d: 0x04f2, 0xa6e: 0x045e, 0xa6f: 0x04f6,\n\t0xa70: 0x04fa, 0xa71: 0x0462, 0xa72: 0x0466, 0xa73: 0x046a, 0xa74: 0x0472, 0xa75: 0x0476,\n\t0xa76: 0x047a, 0xa77: 0x047e, 0xa78: 0x0482, 0xa79: 0x0486, 0xa7a: 0x048a, 0xa7b: 0x048e,\n\t0xa7c: 0x0492, 0xa7d: 0x0496, 0xa7e: 0x049a, 0xa7f: 0x049e,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x04a2, 0xa81: 0x04a6, 0xa82: 0x04fe, 0xa83: 0x0502, 0xa84: 0x04aa, 0xa85: 0x04ae,\n\t0xa86: 0x04b2, 0xa87: 0x04ba, 0xa88: 0x04be, 0xa89: 0x04c2, 0xa8a: 0x04c6, 0xa8b: 0x04ca,\n\t0xa8c: 0x04ce, 0xa8d: 0x04d2, 0xa8e: 0x04d6,\n\t0xa92: 0x07ba, 0xa93: 0x0816, 0xa94: 0x07c6, 0xa95: 0x0a76, 0xa96: 0x07ca, 0xa97: 0x07e2,\n\t0xa98: 0x07ce, 0xa99: 0x108e, 0xa9a: 0x0802, 0xa9b: 0x07d6, 0xa9c: 0x07be, 0xa9d: 0x0afa,\n\t0xa9e: 0x0a8a, 0xa9f: 0x082a,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x2184, 0xac1: 0x218a, 0xac2: 0x2190, 0xac3: 0x2196, 0xac4: 0x219c, 0xac5: 0x21a2,\n\t0xac6: 0x21a8, 0xac7: 0x21ae, 0xac8: 0x21b4, 0xac9: 0x21ba, 0xaca: 0x21c0, 0xacb: 0x21c6,\n\t0xacc: 0x21cc, 0xacd: 0x21d2, 0xace: 0x285d, 0xacf: 0x2866, 0xad0: 0x286f, 0xad1: 0x2878,\n\t0xad2: 0x2881, 0xad3: 0x288a, 0xad4: 0x2893, 0xad5: 0x289c, 0xad6: 0x28a5, 0xad7: 0x28b7,\n\t0xad8: 0x28c0, 0xad9: 0x28c9, 0xada: 0x28d2, 0xadb: 0x28db, 0xadc: 0x28ae, 0xadd: 0x2ce3,\n\t0xade: 0x2c24, 0xae0: 0x21d8, 0xae1: 0x21f0, 0xae2: 0x21e4, 0xae3: 0x2238,\n\t0xae4: 0x21f6, 0xae5: 0x2214, 0xae6: 0x21de, 0xae7: 0x220e, 0xae8: 0x21ea, 0xae9: 0x2220,\n\t0xaea: 0x2250, 0xaeb: 0x226e, 0xaec: 0x2268, 0xaed: 0x225c, 0xaee: 0x22aa, 0xaef: 0x223e,\n\t0xaf0: 0x224a, 0xaf1: 0x2262, 0xaf2: 0x2256, 0xaf3: 0x2280, 0xaf4: 0x222c, 0xaf5: 0x2274,\n\t0xaf6: 0x229e, 0xaf7: 0x2286, 0xaf8: 0x221a, 0xaf9: 0x21fc, 0xafa: 0x2232, 0xafb: 0x2244,\n\t0xafc: 0x227a, 0xafd: 0x2202, 0xafe: 0x22a4, 0xaff: 0x2226,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x228c, 0xb01: 0x2208, 0xb02: 0x2292, 0xb03: 0x2298, 0xb04: 0x0a2a, 0xb05: 0x0bfe,\n\t0xb06: 0x0da2, 0xb07: 0x11c2,\n\t0xb10: 0x1cf4, 0xb11: 0x19d6,\n\t0xb12: 0x19d9, 0xb13: 0x19dc, 0xb14: 0x19df, 0xb15: 0x19e2, 0xb16: 0x19e5, 0xb17: 0x19e8,\n\t0xb18: 0x19eb, 0xb19: 0x19ee, 0xb1a: 0x19f7, 0xb1b: 0x19fa, 0xb1c: 0x19fd, 0xb1d: 0x1a00,\n\t0xb1e: 0x1a03, 0xb1f: 0x1a06, 0xb20: 0x0406, 0xb21: 0x040e, 0xb22: 0x0412, 0xb23: 0x041a,\n\t0xb24: 0x041e, 0xb25: 0x0422, 0xb26: 0x042a, 0xb27: 0x0432, 0xb28: 0x0436, 0xb29: 0x043e,\n\t0xb2a: 0x0442, 0xb2b: 0x0446, 0xb2c: 0x044a, 0xb2d: 0x044e, 0xb2e: 0x467d, 0xb2f: 0x4685,\n\t0xb30: 0x468d, 0xb31: 0x4695, 0xb32: 0x469d, 0xb33: 0x46a5, 0xb34: 0x46ad, 0xb35: 0x46b5,\n\t0xb36: 0x46c5, 0xb37: 0x46cd, 0xb38: 0x46d5, 0xb39: 0x46dd, 0xb3a: 0x46e5, 0xb3b: 0x46ed,\n\t0xb3c: 0x2e42, 0xb3d: 0x2e0a, 0xb3e: 0x46bd,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x07ba, 0xb41: 0x0816, 0xb42: 0x07c6, 0xb43: 0x0a76, 0xb44: 0x081a, 0xb45: 0x08aa,\n\t0xb46: 0x07c2, 0xb47: 0x08a6, 0xb48: 0x0806, 0xb49: 0x0982, 0xb4a: 0x0e02, 0xb4b: 0x0f8a,\n\t0xb4c: 0x0ed2, 0xb4d: 0x0e16, 0xb4e: 0x155a, 0xb4f: 0x0a86, 0xb50: 0x0dca, 0xb51: 0x0e46,\n\t0xb52: 0x0e06, 0xb53: 0x1146, 0xb54: 0x09f6, 0xb55: 0x0ffe, 0xb56: 0x1482, 0xb57: 0x115a,\n\t0xb58: 0x093e, 0xb59: 0x118a, 0xb5a: 0x1096, 0xb5b: 0x0b12, 0xb5c: 0x150a, 0xb5d: 0x087a,\n\t0xb5e: 0x09a6, 0xb5f: 0x0ef2, 0xb60: 0x1622, 0xb61: 0x083e, 0xb62: 0x08ce, 0xb63: 0x0e96,\n\t0xb64: 0x07ca, 0xb65: 0x07e2, 0xb66: 0x07ce, 0xb67: 0x0bd6, 0xb68: 0x09ea, 0xb69: 0x097a,\n\t0xb6a: 0x0b52, 0xb6b: 0x0b46, 0xb6c: 0x10e6, 0xb6d: 0x083a, 0xb6e: 0x1496, 0xb6f: 0x0996,\n\t0xb70: 0x0aee, 0xb71: 0x1a09, 0xb72: 0x1a0c, 0xb73: 0x1a0f, 0xb74: 0x1a12, 0xb75: 0x1a1b,\n\t0xb76: 0x1a1e, 0xb77: 0x1a21, 0xb78: 0x1a24, 0xb79: 0x1a27, 0xb7a: 0x1a2a, 0xb7b: 0x1a2d,\n\t0xb7c: 0x1a30, 0xb7d: 0x1a33, 0xb7e: 0x1a36, 0xb7f: 0x1a3f,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x1df6, 0xb81: 0x1e05, 0xb82: 0x1e14, 0xb83: 0x1e23, 0xb84: 0x1e32, 0xb85: 0x1e41,\n\t0xb86: 0x1e50, 0xb87: 0x1e5f, 0xb88: 0x1e6e, 0xb89: 0x22bc, 0xb8a: 0x22ce, 0xb8b: 0x22e0,\n\t0xb8c: 0x1a81, 0xb8d: 0x1d34, 0xb8e: 0x1b02, 0xb8f: 0x1cd8, 0xb90: 0x05c6, 0xb91: 0x05ce,\n\t0xb92: 0x05d6, 0xb93: 0x05de, 0xb94: 0x05e6, 0xb95: 0x05ea, 0xb96: 0x05ee, 0xb97: 0x05f2,\n\t0xb98: 0x05f6, 0xb99: 0x05fa, 0xb9a: 0x05fe, 0xb9b: 0x0602, 0xb9c: 0x0606, 0xb9d: 0x060a,\n\t0xb9e: 0x060e, 0xb9f: 0x0612, 0xba0: 0x0616, 0xba1: 0x061e, 0xba2: 0x0622, 0xba3: 0x0626,\n\t0xba4: 0x062a, 0xba5: 0x062e, 0xba6: 0x0632, 0xba7: 0x0636, 0xba8: 0x063a, 0xba9: 0x063e,\n\t0xbaa: 0x0642, 0xbab: 0x0646, 0xbac: 0x064a, 0xbad: 0x064e, 0xbae: 0x0652, 0xbaf: 0x0656,\n\t0xbb0: 0x065a, 0xbb1: 0x065e, 0xbb2: 0x0662, 0xbb3: 0x066a, 0xbb4: 0x0672, 0xbb5: 0x067a,\n\t0xbb6: 0x067e, 0xbb7: 0x0682, 0xbb8: 0x0686, 0xbb9: 0x068a, 0xbba: 0x068e, 0xbbb: 0x0692,\n\t0xbbc: 0x0696, 0xbbd: 0x069a, 0xbbe: 0x069e, 0xbbf: 0x282a,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x2c43, 0xbc1: 0x2adf, 0xbc2: 0x2c53, 0xbc3: 0x29b7, 0xbc4: 0x2e53, 0xbc5: 0x29c1,\n\t0xbc6: 0x29cb, 0xbc7: 0x2e97, 0xbc8: 0x2aec, 0xbc9: 0x29d5, 0xbca: 0x29df, 0xbcb: 0x29e9,\n\t0xbcc: 0x2b13, 0xbcd: 0x2b20, 0xbce: 0x2af9, 0xbcf: 0x2b06, 0xbd0: 0x2e18, 0xbd1: 0x2b2d,\n\t0xbd2: 0x2b3a, 0xbd3: 0x2cf5, 0xbd4: 0x27eb, 0xbd5: 0x2d08, 0xbd6: 0x2d1b, 0xbd7: 0x2c63,\n\t0xbd8: 0x2b47, 0xbd9: 0x2d2e, 0xbda: 0x2d41, 0xbdb: 0x2b54, 0xbdc: 0x29f3, 0xbdd: 0x29fd,\n\t0xbde: 0x2e26, 0xbdf: 0x2b61, 0xbe0: 0x2c73, 0xbe1: 0x2e64, 0xbe2: 0x2a07, 0xbe3: 0x2a11,\n\t0xbe4: 0x2b6e, 0xbe5: 0x2a1b, 0xbe6: 0x2a25, 0xbe7: 0x2800, 0xbe8: 0x2807, 0xbe9: 0x2a2f,\n\t0xbea: 0x2a39, 0xbeb: 0x2d54, 0xbec: 0x2b7b, 0xbed: 0x2c83, 0xbee: 0x2d67, 0xbef: 0x2b88,\n\t0xbf0: 0x2a4d, 0xbf1: 0x2a43, 0xbf2: 0x2eab, 0xbf3: 0x2b95, 0xbf4: 0x2d7a, 0xbf5: 0x2a57,\n\t0xbf6: 0x2c93, 0xbf7: 0x2a61, 0xbf8: 0x2baf, 0xbf9: 0x2a6b, 0xbfa: 0x2bbc, 0xbfb: 0x2e75,\n\t0xbfc: 0x2ba2, 0xbfd: 0x2ca3, 0xbfe: 0x2bc9, 0xbff: 0x280e,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x2e86, 0xc01: 0x2a75, 0xc02: 0x2a7f, 0xc03: 0x2bd6, 0xc04: 0x2a89, 0xc05: 0x2a93,\n\t0xc06: 0x2a9d, 0xc07: 0x2cb3, 0xc08: 0x2be3, 0xc09: 0x2815, 0xc0a: 0x2d8d, 0xc0b: 0x2dff,\n\t0xc0c: 0x2cc3, 0xc0d: 0x2bf0, 0xc0e: 0x2e34, 0xc0f: 0x2aa7, 0xc10: 0x2ab1, 0xc11: 0x2bfd,\n\t0xc12: 0x281c, 0xc13: 0x2c0a, 0xc14: 0x2cd3, 0xc15: 0x2823, 0xc16: 0x2da0, 0xc17: 0x2abb,\n\t0xc18: 0x1de7, 0xc19: 0x1dfb, 0xc1a: 0x1e0a, 0xc1b: 0x1e19, 0xc1c: 0x1e28, 0xc1d: 0x1e37,\n\t0xc1e: 0x1e46, 0xc1f: 0x1e55, 0xc20: 0x1e64, 0xc21: 0x1e73, 0xc22: 0x22c2, 0xc23: 0x22d4,\n\t0xc24: 0x22e6, 0xc25: 0x22f2, 0xc26: 0x22fe, 0xc27: 0x230a, 0xc28: 0x2316, 0xc29: 0x2322,\n\t0xc2a: 0x232e, 0xc2b: 0x233a, 0xc2c: 0x2376, 0xc2d: 0x2382, 0xc2e: 0x238e, 0xc2f: 0x239a,\n\t0xc30: 0x23a6, 0xc31: 0x1d44, 0xc32: 0x1af6, 0xc33: 0x1a63, 0xc34: 0x1d14, 0xc35: 0x1b77,\n\t0xc36: 0x1b86, 0xc37: 0x1afc, 0xc38: 0x1d2c, 0xc39: 0x1d30, 0xc3a: 0x1a8d, 0xc3b: 0x2838,\n\t0xc3c: 0x2846, 0xc3d: 0x2831, 0xc3e: 0x283f, 0xc3f: 0x2c17,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1b7a, 0xc41: 0x1b62, 0xc42: 0x1d90, 0xc43: 0x1b4a, 0xc44: 0x1b23, 0xc45: 0x1a96,\n\t0xc46: 0x1aa5, 0xc47: 0x1a75, 0xc48: 0x1d20, 0xc49: 0x1e82, 0xc4a: 0x1b7d, 0xc4b: 0x1b65,\n\t0xc4c: 0x1d94, 0xc4d: 0x1da0, 0xc4e: 0x1b56, 0xc4f: 0x1b2c, 0xc50: 0x1a84, 0xc51: 0x1d4c,\n\t0xc52: 0x1ce0, 0xc53: 0x1ccc, 0xc54: 0x1cfc, 0xc55: 0x1da4, 0xc56: 0x1b59, 0xc57: 0x1af9,\n\t0xc58: 0x1b2f, 0xc59: 0x1b0e, 0xc5a: 0x1b71, 0xc5b: 0x1da8, 0xc5c: 0x1b5c, 0xc5d: 0x1af0,\n\t0xc5e: 0x1b32, 0xc5f: 0x1d6c, 0xc60: 0x1d24, 0xc61: 0x1b44, 0xc62: 0x1d54, 0xc63: 0x1d70,\n\t0xc64: 0x1d28, 0xc65: 0x1b47, 0xc66: 0x1d58, 0xc67: 0x2418, 0xc68: 0x242c, 0xc69: 0x1ac6,\n\t0xc6a: 0x1d50, 0xc6b: 0x1ce4, 0xc6c: 0x1cd0, 0xc6d: 0x1d78, 0xc6e: 0x284d, 0xc6f: 0x28e4,\n\t0xc70: 0x1b89, 0xc71: 0x1b74, 0xc72: 0x1dac, 0xc73: 0x1b5f, 0xc74: 0x1b80, 0xc75: 0x1b68,\n\t0xc76: 0x1d98, 0xc77: 0x1b4d, 0xc78: 0x1b26, 0xc79: 0x1ab1, 0xc7a: 0x1b83, 0xc7b: 0x1b6b,\n\t0xc7c: 0x1d9c, 0xc7d: 0x1b50, 0xc7e: 0x1b29, 0xc7f: 0x1ab4,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x1d5c, 0xc81: 0x1ce8, 0xc82: 0x1e7d, 0xc83: 0x1a66, 0xc84: 0x1aea, 0xc85: 0x1aed,\n\t0xc86: 0x2425, 0xc87: 0x1cc4, 0xc88: 0x1af3, 0xc89: 0x1a78, 0xc8a: 0x1b11, 0xc8b: 0x1a7b,\n\t0xc8c: 0x1b1a, 0xc8d: 0x1a99, 0xc8e: 0x1a9c, 0xc8f: 0x1b35, 0xc90: 0x1b3b, 0xc91: 0x1b3e,\n\t0xc92: 0x1d60, 0xc93: 0x1b41, 0xc94: 0x1b53, 0xc95: 0x1d68, 0xc96: 0x1d74, 0xc97: 0x1ac0,\n\t0xc98: 0x1e87, 0xc99: 0x1cec, 0xc9a: 0x1ac3, 0xc9b: 0x1b8c, 0xc9c: 0x1ad5, 0xc9d: 0x1ae4,\n\t0xc9e: 0x2412, 0xc9f: 0x240c, 0xca0: 0x1df1, 0xca1: 0x1e00, 0xca2: 0x1e0f, 0xca3: 0x1e1e,\n\t0xca4: 0x1e2d, 0xca5: 0x1e3c, 0xca6: 0x1e4b, 0xca7: 0x1e5a, 0xca8: 0x1e69, 0xca9: 0x22b6,\n\t0xcaa: 0x22c8, 0xcab: 0x22da, 0xcac: 0x22ec, 0xcad: 0x22f8, 0xcae: 0x2304, 0xcaf: 0x2310,\n\t0xcb0: 0x231c, 0xcb1: 0x2328, 0xcb2: 0x2334, 0xcb3: 0x2370, 0xcb4: 0x237c, 0xcb5: 0x2388,\n\t0xcb6: 0x2394, 0xcb7: 0x23a0, 0xcb8: 0x23ac, 0xcb9: 0x23b2, 0xcba: 0x23b8, 0xcbb: 0x23be,\n\t0xcbc: 0x23c4, 0xcbd: 0x23d6, 0xcbe: 0x23dc, 0xcbf: 0x1d40,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x1472, 0xcc1: 0x0df6, 0xcc2: 0x14ce, 0xcc3: 0x149a, 0xcc4: 0x0f52, 0xcc5: 0x07e6,\n\t0xcc6: 0x09da, 0xcc7: 0x1726, 0xcc8: 0x1726, 0xcc9: 0x0b06, 0xcca: 0x155a, 0xccb: 0x0a3e,\n\t0xccc: 0x0b02, 0xccd: 0x0cea, 0xcce: 0x10ca, 0xccf: 0x125a, 0xcd0: 0x1392, 0xcd1: 0x13ce,\n\t0xcd2: 0x1402, 0xcd3: 0x1516, 0xcd4: 0x0e6e, 0xcd5: 0x0efa, 0xcd6: 0x0fa6, 0xcd7: 0x103e,\n\t0xcd8: 0x135a, 0xcd9: 0x1542, 0xcda: 0x166e, 0xcdb: 0x080a, 0xcdc: 0x09ae, 0xcdd: 0x0e82,\n\t0xcde: 0x0fca, 0xcdf: 0x138e, 0xce0: 0x16be, 0xce1: 0x0bae, 0xce2: 0x0f72, 0xce3: 0x137e,\n\t0xce4: 0x1412, 0xce5: 0x0d1e, 0xce6: 0x12b6, 0xce7: 0x13da, 0xce8: 0x0c1a, 0xce9: 0x0e0a,\n\t0xcea: 0x0f12, 0xceb: 0x1016, 0xcec: 0x1522, 0xced: 0x084a, 0xcee: 0x08e2, 0xcef: 0x094e,\n\t0xcf0: 0x0d86, 0xcf1: 0x0e7a, 0xcf2: 0x0fc6, 0xcf3: 0x10ea, 0xcf4: 0x1272, 0xcf5: 0x1386,\n\t0xcf6: 0x139e, 0xcf7: 0x14c2, 0xcf8: 0x15ea, 0xcf9: 0x169e, 0xcfa: 0x16ba, 0xcfb: 0x1126,\n\t0xcfc: 0x1166, 0xcfd: 0x121e, 0xcfe: 0x133e, 0xcff: 0x1576,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x16c6, 0xd01: 0x1446, 0xd02: 0x0ac2, 0xd03: 0x0c36, 0xd04: 0x11d6, 0xd05: 0x1296,\n\t0xd06: 0x0ffa, 0xd07: 0x112e, 0xd08: 0x1492, 0xd09: 0x15e2, 0xd0a: 0x0abe, 0xd0b: 0x0b8a,\n\t0xd0c: 0x0e72, 0xd0d: 0x0f26, 0xd0e: 0x0f5a, 0xd0f: 0x120e, 0xd10: 0x1236, 0xd11: 0x15a2,\n\t0xd12: 0x094a, 0xd13: 0x12a2, 0xd14: 0x08ee, 0xd15: 0x08ea, 0xd16: 0x1192, 0xd17: 0x1222,\n\t0xd18: 0x1356, 0xd19: 0x15aa, 0xd1a: 0x1462, 0xd1b: 0x0d22, 0xd1c: 0x0e6e, 0xd1d: 0x1452,\n\t0xd1e: 0x07f2, 0xd1f: 0x0b5e, 0xd20: 0x0c8e, 0xd21: 0x102a, 0xd22: 0x10aa, 0xd23: 0x096e,\n\t0xd24: 0x1136, 0xd25: 0x085a, 0xd26: 0x0c72, 0xd27: 0x07d2, 0xd28: 0x0ee6, 0xd29: 0x0d9e,\n\t0xd2a: 0x120a, 0xd2b: 0x09c2, 0xd2c: 0x0aae, 0xd2d: 0x10f6, 0xd2e: 0x135e, 0xd2f: 0x1436,\n\t0xd30: 0x0eb2, 0xd31: 0x14f2, 0xd32: 0x0ede, 0xd33: 0x0d32, 0xd34: 0x1316, 0xd35: 0x0d52,\n\t0xd36: 0x10a6, 0xd37: 0x0826, 0xd38: 0x08a2, 0xd39: 0x08e6, 0xd3a: 0x0e4e, 0xd3b: 0x11f6,\n\t0xd3c: 0x12ee, 0xd3d: 0x1442, 0xd3e: 0x1556, 0xd3f: 0x0956,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x0a0a, 0xd41: 0x0b12, 0xd42: 0x0c2a, 0xd43: 0x0dba, 0xd44: 0x0f76, 0xd45: 0x113a,\n\t0xd46: 0x1592, 0xd47: 0x1676, 0xd48: 0x16ca, 0xd49: 0x16e2, 0xd4a: 0x0932, 0xd4b: 0x0dee,\n\t0xd4c: 0x0e9e, 0xd4d: 0x14e6, 0xd4e: 0x0bf6, 0xd4f: 0x0cd2, 0xd50: 0x0cee, 0xd51: 0x0d7e,\n\t0xd52: 0x0f66, 0xd53: 0x0fb2, 0xd54: 0x1062, 0xd55: 0x1186, 0xd56: 0x122a, 0xd57: 0x128e,\n\t0xd58: 0x14d6, 0xd59: 0x1366, 0xd5a: 0x14fe, 0xd5b: 0x157a, 0xd5c: 0x090a, 0xd5d: 0x0936,\n\t0xd5e: 0x0a1e, 0xd5f: 0x0fa2, 0xd60: 0x13ee, 0xd61: 0x1436, 0xd62: 0x0c16, 0xd63: 0x0c86,\n\t0xd64: 0x0d4a, 0xd65: 0x0eaa, 0xd66: 0x11d2, 0xd67: 0x101e, 0xd68: 0x0836, 0xd69: 0x0a7a,\n\t0xd6a: 0x0b5e, 0xd6b: 0x0bc2, 0xd6c: 0x0c92, 0xd6d: 0x103a, 0xd6e: 0x1056, 0xd6f: 0x1266,\n\t0xd70: 0x1286, 0xd71: 0x155e, 0xd72: 0x15de, 0xd73: 0x15ee, 0xd74: 0x162a, 0xd75: 0x084e,\n\t0xd76: 0x117a, 0xd77: 0x154a, 0xd78: 0x15c6, 0xd79: 0x0caa, 0xd7a: 0x0812, 0xd7b: 0x0872,\n\t0xd7c: 0x0b62, 0xd7d: 0x0b82, 0xd7e: 0x0daa, 0xd7f: 0x0e6e,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0fbe, 0xd81: 0x10c6, 0xd82: 0x1372, 0xd83: 0x1512, 0xd84: 0x171e, 0xd85: 0x0dde,\n\t0xd86: 0x159e, 0xd87: 0x092e, 0xd88: 0x0e2a, 0xd89: 0x0e36, 0xd8a: 0x0f0a, 0xd8b: 0x0f42,\n\t0xd8c: 0x1046, 0xd8d: 0x10a2, 0xd8e: 0x1122, 0xd8f: 0x1206, 0xd90: 0x1636, 0xd91: 0x08aa,\n\t0xd92: 0x0cfe, 0xd93: 0x15ae, 0xd94: 0x0862, 0xd95: 0x0ba6, 0xd96: 0x0f2a, 0xd97: 0x14da,\n\t0xd98: 0x0c62, 0xd99: 0x0cb2, 0xd9a: 0x0e3e, 0xd9b: 0x102a, 0xd9c: 0x15b6, 0xd9d: 0x0912,\n\t0xd9e: 0x09fa, 0xd9f: 0x0b92, 0xda0: 0x0dce, 0xda1: 0x0e1a, 0xda2: 0x0e5a, 0xda3: 0x0eee,\n\t0xda4: 0x1042, 0xda5: 0x10b6, 0xda6: 0x1252, 0xda7: 0x13f2, 0xda8: 0x13fe, 0xda9: 0x1552,\n\t0xdaa: 0x15d2, 0xdab: 0x097e, 0xdac: 0x0f46, 0xdad: 0x09fe, 0xdae: 0x0fc2, 0xdaf: 0x1066,\n\t0xdb0: 0x1382, 0xdb1: 0x15ba, 0xdb2: 0x16a6, 0xdb3: 0x16ce, 0xdb4: 0x0e32, 0xdb5: 0x0f22,\n\t0xdb6: 0x12be, 0xdb7: 0x11b2, 0xdb8: 0x11be, 0xdb9: 0x11e2, 0xdba: 0x1012, 0xdbb: 0x0f9a,\n\t0xdbc: 0x145e, 0xdbd: 0x082e, 0xdbe: 0x1326, 0xdbf: 0x0916,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0906, 0xdc1: 0x0c06, 0xdc2: 0x0d26, 0xdc3: 0x11ee, 0xdc4: 0x0b4e, 0xdc5: 0x0efe,\n\t0xdc6: 0x0dea, 0xdc7: 0x14e2, 0xdc8: 0x13e2, 0xdc9: 0x15a6, 0xdca: 0x141e, 0xdcb: 0x0c22,\n\t0xdcc: 0x0882, 0xdcd: 0x0a56, 0xdd0: 0x0aaa,\n\t0xdd2: 0x0dda, 0xdd5: 0x08f2, 0xdd6: 0x101a, 0xdd7: 0x10de,\n\t0xdd8: 0x1142, 0xdd9: 0x115e, 0xdda: 0x1162, 0xddb: 0x1176, 0xddc: 0x15f6, 0xddd: 0x11e6,\n\t0xdde: 0x126a, 0xde0: 0x138a, 0xde2: 0x144e,\n\t0xde5: 0x1502, 0xde6: 0x152e,\n\t0xdea: 0x164a, 0xdeb: 0x164e, 0xdec: 0x1652, 0xded: 0x16b6, 0xdee: 0x1526, 0xdef: 0x15c2,\n\t0xdf0: 0x0852, 0xdf1: 0x0876, 0xdf2: 0x088a, 0xdf3: 0x0946, 0xdf4: 0x0952, 0xdf5: 0x0992,\n\t0xdf6: 0x0a46, 0xdf7: 0x0a62, 0xdf8: 0x0a6a, 0xdf9: 0x0aa6, 0xdfa: 0x0ab2, 0xdfb: 0x0b8e,\n\t0xdfc: 0x0b96, 0xdfd: 0x0c9e, 0xdfe: 0x0cc6, 0xdff: 0x0cce,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x0ce6, 0xe01: 0x0d92, 0xe02: 0x0dc2, 0xe03: 0x0de2, 0xe04: 0x0e52, 0xe05: 0x0f16,\n\t0xe06: 0x0f32, 0xe07: 0x0f62, 0xe08: 0x0fb6, 0xe09: 0x0fd6, 0xe0a: 0x104a, 0xe0b: 0x112a,\n\t0xe0c: 0x1146, 0xe0d: 0x114e, 0xe0e: 0x114a, 0xe0f: 0x1152, 0xe10: 0x1156, 0xe11: 0x115a,\n\t0xe12: 0x116e, 0xe13: 0x1172, 0xe14: 0x1196, 0xe15: 0x11aa, 0xe16: 0x11c6, 0xe17: 0x122a,\n\t0xe18: 0x1232, 0xe19: 0x123a, 0xe1a: 0x124e, 0xe1b: 0x1276, 0xe1c: 0x12c6, 0xe1d: 0x12fa,\n\t0xe1e: 0x12fa, 0xe1f: 0x1362, 0xe20: 0x140a, 0xe21: 0x1422, 0xe22: 0x1456, 0xe23: 0x145a,\n\t0xe24: 0x149e, 0xe25: 0x14a2, 0xe26: 0x14fa, 0xe27: 0x1502, 0xe28: 0x15d6, 0xe29: 0x161a,\n\t0xe2a: 0x1632, 0xe2b: 0x0c96, 0xe2c: 0x184b, 0xe2d: 0x12de,\n\t0xe30: 0x07da, 0xe31: 0x08de, 0xe32: 0x089e, 0xe33: 0x0846, 0xe34: 0x0886, 0xe35: 0x08b2,\n\t0xe36: 0x0942, 0xe37: 0x095e, 0xe38: 0x0a46, 0xe39: 0x0a32, 0xe3a: 0x0a42, 0xe3b: 0x0a5e,\n\t0xe3c: 0x0aaa, 0xe3d: 0x0aba, 0xe3e: 0x0afe, 0xe3f: 0x0b0a,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x0b26, 0xe41: 0x0b36, 0xe42: 0x0c1e, 0xe43: 0x0c26, 0xe44: 0x0c56, 0xe45: 0x0c76,\n\t0xe46: 0x0ca6, 0xe47: 0x0cbe, 0xe48: 0x0cae, 0xe49: 0x0cce, 0xe4a: 0x0cc2, 0xe4b: 0x0ce6,\n\t0xe4c: 0x0d02, 0xe4d: 0x0d5a, 0xe4e: 0x0d66, 0xe4f: 0x0d6e, 0xe50: 0x0d96, 0xe51: 0x0dda,\n\t0xe52: 0x0e0a, 0xe53: 0x0e0e, 0xe54: 0x0e22, 0xe55: 0x0ea2, 0xe56: 0x0eb2, 0xe57: 0x0f0a,\n\t0xe58: 0x0f56, 0xe59: 0x0f4e, 0xe5a: 0x0f62, 0xe5b: 0x0f7e, 0xe5c: 0x0fb6, 0xe5d: 0x110e,\n\t0xe5e: 0x0fda, 0xe5f: 0x100e, 0xe60: 0x101a, 0xe61: 0x105a, 0xe62: 0x1076, 0xe63: 0x109a,\n\t0xe64: 0x10be, 0xe65: 0x10c2, 0xe66: 0x10de, 0xe67: 0x10e2, 0xe68: 0x10f2, 0xe69: 0x1106,\n\t0xe6a: 0x1102, 0xe6b: 0x1132, 0xe6c: 0x11ae, 0xe6d: 0x11c6, 0xe6e: 0x11de, 0xe6f: 0x1216,\n\t0xe70: 0x122a, 0xe71: 0x1246, 0xe72: 0x1276, 0xe73: 0x132a, 0xe74: 0x1352, 0xe75: 0x13c6,\n\t0xe76: 0x140e, 0xe77: 0x141a, 0xe78: 0x1422, 0xe79: 0x143a, 0xe7a: 0x144e, 0xe7b: 0x143e,\n\t0xe7c: 0x1456, 0xe7d: 0x1452, 0xe7e: 0x144a, 0xe7f: 0x145a,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x1466, 0xe81: 0x14a2, 0xe82: 0x14de, 0xe83: 0x150e, 0xe84: 0x1546, 0xe85: 0x1566,\n\t0xe86: 0x15b2, 0xe87: 0x15d6, 0xe88: 0x15f6, 0xe89: 0x160a, 0xe8a: 0x161a, 0xe8b: 0x1626,\n\t0xe8c: 0x1632, 0xe8d: 0x1686, 0xe8e: 0x1726, 0xe8f: 0x17e2, 0xe90: 0x17dd, 0xe91: 0x180f,\n\t0xe92: 0x0702, 0xe93: 0x072a, 0xe94: 0x072e, 0xe95: 0x1891, 0xe96: 0x18be, 0xe97: 0x1936,\n\t0xe98: 0x1712, 0xe99: 0x1722,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x1b05, 0xec1: 0x1b08, 0xec2: 0x1b0b, 0xec3: 0x1d38, 0xec4: 0x1d3c, 0xec5: 0x1b8f,\n\t0xec6: 0x1b8f,\n\t0xed3: 0x1ea5, 0xed4: 0x1e96, 0xed5: 0x1e9b, 0xed6: 0x1eaa, 0xed7: 0x1ea0,\n\t0xedd: 0x4449,\n\t0xede: 0x8116, 0xedf: 0x44bb, 0xee0: 0x0320, 0xee1: 0x0308, 0xee2: 0x0311, 0xee3: 0x0314,\n\t0xee4: 0x0317, 0xee5: 0x031a, 0xee6: 0x031d, 0xee7: 0x0323, 0xee8: 0x0326, 0xee9: 0x0017,\n\t0xeea: 0x44a9, 0xeeb: 0x44af, 0xeec: 0x45ad, 0xeed: 0x45b5, 0xeee: 0x4401, 0xeef: 0x4407,\n\t0xef0: 0x440d, 0xef1: 0x4413, 0xef2: 0x441f, 0xef3: 0x4425, 0xef4: 0x442b, 0xef5: 0x4437,\n\t0xef6: 0x443d, 0xef8: 0x4443, 0xef9: 0x444f, 0xefa: 0x4455, 0xefb: 0x445b,\n\t0xefc: 0x4467, 0xefe: 0x446d,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x4473, 0xf01: 0x4479, 0xf03: 0x447f, 0xf04: 0x4485,\n\t0xf06: 0x4491, 0xf07: 0x4497, 0xf08: 0x449d, 0xf09: 0x44a3, 0xf0a: 0x44b5, 0xf0b: 0x4431,\n\t0xf0c: 0x4419, 0xf0d: 0x4461, 0xf0e: 0x448b, 0xf0f: 0x1eaf, 0xf10: 0x038c, 0xf11: 0x038c,\n\t0xf12: 0x0395, 0xf13: 0x0395, 0xf14: 0x0395, 0xf15: 0x0395, 0xf16: 0x0398, 0xf17: 0x0398,\n\t0xf18: 0x0398, 0xf19: 0x0398, 0xf1a: 0x039e, 0xf1b: 0x039e, 0xf1c: 0x039e, 0xf1d: 0x039e,\n\t0xf1e: 0x0392, 0xf1f: 0x0392, 0xf20: 0x0392, 0xf21: 0x0392, 0xf22: 0x039b, 0xf23: 0x039b,\n\t0xf24: 0x039b, 0xf25: 0x039b, 0xf26: 0x038f, 0xf27: 0x038f, 0xf28: 0x038f, 0xf29: 0x038f,\n\t0xf2a: 0x03c2, 0xf2b: 0x03c2, 0xf2c: 0x03c2, 0xf2d: 0x03c2, 0xf2e: 0x03c5, 0xf2f: 0x03c5,\n\t0xf30: 0x03c5, 0xf31: 0x03c5, 0xf32: 0x03a4, 0xf33: 0x03a4, 0xf34: 0x03a4, 0xf35: 0x03a4,\n\t0xf36: 0x03a1, 0xf37: 0x03a1, 0xf38: 0x03a1, 0xf39: 0x03a1, 0xf3a: 0x03a7, 0xf3b: 0x03a7,\n\t0xf3c: 0x03a7, 0xf3d: 0x03a7, 0xf3e: 0x03aa, 0xf3f: 0x03aa,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x03aa, 0xf41: 0x03aa, 0xf42: 0x03b3, 0xf43: 0x03b3, 0xf44: 0x03b0, 0xf45: 0x03b0,\n\t0xf46: 0x03b6, 0xf47: 0x03b6, 0xf48: 0x03ad, 0xf49: 0x03ad, 0xf4a: 0x03bc, 0xf4b: 0x03bc,\n\t0xf4c: 0x03b9, 0xf4d: 0x03b9, 0xf4e: 0x03c8, 0xf4f: 0x03c8, 0xf50: 0x03c8, 0xf51: 0x03c8,\n\t0xf52: 0x03ce, 0xf53: 0x03ce, 0xf54: 0x03ce, 0xf55: 0x03ce, 0xf56: 0x03d4, 0xf57: 0x03d4,\n\t0xf58: 0x03d4, 0xf59: 0x03d4, 0xf5a: 0x03d1, 0xf5b: 0x03d1, 0xf5c: 0x03d1, 0xf5d: 0x03d1,\n\t0xf5e: 0x03d7, 0xf5f: 0x03d7, 0xf60: 0x03da, 0xf61: 0x03da, 0xf62: 0x03da, 0xf63: 0x03da,\n\t0xf64: 0x4527, 0xf65: 0x4527, 0xf66: 0x03e0, 0xf67: 0x03e0, 0xf68: 0x03e0, 0xf69: 0x03e0,\n\t0xf6a: 0x03dd, 0xf6b: 0x03dd, 0xf6c: 0x03dd, 0xf6d: 0x03dd, 0xf6e: 0x03fb, 0xf6f: 0x03fb,\n\t0xf70: 0x4521, 0xf71: 0x4521,\n\t// Block 0x3e, offset 0xf80\n\t0xf93: 0x03cb, 0xf94: 0x03cb, 0xf95: 0x03cb, 0xf96: 0x03cb, 0xf97: 0x03e9,\n\t0xf98: 0x03e9, 0xf99: 0x03e6, 0xf9a: 0x03e6, 0xf9b: 0x03ec, 0xf9c: 0x03ec, 0xf9d: 0x217f,\n\t0xf9e: 0x03f2, 0xf9f: 0x03f2, 0xfa0: 0x03e3, 0xfa1: 0x03e3, 0xfa2: 0x03ef, 0xfa3: 0x03ef,\n\t0xfa4: 0x03f8, 0xfa5: 0x03f8, 0xfa6: 0x03f8, 0xfa7: 0x03f8, 0xfa8: 0x0380, 0xfa9: 0x0380,\n\t0xfaa: 0x26da, 0xfab: 0x26da, 0xfac: 0x274a, 0xfad: 0x274a, 0xfae: 0x2719, 0xfaf: 0x2719,\n\t0xfb0: 0x2735, 0xfb1: 0x2735, 0xfb2: 0x272e, 0xfb3: 0x272e, 0xfb4: 0x273c, 0xfb5: 0x273c,\n\t0xfb6: 0x2743, 0xfb7: 0x2743, 0xfb8: 0x2743, 0xfb9: 0x2720, 0xfba: 0x2720, 0xfbb: 0x2720,\n\t0xfbc: 0x03f5, 0xfbd: 0x03f5, 0xfbe: 0x03f5, 0xfbf: 0x03f5,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x26e1, 0xfc1: 0x26e8, 0xfc2: 0x2704, 0xfc3: 0x2720, 0xfc4: 0x2727, 0xfc5: 0x1eb9,\n\t0xfc6: 0x1ebe, 0xfc7: 0x1ec3, 0xfc8: 0x1ed2, 0xfc9: 0x1ee1, 0xfca: 0x1ee6, 0xfcb: 0x1eeb,\n\t0xfcc: 0x1ef0, 0xfcd: 0x1ef5, 0xfce: 0x1f04, 0xfcf: 0x1f13, 0xfd0: 0x1f18, 0xfd1: 0x1f1d,\n\t0xfd2: 0x1f2c, 0xfd3: 0x1f3b, 0xfd4: 0x1f40, 0xfd5: 0x1f45, 0xfd6: 0x1f4a, 0xfd7: 0x1f59,\n\t0xfd8: 0x1f5e, 0xfd9: 0x1f6d, 0xfda: 0x1f72, 0xfdb: 0x1f77, 0xfdc: 0x1f86, 0xfdd: 0x1f8b,\n\t0xfde: 0x1f90, 0xfdf: 0x1f9a, 0xfe0: 0x1fd6, 0xfe1: 0x1fe5, 0xfe2: 0x1ff4, 0xfe3: 0x1ff9,\n\t0xfe4: 0x1ffe, 0xfe5: 0x2008, 0xfe6: 0x2017, 0xfe7: 0x201c, 0xfe8: 0x202b, 0xfe9: 0x2030,\n\t0xfea: 0x2035, 0xfeb: 0x2044, 0xfec: 0x2049, 0xfed: 0x2058, 0xfee: 0x205d, 0xfef: 0x2062,\n\t0xff0: 0x2067, 0xff1: 0x206c, 0xff2: 0x2071, 0xff3: 0x2076, 0xff4: 0x207b, 0xff5: 0x2080,\n\t0xff6: 0x2085, 0xff7: 0x208a, 0xff8: 0x208f, 0xff9: 0x2094, 0xffa: 0x2099, 0xffb: 0x209e,\n\t0xffc: 0x20a3, 0xffd: 0x20a8, 0xffe: 0x20ad, 0xfff: 0x20b7,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x20bc, 0x1001: 0x20c1, 0x1002: 0x20c6, 0x1003: 0x20d0, 0x1004: 0x20d5, 0x1005: 0x20df,\n\t0x1006: 0x20e4, 0x1007: 0x20e9, 0x1008: 0x20ee, 0x1009: 0x20f3, 0x100a: 0x20f8, 0x100b: 0x20fd,\n\t0x100c: 0x2102, 0x100d: 0x2107, 0x100e: 0x2116, 0x100f: 0x2125, 0x1010: 0x212a, 0x1011: 0x212f,\n\t0x1012: 0x2134, 0x1013: 0x2139, 0x1014: 0x213e, 0x1015: 0x2148, 0x1016: 0x214d, 0x1017: 0x2152,\n\t0x1018: 0x2161, 0x1019: 0x2170, 0x101a: 0x2175, 0x101b: 0x44d9, 0x101c: 0x44df, 0x101d: 0x4515,\n\t0x101e: 0x456c, 0x101f: 0x4573, 0x1020: 0x457a, 0x1021: 0x4581, 0x1022: 0x4588, 0x1023: 0x458f,\n\t0x1024: 0x26f6, 0x1025: 0x26fd, 0x1026: 0x2704, 0x1027: 0x270b, 0x1028: 0x2720, 0x1029: 0x2727,\n\t0x102a: 0x1ec8, 0x102b: 0x1ecd, 0x102c: 0x1ed2, 0x102d: 0x1ed7, 0x102e: 0x1ee1, 0x102f: 0x1ee6,\n\t0x1030: 0x1efa, 0x1031: 0x1eff, 0x1032: 0x1f04, 0x1033: 0x1f09, 0x1034: 0x1f13, 0x1035: 0x1f18,\n\t0x1036: 0x1f22, 0x1037: 0x1f27, 0x1038: 0x1f2c, 0x1039: 0x1f31, 0x103a: 0x1f3b, 0x103b: 0x1f40,\n\t0x103c: 0x206c, 0x103d: 0x2071, 0x103e: 0x2080, 0x103f: 0x2085,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x208a, 0x1041: 0x209e, 0x1042: 0x20a3, 0x1043: 0x20a8, 0x1044: 0x20ad, 0x1045: 0x20c6,\n\t0x1046: 0x20d0, 0x1047: 0x20d5, 0x1048: 0x20da, 0x1049: 0x20ee, 0x104a: 0x210c, 0x104b: 0x2111,\n\t0x104c: 0x2116, 0x104d: 0x211b, 0x104e: 0x2125, 0x104f: 0x212a, 0x1050: 0x4515, 0x1051: 0x2157,\n\t0x1052: 0x215c, 0x1053: 0x2161, 0x1054: 0x2166, 0x1055: 0x2170, 0x1056: 0x2175, 0x1057: 0x26e1,\n\t0x1058: 0x26e8, 0x1059: 0x26ef, 0x105a: 0x2704, 0x105b: 0x2712, 0x105c: 0x1eb9, 0x105d: 0x1ebe,\n\t0x105e: 0x1ec3, 0x105f: 0x1ed2, 0x1060: 0x1edc, 0x1061: 0x1eeb, 0x1062: 0x1ef0, 0x1063: 0x1ef5,\n\t0x1064: 0x1f04, 0x1065: 0x1f0e, 0x1066: 0x1f2c, 0x1067: 0x1f45, 0x1068: 0x1f4a, 0x1069: 0x1f59,\n\t0x106a: 0x1f5e, 0x106b: 0x1f6d, 0x106c: 0x1f77, 0x106d: 0x1f86, 0x106e: 0x1f8b, 0x106f: 0x1f90,\n\t0x1070: 0x1f9a, 0x1071: 0x1fd6, 0x1072: 0x1fdb, 0x1073: 0x1fe5, 0x1074: 0x1ff4, 0x1075: 0x1ff9,\n\t0x1076: 0x1ffe, 0x1077: 0x2008, 0x1078: 0x2017, 0x1079: 0x202b, 0x107a: 0x2030, 0x107b: 0x2035,\n\t0x107c: 0x2044, 0x107d: 0x2049, 0x107e: 0x2058, 0x107f: 0x205d,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x2062, 0x1081: 0x2067, 0x1082: 0x2076, 0x1083: 0x207b, 0x1084: 0x208f, 0x1085: 0x2094,\n\t0x1086: 0x2099, 0x1087: 0x209e, 0x1088: 0x20a3, 0x1089: 0x20b7, 0x108a: 0x20bc, 0x108b: 0x20c1,\n\t0x108c: 0x20c6, 0x108d: 0x20cb, 0x108e: 0x20df, 0x108f: 0x20e4, 0x1090: 0x20e9, 0x1091: 0x20ee,\n\t0x1092: 0x20fd, 0x1093: 0x2102, 0x1094: 0x2107, 0x1095: 0x2116, 0x1096: 0x2120, 0x1097: 0x212f,\n\t0x1098: 0x2134, 0x1099: 0x4509, 0x109a: 0x2148, 0x109b: 0x214d, 0x109c: 0x2152, 0x109d: 0x2161,\n\t0x109e: 0x216b, 0x109f: 0x2704, 0x10a0: 0x2712, 0x10a1: 0x1ed2, 0x10a2: 0x1edc, 0x10a3: 0x1f04,\n\t0x10a4: 0x1f0e, 0x10a5: 0x1f2c, 0x10a6: 0x1f36, 0x10a7: 0x1f9a, 0x10a8: 0x1f9f, 0x10a9: 0x1fc2,\n\t0x10aa: 0x1fc7, 0x10ab: 0x209e, 0x10ac: 0x20a3, 0x10ad: 0x20c6, 0x10ae: 0x2116, 0x10af: 0x2120,\n\t0x10b0: 0x2161, 0x10b1: 0x216b, 0x10b2: 0x45bd, 0x10b3: 0x45c5, 0x10b4: 0x45cd, 0x10b5: 0x2021,\n\t0x10b6: 0x2026, 0x10b7: 0x203a, 0x10b8: 0x203f, 0x10b9: 0x204e, 0x10ba: 0x2053, 0x10bb: 0x1fa4,\n\t0x10bc: 0x1fa9, 0x10bd: 0x1fcc, 0x10be: 0x1fd1, 0x10bf: 0x1f63,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x1f68, 0x10c1: 0x1f4f, 0x10c2: 0x1f54, 0x10c3: 0x1f7c, 0x10c4: 0x1f81, 0x10c5: 0x1fea,\n\t0x10c6: 0x1fef, 0x10c7: 0x200d, 0x10c8: 0x2012, 0x10c9: 0x1fae, 0x10ca: 0x1fb3, 0x10cb: 0x1fb8,\n\t0x10cc: 0x1fc2, 0x10cd: 0x1fbd, 0x10ce: 0x1f95, 0x10cf: 0x1fe0, 0x10d0: 0x2003, 0x10d1: 0x2021,\n\t0x10d2: 0x2026, 0x10d3: 0x203a, 0x10d4: 0x203f, 0x10d5: 0x204e, 0x10d6: 0x2053, 0x10d7: 0x1fa4,\n\t0x10d8: 0x1fa9, 0x10d9: 0x1fcc, 0x10da: 0x1fd1, 0x10db: 0x1f63, 0x10dc: 0x1f68, 0x10dd: 0x1f4f,\n\t0x10de: 0x1f54, 0x10df: 0x1f7c, 0x10e0: 0x1f81, 0x10e1: 0x1fea, 0x10e2: 0x1fef, 0x10e3: 0x200d,\n\t0x10e4: 0x2012, 0x10e5: 0x1fae, 0x10e6: 0x1fb3, 0x10e7: 0x1fb8, 0x10e8: 0x1fc2, 0x10e9: 0x1fbd,\n\t0x10ea: 0x1f95, 0x10eb: 0x1fe0, 0x10ec: 0x2003, 0x10ed: 0x1fae, 0x10ee: 0x1fb3, 0x10ef: 0x1fb8,\n\t0x10f0: 0x1fc2, 0x10f1: 0x1f9f, 0x10f2: 0x1fc7, 0x10f3: 0x201c, 0x10f4: 0x1f86, 0x10f5: 0x1f8b,\n\t0x10f6: 0x1f90, 0x10f7: 0x1fae, 0x10f8: 0x1fb3, 0x10f9: 0x1fb8, 0x10fa: 0x201c, 0x10fb: 0x202b,\n\t0x10fc: 0x44c1, 0x10fd: 0x44c1,\n\t// Block 0x44, offset 0x1100\n\t0x1110: 0x2441, 0x1111: 0x2456,\n\t0x1112: 0x2456, 0x1113: 0x245d, 0x1114: 0x2464, 0x1115: 0x2479, 0x1116: 0x2480, 0x1117: 0x2487,\n\t0x1118: 0x24aa, 0x1119: 0x24aa, 0x111a: 0x24cd, 0x111b: 0x24c6, 0x111c: 0x24e2, 0x111d: 0x24d4,\n\t0x111e: 0x24db, 0x111f: 0x24fe, 0x1120: 0x24fe, 0x1121: 0x24f7, 0x1122: 0x2505, 0x1123: 0x2505,\n\t0x1124: 0x252f, 0x1125: 0x252f, 0x1126: 0x254b, 0x1127: 0x2513, 0x1128: 0x2513, 0x1129: 0x250c,\n\t0x112a: 0x2521, 0x112b: 0x2521, 0x112c: 0x2528, 0x112d: 0x2528, 0x112e: 0x2552, 0x112f: 0x2560,\n\t0x1130: 0x2560, 0x1131: 0x2567, 0x1132: 0x2567, 0x1133: 0x256e, 0x1134: 0x2575, 0x1135: 0x257c,\n\t0x1136: 0x2583, 0x1137: 0x2583, 0x1138: 0x258a, 0x1139: 0x2598, 0x113a: 0x25a6, 0x113b: 0x259f,\n\t0x113c: 0x25ad, 0x113d: 0x25ad, 0x113e: 0x25c2, 0x113f: 0x25c9,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0x25fa, 0x1141: 0x2608, 0x1142: 0x2601, 0x1143: 0x25e5, 0x1144: 0x25e5, 0x1145: 0x260f,\n\t0x1146: 0x260f, 0x1147: 0x2616, 0x1148: 0x2616, 0x1149: 0x2640, 0x114a: 0x2647, 0x114b: 0x264e,\n\t0x114c: 0x2624, 0x114d: 0x2632, 0x114e: 0x2655, 0x114f: 0x265c,\n\t0x1152: 0x262b, 0x1153: 0x26b0, 0x1154: 0x26b7, 0x1155: 0x268d, 0x1156: 0x2694, 0x1157: 0x2678,\n\t0x1158: 0x2678, 0x1159: 0x267f, 0x115a: 0x26a9, 0x115b: 0x26a2, 0x115c: 0x26cc, 0x115d: 0x26cc,\n\t0x115e: 0x243a, 0x115f: 0x244f, 0x1160: 0x2448, 0x1161: 0x2472, 0x1162: 0x246b, 0x1163: 0x2495,\n\t0x1164: 0x248e, 0x1165: 0x24b8, 0x1166: 0x249c, 0x1167: 0x24b1, 0x1168: 0x24e9, 0x1169: 0x2536,\n\t0x116a: 0x251a, 0x116b: 0x2559, 0x116c: 0x25f3, 0x116d: 0x261d, 0x116e: 0x26c5, 0x116f: 0x26be,\n\t0x1170: 0x26d3, 0x1171: 0x266a, 0x1172: 0x25d0, 0x1173: 0x269b, 0x1174: 0x25c2, 0x1175: 0x25fa,\n\t0x1176: 0x2591, 0x1177: 0x25de, 0x1178: 0x2671, 0x1179: 0x2663, 0x117a: 0x25ec, 0x117b: 0x25d7,\n\t0x117c: 0x25ec, 0x117d: 0x2671, 0x117e: 0x24a3, 0x117f: 0x24bf,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x2639, 0x1181: 0x25b4, 0x1182: 0x2433, 0x1183: 0x25d7, 0x1184: 0x257c, 0x1185: 0x254b,\n\t0x1186: 0x24f0, 0x1187: 0x2686,\n\t0x11b0: 0x2544, 0x11b1: 0x25bb, 0x11b2: 0x28f6, 0x11b3: 0x28ed, 0x11b4: 0x2923, 0x11b5: 0x2911,\n\t0x11b6: 0x28ff, 0x11b7: 0x291a, 0x11b8: 0x292c, 0x11b9: 0x253d, 0x11ba: 0x2db3, 0x11bb: 0x2c33,\n\t0x11bc: 0x2908,\n\t// Block 0x47, offset 0x11c0\n\t0x11d0: 0x0019, 0x11d1: 0x057e,\n\t0x11d2: 0x0582, 0x11d3: 0x0035, 0x11d4: 0x0037, 0x11d5: 0x0003, 0x11d6: 0x003f, 0x11d7: 0x05ba,\n\t0x11d8: 0x05be, 0x11d9: 0x1c8c,\n\t0x11e0: 0x8133, 0x11e1: 0x8133, 0x11e2: 0x8133, 0x11e3: 0x8133,\n\t0x11e4: 0x8133, 0x11e5: 0x8133, 0x11e6: 0x8133, 0x11e7: 0x812e, 0x11e8: 0x812e, 0x11e9: 0x812e,\n\t0x11ea: 0x812e, 0x11eb: 0x812e, 0x11ec: 0x812e, 0x11ed: 0x812e, 0x11ee: 0x8133, 0x11ef: 0x8133,\n\t0x11f0: 0x19a0, 0x11f1: 0x053a, 0x11f2: 0x0536, 0x11f3: 0x007f, 0x11f4: 0x007f, 0x11f5: 0x0011,\n\t0x11f6: 0x0013, 0x11f7: 0x00b7, 0x11f8: 0x00bb, 0x11f9: 0x05b2, 0x11fa: 0x05b6, 0x11fb: 0x05a6,\n\t0x11fc: 0x05aa, 0x11fd: 0x058e, 0x11fe: 0x0592, 0x11ff: 0x0586,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x058a, 0x1201: 0x0596, 0x1202: 0x059a, 0x1203: 0x059e, 0x1204: 0x05a2,\n\t0x1207: 0x0077, 0x1208: 0x007b, 0x1209: 0x4322, 0x120a: 0x4322, 0x120b: 0x4322,\n\t0x120c: 0x4322, 0x120d: 0x007f, 0x120e: 0x007f, 0x120f: 0x007f, 0x1210: 0x0019, 0x1211: 0x057e,\n\t0x1212: 0x001d, 0x1214: 0x0037, 0x1215: 0x0035, 0x1216: 0x003f, 0x1217: 0x0003,\n\t0x1218: 0x053a, 0x1219: 0x0011, 0x121a: 0x0013, 0x121b: 0x00b7, 0x121c: 0x00bb, 0x121d: 0x05b2,\n\t0x121e: 0x05b6, 0x121f: 0x0007, 0x1220: 0x000d, 0x1221: 0x0015, 0x1222: 0x0017, 0x1223: 0x001b,\n\t0x1224: 0x0039, 0x1225: 0x003d, 0x1226: 0x003b, 0x1228: 0x0079, 0x1229: 0x0009,\n\t0x122a: 0x000b, 0x122b: 0x0041,\n\t0x1230: 0x4363, 0x1231: 0x44e5, 0x1232: 0x4368, 0x1234: 0x436d,\n\t0x1236: 0x4372, 0x1237: 0x44eb, 0x1238: 0x4377, 0x1239: 0x44f1, 0x123a: 0x437c, 0x123b: 0x44f7,\n\t0x123c: 0x4381, 0x123d: 0x44fd, 0x123e: 0x4386, 0x123f: 0x4503,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x0329, 0x1241: 0x44c7, 0x1242: 0x44c7, 0x1243: 0x44cd, 0x1244: 0x44cd, 0x1245: 0x450f,\n\t0x1246: 0x450f, 0x1247: 0x44d3, 0x1248: 0x44d3, 0x1249: 0x451b, 0x124a: 0x451b, 0x124b: 0x451b,\n\t0x124c: 0x451b, 0x124d: 0x032c, 0x124e: 0x032c, 0x124f: 0x032f, 0x1250: 0x032f, 0x1251: 0x032f,\n\t0x1252: 0x032f, 0x1253: 0x0332, 0x1254: 0x0332, 0x1255: 0x0335, 0x1256: 0x0335, 0x1257: 0x0335,\n\t0x1258: 0x0335, 0x1259: 0x0338, 0x125a: 0x0338, 0x125b: 0x0338, 0x125c: 0x0338, 0x125d: 0x033b,\n\t0x125e: 0x033b, 0x125f: 0x033b, 0x1260: 0x033b, 0x1261: 0x033e, 0x1262: 0x033e, 0x1263: 0x033e,\n\t0x1264: 0x033e, 0x1265: 0x0341, 0x1266: 0x0341, 0x1267: 0x0341, 0x1268: 0x0341, 0x1269: 0x0344,\n\t0x126a: 0x0344, 0x126b: 0x0347, 0x126c: 0x0347, 0x126d: 0x034a, 0x126e: 0x034a, 0x126f: 0x034d,\n\t0x1270: 0x034d, 0x1271: 0x0350, 0x1272: 0x0350, 0x1273: 0x0350, 0x1274: 0x0350, 0x1275: 0x0353,\n\t0x1276: 0x0353, 0x1277: 0x0353, 0x1278: 0x0353, 0x1279: 0x0356, 0x127a: 0x0356, 0x127b: 0x0356,\n\t0x127c: 0x0356, 0x127d: 0x0359, 0x127e: 0x0359, 0x127f: 0x0359,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x0359, 0x1281: 0x035c, 0x1282: 0x035c, 0x1283: 0x035c, 0x1284: 0x035c, 0x1285: 0x035f,\n\t0x1286: 0x035f, 0x1287: 0x035f, 0x1288: 0x035f, 0x1289: 0x0362, 0x128a: 0x0362, 0x128b: 0x0362,\n\t0x128c: 0x0362, 0x128d: 0x0365, 0x128e: 0x0365, 0x128f: 0x0365, 0x1290: 0x0365, 0x1291: 0x0368,\n\t0x1292: 0x0368, 0x1293: 0x0368, 0x1294: 0x0368, 0x1295: 0x036b, 0x1296: 0x036b, 0x1297: 0x036b,\n\t0x1298: 0x036b, 0x1299: 0x036e, 0x129a: 0x036e, 0x129b: 0x036e, 0x129c: 0x036e, 0x129d: 0x0371,\n\t0x129e: 0x0371, 0x129f: 0x0371, 0x12a0: 0x0371, 0x12a1: 0x0374, 0x12a2: 0x0374, 0x12a3: 0x0374,\n\t0x12a4: 0x0374, 0x12a5: 0x0377, 0x12a6: 0x0377, 0x12a7: 0x0377, 0x12a8: 0x0377, 0x12a9: 0x037a,\n\t0x12aa: 0x037a, 0x12ab: 0x037a, 0x12ac: 0x037a, 0x12ad: 0x037d, 0x12ae: 0x037d, 0x12af: 0x0380,\n\t0x12b0: 0x0380, 0x12b1: 0x0383, 0x12b2: 0x0383, 0x12b3: 0x0383, 0x12b4: 0x0383, 0x12b5: 0x2de7,\n\t0x12b6: 0x2de7, 0x12b7: 0x2def, 0x12b8: 0x2def, 0x12b9: 0x2df7, 0x12ba: 0x2df7, 0x12bb: 0x20b2,\n\t0x12bc: 0x20b2,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x0081, 0x12c1: 0x0083, 0x12c2: 0x0085, 0x12c3: 0x0087, 0x12c4: 0x0089, 0x12c5: 0x008b,\n\t0x12c6: 0x008d, 0x12c7: 0x008f, 0x12c8: 0x0091, 0x12c9: 0x0093, 0x12ca: 0x0095, 0x12cb: 0x0097,\n\t0x12cc: 0x0099, 0x12cd: 0x009b, 0x12ce: 0x009d, 0x12cf: 0x009f, 0x12d0: 0x00a1, 0x12d1: 0x00a3,\n\t0x12d2: 0x00a5, 0x12d3: 0x00a7, 0x12d4: 0x00a9, 0x12d5: 0x00ab, 0x12d6: 0x00ad, 0x12d7: 0x00af,\n\t0x12d8: 0x00b1, 0x12d9: 0x00b3, 0x12da: 0x00b5, 0x12db: 0x00b7, 0x12dc: 0x00b9, 0x12dd: 0x00bb,\n\t0x12de: 0x00bd, 0x12df: 0x056e, 0x12e0: 0x0572, 0x12e1: 0x0582, 0x12e2: 0x0596, 0x12e3: 0x059a,\n\t0x12e4: 0x057e, 0x12e5: 0x06a6, 0x12e6: 0x069e, 0x12e7: 0x05c2, 0x12e8: 0x05ca, 0x12e9: 0x05d2,\n\t0x12ea: 0x05da, 0x12eb: 0x05e2, 0x12ec: 0x0666, 0x12ed: 0x066e, 0x12ee: 0x0676, 0x12ef: 0x061a,\n\t0x12f0: 0x06aa, 0x12f1: 0x05c6, 0x12f2: 0x05ce, 0x12f3: 0x05d6, 0x12f4: 0x05de, 0x12f5: 0x05e6,\n\t0x12f6: 0x05ea, 0x12f7: 0x05ee, 0x12f8: 0x05f2, 0x12f9: 0x05f6, 0x12fa: 0x05fa, 0x12fb: 0x05fe,\n\t0x12fc: 0x0602, 0x12fd: 0x0606, 0x12fe: 0x060a, 0x12ff: 0x060e,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x0612, 0x1301: 0x0616, 0x1302: 0x061e, 0x1303: 0x0622, 0x1304: 0x0626, 0x1305: 0x062a,\n\t0x1306: 0x062e, 0x1307: 0x0632, 0x1308: 0x0636, 0x1309: 0x063a, 0x130a: 0x063e, 0x130b: 0x0642,\n\t0x130c: 0x0646, 0x130d: 0x064a, 0x130e: 0x064e, 0x130f: 0x0652, 0x1310: 0x0656, 0x1311: 0x065a,\n\t0x1312: 0x065e, 0x1313: 0x0662, 0x1314: 0x066a, 0x1315: 0x0672, 0x1316: 0x067a, 0x1317: 0x067e,\n\t0x1318: 0x0682, 0x1319: 0x0686, 0x131a: 0x068a, 0x131b: 0x068e, 0x131c: 0x0692, 0x131d: 0x06a2,\n\t0x131e: 0x4bb9, 0x131f: 0x4bbf, 0x1320: 0x04b6, 0x1321: 0x0406, 0x1322: 0x040a, 0x1323: 0x4b7c,\n\t0x1324: 0x040e, 0x1325: 0x4b82, 0x1326: 0x4b88, 0x1327: 0x0412, 0x1328: 0x0416, 0x1329: 0x041a,\n\t0x132a: 0x4b8e, 0x132b: 0x4b94, 0x132c: 0x4b9a, 0x132d: 0x4ba0, 0x132e: 0x4ba6, 0x132f: 0x4bac,\n\t0x1330: 0x045a, 0x1331: 0x041e, 0x1332: 0x0422, 0x1333: 0x0426, 0x1334: 0x046e, 0x1335: 0x042a,\n\t0x1336: 0x042e, 0x1337: 0x0432, 0x1338: 0x0436, 0x1339: 0x043a, 0x133a: 0x043e, 0x133b: 0x0442,\n\t0x133c: 0x0446, 0x133d: 0x044a, 0x133e: 0x044e,\n\t// Block 0x4d, offset 0x1340\n\t0x1342: 0x4afe, 0x1343: 0x4b04, 0x1344: 0x4b0a, 0x1345: 0x4b10,\n\t0x1346: 0x4b16, 0x1347: 0x4b1c, 0x134a: 0x4b22, 0x134b: 0x4b28,\n\t0x134c: 0x4b2e, 0x134d: 0x4b34, 0x134e: 0x4b3a, 0x134f: 0x4b40,\n\t0x1352: 0x4b46, 0x1353: 0x4b4c, 0x1354: 0x4b52, 0x1355: 0x4b58, 0x1356: 0x4b5e, 0x1357: 0x4b64,\n\t0x135a: 0x4b6a, 0x135b: 0x4b70, 0x135c: 0x4b76,\n\t0x1360: 0x00bf, 0x1361: 0x00c2, 0x1362: 0x00cb, 0x1363: 0x431d,\n\t0x1364: 0x00c8, 0x1365: 0x00c5, 0x1366: 0x053e, 0x1368: 0x0562, 0x1369: 0x0542,\n\t0x136a: 0x0546, 0x136b: 0x054a, 0x136c: 0x054e, 0x136d: 0x0566, 0x136e: 0x056a,\n\t// Block 0x4e, offset 0x1380\n\t0x1381: 0x01f1, 0x1382: 0x01f4, 0x1383: 0x00d4, 0x1384: 0x01be, 0x1385: 0x010d,\n\t0x1387: 0x01d3, 0x1388: 0x174e, 0x1389: 0x01d9, 0x138a: 0x01d6, 0x138b: 0x0116,\n\t0x138c: 0x0119, 0x138d: 0x0526, 0x138e: 0x011c, 0x138f: 0x0128, 0x1390: 0x01e5, 0x1391: 0x013a,\n\t0x1392: 0x0134, 0x1393: 0x012e, 0x1394: 0x01c1, 0x1395: 0x00e0, 0x1396: 0x01c4, 0x1397: 0x0143,\n\t0x1398: 0x0194, 0x1399: 0x01e8, 0x139a: 0x01eb, 0x139b: 0x0152, 0x139c: 0x1756, 0x139d: 0x1742,\n\t0x139e: 0x0158, 0x139f: 0x175b, 0x13a0: 0x01a9, 0x13a1: 0x1760, 0x13a2: 0x00da, 0x13a3: 0x0170,\n\t0x13a4: 0x0173, 0x13a5: 0x00a3, 0x13a6: 0x017c, 0x13a7: 0x1765, 0x13a8: 0x0182, 0x13a9: 0x0185,\n\t0x13aa: 0x0188, 0x13ab: 0x01e2, 0x13ac: 0x01dc, 0x13ad: 0x1752, 0x13ae: 0x01df, 0x13af: 0x0197,\n\t0x13b0: 0x0576, 0x13b2: 0x01ac, 0x13b3: 0x01cd, 0x13b4: 0x01d0, 0x13b5: 0x01bb,\n\t0x13b6: 0x00f5, 0x13b7: 0x00f8, 0x13b8: 0x00fb, 0x13b9: 0x176a, 0x13ba: 0x176f,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x0063, 0x13c1: 0x0065, 0x13c2: 0x0067, 0x13c3: 0x0069, 0x13c4: 0x006b, 0x13c5: 0x006d,\n\t0x13c6: 0x006f, 0x13c7: 0x0071, 0x13c8: 0x0073, 0x13c9: 0x0075, 0x13ca: 0x0083, 0x13cb: 0x0085,\n\t0x13cc: 0x0087, 0x13cd: 0x0089, 0x13ce: 0x008b, 0x13cf: 0x008d, 0x13d0: 0x008f, 0x13d1: 0x0091,\n\t0x13d2: 0x0093, 0x13d3: 0x0095, 0x13d4: 0x0097, 0x13d5: 0x0099, 0x13d6: 0x009b, 0x13d7: 0x009d,\n\t0x13d8: 0x009f, 0x13d9: 0x00a1, 0x13da: 0x00a3, 0x13db: 0x00a5, 0x13dc: 0x00a7, 0x13dd: 0x00a9,\n\t0x13de: 0x00ab, 0x13df: 0x00ad, 0x13e0: 0x00af, 0x13e1: 0x00b1, 0x13e2: 0x00b3, 0x13e3: 0x00b5,\n\t0x13e4: 0x00e3, 0x13e5: 0x0101, 0x13e8: 0x01f7, 0x13e9: 0x01fa,\n\t0x13ea: 0x01fd, 0x13eb: 0x0200, 0x13ec: 0x0203, 0x13ed: 0x0206, 0x13ee: 0x0209, 0x13ef: 0x020c,\n\t0x13f0: 0x020f, 0x13f1: 0x0212, 0x13f2: 0x0215, 0x13f3: 0x0218, 0x13f4: 0x021b, 0x13f5: 0x021e,\n\t0x13f6: 0x0221, 0x13f7: 0x0224, 0x13f8: 0x0227, 0x13f9: 0x020c, 0x13fa: 0x022a, 0x13fb: 0x022d,\n\t0x13fc: 0x0230, 0x13fd: 0x0233, 0x13fe: 0x0236, 0x13ff: 0x0239,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x0281, 0x1401: 0x0284, 0x1402: 0x0287, 0x1403: 0x0552, 0x1404: 0x024b, 0x1405: 0x0254,\n\t0x1406: 0x025a, 0x1407: 0x027e, 0x1408: 0x026f, 0x1409: 0x026c, 0x140a: 0x028a, 0x140b: 0x028d,\n\t0x140e: 0x0021, 0x140f: 0x0023, 0x1410: 0x0025, 0x1411: 0x0027,\n\t0x1412: 0x0029, 0x1413: 0x002b, 0x1414: 0x002d, 0x1415: 0x002f, 0x1416: 0x0031, 0x1417: 0x0033,\n\t0x1418: 0x0021, 0x1419: 0x0023, 0x141a: 0x0025, 0x141b: 0x0027, 0x141c: 0x0029, 0x141d: 0x002b,\n\t0x141e: 0x002d, 0x141f: 0x002f, 0x1420: 0x0031, 0x1421: 0x0033, 0x1422: 0x0021, 0x1423: 0x0023,\n\t0x1424: 0x0025, 0x1425: 0x0027, 0x1426: 0x0029, 0x1427: 0x002b, 0x1428: 0x002d, 0x1429: 0x002f,\n\t0x142a: 0x0031, 0x142b: 0x0033, 0x142c: 0x0021, 0x142d: 0x0023, 0x142e: 0x0025, 0x142f: 0x0027,\n\t0x1430: 0x0029, 0x1431: 0x002b, 0x1432: 0x002d, 0x1433: 0x002f, 0x1434: 0x0031, 0x1435: 0x0033,\n\t0x1436: 0x0021, 0x1437: 0x0023, 0x1438: 0x0025, 0x1439: 0x0027, 0x143a: 0x0029, 0x143b: 0x002b,\n\t0x143c: 0x002d, 0x143d: 0x002f, 0x143e: 0x0031, 0x143f: 0x0033,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x8133, 0x1441: 0x8133, 0x1442: 0x8133, 0x1443: 0x8133, 0x1444: 0x8133, 0x1445: 0x8133,\n\t0x1446: 0x8133, 0x1448: 0x8133, 0x1449: 0x8133, 0x144a: 0x8133, 0x144b: 0x8133,\n\t0x144c: 0x8133, 0x144d: 0x8133, 0x144e: 0x8133, 0x144f: 0x8133, 0x1450: 0x8133, 0x1451: 0x8133,\n\t0x1452: 0x8133, 0x1453: 0x8133, 0x1454: 0x8133, 0x1455: 0x8133, 0x1456: 0x8133, 0x1457: 0x8133,\n\t0x1458: 0x8133, 0x145b: 0x8133, 0x145c: 0x8133, 0x145d: 0x8133,\n\t0x145e: 0x8133, 0x145f: 0x8133, 0x1460: 0x8133, 0x1461: 0x8133, 0x1463: 0x8133,\n\t0x1464: 0x8133, 0x1466: 0x8133, 0x1467: 0x8133, 0x1468: 0x8133, 0x1469: 0x8133,\n\t0x146a: 0x8133,\n\t0x1470: 0x0290, 0x1471: 0x0293, 0x1472: 0x0296, 0x1473: 0x0299, 0x1474: 0x029c, 0x1475: 0x029f,\n\t0x1476: 0x02a2, 0x1477: 0x02a5, 0x1478: 0x02a8, 0x1479: 0x02ab, 0x147a: 0x02ae, 0x147b: 0x02b1,\n\t0x147c: 0x02b7, 0x147d: 0x02ba, 0x147e: 0x02bd, 0x147f: 0x02c0,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x02c3, 0x1481: 0x02c6, 0x1482: 0x02c9, 0x1483: 0x02cc, 0x1484: 0x02cf, 0x1485: 0x02d2,\n\t0x1486: 0x02d5, 0x1487: 0x02db, 0x1488: 0x02e1, 0x1489: 0x02e4, 0x148a: 0x1736, 0x148b: 0x0302,\n\t0x148c: 0x02ea, 0x148d: 0x02ed, 0x148e: 0x0305, 0x148f: 0x02f9, 0x1490: 0x02ff, 0x1491: 0x0290,\n\t0x1492: 0x0293, 0x1493: 0x0296, 0x1494: 0x0299, 0x1495: 0x029c, 0x1496: 0x029f, 0x1497: 0x02a2,\n\t0x1498: 0x02a5, 0x1499: 0x02a8, 0x149a: 0x02ab, 0x149b: 0x02ae, 0x149c: 0x02b7, 0x149d: 0x02ba,\n\t0x149e: 0x02c0, 0x149f: 0x02c6, 0x14a0: 0x02c9, 0x14a1: 0x02cc, 0x14a2: 0x02cf, 0x14a3: 0x02d2,\n\t0x14a4: 0x02d5, 0x14a5: 0x02d8, 0x14a6: 0x02db, 0x14a7: 0x02f3, 0x14a8: 0x02ea, 0x14a9: 0x02e7,\n\t0x14aa: 0x02f0, 0x14ab: 0x02f6, 0x14ac: 0x1732, 0x14ad: 0x02fc,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x032c, 0x14c1: 0x032f, 0x14c2: 0x033b, 0x14c3: 0x0344, 0x14c5: 0x037d,\n\t0x14c6: 0x034d, 0x14c7: 0x033e, 0x14c8: 0x035c, 0x14c9: 0x0383, 0x14ca: 0x036e, 0x14cb: 0x0371,\n\t0x14cc: 0x0374, 0x14cd: 0x0377, 0x14ce: 0x0350, 0x14cf: 0x0362, 0x14d0: 0x0368, 0x14d1: 0x0356,\n\t0x14d2: 0x036b, 0x14d3: 0x034a, 0x14d4: 0x0353, 0x14d5: 0x0335, 0x14d6: 0x0338, 0x14d7: 0x0341,\n\t0x14d8: 0x0347, 0x14d9: 0x0359, 0x14da: 0x035f, 0x14db: 0x0365, 0x14dc: 0x0386, 0x14dd: 0x03d7,\n\t0x14de: 0x03bf, 0x14df: 0x0389, 0x14e1: 0x032f, 0x14e2: 0x033b,\n\t0x14e4: 0x037a, 0x14e7: 0x033e, 0x14e9: 0x0383,\n\t0x14ea: 0x036e, 0x14eb: 0x0371, 0x14ec: 0x0374, 0x14ed: 0x0377, 0x14ee: 0x0350, 0x14ef: 0x0362,\n\t0x14f0: 0x0368, 0x14f1: 0x0356, 0x14f2: 0x036b, 0x14f4: 0x0353, 0x14f5: 0x0335,\n\t0x14f6: 0x0338, 0x14f7: 0x0341, 0x14f9: 0x0359, 0x14fb: 0x0365,\n\t// Block 0x54, offset 0x1500\n\t0x1502: 0x033b,\n\t0x1507: 0x033e, 0x1509: 0x0383, 0x150b: 0x0371,\n\t0x150d: 0x0377, 0x150e: 0x0350, 0x150f: 0x0362, 0x1511: 0x0356,\n\t0x1512: 0x036b, 0x1514: 0x0353, 0x1517: 0x0341,\n\t0x1519: 0x0359, 0x151b: 0x0365, 0x151d: 0x03d7,\n\t0x151f: 0x0389, 0x1521: 0x032f, 0x1522: 0x033b,\n\t0x1524: 0x037a, 0x1527: 0x033e, 0x1528: 0x035c, 0x1529: 0x0383,\n\t0x152a: 0x036e, 0x152c: 0x0374, 0x152d: 0x0377, 0x152e: 0x0350, 0x152f: 0x0362,\n\t0x1530: 0x0368, 0x1531: 0x0356, 0x1532: 0x036b, 0x1534: 0x0353, 0x1535: 0x0335,\n\t0x1536: 0x0338, 0x1537: 0x0341, 0x1539: 0x0359, 0x153a: 0x035f, 0x153b: 0x0365,\n\t0x153c: 0x0386, 0x153e: 0x03bf,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x032c, 0x1541: 0x032f, 0x1542: 0x033b, 0x1543: 0x0344, 0x1544: 0x037a, 0x1545: 0x037d,\n\t0x1546: 0x034d, 0x1547: 0x033e, 0x1548: 0x035c, 0x1549: 0x0383, 0x154b: 0x0371,\n\t0x154c: 0x0374, 0x154d: 0x0377, 0x154e: 0x0350, 0x154f: 0x0362, 0x1550: 0x0368, 0x1551: 0x0356,\n\t0x1552: 0x036b, 0x1553: 0x034a, 0x1554: 0x0353, 0x1555: 0x0335, 0x1556: 0x0338, 0x1557: 0x0341,\n\t0x1558: 0x0347, 0x1559: 0x0359, 0x155a: 0x035f, 0x155b: 0x0365,\n\t0x1561: 0x032f, 0x1562: 0x033b, 0x1563: 0x0344,\n\t0x1565: 0x037d, 0x1566: 0x034d, 0x1567: 0x033e, 0x1568: 0x035c, 0x1569: 0x0383,\n\t0x156b: 0x0371, 0x156c: 0x0374, 0x156d: 0x0377, 0x156e: 0x0350, 0x156f: 0x0362,\n\t0x1570: 0x0368, 0x1571: 0x0356, 0x1572: 0x036b, 0x1573: 0x034a, 0x1574: 0x0353, 0x1575: 0x0335,\n\t0x1576: 0x0338, 0x1577: 0x0341, 0x1578: 0x0347, 0x1579: 0x0359, 0x157a: 0x035f, 0x157b: 0x0365,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x19a6, 0x1581: 0x19a3, 0x1582: 0x19a9, 0x1583: 0x19cd, 0x1584: 0x19f1, 0x1585: 0x1a15,\n\t0x1586: 0x1a39, 0x1587: 0x1a42, 0x1588: 0x1a48, 0x1589: 0x1a4e, 0x158a: 0x1a54,\n\t0x1590: 0x1bbc, 0x1591: 0x1bc0,\n\t0x1592: 0x1bc4, 0x1593: 0x1bc8, 0x1594: 0x1bcc, 0x1595: 0x1bd0, 0x1596: 0x1bd4, 0x1597: 0x1bd8,\n\t0x1598: 0x1bdc, 0x1599: 0x1be0, 0x159a: 0x1be4, 0x159b: 0x1be8, 0x159c: 0x1bec, 0x159d: 0x1bf0,\n\t0x159e: 0x1bf4, 0x159f: 0x1bf8, 0x15a0: 0x1bfc, 0x15a1: 0x1c00, 0x15a2: 0x1c04, 0x15a3: 0x1c08,\n\t0x15a4: 0x1c0c, 0x15a5: 0x1c10, 0x15a6: 0x1c14, 0x15a7: 0x1c18, 0x15a8: 0x1c1c, 0x15a9: 0x1c20,\n\t0x15aa: 0x2855, 0x15ab: 0x0047, 0x15ac: 0x0065, 0x15ad: 0x1a69, 0x15ae: 0x1ae1,\n\t0x15b0: 0x0043, 0x15b1: 0x0045, 0x15b2: 0x0047, 0x15b3: 0x0049, 0x15b4: 0x004b, 0x15b5: 0x004d,\n\t0x15b6: 0x004f, 0x15b7: 0x0051, 0x15b8: 0x0053, 0x15b9: 0x0055, 0x15ba: 0x0057, 0x15bb: 0x0059,\n\t0x15bc: 0x005b, 0x15bd: 0x005d, 0x15be: 0x005f, 0x15bf: 0x0061,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x27dd, 0x15c1: 0x27f2, 0x15c2: 0x05fe,\n\t0x15d0: 0x0d0a, 0x15d1: 0x0b42,\n\t0x15d2: 0x09ce, 0x15d3: 0x46f5, 0x15d4: 0x0816, 0x15d5: 0x0aea, 0x15d6: 0x142a, 0x15d7: 0x0afa,\n\t0x15d8: 0x0822, 0x15d9: 0x0dd2, 0x15da: 0x0faa, 0x15db: 0x0daa, 0x15dc: 0x0922, 0x15dd: 0x0c66,\n\t0x15de: 0x08ba, 0x15df: 0x0db2, 0x15e0: 0x090e, 0x15e1: 0x1212, 0x15e2: 0x107e, 0x15e3: 0x1486,\n\t0x15e4: 0x0ace, 0x15e5: 0x0a06, 0x15e6: 0x0f5e, 0x15e7: 0x0d16, 0x15e8: 0x0d42, 0x15e9: 0x07ba,\n\t0x15ea: 0x07c6, 0x15eb: 0x1506, 0x15ec: 0x0bd6, 0x15ed: 0x07e2, 0x15ee: 0x09ea, 0x15ef: 0x0d36,\n\t0x15f0: 0x14ae, 0x15f1: 0x0d0e, 0x15f2: 0x116a, 0x15f3: 0x11a6, 0x15f4: 0x09f2, 0x15f5: 0x0f3e,\n\t0x15f6: 0x0e06, 0x15f7: 0x0e02, 0x15f8: 0x1092, 0x15f9: 0x0926, 0x15fa: 0x0a52, 0x15fb: 0x153e,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x07f6, 0x1601: 0x07ee, 0x1602: 0x07fe, 0x1603: 0x1774, 0x1604: 0x0842, 0x1605: 0x0852,\n\t0x1606: 0x0856, 0x1607: 0x085e, 0x1608: 0x0866, 0x1609: 0x086a, 0x160a: 0x0876, 0x160b: 0x086e,\n\t0x160c: 0x06ae, 0x160d: 0x1788, 0x160e: 0x088a, 0x160f: 0x088e, 0x1610: 0x0892, 0x1611: 0x08ae,\n\t0x1612: 0x1779, 0x1613: 0x06b2, 0x1614: 0x089a, 0x1615: 0x08ba, 0x1616: 0x1783, 0x1617: 0x08ca,\n\t0x1618: 0x08d2, 0x1619: 0x0832, 0x161a: 0x08da, 0x161b: 0x08de, 0x161c: 0x195e, 0x161d: 0x08fa,\n\t0x161e: 0x0902, 0x161f: 0x06ba, 0x1620: 0x091a, 0x1621: 0x091e, 0x1622: 0x0926, 0x1623: 0x092a,\n\t0x1624: 0x06be, 0x1625: 0x0942, 0x1626: 0x0946, 0x1627: 0x0952, 0x1628: 0x095e, 0x1629: 0x0962,\n\t0x162a: 0x0966, 0x162b: 0x096e, 0x162c: 0x098e, 0x162d: 0x0992, 0x162e: 0x099a, 0x162f: 0x09aa,\n\t0x1630: 0x09b2, 0x1631: 0x09b6, 0x1632: 0x09b6, 0x1633: 0x09b6, 0x1634: 0x1797, 0x1635: 0x0f8e,\n\t0x1636: 0x09ca, 0x1637: 0x09d2, 0x1638: 0x179c, 0x1639: 0x09de, 0x163a: 0x09e6, 0x163b: 0x09ee,\n\t0x163c: 0x0a16, 0x163d: 0x0a02, 0x163e: 0x0a0e, 0x163f: 0x0a12,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0a1a, 0x1641: 0x0a22, 0x1642: 0x0a26, 0x1643: 0x0a2e, 0x1644: 0x0a36, 0x1645: 0x0a3a,\n\t0x1646: 0x0a3a, 0x1647: 0x0a42, 0x1648: 0x0a4a, 0x1649: 0x0a4e, 0x164a: 0x0a5a, 0x164b: 0x0a7e,\n\t0x164c: 0x0a62, 0x164d: 0x0a82, 0x164e: 0x0a66, 0x164f: 0x0a6e, 0x1650: 0x0906, 0x1651: 0x0aca,\n\t0x1652: 0x0a92, 0x1653: 0x0a96, 0x1654: 0x0a9a, 0x1655: 0x0a8e, 0x1656: 0x0aa2, 0x1657: 0x0a9e,\n\t0x1658: 0x0ab6, 0x1659: 0x17a1, 0x165a: 0x0ad2, 0x165b: 0x0ad6, 0x165c: 0x0ade, 0x165d: 0x0aea,\n\t0x165e: 0x0af2, 0x165f: 0x0b0e, 0x1660: 0x17a6, 0x1661: 0x17ab, 0x1662: 0x0b1a, 0x1663: 0x0b1e,\n\t0x1664: 0x0b22, 0x1665: 0x0b16, 0x1666: 0x0b2a, 0x1667: 0x06c2, 0x1668: 0x06c6, 0x1669: 0x0b32,\n\t0x166a: 0x0b3a, 0x166b: 0x0b3a, 0x166c: 0x17b0, 0x166d: 0x0b56, 0x166e: 0x0b5a, 0x166f: 0x0b5e,\n\t0x1670: 0x0b66, 0x1671: 0x17b5, 0x1672: 0x0b6e, 0x1673: 0x0b72, 0x1674: 0x0c4a, 0x1675: 0x0b7a,\n\t0x1676: 0x06ca, 0x1677: 0x0b86, 0x1678: 0x0b96, 0x1679: 0x0ba2, 0x167a: 0x0b9e, 0x167b: 0x17bf,\n\t0x167c: 0x0baa, 0x167d: 0x17c4, 0x167e: 0x0bb6, 0x167f: 0x0bb2,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x0bba, 0x1681: 0x0bca, 0x1682: 0x0bce, 0x1683: 0x06ce, 0x1684: 0x0bde, 0x1685: 0x0be6,\n\t0x1686: 0x0bea, 0x1687: 0x0bee, 0x1688: 0x06d2, 0x1689: 0x17c9, 0x168a: 0x06d6, 0x168b: 0x0c0a,\n\t0x168c: 0x0c0e, 0x168d: 0x0c12, 0x168e: 0x0c1a, 0x168f: 0x1990, 0x1690: 0x0c32, 0x1691: 0x17d3,\n\t0x1692: 0x17d3, 0x1693: 0x12d2, 0x1694: 0x0c42, 0x1695: 0x0c42, 0x1696: 0x06da, 0x1697: 0x17f6,\n\t0x1698: 0x18c8, 0x1699: 0x0c52, 0x169a: 0x0c5a, 0x169b: 0x06de, 0x169c: 0x0c6e, 0x169d: 0x0c7e,\n\t0x169e: 0x0c82, 0x169f: 0x0c8a, 0x16a0: 0x0c9a, 0x16a1: 0x06e6, 0x16a2: 0x06e2, 0x16a3: 0x0c9e,\n\t0x16a4: 0x17d8, 0x16a5: 0x0ca2, 0x16a6: 0x0cb6, 0x16a7: 0x0cba, 0x16a8: 0x0cbe, 0x16a9: 0x0cba,\n\t0x16aa: 0x0cca, 0x16ab: 0x0cce, 0x16ac: 0x0cde, 0x16ad: 0x0cd6, 0x16ae: 0x0cda, 0x16af: 0x0ce2,\n\t0x16b0: 0x0ce6, 0x16b1: 0x0cea, 0x16b2: 0x0cf6, 0x16b3: 0x0cfa, 0x16b4: 0x0d12, 0x16b5: 0x0d1a,\n\t0x16b6: 0x0d2a, 0x16b7: 0x0d3e, 0x16b8: 0x17e7, 0x16b9: 0x0d3a, 0x16ba: 0x0d2e, 0x16bb: 0x0d46,\n\t0x16bc: 0x0d4e, 0x16bd: 0x0d62, 0x16be: 0x17ec, 0x16bf: 0x0d6a,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x0d5e, 0x16c1: 0x0d56, 0x16c2: 0x06ea, 0x16c3: 0x0d72, 0x16c4: 0x0d7a, 0x16c5: 0x0d82,\n\t0x16c6: 0x0d76, 0x16c7: 0x06ee, 0x16c8: 0x0d92, 0x16c9: 0x0d9a, 0x16ca: 0x17f1, 0x16cb: 0x0dc6,\n\t0x16cc: 0x0dfa, 0x16cd: 0x0dd6, 0x16ce: 0x06fa, 0x16cf: 0x0de2, 0x16d0: 0x06f6, 0x16d1: 0x06f2,\n\t0x16d2: 0x08be, 0x16d3: 0x08c2, 0x16d4: 0x0dfe, 0x16d5: 0x0de6, 0x16d6: 0x12a6, 0x16d7: 0x075e,\n\t0x16d8: 0x0e0a, 0x16d9: 0x0e0e, 0x16da: 0x0e12, 0x16db: 0x0e26, 0x16dc: 0x0e1e, 0x16dd: 0x180a,\n\t0x16de: 0x06fe, 0x16df: 0x0e3a, 0x16e0: 0x0e2e, 0x16e1: 0x0e4a, 0x16e2: 0x0e52, 0x16e3: 0x1814,\n\t0x16e4: 0x0e56, 0x16e5: 0x0e42, 0x16e6: 0x0e5e, 0x16e7: 0x0702, 0x16e8: 0x0e62, 0x16e9: 0x0e66,\n\t0x16ea: 0x0e6a, 0x16eb: 0x0e76, 0x16ec: 0x1819, 0x16ed: 0x0e7e, 0x16ee: 0x0706, 0x16ef: 0x0e8a,\n\t0x16f0: 0x181e, 0x16f1: 0x0e8e, 0x16f2: 0x070a, 0x16f3: 0x0e9a, 0x16f4: 0x0ea6, 0x16f5: 0x0eb2,\n\t0x16f6: 0x0eb6, 0x16f7: 0x1823, 0x16f8: 0x17ba, 0x16f9: 0x1828, 0x16fa: 0x0ed6, 0x16fb: 0x182d,\n\t0x16fc: 0x0ee2, 0x16fd: 0x0eea, 0x16fe: 0x0eda, 0x16ff: 0x0ef6,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0f06, 0x1701: 0x0f16, 0x1702: 0x0f0a, 0x1703: 0x0f0e, 0x1704: 0x0f1a, 0x1705: 0x0f1e,\n\t0x1706: 0x1832, 0x1707: 0x0f02, 0x1708: 0x0f36, 0x1709: 0x0f3a, 0x170a: 0x070e, 0x170b: 0x0f4e,\n\t0x170c: 0x0f4a, 0x170d: 0x1837, 0x170e: 0x0f2e, 0x170f: 0x0f6a, 0x1710: 0x183c, 0x1711: 0x1841,\n\t0x1712: 0x0f6e, 0x1713: 0x0f82, 0x1714: 0x0f7e, 0x1715: 0x0f7a, 0x1716: 0x0712, 0x1717: 0x0f86,\n\t0x1718: 0x0f96, 0x1719: 0x0f92, 0x171a: 0x0f9e, 0x171b: 0x177e, 0x171c: 0x0fae, 0x171d: 0x1846,\n\t0x171e: 0x0fba, 0x171f: 0x1850, 0x1720: 0x0fce, 0x1721: 0x0fda, 0x1722: 0x0fee, 0x1723: 0x1855,\n\t0x1724: 0x1002, 0x1725: 0x1006, 0x1726: 0x185a, 0x1727: 0x185f, 0x1728: 0x1022, 0x1729: 0x1032,\n\t0x172a: 0x0716, 0x172b: 0x1036, 0x172c: 0x071a, 0x172d: 0x071a, 0x172e: 0x104e, 0x172f: 0x1052,\n\t0x1730: 0x105a, 0x1731: 0x105e, 0x1732: 0x106a, 0x1733: 0x071e, 0x1734: 0x1082, 0x1735: 0x1864,\n\t0x1736: 0x109e, 0x1737: 0x1869, 0x1738: 0x10aa, 0x1739: 0x17ce, 0x173a: 0x10ba, 0x173b: 0x186e,\n\t0x173c: 0x1873, 0x173d: 0x1878, 0x173e: 0x0722, 0x173f: 0x0726,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x10f2, 0x1741: 0x1882, 0x1742: 0x187d, 0x1743: 0x1887, 0x1744: 0x188c, 0x1745: 0x10fa,\n\t0x1746: 0x10fe, 0x1747: 0x10fe, 0x1748: 0x1106, 0x1749: 0x072e, 0x174a: 0x110a, 0x174b: 0x0732,\n\t0x174c: 0x0736, 0x174d: 0x1896, 0x174e: 0x111e, 0x174f: 0x1126, 0x1750: 0x1132, 0x1751: 0x073a,\n\t0x1752: 0x189b, 0x1753: 0x1156, 0x1754: 0x18a0, 0x1755: 0x18a5, 0x1756: 0x1176, 0x1757: 0x118e,\n\t0x1758: 0x073e, 0x1759: 0x1196, 0x175a: 0x119a, 0x175b: 0x119e, 0x175c: 0x18aa, 0x175d: 0x18af,\n\t0x175e: 0x18af, 0x175f: 0x11b6, 0x1760: 0x0742, 0x1761: 0x18b4, 0x1762: 0x11ca, 0x1763: 0x11ce,\n\t0x1764: 0x0746, 0x1765: 0x18b9, 0x1766: 0x11ea, 0x1767: 0x074a, 0x1768: 0x11fa, 0x1769: 0x11f2,\n\t0x176a: 0x1202, 0x176b: 0x18c3, 0x176c: 0x121a, 0x176d: 0x074e, 0x176e: 0x1226, 0x176f: 0x122e,\n\t0x1770: 0x123e, 0x1771: 0x0752, 0x1772: 0x18cd, 0x1773: 0x18d2, 0x1774: 0x0756, 0x1775: 0x18d7,\n\t0x1776: 0x1256, 0x1777: 0x18dc, 0x1778: 0x1262, 0x1779: 0x126e, 0x177a: 0x1276, 0x177b: 0x18e1,\n\t0x177c: 0x18e6, 0x177d: 0x128a, 0x177e: 0x18eb, 0x177f: 0x1292,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x17fb, 0x1781: 0x075a, 0x1782: 0x12aa, 0x1783: 0x12ae, 0x1784: 0x0762, 0x1785: 0x12b2,\n\t0x1786: 0x0b2e, 0x1787: 0x18f0, 0x1788: 0x18f5, 0x1789: 0x1800, 0x178a: 0x1805, 0x178b: 0x12d2,\n\t0x178c: 0x12d6, 0x178d: 0x14ee, 0x178e: 0x0766, 0x178f: 0x1302, 0x1790: 0x12fe, 0x1791: 0x1306,\n\t0x1792: 0x093a, 0x1793: 0x130a, 0x1794: 0x130e, 0x1795: 0x1312, 0x1796: 0x131a, 0x1797: 0x18fa,\n\t0x1798: 0x1316, 0x1799: 0x131e, 0x179a: 0x1332, 0x179b: 0x1336, 0x179c: 0x1322, 0x179d: 0x133a,\n\t0x179e: 0x134e, 0x179f: 0x1362, 0x17a0: 0x132e, 0x17a1: 0x1342, 0x17a2: 0x1346, 0x17a3: 0x134a,\n\t0x17a4: 0x18ff, 0x17a5: 0x1909, 0x17a6: 0x1904, 0x17a7: 0x076a, 0x17a8: 0x136a, 0x17a9: 0x136e,\n\t0x17aa: 0x1376, 0x17ab: 0x191d, 0x17ac: 0x137a, 0x17ad: 0x190e, 0x17ae: 0x076e, 0x17af: 0x0772,\n\t0x17b0: 0x1913, 0x17b1: 0x1918, 0x17b2: 0x0776, 0x17b3: 0x139a, 0x17b4: 0x139e, 0x17b5: 0x13a2,\n\t0x17b6: 0x13a6, 0x17b7: 0x13b2, 0x17b8: 0x13ae, 0x17b9: 0x13ba, 0x17ba: 0x13b6, 0x17bb: 0x13c6,\n\t0x17bc: 0x13be, 0x17bd: 0x13c2, 0x17be: 0x13ca, 0x17bf: 0x077a,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x13d2, 0x17c1: 0x13d6, 0x17c2: 0x077e, 0x17c3: 0x13e6, 0x17c4: 0x13ea, 0x17c5: 0x1922,\n\t0x17c6: 0x13f6, 0x17c7: 0x13fa, 0x17c8: 0x0782, 0x17c9: 0x1406, 0x17ca: 0x06b6, 0x17cb: 0x1927,\n\t0x17cc: 0x192c, 0x17cd: 0x0786, 0x17ce: 0x078a, 0x17cf: 0x1432, 0x17d0: 0x144a, 0x17d1: 0x1466,\n\t0x17d2: 0x1476, 0x17d3: 0x1931, 0x17d4: 0x148a, 0x17d5: 0x148e, 0x17d6: 0x14a6, 0x17d7: 0x14b2,\n\t0x17d8: 0x193b, 0x17d9: 0x178d, 0x17da: 0x14be, 0x17db: 0x14ba, 0x17dc: 0x14c6, 0x17dd: 0x1792,\n\t0x17de: 0x14d2, 0x17df: 0x14de, 0x17e0: 0x1940, 0x17e1: 0x1945, 0x17e2: 0x151e, 0x17e3: 0x152a,\n\t0x17e4: 0x1532, 0x17e5: 0x194a, 0x17e6: 0x1536, 0x17e7: 0x1562, 0x17e8: 0x156e, 0x17e9: 0x1572,\n\t0x17ea: 0x156a, 0x17eb: 0x157e, 0x17ec: 0x1582, 0x17ed: 0x194f, 0x17ee: 0x158e, 0x17ef: 0x078e,\n\t0x17f0: 0x1596, 0x17f1: 0x1954, 0x17f2: 0x0792, 0x17f3: 0x15ce, 0x17f4: 0x0bbe, 0x17f5: 0x15e6,\n\t0x17f6: 0x1959, 0x17f7: 0x1963, 0x17f8: 0x0796, 0x17f9: 0x079a, 0x17fa: 0x160e, 0x17fb: 0x1968,\n\t0x17fc: 0x079e, 0x17fd: 0x196d, 0x17fe: 0x1626, 0x17ff: 0x1626,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x162e, 0x1801: 0x1972, 0x1802: 0x1646, 0x1803: 0x07a2, 0x1804: 0x1656, 0x1805: 0x1662,\n\t0x1806: 0x166a, 0x1807: 0x1672, 0x1808: 0x07a6, 0x1809: 0x1977, 0x180a: 0x1686, 0x180b: 0x16a2,\n\t0x180c: 0x16ae, 0x180d: 0x07aa, 0x180e: 0x07ae, 0x180f: 0x16b2, 0x1810: 0x197c, 0x1811: 0x07b2,\n\t0x1812: 0x1981, 0x1813: 0x1986, 0x1814: 0x198b, 0x1815: 0x16d6, 0x1816: 0x07b6, 0x1817: 0x16ea,\n\t0x1818: 0x16f2, 0x1819: 0x16f6, 0x181a: 0x16fe, 0x181b: 0x1706, 0x181c: 0x170e, 0x181d: 0x1995,\n}\n\n// nfkcIndex: 22 blocks, 1408 entries, 2816 bytes\n// Block 0 is the zero block.\nvar nfkcIndex = [1408]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x5f, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x60, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x61, 0xcb: 0x62, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09,\n\t0xd0: 0x0a, 0xd1: 0x63, 0xd2: 0x64, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x65,\n\t0xd8: 0x66, 0xd9: 0x0d, 0xdb: 0x67, 0xdc: 0x68, 0xdd: 0x69, 0xdf: 0x6a,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x6b, 0x121: 0x6c, 0x122: 0x6d, 0x123: 0x0e, 0x124: 0x6e, 0x125: 0x6f, 0x126: 0x70, 0x127: 0x71,\n\t0x128: 0x72, 0x129: 0x73, 0x12a: 0x74, 0x12b: 0x75, 0x12c: 0x70, 0x12d: 0x76, 0x12e: 0x77, 0x12f: 0x78,\n\t0x130: 0x74, 0x131: 0x79, 0x132: 0x7a, 0x133: 0x7b, 0x134: 0x7c, 0x135: 0x7d, 0x137: 0x7e,\n\t0x138: 0x7f, 0x139: 0x80, 0x13a: 0x81, 0x13b: 0x82, 0x13c: 0x83, 0x13d: 0x84, 0x13e: 0x85, 0x13f: 0x86,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x87, 0x142: 0x88, 0x143: 0x89, 0x144: 0x8a, 0x145: 0x8b, 0x146: 0x8c, 0x147: 0x8d,\n\t0x14d: 0x8e,\n\t0x15c: 0x8f, 0x15f: 0x90,\n\t0x162: 0x91, 0x164: 0x92,\n\t0x168: 0x93, 0x169: 0x94, 0x16a: 0x95, 0x16b: 0x96, 0x16c: 0x0f, 0x16d: 0x97, 0x16e: 0x98, 0x16f: 0x99,\n\t0x170: 0x9a, 0x173: 0x9b, 0x174: 0x9c, 0x175: 0x10, 0x176: 0x11, 0x177: 0x12,\n\t0x178: 0x13, 0x179: 0x14, 0x17a: 0x15, 0x17b: 0x16, 0x17c: 0x17, 0x17d: 0x18, 0x17e: 0x19, 0x17f: 0x1a,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x9d, 0x181: 0x9e, 0x182: 0x9f, 0x183: 0xa0, 0x184: 0x1b, 0x185: 0x1c, 0x186: 0xa1, 0x187: 0xa2,\n\t0x188: 0xa3, 0x189: 0x1d, 0x18a: 0x1e, 0x18b: 0xa4, 0x18c: 0xa5,\n\t0x191: 0x1f, 0x192: 0x20, 0x193: 0xa6,\n\t0x1a8: 0xa7, 0x1a9: 0xa8, 0x1ab: 0xa9,\n\t0x1b1: 0xaa, 0x1b3: 0xab, 0x1b5: 0xac, 0x1b7: 0xad,\n\t0x1ba: 0xae, 0x1bb: 0xaf, 0x1bc: 0x21, 0x1bd: 0x22, 0x1be: 0x23, 0x1bf: 0xb0,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0xb1, 0x1c1: 0x24, 0x1c2: 0x25, 0x1c3: 0x26, 0x1c4: 0xb2, 0x1c5: 0x27, 0x1c6: 0x28,\n\t0x1c8: 0x29, 0x1c9: 0x2a, 0x1ca: 0x2b, 0x1cb: 0x2c, 0x1cc: 0x2d, 0x1cd: 0x2e, 0x1ce: 0x2f, 0x1cf: 0x30,\n\t// Block 0x8, offset 0x200\n\t0x219: 0xb3, 0x21a: 0xb4, 0x21b: 0xb5, 0x21d: 0xb6, 0x21f: 0xb7,\n\t0x220: 0xb8, 0x223: 0xb9, 0x224: 0xba, 0x225: 0xbb, 0x226: 0xbc, 0x227: 0xbd,\n\t0x22a: 0xbe, 0x22b: 0xbf, 0x22d: 0xc0, 0x22f: 0xc1,\n\t0x230: 0xc2, 0x231: 0xc3, 0x232: 0xc4, 0x233: 0xc5, 0x234: 0xc6, 0x235: 0xc7, 0x236: 0xc8, 0x237: 0xc2,\n\t0x238: 0xc3, 0x239: 0xc4, 0x23a: 0xc5, 0x23b: 0xc6, 0x23c: 0xc7, 0x23d: 0xc8, 0x23e: 0xc2, 0x23f: 0xc3,\n\t// Block 0x9, offset 0x240\n\t0x240: 0xc4, 0x241: 0xc5, 0x242: 0xc6, 0x243: 0xc7, 0x244: 0xc8, 0x245: 0xc2, 0x246: 0xc3, 0x247: 0xc4,\n\t0x248: 0xc5, 0x249: 0xc6, 0x24a: 0xc7, 0x24b: 0xc8, 0x24c: 0xc2, 0x24d: 0xc3, 0x24e: 0xc4, 0x24f: 0xc5,\n\t0x250: 0xc6, 0x251: 0xc7, 0x252: 0xc8, 0x253: 0xc2, 0x254: 0xc3, 0x255: 0xc4, 0x256: 0xc5, 0x257: 0xc6,\n\t0x258: 0xc7, 0x259: 0xc8, 0x25a: 0xc2, 0x25b: 0xc3, 0x25c: 0xc4, 0x25d: 0xc5, 0x25e: 0xc6, 0x25f: 0xc7,\n\t0x260: 0xc8, 0x261: 0xc2, 0x262: 0xc3, 0x263: 0xc4, 0x264: 0xc5, 0x265: 0xc6, 0x266: 0xc7, 0x267: 0xc8,\n\t0x268: 0xc2, 0x269: 0xc3, 0x26a: 0xc4, 0x26b: 0xc5, 0x26c: 0xc6, 0x26d: 0xc7, 0x26e: 0xc8, 0x26f: 0xc2,\n\t0x270: 0xc3, 0x271: 0xc4, 0x272: 0xc5, 0x273: 0xc6, 0x274: 0xc7, 0x275: 0xc8, 0x276: 0xc2, 0x277: 0xc3,\n\t0x278: 0xc4, 0x279: 0xc5, 0x27a: 0xc6, 0x27b: 0xc7, 0x27c: 0xc8, 0x27d: 0xc2, 0x27e: 0xc3, 0x27f: 0xc4,\n\t// Block 0xa, offset 0x280\n\t0x280: 0xc5, 0x281: 0xc6, 0x282: 0xc7, 0x283: 0xc8, 0x284: 0xc2, 0x285: 0xc3, 0x286: 0xc4, 0x287: 0xc5,\n\t0x288: 0xc6, 0x289: 0xc7, 0x28a: 0xc8, 0x28b: 0xc2, 0x28c: 0xc3, 0x28d: 0xc4, 0x28e: 0xc5, 0x28f: 0xc6,\n\t0x290: 0xc7, 0x291: 0xc8, 0x292: 0xc2, 0x293: 0xc3, 0x294: 0xc4, 0x295: 0xc5, 0x296: 0xc6, 0x297: 0xc7,\n\t0x298: 0xc8, 0x299: 0xc2, 0x29a: 0xc3, 0x29b: 0xc4, 0x29c: 0xc5, 0x29d: 0xc6, 0x29e: 0xc7, 0x29f: 0xc8,\n\t0x2a0: 0xc2, 0x2a1: 0xc3, 0x2a2: 0xc4, 0x2a3: 0xc5, 0x2a4: 0xc6, 0x2a5: 0xc7, 0x2a6: 0xc8, 0x2a7: 0xc2,\n\t0x2a8: 0xc3, 0x2a9: 0xc4, 0x2aa: 0xc5, 0x2ab: 0xc6, 0x2ac: 0xc7, 0x2ad: 0xc8, 0x2ae: 0xc2, 0x2af: 0xc3,\n\t0x2b0: 0xc4, 0x2b1: 0xc5, 0x2b2: 0xc6, 0x2b3: 0xc7, 0x2b4: 0xc8, 0x2b5: 0xc2, 0x2b6: 0xc3, 0x2b7: 0xc4,\n\t0x2b8: 0xc5, 0x2b9: 0xc6, 0x2ba: 0xc7, 0x2bb: 0xc8, 0x2bc: 0xc2, 0x2bd: 0xc3, 0x2be: 0xc4, 0x2bf: 0xc5,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0xc6, 0x2c1: 0xc7, 0x2c2: 0xc8, 0x2c3: 0xc2, 0x2c4: 0xc3, 0x2c5: 0xc4, 0x2c6: 0xc5, 0x2c7: 0xc6,\n\t0x2c8: 0xc7, 0x2c9: 0xc8, 0x2ca: 0xc2, 0x2cb: 0xc3, 0x2cc: 0xc4, 0x2cd: 0xc5, 0x2ce: 0xc6, 0x2cf: 0xc7,\n\t0x2d0: 0xc8, 0x2d1: 0xc2, 0x2d2: 0xc3, 0x2d3: 0xc4, 0x2d4: 0xc5, 0x2d5: 0xc6, 0x2d6: 0xc7, 0x2d7: 0xc8,\n\t0x2d8: 0xc2, 0x2d9: 0xc3, 0x2da: 0xc4, 0x2db: 0xc5, 0x2dc: 0xc6, 0x2dd: 0xc7, 0x2de: 0xc9,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x31, 0x325: 0x32, 0x326: 0x33, 0x327: 0x34,\n\t0x328: 0x35, 0x329: 0x36, 0x32a: 0x37, 0x32b: 0x38, 0x32c: 0x39, 0x32d: 0x3a, 0x32e: 0x3b, 0x32f: 0x3c,\n\t0x330: 0x3d, 0x331: 0x3e, 0x332: 0x3f, 0x333: 0x40, 0x334: 0x41, 0x335: 0x42, 0x336: 0x43, 0x337: 0x44,\n\t0x338: 0x45, 0x339: 0x46, 0x33a: 0x47, 0x33b: 0x48, 0x33c: 0xca, 0x33d: 0x49, 0x33e: 0x4a, 0x33f: 0x4b,\n\t// Block 0xd, offset 0x340\n\t0x347: 0xcb,\n\t0x34b: 0xcc, 0x34d: 0xcd,\n\t0x35e: 0x4c,\n\t0x368: 0xce, 0x36b: 0xcf,\n\t0x374: 0xd0,\n\t0x37a: 0xd1, 0x37b: 0xd2, 0x37d: 0xd3, 0x37e: 0xd4,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xd5, 0x382: 0xd6, 0x384: 0xd7, 0x385: 0xbc, 0x387: 0xd8,\n\t0x388: 0xd9, 0x38b: 0xda, 0x38c: 0xdb, 0x38d: 0xdc,\n\t0x391: 0xdd, 0x392: 0xde, 0x393: 0xdf, 0x396: 0xe0, 0x397: 0xe1,\n\t0x398: 0xe2, 0x39a: 0xe3, 0x39c: 0xe4,\n\t0x3a0: 0xe5, 0x3a4: 0xe6, 0x3a5: 0xe7, 0x3a7: 0xe8,\n\t0x3a8: 0xe9, 0x3a9: 0xea, 0x3aa: 0xeb,\n\t0x3b0: 0xe2, 0x3b5: 0xec, 0x3b6: 0xed,\n\t0x3bd: 0xee,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xef, 0x3ec: 0xf0,\n\t0x3ff: 0xf1,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xf2,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xf3, 0x446: 0xf4, 0x447: 0xf5,\n\t0x449: 0xf6,\n\t0x450: 0xf7, 0x451: 0xf8, 0x452: 0xf9, 0x453: 0xfa, 0x454: 0xfb, 0x455: 0xfc, 0x456: 0xfd, 0x457: 0xfe,\n\t0x458: 0xff, 0x459: 0x100, 0x45a: 0x4d, 0x45b: 0x101, 0x45c: 0x102, 0x45d: 0x103, 0x45e: 0x104, 0x45f: 0x4e,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x4f, 0x481: 0x50, 0x482: 0x105, 0x484: 0xf0,\n\t0x48a: 0x106, 0x48b: 0x107,\n\t0x493: 0x108,\n\t0x4a3: 0x109, 0x4a5: 0x10a,\n\t0x4b8: 0x51, 0x4b9: 0x52, 0x4ba: 0x53,\n\t// Block 0x13, offset 0x4c0\n\t0x4c4: 0x54, 0x4c5: 0x10b, 0x4c6: 0x10c,\n\t0x4c8: 0x55, 0x4c9: 0x10d,\n\t0x4ef: 0x10e,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x56, 0x521: 0x57, 0x522: 0x58, 0x523: 0x59, 0x524: 0x5a, 0x525: 0x5b, 0x526: 0x5c, 0x527: 0x5d,\n\t0x528: 0x5e,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfkcSparseOffset: 176 entries, 352 bytes\nvar nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1c, 0x26, 0x36, 0x38, 0x3d, 0x48, 0x57, 0x64, 0x6c, 0x71, 0x76, 0x78, 0x7c, 0x84, 0x8b, 0x8e, 0x96, 0x9a, 0x9e, 0xa0, 0xa2, 0xab, 0xaf, 0xb6, 0xbb, 0xbe, 0xc8, 0xcb, 0xd2, 0xda, 0xde, 0xe0, 0xe4, 0xe8, 0xee, 0xff, 0x10b, 0x10d, 0x113, 0x115, 0x117, 0x119, 0x11b, 0x11d, 0x11f, 0x121, 0x124, 0x127, 0x129, 0x12c, 0x12f, 0x133, 0x139, 0x140, 0x149, 0x14b, 0x14e, 0x150, 0x15b, 0x166, 0x174, 0x182, 0x192, 0x1a0, 0x1a7, 0x1ad, 0x1bc, 0x1c0, 0x1c2, 0x1c6, 0x1c8, 0x1cb, 0x1cd, 0x1d0, 0x1d2, 0x1d5, 0x1d7, 0x1d9, 0x1db, 0x1e7, 0x1f1, 0x1fb, 0x1fe, 0x202, 0x204, 0x206, 0x20b, 0x20e, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21f, 0x222, 0x227, 0x229, 0x230, 0x236, 0x23c, 0x244, 0x24a, 0x250, 0x256, 0x25a, 0x25c, 0x25e, 0x260, 0x262, 0x268, 0x26b, 0x26d, 0x26f, 0x271, 0x277, 0x27b, 0x27f, 0x287, 0x28e, 0x291, 0x294, 0x296, 0x299, 0x2a1, 0x2a5, 0x2ac, 0x2af, 0x2b5, 0x2b7, 0x2b9, 0x2bc, 0x2be, 0x2c1, 0x2c6, 0x2c8, 0x2ca, 0x2cc, 0x2ce, 0x2d0, 0x2d3, 0x2d5, 0x2d7, 0x2d9, 0x2db, 0x2dd, 0x2df, 0x2ec, 0x2f6, 0x2f8, 0x2fa, 0x2fe, 0x303, 0x30f, 0x314, 0x31d, 0x323, 0x328, 0x32c, 0x331, 0x335, 0x345, 0x353, 0x361, 0x36f, 0x371, 0x373, 0x375, 0x379, 0x37b, 0x37e, 0x389, 0x38b, 0x395}\n\n// nfkcSparseValues: 919 entries, 3676 bytes\nvar nfkcSparseValues = [919]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x0001, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4331, lo: 0xa8, hi: 0xa8},\n\t{value: 0x0083, lo: 0xaa, hi: 0xaa},\n\t{value: 0x431d, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0025, lo: 0xb2, hi: 0xb3},\n\t{value: 0x4313, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0260, lo: 0xb5, hi: 0xb5},\n\t{value: 0x434a, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0023, lo: 0xb9, hi: 0xb9},\n\t{value: 0x009f, lo: 0xba, hi: 0xba},\n\t{value: 0x234c, lo: 0xbc, hi: 0xbc},\n\t{value: 0x2340, lo: 0xbd, hi: 0xbd},\n\t{value: 0x23e2, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1, offset 0xe\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x4813, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4845, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x12\n\t{value: 0x0004, lo: 0x09},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x0091, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0140, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0095, lo: 0xb2, hi: 0xb2},\n\t{value: 0x00a5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0179, lo: 0xb4, hi: 0xb4},\n\t{value: 0x017f, lo: 0xb5, hi: 0xb5},\n\t{value: 0x018b, lo: 0xb6, hi: 0xb6},\n\t{value: 0x00af, lo: 0xb7, hi: 0xb8},\n\t// Block 0x3, offset 0x1c\n\t{value: 0x000a, lo: 0x09},\n\t{value: 0x4327, lo: 0x98, hi: 0x98},\n\t{value: 0x432c, lo: 0x99, hi: 0x9a},\n\t{value: 0x434f, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4318, lo: 0x9c, hi: 0x9c},\n\t{value: 0x433b, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0137, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0099, lo: 0xa1, hi: 0xa1},\n\t{value: 0x00a7, lo: 0xa2, hi: 0xa3},\n\t{value: 0x01b8, lo: 0xa4, hi: 0xa4},\n\t// Block 0x4, offset 0x26\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x3704, lo: 0x90, hi: 0x90},\n\t{value: 0x3710, lo: 0x91, hi: 0x91},\n\t{value: 0x36fe, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3776, lo: 0x97, hi: 0x97},\n\t{value: 0x3740, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3728, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3752, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x377c, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3782, lo: 0xb7, hi: 0xb7},\n\t// Block 0x5, offset 0x36\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x83, hi: 0x87},\n\t// Block 0x6, offset 0x38\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8114, lo: 0x81, hi: 0x82},\n\t{value: 0x8133, lo: 0x84, hi: 0x84},\n\t{value: 0x812e, lo: 0x85, hi: 0x85},\n\t{value: 0x810e, lo: 0x87, hi: 0x87},\n\t// Block 0x7, offset 0x3d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x97},\n\t{value: 0x811a, lo: 0x98, hi: 0x98},\n\t{value: 0x811b, lo: 0x99, hi: 0x99},\n\t{value: 0x811c, lo: 0x9a, hi: 0x9a},\n\t{value: 0x37a0, lo: 0xa2, hi: 0xa2},\n\t{value: 0x37a6, lo: 0xa3, hi: 0xa3},\n\t{value: 0x37b2, lo: 0xa4, hi: 0xa4},\n\t{value: 0x37ac, lo: 0xa5, hi: 0xa5},\n\t{value: 0x37b8, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x8, offset 0x48\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x37ca, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x37be, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x37c4, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8133, lo: 0x96, hi: 0x9c},\n\t{value: 0x8133, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812e, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812e, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t// Block 0x9, offset 0x57\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x8120, lo: 0x91, hi: 0x91},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812e, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8133, lo: 0xba, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8133, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8133, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa, offset 0x64\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8133, lo: 0x80, hi: 0x80},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x812e, lo: 0x82, hi: 0x83},\n\t{value: 0x812e, lo: 0x84, hi: 0x85},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x812e, lo: 0x88, hi: 0x89},\n\t{value: 0x8133, lo: 0x8a, hi: 0x8a},\n\t// Block 0xb, offset 0x6c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0xab, hi: 0xb1},\n\t{value: 0x812e, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8133, lo: 0xb3, hi: 0xb3},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0xc, offset 0x71\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0x96, hi: 0x99},\n\t{value: 0x8133, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8133, lo: 0xa9, hi: 0xad},\n\t// Block 0xd, offset 0x76\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x99, hi: 0x9b},\n\t// Block 0xe, offset 0x78\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8133, lo: 0x98, hi: 0x98},\n\t{value: 0x812e, lo: 0x99, hi: 0x9b},\n\t{value: 0x8133, lo: 0x9c, hi: 0x9f},\n\t// Block 0xf, offset 0x7c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3e37, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3e3f, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3e47, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9903, lo: 0xbc, hi: 0xbc},\n\t// Block 0x10, offset 0x84\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x91, hi: 0x91},\n\t{value: 0x812e, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x93, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x94},\n\t{value: 0x45d5, lo: 0x98, hi: 0x9f},\n\t// Block 0x11, offset 0x8b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x12, offset 0x8e\n\t{value: 0x0008, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x3e4f, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x4615, lo: 0x9c, hi: 0x9d},\n\t{value: 0x4625, lo: 0x9f, hi: 0x9f},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbe},\n\t// Block 0x13, offset 0x96\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x464d, lo: 0xb3, hi: 0xb3},\n\t{value: 0x4655, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x14, offset 0x9a\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x462d, lo: 0x99, hi: 0x9b},\n\t{value: 0x4645, lo: 0x9e, hi: 0x9e},\n\t// Block 0x15, offset 0x9e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x16, offset 0xa0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t// Block 0x17, offset 0xa2\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x3e67, lo: 0x88, hi: 0x88},\n\t{value: 0x3e5f, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3e6f, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x465d, lo: 0x9c, hi: 0x9c},\n\t{value: 0x4665, lo: 0x9d, hi: 0x9d},\n\t// Block 0x18, offset 0xab\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3e77, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x19, offset 0xaf\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x3e7f, lo: 0x8a, hi: 0x8a},\n\t{value: 0x3e8f, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3e87, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1a, offset 0xb6\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3e97, lo: 0x88, hi: 0x88},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8121, lo: 0x95, hi: 0x96},\n\t// Block 0x1b, offset 0xbb\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1c, offset 0xbe\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3e9f, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ea7, lo: 0x87, hi: 0x87},\n\t{value: 0x3eaf, lo: 0x88, hi: 0x88},\n\t{value: 0x4adf, lo: 0x8a, hi: 0x8a},\n\t{value: 0x42f9, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1d, offset 0xc8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1e, offset 0xcb\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x3eb7, lo: 0x8a, hi: 0x8a},\n\t{value: 0x3ec7, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3ebf, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1f, offset 0xd2\n\t{value: 0x5a29, lo: 0x07},\n\t{value: 0x9905, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3ecf, lo: 0x9a, hi: 0x9a},\n\t{value: 0x4ae7, lo: 0x9c, hi: 0x9c},\n\t{value: 0x4304, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3ed7, lo: 0x9e, hi: 0x9f},\n\t// Block 0x20, offset 0xda\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2751, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8123, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x21, offset 0xde\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8124, lo: 0x88, hi: 0x8b},\n\t// Block 0x22, offset 0xe0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2766, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8125, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x23, offset 0xe4\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8126, lo: 0x88, hi: 0x8b},\n\t{value: 0x2758, lo: 0x9c, hi: 0x9c},\n\t{value: 0x275f, lo: 0x9d, hi: 0x9d},\n\t// Block 0x24, offset 0xe8\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x03fe, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812e, lo: 0x98, hi: 0x99},\n\t{value: 0x812e, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812c, lo: 0xb9, hi: 0xb9},\n\t// Block 0x25, offset 0xee\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2774, lo: 0x83, hi: 0x83},\n\t{value: 0x277b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2782, lo: 0x92, hi: 0x92},\n\t{value: 0x2789, lo: 0x97, hi: 0x97},\n\t{value: 0x2790, lo: 0x9c, hi: 0x9c},\n\t{value: 0x276d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8127, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8128, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4bc5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8129, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4bce, lo: 0xb5, hi: 0xb5},\n\t{value: 0x466d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x4725, lo: 0xb7, hi: 0xb7},\n\t{value: 0x4675, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4730, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8128, lo: 0xba, hi: 0xbd},\n\t// Block 0x26, offset 0xff\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8128, lo: 0x80, hi: 0x80},\n\t{value: 0x4bd7, lo: 0x81, hi: 0x81},\n\t{value: 0x8133, lo: 0x82, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0x86, hi: 0x87},\n\t{value: 0x279e, lo: 0x93, hi: 0x93},\n\t{value: 0x27a5, lo: 0x9d, hi: 0x9d},\n\t{value: 0x27ac, lo: 0xa2, hi: 0xa2},\n\t{value: 0x27b3, lo: 0xa7, hi: 0xa7},\n\t{value: 0x27ba, lo: 0xac, hi: 0xac},\n\t{value: 0x2797, lo: 0xb9, hi: 0xb9},\n\t// Block 0x27, offset 0x10b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x86, hi: 0x86},\n\t// Block 0x28, offset 0x10d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3edf, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x29, offset 0x113\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2a, offset 0x115\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0402, lo: 0xbc, hi: 0xbc},\n\t// Block 0x2b, offset 0x117\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2c, offset 0x119\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2d, offset 0x11b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2e, offset 0x11d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2f, offset 0x11f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9f},\n\t// Block 0x30, offset 0x121\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x94, hi: 0x95},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x31, offset 0x124\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9d},\n\t// Block 0x32, offset 0x127\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t// Block 0x33, offset 0x129\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812f, lo: 0xb9, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbb},\n\t// Block 0x34, offset 0x12c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x97, hi: 0x97},\n\t{value: 0x812e, lo: 0x98, hi: 0x98},\n\t// Block 0x35, offset 0x12f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8133, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x133\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812e, lo: 0xb5, hi: 0xba},\n\t{value: 0x8133, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x37, offset 0x139\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x812e, lo: 0x80, hi: 0x80},\n\t{value: 0x8133, lo: 0x81, hi: 0x82},\n\t{value: 0x812e, lo: 0x83, hi: 0x84},\n\t{value: 0x8133, lo: 0x85, hi: 0x89},\n\t{value: 0x812e, lo: 0x8a, hi: 0x8a},\n\t{value: 0x8133, lo: 0x8b, hi: 0x8e},\n\t// Block 0x38, offset 0x140\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3f27, lo: 0x80, hi: 0x80},\n\t{value: 0x3f2f, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x3f37, lo: 0x83, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xab, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xac},\n\t{value: 0x8133, lo: 0xad, hi: 0xb3},\n\t// Block 0x39, offset 0x149\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xaa, hi: 0xab},\n\t// Block 0x3a, offset 0x14b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8105, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3b, offset 0x14e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3c, offset 0x150\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812e, lo: 0x95, hi: 0x99},\n\t{value: 0x8133, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812e, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8133, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x8133, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3d, offset 0x15b\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0043, lo: 0xac, hi: 0xac},\n\t{value: 0x00d1, lo: 0xad, hi: 0xad},\n\t{value: 0x0045, lo: 0xae, hi: 0xae},\n\t{value: 0x0049, lo: 0xb0, hi: 0xb1},\n\t{value: 0x00ec, lo: 0xb2, hi: 0xb2},\n\t{value: 0x004f, lo: 0xb3, hi: 0xba},\n\t{value: 0x005f, lo: 0xbc, hi: 0xbc},\n\t{value: 0x00fe, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0061, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0065, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3e, offset 0x166\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0001, lo: 0x80, hi: 0x8a},\n\t{value: 0x0532, lo: 0x91, hi: 0x91},\n\t{value: 0x4354, lo: 0x97, hi: 0x97},\n\t{value: 0x001d, lo: 0xa4, hi: 0xa4},\n\t{value: 0x19a0, lo: 0xa5, hi: 0xa5},\n\t{value: 0x1c8c, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0001, lo: 0xaf, hi: 0xaf},\n\t{value: 0x27c1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2935, lo: 0xb4, hi: 0xb4},\n\t{value: 0x27c8, lo: 0xb6, hi: 0xb6},\n\t{value: 0x293f, lo: 0xb7, hi: 0xb7},\n\t{value: 0x199a, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4322, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3f, offset 0x174\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x1a60, lo: 0x87, hi: 0x87},\n\t{value: 0x1a5d, lo: 0x88, hi: 0x88},\n\t{value: 0x199d, lo: 0x89, hi: 0x89},\n\t{value: 0x2ac5, lo: 0x97, hi: 0x97},\n\t{value: 0x0001, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0093, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0029, lo: 0xb4, hi: 0xb9},\n\t{value: 0x0017, lo: 0xba, hi: 0xba},\n\t{value: 0x055e, lo: 0xbb, hi: 0xbb},\n\t{value: 0x003b, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0011, lo: 0xbd, hi: 0xbe},\n\t{value: 0x009d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x40, offset 0x182\n\t{value: 0x0002, lo: 0x0f},\n\t{value: 0x0021, lo: 0x80, hi: 0x89},\n\t{value: 0x0017, lo: 0x8a, hi: 0x8a},\n\t{value: 0x055e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x003b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0011, lo: 0x8d, hi: 0x8e},\n\t{value: 0x0083, lo: 0x90, hi: 0x90},\n\t{value: 0x008b, lo: 0x91, hi: 0x91},\n\t{value: 0x009f, lo: 0x92, hi: 0x92},\n\t{value: 0x00b1, lo: 0x93, hi: 0x93},\n\t{value: 0x011f, lo: 0x94, hi: 0x94},\n\t{value: 0x0091, lo: 0x95, hi: 0x95},\n\t{value: 0x0097, lo: 0x96, hi: 0x99},\n\t{value: 0x00a1, lo: 0x9a, hi: 0x9a},\n\t{value: 0x00a7, lo: 0x9b, hi: 0x9c},\n\t{value: 0x1ac9, lo: 0xa8, hi: 0xa8},\n\t// Block 0x41, offset 0x192\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8133, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8133, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8133, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812e, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8133, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t// Block 0x42, offset 0x1a0\n\t{value: 0x0007, lo: 0x06},\n\t{value: 0x22b0, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3b18, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3b26, lo: 0xae, hi: 0xae},\n\t// Block 0x43, offset 0x1a7\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3b2d, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3b34, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x44, offset 0x1ad\n\t{value: 0x017a, lo: 0x0e},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3b42, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3b49, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3b50, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3b57, lo: 0xa4, hi: 0xa4},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3b5e, lo: 0xa6, hi: 0xa6},\n\t{value: 0x27cf, lo: 0xac, hi: 0xad},\n\t{value: 0x27d6, lo: 0xaf, hi: 0xaf},\n\t{value: 0x2953, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x45, offset 0x1bc\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3bc7, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3bf1, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3c1b, lo: 0xaa, hi: 0xad},\n\t// Block 0x46, offset 0x1c0\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x0586, lo: 0xa9, hi: 0xaa},\n\t// Block 0x47, offset 0x1c2\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0057, lo: 0x80, hi: 0x8f},\n\t{value: 0x0083, lo: 0x90, hi: 0xa9},\n\t{value: 0x0021, lo: 0xaa, hi: 0xaa},\n\t// Block 0x48, offset 0x1c6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x2ad2, lo: 0x8c, hi: 0x8c},\n\t// Block 0x49, offset 0x1c8\n\t{value: 0x0266, lo: 0x02},\n\t{value: 0x1cbc, lo: 0xb4, hi: 0xb4},\n\t{value: 0x1a5a, lo: 0xb5, hi: 0xb6},\n\t// Block 0x4a, offset 0x1cb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x4596, lo: 0x9c, hi: 0x9c},\n\t// Block 0x4b, offset 0x1cd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0095, lo: 0xbc, hi: 0xbc},\n\t{value: 0x006d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x4c, offset 0x1d0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xaf, hi: 0xb1},\n\t// Block 0x4d, offset 0x1d2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x057a, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x4e, offset 0x1d5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa0, hi: 0xbf},\n\t// Block 0x4f, offset 0x1d7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0ebe, lo: 0x9f, hi: 0x9f},\n\t// Block 0x50, offset 0x1d9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x172a, lo: 0xb3, hi: 0xb3},\n\t// Block 0x51, offset 0x1db\n\t{value: 0x0004, lo: 0x0b},\n\t{value: 0x1692, lo: 0x80, hi: 0x82},\n\t{value: 0x16aa, lo: 0x83, hi: 0x83},\n\t{value: 0x16c2, lo: 0x84, hi: 0x85},\n\t{value: 0x16d2, lo: 0x86, hi: 0x89},\n\t{value: 0x16e6, lo: 0x8a, hi: 0x8c},\n\t{value: 0x16fa, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1702, lo: 0x8e, hi: 0x8e},\n\t{value: 0x170a, lo: 0x8f, hi: 0x90},\n\t{value: 0x1716, lo: 0x91, hi: 0x93},\n\t{value: 0x1726, lo: 0x94, hi: 0x94},\n\t{value: 0x172e, lo: 0x95, hi: 0x95},\n\t// Block 0x52, offset 0x1e7\n\t{value: 0x0004, lo: 0x09},\n\t{value: 0x0001, lo: 0x80, hi: 0x80},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x8134, lo: 0xac, hi: 0xac},\n\t{value: 0x812f, lo: 0xad, hi: 0xad},\n\t{value: 0x8130, lo: 0xae, hi: 0xae},\n\t{value: 0x8130, lo: 0xaf, hi: 0xaf},\n\t{value: 0x05ae, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0982, lo: 0xb8, hi: 0xba},\n\t// Block 0x53, offset 0x1f1\n\t{value: 0x0006, lo: 0x09},\n\t{value: 0x0406, lo: 0xb1, hi: 0xb1},\n\t{value: 0x040a, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4b7c, lo: 0xb3, hi: 0xb3},\n\t{value: 0x040e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4b82, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0412, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0416, lo: 0xb8, hi: 0xb8},\n\t{value: 0x041a, lo: 0xb9, hi: 0xb9},\n\t{value: 0x4b8e, lo: 0xba, hi: 0xbf},\n\t// Block 0x54, offset 0x1fb\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb4, hi: 0xbd},\n\t// Block 0x55, offset 0x1fe\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x02d8, lo: 0x9c, hi: 0x9c},\n\t{value: 0x02de, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9f},\n\t// Block 0x56, offset 0x202\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb1},\n\t// Block 0x57, offset 0x204\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x173e, lo: 0xb0, hi: 0xb0},\n\t// Block 0x58, offset 0x206\n\t{value: 0x0006, lo: 0x04},\n\t{value: 0x0047, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0063, lo: 0xb4, hi: 0xb4},\n\t{value: 0x00dd, lo: 0xb8, hi: 0xb8},\n\t{value: 0x00e9, lo: 0xb9, hi: 0xb9},\n\t// Block 0x59, offset 0x20b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xac, hi: 0xac},\n\t// Block 0x5a, offset 0x20e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xa0, hi: 0xb1},\n\t// Block 0x5b, offset 0x211\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xab, hi: 0xad},\n\t// Block 0x5c, offset 0x213\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x93, hi: 0x93},\n\t// Block 0x5d, offset 0x215\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb3, hi: 0xb3},\n\t// Block 0x5e, offset 0x217\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t// Block 0x5f, offset 0x219\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbf},\n\t// Block 0x60, offset 0x21f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t// Block 0x61, offset 0x222\n\t{value: 0x000c, lo: 0x04},\n\t{value: 0x173a, lo: 0x9c, hi: 0x9d},\n\t{value: 0x014f, lo: 0x9e, hi: 0x9e},\n\t{value: 0x174a, lo: 0x9f, hi: 0x9f},\n\t{value: 0x01a6, lo: 0xa9, hi: 0xa9},\n\t// Block 0x62, offset 0x227\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xad, hi: 0xad},\n\t// Block 0x63, offset 0x229\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x64, offset 0x230\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x65, offset 0x236\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x66, offset 0x23c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x67, offset 0x244\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x68, offset 0x24a\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x69, offset 0x250\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x6a, offset 0x256\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x6b, offset 0x25a\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x0003, lo: 0x81, hi: 0xbf},\n\t// Block 0x6c, offset 0x25c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0x6d, offset 0x25e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xa0, hi: 0xa0},\n\t// Block 0x6e, offset 0x260\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb6, hi: 0xba},\n\t// Block 0x6f, offset 0x262\n\t{value: 0x002d, lo: 0x05},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x70, offset 0x268\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812e, lo: 0xa6, hi: 0xa6},\n\t// Block 0x71, offset 0x26b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa7},\n\t// Block 0x72, offset 0x26d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t// Block 0x73, offset 0x26f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbf},\n\t// Block 0x74, offset 0x271\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x8133, lo: 0x88, hi: 0x8a},\n\t{value: 0x812e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8133, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812e, lo: 0x8d, hi: 0x90},\n\t// Block 0x75, offset 0x277\n\t{value: 0x0005, lo: 0x03},\n\t{value: 0x8133, lo: 0x82, hi: 0x82},\n\t{value: 0x812e, lo: 0x83, hi: 0x84},\n\t{value: 0x812e, lo: 0x85, hi: 0x85},\n\t// Block 0x76, offset 0x27b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x77, offset 0x27f\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4277, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4281, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x428b, lo: 0xab, hi: 0xab},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x78, offset 0x287\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8133, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x4295, lo: 0xae, hi: 0xae},\n\t{value: 0x429f, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8105, lo: 0xb3, hi: 0xb4},\n\t// Block 0x79, offset 0x28e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0x7a, offset 0x291\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8103, lo: 0xb6, hi: 0xb6},\n\t// Block 0x7b, offset 0x294\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8103, lo: 0xa9, hi: 0xaa},\n\t// Block 0x7c, offset 0x296\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7d, offset 0x299\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x42a9, lo: 0x8b, hi: 0x8b},\n\t{value: 0x42b3, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8133, lo: 0xa6, hi: 0xac},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t// Block 0x7e, offset 0x2a1\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x86, hi: 0x86},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9e},\n\t// Block 0x7f, offset 0x2a5\n\t{value: 0x5643, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x42c7, lo: 0xbb, hi: 0xbb},\n\t{value: 0x42bd, lo: 0xbc, hi: 0xbd},\n\t{value: 0x42d1, lo: 0xbe, hi: 0xbe},\n\t// Block 0x80, offset 0x2ac\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x81, offset 0x2af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x42db, lo: 0xba, hi: 0xba},\n\t{value: 0x42e5, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x82, offset 0x2b5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x80, hi: 0x80},\n\t// Block 0x83, offset 0x2b7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x84, offset 0x2b9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x85, offset 0x2bc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xab, hi: 0xab},\n\t// Block 0x86, offset 0x2be\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8103, lo: 0xba, hi: 0xba},\n\t// Block 0x87, offset 0x2c1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb5, hi: 0xb5},\n\t{value: 0x42ef, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8105, lo: 0xbd, hi: 0xbe},\n\t// Block 0x88, offset 0x2c6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x89, offset 0x2c8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t// Block 0x8a, offset 0x2ca\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x8b, offset 0x2cc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x87, hi: 0x87},\n\t// Block 0x8c, offset 0x2ce\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x99, hi: 0x99},\n\t// Block 0x8d, offset 0x2d0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0x82, hi: 0x82},\n\t{value: 0x8105, lo: 0x84, hi: 0x85},\n\t// Block 0x8e, offset 0x2d3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x97, hi: 0x97},\n\t// Block 0x8f, offset 0x2d5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x81, hi: 0x82},\n\t// Block 0x90, offset 0x2d7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x91, offset 0x2d9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb6},\n\t// Block 0x92, offset 0x2db\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb0, hi: 0xb1},\n\t// Block 0x93, offset 0x2dd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x94, offset 0x2df\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x46fd, lo: 0x9e, hi: 0x9e},\n\t{value: 0x4707, lo: 0x9f, hi: 0x9f},\n\t{value: 0x473b, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4749, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4757, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4765, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4773, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812c, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8131, lo: 0xad, hi: 0xad},\n\t{value: 0x812c, lo: 0xae, hi: 0xb2},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbf},\n\t// Block 0x95, offset 0x2ec\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812e, lo: 0x80, hi: 0x82},\n\t{value: 0x8133, lo: 0x85, hi: 0x89},\n\t{value: 0x812e, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8133, lo: 0xaa, hi: 0xad},\n\t{value: 0x4711, lo: 0xbb, hi: 0xbb},\n\t{value: 0x471b, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4781, lo: 0xbd, hi: 0xbd},\n\t{value: 0x479d, lo: 0xbe, hi: 0xbe},\n\t{value: 0x478f, lo: 0xbf, hi: 0xbf},\n\t// Block 0x96, offset 0x2f6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x47ab, lo: 0x80, hi: 0x80},\n\t// Block 0x97, offset 0x2f8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x82, hi: 0x84},\n\t// Block 0x98, offset 0x2fa\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0043, lo: 0x80, hi: 0x99},\n\t{value: 0x0083, lo: 0x9a, hi: 0xb3},\n\t{value: 0x0043, lo: 0xb4, hi: 0xbf},\n\t// Block 0x99, offset 0x2fe\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x005b, lo: 0x80, hi: 0x8d},\n\t{value: 0x0083, lo: 0x8e, hi: 0x94},\n\t{value: 0x0093, lo: 0x96, hi: 0xa7},\n\t{value: 0x0043, lo: 0xa8, hi: 0xbf},\n\t// Block 0x9a, offset 0x303\n\t{value: 0x0002, lo: 0x0b},\n\t{value: 0x0073, lo: 0x80, hi: 0x81},\n\t{value: 0x0083, lo: 0x82, hi: 0x9b},\n\t{value: 0x0043, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0047, lo: 0x9e, hi: 0x9f},\n\t{value: 0x004f, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0055, lo: 0xa5, hi: 0xa6},\n\t{value: 0x005d, lo: 0xa9, hi: 0xac},\n\t{value: 0x0067, lo: 0xae, hi: 0xb5},\n\t{value: 0x0083, lo: 0xb6, hi: 0xb9},\n\t{value: 0x008d, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0091, lo: 0xbd, hi: 0xbf},\n\t// Block 0x9b, offset 0x30f\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x0097, lo: 0x80, hi: 0x83},\n\t{value: 0x00a1, lo: 0x85, hi: 0x8f},\n\t{value: 0x0043, lo: 0x90, hi: 0xa9},\n\t{value: 0x0083, lo: 0xaa, hi: 0xbf},\n\t// Block 0x9c, offset 0x314\n\t{value: 0x0002, lo: 0x08},\n\t{value: 0x00af, lo: 0x80, hi: 0x83},\n\t{value: 0x0043, lo: 0x84, hi: 0x85},\n\t{value: 0x0049, lo: 0x87, hi: 0x8a},\n\t{value: 0x0055, lo: 0x8d, hi: 0x94},\n\t{value: 0x0067, lo: 0x96, hi: 0x9c},\n\t{value: 0x0083, lo: 0x9e, hi: 0xb7},\n\t{value: 0x0043, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0049, lo: 0xbb, hi: 0xbe},\n\t// Block 0x9d, offset 0x31d\n\t{value: 0x0002, lo: 0x05},\n\t{value: 0x0053, lo: 0x80, hi: 0x84},\n\t{value: 0x005f, lo: 0x86, hi: 0x86},\n\t{value: 0x0067, lo: 0x8a, hi: 0x90},\n\t{value: 0x0083, lo: 0x92, hi: 0xab},\n\t{value: 0x0043, lo: 0xac, hi: 0xbf},\n\t// Block 0x9e, offset 0x323\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x006b, lo: 0x80, hi: 0x85},\n\t{value: 0x0083, lo: 0x86, hi: 0x9f},\n\t{value: 0x0043, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0083, lo: 0xba, hi: 0xbf},\n\t// Block 0x9f, offset 0x328\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x008f, lo: 0x80, hi: 0x93},\n\t{value: 0x0043, lo: 0x94, hi: 0xad},\n\t{value: 0x0083, lo: 0xae, hi: 0xbf},\n\t// Block 0xa0, offset 0x32c\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x00a7, lo: 0x80, hi: 0x87},\n\t{value: 0x0043, lo: 0x88, hi: 0xa1},\n\t{value: 0x0083, lo: 0xa2, hi: 0xbb},\n\t{value: 0x0043, lo: 0xbc, hi: 0xbf},\n\t// Block 0xa1, offset 0x331\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x004b, lo: 0x80, hi: 0x95},\n\t{value: 0x0083, lo: 0x96, hi: 0xaf},\n\t{value: 0x0043, lo: 0xb0, hi: 0xbf},\n\t// Block 0xa2, offset 0x335\n\t{value: 0x0003, lo: 0x0f},\n\t{value: 0x023c, lo: 0x80, hi: 0x80},\n\t{value: 0x0556, lo: 0x81, hi: 0x81},\n\t{value: 0x023f, lo: 0x82, hi: 0x9a},\n\t{value: 0x0552, lo: 0x9b, hi: 0x9b},\n\t{value: 0x024b, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0254, lo: 0x9d, hi: 0x9d},\n\t{value: 0x025a, lo: 0x9e, hi: 0x9e},\n\t{value: 0x027e, lo: 0x9f, hi: 0x9f},\n\t{value: 0x026f, lo: 0xa0, hi: 0xa0},\n\t{value: 0x026c, lo: 0xa1, hi: 0xa1},\n\t{value: 0x01f7, lo: 0xa2, hi: 0xb2},\n\t{value: 0x020c, lo: 0xb3, hi: 0xb3},\n\t{value: 0x022a, lo: 0xb4, hi: 0xba},\n\t{value: 0x0556, lo: 0xbb, hi: 0xbb},\n\t{value: 0x023f, lo: 0xbc, hi: 0xbf},\n\t// Block 0xa3, offset 0x345\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x024b, lo: 0x80, hi: 0x94},\n\t{value: 0x0552, lo: 0x95, hi: 0x95},\n\t{value: 0x024b, lo: 0x96, hi: 0x96},\n\t{value: 0x0254, lo: 0x97, hi: 0x97},\n\t{value: 0x025a, lo: 0x98, hi: 0x98},\n\t{value: 0x027e, lo: 0x99, hi: 0x99},\n\t{value: 0x026f, lo: 0x9a, hi: 0x9a},\n\t{value: 0x026c, lo: 0x9b, hi: 0x9b},\n\t{value: 0x01f7, lo: 0x9c, hi: 0xac},\n\t{value: 0x020c, lo: 0xad, hi: 0xad},\n\t{value: 0x022a, lo: 0xae, hi: 0xb4},\n\t{value: 0x0556, lo: 0xb5, hi: 0xb5},\n\t{value: 0x023f, lo: 0xb6, hi: 0xbf},\n\t// Block 0xa4, offset 0x353\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x025d, lo: 0x80, hi: 0x8e},\n\t{value: 0x0552, lo: 0x8f, hi: 0x8f},\n\t{value: 0x024b, lo: 0x90, hi: 0x90},\n\t{value: 0x0254, lo: 0x91, hi: 0x91},\n\t{value: 0x025a, lo: 0x92, hi: 0x92},\n\t{value: 0x027e, lo: 0x93, hi: 0x93},\n\t{value: 0x026f, lo: 0x94, hi: 0x94},\n\t{value: 0x026c, lo: 0x95, hi: 0x95},\n\t{value: 0x01f7, lo: 0x96, hi: 0xa6},\n\t{value: 0x020c, lo: 0xa7, hi: 0xa7},\n\t{value: 0x022a, lo: 0xa8, hi: 0xae},\n\t{value: 0x0556, lo: 0xaf, hi: 0xaf},\n\t{value: 0x023f, lo: 0xb0, hi: 0xbf},\n\t// Block 0xa5, offset 0x361\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x026f, lo: 0x80, hi: 0x88},\n\t{value: 0x0552, lo: 0x89, hi: 0x89},\n\t{value: 0x024b, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0254, lo: 0x8b, hi: 0x8b},\n\t{value: 0x025a, lo: 0x8c, hi: 0x8c},\n\t{value: 0x027e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x026f, lo: 0x8e, hi: 0x8e},\n\t{value: 0x026c, lo: 0x8f, hi: 0x8f},\n\t{value: 0x01f7, lo: 0x90, hi: 0xa0},\n\t{value: 0x020c, lo: 0xa1, hi: 0xa1},\n\t{value: 0x022a, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0556, lo: 0xa9, hi: 0xa9},\n\t{value: 0x023f, lo: 0xaa, hi: 0xbf},\n\t// Block 0xa6, offset 0x36f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x8f, hi: 0x8f},\n\t// Block 0xa7, offset 0x371\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xae, hi: 0xae},\n\t// Block 0xa8, offset 0x373\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xac, hi: 0xaf},\n\t// Block 0xa9, offset 0x375\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8134, lo: 0xac, hi: 0xad},\n\t{value: 0x812e, lo: 0xae, hi: 0xae},\n\t{value: 0x8133, lo: 0xaf, hi: 0xaf},\n\t// Block 0xaa, offset 0x379\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x90, hi: 0x96},\n\t// Block 0xab, offset 0x37b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x84, hi: 0x89},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0xac, offset 0x37e\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0063, lo: 0x80, hi: 0x89},\n\t{value: 0x1a7e, lo: 0x8a, hi: 0x8a},\n\t{value: 0x1ab1, lo: 0x8b, hi: 0x8b},\n\t{value: 0x1acc, lo: 0x8c, hi: 0x8c},\n\t{value: 0x1ad2, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1cf0, lo: 0x8e, hi: 0x8e},\n\t{value: 0x1ade, lo: 0x8f, hi: 0x8f},\n\t{value: 0x1aa8, lo: 0xaa, hi: 0xaa},\n\t{value: 0x1aab, lo: 0xab, hi: 0xab},\n\t{value: 0x1aae, lo: 0xac, hi: 0xac},\n\t// Block 0xad, offset 0x389\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x1a6c, lo: 0x90, hi: 0x90},\n\t// Block 0xae, offset 0x38b\n\t{value: 0x0028, lo: 0x09},\n\t{value: 0x2999, lo: 0x80, hi: 0x80},\n\t{value: 0x295d, lo: 0x81, hi: 0x81},\n\t{value: 0x2967, lo: 0x82, hi: 0x82},\n\t{value: 0x297b, lo: 0x83, hi: 0x84},\n\t{value: 0x2985, lo: 0x85, hi: 0x86},\n\t{value: 0x2971, lo: 0x87, hi: 0x87},\n\t{value: 0x298f, lo: 0x88, hi: 0x88},\n\t{value: 0x0c6a, lo: 0x90, hi: 0x90},\n\t{value: 0x09e2, lo: 0x91, hi: 0x91},\n\t// Block 0xaf, offset 0x395\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb9},\n}\n\n// recompMap: 7528 bytes (entries only)\nvar recompMap map[uint32]rune\nvar recompMapOnce sync.Once\n\nconst recompMapPacked = \"\" +\n\t\"\\x00A\\x03\\x00\\x00\\x00\\x00\\xc0\" + // 0x00410300: 0x000000C0\n\t\"\\x00A\\x03\\x01\\x00\\x00\\x00\\xc1\" + // 0x00410301: 0x000000C1\n\t\"\\x00A\\x03\\x02\\x00\\x00\\x00\\xc2\" + // 0x00410302: 0x000000C2\n\t\"\\x00A\\x03\\x03\\x00\\x00\\x00\\xc3\" + // 0x00410303: 0x000000C3\n\t\"\\x00A\\x03\\b\\x00\\x00\\x00\\xc4\" + // 0x00410308: 0x000000C4\n\t\"\\x00A\\x03\\n\\x00\\x00\\x00\\xc5\" + // 0x0041030A: 0x000000C5\n\t\"\\x00C\\x03'\\x00\\x00\\x00\\xc7\" + // 0x00430327: 0x000000C7\n\t\"\\x00E\\x03\\x00\\x00\\x00\\x00\\xc8\" + // 0x00450300: 0x000000C8\n\t\"\\x00E\\x03\\x01\\x00\\x00\\x00\\xc9\" + // 0x00450301: 0x000000C9\n\t\"\\x00E\\x03\\x02\\x00\\x00\\x00\\xca\" + // 0x00450302: 0x000000CA\n\t\"\\x00E\\x03\\b\\x00\\x00\\x00\\xcb\" + // 0x00450308: 0x000000CB\n\t\"\\x00I\\x03\\x00\\x00\\x00\\x00\\xcc\" + // 0x00490300: 0x000000CC\n\t\"\\x00I\\x03\\x01\\x00\\x00\\x00\\xcd\" + // 0x00490301: 0x000000CD\n\t\"\\x00I\\x03\\x02\\x00\\x00\\x00\\xce\" + // 0x00490302: 0x000000CE\n\t\"\\x00I\\x03\\b\\x00\\x00\\x00\\xcf\" + // 0x00490308: 0x000000CF\n\t\"\\x00N\\x03\\x03\\x00\\x00\\x00\\xd1\" + // 0x004E0303: 0x000000D1\n\t\"\\x00O\\x03\\x00\\x00\\x00\\x00\\xd2\" + // 0x004F0300: 0x000000D2\n\t\"\\x00O\\x03\\x01\\x00\\x00\\x00\\xd3\" + // 0x004F0301: 0x000000D3\n\t\"\\x00O\\x03\\x02\\x00\\x00\\x00\\xd4\" + // 0x004F0302: 0x000000D4\n\t\"\\x00O\\x03\\x03\\x00\\x00\\x00\\xd5\" + // 0x004F0303: 0x000000D5\n\t\"\\x00O\\x03\\b\\x00\\x00\\x00\\xd6\" + // 0x004F0308: 0x000000D6\n\t\"\\x00U\\x03\\x00\\x00\\x00\\x00\\xd9\" + // 0x00550300: 0x000000D9\n\t\"\\x00U\\x03\\x01\\x00\\x00\\x00\\xda\" + // 0x00550301: 0x000000DA\n\t\"\\x00U\\x03\\x02\\x00\\x00\\x00\\xdb\" + // 0x00550302: 0x000000DB\n\t\"\\x00U\\x03\\b\\x00\\x00\\x00\\xdc\" + // 0x00550308: 0x000000DC\n\t\"\\x00Y\\x03\\x01\\x00\\x00\\x00\\xdd\" + // 0x00590301: 0x000000DD\n\t\"\\x00a\\x03\\x00\\x00\\x00\\x00\\xe0\" + // 0x00610300: 0x000000E0\n\t\"\\x00a\\x03\\x01\\x00\\x00\\x00\\xe1\" + // 0x00610301: 0x000000E1\n\t\"\\x00a\\x03\\x02\\x00\\x00\\x00\\xe2\" + // 0x00610302: 0x000000E2\n\t\"\\x00a\\x03\\x03\\x00\\x00\\x00\\xe3\" + // 0x00610303: 0x000000E3\n\t\"\\x00a\\x03\\b\\x00\\x00\\x00\\xe4\" + // 0x00610308: 0x000000E4\n\t\"\\x00a\\x03\\n\\x00\\x00\\x00\\xe5\" + // 0x0061030A: 0x000000E5\n\t\"\\x00c\\x03'\\x00\\x00\\x00\\xe7\" + // 0x00630327: 0x000000E7\n\t\"\\x00e\\x03\\x00\\x00\\x00\\x00\\xe8\" + // 0x00650300: 0x000000E8\n\t\"\\x00e\\x03\\x01\\x00\\x00\\x00\\xe9\" + // 0x00650301: 0x000000E9\n\t\"\\x00e\\x03\\x02\\x00\\x00\\x00\\xea\" + // 0x00650302: 0x000000EA\n\t\"\\x00e\\x03\\b\\x00\\x00\\x00\\xeb\" + // 0x00650308: 0x000000EB\n\t\"\\x00i\\x03\\x00\\x00\\x00\\x00\\xec\" + // 0x00690300: 0x000000EC\n\t\"\\x00i\\x03\\x01\\x00\\x00\\x00\\xed\" + // 0x00690301: 0x000000ED\n\t\"\\x00i\\x03\\x02\\x00\\x00\\x00\\xee\" + // 0x00690302: 0x000000EE\n\t\"\\x00i\\x03\\b\\x00\\x00\\x00\\xef\" + // 0x00690308: 0x000000EF\n\t\"\\x00n\\x03\\x03\\x00\\x00\\x00\\xf1\" + // 0x006E0303: 0x000000F1\n\t\"\\x00o\\x03\\x00\\x00\\x00\\x00\\xf2\" + // 0x006F0300: 0x000000F2\n\t\"\\x00o\\x03\\x01\\x00\\x00\\x00\\xf3\" + // 0x006F0301: 0x000000F3\n\t\"\\x00o\\x03\\x02\\x00\\x00\\x00\\xf4\" + // 0x006F0302: 0x000000F4\n\t\"\\x00o\\x03\\x03\\x00\\x00\\x00\\xf5\" + // 0x006F0303: 0x000000F5\n\t\"\\x00o\\x03\\b\\x00\\x00\\x00\\xf6\" + // 0x006F0308: 0x000000F6\n\t\"\\x00u\\x03\\x00\\x00\\x00\\x00\\xf9\" + // 0x00750300: 0x000000F9\n\t\"\\x00u\\x03\\x01\\x00\\x00\\x00\\xfa\" + // 0x00750301: 0x000000FA\n\t\"\\x00u\\x03\\x02\\x00\\x00\\x00\\xfb\" + // 0x00750302: 0x000000FB\n\t\"\\x00u\\x03\\b\\x00\\x00\\x00\\xfc\" + // 0x00750308: 0x000000FC\n\t\"\\x00y\\x03\\x01\\x00\\x00\\x00\\xfd\" + // 0x00790301: 0x000000FD\n\t\"\\x00y\\x03\\b\\x00\\x00\\x00\\xff\" + // 0x00790308: 0x000000FF\n\t\"\\x00A\\x03\\x04\\x00\\x00\\x01\\x00\" + // 0x00410304: 0x00000100\n\t\"\\x00a\\x03\\x04\\x00\\x00\\x01\\x01\" + // 0x00610304: 0x00000101\n\t\"\\x00A\\x03\\x06\\x00\\x00\\x01\\x02\" + // 0x00410306: 0x00000102\n\t\"\\x00a\\x03\\x06\\x00\\x00\\x01\\x03\" + // 0x00610306: 0x00000103\n\t\"\\x00A\\x03(\\x00\\x00\\x01\\x04\" + // 0x00410328: 0x00000104\n\t\"\\x00a\\x03(\\x00\\x00\\x01\\x05\" + // 0x00610328: 0x00000105\n\t\"\\x00C\\x03\\x01\\x00\\x00\\x01\\x06\" + // 0x00430301: 0x00000106\n\t\"\\x00c\\x03\\x01\\x00\\x00\\x01\\a\" + // 0x00630301: 0x00000107\n\t\"\\x00C\\x03\\x02\\x00\\x00\\x01\\b\" + // 0x00430302: 0x00000108\n\t\"\\x00c\\x03\\x02\\x00\\x00\\x01\\t\" + // 0x00630302: 0x00000109\n\t\"\\x00C\\x03\\a\\x00\\x00\\x01\\n\" + // 0x00430307: 0x0000010A\n\t\"\\x00c\\x03\\a\\x00\\x00\\x01\\v\" + // 0x00630307: 0x0000010B\n\t\"\\x00C\\x03\\f\\x00\\x00\\x01\\f\" + // 0x0043030C: 0x0000010C\n\t\"\\x00c\\x03\\f\\x00\\x00\\x01\\r\" + // 0x0063030C: 0x0000010D\n\t\"\\x00D\\x03\\f\\x00\\x00\\x01\\x0e\" + // 0x0044030C: 0x0000010E\n\t\"\\x00d\\x03\\f\\x00\\x00\\x01\\x0f\" + // 0x0064030C: 0x0000010F\n\t\"\\x00E\\x03\\x04\\x00\\x00\\x01\\x12\" + // 0x00450304: 0x00000112\n\t\"\\x00e\\x03\\x04\\x00\\x00\\x01\\x13\" + // 0x00650304: 0x00000113\n\t\"\\x00E\\x03\\x06\\x00\\x00\\x01\\x14\" + // 0x00450306: 0x00000114\n\t\"\\x00e\\x03\\x06\\x00\\x00\\x01\\x15\" + // 0x00650306: 0x00000115\n\t\"\\x00E\\x03\\a\\x00\\x00\\x01\\x16\" + // 0x00450307: 0x00000116\n\t\"\\x00e\\x03\\a\\x00\\x00\\x01\\x17\" + // 0x00650307: 0x00000117\n\t\"\\x00E\\x03(\\x00\\x00\\x01\\x18\" + // 0x00450328: 0x00000118\n\t\"\\x00e\\x03(\\x00\\x00\\x01\\x19\" + // 0x00650328: 0x00000119\n\t\"\\x00E\\x03\\f\\x00\\x00\\x01\\x1a\" + // 0x0045030C: 0x0000011A\n\t\"\\x00e\\x03\\f\\x00\\x00\\x01\\x1b\" + // 0x0065030C: 0x0000011B\n\t\"\\x00G\\x03\\x02\\x00\\x00\\x01\\x1c\" + // 0x00470302: 0x0000011C\n\t\"\\x00g\\x03\\x02\\x00\\x00\\x01\\x1d\" + // 0x00670302: 0x0000011D\n\t\"\\x00G\\x03\\x06\\x00\\x00\\x01\\x1e\" + // 0x00470306: 0x0000011E\n\t\"\\x00g\\x03\\x06\\x00\\x00\\x01\\x1f\" + // 0x00670306: 0x0000011F\n\t\"\\x00G\\x03\\a\\x00\\x00\\x01 \" + // 0x00470307: 0x00000120\n\t\"\\x00g\\x03\\a\\x00\\x00\\x01!\" + // 0x00670307: 0x00000121\n\t\"\\x00G\\x03'\\x00\\x00\\x01\\\"\" + // 0x00470327: 0x00000122\n\t\"\\x00g\\x03'\\x00\\x00\\x01#\" + // 0x00670327: 0x00000123\n\t\"\\x00H\\x03\\x02\\x00\\x00\\x01$\" + // 0x00480302: 0x00000124\n\t\"\\x00h\\x03\\x02\\x00\\x00\\x01%\" + // 0x00680302: 0x00000125\n\t\"\\x00I\\x03\\x03\\x00\\x00\\x01(\" + // 0x00490303: 0x00000128\n\t\"\\x00i\\x03\\x03\\x00\\x00\\x01)\" + // 0x00690303: 0x00000129\n\t\"\\x00I\\x03\\x04\\x00\\x00\\x01*\" + // 0x00490304: 0x0000012A\n\t\"\\x00i\\x03\\x04\\x00\\x00\\x01+\" + // 0x00690304: 0x0000012B\n\t\"\\x00I\\x03\\x06\\x00\\x00\\x01,\" + // 0x00490306: 0x0000012C\n\t\"\\x00i\\x03\\x06\\x00\\x00\\x01-\" + // 0x00690306: 0x0000012D\n\t\"\\x00I\\x03(\\x00\\x00\\x01.\" + // 0x00490328: 0x0000012E\n\t\"\\x00i\\x03(\\x00\\x00\\x01/\" + // 0x00690328: 0x0000012F\n\t\"\\x00I\\x03\\a\\x00\\x00\\x010\" + // 0x00490307: 0x00000130\n\t\"\\x00J\\x03\\x02\\x00\\x00\\x014\" + // 0x004A0302: 0x00000134\n\t\"\\x00j\\x03\\x02\\x00\\x00\\x015\" + // 0x006A0302: 0x00000135\n\t\"\\x00K\\x03'\\x00\\x00\\x016\" + // 0x004B0327: 0x00000136\n\t\"\\x00k\\x03'\\x00\\x00\\x017\" + // 0x006B0327: 0x00000137\n\t\"\\x00L\\x03\\x01\\x00\\x00\\x019\" + // 0x004C0301: 0x00000139\n\t\"\\x00l\\x03\\x01\\x00\\x00\\x01:\" + // 0x006C0301: 0x0000013A\n\t\"\\x00L\\x03'\\x00\\x00\\x01;\" + // 0x004C0327: 0x0000013B\n\t\"\\x00l\\x03'\\x00\\x00\\x01<\" + // 0x006C0327: 0x0000013C\n\t\"\\x00L\\x03\\f\\x00\\x00\\x01=\" + // 0x004C030C: 0x0000013D\n\t\"\\x00l\\x03\\f\\x00\\x00\\x01>\" + // 0x006C030C: 0x0000013E\n\t\"\\x00N\\x03\\x01\\x00\\x00\\x01C\" + // 0x004E0301: 0x00000143\n\t\"\\x00n\\x03\\x01\\x00\\x00\\x01D\" + // 0x006E0301: 0x00000144\n\t\"\\x00N\\x03'\\x00\\x00\\x01E\" + // 0x004E0327: 0x00000145\n\t\"\\x00n\\x03'\\x00\\x00\\x01F\" + // 0x006E0327: 0x00000146\n\t\"\\x00N\\x03\\f\\x00\\x00\\x01G\" + // 0x004E030C: 0x00000147\n\t\"\\x00n\\x03\\f\\x00\\x00\\x01H\" + // 0x006E030C: 0x00000148\n\t\"\\x00O\\x03\\x04\\x00\\x00\\x01L\" + // 0x004F0304: 0x0000014C\n\t\"\\x00o\\x03\\x04\\x00\\x00\\x01M\" + // 0x006F0304: 0x0000014D\n\t\"\\x00O\\x03\\x06\\x00\\x00\\x01N\" + // 0x004F0306: 0x0000014E\n\t\"\\x00o\\x03\\x06\\x00\\x00\\x01O\" + // 0x006F0306: 0x0000014F\n\t\"\\x00O\\x03\\v\\x00\\x00\\x01P\" + // 0x004F030B: 0x00000150\n\t\"\\x00o\\x03\\v\\x00\\x00\\x01Q\" + // 0x006F030B: 0x00000151\n\t\"\\x00R\\x03\\x01\\x00\\x00\\x01T\" + // 0x00520301: 0x00000154\n\t\"\\x00r\\x03\\x01\\x00\\x00\\x01U\" + // 0x00720301: 0x00000155\n\t\"\\x00R\\x03'\\x00\\x00\\x01V\" + // 0x00520327: 0x00000156\n\t\"\\x00r\\x03'\\x00\\x00\\x01W\" + // 0x00720327: 0x00000157\n\t\"\\x00R\\x03\\f\\x00\\x00\\x01X\" + // 0x0052030C: 0x00000158\n\t\"\\x00r\\x03\\f\\x00\\x00\\x01Y\" + // 0x0072030C: 0x00000159\n\t\"\\x00S\\x03\\x01\\x00\\x00\\x01Z\" + // 0x00530301: 0x0000015A\n\t\"\\x00s\\x03\\x01\\x00\\x00\\x01[\" + // 0x00730301: 0x0000015B\n\t\"\\x00S\\x03\\x02\\x00\\x00\\x01\\\\\" + // 0x00530302: 0x0000015C\n\t\"\\x00s\\x03\\x02\\x00\\x00\\x01]\" + // 0x00730302: 0x0000015D\n\t\"\\x00S\\x03'\\x00\\x00\\x01^\" + // 0x00530327: 0x0000015E\n\t\"\\x00s\\x03'\\x00\\x00\\x01_\" + // 0x00730327: 0x0000015F\n\t\"\\x00S\\x03\\f\\x00\\x00\\x01`\" + // 0x0053030C: 0x00000160\n\t\"\\x00s\\x03\\f\\x00\\x00\\x01a\" + // 0x0073030C: 0x00000161\n\t\"\\x00T\\x03'\\x00\\x00\\x01b\" + // 0x00540327: 0x00000162\n\t\"\\x00t\\x03'\\x00\\x00\\x01c\" + // 0x00740327: 0x00000163\n\t\"\\x00T\\x03\\f\\x00\\x00\\x01d\" + // 0x0054030C: 0x00000164\n\t\"\\x00t\\x03\\f\\x00\\x00\\x01e\" + // 0x0074030C: 0x00000165\n\t\"\\x00U\\x03\\x03\\x00\\x00\\x01h\" + // 0x00550303: 0x00000168\n\t\"\\x00u\\x03\\x03\\x00\\x00\\x01i\" + // 0x00750303: 0x00000169\n\t\"\\x00U\\x03\\x04\\x00\\x00\\x01j\" + // 0x00550304: 0x0000016A\n\t\"\\x00u\\x03\\x04\\x00\\x00\\x01k\" + // 0x00750304: 0x0000016B\n\t\"\\x00U\\x03\\x06\\x00\\x00\\x01l\" + // 0x00550306: 0x0000016C\n\t\"\\x00u\\x03\\x06\\x00\\x00\\x01m\" + // 0x00750306: 0x0000016D\n\t\"\\x00U\\x03\\n\\x00\\x00\\x01n\" + // 0x0055030A: 0x0000016E\n\t\"\\x00u\\x03\\n\\x00\\x00\\x01o\" + // 0x0075030A: 0x0000016F\n\t\"\\x00U\\x03\\v\\x00\\x00\\x01p\" + // 0x0055030B: 0x00000170\n\t\"\\x00u\\x03\\v\\x00\\x00\\x01q\" + // 0x0075030B: 0x00000171\n\t\"\\x00U\\x03(\\x00\\x00\\x01r\" + // 0x00550328: 0x00000172\n\t\"\\x00u\\x03(\\x00\\x00\\x01s\" + // 0x00750328: 0x00000173\n\t\"\\x00W\\x03\\x02\\x00\\x00\\x01t\" + // 0x00570302: 0x00000174\n\t\"\\x00w\\x03\\x02\\x00\\x00\\x01u\" + // 0x00770302: 0x00000175\n\t\"\\x00Y\\x03\\x02\\x00\\x00\\x01v\" + // 0x00590302: 0x00000176\n\t\"\\x00y\\x03\\x02\\x00\\x00\\x01w\" + // 0x00790302: 0x00000177\n\t\"\\x00Y\\x03\\b\\x00\\x00\\x01x\" + // 0x00590308: 0x00000178\n\t\"\\x00Z\\x03\\x01\\x00\\x00\\x01y\" + // 0x005A0301: 0x00000179\n\t\"\\x00z\\x03\\x01\\x00\\x00\\x01z\" + // 0x007A0301: 0x0000017A\n\t\"\\x00Z\\x03\\a\\x00\\x00\\x01{\" + // 0x005A0307: 0x0000017B\n\t\"\\x00z\\x03\\a\\x00\\x00\\x01|\" + // 0x007A0307: 0x0000017C\n\t\"\\x00Z\\x03\\f\\x00\\x00\\x01}\" + // 0x005A030C: 0x0000017D\n\t\"\\x00z\\x03\\f\\x00\\x00\\x01~\" + // 0x007A030C: 0x0000017E\n\t\"\\x00O\\x03\\x1b\\x00\\x00\\x01\\xa0\" + // 0x004F031B: 0x000001A0\n\t\"\\x00o\\x03\\x1b\\x00\\x00\\x01\\xa1\" + // 0x006F031B: 0x000001A1\n\t\"\\x00U\\x03\\x1b\\x00\\x00\\x01\\xaf\" + // 0x0055031B: 0x000001AF\n\t\"\\x00u\\x03\\x1b\\x00\\x00\\x01\\xb0\" + // 0x0075031B: 0x000001B0\n\t\"\\x00A\\x03\\f\\x00\\x00\\x01\\xcd\" + // 0x0041030C: 0x000001CD\n\t\"\\x00a\\x03\\f\\x00\\x00\\x01\\xce\" + // 0x0061030C: 0x000001CE\n\t\"\\x00I\\x03\\f\\x00\\x00\\x01\\xcf\" + // 0x0049030C: 0x000001CF\n\t\"\\x00i\\x03\\f\\x00\\x00\\x01\\xd0\" + // 0x0069030C: 0x000001D0\n\t\"\\x00O\\x03\\f\\x00\\x00\\x01\\xd1\" + // 0x004F030C: 0x000001D1\n\t\"\\x00o\\x03\\f\\x00\\x00\\x01\\xd2\" + // 0x006F030C: 0x000001D2\n\t\"\\x00U\\x03\\f\\x00\\x00\\x01\\xd3\" + // 0x0055030C: 0x000001D3\n\t\"\\x00u\\x03\\f\\x00\\x00\\x01\\xd4\" + // 0x0075030C: 0x000001D4\n\t\"\\x00\\xdc\\x03\\x04\\x00\\x00\\x01\\xd5\" + // 0x00DC0304: 0x000001D5\n\t\"\\x00\\xfc\\x03\\x04\\x00\\x00\\x01\\xd6\" + // 0x00FC0304: 0x000001D6\n\t\"\\x00\\xdc\\x03\\x01\\x00\\x00\\x01\\xd7\" + // 0x00DC0301: 0x000001D7\n\t\"\\x00\\xfc\\x03\\x01\\x00\\x00\\x01\\xd8\" + // 0x00FC0301: 0x000001D8\n\t\"\\x00\\xdc\\x03\\f\\x00\\x00\\x01\\xd9\" + // 0x00DC030C: 0x000001D9\n\t\"\\x00\\xfc\\x03\\f\\x00\\x00\\x01\\xda\" + // 0x00FC030C: 0x000001DA\n\t\"\\x00\\xdc\\x03\\x00\\x00\\x00\\x01\\xdb\" + // 0x00DC0300: 0x000001DB\n\t\"\\x00\\xfc\\x03\\x00\\x00\\x00\\x01\\xdc\" + // 0x00FC0300: 0x000001DC\n\t\"\\x00\\xc4\\x03\\x04\\x00\\x00\\x01\\xde\" + // 0x00C40304: 0x000001DE\n\t\"\\x00\\xe4\\x03\\x04\\x00\\x00\\x01\\xdf\" + // 0x00E40304: 0x000001DF\n\t\"\\x02&\\x03\\x04\\x00\\x00\\x01\\xe0\" + // 0x02260304: 0x000001E0\n\t\"\\x02'\\x03\\x04\\x00\\x00\\x01\\xe1\" + // 0x02270304: 0x000001E1\n\t\"\\x00\\xc6\\x03\\x04\\x00\\x00\\x01\\xe2\" + // 0x00C60304: 0x000001E2\n\t\"\\x00\\xe6\\x03\\x04\\x00\\x00\\x01\\xe3\" + // 0x00E60304: 0x000001E3\n\t\"\\x00G\\x03\\f\\x00\\x00\\x01\\xe6\" + // 0x0047030C: 0x000001E6\n\t\"\\x00g\\x03\\f\\x00\\x00\\x01\\xe7\" + // 0x0067030C: 0x000001E7\n\t\"\\x00K\\x03\\f\\x00\\x00\\x01\\xe8\" + // 0x004B030C: 0x000001E8\n\t\"\\x00k\\x03\\f\\x00\\x00\\x01\\xe9\" + // 0x006B030C: 0x000001E9\n\t\"\\x00O\\x03(\\x00\\x00\\x01\\xea\" + // 0x004F0328: 0x000001EA\n\t\"\\x00o\\x03(\\x00\\x00\\x01\\xeb\" + // 0x006F0328: 0x000001EB\n\t\"\\x01\\xea\\x03\\x04\\x00\\x00\\x01\\xec\" + // 0x01EA0304: 0x000001EC\n\t\"\\x01\\xeb\\x03\\x04\\x00\\x00\\x01\\xed\" + // 0x01EB0304: 0x000001ED\n\t\"\\x01\\xb7\\x03\\f\\x00\\x00\\x01\\xee\" + // 0x01B7030C: 0x000001EE\n\t\"\\x02\\x92\\x03\\f\\x00\\x00\\x01\\xef\" + // 0x0292030C: 0x000001EF\n\t\"\\x00j\\x03\\f\\x00\\x00\\x01\\xf0\" + // 0x006A030C: 0x000001F0\n\t\"\\x00G\\x03\\x01\\x00\\x00\\x01\\xf4\" + // 0x00470301: 0x000001F4\n\t\"\\x00g\\x03\\x01\\x00\\x00\\x01\\xf5\" + // 0x00670301: 0x000001F5\n\t\"\\x00N\\x03\\x00\\x00\\x00\\x01\\xf8\" + // 0x004E0300: 0x000001F8\n\t\"\\x00n\\x03\\x00\\x00\\x00\\x01\\xf9\" + // 0x006E0300: 0x000001F9\n\t\"\\x00\\xc5\\x03\\x01\\x00\\x00\\x01\\xfa\" + // 0x00C50301: 0x000001FA\n\t\"\\x00\\xe5\\x03\\x01\\x00\\x00\\x01\\xfb\" + // 0x00E50301: 0x000001FB\n\t\"\\x00\\xc6\\x03\\x01\\x00\\x00\\x01\\xfc\" + // 0x00C60301: 0x000001FC\n\t\"\\x00\\xe6\\x03\\x01\\x00\\x00\\x01\\xfd\" + // 0x00E60301: 0x000001FD\n\t\"\\x00\\xd8\\x03\\x01\\x00\\x00\\x01\\xfe\" + // 0x00D80301: 0x000001FE\n\t\"\\x00\\xf8\\x03\\x01\\x00\\x00\\x01\\xff\" + // 0x00F80301: 0x000001FF\n\t\"\\x00A\\x03\\x0f\\x00\\x00\\x02\\x00\" + // 0x0041030F: 0x00000200\n\t\"\\x00a\\x03\\x0f\\x00\\x00\\x02\\x01\" + // 0x0061030F: 0x00000201\n\t\"\\x00A\\x03\\x11\\x00\\x00\\x02\\x02\" + // 0x00410311: 0x00000202\n\t\"\\x00a\\x03\\x11\\x00\\x00\\x02\\x03\" + // 0x00610311: 0x00000203\n\t\"\\x00E\\x03\\x0f\\x00\\x00\\x02\\x04\" + // 0x0045030F: 0x00000204\n\t\"\\x00e\\x03\\x0f\\x00\\x00\\x02\\x05\" + // 0x0065030F: 0x00000205\n\t\"\\x00E\\x03\\x11\\x00\\x00\\x02\\x06\" + // 0x00450311: 0x00000206\n\t\"\\x00e\\x03\\x11\\x00\\x00\\x02\\a\" + // 0x00650311: 0x00000207\n\t\"\\x00I\\x03\\x0f\\x00\\x00\\x02\\b\" + // 0x0049030F: 0x00000208\n\t\"\\x00i\\x03\\x0f\\x00\\x00\\x02\\t\" + // 0x0069030F: 0x00000209\n\t\"\\x00I\\x03\\x11\\x00\\x00\\x02\\n\" + // 0x00490311: 0x0000020A\n\t\"\\x00i\\x03\\x11\\x00\\x00\\x02\\v\" + // 0x00690311: 0x0000020B\n\t\"\\x00O\\x03\\x0f\\x00\\x00\\x02\\f\" + // 0x004F030F: 0x0000020C\n\t\"\\x00o\\x03\\x0f\\x00\\x00\\x02\\r\" + // 0x006F030F: 0x0000020D\n\t\"\\x00O\\x03\\x11\\x00\\x00\\x02\\x0e\" + // 0x004F0311: 0x0000020E\n\t\"\\x00o\\x03\\x11\\x00\\x00\\x02\\x0f\" + // 0x006F0311: 0x0000020F\n\t\"\\x00R\\x03\\x0f\\x00\\x00\\x02\\x10\" + // 0x0052030F: 0x00000210\n\t\"\\x00r\\x03\\x0f\\x00\\x00\\x02\\x11\" + // 0x0072030F: 0x00000211\n\t\"\\x00R\\x03\\x11\\x00\\x00\\x02\\x12\" + // 0x00520311: 0x00000212\n\t\"\\x00r\\x03\\x11\\x00\\x00\\x02\\x13\" + // 0x00720311: 0x00000213\n\t\"\\x00U\\x03\\x0f\\x00\\x00\\x02\\x14\" + // 0x0055030F: 0x00000214\n\t\"\\x00u\\x03\\x0f\\x00\\x00\\x02\\x15\" + // 0x0075030F: 0x00000215\n\t\"\\x00U\\x03\\x11\\x00\\x00\\x02\\x16\" + // 0x00550311: 0x00000216\n\t\"\\x00u\\x03\\x11\\x00\\x00\\x02\\x17\" + // 0x00750311: 0x00000217\n\t\"\\x00S\\x03&\\x00\\x00\\x02\\x18\" + // 0x00530326: 0x00000218\n\t\"\\x00s\\x03&\\x00\\x00\\x02\\x19\" + // 0x00730326: 0x00000219\n\t\"\\x00T\\x03&\\x00\\x00\\x02\\x1a\" + // 0x00540326: 0x0000021A\n\t\"\\x00t\\x03&\\x00\\x00\\x02\\x1b\" + // 0x00740326: 0x0000021B\n\t\"\\x00H\\x03\\f\\x00\\x00\\x02\\x1e\" + // 0x0048030C: 0x0000021E\n\t\"\\x00h\\x03\\f\\x00\\x00\\x02\\x1f\" + // 0x0068030C: 0x0000021F\n\t\"\\x00A\\x03\\a\\x00\\x00\\x02&\" + // 0x00410307: 0x00000226\n\t\"\\x00a\\x03\\a\\x00\\x00\\x02'\" + // 0x00610307: 0x00000227\n\t\"\\x00E\\x03'\\x00\\x00\\x02(\" + // 0x00450327: 0x00000228\n\t\"\\x00e\\x03'\\x00\\x00\\x02)\" + // 0x00650327: 0x00000229\n\t\"\\x00\\xd6\\x03\\x04\\x00\\x00\\x02*\" + // 0x00D60304: 0x0000022A\n\t\"\\x00\\xf6\\x03\\x04\\x00\\x00\\x02+\" + // 0x00F60304: 0x0000022B\n\t\"\\x00\\xd5\\x03\\x04\\x00\\x00\\x02,\" + // 0x00D50304: 0x0000022C\n\t\"\\x00\\xf5\\x03\\x04\\x00\\x00\\x02-\" + // 0x00F50304: 0x0000022D\n\t\"\\x00O\\x03\\a\\x00\\x00\\x02.\" + // 0x004F0307: 0x0000022E\n\t\"\\x00o\\x03\\a\\x00\\x00\\x02/\" + // 0x006F0307: 0x0000022F\n\t\"\\x02.\\x03\\x04\\x00\\x00\\x020\" + // 0x022E0304: 0x00000230\n\t\"\\x02/\\x03\\x04\\x00\\x00\\x021\" + // 0x022F0304: 0x00000231\n\t\"\\x00Y\\x03\\x04\\x00\\x00\\x022\" + // 0x00590304: 0x00000232\n\t\"\\x00y\\x03\\x04\\x00\\x00\\x023\" + // 0x00790304: 0x00000233\n\t\"\\x00\\xa8\\x03\\x01\\x00\\x00\\x03\\x85\" + // 0x00A80301: 0x00000385\n\t\"\\x03\\x91\\x03\\x01\\x00\\x00\\x03\\x86\" + // 0x03910301: 0x00000386\n\t\"\\x03\\x95\\x03\\x01\\x00\\x00\\x03\\x88\" + // 0x03950301: 0x00000388\n\t\"\\x03\\x97\\x03\\x01\\x00\\x00\\x03\\x89\" + // 0x03970301: 0x00000389\n\t\"\\x03\\x99\\x03\\x01\\x00\\x00\\x03\\x8a\" + // 0x03990301: 0x0000038A\n\t\"\\x03\\x9f\\x03\\x01\\x00\\x00\\x03\\x8c\" + // 0x039F0301: 0x0000038C\n\t\"\\x03\\xa5\\x03\\x01\\x00\\x00\\x03\\x8e\" + // 0x03A50301: 0x0000038E\n\t\"\\x03\\xa9\\x03\\x01\\x00\\x00\\x03\\x8f\" + // 0x03A90301: 0x0000038F\n\t\"\\x03\\xca\\x03\\x01\\x00\\x00\\x03\\x90\" + // 0x03CA0301: 0x00000390\n\t\"\\x03\\x99\\x03\\b\\x00\\x00\\x03\\xaa\" + // 0x03990308: 0x000003AA\n\t\"\\x03\\xa5\\x03\\b\\x00\\x00\\x03\\xab\" + // 0x03A50308: 0x000003AB\n\t\"\\x03\\xb1\\x03\\x01\\x00\\x00\\x03\\xac\" + // 0x03B10301: 0x000003AC\n\t\"\\x03\\xb5\\x03\\x01\\x00\\x00\\x03\\xad\" + // 0x03B50301: 0x000003AD\n\t\"\\x03\\xb7\\x03\\x01\\x00\\x00\\x03\\xae\" + // 0x03B70301: 0x000003AE\n\t\"\\x03\\xb9\\x03\\x01\\x00\\x00\\x03\\xaf\" + // 0x03B90301: 0x000003AF\n\t\"\\x03\\xcb\\x03\\x01\\x00\\x00\\x03\\xb0\" + // 0x03CB0301: 0x000003B0\n\t\"\\x03\\xb9\\x03\\b\\x00\\x00\\x03\\xca\" + // 0x03B90308: 0x000003CA\n\t\"\\x03\\xc5\\x03\\b\\x00\\x00\\x03\\xcb\" + // 0x03C50308: 0x000003CB\n\t\"\\x03\\xbf\\x03\\x01\\x00\\x00\\x03\\xcc\" + // 0x03BF0301: 0x000003CC\n\t\"\\x03\\xc5\\x03\\x01\\x00\\x00\\x03\\xcd\" + // 0x03C50301: 0x000003CD\n\t\"\\x03\\xc9\\x03\\x01\\x00\\x00\\x03\\xce\" + // 0x03C90301: 0x000003CE\n\t\"\\x03\\xd2\\x03\\x01\\x00\\x00\\x03\\xd3\" + // 0x03D20301: 0x000003D3\n\t\"\\x03\\xd2\\x03\\b\\x00\\x00\\x03\\xd4\" + // 0x03D20308: 0x000003D4\n\t\"\\x04\\x15\\x03\\x00\\x00\\x00\\x04\\x00\" + // 0x04150300: 0x00000400\n\t\"\\x04\\x15\\x03\\b\\x00\\x00\\x04\\x01\" + // 0x04150308: 0x00000401\n\t\"\\x04\\x13\\x03\\x01\\x00\\x00\\x04\\x03\" + // 0x04130301: 0x00000403\n\t\"\\x04\\x06\\x03\\b\\x00\\x00\\x04\\a\" + // 0x04060308: 0x00000407\n\t\"\\x04\\x1a\\x03\\x01\\x00\\x00\\x04\\f\" + // 0x041A0301: 0x0000040C\n\t\"\\x04\\x18\\x03\\x00\\x00\\x00\\x04\\r\" + // 0x04180300: 0x0000040D\n\t\"\\x04#\\x03\\x06\\x00\\x00\\x04\\x0e\" + // 0x04230306: 0x0000040E\n\t\"\\x04\\x18\\x03\\x06\\x00\\x00\\x04\\x19\" + // 0x04180306: 0x00000419\n\t\"\\x048\\x03\\x06\\x00\\x00\\x049\" + // 0x04380306: 0x00000439\n\t\"\\x045\\x03\\x00\\x00\\x00\\x04P\" + // 0x04350300: 0x00000450\n\t\"\\x045\\x03\\b\\x00\\x00\\x04Q\" + // 0x04350308: 0x00000451\n\t\"\\x043\\x03\\x01\\x00\\x00\\x04S\" + // 0x04330301: 0x00000453\n\t\"\\x04V\\x03\\b\\x00\\x00\\x04W\" + // 0x04560308: 0x00000457\n\t\"\\x04:\\x03\\x01\\x00\\x00\\x04\\\\\" + // 0x043A0301: 0x0000045C\n\t\"\\x048\\x03\\x00\\x00\\x00\\x04]\" + // 0x04380300: 0x0000045D\n\t\"\\x04C\\x03\\x06\\x00\\x00\\x04^\" + // 0x04430306: 0x0000045E\n\t\"\\x04t\\x03\\x0f\\x00\\x00\\x04v\" + // 0x0474030F: 0x00000476\n\t\"\\x04u\\x03\\x0f\\x00\\x00\\x04w\" + // 0x0475030F: 0x00000477\n\t\"\\x04\\x16\\x03\\x06\\x00\\x00\\x04\\xc1\" + // 0x04160306: 0x000004C1\n\t\"\\x046\\x03\\x06\\x00\\x00\\x04\\xc2\" + // 0x04360306: 0x000004C2\n\t\"\\x04\\x10\\x03\\x06\\x00\\x00\\x04\\xd0\" + // 0x04100306: 0x000004D0\n\t\"\\x040\\x03\\x06\\x00\\x00\\x04\\xd1\" + // 0x04300306: 0x000004D1\n\t\"\\x04\\x10\\x03\\b\\x00\\x00\\x04\\xd2\" + // 0x04100308: 0x000004D2\n\t\"\\x040\\x03\\b\\x00\\x00\\x04\\xd3\" + // 0x04300308: 0x000004D3\n\t\"\\x04\\x15\\x03\\x06\\x00\\x00\\x04\\xd6\" + // 0x04150306: 0x000004D6\n\t\"\\x045\\x03\\x06\\x00\\x00\\x04\\xd7\" + // 0x04350306: 0x000004D7\n\t\"\\x04\\xd8\\x03\\b\\x00\\x00\\x04\\xda\" + // 0x04D80308: 0x000004DA\n\t\"\\x04\\xd9\\x03\\b\\x00\\x00\\x04\\xdb\" + // 0x04D90308: 0x000004DB\n\t\"\\x04\\x16\\x03\\b\\x00\\x00\\x04\\xdc\" + // 0x04160308: 0x000004DC\n\t\"\\x046\\x03\\b\\x00\\x00\\x04\\xdd\" + // 0x04360308: 0x000004DD\n\t\"\\x04\\x17\\x03\\b\\x00\\x00\\x04\\xde\" + // 0x04170308: 0x000004DE\n\t\"\\x047\\x03\\b\\x00\\x00\\x04\\xdf\" + // 0x04370308: 0x000004DF\n\t\"\\x04\\x18\\x03\\x04\\x00\\x00\\x04\\xe2\" + // 0x04180304: 0x000004E2\n\t\"\\x048\\x03\\x04\\x00\\x00\\x04\\xe3\" + // 0x04380304: 0x000004E3\n\t\"\\x04\\x18\\x03\\b\\x00\\x00\\x04\\xe4\" + // 0x04180308: 0x000004E4\n\t\"\\x048\\x03\\b\\x00\\x00\\x04\\xe5\" + // 0x04380308: 0x000004E5\n\t\"\\x04\\x1e\\x03\\b\\x00\\x00\\x04\\xe6\" + // 0x041E0308: 0x000004E6\n\t\"\\x04>\\x03\\b\\x00\\x00\\x04\\xe7\" + // 0x043E0308: 0x000004E7\n\t\"\\x04\\xe8\\x03\\b\\x00\\x00\\x04\\xea\" + // 0x04E80308: 0x000004EA\n\t\"\\x04\\xe9\\x03\\b\\x00\\x00\\x04\\xeb\" + // 0x04E90308: 0x000004EB\n\t\"\\x04-\\x03\\b\\x00\\x00\\x04\\xec\" + // 0x042D0308: 0x000004EC\n\t\"\\x04M\\x03\\b\\x00\\x00\\x04\\xed\" + // 0x044D0308: 0x000004ED\n\t\"\\x04#\\x03\\x04\\x00\\x00\\x04\\xee\" + // 0x04230304: 0x000004EE\n\t\"\\x04C\\x03\\x04\\x00\\x00\\x04\\xef\" + // 0x04430304: 0x000004EF\n\t\"\\x04#\\x03\\b\\x00\\x00\\x04\\xf0\" + // 0x04230308: 0x000004F0\n\t\"\\x04C\\x03\\b\\x00\\x00\\x04\\xf1\" + // 0x04430308: 0x000004F1\n\t\"\\x04#\\x03\\v\\x00\\x00\\x04\\xf2\" + // 0x0423030B: 0x000004F2\n\t\"\\x04C\\x03\\v\\x00\\x00\\x04\\xf3\" + // 0x0443030B: 0x000004F3\n\t\"\\x04'\\x03\\b\\x00\\x00\\x04\\xf4\" + // 0x04270308: 0x000004F4\n\t\"\\x04G\\x03\\b\\x00\\x00\\x04\\xf5\" + // 0x04470308: 0x000004F5\n\t\"\\x04+\\x03\\b\\x00\\x00\\x04\\xf8\" + // 0x042B0308: 0x000004F8\n\t\"\\x04K\\x03\\b\\x00\\x00\\x04\\xf9\" + // 0x044B0308: 0x000004F9\n\t\"\\x06'\\x06S\\x00\\x00\\x06\\\"\" + // 0x06270653: 0x00000622\n\t\"\\x06'\\x06T\\x00\\x00\\x06#\" + // 0x06270654: 0x00000623\n\t\"\\x06H\\x06T\\x00\\x00\\x06$\" + // 0x06480654: 0x00000624\n\t\"\\x06'\\x06U\\x00\\x00\\x06%\" + // 0x06270655: 0x00000625\n\t\"\\x06J\\x06T\\x00\\x00\\x06&\" + // 0x064A0654: 0x00000626\n\t\"\\x06\\xd5\\x06T\\x00\\x00\\x06\\xc0\" + // 0x06D50654: 0x000006C0\n\t\"\\x06\\xc1\\x06T\\x00\\x00\\x06\\xc2\" + // 0x06C10654: 0x000006C2\n\t\"\\x06\\xd2\\x06T\\x00\\x00\\x06\\xd3\" + // 0x06D20654: 0x000006D3\n\t\"\\t(\\t<\\x00\\x00\\t)\" + // 0x0928093C: 0x00000929\n\t\"\\t0\\t<\\x00\\x00\\t1\" + // 0x0930093C: 0x00000931\n\t\"\\t3\\t<\\x00\\x00\\t4\" + // 0x0933093C: 0x00000934\n\t\"\\t\\xc7\\t\\xbe\\x00\\x00\\t\\xcb\" + // 0x09C709BE: 0x000009CB\n\t\"\\t\\xc7\\t\\xd7\\x00\\x00\\t\\xcc\" + // 0x09C709D7: 0x000009CC\n\t\"\\vG\\vV\\x00\\x00\\vH\" + // 0x0B470B56: 0x00000B48\n\t\"\\vG\\v>\\x00\\x00\\vK\" + // 0x0B470B3E: 0x00000B4B\n\t\"\\vG\\vW\\x00\\x00\\vL\" + // 0x0B470B57: 0x00000B4C\n\t\"\\v\\x92\\v\\xd7\\x00\\x00\\v\\x94\" + // 0x0B920BD7: 0x00000B94\n\t\"\\v\\xc6\\v\\xbe\\x00\\x00\\v\\xca\" + // 0x0BC60BBE: 0x00000BCA\n\t\"\\v\\xc7\\v\\xbe\\x00\\x00\\v\\xcb\" + // 0x0BC70BBE: 0x00000BCB\n\t\"\\v\\xc6\\v\\xd7\\x00\\x00\\v\\xcc\" + // 0x0BC60BD7: 0x00000BCC\n\t\"\\fF\\fV\\x00\\x00\\fH\" + // 0x0C460C56: 0x00000C48\n\t\"\\f\\xbf\\f\\xd5\\x00\\x00\\f\\xc0\" + // 0x0CBF0CD5: 0x00000CC0\n\t\"\\f\\xc6\\f\\xd5\\x00\\x00\\f\\xc7\" + // 0x0CC60CD5: 0x00000CC7\n\t\"\\f\\xc6\\f\\xd6\\x00\\x00\\f\\xc8\" + // 0x0CC60CD6: 0x00000CC8\n\t\"\\f\\xc6\\f\\xc2\\x00\\x00\\f\\xca\" + // 0x0CC60CC2: 0x00000CCA\n\t\"\\f\\xca\\f\\xd5\\x00\\x00\\f\\xcb\" + // 0x0CCA0CD5: 0x00000CCB\n\t\"\\rF\\r>\\x00\\x00\\rJ\" + // 0x0D460D3E: 0x00000D4A\n\t\"\\rG\\r>\\x00\\x00\\rK\" + // 0x0D470D3E: 0x00000D4B\n\t\"\\rF\\rW\\x00\\x00\\rL\" + // 0x0D460D57: 0x00000D4C\n\t\"\\r\\xd9\\r\\xca\\x00\\x00\\r\\xda\" + // 0x0DD90DCA: 0x00000DDA\n\t\"\\r\\xd9\\r\\xcf\\x00\\x00\\r\\xdc\" + // 0x0DD90DCF: 0x00000DDC\n\t\"\\r\\xdc\\r\\xca\\x00\\x00\\r\\xdd\" + // 0x0DDC0DCA: 0x00000DDD\n\t\"\\r\\xd9\\r\\xdf\\x00\\x00\\r\\xde\" + // 0x0DD90DDF: 0x00000DDE\n\t\"\\x10%\\x10.\\x00\\x00\\x10&\" + // 0x1025102E: 0x00001026\n\t\"\\x1b\\x05\\x1b5\\x00\\x00\\x1b\\x06\" + // 0x1B051B35: 0x00001B06\n\t\"\\x1b\\a\\x1b5\\x00\\x00\\x1b\\b\" + // 0x1B071B35: 0x00001B08\n\t\"\\x1b\\t\\x1b5\\x00\\x00\\x1b\\n\" + // 0x1B091B35: 0x00001B0A\n\t\"\\x1b\\v\\x1b5\\x00\\x00\\x1b\\f\" + // 0x1B0B1B35: 0x00001B0C\n\t\"\\x1b\\r\\x1b5\\x00\\x00\\x1b\\x0e\" + // 0x1B0D1B35: 0x00001B0E\n\t\"\\x1b\\x11\\x1b5\\x00\\x00\\x1b\\x12\" + // 0x1B111B35: 0x00001B12\n\t\"\\x1b:\\x1b5\\x00\\x00\\x1b;\" + // 0x1B3A1B35: 0x00001B3B\n\t\"\\x1b<\\x1b5\\x00\\x00\\x1b=\" + // 0x1B3C1B35: 0x00001B3D\n\t\"\\x1b>\\x1b5\\x00\\x00\\x1b@\" + // 0x1B3E1B35: 0x00001B40\n\t\"\\x1b?\\x1b5\\x00\\x00\\x1bA\" + // 0x1B3F1B35: 0x00001B41\n\t\"\\x1bB\\x1b5\\x00\\x00\\x1bC\" + // 0x1B421B35: 0x00001B43\n\t\"\\x00A\\x03%\\x00\\x00\\x1e\\x00\" + // 0x00410325: 0x00001E00\n\t\"\\x00a\\x03%\\x00\\x00\\x1e\\x01\" + // 0x00610325: 0x00001E01\n\t\"\\x00B\\x03\\a\\x00\\x00\\x1e\\x02\" + // 0x00420307: 0x00001E02\n\t\"\\x00b\\x03\\a\\x00\\x00\\x1e\\x03\" + // 0x00620307: 0x00001E03\n\t\"\\x00B\\x03#\\x00\\x00\\x1e\\x04\" + // 0x00420323: 0x00001E04\n\t\"\\x00b\\x03#\\x00\\x00\\x1e\\x05\" + // 0x00620323: 0x00001E05\n\t\"\\x00B\\x031\\x00\\x00\\x1e\\x06\" + // 0x00420331: 0x00001E06\n\t\"\\x00b\\x031\\x00\\x00\\x1e\\a\" + // 0x00620331: 0x00001E07\n\t\"\\x00\\xc7\\x03\\x01\\x00\\x00\\x1e\\b\" + // 0x00C70301: 0x00001E08\n\t\"\\x00\\xe7\\x03\\x01\\x00\\x00\\x1e\\t\" + // 0x00E70301: 0x00001E09\n\t\"\\x00D\\x03\\a\\x00\\x00\\x1e\\n\" + // 0x00440307: 0x00001E0A\n\t\"\\x00d\\x03\\a\\x00\\x00\\x1e\\v\" + // 0x00640307: 0x00001E0B\n\t\"\\x00D\\x03#\\x00\\x00\\x1e\\f\" + // 0x00440323: 0x00001E0C\n\t\"\\x00d\\x03#\\x00\\x00\\x1e\\r\" + // 0x00640323: 0x00001E0D\n\t\"\\x00D\\x031\\x00\\x00\\x1e\\x0e\" + // 0x00440331: 0x00001E0E\n\t\"\\x00d\\x031\\x00\\x00\\x1e\\x0f\" + // 0x00640331: 0x00001E0F\n\t\"\\x00D\\x03'\\x00\\x00\\x1e\\x10\" + // 0x00440327: 0x00001E10\n\t\"\\x00d\\x03'\\x00\\x00\\x1e\\x11\" + // 0x00640327: 0x00001E11\n\t\"\\x00D\\x03-\\x00\\x00\\x1e\\x12\" + // 0x0044032D: 0x00001E12\n\t\"\\x00d\\x03-\\x00\\x00\\x1e\\x13\" + // 0x0064032D: 0x00001E13\n\t\"\\x01\\x12\\x03\\x00\\x00\\x00\\x1e\\x14\" + // 0x01120300: 0x00001E14\n\t\"\\x01\\x13\\x03\\x00\\x00\\x00\\x1e\\x15\" + // 0x01130300: 0x00001E15\n\t\"\\x01\\x12\\x03\\x01\\x00\\x00\\x1e\\x16\" + // 0x01120301: 0x00001E16\n\t\"\\x01\\x13\\x03\\x01\\x00\\x00\\x1e\\x17\" + // 0x01130301: 0x00001E17\n\t\"\\x00E\\x03-\\x00\\x00\\x1e\\x18\" + // 0x0045032D: 0x00001E18\n\t\"\\x00e\\x03-\\x00\\x00\\x1e\\x19\" + // 0x0065032D: 0x00001E19\n\t\"\\x00E\\x030\\x00\\x00\\x1e\\x1a\" + // 0x00450330: 0x00001E1A\n\t\"\\x00e\\x030\\x00\\x00\\x1e\\x1b\" + // 0x00650330: 0x00001E1B\n\t\"\\x02(\\x03\\x06\\x00\\x00\\x1e\\x1c\" + // 0x02280306: 0x00001E1C\n\t\"\\x02)\\x03\\x06\\x00\\x00\\x1e\\x1d\" + // 0x02290306: 0x00001E1D\n\t\"\\x00F\\x03\\a\\x00\\x00\\x1e\\x1e\" + // 0x00460307: 0x00001E1E\n\t\"\\x00f\\x03\\a\\x00\\x00\\x1e\\x1f\" + // 0x00660307: 0x00001E1F\n\t\"\\x00G\\x03\\x04\\x00\\x00\\x1e \" + // 0x00470304: 0x00001E20\n\t\"\\x00g\\x03\\x04\\x00\\x00\\x1e!\" + // 0x00670304: 0x00001E21\n\t\"\\x00H\\x03\\a\\x00\\x00\\x1e\\\"\" + // 0x00480307: 0x00001E22\n\t\"\\x00h\\x03\\a\\x00\\x00\\x1e#\" + // 0x00680307: 0x00001E23\n\t\"\\x00H\\x03#\\x00\\x00\\x1e$\" + // 0x00480323: 0x00001E24\n\t\"\\x00h\\x03#\\x00\\x00\\x1e%\" + // 0x00680323: 0x00001E25\n\t\"\\x00H\\x03\\b\\x00\\x00\\x1e&\" + // 0x00480308: 0x00001E26\n\t\"\\x00h\\x03\\b\\x00\\x00\\x1e'\" + // 0x00680308: 0x00001E27\n\t\"\\x00H\\x03'\\x00\\x00\\x1e(\" + // 0x00480327: 0x00001E28\n\t\"\\x00h\\x03'\\x00\\x00\\x1e)\" + // 0x00680327: 0x00001E29\n\t\"\\x00H\\x03.\\x00\\x00\\x1e*\" + // 0x0048032E: 0x00001E2A\n\t\"\\x00h\\x03.\\x00\\x00\\x1e+\" + // 0x0068032E: 0x00001E2B\n\t\"\\x00I\\x030\\x00\\x00\\x1e,\" + // 0x00490330: 0x00001E2C\n\t\"\\x00i\\x030\\x00\\x00\\x1e-\" + // 0x00690330: 0x00001E2D\n\t\"\\x00\\xcf\\x03\\x01\\x00\\x00\\x1e.\" + // 0x00CF0301: 0x00001E2E\n\t\"\\x00\\xef\\x03\\x01\\x00\\x00\\x1e/\" + // 0x00EF0301: 0x00001E2F\n\t\"\\x00K\\x03\\x01\\x00\\x00\\x1e0\" + // 0x004B0301: 0x00001E30\n\t\"\\x00k\\x03\\x01\\x00\\x00\\x1e1\" + // 0x006B0301: 0x00001E31\n\t\"\\x00K\\x03#\\x00\\x00\\x1e2\" + // 0x004B0323: 0x00001E32\n\t\"\\x00k\\x03#\\x00\\x00\\x1e3\" + // 0x006B0323: 0x00001E33\n\t\"\\x00K\\x031\\x00\\x00\\x1e4\" + // 0x004B0331: 0x00001E34\n\t\"\\x00k\\x031\\x00\\x00\\x1e5\" + // 0x006B0331: 0x00001E35\n\t\"\\x00L\\x03#\\x00\\x00\\x1e6\" + // 0x004C0323: 0x00001E36\n\t\"\\x00l\\x03#\\x00\\x00\\x1e7\" + // 0x006C0323: 0x00001E37\n\t\"\\x1e6\\x03\\x04\\x00\\x00\\x1e8\" + // 0x1E360304: 0x00001E38\n\t\"\\x1e7\\x03\\x04\\x00\\x00\\x1e9\" + // 0x1E370304: 0x00001E39\n\t\"\\x00L\\x031\\x00\\x00\\x1e:\" + // 0x004C0331: 0x00001E3A\n\t\"\\x00l\\x031\\x00\\x00\\x1e;\" + // 0x006C0331: 0x00001E3B\n\t\"\\x00L\\x03-\\x00\\x00\\x1e<\" + // 0x004C032D: 0x00001E3C\n\t\"\\x00l\\x03-\\x00\\x00\\x1e=\" + // 0x006C032D: 0x00001E3D\n\t\"\\x00M\\x03\\x01\\x00\\x00\\x1e>\" + // 0x004D0301: 0x00001E3E\n\t\"\\x00m\\x03\\x01\\x00\\x00\\x1e?\" + // 0x006D0301: 0x00001E3F\n\t\"\\x00M\\x03\\a\\x00\\x00\\x1e@\" + // 0x004D0307: 0x00001E40\n\t\"\\x00m\\x03\\a\\x00\\x00\\x1eA\" + // 0x006D0307: 0x00001E41\n\t\"\\x00M\\x03#\\x00\\x00\\x1eB\" + // 0x004D0323: 0x00001E42\n\t\"\\x00m\\x03#\\x00\\x00\\x1eC\" + // 0x006D0323: 0x00001E43\n\t\"\\x00N\\x03\\a\\x00\\x00\\x1eD\" + // 0x004E0307: 0x00001E44\n\t\"\\x00n\\x03\\a\\x00\\x00\\x1eE\" + // 0x006E0307: 0x00001E45\n\t\"\\x00N\\x03#\\x00\\x00\\x1eF\" + // 0x004E0323: 0x00001E46\n\t\"\\x00n\\x03#\\x00\\x00\\x1eG\" + // 0x006E0323: 0x00001E47\n\t\"\\x00N\\x031\\x00\\x00\\x1eH\" + // 0x004E0331: 0x00001E48\n\t\"\\x00n\\x031\\x00\\x00\\x1eI\" + // 0x006E0331: 0x00001E49\n\t\"\\x00N\\x03-\\x00\\x00\\x1eJ\" + // 0x004E032D: 0x00001E4A\n\t\"\\x00n\\x03-\\x00\\x00\\x1eK\" + // 0x006E032D: 0x00001E4B\n\t\"\\x00\\xd5\\x03\\x01\\x00\\x00\\x1eL\" + // 0x00D50301: 0x00001E4C\n\t\"\\x00\\xf5\\x03\\x01\\x00\\x00\\x1eM\" + // 0x00F50301: 0x00001E4D\n\t\"\\x00\\xd5\\x03\\b\\x00\\x00\\x1eN\" + // 0x00D50308: 0x00001E4E\n\t\"\\x00\\xf5\\x03\\b\\x00\\x00\\x1eO\" + // 0x00F50308: 0x00001E4F\n\t\"\\x01L\\x03\\x00\\x00\\x00\\x1eP\" + // 0x014C0300: 0x00001E50\n\t\"\\x01M\\x03\\x00\\x00\\x00\\x1eQ\" + // 0x014D0300: 0x00001E51\n\t\"\\x01L\\x03\\x01\\x00\\x00\\x1eR\" + // 0x014C0301: 0x00001E52\n\t\"\\x01M\\x03\\x01\\x00\\x00\\x1eS\" + // 0x014D0301: 0x00001E53\n\t\"\\x00P\\x03\\x01\\x00\\x00\\x1eT\" + // 0x00500301: 0x00001E54\n\t\"\\x00p\\x03\\x01\\x00\\x00\\x1eU\" + // 0x00700301: 0x00001E55\n\t\"\\x00P\\x03\\a\\x00\\x00\\x1eV\" + // 0x00500307: 0x00001E56\n\t\"\\x00p\\x03\\a\\x00\\x00\\x1eW\" + // 0x00700307: 0x00001E57\n\t\"\\x00R\\x03\\a\\x00\\x00\\x1eX\" + // 0x00520307: 0x00001E58\n\t\"\\x00r\\x03\\a\\x00\\x00\\x1eY\" + // 0x00720307: 0x00001E59\n\t\"\\x00R\\x03#\\x00\\x00\\x1eZ\" + // 0x00520323: 0x00001E5A\n\t\"\\x00r\\x03#\\x00\\x00\\x1e[\" + // 0x00720323: 0x00001E5B\n\t\"\\x1eZ\\x03\\x04\\x00\\x00\\x1e\\\\\" + // 0x1E5A0304: 0x00001E5C\n\t\"\\x1e[\\x03\\x04\\x00\\x00\\x1e]\" + // 0x1E5B0304: 0x00001E5D\n\t\"\\x00R\\x031\\x00\\x00\\x1e^\" + // 0x00520331: 0x00001E5E\n\t\"\\x00r\\x031\\x00\\x00\\x1e_\" + // 0x00720331: 0x00001E5F\n\t\"\\x00S\\x03\\a\\x00\\x00\\x1e`\" + // 0x00530307: 0x00001E60\n\t\"\\x00s\\x03\\a\\x00\\x00\\x1ea\" + // 0x00730307: 0x00001E61\n\t\"\\x00S\\x03#\\x00\\x00\\x1eb\" + // 0x00530323: 0x00001E62\n\t\"\\x00s\\x03#\\x00\\x00\\x1ec\" + // 0x00730323: 0x00001E63\n\t\"\\x01Z\\x03\\a\\x00\\x00\\x1ed\" + // 0x015A0307: 0x00001E64\n\t\"\\x01[\\x03\\a\\x00\\x00\\x1ee\" + // 0x015B0307: 0x00001E65\n\t\"\\x01`\\x03\\a\\x00\\x00\\x1ef\" + // 0x01600307: 0x00001E66\n\t\"\\x01a\\x03\\a\\x00\\x00\\x1eg\" + // 0x01610307: 0x00001E67\n\t\"\\x1eb\\x03\\a\\x00\\x00\\x1eh\" + // 0x1E620307: 0x00001E68\n\t\"\\x1ec\\x03\\a\\x00\\x00\\x1ei\" + // 0x1E630307: 0x00001E69\n\t\"\\x00T\\x03\\a\\x00\\x00\\x1ej\" + // 0x00540307: 0x00001E6A\n\t\"\\x00t\\x03\\a\\x00\\x00\\x1ek\" + // 0x00740307: 0x00001E6B\n\t\"\\x00T\\x03#\\x00\\x00\\x1el\" + // 0x00540323: 0x00001E6C\n\t\"\\x00t\\x03#\\x00\\x00\\x1em\" + // 0x00740323: 0x00001E6D\n\t\"\\x00T\\x031\\x00\\x00\\x1en\" + // 0x00540331: 0x00001E6E\n\t\"\\x00t\\x031\\x00\\x00\\x1eo\" + // 0x00740331: 0x00001E6F\n\t\"\\x00T\\x03-\\x00\\x00\\x1ep\" + // 0x0054032D: 0x00001E70\n\t\"\\x00t\\x03-\\x00\\x00\\x1eq\" + // 0x0074032D: 0x00001E71\n\t\"\\x00U\\x03$\\x00\\x00\\x1er\" + // 0x00550324: 0x00001E72\n\t\"\\x00u\\x03$\\x00\\x00\\x1es\" + // 0x00750324: 0x00001E73\n\t\"\\x00U\\x030\\x00\\x00\\x1et\" + // 0x00550330: 0x00001E74\n\t\"\\x00u\\x030\\x00\\x00\\x1eu\" + // 0x00750330: 0x00001E75\n\t\"\\x00U\\x03-\\x00\\x00\\x1ev\" + // 0x0055032D: 0x00001E76\n\t\"\\x00u\\x03-\\x00\\x00\\x1ew\" + // 0x0075032D: 0x00001E77\n\t\"\\x01h\\x03\\x01\\x00\\x00\\x1ex\" + // 0x01680301: 0x00001E78\n\t\"\\x01i\\x03\\x01\\x00\\x00\\x1ey\" + // 0x01690301: 0x00001E79\n\t\"\\x01j\\x03\\b\\x00\\x00\\x1ez\" + // 0x016A0308: 0x00001E7A\n\t\"\\x01k\\x03\\b\\x00\\x00\\x1e{\" + // 0x016B0308: 0x00001E7B\n\t\"\\x00V\\x03\\x03\\x00\\x00\\x1e|\" + // 0x00560303: 0x00001E7C\n\t\"\\x00v\\x03\\x03\\x00\\x00\\x1e}\" + // 0x00760303: 0x00001E7D\n\t\"\\x00V\\x03#\\x00\\x00\\x1e~\" + // 0x00560323: 0x00001E7E\n\t\"\\x00v\\x03#\\x00\\x00\\x1e\\x7f\" + // 0x00760323: 0x00001E7F\n\t\"\\x00W\\x03\\x00\\x00\\x00\\x1e\\x80\" + // 0x00570300: 0x00001E80\n\t\"\\x00w\\x03\\x00\\x00\\x00\\x1e\\x81\" + // 0x00770300: 0x00001E81\n\t\"\\x00W\\x03\\x01\\x00\\x00\\x1e\\x82\" + // 0x00570301: 0x00001E82\n\t\"\\x00w\\x03\\x01\\x00\\x00\\x1e\\x83\" + // 0x00770301: 0x00001E83\n\t\"\\x00W\\x03\\b\\x00\\x00\\x1e\\x84\" + // 0x00570308: 0x00001E84\n\t\"\\x00w\\x03\\b\\x00\\x00\\x1e\\x85\" + // 0x00770308: 0x00001E85\n\t\"\\x00W\\x03\\a\\x00\\x00\\x1e\\x86\" + // 0x00570307: 0x00001E86\n\t\"\\x00w\\x03\\a\\x00\\x00\\x1e\\x87\" + // 0x00770307: 0x00001E87\n\t\"\\x00W\\x03#\\x00\\x00\\x1e\\x88\" + // 0x00570323: 0x00001E88\n\t\"\\x00w\\x03#\\x00\\x00\\x1e\\x89\" + // 0x00770323: 0x00001E89\n\t\"\\x00X\\x03\\a\\x00\\x00\\x1e\\x8a\" + // 0x00580307: 0x00001E8A\n\t\"\\x00x\\x03\\a\\x00\\x00\\x1e\\x8b\" + // 0x00780307: 0x00001E8B\n\t\"\\x00X\\x03\\b\\x00\\x00\\x1e\\x8c\" + // 0x00580308: 0x00001E8C\n\t\"\\x00x\\x03\\b\\x00\\x00\\x1e\\x8d\" + // 0x00780308: 0x00001E8D\n\t\"\\x00Y\\x03\\a\\x00\\x00\\x1e\\x8e\" + // 0x00590307: 0x00001E8E\n\t\"\\x00y\\x03\\a\\x00\\x00\\x1e\\x8f\" + // 0x00790307: 0x00001E8F\n\t\"\\x00Z\\x03\\x02\\x00\\x00\\x1e\\x90\" + // 0x005A0302: 0x00001E90\n\t\"\\x00z\\x03\\x02\\x00\\x00\\x1e\\x91\" + // 0x007A0302: 0x00001E91\n\t\"\\x00Z\\x03#\\x00\\x00\\x1e\\x92\" + // 0x005A0323: 0x00001E92\n\t\"\\x00z\\x03#\\x00\\x00\\x1e\\x93\" + // 0x007A0323: 0x00001E93\n\t\"\\x00Z\\x031\\x00\\x00\\x1e\\x94\" + // 0x005A0331: 0x00001E94\n\t\"\\x00z\\x031\\x00\\x00\\x1e\\x95\" + // 0x007A0331: 0x00001E95\n\t\"\\x00h\\x031\\x00\\x00\\x1e\\x96\" + // 0x00680331: 0x00001E96\n\t\"\\x00t\\x03\\b\\x00\\x00\\x1e\\x97\" + // 0x00740308: 0x00001E97\n\t\"\\x00w\\x03\\n\\x00\\x00\\x1e\\x98\" + // 0x0077030A: 0x00001E98\n\t\"\\x00y\\x03\\n\\x00\\x00\\x1e\\x99\" + // 0x0079030A: 0x00001E99\n\t\"\\x01\\x7f\\x03\\a\\x00\\x00\\x1e\\x9b\" + // 0x017F0307: 0x00001E9B\n\t\"\\x00A\\x03#\\x00\\x00\\x1e\\xa0\" + // 0x00410323: 0x00001EA0\n\t\"\\x00a\\x03#\\x00\\x00\\x1e\\xa1\" + // 0x00610323: 0x00001EA1\n\t\"\\x00A\\x03\\t\\x00\\x00\\x1e\\xa2\" + // 0x00410309: 0x00001EA2\n\t\"\\x00a\\x03\\t\\x00\\x00\\x1e\\xa3\" + // 0x00610309: 0x00001EA3\n\t\"\\x00\\xc2\\x03\\x01\\x00\\x00\\x1e\\xa4\" + // 0x00C20301: 0x00001EA4\n\t\"\\x00\\xe2\\x03\\x01\\x00\\x00\\x1e\\xa5\" + // 0x00E20301: 0x00001EA5\n\t\"\\x00\\xc2\\x03\\x00\\x00\\x00\\x1e\\xa6\" + // 0x00C20300: 0x00001EA6\n\t\"\\x00\\xe2\\x03\\x00\\x00\\x00\\x1e\\xa7\" + // 0x00E20300: 0x00001EA7\n\t\"\\x00\\xc2\\x03\\t\\x00\\x00\\x1e\\xa8\" + // 0x00C20309: 0x00001EA8\n\t\"\\x00\\xe2\\x03\\t\\x00\\x00\\x1e\\xa9\" + // 0x00E20309: 0x00001EA9\n\t\"\\x00\\xc2\\x03\\x03\\x00\\x00\\x1e\\xaa\" + // 0x00C20303: 0x00001EAA\n\t\"\\x00\\xe2\\x03\\x03\\x00\\x00\\x1e\\xab\" + // 0x00E20303: 0x00001EAB\n\t\"\\x1e\\xa0\\x03\\x02\\x00\\x00\\x1e\\xac\" + // 0x1EA00302: 0x00001EAC\n\t\"\\x1e\\xa1\\x03\\x02\\x00\\x00\\x1e\\xad\" + // 0x1EA10302: 0x00001EAD\n\t\"\\x01\\x02\\x03\\x01\\x00\\x00\\x1e\\xae\" + // 0x01020301: 0x00001EAE\n\t\"\\x01\\x03\\x03\\x01\\x00\\x00\\x1e\\xaf\" + // 0x01030301: 0x00001EAF\n\t\"\\x01\\x02\\x03\\x00\\x00\\x00\\x1e\\xb0\" + // 0x01020300: 0x00001EB0\n\t\"\\x01\\x03\\x03\\x00\\x00\\x00\\x1e\\xb1\" + // 0x01030300: 0x00001EB1\n\t\"\\x01\\x02\\x03\\t\\x00\\x00\\x1e\\xb2\" + // 0x01020309: 0x00001EB2\n\t\"\\x01\\x03\\x03\\t\\x00\\x00\\x1e\\xb3\" + // 0x01030309: 0x00001EB3\n\t\"\\x01\\x02\\x03\\x03\\x00\\x00\\x1e\\xb4\" + // 0x01020303: 0x00001EB4\n\t\"\\x01\\x03\\x03\\x03\\x00\\x00\\x1e\\xb5\" + // 0x01030303: 0x00001EB5\n\t\"\\x1e\\xa0\\x03\\x06\\x00\\x00\\x1e\\xb6\" + // 0x1EA00306: 0x00001EB6\n\t\"\\x1e\\xa1\\x03\\x06\\x00\\x00\\x1e\\xb7\" + // 0x1EA10306: 0x00001EB7\n\t\"\\x00E\\x03#\\x00\\x00\\x1e\\xb8\" + // 0x00450323: 0x00001EB8\n\t\"\\x00e\\x03#\\x00\\x00\\x1e\\xb9\" + // 0x00650323: 0x00001EB9\n\t\"\\x00E\\x03\\t\\x00\\x00\\x1e\\xba\" + // 0x00450309: 0x00001EBA\n\t\"\\x00e\\x03\\t\\x00\\x00\\x1e\\xbb\" + // 0x00650309: 0x00001EBB\n\t\"\\x00E\\x03\\x03\\x00\\x00\\x1e\\xbc\" + // 0x00450303: 0x00001EBC\n\t\"\\x00e\\x03\\x03\\x00\\x00\\x1e\\xbd\" + // 0x00650303: 0x00001EBD\n\t\"\\x00\\xca\\x03\\x01\\x00\\x00\\x1e\\xbe\" + // 0x00CA0301: 0x00001EBE\n\t\"\\x00\\xea\\x03\\x01\\x00\\x00\\x1e\\xbf\" + // 0x00EA0301: 0x00001EBF\n\t\"\\x00\\xca\\x03\\x00\\x00\\x00\\x1e\\xc0\" + // 0x00CA0300: 0x00001EC0\n\t\"\\x00\\xea\\x03\\x00\\x00\\x00\\x1e\\xc1\" + // 0x00EA0300: 0x00001EC1\n\t\"\\x00\\xca\\x03\\t\\x00\\x00\\x1e\\xc2\" + // 0x00CA0309: 0x00001EC2\n\t\"\\x00\\xea\\x03\\t\\x00\\x00\\x1e\\xc3\" + // 0x00EA0309: 0x00001EC3\n\t\"\\x00\\xca\\x03\\x03\\x00\\x00\\x1e\\xc4\" + // 0x00CA0303: 0x00001EC4\n\t\"\\x00\\xea\\x03\\x03\\x00\\x00\\x1e\\xc5\" + // 0x00EA0303: 0x00001EC5\n\t\"\\x1e\\xb8\\x03\\x02\\x00\\x00\\x1e\\xc6\" + // 0x1EB80302: 0x00001EC6\n\t\"\\x1e\\xb9\\x03\\x02\\x00\\x00\\x1e\\xc7\" + // 0x1EB90302: 0x00001EC7\n\t\"\\x00I\\x03\\t\\x00\\x00\\x1e\\xc8\" + // 0x00490309: 0x00001EC8\n\t\"\\x00i\\x03\\t\\x00\\x00\\x1e\\xc9\" + // 0x00690309: 0x00001EC9\n\t\"\\x00I\\x03#\\x00\\x00\\x1e\\xca\" + // 0x00490323: 0x00001ECA\n\t\"\\x00i\\x03#\\x00\\x00\\x1e\\xcb\" + // 0x00690323: 0x00001ECB\n\t\"\\x00O\\x03#\\x00\\x00\\x1e\\xcc\" + // 0x004F0323: 0x00001ECC\n\t\"\\x00o\\x03#\\x00\\x00\\x1e\\xcd\" + // 0x006F0323: 0x00001ECD\n\t\"\\x00O\\x03\\t\\x00\\x00\\x1e\\xce\" + // 0x004F0309: 0x00001ECE\n\t\"\\x00o\\x03\\t\\x00\\x00\\x1e\\xcf\" + // 0x006F0309: 0x00001ECF\n\t\"\\x00\\xd4\\x03\\x01\\x00\\x00\\x1e\\xd0\" + // 0x00D40301: 0x00001ED0\n\t\"\\x00\\xf4\\x03\\x01\\x00\\x00\\x1e\\xd1\" + // 0x00F40301: 0x00001ED1\n\t\"\\x00\\xd4\\x03\\x00\\x00\\x00\\x1e\\xd2\" + // 0x00D40300: 0x00001ED2\n\t\"\\x00\\xf4\\x03\\x00\\x00\\x00\\x1e\\xd3\" + // 0x00F40300: 0x00001ED3\n\t\"\\x00\\xd4\\x03\\t\\x00\\x00\\x1e\\xd4\" + // 0x00D40309: 0x00001ED4\n\t\"\\x00\\xf4\\x03\\t\\x00\\x00\\x1e\\xd5\" + // 0x00F40309: 0x00001ED5\n\t\"\\x00\\xd4\\x03\\x03\\x00\\x00\\x1e\\xd6\" + // 0x00D40303: 0x00001ED6\n\t\"\\x00\\xf4\\x03\\x03\\x00\\x00\\x1e\\xd7\" + // 0x00F40303: 0x00001ED7\n\t\"\\x1e\\xcc\\x03\\x02\\x00\\x00\\x1e\\xd8\" + // 0x1ECC0302: 0x00001ED8\n\t\"\\x1e\\xcd\\x03\\x02\\x00\\x00\\x1e\\xd9\" + // 0x1ECD0302: 0x00001ED9\n\t\"\\x01\\xa0\\x03\\x01\\x00\\x00\\x1e\\xda\" + // 0x01A00301: 0x00001EDA\n\t\"\\x01\\xa1\\x03\\x01\\x00\\x00\\x1e\\xdb\" + // 0x01A10301: 0x00001EDB\n\t\"\\x01\\xa0\\x03\\x00\\x00\\x00\\x1e\\xdc\" + // 0x01A00300: 0x00001EDC\n\t\"\\x01\\xa1\\x03\\x00\\x00\\x00\\x1e\\xdd\" + // 0x01A10300: 0x00001EDD\n\t\"\\x01\\xa0\\x03\\t\\x00\\x00\\x1e\\xde\" + // 0x01A00309: 0x00001EDE\n\t\"\\x01\\xa1\\x03\\t\\x00\\x00\\x1e\\xdf\" + // 0x01A10309: 0x00001EDF\n\t\"\\x01\\xa0\\x03\\x03\\x00\\x00\\x1e\\xe0\" + // 0x01A00303: 0x00001EE0\n\t\"\\x01\\xa1\\x03\\x03\\x00\\x00\\x1e\\xe1\" + // 0x01A10303: 0x00001EE1\n\t\"\\x01\\xa0\\x03#\\x00\\x00\\x1e\\xe2\" + // 0x01A00323: 0x00001EE2\n\t\"\\x01\\xa1\\x03#\\x00\\x00\\x1e\\xe3\" + // 0x01A10323: 0x00001EE3\n\t\"\\x00U\\x03#\\x00\\x00\\x1e\\xe4\" + // 0x00550323: 0x00001EE4\n\t\"\\x00u\\x03#\\x00\\x00\\x1e\\xe5\" + // 0x00750323: 0x00001EE5\n\t\"\\x00U\\x03\\t\\x00\\x00\\x1e\\xe6\" + // 0x00550309: 0x00001EE6\n\t\"\\x00u\\x03\\t\\x00\\x00\\x1e\\xe7\" + // 0x00750309: 0x00001EE7\n\t\"\\x01\\xaf\\x03\\x01\\x00\\x00\\x1e\\xe8\" + // 0x01AF0301: 0x00001EE8\n\t\"\\x01\\xb0\\x03\\x01\\x00\\x00\\x1e\\xe9\" + // 0x01B00301: 0x00001EE9\n\t\"\\x01\\xaf\\x03\\x00\\x00\\x00\\x1e\\xea\" + // 0x01AF0300: 0x00001EEA\n\t\"\\x01\\xb0\\x03\\x00\\x00\\x00\\x1e\\xeb\" + // 0x01B00300: 0x00001EEB\n\t\"\\x01\\xaf\\x03\\t\\x00\\x00\\x1e\\xec\" + // 0x01AF0309: 0x00001EEC\n\t\"\\x01\\xb0\\x03\\t\\x00\\x00\\x1e\\xed\" + // 0x01B00309: 0x00001EED\n\t\"\\x01\\xaf\\x03\\x03\\x00\\x00\\x1e\\xee\" + // 0x01AF0303: 0x00001EEE\n\t\"\\x01\\xb0\\x03\\x03\\x00\\x00\\x1e\\xef\" + // 0x01B00303: 0x00001EEF\n\t\"\\x01\\xaf\\x03#\\x00\\x00\\x1e\\xf0\" + // 0x01AF0323: 0x00001EF0\n\t\"\\x01\\xb0\\x03#\\x00\\x00\\x1e\\xf1\" + // 0x01B00323: 0x00001EF1\n\t\"\\x00Y\\x03\\x00\\x00\\x00\\x1e\\xf2\" + // 0x00590300: 0x00001EF2\n\t\"\\x00y\\x03\\x00\\x00\\x00\\x1e\\xf3\" + // 0x00790300: 0x00001EF3\n\t\"\\x00Y\\x03#\\x00\\x00\\x1e\\xf4\" + // 0x00590323: 0x00001EF4\n\t\"\\x00y\\x03#\\x00\\x00\\x1e\\xf5\" + // 0x00790323: 0x00001EF5\n\t\"\\x00Y\\x03\\t\\x00\\x00\\x1e\\xf6\" + // 0x00590309: 0x00001EF6\n\t\"\\x00y\\x03\\t\\x00\\x00\\x1e\\xf7\" + // 0x00790309: 0x00001EF7\n\t\"\\x00Y\\x03\\x03\\x00\\x00\\x1e\\xf8\" + // 0x00590303: 0x00001EF8\n\t\"\\x00y\\x03\\x03\\x00\\x00\\x1e\\xf9\" + // 0x00790303: 0x00001EF9\n\t\"\\x03\\xb1\\x03\\x13\\x00\\x00\\x1f\\x00\" + // 0x03B10313: 0x00001F00\n\t\"\\x03\\xb1\\x03\\x14\\x00\\x00\\x1f\\x01\" + // 0x03B10314: 0x00001F01\n\t\"\\x1f\\x00\\x03\\x00\\x00\\x00\\x1f\\x02\" + // 0x1F000300: 0x00001F02\n\t\"\\x1f\\x01\\x03\\x00\\x00\\x00\\x1f\\x03\" + // 0x1F010300: 0x00001F03\n\t\"\\x1f\\x00\\x03\\x01\\x00\\x00\\x1f\\x04\" + // 0x1F000301: 0x00001F04\n\t\"\\x1f\\x01\\x03\\x01\\x00\\x00\\x1f\\x05\" + // 0x1F010301: 0x00001F05\n\t\"\\x1f\\x00\\x03B\\x00\\x00\\x1f\\x06\" + // 0x1F000342: 0x00001F06\n\t\"\\x1f\\x01\\x03B\\x00\\x00\\x1f\\a\" + // 0x1F010342: 0x00001F07\n\t\"\\x03\\x91\\x03\\x13\\x00\\x00\\x1f\\b\" + // 0x03910313: 0x00001F08\n\t\"\\x03\\x91\\x03\\x14\\x00\\x00\\x1f\\t\" + // 0x03910314: 0x00001F09\n\t\"\\x1f\\b\\x03\\x00\\x00\\x00\\x1f\\n\" + // 0x1F080300: 0x00001F0A\n\t\"\\x1f\\t\\x03\\x00\\x00\\x00\\x1f\\v\" + // 0x1F090300: 0x00001F0B\n\t\"\\x1f\\b\\x03\\x01\\x00\\x00\\x1f\\f\" + // 0x1F080301: 0x00001F0C\n\t\"\\x1f\\t\\x03\\x01\\x00\\x00\\x1f\\r\" + // 0x1F090301: 0x00001F0D\n\t\"\\x1f\\b\\x03B\\x00\\x00\\x1f\\x0e\" + // 0x1F080342: 0x00001F0E\n\t\"\\x1f\\t\\x03B\\x00\\x00\\x1f\\x0f\" + // 0x1F090342: 0x00001F0F\n\t\"\\x03\\xb5\\x03\\x13\\x00\\x00\\x1f\\x10\" + // 0x03B50313: 0x00001F10\n\t\"\\x03\\xb5\\x03\\x14\\x00\\x00\\x1f\\x11\" + // 0x03B50314: 0x00001F11\n\t\"\\x1f\\x10\\x03\\x00\\x00\\x00\\x1f\\x12\" + // 0x1F100300: 0x00001F12\n\t\"\\x1f\\x11\\x03\\x00\\x00\\x00\\x1f\\x13\" + // 0x1F110300: 0x00001F13\n\t\"\\x1f\\x10\\x03\\x01\\x00\\x00\\x1f\\x14\" + // 0x1F100301: 0x00001F14\n\t\"\\x1f\\x11\\x03\\x01\\x00\\x00\\x1f\\x15\" + // 0x1F110301: 0x00001F15\n\t\"\\x03\\x95\\x03\\x13\\x00\\x00\\x1f\\x18\" + // 0x03950313: 0x00001F18\n\t\"\\x03\\x95\\x03\\x14\\x00\\x00\\x1f\\x19\" + // 0x03950314: 0x00001F19\n\t\"\\x1f\\x18\\x03\\x00\\x00\\x00\\x1f\\x1a\" + // 0x1F180300: 0x00001F1A\n\t\"\\x1f\\x19\\x03\\x00\\x00\\x00\\x1f\\x1b\" + // 0x1F190300: 0x00001F1B\n\t\"\\x1f\\x18\\x03\\x01\\x00\\x00\\x1f\\x1c\" + // 0x1F180301: 0x00001F1C\n\t\"\\x1f\\x19\\x03\\x01\\x00\\x00\\x1f\\x1d\" + // 0x1F190301: 0x00001F1D\n\t\"\\x03\\xb7\\x03\\x13\\x00\\x00\\x1f \" + // 0x03B70313: 0x00001F20\n\t\"\\x03\\xb7\\x03\\x14\\x00\\x00\\x1f!\" + // 0x03B70314: 0x00001F21\n\t\"\\x1f \\x03\\x00\\x00\\x00\\x1f\\\"\" + // 0x1F200300: 0x00001F22\n\t\"\\x1f!\\x03\\x00\\x00\\x00\\x1f#\" + // 0x1F210300: 0x00001F23\n\t\"\\x1f \\x03\\x01\\x00\\x00\\x1f$\" + // 0x1F200301: 0x00001F24\n\t\"\\x1f!\\x03\\x01\\x00\\x00\\x1f%\" + // 0x1F210301: 0x00001F25\n\t\"\\x1f \\x03B\\x00\\x00\\x1f&\" + // 0x1F200342: 0x00001F26\n\t\"\\x1f!\\x03B\\x00\\x00\\x1f'\" + // 0x1F210342: 0x00001F27\n\t\"\\x03\\x97\\x03\\x13\\x00\\x00\\x1f(\" + // 0x03970313: 0x00001F28\n\t\"\\x03\\x97\\x03\\x14\\x00\\x00\\x1f)\" + // 0x03970314: 0x00001F29\n\t\"\\x1f(\\x03\\x00\\x00\\x00\\x1f*\" + // 0x1F280300: 0x00001F2A\n\t\"\\x1f)\\x03\\x00\\x00\\x00\\x1f+\" + // 0x1F290300: 0x00001F2B\n\t\"\\x1f(\\x03\\x01\\x00\\x00\\x1f,\" + // 0x1F280301: 0x00001F2C\n\t\"\\x1f)\\x03\\x01\\x00\\x00\\x1f-\" + // 0x1F290301: 0x00001F2D\n\t\"\\x1f(\\x03B\\x00\\x00\\x1f.\" + // 0x1F280342: 0x00001F2E\n\t\"\\x1f)\\x03B\\x00\\x00\\x1f/\" + // 0x1F290342: 0x00001F2F\n\t\"\\x03\\xb9\\x03\\x13\\x00\\x00\\x1f0\" + // 0x03B90313: 0x00001F30\n\t\"\\x03\\xb9\\x03\\x14\\x00\\x00\\x1f1\" + // 0x03B90314: 0x00001F31\n\t\"\\x1f0\\x03\\x00\\x00\\x00\\x1f2\" + // 0x1F300300: 0x00001F32\n\t\"\\x1f1\\x03\\x00\\x00\\x00\\x1f3\" + // 0x1F310300: 0x00001F33\n\t\"\\x1f0\\x03\\x01\\x00\\x00\\x1f4\" + // 0x1F300301: 0x00001F34\n\t\"\\x1f1\\x03\\x01\\x00\\x00\\x1f5\" + // 0x1F310301: 0x00001F35\n\t\"\\x1f0\\x03B\\x00\\x00\\x1f6\" + // 0x1F300342: 0x00001F36\n\t\"\\x1f1\\x03B\\x00\\x00\\x1f7\" + // 0x1F310342: 0x00001F37\n\t\"\\x03\\x99\\x03\\x13\\x00\\x00\\x1f8\" + // 0x03990313: 0x00001F38\n\t\"\\x03\\x99\\x03\\x14\\x00\\x00\\x1f9\" + // 0x03990314: 0x00001F39\n\t\"\\x1f8\\x03\\x00\\x00\\x00\\x1f:\" + // 0x1F380300: 0x00001F3A\n\t\"\\x1f9\\x03\\x00\\x00\\x00\\x1f;\" + // 0x1F390300: 0x00001F3B\n\t\"\\x1f8\\x03\\x01\\x00\\x00\\x1f<\" + // 0x1F380301: 0x00001F3C\n\t\"\\x1f9\\x03\\x01\\x00\\x00\\x1f=\" + // 0x1F390301: 0x00001F3D\n\t\"\\x1f8\\x03B\\x00\\x00\\x1f>\" + // 0x1F380342: 0x00001F3E\n\t\"\\x1f9\\x03B\\x00\\x00\\x1f?\" + // 0x1F390342: 0x00001F3F\n\t\"\\x03\\xbf\\x03\\x13\\x00\\x00\\x1f@\" + // 0x03BF0313: 0x00001F40\n\t\"\\x03\\xbf\\x03\\x14\\x00\\x00\\x1fA\" + // 0x03BF0314: 0x00001F41\n\t\"\\x1f@\\x03\\x00\\x00\\x00\\x1fB\" + // 0x1F400300: 0x00001F42\n\t\"\\x1fA\\x03\\x00\\x00\\x00\\x1fC\" + // 0x1F410300: 0x00001F43\n\t\"\\x1f@\\x03\\x01\\x00\\x00\\x1fD\" + // 0x1F400301: 0x00001F44\n\t\"\\x1fA\\x03\\x01\\x00\\x00\\x1fE\" + // 0x1F410301: 0x00001F45\n\t\"\\x03\\x9f\\x03\\x13\\x00\\x00\\x1fH\" + // 0x039F0313: 0x00001F48\n\t\"\\x03\\x9f\\x03\\x14\\x00\\x00\\x1fI\" + // 0x039F0314: 0x00001F49\n\t\"\\x1fH\\x03\\x00\\x00\\x00\\x1fJ\" + // 0x1F480300: 0x00001F4A\n\t\"\\x1fI\\x03\\x00\\x00\\x00\\x1fK\" + // 0x1F490300: 0x00001F4B\n\t\"\\x1fH\\x03\\x01\\x00\\x00\\x1fL\" + // 0x1F480301: 0x00001F4C\n\t\"\\x1fI\\x03\\x01\\x00\\x00\\x1fM\" + // 0x1F490301: 0x00001F4D\n\t\"\\x03\\xc5\\x03\\x13\\x00\\x00\\x1fP\" + // 0x03C50313: 0x00001F50\n\t\"\\x03\\xc5\\x03\\x14\\x00\\x00\\x1fQ\" + // 0x03C50314: 0x00001F51\n\t\"\\x1fP\\x03\\x00\\x00\\x00\\x1fR\" + // 0x1F500300: 0x00001F52\n\t\"\\x1fQ\\x03\\x00\\x00\\x00\\x1fS\" + // 0x1F510300: 0x00001F53\n\t\"\\x1fP\\x03\\x01\\x00\\x00\\x1fT\" + // 0x1F500301: 0x00001F54\n\t\"\\x1fQ\\x03\\x01\\x00\\x00\\x1fU\" + // 0x1F510301: 0x00001F55\n\t\"\\x1fP\\x03B\\x00\\x00\\x1fV\" + // 0x1F500342: 0x00001F56\n\t\"\\x1fQ\\x03B\\x00\\x00\\x1fW\" + // 0x1F510342: 0x00001F57\n\t\"\\x03\\xa5\\x03\\x14\\x00\\x00\\x1fY\" + // 0x03A50314: 0x00001F59\n\t\"\\x1fY\\x03\\x00\\x00\\x00\\x1f[\" + // 0x1F590300: 0x00001F5B\n\t\"\\x1fY\\x03\\x01\\x00\\x00\\x1f]\" + // 0x1F590301: 0x00001F5D\n\t\"\\x1fY\\x03B\\x00\\x00\\x1f_\" + // 0x1F590342: 0x00001F5F\n\t\"\\x03\\xc9\\x03\\x13\\x00\\x00\\x1f`\" + // 0x03C90313: 0x00001F60\n\t\"\\x03\\xc9\\x03\\x14\\x00\\x00\\x1fa\" + // 0x03C90314: 0x00001F61\n\t\"\\x1f`\\x03\\x00\\x00\\x00\\x1fb\" + // 0x1F600300: 0x00001F62\n\t\"\\x1fa\\x03\\x00\\x00\\x00\\x1fc\" + // 0x1F610300: 0x00001F63\n\t\"\\x1f`\\x03\\x01\\x00\\x00\\x1fd\" + // 0x1F600301: 0x00001F64\n\t\"\\x1fa\\x03\\x01\\x00\\x00\\x1fe\" + // 0x1F610301: 0x00001F65\n\t\"\\x1f`\\x03B\\x00\\x00\\x1ff\" + // 0x1F600342: 0x00001F66\n\t\"\\x1fa\\x03B\\x00\\x00\\x1fg\" + // 0x1F610342: 0x00001F67\n\t\"\\x03\\xa9\\x03\\x13\\x00\\x00\\x1fh\" + // 0x03A90313: 0x00001F68\n\t\"\\x03\\xa9\\x03\\x14\\x00\\x00\\x1fi\" + // 0x03A90314: 0x00001F69\n\t\"\\x1fh\\x03\\x00\\x00\\x00\\x1fj\" + // 0x1F680300: 0x00001F6A\n\t\"\\x1fi\\x03\\x00\\x00\\x00\\x1fk\" + // 0x1F690300: 0x00001F6B\n\t\"\\x1fh\\x03\\x01\\x00\\x00\\x1fl\" + // 0x1F680301: 0x00001F6C\n\t\"\\x1fi\\x03\\x01\\x00\\x00\\x1fm\" + // 0x1F690301: 0x00001F6D\n\t\"\\x1fh\\x03B\\x00\\x00\\x1fn\" + // 0x1F680342: 0x00001F6E\n\t\"\\x1fi\\x03B\\x00\\x00\\x1fo\" + // 0x1F690342: 0x00001F6F\n\t\"\\x03\\xb1\\x03\\x00\\x00\\x00\\x1fp\" + // 0x03B10300: 0x00001F70\n\t\"\\x03\\xb5\\x03\\x00\\x00\\x00\\x1fr\" + // 0x03B50300: 0x00001F72\n\t\"\\x03\\xb7\\x03\\x00\\x00\\x00\\x1ft\" + // 0x03B70300: 0x00001F74\n\t\"\\x03\\xb9\\x03\\x00\\x00\\x00\\x1fv\" + // 0x03B90300: 0x00001F76\n\t\"\\x03\\xbf\\x03\\x00\\x00\\x00\\x1fx\" + // 0x03BF0300: 0x00001F78\n\t\"\\x03\\xc5\\x03\\x00\\x00\\x00\\x1fz\" + // 0x03C50300: 0x00001F7A\n\t\"\\x03\\xc9\\x03\\x00\\x00\\x00\\x1f|\" + // 0x03C90300: 0x00001F7C\n\t\"\\x1f\\x00\\x03E\\x00\\x00\\x1f\\x80\" + // 0x1F000345: 0x00001F80\n\t\"\\x1f\\x01\\x03E\\x00\\x00\\x1f\\x81\" + // 0x1F010345: 0x00001F81\n\t\"\\x1f\\x02\\x03E\\x00\\x00\\x1f\\x82\" + // 0x1F020345: 0x00001F82\n\t\"\\x1f\\x03\\x03E\\x00\\x00\\x1f\\x83\" + // 0x1F030345: 0x00001F83\n\t\"\\x1f\\x04\\x03E\\x00\\x00\\x1f\\x84\" + // 0x1F040345: 0x00001F84\n\t\"\\x1f\\x05\\x03E\\x00\\x00\\x1f\\x85\" + // 0x1F050345: 0x00001F85\n\t\"\\x1f\\x06\\x03E\\x00\\x00\\x1f\\x86\" + // 0x1F060345: 0x00001F86\n\t\"\\x1f\\a\\x03E\\x00\\x00\\x1f\\x87\" + // 0x1F070345: 0x00001F87\n\t\"\\x1f\\b\\x03E\\x00\\x00\\x1f\\x88\" + // 0x1F080345: 0x00001F88\n\t\"\\x1f\\t\\x03E\\x00\\x00\\x1f\\x89\" + // 0x1F090345: 0x00001F89\n\t\"\\x1f\\n\\x03E\\x00\\x00\\x1f\\x8a\" + // 0x1F0A0345: 0x00001F8A\n\t\"\\x1f\\v\\x03E\\x00\\x00\\x1f\\x8b\" + // 0x1F0B0345: 0x00001F8B\n\t\"\\x1f\\f\\x03E\\x00\\x00\\x1f\\x8c\" + // 0x1F0C0345: 0x00001F8C\n\t\"\\x1f\\r\\x03E\\x00\\x00\\x1f\\x8d\" + // 0x1F0D0345: 0x00001F8D\n\t\"\\x1f\\x0e\\x03E\\x00\\x00\\x1f\\x8e\" + // 0x1F0E0345: 0x00001F8E\n\t\"\\x1f\\x0f\\x03E\\x00\\x00\\x1f\\x8f\" + // 0x1F0F0345: 0x00001F8F\n\t\"\\x1f \\x03E\\x00\\x00\\x1f\\x90\" + // 0x1F200345: 0x00001F90\n\t\"\\x1f!\\x03E\\x00\\x00\\x1f\\x91\" + // 0x1F210345: 0x00001F91\n\t\"\\x1f\\\"\\x03E\\x00\\x00\\x1f\\x92\" + // 0x1F220345: 0x00001F92\n\t\"\\x1f#\\x03E\\x00\\x00\\x1f\\x93\" + // 0x1F230345: 0x00001F93\n\t\"\\x1f$\\x03E\\x00\\x00\\x1f\\x94\" + // 0x1F240345: 0x00001F94\n\t\"\\x1f%\\x03E\\x00\\x00\\x1f\\x95\" + // 0x1F250345: 0x00001F95\n\t\"\\x1f&\\x03E\\x00\\x00\\x1f\\x96\" + // 0x1F260345: 0x00001F96\n\t\"\\x1f'\\x03E\\x00\\x00\\x1f\\x97\" + // 0x1F270345: 0x00001F97\n\t\"\\x1f(\\x03E\\x00\\x00\\x1f\\x98\" + // 0x1F280345: 0x00001F98\n\t\"\\x1f)\\x03E\\x00\\x00\\x1f\\x99\" + // 0x1F290345: 0x00001F99\n\t\"\\x1f*\\x03E\\x00\\x00\\x1f\\x9a\" + // 0x1F2A0345: 0x00001F9A\n\t\"\\x1f+\\x03E\\x00\\x00\\x1f\\x9b\" + // 0x1F2B0345: 0x00001F9B\n\t\"\\x1f,\\x03E\\x00\\x00\\x1f\\x9c\" + // 0x1F2C0345: 0x00001F9C\n\t\"\\x1f-\\x03E\\x00\\x00\\x1f\\x9d\" + // 0x1F2D0345: 0x00001F9D\n\t\"\\x1f.\\x03E\\x00\\x00\\x1f\\x9e\" + // 0x1F2E0345: 0x00001F9E\n\t\"\\x1f/\\x03E\\x00\\x00\\x1f\\x9f\" + // 0x1F2F0345: 0x00001F9F\n\t\"\\x1f`\\x03E\\x00\\x00\\x1f\\xa0\" + // 0x1F600345: 0x00001FA0\n\t\"\\x1fa\\x03E\\x00\\x00\\x1f\\xa1\" + // 0x1F610345: 0x00001FA1\n\t\"\\x1fb\\x03E\\x00\\x00\\x1f\\xa2\" + // 0x1F620345: 0x00001FA2\n\t\"\\x1fc\\x03E\\x00\\x00\\x1f\\xa3\" + // 0x1F630345: 0x00001FA3\n\t\"\\x1fd\\x03E\\x00\\x00\\x1f\\xa4\" + // 0x1F640345: 0x00001FA4\n\t\"\\x1fe\\x03E\\x00\\x00\\x1f\\xa5\" + // 0x1F650345: 0x00001FA5\n\t\"\\x1ff\\x03E\\x00\\x00\\x1f\\xa6\" + // 0x1F660345: 0x00001FA6\n\t\"\\x1fg\\x03E\\x00\\x00\\x1f\\xa7\" + // 0x1F670345: 0x00001FA7\n\t\"\\x1fh\\x03E\\x00\\x00\\x1f\\xa8\" + // 0x1F680345: 0x00001FA8\n\t\"\\x1fi\\x03E\\x00\\x00\\x1f\\xa9\" + // 0x1F690345: 0x00001FA9\n\t\"\\x1fj\\x03E\\x00\\x00\\x1f\\xaa\" + // 0x1F6A0345: 0x00001FAA\n\t\"\\x1fk\\x03E\\x00\\x00\\x1f\\xab\" + // 0x1F6B0345: 0x00001FAB\n\t\"\\x1fl\\x03E\\x00\\x00\\x1f\\xac\" + // 0x1F6C0345: 0x00001FAC\n\t\"\\x1fm\\x03E\\x00\\x00\\x1f\\xad\" + // 0x1F6D0345: 0x00001FAD\n\t\"\\x1fn\\x03E\\x00\\x00\\x1f\\xae\" + // 0x1F6E0345: 0x00001FAE\n\t\"\\x1fo\\x03E\\x00\\x00\\x1f\\xaf\" + // 0x1F6F0345: 0x00001FAF\n\t\"\\x03\\xb1\\x03\\x06\\x00\\x00\\x1f\\xb0\" + // 0x03B10306: 0x00001FB0\n\t\"\\x03\\xb1\\x03\\x04\\x00\\x00\\x1f\\xb1\" + // 0x03B10304: 0x00001FB1\n\t\"\\x1fp\\x03E\\x00\\x00\\x1f\\xb2\" + // 0x1F700345: 0x00001FB2\n\t\"\\x03\\xb1\\x03E\\x00\\x00\\x1f\\xb3\" + // 0x03B10345: 0x00001FB3\n\t\"\\x03\\xac\\x03E\\x00\\x00\\x1f\\xb4\" + // 0x03AC0345: 0x00001FB4\n\t\"\\x03\\xb1\\x03B\\x00\\x00\\x1f\\xb6\" + // 0x03B10342: 0x00001FB6\n\t\"\\x1f\\xb6\\x03E\\x00\\x00\\x1f\\xb7\" + // 0x1FB60345: 0x00001FB7\n\t\"\\x03\\x91\\x03\\x06\\x00\\x00\\x1f\\xb8\" + // 0x03910306: 0x00001FB8\n\t\"\\x03\\x91\\x03\\x04\\x00\\x00\\x1f\\xb9\" + // 0x03910304: 0x00001FB9\n\t\"\\x03\\x91\\x03\\x00\\x00\\x00\\x1f\\xba\" + // 0x03910300: 0x00001FBA\n\t\"\\x03\\x91\\x03E\\x00\\x00\\x1f\\xbc\" + // 0x03910345: 0x00001FBC\n\t\"\\x00\\xa8\\x03B\\x00\\x00\\x1f\\xc1\" + // 0x00A80342: 0x00001FC1\n\t\"\\x1ft\\x03E\\x00\\x00\\x1f\\xc2\" + // 0x1F740345: 0x00001FC2\n\t\"\\x03\\xb7\\x03E\\x00\\x00\\x1f\\xc3\" + // 0x03B70345: 0x00001FC3\n\t\"\\x03\\xae\\x03E\\x00\\x00\\x1f\\xc4\" + // 0x03AE0345: 0x00001FC4\n\t\"\\x03\\xb7\\x03B\\x00\\x00\\x1f\\xc6\" + // 0x03B70342: 0x00001FC6\n\t\"\\x1f\\xc6\\x03E\\x00\\x00\\x1f\\xc7\" + // 0x1FC60345: 0x00001FC7\n\t\"\\x03\\x95\\x03\\x00\\x00\\x00\\x1f\\xc8\" + // 0x03950300: 0x00001FC8\n\t\"\\x03\\x97\\x03\\x00\\x00\\x00\\x1f\\xca\" + // 0x03970300: 0x00001FCA\n\t\"\\x03\\x97\\x03E\\x00\\x00\\x1f\\xcc\" + // 0x03970345: 0x00001FCC\n\t\"\\x1f\\xbf\\x03\\x00\\x00\\x00\\x1f\\xcd\" + // 0x1FBF0300: 0x00001FCD\n\t\"\\x1f\\xbf\\x03\\x01\\x00\\x00\\x1f\\xce\" + // 0x1FBF0301: 0x00001FCE\n\t\"\\x1f\\xbf\\x03B\\x00\\x00\\x1f\\xcf\" + // 0x1FBF0342: 0x00001FCF\n\t\"\\x03\\xb9\\x03\\x06\\x00\\x00\\x1f\\xd0\" + // 0x03B90306: 0x00001FD0\n\t\"\\x03\\xb9\\x03\\x04\\x00\\x00\\x1f\\xd1\" + // 0x03B90304: 0x00001FD1\n\t\"\\x03\\xca\\x03\\x00\\x00\\x00\\x1f\\xd2\" + // 0x03CA0300: 0x00001FD2\n\t\"\\x03\\xb9\\x03B\\x00\\x00\\x1f\\xd6\" + // 0x03B90342: 0x00001FD6\n\t\"\\x03\\xca\\x03B\\x00\\x00\\x1f\\xd7\" + // 0x03CA0342: 0x00001FD7\n\t\"\\x03\\x99\\x03\\x06\\x00\\x00\\x1f\\xd8\" + // 0x03990306: 0x00001FD8\n\t\"\\x03\\x99\\x03\\x04\\x00\\x00\\x1f\\xd9\" + // 0x03990304: 0x00001FD9\n\t\"\\x03\\x99\\x03\\x00\\x00\\x00\\x1f\\xda\" + // 0x03990300: 0x00001FDA\n\t\"\\x1f\\xfe\\x03\\x00\\x00\\x00\\x1f\\xdd\" + // 0x1FFE0300: 0x00001FDD\n\t\"\\x1f\\xfe\\x03\\x01\\x00\\x00\\x1f\\xde\" + // 0x1FFE0301: 0x00001FDE\n\t\"\\x1f\\xfe\\x03B\\x00\\x00\\x1f\\xdf\" + // 0x1FFE0342: 0x00001FDF\n\t\"\\x03\\xc5\\x03\\x06\\x00\\x00\\x1f\\xe0\" + // 0x03C50306: 0x00001FE0\n\t\"\\x03\\xc5\\x03\\x04\\x00\\x00\\x1f\\xe1\" + // 0x03C50304: 0x00001FE1\n\t\"\\x03\\xcb\\x03\\x00\\x00\\x00\\x1f\\xe2\" + // 0x03CB0300: 0x00001FE2\n\t\"\\x03\\xc1\\x03\\x13\\x00\\x00\\x1f\\xe4\" + // 0x03C10313: 0x00001FE4\n\t\"\\x03\\xc1\\x03\\x14\\x00\\x00\\x1f\\xe5\" + // 0x03C10314: 0x00001FE5\n\t\"\\x03\\xc5\\x03B\\x00\\x00\\x1f\\xe6\" + // 0x03C50342: 0x00001FE6\n\t\"\\x03\\xcb\\x03B\\x00\\x00\\x1f\\xe7\" + // 0x03CB0342: 0x00001FE7\n\t\"\\x03\\xa5\\x03\\x06\\x00\\x00\\x1f\\xe8\" + // 0x03A50306: 0x00001FE8\n\t\"\\x03\\xa5\\x03\\x04\\x00\\x00\\x1f\\xe9\" + // 0x03A50304: 0x00001FE9\n\t\"\\x03\\xa5\\x03\\x00\\x00\\x00\\x1f\\xea\" + // 0x03A50300: 0x00001FEA\n\t\"\\x03\\xa1\\x03\\x14\\x00\\x00\\x1f\\xec\" + // 0x03A10314: 0x00001FEC\n\t\"\\x00\\xa8\\x03\\x00\\x00\\x00\\x1f\\xed\" + // 0x00A80300: 0x00001FED\n\t\"\\x1f|\\x03E\\x00\\x00\\x1f\\xf2\" + // 0x1F7C0345: 0x00001FF2\n\t\"\\x03\\xc9\\x03E\\x00\\x00\\x1f\\xf3\" + // 0x03C90345: 0x00001FF3\n\t\"\\x03\\xce\\x03E\\x00\\x00\\x1f\\xf4\" + // 0x03CE0345: 0x00001FF4\n\t\"\\x03\\xc9\\x03B\\x00\\x00\\x1f\\xf6\" + // 0x03C90342: 0x00001FF6\n\t\"\\x1f\\xf6\\x03E\\x00\\x00\\x1f\\xf7\" + // 0x1FF60345: 0x00001FF7\n\t\"\\x03\\x9f\\x03\\x00\\x00\\x00\\x1f\\xf8\" + // 0x039F0300: 0x00001FF8\n\t\"\\x03\\xa9\\x03\\x00\\x00\\x00\\x1f\\xfa\" + // 0x03A90300: 0x00001FFA\n\t\"\\x03\\xa9\\x03E\\x00\\x00\\x1f\\xfc\" + // 0x03A90345: 0x00001FFC\n\t\"!\\x90\\x038\\x00\\x00!\\x9a\" + // 0x21900338: 0x0000219A\n\t\"!\\x92\\x038\\x00\\x00!\\x9b\" + // 0x21920338: 0x0000219B\n\t\"!\\x94\\x038\\x00\\x00!\\xae\" + // 0x21940338: 0x000021AE\n\t\"!\\xd0\\x038\\x00\\x00!\\xcd\" + // 0x21D00338: 0x000021CD\n\t\"!\\xd4\\x038\\x00\\x00!\\xce\" + // 0x21D40338: 0x000021CE\n\t\"!\\xd2\\x038\\x00\\x00!\\xcf\" + // 0x21D20338: 0x000021CF\n\t\"\\\"\\x03\\x038\\x00\\x00\\\"\\x04\" + // 0x22030338: 0x00002204\n\t\"\\\"\\b\\x038\\x00\\x00\\\"\\t\" + // 0x22080338: 0x00002209\n\t\"\\\"\\v\\x038\\x00\\x00\\\"\\f\" + // 0x220B0338: 0x0000220C\n\t\"\\\"#\\x038\\x00\\x00\\\"$\" + // 0x22230338: 0x00002224\n\t\"\\\"%\\x038\\x00\\x00\\\"&\" + // 0x22250338: 0x00002226\n\t\"\\\"<\\x038\\x00\\x00\\\"A\" + // 0x223C0338: 0x00002241\n\t\"\\\"C\\x038\\x00\\x00\\\"D\" + // 0x22430338: 0x00002244\n\t\"\\\"E\\x038\\x00\\x00\\\"G\" + // 0x22450338: 0x00002247\n\t\"\\\"H\\x038\\x00\\x00\\\"I\" + // 0x22480338: 0x00002249\n\t\"\\x00=\\x038\\x00\\x00\\\"`\" + // 0x003D0338: 0x00002260\n\t\"\\\"a\\x038\\x00\\x00\\\"b\" + // 0x22610338: 0x00002262\n\t\"\\\"M\\x038\\x00\\x00\\\"m\" + // 0x224D0338: 0x0000226D\n\t\"\\x00<\\x038\\x00\\x00\\\"n\" + // 0x003C0338: 0x0000226E\n\t\"\\x00>\\x038\\x00\\x00\\\"o\" + // 0x003E0338: 0x0000226F\n\t\"\\\"d\\x038\\x00\\x00\\\"p\" + // 0x22640338: 0x00002270\n\t\"\\\"e\\x038\\x00\\x00\\\"q\" + // 0x22650338: 0x00002271\n\t\"\\\"r\\x038\\x00\\x00\\\"t\" + // 0x22720338: 0x00002274\n\t\"\\\"s\\x038\\x00\\x00\\\"u\" + // 0x22730338: 0x00002275\n\t\"\\\"v\\x038\\x00\\x00\\\"x\" + // 0x22760338: 0x00002278\n\t\"\\\"w\\x038\\x00\\x00\\\"y\" + // 0x22770338: 0x00002279\n\t\"\\\"z\\x038\\x00\\x00\\\"\\x80\" + // 0x227A0338: 0x00002280\n\t\"\\\"{\\x038\\x00\\x00\\\"\\x81\" + // 0x227B0338: 0x00002281\n\t\"\\\"\\x82\\x038\\x00\\x00\\\"\\x84\" + // 0x22820338: 0x00002284\n\t\"\\\"\\x83\\x038\\x00\\x00\\\"\\x85\" + // 0x22830338: 0x00002285\n\t\"\\\"\\x86\\x038\\x00\\x00\\\"\\x88\" + // 0x22860338: 0x00002288\n\t\"\\\"\\x87\\x038\\x00\\x00\\\"\\x89\" + // 0x22870338: 0x00002289\n\t\"\\\"\\xa2\\x038\\x00\\x00\\\"\\xac\" + // 0x22A20338: 0x000022AC\n\t\"\\\"\\xa8\\x038\\x00\\x00\\\"\\xad\" + // 0x22A80338: 0x000022AD\n\t\"\\\"\\xa9\\x038\\x00\\x00\\\"\\xae\" + // 0x22A90338: 0x000022AE\n\t\"\\\"\\xab\\x038\\x00\\x00\\\"\\xaf\" + // 0x22AB0338: 0x000022AF\n\t\"\\\"|\\x038\\x00\\x00\\\"\\xe0\" + // 0x227C0338: 0x000022E0\n\t\"\\\"}\\x038\\x00\\x00\\\"\\xe1\" + // 0x227D0338: 0x000022E1\n\t\"\\\"\\x91\\x038\\x00\\x00\\\"\\xe2\" + // 0x22910338: 0x000022E2\n\t\"\\\"\\x92\\x038\\x00\\x00\\\"\\xe3\" + // 0x22920338: 0x000022E3\n\t\"\\\"\\xb2\\x038\\x00\\x00\\\"\\xea\" + // 0x22B20338: 0x000022EA\n\t\"\\\"\\xb3\\x038\\x00\\x00\\\"\\xeb\" + // 0x22B30338: 0x000022EB\n\t\"\\\"\\xb4\\x038\\x00\\x00\\\"\\xec\" + // 0x22B40338: 0x000022EC\n\t\"\\\"\\xb5\\x038\\x00\\x00\\\"\\xed\" + // 0x22B50338: 0x000022ED\n\t\"0K0\\x99\\x00\\x000L\" + // 0x304B3099: 0x0000304C\n\t\"0M0\\x99\\x00\\x000N\" + // 0x304D3099: 0x0000304E\n\t\"0O0\\x99\\x00\\x000P\" + // 0x304F3099: 0x00003050\n\t\"0Q0\\x99\\x00\\x000R\" + // 0x30513099: 0x00003052\n\t\"0S0\\x99\\x00\\x000T\" + // 0x30533099: 0x00003054\n\t\"0U0\\x99\\x00\\x000V\" + // 0x30553099: 0x00003056\n\t\"0W0\\x99\\x00\\x000X\" + // 0x30573099: 0x00003058\n\t\"0Y0\\x99\\x00\\x000Z\" + // 0x30593099: 0x0000305A\n\t\"0[0\\x99\\x00\\x000\\\\\" + // 0x305B3099: 0x0000305C\n\t\"0]0\\x99\\x00\\x000^\" + // 0x305D3099: 0x0000305E\n\t\"0_0\\x99\\x00\\x000`\" + // 0x305F3099: 0x00003060\n\t\"0a0\\x99\\x00\\x000b\" + // 0x30613099: 0x00003062\n\t\"0d0\\x99\\x00\\x000e\" + // 0x30643099: 0x00003065\n\t\"0f0\\x99\\x00\\x000g\" + // 0x30663099: 0x00003067\n\t\"0h0\\x99\\x00\\x000i\" + // 0x30683099: 0x00003069\n\t\"0o0\\x99\\x00\\x000p\" + // 0x306F3099: 0x00003070\n\t\"0o0\\x9a\\x00\\x000q\" + // 0x306F309A: 0x00003071\n\t\"0r0\\x99\\x00\\x000s\" + // 0x30723099: 0x00003073\n\t\"0r0\\x9a\\x00\\x000t\" + // 0x3072309A: 0x00003074\n\t\"0u0\\x99\\x00\\x000v\" + // 0x30753099: 0x00003076\n\t\"0u0\\x9a\\x00\\x000w\" + // 0x3075309A: 0x00003077\n\t\"0x0\\x99\\x00\\x000y\" + // 0x30783099: 0x00003079\n\t\"0x0\\x9a\\x00\\x000z\" + // 0x3078309A: 0x0000307A\n\t\"0{0\\x99\\x00\\x000|\" + // 0x307B3099: 0x0000307C\n\t\"0{0\\x9a\\x00\\x000}\" + // 0x307B309A: 0x0000307D\n\t\"0F0\\x99\\x00\\x000\\x94\" + // 0x30463099: 0x00003094\n\t\"0\\x9d0\\x99\\x00\\x000\\x9e\" + // 0x309D3099: 0x0000309E\n\t\"0\\xab0\\x99\\x00\\x000\\xac\" + // 0x30AB3099: 0x000030AC\n\t\"0\\xad0\\x99\\x00\\x000\\xae\" + // 0x30AD3099: 0x000030AE\n\t\"0\\xaf0\\x99\\x00\\x000\\xb0\" + // 0x30AF3099: 0x000030B0\n\t\"0\\xb10\\x99\\x00\\x000\\xb2\" + // 0x30B13099: 0x000030B2\n\t\"0\\xb30\\x99\\x00\\x000\\xb4\" + // 0x30B33099: 0x000030B4\n\t\"0\\xb50\\x99\\x00\\x000\\xb6\" + // 0x30B53099: 0x000030B6\n\t\"0\\xb70\\x99\\x00\\x000\\xb8\" + // 0x30B73099: 0x000030B8\n\t\"0\\xb90\\x99\\x00\\x000\\xba\" + // 0x30B93099: 0x000030BA\n\t\"0\\xbb0\\x99\\x00\\x000\\xbc\" + // 0x30BB3099: 0x000030BC\n\t\"0\\xbd0\\x99\\x00\\x000\\xbe\" + // 0x30BD3099: 0x000030BE\n\t\"0\\xbf0\\x99\\x00\\x000\\xc0\" + // 0x30BF3099: 0x000030C0\n\t\"0\\xc10\\x99\\x00\\x000\\xc2\" + // 0x30C13099: 0x000030C2\n\t\"0\\xc40\\x99\\x00\\x000\\xc5\" + // 0x30C43099: 0x000030C5\n\t\"0\\xc60\\x99\\x00\\x000\\xc7\" + // 0x30C63099: 0x000030C7\n\t\"0\\xc80\\x99\\x00\\x000\\xc9\" + // 0x30C83099: 0x000030C9\n\t\"0\\xcf0\\x99\\x00\\x000\\xd0\" + // 0x30CF3099: 0x000030D0\n\t\"0\\xcf0\\x9a\\x00\\x000\\xd1\" + // 0x30CF309A: 0x000030D1\n\t\"0\\xd20\\x99\\x00\\x000\\xd3\" + // 0x30D23099: 0x000030D3\n\t\"0\\xd20\\x9a\\x00\\x000\\xd4\" + // 0x30D2309A: 0x000030D4\n\t\"0\\xd50\\x99\\x00\\x000\\xd6\" + // 0x30D53099: 0x000030D6\n\t\"0\\xd50\\x9a\\x00\\x000\\xd7\" + // 0x30D5309A: 0x000030D7\n\t\"0\\xd80\\x99\\x00\\x000\\xd9\" + // 0x30D83099: 0x000030D9\n\t\"0\\xd80\\x9a\\x00\\x000\\xda\" + // 0x30D8309A: 0x000030DA\n\t\"0\\xdb0\\x99\\x00\\x000\\xdc\" + // 0x30DB3099: 0x000030DC\n\t\"0\\xdb0\\x9a\\x00\\x000\\xdd\" + // 0x30DB309A: 0x000030DD\n\t\"0\\xa60\\x99\\x00\\x000\\xf4\" + // 0x30A63099: 0x000030F4\n\t\"0\\xef0\\x99\\x00\\x000\\xf7\" + // 0x30EF3099: 0x000030F7\n\t\"0\\xf00\\x99\\x00\\x000\\xf8\" + // 0x30F03099: 0x000030F8\n\t\"0\\xf10\\x99\\x00\\x000\\xf9\" + // 0x30F13099: 0x000030F9\n\t\"0\\xf20\\x99\\x00\\x000\\xfa\" + // 0x30F23099: 0x000030FA\n\t\"0\\xfd0\\x99\\x00\\x000\\xfe\" + // 0x30FD3099: 0x000030FE\n\t\"\\x10\\x99\\x10\\xba\\x00\\x01\\x10\\x9a\" + // 0x109910BA: 0x0001109A\n\t\"\\x10\\x9b\\x10\\xba\\x00\\x01\\x10\\x9c\" + // 0x109B10BA: 0x0001109C\n\t\"\\x10\\xa5\\x10\\xba\\x00\\x01\\x10\\xab\" + // 0x10A510BA: 0x000110AB\n\t\"\\x111\\x11'\\x00\\x01\\x11.\" + // 0x11311127: 0x0001112E\n\t\"\\x112\\x11'\\x00\\x01\\x11/\" + // 0x11321127: 0x0001112F\n\t\"\\x13G\\x13>\\x00\\x01\\x13K\" + // 0x1347133E: 0x0001134B\n\t\"\\x13G\\x13W\\x00\\x01\\x13L\" + // 0x13471357: 0x0001134C\n\t\"\\x14\\xb9\\x14\\xba\\x00\\x01\\x14\\xbb\" + // 0x14B914BA: 0x000114BB\n\t\"\\x14\\xb9\\x14\\xb0\\x00\\x01\\x14\\xbc\" + // 0x14B914B0: 0x000114BC\n\t\"\\x14\\xb9\\x14\\xbd\\x00\\x01\\x14\\xbe\" + // 0x14B914BD: 0x000114BE\n\t\"\\x15\\xb8\\x15\\xaf\\x00\\x01\\x15\\xba\" + // 0x15B815AF: 0x000115BA\n\t\"\\x15\\xb9\\x15\\xaf\\x00\\x01\\x15\\xbb\" + // 0x15B915AF: 0x000115BB\n\t\"\\x195\\x190\\x00\\x01\\x198\" + // 0x19351930: 0x00011938\n\t\"\"\n\t// Total size of tables: 56KB (57068 bytes)\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/tables17.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.27\n\npackage norm\n\nimport \"sync\"\n\nconst (\n\t// Version is the Unicode edition from which the tables are derived.\n\tVersion = \"17.0.0\"\n\n\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform\n\t// may need to write atomically for any Form. Making a destination buffer at\n\t// least this size ensures that Transform can always make progress and that\n\t// the user does not need to grow the buffer on an ErrShortDst.\n\tMaxTransformChunkSize = 35 + maxNonStarters*4\n)\n\nvar ccc = [56]uint8{\n\t0, 1, 6, 7, 8, 9, 10, 11,\n\t12, 13, 14, 15, 16, 17, 18, 19,\n\t20, 21, 22, 23, 24, 25, 26, 27,\n\t28, 29, 30, 31, 32, 33, 34, 35,\n\t36, 84, 91, 103, 107, 118, 122, 129,\n\t130, 132, 202, 214, 216, 218, 220, 222,\n\t224, 226, 228, 230, 232, 233, 234, 240,\n}\n\nconst (\n\tfirstMulti            = 0x199A\n\tfirstCCC              = 0x2DD5\n\tendMulti              = 0x2EBF\n\tfirstLeadingCCC       = 0x4B3F\n\tfirstCCCZeroExcept    = 0x4C99\n\tfirstStarterWithNLead = 0x4CC0\n\tlastDecomp            = 0x4CC2\n\tmaxDecomp             = 0x8000\n)\n\n// decomps: 19650 bytes\nvar decomps = [...]byte{\n\t// Bytes 0 - 3f\n\t0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41,\n\t0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41,\n\t0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41,\n\t0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41,\n\t0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41,\n\t0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41,\n\t0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41,\n\t0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41,\n\t// Bytes 40 - 7f\n\t0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41,\n\t0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41,\n\t0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41,\n\t0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41,\n\t0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41,\n\t0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41,\n\t0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41,\n\t0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41,\n\t// Bytes 80 - bf\n\t0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41,\n\t0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41,\n\t0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41,\n\t0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41,\n\t0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41,\n\t0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41,\n\t0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41,\n\t0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42,\n\t// Bytes c0 - ff\n\t0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5,\n\t0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2,\n\t0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xA6, 0x42,\n\t0xC3, 0xB0, 0x42, 0xC3, 0xB8, 0x42, 0xC4, 0xA6,\n\t0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1, 0x42, 0xC5,\n\t0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6, 0x8E, 0x42,\n\t0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42, 0xC7, 0x80,\n\t0x42, 0xC7, 0x81, 0x42, 0xC7, 0x82, 0x42, 0xC8,\n\t// Bytes 100 - 13f\n\t0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90, 0x42,\n\t0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9, 0x93,\n\t0x42, 0xC9, 0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9,\n\t0x96, 0x42, 0xC9, 0x97, 0x42, 0xC9, 0x98, 0x42,\n\t0xC9, 0x99, 0x42, 0xC9, 0x9B, 0x42, 0xC9, 0x9C,\n\t0x42, 0xC9, 0x9E, 0x42, 0xC9, 0x9F, 0x42, 0xC9,\n\t0xA0, 0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA2, 0x42,\n\t0xC9, 0xA3, 0x42, 0xC9, 0xA4, 0x42, 0xC9, 0xA5,\n\t// Bytes 140 - 17f\n\t0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA7, 0x42, 0xC9,\n\t0xA8, 0x42, 0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42,\n\t0xC9, 0xAB, 0x42, 0xC9, 0xAC, 0x42, 0xC9, 0xAD,\n\t0x42, 0xC9, 0xAE, 0x42, 0xC9, 0xAF, 0x42, 0xC9,\n\t0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42,\n\t0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5,\n\t0x42, 0xC9, 0xB6, 0x42, 0xC9, 0xB7, 0x42, 0xC9,\n\t0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9, 0xBA, 0x42,\n\t// Bytes 180 - 1bf\n\t0xC9, 0xBB, 0x42, 0xC9, 0xBD, 0x42, 0xC9, 0xBE,\n\t0x42, 0xCA, 0x80, 0x42, 0xCA, 0x81, 0x42, 0xCA,\n\t0x82, 0x42, 0xCA, 0x83, 0x42, 0xCA, 0x84, 0x42,\n\t0xCA, 0x88, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A,\n\t0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA,\n\t0x8D, 0x42, 0xCA, 0x8E, 0x42, 0xCA, 0x8F, 0x42,\n\t0xCA, 0x90, 0x42, 0xCA, 0x91, 0x42, 0xCA, 0x92,\n\t0x42, 0xCA, 0x95, 0x42, 0xCA, 0x98, 0x42, 0xCA,\n\t// Bytes 1c0 - 1ff\n\t0x99, 0x42, 0xCA, 0x9B, 0x42, 0xCA, 0x9C, 0x42,\n\t0xCA, 0x9D, 0x42, 0xCA, 0x9F, 0x42, 0xCA, 0xA1,\n\t0x42, 0xCA, 0xA2, 0x42, 0xCA, 0xA3, 0x42, 0xCA,\n\t0xA4, 0x42, 0xCA, 0xA5, 0x42, 0xCA, 0xA6, 0x42,\n\t0xCA, 0xA7, 0x42, 0xCA, 0xA8, 0x42, 0xCA, 0xA9,\n\t0x42, 0xCA, 0xAA, 0x42, 0xCA, 0xAB, 0x42, 0xCA,\n\t0xB9, 0x42, 0xCB, 0x90, 0x42, 0xCB, 0x91, 0x42,\n\t0xCE, 0x91, 0x42, 0xCE, 0x92, 0x42, 0xCE, 0x93,\n\t// Bytes 200 - 23f\n\t0x42, 0xCE, 0x94, 0x42, 0xCE, 0x95, 0x42, 0xCE,\n\t0x96, 0x42, 0xCE, 0x97, 0x42, 0xCE, 0x98, 0x42,\n\t0xCE, 0x99, 0x42, 0xCE, 0x9A, 0x42, 0xCE, 0x9B,\n\t0x42, 0xCE, 0x9C, 0x42, 0xCE, 0x9D, 0x42, 0xCE,\n\t0x9E, 0x42, 0xCE, 0x9F, 0x42, 0xCE, 0xA0, 0x42,\n\t0xCE, 0xA1, 0x42, 0xCE, 0xA3, 0x42, 0xCE, 0xA4,\n\t0x42, 0xCE, 0xA5, 0x42, 0xCE, 0xA6, 0x42, 0xCE,\n\t0xA7, 0x42, 0xCE, 0xA8, 0x42, 0xCE, 0xA9, 0x42,\n\t// Bytes 240 - 27f\n\t0xCE, 0xB1, 0x42, 0xCE, 0xB2, 0x42, 0xCE, 0xB3,\n\t0x42, 0xCE, 0xB4, 0x42, 0xCE, 0xB5, 0x42, 0xCE,\n\t0xB6, 0x42, 0xCE, 0xB7, 0x42, 0xCE, 0xB8, 0x42,\n\t0xCE, 0xB9, 0x42, 0xCE, 0xBA, 0x42, 0xCE, 0xBB,\n\t0x42, 0xCE, 0xBC, 0x42, 0xCE, 0xBD, 0x42, 0xCE,\n\t0xBE, 0x42, 0xCE, 0xBF, 0x42, 0xCF, 0x80, 0x42,\n\t0xCF, 0x81, 0x42, 0xCF, 0x82, 0x42, 0xCF, 0x83,\n\t0x42, 0xCF, 0x84, 0x42, 0xCF, 0x85, 0x42, 0xCF,\n\t// Bytes 280 - 2bf\n\t0x86, 0x42, 0xCF, 0x87, 0x42, 0xCF, 0x88, 0x42,\n\t0xCF, 0x89, 0x42, 0xCF, 0x9C, 0x42, 0xCF, 0x9D,\n\t0x42, 0xD0, 0xB0, 0x42, 0xD0, 0xB1, 0x42, 0xD0,\n\t0xB2, 0x42, 0xD0, 0xB3, 0x42, 0xD0, 0xB4, 0x42,\n\t0xD0, 0xB5, 0x42, 0xD0, 0xB6, 0x42, 0xD0, 0xB7,\n\t0x42, 0xD0, 0xB8, 0x42, 0xD0, 0xBA, 0x42, 0xD0,\n\t0xBB, 0x42, 0xD0, 0xBC, 0x42, 0xD0, 0xBD, 0x42,\n\t0xD0, 0xBE, 0x42, 0xD0, 0xBF, 0x42, 0xD1, 0x80,\n\t// Bytes 2c0 - 2ff\n\t0x42, 0xD1, 0x81, 0x42, 0xD1, 0x82, 0x42, 0xD1,\n\t0x83, 0x42, 0xD1, 0x84, 0x42, 0xD1, 0x85, 0x42,\n\t0xD1, 0x86, 0x42, 0xD1, 0x87, 0x42, 0xD1, 0x88,\n\t0x42, 0xD1, 0x8A, 0x42, 0xD1, 0x8B, 0x42, 0xD1,\n\t0x8C, 0x42, 0xD1, 0x8D, 0x42, 0xD1, 0x8E, 0x42,\n\t0xD1, 0x95, 0x42, 0xD1, 0x96, 0x42, 0xD1, 0x98,\n\t0x42, 0xD1, 0x9F, 0x42, 0xD2, 0x91, 0x42, 0xD2,\n\t0xAB, 0x42, 0xD2, 0xAF, 0x42, 0xD2, 0xB1, 0x42,\n\t// Bytes 300 - 33f\n\t0xD3, 0x8F, 0x42, 0xD3, 0x99, 0x42, 0xD3, 0xA9,\n\t0x42, 0xD7, 0x90, 0x42, 0xD7, 0x91, 0x42, 0xD7,\n\t0x92, 0x42, 0xD7, 0x93, 0x42, 0xD7, 0x94, 0x42,\n\t0xD7, 0x9B, 0x42, 0xD7, 0x9C, 0x42, 0xD7, 0x9D,\n\t0x42, 0xD7, 0xA2, 0x42, 0xD7, 0xA8, 0x42, 0xD7,\n\t0xAA, 0x42, 0xD8, 0xA1, 0x42, 0xD8, 0xA7, 0x42,\n\t0xD8, 0xA8, 0x42, 0xD8, 0xA9, 0x42, 0xD8, 0xAA,\n\t0x42, 0xD8, 0xAB, 0x42, 0xD8, 0xAC, 0x42, 0xD8,\n\t// Bytes 340 - 37f\n\t0xAD, 0x42, 0xD8, 0xAE, 0x42, 0xD8, 0xAF, 0x42,\n\t0xD8, 0xB0, 0x42, 0xD8, 0xB1, 0x42, 0xD8, 0xB2,\n\t0x42, 0xD8, 0xB3, 0x42, 0xD8, 0xB4, 0x42, 0xD8,\n\t0xB5, 0x42, 0xD8, 0xB6, 0x42, 0xD8, 0xB7, 0x42,\n\t0xD8, 0xB8, 0x42, 0xD8, 0xB9, 0x42, 0xD8, 0xBA,\n\t0x42, 0xD9, 0x81, 0x42, 0xD9, 0x82, 0x42, 0xD9,\n\t0x83, 0x42, 0xD9, 0x84, 0x42, 0xD9, 0x85, 0x42,\n\t0xD9, 0x86, 0x42, 0xD9, 0x87, 0x42, 0xD9, 0x88,\n\t// Bytes 380 - 3bf\n\t0x42, 0xD9, 0x89, 0x42, 0xD9, 0x8A, 0x42, 0xD9,\n\t0xAE, 0x42, 0xD9, 0xAF, 0x42, 0xD9, 0xB1, 0x42,\n\t0xD9, 0xB9, 0x42, 0xD9, 0xBA, 0x42, 0xD9, 0xBB,\n\t0x42, 0xD9, 0xBE, 0x42, 0xD9, 0xBF, 0x42, 0xDA,\n\t0x80, 0x42, 0xDA, 0x83, 0x42, 0xDA, 0x84, 0x42,\n\t0xDA, 0x86, 0x42, 0xDA, 0x87, 0x42, 0xDA, 0x88,\n\t0x42, 0xDA, 0x8C, 0x42, 0xDA, 0x8D, 0x42, 0xDA,\n\t0x8E, 0x42, 0xDA, 0x91, 0x42, 0xDA, 0x98, 0x42,\n\t// Bytes 3c0 - 3ff\n\t0xDA, 0xA1, 0x42, 0xDA, 0xA4, 0x42, 0xDA, 0xA6,\n\t0x42, 0xDA, 0xA9, 0x42, 0xDA, 0xAD, 0x42, 0xDA,\n\t0xAF, 0x42, 0xDA, 0xB1, 0x42, 0xDA, 0xB3, 0x42,\n\t0xDA, 0xBA, 0x42, 0xDA, 0xBB, 0x42, 0xDA, 0xBE,\n\t0x42, 0xDB, 0x81, 0x42, 0xDB, 0x85, 0x42, 0xDB,\n\t0x86, 0x42, 0xDB, 0x87, 0x42, 0xDB, 0x88, 0x42,\n\t0xDB, 0x89, 0x42, 0xDB, 0x8B, 0x42, 0xDB, 0x8C,\n\t0x42, 0xDB, 0x90, 0x42, 0xDB, 0x92, 0x43, 0xE0,\n\t// Bytes 400 - 43f\n\t0xBC, 0x8B, 0x43, 0xE1, 0x83, 0x9C, 0x43, 0xE1,\n\t0x84, 0x80, 0x43, 0xE1, 0x84, 0x81, 0x43, 0xE1,\n\t0x84, 0x82, 0x43, 0xE1, 0x84, 0x83, 0x43, 0xE1,\n\t0x84, 0x84, 0x43, 0xE1, 0x84, 0x85, 0x43, 0xE1,\n\t0x84, 0x86, 0x43, 0xE1, 0x84, 0x87, 0x43, 0xE1,\n\t0x84, 0x88, 0x43, 0xE1, 0x84, 0x89, 0x43, 0xE1,\n\t0x84, 0x8A, 0x43, 0xE1, 0x84, 0x8B, 0x43, 0xE1,\n\t0x84, 0x8C, 0x43, 0xE1, 0x84, 0x8D, 0x43, 0xE1,\n\t// Bytes 440 - 47f\n\t0x84, 0x8E, 0x43, 0xE1, 0x84, 0x8F, 0x43, 0xE1,\n\t0x84, 0x90, 0x43, 0xE1, 0x84, 0x91, 0x43, 0xE1,\n\t0x84, 0x92, 0x43, 0xE1, 0x84, 0x94, 0x43, 0xE1,\n\t0x84, 0x95, 0x43, 0xE1, 0x84, 0x9A, 0x43, 0xE1,\n\t0x84, 0x9C, 0x43, 0xE1, 0x84, 0x9D, 0x43, 0xE1,\n\t0x84, 0x9E, 0x43, 0xE1, 0x84, 0xA0, 0x43, 0xE1,\n\t0x84, 0xA1, 0x43, 0xE1, 0x84, 0xA2, 0x43, 0xE1,\n\t0x84, 0xA3, 0x43, 0xE1, 0x84, 0xA7, 0x43, 0xE1,\n\t// Bytes 480 - 4bf\n\t0x84, 0xA9, 0x43, 0xE1, 0x84, 0xAB, 0x43, 0xE1,\n\t0x84, 0xAC, 0x43, 0xE1, 0x84, 0xAD, 0x43, 0xE1,\n\t0x84, 0xAE, 0x43, 0xE1, 0x84, 0xAF, 0x43, 0xE1,\n\t0x84, 0xB2, 0x43, 0xE1, 0x84, 0xB6, 0x43, 0xE1,\n\t0x85, 0x80, 0x43, 0xE1, 0x85, 0x87, 0x43, 0xE1,\n\t0x85, 0x8C, 0x43, 0xE1, 0x85, 0x97, 0x43, 0xE1,\n\t0x85, 0x98, 0x43, 0xE1, 0x85, 0x99, 0x43, 0xE1,\n\t0x85, 0xA0, 0x43, 0xE1, 0x86, 0x84, 0x43, 0xE1,\n\t// Bytes 4c0 - 4ff\n\t0x86, 0x85, 0x43, 0xE1, 0x86, 0x88, 0x43, 0xE1,\n\t0x86, 0x91, 0x43, 0xE1, 0x86, 0x92, 0x43, 0xE1,\n\t0x86, 0x94, 0x43, 0xE1, 0x86, 0x9E, 0x43, 0xE1,\n\t0x86, 0xA1, 0x43, 0xE1, 0x87, 0x87, 0x43, 0xE1,\n\t0x87, 0x88, 0x43, 0xE1, 0x87, 0x8C, 0x43, 0xE1,\n\t0x87, 0x8E, 0x43, 0xE1, 0x87, 0x93, 0x43, 0xE1,\n\t0x87, 0x97, 0x43, 0xE1, 0x87, 0x99, 0x43, 0xE1,\n\t0x87, 0x9D, 0x43, 0xE1, 0x87, 0x9F, 0x43, 0xE1,\n\t// Bytes 500 - 53f\n\t0x87, 0xB1, 0x43, 0xE1, 0x87, 0xB2, 0x43, 0xE1,\n\t0xB4, 0x82, 0x43, 0xE1, 0xB4, 0x96, 0x43, 0xE1,\n\t0xB4, 0x97, 0x43, 0xE1, 0xB4, 0x9C, 0x43, 0xE1,\n\t0xB4, 0x9D, 0x43, 0xE1, 0xB4, 0xA5, 0x43, 0xE1,\n\t0xB5, 0xBB, 0x43, 0xE1, 0xB6, 0x85, 0x43, 0xE1,\n\t0xB6, 0x91, 0x43, 0xE2, 0x80, 0x82, 0x43, 0xE2,\n\t0x80, 0x83, 0x43, 0xE2, 0x80, 0x90, 0x43, 0xE2,\n\t0x80, 0x93, 0x43, 0xE2, 0x80, 0x94, 0x43, 0xE2,\n\t// Bytes 540 - 57f\n\t0x82, 0xA9, 0x43, 0xE2, 0x86, 0x90, 0x43, 0xE2,\n\t0x86, 0x91, 0x43, 0xE2, 0x86, 0x92, 0x43, 0xE2,\n\t0x86, 0x93, 0x43, 0xE2, 0x88, 0x82, 0x43, 0xE2,\n\t0x88, 0x87, 0x43, 0xE2, 0x88, 0x91, 0x43, 0xE2,\n\t0x88, 0x92, 0x43, 0xE2, 0x94, 0x82, 0x43, 0xE2,\n\t0x96, 0xA0, 0x43, 0xE2, 0x97, 0x8B, 0x43, 0xE2,\n\t0xA6, 0x85, 0x43, 0xE2, 0xA6, 0x86, 0x43, 0xE2,\n\t0xB1, 0xB1, 0x43, 0xE2, 0xB5, 0xA1, 0x43, 0xE3,\n\t// Bytes 580 - 5bf\n\t0x80, 0x81, 0x43, 0xE3, 0x80, 0x82, 0x43, 0xE3,\n\t0x80, 0x88, 0x43, 0xE3, 0x80, 0x89, 0x43, 0xE3,\n\t0x80, 0x8A, 0x43, 0xE3, 0x80, 0x8B, 0x43, 0xE3,\n\t0x80, 0x8C, 0x43, 0xE3, 0x80, 0x8D, 0x43, 0xE3,\n\t0x80, 0x8E, 0x43, 0xE3, 0x80, 0x8F, 0x43, 0xE3,\n\t0x80, 0x90, 0x43, 0xE3, 0x80, 0x91, 0x43, 0xE3,\n\t0x80, 0x92, 0x43, 0xE3, 0x80, 0x94, 0x43, 0xE3,\n\t0x80, 0x95, 0x43, 0xE3, 0x80, 0x96, 0x43, 0xE3,\n\t// Bytes 5c0 - 5ff\n\t0x80, 0x97, 0x43, 0xE3, 0x82, 0xA1, 0x43, 0xE3,\n\t0x82, 0xA2, 0x43, 0xE3, 0x82, 0xA3, 0x43, 0xE3,\n\t0x82, 0xA4, 0x43, 0xE3, 0x82, 0xA5, 0x43, 0xE3,\n\t0x82, 0xA6, 0x43, 0xE3, 0x82, 0xA7, 0x43, 0xE3,\n\t0x82, 0xA8, 0x43, 0xE3, 0x82, 0xA9, 0x43, 0xE3,\n\t0x82, 0xAA, 0x43, 0xE3, 0x82, 0xAB, 0x43, 0xE3,\n\t0x82, 0xAD, 0x43, 0xE3, 0x82, 0xAF, 0x43, 0xE3,\n\t0x82, 0xB1, 0x43, 0xE3, 0x82, 0xB3, 0x43, 0xE3,\n\t// Bytes 600 - 63f\n\t0x82, 0xB5, 0x43, 0xE3, 0x82, 0xB7, 0x43, 0xE3,\n\t0x82, 0xB9, 0x43, 0xE3, 0x82, 0xBB, 0x43, 0xE3,\n\t0x82, 0xBD, 0x43, 0xE3, 0x82, 0xBF, 0x43, 0xE3,\n\t0x83, 0x81, 0x43, 0xE3, 0x83, 0x83, 0x43, 0xE3,\n\t0x83, 0x84, 0x43, 0xE3, 0x83, 0x86, 0x43, 0xE3,\n\t0x83, 0x88, 0x43, 0xE3, 0x83, 0x8A, 0x43, 0xE3,\n\t0x83, 0x8B, 0x43, 0xE3, 0x83, 0x8C, 0x43, 0xE3,\n\t0x83, 0x8D, 0x43, 0xE3, 0x83, 0x8E, 0x43, 0xE3,\n\t// Bytes 640 - 67f\n\t0x83, 0x8F, 0x43, 0xE3, 0x83, 0x92, 0x43, 0xE3,\n\t0x83, 0x95, 0x43, 0xE3, 0x83, 0x98, 0x43, 0xE3,\n\t0x83, 0x9B, 0x43, 0xE3, 0x83, 0x9E, 0x43, 0xE3,\n\t0x83, 0x9F, 0x43, 0xE3, 0x83, 0xA0, 0x43, 0xE3,\n\t0x83, 0xA1, 0x43, 0xE3, 0x83, 0xA2, 0x43, 0xE3,\n\t0x83, 0xA3, 0x43, 0xE3, 0x83, 0xA4, 0x43, 0xE3,\n\t0x83, 0xA5, 0x43, 0xE3, 0x83, 0xA6, 0x43, 0xE3,\n\t0x83, 0xA7, 0x43, 0xE3, 0x83, 0xA8, 0x43, 0xE3,\n\t// Bytes 680 - 6bf\n\t0x83, 0xA9, 0x43, 0xE3, 0x83, 0xAA, 0x43, 0xE3,\n\t0x83, 0xAB, 0x43, 0xE3, 0x83, 0xAC, 0x43, 0xE3,\n\t0x83, 0xAD, 0x43, 0xE3, 0x83, 0xAF, 0x43, 0xE3,\n\t0x83, 0xB0, 0x43, 0xE3, 0x83, 0xB1, 0x43, 0xE3,\n\t0x83, 0xB2, 0x43, 0xE3, 0x83, 0xB3, 0x43, 0xE3,\n\t0x83, 0xBB, 0x43, 0xE3, 0x83, 0xBC, 0x43, 0xE3,\n\t0x92, 0x9E, 0x43, 0xE3, 0x92, 0xB9, 0x43, 0xE3,\n\t0x92, 0xBB, 0x43, 0xE3, 0x93, 0x9F, 0x43, 0xE3,\n\t// Bytes 6c0 - 6ff\n\t0x94, 0x95, 0x43, 0xE3, 0x9B, 0xAE, 0x43, 0xE3,\n\t0x9B, 0xBC, 0x43, 0xE3, 0x9E, 0x81, 0x43, 0xE3,\n\t0xA0, 0xAF, 0x43, 0xE3, 0xA1, 0xA2, 0x43, 0xE3,\n\t0xA1, 0xBC, 0x43, 0xE3, 0xA3, 0x87, 0x43, 0xE3,\n\t0xA3, 0xA3, 0x43, 0xE3, 0xA4, 0x9C, 0x43, 0xE3,\n\t0xA4, 0xBA, 0x43, 0xE3, 0xA8, 0xAE, 0x43, 0xE3,\n\t0xA9, 0xAC, 0x43, 0xE3, 0xAB, 0xA4, 0x43, 0xE3,\n\t0xAC, 0x88, 0x43, 0xE3, 0xAC, 0x99, 0x43, 0xE3,\n\t// Bytes 700 - 73f\n\t0xAD, 0x89, 0x43, 0xE3, 0xAE, 0x9D, 0x43, 0xE3,\n\t0xB0, 0x98, 0x43, 0xE3, 0xB1, 0x8E, 0x43, 0xE3,\n\t0xB4, 0xB3, 0x43, 0xE3, 0xB6, 0x96, 0x43, 0xE3,\n\t0xBA, 0xAC, 0x43, 0xE3, 0xBA, 0xB8, 0x43, 0xE3,\n\t0xBC, 0x9B, 0x43, 0xE3, 0xBF, 0xBC, 0x43, 0xE4,\n\t0x80, 0x88, 0x43, 0xE4, 0x80, 0x98, 0x43, 0xE4,\n\t0x80, 0xB9, 0x43, 0xE4, 0x81, 0x86, 0x43, 0xE4,\n\t0x82, 0x96, 0x43, 0xE4, 0x83, 0xA3, 0x43, 0xE4,\n\t// Bytes 740 - 77f\n\t0x84, 0xAF, 0x43, 0xE4, 0x88, 0x82, 0x43, 0xE4,\n\t0x88, 0xA7, 0x43, 0xE4, 0x8A, 0xA0, 0x43, 0xE4,\n\t0x8C, 0x81, 0x43, 0xE4, 0x8C, 0xB4, 0x43, 0xE4,\n\t0x8D, 0x99, 0x43, 0xE4, 0x8F, 0x95, 0x43, 0xE4,\n\t0x8F, 0x99, 0x43, 0xE4, 0x90, 0x8B, 0x43, 0xE4,\n\t0x91, 0xAB, 0x43, 0xE4, 0x94, 0xAB, 0x43, 0xE4,\n\t0x95, 0x9D, 0x43, 0xE4, 0x95, 0xA1, 0x43, 0xE4,\n\t0x95, 0xAB, 0x43, 0xE4, 0x97, 0x97, 0x43, 0xE4,\n\t// Bytes 780 - 7bf\n\t0x97, 0xB9, 0x43, 0xE4, 0x98, 0xB5, 0x43, 0xE4,\n\t0x9A, 0xBE, 0x43, 0xE4, 0x9B, 0x87, 0x43, 0xE4,\n\t0xA6, 0x95, 0x43, 0xE4, 0xA7, 0xA6, 0x43, 0xE4,\n\t0xA9, 0xAE, 0x43, 0xE4, 0xA9, 0xB6, 0x43, 0xE4,\n\t0xAA, 0xB2, 0x43, 0xE4, 0xAC, 0xB3, 0x43, 0xE4,\n\t0xAF, 0x8E, 0x43, 0xE4, 0xB3, 0x8E, 0x43, 0xE4,\n\t0xB3, 0xAD, 0x43, 0xE4, 0xB3, 0xB8, 0x43, 0xE4,\n\t0xB5, 0x96, 0x43, 0xE4, 0xB8, 0x80, 0x43, 0xE4,\n\t// Bytes 7c0 - 7ff\n\t0xB8, 0x81, 0x43, 0xE4, 0xB8, 0x83, 0x43, 0xE4,\n\t0xB8, 0x89, 0x43, 0xE4, 0xB8, 0x8A, 0x43, 0xE4,\n\t0xB8, 0x8B, 0x43, 0xE4, 0xB8, 0x8D, 0x43, 0xE4,\n\t0xB8, 0x99, 0x43, 0xE4, 0xB8, 0xA6, 0x43, 0xE4,\n\t0xB8, 0xA8, 0x43, 0xE4, 0xB8, 0xAD, 0x43, 0xE4,\n\t0xB8, 0xB2, 0x43, 0xE4, 0xB8, 0xB6, 0x43, 0xE4,\n\t0xB8, 0xB8, 0x43, 0xE4, 0xB8, 0xB9, 0x43, 0xE4,\n\t0xB8, 0xBD, 0x43, 0xE4, 0xB8, 0xBF, 0x43, 0xE4,\n\t// Bytes 800 - 83f\n\t0xB9, 0x81, 0x43, 0xE4, 0xB9, 0x99, 0x43, 0xE4,\n\t0xB9, 0x9D, 0x43, 0xE4, 0xBA, 0x82, 0x43, 0xE4,\n\t0xBA, 0x85, 0x43, 0xE4, 0xBA, 0x86, 0x43, 0xE4,\n\t0xBA, 0x8C, 0x43, 0xE4, 0xBA, 0x94, 0x43, 0xE4,\n\t0xBA, 0xA0, 0x43, 0xE4, 0xBA, 0xA4, 0x43, 0xE4,\n\t0xBA, 0xAE, 0x43, 0xE4, 0xBA, 0xBA, 0x43, 0xE4,\n\t0xBB, 0x80, 0x43, 0xE4, 0xBB, 0x8C, 0x43, 0xE4,\n\t0xBB, 0xA4, 0x43, 0xE4, 0xBC, 0x81, 0x43, 0xE4,\n\t// Bytes 840 - 87f\n\t0xBC, 0x91, 0x43, 0xE4, 0xBD, 0xA0, 0x43, 0xE4,\n\t0xBE, 0x80, 0x43, 0xE4, 0xBE, 0x86, 0x43, 0xE4,\n\t0xBE, 0x8B, 0x43, 0xE4, 0xBE, 0xAE, 0x43, 0xE4,\n\t0xBE, 0xBB, 0x43, 0xE4, 0xBE, 0xBF, 0x43, 0xE5,\n\t0x80, 0x82, 0x43, 0xE5, 0x80, 0xAB, 0x43, 0xE5,\n\t0x81, 0xBA, 0x43, 0xE5, 0x82, 0x99, 0x43, 0xE5,\n\t0x83, 0x8F, 0x43, 0xE5, 0x83, 0x9A, 0x43, 0xE5,\n\t0x83, 0xA7, 0x43, 0xE5, 0x84, 0xAA, 0x43, 0xE5,\n\t// Bytes 880 - 8bf\n\t0x84, 0xBF, 0x43, 0xE5, 0x85, 0x80, 0x43, 0xE5,\n\t0x85, 0x85, 0x43, 0xE5, 0x85, 0x8D, 0x43, 0xE5,\n\t0x85, 0x94, 0x43, 0xE5, 0x85, 0xA4, 0x43, 0xE5,\n\t0x85, 0xA5, 0x43, 0xE5, 0x85, 0xA7, 0x43, 0xE5,\n\t0x85, 0xA8, 0x43, 0xE5, 0x85, 0xA9, 0x43, 0xE5,\n\t0x85, 0xAB, 0x43, 0xE5, 0x85, 0xAD, 0x43, 0xE5,\n\t0x85, 0xB7, 0x43, 0xE5, 0x86, 0x80, 0x43, 0xE5,\n\t0x86, 0x82, 0x43, 0xE5, 0x86, 0x8D, 0x43, 0xE5,\n\t// Bytes 8c0 - 8ff\n\t0x86, 0x92, 0x43, 0xE5, 0x86, 0x95, 0x43, 0xE5,\n\t0x86, 0x96, 0x43, 0xE5, 0x86, 0x97, 0x43, 0xE5,\n\t0x86, 0x99, 0x43, 0xE5, 0x86, 0xA4, 0x43, 0xE5,\n\t0x86, 0xAB, 0x43, 0xE5, 0x86, 0xAC, 0x43, 0xE5,\n\t0x86, 0xB5, 0x43, 0xE5, 0x86, 0xB7, 0x43, 0xE5,\n\t0x87, 0x89, 0x43, 0xE5, 0x87, 0x8C, 0x43, 0xE5,\n\t0x87, 0x9C, 0x43, 0xE5, 0x87, 0x9E, 0x43, 0xE5,\n\t0x87, 0xA0, 0x43, 0xE5, 0x87, 0xB5, 0x43, 0xE5,\n\t// Bytes 900 - 93f\n\t0x88, 0x80, 0x43, 0xE5, 0x88, 0x83, 0x43, 0xE5,\n\t0x88, 0x87, 0x43, 0xE5, 0x88, 0x97, 0x43, 0xE5,\n\t0x88, 0x9D, 0x43, 0xE5, 0x88, 0xA9, 0x43, 0xE5,\n\t0x88, 0xBA, 0x43, 0xE5, 0x88, 0xBB, 0x43, 0xE5,\n\t0x89, 0x86, 0x43, 0xE5, 0x89, 0x8D, 0x43, 0xE5,\n\t0x89, 0xB2, 0x43, 0xE5, 0x89, 0xB7, 0x43, 0xE5,\n\t0x8A, 0x89, 0x43, 0xE5, 0x8A, 0x9B, 0x43, 0xE5,\n\t0x8A, 0xA3, 0x43, 0xE5, 0x8A, 0xB3, 0x43, 0xE5,\n\t// Bytes 940 - 97f\n\t0x8A, 0xB4, 0x43, 0xE5, 0x8B, 0x87, 0x43, 0xE5,\n\t0x8B, 0x89, 0x43, 0xE5, 0x8B, 0x92, 0x43, 0xE5,\n\t0x8B, 0x9E, 0x43, 0xE5, 0x8B, 0xA4, 0x43, 0xE5,\n\t0x8B, 0xB5, 0x43, 0xE5, 0x8B, 0xB9, 0x43, 0xE5,\n\t0x8B, 0xBA, 0x43, 0xE5, 0x8C, 0x85, 0x43, 0xE5,\n\t0x8C, 0x86, 0x43, 0xE5, 0x8C, 0x95, 0x43, 0xE5,\n\t0x8C, 0x97, 0x43, 0xE5, 0x8C, 0x9A, 0x43, 0xE5,\n\t0x8C, 0xB8, 0x43, 0xE5, 0x8C, 0xBB, 0x43, 0xE5,\n\t// Bytes 980 - 9bf\n\t0x8C, 0xBF, 0x43, 0xE5, 0x8D, 0x81, 0x43, 0xE5,\n\t0x8D, 0x84, 0x43, 0xE5, 0x8D, 0x85, 0x43, 0xE5,\n\t0x8D, 0x89, 0x43, 0xE5, 0x8D, 0x91, 0x43, 0xE5,\n\t0x8D, 0x94, 0x43, 0xE5, 0x8D, 0x9A, 0x43, 0xE5,\n\t0x8D, 0x9C, 0x43, 0xE5, 0x8D, 0xA9, 0x43, 0xE5,\n\t0x8D, 0xB0, 0x43, 0xE5, 0x8D, 0xB3, 0x43, 0xE5,\n\t0x8D, 0xB5, 0x43, 0xE5, 0x8D, 0xBD, 0x43, 0xE5,\n\t0x8D, 0xBF, 0x43, 0xE5, 0x8E, 0x82, 0x43, 0xE5,\n\t// Bytes 9c0 - 9ff\n\t0x8E, 0xB6, 0x43, 0xE5, 0x8F, 0x83, 0x43, 0xE5,\n\t0x8F, 0x88, 0x43, 0xE5, 0x8F, 0x8A, 0x43, 0xE5,\n\t0x8F, 0x8C, 0x43, 0xE5, 0x8F, 0x9F, 0x43, 0xE5,\n\t0x8F, 0xA3, 0x43, 0xE5, 0x8F, 0xA5, 0x43, 0xE5,\n\t0x8F, 0xAB, 0x43, 0xE5, 0x8F, 0xAF, 0x43, 0xE5,\n\t0x8F, 0xB1, 0x43, 0xE5, 0x8F, 0xB3, 0x43, 0xE5,\n\t0x90, 0x86, 0x43, 0xE5, 0x90, 0x88, 0x43, 0xE5,\n\t0x90, 0x8D, 0x43, 0xE5, 0x90, 0x8F, 0x43, 0xE5,\n\t// Bytes a00 - a3f\n\t0x90, 0x9D, 0x43, 0xE5, 0x90, 0xB8, 0x43, 0xE5,\n\t0x90, 0xB9, 0x43, 0xE5, 0x91, 0x82, 0x43, 0xE5,\n\t0x91, 0x88, 0x43, 0xE5, 0x91, 0xA8, 0x43, 0xE5,\n\t0x92, 0x9E, 0x43, 0xE5, 0x92, 0xA2, 0x43, 0xE5,\n\t0x92, 0xBD, 0x43, 0xE5, 0x93, 0xB6, 0x43, 0xE5,\n\t0x94, 0x90, 0x43, 0xE5, 0x95, 0x8F, 0x43, 0xE5,\n\t0x95, 0x93, 0x43, 0xE5, 0x95, 0x95, 0x43, 0xE5,\n\t0x95, 0xA3, 0x43, 0xE5, 0x96, 0x84, 0x43, 0xE5,\n\t// Bytes a40 - a7f\n\t0x96, 0x87, 0x43, 0xE5, 0x96, 0x99, 0x43, 0xE5,\n\t0x96, 0x9D, 0x43, 0xE5, 0x96, 0xAB, 0x43, 0xE5,\n\t0x96, 0xB3, 0x43, 0xE5, 0x96, 0xB6, 0x43, 0xE5,\n\t0x97, 0x80, 0x43, 0xE5, 0x97, 0x82, 0x43, 0xE5,\n\t0x97, 0xA2, 0x43, 0xE5, 0x98, 0x86, 0x43, 0xE5,\n\t0x99, 0x91, 0x43, 0xE5, 0x99, 0xA8, 0x43, 0xE5,\n\t0x99, 0xB4, 0x43, 0xE5, 0x9B, 0x97, 0x43, 0xE5,\n\t0x9B, 0x9B, 0x43, 0xE5, 0x9B, 0xB9, 0x43, 0xE5,\n\t// Bytes a80 - abf\n\t0x9C, 0x96, 0x43, 0xE5, 0x9C, 0x97, 0x43, 0xE5,\n\t0x9C, 0x9F, 0x43, 0xE5, 0x9C, 0xB0, 0x43, 0xE5,\n\t0x9E, 0x8B, 0x43, 0xE5, 0x9F, 0x8E, 0x43, 0xE5,\n\t0x9F, 0xB4, 0x43, 0xE5, 0xA0, 0x8D, 0x43, 0xE5,\n\t0xA0, 0xB1, 0x43, 0xE5, 0xA0, 0xB2, 0x43, 0xE5,\n\t0xA1, 0x80, 0x43, 0xE5, 0xA1, 0x9A, 0x43, 0xE5,\n\t0xA1, 0x9E, 0x43, 0xE5, 0xA2, 0xA8, 0x43, 0xE5,\n\t0xA2, 0xAC, 0x43, 0xE5, 0xA2, 0xB3, 0x43, 0xE5,\n\t// Bytes ac0 - aff\n\t0xA3, 0x98, 0x43, 0xE5, 0xA3, 0x9F, 0x43, 0xE5,\n\t0xA3, 0xAB, 0x43, 0xE5, 0xA3, 0xAE, 0x43, 0xE5,\n\t0xA3, 0xB0, 0x43, 0xE5, 0xA3, 0xB2, 0x43, 0xE5,\n\t0xA3, 0xB7, 0x43, 0xE5, 0xA4, 0x82, 0x43, 0xE5,\n\t0xA4, 0x86, 0x43, 0xE5, 0xA4, 0x8A, 0x43, 0xE5,\n\t0xA4, 0x95, 0x43, 0xE5, 0xA4, 0x9A, 0x43, 0xE5,\n\t0xA4, 0x9C, 0x43, 0xE5, 0xA4, 0xA2, 0x43, 0xE5,\n\t0xA4, 0xA7, 0x43, 0xE5, 0xA4, 0xA9, 0x43, 0xE5,\n\t// Bytes b00 - b3f\n\t0xA5, 0x84, 0x43, 0xE5, 0xA5, 0x88, 0x43, 0xE5,\n\t0xA5, 0x91, 0x43, 0xE5, 0xA5, 0x94, 0x43, 0xE5,\n\t0xA5, 0xA2, 0x43, 0xE5, 0xA5, 0xB3, 0x43, 0xE5,\n\t0xA7, 0x98, 0x43, 0xE5, 0xA7, 0xAC, 0x43, 0xE5,\n\t0xA8, 0x9B, 0x43, 0xE5, 0xA8, 0xA7, 0x43, 0xE5,\n\t0xA9, 0xA2, 0x43, 0xE5, 0xA9, 0xA6, 0x43, 0xE5,\n\t0xAA, 0xB5, 0x43, 0xE5, 0xAC, 0x88, 0x43, 0xE5,\n\t0xAC, 0xA8, 0x43, 0xE5, 0xAC, 0xBE, 0x43, 0xE5,\n\t// Bytes b40 - b7f\n\t0xAD, 0x90, 0x43, 0xE5, 0xAD, 0x97, 0x43, 0xE5,\n\t0xAD, 0xA6, 0x43, 0xE5, 0xAE, 0x80, 0x43, 0xE5,\n\t0xAE, 0x85, 0x43, 0xE5, 0xAE, 0x97, 0x43, 0xE5,\n\t0xAF, 0x83, 0x43, 0xE5, 0xAF, 0x98, 0x43, 0xE5,\n\t0xAF, 0xA7, 0x43, 0xE5, 0xAF, 0xAE, 0x43, 0xE5,\n\t0xAF, 0xB3, 0x43, 0xE5, 0xAF, 0xB8, 0x43, 0xE5,\n\t0xAF, 0xBF, 0x43, 0xE5, 0xB0, 0x86, 0x43, 0xE5,\n\t0xB0, 0x8F, 0x43, 0xE5, 0xB0, 0xA2, 0x43, 0xE5,\n\t// Bytes b80 - bbf\n\t0xB0, 0xB8, 0x43, 0xE5, 0xB0, 0xBF, 0x43, 0xE5,\n\t0xB1, 0xA0, 0x43, 0xE5, 0xB1, 0xA2, 0x43, 0xE5,\n\t0xB1, 0xA4, 0x43, 0xE5, 0xB1, 0xA5, 0x43, 0xE5,\n\t0xB1, 0xAE, 0x43, 0xE5, 0xB1, 0xB1, 0x43, 0xE5,\n\t0xB2, 0x8D, 0x43, 0xE5, 0xB3, 0x80, 0x43, 0xE5,\n\t0xB4, 0x99, 0x43, 0xE5, 0xB5, 0x83, 0x43, 0xE5,\n\t0xB5, 0x90, 0x43, 0xE5, 0xB5, 0xAB, 0x43, 0xE5,\n\t0xB5, 0xAE, 0x43, 0xE5, 0xB5, 0xBC, 0x43, 0xE5,\n\t// Bytes bc0 - bff\n\t0xB6, 0xB2, 0x43, 0xE5, 0xB6, 0xBA, 0x43, 0xE5,\n\t0xB7, 0x9B, 0x43, 0xE5, 0xB7, 0xA1, 0x43, 0xE5,\n\t0xB7, 0xA2, 0x43, 0xE5, 0xB7, 0xA5, 0x43, 0xE5,\n\t0xB7, 0xA6, 0x43, 0xE5, 0xB7, 0xB1, 0x43, 0xE5,\n\t0xB7, 0xBD, 0x43, 0xE5, 0xB7, 0xBE, 0x43, 0xE5,\n\t0xB8, 0xA8, 0x43, 0xE5, 0xB8, 0xBD, 0x43, 0xE5,\n\t0xB9, 0xA9, 0x43, 0xE5, 0xB9, 0xB2, 0x43, 0xE5,\n\t0xB9, 0xB4, 0x43, 0xE5, 0xB9, 0xBA, 0x43, 0xE5,\n\t// Bytes c00 - c3f\n\t0xB9, 0xBC, 0x43, 0xE5, 0xB9, 0xBF, 0x43, 0xE5,\n\t0xBA, 0xA6, 0x43, 0xE5, 0xBA, 0xB0, 0x43, 0xE5,\n\t0xBA, 0xB3, 0x43, 0xE5, 0xBA, 0xB6, 0x43, 0xE5,\n\t0xBB, 0x89, 0x43, 0xE5, 0xBB, 0x8A, 0x43, 0xE5,\n\t0xBB, 0x92, 0x43, 0xE5, 0xBB, 0x93, 0x43, 0xE5,\n\t0xBB, 0x99, 0x43, 0xE5, 0xBB, 0xAC, 0x43, 0xE5,\n\t0xBB, 0xB4, 0x43, 0xE5, 0xBB, 0xBE, 0x43, 0xE5,\n\t0xBC, 0x84, 0x43, 0xE5, 0xBC, 0x8B, 0x43, 0xE5,\n\t// Bytes c40 - c7f\n\t0xBC, 0x93, 0x43, 0xE5, 0xBC, 0xA2, 0x43, 0xE5,\n\t0xBD, 0x90, 0x43, 0xE5, 0xBD, 0x93, 0x43, 0xE5,\n\t0xBD, 0xA1, 0x43, 0xE5, 0xBD, 0xA2, 0x43, 0xE5,\n\t0xBD, 0xA9, 0x43, 0xE5, 0xBD, 0xAB, 0x43, 0xE5,\n\t0xBD, 0xB3, 0x43, 0xE5, 0xBE, 0x8B, 0x43, 0xE5,\n\t0xBE, 0x8C, 0x43, 0xE5, 0xBE, 0x97, 0x43, 0xE5,\n\t0xBE, 0x9A, 0x43, 0xE5, 0xBE, 0xA9, 0x43, 0xE5,\n\t0xBE, 0xAD, 0x43, 0xE5, 0xBF, 0x83, 0x43, 0xE5,\n\t// Bytes c80 - cbf\n\t0xBF, 0x8D, 0x43, 0xE5, 0xBF, 0x97, 0x43, 0xE5,\n\t0xBF, 0xB5, 0x43, 0xE5, 0xBF, 0xB9, 0x43, 0xE6,\n\t0x80, 0x92, 0x43, 0xE6, 0x80, 0x9C, 0x43, 0xE6,\n\t0x81, 0xB5, 0x43, 0xE6, 0x82, 0x81, 0x43, 0xE6,\n\t0x82, 0x94, 0x43, 0xE6, 0x83, 0x87, 0x43, 0xE6,\n\t0x83, 0x98, 0x43, 0xE6, 0x83, 0xA1, 0x43, 0xE6,\n\t0x84, 0x88, 0x43, 0xE6, 0x85, 0x84, 0x43, 0xE6,\n\t0x85, 0x88, 0x43, 0xE6, 0x85, 0x8C, 0x43, 0xE6,\n\t// Bytes cc0 - cff\n\t0x85, 0x8E, 0x43, 0xE6, 0x85, 0xA0, 0x43, 0xE6,\n\t0x85, 0xA8, 0x43, 0xE6, 0x85, 0xBA, 0x43, 0xE6,\n\t0x86, 0x8E, 0x43, 0xE6, 0x86, 0x90, 0x43, 0xE6,\n\t0x86, 0xA4, 0x43, 0xE6, 0x86, 0xAF, 0x43, 0xE6,\n\t0x86, 0xB2, 0x43, 0xE6, 0x87, 0x9E, 0x43, 0xE6,\n\t0x87, 0xB2, 0x43, 0xE6, 0x87, 0xB6, 0x43, 0xE6,\n\t0x88, 0x80, 0x43, 0xE6, 0x88, 0x88, 0x43, 0xE6,\n\t0x88, 0x90, 0x43, 0xE6, 0x88, 0x9B, 0x43, 0xE6,\n\t// Bytes d00 - d3f\n\t0x88, 0xAE, 0x43, 0xE6, 0x88, 0xB4, 0x43, 0xE6,\n\t0x88, 0xB6, 0x43, 0xE6, 0x89, 0x8B, 0x43, 0xE6,\n\t0x89, 0x93, 0x43, 0xE6, 0x89, 0x9D, 0x43, 0xE6,\n\t0x8A, 0x95, 0x43, 0xE6, 0x8A, 0xB1, 0x43, 0xE6,\n\t0x8B, 0x89, 0x43, 0xE6, 0x8B, 0x8F, 0x43, 0xE6,\n\t0x8B, 0x93, 0x43, 0xE6, 0x8B, 0x94, 0x43, 0xE6,\n\t0x8B, 0xBC, 0x43, 0xE6, 0x8B, 0xBE, 0x43, 0xE6,\n\t0x8C, 0x87, 0x43, 0xE6, 0x8C, 0xBD, 0x43, 0xE6,\n\t// Bytes d40 - d7f\n\t0x8D, 0x90, 0x43, 0xE6, 0x8D, 0x95, 0x43, 0xE6,\n\t0x8D, 0xA8, 0x43, 0xE6, 0x8D, 0xBB, 0x43, 0xE6,\n\t0x8E, 0x83, 0x43, 0xE6, 0x8E, 0xA0, 0x43, 0xE6,\n\t0x8E, 0xA9, 0x43, 0xE6, 0x8F, 0x84, 0x43, 0xE6,\n\t0x8F, 0x85, 0x43, 0xE6, 0x8F, 0xA4, 0x43, 0xE6,\n\t0x90, 0x9C, 0x43, 0xE6, 0x90, 0xA2, 0x43, 0xE6,\n\t0x91, 0x92, 0x43, 0xE6, 0x91, 0xA9, 0x43, 0xE6,\n\t0x91, 0xB7, 0x43, 0xE6, 0x91, 0xBE, 0x43, 0xE6,\n\t// Bytes d80 - dbf\n\t0x92, 0x9A, 0x43, 0xE6, 0x92, 0x9D, 0x43, 0xE6,\n\t0x93, 0x84, 0x43, 0xE6, 0x94, 0xAF, 0x43, 0xE6,\n\t0x94, 0xB4, 0x43, 0xE6, 0x95, 0x8F, 0x43, 0xE6,\n\t0x95, 0x96, 0x43, 0xE6, 0x95, 0xAC, 0x43, 0xE6,\n\t0x95, 0xB8, 0x43, 0xE6, 0x96, 0x87, 0x43, 0xE6,\n\t0x96, 0x97, 0x43, 0xE6, 0x96, 0x99, 0x43, 0xE6,\n\t0x96, 0xA4, 0x43, 0xE6, 0x96, 0xB0, 0x43, 0xE6,\n\t0x96, 0xB9, 0x43, 0xE6, 0x97, 0x85, 0x43, 0xE6,\n\t// Bytes dc0 - dff\n\t0x97, 0xA0, 0x43, 0xE6, 0x97, 0xA2, 0x43, 0xE6,\n\t0x97, 0xA3, 0x43, 0xE6, 0x97, 0xA5, 0x43, 0xE6,\n\t0x98, 0x93, 0x43, 0xE6, 0x98, 0xA0, 0x43, 0xE6,\n\t0x99, 0x89, 0x43, 0xE6, 0x99, 0xB4, 0x43, 0xE6,\n\t0x9A, 0x88, 0x43, 0xE6, 0x9A, 0x91, 0x43, 0xE6,\n\t0x9A, 0x9C, 0x43, 0xE6, 0x9A, 0xB4, 0x43, 0xE6,\n\t0x9B, 0x86, 0x43, 0xE6, 0x9B, 0xB0, 0x43, 0xE6,\n\t0x9B, 0xB4, 0x43, 0xE6, 0x9B, 0xB8, 0x43, 0xE6,\n\t// Bytes e00 - e3f\n\t0x9C, 0x80, 0x43, 0xE6, 0x9C, 0x88, 0x43, 0xE6,\n\t0x9C, 0x89, 0x43, 0xE6, 0x9C, 0x97, 0x43, 0xE6,\n\t0x9C, 0x9B, 0x43, 0xE6, 0x9C, 0xA1, 0x43, 0xE6,\n\t0x9C, 0xA8, 0x43, 0xE6, 0x9D, 0x8E, 0x43, 0xE6,\n\t0x9D, 0x93, 0x43, 0xE6, 0x9D, 0x96, 0x43, 0xE6,\n\t0x9D, 0x9E, 0x43, 0xE6, 0x9D, 0xBB, 0x43, 0xE6,\n\t0x9E, 0x85, 0x43, 0xE6, 0x9E, 0x97, 0x43, 0xE6,\n\t0x9F, 0xB3, 0x43, 0xE6, 0x9F, 0xBA, 0x43, 0xE6,\n\t// Bytes e40 - e7f\n\t0xA0, 0x97, 0x43, 0xE6, 0xA0, 0x9F, 0x43, 0xE6,\n\t0xA0, 0xAA, 0x43, 0xE6, 0xA1, 0x92, 0x43, 0xE6,\n\t0xA2, 0x81, 0x43, 0xE6, 0xA2, 0x85, 0x43, 0xE6,\n\t0xA2, 0x8E, 0x43, 0xE6, 0xA2, 0xA8, 0x43, 0xE6,\n\t0xA4, 0x94, 0x43, 0xE6, 0xA5, 0x82, 0x43, 0xE6,\n\t0xA6, 0xA3, 0x43, 0xE6, 0xA7, 0xAA, 0x43, 0xE6,\n\t0xA8, 0x82, 0x43, 0xE6, 0xA8, 0x93, 0x43, 0xE6,\n\t0xAA, 0xA8, 0x43, 0xE6, 0xAB, 0x93, 0x43, 0xE6,\n\t// Bytes e80 - ebf\n\t0xAB, 0x9B, 0x43, 0xE6, 0xAC, 0x84, 0x43, 0xE6,\n\t0xAC, 0xA0, 0x43, 0xE6, 0xAC, 0xA1, 0x43, 0xE6,\n\t0xAD, 0x94, 0x43, 0xE6, 0xAD, 0xA2, 0x43, 0xE6,\n\t0xAD, 0xA3, 0x43, 0xE6, 0xAD, 0xB2, 0x43, 0xE6,\n\t0xAD, 0xB7, 0x43, 0xE6, 0xAD, 0xB9, 0x43, 0xE6,\n\t0xAE, 0x9F, 0x43, 0xE6, 0xAE, 0xAE, 0x43, 0xE6,\n\t0xAE, 0xB3, 0x43, 0xE6, 0xAE, 0xBA, 0x43, 0xE6,\n\t0xAE, 0xBB, 0x43, 0xE6, 0xAF, 0x8B, 0x43, 0xE6,\n\t// Bytes ec0 - eff\n\t0xAF, 0x8D, 0x43, 0xE6, 0xAF, 0x94, 0x43, 0xE6,\n\t0xAF, 0x9B, 0x43, 0xE6, 0xB0, 0x8F, 0x43, 0xE6,\n\t0xB0, 0x94, 0x43, 0xE6, 0xB0, 0xB4, 0x43, 0xE6,\n\t0xB1, 0x8E, 0x43, 0xE6, 0xB1, 0xA7, 0x43, 0xE6,\n\t0xB2, 0x88, 0x43, 0xE6, 0xB2, 0xBF, 0x43, 0xE6,\n\t0xB3, 0x8C, 0x43, 0xE6, 0xB3, 0x8D, 0x43, 0xE6,\n\t0xB3, 0xA5, 0x43, 0xE6, 0xB3, 0xA8, 0x43, 0xE6,\n\t0xB4, 0x96, 0x43, 0xE6, 0xB4, 0x9B, 0x43, 0xE6,\n\t// Bytes f00 - f3f\n\t0xB4, 0x9E, 0x43, 0xE6, 0xB4, 0xB4, 0x43, 0xE6,\n\t0xB4, 0xBE, 0x43, 0xE6, 0xB5, 0x81, 0x43, 0xE6,\n\t0xB5, 0xA9, 0x43, 0xE6, 0xB5, 0xAA, 0x43, 0xE6,\n\t0xB5, 0xB7, 0x43, 0xE6, 0xB5, 0xB8, 0x43, 0xE6,\n\t0xB6, 0x85, 0x43, 0xE6, 0xB7, 0x8B, 0x43, 0xE6,\n\t0xB7, 0x9A, 0x43, 0xE6, 0xB7, 0xAA, 0x43, 0xE6,\n\t0xB7, 0xB9, 0x43, 0xE6, 0xB8, 0x9A, 0x43, 0xE6,\n\t0xB8, 0xAF, 0x43, 0xE6, 0xB9, 0xAE, 0x43, 0xE6,\n\t// Bytes f40 - f7f\n\t0xBA, 0x80, 0x43, 0xE6, 0xBA, 0x9C, 0x43, 0xE6,\n\t0xBA, 0xBA, 0x43, 0xE6, 0xBB, 0x87, 0x43, 0xE6,\n\t0xBB, 0x8B, 0x43, 0xE6, 0xBB, 0x91, 0x43, 0xE6,\n\t0xBB, 0x9B, 0x43, 0xE6, 0xBC, 0x8F, 0x43, 0xE6,\n\t0xBC, 0x94, 0x43, 0xE6, 0xBC, 0xA2, 0x43, 0xE6,\n\t0xBC, 0xA3, 0x43, 0xE6, 0xBD, 0xAE, 0x43, 0xE6,\n\t0xBF, 0x86, 0x43, 0xE6, 0xBF, 0xAB, 0x43, 0xE6,\n\t0xBF, 0xBE, 0x43, 0xE7, 0x80, 0x9B, 0x43, 0xE7,\n\t// Bytes f80 - fbf\n\t0x80, 0x9E, 0x43, 0xE7, 0x80, 0xB9, 0x43, 0xE7,\n\t0x81, 0x8A, 0x43, 0xE7, 0x81, 0xAB, 0x43, 0xE7,\n\t0x81, 0xB0, 0x43, 0xE7, 0x81, 0xB7, 0x43, 0xE7,\n\t0x81, 0xBD, 0x43, 0xE7, 0x82, 0x99, 0x43, 0xE7,\n\t0x82, 0xAD, 0x43, 0xE7, 0x83, 0x88, 0x43, 0xE7,\n\t0x83, 0x99, 0x43, 0xE7, 0x84, 0xA1, 0x43, 0xE7,\n\t0x85, 0x85, 0x43, 0xE7, 0x85, 0x89, 0x43, 0xE7,\n\t0x85, 0xAE, 0x43, 0xE7, 0x86, 0x9C, 0x43, 0xE7,\n\t// Bytes fc0 - fff\n\t0x87, 0x8E, 0x43, 0xE7, 0x87, 0x90, 0x43, 0xE7,\n\t0x88, 0x90, 0x43, 0xE7, 0x88, 0x9B, 0x43, 0xE7,\n\t0x88, 0xA8, 0x43, 0xE7, 0x88, 0xAA, 0x43, 0xE7,\n\t0x88, 0xAB, 0x43, 0xE7, 0x88, 0xB5, 0x43, 0xE7,\n\t0x88, 0xB6, 0x43, 0xE7, 0x88, 0xBB, 0x43, 0xE7,\n\t0x88, 0xBF, 0x43, 0xE7, 0x89, 0x87, 0x43, 0xE7,\n\t0x89, 0x90, 0x43, 0xE7, 0x89, 0x99, 0x43, 0xE7,\n\t0x89, 0x9B, 0x43, 0xE7, 0x89, 0xA2, 0x43, 0xE7,\n\t// Bytes 1000 - 103f\n\t0x89, 0xB9, 0x43, 0xE7, 0x8A, 0x80, 0x43, 0xE7,\n\t0x8A, 0x95, 0x43, 0xE7, 0x8A, 0xAC, 0x43, 0xE7,\n\t0x8A, 0xAF, 0x43, 0xE7, 0x8B, 0x80, 0x43, 0xE7,\n\t0x8B, 0xBC, 0x43, 0xE7, 0x8C, 0xAA, 0x43, 0xE7,\n\t0x8D, 0xB5, 0x43, 0xE7, 0x8D, 0xBA, 0x43, 0xE7,\n\t0x8E, 0x84, 0x43, 0xE7, 0x8E, 0x87, 0x43, 0xE7,\n\t0x8E, 0x89, 0x43, 0xE7, 0x8E, 0x8B, 0x43, 0xE7,\n\t0x8E, 0xA5, 0x43, 0xE7, 0x8E, 0xB2, 0x43, 0xE7,\n\t// Bytes 1040 - 107f\n\t0x8F, 0x9E, 0x43, 0xE7, 0x90, 0x86, 0x43, 0xE7,\n\t0x90, 0x89, 0x43, 0xE7, 0x90, 0xA2, 0x43, 0xE7,\n\t0x91, 0x87, 0x43, 0xE7, 0x91, 0x9C, 0x43, 0xE7,\n\t0x91, 0xA9, 0x43, 0xE7, 0x91, 0xB1, 0x43, 0xE7,\n\t0x92, 0x85, 0x43, 0xE7, 0x92, 0x89, 0x43, 0xE7,\n\t0x92, 0x98, 0x43, 0xE7, 0x93, 0x8A, 0x43, 0xE7,\n\t0x93, 0x9C, 0x43, 0xE7, 0x93, 0xA6, 0x43, 0xE7,\n\t0x94, 0x86, 0x43, 0xE7, 0x94, 0x98, 0x43, 0xE7,\n\t// Bytes 1080 - 10bf\n\t0x94, 0x9F, 0x43, 0xE7, 0x94, 0xA4, 0x43, 0xE7,\n\t0x94, 0xA8, 0x43, 0xE7, 0x94, 0xB0, 0x43, 0xE7,\n\t0x94, 0xB2, 0x43, 0xE7, 0x94, 0xB3, 0x43, 0xE7,\n\t0x94, 0xB7, 0x43, 0xE7, 0x94, 0xBB, 0x43, 0xE7,\n\t0x94, 0xBE, 0x43, 0xE7, 0x95, 0x99, 0x43, 0xE7,\n\t0x95, 0xA5, 0x43, 0xE7, 0x95, 0xB0, 0x43, 0xE7,\n\t0x96, 0x8B, 0x43, 0xE7, 0x96, 0x92, 0x43, 0xE7,\n\t0x97, 0xA2, 0x43, 0xE7, 0x98, 0x90, 0x43, 0xE7,\n\t// Bytes 10c0 - 10ff\n\t0x98, 0x9D, 0x43, 0xE7, 0x98, 0x9F, 0x43, 0xE7,\n\t0x99, 0x82, 0x43, 0xE7, 0x99, 0xA9, 0x43, 0xE7,\n\t0x99, 0xB6, 0x43, 0xE7, 0x99, 0xBD, 0x43, 0xE7,\n\t0x9A, 0xAE, 0x43, 0xE7, 0x9A, 0xBF, 0x43, 0xE7,\n\t0x9B, 0x8A, 0x43, 0xE7, 0x9B, 0x9B, 0x43, 0xE7,\n\t0x9B, 0xA3, 0x43, 0xE7, 0x9B, 0xA7, 0x43, 0xE7,\n\t0x9B, 0xAE, 0x43, 0xE7, 0x9B, 0xB4, 0x43, 0xE7,\n\t0x9C, 0x81, 0x43, 0xE7, 0x9C, 0x9E, 0x43, 0xE7,\n\t// Bytes 1100 - 113f\n\t0x9C, 0x9F, 0x43, 0xE7, 0x9D, 0x80, 0x43, 0xE7,\n\t0x9D, 0x8A, 0x43, 0xE7, 0x9E, 0x8B, 0x43, 0xE7,\n\t0x9E, 0xA7, 0x43, 0xE7, 0x9F, 0x9B, 0x43, 0xE7,\n\t0x9F, 0xA2, 0x43, 0xE7, 0x9F, 0xB3, 0x43, 0xE7,\n\t0xA1, 0x8E, 0x43, 0xE7, 0xA1, 0xAB, 0x43, 0xE7,\n\t0xA2, 0x8C, 0x43, 0xE7, 0xA2, 0x91, 0x43, 0xE7,\n\t0xA3, 0x8A, 0x43, 0xE7, 0xA3, 0x8C, 0x43, 0xE7,\n\t0xA3, 0xBB, 0x43, 0xE7, 0xA4, 0xAA, 0x43, 0xE7,\n\t// Bytes 1140 - 117f\n\t0xA4, 0xBA, 0x43, 0xE7, 0xA4, 0xBC, 0x43, 0xE7,\n\t0xA4, 0xBE, 0x43, 0xE7, 0xA5, 0x88, 0x43, 0xE7,\n\t0xA5, 0x89, 0x43, 0xE7, 0xA5, 0x90, 0x43, 0xE7,\n\t0xA5, 0x96, 0x43, 0xE7, 0xA5, 0x9D, 0x43, 0xE7,\n\t0xA5, 0x9E, 0x43, 0xE7, 0xA5, 0xA5, 0x43, 0xE7,\n\t0xA5, 0xBF, 0x43, 0xE7, 0xA6, 0x81, 0x43, 0xE7,\n\t0xA6, 0x8D, 0x43, 0xE7, 0xA6, 0x8E, 0x43, 0xE7,\n\t0xA6, 0x8F, 0x43, 0xE7, 0xA6, 0xAE, 0x43, 0xE7,\n\t// Bytes 1180 - 11bf\n\t0xA6, 0xB8, 0x43, 0xE7, 0xA6, 0xBE, 0x43, 0xE7,\n\t0xA7, 0x8A, 0x43, 0xE7, 0xA7, 0x98, 0x43, 0xE7,\n\t0xA7, 0xAB, 0x43, 0xE7, 0xA8, 0x9C, 0x43, 0xE7,\n\t0xA9, 0x80, 0x43, 0xE7, 0xA9, 0x8A, 0x43, 0xE7,\n\t0xA9, 0x8F, 0x43, 0xE7, 0xA9, 0xB4, 0x43, 0xE7,\n\t0xA9, 0xBA, 0x43, 0xE7, 0xAA, 0x81, 0x43, 0xE7,\n\t0xAA, 0xB1, 0x43, 0xE7, 0xAB, 0x8B, 0x43, 0xE7,\n\t0xAB, 0xAE, 0x43, 0xE7, 0xAB, 0xB9, 0x43, 0xE7,\n\t// Bytes 11c0 - 11ff\n\t0xAC, 0xA0, 0x43, 0xE7, 0xAE, 0x8F, 0x43, 0xE7,\n\t0xAF, 0x80, 0x43, 0xE7, 0xAF, 0x86, 0x43, 0xE7,\n\t0xAF, 0x89, 0x43, 0xE7, 0xB0, 0xBE, 0x43, 0xE7,\n\t0xB1, 0xA0, 0x43, 0xE7, 0xB1, 0xB3, 0x43, 0xE7,\n\t0xB1, 0xBB, 0x43, 0xE7, 0xB2, 0x92, 0x43, 0xE7,\n\t0xB2, 0xBE, 0x43, 0xE7, 0xB3, 0x92, 0x43, 0xE7,\n\t0xB3, 0x96, 0x43, 0xE7, 0xB3, 0xA3, 0x43, 0xE7,\n\t0xB3, 0xA7, 0x43, 0xE7, 0xB3, 0xA8, 0x43, 0xE7,\n\t// Bytes 1200 - 123f\n\t0xB3, 0xB8, 0x43, 0xE7, 0xB4, 0x80, 0x43, 0xE7,\n\t0xB4, 0x90, 0x43, 0xE7, 0xB4, 0xA2, 0x43, 0xE7,\n\t0xB4, 0xAF, 0x43, 0xE7, 0xB5, 0x82, 0x43, 0xE7,\n\t0xB5, 0x9B, 0x43, 0xE7, 0xB5, 0xA3, 0x43, 0xE7,\n\t0xB6, 0xA0, 0x43, 0xE7, 0xB6, 0xBE, 0x43, 0xE7,\n\t0xB7, 0x87, 0x43, 0xE7, 0xB7, 0xB4, 0x43, 0xE7,\n\t0xB8, 0x82, 0x43, 0xE7, 0xB8, 0x89, 0x43, 0xE7,\n\t0xB8, 0xB7, 0x43, 0xE7, 0xB9, 0x81, 0x43, 0xE7,\n\t// Bytes 1240 - 127f\n\t0xB9, 0x85, 0x43, 0xE7, 0xBC, 0xB6, 0x43, 0xE7,\n\t0xBC, 0xBE, 0x43, 0xE7, 0xBD, 0x91, 0x43, 0xE7,\n\t0xBD, 0xB2, 0x43, 0xE7, 0xBD, 0xB9, 0x43, 0xE7,\n\t0xBD, 0xBA, 0x43, 0xE7, 0xBE, 0x85, 0x43, 0xE7,\n\t0xBE, 0x8A, 0x43, 0xE7, 0xBE, 0x95, 0x43, 0xE7,\n\t0xBE, 0x9A, 0x43, 0xE7, 0xBE, 0xBD, 0x43, 0xE7,\n\t0xBF, 0xBA, 0x43, 0xE8, 0x80, 0x81, 0x43, 0xE8,\n\t0x80, 0x85, 0x43, 0xE8, 0x80, 0x8C, 0x43, 0xE8,\n\t// Bytes 1280 - 12bf\n\t0x80, 0x92, 0x43, 0xE8, 0x80, 0xB3, 0x43, 0xE8,\n\t0x81, 0x86, 0x43, 0xE8, 0x81, 0xA0, 0x43, 0xE8,\n\t0x81, 0xAF, 0x43, 0xE8, 0x81, 0xB0, 0x43, 0xE8,\n\t0x81, 0xBE, 0x43, 0xE8, 0x81, 0xBF, 0x43, 0xE8,\n\t0x82, 0x89, 0x43, 0xE8, 0x82, 0x8B, 0x43, 0xE8,\n\t0x82, 0xAD, 0x43, 0xE8, 0x82, 0xB2, 0x43, 0xE8,\n\t0x84, 0x83, 0x43, 0xE8, 0x84, 0xBE, 0x43, 0xE8,\n\t0x87, 0x98, 0x43, 0xE8, 0x87, 0xA3, 0x43, 0xE8,\n\t// Bytes 12c0 - 12ff\n\t0x87, 0xA8, 0x43, 0xE8, 0x87, 0xAA, 0x43, 0xE8,\n\t0x87, 0xAD, 0x43, 0xE8, 0x87, 0xB3, 0x43, 0xE8,\n\t0x87, 0xBC, 0x43, 0xE8, 0x88, 0x81, 0x43, 0xE8,\n\t0x88, 0x84, 0x43, 0xE8, 0x88, 0x8C, 0x43, 0xE8,\n\t0x88, 0x98, 0x43, 0xE8, 0x88, 0x9B, 0x43, 0xE8,\n\t0x88, 0x9F, 0x43, 0xE8, 0x89, 0xAE, 0x43, 0xE8,\n\t0x89, 0xAF, 0x43, 0xE8, 0x89, 0xB2, 0x43, 0xE8,\n\t0x89, 0xB8, 0x43, 0xE8, 0x89, 0xB9, 0x43, 0xE8,\n\t// Bytes 1300 - 133f\n\t0x8A, 0x8B, 0x43, 0xE8, 0x8A, 0x91, 0x43, 0xE8,\n\t0x8A, 0x9D, 0x43, 0xE8, 0x8A, 0xB1, 0x43, 0xE8,\n\t0x8A, 0xB3, 0x43, 0xE8, 0x8A, 0xBD, 0x43, 0xE8,\n\t0x8B, 0xA5, 0x43, 0xE8, 0x8B, 0xA6, 0x43, 0xE8,\n\t0x8C, 0x9D, 0x43, 0xE8, 0x8C, 0xA3, 0x43, 0xE8,\n\t0x8C, 0xB6, 0x43, 0xE8, 0x8D, 0x92, 0x43, 0xE8,\n\t0x8D, 0x93, 0x43, 0xE8, 0x8D, 0xA3, 0x43, 0xE8,\n\t0x8E, 0xAD, 0x43, 0xE8, 0x8E, 0xBD, 0x43, 0xE8,\n\t// Bytes 1340 - 137f\n\t0x8F, 0x89, 0x43, 0xE8, 0x8F, 0x8A, 0x43, 0xE8,\n\t0x8F, 0x8C, 0x43, 0xE8, 0x8F, 0x9C, 0x43, 0xE8,\n\t0x8F, 0xA7, 0x43, 0xE8, 0x8F, 0xAF, 0x43, 0xE8,\n\t0x8F, 0xB1, 0x43, 0xE8, 0x90, 0xBD, 0x43, 0xE8,\n\t0x91, 0x89, 0x43, 0xE8, 0x91, 0x97, 0x43, 0xE8,\n\t0x93, 0xAE, 0x43, 0xE8, 0x93, 0xB1, 0x43, 0xE8,\n\t0x93, 0xB3, 0x43, 0xE8, 0x93, 0xBC, 0x43, 0xE8,\n\t0x94, 0x96, 0x43, 0xE8, 0x95, 0xA4, 0x43, 0xE8,\n\t// Bytes 1380 - 13bf\n\t0x97, 0x8D, 0x43, 0xE8, 0x97, 0xBA, 0x43, 0xE8,\n\t0x98, 0x86, 0x43, 0xE8, 0x98, 0x92, 0x43, 0xE8,\n\t0x98, 0xAD, 0x43, 0xE8, 0x98, 0xBF, 0x43, 0xE8,\n\t0x99, 0x8D, 0x43, 0xE8, 0x99, 0x90, 0x43, 0xE8,\n\t0x99, 0x9C, 0x43, 0xE8, 0x99, 0xA7, 0x43, 0xE8,\n\t0x99, 0xA9, 0x43, 0xE8, 0x99, 0xAB, 0x43, 0xE8,\n\t0x9A, 0x88, 0x43, 0xE8, 0x9A, 0xA9, 0x43, 0xE8,\n\t0x9B, 0xA2, 0x43, 0xE8, 0x9C, 0x8E, 0x43, 0xE8,\n\t// Bytes 13c0 - 13ff\n\t0x9C, 0xA8, 0x43, 0xE8, 0x9D, 0xAB, 0x43, 0xE8,\n\t0x9D, 0xB9, 0x43, 0xE8, 0x9E, 0x86, 0x43, 0xE8,\n\t0x9E, 0xBA, 0x43, 0xE8, 0x9F, 0xA1, 0x43, 0xE8,\n\t0xA0, 0x81, 0x43, 0xE8, 0xA0, 0x9F, 0x43, 0xE8,\n\t0xA1, 0x80, 0x43, 0xE8, 0xA1, 0x8C, 0x43, 0xE8,\n\t0xA1, 0xA0, 0x43, 0xE8, 0xA1, 0xA3, 0x43, 0xE8,\n\t0xA3, 0x82, 0x43, 0xE8, 0xA3, 0x8F, 0x43, 0xE8,\n\t0xA3, 0x97, 0x43, 0xE8, 0xA3, 0x9E, 0x43, 0xE8,\n\t// Bytes 1400 - 143f\n\t0xA3, 0xA1, 0x43, 0xE8, 0xA3, 0xB8, 0x43, 0xE8,\n\t0xA3, 0xBA, 0x43, 0xE8, 0xA4, 0x90, 0x43, 0xE8,\n\t0xA5, 0x81, 0x43, 0xE8, 0xA5, 0xA4, 0x43, 0xE8,\n\t0xA5, 0xBE, 0x43, 0xE8, 0xA6, 0x86, 0x43, 0xE8,\n\t0xA6, 0x8B, 0x43, 0xE8, 0xA6, 0x96, 0x43, 0xE8,\n\t0xA7, 0x92, 0x43, 0xE8, 0xA7, 0xA3, 0x43, 0xE8,\n\t0xA8, 0x80, 0x43, 0xE8, 0xAA, 0xA0, 0x43, 0xE8,\n\t0xAA, 0xAA, 0x43, 0xE8, 0xAA, 0xBF, 0x43, 0xE8,\n\t// Bytes 1440 - 147f\n\t0xAB, 0x8B, 0x43, 0xE8, 0xAB, 0x92, 0x43, 0xE8,\n\t0xAB, 0x96, 0x43, 0xE8, 0xAB, 0xAD, 0x43, 0xE8,\n\t0xAB, 0xB8, 0x43, 0xE8, 0xAB, 0xBE, 0x43, 0xE8,\n\t0xAC, 0x81, 0x43, 0xE8, 0xAC, 0xB9, 0x43, 0xE8,\n\t0xAD, 0x98, 0x43, 0xE8, 0xAE, 0x80, 0x43, 0xE8,\n\t0xAE, 0x8A, 0x43, 0xE8, 0xB0, 0xB7, 0x43, 0xE8,\n\t0xB1, 0x86, 0x43, 0xE8, 0xB1, 0x88, 0x43, 0xE8,\n\t0xB1, 0x95, 0x43, 0xE8, 0xB1, 0xB8, 0x43, 0xE8,\n\t// Bytes 1480 - 14bf\n\t0xB2, 0x9D, 0x43, 0xE8, 0xB2, 0xA1, 0x43, 0xE8,\n\t0xB2, 0xA9, 0x43, 0xE8, 0xB2, 0xAB, 0x43, 0xE8,\n\t0xB3, 0x81, 0x43, 0xE8, 0xB3, 0x82, 0x43, 0xE8,\n\t0xB3, 0x87, 0x43, 0xE8, 0xB3, 0x88, 0x43, 0xE8,\n\t0xB3, 0x93, 0x43, 0xE8, 0xB4, 0x88, 0x43, 0xE8,\n\t0xB4, 0x9B, 0x43, 0xE8, 0xB5, 0xA4, 0x43, 0xE8,\n\t0xB5, 0xB0, 0x43, 0xE8, 0xB5, 0xB7, 0x43, 0xE8,\n\t0xB6, 0xB3, 0x43, 0xE8, 0xB6, 0xBC, 0x43, 0xE8,\n\t// Bytes 14c0 - 14ff\n\t0xB7, 0x8B, 0x43, 0xE8, 0xB7, 0xAF, 0x43, 0xE8,\n\t0xB7, 0xB0, 0x43, 0xE8, 0xBA, 0xAB, 0x43, 0xE8,\n\t0xBB, 0x8A, 0x43, 0xE8, 0xBB, 0x94, 0x43, 0xE8,\n\t0xBC, 0xA6, 0x43, 0xE8, 0xBC, 0xAA, 0x43, 0xE8,\n\t0xBC, 0xB8, 0x43, 0xE8, 0xBC, 0xBB, 0x43, 0xE8,\n\t0xBD, 0xA2, 0x43, 0xE8, 0xBE, 0x9B, 0x43, 0xE8,\n\t0xBE, 0x9E, 0x43, 0xE8, 0xBE, 0xB0, 0x43, 0xE8,\n\t0xBE, 0xB5, 0x43, 0xE8, 0xBE, 0xB6, 0x43, 0xE9,\n\t// Bytes 1500 - 153f\n\t0x80, 0xA3, 0x43, 0xE9, 0x80, 0xB8, 0x43, 0xE9,\n\t0x81, 0x8A, 0x43, 0xE9, 0x81, 0xA9, 0x43, 0xE9,\n\t0x81, 0xB2, 0x43, 0xE9, 0x81, 0xBC, 0x43, 0xE9,\n\t0x82, 0x8F, 0x43, 0xE9, 0x82, 0x91, 0x43, 0xE9,\n\t0x82, 0x94, 0x43, 0xE9, 0x83, 0x8E, 0x43, 0xE9,\n\t0x83, 0x9E, 0x43, 0xE9, 0x83, 0xB1, 0x43, 0xE9,\n\t0x83, 0xBD, 0x43, 0xE9, 0x84, 0x91, 0x43, 0xE9,\n\t0x84, 0x9B, 0x43, 0xE9, 0x85, 0x89, 0x43, 0xE9,\n\t// Bytes 1540 - 157f\n\t0x85, 0x8D, 0x43, 0xE9, 0x85, 0xAA, 0x43, 0xE9,\n\t0x86, 0x99, 0x43, 0xE9, 0x86, 0xB4, 0x43, 0xE9,\n\t0x87, 0x86, 0x43, 0xE9, 0x87, 0x8C, 0x43, 0xE9,\n\t0x87, 0x8F, 0x43, 0xE9, 0x87, 0x91, 0x43, 0xE9,\n\t0x88, 0xB4, 0x43, 0xE9, 0x88, 0xB8, 0x43, 0xE9,\n\t0x89, 0xB6, 0x43, 0xE9, 0x89, 0xBC, 0x43, 0xE9,\n\t0x8B, 0x97, 0x43, 0xE9, 0x8B, 0x98, 0x43, 0xE9,\n\t0x8C, 0x84, 0x43, 0xE9, 0x8D, 0x8A, 0x43, 0xE9,\n\t// Bytes 1580 - 15bf\n\t0x8F, 0xB9, 0x43, 0xE9, 0x90, 0x95, 0x43, 0xE9,\n\t0x95, 0xB7, 0x43, 0xE9, 0x96, 0x80, 0x43, 0xE9,\n\t0x96, 0x8B, 0x43, 0xE9, 0x96, 0xAD, 0x43, 0xE9,\n\t0x96, 0xB7, 0x43, 0xE9, 0x98, 0x9C, 0x43, 0xE9,\n\t0x98, 0xAE, 0x43, 0xE9, 0x99, 0x8B, 0x43, 0xE9,\n\t0x99, 0x8D, 0x43, 0xE9, 0x99, 0xB5, 0x43, 0xE9,\n\t0x99, 0xB8, 0x43, 0xE9, 0x99, 0xBC, 0x43, 0xE9,\n\t0x9A, 0x86, 0x43, 0xE9, 0x9A, 0xA3, 0x43, 0xE9,\n\t// Bytes 15c0 - 15ff\n\t0x9A, 0xB6, 0x43, 0xE9, 0x9A, 0xB7, 0x43, 0xE9,\n\t0x9A, 0xB8, 0x43, 0xE9, 0x9A, 0xB9, 0x43, 0xE9,\n\t0x9B, 0x83, 0x43, 0xE9, 0x9B, 0xA2, 0x43, 0xE9,\n\t0x9B, 0xA3, 0x43, 0xE9, 0x9B, 0xA8, 0x43, 0xE9,\n\t0x9B, 0xB6, 0x43, 0xE9, 0x9B, 0xB7, 0x43, 0xE9,\n\t0x9C, 0xA3, 0x43, 0xE9, 0x9C, 0xB2, 0x43, 0xE9,\n\t0x9D, 0x88, 0x43, 0xE9, 0x9D, 0x91, 0x43, 0xE9,\n\t0x9D, 0x96, 0x43, 0xE9, 0x9D, 0x9E, 0x43, 0xE9,\n\t// Bytes 1600 - 163f\n\t0x9D, 0xA2, 0x43, 0xE9, 0x9D, 0xA9, 0x43, 0xE9,\n\t0x9F, 0x8B, 0x43, 0xE9, 0x9F, 0x9B, 0x43, 0xE9,\n\t0x9F, 0xA0, 0x43, 0xE9, 0x9F, 0xAD, 0x43, 0xE9,\n\t0x9F, 0xB3, 0x43, 0xE9, 0x9F, 0xBF, 0x43, 0xE9,\n\t0xA0, 0x81, 0x43, 0xE9, 0xA0, 0x85, 0x43, 0xE9,\n\t0xA0, 0x8B, 0x43, 0xE9, 0xA0, 0x98, 0x43, 0xE9,\n\t0xA0, 0xA9, 0x43, 0xE9, 0xA0, 0xBB, 0x43, 0xE9,\n\t0xA1, 0x9E, 0x43, 0xE9, 0xA2, 0xA8, 0x43, 0xE9,\n\t// Bytes 1640 - 167f\n\t0xA3, 0x9B, 0x43, 0xE9, 0xA3, 0x9F, 0x43, 0xE9,\n\t0xA3, 0xA2, 0x43, 0xE9, 0xA3, 0xAF, 0x43, 0xE9,\n\t0xA3, 0xBC, 0x43, 0xE9, 0xA4, 0xA8, 0x43, 0xE9,\n\t0xA4, 0xA9, 0x43, 0xE9, 0xA6, 0x96, 0x43, 0xE9,\n\t0xA6, 0x99, 0x43, 0xE9, 0xA6, 0xA7, 0x43, 0xE9,\n\t0xA6, 0xAC, 0x43, 0xE9, 0xA7, 0x82, 0x43, 0xE9,\n\t0xA7, 0xB1, 0x43, 0xE9, 0xA7, 0xBE, 0x43, 0xE9,\n\t0xA9, 0xAA, 0x43, 0xE9, 0xAA, 0xA8, 0x43, 0xE9,\n\t// Bytes 1680 - 16bf\n\t0xAB, 0x98, 0x43, 0xE9, 0xAB, 0x9F, 0x43, 0xE9,\n\t0xAC, 0x92, 0x43, 0xE9, 0xAC, 0xA5, 0x43, 0xE9,\n\t0xAC, 0xAF, 0x43, 0xE9, 0xAC, 0xB2, 0x43, 0xE9,\n\t0xAC, 0xBC, 0x43, 0xE9, 0xAD, 0x9A, 0x43, 0xE9,\n\t0xAD, 0xAF, 0x43, 0xE9, 0xB1, 0x80, 0x43, 0xE9,\n\t0xB1, 0x97, 0x43, 0xE9, 0xB3, 0xA5, 0x43, 0xE9,\n\t0xB3, 0xBD, 0x43, 0xE9, 0xB5, 0xA7, 0x43, 0xE9,\n\t0xB6, 0xB4, 0x43, 0xE9, 0xB7, 0xBA, 0x43, 0xE9,\n\t// Bytes 16c0 - 16ff\n\t0xB8, 0x9E, 0x43, 0xE9, 0xB9, 0xB5, 0x43, 0xE9,\n\t0xB9, 0xBF, 0x43, 0xE9, 0xBA, 0x97, 0x43, 0xE9,\n\t0xBA, 0x9F, 0x43, 0xE9, 0xBA, 0xA5, 0x43, 0xE9,\n\t0xBA, 0xBB, 0x43, 0xE9, 0xBB, 0x83, 0x43, 0xE9,\n\t0xBB, 0x8D, 0x43, 0xE9, 0xBB, 0x8E, 0x43, 0xE9,\n\t0xBB, 0x91, 0x43, 0xE9, 0xBB, 0xB9, 0x43, 0xE9,\n\t0xBB, 0xBD, 0x43, 0xE9, 0xBB, 0xBE, 0x43, 0xE9,\n\t0xBC, 0x85, 0x43, 0xE9, 0xBC, 0x8E, 0x43, 0xE9,\n\t// Bytes 1700 - 173f\n\t0xBC, 0x8F, 0x43, 0xE9, 0xBC, 0x93, 0x43, 0xE9,\n\t0xBC, 0x96, 0x43, 0xE9, 0xBC, 0xA0, 0x43, 0xE9,\n\t0xBC, 0xBB, 0x43, 0xE9, 0xBD, 0x83, 0x43, 0xE9,\n\t0xBD, 0x8A, 0x43, 0xE9, 0xBD, 0x92, 0x43, 0xE9,\n\t0xBE, 0x8D, 0x43, 0xE9, 0xBE, 0x8E, 0x43, 0xE9,\n\t0xBE, 0x9C, 0x43, 0xE9, 0xBE, 0x9F, 0x43, 0xE9,\n\t0xBE, 0xA0, 0x43, 0xEA, 0x99, 0x91, 0x43, 0xEA,\n\t0x9A, 0x89, 0x43, 0xEA, 0x9C, 0xA7, 0x43, 0xEA,\n\t// Bytes 1740 - 177f\n\t0x9D, 0xAF, 0x43, 0xEA, 0x9E, 0x8E, 0x43, 0xEA,\n\t0xAC, 0xB7, 0x43, 0xEA, 0xAD, 0x92, 0x43, 0xEA,\n\t0xAD, 0xA6, 0x43, 0xEA, 0xAD, 0xA7, 0x44, 0xF0,\n\t0x9D, 0xBC, 0x84, 0x44, 0xF0, 0x9D, 0xBC, 0x85,\n\t0x44, 0xF0, 0x9D, 0xBC, 0x86, 0x44, 0xF0, 0x9D,\n\t0xBC, 0x88, 0x44, 0xF0, 0x9D, 0xBC, 0x8A, 0x44,\n\t0xF0, 0x9D, 0xBC, 0x9E, 0x44, 0xF0, 0xA0, 0x84,\n\t0xA2, 0x44, 0xF0, 0xA0, 0x94, 0x9C, 0x44, 0xF0,\n\t// Bytes 1780 - 17bf\n\t0xA0, 0x94, 0xA5, 0x44, 0xF0, 0xA0, 0x95, 0x8B,\n\t0x44, 0xF0, 0xA0, 0x98, 0xBA, 0x44, 0xF0, 0xA0,\n\t0xA0, 0x84, 0x44, 0xF0, 0xA0, 0xA3, 0x9E, 0x44,\n\t0xF0, 0xA0, 0xA8, 0xAC, 0x44, 0xF0, 0xA0, 0xAD,\n\t0xA3, 0x44, 0xF0, 0xA1, 0x93, 0xA4, 0x44, 0xF0,\n\t0xA1, 0x9A, 0xA8, 0x44, 0xF0, 0xA1, 0x9B, 0xAA,\n\t0x44, 0xF0, 0xA1, 0xA7, 0x88, 0x44, 0xF0, 0xA1,\n\t0xAC, 0x98, 0x44, 0xF0, 0xA1, 0xB4, 0x8B, 0x44,\n\t// Bytes 17c0 - 17ff\n\t0xF0, 0xA1, 0xB7, 0xA4, 0x44, 0xF0, 0xA1, 0xB7,\n\t0xA6, 0x44, 0xF0, 0xA2, 0x86, 0x83, 0x44, 0xF0,\n\t0xA2, 0x86, 0x9F, 0x44, 0xF0, 0xA2, 0x8C, 0xB1,\n\t0x44, 0xF0, 0xA2, 0x9B, 0x94, 0x44, 0xF0, 0xA2,\n\t0xA1, 0x84, 0x44, 0xF0, 0xA2, 0xA1, 0x8A, 0x44,\n\t0xF0, 0xA2, 0xAC, 0x8C, 0x44, 0xF0, 0xA2, 0xAF,\n\t0xB1, 0x44, 0xF0, 0xA3, 0x80, 0x8A, 0x44, 0xF0,\n\t0xA3, 0x8A, 0xB8, 0x44, 0xF0, 0xA3, 0x8D, 0x9F,\n\t// Bytes 1800 - 183f\n\t0x44, 0xF0, 0xA3, 0x8E, 0x93, 0x44, 0xF0, 0xA3,\n\t0x8E, 0x9C, 0x44, 0xF0, 0xA3, 0x8F, 0x83, 0x44,\n\t0xF0, 0xA3, 0x8F, 0x95, 0x44, 0xF0, 0xA3, 0x91,\n\t0xAD, 0x44, 0xF0, 0xA3, 0x9A, 0xA3, 0x44, 0xF0,\n\t0xA3, 0xA2, 0xA7, 0x44, 0xF0, 0xA3, 0xAA, 0x8D,\n\t0x44, 0xF0, 0xA3, 0xAB, 0xBA, 0x44, 0xF0, 0xA3,\n\t0xB2, 0xBC, 0x44, 0xF0, 0xA3, 0xB4, 0x9E, 0x44,\n\t0xF0, 0xA3, 0xBB, 0x91, 0x44, 0xF0, 0xA3, 0xBD,\n\t// Bytes 1840 - 187f\n\t0x9E, 0x44, 0xF0, 0xA3, 0xBE, 0x8E, 0x44, 0xF0,\n\t0xA4, 0x89, 0xA3, 0x44, 0xF0, 0xA4, 0x8B, 0xAE,\n\t0x44, 0xF0, 0xA4, 0x8E, 0xAB, 0x44, 0xF0, 0xA4,\n\t0x98, 0x88, 0x44, 0xF0, 0xA4, 0x9C, 0xB5, 0x44,\n\t0xF0, 0xA4, 0xA0, 0x94, 0x44, 0xF0, 0xA4, 0xB0,\n\t0xB6, 0x44, 0xF0, 0xA4, 0xB2, 0x92, 0x44, 0xF0,\n\t0xA4, 0xBE, 0xA1, 0x44, 0xF0, 0xA4, 0xBE, 0xB8,\n\t0x44, 0xF0, 0xA5, 0x81, 0x84, 0x44, 0xF0, 0xA5,\n\t// Bytes 1880 - 18bf\n\t0x83, 0xB2, 0x44, 0xF0, 0xA5, 0x83, 0xB3, 0x44,\n\t0xF0, 0xA5, 0x84, 0x99, 0x44, 0xF0, 0xA5, 0x84,\n\t0xB3, 0x44, 0xF0, 0xA5, 0x89, 0x89, 0x44, 0xF0,\n\t0xA5, 0x90, 0x9D, 0x44, 0xF0, 0xA5, 0x98, 0xA6,\n\t0x44, 0xF0, 0xA5, 0x9A, 0x9A, 0x44, 0xF0, 0xA5,\n\t0x9B, 0x85, 0x44, 0xF0, 0xA5, 0xA5, 0xBC, 0x44,\n\t0xF0, 0xA5, 0xAA, 0xA7, 0x44, 0xF0, 0xA5, 0xAE,\n\t0xAB, 0x44, 0xF0, 0xA5, 0xB2, 0x80, 0x44, 0xF0,\n\t// Bytes 18c0 - 18ff\n\t0xA5, 0xB3, 0x90, 0x44, 0xF0, 0xA5, 0xBE, 0x86,\n\t0x44, 0xF0, 0xA6, 0x87, 0x9A, 0x44, 0xF0, 0xA6,\n\t0x88, 0xA8, 0x44, 0xF0, 0xA6, 0x89, 0x87, 0x44,\n\t0xF0, 0xA6, 0x8B, 0x99, 0x44, 0xF0, 0xA6, 0x8C,\n\t0xBE, 0x44, 0xF0, 0xA6, 0x93, 0x9A, 0x44, 0xF0,\n\t0xA6, 0x94, 0xA3, 0x44, 0xF0, 0xA6, 0x96, 0xA8,\n\t0x44, 0xF0, 0xA6, 0x9E, 0xA7, 0x44, 0xF0, 0xA6,\n\t0x9E, 0xB5, 0x44, 0xF0, 0xA6, 0xAC, 0xBC, 0x44,\n\t// Bytes 1900 - 193f\n\t0xF0, 0xA6, 0xB0, 0xB6, 0x44, 0xF0, 0xA6, 0xB3,\n\t0x95, 0x44, 0xF0, 0xA6, 0xB5, 0xAB, 0x44, 0xF0,\n\t0xA6, 0xBC, 0xAC, 0x44, 0xF0, 0xA6, 0xBE, 0xB1,\n\t0x44, 0xF0, 0xA7, 0x83, 0x92, 0x44, 0xF0, 0xA7,\n\t0x8F, 0x8A, 0x44, 0xF0, 0xA7, 0x99, 0xA7, 0x44,\n\t0xF0, 0xA7, 0xA2, 0xAE, 0x44, 0xF0, 0xA7, 0xA5,\n\t0xA6, 0x44, 0xF0, 0xA7, 0xB2, 0xA8, 0x44, 0xF0,\n\t0xA7, 0xBB, 0x93, 0x44, 0xF0, 0xA7, 0xBC, 0xAF,\n\t// Bytes 1940 - 197f\n\t0x44, 0xF0, 0xA8, 0x97, 0x92, 0x44, 0xF0, 0xA8,\n\t0x97, 0xAD, 0x44, 0xF0, 0xA8, 0x9C, 0xAE, 0x44,\n\t0xF0, 0xA8, 0xAF, 0xBA, 0x44, 0xF0, 0xA8, 0xB5,\n\t0xB7, 0x44, 0xF0, 0xA9, 0x85, 0x85, 0x44, 0xF0,\n\t0xA9, 0x87, 0x9F, 0x44, 0xF0, 0xA9, 0x88, 0x9A,\n\t0x44, 0xF0, 0xA9, 0x90, 0x8A, 0x44, 0xF0, 0xA9,\n\t0x92, 0x96, 0x44, 0xF0, 0xA9, 0x96, 0xB6, 0x44,\n\t0xF0, 0xA9, 0xAC, 0xB0, 0x44, 0xF0, 0xAA, 0x83,\n\t// Bytes 1980 - 19bf\n\t0x8E, 0x44, 0xF0, 0xAA, 0x84, 0x85, 0x44, 0xF0,\n\t0xAA, 0x88, 0x8E, 0x44, 0xF0, 0xAA, 0x8A, 0x91,\n\t0x44, 0xF0, 0xAA, 0x8E, 0x92, 0x44, 0xF0, 0xAA,\n\t0x98, 0x80, 0x42, 0x21, 0x21, 0x42, 0x21, 0x3F,\n\t0x42, 0x2E, 0x2E, 0x42, 0x30, 0x2C, 0x42, 0x30,\n\t0x2E, 0x42, 0x31, 0x2C, 0x42, 0x31, 0x2E, 0x42,\n\t0x31, 0x30, 0x42, 0x31, 0x31, 0x42, 0x31, 0x32,\n\t0x42, 0x31, 0x33, 0x42, 0x31, 0x34, 0x42, 0x31,\n\t// Bytes 19c0 - 19ff\n\t0x35, 0x42, 0x31, 0x36, 0x42, 0x31, 0x37, 0x42,\n\t0x31, 0x38, 0x42, 0x31, 0x39, 0x42, 0x32, 0x2C,\n\t0x42, 0x32, 0x2E, 0x42, 0x32, 0x30, 0x42, 0x32,\n\t0x31, 0x42, 0x32, 0x32, 0x42, 0x32, 0x33, 0x42,\n\t0x32, 0x34, 0x42, 0x32, 0x35, 0x42, 0x32, 0x36,\n\t0x42, 0x32, 0x37, 0x42, 0x32, 0x38, 0x42, 0x32,\n\t0x39, 0x42, 0x33, 0x2C, 0x42, 0x33, 0x2E, 0x42,\n\t0x33, 0x30, 0x42, 0x33, 0x31, 0x42, 0x33, 0x32,\n\t// Bytes 1a00 - 1a3f\n\t0x42, 0x33, 0x33, 0x42, 0x33, 0x34, 0x42, 0x33,\n\t0x35, 0x42, 0x33, 0x36, 0x42, 0x33, 0x37, 0x42,\n\t0x33, 0x38, 0x42, 0x33, 0x39, 0x42, 0x34, 0x2C,\n\t0x42, 0x34, 0x2E, 0x42, 0x34, 0x30, 0x42, 0x34,\n\t0x31, 0x42, 0x34, 0x32, 0x42, 0x34, 0x33, 0x42,\n\t0x34, 0x34, 0x42, 0x34, 0x35, 0x42, 0x34, 0x36,\n\t0x42, 0x34, 0x37, 0x42, 0x34, 0x38, 0x42, 0x34,\n\t0x39, 0x42, 0x35, 0x2C, 0x42, 0x35, 0x2E, 0x42,\n\t// Bytes 1a40 - 1a7f\n\t0x35, 0x30, 0x42, 0x36, 0x2C, 0x42, 0x36, 0x2E,\n\t0x42, 0x37, 0x2C, 0x42, 0x37, 0x2E, 0x42, 0x38,\n\t0x2C, 0x42, 0x38, 0x2E, 0x42, 0x39, 0x2C, 0x42,\n\t0x39, 0x2E, 0x42, 0x3D, 0x3D, 0x42, 0x3F, 0x21,\n\t0x42, 0x3F, 0x3F, 0x42, 0x41, 0x55, 0x42, 0x42,\n\t0x71, 0x42, 0x43, 0x44, 0x42, 0x44, 0x4A, 0x42,\n\t0x44, 0x5A, 0x42, 0x44, 0x7A, 0x42, 0x47, 0x42,\n\t0x42, 0x47, 0x79, 0x42, 0x48, 0x50, 0x42, 0x48,\n\t// Bytes 1a80 - 1abf\n\t0x56, 0x42, 0x48, 0x67, 0x42, 0x48, 0x7A, 0x42,\n\t0x49, 0x49, 0x42, 0x49, 0x4A, 0x42, 0x49, 0x55,\n\t0x42, 0x49, 0x56, 0x42, 0x49, 0x58, 0x42, 0x4B,\n\t0x42, 0x42, 0x4B, 0x4B, 0x42, 0x4B, 0x4D, 0x42,\n\t0x4C, 0x4A, 0x42, 0x4C, 0x6A, 0x42, 0x4D, 0x42,\n\t0x42, 0x4D, 0x43, 0x42, 0x4D, 0x44, 0x42, 0x4D,\n\t0x52, 0x42, 0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42,\n\t0x4E, 0x4A, 0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F,\n\t// Bytes 1ac0 - 1aff\n\t0x42, 0x50, 0x48, 0x42, 0x50, 0x52, 0x42, 0x50,\n\t0x61, 0x42, 0x52, 0x73, 0x42, 0x53, 0x44, 0x42,\n\t0x53, 0x4D, 0x42, 0x53, 0x53, 0x42, 0x53, 0x76,\n\t0x42, 0x54, 0x4D, 0x42, 0x56, 0x49, 0x42, 0x57,\n\t0x43, 0x42, 0x57, 0x5A, 0x42, 0x57, 0x62, 0x42,\n\t0x58, 0x49, 0x42, 0x63, 0x63, 0x42, 0x63, 0x64,\n\t0x42, 0x63, 0x6D, 0x42, 0x64, 0x42, 0x42, 0x64,\n\t0x61, 0x42, 0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42,\n\t// Bytes 1b00 - 1b3f\n\t0x64, 0x7A, 0x42, 0x65, 0x56, 0x42, 0x66, 0x66,\n\t0x42, 0x66, 0x69, 0x42, 0x66, 0x6C, 0x42, 0x66,\n\t0x6D, 0x42, 0x68, 0x61, 0x42, 0x69, 0x69, 0x42,\n\t0x69, 0x6A, 0x42, 0x69, 0x6E, 0x42, 0x69, 0x76,\n\t0x42, 0x69, 0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B,\n\t0x56, 0x42, 0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42,\n\t0x6B, 0x6C, 0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74,\n\t0x42, 0x6C, 0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C,\n\t// Bytes 1b40 - 1b7f\n\t0x6E, 0x42, 0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42,\n\t0x6D, 0x33, 0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56,\n\t0x42, 0x6D, 0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D,\n\t0x67, 0x42, 0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42,\n\t0x6D, 0x73, 0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46,\n\t0x42, 0x6E, 0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E,\n\t0x6A, 0x42, 0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42,\n\t0x6F, 0x56, 0x42, 0x70, 0x41, 0x42, 0x70, 0x46,\n\t// Bytes 1b80 - 1bbf\n\t0x42, 0x70, 0x56, 0x42, 0x70, 0x57, 0x42, 0x70,\n\t0x63, 0x42, 0x70, 0x73, 0x42, 0x73, 0x72, 0x42,\n\t0x73, 0x74, 0x42, 0x76, 0x69, 0x42, 0x78, 0x69,\n\t0x43, 0x28, 0x31, 0x29, 0x43, 0x28, 0x32, 0x29,\n\t0x43, 0x28, 0x33, 0x29, 0x43, 0x28, 0x34, 0x29,\n\t0x43, 0x28, 0x35, 0x29, 0x43, 0x28, 0x36, 0x29,\n\t0x43, 0x28, 0x37, 0x29, 0x43, 0x28, 0x38, 0x29,\n\t0x43, 0x28, 0x39, 0x29, 0x43, 0x28, 0x41, 0x29,\n\t// Bytes 1bc0 - 1bff\n\t0x43, 0x28, 0x42, 0x29, 0x43, 0x28, 0x43, 0x29,\n\t0x43, 0x28, 0x44, 0x29, 0x43, 0x28, 0x45, 0x29,\n\t0x43, 0x28, 0x46, 0x29, 0x43, 0x28, 0x47, 0x29,\n\t0x43, 0x28, 0x48, 0x29, 0x43, 0x28, 0x49, 0x29,\n\t0x43, 0x28, 0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29,\n\t0x43, 0x28, 0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29,\n\t0x43, 0x28, 0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29,\n\t0x43, 0x28, 0x50, 0x29, 0x43, 0x28, 0x51, 0x29,\n\t// Bytes 1c00 - 1c3f\n\t0x43, 0x28, 0x52, 0x29, 0x43, 0x28, 0x53, 0x29,\n\t0x43, 0x28, 0x54, 0x29, 0x43, 0x28, 0x55, 0x29,\n\t0x43, 0x28, 0x56, 0x29, 0x43, 0x28, 0x57, 0x29,\n\t0x43, 0x28, 0x58, 0x29, 0x43, 0x28, 0x59, 0x29,\n\t0x43, 0x28, 0x5A, 0x29, 0x43, 0x28, 0x61, 0x29,\n\t0x43, 0x28, 0x62, 0x29, 0x43, 0x28, 0x63, 0x29,\n\t0x43, 0x28, 0x64, 0x29, 0x43, 0x28, 0x65, 0x29,\n\t0x43, 0x28, 0x66, 0x29, 0x43, 0x28, 0x67, 0x29,\n\t// Bytes 1c40 - 1c7f\n\t0x43, 0x28, 0x68, 0x29, 0x43, 0x28, 0x69, 0x29,\n\t0x43, 0x28, 0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29,\n\t0x43, 0x28, 0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29,\n\t0x43, 0x28, 0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29,\n\t0x43, 0x28, 0x70, 0x29, 0x43, 0x28, 0x71, 0x29,\n\t0x43, 0x28, 0x72, 0x29, 0x43, 0x28, 0x73, 0x29,\n\t0x43, 0x28, 0x74, 0x29, 0x43, 0x28, 0x75, 0x29,\n\t0x43, 0x28, 0x76, 0x29, 0x43, 0x28, 0x77, 0x29,\n\t// Bytes 1c80 - 1cbf\n\t0x43, 0x28, 0x78, 0x29, 0x43, 0x28, 0x79, 0x29,\n\t0x43, 0x28, 0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E,\n\t0x43, 0x31, 0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E,\n\t0x43, 0x31, 0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E,\n\t0x43, 0x31, 0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E,\n\t0x43, 0x31, 0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E,\n\t0x43, 0x31, 0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E,\n\t0x43, 0x32, 0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D,\n\t// Bytes 1cc0 - 1cff\n\t0x43, 0x3D, 0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E,\n\t0x43, 0x46, 0x41, 0x58, 0x43, 0x47, 0x48, 0x7A,\n\t0x43, 0x47, 0x50, 0x61, 0x43, 0x49, 0x49, 0x49,\n\t0x43, 0x4C, 0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7,\n\t0x43, 0x4D, 0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61,\n\t0x43, 0x4D, 0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D,\n\t0x43, 0x50, 0x50, 0x56, 0x43, 0x50, 0x54, 0x45,\n\t0x43, 0x54, 0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A,\n\t// Bytes 1d00 - 1d3f\n\t0x43, 0x56, 0x49, 0x49, 0x43, 0x58, 0x49, 0x49,\n\t0x43, 0x61, 0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73,\n\t0x43, 0x61, 0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72,\n\t0x43, 0x63, 0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75,\n\t0x43, 0x63, 0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32,\n\t0x43, 0x63, 0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32,\n\t0x43, 0x64, 0x6D, 0x33, 0x43, 0x65, 0x72, 0x67,\n\t0x43, 0x66, 0x66, 0x69, 0x43, 0x66, 0x66, 0x6C,\n\t// Bytes 1d40 - 1d7f\n\t0x43, 0x67, 0x61, 0x6C, 0x43, 0x68, 0x50, 0x61,\n\t0x43, 0x69, 0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A,\n\t0x43, 0x6B, 0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32,\n\t0x43, 0x6B, 0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9,\n\t0x43, 0x6C, 0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7,\n\t0x43, 0x6D, 0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32,\n\t0x43, 0x6D, 0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C,\n\t0x43, 0x72, 0x61, 0x64, 0x43, 0x76, 0x69, 0x69,\n\t// Bytes 1d80 - 1dbf\n\t0x43, 0x78, 0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43,\n\t0x43, 0xC2, 0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E,\n\t0x43, 0xCE, 0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46,\n\t0x43, 0xCE, 0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57,\n\t0x43, 0xCE, 0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C,\n\t0x43, 0xCE, 0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73,\n\t0x44, 0x28, 0x31, 0x30, 0x29, 0x44, 0x28, 0x31,\n\t0x31, 0x29, 0x44, 0x28, 0x31, 0x32, 0x29, 0x44,\n\t// Bytes 1dc0 - 1dff\n\t0x28, 0x31, 0x33, 0x29, 0x44, 0x28, 0x31, 0x34,\n\t0x29, 0x44, 0x28, 0x31, 0x35, 0x29, 0x44, 0x28,\n\t0x31, 0x36, 0x29, 0x44, 0x28, 0x31, 0x37, 0x29,\n\t0x44, 0x28, 0x31, 0x38, 0x29, 0x44, 0x28, 0x31,\n\t0x39, 0x29, 0x44, 0x28, 0x32, 0x30, 0x29, 0x44,\n\t0x30, 0xE7, 0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81,\n\t0x84, 0x44, 0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31,\n\t0xE6, 0x9C, 0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9,\n\t// Bytes 1e00 - 1e3f\n\t0x44, 0x32, 0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6,\n\t0x9C, 0x88, 0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44,\n\t0x33, 0xE6, 0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C,\n\t0x88, 0x44, 0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34,\n\t0xE6, 0x97, 0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88,\n\t0x44, 0x34, 0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6,\n\t0x97, 0xA5, 0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44,\n\t0x35, 0xE7, 0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97,\n\t// Bytes 1e40 - 1e7f\n\t0xA5, 0x44, 0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36,\n\t0xE7, 0x82, 0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5,\n\t0x44, 0x37, 0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7,\n\t0x82, 0xB9, 0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44,\n\t0x38, 0xE6, 0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82,\n\t0xB9, 0x44, 0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39,\n\t0xE6, 0x9C, 0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9,\n\t0x44, 0x56, 0x49, 0x49, 0x49, 0x44, 0x61, 0x2E,\n\t// Bytes 1e80 - 1ebf\n\t0x6D, 0x2E, 0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44,\n\t0x70, 0x2E, 0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69,\n\t0x69, 0x44, 0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5,\n\t0xB4, 0xD5, 0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB,\n\t0x44, 0xD5, 0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4,\n\t0xD5, 0xB6, 0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44,\n\t0xD7, 0x90, 0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9,\n\t0xB4, 0x44, 0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8,\n\t// Bytes 1ec0 - 1eff\n\t0xA8, 0xD8, 0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8,\n\t0xD8, 0xB2, 0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44,\n\t0xD8, 0xA8, 0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9,\n\t0x87, 0x44, 0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8,\n\t0xA8, 0xD9, 0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC,\n\t0x44, 0xD8, 0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA,\n\t0xD8, 0xAE, 0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44,\n\t// Bytes 1f00 - 1f3f\n\t0xD8, 0xAA, 0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9,\n\t0x85, 0x44, 0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAA, 0xD9, 0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB,\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44,\n\t0xD8, 0xAB, 0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9,\n\t0x85, 0x44, 0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAB, 0xD9, 0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89,\n\t// Bytes 1f40 - 1f7f\n\t0x44, 0xD8, 0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC,\n\t0xD8, 0xAD, 0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44,\n\t0xD8, 0xAC, 0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9,\n\t0x8A, 0x44, 0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xAD, 0xD9, 0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE,\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44,\n\t0xD8, 0xAE, 0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9,\n\t// Bytes 1f80 - 1fbf\n\t0x89, 0x44, 0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB3, 0xD8, 0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB3, 0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB4, 0xD8, 0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4,\n\t// Bytes 1fc0 - 1fff\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB4, 0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44,\n\t0xD8, 0xB5, 0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8,\n\t// Bytes 2000 - 203f\n\t0xB6, 0xD8, 0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1,\n\t0x44, 0xD8, 0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6,\n\t0xD9, 0x89, 0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44,\n\t0xD8, 0xB7, 0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9,\n\t0x85, 0x44, 0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8,\n\t0xB7, 0xD9, 0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85,\n\t0x44, 0xD8, 0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44,\n\t// Bytes 2040 - 207f\n\t0xD8, 0xB9, 0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8,\n\t0xBA, 0xD9, 0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A,\n\t0x44, 0xD9, 0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x81, 0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9,\n\t0x89, 0x44, 0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9,\n\t0x82, 0xD8, 0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85,\n\t// Bytes 2080 - 20bf\n\t0x44, 0xD9, 0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x83, 0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x83, 0xD9, 0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85,\n\t0x44, 0xD9, 0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x84, 0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8,\n\t// Bytes 20c0 - 20ff\n\t0xAD, 0x44, 0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x84, 0xD9, 0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87,\n\t0x44, 0xD9, 0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x85, 0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x85, 0xD9, 0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89,\n\t0x44, 0xD9, 0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86,\n\t// Bytes 2100 - 213f\n\t0xD8, 0xAC, 0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44,\n\t0xD9, 0x86, 0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8,\n\t0xB1, 0x44, 0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9,\n\t0x86, 0xD9, 0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86,\n\t0x44, 0xD9, 0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86,\n\t0xD9, 0x89, 0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44,\n\t0xD9, 0x87, 0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9,\n\t0x85, 0x44, 0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9,\n\t// Bytes 2140 - 217f\n\t0x87, 0xD9, 0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4,\n\t0x44, 0xD9, 0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x8A, 0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8,\n\t0xB2, 0x44, 0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9,\n\t0x8A, 0xD9, 0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87,\n\t0x44, 0xD9, 0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44,\n\t// Bytes 2180 - 21bf\n\t0xDB, 0x87, 0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84,\n\t0x80, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x82, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x83, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x85, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x86, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x87, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x89, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x8C, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29,\n\t// Bytes 21c0 - 21ff\n\t0x45, 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x90, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x91, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x92, 0x29,\n\t0x45, 0x28, 0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28,\n\t0xE4, 0xB8, 0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8,\n\t0x89, 0x29, 0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29,\n\t0x45, 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28,\n\t0xE4, 0xBA, 0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB,\n\t// Bytes 2200 - 223f\n\t0xA3, 0x29, 0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29,\n\t0x45, 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28,\n\t0xE5, 0x85, 0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85,\n\t0xAD, 0x29, 0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29,\n\t0x45, 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28,\n\t0xE5, 0x8D, 0x94, 0x29, 0x45, 0x28, 0xE5, 0x90,\n\t0x8D, 0x29, 0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29,\n\t0x45, 0x28, 0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28,\n\t// Bytes 2240 - 227f\n\t0xE5, 0x9C, 0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD,\n\t0xA6, 0x29, 0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29,\n\t0x45, 0x28, 0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28,\n\t0xE6, 0x9C, 0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C,\n\t0xA8, 0x29, 0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29,\n\t0x45, 0x28, 0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28,\n\t0xE7, 0x81, 0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89,\n\t0xB9, 0x29, 0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29,\n\t// Bytes 2280 - 22bf\n\t0x45, 0x28, 0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28,\n\t0xE7, 0xA5, 0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5,\n\t0xAD, 0x29, 0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29,\n\t0x45, 0x28, 0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28,\n\t0xE8, 0xB2, 0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3,\n\t0x87, 0x29, 0x45, 0x28, 0xE9, 0x87, 0x91, 0x29,\n\t0x45, 0x30, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6,\n\t// Bytes 22c0 - 22ff\n\t0x9C, 0x88, 0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x31, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7,\n\t0x82, 0xB9, 0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5,\n\t0x45, 0x31, 0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t// Bytes 2300 - 233f\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x36, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x38, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9,\n\t// Bytes 2340 - 237f\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x34, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x35,\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x37, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x38, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x39,\n\t0x45, 0x32, 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x30, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6,\n\t// Bytes 2380 - 23bf\n\t0x97, 0xA5, 0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5,\n\t0x45, 0x32, 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t// Bytes 23c0 - 23ff\n\t0x38, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0xE2, 0x81, 0x84, 0x33,\n\t0x45, 0x32, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6,\n\t0x97, 0xA5, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x34,\n\t0x45, 0x33, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x34, 0xE2, 0x81,\n\t0x84, 0x35, 0x45, 0x35, 0xE2, 0x81, 0x84, 0x36,\n\t// Bytes 2400 - 243f\n\t0x45, 0x35, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x37,\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x41, 0xE2, 0x88,\n\t0x95, 0x6D, 0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D,\n\t0x45, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x46, 0x31,\n\t0xE2, 0x81, 0x84, 0x31, 0x30, 0x46, 0x43, 0xE2,\n\t0x88, 0x95, 0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88,\n\t0x95, 0x73, 0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9,\n\t// Bytes 2440 - 247f\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85,\n\t0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46,\n\t0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE,\n\t0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC,\n\t// Bytes 2480 - 24bf\n\t0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46,\n\t0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8,\n\t0xAA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89,\n\t0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t// Bytes 24c0 - 24ff\n\t0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAD, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC,\n\t0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8,\n\t0xAC, 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89,\n\t0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8,\n\t// Bytes 2500 - 253f\n\t0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3,\n\t0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8,\n\t0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE,\n\t0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5,\n\t// Bytes 2540 - 257f\n\t0xD9, 0x84, 0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9,\n\t0x84, 0xDB, 0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46,\n\t0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8,\n\t0xB7, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8,\n\t// Bytes 2580 - 25bf\n\t0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8,\n\t0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81,\n\t0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9,\n\t0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84,\n\t// Bytes 25c0 - 25ff\n\t0xDB, 0x92, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85,\n\t0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x83, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84,\n\t0xD8, 0xAC, 0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8,\n\t0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9,\n\t// Bytes 2600 - 263f\n\t0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9,\n\t0x84, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC,\n\t0xD8, 0xAE, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9,\n\t0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A,\n\t// Bytes 2640 - 267f\n\t0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9,\n\t0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85,\n\t0xD8, 0xAE, 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9,\n\t0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46,\n\t// Bytes 2680 - 26bf\n\t0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9,\n\t0x86, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t// Bytes 26c0 - 26ff\n\t0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8,\n\t0xA7, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A,\n\t// Bytes 2700 - 273f\n\t0xD9, 0x94, 0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xD9, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9,\n\t0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9,\n\t// Bytes 2740 - 277f\n\t0x94, 0xDB, 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xDB, 0x90, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB,\n\t0x95, 0x46, 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2,\n\t0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46,\n\t0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0,\n\t0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD,\n\t0x80, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82,\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0,\n\t// Bytes 2780 - 27bf\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7,\n\t0x46, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46,\n\t0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0,\n\t0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE,\n\t0x9C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1,\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0,\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE,\n\t// Bytes 27c0 - 27ff\n\t0xB7, 0x46, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0x46, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46,\n\t0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2,\n\t0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81,\n\t0xBB, 0xE3, 0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88,\n\t0xE3, 0x82, 0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x83, 0xAD, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82,\n\t0xB3, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88,\n\t// Bytes 2800 - 283f\n\t0x46, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46,\n\t0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3,\n\t0x83, 0x9B, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83,\n\t0x9F, 0xE3, 0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA,\n\t0xE3, 0x83, 0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3,\n\t0x83, 0xA0, 0x46, 0xE4, 0xBB, 0xA4, 0xE5, 0x92,\n\t0x8C, 0x46, 0xE5, 0xA4, 0xA7, 0xE6, 0xAD, 0xA3,\n\t0x46, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, 0x90, 0x46,\n\t// Bytes 2840 - 287f\n\t0xE6, 0x98, 0x8E, 0xE6, 0xB2, 0xBB, 0x46, 0xE6,\n\t0x98, 0xAD, 0xE5, 0x92, 0x8C, 0x47, 0x72, 0x61,\n\t0x64, 0xE2, 0x88, 0x95, 0x73, 0x47, 0xE3, 0x80,\n\t0x94, 0x53, 0xE3, 0x80, 0x95, 0x48, 0x28, 0xE1,\n\t0x84, 0x80, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x29,\n\t0x48, 0x28, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1,\n\t// Bytes 2880 - 28bf\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x86, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x87, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x89,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x8B, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,\n\t0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x29,\n\t// Bytes 28c0 - 28ff\n\t0x48, 0x28, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1,\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x90, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x91, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x92,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x72, 0x61, 0x64,\n\t0xE2, 0x88, 0x95, 0x73, 0x32, 0x48, 0xD8, 0xA7,\n\t0xD9, 0x83, 0xD8, 0xA8, 0xD8, 0xB1, 0x48, 0xD8,\n\t0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87, 0x48,\n\t// Bytes 2900 - 293f\n\t0xD8, 0xB1, 0xD8, 0xB3, 0xD9, 0x88, 0xD9, 0x84,\n\t0x48, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7, 0xD9,\n\t0x84, 0x48, 0xD8, 0xB5, 0xD9, 0x84, 0xD8, 0xB9,\n\t0xD9, 0x85, 0x48, 0xD8, 0xB9, 0xD9, 0x84, 0xD9,\n\t0x8A, 0xD9, 0x87, 0x48, 0xD9, 0x85, 0xD8, 0xAD,\n\t0xD9, 0x85, 0xD8, 0xAF, 0x48, 0xD9, 0x88, 0xD8,\n\t0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x49, 0xE2, 0x80,\n\t0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x49,\n\t// Bytes 2940 - 297f\n\t0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80,\n\t0xB5, 0x49, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB,\n\t0xE2, 0x88, 0xAB, 0x49, 0xE2, 0x88, 0xAE, 0xE2,\n\t0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x49, 0xE3, 0x80,\n\t0x94, 0xE4, 0xB8, 0x89, 0xE3, 0x80, 0x95, 0x49,\n\t0xE3, 0x80, 0x94, 0xE4, 0xBA, 0x8C, 0xE3, 0x80,\n\t0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0x8B, 0x9D,\n\t0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5,\n\t// Bytes 2980 - 29bf\n\t0xAE, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,\n\t0x94, 0xE6, 0x89, 0x93, 0xE3, 0x80, 0x95, 0x49,\n\t0xE3, 0x80, 0x94, 0xE6, 0x95, 0x97, 0xE3, 0x80,\n\t0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x9C, 0xAC,\n\t0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7,\n\t0x82, 0xB9, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,\n\t0x94, 0xE7, 0x9B, 0x97, 0xE3, 0x80, 0x95, 0x49,\n\t0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t// Bytes 29c0 - 29ff\n\t0xAB, 0x49, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x81, 0x49, 0xE3, 0x82, 0xA6, 0xE3,\n\t0x82, 0xA9, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x82,\n\t0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0x49,\n\t0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xA0, 0x49, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xA4,\n\t0xE3, 0x83, 0xAA, 0x49, 0xE3, 0x82, 0xB1, 0xE3,\n\t0x83, 0xBC, 0xE3, 0x82, 0xB9, 0x49, 0xE3, 0x82,\n\t// Bytes 2a00 - 2a3f\n\t0xB3, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x8A, 0x49,\n\t0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83,\n\t0x81, 0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0x49, 0xE3, 0x83, 0x86, 0xE3,\n\t0x82, 0x99, 0xE3, 0x82, 0xB7, 0x49, 0xE3, 0x83,\n\t0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49,\n\t0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x83, 0xE3, 0x83,\n\t0x88, 0x49, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0xA4,\n\t// Bytes 2a40 - 2a7f\n\t0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x92, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83,\n\t0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB3, 0x49,\n\t0xE3, 0x83, 0x95, 0xE3, 0x83, 0xA9, 0xE3, 0x83,\n\t0xB3, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x82, 0xBD, 0x49, 0xE3, 0x83, 0x98, 0xE3,\n\t0x83, 0xAB, 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83,\n\t0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49,\n\t// Bytes 2a80 - 2abf\n\t0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xB3, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4,\n\t0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x9E, 0xE3,\n\t0x83, 0x83, 0xE3, 0x83, 0x8F, 0x49, 0xE3, 0x83,\n\t0x9E, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAF, 0x49,\n\t0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xAB, 0x49, 0xE3, 0x83, 0xA6, 0xE3, 0x82, 0xA2,\n\t0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83, 0xAF, 0xE3,\n\t// Bytes 2ac0 - 2aff\n\t0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE2, 0x80,\n\t0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2,\n\t0x80, 0xB2, 0x4C, 0xE2, 0x88, 0xAB, 0xE2, 0x88,\n\t0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x4C,\n\t0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3, 0x83,\n\t0x95, 0xE3, 0x82, 0xA1, 0x4C, 0xE3, 0x82, 0xA8,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3, 0x83,\n\t0xBC, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99,\n\t// Bytes 2b00 - 2b3f\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C, 0xE3,\n\t0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x9E, 0x4C, 0xE3, 0x82, 0xAB, 0xE3,\n\t0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88,\n\t0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xAD, 0xE3,\n\t0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82,\n\t0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B, 0xE3,\n\t0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x83,\n\t// Bytes 2b40 - 2b7f\n\t0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xA9, 0xE3, 0x83, 0xA0, 0x4C, 0xE3, 0x82, 0xAF,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0x8D, 0x4C, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xA4,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,\n\t0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x8F, 0xE3,\n\t// Bytes 2b80 - 2bbf\n\t0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x84,\n\t0x4C, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83,\n\t0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0x88, 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF, 0x4C,\n\t0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0x8B, 0xE3, 0x83, 0x92, 0x4C, 0xE3, 0x83, 0x98,\n\t// Bytes 2bc0 - 2bff\n\t0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x82,\n\t0xB9, 0x4C, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99,\n\t0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0x4C, 0xE3,\n\t0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xAF,\n\t0xE3, 0x83, 0xAD, 0x4C, 0xE3, 0x83, 0x9F, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3,\n\t0x4C, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83,\n\t// Bytes 2c00 - 2c3f\n\t0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3,\n\t0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAB, 0xE3, 0x83,\n\t0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0x4C,\n\t0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4, 0xBC,\n\t0x9A, 0xE7, 0xA4, 0xBE, 0x4E, 0x28, 0xE1, 0x84,\n\t0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x92, 0xE1,\n\t0x85, 0xAE, 0x29, 0x4F, 0xD8, 0xAC, 0xD9, 0x84,\n\t0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7, 0xD9,\n\t// Bytes 2c40 - 2c7f\n\t0x84, 0xD9, 0x87, 0x4F, 0xE3, 0x82, 0xA2, 0xE3,\n\t0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xA2, 0xE3,\n\t0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x82, 0xA2, 0x4F, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83,\n\t0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xB5, 0xE3,\n\t0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC,\n\t// Bytes 2c80 - 2cbf\n\t0xE3, 0x83, 0xA0, 0x4F, 0xE3, 0x83, 0x8F, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAC,\n\t0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x98, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x9B, 0xE3,\n\t0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x83, 0x9E, 0xE3,\n\t0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xA7,\n\t// Bytes 2cc0 - 2cff\n\t0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xA1, 0xE3,\n\t0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x88,\n\t0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xAB, 0xE3,\n\t0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99,\n\t0xE3, 0x83, 0xAB, 0x51, 0x28, 0xE1, 0x84, 0x8B,\n\t0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1, 0x85,\n\t0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x52, 0xE3, 0x82,\n\t0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3,\n\t// Bytes 2d00 - 2d3f\n\t0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC,\n\t0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9,\n\t0xE3, 0x83, 0xA0, 0x52, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x52, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9,\n\t0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3, 0x83,\n\t// Bytes 2d40 - 2d7f\n\t0xB3, 0x52, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xAD, 0x52, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82,\n\t0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0x52,\n\t0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82,\n\t0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88, 0xE3,\n\t0x83, 0xAB, 0x52, 0xE3, 0x83, 0x95, 0xE3, 0x82,\n\t// Bytes 2d80 - 2dbf\n\t0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7, 0xE3,\n\t0x82, 0xA7, 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83,\n\t0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x8F, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB,\n\t0x52, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xB3, 0xE3,\n\t0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99,\n\t0xE3, 0x83, 0xB3, 0x5F, 0xD8, 0xB5, 0xD9, 0x84,\n\t0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD9,\n\t// Bytes 2dc0 - 2dff\n\t0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9, 0x84,\n\t0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88, 0xD8,\n\t0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x44, 0x44, 0x5A,\n\t0xCC, 0x8C, 0xCD, 0x44, 0x44, 0x7A, 0xCC, 0x8C,\n\t0xCD, 0x44, 0x64, 0x7A, 0xCC, 0x8C, 0xCD, 0x46,\n\t0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x46,\n\t0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xCD, 0x46,\n\t0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xB9, 0x49,\n\t// Bytes 2e00 - 2e3f\n\t0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0x99, 0x11, 0x4C, 0xE1, 0x84, 0x8C, 0xE1, 0x85,\n\t0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4, 0x01,\n\t0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3,\n\t0x82, 0xAB, 0xE3, 0x82, 0x99, 0x11, 0x4C, 0xE3,\n\t0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x9B,\n\t0xE3, 0x82, 0x9A, 0x11, 0x4C, 0xE3, 0x83, 0xA4,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82,\n\t// Bytes 2e40 - 2e7f\n\t0x99, 0x11, 0x4F, 0xE1, 0x84, 0x8E, 0xE1, 0x85,\n\t0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, 0x80, 0xE1,\n\t0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82, 0xA4, 0xE3,\n\t0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF,\n\t0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3, 0x82, 0xB7,\n\t0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3, 0x83,\n\t0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3,\n\t// Bytes 2e80 - 2ebf\n\t0x82, 0xB7, 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3,\n\t0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x52,\n\t0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3,\n\t0x82, 0x99, 0x11, 0x52, 0xE3, 0x83, 0x95, 0xE3,\n\t0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x03,\n\t// Bytes 2ec0 - 2eff\n\t0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D, 0xCC, 0xB8,\n\t0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05, 0x03, 0x41,\n\t0xCC, 0x80, 0xCD, 0x03, 0x41, 0xCC, 0x81, 0xCD,\n\t0x03, 0x41, 0xCC, 0x83, 0xCD, 0x03, 0x41, 0xCC,\n\t0x84, 0xCD, 0x03, 0x41, 0xCC, 0x89, 0xCD, 0x03,\n\t0x41, 0xCC, 0x8C, 0xCD, 0x03, 0x41, 0xCC, 0x8F,\n\t0xCD, 0x03, 0x41, 0xCC, 0x91, 0xCD, 0x03, 0x41,\n\t0xCC, 0xA5, 0xB9, 0x03, 0x41, 0xCC, 0xA8, 0xA9,\n\t// Bytes 2f00 - 2f3f\n\t0x03, 0x42, 0xCC, 0x87, 0xCD, 0x03, 0x42, 0xCC,\n\t0xA3, 0xB9, 0x03, 0x42, 0xCC, 0xB1, 0xB9, 0x03,\n\t0x43, 0xCC, 0x81, 0xCD, 0x03, 0x43, 0xCC, 0x82,\n\t0xCD, 0x03, 0x43, 0xCC, 0x87, 0xCD, 0x03, 0x43,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x44, 0xCC, 0x87, 0xCD,\n\t0x03, 0x44, 0xCC, 0x8C, 0xCD, 0x03, 0x44, 0xCC,\n\t0xA3, 0xB9, 0x03, 0x44, 0xCC, 0xA7, 0xA9, 0x03,\n\t0x44, 0xCC, 0xAD, 0xB9, 0x03, 0x44, 0xCC, 0xB1,\n\t// Bytes 2f40 - 2f7f\n\t0xB9, 0x03, 0x45, 0xCC, 0x80, 0xCD, 0x03, 0x45,\n\t0xCC, 0x81, 0xCD, 0x03, 0x45, 0xCC, 0x83, 0xCD,\n\t0x03, 0x45, 0xCC, 0x86, 0xCD, 0x03, 0x45, 0xCC,\n\t0x87, 0xCD, 0x03, 0x45, 0xCC, 0x88, 0xCD, 0x03,\n\t0x45, 0xCC, 0x89, 0xCD, 0x03, 0x45, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x45, 0xCC, 0x8F, 0xCD, 0x03, 0x45,\n\t0xCC, 0x91, 0xCD, 0x03, 0x45, 0xCC, 0xA8, 0xA9,\n\t0x03, 0x45, 0xCC, 0xAD, 0xB9, 0x03, 0x45, 0xCC,\n\t// Bytes 2f80 - 2fbf\n\t0xB0, 0xB9, 0x03, 0x46, 0xCC, 0x87, 0xCD, 0x03,\n\t0x47, 0xCC, 0x81, 0xCD, 0x03, 0x47, 0xCC, 0x82,\n\t0xCD, 0x03, 0x47, 0xCC, 0x84, 0xCD, 0x03, 0x47,\n\t0xCC, 0x86, 0xCD, 0x03, 0x47, 0xCC, 0x87, 0xCD,\n\t0x03, 0x47, 0xCC, 0x8C, 0xCD, 0x03, 0x47, 0xCC,\n\t0xA7, 0xA9, 0x03, 0x48, 0xCC, 0x82, 0xCD, 0x03,\n\t0x48, 0xCC, 0x87, 0xCD, 0x03, 0x48, 0xCC, 0x88,\n\t0xCD, 0x03, 0x48, 0xCC, 0x8C, 0xCD, 0x03, 0x48,\n\t// Bytes 2fc0 - 2fff\n\t0xCC, 0xA3, 0xB9, 0x03, 0x48, 0xCC, 0xA7, 0xA9,\n\t0x03, 0x48, 0xCC, 0xAE, 0xB9, 0x03, 0x49, 0xCC,\n\t0x80, 0xCD, 0x03, 0x49, 0xCC, 0x81, 0xCD, 0x03,\n\t0x49, 0xCC, 0x82, 0xCD, 0x03, 0x49, 0xCC, 0x83,\n\t0xCD, 0x03, 0x49, 0xCC, 0x84, 0xCD, 0x03, 0x49,\n\t0xCC, 0x86, 0xCD, 0x03, 0x49, 0xCC, 0x87, 0xCD,\n\t0x03, 0x49, 0xCC, 0x89, 0xCD, 0x03, 0x49, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x49, 0xCC, 0x8F, 0xCD, 0x03,\n\t// Bytes 3000 - 303f\n\t0x49, 0xCC, 0x91, 0xCD, 0x03, 0x49, 0xCC, 0xA3,\n\t0xB9, 0x03, 0x49, 0xCC, 0xA8, 0xA9, 0x03, 0x49,\n\t0xCC, 0xB0, 0xB9, 0x03, 0x4A, 0xCC, 0x82, 0xCD,\n\t0x03, 0x4B, 0xCC, 0x81, 0xCD, 0x03, 0x4B, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x4B, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x4B, 0xCC, 0xA7, 0xA9, 0x03, 0x4B, 0xCC, 0xB1,\n\t0xB9, 0x03, 0x4C, 0xCC, 0x81, 0xCD, 0x03, 0x4C,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x4C, 0xCC, 0xA7, 0xA9,\n\t// Bytes 3040 - 307f\n\t0x03, 0x4C, 0xCC, 0xAD, 0xB9, 0x03, 0x4C, 0xCC,\n\t0xB1, 0xB9, 0x03, 0x4D, 0xCC, 0x81, 0xCD, 0x03,\n\t0x4D, 0xCC, 0x87, 0xCD, 0x03, 0x4D, 0xCC, 0xA3,\n\t0xB9, 0x03, 0x4E, 0xCC, 0x80, 0xCD, 0x03, 0x4E,\n\t0xCC, 0x81, 0xCD, 0x03, 0x4E, 0xCC, 0x83, 0xCD,\n\t0x03, 0x4E, 0xCC, 0x87, 0xCD, 0x03, 0x4E, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x4E, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x4E, 0xCC, 0xA7, 0xA9, 0x03, 0x4E, 0xCC, 0xAD,\n\t// Bytes 3080 - 30bf\n\t0xB9, 0x03, 0x4E, 0xCC, 0xB1, 0xB9, 0x03, 0x4F,\n\t0xCC, 0x80, 0xCD, 0x03, 0x4F, 0xCC, 0x81, 0xCD,\n\t0x03, 0x4F, 0xCC, 0x86, 0xCD, 0x03, 0x4F, 0xCC,\n\t0x89, 0xCD, 0x03, 0x4F, 0xCC, 0x8B, 0xCD, 0x03,\n\t0x4F, 0xCC, 0x8C, 0xCD, 0x03, 0x4F, 0xCC, 0x8F,\n\t0xCD, 0x03, 0x4F, 0xCC, 0x91, 0xCD, 0x03, 0x50,\n\t0xCC, 0x81, 0xCD, 0x03, 0x50, 0xCC, 0x87, 0xCD,\n\t0x03, 0x52, 0xCC, 0x81, 0xCD, 0x03, 0x52, 0xCC,\n\t// Bytes 30c0 - 30ff\n\t0x87, 0xCD, 0x03, 0x52, 0xCC, 0x8C, 0xCD, 0x03,\n\t0x52, 0xCC, 0x8F, 0xCD, 0x03, 0x52, 0xCC, 0x91,\n\t0xCD, 0x03, 0x52, 0xCC, 0xA7, 0xA9, 0x03, 0x52,\n\t0xCC, 0xB1, 0xB9, 0x03, 0x53, 0xCC, 0x82, 0xCD,\n\t0x03, 0x53, 0xCC, 0x87, 0xCD, 0x03, 0x53, 0xCC,\n\t0xA6, 0xB9, 0x03, 0x53, 0xCC, 0xA7, 0xA9, 0x03,\n\t0x54, 0xCC, 0x87, 0xCD, 0x03, 0x54, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x54, 0xCC, 0xA3, 0xB9, 0x03, 0x54,\n\t// Bytes 3100 - 313f\n\t0xCC, 0xA6, 0xB9, 0x03, 0x54, 0xCC, 0xA7, 0xA9,\n\t0x03, 0x54, 0xCC, 0xAD, 0xB9, 0x03, 0x54, 0xCC,\n\t0xB1, 0xB9, 0x03, 0x55, 0xCC, 0x80, 0xCD, 0x03,\n\t0x55, 0xCC, 0x81, 0xCD, 0x03, 0x55, 0xCC, 0x82,\n\t0xCD, 0x03, 0x55, 0xCC, 0x86, 0xCD, 0x03, 0x55,\n\t0xCC, 0x89, 0xCD, 0x03, 0x55, 0xCC, 0x8A, 0xCD,\n\t0x03, 0x55, 0xCC, 0x8B, 0xCD, 0x03, 0x55, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x55, 0xCC, 0x8F, 0xCD, 0x03,\n\t// Bytes 3140 - 317f\n\t0x55, 0xCC, 0x91, 0xCD, 0x03, 0x55, 0xCC, 0xA3,\n\t0xB9, 0x03, 0x55, 0xCC, 0xA4, 0xB9, 0x03, 0x55,\n\t0xCC, 0xA8, 0xA9, 0x03, 0x55, 0xCC, 0xAD, 0xB9,\n\t0x03, 0x55, 0xCC, 0xB0, 0xB9, 0x03, 0x56, 0xCC,\n\t0x83, 0xCD, 0x03, 0x56, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x57, 0xCC, 0x80, 0xCD, 0x03, 0x57, 0xCC, 0x81,\n\t0xCD, 0x03, 0x57, 0xCC, 0x82, 0xCD, 0x03, 0x57,\n\t0xCC, 0x87, 0xCD, 0x03, 0x57, 0xCC, 0x88, 0xCD,\n\t// Bytes 3180 - 31bf\n\t0x03, 0x57, 0xCC, 0xA3, 0xB9, 0x03, 0x58, 0xCC,\n\t0x87, 0xCD, 0x03, 0x58, 0xCC, 0x88, 0xCD, 0x03,\n\t0x59, 0xCC, 0x80, 0xCD, 0x03, 0x59, 0xCC, 0x81,\n\t0xCD, 0x03, 0x59, 0xCC, 0x82, 0xCD, 0x03, 0x59,\n\t0xCC, 0x83, 0xCD, 0x03, 0x59, 0xCC, 0x84, 0xCD,\n\t0x03, 0x59, 0xCC, 0x87, 0xCD, 0x03, 0x59, 0xCC,\n\t0x88, 0xCD, 0x03, 0x59, 0xCC, 0x89, 0xCD, 0x03,\n\t0x59, 0xCC, 0xA3, 0xB9, 0x03, 0x5A, 0xCC, 0x81,\n\t// Bytes 31c0 - 31ff\n\t0xCD, 0x03, 0x5A, 0xCC, 0x82, 0xCD, 0x03, 0x5A,\n\t0xCC, 0x87, 0xCD, 0x03, 0x5A, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x5A, 0xCC, 0xA3, 0xB9, 0x03, 0x5A, 0xCC,\n\t0xB1, 0xB9, 0x03, 0x61, 0xCC, 0x80, 0xCD, 0x03,\n\t0x61, 0xCC, 0x81, 0xCD, 0x03, 0x61, 0xCC, 0x83,\n\t0xCD, 0x03, 0x61, 0xCC, 0x84, 0xCD, 0x03, 0x61,\n\t0xCC, 0x89, 0xCD, 0x03, 0x61, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x61, 0xCC, 0x8F, 0xCD, 0x03, 0x61, 0xCC,\n\t// Bytes 3200 - 323f\n\t0x91, 0xCD, 0x03, 0x61, 0xCC, 0xA5, 0xB9, 0x03,\n\t0x61, 0xCC, 0xA8, 0xA9, 0x03, 0x62, 0xCC, 0x87,\n\t0xCD, 0x03, 0x62, 0xCC, 0xA3, 0xB9, 0x03, 0x62,\n\t0xCC, 0xB1, 0xB9, 0x03, 0x63, 0xCC, 0x81, 0xCD,\n\t0x03, 0x63, 0xCC, 0x82, 0xCD, 0x03, 0x63, 0xCC,\n\t0x87, 0xCD, 0x03, 0x63, 0xCC, 0x8C, 0xCD, 0x03,\n\t0x64, 0xCC, 0x87, 0xCD, 0x03, 0x64, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x64, 0xCC, 0xA3, 0xB9, 0x03, 0x64,\n\t// Bytes 3240 - 327f\n\t0xCC, 0xA7, 0xA9, 0x03, 0x64, 0xCC, 0xAD, 0xB9,\n\t0x03, 0x64, 0xCC, 0xB1, 0xB9, 0x03, 0x65, 0xCC,\n\t0x80, 0xCD, 0x03, 0x65, 0xCC, 0x81, 0xCD, 0x03,\n\t0x65, 0xCC, 0x83, 0xCD, 0x03, 0x65, 0xCC, 0x86,\n\t0xCD, 0x03, 0x65, 0xCC, 0x87, 0xCD, 0x03, 0x65,\n\t0xCC, 0x88, 0xCD, 0x03, 0x65, 0xCC, 0x89, 0xCD,\n\t0x03, 0x65, 0xCC, 0x8C, 0xCD, 0x03, 0x65, 0xCC,\n\t0x8F, 0xCD, 0x03, 0x65, 0xCC, 0x91, 0xCD, 0x03,\n\t// Bytes 3280 - 32bf\n\t0x65, 0xCC, 0xA8, 0xA9, 0x03, 0x65, 0xCC, 0xAD,\n\t0xB9, 0x03, 0x65, 0xCC, 0xB0, 0xB9, 0x03, 0x66,\n\t0xCC, 0x87, 0xCD, 0x03, 0x67, 0xCC, 0x81, 0xCD,\n\t0x03, 0x67, 0xCC, 0x82, 0xCD, 0x03, 0x67, 0xCC,\n\t0x84, 0xCD, 0x03, 0x67, 0xCC, 0x86, 0xCD, 0x03,\n\t0x67, 0xCC, 0x87, 0xCD, 0x03, 0x67, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x67, 0xCC, 0xA7, 0xA9, 0x03, 0x68,\n\t0xCC, 0x82, 0xCD, 0x03, 0x68, 0xCC, 0x87, 0xCD,\n\t// Bytes 32c0 - 32ff\n\t0x03, 0x68, 0xCC, 0x88, 0xCD, 0x03, 0x68, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x68, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x68, 0xCC, 0xA7, 0xA9, 0x03, 0x68, 0xCC, 0xAE,\n\t0xB9, 0x03, 0x68, 0xCC, 0xB1, 0xB9, 0x03, 0x69,\n\t0xCC, 0x80, 0xCD, 0x03, 0x69, 0xCC, 0x81, 0xCD,\n\t0x03, 0x69, 0xCC, 0x82, 0xCD, 0x03, 0x69, 0xCC,\n\t0x83, 0xCD, 0x03, 0x69, 0xCC, 0x84, 0xCD, 0x03,\n\t0x69, 0xCC, 0x86, 0xCD, 0x03, 0x69, 0xCC, 0x89,\n\t// Bytes 3300 - 333f\n\t0xCD, 0x03, 0x69, 0xCC, 0x8C, 0xCD, 0x03, 0x69,\n\t0xCC, 0x8F, 0xCD, 0x03, 0x69, 0xCC, 0x91, 0xCD,\n\t0x03, 0x69, 0xCC, 0xA3, 0xB9, 0x03, 0x69, 0xCC,\n\t0xA8, 0xA9, 0x03, 0x69, 0xCC, 0xB0, 0xB9, 0x03,\n\t0x6A, 0xCC, 0x82, 0xCD, 0x03, 0x6A, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x6B, 0xCC, 0x81, 0xCD, 0x03, 0x6B,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x6B, 0xCC, 0xA3, 0xB9,\n\t0x03, 0x6B, 0xCC, 0xA7, 0xA9, 0x03, 0x6B, 0xCC,\n\t// Bytes 3340 - 337f\n\t0xB1, 0xB9, 0x03, 0x6C, 0xCC, 0x81, 0xCD, 0x03,\n\t0x6C, 0xCC, 0x8C, 0xCD, 0x03, 0x6C, 0xCC, 0xA7,\n\t0xA9, 0x03, 0x6C, 0xCC, 0xAD, 0xB9, 0x03, 0x6C,\n\t0xCC, 0xB1, 0xB9, 0x03, 0x6D, 0xCC, 0x81, 0xCD,\n\t0x03, 0x6D, 0xCC, 0x87, 0xCD, 0x03, 0x6D, 0xCC,\n\t0xA3, 0xB9, 0x03, 0x6E, 0xCC, 0x80, 0xCD, 0x03,\n\t0x6E, 0xCC, 0x81, 0xCD, 0x03, 0x6E, 0xCC, 0x83,\n\t0xCD, 0x03, 0x6E, 0xCC, 0x87, 0xCD, 0x03, 0x6E,\n\t// Bytes 3380 - 33bf\n\t0xCC, 0x8C, 0xCD, 0x03, 0x6E, 0xCC, 0xA3, 0xB9,\n\t0x03, 0x6E, 0xCC, 0xA7, 0xA9, 0x03, 0x6E, 0xCC,\n\t0xAD, 0xB9, 0x03, 0x6E, 0xCC, 0xB1, 0xB9, 0x03,\n\t0x6F, 0xCC, 0x80, 0xCD, 0x03, 0x6F, 0xCC, 0x81,\n\t0xCD, 0x03, 0x6F, 0xCC, 0x86, 0xCD, 0x03, 0x6F,\n\t0xCC, 0x89, 0xCD, 0x03, 0x6F, 0xCC, 0x8B, 0xCD,\n\t0x03, 0x6F, 0xCC, 0x8C, 0xCD, 0x03, 0x6F, 0xCC,\n\t0x8F, 0xCD, 0x03, 0x6F, 0xCC, 0x91, 0xCD, 0x03,\n\t// Bytes 33c0 - 33ff\n\t0x70, 0xCC, 0x81, 0xCD, 0x03, 0x70, 0xCC, 0x87,\n\t0xCD, 0x03, 0x72, 0xCC, 0x81, 0xCD, 0x03, 0x72,\n\t0xCC, 0x87, 0xCD, 0x03, 0x72, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x72, 0xCC, 0x8F, 0xCD, 0x03, 0x72, 0xCC,\n\t0x91, 0xCD, 0x03, 0x72, 0xCC, 0xA7, 0xA9, 0x03,\n\t0x72, 0xCC, 0xB1, 0xB9, 0x03, 0x73, 0xCC, 0x82,\n\t0xCD, 0x03, 0x73, 0xCC, 0x87, 0xCD, 0x03, 0x73,\n\t0xCC, 0xA6, 0xB9, 0x03, 0x73, 0xCC, 0xA7, 0xA9,\n\t// Bytes 3400 - 343f\n\t0x03, 0x74, 0xCC, 0x87, 0xCD, 0x03, 0x74, 0xCC,\n\t0x88, 0xCD, 0x03, 0x74, 0xCC, 0x8C, 0xCD, 0x03,\n\t0x74, 0xCC, 0xA3, 0xB9, 0x03, 0x74, 0xCC, 0xA6,\n\t0xB9, 0x03, 0x74, 0xCC, 0xA7, 0xA9, 0x03, 0x74,\n\t0xCC, 0xAD, 0xB9, 0x03, 0x74, 0xCC, 0xB1, 0xB9,\n\t0x03, 0x75, 0xCC, 0x80, 0xCD, 0x03, 0x75, 0xCC,\n\t0x81, 0xCD, 0x03, 0x75, 0xCC, 0x82, 0xCD, 0x03,\n\t0x75, 0xCC, 0x86, 0xCD, 0x03, 0x75, 0xCC, 0x89,\n\t// Bytes 3440 - 347f\n\t0xCD, 0x03, 0x75, 0xCC, 0x8A, 0xCD, 0x03, 0x75,\n\t0xCC, 0x8B, 0xCD, 0x03, 0x75, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x75, 0xCC, 0x8F, 0xCD, 0x03, 0x75, 0xCC,\n\t0x91, 0xCD, 0x03, 0x75, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x75, 0xCC, 0xA4, 0xB9, 0x03, 0x75, 0xCC, 0xA8,\n\t0xA9, 0x03, 0x75, 0xCC, 0xAD, 0xB9, 0x03, 0x75,\n\t0xCC, 0xB0, 0xB9, 0x03, 0x76, 0xCC, 0x83, 0xCD,\n\t0x03, 0x76, 0xCC, 0xA3, 0xB9, 0x03, 0x77, 0xCC,\n\t// Bytes 3480 - 34bf\n\t0x80, 0xCD, 0x03, 0x77, 0xCC, 0x81, 0xCD, 0x03,\n\t0x77, 0xCC, 0x82, 0xCD, 0x03, 0x77, 0xCC, 0x87,\n\t0xCD, 0x03, 0x77, 0xCC, 0x88, 0xCD, 0x03, 0x77,\n\t0xCC, 0x8A, 0xCD, 0x03, 0x77, 0xCC, 0xA3, 0xB9,\n\t0x03, 0x78, 0xCC, 0x87, 0xCD, 0x03, 0x78, 0xCC,\n\t0x88, 0xCD, 0x03, 0x79, 0xCC, 0x80, 0xCD, 0x03,\n\t0x79, 0xCC, 0x81, 0xCD, 0x03, 0x79, 0xCC, 0x82,\n\t0xCD, 0x03, 0x79, 0xCC, 0x83, 0xCD, 0x03, 0x79,\n\t// Bytes 34c0 - 34ff\n\t0xCC, 0x84, 0xCD, 0x03, 0x79, 0xCC, 0x87, 0xCD,\n\t0x03, 0x79, 0xCC, 0x88, 0xCD, 0x03, 0x79, 0xCC,\n\t0x89, 0xCD, 0x03, 0x79, 0xCC, 0x8A, 0xCD, 0x03,\n\t0x79, 0xCC, 0xA3, 0xB9, 0x03, 0x7A, 0xCC, 0x81,\n\t0xCD, 0x03, 0x7A, 0xCC, 0x82, 0xCD, 0x03, 0x7A,\n\t0xCC, 0x87, 0xCD, 0x03, 0x7A, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x7A, 0xCC, 0xA3, 0xB9, 0x03, 0x7A, 0xCC,\n\t0xB1, 0xB9, 0x04, 0xC2, 0xA8, 0xCC, 0x80, 0xCE,\n\t// Bytes 3500 - 353f\n\t0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCE, 0x04, 0xC2,\n\t0xA8, 0xCD, 0x82, 0xCE, 0x04, 0xC3, 0x86, 0xCC,\n\t0x81, 0xCD, 0x04, 0xC3, 0x86, 0xCC, 0x84, 0xCD,\n\t0x04, 0xC3, 0x98, 0xCC, 0x81, 0xCD, 0x04, 0xC3,\n\t0xA6, 0xCC, 0x81, 0xCD, 0x04, 0xC3, 0xA6, 0xCC,\n\t0x84, 0xCD, 0x04, 0xC3, 0xB8, 0xCC, 0x81, 0xCD,\n\t0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xCD, 0x04, 0xC6,\n\t0xB7, 0xCC, 0x8C, 0xCD, 0x04, 0xCA, 0x92, 0xCC,\n\t// Bytes 3540 - 357f\n\t0x8C, 0xCD, 0x04, 0xCE, 0x91, 0xCC, 0x80, 0xCD,\n\t0x04, 0xCE, 0x91, 0xCC, 0x81, 0xCD, 0x04, 0xCE,\n\t0x91, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0x91, 0xCC,\n\t0x86, 0xCD, 0x04, 0xCE, 0x91, 0xCD, 0x85, 0xDD,\n\t0x04, 0xCE, 0x95, 0xCC, 0x80, 0xCD, 0x04, 0xCE,\n\t0x95, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0x97, 0xCC,\n\t0x80, 0xCD, 0x04, 0xCE, 0x97, 0xCC, 0x81, 0xCD,\n\t0x04, 0xCE, 0x97, 0xCD, 0x85, 0xDD, 0x04, 0xCE,\n\t// Bytes 3580 - 35bf\n\t0x99, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0x99, 0xCC,\n\t0x81, 0xCD, 0x04, 0xCE, 0x99, 0xCC, 0x84, 0xCD,\n\t0x04, 0xCE, 0x99, 0xCC, 0x86, 0xCD, 0x04, 0xCE,\n\t0x99, 0xCC, 0x88, 0xCD, 0x04, 0xCE, 0x9F, 0xCC,\n\t0x80, 0xCD, 0x04, 0xCE, 0x9F, 0xCC, 0x81, 0xCD,\n\t0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xCD, 0x04, 0xCE,\n\t0xA5, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0xA5, 0xCC,\n\t0x81, 0xCD, 0x04, 0xCE, 0xA5, 0xCC, 0x84, 0xCD,\n\t// Bytes 35c0 - 35ff\n\t0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xCD, 0x04, 0xCE,\n\t0xA5, 0xCC, 0x88, 0xCD, 0x04, 0xCE, 0xA9, 0xCC,\n\t0x80, 0xCD, 0x04, 0xCE, 0xA9, 0xCC, 0x81, 0xCD,\n\t0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xDD, 0x04, 0xCE,\n\t0xB1, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0xB1, 0xCC,\n\t0x86, 0xCD, 0x04, 0xCE, 0xB1, 0xCD, 0x85, 0xDD,\n\t0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xCD, 0x04, 0xCE,\n\t0xB5, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0xB7, 0xCD,\n\t// Bytes 3600 - 363f\n\t0x85, 0xDD, 0x04, 0xCE, 0xB9, 0xCC, 0x80, 0xCD,\n\t0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xCD, 0x04, 0xCE,\n\t0xB9, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0xB9, 0xCC,\n\t0x86, 0xCD, 0x04, 0xCE, 0xB9, 0xCD, 0x82, 0xCD,\n\t0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xCD, 0x04, 0xCE,\n\t0xBF, 0xCC, 0x81, 0xCD, 0x04, 0xCF, 0x81, 0xCC,\n\t0x93, 0xCD, 0x04, 0xCF, 0x81, 0xCC, 0x94, 0xCD,\n\t0x04, 0xCF, 0x85, 0xCC, 0x80, 0xCD, 0x04, 0xCF,\n\t// Bytes 3640 - 367f\n\t0x85, 0xCC, 0x81, 0xCD, 0x04, 0xCF, 0x85, 0xCC,\n\t0x84, 0xCD, 0x04, 0xCF, 0x85, 0xCC, 0x86, 0xCD,\n\t0x04, 0xCF, 0x85, 0xCD, 0x82, 0xCD, 0x04, 0xCF,\n\t0x89, 0xCD, 0x85, 0xDD, 0x04, 0xCF, 0x92, 0xCC,\n\t0x81, 0xCD, 0x04, 0xCF, 0x92, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD0, 0x86, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0x90, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0x90, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0x93, 0xCC, 0x81, 0xCD,\n\t// Bytes 3680 - 36bf\n\t0x04, 0xD0, 0x95, 0xCC, 0x80, 0xCD, 0x04, 0xD0,\n\t0x95, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0x95, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0x96, 0xCC, 0x86, 0xCD,\n\t0x04, 0xD0, 0x96, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0x97, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x98, 0xCC,\n\t0x80, 0xCD, 0x04, 0xD0, 0x98, 0xCC, 0x84, 0xCD,\n\t0x04, 0xD0, 0x98, 0xCC, 0x86, 0xCD, 0x04, 0xD0,\n\t0x98, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x9A, 0xCC,\n\t// Bytes 36c0 - 36ff\n\t0x81, 0xCD, 0x04, 0xD0, 0x9E, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xCD, 0x04, 0xD0,\n\t0xA3, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0xA3, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0xA3, 0xCC, 0x8B, 0xCD,\n\t0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0xAB, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0xAD, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0xB0, 0xCC, 0x86, 0xCD,\n\t0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t// Bytes 3700 - 373f\n\t0xB3, 0xCC, 0x81, 0xCD, 0x04, 0xD0, 0xB5, 0xCC,\n\t0x80, 0xCD, 0x04, 0xD0, 0xB5, 0xCC, 0x86, 0xCD,\n\t0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0xB6, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0xB6, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0xB7, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xCD, 0x04, 0xD0,\n\t0xB8, 0xCC, 0x84, 0xCD, 0x04, 0xD0, 0xB8, 0xCC,\n\t0x86, 0xCD, 0x04, 0xD0, 0xB8, 0xCC, 0x88, 0xCD,\n\t// Bytes 3740 - 377f\n\t0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xCD, 0x04, 0xD0,\n\t0xBE, 0xCC, 0x88, 0xCD, 0x04, 0xD1, 0x83, 0xCC,\n\t0x84, 0xCD, 0x04, 0xD1, 0x83, 0xCC, 0x86, 0xCD,\n\t0x04, 0xD1, 0x83, 0xCC, 0x88, 0xCD, 0x04, 0xD1,\n\t0x83, 0xCC, 0x8B, 0xCD, 0x04, 0xD1, 0x87, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD1, 0x8B, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xCD, 0x04, 0xD1,\n\t0x96, 0xCC, 0x88, 0xCD, 0x04, 0xD1, 0xB4, 0xCC,\n\t// Bytes 3780 - 37bf\n\t0x8F, 0xCD, 0x04, 0xD1, 0xB5, 0xCC, 0x8F, 0xCD,\n\t0x04, 0xD3, 0x98, 0xCC, 0x88, 0xCD, 0x04, 0xD3,\n\t0x99, 0xCC, 0x88, 0xCD, 0x04, 0xD3, 0xA8, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD3, 0xA9, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x04, 0xD8,\n\t0xA7, 0xD9, 0x94, 0xCD, 0x04, 0xD8, 0xA7, 0xD9,\n\t0x95, 0xB9, 0x04, 0xD9, 0x88, 0xD9, 0x94, 0xCD,\n\t0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xCD, 0x04, 0xDB,\n\t// Bytes 37c0 - 37ff\n\t0x81, 0xD9, 0x94, 0xCD, 0x04, 0xDB, 0x92, 0xD9,\n\t0x94, 0xCD, 0x04, 0xDB, 0x95, 0xD9, 0x94, 0xCD,\n\t0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05,\n\t0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x41,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x41, 0xCC,\n\t0x82, 0xCC, 0x89, 0xCE, 0x05, 0x41, 0xCC, 0x86,\n\t0xCC, 0x80, 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC,\n\t0x81, 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x83,\n\t// Bytes 3800 - 383f\n\t0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x89, 0xCE,\n\t0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05,\n\t0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x41,\n\t0xCC, 0x8A, 0xCC, 0x81, 0xCE, 0x05, 0x41, 0xCC,\n\t0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x41, 0xCC, 0xA3,\n\t0xCC, 0x86, 0xCE, 0x05, 0x43, 0xCC, 0xA7, 0xCC,\n\t0x81, 0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x80,\n\t0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x81, 0xCE,\n\t// Bytes 3840 - 387f\n\t0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05,\n\t0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x45,\n\t0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05, 0x45, 0xCC,\n\t0x84, 0xCC, 0x81, 0xCE, 0x05, 0x45, 0xCC, 0xA3,\n\t0xCC, 0x82, 0xCE, 0x05, 0x45, 0xCC, 0xA7, 0xCC,\n\t0x86, 0xCE, 0x05, 0x49, 0xCC, 0x88, 0xCC, 0x81,\n\t0xCE, 0x05, 0x4C, 0xCC, 0xA3, 0xCC, 0x84, 0xCE,\n\t0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05,\n\t// Bytes 3880 - 38bf\n\t0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x4F,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x4F, 0xCC,\n\t0x82, 0xCC, 0x89, 0xCE, 0x05, 0x4F, 0xCC, 0x83,\n\t0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC, 0x83, 0xCC,\n\t0x84, 0xCE, 0x05, 0x4F, 0xCC, 0x83, 0xCC, 0x88,\n\t0xCE, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x80, 0xCE,\n\t0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05,\n\t0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x4F,\n\t// Bytes 38c0 - 38ff\n\t0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x4F, 0xCC,\n\t0x9B, 0xCC, 0x80, 0xCE, 0x05, 0x4F, 0xCC, 0x9B,\n\t0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC,\n\t0x83, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0x89,\n\t0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA,\n\t0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05,\n\t0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCE, 0x05, 0x52,\n\t0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05, 0x53, 0xCC,\n\t// Bytes 3900 - 393f\n\t0x81, 0xCC, 0x87, 0xCE, 0x05, 0x53, 0xCC, 0x8C,\n\t0xCC, 0x87, 0xCE, 0x05, 0x53, 0xCC, 0xA3, 0xCC,\n\t0x87, 0xCE, 0x05, 0x55, 0xCC, 0x83, 0xCC, 0x81,\n\t0xCE, 0x05, 0x55, 0xCC, 0x84, 0xCC, 0x88, 0xCE,\n\t0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x05,\n\t0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x05, 0x55,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x55, 0xCC,\n\t0x88, 0xCC, 0x8C, 0xCE, 0x05, 0x55, 0xCC, 0x9B,\n\t// Bytes 3940 - 397f\n\t0xCC, 0x80, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC,\n\t0x81, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x83,\n\t0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x89, 0xCE,\n\t0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05,\n\t0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05, 0x61,\n\t0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x61, 0xCC,\n\t0x82, 0xCC, 0x83, 0xCE, 0x05, 0x61, 0xCC, 0x82,\n\t0xCC, 0x89, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC,\n\t// Bytes 3980 - 39bf\n\t0x80, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x81,\n\t0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x83, 0xCE,\n\t0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xCE, 0x05,\n\t0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x61,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x61, 0xCC,\n\t0x8A, 0xCC, 0x81, 0xCE, 0x05, 0x61, 0xCC, 0xA3,\n\t0xCC, 0x82, 0xCE, 0x05, 0x61, 0xCC, 0xA3, 0xCC,\n\t0x86, 0xCE, 0x05, 0x63, 0xCC, 0xA7, 0xCC, 0x81,\n\t// Bytes 39c0 - 39ff\n\t0xCE, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x80, 0xCE,\n\t0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05,\n\t0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x65,\n\t0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x65, 0xCC,\n\t0x84, 0xCC, 0x80, 0xCE, 0x05, 0x65, 0xCC, 0x84,\n\t0xCC, 0x81, 0xCE, 0x05, 0x65, 0xCC, 0xA3, 0xCC,\n\t0x82, 0xCE, 0x05, 0x65, 0xCC, 0xA7, 0xCC, 0x86,\n\t0xCE, 0x05, 0x69, 0xCC, 0x88, 0xCC, 0x81, 0xCE,\n\t// Bytes 3a00 - 3a3f\n\t0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05,\n\t0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05, 0x6F,\n\t0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x6F, 0xCC,\n\t0x82, 0xCC, 0x83, 0xCE, 0x05, 0x6F, 0xCC, 0x82,\n\t0xCC, 0x89, 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC,\n\t0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x84,\n\t0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x88, 0xCE,\n\t0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05,\n\t// Bytes 3a40 - 3a7f\n\t0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05, 0x6F,\n\t0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x6F, 0xCC,\n\t0x88, 0xCC, 0x84, 0xCE, 0x05, 0x6F, 0xCC, 0x9B,\n\t0xCC, 0x80, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC,\n\t0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x83,\n\t0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x89, 0xCE,\n\t0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05,\n\t0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x6F,\n\t// Bytes 3a80 - 3abf\n\t0xCC, 0xA8, 0xCC, 0x84, 0xCE, 0x05, 0x72, 0xCC,\n\t0xA3, 0xCC, 0x84, 0xCE, 0x05, 0x73, 0xCC, 0x81,\n\t0xCC, 0x87, 0xCE, 0x05, 0x73, 0xCC, 0x8C, 0xCC,\n\t0x87, 0xCE, 0x05, 0x73, 0xCC, 0xA3, 0xCC, 0x87,\n\t0xCE, 0x05, 0x75, 0xCC, 0x83, 0xCC, 0x81, 0xCE,\n\t0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xCE, 0x05,\n\t0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x05, 0x75,\n\t0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x05, 0x75, 0xCC,\n\t// Bytes 3ac0 - 3aff\n\t0x88, 0xCC, 0x84, 0xCE, 0x05, 0x75, 0xCC, 0x88,\n\t0xCC, 0x8C, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC,\n\t0x80, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x81,\n\t0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x83, 0xCE,\n\t0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xCE, 0x05,\n\t0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05, 0xE1,\n\t0xBE, 0xBF, 0xCC, 0x80, 0xCE, 0x05, 0xE1, 0xBE,\n\t0xBF, 0xCC, 0x81, 0xCE, 0x05, 0xE1, 0xBE, 0xBF,\n\t// Bytes 3b00 - 3b3f\n\t0xCD, 0x82, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCC,\n\t0x80, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCC, 0x81,\n\t0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCD, 0x82, 0xCE,\n\t0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87,\n\t0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x92,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x94, 0xCC,\n\t// Bytes 3b40 - 3b7f\n\t0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88,\n\t0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x83,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x85, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88, 0xCC, 0xB8,\n\t// Bytes 3b80 - 3bbf\n\t0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB3,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB6, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC, 0xB8, 0x05,\n\t// Bytes 3bc0 - 3bff\n\t0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x83,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x86, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0x05, 0x05,\n\t// Bytes 3c00 - 3c3f\n\t0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xAB,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB2, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0x05, 0x06,\n\t0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t// Bytes 3c40 - 3c7f\n\t0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t// Bytes 3c80 - 3cbf\n\t0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t// Bytes 3cc0 - 3cff\n\t0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,\n\t// Bytes 3d00 - 3d3f\n\t0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,\n\t// Bytes 3d40 - 3d7f\n\t0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t// Bytes 3d80 - 3dbf\n\t0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t// Bytes 3dc0 - 3dff\n\t0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t// Bytes 3e00 - 3e3f\n\t0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,\n\t0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,\n\t// Bytes 3e40 - 3e7f\n\t0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,\n\t0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,\n\t0xE0, 0xA7, 0x87, 0xE0, 0xA6, 0xBE, 0x01, 0x06,\n\t0xE0, 0xA7, 0x87, 0xE0, 0xA7, 0x97, 0x01, 0x06,\n\t0xE0, 0xAD, 0x87, 0xE0, 0xAC, 0xBE, 0x01, 0x06,\n\t0xE0, 0xAD, 0x87, 0xE0, 0xAD, 0x96, 0x01, 0x06,\n\t0xE0, 0xAD, 0x87, 0xE0, 0xAD, 0x97, 0x01, 0x06,\n\t0xE0, 0xAE, 0x92, 0xE0, 0xAF, 0x97, 0x01, 0x06,\n\t// Bytes 3e80 - 3ebf\n\t0xE0, 0xAF, 0x86, 0xE0, 0xAE, 0xBE, 0x01, 0x06,\n\t0xE0, 0xAF, 0x86, 0xE0, 0xAF, 0x97, 0x01, 0x06,\n\t0xE0, 0xAF, 0x87, 0xE0, 0xAE, 0xBE, 0x01, 0x06,\n\t0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0x89, 0x06,\n\t0xE0, 0xB2, 0xBF, 0xE0, 0xB3, 0x95, 0x01, 0x06,\n\t0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x95, 0x01, 0x06,\n\t0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x96, 0x01, 0x06,\n\t0xE0, 0xB5, 0x86, 0xE0, 0xB4, 0xBE, 0x01, 0x06,\n\t// Bytes 3ec0 - 3eff\n\t0xE0, 0xB5, 0x86, 0xE0, 0xB5, 0x97, 0x01, 0x06,\n\t0xE0, 0xB5, 0x87, 0xE0, 0xB4, 0xBE, 0x01, 0x06,\n\t0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0x15, 0x06,\n\t0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x9F, 0x01, 0x06,\n\t0xE1, 0x80, 0xA5, 0xE1, 0x80, 0xAE, 0x01, 0x06,\n\t0xE1, 0xAC, 0x85, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0x87, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0x89, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t// Bytes 3f00 - 3f3f\n\t0xE1, 0xAC, 0x8B, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0x8D, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0x91, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0xBA, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0xBC, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0xBE, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAC, 0xBF, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t0xE1, 0xAD, 0x82, 0xE1, 0xAC, 0xB5, 0x01, 0x06,\n\t// Bytes 3f40 - 3f7f\n\t0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 3f80 - 3fbf\n\t0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 3fc0 - 3fff\n\t0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t// Bytes 4000 - 403f\n\t0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 4040 - 407f\n\t0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 4080 - 40bf\n\t0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 40c0 - 40ff\n\t0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 4100 - 413f\n\t0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xF0, 0x90, 0x97, 0x92, 0xCC, 0x87, 0xCD, 0x06,\n\t0xF0, 0x90, 0x97, 0x9A, 0xCC, 0x87, 0xCD, 0x08,\n\t0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x93,\n\t0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91,\n\t// Bytes 4140 - 417f\n\t0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80,\n\t// Bytes 4180 - 41bf\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93,\n\t0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,\n\t// Bytes 41c0 - 41ff\n\t0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x94,\n\t// Bytes 4200 - 423f\n\t0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93,\n\t0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,\n\t// Bytes 4240 - 427f\n\t0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89,\n\t// Bytes 4280 - 42bf\n\t0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,\n\t0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91, 0x82, 0xBA,\n\t0x0D, 0x08, 0xF0, 0x91, 0x82, 0x9B, 0xF0, 0x91,\n\t0x82, 0xBA, 0x0D, 0x08, 0xF0, 0x91, 0x82, 0xA5,\n\t0xF0, 0x91, 0x82, 0xBA, 0x0D, 0x08, 0xF0, 0x91,\n\t0x84, 0xB1, 0xF0, 0x91, 0x84, 0xA7, 0x01, 0x08,\n\t0xF0, 0x91, 0x84, 0xB2, 0xF0, 0x91, 0x84, 0xA7,\n\t0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91,\n\t// Bytes 42c0 - 42ff\n\t0x8C, 0xBE, 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87,\n\t0xF0, 0x91, 0x8D, 0x97, 0x01, 0x08, 0xF0, 0x91,\n\t0x8E, 0x82, 0xF0, 0x91, 0x8F, 0x89, 0x01, 0x08,\n\t0xF0, 0x91, 0x8E, 0x84, 0xF0, 0x91, 0x8E, 0xBB,\n\t0x01, 0x08, 0xF0, 0x91, 0x8E, 0x8B, 0xF0, 0x91,\n\t0x8F, 0x82, 0x01, 0x08, 0xF0, 0x91, 0x8E, 0x90,\n\t0xF0, 0x91, 0x8F, 0x89, 0x01, 0x08, 0xF0, 0x91,\n\t0x92, 0xB9, 0xF0, 0x91, 0x92, 0xB0, 0x01, 0x08,\n\t// Bytes 4300 - 433f\n\t0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xBA,\n\t0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91,\n\t0x92, 0xBD, 0x01, 0x08, 0xF0, 0x91, 0x96, 0xB8,\n\t0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0, 0x91,\n\t0x96, 0xB9, 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08,\n\t0xF0, 0x91, 0xA4, 0xB5, 0xF0, 0x91, 0xA4, 0xB0,\n\t0x01, 0x09, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82,\n\t0xE0, 0xB3, 0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99,\n\t// Bytes 4340 - 437f\n\t0xE0, 0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0x16, 0x0C,\n\t0xF0, 0x96, 0xB5, 0xA3, 0xF0, 0x96, 0xB5, 0xA7,\n\t0xF0, 0x96, 0xB5, 0xA7, 0x02, 0x42, 0xC2, 0xB4,\n\t0x01, 0x43, 0x20, 0xCC, 0x81, 0xCD, 0x43, 0x20,\n\t0xCC, 0x83, 0xCD, 0x43, 0x20, 0xCC, 0x84, 0xCD,\n\t0x43, 0x20, 0xCC, 0x85, 0xCD, 0x43, 0x20, 0xCC,\n\t0x86, 0xCD, 0x43, 0x20, 0xCC, 0x87, 0xCD, 0x43,\n\t0x20, 0xCC, 0x88, 0xCD, 0x43, 0x20, 0xCC, 0x8A,\n\t// Bytes 4380 - 43bf\n\t0xCD, 0x43, 0x20, 0xCC, 0x8B, 0xCD, 0x43, 0x20,\n\t0xCC, 0x93, 0xCD, 0x43, 0x20, 0xCC, 0x94, 0xCD,\n\t0x43, 0x20, 0xCC, 0xA7, 0xA9, 0x43, 0x20, 0xCC,\n\t0xA8, 0xA9, 0x43, 0x20, 0xCC, 0xB3, 0xB9, 0x43,\n\t0x20, 0xCD, 0x82, 0xCD, 0x43, 0x20, 0xCD, 0x85,\n\t0xDD, 0x43, 0x20, 0xD9, 0x8B, 0x5D, 0x43, 0x20,\n\t0xD9, 0x8C, 0x61, 0x43, 0x20, 0xD9, 0x8D, 0x65,\n\t0x43, 0x20, 0xD9, 0x8E, 0x69, 0x43, 0x20, 0xD9,\n\t// Bytes 43c0 - 43ff\n\t0x8F, 0x6D, 0x43, 0x20, 0xD9, 0x90, 0x71, 0x43,\n\t0x20, 0xD9, 0x91, 0x75, 0x43, 0x20, 0xD9, 0x92,\n\t0x79, 0x43, 0x41, 0xCC, 0x8A, 0xCD, 0x43, 0x73,\n\t0xCC, 0x87, 0xCD, 0x44, 0x20, 0xE3, 0x82, 0x99,\n\t0x11, 0x44, 0x20, 0xE3, 0x82, 0x9A, 0x11, 0x44,\n\t0xC2, 0xA8, 0xCC, 0x81, 0xCE, 0x44, 0xCE, 0x91,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x95, 0xCC, 0x81,\n\t0xCD, 0x44, 0xCE, 0x97, 0xCC, 0x81, 0xCD, 0x44,\n\t// Bytes 4400 - 443f\n\t0xCE, 0x99, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x9F,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xA5, 0xCC, 0x81,\n\t0xCD, 0x44, 0xCE, 0xA5, 0xCC, 0x88, 0xCD, 0x44,\n\t0xCE, 0xA9, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB1,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB5, 0xCC, 0x81,\n\t0xCD, 0x44, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x44,\n\t0xCE, 0xB9, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xBF,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCF, 0x85, 0xCC, 0x81,\n\t// Bytes 4440 - 447f\n\t0xCD, 0x44, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x44,\n\t0xD7, 0x90, 0xD6, 0xB7, 0x35, 0x44, 0xD7, 0x90,\n\t0xD6, 0xB8, 0x39, 0x44, 0xD7, 0x90, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x91, 0xD6, 0xBC, 0x45, 0x44,\n\t0xD7, 0x91, 0xD6, 0xBF, 0x4D, 0x44, 0xD7, 0x92,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x93, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x94, 0xD6, 0xBC, 0x45, 0x44,\n\t0xD7, 0x95, 0xD6, 0xB9, 0x3D, 0x44, 0xD7, 0x95,\n\t// Bytes 4480 - 44bf\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x96, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x98, 0xD6, 0xBC, 0x45, 0x44,\n\t0xD7, 0x99, 0xD6, 0xB4, 0x29, 0x44, 0xD7, 0x99,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9A, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x9B, 0xD6, 0xBC, 0x45, 0x44,\n\t0xD7, 0x9B, 0xD6, 0xBF, 0x4D, 0x44, 0xD7, 0x9C,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9E, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0xA0, 0xD6, 0xBC, 0x45, 0x44,\n\t// Bytes 44c0 - 44ff\n\t0xD7, 0xA1, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA3,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA4, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0xA4, 0xD6, 0xBF, 0x4D, 0x44,\n\t0xD7, 0xA6, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA7,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA8, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0xA9, 0xD6, 0xBC, 0x45, 0x44,\n\t0xD7, 0xA9, 0xD7, 0x81, 0x51, 0x44, 0xD7, 0xA9,\n\t0xD7, 0x82, 0x55, 0x44, 0xD7, 0xAA, 0xD6, 0xBC,\n\t// Bytes 4500 - 453f\n\t0x45, 0x44, 0xD7, 0xB2, 0xD6, 0xB7, 0x35, 0x44,\n\t0xD8, 0xA7, 0xD9, 0x8B, 0x5D, 0x44, 0xD8, 0xA7,\n\t0xD9, 0x93, 0xCD, 0x44, 0xD8, 0xA7, 0xD9, 0x94,\n\t0xCD, 0x44, 0xD8, 0xA7, 0xD9, 0x95, 0xB9, 0x44,\n\t0xD8, 0xB0, 0xD9, 0xB0, 0x7D, 0x44, 0xD8, 0xB1,\n\t0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x80, 0xD9, 0x8B,\n\t0x5D, 0x44, 0xD9, 0x80, 0xD9, 0x8E, 0x69, 0x44,\n\t0xD9, 0x80, 0xD9, 0x8F, 0x6D, 0x44, 0xD9, 0x80,\n\t// Bytes 4540 - 457f\n\t0xD9, 0x90, 0x71, 0x44, 0xD9, 0x80, 0xD9, 0x91,\n\t0x75, 0x44, 0xD9, 0x80, 0xD9, 0x92, 0x79, 0x44,\n\t0xD9, 0x87, 0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x88,\n\t0xD9, 0x94, 0xCD, 0x44, 0xD9, 0x89, 0xD9, 0xB0,\n\t0x7D, 0x44, 0xD9, 0x8A, 0xD9, 0x94, 0xCD, 0x44,\n\t0xDB, 0x92, 0xD9, 0x94, 0xCD, 0x44, 0xDB, 0x95,\n\t0xD9, 0x94, 0xCD, 0x45, 0x20, 0xCC, 0x88, 0xCC,\n\t0x80, 0xCE, 0x45, 0x20, 0xCC, 0x88, 0xCC, 0x81,\n\t// Bytes 4580 - 45bf\n\t0xCE, 0x45, 0x20, 0xCC, 0x88, 0xCD, 0x82, 0xCE,\n\t0x45, 0x20, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x45,\n\t0x20, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x45, 0x20,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x45, 0x20, 0xCC,\n\t0x94, 0xCC, 0x80, 0xCE, 0x45, 0x20, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCE, 0x45, 0x20, 0xCC, 0x94, 0xCD,\n\t0x82, 0xCE, 0x45, 0x20, 0xD9, 0x8C, 0xD9, 0x91,\n\t0x76, 0x45, 0x20, 0xD9, 0x8D, 0xD9, 0x91, 0x76,\n\t// Bytes 45c0 - 45ff\n\t0x45, 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x76, 0x45,\n\t0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x76, 0x45, 0x20,\n\t0xD9, 0x90, 0xD9, 0x91, 0x76, 0x45, 0x20, 0xD9,\n\t0x91, 0xD9, 0xB0, 0x7E, 0x45, 0xE2, 0xAB, 0x9D,\n\t0xCC, 0xB8, 0x05, 0x46, 0xCE, 0xB9, 0xCC, 0x88,\n\t0xCC, 0x81, 0xCE, 0x46, 0xCF, 0x85, 0xCC, 0x88,\n\t0xCC, 0x81, 0xCE, 0x46, 0xD7, 0xA9, 0xD6, 0xBC,\n\t0xD7, 0x81, 0x52, 0x46, 0xD7, 0xA9, 0xD6, 0xBC,\n\t// Bytes 4600 - 463f\n\t0xD7, 0x82, 0x56, 0x46, 0xD9, 0x80, 0xD9, 0x8E,\n\t0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80, 0xD9, 0x8F,\n\t0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80, 0xD9, 0x90,\n\t0xD9, 0x91, 0x76, 0x46, 0xE0, 0xA4, 0x95, 0xE0,\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x96, 0xE0,\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x97, 0xE0,\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x9C, 0xE0,\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xA1, 0xE0,\n\t// Bytes 4640 - 467f\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xA2, 0xE0,\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xAB, 0xE0,\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xAF, 0xE0,\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xA1, 0xE0,\n\t0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xA2, 0xE0,\n\t0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xAF, 0xE0,\n\t0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x96, 0xE0,\n\t0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x97, 0xE0,\n\t// Bytes 4680 - 46bf\n\t0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x9C, 0xE0,\n\t0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xAB, 0xE0,\n\t0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xB2, 0xE0,\n\t0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xB8, 0xE0,\n\t0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xAC, 0xA1, 0xE0,\n\t0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xAC, 0xA2, 0xE0,\n\t0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xBE, 0xB2, 0xE0,\n\t0xBE, 0x80, 0xA1, 0x46, 0xE0, 0xBE, 0xB3, 0xE0,\n\t// Bytes 46c0 - 46ff\n\t0xBE, 0x80, 0xA1, 0x46, 0xE1, 0x84, 0x80, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x82, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x83, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x85, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x86, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x87, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x89, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x8B, 0xE1,\n\t// Bytes 4700 - 473f\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x8B, 0xE1,\n\t0x85, 0xAE, 0x01, 0x46, 0xE1, 0x84, 0x8C, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x8E, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x8F, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x90, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x91, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x92, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE3, 0x83, 0x86, 0xE3,\n\t// Bytes 4740 - 477f\n\t0x82, 0x99, 0x11, 0x48, 0xF0, 0x9D, 0x85, 0x97,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x48, 0xF0, 0x9D,\n\t0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x48,\n\t0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5,\n\t0xB1, 0x48, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xB1, 0x49, 0xE0, 0xBE, 0xB2, 0xE0,\n\t0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xA2, 0x49, 0xE0,\n\t0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80,\n\t// Bytes 4780 - 47bf\n\t0xA2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xB2, 0x4C,\n\t0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5,\n\t0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x4C, 0xF0, 0x9D,\n\t0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,\n\t0x85, 0xB0, 0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB1,\n\t0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D,\n\t// Bytes 47c0 - 47ff\n\t0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xB2, 0x4C,\n\t0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5,\n\t0xF0, 0x9D, 0x85, 0xAE, 0xB2, 0x4C, 0xF0, 0x9D,\n\t0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,\n\t0x85, 0xAF, 0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xBA,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE,\n\t0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x83,\n\t// Bytes 4800 - 483f\n\t0x41, 0xCC, 0x82, 0xCD, 0x83, 0x41, 0xCC, 0x86,\n\t0xCD, 0x83, 0x41, 0xCC, 0x87, 0xCD, 0x83, 0x41,\n\t0xCC, 0x88, 0xCD, 0x83, 0x41, 0xCC, 0x8A, 0xCD,\n\t0x83, 0x41, 0xCC, 0xA3, 0xB9, 0x83, 0x43, 0xCC,\n\t0xA7, 0xA9, 0x83, 0x45, 0xCC, 0x82, 0xCD, 0x83,\n\t0x45, 0xCC, 0x84, 0xCD, 0x83, 0x45, 0xCC, 0xA3,\n\t0xB9, 0x83, 0x45, 0xCC, 0xA7, 0xA9, 0x83, 0x49,\n\t0xCC, 0x88, 0xCD, 0x83, 0x4C, 0xCC, 0xA3, 0xB9,\n\t// Bytes 4840 - 487f\n\t0x83, 0x4F, 0xCC, 0x82, 0xCD, 0x83, 0x4F, 0xCC,\n\t0x83, 0xCD, 0x83, 0x4F, 0xCC, 0x84, 0xCD, 0x83,\n\t0x4F, 0xCC, 0x87, 0xCD, 0x83, 0x4F, 0xCC, 0x88,\n\t0xCD, 0x83, 0x4F, 0xCC, 0x9B, 0xB1, 0x83, 0x4F,\n\t0xCC, 0xA3, 0xB9, 0x83, 0x4F, 0xCC, 0xA8, 0xA9,\n\t0x83, 0x52, 0xCC, 0xA3, 0xB9, 0x83, 0x53, 0xCC,\n\t0x81, 0xCD, 0x83, 0x53, 0xCC, 0x8C, 0xCD, 0x83,\n\t0x53, 0xCC, 0xA3, 0xB9, 0x83, 0x55, 0xCC, 0x83,\n\t// Bytes 4880 - 48bf\n\t0xCD, 0x83, 0x55, 0xCC, 0x84, 0xCD, 0x83, 0x55,\n\t0xCC, 0x88, 0xCD, 0x83, 0x55, 0xCC, 0x9B, 0xB1,\n\t0x83, 0x61, 0xCC, 0x82, 0xCD, 0x83, 0x61, 0xCC,\n\t0x86, 0xCD, 0x83, 0x61, 0xCC, 0x87, 0xCD, 0x83,\n\t0x61, 0xCC, 0x88, 0xCD, 0x83, 0x61, 0xCC, 0x8A,\n\t0xCD, 0x83, 0x61, 0xCC, 0xA3, 0xB9, 0x83, 0x63,\n\t0xCC, 0xA7, 0xA9, 0x83, 0x65, 0xCC, 0x82, 0xCD,\n\t0x83, 0x65, 0xCC, 0x84, 0xCD, 0x83, 0x65, 0xCC,\n\t// Bytes 48c0 - 48ff\n\t0xA3, 0xB9, 0x83, 0x65, 0xCC, 0xA7, 0xA9, 0x83,\n\t0x69, 0xCC, 0x88, 0xCD, 0x83, 0x6C, 0xCC, 0xA3,\n\t0xB9, 0x83, 0x6F, 0xCC, 0x82, 0xCD, 0x83, 0x6F,\n\t0xCC, 0x83, 0xCD, 0x83, 0x6F, 0xCC, 0x84, 0xCD,\n\t0x83, 0x6F, 0xCC, 0x87, 0xCD, 0x83, 0x6F, 0xCC,\n\t0x88, 0xCD, 0x83, 0x6F, 0xCC, 0x9B, 0xB1, 0x83,\n\t0x6F, 0xCC, 0xA3, 0xB9, 0x83, 0x6F, 0xCC, 0xA8,\n\t0xA9, 0x83, 0x72, 0xCC, 0xA3, 0xB9, 0x83, 0x73,\n\t// Bytes 4900 - 493f\n\t0xCC, 0x81, 0xCD, 0x83, 0x73, 0xCC, 0x8C, 0xCD,\n\t0x83, 0x73, 0xCC, 0xA3, 0xB9, 0x83, 0x75, 0xCC,\n\t0x83, 0xCD, 0x83, 0x75, 0xCC, 0x84, 0xCD, 0x83,\n\t0x75, 0xCC, 0x88, 0xCD, 0x83, 0x75, 0xCC, 0x9B,\n\t0xB1, 0x84, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x84,\n\t0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x95,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x95, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x84,\n\t// Bytes 4940 - 497f\n\t0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x99,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x99, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCE, 0x9F, 0xCC, 0x93, 0xCD, 0x84,\n\t0xCE, 0x9F, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xA5,\n\t0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xA9, 0xCC, 0x93,\n\t0xCD, 0x84, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x84,\n\t0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x84, 0xCE, 0xB1,\n\t0xCC, 0x81, 0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x93,\n\t// Bytes 4980 - 49bf\n\t0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x84,\n\t0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x84, 0xCE, 0xB5,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB5, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x84,\n\t0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x84, 0xCE, 0xB7,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x84,\n\t0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x84, 0xCE, 0xB9,\n\t// Bytes 49c0 - 49ff\n\t0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB9, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCE, 0xBF, 0xCC, 0x93, 0xCD, 0x84,\n\t0xCE, 0xBF, 0xCC, 0x94, 0xCD, 0x84, 0xCF, 0x85,\n\t0xCC, 0x88, 0xCD, 0x84, 0xCF, 0x85, 0xCC, 0x93,\n\t0xCD, 0x84, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x84,\n\t0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x84, 0xCF, 0x89,\n\t0xCC, 0x81, 0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x93,\n\t0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x84,\n\t// Bytes 4a00 - 4a3f\n\t0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x86, 0xCE, 0x91,\n\t0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x91,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x91,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x91,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x91,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x91,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x97,\n\t0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x97,\n\t// Bytes 4a40 - 4a7f\n\t0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x97,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x97,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x97,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x97,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xA9,\n\t0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xA9,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xA9,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xA9,\n\t// Bytes 4a80 - 4abf\n\t0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xA9,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xA9,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB1,\n\t0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB1,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB1,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB1,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB1,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB1,\n\t// Bytes 4ac0 - 4aff\n\t0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB7,\n\t0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB7,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB7,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB7,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB7,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB7,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCF, 0x89,\n\t0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCF, 0x89,\n\t// Bytes 4b00 - 4b3f\n\t0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCF, 0x89,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCF, 0x89,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCF, 0x89,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCF, 0x89,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xE0, 0xB3,\n\t0x86, 0xE0, 0xB3, 0x82, 0x01, 0x86, 0xE0, 0xB7,\n\t0x99, 0xE0, 0xB7, 0x8F, 0x01, 0x88, 0xF0, 0x96,\n\t0xB5, 0xA3, 0xF0, 0x96, 0xB5, 0xA7, 0x01, 0x42,\n\t// Bytes 4b40 - 4b7f\n\t0xCC, 0x80, 0xCD, 0x33, 0x42, 0xCC, 0x81, 0xCD,\n\t0x33, 0x42, 0xCC, 0x93, 0xCD, 0x33, 0x43, 0xE1,\n\t0x85, 0xA1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xA5, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1,\n\t// Bytes 4b80 - 4bbf\n\t0x85, 0xA9, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xB1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00,\n\t// Bytes 4bc0 - 4bff\n\t0x43, 0xE1, 0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xB5, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA,\n\t0x01, 0x00, 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00,\n\t0x43, 0xE1, 0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1,\n\t0x86, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1,\n\t0x01, 0x00, 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00,\n\t0x43, 0xE1, 0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1,\n\t0x86, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5,\n\t// Bytes 4c00 - 4c3f\n\t0x01, 0x00, 0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCE,\n\t0x33, 0x68, 0xF0, 0x91, 0x8F, 0x82, 0xF0, 0x91,\n\t0x8E, 0xB8, 0x02, 0x00, 0x68, 0xF0, 0x91, 0x8F,\n\t0x82, 0xF0, 0x91, 0x8F, 0x82, 0x02, 0x00, 0x68,\n\t0xF0, 0x91, 0x8F, 0x82, 0xF0, 0x91, 0x8F, 0x89,\n\t0x02, 0x00, 0x68, 0xF0, 0x96, 0x84, 0x9E, 0xF0,\n\t0x96, 0x84, 0x9F, 0x02, 0x00, 0x68, 0xF0, 0x96,\n\t0x84, 0x9E, 0xF0, 0x96, 0x84, 0xA0, 0x02, 0x00,\n\t// Bytes 4c40 - 4c7f\n\t0x68, 0xF0, 0x96, 0x84, 0xA9, 0xF0, 0x96, 0x84,\n\t0x9F, 0x02, 0x00, 0x68, 0xF0, 0x96, 0xB5, 0xA7,\n\t0xF0, 0x96, 0xB5, 0xA7, 0x02, 0x00, 0x6C, 0xF0,\n\t0x96, 0x84, 0x9E, 0xF0, 0x96, 0x84, 0x9E, 0xF0,\n\t0x96, 0x84, 0x9F, 0x03, 0x00, 0x6C, 0xF0, 0x96,\n\t0x84, 0x9E, 0xF0, 0x96, 0x84, 0x9E, 0xF0, 0x96,\n\t0x84, 0xA0, 0x03, 0x00, 0x6C, 0xF0, 0x96, 0x84,\n\t0x9E, 0xF0, 0x96, 0x84, 0xA9, 0xF0, 0x96, 0x84,\n\t// Bytes 4c80 - 4cbf\n\t0x9F, 0x03, 0x00, 0xE8, 0xF0, 0x96, 0x84, 0x9E,\n\t0xF0, 0x96, 0x84, 0x9E, 0x02, 0x00, 0xE8, 0xF0,\n\t0x96, 0x84, 0x9E, 0xF0, 0x96, 0x84, 0xA9, 0x02,\n\t0x00, 0x43, 0xE3, 0x82, 0x99, 0x11, 0x04, 0x43,\n\t0xE3, 0x82, 0x9A, 0x11, 0x04, 0x46, 0xE0, 0xBD,\n\t0xB1, 0xE0, 0xBD, 0xB2, 0xA2, 0x27, 0x46, 0xE0,\n\t0xBD, 0xB1, 0xE0, 0xBD, 0xB4, 0xA6, 0x27, 0x46,\n\t0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xA2, 0x27,\n\t// Bytes 4cc0 - 4cff\n\t0x00, 0x01,\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfcTrie. Total size: 11042 bytes (10.78 KiB). Checksum: cd75f956cd2316a9.\ntype nfcTrie struct{}\n\nfunc newNfcTrie(i int) *nfcTrie {\n\treturn &nfcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 46:\n\t\treturn uint16(nfcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 46\n\t\treturn uint16(nfcSparse.lookup(n, b))\n\t}\n}\n\n// nfcValues: 48 blocks, 3072 entries, 6144 bytes\n// The third block is the zero block.\nvar nfcValues = [3072]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2ece, 0xc1: 0x2ed3, 0xc2: 0x47ff, 0xc3: 0x2ed8, 0xc4: 0x480e, 0xc5: 0x4813,\n\t0xc6: 0xa000, 0xc7: 0x481d, 0xc8: 0x2f41, 0xc9: 0x2f46, 0xca: 0x4822, 0xcb: 0x2f5a,\n\t0xcc: 0x2fcd, 0xcd: 0x2fd2, 0xce: 0x2fd7, 0xcf: 0x4836, 0xd1: 0x3063,\n\t0xd2: 0x3086, 0xd3: 0x308b, 0xd4: 0x4840, 0xd5: 0x4845, 0xd6: 0x4854,\n\t0xd8: 0xa000, 0xd9: 0x3112, 0xda: 0x3117, 0xdb: 0x311c, 0xdc: 0x4886, 0xdd: 0x3194,\n\t0xe0: 0x31da, 0xe1: 0x31df, 0xe2: 0x4890, 0xe3: 0x31e4,\n\t0xe4: 0x489f, 0xe5: 0x48a4, 0xe6: 0xa000, 0xe7: 0x48ae, 0xe8: 0x324d, 0xe9: 0x3252,\n\t0xea: 0x48b3, 0xeb: 0x3266, 0xec: 0x32de, 0xed: 0x32e3, 0xee: 0x32e8, 0xef: 0x48c7,\n\t0xf1: 0x3374, 0xf2: 0x3397, 0xf3: 0x339c, 0xf4: 0x48d1, 0xf5: 0x48d6,\n\t0xf6: 0x48e5, 0xf8: 0xa000, 0xf9: 0x3428, 0xfa: 0x342d, 0xfb: 0x3432,\n\t0xfc: 0x4917, 0xfd: 0x34af, 0xff: 0x34c8,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2edd, 0x101: 0x31e9, 0x102: 0x4804, 0x103: 0x4895, 0x104: 0x2efb, 0x105: 0x3207,\n\t0x106: 0x2f0f, 0x107: 0x321b, 0x108: 0x2f14, 0x109: 0x3220, 0x10a: 0x2f19, 0x10b: 0x3225,\n\t0x10c: 0x2f1e, 0x10d: 0x322a, 0x10e: 0x2f28, 0x10f: 0x3234,\n\t0x112: 0x4827, 0x113: 0x48b8, 0x114: 0x2f50, 0x115: 0x325c, 0x116: 0x2f55, 0x117: 0x3261,\n\t0x118: 0x2f73, 0x119: 0x327f, 0x11a: 0x2f64, 0x11b: 0x3270, 0x11c: 0x2f8c, 0x11d: 0x3298,\n\t0x11e: 0x2f96, 0x11f: 0x32a2, 0x120: 0x2f9b, 0x121: 0x32a7, 0x122: 0x2fa5, 0x123: 0x32b1,\n\t0x124: 0x2faa, 0x125: 0x32b6, 0x128: 0x2fdc, 0x129: 0x32ed,\n\t0x12a: 0x2fe1, 0x12b: 0x32f2, 0x12c: 0x2fe6, 0x12d: 0x32f7, 0x12e: 0x3009, 0x12f: 0x3315,\n\t0x130: 0x2feb, 0x134: 0x3013, 0x135: 0x331f,\n\t0x136: 0x3027, 0x137: 0x3338, 0x139: 0x3031, 0x13a: 0x3342, 0x13b: 0x303b,\n\t0x13c: 0x334c, 0x13d: 0x3036, 0x13e: 0x3347,\n\t// Block 0x5, offset 0x140\n\t0x143: 0x305e, 0x144: 0x336f, 0x145: 0x3077,\n\t0x146: 0x3388, 0x147: 0x306d, 0x148: 0x337e,\n\t0x14c: 0x484a, 0x14d: 0x48db, 0x14e: 0x3090, 0x14f: 0x33a1, 0x150: 0x309a, 0x151: 0x33ab,\n\t0x154: 0x30b8, 0x155: 0x33c9, 0x156: 0x30d1, 0x157: 0x33e2,\n\t0x158: 0x30c2, 0x159: 0x33d3, 0x15a: 0x486d, 0x15b: 0x48fe, 0x15c: 0x30db, 0x15d: 0x33ec,\n\t0x15e: 0x30ea, 0x15f: 0x33fb, 0x160: 0x4872, 0x161: 0x4903, 0x162: 0x3103, 0x163: 0x3419,\n\t0x164: 0x30f4, 0x165: 0x340a, 0x168: 0x487c, 0x169: 0x490d,\n\t0x16a: 0x4881, 0x16b: 0x4912, 0x16c: 0x3121, 0x16d: 0x3437, 0x16e: 0x312b, 0x16f: 0x3441,\n\t0x170: 0x3130, 0x171: 0x3446, 0x172: 0x314e, 0x173: 0x3464, 0x174: 0x3171, 0x175: 0x3487,\n\t0x176: 0x3199, 0x177: 0x34b4, 0x178: 0x31ad, 0x179: 0x31bc, 0x17a: 0x34dc, 0x17b: 0x31c6,\n\t0x17c: 0x34e6, 0x17d: 0x31cb, 0x17e: 0x34eb, 0x17f: 0xa000,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x8100, 0x185: 0x8100,\n\t0x186: 0x8100,\n\t0x18d: 0x2ee7, 0x18e: 0x31f3, 0x18f: 0x2ff5, 0x190: 0x3301, 0x191: 0x309f,\n\t0x192: 0x33b0, 0x193: 0x3135, 0x194: 0x344b, 0x195: 0x392e, 0x196: 0x3abd, 0x197: 0x3927,\n\t0x198: 0x3ab6, 0x199: 0x3935, 0x19a: 0x3ac4, 0x19b: 0x3920, 0x19c: 0x3aaf,\n\t0x19e: 0x380f, 0x19f: 0x399e, 0x1a0: 0x3808, 0x1a1: 0x3997, 0x1a2: 0x3512, 0x1a3: 0x3524,\n\t0x1a6: 0x2fa0, 0x1a7: 0x32ac, 0x1a8: 0x301d, 0x1a9: 0x332e,\n\t0x1aa: 0x4863, 0x1ab: 0x48f4, 0x1ac: 0x38ef, 0x1ad: 0x3a7e, 0x1ae: 0x3536, 0x1af: 0x353c,\n\t0x1b0: 0x3324, 0x1b4: 0x2f87, 0x1b5: 0x3293,\n\t0x1b8: 0x3059, 0x1b9: 0x336a, 0x1ba: 0x3816, 0x1bb: 0x39a5,\n\t0x1bc: 0x350c, 0x1bd: 0x351e, 0x1be: 0x3518, 0x1bf: 0x352a,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2eec, 0x1c1: 0x31f8, 0x1c2: 0x2ef1, 0x1c3: 0x31fd, 0x1c4: 0x2f69, 0x1c5: 0x3275,\n\t0x1c6: 0x2f6e, 0x1c7: 0x327a, 0x1c8: 0x2ffa, 0x1c9: 0x3306, 0x1ca: 0x2fff, 0x1cb: 0x330b,\n\t0x1cc: 0x30a4, 0x1cd: 0x33b5, 0x1ce: 0x30a9, 0x1cf: 0x33ba, 0x1d0: 0x30c7, 0x1d1: 0x33d8,\n\t0x1d2: 0x30cc, 0x1d3: 0x33dd, 0x1d4: 0x313a, 0x1d5: 0x3450, 0x1d6: 0x313f, 0x1d7: 0x3455,\n\t0x1d8: 0x30e5, 0x1d9: 0x33f6, 0x1da: 0x30fe, 0x1db: 0x3414,\n\t0x1de: 0x2fb9, 0x1df: 0x32c5,\n\t0x1e6: 0x4809, 0x1e7: 0x489a, 0x1e8: 0x4831, 0x1e9: 0x48c2,\n\t0x1ea: 0x38be, 0x1eb: 0x3a4d, 0x1ec: 0x389b, 0x1ed: 0x3a2a, 0x1ee: 0x484f, 0x1ef: 0x48e0,\n\t0x1f0: 0x38b7, 0x1f1: 0x3a46, 0x1f2: 0x31a3, 0x1f3: 0x34be,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133,\n\t0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933,\n\t0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933,\n\t0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e,\n\t0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e,\n\t0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e,\n\t0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e,\n\t0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e,\n\t0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e,\n\t0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x4b3f, 0x241: 0x4b44, 0x242: 0x9933, 0x243: 0x4b49, 0x244: 0x4c02, 0x245: 0x9937,\n\t0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133,\n\t0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133,\n\t0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133,\n\t0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136,\n\t0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133,\n\t0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133,\n\t0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133,\n\t0x274: 0x01ee,\n\t0x27a: 0x8100,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x8100, 0x285: 0x3500,\n\t0x286: 0x3548, 0x287: 0x00ce, 0x288: 0x3566, 0x289: 0x3572, 0x28a: 0x3584,\n\t0x28c: 0x35a2, 0x28e: 0x35b4, 0x28f: 0x35d2, 0x290: 0x3d67, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3596, 0x2ab: 0x35c6, 0x2ac: 0x4975, 0x2ad: 0x35f6, 0x2ae: 0x499f, 0x2af: 0x3608,\n\t0x2b0: 0x3dcf, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x3680, 0x2c1: 0x368c, 0x2c3: 0x367a,\n\t0x2c6: 0xa000, 0x2c7: 0x3668,\n\t0x2cc: 0x36bc, 0x2cd: 0x36a4, 0x2ce: 0x36ce, 0x2d0: 0xa000,\n\t0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000,\n\t0x2d8: 0xa000, 0x2d9: 0x36b0, 0x2da: 0xa000,\n\t0x2de: 0xa000, 0x2e3: 0xa000,\n\t0x2e7: 0xa000,\n\t0x2eb: 0xa000, 0x2ed: 0xa000,\n\t0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000,\n\t0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x3734, 0x2fa: 0xa000,\n\t0x2fe: 0xa000,\n\t// Block 0xc, offset 0x300\n\t0x301: 0x3692, 0x302: 0x3716,\n\t0x310: 0x366e, 0x311: 0x36f2,\n\t0x312: 0x3674, 0x313: 0x36f8, 0x316: 0x3686, 0x317: 0x370a,\n\t0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3788, 0x31b: 0x378e, 0x31c: 0x3698, 0x31d: 0x371c,\n\t0x31e: 0x369e, 0x31f: 0x3722, 0x322: 0x36aa, 0x323: 0x372e,\n\t0x324: 0x36b6, 0x325: 0x373a, 0x326: 0x36c2, 0x327: 0x3746, 0x328: 0xa000, 0x329: 0xa000,\n\t0x32a: 0x3794, 0x32b: 0x379a, 0x32c: 0x36ec, 0x32d: 0x3770, 0x32e: 0x36c8, 0x32f: 0x374c,\n\t0x330: 0x36d4, 0x331: 0x3758, 0x332: 0x36da, 0x333: 0x375e, 0x334: 0x36e0, 0x335: 0x3764,\n\t0x338: 0x36e6, 0x339: 0x376a,\n\t// Block 0xd, offset 0x340\n\t0x351: 0x812e,\n\t0x352: 0x8133, 0x353: 0x8133, 0x354: 0x8133, 0x355: 0x8133, 0x356: 0x812e, 0x357: 0x8133,\n\t0x358: 0x8133, 0x359: 0x8133, 0x35a: 0x812f, 0x35b: 0x812e, 0x35c: 0x8133, 0x35d: 0x8133,\n\t0x35e: 0x8133, 0x35f: 0x8133, 0x360: 0x8133, 0x361: 0x8133, 0x362: 0x812e, 0x363: 0x812e,\n\t0x364: 0x812e, 0x365: 0x812e, 0x366: 0x812e, 0x367: 0x812e, 0x368: 0x8133, 0x369: 0x8133,\n\t0x36a: 0x812e, 0x36b: 0x8133, 0x36c: 0x8133, 0x36d: 0x812f, 0x36e: 0x8132, 0x36f: 0x8133,\n\t0x370: 0x8106, 0x371: 0x8107, 0x372: 0x8108, 0x373: 0x8109, 0x374: 0x810a, 0x375: 0x810b,\n\t0x376: 0x810c, 0x377: 0x810d, 0x378: 0x810e, 0x379: 0x810f, 0x37a: 0x810f, 0x37b: 0x8110,\n\t0x37c: 0x8111, 0x37d: 0x8112, 0x37f: 0x8113,\n\t// Block 0xe, offset 0x380\n\t0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8117,\n\t0x38c: 0x8118, 0x38d: 0x8119, 0x38e: 0x811a, 0x38f: 0x811b, 0x390: 0x811c, 0x391: 0x811d,\n\t0x392: 0x811e, 0x393: 0x9933, 0x394: 0x9933, 0x395: 0x992e, 0x396: 0x812e, 0x397: 0x8133,\n\t0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x8133, 0x39b: 0x8133, 0x39c: 0x812e, 0x39d: 0x8133,\n\t0x39e: 0x8133, 0x39f: 0x812e,\n\t0x3b0: 0x811f,\n\t// Block 0xf, offset 0x3c0\n\t0x3ca: 0x8133, 0x3cb: 0x8133,\n\t0x3cc: 0x8133, 0x3cd: 0x8133, 0x3ce: 0x8133, 0x3cf: 0x812e, 0x3d0: 0x812e, 0x3d1: 0x812e,\n\t0x3d2: 0x812e, 0x3d3: 0x812e, 0x3d4: 0x8133, 0x3d5: 0x8133, 0x3d6: 0x8133, 0x3d7: 0x8133,\n\t0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x8133, 0x3dd: 0x8133,\n\t0x3de: 0x8133, 0x3df: 0x8133, 0x3e0: 0x8133, 0x3e1: 0x8133, 0x3e3: 0x812e,\n\t0x3e4: 0x8133, 0x3e5: 0x8133, 0x3e6: 0x812e, 0x3e7: 0x8133, 0x3e8: 0x8133, 0x3e9: 0x812e,\n\t0x3ea: 0x8133, 0x3eb: 0x8133, 0x3ec: 0x8133, 0x3ed: 0x812e, 0x3ee: 0x812e, 0x3ef: 0x812e,\n\t0x3f0: 0x8117, 0x3f1: 0x8118, 0x3f2: 0x8119, 0x3f3: 0x8133, 0x3f4: 0x8133, 0x3f5: 0x8133,\n\t0x3f6: 0x812e, 0x3f7: 0x8133, 0x3f8: 0x8133, 0x3f9: 0x812e, 0x3fa: 0x812e, 0x3fb: 0x8133,\n\t0x3fc: 0x8133, 0x3fd: 0x8133, 0x3fe: 0x8133, 0x3ff: 0x8133,\n\t// Block 0x10, offset 0x400\n\t0x405: 0xa000,\n\t0x406: 0x3ee7, 0x407: 0xa000, 0x408: 0x3eef, 0x409: 0xa000, 0x40a: 0x3ef7, 0x40b: 0xa000,\n\t0x40c: 0x3eff, 0x40d: 0xa000, 0x40e: 0x3f07, 0x411: 0xa000,\n\t0x412: 0x3f0f,\n\t0x434: 0x8103, 0x435: 0x9900,\n\t0x43a: 0xa000, 0x43b: 0x3f17,\n\t0x43c: 0xa000, 0x43d: 0x3f1f, 0x43e: 0xa000, 0x43f: 0xa000,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x8133, 0x441: 0x8133, 0x442: 0x812e, 0x443: 0x8133, 0x444: 0x8133, 0x445: 0x8133,\n\t0x446: 0x8133, 0x447: 0x8133, 0x448: 0x8133, 0x449: 0x8133, 0x44a: 0x812e, 0x44b: 0x8133,\n\t0x44c: 0x8133, 0x44d: 0x8136, 0x44e: 0x812b, 0x44f: 0x812e, 0x450: 0x812a, 0x451: 0x8133,\n\t0x452: 0x8133, 0x453: 0x8133, 0x454: 0x8133, 0x455: 0x8133, 0x456: 0x8133, 0x457: 0x8133,\n\t0x458: 0x8133, 0x459: 0x8133, 0x45a: 0x8133, 0x45b: 0x8133, 0x45c: 0x8133, 0x45d: 0x8133,\n\t0x45e: 0x8133, 0x45f: 0x8133, 0x460: 0x8133, 0x461: 0x8133, 0x462: 0x8133, 0x463: 0x8133,\n\t0x464: 0x8133, 0x465: 0x8133, 0x466: 0x8133, 0x467: 0x8133, 0x468: 0x8133, 0x469: 0x8133,\n\t0x46a: 0x8133, 0x46b: 0x8133, 0x46c: 0x8133, 0x46d: 0x8133, 0x46e: 0x8133, 0x46f: 0x8133,\n\t0x470: 0x8133, 0x471: 0x8133, 0x472: 0x8133, 0x473: 0x8133, 0x474: 0x8133, 0x475: 0x8133,\n\t0x476: 0x8134, 0x477: 0x8132, 0x478: 0x8132, 0x479: 0x812e, 0x47a: 0x812d, 0x47b: 0x8133,\n\t0x47c: 0x8135, 0x47d: 0x812e, 0x47e: 0x8133, 0x47f: 0x812e,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x2ef6, 0x481: 0x3202, 0x482: 0x2f00, 0x483: 0x320c, 0x484: 0x2f05, 0x485: 0x3211,\n\t0x486: 0x2f0a, 0x487: 0x3216, 0x488: 0x382b, 0x489: 0x39ba, 0x48a: 0x2f23, 0x48b: 0x322f,\n\t0x48c: 0x2f2d, 0x48d: 0x3239, 0x48e: 0x2f3c, 0x48f: 0x3248, 0x490: 0x2f32, 0x491: 0x323e,\n\t0x492: 0x2f37, 0x493: 0x3243, 0x494: 0x384e, 0x495: 0x39dd, 0x496: 0x3855, 0x497: 0x39e4,\n\t0x498: 0x2f78, 0x499: 0x3284, 0x49a: 0x2f7d, 0x49b: 0x3289, 0x49c: 0x3863, 0x49d: 0x39f2,\n\t0x49e: 0x2f82, 0x49f: 0x328e, 0x4a0: 0x2f91, 0x4a1: 0x329d, 0x4a2: 0x2faf, 0x4a3: 0x32bb,\n\t0x4a4: 0x2fbe, 0x4a5: 0x32ca, 0x4a6: 0x2fb4, 0x4a7: 0x32c0, 0x4a8: 0x2fc3, 0x4a9: 0x32cf,\n\t0x4aa: 0x2fc8, 0x4ab: 0x32d4, 0x4ac: 0x300e, 0x4ad: 0x331a, 0x4ae: 0x386a, 0x4af: 0x39f9,\n\t0x4b0: 0x3018, 0x4b1: 0x3329, 0x4b2: 0x3022, 0x4b3: 0x3333, 0x4b4: 0x302c, 0x4b5: 0x333d,\n\t0x4b6: 0x483b, 0x4b7: 0x48cc, 0x4b8: 0x3871, 0x4b9: 0x3a00, 0x4ba: 0x3045, 0x4bb: 0x3356,\n\t0x4bc: 0x3040, 0x4bd: 0x3351, 0x4be: 0x304a, 0x4bf: 0x335b,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x304f, 0x4c1: 0x3360, 0x4c2: 0x3054, 0x4c3: 0x3365, 0x4c4: 0x3068, 0x4c5: 0x3379,\n\t0x4c6: 0x3072, 0x4c7: 0x3383, 0x4c8: 0x3081, 0x4c9: 0x3392, 0x4ca: 0x307c, 0x4cb: 0x338d,\n\t0x4cc: 0x3894, 0x4cd: 0x3a23, 0x4ce: 0x38a2, 0x4cf: 0x3a31, 0x4d0: 0x38a9, 0x4d1: 0x3a38,\n\t0x4d2: 0x38b0, 0x4d3: 0x3a3f, 0x4d4: 0x30ae, 0x4d5: 0x33bf, 0x4d6: 0x30b3, 0x4d7: 0x33c4,\n\t0x4d8: 0x30bd, 0x4d9: 0x33ce, 0x4da: 0x4868, 0x4db: 0x48f9, 0x4dc: 0x38f6, 0x4dd: 0x3a85,\n\t0x4de: 0x30d6, 0x4df: 0x33e7, 0x4e0: 0x30e0, 0x4e1: 0x33f1, 0x4e2: 0x4877, 0x4e3: 0x4908,\n\t0x4e4: 0x38fd, 0x4e5: 0x3a8c, 0x4e6: 0x3904, 0x4e7: 0x3a93, 0x4e8: 0x390b, 0x4e9: 0x3a9a,\n\t0x4ea: 0x30ef, 0x4eb: 0x3400, 0x4ec: 0x30f9, 0x4ed: 0x340f, 0x4ee: 0x310d, 0x4ef: 0x3423,\n\t0x4f0: 0x3108, 0x4f1: 0x341e, 0x4f2: 0x3149, 0x4f3: 0x345f, 0x4f4: 0x3158, 0x4f5: 0x346e,\n\t0x4f6: 0x3153, 0x4f7: 0x3469, 0x4f8: 0x3912, 0x4f9: 0x3aa1, 0x4fa: 0x3919, 0x4fb: 0x3aa8,\n\t0x4fc: 0x315d, 0x4fd: 0x3473, 0x4fe: 0x3162, 0x4ff: 0x3478,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x3167, 0x501: 0x347d, 0x502: 0x316c, 0x503: 0x3482, 0x504: 0x317b, 0x505: 0x3491,\n\t0x506: 0x3176, 0x507: 0x348c, 0x508: 0x3180, 0x509: 0x349b, 0x50a: 0x3185, 0x50b: 0x34a0,\n\t0x50c: 0x318a, 0x50d: 0x34a5, 0x50e: 0x31a8, 0x50f: 0x34c3, 0x510: 0x31c1, 0x511: 0x34e1,\n\t0x512: 0x31d0, 0x513: 0x34f0, 0x514: 0x31d5, 0x515: 0x34f5, 0x516: 0x32d9, 0x517: 0x3405,\n\t0x518: 0x3496, 0x519: 0x34d2, 0x51b: 0x3530,\n\t0x520: 0x4818, 0x521: 0x48a9, 0x522: 0x2ee2, 0x523: 0x31ee,\n\t0x524: 0x37d7, 0x525: 0x3966, 0x526: 0x37d0, 0x527: 0x395f, 0x528: 0x37e5, 0x529: 0x3974,\n\t0x52a: 0x37de, 0x52b: 0x396d, 0x52c: 0x381d, 0x52d: 0x39ac, 0x52e: 0x37f3, 0x52f: 0x3982,\n\t0x530: 0x37ec, 0x531: 0x397b, 0x532: 0x3801, 0x533: 0x3990, 0x534: 0x37fa, 0x535: 0x3989,\n\t0x536: 0x3824, 0x537: 0x39b3, 0x538: 0x482c, 0x539: 0x48bd, 0x53a: 0x2f5f, 0x53b: 0x326b,\n\t0x53c: 0x2f4b, 0x53d: 0x3257, 0x53e: 0x3839, 0x53f: 0x39c8,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x3832, 0x541: 0x39c1, 0x542: 0x3847, 0x543: 0x39d6, 0x544: 0x3840, 0x545: 0x39cf,\n\t0x546: 0x385c, 0x547: 0x39eb, 0x548: 0x2ff0, 0x549: 0x32fc, 0x54a: 0x3004, 0x54b: 0x3310,\n\t0x54c: 0x485e, 0x54d: 0x48ef, 0x54e: 0x3095, 0x54f: 0x33a6, 0x550: 0x387f, 0x551: 0x3a0e,\n\t0x552: 0x3878, 0x553: 0x3a07, 0x554: 0x388d, 0x555: 0x3a1c, 0x556: 0x3886, 0x557: 0x3a15,\n\t0x558: 0x38e8, 0x559: 0x3a77, 0x55a: 0x38cc, 0x55b: 0x3a5b, 0x55c: 0x38c5, 0x55d: 0x3a54,\n\t0x55e: 0x38da, 0x55f: 0x3a69, 0x560: 0x38d3, 0x561: 0x3a62, 0x562: 0x38e1, 0x563: 0x3a70,\n\t0x564: 0x3144, 0x565: 0x345a, 0x566: 0x3126, 0x567: 0x343c, 0x568: 0x3943, 0x569: 0x3ad2,\n\t0x56a: 0x393c, 0x56b: 0x3acb, 0x56c: 0x3951, 0x56d: 0x3ae0, 0x56e: 0x394a, 0x56f: 0x3ad9,\n\t0x570: 0x3958, 0x571: 0x3ae7, 0x572: 0x318f, 0x573: 0x34aa, 0x574: 0x31b7, 0x575: 0x34d7,\n\t0x576: 0x31b2, 0x577: 0x34cd, 0x578: 0x319e, 0x579: 0x34b9,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x497b, 0x581: 0x4981, 0x582: 0x4a95, 0x583: 0x4aad, 0x584: 0x4a9d, 0x585: 0x4ab5,\n\t0x586: 0x4aa5, 0x587: 0x4abd, 0x588: 0x4921, 0x589: 0x4927, 0x58a: 0x4a05, 0x58b: 0x4a1d,\n\t0x58c: 0x4a0d, 0x58d: 0x4a25, 0x58e: 0x4a15, 0x58f: 0x4a2d, 0x590: 0x498d, 0x591: 0x4993,\n\t0x592: 0x3d17, 0x593: 0x3d27, 0x594: 0x3d1f, 0x595: 0x3d2f,\n\t0x598: 0x492d, 0x599: 0x4933, 0x59a: 0x3c47, 0x59b: 0x3c57, 0x59c: 0x3c4f, 0x59d: 0x3c5f,\n\t0x5a0: 0x49a5, 0x5a1: 0x49ab, 0x5a2: 0x4ac5, 0x5a3: 0x4add,\n\t0x5a4: 0x4acd, 0x5a5: 0x4ae5, 0x5a6: 0x4ad5, 0x5a7: 0x4aed, 0x5a8: 0x4939, 0x5a9: 0x493f,\n\t0x5aa: 0x4a35, 0x5ab: 0x4a4d, 0x5ac: 0x4a3d, 0x5ad: 0x4a55, 0x5ae: 0x4a45, 0x5af: 0x4a5d,\n\t0x5b0: 0x49bd, 0x5b1: 0x49c3, 0x5b2: 0x3d77, 0x5b3: 0x3d8f, 0x5b4: 0x3d7f, 0x5b5: 0x3d97,\n\t0x5b6: 0x3d87, 0x5b7: 0x3d9f, 0x5b8: 0x4945, 0x5b9: 0x494b, 0x5ba: 0x3c77, 0x5bb: 0x3c8f,\n\t0x5bc: 0x3c7f, 0x5bd: 0x3c97, 0x5be: 0x3c87, 0x5bf: 0x3c9f,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x49c9, 0x5c1: 0x49cf, 0x5c2: 0x3da7, 0x5c3: 0x3db7, 0x5c4: 0x3daf, 0x5c5: 0x3dbf,\n\t0x5c8: 0x4951, 0x5c9: 0x4957, 0x5ca: 0x3ca7, 0x5cb: 0x3cb7,\n\t0x5cc: 0x3caf, 0x5cd: 0x3cbf, 0x5d0: 0x49db, 0x5d1: 0x49e1,\n\t0x5d2: 0x3ddf, 0x5d3: 0x3df7, 0x5d4: 0x3de7, 0x5d5: 0x3dff, 0x5d6: 0x3def, 0x5d7: 0x3e07,\n\t0x5d9: 0x495d, 0x5db: 0x3cc7, 0x5dd: 0x3ccf,\n\t0x5df: 0x3cd7, 0x5e0: 0x49f3, 0x5e1: 0x49f9, 0x5e2: 0x4af5, 0x5e3: 0x4b0d,\n\t0x5e4: 0x4afd, 0x5e5: 0x4b15, 0x5e6: 0x4b05, 0x5e7: 0x4b1d, 0x5e8: 0x4963, 0x5e9: 0x4969,\n\t0x5ea: 0x4a65, 0x5eb: 0x4a7d, 0x5ec: 0x4a6d, 0x5ed: 0x4a85, 0x5ee: 0x4a75, 0x5ef: 0x4a8d,\n\t0x5f0: 0x496f, 0x5f1: 0x441d, 0x5f2: 0x35f0, 0x5f3: 0x4423, 0x5f4: 0x4999, 0x5f5: 0x4429,\n\t0x5f6: 0x3602, 0x5f7: 0x442f, 0x5f8: 0x3620, 0x5f9: 0x4435, 0x5fa: 0x3638, 0x5fb: 0x443b,\n\t0x5fc: 0x49e7, 0x5fd: 0x4441,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3cff, 0x601: 0x3d07, 0x602: 0x41d3, 0x603: 0x41f1, 0x604: 0x41dd, 0x605: 0x41fb,\n\t0x606: 0x41e7, 0x607: 0x4205, 0x608: 0x3c37, 0x609: 0x3c3f, 0x60a: 0x411f, 0x60b: 0x413d,\n\t0x60c: 0x4129, 0x60d: 0x4147, 0x60e: 0x4133, 0x60f: 0x4151, 0x610: 0x3d47, 0x611: 0x3d4f,\n\t0x612: 0x420f, 0x613: 0x422d, 0x614: 0x4219, 0x615: 0x4237, 0x616: 0x4223, 0x617: 0x4241,\n\t0x618: 0x3c67, 0x619: 0x3c6f, 0x61a: 0x415b, 0x61b: 0x4179, 0x61c: 0x4165, 0x61d: 0x4183,\n\t0x61e: 0x416f, 0x61f: 0x418d, 0x620: 0x3e1f, 0x621: 0x3e27, 0x622: 0x424b, 0x623: 0x4269,\n\t0x624: 0x4255, 0x625: 0x4273, 0x626: 0x425f, 0x627: 0x427d, 0x628: 0x3cdf, 0x629: 0x3ce7,\n\t0x62a: 0x4197, 0x62b: 0x41b5, 0x62c: 0x41a1, 0x62d: 0x41bf, 0x62e: 0x41ab, 0x62f: 0x41c9,\n\t0x630: 0x35e4, 0x631: 0x35de, 0x632: 0x3cef, 0x633: 0x35ea, 0x634: 0x3cf7,\n\t0x636: 0x4987, 0x637: 0x3d0f, 0x638: 0x3554, 0x639: 0x354e, 0x63a: 0x3542, 0x63b: 0x43ed,\n\t0x63c: 0x355a, 0x63d: 0x8100, 0x63e: 0x0257, 0x63f: 0xa100,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x8100, 0x641: 0x3506, 0x642: 0x3d37, 0x643: 0x35fc, 0x644: 0x3d3f,\n\t0x646: 0x49b1, 0x647: 0x3d57, 0x648: 0x3560, 0x649: 0x43f3, 0x64a: 0x356c, 0x64b: 0x43f9,\n\t0x64c: 0x3578, 0x64d: 0x3aee, 0x64e: 0x3af5, 0x64f: 0x3afc, 0x650: 0x3614, 0x651: 0x360e,\n\t0x652: 0x3d5f, 0x653: 0x45e3, 0x656: 0x361a, 0x657: 0x3d6f,\n\t0x658: 0x3590, 0x659: 0x358a, 0x65a: 0x357e, 0x65b: 0x43ff, 0x65d: 0x3b03,\n\t0x65e: 0x3b0a, 0x65f: 0x3b11, 0x660: 0x364a, 0x661: 0x3644, 0x662: 0x3dc7, 0x663: 0x45eb,\n\t0x664: 0x362c, 0x665: 0x3632, 0x666: 0x3650, 0x667: 0x3dd7, 0x668: 0x35c0, 0x669: 0x35ba,\n\t0x66a: 0x35ae, 0x66b: 0x440b, 0x66c: 0x35a8, 0x66d: 0x34fa, 0x66e: 0x43e7, 0x66f: 0x0081,\n\t0x672: 0x3e0f, 0x673: 0x3656, 0x674: 0x3e17,\n\t0x676: 0x49ff, 0x677: 0x3e2f, 0x678: 0x359c, 0x679: 0x4405, 0x67a: 0x35cc, 0x67b: 0x4417,\n\t0x67c: 0x35d8, 0x67d: 0x4355, 0x67e: 0xa100,\n\t// Block 0x1a, offset 0x680\n\t0x681: 0x3b65, 0x683: 0xa000, 0x684: 0x3b6c, 0x685: 0xa000,\n\t0x687: 0x3b73, 0x688: 0xa000, 0x689: 0x3b7a,\n\t0x68d: 0xa000,\n\t0x6a0: 0x2ec4, 0x6a1: 0xa000, 0x6a2: 0x3b88,\n\t0x6a4: 0xa000, 0x6a5: 0xa000,\n\t0x6ad: 0x3b81, 0x6ae: 0x2ebf, 0x6af: 0x2ec9,\n\t0x6b0: 0x3b8f, 0x6b1: 0x3b96, 0x6b2: 0xa000, 0x6b3: 0xa000, 0x6b4: 0x3b9d, 0x6b5: 0x3ba4,\n\t0x6b6: 0xa000, 0x6b7: 0xa000, 0x6b8: 0x3bab, 0x6b9: 0x3bb2, 0x6ba: 0xa000, 0x6bb: 0xa000,\n\t0x6bc: 0xa000, 0x6bd: 0xa000,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3bb9, 0x6c1: 0x3bc0, 0x6c2: 0xa000, 0x6c3: 0xa000, 0x6c4: 0x3bd5, 0x6c5: 0x3bdc,\n\t0x6c6: 0xa000, 0x6c7: 0xa000, 0x6c8: 0x3be3, 0x6c9: 0x3bea,\n\t0x6d1: 0xa000,\n\t0x6d2: 0xa000,\n\t0x6e2: 0xa000,\n\t0x6e8: 0xa000, 0x6e9: 0xa000,\n\t0x6eb: 0xa000, 0x6ec: 0x3bff, 0x6ed: 0x3c06, 0x6ee: 0x3c0d, 0x6ef: 0x3c14,\n\t0x6f2: 0xa000, 0x6f3: 0xa000, 0x6f4: 0xa000, 0x6f5: 0xa000,\n\t// Block 0x1c, offset 0x700\n\t0x706: 0xa000, 0x70b: 0xa000,\n\t0x70c: 0x3f47, 0x70d: 0xa000, 0x70e: 0x3f4f, 0x70f: 0xa000, 0x710: 0x3f57, 0x711: 0xa000,\n\t0x712: 0x3f5f, 0x713: 0xa000, 0x714: 0x3f67, 0x715: 0xa000, 0x716: 0x3f6f, 0x717: 0xa000,\n\t0x718: 0x3f77, 0x719: 0xa000, 0x71a: 0x3f7f, 0x71b: 0xa000, 0x71c: 0x3f87, 0x71d: 0xa000,\n\t0x71e: 0x3f8f, 0x71f: 0xa000, 0x720: 0x3f97, 0x721: 0xa000, 0x722: 0x3f9f,\n\t0x724: 0xa000, 0x725: 0x3fa7, 0x726: 0xa000, 0x727: 0x3faf, 0x728: 0xa000, 0x729: 0x3fb7,\n\t0x72f: 0xa000,\n\t0x730: 0x3fbf, 0x731: 0x3fc7, 0x732: 0xa000, 0x733: 0x3fcf, 0x734: 0x3fd7, 0x735: 0xa000,\n\t0x736: 0x3fdf, 0x737: 0x3fe7, 0x738: 0xa000, 0x739: 0x3fef, 0x73a: 0x3ff7, 0x73b: 0xa000,\n\t0x73c: 0x3fff, 0x73d: 0x4007,\n\t// Block 0x1d, offset 0x740\n\t0x754: 0x3f3f,\n\t0x759: 0x9904, 0x75a: 0x9904, 0x75b: 0x8100, 0x75c: 0x8100, 0x75d: 0xa000,\n\t0x75e: 0x400f,\n\t0x766: 0xa000,\n\t0x76b: 0xa000, 0x76c: 0x401f, 0x76d: 0xa000, 0x76e: 0x4027, 0x76f: 0xa000,\n\t0x770: 0x402f, 0x771: 0xa000, 0x772: 0x4037, 0x773: 0xa000, 0x774: 0x403f, 0x775: 0xa000,\n\t0x776: 0x4047, 0x777: 0xa000, 0x778: 0x404f, 0x779: 0xa000, 0x77a: 0x4057, 0x77b: 0xa000,\n\t0x77c: 0x405f, 0x77d: 0xa000, 0x77e: 0x4067, 0x77f: 0xa000,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x406f, 0x781: 0xa000, 0x782: 0x4077, 0x784: 0xa000, 0x785: 0x407f,\n\t0x786: 0xa000, 0x787: 0x4087, 0x788: 0xa000, 0x789: 0x408f,\n\t0x78f: 0xa000, 0x790: 0x4097, 0x791: 0x409f,\n\t0x792: 0xa000, 0x793: 0x40a7, 0x794: 0x40af, 0x795: 0xa000, 0x796: 0x40b7, 0x797: 0x40bf,\n\t0x798: 0xa000, 0x799: 0x40c7, 0x79a: 0x40cf, 0x79b: 0xa000, 0x79c: 0x40d7, 0x79d: 0x40df,\n\t0x7af: 0xa000,\n\t0x7b0: 0xa000, 0x7b1: 0xa000, 0x7b2: 0xa000, 0x7b4: 0x4017,\n\t0x7b7: 0x40e7, 0x7b8: 0x40ef, 0x7b9: 0x40f7, 0x7ba: 0x40ff,\n\t0x7bd: 0xa000, 0x7be: 0x4107,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x1472, 0x7c1: 0x0df6, 0x7c2: 0x14ce, 0x7c3: 0x149a, 0x7c4: 0x0f52, 0x7c5: 0x07e6,\n\t0x7c6: 0x09da, 0x7c7: 0x1726, 0x7c8: 0x1726, 0x7c9: 0x0b06, 0x7ca: 0x155a, 0x7cb: 0x0a3e,\n\t0x7cc: 0x0b02, 0x7cd: 0x0cea, 0x7ce: 0x10ca, 0x7cf: 0x125a, 0x7d0: 0x1392, 0x7d1: 0x13ce,\n\t0x7d2: 0x1402, 0x7d3: 0x1516, 0x7d4: 0x0e6e, 0x7d5: 0x0efa, 0x7d6: 0x0fa6, 0x7d7: 0x103e,\n\t0x7d8: 0x135a, 0x7d9: 0x1542, 0x7da: 0x166e, 0x7db: 0x080a, 0x7dc: 0x09ae, 0x7dd: 0x0e82,\n\t0x7de: 0x0fca, 0x7df: 0x138e, 0x7e0: 0x16be, 0x7e1: 0x0bae, 0x7e2: 0x0f72, 0x7e3: 0x137e,\n\t0x7e4: 0x1412, 0x7e5: 0x0d1e, 0x7e6: 0x12b6, 0x7e7: 0x13da, 0x7e8: 0x0c1a, 0x7e9: 0x0e0a,\n\t0x7ea: 0x0f12, 0x7eb: 0x1016, 0x7ec: 0x1522, 0x7ed: 0x084a, 0x7ee: 0x08e2, 0x7ef: 0x094e,\n\t0x7f0: 0x0d86, 0x7f1: 0x0e7a, 0x7f2: 0x0fc6, 0x7f3: 0x10ea, 0x7f4: 0x1272, 0x7f5: 0x1386,\n\t0x7f6: 0x139e, 0x7f7: 0x14c2, 0x7f8: 0x15ea, 0x7f9: 0x169e, 0x7fa: 0x16ba, 0x7fb: 0x1126,\n\t0x7fc: 0x1166, 0x7fd: 0x121e, 0x7fe: 0x133e, 0x7ff: 0x1576,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x16c6, 0x801: 0x1446, 0x802: 0x0ac2, 0x803: 0x0c36, 0x804: 0x11d6, 0x805: 0x1296,\n\t0x806: 0x0ffa, 0x807: 0x112e, 0x808: 0x1492, 0x809: 0x15e2, 0x80a: 0x0abe, 0x80b: 0x0b8a,\n\t0x80c: 0x0e72, 0x80d: 0x0f26, 0x80e: 0x0f5a, 0x80f: 0x120e, 0x810: 0x1236, 0x811: 0x15a2,\n\t0x812: 0x094a, 0x813: 0x12a2, 0x814: 0x08ee, 0x815: 0x08ea, 0x816: 0x1192, 0x817: 0x1222,\n\t0x818: 0x1356, 0x819: 0x15aa, 0x81a: 0x1462, 0x81b: 0x0d22, 0x81c: 0x0e6e, 0x81d: 0x1452,\n\t0x81e: 0x07f2, 0x81f: 0x0b5e, 0x820: 0x0c8e, 0x821: 0x102a, 0x822: 0x10aa, 0x823: 0x096e,\n\t0x824: 0x1136, 0x825: 0x085a, 0x826: 0x0c72, 0x827: 0x07d2, 0x828: 0x0ee6, 0x829: 0x0d9e,\n\t0x82a: 0x120a, 0x82b: 0x09c2, 0x82c: 0x0aae, 0x82d: 0x10f6, 0x82e: 0x135e, 0x82f: 0x1436,\n\t0x830: 0x0eb2, 0x831: 0x14f2, 0x832: 0x0ede, 0x833: 0x0d32, 0x834: 0x1316, 0x835: 0x0d52,\n\t0x836: 0x10a6, 0x837: 0x0826, 0x838: 0x08a2, 0x839: 0x08e6, 0x83a: 0x0e4e, 0x83b: 0x11f6,\n\t0x83c: 0x12ee, 0x83d: 0x1442, 0x83e: 0x1556, 0x83f: 0x0956,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0a0a, 0x841: 0x0b12, 0x842: 0x0c2a, 0x843: 0x0dba, 0x844: 0x0f76, 0x845: 0x113a,\n\t0x846: 0x1592, 0x847: 0x1676, 0x848: 0x16ca, 0x849: 0x16e2, 0x84a: 0x0932, 0x84b: 0x0dee,\n\t0x84c: 0x0e9e, 0x84d: 0x14e6, 0x84e: 0x0bf6, 0x84f: 0x0cd2, 0x850: 0x0cee, 0x851: 0x0d7e,\n\t0x852: 0x0f66, 0x853: 0x0fb2, 0x854: 0x1062, 0x855: 0x1186, 0x856: 0x122a, 0x857: 0x128e,\n\t0x858: 0x14d6, 0x859: 0x1366, 0x85a: 0x14fe, 0x85b: 0x157a, 0x85c: 0x090a, 0x85d: 0x0936,\n\t0x85e: 0x0a1e, 0x85f: 0x0fa2, 0x860: 0x13ee, 0x861: 0x1436, 0x862: 0x0c16, 0x863: 0x0c86,\n\t0x864: 0x0d4a, 0x865: 0x0eaa, 0x866: 0x11d2, 0x867: 0x101e, 0x868: 0x0836, 0x869: 0x0a7a,\n\t0x86a: 0x0b5e, 0x86b: 0x0bc2, 0x86c: 0x0c92, 0x86d: 0x103a, 0x86e: 0x1056, 0x86f: 0x1266,\n\t0x870: 0x1286, 0x871: 0x155e, 0x872: 0x15de, 0x873: 0x15ee, 0x874: 0x162a, 0x875: 0x084e,\n\t0x876: 0x117a, 0x877: 0x154a, 0x878: 0x15c6, 0x879: 0x0caa, 0x87a: 0x0812, 0x87b: 0x0872,\n\t0x87c: 0x0b62, 0x87d: 0x0b82, 0x87e: 0x0daa, 0x87f: 0x0e6e,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0fbe, 0x881: 0x10c6, 0x882: 0x1372, 0x883: 0x1512, 0x884: 0x171e, 0x885: 0x0dde,\n\t0x886: 0x159e, 0x887: 0x092e, 0x888: 0x0e2a, 0x889: 0x0e36, 0x88a: 0x0f0a, 0x88b: 0x0f42,\n\t0x88c: 0x1046, 0x88d: 0x10a2, 0x88e: 0x1122, 0x88f: 0x1206, 0x890: 0x1636, 0x891: 0x08aa,\n\t0x892: 0x0cfe, 0x893: 0x15ae, 0x894: 0x0862, 0x895: 0x0ba6, 0x896: 0x0f2a, 0x897: 0x14da,\n\t0x898: 0x0c62, 0x899: 0x0cb2, 0x89a: 0x0e3e, 0x89b: 0x102a, 0x89c: 0x15b6, 0x89d: 0x0912,\n\t0x89e: 0x09fa, 0x89f: 0x0b92, 0x8a0: 0x0dce, 0x8a1: 0x0e1a, 0x8a2: 0x0e5a, 0x8a3: 0x0eee,\n\t0x8a4: 0x1042, 0x8a5: 0x10b6, 0x8a6: 0x1252, 0x8a7: 0x13f2, 0x8a8: 0x13fe, 0x8a9: 0x1552,\n\t0x8aa: 0x15d2, 0x8ab: 0x097e, 0x8ac: 0x0f46, 0x8ad: 0x09fe, 0x8ae: 0x0fc2, 0x8af: 0x1066,\n\t0x8b0: 0x1382, 0x8b1: 0x15ba, 0x8b2: 0x16a6, 0x8b3: 0x16ce, 0x8b4: 0x0e32, 0x8b5: 0x0f22,\n\t0x8b6: 0x12be, 0x8b7: 0x11b2, 0x8b8: 0x11be, 0x8b9: 0x11e2, 0x8ba: 0x1012, 0x8bb: 0x0f9a,\n\t0x8bc: 0x145e, 0x8bd: 0x082e, 0x8be: 0x1326, 0x8bf: 0x0916,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0906, 0x8c1: 0x0c06, 0x8c2: 0x0d26, 0x8c3: 0x11ee, 0x8c4: 0x0b4e, 0x8c5: 0x0efe,\n\t0x8c6: 0x0dea, 0x8c7: 0x14e2, 0x8c8: 0x13e2, 0x8c9: 0x15a6, 0x8ca: 0x141e, 0x8cb: 0x0c22,\n\t0x8cc: 0x0882, 0x8cd: 0x0a56, 0x8d0: 0x0aaa,\n\t0x8d2: 0x0dda, 0x8d5: 0x08f2, 0x8d6: 0x101a, 0x8d7: 0x10de,\n\t0x8d8: 0x1142, 0x8d9: 0x115e, 0x8da: 0x1162, 0x8db: 0x1176, 0x8dc: 0x15f6, 0x8dd: 0x11e6,\n\t0x8de: 0x126a, 0x8e0: 0x138a, 0x8e2: 0x144e,\n\t0x8e5: 0x1502, 0x8e6: 0x152e,\n\t0x8ea: 0x164a, 0x8eb: 0x164e, 0x8ec: 0x1652, 0x8ed: 0x16b6, 0x8ee: 0x1526, 0x8ef: 0x15c2,\n\t0x8f0: 0x0852, 0x8f1: 0x0876, 0x8f2: 0x088a, 0x8f3: 0x0946, 0x8f4: 0x0952, 0x8f5: 0x0992,\n\t0x8f6: 0x0a46, 0x8f7: 0x0a62, 0x8f8: 0x0a6a, 0x8f9: 0x0aa6, 0x8fa: 0x0ab2, 0x8fb: 0x0b8e,\n\t0x8fc: 0x0b96, 0x8fd: 0x0c9e, 0x8fe: 0x0cc6, 0x8ff: 0x0cce,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0ce6, 0x901: 0x0d92, 0x902: 0x0dc2, 0x903: 0x0de2, 0x904: 0x0e52, 0x905: 0x0f16,\n\t0x906: 0x0f32, 0x907: 0x0f62, 0x908: 0x0fb6, 0x909: 0x0fd6, 0x90a: 0x104a, 0x90b: 0x112a,\n\t0x90c: 0x1146, 0x90d: 0x114e, 0x90e: 0x114a, 0x90f: 0x1152, 0x910: 0x1156, 0x911: 0x115a,\n\t0x912: 0x116e, 0x913: 0x1172, 0x914: 0x1196, 0x915: 0x11aa, 0x916: 0x11c6, 0x917: 0x122a,\n\t0x918: 0x1232, 0x919: 0x123a, 0x91a: 0x124e, 0x91b: 0x1276, 0x91c: 0x12c6, 0x91d: 0x12fa,\n\t0x91e: 0x12fa, 0x91f: 0x1362, 0x920: 0x140a, 0x921: 0x1422, 0x922: 0x1456, 0x923: 0x145a,\n\t0x924: 0x149e, 0x925: 0x14a2, 0x926: 0x14fa, 0x927: 0x1502, 0x928: 0x15d6, 0x929: 0x161a,\n\t0x92a: 0x1632, 0x92b: 0x0c96, 0x92c: 0x184b, 0x92d: 0x12de,\n\t0x930: 0x07da, 0x931: 0x08de, 0x932: 0x089e, 0x933: 0x0846, 0x934: 0x0886, 0x935: 0x08b2,\n\t0x936: 0x0942, 0x937: 0x095e, 0x938: 0x0a46, 0x939: 0x0a32, 0x93a: 0x0a42, 0x93b: 0x0a5e,\n\t0x93c: 0x0aaa, 0x93d: 0x0aba, 0x93e: 0x0afe, 0x93f: 0x0b0a,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0b26, 0x941: 0x0b36, 0x942: 0x0c1e, 0x943: 0x0c26, 0x944: 0x0c56, 0x945: 0x0c76,\n\t0x946: 0x0ca6, 0x947: 0x0cbe, 0x948: 0x0cae, 0x949: 0x0cce, 0x94a: 0x0cc2, 0x94b: 0x0ce6,\n\t0x94c: 0x0d02, 0x94d: 0x0d5a, 0x94e: 0x0d66, 0x94f: 0x0d6e, 0x950: 0x0d96, 0x951: 0x0dda,\n\t0x952: 0x0e0a, 0x953: 0x0e0e, 0x954: 0x0e22, 0x955: 0x0ea2, 0x956: 0x0eb2, 0x957: 0x0f0a,\n\t0x958: 0x0f56, 0x959: 0x0f4e, 0x95a: 0x0f62, 0x95b: 0x0f7e, 0x95c: 0x0fb6, 0x95d: 0x110e,\n\t0x95e: 0x0fda, 0x95f: 0x100e, 0x960: 0x101a, 0x961: 0x105a, 0x962: 0x1076, 0x963: 0x109a,\n\t0x964: 0x10be, 0x965: 0x10c2, 0x966: 0x10de, 0x967: 0x10e2, 0x968: 0x10f2, 0x969: 0x1106,\n\t0x96a: 0x1102, 0x96b: 0x1132, 0x96c: 0x11ae, 0x96d: 0x11c6, 0x96e: 0x11de, 0x96f: 0x1216,\n\t0x970: 0x122a, 0x971: 0x1246, 0x972: 0x1276, 0x973: 0x132a, 0x974: 0x1352, 0x975: 0x13c6,\n\t0x976: 0x140e, 0x977: 0x141a, 0x978: 0x1422, 0x979: 0x143a, 0x97a: 0x144e, 0x97b: 0x143e,\n\t0x97c: 0x1456, 0x97d: 0x1452, 0x97e: 0x144a, 0x97f: 0x145a,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x1466, 0x981: 0x14a2, 0x982: 0x14de, 0x983: 0x150e, 0x984: 0x1546, 0x985: 0x1566,\n\t0x986: 0x15b2, 0x987: 0x15d6, 0x988: 0x15f6, 0x989: 0x160a, 0x98a: 0x161a, 0x98b: 0x1626,\n\t0x98c: 0x1632, 0x98d: 0x1686, 0x98e: 0x1726, 0x98f: 0x17e2, 0x990: 0x17dd, 0x991: 0x180f,\n\t0x992: 0x0702, 0x993: 0x072a, 0x994: 0x072e, 0x995: 0x1891, 0x996: 0x18be, 0x997: 0x1936,\n\t0x998: 0x1712, 0x999: 0x1722,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x07f6, 0x9c1: 0x07ee, 0x9c2: 0x07fe, 0x9c3: 0x1774, 0x9c4: 0x0842, 0x9c5: 0x0852,\n\t0x9c6: 0x0856, 0x9c7: 0x085e, 0x9c8: 0x0866, 0x9c9: 0x086a, 0x9ca: 0x0876, 0x9cb: 0x086e,\n\t0x9cc: 0x06ae, 0x9cd: 0x1788, 0x9ce: 0x088a, 0x9cf: 0x088e, 0x9d0: 0x0892, 0x9d1: 0x08ae,\n\t0x9d2: 0x1779, 0x9d3: 0x06b2, 0x9d4: 0x089a, 0x9d5: 0x08ba, 0x9d6: 0x1783, 0x9d7: 0x08ca,\n\t0x9d8: 0x08d2, 0x9d9: 0x0832, 0x9da: 0x08da, 0x9db: 0x08de, 0x9dc: 0x195e, 0x9dd: 0x08fa,\n\t0x9de: 0x0902, 0x9df: 0x06ba, 0x9e0: 0x091a, 0x9e1: 0x091e, 0x9e2: 0x0926, 0x9e3: 0x092a,\n\t0x9e4: 0x06be, 0x9e5: 0x0942, 0x9e6: 0x0946, 0x9e7: 0x0952, 0x9e8: 0x095e, 0x9e9: 0x0962,\n\t0x9ea: 0x0966, 0x9eb: 0x096e, 0x9ec: 0x098e, 0x9ed: 0x0992, 0x9ee: 0x099a, 0x9ef: 0x09aa,\n\t0x9f0: 0x09b2, 0x9f1: 0x09b6, 0x9f2: 0x09b6, 0x9f3: 0x09b6, 0x9f4: 0x1797, 0x9f5: 0x0f8e,\n\t0x9f6: 0x09ca, 0x9f7: 0x09d2, 0x9f8: 0x179c, 0x9f9: 0x09de, 0x9fa: 0x09e6, 0x9fb: 0x09ee,\n\t0x9fc: 0x0a16, 0x9fd: 0x0a02, 0x9fe: 0x0a0e, 0x9ff: 0x0a12,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0a1a, 0xa01: 0x0a22, 0xa02: 0x0a26, 0xa03: 0x0a2e, 0xa04: 0x0a36, 0xa05: 0x0a3a,\n\t0xa06: 0x0a3a, 0xa07: 0x0a42, 0xa08: 0x0a4a, 0xa09: 0x0a4e, 0xa0a: 0x0a5a, 0xa0b: 0x0a7e,\n\t0xa0c: 0x0a62, 0xa0d: 0x0a82, 0xa0e: 0x0a66, 0xa0f: 0x0a6e, 0xa10: 0x0906, 0xa11: 0x0aca,\n\t0xa12: 0x0a92, 0xa13: 0x0a96, 0xa14: 0x0a9a, 0xa15: 0x0a8e, 0xa16: 0x0aa2, 0xa17: 0x0a9e,\n\t0xa18: 0x0ab6, 0xa19: 0x17a1, 0xa1a: 0x0ad2, 0xa1b: 0x0ad6, 0xa1c: 0x0ade, 0xa1d: 0x0aea,\n\t0xa1e: 0x0af2, 0xa1f: 0x0b0e, 0xa20: 0x17a6, 0xa21: 0x17ab, 0xa22: 0x0b1a, 0xa23: 0x0b1e,\n\t0xa24: 0x0b22, 0xa25: 0x0b16, 0xa26: 0x0b2a, 0xa27: 0x06c2, 0xa28: 0x06c6, 0xa29: 0x0b32,\n\t0xa2a: 0x0b3a, 0xa2b: 0x0b3a, 0xa2c: 0x17b0, 0xa2d: 0x0b56, 0xa2e: 0x0b5a, 0xa2f: 0x0b5e,\n\t0xa30: 0x0b66, 0xa31: 0x17b5, 0xa32: 0x0b6e, 0xa33: 0x0b72, 0xa34: 0x0c4a, 0xa35: 0x0b7a,\n\t0xa36: 0x06ca, 0xa37: 0x0b86, 0xa38: 0x0b96, 0xa39: 0x0ba2, 0xa3a: 0x0b9e, 0xa3b: 0x17bf,\n\t0xa3c: 0x0baa, 0xa3d: 0x17c4, 0xa3e: 0x0bb6, 0xa3f: 0x0bb2,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0bba, 0xa41: 0x0bca, 0xa42: 0x0bce, 0xa43: 0x06ce, 0xa44: 0x0bde, 0xa45: 0x0be6,\n\t0xa46: 0x0bea, 0xa47: 0x0bee, 0xa48: 0x06d2, 0xa49: 0x17c9, 0xa4a: 0x06d6, 0xa4b: 0x0c0a,\n\t0xa4c: 0x0c0e, 0xa4d: 0x0c12, 0xa4e: 0x0c1a, 0xa4f: 0x1990, 0xa50: 0x0c32, 0xa51: 0x17d3,\n\t0xa52: 0x17d3, 0xa53: 0x12d2, 0xa54: 0x0c42, 0xa55: 0x0c42, 0xa56: 0x06da, 0xa57: 0x17f6,\n\t0xa58: 0x18c8, 0xa59: 0x0c52, 0xa5a: 0x0c5a, 0xa5b: 0x06de, 0xa5c: 0x0c6e, 0xa5d: 0x0c7e,\n\t0xa5e: 0x0c82, 0xa5f: 0x0c8a, 0xa60: 0x0c9a, 0xa61: 0x06e6, 0xa62: 0x06e2, 0xa63: 0x0c9e,\n\t0xa64: 0x17d8, 0xa65: 0x0ca2, 0xa66: 0x0cb6, 0xa67: 0x0cba, 0xa68: 0x0cbe, 0xa69: 0x0cba,\n\t0xa6a: 0x0cca, 0xa6b: 0x0cce, 0xa6c: 0x0cde, 0xa6d: 0x0cd6, 0xa6e: 0x0cda, 0xa6f: 0x0ce2,\n\t0xa70: 0x0ce6, 0xa71: 0x0cea, 0xa72: 0x0cf6, 0xa73: 0x0cfa, 0xa74: 0x0d12, 0xa75: 0x0d1a,\n\t0xa76: 0x0d2a, 0xa77: 0x0d3e, 0xa78: 0x17e7, 0xa79: 0x0d3a, 0xa7a: 0x0d2e, 0xa7b: 0x0d46,\n\t0xa7c: 0x0d4e, 0xa7d: 0x0d62, 0xa7e: 0x17ec, 0xa7f: 0x0d6a,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x0d5e, 0xa81: 0x0d56, 0xa82: 0x06ea, 0xa83: 0x0d72, 0xa84: 0x0d7a, 0xa85: 0x0d82,\n\t0xa86: 0x0d76, 0xa87: 0x06ee, 0xa88: 0x0d92, 0xa89: 0x0d9a, 0xa8a: 0x17f1, 0xa8b: 0x0dc6,\n\t0xa8c: 0x0dfa, 0xa8d: 0x0dd6, 0xa8e: 0x06fa, 0xa8f: 0x0de2, 0xa90: 0x06f6, 0xa91: 0x06f2,\n\t0xa92: 0x08be, 0xa93: 0x08c2, 0xa94: 0x0dfe, 0xa95: 0x0de6, 0xa96: 0x12a6, 0xa97: 0x075e,\n\t0xa98: 0x0e0a, 0xa99: 0x0e0e, 0xa9a: 0x0e12, 0xa9b: 0x0e26, 0xa9c: 0x0e1e, 0xa9d: 0x180a,\n\t0xa9e: 0x06fe, 0xa9f: 0x0e3a, 0xaa0: 0x0e2e, 0xaa1: 0x0e4a, 0xaa2: 0x0e52, 0xaa3: 0x1814,\n\t0xaa4: 0x0e56, 0xaa5: 0x0e42, 0xaa6: 0x0e5e, 0xaa7: 0x0702, 0xaa8: 0x0e62, 0xaa9: 0x0e66,\n\t0xaaa: 0x0e6a, 0xaab: 0x0e76, 0xaac: 0x1819, 0xaad: 0x0e7e, 0xaae: 0x0706, 0xaaf: 0x0e8a,\n\t0xab0: 0x181e, 0xab1: 0x0e8e, 0xab2: 0x070a, 0xab3: 0x0e9a, 0xab4: 0x0ea6, 0xab5: 0x0eb2,\n\t0xab6: 0x0eb6, 0xab7: 0x1823, 0xab8: 0x17ba, 0xab9: 0x1828, 0xaba: 0x0ed6, 0xabb: 0x182d,\n\t0xabc: 0x0ee2, 0xabd: 0x0eea, 0xabe: 0x0eda, 0xabf: 0x0ef6,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x0f06, 0xac1: 0x0f16, 0xac2: 0x0f0a, 0xac3: 0x0f0e, 0xac4: 0x0f1a, 0xac5: 0x0f1e,\n\t0xac6: 0x1832, 0xac7: 0x0f02, 0xac8: 0x0f36, 0xac9: 0x0f3a, 0xaca: 0x070e, 0xacb: 0x0f4e,\n\t0xacc: 0x0f4a, 0xacd: 0x1837, 0xace: 0x0f2e, 0xacf: 0x0f6a, 0xad0: 0x183c, 0xad1: 0x1841,\n\t0xad2: 0x0f6e, 0xad3: 0x0f82, 0xad4: 0x0f7e, 0xad5: 0x0f7a, 0xad6: 0x0712, 0xad7: 0x0f86,\n\t0xad8: 0x0f96, 0xad9: 0x0f92, 0xada: 0x0f9e, 0xadb: 0x177e, 0xadc: 0x0fae, 0xadd: 0x1846,\n\t0xade: 0x0fba, 0xadf: 0x1850, 0xae0: 0x0fce, 0xae1: 0x0fda, 0xae2: 0x0fee, 0xae3: 0x1855,\n\t0xae4: 0x1002, 0xae5: 0x1006, 0xae6: 0x185a, 0xae7: 0x185f, 0xae8: 0x1022, 0xae9: 0x1032,\n\t0xaea: 0x0716, 0xaeb: 0x1036, 0xaec: 0x071a, 0xaed: 0x071a, 0xaee: 0x104e, 0xaef: 0x1052,\n\t0xaf0: 0x105a, 0xaf1: 0x105e, 0xaf2: 0x106a, 0xaf3: 0x071e, 0xaf4: 0x1082, 0xaf5: 0x1864,\n\t0xaf6: 0x109e, 0xaf7: 0x1869, 0xaf8: 0x10aa, 0xaf9: 0x17ce, 0xafa: 0x10ba, 0xafb: 0x186e,\n\t0xafc: 0x1873, 0xafd: 0x1878, 0xafe: 0x0722, 0xaff: 0x0726,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x10f2, 0xb01: 0x1882, 0xb02: 0x187d, 0xb03: 0x1887, 0xb04: 0x188c, 0xb05: 0x10fa,\n\t0xb06: 0x10fe, 0xb07: 0x10fe, 0xb08: 0x1106, 0xb09: 0x072e, 0xb0a: 0x110a, 0xb0b: 0x0732,\n\t0xb0c: 0x0736, 0xb0d: 0x1896, 0xb0e: 0x111e, 0xb0f: 0x1126, 0xb10: 0x1132, 0xb11: 0x073a,\n\t0xb12: 0x189b, 0xb13: 0x1156, 0xb14: 0x18a0, 0xb15: 0x18a5, 0xb16: 0x1176, 0xb17: 0x118e,\n\t0xb18: 0x073e, 0xb19: 0x1196, 0xb1a: 0x119a, 0xb1b: 0x119e, 0xb1c: 0x18aa, 0xb1d: 0x18af,\n\t0xb1e: 0x18af, 0xb1f: 0x11b6, 0xb20: 0x0742, 0xb21: 0x18b4, 0xb22: 0x11ca, 0xb23: 0x11ce,\n\t0xb24: 0x0746, 0xb25: 0x18b9, 0xb26: 0x11ea, 0xb27: 0x074a, 0xb28: 0x11fa, 0xb29: 0x11f2,\n\t0xb2a: 0x1202, 0xb2b: 0x18c3, 0xb2c: 0x121a, 0xb2d: 0x074e, 0xb2e: 0x1226, 0xb2f: 0x122e,\n\t0xb30: 0x123e, 0xb31: 0x0752, 0xb32: 0x18cd, 0xb33: 0x18d2, 0xb34: 0x0756, 0xb35: 0x18d7,\n\t0xb36: 0x1256, 0xb37: 0x18dc, 0xb38: 0x1262, 0xb39: 0x126e, 0xb3a: 0x1276, 0xb3b: 0x18e1,\n\t0xb3c: 0x18e6, 0xb3d: 0x128a, 0xb3e: 0x18eb, 0xb3f: 0x1292,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x17fb, 0xb41: 0x075a, 0xb42: 0x12aa, 0xb43: 0x12ae, 0xb44: 0x0762, 0xb45: 0x12b2,\n\t0xb46: 0x0b2e, 0xb47: 0x18f0, 0xb48: 0x18f5, 0xb49: 0x1800, 0xb4a: 0x1805, 0xb4b: 0x12d2,\n\t0xb4c: 0x12d6, 0xb4d: 0x14ee, 0xb4e: 0x0766, 0xb4f: 0x1302, 0xb50: 0x12fe, 0xb51: 0x1306,\n\t0xb52: 0x093a, 0xb53: 0x130a, 0xb54: 0x130e, 0xb55: 0x1312, 0xb56: 0x131a, 0xb57: 0x18fa,\n\t0xb58: 0x1316, 0xb59: 0x131e, 0xb5a: 0x1332, 0xb5b: 0x1336, 0xb5c: 0x1322, 0xb5d: 0x133a,\n\t0xb5e: 0x134e, 0xb5f: 0x1362, 0xb60: 0x132e, 0xb61: 0x1342, 0xb62: 0x1346, 0xb63: 0x134a,\n\t0xb64: 0x18ff, 0xb65: 0x1909, 0xb66: 0x1904, 0xb67: 0x076a, 0xb68: 0x136a, 0xb69: 0x136e,\n\t0xb6a: 0x1376, 0xb6b: 0x191d, 0xb6c: 0x137a, 0xb6d: 0x190e, 0xb6e: 0x076e, 0xb6f: 0x0772,\n\t0xb70: 0x1913, 0xb71: 0x1918, 0xb72: 0x0776, 0xb73: 0x139a, 0xb74: 0x139e, 0xb75: 0x13a2,\n\t0xb76: 0x13a6, 0xb77: 0x13b2, 0xb78: 0x13ae, 0xb79: 0x13ba, 0xb7a: 0x13b6, 0xb7b: 0x13c6,\n\t0xb7c: 0x13be, 0xb7d: 0x13c2, 0xb7e: 0x13ca, 0xb7f: 0x077a,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x13d2, 0xb81: 0x13d6, 0xb82: 0x077e, 0xb83: 0x13e6, 0xb84: 0x13ea, 0xb85: 0x1922,\n\t0xb86: 0x13f6, 0xb87: 0x13fa, 0xb88: 0x0782, 0xb89: 0x1406, 0xb8a: 0x06b6, 0xb8b: 0x1927,\n\t0xb8c: 0x192c, 0xb8d: 0x0786, 0xb8e: 0x078a, 0xb8f: 0x1432, 0xb90: 0x144a, 0xb91: 0x1466,\n\t0xb92: 0x1476, 0xb93: 0x1931, 0xb94: 0x148a, 0xb95: 0x148e, 0xb96: 0x14a6, 0xb97: 0x14b2,\n\t0xb98: 0x193b, 0xb99: 0x178d, 0xb9a: 0x14be, 0xb9b: 0x14ba, 0xb9c: 0x14c6, 0xb9d: 0x1792,\n\t0xb9e: 0x14d2, 0xb9f: 0x14de, 0xba0: 0x1940, 0xba1: 0x1945, 0xba2: 0x151e, 0xba3: 0x152a,\n\t0xba4: 0x1532, 0xba5: 0x194a, 0xba6: 0x1536, 0xba7: 0x1562, 0xba8: 0x156e, 0xba9: 0x1572,\n\t0xbaa: 0x156a, 0xbab: 0x157e, 0xbac: 0x1582, 0xbad: 0x194f, 0xbae: 0x158e, 0xbaf: 0x078e,\n\t0xbb0: 0x1596, 0xbb1: 0x1954, 0xbb2: 0x0792, 0xbb3: 0x15ce, 0xbb4: 0x0bbe, 0xbb5: 0x15e6,\n\t0xbb6: 0x1959, 0xbb7: 0x1963, 0xbb8: 0x0796, 0xbb9: 0x079a, 0xbba: 0x160e, 0xbbb: 0x1968,\n\t0xbbc: 0x079e, 0xbbd: 0x196d, 0xbbe: 0x1626, 0xbbf: 0x1626,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x162e, 0xbc1: 0x1972, 0xbc2: 0x1646, 0xbc3: 0x07a2, 0xbc4: 0x1656, 0xbc5: 0x1662,\n\t0xbc6: 0x166a, 0xbc7: 0x1672, 0xbc8: 0x07a6, 0xbc9: 0x1977, 0xbca: 0x1686, 0xbcb: 0x16a2,\n\t0xbcc: 0x16ae, 0xbcd: 0x07aa, 0xbce: 0x07ae, 0xbcf: 0x16b2, 0xbd0: 0x197c, 0xbd1: 0x07b2,\n\t0xbd2: 0x1981, 0xbd3: 0x1986, 0xbd4: 0x198b, 0xbd5: 0x16d6, 0xbd6: 0x07b6, 0xbd7: 0x16ea,\n\t0xbd8: 0x16f2, 0xbd9: 0x16f6, 0xbda: 0x16fe, 0xbdb: 0x1706, 0xbdc: 0x170e, 0xbdd: 0x1995,\n}\n\n// nfcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x2e, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2f, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x30, 0xcb: 0x31, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x32,\n\t0xd0: 0x09, 0xd1: 0x33, 0xd2: 0x34, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x35,\n\t0xd8: 0x36, 0xd9: 0x0c, 0xdb: 0x37, 0xdc: 0x38, 0xdd: 0x39, 0xdf: 0x3a,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x3b, 0x121: 0x3c, 0x122: 0x3d, 0x123: 0x0d, 0x124: 0x3e, 0x125: 0x3f, 0x126: 0x40, 0x127: 0x41,\n\t0x128: 0x42, 0x129: 0x43, 0x12a: 0x44, 0x12b: 0x45, 0x12c: 0x40, 0x12d: 0x46, 0x12e: 0x47, 0x12f: 0x48,\n\t0x130: 0x44, 0x131: 0x49, 0x132: 0x4a, 0x133: 0x4b, 0x134: 0x4c, 0x135: 0x4d, 0x137: 0x4e,\n\t0x138: 0x4f, 0x139: 0x50, 0x13a: 0x51, 0x13b: 0x52, 0x13c: 0x53, 0x13d: 0x54, 0x13e: 0x55, 0x13f: 0x56,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x57, 0x142: 0x58, 0x144: 0x59, 0x145: 0x5a, 0x146: 0x5b, 0x147: 0x5c,\n\t0x14d: 0x5d,\n\t0x15c: 0x5e, 0x15f: 0x5f,\n\t0x162: 0x60, 0x164: 0x61,\n\t0x168: 0x62, 0x169: 0x63, 0x16a: 0x64, 0x16b: 0x65, 0x16c: 0x0e, 0x16d: 0x66, 0x16e: 0x67, 0x16f: 0x68,\n\t0x170: 0x69, 0x173: 0x6a, 0x177: 0x0f,\n\t0x178: 0x10, 0x179: 0x11, 0x17a: 0x12, 0x17b: 0x13, 0x17c: 0x14, 0x17d: 0x15, 0x17e: 0x16, 0x17f: 0x17,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x6b, 0x183: 0x6c, 0x184: 0x6d, 0x186: 0x6e, 0x187: 0x6f,\n\t0x188: 0x70, 0x189: 0x18, 0x18a: 0x19, 0x18b: 0x71, 0x18c: 0x72,\n\t0x1ab: 0x73,\n\t0x1b3: 0x74, 0x1b5: 0x75, 0x1b7: 0x76,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x77, 0x1c1: 0x1a, 0x1c2: 0x1b, 0x1c3: 0x1c, 0x1c4: 0x78, 0x1c5: 0x79,\n\t0x1c9: 0x7a, 0x1cc: 0x7b, 0x1cd: 0x7c,\n\t// Block 0x8, offset 0x200\n\t0x219: 0x7d, 0x21a: 0x7e, 0x21b: 0x7f,\n\t0x220: 0x80, 0x223: 0x81, 0x224: 0x82, 0x225: 0x83, 0x226: 0x84, 0x227: 0x85,\n\t0x22a: 0x86, 0x22b: 0x87, 0x22f: 0x88,\n\t0x230: 0x89, 0x231: 0x8a, 0x232: 0x8b, 0x233: 0x8c, 0x234: 0x8d, 0x235: 0x8e, 0x236: 0x8f, 0x237: 0x89,\n\t0x238: 0x8a, 0x239: 0x8b, 0x23a: 0x8c, 0x23b: 0x8d, 0x23c: 0x8e, 0x23d: 0x8f, 0x23e: 0x89, 0x23f: 0x8a,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x8b, 0x241: 0x8c, 0x242: 0x8d, 0x243: 0x8e, 0x244: 0x8f, 0x245: 0x89, 0x246: 0x8a, 0x247: 0x8b,\n\t0x248: 0x8c, 0x249: 0x8d, 0x24a: 0x8e, 0x24b: 0x8f, 0x24c: 0x89, 0x24d: 0x8a, 0x24e: 0x8b, 0x24f: 0x8c,\n\t0x250: 0x8d, 0x251: 0x8e, 0x252: 0x8f, 0x253: 0x89, 0x254: 0x8a, 0x255: 0x8b, 0x256: 0x8c, 0x257: 0x8d,\n\t0x258: 0x8e, 0x259: 0x8f, 0x25a: 0x89, 0x25b: 0x8a, 0x25c: 0x8b, 0x25d: 0x8c, 0x25e: 0x8d, 0x25f: 0x8e,\n\t0x260: 0x8f, 0x261: 0x89, 0x262: 0x8a, 0x263: 0x8b, 0x264: 0x8c, 0x265: 0x8d, 0x266: 0x8e, 0x267: 0x8f,\n\t0x268: 0x89, 0x269: 0x8a, 0x26a: 0x8b, 0x26b: 0x8c, 0x26c: 0x8d, 0x26d: 0x8e, 0x26e: 0x8f, 0x26f: 0x89,\n\t0x270: 0x8a, 0x271: 0x8b, 0x272: 0x8c, 0x273: 0x8d, 0x274: 0x8e, 0x275: 0x8f, 0x276: 0x89, 0x277: 0x8a,\n\t0x278: 0x8b, 0x279: 0x8c, 0x27a: 0x8d, 0x27b: 0x8e, 0x27c: 0x8f, 0x27d: 0x89, 0x27e: 0x8a, 0x27f: 0x8b,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x8c, 0x281: 0x8d, 0x282: 0x8e, 0x283: 0x8f, 0x284: 0x89, 0x285: 0x8a, 0x286: 0x8b, 0x287: 0x8c,\n\t0x288: 0x8d, 0x289: 0x8e, 0x28a: 0x8f, 0x28b: 0x89, 0x28c: 0x8a, 0x28d: 0x8b, 0x28e: 0x8c, 0x28f: 0x8d,\n\t0x290: 0x8e, 0x291: 0x8f, 0x292: 0x89, 0x293: 0x8a, 0x294: 0x8b, 0x295: 0x8c, 0x296: 0x8d, 0x297: 0x8e,\n\t0x298: 0x8f, 0x299: 0x89, 0x29a: 0x8a, 0x29b: 0x8b, 0x29c: 0x8c, 0x29d: 0x8d, 0x29e: 0x8e, 0x29f: 0x8f,\n\t0x2a0: 0x89, 0x2a1: 0x8a, 0x2a2: 0x8b, 0x2a3: 0x8c, 0x2a4: 0x8d, 0x2a5: 0x8e, 0x2a6: 0x8f, 0x2a7: 0x89,\n\t0x2a8: 0x8a, 0x2a9: 0x8b, 0x2aa: 0x8c, 0x2ab: 0x8d, 0x2ac: 0x8e, 0x2ad: 0x8f, 0x2ae: 0x89, 0x2af: 0x8a,\n\t0x2b0: 0x8b, 0x2b1: 0x8c, 0x2b2: 0x8d, 0x2b3: 0x8e, 0x2b4: 0x8f, 0x2b5: 0x89, 0x2b6: 0x8a, 0x2b7: 0x8b,\n\t0x2b8: 0x8c, 0x2b9: 0x8d, 0x2ba: 0x8e, 0x2bb: 0x8f, 0x2bc: 0x89, 0x2bd: 0x8a, 0x2be: 0x8b, 0x2bf: 0x8c,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x8d, 0x2c1: 0x8e, 0x2c2: 0x8f, 0x2c3: 0x89, 0x2c4: 0x8a, 0x2c5: 0x8b, 0x2c6: 0x8c, 0x2c7: 0x8d,\n\t0x2c8: 0x8e, 0x2c9: 0x8f, 0x2ca: 0x89, 0x2cb: 0x8a, 0x2cc: 0x8b, 0x2cd: 0x8c, 0x2ce: 0x8d, 0x2cf: 0x8e,\n\t0x2d0: 0x8f, 0x2d1: 0x89, 0x2d2: 0x8a, 0x2d3: 0x8b, 0x2d4: 0x8c, 0x2d5: 0x8d, 0x2d6: 0x8e, 0x2d7: 0x8f,\n\t0x2d8: 0x89, 0x2d9: 0x8a, 0x2da: 0x8b, 0x2db: 0x8c, 0x2dc: 0x8d, 0x2dd: 0x8e, 0x2de: 0x90,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x1d, 0x325: 0x1e, 0x326: 0x1f, 0x327: 0x20,\n\t0x328: 0x21, 0x329: 0x22, 0x32a: 0x23, 0x32b: 0x24, 0x32c: 0x91, 0x32d: 0x92, 0x32e: 0x93,\n\t0x331: 0x94, 0x332: 0x95, 0x333: 0x96, 0x334: 0x97,\n\t0x338: 0x98, 0x339: 0x99, 0x33a: 0x9a, 0x33b: 0x9b, 0x33e: 0x9c, 0x33f: 0x9d,\n\t// Block 0xd, offset 0x340\n\t0x347: 0x9e,\n\t0x34b: 0x9f, 0x34d: 0xa0,\n\t0x357: 0xa1,\n\t0x368: 0xa2, 0x36b: 0xa3,\n\t0x374: 0xa4, 0x375: 0xa5,\n\t0x37a: 0xa6, 0x37b: 0xa7, 0x37d: 0xa8, 0x37e: 0xa9,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xaa, 0x382: 0xab, 0x384: 0xac, 0x385: 0x84, 0x387: 0xad,\n\t0x388: 0xae, 0x38b: 0xaf, 0x38c: 0xb0, 0x38d: 0xb1, 0x38e: 0xb2, 0x38f: 0xb3,\n\t0x391: 0xb4, 0x392: 0xb5, 0x393: 0xb6, 0x396: 0xb7, 0x397: 0xb8,\n\t0x398: 0x75, 0x39a: 0xb9, 0x39c: 0xba,\n\t0x3a0: 0xbb, 0x3a4: 0xbc, 0x3a5: 0xbd, 0x3a7: 0xbe,\n\t0x3a8: 0xbf, 0x3a9: 0xc0, 0x3aa: 0xc1,\n\t0x3b0: 0x75, 0x3b5: 0xc2, 0x3b6: 0xc3,\n\t0x3bd: 0xc4,\n\t// Block 0xf, offset 0x3c0\n\t0x3c4: 0xc5,\n\t0x3eb: 0xc6, 0x3ec: 0xc7,\n\t0x3f5: 0xc8,\n\t0x3ff: 0xc9,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xca,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xcb, 0x446: 0xcc, 0x447: 0xcd,\n\t0x449: 0xce,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xcf, 0x482: 0xd0, 0x484: 0xc7,\n\t0x48a: 0xd1, 0x48b: 0xd2,\n\t0x493: 0xd3, 0x497: 0xd4,\n\t0x49b: 0xd5,\n\t0x4a3: 0xd6, 0x4a5: 0xd7,\n\t// Block 0x13, offset 0x4c0\n\t0x4c8: 0xd8,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x25, 0x521: 0x26, 0x522: 0x27, 0x523: 0x28, 0x524: 0x29, 0x525: 0x2a, 0x526: 0x2b, 0x527: 0x2c,\n\t0x528: 0x2d,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfcSparseOffset: 171 entries, 342 bytes\nvar nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x63, 0x68, 0x6a, 0x6e, 0x76, 0x7d, 0x80, 0x88, 0x8c, 0x90, 0x92, 0x94, 0x9d, 0xa1, 0xa8, 0xad, 0xb0, 0xba, 0xbd, 0xc4, 0xcc, 0xcf, 0xd1, 0xd4, 0xd6, 0xdb, 0xec, 0xf8, 0xfa, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10a, 0x10c, 0x10f, 0x112, 0x114, 0x117, 0x11a, 0x11e, 0x124, 0x130, 0x139, 0x13b, 0x13e, 0x140, 0x14b, 0x14f, 0x15d, 0x160, 0x166, 0x16c, 0x177, 0x17b, 0x17d, 0x17f, 0x181, 0x183, 0x185, 0x18b, 0x18f, 0x191, 0x193, 0x19b, 0x19f, 0x1a2, 0x1a4, 0x1a6, 0x1a9, 0x1ac, 0x1ae, 0x1b0, 0x1b2, 0x1b4, 0x1ba, 0x1bd, 0x1bf, 0x1c6, 0x1cc, 0x1d2, 0x1da, 0x1e0, 0x1e6, 0x1ec, 0x1f0, 0x1fe, 0x207, 0x20a, 0x20d, 0x20f, 0x212, 0x214, 0x218, 0x21d, 0x21f, 0x221, 0x226, 0x22c, 0x22e, 0x230, 0x232, 0x237, 0x23d, 0x240, 0x242, 0x244, 0x246, 0x249, 0x24f, 0x253, 0x257, 0x25f, 0x266, 0x269, 0x26c, 0x26e, 0x271, 0x279, 0x283, 0x28a, 0x28e, 0x295, 0x298, 0x29e, 0x2a0, 0x2a3, 0x2a5, 0x2a8, 0x2ad, 0x2af, 0x2b1, 0x2b3, 0x2b5, 0x2b7, 0x2ba, 0x2bc, 0x2be, 0x2cb, 0x2cd, 0x2cf, 0x2d5, 0x2d7, 0x2d9, 0x2e6, 0x2f0, 0x2f2, 0x2f4, 0x2fa, 0x2fc, 0x2fe, 0x300, 0x304, 0x307, 0x30c, 0x30e, 0x311}\n\n// nfcSparseValues: 787 entries, 3148 bytes\nvar nfcSparseValues = [787]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0xa100, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8100, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb8, hi: 0xb8},\n\t// Block 0x1, offset 0x5\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x4859, lo: 0xa0, hi: 0xa1},\n\t{value: 0x488b, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t// Block 0x3, offset 0xb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x98, hi: 0x9d},\n\t// Block 0x4, offset 0xd\n\t{value: 0x0006, lo: 0x0a},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x85, hi: 0x85},\n\t{value: 0xa000, lo: 0x89, hi: 0x89},\n\t{value: 0x49b7, lo: 0x8a, hi: 0x8a},\n\t{value: 0x49d5, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3626, lo: 0x8c, hi: 0x8c},\n\t{value: 0x363e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x49ed, lo: 0x8e, hi: 0x8e},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x365c, lo: 0x93, hi: 0x94},\n\t// Block 0x5, offset 0x18\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x3704, lo: 0x90, hi: 0x90},\n\t{value: 0x3710, lo: 0x91, hi: 0x91},\n\t{value: 0x36fe, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3776, lo: 0x97, hi: 0x97},\n\t{value: 0x3740, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3728, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3752, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x377c, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3782, lo: 0xb7, hi: 0xb7},\n\t// Block 0x6, offset 0x28\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x83, hi: 0x87},\n\t// Block 0x7, offset 0x2a\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8114, lo: 0x81, hi: 0x82},\n\t{value: 0x8133, lo: 0x84, hi: 0x84},\n\t{value: 0x812e, lo: 0x85, hi: 0x85},\n\t{value: 0x810e, lo: 0x87, hi: 0x87},\n\t// Block 0x8, offset 0x2f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x97},\n\t{value: 0x811a, lo: 0x98, hi: 0x98},\n\t{value: 0x811b, lo: 0x99, hi: 0x99},\n\t{value: 0x811c, lo: 0x9a, hi: 0x9a},\n\t{value: 0x37a0, lo: 0xa2, hi: 0xa2},\n\t{value: 0x37a6, lo: 0xa3, hi: 0xa3},\n\t{value: 0x37b2, lo: 0xa4, hi: 0xa4},\n\t{value: 0x37ac, lo: 0xa5, hi: 0xa5},\n\t{value: 0x37b8, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x9, offset 0x3a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x37ca, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x37be, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x37c4, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8133, lo: 0x96, hi: 0x9c},\n\t{value: 0x8133, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812e, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812e, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t// Block 0xa, offset 0x49\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x8120, lo: 0x91, hi: 0x91},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812e, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8133, lo: 0xba, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8133, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8133, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb, offset 0x56\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8133, lo: 0x80, hi: 0x80},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x812e, lo: 0x82, hi: 0x83},\n\t{value: 0x812e, lo: 0x84, hi: 0x85},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x812e, lo: 0x88, hi: 0x89},\n\t{value: 0x8133, lo: 0x8a, hi: 0x8a},\n\t// Block 0xc, offset 0x5e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0xab, hi: 0xb1},\n\t{value: 0x812e, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8133, lo: 0xb3, hi: 0xb3},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0xd, offset 0x63\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0x96, hi: 0x99},\n\t{value: 0x8133, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8133, lo: 0xa9, hi: 0xad},\n\t// Block 0xe, offset 0x68\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x99, hi: 0x9b},\n\t// Block 0xf, offset 0x6a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8133, lo: 0x97, hi: 0x98},\n\t{value: 0x812e, lo: 0x99, hi: 0x9b},\n\t{value: 0x8133, lo: 0x9c, hi: 0x9f},\n\t// Block 0x10, offset 0x6e\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3e37, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3e3f, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3e47, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9903, lo: 0xbc, hi: 0xbc},\n\t// Block 0x11, offset 0x76\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x91, hi: 0x91},\n\t{value: 0x812e, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x93, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x94},\n\t{value: 0x461b, lo: 0x98, hi: 0x9f},\n\t// Block 0x12, offset 0x7d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x13, offset 0x80\n\t{value: 0x0008, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x3e4f, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x465b, lo: 0x9c, hi: 0x9d},\n\t{value: 0x466b, lo: 0x9f, hi: 0x9f},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbe},\n\t// Block 0x14, offset 0x88\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4693, lo: 0xb3, hi: 0xb3},\n\t{value: 0x469b, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x15, offset 0x8c\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4673, lo: 0x99, hi: 0x9b},\n\t{value: 0x468b, lo: 0x9e, hi: 0x9e},\n\t// Block 0x16, offset 0x90\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x17, offset 0x92\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t// Block 0x18, offset 0x94\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x3e67, lo: 0x88, hi: 0x88},\n\t{value: 0x3e5f, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3e6f, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x46a3, lo: 0x9c, hi: 0x9c},\n\t{value: 0x46ab, lo: 0x9d, hi: 0x9d},\n\t// Block 0x19, offset 0x9d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3e77, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1a, offset 0xa1\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x3e7f, lo: 0x8a, hi: 0x8a},\n\t{value: 0x3e8f, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3e87, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1b, offset 0xa8\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3e97, lo: 0x88, hi: 0x88},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8121, lo: 0x95, hi: 0x96},\n\t// Block 0x1c, offset 0xad\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1d, offset 0xb0\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3e9f, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ea7, lo: 0x87, hi: 0x87},\n\t{value: 0x3eaf, lo: 0x88, hi: 0x88},\n\t{value: 0x4b25, lo: 0x8a, hi: 0x8a},\n\t{value: 0x4331, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1e, offset 0xba\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1f, offset 0xbd\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x3eb7, lo: 0x8a, hi: 0x8a},\n\t{value: 0x3ec7, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3ebf, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x20, offset 0xc4\n\t{value: 0x5a29, lo: 0x07},\n\t{value: 0x9905, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3ecf, lo: 0x9a, hi: 0x9a},\n\t{value: 0x4b2d, lo: 0x9c, hi: 0x9c},\n\t{value: 0x433c, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3ed7, lo: 0x9e, hi: 0x9f},\n\t// Block 0x21, offset 0xcc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8123, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x22, offset 0xcf\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8124, lo: 0x88, hi: 0x8b},\n\t// Block 0x23, offset 0xd1\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8125, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x24, offset 0xd4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8126, lo: 0x88, hi: 0x8b},\n\t// Block 0x25, offset 0xd6\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x812e, lo: 0x98, hi: 0x99},\n\t{value: 0x812e, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812c, lo: 0xb9, hi: 0xb9},\n\t// Block 0x26, offset 0xdb\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2774, lo: 0x83, hi: 0x83},\n\t{value: 0x277b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2782, lo: 0x92, hi: 0x92},\n\t{value: 0x2789, lo: 0x97, hi: 0x97},\n\t{value: 0x2790, lo: 0x9c, hi: 0x9c},\n\t{value: 0x276d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8127, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8128, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4ca5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8129, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4cae, lo: 0xb5, hi: 0xb5},\n\t{value: 0x46b3, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8200, lo: 0xb7, hi: 0xb7},\n\t{value: 0x46bb, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8200, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8128, lo: 0xba, hi: 0xbd},\n\t// Block 0x27, offset 0xec\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8128, lo: 0x80, hi: 0x80},\n\t{value: 0x4cb7, lo: 0x81, hi: 0x81},\n\t{value: 0x8133, lo: 0x82, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0x86, hi: 0x87},\n\t{value: 0x279e, lo: 0x93, hi: 0x93},\n\t{value: 0x27a5, lo: 0x9d, hi: 0x9d},\n\t{value: 0x27ac, lo: 0xa2, hi: 0xa2},\n\t{value: 0x27b3, lo: 0xa7, hi: 0xa7},\n\t{value: 0x27ba, lo: 0xac, hi: 0xac},\n\t{value: 0x2797, lo: 0xb9, hi: 0xb9},\n\t// Block 0x28, offset 0xf8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x86, hi: 0x86},\n\t// Block 0x29, offset 0xfa\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3edf, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x2a, offset 0x100\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2b, offset 0x102\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2c, offset 0x104\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2d, offset 0x106\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2e, offset 0x108\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2f, offset 0x10a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9f},\n\t// Block 0x30, offset 0x10c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x94, hi: 0x95},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x31, offset 0x10f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9d},\n\t// Block 0x32, offset 0x112\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t// Block 0x33, offset 0x114\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812f, lo: 0xb9, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbb},\n\t// Block 0x34, offset 0x117\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x97, hi: 0x97},\n\t{value: 0x812e, lo: 0x98, hi: 0x98},\n\t// Block 0x35, offset 0x11a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8133, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x11e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812e, lo: 0xb5, hi: 0xba},\n\t{value: 0x8133, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x37, offset 0x124\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x812e, lo: 0x80, hi: 0x80},\n\t{value: 0x8133, lo: 0x81, hi: 0x82},\n\t{value: 0x812e, lo: 0x83, hi: 0x84},\n\t{value: 0x8133, lo: 0x85, hi: 0x89},\n\t{value: 0x812e, lo: 0x8a, hi: 0x8a},\n\t{value: 0x8133, lo: 0x8b, hi: 0x9c},\n\t{value: 0x812e, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8133, lo: 0xa0, hi: 0xa5},\n\t{value: 0x812e, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8133, lo: 0xa7, hi: 0xaa},\n\t{value: 0x8136, lo: 0xab, hi: 0xab},\n\t// Block 0x38, offset 0x130\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3f27, lo: 0x80, hi: 0x80},\n\t{value: 0x3f2f, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x3f37, lo: 0x83, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xab, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xac},\n\t{value: 0x8133, lo: 0xad, hi: 0xb3},\n\t// Block 0x39, offset 0x139\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xaa, hi: 0xab},\n\t// Block 0x3a, offset 0x13b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8105, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3b, offset 0x13e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3c, offset 0x140\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812e, lo: 0x95, hi: 0x99},\n\t{value: 0x8133, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812e, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8133, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x8133, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3d, offset 0x14b\n\t{value: 0x0004, lo: 0x03},\n\t{value: 0x052a, lo: 0x80, hi: 0x81},\n\t{value: 0x8100, lo: 0x97, hi: 0x97},\n\t{value: 0x8100, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3e, offset 0x14f\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8133, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8133, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8133, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812e, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8133, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t// Block 0x3f, offset 0x15d\n\t{value: 0x437a, lo: 0x02},\n\t{value: 0x023c, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0057, lo: 0xaa, hi: 0xab},\n\t// Block 0x40, offset 0x160\n\t{value: 0x0007, lo: 0x05},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3b18, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3b26, lo: 0xae, hi: 0xae},\n\t// Block 0x41, offset 0x166\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3b2d, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3b34, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x42, offset 0x16c\n\t{value: 0x64a9, lo: 0x0a},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3b42, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3b49, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3b50, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3b57, lo: 0xa4, hi: 0xa5},\n\t{value: 0x3b5e, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x43, offset 0x177\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3bc7, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3bf1, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3c1b, lo: 0xaa, hi: 0xad},\n\t// Block 0x44, offset 0x17b\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x0586, lo: 0xa9, hi: 0xaa},\n\t// Block 0x45, offset 0x17d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x45dc, lo: 0x9c, hi: 0x9c},\n\t// Block 0x46, offset 0x17f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xaf, hi: 0xb1},\n\t// Block 0x47, offset 0x181\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x48, offset 0x183\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa0, hi: 0xbf},\n\t// Block 0x49, offset 0x185\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x8134, lo: 0xac, hi: 0xac},\n\t{value: 0x812f, lo: 0xad, hi: 0xad},\n\t{value: 0x8130, lo: 0xae, hi: 0xaf},\n\t// Block 0x4a, offset 0x18b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4cc0, lo: 0xb3, hi: 0xb3},\n\t{value: 0x4cc0, lo: 0xb5, hi: 0xb6},\n\t{value: 0x4cc0, lo: 0xba, hi: 0xbf},\n\t// Block 0x4b, offset 0x18f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x4cc0, lo: 0x8f, hi: 0xa3},\n\t// Block 0x4c, offset 0x191\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xae, hi: 0xbe},\n\t// Block 0x4d, offset 0x193\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x8100, lo: 0x84, hi: 0x84},\n\t{value: 0x8100, lo: 0x87, hi: 0x87},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t{value: 0x8100, lo: 0x9e, hi: 0x9e},\n\t{value: 0x8100, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8100, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8100, lo: 0xbb, hi: 0xbb},\n\t// Block 0x4e, offset 0x19b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8100, lo: 0x80, hi: 0x80},\n\t{value: 0x8100, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8100, lo: 0x8e, hi: 0x8e},\n\t// Block 0x4f, offset 0x19f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb4, hi: 0xbd},\n\t// Block 0x50, offset 0x1a2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9f},\n\t// Block 0x51, offset 0x1a4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb1},\n\t// Block 0x52, offset 0x1a6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xac, hi: 0xac},\n\t// Block 0x53, offset 0x1a9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xa0, hi: 0xb1},\n\t// Block 0x54, offset 0x1ac\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xab, hi: 0xad},\n\t// Block 0x55, offset 0x1ae\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x93, hi: 0x93},\n\t// Block 0x56, offset 0x1b0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb3, hi: 0xb3},\n\t// Block 0x57, offset 0x1b2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t// Block 0x58, offset 0x1b4\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbf},\n\t// Block 0x59, offset 0x1ba\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t// Block 0x5a, offset 0x1bd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xad, hi: 0xad},\n\t// Block 0x5b, offset 0x1bf\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x5c, offset 0x1c6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x5d, offset 0x1cc\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x5e, offset 0x1d2\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x5f, offset 0x1da\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x60, offset 0x1e0\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x61, offset 0x1e6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x62, offset 0x1ec\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x63, offset 0x1f0\n\t{value: 0x0006, lo: 0x0d},\n\t{value: 0x448f, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8116, lo: 0x9e, hi: 0x9e},\n\t{value: 0x4501, lo: 0x9f, hi: 0x9f},\n\t{value: 0x44ef, lo: 0xaa, hi: 0xab},\n\t{value: 0x45f3, lo: 0xac, hi: 0xac},\n\t{value: 0x45fb, lo: 0xad, hi: 0xad},\n\t{value: 0x4447, lo: 0xae, hi: 0xb1},\n\t{value: 0x4465, lo: 0xb2, hi: 0xb4},\n\t{value: 0x447d, lo: 0xb5, hi: 0xb6},\n\t{value: 0x4489, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4495, lo: 0xb9, hi: 0xbb},\n\t{value: 0x44ad, lo: 0xbc, hi: 0xbc},\n\t{value: 0x44b3, lo: 0xbe, hi: 0xbe},\n\t// Block 0x64, offset 0x1fe\n\t{value: 0x0006, lo: 0x08},\n\t{value: 0x44b9, lo: 0x80, hi: 0x81},\n\t{value: 0x44c5, lo: 0x83, hi: 0x84},\n\t{value: 0x44d7, lo: 0x86, hi: 0x89},\n\t{value: 0x44fb, lo: 0x8a, hi: 0x8a},\n\t{value: 0x4477, lo: 0x8b, hi: 0x8b},\n\t{value: 0x445f, lo: 0x8c, hi: 0x8c},\n\t{value: 0x44a7, lo: 0x8d, hi: 0x8d},\n\t{value: 0x44d1, lo: 0x8e, hi: 0x8e},\n\t// Block 0x65, offset 0x207\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0xa4, hi: 0xa5},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb1},\n\t// Block 0x66, offset 0x20a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x9b, hi: 0x9d},\n\t{value: 0x8200, lo: 0x9e, hi: 0xa3},\n\t// Block 0x67, offset 0x20d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t// Block 0x68, offset 0x20f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x99, hi: 0x99},\n\t{value: 0x8200, lo: 0xb2, hi: 0xb4},\n\t// Block 0x69, offset 0x212\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xbc, hi: 0xbd},\n\t// Block 0x6a, offset 0x214\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8133, lo: 0xa0, hi: 0xa6},\n\t{value: 0x812e, lo: 0xa7, hi: 0xad},\n\t{value: 0x8133, lo: 0xae, hi: 0xaf},\n\t// Block 0x6b, offset 0x218\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8100, lo: 0x89, hi: 0x8c},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb2},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb6, hi: 0xbf},\n\t// Block 0x6c, offset 0x21d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x81, hi: 0x8c},\n\t// Block 0x6d, offset 0x21f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xb5, hi: 0xba},\n\t// Block 0x6e, offset 0x221\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x4cc0, lo: 0x9e, hi: 0x9f},\n\t{value: 0x4cc0, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4cc0, lo: 0xa5, hi: 0xa6},\n\t{value: 0x4cc0, lo: 0xaa, hi: 0xaf},\n\t// Block 0x6f, offset 0x226\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x4cc0, lo: 0x82, hi: 0x87},\n\t{value: 0x4cc0, lo: 0x8a, hi: 0x8f},\n\t{value: 0x4cc0, lo: 0x92, hi: 0x97},\n\t{value: 0x4cc0, lo: 0x9a, hi: 0x9c},\n\t{value: 0x8100, lo: 0xa3, hi: 0xa3},\n\t// Block 0x70, offset 0x22c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0x71, offset 0x22e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xa0, hi: 0xa0},\n\t// Block 0x72, offset 0x230\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb6, hi: 0xba},\n\t// Block 0x73, offset 0x232\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x410f, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x9a, hi: 0x9a},\n\t{value: 0x4117, lo: 0xa4, hi: 0xa4},\n\t// Block 0x74, offset 0x237\n\t{value: 0x002d, lo: 0x05},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x75, offset 0x23d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812e, lo: 0xa6, hi: 0xa6},\n\t// Block 0x76, offset 0x240\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa7},\n\t// Block 0x77, offset 0x242\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa9, hi: 0xad},\n\t// Block 0x78, offset 0x244\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t// Block 0x79, offset 0x246\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x812e, lo: 0xba, hi: 0xbb},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbf},\n\t// Block 0x7a, offset 0x249\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x8133, lo: 0x88, hi: 0x8a},\n\t{value: 0x812e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8133, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812e, lo: 0x8d, hi: 0x90},\n\t// Block 0x7b, offset 0x24f\n\t{value: 0x0005, lo: 0x03},\n\t{value: 0x8133, lo: 0x82, hi: 0x82},\n\t{value: 0x812e, lo: 0x83, hi: 0x84},\n\t{value: 0x812e, lo: 0x85, hi: 0x85},\n\t// Block 0x7c, offset 0x253\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7d, offset 0x257\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4287, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4291, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x429b, lo: 0xab, hi: 0xab},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x7e, offset 0x25f\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8133, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x42a5, lo: 0xae, hi: 0xae},\n\t{value: 0x42af, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8105, lo: 0xb3, hi: 0xb4},\n\t// Block 0x7f, offset 0x266\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0x80, offset 0x269\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8103, lo: 0xb6, hi: 0xb6},\n\t// Block 0x81, offset 0x26c\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8103, lo: 0xa9, hi: 0xaa},\n\t// Block 0x82, offset 0x26e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x83, offset 0x271\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x42b9, lo: 0x8b, hi: 0x8b},\n\t{value: 0x42c3, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8133, lo: 0xa6, hi: 0xac},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t// Block 0x84, offset 0x279\n\t{value: 0x5d33, lo: 0x09},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x42cd, lo: 0x83, hi: 0x84},\n\t{value: 0x42d7, lo: 0x85, hi: 0x85},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x42e1, lo: 0x8e, hi: 0x8e},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0x42eb, lo: 0x91, hi: 0x91},\n\t{value: 0x9900, lo: 0xb8, hi: 0xb8},\n\t{value: 0x9900, lo: 0xbb, hi: 0xbb},\n\t// Block 0x85, offset 0x283\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xb900, lo: 0x82, hi: 0x82},\n\t{value: 0x4c14, lo: 0x85, hi: 0x85},\n\t{value: 0x4c09, lo: 0x87, hi: 0x87},\n\t{value: 0x4c1f, lo: 0x88, hi: 0x88},\n\t{value: 0x9900, lo: 0x89, hi: 0x89},\n\t{value: 0x8105, lo: 0x8e, hi: 0x90},\n\t// Block 0x86, offset 0x28a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x86, hi: 0x86},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9e},\n\t// Block 0x87, offset 0x28e\n\t{value: 0x560b, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x42ff, lo: 0xbb, hi: 0xbb},\n\t{value: 0x42f5, lo: 0xbc, hi: 0xbd},\n\t{value: 0x4309, lo: 0xbe, hi: 0xbe},\n\t// Block 0x88, offset 0x295\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x89, offset 0x298\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x4313, lo: 0xba, hi: 0xba},\n\t{value: 0x431d, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x8a, offset 0x29e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x80, hi: 0x80},\n\t// Block 0x8b, offset 0x2a0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x8c, offset 0x2a3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xab, hi: 0xab},\n\t// Block 0x8d, offset 0x2a5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8103, lo: 0xba, hi: 0xba},\n\t// Block 0x8e, offset 0x2a8\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb5, hi: 0xb5},\n\t{value: 0x4327, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8105, lo: 0xbd, hi: 0xbe},\n\t// Block 0x8f, offset 0x2ad\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x90, offset 0x2af\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t// Block 0x91, offset 0x2b1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x92, offset 0x2b3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x87, hi: 0x87},\n\t// Block 0x93, offset 0x2b5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x99, hi: 0x99},\n\t// Block 0x94, offset 0x2b7\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0x82, hi: 0x82},\n\t{value: 0x8105, lo: 0x84, hi: 0x85},\n\t// Block 0x95, offset 0x2ba\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x97, hi: 0x97},\n\t// Block 0x96, offset 0x2bc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x81, hi: 0x82},\n\t// Block 0x97, offset 0x2be\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0xb900, lo: 0x9e, hi: 0x9e},\n\t{value: 0x9900, lo: 0x9f, hi: 0xa0},\n\t{value: 0x4c83, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4c8e, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4c2a, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4c40, lo: 0xa4, hi: 0xa4},\n\t{value: 0x4c35, lo: 0xa5, hi: 0xa5},\n\t{value: 0x4c56, lo: 0xa6, hi: 0xa6},\n\t{value: 0x4c74, lo: 0xa7, hi: 0xa7},\n\t{value: 0x4c65, lo: 0xa8, hi: 0xa8},\n\t{value: 0xb900, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8105, lo: 0xaf, hi: 0xaf},\n\t// Block 0x98, offset 0x2cb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x99, offset 0x2cd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb6},\n\t// Block 0x9a, offset 0x2cf\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0xb900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x4c4b, lo: 0xa8, hi: 0xa8},\n\t{value: 0x4b35, lo: 0xa9, hi: 0xa9},\n\t{value: 0x4347, lo: 0xaa, hi: 0xaa},\n\t// Block 0x9b, offset 0x2d5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb0, hi: 0xb1},\n\t// Block 0x9c, offset 0x2d7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x9d, offset 0x2d9\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x4743, lo: 0x9e, hi: 0x9e},\n\t{value: 0x474d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x4781, lo: 0xa0, hi: 0xa0},\n\t{value: 0x478f, lo: 0xa1, hi: 0xa1},\n\t{value: 0x479d, lo: 0xa2, hi: 0xa2},\n\t{value: 0x47ab, lo: 0xa3, hi: 0xa3},\n\t{value: 0x47b9, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812c, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8131, lo: 0xad, hi: 0xad},\n\t{value: 0x812c, lo: 0xae, hi: 0xb2},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9e, offset 0x2e6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812e, lo: 0x80, hi: 0x82},\n\t{value: 0x8133, lo: 0x85, hi: 0x89},\n\t{value: 0x812e, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8133, lo: 0xaa, hi: 0xad},\n\t{value: 0x4757, lo: 0xbb, hi: 0xbb},\n\t{value: 0x4761, lo: 0xbc, hi: 0xbc},\n\t{value: 0x47c7, lo: 0xbd, hi: 0xbd},\n\t{value: 0x47e3, lo: 0xbe, hi: 0xbe},\n\t{value: 0x47d5, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9f, offset 0x2f0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x47f1, lo: 0x80, hi: 0x80},\n\t// Block 0xa0, offset 0x2f2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x82, hi: 0x84},\n\t// Block 0xa1, offset 0x2f4\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0x80, hi: 0x86},\n\t{value: 0x8133, lo: 0x88, hi: 0x98},\n\t{value: 0x8133, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8133, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8133, lo: 0xa6, hi: 0xaa},\n\t// Block 0xa2, offset 0x2fa\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x8f, hi: 0x8f},\n\t// Block 0xa3, offset 0x2fc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xae, hi: 0xae},\n\t// Block 0xa4, offset 0x2fe\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xac, hi: 0xaf},\n\t// Block 0xa5, offset 0x300\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8134, lo: 0xac, hi: 0xad},\n\t{value: 0x812e, lo: 0xae, hi: 0xae},\n\t{value: 0x8133, lo: 0xaf, hi: 0xaf},\n\t// Block 0xa6, offset 0x304\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xae, hi: 0xae},\n\t{value: 0x812e, lo: 0xaf, hi: 0xaf},\n\t// Block 0xa7, offset 0x307\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8133, lo: 0xae, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb5, hi: 0xb5},\n\t// Block 0xa8, offset 0x30c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x90, hi: 0x96},\n\t// Block 0xa9, offset 0x30e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x84, hi: 0x89},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0xaa, offset 0x311\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x93, hi: 0x93},\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfkcTrie. Total size: 19650 bytes (19.19 KiB). Checksum: 29892d851eed0531.\ntype nfkcTrie struct{}\n\nfunc newNfkcTrie(i int) *nfkcTrie {\n\treturn &nfkcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 95:\n\t\treturn uint16(nfkcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 95\n\t\treturn uint16(nfkcSparse.lookup(n, b))\n\t}\n}\n\n// nfkcValues: 97 blocks, 6208 entries, 12416 bytes\n// The third block is the zero block.\nvar nfkcValues = [6208]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2ece, 0xc1: 0x2ed3, 0xc2: 0x47ff, 0xc3: 0x2ed8, 0xc4: 0x480e, 0xc5: 0x4813,\n\t0xc6: 0xa000, 0xc7: 0x481d, 0xc8: 0x2f41, 0xc9: 0x2f46, 0xca: 0x4822, 0xcb: 0x2f5a,\n\t0xcc: 0x2fcd, 0xcd: 0x2fd2, 0xce: 0x2fd7, 0xcf: 0x4836, 0xd1: 0x3063,\n\t0xd2: 0x3086, 0xd3: 0x308b, 0xd4: 0x4840, 0xd5: 0x4845, 0xd6: 0x4854,\n\t0xd8: 0xa000, 0xd9: 0x3112, 0xda: 0x3117, 0xdb: 0x311c, 0xdc: 0x4886, 0xdd: 0x3194,\n\t0xe0: 0x31da, 0xe1: 0x31df, 0xe2: 0x4890, 0xe3: 0x31e4,\n\t0xe4: 0x489f, 0xe5: 0x48a4, 0xe6: 0xa000, 0xe7: 0x48ae, 0xe8: 0x324d, 0xe9: 0x3252,\n\t0xea: 0x48b3, 0xeb: 0x3266, 0xec: 0x32de, 0xed: 0x32e3, 0xee: 0x32e8, 0xef: 0x48c7,\n\t0xf1: 0x3374, 0xf2: 0x3397, 0xf3: 0x339c, 0xf4: 0x48d1, 0xf5: 0x48d6,\n\t0xf6: 0x48e5, 0xf8: 0xa000, 0xf9: 0x3428, 0xfa: 0x342d, 0xfb: 0x3432,\n\t0xfc: 0x4917, 0xfd: 0x34af, 0xff: 0x34c8,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2edd, 0x101: 0x31e9, 0x102: 0x4804, 0x103: 0x4895, 0x104: 0x2efb, 0x105: 0x3207,\n\t0x106: 0x2f0f, 0x107: 0x321b, 0x108: 0x2f14, 0x109: 0x3220, 0x10a: 0x2f19, 0x10b: 0x3225,\n\t0x10c: 0x2f1e, 0x10d: 0x322a, 0x10e: 0x2f28, 0x10f: 0x3234,\n\t0x112: 0x4827, 0x113: 0x48b8, 0x114: 0x2f50, 0x115: 0x325c, 0x116: 0x2f55, 0x117: 0x3261,\n\t0x118: 0x2f73, 0x119: 0x327f, 0x11a: 0x2f64, 0x11b: 0x3270, 0x11c: 0x2f8c, 0x11d: 0x3298,\n\t0x11e: 0x2f96, 0x11f: 0x32a2, 0x120: 0x2f9b, 0x121: 0x32a7, 0x122: 0x2fa5, 0x123: 0x32b1,\n\t0x124: 0x2faa, 0x125: 0x32b6, 0x128: 0x2fdc, 0x129: 0x32ed,\n\t0x12a: 0x2fe1, 0x12b: 0x32f2, 0x12c: 0x2fe6, 0x12d: 0x32f7, 0x12e: 0x3009, 0x12f: 0x3315,\n\t0x130: 0x2feb, 0x132: 0x1a8a, 0x133: 0x1b17, 0x134: 0x3013, 0x135: 0x331f,\n\t0x136: 0x3027, 0x137: 0x3338, 0x139: 0x3031, 0x13a: 0x3342, 0x13b: 0x303b,\n\t0x13c: 0x334c, 0x13d: 0x3036, 0x13e: 0x3347, 0x13f: 0x1cdc,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x1d64, 0x143: 0x305e, 0x144: 0x336f, 0x145: 0x3077,\n\t0x146: 0x3388, 0x147: 0x306d, 0x148: 0x337e, 0x149: 0x1d8c,\n\t0x14c: 0x484a, 0x14d: 0x48db, 0x14e: 0x3090, 0x14f: 0x33a1, 0x150: 0x309a, 0x151: 0x33ab,\n\t0x154: 0x30b8, 0x155: 0x33c9, 0x156: 0x30d1, 0x157: 0x33e2,\n\t0x158: 0x30c2, 0x159: 0x33d3, 0x15a: 0x486d, 0x15b: 0x48fe, 0x15c: 0x30db, 0x15d: 0x33ec,\n\t0x15e: 0x30ea, 0x15f: 0x33fb, 0x160: 0x4872, 0x161: 0x4903, 0x162: 0x3103, 0x163: 0x3419,\n\t0x164: 0x30f4, 0x165: 0x340a, 0x168: 0x487c, 0x169: 0x490d,\n\t0x16a: 0x4881, 0x16b: 0x4912, 0x16c: 0x3121, 0x16d: 0x3437, 0x16e: 0x312b, 0x16f: 0x3441,\n\t0x170: 0x3130, 0x171: 0x3446, 0x172: 0x314e, 0x173: 0x3464, 0x174: 0x3171, 0x175: 0x3487,\n\t0x176: 0x3199, 0x177: 0x34b4, 0x178: 0x31ad, 0x179: 0x31bc, 0x17a: 0x34dc, 0x17b: 0x31c6,\n\t0x17c: 0x34e6, 0x17d: 0x31cb, 0x17e: 0x34eb, 0x17f: 0x00a7,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x2dd5, 0x185: 0x2ddb,\n\t0x186: 0x2de1, 0x187: 0x1a9f, 0x188: 0x1aa2, 0x189: 0x1b38, 0x18a: 0x1ab7, 0x18b: 0x1aba,\n\t0x18c: 0x1b6e, 0x18d: 0x2ee7, 0x18e: 0x31f3, 0x18f: 0x2ff5, 0x190: 0x3301, 0x191: 0x309f,\n\t0x192: 0x33b0, 0x193: 0x3135, 0x194: 0x344b, 0x195: 0x392e, 0x196: 0x3abd, 0x197: 0x3927,\n\t0x198: 0x3ab6, 0x199: 0x3935, 0x19a: 0x3ac4, 0x19b: 0x3920, 0x19c: 0x3aaf,\n\t0x19e: 0x380f, 0x19f: 0x399e, 0x1a0: 0x3808, 0x1a1: 0x3997, 0x1a2: 0x3512, 0x1a3: 0x3524,\n\t0x1a6: 0x2fa0, 0x1a7: 0x32ac, 0x1a8: 0x301d, 0x1a9: 0x332e,\n\t0x1aa: 0x4863, 0x1ab: 0x48f4, 0x1ac: 0x38ef, 0x1ad: 0x3a7e, 0x1ae: 0x3536, 0x1af: 0x353c,\n\t0x1b0: 0x3324, 0x1b1: 0x1a6f, 0x1b2: 0x1a72, 0x1b3: 0x1aff, 0x1b4: 0x2f87, 0x1b5: 0x3293,\n\t0x1b8: 0x3059, 0x1b9: 0x336a, 0x1ba: 0x3816, 0x1bb: 0x39a5,\n\t0x1bc: 0x350c, 0x1bd: 0x351e, 0x1be: 0x3518, 0x1bf: 0x352a,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2eec, 0x1c1: 0x31f8, 0x1c2: 0x2ef1, 0x1c3: 0x31fd, 0x1c4: 0x2f69, 0x1c5: 0x3275,\n\t0x1c6: 0x2f6e, 0x1c7: 0x327a, 0x1c8: 0x2ffa, 0x1c9: 0x3306, 0x1ca: 0x2fff, 0x1cb: 0x330b,\n\t0x1cc: 0x30a4, 0x1cd: 0x33b5, 0x1ce: 0x30a9, 0x1cf: 0x33ba, 0x1d0: 0x30c7, 0x1d1: 0x33d8,\n\t0x1d2: 0x30cc, 0x1d3: 0x33dd, 0x1d4: 0x313a, 0x1d5: 0x3450, 0x1d6: 0x313f, 0x1d7: 0x3455,\n\t0x1d8: 0x30e5, 0x1d9: 0x33f6, 0x1da: 0x30fe, 0x1db: 0x3414,\n\t0x1de: 0x2fb9, 0x1df: 0x32c5,\n\t0x1e6: 0x4809, 0x1e7: 0x489a, 0x1e8: 0x4831, 0x1e9: 0x48c2,\n\t0x1ea: 0x38be, 0x1eb: 0x3a4d, 0x1ec: 0x389b, 0x1ed: 0x3a2a, 0x1ee: 0x484f, 0x1ef: 0x48e0,\n\t0x1f0: 0x38b7, 0x1f1: 0x3a46, 0x1f2: 0x31a3, 0x1f3: 0x34be,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133,\n\t0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933,\n\t0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933,\n\t0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e,\n\t0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e,\n\t0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e,\n\t0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e,\n\t0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e,\n\t0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e,\n\t0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x4b3f, 0x241: 0x4b44, 0x242: 0x9933, 0x243: 0x4b49, 0x244: 0x4c02, 0x245: 0x9937,\n\t0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133,\n\t0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133,\n\t0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133,\n\t0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136,\n\t0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133,\n\t0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133,\n\t0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133,\n\t0x274: 0x01ee,\n\t0x27a: 0x43a4,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x4359, 0x285: 0x457a,\n\t0x286: 0x3548, 0x287: 0x00ce, 0x288: 0x3566, 0x289: 0x3572, 0x28a: 0x3584,\n\t0x28c: 0x35a2, 0x28e: 0x35b4, 0x28f: 0x35d2, 0x290: 0x3d67, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3596, 0x2ab: 0x35c6, 0x2ac: 0x4975, 0x2ad: 0x35f6, 0x2ae: 0x499f, 0x2af: 0x3608,\n\t0x2b0: 0x3dcf, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c1: 0xa000, 0x2c5: 0xa000,\n\t0x2c9: 0xa000, 0x2ca: 0x49b7, 0x2cb: 0x49d5,\n\t0x2cc: 0x3626, 0x2cd: 0x363e, 0x2ce: 0x49ed, 0x2d0: 0x0242, 0x2d1: 0x0254,\n\t0x2d2: 0x0230, 0x2d3: 0x440b, 0x2d4: 0x4411, 0x2d5: 0x027e, 0x2d6: 0x026c,\n\t0x2f0: 0x025a, 0x2f1: 0x026f, 0x2f2: 0x0272, 0x2f4: 0x020c, 0x2f5: 0x024b,\n\t0x2f9: 0x022a,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x3680, 0x301: 0x368c, 0x303: 0x367a,\n\t0x306: 0xa000, 0x307: 0x3668,\n\t0x30c: 0x36bc, 0x30d: 0x36a4, 0x30e: 0x36ce, 0x310: 0xa000,\n\t0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000,\n\t0x318: 0xa000, 0x319: 0x36b0, 0x31a: 0xa000,\n\t0x31e: 0xa000, 0x323: 0xa000,\n\t0x327: 0xa000,\n\t0x32b: 0xa000, 0x32d: 0xa000,\n\t0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000,\n\t0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x3734, 0x33a: 0xa000,\n\t0x33e: 0xa000,\n\t// Block 0xd, offset 0x340\n\t0x341: 0x3692, 0x342: 0x3716,\n\t0x350: 0x366e, 0x351: 0x36f2,\n\t0x352: 0x3674, 0x353: 0x36f8, 0x356: 0x3686, 0x357: 0x370a,\n\t0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3788, 0x35b: 0x378e, 0x35c: 0x3698, 0x35d: 0x371c,\n\t0x35e: 0x369e, 0x35f: 0x3722, 0x362: 0x36aa, 0x363: 0x372e,\n\t0x364: 0x36b6, 0x365: 0x373a, 0x366: 0x36c2, 0x367: 0x3746, 0x368: 0xa000, 0x369: 0xa000,\n\t0x36a: 0x3794, 0x36b: 0x379a, 0x36c: 0x36ec, 0x36d: 0x3770, 0x36e: 0x36c8, 0x36f: 0x374c,\n\t0x370: 0x36d4, 0x371: 0x3758, 0x372: 0x36da, 0x373: 0x375e, 0x374: 0x36e0, 0x375: 0x3764,\n\t0x378: 0x36e6, 0x379: 0x376a,\n\t// Block 0xe, offset 0x380\n\t0x387: 0x1e91,\n\t0x391: 0x812e,\n\t0x392: 0x8133, 0x393: 0x8133, 0x394: 0x8133, 0x395: 0x8133, 0x396: 0x812e, 0x397: 0x8133,\n\t0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x812f, 0x39b: 0x812e, 0x39c: 0x8133, 0x39d: 0x8133,\n\t0x39e: 0x8133, 0x39f: 0x8133, 0x3a0: 0x8133, 0x3a1: 0x8133, 0x3a2: 0x812e, 0x3a3: 0x812e,\n\t0x3a4: 0x812e, 0x3a5: 0x812e, 0x3a6: 0x812e, 0x3a7: 0x812e, 0x3a8: 0x8133, 0x3a9: 0x8133,\n\t0x3aa: 0x812e, 0x3ab: 0x8133, 0x3ac: 0x8133, 0x3ad: 0x812f, 0x3ae: 0x8132, 0x3af: 0x8133,\n\t0x3b0: 0x8106, 0x3b1: 0x8107, 0x3b2: 0x8108, 0x3b3: 0x8109, 0x3b4: 0x810a, 0x3b5: 0x810b,\n\t0x3b6: 0x810c, 0x3b7: 0x810d, 0x3b8: 0x810e, 0x3b9: 0x810f, 0x3ba: 0x810f, 0x3bb: 0x8110,\n\t0x3bc: 0x8111, 0x3bd: 0x8112, 0x3bf: 0x8113,\n\t// Block 0xf, offset 0x3c0\n\t0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8117,\n\t0x3cc: 0x8118, 0x3cd: 0x8119, 0x3ce: 0x811a, 0x3cf: 0x811b, 0x3d0: 0x811c, 0x3d1: 0x811d,\n\t0x3d2: 0x811e, 0x3d3: 0x9933, 0x3d4: 0x9933, 0x3d5: 0x992e, 0x3d6: 0x812e, 0x3d7: 0x8133,\n\t0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x812e, 0x3dd: 0x8133,\n\t0x3de: 0x8133, 0x3df: 0x812e,\n\t0x3f0: 0x811f, 0x3f5: 0x1eb4,\n\t0x3f6: 0x2143, 0x3f7: 0x217f, 0x3f8: 0x217a,\n\t// Block 0x10, offset 0x400\n\t0x40a: 0x8133, 0x40b: 0x8133,\n\t0x40c: 0x8133, 0x40d: 0x8133, 0x40e: 0x8133, 0x40f: 0x812e, 0x410: 0x812e, 0x411: 0x812e,\n\t0x412: 0x812e, 0x413: 0x812e, 0x414: 0x8133, 0x415: 0x8133, 0x416: 0x8133, 0x417: 0x8133,\n\t0x418: 0x8133, 0x419: 0x8133, 0x41a: 0x8133, 0x41b: 0x8133, 0x41c: 0x8133, 0x41d: 0x8133,\n\t0x41e: 0x8133, 0x41f: 0x8133, 0x420: 0x8133, 0x421: 0x8133, 0x423: 0x812e,\n\t0x424: 0x8133, 0x425: 0x8133, 0x426: 0x812e, 0x427: 0x8133, 0x428: 0x8133, 0x429: 0x812e,\n\t0x42a: 0x8133, 0x42b: 0x8133, 0x42c: 0x8133, 0x42d: 0x812e, 0x42e: 0x812e, 0x42f: 0x812e,\n\t0x430: 0x8117, 0x431: 0x8118, 0x432: 0x8119, 0x433: 0x8133, 0x434: 0x8133, 0x435: 0x8133,\n\t0x436: 0x812e, 0x437: 0x8133, 0x438: 0x8133, 0x439: 0x812e, 0x43a: 0x812e, 0x43b: 0x8133,\n\t0x43c: 0x8133, 0x43d: 0x8133, 0x43e: 0x8133, 0x43f: 0x8133,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xa000,\n\t0x446: 0x3ee7, 0x447: 0xa000, 0x448: 0x3eef, 0x449: 0xa000, 0x44a: 0x3ef7, 0x44b: 0xa000,\n\t0x44c: 0x3eff, 0x44d: 0xa000, 0x44e: 0x3f07, 0x451: 0xa000,\n\t0x452: 0x3f0f,\n\t0x474: 0x8103, 0x475: 0x9900,\n\t0x47a: 0xa000, 0x47b: 0x3f17,\n\t0x47c: 0xa000, 0x47d: 0x3f1f, 0x47e: 0xa000, 0x47f: 0xa000,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0069, 0x481: 0x006b, 0x482: 0x006f, 0x483: 0x0083, 0x484: 0x0104, 0x485: 0x0107,\n\t0x486: 0x0506, 0x487: 0x0085, 0x488: 0x0089, 0x489: 0x008b, 0x48a: 0x011f, 0x48b: 0x0122,\n\t0x48c: 0x0125, 0x48d: 0x008f, 0x48f: 0x0097, 0x490: 0x009b, 0x491: 0x00e6,\n\t0x492: 0x009f, 0x493: 0x0110, 0x494: 0x050a, 0x495: 0x050e, 0x496: 0x00a1, 0x497: 0x00a9,\n\t0x498: 0x00ab, 0x499: 0x0516, 0x49a: 0x015b, 0x49b: 0x00ad, 0x49c: 0x051a, 0x49d: 0x0242,\n\t0x49e: 0x0245, 0x49f: 0x0248, 0x4a0: 0x027e, 0x4a1: 0x0281, 0x4a2: 0x0093, 0x4a3: 0x00a5,\n\t0x4a4: 0x00ab, 0x4a5: 0x00ad, 0x4a6: 0x0242, 0x4a7: 0x0245, 0x4a8: 0x026f, 0x4a9: 0x027e,\n\t0x4aa: 0x0281,\n\t0x4b8: 0x02b4,\n\t// Block 0x13, offset 0x4c0\n\t0x4db: 0x010a, 0x4dc: 0x0087, 0x4dd: 0x0113,\n\t0x4de: 0x00d7, 0x4df: 0x0125, 0x4e0: 0x008d, 0x4e1: 0x012b, 0x4e2: 0x0131, 0x4e3: 0x013d,\n\t0x4e4: 0x0146, 0x4e5: 0x0149, 0x4e6: 0x014c, 0x4e7: 0x051e, 0x4e8: 0x01c7, 0x4e9: 0x0155,\n\t0x4ea: 0x0522, 0x4eb: 0x01ca, 0x4ec: 0x0161, 0x4ed: 0x015e, 0x4ee: 0x0164, 0x4ef: 0x0167,\n\t0x4f0: 0x016a, 0x4f1: 0x016d, 0x4f2: 0x0176, 0x4f3: 0x018e, 0x4f4: 0x0191, 0x4f5: 0x00f2,\n\t0x4f6: 0x019a, 0x4f7: 0x019d, 0x4f8: 0x0512, 0x4f9: 0x01a0, 0x4fa: 0x01a3, 0x4fb: 0x00b5,\n\t0x4fc: 0x01af, 0x4fd: 0x01b2, 0x4fe: 0x01b5, 0x4ff: 0x0254,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x8133, 0x501: 0x8133, 0x502: 0x812e, 0x503: 0x8133, 0x504: 0x8133, 0x505: 0x8133,\n\t0x506: 0x8133, 0x507: 0x8133, 0x508: 0x8133, 0x509: 0x8133, 0x50a: 0x812e, 0x50b: 0x8133,\n\t0x50c: 0x8133, 0x50d: 0x8136, 0x50e: 0x812b, 0x50f: 0x812e, 0x510: 0x812a, 0x511: 0x8133,\n\t0x512: 0x8133, 0x513: 0x8133, 0x514: 0x8133, 0x515: 0x8133, 0x516: 0x8133, 0x517: 0x8133,\n\t0x518: 0x8133, 0x519: 0x8133, 0x51a: 0x8133, 0x51b: 0x8133, 0x51c: 0x8133, 0x51d: 0x8133,\n\t0x51e: 0x8133, 0x51f: 0x8133, 0x520: 0x8133, 0x521: 0x8133, 0x522: 0x8133, 0x523: 0x8133,\n\t0x524: 0x8133, 0x525: 0x8133, 0x526: 0x8133, 0x527: 0x8133, 0x528: 0x8133, 0x529: 0x8133,\n\t0x52a: 0x8133, 0x52b: 0x8133, 0x52c: 0x8133, 0x52d: 0x8133, 0x52e: 0x8133, 0x52f: 0x8133,\n\t0x530: 0x8133, 0x531: 0x8133, 0x532: 0x8133, 0x533: 0x8133, 0x534: 0x8133, 0x535: 0x8133,\n\t0x536: 0x8134, 0x537: 0x8132, 0x538: 0x8132, 0x539: 0x812e, 0x53a: 0x812d, 0x53b: 0x8133,\n\t0x53c: 0x8135, 0x53d: 0x812e, 0x53e: 0x8133, 0x53f: 0x812e,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x2ef6, 0x541: 0x3202, 0x542: 0x2f00, 0x543: 0x320c, 0x544: 0x2f05, 0x545: 0x3211,\n\t0x546: 0x2f0a, 0x547: 0x3216, 0x548: 0x382b, 0x549: 0x39ba, 0x54a: 0x2f23, 0x54b: 0x322f,\n\t0x54c: 0x2f2d, 0x54d: 0x3239, 0x54e: 0x2f3c, 0x54f: 0x3248, 0x550: 0x2f32, 0x551: 0x323e,\n\t0x552: 0x2f37, 0x553: 0x3243, 0x554: 0x384e, 0x555: 0x39dd, 0x556: 0x3855, 0x557: 0x39e4,\n\t0x558: 0x2f78, 0x559: 0x3284, 0x55a: 0x2f7d, 0x55b: 0x3289, 0x55c: 0x3863, 0x55d: 0x39f2,\n\t0x55e: 0x2f82, 0x55f: 0x328e, 0x560: 0x2f91, 0x561: 0x329d, 0x562: 0x2faf, 0x563: 0x32bb,\n\t0x564: 0x2fbe, 0x565: 0x32ca, 0x566: 0x2fb4, 0x567: 0x32c0, 0x568: 0x2fc3, 0x569: 0x32cf,\n\t0x56a: 0x2fc8, 0x56b: 0x32d4, 0x56c: 0x300e, 0x56d: 0x331a, 0x56e: 0x386a, 0x56f: 0x39f9,\n\t0x570: 0x3018, 0x571: 0x3329, 0x572: 0x3022, 0x573: 0x3333, 0x574: 0x302c, 0x575: 0x333d,\n\t0x576: 0x483b, 0x577: 0x48cc, 0x578: 0x3871, 0x579: 0x3a00, 0x57a: 0x3045, 0x57b: 0x3356,\n\t0x57c: 0x3040, 0x57d: 0x3351, 0x57e: 0x304a, 0x57f: 0x335b,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x304f, 0x581: 0x3360, 0x582: 0x3054, 0x583: 0x3365, 0x584: 0x3068, 0x585: 0x3379,\n\t0x586: 0x3072, 0x587: 0x3383, 0x588: 0x3081, 0x589: 0x3392, 0x58a: 0x307c, 0x58b: 0x338d,\n\t0x58c: 0x3894, 0x58d: 0x3a23, 0x58e: 0x38a2, 0x58f: 0x3a31, 0x590: 0x38a9, 0x591: 0x3a38,\n\t0x592: 0x38b0, 0x593: 0x3a3f, 0x594: 0x30ae, 0x595: 0x33bf, 0x596: 0x30b3, 0x597: 0x33c4,\n\t0x598: 0x30bd, 0x599: 0x33ce, 0x59a: 0x4868, 0x59b: 0x48f9, 0x59c: 0x38f6, 0x59d: 0x3a85,\n\t0x59e: 0x30d6, 0x59f: 0x33e7, 0x5a0: 0x30e0, 0x5a1: 0x33f1, 0x5a2: 0x4877, 0x5a3: 0x4908,\n\t0x5a4: 0x38fd, 0x5a5: 0x3a8c, 0x5a6: 0x3904, 0x5a7: 0x3a93, 0x5a8: 0x390b, 0x5a9: 0x3a9a,\n\t0x5aa: 0x30ef, 0x5ab: 0x3400, 0x5ac: 0x30f9, 0x5ad: 0x340f, 0x5ae: 0x310d, 0x5af: 0x3423,\n\t0x5b0: 0x3108, 0x5b1: 0x341e, 0x5b2: 0x3149, 0x5b3: 0x345f, 0x5b4: 0x3158, 0x5b5: 0x346e,\n\t0x5b6: 0x3153, 0x5b7: 0x3469, 0x5b8: 0x3912, 0x5b9: 0x3aa1, 0x5ba: 0x3919, 0x5bb: 0x3aa8,\n\t0x5bc: 0x315d, 0x5bd: 0x3473, 0x5be: 0x3162, 0x5bf: 0x3478,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x3167, 0x5c1: 0x347d, 0x5c2: 0x316c, 0x5c3: 0x3482, 0x5c4: 0x317b, 0x5c5: 0x3491,\n\t0x5c6: 0x3176, 0x5c7: 0x348c, 0x5c8: 0x3180, 0x5c9: 0x349b, 0x5ca: 0x3185, 0x5cb: 0x34a0,\n\t0x5cc: 0x318a, 0x5cd: 0x34a5, 0x5ce: 0x31a8, 0x5cf: 0x34c3, 0x5d0: 0x31c1, 0x5d1: 0x34e1,\n\t0x5d2: 0x31d0, 0x5d3: 0x34f0, 0x5d4: 0x31d5, 0x5d5: 0x34f5, 0x5d6: 0x32d9, 0x5d7: 0x3405,\n\t0x5d8: 0x3496, 0x5d9: 0x34d2, 0x5da: 0x1d10, 0x5db: 0x43d6,\n\t0x5e0: 0x4818, 0x5e1: 0x48a9, 0x5e2: 0x2ee2, 0x5e3: 0x31ee,\n\t0x5e4: 0x37d7, 0x5e5: 0x3966, 0x5e6: 0x37d0, 0x5e7: 0x395f, 0x5e8: 0x37e5, 0x5e9: 0x3974,\n\t0x5ea: 0x37de, 0x5eb: 0x396d, 0x5ec: 0x381d, 0x5ed: 0x39ac, 0x5ee: 0x37f3, 0x5ef: 0x3982,\n\t0x5f0: 0x37ec, 0x5f1: 0x397b, 0x5f2: 0x3801, 0x5f3: 0x3990, 0x5f4: 0x37fa, 0x5f5: 0x3989,\n\t0x5f6: 0x3824, 0x5f7: 0x39b3, 0x5f8: 0x482c, 0x5f9: 0x48bd, 0x5fa: 0x2f5f, 0x5fb: 0x326b,\n\t0x5fc: 0x2f4b, 0x5fd: 0x3257, 0x5fe: 0x3839, 0x5ff: 0x39c8,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3832, 0x601: 0x39c1, 0x602: 0x3847, 0x603: 0x39d6, 0x604: 0x3840, 0x605: 0x39cf,\n\t0x606: 0x385c, 0x607: 0x39eb, 0x608: 0x2ff0, 0x609: 0x32fc, 0x60a: 0x3004, 0x60b: 0x3310,\n\t0x60c: 0x485e, 0x60d: 0x48ef, 0x60e: 0x3095, 0x60f: 0x33a6, 0x610: 0x387f, 0x611: 0x3a0e,\n\t0x612: 0x3878, 0x613: 0x3a07, 0x614: 0x388d, 0x615: 0x3a1c, 0x616: 0x3886, 0x617: 0x3a15,\n\t0x618: 0x38e8, 0x619: 0x3a77, 0x61a: 0x38cc, 0x61b: 0x3a5b, 0x61c: 0x38c5, 0x61d: 0x3a54,\n\t0x61e: 0x38da, 0x61f: 0x3a69, 0x620: 0x38d3, 0x621: 0x3a62, 0x622: 0x38e1, 0x623: 0x3a70,\n\t0x624: 0x3144, 0x625: 0x345a, 0x626: 0x3126, 0x627: 0x343c, 0x628: 0x3943, 0x629: 0x3ad2,\n\t0x62a: 0x393c, 0x62b: 0x3acb, 0x62c: 0x3951, 0x62d: 0x3ae0, 0x62e: 0x394a, 0x62f: 0x3ad9,\n\t0x630: 0x3958, 0x631: 0x3ae7, 0x632: 0x318f, 0x633: 0x34aa, 0x634: 0x31b7, 0x635: 0x34d7,\n\t0x636: 0x31b2, 0x637: 0x34cd, 0x638: 0x319e, 0x639: 0x34b9,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x497b, 0x641: 0x4981, 0x642: 0x4a95, 0x643: 0x4aad, 0x644: 0x4a9d, 0x645: 0x4ab5,\n\t0x646: 0x4aa5, 0x647: 0x4abd, 0x648: 0x4921, 0x649: 0x4927, 0x64a: 0x4a05, 0x64b: 0x4a1d,\n\t0x64c: 0x4a0d, 0x64d: 0x4a25, 0x64e: 0x4a15, 0x64f: 0x4a2d, 0x650: 0x498d, 0x651: 0x4993,\n\t0x652: 0x3d17, 0x653: 0x3d27, 0x654: 0x3d1f, 0x655: 0x3d2f,\n\t0x658: 0x492d, 0x659: 0x4933, 0x65a: 0x3c47, 0x65b: 0x3c57, 0x65c: 0x3c4f, 0x65d: 0x3c5f,\n\t0x660: 0x49a5, 0x661: 0x49ab, 0x662: 0x4ac5, 0x663: 0x4add,\n\t0x664: 0x4acd, 0x665: 0x4ae5, 0x666: 0x4ad5, 0x667: 0x4aed, 0x668: 0x4939, 0x669: 0x493f,\n\t0x66a: 0x4a35, 0x66b: 0x4a4d, 0x66c: 0x4a3d, 0x66d: 0x4a55, 0x66e: 0x4a45, 0x66f: 0x4a5d,\n\t0x670: 0x49bd, 0x671: 0x49c3, 0x672: 0x3d77, 0x673: 0x3d8f, 0x674: 0x3d7f, 0x675: 0x3d97,\n\t0x676: 0x3d87, 0x677: 0x3d9f, 0x678: 0x4945, 0x679: 0x494b, 0x67a: 0x3c77, 0x67b: 0x3c8f,\n\t0x67c: 0x3c7f, 0x67d: 0x3c97, 0x67e: 0x3c87, 0x67f: 0x3c9f,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x49c9, 0x681: 0x49cf, 0x682: 0x3da7, 0x683: 0x3db7, 0x684: 0x3daf, 0x685: 0x3dbf,\n\t0x688: 0x4951, 0x689: 0x4957, 0x68a: 0x3ca7, 0x68b: 0x3cb7,\n\t0x68c: 0x3caf, 0x68d: 0x3cbf, 0x690: 0x49db, 0x691: 0x49e1,\n\t0x692: 0x3ddf, 0x693: 0x3df7, 0x694: 0x3de7, 0x695: 0x3dff, 0x696: 0x3def, 0x697: 0x3e07,\n\t0x699: 0x495d, 0x69b: 0x3cc7, 0x69d: 0x3ccf,\n\t0x69f: 0x3cd7, 0x6a0: 0x49f3, 0x6a1: 0x49f9, 0x6a2: 0x4af5, 0x6a3: 0x4b0d,\n\t0x6a4: 0x4afd, 0x6a5: 0x4b15, 0x6a6: 0x4b05, 0x6a7: 0x4b1d, 0x6a8: 0x4963, 0x6a9: 0x4969,\n\t0x6aa: 0x4a65, 0x6ab: 0x4a7d, 0x6ac: 0x4a6d, 0x6ad: 0x4a85, 0x6ae: 0x4a75, 0x6af: 0x4a8d,\n\t0x6b0: 0x496f, 0x6b1: 0x441d, 0x6b2: 0x35f0, 0x6b3: 0x4423, 0x6b4: 0x4999, 0x6b5: 0x4429,\n\t0x6b6: 0x3602, 0x6b7: 0x442f, 0x6b8: 0x3620, 0x6b9: 0x4435, 0x6ba: 0x3638, 0x6bb: 0x443b,\n\t0x6bc: 0x49e7, 0x6bd: 0x4441,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3cff, 0x6c1: 0x3d07, 0x6c2: 0x41d3, 0x6c3: 0x41f1, 0x6c4: 0x41dd, 0x6c5: 0x41fb,\n\t0x6c6: 0x41e7, 0x6c7: 0x4205, 0x6c8: 0x3c37, 0x6c9: 0x3c3f, 0x6ca: 0x411f, 0x6cb: 0x413d,\n\t0x6cc: 0x4129, 0x6cd: 0x4147, 0x6ce: 0x4133, 0x6cf: 0x4151, 0x6d0: 0x3d47, 0x6d1: 0x3d4f,\n\t0x6d2: 0x420f, 0x6d3: 0x422d, 0x6d4: 0x4219, 0x6d5: 0x4237, 0x6d6: 0x4223, 0x6d7: 0x4241,\n\t0x6d8: 0x3c67, 0x6d9: 0x3c6f, 0x6da: 0x415b, 0x6db: 0x4179, 0x6dc: 0x4165, 0x6dd: 0x4183,\n\t0x6de: 0x416f, 0x6df: 0x418d, 0x6e0: 0x3e1f, 0x6e1: 0x3e27, 0x6e2: 0x424b, 0x6e3: 0x4269,\n\t0x6e4: 0x4255, 0x6e5: 0x4273, 0x6e6: 0x425f, 0x6e7: 0x427d, 0x6e8: 0x3cdf, 0x6e9: 0x3ce7,\n\t0x6ea: 0x4197, 0x6eb: 0x41b5, 0x6ec: 0x41a1, 0x6ed: 0x41bf, 0x6ee: 0x41ab, 0x6ef: 0x41c9,\n\t0x6f0: 0x35e4, 0x6f1: 0x35de, 0x6f2: 0x3cef, 0x6f3: 0x35ea, 0x6f4: 0x3cf7,\n\t0x6f6: 0x4987, 0x6f7: 0x3d0f, 0x6f8: 0x3554, 0x6f9: 0x354e, 0x6fa: 0x3542, 0x6fb: 0x43ed,\n\t0x6fc: 0x355a, 0x6fd: 0x4386, 0x6fe: 0x0257, 0x6ff: 0x4386,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x439f, 0x701: 0x4581, 0x702: 0x3d37, 0x703: 0x35fc, 0x704: 0x3d3f,\n\t0x706: 0x49b1, 0x707: 0x3d57, 0x708: 0x3560, 0x709: 0x43f3, 0x70a: 0x356c, 0x70b: 0x43f9,\n\t0x70c: 0x3578, 0x70d: 0x4588, 0x70e: 0x458f, 0x70f: 0x4596, 0x710: 0x3614, 0x711: 0x360e,\n\t0x712: 0x3d5f, 0x713: 0x45e3, 0x716: 0x361a, 0x717: 0x3d6f,\n\t0x718: 0x3590, 0x719: 0x358a, 0x71a: 0x357e, 0x71b: 0x43ff, 0x71d: 0x459d,\n\t0x71e: 0x45a4, 0x71f: 0x45ab, 0x720: 0x364a, 0x721: 0x3644, 0x722: 0x3dc7, 0x723: 0x45eb,\n\t0x724: 0x362c, 0x725: 0x3632, 0x726: 0x3650, 0x727: 0x3dd7, 0x728: 0x35c0, 0x729: 0x35ba,\n\t0x72a: 0x35ae, 0x72b: 0x440b, 0x72c: 0x35a8, 0x72d: 0x4573, 0x72e: 0x457a, 0x72f: 0x0081,\n\t0x732: 0x3e0f, 0x733: 0x3656, 0x734: 0x3e17,\n\t0x736: 0x49ff, 0x737: 0x3e2f, 0x738: 0x359c, 0x739: 0x4405, 0x73a: 0x35cc, 0x73b: 0x4417,\n\t0x73c: 0x35d8, 0x73d: 0x4359, 0x73e: 0x438b,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x1d08, 0x741: 0x1d0c, 0x742: 0x0047, 0x743: 0x1d84, 0x745: 0x1d18,\n\t0x746: 0x1d1c, 0x747: 0x00ef, 0x749: 0x1d88, 0x74a: 0x008f, 0x74b: 0x0051,\n\t0x74c: 0x0051, 0x74d: 0x0051, 0x74e: 0x0091, 0x74f: 0x00e0, 0x750: 0x0053, 0x751: 0x0053,\n\t0x752: 0x0059, 0x753: 0x0099, 0x755: 0x005d, 0x756: 0x1abd,\n\t0x759: 0x0061, 0x75a: 0x0063, 0x75b: 0x0065, 0x75c: 0x0065, 0x75d: 0x0065,\n\t0x760: 0x1acf, 0x761: 0x1cf8, 0x762: 0x1ad8,\n\t0x764: 0x0075, 0x766: 0x023c, 0x768: 0x0075,\n\t0x76a: 0x0057, 0x76b: 0x43d1, 0x76c: 0x0045, 0x76d: 0x0047, 0x76f: 0x008b,\n\t0x770: 0x004b, 0x771: 0x004d, 0x773: 0x005b, 0x774: 0x009f, 0x775: 0x0308,\n\t0x776: 0x030b, 0x777: 0x030e, 0x778: 0x0311, 0x779: 0x0093, 0x77b: 0x1cc8,\n\t0x77c: 0x026c, 0x77d: 0x0245, 0x77e: 0x01fd, 0x77f: 0x0224,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x055a, 0x785: 0x0049,\n\t0x786: 0x0089, 0x787: 0x008b, 0x788: 0x0093, 0x789: 0x0095,\n\t0x790: 0x235e, 0x791: 0x236a,\n\t0x792: 0x241e, 0x793: 0x2346, 0x794: 0x23ca, 0x795: 0x2352, 0x796: 0x23d0, 0x797: 0x23e8,\n\t0x798: 0x23f4, 0x799: 0x2358, 0x79a: 0x23fa, 0x79b: 0x2364, 0x79c: 0x23ee, 0x79d: 0x2400,\n\t0x79e: 0x2406, 0x79f: 0x1dec, 0x7a0: 0x0053, 0x7a1: 0x1a87, 0x7a2: 0x1cd4, 0x7a3: 0x1a90,\n\t0x7a4: 0x006d, 0x7a5: 0x1adb, 0x7a6: 0x1d00, 0x7a7: 0x1e78, 0x7a8: 0x1a93, 0x7a9: 0x0071,\n\t0x7aa: 0x1ae7, 0x7ab: 0x1d04, 0x7ac: 0x0059, 0x7ad: 0x0047, 0x7ae: 0x0049, 0x7af: 0x005b,\n\t0x7b0: 0x0093, 0x7b1: 0x1b14, 0x7b2: 0x1d48, 0x7b3: 0x1b1d, 0x7b4: 0x00ad, 0x7b5: 0x1b92,\n\t0x7b6: 0x1d7c, 0x7b7: 0x1e8c, 0x7b8: 0x1b20, 0x7b9: 0x00b1, 0x7ba: 0x1b95, 0x7bb: 0x1d80,\n\t0x7bc: 0x0099, 0x7bd: 0x0087, 0x7be: 0x0089, 0x7bf: 0x009b,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x3b65, 0x7c3: 0xa000, 0x7c4: 0x3b6c, 0x7c5: 0xa000,\n\t0x7c7: 0x3b73, 0x7c8: 0xa000, 0x7c9: 0x3b7a,\n\t0x7cd: 0xa000,\n\t0x7e0: 0x2ec4, 0x7e1: 0xa000, 0x7e2: 0x3b88,\n\t0x7e4: 0xa000, 0x7e5: 0xa000,\n\t0x7ed: 0x3b81, 0x7ee: 0x2ebf, 0x7ef: 0x2ec9,\n\t0x7f0: 0x3b8f, 0x7f1: 0x3b96, 0x7f2: 0xa000, 0x7f3: 0xa000, 0x7f4: 0x3b9d, 0x7f5: 0x3ba4,\n\t0x7f6: 0xa000, 0x7f7: 0xa000, 0x7f8: 0x3bab, 0x7f9: 0x3bb2, 0x7fa: 0xa000, 0x7fb: 0xa000,\n\t0x7fc: 0xa000, 0x7fd: 0xa000,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3bb9, 0x801: 0x3bc0, 0x802: 0xa000, 0x803: 0xa000, 0x804: 0x3bd5, 0x805: 0x3bdc,\n\t0x806: 0xa000, 0x807: 0xa000, 0x808: 0x3be3, 0x809: 0x3bea,\n\t0x811: 0xa000,\n\t0x812: 0xa000,\n\t0x822: 0xa000,\n\t0x828: 0xa000, 0x829: 0xa000,\n\t0x82b: 0xa000, 0x82c: 0x3bff, 0x82d: 0x3c06, 0x82e: 0x3c0d, 0x82f: 0x3c14,\n\t0x832: 0xa000, 0x833: 0xa000, 0x834: 0xa000, 0x835: 0xa000,\n\t// Block 0x21, offset 0x840\n\t0x860: 0x0023, 0x861: 0x0025, 0x862: 0x0027, 0x863: 0x0029,\n\t0x864: 0x002b, 0x865: 0x002d, 0x866: 0x002f, 0x867: 0x0031, 0x868: 0x0033, 0x869: 0x19af,\n\t0x86a: 0x19b2, 0x86b: 0x19b5, 0x86c: 0x19b8, 0x86d: 0x19bb, 0x86e: 0x19be, 0x86f: 0x19c1,\n\t0x870: 0x19c4, 0x871: 0x19c7, 0x872: 0x19ca, 0x873: 0x19d3, 0x874: 0x1b98, 0x875: 0x1b9c,\n\t0x876: 0x1ba0, 0x877: 0x1ba4, 0x878: 0x1ba8, 0x879: 0x1bac, 0x87a: 0x1bb0, 0x87b: 0x1bb4,\n\t0x87c: 0x1bb8, 0x87d: 0x1db0, 0x87e: 0x1db5, 0x87f: 0x1dba,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x1dbf, 0x881: 0x1dc4, 0x882: 0x1dc9, 0x883: 0x1dce, 0x884: 0x1dd3, 0x885: 0x1dd8,\n\t0x886: 0x1ddd, 0x887: 0x1de2, 0x888: 0x19ac, 0x889: 0x19d0, 0x88a: 0x19f4, 0x88b: 0x1a18,\n\t0x88c: 0x1a3c, 0x88d: 0x1a45, 0x88e: 0x1a4b, 0x88f: 0x1a51, 0x890: 0x1a57, 0x891: 0x1c90,\n\t0x892: 0x1c94, 0x893: 0x1c98, 0x894: 0x1c9c, 0x895: 0x1ca0, 0x896: 0x1ca4, 0x897: 0x1ca8,\n\t0x898: 0x1cac, 0x899: 0x1cb0, 0x89a: 0x1cb4, 0x89b: 0x1cb8, 0x89c: 0x1c24, 0x89d: 0x1c28,\n\t0x89e: 0x1c2c, 0x89f: 0x1c30, 0x8a0: 0x1c34, 0x8a1: 0x1c38, 0x8a2: 0x1c3c, 0x8a3: 0x1c40,\n\t0x8a4: 0x1c44, 0x8a5: 0x1c48, 0x8a6: 0x1c4c, 0x8a7: 0x1c50, 0x8a8: 0x1c54, 0x8a9: 0x1c58,\n\t0x8aa: 0x1c5c, 0x8ab: 0x1c60, 0x8ac: 0x1c64, 0x8ad: 0x1c68, 0x8ae: 0x1c6c, 0x8af: 0x1c70,\n\t0x8b0: 0x1c74, 0x8b1: 0x1c78, 0x8b2: 0x1c7c, 0x8b3: 0x1c80, 0x8b4: 0x1c84, 0x8b5: 0x1c88,\n\t0x8b6: 0x0043, 0x8b7: 0x0045, 0x8b8: 0x0047, 0x8b9: 0x0049, 0x8ba: 0x004b, 0x8bb: 0x004d,\n\t0x8bc: 0x004f, 0x8bd: 0x0051, 0x8be: 0x0053, 0x8bf: 0x0055,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x07ba, 0x8c1: 0x07de, 0x8c2: 0x07ea, 0x8c3: 0x07fa, 0x8c4: 0x0802, 0x8c5: 0x080e,\n\t0x8c6: 0x0816, 0x8c7: 0x081e, 0x8c8: 0x082a, 0x8c9: 0x087e, 0x8ca: 0x0896, 0x8cb: 0x08a6,\n\t0x8cc: 0x08b6, 0x8cd: 0x08c6, 0x8ce: 0x08d6, 0x8cf: 0x08f6, 0x8d0: 0x08fa, 0x8d1: 0x08fe,\n\t0x8d2: 0x0932, 0x8d3: 0x095a, 0x8d4: 0x096a, 0x8d5: 0x0972, 0x8d6: 0x0976, 0x8d7: 0x0982,\n\t0x8d8: 0x099e, 0x8d9: 0x09a2, 0x8da: 0x09ba, 0x8db: 0x09be, 0x8dc: 0x09c6, 0x8dd: 0x09d6,\n\t0x8de: 0x0a72, 0x8df: 0x0a86, 0x8e0: 0x0ac6, 0x8e1: 0x0ada, 0x8e2: 0x0ae2, 0x8e3: 0x0ae6,\n\t0x8e4: 0x0af6, 0x8e5: 0x0b12, 0x8e6: 0x0b3e, 0x8e7: 0x0b4a, 0x8e8: 0x0b6a, 0x8e9: 0x0b76,\n\t0x8ea: 0x0b7a, 0x8eb: 0x0b7e, 0x8ec: 0x0b96, 0x8ed: 0x0b9a, 0x8ee: 0x0bc6, 0x8ef: 0x0bd2,\n\t0x8f0: 0x0bda, 0x8f1: 0x0be2, 0x8f2: 0x0bf2, 0x8f3: 0x0bfa, 0x8f4: 0x0c02, 0x8f5: 0x0c2e,\n\t0x8f6: 0x0c32, 0x8f7: 0x0c3a, 0x8f8: 0x0c3e, 0x8f9: 0x0c46, 0x8fa: 0x0c4e, 0x8fb: 0x0c5e,\n\t0x8fc: 0x0c7a, 0x8fd: 0x0cf2, 0x8fe: 0x0d06, 0x8ff: 0x0d0a,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0d8a, 0x901: 0x0d8e, 0x902: 0x0da2, 0x903: 0x0da6, 0x904: 0x0dae, 0x905: 0x0db6,\n\t0x906: 0x0dbe, 0x907: 0x0dca, 0x908: 0x0df2, 0x909: 0x0e02, 0x90a: 0x0e16, 0x90b: 0x0e86,\n\t0x90c: 0x0e92, 0x90d: 0x0ea2, 0x90e: 0x0eae, 0x90f: 0x0eba, 0x910: 0x0ec2, 0x911: 0x0ec6,\n\t0x912: 0x0eca, 0x913: 0x0ece, 0x914: 0x0ed2, 0x915: 0x0f8a, 0x916: 0x0fd2, 0x917: 0x0fde,\n\t0x918: 0x0fe2, 0x919: 0x0fe6, 0x91a: 0x0fea, 0x91b: 0x0ff2, 0x91c: 0x0ff6, 0x91d: 0x100a,\n\t0x91e: 0x1026, 0x91f: 0x102e, 0x920: 0x106e, 0x921: 0x1072, 0x922: 0x107a, 0x923: 0x107e,\n\t0x924: 0x1086, 0x925: 0x108a, 0x926: 0x10ae, 0x927: 0x10b2, 0x928: 0x10ce, 0x929: 0x10d2,\n\t0x92a: 0x10d6, 0x92b: 0x10da, 0x92c: 0x10ee, 0x92d: 0x1112, 0x92e: 0x1116, 0x92f: 0x111a,\n\t0x930: 0x113e, 0x931: 0x117e, 0x932: 0x1182, 0x933: 0x11a2, 0x934: 0x11b2, 0x935: 0x11ba,\n\t0x936: 0x11da, 0x937: 0x11fe, 0x938: 0x1242, 0x939: 0x124a, 0x93a: 0x125e, 0x93b: 0x126a,\n\t0x93c: 0x1272, 0x93d: 0x127a, 0x93e: 0x127e, 0x93f: 0x1282,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x129a, 0x941: 0x129e, 0x942: 0x12ba, 0x943: 0x12c2, 0x944: 0x12ca, 0x945: 0x12ce,\n\t0x946: 0x12da, 0x947: 0x12e2, 0x948: 0x12e6, 0x949: 0x12ea, 0x94a: 0x12f2, 0x94b: 0x12f6,\n\t0x94c: 0x1396, 0x94d: 0x13aa, 0x94e: 0x13de, 0x94f: 0x13e2, 0x950: 0x13ea, 0x951: 0x1416,\n\t0x952: 0x141e, 0x953: 0x1426, 0x954: 0x142e, 0x955: 0x146a, 0x956: 0x146e, 0x957: 0x1476,\n\t0x958: 0x147a, 0x959: 0x147e, 0x95a: 0x14aa, 0x95b: 0x14ae, 0x95c: 0x14b6, 0x95d: 0x14ca,\n\t0x95e: 0x14ce, 0x95f: 0x14ea, 0x960: 0x14f2, 0x961: 0x14f6, 0x962: 0x151a, 0x963: 0x153a,\n\t0x964: 0x154e, 0x965: 0x1552, 0x966: 0x155a, 0x967: 0x1586, 0x968: 0x158a, 0x969: 0x159a,\n\t0x96a: 0x15be, 0x96b: 0x15ca, 0x96c: 0x15da, 0x96d: 0x15f2, 0x96e: 0x15fa, 0x96f: 0x15fe,\n\t0x970: 0x1602, 0x971: 0x1606, 0x972: 0x1612, 0x973: 0x1616, 0x974: 0x161e, 0x975: 0x163a,\n\t0x976: 0x163e, 0x977: 0x1642, 0x978: 0x165a, 0x979: 0x165e, 0x97a: 0x1666, 0x97b: 0x167a,\n\t0x97c: 0x167e, 0x97d: 0x1682, 0x97e: 0x168a, 0x97f: 0x168e,\n\t// Block 0x26, offset 0x980\n\t0x986: 0xa000, 0x98b: 0xa000,\n\t0x98c: 0x3f47, 0x98d: 0xa000, 0x98e: 0x3f4f, 0x98f: 0xa000, 0x990: 0x3f57, 0x991: 0xa000,\n\t0x992: 0x3f5f, 0x993: 0xa000, 0x994: 0x3f67, 0x995: 0xa000, 0x996: 0x3f6f, 0x997: 0xa000,\n\t0x998: 0x3f77, 0x999: 0xa000, 0x99a: 0x3f7f, 0x99b: 0xa000, 0x99c: 0x3f87, 0x99d: 0xa000,\n\t0x99e: 0x3f8f, 0x99f: 0xa000, 0x9a0: 0x3f97, 0x9a1: 0xa000, 0x9a2: 0x3f9f,\n\t0x9a4: 0xa000, 0x9a5: 0x3fa7, 0x9a6: 0xa000, 0x9a7: 0x3faf, 0x9a8: 0xa000, 0x9a9: 0x3fb7,\n\t0x9af: 0xa000,\n\t0x9b0: 0x3fbf, 0x9b1: 0x3fc7, 0x9b2: 0xa000, 0x9b3: 0x3fcf, 0x9b4: 0x3fd7, 0x9b5: 0xa000,\n\t0x9b6: 0x3fdf, 0x9b7: 0x3fe7, 0x9b8: 0xa000, 0x9b9: 0x3fef, 0x9ba: 0x3ff7, 0x9bb: 0xa000,\n\t0x9bc: 0x3fff, 0x9bd: 0x4007,\n\t// Block 0x27, offset 0x9c0\n\t0x9d4: 0x3f3f,\n\t0x9d9: 0x9904, 0x9da: 0x9904, 0x9db: 0x43db, 0x9dc: 0x43e1, 0x9dd: 0xa000,\n\t0x9de: 0x400f, 0x9df: 0x27e4,\n\t0x9e6: 0xa000,\n\t0x9eb: 0xa000, 0x9ec: 0x401f, 0x9ed: 0xa000, 0x9ee: 0x4027, 0x9ef: 0xa000,\n\t0x9f0: 0x402f, 0x9f1: 0xa000, 0x9f2: 0x4037, 0x9f3: 0xa000, 0x9f4: 0x403f, 0x9f5: 0xa000,\n\t0x9f6: 0x4047, 0x9f7: 0xa000, 0x9f8: 0x404f, 0x9f9: 0xa000, 0x9fa: 0x4057, 0x9fb: 0xa000,\n\t0x9fc: 0x405f, 0x9fd: 0xa000, 0x9fe: 0x4067, 0x9ff: 0xa000,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x406f, 0xa01: 0xa000, 0xa02: 0x4077, 0xa04: 0xa000, 0xa05: 0x407f,\n\t0xa06: 0xa000, 0xa07: 0x4087, 0xa08: 0xa000, 0xa09: 0x408f,\n\t0xa0f: 0xa000, 0xa10: 0x4097, 0xa11: 0x409f,\n\t0xa12: 0xa000, 0xa13: 0x40a7, 0xa14: 0x40af, 0xa15: 0xa000, 0xa16: 0x40b7, 0xa17: 0x40bf,\n\t0xa18: 0xa000, 0xa19: 0x40c7, 0xa1a: 0x40cf, 0xa1b: 0xa000, 0xa1c: 0x40d7, 0xa1d: 0x40df,\n\t0xa2f: 0xa000,\n\t0xa30: 0xa000, 0xa31: 0xa000, 0xa32: 0xa000, 0xa34: 0x4017,\n\t0xa37: 0x40e7, 0xa38: 0x40ef, 0xa39: 0x40f7, 0xa3a: 0x40ff,\n\t0xa3d: 0xa000, 0xa3e: 0x4107, 0xa3f: 0x27f9,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x045a, 0xa41: 0x041e, 0xa42: 0x0422, 0xa43: 0x0426, 0xa44: 0x046e, 0xa45: 0x042a,\n\t0xa46: 0x042e, 0xa47: 0x0432, 0xa48: 0x0436, 0xa49: 0x043a, 0xa4a: 0x043e, 0xa4b: 0x0442,\n\t0xa4c: 0x0446, 0xa4d: 0x044a, 0xa4e: 0x044e, 0xa4f: 0x4b4e, 0xa50: 0x4b54, 0xa51: 0x4b5a,\n\t0xa52: 0x4b60, 0xa53: 0x4b66, 0xa54: 0x4b6c, 0xa55: 0x4b72, 0xa56: 0x4b78, 0xa57: 0x4b7e,\n\t0xa58: 0x4b84, 0xa59: 0x4b8a, 0xa5a: 0x4b90, 0xa5b: 0x4b96, 0xa5c: 0x4b9c, 0xa5d: 0x4ba2,\n\t0xa5e: 0x4ba8, 0xa5f: 0x4bae, 0xa60: 0x4bb4, 0xa61: 0x4bba, 0xa62: 0x4bc0, 0xa63: 0x4bc6,\n\t0xa64: 0x04b6, 0xa65: 0x0452, 0xa66: 0x0456, 0xa67: 0x04da, 0xa68: 0x04de, 0xa69: 0x04e2,\n\t0xa6a: 0x04e6, 0xa6b: 0x04ea, 0xa6c: 0x04ee, 0xa6d: 0x04f2, 0xa6e: 0x045e, 0xa6f: 0x04f6,\n\t0xa70: 0x04fa, 0xa71: 0x0462, 0xa72: 0x0466, 0xa73: 0x046a, 0xa74: 0x0472, 0xa75: 0x0476,\n\t0xa76: 0x047a, 0xa77: 0x047e, 0xa78: 0x0482, 0xa79: 0x0486, 0xa7a: 0x048a, 0xa7b: 0x048e,\n\t0xa7c: 0x0492, 0xa7d: 0x0496, 0xa7e: 0x049a, 0xa7f: 0x049e,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x04a2, 0xa81: 0x04a6, 0xa82: 0x04fe, 0xa83: 0x0502, 0xa84: 0x04aa, 0xa85: 0x04ae,\n\t0xa86: 0x04b2, 0xa87: 0x04ba, 0xa88: 0x04be, 0xa89: 0x04c2, 0xa8a: 0x04c6, 0xa8b: 0x04ca,\n\t0xa8c: 0x04ce, 0xa8d: 0x04d2, 0xa8e: 0x04d6,\n\t0xa92: 0x07ba, 0xa93: 0x0816, 0xa94: 0x07c6, 0xa95: 0x0a76, 0xa96: 0x07ca, 0xa97: 0x07e2,\n\t0xa98: 0x07ce, 0xa99: 0x108e, 0xa9a: 0x0802, 0xa9b: 0x07d6, 0xa9c: 0x07be, 0xa9d: 0x0afa,\n\t0xa9e: 0x0a8a, 0xa9f: 0x082a,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x2184, 0xac1: 0x218a, 0xac2: 0x2190, 0xac3: 0x2196, 0xac4: 0x219c, 0xac5: 0x21a2,\n\t0xac6: 0x21a8, 0xac7: 0x21ae, 0xac8: 0x21b4, 0xac9: 0x21ba, 0xaca: 0x21c0, 0xacb: 0x21c6,\n\t0xacc: 0x21cc, 0xacd: 0x21d2, 0xace: 0x285d, 0xacf: 0x2866, 0xad0: 0x286f, 0xad1: 0x2878,\n\t0xad2: 0x2881, 0xad3: 0x288a, 0xad4: 0x2893, 0xad5: 0x289c, 0xad6: 0x28a5, 0xad7: 0x28b7,\n\t0xad8: 0x28c0, 0xad9: 0x28c9, 0xada: 0x28d2, 0xadb: 0x28db, 0xadc: 0x28ae, 0xadd: 0x2ce3,\n\t0xade: 0x2c24, 0xae0: 0x21d8, 0xae1: 0x21f0, 0xae2: 0x21e4, 0xae3: 0x2238,\n\t0xae4: 0x21f6, 0xae5: 0x2214, 0xae6: 0x21de, 0xae7: 0x220e, 0xae8: 0x21ea, 0xae9: 0x2220,\n\t0xaea: 0x2250, 0xaeb: 0x226e, 0xaec: 0x2268, 0xaed: 0x225c, 0xaee: 0x22aa, 0xaef: 0x223e,\n\t0xaf0: 0x224a, 0xaf1: 0x2262, 0xaf2: 0x2256, 0xaf3: 0x2280, 0xaf4: 0x222c, 0xaf5: 0x2274,\n\t0xaf6: 0x229e, 0xaf7: 0x2286, 0xaf8: 0x221a, 0xaf9: 0x21fc, 0xafa: 0x2232, 0xafb: 0x2244,\n\t0xafc: 0x227a, 0xafd: 0x2202, 0xafe: 0x22a4, 0xaff: 0x2226,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x228c, 0xb01: 0x2208, 0xb02: 0x2292, 0xb03: 0x2298, 0xb04: 0x0a2a, 0xb05: 0x0bfe,\n\t0xb06: 0x0da2, 0xb07: 0x11c2,\n\t0xb10: 0x1cf4, 0xb11: 0x19d6,\n\t0xb12: 0x19d9, 0xb13: 0x19dc, 0xb14: 0x19df, 0xb15: 0x19e2, 0xb16: 0x19e5, 0xb17: 0x19e8,\n\t0xb18: 0x19eb, 0xb19: 0x19ee, 0xb1a: 0x19f7, 0xb1b: 0x19fa, 0xb1c: 0x19fd, 0xb1d: 0x1a00,\n\t0xb1e: 0x1a03, 0xb1f: 0x1a06, 0xb20: 0x0406, 0xb21: 0x040e, 0xb22: 0x0412, 0xb23: 0x041a,\n\t0xb24: 0x041e, 0xb25: 0x0422, 0xb26: 0x042a, 0xb27: 0x0432, 0xb28: 0x0436, 0xb29: 0x043e,\n\t0xb2a: 0x0442, 0xb2b: 0x0446, 0xb2c: 0x044a, 0xb2d: 0x044e, 0xb2e: 0x46c3, 0xb2f: 0x46cb,\n\t0xb30: 0x46d3, 0xb31: 0x46db, 0xb32: 0x46e3, 0xb33: 0x46eb, 0xb34: 0x46f3, 0xb35: 0x46fb,\n\t0xb36: 0x470b, 0xb37: 0x4713, 0xb38: 0x471b, 0xb39: 0x4723, 0xb3a: 0x472b, 0xb3b: 0x4733,\n\t0xb3c: 0x2e42, 0xb3d: 0x2e0a, 0xb3e: 0x4703,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x07ba, 0xb41: 0x0816, 0xb42: 0x07c6, 0xb43: 0x0a76, 0xb44: 0x081a, 0xb45: 0x08aa,\n\t0xb46: 0x07c2, 0xb47: 0x08a6, 0xb48: 0x0806, 0xb49: 0x0982, 0xb4a: 0x0e02, 0xb4b: 0x0f8a,\n\t0xb4c: 0x0ed2, 0xb4d: 0x0e16, 0xb4e: 0x155a, 0xb4f: 0x0a86, 0xb50: 0x0dca, 0xb51: 0x0e46,\n\t0xb52: 0x0e06, 0xb53: 0x1146, 0xb54: 0x09f6, 0xb55: 0x0ffe, 0xb56: 0x1482, 0xb57: 0x115a,\n\t0xb58: 0x093e, 0xb59: 0x118a, 0xb5a: 0x1096, 0xb5b: 0x0b12, 0xb5c: 0x150a, 0xb5d: 0x087a,\n\t0xb5e: 0x09a6, 0xb5f: 0x0ef2, 0xb60: 0x1622, 0xb61: 0x083e, 0xb62: 0x08ce, 0xb63: 0x0e96,\n\t0xb64: 0x07ca, 0xb65: 0x07e2, 0xb66: 0x07ce, 0xb67: 0x0bd6, 0xb68: 0x09ea, 0xb69: 0x097a,\n\t0xb6a: 0x0b52, 0xb6b: 0x0b46, 0xb6c: 0x10e6, 0xb6d: 0x083a, 0xb6e: 0x1496, 0xb6f: 0x0996,\n\t0xb70: 0x0aee, 0xb71: 0x1a09, 0xb72: 0x1a0c, 0xb73: 0x1a0f, 0xb74: 0x1a12, 0xb75: 0x1a1b,\n\t0xb76: 0x1a1e, 0xb77: 0x1a21, 0xb78: 0x1a24, 0xb79: 0x1a27, 0xb7a: 0x1a2a, 0xb7b: 0x1a2d,\n\t0xb7c: 0x1a30, 0xb7d: 0x1a33, 0xb7e: 0x1a36, 0xb7f: 0x1a3f,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x1df6, 0xb81: 0x1e05, 0xb82: 0x1e14, 0xb83: 0x1e23, 0xb84: 0x1e32, 0xb85: 0x1e41,\n\t0xb86: 0x1e50, 0xb87: 0x1e5f, 0xb88: 0x1e6e, 0xb89: 0x22bc, 0xb8a: 0x22ce, 0xb8b: 0x22e0,\n\t0xb8c: 0x1a81, 0xb8d: 0x1d34, 0xb8e: 0x1b02, 0xb8f: 0x1cd8, 0xb90: 0x05c6, 0xb91: 0x05ce,\n\t0xb92: 0x05d6, 0xb93: 0x05de, 0xb94: 0x05e6, 0xb95: 0x05ea, 0xb96: 0x05ee, 0xb97: 0x05f2,\n\t0xb98: 0x05f6, 0xb99: 0x05fa, 0xb9a: 0x05fe, 0xb9b: 0x0602, 0xb9c: 0x0606, 0xb9d: 0x060a,\n\t0xb9e: 0x060e, 0xb9f: 0x0612, 0xba0: 0x0616, 0xba1: 0x061e, 0xba2: 0x0622, 0xba3: 0x0626,\n\t0xba4: 0x062a, 0xba5: 0x062e, 0xba6: 0x0632, 0xba7: 0x0636, 0xba8: 0x063a, 0xba9: 0x063e,\n\t0xbaa: 0x0642, 0xbab: 0x0646, 0xbac: 0x064a, 0xbad: 0x064e, 0xbae: 0x0652, 0xbaf: 0x0656,\n\t0xbb0: 0x065a, 0xbb1: 0x065e, 0xbb2: 0x0662, 0xbb3: 0x066a, 0xbb4: 0x0672, 0xbb5: 0x067a,\n\t0xbb6: 0x067e, 0xbb7: 0x0682, 0xbb8: 0x0686, 0xbb9: 0x068a, 0xbba: 0x068e, 0xbbb: 0x0692,\n\t0xbbc: 0x0696, 0xbbd: 0x069a, 0xbbe: 0x069e, 0xbbf: 0x282a,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x2c43, 0xbc1: 0x2adf, 0xbc2: 0x2c53, 0xbc3: 0x29b7, 0xbc4: 0x2e53, 0xbc5: 0x29c1,\n\t0xbc6: 0x29cb, 0xbc7: 0x2e97, 0xbc8: 0x2aec, 0xbc9: 0x29d5, 0xbca: 0x29df, 0xbcb: 0x29e9,\n\t0xbcc: 0x2b13, 0xbcd: 0x2b20, 0xbce: 0x2af9, 0xbcf: 0x2b06, 0xbd0: 0x2e18, 0xbd1: 0x2b2d,\n\t0xbd2: 0x2b3a, 0xbd3: 0x2cf5, 0xbd4: 0x27eb, 0xbd5: 0x2d08, 0xbd6: 0x2d1b, 0xbd7: 0x2c63,\n\t0xbd8: 0x2b47, 0xbd9: 0x2d2e, 0xbda: 0x2d41, 0xbdb: 0x2b54, 0xbdc: 0x29f3, 0xbdd: 0x29fd,\n\t0xbde: 0x2e26, 0xbdf: 0x2b61, 0xbe0: 0x2c73, 0xbe1: 0x2e64, 0xbe2: 0x2a07, 0xbe3: 0x2a11,\n\t0xbe4: 0x2b6e, 0xbe5: 0x2a1b, 0xbe6: 0x2a25, 0xbe7: 0x2800, 0xbe8: 0x2807, 0xbe9: 0x2a2f,\n\t0xbea: 0x2a39, 0xbeb: 0x2d54, 0xbec: 0x2b7b, 0xbed: 0x2c83, 0xbee: 0x2d67, 0xbef: 0x2b88,\n\t0xbf0: 0x2a4d, 0xbf1: 0x2a43, 0xbf2: 0x2eab, 0xbf3: 0x2b95, 0xbf4: 0x2d7a, 0xbf5: 0x2a57,\n\t0xbf6: 0x2c93, 0xbf7: 0x2a61, 0xbf8: 0x2baf, 0xbf9: 0x2a6b, 0xbfa: 0x2bbc, 0xbfb: 0x2e75,\n\t0xbfc: 0x2ba2, 0xbfd: 0x2ca3, 0xbfe: 0x2bc9, 0xbff: 0x280e,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x2e86, 0xc01: 0x2a75, 0xc02: 0x2a7f, 0xc03: 0x2bd6, 0xc04: 0x2a89, 0xc05: 0x2a93,\n\t0xc06: 0x2a9d, 0xc07: 0x2cb3, 0xc08: 0x2be3, 0xc09: 0x2815, 0xc0a: 0x2d8d, 0xc0b: 0x2dff,\n\t0xc0c: 0x2cc3, 0xc0d: 0x2bf0, 0xc0e: 0x2e34, 0xc0f: 0x2aa7, 0xc10: 0x2ab1, 0xc11: 0x2bfd,\n\t0xc12: 0x281c, 0xc13: 0x2c0a, 0xc14: 0x2cd3, 0xc15: 0x2823, 0xc16: 0x2da0, 0xc17: 0x2abb,\n\t0xc18: 0x1de7, 0xc19: 0x1dfb, 0xc1a: 0x1e0a, 0xc1b: 0x1e19, 0xc1c: 0x1e28, 0xc1d: 0x1e37,\n\t0xc1e: 0x1e46, 0xc1f: 0x1e55, 0xc20: 0x1e64, 0xc21: 0x1e73, 0xc22: 0x22c2, 0xc23: 0x22d4,\n\t0xc24: 0x22e6, 0xc25: 0x22f2, 0xc26: 0x22fe, 0xc27: 0x230a, 0xc28: 0x2316, 0xc29: 0x2322,\n\t0xc2a: 0x232e, 0xc2b: 0x233a, 0xc2c: 0x2376, 0xc2d: 0x2382, 0xc2e: 0x238e, 0xc2f: 0x239a,\n\t0xc30: 0x23a6, 0xc31: 0x1d44, 0xc32: 0x1af6, 0xc33: 0x1a63, 0xc34: 0x1d14, 0xc35: 0x1b77,\n\t0xc36: 0x1b86, 0xc37: 0x1afc, 0xc38: 0x1d2c, 0xc39: 0x1d30, 0xc3a: 0x1a8d, 0xc3b: 0x2838,\n\t0xc3c: 0x2846, 0xc3d: 0x2831, 0xc3e: 0x283f, 0xc3f: 0x2c17,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1b7a, 0xc41: 0x1b62, 0xc42: 0x1d90, 0xc43: 0x1b4a, 0xc44: 0x1b23, 0xc45: 0x1a96,\n\t0xc46: 0x1aa5, 0xc47: 0x1a75, 0xc48: 0x1d20, 0xc49: 0x1e82, 0xc4a: 0x1b7d, 0xc4b: 0x1b65,\n\t0xc4c: 0x1d94, 0xc4d: 0x1da0, 0xc4e: 0x1b56, 0xc4f: 0x1b2c, 0xc50: 0x1a84, 0xc51: 0x1d4c,\n\t0xc52: 0x1ce0, 0xc53: 0x1ccc, 0xc54: 0x1cfc, 0xc55: 0x1da4, 0xc56: 0x1b59, 0xc57: 0x1af9,\n\t0xc58: 0x1b2f, 0xc59: 0x1b0e, 0xc5a: 0x1b71, 0xc5b: 0x1da8, 0xc5c: 0x1b5c, 0xc5d: 0x1af0,\n\t0xc5e: 0x1b32, 0xc5f: 0x1d6c, 0xc60: 0x1d24, 0xc61: 0x1b44, 0xc62: 0x1d54, 0xc63: 0x1d70,\n\t0xc64: 0x1d28, 0xc65: 0x1b47, 0xc66: 0x1d58, 0xc67: 0x2418, 0xc68: 0x242c, 0xc69: 0x1ac6,\n\t0xc6a: 0x1d50, 0xc6b: 0x1ce4, 0xc6c: 0x1cd0, 0xc6d: 0x1d78, 0xc6e: 0x284d, 0xc6f: 0x28e4,\n\t0xc70: 0x1b89, 0xc71: 0x1b74, 0xc72: 0x1dac, 0xc73: 0x1b5f, 0xc74: 0x1b80, 0xc75: 0x1b68,\n\t0xc76: 0x1d98, 0xc77: 0x1b4d, 0xc78: 0x1b26, 0xc79: 0x1ab1, 0xc7a: 0x1b83, 0xc7b: 0x1b6b,\n\t0xc7c: 0x1d9c, 0xc7d: 0x1b50, 0xc7e: 0x1b29, 0xc7f: 0x1ab4,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x1d5c, 0xc81: 0x1ce8, 0xc82: 0x1e7d, 0xc83: 0x1a66, 0xc84: 0x1aea, 0xc85: 0x1aed,\n\t0xc86: 0x2425, 0xc87: 0x1cc4, 0xc88: 0x1af3, 0xc89: 0x1a78, 0xc8a: 0x1b11, 0xc8b: 0x1a7b,\n\t0xc8c: 0x1b1a, 0xc8d: 0x1a99, 0xc8e: 0x1a9c, 0xc8f: 0x1b35, 0xc90: 0x1b3b, 0xc91: 0x1b3e,\n\t0xc92: 0x1d60, 0xc93: 0x1b41, 0xc94: 0x1b53, 0xc95: 0x1d68, 0xc96: 0x1d74, 0xc97: 0x1ac0,\n\t0xc98: 0x1e87, 0xc99: 0x1cec, 0xc9a: 0x1ac3, 0xc9b: 0x1b8c, 0xc9c: 0x1ad5, 0xc9d: 0x1ae4,\n\t0xc9e: 0x2412, 0xc9f: 0x240c, 0xca0: 0x1df1, 0xca1: 0x1e00, 0xca2: 0x1e0f, 0xca3: 0x1e1e,\n\t0xca4: 0x1e2d, 0xca5: 0x1e3c, 0xca6: 0x1e4b, 0xca7: 0x1e5a, 0xca8: 0x1e69, 0xca9: 0x22b6,\n\t0xcaa: 0x22c8, 0xcab: 0x22da, 0xcac: 0x22ec, 0xcad: 0x22f8, 0xcae: 0x2304, 0xcaf: 0x2310,\n\t0xcb0: 0x231c, 0xcb1: 0x2328, 0xcb2: 0x2334, 0xcb3: 0x2370, 0xcb4: 0x237c, 0xcb5: 0x2388,\n\t0xcb6: 0x2394, 0xcb7: 0x23a0, 0xcb8: 0x23ac, 0xcb9: 0x23b2, 0xcba: 0x23b8, 0xcbb: 0x23be,\n\t0xcbc: 0x23c4, 0xcbd: 0x23d6, 0xcbe: 0x23dc, 0xcbf: 0x1d40,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x1472, 0xcc1: 0x0df6, 0xcc2: 0x14ce, 0xcc3: 0x149a, 0xcc4: 0x0f52, 0xcc5: 0x07e6,\n\t0xcc6: 0x09da, 0xcc7: 0x1726, 0xcc8: 0x1726, 0xcc9: 0x0b06, 0xcca: 0x155a, 0xccb: 0x0a3e,\n\t0xccc: 0x0b02, 0xccd: 0x0cea, 0xcce: 0x10ca, 0xccf: 0x125a, 0xcd0: 0x1392, 0xcd1: 0x13ce,\n\t0xcd2: 0x1402, 0xcd3: 0x1516, 0xcd4: 0x0e6e, 0xcd5: 0x0efa, 0xcd6: 0x0fa6, 0xcd7: 0x103e,\n\t0xcd8: 0x135a, 0xcd9: 0x1542, 0xcda: 0x166e, 0xcdb: 0x080a, 0xcdc: 0x09ae, 0xcdd: 0x0e82,\n\t0xcde: 0x0fca, 0xcdf: 0x138e, 0xce0: 0x16be, 0xce1: 0x0bae, 0xce2: 0x0f72, 0xce3: 0x137e,\n\t0xce4: 0x1412, 0xce5: 0x0d1e, 0xce6: 0x12b6, 0xce7: 0x13da, 0xce8: 0x0c1a, 0xce9: 0x0e0a,\n\t0xcea: 0x0f12, 0xceb: 0x1016, 0xcec: 0x1522, 0xced: 0x084a, 0xcee: 0x08e2, 0xcef: 0x094e,\n\t0xcf0: 0x0d86, 0xcf1: 0x0e7a, 0xcf2: 0x0fc6, 0xcf3: 0x10ea, 0xcf4: 0x1272, 0xcf5: 0x1386,\n\t0xcf6: 0x139e, 0xcf7: 0x14c2, 0xcf8: 0x15ea, 0xcf9: 0x169e, 0xcfa: 0x16ba, 0xcfb: 0x1126,\n\t0xcfc: 0x1166, 0xcfd: 0x121e, 0xcfe: 0x133e, 0xcff: 0x1576,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x16c6, 0xd01: 0x1446, 0xd02: 0x0ac2, 0xd03: 0x0c36, 0xd04: 0x11d6, 0xd05: 0x1296,\n\t0xd06: 0x0ffa, 0xd07: 0x112e, 0xd08: 0x1492, 0xd09: 0x15e2, 0xd0a: 0x0abe, 0xd0b: 0x0b8a,\n\t0xd0c: 0x0e72, 0xd0d: 0x0f26, 0xd0e: 0x0f5a, 0xd0f: 0x120e, 0xd10: 0x1236, 0xd11: 0x15a2,\n\t0xd12: 0x094a, 0xd13: 0x12a2, 0xd14: 0x08ee, 0xd15: 0x08ea, 0xd16: 0x1192, 0xd17: 0x1222,\n\t0xd18: 0x1356, 0xd19: 0x15aa, 0xd1a: 0x1462, 0xd1b: 0x0d22, 0xd1c: 0x0e6e, 0xd1d: 0x1452,\n\t0xd1e: 0x07f2, 0xd1f: 0x0b5e, 0xd20: 0x0c8e, 0xd21: 0x102a, 0xd22: 0x10aa, 0xd23: 0x096e,\n\t0xd24: 0x1136, 0xd25: 0x085a, 0xd26: 0x0c72, 0xd27: 0x07d2, 0xd28: 0x0ee6, 0xd29: 0x0d9e,\n\t0xd2a: 0x120a, 0xd2b: 0x09c2, 0xd2c: 0x0aae, 0xd2d: 0x10f6, 0xd2e: 0x135e, 0xd2f: 0x1436,\n\t0xd30: 0x0eb2, 0xd31: 0x14f2, 0xd32: 0x0ede, 0xd33: 0x0d32, 0xd34: 0x1316, 0xd35: 0x0d52,\n\t0xd36: 0x10a6, 0xd37: 0x0826, 0xd38: 0x08a2, 0xd39: 0x08e6, 0xd3a: 0x0e4e, 0xd3b: 0x11f6,\n\t0xd3c: 0x12ee, 0xd3d: 0x1442, 0xd3e: 0x1556, 0xd3f: 0x0956,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x0a0a, 0xd41: 0x0b12, 0xd42: 0x0c2a, 0xd43: 0x0dba, 0xd44: 0x0f76, 0xd45: 0x113a,\n\t0xd46: 0x1592, 0xd47: 0x1676, 0xd48: 0x16ca, 0xd49: 0x16e2, 0xd4a: 0x0932, 0xd4b: 0x0dee,\n\t0xd4c: 0x0e9e, 0xd4d: 0x14e6, 0xd4e: 0x0bf6, 0xd4f: 0x0cd2, 0xd50: 0x0cee, 0xd51: 0x0d7e,\n\t0xd52: 0x0f66, 0xd53: 0x0fb2, 0xd54: 0x1062, 0xd55: 0x1186, 0xd56: 0x122a, 0xd57: 0x128e,\n\t0xd58: 0x14d6, 0xd59: 0x1366, 0xd5a: 0x14fe, 0xd5b: 0x157a, 0xd5c: 0x090a, 0xd5d: 0x0936,\n\t0xd5e: 0x0a1e, 0xd5f: 0x0fa2, 0xd60: 0x13ee, 0xd61: 0x1436, 0xd62: 0x0c16, 0xd63: 0x0c86,\n\t0xd64: 0x0d4a, 0xd65: 0x0eaa, 0xd66: 0x11d2, 0xd67: 0x101e, 0xd68: 0x0836, 0xd69: 0x0a7a,\n\t0xd6a: 0x0b5e, 0xd6b: 0x0bc2, 0xd6c: 0x0c92, 0xd6d: 0x103a, 0xd6e: 0x1056, 0xd6f: 0x1266,\n\t0xd70: 0x1286, 0xd71: 0x155e, 0xd72: 0x15de, 0xd73: 0x15ee, 0xd74: 0x162a, 0xd75: 0x084e,\n\t0xd76: 0x117a, 0xd77: 0x154a, 0xd78: 0x15c6, 0xd79: 0x0caa, 0xd7a: 0x0812, 0xd7b: 0x0872,\n\t0xd7c: 0x0b62, 0xd7d: 0x0b82, 0xd7e: 0x0daa, 0xd7f: 0x0e6e,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0fbe, 0xd81: 0x10c6, 0xd82: 0x1372, 0xd83: 0x1512, 0xd84: 0x171e, 0xd85: 0x0dde,\n\t0xd86: 0x159e, 0xd87: 0x092e, 0xd88: 0x0e2a, 0xd89: 0x0e36, 0xd8a: 0x0f0a, 0xd8b: 0x0f42,\n\t0xd8c: 0x1046, 0xd8d: 0x10a2, 0xd8e: 0x1122, 0xd8f: 0x1206, 0xd90: 0x1636, 0xd91: 0x08aa,\n\t0xd92: 0x0cfe, 0xd93: 0x15ae, 0xd94: 0x0862, 0xd95: 0x0ba6, 0xd96: 0x0f2a, 0xd97: 0x14da,\n\t0xd98: 0x0c62, 0xd99: 0x0cb2, 0xd9a: 0x0e3e, 0xd9b: 0x102a, 0xd9c: 0x15b6, 0xd9d: 0x0912,\n\t0xd9e: 0x09fa, 0xd9f: 0x0b92, 0xda0: 0x0dce, 0xda1: 0x0e1a, 0xda2: 0x0e5a, 0xda3: 0x0eee,\n\t0xda4: 0x1042, 0xda5: 0x10b6, 0xda6: 0x1252, 0xda7: 0x13f2, 0xda8: 0x13fe, 0xda9: 0x1552,\n\t0xdaa: 0x15d2, 0xdab: 0x097e, 0xdac: 0x0f46, 0xdad: 0x09fe, 0xdae: 0x0fc2, 0xdaf: 0x1066,\n\t0xdb0: 0x1382, 0xdb1: 0x15ba, 0xdb2: 0x16a6, 0xdb3: 0x16ce, 0xdb4: 0x0e32, 0xdb5: 0x0f22,\n\t0xdb6: 0x12be, 0xdb7: 0x11b2, 0xdb8: 0x11be, 0xdb9: 0x11e2, 0xdba: 0x1012, 0xdbb: 0x0f9a,\n\t0xdbc: 0x145e, 0xdbd: 0x082e, 0xdbe: 0x1326, 0xdbf: 0x0916,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0906, 0xdc1: 0x0c06, 0xdc2: 0x0d26, 0xdc3: 0x11ee, 0xdc4: 0x0b4e, 0xdc5: 0x0efe,\n\t0xdc6: 0x0dea, 0xdc7: 0x14e2, 0xdc8: 0x13e2, 0xdc9: 0x15a6, 0xdca: 0x141e, 0xdcb: 0x0c22,\n\t0xdcc: 0x0882, 0xdcd: 0x0a56, 0xdd0: 0x0aaa,\n\t0xdd2: 0x0dda, 0xdd5: 0x08f2, 0xdd6: 0x101a, 0xdd7: 0x10de,\n\t0xdd8: 0x1142, 0xdd9: 0x115e, 0xdda: 0x1162, 0xddb: 0x1176, 0xddc: 0x15f6, 0xddd: 0x11e6,\n\t0xdde: 0x126a, 0xde0: 0x138a, 0xde2: 0x144e,\n\t0xde5: 0x1502, 0xde6: 0x152e,\n\t0xdea: 0x164a, 0xdeb: 0x164e, 0xdec: 0x1652, 0xded: 0x16b6, 0xdee: 0x1526, 0xdef: 0x15c2,\n\t0xdf0: 0x0852, 0xdf1: 0x0876, 0xdf2: 0x088a, 0xdf3: 0x0946, 0xdf4: 0x0952, 0xdf5: 0x0992,\n\t0xdf6: 0x0a46, 0xdf7: 0x0a62, 0xdf8: 0x0a6a, 0xdf9: 0x0aa6, 0xdfa: 0x0ab2, 0xdfb: 0x0b8e,\n\t0xdfc: 0x0b96, 0xdfd: 0x0c9e, 0xdfe: 0x0cc6, 0xdff: 0x0cce,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x0ce6, 0xe01: 0x0d92, 0xe02: 0x0dc2, 0xe03: 0x0de2, 0xe04: 0x0e52, 0xe05: 0x0f16,\n\t0xe06: 0x0f32, 0xe07: 0x0f62, 0xe08: 0x0fb6, 0xe09: 0x0fd6, 0xe0a: 0x104a, 0xe0b: 0x112a,\n\t0xe0c: 0x1146, 0xe0d: 0x114e, 0xe0e: 0x114a, 0xe0f: 0x1152, 0xe10: 0x1156, 0xe11: 0x115a,\n\t0xe12: 0x116e, 0xe13: 0x1172, 0xe14: 0x1196, 0xe15: 0x11aa, 0xe16: 0x11c6, 0xe17: 0x122a,\n\t0xe18: 0x1232, 0xe19: 0x123a, 0xe1a: 0x124e, 0xe1b: 0x1276, 0xe1c: 0x12c6, 0xe1d: 0x12fa,\n\t0xe1e: 0x12fa, 0xe1f: 0x1362, 0xe20: 0x140a, 0xe21: 0x1422, 0xe22: 0x1456, 0xe23: 0x145a,\n\t0xe24: 0x149e, 0xe25: 0x14a2, 0xe26: 0x14fa, 0xe27: 0x1502, 0xe28: 0x15d6, 0xe29: 0x161a,\n\t0xe2a: 0x1632, 0xe2b: 0x0c96, 0xe2c: 0x184b, 0xe2d: 0x12de,\n\t0xe30: 0x07da, 0xe31: 0x08de, 0xe32: 0x089e, 0xe33: 0x0846, 0xe34: 0x0886, 0xe35: 0x08b2,\n\t0xe36: 0x0942, 0xe37: 0x095e, 0xe38: 0x0a46, 0xe39: 0x0a32, 0xe3a: 0x0a42, 0xe3b: 0x0a5e,\n\t0xe3c: 0x0aaa, 0xe3d: 0x0aba, 0xe3e: 0x0afe, 0xe3f: 0x0b0a,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x0b26, 0xe41: 0x0b36, 0xe42: 0x0c1e, 0xe43: 0x0c26, 0xe44: 0x0c56, 0xe45: 0x0c76,\n\t0xe46: 0x0ca6, 0xe47: 0x0cbe, 0xe48: 0x0cae, 0xe49: 0x0cce, 0xe4a: 0x0cc2, 0xe4b: 0x0ce6,\n\t0xe4c: 0x0d02, 0xe4d: 0x0d5a, 0xe4e: 0x0d66, 0xe4f: 0x0d6e, 0xe50: 0x0d96, 0xe51: 0x0dda,\n\t0xe52: 0x0e0a, 0xe53: 0x0e0e, 0xe54: 0x0e22, 0xe55: 0x0ea2, 0xe56: 0x0eb2, 0xe57: 0x0f0a,\n\t0xe58: 0x0f56, 0xe59: 0x0f4e, 0xe5a: 0x0f62, 0xe5b: 0x0f7e, 0xe5c: 0x0fb6, 0xe5d: 0x110e,\n\t0xe5e: 0x0fda, 0xe5f: 0x100e, 0xe60: 0x101a, 0xe61: 0x105a, 0xe62: 0x1076, 0xe63: 0x109a,\n\t0xe64: 0x10be, 0xe65: 0x10c2, 0xe66: 0x10de, 0xe67: 0x10e2, 0xe68: 0x10f2, 0xe69: 0x1106,\n\t0xe6a: 0x1102, 0xe6b: 0x1132, 0xe6c: 0x11ae, 0xe6d: 0x11c6, 0xe6e: 0x11de, 0xe6f: 0x1216,\n\t0xe70: 0x122a, 0xe71: 0x1246, 0xe72: 0x1276, 0xe73: 0x132a, 0xe74: 0x1352, 0xe75: 0x13c6,\n\t0xe76: 0x140e, 0xe77: 0x141a, 0xe78: 0x1422, 0xe79: 0x143a, 0xe7a: 0x144e, 0xe7b: 0x143e,\n\t0xe7c: 0x1456, 0xe7d: 0x1452, 0xe7e: 0x144a, 0xe7f: 0x145a,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x1466, 0xe81: 0x14a2, 0xe82: 0x14de, 0xe83: 0x150e, 0xe84: 0x1546, 0xe85: 0x1566,\n\t0xe86: 0x15b2, 0xe87: 0x15d6, 0xe88: 0x15f6, 0xe89: 0x160a, 0xe8a: 0x161a, 0xe8b: 0x1626,\n\t0xe8c: 0x1632, 0xe8d: 0x1686, 0xe8e: 0x1726, 0xe8f: 0x17e2, 0xe90: 0x17dd, 0xe91: 0x180f,\n\t0xe92: 0x0702, 0xe93: 0x072a, 0xe94: 0x072e, 0xe95: 0x1891, 0xe96: 0x18be, 0xe97: 0x1936,\n\t0xe98: 0x1712, 0xe99: 0x1722,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x1b05, 0xec1: 0x1b08, 0xec2: 0x1b0b, 0xec3: 0x1d38, 0xec4: 0x1d3c, 0xec5: 0x1b8f,\n\t0xec6: 0x1b8f,\n\t0xed3: 0x1ea5, 0xed4: 0x1e96, 0xed5: 0x1e9b, 0xed6: 0x1eaa, 0xed7: 0x1ea0,\n\t0xedd: 0x448f,\n\t0xede: 0x8116, 0xedf: 0x4501, 0xee0: 0x0320, 0xee1: 0x0308, 0xee2: 0x0311, 0xee3: 0x0314,\n\t0xee4: 0x0317, 0xee5: 0x031a, 0xee6: 0x031d, 0xee7: 0x0323, 0xee8: 0x0326, 0xee9: 0x0017,\n\t0xeea: 0x44ef, 0xeeb: 0x44f5, 0xeec: 0x45f3, 0xeed: 0x45fb, 0xeee: 0x4447, 0xeef: 0x444d,\n\t0xef0: 0x4453, 0xef1: 0x4459, 0xef2: 0x4465, 0xef3: 0x446b, 0xef4: 0x4471, 0xef5: 0x447d,\n\t0xef6: 0x4483, 0xef8: 0x4489, 0xef9: 0x4495, 0xefa: 0x449b, 0xefb: 0x44a1,\n\t0xefc: 0x44ad, 0xefe: 0x44b3,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x44b9, 0xf01: 0x44bf, 0xf03: 0x44c5, 0xf04: 0x44cb,\n\t0xf06: 0x44d7, 0xf07: 0x44dd, 0xf08: 0x44e3, 0xf09: 0x44e9, 0xf0a: 0x44fb, 0xf0b: 0x4477,\n\t0xf0c: 0x445f, 0xf0d: 0x44a7, 0xf0e: 0x44d1, 0xf0f: 0x1eaf, 0xf10: 0x038c, 0xf11: 0x038c,\n\t0xf12: 0x0395, 0xf13: 0x0395, 0xf14: 0x0395, 0xf15: 0x0395, 0xf16: 0x0398, 0xf17: 0x0398,\n\t0xf18: 0x0398, 0xf19: 0x0398, 0xf1a: 0x039e, 0xf1b: 0x039e, 0xf1c: 0x039e, 0xf1d: 0x039e,\n\t0xf1e: 0x0392, 0xf1f: 0x0392, 0xf20: 0x0392, 0xf21: 0x0392, 0xf22: 0x039b, 0xf23: 0x039b,\n\t0xf24: 0x039b, 0xf25: 0x039b, 0xf26: 0x038f, 0xf27: 0x038f, 0xf28: 0x038f, 0xf29: 0x038f,\n\t0xf2a: 0x03c2, 0xf2b: 0x03c2, 0xf2c: 0x03c2, 0xf2d: 0x03c2, 0xf2e: 0x03c5, 0xf2f: 0x03c5,\n\t0xf30: 0x03c5, 0xf31: 0x03c5, 0xf32: 0x03a4, 0xf33: 0x03a4, 0xf34: 0x03a4, 0xf35: 0x03a4,\n\t0xf36: 0x03a1, 0xf37: 0x03a1, 0xf38: 0x03a1, 0xf39: 0x03a1, 0xf3a: 0x03a7, 0xf3b: 0x03a7,\n\t0xf3c: 0x03a7, 0xf3d: 0x03a7, 0xf3e: 0x03aa, 0xf3f: 0x03aa,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x03aa, 0xf41: 0x03aa, 0xf42: 0x03b3, 0xf43: 0x03b3, 0xf44: 0x03b0, 0xf45: 0x03b0,\n\t0xf46: 0x03b6, 0xf47: 0x03b6, 0xf48: 0x03ad, 0xf49: 0x03ad, 0xf4a: 0x03bc, 0xf4b: 0x03bc,\n\t0xf4c: 0x03b9, 0xf4d: 0x03b9, 0xf4e: 0x03c8, 0xf4f: 0x03c8, 0xf50: 0x03c8, 0xf51: 0x03c8,\n\t0xf52: 0x03ce, 0xf53: 0x03ce, 0xf54: 0x03ce, 0xf55: 0x03ce, 0xf56: 0x03d4, 0xf57: 0x03d4,\n\t0xf58: 0x03d4, 0xf59: 0x03d4, 0xf5a: 0x03d1, 0xf5b: 0x03d1, 0xf5c: 0x03d1, 0xf5d: 0x03d1,\n\t0xf5e: 0x03d7, 0xf5f: 0x03d7, 0xf60: 0x03da, 0xf61: 0x03da, 0xf62: 0x03da, 0xf63: 0x03da,\n\t0xf64: 0x456d, 0xf65: 0x456d, 0xf66: 0x03e0, 0xf67: 0x03e0, 0xf68: 0x03e0, 0xf69: 0x03e0,\n\t0xf6a: 0x03dd, 0xf6b: 0x03dd, 0xf6c: 0x03dd, 0xf6d: 0x03dd, 0xf6e: 0x03fb, 0xf6f: 0x03fb,\n\t0xf70: 0x4567, 0xf71: 0x4567,\n\t// Block 0x3e, offset 0xf80\n\t0xf93: 0x03cb, 0xf94: 0x03cb, 0xf95: 0x03cb, 0xf96: 0x03cb, 0xf97: 0x03e9,\n\t0xf98: 0x03e9, 0xf99: 0x03e6, 0xf9a: 0x03e6, 0xf9b: 0x03ec, 0xf9c: 0x03ec, 0xf9d: 0x217f,\n\t0xf9e: 0x03f2, 0xf9f: 0x03f2, 0xfa0: 0x03e3, 0xfa1: 0x03e3, 0xfa2: 0x03ef, 0xfa3: 0x03ef,\n\t0xfa4: 0x03f8, 0xfa5: 0x03f8, 0xfa6: 0x03f8, 0xfa7: 0x03f8, 0xfa8: 0x0380, 0xfa9: 0x0380,\n\t0xfaa: 0x26da, 0xfab: 0x26da, 0xfac: 0x274a, 0xfad: 0x274a, 0xfae: 0x2719, 0xfaf: 0x2719,\n\t0xfb0: 0x2735, 0xfb1: 0x2735, 0xfb2: 0x272e, 0xfb3: 0x272e, 0xfb4: 0x273c, 0xfb5: 0x273c,\n\t0xfb6: 0x2743, 0xfb7: 0x2743, 0xfb8: 0x2743, 0xfb9: 0x2720, 0xfba: 0x2720, 0xfbb: 0x2720,\n\t0xfbc: 0x03f5, 0xfbd: 0x03f5, 0xfbe: 0x03f5, 0xfbf: 0x03f5,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x26e1, 0xfc1: 0x26e8, 0xfc2: 0x2704, 0xfc3: 0x2720, 0xfc4: 0x2727, 0xfc5: 0x1eb9,\n\t0xfc6: 0x1ebe, 0xfc7: 0x1ec3, 0xfc8: 0x1ed2, 0xfc9: 0x1ee1, 0xfca: 0x1ee6, 0xfcb: 0x1eeb,\n\t0xfcc: 0x1ef0, 0xfcd: 0x1ef5, 0xfce: 0x1f04, 0xfcf: 0x1f13, 0xfd0: 0x1f18, 0xfd1: 0x1f1d,\n\t0xfd2: 0x1f2c, 0xfd3: 0x1f3b, 0xfd4: 0x1f40, 0xfd5: 0x1f45, 0xfd6: 0x1f4a, 0xfd7: 0x1f59,\n\t0xfd8: 0x1f5e, 0xfd9: 0x1f6d, 0xfda: 0x1f72, 0xfdb: 0x1f77, 0xfdc: 0x1f86, 0xfdd: 0x1f8b,\n\t0xfde: 0x1f90, 0xfdf: 0x1f9a, 0xfe0: 0x1fd6, 0xfe1: 0x1fe5, 0xfe2: 0x1ff4, 0xfe3: 0x1ff9,\n\t0xfe4: 0x1ffe, 0xfe5: 0x2008, 0xfe6: 0x2017, 0xfe7: 0x201c, 0xfe8: 0x202b, 0xfe9: 0x2030,\n\t0xfea: 0x2035, 0xfeb: 0x2044, 0xfec: 0x2049, 0xfed: 0x2058, 0xfee: 0x205d, 0xfef: 0x2062,\n\t0xff0: 0x2067, 0xff1: 0x206c, 0xff2: 0x2071, 0xff3: 0x2076, 0xff4: 0x207b, 0xff5: 0x2080,\n\t0xff6: 0x2085, 0xff7: 0x208a, 0xff8: 0x208f, 0xff9: 0x2094, 0xffa: 0x2099, 0xffb: 0x209e,\n\t0xffc: 0x20a3, 0xffd: 0x20a8, 0xffe: 0x20ad, 0xfff: 0x20b7,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x20bc, 0x1001: 0x20c1, 0x1002: 0x20c6, 0x1003: 0x20d0, 0x1004: 0x20d5, 0x1005: 0x20df,\n\t0x1006: 0x20e4, 0x1007: 0x20e9, 0x1008: 0x20ee, 0x1009: 0x20f3, 0x100a: 0x20f8, 0x100b: 0x20fd,\n\t0x100c: 0x2102, 0x100d: 0x2107, 0x100e: 0x2116, 0x100f: 0x2125, 0x1010: 0x212a, 0x1011: 0x212f,\n\t0x1012: 0x2134, 0x1013: 0x2139, 0x1014: 0x213e, 0x1015: 0x2148, 0x1016: 0x214d, 0x1017: 0x2152,\n\t0x1018: 0x2161, 0x1019: 0x2170, 0x101a: 0x2175, 0x101b: 0x451f, 0x101c: 0x4525, 0x101d: 0x455b,\n\t0x101e: 0x45b2, 0x101f: 0x45b9, 0x1020: 0x45c0, 0x1021: 0x45c7, 0x1022: 0x45ce, 0x1023: 0x45d5,\n\t0x1024: 0x26f6, 0x1025: 0x26fd, 0x1026: 0x2704, 0x1027: 0x270b, 0x1028: 0x2720, 0x1029: 0x2727,\n\t0x102a: 0x1ec8, 0x102b: 0x1ecd, 0x102c: 0x1ed2, 0x102d: 0x1ed7, 0x102e: 0x1ee1, 0x102f: 0x1ee6,\n\t0x1030: 0x1efa, 0x1031: 0x1eff, 0x1032: 0x1f04, 0x1033: 0x1f09, 0x1034: 0x1f13, 0x1035: 0x1f18,\n\t0x1036: 0x1f22, 0x1037: 0x1f27, 0x1038: 0x1f2c, 0x1039: 0x1f31, 0x103a: 0x1f3b, 0x103b: 0x1f40,\n\t0x103c: 0x206c, 0x103d: 0x2071, 0x103e: 0x2080, 0x103f: 0x2085,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x208a, 0x1041: 0x209e, 0x1042: 0x20a3, 0x1043: 0x20a8, 0x1044: 0x20ad, 0x1045: 0x20c6,\n\t0x1046: 0x20d0, 0x1047: 0x20d5, 0x1048: 0x20da, 0x1049: 0x20ee, 0x104a: 0x210c, 0x104b: 0x2111,\n\t0x104c: 0x2116, 0x104d: 0x211b, 0x104e: 0x2125, 0x104f: 0x212a, 0x1050: 0x455b, 0x1051: 0x2157,\n\t0x1052: 0x215c, 0x1053: 0x2161, 0x1054: 0x2166, 0x1055: 0x2170, 0x1056: 0x2175, 0x1057: 0x26e1,\n\t0x1058: 0x26e8, 0x1059: 0x26ef, 0x105a: 0x2704, 0x105b: 0x2712, 0x105c: 0x1eb9, 0x105d: 0x1ebe,\n\t0x105e: 0x1ec3, 0x105f: 0x1ed2, 0x1060: 0x1edc, 0x1061: 0x1eeb, 0x1062: 0x1ef0, 0x1063: 0x1ef5,\n\t0x1064: 0x1f04, 0x1065: 0x1f0e, 0x1066: 0x1f2c, 0x1067: 0x1f45, 0x1068: 0x1f4a, 0x1069: 0x1f59,\n\t0x106a: 0x1f5e, 0x106b: 0x1f6d, 0x106c: 0x1f77, 0x106d: 0x1f86, 0x106e: 0x1f8b, 0x106f: 0x1f90,\n\t0x1070: 0x1f9a, 0x1071: 0x1fd6, 0x1072: 0x1fdb, 0x1073: 0x1fe5, 0x1074: 0x1ff4, 0x1075: 0x1ff9,\n\t0x1076: 0x1ffe, 0x1077: 0x2008, 0x1078: 0x2017, 0x1079: 0x202b, 0x107a: 0x2030, 0x107b: 0x2035,\n\t0x107c: 0x2044, 0x107d: 0x2049, 0x107e: 0x2058, 0x107f: 0x205d,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x2062, 0x1081: 0x2067, 0x1082: 0x2076, 0x1083: 0x207b, 0x1084: 0x208f, 0x1085: 0x2094,\n\t0x1086: 0x2099, 0x1087: 0x209e, 0x1088: 0x20a3, 0x1089: 0x20b7, 0x108a: 0x20bc, 0x108b: 0x20c1,\n\t0x108c: 0x20c6, 0x108d: 0x20cb, 0x108e: 0x20df, 0x108f: 0x20e4, 0x1090: 0x20e9, 0x1091: 0x20ee,\n\t0x1092: 0x20fd, 0x1093: 0x2102, 0x1094: 0x2107, 0x1095: 0x2116, 0x1096: 0x2120, 0x1097: 0x212f,\n\t0x1098: 0x2134, 0x1099: 0x454f, 0x109a: 0x2148, 0x109b: 0x214d, 0x109c: 0x2152, 0x109d: 0x2161,\n\t0x109e: 0x216b, 0x109f: 0x2704, 0x10a0: 0x2712, 0x10a1: 0x1ed2, 0x10a2: 0x1edc, 0x10a3: 0x1f04,\n\t0x10a4: 0x1f0e, 0x10a5: 0x1f2c, 0x10a6: 0x1f36, 0x10a7: 0x1f9a, 0x10a8: 0x1f9f, 0x10a9: 0x1fc2,\n\t0x10aa: 0x1fc7, 0x10ab: 0x209e, 0x10ac: 0x20a3, 0x10ad: 0x20c6, 0x10ae: 0x2116, 0x10af: 0x2120,\n\t0x10b0: 0x2161, 0x10b1: 0x216b, 0x10b2: 0x4603, 0x10b3: 0x460b, 0x10b4: 0x4613, 0x10b5: 0x2021,\n\t0x10b6: 0x2026, 0x10b7: 0x203a, 0x10b8: 0x203f, 0x10b9: 0x204e, 0x10ba: 0x2053, 0x10bb: 0x1fa4,\n\t0x10bc: 0x1fa9, 0x10bd: 0x1fcc, 0x10be: 0x1fd1, 0x10bf: 0x1f63,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x1f68, 0x10c1: 0x1f4f, 0x10c2: 0x1f54, 0x10c3: 0x1f7c, 0x10c4: 0x1f81, 0x10c5: 0x1fea,\n\t0x10c6: 0x1fef, 0x10c7: 0x200d, 0x10c8: 0x2012, 0x10c9: 0x1fae, 0x10ca: 0x1fb3, 0x10cb: 0x1fb8,\n\t0x10cc: 0x1fc2, 0x10cd: 0x1fbd, 0x10ce: 0x1f95, 0x10cf: 0x1fe0, 0x10d0: 0x2003, 0x10d1: 0x2021,\n\t0x10d2: 0x2026, 0x10d3: 0x203a, 0x10d4: 0x203f, 0x10d5: 0x204e, 0x10d6: 0x2053, 0x10d7: 0x1fa4,\n\t0x10d8: 0x1fa9, 0x10d9: 0x1fcc, 0x10da: 0x1fd1, 0x10db: 0x1f63, 0x10dc: 0x1f68, 0x10dd: 0x1f4f,\n\t0x10de: 0x1f54, 0x10df: 0x1f7c, 0x10e0: 0x1f81, 0x10e1: 0x1fea, 0x10e2: 0x1fef, 0x10e3: 0x200d,\n\t0x10e4: 0x2012, 0x10e5: 0x1fae, 0x10e6: 0x1fb3, 0x10e7: 0x1fb8, 0x10e8: 0x1fc2, 0x10e9: 0x1fbd,\n\t0x10ea: 0x1f95, 0x10eb: 0x1fe0, 0x10ec: 0x2003, 0x10ed: 0x1fae, 0x10ee: 0x1fb3, 0x10ef: 0x1fb8,\n\t0x10f0: 0x1fc2, 0x10f1: 0x1f9f, 0x10f2: 0x1fc7, 0x10f3: 0x201c, 0x10f4: 0x1f86, 0x10f5: 0x1f8b,\n\t0x10f6: 0x1f90, 0x10f7: 0x1fae, 0x10f8: 0x1fb3, 0x10f9: 0x1fb8, 0x10fa: 0x201c, 0x10fb: 0x202b,\n\t0x10fc: 0x4507, 0x10fd: 0x4507,\n\t// Block 0x44, offset 0x1100\n\t0x1110: 0x2441, 0x1111: 0x2456,\n\t0x1112: 0x2456, 0x1113: 0x245d, 0x1114: 0x2464, 0x1115: 0x2479, 0x1116: 0x2480, 0x1117: 0x2487,\n\t0x1118: 0x24aa, 0x1119: 0x24aa, 0x111a: 0x24cd, 0x111b: 0x24c6, 0x111c: 0x24e2, 0x111d: 0x24d4,\n\t0x111e: 0x24db, 0x111f: 0x24fe, 0x1120: 0x24fe, 0x1121: 0x24f7, 0x1122: 0x2505, 0x1123: 0x2505,\n\t0x1124: 0x252f, 0x1125: 0x252f, 0x1126: 0x254b, 0x1127: 0x2513, 0x1128: 0x2513, 0x1129: 0x250c,\n\t0x112a: 0x2521, 0x112b: 0x2521, 0x112c: 0x2528, 0x112d: 0x2528, 0x112e: 0x2552, 0x112f: 0x2560,\n\t0x1130: 0x2560, 0x1131: 0x2567, 0x1132: 0x2567, 0x1133: 0x256e, 0x1134: 0x2575, 0x1135: 0x257c,\n\t0x1136: 0x2583, 0x1137: 0x2583, 0x1138: 0x258a, 0x1139: 0x2598, 0x113a: 0x25a6, 0x113b: 0x259f,\n\t0x113c: 0x25ad, 0x113d: 0x25ad, 0x113e: 0x25c2, 0x113f: 0x25c9,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0x25fa, 0x1141: 0x2608, 0x1142: 0x2601, 0x1143: 0x25e5, 0x1144: 0x25e5, 0x1145: 0x260f,\n\t0x1146: 0x260f, 0x1147: 0x2616, 0x1148: 0x2616, 0x1149: 0x2640, 0x114a: 0x2647, 0x114b: 0x264e,\n\t0x114c: 0x2624, 0x114d: 0x2632, 0x114e: 0x2655, 0x114f: 0x265c,\n\t0x1152: 0x262b, 0x1153: 0x26b0, 0x1154: 0x26b7, 0x1155: 0x268d, 0x1156: 0x2694, 0x1157: 0x2678,\n\t0x1158: 0x2678, 0x1159: 0x267f, 0x115a: 0x26a9, 0x115b: 0x26a2, 0x115c: 0x26cc, 0x115d: 0x26cc,\n\t0x115e: 0x243a, 0x115f: 0x244f, 0x1160: 0x2448, 0x1161: 0x2472, 0x1162: 0x246b, 0x1163: 0x2495,\n\t0x1164: 0x248e, 0x1165: 0x24b8, 0x1166: 0x249c, 0x1167: 0x24b1, 0x1168: 0x24e9, 0x1169: 0x2536,\n\t0x116a: 0x251a, 0x116b: 0x2559, 0x116c: 0x25f3, 0x116d: 0x261d, 0x116e: 0x26c5, 0x116f: 0x26be,\n\t0x1170: 0x26d3, 0x1171: 0x266a, 0x1172: 0x25d0, 0x1173: 0x269b, 0x1174: 0x25c2, 0x1175: 0x25fa,\n\t0x1176: 0x2591, 0x1177: 0x25de, 0x1178: 0x2671, 0x1179: 0x2663, 0x117a: 0x25ec, 0x117b: 0x25d7,\n\t0x117c: 0x25ec, 0x117d: 0x2671, 0x117e: 0x24a3, 0x117f: 0x24bf,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x2639, 0x1181: 0x25b4, 0x1182: 0x2433, 0x1183: 0x25d7, 0x1184: 0x257c, 0x1185: 0x254b,\n\t0x1186: 0x24f0, 0x1187: 0x2686,\n\t0x11b0: 0x2544, 0x11b1: 0x25bb, 0x11b2: 0x28f6, 0x11b3: 0x28ed, 0x11b4: 0x2923, 0x11b5: 0x2911,\n\t0x11b6: 0x28ff, 0x11b7: 0x291a, 0x11b8: 0x292c, 0x11b9: 0x253d, 0x11ba: 0x2db3, 0x11bb: 0x2c33,\n\t0x11bc: 0x2908,\n\t// Block 0x47, offset 0x11c0\n\t0x11d0: 0x0019, 0x11d1: 0x057e,\n\t0x11d2: 0x0582, 0x11d3: 0x0035, 0x11d4: 0x0037, 0x11d5: 0x0003, 0x11d6: 0x003f, 0x11d7: 0x05ba,\n\t0x11d8: 0x05be, 0x11d9: 0x1c8c,\n\t0x11e0: 0x8133, 0x11e1: 0x8133, 0x11e2: 0x8133, 0x11e3: 0x8133,\n\t0x11e4: 0x8133, 0x11e5: 0x8133, 0x11e6: 0x8133, 0x11e7: 0x812e, 0x11e8: 0x812e, 0x11e9: 0x812e,\n\t0x11ea: 0x812e, 0x11eb: 0x812e, 0x11ec: 0x812e, 0x11ed: 0x812e, 0x11ee: 0x8133, 0x11ef: 0x8133,\n\t0x11f0: 0x19a0, 0x11f1: 0x053a, 0x11f2: 0x0536, 0x11f3: 0x007f, 0x11f4: 0x007f, 0x11f5: 0x0011,\n\t0x11f6: 0x0013, 0x11f7: 0x00b7, 0x11f8: 0x00bb, 0x11f9: 0x05b2, 0x11fa: 0x05b6, 0x11fb: 0x05a6,\n\t0x11fc: 0x05aa, 0x11fd: 0x058e, 0x11fe: 0x0592, 0x11ff: 0x0586,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x058a, 0x1201: 0x0596, 0x1202: 0x059a, 0x1203: 0x059e, 0x1204: 0x05a2,\n\t0x1207: 0x0077, 0x1208: 0x007b, 0x1209: 0x4368, 0x120a: 0x4368, 0x120b: 0x4368,\n\t0x120c: 0x4368, 0x120d: 0x007f, 0x120e: 0x007f, 0x120f: 0x007f, 0x1210: 0x0019, 0x1211: 0x057e,\n\t0x1212: 0x001d, 0x1214: 0x0037, 0x1215: 0x0035, 0x1216: 0x003f, 0x1217: 0x0003,\n\t0x1218: 0x053a, 0x1219: 0x0011, 0x121a: 0x0013, 0x121b: 0x00b7, 0x121c: 0x00bb, 0x121d: 0x05b2,\n\t0x121e: 0x05b6, 0x121f: 0x0007, 0x1220: 0x000d, 0x1221: 0x0015, 0x1222: 0x0017, 0x1223: 0x001b,\n\t0x1224: 0x0039, 0x1225: 0x003d, 0x1226: 0x003b, 0x1228: 0x0079, 0x1229: 0x0009,\n\t0x122a: 0x000b, 0x122b: 0x0041,\n\t0x1230: 0x43a9, 0x1231: 0x452b, 0x1232: 0x43ae, 0x1234: 0x43b3,\n\t0x1236: 0x43b8, 0x1237: 0x4531, 0x1238: 0x43bd, 0x1239: 0x4537, 0x123a: 0x43c2, 0x123b: 0x453d,\n\t0x123c: 0x43c7, 0x123d: 0x4543, 0x123e: 0x43cc, 0x123f: 0x4549,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x0329, 0x1241: 0x450d, 0x1242: 0x450d, 0x1243: 0x4513, 0x1244: 0x4513, 0x1245: 0x4555,\n\t0x1246: 0x4555, 0x1247: 0x4519, 0x1248: 0x4519, 0x1249: 0x4561, 0x124a: 0x4561, 0x124b: 0x4561,\n\t0x124c: 0x4561, 0x124d: 0x032c, 0x124e: 0x032c, 0x124f: 0x032f, 0x1250: 0x032f, 0x1251: 0x032f,\n\t0x1252: 0x032f, 0x1253: 0x0332, 0x1254: 0x0332, 0x1255: 0x0335, 0x1256: 0x0335, 0x1257: 0x0335,\n\t0x1258: 0x0335, 0x1259: 0x0338, 0x125a: 0x0338, 0x125b: 0x0338, 0x125c: 0x0338, 0x125d: 0x033b,\n\t0x125e: 0x033b, 0x125f: 0x033b, 0x1260: 0x033b, 0x1261: 0x033e, 0x1262: 0x033e, 0x1263: 0x033e,\n\t0x1264: 0x033e, 0x1265: 0x0341, 0x1266: 0x0341, 0x1267: 0x0341, 0x1268: 0x0341, 0x1269: 0x0344,\n\t0x126a: 0x0344, 0x126b: 0x0347, 0x126c: 0x0347, 0x126d: 0x034a, 0x126e: 0x034a, 0x126f: 0x034d,\n\t0x1270: 0x034d, 0x1271: 0x0350, 0x1272: 0x0350, 0x1273: 0x0350, 0x1274: 0x0350, 0x1275: 0x0353,\n\t0x1276: 0x0353, 0x1277: 0x0353, 0x1278: 0x0353, 0x1279: 0x0356, 0x127a: 0x0356, 0x127b: 0x0356,\n\t0x127c: 0x0356, 0x127d: 0x0359, 0x127e: 0x0359, 0x127f: 0x0359,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x0359, 0x1281: 0x035c, 0x1282: 0x035c, 0x1283: 0x035c, 0x1284: 0x035c, 0x1285: 0x035f,\n\t0x1286: 0x035f, 0x1287: 0x035f, 0x1288: 0x035f, 0x1289: 0x0362, 0x128a: 0x0362, 0x128b: 0x0362,\n\t0x128c: 0x0362, 0x128d: 0x0365, 0x128e: 0x0365, 0x128f: 0x0365, 0x1290: 0x0365, 0x1291: 0x0368,\n\t0x1292: 0x0368, 0x1293: 0x0368, 0x1294: 0x0368, 0x1295: 0x036b, 0x1296: 0x036b, 0x1297: 0x036b,\n\t0x1298: 0x036b, 0x1299: 0x036e, 0x129a: 0x036e, 0x129b: 0x036e, 0x129c: 0x036e, 0x129d: 0x0371,\n\t0x129e: 0x0371, 0x129f: 0x0371, 0x12a0: 0x0371, 0x12a1: 0x0374, 0x12a2: 0x0374, 0x12a3: 0x0374,\n\t0x12a4: 0x0374, 0x12a5: 0x0377, 0x12a6: 0x0377, 0x12a7: 0x0377, 0x12a8: 0x0377, 0x12a9: 0x037a,\n\t0x12aa: 0x037a, 0x12ab: 0x037a, 0x12ac: 0x037a, 0x12ad: 0x037d, 0x12ae: 0x037d, 0x12af: 0x0380,\n\t0x12b0: 0x0380, 0x12b1: 0x0383, 0x12b2: 0x0383, 0x12b3: 0x0383, 0x12b4: 0x0383, 0x12b5: 0x2de7,\n\t0x12b6: 0x2de7, 0x12b7: 0x2def, 0x12b8: 0x2def, 0x12b9: 0x2df7, 0x12ba: 0x2df7, 0x12bb: 0x20b2,\n\t0x12bc: 0x20b2,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x0081, 0x12c1: 0x0083, 0x12c2: 0x0085, 0x12c3: 0x0087, 0x12c4: 0x0089, 0x12c5: 0x008b,\n\t0x12c6: 0x008d, 0x12c7: 0x008f, 0x12c8: 0x0091, 0x12c9: 0x0093, 0x12ca: 0x0095, 0x12cb: 0x0097,\n\t0x12cc: 0x0099, 0x12cd: 0x009b, 0x12ce: 0x009d, 0x12cf: 0x009f, 0x12d0: 0x00a1, 0x12d1: 0x00a3,\n\t0x12d2: 0x00a5, 0x12d3: 0x00a7, 0x12d4: 0x00a9, 0x12d5: 0x00ab, 0x12d6: 0x00ad, 0x12d7: 0x00af,\n\t0x12d8: 0x00b1, 0x12d9: 0x00b3, 0x12da: 0x00b5, 0x12db: 0x00b7, 0x12dc: 0x00b9, 0x12dd: 0x00bb,\n\t0x12de: 0x00bd, 0x12df: 0x056e, 0x12e0: 0x0572, 0x12e1: 0x0582, 0x12e2: 0x0596, 0x12e3: 0x059a,\n\t0x12e4: 0x057e, 0x12e5: 0x06a6, 0x12e6: 0x069e, 0x12e7: 0x05c2, 0x12e8: 0x05ca, 0x12e9: 0x05d2,\n\t0x12ea: 0x05da, 0x12eb: 0x05e2, 0x12ec: 0x0666, 0x12ed: 0x066e, 0x12ee: 0x0676, 0x12ef: 0x061a,\n\t0x12f0: 0x06aa, 0x12f1: 0x05c6, 0x12f2: 0x05ce, 0x12f3: 0x05d6, 0x12f4: 0x05de, 0x12f5: 0x05e6,\n\t0x12f6: 0x05ea, 0x12f7: 0x05ee, 0x12f8: 0x05f2, 0x12f9: 0x05f6, 0x12fa: 0x05fa, 0x12fb: 0x05fe,\n\t0x12fc: 0x0602, 0x12fd: 0x0606, 0x12fe: 0x060a, 0x12ff: 0x060e,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x0612, 0x1301: 0x0616, 0x1302: 0x061e, 0x1303: 0x0622, 0x1304: 0x0626, 0x1305: 0x062a,\n\t0x1306: 0x062e, 0x1307: 0x0632, 0x1308: 0x0636, 0x1309: 0x063a, 0x130a: 0x063e, 0x130b: 0x0642,\n\t0x130c: 0x0646, 0x130d: 0x064a, 0x130e: 0x064e, 0x130f: 0x0652, 0x1310: 0x0656, 0x1311: 0x065a,\n\t0x1312: 0x065e, 0x1313: 0x0662, 0x1314: 0x066a, 0x1315: 0x0672, 0x1316: 0x067a, 0x1317: 0x067e,\n\t0x1318: 0x0682, 0x1319: 0x0686, 0x131a: 0x068a, 0x131b: 0x068e, 0x131c: 0x0692, 0x131d: 0x06a2,\n\t0x131e: 0x4c99, 0x131f: 0x4c9f, 0x1320: 0x04b6, 0x1321: 0x0406, 0x1322: 0x040a, 0x1323: 0x4bcc,\n\t0x1324: 0x040e, 0x1325: 0x4bd2, 0x1326: 0x4bd8, 0x1327: 0x0412, 0x1328: 0x0416, 0x1329: 0x041a,\n\t0x132a: 0x4bde, 0x132b: 0x4be4, 0x132c: 0x4bea, 0x132d: 0x4bf0, 0x132e: 0x4bf6, 0x132f: 0x4bfc,\n\t0x1330: 0x045a, 0x1331: 0x041e, 0x1332: 0x0422, 0x1333: 0x0426, 0x1334: 0x046e, 0x1335: 0x042a,\n\t0x1336: 0x042e, 0x1337: 0x0432, 0x1338: 0x0436, 0x1339: 0x043a, 0x133a: 0x043e, 0x133b: 0x0442,\n\t0x133c: 0x0446, 0x133d: 0x044a, 0x133e: 0x044e,\n\t// Block 0x4d, offset 0x1340\n\t0x1342: 0x4b4e, 0x1343: 0x4b54, 0x1344: 0x4b5a, 0x1345: 0x4b60,\n\t0x1346: 0x4b66, 0x1347: 0x4b6c, 0x134a: 0x4b72, 0x134b: 0x4b78,\n\t0x134c: 0x4b7e, 0x134d: 0x4b84, 0x134e: 0x4b8a, 0x134f: 0x4b90,\n\t0x1352: 0x4b96, 0x1353: 0x4b9c, 0x1354: 0x4ba2, 0x1355: 0x4ba8, 0x1356: 0x4bae, 0x1357: 0x4bb4,\n\t0x135a: 0x4bba, 0x135b: 0x4bc0, 0x135c: 0x4bc6,\n\t0x1360: 0x00bf, 0x1361: 0x00c2, 0x1362: 0x00cb, 0x1363: 0x4363,\n\t0x1364: 0x00c8, 0x1365: 0x00c5, 0x1366: 0x053e, 0x1368: 0x0562, 0x1369: 0x0542,\n\t0x136a: 0x0546, 0x136b: 0x054a, 0x136c: 0x054e, 0x136d: 0x0566, 0x136e: 0x056a,\n\t// Block 0x4e, offset 0x1380\n\t0x1381: 0x01f1, 0x1382: 0x01f4, 0x1383: 0x00d4, 0x1384: 0x01be, 0x1385: 0x010d,\n\t0x1387: 0x01d3, 0x1388: 0x174e, 0x1389: 0x01d9, 0x138a: 0x01d6, 0x138b: 0x0116,\n\t0x138c: 0x0119, 0x138d: 0x0526, 0x138e: 0x011c, 0x138f: 0x0128, 0x1390: 0x01e5, 0x1391: 0x013a,\n\t0x1392: 0x0134, 0x1393: 0x012e, 0x1394: 0x01c1, 0x1395: 0x00e0, 0x1396: 0x01c4, 0x1397: 0x0143,\n\t0x1398: 0x0194, 0x1399: 0x01e8, 0x139a: 0x01eb, 0x139b: 0x0152, 0x139c: 0x1756, 0x139d: 0x1742,\n\t0x139e: 0x0158, 0x139f: 0x175b, 0x13a0: 0x01a9, 0x13a1: 0x1760, 0x13a2: 0x00da, 0x13a3: 0x0170,\n\t0x13a4: 0x0173, 0x13a5: 0x00a3, 0x13a6: 0x017c, 0x13a7: 0x1765, 0x13a8: 0x0182, 0x13a9: 0x0185,\n\t0x13aa: 0x0188, 0x13ab: 0x01e2, 0x13ac: 0x01dc, 0x13ad: 0x1752, 0x13ae: 0x01df, 0x13af: 0x0197,\n\t0x13b0: 0x0576, 0x13b2: 0x01ac, 0x13b3: 0x01cd, 0x13b4: 0x01d0, 0x13b5: 0x01bb,\n\t0x13b6: 0x00f5, 0x13b7: 0x00f8, 0x13b8: 0x00fb, 0x13b9: 0x176a, 0x13ba: 0x176f,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x0063, 0x13c1: 0x0065, 0x13c2: 0x0067, 0x13c3: 0x0069, 0x13c4: 0x006b, 0x13c5: 0x006d,\n\t0x13c6: 0x006f, 0x13c7: 0x0071, 0x13c8: 0x0073, 0x13c9: 0x0075, 0x13ca: 0x0083, 0x13cb: 0x0085,\n\t0x13cc: 0x0087, 0x13cd: 0x0089, 0x13ce: 0x008b, 0x13cf: 0x008d, 0x13d0: 0x008f, 0x13d1: 0x0091,\n\t0x13d2: 0x0093, 0x13d3: 0x0095, 0x13d4: 0x0097, 0x13d5: 0x0099, 0x13d6: 0x009b, 0x13d7: 0x009d,\n\t0x13d8: 0x009f, 0x13d9: 0x00a1, 0x13da: 0x00a3, 0x13db: 0x00a5, 0x13dc: 0x00a7, 0x13dd: 0x00a9,\n\t0x13de: 0x00ab, 0x13df: 0x00ad, 0x13e0: 0x00af, 0x13e1: 0x00b1, 0x13e2: 0x00b3, 0x13e3: 0x00b5,\n\t0x13e4: 0x00e3, 0x13e5: 0x0101, 0x13e8: 0x01f7, 0x13e9: 0x01fa,\n\t0x13ea: 0x01fd, 0x13eb: 0x0200, 0x13ec: 0x0203, 0x13ed: 0x0206, 0x13ee: 0x0209, 0x13ef: 0x020c,\n\t0x13f0: 0x020f, 0x13f1: 0x0212, 0x13f2: 0x0215, 0x13f3: 0x0218, 0x13f4: 0x021b, 0x13f5: 0x021e,\n\t0x13f6: 0x0221, 0x13f7: 0x0224, 0x13f8: 0x0227, 0x13f9: 0x020c, 0x13fa: 0x022a, 0x13fb: 0x022d,\n\t0x13fc: 0x0230, 0x13fd: 0x0233, 0x13fe: 0x0236, 0x13ff: 0x0239,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x0281, 0x1401: 0x0284, 0x1402: 0x0287, 0x1403: 0x0552, 0x1404: 0x024b, 0x1405: 0x0254,\n\t0x1406: 0x025a, 0x1407: 0x027e, 0x1408: 0x026f, 0x1409: 0x026c, 0x140a: 0x028a, 0x140b: 0x028d,\n\t0x140e: 0x0021, 0x140f: 0x0023, 0x1410: 0x0025, 0x1411: 0x0027,\n\t0x1412: 0x0029, 0x1413: 0x002b, 0x1414: 0x002d, 0x1415: 0x002f, 0x1416: 0x0031, 0x1417: 0x0033,\n\t0x1418: 0x0021, 0x1419: 0x0023, 0x141a: 0x0025, 0x141b: 0x0027, 0x141c: 0x0029, 0x141d: 0x002b,\n\t0x141e: 0x002d, 0x141f: 0x002f, 0x1420: 0x0031, 0x1421: 0x0033, 0x1422: 0x0021, 0x1423: 0x0023,\n\t0x1424: 0x0025, 0x1425: 0x0027, 0x1426: 0x0029, 0x1427: 0x002b, 0x1428: 0x002d, 0x1429: 0x002f,\n\t0x142a: 0x0031, 0x142b: 0x0033, 0x142c: 0x0021, 0x142d: 0x0023, 0x142e: 0x0025, 0x142f: 0x0027,\n\t0x1430: 0x0029, 0x1431: 0x002b, 0x1432: 0x002d, 0x1433: 0x002f, 0x1434: 0x0031, 0x1435: 0x0033,\n\t0x1436: 0x0021, 0x1437: 0x0023, 0x1438: 0x0025, 0x1439: 0x0027, 0x143a: 0x0029, 0x143b: 0x002b,\n\t0x143c: 0x002d, 0x143d: 0x002f, 0x143e: 0x0031, 0x143f: 0x0033,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x8133, 0x1441: 0x8133, 0x1442: 0x8133, 0x1443: 0x8133, 0x1444: 0x8133, 0x1445: 0x8133,\n\t0x1446: 0x8133, 0x1448: 0x8133, 0x1449: 0x8133, 0x144a: 0x8133, 0x144b: 0x8133,\n\t0x144c: 0x8133, 0x144d: 0x8133, 0x144e: 0x8133, 0x144f: 0x8133, 0x1450: 0x8133, 0x1451: 0x8133,\n\t0x1452: 0x8133, 0x1453: 0x8133, 0x1454: 0x8133, 0x1455: 0x8133, 0x1456: 0x8133, 0x1457: 0x8133,\n\t0x1458: 0x8133, 0x145b: 0x8133, 0x145c: 0x8133, 0x145d: 0x8133,\n\t0x145e: 0x8133, 0x145f: 0x8133, 0x1460: 0x8133, 0x1461: 0x8133, 0x1463: 0x8133,\n\t0x1464: 0x8133, 0x1466: 0x8133, 0x1467: 0x8133, 0x1468: 0x8133, 0x1469: 0x8133,\n\t0x146a: 0x8133,\n\t0x1470: 0x0290, 0x1471: 0x0293, 0x1472: 0x0296, 0x1473: 0x0299, 0x1474: 0x029c, 0x1475: 0x029f,\n\t0x1476: 0x02a2, 0x1477: 0x02a5, 0x1478: 0x02a8, 0x1479: 0x02ab, 0x147a: 0x02ae, 0x147b: 0x02b1,\n\t0x147c: 0x02b7, 0x147d: 0x02ba, 0x147e: 0x02bd, 0x147f: 0x02c0,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x02c3, 0x1481: 0x02c6, 0x1482: 0x02c9, 0x1483: 0x02cc, 0x1484: 0x02cf, 0x1485: 0x02d2,\n\t0x1486: 0x02d5, 0x1487: 0x02db, 0x1488: 0x02e1, 0x1489: 0x02e4, 0x148a: 0x1736, 0x148b: 0x0302,\n\t0x148c: 0x02ea, 0x148d: 0x02ed, 0x148e: 0x0305, 0x148f: 0x02f9, 0x1490: 0x02ff, 0x1491: 0x0290,\n\t0x1492: 0x0293, 0x1493: 0x0296, 0x1494: 0x0299, 0x1495: 0x029c, 0x1496: 0x029f, 0x1497: 0x02a2,\n\t0x1498: 0x02a5, 0x1499: 0x02a8, 0x149a: 0x02ab, 0x149b: 0x02ae, 0x149c: 0x02b7, 0x149d: 0x02ba,\n\t0x149e: 0x02c0, 0x149f: 0x02c6, 0x14a0: 0x02c9, 0x14a1: 0x02cc, 0x14a2: 0x02cf, 0x14a3: 0x02d2,\n\t0x14a4: 0x02d5, 0x14a5: 0x02d8, 0x14a6: 0x02db, 0x14a7: 0x02f3, 0x14a8: 0x02ea, 0x14a9: 0x02e7,\n\t0x14aa: 0x02f0, 0x14ab: 0x02f6, 0x14ac: 0x1732, 0x14ad: 0x02fc,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x032c, 0x14c1: 0x032f, 0x14c2: 0x033b, 0x14c3: 0x0344, 0x14c5: 0x037d,\n\t0x14c6: 0x034d, 0x14c7: 0x033e, 0x14c8: 0x035c, 0x14c9: 0x0383, 0x14ca: 0x036e, 0x14cb: 0x0371,\n\t0x14cc: 0x0374, 0x14cd: 0x0377, 0x14ce: 0x0350, 0x14cf: 0x0362, 0x14d0: 0x0368, 0x14d1: 0x0356,\n\t0x14d2: 0x036b, 0x14d3: 0x034a, 0x14d4: 0x0353, 0x14d5: 0x0335, 0x14d6: 0x0338, 0x14d7: 0x0341,\n\t0x14d8: 0x0347, 0x14d9: 0x0359, 0x14da: 0x035f, 0x14db: 0x0365, 0x14dc: 0x0386, 0x14dd: 0x03d7,\n\t0x14de: 0x03bf, 0x14df: 0x0389, 0x14e1: 0x032f, 0x14e2: 0x033b,\n\t0x14e4: 0x037a, 0x14e7: 0x033e, 0x14e9: 0x0383,\n\t0x14ea: 0x036e, 0x14eb: 0x0371, 0x14ec: 0x0374, 0x14ed: 0x0377, 0x14ee: 0x0350, 0x14ef: 0x0362,\n\t0x14f0: 0x0368, 0x14f1: 0x0356, 0x14f2: 0x036b, 0x14f4: 0x0353, 0x14f5: 0x0335,\n\t0x14f6: 0x0338, 0x14f7: 0x0341, 0x14f9: 0x0359, 0x14fb: 0x0365,\n\t// Block 0x54, offset 0x1500\n\t0x1502: 0x033b,\n\t0x1507: 0x033e, 0x1509: 0x0383, 0x150b: 0x0371,\n\t0x150d: 0x0377, 0x150e: 0x0350, 0x150f: 0x0362, 0x1511: 0x0356,\n\t0x1512: 0x036b, 0x1514: 0x0353, 0x1517: 0x0341,\n\t0x1519: 0x0359, 0x151b: 0x0365, 0x151d: 0x03d7,\n\t0x151f: 0x0389, 0x1521: 0x032f, 0x1522: 0x033b,\n\t0x1524: 0x037a, 0x1527: 0x033e, 0x1528: 0x035c, 0x1529: 0x0383,\n\t0x152a: 0x036e, 0x152c: 0x0374, 0x152d: 0x0377, 0x152e: 0x0350, 0x152f: 0x0362,\n\t0x1530: 0x0368, 0x1531: 0x0356, 0x1532: 0x036b, 0x1534: 0x0353, 0x1535: 0x0335,\n\t0x1536: 0x0338, 0x1537: 0x0341, 0x1539: 0x0359, 0x153a: 0x035f, 0x153b: 0x0365,\n\t0x153c: 0x0386, 0x153e: 0x03bf,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x032c, 0x1541: 0x032f, 0x1542: 0x033b, 0x1543: 0x0344, 0x1544: 0x037a, 0x1545: 0x037d,\n\t0x1546: 0x034d, 0x1547: 0x033e, 0x1548: 0x035c, 0x1549: 0x0383, 0x154b: 0x0371,\n\t0x154c: 0x0374, 0x154d: 0x0377, 0x154e: 0x0350, 0x154f: 0x0362, 0x1550: 0x0368, 0x1551: 0x0356,\n\t0x1552: 0x036b, 0x1553: 0x034a, 0x1554: 0x0353, 0x1555: 0x0335, 0x1556: 0x0338, 0x1557: 0x0341,\n\t0x1558: 0x0347, 0x1559: 0x0359, 0x155a: 0x035f, 0x155b: 0x0365,\n\t0x1561: 0x032f, 0x1562: 0x033b, 0x1563: 0x0344,\n\t0x1565: 0x037d, 0x1566: 0x034d, 0x1567: 0x033e, 0x1568: 0x035c, 0x1569: 0x0383,\n\t0x156b: 0x0371, 0x156c: 0x0374, 0x156d: 0x0377, 0x156e: 0x0350, 0x156f: 0x0362,\n\t0x1570: 0x0368, 0x1571: 0x0356, 0x1572: 0x036b, 0x1573: 0x034a, 0x1574: 0x0353, 0x1575: 0x0335,\n\t0x1576: 0x0338, 0x1577: 0x0341, 0x1578: 0x0347, 0x1579: 0x0359, 0x157a: 0x035f, 0x157b: 0x0365,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x19a6, 0x1581: 0x19a3, 0x1582: 0x19a9, 0x1583: 0x19cd, 0x1584: 0x19f1, 0x1585: 0x1a15,\n\t0x1586: 0x1a39, 0x1587: 0x1a42, 0x1588: 0x1a48, 0x1589: 0x1a4e, 0x158a: 0x1a54,\n\t0x1590: 0x1bbc, 0x1591: 0x1bc0,\n\t0x1592: 0x1bc4, 0x1593: 0x1bc8, 0x1594: 0x1bcc, 0x1595: 0x1bd0, 0x1596: 0x1bd4, 0x1597: 0x1bd8,\n\t0x1598: 0x1bdc, 0x1599: 0x1be0, 0x159a: 0x1be4, 0x159b: 0x1be8, 0x159c: 0x1bec, 0x159d: 0x1bf0,\n\t0x159e: 0x1bf4, 0x159f: 0x1bf8, 0x15a0: 0x1bfc, 0x15a1: 0x1c00, 0x15a2: 0x1c04, 0x15a3: 0x1c08,\n\t0x15a4: 0x1c0c, 0x15a5: 0x1c10, 0x15a6: 0x1c14, 0x15a7: 0x1c18, 0x15a8: 0x1c1c, 0x15a9: 0x1c20,\n\t0x15aa: 0x2855, 0x15ab: 0x0047, 0x15ac: 0x0065, 0x15ad: 0x1a69, 0x15ae: 0x1ae1,\n\t0x15b0: 0x0043, 0x15b1: 0x0045, 0x15b2: 0x0047, 0x15b3: 0x0049, 0x15b4: 0x004b, 0x15b5: 0x004d,\n\t0x15b6: 0x004f, 0x15b7: 0x0051, 0x15b8: 0x0053, 0x15b9: 0x0055, 0x15ba: 0x0057, 0x15bb: 0x0059,\n\t0x15bc: 0x005b, 0x15bd: 0x005d, 0x15be: 0x005f, 0x15bf: 0x0061,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x27dd, 0x15c1: 0x27f2, 0x15c2: 0x05fe,\n\t0x15d0: 0x0d0a, 0x15d1: 0x0b42,\n\t0x15d2: 0x09ce, 0x15d3: 0x473b, 0x15d4: 0x0816, 0x15d5: 0x0aea, 0x15d6: 0x142a, 0x15d7: 0x0afa,\n\t0x15d8: 0x0822, 0x15d9: 0x0dd2, 0x15da: 0x0faa, 0x15db: 0x0daa, 0x15dc: 0x0922, 0x15dd: 0x0c66,\n\t0x15de: 0x08ba, 0x15df: 0x0db2, 0x15e0: 0x090e, 0x15e1: 0x1212, 0x15e2: 0x107e, 0x15e3: 0x1486,\n\t0x15e4: 0x0ace, 0x15e5: 0x0a06, 0x15e6: 0x0f5e, 0x15e7: 0x0d16, 0x15e8: 0x0d42, 0x15e9: 0x07ba,\n\t0x15ea: 0x07c6, 0x15eb: 0x1506, 0x15ec: 0x0bd6, 0x15ed: 0x07e2, 0x15ee: 0x09ea, 0x15ef: 0x0d36,\n\t0x15f0: 0x14ae, 0x15f1: 0x0d0e, 0x15f2: 0x116a, 0x15f3: 0x11a6, 0x15f4: 0x09f2, 0x15f5: 0x0f3e,\n\t0x15f6: 0x0e06, 0x15f7: 0x0e02, 0x15f8: 0x1092, 0x15f9: 0x0926, 0x15fa: 0x0a52, 0x15fb: 0x153e,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x07f6, 0x1601: 0x07ee, 0x1602: 0x07fe, 0x1603: 0x1774, 0x1604: 0x0842, 0x1605: 0x0852,\n\t0x1606: 0x0856, 0x1607: 0x085e, 0x1608: 0x0866, 0x1609: 0x086a, 0x160a: 0x0876, 0x160b: 0x086e,\n\t0x160c: 0x06ae, 0x160d: 0x1788, 0x160e: 0x088a, 0x160f: 0x088e, 0x1610: 0x0892, 0x1611: 0x08ae,\n\t0x1612: 0x1779, 0x1613: 0x06b2, 0x1614: 0x089a, 0x1615: 0x08ba, 0x1616: 0x1783, 0x1617: 0x08ca,\n\t0x1618: 0x08d2, 0x1619: 0x0832, 0x161a: 0x08da, 0x161b: 0x08de, 0x161c: 0x195e, 0x161d: 0x08fa,\n\t0x161e: 0x0902, 0x161f: 0x06ba, 0x1620: 0x091a, 0x1621: 0x091e, 0x1622: 0x0926, 0x1623: 0x092a,\n\t0x1624: 0x06be, 0x1625: 0x0942, 0x1626: 0x0946, 0x1627: 0x0952, 0x1628: 0x095e, 0x1629: 0x0962,\n\t0x162a: 0x0966, 0x162b: 0x096e, 0x162c: 0x098e, 0x162d: 0x0992, 0x162e: 0x099a, 0x162f: 0x09aa,\n\t0x1630: 0x09b2, 0x1631: 0x09b6, 0x1632: 0x09b6, 0x1633: 0x09b6, 0x1634: 0x1797, 0x1635: 0x0f8e,\n\t0x1636: 0x09ca, 0x1637: 0x09d2, 0x1638: 0x179c, 0x1639: 0x09de, 0x163a: 0x09e6, 0x163b: 0x09ee,\n\t0x163c: 0x0a16, 0x163d: 0x0a02, 0x163e: 0x0a0e, 0x163f: 0x0a12,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0a1a, 0x1641: 0x0a22, 0x1642: 0x0a26, 0x1643: 0x0a2e, 0x1644: 0x0a36, 0x1645: 0x0a3a,\n\t0x1646: 0x0a3a, 0x1647: 0x0a42, 0x1648: 0x0a4a, 0x1649: 0x0a4e, 0x164a: 0x0a5a, 0x164b: 0x0a7e,\n\t0x164c: 0x0a62, 0x164d: 0x0a82, 0x164e: 0x0a66, 0x164f: 0x0a6e, 0x1650: 0x0906, 0x1651: 0x0aca,\n\t0x1652: 0x0a92, 0x1653: 0x0a96, 0x1654: 0x0a9a, 0x1655: 0x0a8e, 0x1656: 0x0aa2, 0x1657: 0x0a9e,\n\t0x1658: 0x0ab6, 0x1659: 0x17a1, 0x165a: 0x0ad2, 0x165b: 0x0ad6, 0x165c: 0x0ade, 0x165d: 0x0aea,\n\t0x165e: 0x0af2, 0x165f: 0x0b0e, 0x1660: 0x17a6, 0x1661: 0x17ab, 0x1662: 0x0b1a, 0x1663: 0x0b1e,\n\t0x1664: 0x0b22, 0x1665: 0x0b16, 0x1666: 0x0b2a, 0x1667: 0x06c2, 0x1668: 0x06c6, 0x1669: 0x0b32,\n\t0x166a: 0x0b3a, 0x166b: 0x0b3a, 0x166c: 0x17b0, 0x166d: 0x0b56, 0x166e: 0x0b5a, 0x166f: 0x0b5e,\n\t0x1670: 0x0b66, 0x1671: 0x17b5, 0x1672: 0x0b6e, 0x1673: 0x0b72, 0x1674: 0x0c4a, 0x1675: 0x0b7a,\n\t0x1676: 0x06ca, 0x1677: 0x0b86, 0x1678: 0x0b96, 0x1679: 0x0ba2, 0x167a: 0x0b9e, 0x167b: 0x17bf,\n\t0x167c: 0x0baa, 0x167d: 0x17c4, 0x167e: 0x0bb6, 0x167f: 0x0bb2,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x0bba, 0x1681: 0x0bca, 0x1682: 0x0bce, 0x1683: 0x06ce, 0x1684: 0x0bde, 0x1685: 0x0be6,\n\t0x1686: 0x0bea, 0x1687: 0x0bee, 0x1688: 0x06d2, 0x1689: 0x17c9, 0x168a: 0x06d6, 0x168b: 0x0c0a,\n\t0x168c: 0x0c0e, 0x168d: 0x0c12, 0x168e: 0x0c1a, 0x168f: 0x1990, 0x1690: 0x0c32, 0x1691: 0x17d3,\n\t0x1692: 0x17d3, 0x1693: 0x12d2, 0x1694: 0x0c42, 0x1695: 0x0c42, 0x1696: 0x06da, 0x1697: 0x17f6,\n\t0x1698: 0x18c8, 0x1699: 0x0c52, 0x169a: 0x0c5a, 0x169b: 0x06de, 0x169c: 0x0c6e, 0x169d: 0x0c7e,\n\t0x169e: 0x0c82, 0x169f: 0x0c8a, 0x16a0: 0x0c9a, 0x16a1: 0x06e6, 0x16a2: 0x06e2, 0x16a3: 0x0c9e,\n\t0x16a4: 0x17d8, 0x16a5: 0x0ca2, 0x16a6: 0x0cb6, 0x16a7: 0x0cba, 0x16a8: 0x0cbe, 0x16a9: 0x0cba,\n\t0x16aa: 0x0cca, 0x16ab: 0x0cce, 0x16ac: 0x0cde, 0x16ad: 0x0cd6, 0x16ae: 0x0cda, 0x16af: 0x0ce2,\n\t0x16b0: 0x0ce6, 0x16b1: 0x0cea, 0x16b2: 0x0cf6, 0x16b3: 0x0cfa, 0x16b4: 0x0d12, 0x16b5: 0x0d1a,\n\t0x16b6: 0x0d2a, 0x16b7: 0x0d3e, 0x16b8: 0x17e7, 0x16b9: 0x0d3a, 0x16ba: 0x0d2e, 0x16bb: 0x0d46,\n\t0x16bc: 0x0d4e, 0x16bd: 0x0d62, 0x16be: 0x17ec, 0x16bf: 0x0d6a,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x0d5e, 0x16c1: 0x0d56, 0x16c2: 0x06ea, 0x16c3: 0x0d72, 0x16c4: 0x0d7a, 0x16c5: 0x0d82,\n\t0x16c6: 0x0d76, 0x16c7: 0x06ee, 0x16c8: 0x0d92, 0x16c9: 0x0d9a, 0x16ca: 0x17f1, 0x16cb: 0x0dc6,\n\t0x16cc: 0x0dfa, 0x16cd: 0x0dd6, 0x16ce: 0x06fa, 0x16cf: 0x0de2, 0x16d0: 0x06f6, 0x16d1: 0x06f2,\n\t0x16d2: 0x08be, 0x16d3: 0x08c2, 0x16d4: 0x0dfe, 0x16d5: 0x0de6, 0x16d6: 0x12a6, 0x16d7: 0x075e,\n\t0x16d8: 0x0e0a, 0x16d9: 0x0e0e, 0x16da: 0x0e12, 0x16db: 0x0e26, 0x16dc: 0x0e1e, 0x16dd: 0x180a,\n\t0x16de: 0x06fe, 0x16df: 0x0e3a, 0x16e0: 0x0e2e, 0x16e1: 0x0e4a, 0x16e2: 0x0e52, 0x16e3: 0x1814,\n\t0x16e4: 0x0e56, 0x16e5: 0x0e42, 0x16e6: 0x0e5e, 0x16e7: 0x0702, 0x16e8: 0x0e62, 0x16e9: 0x0e66,\n\t0x16ea: 0x0e6a, 0x16eb: 0x0e76, 0x16ec: 0x1819, 0x16ed: 0x0e7e, 0x16ee: 0x0706, 0x16ef: 0x0e8a,\n\t0x16f0: 0x181e, 0x16f1: 0x0e8e, 0x16f2: 0x070a, 0x16f3: 0x0e9a, 0x16f4: 0x0ea6, 0x16f5: 0x0eb2,\n\t0x16f6: 0x0eb6, 0x16f7: 0x1823, 0x16f8: 0x17ba, 0x16f9: 0x1828, 0x16fa: 0x0ed6, 0x16fb: 0x182d,\n\t0x16fc: 0x0ee2, 0x16fd: 0x0eea, 0x16fe: 0x0eda, 0x16ff: 0x0ef6,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0f06, 0x1701: 0x0f16, 0x1702: 0x0f0a, 0x1703: 0x0f0e, 0x1704: 0x0f1a, 0x1705: 0x0f1e,\n\t0x1706: 0x1832, 0x1707: 0x0f02, 0x1708: 0x0f36, 0x1709: 0x0f3a, 0x170a: 0x070e, 0x170b: 0x0f4e,\n\t0x170c: 0x0f4a, 0x170d: 0x1837, 0x170e: 0x0f2e, 0x170f: 0x0f6a, 0x1710: 0x183c, 0x1711: 0x1841,\n\t0x1712: 0x0f6e, 0x1713: 0x0f82, 0x1714: 0x0f7e, 0x1715: 0x0f7a, 0x1716: 0x0712, 0x1717: 0x0f86,\n\t0x1718: 0x0f96, 0x1719: 0x0f92, 0x171a: 0x0f9e, 0x171b: 0x177e, 0x171c: 0x0fae, 0x171d: 0x1846,\n\t0x171e: 0x0fba, 0x171f: 0x1850, 0x1720: 0x0fce, 0x1721: 0x0fda, 0x1722: 0x0fee, 0x1723: 0x1855,\n\t0x1724: 0x1002, 0x1725: 0x1006, 0x1726: 0x185a, 0x1727: 0x185f, 0x1728: 0x1022, 0x1729: 0x1032,\n\t0x172a: 0x0716, 0x172b: 0x1036, 0x172c: 0x071a, 0x172d: 0x071a, 0x172e: 0x104e, 0x172f: 0x1052,\n\t0x1730: 0x105a, 0x1731: 0x105e, 0x1732: 0x106a, 0x1733: 0x071e, 0x1734: 0x1082, 0x1735: 0x1864,\n\t0x1736: 0x109e, 0x1737: 0x1869, 0x1738: 0x10aa, 0x1739: 0x17ce, 0x173a: 0x10ba, 0x173b: 0x186e,\n\t0x173c: 0x1873, 0x173d: 0x1878, 0x173e: 0x0722, 0x173f: 0x0726,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x10f2, 0x1741: 0x1882, 0x1742: 0x187d, 0x1743: 0x1887, 0x1744: 0x188c, 0x1745: 0x10fa,\n\t0x1746: 0x10fe, 0x1747: 0x10fe, 0x1748: 0x1106, 0x1749: 0x072e, 0x174a: 0x110a, 0x174b: 0x0732,\n\t0x174c: 0x0736, 0x174d: 0x1896, 0x174e: 0x111e, 0x174f: 0x1126, 0x1750: 0x1132, 0x1751: 0x073a,\n\t0x1752: 0x189b, 0x1753: 0x1156, 0x1754: 0x18a0, 0x1755: 0x18a5, 0x1756: 0x1176, 0x1757: 0x118e,\n\t0x1758: 0x073e, 0x1759: 0x1196, 0x175a: 0x119a, 0x175b: 0x119e, 0x175c: 0x18aa, 0x175d: 0x18af,\n\t0x175e: 0x18af, 0x175f: 0x11b6, 0x1760: 0x0742, 0x1761: 0x18b4, 0x1762: 0x11ca, 0x1763: 0x11ce,\n\t0x1764: 0x0746, 0x1765: 0x18b9, 0x1766: 0x11ea, 0x1767: 0x074a, 0x1768: 0x11fa, 0x1769: 0x11f2,\n\t0x176a: 0x1202, 0x176b: 0x18c3, 0x176c: 0x121a, 0x176d: 0x074e, 0x176e: 0x1226, 0x176f: 0x122e,\n\t0x1770: 0x123e, 0x1771: 0x0752, 0x1772: 0x18cd, 0x1773: 0x18d2, 0x1774: 0x0756, 0x1775: 0x18d7,\n\t0x1776: 0x1256, 0x1777: 0x18dc, 0x1778: 0x1262, 0x1779: 0x126e, 0x177a: 0x1276, 0x177b: 0x18e1,\n\t0x177c: 0x18e6, 0x177d: 0x128a, 0x177e: 0x18eb, 0x177f: 0x1292,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x17fb, 0x1781: 0x075a, 0x1782: 0x12aa, 0x1783: 0x12ae, 0x1784: 0x0762, 0x1785: 0x12b2,\n\t0x1786: 0x0b2e, 0x1787: 0x18f0, 0x1788: 0x18f5, 0x1789: 0x1800, 0x178a: 0x1805, 0x178b: 0x12d2,\n\t0x178c: 0x12d6, 0x178d: 0x14ee, 0x178e: 0x0766, 0x178f: 0x1302, 0x1790: 0x12fe, 0x1791: 0x1306,\n\t0x1792: 0x093a, 0x1793: 0x130a, 0x1794: 0x130e, 0x1795: 0x1312, 0x1796: 0x131a, 0x1797: 0x18fa,\n\t0x1798: 0x1316, 0x1799: 0x131e, 0x179a: 0x1332, 0x179b: 0x1336, 0x179c: 0x1322, 0x179d: 0x133a,\n\t0x179e: 0x134e, 0x179f: 0x1362, 0x17a0: 0x132e, 0x17a1: 0x1342, 0x17a2: 0x1346, 0x17a3: 0x134a,\n\t0x17a4: 0x18ff, 0x17a5: 0x1909, 0x17a6: 0x1904, 0x17a7: 0x076a, 0x17a8: 0x136a, 0x17a9: 0x136e,\n\t0x17aa: 0x1376, 0x17ab: 0x191d, 0x17ac: 0x137a, 0x17ad: 0x190e, 0x17ae: 0x076e, 0x17af: 0x0772,\n\t0x17b0: 0x1913, 0x17b1: 0x1918, 0x17b2: 0x0776, 0x17b3: 0x139a, 0x17b4: 0x139e, 0x17b5: 0x13a2,\n\t0x17b6: 0x13a6, 0x17b7: 0x13b2, 0x17b8: 0x13ae, 0x17b9: 0x13ba, 0x17ba: 0x13b6, 0x17bb: 0x13c6,\n\t0x17bc: 0x13be, 0x17bd: 0x13c2, 0x17be: 0x13ca, 0x17bf: 0x077a,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x13d2, 0x17c1: 0x13d6, 0x17c2: 0x077e, 0x17c3: 0x13e6, 0x17c4: 0x13ea, 0x17c5: 0x1922,\n\t0x17c6: 0x13f6, 0x17c7: 0x13fa, 0x17c8: 0x0782, 0x17c9: 0x1406, 0x17ca: 0x06b6, 0x17cb: 0x1927,\n\t0x17cc: 0x192c, 0x17cd: 0x0786, 0x17ce: 0x078a, 0x17cf: 0x1432, 0x17d0: 0x144a, 0x17d1: 0x1466,\n\t0x17d2: 0x1476, 0x17d3: 0x1931, 0x17d4: 0x148a, 0x17d5: 0x148e, 0x17d6: 0x14a6, 0x17d7: 0x14b2,\n\t0x17d8: 0x193b, 0x17d9: 0x178d, 0x17da: 0x14be, 0x17db: 0x14ba, 0x17dc: 0x14c6, 0x17dd: 0x1792,\n\t0x17de: 0x14d2, 0x17df: 0x14de, 0x17e0: 0x1940, 0x17e1: 0x1945, 0x17e2: 0x151e, 0x17e3: 0x152a,\n\t0x17e4: 0x1532, 0x17e5: 0x194a, 0x17e6: 0x1536, 0x17e7: 0x1562, 0x17e8: 0x156e, 0x17e9: 0x1572,\n\t0x17ea: 0x156a, 0x17eb: 0x157e, 0x17ec: 0x1582, 0x17ed: 0x194f, 0x17ee: 0x158e, 0x17ef: 0x078e,\n\t0x17f0: 0x1596, 0x17f1: 0x1954, 0x17f2: 0x0792, 0x17f3: 0x15ce, 0x17f4: 0x0bbe, 0x17f5: 0x15e6,\n\t0x17f6: 0x1959, 0x17f7: 0x1963, 0x17f8: 0x0796, 0x17f9: 0x079a, 0x17fa: 0x160e, 0x17fb: 0x1968,\n\t0x17fc: 0x079e, 0x17fd: 0x196d, 0x17fe: 0x1626, 0x17ff: 0x1626,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x162e, 0x1801: 0x1972, 0x1802: 0x1646, 0x1803: 0x07a2, 0x1804: 0x1656, 0x1805: 0x1662,\n\t0x1806: 0x166a, 0x1807: 0x1672, 0x1808: 0x07a6, 0x1809: 0x1977, 0x180a: 0x1686, 0x180b: 0x16a2,\n\t0x180c: 0x16ae, 0x180d: 0x07aa, 0x180e: 0x07ae, 0x180f: 0x16b2, 0x1810: 0x197c, 0x1811: 0x07b2,\n\t0x1812: 0x1981, 0x1813: 0x1986, 0x1814: 0x198b, 0x1815: 0x16d6, 0x1816: 0x07b6, 0x1817: 0x16ea,\n\t0x1818: 0x16f2, 0x1819: 0x16f6, 0x181a: 0x16fe, 0x181b: 0x1706, 0x181c: 0x170e, 0x181d: 0x1995,\n}\n\n// nfkcIndex: 23 blocks, 1472 entries, 2944 bytes\n// Block 0 is the zero block.\nvar nfkcIndex = [1472]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x5f, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x60, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x61, 0xcb: 0x62, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09,\n\t0xd0: 0x0a, 0xd1: 0x63, 0xd2: 0x64, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x65,\n\t0xd8: 0x66, 0xd9: 0x0d, 0xdb: 0x67, 0xdc: 0x68, 0xdd: 0x69, 0xdf: 0x6a,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x14,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x6b, 0x121: 0x6c, 0x122: 0x6d, 0x123: 0x0e, 0x124: 0x6e, 0x125: 0x6f, 0x126: 0x70, 0x127: 0x71,\n\t0x128: 0x72, 0x129: 0x73, 0x12a: 0x74, 0x12b: 0x75, 0x12c: 0x70, 0x12d: 0x76, 0x12e: 0x77, 0x12f: 0x78,\n\t0x130: 0x74, 0x131: 0x79, 0x132: 0x7a, 0x133: 0x7b, 0x134: 0x7c, 0x135: 0x7d, 0x137: 0x7e,\n\t0x138: 0x7f, 0x139: 0x80, 0x13a: 0x81, 0x13b: 0x82, 0x13c: 0x83, 0x13d: 0x84, 0x13e: 0x85, 0x13f: 0x86,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x87, 0x142: 0x88, 0x143: 0x89, 0x144: 0x8a, 0x145: 0x8b, 0x146: 0x8c, 0x147: 0x8d,\n\t0x14d: 0x8e,\n\t0x15c: 0x8f, 0x15f: 0x90,\n\t0x162: 0x91, 0x164: 0x92,\n\t0x168: 0x93, 0x169: 0x94, 0x16a: 0x95, 0x16b: 0x96, 0x16c: 0x0f, 0x16d: 0x97, 0x16e: 0x98, 0x16f: 0x99,\n\t0x170: 0x9a, 0x173: 0x9b, 0x174: 0x9c, 0x175: 0x10, 0x176: 0x11, 0x177: 0x12,\n\t0x178: 0x13, 0x179: 0x14, 0x17a: 0x15, 0x17b: 0x16, 0x17c: 0x17, 0x17d: 0x18, 0x17e: 0x19, 0x17f: 0x1a,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x9d, 0x181: 0x9e, 0x182: 0x9f, 0x183: 0xa0, 0x184: 0x1b, 0x185: 0x1c, 0x186: 0xa1, 0x187: 0xa2,\n\t0x188: 0xa3, 0x189: 0x1d, 0x18a: 0x1e, 0x18b: 0xa4, 0x18c: 0xa5,\n\t0x191: 0x1f, 0x192: 0x20, 0x193: 0xa6,\n\t0x1a8: 0xa7, 0x1a9: 0xa8, 0x1ab: 0xa9,\n\t0x1b1: 0xaa, 0x1b3: 0xab, 0x1b5: 0xac, 0x1b7: 0xad,\n\t0x1ba: 0xae, 0x1bb: 0xaf, 0x1bc: 0x21, 0x1bd: 0x22, 0x1be: 0x23, 0x1bf: 0xb0,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0xb1, 0x1c1: 0x24, 0x1c2: 0x25, 0x1c3: 0x26, 0x1c4: 0xb2, 0x1c5: 0x27, 0x1c6: 0x28,\n\t0x1c8: 0x29, 0x1c9: 0x2a, 0x1ca: 0x2b, 0x1cb: 0x2c, 0x1cc: 0x2d, 0x1cd: 0x2e, 0x1ce: 0x2f, 0x1cf: 0x30,\n\t// Block 0x8, offset 0x200\n\t0x219: 0xb3, 0x21a: 0xb4, 0x21b: 0xb5, 0x21d: 0xb6, 0x21f: 0xb7,\n\t0x220: 0xb8, 0x223: 0xb9, 0x224: 0xba, 0x225: 0xbb, 0x226: 0xbc, 0x227: 0xbd,\n\t0x22a: 0xbe, 0x22b: 0xbf, 0x22d: 0xc0, 0x22f: 0xc1,\n\t0x230: 0xc2, 0x231: 0xc3, 0x232: 0xc4, 0x233: 0xc5, 0x234: 0xc6, 0x235: 0xc7, 0x236: 0xc8, 0x237: 0xc2,\n\t0x238: 0xc3, 0x239: 0xc4, 0x23a: 0xc5, 0x23b: 0xc6, 0x23c: 0xc7, 0x23d: 0xc8, 0x23e: 0xc2, 0x23f: 0xc3,\n\t// Block 0x9, offset 0x240\n\t0x240: 0xc4, 0x241: 0xc5, 0x242: 0xc6, 0x243: 0xc7, 0x244: 0xc8, 0x245: 0xc2, 0x246: 0xc3, 0x247: 0xc4,\n\t0x248: 0xc5, 0x249: 0xc6, 0x24a: 0xc7, 0x24b: 0xc8, 0x24c: 0xc2, 0x24d: 0xc3, 0x24e: 0xc4, 0x24f: 0xc5,\n\t0x250: 0xc6, 0x251: 0xc7, 0x252: 0xc8, 0x253: 0xc2, 0x254: 0xc3, 0x255: 0xc4, 0x256: 0xc5, 0x257: 0xc6,\n\t0x258: 0xc7, 0x259: 0xc8, 0x25a: 0xc2, 0x25b: 0xc3, 0x25c: 0xc4, 0x25d: 0xc5, 0x25e: 0xc6, 0x25f: 0xc7,\n\t0x260: 0xc8, 0x261: 0xc2, 0x262: 0xc3, 0x263: 0xc4, 0x264: 0xc5, 0x265: 0xc6, 0x266: 0xc7, 0x267: 0xc8,\n\t0x268: 0xc2, 0x269: 0xc3, 0x26a: 0xc4, 0x26b: 0xc5, 0x26c: 0xc6, 0x26d: 0xc7, 0x26e: 0xc8, 0x26f: 0xc2,\n\t0x270: 0xc3, 0x271: 0xc4, 0x272: 0xc5, 0x273: 0xc6, 0x274: 0xc7, 0x275: 0xc8, 0x276: 0xc2, 0x277: 0xc3,\n\t0x278: 0xc4, 0x279: 0xc5, 0x27a: 0xc6, 0x27b: 0xc7, 0x27c: 0xc8, 0x27d: 0xc2, 0x27e: 0xc3, 0x27f: 0xc4,\n\t// Block 0xa, offset 0x280\n\t0x280: 0xc5, 0x281: 0xc6, 0x282: 0xc7, 0x283: 0xc8, 0x284: 0xc2, 0x285: 0xc3, 0x286: 0xc4, 0x287: 0xc5,\n\t0x288: 0xc6, 0x289: 0xc7, 0x28a: 0xc8, 0x28b: 0xc2, 0x28c: 0xc3, 0x28d: 0xc4, 0x28e: 0xc5, 0x28f: 0xc6,\n\t0x290: 0xc7, 0x291: 0xc8, 0x292: 0xc2, 0x293: 0xc3, 0x294: 0xc4, 0x295: 0xc5, 0x296: 0xc6, 0x297: 0xc7,\n\t0x298: 0xc8, 0x299: 0xc2, 0x29a: 0xc3, 0x29b: 0xc4, 0x29c: 0xc5, 0x29d: 0xc6, 0x29e: 0xc7, 0x29f: 0xc8,\n\t0x2a0: 0xc2, 0x2a1: 0xc3, 0x2a2: 0xc4, 0x2a3: 0xc5, 0x2a4: 0xc6, 0x2a5: 0xc7, 0x2a6: 0xc8, 0x2a7: 0xc2,\n\t0x2a8: 0xc3, 0x2a9: 0xc4, 0x2aa: 0xc5, 0x2ab: 0xc6, 0x2ac: 0xc7, 0x2ad: 0xc8, 0x2ae: 0xc2, 0x2af: 0xc3,\n\t0x2b0: 0xc4, 0x2b1: 0xc5, 0x2b2: 0xc6, 0x2b3: 0xc7, 0x2b4: 0xc8, 0x2b5: 0xc2, 0x2b6: 0xc3, 0x2b7: 0xc4,\n\t0x2b8: 0xc5, 0x2b9: 0xc6, 0x2ba: 0xc7, 0x2bb: 0xc8, 0x2bc: 0xc2, 0x2bd: 0xc3, 0x2be: 0xc4, 0x2bf: 0xc5,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0xc6, 0x2c1: 0xc7, 0x2c2: 0xc8, 0x2c3: 0xc2, 0x2c4: 0xc3, 0x2c5: 0xc4, 0x2c6: 0xc5, 0x2c7: 0xc6,\n\t0x2c8: 0xc7, 0x2c9: 0xc8, 0x2ca: 0xc2, 0x2cb: 0xc3, 0x2cc: 0xc4, 0x2cd: 0xc5, 0x2ce: 0xc6, 0x2cf: 0xc7,\n\t0x2d0: 0xc8, 0x2d1: 0xc2, 0x2d2: 0xc3, 0x2d3: 0xc4, 0x2d4: 0xc5, 0x2d5: 0xc6, 0x2d6: 0xc7, 0x2d7: 0xc8,\n\t0x2d8: 0xc2, 0x2d9: 0xc3, 0x2da: 0xc4, 0x2db: 0xc5, 0x2dc: 0xc6, 0x2dd: 0xc7, 0x2de: 0xc9,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x31, 0x325: 0x32, 0x326: 0x33, 0x327: 0x34,\n\t0x328: 0x35, 0x329: 0x36, 0x32a: 0x37, 0x32b: 0x38, 0x32c: 0x39, 0x32d: 0x3a, 0x32e: 0x3b, 0x32f: 0x3c,\n\t0x330: 0x3d, 0x331: 0x3e, 0x332: 0x3f, 0x333: 0x40, 0x334: 0x41, 0x335: 0x42, 0x336: 0x43, 0x337: 0x44,\n\t0x338: 0x45, 0x339: 0x46, 0x33a: 0x47, 0x33b: 0x48, 0x33c: 0xca, 0x33d: 0x49, 0x33e: 0x4a, 0x33f: 0x4b,\n\t// Block 0xd, offset 0x340\n\t0x347: 0xcb,\n\t0x34b: 0xcc, 0x34d: 0xcd,\n\t0x357: 0xce,\n\t0x35e: 0x4c,\n\t0x368: 0xcf, 0x36b: 0xd0,\n\t0x374: 0xd1, 0x375: 0xd2,\n\t0x37a: 0xd3, 0x37b: 0xd4, 0x37d: 0xd5, 0x37e: 0xd6,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xd7, 0x382: 0xd8, 0x384: 0xd9, 0x385: 0xbc, 0x387: 0xda,\n\t0x388: 0xdb, 0x38b: 0xdc, 0x38c: 0xdd, 0x38d: 0xde, 0x38e: 0xdf, 0x38f: 0xe0,\n\t0x391: 0xe1, 0x392: 0xe2, 0x393: 0xe3, 0x396: 0xe4, 0x397: 0xe5,\n\t0x398: 0xe6, 0x39a: 0xe7, 0x39c: 0xe8,\n\t0x3a0: 0xe9, 0x3a4: 0xea, 0x3a5: 0xeb, 0x3a7: 0xec,\n\t0x3a8: 0xed, 0x3a9: 0xee, 0x3aa: 0xef,\n\t0x3b0: 0xe6, 0x3b5: 0xf0, 0x3b6: 0xf1,\n\t0x3bd: 0xf2,\n\t// Block 0xf, offset 0x3c0\n\t0x3c4: 0xf3,\n\t0x3eb: 0xf4, 0x3ec: 0xf5,\n\t0x3f5: 0xf6,\n\t0x3ff: 0xf7,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xf8,\n\t// Block 0x11, offset 0x440\n\t0x473: 0xf9,\n\t// Block 0x12, offset 0x480\n\t0x485: 0xfa, 0x486: 0xfb, 0x487: 0xfc,\n\t0x489: 0xfd,\n\t0x490: 0xfe, 0x491: 0xff, 0x492: 0x100, 0x493: 0x101, 0x494: 0x102, 0x495: 0x103, 0x496: 0x104, 0x497: 0x105,\n\t0x498: 0x106, 0x499: 0x107, 0x49a: 0x4d, 0x49b: 0x108, 0x49c: 0x109, 0x49d: 0x10a, 0x49e: 0x10b, 0x49f: 0x4e,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x4f, 0x4c1: 0x50, 0x4c2: 0x10c, 0x4c4: 0xf5,\n\t0x4ca: 0x10d, 0x4cb: 0x10e,\n\t0x4d3: 0x10f, 0x4d7: 0x110,\n\t0x4db: 0x111,\n\t0x4e3: 0x112, 0x4e5: 0x113,\n\t0x4f8: 0x51, 0x4f9: 0x52, 0x4fa: 0x53,\n\t// Block 0x14, offset 0x500\n\t0x504: 0x54, 0x505: 0x114, 0x506: 0x115,\n\t0x508: 0x55, 0x509: 0x116,\n\t0x52f: 0x117,\n\t// Block 0x15, offset 0x540\n\t0x560: 0x56, 0x561: 0x57, 0x562: 0x58, 0x563: 0x59, 0x564: 0x5a, 0x565: 0x5b, 0x566: 0x5c, 0x567: 0x5d,\n\t0x568: 0x5e,\n\t// Block 0x16, offset 0x580\n\t0x590: 0x0b, 0x591: 0x0c, 0x596: 0x0d,\n\t0x59b: 0x0e, 0x59c: 0x0f, 0x59d: 0x10, 0x59e: 0x11, 0x59f: 0x12,\n\t0x5af: 0x13,\n}\n\n// nfkcSparseOffset: 185 entries, 370 bytes\nvar nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1c, 0x26, 0x36, 0x38, 0x3d, 0x48, 0x57, 0x64, 0x6c, 0x71, 0x76, 0x78, 0x7c, 0x84, 0x8b, 0x8e, 0x96, 0x9a, 0x9e, 0xa0, 0xa2, 0xab, 0xaf, 0xb6, 0xbb, 0xbe, 0xc8, 0xcb, 0xd2, 0xda, 0xde, 0xe0, 0xe4, 0xe8, 0xee, 0xff, 0x10b, 0x10d, 0x113, 0x115, 0x117, 0x119, 0x11b, 0x11d, 0x11f, 0x121, 0x124, 0x127, 0x129, 0x12c, 0x12f, 0x133, 0x139, 0x145, 0x14e, 0x150, 0x153, 0x155, 0x160, 0x16b, 0x179, 0x187, 0x197, 0x1a5, 0x1ac, 0x1b2, 0x1c1, 0x1c5, 0x1c7, 0x1cb, 0x1cd, 0x1d0, 0x1d2, 0x1d5, 0x1d7, 0x1da, 0x1dc, 0x1de, 0x1e0, 0x1ec, 0x1f6, 0x200, 0x203, 0x207, 0x209, 0x20b, 0x211, 0x214, 0x217, 0x219, 0x21b, 0x21d, 0x21f, 0x225, 0x228, 0x22d, 0x22f, 0x236, 0x23c, 0x242, 0x24a, 0x250, 0x256, 0x25c, 0x260, 0x262, 0x264, 0x266, 0x268, 0x26d, 0x273, 0x276, 0x278, 0x27a, 0x27c, 0x27f, 0x285, 0x289, 0x28d, 0x295, 0x29c, 0x29f, 0x2a2, 0x2a4, 0x2a7, 0x2af, 0x2b9, 0x2c0, 0x2c4, 0x2cb, 0x2ce, 0x2d4, 0x2d6, 0x2d8, 0x2db, 0x2dd, 0x2e0, 0x2e5, 0x2e7, 0x2e9, 0x2eb, 0x2ed, 0x2ef, 0x2f2, 0x2f4, 0x2f6, 0x303, 0x305, 0x307, 0x30d, 0x30f, 0x311, 0x314, 0x321, 0x32b, 0x32d, 0x32f, 0x333, 0x338, 0x344, 0x349, 0x352, 0x358, 0x35d, 0x361, 0x366, 0x36a, 0x37a, 0x388, 0x396, 0x3a4, 0x3a6, 0x3a8, 0x3aa, 0x3ae, 0x3b1, 0x3b6, 0x3b8, 0x3bb, 0x3c6, 0x3c8, 0x3d2}\n\n// nfkcSparseValues: 980 entries, 3920 bytes\nvar nfkcSparseValues = [980]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x0001, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4377, lo: 0xa8, hi: 0xa8},\n\t{value: 0x0083, lo: 0xaa, hi: 0xaa},\n\t{value: 0x4363, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0025, lo: 0xb2, hi: 0xb3},\n\t{value: 0x4359, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0260, lo: 0xb5, hi: 0xb5},\n\t{value: 0x4390, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0023, lo: 0xb9, hi: 0xb9},\n\t{value: 0x009f, lo: 0xba, hi: 0xba},\n\t{value: 0x234c, lo: 0xbc, hi: 0xbc},\n\t{value: 0x2340, lo: 0xbd, hi: 0xbd},\n\t{value: 0x23e2, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1, offset 0xe\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x4859, lo: 0xa0, hi: 0xa1},\n\t{value: 0x488b, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x12\n\t{value: 0x0004, lo: 0x09},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x0091, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0140, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0095, lo: 0xb2, hi: 0xb2},\n\t{value: 0x00a5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0179, lo: 0xb4, hi: 0xb4},\n\t{value: 0x017f, lo: 0xb5, hi: 0xb5},\n\t{value: 0x018b, lo: 0xb6, hi: 0xb6},\n\t{value: 0x00af, lo: 0xb7, hi: 0xb8},\n\t// Block 0x3, offset 0x1c\n\t{value: 0x000a, lo: 0x09},\n\t{value: 0x436d, lo: 0x98, hi: 0x98},\n\t{value: 0x4372, lo: 0x99, hi: 0x9a},\n\t{value: 0x4395, lo: 0x9b, hi: 0x9b},\n\t{value: 0x435e, lo: 0x9c, hi: 0x9c},\n\t{value: 0x4381, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0137, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0099, lo: 0xa1, hi: 0xa1},\n\t{value: 0x00a7, lo: 0xa2, hi: 0xa3},\n\t{value: 0x01b8, lo: 0xa4, hi: 0xa4},\n\t// Block 0x4, offset 0x26\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x3704, lo: 0x90, hi: 0x90},\n\t{value: 0x3710, lo: 0x91, hi: 0x91},\n\t{value: 0x36fe, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3776, lo: 0x97, hi: 0x97},\n\t{value: 0x3740, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3728, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3752, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x377c, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3782, lo: 0xb7, hi: 0xb7},\n\t// Block 0x5, offset 0x36\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x83, hi: 0x87},\n\t// Block 0x6, offset 0x38\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8114, lo: 0x81, hi: 0x82},\n\t{value: 0x8133, lo: 0x84, hi: 0x84},\n\t{value: 0x812e, lo: 0x85, hi: 0x85},\n\t{value: 0x810e, lo: 0x87, hi: 0x87},\n\t// Block 0x7, offset 0x3d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x97},\n\t{value: 0x811a, lo: 0x98, hi: 0x98},\n\t{value: 0x811b, lo: 0x99, hi: 0x99},\n\t{value: 0x811c, lo: 0x9a, hi: 0x9a},\n\t{value: 0x37a0, lo: 0xa2, hi: 0xa2},\n\t{value: 0x37a6, lo: 0xa3, hi: 0xa3},\n\t{value: 0x37b2, lo: 0xa4, hi: 0xa4},\n\t{value: 0x37ac, lo: 0xa5, hi: 0xa5},\n\t{value: 0x37b8, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x8, offset 0x48\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x37ca, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x37be, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x37c4, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8133, lo: 0x96, hi: 0x9c},\n\t{value: 0x8133, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812e, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812e, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t// Block 0x9, offset 0x57\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x8120, lo: 0x91, hi: 0x91},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812e, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8133, lo: 0xba, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8133, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8133, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa, offset 0x64\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8133, lo: 0x80, hi: 0x80},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x812e, lo: 0x82, hi: 0x83},\n\t{value: 0x812e, lo: 0x84, hi: 0x85},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x812e, lo: 0x88, hi: 0x89},\n\t{value: 0x8133, lo: 0x8a, hi: 0x8a},\n\t// Block 0xb, offset 0x6c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0xab, hi: 0xb1},\n\t{value: 0x812e, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8133, lo: 0xb3, hi: 0xb3},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0xc, offset 0x71\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0x96, hi: 0x99},\n\t{value: 0x8133, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8133, lo: 0xa9, hi: 0xad},\n\t// Block 0xd, offset 0x76\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x99, hi: 0x9b},\n\t// Block 0xe, offset 0x78\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8133, lo: 0x97, hi: 0x98},\n\t{value: 0x812e, lo: 0x99, hi: 0x9b},\n\t{value: 0x8133, lo: 0x9c, hi: 0x9f},\n\t// Block 0xf, offset 0x7c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3e37, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3e3f, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3e47, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9903, lo: 0xbc, hi: 0xbc},\n\t// Block 0x10, offset 0x84\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x91, hi: 0x91},\n\t{value: 0x812e, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x93, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x94},\n\t{value: 0x461b, lo: 0x98, hi: 0x9f},\n\t// Block 0x11, offset 0x8b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x12, offset 0x8e\n\t{value: 0x0008, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x3e4f, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x465b, lo: 0x9c, hi: 0x9d},\n\t{value: 0x466b, lo: 0x9f, hi: 0x9f},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbe},\n\t// Block 0x13, offset 0x96\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4693, lo: 0xb3, hi: 0xb3},\n\t{value: 0x469b, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x14, offset 0x9a\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4673, lo: 0x99, hi: 0x9b},\n\t{value: 0x468b, lo: 0x9e, hi: 0x9e},\n\t// Block 0x15, offset 0x9e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x16, offset 0xa0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t// Block 0x17, offset 0xa2\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x3e67, lo: 0x88, hi: 0x88},\n\t{value: 0x3e5f, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3e6f, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x46a3, lo: 0x9c, hi: 0x9c},\n\t{value: 0x46ab, lo: 0x9d, hi: 0x9d},\n\t// Block 0x18, offset 0xab\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3e77, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x19, offset 0xaf\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x3e7f, lo: 0x8a, hi: 0x8a},\n\t{value: 0x3e8f, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3e87, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1a, offset 0xb6\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3e97, lo: 0x88, hi: 0x88},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8121, lo: 0x95, hi: 0x96},\n\t// Block 0x1b, offset 0xbb\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1c, offset 0xbe\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3e9f, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ea7, lo: 0x87, hi: 0x87},\n\t{value: 0x3eaf, lo: 0x88, hi: 0x88},\n\t{value: 0x4b25, lo: 0x8a, hi: 0x8a},\n\t{value: 0x4331, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1d, offset 0xc8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1e, offset 0xcb\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x3eb7, lo: 0x8a, hi: 0x8a},\n\t{value: 0x3ec7, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3ebf, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1f, offset 0xd2\n\t{value: 0x5a29, lo: 0x07},\n\t{value: 0x9905, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3ecf, lo: 0x9a, hi: 0x9a},\n\t{value: 0x4b2d, lo: 0x9c, hi: 0x9c},\n\t{value: 0x433c, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3ed7, lo: 0x9e, hi: 0x9f},\n\t// Block 0x20, offset 0xda\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2751, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8123, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x21, offset 0xde\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8124, lo: 0x88, hi: 0x8b},\n\t// Block 0x22, offset 0xe0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2766, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8125, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x23, offset 0xe4\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8126, lo: 0x88, hi: 0x8b},\n\t{value: 0x2758, lo: 0x9c, hi: 0x9c},\n\t{value: 0x275f, lo: 0x9d, hi: 0x9d},\n\t// Block 0x24, offset 0xe8\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x03fe, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812e, lo: 0x98, hi: 0x99},\n\t{value: 0x812e, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812c, lo: 0xb9, hi: 0xb9},\n\t// Block 0x25, offset 0xee\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2774, lo: 0x83, hi: 0x83},\n\t{value: 0x277b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2782, lo: 0x92, hi: 0x92},\n\t{value: 0x2789, lo: 0x97, hi: 0x97},\n\t{value: 0x2790, lo: 0x9c, hi: 0x9c},\n\t{value: 0x276d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8127, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8128, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4ca5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8129, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4cae, lo: 0xb5, hi: 0xb5},\n\t{value: 0x46b3, lo: 0xb6, hi: 0xb6},\n\t{value: 0x476b, lo: 0xb7, hi: 0xb7},\n\t{value: 0x46bb, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4776, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8128, lo: 0xba, hi: 0xbd},\n\t// Block 0x26, offset 0xff\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8128, lo: 0x80, hi: 0x80},\n\t{value: 0x4cb7, lo: 0x81, hi: 0x81},\n\t{value: 0x8133, lo: 0x82, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0x86, hi: 0x87},\n\t{value: 0x279e, lo: 0x93, hi: 0x93},\n\t{value: 0x27a5, lo: 0x9d, hi: 0x9d},\n\t{value: 0x27ac, lo: 0xa2, hi: 0xa2},\n\t{value: 0x27b3, lo: 0xa7, hi: 0xa7},\n\t{value: 0x27ba, lo: 0xac, hi: 0xac},\n\t{value: 0x2797, lo: 0xb9, hi: 0xb9},\n\t// Block 0x27, offset 0x10b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x86, hi: 0x86},\n\t// Block 0x28, offset 0x10d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3edf, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x29, offset 0x113\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2a, offset 0x115\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0402, lo: 0xbc, hi: 0xbc},\n\t// Block 0x2b, offset 0x117\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2c, offset 0x119\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2d, offset 0x11b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2e, offset 0x11d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2f, offset 0x11f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9f},\n\t// Block 0x30, offset 0x121\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x94, hi: 0x95},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x31, offset 0x124\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9d},\n\t// Block 0x32, offset 0x127\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t// Block 0x33, offset 0x129\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812f, lo: 0xb9, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbb},\n\t// Block 0x34, offset 0x12c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x97, hi: 0x97},\n\t{value: 0x812e, lo: 0x98, hi: 0x98},\n\t// Block 0x35, offset 0x12f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8133, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x133\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812e, lo: 0xb5, hi: 0xba},\n\t{value: 0x8133, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x37, offset 0x139\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x812e, lo: 0x80, hi: 0x80},\n\t{value: 0x8133, lo: 0x81, hi: 0x82},\n\t{value: 0x812e, lo: 0x83, hi: 0x84},\n\t{value: 0x8133, lo: 0x85, hi: 0x89},\n\t{value: 0x812e, lo: 0x8a, hi: 0x8a},\n\t{value: 0x8133, lo: 0x8b, hi: 0x9c},\n\t{value: 0x812e, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8133, lo: 0xa0, hi: 0xa5},\n\t{value: 0x812e, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8133, lo: 0xa7, hi: 0xaa},\n\t{value: 0x8136, lo: 0xab, hi: 0xab},\n\t// Block 0x38, offset 0x145\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3f27, lo: 0x80, hi: 0x80},\n\t{value: 0x3f2f, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x3f37, lo: 0x83, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xab, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xac},\n\t{value: 0x8133, lo: 0xad, hi: 0xb3},\n\t// Block 0x39, offset 0x14e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xaa, hi: 0xab},\n\t// Block 0x3a, offset 0x150\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8105, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3b, offset 0x153\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3c, offset 0x155\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812e, lo: 0x95, hi: 0x99},\n\t{value: 0x8133, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812e, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8133, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x8133, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3d, offset 0x160\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0043, lo: 0xac, hi: 0xac},\n\t{value: 0x00d1, lo: 0xad, hi: 0xad},\n\t{value: 0x0045, lo: 0xae, hi: 0xae},\n\t{value: 0x0049, lo: 0xb0, hi: 0xb1},\n\t{value: 0x00ec, lo: 0xb2, hi: 0xb2},\n\t{value: 0x004f, lo: 0xb3, hi: 0xba},\n\t{value: 0x005f, lo: 0xbc, hi: 0xbc},\n\t{value: 0x00fe, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0061, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0065, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3e, offset 0x16b\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0001, lo: 0x80, hi: 0x8a},\n\t{value: 0x0532, lo: 0x91, hi: 0x91},\n\t{value: 0x439a, lo: 0x97, hi: 0x97},\n\t{value: 0x001d, lo: 0xa4, hi: 0xa4},\n\t{value: 0x19a0, lo: 0xa5, hi: 0xa5},\n\t{value: 0x1c8c, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0001, lo: 0xaf, hi: 0xaf},\n\t{value: 0x27c1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2935, lo: 0xb4, hi: 0xb4},\n\t{value: 0x27c8, lo: 0xb6, hi: 0xb6},\n\t{value: 0x293f, lo: 0xb7, hi: 0xb7},\n\t{value: 0x199a, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4368, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3f, offset 0x179\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x1a60, lo: 0x87, hi: 0x87},\n\t{value: 0x1a5d, lo: 0x88, hi: 0x88},\n\t{value: 0x199d, lo: 0x89, hi: 0x89},\n\t{value: 0x2ac5, lo: 0x97, hi: 0x97},\n\t{value: 0x0001, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0093, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0029, lo: 0xb4, hi: 0xb9},\n\t{value: 0x0017, lo: 0xba, hi: 0xba},\n\t{value: 0x055e, lo: 0xbb, hi: 0xbb},\n\t{value: 0x003b, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0011, lo: 0xbd, hi: 0xbe},\n\t{value: 0x009d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x40, offset 0x187\n\t{value: 0x0002, lo: 0x0f},\n\t{value: 0x0021, lo: 0x80, hi: 0x89},\n\t{value: 0x0017, lo: 0x8a, hi: 0x8a},\n\t{value: 0x055e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x003b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0011, lo: 0x8d, hi: 0x8e},\n\t{value: 0x0083, lo: 0x90, hi: 0x90},\n\t{value: 0x008b, lo: 0x91, hi: 0x91},\n\t{value: 0x009f, lo: 0x92, hi: 0x92},\n\t{value: 0x00b1, lo: 0x93, hi: 0x93},\n\t{value: 0x011f, lo: 0x94, hi: 0x94},\n\t{value: 0x0091, lo: 0x95, hi: 0x95},\n\t{value: 0x0097, lo: 0x96, hi: 0x99},\n\t{value: 0x00a1, lo: 0x9a, hi: 0x9a},\n\t{value: 0x00a7, lo: 0x9b, hi: 0x9c},\n\t{value: 0x1ac9, lo: 0xa8, hi: 0xa8},\n\t// Block 0x41, offset 0x197\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8133, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8133, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8133, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812e, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8133, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t// Block 0x42, offset 0x1a5\n\t{value: 0x0007, lo: 0x06},\n\t{value: 0x22b0, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3b18, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3b26, lo: 0xae, hi: 0xae},\n\t// Block 0x43, offset 0x1ac\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3b2d, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3b34, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x44, offset 0x1b2\n\t{value: 0x017a, lo: 0x0e},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3b42, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3b49, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3b50, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3b57, lo: 0xa4, hi: 0xa4},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3b5e, lo: 0xa6, hi: 0xa6},\n\t{value: 0x27cf, lo: 0xac, hi: 0xad},\n\t{value: 0x27d6, lo: 0xaf, hi: 0xaf},\n\t{value: 0x2953, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x45, offset 0x1c1\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3bc7, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3bf1, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3c1b, lo: 0xaa, hi: 0xad},\n\t// Block 0x46, offset 0x1c5\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x0586, lo: 0xa9, hi: 0xaa},\n\t// Block 0x47, offset 0x1c7\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0057, lo: 0x80, hi: 0x8f},\n\t{value: 0x0083, lo: 0x90, hi: 0xa9},\n\t{value: 0x0021, lo: 0xaa, hi: 0xaa},\n\t// Block 0x48, offset 0x1cb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x2ad2, lo: 0x8c, hi: 0x8c},\n\t// Block 0x49, offset 0x1cd\n\t{value: 0x0266, lo: 0x02},\n\t{value: 0x1cbc, lo: 0xb4, hi: 0xb4},\n\t{value: 0x1a5a, lo: 0xb5, hi: 0xb6},\n\t// Block 0x4a, offset 0x1d0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x45dc, lo: 0x9c, hi: 0x9c},\n\t// Block 0x4b, offset 0x1d2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0095, lo: 0xbc, hi: 0xbc},\n\t{value: 0x006d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x4c, offset 0x1d5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xaf, hi: 0xb1},\n\t// Block 0x4d, offset 0x1d7\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x057a, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x4e, offset 0x1da\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa0, hi: 0xbf},\n\t// Block 0x4f, offset 0x1dc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0ebe, lo: 0x9f, hi: 0x9f},\n\t// Block 0x50, offset 0x1de\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x172a, lo: 0xb3, hi: 0xb3},\n\t// Block 0x51, offset 0x1e0\n\t{value: 0x0004, lo: 0x0b},\n\t{value: 0x1692, lo: 0x80, hi: 0x82},\n\t{value: 0x16aa, lo: 0x83, hi: 0x83},\n\t{value: 0x16c2, lo: 0x84, hi: 0x85},\n\t{value: 0x16d2, lo: 0x86, hi: 0x89},\n\t{value: 0x16e6, lo: 0x8a, hi: 0x8c},\n\t{value: 0x16fa, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1702, lo: 0x8e, hi: 0x8e},\n\t{value: 0x170a, lo: 0x8f, hi: 0x90},\n\t{value: 0x1716, lo: 0x91, hi: 0x93},\n\t{value: 0x1726, lo: 0x94, hi: 0x94},\n\t{value: 0x172e, lo: 0x95, hi: 0x95},\n\t// Block 0x52, offset 0x1ec\n\t{value: 0x0004, lo: 0x09},\n\t{value: 0x0001, lo: 0x80, hi: 0x80},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x8134, lo: 0xac, hi: 0xac},\n\t{value: 0x812f, lo: 0xad, hi: 0xad},\n\t{value: 0x8130, lo: 0xae, hi: 0xae},\n\t{value: 0x8130, lo: 0xaf, hi: 0xaf},\n\t{value: 0x05ae, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0982, lo: 0xb8, hi: 0xba},\n\t// Block 0x53, offset 0x1f6\n\t{value: 0x0006, lo: 0x09},\n\t{value: 0x0406, lo: 0xb1, hi: 0xb1},\n\t{value: 0x040a, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4bcc, lo: 0xb3, hi: 0xb3},\n\t{value: 0x040e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4bd2, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0412, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0416, lo: 0xb8, hi: 0xb8},\n\t{value: 0x041a, lo: 0xb9, hi: 0xb9},\n\t{value: 0x4bde, lo: 0xba, hi: 0xbf},\n\t// Block 0x54, offset 0x200\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb4, hi: 0xbd},\n\t// Block 0x55, offset 0x203\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x02d8, lo: 0x9c, hi: 0x9c},\n\t{value: 0x02de, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9f},\n\t// Block 0x56, offset 0x207\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb1},\n\t// Block 0x57, offset 0x209\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x173e, lo: 0xb0, hi: 0xb0},\n\t// Block 0x58, offset 0x20b\n\t{value: 0x0006, lo: 0x05},\n\t{value: 0x0067, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0047, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0063, lo: 0xb4, hi: 0xb4},\n\t{value: 0x00dd, lo: 0xb8, hi: 0xb8},\n\t{value: 0x00e9, lo: 0xb9, hi: 0xb9},\n\t// Block 0x59, offset 0x211\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xac, hi: 0xac},\n\t// Block 0x5a, offset 0x214\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xa0, hi: 0xb1},\n\t// Block 0x5b, offset 0x217\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xab, hi: 0xad},\n\t// Block 0x5c, offset 0x219\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x93, hi: 0x93},\n\t// Block 0x5d, offset 0x21b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb3, hi: 0xb3},\n\t// Block 0x5e, offset 0x21d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t// Block 0x5f, offset 0x21f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbf},\n\t// Block 0x60, offset 0x225\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t// Block 0x61, offset 0x228\n\t{value: 0x000c, lo: 0x04},\n\t{value: 0x173a, lo: 0x9c, hi: 0x9d},\n\t{value: 0x014f, lo: 0x9e, hi: 0x9e},\n\t{value: 0x174a, lo: 0x9f, hi: 0x9f},\n\t{value: 0x01a6, lo: 0xa9, hi: 0xa9},\n\t// Block 0x62, offset 0x22d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xad, hi: 0xad},\n\t// Block 0x63, offset 0x22f\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x64, offset 0x236\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x65, offset 0x23c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x66, offset 0x242\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x67, offset 0x24a\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x68, offset 0x250\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x69, offset 0x256\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x6a, offset 0x25c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x6b, offset 0x260\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x0003, lo: 0x81, hi: 0xbf},\n\t// Block 0x6c, offset 0x262\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0x6d, offset 0x264\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xa0, hi: 0xa0},\n\t// Block 0x6e, offset 0x266\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb6, hi: 0xba},\n\t// Block 0x6f, offset 0x268\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x410f, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x9a, hi: 0x9a},\n\t{value: 0x4117, lo: 0xa4, hi: 0xa4},\n\t// Block 0x70, offset 0x26d\n\t{value: 0x002d, lo: 0x05},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x71, offset 0x273\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812e, lo: 0xa6, hi: 0xa6},\n\t// Block 0x72, offset 0x276\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa7},\n\t// Block 0x73, offset 0x278\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa9, hi: 0xad},\n\t// Block 0x74, offset 0x27a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t// Block 0x75, offset 0x27c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x812e, lo: 0xba, hi: 0xbb},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbf},\n\t// Block 0x76, offset 0x27f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x8133, lo: 0x88, hi: 0x8a},\n\t{value: 0x812e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8133, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812e, lo: 0x8d, hi: 0x90},\n\t// Block 0x77, offset 0x285\n\t{value: 0x0005, lo: 0x03},\n\t{value: 0x8133, lo: 0x82, hi: 0x82},\n\t{value: 0x812e, lo: 0x83, hi: 0x84},\n\t{value: 0x812e, lo: 0x85, hi: 0x85},\n\t// Block 0x78, offset 0x289\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x79, offset 0x28d\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4287, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4291, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x429b, lo: 0xab, hi: 0xab},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x7a, offset 0x295\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8133, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x42a5, lo: 0xae, hi: 0xae},\n\t{value: 0x42af, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8105, lo: 0xb3, hi: 0xb4},\n\t// Block 0x7b, offset 0x29c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0x7c, offset 0x29f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8103, lo: 0xb6, hi: 0xb6},\n\t// Block 0x7d, offset 0x2a2\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8103, lo: 0xa9, hi: 0xaa},\n\t// Block 0x7e, offset 0x2a4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7f, offset 0x2a7\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x42b9, lo: 0x8b, hi: 0x8b},\n\t{value: 0x42c3, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8133, lo: 0xa6, hi: 0xac},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t// Block 0x80, offset 0x2af\n\t{value: 0x5d33, lo: 0x09},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x42cd, lo: 0x83, hi: 0x84},\n\t{value: 0x42d7, lo: 0x85, hi: 0x85},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x42e1, lo: 0x8e, hi: 0x8e},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0x42eb, lo: 0x91, hi: 0x91},\n\t{value: 0x9900, lo: 0xb8, hi: 0xb8},\n\t{value: 0x9900, lo: 0xbb, hi: 0xbb},\n\t// Block 0x81, offset 0x2b9\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xb900, lo: 0x82, hi: 0x82},\n\t{value: 0x4c14, lo: 0x85, hi: 0x85},\n\t{value: 0x4c09, lo: 0x87, hi: 0x87},\n\t{value: 0x4c1f, lo: 0x88, hi: 0x88},\n\t{value: 0x9900, lo: 0x89, hi: 0x89},\n\t{value: 0x8105, lo: 0x8e, hi: 0x90},\n\t// Block 0x82, offset 0x2c0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x86, hi: 0x86},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9e},\n\t// Block 0x83, offset 0x2c4\n\t{value: 0x560b, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x42ff, lo: 0xbb, hi: 0xbb},\n\t{value: 0x42f5, lo: 0xbc, hi: 0xbd},\n\t{value: 0x4309, lo: 0xbe, hi: 0xbe},\n\t// Block 0x84, offset 0x2cb\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x85, offset 0x2ce\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x4313, lo: 0xba, hi: 0xba},\n\t{value: 0x431d, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x86, offset 0x2d4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x80, hi: 0x80},\n\t// Block 0x87, offset 0x2d6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x88, offset 0x2d8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x89, offset 0x2db\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xab, hi: 0xab},\n\t// Block 0x8a, offset 0x2dd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8103, lo: 0xba, hi: 0xba},\n\t// Block 0x8b, offset 0x2e0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb5, hi: 0xb5},\n\t{value: 0x4327, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8105, lo: 0xbd, hi: 0xbe},\n\t// Block 0x8c, offset 0x2e5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x8d, offset 0x2e7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t// Block 0x8e, offset 0x2e9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x8f, offset 0x2eb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x87, hi: 0x87},\n\t// Block 0x90, offset 0x2ed\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x99, hi: 0x99},\n\t// Block 0x91, offset 0x2ef\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0x82, hi: 0x82},\n\t{value: 0x8105, lo: 0x84, hi: 0x85},\n\t// Block 0x92, offset 0x2f2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x97, hi: 0x97},\n\t// Block 0x93, offset 0x2f4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x81, hi: 0x82},\n\t// Block 0x94, offset 0x2f6\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0xb900, lo: 0x9e, hi: 0x9e},\n\t{value: 0x9900, lo: 0x9f, hi: 0xa0},\n\t{value: 0x4c83, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4c8e, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4c2a, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4c40, lo: 0xa4, hi: 0xa4},\n\t{value: 0x4c35, lo: 0xa5, hi: 0xa5},\n\t{value: 0x4c56, lo: 0xa6, hi: 0xa6},\n\t{value: 0x4c74, lo: 0xa7, hi: 0xa7},\n\t{value: 0x4c65, lo: 0xa8, hi: 0xa8},\n\t{value: 0xb900, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8105, lo: 0xaf, hi: 0xaf},\n\t// Block 0x95, offset 0x303\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x96, offset 0x305\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb6},\n\t// Block 0x97, offset 0x307\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0xb900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x4c4b, lo: 0xa8, hi: 0xa8},\n\t{value: 0x4b35, lo: 0xa9, hi: 0xa9},\n\t{value: 0x4347, lo: 0xaa, hi: 0xaa},\n\t// Block 0x98, offset 0x30d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb0, hi: 0xb1},\n\t// Block 0x99, offset 0x30f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x9a, offset 0x311\n\t{value: 0x0002, lo: 0x02},\n\t{value: 0x0043, lo: 0x96, hi: 0xaf},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb9},\n\t// Block 0x9b, offset 0x314\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x4743, lo: 0x9e, hi: 0x9e},\n\t{value: 0x474d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x4781, lo: 0xa0, hi: 0xa0},\n\t{value: 0x478f, lo: 0xa1, hi: 0xa1},\n\t{value: 0x479d, lo: 0xa2, hi: 0xa2},\n\t{value: 0x47ab, lo: 0xa3, hi: 0xa3},\n\t{value: 0x47b9, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812c, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8131, lo: 0xad, hi: 0xad},\n\t{value: 0x812c, lo: 0xae, hi: 0xb2},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9c, offset 0x321\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812e, lo: 0x80, hi: 0x82},\n\t{value: 0x8133, lo: 0x85, hi: 0x89},\n\t{value: 0x812e, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8133, lo: 0xaa, hi: 0xad},\n\t{value: 0x4757, lo: 0xbb, hi: 0xbb},\n\t{value: 0x4761, lo: 0xbc, hi: 0xbc},\n\t{value: 0x47c7, lo: 0xbd, hi: 0xbd},\n\t{value: 0x47e3, lo: 0xbe, hi: 0xbe},\n\t{value: 0x47d5, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9d, offset 0x32b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x47f1, lo: 0x80, hi: 0x80},\n\t// Block 0x9e, offset 0x32d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x82, hi: 0x84},\n\t// Block 0x9f, offset 0x32f\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0043, lo: 0x80, hi: 0x99},\n\t{value: 0x0083, lo: 0x9a, hi: 0xb3},\n\t{value: 0x0043, lo: 0xb4, hi: 0xbf},\n\t// Block 0xa0, offset 0x333\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x005b, lo: 0x80, hi: 0x8d},\n\t{value: 0x0083, lo: 0x8e, hi: 0x94},\n\t{value: 0x0093, lo: 0x96, hi: 0xa7},\n\t{value: 0x0043, lo: 0xa8, hi: 0xbf},\n\t// Block 0xa1, offset 0x338\n\t{value: 0x0002, lo: 0x0b},\n\t{value: 0x0073, lo: 0x80, hi: 0x81},\n\t{value: 0x0083, lo: 0x82, hi: 0x9b},\n\t{value: 0x0043, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0047, lo: 0x9e, hi: 0x9f},\n\t{value: 0x004f, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0055, lo: 0xa5, hi: 0xa6},\n\t{value: 0x005d, lo: 0xa9, hi: 0xac},\n\t{value: 0x0067, lo: 0xae, hi: 0xb5},\n\t{value: 0x0083, lo: 0xb6, hi: 0xb9},\n\t{value: 0x008d, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0091, lo: 0xbd, hi: 0xbf},\n\t// Block 0xa2, offset 0x344\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x0097, lo: 0x80, hi: 0x83},\n\t{value: 0x00a1, lo: 0x85, hi: 0x8f},\n\t{value: 0x0043, lo: 0x90, hi: 0xa9},\n\t{value: 0x0083, lo: 0xaa, hi: 0xbf},\n\t// Block 0xa3, offset 0x349\n\t{value: 0x0002, lo: 0x08},\n\t{value: 0x00af, lo: 0x80, hi: 0x83},\n\t{value: 0x0043, lo: 0x84, hi: 0x85},\n\t{value: 0x0049, lo: 0x87, hi: 0x8a},\n\t{value: 0x0055, lo: 0x8d, hi: 0x94},\n\t{value: 0x0067, lo: 0x96, hi: 0x9c},\n\t{value: 0x0083, lo: 0x9e, hi: 0xb7},\n\t{value: 0x0043, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0049, lo: 0xbb, hi: 0xbe},\n\t// Block 0xa4, offset 0x352\n\t{value: 0x0002, lo: 0x05},\n\t{value: 0x0053, lo: 0x80, hi: 0x84},\n\t{value: 0x005f, lo: 0x86, hi: 0x86},\n\t{value: 0x0067, lo: 0x8a, hi: 0x90},\n\t{value: 0x0083, lo: 0x92, hi: 0xab},\n\t{value: 0x0043, lo: 0xac, hi: 0xbf},\n\t// Block 0xa5, offset 0x358\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x006b, lo: 0x80, hi: 0x85},\n\t{value: 0x0083, lo: 0x86, hi: 0x9f},\n\t{value: 0x0043, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0083, lo: 0xba, hi: 0xbf},\n\t// Block 0xa6, offset 0x35d\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x008f, lo: 0x80, hi: 0x93},\n\t{value: 0x0043, lo: 0x94, hi: 0xad},\n\t{value: 0x0083, lo: 0xae, hi: 0xbf},\n\t// Block 0xa7, offset 0x361\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x00a7, lo: 0x80, hi: 0x87},\n\t{value: 0x0043, lo: 0x88, hi: 0xa1},\n\t{value: 0x0083, lo: 0xa2, hi: 0xbb},\n\t{value: 0x0043, lo: 0xbc, hi: 0xbf},\n\t// Block 0xa8, offset 0x366\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x004b, lo: 0x80, hi: 0x95},\n\t{value: 0x0083, lo: 0x96, hi: 0xaf},\n\t{value: 0x0043, lo: 0xb0, hi: 0xbf},\n\t// Block 0xa9, offset 0x36a\n\t{value: 0x0003, lo: 0x0f},\n\t{value: 0x023c, lo: 0x80, hi: 0x80},\n\t{value: 0x0556, lo: 0x81, hi: 0x81},\n\t{value: 0x023f, lo: 0x82, hi: 0x9a},\n\t{value: 0x0552, lo: 0x9b, hi: 0x9b},\n\t{value: 0x024b, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0254, lo: 0x9d, hi: 0x9d},\n\t{value: 0x025a, lo: 0x9e, hi: 0x9e},\n\t{value: 0x027e, lo: 0x9f, hi: 0x9f},\n\t{value: 0x026f, lo: 0xa0, hi: 0xa0},\n\t{value: 0x026c, lo: 0xa1, hi: 0xa1},\n\t{value: 0x01f7, lo: 0xa2, hi: 0xb2},\n\t{value: 0x020c, lo: 0xb3, hi: 0xb3},\n\t{value: 0x022a, lo: 0xb4, hi: 0xba},\n\t{value: 0x0556, lo: 0xbb, hi: 0xbb},\n\t{value: 0x023f, lo: 0xbc, hi: 0xbf},\n\t// Block 0xaa, offset 0x37a\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x024b, lo: 0x80, hi: 0x94},\n\t{value: 0x0552, lo: 0x95, hi: 0x95},\n\t{value: 0x024b, lo: 0x96, hi: 0x96},\n\t{value: 0x0254, lo: 0x97, hi: 0x97},\n\t{value: 0x025a, lo: 0x98, hi: 0x98},\n\t{value: 0x027e, lo: 0x99, hi: 0x99},\n\t{value: 0x026f, lo: 0x9a, hi: 0x9a},\n\t{value: 0x026c, lo: 0x9b, hi: 0x9b},\n\t{value: 0x01f7, lo: 0x9c, hi: 0xac},\n\t{value: 0x020c, lo: 0xad, hi: 0xad},\n\t{value: 0x022a, lo: 0xae, hi: 0xb4},\n\t{value: 0x0556, lo: 0xb5, hi: 0xb5},\n\t{value: 0x023f, lo: 0xb6, hi: 0xbf},\n\t// Block 0xab, offset 0x388\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x025d, lo: 0x80, hi: 0x8e},\n\t{value: 0x0552, lo: 0x8f, hi: 0x8f},\n\t{value: 0x024b, lo: 0x90, hi: 0x90},\n\t{value: 0x0254, lo: 0x91, hi: 0x91},\n\t{value: 0x025a, lo: 0x92, hi: 0x92},\n\t{value: 0x027e, lo: 0x93, hi: 0x93},\n\t{value: 0x026f, lo: 0x94, hi: 0x94},\n\t{value: 0x026c, lo: 0x95, hi: 0x95},\n\t{value: 0x01f7, lo: 0x96, hi: 0xa6},\n\t{value: 0x020c, lo: 0xa7, hi: 0xa7},\n\t{value: 0x022a, lo: 0xa8, hi: 0xae},\n\t{value: 0x0556, lo: 0xaf, hi: 0xaf},\n\t{value: 0x023f, lo: 0xb0, hi: 0xbf},\n\t// Block 0xac, offset 0x396\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x026f, lo: 0x80, hi: 0x88},\n\t{value: 0x0552, lo: 0x89, hi: 0x89},\n\t{value: 0x024b, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0254, lo: 0x8b, hi: 0x8b},\n\t{value: 0x025a, lo: 0x8c, hi: 0x8c},\n\t{value: 0x027e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x026f, lo: 0x8e, hi: 0x8e},\n\t{value: 0x026c, lo: 0x8f, hi: 0x8f},\n\t{value: 0x01f7, lo: 0x90, hi: 0xa0},\n\t{value: 0x020c, lo: 0xa1, hi: 0xa1},\n\t{value: 0x022a, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0556, lo: 0xa9, hi: 0xa9},\n\t{value: 0x023f, lo: 0xaa, hi: 0xbf},\n\t// Block 0xad, offset 0x3a4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x8f, hi: 0x8f},\n\t// Block 0xae, offset 0x3a6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xae, hi: 0xae},\n\t// Block 0xaf, offset 0x3a8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xac, hi: 0xaf},\n\t// Block 0xb0, offset 0x3aa\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8134, lo: 0xac, hi: 0xad},\n\t{value: 0x812e, lo: 0xae, hi: 0xae},\n\t{value: 0x8133, lo: 0xaf, hi: 0xaf},\n\t// Block 0xb1, offset 0x3ae\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xae, hi: 0xae},\n\t{value: 0x812e, lo: 0xaf, hi: 0xaf},\n\t// Block 0xb2, offset 0x3b1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8133, lo: 0xae, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb5, hi: 0xb5},\n\t// Block 0xb3, offset 0x3b6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x90, hi: 0x96},\n\t// Block 0xb4, offset 0x3b8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x84, hi: 0x89},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0xb5, offset 0x3bb\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0063, lo: 0x80, hi: 0x89},\n\t{value: 0x1a7e, lo: 0x8a, hi: 0x8a},\n\t{value: 0x1ab1, lo: 0x8b, hi: 0x8b},\n\t{value: 0x1acc, lo: 0x8c, hi: 0x8c},\n\t{value: 0x1ad2, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1cf0, lo: 0x8e, hi: 0x8e},\n\t{value: 0x1ade, lo: 0x8f, hi: 0x8f},\n\t{value: 0x1aa8, lo: 0xaa, hi: 0xaa},\n\t{value: 0x1aab, lo: 0xab, hi: 0xab},\n\t{value: 0x1aae, lo: 0xac, hi: 0xac},\n\t// Block 0xb6, offset 0x3c6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x1a6c, lo: 0x90, hi: 0x90},\n\t// Block 0xb7, offset 0x3c8\n\t{value: 0x0028, lo: 0x09},\n\t{value: 0x2999, lo: 0x80, hi: 0x80},\n\t{value: 0x295d, lo: 0x81, hi: 0x81},\n\t{value: 0x2967, lo: 0x82, hi: 0x82},\n\t{value: 0x297b, lo: 0x83, hi: 0x84},\n\t{value: 0x2985, lo: 0x85, hi: 0x86},\n\t{value: 0x2971, lo: 0x87, hi: 0x87},\n\t{value: 0x298f, lo: 0x88, hi: 0x88},\n\t{value: 0x0c6a, lo: 0x90, hi: 0x90},\n\t{value: 0x09e2, lo: 0x91, hi: 0x91},\n\t// Block 0xb8, offset 0x3d2\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb9},\n}\n\n// recompMap: 7688 bytes (entries only)\nvar recompMap map[uint32]rune\nvar recompMapOnce sync.Once\n\nconst recompMapPacked = \"\" +\n\t\"\\x00A\\x03\\x00\\x00\\x00\\x00\\xc0\" + // 0x00410300: 0x000000C0\n\t\"\\x00A\\x03\\x01\\x00\\x00\\x00\\xc1\" + // 0x00410301: 0x000000C1\n\t\"\\x00A\\x03\\x02\\x00\\x00\\x00\\xc2\" + // 0x00410302: 0x000000C2\n\t\"\\x00A\\x03\\x03\\x00\\x00\\x00\\xc3\" + // 0x00410303: 0x000000C3\n\t\"\\x00A\\x03\\b\\x00\\x00\\x00\\xc4\" + // 0x00410308: 0x000000C4\n\t\"\\x00A\\x03\\n\\x00\\x00\\x00\\xc5\" + // 0x0041030A: 0x000000C5\n\t\"\\x00C\\x03'\\x00\\x00\\x00\\xc7\" + // 0x00430327: 0x000000C7\n\t\"\\x00E\\x03\\x00\\x00\\x00\\x00\\xc8\" + // 0x00450300: 0x000000C8\n\t\"\\x00E\\x03\\x01\\x00\\x00\\x00\\xc9\" + // 0x00450301: 0x000000C9\n\t\"\\x00E\\x03\\x02\\x00\\x00\\x00\\xca\" + // 0x00450302: 0x000000CA\n\t\"\\x00E\\x03\\b\\x00\\x00\\x00\\xcb\" + // 0x00450308: 0x000000CB\n\t\"\\x00I\\x03\\x00\\x00\\x00\\x00\\xcc\" + // 0x00490300: 0x000000CC\n\t\"\\x00I\\x03\\x01\\x00\\x00\\x00\\xcd\" + // 0x00490301: 0x000000CD\n\t\"\\x00I\\x03\\x02\\x00\\x00\\x00\\xce\" + // 0x00490302: 0x000000CE\n\t\"\\x00I\\x03\\b\\x00\\x00\\x00\\xcf\" + // 0x00490308: 0x000000CF\n\t\"\\x00N\\x03\\x03\\x00\\x00\\x00\\xd1\" + // 0x004E0303: 0x000000D1\n\t\"\\x00O\\x03\\x00\\x00\\x00\\x00\\xd2\" + // 0x004F0300: 0x000000D2\n\t\"\\x00O\\x03\\x01\\x00\\x00\\x00\\xd3\" + // 0x004F0301: 0x000000D3\n\t\"\\x00O\\x03\\x02\\x00\\x00\\x00\\xd4\" + // 0x004F0302: 0x000000D4\n\t\"\\x00O\\x03\\x03\\x00\\x00\\x00\\xd5\" + // 0x004F0303: 0x000000D5\n\t\"\\x00O\\x03\\b\\x00\\x00\\x00\\xd6\" + // 0x004F0308: 0x000000D6\n\t\"\\x00U\\x03\\x00\\x00\\x00\\x00\\xd9\" + // 0x00550300: 0x000000D9\n\t\"\\x00U\\x03\\x01\\x00\\x00\\x00\\xda\" + // 0x00550301: 0x000000DA\n\t\"\\x00U\\x03\\x02\\x00\\x00\\x00\\xdb\" + // 0x00550302: 0x000000DB\n\t\"\\x00U\\x03\\b\\x00\\x00\\x00\\xdc\" + // 0x00550308: 0x000000DC\n\t\"\\x00Y\\x03\\x01\\x00\\x00\\x00\\xdd\" + // 0x00590301: 0x000000DD\n\t\"\\x00a\\x03\\x00\\x00\\x00\\x00\\xe0\" + // 0x00610300: 0x000000E0\n\t\"\\x00a\\x03\\x01\\x00\\x00\\x00\\xe1\" + // 0x00610301: 0x000000E1\n\t\"\\x00a\\x03\\x02\\x00\\x00\\x00\\xe2\" + // 0x00610302: 0x000000E2\n\t\"\\x00a\\x03\\x03\\x00\\x00\\x00\\xe3\" + // 0x00610303: 0x000000E3\n\t\"\\x00a\\x03\\b\\x00\\x00\\x00\\xe4\" + // 0x00610308: 0x000000E4\n\t\"\\x00a\\x03\\n\\x00\\x00\\x00\\xe5\" + // 0x0061030A: 0x000000E5\n\t\"\\x00c\\x03'\\x00\\x00\\x00\\xe7\" + // 0x00630327: 0x000000E7\n\t\"\\x00e\\x03\\x00\\x00\\x00\\x00\\xe8\" + // 0x00650300: 0x000000E8\n\t\"\\x00e\\x03\\x01\\x00\\x00\\x00\\xe9\" + // 0x00650301: 0x000000E9\n\t\"\\x00e\\x03\\x02\\x00\\x00\\x00\\xea\" + // 0x00650302: 0x000000EA\n\t\"\\x00e\\x03\\b\\x00\\x00\\x00\\xeb\" + // 0x00650308: 0x000000EB\n\t\"\\x00i\\x03\\x00\\x00\\x00\\x00\\xec\" + // 0x00690300: 0x000000EC\n\t\"\\x00i\\x03\\x01\\x00\\x00\\x00\\xed\" + // 0x00690301: 0x000000ED\n\t\"\\x00i\\x03\\x02\\x00\\x00\\x00\\xee\" + // 0x00690302: 0x000000EE\n\t\"\\x00i\\x03\\b\\x00\\x00\\x00\\xef\" + // 0x00690308: 0x000000EF\n\t\"\\x00n\\x03\\x03\\x00\\x00\\x00\\xf1\" + // 0x006E0303: 0x000000F1\n\t\"\\x00o\\x03\\x00\\x00\\x00\\x00\\xf2\" + // 0x006F0300: 0x000000F2\n\t\"\\x00o\\x03\\x01\\x00\\x00\\x00\\xf3\" + // 0x006F0301: 0x000000F3\n\t\"\\x00o\\x03\\x02\\x00\\x00\\x00\\xf4\" + // 0x006F0302: 0x000000F4\n\t\"\\x00o\\x03\\x03\\x00\\x00\\x00\\xf5\" + // 0x006F0303: 0x000000F5\n\t\"\\x00o\\x03\\b\\x00\\x00\\x00\\xf6\" + // 0x006F0308: 0x000000F6\n\t\"\\x00u\\x03\\x00\\x00\\x00\\x00\\xf9\" + // 0x00750300: 0x000000F9\n\t\"\\x00u\\x03\\x01\\x00\\x00\\x00\\xfa\" + // 0x00750301: 0x000000FA\n\t\"\\x00u\\x03\\x02\\x00\\x00\\x00\\xfb\" + // 0x00750302: 0x000000FB\n\t\"\\x00u\\x03\\b\\x00\\x00\\x00\\xfc\" + // 0x00750308: 0x000000FC\n\t\"\\x00y\\x03\\x01\\x00\\x00\\x00\\xfd\" + // 0x00790301: 0x000000FD\n\t\"\\x00y\\x03\\b\\x00\\x00\\x00\\xff\" + // 0x00790308: 0x000000FF\n\t\"\\x00A\\x03\\x04\\x00\\x00\\x01\\x00\" + // 0x00410304: 0x00000100\n\t\"\\x00a\\x03\\x04\\x00\\x00\\x01\\x01\" + // 0x00610304: 0x00000101\n\t\"\\x00A\\x03\\x06\\x00\\x00\\x01\\x02\" + // 0x00410306: 0x00000102\n\t\"\\x00a\\x03\\x06\\x00\\x00\\x01\\x03\" + // 0x00610306: 0x00000103\n\t\"\\x00A\\x03(\\x00\\x00\\x01\\x04\" + // 0x00410328: 0x00000104\n\t\"\\x00a\\x03(\\x00\\x00\\x01\\x05\" + // 0x00610328: 0x00000105\n\t\"\\x00C\\x03\\x01\\x00\\x00\\x01\\x06\" + // 0x00430301: 0x00000106\n\t\"\\x00c\\x03\\x01\\x00\\x00\\x01\\a\" + // 0x00630301: 0x00000107\n\t\"\\x00C\\x03\\x02\\x00\\x00\\x01\\b\" + // 0x00430302: 0x00000108\n\t\"\\x00c\\x03\\x02\\x00\\x00\\x01\\t\" + // 0x00630302: 0x00000109\n\t\"\\x00C\\x03\\a\\x00\\x00\\x01\\n\" + // 0x00430307: 0x0000010A\n\t\"\\x00c\\x03\\a\\x00\\x00\\x01\\v\" + // 0x00630307: 0x0000010B\n\t\"\\x00C\\x03\\f\\x00\\x00\\x01\\f\" + // 0x0043030C: 0x0000010C\n\t\"\\x00c\\x03\\f\\x00\\x00\\x01\\r\" + // 0x0063030C: 0x0000010D\n\t\"\\x00D\\x03\\f\\x00\\x00\\x01\\x0e\" + // 0x0044030C: 0x0000010E\n\t\"\\x00d\\x03\\f\\x00\\x00\\x01\\x0f\" + // 0x0064030C: 0x0000010F\n\t\"\\x00E\\x03\\x04\\x00\\x00\\x01\\x12\" + // 0x00450304: 0x00000112\n\t\"\\x00e\\x03\\x04\\x00\\x00\\x01\\x13\" + // 0x00650304: 0x00000113\n\t\"\\x00E\\x03\\x06\\x00\\x00\\x01\\x14\" + // 0x00450306: 0x00000114\n\t\"\\x00e\\x03\\x06\\x00\\x00\\x01\\x15\" + // 0x00650306: 0x00000115\n\t\"\\x00E\\x03\\a\\x00\\x00\\x01\\x16\" + // 0x00450307: 0x00000116\n\t\"\\x00e\\x03\\a\\x00\\x00\\x01\\x17\" + // 0x00650307: 0x00000117\n\t\"\\x00E\\x03(\\x00\\x00\\x01\\x18\" + // 0x00450328: 0x00000118\n\t\"\\x00e\\x03(\\x00\\x00\\x01\\x19\" + // 0x00650328: 0x00000119\n\t\"\\x00E\\x03\\f\\x00\\x00\\x01\\x1a\" + // 0x0045030C: 0x0000011A\n\t\"\\x00e\\x03\\f\\x00\\x00\\x01\\x1b\" + // 0x0065030C: 0x0000011B\n\t\"\\x00G\\x03\\x02\\x00\\x00\\x01\\x1c\" + // 0x00470302: 0x0000011C\n\t\"\\x00g\\x03\\x02\\x00\\x00\\x01\\x1d\" + // 0x00670302: 0x0000011D\n\t\"\\x00G\\x03\\x06\\x00\\x00\\x01\\x1e\" + // 0x00470306: 0x0000011E\n\t\"\\x00g\\x03\\x06\\x00\\x00\\x01\\x1f\" + // 0x00670306: 0x0000011F\n\t\"\\x00G\\x03\\a\\x00\\x00\\x01 \" + // 0x00470307: 0x00000120\n\t\"\\x00g\\x03\\a\\x00\\x00\\x01!\" + // 0x00670307: 0x00000121\n\t\"\\x00G\\x03'\\x00\\x00\\x01\\\"\" + // 0x00470327: 0x00000122\n\t\"\\x00g\\x03'\\x00\\x00\\x01#\" + // 0x00670327: 0x00000123\n\t\"\\x00H\\x03\\x02\\x00\\x00\\x01$\" + // 0x00480302: 0x00000124\n\t\"\\x00h\\x03\\x02\\x00\\x00\\x01%\" + // 0x00680302: 0x00000125\n\t\"\\x00I\\x03\\x03\\x00\\x00\\x01(\" + // 0x00490303: 0x00000128\n\t\"\\x00i\\x03\\x03\\x00\\x00\\x01)\" + // 0x00690303: 0x00000129\n\t\"\\x00I\\x03\\x04\\x00\\x00\\x01*\" + // 0x00490304: 0x0000012A\n\t\"\\x00i\\x03\\x04\\x00\\x00\\x01+\" + // 0x00690304: 0x0000012B\n\t\"\\x00I\\x03\\x06\\x00\\x00\\x01,\" + // 0x00490306: 0x0000012C\n\t\"\\x00i\\x03\\x06\\x00\\x00\\x01-\" + // 0x00690306: 0x0000012D\n\t\"\\x00I\\x03(\\x00\\x00\\x01.\" + // 0x00490328: 0x0000012E\n\t\"\\x00i\\x03(\\x00\\x00\\x01/\" + // 0x00690328: 0x0000012F\n\t\"\\x00I\\x03\\a\\x00\\x00\\x010\" + // 0x00490307: 0x00000130\n\t\"\\x00J\\x03\\x02\\x00\\x00\\x014\" + // 0x004A0302: 0x00000134\n\t\"\\x00j\\x03\\x02\\x00\\x00\\x015\" + // 0x006A0302: 0x00000135\n\t\"\\x00K\\x03'\\x00\\x00\\x016\" + // 0x004B0327: 0x00000136\n\t\"\\x00k\\x03'\\x00\\x00\\x017\" + // 0x006B0327: 0x00000137\n\t\"\\x00L\\x03\\x01\\x00\\x00\\x019\" + // 0x004C0301: 0x00000139\n\t\"\\x00l\\x03\\x01\\x00\\x00\\x01:\" + // 0x006C0301: 0x0000013A\n\t\"\\x00L\\x03'\\x00\\x00\\x01;\" + // 0x004C0327: 0x0000013B\n\t\"\\x00l\\x03'\\x00\\x00\\x01<\" + // 0x006C0327: 0x0000013C\n\t\"\\x00L\\x03\\f\\x00\\x00\\x01=\" + // 0x004C030C: 0x0000013D\n\t\"\\x00l\\x03\\f\\x00\\x00\\x01>\" + // 0x006C030C: 0x0000013E\n\t\"\\x00N\\x03\\x01\\x00\\x00\\x01C\" + // 0x004E0301: 0x00000143\n\t\"\\x00n\\x03\\x01\\x00\\x00\\x01D\" + // 0x006E0301: 0x00000144\n\t\"\\x00N\\x03'\\x00\\x00\\x01E\" + // 0x004E0327: 0x00000145\n\t\"\\x00n\\x03'\\x00\\x00\\x01F\" + // 0x006E0327: 0x00000146\n\t\"\\x00N\\x03\\f\\x00\\x00\\x01G\" + // 0x004E030C: 0x00000147\n\t\"\\x00n\\x03\\f\\x00\\x00\\x01H\" + // 0x006E030C: 0x00000148\n\t\"\\x00O\\x03\\x04\\x00\\x00\\x01L\" + // 0x004F0304: 0x0000014C\n\t\"\\x00o\\x03\\x04\\x00\\x00\\x01M\" + // 0x006F0304: 0x0000014D\n\t\"\\x00O\\x03\\x06\\x00\\x00\\x01N\" + // 0x004F0306: 0x0000014E\n\t\"\\x00o\\x03\\x06\\x00\\x00\\x01O\" + // 0x006F0306: 0x0000014F\n\t\"\\x00O\\x03\\v\\x00\\x00\\x01P\" + // 0x004F030B: 0x00000150\n\t\"\\x00o\\x03\\v\\x00\\x00\\x01Q\" + // 0x006F030B: 0x00000151\n\t\"\\x00R\\x03\\x01\\x00\\x00\\x01T\" + // 0x00520301: 0x00000154\n\t\"\\x00r\\x03\\x01\\x00\\x00\\x01U\" + // 0x00720301: 0x00000155\n\t\"\\x00R\\x03'\\x00\\x00\\x01V\" + // 0x00520327: 0x00000156\n\t\"\\x00r\\x03'\\x00\\x00\\x01W\" + // 0x00720327: 0x00000157\n\t\"\\x00R\\x03\\f\\x00\\x00\\x01X\" + // 0x0052030C: 0x00000158\n\t\"\\x00r\\x03\\f\\x00\\x00\\x01Y\" + // 0x0072030C: 0x00000159\n\t\"\\x00S\\x03\\x01\\x00\\x00\\x01Z\" + // 0x00530301: 0x0000015A\n\t\"\\x00s\\x03\\x01\\x00\\x00\\x01[\" + // 0x00730301: 0x0000015B\n\t\"\\x00S\\x03\\x02\\x00\\x00\\x01\\\\\" + // 0x00530302: 0x0000015C\n\t\"\\x00s\\x03\\x02\\x00\\x00\\x01]\" + // 0x00730302: 0x0000015D\n\t\"\\x00S\\x03'\\x00\\x00\\x01^\" + // 0x00530327: 0x0000015E\n\t\"\\x00s\\x03'\\x00\\x00\\x01_\" + // 0x00730327: 0x0000015F\n\t\"\\x00S\\x03\\f\\x00\\x00\\x01`\" + // 0x0053030C: 0x00000160\n\t\"\\x00s\\x03\\f\\x00\\x00\\x01a\" + // 0x0073030C: 0x00000161\n\t\"\\x00T\\x03'\\x00\\x00\\x01b\" + // 0x00540327: 0x00000162\n\t\"\\x00t\\x03'\\x00\\x00\\x01c\" + // 0x00740327: 0x00000163\n\t\"\\x00T\\x03\\f\\x00\\x00\\x01d\" + // 0x0054030C: 0x00000164\n\t\"\\x00t\\x03\\f\\x00\\x00\\x01e\" + // 0x0074030C: 0x00000165\n\t\"\\x00U\\x03\\x03\\x00\\x00\\x01h\" + // 0x00550303: 0x00000168\n\t\"\\x00u\\x03\\x03\\x00\\x00\\x01i\" + // 0x00750303: 0x00000169\n\t\"\\x00U\\x03\\x04\\x00\\x00\\x01j\" + // 0x00550304: 0x0000016A\n\t\"\\x00u\\x03\\x04\\x00\\x00\\x01k\" + // 0x00750304: 0x0000016B\n\t\"\\x00U\\x03\\x06\\x00\\x00\\x01l\" + // 0x00550306: 0x0000016C\n\t\"\\x00u\\x03\\x06\\x00\\x00\\x01m\" + // 0x00750306: 0x0000016D\n\t\"\\x00U\\x03\\n\\x00\\x00\\x01n\" + // 0x0055030A: 0x0000016E\n\t\"\\x00u\\x03\\n\\x00\\x00\\x01o\" + // 0x0075030A: 0x0000016F\n\t\"\\x00U\\x03\\v\\x00\\x00\\x01p\" + // 0x0055030B: 0x00000170\n\t\"\\x00u\\x03\\v\\x00\\x00\\x01q\" + // 0x0075030B: 0x00000171\n\t\"\\x00U\\x03(\\x00\\x00\\x01r\" + // 0x00550328: 0x00000172\n\t\"\\x00u\\x03(\\x00\\x00\\x01s\" + // 0x00750328: 0x00000173\n\t\"\\x00W\\x03\\x02\\x00\\x00\\x01t\" + // 0x00570302: 0x00000174\n\t\"\\x00w\\x03\\x02\\x00\\x00\\x01u\" + // 0x00770302: 0x00000175\n\t\"\\x00Y\\x03\\x02\\x00\\x00\\x01v\" + // 0x00590302: 0x00000176\n\t\"\\x00y\\x03\\x02\\x00\\x00\\x01w\" + // 0x00790302: 0x00000177\n\t\"\\x00Y\\x03\\b\\x00\\x00\\x01x\" + // 0x00590308: 0x00000178\n\t\"\\x00Z\\x03\\x01\\x00\\x00\\x01y\" + // 0x005A0301: 0x00000179\n\t\"\\x00z\\x03\\x01\\x00\\x00\\x01z\" + // 0x007A0301: 0x0000017A\n\t\"\\x00Z\\x03\\a\\x00\\x00\\x01{\" + // 0x005A0307: 0x0000017B\n\t\"\\x00z\\x03\\a\\x00\\x00\\x01|\" + // 0x007A0307: 0x0000017C\n\t\"\\x00Z\\x03\\f\\x00\\x00\\x01}\" + // 0x005A030C: 0x0000017D\n\t\"\\x00z\\x03\\f\\x00\\x00\\x01~\" + // 0x007A030C: 0x0000017E\n\t\"\\x00O\\x03\\x1b\\x00\\x00\\x01\\xa0\" + // 0x004F031B: 0x000001A0\n\t\"\\x00o\\x03\\x1b\\x00\\x00\\x01\\xa1\" + // 0x006F031B: 0x000001A1\n\t\"\\x00U\\x03\\x1b\\x00\\x00\\x01\\xaf\" + // 0x0055031B: 0x000001AF\n\t\"\\x00u\\x03\\x1b\\x00\\x00\\x01\\xb0\" + // 0x0075031B: 0x000001B0\n\t\"\\x00A\\x03\\f\\x00\\x00\\x01\\xcd\" + // 0x0041030C: 0x000001CD\n\t\"\\x00a\\x03\\f\\x00\\x00\\x01\\xce\" + // 0x0061030C: 0x000001CE\n\t\"\\x00I\\x03\\f\\x00\\x00\\x01\\xcf\" + // 0x0049030C: 0x000001CF\n\t\"\\x00i\\x03\\f\\x00\\x00\\x01\\xd0\" + // 0x0069030C: 0x000001D0\n\t\"\\x00O\\x03\\f\\x00\\x00\\x01\\xd1\" + // 0x004F030C: 0x000001D1\n\t\"\\x00o\\x03\\f\\x00\\x00\\x01\\xd2\" + // 0x006F030C: 0x000001D2\n\t\"\\x00U\\x03\\f\\x00\\x00\\x01\\xd3\" + // 0x0055030C: 0x000001D3\n\t\"\\x00u\\x03\\f\\x00\\x00\\x01\\xd4\" + // 0x0075030C: 0x000001D4\n\t\"\\x00\\xdc\\x03\\x04\\x00\\x00\\x01\\xd5\" + // 0x00DC0304: 0x000001D5\n\t\"\\x00\\xfc\\x03\\x04\\x00\\x00\\x01\\xd6\" + // 0x00FC0304: 0x000001D6\n\t\"\\x00\\xdc\\x03\\x01\\x00\\x00\\x01\\xd7\" + // 0x00DC0301: 0x000001D7\n\t\"\\x00\\xfc\\x03\\x01\\x00\\x00\\x01\\xd8\" + // 0x00FC0301: 0x000001D8\n\t\"\\x00\\xdc\\x03\\f\\x00\\x00\\x01\\xd9\" + // 0x00DC030C: 0x000001D9\n\t\"\\x00\\xfc\\x03\\f\\x00\\x00\\x01\\xda\" + // 0x00FC030C: 0x000001DA\n\t\"\\x00\\xdc\\x03\\x00\\x00\\x00\\x01\\xdb\" + // 0x00DC0300: 0x000001DB\n\t\"\\x00\\xfc\\x03\\x00\\x00\\x00\\x01\\xdc\" + // 0x00FC0300: 0x000001DC\n\t\"\\x00\\xc4\\x03\\x04\\x00\\x00\\x01\\xde\" + // 0x00C40304: 0x000001DE\n\t\"\\x00\\xe4\\x03\\x04\\x00\\x00\\x01\\xdf\" + // 0x00E40304: 0x000001DF\n\t\"\\x02&\\x03\\x04\\x00\\x00\\x01\\xe0\" + // 0x02260304: 0x000001E0\n\t\"\\x02'\\x03\\x04\\x00\\x00\\x01\\xe1\" + // 0x02270304: 0x000001E1\n\t\"\\x00\\xc6\\x03\\x04\\x00\\x00\\x01\\xe2\" + // 0x00C60304: 0x000001E2\n\t\"\\x00\\xe6\\x03\\x04\\x00\\x00\\x01\\xe3\" + // 0x00E60304: 0x000001E3\n\t\"\\x00G\\x03\\f\\x00\\x00\\x01\\xe6\" + // 0x0047030C: 0x000001E6\n\t\"\\x00g\\x03\\f\\x00\\x00\\x01\\xe7\" + // 0x0067030C: 0x000001E7\n\t\"\\x00K\\x03\\f\\x00\\x00\\x01\\xe8\" + // 0x004B030C: 0x000001E8\n\t\"\\x00k\\x03\\f\\x00\\x00\\x01\\xe9\" + // 0x006B030C: 0x000001E9\n\t\"\\x00O\\x03(\\x00\\x00\\x01\\xea\" + // 0x004F0328: 0x000001EA\n\t\"\\x00o\\x03(\\x00\\x00\\x01\\xeb\" + // 0x006F0328: 0x000001EB\n\t\"\\x01\\xea\\x03\\x04\\x00\\x00\\x01\\xec\" + // 0x01EA0304: 0x000001EC\n\t\"\\x01\\xeb\\x03\\x04\\x00\\x00\\x01\\xed\" + // 0x01EB0304: 0x000001ED\n\t\"\\x01\\xb7\\x03\\f\\x00\\x00\\x01\\xee\" + // 0x01B7030C: 0x000001EE\n\t\"\\x02\\x92\\x03\\f\\x00\\x00\\x01\\xef\" + // 0x0292030C: 0x000001EF\n\t\"\\x00j\\x03\\f\\x00\\x00\\x01\\xf0\" + // 0x006A030C: 0x000001F0\n\t\"\\x00G\\x03\\x01\\x00\\x00\\x01\\xf4\" + // 0x00470301: 0x000001F4\n\t\"\\x00g\\x03\\x01\\x00\\x00\\x01\\xf5\" + // 0x00670301: 0x000001F5\n\t\"\\x00N\\x03\\x00\\x00\\x00\\x01\\xf8\" + // 0x004E0300: 0x000001F8\n\t\"\\x00n\\x03\\x00\\x00\\x00\\x01\\xf9\" + // 0x006E0300: 0x000001F9\n\t\"\\x00\\xc5\\x03\\x01\\x00\\x00\\x01\\xfa\" + // 0x00C50301: 0x000001FA\n\t\"\\x00\\xe5\\x03\\x01\\x00\\x00\\x01\\xfb\" + // 0x00E50301: 0x000001FB\n\t\"\\x00\\xc6\\x03\\x01\\x00\\x00\\x01\\xfc\" + // 0x00C60301: 0x000001FC\n\t\"\\x00\\xe6\\x03\\x01\\x00\\x00\\x01\\xfd\" + // 0x00E60301: 0x000001FD\n\t\"\\x00\\xd8\\x03\\x01\\x00\\x00\\x01\\xfe\" + // 0x00D80301: 0x000001FE\n\t\"\\x00\\xf8\\x03\\x01\\x00\\x00\\x01\\xff\" + // 0x00F80301: 0x000001FF\n\t\"\\x00A\\x03\\x0f\\x00\\x00\\x02\\x00\" + // 0x0041030F: 0x00000200\n\t\"\\x00a\\x03\\x0f\\x00\\x00\\x02\\x01\" + // 0x0061030F: 0x00000201\n\t\"\\x00A\\x03\\x11\\x00\\x00\\x02\\x02\" + // 0x00410311: 0x00000202\n\t\"\\x00a\\x03\\x11\\x00\\x00\\x02\\x03\" + // 0x00610311: 0x00000203\n\t\"\\x00E\\x03\\x0f\\x00\\x00\\x02\\x04\" + // 0x0045030F: 0x00000204\n\t\"\\x00e\\x03\\x0f\\x00\\x00\\x02\\x05\" + // 0x0065030F: 0x00000205\n\t\"\\x00E\\x03\\x11\\x00\\x00\\x02\\x06\" + // 0x00450311: 0x00000206\n\t\"\\x00e\\x03\\x11\\x00\\x00\\x02\\a\" + // 0x00650311: 0x00000207\n\t\"\\x00I\\x03\\x0f\\x00\\x00\\x02\\b\" + // 0x0049030F: 0x00000208\n\t\"\\x00i\\x03\\x0f\\x00\\x00\\x02\\t\" + // 0x0069030F: 0x00000209\n\t\"\\x00I\\x03\\x11\\x00\\x00\\x02\\n\" + // 0x00490311: 0x0000020A\n\t\"\\x00i\\x03\\x11\\x00\\x00\\x02\\v\" + // 0x00690311: 0x0000020B\n\t\"\\x00O\\x03\\x0f\\x00\\x00\\x02\\f\" + // 0x004F030F: 0x0000020C\n\t\"\\x00o\\x03\\x0f\\x00\\x00\\x02\\r\" + // 0x006F030F: 0x0000020D\n\t\"\\x00O\\x03\\x11\\x00\\x00\\x02\\x0e\" + // 0x004F0311: 0x0000020E\n\t\"\\x00o\\x03\\x11\\x00\\x00\\x02\\x0f\" + // 0x006F0311: 0x0000020F\n\t\"\\x00R\\x03\\x0f\\x00\\x00\\x02\\x10\" + // 0x0052030F: 0x00000210\n\t\"\\x00r\\x03\\x0f\\x00\\x00\\x02\\x11\" + // 0x0072030F: 0x00000211\n\t\"\\x00R\\x03\\x11\\x00\\x00\\x02\\x12\" + // 0x00520311: 0x00000212\n\t\"\\x00r\\x03\\x11\\x00\\x00\\x02\\x13\" + // 0x00720311: 0x00000213\n\t\"\\x00U\\x03\\x0f\\x00\\x00\\x02\\x14\" + // 0x0055030F: 0x00000214\n\t\"\\x00u\\x03\\x0f\\x00\\x00\\x02\\x15\" + // 0x0075030F: 0x00000215\n\t\"\\x00U\\x03\\x11\\x00\\x00\\x02\\x16\" + // 0x00550311: 0x00000216\n\t\"\\x00u\\x03\\x11\\x00\\x00\\x02\\x17\" + // 0x00750311: 0x00000217\n\t\"\\x00S\\x03&\\x00\\x00\\x02\\x18\" + // 0x00530326: 0x00000218\n\t\"\\x00s\\x03&\\x00\\x00\\x02\\x19\" + // 0x00730326: 0x00000219\n\t\"\\x00T\\x03&\\x00\\x00\\x02\\x1a\" + // 0x00540326: 0x0000021A\n\t\"\\x00t\\x03&\\x00\\x00\\x02\\x1b\" + // 0x00740326: 0x0000021B\n\t\"\\x00H\\x03\\f\\x00\\x00\\x02\\x1e\" + // 0x0048030C: 0x0000021E\n\t\"\\x00h\\x03\\f\\x00\\x00\\x02\\x1f\" + // 0x0068030C: 0x0000021F\n\t\"\\x00A\\x03\\a\\x00\\x00\\x02&\" + // 0x00410307: 0x00000226\n\t\"\\x00a\\x03\\a\\x00\\x00\\x02'\" + // 0x00610307: 0x00000227\n\t\"\\x00E\\x03'\\x00\\x00\\x02(\" + // 0x00450327: 0x00000228\n\t\"\\x00e\\x03'\\x00\\x00\\x02)\" + // 0x00650327: 0x00000229\n\t\"\\x00\\xd6\\x03\\x04\\x00\\x00\\x02*\" + // 0x00D60304: 0x0000022A\n\t\"\\x00\\xf6\\x03\\x04\\x00\\x00\\x02+\" + // 0x00F60304: 0x0000022B\n\t\"\\x00\\xd5\\x03\\x04\\x00\\x00\\x02,\" + // 0x00D50304: 0x0000022C\n\t\"\\x00\\xf5\\x03\\x04\\x00\\x00\\x02-\" + // 0x00F50304: 0x0000022D\n\t\"\\x00O\\x03\\a\\x00\\x00\\x02.\" + // 0x004F0307: 0x0000022E\n\t\"\\x00o\\x03\\a\\x00\\x00\\x02/\" + // 0x006F0307: 0x0000022F\n\t\"\\x02.\\x03\\x04\\x00\\x00\\x020\" + // 0x022E0304: 0x00000230\n\t\"\\x02/\\x03\\x04\\x00\\x00\\x021\" + // 0x022F0304: 0x00000231\n\t\"\\x00Y\\x03\\x04\\x00\\x00\\x022\" + // 0x00590304: 0x00000232\n\t\"\\x00y\\x03\\x04\\x00\\x00\\x023\" + // 0x00790304: 0x00000233\n\t\"\\x00\\xa8\\x03\\x01\\x00\\x00\\x03\\x85\" + // 0x00A80301: 0x00000385\n\t\"\\x03\\x91\\x03\\x01\\x00\\x00\\x03\\x86\" + // 0x03910301: 0x00000386\n\t\"\\x03\\x95\\x03\\x01\\x00\\x00\\x03\\x88\" + // 0x03950301: 0x00000388\n\t\"\\x03\\x97\\x03\\x01\\x00\\x00\\x03\\x89\" + // 0x03970301: 0x00000389\n\t\"\\x03\\x99\\x03\\x01\\x00\\x00\\x03\\x8a\" + // 0x03990301: 0x0000038A\n\t\"\\x03\\x9f\\x03\\x01\\x00\\x00\\x03\\x8c\" + // 0x039F0301: 0x0000038C\n\t\"\\x03\\xa5\\x03\\x01\\x00\\x00\\x03\\x8e\" + // 0x03A50301: 0x0000038E\n\t\"\\x03\\xa9\\x03\\x01\\x00\\x00\\x03\\x8f\" + // 0x03A90301: 0x0000038F\n\t\"\\x03\\xca\\x03\\x01\\x00\\x00\\x03\\x90\" + // 0x03CA0301: 0x00000390\n\t\"\\x03\\x99\\x03\\b\\x00\\x00\\x03\\xaa\" + // 0x03990308: 0x000003AA\n\t\"\\x03\\xa5\\x03\\b\\x00\\x00\\x03\\xab\" + // 0x03A50308: 0x000003AB\n\t\"\\x03\\xb1\\x03\\x01\\x00\\x00\\x03\\xac\" + // 0x03B10301: 0x000003AC\n\t\"\\x03\\xb5\\x03\\x01\\x00\\x00\\x03\\xad\" + // 0x03B50301: 0x000003AD\n\t\"\\x03\\xb7\\x03\\x01\\x00\\x00\\x03\\xae\" + // 0x03B70301: 0x000003AE\n\t\"\\x03\\xb9\\x03\\x01\\x00\\x00\\x03\\xaf\" + // 0x03B90301: 0x000003AF\n\t\"\\x03\\xcb\\x03\\x01\\x00\\x00\\x03\\xb0\" + // 0x03CB0301: 0x000003B0\n\t\"\\x03\\xb9\\x03\\b\\x00\\x00\\x03\\xca\" + // 0x03B90308: 0x000003CA\n\t\"\\x03\\xc5\\x03\\b\\x00\\x00\\x03\\xcb\" + // 0x03C50308: 0x000003CB\n\t\"\\x03\\xbf\\x03\\x01\\x00\\x00\\x03\\xcc\" + // 0x03BF0301: 0x000003CC\n\t\"\\x03\\xc5\\x03\\x01\\x00\\x00\\x03\\xcd\" + // 0x03C50301: 0x000003CD\n\t\"\\x03\\xc9\\x03\\x01\\x00\\x00\\x03\\xce\" + // 0x03C90301: 0x000003CE\n\t\"\\x03\\xd2\\x03\\x01\\x00\\x00\\x03\\xd3\" + // 0x03D20301: 0x000003D3\n\t\"\\x03\\xd2\\x03\\b\\x00\\x00\\x03\\xd4\" + // 0x03D20308: 0x000003D4\n\t\"\\x04\\x15\\x03\\x00\\x00\\x00\\x04\\x00\" + // 0x04150300: 0x00000400\n\t\"\\x04\\x15\\x03\\b\\x00\\x00\\x04\\x01\" + // 0x04150308: 0x00000401\n\t\"\\x04\\x13\\x03\\x01\\x00\\x00\\x04\\x03\" + // 0x04130301: 0x00000403\n\t\"\\x04\\x06\\x03\\b\\x00\\x00\\x04\\a\" + // 0x04060308: 0x00000407\n\t\"\\x04\\x1a\\x03\\x01\\x00\\x00\\x04\\f\" + // 0x041A0301: 0x0000040C\n\t\"\\x04\\x18\\x03\\x00\\x00\\x00\\x04\\r\" + // 0x04180300: 0x0000040D\n\t\"\\x04#\\x03\\x06\\x00\\x00\\x04\\x0e\" + // 0x04230306: 0x0000040E\n\t\"\\x04\\x18\\x03\\x06\\x00\\x00\\x04\\x19\" + // 0x04180306: 0x00000419\n\t\"\\x048\\x03\\x06\\x00\\x00\\x049\" + // 0x04380306: 0x00000439\n\t\"\\x045\\x03\\x00\\x00\\x00\\x04P\" + // 0x04350300: 0x00000450\n\t\"\\x045\\x03\\b\\x00\\x00\\x04Q\" + // 0x04350308: 0x00000451\n\t\"\\x043\\x03\\x01\\x00\\x00\\x04S\" + // 0x04330301: 0x00000453\n\t\"\\x04V\\x03\\b\\x00\\x00\\x04W\" + // 0x04560308: 0x00000457\n\t\"\\x04:\\x03\\x01\\x00\\x00\\x04\\\\\" + // 0x043A0301: 0x0000045C\n\t\"\\x048\\x03\\x00\\x00\\x00\\x04]\" + // 0x04380300: 0x0000045D\n\t\"\\x04C\\x03\\x06\\x00\\x00\\x04^\" + // 0x04430306: 0x0000045E\n\t\"\\x04t\\x03\\x0f\\x00\\x00\\x04v\" + // 0x0474030F: 0x00000476\n\t\"\\x04u\\x03\\x0f\\x00\\x00\\x04w\" + // 0x0475030F: 0x00000477\n\t\"\\x04\\x16\\x03\\x06\\x00\\x00\\x04\\xc1\" + // 0x04160306: 0x000004C1\n\t\"\\x046\\x03\\x06\\x00\\x00\\x04\\xc2\" + // 0x04360306: 0x000004C2\n\t\"\\x04\\x10\\x03\\x06\\x00\\x00\\x04\\xd0\" + // 0x04100306: 0x000004D0\n\t\"\\x040\\x03\\x06\\x00\\x00\\x04\\xd1\" + // 0x04300306: 0x000004D1\n\t\"\\x04\\x10\\x03\\b\\x00\\x00\\x04\\xd2\" + // 0x04100308: 0x000004D2\n\t\"\\x040\\x03\\b\\x00\\x00\\x04\\xd3\" + // 0x04300308: 0x000004D3\n\t\"\\x04\\x15\\x03\\x06\\x00\\x00\\x04\\xd6\" + // 0x04150306: 0x000004D6\n\t\"\\x045\\x03\\x06\\x00\\x00\\x04\\xd7\" + // 0x04350306: 0x000004D7\n\t\"\\x04\\xd8\\x03\\b\\x00\\x00\\x04\\xda\" + // 0x04D80308: 0x000004DA\n\t\"\\x04\\xd9\\x03\\b\\x00\\x00\\x04\\xdb\" + // 0x04D90308: 0x000004DB\n\t\"\\x04\\x16\\x03\\b\\x00\\x00\\x04\\xdc\" + // 0x04160308: 0x000004DC\n\t\"\\x046\\x03\\b\\x00\\x00\\x04\\xdd\" + // 0x04360308: 0x000004DD\n\t\"\\x04\\x17\\x03\\b\\x00\\x00\\x04\\xde\" + // 0x04170308: 0x000004DE\n\t\"\\x047\\x03\\b\\x00\\x00\\x04\\xdf\" + // 0x04370308: 0x000004DF\n\t\"\\x04\\x18\\x03\\x04\\x00\\x00\\x04\\xe2\" + // 0x04180304: 0x000004E2\n\t\"\\x048\\x03\\x04\\x00\\x00\\x04\\xe3\" + // 0x04380304: 0x000004E3\n\t\"\\x04\\x18\\x03\\b\\x00\\x00\\x04\\xe4\" + // 0x04180308: 0x000004E4\n\t\"\\x048\\x03\\b\\x00\\x00\\x04\\xe5\" + // 0x04380308: 0x000004E5\n\t\"\\x04\\x1e\\x03\\b\\x00\\x00\\x04\\xe6\" + // 0x041E0308: 0x000004E6\n\t\"\\x04>\\x03\\b\\x00\\x00\\x04\\xe7\" + // 0x043E0308: 0x000004E7\n\t\"\\x04\\xe8\\x03\\b\\x00\\x00\\x04\\xea\" + // 0x04E80308: 0x000004EA\n\t\"\\x04\\xe9\\x03\\b\\x00\\x00\\x04\\xeb\" + // 0x04E90308: 0x000004EB\n\t\"\\x04-\\x03\\b\\x00\\x00\\x04\\xec\" + // 0x042D0308: 0x000004EC\n\t\"\\x04M\\x03\\b\\x00\\x00\\x04\\xed\" + // 0x044D0308: 0x000004ED\n\t\"\\x04#\\x03\\x04\\x00\\x00\\x04\\xee\" + // 0x04230304: 0x000004EE\n\t\"\\x04C\\x03\\x04\\x00\\x00\\x04\\xef\" + // 0x04430304: 0x000004EF\n\t\"\\x04#\\x03\\b\\x00\\x00\\x04\\xf0\" + // 0x04230308: 0x000004F0\n\t\"\\x04C\\x03\\b\\x00\\x00\\x04\\xf1\" + // 0x04430308: 0x000004F1\n\t\"\\x04#\\x03\\v\\x00\\x00\\x04\\xf2\" + // 0x0423030B: 0x000004F2\n\t\"\\x04C\\x03\\v\\x00\\x00\\x04\\xf3\" + // 0x0443030B: 0x000004F3\n\t\"\\x04'\\x03\\b\\x00\\x00\\x04\\xf4\" + // 0x04270308: 0x000004F4\n\t\"\\x04G\\x03\\b\\x00\\x00\\x04\\xf5\" + // 0x04470308: 0x000004F5\n\t\"\\x04+\\x03\\b\\x00\\x00\\x04\\xf8\" + // 0x042B0308: 0x000004F8\n\t\"\\x04K\\x03\\b\\x00\\x00\\x04\\xf9\" + // 0x044B0308: 0x000004F9\n\t\"\\x06'\\x06S\\x00\\x00\\x06\\\"\" + // 0x06270653: 0x00000622\n\t\"\\x06'\\x06T\\x00\\x00\\x06#\" + // 0x06270654: 0x00000623\n\t\"\\x06H\\x06T\\x00\\x00\\x06$\" + // 0x06480654: 0x00000624\n\t\"\\x06'\\x06U\\x00\\x00\\x06%\" + // 0x06270655: 0x00000625\n\t\"\\x06J\\x06T\\x00\\x00\\x06&\" + // 0x064A0654: 0x00000626\n\t\"\\x06\\xd5\\x06T\\x00\\x00\\x06\\xc0\" + // 0x06D50654: 0x000006C0\n\t\"\\x06\\xc1\\x06T\\x00\\x00\\x06\\xc2\" + // 0x06C10654: 0x000006C2\n\t\"\\x06\\xd2\\x06T\\x00\\x00\\x06\\xd3\" + // 0x06D20654: 0x000006D3\n\t\"\\t(\\t<\\x00\\x00\\t)\" + // 0x0928093C: 0x00000929\n\t\"\\t0\\t<\\x00\\x00\\t1\" + // 0x0930093C: 0x00000931\n\t\"\\t3\\t<\\x00\\x00\\t4\" + // 0x0933093C: 0x00000934\n\t\"\\t\\xc7\\t\\xbe\\x00\\x00\\t\\xcb\" + // 0x09C709BE: 0x000009CB\n\t\"\\t\\xc7\\t\\xd7\\x00\\x00\\t\\xcc\" + // 0x09C709D7: 0x000009CC\n\t\"\\vG\\vV\\x00\\x00\\vH\" + // 0x0B470B56: 0x00000B48\n\t\"\\vG\\v>\\x00\\x00\\vK\" + // 0x0B470B3E: 0x00000B4B\n\t\"\\vG\\vW\\x00\\x00\\vL\" + // 0x0B470B57: 0x00000B4C\n\t\"\\v\\x92\\v\\xd7\\x00\\x00\\v\\x94\" + // 0x0B920BD7: 0x00000B94\n\t\"\\v\\xc6\\v\\xbe\\x00\\x00\\v\\xca\" + // 0x0BC60BBE: 0x00000BCA\n\t\"\\v\\xc7\\v\\xbe\\x00\\x00\\v\\xcb\" + // 0x0BC70BBE: 0x00000BCB\n\t\"\\v\\xc6\\v\\xd7\\x00\\x00\\v\\xcc\" + // 0x0BC60BD7: 0x00000BCC\n\t\"\\fF\\fV\\x00\\x00\\fH\" + // 0x0C460C56: 0x00000C48\n\t\"\\f\\xbf\\f\\xd5\\x00\\x00\\f\\xc0\" + // 0x0CBF0CD5: 0x00000CC0\n\t\"\\f\\xc6\\f\\xd5\\x00\\x00\\f\\xc7\" + // 0x0CC60CD5: 0x00000CC7\n\t\"\\f\\xc6\\f\\xd6\\x00\\x00\\f\\xc8\" + // 0x0CC60CD6: 0x00000CC8\n\t\"\\f\\xc6\\f\\xc2\\x00\\x00\\f\\xca\" + // 0x0CC60CC2: 0x00000CCA\n\t\"\\f\\xca\\f\\xd5\\x00\\x00\\f\\xcb\" + // 0x0CCA0CD5: 0x00000CCB\n\t\"\\rF\\r>\\x00\\x00\\rJ\" + // 0x0D460D3E: 0x00000D4A\n\t\"\\rG\\r>\\x00\\x00\\rK\" + // 0x0D470D3E: 0x00000D4B\n\t\"\\rF\\rW\\x00\\x00\\rL\" + // 0x0D460D57: 0x00000D4C\n\t\"\\r\\xd9\\r\\xca\\x00\\x00\\r\\xda\" + // 0x0DD90DCA: 0x00000DDA\n\t\"\\r\\xd9\\r\\xcf\\x00\\x00\\r\\xdc\" + // 0x0DD90DCF: 0x00000DDC\n\t\"\\r\\xdc\\r\\xca\\x00\\x00\\r\\xdd\" + // 0x0DDC0DCA: 0x00000DDD\n\t\"\\r\\xd9\\r\\xdf\\x00\\x00\\r\\xde\" + // 0x0DD90DDF: 0x00000DDE\n\t\"\\x10%\\x10.\\x00\\x00\\x10&\" + // 0x1025102E: 0x00001026\n\t\"\\x1b\\x05\\x1b5\\x00\\x00\\x1b\\x06\" + // 0x1B051B35: 0x00001B06\n\t\"\\x1b\\a\\x1b5\\x00\\x00\\x1b\\b\" + // 0x1B071B35: 0x00001B08\n\t\"\\x1b\\t\\x1b5\\x00\\x00\\x1b\\n\" + // 0x1B091B35: 0x00001B0A\n\t\"\\x1b\\v\\x1b5\\x00\\x00\\x1b\\f\" + // 0x1B0B1B35: 0x00001B0C\n\t\"\\x1b\\r\\x1b5\\x00\\x00\\x1b\\x0e\" + // 0x1B0D1B35: 0x00001B0E\n\t\"\\x1b\\x11\\x1b5\\x00\\x00\\x1b\\x12\" + // 0x1B111B35: 0x00001B12\n\t\"\\x1b:\\x1b5\\x00\\x00\\x1b;\" + // 0x1B3A1B35: 0x00001B3B\n\t\"\\x1b<\\x1b5\\x00\\x00\\x1b=\" + // 0x1B3C1B35: 0x00001B3D\n\t\"\\x1b>\\x1b5\\x00\\x00\\x1b@\" + // 0x1B3E1B35: 0x00001B40\n\t\"\\x1b?\\x1b5\\x00\\x00\\x1bA\" + // 0x1B3F1B35: 0x00001B41\n\t\"\\x1bB\\x1b5\\x00\\x00\\x1bC\" + // 0x1B421B35: 0x00001B43\n\t\"\\x00A\\x03%\\x00\\x00\\x1e\\x00\" + // 0x00410325: 0x00001E00\n\t\"\\x00a\\x03%\\x00\\x00\\x1e\\x01\" + // 0x00610325: 0x00001E01\n\t\"\\x00B\\x03\\a\\x00\\x00\\x1e\\x02\" + // 0x00420307: 0x00001E02\n\t\"\\x00b\\x03\\a\\x00\\x00\\x1e\\x03\" + // 0x00620307: 0x00001E03\n\t\"\\x00B\\x03#\\x00\\x00\\x1e\\x04\" + // 0x00420323: 0x00001E04\n\t\"\\x00b\\x03#\\x00\\x00\\x1e\\x05\" + // 0x00620323: 0x00001E05\n\t\"\\x00B\\x031\\x00\\x00\\x1e\\x06\" + // 0x00420331: 0x00001E06\n\t\"\\x00b\\x031\\x00\\x00\\x1e\\a\" + // 0x00620331: 0x00001E07\n\t\"\\x00\\xc7\\x03\\x01\\x00\\x00\\x1e\\b\" + // 0x00C70301: 0x00001E08\n\t\"\\x00\\xe7\\x03\\x01\\x00\\x00\\x1e\\t\" + // 0x00E70301: 0x00001E09\n\t\"\\x00D\\x03\\a\\x00\\x00\\x1e\\n\" + // 0x00440307: 0x00001E0A\n\t\"\\x00d\\x03\\a\\x00\\x00\\x1e\\v\" + // 0x00640307: 0x00001E0B\n\t\"\\x00D\\x03#\\x00\\x00\\x1e\\f\" + // 0x00440323: 0x00001E0C\n\t\"\\x00d\\x03#\\x00\\x00\\x1e\\r\" + // 0x00640323: 0x00001E0D\n\t\"\\x00D\\x031\\x00\\x00\\x1e\\x0e\" + // 0x00440331: 0x00001E0E\n\t\"\\x00d\\x031\\x00\\x00\\x1e\\x0f\" + // 0x00640331: 0x00001E0F\n\t\"\\x00D\\x03'\\x00\\x00\\x1e\\x10\" + // 0x00440327: 0x00001E10\n\t\"\\x00d\\x03'\\x00\\x00\\x1e\\x11\" + // 0x00640327: 0x00001E11\n\t\"\\x00D\\x03-\\x00\\x00\\x1e\\x12\" + // 0x0044032D: 0x00001E12\n\t\"\\x00d\\x03-\\x00\\x00\\x1e\\x13\" + // 0x0064032D: 0x00001E13\n\t\"\\x01\\x12\\x03\\x00\\x00\\x00\\x1e\\x14\" + // 0x01120300: 0x00001E14\n\t\"\\x01\\x13\\x03\\x00\\x00\\x00\\x1e\\x15\" + // 0x01130300: 0x00001E15\n\t\"\\x01\\x12\\x03\\x01\\x00\\x00\\x1e\\x16\" + // 0x01120301: 0x00001E16\n\t\"\\x01\\x13\\x03\\x01\\x00\\x00\\x1e\\x17\" + // 0x01130301: 0x00001E17\n\t\"\\x00E\\x03-\\x00\\x00\\x1e\\x18\" + // 0x0045032D: 0x00001E18\n\t\"\\x00e\\x03-\\x00\\x00\\x1e\\x19\" + // 0x0065032D: 0x00001E19\n\t\"\\x00E\\x030\\x00\\x00\\x1e\\x1a\" + // 0x00450330: 0x00001E1A\n\t\"\\x00e\\x030\\x00\\x00\\x1e\\x1b\" + // 0x00650330: 0x00001E1B\n\t\"\\x02(\\x03\\x06\\x00\\x00\\x1e\\x1c\" + // 0x02280306: 0x00001E1C\n\t\"\\x02)\\x03\\x06\\x00\\x00\\x1e\\x1d\" + // 0x02290306: 0x00001E1D\n\t\"\\x00F\\x03\\a\\x00\\x00\\x1e\\x1e\" + // 0x00460307: 0x00001E1E\n\t\"\\x00f\\x03\\a\\x00\\x00\\x1e\\x1f\" + // 0x00660307: 0x00001E1F\n\t\"\\x00G\\x03\\x04\\x00\\x00\\x1e \" + // 0x00470304: 0x00001E20\n\t\"\\x00g\\x03\\x04\\x00\\x00\\x1e!\" + // 0x00670304: 0x00001E21\n\t\"\\x00H\\x03\\a\\x00\\x00\\x1e\\\"\" + // 0x00480307: 0x00001E22\n\t\"\\x00h\\x03\\a\\x00\\x00\\x1e#\" + // 0x00680307: 0x00001E23\n\t\"\\x00H\\x03#\\x00\\x00\\x1e$\" + // 0x00480323: 0x00001E24\n\t\"\\x00h\\x03#\\x00\\x00\\x1e%\" + // 0x00680323: 0x00001E25\n\t\"\\x00H\\x03\\b\\x00\\x00\\x1e&\" + // 0x00480308: 0x00001E26\n\t\"\\x00h\\x03\\b\\x00\\x00\\x1e'\" + // 0x00680308: 0x00001E27\n\t\"\\x00H\\x03'\\x00\\x00\\x1e(\" + // 0x00480327: 0x00001E28\n\t\"\\x00h\\x03'\\x00\\x00\\x1e)\" + // 0x00680327: 0x00001E29\n\t\"\\x00H\\x03.\\x00\\x00\\x1e*\" + // 0x0048032E: 0x00001E2A\n\t\"\\x00h\\x03.\\x00\\x00\\x1e+\" + // 0x0068032E: 0x00001E2B\n\t\"\\x00I\\x030\\x00\\x00\\x1e,\" + // 0x00490330: 0x00001E2C\n\t\"\\x00i\\x030\\x00\\x00\\x1e-\" + // 0x00690330: 0x00001E2D\n\t\"\\x00\\xcf\\x03\\x01\\x00\\x00\\x1e.\" + // 0x00CF0301: 0x00001E2E\n\t\"\\x00\\xef\\x03\\x01\\x00\\x00\\x1e/\" + // 0x00EF0301: 0x00001E2F\n\t\"\\x00K\\x03\\x01\\x00\\x00\\x1e0\" + // 0x004B0301: 0x00001E30\n\t\"\\x00k\\x03\\x01\\x00\\x00\\x1e1\" + // 0x006B0301: 0x00001E31\n\t\"\\x00K\\x03#\\x00\\x00\\x1e2\" + // 0x004B0323: 0x00001E32\n\t\"\\x00k\\x03#\\x00\\x00\\x1e3\" + // 0x006B0323: 0x00001E33\n\t\"\\x00K\\x031\\x00\\x00\\x1e4\" + // 0x004B0331: 0x00001E34\n\t\"\\x00k\\x031\\x00\\x00\\x1e5\" + // 0x006B0331: 0x00001E35\n\t\"\\x00L\\x03#\\x00\\x00\\x1e6\" + // 0x004C0323: 0x00001E36\n\t\"\\x00l\\x03#\\x00\\x00\\x1e7\" + // 0x006C0323: 0x00001E37\n\t\"\\x1e6\\x03\\x04\\x00\\x00\\x1e8\" + // 0x1E360304: 0x00001E38\n\t\"\\x1e7\\x03\\x04\\x00\\x00\\x1e9\" + // 0x1E370304: 0x00001E39\n\t\"\\x00L\\x031\\x00\\x00\\x1e:\" + // 0x004C0331: 0x00001E3A\n\t\"\\x00l\\x031\\x00\\x00\\x1e;\" + // 0x006C0331: 0x00001E3B\n\t\"\\x00L\\x03-\\x00\\x00\\x1e<\" + // 0x004C032D: 0x00001E3C\n\t\"\\x00l\\x03-\\x00\\x00\\x1e=\" + // 0x006C032D: 0x00001E3D\n\t\"\\x00M\\x03\\x01\\x00\\x00\\x1e>\" + // 0x004D0301: 0x00001E3E\n\t\"\\x00m\\x03\\x01\\x00\\x00\\x1e?\" + // 0x006D0301: 0x00001E3F\n\t\"\\x00M\\x03\\a\\x00\\x00\\x1e@\" + // 0x004D0307: 0x00001E40\n\t\"\\x00m\\x03\\a\\x00\\x00\\x1eA\" + // 0x006D0307: 0x00001E41\n\t\"\\x00M\\x03#\\x00\\x00\\x1eB\" + // 0x004D0323: 0x00001E42\n\t\"\\x00m\\x03#\\x00\\x00\\x1eC\" + // 0x006D0323: 0x00001E43\n\t\"\\x00N\\x03\\a\\x00\\x00\\x1eD\" + // 0x004E0307: 0x00001E44\n\t\"\\x00n\\x03\\a\\x00\\x00\\x1eE\" + // 0x006E0307: 0x00001E45\n\t\"\\x00N\\x03#\\x00\\x00\\x1eF\" + // 0x004E0323: 0x00001E46\n\t\"\\x00n\\x03#\\x00\\x00\\x1eG\" + // 0x006E0323: 0x00001E47\n\t\"\\x00N\\x031\\x00\\x00\\x1eH\" + // 0x004E0331: 0x00001E48\n\t\"\\x00n\\x031\\x00\\x00\\x1eI\" + // 0x006E0331: 0x00001E49\n\t\"\\x00N\\x03-\\x00\\x00\\x1eJ\" + // 0x004E032D: 0x00001E4A\n\t\"\\x00n\\x03-\\x00\\x00\\x1eK\" + // 0x006E032D: 0x00001E4B\n\t\"\\x00\\xd5\\x03\\x01\\x00\\x00\\x1eL\" + // 0x00D50301: 0x00001E4C\n\t\"\\x00\\xf5\\x03\\x01\\x00\\x00\\x1eM\" + // 0x00F50301: 0x00001E4D\n\t\"\\x00\\xd5\\x03\\b\\x00\\x00\\x1eN\" + // 0x00D50308: 0x00001E4E\n\t\"\\x00\\xf5\\x03\\b\\x00\\x00\\x1eO\" + // 0x00F50308: 0x00001E4F\n\t\"\\x01L\\x03\\x00\\x00\\x00\\x1eP\" + // 0x014C0300: 0x00001E50\n\t\"\\x01M\\x03\\x00\\x00\\x00\\x1eQ\" + // 0x014D0300: 0x00001E51\n\t\"\\x01L\\x03\\x01\\x00\\x00\\x1eR\" + // 0x014C0301: 0x00001E52\n\t\"\\x01M\\x03\\x01\\x00\\x00\\x1eS\" + // 0x014D0301: 0x00001E53\n\t\"\\x00P\\x03\\x01\\x00\\x00\\x1eT\" + // 0x00500301: 0x00001E54\n\t\"\\x00p\\x03\\x01\\x00\\x00\\x1eU\" + // 0x00700301: 0x00001E55\n\t\"\\x00P\\x03\\a\\x00\\x00\\x1eV\" + // 0x00500307: 0x00001E56\n\t\"\\x00p\\x03\\a\\x00\\x00\\x1eW\" + // 0x00700307: 0x00001E57\n\t\"\\x00R\\x03\\a\\x00\\x00\\x1eX\" + // 0x00520307: 0x00001E58\n\t\"\\x00r\\x03\\a\\x00\\x00\\x1eY\" + // 0x00720307: 0x00001E59\n\t\"\\x00R\\x03#\\x00\\x00\\x1eZ\" + // 0x00520323: 0x00001E5A\n\t\"\\x00r\\x03#\\x00\\x00\\x1e[\" + // 0x00720323: 0x00001E5B\n\t\"\\x1eZ\\x03\\x04\\x00\\x00\\x1e\\\\\" + // 0x1E5A0304: 0x00001E5C\n\t\"\\x1e[\\x03\\x04\\x00\\x00\\x1e]\" + // 0x1E5B0304: 0x00001E5D\n\t\"\\x00R\\x031\\x00\\x00\\x1e^\" + // 0x00520331: 0x00001E5E\n\t\"\\x00r\\x031\\x00\\x00\\x1e_\" + // 0x00720331: 0x00001E5F\n\t\"\\x00S\\x03\\a\\x00\\x00\\x1e`\" + // 0x00530307: 0x00001E60\n\t\"\\x00s\\x03\\a\\x00\\x00\\x1ea\" + // 0x00730307: 0x00001E61\n\t\"\\x00S\\x03#\\x00\\x00\\x1eb\" + // 0x00530323: 0x00001E62\n\t\"\\x00s\\x03#\\x00\\x00\\x1ec\" + // 0x00730323: 0x00001E63\n\t\"\\x01Z\\x03\\a\\x00\\x00\\x1ed\" + // 0x015A0307: 0x00001E64\n\t\"\\x01[\\x03\\a\\x00\\x00\\x1ee\" + // 0x015B0307: 0x00001E65\n\t\"\\x01`\\x03\\a\\x00\\x00\\x1ef\" + // 0x01600307: 0x00001E66\n\t\"\\x01a\\x03\\a\\x00\\x00\\x1eg\" + // 0x01610307: 0x00001E67\n\t\"\\x1eb\\x03\\a\\x00\\x00\\x1eh\" + // 0x1E620307: 0x00001E68\n\t\"\\x1ec\\x03\\a\\x00\\x00\\x1ei\" + // 0x1E630307: 0x00001E69\n\t\"\\x00T\\x03\\a\\x00\\x00\\x1ej\" + // 0x00540307: 0x00001E6A\n\t\"\\x00t\\x03\\a\\x00\\x00\\x1ek\" + // 0x00740307: 0x00001E6B\n\t\"\\x00T\\x03#\\x00\\x00\\x1el\" + // 0x00540323: 0x00001E6C\n\t\"\\x00t\\x03#\\x00\\x00\\x1em\" + // 0x00740323: 0x00001E6D\n\t\"\\x00T\\x031\\x00\\x00\\x1en\" + // 0x00540331: 0x00001E6E\n\t\"\\x00t\\x031\\x00\\x00\\x1eo\" + // 0x00740331: 0x00001E6F\n\t\"\\x00T\\x03-\\x00\\x00\\x1ep\" + // 0x0054032D: 0x00001E70\n\t\"\\x00t\\x03-\\x00\\x00\\x1eq\" + // 0x0074032D: 0x00001E71\n\t\"\\x00U\\x03$\\x00\\x00\\x1er\" + // 0x00550324: 0x00001E72\n\t\"\\x00u\\x03$\\x00\\x00\\x1es\" + // 0x00750324: 0x00001E73\n\t\"\\x00U\\x030\\x00\\x00\\x1et\" + // 0x00550330: 0x00001E74\n\t\"\\x00u\\x030\\x00\\x00\\x1eu\" + // 0x00750330: 0x00001E75\n\t\"\\x00U\\x03-\\x00\\x00\\x1ev\" + // 0x0055032D: 0x00001E76\n\t\"\\x00u\\x03-\\x00\\x00\\x1ew\" + // 0x0075032D: 0x00001E77\n\t\"\\x01h\\x03\\x01\\x00\\x00\\x1ex\" + // 0x01680301: 0x00001E78\n\t\"\\x01i\\x03\\x01\\x00\\x00\\x1ey\" + // 0x01690301: 0x00001E79\n\t\"\\x01j\\x03\\b\\x00\\x00\\x1ez\" + // 0x016A0308: 0x00001E7A\n\t\"\\x01k\\x03\\b\\x00\\x00\\x1e{\" + // 0x016B0308: 0x00001E7B\n\t\"\\x00V\\x03\\x03\\x00\\x00\\x1e|\" + // 0x00560303: 0x00001E7C\n\t\"\\x00v\\x03\\x03\\x00\\x00\\x1e}\" + // 0x00760303: 0x00001E7D\n\t\"\\x00V\\x03#\\x00\\x00\\x1e~\" + // 0x00560323: 0x00001E7E\n\t\"\\x00v\\x03#\\x00\\x00\\x1e\\x7f\" + // 0x00760323: 0x00001E7F\n\t\"\\x00W\\x03\\x00\\x00\\x00\\x1e\\x80\" + // 0x00570300: 0x00001E80\n\t\"\\x00w\\x03\\x00\\x00\\x00\\x1e\\x81\" + // 0x00770300: 0x00001E81\n\t\"\\x00W\\x03\\x01\\x00\\x00\\x1e\\x82\" + // 0x00570301: 0x00001E82\n\t\"\\x00w\\x03\\x01\\x00\\x00\\x1e\\x83\" + // 0x00770301: 0x00001E83\n\t\"\\x00W\\x03\\b\\x00\\x00\\x1e\\x84\" + // 0x00570308: 0x00001E84\n\t\"\\x00w\\x03\\b\\x00\\x00\\x1e\\x85\" + // 0x00770308: 0x00001E85\n\t\"\\x00W\\x03\\a\\x00\\x00\\x1e\\x86\" + // 0x00570307: 0x00001E86\n\t\"\\x00w\\x03\\a\\x00\\x00\\x1e\\x87\" + // 0x00770307: 0x00001E87\n\t\"\\x00W\\x03#\\x00\\x00\\x1e\\x88\" + // 0x00570323: 0x00001E88\n\t\"\\x00w\\x03#\\x00\\x00\\x1e\\x89\" + // 0x00770323: 0x00001E89\n\t\"\\x00X\\x03\\a\\x00\\x00\\x1e\\x8a\" + // 0x00580307: 0x00001E8A\n\t\"\\x00x\\x03\\a\\x00\\x00\\x1e\\x8b\" + // 0x00780307: 0x00001E8B\n\t\"\\x00X\\x03\\b\\x00\\x00\\x1e\\x8c\" + // 0x00580308: 0x00001E8C\n\t\"\\x00x\\x03\\b\\x00\\x00\\x1e\\x8d\" + // 0x00780308: 0x00001E8D\n\t\"\\x00Y\\x03\\a\\x00\\x00\\x1e\\x8e\" + // 0x00590307: 0x00001E8E\n\t\"\\x00y\\x03\\a\\x00\\x00\\x1e\\x8f\" + // 0x00790307: 0x00001E8F\n\t\"\\x00Z\\x03\\x02\\x00\\x00\\x1e\\x90\" + // 0x005A0302: 0x00001E90\n\t\"\\x00z\\x03\\x02\\x00\\x00\\x1e\\x91\" + // 0x007A0302: 0x00001E91\n\t\"\\x00Z\\x03#\\x00\\x00\\x1e\\x92\" + // 0x005A0323: 0x00001E92\n\t\"\\x00z\\x03#\\x00\\x00\\x1e\\x93\" + // 0x007A0323: 0x00001E93\n\t\"\\x00Z\\x031\\x00\\x00\\x1e\\x94\" + // 0x005A0331: 0x00001E94\n\t\"\\x00z\\x031\\x00\\x00\\x1e\\x95\" + // 0x007A0331: 0x00001E95\n\t\"\\x00h\\x031\\x00\\x00\\x1e\\x96\" + // 0x00680331: 0x00001E96\n\t\"\\x00t\\x03\\b\\x00\\x00\\x1e\\x97\" + // 0x00740308: 0x00001E97\n\t\"\\x00w\\x03\\n\\x00\\x00\\x1e\\x98\" + // 0x0077030A: 0x00001E98\n\t\"\\x00y\\x03\\n\\x00\\x00\\x1e\\x99\" + // 0x0079030A: 0x00001E99\n\t\"\\x01\\x7f\\x03\\a\\x00\\x00\\x1e\\x9b\" + // 0x017F0307: 0x00001E9B\n\t\"\\x00A\\x03#\\x00\\x00\\x1e\\xa0\" + // 0x00410323: 0x00001EA0\n\t\"\\x00a\\x03#\\x00\\x00\\x1e\\xa1\" + // 0x00610323: 0x00001EA1\n\t\"\\x00A\\x03\\t\\x00\\x00\\x1e\\xa2\" + // 0x00410309: 0x00001EA2\n\t\"\\x00a\\x03\\t\\x00\\x00\\x1e\\xa3\" + // 0x00610309: 0x00001EA3\n\t\"\\x00\\xc2\\x03\\x01\\x00\\x00\\x1e\\xa4\" + // 0x00C20301: 0x00001EA4\n\t\"\\x00\\xe2\\x03\\x01\\x00\\x00\\x1e\\xa5\" + // 0x00E20301: 0x00001EA5\n\t\"\\x00\\xc2\\x03\\x00\\x00\\x00\\x1e\\xa6\" + // 0x00C20300: 0x00001EA6\n\t\"\\x00\\xe2\\x03\\x00\\x00\\x00\\x1e\\xa7\" + // 0x00E20300: 0x00001EA7\n\t\"\\x00\\xc2\\x03\\t\\x00\\x00\\x1e\\xa8\" + // 0x00C20309: 0x00001EA8\n\t\"\\x00\\xe2\\x03\\t\\x00\\x00\\x1e\\xa9\" + // 0x00E20309: 0x00001EA9\n\t\"\\x00\\xc2\\x03\\x03\\x00\\x00\\x1e\\xaa\" + // 0x00C20303: 0x00001EAA\n\t\"\\x00\\xe2\\x03\\x03\\x00\\x00\\x1e\\xab\" + // 0x00E20303: 0x00001EAB\n\t\"\\x1e\\xa0\\x03\\x02\\x00\\x00\\x1e\\xac\" + // 0x1EA00302: 0x00001EAC\n\t\"\\x1e\\xa1\\x03\\x02\\x00\\x00\\x1e\\xad\" + // 0x1EA10302: 0x00001EAD\n\t\"\\x01\\x02\\x03\\x01\\x00\\x00\\x1e\\xae\" + // 0x01020301: 0x00001EAE\n\t\"\\x01\\x03\\x03\\x01\\x00\\x00\\x1e\\xaf\" + // 0x01030301: 0x00001EAF\n\t\"\\x01\\x02\\x03\\x00\\x00\\x00\\x1e\\xb0\" + // 0x01020300: 0x00001EB0\n\t\"\\x01\\x03\\x03\\x00\\x00\\x00\\x1e\\xb1\" + // 0x01030300: 0x00001EB1\n\t\"\\x01\\x02\\x03\\t\\x00\\x00\\x1e\\xb2\" + // 0x01020309: 0x00001EB2\n\t\"\\x01\\x03\\x03\\t\\x00\\x00\\x1e\\xb3\" + // 0x01030309: 0x00001EB3\n\t\"\\x01\\x02\\x03\\x03\\x00\\x00\\x1e\\xb4\" + // 0x01020303: 0x00001EB4\n\t\"\\x01\\x03\\x03\\x03\\x00\\x00\\x1e\\xb5\" + // 0x01030303: 0x00001EB5\n\t\"\\x1e\\xa0\\x03\\x06\\x00\\x00\\x1e\\xb6\" + // 0x1EA00306: 0x00001EB6\n\t\"\\x1e\\xa1\\x03\\x06\\x00\\x00\\x1e\\xb7\" + // 0x1EA10306: 0x00001EB7\n\t\"\\x00E\\x03#\\x00\\x00\\x1e\\xb8\" + // 0x00450323: 0x00001EB8\n\t\"\\x00e\\x03#\\x00\\x00\\x1e\\xb9\" + // 0x00650323: 0x00001EB9\n\t\"\\x00E\\x03\\t\\x00\\x00\\x1e\\xba\" + // 0x00450309: 0x00001EBA\n\t\"\\x00e\\x03\\t\\x00\\x00\\x1e\\xbb\" + // 0x00650309: 0x00001EBB\n\t\"\\x00E\\x03\\x03\\x00\\x00\\x1e\\xbc\" + // 0x00450303: 0x00001EBC\n\t\"\\x00e\\x03\\x03\\x00\\x00\\x1e\\xbd\" + // 0x00650303: 0x00001EBD\n\t\"\\x00\\xca\\x03\\x01\\x00\\x00\\x1e\\xbe\" + // 0x00CA0301: 0x00001EBE\n\t\"\\x00\\xea\\x03\\x01\\x00\\x00\\x1e\\xbf\" + // 0x00EA0301: 0x00001EBF\n\t\"\\x00\\xca\\x03\\x00\\x00\\x00\\x1e\\xc0\" + // 0x00CA0300: 0x00001EC0\n\t\"\\x00\\xea\\x03\\x00\\x00\\x00\\x1e\\xc1\" + // 0x00EA0300: 0x00001EC1\n\t\"\\x00\\xca\\x03\\t\\x00\\x00\\x1e\\xc2\" + // 0x00CA0309: 0x00001EC2\n\t\"\\x00\\xea\\x03\\t\\x00\\x00\\x1e\\xc3\" + // 0x00EA0309: 0x00001EC3\n\t\"\\x00\\xca\\x03\\x03\\x00\\x00\\x1e\\xc4\" + // 0x00CA0303: 0x00001EC4\n\t\"\\x00\\xea\\x03\\x03\\x00\\x00\\x1e\\xc5\" + // 0x00EA0303: 0x00001EC5\n\t\"\\x1e\\xb8\\x03\\x02\\x00\\x00\\x1e\\xc6\" + // 0x1EB80302: 0x00001EC6\n\t\"\\x1e\\xb9\\x03\\x02\\x00\\x00\\x1e\\xc7\" + // 0x1EB90302: 0x00001EC7\n\t\"\\x00I\\x03\\t\\x00\\x00\\x1e\\xc8\" + // 0x00490309: 0x00001EC8\n\t\"\\x00i\\x03\\t\\x00\\x00\\x1e\\xc9\" + // 0x00690309: 0x00001EC9\n\t\"\\x00I\\x03#\\x00\\x00\\x1e\\xca\" + // 0x00490323: 0x00001ECA\n\t\"\\x00i\\x03#\\x00\\x00\\x1e\\xcb\" + // 0x00690323: 0x00001ECB\n\t\"\\x00O\\x03#\\x00\\x00\\x1e\\xcc\" + // 0x004F0323: 0x00001ECC\n\t\"\\x00o\\x03#\\x00\\x00\\x1e\\xcd\" + // 0x006F0323: 0x00001ECD\n\t\"\\x00O\\x03\\t\\x00\\x00\\x1e\\xce\" + // 0x004F0309: 0x00001ECE\n\t\"\\x00o\\x03\\t\\x00\\x00\\x1e\\xcf\" + // 0x006F0309: 0x00001ECF\n\t\"\\x00\\xd4\\x03\\x01\\x00\\x00\\x1e\\xd0\" + // 0x00D40301: 0x00001ED0\n\t\"\\x00\\xf4\\x03\\x01\\x00\\x00\\x1e\\xd1\" + // 0x00F40301: 0x00001ED1\n\t\"\\x00\\xd4\\x03\\x00\\x00\\x00\\x1e\\xd2\" + // 0x00D40300: 0x00001ED2\n\t\"\\x00\\xf4\\x03\\x00\\x00\\x00\\x1e\\xd3\" + // 0x00F40300: 0x00001ED3\n\t\"\\x00\\xd4\\x03\\t\\x00\\x00\\x1e\\xd4\" + // 0x00D40309: 0x00001ED4\n\t\"\\x00\\xf4\\x03\\t\\x00\\x00\\x1e\\xd5\" + // 0x00F40309: 0x00001ED5\n\t\"\\x00\\xd4\\x03\\x03\\x00\\x00\\x1e\\xd6\" + // 0x00D40303: 0x00001ED6\n\t\"\\x00\\xf4\\x03\\x03\\x00\\x00\\x1e\\xd7\" + // 0x00F40303: 0x00001ED7\n\t\"\\x1e\\xcc\\x03\\x02\\x00\\x00\\x1e\\xd8\" + // 0x1ECC0302: 0x00001ED8\n\t\"\\x1e\\xcd\\x03\\x02\\x00\\x00\\x1e\\xd9\" + // 0x1ECD0302: 0x00001ED9\n\t\"\\x01\\xa0\\x03\\x01\\x00\\x00\\x1e\\xda\" + // 0x01A00301: 0x00001EDA\n\t\"\\x01\\xa1\\x03\\x01\\x00\\x00\\x1e\\xdb\" + // 0x01A10301: 0x00001EDB\n\t\"\\x01\\xa0\\x03\\x00\\x00\\x00\\x1e\\xdc\" + // 0x01A00300: 0x00001EDC\n\t\"\\x01\\xa1\\x03\\x00\\x00\\x00\\x1e\\xdd\" + // 0x01A10300: 0x00001EDD\n\t\"\\x01\\xa0\\x03\\t\\x00\\x00\\x1e\\xde\" + // 0x01A00309: 0x00001EDE\n\t\"\\x01\\xa1\\x03\\t\\x00\\x00\\x1e\\xdf\" + // 0x01A10309: 0x00001EDF\n\t\"\\x01\\xa0\\x03\\x03\\x00\\x00\\x1e\\xe0\" + // 0x01A00303: 0x00001EE0\n\t\"\\x01\\xa1\\x03\\x03\\x00\\x00\\x1e\\xe1\" + // 0x01A10303: 0x00001EE1\n\t\"\\x01\\xa0\\x03#\\x00\\x00\\x1e\\xe2\" + // 0x01A00323: 0x00001EE2\n\t\"\\x01\\xa1\\x03#\\x00\\x00\\x1e\\xe3\" + // 0x01A10323: 0x00001EE3\n\t\"\\x00U\\x03#\\x00\\x00\\x1e\\xe4\" + // 0x00550323: 0x00001EE4\n\t\"\\x00u\\x03#\\x00\\x00\\x1e\\xe5\" + // 0x00750323: 0x00001EE5\n\t\"\\x00U\\x03\\t\\x00\\x00\\x1e\\xe6\" + // 0x00550309: 0x00001EE6\n\t\"\\x00u\\x03\\t\\x00\\x00\\x1e\\xe7\" + // 0x00750309: 0x00001EE7\n\t\"\\x01\\xaf\\x03\\x01\\x00\\x00\\x1e\\xe8\" + // 0x01AF0301: 0x00001EE8\n\t\"\\x01\\xb0\\x03\\x01\\x00\\x00\\x1e\\xe9\" + // 0x01B00301: 0x00001EE9\n\t\"\\x01\\xaf\\x03\\x00\\x00\\x00\\x1e\\xea\" + // 0x01AF0300: 0x00001EEA\n\t\"\\x01\\xb0\\x03\\x00\\x00\\x00\\x1e\\xeb\" + // 0x01B00300: 0x00001EEB\n\t\"\\x01\\xaf\\x03\\t\\x00\\x00\\x1e\\xec\" + // 0x01AF0309: 0x00001EEC\n\t\"\\x01\\xb0\\x03\\t\\x00\\x00\\x1e\\xed\" + // 0x01B00309: 0x00001EED\n\t\"\\x01\\xaf\\x03\\x03\\x00\\x00\\x1e\\xee\" + // 0x01AF0303: 0x00001EEE\n\t\"\\x01\\xb0\\x03\\x03\\x00\\x00\\x1e\\xef\" + // 0x01B00303: 0x00001EEF\n\t\"\\x01\\xaf\\x03#\\x00\\x00\\x1e\\xf0\" + // 0x01AF0323: 0x00001EF0\n\t\"\\x01\\xb0\\x03#\\x00\\x00\\x1e\\xf1\" + // 0x01B00323: 0x00001EF1\n\t\"\\x00Y\\x03\\x00\\x00\\x00\\x1e\\xf2\" + // 0x00590300: 0x00001EF2\n\t\"\\x00y\\x03\\x00\\x00\\x00\\x1e\\xf3\" + // 0x00790300: 0x00001EF3\n\t\"\\x00Y\\x03#\\x00\\x00\\x1e\\xf4\" + // 0x00590323: 0x00001EF4\n\t\"\\x00y\\x03#\\x00\\x00\\x1e\\xf5\" + // 0x00790323: 0x00001EF5\n\t\"\\x00Y\\x03\\t\\x00\\x00\\x1e\\xf6\" + // 0x00590309: 0x00001EF6\n\t\"\\x00y\\x03\\t\\x00\\x00\\x1e\\xf7\" + // 0x00790309: 0x00001EF7\n\t\"\\x00Y\\x03\\x03\\x00\\x00\\x1e\\xf8\" + // 0x00590303: 0x00001EF8\n\t\"\\x00y\\x03\\x03\\x00\\x00\\x1e\\xf9\" + // 0x00790303: 0x00001EF9\n\t\"\\x03\\xb1\\x03\\x13\\x00\\x00\\x1f\\x00\" + // 0x03B10313: 0x00001F00\n\t\"\\x03\\xb1\\x03\\x14\\x00\\x00\\x1f\\x01\" + // 0x03B10314: 0x00001F01\n\t\"\\x1f\\x00\\x03\\x00\\x00\\x00\\x1f\\x02\" + // 0x1F000300: 0x00001F02\n\t\"\\x1f\\x01\\x03\\x00\\x00\\x00\\x1f\\x03\" + // 0x1F010300: 0x00001F03\n\t\"\\x1f\\x00\\x03\\x01\\x00\\x00\\x1f\\x04\" + // 0x1F000301: 0x00001F04\n\t\"\\x1f\\x01\\x03\\x01\\x00\\x00\\x1f\\x05\" + // 0x1F010301: 0x00001F05\n\t\"\\x1f\\x00\\x03B\\x00\\x00\\x1f\\x06\" + // 0x1F000342: 0x00001F06\n\t\"\\x1f\\x01\\x03B\\x00\\x00\\x1f\\a\" + // 0x1F010342: 0x00001F07\n\t\"\\x03\\x91\\x03\\x13\\x00\\x00\\x1f\\b\" + // 0x03910313: 0x00001F08\n\t\"\\x03\\x91\\x03\\x14\\x00\\x00\\x1f\\t\" + // 0x03910314: 0x00001F09\n\t\"\\x1f\\b\\x03\\x00\\x00\\x00\\x1f\\n\" + // 0x1F080300: 0x00001F0A\n\t\"\\x1f\\t\\x03\\x00\\x00\\x00\\x1f\\v\" + // 0x1F090300: 0x00001F0B\n\t\"\\x1f\\b\\x03\\x01\\x00\\x00\\x1f\\f\" + // 0x1F080301: 0x00001F0C\n\t\"\\x1f\\t\\x03\\x01\\x00\\x00\\x1f\\r\" + // 0x1F090301: 0x00001F0D\n\t\"\\x1f\\b\\x03B\\x00\\x00\\x1f\\x0e\" + // 0x1F080342: 0x00001F0E\n\t\"\\x1f\\t\\x03B\\x00\\x00\\x1f\\x0f\" + // 0x1F090342: 0x00001F0F\n\t\"\\x03\\xb5\\x03\\x13\\x00\\x00\\x1f\\x10\" + // 0x03B50313: 0x00001F10\n\t\"\\x03\\xb5\\x03\\x14\\x00\\x00\\x1f\\x11\" + // 0x03B50314: 0x00001F11\n\t\"\\x1f\\x10\\x03\\x00\\x00\\x00\\x1f\\x12\" + // 0x1F100300: 0x00001F12\n\t\"\\x1f\\x11\\x03\\x00\\x00\\x00\\x1f\\x13\" + // 0x1F110300: 0x00001F13\n\t\"\\x1f\\x10\\x03\\x01\\x00\\x00\\x1f\\x14\" + // 0x1F100301: 0x00001F14\n\t\"\\x1f\\x11\\x03\\x01\\x00\\x00\\x1f\\x15\" + // 0x1F110301: 0x00001F15\n\t\"\\x03\\x95\\x03\\x13\\x00\\x00\\x1f\\x18\" + // 0x03950313: 0x00001F18\n\t\"\\x03\\x95\\x03\\x14\\x00\\x00\\x1f\\x19\" + // 0x03950314: 0x00001F19\n\t\"\\x1f\\x18\\x03\\x00\\x00\\x00\\x1f\\x1a\" + // 0x1F180300: 0x00001F1A\n\t\"\\x1f\\x19\\x03\\x00\\x00\\x00\\x1f\\x1b\" + // 0x1F190300: 0x00001F1B\n\t\"\\x1f\\x18\\x03\\x01\\x00\\x00\\x1f\\x1c\" + // 0x1F180301: 0x00001F1C\n\t\"\\x1f\\x19\\x03\\x01\\x00\\x00\\x1f\\x1d\" + // 0x1F190301: 0x00001F1D\n\t\"\\x03\\xb7\\x03\\x13\\x00\\x00\\x1f \" + // 0x03B70313: 0x00001F20\n\t\"\\x03\\xb7\\x03\\x14\\x00\\x00\\x1f!\" + // 0x03B70314: 0x00001F21\n\t\"\\x1f \\x03\\x00\\x00\\x00\\x1f\\\"\" + // 0x1F200300: 0x00001F22\n\t\"\\x1f!\\x03\\x00\\x00\\x00\\x1f#\" + // 0x1F210300: 0x00001F23\n\t\"\\x1f \\x03\\x01\\x00\\x00\\x1f$\" + // 0x1F200301: 0x00001F24\n\t\"\\x1f!\\x03\\x01\\x00\\x00\\x1f%\" + // 0x1F210301: 0x00001F25\n\t\"\\x1f \\x03B\\x00\\x00\\x1f&\" + // 0x1F200342: 0x00001F26\n\t\"\\x1f!\\x03B\\x00\\x00\\x1f'\" + // 0x1F210342: 0x00001F27\n\t\"\\x03\\x97\\x03\\x13\\x00\\x00\\x1f(\" + // 0x03970313: 0x00001F28\n\t\"\\x03\\x97\\x03\\x14\\x00\\x00\\x1f)\" + // 0x03970314: 0x00001F29\n\t\"\\x1f(\\x03\\x00\\x00\\x00\\x1f*\" + // 0x1F280300: 0x00001F2A\n\t\"\\x1f)\\x03\\x00\\x00\\x00\\x1f+\" + // 0x1F290300: 0x00001F2B\n\t\"\\x1f(\\x03\\x01\\x00\\x00\\x1f,\" + // 0x1F280301: 0x00001F2C\n\t\"\\x1f)\\x03\\x01\\x00\\x00\\x1f-\" + // 0x1F290301: 0x00001F2D\n\t\"\\x1f(\\x03B\\x00\\x00\\x1f.\" + // 0x1F280342: 0x00001F2E\n\t\"\\x1f)\\x03B\\x00\\x00\\x1f/\" + // 0x1F290342: 0x00001F2F\n\t\"\\x03\\xb9\\x03\\x13\\x00\\x00\\x1f0\" + // 0x03B90313: 0x00001F30\n\t\"\\x03\\xb9\\x03\\x14\\x00\\x00\\x1f1\" + // 0x03B90314: 0x00001F31\n\t\"\\x1f0\\x03\\x00\\x00\\x00\\x1f2\" + // 0x1F300300: 0x00001F32\n\t\"\\x1f1\\x03\\x00\\x00\\x00\\x1f3\" + // 0x1F310300: 0x00001F33\n\t\"\\x1f0\\x03\\x01\\x00\\x00\\x1f4\" + // 0x1F300301: 0x00001F34\n\t\"\\x1f1\\x03\\x01\\x00\\x00\\x1f5\" + // 0x1F310301: 0x00001F35\n\t\"\\x1f0\\x03B\\x00\\x00\\x1f6\" + // 0x1F300342: 0x00001F36\n\t\"\\x1f1\\x03B\\x00\\x00\\x1f7\" + // 0x1F310342: 0x00001F37\n\t\"\\x03\\x99\\x03\\x13\\x00\\x00\\x1f8\" + // 0x03990313: 0x00001F38\n\t\"\\x03\\x99\\x03\\x14\\x00\\x00\\x1f9\" + // 0x03990314: 0x00001F39\n\t\"\\x1f8\\x03\\x00\\x00\\x00\\x1f:\" + // 0x1F380300: 0x00001F3A\n\t\"\\x1f9\\x03\\x00\\x00\\x00\\x1f;\" + // 0x1F390300: 0x00001F3B\n\t\"\\x1f8\\x03\\x01\\x00\\x00\\x1f<\" + // 0x1F380301: 0x00001F3C\n\t\"\\x1f9\\x03\\x01\\x00\\x00\\x1f=\" + // 0x1F390301: 0x00001F3D\n\t\"\\x1f8\\x03B\\x00\\x00\\x1f>\" + // 0x1F380342: 0x00001F3E\n\t\"\\x1f9\\x03B\\x00\\x00\\x1f?\" + // 0x1F390342: 0x00001F3F\n\t\"\\x03\\xbf\\x03\\x13\\x00\\x00\\x1f@\" + // 0x03BF0313: 0x00001F40\n\t\"\\x03\\xbf\\x03\\x14\\x00\\x00\\x1fA\" + // 0x03BF0314: 0x00001F41\n\t\"\\x1f@\\x03\\x00\\x00\\x00\\x1fB\" + // 0x1F400300: 0x00001F42\n\t\"\\x1fA\\x03\\x00\\x00\\x00\\x1fC\" + // 0x1F410300: 0x00001F43\n\t\"\\x1f@\\x03\\x01\\x00\\x00\\x1fD\" + // 0x1F400301: 0x00001F44\n\t\"\\x1fA\\x03\\x01\\x00\\x00\\x1fE\" + // 0x1F410301: 0x00001F45\n\t\"\\x03\\x9f\\x03\\x13\\x00\\x00\\x1fH\" + // 0x039F0313: 0x00001F48\n\t\"\\x03\\x9f\\x03\\x14\\x00\\x00\\x1fI\" + // 0x039F0314: 0x00001F49\n\t\"\\x1fH\\x03\\x00\\x00\\x00\\x1fJ\" + // 0x1F480300: 0x00001F4A\n\t\"\\x1fI\\x03\\x00\\x00\\x00\\x1fK\" + // 0x1F490300: 0x00001F4B\n\t\"\\x1fH\\x03\\x01\\x00\\x00\\x1fL\" + // 0x1F480301: 0x00001F4C\n\t\"\\x1fI\\x03\\x01\\x00\\x00\\x1fM\" + // 0x1F490301: 0x00001F4D\n\t\"\\x03\\xc5\\x03\\x13\\x00\\x00\\x1fP\" + // 0x03C50313: 0x00001F50\n\t\"\\x03\\xc5\\x03\\x14\\x00\\x00\\x1fQ\" + // 0x03C50314: 0x00001F51\n\t\"\\x1fP\\x03\\x00\\x00\\x00\\x1fR\" + // 0x1F500300: 0x00001F52\n\t\"\\x1fQ\\x03\\x00\\x00\\x00\\x1fS\" + // 0x1F510300: 0x00001F53\n\t\"\\x1fP\\x03\\x01\\x00\\x00\\x1fT\" + // 0x1F500301: 0x00001F54\n\t\"\\x1fQ\\x03\\x01\\x00\\x00\\x1fU\" + // 0x1F510301: 0x00001F55\n\t\"\\x1fP\\x03B\\x00\\x00\\x1fV\" + // 0x1F500342: 0x00001F56\n\t\"\\x1fQ\\x03B\\x00\\x00\\x1fW\" + // 0x1F510342: 0x00001F57\n\t\"\\x03\\xa5\\x03\\x14\\x00\\x00\\x1fY\" + // 0x03A50314: 0x00001F59\n\t\"\\x1fY\\x03\\x00\\x00\\x00\\x1f[\" + // 0x1F590300: 0x00001F5B\n\t\"\\x1fY\\x03\\x01\\x00\\x00\\x1f]\" + // 0x1F590301: 0x00001F5D\n\t\"\\x1fY\\x03B\\x00\\x00\\x1f_\" + // 0x1F590342: 0x00001F5F\n\t\"\\x03\\xc9\\x03\\x13\\x00\\x00\\x1f`\" + // 0x03C90313: 0x00001F60\n\t\"\\x03\\xc9\\x03\\x14\\x00\\x00\\x1fa\" + // 0x03C90314: 0x00001F61\n\t\"\\x1f`\\x03\\x00\\x00\\x00\\x1fb\" + // 0x1F600300: 0x00001F62\n\t\"\\x1fa\\x03\\x00\\x00\\x00\\x1fc\" + // 0x1F610300: 0x00001F63\n\t\"\\x1f`\\x03\\x01\\x00\\x00\\x1fd\" + // 0x1F600301: 0x00001F64\n\t\"\\x1fa\\x03\\x01\\x00\\x00\\x1fe\" + // 0x1F610301: 0x00001F65\n\t\"\\x1f`\\x03B\\x00\\x00\\x1ff\" + // 0x1F600342: 0x00001F66\n\t\"\\x1fa\\x03B\\x00\\x00\\x1fg\" + // 0x1F610342: 0x00001F67\n\t\"\\x03\\xa9\\x03\\x13\\x00\\x00\\x1fh\" + // 0x03A90313: 0x00001F68\n\t\"\\x03\\xa9\\x03\\x14\\x00\\x00\\x1fi\" + // 0x03A90314: 0x00001F69\n\t\"\\x1fh\\x03\\x00\\x00\\x00\\x1fj\" + // 0x1F680300: 0x00001F6A\n\t\"\\x1fi\\x03\\x00\\x00\\x00\\x1fk\" + // 0x1F690300: 0x00001F6B\n\t\"\\x1fh\\x03\\x01\\x00\\x00\\x1fl\" + // 0x1F680301: 0x00001F6C\n\t\"\\x1fi\\x03\\x01\\x00\\x00\\x1fm\" + // 0x1F690301: 0x00001F6D\n\t\"\\x1fh\\x03B\\x00\\x00\\x1fn\" + // 0x1F680342: 0x00001F6E\n\t\"\\x1fi\\x03B\\x00\\x00\\x1fo\" + // 0x1F690342: 0x00001F6F\n\t\"\\x03\\xb1\\x03\\x00\\x00\\x00\\x1fp\" + // 0x03B10300: 0x00001F70\n\t\"\\x03\\xb5\\x03\\x00\\x00\\x00\\x1fr\" + // 0x03B50300: 0x00001F72\n\t\"\\x03\\xb7\\x03\\x00\\x00\\x00\\x1ft\" + // 0x03B70300: 0x00001F74\n\t\"\\x03\\xb9\\x03\\x00\\x00\\x00\\x1fv\" + // 0x03B90300: 0x00001F76\n\t\"\\x03\\xbf\\x03\\x00\\x00\\x00\\x1fx\" + // 0x03BF0300: 0x00001F78\n\t\"\\x03\\xc5\\x03\\x00\\x00\\x00\\x1fz\" + // 0x03C50300: 0x00001F7A\n\t\"\\x03\\xc9\\x03\\x00\\x00\\x00\\x1f|\" + // 0x03C90300: 0x00001F7C\n\t\"\\x1f\\x00\\x03E\\x00\\x00\\x1f\\x80\" + // 0x1F000345: 0x00001F80\n\t\"\\x1f\\x01\\x03E\\x00\\x00\\x1f\\x81\" + // 0x1F010345: 0x00001F81\n\t\"\\x1f\\x02\\x03E\\x00\\x00\\x1f\\x82\" + // 0x1F020345: 0x00001F82\n\t\"\\x1f\\x03\\x03E\\x00\\x00\\x1f\\x83\" + // 0x1F030345: 0x00001F83\n\t\"\\x1f\\x04\\x03E\\x00\\x00\\x1f\\x84\" + // 0x1F040345: 0x00001F84\n\t\"\\x1f\\x05\\x03E\\x00\\x00\\x1f\\x85\" + // 0x1F050345: 0x00001F85\n\t\"\\x1f\\x06\\x03E\\x00\\x00\\x1f\\x86\" + // 0x1F060345: 0x00001F86\n\t\"\\x1f\\a\\x03E\\x00\\x00\\x1f\\x87\" + // 0x1F070345: 0x00001F87\n\t\"\\x1f\\b\\x03E\\x00\\x00\\x1f\\x88\" + // 0x1F080345: 0x00001F88\n\t\"\\x1f\\t\\x03E\\x00\\x00\\x1f\\x89\" + // 0x1F090345: 0x00001F89\n\t\"\\x1f\\n\\x03E\\x00\\x00\\x1f\\x8a\" + // 0x1F0A0345: 0x00001F8A\n\t\"\\x1f\\v\\x03E\\x00\\x00\\x1f\\x8b\" + // 0x1F0B0345: 0x00001F8B\n\t\"\\x1f\\f\\x03E\\x00\\x00\\x1f\\x8c\" + // 0x1F0C0345: 0x00001F8C\n\t\"\\x1f\\r\\x03E\\x00\\x00\\x1f\\x8d\" + // 0x1F0D0345: 0x00001F8D\n\t\"\\x1f\\x0e\\x03E\\x00\\x00\\x1f\\x8e\" + // 0x1F0E0345: 0x00001F8E\n\t\"\\x1f\\x0f\\x03E\\x00\\x00\\x1f\\x8f\" + // 0x1F0F0345: 0x00001F8F\n\t\"\\x1f \\x03E\\x00\\x00\\x1f\\x90\" + // 0x1F200345: 0x00001F90\n\t\"\\x1f!\\x03E\\x00\\x00\\x1f\\x91\" + // 0x1F210345: 0x00001F91\n\t\"\\x1f\\\"\\x03E\\x00\\x00\\x1f\\x92\" + // 0x1F220345: 0x00001F92\n\t\"\\x1f#\\x03E\\x00\\x00\\x1f\\x93\" + // 0x1F230345: 0x00001F93\n\t\"\\x1f$\\x03E\\x00\\x00\\x1f\\x94\" + // 0x1F240345: 0x00001F94\n\t\"\\x1f%\\x03E\\x00\\x00\\x1f\\x95\" + // 0x1F250345: 0x00001F95\n\t\"\\x1f&\\x03E\\x00\\x00\\x1f\\x96\" + // 0x1F260345: 0x00001F96\n\t\"\\x1f'\\x03E\\x00\\x00\\x1f\\x97\" + // 0x1F270345: 0x00001F97\n\t\"\\x1f(\\x03E\\x00\\x00\\x1f\\x98\" + // 0x1F280345: 0x00001F98\n\t\"\\x1f)\\x03E\\x00\\x00\\x1f\\x99\" + // 0x1F290345: 0x00001F99\n\t\"\\x1f*\\x03E\\x00\\x00\\x1f\\x9a\" + // 0x1F2A0345: 0x00001F9A\n\t\"\\x1f+\\x03E\\x00\\x00\\x1f\\x9b\" + // 0x1F2B0345: 0x00001F9B\n\t\"\\x1f,\\x03E\\x00\\x00\\x1f\\x9c\" + // 0x1F2C0345: 0x00001F9C\n\t\"\\x1f-\\x03E\\x00\\x00\\x1f\\x9d\" + // 0x1F2D0345: 0x00001F9D\n\t\"\\x1f.\\x03E\\x00\\x00\\x1f\\x9e\" + // 0x1F2E0345: 0x00001F9E\n\t\"\\x1f/\\x03E\\x00\\x00\\x1f\\x9f\" + // 0x1F2F0345: 0x00001F9F\n\t\"\\x1f`\\x03E\\x00\\x00\\x1f\\xa0\" + // 0x1F600345: 0x00001FA0\n\t\"\\x1fa\\x03E\\x00\\x00\\x1f\\xa1\" + // 0x1F610345: 0x00001FA1\n\t\"\\x1fb\\x03E\\x00\\x00\\x1f\\xa2\" + // 0x1F620345: 0x00001FA2\n\t\"\\x1fc\\x03E\\x00\\x00\\x1f\\xa3\" + // 0x1F630345: 0x00001FA3\n\t\"\\x1fd\\x03E\\x00\\x00\\x1f\\xa4\" + // 0x1F640345: 0x00001FA4\n\t\"\\x1fe\\x03E\\x00\\x00\\x1f\\xa5\" + // 0x1F650345: 0x00001FA5\n\t\"\\x1ff\\x03E\\x00\\x00\\x1f\\xa6\" + // 0x1F660345: 0x00001FA6\n\t\"\\x1fg\\x03E\\x00\\x00\\x1f\\xa7\" + // 0x1F670345: 0x00001FA7\n\t\"\\x1fh\\x03E\\x00\\x00\\x1f\\xa8\" + // 0x1F680345: 0x00001FA8\n\t\"\\x1fi\\x03E\\x00\\x00\\x1f\\xa9\" + // 0x1F690345: 0x00001FA9\n\t\"\\x1fj\\x03E\\x00\\x00\\x1f\\xaa\" + // 0x1F6A0345: 0x00001FAA\n\t\"\\x1fk\\x03E\\x00\\x00\\x1f\\xab\" + // 0x1F6B0345: 0x00001FAB\n\t\"\\x1fl\\x03E\\x00\\x00\\x1f\\xac\" + // 0x1F6C0345: 0x00001FAC\n\t\"\\x1fm\\x03E\\x00\\x00\\x1f\\xad\" + // 0x1F6D0345: 0x00001FAD\n\t\"\\x1fn\\x03E\\x00\\x00\\x1f\\xae\" + // 0x1F6E0345: 0x00001FAE\n\t\"\\x1fo\\x03E\\x00\\x00\\x1f\\xaf\" + // 0x1F6F0345: 0x00001FAF\n\t\"\\x03\\xb1\\x03\\x06\\x00\\x00\\x1f\\xb0\" + // 0x03B10306: 0x00001FB0\n\t\"\\x03\\xb1\\x03\\x04\\x00\\x00\\x1f\\xb1\" + // 0x03B10304: 0x00001FB1\n\t\"\\x1fp\\x03E\\x00\\x00\\x1f\\xb2\" + // 0x1F700345: 0x00001FB2\n\t\"\\x03\\xb1\\x03E\\x00\\x00\\x1f\\xb3\" + // 0x03B10345: 0x00001FB3\n\t\"\\x03\\xac\\x03E\\x00\\x00\\x1f\\xb4\" + // 0x03AC0345: 0x00001FB4\n\t\"\\x03\\xb1\\x03B\\x00\\x00\\x1f\\xb6\" + // 0x03B10342: 0x00001FB6\n\t\"\\x1f\\xb6\\x03E\\x00\\x00\\x1f\\xb7\" + // 0x1FB60345: 0x00001FB7\n\t\"\\x03\\x91\\x03\\x06\\x00\\x00\\x1f\\xb8\" + // 0x03910306: 0x00001FB8\n\t\"\\x03\\x91\\x03\\x04\\x00\\x00\\x1f\\xb9\" + // 0x03910304: 0x00001FB9\n\t\"\\x03\\x91\\x03\\x00\\x00\\x00\\x1f\\xba\" + // 0x03910300: 0x00001FBA\n\t\"\\x03\\x91\\x03E\\x00\\x00\\x1f\\xbc\" + // 0x03910345: 0x00001FBC\n\t\"\\x00\\xa8\\x03B\\x00\\x00\\x1f\\xc1\" + // 0x00A80342: 0x00001FC1\n\t\"\\x1ft\\x03E\\x00\\x00\\x1f\\xc2\" + // 0x1F740345: 0x00001FC2\n\t\"\\x03\\xb7\\x03E\\x00\\x00\\x1f\\xc3\" + // 0x03B70345: 0x00001FC3\n\t\"\\x03\\xae\\x03E\\x00\\x00\\x1f\\xc4\" + // 0x03AE0345: 0x00001FC4\n\t\"\\x03\\xb7\\x03B\\x00\\x00\\x1f\\xc6\" + // 0x03B70342: 0x00001FC6\n\t\"\\x1f\\xc6\\x03E\\x00\\x00\\x1f\\xc7\" + // 0x1FC60345: 0x00001FC7\n\t\"\\x03\\x95\\x03\\x00\\x00\\x00\\x1f\\xc8\" + // 0x03950300: 0x00001FC8\n\t\"\\x03\\x97\\x03\\x00\\x00\\x00\\x1f\\xca\" + // 0x03970300: 0x00001FCA\n\t\"\\x03\\x97\\x03E\\x00\\x00\\x1f\\xcc\" + // 0x03970345: 0x00001FCC\n\t\"\\x1f\\xbf\\x03\\x00\\x00\\x00\\x1f\\xcd\" + // 0x1FBF0300: 0x00001FCD\n\t\"\\x1f\\xbf\\x03\\x01\\x00\\x00\\x1f\\xce\" + // 0x1FBF0301: 0x00001FCE\n\t\"\\x1f\\xbf\\x03B\\x00\\x00\\x1f\\xcf\" + // 0x1FBF0342: 0x00001FCF\n\t\"\\x03\\xb9\\x03\\x06\\x00\\x00\\x1f\\xd0\" + // 0x03B90306: 0x00001FD0\n\t\"\\x03\\xb9\\x03\\x04\\x00\\x00\\x1f\\xd1\" + // 0x03B90304: 0x00001FD1\n\t\"\\x03\\xca\\x03\\x00\\x00\\x00\\x1f\\xd2\" + // 0x03CA0300: 0x00001FD2\n\t\"\\x03\\xb9\\x03B\\x00\\x00\\x1f\\xd6\" + // 0x03B90342: 0x00001FD6\n\t\"\\x03\\xca\\x03B\\x00\\x00\\x1f\\xd7\" + // 0x03CA0342: 0x00001FD7\n\t\"\\x03\\x99\\x03\\x06\\x00\\x00\\x1f\\xd8\" + // 0x03990306: 0x00001FD8\n\t\"\\x03\\x99\\x03\\x04\\x00\\x00\\x1f\\xd9\" + // 0x03990304: 0x00001FD9\n\t\"\\x03\\x99\\x03\\x00\\x00\\x00\\x1f\\xda\" + // 0x03990300: 0x00001FDA\n\t\"\\x1f\\xfe\\x03\\x00\\x00\\x00\\x1f\\xdd\" + // 0x1FFE0300: 0x00001FDD\n\t\"\\x1f\\xfe\\x03\\x01\\x00\\x00\\x1f\\xde\" + // 0x1FFE0301: 0x00001FDE\n\t\"\\x1f\\xfe\\x03B\\x00\\x00\\x1f\\xdf\" + // 0x1FFE0342: 0x00001FDF\n\t\"\\x03\\xc5\\x03\\x06\\x00\\x00\\x1f\\xe0\" + // 0x03C50306: 0x00001FE0\n\t\"\\x03\\xc5\\x03\\x04\\x00\\x00\\x1f\\xe1\" + // 0x03C50304: 0x00001FE1\n\t\"\\x03\\xcb\\x03\\x00\\x00\\x00\\x1f\\xe2\" + // 0x03CB0300: 0x00001FE2\n\t\"\\x03\\xc1\\x03\\x13\\x00\\x00\\x1f\\xe4\" + // 0x03C10313: 0x00001FE4\n\t\"\\x03\\xc1\\x03\\x14\\x00\\x00\\x1f\\xe5\" + // 0x03C10314: 0x00001FE5\n\t\"\\x03\\xc5\\x03B\\x00\\x00\\x1f\\xe6\" + // 0x03C50342: 0x00001FE6\n\t\"\\x03\\xcb\\x03B\\x00\\x00\\x1f\\xe7\" + // 0x03CB0342: 0x00001FE7\n\t\"\\x03\\xa5\\x03\\x06\\x00\\x00\\x1f\\xe8\" + // 0x03A50306: 0x00001FE8\n\t\"\\x03\\xa5\\x03\\x04\\x00\\x00\\x1f\\xe9\" + // 0x03A50304: 0x00001FE9\n\t\"\\x03\\xa5\\x03\\x00\\x00\\x00\\x1f\\xea\" + // 0x03A50300: 0x00001FEA\n\t\"\\x03\\xa1\\x03\\x14\\x00\\x00\\x1f\\xec\" + // 0x03A10314: 0x00001FEC\n\t\"\\x00\\xa8\\x03\\x00\\x00\\x00\\x1f\\xed\" + // 0x00A80300: 0x00001FED\n\t\"\\x1f|\\x03E\\x00\\x00\\x1f\\xf2\" + // 0x1F7C0345: 0x00001FF2\n\t\"\\x03\\xc9\\x03E\\x00\\x00\\x1f\\xf3\" + // 0x03C90345: 0x00001FF3\n\t\"\\x03\\xce\\x03E\\x00\\x00\\x1f\\xf4\" + // 0x03CE0345: 0x00001FF4\n\t\"\\x03\\xc9\\x03B\\x00\\x00\\x1f\\xf6\" + // 0x03C90342: 0x00001FF6\n\t\"\\x1f\\xf6\\x03E\\x00\\x00\\x1f\\xf7\" + // 0x1FF60345: 0x00001FF7\n\t\"\\x03\\x9f\\x03\\x00\\x00\\x00\\x1f\\xf8\" + // 0x039F0300: 0x00001FF8\n\t\"\\x03\\xa9\\x03\\x00\\x00\\x00\\x1f\\xfa\" + // 0x03A90300: 0x00001FFA\n\t\"\\x03\\xa9\\x03E\\x00\\x00\\x1f\\xfc\" + // 0x03A90345: 0x00001FFC\n\t\"!\\x90\\x038\\x00\\x00!\\x9a\" + // 0x21900338: 0x0000219A\n\t\"!\\x92\\x038\\x00\\x00!\\x9b\" + // 0x21920338: 0x0000219B\n\t\"!\\x94\\x038\\x00\\x00!\\xae\" + // 0x21940338: 0x000021AE\n\t\"!\\xd0\\x038\\x00\\x00!\\xcd\" + // 0x21D00338: 0x000021CD\n\t\"!\\xd4\\x038\\x00\\x00!\\xce\" + // 0x21D40338: 0x000021CE\n\t\"!\\xd2\\x038\\x00\\x00!\\xcf\" + // 0x21D20338: 0x000021CF\n\t\"\\\"\\x03\\x038\\x00\\x00\\\"\\x04\" + // 0x22030338: 0x00002204\n\t\"\\\"\\b\\x038\\x00\\x00\\\"\\t\" + // 0x22080338: 0x00002209\n\t\"\\\"\\v\\x038\\x00\\x00\\\"\\f\" + // 0x220B0338: 0x0000220C\n\t\"\\\"#\\x038\\x00\\x00\\\"$\" + // 0x22230338: 0x00002224\n\t\"\\\"%\\x038\\x00\\x00\\\"&\" + // 0x22250338: 0x00002226\n\t\"\\\"<\\x038\\x00\\x00\\\"A\" + // 0x223C0338: 0x00002241\n\t\"\\\"C\\x038\\x00\\x00\\\"D\" + // 0x22430338: 0x00002244\n\t\"\\\"E\\x038\\x00\\x00\\\"G\" + // 0x22450338: 0x00002247\n\t\"\\\"H\\x038\\x00\\x00\\\"I\" + // 0x22480338: 0x00002249\n\t\"\\x00=\\x038\\x00\\x00\\\"`\" + // 0x003D0338: 0x00002260\n\t\"\\\"a\\x038\\x00\\x00\\\"b\" + // 0x22610338: 0x00002262\n\t\"\\\"M\\x038\\x00\\x00\\\"m\" + // 0x224D0338: 0x0000226D\n\t\"\\x00<\\x038\\x00\\x00\\\"n\" + // 0x003C0338: 0x0000226E\n\t\"\\x00>\\x038\\x00\\x00\\\"o\" + // 0x003E0338: 0x0000226F\n\t\"\\\"d\\x038\\x00\\x00\\\"p\" + // 0x22640338: 0x00002270\n\t\"\\\"e\\x038\\x00\\x00\\\"q\" + // 0x22650338: 0x00002271\n\t\"\\\"r\\x038\\x00\\x00\\\"t\" + // 0x22720338: 0x00002274\n\t\"\\\"s\\x038\\x00\\x00\\\"u\" + // 0x22730338: 0x00002275\n\t\"\\\"v\\x038\\x00\\x00\\\"x\" + // 0x22760338: 0x00002278\n\t\"\\\"w\\x038\\x00\\x00\\\"y\" + // 0x22770338: 0x00002279\n\t\"\\\"z\\x038\\x00\\x00\\\"\\x80\" + // 0x227A0338: 0x00002280\n\t\"\\\"{\\x038\\x00\\x00\\\"\\x81\" + // 0x227B0338: 0x00002281\n\t\"\\\"\\x82\\x038\\x00\\x00\\\"\\x84\" + // 0x22820338: 0x00002284\n\t\"\\\"\\x83\\x038\\x00\\x00\\\"\\x85\" + // 0x22830338: 0x00002285\n\t\"\\\"\\x86\\x038\\x00\\x00\\\"\\x88\" + // 0x22860338: 0x00002288\n\t\"\\\"\\x87\\x038\\x00\\x00\\\"\\x89\" + // 0x22870338: 0x00002289\n\t\"\\\"\\xa2\\x038\\x00\\x00\\\"\\xac\" + // 0x22A20338: 0x000022AC\n\t\"\\\"\\xa8\\x038\\x00\\x00\\\"\\xad\" + // 0x22A80338: 0x000022AD\n\t\"\\\"\\xa9\\x038\\x00\\x00\\\"\\xae\" + // 0x22A90338: 0x000022AE\n\t\"\\\"\\xab\\x038\\x00\\x00\\\"\\xaf\" + // 0x22AB0338: 0x000022AF\n\t\"\\\"|\\x038\\x00\\x00\\\"\\xe0\" + // 0x227C0338: 0x000022E0\n\t\"\\\"}\\x038\\x00\\x00\\\"\\xe1\" + // 0x227D0338: 0x000022E1\n\t\"\\\"\\x91\\x038\\x00\\x00\\\"\\xe2\" + // 0x22910338: 0x000022E2\n\t\"\\\"\\x92\\x038\\x00\\x00\\\"\\xe3\" + // 0x22920338: 0x000022E3\n\t\"\\\"\\xb2\\x038\\x00\\x00\\\"\\xea\" + // 0x22B20338: 0x000022EA\n\t\"\\\"\\xb3\\x038\\x00\\x00\\\"\\xeb\" + // 0x22B30338: 0x000022EB\n\t\"\\\"\\xb4\\x038\\x00\\x00\\\"\\xec\" + // 0x22B40338: 0x000022EC\n\t\"\\\"\\xb5\\x038\\x00\\x00\\\"\\xed\" + // 0x22B50338: 0x000022ED\n\t\"0K0\\x99\\x00\\x000L\" + // 0x304B3099: 0x0000304C\n\t\"0M0\\x99\\x00\\x000N\" + // 0x304D3099: 0x0000304E\n\t\"0O0\\x99\\x00\\x000P\" + // 0x304F3099: 0x00003050\n\t\"0Q0\\x99\\x00\\x000R\" + // 0x30513099: 0x00003052\n\t\"0S0\\x99\\x00\\x000T\" + // 0x30533099: 0x00003054\n\t\"0U0\\x99\\x00\\x000V\" + // 0x30553099: 0x00003056\n\t\"0W0\\x99\\x00\\x000X\" + // 0x30573099: 0x00003058\n\t\"0Y0\\x99\\x00\\x000Z\" + // 0x30593099: 0x0000305A\n\t\"0[0\\x99\\x00\\x000\\\\\" + // 0x305B3099: 0x0000305C\n\t\"0]0\\x99\\x00\\x000^\" + // 0x305D3099: 0x0000305E\n\t\"0_0\\x99\\x00\\x000`\" + // 0x305F3099: 0x00003060\n\t\"0a0\\x99\\x00\\x000b\" + // 0x30613099: 0x00003062\n\t\"0d0\\x99\\x00\\x000e\" + // 0x30643099: 0x00003065\n\t\"0f0\\x99\\x00\\x000g\" + // 0x30663099: 0x00003067\n\t\"0h0\\x99\\x00\\x000i\" + // 0x30683099: 0x00003069\n\t\"0o0\\x99\\x00\\x000p\" + // 0x306F3099: 0x00003070\n\t\"0o0\\x9a\\x00\\x000q\" + // 0x306F309A: 0x00003071\n\t\"0r0\\x99\\x00\\x000s\" + // 0x30723099: 0x00003073\n\t\"0r0\\x9a\\x00\\x000t\" + // 0x3072309A: 0x00003074\n\t\"0u0\\x99\\x00\\x000v\" + // 0x30753099: 0x00003076\n\t\"0u0\\x9a\\x00\\x000w\" + // 0x3075309A: 0x00003077\n\t\"0x0\\x99\\x00\\x000y\" + // 0x30783099: 0x00003079\n\t\"0x0\\x9a\\x00\\x000z\" + // 0x3078309A: 0x0000307A\n\t\"0{0\\x99\\x00\\x000|\" + // 0x307B3099: 0x0000307C\n\t\"0{0\\x9a\\x00\\x000}\" + // 0x307B309A: 0x0000307D\n\t\"0F0\\x99\\x00\\x000\\x94\" + // 0x30463099: 0x00003094\n\t\"0\\x9d0\\x99\\x00\\x000\\x9e\" + // 0x309D3099: 0x0000309E\n\t\"0\\xab0\\x99\\x00\\x000\\xac\" + // 0x30AB3099: 0x000030AC\n\t\"0\\xad0\\x99\\x00\\x000\\xae\" + // 0x30AD3099: 0x000030AE\n\t\"0\\xaf0\\x99\\x00\\x000\\xb0\" + // 0x30AF3099: 0x000030B0\n\t\"0\\xb10\\x99\\x00\\x000\\xb2\" + // 0x30B13099: 0x000030B2\n\t\"0\\xb30\\x99\\x00\\x000\\xb4\" + // 0x30B33099: 0x000030B4\n\t\"0\\xb50\\x99\\x00\\x000\\xb6\" + // 0x30B53099: 0x000030B6\n\t\"0\\xb70\\x99\\x00\\x000\\xb8\" + // 0x30B73099: 0x000030B8\n\t\"0\\xb90\\x99\\x00\\x000\\xba\" + // 0x30B93099: 0x000030BA\n\t\"0\\xbb0\\x99\\x00\\x000\\xbc\" + // 0x30BB3099: 0x000030BC\n\t\"0\\xbd0\\x99\\x00\\x000\\xbe\" + // 0x30BD3099: 0x000030BE\n\t\"0\\xbf0\\x99\\x00\\x000\\xc0\" + // 0x30BF3099: 0x000030C0\n\t\"0\\xc10\\x99\\x00\\x000\\xc2\" + // 0x30C13099: 0x000030C2\n\t\"0\\xc40\\x99\\x00\\x000\\xc5\" + // 0x30C43099: 0x000030C5\n\t\"0\\xc60\\x99\\x00\\x000\\xc7\" + // 0x30C63099: 0x000030C7\n\t\"0\\xc80\\x99\\x00\\x000\\xc9\" + // 0x30C83099: 0x000030C9\n\t\"0\\xcf0\\x99\\x00\\x000\\xd0\" + // 0x30CF3099: 0x000030D0\n\t\"0\\xcf0\\x9a\\x00\\x000\\xd1\" + // 0x30CF309A: 0x000030D1\n\t\"0\\xd20\\x99\\x00\\x000\\xd3\" + // 0x30D23099: 0x000030D3\n\t\"0\\xd20\\x9a\\x00\\x000\\xd4\" + // 0x30D2309A: 0x000030D4\n\t\"0\\xd50\\x99\\x00\\x000\\xd6\" + // 0x30D53099: 0x000030D6\n\t\"0\\xd50\\x9a\\x00\\x000\\xd7\" + // 0x30D5309A: 0x000030D7\n\t\"0\\xd80\\x99\\x00\\x000\\xd9\" + // 0x30D83099: 0x000030D9\n\t\"0\\xd80\\x9a\\x00\\x000\\xda\" + // 0x30D8309A: 0x000030DA\n\t\"0\\xdb0\\x99\\x00\\x000\\xdc\" + // 0x30DB3099: 0x000030DC\n\t\"0\\xdb0\\x9a\\x00\\x000\\xdd\" + // 0x30DB309A: 0x000030DD\n\t\"0\\xa60\\x99\\x00\\x000\\xf4\" + // 0x30A63099: 0x000030F4\n\t\"0\\xef0\\x99\\x00\\x000\\xf7\" + // 0x30EF3099: 0x000030F7\n\t\"0\\xf00\\x99\\x00\\x000\\xf8\" + // 0x30F03099: 0x000030F8\n\t\"0\\xf10\\x99\\x00\\x000\\xf9\" + // 0x30F13099: 0x000030F9\n\t\"0\\xf20\\x99\\x00\\x000\\xfa\" + // 0x30F23099: 0x000030FA\n\t\"0\\xfd0\\x99\\x00\\x000\\xfe\" + // 0x30FD3099: 0x000030FE\n\t\"\\x05\\xd2\\x03\\a\\x00\\x01\\x05\\xc9\" + // 0x05D20307: 0x000105C9\n\t\"\\x05\\xda\\x03\\a\\x00\\x01\\x05\\xe4\" + // 0x05DA0307: 0x000105E4\n\t\"\\x10\\x99\\x10\\xba\\x00\\x01\\x10\\x9a\" + // 0x109910BA: 0x0001109A\n\t\"\\x10\\x9b\\x10\\xba\\x00\\x01\\x10\\x9c\" + // 0x109B10BA: 0x0001109C\n\t\"\\x10\\xa5\\x10\\xba\\x00\\x01\\x10\\xab\" + // 0x10A510BA: 0x000110AB\n\t\"\\x111\\x11'\\x00\\x01\\x11.\" + // 0x11311127: 0x0001112E\n\t\"\\x112\\x11'\\x00\\x01\\x11/\" + // 0x11321127: 0x0001112F\n\t\"\\x13G\\x13>\\x00\\x01\\x13K\" + // 0x1347133E: 0x0001134B\n\t\"\\x13G\\x13W\\x00\\x01\\x13L\" + // 0x13471357: 0x0001134C\n\t\"\\x13\\x82\\x13\\xc9\\x00\\x01\\x13\\x83\" + // 0x138213C9: 0x00011383\n\t\"\\x13\\x84\\x13\\xbb\\x00\\x01\\x13\\x85\" + // 0x138413BB: 0x00011385\n\t\"\\x13\\x8b\\x13\\xc2\\x00\\x01\\x13\\x8e\" + // 0x138B13C2: 0x0001138E\n\t\"\\x13\\x90\\x13\\xc9\\x00\\x01\\x13\\x91\" + // 0x139013C9: 0x00011391\n\t\"\\x13\\xc2\\x13\\xc2\\x00\\x01\\x13\\xc5\" + // 0x13C213C2: 0x000113C5\n\t\"\\x13\\xc2\\x13\\xb8\\x00\\x01\\x13\\xc7\" + // 0x13C213B8: 0x000113C7\n\t\"\\x13\\xc2\\x13\\xc9\\x00\\x01\\x13\\xc8\" + // 0x13C213C9: 0x000113C8\n\t\"\\x14\\xb9\\x14\\xba\\x00\\x01\\x14\\xbb\" + // 0x14B914BA: 0x000114BB\n\t\"\\x14\\xb9\\x14\\xb0\\x00\\x01\\x14\\xbc\" + // 0x14B914B0: 0x000114BC\n\t\"\\x14\\xb9\\x14\\xbd\\x00\\x01\\x14\\xbe\" + // 0x14B914BD: 0x000114BE\n\t\"\\x15\\xb8\\x15\\xaf\\x00\\x01\\x15\\xba\" + // 0x15B815AF: 0x000115BA\n\t\"\\x15\\xb9\\x15\\xaf\\x00\\x01\\x15\\xbb\" + // 0x15B915AF: 0x000115BB\n\t\"\\x195\\x190\\x00\\x01\\x198\" + // 0x19351930: 0x00011938\n\t\"a\\x1ea\\x1e\\x00\\x01a!\" + // 0x611E611E: 0x00016121\n\t\"a\\x1ea)\\x00\\x01a\\\"\" + // 0x611E6129: 0x00016122\n\t\"a\\x1ea\\x1f\\x00\\x01a#\" + // 0x611E611F: 0x00016123\n\t\"a)a\\x1f\\x00\\x01a$\" + // 0x6129611F: 0x00016124\n\t\"a\\x1ea \\x00\\x01a%\" + // 0x611E6120: 0x00016125\n\t\"a!a\\x1f\\x00\\x01a&\" + // 0x6121611F: 0x00016126\n\t\"a\\\"a\\x1f\\x00\\x01a'\" + // 0x6122611F: 0x00016127\n\t\"a!a \\x00\\x01a(\" + // 0x61216120: 0x00016128\n\t\"mgmg\\x00\\x01mh\" + // 0x6D676D67: 0x00016D68\n\t\"mcmg\\x00\\x01mi\" + // 0x6D636D67: 0x00016D69\n\t\"mimg\\x00\\x01mj\" + // 0x6D696D67: 0x00016D6A\n\t\"\"\n\t// Total size of tables: 57KB (58086 bytes)\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/transform.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/transform\"\n)\n\n// Reset implements the Reset method of the transform.Transformer interface.\nfunc (Form) Reset() {}\n\n// Transform implements the Transform method of the transform.Transformer\n// interface. It may need to write segments of up to MaxSegmentSize at once.\n// Users should either catch ErrShortDst and allow dst to grow or have dst be at\n// least of size MaxTransformChunkSize to be guaranteed of progress.\nfunc (f Form) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\t// Cap the maximum number of src bytes to check.\n\tb := src\n\teof := atEOF\n\tif ns := len(dst); ns < len(b) {\n\t\terr = transform.ErrShortDst\n\t\teof = false\n\t\tb = b[:ns]\n\t}\n\ti, ok := formTable[f].quickSpan(inputBytes(b), 0, len(b), eof)\n\tn := copy(dst, b[:i])\n\tif !ok {\n\t\tnDst, nSrc, err = f.transform(dst[n:], src[n:], atEOF)\n\t\treturn nDst + n, nSrc + n, err\n\t}\n\n\tif err == nil && n < len(src) && !atEOF {\n\t\terr = transform.ErrShortSrc\n\t}\n\treturn n, n, err\n}\n\nfunc flushTransform(rb *reorderBuffer) bool {\n\t// Write out (must fully fit in dst, or else it is an ErrShortDst).\n\tif len(rb.out) < rb.nrune*utf8.UTFMax {\n\t\treturn false\n\t}\n\trb.out = rb.out[rb.flushCopy(rb.out):]\n\treturn true\n}\n\nvar errs = []error{nil, transform.ErrShortDst, transform.ErrShortSrc}\n\n// transform implements the transform.Transformer interface. It is only called\n// when quickSpan does not pass for a given string.\nfunc (f Form) transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\t// TODO: get rid of reorderBuffer. See CL 23460044.\n\trb := reorderBuffer{}\n\trb.init(f, src)\n\tfor {\n\t\t// Load segment into reorder buffer.\n\t\trb.setFlusher(dst[nDst:], flushTransform)\n\t\tend := decomposeSegment(&rb, nSrc, atEOF)\n\t\tif end < 0 {\n\t\t\treturn nDst, nSrc, errs[-end]\n\t\t}\n\t\tnDst = len(dst) - len(rb.out)\n\t\tnSrc = end\n\n\t\t// Next quickSpan.\n\t\tend = rb.nsrc\n\t\teof := atEOF\n\t\tif n := nSrc + len(dst) - nDst; n < end {\n\t\t\terr = transform.ErrShortDst\n\t\t\tend = n\n\t\t\teof = false\n\t\t}\n\t\tend, ok := rb.f.quickSpan(rb.src, nSrc, end, eof)\n\t\tn := copy(dst[nDst:], rb.src.bytes[nSrc:end])\n\t\tnSrc += n\n\t\tnDst += n\n\t\tif ok {\n\t\t\tif err == nil && n < rb.nsrc && !atEOF {\n\t\t\t\terr = transform.ErrShortSrc\n\t\t\t}\n\t\t\treturn nDst, nSrc, err\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/trie.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\ntype valueRange struct {\n\tvalue  uint16 // header: value:stride\n\tlo, hi byte   // header: lo:n\n}\n\ntype sparseBlocks struct {\n\tvalues []valueRange\n\toffset []uint16\n}\n\nvar nfcSparse = sparseBlocks{\n\tvalues: nfcSparseValues[:],\n\toffset: nfcSparseOffset[:],\n}\n\nvar nfkcSparse = sparseBlocks{\n\tvalues: nfkcSparseValues[:],\n\toffset: nfkcSparseOffset[:],\n}\n\nvar (\n\tnfcData  = newNfcTrie(0)\n\tnfkcData = newNfkcTrie(0)\n)\n\n// lookup determines the type of block n and looks up the value for b.\n// For n < t.cutoff, the block is a simple lookup table. Otherwise, the block\n// is a list of ranges with an accompanying value. Given a matching range r,\n// the value for b is by r.value + (b - r.lo) * stride.\nfunc (t *sparseBlocks) lookup(n uint32, b byte) uint16 {\n\toffset := t.offset[n]\n\theader := t.values[offset]\n\tlo := offset + 1\n\thi := lo + uint16(header.lo)\n\tfor lo < hi {\n\t\tm := lo + (hi-lo)/2\n\t\tr := t.values[m]\n\t\tif r.lo <= b && b <= r.hi {\n\t\t\treturn r.value + uint16(b-r.lo)*header.value\n\t\t}\n\t\tif b < r.lo {\n\t\t\thi = m\n\t\t} else {\n\t\t\tlo = m + 1\n\t\t}\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/golang.org/x/tools/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/golang.org/x/tools/go/ast/astutil/enclosing.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage astutil\n\n// This file defines utilities for working with source positions.\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/token\"\n\t\"sort\"\n)\n\n// PathEnclosingInterval returns the node that encloses the source\n// interval [start, end), and all its ancestors up to the AST root.\n//\n// The definition of \"enclosing\" used by this function considers\n// additional whitespace abutting a node to be enclosed by it.\n// In this example:\n//\n//\tz := x + y // add them\n//\t     <-A->\n//\t    <----B----->\n//\n// the ast.BinaryExpr(+) node is considered to enclose interval B\n// even though its [Pos()..End()) is actually only interval A.\n// This behaviour makes user interfaces more tolerant of imperfect\n// input.\n//\n// This function treats tokens as nodes, though they are not included\n// in the result. e.g. PathEnclosingInterval(\"+\") returns the\n// enclosing ast.BinaryExpr(\"x + y\").\n//\n// If start==end, the 1-char interval following start is used instead.\n//\n// The 'exact' result is true if the interval contains only path[0]\n// and perhaps some adjacent whitespace.  It is false if the interval\n// overlaps multiple children of path[0], or if it contains only\n// interior whitespace of path[0].\n// In this example:\n//\n//\tz := x + y // add them\n//\t  <--C-->     <---E-->\n//\t    ^\n//\t    D\n//\n// intervals C, D and E are inexact.  C is contained by the\n// z-assignment statement, because it spans three of its children (:=,\n// x, +).  So too is the 1-char interval D, because it contains only\n// interior whitespace of the assignment.  E is considered interior\n// whitespace of the BlockStmt containing the assignment.\n//\n// The resulting path is never empty; it always contains at least the\n// 'root' *ast.File.  Ideally PathEnclosingInterval would reject\n// intervals that lie wholly or partially outside the range of the\n// file, but unfortunately ast.File records only the token.Pos of\n// the 'package' keyword, but not of the start of the file itself.\nfunc PathEnclosingInterval(root *ast.File, start, end token.Pos) (path []ast.Node, exact bool) {\n\t// fmt.Printf(\"EnclosingInterval %d %d\\n\", start, end) // debugging\n\n\t// Precondition: node.[Pos..End) and adjoining whitespace contain [start, end).\n\tvar visit func(node ast.Node) bool\n\tvisit = func(node ast.Node) bool {\n\t\tpath = append(path, node)\n\n\t\tnodePos := node.Pos()\n\t\tnodeEnd := node.End()\n\n\t\t// fmt.Printf(\"visit(%T, %d, %d)\\n\", node, nodePos, nodeEnd) // debugging\n\n\t\t// Intersect [start, end) with interval of node.\n\t\tif start < nodePos {\n\t\t\tstart = nodePos\n\t\t}\n\t\tif end > nodeEnd {\n\t\t\tend = nodeEnd\n\t\t}\n\n\t\t// Find sole child that contains [start, end).\n\t\tchildren := childrenOf(node)\n\t\tl := len(children)\n\t\tfor i, child := range children {\n\t\t\t// [childPos, childEnd) is unaugmented interval of child.\n\t\t\tchildPos := child.Pos()\n\t\t\tchildEnd := child.End()\n\n\t\t\t// [augPos, augEnd) is whitespace-augmented interval of child.\n\t\t\taugPos := childPos\n\t\t\taugEnd := childEnd\n\t\t\tif i > 0 {\n\t\t\t\taugPos = children[i-1].End() // start of preceding whitespace\n\t\t\t}\n\t\t\tif i < l-1 {\n\t\t\t\tnextChildPos := children[i+1].Pos()\n\t\t\t\t// Does [start, end) lie between child and next child?\n\t\t\t\tif start >= augEnd && end <= nextChildPos {\n\t\t\t\t\treturn false // inexact match\n\t\t\t\t}\n\t\t\t\taugEnd = nextChildPos // end of following whitespace\n\t\t\t}\n\n\t\t\t// fmt.Printf(\"\\tchild %d: [%d..%d)\\tcontains interval [%d..%d)?\\n\",\n\t\t\t// \ti, augPos, augEnd, start, end) // debugging\n\n\t\t\t// Does augmented child strictly contain [start, end)?\n\t\t\tif augPos <= start && end <= augEnd {\n\t\t\t\tif is[tokenNode](child) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\t// childrenOf elides the FuncType node beneath FuncDecl.\n\t\t\t\t// Add it back here for TypeParams, Params, Results,\n\t\t\t\t// all FieldLists). But we don't add it back for the \"func\" token\n\t\t\t\t// even though it is the tree at FuncDecl.Type.Func.\n\t\t\t\tif decl, ok := node.(*ast.FuncDecl); ok {\n\t\t\t\t\tif fields, ok := child.(*ast.FieldList); ok && fields != decl.Recv {\n\t\t\t\t\t\tpath = append(path, decl.Type)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn visit(child)\n\t\t\t}\n\n\t\t\t// Does [start, end) overlap multiple children?\n\t\t\t// i.e. left-augmented child contains start\n\t\t\t// but LR-augmented child does not contain end.\n\t\t\tif start < childEnd && end > augEnd {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// No single child contained [start, end),\n\t\t// so node is the result.  Is it exact?\n\n\t\t// (It's tempting to put this condition before the\n\t\t// child loop, but it gives the wrong result in the\n\t\t// case where a node (e.g. ExprStmt) and its sole\n\t\t// child have equal intervals.)\n\t\tif start == nodePos && end == nodeEnd {\n\t\t\treturn true // exact match\n\t\t}\n\n\t\treturn false // inexact: overlaps multiple children\n\t}\n\n\t// Ensure [start,end) is nondecreasing.\n\tif start > end {\n\t\tstart, end = end, start\n\t}\n\n\tif start < root.End() && end > root.Pos() {\n\t\tif start == end {\n\t\t\tend = start + 1 // empty interval => interval of size 1\n\t\t}\n\t\texact = visit(root)\n\n\t\t// Reverse the path:\n\t\tfor i, l := 0, len(path); i < l/2; i++ {\n\t\t\tpath[i], path[l-1-i] = path[l-1-i], path[i]\n\t\t}\n\t} else {\n\t\t// Selection lies within whitespace preceding the\n\t\t// first (or following the last) declaration in the file.\n\t\t// The result nonetheless always includes the ast.File.\n\t\tpath = append(path, root)\n\t}\n\n\treturn\n}\n\n// tokenNode is a dummy implementation of ast.Node for a single token.\n// They are used transiently by PathEnclosingInterval but never escape\n// this package.\ntype tokenNode struct {\n\tpos token.Pos\n\tend token.Pos\n}\n\nfunc (n tokenNode) Pos() token.Pos {\n\treturn n.pos\n}\n\nfunc (n tokenNode) End() token.Pos {\n\treturn n.end\n}\n\nfunc tok(pos token.Pos, len int) ast.Node {\n\treturn tokenNode{pos, pos + token.Pos(len)}\n}\n\n// childrenOf returns the direct non-nil children of ast.Node n.\n// It may include fake ast.Node implementations for bare tokens.\n// it is not safe to call (e.g.) ast.Walk on such nodes.\nfunc childrenOf(n ast.Node) []ast.Node {\n\tvar children []ast.Node\n\n\t// First add nodes for all true subtrees.\n\tast.Inspect(n, func(node ast.Node) bool {\n\t\tif node == n { // push n\n\t\t\treturn true // recur\n\t\t}\n\t\tif node != nil { // push child\n\t\t\tchildren = append(children, node)\n\t\t}\n\t\treturn false // no recursion\n\t})\n\n\t// TODO(adonovan): be more careful about missing (!Pos.Valid)\n\t// tokens in trees produced from invalid input.\n\n\t// Then add fake Nodes for bare tokens.\n\tswitch n := n.(type) {\n\tcase *ast.ArrayType:\n\t\tchildren = append(children,\n\t\t\ttok(n.Lbrack, len(\"[\")),\n\t\t\ttok(n.Elt.End(), len(\"]\")))\n\n\tcase *ast.AssignStmt:\n\t\tchildren = append(children,\n\t\t\ttok(n.TokPos, len(n.Tok.String())))\n\n\tcase *ast.BasicLit:\n\t\tchildren = append(children,\n\t\t\ttok(n.ValuePos, len(n.Value)))\n\n\tcase *ast.BinaryExpr:\n\t\tchildren = append(children, tok(n.OpPos, len(n.Op.String())))\n\n\tcase *ast.BlockStmt:\n\t\tif n.Lbrace.IsValid() {\n\t\t\tchildren = append(children, tok(n.Lbrace, len(\"{\")))\n\t\t}\n\t\tif n.Rbrace.IsValid() {\n\t\t\tchildren = append(children, tok(n.Rbrace, len(\"}\")))\n\t\t}\n\n\tcase *ast.BranchStmt:\n\t\tchildren = append(children,\n\t\t\ttok(n.TokPos, len(n.Tok.String())))\n\n\tcase *ast.CallExpr:\n\t\tchildren = append(children,\n\t\t\ttok(n.Lparen, len(\"(\")),\n\t\t\ttok(n.Rparen, len(\")\")))\n\t\tif n.Ellipsis != 0 {\n\t\t\tchildren = append(children, tok(n.Ellipsis, len(\"...\")))\n\t\t}\n\n\tcase *ast.CaseClause:\n\t\tif n.List == nil {\n\t\t\tchildren = append(children,\n\t\t\t\ttok(n.Case, len(\"default\")))\n\t\t} else {\n\t\t\tchildren = append(children,\n\t\t\t\ttok(n.Case, len(\"case\")))\n\t\t}\n\t\tchildren = append(children, tok(n.Colon, len(\":\")))\n\n\tcase *ast.ChanType:\n\t\tswitch n.Dir {\n\t\tcase ast.RECV:\n\t\t\tchildren = append(children, tok(n.Begin, len(\"<-chan\")))\n\t\tcase ast.SEND:\n\t\t\tchildren = append(children, tok(n.Begin, len(\"chan<-\")))\n\t\tcase ast.RECV | ast.SEND:\n\t\t\tchildren = append(children, tok(n.Begin, len(\"chan\")))\n\t\t}\n\n\tcase *ast.CommClause:\n\t\tif n.Comm == nil {\n\t\t\tchildren = append(children,\n\t\t\t\ttok(n.Case, len(\"default\")))\n\t\t} else {\n\t\t\tchildren = append(children,\n\t\t\t\ttok(n.Case, len(\"case\")))\n\t\t}\n\t\tchildren = append(children, tok(n.Colon, len(\":\")))\n\n\tcase *ast.Comment:\n\t\t// nop\n\n\tcase *ast.CommentGroup:\n\t\t// nop\n\n\tcase *ast.CompositeLit:\n\t\tchildren = append(children,\n\t\t\ttok(n.Lbrace, len(\"{\")),\n\t\t\ttok(n.Rbrace, len(\"{\")))\n\n\tcase *ast.DeclStmt:\n\t\t// nop\n\n\tcase *ast.DeferStmt:\n\t\tchildren = append(children,\n\t\t\ttok(n.Defer, len(\"defer\")))\n\n\tcase *ast.Ellipsis:\n\t\tchildren = append(children,\n\t\t\ttok(n.Ellipsis, len(\"...\")))\n\n\tcase *ast.EmptyStmt:\n\t\t// nop\n\n\tcase *ast.ExprStmt:\n\t\t// nop\n\n\tcase *ast.Field:\n\t\t// TODO(adonovan): Field.{Doc,Comment,Tag}?\n\n\tcase *ast.FieldList:\n\t\tif n.Opening.IsValid() {\n\t\t\tchildren = append(children, tok(n.Opening, len(\"(\")))\n\t\t}\n\t\tif n.Closing.IsValid() {\n\t\t\tchildren = append(children, tok(n.Closing, len(\")\")))\n\t\t}\n\n\tcase *ast.File:\n\t\t// TODO test: Doc\n\t\tchildren = append(children,\n\t\t\ttok(n.Package, len(\"package\")))\n\n\tcase *ast.ForStmt:\n\t\tchildren = append(children,\n\t\t\ttok(n.For, len(\"for\")))\n\n\tcase *ast.FuncDecl:\n\t\t// TODO(adonovan): FuncDecl.Comment?\n\n\t\t// Uniquely, FuncDecl breaks the invariant that\n\t\t// preorder traversal yields tokens in lexical order:\n\t\t// in fact, FuncDecl.Recv precedes FuncDecl.Type.Func.\n\t\t//\n\t\t// As a workaround, we inline the case for FuncType\n\t\t// here and order things correctly.\n\t\t// We also need to insert the elided FuncType just\n\t\t// before the 'visit' recursion.\n\t\t//\n\t\tchildren = nil // discard ast.Walk(FuncDecl) info subtrees\n\t\tchildren = append(children, tok(n.Type.Func, len(\"func\")))\n\t\tif n.Recv != nil {\n\t\t\tchildren = append(children, n.Recv)\n\t\t}\n\t\tchildren = append(children, n.Name)\n\t\tif tparams := n.Type.TypeParams; tparams != nil {\n\t\t\tchildren = append(children, tparams)\n\t\t}\n\t\tif n.Type.Params != nil {\n\t\t\tchildren = append(children, n.Type.Params)\n\t\t}\n\t\tif n.Type.Results != nil {\n\t\t\tchildren = append(children, n.Type.Results)\n\t\t}\n\t\tif n.Body != nil {\n\t\t\tchildren = append(children, n.Body)\n\t\t}\n\n\tcase *ast.FuncLit:\n\t\t// nop\n\n\tcase *ast.FuncType:\n\t\tif n.Func != 0 {\n\t\t\tchildren = append(children,\n\t\t\t\ttok(n.Func, len(\"func\")))\n\t\t}\n\n\tcase *ast.GenDecl:\n\t\tchildren = append(children,\n\t\t\ttok(n.TokPos, len(n.Tok.String())))\n\t\tif n.Lparen != 0 {\n\t\t\tchildren = append(children,\n\t\t\t\ttok(n.Lparen, len(\"(\")),\n\t\t\t\ttok(n.Rparen, len(\")\")))\n\t\t}\n\n\tcase *ast.GoStmt:\n\t\tchildren = append(children,\n\t\t\ttok(n.Go, len(\"go\")))\n\n\tcase *ast.Ident:\n\t\tchildren = append(children,\n\t\t\ttok(n.NamePos, len(n.Name)))\n\n\tcase *ast.IfStmt:\n\t\tchildren = append(children,\n\t\t\ttok(n.If, len(\"if\")))\n\n\tcase *ast.ImportSpec:\n\t\t// TODO(adonovan): ImportSpec.{Doc,EndPos}?\n\n\tcase *ast.IncDecStmt:\n\t\tchildren = append(children,\n\t\t\ttok(n.TokPos, len(n.Tok.String())))\n\n\tcase *ast.IndexExpr:\n\t\tchildren = append(children,\n\t\t\ttok(n.Lbrack, len(\"[\")),\n\t\t\ttok(n.Rbrack, len(\"]\")))\n\n\tcase *ast.IndexListExpr:\n\t\tchildren = append(children,\n\t\t\ttok(n.Lbrack, len(\"[\")),\n\t\t\ttok(n.Rbrack, len(\"]\")))\n\n\tcase *ast.InterfaceType:\n\t\tchildren = append(children,\n\t\t\ttok(n.Interface, len(\"interface\")))\n\n\tcase *ast.KeyValueExpr:\n\t\tchildren = append(children,\n\t\t\ttok(n.Colon, len(\":\")))\n\n\tcase *ast.LabeledStmt:\n\t\tchildren = append(children,\n\t\t\ttok(n.Colon, len(\":\")))\n\n\tcase *ast.MapType:\n\t\tchildren = append(children,\n\t\t\ttok(n.Map, len(\"map\")))\n\n\tcase *ast.ParenExpr:\n\t\tchildren = append(children,\n\t\t\ttok(n.Lparen, len(\"(\")),\n\t\t\ttok(n.Rparen, len(\")\")))\n\n\tcase *ast.RangeStmt:\n\t\tchildren = append(children,\n\t\t\ttok(n.For, len(\"for\")),\n\t\t\ttok(n.TokPos, len(n.Tok.String())))\n\n\tcase *ast.ReturnStmt:\n\t\tchildren = append(children,\n\t\t\ttok(n.Return, len(\"return\")))\n\n\tcase *ast.SelectStmt:\n\t\tchildren = append(children,\n\t\t\ttok(n.Select, len(\"select\")))\n\n\tcase *ast.SelectorExpr:\n\t\t// nop\n\n\tcase *ast.SendStmt:\n\t\tchildren = append(children,\n\t\t\ttok(n.Arrow, len(\"<-\")))\n\n\tcase *ast.SliceExpr:\n\t\tchildren = append(children,\n\t\t\ttok(n.Lbrack, len(\"[\")),\n\t\t\ttok(n.Rbrack, len(\"]\")))\n\n\tcase *ast.StarExpr:\n\t\tchildren = append(children, tok(n.Star, len(\"*\")))\n\n\tcase *ast.StructType:\n\t\tchildren = append(children, tok(n.Struct, len(\"struct\")))\n\n\tcase *ast.SwitchStmt:\n\t\tchildren = append(children, tok(n.Switch, len(\"switch\")))\n\n\tcase *ast.TypeAssertExpr:\n\t\tchildren = append(children,\n\t\t\ttok(n.Lparen-1, len(\".\")),\n\t\t\ttok(n.Lparen, len(\"(\")),\n\t\t\ttok(n.Rparen, len(\")\")))\n\n\tcase *ast.TypeSpec:\n\t\t// TODO(adonovan): TypeSpec.{Doc,Comment}?\n\n\tcase *ast.TypeSwitchStmt:\n\t\tchildren = append(children, tok(n.Switch, len(\"switch\")))\n\n\tcase *ast.UnaryExpr:\n\t\tchildren = append(children, tok(n.OpPos, len(n.Op.String())))\n\n\tcase *ast.ValueSpec:\n\t\t// TODO(adonovan): ValueSpec.{Doc,Comment}?\n\n\tcase *ast.BadDecl, *ast.BadExpr, *ast.BadStmt:\n\t\t// nop\n\t}\n\n\t// TODO(adonovan): opt: merge the logic of ast.Inspect() into\n\t// the switch above so we can make interleaved callbacks for\n\t// both Nodes and Tokens in the right order and avoid the need\n\t// to sort.\n\tsort.Sort(byPos(children))\n\n\treturn children\n}\n\ntype byPos []ast.Node\n\nfunc (sl byPos) Len() int {\n\treturn len(sl)\n}\nfunc (sl byPos) Less(i, j int) bool {\n\treturn sl[i].Pos() < sl[j].Pos()\n}\nfunc (sl byPos) Swap(i, j int) {\n\tsl[i], sl[j] = sl[j], sl[i]\n}\n\n// NodeDescription returns a description of the concrete type of n suitable\n// for a user interface.\n//\n// TODO(adonovan): in some cases (e.g. Field, FieldList, Ident,\n// StarExpr) we could be much more specific given the path to the AST\n// root.  Perhaps we should do that.\nfunc NodeDescription(n ast.Node) string {\n\tswitch n := n.(type) {\n\tcase *ast.ArrayType:\n\t\treturn \"array type\"\n\tcase *ast.AssignStmt:\n\t\treturn \"assignment\"\n\tcase *ast.BadDecl:\n\t\treturn \"bad declaration\"\n\tcase *ast.BadExpr:\n\t\treturn \"bad expression\"\n\tcase *ast.BadStmt:\n\t\treturn \"bad statement\"\n\tcase *ast.BasicLit:\n\t\treturn \"basic literal\"\n\tcase *ast.BinaryExpr:\n\t\treturn fmt.Sprintf(\"binary %s operation\", n.Op)\n\tcase *ast.BlockStmt:\n\t\treturn \"block\"\n\tcase *ast.BranchStmt:\n\t\tswitch n.Tok {\n\t\tcase token.BREAK:\n\t\t\treturn \"break statement\"\n\t\tcase token.CONTINUE:\n\t\t\treturn \"continue statement\"\n\t\tcase token.GOTO:\n\t\t\treturn \"goto statement\"\n\t\tcase token.FALLTHROUGH:\n\t\t\treturn \"fall-through statement\"\n\t\t}\n\tcase *ast.CallExpr:\n\t\tif len(n.Args) == 1 && !n.Ellipsis.IsValid() {\n\t\t\treturn \"function call (or conversion)\"\n\t\t}\n\t\treturn \"function call\"\n\tcase *ast.CaseClause:\n\t\treturn \"case clause\"\n\tcase *ast.ChanType:\n\t\treturn \"channel type\"\n\tcase *ast.CommClause:\n\t\treturn \"communication clause\"\n\tcase *ast.Comment:\n\t\treturn \"comment\"\n\tcase *ast.CommentGroup:\n\t\treturn \"comment group\"\n\tcase *ast.CompositeLit:\n\t\treturn \"composite literal\"\n\tcase *ast.DeclStmt:\n\t\treturn NodeDescription(n.Decl) + \" statement\"\n\tcase *ast.DeferStmt:\n\t\treturn \"defer statement\"\n\tcase *ast.Ellipsis:\n\t\treturn \"ellipsis\"\n\tcase *ast.EmptyStmt:\n\t\treturn \"empty statement\"\n\tcase *ast.ExprStmt:\n\t\treturn \"expression statement\"\n\tcase *ast.Field:\n\t\t// Can be any of these:\n\t\t// struct {x, y int}  -- struct field(s)\n\t\t// struct {T}         -- anon struct field\n\t\t// interface {I}      -- interface embedding\n\t\t// interface {f()}    -- interface method\n\t\t// func (A) func(B) C -- receiver, param(s), result(s)\n\t\treturn \"field/method/parameter\"\n\tcase *ast.FieldList:\n\t\treturn \"field/method/parameter list\"\n\tcase *ast.File:\n\t\treturn \"source file\"\n\tcase *ast.ForStmt:\n\t\treturn \"for loop\"\n\tcase *ast.FuncDecl:\n\t\treturn \"function declaration\"\n\tcase *ast.FuncLit:\n\t\treturn \"function literal\"\n\tcase *ast.FuncType:\n\t\treturn \"function type\"\n\tcase *ast.GenDecl:\n\t\tswitch n.Tok {\n\t\tcase token.IMPORT:\n\t\t\treturn \"import declaration\"\n\t\tcase token.CONST:\n\t\t\treturn \"constant declaration\"\n\t\tcase token.TYPE:\n\t\t\treturn \"type declaration\"\n\t\tcase token.VAR:\n\t\t\treturn \"variable declaration\"\n\t\t}\n\tcase *ast.GoStmt:\n\t\treturn \"go statement\"\n\tcase *ast.Ident:\n\t\treturn \"identifier\"\n\tcase *ast.IfStmt:\n\t\treturn \"if statement\"\n\tcase *ast.ImportSpec:\n\t\treturn \"import specification\"\n\tcase *ast.IncDecStmt:\n\t\tif n.Tok == token.INC {\n\t\t\treturn \"increment statement\"\n\t\t}\n\t\treturn \"decrement statement\"\n\tcase *ast.IndexExpr:\n\t\treturn \"index expression\"\n\tcase *ast.IndexListExpr:\n\t\treturn \"index list expression\"\n\tcase *ast.InterfaceType:\n\t\treturn \"interface type\"\n\tcase *ast.KeyValueExpr:\n\t\treturn \"key/value association\"\n\tcase *ast.LabeledStmt:\n\t\treturn \"statement label\"\n\tcase *ast.MapType:\n\t\treturn \"map type\"\n\tcase *ast.Package:\n\t\treturn \"package\"\n\tcase *ast.ParenExpr:\n\t\treturn \"parenthesized \" + NodeDescription(n.X)\n\tcase *ast.RangeStmt:\n\t\treturn \"range loop\"\n\tcase *ast.ReturnStmt:\n\t\treturn \"return statement\"\n\tcase *ast.SelectStmt:\n\t\treturn \"select statement\"\n\tcase *ast.SelectorExpr:\n\t\treturn \"selector\"\n\tcase *ast.SendStmt:\n\t\treturn \"channel send\"\n\tcase *ast.SliceExpr:\n\t\treturn \"slice expression\"\n\tcase *ast.StarExpr:\n\t\treturn \"*-operation\" // load/store expr or pointer type\n\tcase *ast.StructType:\n\t\treturn \"struct type\"\n\tcase *ast.SwitchStmt:\n\t\treturn \"switch statement\"\n\tcase *ast.TypeAssertExpr:\n\t\treturn \"type assertion\"\n\tcase *ast.TypeSpec:\n\t\treturn \"type specification\"\n\tcase *ast.TypeSwitchStmt:\n\t\treturn \"type switch\"\n\tcase *ast.UnaryExpr:\n\t\treturn fmt.Sprintf(\"unary %s operation\", n.Op)\n\tcase *ast.ValueSpec:\n\t\treturn \"value specification\"\n\n\t}\n\tpanic(fmt.Sprintf(\"unexpected node type: %T\", n))\n}\n\nfunc is[T any](x any) bool {\n\t_, ok := x.(T)\n\treturn ok\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/go/ast/astutil/imports.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package astutil contains common utilities for working with the Go AST.\npackage astutil // import \"golang.org/x/tools/go/ast/astutil\"\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/token\"\n\t\"reflect\"\n\t\"slices\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// AddImport adds the import path to the file f, if absent.\nfunc AddImport(fset *token.FileSet, f *ast.File, path string) (added bool) {\n\treturn AddNamedImport(fset, f, \"\", path)\n}\n\n// AddNamedImport adds the import with the given name and path to the file f, if absent.\n// If name is not empty, it is used to rename the import.\n//\n// For example, calling\n//\n//\tAddNamedImport(fset, f, \"pathpkg\", \"path\")\n//\n// adds\n//\n//\timport pathpkg \"path\"\nfunc AddNamedImport(fset *token.FileSet, f *ast.File, name, path string) (added bool) {\n\tif imports(f, name, path) {\n\t\treturn false\n\t}\n\n\tnewImport := &ast.ImportSpec{\n\t\tPath: &ast.BasicLit{\n\t\t\tKind:  token.STRING,\n\t\t\tValue: strconv.Quote(path),\n\t\t},\n\t}\n\tif name != \"\" {\n\t\tnewImport.Name = &ast.Ident{Name: name}\n\t}\n\n\t// Find an import decl to add to.\n\t// The goal is to find an existing import\n\t// whose import path has the longest shared\n\t// prefix with path.\n\tvar (\n\t\tbestMatch  = -1         // length of longest shared prefix\n\t\tlastImport = -1         // index in f.Decls of the file's final import decl\n\t\timpDecl    *ast.GenDecl // import decl containing the best match\n\t\timpIndex   = -1         // spec index in impDecl containing the best match\n\n\t\tisThirdPartyPath = isThirdParty(path)\n\t)\n\tfor i, decl := range f.Decls {\n\t\tgen, ok := decl.(*ast.GenDecl)\n\t\tif ok && gen.Tok == token.IMPORT {\n\t\t\tlastImport = i\n\t\t\t// Do not add to import \"C\", to avoid disrupting the\n\t\t\t// association with its doc comment, breaking cgo.\n\t\t\tif declImports(gen, \"C\") {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Match an empty import decl if that's all that is available.\n\t\t\tif len(gen.Specs) == 0 && bestMatch == -1 {\n\t\t\t\timpDecl = gen\n\t\t\t}\n\n\t\t\t// Compute longest shared prefix with imports in this group and find best\n\t\t\t// matched import spec.\n\t\t\t// 1. Always prefer import spec with longest shared prefix.\n\t\t\t// 2. While match length is 0,\n\t\t\t// - for stdlib package: prefer first import spec.\n\t\t\t// - for third party package: prefer first third party import spec.\n\t\t\t// We cannot use last import spec as best match for third party package\n\t\t\t// because grouped imports are usually placed last by goimports -local\n\t\t\t// flag.\n\t\t\t// See issue #19190.\n\t\t\tseenAnyThirdParty := false\n\t\t\tfor j, spec := range gen.Specs {\n\t\t\t\timpspec := spec.(*ast.ImportSpec)\n\t\t\t\tp := importPath(impspec)\n\t\t\t\tn := matchLen(p, path)\n\t\t\t\tif n > bestMatch || (bestMatch == 0 && !seenAnyThirdParty && isThirdPartyPath) {\n\t\t\t\t\tbestMatch = n\n\t\t\t\t\timpDecl = gen\n\t\t\t\t\timpIndex = j\n\t\t\t\t}\n\t\t\t\tseenAnyThirdParty = seenAnyThirdParty || isThirdParty(p)\n\t\t\t}\n\t\t}\n\t}\n\n\t// If no import decl found, add one after the last import.\n\tif impDecl == nil {\n\t\timpDecl = &ast.GenDecl{\n\t\t\tTok: token.IMPORT,\n\t\t}\n\t\tif lastImport >= 0 {\n\t\t\timpDecl.TokPos = f.Decls[lastImport].End()\n\t\t} else {\n\t\t\t// There are no existing imports.\n\t\t\t// Our new import, preceded by a blank line,  goes after the package declaration\n\t\t\t// and after the comment, if any, that starts on the same line as the\n\t\t\t// package declaration.\n\t\t\timpDecl.TokPos = f.Package\n\n\t\t\tfile := fset.File(f.Package)\n\t\t\tpkgLine := file.Line(f.Package)\n\t\t\tfor _, c := range f.Comments {\n\t\t\t\tif file.Line(c.Pos()) > pkgLine {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// +2 for a blank line\n\t\t\t\timpDecl.TokPos = c.End() + 2\n\t\t\t}\n\t\t}\n\t\tf.Decls = append(f.Decls, nil)\n\t\tcopy(f.Decls[lastImport+2:], f.Decls[lastImport+1:])\n\t\tf.Decls[lastImport+1] = impDecl\n\t}\n\n\t// Insert new import at insertAt.\n\tinsertAt := 0\n\tif impIndex >= 0 {\n\t\t// insert after the found import\n\t\tinsertAt = impIndex + 1\n\t}\n\timpDecl.Specs = append(impDecl.Specs, nil)\n\tcopy(impDecl.Specs[insertAt+1:], impDecl.Specs[insertAt:])\n\timpDecl.Specs[insertAt] = newImport\n\tpos := impDecl.Pos()\n\tif insertAt > 0 {\n\t\t// If there is a comment after an existing import, preserve the comment\n\t\t// position by adding the new import after the comment.\n\t\tif spec, ok := impDecl.Specs[insertAt-1].(*ast.ImportSpec); ok && spec.Comment != nil {\n\t\t\tpos = spec.Comment.End()\n\t\t} else {\n\t\t\t// Assign same position as the previous import,\n\t\t\t// so that the sorter sees it as being in the same block.\n\t\t\tpos = impDecl.Specs[insertAt-1].Pos()\n\t\t}\n\t}\n\tif newImport.Name != nil {\n\t\tnewImport.Name.NamePos = pos\n\t}\n\tupdateBasicLitPos(newImport.Path, pos)\n\tnewImport.EndPos = pos\n\n\t// Clean up parens. impDecl contains at least one spec.\n\tif len(impDecl.Specs) == 1 {\n\t\t// Remove unneeded parens.\n\t\timpDecl.Lparen = token.NoPos\n\t} else if !impDecl.Lparen.IsValid() {\n\t\t// impDecl needs parens added.\n\t\timpDecl.Lparen = impDecl.Specs[0].Pos()\n\t}\n\n\tf.Imports = append(f.Imports, newImport)\n\n\tif len(f.Decls) <= 1 {\n\t\treturn true\n\t}\n\n\t// Merge all the import declarations into the first one.\n\tvar first *ast.GenDecl\n\tfor i := 0; i < len(f.Decls); i++ {\n\t\tdecl := f.Decls[i]\n\t\tgen, ok := decl.(*ast.GenDecl)\n\t\tif !ok || gen.Tok != token.IMPORT || declImports(gen, \"C\") {\n\t\t\tcontinue\n\t\t}\n\t\tif first == nil {\n\t\t\tfirst = gen\n\t\t\tcontinue // Don't touch the first one.\n\t\t}\n\t\t// We now know there is more than one package in this import\n\t\t// declaration. Ensure that it ends up parenthesized.\n\t\tfirst.Lparen = first.Pos()\n\t\t// Move the imports of the other import declaration to the first one.\n\t\tfor _, spec := range gen.Specs {\n\t\t\tupdateBasicLitPos(spec.(*ast.ImportSpec).Path, first.Pos())\n\t\t\tfirst.Specs = append(first.Specs, spec)\n\t\t}\n\t\tf.Decls = slices.Delete(f.Decls, i, i+1)\n\t\ti--\n\t}\n\n\treturn true\n}\n\nfunc isThirdParty(importPath string) bool {\n\t// Third party package import path usually contains \".\" (\".com\", \".org\", ...)\n\t// This logic is taken from golang.org/x/tools/imports package.\n\treturn strings.Contains(importPath, \".\")\n}\n\n// DeleteImport deletes the import path from the file f, if present.\n// If there are duplicate import declarations, all matching ones are deleted.\nfunc DeleteImport(fset *token.FileSet, f *ast.File, path string) (deleted bool) {\n\treturn DeleteNamedImport(fset, f, \"\", path)\n}\n\n// DeleteNamedImport deletes the import with the given name and path from the file f, if present.\n// If there are duplicate import declarations, all matching ones are deleted.\nfunc DeleteNamedImport(fset *token.FileSet, f *ast.File, name, path string) (deleted bool) {\n\tvar (\n\t\tdelspecs    = make(map[*ast.ImportSpec]bool)\n\t\tdelcomments = make(map[*ast.CommentGroup]bool)\n\t)\n\n\t// Find the import nodes that import path, if any.\n\tfor i := 0; i < len(f.Decls); i++ {\n\t\tgen, ok := f.Decls[i].(*ast.GenDecl)\n\t\tif !ok || gen.Tok != token.IMPORT {\n\t\t\tcontinue\n\t\t}\n\t\tfor j := 0; j < len(gen.Specs); j++ {\n\t\t\timpspec := gen.Specs[j].(*ast.ImportSpec)\n\t\t\tif importName(impspec) != name || importPath(impspec) != path {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// We found an import spec that imports path.\n\t\t\t// Delete it.\n\t\t\tdelspecs[impspec] = true\n\t\t\tdeleted = true\n\t\t\tgen.Specs = slices.Delete(gen.Specs, j, j+1)\n\n\t\t\t// If this was the last import spec in this decl,\n\t\t\t// delete the decl, too.\n\t\t\tif len(gen.Specs) == 0 {\n\t\t\t\tf.Decls = slices.Delete(f.Decls, i, i+1)\n\t\t\t\ti--\n\t\t\t\tbreak\n\t\t\t} else if len(gen.Specs) == 1 {\n\t\t\t\tif impspec.Doc != nil {\n\t\t\t\t\tdelcomments[impspec.Doc] = true\n\t\t\t\t}\n\t\t\t\tif impspec.Comment != nil {\n\t\t\t\t\tdelcomments[impspec.Comment] = true\n\t\t\t\t}\n\t\t\t\tfor _, cg := range f.Comments {\n\t\t\t\t\t// Found comment on the same line as the import spec.\n\t\t\t\t\tif cg.End() < impspec.Pos() && fset.Position(cg.End()).Line == fset.Position(impspec.Pos()).Line {\n\t\t\t\t\t\tdelcomments[cg] = true\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tspec := gen.Specs[0].(*ast.ImportSpec)\n\n\t\t\t\t// Move the documentation right after the import decl.\n\t\t\t\tif spec.Doc != nil {\n\t\t\t\t\tfor fset.Position(gen.TokPos).Line+1 < fset.Position(spec.Doc.Pos()).Line {\n\t\t\t\t\t\tfset.File(gen.TokPos).MergeLine(fset.Position(gen.TokPos).Line)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor _, cg := range f.Comments {\n\t\t\t\t\tif cg.End() < spec.Pos() && fset.Position(cg.End()).Line == fset.Position(spec.Pos()).Line {\n\t\t\t\t\t\tfor fset.Position(gen.TokPos).Line+1 < fset.Position(spec.Pos()).Line {\n\t\t\t\t\t\t\tfset.File(gen.TokPos).MergeLine(fset.Position(gen.TokPos).Line)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif j > 0 {\n\t\t\t\tlastImpspec := gen.Specs[j-1].(*ast.ImportSpec)\n\t\t\t\tlastLine := fset.PositionFor(lastImpspec.Path.ValuePos, false).Line\n\t\t\t\tline := fset.PositionFor(impspec.Path.ValuePos, false).Line\n\n\t\t\t\t// We deleted an entry but now there may be\n\t\t\t\t// a blank line-sized hole where the import was.\n\t\t\t\tif line-lastLine > 1 || !gen.Rparen.IsValid() {\n\t\t\t\t\t// There was a blank line immediately preceding the deleted import,\n\t\t\t\t\t// so there's no need to close the hole. The right parenthesis is\n\t\t\t\t\t// invalid after AddImport to an import statement without parenthesis.\n\t\t\t\t\t// Do nothing.\n\t\t\t\t} else if line != fset.File(gen.Rparen).LineCount() {\n\t\t\t\t\t// There was no blank line. Close the hole.\n\t\t\t\t\tfset.File(gen.Rparen).MergeLine(line)\n\t\t\t\t}\n\t\t\t}\n\t\t\tj--\n\t\t}\n\t}\n\n\t// Delete imports from f.Imports.\n\tbefore := len(f.Imports)\n\tf.Imports = slices.DeleteFunc(f.Imports, func(imp *ast.ImportSpec) bool {\n\t\t_, ok := delspecs[imp]\n\t\treturn ok\n\t})\n\tif len(f.Imports)+len(delspecs) != before {\n\t\t// This can happen when the AST is invalid (i.e. imports differ between f.Decls and f.Imports).\n\t\tpanic(fmt.Sprintf(\"deleted specs from Decls but not Imports: %v\", delspecs))\n\t}\n\n\t// Delete comments from f.Comments.\n\tf.Comments = slices.DeleteFunc(f.Comments, func(cg *ast.CommentGroup) bool {\n\t\t_, ok := delcomments[cg]\n\t\treturn ok\n\t})\n\n\treturn\n}\n\n// RewriteImport rewrites any import of path oldPath to path newPath.\nfunc RewriteImport(fset *token.FileSet, f *ast.File, oldPath, newPath string) (rewrote bool) {\n\tfor _, imp := range f.Imports {\n\t\tif importPath(imp) == oldPath {\n\t\t\trewrote = true\n\t\t\t// record old End, because the default is to compute\n\t\t\t// it using the length of imp.Path.Value.\n\t\t\timp.EndPos = imp.End()\n\t\t\timp.Path.Value = strconv.Quote(newPath)\n\t\t}\n\t}\n\treturn\n}\n\n// UsesImport reports whether a given import is used.\n// The provided File must have been parsed with syntactic object resolution\n// (not using go/parser.SkipObjectResolution).\nfunc UsesImport(f *ast.File, path string) (used bool) {\n\tif f.Scope == nil {\n\t\tpanic(\"file f was not parsed with syntactic object resolution\")\n\t}\n\tspec := importSpec(f, path)\n\tif spec == nil {\n\t\treturn\n\t}\n\n\tname := spec.Name.String()\n\tswitch name {\n\tcase \"<nil>\":\n\t\t// If the package name is not explicitly specified,\n\t\t// make an educated guess. This is not guaranteed to be correct.\n\t\tlastSlash := strings.LastIndex(path, \"/\")\n\t\tif lastSlash == -1 {\n\t\t\tname = path\n\t\t} else {\n\t\t\tname = path[lastSlash+1:]\n\t\t}\n\tcase \"_\", \".\":\n\t\t// Not sure if this import is used - err on the side of caution.\n\t\treturn true\n\t}\n\n\tast.Walk(visitFn(func(n ast.Node) {\n\t\tsel, ok := n.(*ast.SelectorExpr)\n\t\tif ok && isTopName(sel.X, name) {\n\t\t\tused = true\n\t\t}\n\t}), f)\n\n\treturn\n}\n\ntype visitFn func(node ast.Node)\n\nfunc (fn visitFn) Visit(node ast.Node) ast.Visitor {\n\tfn(node)\n\treturn fn\n}\n\n// imports reports whether f has an import with the specified name and path.\nfunc imports(f *ast.File, name, path string) bool {\n\tfor _, s := range f.Imports {\n\t\tif importName(s) == name && importPath(s) == path {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// importSpec returns the import spec if f imports path,\n// or nil otherwise.\nfunc importSpec(f *ast.File, path string) *ast.ImportSpec {\n\tfor _, s := range f.Imports {\n\t\tif importPath(s) == path {\n\t\t\treturn s\n\t\t}\n\t}\n\treturn nil\n}\n\n// importName returns the name of s,\n// or \"\" if the import is not named.\nfunc importName(s *ast.ImportSpec) string {\n\tif s.Name == nil {\n\t\treturn \"\"\n\t}\n\treturn s.Name.Name\n}\n\n// importPath returns the unquoted import path of s,\n// or \"\" if the path is not properly quoted.\nfunc importPath(s *ast.ImportSpec) string {\n\tt, err := strconv.Unquote(s.Path.Value)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\treturn t\n}\n\n// declImports reports whether gen contains an import of path.\nfunc declImports(gen *ast.GenDecl, path string) bool {\n\tif gen.Tok != token.IMPORT {\n\t\treturn false\n\t}\n\tfor _, spec := range gen.Specs {\n\t\timpspec := spec.(*ast.ImportSpec)\n\t\tif importPath(impspec) == path {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// matchLen returns the length of the longest path segment prefix shared by x and y.\nfunc matchLen(x, y string) int {\n\tn := 0\n\tfor i := 0; i < len(x) && i < len(y) && x[i] == y[i]; i++ {\n\t\tif x[i] == '/' {\n\t\t\tn++\n\t\t}\n\t}\n\treturn n\n}\n\n// isTopName returns true if n is a top-level unresolved identifier with the given name.\nfunc isTopName(n ast.Expr, name string) bool {\n\tid, ok := n.(*ast.Ident)\n\treturn ok && id.Name == name && id.Obj == nil\n}\n\n// Imports returns the file imports grouped by paragraph.\nfunc Imports(fset *token.FileSet, f *ast.File) [][]*ast.ImportSpec {\n\tvar groups [][]*ast.ImportSpec\n\n\tfor _, decl := range f.Decls {\n\t\tgenDecl, ok := decl.(*ast.GenDecl)\n\t\tif !ok || genDecl.Tok != token.IMPORT {\n\t\t\tbreak\n\t\t}\n\n\t\tgroup := []*ast.ImportSpec{}\n\n\t\tvar lastLine int\n\t\tfor _, spec := range genDecl.Specs {\n\t\t\timportSpec := spec.(*ast.ImportSpec)\n\t\t\tpos := importSpec.Path.ValuePos\n\t\t\tline := fset.Position(pos).Line\n\t\t\tif lastLine > 0 && pos > 0 && line-lastLine > 1 {\n\t\t\t\tgroups = append(groups, group)\n\t\t\t\tgroup = []*ast.ImportSpec{}\n\t\t\t}\n\t\t\tgroup = append(group, importSpec)\n\t\t\tlastLine = line\n\t\t}\n\t\tgroups = append(groups, group)\n\t}\n\n\treturn groups\n}\n\n// updateBasicLitPos updates lit.Pos,\n// ensuring that lit.End (if set) is displaced by the same amount.\n// (See https://go.dev/issue/76395.)\nfunc updateBasicLitPos(lit *ast.BasicLit, pos token.Pos) {\n\tlen := lit.End() - lit.Pos()\n\tlit.ValuePos = pos\n\t// TODO(adonovan): after go1.26, simplify to:\n\t//   lit.ValueEnd = pos + len\n\tv := reflect.ValueOf(lit).Elem().FieldByName(\"ValueEnd\")\n\tif v.IsValid() && v.Int() != 0 {\n\t\tv.SetInt(int64(pos + len))\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/go/ast/astutil/rewrite.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage astutil\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"reflect\"\n\t\"sort\"\n)\n\n// An ApplyFunc is invoked by Apply for each node n, even if n is nil,\n// before and/or after the node's children, using a Cursor describing\n// the current node and providing operations on it.\n//\n// The return value of ApplyFunc controls the syntax tree traversal.\n// See Apply for details.\ntype ApplyFunc func(*Cursor) bool\n\n// Apply traverses a syntax tree recursively, starting with root,\n// and calling pre and post for each node as described below.\n// Apply returns the syntax tree, possibly modified.\n//\n// If pre is not nil, it is called for each node before the node's\n// children are traversed (pre-order). If pre returns false, no\n// children are traversed, and post is not called for that node.\n//\n// If post is not nil, and a prior call of pre didn't return false,\n// post is called for each node after its children are traversed\n// (post-order). If post returns false, traversal is terminated and\n// Apply returns immediately.\n//\n// Only fields that refer to AST nodes are considered children;\n// i.e., token.Pos, Scopes, Objects, and fields of basic types\n// (strings, etc.) are ignored.\n//\n// Children are traversed in the order in which they appear in the\n// respective node's struct definition. A package's files are\n// traversed in the filenames' alphabetical order.\nfunc Apply(root ast.Node, pre, post ApplyFunc) (result ast.Node) {\n\tparent := &struct{ ast.Node }{root}\n\tdefer func() {\n\t\tif r := recover(); r != nil && r != abort {\n\t\t\tpanic(r)\n\t\t}\n\t\tresult = parent.Node\n\t}()\n\ta := &application{pre: pre, post: post}\n\ta.apply(parent, \"Node\", nil, root)\n\treturn\n}\n\nvar abort = new(int) // singleton, to signal termination of Apply\n\n// A Cursor describes a node encountered during Apply.\n// Information about the node and its parent is available\n// from the Node, Parent, Name, and Index methods.\n//\n// If p is a variable of type and value of the current parent node\n// c.Parent(), and f is the field identifier with name c.Name(),\n// the following invariants hold:\n//\n//\tp.f            == c.Node()  if c.Index() <  0\n//\tp.f[c.Index()] == c.Node()  if c.Index() >= 0\n//\n// The methods Replace, Delete, InsertBefore, and InsertAfter\n// can be used to change the AST without disrupting Apply.\n//\n// This type is not to be confused with [inspector.Cursor] from\n// package [golang.org/x/tools/go/ast/inspector], which provides\n// stateless navigation of immutable syntax trees.\ntype Cursor struct {\n\tparent ast.Node\n\tname   string\n\titer   *iterator // valid if non-nil\n\tnode   ast.Node\n}\n\n// Node returns the current Node.\nfunc (c *Cursor) Node() ast.Node { return c.node }\n\n// Parent returns the parent of the current Node.\nfunc (c *Cursor) Parent() ast.Node { return c.parent }\n\n// Name returns the name of the parent Node field that contains the current Node.\n// If the parent is a *ast.Package and the current Node is a *ast.File, Name returns\n// the filename for the current Node.\nfunc (c *Cursor) Name() string { return c.name }\n\n// Index reports the index >= 0 of the current Node in the slice of Nodes that\n// contains it, or a value < 0 if the current Node is not part of a slice.\n// The index of the current node changes if InsertBefore is called while\n// processing the current node.\nfunc (c *Cursor) Index() int {\n\tif c.iter != nil {\n\t\treturn c.iter.index\n\t}\n\treturn -1\n}\n\n// field returns the current node's parent field value.\nfunc (c *Cursor) field() reflect.Value {\n\treturn reflect.Indirect(reflect.ValueOf(c.parent)).FieldByName(c.name)\n}\n\n// Replace replaces the current Node with n.\n// The replacement node is not walked by Apply.\nfunc (c *Cursor) Replace(n ast.Node) {\n\tif _, ok := c.node.(*ast.File); ok {\n\t\tfile, ok := n.(*ast.File)\n\t\tif !ok {\n\t\t\tpanic(\"attempt to replace *ast.File with non-*ast.File\")\n\t\t}\n\t\tc.parent.(*ast.Package).Files[c.name] = file\n\t\treturn\n\t}\n\n\tv := c.field()\n\tif i := c.Index(); i >= 0 {\n\t\tv = v.Index(i)\n\t}\n\tv.Set(reflect.ValueOf(n))\n}\n\n// Delete deletes the current Node from its containing slice.\n// If the current Node is not part of a slice, Delete panics.\n// As a special case, if the current node is a package file,\n// Delete removes it from the package's Files map.\nfunc (c *Cursor) Delete() {\n\tif _, ok := c.node.(*ast.File); ok {\n\t\tdelete(c.parent.(*ast.Package).Files, c.name)\n\t\treturn\n\t}\n\n\ti := c.Index()\n\tif i < 0 {\n\t\tpanic(\"Delete node not contained in slice\")\n\t}\n\tv := c.field()\n\tl := v.Len()\n\treflect.Copy(v.Slice(i, l), v.Slice(i+1, l))\n\tv.Index(l - 1).Set(reflect.Zero(v.Type().Elem()))\n\tv.SetLen(l - 1)\n\tc.iter.step--\n}\n\n// InsertAfter inserts n after the current Node in its containing slice.\n// If the current Node is not part of a slice, InsertAfter panics.\n// Apply does not walk n.\nfunc (c *Cursor) InsertAfter(n ast.Node) {\n\ti := c.Index()\n\tif i < 0 {\n\t\tpanic(\"InsertAfter node not contained in slice\")\n\t}\n\tv := c.field()\n\tv.Set(reflect.Append(v, reflect.Zero(v.Type().Elem())))\n\tl := v.Len()\n\treflect.Copy(v.Slice(i+2, l), v.Slice(i+1, l))\n\tv.Index(i + 1).Set(reflect.ValueOf(n))\n\tc.iter.step++\n}\n\n// InsertBefore inserts n before the current Node in its containing slice.\n// If the current Node is not part of a slice, InsertBefore panics.\n// Apply will not walk n.\nfunc (c *Cursor) InsertBefore(n ast.Node) {\n\ti := c.Index()\n\tif i < 0 {\n\t\tpanic(\"InsertBefore node not contained in slice\")\n\t}\n\tv := c.field()\n\tv.Set(reflect.Append(v, reflect.Zero(v.Type().Elem())))\n\tl := v.Len()\n\treflect.Copy(v.Slice(i+1, l), v.Slice(i, l))\n\tv.Index(i).Set(reflect.ValueOf(n))\n\tc.iter.index++\n}\n\n// application carries all the shared data so we can pass it around cheaply.\ntype application struct {\n\tpre, post ApplyFunc\n\tcursor    Cursor\n\titer      iterator\n}\n\nfunc (a *application) apply(parent ast.Node, name string, iter *iterator, n ast.Node) {\n\t// convert typed nil into untyped nil\n\tif v := reflect.ValueOf(n); v.Kind() == reflect.Pointer && v.IsNil() {\n\t\tn = nil\n\t}\n\n\t// avoid heap-allocating a new cursor for each apply call; reuse a.cursor instead\n\tsaved := a.cursor\n\ta.cursor.parent = parent\n\ta.cursor.name = name\n\ta.cursor.iter = iter\n\ta.cursor.node = n\n\n\tif a.pre != nil && !a.pre(&a.cursor) {\n\t\ta.cursor = saved\n\t\treturn\n\t}\n\n\t// walk children\n\t// (the order of the cases matches the order of the corresponding node types in go/ast)\n\tswitch n := n.(type) {\n\tcase nil:\n\t\t// nothing to do\n\n\t// Comments and fields\n\tcase *ast.Comment:\n\t\t// nothing to do\n\n\tcase *ast.CommentGroup:\n\t\tif n != nil {\n\t\t\ta.applyList(n, \"List\")\n\t\t}\n\n\tcase *ast.Field:\n\t\ta.apply(n, \"Doc\", nil, n.Doc)\n\t\ta.applyList(n, \"Names\")\n\t\ta.apply(n, \"Type\", nil, n.Type)\n\t\ta.apply(n, \"Tag\", nil, n.Tag)\n\t\ta.apply(n, \"Comment\", nil, n.Comment)\n\n\tcase *ast.FieldList:\n\t\ta.applyList(n, \"List\")\n\n\t// Expressions\n\tcase *ast.BadExpr, *ast.Ident, *ast.BasicLit:\n\t\t// nothing to do\n\n\tcase *ast.Ellipsis:\n\t\ta.apply(n, \"Elt\", nil, n.Elt)\n\n\tcase *ast.FuncLit:\n\t\ta.apply(n, \"Type\", nil, n.Type)\n\t\ta.apply(n, \"Body\", nil, n.Body)\n\n\tcase *ast.CompositeLit:\n\t\ta.apply(n, \"Type\", nil, n.Type)\n\t\ta.applyList(n, \"Elts\")\n\n\tcase *ast.ParenExpr:\n\t\ta.apply(n, \"X\", nil, n.X)\n\n\tcase *ast.SelectorExpr:\n\t\ta.apply(n, \"X\", nil, n.X)\n\t\ta.apply(n, \"Sel\", nil, n.Sel)\n\n\tcase *ast.IndexExpr:\n\t\ta.apply(n, \"X\", nil, n.X)\n\t\ta.apply(n, \"Index\", nil, n.Index)\n\n\tcase *ast.IndexListExpr:\n\t\ta.apply(n, \"X\", nil, n.X)\n\t\ta.applyList(n, \"Indices\")\n\n\tcase *ast.SliceExpr:\n\t\ta.apply(n, \"X\", nil, n.X)\n\t\ta.apply(n, \"Low\", nil, n.Low)\n\t\ta.apply(n, \"High\", nil, n.High)\n\t\ta.apply(n, \"Max\", nil, n.Max)\n\n\tcase *ast.TypeAssertExpr:\n\t\ta.apply(n, \"X\", nil, n.X)\n\t\ta.apply(n, \"Type\", nil, n.Type)\n\n\tcase *ast.CallExpr:\n\t\ta.apply(n, \"Fun\", nil, n.Fun)\n\t\ta.applyList(n, \"Args\")\n\n\tcase *ast.StarExpr:\n\t\ta.apply(n, \"X\", nil, n.X)\n\n\tcase *ast.UnaryExpr:\n\t\ta.apply(n, \"X\", nil, n.X)\n\n\tcase *ast.BinaryExpr:\n\t\ta.apply(n, \"X\", nil, n.X)\n\t\ta.apply(n, \"Y\", nil, n.Y)\n\n\tcase *ast.KeyValueExpr:\n\t\ta.apply(n, \"Key\", nil, n.Key)\n\t\ta.apply(n, \"Value\", nil, n.Value)\n\n\t// Types\n\tcase *ast.ArrayType:\n\t\ta.apply(n, \"Len\", nil, n.Len)\n\t\ta.apply(n, \"Elt\", nil, n.Elt)\n\n\tcase *ast.StructType:\n\t\ta.apply(n, \"Fields\", nil, n.Fields)\n\n\tcase *ast.FuncType:\n\t\tif tparams := n.TypeParams; tparams != nil {\n\t\t\ta.apply(n, \"TypeParams\", nil, tparams)\n\t\t}\n\t\ta.apply(n, \"Params\", nil, n.Params)\n\t\ta.apply(n, \"Results\", nil, n.Results)\n\n\tcase *ast.InterfaceType:\n\t\ta.apply(n, \"Methods\", nil, n.Methods)\n\n\tcase *ast.MapType:\n\t\ta.apply(n, \"Key\", nil, n.Key)\n\t\ta.apply(n, \"Value\", nil, n.Value)\n\n\tcase *ast.ChanType:\n\t\ta.apply(n, \"Value\", nil, n.Value)\n\n\t// Statements\n\tcase *ast.BadStmt:\n\t\t// nothing to do\n\n\tcase *ast.DeclStmt:\n\t\ta.apply(n, \"Decl\", nil, n.Decl)\n\n\tcase *ast.EmptyStmt:\n\t\t// nothing to do\n\n\tcase *ast.LabeledStmt:\n\t\ta.apply(n, \"Label\", nil, n.Label)\n\t\ta.apply(n, \"Stmt\", nil, n.Stmt)\n\n\tcase *ast.ExprStmt:\n\t\ta.apply(n, \"X\", nil, n.X)\n\n\tcase *ast.SendStmt:\n\t\ta.apply(n, \"Chan\", nil, n.Chan)\n\t\ta.apply(n, \"Value\", nil, n.Value)\n\n\tcase *ast.IncDecStmt:\n\t\ta.apply(n, \"X\", nil, n.X)\n\n\tcase *ast.AssignStmt:\n\t\ta.applyList(n, \"Lhs\")\n\t\ta.applyList(n, \"Rhs\")\n\n\tcase *ast.GoStmt:\n\t\ta.apply(n, \"Call\", nil, n.Call)\n\n\tcase *ast.DeferStmt:\n\t\ta.apply(n, \"Call\", nil, n.Call)\n\n\tcase *ast.ReturnStmt:\n\t\ta.applyList(n, \"Results\")\n\n\tcase *ast.BranchStmt:\n\t\ta.apply(n, \"Label\", nil, n.Label)\n\n\tcase *ast.BlockStmt:\n\t\ta.applyList(n, \"List\")\n\n\tcase *ast.IfStmt:\n\t\ta.apply(n, \"Init\", nil, n.Init)\n\t\ta.apply(n, \"Cond\", nil, n.Cond)\n\t\ta.apply(n, \"Body\", nil, n.Body)\n\t\ta.apply(n, \"Else\", nil, n.Else)\n\n\tcase *ast.CaseClause:\n\t\ta.applyList(n, \"List\")\n\t\ta.applyList(n, \"Body\")\n\n\tcase *ast.SwitchStmt:\n\t\ta.apply(n, \"Init\", nil, n.Init)\n\t\ta.apply(n, \"Tag\", nil, n.Tag)\n\t\ta.apply(n, \"Body\", nil, n.Body)\n\n\tcase *ast.TypeSwitchStmt:\n\t\ta.apply(n, \"Init\", nil, n.Init)\n\t\ta.apply(n, \"Assign\", nil, n.Assign)\n\t\ta.apply(n, \"Body\", nil, n.Body)\n\n\tcase *ast.CommClause:\n\t\ta.apply(n, \"Comm\", nil, n.Comm)\n\t\ta.applyList(n, \"Body\")\n\n\tcase *ast.SelectStmt:\n\t\ta.apply(n, \"Body\", nil, n.Body)\n\n\tcase *ast.ForStmt:\n\t\ta.apply(n, \"Init\", nil, n.Init)\n\t\ta.apply(n, \"Cond\", nil, n.Cond)\n\t\ta.apply(n, \"Post\", nil, n.Post)\n\t\ta.apply(n, \"Body\", nil, n.Body)\n\n\tcase *ast.RangeStmt:\n\t\ta.apply(n, \"Key\", nil, n.Key)\n\t\ta.apply(n, \"Value\", nil, n.Value)\n\t\ta.apply(n, \"X\", nil, n.X)\n\t\ta.apply(n, \"Body\", nil, n.Body)\n\n\t// Declarations\n\tcase *ast.ImportSpec:\n\t\ta.apply(n, \"Doc\", nil, n.Doc)\n\t\ta.apply(n, \"Name\", nil, n.Name)\n\t\ta.apply(n, \"Path\", nil, n.Path)\n\t\ta.apply(n, \"Comment\", nil, n.Comment)\n\n\tcase *ast.ValueSpec:\n\t\ta.apply(n, \"Doc\", nil, n.Doc)\n\t\ta.applyList(n, \"Names\")\n\t\ta.apply(n, \"Type\", nil, n.Type)\n\t\ta.applyList(n, \"Values\")\n\t\ta.apply(n, \"Comment\", nil, n.Comment)\n\n\tcase *ast.TypeSpec:\n\t\ta.apply(n, \"Doc\", nil, n.Doc)\n\t\ta.apply(n, \"Name\", nil, n.Name)\n\t\tif tparams := n.TypeParams; tparams != nil {\n\t\t\ta.apply(n, \"TypeParams\", nil, tparams)\n\t\t}\n\t\ta.apply(n, \"Type\", nil, n.Type)\n\t\ta.apply(n, \"Comment\", nil, n.Comment)\n\n\tcase *ast.BadDecl:\n\t\t// nothing to do\n\n\tcase *ast.GenDecl:\n\t\ta.apply(n, \"Doc\", nil, n.Doc)\n\t\ta.applyList(n, \"Specs\")\n\n\tcase *ast.FuncDecl:\n\t\ta.apply(n, \"Doc\", nil, n.Doc)\n\t\ta.apply(n, \"Recv\", nil, n.Recv)\n\t\ta.apply(n, \"Name\", nil, n.Name)\n\t\ta.apply(n, \"Type\", nil, n.Type)\n\t\ta.apply(n, \"Body\", nil, n.Body)\n\n\t// Files and packages\n\tcase *ast.File:\n\t\ta.apply(n, \"Doc\", nil, n.Doc)\n\t\ta.apply(n, \"Name\", nil, n.Name)\n\t\ta.applyList(n, \"Decls\")\n\t\t// Don't walk n.Comments; they have either been walked already if\n\t\t// they are Doc comments, or they can be easily walked explicitly.\n\n\tcase *ast.Package:\n\t\t// collect and sort names for reproducible behavior\n\t\tvar names []string\n\t\tfor name := range n.Files {\n\t\t\tnames = append(names, name)\n\t\t}\n\t\tsort.Strings(names)\n\t\tfor _, name := range names {\n\t\t\ta.apply(n, name, nil, n.Files[name])\n\t\t}\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"Apply: unexpected node type %T\", n))\n\t}\n\n\tif a.post != nil && !a.post(&a.cursor) {\n\t\tpanic(abort)\n\t}\n\n\ta.cursor = saved\n}\n\n// An iterator controls iteration over a slice of nodes.\ntype iterator struct {\n\tindex, step int\n}\n\nfunc (a *application) applyList(parent ast.Node, name string) {\n\t// avoid heap-allocating a new iterator for each applyList call; reuse a.iter instead\n\tsaved := a.iter\n\ta.iter.index = 0\n\tfor {\n\t\t// must reload parent.name each time, since cursor modifications might change it\n\t\tv := reflect.Indirect(reflect.ValueOf(parent)).FieldByName(name)\n\t\tif a.iter.index >= v.Len() {\n\t\t\tbreak\n\t\t}\n\n\t\t// element x may be nil in a bad AST - be cautious\n\t\tvar x ast.Node\n\t\tif e := v.Index(a.iter.index); e.IsValid() {\n\t\t\tx = e.Interface().(ast.Node)\n\t\t}\n\n\t\ta.iter.step = 1\n\t\ta.apply(parent, name, &a.iter, x)\n\t\ta.iter.index += a.iter.step\n\t}\n\ta.iter = saved\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/go/ast/astutil/util.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage astutil\n\nimport \"go/ast\"\n\n// Unparen returns e with any enclosing parentheses stripped.\n// Deprecated: use [ast.Unparen].\n//\n//go:fix inline\nfunc Unparen(e ast.Expr) ast.Expr { return ast.Unparen(e) }\n"
  },
  {
    "path": "vendor/golang.org/x/tools/imports/forward.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package imports implements a Go pretty-printer (like package \"go/format\")\n// that also adds or removes import statements as necessary.\npackage imports // import \"golang.org/x/tools/imports\"\n\nimport (\n\t\"log\"\n\t\"os\"\n\n\t\"golang.org/x/tools/internal/gocommand\"\n\tintimp \"golang.org/x/tools/internal/imports\"\n)\n\n// Options specifies options for processing files.\ntype Options struct {\n\tFragment  bool // Accept fragment of a source file (no package statement)\n\tAllErrors bool // Report all errors (not just the first 10 on different lines)\n\n\tComments  bool // Print comments (true if nil *Options provided)\n\tTabIndent bool // Use tabs for indent (true if nil *Options provided)\n\tTabWidth  int  // Tab width (8 if nil *Options provided)\n\n\tFormatOnly bool // Disable the insertion and deletion of imports\n}\n\n// Debug controls verbose logging.\nvar Debug = false\n\n// LocalPrefix is a comma-separated string of import path prefixes, which, if\n// set, instructs Process to sort the import paths with the given prefixes\n// into another group after 3rd-party packages.\nvar LocalPrefix string\n\n// Process formats and adjusts imports for the provided file.\n// If opt is nil the defaults are used, and if src is nil the source\n// is read from the filesystem.\n//\n// Note that filename's directory influences which imports can be chosen,\n// so it is important that filename be accurate.\n// To process data “as if” it were in filename, pass the data as a non-nil src.\nfunc Process(filename string, src []byte, opt *Options) ([]byte, error) {\n\tvar err error\n\tif src == nil {\n\t\tsrc, err = os.ReadFile(filename)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif opt == nil {\n\t\topt = &Options{Comments: true, TabIndent: true, TabWidth: 8}\n\t}\n\tintopt := &intimp.Options{\n\t\tEnv: &intimp.ProcessEnv{\n\t\t\tGocmdRunner: &gocommand.Runner{},\n\t\t},\n\t\tLocalPrefix: LocalPrefix,\n\t\tAllErrors:   opt.AllErrors,\n\t\tComments:    opt.Comments,\n\t\tFormatOnly:  opt.FormatOnly,\n\t\tFragment:    opt.Fragment,\n\t\tTabIndent:   opt.TabIndent,\n\t\tTabWidth:    opt.TabWidth,\n\t}\n\tif Debug {\n\t\tintopt.Env.Logf = log.Printf\n\t}\n\treturn intimp.Process(filename, src, intopt)\n}\n\n// VendorlessPath returns the devendorized version of the import path ipath.\n// For example, VendorlessPath(\"foo/barbendor/a/b\") return \"a/b\".\nfunc VendorlessPath(ipath string) string {\n\treturn intimp.VendorlessPath(ipath)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/event/core/event.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package core provides support for event based telemetry.\npackage core\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"golang.org/x/tools/internal/event/label\"\n)\n\n// Event holds the information about an event of note that occurred.\ntype Event struct {\n\tat time.Time\n\n\t// As events are often on the stack, storing the first few labels directly\n\t// in the event can avoid an allocation at all for the very common cases of\n\t// simple events.\n\t// The length needs to be large enough to cope with the majority of events\n\t// but no so large as to cause undue stack pressure.\n\t// A log message with two values will use 3 labels (one for each value and\n\t// one for the message itself).\n\n\tstatic  [3]label.Label // inline storage for the first few labels\n\tdynamic []label.Label  // dynamically sized storage for remaining labels\n}\n\nfunc (ev Event) At() time.Time { return ev.at }\n\nfunc (ev Event) Format(f fmt.State, r rune) {\n\tif !ev.at.IsZero() {\n\t\tfmt.Fprint(f, ev.at.Format(\"2006/01/02 15:04:05 \"))\n\t}\n\tfor index := 0; ev.Valid(index); index++ {\n\t\tif l := ev.Label(index); l.Valid() {\n\t\t\tfmt.Fprintf(f, \"\\n\\t%v\", l)\n\t\t}\n\t}\n}\n\nfunc (ev Event) Valid(index int) bool {\n\treturn index >= 0 && index < len(ev.static)+len(ev.dynamic)\n}\n\nfunc (ev Event) Label(index int) label.Label {\n\tif index < len(ev.static) {\n\t\treturn ev.static[index]\n\t}\n\treturn ev.dynamic[index-len(ev.static)]\n}\n\nfunc (ev Event) Find(key label.Key) label.Label {\n\tfor _, l := range ev.static {\n\t\tif l.Key() == key {\n\t\t\treturn l\n\t\t}\n\t}\n\tfor _, l := range ev.dynamic {\n\t\tif l.Key() == key {\n\t\t\treturn l\n\t\t}\n\t}\n\treturn label.Label{}\n}\n\nfunc MakeEvent(static [3]label.Label, labels []label.Label) Event {\n\treturn Event{\n\t\tstatic:  static,\n\t\tdynamic: labels,\n\t}\n}\n\n// CloneEvent event returns a copy of the event with the time adjusted to at.\nfunc CloneEvent(ev Event, at time.Time) Event {\n\tev.at = at\n\treturn ev\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/event/core/export.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage core\n\nimport (\n\t\"context\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"golang.org/x/tools/internal/event/label\"\n)\n\n// Exporter is a function that handles events.\n// It may return a modified context and event.\ntype Exporter func(context.Context, Event, label.Map) context.Context\n\nvar exporter atomic.Pointer[Exporter]\n\n// SetExporter sets the global exporter function that handles all events.\n// The exporter is called synchronously from the event call site, so it should\n// return quickly so as not to hold up user code.\nfunc SetExporter(e Exporter) {\n\tif e == nil {\n\t\t// &e is always valid, and so p is always valid, but for the early abort\n\t\t// of ProcessEvent to be efficient it needs to make the nil check on the\n\t\t// pointer without having to dereference it, so we make the nil function\n\t\t// also a nil pointer\n\t\texporter.Store(nil)\n\t} else {\n\t\texporter.Store(&e)\n\t}\n}\n\n// deliver is called to deliver an event to the supplied exporter.\n// it will fill in the time.\nfunc deliver(ctx context.Context, exporter Exporter, ev Event) context.Context {\n\t// add the current time to the event\n\tev.at = time.Now()\n\t// hand the event off to the current exporter\n\treturn exporter(ctx, ev, ev)\n}\n\n// Export is called to deliver an event to the global exporter if set.\nfunc Export(ctx context.Context, ev Event) context.Context {\n\t// get the global exporter and abort early if there is not one\n\texporterPtr := exporter.Load()\n\tif exporterPtr == nil {\n\t\treturn ctx\n\t}\n\treturn deliver(ctx, *exporterPtr, ev)\n}\n\n// ExportPair is called to deliver a start event to the supplied exporter.\n// It also returns a function that will deliver the end event to the same\n// exporter.\n// It will fill in the time.\nfunc ExportPair(ctx context.Context, begin, end Event) (context.Context, func()) {\n\t// get the global exporter and abort early if there is not one\n\texporterPtr := exporter.Load()\n\tif exporterPtr == nil {\n\t\treturn ctx, func() {}\n\t}\n\tctx = deliver(ctx, *exporterPtr, begin)\n\treturn ctx, func() { deliver(ctx, *exporterPtr, end) }\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/event/core/fast.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage core\n\nimport (\n\t\"context\"\n\n\t\"golang.org/x/tools/internal/event/keys\"\n\t\"golang.org/x/tools/internal/event/label\"\n)\n\n// Log1 takes a message and one label delivers a log event to the exporter.\n// It is a customized version of Print that is faster and does no allocation.\nfunc Log1(ctx context.Context, message string, t1 label.Label) {\n\tExport(ctx, MakeEvent([3]label.Label{\n\t\tkeys.Msg.Of(message),\n\t\tt1,\n\t}, nil))\n}\n\n// Log2 takes a message and two labels and delivers a log event to the exporter.\n// It is a customized version of Print that is faster and does no allocation.\nfunc Log2(ctx context.Context, message string, t1 label.Label, t2 label.Label) {\n\tExport(ctx, MakeEvent([3]label.Label{\n\t\tkeys.Msg.Of(message),\n\t\tt1,\n\t\tt2,\n\t}, nil))\n}\n\n// Metric1 sends a label event to the exporter with the supplied labels.\nfunc Metric1(ctx context.Context, t1 label.Label) context.Context {\n\treturn Export(ctx, MakeEvent([3]label.Label{\n\t\tkeys.Metric.New(),\n\t\tt1,\n\t}, nil))\n}\n\n// Metric2 sends a label event to the exporter with the supplied labels.\nfunc Metric2(ctx context.Context, t1, t2 label.Label) context.Context {\n\treturn Export(ctx, MakeEvent([3]label.Label{\n\t\tkeys.Metric.New(),\n\t\tt1,\n\t\tt2,\n\t}, nil))\n}\n\n// Start1 sends a span start event with the supplied label list to the exporter.\n// It also returns a function that will end the span, which should normally be\n// deferred.\nfunc Start1(ctx context.Context, name string, t1 label.Label) (context.Context, func()) {\n\treturn ExportPair(ctx,\n\t\tMakeEvent([3]label.Label{\n\t\t\tkeys.Start.Of(name),\n\t\t\tt1,\n\t\t}, nil),\n\t\tMakeEvent([3]label.Label{\n\t\t\tkeys.End.New(),\n\t\t}, nil))\n}\n\n// Start2 sends a span start event with the supplied label list to the exporter.\n// It also returns a function that will end the span, which should normally be\n// deferred.\nfunc Start2(ctx context.Context, name string, t1, t2 label.Label) (context.Context, func()) {\n\treturn ExportPair(ctx,\n\t\tMakeEvent([3]label.Label{\n\t\t\tkeys.Start.Of(name),\n\t\t\tt1,\n\t\t\tt2,\n\t\t}, nil),\n\t\tMakeEvent([3]label.Label{\n\t\t\tkeys.End.New(),\n\t\t}, nil))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/event/doc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package event provides a set of packages that cover the main\n// concepts of telemetry in an implementation agnostic way.\npackage event\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/event/event.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage event\n\nimport (\n\t\"context\"\n\n\t\"golang.org/x/tools/internal/event/core\"\n\t\"golang.org/x/tools/internal/event/keys\"\n\t\"golang.org/x/tools/internal/event/label\"\n)\n\n// Exporter is a function that handles events.\n// It may return a modified context and event.\ntype Exporter func(context.Context, core.Event, label.Map) context.Context\n\n// SetExporter sets the global exporter function that handles all events.\n// The exporter is called synchronously from the event call site, so it should\n// return quickly so as not to hold up user code.\nfunc SetExporter(e Exporter) {\n\tcore.SetExporter(core.Exporter(e))\n}\n\n// Log takes a message and a label list and combines them into a single event\n// before delivering them to the exporter.\nfunc Log(ctx context.Context, message string, labels ...label.Label) {\n\tcore.Export(ctx, core.MakeEvent([3]label.Label{\n\t\tkeys.Msg.Of(message),\n\t}, labels))\n}\n\n// IsLog returns true if the event was built by the Log function.\n// It is intended to be used in exporters to identify the semantics of the\n// event when deciding what to do with it.\nfunc IsLog(ev core.Event) bool {\n\treturn ev.Label(0).Key() == keys.Msg\n}\n\n// Error takes a message and a label list and combines them into a single event\n// before delivering them to the exporter. It captures the error in the\n// delivered event.\nfunc Error(ctx context.Context, message string, err error, labels ...label.Label) {\n\tcore.Export(ctx, core.MakeEvent([3]label.Label{\n\t\tkeys.Msg.Of(message),\n\t\tkeys.Err.Of(err),\n\t}, labels))\n}\n\n// IsError returns true if the event was built by the Error function.\n// It is intended to be used in exporters to identify the semantics of the\n// event when deciding what to do with it.\nfunc IsError(ev core.Event) bool {\n\treturn ev.Label(0).Key() == keys.Msg &&\n\t\tev.Label(1).Key() == keys.Err\n}\n\n// Metric sends a label event to the exporter with the supplied labels.\nfunc Metric(ctx context.Context, labels ...label.Label) {\n\tcore.Export(ctx, core.MakeEvent([3]label.Label{\n\t\tkeys.Metric.New(),\n\t}, labels))\n}\n\n// IsMetric returns true if the event was built by the Metric function.\n// It is intended to be used in exporters to identify the semantics of the\n// event when deciding what to do with it.\nfunc IsMetric(ev core.Event) bool {\n\treturn ev.Label(0).Key() == keys.Metric\n}\n\n// Label sends a label event to the exporter with the supplied labels.\nfunc Label(ctx context.Context, labels ...label.Label) context.Context {\n\treturn core.Export(ctx, core.MakeEvent([3]label.Label{\n\t\tkeys.Label.New(),\n\t}, labels))\n}\n\n// IsLabel returns true if the event was built by the Label function.\n// It is intended to be used in exporters to identify the semantics of the\n// event when deciding what to do with it.\nfunc IsLabel(ev core.Event) bool {\n\treturn ev.Label(0).Key() == keys.Label\n}\n\n// Start sends a span start event with the supplied label list to the exporter.\n// It also returns a function that will end the span, which should normally be\n// deferred.\nfunc Start(ctx context.Context, name string, labels ...label.Label) (context.Context, func()) {\n\treturn core.ExportPair(ctx,\n\t\tcore.MakeEvent([3]label.Label{\n\t\t\tkeys.Start.Of(name),\n\t\t}, labels),\n\t\tcore.MakeEvent([3]label.Label{\n\t\t\tkeys.End.New(),\n\t\t}, nil))\n}\n\n// IsStart returns true if the event was built by the Start function.\n// It is intended to be used in exporters to identify the semantics of the\n// event when deciding what to do with it.\nfunc IsStart(ev core.Event) bool {\n\treturn ev.Label(0).Key() == keys.Start\n}\n\n// IsEnd returns true if the event was built by the End function.\n// It is intended to be used in exporters to identify the semantics of the\n// event when deciding what to do with it.\nfunc IsEnd(ev core.Event) bool {\n\treturn ev.Label(0).Key() == keys.End\n}\n\n// Detach returns a context without an associated span.\n// This allows the creation of spans that are not children of the current span.\nfunc Detach(ctx context.Context) context.Context {\n\treturn core.Export(ctx, core.MakeEvent([3]label.Label{\n\t\tkeys.Detach.New(),\n\t}, nil))\n}\n\n// IsDetach returns true if the event was built by the Detach function.\n// It is intended to be used in exporters to identify the semantics of the\n// event when deciding what to do with it.\nfunc IsDetach(ev core.Event) bool {\n\treturn ev.Label(0).Key() == keys.Detach\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/event/keys/keys.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage keys\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"strconv\"\n\n\t\"golang.org/x/tools/internal/event/label\"\n)\n\n// Value represents a key for untyped values.\ntype Value struct {\n\tname        string\n\tdescription string\n}\n\n// New creates a new Key for untyped values.\nfunc New(name, description string) *Value {\n\treturn &Value{name: name, description: description}\n}\n\nfunc (k *Value) Name() string        { return k.name }\nfunc (k *Value) Description() string { return k.description }\n\nfunc (k *Value) Format(w io.Writer, buf []byte, l label.Label) {\n\tfmt.Fprint(w, k.From(l))\n}\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Value) Get(lm label.Map) any {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn nil\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Value) From(t label.Label) any { return t.UnpackValue() }\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Value) Of(value any) label.Label { return label.OfValue(k, value) }\n\n// Tag represents a key for tagging labels that have no value.\n// These are used when the existence of the label is the entire information it\n// carries, such as marking events to be of a specific kind, or from a specific\n// package.\ntype Tag struct {\n\tname        string\n\tdescription string\n}\n\n// NewTag creates a new Key for tagging labels.\nfunc NewTag(name, description string) *Tag {\n\treturn &Tag{name: name, description: description}\n}\n\nfunc (k *Tag) Name() string        { return k.name }\nfunc (k *Tag) Description() string { return k.description }\n\nfunc (k *Tag) Format(w io.Writer, buf []byte, l label.Label) {}\n\n// New creates a new Label with this key.\nfunc (k *Tag) New() label.Label { return label.OfValue(k, nil) }\n\n// Int represents a key\ntype Int struct {\n\tname        string\n\tdescription string\n}\n\n// NewInt creates a new Key for int values.\nfunc NewInt(name, description string) *Int {\n\treturn &Int{name: name, description: description}\n}\n\nfunc (k *Int) Name() string        { return k.name }\nfunc (k *Int) Description() string { return k.description }\n\nfunc (k *Int) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendInt(buf, int64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Int) Of(v int) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Int) Get(lm label.Map) int {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Int) From(t label.Label) int { return int(t.Unpack64()) }\n\n// Int8 represents a key\ntype Int8 struct {\n\tname        string\n\tdescription string\n}\n\n// NewInt8 creates a new Key for int8 values.\nfunc NewInt8(name, description string) *Int8 {\n\treturn &Int8{name: name, description: description}\n}\n\nfunc (k *Int8) Name() string        { return k.name }\nfunc (k *Int8) Description() string { return k.description }\n\nfunc (k *Int8) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendInt(buf, int64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Int8) Of(v int8) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Int8) Get(lm label.Map) int8 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Int8) From(t label.Label) int8 { return int8(t.Unpack64()) }\n\n// Int16 represents a key\ntype Int16 struct {\n\tname        string\n\tdescription string\n}\n\n// NewInt16 creates a new Key for int16 values.\nfunc NewInt16(name, description string) *Int16 {\n\treturn &Int16{name: name, description: description}\n}\n\nfunc (k *Int16) Name() string        { return k.name }\nfunc (k *Int16) Description() string { return k.description }\n\nfunc (k *Int16) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendInt(buf, int64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Int16) Of(v int16) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Int16) Get(lm label.Map) int16 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Int16) From(t label.Label) int16 { return int16(t.Unpack64()) }\n\n// Int32 represents a key\ntype Int32 struct {\n\tname        string\n\tdescription string\n}\n\n// NewInt32 creates a new Key for int32 values.\nfunc NewInt32(name, description string) *Int32 {\n\treturn &Int32{name: name, description: description}\n}\n\nfunc (k *Int32) Name() string        { return k.name }\nfunc (k *Int32) Description() string { return k.description }\n\nfunc (k *Int32) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendInt(buf, int64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Int32) Of(v int32) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Int32) Get(lm label.Map) int32 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Int32) From(t label.Label) int32 { return int32(t.Unpack64()) }\n\n// Int64 represents a key\ntype Int64 struct {\n\tname        string\n\tdescription string\n}\n\n// NewInt64 creates a new Key for int64 values.\nfunc NewInt64(name, description string) *Int64 {\n\treturn &Int64{name: name, description: description}\n}\n\nfunc (k *Int64) Name() string        { return k.name }\nfunc (k *Int64) Description() string { return k.description }\n\nfunc (k *Int64) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendInt(buf, k.From(l), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Int64) Of(v int64) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Int64) Get(lm label.Map) int64 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Int64) From(t label.Label) int64 { return int64(t.Unpack64()) }\n\n// UInt represents a key\ntype UInt struct {\n\tname        string\n\tdescription string\n}\n\n// NewUInt creates a new Key for uint values.\nfunc NewUInt(name, description string) *UInt {\n\treturn &UInt{name: name, description: description}\n}\n\nfunc (k *UInt) Name() string        { return k.name }\nfunc (k *UInt) Description() string { return k.description }\n\nfunc (k *UInt) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *UInt) Of(v uint) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *UInt) Get(lm label.Map) uint {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *UInt) From(t label.Label) uint { return uint(t.Unpack64()) }\n\n// UInt8 represents a key\ntype UInt8 struct {\n\tname        string\n\tdescription string\n}\n\n// NewUInt8 creates a new Key for uint8 values.\nfunc NewUInt8(name, description string) *UInt8 {\n\treturn &UInt8{name: name, description: description}\n}\n\nfunc (k *UInt8) Name() string        { return k.name }\nfunc (k *UInt8) Description() string { return k.description }\n\nfunc (k *UInt8) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *UInt8) Of(v uint8) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *UInt8) Get(lm label.Map) uint8 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *UInt8) From(t label.Label) uint8 { return uint8(t.Unpack64()) }\n\n// UInt16 represents a key\ntype UInt16 struct {\n\tname        string\n\tdescription string\n}\n\n// NewUInt16 creates a new Key for uint16 values.\nfunc NewUInt16(name, description string) *UInt16 {\n\treturn &UInt16{name: name, description: description}\n}\n\nfunc (k *UInt16) Name() string        { return k.name }\nfunc (k *UInt16) Description() string { return k.description }\n\nfunc (k *UInt16) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *UInt16) Of(v uint16) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *UInt16) Get(lm label.Map) uint16 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *UInt16) From(t label.Label) uint16 { return uint16(t.Unpack64()) }\n\n// UInt32 represents a key\ntype UInt32 struct {\n\tname        string\n\tdescription string\n}\n\n// NewUInt32 creates a new Key for uint32 values.\nfunc NewUInt32(name, description string) *UInt32 {\n\treturn &UInt32{name: name, description: description}\n}\n\nfunc (k *UInt32) Name() string        { return k.name }\nfunc (k *UInt32) Description() string { return k.description }\n\nfunc (k *UInt32) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *UInt32) Of(v uint32) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *UInt32) Get(lm label.Map) uint32 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *UInt32) From(t label.Label) uint32 { return uint32(t.Unpack64()) }\n\n// UInt64 represents a key\ntype UInt64 struct {\n\tname        string\n\tdescription string\n}\n\n// NewUInt64 creates a new Key for uint64 values.\nfunc NewUInt64(name, description string) *UInt64 {\n\treturn &UInt64{name: name, description: description}\n}\n\nfunc (k *UInt64) Name() string        { return k.name }\nfunc (k *UInt64) Description() string { return k.description }\n\nfunc (k *UInt64) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendUint(buf, k.From(l), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *UInt64) Of(v uint64) label.Label { return label.Of64(k, v) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *UInt64) Get(lm label.Map) uint64 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *UInt64) From(t label.Label) uint64 { return t.Unpack64() }\n\n// Float32 represents a key\ntype Float32 struct {\n\tname        string\n\tdescription string\n}\n\n// NewFloat32 creates a new Key for float32 values.\nfunc NewFloat32(name, description string) *Float32 {\n\treturn &Float32{name: name, description: description}\n}\n\nfunc (k *Float32) Name() string        { return k.name }\nfunc (k *Float32) Description() string { return k.description }\n\nfunc (k *Float32) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendFloat(buf, float64(k.From(l)), 'E', -1, 32))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Float32) Of(v float32) label.Label {\n\treturn label.Of64(k, uint64(math.Float32bits(v)))\n}\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Float32) Get(lm label.Map) float32 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Float32) From(t label.Label) float32 {\n\treturn math.Float32frombits(uint32(t.Unpack64()))\n}\n\n// Float64 represents a key\ntype Float64 struct {\n\tname        string\n\tdescription string\n}\n\n// NewFloat64 creates a new Key for int64 values.\nfunc NewFloat64(name, description string) *Float64 {\n\treturn &Float64{name: name, description: description}\n}\n\nfunc (k *Float64) Name() string        { return k.name }\nfunc (k *Float64) Description() string { return k.description }\n\nfunc (k *Float64) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendFloat(buf, k.From(l), 'E', -1, 64))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Float64) Of(v float64) label.Label {\n\treturn label.Of64(k, math.Float64bits(v))\n}\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Float64) Get(lm label.Map) float64 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Float64) From(t label.Label) float64 {\n\treturn math.Float64frombits(t.Unpack64())\n}\n\n// String represents a key\ntype String struct {\n\tname        string\n\tdescription string\n}\n\n// NewString creates a new Key for int64 values.\nfunc NewString(name, description string) *String {\n\treturn &String{name: name, description: description}\n}\n\nfunc (k *String) Name() string        { return k.name }\nfunc (k *String) Description() string { return k.description }\n\nfunc (k *String) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendQuote(buf, k.From(l)))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *String) Of(v string) label.Label { return label.OfString(k, v) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *String) Get(lm label.Map) string {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn \"\"\n}\n\n// From can be used to get a value from a Label.\nfunc (k *String) From(t label.Label) string { return t.UnpackString() }\n\n// Boolean represents a key\ntype Boolean struct {\n\tname        string\n\tdescription string\n}\n\n// NewBoolean creates a new Key for bool values.\nfunc NewBoolean(name, description string) *Boolean {\n\treturn &Boolean{name: name, description: description}\n}\n\nfunc (k *Boolean) Name() string        { return k.name }\nfunc (k *Boolean) Description() string { return k.description }\n\nfunc (k *Boolean) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendBool(buf, k.From(l)))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Boolean) Of(v bool) label.Label {\n\tif v {\n\t\treturn label.Of64(k, 1)\n\t}\n\treturn label.Of64(k, 0)\n}\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Boolean) Get(lm label.Map) bool {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn false\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Boolean) From(t label.Label) bool { return t.Unpack64() > 0 }\n\n// Error represents a key\ntype Error struct {\n\tname        string\n\tdescription string\n}\n\n// NewError creates a new Key for int64 values.\nfunc NewError(name, description string) *Error {\n\treturn &Error{name: name, description: description}\n}\n\nfunc (k *Error) Name() string        { return k.name }\nfunc (k *Error) Description() string { return k.description }\n\nfunc (k *Error) Format(w io.Writer, buf []byte, l label.Label) {\n\tio.WriteString(w, k.From(l).Error())\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Error) Of(v error) label.Label { return label.OfValue(k, v) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Error) Get(lm label.Map) error {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn nil\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Error) From(t label.Label) error {\n\terr, _ := t.UnpackValue().(error)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/event/keys/standard.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage keys\n\nvar (\n\t// Msg is a key used to add message strings to label lists.\n\tMsg = NewString(\"message\", \"a readable message\")\n\t// Label is a key used to indicate an event adds labels to the context.\n\tLabel = NewTag(\"label\", \"a label context marker\")\n\t// Start is used for things like traces that have a name.\n\tStart = NewString(\"start\", \"span start\")\n\t// Metric is a key used to indicate an event records metrics.\n\tEnd = NewTag(\"end\", \"a span end marker\")\n\t// Metric is a key used to indicate an event records metrics.\n\tDetach = NewTag(\"detach\", \"a span detach marker\")\n\t// Err is a key used to add error values to label lists.\n\tErr = NewError(\"error\", \"an error that occurred\")\n\t// Metric is a key used to indicate an event records metrics.\n\tMetric = NewTag(\"metric\", \"a metric event marker\")\n)\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/event/keys/util.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage keys\n\nimport (\n\t\"sort\"\n\t\"strings\"\n)\n\n// Join returns a canonical join of the keys in S:\n// a sorted comma-separated string list.\nfunc Join[S ~[]T, T ~string](s S) string {\n\tstrs := make([]string, 0, len(s))\n\tfor _, v := range s {\n\t\tstrs = append(strs, string(v))\n\t}\n\tsort.Strings(strs)\n\treturn strings.Join(strs, \",\")\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/event/label/label.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage label\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"slices\"\n\t\"unsafe\"\n)\n\n// Key is used as the identity of a Label.\n// Keys are intended to be compared by pointer only, the name should be unique\n// for communicating with external systems, but it is not required or enforced.\ntype Key interface {\n\t// Name returns the key name.\n\tName() string\n\t// Description returns a string that can be used to describe the value.\n\tDescription() string\n\n\t// Format is used in formatting to append the value of the label to the\n\t// supplied buffer.\n\t// The formatter may use the supplied buf as a scratch area to avoid\n\t// allocations.\n\tFormat(w io.Writer, buf []byte, l Label)\n}\n\n// Label holds a key and value pair.\n// It is normally used when passing around lists of labels.\ntype Label struct {\n\tkey     Key\n\tpacked  uint64\n\tuntyped any\n}\n\n// Map is the interface to a collection of Labels indexed by key.\ntype Map interface {\n\t// Find returns the label that matches the supplied key.\n\tFind(key Key) Label\n}\n\n// List is the interface to something that provides an iterable\n// list of labels.\n// Iteration should start from 0 and continue until Valid returns false.\ntype List interface {\n\t// Valid returns true if the index is within range for the list.\n\t// It does not imply the label at that index will itself be valid.\n\tValid(index int) bool\n\t// Label returns the label at the given index.\n\tLabel(index int) Label\n}\n\n// list implements LabelList for a list of Labels.\ntype list struct {\n\tlabels []Label\n}\n\n// filter wraps a LabelList filtering out specific labels.\ntype filter struct {\n\tkeys       []Key\n\tunderlying List\n}\n\n// listMap implements LabelMap for a simple list of labels.\ntype listMap struct {\n\tlabels []Label\n}\n\n// mapChain implements LabelMap for a list of underlying LabelMap.\ntype mapChain struct {\n\tmaps []Map\n}\n\n// OfValue creates a new label from the key and value.\n// This method is for implementing new key types, label creation should\n// normally be done with the Of method of the key.\nfunc OfValue(k Key, value any) Label { return Label{key: k, untyped: value} }\n\n// UnpackValue assumes the label was built using LabelOfValue and returns the value\n// that was passed to that constructor.\n// This method is for implementing new key types, for type safety normal\n// access should be done with the From method of the key.\nfunc (t Label) UnpackValue() any { return t.untyped }\n\n// Of64 creates a new label from a key and a uint64. This is often\n// used for non uint64 values that can be packed into a uint64.\n// This method is for implementing new key types, label creation should\n// normally be done with the Of method of the key.\nfunc Of64(k Key, v uint64) Label { return Label{key: k, packed: v} }\n\n// Unpack64 assumes the label was built using LabelOf64 and returns the value that\n// was passed to that constructor.\n// This method is for implementing new key types, for type safety normal\n// access should be done with the From method of the key.\nfunc (t Label) Unpack64() uint64 { return t.packed }\n\ntype stringptr unsafe.Pointer\n\n// OfString creates a new label from a key and a string.\n// This method is for implementing new key types, label creation should\n// normally be done with the Of method of the key.\nfunc OfString(k Key, v string) Label {\n\treturn Label{\n\t\tkey:     k,\n\t\tpacked:  uint64(len(v)),\n\t\tuntyped: stringptr(unsafe.StringData(v)),\n\t}\n}\n\n// UnpackString assumes the label was built using LabelOfString and returns the\n// value that was passed to that constructor.\n// This method is for implementing new key types, for type safety normal\n// access should be done with the From method of the key.\nfunc (t Label) UnpackString() string {\n\treturn unsafe.String((*byte)(t.untyped.(stringptr)), int(t.packed))\n}\n\n// Valid returns true if the Label is a valid one (it has a key).\nfunc (t Label) Valid() bool { return t.key != nil }\n\n// Key returns the key of this Label.\nfunc (t Label) Key() Key { return t.key }\n\n// Format is used for debug printing of labels.\nfunc (t Label) Format(f fmt.State, r rune) {\n\tif !t.Valid() {\n\t\tio.WriteString(f, `nil`)\n\t\treturn\n\t}\n\tio.WriteString(f, t.Key().Name())\n\tio.WriteString(f, \"=\")\n\tvar buf [128]byte\n\tt.Key().Format(f, buf[:0], t)\n}\n\nfunc (l *list) Valid(index int) bool {\n\treturn index >= 0 && index < len(l.labels)\n}\n\nfunc (l *list) Label(index int) Label {\n\treturn l.labels[index]\n}\n\nfunc (f *filter) Valid(index int) bool {\n\treturn f.underlying.Valid(index)\n}\n\nfunc (f *filter) Label(index int) Label {\n\tl := f.underlying.Label(index)\n\tif slices.Contains(f.keys, l.Key()) {\n\t\treturn Label{}\n\t}\n\treturn l\n}\n\nfunc (lm listMap) Find(key Key) Label {\n\tfor _, l := range lm.labels {\n\t\tif l.Key() == key {\n\t\t\treturn l\n\t\t}\n\t}\n\treturn Label{}\n}\n\nfunc (c mapChain) Find(key Key) Label {\n\tfor _, src := range c.maps {\n\t\tl := src.Find(key)\n\t\tif l.Valid() {\n\t\t\treturn l\n\t\t}\n\t}\n\treturn Label{}\n}\n\nvar emptyList = &list{}\n\nfunc NewList(labels ...Label) List {\n\tif len(labels) == 0 {\n\t\treturn emptyList\n\t}\n\treturn &list{labels: labels}\n}\n\nfunc Filter(l List, keys ...Key) List {\n\tif len(keys) == 0 {\n\t\treturn l\n\t}\n\treturn &filter{keys: keys, underlying: l}\n}\n\nfunc NewMap(labels ...Label) Map {\n\treturn listMap{labels: labels}\n}\n\nfunc MergeMaps(srcs ...Map) Map {\n\tvar nonNil []Map\n\tfor _, src := range srcs {\n\t\tif src != nil {\n\t\t\tnonNil = append(nonNil, src)\n\t\t}\n\t}\n\tif len(nonNil) == 1 {\n\t\treturn nonNil[0]\n\t}\n\treturn mapChain{maps: nonNil}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/gocommand/invoke.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package gocommand is a helper for calling the go command.\npackage gocommand\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"golang.org/x/tools/internal/event\"\n\t\"golang.org/x/tools/internal/event/keys\"\n\t\"golang.org/x/tools/internal/event/label\"\n)\n\n// A Runner will run go command invocations and serialize\n// them if it sees a concurrency error.\ntype Runner struct {\n\t// once guards the runner initialization.\n\tonce sync.Once\n\n\t// inFlight tracks available workers.\n\tinFlight chan struct{}\n\n\t// serialized guards the ability to run a go command serially,\n\t// to avoid deadlocks when claiming workers.\n\tserialized chan struct{}\n}\n\nconst maxInFlight = 10\n\nfunc (runner *Runner) initialize() {\n\trunner.once.Do(func() {\n\t\trunner.inFlight = make(chan struct{}, maxInFlight)\n\t\trunner.serialized = make(chan struct{}, 1)\n\t})\n}\n\n// 1.13: go: updates to go.mod needed, but contents have changed\n// 1.14: go: updating go.mod: existing contents have changed since last read\nvar modConcurrencyError = regexp.MustCompile(`go:.*go.mod.*contents have changed`)\n\n// event keys for go command invocations\nvar (\n\tverb      = keys.NewString(\"verb\", \"go command verb\")\n\tdirectory = keys.NewString(\"directory\", \"\")\n)\n\nfunc invLabels(inv Invocation) []label.Label {\n\treturn []label.Label{verb.Of(inv.Verb), directory.Of(inv.WorkingDir)}\n}\n\n// Run is a convenience wrapper around RunRaw.\n// It returns only stdout and a \"friendly\" error.\nfunc (runner *Runner) Run(ctx context.Context, inv Invocation) (*bytes.Buffer, error) {\n\tctx, done := event.Start(ctx, \"gocommand.Runner.Run\", invLabels(inv)...)\n\tdefer done()\n\n\tstdout, _, friendly, _ := runner.RunRaw(ctx, inv)\n\treturn stdout, friendly\n}\n\n// RunPiped runs the invocation serially, always waiting for any concurrent\n// invocations to complete first.\nfunc (runner *Runner) RunPiped(ctx context.Context, inv Invocation, stdout, stderr io.Writer) error {\n\tctx, done := event.Start(ctx, \"gocommand.Runner.RunPiped\", invLabels(inv)...)\n\tdefer done()\n\n\t_, err := runner.runPiped(ctx, inv, stdout, stderr)\n\treturn err\n}\n\n// RunRaw runs the invocation, serializing requests only if they fight over\n// go.mod changes.\n// Postcondition: both error results have same nilness.\nfunc (runner *Runner) RunRaw(ctx context.Context, inv Invocation) (*bytes.Buffer, *bytes.Buffer, error, error) {\n\tctx, done := event.Start(ctx, \"gocommand.Runner.RunRaw\", invLabels(inv)...)\n\tdefer done()\n\t// Make sure the runner is always initialized.\n\trunner.initialize()\n\n\t// First, try to run the go command concurrently.\n\tstdout, stderr, friendlyErr, err := runner.runConcurrent(ctx, inv)\n\n\t// If we encounter a load concurrency error, we need to retry serially.\n\tif friendlyErr != nil && modConcurrencyError.MatchString(friendlyErr.Error()) {\n\t\tevent.Error(ctx, \"Load concurrency error, will retry serially\", err)\n\n\t\t// Run serially by calling runPiped.\n\t\tstdout.Reset()\n\t\tstderr.Reset()\n\t\tfriendlyErr, err = runner.runPiped(ctx, inv, stdout, stderr)\n\t}\n\n\treturn stdout, stderr, friendlyErr, err\n}\n\n// Postcondition: both error results have same nilness.\nfunc (runner *Runner) runConcurrent(ctx context.Context, inv Invocation) (*bytes.Buffer, *bytes.Buffer, error, error) {\n\t// Wait for 1 worker to become available.\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn nil, nil, ctx.Err(), ctx.Err()\n\tcase runner.inFlight <- struct{}{}:\n\t\tdefer func() { <-runner.inFlight }()\n\t}\n\n\tstdout, stderr := &bytes.Buffer{}, &bytes.Buffer{}\n\tfriendlyErr, err := inv.runWithFriendlyError(ctx, stdout, stderr)\n\treturn stdout, stderr, friendlyErr, err\n}\n\n// Postcondition: both error results have same nilness.\nfunc (runner *Runner) runPiped(ctx context.Context, inv Invocation, stdout, stderr io.Writer) (error, error) {\n\t// Make sure the runner is always initialized.\n\trunner.initialize()\n\n\t// Acquire the serialization lock. This avoids deadlocks between two\n\t// runPiped commands.\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn ctx.Err(), ctx.Err()\n\tcase runner.serialized <- struct{}{}:\n\t\tdefer func() { <-runner.serialized }()\n\t}\n\n\t// Wait for all in-progress go commands to return before proceeding,\n\t// to avoid load concurrency errors.\n\tfor range maxInFlight {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\treturn ctx.Err(), ctx.Err()\n\t\tcase runner.inFlight <- struct{}{}:\n\t\t\t// Make sure we always \"return\" any workers we took.\n\t\t\tdefer func() { <-runner.inFlight }()\n\t\t}\n\t}\n\n\treturn inv.runWithFriendlyError(ctx, stdout, stderr)\n}\n\n// An Invocation represents a call to the go command.\ntype Invocation struct {\n\tVerb       string\n\tArgs       []string\n\tBuildFlags []string\n\n\t// If ModFlag is set, the go command is invoked with -mod=ModFlag.\n\t// TODO(rfindley): remove, in favor of Args.\n\tModFlag string\n\n\t// If ModFile is set, the go command is invoked with -modfile=ModFile.\n\t// TODO(rfindley): remove, in favor of Args.\n\tModFile string\n\n\t// Overlay is the name of the JSON overlay file that describes\n\t// unsaved editor buffers; see [WriteOverlays].\n\t// If set, the go command is invoked with -overlay=Overlay.\n\t// TODO(rfindley): remove, in favor of Args.\n\tOverlay string\n\n\t// If CleanEnv is set, the invocation will run only with the environment\n\t// in Env, not starting with os.Environ.\n\tCleanEnv   bool\n\tEnv        []string\n\tWorkingDir string\n\tLogf       func(format string, args ...any)\n}\n\n// Postcondition: both error results have same nilness.\nfunc (i *Invocation) runWithFriendlyError(ctx context.Context, stdout, stderr io.Writer) (friendlyError error, rawError error) {\n\trawError = i.run(ctx, stdout, stderr)\n\tif rawError != nil {\n\t\tfriendlyError = rawError\n\t\t// Check for 'go' executable not being found.\n\t\tif ee, ok := rawError.(*exec.Error); ok && ee.Err == exec.ErrNotFound {\n\t\t\tfriendlyError = fmt.Errorf(\"go command required, not found: %v\", ee)\n\t\t}\n\t\tif ctx.Err() != nil {\n\t\t\tfriendlyError = ctx.Err()\n\t\t}\n\t\tfriendlyError = fmt.Errorf(\"err: %v: stderr: %s\", friendlyError, stderr)\n\t}\n\treturn\n}\n\n// logf logs if i.Logf is non-nil.\nfunc (i *Invocation) logf(format string, args ...any) {\n\tif i.Logf != nil {\n\t\ti.Logf(format, args...)\n\t}\n}\n\nfunc (i *Invocation) run(ctx context.Context, stdout, stderr io.Writer) error {\n\tgoArgs := []string{i.Verb}\n\n\tappendModFile := func() {\n\t\tif i.ModFile != \"\" {\n\t\t\tgoArgs = append(goArgs, \"-modfile=\"+i.ModFile)\n\t\t}\n\t}\n\tappendModFlag := func() {\n\t\tif i.ModFlag != \"\" {\n\t\t\tgoArgs = append(goArgs, \"-mod=\"+i.ModFlag)\n\t\t}\n\t}\n\tappendOverlayFlag := func() {\n\t\tif i.Overlay != \"\" {\n\t\t\tgoArgs = append(goArgs, \"-overlay=\"+i.Overlay)\n\t\t}\n\t}\n\n\tswitch i.Verb {\n\tcase \"env\", \"version\":\n\t\tgoArgs = append(goArgs, i.Args...)\n\tcase \"mod\":\n\t\t// mod needs the sub-verb before flags.\n\t\tgoArgs = append(goArgs, i.Args[0])\n\t\tappendModFile()\n\t\tgoArgs = append(goArgs, i.Args[1:]...)\n\tcase \"get\":\n\t\tgoArgs = append(goArgs, i.BuildFlags...)\n\t\tappendModFile()\n\t\tgoArgs = append(goArgs, i.Args...)\n\n\tdefault: // notably list and build.\n\t\tgoArgs = append(goArgs, i.BuildFlags...)\n\t\tappendModFile()\n\t\tappendModFlag()\n\t\tappendOverlayFlag()\n\t\tgoArgs = append(goArgs, i.Args...)\n\t}\n\tcmd := exec.Command(\"go\", goArgs...)\n\tcmd.Stdout = stdout\n\tcmd.Stderr = stderr\n\n\t// https://go.dev/issue/59541: don't wait forever copying stderr\n\t// after the command has exited.\n\t// After CL 484741 we copy stdout manually, so we we'll stop reading that as\n\t// soon as ctx is done. However, we also don't want to wait around forever\n\t// for stderr. Give a much-longer-than-reasonable delay and then assume that\n\t// something has wedged in the kernel or runtime.\n\tcmd.WaitDelay = 30 * time.Second\n\n\t// The cwd gets resolved to the real path. On Darwin, where\n\t// /tmp is a symlink, this breaks anything that expects the\n\t// working directory to keep the original path, including the\n\t// go command when dealing with modules.\n\t//\n\t// os.Getwd has a special feature where if the cwd and the PWD\n\t// are the same node then it trusts the PWD, so by setting it\n\t// in the env for the child process we fix up all the paths\n\t// returned by the go command.\n\tif !i.CleanEnv {\n\t\tcmd.Env = os.Environ()\n\t}\n\tcmd.Env = append(cmd.Env, i.Env...)\n\tif i.WorkingDir != \"\" {\n\t\tcmd.Env = append(cmd.Env, \"PWD=\"+i.WorkingDir)\n\t\tcmd.Dir = i.WorkingDir\n\t}\n\n\tdebugStr := cmdDebugStr(cmd)\n\ti.logf(\"starting %v\", debugStr)\n\tstart := time.Now()\n\tdefer func() {\n\t\ti.logf(\"%s for %v\", time.Since(start), debugStr)\n\t}()\n\n\treturn runCmdContext(ctx, cmd)\n}\n\n// DebugHangingGoCommands may be set by tests to enable additional\n// instrumentation (including panics) for debugging hanging Go commands.\n//\n// See golang/go#54461 for details.\nvar DebugHangingGoCommands = false\n\n// runCmdContext is like exec.CommandContext except it sends os.Interrupt\n// before os.Kill.\nfunc runCmdContext(ctx context.Context, cmd *exec.Cmd) (err error) {\n\t// If cmd.Stdout is not an *os.File, the exec package will create a pipe and\n\t// copy it to the Writer in a goroutine until the process has finished and\n\t// either the pipe reaches EOF or command's WaitDelay expires.\n\t//\n\t// However, the output from 'go list' can be quite large, and we don't want to\n\t// keep reading (and allocating buffers) if we've already decided we don't\n\t// care about the output. We don't want to wait for the process to finish, and\n\t// we don't wait to wait for the WaitDelay to expire either.\n\t//\n\t// Instead, if cmd.Stdout requires a copying goroutine we explicitly replace\n\t// it with a pipe (which is an *os.File), which we can close in order to stop\n\t// copying output as soon as we realize we don't care about it.\n\tvar stdoutW *os.File\n\tif cmd.Stdout != nil {\n\t\tif _, ok := cmd.Stdout.(*os.File); !ok {\n\t\t\tvar stdoutR *os.File\n\t\t\tstdoutR, stdoutW, err = os.Pipe()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tprevStdout := cmd.Stdout\n\t\t\tcmd.Stdout = stdoutW\n\n\t\t\tstdoutErr := make(chan error, 1)\n\t\t\tgo func() {\n\t\t\t\t_, err := io.Copy(prevStdout, stdoutR)\n\t\t\t\tif err != nil {\n\t\t\t\t\terr = fmt.Errorf(\"copying stdout: %w\", err)\n\t\t\t\t}\n\t\t\t\tstdoutErr <- err\n\t\t\t}()\n\t\t\tdefer func() {\n\t\t\t\t// We started a goroutine to copy a stdout pipe.\n\t\t\t\t// Wait for it to finish, or terminate it if need be.\n\t\t\t\tvar err2 error\n\t\t\t\tselect {\n\t\t\t\tcase err2 = <-stdoutErr:\n\t\t\t\t\tstdoutR.Close()\n\t\t\t\tcase <-ctx.Done():\n\t\t\t\t\tstdoutR.Close()\n\t\t\t\t\t// Per https://pkg.go.dev/os#File.Close, the call to stdoutR.Close\n\t\t\t\t\t// should cause the Read call in io.Copy to unblock and return\n\t\t\t\t\t// immediately, but we still need to receive from stdoutErr to confirm\n\t\t\t\t\t// that it has happened.\n\t\t\t\t\t<-stdoutErr\n\t\t\t\t\terr2 = ctx.Err()\n\t\t\t\t}\n\t\t\t\tif err == nil {\n\t\t\t\t\terr = err2\n\t\t\t\t}\n\t\t\t}()\n\n\t\t\t// Per https://pkg.go.dev/os/exec#Cmd, “If Stdout and Stderr are the\n\t\t\t// same writer, and have a type that can be compared with ==, at most\n\t\t\t// one goroutine at a time will call Write.”\n\t\t\t//\n\t\t\t// Since we're starting a goroutine that writes to cmd.Stdout, we must\n\t\t\t// also update cmd.Stderr so that it still holds.\n\t\t\tfunc() {\n\t\t\t\tdefer func() { recover() }()\n\t\t\t\tif cmd.Stderr == prevStdout {\n\t\t\t\t\tcmd.Stderr = cmd.Stdout\n\t\t\t\t}\n\t\t\t}()\n\t\t}\n\t}\n\n\tstartTime := time.Now()\n\terr = cmd.Start()\n\tif stdoutW != nil {\n\t\t// The child process has inherited the pipe file,\n\t\t// so close the copy held in this process.\n\t\tstdoutW.Close()\n\t\tstdoutW = nil\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tresChan := make(chan error, 1)\n\tgo func() {\n\t\tresChan <- cmd.Wait()\n\t}()\n\n\t// If we're interested in debugging hanging Go commands, stop waiting after a\n\t// minute and panic with interesting information.\n\tdebug := DebugHangingGoCommands\n\tif debug {\n\t\ttimer := time.NewTimer(1 * time.Minute)\n\t\tdefer timer.Stop()\n\t\tselect {\n\t\tcase err := <-resChan:\n\t\t\treturn err\n\t\tcase <-timer.C:\n\t\t\t// HandleHangingGoCommand terminates this process.\n\t\t\t// Pass off resChan in case we can collect the command error.\n\t\t\thandleHangingGoCommand(startTime, cmd, resChan)\n\t\tcase <-ctx.Done():\n\t\t}\n\t} else {\n\t\tselect {\n\t\tcase err := <-resChan:\n\t\t\treturn err\n\t\tcase <-ctx.Done():\n\t\t}\n\t}\n\n\t// Cancelled. Interrupt and see if it ends voluntarily.\n\tif err := cmd.Process.Signal(os.Interrupt); err == nil {\n\t\t// (We used to wait only 1s but this proved\n\t\t// fragile on loaded builder machines.)\n\t\ttimer := time.NewTimer(5 * time.Second)\n\t\tdefer timer.Stop()\n\t\tselect {\n\t\tcase err := <-resChan:\n\t\t\treturn err\n\t\tcase <-timer.C:\n\t\t}\n\t}\n\n\t// Didn't shut down in response to interrupt. Kill it hard.\n\tif err := cmd.Process.Kill(); err != nil && !errors.Is(err, os.ErrProcessDone) && debug {\n\t\tlog.Printf(\"error killing the Go command: %v\", err)\n\t}\n\n\treturn <-resChan\n}\n\n// handleHangingGoCommand outputs debugging information to help diagnose the\n// cause of a hanging Go command, and then exits with log.Fatalf.\nfunc handleHangingGoCommand(start time.Time, cmd *exec.Cmd, resChan chan error) {\n\tswitch runtime.GOOS {\n\tcase \"linux\", \"darwin\", \"freebsd\", \"netbsd\", \"openbsd\":\n\t\tfmt.Fprintln(os.Stderr, `DETECTED A HANGING GO COMMAND\n\n\t\t\tThe gopls test runner has detected a hanging go command. In order to debug\n\t\t\tthis, the output of ps and lsof/fstat is printed below.\n\n\t\t\tSee golang/go#54461 for more details.`)\n\n\t\tfmt.Fprintln(os.Stderr, \"\\nps axo ppid,pid,command:\")\n\t\tfmt.Fprintln(os.Stderr, \"-------------------------\")\n\t\tpsCmd := exec.Command(\"ps\", \"axo\", \"ppid,pid,command\")\n\t\tpsCmd.Stdout = os.Stderr\n\t\tpsCmd.Stderr = os.Stderr\n\t\tif err := psCmd.Run(); err != nil {\n\t\t\tlog.Printf(\"Handling hanging Go command: running ps: %v\", err)\n\t\t}\n\n\t\tlistFiles := \"lsof\"\n\t\tif runtime.GOOS == \"freebsd\" || runtime.GOOS == \"netbsd\" {\n\t\t\tlistFiles = \"fstat\"\n\t\t}\n\n\t\tfmt.Fprintln(os.Stderr, \"\\n\"+listFiles+\":\")\n\t\tfmt.Fprintln(os.Stderr, \"-----\")\n\t\tlistFilesCmd := exec.Command(listFiles)\n\t\tlistFilesCmd.Stdout = os.Stderr\n\t\tlistFilesCmd.Stderr = os.Stderr\n\t\tif err := listFilesCmd.Run(); err != nil {\n\t\t\tlog.Printf(\"Handling hanging Go command: running %s: %v\", listFiles, err)\n\t\t}\n\t\t// Try to extract information about the slow go process by issuing a SIGQUIT.\n\t\tif err := cmd.Process.Signal(sigStuckProcess); err == nil {\n\t\t\tselect {\n\t\t\tcase err := <-resChan:\n\t\t\t\tstderr := \"not a bytes.Buffer\"\n\t\t\t\tif buf, _ := cmd.Stderr.(*bytes.Buffer); buf != nil {\n\t\t\t\t\tstderr = buf.String()\n\t\t\t\t}\n\t\t\t\tlog.Printf(\"Quit hanging go command:\\n\\terr:%v\\n\\tstderr:\\n%v\\n\\n\", err, stderr)\n\t\t\tcase <-time.After(5 * time.Second):\n\t\t\t}\n\t\t} else {\n\t\t\tlog.Printf(\"Sending signal %d to hanging go command: %v\", sigStuckProcess, err)\n\t\t}\n\t}\n\tlog.Fatalf(\"detected hanging go command (golang/go#54461); waited %s\\n\\tcommand:%s\\n\\tpid:%d\", time.Since(start), cmd, cmd.Process.Pid)\n}\n\nfunc cmdDebugStr(cmd *exec.Cmd) string {\n\tenv := make(map[string]string)\n\tfor _, kv := range cmd.Env {\n\t\tsplit := strings.SplitN(kv, \"=\", 2)\n\t\tif len(split) == 2 {\n\t\t\tk, v := split[0], split[1]\n\t\t\tenv[k] = v\n\t\t}\n\t}\n\n\tvar args []string\n\tfor _, arg := range cmd.Args {\n\t\tquoted := strconv.Quote(arg)\n\t\tif quoted[1:len(quoted)-1] != arg || strings.Contains(arg, \" \") {\n\t\t\targs = append(args, quoted)\n\t\t} else {\n\t\t\targs = append(args, arg)\n\t\t}\n\t}\n\treturn fmt.Sprintf(\"GOROOT=%v GOPATH=%v GO111MODULE=%v GOPROXY=%v PWD=%v %v\", env[\"GOROOT\"], env[\"GOPATH\"], env[\"GO111MODULE\"], env[\"GOPROXY\"], env[\"PWD\"], strings.Join(args, \" \"))\n}\n\n// WriteOverlays writes each value in the overlay (see the Overlay\n// field of go/packages.Config) to a temporary file and returns the name\n// of a JSON file describing the mapping that is suitable for the \"go\n// list -overlay\" flag.\n//\n// On success, the caller must call the cleanup function exactly once\n// when the files are no longer needed.\nfunc WriteOverlays(overlay map[string][]byte) (filename string, cleanup func(), err error) {\n\t// Do nothing if there are no overlays in the config.\n\tif len(overlay) == 0 {\n\t\treturn \"\", func() {}, nil\n\t}\n\n\tdir, err := os.MkdirTemp(\"\", \"gocommand-*\")\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\t// The caller must clean up this directory,\n\t// unless this function returns an error.\n\t// (The cleanup operand of each return\n\t// statement below is ignored.)\n\tdefer func() {\n\t\tcleanup = func() {\n\t\t\tos.RemoveAll(dir)\n\t\t}\n\t\tif err != nil {\n\t\t\tcleanup()\n\t\t\tcleanup = nil\n\t\t}\n\t}()\n\n\t// Write each map entry to a temporary file.\n\toverlays := make(map[string]string)\n\tfor k, v := range overlay {\n\t\t// Use a unique basename for each file (001-foo.go),\n\t\t// to avoid creating nested directories.\n\t\tbase := fmt.Sprintf(\"%d-%s\", 1+len(overlays), filepath.Base(k))\n\t\tfilename := filepath.Join(dir, base)\n\t\terr := os.WriteFile(filename, v, 0666)\n\t\tif err != nil {\n\t\t\treturn \"\", nil, err\n\t\t}\n\t\toverlays[k] = filename\n\t}\n\n\t// Write the JSON overlay file that maps logical file names to temp files.\n\t//\n\t// OverlayJSON is the format overlay files are expected to be in.\n\t// The Replace map maps from overlaid paths to replacement paths:\n\t// the Go command will forward all reads trying to open\n\t// each overlaid path to its replacement path, or consider the overlaid\n\t// path not to exist if the replacement path is empty.\n\t//\n\t// From golang/go#39958.\n\ttype OverlayJSON struct {\n\t\tReplace map[string]string `json:\"replace,omitempty\"`\n\t}\n\tb, err := json.Marshal(OverlayJSON{Replace: overlays})\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tfilename = filepath.Join(dir, \"overlay.json\")\n\tif err := os.WriteFile(filename, b, 0666); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\treturn filename, nil, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/gocommand/invoke_notunix.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !unix\n\npackage gocommand\n\nimport \"os\"\n\n// sigStuckProcess is the signal to send to kill a hanging subprocess.\n// On Unix we send SIGQUIT, but on non-Unix we only have os.Kill.\nvar sigStuckProcess = os.Kill\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/gocommand/invoke_unix.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build unix\n\npackage gocommand\n\nimport \"syscall\"\n\n// Sigstuckprocess is the signal to send to kill a hanging subprocess.\n// Send SIGQUIT to get a stack trace.\nvar sigStuckProcess = syscall.SIGQUIT\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/gocommand/vendor.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage gocommand\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\t\"time\"\n\n\t\"golang.org/x/mod/semver\"\n)\n\n// ModuleJSON holds information about a module.\ntype ModuleJSON struct {\n\tPath      string      // module path\n\tVersion   string      // module version\n\tVersions  []string    // available module versions (with -versions)\n\tReplace   *ModuleJSON // replaced by this module\n\tTime      *time.Time  // time version was created\n\tUpdate    *ModuleJSON // available update, if any (with -u)\n\tMain      bool        // is this the main module?\n\tIndirect  bool        // is this module only an indirect dependency of main module?\n\tDir       string      // directory holding files for this module, if any\n\tGoMod     string      // path to go.mod file used when loading this module, if any\n\tGoVersion string      // go version used in module\n}\n\nvar modFlagRegexp = regexp.MustCompile(`-mod[ =](\\w+)`)\n\n// VendorEnabled reports whether vendoring is enabled. It takes a *Runner to execute Go commands\n// with the supplied context.Context and Invocation. The Invocation can contain pre-defined fields,\n// of which only Verb and Args are modified to run the appropriate Go command.\n// Inspired by setDefaultBuildMod in modload/init.go\nfunc VendorEnabled(ctx context.Context, inv Invocation, r *Runner) (bool, *ModuleJSON, error) {\n\tmainMod, go114, err := getMainModuleAnd114(ctx, inv, r)\n\tif err != nil {\n\t\treturn false, nil, err\n\t}\n\n\t// We check the GOFLAGS to see if there is anything overridden or not.\n\tinv.Verb = \"env\"\n\tinv.Args = []string{\"GOFLAGS\"}\n\tstdout, err := r.Run(ctx, inv)\n\tif err != nil {\n\t\treturn false, nil, err\n\t}\n\tgoflags := string(bytes.TrimSpace(stdout.Bytes()))\n\tmatches := modFlagRegexp.FindStringSubmatch(goflags)\n\tvar modFlag string\n\tif len(matches) != 0 {\n\t\tmodFlag = matches[1]\n\t}\n\t// Don't override an explicit '-mod=' argument.\n\tif modFlag == \"vendor\" {\n\t\treturn true, mainMod, nil\n\t} else if modFlag != \"\" {\n\t\treturn false, nil, nil\n\t}\n\tif mainMod == nil || !go114 {\n\t\treturn false, nil, nil\n\t}\n\t// Check 1.14's automatic vendor mode.\n\tif fi, err := os.Stat(filepath.Join(mainMod.Dir, \"vendor\")); err == nil && fi.IsDir() {\n\t\tif mainMod.GoVersion != \"\" && semver.Compare(\"v\"+mainMod.GoVersion, \"v1.14\") >= 0 {\n\t\t\t// The Go version is at least 1.14, and a vendor directory exists.\n\t\t\t// Set -mod=vendor by default.\n\t\t\treturn true, mainMod, nil\n\t\t}\n\t}\n\treturn false, nil, nil\n}\n\n// getMainModuleAnd114 gets one of the main modules' information and whether the\n// go command in use is 1.14+. This is the information needed to figure out\n// if vendoring should be enabled.\nfunc getMainModuleAnd114(ctx context.Context, inv Invocation, r *Runner) (*ModuleJSON, bool, error) {\n\tconst format = `{{.Path}}\n{{.Dir}}\n{{.GoMod}}\n{{.GoVersion}}\n{{range context.ReleaseTags}}{{if eq . \"go1.14\"}}{{.}}{{end}}{{end}}\n`\n\tinv.Verb = \"list\"\n\tinv.Args = []string{\"-m\", \"-f\", format}\n\tstdout, err := r.Run(ctx, inv)\n\tif err != nil {\n\t\treturn nil, false, err\n\t}\n\n\tlines := strings.Split(stdout.String(), \"\\n\")\n\tif len(lines) < 5 {\n\t\treturn nil, false, fmt.Errorf(\"unexpected stdout: %q\", stdout.String())\n\t}\n\tmod := &ModuleJSON{\n\t\tPath:      lines[0],\n\t\tDir:       lines[1],\n\t\tGoMod:     lines[2],\n\t\tGoVersion: lines[3],\n\t\tMain:      true,\n\t}\n\treturn mod, lines[4] == \"go1.14\", nil\n}\n\n// WorkspaceVendorEnabled reports whether workspace vendoring is enabled. It takes a *Runner to execute Go commands\n// with the supplied context.Context and Invocation. The Invocation can contain pre-defined fields,\n// of which only Verb and Args are modified to run the appropriate Go command.\n// Inspired by setDefaultBuildMod in modload/init.go\nfunc WorkspaceVendorEnabled(ctx context.Context, inv Invocation, r *Runner) (bool, []*ModuleJSON, error) {\n\tinv.Verb = \"env\"\n\tinv.Args = []string{\"GOWORK\"}\n\tstdout, err := r.Run(ctx, inv)\n\tif err != nil {\n\t\treturn false, nil, err\n\t}\n\tgoWork := string(bytes.TrimSpace(stdout.Bytes()))\n\tif fi, err := os.Stat(filepath.Join(filepath.Dir(goWork), \"vendor\")); err == nil && fi.IsDir() {\n\t\tmainMods, err := getWorkspaceMainModules(ctx, inv, r)\n\t\tif err != nil {\n\t\t\treturn false, nil, err\n\t\t}\n\t\treturn true, mainMods, nil\n\t}\n\treturn false, nil, nil\n}\n\n// getWorkspaceMainModules gets the main modules' information.\n// This is the information needed to figure out if vendoring should be enabled.\nfunc getWorkspaceMainModules(ctx context.Context, inv Invocation, r *Runner) ([]*ModuleJSON, error) {\n\tconst format = `{{.Path}}\n{{.Dir}}\n{{.GoMod}}\n{{.GoVersion}}\n`\n\tinv.Verb = \"list\"\n\tinv.Args = []string{\"-m\", \"-f\", format}\n\tstdout, err := r.Run(ctx, inv)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tlines := strings.Split(strings.TrimSuffix(stdout.String(), \"\\n\"), \"\\n\")\n\tif len(lines) < 4 {\n\t\treturn nil, fmt.Errorf(\"unexpected stdout: %q\", stdout.String())\n\t}\n\tmods := make([]*ModuleJSON, 0, len(lines)/4)\n\tfor i := 0; i < len(lines); i += 4 {\n\t\tmods = append(mods, &ModuleJSON{\n\t\t\tPath:      lines[i],\n\t\t\tDir:       lines[i+1],\n\t\t\tGoMod:     lines[i+2],\n\t\t\tGoVersion: lines[i+3],\n\t\t\tMain:      true,\n\t\t})\n\t}\n\treturn mods, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/gocommand/version.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage gocommand\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n)\n\n// GoVersion reports the minor version number of the highest release\n// tag built into the go command on the PATH.\n//\n// Note that this may be higher than the version of the go tool used\n// to build this application, and thus the versions of the standard\n// go/{scanner,parser,ast,types} packages that are linked into it.\n// In that case, callers should either downgrade to the version of\n// go used to build the application, or report an error that the\n// application is too old to use the go command on the PATH.\nfunc GoVersion(ctx context.Context, inv Invocation, r *Runner) (int, error) {\n\tinv.Verb = \"list\"\n\tinv.Args = []string{\"-e\", \"-f\", `{{context.ReleaseTags}}`, `--`, `unsafe`}\n\tinv.BuildFlags = nil // This is not a build command.\n\tinv.ModFlag = \"\"\n\tinv.ModFile = \"\"\n\tinv.Env = append(inv.Env[:len(inv.Env):len(inv.Env)], \"GO111MODULE=off\")\n\n\tstdoutBytes, err := r.Run(ctx, inv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tstdout := stdoutBytes.String()\n\tif len(stdout) < 3 {\n\t\treturn 0, fmt.Errorf(\"bad ReleaseTags output: %q\", stdout)\n\t}\n\t// Split up \"[go1.1 go1.15]\" and return highest go1.X value.\n\ttags := strings.Fields(stdout[1 : len(stdout)-2])\n\tfor i := len(tags) - 1; i >= 0; i-- {\n\t\tvar version int\n\t\tif _, err := fmt.Sscanf(tags[i], \"go1.%d\", &version); err != nil {\n\t\t\tcontinue\n\t\t}\n\t\treturn version, nil\n\t}\n\treturn 0, fmt.Errorf(\"no parseable ReleaseTags in %v\", tags)\n}\n\n// GoVersionOutput returns the complete output of the go version command.\nfunc GoVersionOutput(ctx context.Context, inv Invocation, r *Runner) (string, error) {\n\tinv.Verb = \"version\"\n\tgoVersion, err := r.Run(ctx, inv)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn goVersion.String(), nil\n}\n\n// ParseGoVersionOutput extracts the Go version string\n// from the output of the \"go version\" command.\n// Given an unrecognized form, it returns an empty string.\nfunc ParseGoVersionOutput(data string) string {\n\tre := regexp.MustCompile(`^go version (go\\S+|devel \\S+)`)\n\tm := re.FindStringSubmatch(data)\n\tif len(m) != 2 {\n\t\treturn \"\" // unrecognized version\n\t}\n\treturn m[1]\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/gopathwalk/walk.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package gopathwalk is like filepath.Walk but specialized for finding Go\n// packages, particularly in $GOPATH and $GOROOT.\npackage gopathwalk\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"slices\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\n// Options controls the behavior of a Walk call.\ntype Options struct {\n\t// If Logf is non-nil, debug logging is enabled through this function.\n\tLogf func(format string, args ...any)\n\n\t// Search module caches. Also disables legacy goimports ignore rules.\n\tModulesEnabled bool\n\n\t// Maximum number of concurrent calls to user-provided callbacks,\n\t// or 0 for GOMAXPROCS.\n\tConcurrency int\n}\n\n// RootType indicates the type of a Root.\ntype RootType int\n\nconst (\n\tRootUnknown RootType = iota\n\tRootGOROOT\n\tRootGOPATH\n\tRootCurrentModule\n\tRootModuleCache\n\tRootOther\n)\n\n// A Root is a starting point for a Walk.\ntype Root struct {\n\tPath string\n\tType RootType\n}\n\n// Walk concurrently walks Go source directories ($GOROOT, $GOPATH, etc) to find packages.\n//\n// For each package found, add will be called with the absolute\n// paths of the containing source directory and the package directory.\n//\n// Unlike filepath.WalkDir, Walk follows symbolic links\n// (while guarding against cycles).\nfunc Walk(roots []Root, add func(root Root, dir string), opts Options) {\n\tWalkSkip(roots, add, func(Root, string) bool { return false }, opts)\n}\n\n// WalkSkip concurrently walks Go source directories ($GOROOT, $GOPATH, etc) to\n// find packages.\n//\n// For each package found, add will be called with the absolute\n// paths of the containing source directory and the package directory.\n// For each directory that will be scanned, skip will be called\n// with the absolute paths of the containing source directory and the directory.\n// If skip returns false on a directory it will be processed.\n//\n// Unlike filepath.WalkDir, WalkSkip follows symbolic links\n// (while guarding against cycles).\nfunc WalkSkip(roots []Root, add func(root Root, dir string), skip func(root Root, dir string) bool, opts Options) {\n\tfor _, root := range roots {\n\t\twalkDir(root, add, skip, opts)\n\t}\n}\n\n// walkDir creates a walker and starts fastwalk with this walker.\nfunc walkDir(root Root, add func(Root, string), skip func(root Root, dir string) bool, opts Options) {\n\tif opts.Logf == nil {\n\t\topts.Logf = func(format string, args ...any) {}\n\t}\n\tif _, err := os.Stat(root.Path); os.IsNotExist(err) {\n\t\topts.Logf(\"skipping nonexistent directory: %v\", root.Path)\n\t\treturn\n\t}\n\tstart := time.Now()\n\topts.Logf(\"scanning %s\", root.Path)\n\n\tconcurrency := opts.Concurrency\n\tif concurrency == 0 {\n\t\t// The walk be either CPU-bound or I/O-bound, depending on what the\n\t\t// caller-supplied add function does and the details of the user's platform\n\t\t// and machine. Rather than trying to fine-tune the concurrency level for a\n\t\t// specific environment, we default to GOMAXPROCS: it is likely to be a good\n\t\t// choice for a CPU-bound add function, and if it is instead I/O-bound, then\n\t\t// dealing with I/O saturation is arguably the job of the kernel and/or\n\t\t// runtime. (Oversaturating I/O seems unlikely to harm performance as badly\n\t\t// as failing to saturate would.)\n\t\tconcurrency = runtime.GOMAXPROCS(0)\n\t}\n\tw := &walker{\n\t\troot: root,\n\t\tadd:  add,\n\t\tskip: skip,\n\t\topts: opts,\n\t\tsem:  make(chan struct{}, concurrency),\n\t}\n\tw.init()\n\n\tw.sem <- struct{}{}\n\tpath := root.Path\n\tif path == \"\" {\n\t\tpath = \".\"\n\t}\n\tif fi, err := os.Lstat(path); err == nil {\n\t\tw.walk(path, nil, fs.FileInfoToDirEntry(fi))\n\t} else {\n\t\tw.opts.Logf(\"scanning directory %v: %v\", root.Path, err)\n\t}\n\t<-w.sem\n\tw.walking.Wait()\n\n\topts.Logf(\"scanned %s in %v\", root.Path, time.Since(start))\n}\n\n// walker is the callback for fastwalk.Walk.\ntype walker struct {\n\troot Root                    // The source directory to scan.\n\tadd  func(Root, string)      // The callback that will be invoked for every possible Go package dir.\n\tskip func(Root, string) bool // The callback that will be invoked for every dir. dir is skipped if it returns true.\n\topts Options                 // Options passed to Walk by the user.\n\n\twalking     sync.WaitGroup\n\tsem         chan struct{} // Channel of semaphore tokens; send to acquire, receive to release.\n\tignoredDirs []string\n\n\tadded sync.Map // map[string]bool\n}\n\n// A symlinkList is a linked list of os.FileInfos for parent directories\n// reached via symlinks.\ntype symlinkList struct {\n\tinfo os.FileInfo\n\tprev *symlinkList\n}\n\n// init initializes the walker based on its Options\nfunc (w *walker) init() {\n\tvar ignoredPaths []string\n\tif w.root.Type == RootModuleCache {\n\t\tignoredPaths = []string{\"cache\"}\n\t}\n\tif !w.opts.ModulesEnabled && w.root.Type == RootGOPATH {\n\t\tignoredPaths = w.getIgnoredDirs(w.root.Path)\n\t\tignoredPaths = append(ignoredPaths, \"v\", \"mod\")\n\t}\n\n\tfor _, p := range ignoredPaths {\n\t\tfull := filepath.Join(w.root.Path, p)\n\t\tw.ignoredDirs = append(w.ignoredDirs, full)\n\t\tw.opts.Logf(\"Directory added to ignore list: %s\", full)\n\t}\n}\n\n// getIgnoredDirs reads an optional config file at <path>/.goimportsignore\n// of relative directories to ignore when scanning for go files.\n// The provided path is one of the $GOPATH entries with \"src\" appended.\nfunc (w *walker) getIgnoredDirs(path string) []string {\n\tfile := filepath.Join(path, \".goimportsignore\")\n\tslurp, err := os.ReadFile(file)\n\tif err != nil {\n\t\tw.opts.Logf(\"%v\", err)\n\t} else {\n\t\tw.opts.Logf(\"Read %s\", file)\n\t}\n\tif err != nil {\n\t\treturn nil\n\t}\n\n\tvar ignoredDirs []string\n\tbs := bufio.NewScanner(bytes.NewReader(slurp))\n\tfor bs.Scan() {\n\t\tline := strings.TrimSpace(bs.Text())\n\t\tif line == \"\" || strings.HasPrefix(line, \"#\") {\n\t\t\tcontinue\n\t\t}\n\t\tignoredDirs = append(ignoredDirs, line)\n\t}\n\treturn ignoredDirs\n}\n\n// shouldSkipDir reports whether the file should be skipped or not.\nfunc (w *walker) shouldSkipDir(dir string) bool {\n\tif slices.Contains(w.ignoredDirs, dir) {\n\t\treturn true\n\t}\n\tif w.skip != nil {\n\t\t// Check with the user specified callback.\n\t\treturn w.skip(w.root, dir)\n\t}\n\treturn false\n}\n\n// walk walks through the given path.\n//\n// Errors are logged if w.opts.Logf is non-nil, but otherwise ignored.\nfunc (w *walker) walk(path string, pathSymlinks *symlinkList, d fs.DirEntry) {\n\tif d.Type()&os.ModeSymlink != 0 {\n\t\t// Walk the symlink's target rather than the symlink itself.\n\t\t//\n\t\t// (Note that os.Stat, unlike the lower-lever os.Readlink,\n\t\t// follows arbitrarily many layers of symlinks, so it will eventually\n\t\t// reach either a non-symlink or a nonexistent target.)\n\t\t//\n\t\t// TODO(bcmills): 'go list all' itself ignores symlinks within GOROOT/src\n\t\t// and GOPATH/src. Do we really need to traverse them here? If so, why?\n\n\t\tfi, err := os.Stat(path)\n\t\tif err != nil {\n\t\t\tw.opts.Logf(\"%v\", err)\n\t\t\treturn\n\t\t}\n\n\t\t// Avoid walking symlink cycles: if we have already followed a symlink to\n\t\t// this directory as a parent of itself, don't follow it again.\n\t\t//\n\t\t// This doesn't catch the first time through a cycle, but it also minimizes\n\t\t// the number of extra stat calls we make if we *don't* encounter a cycle.\n\t\t// Since we don't actually expect to encounter symlink cycles in practice,\n\t\t// this seems like the right tradeoff.\n\t\tfor parent := pathSymlinks; parent != nil; parent = parent.prev {\n\t\t\tif os.SameFile(fi, parent.info) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tpathSymlinks = &symlinkList{\n\t\t\tinfo: fi,\n\t\t\tprev: pathSymlinks,\n\t\t}\n\t\td = fs.FileInfoToDirEntry(fi)\n\t}\n\n\tif d.Type().IsRegular() {\n\t\tif !strings.HasSuffix(path, \".go\") {\n\t\t\treturn\n\t\t}\n\n\t\tdir := filepath.Dir(path)\n\t\tif dir == w.root.Path && (w.root.Type == RootGOROOT || w.root.Type == RootGOPATH) {\n\t\t\t// Doesn't make sense to have regular files\n\t\t\t// directly in your $GOPATH/src or $GOROOT/src.\n\t\t\t//\n\t\t\t// TODO(bcmills): there are many levels of directory within\n\t\t\t// RootModuleCache where this also wouldn't make sense,\n\t\t\t// Can we generalize this to any directory without a corresponding\n\t\t\t// import path?\n\t\t\treturn\n\t\t}\n\n\t\tif _, dup := w.added.LoadOrStore(dir, true); !dup {\n\t\t\tw.add(w.root, dir)\n\t\t}\n\t}\n\n\tif !d.IsDir() {\n\t\treturn\n\t}\n\n\tbase := filepath.Base(path)\n\tif base == \"\" || base[0] == '.' || base[0] == '_' ||\n\t\tbase == \"testdata\" ||\n\t\t(w.root.Type == RootGOROOT && w.opts.ModulesEnabled && base == \"vendor\") ||\n\t\t(!w.opts.ModulesEnabled && base == \"node_modules\") ||\n\t\tw.shouldSkipDir(path) {\n\t\treturn\n\t}\n\n\t// Read the directory and walk its entries.\n\n\tf, err := os.Open(path)\n\tif err != nil {\n\t\tw.opts.Logf(\"%v\", err)\n\t\treturn\n\t}\n\tdefer f.Close()\n\n\tfor {\n\t\t// We impose an arbitrary limit on the number of ReadDir results per\n\t\t// directory to limit the amount of memory consumed for stale or upcoming\n\t\t// directory entries. The limit trades off CPU (number of syscalls to read\n\t\t// the whole directory) against RAM (reachable directory entries other than\n\t\t// the one currently being processed).\n\t\t//\n\t\t// Since we process the directories recursively, we will end up maintaining\n\t\t// a slice of entries for each level of the directory tree.\n\t\t// (Compare https://go.dev/issue/36197.)\n\t\tents, err := f.ReadDir(1024)\n\t\tif err != nil {\n\t\t\tif err != io.EOF {\n\t\t\t\tw.opts.Logf(\"%v\", err)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\tfor _, d := range ents {\n\t\t\tnextPath := filepath.Join(path, d.Name())\n\t\t\tif d.IsDir() {\n\t\t\t\tselect {\n\t\t\t\tcase w.sem <- struct{}{}:\n\t\t\t\t\t// Got a new semaphore token, so we can traverse the directory concurrently.\n\t\t\t\t\td := d\n\t\t\t\t\tw.walking.Add(1)\n\t\t\t\t\tgo func() {\n\t\t\t\t\t\tdefer func() {\n\t\t\t\t\t\t\t<-w.sem\n\t\t\t\t\t\t\tw.walking.Done()\n\t\t\t\t\t\t}()\n\t\t\t\t\t\tw.walk(nextPath, pathSymlinks, d)\n\t\t\t\t\t}()\n\t\t\t\t\tcontinue\n\n\t\t\t\tdefault:\n\t\t\t\t\t// No tokens available, so traverse serially.\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tw.walk(nextPath, pathSymlinks, d)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/imports/fix.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage imports\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/build\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"io/fs\"\n\t\"io/ioutil\"\n\t\"maps\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/tools/go/ast/astutil\"\n\t\"golang.org/x/tools/internal/event\"\n\t\"golang.org/x/tools/internal/gocommand\"\n\t\"golang.org/x/tools/internal/gopathwalk\"\n\t\"golang.org/x/tools/internal/stdlib\"\n)\n\n// importToGroup is a list of functions which map from an import path to\n// a group number.\nvar importToGroup = []func(localPrefix, importPath string) (num int, ok bool){\n\tfunc(localPrefix, importPath string) (num int, ok bool) {\n\t\tif localPrefix == \"\" {\n\t\t\treturn\n\t\t}\n\t\tfor p := range strings.SplitSeq(localPrefix, \",\") {\n\t\t\tif strings.HasPrefix(importPath, p) || strings.TrimSuffix(p, \"/\") == importPath {\n\t\t\t\treturn 3, true\n\t\t\t}\n\t\t}\n\t\treturn\n\t},\n\tfunc(_, importPath string) (num int, ok bool) {\n\t\tif strings.HasPrefix(importPath, \"appengine\") {\n\t\t\treturn 2, true\n\t\t}\n\t\treturn\n\t},\n\tfunc(_, importPath string) (num int, ok bool) {\n\t\tfirstComponent := strings.Split(importPath, \"/\")[0]\n\t\tif strings.Contains(firstComponent, \".\") {\n\t\t\treturn 1, true\n\t\t}\n\t\treturn\n\t},\n}\n\nfunc importGroup(localPrefix, importPath string) int {\n\tfor _, fn := range importToGroup {\n\t\tif n, ok := fn(localPrefix, importPath); ok {\n\t\t\treturn n\n\t\t}\n\t}\n\treturn 0\n}\n\ntype ImportFixType int\n\nconst (\n\tAddImport ImportFixType = iota\n\tDeleteImport\n\tSetImportName\n)\n\ntype ImportFix struct {\n\t// StmtInfo represents the import statement this fix will add, remove, or change.\n\tStmtInfo ImportInfo\n\t// IdentName is the identifier that this fix will add or remove.\n\tIdentName string\n\t// FixType is the type of fix this is (AddImport, DeleteImport, SetImportName).\n\tFixType   ImportFixType\n\tRelevance float64 // see pkg\n}\n\n// parseOtherFiles parses all the Go files in srcDir except filename, including\n// test files if filename looks like a test.\n//\n// It returns an error only if ctx is cancelled. Files with parse errors are\n// ignored.\nfunc parseOtherFiles(ctx context.Context, fset *token.FileSet, srcDir, filename string) ([]*ast.File, error) {\n\t// This could use go/packages but it doesn't buy much, and it fails\n\t// with https://golang.org/issue/26296 in LoadFiles mode in some cases.\n\tconsiderTests := strings.HasSuffix(filename, \"_test.go\")\n\n\tfileBase := filepath.Base(filename)\n\tpackageFileInfos, err := os.ReadDir(srcDir)\n\tif err != nil {\n\t\treturn nil, ctx.Err()\n\t}\n\n\tvar files []*ast.File\n\tfor _, fi := range packageFileInfos {\n\t\tif ctx.Err() != nil {\n\t\t\treturn nil, ctx.Err()\n\t\t}\n\t\tif fi.Name() == fileBase || !strings.HasSuffix(fi.Name(), \".go\") {\n\t\t\tcontinue\n\t\t}\n\t\tif !considerTests && strings.HasSuffix(fi.Name(), \"_test.go\") {\n\t\t\tcontinue\n\t\t}\n\n\t\tf, err := parser.ParseFile(fset, filepath.Join(srcDir, fi.Name()), nil, parser.SkipObjectResolution)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tfiles = append(files, f)\n\t}\n\n\treturn files, ctx.Err()\n}\n\n// addGlobals puts the names of package vars into the provided map.\nfunc addGlobals(f *ast.File, globals map[string]bool) {\n\tfor _, decl := range f.Decls {\n\t\tgenDecl, ok := decl.(*ast.GenDecl)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, spec := range genDecl.Specs {\n\t\t\tvalueSpec, ok := spec.(*ast.ValueSpec)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tglobals[valueSpec.Names[0].Name] = true\n\t\t}\n\t}\n}\n\n// collectReferences builds a map of selector expressions, from\n// left hand side (X) to a set of right hand sides (Sel).\nfunc collectReferences(f *ast.File) References {\n\trefs := References{}\n\n\tvar visitor visitFn\n\tvisitor = func(node ast.Node) ast.Visitor {\n\t\tif node == nil {\n\t\t\treturn visitor\n\t\t}\n\t\tswitch v := node.(type) {\n\t\tcase *ast.SelectorExpr:\n\t\t\txident, ok := v.X.(*ast.Ident)\n\t\t\tif !ok {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif xident.Obj != nil {\n\t\t\t\t// If the parser can resolve it, it's not a package ref.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif !ast.IsExported(v.Sel.Name) {\n\t\t\t\t// Whatever this is, it's not exported from a package.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tpkgName := xident.Name\n\t\t\tr := refs[pkgName]\n\t\t\tif r == nil {\n\t\t\t\tr = make(map[string]bool)\n\t\t\t\trefs[pkgName] = r\n\t\t\t}\n\t\t\tr[v.Sel.Name] = true\n\t\t}\n\t\treturn visitor\n\t}\n\tast.Walk(visitor, f)\n\treturn refs\n}\n\n// collectImports returns all the imports in f.\n// Unnamed imports (., _) and \"C\" are ignored.\nfunc collectImports(f *ast.File) []*ImportInfo {\n\tvar imports []*ImportInfo\n\tfor _, imp := range f.Imports {\n\t\tvar name string\n\t\tif imp.Name != nil {\n\t\t\tname = imp.Name.Name\n\t\t}\n\t\tif imp.Path.Value == `\"C\"` || name == \"_\" || name == \".\" {\n\t\t\tcontinue\n\t\t}\n\t\tpath := strings.Trim(imp.Path.Value, `\"`)\n\t\timports = append(imports, &ImportInfo{\n\t\t\tName:       name,\n\t\t\tImportPath: path,\n\t\t})\n\t}\n\treturn imports\n}\n\n// findMissingImport searches pass's candidates for an import that provides\n// pkg, containing all of syms.\nfunc (p *pass) findMissingImport(pkg string, syms map[string]bool) *ImportInfo {\n\tfor _, candidate := range p.candidates {\n\t\tpkgInfo, ok := p.knownPackages[candidate.ImportPath]\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\tif p.importIdentifier(candidate) != pkg {\n\t\t\tcontinue\n\t\t}\n\n\t\tallFound := true\n\t\tfor right := range syms {\n\t\t\tif !pkgInfo.Exports[right] {\n\t\t\t\tallFound = false\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif allFound {\n\t\t\treturn candidate\n\t\t}\n\t}\n\treturn nil\n}\n\n// A pass contains all the inputs and state necessary to fix a file's imports.\n// It can be modified in some ways during use; see comments below.\ntype pass struct {\n\t// Inputs. These must be set before a call to load, and not modified after.\n\tfset                 *token.FileSet // fset used to parse f and its siblings.\n\tf                    *ast.File      // the file being fixed.\n\tsrcDir               string         // the directory containing f.\n\tlogf                 func(string, ...any)\n\tsource               Source      // the environment to use for go commands, etc.\n\tloadRealPackageNames bool        // if true, load package names from disk rather than guessing them.\n\totherFiles           []*ast.File // sibling files.\n\tgoroot               string\n\n\t// Intermediate state, generated by load.\n\texistingImports map[string][]*ImportInfo\n\tallRefs         References\n\tmissingRefs     References\n\n\t// Inputs to fix. These can be augmented between successive fix calls.\n\tlastTry       bool                    // indicates that this is the last call and fix should clean up as best it can.\n\tcandidates    []*ImportInfo           // candidate imports in priority order.\n\tknownPackages map[string]*PackageInfo // information about all known packages.\n}\n\n// loadPackageNames saves the package names for everything referenced by imports.\nfunc (p *pass) loadPackageNames(ctx context.Context, imports []*ImportInfo) error {\n\tif p.logf != nil {\n\t\tp.logf(\"loading package names for %v packages\", len(imports))\n\t\tdefer func() {\n\t\t\tp.logf(\"done loading package names for %v packages\", len(imports))\n\t\t}()\n\t}\n\tvar unknown []string\n\tfor _, imp := range imports {\n\t\tif _, ok := p.knownPackages[imp.ImportPath]; ok {\n\t\t\tcontinue\n\t\t}\n\t\tunknown = append(unknown, imp.ImportPath)\n\t}\n\n\tnames, err := p.source.LoadPackageNames(ctx, p.srcDir, unknown)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// TODO(rfindley): revisit this. Why do we need to store known packages with\n\t// no exports? The inconsistent data is confusing.\n\tfor path, name := range names {\n\t\tp.knownPackages[path] = &PackageInfo{\n\t\t\tName:    name,\n\t\t\tExports: map[string]bool{},\n\t\t}\n\t}\n\treturn nil\n}\n\n// WithoutVersion removes a trailing major version, if there is one.\nfunc WithoutVersion(nm string) string {\n\tif v := path.Base(nm); len(v) > 0 && v[0] == 'v' {\n\t\tif _, err := strconv.Atoi(v[1:]); err == nil {\n\t\t\t// this is, for instance, called with rand/v2 and returns rand\n\t\t\tif len(v) < len(nm) {\n\t\t\t\txnm := nm[:len(nm)-len(v)-1]\n\t\t\t\treturn path.Base(xnm)\n\t\t\t}\n\t\t}\n\t}\n\treturn nm\n}\n\n// importIdentifier returns the identifier that imp will introduce. It will\n// guess if the package name has not been loaded, e.g. because the source\n// is not available.\nfunc (p *pass) importIdentifier(imp *ImportInfo) string {\n\tif imp.Name != \"\" {\n\t\treturn imp.Name\n\t}\n\tknown := p.knownPackages[imp.ImportPath]\n\tif known != nil && known.Name != \"\" {\n\t\treturn WithoutVersion(known.Name)\n\t}\n\treturn ImportPathToAssumedName(imp.ImportPath)\n}\n\n// load reads in everything necessary to run a pass, and reports whether the\n// file already has all the imports it needs. It fills in p.missingRefs with the\n// file's missing symbols, if any, or removes unused imports if not.\nfunc (p *pass) load(ctx context.Context) ([]*ImportFix, bool) {\n\tp.knownPackages = map[string]*PackageInfo{}\n\tp.missingRefs = References{}\n\tp.existingImports = map[string][]*ImportInfo{}\n\n\t// Load basic information about the file in question.\n\tp.allRefs = collectReferences(p.f)\n\n\t// Load stuff from other files in the same package:\n\t// global variables so we know they don't need resolving, and imports\n\t// that we might want to mimic.\n\tglobals := map[string]bool{}\n\tfor _, otherFile := range p.otherFiles {\n\t\t// Don't load globals from files that are in the same directory\n\t\t// but a different package. Using them to suggest imports is OK.\n\t\tif p.f.Name.Name == otherFile.Name.Name {\n\t\t\taddGlobals(otherFile, globals)\n\t\t}\n\t\tp.candidates = append(p.candidates, collectImports(otherFile)...)\n\t}\n\n\t// Resolve all the import paths we've seen to package names, and store\n\t// f's imports by the identifier they introduce.\n\timports := collectImports(p.f)\n\tif p.loadRealPackageNames {\n\t\terr := p.loadPackageNames(ctx, append(imports, p.candidates...))\n\t\tif err != nil {\n\t\t\tif p.logf != nil {\n\t\t\t\tp.logf(\"loading package names: %v\", err)\n\t\t\t}\n\t\t\treturn nil, false\n\t\t}\n\t}\n\tfor _, imp := range imports {\n\t\tp.existingImports[p.importIdentifier(imp)] = append(p.existingImports[p.importIdentifier(imp)], imp)\n\t}\n\n\t// Find missing references.\n\tfor left, rights := range p.allRefs {\n\t\tif globals[left] {\n\t\t\tcontinue\n\t\t}\n\t\t_, ok := p.existingImports[left]\n\t\tif !ok {\n\t\t\tp.missingRefs[left] = rights\n\t\t\tcontinue\n\t\t}\n\t}\n\tif len(p.missingRefs) != 0 {\n\t\treturn nil, false\n\t}\n\n\treturn p.fix()\n}\n\n// fix attempts to satisfy missing imports using p.candidates. If it finds\n// everything, or if p.lastTry is true, it updates fixes to add the imports it found,\n// delete anything unused, and update import names, and returns true.\nfunc (p *pass) fix() ([]*ImportFix, bool) {\n\t// Find missing imports.\n\tvar selected []*ImportInfo\n\tfor left, rights := range p.missingRefs {\n\t\tif imp := p.findMissingImport(left, rights); imp != nil {\n\t\t\tselected = append(selected, imp)\n\t\t}\n\t}\n\n\tif !p.lastTry && len(selected) != len(p.missingRefs) {\n\t\treturn nil, false\n\t}\n\n\t// Found everything, or giving up. Add the new imports and remove any unused.\n\tvar fixes []*ImportFix\n\tfor _, identifierImports := range p.existingImports {\n\t\tfor _, imp := range identifierImports {\n\t\t\t// We deliberately ignore globals here, because we can't be sure\n\t\t\t// they're in the same package. People do things like put multiple\n\t\t\t// main packages in the same directory, and we don't want to\n\t\t\t// remove imports if they happen to have the same name as a var in\n\t\t\t// a different package.\n\t\t\tif _, ok := p.allRefs[p.importIdentifier(imp)]; !ok {\n\t\t\t\tfixes = append(fixes, &ImportFix{\n\t\t\t\t\tStmtInfo:  *imp,\n\t\t\t\t\tIdentName: p.importIdentifier(imp),\n\t\t\t\t\tFixType:   DeleteImport,\n\t\t\t\t})\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// An existing import may need to update its import name to be correct.\n\t\t\tif name := p.importSpecName(imp); name != imp.Name {\n\t\t\t\tfixes = append(fixes, &ImportFix{\n\t\t\t\t\tStmtInfo: ImportInfo{\n\t\t\t\t\t\tName:       name,\n\t\t\t\t\t\tImportPath: imp.ImportPath,\n\t\t\t\t\t},\n\t\t\t\t\tIdentName: p.importIdentifier(imp),\n\t\t\t\t\tFixType:   SetImportName,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\t// Collecting fixes involved map iteration, so sort for stability. See\n\t// golang/go#59976.\n\tsortFixes(fixes)\n\n\t// collect selected fixes in a separate slice, so that it can be sorted\n\t// separately. Note that these fixes must occur after fixes to existing\n\t// imports. TODO(rfindley): figure out why.\n\tvar selectedFixes []*ImportFix\n\tfor _, imp := range selected {\n\t\tselectedFixes = append(selectedFixes, &ImportFix{\n\t\t\tStmtInfo: ImportInfo{\n\t\t\t\tName:       p.importSpecName(imp),\n\t\t\t\tImportPath: imp.ImportPath,\n\t\t\t},\n\t\t\tIdentName: p.importIdentifier(imp),\n\t\t\tFixType:   AddImport,\n\t\t})\n\t}\n\tsortFixes(selectedFixes)\n\n\treturn append(fixes, selectedFixes...), true\n}\n\nfunc sortFixes(fixes []*ImportFix) {\n\tsort.Slice(fixes, func(i, j int) bool {\n\t\tfi, fj := fixes[i], fixes[j]\n\t\tif fi.StmtInfo.ImportPath != fj.StmtInfo.ImportPath {\n\t\t\treturn fi.StmtInfo.ImportPath < fj.StmtInfo.ImportPath\n\t\t}\n\t\tif fi.StmtInfo.Name != fj.StmtInfo.Name {\n\t\t\treturn fi.StmtInfo.Name < fj.StmtInfo.Name\n\t\t}\n\t\tif fi.IdentName != fj.IdentName {\n\t\t\treturn fi.IdentName < fj.IdentName\n\t\t}\n\t\treturn fi.FixType < fj.FixType\n\t})\n}\n\n// importSpecName gets the import name of imp in the import spec.\n//\n// When the import identifier matches the assumed import name, the import name does\n// not appear in the import spec.\nfunc (p *pass) importSpecName(imp *ImportInfo) string {\n\t// If we did not load the real package names, or the name is already set,\n\t// we just return the existing name.\n\tif !p.loadRealPackageNames || imp.Name != \"\" {\n\t\treturn imp.Name\n\t}\n\n\tident := p.importIdentifier(imp)\n\tif ident == ImportPathToAssumedName(imp.ImportPath) {\n\t\treturn \"\" // ident not needed since the assumed and real names are the same.\n\t}\n\treturn ident\n}\n\n// apply will perform the fixes on f in order.\nfunc apply(fset *token.FileSet, f *ast.File, fixes []*ImportFix) {\n\tfor _, fix := range fixes {\n\t\tswitch fix.FixType {\n\t\tcase DeleteImport:\n\t\t\tastutil.DeleteNamedImport(fset, f, fix.StmtInfo.Name, fix.StmtInfo.ImportPath)\n\t\tcase AddImport:\n\t\t\tastutil.AddNamedImport(fset, f, fix.StmtInfo.Name, fix.StmtInfo.ImportPath)\n\t\tcase SetImportName:\n\t\t\t// Find the matching import path and change the name.\n\t\t\tfor _, spec := range f.Imports {\n\t\t\t\tpath := strings.Trim(spec.Path.Value, `\"`)\n\t\t\t\tif path == fix.StmtInfo.ImportPath {\n\t\t\t\t\tspec.Name = &ast.Ident{\n\t\t\t\t\t\tName:    fix.StmtInfo.Name,\n\t\t\t\t\t\tNamePos: spec.Pos(),\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// assumeSiblingImportsValid assumes that siblings' use of packages is valid,\n// adding the exports they use.\nfunc (p *pass) assumeSiblingImportsValid() {\n\tfor _, f := range p.otherFiles {\n\t\trefs := collectReferences(f)\n\t\timports := collectImports(f)\n\t\timportsByName := map[string]*ImportInfo{}\n\t\tfor _, imp := range imports {\n\t\t\timportsByName[p.importIdentifier(imp)] = imp\n\t\t}\n\t\tfor left, rights := range refs {\n\t\t\tif imp, ok := importsByName[left]; ok {\n\t\t\t\tif m, ok := stdlib.PackageSymbols[imp.ImportPath]; ok {\n\t\t\t\t\t// We have the stdlib in memory; no need to guess.\n\t\t\t\t\trights = symbolNameSet(m)\n\t\t\t\t}\n\t\t\t\t// TODO(rfindley): we should set package name here, for consistency.\n\t\t\t\tp.addCandidate(imp, &PackageInfo{\n\t\t\t\t\t// no name; we already know it.\n\t\t\t\t\tExports: rights,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n}\n\n// addCandidate adds a candidate import to p, and merges in the information\n// in pkg.\nfunc (p *pass) addCandidate(imp *ImportInfo, pkg *PackageInfo) {\n\tp.candidates = append(p.candidates, imp)\n\tif existing, ok := p.knownPackages[imp.ImportPath]; ok {\n\t\tif existing.Name == \"\" {\n\t\t\texisting.Name = pkg.Name\n\t\t}\n\t\tfor export := range pkg.Exports {\n\t\t\texisting.Exports[export] = true\n\t\t}\n\t} else {\n\t\tp.knownPackages[imp.ImportPath] = pkg\n\t}\n}\n\n// fixImports adds and removes imports from f so that all its references are\n// satisfied and there are no unused imports.\n//\n// This is declared as a variable rather than a function so goimports can\n// easily be extended by adding a file with an init function.\n//\n// DO NOT REMOVE: used internally at Google.\nvar fixImports = fixImportsDefault\n\nfunc fixImportsDefault(fset *token.FileSet, f *ast.File, filename string, env *ProcessEnv) error {\n\tfixes, err := getFixes(context.Background(), fset, f, filename, env)\n\tif err != nil {\n\t\treturn err\n\t}\n\tapply(fset, f, fixes)\n\treturn nil\n}\n\n// getFixes gets the import fixes that need to be made to f in order to fix the imports.\n// It does not modify the ast.\nfunc getFixes(ctx context.Context, fset *token.FileSet, f *ast.File, filename string, env *ProcessEnv) ([]*ImportFix, error) {\n\tsource, err := NewProcessEnvSource(env, filename, f.Name.Name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgoEnv, err := env.goEnv()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn getFixesWithSource(ctx, fset, f, filename, goEnv[\"GOROOT\"], env.logf, source)\n}\n\nfunc getFixesWithSource(ctx context.Context, fset *token.FileSet, f *ast.File, filename string, goroot string, logf func(string, ...any), source Source) ([]*ImportFix, error) {\n\t// This logic is defensively duplicated from getFixes.\n\tabs, err := filepath.Abs(filename)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsrcDir := filepath.Dir(abs)\n\n\tif logf != nil {\n\t\tlogf(\"fixImports(filename=%q), srcDir=%q ...\", filename, srcDir)\n\t}\n\n\t// First pass: looking only at f, and using the naive algorithm to\n\t// derive package names from import paths, see if the file is already\n\t// complete. We can't add any imports yet, because we don't know\n\t// if missing references are actually package vars.\n\tp := &pass{\n\t\tfset:   fset,\n\t\tf:      f,\n\t\tsrcDir: srcDir,\n\t\tlogf:   logf,\n\t\tgoroot: goroot,\n\t\tsource: source,\n\t}\n\tif fixes, done := p.load(ctx); done {\n\t\treturn fixes, nil\n\t}\n\n\totherFiles, err := parseOtherFiles(ctx, fset, srcDir, filename)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Second pass: add information from other files in the same package,\n\t// like their package vars and imports.\n\tp.otherFiles = otherFiles\n\tif fixes, done := p.load(ctx); done {\n\t\treturn fixes, nil\n\t}\n\n\t// Now we can try adding imports from the stdlib.\n\tp.assumeSiblingImportsValid()\n\taddStdlibCandidates(p, p.missingRefs)\n\tif fixes, done := p.fix(); done {\n\t\treturn fixes, nil\n\t}\n\n\t// Third pass: get real package names where we had previously used\n\t// the naive algorithm.\n\tp = &pass{\n\t\tfset:   fset,\n\t\tf:      f,\n\t\tsrcDir: srcDir,\n\t\tlogf:   logf,\n\t\tgoroot: goroot,\n\t\tsource: p.source, // safe to reuse, as it's just a wrapper around env\n\t}\n\tp.loadRealPackageNames = true\n\tp.otherFiles = otherFiles\n\tif fixes, done := p.load(ctx); done {\n\t\treturn fixes, nil\n\t}\n\n\tif err := addStdlibCandidates(p, p.missingRefs); err != nil {\n\t\treturn nil, err\n\t}\n\tp.assumeSiblingImportsValid()\n\tif fixes, done := p.fix(); done {\n\t\treturn fixes, nil\n\t}\n\n\t// Go look for candidates in $GOPATH, etc. We don't necessarily load\n\t// the real exports of sibling imports, so keep assuming their contents.\n\tif err := addExternalCandidates(ctx, p, p.missingRefs, filename); err != nil {\n\t\treturn nil, err\n\t}\n\n\tp.lastTry = true\n\tfixes, _ := p.fix()\n\treturn fixes, nil\n}\n\n// MaxRelevance is the highest relevance, used for the standard library.\n// Chosen arbitrarily to match pre-existing gopls code.\nconst MaxRelevance = 7.0\n\n// getCandidatePkgs works with the passed callback to find all acceptable packages.\n// It deduplicates by import path, and uses a cached stdlib rather than reading\n// from disk.\nfunc getCandidatePkgs(ctx context.Context, wrappedCallback *scanCallback, filename, filePkg string, env *ProcessEnv) error {\n\tnotSelf := func(p *pkg) bool {\n\t\treturn p.packageName != filePkg || p.dir != filepath.Dir(filename)\n\t}\n\tgoenv, err := env.goEnv()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar mu sync.Mutex // to guard asynchronous access to dupCheck\n\tdupCheck := map[string]struct{}{}\n\n\t// Start off with the standard library.\n\tfor importPath, symbols := range stdlib.PackageSymbols {\n\t\tp := &pkg{\n\t\t\tdir:             filepath.Join(goenv[\"GOROOT\"], \"src\", importPath),\n\t\t\timportPathShort: importPath,\n\t\t\tpackageName:     path.Base(importPath),\n\t\t\trelevance:       MaxRelevance,\n\t\t}\n\t\tdupCheck[importPath] = struct{}{}\n\t\tif notSelf(p) && wrappedCallback.dirFound(p) && wrappedCallback.packageNameLoaded(p) {\n\t\t\tvar exports []stdlib.Symbol\n\t\t\tfor _, sym := range symbols {\n\t\t\t\tswitch sym.Kind {\n\t\t\t\tcase stdlib.Func, stdlib.Type, stdlib.Var, stdlib.Const:\n\t\t\t\t\texports = append(exports, sym)\n\t\t\t\t}\n\t\t\t}\n\t\t\twrappedCallback.exportsLoaded(p, exports)\n\t\t}\n\t}\n\n\tscanFilter := &scanCallback{\n\t\trootFound: func(root gopathwalk.Root) bool {\n\t\t\t// Exclude goroot results -- getting them is relatively expensive, not cached,\n\t\t\t// and generally redundant with the in-memory version.\n\t\t\treturn root.Type != gopathwalk.RootGOROOT && wrappedCallback.rootFound(root)\n\t\t},\n\t\tdirFound: wrappedCallback.dirFound,\n\t\tpackageNameLoaded: func(pkg *pkg) bool {\n\t\t\tmu.Lock()\n\t\t\tdefer mu.Unlock()\n\t\t\tif _, ok := dupCheck[pkg.importPathShort]; ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tdupCheck[pkg.importPathShort] = struct{}{}\n\t\t\treturn notSelf(pkg) && wrappedCallback.packageNameLoaded(pkg)\n\t\t},\n\t\texportsLoaded: func(pkg *pkg, exports []stdlib.Symbol) {\n\t\t\t// If we're an x_test, load the package under test's test variant.\n\t\t\tif strings.HasSuffix(filePkg, \"_test\") && pkg.dir == filepath.Dir(filename) {\n\t\t\t\tvar err error\n\t\t\t\t_, exports, err = loadExportsFromFiles(ctx, env, pkg.dir, true)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\twrappedCallback.exportsLoaded(pkg, exports)\n\t\t},\n\t}\n\tresolver, err := env.GetResolver()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn resolver.scan(ctx, scanFilter)\n}\n\nfunc ScoreImportPaths(ctx context.Context, env *ProcessEnv, paths []string) (map[string]float64, error) {\n\tresult := make(map[string]float64)\n\tresolver, err := env.GetResolver()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, path := range paths {\n\t\tresult[path] = resolver.scoreImportPath(ctx, path)\n\t}\n\treturn result, nil\n}\n\nfunc PrimeCache(ctx context.Context, resolver Resolver) error {\n\t// Fully scan the disk for directories, but don't actually read any Go files.\n\tcallback := &scanCallback{\n\t\trootFound: func(root gopathwalk.Root) bool {\n\t\t\t// See getCandidatePkgs: walking GOROOT is apparently expensive and\n\t\t\t// unnecessary.\n\t\t\treturn root.Type != gopathwalk.RootGOROOT\n\t\t},\n\t\tdirFound: func(pkg *pkg) bool {\n\t\t\treturn false\n\t\t},\n\t\t// packageNameLoaded and exportsLoaded must never be called.\n\t}\n\n\treturn resolver.scan(ctx, callback)\n}\n\nfunc candidateImportName(pkg *pkg) string {\n\tif ImportPathToAssumedName(pkg.importPathShort) != pkg.packageName {\n\t\treturn pkg.packageName\n\t}\n\treturn \"\"\n}\n\n// GetAllCandidates calls wrapped for each package whose name starts with\n// searchPrefix, and can be imported from filename with the package name filePkg.\n//\n// Beware that the wrapped function may be called multiple times concurrently.\n// TODO(adonovan): encapsulate the concurrency.\nfunc GetAllCandidates(ctx context.Context, wrapped func(ImportFix), searchPrefix, filename, filePkg string, env *ProcessEnv) error {\n\tcallback := &scanCallback{\n\t\trootFound: func(gopathwalk.Root) bool {\n\t\t\treturn true\n\t\t},\n\t\tdirFound: func(pkg *pkg) bool {\n\t\t\tif !CanUse(filename, pkg.dir) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Try the assumed package name first, then a simpler path match\n\t\t\t// in case of packages named vN, which are not uncommon.\n\t\t\treturn strings.HasPrefix(ImportPathToAssumedName(pkg.importPathShort), searchPrefix) ||\n\t\t\t\tstrings.HasPrefix(path.Base(pkg.importPathShort), searchPrefix)\n\t\t},\n\t\tpackageNameLoaded: func(pkg *pkg) bool {\n\t\t\tif !strings.HasPrefix(pkg.packageName, searchPrefix) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\twrapped(ImportFix{\n\t\t\t\tStmtInfo: ImportInfo{\n\t\t\t\t\tImportPath: pkg.importPathShort,\n\t\t\t\t\tName:       candidateImportName(pkg),\n\t\t\t\t},\n\t\t\t\tIdentName: pkg.packageName,\n\t\t\t\tFixType:   AddImport,\n\t\t\t\tRelevance: pkg.relevance,\n\t\t\t})\n\t\t\treturn false\n\t\t},\n\t}\n\treturn getCandidatePkgs(ctx, callback, filename, filePkg, env)\n}\n\n// GetImportPaths calls wrapped for each package whose import path starts with\n// searchPrefix, and can be imported from filename with the package name filePkg.\nfunc GetImportPaths(ctx context.Context, wrapped func(ImportFix), searchPrefix, filename, filePkg string, env *ProcessEnv) error {\n\tcallback := &scanCallback{\n\t\trootFound: func(gopathwalk.Root) bool {\n\t\t\treturn true\n\t\t},\n\t\tdirFound: func(pkg *pkg) bool {\n\t\t\tif !CanUse(filename, pkg.dir) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn strings.HasPrefix(pkg.importPathShort, searchPrefix)\n\t\t},\n\t\tpackageNameLoaded: func(pkg *pkg) bool {\n\t\t\twrapped(ImportFix{\n\t\t\t\tStmtInfo: ImportInfo{\n\t\t\t\t\tImportPath: pkg.importPathShort,\n\t\t\t\t\tName:       candidateImportName(pkg),\n\t\t\t\t},\n\t\t\t\tIdentName: pkg.packageName,\n\t\t\t\tFixType:   AddImport,\n\t\t\t\tRelevance: pkg.relevance,\n\t\t\t})\n\t\t\treturn false\n\t\t},\n\t}\n\treturn getCandidatePkgs(ctx, callback, filename, filePkg, env)\n}\n\n// A PackageExport is a package and its exports.\ntype PackageExport struct {\n\tFix     *ImportFix\n\tExports []stdlib.Symbol\n}\n\n// GetPackageExports returns all known packages with name pkg and their exports.\nfunc GetPackageExports(ctx context.Context, wrapped func(PackageExport), searchPkg, filename, filePkg string, env *ProcessEnv) error {\n\tcallback := &scanCallback{\n\t\trootFound: func(gopathwalk.Root) bool {\n\t\t\treturn true\n\t\t},\n\t\tdirFound: func(pkg *pkg) bool {\n\t\t\treturn pkgIsCandidate(filename, References{searchPkg: nil}, pkg)\n\t\t},\n\t\tpackageNameLoaded: func(pkg *pkg) bool {\n\t\t\treturn pkg.packageName == searchPkg\n\t\t},\n\t\texportsLoaded: func(pkg *pkg, exports []stdlib.Symbol) {\n\t\t\tsortSymbols(exports)\n\t\t\twrapped(PackageExport{\n\t\t\t\tFix: &ImportFix{\n\t\t\t\t\tStmtInfo: ImportInfo{\n\t\t\t\t\t\tImportPath: pkg.importPathShort,\n\t\t\t\t\t\tName:       candidateImportName(pkg),\n\t\t\t\t\t},\n\t\t\t\t\tIdentName: pkg.packageName,\n\t\t\t\t\tFixType:   AddImport,\n\t\t\t\t\tRelevance: pkg.relevance,\n\t\t\t\t},\n\t\t\t\tExports: exports,\n\t\t\t})\n\t\t},\n\t}\n\treturn getCandidatePkgs(ctx, callback, filename, filePkg, env)\n}\n\n// TODO(rfindley): we should depend on GOOS and GOARCH, to provide accurate\n// imports when doing cross-platform development.\nvar requiredGoEnvVars = []string{\n\t\"GO111MODULE\",\n\t\"GOFLAGS\",\n\t\"GOINSECURE\",\n\t\"GOMOD\",\n\t\"GOMODCACHE\",\n\t\"GONOPROXY\",\n\t\"GONOSUMDB\",\n\t\"GOPATH\",\n\t\"GOPROXY\",\n\t\"GOROOT\",\n\t\"GOSUMDB\",\n\t\"GOWORK\",\n}\n\n// ProcessEnv contains environment variables and settings that affect the use of\n// the go command, the go/build package, etc.\n//\n// ...a ProcessEnv *also* overwrites its Env along with derived state in the\n// form of the resolver. And because it is lazily initialized, an env may just\n// be broken and unusable, but there is no way for the caller to detect that:\n// all queries will just fail.\n//\n// TODO(rfindley): refactor this package so that this type (perhaps renamed to\n// just Env or Config) is an immutable configuration struct, to be exchanged\n// for an initialized object via a constructor that returns an error. Perhaps\n// the signature should be `func NewResolver(*Env) (*Resolver, error)`, where\n// resolver is a concrete type used for resolving imports. Via this\n// refactoring, we can avoid the need to call ProcessEnv.init and\n// ProcessEnv.GoEnv everywhere, and implicitly fix all the places where this\n// these are misused. Also, we'd delegate the caller the decision of how to\n// handle a broken environment.\ntype ProcessEnv struct {\n\tGocmdRunner *gocommand.Runner\n\n\tBuildFlags []string\n\tModFlag    string\n\n\t// SkipPathInScan returns true if the path should be skipped from scans of\n\t// the RootCurrentModule root type. The function argument is a clean,\n\t// absolute path.\n\tSkipPathInScan func(string) bool\n\n\t// Env overrides the OS environment, and can be used to specify\n\t// GOPROXY, GO111MODULE, etc. PATH cannot be set here, because\n\t// exec.Command will not honor it.\n\t// Specifying all of requiredGoEnvVars avoids a call to `go env`.\n\tEnv map[string]string\n\n\tWorkingDir string\n\n\t// If Logf is non-nil, debug logging is enabled through this function.\n\tLogf func(format string, args ...any)\n\n\t// If set, ModCache holds a shared cache of directory info to use across\n\t// multiple ProcessEnvs.\n\tModCache *DirInfoCache\n\n\tinitialized bool // see TODO above\n\n\t// resolver and resolverErr are lazily evaluated (see GetResolver).\n\t// This is unclean, but see the big TODO in the docstring for ProcessEnv\n\t// above: for now, we can't be sure that the ProcessEnv is fully initialized.\n\tresolver    Resolver\n\tresolverErr error\n}\n\nfunc (e *ProcessEnv) goEnv() (map[string]string, error) {\n\tif err := e.init(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn e.Env, nil\n}\n\nfunc (e *ProcessEnv) matchFile(dir, name string) (bool, error) {\n\tbctx, err := e.buildContext()\n\tif err != nil {\n\t\treturn false, err\n\t}\n\treturn bctx.MatchFile(dir, name)\n}\n\n// CopyConfig copies the env's configuration into a new env.\nfunc (e *ProcessEnv) CopyConfig() *ProcessEnv {\n\tcopy := &ProcessEnv{\n\t\tGocmdRunner: e.GocmdRunner,\n\t\tinitialized: e.initialized,\n\t\tBuildFlags:  e.BuildFlags,\n\t\tLogf:        e.Logf,\n\t\tWorkingDir:  e.WorkingDir,\n\t\tresolver:    nil,\n\t\tEnv:         map[string]string{},\n\t}\n\tmaps.Copy(copy.Env, e.Env)\n\treturn copy\n}\n\nfunc (e *ProcessEnv) init() error {\n\tif e.initialized {\n\t\treturn nil\n\t}\n\n\tfoundAllRequired := true\n\tfor _, k := range requiredGoEnvVars {\n\t\tif _, ok := e.Env[k]; !ok {\n\t\t\tfoundAllRequired = false\n\t\t\tbreak\n\t\t}\n\t}\n\tif foundAllRequired {\n\t\te.initialized = true\n\t\treturn nil\n\t}\n\n\tif e.Env == nil {\n\t\te.Env = map[string]string{}\n\t}\n\n\tgoEnv := map[string]string{}\n\tstdout, err := e.invokeGo(context.TODO(), \"env\", append([]string{\"-json\"}, requiredGoEnvVars...)...)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := json.Unmarshal(stdout.Bytes(), &goEnv); err != nil {\n\t\treturn err\n\t}\n\tmaps.Copy(e.Env, goEnv)\n\te.initialized = true\n\treturn nil\n}\n\nfunc (e *ProcessEnv) env() []string {\n\tvar env []string // the gocommand package will prepend os.Environ.\n\tfor k, v := range e.Env {\n\t\tenv = append(env, k+\"=\"+v)\n\t}\n\treturn env\n}\n\nfunc (e *ProcessEnv) GetResolver() (Resolver, error) {\n\tif err := e.init(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif e.resolver == nil && e.resolverErr == nil {\n\t\t// TODO(rfindley): we should only use a gopathResolver here if the working\n\t\t// directory is actually *in* GOPATH. (I seem to recall an open gopls issue\n\t\t// for this behavior, but I can't find it).\n\t\t//\n\t\t// For gopls, we can optionally explicitly choose a resolver type, since we\n\t\t// already know the view type.\n\t\tif e.Env[\"GOMOD\"] == \"\" && (e.Env[\"GOWORK\"] == \"\" || e.Env[\"GOWORK\"] == \"off\") {\n\t\t\te.resolver = newGopathResolver(e)\n\t\t\te.logf(\"created gopath resolver\")\n\t\t} else if r, err := newModuleResolver(e, e.ModCache); err != nil {\n\t\t\te.resolverErr = err\n\t\t\te.logf(\"failed to create module resolver: %v\", err)\n\t\t} else {\n\t\t\te.resolver = Resolver(r)\n\t\t\te.logf(\"created module resolver\")\n\t\t}\n\t}\n\n\treturn e.resolver, e.resolverErr\n}\n\n// logf logs if e.Logf is non-nil.\nfunc (e *ProcessEnv) logf(format string, args ...any) {\n\tif e.Logf != nil {\n\t\te.Logf(format, args...)\n\t}\n}\n\n// buildContext returns the build.Context to use for matching files.\n//\n// TODO(rfindley): support dynamic GOOS, GOARCH here, when doing cross-platform\n// development.\nfunc (e *ProcessEnv) buildContext() (*build.Context, error) {\n\tctx := build.Default\n\tgoenv, err := e.goEnv()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tctx.GOROOT = goenv[\"GOROOT\"]\n\tctx.GOPATH = goenv[\"GOPATH\"]\n\n\t// As of Go 1.14, build.Context has a Dir field\n\t// (see golang.org/issue/34860).\n\t// Populate it only if present.\n\trc := reflect.ValueOf(&ctx).Elem()\n\tdir := rc.FieldByName(\"Dir\")\n\tif dir.IsValid() && dir.Kind() == reflect.String {\n\t\tdir.SetString(e.WorkingDir)\n\t}\n\n\t// Since Go 1.11, go/build.Context.Import may invoke 'go list' depending on\n\t// the value in GO111MODULE in the process's environment. We always want to\n\t// run in GOPATH mode when calling Import, so we need to prevent this from\n\t// happening. In Go 1.16, GO111MODULE defaults to \"on\", so this problem comes\n\t// up more frequently.\n\t//\n\t// HACK: setting any of the Context I/O hooks prevents Import from invoking\n\t// 'go list', regardless of GO111MODULE. This is undocumented, but it's\n\t// unlikely to change before GOPATH support is removed.\n\tctx.ReadDir = ioutil.ReadDir\n\n\treturn &ctx, nil\n}\n\nfunc (e *ProcessEnv) invokeGo(ctx context.Context, verb string, args ...string) (*bytes.Buffer, error) {\n\tinv := gocommand.Invocation{\n\t\tVerb:       verb,\n\t\tArgs:       args,\n\t\tBuildFlags: e.BuildFlags,\n\t\tEnv:        e.env(),\n\t\tLogf:       e.Logf,\n\t\tWorkingDir: e.WorkingDir,\n\t}\n\treturn e.GocmdRunner.Run(ctx, inv)\n}\n\nfunc addStdlibCandidates(pass *pass, refs References) error {\n\tlocalbase := func(nm string) string {\n\t\tans := path.Base(nm)\n\t\tif ans[0] == 'v' {\n\t\t\t// this is called, for instance, with math/rand/v2 and returns rand/v2\n\t\t\tif _, err := strconv.Atoi(ans[1:]); err == nil {\n\t\t\t\tix := strings.LastIndex(nm, ans)\n\t\t\t\tmore := path.Base(nm[:ix])\n\t\t\t\tans = path.Join(more, ans)\n\t\t\t}\n\t\t}\n\t\treturn ans\n\t}\n\tadd := func(pkg string) {\n\t\t// Prevent self-imports.\n\t\tif path.Base(pkg) == pass.f.Name.Name && filepath.Join(pass.goroot, \"src\", pkg) == pass.srcDir {\n\t\t\treturn\n\t\t}\n\t\texports := symbolNameSet(stdlib.PackageSymbols[pkg])\n\t\tpass.addCandidate(\n\t\t\t&ImportInfo{ImportPath: pkg},\n\t\t\t&PackageInfo{Name: localbase(pkg), Exports: exports})\n\t}\n\tfor left := range refs {\n\t\tif left == \"rand\" {\n\t\t\t// Make sure we try crypto/rand before any version of math/rand as both have Int()\n\t\t\t// and our policy is to recommend crypto\n\t\t\tadd(\"crypto/rand\")\n\t\t\t// if the user's no later than go1.21, this should be \"math/rand\"\n\t\t\t// but we have no way of figuring out what the user is using\n\t\t\t// TODO: investigate using the toolchain version to disambiguate in the stdlib\n\t\t\tadd(\"math/rand/v2\")\n\t\t\t// math/rand has an overlapping API\n\t\t\t// TestIssue66407 fails without this\n\t\t\tadd(\"math/rand\")\n\t\t\tcontinue\n\t\t}\n\t\tfor importPath := range stdlib.PackageSymbols {\n\t\t\tif path.Base(importPath) == left {\n\t\t\t\tadd(importPath)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// A Resolver does the build-system-specific parts of goimports.\ntype Resolver interface {\n\t// loadPackageNames loads the package names in importPaths.\n\tloadPackageNames(importPaths []string, srcDir string) (map[string]string, error)\n\n\t// scan works with callback to search for packages. See scanCallback for details.\n\tscan(ctx context.Context, callback *scanCallback) error\n\n\t// loadExports returns the package name and set of exported symbols in the\n\t// package at dir. loadExports may be called concurrently.\n\tloadExports(ctx context.Context, pkg *pkg, includeTest bool) (string, []stdlib.Symbol, error)\n\n\t// scoreImportPath returns the relevance for an import path.\n\tscoreImportPath(ctx context.Context, path string) float64\n\n\t// ClearForNewScan returns a new Resolver based on the receiver that has\n\t// cleared its internal caches of directory contents.\n\t//\n\t// The new resolver should be primed and then set via\n\t// [ProcessEnv.UpdateResolver].\n\tClearForNewScan() Resolver\n}\n\n// A scanCallback controls a call to scan and receives its results.\n// In general, minor errors will be silently discarded; a user should not\n// expect to receive a full series of calls for everything.\ntype scanCallback struct {\n\t// rootFound is called before scanning a new root dir. If it returns true,\n\t// the root will be scanned. Returning false will not necessarily prevent\n\t// directories from that root making it to dirFound.\n\trootFound func(gopathwalk.Root) bool\n\t// dirFound is called when a directory is found that is possibly a Go package.\n\t// pkg will be populated with everything except packageName.\n\t// If it returns true, the package's name will be loaded.\n\tdirFound func(pkg *pkg) bool\n\t// packageNameLoaded is called when a package is found and its name is loaded.\n\t// If it returns true, the package's exports will be loaded.\n\tpackageNameLoaded func(pkg *pkg) bool\n\t// exportsLoaded is called when a package's exports have been loaded.\n\texportsLoaded func(pkg *pkg, exports []stdlib.Symbol)\n}\n\nfunc addExternalCandidates(ctx context.Context, pass *pass, refs References, filename string) error {\n\tctx, done := event.Start(ctx, \"imports.addExternalCandidates\")\n\tdefer done()\n\n\tresults, err := pass.source.ResolveReferences(ctx, filename, refs)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, result := range results {\n\t\tif result == nil {\n\t\t\tcontinue\n\t\t}\n\t\t// Don't offer completions that would shadow predeclared\n\t\t// names, such as github.com/coreos/etcd/error.\n\t\tif types.Universe.Lookup(result.Package.Name) != nil { // predeclared\n\t\t\t// Ideally we would skip this candidate only\n\t\t\t// if the predeclared name is actually\n\t\t\t// referenced by the file, but that's a lot\n\t\t\t// trickier to compute and would still create\n\t\t\t// an import that is likely to surprise the\n\t\t\t// user before long.\n\t\t\tcontinue\n\t\t}\n\t\tpass.addCandidate(result.Import, result.Package)\n\t}\n\treturn nil\n}\n\n// notIdentifier reports whether ch is an invalid identifier character.\nfunc notIdentifier(ch rune) bool {\n\treturn !('a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' ||\n\t\t'0' <= ch && ch <= '9' ||\n\t\tch == '_' ||\n\t\tch >= utf8.RuneSelf && (unicode.IsLetter(ch) || unicode.IsDigit(ch)))\n}\n\n// ImportPathToAssumedName returns the assumed package name of an import path.\n// It does this using only string parsing of the import path.\n// It picks the last element of the path that does not look like a major\n// version, and then picks the valid identifier off the start of that element.\n// It is used to determine if a local rename should be added to an import for\n// clarity.\n// This function could be moved to a standard package and exported if we want\n// for use in other tools.\nfunc ImportPathToAssumedName(importPath string) string {\n\tbase := path.Base(importPath)\n\tif strings.HasPrefix(base, \"v\") {\n\t\tif _, err := strconv.Atoi(base[1:]); err == nil {\n\t\t\tdir := path.Dir(importPath)\n\t\t\tif dir != \".\" {\n\t\t\t\tbase = path.Base(dir)\n\t\t\t}\n\t\t}\n\t}\n\tbase = strings.TrimPrefix(base, \"go-\")\n\tif i := strings.IndexFunc(base, notIdentifier); i >= 0 {\n\t\tbase = base[:i]\n\t}\n\treturn base\n}\n\n// gopathResolver implements resolver for GOPATH workspaces.\ntype gopathResolver struct {\n\tenv      *ProcessEnv\n\tcache    *DirInfoCache\n\tscanSema chan struct{} // scanSema prevents concurrent scans.\n}\n\nfunc newGopathResolver(env *ProcessEnv) *gopathResolver {\n\tr := &gopathResolver{\n\t\tenv:      env,\n\t\tcache:    NewDirInfoCache(),\n\t\tscanSema: make(chan struct{}, 1),\n\t}\n\tr.scanSema <- struct{}{}\n\treturn r\n}\n\nfunc (r *gopathResolver) ClearForNewScan() Resolver {\n\treturn newGopathResolver(r.env)\n}\n\nfunc (r *gopathResolver) loadPackageNames(importPaths []string, srcDir string) (map[string]string, error) {\n\tnames := map[string]string{}\n\tbctx, err := r.env.buildContext()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, path := range importPaths {\n\t\tnames[path] = importPathToName(bctx, path, srcDir)\n\t}\n\treturn names, nil\n}\n\n// importPathToName finds out the actual package name, as declared in its .go files.\nfunc importPathToName(bctx *build.Context, importPath, srcDir string) string {\n\t// Fast path for standard library without going to disk.\n\tif stdlib.HasPackage(importPath) {\n\t\treturn path.Base(importPath) // stdlib packages always match their paths.\n\t}\n\n\tbuildPkg, err := bctx.Import(importPath, srcDir, build.FindOnly)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\tpkgName, err := packageDirToName(buildPkg.Dir)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\treturn pkgName\n}\n\n// packageDirToName is a faster version of build.Import if\n// the only thing desired is the package name. Given a directory,\n// packageDirToName then only parses one file in the package,\n// trusting that the files in the directory are consistent.\nfunc packageDirToName(dir string) (packageName string, err error) {\n\td, err := os.Open(dir)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tnames, err := d.Readdirnames(-1)\n\td.Close()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tsort.Strings(names) // to have predictable behavior\n\tvar lastErr error\n\tvar nfile int\n\tfor _, name := range names {\n\t\tif !strings.HasSuffix(name, \".go\") {\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasSuffix(name, \"_test.go\") {\n\t\t\tcontinue\n\t\t}\n\t\tnfile++\n\t\tfullFile := filepath.Join(dir, name)\n\n\t\tfset := token.NewFileSet()\n\t\tf, err := parser.ParseFile(fset, fullFile, nil, parser.PackageClauseOnly)\n\t\tif err != nil {\n\t\t\tlastErr = err\n\t\t\tcontinue\n\t\t}\n\t\tpkgName := f.Name.Name\n\t\tif pkgName == \"documentation\" {\n\t\t\t// Special case from go/build.ImportDir, not\n\t\t\t// handled by ctx.MatchFile.\n\t\t\tcontinue\n\t\t}\n\t\tif pkgName == \"main\" {\n\t\t\t// Also skip package main, assuming it's a +build ignore generator or example.\n\t\t\t// Since you can't import a package main anyway, there's no harm here.\n\t\t\tcontinue\n\t\t}\n\t\treturn pkgName, nil\n\t}\n\tif lastErr != nil {\n\t\treturn \"\", lastErr\n\t}\n\treturn \"\", fmt.Errorf(\"no importable package found in %d Go files\", nfile)\n}\n\ntype pkg struct {\n\tdir             string  // absolute file path to pkg directory (\"/usr/lib/go/src/net/http\")\n\timportPathShort string  // vendorless import path (\"net/http\", \"a/b\")\n\tpackageName     string  // package name loaded from source if requested\n\trelevance       float64 // a weakly-defined score of how relevant a package is. 0 is most relevant.\n}\n\ntype pkgDistance struct {\n\tpkg      *pkg\n\tdistance int // relative distance to target\n}\n\n// byDistanceOrImportPathShortLength sorts by relative distance breaking ties\n// on the short import path length and then the import string itself.\ntype byDistanceOrImportPathShortLength []pkgDistance\n\nfunc (s byDistanceOrImportPathShortLength) Len() int { return len(s) }\nfunc (s byDistanceOrImportPathShortLength) Less(i, j int) bool {\n\tdi, dj := s[i].distance, s[j].distance\n\tif di == -1 {\n\t\treturn false\n\t}\n\tif dj == -1 {\n\t\treturn true\n\t}\n\tif di != dj {\n\t\treturn di < dj\n\t}\n\n\tvi, vj := s[i].pkg.importPathShort, s[j].pkg.importPathShort\n\tif len(vi) != len(vj) {\n\t\treturn len(vi) < len(vj)\n\t}\n\treturn vi < vj\n}\nfunc (s byDistanceOrImportPathShortLength) Swap(i, j int) { s[i], s[j] = s[j], s[i] }\n\nfunc distance(basepath, targetpath string) int {\n\tp, err := filepath.Rel(basepath, targetpath)\n\tif err != nil {\n\t\treturn -1\n\t}\n\tif p == \".\" {\n\t\treturn 0\n\t}\n\treturn strings.Count(p, string(filepath.Separator)) + 1\n}\n\nfunc (r *gopathResolver) scan(ctx context.Context, callback *scanCallback) error {\n\tadd := func(root gopathwalk.Root, dir string) {\n\t\t// We assume cached directories have not changed. We can skip them and their\n\t\t// children.\n\t\tif _, ok := r.cache.Load(dir); ok {\n\t\t\treturn\n\t\t}\n\n\t\timportpath := filepath.ToSlash(dir[len(root.Path)+len(\"/\"):])\n\t\tinfo := directoryPackageInfo{\n\t\t\tstatus:                 directoryScanned,\n\t\t\tdir:                    dir,\n\t\t\trootType:               root.Type,\n\t\t\tnonCanonicalImportPath: VendorlessPath(importpath),\n\t\t}\n\t\tr.cache.Store(dir, info)\n\t}\n\tprocessDir := func(info directoryPackageInfo) {\n\t\t// Skip this directory if we were not able to get the package information successfully.\n\t\tif scanned, err := info.reachedStatus(directoryScanned); !scanned || err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tp := &pkg{\n\t\t\timportPathShort: info.nonCanonicalImportPath,\n\t\t\tdir:             info.dir,\n\t\t\trelevance:       MaxRelevance - 1,\n\t\t}\n\t\tif info.rootType == gopathwalk.RootGOROOT {\n\t\t\tp.relevance = MaxRelevance\n\t\t}\n\n\t\tif !callback.dirFound(p) {\n\t\t\treturn\n\t\t}\n\t\tvar err error\n\t\tp.packageName, err = r.cache.CachePackageName(info)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif !callback.packageNameLoaded(p) {\n\t\t\treturn\n\t\t}\n\t\tif _, exports, err := r.loadExports(ctx, p, false); err == nil {\n\t\t\tcallback.exportsLoaded(p, exports)\n\t\t}\n\t}\n\tstop := r.cache.ScanAndListen(ctx, processDir)\n\tdefer stop()\n\n\tgoenv, err := r.env.goEnv()\n\tif err != nil {\n\t\treturn err\n\t}\n\tvar roots []gopathwalk.Root\n\troots = append(roots, gopathwalk.Root{Path: filepath.Join(goenv[\"GOROOT\"], \"src\"), Type: gopathwalk.RootGOROOT})\n\tfor _, p := range filepath.SplitList(goenv[\"GOPATH\"]) {\n\t\troots = append(roots, gopathwalk.Root{Path: filepath.Join(p, \"src\"), Type: gopathwalk.RootGOPATH})\n\t}\n\t// The callback is not necessarily safe to use in the goroutine below. Process roots eagerly.\n\troots = filterRoots(roots, callback.rootFound)\n\t// We can't cancel walks, because we need them to finish to have a usable\n\t// cache. Instead, run them in a separate goroutine and detach.\n\tscanDone := make(chan struct{})\n\tgo func() {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\treturn\n\t\tcase <-r.scanSema:\n\t\t}\n\t\tdefer func() { r.scanSema <- struct{}{} }()\n\t\tgopathwalk.Walk(roots, add, gopathwalk.Options{Logf: r.env.Logf, ModulesEnabled: false})\n\t\tclose(scanDone)\n\t}()\n\tselect {\n\tcase <-ctx.Done():\n\tcase <-scanDone:\n\t}\n\treturn nil\n}\n\nfunc (r *gopathResolver) scoreImportPath(ctx context.Context, path string) float64 {\n\tif stdlib.HasPackage(path) {\n\t\treturn MaxRelevance\n\t}\n\treturn MaxRelevance - 1\n}\n\nfunc filterRoots(roots []gopathwalk.Root, include func(gopathwalk.Root) bool) []gopathwalk.Root {\n\tvar result []gopathwalk.Root\n\tfor _, root := range roots {\n\t\tif !include(root) {\n\t\t\tcontinue\n\t\t}\n\t\tresult = append(result, root)\n\t}\n\treturn result\n}\n\nfunc (r *gopathResolver) loadExports(ctx context.Context, pkg *pkg, includeTest bool) (string, []stdlib.Symbol, error) {\n\tif info, ok := r.cache.Load(pkg.dir); ok && !includeTest {\n\t\treturn r.cache.CacheExports(ctx, r.env, info)\n\t}\n\treturn loadExportsFromFiles(ctx, r.env, pkg.dir, includeTest)\n}\n\n// VendorlessPath returns the devendorized version of the import path ipath.\n// For example, VendorlessPath(\"foo/bar/vendor/a/b\") returns \"a/b\".\nfunc VendorlessPath(ipath string) string {\n\t// Devendorize for use in import statement.\n\tif i := strings.LastIndex(ipath, \"/vendor/\"); i >= 0 {\n\t\treturn ipath[i+len(\"/vendor/\"):]\n\t}\n\tif strings.HasPrefix(ipath, \"vendor/\") {\n\t\treturn ipath[len(\"vendor/\"):]\n\t}\n\treturn ipath\n}\n\nfunc loadExportsFromFiles(ctx context.Context, env *ProcessEnv, dir string, includeTest bool) (string, []stdlib.Symbol, error) {\n\t// Look for non-test, buildable .go files which could provide exports.\n\tall, err := os.ReadDir(dir)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tvar files []fs.DirEntry\n\tfor _, fi := range all {\n\t\tname := fi.Name()\n\t\tif !strings.HasSuffix(name, \".go\") || (!includeTest && strings.HasSuffix(name, \"_test.go\")) {\n\t\t\tcontinue\n\t\t}\n\t\tmatch, err := env.matchFile(dir, fi.Name())\n\t\tif err != nil || !match {\n\t\t\tcontinue\n\t\t}\n\t\tfiles = append(files, fi)\n\t}\n\n\tif len(files) == 0 {\n\t\treturn \"\", nil, fmt.Errorf(\"dir %v contains no buildable, non-test .go files\", dir)\n\t}\n\n\tvar pkgName string\n\tvar exports []stdlib.Symbol\n\tfset := token.NewFileSet()\n\tfor _, fi := range files {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\treturn \"\", nil, ctx.Err()\n\t\tdefault:\n\t\t}\n\n\t\tfullFile := filepath.Join(dir, fi.Name())\n\t\t// Legacy ast.Object resolution is needed here.\n\t\tf, err := parser.ParseFile(fset, fullFile, nil, 0)\n\t\tif err != nil {\n\t\t\tenv.logf(\"error parsing %v: %v\", fullFile, err)\n\t\t\tcontinue\n\t\t}\n\t\tif f.Name.Name == \"documentation\" {\n\t\t\t// Special case from go/build.ImportDir, not\n\t\t\t// handled by MatchFile above.\n\t\t\tcontinue\n\t\t}\n\t\tif includeTest && strings.HasSuffix(f.Name.Name, \"_test\") {\n\t\t\t// x_test package. We want internal test files only.\n\t\t\tcontinue\n\t\t}\n\t\tpkgName = f.Name.Name\n\t\tfor name, obj := range f.Scope.Objects {\n\t\t\tif ast.IsExported(name) {\n\t\t\t\tvar kind stdlib.Kind\n\t\t\t\tswitch obj.Kind {\n\t\t\t\tcase ast.Con:\n\t\t\t\t\tkind = stdlib.Const\n\t\t\t\tcase ast.Typ:\n\t\t\t\t\tkind = stdlib.Type\n\t\t\t\tcase ast.Var:\n\t\t\t\t\tkind = stdlib.Var\n\t\t\t\tcase ast.Fun:\n\t\t\t\t\tkind = stdlib.Func\n\t\t\t\t}\n\t\t\t\texports = append(exports, stdlib.Symbol{\n\t\t\t\t\tName:    name,\n\t\t\t\t\tKind:    kind,\n\t\t\t\t\tVersion: 0, // unknown; be permissive\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\tsortSymbols(exports)\n\n\tenv.logf(\"loaded exports in dir %v (package %v): %v\", dir, pkgName, exports)\n\treturn pkgName, exports, nil\n}\n\nfunc sortSymbols(syms []stdlib.Symbol) {\n\tsort.Slice(syms, func(i, j int) bool {\n\t\treturn syms[i].Name < syms[j].Name\n\t})\n}\n\n// A symbolSearcher searches for a package with a set of symbols, among a set\n// of candidates. See [symbolSearcher.search].\n//\n// The search occurs within the scope of a single file, with context captured\n// in srcDir and xtest.\ntype symbolSearcher struct {\n\tlogf        func(string, ...any)\n\tsrcDir      string // directory containing the file\n\txtest       bool   // if set, the file containing is an x_test file\n\tloadExports func(ctx context.Context, pkg *pkg, includeTest bool) (string, []stdlib.Symbol, error)\n}\n\n// search searches the provided candidates for a package containing all\n// exported symbols.\n//\n// If successful, returns the resulting package.\nfunc (s *symbolSearcher) search(ctx context.Context, candidates []pkgDistance, pkgName string, symbols map[string]bool) (*pkg, error) {\n\t// Sort the candidates by their import package length,\n\t// assuming that shorter package names are better than long\n\t// ones.  Note that this sorts by the de-vendored name, so\n\t// there's no \"penalty\" for vendoring.\n\tsort.Sort(byDistanceOrImportPathShortLength(candidates))\n\tif s.logf != nil {\n\t\tfor i, c := range candidates {\n\t\t\ts.logf(\"%s candidate %d/%d: %v in %v\", pkgName, i+1, len(candidates), c.pkg.importPathShort, c.pkg.dir)\n\t\t}\n\t}\n\n\t// Arrange rescv so that we can we can await results in order of relevance\n\t// and exit as soon as we find the first match.\n\t//\n\t// Search with bounded concurrency, returning as soon as the first result\n\t// among rescv is non-nil.\n\trescv := make([]chan *pkg, len(candidates))\n\tfor i := range candidates {\n\t\trescv[i] = make(chan *pkg, 1)\n\t}\n\tconst maxConcurrentPackageImport = 4\n\tloadExportsSem := make(chan struct{}, maxConcurrentPackageImport)\n\n\t// Ensure that all work is completed at exit.\n\tctx, cancel := context.WithCancel(ctx)\n\tvar wg sync.WaitGroup\n\tdefer func() {\n\t\tcancel()\n\t\twg.Wait()\n\t}()\n\n\t// Start the search.\n\twg.Add(1)\n\tgo func() {\n\t\tdefer wg.Done()\n\t\tfor i, c := range candidates {\n\t\t\tselect {\n\t\t\tcase loadExportsSem <- struct{}{}:\n\t\t\tcase <-ctx.Done():\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ti := i\n\t\t\tc := c\n\t\t\twg.Add(1)\n\t\t\tgo func() {\n\t\t\t\tdefer func() {\n\t\t\t\t\t<-loadExportsSem\n\t\t\t\t\twg.Done()\n\t\t\t\t}()\n\t\t\t\tif s.logf != nil {\n\t\t\t\t\ts.logf(\"loading exports in dir %s (seeking package %s)\", c.pkg.dir, pkgName)\n\t\t\t\t}\n\t\t\t\tpkg, err := s.searchOne(ctx, c, symbols)\n\t\t\t\tif err != nil {\n\t\t\t\t\tif s.logf != nil && ctx.Err() == nil {\n\t\t\t\t\t\ts.logf(\"loading exports in dir %s (seeking package %s): %v\", c.pkg.dir, pkgName, err)\n\t\t\t\t\t}\n\t\t\t\t\tpkg = nil\n\t\t\t\t}\n\t\t\t\trescv[i] <- pkg // may be nil\n\t\t\t}()\n\t\t}\n\t}()\n\n\t// Await the first (best) result.\n\tfor _, resc := range rescv {\n\t\tselect {\n\t\tcase r := <-resc:\n\t\t\tif r != nil {\n\t\t\t\treturn r, nil\n\t\t\t}\n\t\tcase <-ctx.Done():\n\t\t\treturn nil, ctx.Err()\n\t\t}\n\t}\n\treturn nil, nil\n}\n\nfunc (s *symbolSearcher) searchOne(ctx context.Context, c pkgDistance, symbols map[string]bool) (*pkg, error) {\n\tif ctx.Err() != nil {\n\t\treturn nil, ctx.Err()\n\t}\n\t// If we're considering the package under test from an x_test, load the\n\t// test variant.\n\tincludeTest := s.xtest && c.pkg.dir == s.srcDir\n\t_, exports, err := s.loadExports(ctx, c.pkg, includeTest)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\texportsMap := make(map[string]bool, len(exports))\n\tfor _, sym := range exports {\n\t\texportsMap[sym.Name] = true\n\t}\n\tfor symbol := range symbols {\n\t\tif !exportsMap[symbol] {\n\t\t\treturn nil, nil // no match\n\t\t}\n\t}\n\treturn c.pkg, nil\n}\n\n// pkgIsCandidate reports whether pkg is a candidate for satisfying the\n// finding which package pkgIdent in the file named by filename is trying\n// to refer to.\n//\n// This check is purely lexical and is meant to be as fast as possible\n// because it's run over all $GOPATH directories to filter out poor\n// candidates in order to limit the CPU and I/O later parsing the\n// exports in candidate packages.\n//\n// filename is the file being formatted.\n// pkgIdent is the package being searched for, like \"client\" (if\n// searching for \"client.New\")\nfunc pkgIsCandidate(filename string, refs References, pkg *pkg) bool {\n\t// Check \"internal\" and \"vendor\" visibility:\n\tif !CanUse(filename, pkg.dir) {\n\t\treturn false\n\t}\n\n\t// Speed optimization to minimize disk I/O:\n\t//\n\t// Use the matchesPath heuristic to filter to package paths that could\n\t// reasonably match a dangling reference.\n\t//\n\t// This permits mismatch naming like directory \"go-foo\" being package \"foo\",\n\t// or \"pkg.v3\" being \"pkg\", or directory\n\t// \"google.golang.org/api/cloudbilling/v1\" being package \"cloudbilling\", but\n\t// doesn't permit a directory \"foo\" to be package \"bar\", which is strongly\n\t// discouraged anyway. There's no reason goimports needs to be slow just to\n\t// accommodate that.\n\tfor pkgIdent := range refs {\n\t\tif matchesPath(pkgIdent, pkg.importPathShort) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// CanUse reports whether the package in dir is usable from filename,\n// respecting the Go \"internal\" and \"vendor\" visibility rules.\nfunc CanUse(filename, dir string) bool {\n\t// Fast path check, before any allocations. If it doesn't contain vendor\n\t// or internal, it's not tricky:\n\t// Note that this can false-negative on directories like \"notinternal\",\n\t// but we check it correctly below. This is just a fast path.\n\tif !strings.Contains(dir, \"vendor\") && !strings.Contains(dir, \"internal\") {\n\t\treturn true\n\t}\n\n\tdirSlash := filepath.ToSlash(dir)\n\tif !strings.Contains(dirSlash, \"/vendor/\") && !strings.Contains(dirSlash, \"/internal/\") && !strings.HasSuffix(dirSlash, \"/internal\") {\n\t\treturn true\n\t}\n\t// Vendor or internal directory only visible from children of parent.\n\t// That means the path from the current directory to the target directory\n\t// can contain ../vendor or ../internal but not ../foo/vendor or ../foo/internal\n\t// or bar/vendor or bar/internal.\n\t// After stripping all the leading ../, the only okay place to see vendor or internal\n\t// is at the very beginning of the path.\n\tabsfile, err := filepath.Abs(filename)\n\tif err != nil {\n\t\treturn false\n\t}\n\tabsdir, err := filepath.Abs(dir)\n\tif err != nil {\n\t\treturn false\n\t}\n\trel, err := filepath.Rel(absfile, absdir)\n\tif err != nil {\n\t\treturn false\n\t}\n\trelSlash := filepath.ToSlash(rel)\n\tif i := strings.LastIndex(relSlash, \"../\"); i >= 0 {\n\t\trelSlash = relSlash[i+len(\"../\"):]\n\t}\n\treturn !strings.Contains(relSlash, \"/vendor/\") && !strings.Contains(relSlash, \"/internal/\") && !strings.HasSuffix(relSlash, \"/internal\")\n}\n\n// matchesPath reports whether ident may match a potential package name\n// referred to by path, using heuristics to filter out unidiomatic package\n// names.\n//\n// Specifically, it checks whether either of the last two '/'- or '\\'-delimited\n// path segments matches the identifier. The segment-matching heuristic must\n// allow for various conventions around segment naming, including go-foo,\n// foo-go, and foo.v3. To handle all of these, matching considers both (1) the\n// entire segment, ignoring '-' and '.', as well as (2) the last subsegment\n// separated by '-' or '.'. So the segment foo-go matches all of the following\n// identifiers: foo, go, and foogo. All matches are case insensitive (for ASCII\n// identifiers).\n//\n// See the docstring for [pkgIsCandidate] for an explanation of how this\n// heuristic filters potential candidate packages.\nfunc matchesPath(ident, path string) bool {\n\t// Ignore case, for ASCII.\n\tlowerIfASCII := func(b byte) byte {\n\t\tif 'A' <= b && b <= 'Z' {\n\t\t\treturn b + ('a' - 'A')\n\t\t}\n\t\treturn b\n\t}\n\n\t// match reports whether path[start:end] matches ident, ignoring [.-].\n\tmatch := func(start, end int) bool {\n\t\tii := len(ident) - 1 // current byte in ident\n\t\tpi := end - 1        // current byte in path\n\t\tfor ; pi >= start && ii >= 0; pi-- {\n\t\t\tpb := path[pi]\n\t\t\tif pb == '-' || pb == '.' {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tpb = lowerIfASCII(pb)\n\t\t\tib := lowerIfASCII(ident[ii])\n\t\t\tif pb != ib {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tii--\n\t\t}\n\t\treturn ii < 0 && pi < start // all bytes matched\n\t}\n\n\t// segmentEnd and subsegmentEnd hold the end points of the current segment\n\t// and subsegment intervals.\n\tsegmentEnd := len(path)\n\tsubsegmentEnd := len(path)\n\n\t// Count slashes; we only care about the last two segments.\n\tnslash := 0\n\n\tfor i := len(path) - 1; i >= 0; i-- {\n\t\tswitch b := path[i]; b {\n\t\t// TODO(rfindley): we handle backlashes here only because the previous\n\t\t// heuristic handled backslashes. This is perhaps overly defensive, but is\n\t\t// the result of many lessons regarding Chesterton's fence and the\n\t\t// goimports codebase.\n\t\t//\n\t\t// However, this function is only ever called with something called an\n\t\t// 'importPath'. Is it possible that this is a real import path, and\n\t\t// therefore we need only consider forward slashes?\n\t\tcase '/', '\\\\':\n\t\t\tif match(i+1, segmentEnd) || match(i+1, subsegmentEnd) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tnslash++\n\t\t\tif nslash == 2 {\n\t\t\t\treturn false // did not match above\n\t\t\t}\n\t\t\tsegmentEnd, subsegmentEnd = i, i // reset\n\t\tcase '-', '.':\n\t\t\tif match(i+1, subsegmentEnd) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tsubsegmentEnd = i\n\t\t}\n\t}\n\treturn match(0, segmentEnd) || match(0, subsegmentEnd)\n}\n\ntype visitFn func(node ast.Node) ast.Visitor\n\nfunc (fn visitFn) Visit(node ast.Node) ast.Visitor {\n\treturn fn(node)\n}\n\nfunc symbolNameSet(symbols []stdlib.Symbol) map[string]bool {\n\tnames := make(map[string]bool)\n\tfor _, sym := range symbols {\n\t\tswitch sym.Kind {\n\t\tcase stdlib.Const, stdlib.Var, stdlib.Type, stdlib.Func:\n\t\t\tnames[sym.Name] = true\n\t\t}\n\t}\n\treturn names\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/imports/imports.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package imports implements a Go pretty-printer (like package \"go/format\")\n// that also adds or removes import statements as necessary.\npackage imports\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/format\"\n\t\"go/parser\"\n\t\"go/printer\"\n\t\"go/token\"\n\t\"io\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/tools/go/ast/astutil\"\n\t\"golang.org/x/tools/internal/event\"\n)\n\n// Options is golang.org/x/tools/imports.Options with extra internal-only options.\ntype Options struct {\n\tEnv *ProcessEnv // The environment to use. Note: this contains the cached module and filesystem state.\n\n\t// LocalPrefix is a comma-separated string of import path prefixes, which, if\n\t// set, instructs Process to sort the import paths with the given prefixes\n\t// into another group after 3rd-party packages.\n\tLocalPrefix string\n\n\tFragment  bool // Accept fragment of a source file (no package statement)\n\tAllErrors bool // Report all errors (not just the first 10 on different lines)\n\n\tComments  bool // Print comments (true if nil *Options provided)\n\tTabIndent bool // Use tabs for indent (true if nil *Options provided)\n\tTabWidth  int  // Tab width (8 if nil *Options provided)\n\n\tFormatOnly bool // Disable the insertion and deletion of imports\n}\n\n// Process implements golang.org/x/tools/imports.Process with explicit context in opt.Env.\nfunc Process(filename string, src []byte, opt *Options) (formatted []byte, err error) {\n\tfileSet := token.NewFileSet()\n\tvar parserMode parser.Mode\n\tif opt.Comments {\n\t\tparserMode |= parser.ParseComments\n\t}\n\tif opt.AllErrors {\n\t\tparserMode |= parser.AllErrors\n\t}\n\tfile, adjust, err := parse(fileSet, filename, src, parserMode, opt.Fragment)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif !opt.FormatOnly {\n\t\tif err := fixImports(fileSet, file, filename, opt.Env); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn formatFile(fileSet, file, src, adjust, opt)\n}\n\n// FixImports returns a list of fixes to the imports that, when applied,\n// will leave the imports in the same state as Process. src and opt must\n// be specified.\n//\n// Note that filename's directory influences which imports can be chosen,\n// so it is important that filename be accurate.\nfunc FixImports(ctx context.Context, filename string, src []byte, goroot string, logf func(string, ...any), source Source) (fixes []*ImportFix, err error) {\n\tctx, done := event.Start(ctx, \"imports.FixImports\")\n\tdefer done()\n\n\tfileSet := token.NewFileSet()\n\t// TODO(rfindley): these default values for ParseComments and AllErrors were\n\t// extracted from gopls, but are they even needed?\n\tfile, _, err := parse(fileSet, filename, src, parser.ParseComments|parser.AllErrors, true)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn getFixesWithSource(ctx, fileSet, file, filename, goroot, logf, source)\n}\n\n// ApplyFixes applies all of the fixes to the file and formats it. extraMode\n// is added in when parsing the file. src and opts must be specified, but no\n// env is needed.\nfunc ApplyFixes(fixes []*ImportFix, filename string, src []byte, opt *Options, extraMode parser.Mode) (formatted []byte, err error) {\n\t// Don't use parse() -- we don't care about fragments or statement lists\n\t// here, and we need to work with unparsable files.\n\tfileSet := token.NewFileSet()\n\tparserMode := parser.SkipObjectResolution\n\tif opt.Comments {\n\t\tparserMode |= parser.ParseComments\n\t}\n\tif opt.AllErrors {\n\t\tparserMode |= parser.AllErrors\n\t}\n\tparserMode |= extraMode\n\n\tfile, err := parser.ParseFile(fileSet, filename, src, parserMode)\n\tif file == nil {\n\t\treturn nil, err\n\t}\n\n\t// Apply the fixes to the file.\n\tapply(fileSet, file, fixes)\n\n\treturn formatFile(fileSet, file, src, nil, opt)\n}\n\n// formatFile formats the file syntax tree.\n// It may mutate the token.FileSet and the ast.File.\n//\n// If an adjust function is provided, it is called after formatting\n// with the original source (formatFile's src parameter) and the\n// formatted file, and returns the postpocessed result.\nfunc formatFile(fset *token.FileSet, file *ast.File, src []byte, adjust func(orig []byte, src []byte) []byte, opt *Options) ([]byte, error) {\n\tmergeImports(file)\n\tsortImports(opt.LocalPrefix, fset.File(file.FileStart), file)\n\tvar spacesBefore []string // import paths we need spaces before\n\tfor _, impSection := range astutil.Imports(fset, file) {\n\t\t// Within each block of contiguous imports, see if any\n\t\t// import lines are in different group numbers. If so,\n\t\t// we'll need to put a space between them so it's\n\t\t// compatible with gofmt.\n\t\tlastGroup := -1\n\t\tfor _, importSpec := range impSection {\n\t\t\timportPath, _ := strconv.Unquote(importSpec.Path.Value)\n\t\t\tgroupNum := importGroup(opt.LocalPrefix, importPath)\n\t\t\tif groupNum != lastGroup && lastGroup != -1 {\n\t\t\t\tspacesBefore = append(spacesBefore, importPath)\n\t\t\t}\n\t\t\tlastGroup = groupNum\n\t\t}\n\n\t}\n\n\tprinterMode := printer.UseSpaces\n\tif opt.TabIndent {\n\t\tprinterMode |= printer.TabIndent\n\t}\n\tprintConfig := &printer.Config{Mode: printerMode, Tabwidth: opt.TabWidth}\n\n\tvar buf bytes.Buffer\n\terr := printConfig.Fprint(&buf, fset, file)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tout := buf.Bytes()\n\tif adjust != nil {\n\t\tout = adjust(src, out)\n\t}\n\tif len(spacesBefore) > 0 {\n\t\tout, err = addImportSpaces(bytes.NewReader(out), spacesBefore)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tout, err = format.Source(out)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// parse parses src, which was read from filename,\n// as a Go source file or statement list.\nfunc parse(fset *token.FileSet, filename string, src []byte, parserMode parser.Mode, fragment bool) (*ast.File, func(orig, src []byte) []byte, error) {\n\tif parserMode&parser.SkipObjectResolution != 0 {\n\t\tpanic(\"legacy ast.Object resolution is required\")\n\t}\n\n\t// Try as whole source file.\n\tfile, err := parser.ParseFile(fset, filename, src, parserMode)\n\tif err == nil {\n\t\treturn file, nil, nil\n\t}\n\t// If the error is that the source file didn't begin with a\n\t// package line and we accept fragmented input, fall through to\n\t// try as a source fragment.  Stop and return on any other error.\n\tif !fragment || !strings.Contains(err.Error(), \"expected 'package'\") {\n\t\treturn nil, nil, err\n\t}\n\n\t// If this is a declaration list, make it a source file\n\t// by inserting a package clause.\n\t// Insert using a ;, not a newline, so that parse errors are on\n\t// the correct line.\n\tconst prefix = \"package main;\"\n\tpsrc := append([]byte(prefix), src...)\n\tfile, err = parser.ParseFile(fset, filename, psrc, parserMode)\n\tif err == nil {\n\t\t// Gofmt will turn the ; into a \\n.\n\t\t// Do that ourselves now and update the file contents,\n\t\t// so that positions and line numbers are correct going forward.\n\t\tpsrc[len(prefix)-1] = '\\n'\n\t\tfset.File(file.Package).SetLinesForContent(psrc)\n\n\t\t// If a main function exists, we will assume this is a main\n\t\t// package and leave the file.\n\t\tif containsMainFunc(file) {\n\t\t\treturn file, nil, nil\n\t\t}\n\n\t\tadjust := func(orig, src []byte) []byte {\n\t\t\t// Remove the package clause.\n\t\t\tsrc = src[len(prefix):]\n\t\t\treturn matchSpace(orig, src)\n\t\t}\n\t\treturn file, adjust, nil\n\t}\n\t// If the error is that the source file didn't begin with a\n\t// declaration, fall through to try as a statement list.\n\t// Stop and return on any other error.\n\tif !strings.Contains(err.Error(), \"expected declaration\") {\n\t\treturn nil, nil, err\n\t}\n\n\t// If this is a statement list, make it a source file\n\t// by inserting a package clause and turning the list\n\t// into a function body.  This handles expressions too.\n\t// Insert using a ;, not a newline, so that the line numbers\n\t// in fsrc match the ones in src.\n\tfsrc := append(append([]byte(\"package p; func _() {\"), src...), '}')\n\tfile, err = parser.ParseFile(fset, filename, fsrc, parserMode)\n\tif err == nil {\n\t\tadjust := func(orig, src []byte) []byte {\n\t\t\t// Remove the wrapping.\n\t\t\t// Gofmt has turned the ; into a \\n\\n.\n\t\t\tsrc = src[len(\"package p\\n\\nfunc _() {\"):]\n\t\t\tsrc = src[:len(src)-len(\"}\\n\")]\n\t\t\t// Gofmt has also indented the function body one level.\n\t\t\t// Remove that indent.\n\t\t\tsrc = bytes.ReplaceAll(src, []byte(\"\\n\\t\"), []byte(\"\\n\"))\n\t\t\treturn matchSpace(orig, src)\n\t\t}\n\t\treturn file, adjust, nil\n\t}\n\n\t// Failed, and out of options.\n\treturn nil, nil, err\n}\n\n// containsMainFunc checks if a file contains a function declaration with the\n// function signature 'func main()'\nfunc containsMainFunc(file *ast.File) bool {\n\tfor _, decl := range file.Decls {\n\t\tif f, ok := decl.(*ast.FuncDecl); ok {\n\t\t\tif f.Name.Name != \"main\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif len(f.Type.Params.List) != 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif f.Type.Results != nil && len(f.Type.Results.List) != 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc cutSpace(b []byte) (before, middle, after []byte) {\n\ti := 0\n\tfor i < len(b) && (b[i] == ' ' || b[i] == '\\t' || b[i] == '\\n') {\n\t\ti++\n\t}\n\tj := len(b)\n\tfor j > 0 && (b[j-1] == ' ' || b[j-1] == '\\t' || b[j-1] == '\\n') {\n\t\tj--\n\t}\n\tif i <= j {\n\t\treturn b[:i], b[i:j], b[j:]\n\t}\n\treturn nil, nil, b[j:]\n}\n\n// matchSpace reformats src to use the same space context as orig.\n//  1. If orig begins with blank lines, matchSpace inserts them at the beginning of src.\n//  2. matchSpace copies the indentation of the first non-blank line in orig\n//     to every non-blank line in src.\n//  3. matchSpace copies the trailing space from orig and uses it in place\n//     of src's trailing space.\nfunc matchSpace(orig []byte, src []byte) []byte {\n\tbefore, _, after := cutSpace(orig)\n\ti := bytes.LastIndex(before, []byte{'\\n'})\n\tbefore, indent := before[:i+1], before[i+1:]\n\n\t_, src, _ = cutSpace(src)\n\n\tvar b bytes.Buffer\n\tb.Write(before)\n\tfor len(src) > 0 {\n\t\tline := src\n\t\tif i := bytes.IndexByte(line, '\\n'); i >= 0 {\n\t\t\tline, src = line[:i+1], line[i+1:]\n\t\t} else {\n\t\t\tsrc = nil\n\t\t}\n\t\tif len(line) > 0 && line[0] != '\\n' { // not blank\n\t\t\tb.Write(indent)\n\t\t}\n\t\tb.Write(line)\n\t}\n\tb.Write(after)\n\treturn b.Bytes()\n}\n\nvar impLine = regexp.MustCompile(`^\\s+(?:[\\w\\.]+\\s+)?\"(.+?)\"`)\n\nfunc addImportSpaces(r io.Reader, breaks []string) ([]byte, error) {\n\tvar out bytes.Buffer\n\tin := bufio.NewReader(r)\n\tinImports := false\n\tdone := false\n\tfor {\n\t\ts, err := in.ReadString('\\n')\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t} else if err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif !inImports && !done && strings.HasPrefix(s, \"import\") {\n\t\t\tinImports = true\n\t\t}\n\t\tif inImports && (strings.HasPrefix(s, \"var\") ||\n\t\t\tstrings.HasPrefix(s, \"func\") ||\n\t\t\tstrings.HasPrefix(s, \"const\") ||\n\t\t\tstrings.HasPrefix(s, \"type\")) {\n\t\t\tdone = true\n\t\t\tinImports = false\n\t\t}\n\t\tif inImports && len(breaks) > 0 {\n\t\t\tif m := impLine.FindStringSubmatch(s); m != nil {\n\t\t\t\tif m[1] == breaks[0] {\n\t\t\t\t\tout.WriteByte('\\n')\n\t\t\t\t\tbreaks = breaks[1:]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfmt.Fprint(&out, s)\n\t}\n\treturn out.Bytes(), nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/imports/mod.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage imports\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"slices\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/mod/module\"\n\t\"golang.org/x/tools/internal/event\"\n\t\"golang.org/x/tools/internal/gocommand\"\n\t\"golang.org/x/tools/internal/gopathwalk\"\n\t\"golang.org/x/tools/internal/stdlib\"\n)\n\n// Notes(rfindley): ModuleResolver appears to be heavily optimized for scanning\n// as fast as possible, which is desirable for a call to goimports from the\n// command line, but it doesn't work as well for gopls, where it suffers from\n// slow startup (golang/go#44863) and intermittent hanging (golang/go#59216),\n// both caused by populating the cache, albeit in slightly different ways.\n//\n// A high level list of TODOs:\n//  - Optimize the scan itself, as there is some redundancy statting and\n//    reading go.mod files.\n//  - Invert the relationship between ProcessEnv and Resolver (see the\n//    docstring of ProcessEnv).\n//  - Make it easier to use an external resolver implementation.\n//\n// Smaller TODOs are annotated in the code below.\n\n// ModuleResolver implements the Resolver interface for a workspace using\n// modules.\n//\n// A goal of the ModuleResolver is to invoke the Go command as little as\n// possible. To this end, it runs the Go command only for listing module\n// information (i.e. `go list -m -e -json ...`). Package scanning, the process\n// of loading package information for the modules, is implemented internally\n// via the scan method.\n//\n// It has two types of state: the state derived from the go command, which\n// is populated by init, and the state derived from scans, which is populated\n// via scan. A root is considered scanned if it has been walked to discover\n// directories. However, if the scan did not require additional information\n// from the directory (such as package name or exports), the directory\n// information itself may be partially populated. It will be lazily filled in\n// as needed by scans, using the scanCallback.\ntype ModuleResolver struct {\n\tenv *ProcessEnv\n\n\t// Module state, populated during construction\n\tdummyVendorMod *gocommand.ModuleJSON            // if vendoring is enabled, a pseudo-module to represent the /vendor directory\n\tmoduleCacheDir string                           // GOMODCACHE, inferred from GOPATH if unset\n\troots          []gopathwalk.Root                // roots to scan, in approximate order of importance\n\tmains          []*gocommand.ModuleJSON          // main modules\n\tmainByDir      map[string]*gocommand.ModuleJSON // module information by dir, to join with roots\n\tmodsByModPath  []*gocommand.ModuleJSON          // all modules, ordered by # of path components in their module path\n\tmodsByDir      []*gocommand.ModuleJSON          // ...or by the number of path components in their Dir.\n\n\t// Scanning state, populated by scan\n\n\t// scanSema prevents concurrent scans, and guards scannedRoots and the cache\n\t// fields below (though the caches themselves are concurrency safe).\n\t// Receive to acquire, send to release.\n\tscanSema     chan struct{}\n\tscannedRoots map[gopathwalk.Root]bool // if true, root has been walked\n\n\t// Caches of directory info, populated by scans and scan callbacks\n\t//\n\t// moduleCacheCache stores cached information about roots in the module\n\t// cache, which are immutable and therefore do not need to be invalidated.\n\t//\n\t// otherCache stores information about all other roots (even GOROOT), which\n\t// may change.\n\tmoduleCacheCache *DirInfoCache\n\totherCache       *DirInfoCache\n}\n\n// newModuleResolver returns a new module-aware goimports resolver.\n//\n// Note: use caution when modifying this constructor: changes must also be\n// reflected in ModuleResolver.ClearForNewScan.\nfunc newModuleResolver(e *ProcessEnv, moduleCacheCache *DirInfoCache) (*ModuleResolver, error) {\n\tr := &ModuleResolver{\n\t\tenv:      e,\n\t\tscanSema: make(chan struct{}, 1),\n\t}\n\tr.scanSema <- struct{}{} // release\n\n\tgoenv, err := r.env.goEnv()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// TODO(rfindley): can we refactor to share logic with r.env.invokeGo?\n\tinv := gocommand.Invocation{\n\t\tBuildFlags: r.env.BuildFlags,\n\t\tModFlag:    r.env.ModFlag,\n\t\tEnv:        r.env.env(),\n\t\tLogf:       r.env.Logf,\n\t\tWorkingDir: r.env.WorkingDir,\n\t}\n\n\tvendorEnabled := false\n\tvar mainModVendor *gocommand.ModuleJSON    // for module vendoring\n\tvar mainModsVendor []*gocommand.ModuleJSON // for workspace vendoring\n\n\tgoWork := r.env.Env[\"GOWORK\"]\n\tif len(goWork) == 0 {\n\t\t// TODO(rfindley): VendorEnabled runs the go command to get GOFLAGS, but\n\t\t// they should be available from the ProcessEnv. Can we avoid the redundant\n\t\t// invocation?\n\t\tvendorEnabled, mainModVendor, err = gocommand.VendorEnabled(context.TODO(), inv, r.env.GocmdRunner)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else {\n\t\tvendorEnabled, mainModsVendor, err = gocommand.WorkspaceVendorEnabled(context.Background(), inv, r.env.GocmdRunner)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif vendorEnabled {\n\t\tif mainModVendor != nil {\n\t\t\t// Module vendor mode is on, so all the non-Main modules are irrelevant,\n\t\t\t// and we need to search /vendor for everything.\n\t\t\tr.mains = []*gocommand.ModuleJSON{mainModVendor}\n\t\t\tr.dummyVendorMod = &gocommand.ModuleJSON{\n\t\t\t\tPath: \"\",\n\t\t\t\tDir:  filepath.Join(mainModVendor.Dir, \"vendor\"),\n\t\t\t}\n\t\t\tr.modsByModPath = []*gocommand.ModuleJSON{mainModVendor, r.dummyVendorMod}\n\t\t\tr.modsByDir = []*gocommand.ModuleJSON{mainModVendor, r.dummyVendorMod}\n\t\t} else {\n\t\t\t// Workspace vendor mode is on, so all the non-Main modules are irrelevant,\n\t\t\t// and we need to search /vendor for everything.\n\t\t\tr.mains = mainModsVendor\n\t\t\tr.dummyVendorMod = &gocommand.ModuleJSON{\n\t\t\t\tPath: \"\",\n\t\t\t\tDir:  filepath.Join(filepath.Dir(goWork), \"vendor\"),\n\t\t\t}\n\t\t\tr.modsByModPath = append(slices.Clone(mainModsVendor), r.dummyVendorMod)\n\t\t\tr.modsByDir = append(slices.Clone(mainModsVendor), r.dummyVendorMod)\n\t\t}\n\t} else {\n\t\t// Vendor mode is off, so run go list -m ... to find everything.\n\t\terr := r.initAllMods()\n\t\t// We expect an error when running outside of a module with\n\t\t// GO111MODULE=on. Other errors are fatal.\n\t\tif err != nil {\n\t\t\tif errMsg := err.Error(); !strings.Contains(errMsg, \"working directory is not part of a module\") && !strings.Contains(errMsg, \"go.mod file not found\") {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t}\n\n\tr.moduleCacheDir = gomodcacheForEnv(goenv)\n\tif r.moduleCacheDir == \"\" {\n\t\treturn nil, fmt.Errorf(\"cannot resolve GOMODCACHE\")\n\t}\n\n\tsort.Slice(r.modsByModPath, func(i, j int) bool {\n\t\tcount := func(x int) int {\n\t\t\treturn strings.Count(r.modsByModPath[x].Path, \"/\")\n\t\t}\n\t\treturn count(j) < count(i) // descending order\n\t})\n\tsort.Slice(r.modsByDir, func(i, j int) bool {\n\t\tcount := func(x int) int {\n\t\t\treturn strings.Count(r.modsByDir[x].Dir, string(filepath.Separator))\n\t\t}\n\t\treturn count(j) < count(i) // descending order\n\t})\n\n\tr.roots = []gopathwalk.Root{}\n\tif goenv[\"GOROOT\"] != \"\" { // \"\" happens in tests\n\t\tr.roots = append(r.roots, gopathwalk.Root{Path: filepath.Join(goenv[\"GOROOT\"], \"/src\"), Type: gopathwalk.RootGOROOT})\n\t}\n\tr.mainByDir = make(map[string]*gocommand.ModuleJSON)\n\tfor _, main := range r.mains {\n\t\tr.roots = append(r.roots, gopathwalk.Root{Path: main.Dir, Type: gopathwalk.RootCurrentModule})\n\t\tr.mainByDir[main.Dir] = main\n\t}\n\tif vendorEnabled {\n\t\tr.roots = append(r.roots, gopathwalk.Root{Path: r.dummyVendorMod.Dir, Type: gopathwalk.RootOther})\n\t} else {\n\t\taddDep := func(mod *gocommand.ModuleJSON) {\n\t\t\tif mod.Replace == nil {\n\t\t\t\t// This is redundant with the cache, but we'll skip it cheaply enough\n\t\t\t\t// when we encounter it in the module cache scan.\n\t\t\t\t//\n\t\t\t\t// Including it at a lower index in r.roots than the module cache dir\n\t\t\t\t// helps prioritize matches from within existing dependencies.\n\t\t\t\tr.roots = append(r.roots, gopathwalk.Root{Path: mod.Dir, Type: gopathwalk.RootModuleCache})\n\t\t\t} else {\n\t\t\t\tr.roots = append(r.roots, gopathwalk.Root{Path: mod.Dir, Type: gopathwalk.RootOther})\n\t\t\t}\n\t\t}\n\t\t// Walk dependent modules before scanning the full mod cache, direct deps first.\n\t\tfor _, mod := range r.modsByModPath {\n\t\t\tif !mod.Indirect && !mod.Main {\n\t\t\t\taddDep(mod)\n\t\t\t}\n\t\t}\n\t\tfor _, mod := range r.modsByModPath {\n\t\t\tif mod.Indirect && !mod.Main {\n\t\t\t\taddDep(mod)\n\t\t\t}\n\t\t}\n\t\t// If provided, share the moduleCacheCache.\n\t\t//\n\t\t// TODO(rfindley): The module cache is immutable. However, the loaded\n\t\t// exports do depend on GOOS and GOARCH. Fortunately, the\n\t\t// ProcessEnv.buildContext does not adjust these from build.DefaultContext\n\t\t// (even though it should). So for now, this is OK to share, but we need to\n\t\t// add logic for handling GOOS/GOARCH.\n\t\tr.moduleCacheCache = moduleCacheCache\n\t\tr.roots = append(r.roots, gopathwalk.Root{Path: r.moduleCacheDir, Type: gopathwalk.RootModuleCache})\n\t}\n\n\tr.scannedRoots = map[gopathwalk.Root]bool{}\n\tif r.moduleCacheCache == nil {\n\t\tr.moduleCacheCache = NewDirInfoCache()\n\t}\n\tr.otherCache = NewDirInfoCache()\n\treturn r, nil\n}\n\n// gomodcacheForEnv returns the GOMODCACHE value to use based on the given env\n// map, which must have GOMODCACHE and GOPATH populated.\n//\n// TODO(rfindley): this is defensive refactoring.\n//  1. Is this even relevant anymore? Can't we just read GOMODCACHE.\n//  2. Use this to separate module cache scanning from other scanning.\nfunc gomodcacheForEnv(goenv map[string]string) string {\n\tif gmc := goenv[\"GOMODCACHE\"]; gmc != \"\" {\n\t\t// golang/go#67156: ensure that the module cache is clean, since it is\n\t\t// assumed as a prefix to directories scanned by gopathwalk, which are\n\t\t// themselves clean.\n\t\treturn filepath.Clean(gmc)\n\t}\n\tgopaths := filepath.SplitList(goenv[\"GOPATH\"])\n\tif len(gopaths) == 0 {\n\t\treturn \"\"\n\t}\n\treturn filepath.Join(gopaths[0], \"/pkg/mod\")\n}\n\nfunc (r *ModuleResolver) initAllMods() error {\n\tstdout, err := r.env.invokeGo(context.TODO(), \"list\", \"-m\", \"-e\", \"-json\", \"...\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tfor dec := json.NewDecoder(stdout); dec.More(); {\n\t\tmod := &gocommand.ModuleJSON{}\n\t\tif err := dec.Decode(mod); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif mod.Dir == \"\" {\n\t\t\tr.env.logf(\"module %v has not been downloaded and will be ignored\", mod.Path)\n\t\t\t// Can't do anything with a module that's not downloaded.\n\t\t\tcontinue\n\t\t}\n\t\t// golang/go#36193: the go command doesn't always clean paths.\n\t\tmod.Dir = filepath.Clean(mod.Dir)\n\t\tr.modsByModPath = append(r.modsByModPath, mod)\n\t\tr.modsByDir = append(r.modsByDir, mod)\n\t\tif mod.Main {\n\t\t\tr.mains = append(r.mains, mod)\n\t\t}\n\t}\n\treturn nil\n}\n\n// ClearForNewScan invalidates the last scan.\n//\n// It preserves the set of roots, but forgets about the set of directories.\n// Though it forgets the set of module cache directories, it remembers their\n// contents, since they are assumed to be immutable.\nfunc (r *ModuleResolver) ClearForNewScan() Resolver {\n\t<-r.scanSema // acquire r, to guard scannedRoots\n\tr2 := &ModuleResolver{\n\t\tenv:            r.env,\n\t\tdummyVendorMod: r.dummyVendorMod,\n\t\tmoduleCacheDir: r.moduleCacheDir,\n\t\troots:          r.roots,\n\t\tmains:          r.mains,\n\t\tmainByDir:      r.mainByDir,\n\t\tmodsByModPath:  r.modsByModPath,\n\n\t\tscanSema:         make(chan struct{}, 1),\n\t\tscannedRoots:     make(map[gopathwalk.Root]bool),\n\t\totherCache:       NewDirInfoCache(),\n\t\tmoduleCacheCache: r.moduleCacheCache,\n\t}\n\tr2.scanSema <- struct{}{} // r2 must start released\n\t// Invalidate root scans. We don't need to invalidate module cache roots,\n\t// because they are immutable.\n\t// (We don't support a use case where GOMODCACHE is cleaned in the middle of\n\t// e.g. a gopls session: the user must restart gopls to get accurate\n\t// imports.)\n\t//\n\t// Scanning for new directories in GOMODCACHE should be handled elsewhere,\n\t// via a call to ScanModuleCache.\n\tfor _, root := range r.roots {\n\t\tif root.Type == gopathwalk.RootModuleCache && r.scannedRoots[root] {\n\t\t\tr2.scannedRoots[root] = true\n\t\t}\n\t}\n\tr.scanSema <- struct{}{} // release r\n\treturn r2\n}\n\n// ClearModuleInfo invalidates resolver state that depends on go.mod file\n// contents (essentially, the output of go list -m -json ...).\n//\n// Notably, it does not forget directory contents, which are reset\n// asynchronously via ClearForNewScan.\n//\n// If the ProcessEnv is a GOPATH environment, ClearModuleInfo is a no op.\n//\n// TODO(rfindley): move this to a new env.go, consolidating ProcessEnv methods.\nfunc (e *ProcessEnv) ClearModuleInfo() {\n\tif r, ok := e.resolver.(*ModuleResolver); ok {\n\t\tresolver, err := newModuleResolver(e, e.ModCache)\n\t\tif err != nil {\n\t\t\te.resolver = nil\n\t\t\te.resolverErr = err\n\t\t\treturn\n\t\t}\n\n\t\t<-r.scanSema // acquire (guards caches)\n\t\tresolver.moduleCacheCache = r.moduleCacheCache\n\t\tresolver.otherCache = r.otherCache\n\t\tr.scanSema <- struct{}{} // release\n\n\t\te.UpdateResolver(resolver)\n\t}\n}\n\n// UpdateResolver sets the resolver for the ProcessEnv to use in imports\n// operations. Only for use with the result of [Resolver.ClearForNewScan].\n//\n// TODO(rfindley): this awkward API is a result of the (arguably) inverted\n// relationship between configuration and state described in the doc comment\n// for [ProcessEnv].\nfunc (e *ProcessEnv) UpdateResolver(r Resolver) {\n\te.resolver = r\n\te.resolverErr = nil\n}\n\n// findPackage returns the module and directory from within the main modules\n// and their dependencies that contains the package at the given import path,\n// or returns nil, \"\" if no module is in scope.\nfunc (r *ModuleResolver) findPackage(importPath string) (*gocommand.ModuleJSON, string) {\n\t// This can't find packages in the stdlib, but that's harmless for all\n\t// the existing code paths.\n\tfor _, m := range r.modsByModPath {\n\t\tif !strings.HasPrefix(importPath, m.Path) {\n\t\t\tcontinue\n\t\t}\n\t\tpathInModule := importPath[len(m.Path):]\n\t\tpkgDir := filepath.Join(m.Dir, pathInModule)\n\t\tif r.dirIsNestedModule(pkgDir, m) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif info, ok := r.cacheLoad(pkgDir); ok {\n\t\t\tif loaded, err := info.reachedStatus(nameLoaded); loaded {\n\t\t\t\tif err != nil {\n\t\t\t\t\tcontinue // No package in this dir.\n\t\t\t\t}\n\t\t\t\treturn m, pkgDir\n\t\t\t}\n\t\t\tif scanned, err := info.reachedStatus(directoryScanned); scanned && err != nil {\n\t\t\t\tcontinue // Dir is unreadable, etc.\n\t\t\t}\n\t\t\t// This is slightly wrong: a directory doesn't have to have an\n\t\t\t// importable package to count as a package for package-to-module\n\t\t\t// resolution. package main or _test files should count but\n\t\t\t// don't.\n\t\t\t// TODO(heschi): fix this.\n\t\t\tif _, err := r.cachePackageName(info); err == nil {\n\t\t\t\treturn m, pkgDir\n\t\t\t}\n\t\t}\n\n\t\t// Not cached. Read the filesystem.\n\t\tpkgFiles, err := os.ReadDir(pkgDir)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\t// A module only contains a package if it has buildable go\n\t\t// files in that directory. If not, it could be provided by an\n\t\t// outer module. See #29736.\n\t\tfor _, fi := range pkgFiles {\n\t\t\tif ok, _ := r.env.matchFile(pkgDir, fi.Name()); ok {\n\t\t\t\treturn m, pkgDir\n\t\t\t}\n\t\t}\n\t}\n\treturn nil, \"\"\n}\n\nfunc (r *ModuleResolver) cacheLoad(dir string) (directoryPackageInfo, bool) {\n\tif info, ok := r.moduleCacheCache.Load(dir); ok {\n\t\treturn info, ok\n\t}\n\treturn r.otherCache.Load(dir)\n}\n\nfunc (r *ModuleResolver) cacheStore(info directoryPackageInfo) {\n\tif info.rootType == gopathwalk.RootModuleCache {\n\t\tr.moduleCacheCache.Store(info.dir, info)\n\t} else {\n\t\tr.otherCache.Store(info.dir, info)\n\t}\n}\n\n// cachePackageName caches the package name for a dir already in the cache.\nfunc (r *ModuleResolver) cachePackageName(info directoryPackageInfo) (string, error) {\n\tif info.rootType == gopathwalk.RootModuleCache {\n\t\treturn r.moduleCacheCache.CachePackageName(info)\n\t}\n\treturn r.otherCache.CachePackageName(info)\n}\n\nfunc (r *ModuleResolver) cacheExports(ctx context.Context, env *ProcessEnv, info directoryPackageInfo) (string, []stdlib.Symbol, error) {\n\tif info.rootType == gopathwalk.RootModuleCache {\n\t\treturn r.moduleCacheCache.CacheExports(ctx, env, info)\n\t}\n\treturn r.otherCache.CacheExports(ctx, env, info)\n}\n\n// findModuleByDir returns the module that contains dir, or nil if no such\n// module is in scope.\nfunc (r *ModuleResolver) findModuleByDir(dir string) *gocommand.ModuleJSON {\n\t// This is quite tricky and may not be correct. dir could be:\n\t// - a package in the main module.\n\t// - a replace target underneath the main module's directory.\n\t//    - a nested module in the above.\n\t// - a replace target somewhere totally random.\n\t//    - a nested module in the above.\n\t// - in the mod cache.\n\t// - in /vendor/ in -mod=vendor mode.\n\t//    - nested module? Dunno.\n\t// Rumor has it that replace targets cannot contain other replace targets.\n\t//\n\t// Note that it is critical here that modsByDir is sorted to have deeper dirs\n\t// first. This ensures that findModuleByDir finds the innermost module.\n\t// See also golang/go#56291.\n\tfor _, m := range r.modsByDir {\n\t\tif !strings.HasPrefix(dir, m.Dir) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif r.dirIsNestedModule(dir, m) {\n\t\t\tcontinue\n\t\t}\n\n\t\treturn m\n\t}\n\treturn nil\n}\n\n// dirIsNestedModule reports if dir is contained in a nested module underneath\n// mod, not actually in mod.\nfunc (r *ModuleResolver) dirIsNestedModule(dir string, mod *gocommand.ModuleJSON) bool {\n\tif !strings.HasPrefix(dir, mod.Dir) {\n\t\treturn false\n\t}\n\tif r.dirInModuleCache(dir) {\n\t\t// Nested modules in the module cache are pruned,\n\t\t// so it cannot be a nested module.\n\t\treturn false\n\t}\n\tif mod != nil && mod == r.dummyVendorMod {\n\t\t// The /vendor pseudomodule is flattened and doesn't actually count.\n\t\treturn false\n\t}\n\tmodDir, _ := r.modInfo(dir)\n\tif modDir == \"\" {\n\t\treturn false\n\t}\n\treturn modDir != mod.Dir\n}\n\nfunc readModName(modFile string) string {\n\tmodBytes, err := os.ReadFile(modFile)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\treturn modulePath(modBytes)\n}\n\nfunc (r *ModuleResolver) modInfo(dir string) (modDir, modName string) {\n\tif r.dirInModuleCache(dir) {\n\t\tif matches := modCacheRegexp.FindStringSubmatch(dir); len(matches) == 3 {\n\t\t\tindex := strings.Index(dir, matches[1]+\"@\"+matches[2])\n\t\t\tmodDir := filepath.Join(dir[:index], matches[1]+\"@\"+matches[2])\n\t\t\treturn modDir, readModName(filepath.Join(modDir, \"go.mod\"))\n\t\t}\n\t}\n\tfor {\n\t\tif info, ok := r.cacheLoad(dir); ok {\n\t\t\treturn info.moduleDir, info.moduleName\n\t\t}\n\t\tf := filepath.Join(dir, \"go.mod\")\n\t\tinfo, err := os.Stat(f)\n\t\tif err == nil && !info.IsDir() {\n\t\t\treturn dir, readModName(f)\n\t\t}\n\n\t\td := filepath.Dir(dir)\n\t\tif len(d) >= len(dir) {\n\t\t\treturn \"\", \"\" // reached top of file system, no go.mod\n\t\t}\n\t\tdir = d\n\t}\n}\n\nfunc (r *ModuleResolver) dirInModuleCache(dir string) bool {\n\tif r.moduleCacheDir == \"\" {\n\t\treturn false\n\t}\n\treturn strings.HasPrefix(dir, r.moduleCacheDir)\n}\n\nfunc (r *ModuleResolver) loadPackageNames(importPaths []string, srcDir string) (map[string]string, error) {\n\tnames := map[string]string{}\n\tfor _, path := range importPaths {\n\t\t// TODO(rfindley): shouldn't this use the dirInfoCache?\n\t\t_, packageDir := r.findPackage(path)\n\t\tif packageDir == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tname, err := packageDirToName(packageDir)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tnames[path] = name\n\t}\n\treturn names, nil\n}\n\nfunc (r *ModuleResolver) scan(ctx context.Context, callback *scanCallback) error {\n\tctx, done := event.Start(ctx, \"imports.ModuleResolver.scan\")\n\tdefer done()\n\n\tprocessDir := func(info directoryPackageInfo) {\n\t\t// Skip this directory if we were not able to get the package information successfully.\n\t\tif scanned, err := info.reachedStatus(directoryScanned); !scanned || err != nil {\n\t\t\treturn\n\t\t}\n\t\tpkg, err := r.canonicalize(info)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tif !callback.dirFound(pkg) {\n\t\t\treturn\n\t\t}\n\n\t\tpkg.packageName, err = r.cachePackageName(info)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tif !callback.packageNameLoaded(pkg) {\n\t\t\treturn\n\t\t}\n\n\t\t_, exports, err := r.loadExports(ctx, pkg, false)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tcallback.exportsLoaded(pkg, exports)\n\t}\n\n\t// Start processing everything in the cache, and listen for the new stuff\n\t// we discover in the walk below.\n\tstop1 := r.moduleCacheCache.ScanAndListen(ctx, processDir)\n\tdefer stop1()\n\tstop2 := r.otherCache.ScanAndListen(ctx, processDir)\n\tdefer stop2()\n\n\t// We assume cached directories are fully cached, including all their\n\t// children, and have not changed. We can skip them.\n\tskip := func(root gopathwalk.Root, dir string) bool {\n\t\tif r.env.SkipPathInScan != nil && root.Type == gopathwalk.RootCurrentModule {\n\t\t\tif root.Path == dir {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif r.env.SkipPathInScan(filepath.Clean(dir)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\tinfo, ok := r.cacheLoad(dir)\n\t\tif !ok {\n\t\t\treturn false\n\t\t}\n\t\t// This directory can be skipped as long as we have already scanned it.\n\t\t// Packages with errors will continue to have errors, so there is no need\n\t\t// to rescan them.\n\t\tpackageScanned, _ := info.reachedStatus(directoryScanned)\n\t\treturn packageScanned\n\t}\n\n\tadd := func(root gopathwalk.Root, dir string) {\n\t\tr.cacheStore(r.scanDirForPackage(root, dir))\n\t}\n\n\t// r.roots and the callback are not necessarily safe to use in the\n\t// goroutine below. Process them eagerly.\n\troots := filterRoots(r.roots, callback.rootFound)\n\t// We can't cancel walks, because we need them to finish to have a usable\n\t// cache. Instead, run them in a separate goroutine and detach.\n\tscanDone := make(chan struct{})\n\tgo func() {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\treturn\n\t\tcase <-r.scanSema: // acquire\n\t\t}\n\t\tdefer func() { r.scanSema <- struct{}{} }() // release\n\t\t// We have the lock on r.scannedRoots, and no other scans can run.\n\t\tfor _, root := range roots {\n\t\t\tif ctx.Err() != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif r.scannedRoots[root] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tgopathwalk.WalkSkip([]gopathwalk.Root{root}, add, skip, gopathwalk.Options{Logf: r.env.Logf, ModulesEnabled: true})\n\t\t\tr.scannedRoots[root] = true\n\t\t}\n\t\tclose(scanDone)\n\t}()\n\tselect {\n\tcase <-ctx.Done():\n\tcase <-scanDone:\n\t}\n\treturn nil\n}\n\nfunc (r *ModuleResolver) scoreImportPath(ctx context.Context, path string) float64 {\n\tif stdlib.HasPackage(path) {\n\t\treturn MaxRelevance\n\t}\n\tmod, _ := r.findPackage(path)\n\treturn modRelevance(mod)\n}\n\nfunc modRelevance(mod *gocommand.ModuleJSON) float64 {\n\tvar relevance float64\n\tswitch {\n\tcase mod == nil: // out of scope\n\t\treturn MaxRelevance - 4\n\tcase mod.Indirect:\n\t\trelevance = MaxRelevance - 3\n\tcase !mod.Main:\n\t\trelevance = MaxRelevance - 2\n\tdefault:\n\t\trelevance = MaxRelevance - 1 // main module ties with stdlib\n\t}\n\n\t_, versionString, ok := module.SplitPathVersion(mod.Path)\n\tif ok {\n\t\tindex := strings.Index(versionString, \"v\")\n\t\tif index == -1 {\n\t\t\treturn relevance\n\t\t}\n\t\tif versionNumber, err := strconv.ParseFloat(versionString[index+1:], 64); err == nil {\n\t\t\trelevance += versionNumber / 1000\n\t\t}\n\t}\n\n\treturn relevance\n}\n\n// canonicalize gets the result of canonicalizing the packages using the results\n// of initializing the resolver from 'go list -m'.\nfunc (r *ModuleResolver) canonicalize(info directoryPackageInfo) (*pkg, error) {\n\t// Packages in GOROOT are already canonical, regardless of the std/cmd modules.\n\tif info.rootType == gopathwalk.RootGOROOT {\n\t\treturn &pkg{\n\t\t\timportPathShort: info.nonCanonicalImportPath,\n\t\t\tdir:             info.dir,\n\t\t\tpackageName:     path.Base(info.nonCanonicalImportPath),\n\t\t\trelevance:       MaxRelevance,\n\t\t}, nil\n\t}\n\n\timportPath := info.nonCanonicalImportPath\n\tmod := r.findModuleByDir(info.dir)\n\t// Check if the directory is underneath a module that's in scope.\n\tif mod != nil {\n\t\t// It is. If dir is the target of a replace directive,\n\t\t// our guessed import path is wrong. Use the real one.\n\t\tif mod.Dir == info.dir {\n\t\t\timportPath = mod.Path\n\t\t} else {\n\t\t\tdirInMod := info.dir[len(mod.Dir)+len(\"/\"):]\n\t\t\timportPath = path.Join(mod.Path, filepath.ToSlash(dirInMod))\n\t\t}\n\t} else if !strings.HasPrefix(importPath, info.moduleName) {\n\t\t// The module's name doesn't match the package's import path. It\n\t\t// probably needs a replace directive we don't have.\n\t\treturn nil, fmt.Errorf(\"package in %q is not valid without a replace statement\", info.dir)\n\t}\n\n\tres := &pkg{\n\t\timportPathShort: importPath,\n\t\tdir:             info.dir,\n\t\trelevance:       modRelevance(mod),\n\t}\n\t// We may have discovered a package that has a different version\n\t// in scope already. Canonicalize to that one if possible.\n\tif _, canonicalDir := r.findPackage(importPath); canonicalDir != \"\" {\n\t\tres.dir = canonicalDir\n\t}\n\treturn res, nil\n}\n\nfunc (r *ModuleResolver) loadExports(ctx context.Context, pkg *pkg, includeTest bool) (string, []stdlib.Symbol, error) {\n\tif info, ok := r.cacheLoad(pkg.dir); ok && !includeTest {\n\t\treturn r.cacheExports(ctx, r.env, info)\n\t}\n\treturn loadExportsFromFiles(ctx, r.env, pkg.dir, includeTest)\n}\n\nfunc (r *ModuleResolver) scanDirForPackage(root gopathwalk.Root, dir string) directoryPackageInfo {\n\tsubdir := \"\"\n\tif prefix := root.Path + string(filepath.Separator); strings.HasPrefix(dir, prefix) {\n\t\tsubdir = dir[len(prefix):]\n\t}\n\timportPath := filepath.ToSlash(subdir)\n\tif strings.HasPrefix(importPath, \"vendor/\") {\n\t\t// Only enter vendor directories if they're explicitly requested as a root.\n\t\treturn directoryPackageInfo{\n\t\t\tstatus: directoryScanned,\n\t\t\terr:    fmt.Errorf(\"unwanted vendor directory\"),\n\t\t}\n\t}\n\tswitch root.Type {\n\tcase gopathwalk.RootCurrentModule:\n\t\timportPath = path.Join(r.mainByDir[root.Path].Path, filepath.ToSlash(subdir))\n\tcase gopathwalk.RootModuleCache:\n\t\tmatches := modCacheRegexp.FindStringSubmatch(subdir)\n\t\tif len(matches) == 0 {\n\t\t\treturn directoryPackageInfo{\n\t\t\t\tstatus: directoryScanned,\n\t\t\t\terr:    fmt.Errorf(\"invalid module cache path: %v\", subdir),\n\t\t\t}\n\t\t}\n\t\tmodPath, err := module.UnescapePath(filepath.ToSlash(matches[1]))\n\t\tif err != nil {\n\t\t\tr.env.logf(\"decoding module cache path %q: %v\", subdir, err)\n\t\t\treturn directoryPackageInfo{\n\t\t\t\tstatus: directoryScanned,\n\t\t\t\terr:    fmt.Errorf(\"decoding module cache path %q: %v\", subdir, err),\n\t\t\t}\n\t\t}\n\t\timportPath = path.Join(modPath, filepath.ToSlash(matches[3]))\n\t}\n\n\tmodDir, modName := r.modInfo(dir)\n\tresult := directoryPackageInfo{\n\t\tstatus:                 directoryScanned,\n\t\tdir:                    dir,\n\t\trootType:               root.Type,\n\t\tnonCanonicalImportPath: importPath,\n\t\tmoduleDir:              modDir,\n\t\tmoduleName:             modName,\n\t}\n\tif root.Type == gopathwalk.RootGOROOT {\n\t\t// stdlib packages are always in scope, despite the confusing go.mod\n\t\treturn result\n\t}\n\treturn result\n}\n\n// modCacheRegexp splits a path in a module cache into module, module version, and package.\nvar modCacheRegexp = regexp.MustCompile(`(.*)@([^/\\\\]*)(.*)`)\n\nvar (\n\tslashSlash = []byte(\"//\")\n\tmoduleStr  = []byte(\"module\")\n)\n\n// modulePath returns the module path from the gomod file text.\n// If it cannot find a module path, it returns an empty string.\n// It is tolerant of unrelated problems in the go.mod file.\n//\n// Copied from cmd/go/internal/modfile.\nfunc modulePath(mod []byte) string {\n\tfor len(mod) > 0 {\n\t\tline := mod\n\t\tmod = nil\n\t\tif i := bytes.IndexByte(line, '\\n'); i >= 0 {\n\t\t\tline, mod = line[:i], line[i+1:]\n\t\t}\n\t\tif i := bytes.Index(line, slashSlash); i >= 0 {\n\t\t\tline = line[:i]\n\t\t}\n\t\tline = bytes.TrimSpace(line)\n\t\tif !bytes.HasPrefix(line, moduleStr) {\n\t\t\tcontinue\n\t\t}\n\t\tline = line[len(moduleStr):]\n\t\tn := len(line)\n\t\tline = bytes.TrimSpace(line)\n\t\tif len(line) == n || len(line) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tif line[0] == '\"' || line[0] == '`' {\n\t\t\tp, err := strconv.Unquote(string(line))\n\t\t\tif err != nil {\n\t\t\t\treturn \"\" // malformed quoted string or multiline module path\n\t\t\t}\n\t\t\treturn p\n\t\t}\n\n\t\treturn string(line)\n\t}\n\treturn \"\" // missing module path\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/imports/mod_cache.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage imports\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"golang.org/x/mod/module\"\n\t\"golang.org/x/tools/internal/gopathwalk\"\n\t\"golang.org/x/tools/internal/stdlib\"\n)\n\n// To find packages to import, the resolver needs to know about all of\n// the packages that could be imported. This includes packages that are\n// already in modules that are in (1) the current module, (2) replace targets,\n// and (3) packages in the module cache. Packages in (1) and (2) may change over\n// time, as the client may edit the current module and locally replaced modules.\n// The module cache (which includes all of the packages in (3)) can only\n// ever be added to.\n//\n// The resolver can thus save state about packages in the module cache\n// and guarantee that this will not change over time. To obtain information\n// about new modules added to the module cache, the module cache should be\n// rescanned.\n//\n// It is OK to serve information about modules that have been deleted,\n// as they do still exist.\n// TODO(suzmue): can we share information with the caller about\n// what module needs to be downloaded to import this package?\n\ntype directoryPackageStatus int\n\nconst (\n\t_ directoryPackageStatus = iota\n\tdirectoryScanned\n\tnameLoaded\n\texportsLoaded\n)\n\n// directoryPackageInfo holds (possibly incomplete) information about packages\n// contained in a given directory.\ntype directoryPackageInfo struct {\n\t// status indicates the extent to which this struct has been filled in.\n\tstatus directoryPackageStatus\n\t// err is non-nil when there was an error trying to reach status.\n\terr error\n\n\t// Set when status >= directoryScanned.\n\n\t// dir is the absolute directory of this package.\n\tdir      string\n\trootType gopathwalk.RootType\n\t// nonCanonicalImportPath is the package's expected import path. It may\n\t// not actually be importable at that path.\n\tnonCanonicalImportPath string\n\n\t// Module-related information.\n\tmoduleDir  string // The directory that is the module root of this dir.\n\tmoduleName string // The module name that contains this dir.\n\n\t// Set when status >= nameLoaded.\n\n\tpackageName string // the package name, as declared in the source.\n\n\t// Set when status >= exportsLoaded.\n\t// TODO(rfindley): it's hard to see this, but exports depend implicitly on\n\t// the default build context GOOS and GOARCH.\n\t//\n\t// We can make this explicit, and key exports by GOOS, GOARCH.\n\texports []stdlib.Symbol\n}\n\n// reachedStatus returns true when info has a status at least target and any error associated with\n// an attempt to reach target.\nfunc (info *directoryPackageInfo) reachedStatus(target directoryPackageStatus) (bool, error) {\n\tif info.err == nil {\n\t\treturn info.status >= target, nil\n\t}\n\tif info.status == target {\n\t\treturn true, info.err\n\t}\n\treturn true, nil\n}\n\n// DirInfoCache is a concurrency-safe map for storing information about\n// directories that may contain packages.\n//\n// The information in this cache is built incrementally. Entries are initialized in scan.\n// No new keys should be added in any other functions, as all directories containing\n// packages are identified in scan.\n//\n// Other functions, including loadExports and findPackage, may update entries in this cache\n// as they discover new things about the directory.\n//\n// The information in the cache is not expected to change for the cache's\n// lifetime, so there is no protection against competing writes. Users should\n// take care not to hold the cache across changes to the underlying files.\ntype DirInfoCache struct {\n\tmu sync.Mutex\n\t// dirs stores information about packages in directories, keyed by absolute path.\n\tdirs      map[string]*directoryPackageInfo\n\tlisteners map[*int]cacheListener\n}\n\nfunc NewDirInfoCache() *DirInfoCache {\n\treturn &DirInfoCache{\n\t\tdirs:      make(map[string]*directoryPackageInfo),\n\t\tlisteners: make(map[*int]cacheListener),\n\t}\n}\n\ntype cacheListener func(directoryPackageInfo)\n\n// ScanAndListen calls listener on all the items in the cache, and on anything\n// newly added. The returned stop function waits for all in-flight callbacks to\n// finish and blocks new ones.\nfunc (d *DirInfoCache) ScanAndListen(ctx context.Context, listener cacheListener) func() {\n\tctx, cancel := context.WithCancel(ctx)\n\n\t// Flushing out all the callbacks is tricky without knowing how many there\n\t// are going to be. Setting an arbitrary limit makes it much easier.\n\tconst maxInFlight = 10\n\tsema := make(chan struct{}, maxInFlight)\n\tfor range maxInFlight {\n\t\tsema <- struct{}{}\n\t}\n\n\tcookie := new(int) // A unique ID we can use for the listener.\n\n\t// We can't hold mu while calling the listener.\n\td.mu.Lock()\n\tvar keys []string\n\tfor key := range d.dirs {\n\t\tkeys = append(keys, key)\n\t}\n\td.listeners[cookie] = func(info directoryPackageInfo) {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\treturn\n\t\tcase <-sema:\n\t\t}\n\t\tlistener(info)\n\t\tsema <- struct{}{}\n\t}\n\td.mu.Unlock()\n\n\tstop := func() {\n\t\tcancel()\n\t\td.mu.Lock()\n\t\tdelete(d.listeners, cookie)\n\t\td.mu.Unlock()\n\t\tfor range maxInFlight {\n\t\t\t<-sema\n\t\t}\n\t}\n\n\t// Process the pre-existing keys.\n\tfor _, k := range keys {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\treturn stop\n\t\tdefault:\n\t\t}\n\t\tif v, ok := d.Load(k); ok {\n\t\t\tlistener(v)\n\t\t}\n\t}\n\n\treturn stop\n}\n\n// Store stores the package info for dir.\nfunc (d *DirInfoCache) Store(dir string, info directoryPackageInfo) {\n\td.mu.Lock()\n\t// TODO(rfindley, golang/go#59216): should we overwrite an existing entry?\n\t// That seems incorrect as the cache should be idempotent.\n\t_, old := d.dirs[dir]\n\td.dirs[dir] = &info\n\tvar listeners []cacheListener\n\tfor _, l := range d.listeners {\n\t\tlisteners = append(listeners, l)\n\t}\n\td.mu.Unlock()\n\n\tif !old {\n\t\tfor _, l := range listeners {\n\t\t\tl(info)\n\t\t}\n\t}\n}\n\n// Load returns a copy of the directoryPackageInfo for absolute directory dir.\nfunc (d *DirInfoCache) Load(dir string) (directoryPackageInfo, bool) {\n\td.mu.Lock()\n\tdefer d.mu.Unlock()\n\tinfo, ok := d.dirs[dir]\n\tif !ok {\n\t\treturn directoryPackageInfo{}, false\n\t}\n\treturn *info, true\n}\n\n// Keys returns the keys currently present in d.\nfunc (d *DirInfoCache) Keys() (keys []string) {\n\td.mu.Lock()\n\tdefer d.mu.Unlock()\n\tfor key := range d.dirs {\n\t\tkeys = append(keys, key)\n\t}\n\treturn keys\n}\n\nfunc (d *DirInfoCache) CachePackageName(info directoryPackageInfo) (string, error) {\n\tif loaded, err := info.reachedStatus(nameLoaded); loaded {\n\t\treturn info.packageName, err\n\t}\n\tif scanned, err := info.reachedStatus(directoryScanned); !scanned || err != nil {\n\t\treturn \"\", fmt.Errorf(\"cannot read package name, scan error: %v\", err)\n\t}\n\tinfo.packageName, info.err = packageDirToName(info.dir)\n\tinfo.status = nameLoaded\n\td.Store(info.dir, info)\n\treturn info.packageName, info.err\n}\n\nfunc (d *DirInfoCache) CacheExports(ctx context.Context, env *ProcessEnv, info directoryPackageInfo) (string, []stdlib.Symbol, error) {\n\tif reached, _ := info.reachedStatus(exportsLoaded); reached {\n\t\treturn info.packageName, info.exports, info.err\n\t}\n\tif reached, err := info.reachedStatus(nameLoaded); reached && err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tinfo.packageName, info.exports, info.err = loadExportsFromFiles(ctx, env, info.dir, false)\n\tif info.err == context.Canceled || info.err == context.DeadlineExceeded {\n\t\treturn info.packageName, info.exports, info.err\n\t}\n\t// The cache structure wants things to proceed linearly. We can skip a\n\t// step here, but only if we succeed.\n\tif info.status == nameLoaded || info.err == nil {\n\t\tinfo.status = exportsLoaded\n\t} else {\n\t\tinfo.status = nameLoaded\n\t}\n\td.Store(info.dir, info)\n\treturn info.packageName, info.exports, info.err\n}\n\n// ScanModuleCache walks the given directory, which must be a GOMODCACHE value,\n// for directory package information, storing the results in cache.\nfunc ScanModuleCache(dir string, cache *DirInfoCache, logf func(string, ...any)) {\n\t// Note(rfindley): it's hard to see, but this function attempts to implement\n\t// just the side effects on cache of calling PrimeCache with a ProcessEnv\n\t// that has the given dir as its GOMODCACHE.\n\t//\n\t// Teasing out the control flow, we see that we can avoid any handling of\n\t// vendor/ and can infer module info entirely from the path, simplifying the\n\t// logic here.\n\n\troot := gopathwalk.Root{\n\t\tPath: filepath.Clean(dir),\n\t\tType: gopathwalk.RootModuleCache,\n\t}\n\n\tdirectoryInfo := func(root gopathwalk.Root, dir string) directoryPackageInfo {\n\t\t// This is a copy of ModuleResolver.scanDirForPackage, trimmed down to\n\t\t// logic that applies to a module cache directory.\n\n\t\tsubdir := \"\"\n\t\tif dir != root.Path {\n\t\t\tsubdir = dir[len(root.Path)+len(\"/\"):]\n\t\t}\n\n\t\tmatches := modCacheRegexp.FindStringSubmatch(subdir)\n\t\tif len(matches) == 0 {\n\t\t\treturn directoryPackageInfo{\n\t\t\t\tstatus: directoryScanned,\n\t\t\t\terr:    fmt.Errorf(\"invalid module cache path: %v\", subdir),\n\t\t\t}\n\t\t}\n\t\tmodPath, err := module.UnescapePath(filepath.ToSlash(matches[1]))\n\t\tif err != nil {\n\t\t\tif logf != nil {\n\t\t\t\tlogf(\"decoding module cache path %q: %v\", subdir, err)\n\t\t\t}\n\t\t\treturn directoryPackageInfo{\n\t\t\t\tstatus: directoryScanned,\n\t\t\t\terr:    fmt.Errorf(\"decoding module cache path %q: %v\", subdir, err),\n\t\t\t}\n\t\t}\n\t\timportPath := path.Join(modPath, filepath.ToSlash(matches[3]))\n\t\tindex := strings.Index(dir, matches[1]+\"@\"+matches[2])\n\t\tmodDir := filepath.Join(dir[:index], matches[1]+\"@\"+matches[2])\n\t\tmodName := readModName(filepath.Join(modDir, \"go.mod\"))\n\t\treturn directoryPackageInfo{\n\t\t\tstatus:                 directoryScanned,\n\t\t\tdir:                    dir,\n\t\t\trootType:               root.Type,\n\t\t\tnonCanonicalImportPath: importPath,\n\t\t\tmoduleDir:              modDir,\n\t\t\tmoduleName:             modName,\n\t\t}\n\t}\n\n\tadd := func(root gopathwalk.Root, dir string) {\n\t\tinfo := directoryInfo(root, dir)\n\t\tcache.Store(info.dir, info)\n\t}\n\n\tskip := func(_ gopathwalk.Root, dir string) bool {\n\t\t// Skip directories that have already been scanned.\n\t\t//\n\t\t// Note that gopathwalk only adds \"package\" directories, which must contain\n\t\t// a .go file, and all such package directories in the module cache are\n\t\t// immutable. So if we can load a dir, it can be skipped.\n\t\tinfo, ok := cache.Load(dir)\n\t\tif !ok {\n\t\t\treturn false\n\t\t}\n\t\tpackageScanned, _ := info.reachedStatus(directoryScanned)\n\t\treturn packageScanned\n\t}\n\n\tgopathwalk.WalkSkip([]gopathwalk.Root{root}, add, skip, gopathwalk.Options{Logf: logf, ModulesEnabled: true})\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/imports/sortimports.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Hacked up copy of go/ast/import.go\n// Modified to use a single token.File in preference to a FileSet.\n\npackage imports\n\nimport (\n\t\"go/ast\"\n\t\"go/token\"\n\t\"log\"\n\t\"reflect\"\n\t\"slices\"\n\t\"sort\"\n\t\"strconv\"\n)\n\n// sortImports sorts runs of consecutive import lines in import blocks in f.\n// It also removes duplicate imports when it is possible to do so without data loss.\n//\n// It may mutate the token.File and the ast.File.\nfunc sortImports(localPrefix string, tokFile *token.File, f *ast.File) {\n\tfor i, d := range f.Decls {\n\t\td, ok := d.(*ast.GenDecl)\n\t\tif !ok || d.Tok != token.IMPORT {\n\t\t\t// Not an import declaration, so we're done.\n\t\t\t// Imports are always first.\n\t\t\tbreak\n\t\t}\n\n\t\tif len(d.Specs) == 0 {\n\t\t\t// Empty import block, remove it.\n\t\t\tf.Decls = slices.Delete(f.Decls, i, i+1)\n\t\t}\n\n\t\tif !d.Lparen.IsValid() {\n\t\t\t// Not a block: sorted by default.\n\t\t\tcontinue\n\t\t}\n\n\t\t// Identify and sort runs of specs on successive lines.\n\t\ti := 0\n\t\tspecs := d.Specs[:0]\n\t\tfor j, s := range d.Specs {\n\t\t\tif j > i && tokFile.Line(s.Pos()) > 1+tokFile.Line(d.Specs[j-1].End()) {\n\t\t\t\t// j begins a new run.  End this one.\n\t\t\t\tspecs = append(specs, sortSpecs(localPrefix, tokFile, f, d.Specs[i:j])...)\n\t\t\t\ti = j\n\t\t\t}\n\t\t}\n\t\tspecs = append(specs, sortSpecs(localPrefix, tokFile, f, d.Specs[i:])...)\n\t\td.Specs = specs\n\n\t\t// Deduping can leave a blank line before the rparen; clean that up.\n\t\t// Ignore line directives.\n\t\tif len(d.Specs) > 0 {\n\t\t\tlastSpec := d.Specs[len(d.Specs)-1]\n\t\t\tlastLine := tokFile.PositionFor(lastSpec.Pos(), false).Line\n\t\t\tif rParenLine := tokFile.PositionFor(d.Rparen, false).Line; rParenLine > lastLine+1 {\n\t\t\t\ttokFile.MergeLine(rParenLine - 1) // has side effects!\n\t\t\t}\n\t\t}\n\t}\n}\n\n// mergeImports merges all the import declarations into the first one.\n// Taken from golang.org/x/tools/go/ast/astutil.\n// This does not adjust line numbers properly\nfunc mergeImports(f *ast.File) {\n\tif len(f.Decls) <= 1 {\n\t\treturn\n\t}\n\n\t// Merge all the import declarations into the first one.\n\tvar first *ast.GenDecl\n\tfor i := 0; i < len(f.Decls); i++ {\n\t\tdecl := f.Decls[i]\n\t\tgen, ok := decl.(*ast.GenDecl)\n\t\tif !ok || gen.Tok != token.IMPORT || declImports(gen, \"C\") {\n\t\t\tcontinue\n\t\t}\n\t\tif first == nil {\n\t\t\tfirst = gen\n\t\t\tcontinue // Don't touch the first one.\n\t\t}\n\t\t// We now know there is more than one package in this import\n\t\t// declaration. Ensure that it ends up parenthesized.\n\t\tfirst.Lparen = first.Pos()\n\t\t// Move the imports of the other import declaration to the first one.\n\t\tfor _, spec := range gen.Specs {\n\t\t\tupdateBasicLitPos(spec.(*ast.ImportSpec).Path, first.Pos())\n\t\t\tfirst.Specs = append(first.Specs, spec)\n\t\t}\n\t\tf.Decls = slices.Delete(f.Decls, i, i+1)\n\t\ti--\n\t}\n}\n\n// declImports reports whether gen contains an import of path.\n// Taken from golang.org/x/tools/go/ast/astutil.\nfunc declImports(gen *ast.GenDecl, path string) bool {\n\tif gen.Tok != token.IMPORT {\n\t\treturn false\n\t}\n\tfor _, spec := range gen.Specs {\n\t\timpspec := spec.(*ast.ImportSpec)\n\t\tif importPath(impspec) == path {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc importPath(s ast.Spec) string {\n\tt, err := strconv.Unquote(s.(*ast.ImportSpec).Path.Value)\n\tif err == nil {\n\t\treturn t\n\t}\n\treturn \"\"\n}\n\nfunc importName(s ast.Spec) string {\n\tn := s.(*ast.ImportSpec).Name\n\tif n == nil {\n\t\treturn \"\"\n\t}\n\treturn n.Name\n}\n\nfunc importComment(s ast.Spec) string {\n\tc := s.(*ast.ImportSpec).Comment\n\tif c == nil {\n\t\treturn \"\"\n\t}\n\treturn c.Text()\n}\n\n// collapse indicates whether prev may be removed, leaving only next.\nfunc collapse(prev, next ast.Spec) bool {\n\tif importPath(next) != importPath(prev) || importName(next) != importName(prev) {\n\t\treturn false\n\t}\n\treturn prev.(*ast.ImportSpec).Comment == nil\n}\n\ntype posSpan struct {\n\tStart token.Pos\n\tEnd   token.Pos\n}\n\n// sortSpecs sorts the import specs within each import decl.\n// It may mutate the token.File.\nfunc sortSpecs(localPrefix string, tokFile *token.File, f *ast.File, specs []ast.Spec) []ast.Spec {\n\t// Can't short-circuit here even if specs are already sorted,\n\t// since they might yet need deduplication.\n\t// A lone import, however, may be safely ignored.\n\tif len(specs) <= 1 {\n\t\treturn specs\n\t}\n\n\t// Record positions for specs.\n\tpos := make([]posSpan, len(specs))\n\tfor i, s := range specs {\n\t\tpos[i] = posSpan{s.Pos(), s.End()}\n\t}\n\n\t// Identify comments in this range.\n\t// Any comment from pos[0].Start to the final line counts.\n\tlastLine := tokFile.Line(pos[len(pos)-1].End)\n\tcstart := len(f.Comments)\n\tcend := len(f.Comments)\n\tfor i, g := range f.Comments {\n\t\tif g.Pos() < pos[0].Start {\n\t\t\tcontinue\n\t\t}\n\t\tif i < cstart {\n\t\t\tcstart = i\n\t\t}\n\t\tif tokFile.Line(g.End()) > lastLine {\n\t\t\tcend = i\n\t\t\tbreak\n\t\t}\n\t}\n\tcomments := f.Comments[cstart:cend]\n\n\t// Assign each comment to the import spec preceding it.\n\timportComment := map[*ast.ImportSpec][]*ast.CommentGroup{}\n\tspecIndex := 0\n\tfor _, g := range comments {\n\t\tfor specIndex+1 < len(specs) && pos[specIndex+1].Start <= g.Pos() {\n\t\t\tspecIndex++\n\t\t}\n\t\ts := specs[specIndex].(*ast.ImportSpec)\n\t\timportComment[s] = append(importComment[s], g)\n\t}\n\n\t// Sort the import specs by import path.\n\t// Remove duplicates, when possible without data loss.\n\t// Reassign the import paths to have the same position sequence.\n\t// Reassign each comment to abut the end of its spec.\n\t// Sort the comments by new position.\n\tsort.Sort(byImportSpec{localPrefix, specs})\n\n\t// Dedup. Thanks to our sorting, we can just consider\n\t// adjacent pairs of imports.\n\tdeduped := specs[:0]\n\tfor i, s := range specs {\n\t\tif i == len(specs)-1 || !collapse(s, specs[i+1]) {\n\t\t\tdeduped = append(deduped, s)\n\t\t} else {\n\t\t\tp := s.Pos()\n\t\t\ttokFile.MergeLine(tokFile.Line(p)) // has side effects!\n\t\t}\n\t}\n\tspecs = deduped\n\n\t// Fix up comment positions\n\tfor i, s := range specs {\n\t\ts := s.(*ast.ImportSpec)\n\t\tif s.Name != nil {\n\t\t\ts.Name.NamePos = pos[i].Start\n\t\t}\n\t\tupdateBasicLitPos(s.Path, pos[i].Start)\n\t\ts.EndPos = pos[i].End\n\t\tnextSpecPos := pos[i].End\n\n\t\tfor _, g := range importComment[s] {\n\t\t\tfor _, c := range g.List {\n\t\t\t\tc.Slash = pos[i].End\n\t\t\t\tnextSpecPos = c.End()\n\t\t\t}\n\t\t}\n\t\tif i < len(specs)-1 {\n\t\t\tpos[i+1].Start = nextSpecPos\n\t\t\tpos[i+1].End = nextSpecPos\n\t\t}\n\t}\n\n\tsort.Sort(byCommentPos(comments))\n\n\t// Fixup comments can insert blank lines, because import specs are on different lines.\n\t// We remove those blank lines here by merging import spec to the first import spec line.\n\tfirstSpecLine := tokFile.Line(specs[0].Pos())\n\tfor _, s := range specs[1:] {\n\t\tp := s.Pos()\n\t\tline := tokFile.Line(p)\n\t\tfor previousLine := line - 1; previousLine >= firstSpecLine; {\n\t\t\t// MergeLine can panic. Avoid the panic at the cost of not removing the blank line\n\t\t\t// golang/go#50329\n\t\t\tif previousLine > 0 && previousLine < tokFile.LineCount() {\n\t\t\t\ttokFile.MergeLine(previousLine) // has side effects!\n\t\t\t\tpreviousLine--\n\t\t\t} else {\n\t\t\t\t// try to gather some data to diagnose how this could happen\n\t\t\t\treq := \"Please report what the imports section of your go file looked like.\"\n\t\t\t\tlog.Printf(\"panic avoided: first:%d line:%d previous:%d max:%d. %s\",\n\t\t\t\t\tfirstSpecLine, line, previousLine, tokFile.LineCount(), req)\n\t\t\t}\n\t\t}\n\t}\n\treturn specs\n}\n\ntype byImportSpec struct {\n\tlocalPrefix string\n\tspecs       []ast.Spec // slice of *ast.ImportSpec\n}\n\nfunc (x byImportSpec) Len() int      { return len(x.specs) }\nfunc (x byImportSpec) Swap(i, j int) { x.specs[i], x.specs[j] = x.specs[j], x.specs[i] }\nfunc (x byImportSpec) Less(i, j int) bool {\n\tipath := importPath(x.specs[i])\n\tjpath := importPath(x.specs[j])\n\n\tigroup := importGroup(x.localPrefix, ipath)\n\tjgroup := importGroup(x.localPrefix, jpath)\n\tif igroup != jgroup {\n\t\treturn igroup < jgroup\n\t}\n\n\tif ipath != jpath {\n\t\treturn ipath < jpath\n\t}\n\tiname := importName(x.specs[i])\n\tjname := importName(x.specs[j])\n\n\tif iname != jname {\n\t\treturn iname < jname\n\t}\n\treturn importComment(x.specs[i]) < importComment(x.specs[j])\n}\n\ntype byCommentPos []*ast.CommentGroup\n\nfunc (x byCommentPos) Len() int           { return len(x) }\nfunc (x byCommentPos) Swap(i, j int)      { x[i], x[j] = x[j], x[i] }\nfunc (x byCommentPos) Less(i, j int) bool { return x[i].Pos() < x[j].Pos() }\n\n// updateBasicLitPos updates lit.Pos,\n// ensuring that lit.End (if set) is displaced by the same amount.\n// (See https://go.dev/issue/76395.)\nfunc updateBasicLitPos(lit *ast.BasicLit, pos token.Pos) {\n\tlen := lit.End() - lit.Pos()\n\tlit.ValuePos = pos\n\t// TODO(adonovan): after go1.26, simplify to:\n\t//   lit.ValueEnd = pos + len\n\tv := reflect.ValueOf(lit).Elem().FieldByName(\"ValueEnd\")\n\tif v.IsValid() && v.Int() != 0 {\n\t\tv.SetInt(int64(pos + len))\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/imports/source.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage imports\n\nimport \"context\"\n\n// These types document the APIs below.\n//\n// TODO(rfindley): consider making these defined types rather than aliases.\ntype (\n\tImportPath  = string\n\tPackageName = string\n\tSymbol      = string\n\n\t// References is set of References found in a Go file. The first map key is the\n\t// left hand side of a selector expression, the second key is the right hand\n\t// side, and the value should always be true.\n\tReferences = map[PackageName]map[Symbol]bool\n)\n\n// A Result satisfies a missing import.\n//\n// The Import field describes the missing import spec, and the Package field\n// summarizes the package exports.\ntype Result struct {\n\tImport  *ImportInfo\n\tPackage *PackageInfo\n}\n\n// An ImportInfo represents a single import statement.\ntype ImportInfo struct {\n\tImportPath string // import path, e.g. \"crypto/rand\".\n\tName       string // import name, e.g. \"crand\", or \"\" if none.\n}\n\n// A PackageInfo represents what's known about a package.\ntype PackageInfo struct {\n\tName    string          // package name in the package declaration, if known\n\tExports map[string]bool // set of names of known package level sortSymbols\n}\n\n// A Source provides imports to satisfy unresolved references in the file being\n// fixed.\ntype Source interface {\n\t// LoadPackageNames queries PackageName information for the requested import\n\t// paths, when operating from the provided srcDir.\n\t//\n\t// TODO(rfindley): try to refactor to remove this operation.\n\tLoadPackageNames(ctx context.Context, srcDir string, paths []ImportPath) (map[ImportPath]PackageName, error)\n\n\t// ResolveReferences asks the Source for the best package name to satisfy\n\t// each of the missing references, in the context of fixing the given\n\t// filename.\n\t//\n\t// Returns a map from package name to a [Result] for that package name that\n\t// provides the required symbols. Keys may be omitted in the map if no\n\t// candidates satisfy all missing references for that package name. It is up\n\t// to each data source to select the best result for each entry in the\n\t// missing map.\n\tResolveReferences(ctx context.Context, filename string, missing References) ([]*Result, error)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/imports/source_env.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage imports\n\nimport (\n\t\"context\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"golang.org/x/sync/errgroup\"\n\t\"golang.org/x/tools/internal/gopathwalk\"\n)\n\n// ProcessEnvSource implements the [Source] interface using the legacy\n// [ProcessEnv] abstraction.\ntype ProcessEnvSource struct {\n\tenv      *ProcessEnv\n\tsrcDir   string\n\tfilename string\n\tpkgName  string\n}\n\n// NewProcessEnvSource returns a [ProcessEnvSource] wrapping the given\n// env, to be used for fixing imports in the file with name filename in package\n// named pkgName.\nfunc NewProcessEnvSource(env *ProcessEnv, filename, pkgName string) (*ProcessEnvSource, error) {\n\tabs, err := filepath.Abs(filename)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsrcDir := filepath.Dir(abs)\n\treturn &ProcessEnvSource{\n\t\tenv:      env,\n\t\tsrcDir:   srcDir,\n\t\tfilename: filename,\n\t\tpkgName:  pkgName,\n\t}, nil\n}\n\nfunc (s *ProcessEnvSource) LoadPackageNames(ctx context.Context, srcDir string, unknown []string) (map[string]string, error) {\n\tr, err := s.env.GetResolver()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn r.loadPackageNames(unknown, srcDir)\n}\n\nfunc (s *ProcessEnvSource) ResolveReferences(ctx context.Context, filename string, refs map[string]map[string]bool) ([]*Result, error) {\n\tvar mu sync.Mutex\n\tfound := make(map[string][]pkgDistance)\n\tcallback := &scanCallback{\n\t\trootFound: func(gopathwalk.Root) bool {\n\t\t\treturn true // We want everything.\n\t\t},\n\t\tdirFound: func(pkg *pkg) bool {\n\t\t\treturn pkgIsCandidate(filename, refs, pkg)\n\t\t},\n\t\tpackageNameLoaded: func(pkg *pkg) bool {\n\t\t\tif _, want := refs[pkg.packageName]; !want {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif pkg.dir == s.srcDir && s.pkgName == pkg.packageName {\n\t\t\t\t// The candidate is in the same directory and has the\n\t\t\t\t// same package name. Don't try to import ourselves.\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !CanUse(filename, pkg.dir) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tmu.Lock()\n\t\t\tdefer mu.Unlock()\n\t\t\tfound[pkg.packageName] = append(found[pkg.packageName], pkgDistance{pkg, distance(s.srcDir, pkg.dir)})\n\t\t\treturn false // We'll do our own loading after we sort.\n\t\t},\n\t}\n\tresolver, err := s.env.GetResolver()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := resolver.scan(ctx, callback); err != nil {\n\t\treturn nil, err\n\t}\n\n\tg, ctx := errgroup.WithContext(ctx)\n\n\tsearcher := symbolSearcher{\n\t\tlogf:        s.env.logf,\n\t\tsrcDir:      s.srcDir,\n\t\txtest:       strings.HasSuffix(s.pkgName, \"_test\"),\n\t\tloadExports: resolver.loadExports,\n\t}\n\n\tvar resultMu sync.Mutex\n\tresults := make(map[string]*Result, len(refs))\n\tfor pkgName, symbols := range refs {\n\t\tg.Go(func() error {\n\t\t\tfound, err := searcher.search(ctx, found[pkgName], pkgName, symbols)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif found == nil {\n\t\t\t\treturn nil // No matching package.\n\t\t\t}\n\n\t\t\timp := &ImportInfo{\n\t\t\t\tImportPath: found.importPathShort,\n\t\t\t}\n\t\t\tpkg := &PackageInfo{\n\t\t\t\tName:    pkgName,\n\t\t\t\tExports: symbols,\n\t\t\t}\n\t\t\tresultMu.Lock()\n\t\t\tresults[pkgName] = &Result{Import: imp, Package: pkg}\n\t\t\tresultMu.Unlock()\n\t\t\treturn nil\n\t\t})\n\t}\n\tif err := g.Wait(); err != nil {\n\t\treturn nil, err\n\t}\n\tvar ans []*Result\n\tfor _, x := range results {\n\t\tans = append(ans, x)\n\t}\n\treturn ans, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/imports/source_modindex.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage imports\n\nimport (\n\t\"context\"\n\t\"sync\"\n\t\"time\"\n\n\t\"golang.org/x/tools/internal/modindex\"\n)\n\n// This code is here rather than in the modindex package\n// to avoid import loops\n\n// TODO(adonovan): this code is only used by a test in this package.\n// Can we delete it? Or is there a plan to call NewIndexSource from\n// cmd/goimports?\n\n// implements Source using modindex, so only for module cache.\n//\n// this is perhaps over-engineered. A new Index is read at first use.\n// And then Update is called after every 15 minutes, and a new Index\n// is read if the index changed. It is not clear the Mutex is needed.\ntype IndexSource struct {\n\tmodcachedir string\n\tmu          sync.Mutex\n\tindex       *modindex.Index // (access via getIndex)\n\texpires     time.Time\n}\n\n// create a new Source. Called from NewView in cache/session.go.\nfunc NewIndexSource(cachedir string) *IndexSource {\n\treturn &IndexSource{modcachedir: cachedir}\n}\n\nfunc (s *IndexSource) LoadPackageNames(ctx context.Context, srcDir string, paths []ImportPath) (map[ImportPath]PackageName, error) {\n\t/// This is used by goimports to resolve the package names of imports of the\n\t// current package, which is irrelevant for the module cache.\n\treturn nil, nil\n}\n\nfunc (s *IndexSource) ResolveReferences(ctx context.Context, filename string, missing References) ([]*Result, error) {\n\tindex, err := s.getIndex()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar cs []modindex.Candidate\n\tfor pkg, nms := range missing {\n\t\tfor nm := range nms {\n\t\t\tx := index.Lookup(pkg, nm, false)\n\t\t\tcs = append(cs, x...)\n\t\t}\n\t}\n\tfound := make(map[string]*Result)\n\tfor _, c := range cs {\n\t\tvar x *Result\n\t\tif x = found[c.ImportPath]; x == nil {\n\t\t\tx = &Result{\n\t\t\t\tImport: &ImportInfo{\n\t\t\t\t\tImportPath: c.ImportPath,\n\t\t\t\t\tName:       \"\",\n\t\t\t\t},\n\t\t\t\tPackage: &PackageInfo{\n\t\t\t\t\tName:    c.PkgName,\n\t\t\t\t\tExports: make(map[string]bool),\n\t\t\t\t},\n\t\t\t}\n\t\t\tfound[c.ImportPath] = x\n\t\t}\n\t\tx.Package.Exports[c.Name] = true\n\t}\n\tvar ans []*Result\n\tfor _, x := range found {\n\t\tans = append(ans, x)\n\t}\n\treturn ans, nil\n}\n\nfunc (s *IndexSource) getIndex() (*modindex.Index, error) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\t// (s.index = nil => s.expires is zero,\n\t// so the first condition is strictly redundant.\n\t// But it makes the postcondition very clear.)\n\tif s.index == nil || time.Now().After(s.expires) {\n\t\tindex, err := modindex.Update(s.modcachedir)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts.index = index\n\t\ts.expires = index.ValidAt.Add(15 * time.Minute) // (refresh period)\n\t}\n\t// Inv: s.index != nil\n\n\treturn s.index, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/modindex/directories.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage modindex\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"golang.org/x/mod/semver\"\n\t\"golang.org/x/tools/internal/gopathwalk\"\n)\n\ntype directory struct {\n\tpath       string // relative to GOMODCACHE\n\timportPath string\n\tversion    string // semantic version\n}\n\n// bestDirByImportPath returns the best directory for each import\n// path, where \"best\" means most recent semantic version. These import\n// paths are inferred from the GOMODCACHE-relative dir names in dirs.\nfunc bestDirByImportPath(dirs []string) (map[string]directory, error) {\n\tdirsByPath := make(map[string]directory)\n\tfor _, dir := range dirs {\n\t\timportPath, version, err := dirToImportPathVersion(dir)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tnew := directory{\n\t\t\tpath:       dir,\n\t\t\timportPath: importPath,\n\t\t\tversion:    version,\n\t\t}\n\t\tif old, ok := dirsByPath[importPath]; !ok || compareDirectory(new, old) < 0 {\n\t\t\tdirsByPath[importPath] = new\n\t\t}\n\t}\n\treturn dirsByPath, nil\n}\n\n// compareDirectory defines an ordering of path@version directories,\n// by descending version, then by ascending path.\nfunc compareDirectory(x, y directory) int {\n\tif sign := -semver.Compare(x.version, y.version); sign != 0 {\n\t\treturn sign // latest first\n\t}\n\treturn strings.Compare(string(x.path), string(y.path))\n}\n\n// modCacheRegexp splits a relpathpath into module, module version, and package.\nvar modCacheRegexp = regexp.MustCompile(`(.*)@([^/\\\\]*)(.*)`)\n\n// dirToImportPathVersion computes import path and semantic version\n// from a GOMODCACHE-relative directory name.\nfunc dirToImportPathVersion(dir string) (string, string, error) {\n\tm := modCacheRegexp.FindStringSubmatch(string(dir))\n\t// m[1] is the module path\n\t// m[2] is the version major.minor.patch(-<pre release identifier)\n\t// m[3] is the rest of the package path\n\tif len(m) != 4 {\n\t\treturn \"\", \"\", fmt.Errorf(\"bad dir %s\", dir)\n\t}\n\tif !semver.IsValid(m[2]) {\n\t\treturn \"\", \"\", fmt.Errorf(\"bad semantic version %s\", m[2])\n\t}\n\t// ToSlash is required to convert Windows file paths\n\t// into Go package import paths.\n\treturn filepath.ToSlash(m[1] + m[3]), m[2], nil\n}\n\n// findDirs returns an unordered list of relevant package directories,\n// relative to the specified module cache root. The result includes only\n// module dirs whose mtime is within (start, end).\nfunc findDirs(root string, start, end time.Time) []string {\n\tvar (\n\t\tresMu sync.Mutex\n\t\tres   []string\n\t)\n\n\taddDir := func(root gopathwalk.Root, dir string) {\n\t\t// TODO(pjw): do we need to check times?\n\t\tresMu.Lock()\n\t\tdefer resMu.Unlock()\n\t\tres = append(res, relative(root.Path, dir))\n\t}\n\n\tskipDir := func(_ gopathwalk.Root, dir string) bool {\n\t\t// The cache directory is already ignored in gopathwalk.\n\t\tif filepath.Base(dir) == \"internal\" {\n\t\t\treturn true\n\t\t}\n\n\t\t// Skip toolchains.\n\t\tif strings.Contains(dir, \"toolchain@\") {\n\t\t\treturn true\n\t\t}\n\n\t\t// Don't look inside @ directories that are too old/new.\n\t\tif strings.Contains(filepath.Base(dir), \"@\") {\n\t\t\tst, err := os.Stat(dir)\n\t\t\tif err != nil {\n\t\t\t\tlog.Printf(\"can't stat dir %s %v\", dir, err)\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tmtime := st.ModTime()\n\t\t\treturn mtime.Before(start) || mtime.After(end)\n\t\t}\n\n\t\treturn false\n\t}\n\n\t// TODO(adonovan): parallelize this. Even with a hot buffer cache,\n\t//   find $(go env GOMODCACHE) -type d\n\t// can easily take up a minute.\n\troots := []gopathwalk.Root{{Path: root, Type: gopathwalk.RootModuleCache}}\n\tgopathwalk.WalkSkip(roots, addDir, skipDir, gopathwalk.Options{\n\t\tModulesEnabled: true,\n\t\tConcurrency:    1, // TODO(pjw): adjust concurrency\n\t\t// Logf: log.Printf,\n\t})\n\n\treturn res\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/modindex/index.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage modindex\n\nimport (\n\t\"bufio\"\n\t\"crypto/sha256\"\n\t\"encoding/csv\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n)\n\n/*\nThe on-disk index (\"payload\") is a text file.\nThe first 3 lines are header information containing CurrentVersion,\nthe value of GOMODCACHE, and the validity date of the index.\n(This is when the code started building the index.)\nFollowing the header are sections of lines, one section for each\nimport path. These sections are sorted by package name.\nThe first line of each section, marked by a leading :, contains\nthe package name, the import path, the name of the directory relative\nto GOMODCACHE, and its semantic version.\nThe rest of each section consists of one line per exported symbol.\nThe lines are sorted by the symbol's name and contain the name,\nan indication of its lexical type (C, T, V, F), and if it is the\nname of a function, information about the signature.\n\nThe fields in the section header lines are separated by commas, and\nin the unlikely event this would be confusing, the csv package is used\nto write (and read) them.\n\nIn the lines containing exported names, C=const, V=var, T=type, F=func.\nIf it is a func, the next field is the number of returned values,\nfollowed by pairs consisting of formal parameter names and types.\nAll these fields are separated by spaces. Any spaces in a type\n(e.g., chan struct{}) are replaced by $s on the disk. The $s are\nturned back into spaces when read.\n\nHere is an index header (the comments are not part of the index):\n0                                      // version (of the index format)\n/usr/local/google/home/pjw/go/pkg/mod  // GOMODCACHE\n2024-09-11 18:55:09                    // validity date of the index\n\nHere is an index section:\n:yaml,gopkg.in/yaml.v1,gopkg.in/yaml.v1@v1.0.0-20140924161607-9f9df34309c0,v1.0.0-20140924161607-9f9df34309c0\nGetter T\nMarshal F 2 in interface{}\nSetter T\nUnmarshal F 1 in []byte out interface{}\n\nThe package name is yaml, the import path is gopkg.in/yaml.v1.\nGetter and Setter are types, and Marshal and Unmarshal are functions.\nThe latter returns one value and has two arguments, 'in' and 'out'\nwhose types are []byte and interface{}.\n*/\n\n// CurrentVersion tells readers about the format of the index.\nconst CurrentVersion int = 0\n\n// Index is returned by [Read].\ntype Index struct {\n\tVersion    int\n\tGOMODCACHE string    // absolute path of Go module cache dir\n\tValidAt    time.Time // moment at which the index was up to date\n\tEntries    []Entry\n}\n\nfunc (ix *Index) String() string {\n\treturn fmt.Sprintf(\"Index(%s v%d has %d entries at %v)\",\n\t\tix.GOMODCACHE, ix.Version, len(ix.Entries), ix.ValidAt)\n}\n\n// An Entry contains information for an import path.\ntype Entry struct {\n\tDir        string // package directory relative to GOMODCACHE; uses OS path separator\n\tImportPath string\n\tPkgName    string\n\tVersion    string\n\tNames      []string // exported names and information\n}\n\n// IndexDir is where the module index is stored.\n// Each logical index entry consists of a pair of files:\n//\n//   - the \"payload\" (index-VERSION-XXX), whose name is\n//     randomized, holds the actual index; and\n//   - the \"link\" (index-name-VERSION-HASH),\n//     whose name is predictable, contains the\n//     name of the payload file.\n//\n// Since the link file is small (<512B),\n// reads and writes to it may be assumed atomic.\nvar IndexDir string = func() string {\n\tvar dir string\n\tif testing.Testing() {\n\t\tdir = os.TempDir()\n\t} else {\n\t\tvar err error\n\t\tdir, err = os.UserCacheDir()\n\t\t// shouldn't happen, but TempDir is better than\n\t\t// creating ./goimports\n\t\tif err != nil {\n\t\t\tdir = os.TempDir()\n\t\t}\n\t}\n\tdir = filepath.Join(dir, \"goimports\")\n\tif err := os.MkdirAll(dir, 0777); err != nil {\n\t\tdir = \"\" // #75505, people complain about the error message\n\t}\n\treturn dir\n}()\n\n// Read reads the latest version of the on-disk index\n// for the specified Go module cache directory.\n// If there is no index, it returns a nil Index and an fs.ErrNotExist error.\nfunc Read(gomodcache string) (*Index, error) {\n\tgomodcache, err := filepath.Abs(gomodcache)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif IndexDir == \"\" {\n\t\treturn nil, os.ErrNotExist\n\t}\n\n\t// Read the \"link\" file for the specified gomodcache directory.\n\t// It names the payload file.\n\tcontent, err := os.ReadFile(filepath.Join(IndexDir, linkFileBasename(gomodcache)))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tpayloadFile := filepath.Join(IndexDir, string(content))\n\n\t// Read the index out of the payload file.\n\tf, err := os.Open(payloadFile)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\treturn readIndexFrom(gomodcache, bufio.NewReader(f))\n}\n\nfunc readIndexFrom(gomodcache string, r io.Reader) (*Index, error) {\n\tscan := bufio.NewScanner(r)\n\n\t// version\n\tif !scan.Scan() {\n\t\treturn nil, fmt.Errorf(\"unexpected scan error: %v\", scan.Err())\n\t}\n\tversion, err := strconv.Atoi(scan.Text())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif version != CurrentVersion {\n\t\treturn nil, fmt.Errorf(\"got version %d, expected %d\", version, CurrentVersion)\n\t}\n\n\t// gomodcache\n\tif !scan.Scan() {\n\t\treturn nil, fmt.Errorf(\"scanner error reading module cache dir: %v\", scan.Err())\n\t}\n\t// TODO(pjw): need to check that this is the expected cache dir\n\t// so the tag should be passed in to this function\n\tif dir := string(scan.Text()); dir != gomodcache {\n\t\treturn nil, fmt.Errorf(\"index file GOMODCACHE mismatch: got %q, want %q\", dir, gomodcache)\n\t}\n\n\t// changed\n\tif !scan.Scan() {\n\t\treturn nil, fmt.Errorf(\"scanner error reading index creation time: %v\", scan.Err())\n\t}\n\tchanged, err := time.ParseInLocation(time.DateTime, scan.Text(), time.Local)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// entries\n\tvar (\n\t\tcurEntry *Entry\n\t\tentries  []Entry\n\t)\n\tfor scan.Scan() {\n\t\tv := scan.Text()\n\t\tif v[0] == ':' {\n\t\t\tif curEntry != nil {\n\t\t\t\tentries = append(entries, *curEntry)\n\t\t\t}\n\t\t\t// as directories may contain commas and quotes, they need to be read as csv.\n\t\t\trdr := strings.NewReader(v[1:])\n\t\t\tcs := csv.NewReader(rdr)\n\t\t\tflds, err := cs.Read()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif len(flds) != 4 {\n\t\t\t\treturn nil, fmt.Errorf(\"header contains %d fields, not 4: %q\", len(v), v)\n\t\t\t}\n\t\t\tcurEntry = &Entry{\n\t\t\t\tPkgName:    flds[0],\n\t\t\t\tImportPath: flds[1],\n\t\t\t\tDir:        relative(gomodcache, flds[2]),\n\t\t\t\tVersion:    flds[3],\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tcurEntry.Names = append(curEntry.Names, v)\n\t}\n\tif err := scan.Err(); err != nil {\n\t\treturn nil, fmt.Errorf(\"scanner failed while reading modindex entry: %v\", err)\n\t}\n\tif curEntry != nil {\n\t\tentries = append(entries, *curEntry)\n\t}\n\n\treturn &Index{\n\t\tVersion:    version,\n\t\tGOMODCACHE: gomodcache,\n\t\tValidAt:    changed,\n\t\tEntries:    entries,\n\t}, nil\n}\n\n// write writes the index file and updates the index directory to refer to it.\nfunc write(gomodcache string, ix *Index) error {\n\tif IndexDir == \"\" {\n\t\treturn os.ErrNotExist\n\t}\n\t// Write the index into a payload file with a fresh name.\n\tf, err := os.CreateTemp(IndexDir, fmt.Sprintf(\"index-%d-*\", CurrentVersion))\n\tif err != nil {\n\t\treturn err // e.g. disk full, or index dir deleted\n\t}\n\tif err := writeIndexToFile(ix, bufio.NewWriter(f)); err != nil {\n\t\t_ = f.Close() // ignore error\n\t\treturn err\n\t}\n\tif err := f.Close(); err != nil {\n\t\treturn err\n\t}\n\n\t// Write the name of the payload file into a link file.\n\tindexDirFile := filepath.Join(IndexDir, linkFileBasename(gomodcache))\n\tcontent := []byte(filepath.Base(f.Name()))\n\treturn os.WriteFile(indexDirFile, content, 0666)\n}\n\nfunc writeIndexToFile(x *Index, w *bufio.Writer) error {\n\tfmt.Fprintf(w, \"%d\\n\", x.Version)\n\tfmt.Fprintf(w, \"%s\\n\", x.GOMODCACHE)\n\ttm := x.ValidAt.Truncate(time.Second) // round the time down\n\tfmt.Fprintf(w, \"%s\\n\", tm.Format(time.DateTime))\n\tfor _, e := range x.Entries {\n\t\tif e.ImportPath == \"\" {\n\t\t\tcontinue // shouldn't happen\n\t\t}\n\t\t// PJW: maybe always write these headers as csv?\n\t\tif strings.ContainsAny(string(e.Dir), \",\\\"\") {\n\t\t\tcw := csv.NewWriter(w)\n\t\t\tcw.Write([]string{\":\" + e.PkgName, e.ImportPath, string(e.Dir), e.Version})\n\t\t\tcw.Flush()\n\t\t} else {\n\t\t\tfmt.Fprintf(w, \":%s,%s,%s,%s\\n\", e.PkgName, e.ImportPath, e.Dir, e.Version)\n\t\t}\n\t\tfor _, x := range e.Names {\n\t\t\tfmt.Fprintf(w, \"%s\\n\", x)\n\t\t}\n\t}\n\treturn w.Flush()\n}\n\n// linkFileBasename returns the base name of the link file in the\n// index directory that holds the name of the payload file for the\n// specified (absolute) Go module cache dir.\nfunc linkFileBasename(gomodcache string) string {\n\t// Note: coupled to logic in ./gomodindex/cmd.go. TODO: factor.\n\th := sha256.Sum256([]byte(gomodcache)) // collision-resistant hash\n\treturn fmt.Sprintf(\"index-name-%d-%032x\", CurrentVersion, h)\n}\n\nfunc relative(base, file string) string {\n\tif rel, err := filepath.Rel(base, file); err == nil {\n\t\treturn rel\n\t}\n\treturn file\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/modindex/lookup.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage modindex\n\nimport (\n\t\"slices\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/mod/module\"\n)\n\ntype Candidate struct {\n\tPkgName    string\n\tName       string\n\tDir        string\n\tImportPath string\n\tType       LexType\n\tDeprecated bool\n\t// information for Funcs\n\tResults int16   // how many results\n\tSig     []Field // arg names and types\n}\n\ntype Field struct {\n\tArg, Type string\n}\n\ntype LexType int8\n\nconst (\n\tConst LexType = iota\n\tVar\n\tType\n\tFunc\n)\n\n// LookupAll only returns those Candidates whose import path\n// finds all the names.\nfunc (ix *Index) LookupAll(pkgName string, names ...string) map[string][]Candidate {\n\t// this can be made faster when benchmarks show that it needs to be\n\tnames = uniquify(names)\n\tbyImpPath := make(map[string][]Candidate)\n\tfor _, nm := range names {\n\t\tcands := ix.Lookup(pkgName, nm, false)\n\t\tfor _, c := range cands {\n\t\t\tbyImpPath[c.ImportPath] = append(byImpPath[c.ImportPath], c)\n\t\t}\n\t}\n\tfor k, v := range byImpPath {\n\t\tif len(v) != len(names) {\n\t\t\tdelete(byImpPath, k)\n\t\t}\n\t}\n\treturn byImpPath\n}\n\n// remove duplicates\nfunc uniquify(in []string) []string {\n\tif len(in) == 0 {\n\t\treturn in\n\t}\n\tin = slices.Clone(in)\n\tslices.Sort(in)\n\treturn slices.Compact(in)\n}\n\n// Lookup finds all the symbols in the index with the given PkgName and name.\n// If prefix is true, it finds all of these with name as a prefix.\nfunc (ix *Index) Lookup(pkgName, name string, prefix bool) []Candidate {\n\tloc, ok := slices.BinarySearchFunc(ix.Entries, pkgName, func(e Entry, pkg string) int {\n\t\treturn strings.Compare(e.PkgName, pkgName)\n\t})\n\tif !ok {\n\t\treturn nil // didn't find the package\n\t}\n\tvar ans []Candidate\n\t// loc is the first entry for this package name, but there may be several\n\tfor i := loc; i < len(ix.Entries); i++ {\n\t\te := ix.Entries[i]\n\t\tif e.PkgName != pkgName {\n\t\t\tbreak // end of sorted package names\n\t\t}\n\t\tnloc, ok := slices.BinarySearchFunc(e.Names, name, func(s string, name string) int {\n\t\t\tif strings.HasPrefix(s, name) {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tif s < name {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn 1\n\t\t})\n\t\tif !ok {\n\t\t\tcontinue // didn't find the name, nor any symbols with name as a prefix\n\t\t}\n\t\tfor j := nloc; j < len(e.Names); j++ {\n\t\t\tnstr := e.Names[j]\n\t\t\t// benchmarks show this makes a difference when there are a lot of Possibilities\n\t\t\tflds := fastSplit(nstr)\n\t\t\tif !(flds[0] == name || prefix && strings.HasPrefix(flds[0], name)) {\n\t\t\t\t// past range of matching Names\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif len(flds) < 2 {\n\t\t\t\tcontinue // should never happen\n\t\t\t}\n\t\t\timpPath, err := module.UnescapePath(e.ImportPath)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tpx := Candidate{\n\t\t\t\tPkgName:    pkgName,\n\t\t\t\tName:       flds[0],\n\t\t\t\tDir:        string(e.Dir),\n\t\t\t\tImportPath: impPath,\n\t\t\t\tType:       asLexType(flds[1][0]),\n\t\t\t\tDeprecated: len(flds[1]) > 1 && flds[1][1] == 'D',\n\t\t\t}\n\t\t\tif px.Type == Func {\n\t\t\t\tn, err := strconv.Atoi(flds[2])\n\t\t\t\tif err != nil {\n\t\t\t\t\tcontinue // should never happen\n\t\t\t\t}\n\t\t\t\tpx.Results = int16(n)\n\t\t\t\tif len(flds) >= 4 {\n\t\t\t\t\tsig := strings.Split(flds[3], \" \")\n\t\t\t\t\tfor i := range sig {\n\t\t\t\t\t\t// $ cannot otherwise occur. removing the spaces\n\t\t\t\t\t\t// almost works, but for chan struct{}, e.g.\n\t\t\t\t\t\tsig[i] = strings.Replace(sig[i], \"$\", \" \", -1)\n\t\t\t\t\t}\n\t\t\t\t\tpx.Sig = toFields(sig)\n\t\t\t\t}\n\t\t\t}\n\t\t\tans = append(ans, px)\n\t\t}\n\t}\n\treturn ans\n}\n\nfunc toFields(sig []string) []Field {\n\tans := make([]Field, len(sig)/2)\n\tfor i := range ans {\n\t\tans[i] = Field{Arg: sig[2*i], Type: sig[2*i+1]}\n\t}\n\treturn ans\n}\n\n// benchmarks show this is measurably better than strings.Split\n// split into first 4 fields separated by single space\nfunc fastSplit(x string) []string {\n\tans := make([]string, 0, 4)\n\tnxt := 0\n\tstart := 0\n\tfor i := 0; i < len(x); i++ {\n\t\tif x[i] != ' ' {\n\t\t\tcontinue\n\t\t}\n\t\tans = append(ans, x[start:i])\n\t\tnxt++\n\t\tstart = i + 1\n\t\tif nxt >= 3 {\n\t\t\tbreak\n\t\t}\n\t}\n\tans = append(ans, x[start:])\n\treturn ans\n}\n\nfunc asLexType(c byte) LexType {\n\tswitch c {\n\tcase 'C':\n\t\treturn Const\n\tcase 'V':\n\t\treturn Var\n\tcase 'T':\n\t\treturn Type\n\tcase 'F':\n\t\treturn Func\n\t}\n\treturn -1\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/modindex/modindex.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package modindex contains code for building and searching an\n// [Index] of the Go module cache.\npackage modindex\n\n// The directory containing the index, returned by\n// [IndexDir], contains a file index-name-<ver> that contains the name\n// of the current index. We believe writing that short file is atomic.\n// [Read] reads that file to get the file name of the index.\n// WriteIndex writes an index with a unique name and then\n// writes that name into a new version of index-name-<ver>.\n// (<ver> stands for the CurrentVersion of the index format.)\n\nimport (\n\t\"maps\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"slices\"\n\t\"strings\"\n\t\"time\"\n\n\t\"golang.org/x/mod/semver\"\n)\n\n// Update updates the index for the specified Go\n// module cache directory, creating it as needed.\n// On success it returns the current index.\nfunc Update(gomodcache string) (*Index, error) {\n\tprev, err := Read(gomodcache)\n\tif err != nil {\n\t\tif !os.IsNotExist(err) {\n\t\t\treturn nil, err\n\t\t}\n\t\tprev = nil\n\t}\n\treturn update(gomodcache, prev)\n}\n\n// update builds, writes, and returns the current index.\n//\n// If old is nil, the new index is built from all of GOMODCACHE;\n// otherwise it is built from the old index plus cache updates\n// since the previous index's time.\nfunc update(gomodcache string, old *Index) (*Index, error) {\n\tgomodcache, err := filepath.Abs(gomodcache)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tnew, changed, err := build(gomodcache, old)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif old == nil || changed {\n\t\tif err := write(gomodcache, new); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn new, nil\n}\n\n// build returns a new index for the specified Go module cache (an\n// absolute path).\n//\n// If an old index is provided, only directories more recent than it\n// that it are scanned; older directories are provided by the old\n// Index.\n//\n// The boolean result indicates whether new entries were found.\nfunc build(gomodcache string, old *Index) (*Index, bool, error) {\n\t// Set the time window.\n\tvar start time.Time // = dawn of time\n\tif old != nil {\n\t\tstart = old.ValidAt\n\t}\n\tnow := time.Now()\n\tend := now.Add(24 * time.Hour) // safely in the future\n\n\t// Enumerate GOMODCACHE package directories.\n\t// Choose the best (latest) package for each import path.\n\tpkgDirs := findDirs(gomodcache, start, end)\n\tdirByPath, err := bestDirByImportPath(pkgDirs)\n\tif err != nil {\n\t\treturn nil, false, err\n\t}\n\n\t// For each import path it might occur only in\n\t// dirByPath, only in old, or in both.\n\t// If both, use the semantically later one.\n\tvar entries []Entry\n\tif old != nil {\n\t\tfor _, entry := range old.Entries {\n\t\t\tdir, ok := dirByPath[entry.ImportPath]\n\t\t\tif !ok || semver.Compare(dir.version, entry.Version) <= 0 {\n\t\t\t\t// New dir is missing or not more recent; use old entry.\n\t\t\t\tentries = append(entries, entry)\n\t\t\t\tdelete(dirByPath, entry.ImportPath)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Extract symbol information for all the new directories.\n\tnewEntries := extractSymbols(gomodcache, maps.Values(dirByPath))\n\tentries = append(entries, newEntries...)\n\tslices.SortFunc(entries, func(x, y Entry) int {\n\t\tif n := strings.Compare(x.PkgName, y.PkgName); n != 0 {\n\t\t\treturn n\n\t\t}\n\t\treturn strings.Compare(x.ImportPath, y.ImportPath)\n\t})\n\n\treturn &Index{\n\t\tGOMODCACHE: gomodcache,\n\t\tValidAt:    now, // time before the directories were scanned\n\t\tEntries:    entries,\n\t}, len(newEntries) > 0, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/modindex/symbols.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage modindex\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"iter\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"slices\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"golang.org/x/sync/errgroup\"\n)\n\n// The name of a symbol contains information about the symbol:\n// <name> T for types, TD if the type is deprecated\n// <name> C for consts, CD if the const is deprecated\n// <name> V for vars, VD if the var is deprecated\n// and for funcs: <name> F <num of return values> (<arg-name> <arg-type>)*\n// any spaces in <arg-type> are replaced by $s so that the fields\n// of the name are space separated. F is replaced by FD if the func\n// is deprecated.\ntype symbol struct {\n\tpkg  string // name of the symbols's package\n\tname string // declared name\n\tkind string // T, C, V, or F, followed by D if deprecated\n\tsig  string // signature information, for F\n}\n\n// extractSymbols returns a (new, unordered) array of Entries, one for\n// each provided package directory, describing its exported symbols.\nfunc extractSymbols(cwd string, dirs iter.Seq[directory]) []Entry {\n\tvar (\n\t\tmu      sync.Mutex\n\t\tentries []Entry\n\t)\n\n\tvar g errgroup.Group\n\tg.SetLimit(max(2, runtime.GOMAXPROCS(0)/2))\n\tfor dir := range dirs {\n\t\tg.Go(func() error {\n\t\t\tthedir := filepath.Join(cwd, string(dir.path))\n\t\t\tmode := parser.SkipObjectResolution | parser.ParseComments\n\n\t\t\t// Parse all Go files in dir and extract symbols.\n\t\t\tdirents, err := os.ReadDir(thedir)\n\t\t\tif err != nil {\n\t\t\t\treturn nil // log this someday?\n\t\t\t}\n\t\t\tvar syms []symbol\n\t\t\tfor _, dirent := range dirents {\n\t\t\t\tif !strings.HasSuffix(dirent.Name(), \".go\") ||\n\t\t\t\t\tstrings.HasSuffix(dirent.Name(), \"_test.go\") {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfname := filepath.Join(thedir, dirent.Name())\n\t\t\t\ttr, err := parser.ParseFile(token.NewFileSet(), fname, nil, mode)\n\t\t\t\tif err != nil {\n\t\t\t\t\tcontinue // ignore errors, someday log them?\n\t\t\t\t}\n\t\t\t\tsyms = append(syms, getFileExports(tr)...)\n\t\t\t}\n\n\t\t\t// Create an entry for the package.\n\t\t\tpkg, names := processSyms(syms)\n\t\t\tif pkg != \"\" {\n\t\t\t\tmu.Lock()\n\t\t\t\tdefer mu.Unlock()\n\t\t\t\tentries = append(entries, Entry{\n\t\t\t\t\tPkgName:    pkg,\n\t\t\t\t\tDir:        dir.path,\n\t\t\t\t\tImportPath: dir.importPath,\n\t\t\t\t\tVersion:    dir.version,\n\t\t\t\t\tNames:      names,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn nil\n\t\t})\n\t}\n\tg.Wait() // ignore error\n\n\treturn entries\n}\n\nfunc getFileExports(f *ast.File) []symbol {\n\tpkg := f.Name.Name\n\tif pkg == \"main\" || pkg == \"\" {\n\t\treturn nil\n\t}\n\tvar ans []symbol\n\t// should we look for //go:build ignore?\n\tfor _, decl := range f.Decls {\n\t\tswitch decl := decl.(type) {\n\t\tcase *ast.FuncDecl:\n\t\t\tif decl.Recv != nil {\n\t\t\t\t// ignore methods, as we are completing package selections\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tname := decl.Name.Name\n\t\t\tdtype := decl.Type\n\t\t\t// not looking at dtype.TypeParams. That is, treating\n\t\t\t// generic functions just like non-generic ones.\n\t\t\tsig := dtype.Params\n\t\t\tkind := \"F\"\n\t\t\tif isDeprecated(decl.Doc) {\n\t\t\t\tkind += \"D\"\n\t\t\t}\n\t\t\tresult := []string{fmt.Sprintf(\"%d\", dtype.Results.NumFields())}\n\t\t\tfor _, x := range sig.List {\n\t\t\t\t// This code creates a string representing the type.\n\t\t\t\t// TODO(pjw): it may be fragile:\n\t\t\t\t// 1. x.Type could be nil, perhaps in ill-formed code\n\t\t\t\t// 2. ExprString might someday change incompatibly to\n\t\t\t\t//    include struct tags, which can be arbitrary strings\n\t\t\t\tif x.Type == nil {\n\t\t\t\t\t// Can this happen without a parse error? (Files with parse\n\t\t\t\t\t// errors are ignored in getSymbols)\n\t\t\t\t\tcontinue // maybe report this someday\n\t\t\t\t}\n\t\t\t\ttp := types.ExprString(x.Type)\n\t\t\t\tif len(tp) == 0 {\n\t\t\t\t\t// Can this happen?\n\t\t\t\t\tcontinue // maybe report this someday\n\t\t\t\t}\n\t\t\t\t// This is only safe if ExprString never returns anything with a $\n\t\t\t\t// The only place a $ can occur seems to be in a struct tag, which\n\t\t\t\t// can be an arbitrary string literal, and ExprString does not presently\n\t\t\t\t// print struct tags. So for this to happen the type of a formal parameter\n\t\t\t\t// has to be a explicit struct, e.g. foo(x struct{a int \"$\"}) and ExprString\n\t\t\t\t// would have to show the struct tag. Even testing for this case seems\n\t\t\t\t// a waste of effort, but let's remember the possibility\n\t\t\t\tif strings.Contains(tp, \"$\") {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\ttp = strings.Replace(tp, \" \", \"$\", -1)\n\t\t\t\tif len(x.Names) == 0 {\n\t\t\t\t\tresult = append(result, \"_\")\n\t\t\t\t\tresult = append(result, tp)\n\t\t\t\t} else {\n\t\t\t\t\tfor _, y := range x.Names {\n\t\t\t\t\t\tresult = append(result, y.Name)\n\t\t\t\t\t\tresult = append(result, tp)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsigs := strings.Join(result, \" \")\n\t\t\tif s := newsym(pkg, name, kind, sigs); s != nil {\n\t\t\t\tans = append(ans, *s)\n\t\t\t}\n\t\tcase *ast.GenDecl:\n\t\t\tdepr := isDeprecated(decl.Doc)\n\t\t\tswitch decl.Tok {\n\t\t\tcase token.CONST, token.VAR:\n\t\t\t\ttp := \"V\"\n\t\t\t\tif decl.Tok == token.CONST {\n\t\t\t\t\ttp = \"C\"\n\t\t\t\t}\n\t\t\t\tif depr {\n\t\t\t\t\ttp += \"D\"\n\t\t\t\t}\n\t\t\t\tfor _, sp := range decl.Specs {\n\t\t\t\t\tfor _, x := range sp.(*ast.ValueSpec).Names {\n\t\t\t\t\t\tif s := newsym(pkg, x.Name, tp, \"\"); s != nil {\n\t\t\t\t\t\t\tans = append(ans, *s)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase token.TYPE:\n\t\t\t\ttp := \"T\"\n\t\t\t\tif depr {\n\t\t\t\t\ttp += \"D\"\n\t\t\t\t}\n\t\t\t\tfor _, sp := range decl.Specs {\n\t\t\t\t\tif s := newsym(pkg, sp.(*ast.TypeSpec).Name.Name, tp, \"\"); s != nil {\n\t\t\t\t\t\tans = append(ans, *s)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn ans\n}\n\nfunc newsym(pkg, name, kind, sig string) *symbol {\n\tif len(name) == 0 || !ast.IsExported(name) {\n\t\treturn nil\n\t}\n\tsym := symbol{pkg: pkg, name: name, kind: kind, sig: sig}\n\treturn &sym\n}\n\nfunc isDeprecated(doc *ast.CommentGroup) bool {\n\tif doc == nil {\n\t\treturn false\n\t}\n\t// go.dev/wiki/Deprecated Paragraph starting 'Deprecated:'\n\t// This code fails for /* Deprecated: */, but it's the code from\n\t// gopls/internal/analysis/deprecated\n\tfor line := range strings.SplitSeq(doc.Text(), \"\\n\\n\") {\n\t\tif strings.HasPrefix(line, \"Deprecated:\") {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// return the package name and the value for the symbols.\n// if there are multiple packages, choose one arbitrarily\n// the returned slice is sorted lexicographically\nfunc processSyms(syms []symbol) (string, []string) {\n\tif len(syms) == 0 {\n\t\treturn \"\", nil\n\t}\n\tslices.SortFunc(syms, func(l, r symbol) int {\n\t\treturn strings.Compare(l.name, r.name)\n\t})\n\tpkg := syms[0].pkg\n\tvar names []string\n\tfor _, s := range syms {\n\t\tif s.pkg != pkg {\n\t\t\t// Symbols came from two files in same dir\n\t\t\t// with different package declarations.\n\t\t\tcontinue\n\t\t}\n\t\tvar nx string\n\t\tif s.sig != \"\" {\n\t\t\tnx = fmt.Sprintf(\"%s %s %s\", s.name, s.kind, s.sig)\n\t\t} else {\n\t\t\tnx = fmt.Sprintf(\"%s %s\", s.name, s.kind)\n\t\t}\n\t\tnames = append(names, nx)\n\t}\n\treturn pkg, names\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/stdlib/deps.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate.go. DO NOT EDIT.\n\npackage stdlib\n\ntype pkginfo struct {\n\tname string\n\tdeps string // list of indices of dependencies, as varint-encoded deltas\n}\n\nvar deps = [...]pkginfo{\n\t{\"archive/tar\", \"\\x03q\\x03F=\\x01\\n\\x01$\\x01\\x01\\x02\\x05\\b\\x02\\x01\\x02\\x02\\r\"},\n\t{\"archive/zip\", \"\\x02\\x04g\\a\\x03\\x13\\x021=\\x01+\\x05\\x01\\x0f\\x03\\x02\\x0f\\x04\"},\n\t{\"bufio\", \"\\x03q\\x86\\x01D\\x15\"},\n\t{\"bytes\", \"t+[\\x03\\fH\\x02\\x02\"},\n\t{\"cmp\", \"\"},\n\t{\"compress/bzip2\", \"\\x02\\x02\\xf6\\x01A\"},\n\t{\"compress/flate\", \"\\x02r\\x03\\x83\\x01\\f\\x033\\x01\\x03\"},\n\t{\"compress/gzip\", \"\\x02\\x04g\\a\\x03\\x15nU\"},\n\t{\"compress/lzw\", \"\\x02r\\x03\\x83\\x01\"},\n\t{\"compress/zlib\", \"\\x02\\x04g\\a\\x03\\x13\\x01o\"},\n\t{\"container/heap\", \"\\xbc\\x02\"},\n\t{\"container/list\", \"\"},\n\t{\"container/ring\", \"\"},\n\t{\"context\", \"t\\\\p\\x01\\x0e\"},\n\t{\"crypto\", \"\\x8a\\x01pC\"},\n\t{\"crypto/aes\", \"\\x10\\v\\t\\x99\\x02\"},\n\t{\"crypto/cipher\", \"\\x03!\\x01\\x01 \\x12\\x1c,Z\"},\n\t{\"crypto/des\", \"\\x10\\x16 .,\\x9d\\x01\\x03\"},\n\t{\"crypto/dsa\", \"F\\x03+\\x86\\x01\\r\"},\n\t{\"crypto/ecdh\", \"\\x03\\v\\r\\x10\\x04\\x17\\x03\\x0f\\x1c\\x86\\x01\"},\n\t{\"crypto/ecdsa\", \"\\x0e\\x05\\x03\\x05\\x01\\x10\\b\\v\\x06\\x01\\x03\\x0e\\x01\\x1c\\x86\\x01\\r\\x05L\\x01\"},\n\t{\"crypto/ed25519\", \"\\x0e\\x1f\\x12\\a\\x03\\b\\a\\x1cI=C\"},\n\t{\"crypto/elliptic\", \"4@\\x86\\x01\\r9\"},\n\t{\"crypto/fips140\", \"#\\x05\\x95\\x01\\x98\\x01\"},\n\t{\"crypto/hkdf\", \"0\\x15\\x01.\\x16\"},\n\t{\"crypto/hmac\", \"\\x1b\\x16\\x14\\x01\\x122\"},\n\t{\"crypto/hpke\", \"\\x03\\v\\x02\\x03\\x04\\x01\\f\\x01\\x05\\x1f\\x05\\a\\x01\\x01\\x1d\\x03\\x13\\x16\\x9b\\x01\\x1c\"},\n\t{\"crypto/internal/boring\", \"\\x0e\\x02\\x0el\"},\n\t{\"crypto/internal/boring/bbig\", \"\\x1b\\xec\\x01N\"},\n\t{\"crypto/internal/boring/bcache\", \"\\xc1\\x02\\x14\"},\n\t{\"crypto/internal/boring/sig\", \"\"},\n\t{\"crypto/internal/constanttime\", \"\"},\n\t{\"crypto/internal/cryptotest\", \"\\x03\\r\\v\\b%\\x10\\x19\\x06\\x13\\x12 \\x04\\x06\\t\\x19\\x01\\x11\\x11\\x1b\\x01\\a\\x05\\b\\x03\\x05\\f\"},\n\t{\"crypto/internal/entropy\", \"K\"},\n\t{\"crypto/internal/entropy/v1.0.0\", \"D0\\x95\\x018\\x14\"},\n\t{\"crypto/internal/fips140\", \"C1\\xbf\\x01\\v\\x17\"},\n\t{\"crypto/internal/fips140/aes\", \"\\x03 \\x03\\x02\\x14\\x05\\x01\\x01\\x05,\\x95\\x014\"},\n\t{\"crypto/internal/fips140/aes/gcm\", \"#\\x01\\x02\\x02\\x02\\x12\\x05\\x01\\x06,\\x92\\x01\"},\n\t{\"crypto/internal/fips140/alias\", \"\\xd5\\x02\"},\n\t{\"crypto/internal/fips140/bigmod\", \"(\\x19\\x01\\x06,\\x95\\x01\"},\n\t{\"crypto/internal/fips140/check\", \"#\\x0e\\a\\t\\x02\\xb7\\x01[\"},\n\t{\"crypto/internal/fips140/check/checktest\", \"(\\x8b\\x02\\\"\"},\n\t{\"crypto/internal/fips140/drbg\", \"\\x03\\x1f\\x01\\x01\\x04\\x14\\x05\\n)\\x86\\x01\\x0f7\\x01\"},\n\t{\"crypto/internal/fips140/ecdh\", \"\\x03 \\x05\\x02\\n\\r3\\x86\\x01\\x0f7\"},\n\t{\"crypto/internal/fips140/ecdsa\", \"\\x03 \\x04\\x01\\x02\\a\\x03\\x06:\\x16pF\"},\n\t{\"crypto/internal/fips140/ed25519\", \"\\x03 \\x05\\x02\\x04\\f:\\xc9\\x01\\x03\"},\n\t{\"crypto/internal/fips140/edwards25519\", \"\\x1f\\t\\a\\x123\\x95\\x017\"},\n\t{\"crypto/internal/fips140/edwards25519/field\", \"(\\x14\\x053\\x95\\x01\"},\n\t{\"crypto/internal/fips140/hkdf\", \"\\x03 \\x05\\t\\a<\\x16\"},\n\t{\"crypto/internal/fips140/hmac\", \"\\x03 \\x15\\x01\\x01:\\x16\"},\n\t{\"crypto/internal/fips140/mldsa\", \"\\x03\\x1c\\x04\\x05\\x02\\x0e\\x01\\x03\\x053\\x95\\x017\"},\n\t{\"crypto/internal/fips140/mlkem\", \"\\x03 \\x05\\x02\\x0f\\x03\\x053\\xcc\\x01\"},\n\t{\"crypto/internal/fips140/nistec\", \"\\x1f\\t\\r\\f3\\x95\\x01*\\r\\x15\"},\n\t{\"crypto/internal/fips140/nistec/fiat\", \"(\\x148\\x95\\x01\"},\n\t{\"crypto/internal/fips140/pbkdf2\", \"\\x03 \\x05\\t\\a<\\x16\"},\n\t{\"crypto/internal/fips140/rsa\", \"\\x03\\x1c\\x04\\x04\\x01\\x02\\x0e\\x01\\x01\\x028\\x16pF\"},\n\t{\"crypto/internal/fips140/sha256\", \"\\x03 \\x1e\\x01\\x06,\\x16\\x7f\"},\n\t{\"crypto/internal/fips140/sha3\", \"\\x03 \\x19\\x05\\x012\\x95\\x01L\"},\n\t{\"crypto/internal/fips140/sha512\", \"\\x03 \\x1e\\x01\\x06,\\x16\\x7f\"},\n\t{\"crypto/internal/fips140/ssh\", \"(b\"},\n\t{\"crypto/internal/fips140/subtle\", \"\\x1f\\a\\x1b\\xc8\\x01\"},\n\t{\"crypto/internal/fips140/tls12\", \"\\x03 \\x05\\t\\a\\x02:\\x16\"},\n\t{\"crypto/internal/fips140/tls13\", \"\\x03 \\x05\\b\\b\\t3\\x16\"},\n\t{\"crypto/internal/fips140cache\", \"\\xb3\\x02\\r'\"},\n\t{\"crypto/internal/fips140deps\", \"\"},\n\t{\"crypto/internal/fips140deps/byteorder\", \"\\xa0\\x01\"},\n\t{\"crypto/internal/fips140deps/cpu\", \"\\xb5\\x01\\a\"},\n\t{\"crypto/internal/fips140deps/godebug\", \"\\xbd\\x01\"},\n\t{\"crypto/internal/fips140deps/time\", \"\\xcf\\x02\"},\n\t{\"crypto/internal/fips140hash\", \"9\\x1d4\\xcb\\x01\"},\n\t{\"crypto/internal/fips140only\", \"\\x17\\x13\\x0e\\x01\\x01Pp\"},\n\t{\"crypto/internal/fips140test\", \"\"},\n\t{\"crypto/internal/impl\", \"\\xbe\\x02\"},\n\t{\"crypto/internal/rand\", \"\\x1b\\x0f s=[\"},\n\t{\"crypto/internal/randutil\", \"\\xfa\\x01\\x12\"},\n\t{\"crypto/internal/sysrand\", \"tq! \\r\\r\\x01\\x01\\r\\x06\"},\n\t{\"crypto/internal/sysrand/internal/seccomp\", \"t\"},\n\t{\"crypto/md5\", \"\\x0e8.\\x16\\x16i\"},\n\t{\"crypto/mlkem\", \"\\x0e%\"},\n\t{\"crypto/mlkem/mlkemtest\", \"3\\x13\\b&\"},\n\t{\"crypto/pbkdf2\", \"6\\x0f\\x01.\\x16\"},\n\t{\"crypto/rand\", \"\\x1b\\x0f\\x1c\\x03+\\x86\\x01\\rN\"},\n\t{\"crypto/rc4\", \"& .\\xc9\\x01\"},\n\t{\"crypto/rsa\", \"\\x0e\\r\\x01\\v\\x10\\x0e\\x01\\x03\\b\\a\\x1c\\x03\\x133=\\f\\x01\"},\n\t{\"crypto/sha1\", \"\\x0e\\r+\\x02,\\x16\\x16\\x15T\"},\n\t{\"crypto/sha256\", \"\\x0e\\r\\x1dR\"},\n\t{\"crypto/sha3\", \"\\x0e+Q\\xcb\\x01\"},\n\t{\"crypto/sha512\", \"\\x0e\\r\\x1fP\"},\n\t{\"crypto/subtle\", \"\\x1f\\x1d\\x9f\\x01z\"},\n\t{\"crypto/tls\", \"\\x03\\b\\x02\\x01\\x01\\x01\\x01\\x02\\x01\\x01\\x01\\x02\\x01\\x01\\x01\\t\\x01\\x18\\x01\\x0f\\x01\\x03\\x01\\x01\\x01\\x01\\x02\\x01\\x02\\x01\\x17\\x02\\x03\\x13\\x16\\x15\\b=\\x16\\x16\\r\\b\\x01\\x01\\x01\\x02\\x01\\x0e\\x06\\x02\\x01\\x0f\"},\n\t{\"crypto/tls/internal/fips140tls\", \"\\x17\\xaa\\x02\"},\n\t{\"crypto/x509\", \"\\x03\\v\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x017\\x06\\x01\\x01\\x02\\x05\\x0e\\x06\\x02\\x02\\x03F\\x03:\\x01\\x02\\b\\x01\\x01\\x02\\a\\x10\\x05\\x01\\x06\\a\\b\\x02\\x01\\x02\\x0f\\x02\\x01\\x01\\x02\\x03\\x01\"},\n\t{\"crypto/x509/pkix\", \"j\\x06\\a\\x90\\x01H\"},\n\t{\"database/sql\", \"\\x03\\nQ\\x16\\x03\\x83\\x01\\v\\a\\\"\\x05\\b\\x02\\x03\\x01\\x0e\\x02\\x02\\x02\"},\n\t{\"database/sql/driver\", \"\\rg\\x03\\xb7\\x01\\x0f\\x12\"},\n\t{\"debug/buildinfo\", \"\\x03^\\x02\\x01\\x01\\b\\a\\x03g\\x1a\\x02\\x01+\\x0f \"},\n\t{\"debug/dwarf\", \"\\x03j\\a\\x03\\x83\\x011\\x11\\x01\\x01\"},\n\t{\"debug/elf\", \"\\x03\\x06W\\r\\a\\x03g\\x1b\\x01\\f \\x17\\x01\\x17\"},\n\t{\"debug/gosym\", \"\\x03j\\n$\\xa1\\x01\\x01\\x01\\x02\"},\n\t{\"debug/macho\", \"\\x03\\x06W\\r\\ng\\x1c,\\x17\\x01\"},\n\t{\"debug/pe\", \"\\x03\\x06W\\r\\a\\x03g\\x1c,\\x17\\x01\\x17\"},\n\t{\"debug/plan9obj\", \"m\\a\\x03g\\x1c,\"},\n\t{\"embed\", \"t+B\\x19\\x01T\"},\n\t{\"embed/internal/embedtest\", \"\"},\n\t{\"encoding\", \"\"},\n\t{\"encoding/ascii85\", \"\\xfa\\x01C\"},\n\t{\"encoding/asn1\", \"\\x03q\\x03g(\\x01'\\r\\x02\\x01\\x11\\x03\\x01\"},\n\t{\"encoding/base32\", \"\\xfa\\x01A\\x02\"},\n\t{\"encoding/base64\", \"\\xa0\\x01ZA\\x02\"},\n\t{\"encoding/binary\", \"t\\x86\\x01\\f(\\r\\x05\"},\n\t{\"encoding/csv\", \"\\x02\\x01q\\x03\\x83\\x01D\\x13\\x02\"},\n\t{\"encoding/gob\", \"\\x02f\\x05\\a\\x03g\\x1c\\v\\x01\\x03\\x1d\\b\\x12\\x01\\x10\\x02\"},\n\t{\"encoding/hex\", \"t\\x03\\x83\\x01A\\x03\"},\n\t{\"encoding/json\", \"\\x03\\x01d\\x04\\b\\x03\\x83\\x01\\f(\\r\\x02\\x01\\x02\\x11\\x01\\x01\\x02\"},\n\t{\"encoding/pem\", \"\\x03i\\b\\x86\\x01A\\x03\"},\n\t{\"encoding/xml\", \"\\x02\\x01e\\f\\x03\\x83\\x014\\x05\\n\\x01\\x02\\x11\\x02\"},\n\t{\"errors\", \"\\xd0\\x01\\x85\\x01\"},\n\t{\"expvar\", \"qLA\\b\\v\\x15\\r\\b\\x02\\x03\\x01\\x12\"},\n\t{\"flag\", \"h\\f\\x03\\x83\\x01,\\b\\x05\\b\\x02\\x01\\x11\"},\n\t{\"fmt\", \"tF'\\x19\\f \\b\\r\\x02\\x03\\x13\"},\n\t{\"go/ast\", \"\\x03\\x01s\\x0f\\x01s\\x03)\\b\\r\\x02\\x01\\x13\\x02\"},\n\t{\"go/build\", \"\\x02\\x01q\\x03\\x01\\x02\\x02\\b\\x02\\x01\\x17\\x1f\\x04\\x02\\b\\x1c\\x13\\x01+\\x01\\x04\\x01\\a\\b\\x02\\x01\\x13\\x02\\x02\"},\n\t{\"go/build/constraint\", \"t\\xc9\\x01\\x01\\x13\\x02\"},\n\t{\"go/constant\", \"w\\x10\\x7f\\x01\\x024\\x01\\x02\\x13\"},\n\t{\"go/doc\", \"\\x04s\\x01\\x05\\n=61\\x10\\x02\\x01\\x13\\x02\"},\n\t{\"go/doc/comment\", \"\\x03t\\xc4\\x01\\x01\\x01\\x01\\x13\\x02\"},\n\t{\"go/format\", \"\\x03t\\x01\\f\\x01\\x02sD\"},\n\t{\"go/importer\", \"y\\a\\x01\\x02\\x04\\x01r9\"},\n\t{\"go/internal/gccgoimporter\", \"\\x02\\x01^\\x13\\x03\\x04\\f\\x01p\\x02,\\x01\\x05\\x11\\x01\\r\\b\"},\n\t{\"go/internal/gcimporter\", \"\\x02u\\x10\\x010\\x05\\r0,\\x15\\x03\\x02\"},\n\t{\"go/internal/scannerhooks\", \"\\x87\\x01\"},\n\t{\"go/internal/srcimporter\", \"w\\x01\\x01\\v\\x03\\x01r,\\x01\\x05\\x12\\x02\\x15\"},\n\t{\"go/parser\", \"\\x03q\\x03\\x01\\x02\\b\\x04\\x01s\\x01+\\x06\\x12\"},\n\t{\"go/printer\", \"w\\x01\\x02\\x03\\ns\\f \\x15\\x02\\x01\\x02\\f\\x05\\x02\"},\n\t{\"go/scanner\", \"\\x03t\\v\\x05s2\\x10\\x01\\x14\\x02\"},\n\t{\"go/token\", \"\\x04s\\x86\\x01>\\x02\\x03\\x01\\x10\\x02\"},\n\t{\"go/types\", \"\\x03\\x01\\x06j\\x03\\x01\\x03\\t\\x03\\x024\\x063\\x04\\x03\\t \\x06\\a\\b\\x01\\x01\\x01\\x02\\x01\\x10\\x02\\x02\"},\n\t{\"go/version\", \"\\xc2\\x01|\"},\n\t{\"hash\", \"\\xfa\\x01\"},\n\t{\"hash/adler32\", \"t\\x16\\x16\"},\n\t{\"hash/crc32\", \"t\\x16\\x16\\x15\\x8b\\x01\\x01\\x14\"},\n\t{\"hash/crc64\", \"t\\x16\\x16\\xa0\\x01\"},\n\t{\"hash/fnv\", \"t\\x16\\x16i\"},\n\t{\"hash/maphash\", \"\\x8a\\x01\\x11<~\"},\n\t{\"html\", \"\\xbe\\x02\\x02\\x13\"},\n\t{\"html/template\", \"\\x03n\\x06\\x19-=\\x01\\n!\\x05\\x01\\x02\\x03\\f\\x01\\x02\\r\\x01\\x03\\x02\"},\n\t{\"image\", \"\\x02r\\x1fg\\x0f4\\x03\\x01\"},\n\t{\"image/color\", \"\"},\n\t{\"image/color/palette\", \"\\x93\\x01\"},\n\t{\"image/draw\", \"\\x92\\x01\\x01\\x04\"},\n\t{\"image/gif\", \"\\x02\\x01\\x05l\\x03\\x1b\\x01\\x01\\x01\\vZ\\x0f\"},\n\t{\"image/internal/imageutil\", \"\\x92\\x01\"},\n\t{\"image/jpeg\", \"\\x02r\\x1e\\x01\\x04c\"},\n\t{\"image/png\", \"\\x02\\ad\\n\\x13\\x02\\x06\\x01gC\"},\n\t{\"index/suffixarray\", \"\\x03j\\a\\x86\\x01\\f+\\n\\x01\"},\n\t{\"internal/abi\", \"\\xbc\\x01\\x99\\x01\"},\n\t{\"internal/asan\", \"\\xd5\\x02\"},\n\t{\"internal/bisect\", \"\\xb3\\x02\\r\\x01\"},\n\t{\"internal/buildcfg\", \"wHg\\x06\\x02\\x05\\n\\x01\"},\n\t{\"internal/bytealg\", \"\\xb5\\x01\\xa0\\x01\"},\n\t{\"internal/byteorder\", \"\"},\n\t{\"internal/cfg\", \"\"},\n\t{\"internal/cgrouptest\", \"w[T\\x06\\x0f\\x02\\x01\\x04\\x01\"},\n\t{\"internal/chacha8rand\", \"\\xa0\\x01\\x15\\a\\x99\\x01\"},\n\t{\"internal/copyright\", \"\"},\n\t{\"internal/coverage\", \"\"},\n\t{\"internal/coverage/calloc\", \"\"},\n\t{\"internal/coverage/cfile\", \"q\\x06\\x17\\x17\\x01\\x02\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\\"\\x02',\\x06\\a\\n\\x01\\x03\\x0e\\x06\"},\n\t{\"internal/coverage/cformat\", \"\\x04s.\\x04Q\\v6\\x01\\x02\\x0e\"},\n\t{\"internal/coverage/cmerge\", \"w.a\"},\n\t{\"internal/coverage/decodecounter\", \"m\\n.\\v\\x02H,\\x17\\x18\"},\n\t{\"internal/coverage/decodemeta\", \"\\x02k\\n\\x17\\x17\\v\\x02H,\"},\n\t{\"internal/coverage/encodecounter\", \"\\x02k\\n.\\f\\x01\\x02F\\v!\\x15\"},\n\t{\"internal/coverage/encodemeta\", \"\\x02\\x01j\\n\\x13\\x04\\x17\\r\\x02F,/\"},\n\t{\"internal/coverage/pods\", \"\\x04s.\\x81\\x01\\x06\\x05\\n\\x02\\x01\"},\n\t{\"internal/coverage/rtcov\", \"\\xd5\\x02\"},\n\t{\"internal/coverage/slicereader\", \"m\\n\\x83\\x01[\"},\n\t{\"internal/coverage/slicewriter\", \"w\\x83\\x01\"},\n\t{\"internal/coverage/stringtab\", \"w9\\x04F\"},\n\t{\"internal/coverage/test\", \"\"},\n\t{\"internal/coverage/uleb128\", \"\"},\n\t{\"internal/cpu\", \"\\xd5\\x02\"},\n\t{\"internal/dag\", \"\\x04s\\xc4\\x01\\x03\"},\n\t{\"internal/diff\", \"\\x03t\\xc5\\x01\\x02\"},\n\t{\"internal/exportdata\", \"\\x02\\x01q\\x03\\x02e\\x1c,\\x01\\x05\\x11\\x01\\x02\"},\n\t{\"internal/filepathlite\", \"t+B\\x1a@\"},\n\t{\"internal/fmtsort\", \"\\x04\\xaa\\x02\\r\"},\n\t{\"internal/fuzz\", \"\\x03\\nH\\x18\\x04\\x03\\x03\\x01\\f\\x036=\\f\\x03\\x1d\\x01\\x05\\x02\\x05\\n\\x01\\x02\\x01\\x01\\r\\x04\\x02\"},\n\t{\"internal/goarch\", \"\"},\n\t{\"internal/godebug\", \"\\x9d\\x01!\\x82\\x01\\x01\\x14\"},\n\t{\"internal/godebugs\", \"\"},\n\t{\"internal/goexperiment\", \"\"},\n\t{\"internal/goos\", \"\"},\n\t{\"internal/goroot\", \"\\xa6\\x02\\x01\\x05\\x12\\x02\"},\n\t{\"internal/gover\", \"\\x04\"},\n\t{\"internal/goversion\", \"\"},\n\t{\"internal/lazyregexp\", \"\\xa6\\x02\\v\\r\\x02\"},\n\t{\"internal/lazytemplate\", \"\\xfa\\x01,\\x18\\x02\\r\"},\n\t{\"internal/msan\", \"\\xd5\\x02\"},\n\t{\"internal/nettrace\", \"\"},\n\t{\"internal/obscuretestdata\", \"l\\x8e\\x01,\"},\n\t{\"internal/oserror\", \"t\"},\n\t{\"internal/pkgbits\", \"\\x03R\\x18\\a\\x03\\x04\\fs\\r\\x1f\\r\\n\\x01\"},\n\t{\"internal/platform\", \"\"},\n\t{\"internal/poll\", \"tl\\x05\\x159\\r\\x01\\x01\\r\\x06\"},\n\t{\"internal/profile\", \"\\x03\\x04m\\x03\\x83\\x017\\n\\x01\\x01\\x01\\x11\"},\n\t{\"internal/profilerecord\", \"\"},\n\t{\"internal/race\", \"\\x9b\\x01\\xba\\x01\"},\n\t{\"internal/reflectlite\", \"\\x9b\\x01!;<\\\"\"},\n\t{\"internal/runtime/atomic\", \"\\xbc\\x01\\x99\\x01\"},\n\t{\"internal/runtime/cgroup\", \"\\x9f\\x01=\\x04u\"},\n\t{\"internal/runtime/exithook\", \"\\xd1\\x01\\x84\\x01\"},\n\t{\"internal/runtime/gc\", \"\\xbc\\x01\"},\n\t{\"internal/runtime/gc/internal/gen\", \"\\nc\\n\\x18k\\x04\\v\\x1d\\b\\x10\\x02\"},\n\t{\"internal/runtime/gc/scan\", \"\\xb5\\x01\\a\\x18\\az\"},\n\t{\"internal/runtime/maps\", \"\\x9b\\x01\\x01 \\n\\t\\t\\x03z\"},\n\t{\"internal/runtime/math\", \"\\xbc\\x01\"},\n\t{\"internal/runtime/pprof/label\", \"\"},\n\t{\"internal/runtime/startlinetest\", \"\"},\n\t{\"internal/runtime/sys\", \"\\xbc\\x01\\x04\"},\n\t{\"internal/runtime/syscall/linux\", \"\\xbc\\x01\\x99\\x01\"},\n\t{\"internal/runtime/wasitest\", \"\"},\n\t{\"internal/saferio\", \"\\xfa\\x01[\"},\n\t{\"internal/singleflight\", \"\\xc0\\x02\"},\n\t{\"internal/strconv\", \"\\x89\\x02L\"},\n\t{\"internal/stringslite\", \"\\x9f\\x01\\xb6\\x01\"},\n\t{\"internal/sync\", \"\\x9b\\x01!\\x13r\\x14\"},\n\t{\"internal/synctest\", \"\\x9b\\x01\\xba\\x01\"},\n\t{\"internal/syscall/execenv\", \"\\xc2\\x02\"},\n\t{\"internal/syscall/unix\", \"\\xb3\\x02\\x0e\\x01\\x13\"},\n\t{\"internal/sysinfo\", \"\\x02\\x01\\xb2\\x01E,\\x18\\x02\"},\n\t{\"internal/syslist\", \"\"},\n\t{\"internal/testenv\", \"\\x03\\ng\\x02\\x01*\\x1b\\x0f0+\\x01\\x05\\a\\n\\x01\\x02\\x02\\x01\\f\"},\n\t{\"internal/testhash\", \"\\x03\\x87\\x01p\\x118\\f\"},\n\t{\"internal/testlog\", \"\\xc0\\x02\\x01\\x14\"},\n\t{\"internal/testpty\", \"t\\x03\\xaf\\x01\"},\n\t{\"internal/trace\", \"\\x02\\x01\\x01\\x06c\\a\\x03w\\x03\\x03\\x06\\x03\\t+\\n\\x01\\x01\\x01\\x11\\x06\"},\n\t{\"internal/trace/internal/testgen\", \"\\x03j\\nu\\x03\\x02\\x03\\x011\\v\\r\\x11\"},\n\t{\"internal/trace/internal/tracev1\", \"\\x03\\x01i\\a\\x03}\\x06\\f5\\x01\"},\n\t{\"internal/trace/raw\", \"\\x02k\\nz\\x03\\x06C\\x01\\x13\"},\n\t{\"internal/trace/testtrace\", \"\\x02\\x01q\\x03q\\x04\\x03\\x05\\x01\\x05,\\v\\x02\\b\\x02\\x01\\x05\"},\n\t{\"internal/trace/tracev2\", \"\"},\n\t{\"internal/trace/traceviewer\", \"\\x02d\\v\\x06\\x1a<\\x1f\\a\\a\\x04\\b\\v\\x15\\x01\\x05\\a\\n\\x01\\x02\\x0f\"},\n\t{\"internal/trace/traceviewer/format\", \"\"},\n\t{\"internal/trace/version\", \"wz\\t\"},\n\t{\"internal/txtar\", \"\\x03t\\xaf\\x01\\x18\"},\n\t{\"internal/types/errors\", \"\\xbd\\x02\"},\n\t{\"internal/unsafeheader\", \"\\xd5\\x02\"},\n\t{\"internal/xcoff\", \"`\\r\\a\\x03g\\x1c,\\x17\\x01\"},\n\t{\"internal/zstd\", \"m\\a\\x03\\x83\\x01\\x0f\"},\n\t{\"io\", \"t\\xcc\\x01\"},\n\t{\"io/fs\", \"t+*11\\x10\\x14\\x04\"},\n\t{\"io/ioutil\", \"\\xfa\\x01\\x01+\\x15\\x03\"},\n\t{\"iter\", \"\\xcf\\x01d\\\"\"},\n\t{\"log\", \"w\\x83\\x01\\x05'\\r\\r\\x01\\x0e\"},\n\t{\"log/internal\", \"\"},\n\t{\"log/slog\", \"\\x03\\n[\\t\\x03\\x03\\x83\\x01\\x04\\x01\\x02\\x02\\x03(\\x05\\b\\x02\\x01\\x02\\x01\\x0e\\x02\\x02\\x02\"},\n\t{\"log/slog/internal\", \"\"},\n\t{\"log/slog/internal/benchmarks\", \"\\rg\\x03\\x83\\x01\\x06\\x03:\\x12\"},\n\t{\"log/slog/internal/buffer\", \"\\xc0\\x02\"},\n\t{\"log/syslog\", \"t\\x03\\x87\\x01\\x12\\x16\\x18\\x02\\x0f\"},\n\t{\"maps\", \"\\xfd\\x01X\"},\n\t{\"math\", \"\\xb5\\x01TL\"},\n\t{\"math/big\", \"\\x03q\\x03)\\x15E\\f\\x03\\x020\\x02\\x01\\x02\\x15\"},\n\t{\"math/big/internal/asmgen\", \"\\x03\\x01s\\x92\\x012\\x03\"},\n\t{\"math/bits\", \"\\xd5\\x02\"},\n\t{\"math/cmplx\", \"\\x86\\x02\\x03\"},\n\t{\"math/rand\", \"\\xbd\\x01I:\\x01\\x14\"},\n\t{\"math/rand/v2\", \"t,\\x03c\\x03L\"},\n\t{\"mime\", \"\\x02\\x01i\\b\\x03\\x83\\x01\\v!\\x15\\x03\\x02\\x11\\x02\"},\n\t{\"mime/multipart\", \"\\x02\\x01N#\\x03F=\\v\\x01\\a\\x02\\x15\\x02\\x06\\x0f\\x02\\x01\\x17\"},\n\t{\"mime/quotedprintable\", \"\\x02\\x01t\\x83\\x01\"},\n\t{\"net\", \"\\x04\\tg+\\x1e\\n\\x05\\x13\\x01\\x01\\x04\\x15\\x01%\\x06\\r\\b\\x05\\x01\\x01\\r\\x06\\a\"},\n\t{\"net/http\", \"\\x02\\x01\\x03\\x01\\x04\\x02D\\b\\x13\\x01\\a\\x03F=\\x01\\x03\\a\\x01\\x03\\x02\\x02\\x01\\x02\\x06\\x02\\x01\\x01\\n\\x01\\x01\\x05\\x01\\x02\\x05\\b\\x01\\x01\\x01\\x02\\x01\\x0e\\x02\\x02\\x02\\b\\x01\\x01\\x01\"},\n\t{\"net/http/cgi\", \"\\x02W\\x1b\\x03\\x83\\x01\\x04\\a\\v\\x01\\x13\\x01\\x01\\x01\\x04\\x01\\x05\\x02\\b\\x02\\x01\\x11\\x0e\"},\n\t{\"net/http/cookiejar\", \"\\x04p\\x03\\x99\\x01\\x01\\b\\a\\x05\\x16\\x03\\x02\\x0f\\x04\"},\n\t{\"net/http/fcgi\", \"\\x02\\x01\\n`\\a\\x03\\x83\\x01\\x16\\x01\\x01\\x14\\x18\\x02\\x0f\"},\n\t{\"net/http/httptest\", \"\\x02\\x01\\nL\\x02\\x1b\\x01\\x83\\x01\\x04\\x12\\x01\\n\\t\\x02\\x17\\x01\\x02\\x0f\\x0e\"},\n\t{\"net/http/httptrace\", \"\\rLnI\\x14\\n!\"},\n\t{\"net/http/httputil\", \"\\x02\\x01\\ng\\x03\\x83\\x01\\x04\\x0f\\x03\\x01\\x05\\x02\\x01\\v\\x01\\x19\\x02\\x01\\x0e\\x0e\"},\n\t{\"net/http/internal\", \"\\x02\\x01q\\x03\\x83\\x01\"},\n\t{\"net/http/internal/ascii\", \"\\xbe\\x02\\x13\"},\n\t{\"net/http/internal/httpcommon\", \"\\rg\\x03\\x9f\\x01\\x0e\\x01\\x17\\x01\\x01\\x02\\x1d\\x02\"},\n\t{\"net/http/internal/testcert\", \"\\xbe\\x02\"},\n\t{\"net/http/pprof\", \"\\x02\\x01\\nj\\x19-\\x02\\x0e-\\x04\\x13\\x14\\x01\\r\\x04\\x03\\x01\\x02\\x01\\x11\"},\n\t{\"net/internal/cgotest\", \"\"},\n\t{\"net/internal/socktest\", \"w\\xc9\\x01\\x02\"},\n\t{\"net/mail\", \"\\x02r\\x03\\x83\\x01\\x04\\x0f\\x03\\x14\\x1a\\x02\\x0f\\x04\"},\n\t{\"net/netip\", \"\\x04p+\\x01f\\x034\\x17\"},\n\t{\"net/rpc\", \"\\x02m\\x05\\x03\\x10\\ni\\x04\\x12\\x01\\x1d\\r\\x03\\x02\"},\n\t{\"net/rpc/jsonrpc\", \"q\\x03\\x03\\x83\\x01\\x16\\x11\\x1f\"},\n\t{\"net/smtp\", \"\\x194\\f\\x13\\b\\x03\\x83\\x01\\x16\\x14\\x1a\"},\n\t{\"net/textproto\", \"\\x02\\x01q\\x03\\x83\\x01\\f\\n-\\x01\\x02\\x15\"},\n\t{\"net/url\", \"t\\x03Fc\\v\\x10\\x02\\x01\\x17\"},\n\t{\"os\", \"t+\\x01\\x19\\x03\\x10\\x14\\x01\\x03\\x01\\x05\\x10\\x018\\b\\x05\\x01\\x01\\r\\x06\"},\n\t{\"os/exec\", \"\\x03\\ngI'\\x01\\x15\\x01+\\x06\\a\\n\\x01\\x04\\r\"},\n\t{\"os/exec/internal/fdtest\", \"\\xc2\\x02\"},\n\t{\"os/signal\", \"\\r\\x99\\x02\\x15\\x05\\x02\"},\n\t{\"os/user\", \"\\x02\\x01q\\x03\\x83\\x01,\\r\\n\\x01\\x02\"},\n\t{\"path\", \"t+\\xb4\\x01\"},\n\t{\"path/filepath\", \"t+\\x1aB+\\r\\b\\x03\\x04\\x11\"},\n\t{\"plugin\", \"t\"},\n\t{\"reflect\", \"t'\\x04\\x1d\\x13\\b\\x04\\x05\\x17\\x06\\t-\\n\\x03\\x11\\x02\\x02\"},\n\t{\"reflect/internal/example1\", \"\"},\n\t{\"reflect/internal/example2\", \"\"},\n\t{\"regexp\", \"\\x03\\xf7\\x018\\t\\x02\\x01\\x02\\x11\\x02\"},\n\t{\"regexp/syntax\", \"\\xbb\\x02\\x01\\x01\\x01\\x02\\x11\\x02\"},\n\t{\"runtime\", \"\\x9b\\x01\\x04\\x01\\x03\\f\\x06\\a\\x02\\x01\\x01\\x0e\\x03\\x01\\x01\\x01\\x02\\x01\\x01\\x01\\x02\\x01\\x04\\x01\\x10\\x18L\"},\n\t{\"runtime/coverage\", \"\\xa7\\x01S\"},\n\t{\"runtime/debug\", \"wUZ\\r\\b\\x02\\x01\\x11\\x06\"},\n\t{\"runtime/metrics\", \"\\xbe\\x01H-\\\"\"},\n\t{\"runtime/pprof\", \"\\x02\\x01\\x01\\x03\\x06`\\a\\x03$$\\x0f\\v!\\f \\r\\b\\x01\\x01\\x01\\x02\\x02\\n\\x03\\x06\"},\n\t{\"runtime/race\", \"\\xb9\\x02\"},\n\t{\"runtime/race/internal/amd64v1\", \"\"},\n\t{\"runtime/trace\", \"\\rg\\x03z\\t9\\b\\x05\\x01\\x0e\\x06\"},\n\t{\"slices\", \"\\x04\\xf9\\x01\\fL\"},\n\t{\"sort\", \"\\xd0\\x0192\"},\n\t{\"strconv\", \"t+A\\x01r\"},\n\t{\"strings\", \"t'\\x04B\\x19\\x03\\f7\\x11\\x02\\x02\"},\n\t{\"structs\", \"\"},\n\t{\"sync\", \"\\xcf\\x01\\x13\\x01P\\x0e\\x14\"},\n\t{\"sync/atomic\", \"\\xd5\\x02\"},\n\t{\"syscall\", \"t(\\x03\\x01\\x1c\\n\\x03\\x06\\r\\x04S\\b\\x05\\x01\\x14\"},\n\t{\"testing\", \"\\x03\\ng\\x02\\x01X\\x17\\x14\\f\\x05\\x1b\\x06\\x02\\x05\\x02\\x05\\x01\\x02\\x01\\x02\\x01\\x0e\\x02\\x04\"},\n\t{\"testing/cryptotest\", \"QOZ\\x124\\x03\\x12\"},\n\t{\"testing/fstest\", \"t\\x03\\x83\\x01\\x01\\n&\\x10\\x03\\t\\b\"},\n\t{\"testing/internal/testdeps\", \"\\x02\\v\\xae\\x01/\\x10,\\x03\\x05\\x03\\x06\\a\\x02\\x0f\"},\n\t{\"testing/iotest\", \"\\x03q\\x03\\x83\\x01\\x04\"},\n\t{\"testing/quick\", \"v\\x01\\x8f\\x01\\x05#\\x10\\x11\"},\n\t{\"testing/slogtest\", \"\\rg\\x03\\x89\\x01.\\x05\\x10\\f\"},\n\t{\"testing/synctest\", \"\\xe3\\x01`\\x12\"},\n\t{\"text/scanner\", \"\\x03t\\x83\\x01,+\\x02\"},\n\t{\"text/tabwriter\", \"w\\x83\\x01Y\"},\n\t{\"text/template\", \"t\\x03C@\\x01\\n \\x01\\x05\\x01\\x02\\x05\\v\\x02\\x0e\\x03\\x02\"},\n\t{\"text/template/parse\", \"\\x03t\\xbc\\x01\\n\\x01\\x13\\x02\"},\n\t{\"time\", \"t+\\x1e$(*\\r\\x02\\x13\"},\n\t{\"time/tzdata\", \"t\\xce\\x01\\x13\"},\n\t{\"unicode\", \"\"},\n\t{\"unicode/utf16\", \"\"},\n\t{\"unicode/utf8\", \"\"},\n\t{\"unique\", \"\\x9b\\x01!%\\x01Q\\r\\x01\\x14\\x12\"},\n\t{\"unsafe\", \"\"},\n\t{\"vendor/golang.org/x/crypto/chacha20\", \"\\x10]\\a\\x95\\x01*'\"},\n\t{\"vendor/golang.org/x/crypto/chacha20poly1305\", \"\\x10\\aV\\a\\xe2\\x01\\x04\\x01\\a\"},\n\t{\"vendor/golang.org/x/crypto/cryptobyte\", \"j\\n\\x03\\x90\\x01'!\\n\"},\n\t{\"vendor/golang.org/x/crypto/cryptobyte/asn1\", \"\"},\n\t{\"vendor/golang.org/x/crypto/internal/alias\", \"\\xd5\\x02\"},\n\t{\"vendor/golang.org/x/crypto/internal/poly1305\", \"X\\x15\\x9c\\x01\"},\n\t{\"vendor/golang.org/x/net/dns/dnsmessage\", \"t\\xc7\\x01\"},\n\t{\"vendor/golang.org/x/net/http/httpguts\", \"\\x90\\x02\\x14\\x1a\\x15\\r\"},\n\t{\"vendor/golang.org/x/net/http/httpproxy\", \"t\\x03\\x99\\x01\\x10\\x05\\x01\\x18\\x15\\r\"},\n\t{\"vendor/golang.org/x/net/http2/hpack\", \"\\x03q\\x03\\x83\\x01F\"},\n\t{\"vendor/golang.org/x/net/idna\", \"w\\x8f\\x018\\x15\\x10\\x02\\x01\"},\n\t{\"vendor/golang.org/x/net/nettest\", \"\\x03j\\a\\x03\\x83\\x01\\x11\\x05\\x16\\x01\\f\\n\\x01\\x02\\x02\\x01\\f\"},\n\t{\"vendor/golang.org/x/sys/cpu\", \"\\xa6\\x02\\r\\n\\x01\\x17\"},\n\t{\"vendor/golang.org/x/text/secure/bidirule\", \"t\\xdf\\x01\\x11\\x01\"},\n\t{\"vendor/golang.org/x/text/transform\", \"\\x03q\\x86\\x01Y\"},\n\t{\"vendor/golang.org/x/text/unicode/bidi\", \"\\x03\\bl\\x87\\x01>\\x17\"},\n\t{\"vendor/golang.org/x/text/unicode/norm\", \"m\\n\\x83\\x01F\\x13\\x11\"},\n\t{\"weak\", \"\\x9b\\x01\\x98\\x01\\\"\"},\n}\n\n// bootstrap is the list of bootstrap packages extracted from cmd/dist.\nvar bootstrap = map[string]bool{\n\t\"cmp\":                                     true,\n\t\"cmd/asm\":                                 true,\n\t\"cmd/asm/internal/arch\":                   true,\n\t\"cmd/asm/internal/asm\":                    true,\n\t\"cmd/asm/internal/flags\":                  true,\n\t\"cmd/asm/internal/lex\":                    true,\n\t\"cmd/cgo\":                                 true,\n\t\"cmd/compile\":                             true,\n\t\"cmd/compile/internal/abi\":                true,\n\t\"cmd/compile/internal/abt\":                true,\n\t\"cmd/compile/internal/amd64\":              true,\n\t\"cmd/compile/internal/arm\":                true,\n\t\"cmd/compile/internal/arm64\":              true,\n\t\"cmd/compile/internal/base\":               true,\n\t\"cmd/compile/internal/bitvec\":             true,\n\t\"cmd/compile/internal/bloop\":              true,\n\t\"cmd/compile/internal/compare\":            true,\n\t\"cmd/compile/internal/coverage\":           true,\n\t\"cmd/compile/internal/deadlocals\":         true,\n\t\"cmd/compile/internal/devirtualize\":       true,\n\t\"cmd/compile/internal/dwarfgen\":           true,\n\t\"cmd/compile/internal/escape\":             true,\n\t\"cmd/compile/internal/gc\":                 true,\n\t\"cmd/compile/internal/importer\":           true,\n\t\"cmd/compile/internal/inline\":             true,\n\t\"cmd/compile/internal/inline/inlheur\":     true,\n\t\"cmd/compile/internal/inline/interleaved\": true,\n\t\"cmd/compile/internal/ir\":                 true,\n\t\"cmd/compile/internal/liveness\":           true,\n\t\"cmd/compile/internal/logopt\":             true,\n\t\"cmd/compile/internal/loong64\":            true,\n\t\"cmd/compile/internal/loopvar\":            true,\n\t\"cmd/compile/internal/mips\":               true,\n\t\"cmd/compile/internal/mips64\":             true,\n\t\"cmd/compile/internal/noder\":              true,\n\t\"cmd/compile/internal/objw\":               true,\n\t\"cmd/compile/internal/pgoir\":              true,\n\t\"cmd/compile/internal/pkginit\":            true,\n\t\"cmd/compile/internal/ppc64\":              true,\n\t\"cmd/compile/internal/rangefunc\":          true,\n\t\"cmd/compile/internal/reflectdata\":        true,\n\t\"cmd/compile/internal/riscv64\":            true,\n\t\"cmd/compile/internal/rttype\":             true,\n\t\"cmd/compile/internal/s390x\":              true,\n\t\"cmd/compile/internal/slice\":              true,\n\t\"cmd/compile/internal/ssa\":                true,\n\t\"cmd/compile/internal/ssagen\":             true,\n\t\"cmd/compile/internal/staticdata\":         true,\n\t\"cmd/compile/internal/staticinit\":         true,\n\t\"cmd/compile/internal/syntax\":             true,\n\t\"cmd/compile/internal/test\":               true,\n\t\"cmd/compile/internal/typebits\":           true,\n\t\"cmd/compile/internal/typecheck\":          true,\n\t\"cmd/compile/internal/types\":              true,\n\t\"cmd/compile/internal/types2\":             true,\n\t\"cmd/compile/internal/walk\":               true,\n\t\"cmd/compile/internal/wasm\":               true,\n\t\"cmd/compile/internal/x86\":                true,\n\t\"cmd/internal/archive\":                    true,\n\t\"cmd/internal/bio\":                        true,\n\t\"cmd/internal/codesign\":                   true,\n\t\"cmd/internal/dwarf\":                      true,\n\t\"cmd/internal/edit\":                       true,\n\t\"cmd/internal/gcprog\":                     true,\n\t\"cmd/internal/goobj\":                      true,\n\t\"cmd/internal/hash\":                       true,\n\t\"cmd/internal/macho\":                      true,\n\t\"cmd/internal/obj\":                        true,\n\t\"cmd/internal/obj/arm\":                    true,\n\t\"cmd/internal/obj/arm64\":                  true,\n\t\"cmd/internal/obj/loong64\":                true,\n\t\"cmd/internal/obj/mips\":                   true,\n\t\"cmd/internal/obj/ppc64\":                  true,\n\t\"cmd/internal/obj/riscv\":                  true,\n\t\"cmd/internal/obj/s390x\":                  true,\n\t\"cmd/internal/obj/wasm\":                   true,\n\t\"cmd/internal/obj/x86\":                    true,\n\t\"cmd/internal/objabi\":                     true,\n\t\"cmd/internal/par\":                        true,\n\t\"cmd/internal/pgo\":                        true,\n\t\"cmd/internal/pkgpath\":                    true,\n\t\"cmd/internal/quoted\":                     true,\n\t\"cmd/internal/src\":                        true,\n\t\"cmd/internal/sys\":                        true,\n\t\"cmd/internal/telemetry\":                  true,\n\t\"cmd/internal/telemetry/counter\":          true,\n\t\"cmd/link\":                                true,\n\t\"cmd/link/internal/amd64\":                 true,\n\t\"cmd/link/internal/arm\":                   true,\n\t\"cmd/link/internal/arm64\":                 true,\n\t\"cmd/link/internal/benchmark\":             true,\n\t\"cmd/link/internal/dwtest\":                true,\n\t\"cmd/link/internal/ld\":                    true,\n\t\"cmd/link/internal/loadelf\":               true,\n\t\"cmd/link/internal/loader\":                true,\n\t\"cmd/link/internal/loadmacho\":             true,\n\t\"cmd/link/internal/loadpe\":                true,\n\t\"cmd/link/internal/loadxcoff\":             true,\n\t\"cmd/link/internal/loong64\":               true,\n\t\"cmd/link/internal/mips\":                  true,\n\t\"cmd/link/internal/mips64\":                true,\n\t\"cmd/link/internal/ppc64\":                 true,\n\t\"cmd/link/internal/riscv64\":               true,\n\t\"cmd/link/internal/s390x\":                 true,\n\t\"cmd/link/internal/sym\":                   true,\n\t\"cmd/link/internal/wasm\":                  true,\n\t\"cmd/link/internal/x86\":                   true,\n\t\"compress/flate\":                          true,\n\t\"compress/zlib\":                           true,\n\t\"container/heap\":                          true,\n\t\"debug/dwarf\":                             true,\n\t\"debug/elf\":                               true,\n\t\"debug/macho\":                             true,\n\t\"debug/pe\":                                true,\n\t\"go/build/constraint\":                     true,\n\t\"go/constant\":                             true,\n\t\"go/version\":                              true,\n\t\"internal/abi\":                            true,\n\t\"internal/coverage\":                       true,\n\t\"cmd/internal/cov/covcmd\":                 true,\n\t\"internal/bisect\":                         true,\n\t\"internal/buildcfg\":                       true,\n\t\"internal/exportdata\":                     true,\n\t\"internal/goarch\":                         true,\n\t\"internal/godebugs\":                       true,\n\t\"internal/goexperiment\":                   true,\n\t\"internal/goroot\":                         true,\n\t\"internal/gover\":                          true,\n\t\"internal/goversion\":                      true,\n\t\"internal/lazyregexp\":                     true,\n\t\"internal/pkgbits\":                        true,\n\t\"internal/platform\":                       true,\n\t\"internal/profile\":                        true,\n\t\"internal/race\":                           true,\n\t\"internal/runtime/gc\":                     true,\n\t\"internal/saferio\":                        true,\n\t\"internal/syscall/unix\":                   true,\n\t\"internal/types/errors\":                   true,\n\t\"internal/unsafeheader\":                   true,\n\t\"internal/xcoff\":                          true,\n\t\"internal/zstd\":                           true,\n\t\"math/bits\":                               true,\n\t\"sort\":                                    true,\n}\n\n// BootstrapVersion is the minor version of Go used during toolchain\n// bootstrapping. Packages for which [IsBootstrapPackage] must not use\n// features of Go newer than this version.\nconst BootstrapVersion = Version(24) // go1.24.6\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/stdlib/import.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage stdlib\n\n// This file provides the API for the import graph of the standard library.\n//\n// Be aware that the compiler-generated code for every package\n// implicitly depends on package \"runtime\" and a handful of others\n// (see runtimePkgs in GOROOT/src/cmd/internal/objabi/pkgspecial.go).\n\nimport (\n\t\"encoding/binary\"\n\t\"iter\"\n\t\"slices\"\n\t\"strings\"\n)\n\n// Imports returns the sequence of packages directly imported by the\n// named standard packages, in name order.\n// The imports of an unknown package are the empty set.\n//\n// The graph is built into the application and may differ from the\n// graph in the Go source tree being analyzed by the application.\nfunc Imports(pkgs ...string) iter.Seq[string] {\n\treturn func(yield func(string) bool) {\n\t\tfor _, pkg := range pkgs {\n\t\t\tif i, ok := find(pkg); ok {\n\t\t\t\tvar depIndex uint64\n\t\t\t\tfor data := []byte(deps[i].deps); len(data) > 0; {\n\t\t\t\t\tdelta, n := binary.Uvarint(data)\n\t\t\t\t\tdepIndex += delta\n\t\t\t\t\tif !yield(deps[depIndex].name) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tdata = data[n:]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Dependencies returns the set of all dependencies of the named\n// standard packages, including the initial package,\n// in a deterministic topological order.\n// The dependencies of an unknown package are the empty set.\n//\n// The graph is built into the application and may differ from the\n// graph in the Go source tree being analyzed by the application.\nfunc Dependencies(pkgs ...string) iter.Seq[string] {\n\treturn func(yield func(string) bool) {\n\t\tfor _, pkg := range pkgs {\n\t\t\tif i, ok := find(pkg); ok {\n\t\t\t\tvar seen [1 + len(deps)/8]byte // bit set of seen packages\n\t\t\t\tvar visit func(i int) bool\n\t\t\t\tvisit = func(i int) bool {\n\t\t\t\t\tbit := byte(1) << (i % 8)\n\t\t\t\t\tif seen[i/8]&bit == 0 {\n\t\t\t\t\t\tseen[i/8] |= bit\n\t\t\t\t\t\tvar depIndex uint64\n\t\t\t\t\t\tfor data := []byte(deps[i].deps); len(data) > 0; {\n\t\t\t\t\t\t\tdelta, n := binary.Uvarint(data)\n\t\t\t\t\t\t\tdepIndex += delta\n\t\t\t\t\t\t\tif !visit(int(depIndex)) {\n\t\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata = data[n:]\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif !yield(deps[i].name) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif !visit(i) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// find returns the index of pkg in the deps table.\nfunc find(pkg string) (int, bool) {\n\treturn slices.BinarySearchFunc(deps[:], pkg, func(p pkginfo, n string) int {\n\t\treturn strings.Compare(p.name, n)\n\t})\n}\n\n// IsBootstrapPackage reports whether pkg is one of the low-level\n// packages in the Go distribution that must compile with the older\n// language version specified by [BootstrapVersion] during toolchain\n// bootstrapping; see golang.org/s/go15bootstrap.\nfunc IsBootstrapPackage(pkg string) bool {\n\treturn bootstrap[pkg]\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/stdlib/manifest.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate.go. DO NOT EDIT.\n\npackage stdlib\n\nvar PackageSymbols = map[string][]Symbol{\n\t\"archive/tar\": {\n\t\t{\"(*Header).FileInfo\", Method, 1, \"\"},\n\t\t{\"(*Reader).Next\", Method, 0, \"\"},\n\t\t{\"(*Reader).Read\", Method, 0, \"\"},\n\t\t{\"(*Writer).AddFS\", Method, 22, \"\"},\n\t\t{\"(*Writer).Close\", Method, 0, \"\"},\n\t\t{\"(*Writer).Flush\", Method, 0, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"(*Writer).WriteHeader\", Method, 0, \"\"},\n\t\t{\"(FileInfoNames).Gname\", Method, 23, \"\"},\n\t\t{\"(FileInfoNames).IsDir\", Method, 23, \"\"},\n\t\t{\"(FileInfoNames).ModTime\", Method, 23, \"\"},\n\t\t{\"(FileInfoNames).Mode\", Method, 23, \"\"},\n\t\t{\"(FileInfoNames).Name\", Method, 23, \"\"},\n\t\t{\"(FileInfoNames).Size\", Method, 23, \"\"},\n\t\t{\"(FileInfoNames).Sys\", Method, 23, \"\"},\n\t\t{\"(FileInfoNames).Uname\", Method, 23, \"\"},\n\t\t{\"(Format).String\", Method, 10, \"\"},\n\t\t{\"ErrFieldTooLong\", Var, 0, \"\"},\n\t\t{\"ErrHeader\", Var, 0, \"\"},\n\t\t{\"ErrInsecurePath\", Var, 20, \"\"},\n\t\t{\"ErrWriteAfterClose\", Var, 0, \"\"},\n\t\t{\"ErrWriteTooLong\", Var, 0, \"\"},\n\t\t{\"FileInfoHeader\", Func, 1, \"func(fi fs.FileInfo, link string) (*Header, error)\"},\n\t\t{\"FileInfoNames\", Type, 23, \"\"},\n\t\t{\"Format\", Type, 10, \"\"},\n\t\t{\"FormatGNU\", Const, 10, \"\"},\n\t\t{\"FormatPAX\", Const, 10, \"\"},\n\t\t{\"FormatUSTAR\", Const, 10, \"\"},\n\t\t{\"FormatUnknown\", Const, 10, \"\"},\n\t\t{\"Header\", Type, 0, \"\"},\n\t\t{\"Header.AccessTime\", Field, 0, \"\"},\n\t\t{\"Header.ChangeTime\", Field, 0, \"\"},\n\t\t{\"Header.Devmajor\", Field, 0, \"\"},\n\t\t{\"Header.Devminor\", Field, 0, \"\"},\n\t\t{\"Header.Format\", Field, 10, \"\"},\n\t\t{\"Header.Gid\", Field, 0, \"\"},\n\t\t{\"Header.Gname\", Field, 0, \"\"},\n\t\t{\"Header.Linkname\", Field, 0, \"\"},\n\t\t{\"Header.ModTime\", Field, 0, \"\"},\n\t\t{\"Header.Mode\", Field, 0, \"\"},\n\t\t{\"Header.Name\", Field, 0, \"\"},\n\t\t{\"Header.PAXRecords\", Field, 10, \"\"},\n\t\t{\"Header.Size\", Field, 0, \"\"},\n\t\t{\"Header.Typeflag\", Field, 0, \"\"},\n\t\t{\"Header.Uid\", Field, 0, \"\"},\n\t\t{\"Header.Uname\", Field, 0, \"\"},\n\t\t{\"Header.Xattrs\", Field, 3, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader) *Reader\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer) *Writer\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"TypeBlock\", Const, 0, \"\"},\n\t\t{\"TypeChar\", Const, 0, \"\"},\n\t\t{\"TypeCont\", Const, 0, \"\"},\n\t\t{\"TypeDir\", Const, 0, \"\"},\n\t\t{\"TypeFifo\", Const, 0, \"\"},\n\t\t{\"TypeGNULongLink\", Const, 1, \"\"},\n\t\t{\"TypeGNULongName\", Const, 1, \"\"},\n\t\t{\"TypeGNUSparse\", Const, 3, \"\"},\n\t\t{\"TypeLink\", Const, 0, \"\"},\n\t\t{\"TypeReg\", Const, 0, \"\"},\n\t\t{\"TypeRegA\", Const, 0, \"\"},\n\t\t{\"TypeSymlink\", Const, 0, \"\"},\n\t\t{\"TypeXGlobalHeader\", Const, 0, \"\"},\n\t\t{\"TypeXHeader\", Const, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"archive/zip\": {\n\t\t{\"(*File).DataOffset\", Method, 2, \"\"},\n\t\t{\"(*File).FileInfo\", Method, 0, \"\"},\n\t\t{\"(*File).ModTime\", Method, 0, \"\"},\n\t\t{\"(*File).Mode\", Method, 0, \"\"},\n\t\t{\"(*File).Open\", Method, 0, \"\"},\n\t\t{\"(*File).OpenRaw\", Method, 17, \"\"},\n\t\t{\"(*File).SetModTime\", Method, 0, \"\"},\n\t\t{\"(*File).SetMode\", Method, 0, \"\"},\n\t\t{\"(*FileHeader).FileInfo\", Method, 0, \"\"},\n\t\t{\"(*FileHeader).ModTime\", Method, 0, \"\"},\n\t\t{\"(*FileHeader).Mode\", Method, 0, \"\"},\n\t\t{\"(*FileHeader).SetModTime\", Method, 0, \"\"},\n\t\t{\"(*FileHeader).SetMode\", Method, 0, \"\"},\n\t\t{\"(*ReadCloser).Close\", Method, 0, \"\"},\n\t\t{\"(*ReadCloser).Open\", Method, 16, \"\"},\n\t\t{\"(*ReadCloser).RegisterDecompressor\", Method, 6, \"\"},\n\t\t{\"(*Reader).Open\", Method, 16, \"\"},\n\t\t{\"(*Reader).RegisterDecompressor\", Method, 6, \"\"},\n\t\t{\"(*Writer).AddFS\", Method, 22, \"\"},\n\t\t{\"(*Writer).Close\", Method, 0, \"\"},\n\t\t{\"(*Writer).Copy\", Method, 17, \"\"},\n\t\t{\"(*Writer).Create\", Method, 0, \"\"},\n\t\t{\"(*Writer).CreateHeader\", Method, 0, \"\"},\n\t\t{\"(*Writer).CreateRaw\", Method, 17, \"\"},\n\t\t{\"(*Writer).Flush\", Method, 4, \"\"},\n\t\t{\"(*Writer).RegisterCompressor\", Method, 6, \"\"},\n\t\t{\"(*Writer).SetComment\", Method, 10, \"\"},\n\t\t{\"(*Writer).SetOffset\", Method, 5, \"\"},\n\t\t{\"Compressor\", Type, 2, \"\"},\n\t\t{\"Decompressor\", Type, 2, \"\"},\n\t\t{\"Deflate\", Const, 0, \"\"},\n\t\t{\"ErrAlgorithm\", Var, 0, \"\"},\n\t\t{\"ErrChecksum\", Var, 0, \"\"},\n\t\t{\"ErrFormat\", Var, 0, \"\"},\n\t\t{\"ErrInsecurePath\", Var, 20, \"\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"File.FileHeader\", Field, 0, \"\"},\n\t\t{\"FileHeader\", Type, 0, \"\"},\n\t\t{\"FileHeader.CRC32\", Field, 0, \"\"},\n\t\t{\"FileHeader.Comment\", Field, 0, \"\"},\n\t\t{\"FileHeader.CompressedSize\", Field, 0, \"\"},\n\t\t{\"FileHeader.CompressedSize64\", Field, 1, \"\"},\n\t\t{\"FileHeader.CreatorVersion\", Field, 0, \"\"},\n\t\t{\"FileHeader.ExternalAttrs\", Field, 0, \"\"},\n\t\t{\"FileHeader.Extra\", Field, 0, \"\"},\n\t\t{\"FileHeader.Flags\", Field, 0, \"\"},\n\t\t{\"FileHeader.Method\", Field, 0, \"\"},\n\t\t{\"FileHeader.Modified\", Field, 10, \"\"},\n\t\t{\"FileHeader.ModifiedDate\", Field, 0, \"\"},\n\t\t{\"FileHeader.ModifiedTime\", Field, 0, \"\"},\n\t\t{\"FileHeader.Name\", Field, 0, \"\"},\n\t\t{\"FileHeader.NonUTF8\", Field, 10, \"\"},\n\t\t{\"FileHeader.ReaderVersion\", Field, 0, \"\"},\n\t\t{\"FileHeader.UncompressedSize\", Field, 0, \"\"},\n\t\t{\"FileHeader.UncompressedSize64\", Field, 1, \"\"},\n\t\t{\"FileInfoHeader\", Func, 0, \"func(fi fs.FileInfo) (*FileHeader, error)\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.ReaderAt, size int64) (*Reader, error)\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer) *Writer\"},\n\t\t{\"OpenReader\", Func, 0, \"func(name string) (*ReadCloser, error)\"},\n\t\t{\"ReadCloser\", Type, 0, \"\"},\n\t\t{\"ReadCloser.Reader\", Field, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Reader.Comment\", Field, 0, \"\"},\n\t\t{\"Reader.File\", Field, 0, \"\"},\n\t\t{\"RegisterCompressor\", Func, 2, \"func(method uint16, comp Compressor)\"},\n\t\t{\"RegisterDecompressor\", Func, 2, \"func(method uint16, dcomp Decompressor)\"},\n\t\t{\"Store\", Const, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"bufio\": {\n\t\t{\"(*Reader).Buffered\", Method, 0, \"\"},\n\t\t{\"(*Reader).Discard\", Method, 5, \"\"},\n\t\t{\"(*Reader).Peek\", Method, 0, \"\"},\n\t\t{\"(*Reader).Read\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadByte\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadBytes\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadLine\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadRune\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadSlice\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadString\", Method, 0, \"\"},\n\t\t{\"(*Reader).Reset\", Method, 2, \"\"},\n\t\t{\"(*Reader).Size\", Method, 10, \"\"},\n\t\t{\"(*Reader).UnreadByte\", Method, 0, \"\"},\n\t\t{\"(*Reader).UnreadRune\", Method, 0, \"\"},\n\t\t{\"(*Reader).WriteTo\", Method, 1, \"\"},\n\t\t{\"(*Scanner).Buffer\", Method, 6, \"\"},\n\t\t{\"(*Scanner).Bytes\", Method, 1, \"\"},\n\t\t{\"(*Scanner).Err\", Method, 1, \"\"},\n\t\t{\"(*Scanner).Scan\", Method, 1, \"\"},\n\t\t{\"(*Scanner).Split\", Method, 1, \"\"},\n\t\t{\"(*Scanner).Text\", Method, 1, \"\"},\n\t\t{\"(*Writer).Available\", Method, 0, \"\"},\n\t\t{\"(*Writer).AvailableBuffer\", Method, 18, \"\"},\n\t\t{\"(*Writer).Buffered\", Method, 0, \"\"},\n\t\t{\"(*Writer).Flush\", Method, 0, \"\"},\n\t\t{\"(*Writer).ReadFrom\", Method, 1, \"\"},\n\t\t{\"(*Writer).Reset\", Method, 2, \"\"},\n\t\t{\"(*Writer).Size\", Method, 10, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"(*Writer).WriteByte\", Method, 0, \"\"},\n\t\t{\"(*Writer).WriteRune\", Method, 0, \"\"},\n\t\t{\"(*Writer).WriteString\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).Available\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).AvailableBuffer\", Method, 18, \"\"},\n\t\t{\"(ReadWriter).Discard\", Method, 5, \"\"},\n\t\t{\"(ReadWriter).Flush\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).Peek\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).Read\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).ReadByte\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).ReadBytes\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).ReadFrom\", Method, 1, \"\"},\n\t\t{\"(ReadWriter).ReadLine\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).ReadRune\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).ReadSlice\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).ReadString\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).UnreadByte\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).UnreadRune\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).Write\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).WriteByte\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).WriteRune\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).WriteString\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).WriteTo\", Method, 1, \"\"},\n\t\t{\"ErrAdvanceTooFar\", Var, 1, \"\"},\n\t\t{\"ErrBadReadCount\", Var, 15, \"\"},\n\t\t{\"ErrBufferFull\", Var, 0, \"\"},\n\t\t{\"ErrFinalToken\", Var, 6, \"\"},\n\t\t{\"ErrInvalidUnreadByte\", Var, 0, \"\"},\n\t\t{\"ErrInvalidUnreadRune\", Var, 0, \"\"},\n\t\t{\"ErrNegativeAdvance\", Var, 1, \"\"},\n\t\t{\"ErrNegativeCount\", Var, 0, \"\"},\n\t\t{\"ErrTooLong\", Var, 1, \"\"},\n\t\t{\"MaxScanTokenSize\", Const, 1, \"\"},\n\t\t{\"NewReadWriter\", Func, 0, \"func(r *Reader, w *Writer) *ReadWriter\"},\n\t\t{\"NewReader\", Func, 0, \"func(rd io.Reader) *Reader\"},\n\t\t{\"NewReaderSize\", Func, 0, \"func(rd io.Reader, size int) *Reader\"},\n\t\t{\"NewScanner\", Func, 1, \"func(r io.Reader) *Scanner\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer) *Writer\"},\n\t\t{\"NewWriterSize\", Func, 0, \"func(w io.Writer, size int) *Writer\"},\n\t\t{\"ReadWriter\", Type, 0, \"\"},\n\t\t{\"ReadWriter.Reader\", Field, 0, \"\"},\n\t\t{\"ReadWriter.Writer\", Field, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"ScanBytes\", Func, 1, \"func(data []byte, atEOF bool) (advance int, token []byte, err error)\"},\n\t\t{\"ScanLines\", Func, 1, \"func(data []byte, atEOF bool) (advance int, token []byte, err error)\"},\n\t\t{\"ScanRunes\", Func, 1, \"func(data []byte, atEOF bool) (advance int, token []byte, err error)\"},\n\t\t{\"ScanWords\", Func, 1, \"func(data []byte, atEOF bool) (advance int, token []byte, err error)\"},\n\t\t{\"Scanner\", Type, 1, \"\"},\n\t\t{\"SplitFunc\", Type, 1, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"bytes\": {\n\t\t{\"(*Buffer).Available\", Method, 21, \"\"},\n\t\t{\"(*Buffer).AvailableBuffer\", Method, 21, \"\"},\n\t\t{\"(*Buffer).Bytes\", Method, 0, \"\"},\n\t\t{\"(*Buffer).Cap\", Method, 5, \"\"},\n\t\t{\"(*Buffer).Grow\", Method, 1, \"\"},\n\t\t{\"(*Buffer).Len\", Method, 0, \"\"},\n\t\t{\"(*Buffer).Next\", Method, 0, \"\"},\n\t\t{\"(*Buffer).Peek\", Method, 26, \"\"},\n\t\t{\"(*Buffer).Read\", Method, 0, \"\"},\n\t\t{\"(*Buffer).ReadByte\", Method, 0, \"\"},\n\t\t{\"(*Buffer).ReadBytes\", Method, 0, \"\"},\n\t\t{\"(*Buffer).ReadFrom\", Method, 0, \"\"},\n\t\t{\"(*Buffer).ReadRune\", Method, 0, \"\"},\n\t\t{\"(*Buffer).ReadString\", Method, 0, \"\"},\n\t\t{\"(*Buffer).Reset\", Method, 0, \"\"},\n\t\t{\"(*Buffer).String\", Method, 0, \"\"},\n\t\t{\"(*Buffer).Truncate\", Method, 0, \"\"},\n\t\t{\"(*Buffer).UnreadByte\", Method, 0, \"\"},\n\t\t{\"(*Buffer).UnreadRune\", Method, 0, \"\"},\n\t\t{\"(*Buffer).Write\", Method, 0, \"\"},\n\t\t{\"(*Buffer).WriteByte\", Method, 0, \"\"},\n\t\t{\"(*Buffer).WriteRune\", Method, 0, \"\"},\n\t\t{\"(*Buffer).WriteString\", Method, 0, \"\"},\n\t\t{\"(*Buffer).WriteTo\", Method, 0, \"\"},\n\t\t{\"(*Reader).Len\", Method, 0, \"\"},\n\t\t{\"(*Reader).Read\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadAt\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadByte\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadRune\", Method, 0, \"\"},\n\t\t{\"(*Reader).Reset\", Method, 7, \"\"},\n\t\t{\"(*Reader).Seek\", Method, 0, \"\"},\n\t\t{\"(*Reader).Size\", Method, 5, \"\"},\n\t\t{\"(*Reader).UnreadByte\", Method, 0, \"\"},\n\t\t{\"(*Reader).UnreadRune\", Method, 0, \"\"},\n\t\t{\"(*Reader).WriteTo\", Method, 1, \"\"},\n\t\t{\"Buffer\", Type, 0, \"\"},\n\t\t{\"Clone\", Func, 20, \"func(b []byte) []byte\"},\n\t\t{\"Compare\", Func, 0, \"func(a []byte, b []byte) int\"},\n\t\t{\"Contains\", Func, 0, \"func(b []byte, subslice []byte) bool\"},\n\t\t{\"ContainsAny\", Func, 7, \"func(b []byte, chars string) bool\"},\n\t\t{\"ContainsFunc\", Func, 21, \"func(b []byte, f func(rune) bool) bool\"},\n\t\t{\"ContainsRune\", Func, 7, \"func(b []byte, r rune) bool\"},\n\t\t{\"Count\", Func, 0, \"func(s []byte, sep []byte) int\"},\n\t\t{\"Cut\", Func, 18, \"func(s []byte, sep []byte) (before []byte, after []byte, found bool)\"},\n\t\t{\"CutPrefix\", Func, 20, \"func(s []byte, prefix []byte) (after []byte, found bool)\"},\n\t\t{\"CutSuffix\", Func, 20, \"func(s []byte, suffix []byte) (before []byte, found bool)\"},\n\t\t{\"Equal\", Func, 0, \"func(a []byte, b []byte) bool\"},\n\t\t{\"EqualFold\", Func, 0, \"func(s []byte, t []byte) bool\"},\n\t\t{\"ErrTooLarge\", Var, 0, \"\"},\n\t\t{\"Fields\", Func, 0, \"func(s []byte) [][]byte\"},\n\t\t{\"FieldsFunc\", Func, 0, \"func(s []byte, f func(rune) bool) [][]byte\"},\n\t\t{\"FieldsFuncSeq\", Func, 24, \"func(s []byte, f func(rune) bool) iter.Seq[[]byte]\"},\n\t\t{\"FieldsSeq\", Func, 24, \"func(s []byte) iter.Seq[[]byte]\"},\n\t\t{\"HasPrefix\", Func, 0, \"func(s []byte, prefix []byte) bool\"},\n\t\t{\"HasSuffix\", Func, 0, \"func(s []byte, suffix []byte) bool\"},\n\t\t{\"Index\", Func, 0, \"func(s []byte, sep []byte) int\"},\n\t\t{\"IndexAny\", Func, 0, \"func(s []byte, chars string) int\"},\n\t\t{\"IndexByte\", Func, 0, \"func(b []byte, c byte) int\"},\n\t\t{\"IndexFunc\", Func, 0, \"func(s []byte, f func(r rune) bool) int\"},\n\t\t{\"IndexRune\", Func, 0, \"func(s []byte, r rune) int\"},\n\t\t{\"Join\", Func, 0, \"func(s [][]byte, sep []byte) []byte\"},\n\t\t{\"LastIndex\", Func, 0, \"func(s []byte, sep []byte) int\"},\n\t\t{\"LastIndexAny\", Func, 0, \"func(s []byte, chars string) int\"},\n\t\t{\"LastIndexByte\", Func, 5, \"func(s []byte, c byte) int\"},\n\t\t{\"LastIndexFunc\", Func, 0, \"func(s []byte, f func(r rune) bool) int\"},\n\t\t{\"Lines\", Func, 24, \"func(s []byte) iter.Seq[[]byte]\"},\n\t\t{\"Map\", Func, 0, \"func(mapping func(r rune) rune, s []byte) []byte\"},\n\t\t{\"MinRead\", Const, 0, \"\"},\n\t\t{\"NewBuffer\", Func, 0, \"func(buf []byte) *Buffer\"},\n\t\t{\"NewBufferString\", Func, 0, \"func(s string) *Buffer\"},\n\t\t{\"NewReader\", Func, 0, \"func(b []byte) *Reader\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Repeat\", Func, 0, \"func(b []byte, count int) []byte\"},\n\t\t{\"Replace\", Func, 0, \"func(s []byte, old []byte, new []byte, n int) []byte\"},\n\t\t{\"ReplaceAll\", Func, 12, \"func(s []byte, old []byte, new []byte) []byte\"},\n\t\t{\"Runes\", Func, 0, \"func(s []byte) []rune\"},\n\t\t{\"Split\", Func, 0, \"func(s []byte, sep []byte) [][]byte\"},\n\t\t{\"SplitAfter\", Func, 0, \"func(s []byte, sep []byte) [][]byte\"},\n\t\t{\"SplitAfterN\", Func, 0, \"func(s []byte, sep []byte, n int) [][]byte\"},\n\t\t{\"SplitAfterSeq\", Func, 24, \"func(s []byte, sep []byte) iter.Seq[[]byte]\"},\n\t\t{\"SplitN\", Func, 0, \"func(s []byte, sep []byte, n int) [][]byte\"},\n\t\t{\"SplitSeq\", Func, 24, \"func(s []byte, sep []byte) iter.Seq[[]byte]\"},\n\t\t{\"Title\", Func, 0, \"func(s []byte) []byte\"},\n\t\t{\"ToLower\", Func, 0, \"func(s []byte) []byte\"},\n\t\t{\"ToLowerSpecial\", Func, 0, \"func(c unicode.SpecialCase, s []byte) []byte\"},\n\t\t{\"ToTitle\", Func, 0, \"func(s []byte) []byte\"},\n\t\t{\"ToTitleSpecial\", Func, 0, \"func(c unicode.SpecialCase, s []byte) []byte\"},\n\t\t{\"ToUpper\", Func, 0, \"func(s []byte) []byte\"},\n\t\t{\"ToUpperSpecial\", Func, 0, \"func(c unicode.SpecialCase, s []byte) []byte\"},\n\t\t{\"ToValidUTF8\", Func, 13, \"func(s []byte, replacement []byte) []byte\"},\n\t\t{\"Trim\", Func, 0, \"func(s []byte, cutset string) []byte\"},\n\t\t{\"TrimFunc\", Func, 0, \"func(s []byte, f func(r rune) bool) []byte\"},\n\t\t{\"TrimLeft\", Func, 0, \"func(s []byte, cutset string) []byte\"},\n\t\t{\"TrimLeftFunc\", Func, 0, \"func(s []byte, f func(r rune) bool) []byte\"},\n\t\t{\"TrimPrefix\", Func, 1, \"func(s []byte, prefix []byte) []byte\"},\n\t\t{\"TrimRight\", Func, 0, \"func(s []byte, cutset string) []byte\"},\n\t\t{\"TrimRightFunc\", Func, 0, \"func(s []byte, f func(r rune) bool) []byte\"},\n\t\t{\"TrimSpace\", Func, 0, \"func(s []byte) []byte\"},\n\t\t{\"TrimSuffix\", Func, 1, \"func(s []byte, suffix []byte) []byte\"},\n\t},\n\t\"cmp\": {\n\t\t{\"Compare\", Func, 21, \"func[T Ordered](x T, y T) int\"},\n\t\t{\"Less\", Func, 21, \"func[T Ordered](x T, y T) bool\"},\n\t\t{\"Or\", Func, 22, \"func[T comparable](vals ...T) T\"},\n\t\t{\"Ordered\", Type, 21, \"\"},\n\t},\n\t\"compress/bzip2\": {\n\t\t{\"(StructuralError).Error\", Method, 0, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader) io.Reader\"},\n\t\t{\"StructuralError\", Type, 0, \"\"},\n\t},\n\t\"compress/flate\": {\n\t\t{\"(*ReadError).Error\", Method, 0, \"\"},\n\t\t{\"(*WriteError).Error\", Method, 0, \"\"},\n\t\t{\"(*Writer).Close\", Method, 0, \"\"},\n\t\t{\"(*Writer).Flush\", Method, 0, \"\"},\n\t\t{\"(*Writer).Reset\", Method, 2, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"(CorruptInputError).Error\", Method, 0, \"\"},\n\t\t{\"(InternalError).Error\", Method, 0, \"\"},\n\t\t{\"(Reader).Read\", Method, 0, \"\"},\n\t\t{\"(Reader).ReadByte\", Method, 0, \"\"},\n\t\t{\"(Resetter).Reset\", Method, 4, \"\"},\n\t\t{\"BestCompression\", Const, 0, \"\"},\n\t\t{\"BestSpeed\", Const, 0, \"\"},\n\t\t{\"CorruptInputError\", Type, 0, \"\"},\n\t\t{\"DefaultCompression\", Const, 0, \"\"},\n\t\t{\"HuffmanOnly\", Const, 7, \"\"},\n\t\t{\"InternalError\", Type, 0, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader) io.ReadCloser\"},\n\t\t{\"NewReaderDict\", Func, 0, \"func(r io.Reader, dict []byte) io.ReadCloser\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer, level int) (*Writer, error)\"},\n\t\t{\"NewWriterDict\", Func, 0, \"func(w io.Writer, level int, dict []byte) (*Writer, error)\"},\n\t\t{\"NoCompression\", Const, 0, \"\"},\n\t\t{\"ReadError\", Type, 0, \"\"},\n\t\t{\"ReadError.Err\", Field, 0, \"\"},\n\t\t{\"ReadError.Offset\", Field, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Resetter\", Type, 4, \"\"},\n\t\t{\"WriteError\", Type, 0, \"\"},\n\t\t{\"WriteError.Err\", Field, 0, \"\"},\n\t\t{\"WriteError.Offset\", Field, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"compress/gzip\": {\n\t\t{\"(*Reader).Close\", Method, 0, \"\"},\n\t\t{\"(*Reader).Multistream\", Method, 4, \"\"},\n\t\t{\"(*Reader).Read\", Method, 0, \"\"},\n\t\t{\"(*Reader).Reset\", Method, 3, \"\"},\n\t\t{\"(*Writer).Close\", Method, 0, \"\"},\n\t\t{\"(*Writer).Flush\", Method, 1, \"\"},\n\t\t{\"(*Writer).Reset\", Method, 2, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"BestCompression\", Const, 0, \"\"},\n\t\t{\"BestSpeed\", Const, 0, \"\"},\n\t\t{\"DefaultCompression\", Const, 0, \"\"},\n\t\t{\"ErrChecksum\", Var, 0, \"\"},\n\t\t{\"ErrHeader\", Var, 0, \"\"},\n\t\t{\"Header\", Type, 0, \"\"},\n\t\t{\"Header.Comment\", Field, 0, \"\"},\n\t\t{\"Header.Extra\", Field, 0, \"\"},\n\t\t{\"Header.ModTime\", Field, 0, \"\"},\n\t\t{\"Header.Name\", Field, 0, \"\"},\n\t\t{\"Header.OS\", Field, 0, \"\"},\n\t\t{\"HuffmanOnly\", Const, 8, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader) (*Reader, error)\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer) *Writer\"},\n\t\t{\"NewWriterLevel\", Func, 0, \"func(w io.Writer, level int) (*Writer, error)\"},\n\t\t{\"NoCompression\", Const, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Reader.Header\", Field, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t\t{\"Writer.Header\", Field, 0, \"\"},\n\t},\n\t\"compress/lzw\": {\n\t\t{\"(*Reader).Close\", Method, 17, \"\"},\n\t\t{\"(*Reader).Read\", Method, 17, \"\"},\n\t\t{\"(*Reader).Reset\", Method, 17, \"\"},\n\t\t{\"(*Writer).Close\", Method, 17, \"\"},\n\t\t{\"(*Writer).Reset\", Method, 17, \"\"},\n\t\t{\"(*Writer).Write\", Method, 17, \"\"},\n\t\t{\"LSB\", Const, 0, \"\"},\n\t\t{\"MSB\", Const, 0, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader, order Order, litWidth int) io.ReadCloser\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer, order Order, litWidth int) io.WriteCloser\"},\n\t\t{\"Order\", Type, 0, \"\"},\n\t\t{\"Reader\", Type, 17, \"\"},\n\t\t{\"Writer\", Type, 17, \"\"},\n\t},\n\t\"compress/zlib\": {\n\t\t{\"(*Writer).Close\", Method, 0, \"\"},\n\t\t{\"(*Writer).Flush\", Method, 0, \"\"},\n\t\t{\"(*Writer).Reset\", Method, 2, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"(Resetter).Reset\", Method, 4, \"\"},\n\t\t{\"BestCompression\", Const, 0, \"\"},\n\t\t{\"BestSpeed\", Const, 0, \"\"},\n\t\t{\"DefaultCompression\", Const, 0, \"\"},\n\t\t{\"ErrChecksum\", Var, 0, \"\"},\n\t\t{\"ErrDictionary\", Var, 0, \"\"},\n\t\t{\"ErrHeader\", Var, 0, \"\"},\n\t\t{\"HuffmanOnly\", Const, 8, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader) (io.ReadCloser, error)\"},\n\t\t{\"NewReaderDict\", Func, 0, \"func(r io.Reader, dict []byte) (io.ReadCloser, error)\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer) *Writer\"},\n\t\t{\"NewWriterLevel\", Func, 0, \"func(w io.Writer, level int) (*Writer, error)\"},\n\t\t{\"NewWriterLevelDict\", Func, 0, \"func(w io.Writer, level int, dict []byte) (*Writer, error)\"},\n\t\t{\"NoCompression\", Const, 0, \"\"},\n\t\t{\"Resetter\", Type, 4, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"container/heap\": {\n\t\t{\"(Interface).Len\", Method, 0, \"\"},\n\t\t{\"(Interface).Less\", Method, 0, \"\"},\n\t\t{\"(Interface).Pop\", Method, 0, \"\"},\n\t\t{\"(Interface).Push\", Method, 0, \"\"},\n\t\t{\"(Interface).Swap\", Method, 0, \"\"},\n\t\t{\"Fix\", Func, 2, \"func(h Interface, i int)\"},\n\t\t{\"Init\", Func, 0, \"func(h Interface)\"},\n\t\t{\"Interface\", Type, 0, \"\"},\n\t\t{\"Pop\", Func, 0, \"func(h Interface) any\"},\n\t\t{\"Push\", Func, 0, \"func(h Interface, x any)\"},\n\t\t{\"Remove\", Func, 0, \"func(h Interface, i int) any\"},\n\t},\n\t\"container/list\": {\n\t\t{\"(*Element).Next\", Method, 0, \"\"},\n\t\t{\"(*Element).Prev\", Method, 0, \"\"},\n\t\t{\"(*List).Back\", Method, 0, \"\"},\n\t\t{\"(*List).Front\", Method, 0, \"\"},\n\t\t{\"(*List).Init\", Method, 0, \"\"},\n\t\t{\"(*List).InsertAfter\", Method, 0, \"\"},\n\t\t{\"(*List).InsertBefore\", Method, 0, \"\"},\n\t\t{\"(*List).Len\", Method, 0, \"\"},\n\t\t{\"(*List).MoveAfter\", Method, 2, \"\"},\n\t\t{\"(*List).MoveBefore\", Method, 2, \"\"},\n\t\t{\"(*List).MoveToBack\", Method, 0, \"\"},\n\t\t{\"(*List).MoveToFront\", Method, 0, \"\"},\n\t\t{\"(*List).PushBack\", Method, 0, \"\"},\n\t\t{\"(*List).PushBackList\", Method, 0, \"\"},\n\t\t{\"(*List).PushFront\", Method, 0, \"\"},\n\t\t{\"(*List).PushFrontList\", Method, 0, \"\"},\n\t\t{\"(*List).Remove\", Method, 0, \"\"},\n\t\t{\"Element\", Type, 0, \"\"},\n\t\t{\"Element.Value\", Field, 0, \"\"},\n\t\t{\"List\", Type, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func() *List\"},\n\t},\n\t\"container/ring\": {\n\t\t{\"(*Ring).Do\", Method, 0, \"\"},\n\t\t{\"(*Ring).Len\", Method, 0, \"\"},\n\t\t{\"(*Ring).Link\", Method, 0, \"\"},\n\t\t{\"(*Ring).Move\", Method, 0, \"\"},\n\t\t{\"(*Ring).Next\", Method, 0, \"\"},\n\t\t{\"(*Ring).Prev\", Method, 0, \"\"},\n\t\t{\"(*Ring).Unlink\", Method, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func(n int) *Ring\"},\n\t\t{\"Ring\", Type, 0, \"\"},\n\t\t{\"Ring.Value\", Field, 0, \"\"},\n\t},\n\t\"context\": {\n\t\t{\"(Context).Deadline\", Method, 7, \"\"},\n\t\t{\"(Context).Done\", Method, 7, \"\"},\n\t\t{\"(Context).Err\", Method, 7, \"\"},\n\t\t{\"(Context).Value\", Method, 7, \"\"},\n\t\t{\"AfterFunc\", Func, 21, \"func(ctx Context, f func()) (stop func() bool)\"},\n\t\t{\"Background\", Func, 7, \"func() Context\"},\n\t\t{\"CancelCauseFunc\", Type, 20, \"\"},\n\t\t{\"CancelFunc\", Type, 7, \"\"},\n\t\t{\"Canceled\", Var, 7, \"\"},\n\t\t{\"Cause\", Func, 20, \"func(c Context) error\"},\n\t\t{\"Context\", Type, 7, \"\"},\n\t\t{\"DeadlineExceeded\", Var, 7, \"\"},\n\t\t{\"TODO\", Func, 7, \"func() Context\"},\n\t\t{\"WithCancel\", Func, 7, \"func(parent Context) (ctx Context, cancel CancelFunc)\"},\n\t\t{\"WithCancelCause\", Func, 20, \"func(parent Context) (ctx Context, cancel CancelCauseFunc)\"},\n\t\t{\"WithDeadline\", Func, 7, \"func(parent Context, d time.Time) (Context, CancelFunc)\"},\n\t\t{\"WithDeadlineCause\", Func, 21, \"func(parent Context, d time.Time, cause error) (Context, CancelFunc)\"},\n\t\t{\"WithTimeout\", Func, 7, \"func(parent Context, timeout time.Duration) (Context, CancelFunc)\"},\n\t\t{\"WithTimeoutCause\", Func, 21, \"func(parent Context, timeout time.Duration, cause error) (Context, CancelFunc)\"},\n\t\t{\"WithValue\", Func, 7, \"func(parent Context, key any, val any) Context\"},\n\t\t{\"WithoutCancel\", Func, 21, \"func(parent Context) Context\"},\n\t},\n\t\"crypto\": {\n\t\t{\"(Decapsulator).Decapsulate\", Method, 26, \"\"},\n\t\t{\"(Decapsulator).Encapsulator\", Method, 26, \"\"},\n\t\t{\"(Decrypter).Decrypt\", Method, 5, \"\"},\n\t\t{\"(Decrypter).Public\", Method, 5, \"\"},\n\t\t{\"(Encapsulator).Bytes\", Method, 26, \"\"},\n\t\t{\"(Encapsulator).Encapsulate\", Method, 26, \"\"},\n\t\t{\"(Hash).Available\", Method, 0, \"\"},\n\t\t{\"(Hash).HashFunc\", Method, 4, \"\"},\n\t\t{\"(Hash).New\", Method, 0, \"\"},\n\t\t{\"(Hash).Size\", Method, 0, \"\"},\n\t\t{\"(Hash).String\", Method, 15, \"\"},\n\t\t{\"(MessageSigner).Public\", Method, 25, \"\"},\n\t\t{\"(MessageSigner).Sign\", Method, 25, \"\"},\n\t\t{\"(MessageSigner).SignMessage\", Method, 25, \"\"},\n\t\t{\"(Signer).Public\", Method, 4, \"\"},\n\t\t{\"(Signer).Sign\", Method, 4, \"\"},\n\t\t{\"(SignerOpts).HashFunc\", Method, 4, \"\"},\n\t\t{\"BLAKE2b_256\", Const, 9, \"\"},\n\t\t{\"BLAKE2b_384\", Const, 9, \"\"},\n\t\t{\"BLAKE2b_512\", Const, 9, \"\"},\n\t\t{\"BLAKE2s_256\", Const, 9, \"\"},\n\t\t{\"Decapsulator\", Type, 26, \"\"},\n\t\t{\"Decrypter\", Type, 5, \"\"},\n\t\t{\"DecrypterOpts\", Type, 5, \"\"},\n\t\t{\"Encapsulator\", Type, 26, \"\"},\n\t\t{\"Hash\", Type, 0, \"\"},\n\t\t{\"MD4\", Const, 0, \"\"},\n\t\t{\"MD5\", Const, 0, \"\"},\n\t\t{\"MD5SHA1\", Const, 0, \"\"},\n\t\t{\"MessageSigner\", Type, 25, \"\"},\n\t\t{\"PrivateKey\", Type, 0, \"\"},\n\t\t{\"PublicKey\", Type, 2, \"\"},\n\t\t{\"RIPEMD160\", Const, 0, \"\"},\n\t\t{\"RegisterHash\", Func, 0, \"func(h Hash, f func() hash.Hash)\"},\n\t\t{\"SHA1\", Const, 0, \"\"},\n\t\t{\"SHA224\", Const, 0, \"\"},\n\t\t{\"SHA256\", Const, 0, \"\"},\n\t\t{\"SHA384\", Const, 0, \"\"},\n\t\t{\"SHA3_224\", Const, 4, \"\"},\n\t\t{\"SHA3_256\", Const, 4, \"\"},\n\t\t{\"SHA3_384\", Const, 4, \"\"},\n\t\t{\"SHA3_512\", Const, 4, \"\"},\n\t\t{\"SHA512\", Const, 0, \"\"},\n\t\t{\"SHA512_224\", Const, 5, \"\"},\n\t\t{\"SHA512_256\", Const, 5, \"\"},\n\t\t{\"SignMessage\", Func, 25, \"func(signer Signer, rand io.Reader, msg []byte, opts SignerOpts) (signature []byte, err error)\"},\n\t\t{\"Signer\", Type, 4, \"\"},\n\t\t{\"SignerOpts\", Type, 4, \"\"},\n\t},\n\t\"crypto/aes\": {\n\t\t{\"(KeySizeError).Error\", Method, 0, \"\"},\n\t\t{\"BlockSize\", Const, 0, \"\"},\n\t\t{\"KeySizeError\", Type, 0, \"\"},\n\t\t{\"NewCipher\", Func, 0, \"func(key []byte) (cipher.Block, error)\"},\n\t},\n\t\"crypto/cipher\": {\n\t\t{\"(AEAD).NonceSize\", Method, 2, \"\"},\n\t\t{\"(AEAD).Open\", Method, 2, \"\"},\n\t\t{\"(AEAD).Overhead\", Method, 2, \"\"},\n\t\t{\"(AEAD).Seal\", Method, 2, \"\"},\n\t\t{\"(Block).BlockSize\", Method, 0, \"\"},\n\t\t{\"(Block).Decrypt\", Method, 0, \"\"},\n\t\t{\"(Block).Encrypt\", Method, 0, \"\"},\n\t\t{\"(BlockMode).BlockSize\", Method, 0, \"\"},\n\t\t{\"(BlockMode).CryptBlocks\", Method, 0, \"\"},\n\t\t{\"(Stream).XORKeyStream\", Method, 0, \"\"},\n\t\t{\"(StreamReader).Read\", Method, 0, \"\"},\n\t\t{\"(StreamWriter).Close\", Method, 0, \"\"},\n\t\t{\"(StreamWriter).Write\", Method, 0, \"\"},\n\t\t{\"AEAD\", Type, 2, \"\"},\n\t\t{\"Block\", Type, 0, \"\"},\n\t\t{\"BlockMode\", Type, 0, \"\"},\n\t\t{\"NewCBCDecrypter\", Func, 0, \"func(b Block, iv []byte) BlockMode\"},\n\t\t{\"NewCBCEncrypter\", Func, 0, \"func(b Block, iv []byte) BlockMode\"},\n\t\t{\"NewCFBDecrypter\", Func, 0, \"func(block Block, iv []byte) Stream\"},\n\t\t{\"NewCFBEncrypter\", Func, 0, \"func(block Block, iv []byte) Stream\"},\n\t\t{\"NewCTR\", Func, 0, \"func(block Block, iv []byte) Stream\"},\n\t\t{\"NewGCM\", Func, 2, \"func(cipher Block) (AEAD, error)\"},\n\t\t{\"NewGCMWithNonceSize\", Func, 5, \"func(cipher Block, size int) (AEAD, error)\"},\n\t\t{\"NewGCMWithRandomNonce\", Func, 24, \"func(cipher Block) (AEAD, error)\"},\n\t\t{\"NewGCMWithTagSize\", Func, 11, \"func(cipher Block, tagSize int) (AEAD, error)\"},\n\t\t{\"NewOFB\", Func, 0, \"func(b Block, iv []byte) Stream\"},\n\t\t{\"Stream\", Type, 0, \"\"},\n\t\t{\"StreamReader\", Type, 0, \"\"},\n\t\t{\"StreamReader.R\", Field, 0, \"\"},\n\t\t{\"StreamReader.S\", Field, 0, \"\"},\n\t\t{\"StreamWriter\", Type, 0, \"\"},\n\t\t{\"StreamWriter.Err\", Field, 0, \"\"},\n\t\t{\"StreamWriter.S\", Field, 0, \"\"},\n\t\t{\"StreamWriter.W\", Field, 0, \"\"},\n\t},\n\t\"crypto/des\": {\n\t\t{\"(KeySizeError).Error\", Method, 0, \"\"},\n\t\t{\"BlockSize\", Const, 0, \"\"},\n\t\t{\"KeySizeError\", Type, 0, \"\"},\n\t\t{\"NewCipher\", Func, 0, \"func(key []byte) (cipher.Block, error)\"},\n\t\t{\"NewTripleDESCipher\", Func, 0, \"func(key []byte) (cipher.Block, error)\"},\n\t},\n\t\"crypto/dsa\": {\n\t\t{\"ErrInvalidPublicKey\", Var, 0, \"\"},\n\t\t{\"GenerateKey\", Func, 0, \"func(priv *PrivateKey, rand io.Reader) error\"},\n\t\t{\"GenerateParameters\", Func, 0, \"func(params *Parameters, rand io.Reader, sizes ParameterSizes) error\"},\n\t\t{\"L1024N160\", Const, 0, \"\"},\n\t\t{\"L2048N224\", Const, 0, \"\"},\n\t\t{\"L2048N256\", Const, 0, \"\"},\n\t\t{\"L3072N256\", Const, 0, \"\"},\n\t\t{\"ParameterSizes\", Type, 0, \"\"},\n\t\t{\"Parameters\", Type, 0, \"\"},\n\t\t{\"Parameters.G\", Field, 0, \"\"},\n\t\t{\"Parameters.P\", Field, 0, \"\"},\n\t\t{\"Parameters.Q\", Field, 0, \"\"},\n\t\t{\"PrivateKey\", Type, 0, \"\"},\n\t\t{\"PrivateKey.PublicKey\", Field, 0, \"\"},\n\t\t{\"PrivateKey.X\", Field, 0, \"\"},\n\t\t{\"PublicKey\", Type, 0, \"\"},\n\t\t{\"PublicKey.Parameters\", Field, 0, \"\"},\n\t\t{\"PublicKey.Y\", Field, 0, \"\"},\n\t\t{\"Sign\", Func, 0, \"func(random io.Reader, priv *PrivateKey, hash []byte) (r *big.Int, s *big.Int, err error)\"},\n\t\t{\"Verify\", Func, 0, \"func(pub *PublicKey, hash []byte, r *big.Int, s *big.Int) bool\"},\n\t},\n\t\"crypto/ecdh\": {\n\t\t{\"(*PrivateKey).Bytes\", Method, 20, \"\"},\n\t\t{\"(*PrivateKey).Curve\", Method, 20, \"\"},\n\t\t{\"(*PrivateKey).ECDH\", Method, 20, \"\"},\n\t\t{\"(*PrivateKey).Equal\", Method, 20, \"\"},\n\t\t{\"(*PrivateKey).Public\", Method, 20, \"\"},\n\t\t{\"(*PrivateKey).PublicKey\", Method, 20, \"\"},\n\t\t{\"(*PublicKey).Bytes\", Method, 20, \"\"},\n\t\t{\"(*PublicKey).Curve\", Method, 20, \"\"},\n\t\t{\"(*PublicKey).Equal\", Method, 20, \"\"},\n\t\t{\"(Curve).GenerateKey\", Method, 20, \"\"},\n\t\t{\"(Curve).NewPrivateKey\", Method, 20, \"\"},\n\t\t{\"(Curve).NewPublicKey\", Method, 20, \"\"},\n\t\t{\"(KeyExchanger).Curve\", Method, 26, \"\"},\n\t\t{\"(KeyExchanger).ECDH\", Method, 26, \"\"},\n\t\t{\"(KeyExchanger).PublicKey\", Method, 26, \"\"},\n\t\t{\"KeyExchanger\", Type, 26, \"\"},\n\t\t{\"P256\", Func, 20, \"func() Curve\"},\n\t\t{\"P384\", Func, 20, \"func() Curve\"},\n\t\t{\"P521\", Func, 20, \"func() Curve\"},\n\t\t{\"PrivateKey\", Type, 20, \"\"},\n\t\t{\"PublicKey\", Type, 20, \"\"},\n\t\t{\"X25519\", Func, 20, \"func() Curve\"},\n\t},\n\t\"crypto/ecdsa\": {\n\t\t{\"(*PrivateKey).Bytes\", Method, 25, \"\"},\n\t\t{\"(*PrivateKey).ECDH\", Method, 20, \"\"},\n\t\t{\"(*PrivateKey).Equal\", Method, 15, \"\"},\n\t\t{\"(*PrivateKey).Public\", Method, 4, \"\"},\n\t\t{\"(*PrivateKey).Sign\", Method, 4, \"\"},\n\t\t{\"(*PublicKey).Bytes\", Method, 25, \"\"},\n\t\t{\"(*PublicKey).ECDH\", Method, 20, \"\"},\n\t\t{\"(*PublicKey).Equal\", Method, 15, \"\"},\n\t\t{\"(PrivateKey).Add\", Method, 0, \"\"},\n\t\t{\"(PrivateKey).Double\", Method, 0, \"\"},\n\t\t{\"(PrivateKey).IsOnCurve\", Method, 0, \"\"},\n\t\t{\"(PrivateKey).Params\", Method, 0, \"\"},\n\t\t{\"(PrivateKey).ScalarBaseMult\", Method, 0, \"\"},\n\t\t{\"(PrivateKey).ScalarMult\", Method, 0, \"\"},\n\t\t{\"(PublicKey).Add\", Method, 0, \"\"},\n\t\t{\"(PublicKey).Double\", Method, 0, \"\"},\n\t\t{\"(PublicKey).IsOnCurve\", Method, 0, \"\"},\n\t\t{\"(PublicKey).Params\", Method, 0, \"\"},\n\t\t{\"(PublicKey).ScalarBaseMult\", Method, 0, \"\"},\n\t\t{\"(PublicKey).ScalarMult\", Method, 0, \"\"},\n\t\t{\"GenerateKey\", Func, 0, \"func(c elliptic.Curve, r io.Reader) (*PrivateKey, error)\"},\n\t\t{\"ParseRawPrivateKey\", Func, 25, \"func(curve elliptic.Curve, data []byte) (*PrivateKey, error)\"},\n\t\t{\"ParseUncompressedPublicKey\", Func, 25, \"func(curve elliptic.Curve, data []byte) (*PublicKey, error)\"},\n\t\t{\"PrivateKey\", Type, 0, \"\"},\n\t\t{\"PrivateKey.D\", Field, 0, \"\"},\n\t\t{\"PrivateKey.PublicKey\", Field, 0, \"\"},\n\t\t{\"PublicKey\", Type, 0, \"\"},\n\t\t{\"PublicKey.Curve\", Field, 0, \"\"},\n\t\t{\"PublicKey.X\", Field, 0, \"\"},\n\t\t{\"PublicKey.Y\", Field, 0, \"\"},\n\t\t{\"Sign\", Func, 0, \"func(rand io.Reader, priv *PrivateKey, hash []byte) (r *big.Int, s *big.Int, err error)\"},\n\t\t{\"SignASN1\", Func, 15, \"func(r io.Reader, priv *PrivateKey, hash []byte) ([]byte, error)\"},\n\t\t{\"Verify\", Func, 0, \"func(pub *PublicKey, hash []byte, r *big.Int, s *big.Int) bool\"},\n\t\t{\"VerifyASN1\", Func, 15, \"func(pub *PublicKey, hash []byte, sig []byte) bool\"},\n\t},\n\t\"crypto/ed25519\": {\n\t\t{\"(*Options).HashFunc\", Method, 20, \"\"},\n\t\t{\"(PrivateKey).Equal\", Method, 15, \"\"},\n\t\t{\"(PrivateKey).Public\", Method, 13, \"\"},\n\t\t{\"(PrivateKey).Seed\", Method, 13, \"\"},\n\t\t{\"(PrivateKey).Sign\", Method, 13, \"\"},\n\t\t{\"(PublicKey).Equal\", Method, 15, \"\"},\n\t\t{\"GenerateKey\", Func, 13, \"func(random io.Reader) (PublicKey, PrivateKey, error)\"},\n\t\t{\"NewKeyFromSeed\", Func, 13, \"func(seed []byte) PrivateKey\"},\n\t\t{\"Options\", Type, 20, \"\"},\n\t\t{\"Options.Context\", Field, 20, \"\"},\n\t\t{\"Options.Hash\", Field, 20, \"\"},\n\t\t{\"PrivateKey\", Type, 13, \"\"},\n\t\t{\"PrivateKeySize\", Const, 13, \"\"},\n\t\t{\"PublicKey\", Type, 13, \"\"},\n\t\t{\"PublicKeySize\", Const, 13, \"\"},\n\t\t{\"SeedSize\", Const, 13, \"\"},\n\t\t{\"Sign\", Func, 13, \"func(privateKey PrivateKey, message []byte) []byte\"},\n\t\t{\"SignatureSize\", Const, 13, \"\"},\n\t\t{\"Verify\", Func, 13, \"func(publicKey PublicKey, message []byte, sig []byte) bool\"},\n\t\t{\"VerifyWithOptions\", Func, 20, \"func(publicKey PublicKey, message []byte, sig []byte, opts *Options) error\"},\n\t},\n\t\"crypto/elliptic\": {\n\t\t{\"(*CurveParams).Add\", Method, 0, \"\"},\n\t\t{\"(*CurveParams).Double\", Method, 0, \"\"},\n\t\t{\"(*CurveParams).IsOnCurve\", Method, 0, \"\"},\n\t\t{\"(*CurveParams).Params\", Method, 0, \"\"},\n\t\t{\"(*CurveParams).ScalarBaseMult\", Method, 0, \"\"},\n\t\t{\"(*CurveParams).ScalarMult\", Method, 0, \"\"},\n\t\t{\"(Curve).Add\", Method, 0, \"\"},\n\t\t{\"(Curve).Double\", Method, 0, \"\"},\n\t\t{\"(Curve).IsOnCurve\", Method, 0, \"\"},\n\t\t{\"(Curve).Params\", Method, 0, \"\"},\n\t\t{\"(Curve).ScalarBaseMult\", Method, 0, \"\"},\n\t\t{\"(Curve).ScalarMult\", Method, 0, \"\"},\n\t\t{\"Curve\", Type, 0, \"\"},\n\t\t{\"CurveParams\", Type, 0, \"\"},\n\t\t{\"CurveParams.B\", Field, 0, \"\"},\n\t\t{\"CurveParams.BitSize\", Field, 0, \"\"},\n\t\t{\"CurveParams.Gx\", Field, 0, \"\"},\n\t\t{\"CurveParams.Gy\", Field, 0, \"\"},\n\t\t{\"CurveParams.N\", Field, 0, \"\"},\n\t\t{\"CurveParams.Name\", Field, 5, \"\"},\n\t\t{\"CurveParams.P\", Field, 0, \"\"},\n\t\t{\"GenerateKey\", Func, 0, \"func(curve Curve, rand io.Reader) (priv []byte, x *big.Int, y *big.Int, err error)\"},\n\t\t{\"Marshal\", Func, 0, \"func(curve Curve, x *big.Int, y *big.Int) []byte\"},\n\t\t{\"MarshalCompressed\", Func, 15, \"func(curve Curve, x *big.Int, y *big.Int) []byte\"},\n\t\t{\"P224\", Func, 0, \"func() Curve\"},\n\t\t{\"P256\", Func, 0, \"func() Curve\"},\n\t\t{\"P384\", Func, 0, \"func() Curve\"},\n\t\t{\"P521\", Func, 0, \"func() Curve\"},\n\t\t{\"Unmarshal\", Func, 0, \"func(curve Curve, data []byte) (x *big.Int, y *big.Int)\"},\n\t\t{\"UnmarshalCompressed\", Func, 15, \"func(curve Curve, data []byte) (x *big.Int, y *big.Int)\"},\n\t},\n\t\"crypto/fips140\": {\n\t\t{\"Enabled\", Func, 24, \"func() bool\"},\n\t\t{\"Enforced\", Func, 26, \"func() bool\"},\n\t\t{\"Version\", Func, 26, \"func() string\"},\n\t\t{\"WithoutEnforcement\", Func, 26, \"func(f func())\"},\n\t},\n\t\"crypto/hkdf\": {\n\t\t{\"Expand\", Func, 24, \"func[H hash.Hash](h func() H, pseudorandomKey []byte, info string, keyLength int) ([]byte, error)\"},\n\t\t{\"Extract\", Func, 24, \"func[H hash.Hash](h func() H, secret []byte, salt []byte) ([]byte, error)\"},\n\t\t{\"Key\", Func, 24, \"func[Hash hash.Hash](h func() Hash, secret []byte, salt []byte, info string, keyLength int) ([]byte, error)\"},\n\t},\n\t\"crypto/hmac\": {\n\t\t{\"Equal\", Func, 1, \"func(mac1 []byte, mac2 []byte) bool\"},\n\t\t{\"New\", Func, 0, \"func(h func() hash.Hash, key []byte) hash.Hash\"},\n\t},\n\t\"crypto/hpke\": {\n\t\t{\"(*Recipient).Export\", Method, 26, \"\"},\n\t\t{\"(*Recipient).Open\", Method, 26, \"\"},\n\t\t{\"(*Sender).Export\", Method, 26, \"\"},\n\t\t{\"(*Sender).Seal\", Method, 26, \"\"},\n\t\t{\"(AEAD).ID\", Method, 26, \"\"},\n\t\t{\"(KDF).ID\", Method, 26, \"\"},\n\t\t{\"(KEM).DeriveKeyPair\", Method, 26, \"\"},\n\t\t{\"(KEM).GenerateKey\", Method, 26, \"\"},\n\t\t{\"(KEM).ID\", Method, 26, \"\"},\n\t\t{\"(KEM).NewPrivateKey\", Method, 26, \"\"},\n\t\t{\"(KEM).NewPublicKey\", Method, 26, \"\"},\n\t\t{\"(PrivateKey).Bytes\", Method, 26, \"\"},\n\t\t{\"(PrivateKey).KEM\", Method, 26, \"\"},\n\t\t{\"(PrivateKey).PublicKey\", Method, 26, \"\"},\n\t\t{\"(PublicKey).Bytes\", Method, 26, \"\"},\n\t\t{\"(PublicKey).KEM\", Method, 26, \"\"},\n\t\t{\"AES128GCM\", Func, 26, \"func() AEAD\"},\n\t\t{\"AES256GCM\", Func, 26, \"func() AEAD\"},\n\t\t{\"ChaCha20Poly1305\", Func, 26, \"func() AEAD\"},\n\t\t{\"DHKEM\", Func, 26, \"func(curve ecdh.Curve) KEM\"},\n\t\t{\"ExportOnly\", Func, 26, \"func() AEAD\"},\n\t\t{\"HKDFSHA256\", Func, 26, \"func() KDF\"},\n\t\t{\"HKDFSHA384\", Func, 26, \"func() KDF\"},\n\t\t{\"HKDFSHA512\", Func, 26, \"func() KDF\"},\n\t\t{\"MLKEM1024\", Func, 26, \"func() KEM\"},\n\t\t{\"MLKEM1024P384\", Func, 26, \"func() KEM\"},\n\t\t{\"MLKEM768\", Func, 26, \"func() KEM\"},\n\t\t{\"MLKEM768P256\", Func, 26, \"func() KEM\"},\n\t\t{\"MLKEM768X25519\", Func, 26, \"func() KEM\"},\n\t\t{\"NewAEAD\", Func, 26, \"func(id uint16) (AEAD, error)\"},\n\t\t{\"NewDHKEMPrivateKey\", Func, 26, \"func(priv ecdh.KeyExchanger) (PrivateKey, error)\"},\n\t\t{\"NewDHKEMPublicKey\", Func, 26, \"func(pub *ecdh.PublicKey) (PublicKey, error)\"},\n\t\t{\"NewHybridPrivateKey\", Func, 26, \"func(pq crypto.Decapsulator, t ecdh.KeyExchanger) (PrivateKey, error)\"},\n\t\t{\"NewHybridPublicKey\", Func, 26, \"func(pq crypto.Encapsulator, t *ecdh.PublicKey) (PublicKey, error)\"},\n\t\t{\"NewKDF\", Func, 26, \"func(id uint16) (KDF, error)\"},\n\t\t{\"NewKEM\", Func, 26, \"func(id uint16) (KEM, error)\"},\n\t\t{\"NewMLKEMPrivateKey\", Func, 26, \"func(priv crypto.Decapsulator) (PrivateKey, error)\"},\n\t\t{\"NewMLKEMPublicKey\", Func, 26, \"func(pub crypto.Encapsulator) (PublicKey, error)\"},\n\t\t{\"NewRecipient\", Func, 26, \"func(enc []byte, k PrivateKey, kdf KDF, aead AEAD, info []byte) (*Recipient, error)\"},\n\t\t{\"NewSender\", Func, 26, \"func(pk PublicKey, kdf KDF, aead AEAD, info []byte) (enc []byte, s *Sender, err error)\"},\n\t\t{\"Open\", Func, 26, \"func(k PrivateKey, kdf KDF, aead AEAD, info []byte, ciphertext []byte) ([]byte, error)\"},\n\t\t{\"Recipient\", Type, 26, \"\"},\n\t\t{\"SHAKE128\", Func, 26, \"func() KDF\"},\n\t\t{\"SHAKE256\", Func, 26, \"func() KDF\"},\n\t\t{\"Seal\", Func, 26, \"func(pk PublicKey, kdf KDF, aead AEAD, info []byte, plaintext []byte) ([]byte, error)\"},\n\t\t{\"Sender\", Type, 26, \"\"},\n\t},\n\t\"crypto/md5\": {\n\t\t{\"BlockSize\", Const, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func() hash.Hash\"},\n\t\t{\"Size\", Const, 0, \"\"},\n\t\t{\"Sum\", Func, 2, \"func(data []byte) [16]byte\"},\n\t},\n\t\"crypto/mlkem\": {\n\t\t{\"(*DecapsulationKey1024).Bytes\", Method, 24, \"\"},\n\t\t{\"(*DecapsulationKey1024).Decapsulate\", Method, 24, \"\"},\n\t\t{\"(*DecapsulationKey1024).EncapsulationKey\", Method, 24, \"\"},\n\t\t{\"(*DecapsulationKey1024).Encapsulator\", Method, 26, \"\"},\n\t\t{\"(*DecapsulationKey768).Bytes\", Method, 24, \"\"},\n\t\t{\"(*DecapsulationKey768).Decapsulate\", Method, 24, \"\"},\n\t\t{\"(*DecapsulationKey768).EncapsulationKey\", Method, 24, \"\"},\n\t\t{\"(*DecapsulationKey768).Encapsulator\", Method, 26, \"\"},\n\t\t{\"(*EncapsulationKey1024).Bytes\", Method, 24, \"\"},\n\t\t{\"(*EncapsulationKey1024).Encapsulate\", Method, 24, \"\"},\n\t\t{\"(*EncapsulationKey768).Bytes\", Method, 24, \"\"},\n\t\t{\"(*EncapsulationKey768).Encapsulate\", Method, 24, \"\"},\n\t\t{\"CiphertextSize1024\", Const, 24, \"\"},\n\t\t{\"CiphertextSize768\", Const, 24, \"\"},\n\t\t{\"DecapsulationKey1024\", Type, 24, \"\"},\n\t\t{\"DecapsulationKey768\", Type, 24, \"\"},\n\t\t{\"EncapsulationKey1024\", Type, 24, \"\"},\n\t\t{\"EncapsulationKey768\", Type, 24, \"\"},\n\t\t{\"EncapsulationKeySize1024\", Const, 24, \"\"},\n\t\t{\"EncapsulationKeySize768\", Const, 24, \"\"},\n\t\t{\"GenerateKey1024\", Func, 24, \"func() (*DecapsulationKey1024, error)\"},\n\t\t{\"GenerateKey768\", Func, 24, \"func() (*DecapsulationKey768, error)\"},\n\t\t{\"NewDecapsulationKey1024\", Func, 24, \"func(seed []byte) (*DecapsulationKey1024, error)\"},\n\t\t{\"NewDecapsulationKey768\", Func, 24, \"func(seed []byte) (*DecapsulationKey768, error)\"},\n\t\t{\"NewEncapsulationKey1024\", Func, 24, \"func(encapsulationKey []byte) (*EncapsulationKey1024, error)\"},\n\t\t{\"NewEncapsulationKey768\", Func, 24, \"func(encapsulationKey []byte) (*EncapsulationKey768, error)\"},\n\t\t{\"SeedSize\", Const, 24, \"\"},\n\t\t{\"SharedKeySize\", Const, 24, \"\"},\n\t},\n\t\"crypto/mlkem/mlkemtest\": {\n\t\t{\"Encapsulate1024\", Func, 26, \"func(ek *mlkem.EncapsulationKey1024, random []byte) (sharedKey []byte, ciphertext []byte, err error)\"},\n\t\t{\"Encapsulate768\", Func, 26, \"func(ek *mlkem.EncapsulationKey768, random []byte) (sharedKey []byte, ciphertext []byte, err error)\"},\n\t},\n\t\"crypto/pbkdf2\": {\n\t\t{\"Key\", Func, 24, \"func[Hash hash.Hash](h func() Hash, password string, salt []byte, iter int, keyLength int) ([]byte, error)\"},\n\t},\n\t\"crypto/rand\": {\n\t\t{\"Int\", Func, 0, \"func(rand io.Reader, max *big.Int) (n *big.Int, err error)\"},\n\t\t{\"Prime\", Func, 0, \"func(r io.Reader, bits int) (*big.Int, error)\"},\n\t\t{\"Read\", Func, 0, \"func(b []byte) (n int, err error)\"},\n\t\t{\"Reader\", Var, 0, \"\"},\n\t\t{\"Text\", Func, 24, \"func() string\"},\n\t},\n\t\"crypto/rc4\": {\n\t\t{\"(*Cipher).Reset\", Method, 0, \"\"},\n\t\t{\"(*Cipher).XORKeyStream\", Method, 0, \"\"},\n\t\t{\"(KeySizeError).Error\", Method, 0, \"\"},\n\t\t{\"Cipher\", Type, 0, \"\"},\n\t\t{\"KeySizeError\", Type, 0, \"\"},\n\t\t{\"NewCipher\", Func, 0, \"func(key []byte) (*Cipher, error)\"},\n\t},\n\t\"crypto/rsa\": {\n\t\t{\"(*PSSOptions).HashFunc\", Method, 4, \"\"},\n\t\t{\"(*PrivateKey).Decrypt\", Method, 5, \"\"},\n\t\t{\"(*PrivateKey).Equal\", Method, 15, \"\"},\n\t\t{\"(*PrivateKey).Precompute\", Method, 0, \"\"},\n\t\t{\"(*PrivateKey).Public\", Method, 4, \"\"},\n\t\t{\"(*PrivateKey).Sign\", Method, 4, \"\"},\n\t\t{\"(*PrivateKey).Size\", Method, 11, \"\"},\n\t\t{\"(*PrivateKey).Validate\", Method, 0, \"\"},\n\t\t{\"(*PublicKey).Equal\", Method, 15, \"\"},\n\t\t{\"(*PublicKey).Size\", Method, 11, \"\"},\n\t\t{\"CRTValue\", Type, 0, \"\"},\n\t\t{\"CRTValue.Coeff\", Field, 0, \"\"},\n\t\t{\"CRTValue.Exp\", Field, 0, \"\"},\n\t\t{\"CRTValue.R\", Field, 0, \"\"},\n\t\t{\"DecryptOAEP\", Func, 0, \"func(hash hash.Hash, random io.Reader, priv *PrivateKey, ciphertext []byte, label []byte) ([]byte, error)\"},\n\t\t{\"DecryptPKCS1v15\", Func, 0, \"func(random io.Reader, priv *PrivateKey, ciphertext []byte) ([]byte, error)\"},\n\t\t{\"DecryptPKCS1v15SessionKey\", Func, 0, \"func(random io.Reader, priv *PrivateKey, ciphertext []byte, key []byte) error\"},\n\t\t{\"EncryptOAEP\", Func, 0, \"func(hash hash.Hash, random io.Reader, pub *PublicKey, msg []byte, label []byte) ([]byte, error)\"},\n\t\t{\"EncryptOAEPWithOptions\", Func, 26, \"func(random io.Reader, pub *PublicKey, msg []byte, opts *OAEPOptions) ([]byte, error)\"},\n\t\t{\"EncryptPKCS1v15\", Func, 0, \"func(random io.Reader, pub *PublicKey, msg []byte) ([]byte, error)\"},\n\t\t{\"ErrDecryption\", Var, 0, \"\"},\n\t\t{\"ErrMessageTooLong\", Var, 0, \"\"},\n\t\t{\"ErrVerification\", Var, 0, \"\"},\n\t\t{\"GenerateKey\", Func, 0, \"func(random io.Reader, bits int) (*PrivateKey, error)\"},\n\t\t{\"GenerateMultiPrimeKey\", Func, 0, \"func(random io.Reader, nprimes int, bits int) (*PrivateKey, error)\"},\n\t\t{\"OAEPOptions\", Type, 5, \"\"},\n\t\t{\"OAEPOptions.Hash\", Field, 5, \"\"},\n\t\t{\"OAEPOptions.Label\", Field, 5, \"\"},\n\t\t{\"OAEPOptions.MGFHash\", Field, 20, \"\"},\n\t\t{\"PKCS1v15DecryptOptions\", Type, 5, \"\"},\n\t\t{\"PKCS1v15DecryptOptions.SessionKeyLen\", Field, 5, \"\"},\n\t\t{\"PSSOptions\", Type, 2, \"\"},\n\t\t{\"PSSOptions.Hash\", Field, 4, \"\"},\n\t\t{\"PSSOptions.SaltLength\", Field, 2, \"\"},\n\t\t{\"PSSSaltLengthAuto\", Const, 2, \"\"},\n\t\t{\"PSSSaltLengthEqualsHash\", Const, 2, \"\"},\n\t\t{\"PrecomputedValues\", Type, 0, \"\"},\n\t\t{\"PrecomputedValues.CRTValues\", Field, 0, \"\"},\n\t\t{\"PrecomputedValues.Dp\", Field, 0, \"\"},\n\t\t{\"PrecomputedValues.Dq\", Field, 0, \"\"},\n\t\t{\"PrecomputedValues.Qinv\", Field, 0, \"\"},\n\t\t{\"PrivateKey\", Type, 0, \"\"},\n\t\t{\"PrivateKey.D\", Field, 0, \"\"},\n\t\t{\"PrivateKey.Precomputed\", Field, 0, \"\"},\n\t\t{\"PrivateKey.Primes\", Field, 0, \"\"},\n\t\t{\"PrivateKey.PublicKey\", Field, 0, \"\"},\n\t\t{\"PublicKey\", Type, 0, \"\"},\n\t\t{\"PublicKey.E\", Field, 0, \"\"},\n\t\t{\"PublicKey.N\", Field, 0, \"\"},\n\t\t{\"SignPKCS1v15\", Func, 0, \"func(random io.Reader, priv *PrivateKey, hash crypto.Hash, hashed []byte) ([]byte, error)\"},\n\t\t{\"SignPSS\", Func, 2, \"func(random io.Reader, priv *PrivateKey, hash crypto.Hash, digest []byte, opts *PSSOptions) ([]byte, error)\"},\n\t\t{\"VerifyPKCS1v15\", Func, 0, \"func(pub *PublicKey, hash crypto.Hash, hashed []byte, sig []byte) error\"},\n\t\t{\"VerifyPSS\", Func, 2, \"func(pub *PublicKey, hash crypto.Hash, digest []byte, sig []byte, opts *PSSOptions) error\"},\n\t},\n\t\"crypto/sha1\": {\n\t\t{\"BlockSize\", Const, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func() hash.Hash\"},\n\t\t{\"Size\", Const, 0, \"\"},\n\t\t{\"Sum\", Func, 2, \"func(data []byte) [20]byte\"},\n\t},\n\t\"crypto/sha256\": {\n\t\t{\"BlockSize\", Const, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func() hash.Hash\"},\n\t\t{\"New224\", Func, 0, \"func() hash.Hash\"},\n\t\t{\"Size\", Const, 0, \"\"},\n\t\t{\"Size224\", Const, 0, \"\"},\n\t\t{\"Sum224\", Func, 2, \"func(data []byte) [28]byte\"},\n\t\t{\"Sum256\", Func, 2, \"func(data []byte) [32]byte\"},\n\t},\n\t\"crypto/sha3\": {\n\t\t{\"(*SHA3).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(*SHA3).BlockSize\", Method, 24, \"\"},\n\t\t{\"(*SHA3).Clone\", Method, 25, \"\"},\n\t\t{\"(*SHA3).MarshalBinary\", Method, 24, \"\"},\n\t\t{\"(*SHA3).Reset\", Method, 24, \"\"},\n\t\t{\"(*SHA3).Size\", Method, 24, \"\"},\n\t\t{\"(*SHA3).Sum\", Method, 24, \"\"},\n\t\t{\"(*SHA3).UnmarshalBinary\", Method, 24, \"\"},\n\t\t{\"(*SHA3).Write\", Method, 24, \"\"},\n\t\t{\"(*SHAKE).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(*SHAKE).BlockSize\", Method, 24, \"\"},\n\t\t{\"(*SHAKE).MarshalBinary\", Method, 24, \"\"},\n\t\t{\"(*SHAKE).Read\", Method, 24, \"\"},\n\t\t{\"(*SHAKE).Reset\", Method, 24, \"\"},\n\t\t{\"(*SHAKE).UnmarshalBinary\", Method, 24, \"\"},\n\t\t{\"(*SHAKE).Write\", Method, 24, \"\"},\n\t\t{\"New224\", Func, 24, \"func() *SHA3\"},\n\t\t{\"New256\", Func, 24, \"func() *SHA3\"},\n\t\t{\"New384\", Func, 24, \"func() *SHA3\"},\n\t\t{\"New512\", Func, 24, \"func() *SHA3\"},\n\t\t{\"NewCSHAKE128\", Func, 24, \"func(N []byte, S []byte) *SHAKE\"},\n\t\t{\"NewCSHAKE256\", Func, 24, \"func(N []byte, S []byte) *SHAKE\"},\n\t\t{\"NewSHAKE128\", Func, 24, \"func() *SHAKE\"},\n\t\t{\"NewSHAKE256\", Func, 24, \"func() *SHAKE\"},\n\t\t{\"SHA3\", Type, 24, \"\"},\n\t\t{\"SHAKE\", Type, 24, \"\"},\n\t\t{\"Sum224\", Func, 24, \"func(data []byte) [28]byte\"},\n\t\t{\"Sum256\", Func, 24, \"func(data []byte) [32]byte\"},\n\t\t{\"Sum384\", Func, 24, \"func(data []byte) [48]byte\"},\n\t\t{\"Sum512\", Func, 24, \"func(data []byte) [64]byte\"},\n\t\t{\"SumSHAKE128\", Func, 24, \"func(data []byte, length int) []byte\"},\n\t\t{\"SumSHAKE256\", Func, 24, \"func(data []byte, length int) []byte\"},\n\t},\n\t\"crypto/sha512\": {\n\t\t{\"BlockSize\", Const, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func() hash.Hash\"},\n\t\t{\"New384\", Func, 0, \"func() hash.Hash\"},\n\t\t{\"New512_224\", Func, 5, \"func() hash.Hash\"},\n\t\t{\"New512_256\", Func, 5, \"func() hash.Hash\"},\n\t\t{\"Size\", Const, 0, \"\"},\n\t\t{\"Size224\", Const, 5, \"\"},\n\t\t{\"Size256\", Const, 5, \"\"},\n\t\t{\"Size384\", Const, 0, \"\"},\n\t\t{\"Sum384\", Func, 2, \"func(data []byte) [48]byte\"},\n\t\t{\"Sum512\", Func, 2, \"func(data []byte) [64]byte\"},\n\t\t{\"Sum512_224\", Func, 5, \"func(data []byte) [28]byte\"},\n\t\t{\"Sum512_256\", Func, 5, \"func(data []byte) [32]byte\"},\n\t},\n\t\"crypto/subtle\": {\n\t\t{\"ConstantTimeByteEq\", Func, 0, \"func(x uint8, y uint8) int\"},\n\t\t{\"ConstantTimeCompare\", Func, 0, \"func(x []byte, y []byte) int\"},\n\t\t{\"ConstantTimeCopy\", Func, 0, \"func(v int, x []byte, y []byte)\"},\n\t\t{\"ConstantTimeEq\", Func, 0, \"func(x int32, y int32) int\"},\n\t\t{\"ConstantTimeLessOrEq\", Func, 2, \"func(x int, y int) int\"},\n\t\t{\"ConstantTimeSelect\", Func, 0, \"func(v int, x int, y int) int\"},\n\t\t{\"WithDataIndependentTiming\", Func, 24, \"func(f func())\"},\n\t\t{\"XORBytes\", Func, 20, \"func(dst []byte, x []byte, y []byte) int\"},\n\t},\n\t\"crypto/tls\": {\n\t\t{\"(*CertificateRequestInfo).Context\", Method, 17, \"\"},\n\t\t{\"(*CertificateRequestInfo).SupportsCertificate\", Method, 14, \"\"},\n\t\t{\"(*CertificateVerificationError).Error\", Method, 20, \"\"},\n\t\t{\"(*CertificateVerificationError).Unwrap\", Method, 20, \"\"},\n\t\t{\"(*ClientHelloInfo).Context\", Method, 17, \"\"},\n\t\t{\"(*ClientHelloInfo).SupportsCertificate\", Method, 14, \"\"},\n\t\t{\"(*ClientSessionState).ResumptionState\", Method, 21, \"\"},\n\t\t{\"(*Config).BuildNameToCertificate\", Method, 0, \"\"},\n\t\t{\"(*Config).Clone\", Method, 8, \"\"},\n\t\t{\"(*Config).DecryptTicket\", Method, 21, \"\"},\n\t\t{\"(*Config).EncryptTicket\", Method, 21, \"\"},\n\t\t{\"(*Config).SetSessionTicketKeys\", Method, 5, \"\"},\n\t\t{\"(*Conn).Close\", Method, 0, \"\"},\n\t\t{\"(*Conn).CloseWrite\", Method, 8, \"\"},\n\t\t{\"(*Conn).ConnectionState\", Method, 0, \"\"},\n\t\t{\"(*Conn).Handshake\", Method, 0, \"\"},\n\t\t{\"(*Conn).HandshakeContext\", Method, 17, \"\"},\n\t\t{\"(*Conn).LocalAddr\", Method, 0, \"\"},\n\t\t{\"(*Conn).NetConn\", Method, 18, \"\"},\n\t\t{\"(*Conn).OCSPResponse\", Method, 0, \"\"},\n\t\t{\"(*Conn).Read\", Method, 0, \"\"},\n\t\t{\"(*Conn).RemoteAddr\", Method, 0, \"\"},\n\t\t{\"(*Conn).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(*Conn).SetReadDeadline\", Method, 0, \"\"},\n\t\t{\"(*Conn).SetWriteDeadline\", Method, 0, \"\"},\n\t\t{\"(*Conn).VerifyHostname\", Method, 0, \"\"},\n\t\t{\"(*Conn).Write\", Method, 0, \"\"},\n\t\t{\"(*ConnectionState).ExportKeyingMaterial\", Method, 11, \"\"},\n\t\t{\"(*Dialer).Dial\", Method, 15, \"\"},\n\t\t{\"(*Dialer).DialContext\", Method, 15, \"\"},\n\t\t{\"(*ECHRejectionError).Error\", Method, 23, \"\"},\n\t\t{\"(*QUICConn).Close\", Method, 21, \"\"},\n\t\t{\"(*QUICConn).ConnectionState\", Method, 21, \"\"},\n\t\t{\"(*QUICConn).HandleData\", Method, 21, \"\"},\n\t\t{\"(*QUICConn).NextEvent\", Method, 21, \"\"},\n\t\t{\"(*QUICConn).SendSessionTicket\", Method, 21, \"\"},\n\t\t{\"(*QUICConn).SetTransportParameters\", Method, 21, \"\"},\n\t\t{\"(*QUICConn).Start\", Method, 21, \"\"},\n\t\t{\"(*QUICConn).StoreSession\", Method, 23, \"\"},\n\t\t{\"(*SessionState).Bytes\", Method, 21, \"\"},\n\t\t{\"(AlertError).Error\", Method, 21, \"\"},\n\t\t{\"(ClientAuthType).String\", Method, 15, \"\"},\n\t\t{\"(ClientSessionCache).Get\", Method, 3, \"\"},\n\t\t{\"(ClientSessionCache).Put\", Method, 3, \"\"},\n\t\t{\"(CurveID).String\", Method, 15, \"\"},\n\t\t{\"(QUICEncryptionLevel).String\", Method, 21, \"\"},\n\t\t{\"(RecordHeaderError).Error\", Method, 6, \"\"},\n\t\t{\"(SignatureScheme).String\", Method, 15, \"\"},\n\t\t{\"AlertError\", Type, 21, \"\"},\n\t\t{\"Certificate\", Type, 0, \"\"},\n\t\t{\"Certificate.Certificate\", Field, 0, \"\"},\n\t\t{\"Certificate.Leaf\", Field, 0, \"\"},\n\t\t{\"Certificate.OCSPStaple\", Field, 0, \"\"},\n\t\t{\"Certificate.PrivateKey\", Field, 0, \"\"},\n\t\t{\"Certificate.SignedCertificateTimestamps\", Field, 5, \"\"},\n\t\t{\"Certificate.SupportedSignatureAlgorithms\", Field, 14, \"\"},\n\t\t{\"CertificateRequestInfo\", Type, 8, \"\"},\n\t\t{\"CertificateRequestInfo.AcceptableCAs\", Field, 8, \"\"},\n\t\t{\"CertificateRequestInfo.SignatureSchemes\", Field, 8, \"\"},\n\t\t{\"CertificateRequestInfo.Version\", Field, 14, \"\"},\n\t\t{\"CertificateVerificationError\", Type, 20, \"\"},\n\t\t{\"CertificateVerificationError.Err\", Field, 20, \"\"},\n\t\t{\"CertificateVerificationError.UnverifiedCertificates\", Field, 20, \"\"},\n\t\t{\"CipherSuite\", Type, 14, \"\"},\n\t\t{\"CipherSuite.ID\", Field, 14, \"\"},\n\t\t{\"CipherSuite.Insecure\", Field, 14, \"\"},\n\t\t{\"CipherSuite.Name\", Field, 14, \"\"},\n\t\t{\"CipherSuite.SupportedVersions\", Field, 14, \"\"},\n\t\t{\"CipherSuiteName\", Func, 14, \"func(id uint16) string\"},\n\t\t{\"CipherSuites\", Func, 14, \"func() []*CipherSuite\"},\n\t\t{\"Client\", Func, 0, \"func(conn net.Conn, config *Config) *Conn\"},\n\t\t{\"ClientAuthType\", Type, 0, \"\"},\n\t\t{\"ClientHelloInfo\", Type, 4, \"\"},\n\t\t{\"ClientHelloInfo.CipherSuites\", Field, 4, \"\"},\n\t\t{\"ClientHelloInfo.Conn\", Field, 8, \"\"},\n\t\t{\"ClientHelloInfo.Extensions\", Field, 24, \"\"},\n\t\t{\"ClientHelloInfo.HelloRetryRequest\", Field, 26, \"\"},\n\t\t{\"ClientHelloInfo.ServerName\", Field, 4, \"\"},\n\t\t{\"ClientHelloInfo.SignatureSchemes\", Field, 8, \"\"},\n\t\t{\"ClientHelloInfo.SupportedCurves\", Field, 4, \"\"},\n\t\t{\"ClientHelloInfo.SupportedPoints\", Field, 4, \"\"},\n\t\t{\"ClientHelloInfo.SupportedProtos\", Field, 8, \"\"},\n\t\t{\"ClientHelloInfo.SupportedVersions\", Field, 8, \"\"},\n\t\t{\"ClientSessionCache\", Type, 3, \"\"},\n\t\t{\"ClientSessionState\", Type, 3, \"\"},\n\t\t{\"Config\", Type, 0, \"\"},\n\t\t{\"Config.Certificates\", Field, 0, \"\"},\n\t\t{\"Config.CipherSuites\", Field, 0, \"\"},\n\t\t{\"Config.ClientAuth\", Field, 0, \"\"},\n\t\t{\"Config.ClientCAs\", Field, 0, \"\"},\n\t\t{\"Config.ClientSessionCache\", Field, 3, \"\"},\n\t\t{\"Config.CurvePreferences\", Field, 3, \"\"},\n\t\t{\"Config.DynamicRecordSizingDisabled\", Field, 7, \"\"},\n\t\t{\"Config.EncryptedClientHelloConfigList\", Field, 23, \"\"},\n\t\t{\"Config.EncryptedClientHelloKeys\", Field, 24, \"\"},\n\t\t{\"Config.EncryptedClientHelloRejectionVerify\", Field, 23, \"\"},\n\t\t{\"Config.GetCertificate\", Field, 4, \"\"},\n\t\t{\"Config.GetClientCertificate\", Field, 8, \"\"},\n\t\t{\"Config.GetConfigForClient\", Field, 8, \"\"},\n\t\t{\"Config.GetEncryptedClientHelloKeys\", Field, 25, \"\"},\n\t\t{\"Config.InsecureSkipVerify\", Field, 0, \"\"},\n\t\t{\"Config.KeyLogWriter\", Field, 8, \"\"},\n\t\t{\"Config.MaxVersion\", Field, 2, \"\"},\n\t\t{\"Config.MinVersion\", Field, 2, \"\"},\n\t\t{\"Config.NameToCertificate\", Field, 0, \"\"},\n\t\t{\"Config.NextProtos\", Field, 0, \"\"},\n\t\t{\"Config.PreferServerCipherSuites\", Field, 1, \"\"},\n\t\t{\"Config.Rand\", Field, 0, \"\"},\n\t\t{\"Config.Renegotiation\", Field, 7, \"\"},\n\t\t{\"Config.RootCAs\", Field, 0, \"\"},\n\t\t{\"Config.ServerName\", Field, 0, \"\"},\n\t\t{\"Config.SessionTicketKey\", Field, 1, \"\"},\n\t\t{\"Config.SessionTicketsDisabled\", Field, 1, \"\"},\n\t\t{\"Config.Time\", Field, 0, \"\"},\n\t\t{\"Config.UnwrapSession\", Field, 21, \"\"},\n\t\t{\"Config.VerifyConnection\", Field, 15, \"\"},\n\t\t{\"Config.VerifyPeerCertificate\", Field, 8, \"\"},\n\t\t{\"Config.WrapSession\", Field, 21, \"\"},\n\t\t{\"Conn\", Type, 0, \"\"},\n\t\t{\"ConnectionState\", Type, 0, \"\"},\n\t\t{\"ConnectionState.CipherSuite\", Field, 0, \"\"},\n\t\t{\"ConnectionState.CurveID\", Field, 25, \"\"},\n\t\t{\"ConnectionState.DidResume\", Field, 1, \"\"},\n\t\t{\"ConnectionState.ECHAccepted\", Field, 23, \"\"},\n\t\t{\"ConnectionState.HandshakeComplete\", Field, 0, \"\"},\n\t\t{\"ConnectionState.HelloRetryRequest\", Field, 26, \"\"},\n\t\t{\"ConnectionState.NegotiatedProtocol\", Field, 0, \"\"},\n\t\t{\"ConnectionState.NegotiatedProtocolIsMutual\", Field, 0, \"\"},\n\t\t{\"ConnectionState.OCSPResponse\", Field, 5, \"\"},\n\t\t{\"ConnectionState.PeerCertificates\", Field, 0, \"\"},\n\t\t{\"ConnectionState.ServerName\", Field, 0, \"\"},\n\t\t{\"ConnectionState.SignedCertificateTimestamps\", Field, 5, \"\"},\n\t\t{\"ConnectionState.TLSUnique\", Field, 4, \"\"},\n\t\t{\"ConnectionState.VerifiedChains\", Field, 0, \"\"},\n\t\t{\"ConnectionState.Version\", Field, 3, \"\"},\n\t\t{\"CurveID\", Type, 3, \"\"},\n\t\t{\"CurveP256\", Const, 3, \"\"},\n\t\t{\"CurveP384\", Const, 3, \"\"},\n\t\t{\"CurveP521\", Const, 3, \"\"},\n\t\t{\"Dial\", Func, 0, \"func(network string, addr string, config *Config) (*Conn, error)\"},\n\t\t{\"DialWithDialer\", Func, 3, \"func(dialer *net.Dialer, network string, addr string, config *Config) (*Conn, error)\"},\n\t\t{\"Dialer\", Type, 15, \"\"},\n\t\t{\"Dialer.Config\", Field, 15, \"\"},\n\t\t{\"Dialer.NetDialer\", Field, 15, \"\"},\n\t\t{\"ECDSAWithP256AndSHA256\", Const, 8, \"\"},\n\t\t{\"ECDSAWithP384AndSHA384\", Const, 8, \"\"},\n\t\t{\"ECDSAWithP521AndSHA512\", Const, 8, \"\"},\n\t\t{\"ECDSAWithSHA1\", Const, 10, \"\"},\n\t\t{\"ECHRejectionError\", Type, 23, \"\"},\n\t\t{\"ECHRejectionError.RetryConfigList\", Field, 23, \"\"},\n\t\t{\"Ed25519\", Const, 13, \"\"},\n\t\t{\"EncryptedClientHelloKey\", Type, 24, \"\"},\n\t\t{\"EncryptedClientHelloKey.Config\", Field, 24, \"\"},\n\t\t{\"EncryptedClientHelloKey.PrivateKey\", Field, 24, \"\"},\n\t\t{\"EncryptedClientHelloKey.SendAsRetry\", Field, 24, \"\"},\n\t\t{\"InsecureCipherSuites\", Func, 14, \"func() []*CipherSuite\"},\n\t\t{\"Listen\", Func, 0, \"func(network string, laddr string, config *Config) (net.Listener, error)\"},\n\t\t{\"LoadX509KeyPair\", Func, 0, \"func(certFile string, keyFile string) (Certificate, error)\"},\n\t\t{\"NewLRUClientSessionCache\", Func, 3, \"func(capacity int) ClientSessionCache\"},\n\t\t{\"NewListener\", Func, 0, \"func(inner net.Listener, config *Config) net.Listener\"},\n\t\t{\"NewResumptionState\", Func, 21, \"func(ticket []byte, state *SessionState) (*ClientSessionState, error)\"},\n\t\t{\"NoClientCert\", Const, 0, \"\"},\n\t\t{\"PKCS1WithSHA1\", Const, 8, \"\"},\n\t\t{\"PKCS1WithSHA256\", Const, 8, \"\"},\n\t\t{\"PKCS1WithSHA384\", Const, 8, \"\"},\n\t\t{\"PKCS1WithSHA512\", Const, 8, \"\"},\n\t\t{\"PSSWithSHA256\", Const, 8, \"\"},\n\t\t{\"PSSWithSHA384\", Const, 8, \"\"},\n\t\t{\"PSSWithSHA512\", Const, 8, \"\"},\n\t\t{\"ParseSessionState\", Func, 21, \"func(data []byte) (*SessionState, error)\"},\n\t\t{\"QUICClient\", Func, 21, \"func(config *QUICConfig) *QUICConn\"},\n\t\t{\"QUICConfig\", Type, 21, \"\"},\n\t\t{\"QUICConfig.EnableSessionEvents\", Field, 23, \"\"},\n\t\t{\"QUICConfig.TLSConfig\", Field, 21, \"\"},\n\t\t{\"QUICConn\", Type, 21, \"\"},\n\t\t{\"QUICEncryptionLevel\", Type, 21, \"\"},\n\t\t{\"QUICEncryptionLevelApplication\", Const, 21, \"\"},\n\t\t{\"QUICEncryptionLevelEarly\", Const, 21, \"\"},\n\t\t{\"QUICEncryptionLevelHandshake\", Const, 21, \"\"},\n\t\t{\"QUICEncryptionLevelInitial\", Const, 21, \"\"},\n\t\t{\"QUICErrorEvent\", Const, 26, \"\"},\n\t\t{\"QUICEvent\", Type, 21, \"\"},\n\t\t{\"QUICEvent.Data\", Field, 21, \"\"},\n\t\t{\"QUICEvent.Err\", Field, 26, \"\"},\n\t\t{\"QUICEvent.Kind\", Field, 21, \"\"},\n\t\t{\"QUICEvent.Level\", Field, 21, \"\"},\n\t\t{\"QUICEvent.SessionState\", Field, 23, \"\"},\n\t\t{\"QUICEvent.Suite\", Field, 21, \"\"},\n\t\t{\"QUICEventKind\", Type, 21, \"\"},\n\t\t{\"QUICHandshakeDone\", Const, 21, \"\"},\n\t\t{\"QUICNoEvent\", Const, 21, \"\"},\n\t\t{\"QUICRejectedEarlyData\", Const, 21, \"\"},\n\t\t{\"QUICResumeSession\", Const, 23, \"\"},\n\t\t{\"QUICServer\", Func, 21, \"func(config *QUICConfig) *QUICConn\"},\n\t\t{\"QUICSessionTicketOptions\", Type, 21, \"\"},\n\t\t{\"QUICSessionTicketOptions.EarlyData\", Field, 21, \"\"},\n\t\t{\"QUICSessionTicketOptions.Extra\", Field, 23, \"\"},\n\t\t{\"QUICSetReadSecret\", Const, 21, \"\"},\n\t\t{\"QUICSetWriteSecret\", Const, 21, \"\"},\n\t\t{\"QUICStoreSession\", Const, 23, \"\"},\n\t\t{\"QUICTransportParameters\", Const, 21, \"\"},\n\t\t{\"QUICTransportParametersRequired\", Const, 21, \"\"},\n\t\t{\"QUICWriteData\", Const, 21, \"\"},\n\t\t{\"RecordHeaderError\", Type, 6, \"\"},\n\t\t{\"RecordHeaderError.Conn\", Field, 12, \"\"},\n\t\t{\"RecordHeaderError.Msg\", Field, 6, \"\"},\n\t\t{\"RecordHeaderError.RecordHeader\", Field, 6, \"\"},\n\t\t{\"RenegotiateFreelyAsClient\", Const, 7, \"\"},\n\t\t{\"RenegotiateNever\", Const, 7, \"\"},\n\t\t{\"RenegotiateOnceAsClient\", Const, 7, \"\"},\n\t\t{\"RenegotiationSupport\", Type, 7, \"\"},\n\t\t{\"RequestClientCert\", Const, 0, \"\"},\n\t\t{\"RequireAndVerifyClientCert\", Const, 0, \"\"},\n\t\t{\"RequireAnyClientCert\", Const, 0, \"\"},\n\t\t{\"SecP256r1MLKEM768\", Const, 26, \"\"},\n\t\t{\"SecP384r1MLKEM1024\", Const, 26, \"\"},\n\t\t{\"Server\", Func, 0, \"func(conn net.Conn, config *Config) *Conn\"},\n\t\t{\"SessionState\", Type, 21, \"\"},\n\t\t{\"SessionState.EarlyData\", Field, 21, \"\"},\n\t\t{\"SessionState.Extra\", Field, 21, \"\"},\n\t\t{\"SignatureScheme\", Type, 8, \"\"},\n\t\t{\"TLS_AES_128_GCM_SHA256\", Const, 12, \"\"},\n\t\t{\"TLS_AES_256_GCM_SHA384\", Const, 12, \"\"},\n\t\t{\"TLS_CHACHA20_POLY1305_SHA256\", Const, 12, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\", Const, 2, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\", Const, 8, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\", Const, 2, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\", Const, 2, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\", Const, 5, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\", Const, 8, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\", Const, 14, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_RC4_128_SHA\", Const, 2, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA\", Const, 0, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\", Const, 0, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\", Const, 8, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\", Const, 2, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\", Const, 1, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\", Const, 5, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305\", Const, 8, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\", Const, 14, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_RC4_128_SHA\", Const, 0, \"\"},\n\t\t{\"TLS_FALLBACK_SCSV\", Const, 4, \"\"},\n\t\t{\"TLS_RSA_WITH_3DES_EDE_CBC_SHA\", Const, 0, \"\"},\n\t\t{\"TLS_RSA_WITH_AES_128_CBC_SHA\", Const, 0, \"\"},\n\t\t{\"TLS_RSA_WITH_AES_128_CBC_SHA256\", Const, 8, \"\"},\n\t\t{\"TLS_RSA_WITH_AES_128_GCM_SHA256\", Const, 6, \"\"},\n\t\t{\"TLS_RSA_WITH_AES_256_CBC_SHA\", Const, 1, \"\"},\n\t\t{\"TLS_RSA_WITH_AES_256_GCM_SHA384\", Const, 6, \"\"},\n\t\t{\"TLS_RSA_WITH_RC4_128_SHA\", Const, 0, \"\"},\n\t\t{\"VerifyClientCertIfGiven\", Const, 0, \"\"},\n\t\t{\"VersionName\", Func, 21, \"func(version uint16) string\"},\n\t\t{\"VersionSSL30\", Const, 2, \"\"},\n\t\t{\"VersionTLS10\", Const, 2, \"\"},\n\t\t{\"VersionTLS11\", Const, 2, \"\"},\n\t\t{\"VersionTLS12\", Const, 2, \"\"},\n\t\t{\"VersionTLS13\", Const, 12, \"\"},\n\t\t{\"X25519\", Const, 8, \"\"},\n\t\t{\"X25519MLKEM768\", Const, 24, \"\"},\n\t\t{\"X509KeyPair\", Func, 0, \"func(certPEMBlock []byte, keyPEMBlock []byte) (Certificate, error)\"},\n\t},\n\t\"crypto/x509\": {\n\t\t{\"(*CertPool).AddCert\", Method, 0, \"\"},\n\t\t{\"(*CertPool).AddCertWithConstraint\", Method, 22, \"\"},\n\t\t{\"(*CertPool).AppendCertsFromPEM\", Method, 0, \"\"},\n\t\t{\"(*CertPool).Clone\", Method, 19, \"\"},\n\t\t{\"(*CertPool).Equal\", Method, 19, \"\"},\n\t\t{\"(*CertPool).Subjects\", Method, 0, \"\"},\n\t\t{\"(*Certificate).CheckCRLSignature\", Method, 0, \"\"},\n\t\t{\"(*Certificate).CheckSignature\", Method, 0, \"\"},\n\t\t{\"(*Certificate).CheckSignatureFrom\", Method, 0, \"\"},\n\t\t{\"(*Certificate).CreateCRL\", Method, 0, \"\"},\n\t\t{\"(*Certificate).Equal\", Method, 0, \"\"},\n\t\t{\"(*Certificate).Verify\", Method, 0, \"\"},\n\t\t{\"(*Certificate).VerifyHostname\", Method, 0, \"\"},\n\t\t{\"(*CertificateRequest).CheckSignature\", Method, 5, \"\"},\n\t\t{\"(*OID).UnmarshalBinary\", Method, 23, \"\"},\n\t\t{\"(*OID).UnmarshalText\", Method, 23, \"\"},\n\t\t{\"(*RevocationList).CheckSignatureFrom\", Method, 19, \"\"},\n\t\t{\"(CertificateInvalidError).Error\", Method, 0, \"\"},\n\t\t{\"(ConstraintViolationError).Error\", Method, 0, \"\"},\n\t\t{\"(ExtKeyUsage).OID\", Method, 26, \"\"},\n\t\t{\"(ExtKeyUsage).String\", Method, 26, \"\"},\n\t\t{\"(HostnameError).Error\", Method, 0, \"\"},\n\t\t{\"(InsecureAlgorithmError).Error\", Method, 6, \"\"},\n\t\t{\"(KeyUsage).String\", Method, 26, \"\"},\n\t\t{\"(OID).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(OID).AppendText\", Method, 24, \"\"},\n\t\t{\"(OID).Equal\", Method, 22, \"\"},\n\t\t{\"(OID).EqualASN1OID\", Method, 22, \"\"},\n\t\t{\"(OID).MarshalBinary\", Method, 23, \"\"},\n\t\t{\"(OID).MarshalText\", Method, 23, \"\"},\n\t\t{\"(OID).String\", Method, 22, \"\"},\n\t\t{\"(PublicKeyAlgorithm).String\", Method, 10, \"\"},\n\t\t{\"(SignatureAlgorithm).String\", Method, 6, \"\"},\n\t\t{\"(SystemRootsError).Error\", Method, 1, \"\"},\n\t\t{\"(SystemRootsError).Unwrap\", Method, 16, \"\"},\n\t\t{\"(UnhandledCriticalExtension).Error\", Method, 0, \"\"},\n\t\t{\"(UnknownAuthorityError).Error\", Method, 0, \"\"},\n\t\t{\"CANotAuthorizedForExtKeyUsage\", Const, 10, \"\"},\n\t\t{\"CANotAuthorizedForThisName\", Const, 0, \"\"},\n\t\t{\"CertPool\", Type, 0, \"\"},\n\t\t{\"Certificate\", Type, 0, \"\"},\n\t\t{\"Certificate.AuthorityKeyId\", Field, 0, \"\"},\n\t\t{\"Certificate.BasicConstraintsValid\", Field, 0, \"\"},\n\t\t{\"Certificate.CRLDistributionPoints\", Field, 2, \"\"},\n\t\t{\"Certificate.DNSNames\", Field, 0, \"\"},\n\t\t{\"Certificate.EmailAddresses\", Field, 0, \"\"},\n\t\t{\"Certificate.ExcludedDNSDomains\", Field, 9, \"\"},\n\t\t{\"Certificate.ExcludedEmailAddresses\", Field, 10, \"\"},\n\t\t{\"Certificate.ExcludedIPRanges\", Field, 10, \"\"},\n\t\t{\"Certificate.ExcludedURIDomains\", Field, 10, \"\"},\n\t\t{\"Certificate.ExtKeyUsage\", Field, 0, \"\"},\n\t\t{\"Certificate.Extensions\", Field, 2, \"\"},\n\t\t{\"Certificate.ExtraExtensions\", Field, 2, \"\"},\n\t\t{\"Certificate.IPAddresses\", Field, 1, \"\"},\n\t\t{\"Certificate.InhibitAnyPolicy\", Field, 24, \"\"},\n\t\t{\"Certificate.InhibitAnyPolicyZero\", Field, 24, \"\"},\n\t\t{\"Certificate.InhibitPolicyMapping\", Field, 24, \"\"},\n\t\t{\"Certificate.InhibitPolicyMappingZero\", Field, 24, \"\"},\n\t\t{\"Certificate.IsCA\", Field, 0, \"\"},\n\t\t{\"Certificate.Issuer\", Field, 0, \"\"},\n\t\t{\"Certificate.IssuingCertificateURL\", Field, 2, \"\"},\n\t\t{\"Certificate.KeyUsage\", Field, 0, \"\"},\n\t\t{\"Certificate.MaxPathLen\", Field, 0, \"\"},\n\t\t{\"Certificate.MaxPathLenZero\", Field, 4, \"\"},\n\t\t{\"Certificate.NotAfter\", Field, 0, \"\"},\n\t\t{\"Certificate.NotBefore\", Field, 0, \"\"},\n\t\t{\"Certificate.OCSPServer\", Field, 2, \"\"},\n\t\t{\"Certificate.PermittedDNSDomains\", Field, 0, \"\"},\n\t\t{\"Certificate.PermittedDNSDomainsCritical\", Field, 0, \"\"},\n\t\t{\"Certificate.PermittedEmailAddresses\", Field, 10, \"\"},\n\t\t{\"Certificate.PermittedIPRanges\", Field, 10, \"\"},\n\t\t{\"Certificate.PermittedURIDomains\", Field, 10, \"\"},\n\t\t{\"Certificate.Policies\", Field, 22, \"\"},\n\t\t{\"Certificate.PolicyIdentifiers\", Field, 0, \"\"},\n\t\t{\"Certificate.PolicyMappings\", Field, 24, \"\"},\n\t\t{\"Certificate.PublicKey\", Field, 0, \"\"},\n\t\t{\"Certificate.PublicKeyAlgorithm\", Field, 0, \"\"},\n\t\t{\"Certificate.Raw\", Field, 0, \"\"},\n\t\t{\"Certificate.RawIssuer\", Field, 0, \"\"},\n\t\t{\"Certificate.RawSubject\", Field, 0, \"\"},\n\t\t{\"Certificate.RawSubjectPublicKeyInfo\", Field, 0, \"\"},\n\t\t{\"Certificate.RawTBSCertificate\", Field, 0, \"\"},\n\t\t{\"Certificate.RequireExplicitPolicy\", Field, 24, \"\"},\n\t\t{\"Certificate.RequireExplicitPolicyZero\", Field, 24, \"\"},\n\t\t{\"Certificate.SerialNumber\", Field, 0, \"\"},\n\t\t{\"Certificate.Signature\", Field, 0, \"\"},\n\t\t{\"Certificate.SignatureAlgorithm\", Field, 0, \"\"},\n\t\t{\"Certificate.Subject\", Field, 0, \"\"},\n\t\t{\"Certificate.SubjectKeyId\", Field, 0, \"\"},\n\t\t{\"Certificate.URIs\", Field, 10, \"\"},\n\t\t{\"Certificate.UnhandledCriticalExtensions\", Field, 5, \"\"},\n\t\t{\"Certificate.UnknownExtKeyUsage\", Field, 0, \"\"},\n\t\t{\"Certificate.Version\", Field, 0, \"\"},\n\t\t{\"CertificateInvalidError\", Type, 0, \"\"},\n\t\t{\"CertificateInvalidError.Cert\", Field, 0, \"\"},\n\t\t{\"CertificateInvalidError.Detail\", Field, 10, \"\"},\n\t\t{\"CertificateInvalidError.Reason\", Field, 0, \"\"},\n\t\t{\"CertificateRequest\", Type, 3, \"\"},\n\t\t{\"CertificateRequest.Attributes\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.DNSNames\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.EmailAddresses\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.Extensions\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.ExtraExtensions\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.IPAddresses\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.PublicKey\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.PublicKeyAlgorithm\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.Raw\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.RawSubject\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.RawSubjectPublicKeyInfo\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.RawTBSCertificateRequest\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.Signature\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.SignatureAlgorithm\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.Subject\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.URIs\", Field, 10, \"\"},\n\t\t{\"CertificateRequest.Version\", Field, 3, \"\"},\n\t\t{\"ConstraintViolationError\", Type, 0, \"\"},\n\t\t{\"CreateCertificate\", Func, 0, \"func(rand io.Reader, template *Certificate, parent *Certificate, pub any, priv any) ([]byte, error)\"},\n\t\t{\"CreateCertificateRequest\", Func, 3, \"func(rand io.Reader, template *CertificateRequest, priv any) (csr []byte, err error)\"},\n\t\t{\"CreateRevocationList\", Func, 15, \"func(rand io.Reader, template *RevocationList, issuer *Certificate, priv crypto.Signer) ([]byte, error)\"},\n\t\t{\"DSA\", Const, 0, \"\"},\n\t\t{\"DSAWithSHA1\", Const, 0, \"\"},\n\t\t{\"DSAWithSHA256\", Const, 0, \"\"},\n\t\t{\"DecryptPEMBlock\", Func, 1, \"func(b *pem.Block, password []byte) ([]byte, error)\"},\n\t\t{\"ECDSA\", Const, 1, \"\"},\n\t\t{\"ECDSAWithSHA1\", Const, 1, \"\"},\n\t\t{\"ECDSAWithSHA256\", Const, 1, \"\"},\n\t\t{\"ECDSAWithSHA384\", Const, 1, \"\"},\n\t\t{\"ECDSAWithSHA512\", Const, 1, \"\"},\n\t\t{\"Ed25519\", Const, 13, \"\"},\n\t\t{\"EncryptPEMBlock\", Func, 1, \"func(rand io.Reader, blockType string, data []byte, password []byte, alg PEMCipher) (*pem.Block, error)\"},\n\t\t{\"ErrUnsupportedAlgorithm\", Var, 0, \"\"},\n\t\t{\"Expired\", Const, 0, \"\"},\n\t\t{\"ExtKeyUsage\", Type, 0, \"\"},\n\t\t{\"ExtKeyUsageAny\", Const, 0, \"\"},\n\t\t{\"ExtKeyUsageClientAuth\", Const, 0, \"\"},\n\t\t{\"ExtKeyUsageCodeSigning\", Const, 0, \"\"},\n\t\t{\"ExtKeyUsageEmailProtection\", Const, 0, \"\"},\n\t\t{\"ExtKeyUsageIPSECEndSystem\", Const, 1, \"\"},\n\t\t{\"ExtKeyUsageIPSECTunnel\", Const, 1, \"\"},\n\t\t{\"ExtKeyUsageIPSECUser\", Const, 1, \"\"},\n\t\t{\"ExtKeyUsageMicrosoftCommercialCodeSigning\", Const, 10, \"\"},\n\t\t{\"ExtKeyUsageMicrosoftKernelCodeSigning\", Const, 10, \"\"},\n\t\t{\"ExtKeyUsageMicrosoftServerGatedCrypto\", Const, 1, \"\"},\n\t\t{\"ExtKeyUsageNetscapeServerGatedCrypto\", Const, 1, \"\"},\n\t\t{\"ExtKeyUsageOCSPSigning\", Const, 0, \"\"},\n\t\t{\"ExtKeyUsageServerAuth\", Const, 0, \"\"},\n\t\t{\"ExtKeyUsageTimeStamping\", Const, 0, \"\"},\n\t\t{\"HostnameError\", Type, 0, \"\"},\n\t\t{\"HostnameError.Certificate\", Field, 0, \"\"},\n\t\t{\"HostnameError.Host\", Field, 0, \"\"},\n\t\t{\"IncompatibleUsage\", Const, 1, \"\"},\n\t\t{\"IncorrectPasswordError\", Var, 1, \"\"},\n\t\t{\"InsecureAlgorithmError\", Type, 6, \"\"},\n\t\t{\"InvalidReason\", Type, 0, \"\"},\n\t\t{\"IsEncryptedPEMBlock\", Func, 1, \"func(b *pem.Block) bool\"},\n\t\t{\"KeyUsage\", Type, 0, \"\"},\n\t\t{\"KeyUsageCRLSign\", Const, 0, \"\"},\n\t\t{\"KeyUsageCertSign\", Const, 0, \"\"},\n\t\t{\"KeyUsageContentCommitment\", Const, 0, \"\"},\n\t\t{\"KeyUsageDataEncipherment\", Const, 0, \"\"},\n\t\t{\"KeyUsageDecipherOnly\", Const, 0, \"\"},\n\t\t{\"KeyUsageDigitalSignature\", Const, 0, \"\"},\n\t\t{\"KeyUsageEncipherOnly\", Const, 0, \"\"},\n\t\t{\"KeyUsageKeyAgreement\", Const, 0, \"\"},\n\t\t{\"KeyUsageKeyEncipherment\", Const, 0, \"\"},\n\t\t{\"MD2WithRSA\", Const, 0, \"\"},\n\t\t{\"MD5WithRSA\", Const, 0, \"\"},\n\t\t{\"MarshalECPrivateKey\", Func, 2, \"func(key *ecdsa.PrivateKey) ([]byte, error)\"},\n\t\t{\"MarshalPKCS1PrivateKey\", Func, 0, \"func(key *rsa.PrivateKey) []byte\"},\n\t\t{\"MarshalPKCS1PublicKey\", Func, 10, \"func(key *rsa.PublicKey) []byte\"},\n\t\t{\"MarshalPKCS8PrivateKey\", Func, 10, \"func(key any) ([]byte, error)\"},\n\t\t{\"MarshalPKIXPublicKey\", Func, 0, \"func(pub any) ([]byte, error)\"},\n\t\t{\"NameConstraintsWithoutSANs\", Const, 10, \"\"},\n\t\t{\"NameMismatch\", Const, 8, \"\"},\n\t\t{\"NewCertPool\", Func, 0, \"func() *CertPool\"},\n\t\t{\"NoValidChains\", Const, 24, \"\"},\n\t\t{\"NotAuthorizedToSign\", Const, 0, \"\"},\n\t\t{\"OID\", Type, 22, \"\"},\n\t\t{\"OIDFromASN1OID\", Func, 26, \"func(asn1OID asn1.ObjectIdentifier) (OID, error)\"},\n\t\t{\"OIDFromInts\", Func, 22, \"func(oid []uint64) (OID, error)\"},\n\t\t{\"PEMCipher\", Type, 1, \"\"},\n\t\t{\"PEMCipher3DES\", Const, 1, \"\"},\n\t\t{\"PEMCipherAES128\", Const, 1, \"\"},\n\t\t{\"PEMCipherAES192\", Const, 1, \"\"},\n\t\t{\"PEMCipherAES256\", Const, 1, \"\"},\n\t\t{\"PEMCipherDES\", Const, 1, \"\"},\n\t\t{\"ParseCRL\", Func, 0, \"func(crlBytes []byte) (*pkix.CertificateList, error)\"},\n\t\t{\"ParseCertificate\", Func, 0, \"func(der []byte) (*Certificate, error)\"},\n\t\t{\"ParseCertificateRequest\", Func, 3, \"func(asn1Data []byte) (*CertificateRequest, error)\"},\n\t\t{\"ParseCertificates\", Func, 0, \"func(der []byte) ([]*Certificate, error)\"},\n\t\t{\"ParseDERCRL\", Func, 0, \"func(derBytes []byte) (*pkix.CertificateList, error)\"},\n\t\t{\"ParseECPrivateKey\", Func, 1, \"func(der []byte) (*ecdsa.PrivateKey, error)\"},\n\t\t{\"ParseOID\", Func, 23, \"func(oid string) (OID, error)\"},\n\t\t{\"ParsePKCS1PrivateKey\", Func, 0, \"func(der []byte) (*rsa.PrivateKey, error)\"},\n\t\t{\"ParsePKCS1PublicKey\", Func, 10, \"func(der []byte) (*rsa.PublicKey, error)\"},\n\t\t{\"ParsePKCS8PrivateKey\", Func, 0, \"func(der []byte) (key any, err error)\"},\n\t\t{\"ParsePKIXPublicKey\", Func, 0, \"func(derBytes []byte) (pub any, err error)\"},\n\t\t{\"ParseRevocationList\", Func, 19, \"func(der []byte) (*RevocationList, error)\"},\n\t\t{\"PolicyMapping\", Type, 24, \"\"},\n\t\t{\"PolicyMapping.IssuerDomainPolicy\", Field, 24, \"\"},\n\t\t{\"PolicyMapping.SubjectDomainPolicy\", Field, 24, \"\"},\n\t\t{\"PublicKeyAlgorithm\", Type, 0, \"\"},\n\t\t{\"PureEd25519\", Const, 13, \"\"},\n\t\t{\"RSA\", Const, 0, \"\"},\n\t\t{\"RevocationList\", Type, 15, \"\"},\n\t\t{\"RevocationList.AuthorityKeyId\", Field, 19, \"\"},\n\t\t{\"RevocationList.Extensions\", Field, 19, \"\"},\n\t\t{\"RevocationList.ExtraExtensions\", Field, 15, \"\"},\n\t\t{\"RevocationList.Issuer\", Field, 19, \"\"},\n\t\t{\"RevocationList.NextUpdate\", Field, 15, \"\"},\n\t\t{\"RevocationList.Number\", Field, 15, \"\"},\n\t\t{\"RevocationList.Raw\", Field, 19, \"\"},\n\t\t{\"RevocationList.RawIssuer\", Field, 19, \"\"},\n\t\t{\"RevocationList.RawTBSRevocationList\", Field, 19, \"\"},\n\t\t{\"RevocationList.RevokedCertificateEntries\", Field, 21, \"\"},\n\t\t{\"RevocationList.RevokedCertificates\", Field, 15, \"\"},\n\t\t{\"RevocationList.Signature\", Field, 19, \"\"},\n\t\t{\"RevocationList.SignatureAlgorithm\", Field, 15, \"\"},\n\t\t{\"RevocationList.ThisUpdate\", Field, 15, \"\"},\n\t\t{\"RevocationListEntry\", Type, 21, \"\"},\n\t\t{\"RevocationListEntry.Extensions\", Field, 21, \"\"},\n\t\t{\"RevocationListEntry.ExtraExtensions\", Field, 21, \"\"},\n\t\t{\"RevocationListEntry.Raw\", Field, 21, \"\"},\n\t\t{\"RevocationListEntry.ReasonCode\", Field, 21, \"\"},\n\t\t{\"RevocationListEntry.RevocationTime\", Field, 21, \"\"},\n\t\t{\"RevocationListEntry.SerialNumber\", Field, 21, \"\"},\n\t\t{\"SHA1WithRSA\", Const, 0, \"\"},\n\t\t{\"SHA256WithRSA\", Const, 0, \"\"},\n\t\t{\"SHA256WithRSAPSS\", Const, 8, \"\"},\n\t\t{\"SHA384WithRSA\", Const, 0, \"\"},\n\t\t{\"SHA384WithRSAPSS\", Const, 8, \"\"},\n\t\t{\"SHA512WithRSA\", Const, 0, \"\"},\n\t\t{\"SHA512WithRSAPSS\", Const, 8, \"\"},\n\t\t{\"SetFallbackRoots\", Func, 20, \"func(roots *CertPool)\"},\n\t\t{\"SignatureAlgorithm\", Type, 0, \"\"},\n\t\t{\"SystemCertPool\", Func, 7, \"func() (*CertPool, error)\"},\n\t\t{\"SystemRootsError\", Type, 1, \"\"},\n\t\t{\"SystemRootsError.Err\", Field, 7, \"\"},\n\t\t{\"TooManyConstraints\", Const, 10, \"\"},\n\t\t{\"TooManyIntermediates\", Const, 0, \"\"},\n\t\t{\"UnconstrainedName\", Const, 10, \"\"},\n\t\t{\"UnhandledCriticalExtension\", Type, 0, \"\"},\n\t\t{\"UnknownAuthorityError\", Type, 0, \"\"},\n\t\t{\"UnknownAuthorityError.Cert\", Field, 8, \"\"},\n\t\t{\"UnknownPublicKeyAlgorithm\", Const, 0, \"\"},\n\t\t{\"UnknownSignatureAlgorithm\", Const, 0, \"\"},\n\t\t{\"VerifyOptions\", Type, 0, \"\"},\n\t\t{\"VerifyOptions.CertificatePolicies\", Field, 24, \"\"},\n\t\t{\"VerifyOptions.CurrentTime\", Field, 0, \"\"},\n\t\t{\"VerifyOptions.DNSName\", Field, 0, \"\"},\n\t\t{\"VerifyOptions.Intermediates\", Field, 0, \"\"},\n\t\t{\"VerifyOptions.KeyUsages\", Field, 1, \"\"},\n\t\t{\"VerifyOptions.MaxConstraintComparisions\", Field, 10, \"\"},\n\t\t{\"VerifyOptions.Roots\", Field, 0, \"\"},\n\t},\n\t\"crypto/x509/pkix\": {\n\t\t{\"(*CertificateList).HasExpired\", Method, 0, \"\"},\n\t\t{\"(*Name).FillFromRDNSequence\", Method, 0, \"\"},\n\t\t{\"(Name).String\", Method, 10, \"\"},\n\t\t{\"(Name).ToRDNSequence\", Method, 0, \"\"},\n\t\t{\"(RDNSequence).String\", Method, 10, \"\"},\n\t\t{\"AlgorithmIdentifier\", Type, 0, \"\"},\n\t\t{\"AlgorithmIdentifier.Algorithm\", Field, 0, \"\"},\n\t\t{\"AlgorithmIdentifier.Parameters\", Field, 0, \"\"},\n\t\t{\"AttributeTypeAndValue\", Type, 0, \"\"},\n\t\t{\"AttributeTypeAndValue.Type\", Field, 0, \"\"},\n\t\t{\"AttributeTypeAndValue.Value\", Field, 0, \"\"},\n\t\t{\"AttributeTypeAndValueSET\", Type, 3, \"\"},\n\t\t{\"AttributeTypeAndValueSET.Type\", Field, 3, \"\"},\n\t\t{\"AttributeTypeAndValueSET.Value\", Field, 3, \"\"},\n\t\t{\"CertificateList\", Type, 0, \"\"},\n\t\t{\"CertificateList.SignatureAlgorithm\", Field, 0, \"\"},\n\t\t{\"CertificateList.SignatureValue\", Field, 0, \"\"},\n\t\t{\"CertificateList.TBSCertList\", Field, 0, \"\"},\n\t\t{\"Extension\", Type, 0, \"\"},\n\t\t{\"Extension.Critical\", Field, 0, \"\"},\n\t\t{\"Extension.Id\", Field, 0, \"\"},\n\t\t{\"Extension.Value\", Field, 0, \"\"},\n\t\t{\"Name\", Type, 0, \"\"},\n\t\t{\"Name.CommonName\", Field, 0, \"\"},\n\t\t{\"Name.Country\", Field, 0, \"\"},\n\t\t{\"Name.ExtraNames\", Field, 5, \"\"},\n\t\t{\"Name.Locality\", Field, 0, \"\"},\n\t\t{\"Name.Names\", Field, 0, \"\"},\n\t\t{\"Name.Organization\", Field, 0, \"\"},\n\t\t{\"Name.OrganizationalUnit\", Field, 0, \"\"},\n\t\t{\"Name.PostalCode\", Field, 0, \"\"},\n\t\t{\"Name.Province\", Field, 0, \"\"},\n\t\t{\"Name.SerialNumber\", Field, 0, \"\"},\n\t\t{\"Name.StreetAddress\", Field, 0, \"\"},\n\t\t{\"RDNSequence\", Type, 0, \"\"},\n\t\t{\"RelativeDistinguishedNameSET\", Type, 0, \"\"},\n\t\t{\"RevokedCertificate\", Type, 0, \"\"},\n\t\t{\"RevokedCertificate.Extensions\", Field, 0, \"\"},\n\t\t{\"RevokedCertificate.RevocationTime\", Field, 0, \"\"},\n\t\t{\"RevokedCertificate.SerialNumber\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList\", Type, 0, \"\"},\n\t\t{\"TBSCertificateList.Extensions\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList.Issuer\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList.NextUpdate\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList.Raw\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList.RevokedCertificates\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList.Signature\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList.ThisUpdate\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList.Version\", Field, 0, \"\"},\n\t},\n\t\"database/sql\": {\n\t\t{\"(*ColumnType).DatabaseTypeName\", Method, 8, \"\"},\n\t\t{\"(*ColumnType).DecimalSize\", Method, 8, \"\"},\n\t\t{\"(*ColumnType).Length\", Method, 8, \"\"},\n\t\t{\"(*ColumnType).Name\", Method, 8, \"\"},\n\t\t{\"(*ColumnType).Nullable\", Method, 8, \"\"},\n\t\t{\"(*ColumnType).ScanType\", Method, 8, \"\"},\n\t\t{\"(*Conn).BeginTx\", Method, 9, \"\"},\n\t\t{\"(*Conn).Close\", Method, 9, \"\"},\n\t\t{\"(*Conn).ExecContext\", Method, 9, \"\"},\n\t\t{\"(*Conn).PingContext\", Method, 9, \"\"},\n\t\t{\"(*Conn).PrepareContext\", Method, 9, \"\"},\n\t\t{\"(*Conn).QueryContext\", Method, 9, \"\"},\n\t\t{\"(*Conn).QueryRowContext\", Method, 9, \"\"},\n\t\t{\"(*Conn).Raw\", Method, 13, \"\"},\n\t\t{\"(*DB).Begin\", Method, 0, \"\"},\n\t\t{\"(*DB).BeginTx\", Method, 8, \"\"},\n\t\t{\"(*DB).Close\", Method, 0, \"\"},\n\t\t{\"(*DB).Conn\", Method, 9, \"\"},\n\t\t{\"(*DB).Driver\", Method, 0, \"\"},\n\t\t{\"(*DB).Exec\", Method, 0, \"\"},\n\t\t{\"(*DB).ExecContext\", Method, 8, \"\"},\n\t\t{\"(*DB).Ping\", Method, 1, \"\"},\n\t\t{\"(*DB).PingContext\", Method, 8, \"\"},\n\t\t{\"(*DB).Prepare\", Method, 0, \"\"},\n\t\t{\"(*DB).PrepareContext\", Method, 8, \"\"},\n\t\t{\"(*DB).Query\", Method, 0, \"\"},\n\t\t{\"(*DB).QueryContext\", Method, 8, \"\"},\n\t\t{\"(*DB).QueryRow\", Method, 0, \"\"},\n\t\t{\"(*DB).QueryRowContext\", Method, 8, \"\"},\n\t\t{\"(*DB).SetConnMaxIdleTime\", Method, 15, \"\"},\n\t\t{\"(*DB).SetConnMaxLifetime\", Method, 6, \"\"},\n\t\t{\"(*DB).SetMaxIdleConns\", Method, 1, \"\"},\n\t\t{\"(*DB).SetMaxOpenConns\", Method, 2, \"\"},\n\t\t{\"(*DB).Stats\", Method, 5, \"\"},\n\t\t{\"(*Null).Scan\", Method, 22, \"\"},\n\t\t{\"(*NullBool).Scan\", Method, 0, \"\"},\n\t\t{\"(*NullByte).Scan\", Method, 17, \"\"},\n\t\t{\"(*NullFloat64).Scan\", Method, 0, \"\"},\n\t\t{\"(*NullInt16).Scan\", Method, 17, \"\"},\n\t\t{\"(*NullInt32).Scan\", Method, 13, \"\"},\n\t\t{\"(*NullInt64).Scan\", Method, 0, \"\"},\n\t\t{\"(*NullString).Scan\", Method, 0, \"\"},\n\t\t{\"(*NullTime).Scan\", Method, 13, \"\"},\n\t\t{\"(*Row).Err\", Method, 15, \"\"},\n\t\t{\"(*Row).Scan\", Method, 0, \"\"},\n\t\t{\"(*Rows).Close\", Method, 0, \"\"},\n\t\t{\"(*Rows).ColumnTypes\", Method, 8, \"\"},\n\t\t{\"(*Rows).Columns\", Method, 0, \"\"},\n\t\t{\"(*Rows).Err\", Method, 0, \"\"},\n\t\t{\"(*Rows).Next\", Method, 0, \"\"},\n\t\t{\"(*Rows).NextResultSet\", Method, 8, \"\"},\n\t\t{\"(*Rows).Scan\", Method, 0, \"\"},\n\t\t{\"(*Stmt).Close\", Method, 0, \"\"},\n\t\t{\"(*Stmt).Exec\", Method, 0, \"\"},\n\t\t{\"(*Stmt).ExecContext\", Method, 8, \"\"},\n\t\t{\"(*Stmt).Query\", Method, 0, \"\"},\n\t\t{\"(*Stmt).QueryContext\", Method, 8, \"\"},\n\t\t{\"(*Stmt).QueryRow\", Method, 0, \"\"},\n\t\t{\"(*Stmt).QueryRowContext\", Method, 8, \"\"},\n\t\t{\"(*Tx).Commit\", Method, 0, \"\"},\n\t\t{\"(*Tx).Exec\", Method, 0, \"\"},\n\t\t{\"(*Tx).ExecContext\", Method, 8, \"\"},\n\t\t{\"(*Tx).Prepare\", Method, 0, \"\"},\n\t\t{\"(*Tx).PrepareContext\", Method, 8, \"\"},\n\t\t{\"(*Tx).Query\", Method, 0, \"\"},\n\t\t{\"(*Tx).QueryContext\", Method, 8, \"\"},\n\t\t{\"(*Tx).QueryRow\", Method, 0, \"\"},\n\t\t{\"(*Tx).QueryRowContext\", Method, 8, \"\"},\n\t\t{\"(*Tx).Rollback\", Method, 0, \"\"},\n\t\t{\"(*Tx).Stmt\", Method, 0, \"\"},\n\t\t{\"(*Tx).StmtContext\", Method, 8, \"\"},\n\t\t{\"(IsolationLevel).String\", Method, 11, \"\"},\n\t\t{\"(Null).Value\", Method, 22, \"\"},\n\t\t{\"(NullBool).Value\", Method, 0, \"\"},\n\t\t{\"(NullByte).Value\", Method, 17, \"\"},\n\t\t{\"(NullFloat64).Value\", Method, 0, \"\"},\n\t\t{\"(NullInt16).Value\", Method, 17, \"\"},\n\t\t{\"(NullInt32).Value\", Method, 13, \"\"},\n\t\t{\"(NullInt64).Value\", Method, 0, \"\"},\n\t\t{\"(NullString).Value\", Method, 0, \"\"},\n\t\t{\"(NullTime).Value\", Method, 13, \"\"},\n\t\t{\"(Result).LastInsertId\", Method, 0, \"\"},\n\t\t{\"(Result).RowsAffected\", Method, 0, \"\"},\n\t\t{\"(Scanner).Scan\", Method, 0, \"\"},\n\t\t{\"ColumnType\", Type, 8, \"\"},\n\t\t{\"Conn\", Type, 9, \"\"},\n\t\t{\"DB\", Type, 0, \"\"},\n\t\t{\"DBStats\", Type, 5, \"\"},\n\t\t{\"DBStats.Idle\", Field, 11, \"\"},\n\t\t{\"DBStats.InUse\", Field, 11, \"\"},\n\t\t{\"DBStats.MaxIdleClosed\", Field, 11, \"\"},\n\t\t{\"DBStats.MaxIdleTimeClosed\", Field, 15, \"\"},\n\t\t{\"DBStats.MaxLifetimeClosed\", Field, 11, \"\"},\n\t\t{\"DBStats.MaxOpenConnections\", Field, 11, \"\"},\n\t\t{\"DBStats.OpenConnections\", Field, 5, \"\"},\n\t\t{\"DBStats.WaitCount\", Field, 11, \"\"},\n\t\t{\"DBStats.WaitDuration\", Field, 11, \"\"},\n\t\t{\"Drivers\", Func, 4, \"func() []string\"},\n\t\t{\"ErrConnDone\", Var, 9, \"\"},\n\t\t{\"ErrNoRows\", Var, 0, \"\"},\n\t\t{\"ErrTxDone\", Var, 0, \"\"},\n\t\t{\"IsolationLevel\", Type, 8, \"\"},\n\t\t{\"LevelDefault\", Const, 8, \"\"},\n\t\t{\"LevelLinearizable\", Const, 8, \"\"},\n\t\t{\"LevelReadCommitted\", Const, 8, \"\"},\n\t\t{\"LevelReadUncommitted\", Const, 8, \"\"},\n\t\t{\"LevelRepeatableRead\", Const, 8, \"\"},\n\t\t{\"LevelSerializable\", Const, 8, \"\"},\n\t\t{\"LevelSnapshot\", Const, 8, \"\"},\n\t\t{\"LevelWriteCommitted\", Const, 8, \"\"},\n\t\t{\"Named\", Func, 8, \"func(name string, value any) NamedArg\"},\n\t\t{\"NamedArg\", Type, 8, \"\"},\n\t\t{\"NamedArg.Name\", Field, 8, \"\"},\n\t\t{\"NamedArg.Value\", Field, 8, \"\"},\n\t\t{\"Null\", Type, 22, \"\"},\n\t\t{\"NullBool\", Type, 0, \"\"},\n\t\t{\"NullBool.Bool\", Field, 0, \"\"},\n\t\t{\"NullBool.Valid\", Field, 0, \"\"},\n\t\t{\"NullByte\", Type, 17, \"\"},\n\t\t{\"NullByte.Byte\", Field, 17, \"\"},\n\t\t{\"NullByte.Valid\", Field, 17, \"\"},\n\t\t{\"NullFloat64\", Type, 0, \"\"},\n\t\t{\"NullFloat64.Float64\", Field, 0, \"\"},\n\t\t{\"NullFloat64.Valid\", Field, 0, \"\"},\n\t\t{\"NullInt16\", Type, 17, \"\"},\n\t\t{\"NullInt16.Int16\", Field, 17, \"\"},\n\t\t{\"NullInt16.Valid\", Field, 17, \"\"},\n\t\t{\"NullInt32\", Type, 13, \"\"},\n\t\t{\"NullInt32.Int32\", Field, 13, \"\"},\n\t\t{\"NullInt32.Valid\", Field, 13, \"\"},\n\t\t{\"NullInt64\", Type, 0, \"\"},\n\t\t{\"NullInt64.Int64\", Field, 0, \"\"},\n\t\t{\"NullInt64.Valid\", Field, 0, \"\"},\n\t\t{\"NullString\", Type, 0, \"\"},\n\t\t{\"NullString.String\", Field, 0, \"\"},\n\t\t{\"NullString.Valid\", Field, 0, \"\"},\n\t\t{\"NullTime\", Type, 13, \"\"},\n\t\t{\"NullTime.Time\", Field, 13, \"\"},\n\t\t{\"NullTime.Valid\", Field, 13, \"\"},\n\t\t{\"Open\", Func, 0, \"func(driverName string, dataSourceName string) (*DB, error)\"},\n\t\t{\"OpenDB\", Func, 10, \"func(c driver.Connector) *DB\"},\n\t\t{\"Out\", Type, 9, \"\"},\n\t\t{\"Out.Dest\", Field, 9, \"\"},\n\t\t{\"Out.In\", Field, 9, \"\"},\n\t\t{\"RawBytes\", Type, 0, \"\"},\n\t\t{\"Register\", Func, 0, \"func(name string, driver driver.Driver)\"},\n\t\t{\"Result\", Type, 0, \"\"},\n\t\t{\"Row\", Type, 0, \"\"},\n\t\t{\"Rows\", Type, 0, \"\"},\n\t\t{\"Scanner\", Type, 0, \"\"},\n\t\t{\"Stmt\", Type, 0, \"\"},\n\t\t{\"Tx\", Type, 0, \"\"},\n\t\t{\"TxOptions\", Type, 8, \"\"},\n\t\t{\"TxOptions.Isolation\", Field, 8, \"\"},\n\t\t{\"TxOptions.ReadOnly\", Field, 8, \"\"},\n\t},\n\t\"database/sql/driver\": {\n\t\t{\"(ColumnConverter).ColumnConverter\", Method, 0, \"\"},\n\t\t{\"(Conn).Begin\", Method, 0, \"\"},\n\t\t{\"(Conn).Close\", Method, 0, \"\"},\n\t\t{\"(Conn).Prepare\", Method, 0, \"\"},\n\t\t{\"(ConnBeginTx).BeginTx\", Method, 8, \"\"},\n\t\t{\"(ConnPrepareContext).PrepareContext\", Method, 8, \"\"},\n\t\t{\"(Connector).Connect\", Method, 10, \"\"},\n\t\t{\"(Connector).Driver\", Method, 10, \"\"},\n\t\t{\"(Driver).Open\", Method, 0, \"\"},\n\t\t{\"(DriverContext).OpenConnector\", Method, 10, \"\"},\n\t\t{\"(Execer).Exec\", Method, 0, \"\"},\n\t\t{\"(ExecerContext).ExecContext\", Method, 8, \"\"},\n\t\t{\"(NamedValueChecker).CheckNamedValue\", Method, 9, \"\"},\n\t\t{\"(NotNull).ConvertValue\", Method, 0, \"\"},\n\t\t{\"(Null).ConvertValue\", Method, 0, \"\"},\n\t\t{\"(Pinger).Ping\", Method, 8, \"\"},\n\t\t{\"(Queryer).Query\", Method, 1, \"\"},\n\t\t{\"(QueryerContext).QueryContext\", Method, 8, \"\"},\n\t\t{\"(Result).LastInsertId\", Method, 0, \"\"},\n\t\t{\"(Result).RowsAffected\", Method, 0, \"\"},\n\t\t{\"(Rows).Close\", Method, 0, \"\"},\n\t\t{\"(Rows).Columns\", Method, 0, \"\"},\n\t\t{\"(Rows).Next\", Method, 0, \"\"},\n\t\t{\"(RowsAffected).LastInsertId\", Method, 0, \"\"},\n\t\t{\"(RowsAffected).RowsAffected\", Method, 0, \"\"},\n\t\t{\"(RowsColumnTypeDatabaseTypeName).Close\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeDatabaseTypeName).ColumnTypeDatabaseTypeName\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeDatabaseTypeName).Columns\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeDatabaseTypeName).Next\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeLength).Close\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeLength).ColumnTypeLength\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeLength).Columns\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeLength).Next\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeNullable).Close\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeNullable).ColumnTypeNullable\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeNullable).Columns\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeNullable).Next\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypePrecisionScale).Close\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypePrecisionScale).ColumnTypePrecisionScale\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypePrecisionScale).Columns\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypePrecisionScale).Next\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeScanType).Close\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeScanType).ColumnTypeScanType\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeScanType).Columns\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeScanType).Next\", Method, 8, \"\"},\n\t\t{\"(RowsNextResultSet).Close\", Method, 8, \"\"},\n\t\t{\"(RowsNextResultSet).Columns\", Method, 8, \"\"},\n\t\t{\"(RowsNextResultSet).HasNextResultSet\", Method, 8, \"\"},\n\t\t{\"(RowsNextResultSet).Next\", Method, 8, \"\"},\n\t\t{\"(RowsNextResultSet).NextResultSet\", Method, 8, \"\"},\n\t\t{\"(SessionResetter).ResetSession\", Method, 10, \"\"},\n\t\t{\"(Stmt).Close\", Method, 0, \"\"},\n\t\t{\"(Stmt).Exec\", Method, 0, \"\"},\n\t\t{\"(Stmt).NumInput\", Method, 0, \"\"},\n\t\t{\"(Stmt).Query\", Method, 0, \"\"},\n\t\t{\"(StmtExecContext).ExecContext\", Method, 8, \"\"},\n\t\t{\"(StmtQueryContext).QueryContext\", Method, 8, \"\"},\n\t\t{\"(Tx).Commit\", Method, 0, \"\"},\n\t\t{\"(Tx).Rollback\", Method, 0, \"\"},\n\t\t{\"(Validator).IsValid\", Method, 15, \"\"},\n\t\t{\"(ValueConverter).ConvertValue\", Method, 0, \"\"},\n\t\t{\"(Valuer).Value\", Method, 0, \"\"},\n\t\t{\"Bool\", Var, 0, \"\"},\n\t\t{\"ColumnConverter\", Type, 0, \"\"},\n\t\t{\"Conn\", Type, 0, \"\"},\n\t\t{\"ConnBeginTx\", Type, 8, \"\"},\n\t\t{\"ConnPrepareContext\", Type, 8, \"\"},\n\t\t{\"Connector\", Type, 10, \"\"},\n\t\t{\"DefaultParameterConverter\", Var, 0, \"\"},\n\t\t{\"Driver\", Type, 0, \"\"},\n\t\t{\"DriverContext\", Type, 10, \"\"},\n\t\t{\"ErrBadConn\", Var, 0, \"\"},\n\t\t{\"ErrRemoveArgument\", Var, 9, \"\"},\n\t\t{\"ErrSkip\", Var, 0, \"\"},\n\t\t{\"Execer\", Type, 0, \"\"},\n\t\t{\"ExecerContext\", Type, 8, \"\"},\n\t\t{\"Int32\", Var, 0, \"\"},\n\t\t{\"IsScanValue\", Func, 0, \"func(v any) bool\"},\n\t\t{\"IsValue\", Func, 0, \"func(v any) bool\"},\n\t\t{\"IsolationLevel\", Type, 8, \"\"},\n\t\t{\"NamedValue\", Type, 8, \"\"},\n\t\t{\"NamedValue.Name\", Field, 8, \"\"},\n\t\t{\"NamedValue.Ordinal\", Field, 8, \"\"},\n\t\t{\"NamedValue.Value\", Field, 8, \"\"},\n\t\t{\"NamedValueChecker\", Type, 9, \"\"},\n\t\t{\"NotNull\", Type, 0, \"\"},\n\t\t{\"NotNull.Converter\", Field, 0, \"\"},\n\t\t{\"Null\", Type, 0, \"\"},\n\t\t{\"Null.Converter\", Field, 0, \"\"},\n\t\t{\"Pinger\", Type, 8, \"\"},\n\t\t{\"Queryer\", Type, 1, \"\"},\n\t\t{\"QueryerContext\", Type, 8, \"\"},\n\t\t{\"Result\", Type, 0, \"\"},\n\t\t{\"ResultNoRows\", Var, 0, \"\"},\n\t\t{\"Rows\", Type, 0, \"\"},\n\t\t{\"RowsAffected\", Type, 0, \"\"},\n\t\t{\"RowsColumnTypeDatabaseTypeName\", Type, 8, \"\"},\n\t\t{\"RowsColumnTypeLength\", Type, 8, \"\"},\n\t\t{\"RowsColumnTypeNullable\", Type, 8, \"\"},\n\t\t{\"RowsColumnTypePrecisionScale\", Type, 8, \"\"},\n\t\t{\"RowsColumnTypeScanType\", Type, 8, \"\"},\n\t\t{\"RowsNextResultSet\", Type, 8, \"\"},\n\t\t{\"SessionResetter\", Type, 10, \"\"},\n\t\t{\"Stmt\", Type, 0, \"\"},\n\t\t{\"StmtExecContext\", Type, 8, \"\"},\n\t\t{\"StmtQueryContext\", Type, 8, \"\"},\n\t\t{\"String\", Var, 0, \"\"},\n\t\t{\"Tx\", Type, 0, \"\"},\n\t\t{\"TxOptions\", Type, 8, \"\"},\n\t\t{\"TxOptions.Isolation\", Field, 8, \"\"},\n\t\t{\"TxOptions.ReadOnly\", Field, 8, \"\"},\n\t\t{\"Validator\", Type, 15, \"\"},\n\t\t{\"Value\", Type, 0, \"\"},\n\t\t{\"ValueConverter\", Type, 0, \"\"},\n\t\t{\"Valuer\", Type, 0, \"\"},\n\t},\n\t\"debug/buildinfo\": {\n\t\t{\"BuildInfo\", Type, 18, \"\"},\n\t\t{\"Read\", Func, 18, \"func(r io.ReaderAt) (*BuildInfo, error)\"},\n\t\t{\"ReadFile\", Func, 18, \"func(name string) (info *BuildInfo, err error)\"},\n\t},\n\t\"debug/dwarf\": {\n\t\t{\"(*AddrType).Basic\", Method, 0, \"\"},\n\t\t{\"(*AddrType).Common\", Method, 0, \"\"},\n\t\t{\"(*AddrType).Size\", Method, 0, \"\"},\n\t\t{\"(*AddrType).String\", Method, 0, \"\"},\n\t\t{\"(*ArrayType).Common\", Method, 0, \"\"},\n\t\t{\"(*ArrayType).Size\", Method, 0, \"\"},\n\t\t{\"(*ArrayType).String\", Method, 0, \"\"},\n\t\t{\"(*BasicType).Basic\", Method, 0, \"\"},\n\t\t{\"(*BasicType).Common\", Method, 0, \"\"},\n\t\t{\"(*BasicType).Size\", Method, 0, \"\"},\n\t\t{\"(*BasicType).String\", Method, 0, \"\"},\n\t\t{\"(*BoolType).Basic\", Method, 0, \"\"},\n\t\t{\"(*BoolType).Common\", Method, 0, \"\"},\n\t\t{\"(*BoolType).Size\", Method, 0, \"\"},\n\t\t{\"(*BoolType).String\", Method, 0, \"\"},\n\t\t{\"(*CharType).Basic\", Method, 0, \"\"},\n\t\t{\"(*CharType).Common\", Method, 0, \"\"},\n\t\t{\"(*CharType).Size\", Method, 0, \"\"},\n\t\t{\"(*CharType).String\", Method, 0, \"\"},\n\t\t{\"(*CommonType).Common\", Method, 0, \"\"},\n\t\t{\"(*CommonType).Size\", Method, 0, \"\"},\n\t\t{\"(*ComplexType).Basic\", Method, 0, \"\"},\n\t\t{\"(*ComplexType).Common\", Method, 0, \"\"},\n\t\t{\"(*ComplexType).Size\", Method, 0, \"\"},\n\t\t{\"(*ComplexType).String\", Method, 0, \"\"},\n\t\t{\"(*Data).AddSection\", Method, 14, \"\"},\n\t\t{\"(*Data).AddTypes\", Method, 3, \"\"},\n\t\t{\"(*Data).LineReader\", Method, 5, \"\"},\n\t\t{\"(*Data).Ranges\", Method, 7, \"\"},\n\t\t{\"(*Data).Reader\", Method, 0, \"\"},\n\t\t{\"(*Data).Type\", Method, 0, \"\"},\n\t\t{\"(*DotDotDotType).Common\", Method, 0, \"\"},\n\t\t{\"(*DotDotDotType).Size\", Method, 0, \"\"},\n\t\t{\"(*DotDotDotType).String\", Method, 0, \"\"},\n\t\t{\"(*Entry).AttrField\", Method, 5, \"\"},\n\t\t{\"(*Entry).Val\", Method, 0, \"\"},\n\t\t{\"(*EnumType).Common\", Method, 0, \"\"},\n\t\t{\"(*EnumType).Size\", Method, 0, \"\"},\n\t\t{\"(*EnumType).String\", Method, 0, \"\"},\n\t\t{\"(*FloatType).Basic\", Method, 0, \"\"},\n\t\t{\"(*FloatType).Common\", Method, 0, \"\"},\n\t\t{\"(*FloatType).Size\", Method, 0, \"\"},\n\t\t{\"(*FloatType).String\", Method, 0, \"\"},\n\t\t{\"(*FuncType).Common\", Method, 0, \"\"},\n\t\t{\"(*FuncType).Size\", Method, 0, \"\"},\n\t\t{\"(*FuncType).String\", Method, 0, \"\"},\n\t\t{\"(*IntType).Basic\", Method, 0, \"\"},\n\t\t{\"(*IntType).Common\", Method, 0, \"\"},\n\t\t{\"(*IntType).Size\", Method, 0, \"\"},\n\t\t{\"(*IntType).String\", Method, 0, \"\"},\n\t\t{\"(*LineReader).Files\", Method, 14, \"\"},\n\t\t{\"(*LineReader).Next\", Method, 5, \"\"},\n\t\t{\"(*LineReader).Reset\", Method, 5, \"\"},\n\t\t{\"(*LineReader).Seek\", Method, 5, \"\"},\n\t\t{\"(*LineReader).SeekPC\", Method, 5, \"\"},\n\t\t{\"(*LineReader).Tell\", Method, 5, \"\"},\n\t\t{\"(*PtrType).Common\", Method, 0, \"\"},\n\t\t{\"(*PtrType).Size\", Method, 0, \"\"},\n\t\t{\"(*PtrType).String\", Method, 0, \"\"},\n\t\t{\"(*QualType).Common\", Method, 0, \"\"},\n\t\t{\"(*QualType).Size\", Method, 0, \"\"},\n\t\t{\"(*QualType).String\", Method, 0, \"\"},\n\t\t{\"(*Reader).AddressSize\", Method, 5, \"\"},\n\t\t{\"(*Reader).ByteOrder\", Method, 14, \"\"},\n\t\t{\"(*Reader).Next\", Method, 0, \"\"},\n\t\t{\"(*Reader).Seek\", Method, 0, \"\"},\n\t\t{\"(*Reader).SeekPC\", Method, 7, \"\"},\n\t\t{\"(*Reader).SkipChildren\", Method, 0, \"\"},\n\t\t{\"(*StructType).Common\", Method, 0, \"\"},\n\t\t{\"(*StructType).Defn\", Method, 0, \"\"},\n\t\t{\"(*StructType).Size\", Method, 0, \"\"},\n\t\t{\"(*StructType).String\", Method, 0, \"\"},\n\t\t{\"(*TypedefType).Common\", Method, 0, \"\"},\n\t\t{\"(*TypedefType).Size\", Method, 0, \"\"},\n\t\t{\"(*TypedefType).String\", Method, 0, \"\"},\n\t\t{\"(*UcharType).Basic\", Method, 0, \"\"},\n\t\t{\"(*UcharType).Common\", Method, 0, \"\"},\n\t\t{\"(*UcharType).Size\", Method, 0, \"\"},\n\t\t{\"(*UcharType).String\", Method, 0, \"\"},\n\t\t{\"(*UintType).Basic\", Method, 0, \"\"},\n\t\t{\"(*UintType).Common\", Method, 0, \"\"},\n\t\t{\"(*UintType).Size\", Method, 0, \"\"},\n\t\t{\"(*UintType).String\", Method, 0, \"\"},\n\t\t{\"(*UnspecifiedType).Basic\", Method, 4, \"\"},\n\t\t{\"(*UnspecifiedType).Common\", Method, 4, \"\"},\n\t\t{\"(*UnspecifiedType).Size\", Method, 4, \"\"},\n\t\t{\"(*UnspecifiedType).String\", Method, 4, \"\"},\n\t\t{\"(*UnsupportedType).Common\", Method, 13, \"\"},\n\t\t{\"(*UnsupportedType).Size\", Method, 13, \"\"},\n\t\t{\"(*UnsupportedType).String\", Method, 13, \"\"},\n\t\t{\"(*VoidType).Common\", Method, 0, \"\"},\n\t\t{\"(*VoidType).Size\", Method, 0, \"\"},\n\t\t{\"(*VoidType).String\", Method, 0, \"\"},\n\t\t{\"(Attr).GoString\", Method, 0, \"\"},\n\t\t{\"(Attr).String\", Method, 0, \"\"},\n\t\t{\"(Class).GoString\", Method, 5, \"\"},\n\t\t{\"(Class).String\", Method, 5, \"\"},\n\t\t{\"(DecodeError).Error\", Method, 0, \"\"},\n\t\t{\"(Tag).GoString\", Method, 0, \"\"},\n\t\t{\"(Tag).String\", Method, 0, \"\"},\n\t\t{\"(Type).Common\", Method, 0, \"\"},\n\t\t{\"(Type).Size\", Method, 0, \"\"},\n\t\t{\"(Type).String\", Method, 0, \"\"},\n\t\t{\"AddrType\", Type, 0, \"\"},\n\t\t{\"AddrType.BasicType\", Field, 0, \"\"},\n\t\t{\"ArrayType\", Type, 0, \"\"},\n\t\t{\"ArrayType.CommonType\", Field, 0, \"\"},\n\t\t{\"ArrayType.Count\", Field, 0, \"\"},\n\t\t{\"ArrayType.StrideBitSize\", Field, 0, \"\"},\n\t\t{\"ArrayType.Type\", Field, 0, \"\"},\n\t\t{\"Attr\", Type, 0, \"\"},\n\t\t{\"AttrAbstractOrigin\", Const, 0, \"\"},\n\t\t{\"AttrAccessibility\", Const, 0, \"\"},\n\t\t{\"AttrAddrBase\", Const, 14, \"\"},\n\t\t{\"AttrAddrClass\", Const, 0, \"\"},\n\t\t{\"AttrAlignment\", Const, 14, \"\"},\n\t\t{\"AttrAllocated\", Const, 0, \"\"},\n\t\t{\"AttrArtificial\", Const, 0, \"\"},\n\t\t{\"AttrAssociated\", Const, 0, \"\"},\n\t\t{\"AttrBaseTypes\", Const, 0, \"\"},\n\t\t{\"AttrBinaryScale\", Const, 14, \"\"},\n\t\t{\"AttrBitOffset\", Const, 0, \"\"},\n\t\t{\"AttrBitSize\", Const, 0, \"\"},\n\t\t{\"AttrByteSize\", Const, 0, \"\"},\n\t\t{\"AttrCallAllCalls\", Const, 14, \"\"},\n\t\t{\"AttrCallAllSourceCalls\", Const, 14, \"\"},\n\t\t{\"AttrCallAllTailCalls\", Const, 14, \"\"},\n\t\t{\"AttrCallColumn\", Const, 0, \"\"},\n\t\t{\"AttrCallDataLocation\", Const, 14, \"\"},\n\t\t{\"AttrCallDataValue\", Const, 14, \"\"},\n\t\t{\"AttrCallFile\", Const, 0, \"\"},\n\t\t{\"AttrCallLine\", Const, 0, \"\"},\n\t\t{\"AttrCallOrigin\", Const, 14, \"\"},\n\t\t{\"AttrCallPC\", Const, 14, \"\"},\n\t\t{\"AttrCallParameter\", Const, 14, \"\"},\n\t\t{\"AttrCallReturnPC\", Const, 14, \"\"},\n\t\t{\"AttrCallTailCall\", Const, 14, \"\"},\n\t\t{\"AttrCallTarget\", Const, 14, \"\"},\n\t\t{\"AttrCallTargetClobbered\", Const, 14, \"\"},\n\t\t{\"AttrCallValue\", Const, 14, \"\"},\n\t\t{\"AttrCalling\", Const, 0, \"\"},\n\t\t{\"AttrCommonRef\", Const, 0, \"\"},\n\t\t{\"AttrCompDir\", Const, 0, \"\"},\n\t\t{\"AttrConstExpr\", Const, 14, \"\"},\n\t\t{\"AttrConstValue\", Const, 0, \"\"},\n\t\t{\"AttrContainingType\", Const, 0, \"\"},\n\t\t{\"AttrCount\", Const, 0, \"\"},\n\t\t{\"AttrDataBitOffset\", Const, 14, \"\"},\n\t\t{\"AttrDataLocation\", Const, 0, \"\"},\n\t\t{\"AttrDataMemberLoc\", Const, 0, \"\"},\n\t\t{\"AttrDecimalScale\", Const, 14, \"\"},\n\t\t{\"AttrDecimalSign\", Const, 14, \"\"},\n\t\t{\"AttrDeclColumn\", Const, 0, \"\"},\n\t\t{\"AttrDeclFile\", Const, 0, \"\"},\n\t\t{\"AttrDeclLine\", Const, 0, \"\"},\n\t\t{\"AttrDeclaration\", Const, 0, \"\"},\n\t\t{\"AttrDefaultValue\", Const, 0, \"\"},\n\t\t{\"AttrDefaulted\", Const, 14, \"\"},\n\t\t{\"AttrDeleted\", Const, 14, \"\"},\n\t\t{\"AttrDescription\", Const, 0, \"\"},\n\t\t{\"AttrDigitCount\", Const, 14, \"\"},\n\t\t{\"AttrDiscr\", Const, 0, \"\"},\n\t\t{\"AttrDiscrList\", Const, 0, \"\"},\n\t\t{\"AttrDiscrValue\", Const, 0, \"\"},\n\t\t{\"AttrDwoName\", Const, 14, \"\"},\n\t\t{\"AttrElemental\", Const, 14, \"\"},\n\t\t{\"AttrEncoding\", Const, 0, \"\"},\n\t\t{\"AttrEndianity\", Const, 14, \"\"},\n\t\t{\"AttrEntrypc\", Const, 0, \"\"},\n\t\t{\"AttrEnumClass\", Const, 14, \"\"},\n\t\t{\"AttrExplicit\", Const, 14, \"\"},\n\t\t{\"AttrExportSymbols\", Const, 14, \"\"},\n\t\t{\"AttrExtension\", Const, 0, \"\"},\n\t\t{\"AttrExternal\", Const, 0, \"\"},\n\t\t{\"AttrFrameBase\", Const, 0, \"\"},\n\t\t{\"AttrFriend\", Const, 0, \"\"},\n\t\t{\"AttrHighpc\", Const, 0, \"\"},\n\t\t{\"AttrIdentifierCase\", Const, 0, \"\"},\n\t\t{\"AttrImport\", Const, 0, \"\"},\n\t\t{\"AttrInline\", Const, 0, \"\"},\n\t\t{\"AttrIsOptional\", Const, 0, \"\"},\n\t\t{\"AttrLanguage\", Const, 0, \"\"},\n\t\t{\"AttrLinkageName\", Const, 14, \"\"},\n\t\t{\"AttrLocation\", Const, 0, \"\"},\n\t\t{\"AttrLoclistsBase\", Const, 14, \"\"},\n\t\t{\"AttrLowerBound\", Const, 0, \"\"},\n\t\t{\"AttrLowpc\", Const, 0, \"\"},\n\t\t{\"AttrMacroInfo\", Const, 0, \"\"},\n\t\t{\"AttrMacros\", Const, 14, \"\"},\n\t\t{\"AttrMainSubprogram\", Const, 14, \"\"},\n\t\t{\"AttrMutable\", Const, 14, \"\"},\n\t\t{\"AttrName\", Const, 0, \"\"},\n\t\t{\"AttrNamelistItem\", Const, 0, \"\"},\n\t\t{\"AttrNoreturn\", Const, 14, \"\"},\n\t\t{\"AttrObjectPointer\", Const, 14, \"\"},\n\t\t{\"AttrOrdering\", Const, 0, \"\"},\n\t\t{\"AttrPictureString\", Const, 14, \"\"},\n\t\t{\"AttrPriority\", Const, 0, \"\"},\n\t\t{\"AttrProducer\", Const, 0, \"\"},\n\t\t{\"AttrPrototyped\", Const, 0, \"\"},\n\t\t{\"AttrPure\", Const, 14, \"\"},\n\t\t{\"AttrRanges\", Const, 0, \"\"},\n\t\t{\"AttrRank\", Const, 14, \"\"},\n\t\t{\"AttrRecursive\", Const, 14, \"\"},\n\t\t{\"AttrReference\", Const, 14, \"\"},\n\t\t{\"AttrReturnAddr\", Const, 0, \"\"},\n\t\t{\"AttrRnglistsBase\", Const, 14, \"\"},\n\t\t{\"AttrRvalueReference\", Const, 14, \"\"},\n\t\t{\"AttrSegment\", Const, 0, \"\"},\n\t\t{\"AttrSibling\", Const, 0, \"\"},\n\t\t{\"AttrSignature\", Const, 14, \"\"},\n\t\t{\"AttrSmall\", Const, 14, \"\"},\n\t\t{\"AttrSpecification\", Const, 0, \"\"},\n\t\t{\"AttrStartScope\", Const, 0, \"\"},\n\t\t{\"AttrStaticLink\", Const, 0, \"\"},\n\t\t{\"AttrStmtList\", Const, 0, \"\"},\n\t\t{\"AttrStrOffsetsBase\", Const, 14, \"\"},\n\t\t{\"AttrStride\", Const, 0, \"\"},\n\t\t{\"AttrStrideSize\", Const, 0, \"\"},\n\t\t{\"AttrStringLength\", Const, 0, \"\"},\n\t\t{\"AttrStringLengthBitSize\", Const, 14, \"\"},\n\t\t{\"AttrStringLengthByteSize\", Const, 14, \"\"},\n\t\t{\"AttrThreadsScaled\", Const, 14, \"\"},\n\t\t{\"AttrTrampoline\", Const, 0, \"\"},\n\t\t{\"AttrType\", Const, 0, \"\"},\n\t\t{\"AttrUpperBound\", Const, 0, \"\"},\n\t\t{\"AttrUseLocation\", Const, 0, \"\"},\n\t\t{\"AttrUseUTF8\", Const, 0, \"\"},\n\t\t{\"AttrVarParam\", Const, 0, \"\"},\n\t\t{\"AttrVirtuality\", Const, 0, \"\"},\n\t\t{\"AttrVisibility\", Const, 0, \"\"},\n\t\t{\"AttrVtableElemLoc\", Const, 0, \"\"},\n\t\t{\"BasicType\", Type, 0, \"\"},\n\t\t{\"BasicType.BitOffset\", Field, 0, \"\"},\n\t\t{\"BasicType.BitSize\", Field, 0, \"\"},\n\t\t{\"BasicType.CommonType\", Field, 0, \"\"},\n\t\t{\"BasicType.DataBitOffset\", Field, 18, \"\"},\n\t\t{\"BoolType\", Type, 0, \"\"},\n\t\t{\"BoolType.BasicType\", Field, 0, \"\"},\n\t\t{\"CharType\", Type, 0, \"\"},\n\t\t{\"CharType.BasicType\", Field, 0, \"\"},\n\t\t{\"Class\", Type, 5, \"\"},\n\t\t{\"ClassAddrPtr\", Const, 14, \"\"},\n\t\t{\"ClassAddress\", Const, 5, \"\"},\n\t\t{\"ClassBlock\", Const, 5, \"\"},\n\t\t{\"ClassConstant\", Const, 5, \"\"},\n\t\t{\"ClassExprLoc\", Const, 5, \"\"},\n\t\t{\"ClassFlag\", Const, 5, \"\"},\n\t\t{\"ClassLinePtr\", Const, 5, \"\"},\n\t\t{\"ClassLocList\", Const, 14, \"\"},\n\t\t{\"ClassLocListPtr\", Const, 5, \"\"},\n\t\t{\"ClassMacPtr\", Const, 5, \"\"},\n\t\t{\"ClassRangeListPtr\", Const, 5, \"\"},\n\t\t{\"ClassReference\", Const, 5, \"\"},\n\t\t{\"ClassReferenceAlt\", Const, 5, \"\"},\n\t\t{\"ClassReferenceSig\", Const, 5, \"\"},\n\t\t{\"ClassRngList\", Const, 14, \"\"},\n\t\t{\"ClassRngListsPtr\", Const, 14, \"\"},\n\t\t{\"ClassStrOffsetsPtr\", Const, 14, \"\"},\n\t\t{\"ClassString\", Const, 5, \"\"},\n\t\t{\"ClassStringAlt\", Const, 5, \"\"},\n\t\t{\"ClassUnknown\", Const, 6, \"\"},\n\t\t{\"CommonType\", Type, 0, \"\"},\n\t\t{\"CommonType.ByteSize\", Field, 0, \"\"},\n\t\t{\"CommonType.Name\", Field, 0, \"\"},\n\t\t{\"ComplexType\", Type, 0, \"\"},\n\t\t{\"ComplexType.BasicType\", Field, 0, \"\"},\n\t\t{\"Data\", Type, 0, \"\"},\n\t\t{\"DecodeError\", Type, 0, \"\"},\n\t\t{\"DecodeError.Err\", Field, 0, \"\"},\n\t\t{\"DecodeError.Name\", Field, 0, \"\"},\n\t\t{\"DecodeError.Offset\", Field, 0, \"\"},\n\t\t{\"DotDotDotType\", Type, 0, \"\"},\n\t\t{\"DotDotDotType.CommonType\", Field, 0, \"\"},\n\t\t{\"Entry\", Type, 0, \"\"},\n\t\t{\"Entry.Children\", Field, 0, \"\"},\n\t\t{\"Entry.Field\", Field, 0, \"\"},\n\t\t{\"Entry.Offset\", Field, 0, \"\"},\n\t\t{\"Entry.Tag\", Field, 0, \"\"},\n\t\t{\"EnumType\", Type, 0, \"\"},\n\t\t{\"EnumType.CommonType\", Field, 0, \"\"},\n\t\t{\"EnumType.EnumName\", Field, 0, \"\"},\n\t\t{\"EnumType.Val\", Field, 0, \"\"},\n\t\t{\"EnumValue\", Type, 0, \"\"},\n\t\t{\"EnumValue.Name\", Field, 0, \"\"},\n\t\t{\"EnumValue.Val\", Field, 0, \"\"},\n\t\t{\"ErrUnknownPC\", Var, 5, \"\"},\n\t\t{\"Field\", Type, 0, \"\"},\n\t\t{\"Field.Attr\", Field, 0, \"\"},\n\t\t{\"Field.Class\", Field, 5, \"\"},\n\t\t{\"Field.Val\", Field, 0, \"\"},\n\t\t{\"FloatType\", Type, 0, \"\"},\n\t\t{\"FloatType.BasicType\", Field, 0, \"\"},\n\t\t{\"FuncType\", Type, 0, \"\"},\n\t\t{\"FuncType.CommonType\", Field, 0, \"\"},\n\t\t{\"FuncType.ParamType\", Field, 0, \"\"},\n\t\t{\"FuncType.ReturnType\", Field, 0, \"\"},\n\t\t{\"IntType\", Type, 0, \"\"},\n\t\t{\"IntType.BasicType\", Field, 0, \"\"},\n\t\t{\"LineEntry\", Type, 5, \"\"},\n\t\t{\"LineEntry.Address\", Field, 5, \"\"},\n\t\t{\"LineEntry.BasicBlock\", Field, 5, \"\"},\n\t\t{\"LineEntry.Column\", Field, 5, \"\"},\n\t\t{\"LineEntry.Discriminator\", Field, 5, \"\"},\n\t\t{\"LineEntry.EndSequence\", Field, 5, \"\"},\n\t\t{\"LineEntry.EpilogueBegin\", Field, 5, \"\"},\n\t\t{\"LineEntry.File\", Field, 5, \"\"},\n\t\t{\"LineEntry.ISA\", Field, 5, \"\"},\n\t\t{\"LineEntry.IsStmt\", Field, 5, \"\"},\n\t\t{\"LineEntry.Line\", Field, 5, \"\"},\n\t\t{\"LineEntry.OpIndex\", Field, 5, \"\"},\n\t\t{\"LineEntry.PrologueEnd\", Field, 5, \"\"},\n\t\t{\"LineFile\", Type, 5, \"\"},\n\t\t{\"LineFile.Length\", Field, 5, \"\"},\n\t\t{\"LineFile.Mtime\", Field, 5, \"\"},\n\t\t{\"LineFile.Name\", Field, 5, \"\"},\n\t\t{\"LineReader\", Type, 5, \"\"},\n\t\t{\"LineReaderPos\", Type, 5, \"\"},\n\t\t{\"New\", Func, 0, \"func(abbrev []byte, aranges []byte, frame []byte, info []byte, line []byte, pubnames []byte, ranges []byte, str []byte) (*Data, error)\"},\n\t\t{\"Offset\", Type, 0, \"\"},\n\t\t{\"PtrType\", Type, 0, \"\"},\n\t\t{\"PtrType.CommonType\", Field, 0, \"\"},\n\t\t{\"PtrType.Type\", Field, 0, \"\"},\n\t\t{\"QualType\", Type, 0, \"\"},\n\t\t{\"QualType.CommonType\", Field, 0, \"\"},\n\t\t{\"QualType.Qual\", Field, 0, \"\"},\n\t\t{\"QualType.Type\", Field, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"StructField\", Type, 0, \"\"},\n\t\t{\"StructField.BitOffset\", Field, 0, \"\"},\n\t\t{\"StructField.BitSize\", Field, 0, \"\"},\n\t\t{\"StructField.ByteOffset\", Field, 0, \"\"},\n\t\t{\"StructField.ByteSize\", Field, 0, \"\"},\n\t\t{\"StructField.DataBitOffset\", Field, 18, \"\"},\n\t\t{\"StructField.Name\", Field, 0, \"\"},\n\t\t{\"StructField.Type\", Field, 0, \"\"},\n\t\t{\"StructType\", Type, 0, \"\"},\n\t\t{\"StructType.CommonType\", Field, 0, \"\"},\n\t\t{\"StructType.Field\", Field, 0, \"\"},\n\t\t{\"StructType.Incomplete\", Field, 0, \"\"},\n\t\t{\"StructType.Kind\", Field, 0, \"\"},\n\t\t{\"StructType.StructName\", Field, 0, \"\"},\n\t\t{\"Tag\", Type, 0, \"\"},\n\t\t{\"TagAccessDeclaration\", Const, 0, \"\"},\n\t\t{\"TagArrayType\", Const, 0, \"\"},\n\t\t{\"TagAtomicType\", Const, 14, \"\"},\n\t\t{\"TagBaseType\", Const, 0, \"\"},\n\t\t{\"TagCallSite\", Const, 14, \"\"},\n\t\t{\"TagCallSiteParameter\", Const, 14, \"\"},\n\t\t{\"TagCatchDwarfBlock\", Const, 0, \"\"},\n\t\t{\"TagClassType\", Const, 0, \"\"},\n\t\t{\"TagCoarrayType\", Const, 14, \"\"},\n\t\t{\"TagCommonDwarfBlock\", Const, 0, \"\"},\n\t\t{\"TagCommonInclusion\", Const, 0, \"\"},\n\t\t{\"TagCompileUnit\", Const, 0, \"\"},\n\t\t{\"TagCondition\", Const, 3, \"\"},\n\t\t{\"TagConstType\", Const, 0, \"\"},\n\t\t{\"TagConstant\", Const, 0, \"\"},\n\t\t{\"TagDwarfProcedure\", Const, 0, \"\"},\n\t\t{\"TagDynamicType\", Const, 14, \"\"},\n\t\t{\"TagEntryPoint\", Const, 0, \"\"},\n\t\t{\"TagEnumerationType\", Const, 0, \"\"},\n\t\t{\"TagEnumerator\", Const, 0, \"\"},\n\t\t{\"TagFileType\", Const, 0, \"\"},\n\t\t{\"TagFormalParameter\", Const, 0, \"\"},\n\t\t{\"TagFriend\", Const, 0, \"\"},\n\t\t{\"TagGenericSubrange\", Const, 14, \"\"},\n\t\t{\"TagImmutableType\", Const, 14, \"\"},\n\t\t{\"TagImportedDeclaration\", Const, 0, \"\"},\n\t\t{\"TagImportedModule\", Const, 0, \"\"},\n\t\t{\"TagImportedUnit\", Const, 0, \"\"},\n\t\t{\"TagInheritance\", Const, 0, \"\"},\n\t\t{\"TagInlinedSubroutine\", Const, 0, \"\"},\n\t\t{\"TagInterfaceType\", Const, 0, \"\"},\n\t\t{\"TagLabel\", Const, 0, \"\"},\n\t\t{\"TagLexDwarfBlock\", Const, 0, \"\"},\n\t\t{\"TagMember\", Const, 0, \"\"},\n\t\t{\"TagModule\", Const, 0, \"\"},\n\t\t{\"TagMutableType\", Const, 0, \"\"},\n\t\t{\"TagNamelist\", Const, 0, \"\"},\n\t\t{\"TagNamelistItem\", Const, 0, \"\"},\n\t\t{\"TagNamespace\", Const, 0, \"\"},\n\t\t{\"TagPackedType\", Const, 0, \"\"},\n\t\t{\"TagPartialUnit\", Const, 0, \"\"},\n\t\t{\"TagPointerType\", Const, 0, \"\"},\n\t\t{\"TagPtrToMemberType\", Const, 0, \"\"},\n\t\t{\"TagReferenceType\", Const, 0, \"\"},\n\t\t{\"TagRestrictType\", Const, 0, \"\"},\n\t\t{\"TagRvalueReferenceType\", Const, 3, \"\"},\n\t\t{\"TagSetType\", Const, 0, \"\"},\n\t\t{\"TagSharedType\", Const, 3, \"\"},\n\t\t{\"TagSkeletonUnit\", Const, 14, \"\"},\n\t\t{\"TagStringType\", Const, 0, \"\"},\n\t\t{\"TagStructType\", Const, 0, \"\"},\n\t\t{\"TagSubprogram\", Const, 0, \"\"},\n\t\t{\"TagSubrangeType\", Const, 0, \"\"},\n\t\t{\"TagSubroutineType\", Const, 0, \"\"},\n\t\t{\"TagTemplateAlias\", Const, 3, \"\"},\n\t\t{\"TagTemplateTypeParameter\", Const, 0, \"\"},\n\t\t{\"TagTemplateValueParameter\", Const, 0, \"\"},\n\t\t{\"TagThrownType\", Const, 0, \"\"},\n\t\t{\"TagTryDwarfBlock\", Const, 0, \"\"},\n\t\t{\"TagTypeUnit\", Const, 3, \"\"},\n\t\t{\"TagTypedef\", Const, 0, \"\"},\n\t\t{\"TagUnionType\", Const, 0, \"\"},\n\t\t{\"TagUnspecifiedParameters\", Const, 0, \"\"},\n\t\t{\"TagUnspecifiedType\", Const, 0, \"\"},\n\t\t{\"TagVariable\", Const, 0, \"\"},\n\t\t{\"TagVariant\", Const, 0, \"\"},\n\t\t{\"TagVariantPart\", Const, 0, \"\"},\n\t\t{\"TagVolatileType\", Const, 0, \"\"},\n\t\t{\"TagWithStmt\", Const, 0, \"\"},\n\t\t{\"Type\", Type, 0, \"\"},\n\t\t{\"TypedefType\", Type, 0, \"\"},\n\t\t{\"TypedefType.CommonType\", Field, 0, \"\"},\n\t\t{\"TypedefType.Type\", Field, 0, \"\"},\n\t\t{\"UcharType\", Type, 0, \"\"},\n\t\t{\"UcharType.BasicType\", Field, 0, \"\"},\n\t\t{\"UintType\", Type, 0, \"\"},\n\t\t{\"UintType.BasicType\", Field, 0, \"\"},\n\t\t{\"UnspecifiedType\", Type, 4, \"\"},\n\t\t{\"UnspecifiedType.BasicType\", Field, 4, \"\"},\n\t\t{\"UnsupportedType\", Type, 13, \"\"},\n\t\t{\"UnsupportedType.CommonType\", Field, 13, \"\"},\n\t\t{\"UnsupportedType.Tag\", Field, 13, \"\"},\n\t\t{\"VoidType\", Type, 0, \"\"},\n\t\t{\"VoidType.CommonType\", Field, 0, \"\"},\n\t},\n\t\"debug/elf\": {\n\t\t{\"(*File).Close\", Method, 0, \"\"},\n\t\t{\"(*File).DWARF\", Method, 0, \"\"},\n\t\t{\"(*File).DynString\", Method, 1, \"\"},\n\t\t{\"(*File).DynValue\", Method, 21, \"\"},\n\t\t{\"(*File).DynamicSymbols\", Method, 4, \"\"},\n\t\t{\"(*File).DynamicVersionNeeds\", Method, 24, \"\"},\n\t\t{\"(*File).DynamicVersions\", Method, 24, \"\"},\n\t\t{\"(*File).ImportedLibraries\", Method, 0, \"\"},\n\t\t{\"(*File).ImportedSymbols\", Method, 0, \"\"},\n\t\t{\"(*File).Section\", Method, 0, \"\"},\n\t\t{\"(*File).SectionByType\", Method, 0, \"\"},\n\t\t{\"(*File).Symbols\", Method, 0, \"\"},\n\t\t{\"(*FormatError).Error\", Method, 0, \"\"},\n\t\t{\"(*Prog).Open\", Method, 0, \"\"},\n\t\t{\"(*Section).Data\", Method, 0, \"\"},\n\t\t{\"(*Section).Open\", Method, 0, \"\"},\n\t\t{\"(Class).GoString\", Method, 0, \"\"},\n\t\t{\"(Class).String\", Method, 0, \"\"},\n\t\t{\"(CompressionType).GoString\", Method, 6, \"\"},\n\t\t{\"(CompressionType).String\", Method, 6, \"\"},\n\t\t{\"(Data).GoString\", Method, 0, \"\"},\n\t\t{\"(Data).String\", Method, 0, \"\"},\n\t\t{\"(DynFlag).GoString\", Method, 0, \"\"},\n\t\t{\"(DynFlag).String\", Method, 0, \"\"},\n\t\t{\"(DynFlag1).GoString\", Method, 21, \"\"},\n\t\t{\"(DynFlag1).String\", Method, 21, \"\"},\n\t\t{\"(DynTag).GoString\", Method, 0, \"\"},\n\t\t{\"(DynTag).String\", Method, 0, \"\"},\n\t\t{\"(Machine).GoString\", Method, 0, \"\"},\n\t\t{\"(Machine).String\", Method, 0, \"\"},\n\t\t{\"(NType).GoString\", Method, 0, \"\"},\n\t\t{\"(NType).String\", Method, 0, \"\"},\n\t\t{\"(OSABI).GoString\", Method, 0, \"\"},\n\t\t{\"(OSABI).String\", Method, 0, \"\"},\n\t\t{\"(Prog).ReadAt\", Method, 0, \"\"},\n\t\t{\"(ProgFlag).GoString\", Method, 0, \"\"},\n\t\t{\"(ProgFlag).String\", Method, 0, \"\"},\n\t\t{\"(ProgType).GoString\", Method, 0, \"\"},\n\t\t{\"(ProgType).String\", Method, 0, \"\"},\n\t\t{\"(R_386).GoString\", Method, 0, \"\"},\n\t\t{\"(R_386).String\", Method, 0, \"\"},\n\t\t{\"(R_390).GoString\", Method, 7, \"\"},\n\t\t{\"(R_390).String\", Method, 7, \"\"},\n\t\t{\"(R_AARCH64).GoString\", Method, 4, \"\"},\n\t\t{\"(R_AARCH64).String\", Method, 4, \"\"},\n\t\t{\"(R_ALPHA).GoString\", Method, 0, \"\"},\n\t\t{\"(R_ALPHA).String\", Method, 0, \"\"},\n\t\t{\"(R_ARM).GoString\", Method, 0, \"\"},\n\t\t{\"(R_ARM).String\", Method, 0, \"\"},\n\t\t{\"(R_LARCH).GoString\", Method, 19, \"\"},\n\t\t{\"(R_LARCH).String\", Method, 19, \"\"},\n\t\t{\"(R_MIPS).GoString\", Method, 6, \"\"},\n\t\t{\"(R_MIPS).String\", Method, 6, \"\"},\n\t\t{\"(R_PPC).GoString\", Method, 0, \"\"},\n\t\t{\"(R_PPC).String\", Method, 0, \"\"},\n\t\t{\"(R_PPC64).GoString\", Method, 5, \"\"},\n\t\t{\"(R_PPC64).String\", Method, 5, \"\"},\n\t\t{\"(R_RISCV).GoString\", Method, 11, \"\"},\n\t\t{\"(R_RISCV).String\", Method, 11, \"\"},\n\t\t{\"(R_SPARC).GoString\", Method, 0, \"\"},\n\t\t{\"(R_SPARC).String\", Method, 0, \"\"},\n\t\t{\"(R_X86_64).GoString\", Method, 0, \"\"},\n\t\t{\"(R_X86_64).String\", Method, 0, \"\"},\n\t\t{\"(Section).ReadAt\", Method, 0, \"\"},\n\t\t{\"(SectionFlag).GoString\", Method, 0, \"\"},\n\t\t{\"(SectionFlag).String\", Method, 0, \"\"},\n\t\t{\"(SectionIndex).GoString\", Method, 0, \"\"},\n\t\t{\"(SectionIndex).String\", Method, 0, \"\"},\n\t\t{\"(SectionType).GoString\", Method, 0, \"\"},\n\t\t{\"(SectionType).String\", Method, 0, \"\"},\n\t\t{\"(SymBind).GoString\", Method, 0, \"\"},\n\t\t{\"(SymBind).String\", Method, 0, \"\"},\n\t\t{\"(SymType).GoString\", Method, 0, \"\"},\n\t\t{\"(SymType).String\", Method, 0, \"\"},\n\t\t{\"(SymVis).GoString\", Method, 0, \"\"},\n\t\t{\"(SymVis).String\", Method, 0, \"\"},\n\t\t{\"(Type).GoString\", Method, 0, \"\"},\n\t\t{\"(Type).String\", Method, 0, \"\"},\n\t\t{\"(Version).GoString\", Method, 0, \"\"},\n\t\t{\"(Version).String\", Method, 0, \"\"},\n\t\t{\"(VersionIndex).Index\", Method, 24, \"\"},\n\t\t{\"(VersionIndex).IsHidden\", Method, 24, \"\"},\n\t\t{\"ARM_MAGIC_TRAMP_NUMBER\", Const, 0, \"\"},\n\t\t{\"COMPRESS_HIOS\", Const, 6, \"\"},\n\t\t{\"COMPRESS_HIPROC\", Const, 6, \"\"},\n\t\t{\"COMPRESS_LOOS\", Const, 6, \"\"},\n\t\t{\"COMPRESS_LOPROC\", Const, 6, \"\"},\n\t\t{\"COMPRESS_ZLIB\", Const, 6, \"\"},\n\t\t{\"COMPRESS_ZSTD\", Const, 21, \"\"},\n\t\t{\"Chdr32\", Type, 6, \"\"},\n\t\t{\"Chdr32.Addralign\", Field, 6, \"\"},\n\t\t{\"Chdr32.Size\", Field, 6, \"\"},\n\t\t{\"Chdr32.Type\", Field, 6, \"\"},\n\t\t{\"Chdr64\", Type, 6, \"\"},\n\t\t{\"Chdr64.Addralign\", Field, 6, \"\"},\n\t\t{\"Chdr64.Size\", Field, 6, \"\"},\n\t\t{\"Chdr64.Type\", Field, 6, \"\"},\n\t\t{\"Class\", Type, 0, \"\"},\n\t\t{\"CompressionType\", Type, 6, \"\"},\n\t\t{\"DF_1_CONFALT\", Const, 21, \"\"},\n\t\t{\"DF_1_DIRECT\", Const, 21, \"\"},\n\t\t{\"DF_1_DISPRELDNE\", Const, 21, \"\"},\n\t\t{\"DF_1_DISPRELPND\", Const, 21, \"\"},\n\t\t{\"DF_1_EDITED\", Const, 21, \"\"},\n\t\t{\"DF_1_ENDFILTEE\", Const, 21, \"\"},\n\t\t{\"DF_1_GLOBAL\", Const, 21, \"\"},\n\t\t{\"DF_1_GLOBAUDIT\", Const, 21, \"\"},\n\t\t{\"DF_1_GROUP\", Const, 21, \"\"},\n\t\t{\"DF_1_IGNMULDEF\", Const, 21, \"\"},\n\t\t{\"DF_1_INITFIRST\", Const, 21, \"\"},\n\t\t{\"DF_1_INTERPOSE\", Const, 21, \"\"},\n\t\t{\"DF_1_KMOD\", Const, 21, \"\"},\n\t\t{\"DF_1_LOADFLTR\", Const, 21, \"\"},\n\t\t{\"DF_1_NOCOMMON\", Const, 21, \"\"},\n\t\t{\"DF_1_NODEFLIB\", Const, 21, \"\"},\n\t\t{\"DF_1_NODELETE\", Const, 21, \"\"},\n\t\t{\"DF_1_NODIRECT\", Const, 21, \"\"},\n\t\t{\"DF_1_NODUMP\", Const, 21, \"\"},\n\t\t{\"DF_1_NOHDR\", Const, 21, \"\"},\n\t\t{\"DF_1_NOKSYMS\", Const, 21, \"\"},\n\t\t{\"DF_1_NOOPEN\", Const, 21, \"\"},\n\t\t{\"DF_1_NORELOC\", Const, 21, \"\"},\n\t\t{\"DF_1_NOW\", Const, 21, \"\"},\n\t\t{\"DF_1_ORIGIN\", Const, 21, \"\"},\n\t\t{\"DF_1_PIE\", Const, 21, \"\"},\n\t\t{\"DF_1_SINGLETON\", Const, 21, \"\"},\n\t\t{\"DF_1_STUB\", Const, 21, \"\"},\n\t\t{\"DF_1_SYMINTPOSE\", Const, 21, \"\"},\n\t\t{\"DF_1_TRANS\", Const, 21, \"\"},\n\t\t{\"DF_1_WEAKFILTER\", Const, 21, \"\"},\n\t\t{\"DF_BIND_NOW\", Const, 0, \"\"},\n\t\t{\"DF_ORIGIN\", Const, 0, \"\"},\n\t\t{\"DF_STATIC_TLS\", Const, 0, \"\"},\n\t\t{\"DF_SYMBOLIC\", Const, 0, \"\"},\n\t\t{\"DF_TEXTREL\", Const, 0, \"\"},\n\t\t{\"DT_ADDRRNGHI\", Const, 16, \"\"},\n\t\t{\"DT_ADDRRNGLO\", Const, 16, \"\"},\n\t\t{\"DT_AUDIT\", Const, 16, \"\"},\n\t\t{\"DT_AUXILIARY\", Const, 16, \"\"},\n\t\t{\"DT_BIND_NOW\", Const, 0, \"\"},\n\t\t{\"DT_CHECKSUM\", Const, 16, \"\"},\n\t\t{\"DT_CONFIG\", Const, 16, \"\"},\n\t\t{\"DT_DEBUG\", Const, 0, \"\"},\n\t\t{\"DT_DEPAUDIT\", Const, 16, \"\"},\n\t\t{\"DT_ENCODING\", Const, 0, \"\"},\n\t\t{\"DT_FEATURE\", Const, 16, \"\"},\n\t\t{\"DT_FILTER\", Const, 16, \"\"},\n\t\t{\"DT_FINI\", Const, 0, \"\"},\n\t\t{\"DT_FINI_ARRAY\", Const, 0, \"\"},\n\t\t{\"DT_FINI_ARRAYSZ\", Const, 0, \"\"},\n\t\t{\"DT_FLAGS\", Const, 0, \"\"},\n\t\t{\"DT_FLAGS_1\", Const, 16, \"\"},\n\t\t{\"DT_GNU_CONFLICT\", Const, 16, \"\"},\n\t\t{\"DT_GNU_CONFLICTSZ\", Const, 16, \"\"},\n\t\t{\"DT_GNU_HASH\", Const, 16, \"\"},\n\t\t{\"DT_GNU_LIBLIST\", Const, 16, \"\"},\n\t\t{\"DT_GNU_LIBLISTSZ\", Const, 16, \"\"},\n\t\t{\"DT_GNU_PRELINKED\", Const, 16, \"\"},\n\t\t{\"DT_HASH\", Const, 0, \"\"},\n\t\t{\"DT_HIOS\", Const, 0, \"\"},\n\t\t{\"DT_HIPROC\", Const, 0, \"\"},\n\t\t{\"DT_INIT\", Const, 0, \"\"},\n\t\t{\"DT_INIT_ARRAY\", Const, 0, \"\"},\n\t\t{\"DT_INIT_ARRAYSZ\", Const, 0, \"\"},\n\t\t{\"DT_JMPREL\", Const, 0, \"\"},\n\t\t{\"DT_LOOS\", Const, 0, \"\"},\n\t\t{\"DT_LOPROC\", Const, 0, \"\"},\n\t\t{\"DT_MIPS_AUX_DYNAMIC\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_BASE_ADDRESS\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_COMPACT_SIZE\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_CONFLICT\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_CONFLICTNO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_CXX_FLAGS\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_CLASS\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_CLASSSYM\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_CLASSSYM_NO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_CLASS_NO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_INSTANCE\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_INSTANCE_NO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_RELOC\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_RELOC_NO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_SYM\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_SYM_NO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DYNSTR_ALIGN\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_FLAGS\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_GOTSYM\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_GP_VALUE\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_HIDDEN_GOTIDX\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_HIPAGENO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_ICHECKSUM\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_INTERFACE\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_INTERFACE_SIZE\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_IVERSION\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_LIBLIST\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_LIBLISTNO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_LOCALPAGE_GOTIDX\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_LOCAL_GOTIDX\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_LOCAL_GOTNO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_MSYM\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_OPTIONS\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_PERF_SUFFIX\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_PIXIE_INIT\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_PLTGOT\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_PROTECTED_GOTIDX\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_RLD_MAP\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_RLD_MAP_REL\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_RLD_TEXT_RESOLVE_ADDR\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_RLD_VERSION\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_RWPLT\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_SYMBOL_LIB\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_SYMTABNO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_TIME_STAMP\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_UNREFEXTNO\", Const, 16, \"\"},\n\t\t{\"DT_MOVEENT\", Const, 16, \"\"},\n\t\t{\"DT_MOVESZ\", Const, 16, \"\"},\n\t\t{\"DT_MOVETAB\", Const, 16, \"\"},\n\t\t{\"DT_NEEDED\", Const, 0, \"\"},\n\t\t{\"DT_NULL\", Const, 0, \"\"},\n\t\t{\"DT_PLTGOT\", Const, 0, \"\"},\n\t\t{\"DT_PLTPAD\", Const, 16, \"\"},\n\t\t{\"DT_PLTPADSZ\", Const, 16, \"\"},\n\t\t{\"DT_PLTREL\", Const, 0, \"\"},\n\t\t{\"DT_PLTRELSZ\", Const, 0, \"\"},\n\t\t{\"DT_POSFLAG_1\", Const, 16, \"\"},\n\t\t{\"DT_PPC64_GLINK\", Const, 16, \"\"},\n\t\t{\"DT_PPC64_OPD\", Const, 16, \"\"},\n\t\t{\"DT_PPC64_OPDSZ\", Const, 16, \"\"},\n\t\t{\"DT_PPC64_OPT\", Const, 16, \"\"},\n\t\t{\"DT_PPC_GOT\", Const, 16, \"\"},\n\t\t{\"DT_PPC_OPT\", Const, 16, \"\"},\n\t\t{\"DT_PREINIT_ARRAY\", Const, 0, \"\"},\n\t\t{\"DT_PREINIT_ARRAYSZ\", Const, 0, \"\"},\n\t\t{\"DT_REL\", Const, 0, \"\"},\n\t\t{\"DT_RELA\", Const, 0, \"\"},\n\t\t{\"DT_RELACOUNT\", Const, 16, \"\"},\n\t\t{\"DT_RELAENT\", Const, 0, \"\"},\n\t\t{\"DT_RELASZ\", Const, 0, \"\"},\n\t\t{\"DT_RELCOUNT\", Const, 16, \"\"},\n\t\t{\"DT_RELENT\", Const, 0, \"\"},\n\t\t{\"DT_RELSZ\", Const, 0, \"\"},\n\t\t{\"DT_RPATH\", Const, 0, \"\"},\n\t\t{\"DT_RUNPATH\", Const, 0, \"\"},\n\t\t{\"DT_SONAME\", Const, 0, \"\"},\n\t\t{\"DT_SPARC_REGISTER\", Const, 16, \"\"},\n\t\t{\"DT_STRSZ\", Const, 0, \"\"},\n\t\t{\"DT_STRTAB\", Const, 0, \"\"},\n\t\t{\"DT_SYMBOLIC\", Const, 0, \"\"},\n\t\t{\"DT_SYMENT\", Const, 0, \"\"},\n\t\t{\"DT_SYMINENT\", Const, 16, \"\"},\n\t\t{\"DT_SYMINFO\", Const, 16, \"\"},\n\t\t{\"DT_SYMINSZ\", Const, 16, \"\"},\n\t\t{\"DT_SYMTAB\", Const, 0, \"\"},\n\t\t{\"DT_SYMTAB_SHNDX\", Const, 16, \"\"},\n\t\t{\"DT_TEXTREL\", Const, 0, \"\"},\n\t\t{\"DT_TLSDESC_GOT\", Const, 16, \"\"},\n\t\t{\"DT_TLSDESC_PLT\", Const, 16, \"\"},\n\t\t{\"DT_USED\", Const, 16, \"\"},\n\t\t{\"DT_VALRNGHI\", Const, 16, \"\"},\n\t\t{\"DT_VALRNGLO\", Const, 16, \"\"},\n\t\t{\"DT_VERDEF\", Const, 16, \"\"},\n\t\t{\"DT_VERDEFNUM\", Const, 16, \"\"},\n\t\t{\"DT_VERNEED\", Const, 0, \"\"},\n\t\t{\"DT_VERNEEDNUM\", Const, 0, \"\"},\n\t\t{\"DT_VERSYM\", Const, 0, \"\"},\n\t\t{\"Data\", Type, 0, \"\"},\n\t\t{\"Dyn32\", Type, 0, \"\"},\n\t\t{\"Dyn32.Tag\", Field, 0, \"\"},\n\t\t{\"Dyn32.Val\", Field, 0, \"\"},\n\t\t{\"Dyn64\", Type, 0, \"\"},\n\t\t{\"Dyn64.Tag\", Field, 0, \"\"},\n\t\t{\"Dyn64.Val\", Field, 0, \"\"},\n\t\t{\"DynFlag\", Type, 0, \"\"},\n\t\t{\"DynFlag1\", Type, 21, \"\"},\n\t\t{\"DynTag\", Type, 0, \"\"},\n\t\t{\"DynamicVersion\", Type, 24, \"\"},\n\t\t{\"DynamicVersion.Deps\", Field, 24, \"\"},\n\t\t{\"DynamicVersion.Flags\", Field, 24, \"\"},\n\t\t{\"DynamicVersion.Index\", Field, 24, \"\"},\n\t\t{\"DynamicVersion.Name\", Field, 24, \"\"},\n\t\t{\"DynamicVersionDep\", Type, 24, \"\"},\n\t\t{\"DynamicVersionDep.Dep\", Field, 24, \"\"},\n\t\t{\"DynamicVersionDep.Flags\", Field, 24, \"\"},\n\t\t{\"DynamicVersionDep.Index\", Field, 24, \"\"},\n\t\t{\"DynamicVersionFlag\", Type, 24, \"\"},\n\t\t{\"DynamicVersionNeed\", Type, 24, \"\"},\n\t\t{\"DynamicVersionNeed.Name\", Field, 24, \"\"},\n\t\t{\"DynamicVersionNeed.Needs\", Field, 24, \"\"},\n\t\t{\"EI_ABIVERSION\", Const, 0, \"\"},\n\t\t{\"EI_CLASS\", Const, 0, \"\"},\n\t\t{\"EI_DATA\", Const, 0, \"\"},\n\t\t{\"EI_NIDENT\", Const, 0, \"\"},\n\t\t{\"EI_OSABI\", Const, 0, \"\"},\n\t\t{\"EI_PAD\", Const, 0, \"\"},\n\t\t{\"EI_VERSION\", Const, 0, \"\"},\n\t\t{\"ELFCLASS32\", Const, 0, \"\"},\n\t\t{\"ELFCLASS64\", Const, 0, \"\"},\n\t\t{\"ELFCLASSNONE\", Const, 0, \"\"},\n\t\t{\"ELFDATA2LSB\", Const, 0, \"\"},\n\t\t{\"ELFDATA2MSB\", Const, 0, \"\"},\n\t\t{\"ELFDATANONE\", Const, 0, \"\"},\n\t\t{\"ELFMAG\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_86OPEN\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_AIX\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_ARM\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_AROS\", Const, 11, \"\"},\n\t\t{\"ELFOSABI_CLOUDABI\", Const, 11, \"\"},\n\t\t{\"ELFOSABI_FENIXOS\", Const, 11, \"\"},\n\t\t{\"ELFOSABI_FREEBSD\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_HPUX\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_HURD\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_IRIX\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_LINUX\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_MODESTO\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_NETBSD\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_NONE\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_NSK\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_OPENBSD\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_OPENVMS\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_SOLARIS\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_STANDALONE\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_TRU64\", Const, 0, \"\"},\n\t\t{\"EM_386\", Const, 0, \"\"},\n\t\t{\"EM_486\", Const, 0, \"\"},\n\t\t{\"EM_56800EX\", Const, 11, \"\"},\n\t\t{\"EM_68HC05\", Const, 11, \"\"},\n\t\t{\"EM_68HC08\", Const, 11, \"\"},\n\t\t{\"EM_68HC11\", Const, 11, \"\"},\n\t\t{\"EM_68HC12\", Const, 0, \"\"},\n\t\t{\"EM_68HC16\", Const, 11, \"\"},\n\t\t{\"EM_68K\", Const, 0, \"\"},\n\t\t{\"EM_78KOR\", Const, 11, \"\"},\n\t\t{\"EM_8051\", Const, 11, \"\"},\n\t\t{\"EM_860\", Const, 0, \"\"},\n\t\t{\"EM_88K\", Const, 0, \"\"},\n\t\t{\"EM_960\", Const, 0, \"\"},\n\t\t{\"EM_AARCH64\", Const, 4, \"\"},\n\t\t{\"EM_ALPHA\", Const, 0, \"\"},\n\t\t{\"EM_ALPHA_STD\", Const, 0, \"\"},\n\t\t{\"EM_ALTERA_NIOS2\", Const, 11, \"\"},\n\t\t{\"EM_AMDGPU\", Const, 11, \"\"},\n\t\t{\"EM_ARC\", Const, 0, \"\"},\n\t\t{\"EM_ARCA\", Const, 11, \"\"},\n\t\t{\"EM_ARC_COMPACT\", Const, 11, \"\"},\n\t\t{\"EM_ARC_COMPACT2\", Const, 11, \"\"},\n\t\t{\"EM_ARM\", Const, 0, \"\"},\n\t\t{\"EM_AVR\", Const, 11, \"\"},\n\t\t{\"EM_AVR32\", Const, 11, \"\"},\n\t\t{\"EM_BA1\", Const, 11, \"\"},\n\t\t{\"EM_BA2\", Const, 11, \"\"},\n\t\t{\"EM_BLACKFIN\", Const, 11, \"\"},\n\t\t{\"EM_BPF\", Const, 11, \"\"},\n\t\t{\"EM_C166\", Const, 11, \"\"},\n\t\t{\"EM_CDP\", Const, 11, \"\"},\n\t\t{\"EM_CE\", Const, 11, \"\"},\n\t\t{\"EM_CLOUDSHIELD\", Const, 11, \"\"},\n\t\t{\"EM_COGE\", Const, 11, \"\"},\n\t\t{\"EM_COLDFIRE\", Const, 0, \"\"},\n\t\t{\"EM_COOL\", Const, 11, \"\"},\n\t\t{\"EM_COREA_1ST\", Const, 11, \"\"},\n\t\t{\"EM_COREA_2ND\", Const, 11, \"\"},\n\t\t{\"EM_CR\", Const, 11, \"\"},\n\t\t{\"EM_CR16\", Const, 11, \"\"},\n\t\t{\"EM_CRAYNV2\", Const, 11, \"\"},\n\t\t{\"EM_CRIS\", Const, 11, \"\"},\n\t\t{\"EM_CRX\", Const, 11, \"\"},\n\t\t{\"EM_CSR_KALIMBA\", Const, 11, \"\"},\n\t\t{\"EM_CUDA\", Const, 11, \"\"},\n\t\t{\"EM_CYPRESS_M8C\", Const, 11, \"\"},\n\t\t{\"EM_D10V\", Const, 11, \"\"},\n\t\t{\"EM_D30V\", Const, 11, \"\"},\n\t\t{\"EM_DSP24\", Const, 11, \"\"},\n\t\t{\"EM_DSPIC30F\", Const, 11, \"\"},\n\t\t{\"EM_DXP\", Const, 11, \"\"},\n\t\t{\"EM_ECOG1\", Const, 11, \"\"},\n\t\t{\"EM_ECOG16\", Const, 11, \"\"},\n\t\t{\"EM_ECOG1X\", Const, 11, \"\"},\n\t\t{\"EM_ECOG2\", Const, 11, \"\"},\n\t\t{\"EM_ETPU\", Const, 11, \"\"},\n\t\t{\"EM_EXCESS\", Const, 11, \"\"},\n\t\t{\"EM_F2MC16\", Const, 11, \"\"},\n\t\t{\"EM_FIREPATH\", Const, 11, \"\"},\n\t\t{\"EM_FR20\", Const, 0, \"\"},\n\t\t{\"EM_FR30\", Const, 11, \"\"},\n\t\t{\"EM_FT32\", Const, 11, \"\"},\n\t\t{\"EM_FX66\", Const, 11, \"\"},\n\t\t{\"EM_H8S\", Const, 0, \"\"},\n\t\t{\"EM_H8_300\", Const, 0, \"\"},\n\t\t{\"EM_H8_300H\", Const, 0, \"\"},\n\t\t{\"EM_H8_500\", Const, 0, \"\"},\n\t\t{\"EM_HUANY\", Const, 11, \"\"},\n\t\t{\"EM_IA_64\", Const, 0, \"\"},\n\t\t{\"EM_INTEL205\", Const, 11, \"\"},\n\t\t{\"EM_INTEL206\", Const, 11, \"\"},\n\t\t{\"EM_INTEL207\", Const, 11, \"\"},\n\t\t{\"EM_INTEL208\", Const, 11, \"\"},\n\t\t{\"EM_INTEL209\", Const, 11, \"\"},\n\t\t{\"EM_IP2K\", Const, 11, \"\"},\n\t\t{\"EM_JAVELIN\", Const, 11, \"\"},\n\t\t{\"EM_K10M\", Const, 11, \"\"},\n\t\t{\"EM_KM32\", Const, 11, \"\"},\n\t\t{\"EM_KMX16\", Const, 11, \"\"},\n\t\t{\"EM_KMX32\", Const, 11, \"\"},\n\t\t{\"EM_KMX8\", Const, 11, \"\"},\n\t\t{\"EM_KVARC\", Const, 11, \"\"},\n\t\t{\"EM_L10M\", Const, 11, \"\"},\n\t\t{\"EM_LANAI\", Const, 11, \"\"},\n\t\t{\"EM_LATTICEMICO32\", Const, 11, \"\"},\n\t\t{\"EM_LOONGARCH\", Const, 19, \"\"},\n\t\t{\"EM_M16C\", Const, 11, \"\"},\n\t\t{\"EM_M32\", Const, 0, \"\"},\n\t\t{\"EM_M32C\", Const, 11, \"\"},\n\t\t{\"EM_M32R\", Const, 11, \"\"},\n\t\t{\"EM_MANIK\", Const, 11, \"\"},\n\t\t{\"EM_MAX\", Const, 11, \"\"},\n\t\t{\"EM_MAXQ30\", Const, 11, \"\"},\n\t\t{\"EM_MCHP_PIC\", Const, 11, \"\"},\n\t\t{\"EM_MCST_ELBRUS\", Const, 11, \"\"},\n\t\t{\"EM_ME16\", Const, 0, \"\"},\n\t\t{\"EM_METAG\", Const, 11, \"\"},\n\t\t{\"EM_MICROBLAZE\", Const, 11, \"\"},\n\t\t{\"EM_MIPS\", Const, 0, \"\"},\n\t\t{\"EM_MIPS_RS3_LE\", Const, 0, \"\"},\n\t\t{\"EM_MIPS_RS4_BE\", Const, 0, \"\"},\n\t\t{\"EM_MIPS_X\", Const, 0, \"\"},\n\t\t{\"EM_MMA\", Const, 0, \"\"},\n\t\t{\"EM_MMDSP_PLUS\", Const, 11, \"\"},\n\t\t{\"EM_MMIX\", Const, 11, \"\"},\n\t\t{\"EM_MN10200\", Const, 11, \"\"},\n\t\t{\"EM_MN10300\", Const, 11, \"\"},\n\t\t{\"EM_MOXIE\", Const, 11, \"\"},\n\t\t{\"EM_MSP430\", Const, 11, \"\"},\n\t\t{\"EM_NCPU\", Const, 0, \"\"},\n\t\t{\"EM_NDR1\", Const, 0, \"\"},\n\t\t{\"EM_NDS32\", Const, 11, \"\"},\n\t\t{\"EM_NONE\", Const, 0, \"\"},\n\t\t{\"EM_NORC\", Const, 11, \"\"},\n\t\t{\"EM_NS32K\", Const, 11, \"\"},\n\t\t{\"EM_OPEN8\", Const, 11, \"\"},\n\t\t{\"EM_OPENRISC\", Const, 11, \"\"},\n\t\t{\"EM_PARISC\", Const, 0, \"\"},\n\t\t{\"EM_PCP\", Const, 0, \"\"},\n\t\t{\"EM_PDP10\", Const, 11, \"\"},\n\t\t{\"EM_PDP11\", Const, 11, \"\"},\n\t\t{\"EM_PDSP\", Const, 11, \"\"},\n\t\t{\"EM_PJ\", Const, 11, \"\"},\n\t\t{\"EM_PPC\", Const, 0, \"\"},\n\t\t{\"EM_PPC64\", Const, 0, \"\"},\n\t\t{\"EM_PRISM\", Const, 11, \"\"},\n\t\t{\"EM_QDSP6\", Const, 11, \"\"},\n\t\t{\"EM_R32C\", Const, 11, \"\"},\n\t\t{\"EM_RCE\", Const, 0, \"\"},\n\t\t{\"EM_RH32\", Const, 0, \"\"},\n\t\t{\"EM_RISCV\", Const, 11, \"\"},\n\t\t{\"EM_RL78\", Const, 11, \"\"},\n\t\t{\"EM_RS08\", Const, 11, \"\"},\n\t\t{\"EM_RX\", Const, 11, \"\"},\n\t\t{\"EM_S370\", Const, 0, \"\"},\n\t\t{\"EM_S390\", Const, 0, \"\"},\n\t\t{\"EM_SCORE7\", Const, 11, \"\"},\n\t\t{\"EM_SEP\", Const, 11, \"\"},\n\t\t{\"EM_SE_C17\", Const, 11, \"\"},\n\t\t{\"EM_SE_C33\", Const, 11, \"\"},\n\t\t{\"EM_SH\", Const, 0, \"\"},\n\t\t{\"EM_SHARC\", Const, 11, \"\"},\n\t\t{\"EM_SLE9X\", Const, 11, \"\"},\n\t\t{\"EM_SNP1K\", Const, 11, \"\"},\n\t\t{\"EM_SPARC\", Const, 0, \"\"},\n\t\t{\"EM_SPARC32PLUS\", Const, 0, \"\"},\n\t\t{\"EM_SPARCV9\", Const, 0, \"\"},\n\t\t{\"EM_ST100\", Const, 0, \"\"},\n\t\t{\"EM_ST19\", Const, 11, \"\"},\n\t\t{\"EM_ST200\", Const, 11, \"\"},\n\t\t{\"EM_ST7\", Const, 11, \"\"},\n\t\t{\"EM_ST9PLUS\", Const, 11, \"\"},\n\t\t{\"EM_STARCORE\", Const, 0, \"\"},\n\t\t{\"EM_STM8\", Const, 11, \"\"},\n\t\t{\"EM_STXP7X\", Const, 11, \"\"},\n\t\t{\"EM_SVX\", Const, 11, \"\"},\n\t\t{\"EM_TILE64\", Const, 11, \"\"},\n\t\t{\"EM_TILEGX\", Const, 11, \"\"},\n\t\t{\"EM_TILEPRO\", Const, 11, \"\"},\n\t\t{\"EM_TINYJ\", Const, 0, \"\"},\n\t\t{\"EM_TI_ARP32\", Const, 11, \"\"},\n\t\t{\"EM_TI_C2000\", Const, 11, \"\"},\n\t\t{\"EM_TI_C5500\", Const, 11, \"\"},\n\t\t{\"EM_TI_C6000\", Const, 11, \"\"},\n\t\t{\"EM_TI_PRU\", Const, 11, \"\"},\n\t\t{\"EM_TMM_GPP\", Const, 11, \"\"},\n\t\t{\"EM_TPC\", Const, 11, \"\"},\n\t\t{\"EM_TRICORE\", Const, 0, \"\"},\n\t\t{\"EM_TRIMEDIA\", Const, 11, \"\"},\n\t\t{\"EM_TSK3000\", Const, 11, \"\"},\n\t\t{\"EM_UNICORE\", Const, 11, \"\"},\n\t\t{\"EM_V800\", Const, 0, \"\"},\n\t\t{\"EM_V850\", Const, 11, \"\"},\n\t\t{\"EM_VAX\", Const, 11, \"\"},\n\t\t{\"EM_VIDEOCORE\", Const, 11, \"\"},\n\t\t{\"EM_VIDEOCORE3\", Const, 11, \"\"},\n\t\t{\"EM_VIDEOCORE5\", Const, 11, \"\"},\n\t\t{\"EM_VISIUM\", Const, 11, \"\"},\n\t\t{\"EM_VPP500\", Const, 0, \"\"},\n\t\t{\"EM_X86_64\", Const, 0, \"\"},\n\t\t{\"EM_XCORE\", Const, 11, \"\"},\n\t\t{\"EM_XGATE\", Const, 11, \"\"},\n\t\t{\"EM_XIMO16\", Const, 11, \"\"},\n\t\t{\"EM_XTENSA\", Const, 11, \"\"},\n\t\t{\"EM_Z80\", Const, 11, \"\"},\n\t\t{\"EM_ZSP\", Const, 11, \"\"},\n\t\t{\"ET_CORE\", Const, 0, \"\"},\n\t\t{\"ET_DYN\", Const, 0, \"\"},\n\t\t{\"ET_EXEC\", Const, 0, \"\"},\n\t\t{\"ET_HIOS\", Const, 0, \"\"},\n\t\t{\"ET_HIPROC\", Const, 0, \"\"},\n\t\t{\"ET_LOOS\", Const, 0, \"\"},\n\t\t{\"ET_LOPROC\", Const, 0, \"\"},\n\t\t{\"ET_NONE\", Const, 0, \"\"},\n\t\t{\"ET_REL\", Const, 0, \"\"},\n\t\t{\"EV_CURRENT\", Const, 0, \"\"},\n\t\t{\"EV_NONE\", Const, 0, \"\"},\n\t\t{\"ErrNoSymbols\", Var, 4, \"\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"File.FileHeader\", Field, 0, \"\"},\n\t\t{\"File.Progs\", Field, 0, \"\"},\n\t\t{\"File.Sections\", Field, 0, \"\"},\n\t\t{\"FileHeader\", Type, 0, \"\"},\n\t\t{\"FileHeader.ABIVersion\", Field, 0, \"\"},\n\t\t{\"FileHeader.ByteOrder\", Field, 0, \"\"},\n\t\t{\"FileHeader.Class\", Field, 0, \"\"},\n\t\t{\"FileHeader.Data\", Field, 0, \"\"},\n\t\t{\"FileHeader.Entry\", Field, 1, \"\"},\n\t\t{\"FileHeader.Machine\", Field, 0, \"\"},\n\t\t{\"FileHeader.OSABI\", Field, 0, \"\"},\n\t\t{\"FileHeader.Type\", Field, 0, \"\"},\n\t\t{\"FileHeader.Version\", Field, 0, \"\"},\n\t\t{\"FormatError\", Type, 0, \"\"},\n\t\t{\"Header32\", Type, 0, \"\"},\n\t\t{\"Header32.Ehsize\", Field, 0, \"\"},\n\t\t{\"Header32.Entry\", Field, 0, \"\"},\n\t\t{\"Header32.Flags\", Field, 0, \"\"},\n\t\t{\"Header32.Ident\", Field, 0, \"\"},\n\t\t{\"Header32.Machine\", Field, 0, \"\"},\n\t\t{\"Header32.Phentsize\", Field, 0, \"\"},\n\t\t{\"Header32.Phnum\", Field, 0, \"\"},\n\t\t{\"Header32.Phoff\", Field, 0, \"\"},\n\t\t{\"Header32.Shentsize\", Field, 0, \"\"},\n\t\t{\"Header32.Shnum\", Field, 0, \"\"},\n\t\t{\"Header32.Shoff\", Field, 0, \"\"},\n\t\t{\"Header32.Shstrndx\", Field, 0, \"\"},\n\t\t{\"Header32.Type\", Field, 0, \"\"},\n\t\t{\"Header32.Version\", Field, 0, \"\"},\n\t\t{\"Header64\", Type, 0, \"\"},\n\t\t{\"Header64.Ehsize\", Field, 0, \"\"},\n\t\t{\"Header64.Entry\", Field, 0, \"\"},\n\t\t{\"Header64.Flags\", Field, 0, \"\"},\n\t\t{\"Header64.Ident\", Field, 0, \"\"},\n\t\t{\"Header64.Machine\", Field, 0, \"\"},\n\t\t{\"Header64.Phentsize\", Field, 0, \"\"},\n\t\t{\"Header64.Phnum\", Field, 0, \"\"},\n\t\t{\"Header64.Phoff\", Field, 0, \"\"},\n\t\t{\"Header64.Shentsize\", Field, 0, \"\"},\n\t\t{\"Header64.Shnum\", Field, 0, \"\"},\n\t\t{\"Header64.Shoff\", Field, 0, \"\"},\n\t\t{\"Header64.Shstrndx\", Field, 0, \"\"},\n\t\t{\"Header64.Type\", Field, 0, \"\"},\n\t\t{\"Header64.Version\", Field, 0, \"\"},\n\t\t{\"ImportedSymbol\", Type, 0, \"\"},\n\t\t{\"ImportedSymbol.Library\", Field, 0, \"\"},\n\t\t{\"ImportedSymbol.Name\", Field, 0, \"\"},\n\t\t{\"ImportedSymbol.Version\", Field, 0, \"\"},\n\t\t{\"Machine\", Type, 0, \"\"},\n\t\t{\"NT_FPREGSET\", Const, 0, \"\"},\n\t\t{\"NT_PRPSINFO\", Const, 0, \"\"},\n\t\t{\"NT_PRSTATUS\", Const, 0, \"\"},\n\t\t{\"NType\", Type, 0, \"\"},\n\t\t{\"NewFile\", Func, 0, \"func(r io.ReaderAt) (*File, error)\"},\n\t\t{\"OSABI\", Type, 0, \"\"},\n\t\t{\"Open\", Func, 0, \"func(name string) (*File, error)\"},\n\t\t{\"PF_MASKOS\", Const, 0, \"\"},\n\t\t{\"PF_MASKPROC\", Const, 0, \"\"},\n\t\t{\"PF_R\", Const, 0, \"\"},\n\t\t{\"PF_W\", Const, 0, \"\"},\n\t\t{\"PF_X\", Const, 0, \"\"},\n\t\t{\"PT_AARCH64_ARCHEXT\", Const, 16, \"\"},\n\t\t{\"PT_AARCH64_UNWIND\", Const, 16, \"\"},\n\t\t{\"PT_ARM_ARCHEXT\", Const, 16, \"\"},\n\t\t{\"PT_ARM_EXIDX\", Const, 16, \"\"},\n\t\t{\"PT_DYNAMIC\", Const, 0, \"\"},\n\t\t{\"PT_GNU_EH_FRAME\", Const, 16, \"\"},\n\t\t{\"PT_GNU_MBIND_HI\", Const, 16, \"\"},\n\t\t{\"PT_GNU_MBIND_LO\", Const, 16, \"\"},\n\t\t{\"PT_GNU_PROPERTY\", Const, 16, \"\"},\n\t\t{\"PT_GNU_RELRO\", Const, 16, \"\"},\n\t\t{\"PT_GNU_STACK\", Const, 16, \"\"},\n\t\t{\"PT_HIOS\", Const, 0, \"\"},\n\t\t{\"PT_HIPROC\", Const, 0, \"\"},\n\t\t{\"PT_INTERP\", Const, 0, \"\"},\n\t\t{\"PT_LOAD\", Const, 0, \"\"},\n\t\t{\"PT_LOOS\", Const, 0, \"\"},\n\t\t{\"PT_LOPROC\", Const, 0, \"\"},\n\t\t{\"PT_MIPS_ABIFLAGS\", Const, 16, \"\"},\n\t\t{\"PT_MIPS_OPTIONS\", Const, 16, \"\"},\n\t\t{\"PT_MIPS_REGINFO\", Const, 16, \"\"},\n\t\t{\"PT_MIPS_RTPROC\", Const, 16, \"\"},\n\t\t{\"PT_NOTE\", Const, 0, \"\"},\n\t\t{\"PT_NULL\", Const, 0, \"\"},\n\t\t{\"PT_OPENBSD_BOOTDATA\", Const, 16, \"\"},\n\t\t{\"PT_OPENBSD_NOBTCFI\", Const, 23, \"\"},\n\t\t{\"PT_OPENBSD_RANDOMIZE\", Const, 16, \"\"},\n\t\t{\"PT_OPENBSD_WXNEEDED\", Const, 16, \"\"},\n\t\t{\"PT_PAX_FLAGS\", Const, 16, \"\"},\n\t\t{\"PT_PHDR\", Const, 0, \"\"},\n\t\t{\"PT_RISCV_ATTRIBUTES\", Const, 25, \"\"},\n\t\t{\"PT_S390_PGSTE\", Const, 16, \"\"},\n\t\t{\"PT_SHLIB\", Const, 0, \"\"},\n\t\t{\"PT_SUNWSTACK\", Const, 16, \"\"},\n\t\t{\"PT_SUNW_EH_FRAME\", Const, 16, \"\"},\n\t\t{\"PT_TLS\", Const, 0, \"\"},\n\t\t{\"Prog\", Type, 0, \"\"},\n\t\t{\"Prog.ProgHeader\", Field, 0, \"\"},\n\t\t{\"Prog.ReaderAt\", Field, 0, \"\"},\n\t\t{\"Prog32\", Type, 0, \"\"},\n\t\t{\"Prog32.Align\", Field, 0, \"\"},\n\t\t{\"Prog32.Filesz\", Field, 0, \"\"},\n\t\t{\"Prog32.Flags\", Field, 0, \"\"},\n\t\t{\"Prog32.Memsz\", Field, 0, \"\"},\n\t\t{\"Prog32.Off\", Field, 0, \"\"},\n\t\t{\"Prog32.Paddr\", Field, 0, \"\"},\n\t\t{\"Prog32.Type\", Field, 0, \"\"},\n\t\t{\"Prog32.Vaddr\", Field, 0, \"\"},\n\t\t{\"Prog64\", Type, 0, \"\"},\n\t\t{\"Prog64.Align\", Field, 0, \"\"},\n\t\t{\"Prog64.Filesz\", Field, 0, \"\"},\n\t\t{\"Prog64.Flags\", Field, 0, \"\"},\n\t\t{\"Prog64.Memsz\", Field, 0, \"\"},\n\t\t{\"Prog64.Off\", Field, 0, \"\"},\n\t\t{\"Prog64.Paddr\", Field, 0, \"\"},\n\t\t{\"Prog64.Type\", Field, 0, \"\"},\n\t\t{\"Prog64.Vaddr\", Field, 0, \"\"},\n\t\t{\"ProgFlag\", Type, 0, \"\"},\n\t\t{\"ProgHeader\", Type, 0, \"\"},\n\t\t{\"ProgHeader.Align\", Field, 0, \"\"},\n\t\t{\"ProgHeader.Filesz\", Field, 0, \"\"},\n\t\t{\"ProgHeader.Flags\", Field, 0, \"\"},\n\t\t{\"ProgHeader.Memsz\", Field, 0, \"\"},\n\t\t{\"ProgHeader.Off\", Field, 0, \"\"},\n\t\t{\"ProgHeader.Paddr\", Field, 0, \"\"},\n\t\t{\"ProgHeader.Type\", Field, 0, \"\"},\n\t\t{\"ProgHeader.Vaddr\", Field, 0, \"\"},\n\t\t{\"ProgType\", Type, 0, \"\"},\n\t\t{\"R_386\", Type, 0, \"\"},\n\t\t{\"R_386_16\", Const, 10, \"\"},\n\t\t{\"R_386_32\", Const, 0, \"\"},\n\t\t{\"R_386_32PLT\", Const, 10, \"\"},\n\t\t{\"R_386_8\", Const, 10, \"\"},\n\t\t{\"R_386_COPY\", Const, 0, \"\"},\n\t\t{\"R_386_GLOB_DAT\", Const, 0, \"\"},\n\t\t{\"R_386_GOT32\", Const, 0, \"\"},\n\t\t{\"R_386_GOT32X\", Const, 10, \"\"},\n\t\t{\"R_386_GOTOFF\", Const, 0, \"\"},\n\t\t{\"R_386_GOTPC\", Const, 0, \"\"},\n\t\t{\"R_386_IRELATIVE\", Const, 10, \"\"},\n\t\t{\"R_386_JMP_SLOT\", Const, 0, \"\"},\n\t\t{\"R_386_NONE\", Const, 0, \"\"},\n\t\t{\"R_386_PC16\", Const, 10, \"\"},\n\t\t{\"R_386_PC32\", Const, 0, \"\"},\n\t\t{\"R_386_PC8\", Const, 10, \"\"},\n\t\t{\"R_386_PLT32\", Const, 0, \"\"},\n\t\t{\"R_386_RELATIVE\", Const, 0, \"\"},\n\t\t{\"R_386_SIZE32\", Const, 10, \"\"},\n\t\t{\"R_386_TLS_DESC\", Const, 10, \"\"},\n\t\t{\"R_386_TLS_DESC_CALL\", Const, 10, \"\"},\n\t\t{\"R_386_TLS_DTPMOD32\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_DTPOFF32\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_GD\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_GD_32\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_GD_CALL\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_GD_POP\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_GD_PUSH\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_GOTDESC\", Const, 10, \"\"},\n\t\t{\"R_386_TLS_GOTIE\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_IE\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_IE_32\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LDM\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LDM_32\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LDM_CALL\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LDM_POP\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LDM_PUSH\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LDO_32\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LE\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LE_32\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_TPOFF\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_TPOFF32\", Const, 0, \"\"},\n\t\t{\"R_390\", Type, 7, \"\"},\n\t\t{\"R_390_12\", Const, 7, \"\"},\n\t\t{\"R_390_16\", Const, 7, \"\"},\n\t\t{\"R_390_20\", Const, 7, \"\"},\n\t\t{\"R_390_32\", Const, 7, \"\"},\n\t\t{\"R_390_64\", Const, 7, \"\"},\n\t\t{\"R_390_8\", Const, 7, \"\"},\n\t\t{\"R_390_COPY\", Const, 7, \"\"},\n\t\t{\"R_390_GLOB_DAT\", Const, 7, \"\"},\n\t\t{\"R_390_GOT12\", Const, 7, \"\"},\n\t\t{\"R_390_GOT16\", Const, 7, \"\"},\n\t\t{\"R_390_GOT20\", Const, 7, \"\"},\n\t\t{\"R_390_GOT32\", Const, 7, \"\"},\n\t\t{\"R_390_GOT64\", Const, 7, \"\"},\n\t\t{\"R_390_GOTENT\", Const, 7, \"\"},\n\t\t{\"R_390_GOTOFF\", Const, 7, \"\"},\n\t\t{\"R_390_GOTOFF16\", Const, 7, \"\"},\n\t\t{\"R_390_GOTOFF64\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPC\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPCDBL\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLT12\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLT16\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLT20\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLT32\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLT64\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLTENT\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLTOFF16\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLTOFF32\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLTOFF64\", Const, 7, \"\"},\n\t\t{\"R_390_JMP_SLOT\", Const, 7, \"\"},\n\t\t{\"R_390_NONE\", Const, 7, \"\"},\n\t\t{\"R_390_PC16\", Const, 7, \"\"},\n\t\t{\"R_390_PC16DBL\", Const, 7, \"\"},\n\t\t{\"R_390_PC32\", Const, 7, \"\"},\n\t\t{\"R_390_PC32DBL\", Const, 7, \"\"},\n\t\t{\"R_390_PC64\", Const, 7, \"\"},\n\t\t{\"R_390_PLT16DBL\", Const, 7, \"\"},\n\t\t{\"R_390_PLT32\", Const, 7, \"\"},\n\t\t{\"R_390_PLT32DBL\", Const, 7, \"\"},\n\t\t{\"R_390_PLT64\", Const, 7, \"\"},\n\t\t{\"R_390_RELATIVE\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_DTPMOD\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_DTPOFF\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_GD32\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_GD64\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_GDCALL\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_GOTIE12\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_GOTIE20\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_GOTIE32\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_GOTIE64\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_IE32\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_IE64\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_IEENT\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LDCALL\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LDM32\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LDM64\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LDO32\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LDO64\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LE32\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LE64\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LOAD\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_TPOFF\", Const, 7, \"\"},\n\t\t{\"R_AARCH64\", Type, 4, \"\"},\n\t\t{\"R_AARCH64_ABS16\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_ABS32\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_ABS64\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_ADD_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_ADR_GOT_PAGE\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_ADR_PREL_LO21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_ADR_PREL_PG_HI21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_ADR_PREL_PG_HI21_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_CALL26\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_CONDBR19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_COPY\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_GLOB_DAT\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_GOT_LD_PREL19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_IRELATIVE\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_JUMP26\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_JUMP_SLOT\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_LD64_GOTOFF_LO15\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_LD64_GOTPAGE_LO15\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_LD64_GOT_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_LDST128_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_LDST16_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_LDST32_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_LDST64_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_LDST8_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_LD_PREL_LO19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_SABS_G0\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_SABS_G1\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_SABS_G2\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_UABS_G0\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_UABS_G0_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_UABS_G1\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_UABS_G1_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_UABS_G2\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_UABS_G2_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_UABS_G3\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_NONE\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_NULL\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_ABS16\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_ABS32\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_ADD_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_ADR_GOT_PAGE\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_ADR_PREL_LO21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_ADR_PREL_PG_HI21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_CALL26\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_CONDBR19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_COPY\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_GLOB_DAT\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_GOT_LD_PREL19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_IRELATIVE\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_JUMP26\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_JUMP_SLOT\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_LD32_GOT_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_LDST128_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_LDST16_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_LDST32_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_LDST64_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_LDST8_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_LD_PREL_LO19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_MOVW_SABS_G0\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_MOVW_UABS_G0\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_MOVW_UABS_G0_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_MOVW_UABS_G1\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_PREL16\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_PREL32\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_RELATIVE\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSDESC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSDESC_ADD_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSDESC_ADR_PAGE21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSDESC_ADR_PREL21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSDESC_CALL\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSDESC_LD32_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSDESC_LD_PREL19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSGD_ADD_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSGD_ADR_PAGE21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSIE_ADR_GOTTPREL_PAGE21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSIE_LD32_GOTTPREL_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSIE_LD_GOTTPREL_PREL19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSLE_ADD_TPREL_HI12\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSLE_ADD_TPREL_LO12\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSLE_ADD_TPREL_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSLE_MOVW_TPREL_G0\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSLE_MOVW_TPREL_G0_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSLE_MOVW_TPREL_G1\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLS_DTPMOD\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLS_DTPREL\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLS_TPREL\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TSTBR14\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_PREL16\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_PREL32\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_PREL64\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_RELATIVE\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_ADD\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_ADD_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_ADR_PAGE21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_ADR_PREL21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_CALL\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_LD64_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_LDR\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_LD_PREL19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_OFF_G0_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_OFF_G1\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSGD_ADD_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSGD_ADR_PAGE21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSGD_ADR_PREL21\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSGD_MOVW_G0_NC\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSGD_MOVW_G1\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSIE_LD_GOTTPREL_PREL19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSIE_MOVW_GOTTPREL_G1\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLD_ADR_PAGE21\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSLD_ADR_PREL21\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSLD_LDST128_DTPREL_LO12\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSLE_ADD_TPREL_HI12\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLE_ADD_TPREL_LO12\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLE_ADD_TPREL_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLE_LDST128_TPREL_LO12\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSLE_MOVW_TPREL_G0\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLE_MOVW_TPREL_G0_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLE_MOVW_TPREL_G1\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLE_MOVW_TPREL_G1_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLE_MOVW_TPREL_G2\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLS_DTPMOD64\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLS_DTPREL64\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLS_TPREL64\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TSTBR14\", Const, 4, \"\"},\n\t\t{\"R_ALPHA\", Type, 0, \"\"},\n\t\t{\"R_ALPHA_BRADDR\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_COPY\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_GLOB_DAT\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_GPDISP\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_GPREL32\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_GPRELHIGH\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_GPRELLOW\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_GPVALUE\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_HINT\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_IMMED_BR_HI32\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_IMMED_GP_16\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_IMMED_GP_HI32\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_IMMED_LO32\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_IMMED_SCN_HI32\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_JMP_SLOT\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_LITERAL\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_LITUSE\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_NONE\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_OP_PRSHIFT\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_OP_PSUB\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_OP_PUSH\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_OP_STORE\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_REFLONG\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_REFQUAD\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_RELATIVE\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_SREL16\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_SREL32\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_SREL64\", Const, 0, \"\"},\n\t\t{\"R_ARM\", Type, 0, \"\"},\n\t\t{\"R_ARM_ABS12\", Const, 0, \"\"},\n\t\t{\"R_ARM_ABS16\", Const, 0, \"\"},\n\t\t{\"R_ARM_ABS32\", Const, 0, \"\"},\n\t\t{\"R_ARM_ABS32_NOI\", Const, 10, \"\"},\n\t\t{\"R_ARM_ABS8\", Const, 0, \"\"},\n\t\t{\"R_ARM_ALU_PCREL_15_8\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_PCREL_23_15\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_PCREL_7_0\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_PC_G0\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_PC_G0_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_PC_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_PC_G1_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_PC_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_SBREL_19_12_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_SBREL_27_20_CK\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_SB_G0\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_SB_G0_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_SB_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_SB_G1_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_SB_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_AMP_VCALL9\", Const, 0, \"\"},\n\t\t{\"R_ARM_BASE_ABS\", Const, 10, \"\"},\n\t\t{\"R_ARM_CALL\", Const, 10, \"\"},\n\t\t{\"R_ARM_COPY\", Const, 0, \"\"},\n\t\t{\"R_ARM_GLOB_DAT\", Const, 0, \"\"},\n\t\t{\"R_ARM_GNU_VTENTRY\", Const, 0, \"\"},\n\t\t{\"R_ARM_GNU_VTINHERIT\", Const, 0, \"\"},\n\t\t{\"R_ARM_GOT32\", Const, 0, \"\"},\n\t\t{\"R_ARM_GOTOFF\", Const, 0, \"\"},\n\t\t{\"R_ARM_GOTOFF12\", Const, 10, \"\"},\n\t\t{\"R_ARM_GOTPC\", Const, 0, \"\"},\n\t\t{\"R_ARM_GOTRELAX\", Const, 10, \"\"},\n\t\t{\"R_ARM_GOT_ABS\", Const, 10, \"\"},\n\t\t{\"R_ARM_GOT_BREL12\", Const, 10, \"\"},\n\t\t{\"R_ARM_GOT_PREL\", Const, 10, \"\"},\n\t\t{\"R_ARM_IRELATIVE\", Const, 10, \"\"},\n\t\t{\"R_ARM_JUMP24\", Const, 10, \"\"},\n\t\t{\"R_ARM_JUMP_SLOT\", Const, 0, \"\"},\n\t\t{\"R_ARM_LDC_PC_G0\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDC_PC_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDC_PC_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDC_SB_G0\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDC_SB_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDC_SB_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDRS_PC_G0\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDRS_PC_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDRS_PC_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDRS_SB_G0\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDRS_SB_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDRS_SB_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDR_PC_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDR_PC_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDR_SBREL_11_10_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDR_SB_G0\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDR_SB_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDR_SB_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_ME_TOO\", Const, 10, \"\"},\n\t\t{\"R_ARM_MOVT_ABS\", Const, 10, \"\"},\n\t\t{\"R_ARM_MOVT_BREL\", Const, 10, \"\"},\n\t\t{\"R_ARM_MOVT_PREL\", Const, 10, \"\"},\n\t\t{\"R_ARM_MOVW_ABS_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_MOVW_BREL\", Const, 10, \"\"},\n\t\t{\"R_ARM_MOVW_BREL_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_MOVW_PREL_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_NONE\", Const, 0, \"\"},\n\t\t{\"R_ARM_PC13\", Const, 0, \"\"},\n\t\t{\"R_ARM_PC24\", Const, 0, \"\"},\n\t\t{\"R_ARM_PLT32\", Const, 0, \"\"},\n\t\t{\"R_ARM_PLT32_ABS\", Const, 10, \"\"},\n\t\t{\"R_ARM_PREL31\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_0\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_1\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_10\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_11\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_12\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_13\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_14\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_15\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_2\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_3\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_4\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_5\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_6\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_7\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_8\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_9\", Const, 10, \"\"},\n\t\t{\"R_ARM_RABS32\", Const, 0, \"\"},\n\t\t{\"R_ARM_RBASE\", Const, 0, \"\"},\n\t\t{\"R_ARM_REL32\", Const, 0, \"\"},\n\t\t{\"R_ARM_REL32_NOI\", Const, 10, \"\"},\n\t\t{\"R_ARM_RELATIVE\", Const, 0, \"\"},\n\t\t{\"R_ARM_RPC24\", Const, 0, \"\"},\n\t\t{\"R_ARM_RREL32\", Const, 0, \"\"},\n\t\t{\"R_ARM_RSBREL32\", Const, 0, \"\"},\n\t\t{\"R_ARM_RXPC25\", Const, 10, \"\"},\n\t\t{\"R_ARM_SBREL31\", Const, 10, \"\"},\n\t\t{\"R_ARM_SBREL32\", Const, 0, \"\"},\n\t\t{\"R_ARM_SWI24\", Const, 0, \"\"},\n\t\t{\"R_ARM_TARGET1\", Const, 10, \"\"},\n\t\t{\"R_ARM_TARGET2\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_ABS5\", Const, 0, \"\"},\n\t\t{\"R_ARM_THM_ALU_ABS_G0_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_ALU_ABS_G1_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_ALU_ABS_G2_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_ALU_ABS_G3\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_ALU_PREL_11_0\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_GOT_BREL12\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_JUMP11\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_JUMP19\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_JUMP24\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_JUMP6\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_JUMP8\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_MOVT_ABS\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_MOVT_BREL\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_MOVT_PREL\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_MOVW_ABS_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_MOVW_BREL\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_MOVW_BREL_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_MOVW_PREL_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_PC12\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_PC22\", Const, 0, \"\"},\n\t\t{\"R_ARM_THM_PC8\", Const, 0, \"\"},\n\t\t{\"R_ARM_THM_RPC22\", Const, 0, \"\"},\n\t\t{\"R_ARM_THM_SWI8\", Const, 0, \"\"},\n\t\t{\"R_ARM_THM_TLS_CALL\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_TLS_DESCSEQ16\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_TLS_DESCSEQ32\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_XPC22\", Const, 0, \"\"},\n\t\t{\"R_ARM_TLS_CALL\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_DESCSEQ\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_DTPMOD32\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_DTPOFF32\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_GD32\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_GOTDESC\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_IE12GP\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_IE32\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_LDM32\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_LDO12\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_LDO32\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_LE12\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_LE32\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_TPOFF32\", Const, 10, \"\"},\n\t\t{\"R_ARM_V4BX\", Const, 10, \"\"},\n\t\t{\"R_ARM_XPC25\", Const, 0, \"\"},\n\t\t{\"R_INFO\", Func, 0, \"func(sym uint32, typ uint32) uint64\"},\n\t\t{\"R_INFO32\", Func, 0, \"func(sym uint32, typ uint32) uint32\"},\n\t\t{\"R_LARCH\", Type, 19, \"\"},\n\t\t{\"R_LARCH_32\", Const, 19, \"\"},\n\t\t{\"R_LARCH_32_PCREL\", Const, 20, \"\"},\n\t\t{\"R_LARCH_64\", Const, 19, \"\"},\n\t\t{\"R_LARCH_64_PCREL\", Const, 22, \"\"},\n\t\t{\"R_LARCH_ABS64_HI12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_ABS64_LO20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_ABS_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_ABS_LO12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_ADD16\", Const, 19, \"\"},\n\t\t{\"R_LARCH_ADD24\", Const, 19, \"\"},\n\t\t{\"R_LARCH_ADD32\", Const, 19, \"\"},\n\t\t{\"R_LARCH_ADD6\", Const, 22, \"\"},\n\t\t{\"R_LARCH_ADD64\", Const, 19, \"\"},\n\t\t{\"R_LARCH_ADD8\", Const, 19, \"\"},\n\t\t{\"R_LARCH_ADD_ULEB128\", Const, 22, \"\"},\n\t\t{\"R_LARCH_ALIGN\", Const, 22, \"\"},\n\t\t{\"R_LARCH_B16\", Const, 20, \"\"},\n\t\t{\"R_LARCH_B21\", Const, 20, \"\"},\n\t\t{\"R_LARCH_B26\", Const, 20, \"\"},\n\t\t{\"R_LARCH_CALL36\", Const, 26, \"\"},\n\t\t{\"R_LARCH_CFA\", Const, 22, \"\"},\n\t\t{\"R_LARCH_COPY\", Const, 19, \"\"},\n\t\t{\"R_LARCH_DELETE\", Const, 22, \"\"},\n\t\t{\"R_LARCH_GNU_VTENTRY\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GNU_VTINHERIT\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT64_HI12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT64_LO20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT64_PC_HI12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT64_PC_LO20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT_LO12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT_PC_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT_PC_LO12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_IRELATIVE\", Const, 19, \"\"},\n\t\t{\"R_LARCH_JUMP_SLOT\", Const, 19, \"\"},\n\t\t{\"R_LARCH_MARK_LA\", Const, 19, \"\"},\n\t\t{\"R_LARCH_MARK_PCREL\", Const, 19, \"\"},\n\t\t{\"R_LARCH_NONE\", Const, 19, \"\"},\n\t\t{\"R_LARCH_PCALA64_HI12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_PCALA64_LO20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_PCALA_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_PCALA_LO12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_PCREL20_S2\", Const, 22, \"\"},\n\t\t{\"R_LARCH_RELATIVE\", Const, 19, \"\"},\n\t\t{\"R_LARCH_RELAX\", Const, 20, \"\"},\n\t\t{\"R_LARCH_SOP_ADD\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_AND\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_ASSERT\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_IF_ELSE\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_NOT\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_S_0_10_10_16_S2\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_S_0_5_10_16_S2\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_S_10_12\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_S_10_16\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_S_10_16_S2\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_S_10_5\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_S_5_20\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_U\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_U_10_12\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_ABSOLUTE\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_DUP\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_GPREL\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_PCREL\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_PLT_PCREL\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_TLS_GD\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_TLS_GOT\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_TLS_TPREL\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_SL\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_SR\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_SUB\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SUB16\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SUB24\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SUB32\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SUB6\", Const, 22, \"\"},\n\t\t{\"R_LARCH_SUB64\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SUB8\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SUB_ULEB128\", Const, 22, \"\"},\n\t\t{\"R_LARCH_TLS_DESC32\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC64\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC64_HI12\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC64_LO20\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC64_PC_HI12\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC64_PC_LO20\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC_CALL\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC_HI20\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC_LD\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC_LO12\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC_PCREL20_S2\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC_PC_HI20\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC_PC_LO12\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DTPMOD32\", Const, 19, \"\"},\n\t\t{\"R_LARCH_TLS_DTPMOD64\", Const, 19, \"\"},\n\t\t{\"R_LARCH_TLS_DTPREL32\", Const, 19, \"\"},\n\t\t{\"R_LARCH_TLS_DTPREL64\", Const, 19, \"\"},\n\t\t{\"R_LARCH_TLS_GD_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_GD_PCREL20_S2\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_GD_PC_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE64_HI12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE64_LO20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE64_PC_HI12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE64_PC_LO20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE_LO12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE_PC_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE_PC_LO12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_LD_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_LD_PCREL20_S2\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_LD_PC_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_LE64_HI12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_LE64_LO20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_LE_ADD_R\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_LE_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_LE_HI20_R\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_LE_LO12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_LE_LO12_R\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_TPREL32\", Const, 19, \"\"},\n\t\t{\"R_LARCH_TLS_TPREL64\", Const, 19, \"\"},\n\t\t{\"R_MIPS\", Type, 6, \"\"},\n\t\t{\"R_MIPS_16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_26\", Const, 6, \"\"},\n\t\t{\"R_MIPS_32\", Const, 6, \"\"},\n\t\t{\"R_MIPS_64\", Const, 6, \"\"},\n\t\t{\"R_MIPS_ADD_IMMEDIATE\", Const, 6, \"\"},\n\t\t{\"R_MIPS_CALL16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_CALL_HI16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_CALL_LO16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_DELETE\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GOT16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GOT_DISP\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GOT_HI16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GOT_LO16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GOT_OFST\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GOT_PAGE\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GPREL16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GPREL32\", Const, 6, \"\"},\n\t\t{\"R_MIPS_HI16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_HIGHER\", Const, 6, \"\"},\n\t\t{\"R_MIPS_HIGHEST\", Const, 6, \"\"},\n\t\t{\"R_MIPS_INSERT_A\", Const, 6, \"\"},\n\t\t{\"R_MIPS_INSERT_B\", Const, 6, \"\"},\n\t\t{\"R_MIPS_JALR\", Const, 6, \"\"},\n\t\t{\"R_MIPS_LITERAL\", Const, 6, \"\"},\n\t\t{\"R_MIPS_LO16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_NONE\", Const, 6, \"\"},\n\t\t{\"R_MIPS_PC16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_PC32\", Const, 22, \"\"},\n\t\t{\"R_MIPS_PJUMP\", Const, 6, \"\"},\n\t\t{\"R_MIPS_REL16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_REL32\", Const, 6, \"\"},\n\t\t{\"R_MIPS_RELGOT\", Const, 6, \"\"},\n\t\t{\"R_MIPS_SCN_DISP\", Const, 6, \"\"},\n\t\t{\"R_MIPS_SHIFT5\", Const, 6, \"\"},\n\t\t{\"R_MIPS_SHIFT6\", Const, 6, \"\"},\n\t\t{\"R_MIPS_SUB\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_DTPMOD32\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_DTPMOD64\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_DTPREL32\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_DTPREL64\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_DTPREL_HI16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_DTPREL_LO16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_GD\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_GOTTPREL\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_LDM\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_TPREL32\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_TPREL64\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_TPREL_HI16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_TPREL_LO16\", Const, 6, \"\"},\n\t\t{\"R_PPC\", Type, 0, \"\"},\n\t\t{\"R_PPC64\", Type, 5, \"\"},\n\t\t{\"R_PPC64_ADDR14\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR14_BRNTAKEN\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR14_BRTAKEN\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGH\", Const, 10, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHA\", Const, 10, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHER\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHER34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHERA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHERA34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHEST\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHEST34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHESTA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHESTA34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_ADDR16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_LO_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR24\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR32\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR64\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR64_LOCAL\", Const, 10, \"\"},\n\t\t{\"R_PPC64_COPY\", Const, 20, \"\"},\n\t\t{\"R_PPC64_D28\", Const, 20, \"\"},\n\t\t{\"R_PPC64_D34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_D34_HA30\", Const, 20, \"\"},\n\t\t{\"R_PPC64_D34_HI30\", Const, 20, \"\"},\n\t\t{\"R_PPC64_D34_LO\", Const, 20, \"\"},\n\t\t{\"R_PPC64_DTPMOD64\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HIGH\", Const, 10, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HIGHA\", Const, 10, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HIGHER\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HIGHERA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HIGHEST\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HIGHESTA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_LO_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_DTPREL64\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ENTRY\", Const, 10, \"\"},\n\t\t{\"R_PPC64_GLOB_DAT\", Const, 20, \"\"},\n\t\t{\"R_PPC64_GNU_VTENTRY\", Const, 20, \"\"},\n\t\t{\"R_PPC64_GNU_VTINHERIT\", Const, 20, \"\"},\n\t\t{\"R_PPC64_GOT16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT16_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT16_LO_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_DTPREL16_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_DTPREL16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_DTPREL16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_DTPREL16_LO_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_DTPREL_PCREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_GOT_PCREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_GOT_TLSGD16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSGD16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSGD16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSGD16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSGD_PCREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_GOT_TLSLD16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSLD16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSLD16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSLD16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSLD_PCREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_GOT_TPREL16_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TPREL16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TPREL16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TPREL16_LO_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TPREL_PCREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_IRELATIVE\", Const, 10, \"\"},\n\t\t{\"R_PPC64_JMP_IREL\", Const, 10, \"\"},\n\t\t{\"R_PPC64_JMP_SLOT\", Const, 5, \"\"},\n\t\t{\"R_PPC64_NONE\", Const, 5, \"\"},\n\t\t{\"R_PPC64_PCREL28\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PCREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PCREL_OPT\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLT16_HA\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLT16_HI\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLT16_LO\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLT16_LO_DS\", Const, 10, \"\"},\n\t\t{\"R_PPC64_PLT32\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLT64\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLTCALL\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLTCALL_NOTOC\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLTGOT16\", Const, 10, \"\"},\n\t\t{\"R_PPC64_PLTGOT16_DS\", Const, 10, \"\"},\n\t\t{\"R_PPC64_PLTGOT16_HA\", Const, 10, \"\"},\n\t\t{\"R_PPC64_PLTGOT16_HI\", Const, 10, \"\"},\n\t\t{\"R_PPC64_PLTGOT16_LO\", Const, 10, \"\"},\n\t\t{\"R_PPC64_PLTGOT_LO_DS\", Const, 10, \"\"},\n\t\t{\"R_PPC64_PLTREL32\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLTREL64\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLTSEQ\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLTSEQ_NOTOC\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLT_PCREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLT_PCREL34_NOTOC\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL14\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL14_BRNTAKEN\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL14_BRTAKEN\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL16DX_HA\", Const, 10, \"\"},\n\t\t{\"R_PPC64_REL16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL16_HIGH\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHA\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHER\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHER34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHERA\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHERA34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHEST\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHEST34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHESTA\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHESTA34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL24\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL24_NOTOC\", Const, 10, \"\"},\n\t\t{\"R_PPC64_REL24_P9NOTOC\", Const, 21, \"\"},\n\t\t{\"R_PPC64_REL30\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL32\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL64\", Const, 5, \"\"},\n\t\t{\"R_PPC64_RELATIVE\", Const, 18, \"\"},\n\t\t{\"R_PPC64_SECTOFF\", Const, 20, \"\"},\n\t\t{\"R_PPC64_SECTOFF_DS\", Const, 10, \"\"},\n\t\t{\"R_PPC64_SECTOFF_HA\", Const, 20, \"\"},\n\t\t{\"R_PPC64_SECTOFF_HI\", Const, 20, \"\"},\n\t\t{\"R_PPC64_SECTOFF_LO\", Const, 20, \"\"},\n\t\t{\"R_PPC64_SECTOFF_LO_DS\", Const, 10, \"\"},\n\t\t{\"R_PPC64_TLS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TLSGD\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TLSLD\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOC\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOC16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOC16_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOC16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOC16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOC16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOC16_LO_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOCSAVE\", Const, 10, \"\"},\n\t\t{\"R_PPC64_TPREL16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_HIGH\", Const, 10, \"\"},\n\t\t{\"R_PPC64_TPREL16_HIGHA\", Const, 10, \"\"},\n\t\t{\"R_PPC64_TPREL16_HIGHER\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_HIGHERA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_HIGHEST\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_HIGHESTA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_LO_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_TPREL64\", Const, 5, \"\"},\n\t\t{\"R_PPC64_UADDR16\", Const, 20, \"\"},\n\t\t{\"R_PPC64_UADDR32\", Const, 20, \"\"},\n\t\t{\"R_PPC64_UADDR64\", Const, 20, \"\"},\n\t\t{\"R_PPC_ADDR14\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR14_BRNTAKEN\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR14_BRTAKEN\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR16\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR24\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR32\", Const, 0, \"\"},\n\t\t{\"R_PPC_COPY\", Const, 0, \"\"},\n\t\t{\"R_PPC_DTPMOD32\", Const, 0, \"\"},\n\t\t{\"R_PPC_DTPREL16\", Const, 0, \"\"},\n\t\t{\"R_PPC_DTPREL16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_DTPREL16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_DTPREL16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_DTPREL32\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_BIT_FLD\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_MRKREF\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_NADDR16\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_NADDR16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_NADDR16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_NADDR16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_NADDR32\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_RELSDA\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_RELSEC16\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_RELST_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_RELST_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_RELST_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_SDA21\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_SDA2I16\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_SDA2REL\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_SDAI16\", Const, 0, \"\"},\n\t\t{\"R_PPC_GLOB_DAT\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT16\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSGD16\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSGD16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSGD16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSGD16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSLD16\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSLD16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSLD16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSLD16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TPREL16\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TPREL16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TPREL16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TPREL16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_JMP_SLOT\", Const, 0, \"\"},\n\t\t{\"R_PPC_LOCAL24PC\", Const, 0, \"\"},\n\t\t{\"R_PPC_NONE\", Const, 0, \"\"},\n\t\t{\"R_PPC_PLT16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_PLT16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_PLT16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_PLT32\", Const, 0, \"\"},\n\t\t{\"R_PPC_PLTREL24\", Const, 0, \"\"},\n\t\t{\"R_PPC_PLTREL32\", Const, 0, \"\"},\n\t\t{\"R_PPC_REL14\", Const, 0, \"\"},\n\t\t{\"R_PPC_REL14_BRNTAKEN\", Const, 0, \"\"},\n\t\t{\"R_PPC_REL14_BRTAKEN\", Const, 0, \"\"},\n\t\t{\"R_PPC_REL24\", Const, 0, \"\"},\n\t\t{\"R_PPC_REL32\", Const, 0, \"\"},\n\t\t{\"R_PPC_RELATIVE\", Const, 0, \"\"},\n\t\t{\"R_PPC_SDAREL16\", Const, 0, \"\"},\n\t\t{\"R_PPC_SECTOFF\", Const, 0, \"\"},\n\t\t{\"R_PPC_SECTOFF_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_SECTOFF_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_SECTOFF_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_TLS\", Const, 0, \"\"},\n\t\t{\"R_PPC_TPREL16\", Const, 0, \"\"},\n\t\t{\"R_PPC_TPREL16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_TPREL16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_TPREL16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_TPREL32\", Const, 0, \"\"},\n\t\t{\"R_PPC_UADDR16\", Const, 0, \"\"},\n\t\t{\"R_PPC_UADDR32\", Const, 0, \"\"},\n\t\t{\"R_RISCV\", Type, 11, \"\"},\n\t\t{\"R_RISCV_32\", Const, 11, \"\"},\n\t\t{\"R_RISCV_32_PCREL\", Const, 12, \"\"},\n\t\t{\"R_RISCV_64\", Const, 11, \"\"},\n\t\t{\"R_RISCV_ADD16\", Const, 11, \"\"},\n\t\t{\"R_RISCV_ADD32\", Const, 11, \"\"},\n\t\t{\"R_RISCV_ADD64\", Const, 11, \"\"},\n\t\t{\"R_RISCV_ADD8\", Const, 11, \"\"},\n\t\t{\"R_RISCV_ALIGN\", Const, 11, \"\"},\n\t\t{\"R_RISCV_BRANCH\", Const, 11, \"\"},\n\t\t{\"R_RISCV_CALL\", Const, 11, \"\"},\n\t\t{\"R_RISCV_CALL_PLT\", Const, 11, \"\"},\n\t\t{\"R_RISCV_COPY\", Const, 11, \"\"},\n\t\t{\"R_RISCV_GNU_VTENTRY\", Const, 11, \"\"},\n\t\t{\"R_RISCV_GNU_VTINHERIT\", Const, 11, \"\"},\n\t\t{\"R_RISCV_GOT_HI20\", Const, 11, \"\"},\n\t\t{\"R_RISCV_GPREL_I\", Const, 11, \"\"},\n\t\t{\"R_RISCV_GPREL_S\", Const, 11, \"\"},\n\t\t{\"R_RISCV_HI20\", Const, 11, \"\"},\n\t\t{\"R_RISCV_JAL\", Const, 11, \"\"},\n\t\t{\"R_RISCV_JUMP_SLOT\", Const, 11, \"\"},\n\t\t{\"R_RISCV_LO12_I\", Const, 11, \"\"},\n\t\t{\"R_RISCV_LO12_S\", Const, 11, \"\"},\n\t\t{\"R_RISCV_NONE\", Const, 11, \"\"},\n\t\t{\"R_RISCV_PCREL_HI20\", Const, 11, \"\"},\n\t\t{\"R_RISCV_PCREL_LO12_I\", Const, 11, \"\"},\n\t\t{\"R_RISCV_PCREL_LO12_S\", Const, 11, \"\"},\n\t\t{\"R_RISCV_RELATIVE\", Const, 11, \"\"},\n\t\t{\"R_RISCV_RELAX\", Const, 11, \"\"},\n\t\t{\"R_RISCV_RVC_BRANCH\", Const, 11, \"\"},\n\t\t{\"R_RISCV_RVC_JUMP\", Const, 11, \"\"},\n\t\t{\"R_RISCV_RVC_LUI\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SET16\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SET32\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SET6\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SET8\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SUB16\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SUB32\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SUB6\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SUB64\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SUB8\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_DTPMOD32\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_DTPMOD64\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_DTPREL32\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_DTPREL64\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_GD_HI20\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_GOT_HI20\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_TPREL32\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_TPREL64\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TPREL_ADD\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TPREL_HI20\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TPREL_I\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TPREL_LO12_I\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TPREL_LO12_S\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TPREL_S\", Const, 11, \"\"},\n\t\t{\"R_SPARC\", Type, 0, \"\"},\n\t\t{\"R_SPARC_10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_11\", Const, 0, \"\"},\n\t\t{\"R_SPARC_13\", Const, 0, \"\"},\n\t\t{\"R_SPARC_16\", Const, 0, \"\"},\n\t\t{\"R_SPARC_22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_32\", Const, 0, \"\"},\n\t\t{\"R_SPARC_5\", Const, 0, \"\"},\n\t\t{\"R_SPARC_6\", Const, 0, \"\"},\n\t\t{\"R_SPARC_64\", Const, 0, \"\"},\n\t\t{\"R_SPARC_7\", Const, 0, \"\"},\n\t\t{\"R_SPARC_8\", Const, 0, \"\"},\n\t\t{\"R_SPARC_COPY\", Const, 0, \"\"},\n\t\t{\"R_SPARC_DISP16\", Const, 0, \"\"},\n\t\t{\"R_SPARC_DISP32\", Const, 0, \"\"},\n\t\t{\"R_SPARC_DISP64\", Const, 0, \"\"},\n\t\t{\"R_SPARC_DISP8\", Const, 0, \"\"},\n\t\t{\"R_SPARC_GLOB_DAT\", Const, 0, \"\"},\n\t\t{\"R_SPARC_GLOB_JMP\", Const, 0, \"\"},\n\t\t{\"R_SPARC_GOT10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_GOT13\", Const, 0, \"\"},\n\t\t{\"R_SPARC_GOT22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_H44\", Const, 0, \"\"},\n\t\t{\"R_SPARC_HH22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_HI22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_HIPLT22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_HIX22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_HM10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_JMP_SLOT\", Const, 0, \"\"},\n\t\t{\"R_SPARC_L44\", Const, 0, \"\"},\n\t\t{\"R_SPARC_LM22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_LO10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_LOPLT10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_LOX10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_M44\", Const, 0, \"\"},\n\t\t{\"R_SPARC_NONE\", Const, 0, \"\"},\n\t\t{\"R_SPARC_OLO10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PC10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PC22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PCPLT10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PCPLT22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PCPLT32\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PC_HH22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PC_HM10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PC_LM22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PLT32\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PLT64\", Const, 0, \"\"},\n\t\t{\"R_SPARC_REGISTER\", Const, 0, \"\"},\n\t\t{\"R_SPARC_RELATIVE\", Const, 0, \"\"},\n\t\t{\"R_SPARC_UA16\", Const, 0, \"\"},\n\t\t{\"R_SPARC_UA32\", Const, 0, \"\"},\n\t\t{\"R_SPARC_UA64\", Const, 0, \"\"},\n\t\t{\"R_SPARC_WDISP16\", Const, 0, \"\"},\n\t\t{\"R_SPARC_WDISP19\", Const, 0, \"\"},\n\t\t{\"R_SPARC_WDISP22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_WDISP30\", Const, 0, \"\"},\n\t\t{\"R_SPARC_WPLT30\", Const, 0, \"\"},\n\t\t{\"R_SYM32\", Func, 0, \"func(info uint32) uint32\"},\n\t\t{\"R_SYM64\", Func, 0, \"func(info uint64) uint32\"},\n\t\t{\"R_TYPE32\", Func, 0, \"func(info uint32) uint32\"},\n\t\t{\"R_TYPE64\", Func, 0, \"func(info uint64) uint32\"},\n\t\t{\"R_X86_64\", Type, 0, \"\"},\n\t\t{\"R_X86_64_16\", Const, 0, \"\"},\n\t\t{\"R_X86_64_32\", Const, 0, \"\"},\n\t\t{\"R_X86_64_32S\", Const, 0, \"\"},\n\t\t{\"R_X86_64_64\", Const, 0, \"\"},\n\t\t{\"R_X86_64_8\", Const, 0, \"\"},\n\t\t{\"R_X86_64_COPY\", Const, 0, \"\"},\n\t\t{\"R_X86_64_DTPMOD64\", Const, 0, \"\"},\n\t\t{\"R_X86_64_DTPOFF32\", Const, 0, \"\"},\n\t\t{\"R_X86_64_DTPOFF64\", Const, 0, \"\"},\n\t\t{\"R_X86_64_GLOB_DAT\", Const, 0, \"\"},\n\t\t{\"R_X86_64_GOT32\", Const, 0, \"\"},\n\t\t{\"R_X86_64_GOT64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTOFF64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTPC32\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTPC32_TLSDESC\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTPC64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTPCREL\", Const, 0, \"\"},\n\t\t{\"R_X86_64_GOTPCREL64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTPCRELX\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTPLT64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTTPOFF\", Const, 0, \"\"},\n\t\t{\"R_X86_64_IRELATIVE\", Const, 10, \"\"},\n\t\t{\"R_X86_64_JMP_SLOT\", Const, 0, \"\"},\n\t\t{\"R_X86_64_NONE\", Const, 0, \"\"},\n\t\t{\"R_X86_64_PC16\", Const, 0, \"\"},\n\t\t{\"R_X86_64_PC32\", Const, 0, \"\"},\n\t\t{\"R_X86_64_PC32_BND\", Const, 10, \"\"},\n\t\t{\"R_X86_64_PC64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_PC8\", Const, 0, \"\"},\n\t\t{\"R_X86_64_PLT32\", Const, 0, \"\"},\n\t\t{\"R_X86_64_PLT32_BND\", Const, 10, \"\"},\n\t\t{\"R_X86_64_PLTOFF64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_RELATIVE\", Const, 0, \"\"},\n\t\t{\"R_X86_64_RELATIVE64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_REX_GOTPCRELX\", Const, 10, \"\"},\n\t\t{\"R_X86_64_SIZE32\", Const, 10, \"\"},\n\t\t{\"R_X86_64_SIZE64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_TLSDESC\", Const, 10, \"\"},\n\t\t{\"R_X86_64_TLSDESC_CALL\", Const, 10, \"\"},\n\t\t{\"R_X86_64_TLSGD\", Const, 0, \"\"},\n\t\t{\"R_X86_64_TLSLD\", Const, 0, \"\"},\n\t\t{\"R_X86_64_TPOFF32\", Const, 0, \"\"},\n\t\t{\"R_X86_64_TPOFF64\", Const, 0, \"\"},\n\t\t{\"Rel32\", Type, 0, \"\"},\n\t\t{\"Rel32.Info\", Field, 0, \"\"},\n\t\t{\"Rel32.Off\", Field, 0, \"\"},\n\t\t{\"Rel64\", Type, 0, \"\"},\n\t\t{\"Rel64.Info\", Field, 0, \"\"},\n\t\t{\"Rel64.Off\", Field, 0, \"\"},\n\t\t{\"Rela32\", Type, 0, \"\"},\n\t\t{\"Rela32.Addend\", Field, 0, \"\"},\n\t\t{\"Rela32.Info\", Field, 0, \"\"},\n\t\t{\"Rela32.Off\", Field, 0, \"\"},\n\t\t{\"Rela64\", Type, 0, \"\"},\n\t\t{\"Rela64.Addend\", Field, 0, \"\"},\n\t\t{\"Rela64.Info\", Field, 0, \"\"},\n\t\t{\"Rela64.Off\", Field, 0, \"\"},\n\t\t{\"SHF_ALLOC\", Const, 0, \"\"},\n\t\t{\"SHF_COMPRESSED\", Const, 6, \"\"},\n\t\t{\"SHF_EXECINSTR\", Const, 0, \"\"},\n\t\t{\"SHF_GROUP\", Const, 0, \"\"},\n\t\t{\"SHF_INFO_LINK\", Const, 0, \"\"},\n\t\t{\"SHF_LINK_ORDER\", Const, 0, \"\"},\n\t\t{\"SHF_MASKOS\", Const, 0, \"\"},\n\t\t{\"SHF_MASKPROC\", Const, 0, \"\"},\n\t\t{\"SHF_MERGE\", Const, 0, \"\"},\n\t\t{\"SHF_OS_NONCONFORMING\", Const, 0, \"\"},\n\t\t{\"SHF_STRINGS\", Const, 0, \"\"},\n\t\t{\"SHF_TLS\", Const, 0, \"\"},\n\t\t{\"SHF_WRITE\", Const, 0, \"\"},\n\t\t{\"SHN_ABS\", Const, 0, \"\"},\n\t\t{\"SHN_COMMON\", Const, 0, \"\"},\n\t\t{\"SHN_HIOS\", Const, 0, \"\"},\n\t\t{\"SHN_HIPROC\", Const, 0, \"\"},\n\t\t{\"SHN_HIRESERVE\", Const, 0, \"\"},\n\t\t{\"SHN_LOOS\", Const, 0, \"\"},\n\t\t{\"SHN_LOPROC\", Const, 0, \"\"},\n\t\t{\"SHN_LORESERVE\", Const, 0, \"\"},\n\t\t{\"SHN_UNDEF\", Const, 0, \"\"},\n\t\t{\"SHN_XINDEX\", Const, 0, \"\"},\n\t\t{\"SHT_DYNAMIC\", Const, 0, \"\"},\n\t\t{\"SHT_DYNSYM\", Const, 0, \"\"},\n\t\t{\"SHT_FINI_ARRAY\", Const, 0, \"\"},\n\t\t{\"SHT_GNU_ATTRIBUTES\", Const, 0, \"\"},\n\t\t{\"SHT_GNU_HASH\", Const, 0, \"\"},\n\t\t{\"SHT_GNU_LIBLIST\", Const, 0, \"\"},\n\t\t{\"SHT_GNU_VERDEF\", Const, 0, \"\"},\n\t\t{\"SHT_GNU_VERNEED\", Const, 0, \"\"},\n\t\t{\"SHT_GNU_VERSYM\", Const, 0, \"\"},\n\t\t{\"SHT_GROUP\", Const, 0, \"\"},\n\t\t{\"SHT_HASH\", Const, 0, \"\"},\n\t\t{\"SHT_HIOS\", Const, 0, \"\"},\n\t\t{\"SHT_HIPROC\", Const, 0, \"\"},\n\t\t{\"SHT_HIUSER\", Const, 0, \"\"},\n\t\t{\"SHT_INIT_ARRAY\", Const, 0, \"\"},\n\t\t{\"SHT_LOOS\", Const, 0, \"\"},\n\t\t{\"SHT_LOPROC\", Const, 0, \"\"},\n\t\t{\"SHT_LOUSER\", Const, 0, \"\"},\n\t\t{\"SHT_MIPS_ABIFLAGS\", Const, 17, \"\"},\n\t\t{\"SHT_NOBITS\", Const, 0, \"\"},\n\t\t{\"SHT_NOTE\", Const, 0, \"\"},\n\t\t{\"SHT_NULL\", Const, 0, \"\"},\n\t\t{\"SHT_PREINIT_ARRAY\", Const, 0, \"\"},\n\t\t{\"SHT_PROGBITS\", Const, 0, \"\"},\n\t\t{\"SHT_REL\", Const, 0, \"\"},\n\t\t{\"SHT_RELA\", Const, 0, \"\"},\n\t\t{\"SHT_RISCV_ATTRIBUTES\", Const, 25, \"\"},\n\t\t{\"SHT_SHLIB\", Const, 0, \"\"},\n\t\t{\"SHT_STRTAB\", Const, 0, \"\"},\n\t\t{\"SHT_SYMTAB\", Const, 0, \"\"},\n\t\t{\"SHT_SYMTAB_SHNDX\", Const, 0, \"\"},\n\t\t{\"STB_GLOBAL\", Const, 0, \"\"},\n\t\t{\"STB_HIOS\", Const, 0, \"\"},\n\t\t{\"STB_HIPROC\", Const, 0, \"\"},\n\t\t{\"STB_LOCAL\", Const, 0, \"\"},\n\t\t{\"STB_LOOS\", Const, 0, \"\"},\n\t\t{\"STB_LOPROC\", Const, 0, \"\"},\n\t\t{\"STB_WEAK\", Const, 0, \"\"},\n\t\t{\"STT_COMMON\", Const, 0, \"\"},\n\t\t{\"STT_FILE\", Const, 0, \"\"},\n\t\t{\"STT_FUNC\", Const, 0, \"\"},\n\t\t{\"STT_GNU_IFUNC\", Const, 23, \"\"},\n\t\t{\"STT_HIOS\", Const, 0, \"\"},\n\t\t{\"STT_HIPROC\", Const, 0, \"\"},\n\t\t{\"STT_LOOS\", Const, 0, \"\"},\n\t\t{\"STT_LOPROC\", Const, 0, \"\"},\n\t\t{\"STT_NOTYPE\", Const, 0, \"\"},\n\t\t{\"STT_OBJECT\", Const, 0, \"\"},\n\t\t{\"STT_RELC\", Const, 23, \"\"},\n\t\t{\"STT_SECTION\", Const, 0, \"\"},\n\t\t{\"STT_SRELC\", Const, 23, \"\"},\n\t\t{\"STT_TLS\", Const, 0, \"\"},\n\t\t{\"STV_DEFAULT\", Const, 0, \"\"},\n\t\t{\"STV_HIDDEN\", Const, 0, \"\"},\n\t\t{\"STV_INTERNAL\", Const, 0, \"\"},\n\t\t{\"STV_PROTECTED\", Const, 0, \"\"},\n\t\t{\"ST_BIND\", Func, 0, \"func(info uint8) SymBind\"},\n\t\t{\"ST_INFO\", Func, 0, \"func(bind SymBind, typ SymType) uint8\"},\n\t\t{\"ST_TYPE\", Func, 0, \"func(info uint8) SymType\"},\n\t\t{\"ST_VISIBILITY\", Func, 0, \"func(other uint8) SymVis\"},\n\t\t{\"Section\", Type, 0, \"\"},\n\t\t{\"Section.ReaderAt\", Field, 0, \"\"},\n\t\t{\"Section.SectionHeader\", Field, 0, \"\"},\n\t\t{\"Section32\", Type, 0, \"\"},\n\t\t{\"Section32.Addr\", Field, 0, \"\"},\n\t\t{\"Section32.Addralign\", Field, 0, \"\"},\n\t\t{\"Section32.Entsize\", Field, 0, \"\"},\n\t\t{\"Section32.Flags\", Field, 0, \"\"},\n\t\t{\"Section32.Info\", Field, 0, \"\"},\n\t\t{\"Section32.Link\", Field, 0, \"\"},\n\t\t{\"Section32.Name\", Field, 0, \"\"},\n\t\t{\"Section32.Off\", Field, 0, \"\"},\n\t\t{\"Section32.Size\", Field, 0, \"\"},\n\t\t{\"Section32.Type\", Field, 0, \"\"},\n\t\t{\"Section64\", Type, 0, \"\"},\n\t\t{\"Section64.Addr\", Field, 0, \"\"},\n\t\t{\"Section64.Addralign\", Field, 0, \"\"},\n\t\t{\"Section64.Entsize\", Field, 0, \"\"},\n\t\t{\"Section64.Flags\", Field, 0, \"\"},\n\t\t{\"Section64.Info\", Field, 0, \"\"},\n\t\t{\"Section64.Link\", Field, 0, \"\"},\n\t\t{\"Section64.Name\", Field, 0, \"\"},\n\t\t{\"Section64.Off\", Field, 0, \"\"},\n\t\t{\"Section64.Size\", Field, 0, \"\"},\n\t\t{\"Section64.Type\", Field, 0, \"\"},\n\t\t{\"SectionFlag\", Type, 0, \"\"},\n\t\t{\"SectionHeader\", Type, 0, \"\"},\n\t\t{\"SectionHeader.Addr\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Addralign\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Entsize\", Field, 0, \"\"},\n\t\t{\"SectionHeader.FileSize\", Field, 6, \"\"},\n\t\t{\"SectionHeader.Flags\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Info\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Link\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Name\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Offset\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Size\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Type\", Field, 0, \"\"},\n\t\t{\"SectionIndex\", Type, 0, \"\"},\n\t\t{\"SectionType\", Type, 0, \"\"},\n\t\t{\"Sym32\", Type, 0, \"\"},\n\t\t{\"Sym32.Info\", Field, 0, \"\"},\n\t\t{\"Sym32.Name\", Field, 0, \"\"},\n\t\t{\"Sym32.Other\", Field, 0, \"\"},\n\t\t{\"Sym32.Shndx\", Field, 0, \"\"},\n\t\t{\"Sym32.Size\", Field, 0, \"\"},\n\t\t{\"Sym32.Value\", Field, 0, \"\"},\n\t\t{\"Sym32Size\", Const, 0, \"\"},\n\t\t{\"Sym64\", Type, 0, \"\"},\n\t\t{\"Sym64.Info\", Field, 0, \"\"},\n\t\t{\"Sym64.Name\", Field, 0, \"\"},\n\t\t{\"Sym64.Other\", Field, 0, \"\"},\n\t\t{\"Sym64.Shndx\", Field, 0, \"\"},\n\t\t{\"Sym64.Size\", Field, 0, \"\"},\n\t\t{\"Sym64.Value\", Field, 0, \"\"},\n\t\t{\"Sym64Size\", Const, 0, \"\"},\n\t\t{\"SymBind\", Type, 0, \"\"},\n\t\t{\"SymType\", Type, 0, \"\"},\n\t\t{\"SymVis\", Type, 0, \"\"},\n\t\t{\"Symbol\", Type, 0, \"\"},\n\t\t{\"Symbol.HasVersion\", Field, 24, \"\"},\n\t\t{\"Symbol.Info\", Field, 0, \"\"},\n\t\t{\"Symbol.Library\", Field, 13, \"\"},\n\t\t{\"Symbol.Name\", Field, 0, \"\"},\n\t\t{\"Symbol.Other\", Field, 0, \"\"},\n\t\t{\"Symbol.Section\", Field, 0, \"\"},\n\t\t{\"Symbol.Size\", Field, 0, \"\"},\n\t\t{\"Symbol.Value\", Field, 0, \"\"},\n\t\t{\"Symbol.Version\", Field, 13, \"\"},\n\t\t{\"Symbol.VersionIndex\", Field, 24, \"\"},\n\t\t{\"Type\", Type, 0, \"\"},\n\t\t{\"VER_FLG_BASE\", Const, 24, \"\"},\n\t\t{\"VER_FLG_INFO\", Const, 24, \"\"},\n\t\t{\"VER_FLG_WEAK\", Const, 24, \"\"},\n\t\t{\"Version\", Type, 0, \"\"},\n\t\t{\"VersionIndex\", Type, 24, \"\"},\n\t},\n\t\"debug/gosym\": {\n\t\t{\"(*DecodingError).Error\", Method, 0, \"\"},\n\t\t{\"(*LineTable).LineToPC\", Method, 0, \"\"},\n\t\t{\"(*LineTable).PCToLine\", Method, 0, \"\"},\n\t\t{\"(*Sym).BaseName\", Method, 0, \"\"},\n\t\t{\"(*Sym).PackageName\", Method, 0, \"\"},\n\t\t{\"(*Sym).ReceiverName\", Method, 0, \"\"},\n\t\t{\"(*Sym).Static\", Method, 0, \"\"},\n\t\t{\"(*Table).LineToPC\", Method, 0, \"\"},\n\t\t{\"(*Table).LookupFunc\", Method, 0, \"\"},\n\t\t{\"(*Table).LookupSym\", Method, 0, \"\"},\n\t\t{\"(*Table).PCToFunc\", Method, 0, \"\"},\n\t\t{\"(*Table).PCToLine\", Method, 0, \"\"},\n\t\t{\"(*Table).SymByAddr\", Method, 0, \"\"},\n\t\t{\"(*UnknownLineError).Error\", Method, 0, \"\"},\n\t\t{\"(Func).BaseName\", Method, 0, \"\"},\n\t\t{\"(Func).PackageName\", Method, 0, \"\"},\n\t\t{\"(Func).ReceiverName\", Method, 0, \"\"},\n\t\t{\"(Func).Static\", Method, 0, \"\"},\n\t\t{\"(UnknownFileError).Error\", Method, 0, \"\"},\n\t\t{\"DecodingError\", Type, 0, \"\"},\n\t\t{\"Func\", Type, 0, \"\"},\n\t\t{\"Func.End\", Field, 0, \"\"},\n\t\t{\"Func.Entry\", Field, 0, \"\"},\n\t\t{\"Func.FrameSize\", Field, 0, \"\"},\n\t\t{\"Func.LineTable\", Field, 0, \"\"},\n\t\t{\"Func.Locals\", Field, 0, \"\"},\n\t\t{\"Func.Obj\", Field, 0, \"\"},\n\t\t{\"Func.Params\", Field, 0, \"\"},\n\t\t{\"Func.Sym\", Field, 0, \"\"},\n\t\t{\"LineTable\", Type, 0, \"\"},\n\t\t{\"LineTable.Data\", Field, 0, \"\"},\n\t\t{\"LineTable.Line\", Field, 0, \"\"},\n\t\t{\"LineTable.PC\", Field, 0, \"\"},\n\t\t{\"NewLineTable\", Func, 0, \"func(data []byte, text uint64) *LineTable\"},\n\t\t{\"NewTable\", Func, 0, \"func(symtab []byte, pcln *LineTable) (*Table, error)\"},\n\t\t{\"Obj\", Type, 0, \"\"},\n\t\t{\"Obj.Funcs\", Field, 0, \"\"},\n\t\t{\"Obj.Paths\", Field, 0, \"\"},\n\t\t{\"Sym\", Type, 0, \"\"},\n\t\t{\"Sym.Func\", Field, 0, \"\"},\n\t\t{\"Sym.GoType\", Field, 0, \"\"},\n\t\t{\"Sym.Name\", Field, 0, \"\"},\n\t\t{\"Sym.Type\", Field, 0, \"\"},\n\t\t{\"Sym.Value\", Field, 0, \"\"},\n\t\t{\"Table\", Type, 0, \"\"},\n\t\t{\"Table.Files\", Field, 0, \"\"},\n\t\t{\"Table.Funcs\", Field, 0, \"\"},\n\t\t{\"Table.Objs\", Field, 0, \"\"},\n\t\t{\"Table.Syms\", Field, 0, \"\"},\n\t\t{\"UnknownFileError\", Type, 0, \"\"},\n\t\t{\"UnknownLineError\", Type, 0, \"\"},\n\t\t{\"UnknownLineError.File\", Field, 0, \"\"},\n\t\t{\"UnknownLineError.Line\", Field, 0, \"\"},\n\t},\n\t\"debug/macho\": {\n\t\t{\"(*FatFile).Close\", Method, 3, \"\"},\n\t\t{\"(*File).Close\", Method, 0, \"\"},\n\t\t{\"(*File).DWARF\", Method, 0, \"\"},\n\t\t{\"(*File).ImportedLibraries\", Method, 0, \"\"},\n\t\t{\"(*File).ImportedSymbols\", Method, 0, \"\"},\n\t\t{\"(*File).Section\", Method, 0, \"\"},\n\t\t{\"(*File).Segment\", Method, 0, \"\"},\n\t\t{\"(*FormatError).Error\", Method, 0, \"\"},\n\t\t{\"(*Section).Data\", Method, 0, \"\"},\n\t\t{\"(*Section).Open\", Method, 0, \"\"},\n\t\t{\"(*Segment).Data\", Method, 0, \"\"},\n\t\t{\"(*Segment).Open\", Method, 0, \"\"},\n\t\t{\"(Cpu).GoString\", Method, 0, \"\"},\n\t\t{\"(Cpu).String\", Method, 0, \"\"},\n\t\t{\"(Dylib).Raw\", Method, 0, \"\"},\n\t\t{\"(Dysymtab).Raw\", Method, 0, \"\"},\n\t\t{\"(FatArch).Close\", Method, 3, \"\"},\n\t\t{\"(FatArch).DWARF\", Method, 3, \"\"},\n\t\t{\"(FatArch).ImportedLibraries\", Method, 3, \"\"},\n\t\t{\"(FatArch).ImportedSymbols\", Method, 3, \"\"},\n\t\t{\"(FatArch).Section\", Method, 3, \"\"},\n\t\t{\"(FatArch).Segment\", Method, 3, \"\"},\n\t\t{\"(Load).Raw\", Method, 0, \"\"},\n\t\t{\"(LoadBytes).Raw\", Method, 0, \"\"},\n\t\t{\"(LoadCmd).GoString\", Method, 0, \"\"},\n\t\t{\"(LoadCmd).String\", Method, 0, \"\"},\n\t\t{\"(RelocTypeARM).GoString\", Method, 10, \"\"},\n\t\t{\"(RelocTypeARM).String\", Method, 10, \"\"},\n\t\t{\"(RelocTypeARM64).GoString\", Method, 10, \"\"},\n\t\t{\"(RelocTypeARM64).String\", Method, 10, \"\"},\n\t\t{\"(RelocTypeGeneric).GoString\", Method, 10, \"\"},\n\t\t{\"(RelocTypeGeneric).String\", Method, 10, \"\"},\n\t\t{\"(RelocTypeX86_64).GoString\", Method, 10, \"\"},\n\t\t{\"(RelocTypeX86_64).String\", Method, 10, \"\"},\n\t\t{\"(Rpath).Raw\", Method, 10, \"\"},\n\t\t{\"(Section).ReadAt\", Method, 0, \"\"},\n\t\t{\"(Segment).Raw\", Method, 0, \"\"},\n\t\t{\"(Segment).ReadAt\", Method, 0, \"\"},\n\t\t{\"(Symtab).Raw\", Method, 0, \"\"},\n\t\t{\"(Type).GoString\", Method, 10, \"\"},\n\t\t{\"(Type).String\", Method, 10, \"\"},\n\t\t{\"ARM64_RELOC_ADDEND\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_BRANCH26\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_GOT_LOAD_PAGE21\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_GOT_LOAD_PAGEOFF12\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_PAGE21\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_PAGEOFF12\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_POINTER_TO_GOT\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_SUBTRACTOR\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_TLVP_LOAD_PAGE21\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_TLVP_LOAD_PAGEOFF12\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_UNSIGNED\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_BR24\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_HALF\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_HALF_SECTDIFF\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_LOCAL_SECTDIFF\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_PAIR\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_PB_LA_PTR\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_SECTDIFF\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_VANILLA\", Const, 10, \"\"},\n\t\t{\"ARM_THUMB_32BIT_BRANCH\", Const, 10, \"\"},\n\t\t{\"ARM_THUMB_RELOC_BR22\", Const, 10, \"\"},\n\t\t{\"Cpu\", Type, 0, \"\"},\n\t\t{\"Cpu386\", Const, 0, \"\"},\n\t\t{\"CpuAmd64\", Const, 0, \"\"},\n\t\t{\"CpuArm\", Const, 3, \"\"},\n\t\t{\"CpuArm64\", Const, 11, \"\"},\n\t\t{\"CpuPpc\", Const, 3, \"\"},\n\t\t{\"CpuPpc64\", Const, 3, \"\"},\n\t\t{\"Dylib\", Type, 0, \"\"},\n\t\t{\"Dylib.CompatVersion\", Field, 0, \"\"},\n\t\t{\"Dylib.CurrentVersion\", Field, 0, \"\"},\n\t\t{\"Dylib.LoadBytes\", Field, 0, \"\"},\n\t\t{\"Dylib.Name\", Field, 0, \"\"},\n\t\t{\"Dylib.Time\", Field, 0, \"\"},\n\t\t{\"DylibCmd\", Type, 0, \"\"},\n\t\t{\"DylibCmd.Cmd\", Field, 0, \"\"},\n\t\t{\"DylibCmd.CompatVersion\", Field, 0, \"\"},\n\t\t{\"DylibCmd.CurrentVersion\", Field, 0, \"\"},\n\t\t{\"DylibCmd.Len\", Field, 0, \"\"},\n\t\t{\"DylibCmd.Name\", Field, 0, \"\"},\n\t\t{\"DylibCmd.Time\", Field, 0, \"\"},\n\t\t{\"Dysymtab\", Type, 0, \"\"},\n\t\t{\"Dysymtab.DysymtabCmd\", Field, 0, \"\"},\n\t\t{\"Dysymtab.IndirectSyms\", Field, 0, \"\"},\n\t\t{\"Dysymtab.LoadBytes\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd\", Type, 0, \"\"},\n\t\t{\"DysymtabCmd.Cmd\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Extrefsymoff\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Extreloff\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Iextdefsym\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Ilocalsym\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Indirectsymoff\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Iundefsym\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Len\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Locreloff\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Modtaboff\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nextdefsym\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nextrefsyms\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nextrel\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nindirectsyms\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nlocalsym\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nlocrel\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nmodtab\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Ntoc\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nundefsym\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Tocoffset\", Field, 0, \"\"},\n\t\t{\"ErrNotFat\", Var, 3, \"\"},\n\t\t{\"FatArch\", Type, 3, \"\"},\n\t\t{\"FatArch.FatArchHeader\", Field, 3, \"\"},\n\t\t{\"FatArch.File\", Field, 3, \"\"},\n\t\t{\"FatArchHeader\", Type, 3, \"\"},\n\t\t{\"FatArchHeader.Align\", Field, 3, \"\"},\n\t\t{\"FatArchHeader.Cpu\", Field, 3, \"\"},\n\t\t{\"FatArchHeader.Offset\", Field, 3, \"\"},\n\t\t{\"FatArchHeader.Size\", Field, 3, \"\"},\n\t\t{\"FatArchHeader.SubCpu\", Field, 3, \"\"},\n\t\t{\"FatFile\", Type, 3, \"\"},\n\t\t{\"FatFile.Arches\", Field, 3, \"\"},\n\t\t{\"FatFile.Magic\", Field, 3, \"\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"File.ByteOrder\", Field, 0, \"\"},\n\t\t{\"File.Dysymtab\", Field, 0, \"\"},\n\t\t{\"File.FileHeader\", Field, 0, \"\"},\n\t\t{\"File.Loads\", Field, 0, \"\"},\n\t\t{\"File.Sections\", Field, 0, \"\"},\n\t\t{\"File.Symtab\", Field, 0, \"\"},\n\t\t{\"FileHeader\", Type, 0, \"\"},\n\t\t{\"FileHeader.Cmdsz\", Field, 0, \"\"},\n\t\t{\"FileHeader.Cpu\", Field, 0, \"\"},\n\t\t{\"FileHeader.Flags\", Field, 0, \"\"},\n\t\t{\"FileHeader.Magic\", Field, 0, \"\"},\n\t\t{\"FileHeader.Ncmd\", Field, 0, \"\"},\n\t\t{\"FileHeader.SubCpu\", Field, 0, \"\"},\n\t\t{\"FileHeader.Type\", Field, 0, \"\"},\n\t\t{\"FlagAllModsBound\", Const, 10, \"\"},\n\t\t{\"FlagAllowStackExecution\", Const, 10, \"\"},\n\t\t{\"FlagAppExtensionSafe\", Const, 10, \"\"},\n\t\t{\"FlagBindAtLoad\", Const, 10, \"\"},\n\t\t{\"FlagBindsToWeak\", Const, 10, \"\"},\n\t\t{\"FlagCanonical\", Const, 10, \"\"},\n\t\t{\"FlagDeadStrippableDylib\", Const, 10, \"\"},\n\t\t{\"FlagDyldLink\", Const, 10, \"\"},\n\t\t{\"FlagForceFlat\", Const, 10, \"\"},\n\t\t{\"FlagHasTLVDescriptors\", Const, 10, \"\"},\n\t\t{\"FlagIncrLink\", Const, 10, \"\"},\n\t\t{\"FlagLazyInit\", Const, 10, \"\"},\n\t\t{\"FlagNoFixPrebinding\", Const, 10, \"\"},\n\t\t{\"FlagNoHeapExecution\", Const, 10, \"\"},\n\t\t{\"FlagNoMultiDefs\", Const, 10, \"\"},\n\t\t{\"FlagNoReexportedDylibs\", Const, 10, \"\"},\n\t\t{\"FlagNoUndefs\", Const, 10, \"\"},\n\t\t{\"FlagPIE\", Const, 10, \"\"},\n\t\t{\"FlagPrebindable\", Const, 10, \"\"},\n\t\t{\"FlagPrebound\", Const, 10, \"\"},\n\t\t{\"FlagRootSafe\", Const, 10, \"\"},\n\t\t{\"FlagSetuidSafe\", Const, 10, \"\"},\n\t\t{\"FlagSplitSegs\", Const, 10, \"\"},\n\t\t{\"FlagSubsectionsViaSymbols\", Const, 10, \"\"},\n\t\t{\"FlagTwoLevel\", Const, 10, \"\"},\n\t\t{\"FlagWeakDefines\", Const, 10, \"\"},\n\t\t{\"FormatError\", Type, 0, \"\"},\n\t\t{\"GENERIC_RELOC_LOCAL_SECTDIFF\", Const, 10, \"\"},\n\t\t{\"GENERIC_RELOC_PAIR\", Const, 10, \"\"},\n\t\t{\"GENERIC_RELOC_PB_LA_PTR\", Const, 10, \"\"},\n\t\t{\"GENERIC_RELOC_SECTDIFF\", Const, 10, \"\"},\n\t\t{\"GENERIC_RELOC_TLV\", Const, 10, \"\"},\n\t\t{\"GENERIC_RELOC_VANILLA\", Const, 10, \"\"},\n\t\t{\"Load\", Type, 0, \"\"},\n\t\t{\"LoadBytes\", Type, 0, \"\"},\n\t\t{\"LoadCmd\", Type, 0, \"\"},\n\t\t{\"LoadCmdDylib\", Const, 0, \"\"},\n\t\t{\"LoadCmdDylinker\", Const, 0, \"\"},\n\t\t{\"LoadCmdDysymtab\", Const, 0, \"\"},\n\t\t{\"LoadCmdRpath\", Const, 10, \"\"},\n\t\t{\"LoadCmdSegment\", Const, 0, \"\"},\n\t\t{\"LoadCmdSegment64\", Const, 0, \"\"},\n\t\t{\"LoadCmdSymtab\", Const, 0, \"\"},\n\t\t{\"LoadCmdThread\", Const, 0, \"\"},\n\t\t{\"LoadCmdUnixThread\", Const, 0, \"\"},\n\t\t{\"Magic32\", Const, 0, \"\"},\n\t\t{\"Magic64\", Const, 0, \"\"},\n\t\t{\"MagicFat\", Const, 3, \"\"},\n\t\t{\"NewFatFile\", Func, 3, \"func(r io.ReaderAt) (*FatFile, error)\"},\n\t\t{\"NewFile\", Func, 0, \"func(r io.ReaderAt) (*File, error)\"},\n\t\t{\"Nlist32\", Type, 0, \"\"},\n\t\t{\"Nlist32.Desc\", Field, 0, \"\"},\n\t\t{\"Nlist32.Name\", Field, 0, \"\"},\n\t\t{\"Nlist32.Sect\", Field, 0, \"\"},\n\t\t{\"Nlist32.Type\", Field, 0, \"\"},\n\t\t{\"Nlist32.Value\", Field, 0, \"\"},\n\t\t{\"Nlist64\", Type, 0, \"\"},\n\t\t{\"Nlist64.Desc\", Field, 0, \"\"},\n\t\t{\"Nlist64.Name\", Field, 0, \"\"},\n\t\t{\"Nlist64.Sect\", Field, 0, \"\"},\n\t\t{\"Nlist64.Type\", Field, 0, \"\"},\n\t\t{\"Nlist64.Value\", Field, 0, \"\"},\n\t\t{\"Open\", Func, 0, \"func(name string) (*File, error)\"},\n\t\t{\"OpenFat\", Func, 3, \"func(name string) (*FatFile, error)\"},\n\t\t{\"Regs386\", Type, 0, \"\"},\n\t\t{\"Regs386.AX\", Field, 0, \"\"},\n\t\t{\"Regs386.BP\", Field, 0, \"\"},\n\t\t{\"Regs386.BX\", Field, 0, \"\"},\n\t\t{\"Regs386.CS\", Field, 0, \"\"},\n\t\t{\"Regs386.CX\", Field, 0, \"\"},\n\t\t{\"Regs386.DI\", Field, 0, \"\"},\n\t\t{\"Regs386.DS\", Field, 0, \"\"},\n\t\t{\"Regs386.DX\", Field, 0, \"\"},\n\t\t{\"Regs386.ES\", Field, 0, \"\"},\n\t\t{\"Regs386.FLAGS\", Field, 0, \"\"},\n\t\t{\"Regs386.FS\", Field, 0, \"\"},\n\t\t{\"Regs386.GS\", Field, 0, \"\"},\n\t\t{\"Regs386.IP\", Field, 0, \"\"},\n\t\t{\"Regs386.SI\", Field, 0, \"\"},\n\t\t{\"Regs386.SP\", Field, 0, \"\"},\n\t\t{\"Regs386.SS\", Field, 0, \"\"},\n\t\t{\"RegsAMD64\", Type, 0, \"\"},\n\t\t{\"RegsAMD64.AX\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.BP\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.BX\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.CS\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.CX\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.DI\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.DX\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.FLAGS\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.FS\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.GS\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.IP\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R10\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R11\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R12\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R13\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R14\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R15\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R8\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R9\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.SI\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.SP\", Field, 0, \"\"},\n\t\t{\"Reloc\", Type, 10, \"\"},\n\t\t{\"Reloc.Addr\", Field, 10, \"\"},\n\t\t{\"Reloc.Extern\", Field, 10, \"\"},\n\t\t{\"Reloc.Len\", Field, 10, \"\"},\n\t\t{\"Reloc.Pcrel\", Field, 10, \"\"},\n\t\t{\"Reloc.Scattered\", Field, 10, \"\"},\n\t\t{\"Reloc.Type\", Field, 10, \"\"},\n\t\t{\"Reloc.Value\", Field, 10, \"\"},\n\t\t{\"RelocTypeARM\", Type, 10, \"\"},\n\t\t{\"RelocTypeARM64\", Type, 10, \"\"},\n\t\t{\"RelocTypeGeneric\", Type, 10, \"\"},\n\t\t{\"RelocTypeX86_64\", Type, 10, \"\"},\n\t\t{\"Rpath\", Type, 10, \"\"},\n\t\t{\"Rpath.LoadBytes\", Field, 10, \"\"},\n\t\t{\"Rpath.Path\", Field, 10, \"\"},\n\t\t{\"RpathCmd\", Type, 10, \"\"},\n\t\t{\"RpathCmd.Cmd\", Field, 10, \"\"},\n\t\t{\"RpathCmd.Len\", Field, 10, \"\"},\n\t\t{\"RpathCmd.Path\", Field, 10, \"\"},\n\t\t{\"Section\", Type, 0, \"\"},\n\t\t{\"Section.ReaderAt\", Field, 0, \"\"},\n\t\t{\"Section.Relocs\", Field, 10, \"\"},\n\t\t{\"Section.SectionHeader\", Field, 0, \"\"},\n\t\t{\"Section32\", Type, 0, \"\"},\n\t\t{\"Section32.Addr\", Field, 0, \"\"},\n\t\t{\"Section32.Align\", Field, 0, \"\"},\n\t\t{\"Section32.Flags\", Field, 0, \"\"},\n\t\t{\"Section32.Name\", Field, 0, \"\"},\n\t\t{\"Section32.Nreloc\", Field, 0, \"\"},\n\t\t{\"Section32.Offset\", Field, 0, \"\"},\n\t\t{\"Section32.Reloff\", Field, 0, \"\"},\n\t\t{\"Section32.Reserve1\", Field, 0, \"\"},\n\t\t{\"Section32.Reserve2\", Field, 0, \"\"},\n\t\t{\"Section32.Seg\", Field, 0, \"\"},\n\t\t{\"Section32.Size\", Field, 0, \"\"},\n\t\t{\"Section64\", Type, 0, \"\"},\n\t\t{\"Section64.Addr\", Field, 0, \"\"},\n\t\t{\"Section64.Align\", Field, 0, \"\"},\n\t\t{\"Section64.Flags\", Field, 0, \"\"},\n\t\t{\"Section64.Name\", Field, 0, \"\"},\n\t\t{\"Section64.Nreloc\", Field, 0, \"\"},\n\t\t{\"Section64.Offset\", Field, 0, \"\"},\n\t\t{\"Section64.Reloff\", Field, 0, \"\"},\n\t\t{\"Section64.Reserve1\", Field, 0, \"\"},\n\t\t{\"Section64.Reserve2\", Field, 0, \"\"},\n\t\t{\"Section64.Reserve3\", Field, 0, \"\"},\n\t\t{\"Section64.Seg\", Field, 0, \"\"},\n\t\t{\"Section64.Size\", Field, 0, \"\"},\n\t\t{\"SectionHeader\", Type, 0, \"\"},\n\t\t{\"SectionHeader.Addr\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Align\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Flags\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Name\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Nreloc\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Offset\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Reloff\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Seg\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Size\", Field, 0, \"\"},\n\t\t{\"Segment\", Type, 0, \"\"},\n\t\t{\"Segment.LoadBytes\", Field, 0, \"\"},\n\t\t{\"Segment.ReaderAt\", Field, 0, \"\"},\n\t\t{\"Segment.SegmentHeader\", Field, 0, \"\"},\n\t\t{\"Segment32\", Type, 0, \"\"},\n\t\t{\"Segment32.Addr\", Field, 0, \"\"},\n\t\t{\"Segment32.Cmd\", Field, 0, \"\"},\n\t\t{\"Segment32.Filesz\", Field, 0, \"\"},\n\t\t{\"Segment32.Flag\", Field, 0, \"\"},\n\t\t{\"Segment32.Len\", Field, 0, \"\"},\n\t\t{\"Segment32.Maxprot\", Field, 0, \"\"},\n\t\t{\"Segment32.Memsz\", Field, 0, \"\"},\n\t\t{\"Segment32.Name\", Field, 0, \"\"},\n\t\t{\"Segment32.Nsect\", Field, 0, \"\"},\n\t\t{\"Segment32.Offset\", Field, 0, \"\"},\n\t\t{\"Segment32.Prot\", Field, 0, \"\"},\n\t\t{\"Segment64\", Type, 0, \"\"},\n\t\t{\"Segment64.Addr\", Field, 0, \"\"},\n\t\t{\"Segment64.Cmd\", Field, 0, \"\"},\n\t\t{\"Segment64.Filesz\", Field, 0, \"\"},\n\t\t{\"Segment64.Flag\", Field, 0, \"\"},\n\t\t{\"Segment64.Len\", Field, 0, \"\"},\n\t\t{\"Segment64.Maxprot\", Field, 0, \"\"},\n\t\t{\"Segment64.Memsz\", Field, 0, \"\"},\n\t\t{\"Segment64.Name\", Field, 0, \"\"},\n\t\t{\"Segment64.Nsect\", Field, 0, \"\"},\n\t\t{\"Segment64.Offset\", Field, 0, \"\"},\n\t\t{\"Segment64.Prot\", Field, 0, \"\"},\n\t\t{\"SegmentHeader\", Type, 0, \"\"},\n\t\t{\"SegmentHeader.Addr\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Cmd\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Filesz\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Flag\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Len\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Maxprot\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Memsz\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Name\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Nsect\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Offset\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Prot\", Field, 0, \"\"},\n\t\t{\"Symbol\", Type, 0, \"\"},\n\t\t{\"Symbol.Desc\", Field, 0, \"\"},\n\t\t{\"Symbol.Name\", Field, 0, \"\"},\n\t\t{\"Symbol.Sect\", Field, 0, \"\"},\n\t\t{\"Symbol.Type\", Field, 0, \"\"},\n\t\t{\"Symbol.Value\", Field, 0, \"\"},\n\t\t{\"Symtab\", Type, 0, \"\"},\n\t\t{\"Symtab.LoadBytes\", Field, 0, \"\"},\n\t\t{\"Symtab.Syms\", Field, 0, \"\"},\n\t\t{\"Symtab.SymtabCmd\", Field, 0, \"\"},\n\t\t{\"SymtabCmd\", Type, 0, \"\"},\n\t\t{\"SymtabCmd.Cmd\", Field, 0, \"\"},\n\t\t{\"SymtabCmd.Len\", Field, 0, \"\"},\n\t\t{\"SymtabCmd.Nsyms\", Field, 0, \"\"},\n\t\t{\"SymtabCmd.Stroff\", Field, 0, \"\"},\n\t\t{\"SymtabCmd.Strsize\", Field, 0, \"\"},\n\t\t{\"SymtabCmd.Symoff\", Field, 0, \"\"},\n\t\t{\"Thread\", Type, 0, \"\"},\n\t\t{\"Thread.Cmd\", Field, 0, \"\"},\n\t\t{\"Thread.Data\", Field, 0, \"\"},\n\t\t{\"Thread.Len\", Field, 0, \"\"},\n\t\t{\"Thread.Type\", Field, 0, \"\"},\n\t\t{\"Type\", Type, 0, \"\"},\n\t\t{\"TypeBundle\", Const, 3, \"\"},\n\t\t{\"TypeDylib\", Const, 3, \"\"},\n\t\t{\"TypeExec\", Const, 0, \"\"},\n\t\t{\"TypeObj\", Const, 0, \"\"},\n\t\t{\"X86_64_RELOC_BRANCH\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_GOT\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_GOT_LOAD\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_SIGNED\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_SIGNED_1\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_SIGNED_2\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_SIGNED_4\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_SUBTRACTOR\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_TLV\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_UNSIGNED\", Const, 10, \"\"},\n\t},\n\t\"debug/pe\": {\n\t\t{\"(*COFFSymbol).FullName\", Method, 8, \"\"},\n\t\t{\"(*File).COFFSymbolReadSectionDefAux\", Method, 19, \"\"},\n\t\t{\"(*File).Close\", Method, 0, \"\"},\n\t\t{\"(*File).DWARF\", Method, 0, \"\"},\n\t\t{\"(*File).ImportedLibraries\", Method, 0, \"\"},\n\t\t{\"(*File).ImportedSymbols\", Method, 0, \"\"},\n\t\t{\"(*File).Section\", Method, 0, \"\"},\n\t\t{\"(*FormatError).Error\", Method, 0, \"\"},\n\t\t{\"(*Section).Data\", Method, 0, \"\"},\n\t\t{\"(*Section).Open\", Method, 0, \"\"},\n\t\t{\"(Section).ReadAt\", Method, 0, \"\"},\n\t\t{\"(StringTable).String\", Method, 8, \"\"},\n\t\t{\"COFFSymbol\", Type, 1, \"\"},\n\t\t{\"COFFSymbol.Name\", Field, 1, \"\"},\n\t\t{\"COFFSymbol.NumberOfAuxSymbols\", Field, 1, \"\"},\n\t\t{\"COFFSymbol.SectionNumber\", Field, 1, \"\"},\n\t\t{\"COFFSymbol.StorageClass\", Field, 1, \"\"},\n\t\t{\"COFFSymbol.Type\", Field, 1, \"\"},\n\t\t{\"COFFSymbol.Value\", Field, 1, \"\"},\n\t\t{\"COFFSymbolAuxFormat5\", Type, 19, \"\"},\n\t\t{\"COFFSymbolAuxFormat5.Checksum\", Field, 19, \"\"},\n\t\t{\"COFFSymbolAuxFormat5.NumLineNumbers\", Field, 19, \"\"},\n\t\t{\"COFFSymbolAuxFormat5.NumRelocs\", Field, 19, \"\"},\n\t\t{\"COFFSymbolAuxFormat5.SecNum\", Field, 19, \"\"},\n\t\t{\"COFFSymbolAuxFormat5.Selection\", Field, 19, \"\"},\n\t\t{\"COFFSymbolAuxFormat5.Size\", Field, 19, \"\"},\n\t\t{\"COFFSymbolSize\", Const, 1, \"\"},\n\t\t{\"DataDirectory\", Type, 3, \"\"},\n\t\t{\"DataDirectory.Size\", Field, 3, \"\"},\n\t\t{\"DataDirectory.VirtualAddress\", Field, 3, \"\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"File.COFFSymbols\", Field, 8, \"\"},\n\t\t{\"File.FileHeader\", Field, 0, \"\"},\n\t\t{\"File.OptionalHeader\", Field, 3, \"\"},\n\t\t{\"File.Sections\", Field, 0, \"\"},\n\t\t{\"File.StringTable\", Field, 8, \"\"},\n\t\t{\"File.Symbols\", Field, 1, \"\"},\n\t\t{\"FileHeader\", Type, 0, \"\"},\n\t\t{\"FileHeader.Characteristics\", Field, 0, \"\"},\n\t\t{\"FileHeader.Machine\", Field, 0, \"\"},\n\t\t{\"FileHeader.NumberOfSections\", Field, 0, \"\"},\n\t\t{\"FileHeader.NumberOfSymbols\", Field, 0, \"\"},\n\t\t{\"FileHeader.PointerToSymbolTable\", Field, 0, \"\"},\n\t\t{\"FileHeader.SizeOfOptionalHeader\", Field, 0, \"\"},\n\t\t{\"FileHeader.TimeDateStamp\", Field, 0, \"\"},\n\t\t{\"FormatError\", Type, 0, \"\"},\n\t\t{\"IMAGE_COMDAT_SELECT_ANY\", Const, 19, \"\"},\n\t\t{\"IMAGE_COMDAT_SELECT_ASSOCIATIVE\", Const, 19, \"\"},\n\t\t{\"IMAGE_COMDAT_SELECT_EXACT_MATCH\", Const, 19, \"\"},\n\t\t{\"IMAGE_COMDAT_SELECT_LARGEST\", Const, 19, \"\"},\n\t\t{\"IMAGE_COMDAT_SELECT_NODUPLICATES\", Const, 19, \"\"},\n\t\t{\"IMAGE_COMDAT_SELECT_SAME_SIZE\", Const, 19, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_ARCHITECTURE\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_BASERELOC\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_DEBUG\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_EXCEPTION\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_EXPORT\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_GLOBALPTR\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_IAT\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_IMPORT\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_RESOURCE\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_SECURITY\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_TLS\", Const, 11, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_APPCONTAINER\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_GUARD_CF\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_NO_BIND\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_NO_ISOLATION\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_NO_SEH\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_NX_COMPAT\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_WDM_DRIVER\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_32BIT_MACHINE\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_AGGRESIVE_WS_TRIM\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_BYTES_REVERSED_HI\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_BYTES_REVERSED_LO\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_DEBUG_STRIPPED\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_DLL\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_EXECUTABLE_IMAGE\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_LARGE_ADDRESS_AWARE\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_LINE_NUMS_STRIPPED\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_LOCAL_SYMS_STRIPPED\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_AM33\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_AMD64\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_ARM\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_ARM64\", Const, 11, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_ARMNT\", Const, 12, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_EBC\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_I386\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_IA64\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_LOONGARCH32\", Const, 19, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_LOONGARCH64\", Const, 19, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_M32R\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_MIPS16\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_MIPSFPU\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_MIPSFPU16\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_POWERPC\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_POWERPCFP\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_R4000\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_RISCV128\", Const, 20, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_RISCV32\", Const, 20, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_RISCV64\", Const, 20, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_SH3\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_SH3DSP\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_SH4\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_SH5\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_THUMB\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_UNKNOWN\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_WCEMIPSV2\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_NET_RUN_FROM_SWAP\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_RELOCS_STRIPPED\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_SYSTEM\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_UP_SYSTEM_ONLY\", Const, 15, \"\"},\n\t\t{\"IMAGE_SCN_CNT_CODE\", Const, 19, \"\"},\n\t\t{\"IMAGE_SCN_CNT_INITIALIZED_DATA\", Const, 19, \"\"},\n\t\t{\"IMAGE_SCN_CNT_UNINITIALIZED_DATA\", Const, 19, \"\"},\n\t\t{\"IMAGE_SCN_LNK_COMDAT\", Const, 19, \"\"},\n\t\t{\"IMAGE_SCN_MEM_DISCARDABLE\", Const, 19, \"\"},\n\t\t{\"IMAGE_SCN_MEM_EXECUTE\", Const, 19, \"\"},\n\t\t{\"IMAGE_SCN_MEM_READ\", Const, 19, \"\"},\n\t\t{\"IMAGE_SCN_MEM_WRITE\", Const, 19, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_EFI_APPLICATION\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_EFI_ROM\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_NATIVE\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_NATIVE_WINDOWS\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_OS2_CUI\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_POSIX_CUI\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_UNKNOWN\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_WINDOWS_CE_GUI\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_WINDOWS_CUI\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_WINDOWS_GUI\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_XBOX\", Const, 15, \"\"},\n\t\t{\"ImportDirectory\", Type, 0, \"\"},\n\t\t{\"ImportDirectory.FirstThunk\", Field, 0, \"\"},\n\t\t{\"ImportDirectory.ForwarderChain\", Field, 0, \"\"},\n\t\t{\"ImportDirectory.Name\", Field, 0, \"\"},\n\t\t{\"ImportDirectory.OriginalFirstThunk\", Field, 0, \"\"},\n\t\t{\"ImportDirectory.TimeDateStamp\", Field, 0, \"\"},\n\t\t{\"NewFile\", Func, 0, \"func(r io.ReaderAt) (*File, error)\"},\n\t\t{\"Open\", Func, 0, \"func(name string) (*File, error)\"},\n\t\t{\"OptionalHeader32\", Type, 3, \"\"},\n\t\t{\"OptionalHeader32.AddressOfEntryPoint\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.BaseOfCode\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.BaseOfData\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.CheckSum\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.DataDirectory\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.DllCharacteristics\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.FileAlignment\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.ImageBase\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.LoaderFlags\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.Magic\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MajorImageVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MajorLinkerVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MajorOperatingSystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MajorSubsystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MinorImageVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MinorLinkerVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MinorOperatingSystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MinorSubsystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.NumberOfRvaAndSizes\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SectionAlignment\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfCode\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfHeaders\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfHeapCommit\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfHeapReserve\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfImage\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfInitializedData\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfStackCommit\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfStackReserve\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfUninitializedData\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.Subsystem\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.Win32VersionValue\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64\", Type, 3, \"\"},\n\t\t{\"OptionalHeader64.AddressOfEntryPoint\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.BaseOfCode\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.CheckSum\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.DataDirectory\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.DllCharacteristics\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.FileAlignment\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.ImageBase\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.LoaderFlags\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.Magic\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MajorImageVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MajorLinkerVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MajorOperatingSystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MajorSubsystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MinorImageVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MinorLinkerVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MinorOperatingSystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MinorSubsystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.NumberOfRvaAndSizes\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SectionAlignment\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfCode\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfHeaders\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfHeapCommit\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfHeapReserve\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfImage\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfInitializedData\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfStackCommit\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfStackReserve\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfUninitializedData\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.Subsystem\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.Win32VersionValue\", Field, 3, \"\"},\n\t\t{\"Reloc\", Type, 8, \"\"},\n\t\t{\"Reloc.SymbolTableIndex\", Field, 8, \"\"},\n\t\t{\"Reloc.Type\", Field, 8, \"\"},\n\t\t{\"Reloc.VirtualAddress\", Field, 8, \"\"},\n\t\t{\"Section\", Type, 0, \"\"},\n\t\t{\"Section.ReaderAt\", Field, 0, \"\"},\n\t\t{\"Section.Relocs\", Field, 8, \"\"},\n\t\t{\"Section.SectionHeader\", Field, 0, \"\"},\n\t\t{\"SectionHeader\", Type, 0, \"\"},\n\t\t{\"SectionHeader.Characteristics\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Name\", Field, 0, \"\"},\n\t\t{\"SectionHeader.NumberOfLineNumbers\", Field, 0, \"\"},\n\t\t{\"SectionHeader.NumberOfRelocations\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Offset\", Field, 0, \"\"},\n\t\t{\"SectionHeader.PointerToLineNumbers\", Field, 0, \"\"},\n\t\t{\"SectionHeader.PointerToRelocations\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Size\", Field, 0, \"\"},\n\t\t{\"SectionHeader.VirtualAddress\", Field, 0, \"\"},\n\t\t{\"SectionHeader.VirtualSize\", Field, 0, \"\"},\n\t\t{\"SectionHeader32\", Type, 0, \"\"},\n\t\t{\"SectionHeader32.Characteristics\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.Name\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.NumberOfLineNumbers\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.NumberOfRelocations\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.PointerToLineNumbers\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.PointerToRawData\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.PointerToRelocations\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.SizeOfRawData\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.VirtualAddress\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.VirtualSize\", Field, 0, \"\"},\n\t\t{\"StringTable\", Type, 8, \"\"},\n\t\t{\"Symbol\", Type, 1, \"\"},\n\t\t{\"Symbol.Name\", Field, 1, \"\"},\n\t\t{\"Symbol.SectionNumber\", Field, 1, \"\"},\n\t\t{\"Symbol.StorageClass\", Field, 1, \"\"},\n\t\t{\"Symbol.Type\", Field, 1, \"\"},\n\t\t{\"Symbol.Value\", Field, 1, \"\"},\n\t},\n\t\"debug/plan9obj\": {\n\t\t{\"(*File).Close\", Method, 3, \"\"},\n\t\t{\"(*File).Section\", Method, 3, \"\"},\n\t\t{\"(*File).Symbols\", Method, 3, \"\"},\n\t\t{\"(*Section).Data\", Method, 3, \"\"},\n\t\t{\"(*Section).Open\", Method, 3, \"\"},\n\t\t{\"(Section).ReadAt\", Method, 3, \"\"},\n\t\t{\"ErrNoSymbols\", Var, 18, \"\"},\n\t\t{\"File\", Type, 3, \"\"},\n\t\t{\"File.FileHeader\", Field, 3, \"\"},\n\t\t{\"File.Sections\", Field, 3, \"\"},\n\t\t{\"FileHeader\", Type, 3, \"\"},\n\t\t{\"FileHeader.Bss\", Field, 3, \"\"},\n\t\t{\"FileHeader.Entry\", Field, 3, \"\"},\n\t\t{\"FileHeader.HdrSize\", Field, 4, \"\"},\n\t\t{\"FileHeader.LoadAddress\", Field, 4, \"\"},\n\t\t{\"FileHeader.Magic\", Field, 3, \"\"},\n\t\t{\"FileHeader.PtrSize\", Field, 3, \"\"},\n\t\t{\"Magic386\", Const, 3, \"\"},\n\t\t{\"Magic64\", Const, 3, \"\"},\n\t\t{\"MagicAMD64\", Const, 3, \"\"},\n\t\t{\"MagicARM\", Const, 3, \"\"},\n\t\t{\"NewFile\", Func, 3, \"func(r io.ReaderAt) (*File, error)\"},\n\t\t{\"Open\", Func, 3, \"func(name string) (*File, error)\"},\n\t\t{\"Section\", Type, 3, \"\"},\n\t\t{\"Section.ReaderAt\", Field, 3, \"\"},\n\t\t{\"Section.SectionHeader\", Field, 3, \"\"},\n\t\t{\"SectionHeader\", Type, 3, \"\"},\n\t\t{\"SectionHeader.Name\", Field, 3, \"\"},\n\t\t{\"SectionHeader.Offset\", Field, 3, \"\"},\n\t\t{\"SectionHeader.Size\", Field, 3, \"\"},\n\t\t{\"Sym\", Type, 3, \"\"},\n\t\t{\"Sym.Name\", Field, 3, \"\"},\n\t\t{\"Sym.Type\", Field, 3, \"\"},\n\t\t{\"Sym.Value\", Field, 3, \"\"},\n\t},\n\t\"embed\": {\n\t\t{\"(FS).Open\", Method, 16, \"\"},\n\t\t{\"(FS).ReadDir\", Method, 16, \"\"},\n\t\t{\"(FS).ReadFile\", Method, 16, \"\"},\n\t\t{\"FS\", Type, 16, \"\"},\n\t},\n\t\"encoding\": {\n\t\t{\"(BinaryAppender).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(BinaryMarshaler).MarshalBinary\", Method, 2, \"\"},\n\t\t{\"(BinaryUnmarshaler).UnmarshalBinary\", Method, 2, \"\"},\n\t\t{\"(TextAppender).AppendText\", Method, 24, \"\"},\n\t\t{\"(TextMarshaler).MarshalText\", Method, 2, \"\"},\n\t\t{\"(TextUnmarshaler).UnmarshalText\", Method, 2, \"\"},\n\t\t{\"BinaryAppender\", Type, 24, \"\"},\n\t\t{\"BinaryMarshaler\", Type, 2, \"\"},\n\t\t{\"BinaryUnmarshaler\", Type, 2, \"\"},\n\t\t{\"TextAppender\", Type, 24, \"\"},\n\t\t{\"TextMarshaler\", Type, 2, \"\"},\n\t\t{\"TextUnmarshaler\", Type, 2, \"\"},\n\t},\n\t\"encoding/ascii85\": {\n\t\t{\"(CorruptInputError).Error\", Method, 0, \"\"},\n\t\t{\"CorruptInputError\", Type, 0, \"\"},\n\t\t{\"Decode\", Func, 0, \"func(dst []byte, src []byte, flush bool) (ndst int, nsrc int, err error)\"},\n\t\t{\"Encode\", Func, 0, \"func(dst []byte, src []byte) int\"},\n\t\t{\"MaxEncodedLen\", Func, 0, \"func(n int) int\"},\n\t\t{\"NewDecoder\", Func, 0, \"func(r io.Reader) io.Reader\"},\n\t\t{\"NewEncoder\", Func, 0, \"func(w io.Writer) io.WriteCloser\"},\n\t},\n\t\"encoding/asn1\": {\n\t\t{\"(BitString).At\", Method, 0, \"\"},\n\t\t{\"(BitString).RightAlign\", Method, 0, \"\"},\n\t\t{\"(ObjectIdentifier).Equal\", Method, 0, \"\"},\n\t\t{\"(ObjectIdentifier).String\", Method, 3, \"\"},\n\t\t{\"(StructuralError).Error\", Method, 0, \"\"},\n\t\t{\"(SyntaxError).Error\", Method, 0, \"\"},\n\t\t{\"BitString\", Type, 0, \"\"},\n\t\t{\"BitString.BitLength\", Field, 0, \"\"},\n\t\t{\"BitString.Bytes\", Field, 0, \"\"},\n\t\t{\"ClassApplication\", Const, 6, \"\"},\n\t\t{\"ClassContextSpecific\", Const, 6, \"\"},\n\t\t{\"ClassPrivate\", Const, 6, \"\"},\n\t\t{\"ClassUniversal\", Const, 6, \"\"},\n\t\t{\"Enumerated\", Type, 0, \"\"},\n\t\t{\"Flag\", Type, 0, \"\"},\n\t\t{\"Marshal\", Func, 0, \"func(val any) ([]byte, error)\"},\n\t\t{\"MarshalWithParams\", Func, 10, \"func(val any, params string) ([]byte, error)\"},\n\t\t{\"NullBytes\", Var, 9, \"\"},\n\t\t{\"NullRawValue\", Var, 9, \"\"},\n\t\t{\"ObjectIdentifier\", Type, 0, \"\"},\n\t\t{\"RawContent\", Type, 0, \"\"},\n\t\t{\"RawValue\", Type, 0, \"\"},\n\t\t{\"RawValue.Bytes\", Field, 0, \"\"},\n\t\t{\"RawValue.Class\", Field, 0, \"\"},\n\t\t{\"RawValue.FullBytes\", Field, 0, \"\"},\n\t\t{\"RawValue.IsCompound\", Field, 0, \"\"},\n\t\t{\"RawValue.Tag\", Field, 0, \"\"},\n\t\t{\"StructuralError\", Type, 0, \"\"},\n\t\t{\"StructuralError.Msg\", Field, 0, \"\"},\n\t\t{\"SyntaxError\", Type, 0, \"\"},\n\t\t{\"SyntaxError.Msg\", Field, 0, \"\"},\n\t\t{\"TagBMPString\", Const, 14, \"\"},\n\t\t{\"TagBitString\", Const, 6, \"\"},\n\t\t{\"TagBoolean\", Const, 6, \"\"},\n\t\t{\"TagEnum\", Const, 6, \"\"},\n\t\t{\"TagGeneralString\", Const, 6, \"\"},\n\t\t{\"TagGeneralizedTime\", Const, 6, \"\"},\n\t\t{\"TagIA5String\", Const, 6, \"\"},\n\t\t{\"TagInteger\", Const, 6, \"\"},\n\t\t{\"TagNull\", Const, 9, \"\"},\n\t\t{\"TagNumericString\", Const, 10, \"\"},\n\t\t{\"TagOID\", Const, 6, \"\"},\n\t\t{\"TagOctetString\", Const, 6, \"\"},\n\t\t{\"TagPrintableString\", Const, 6, \"\"},\n\t\t{\"TagSequence\", Const, 6, \"\"},\n\t\t{\"TagSet\", Const, 6, \"\"},\n\t\t{\"TagT61String\", Const, 6, \"\"},\n\t\t{\"TagUTCTime\", Const, 6, \"\"},\n\t\t{\"TagUTF8String\", Const, 6, \"\"},\n\t\t{\"Unmarshal\", Func, 0, \"func(b []byte, val any) (rest []byte, err error)\"},\n\t\t{\"UnmarshalWithParams\", Func, 0, \"func(b []byte, val any, params string) (rest []byte, err error)\"},\n\t},\n\t\"encoding/base32\": {\n\t\t{\"(*Encoding).AppendDecode\", Method, 22, \"\"},\n\t\t{\"(*Encoding).AppendEncode\", Method, 22, \"\"},\n\t\t{\"(*Encoding).Decode\", Method, 0, \"\"},\n\t\t{\"(*Encoding).DecodeString\", Method, 0, \"\"},\n\t\t{\"(*Encoding).DecodedLen\", Method, 0, \"\"},\n\t\t{\"(*Encoding).Encode\", Method, 0, \"\"},\n\t\t{\"(*Encoding).EncodeToString\", Method, 0, \"\"},\n\t\t{\"(*Encoding).EncodedLen\", Method, 0, \"\"},\n\t\t{\"(CorruptInputError).Error\", Method, 0, \"\"},\n\t\t{\"(Encoding).WithPadding\", Method, 9, \"\"},\n\t\t{\"CorruptInputError\", Type, 0, \"\"},\n\t\t{\"Encoding\", Type, 0, \"\"},\n\t\t{\"HexEncoding\", Var, 0, \"\"},\n\t\t{\"NewDecoder\", Func, 0, \"func(enc *Encoding, r io.Reader) io.Reader\"},\n\t\t{\"NewEncoder\", Func, 0, \"func(enc *Encoding, w io.Writer) io.WriteCloser\"},\n\t\t{\"NewEncoding\", Func, 0, \"func(encoder string) *Encoding\"},\n\t\t{\"NoPadding\", Const, 9, \"\"},\n\t\t{\"StdEncoding\", Var, 0, \"\"},\n\t\t{\"StdPadding\", Const, 9, \"\"},\n\t},\n\t\"encoding/base64\": {\n\t\t{\"(*Encoding).AppendDecode\", Method, 22, \"\"},\n\t\t{\"(*Encoding).AppendEncode\", Method, 22, \"\"},\n\t\t{\"(*Encoding).Decode\", Method, 0, \"\"},\n\t\t{\"(*Encoding).DecodeString\", Method, 0, \"\"},\n\t\t{\"(*Encoding).DecodedLen\", Method, 0, \"\"},\n\t\t{\"(*Encoding).Encode\", Method, 0, \"\"},\n\t\t{\"(*Encoding).EncodeToString\", Method, 0, \"\"},\n\t\t{\"(*Encoding).EncodedLen\", Method, 0, \"\"},\n\t\t{\"(CorruptInputError).Error\", Method, 0, \"\"},\n\t\t{\"(Encoding).Strict\", Method, 8, \"\"},\n\t\t{\"(Encoding).WithPadding\", Method, 5, \"\"},\n\t\t{\"CorruptInputError\", Type, 0, \"\"},\n\t\t{\"Encoding\", Type, 0, \"\"},\n\t\t{\"NewDecoder\", Func, 0, \"func(enc *Encoding, r io.Reader) io.Reader\"},\n\t\t{\"NewEncoder\", Func, 0, \"func(enc *Encoding, w io.Writer) io.WriteCloser\"},\n\t\t{\"NewEncoding\", Func, 0, \"func(encoder string) *Encoding\"},\n\t\t{\"NoPadding\", Const, 5, \"\"},\n\t\t{\"RawStdEncoding\", Var, 5, \"\"},\n\t\t{\"RawURLEncoding\", Var, 5, \"\"},\n\t\t{\"StdEncoding\", Var, 0, \"\"},\n\t\t{\"StdPadding\", Const, 5, \"\"},\n\t\t{\"URLEncoding\", Var, 0, \"\"},\n\t},\n\t\"encoding/binary\": {\n\t\t{\"(AppendByteOrder).AppendUint16\", Method, 19, \"\"},\n\t\t{\"(AppendByteOrder).AppendUint32\", Method, 19, \"\"},\n\t\t{\"(AppendByteOrder).AppendUint64\", Method, 19, \"\"},\n\t\t{\"(AppendByteOrder).String\", Method, 19, \"\"},\n\t\t{\"(ByteOrder).PutUint16\", Method, 0, \"\"},\n\t\t{\"(ByteOrder).PutUint32\", Method, 0, \"\"},\n\t\t{\"(ByteOrder).PutUint64\", Method, 0, \"\"},\n\t\t{\"(ByteOrder).String\", Method, 0, \"\"},\n\t\t{\"(ByteOrder).Uint16\", Method, 0, \"\"},\n\t\t{\"(ByteOrder).Uint32\", Method, 0, \"\"},\n\t\t{\"(ByteOrder).Uint64\", Method, 0, \"\"},\n\t\t{\"Append\", Func, 23, \"func(buf []byte, order ByteOrder, data any) ([]byte, error)\"},\n\t\t{\"AppendByteOrder\", Type, 19, \"\"},\n\t\t{\"AppendUvarint\", Func, 19, \"func(buf []byte, x uint64) []byte\"},\n\t\t{\"AppendVarint\", Func, 19, \"func(buf []byte, x int64) []byte\"},\n\t\t{\"BigEndian\", Var, 0, \"\"},\n\t\t{\"ByteOrder\", Type, 0, \"\"},\n\t\t{\"Decode\", Func, 23, \"func(buf []byte, order ByteOrder, data any) (int, error)\"},\n\t\t{\"Encode\", Func, 23, \"func(buf []byte, order ByteOrder, data any) (int, error)\"},\n\t\t{\"LittleEndian\", Var, 0, \"\"},\n\t\t{\"MaxVarintLen16\", Const, 0, \"\"},\n\t\t{\"MaxVarintLen32\", Const, 0, \"\"},\n\t\t{\"MaxVarintLen64\", Const, 0, \"\"},\n\t\t{\"NativeEndian\", Var, 21, \"\"},\n\t\t{\"PutUvarint\", Func, 0, \"func(buf []byte, x uint64) int\"},\n\t\t{\"PutVarint\", Func, 0, \"func(buf []byte, x int64) int\"},\n\t\t{\"Read\", Func, 0, \"func(r io.Reader, order ByteOrder, data any) error\"},\n\t\t{\"ReadUvarint\", Func, 0, \"func(r io.ByteReader) (uint64, error)\"},\n\t\t{\"ReadVarint\", Func, 0, \"func(r io.ByteReader) (int64, error)\"},\n\t\t{\"Size\", Func, 0, \"func(v any) int\"},\n\t\t{\"Uvarint\", Func, 0, \"func(buf []byte) (uint64, int)\"},\n\t\t{\"Varint\", Func, 0, \"func(buf []byte) (int64, int)\"},\n\t\t{\"Write\", Func, 0, \"func(w io.Writer, order ByteOrder, data any) error\"},\n\t},\n\t\"encoding/csv\": {\n\t\t{\"(*ParseError).Error\", Method, 0, \"\"},\n\t\t{\"(*ParseError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*Reader).FieldPos\", Method, 17, \"\"},\n\t\t{\"(*Reader).InputOffset\", Method, 19, \"\"},\n\t\t{\"(*Reader).Read\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadAll\", Method, 0, \"\"},\n\t\t{\"(*Writer).Error\", Method, 1, \"\"},\n\t\t{\"(*Writer).Flush\", Method, 0, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"(*Writer).WriteAll\", Method, 0, \"\"},\n\t\t{\"ErrBareQuote\", Var, 0, \"\"},\n\t\t{\"ErrFieldCount\", Var, 0, \"\"},\n\t\t{\"ErrQuote\", Var, 0, \"\"},\n\t\t{\"ErrTrailingComma\", Var, 0, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader) *Reader\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer) *Writer\"},\n\t\t{\"ParseError\", Type, 0, \"\"},\n\t\t{\"ParseError.Column\", Field, 0, \"\"},\n\t\t{\"ParseError.Err\", Field, 0, \"\"},\n\t\t{\"ParseError.Line\", Field, 0, \"\"},\n\t\t{\"ParseError.StartLine\", Field, 10, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Reader.Comma\", Field, 0, \"\"},\n\t\t{\"Reader.Comment\", Field, 0, \"\"},\n\t\t{\"Reader.FieldsPerRecord\", Field, 0, \"\"},\n\t\t{\"Reader.LazyQuotes\", Field, 0, \"\"},\n\t\t{\"Reader.ReuseRecord\", Field, 9, \"\"},\n\t\t{\"Reader.TrailingComma\", Field, 0, \"\"},\n\t\t{\"Reader.TrimLeadingSpace\", Field, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t\t{\"Writer.Comma\", Field, 0, \"\"},\n\t\t{\"Writer.UseCRLF\", Field, 0, \"\"},\n\t},\n\t\"encoding/gob\": {\n\t\t{\"(*Decoder).Decode\", Method, 0, \"\"},\n\t\t{\"(*Decoder).DecodeValue\", Method, 0, \"\"},\n\t\t{\"(*Encoder).Encode\", Method, 0, \"\"},\n\t\t{\"(*Encoder).EncodeValue\", Method, 0, \"\"},\n\t\t{\"(GobDecoder).GobDecode\", Method, 0, \"\"},\n\t\t{\"(GobEncoder).GobEncode\", Method, 0, \"\"},\n\t\t{\"CommonType\", Type, 0, \"\"},\n\t\t{\"CommonType.Id\", Field, 0, \"\"},\n\t\t{\"CommonType.Name\", Field, 0, \"\"},\n\t\t{\"Decoder\", Type, 0, \"\"},\n\t\t{\"Encoder\", Type, 0, \"\"},\n\t\t{\"GobDecoder\", Type, 0, \"\"},\n\t\t{\"GobEncoder\", Type, 0, \"\"},\n\t\t{\"NewDecoder\", Func, 0, \"func(r io.Reader) *Decoder\"},\n\t\t{\"NewEncoder\", Func, 0, \"func(w io.Writer) *Encoder\"},\n\t\t{\"Register\", Func, 0, \"func(value any)\"},\n\t\t{\"RegisterName\", Func, 0, \"func(name string, value any)\"},\n\t},\n\t\"encoding/hex\": {\n\t\t{\"(InvalidByteError).Error\", Method, 0, \"\"},\n\t\t{\"AppendDecode\", Func, 22, \"func(dst []byte, src []byte) ([]byte, error)\"},\n\t\t{\"AppendEncode\", Func, 22, \"func(dst []byte, src []byte) []byte\"},\n\t\t{\"Decode\", Func, 0, \"func(dst []byte, src []byte) (int, error)\"},\n\t\t{\"DecodeString\", Func, 0, \"func(s string) ([]byte, error)\"},\n\t\t{\"DecodedLen\", Func, 0, \"func(x int) int\"},\n\t\t{\"Dump\", Func, 0, \"func(data []byte) string\"},\n\t\t{\"Dumper\", Func, 0, \"func(w io.Writer) io.WriteCloser\"},\n\t\t{\"Encode\", Func, 0, \"func(dst []byte, src []byte) int\"},\n\t\t{\"EncodeToString\", Func, 0, \"func(src []byte) string\"},\n\t\t{\"EncodedLen\", Func, 0, \"func(n int) int\"},\n\t\t{\"ErrLength\", Var, 0, \"\"},\n\t\t{\"InvalidByteError\", Type, 0, \"\"},\n\t\t{\"NewDecoder\", Func, 10, \"func(r io.Reader) io.Reader\"},\n\t\t{\"NewEncoder\", Func, 10, \"func(w io.Writer) io.Writer\"},\n\t},\n\t\"encoding/json\": {\n\t\t{\"(*Decoder).Buffered\", Method, 1, \"\"},\n\t\t{\"(*Decoder).Decode\", Method, 0, \"\"},\n\t\t{\"(*Decoder).DisallowUnknownFields\", Method, 10, \"\"},\n\t\t{\"(*Decoder).InputOffset\", Method, 14, \"\"},\n\t\t{\"(*Decoder).More\", Method, 5, \"\"},\n\t\t{\"(*Decoder).Token\", Method, 5, \"\"},\n\t\t{\"(*Decoder).UseNumber\", Method, 1, \"\"},\n\t\t{\"(*Encoder).Encode\", Method, 0, \"\"},\n\t\t{\"(*Encoder).SetEscapeHTML\", Method, 7, \"\"},\n\t\t{\"(*Encoder).SetIndent\", Method, 7, \"\"},\n\t\t{\"(*InvalidUTF8Error).Error\", Method, 0, \"\"},\n\t\t{\"(*InvalidUnmarshalError).Error\", Method, 0, \"\"},\n\t\t{\"(*MarshalerError).Error\", Method, 0, \"\"},\n\t\t{\"(*MarshalerError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*RawMessage).MarshalJSON\", Method, 0, \"\"},\n\t\t{\"(*RawMessage).UnmarshalJSON\", Method, 0, \"\"},\n\t\t{\"(*SyntaxError).Error\", Method, 0, \"\"},\n\t\t{\"(*UnmarshalFieldError).Error\", Method, 0, \"\"},\n\t\t{\"(*UnmarshalTypeError).Error\", Method, 0, \"\"},\n\t\t{\"(*UnsupportedTypeError).Error\", Method, 0, \"\"},\n\t\t{\"(*UnsupportedValueError).Error\", Method, 0, \"\"},\n\t\t{\"(Delim).String\", Method, 5, \"\"},\n\t\t{\"(Marshaler).MarshalJSON\", Method, 0, \"\"},\n\t\t{\"(Number).Float64\", Method, 1, \"\"},\n\t\t{\"(Number).Int64\", Method, 1, \"\"},\n\t\t{\"(Number).String\", Method, 1, \"\"},\n\t\t{\"(RawMessage).MarshalJSON\", Method, 8, \"\"},\n\t\t{\"(Unmarshaler).UnmarshalJSON\", Method, 0, \"\"},\n\t\t{\"Compact\", Func, 0, \"func(dst *bytes.Buffer, src []byte) error\"},\n\t\t{\"Decoder\", Type, 0, \"\"},\n\t\t{\"Delim\", Type, 5, \"\"},\n\t\t{\"Encoder\", Type, 0, \"\"},\n\t\t{\"HTMLEscape\", Func, 0, \"func(dst *bytes.Buffer, src []byte)\"},\n\t\t{\"Indent\", Func, 0, \"func(dst *bytes.Buffer, src []byte, prefix string, indent string) error\"},\n\t\t{\"InvalidUTF8Error\", Type, 0, \"\"},\n\t\t{\"InvalidUTF8Error.S\", Field, 0, \"\"},\n\t\t{\"InvalidUnmarshalError\", Type, 0, \"\"},\n\t\t{\"InvalidUnmarshalError.Type\", Field, 0, \"\"},\n\t\t{\"Marshal\", Func, 0, \"func(v any) ([]byte, error)\"},\n\t\t{\"MarshalIndent\", Func, 0, \"func(v any, prefix string, indent string) ([]byte, error)\"},\n\t\t{\"Marshaler\", Type, 0, \"\"},\n\t\t{\"MarshalerError\", Type, 0, \"\"},\n\t\t{\"MarshalerError.Err\", Field, 0, \"\"},\n\t\t{\"MarshalerError.Type\", Field, 0, \"\"},\n\t\t{\"NewDecoder\", Func, 0, \"func(r io.Reader) *Decoder\"},\n\t\t{\"NewEncoder\", Func, 0, \"func(w io.Writer) *Encoder\"},\n\t\t{\"Number\", Type, 1, \"\"},\n\t\t{\"RawMessage\", Type, 0, \"\"},\n\t\t{\"SyntaxError\", Type, 0, \"\"},\n\t\t{\"SyntaxError.Offset\", Field, 0, \"\"},\n\t\t{\"Token\", Type, 5, \"\"},\n\t\t{\"Unmarshal\", Func, 0, \"func(data []byte, v any) error\"},\n\t\t{\"UnmarshalFieldError\", Type, 0, \"\"},\n\t\t{\"UnmarshalFieldError.Field\", Field, 0, \"\"},\n\t\t{\"UnmarshalFieldError.Key\", Field, 0, \"\"},\n\t\t{\"UnmarshalFieldError.Type\", Field, 0, \"\"},\n\t\t{\"UnmarshalTypeError\", Type, 0, \"\"},\n\t\t{\"UnmarshalTypeError.Field\", Field, 8, \"\"},\n\t\t{\"UnmarshalTypeError.Offset\", Field, 5, \"\"},\n\t\t{\"UnmarshalTypeError.Struct\", Field, 8, \"\"},\n\t\t{\"UnmarshalTypeError.Type\", Field, 0, \"\"},\n\t\t{\"UnmarshalTypeError.Value\", Field, 0, \"\"},\n\t\t{\"Unmarshaler\", Type, 0, \"\"},\n\t\t{\"UnsupportedTypeError\", Type, 0, \"\"},\n\t\t{\"UnsupportedTypeError.Type\", Field, 0, \"\"},\n\t\t{\"UnsupportedValueError\", Type, 0, \"\"},\n\t\t{\"UnsupportedValueError.Str\", Field, 0, \"\"},\n\t\t{\"UnsupportedValueError.Value\", Field, 0, \"\"},\n\t\t{\"Valid\", Func, 9, \"func(data []byte) bool\"},\n\t},\n\t\"encoding/pem\": {\n\t\t{\"Block\", Type, 0, \"\"},\n\t\t{\"Block.Bytes\", Field, 0, \"\"},\n\t\t{\"Block.Headers\", Field, 0, \"\"},\n\t\t{\"Block.Type\", Field, 0, \"\"},\n\t\t{\"Decode\", Func, 0, \"func(data []byte) (p *Block, rest []byte)\"},\n\t\t{\"Encode\", Func, 0, \"func(out io.Writer, b *Block) error\"},\n\t\t{\"EncodeToMemory\", Func, 0, \"func(b *Block) []byte\"},\n\t},\n\t\"encoding/xml\": {\n\t\t{\"(*Decoder).Decode\", Method, 0, \"\"},\n\t\t{\"(*Decoder).DecodeElement\", Method, 0, \"\"},\n\t\t{\"(*Decoder).InputOffset\", Method, 4, \"\"},\n\t\t{\"(*Decoder).InputPos\", Method, 19, \"\"},\n\t\t{\"(*Decoder).RawToken\", Method, 0, \"\"},\n\t\t{\"(*Decoder).Skip\", Method, 0, \"\"},\n\t\t{\"(*Decoder).Token\", Method, 0, \"\"},\n\t\t{\"(*Encoder).Close\", Method, 20, \"\"},\n\t\t{\"(*Encoder).Encode\", Method, 0, \"\"},\n\t\t{\"(*Encoder).EncodeElement\", Method, 2, \"\"},\n\t\t{\"(*Encoder).EncodeToken\", Method, 2, \"\"},\n\t\t{\"(*Encoder).Flush\", Method, 2, \"\"},\n\t\t{\"(*Encoder).Indent\", Method, 1, \"\"},\n\t\t{\"(*SyntaxError).Error\", Method, 0, \"\"},\n\t\t{\"(*TagPathError).Error\", Method, 0, \"\"},\n\t\t{\"(*UnsupportedTypeError).Error\", Method, 0, \"\"},\n\t\t{\"(CharData).Copy\", Method, 0, \"\"},\n\t\t{\"(Comment).Copy\", Method, 0, \"\"},\n\t\t{\"(Directive).Copy\", Method, 0, \"\"},\n\t\t{\"(Marshaler).MarshalXML\", Method, 2, \"\"},\n\t\t{\"(MarshalerAttr).MarshalXMLAttr\", Method, 2, \"\"},\n\t\t{\"(ProcInst).Copy\", Method, 0, \"\"},\n\t\t{\"(StartElement).Copy\", Method, 0, \"\"},\n\t\t{\"(StartElement).End\", Method, 2, \"\"},\n\t\t{\"(TokenReader).Token\", Method, 10, \"\"},\n\t\t{\"(UnmarshalError).Error\", Method, 0, \"\"},\n\t\t{\"(Unmarshaler).UnmarshalXML\", Method, 2, \"\"},\n\t\t{\"(UnmarshalerAttr).UnmarshalXMLAttr\", Method, 2, \"\"},\n\t\t{\"Attr\", Type, 0, \"\"},\n\t\t{\"Attr.Name\", Field, 0, \"\"},\n\t\t{\"Attr.Value\", Field, 0, \"\"},\n\t\t{\"CharData\", Type, 0, \"\"},\n\t\t{\"Comment\", Type, 0, \"\"},\n\t\t{\"CopyToken\", Func, 0, \"func(t Token) Token\"},\n\t\t{\"Decoder\", Type, 0, \"\"},\n\t\t{\"Decoder.AutoClose\", Field, 0, \"\"},\n\t\t{\"Decoder.CharsetReader\", Field, 0, \"\"},\n\t\t{\"Decoder.DefaultSpace\", Field, 1, \"\"},\n\t\t{\"Decoder.Entity\", Field, 0, \"\"},\n\t\t{\"Decoder.Strict\", Field, 0, \"\"},\n\t\t{\"Directive\", Type, 0, \"\"},\n\t\t{\"Encoder\", Type, 0, \"\"},\n\t\t{\"EndElement\", Type, 0, \"\"},\n\t\t{\"EndElement.Name\", Field, 0, \"\"},\n\t\t{\"Escape\", Func, 0, \"func(w io.Writer, s []byte)\"},\n\t\t{\"EscapeText\", Func, 1, \"func(w io.Writer, s []byte) error\"},\n\t\t{\"HTMLAutoClose\", Var, 0, \"\"},\n\t\t{\"HTMLEntity\", Var, 0, \"\"},\n\t\t{\"Header\", Const, 0, \"\"},\n\t\t{\"Marshal\", Func, 0, \"func(v any) ([]byte, error)\"},\n\t\t{\"MarshalIndent\", Func, 0, \"func(v any, prefix string, indent string) ([]byte, error)\"},\n\t\t{\"Marshaler\", Type, 2, \"\"},\n\t\t{\"MarshalerAttr\", Type, 2, \"\"},\n\t\t{\"Name\", Type, 0, \"\"},\n\t\t{\"Name.Local\", Field, 0, \"\"},\n\t\t{\"Name.Space\", Field, 0, \"\"},\n\t\t{\"NewDecoder\", Func, 0, \"func(r io.Reader) *Decoder\"},\n\t\t{\"NewEncoder\", Func, 0, \"func(w io.Writer) *Encoder\"},\n\t\t{\"NewTokenDecoder\", Func, 10, \"func(t TokenReader) *Decoder\"},\n\t\t{\"ProcInst\", Type, 0, \"\"},\n\t\t{\"ProcInst.Inst\", Field, 0, \"\"},\n\t\t{\"ProcInst.Target\", Field, 0, \"\"},\n\t\t{\"StartElement\", Type, 0, \"\"},\n\t\t{\"StartElement.Attr\", Field, 0, \"\"},\n\t\t{\"StartElement.Name\", Field, 0, \"\"},\n\t\t{\"SyntaxError\", Type, 0, \"\"},\n\t\t{\"SyntaxError.Line\", Field, 0, \"\"},\n\t\t{\"SyntaxError.Msg\", Field, 0, \"\"},\n\t\t{\"TagPathError\", Type, 0, \"\"},\n\t\t{\"TagPathError.Field1\", Field, 0, \"\"},\n\t\t{\"TagPathError.Field2\", Field, 0, \"\"},\n\t\t{\"TagPathError.Struct\", Field, 0, \"\"},\n\t\t{\"TagPathError.Tag1\", Field, 0, \"\"},\n\t\t{\"TagPathError.Tag2\", Field, 0, \"\"},\n\t\t{\"Token\", Type, 0, \"\"},\n\t\t{\"TokenReader\", Type, 10, \"\"},\n\t\t{\"Unmarshal\", Func, 0, \"func(data []byte, v any) error\"},\n\t\t{\"UnmarshalError\", Type, 0, \"\"},\n\t\t{\"Unmarshaler\", Type, 2, \"\"},\n\t\t{\"UnmarshalerAttr\", Type, 2, \"\"},\n\t\t{\"UnsupportedTypeError\", Type, 0, \"\"},\n\t\t{\"UnsupportedTypeError.Type\", Field, 0, \"\"},\n\t},\n\t\"errors\": {\n\t\t{\"As\", Func, 13, \"func(err error, target any) bool\"},\n\t\t{\"AsType\", Func, 26, \"func[E error](err error) (E, bool)\"},\n\t\t{\"ErrUnsupported\", Var, 21, \"\"},\n\t\t{\"Is\", Func, 13, \"func(err error, target error) bool\"},\n\t\t{\"Join\", Func, 20, \"func(errs ...error) error\"},\n\t\t{\"New\", Func, 0, \"func(text string) error\"},\n\t\t{\"Unwrap\", Func, 13, \"func(err error) error\"},\n\t},\n\t\"expvar\": {\n\t\t{\"(*Float).Add\", Method, 0, \"\"},\n\t\t{\"(*Float).Set\", Method, 0, \"\"},\n\t\t{\"(*Float).String\", Method, 0, \"\"},\n\t\t{\"(*Float).Value\", Method, 8, \"\"},\n\t\t{\"(*Int).Add\", Method, 0, \"\"},\n\t\t{\"(*Int).Set\", Method, 0, \"\"},\n\t\t{\"(*Int).String\", Method, 0, \"\"},\n\t\t{\"(*Int).Value\", Method, 8, \"\"},\n\t\t{\"(*Map).Add\", Method, 0, \"\"},\n\t\t{\"(*Map).AddFloat\", Method, 0, \"\"},\n\t\t{\"(*Map).Delete\", Method, 12, \"\"},\n\t\t{\"(*Map).Do\", Method, 0, \"\"},\n\t\t{\"(*Map).Get\", Method, 0, \"\"},\n\t\t{\"(*Map).Init\", Method, 0, \"\"},\n\t\t{\"(*Map).Set\", Method, 0, \"\"},\n\t\t{\"(*Map).String\", Method, 0, \"\"},\n\t\t{\"(*String).Set\", Method, 0, \"\"},\n\t\t{\"(*String).String\", Method, 0, \"\"},\n\t\t{\"(*String).Value\", Method, 8, \"\"},\n\t\t{\"(Func).String\", Method, 0, \"\"},\n\t\t{\"(Func).Value\", Method, 8, \"\"},\n\t\t{\"(Var).String\", Method, 0, \"\"},\n\t\t{\"Do\", Func, 0, \"func(f func(KeyValue))\"},\n\t\t{\"Float\", Type, 0, \"\"},\n\t\t{\"Func\", Type, 0, \"\"},\n\t\t{\"Get\", Func, 0, \"func(name string) Var\"},\n\t\t{\"Handler\", Func, 8, \"func() http.Handler\"},\n\t\t{\"Int\", Type, 0, \"\"},\n\t\t{\"KeyValue\", Type, 0, \"\"},\n\t\t{\"KeyValue.Key\", Field, 0, \"\"},\n\t\t{\"KeyValue.Value\", Field, 0, \"\"},\n\t\t{\"Map\", Type, 0, \"\"},\n\t\t{\"NewFloat\", Func, 0, \"func(name string) *Float\"},\n\t\t{\"NewInt\", Func, 0, \"func(name string) *Int\"},\n\t\t{\"NewMap\", Func, 0, \"func(name string) *Map\"},\n\t\t{\"NewString\", Func, 0, \"func(name string) *String\"},\n\t\t{\"Publish\", Func, 0, \"func(name string, v Var)\"},\n\t\t{\"String\", Type, 0, \"\"},\n\t\t{\"Var\", Type, 0, \"\"},\n\t},\n\t\"flag\": {\n\t\t{\"(*FlagSet).Arg\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Args\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Bool\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).BoolFunc\", Method, 21, \"\"},\n\t\t{\"(*FlagSet).BoolVar\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Duration\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).DurationVar\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).ErrorHandling\", Method, 10, \"\"},\n\t\t{\"(*FlagSet).Float64\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Float64Var\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Func\", Method, 16, \"\"},\n\t\t{\"(*FlagSet).Init\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Int\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Int64\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Int64Var\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).IntVar\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Lookup\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).NArg\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).NFlag\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Name\", Method, 10, \"\"},\n\t\t{\"(*FlagSet).Output\", Method, 10, \"\"},\n\t\t{\"(*FlagSet).Parse\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Parsed\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).PrintDefaults\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Set\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).SetOutput\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).String\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).StringVar\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).TextVar\", Method, 19, \"\"},\n\t\t{\"(*FlagSet).Uint\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Uint64\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Uint64Var\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).UintVar\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Var\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Visit\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).VisitAll\", Method, 0, \"\"},\n\t\t{\"(Getter).Get\", Method, 2, \"\"},\n\t\t{\"(Getter).Set\", Method, 2, \"\"},\n\t\t{\"(Getter).String\", Method, 2, \"\"},\n\t\t{\"(Value).Set\", Method, 0, \"\"},\n\t\t{\"(Value).String\", Method, 0, \"\"},\n\t\t{\"Arg\", Func, 0, \"func(i int) string\"},\n\t\t{\"Args\", Func, 0, \"func() []string\"},\n\t\t{\"Bool\", Func, 0, \"func(name string, value bool, usage string) *bool\"},\n\t\t{\"BoolFunc\", Func, 21, \"func(name string, usage string, fn func(string) error)\"},\n\t\t{\"BoolVar\", Func, 0, \"func(p *bool, name string, value bool, usage string)\"},\n\t\t{\"CommandLine\", Var, 2, \"\"},\n\t\t{\"ContinueOnError\", Const, 0, \"\"},\n\t\t{\"Duration\", Func, 0, \"func(name string, value time.Duration, usage string) *time.Duration\"},\n\t\t{\"DurationVar\", Func, 0, \"func(p *time.Duration, name string, value time.Duration, usage string)\"},\n\t\t{\"ErrHelp\", Var, 0, \"\"},\n\t\t{\"ErrorHandling\", Type, 0, \"\"},\n\t\t{\"ExitOnError\", Const, 0, \"\"},\n\t\t{\"Flag\", Type, 0, \"\"},\n\t\t{\"Flag.DefValue\", Field, 0, \"\"},\n\t\t{\"Flag.Name\", Field, 0, \"\"},\n\t\t{\"Flag.Usage\", Field, 0, \"\"},\n\t\t{\"Flag.Value\", Field, 0, \"\"},\n\t\t{\"FlagSet\", Type, 0, \"\"},\n\t\t{\"FlagSet.Usage\", Field, 0, \"\"},\n\t\t{\"Float64\", Func, 0, \"func(name string, value float64, usage string) *float64\"},\n\t\t{\"Float64Var\", Func, 0, \"func(p *float64, name string, value float64, usage string)\"},\n\t\t{\"Func\", Func, 16, \"func(name string, usage string, fn func(string) error)\"},\n\t\t{\"Getter\", Type, 2, \"\"},\n\t\t{\"Int\", Func, 0, \"func(name string, value int, usage string) *int\"},\n\t\t{\"Int64\", Func, 0, \"func(name string, value int64, usage string) *int64\"},\n\t\t{\"Int64Var\", Func, 0, \"func(p *int64, name string, value int64, usage string)\"},\n\t\t{\"IntVar\", Func, 0, \"func(p *int, name string, value int, usage string)\"},\n\t\t{\"Lookup\", Func, 0, \"func(name string) *Flag\"},\n\t\t{\"NArg\", Func, 0, \"func() int\"},\n\t\t{\"NFlag\", Func, 0, \"func() int\"},\n\t\t{\"NewFlagSet\", Func, 0, \"func(name string, errorHandling ErrorHandling) *FlagSet\"},\n\t\t{\"PanicOnError\", Const, 0, \"\"},\n\t\t{\"Parse\", Func, 0, \"func()\"},\n\t\t{\"Parsed\", Func, 0, \"func() bool\"},\n\t\t{\"PrintDefaults\", Func, 0, \"func()\"},\n\t\t{\"Set\", Func, 0, \"func(name string, value string) error\"},\n\t\t{\"String\", Func, 0, \"func(name string, value string, usage string) *string\"},\n\t\t{\"StringVar\", Func, 0, \"func(p *string, name string, value string, usage string)\"},\n\t\t{\"TextVar\", Func, 19, \"func(p encoding.TextUnmarshaler, name string, value encoding.TextMarshaler, usage string)\"},\n\t\t{\"Uint\", Func, 0, \"func(name string, value uint, usage string) *uint\"},\n\t\t{\"Uint64\", Func, 0, \"func(name string, value uint64, usage string) *uint64\"},\n\t\t{\"Uint64Var\", Func, 0, \"func(p *uint64, name string, value uint64, usage string)\"},\n\t\t{\"UintVar\", Func, 0, \"func(p *uint, name string, value uint, usage string)\"},\n\t\t{\"UnquoteUsage\", Func, 5, \"func(flag *Flag) (name string, usage string)\"},\n\t\t{\"Usage\", Var, 0, \"\"},\n\t\t{\"Value\", Type, 0, \"\"},\n\t\t{\"Var\", Func, 0, \"func(value Value, name string, usage string)\"},\n\t\t{\"Visit\", Func, 0, \"func(fn func(*Flag))\"},\n\t\t{\"VisitAll\", Func, 0, \"func(fn func(*Flag))\"},\n\t},\n\t\"fmt\": {\n\t\t{\"(Formatter).Format\", Method, 0, \"\"},\n\t\t{\"(GoStringer).GoString\", Method, 0, \"\"},\n\t\t{\"(ScanState).Read\", Method, 0, \"\"},\n\t\t{\"(ScanState).ReadRune\", Method, 0, \"\"},\n\t\t{\"(ScanState).SkipSpace\", Method, 0, \"\"},\n\t\t{\"(ScanState).Token\", Method, 0, \"\"},\n\t\t{\"(ScanState).UnreadRune\", Method, 0, \"\"},\n\t\t{\"(ScanState).Width\", Method, 0, \"\"},\n\t\t{\"(Scanner).Scan\", Method, 0, \"\"},\n\t\t{\"(State).Flag\", Method, 0, \"\"},\n\t\t{\"(State).Precision\", Method, 0, \"\"},\n\t\t{\"(State).Width\", Method, 0, \"\"},\n\t\t{\"(State).Write\", Method, 0, \"\"},\n\t\t{\"(Stringer).String\", Method, 0, \"\"},\n\t\t{\"Append\", Func, 19, \"func(b []byte, a ...any) []byte\"},\n\t\t{\"Appendf\", Func, 19, \"func(b []byte, format string, a ...any) []byte\"},\n\t\t{\"Appendln\", Func, 19, \"func(b []byte, a ...any) []byte\"},\n\t\t{\"Errorf\", Func, 0, \"func(format string, a ...any) (err error)\"},\n\t\t{\"FormatString\", Func, 20, \"func(state State, verb rune) string\"},\n\t\t{\"Formatter\", Type, 0, \"\"},\n\t\t{\"Fprint\", Func, 0, \"func(w io.Writer, a ...any) (n int, err error)\"},\n\t\t{\"Fprintf\", Func, 0, \"func(w io.Writer, format string, a ...any) (n int, err error)\"},\n\t\t{\"Fprintln\", Func, 0, \"func(w io.Writer, a ...any) (n int, err error)\"},\n\t\t{\"Fscan\", Func, 0, \"func(r io.Reader, a ...any) (n int, err error)\"},\n\t\t{\"Fscanf\", Func, 0, \"func(r io.Reader, format string, a ...any) (n int, err error)\"},\n\t\t{\"Fscanln\", Func, 0, \"func(r io.Reader, a ...any) (n int, err error)\"},\n\t\t{\"GoStringer\", Type, 0, \"\"},\n\t\t{\"Print\", Func, 0, \"func(a ...any) (n int, err error)\"},\n\t\t{\"Printf\", Func, 0, \"func(format string, a ...any) (n int, err error)\"},\n\t\t{\"Println\", Func, 0, \"func(a ...any) (n int, err error)\"},\n\t\t{\"Scan\", Func, 0, \"func(a ...any) (n int, err error)\"},\n\t\t{\"ScanState\", Type, 0, \"\"},\n\t\t{\"Scanf\", Func, 0, \"func(format string, a ...any) (n int, err error)\"},\n\t\t{\"Scanln\", Func, 0, \"func(a ...any) (n int, err error)\"},\n\t\t{\"Scanner\", Type, 0, \"\"},\n\t\t{\"Sprint\", Func, 0, \"func(a ...any) string\"},\n\t\t{\"Sprintf\", Func, 0, \"func(format string, a ...any) string\"},\n\t\t{\"Sprintln\", Func, 0, \"func(a ...any) string\"},\n\t\t{\"Sscan\", Func, 0, \"func(str string, a ...any) (n int, err error)\"},\n\t\t{\"Sscanf\", Func, 0, \"func(str string, format string, a ...any) (n int, err error)\"},\n\t\t{\"Sscanln\", Func, 0, \"func(str string, a ...any) (n int, err error)\"},\n\t\t{\"State\", Type, 0, \"\"},\n\t\t{\"Stringer\", Type, 0, \"\"},\n\t},\n\t\"go/ast\": {\n\t\t{\"(*ArrayType).End\", Method, 0, \"\"},\n\t\t{\"(*ArrayType).Pos\", Method, 0, \"\"},\n\t\t{\"(*AssignStmt).End\", Method, 0, \"\"},\n\t\t{\"(*AssignStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*BadDecl).End\", Method, 0, \"\"},\n\t\t{\"(*BadDecl).Pos\", Method, 0, \"\"},\n\t\t{\"(*BadExpr).End\", Method, 0, \"\"},\n\t\t{\"(*BadExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*BadStmt).End\", Method, 0, \"\"},\n\t\t{\"(*BadStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*BasicLit).End\", Method, 0, \"\"},\n\t\t{\"(*BasicLit).Pos\", Method, 0, \"\"},\n\t\t{\"(*BinaryExpr).End\", Method, 0, \"\"},\n\t\t{\"(*BinaryExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*BlockStmt).End\", Method, 0, \"\"},\n\t\t{\"(*BlockStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*BranchStmt).End\", Method, 0, \"\"},\n\t\t{\"(*BranchStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*CallExpr).End\", Method, 0, \"\"},\n\t\t{\"(*CallExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*CaseClause).End\", Method, 0, \"\"},\n\t\t{\"(*CaseClause).Pos\", Method, 0, \"\"},\n\t\t{\"(*ChanType).End\", Method, 0, \"\"},\n\t\t{\"(*ChanType).Pos\", Method, 0, \"\"},\n\t\t{\"(*CommClause).End\", Method, 0, \"\"},\n\t\t{\"(*CommClause).Pos\", Method, 0, \"\"},\n\t\t{\"(*Comment).End\", Method, 0, \"\"},\n\t\t{\"(*Comment).Pos\", Method, 0, \"\"},\n\t\t{\"(*CommentGroup).End\", Method, 0, \"\"},\n\t\t{\"(*CommentGroup).Pos\", Method, 0, \"\"},\n\t\t{\"(*CommentGroup).Text\", Method, 0, \"\"},\n\t\t{\"(*CompositeLit).End\", Method, 0, \"\"},\n\t\t{\"(*CompositeLit).Pos\", Method, 0, \"\"},\n\t\t{\"(*DeclStmt).End\", Method, 0, \"\"},\n\t\t{\"(*DeclStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*DeferStmt).End\", Method, 0, \"\"},\n\t\t{\"(*DeferStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*Directive).End\", Method, 26, \"\"},\n\t\t{\"(*Directive).ParseArgs\", Method, 26, \"\"},\n\t\t{\"(*Directive).Pos\", Method, 26, \"\"},\n\t\t{\"(*Ellipsis).End\", Method, 0, \"\"},\n\t\t{\"(*Ellipsis).Pos\", Method, 0, \"\"},\n\t\t{\"(*EmptyStmt).End\", Method, 0, \"\"},\n\t\t{\"(*EmptyStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*ExprStmt).End\", Method, 0, \"\"},\n\t\t{\"(*ExprStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*Field).End\", Method, 0, \"\"},\n\t\t{\"(*Field).Pos\", Method, 0, \"\"},\n\t\t{\"(*FieldList).End\", Method, 0, \"\"},\n\t\t{\"(*FieldList).NumFields\", Method, 0, \"\"},\n\t\t{\"(*FieldList).Pos\", Method, 0, \"\"},\n\t\t{\"(*File).End\", Method, 0, \"\"},\n\t\t{\"(*File).Pos\", Method, 0, \"\"},\n\t\t{\"(*ForStmt).End\", Method, 0, \"\"},\n\t\t{\"(*ForStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*FuncDecl).End\", Method, 0, \"\"},\n\t\t{\"(*FuncDecl).Pos\", Method, 0, \"\"},\n\t\t{\"(*FuncLit).End\", Method, 0, \"\"},\n\t\t{\"(*FuncLit).Pos\", Method, 0, \"\"},\n\t\t{\"(*FuncType).End\", Method, 0, \"\"},\n\t\t{\"(*FuncType).Pos\", Method, 0, \"\"},\n\t\t{\"(*GenDecl).End\", Method, 0, \"\"},\n\t\t{\"(*GenDecl).Pos\", Method, 0, \"\"},\n\t\t{\"(*GoStmt).End\", Method, 0, \"\"},\n\t\t{\"(*GoStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*Ident).End\", Method, 0, \"\"},\n\t\t{\"(*Ident).IsExported\", Method, 0, \"\"},\n\t\t{\"(*Ident).Pos\", Method, 0, \"\"},\n\t\t{\"(*Ident).String\", Method, 0, \"\"},\n\t\t{\"(*IfStmt).End\", Method, 0, \"\"},\n\t\t{\"(*IfStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*ImportSpec).End\", Method, 0, \"\"},\n\t\t{\"(*ImportSpec).Pos\", Method, 0, \"\"},\n\t\t{\"(*IncDecStmt).End\", Method, 0, \"\"},\n\t\t{\"(*IncDecStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*IndexExpr).End\", Method, 0, \"\"},\n\t\t{\"(*IndexExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*IndexListExpr).End\", Method, 18, \"\"},\n\t\t{\"(*IndexListExpr).Pos\", Method, 18, \"\"},\n\t\t{\"(*InterfaceType).End\", Method, 0, \"\"},\n\t\t{\"(*InterfaceType).Pos\", Method, 0, \"\"},\n\t\t{\"(*KeyValueExpr).End\", Method, 0, \"\"},\n\t\t{\"(*KeyValueExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*LabeledStmt).End\", Method, 0, \"\"},\n\t\t{\"(*LabeledStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*MapType).End\", Method, 0, \"\"},\n\t\t{\"(*MapType).Pos\", Method, 0, \"\"},\n\t\t{\"(*Object).Pos\", Method, 0, \"\"},\n\t\t{\"(*Package).End\", Method, 0, \"\"},\n\t\t{\"(*Package).Pos\", Method, 0, \"\"},\n\t\t{\"(*ParenExpr).End\", Method, 0, \"\"},\n\t\t{\"(*ParenExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*RangeStmt).End\", Method, 0, \"\"},\n\t\t{\"(*RangeStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*ReturnStmt).End\", Method, 0, \"\"},\n\t\t{\"(*ReturnStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*Scope).Insert\", Method, 0, \"\"},\n\t\t{\"(*Scope).Lookup\", Method, 0, \"\"},\n\t\t{\"(*Scope).String\", Method, 0, \"\"},\n\t\t{\"(*SelectStmt).End\", Method, 0, \"\"},\n\t\t{\"(*SelectStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*SelectorExpr).End\", Method, 0, \"\"},\n\t\t{\"(*SelectorExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*SendStmt).End\", Method, 0, \"\"},\n\t\t{\"(*SendStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*SliceExpr).End\", Method, 0, \"\"},\n\t\t{\"(*SliceExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*StarExpr).End\", Method, 0, \"\"},\n\t\t{\"(*StarExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*StructType).End\", Method, 0, \"\"},\n\t\t{\"(*StructType).Pos\", Method, 0, \"\"},\n\t\t{\"(*SwitchStmt).End\", Method, 0, \"\"},\n\t\t{\"(*SwitchStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*TypeAssertExpr).End\", Method, 0, \"\"},\n\t\t{\"(*TypeAssertExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*TypeSpec).End\", Method, 0, \"\"},\n\t\t{\"(*TypeSpec).Pos\", Method, 0, \"\"},\n\t\t{\"(*TypeSwitchStmt).End\", Method, 0, \"\"},\n\t\t{\"(*TypeSwitchStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*UnaryExpr).End\", Method, 0, \"\"},\n\t\t{\"(*UnaryExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*ValueSpec).End\", Method, 0, \"\"},\n\t\t{\"(*ValueSpec).Pos\", Method, 0, \"\"},\n\t\t{\"(CommentMap).Comments\", Method, 1, \"\"},\n\t\t{\"(CommentMap).Filter\", Method, 1, \"\"},\n\t\t{\"(CommentMap).String\", Method, 1, \"\"},\n\t\t{\"(CommentMap).Update\", Method, 1, \"\"},\n\t\t{\"(Decl).End\", Method, 0, \"\"},\n\t\t{\"(Decl).Pos\", Method, 0, \"\"},\n\t\t{\"(Expr).End\", Method, 0, \"\"},\n\t\t{\"(Expr).Pos\", Method, 0, \"\"},\n\t\t{\"(Node).End\", Method, 0, \"\"},\n\t\t{\"(Node).Pos\", Method, 0, \"\"},\n\t\t{\"(ObjKind).String\", Method, 0, \"\"},\n\t\t{\"(Spec).End\", Method, 0, \"\"},\n\t\t{\"(Spec).Pos\", Method, 0, \"\"},\n\t\t{\"(Stmt).End\", Method, 0, \"\"},\n\t\t{\"(Stmt).Pos\", Method, 0, \"\"},\n\t\t{\"(Visitor).Visit\", Method, 0, \"\"},\n\t\t{\"ArrayType\", Type, 0, \"\"},\n\t\t{\"ArrayType.Elt\", Field, 0, \"\"},\n\t\t{\"ArrayType.Lbrack\", Field, 0, \"\"},\n\t\t{\"ArrayType.Len\", Field, 0, \"\"},\n\t\t{\"AssignStmt\", Type, 0, \"\"},\n\t\t{\"AssignStmt.Lhs\", Field, 0, \"\"},\n\t\t{\"AssignStmt.Rhs\", Field, 0, \"\"},\n\t\t{\"AssignStmt.Tok\", Field, 0, \"\"},\n\t\t{\"AssignStmt.TokPos\", Field, 0, \"\"},\n\t\t{\"Bad\", Const, 0, \"\"},\n\t\t{\"BadDecl\", Type, 0, \"\"},\n\t\t{\"BadDecl.From\", Field, 0, \"\"},\n\t\t{\"BadDecl.To\", Field, 0, \"\"},\n\t\t{\"BadExpr\", Type, 0, \"\"},\n\t\t{\"BadExpr.From\", Field, 0, \"\"},\n\t\t{\"BadExpr.To\", Field, 0, \"\"},\n\t\t{\"BadStmt\", Type, 0, \"\"},\n\t\t{\"BadStmt.From\", Field, 0, \"\"},\n\t\t{\"BadStmt.To\", Field, 0, \"\"},\n\t\t{\"BasicLit\", Type, 0, \"\"},\n\t\t{\"BasicLit.Kind\", Field, 0, \"\"},\n\t\t{\"BasicLit.Value\", Field, 0, \"\"},\n\t\t{\"BasicLit.ValueEnd\", Field, 26, \"\"},\n\t\t{\"BasicLit.ValuePos\", Field, 0, \"\"},\n\t\t{\"BinaryExpr\", Type, 0, \"\"},\n\t\t{\"BinaryExpr.Op\", Field, 0, \"\"},\n\t\t{\"BinaryExpr.OpPos\", Field, 0, \"\"},\n\t\t{\"BinaryExpr.X\", Field, 0, \"\"},\n\t\t{\"BinaryExpr.Y\", Field, 0, \"\"},\n\t\t{\"BlockStmt\", Type, 0, \"\"},\n\t\t{\"BlockStmt.Lbrace\", Field, 0, \"\"},\n\t\t{\"BlockStmt.List\", Field, 0, \"\"},\n\t\t{\"BlockStmt.Rbrace\", Field, 0, \"\"},\n\t\t{\"BranchStmt\", Type, 0, \"\"},\n\t\t{\"BranchStmt.Label\", Field, 0, \"\"},\n\t\t{\"BranchStmt.Tok\", Field, 0, \"\"},\n\t\t{\"BranchStmt.TokPos\", Field, 0, \"\"},\n\t\t{\"CallExpr\", Type, 0, \"\"},\n\t\t{\"CallExpr.Args\", Field, 0, \"\"},\n\t\t{\"CallExpr.Ellipsis\", Field, 0, \"\"},\n\t\t{\"CallExpr.Fun\", Field, 0, \"\"},\n\t\t{\"CallExpr.Lparen\", Field, 0, \"\"},\n\t\t{\"CallExpr.Rparen\", Field, 0, \"\"},\n\t\t{\"CaseClause\", Type, 0, \"\"},\n\t\t{\"CaseClause.Body\", Field, 0, \"\"},\n\t\t{\"CaseClause.Case\", Field, 0, \"\"},\n\t\t{\"CaseClause.Colon\", Field, 0, \"\"},\n\t\t{\"CaseClause.List\", Field, 0, \"\"},\n\t\t{\"ChanDir\", Type, 0, \"\"},\n\t\t{\"ChanType\", Type, 0, \"\"},\n\t\t{\"ChanType.Arrow\", Field, 1, \"\"},\n\t\t{\"ChanType.Begin\", Field, 0, \"\"},\n\t\t{\"ChanType.Dir\", Field, 0, \"\"},\n\t\t{\"ChanType.Value\", Field, 0, \"\"},\n\t\t{\"CommClause\", Type, 0, \"\"},\n\t\t{\"CommClause.Body\", Field, 0, \"\"},\n\t\t{\"CommClause.Case\", Field, 0, \"\"},\n\t\t{\"CommClause.Colon\", Field, 0, \"\"},\n\t\t{\"CommClause.Comm\", Field, 0, \"\"},\n\t\t{\"Comment\", Type, 0, \"\"},\n\t\t{\"Comment.Slash\", Field, 0, \"\"},\n\t\t{\"Comment.Text\", Field, 0, \"\"},\n\t\t{\"CommentGroup\", Type, 0, \"\"},\n\t\t{\"CommentGroup.List\", Field, 0, \"\"},\n\t\t{\"CommentMap\", Type, 1, \"\"},\n\t\t{\"CompositeLit\", Type, 0, \"\"},\n\t\t{\"CompositeLit.Elts\", Field, 0, \"\"},\n\t\t{\"CompositeLit.Incomplete\", Field, 11, \"\"},\n\t\t{\"CompositeLit.Lbrace\", Field, 0, \"\"},\n\t\t{\"CompositeLit.Rbrace\", Field, 0, \"\"},\n\t\t{\"CompositeLit.Type\", Field, 0, \"\"},\n\t\t{\"Con\", Const, 0, \"\"},\n\t\t{\"DeclStmt\", Type, 0, \"\"},\n\t\t{\"DeclStmt.Decl\", Field, 0, \"\"},\n\t\t{\"DeferStmt\", Type, 0, \"\"},\n\t\t{\"DeferStmt.Call\", Field, 0, \"\"},\n\t\t{\"DeferStmt.Defer\", Field, 0, \"\"},\n\t\t{\"Directive\", Type, 26, \"\"},\n\t\t{\"Directive.Args\", Field, 26, \"\"},\n\t\t{\"Directive.ArgsPos\", Field, 26, \"\"},\n\t\t{\"Directive.Name\", Field, 26, \"\"},\n\t\t{\"Directive.Slash\", Field, 26, \"\"},\n\t\t{\"Directive.Tool\", Field, 26, \"\"},\n\t\t{\"DirectiveArg\", Type, 26, \"\"},\n\t\t{\"DirectiveArg.Arg\", Field, 26, \"\"},\n\t\t{\"DirectiveArg.Pos\", Field, 26, \"\"},\n\t\t{\"Ellipsis\", Type, 0, \"\"},\n\t\t{\"Ellipsis.Ellipsis\", Field, 0, \"\"},\n\t\t{\"Ellipsis.Elt\", Field, 0, \"\"},\n\t\t{\"EmptyStmt\", Type, 0, \"\"},\n\t\t{\"EmptyStmt.Implicit\", Field, 5, \"\"},\n\t\t{\"EmptyStmt.Semicolon\", Field, 0, \"\"},\n\t\t{\"ExprStmt\", Type, 0, \"\"},\n\t\t{\"ExprStmt.X\", Field, 0, \"\"},\n\t\t{\"Field\", Type, 0, \"\"},\n\t\t{\"Field.Comment\", Field, 0, \"\"},\n\t\t{\"Field.Doc\", Field, 0, \"\"},\n\t\t{\"Field.Names\", Field, 0, \"\"},\n\t\t{\"Field.Tag\", Field, 0, \"\"},\n\t\t{\"Field.Type\", Field, 0, \"\"},\n\t\t{\"FieldFilter\", Type, 0, \"\"},\n\t\t{\"FieldList\", Type, 0, \"\"},\n\t\t{\"FieldList.Closing\", Field, 0, \"\"},\n\t\t{\"FieldList.List\", Field, 0, \"\"},\n\t\t{\"FieldList.Opening\", Field, 0, \"\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"File.Comments\", Field, 0, \"\"},\n\t\t{\"File.Decls\", Field, 0, \"\"},\n\t\t{\"File.Doc\", Field, 0, \"\"},\n\t\t{\"File.FileEnd\", Field, 20, \"\"},\n\t\t{\"File.FileStart\", Field, 20, \"\"},\n\t\t{\"File.GoVersion\", Field, 21, \"\"},\n\t\t{\"File.Imports\", Field, 0, \"\"},\n\t\t{\"File.Name\", Field, 0, \"\"},\n\t\t{\"File.Package\", Field, 0, \"\"},\n\t\t{\"File.Scope\", Field, 0, \"\"},\n\t\t{\"File.Unresolved\", Field, 0, \"\"},\n\t\t{\"FileExports\", Func, 0, \"func(src *File) bool\"},\n\t\t{\"Filter\", Type, 0, \"\"},\n\t\t{\"FilterDecl\", Func, 0, \"func(decl Decl, f Filter) bool\"},\n\t\t{\"FilterFile\", Func, 0, \"func(src *File, f Filter) bool\"},\n\t\t{\"FilterFuncDuplicates\", Const, 0, \"\"},\n\t\t{\"FilterImportDuplicates\", Const, 0, \"\"},\n\t\t{\"FilterPackage\", Func, 0, \"func(pkg *Package, f Filter) bool\"},\n\t\t{\"FilterUnassociatedComments\", Const, 0, \"\"},\n\t\t{\"ForStmt\", Type, 0, \"\"},\n\t\t{\"ForStmt.Body\", Field, 0, \"\"},\n\t\t{\"ForStmt.Cond\", Field, 0, \"\"},\n\t\t{\"ForStmt.For\", Field, 0, \"\"},\n\t\t{\"ForStmt.Init\", Field, 0, \"\"},\n\t\t{\"ForStmt.Post\", Field, 0, \"\"},\n\t\t{\"Fprint\", Func, 0, \"func(w io.Writer, fset *token.FileSet, x any, f FieldFilter) error\"},\n\t\t{\"Fun\", Const, 0, \"\"},\n\t\t{\"FuncDecl\", Type, 0, \"\"},\n\t\t{\"FuncDecl.Body\", Field, 0, \"\"},\n\t\t{\"FuncDecl.Doc\", Field, 0, \"\"},\n\t\t{\"FuncDecl.Name\", Field, 0, \"\"},\n\t\t{\"FuncDecl.Recv\", Field, 0, \"\"},\n\t\t{\"FuncDecl.Type\", Field, 0, \"\"},\n\t\t{\"FuncLit\", Type, 0, \"\"},\n\t\t{\"FuncLit.Body\", Field, 0, \"\"},\n\t\t{\"FuncLit.Type\", Field, 0, \"\"},\n\t\t{\"FuncType\", Type, 0, \"\"},\n\t\t{\"FuncType.Func\", Field, 0, \"\"},\n\t\t{\"FuncType.Params\", Field, 0, \"\"},\n\t\t{\"FuncType.Results\", Field, 0, \"\"},\n\t\t{\"FuncType.TypeParams\", Field, 18, \"\"},\n\t\t{\"GenDecl\", Type, 0, \"\"},\n\t\t{\"GenDecl.Doc\", Field, 0, \"\"},\n\t\t{\"GenDecl.Lparen\", Field, 0, \"\"},\n\t\t{\"GenDecl.Rparen\", Field, 0, \"\"},\n\t\t{\"GenDecl.Specs\", Field, 0, \"\"},\n\t\t{\"GenDecl.Tok\", Field, 0, \"\"},\n\t\t{\"GenDecl.TokPos\", Field, 0, \"\"},\n\t\t{\"GoStmt\", Type, 0, \"\"},\n\t\t{\"GoStmt.Call\", Field, 0, \"\"},\n\t\t{\"GoStmt.Go\", Field, 0, \"\"},\n\t\t{\"Ident\", Type, 0, \"\"},\n\t\t{\"Ident.Name\", Field, 0, \"\"},\n\t\t{\"Ident.NamePos\", Field, 0, \"\"},\n\t\t{\"Ident.Obj\", Field, 0, \"\"},\n\t\t{\"IfStmt\", Type, 0, \"\"},\n\t\t{\"IfStmt.Body\", Field, 0, \"\"},\n\t\t{\"IfStmt.Cond\", Field, 0, \"\"},\n\t\t{\"IfStmt.Else\", Field, 0, \"\"},\n\t\t{\"IfStmt.If\", Field, 0, \"\"},\n\t\t{\"IfStmt.Init\", Field, 0, \"\"},\n\t\t{\"ImportSpec\", Type, 0, \"\"},\n\t\t{\"ImportSpec.Comment\", Field, 0, \"\"},\n\t\t{\"ImportSpec.Doc\", Field, 0, \"\"},\n\t\t{\"ImportSpec.EndPos\", Field, 0, \"\"},\n\t\t{\"ImportSpec.Name\", Field, 0, \"\"},\n\t\t{\"ImportSpec.Path\", Field, 0, \"\"},\n\t\t{\"Importer\", Type, 0, \"\"},\n\t\t{\"IncDecStmt\", Type, 0, \"\"},\n\t\t{\"IncDecStmt.Tok\", Field, 0, \"\"},\n\t\t{\"IncDecStmt.TokPos\", Field, 0, \"\"},\n\t\t{\"IncDecStmt.X\", Field, 0, \"\"},\n\t\t{\"IndexExpr\", Type, 0, \"\"},\n\t\t{\"IndexExpr.Index\", Field, 0, \"\"},\n\t\t{\"IndexExpr.Lbrack\", Field, 0, \"\"},\n\t\t{\"IndexExpr.Rbrack\", Field, 0, \"\"},\n\t\t{\"IndexExpr.X\", Field, 0, \"\"},\n\t\t{\"IndexListExpr\", Type, 18, \"\"},\n\t\t{\"IndexListExpr.Indices\", Field, 18, \"\"},\n\t\t{\"IndexListExpr.Lbrack\", Field, 18, \"\"},\n\t\t{\"IndexListExpr.Rbrack\", Field, 18, \"\"},\n\t\t{\"IndexListExpr.X\", Field, 18, \"\"},\n\t\t{\"Inspect\", Func, 0, \"func(node Node, f func(Node) bool)\"},\n\t\t{\"InterfaceType\", Type, 0, \"\"},\n\t\t{\"InterfaceType.Incomplete\", Field, 0, \"\"},\n\t\t{\"InterfaceType.Interface\", Field, 0, \"\"},\n\t\t{\"InterfaceType.Methods\", Field, 0, \"\"},\n\t\t{\"IsExported\", Func, 0, \"func(name string) bool\"},\n\t\t{\"IsGenerated\", Func, 21, \"func(file *File) bool\"},\n\t\t{\"KeyValueExpr\", Type, 0, \"\"},\n\t\t{\"KeyValueExpr.Colon\", Field, 0, \"\"},\n\t\t{\"KeyValueExpr.Key\", Field, 0, \"\"},\n\t\t{\"KeyValueExpr.Value\", Field, 0, \"\"},\n\t\t{\"LabeledStmt\", Type, 0, \"\"},\n\t\t{\"LabeledStmt.Colon\", Field, 0, \"\"},\n\t\t{\"LabeledStmt.Label\", Field, 0, \"\"},\n\t\t{\"LabeledStmt.Stmt\", Field, 0, \"\"},\n\t\t{\"Lbl\", Const, 0, \"\"},\n\t\t{\"MapType\", Type, 0, \"\"},\n\t\t{\"MapType.Key\", Field, 0, \"\"},\n\t\t{\"MapType.Map\", Field, 0, \"\"},\n\t\t{\"MapType.Value\", Field, 0, \"\"},\n\t\t{\"MergeMode\", Type, 0, \"\"},\n\t\t{\"MergePackageFiles\", Func, 0, \"func(pkg *Package, mode MergeMode) *File\"},\n\t\t{\"NewCommentMap\", Func, 1, \"func(fset *token.FileSet, node Node, comments []*CommentGroup) CommentMap\"},\n\t\t{\"NewIdent\", Func, 0, \"func(name string) *Ident\"},\n\t\t{\"NewObj\", Func, 0, \"func(kind ObjKind, name string) *Object\"},\n\t\t{\"NewPackage\", Func, 0, \"func(fset *token.FileSet, files map[string]*File, importer Importer, universe *Scope) (*Package, error)\"},\n\t\t{\"NewScope\", Func, 0, \"func(outer *Scope) *Scope\"},\n\t\t{\"Node\", Type, 0, \"\"},\n\t\t{\"NotNilFilter\", Func, 0, \"func(_ string, v reflect.Value) bool\"},\n\t\t{\"ObjKind\", Type, 0, \"\"},\n\t\t{\"Object\", Type, 0, \"\"},\n\t\t{\"Object.Data\", Field, 0, \"\"},\n\t\t{\"Object.Decl\", Field, 0, \"\"},\n\t\t{\"Object.Kind\", Field, 0, \"\"},\n\t\t{\"Object.Name\", Field, 0, \"\"},\n\t\t{\"Object.Type\", Field, 0, \"\"},\n\t\t{\"Package\", Type, 0, \"\"},\n\t\t{\"Package.Files\", Field, 0, \"\"},\n\t\t{\"Package.Imports\", Field, 0, \"\"},\n\t\t{\"Package.Name\", Field, 0, \"\"},\n\t\t{\"Package.Scope\", Field, 0, \"\"},\n\t\t{\"PackageExports\", Func, 0, \"func(pkg *Package) bool\"},\n\t\t{\"ParenExpr\", Type, 0, \"\"},\n\t\t{\"ParenExpr.Lparen\", Field, 0, \"\"},\n\t\t{\"ParenExpr.Rparen\", Field, 0, \"\"},\n\t\t{\"ParenExpr.X\", Field, 0, \"\"},\n\t\t{\"ParseDirective\", Func, 26, \"func(pos token.Pos, c string) (Directive, bool)\"},\n\t\t{\"Pkg\", Const, 0, \"\"},\n\t\t{\"Preorder\", Func, 23, \"func(root Node) iter.Seq[Node]\"},\n\t\t{\"PreorderStack\", Func, 25, \"func(root Node, stack []Node, f func(n Node, stack []Node) bool)\"},\n\t\t{\"Print\", Func, 0, \"func(fset *token.FileSet, x any) error\"},\n\t\t{\"RECV\", Const, 0, \"\"},\n\t\t{\"RangeStmt\", Type, 0, \"\"},\n\t\t{\"RangeStmt.Body\", Field, 0, \"\"},\n\t\t{\"RangeStmt.For\", Field, 0, \"\"},\n\t\t{\"RangeStmt.Key\", Field, 0, \"\"},\n\t\t{\"RangeStmt.Range\", Field, 20, \"\"},\n\t\t{\"RangeStmt.Tok\", Field, 0, \"\"},\n\t\t{\"RangeStmt.TokPos\", Field, 0, \"\"},\n\t\t{\"RangeStmt.Value\", Field, 0, \"\"},\n\t\t{\"RangeStmt.X\", Field, 0, \"\"},\n\t\t{\"ReturnStmt\", Type, 0, \"\"},\n\t\t{\"ReturnStmt.Results\", Field, 0, \"\"},\n\t\t{\"ReturnStmt.Return\", Field, 0, \"\"},\n\t\t{\"SEND\", Const, 0, \"\"},\n\t\t{\"Scope\", Type, 0, \"\"},\n\t\t{\"Scope.Objects\", Field, 0, \"\"},\n\t\t{\"Scope.Outer\", Field, 0, \"\"},\n\t\t{\"SelectStmt\", Type, 0, \"\"},\n\t\t{\"SelectStmt.Body\", Field, 0, \"\"},\n\t\t{\"SelectStmt.Select\", Field, 0, \"\"},\n\t\t{\"SelectorExpr\", Type, 0, \"\"},\n\t\t{\"SelectorExpr.Sel\", Field, 0, \"\"},\n\t\t{\"SelectorExpr.X\", Field, 0, \"\"},\n\t\t{\"SendStmt\", Type, 0, \"\"},\n\t\t{\"SendStmt.Arrow\", Field, 0, \"\"},\n\t\t{\"SendStmt.Chan\", Field, 0, \"\"},\n\t\t{\"SendStmt.Value\", Field, 0, \"\"},\n\t\t{\"SliceExpr\", Type, 0, \"\"},\n\t\t{\"SliceExpr.High\", Field, 0, \"\"},\n\t\t{\"SliceExpr.Lbrack\", Field, 0, \"\"},\n\t\t{\"SliceExpr.Low\", Field, 0, \"\"},\n\t\t{\"SliceExpr.Max\", Field, 2, \"\"},\n\t\t{\"SliceExpr.Rbrack\", Field, 0, \"\"},\n\t\t{\"SliceExpr.Slice3\", Field, 2, \"\"},\n\t\t{\"SliceExpr.X\", Field, 0, \"\"},\n\t\t{\"SortImports\", Func, 0, \"func(fset *token.FileSet, f *File)\"},\n\t\t{\"StarExpr\", Type, 0, \"\"},\n\t\t{\"StarExpr.Star\", Field, 0, \"\"},\n\t\t{\"StarExpr.X\", Field, 0, \"\"},\n\t\t{\"StructType\", Type, 0, \"\"},\n\t\t{\"StructType.Fields\", Field, 0, \"\"},\n\t\t{\"StructType.Incomplete\", Field, 0, \"\"},\n\t\t{\"StructType.Struct\", Field, 0, \"\"},\n\t\t{\"SwitchStmt\", Type, 0, \"\"},\n\t\t{\"SwitchStmt.Body\", Field, 0, \"\"},\n\t\t{\"SwitchStmt.Init\", Field, 0, \"\"},\n\t\t{\"SwitchStmt.Switch\", Field, 0, \"\"},\n\t\t{\"SwitchStmt.Tag\", Field, 0, \"\"},\n\t\t{\"Typ\", Const, 0, \"\"},\n\t\t{\"TypeAssertExpr\", Type, 0, \"\"},\n\t\t{\"TypeAssertExpr.Lparen\", Field, 2, \"\"},\n\t\t{\"TypeAssertExpr.Rparen\", Field, 2, \"\"},\n\t\t{\"TypeAssertExpr.Type\", Field, 0, \"\"},\n\t\t{\"TypeAssertExpr.X\", Field, 0, \"\"},\n\t\t{\"TypeSpec\", Type, 0, \"\"},\n\t\t{\"TypeSpec.Assign\", Field, 9, \"\"},\n\t\t{\"TypeSpec.Comment\", Field, 0, \"\"},\n\t\t{\"TypeSpec.Doc\", Field, 0, \"\"},\n\t\t{\"TypeSpec.Name\", Field, 0, \"\"},\n\t\t{\"TypeSpec.Type\", Field, 0, \"\"},\n\t\t{\"TypeSpec.TypeParams\", Field, 18, \"\"},\n\t\t{\"TypeSwitchStmt\", Type, 0, \"\"},\n\t\t{\"TypeSwitchStmt.Assign\", Field, 0, \"\"},\n\t\t{\"TypeSwitchStmt.Body\", Field, 0, \"\"},\n\t\t{\"TypeSwitchStmt.Init\", Field, 0, \"\"},\n\t\t{\"TypeSwitchStmt.Switch\", Field, 0, \"\"},\n\t\t{\"UnaryExpr\", Type, 0, \"\"},\n\t\t{\"UnaryExpr.Op\", Field, 0, \"\"},\n\t\t{\"UnaryExpr.OpPos\", Field, 0, \"\"},\n\t\t{\"UnaryExpr.X\", Field, 0, \"\"},\n\t\t{\"Unparen\", Func, 22, \"func(e Expr) Expr\"},\n\t\t{\"ValueSpec\", Type, 0, \"\"},\n\t\t{\"ValueSpec.Comment\", Field, 0, \"\"},\n\t\t{\"ValueSpec.Doc\", Field, 0, \"\"},\n\t\t{\"ValueSpec.Names\", Field, 0, \"\"},\n\t\t{\"ValueSpec.Type\", Field, 0, \"\"},\n\t\t{\"ValueSpec.Values\", Field, 0, \"\"},\n\t\t{\"Var\", Const, 0, \"\"},\n\t\t{\"Visitor\", Type, 0, \"\"},\n\t\t{\"Walk\", Func, 0, \"func(v Visitor, node Node)\"},\n\t},\n\t\"go/build\": {\n\t\t{\"(*Context).Import\", Method, 0, \"\"},\n\t\t{\"(*Context).ImportDir\", Method, 0, \"\"},\n\t\t{\"(*Context).MatchFile\", Method, 2, \"\"},\n\t\t{\"(*Context).SrcDirs\", Method, 0, \"\"},\n\t\t{\"(*MultiplePackageError).Error\", Method, 4, \"\"},\n\t\t{\"(*NoGoError).Error\", Method, 0, \"\"},\n\t\t{\"(*Package).IsCommand\", Method, 0, \"\"},\n\t\t{\"AllowBinary\", Const, 0, \"\"},\n\t\t{\"ArchChar\", Func, 0, \"func(goarch string) (string, error)\"},\n\t\t{\"Context\", Type, 0, \"\"},\n\t\t{\"Context.BuildTags\", Field, 0, \"\"},\n\t\t{\"Context.CgoEnabled\", Field, 0, \"\"},\n\t\t{\"Context.Compiler\", Field, 0, \"\"},\n\t\t{\"Context.Dir\", Field, 14, \"\"},\n\t\t{\"Context.GOARCH\", Field, 0, \"\"},\n\t\t{\"Context.GOOS\", Field, 0, \"\"},\n\t\t{\"Context.GOPATH\", Field, 0, \"\"},\n\t\t{\"Context.GOROOT\", Field, 0, \"\"},\n\t\t{\"Context.HasSubdir\", Field, 0, \"\"},\n\t\t{\"Context.InstallSuffix\", Field, 1, \"\"},\n\t\t{\"Context.IsAbsPath\", Field, 0, \"\"},\n\t\t{\"Context.IsDir\", Field, 0, \"\"},\n\t\t{\"Context.JoinPath\", Field, 0, \"\"},\n\t\t{\"Context.OpenFile\", Field, 0, \"\"},\n\t\t{\"Context.ReadDir\", Field, 0, \"\"},\n\t\t{\"Context.ReleaseTags\", Field, 1, \"\"},\n\t\t{\"Context.SplitPathList\", Field, 0, \"\"},\n\t\t{\"Context.ToolTags\", Field, 17, \"\"},\n\t\t{\"Context.UseAllFiles\", Field, 0, \"\"},\n\t\t{\"Default\", Var, 0, \"\"},\n\t\t{\"Directive\", Type, 21, \"\"},\n\t\t{\"Directive.Pos\", Field, 21, \"\"},\n\t\t{\"Directive.Text\", Field, 21, \"\"},\n\t\t{\"FindOnly\", Const, 0, \"\"},\n\t\t{\"IgnoreVendor\", Const, 6, \"\"},\n\t\t{\"Import\", Func, 0, \"func(path string, srcDir string, mode ImportMode) (*Package, error)\"},\n\t\t{\"ImportComment\", Const, 4, \"\"},\n\t\t{\"ImportDir\", Func, 0, \"func(dir string, mode ImportMode) (*Package, error)\"},\n\t\t{\"ImportMode\", Type, 0, \"\"},\n\t\t{\"IsLocalImport\", Func, 0, \"func(path string) bool\"},\n\t\t{\"MultiplePackageError\", Type, 4, \"\"},\n\t\t{\"MultiplePackageError.Dir\", Field, 4, \"\"},\n\t\t{\"MultiplePackageError.Files\", Field, 4, \"\"},\n\t\t{\"MultiplePackageError.Packages\", Field, 4, \"\"},\n\t\t{\"NoGoError\", Type, 0, \"\"},\n\t\t{\"NoGoError.Dir\", Field, 0, \"\"},\n\t\t{\"Package\", Type, 0, \"\"},\n\t\t{\"Package.AllTags\", Field, 2, \"\"},\n\t\t{\"Package.BinDir\", Field, 0, \"\"},\n\t\t{\"Package.BinaryOnly\", Field, 7, \"\"},\n\t\t{\"Package.CFiles\", Field, 0, \"\"},\n\t\t{\"Package.CXXFiles\", Field, 2, \"\"},\n\t\t{\"Package.CgoCFLAGS\", Field, 0, \"\"},\n\t\t{\"Package.CgoCPPFLAGS\", Field, 2, \"\"},\n\t\t{\"Package.CgoCXXFLAGS\", Field, 2, \"\"},\n\t\t{\"Package.CgoFFLAGS\", Field, 7, \"\"},\n\t\t{\"Package.CgoFiles\", Field, 0, \"\"},\n\t\t{\"Package.CgoLDFLAGS\", Field, 0, \"\"},\n\t\t{\"Package.CgoPkgConfig\", Field, 0, \"\"},\n\t\t{\"Package.ConflictDir\", Field, 2, \"\"},\n\t\t{\"Package.Dir\", Field, 0, \"\"},\n\t\t{\"Package.Directives\", Field, 21, \"\"},\n\t\t{\"Package.Doc\", Field, 0, \"\"},\n\t\t{\"Package.EmbedPatternPos\", Field, 16, \"\"},\n\t\t{\"Package.EmbedPatterns\", Field, 16, \"\"},\n\t\t{\"Package.FFiles\", Field, 7, \"\"},\n\t\t{\"Package.GoFiles\", Field, 0, \"\"},\n\t\t{\"Package.Goroot\", Field, 0, \"\"},\n\t\t{\"Package.HFiles\", Field, 0, \"\"},\n\t\t{\"Package.IgnoredGoFiles\", Field, 1, \"\"},\n\t\t{\"Package.IgnoredOtherFiles\", Field, 16, \"\"},\n\t\t{\"Package.ImportComment\", Field, 4, \"\"},\n\t\t{\"Package.ImportPath\", Field, 0, \"\"},\n\t\t{\"Package.ImportPos\", Field, 0, \"\"},\n\t\t{\"Package.Imports\", Field, 0, \"\"},\n\t\t{\"Package.InvalidGoFiles\", Field, 6, \"\"},\n\t\t{\"Package.MFiles\", Field, 3, \"\"},\n\t\t{\"Package.Name\", Field, 0, \"\"},\n\t\t{\"Package.PkgObj\", Field, 0, \"\"},\n\t\t{\"Package.PkgRoot\", Field, 0, \"\"},\n\t\t{\"Package.PkgTargetRoot\", Field, 5, \"\"},\n\t\t{\"Package.Root\", Field, 0, \"\"},\n\t\t{\"Package.SFiles\", Field, 0, \"\"},\n\t\t{\"Package.SrcRoot\", Field, 0, \"\"},\n\t\t{\"Package.SwigCXXFiles\", Field, 1, \"\"},\n\t\t{\"Package.SwigFiles\", Field, 1, \"\"},\n\t\t{\"Package.SysoFiles\", Field, 0, \"\"},\n\t\t{\"Package.TestDirectives\", Field, 21, \"\"},\n\t\t{\"Package.TestEmbedPatternPos\", Field, 16, \"\"},\n\t\t{\"Package.TestEmbedPatterns\", Field, 16, \"\"},\n\t\t{\"Package.TestGoFiles\", Field, 0, \"\"},\n\t\t{\"Package.TestImportPos\", Field, 0, \"\"},\n\t\t{\"Package.TestImports\", Field, 0, \"\"},\n\t\t{\"Package.XTestDirectives\", Field, 21, \"\"},\n\t\t{\"Package.XTestEmbedPatternPos\", Field, 16, \"\"},\n\t\t{\"Package.XTestEmbedPatterns\", Field, 16, \"\"},\n\t\t{\"Package.XTestGoFiles\", Field, 0, \"\"},\n\t\t{\"Package.XTestImportPos\", Field, 0, \"\"},\n\t\t{\"Package.XTestImports\", Field, 0, \"\"},\n\t\t{\"ToolDir\", Var, 0, \"\"},\n\t},\n\t\"go/build/constraint\": {\n\t\t{\"(*AndExpr).Eval\", Method, 16, \"\"},\n\t\t{\"(*AndExpr).String\", Method, 16, \"\"},\n\t\t{\"(*NotExpr).Eval\", Method, 16, \"\"},\n\t\t{\"(*NotExpr).String\", Method, 16, \"\"},\n\t\t{\"(*OrExpr).Eval\", Method, 16, \"\"},\n\t\t{\"(*OrExpr).String\", Method, 16, \"\"},\n\t\t{\"(*SyntaxError).Error\", Method, 16, \"\"},\n\t\t{\"(*TagExpr).Eval\", Method, 16, \"\"},\n\t\t{\"(*TagExpr).String\", Method, 16, \"\"},\n\t\t{\"(Expr).Eval\", Method, 16, \"\"},\n\t\t{\"(Expr).String\", Method, 16, \"\"},\n\t\t{\"AndExpr\", Type, 16, \"\"},\n\t\t{\"AndExpr.X\", Field, 16, \"\"},\n\t\t{\"AndExpr.Y\", Field, 16, \"\"},\n\t\t{\"GoVersion\", Func, 21, \"func(x Expr) string\"},\n\t\t{\"IsGoBuild\", Func, 16, \"func(line string) bool\"},\n\t\t{\"IsPlusBuild\", Func, 16, \"func(line string) bool\"},\n\t\t{\"NotExpr\", Type, 16, \"\"},\n\t\t{\"NotExpr.X\", Field, 16, \"\"},\n\t\t{\"OrExpr\", Type, 16, \"\"},\n\t\t{\"OrExpr.X\", Field, 16, \"\"},\n\t\t{\"OrExpr.Y\", Field, 16, \"\"},\n\t\t{\"Parse\", Func, 16, \"func(line string) (Expr, error)\"},\n\t\t{\"PlusBuildLines\", Func, 16, \"func(x Expr) ([]string, error)\"},\n\t\t{\"SyntaxError\", Type, 16, \"\"},\n\t\t{\"SyntaxError.Err\", Field, 16, \"\"},\n\t\t{\"SyntaxError.Offset\", Field, 16, \"\"},\n\t\t{\"TagExpr\", Type, 16, \"\"},\n\t\t{\"TagExpr.Tag\", Field, 16, \"\"},\n\t},\n\t\"go/constant\": {\n\t\t{\"(Kind).String\", Method, 18, \"\"},\n\t\t{\"(Value).ExactString\", Method, 6, \"\"},\n\t\t{\"(Value).Kind\", Method, 5, \"\"},\n\t\t{\"(Value).String\", Method, 5, \"\"},\n\t\t{\"BinaryOp\", Func, 5, \"func(x_ Value, op token.Token, y_ Value) Value\"},\n\t\t{\"BitLen\", Func, 5, \"func(x Value) int\"},\n\t\t{\"Bool\", Const, 5, \"\"},\n\t\t{\"BoolVal\", Func, 5, \"func(x Value) bool\"},\n\t\t{\"Bytes\", Func, 5, \"func(x Value) []byte\"},\n\t\t{\"Compare\", Func, 5, \"func(x_ Value, op token.Token, y_ Value) bool\"},\n\t\t{\"Complex\", Const, 5, \"\"},\n\t\t{\"Denom\", Func, 5, \"func(x Value) Value\"},\n\t\t{\"Float\", Const, 5, \"\"},\n\t\t{\"Float32Val\", Func, 5, \"func(x Value) (float32, bool)\"},\n\t\t{\"Float64Val\", Func, 5, \"func(x Value) (float64, bool)\"},\n\t\t{\"Imag\", Func, 5, \"func(x Value) Value\"},\n\t\t{\"Int\", Const, 5, \"\"},\n\t\t{\"Int64Val\", Func, 5, \"func(x Value) (int64, bool)\"},\n\t\t{\"Kind\", Type, 5, \"\"},\n\t\t{\"Make\", Func, 13, \"func(x any) Value\"},\n\t\t{\"MakeBool\", Func, 5, \"func(b bool) Value\"},\n\t\t{\"MakeFloat64\", Func, 5, \"func(x float64) Value\"},\n\t\t{\"MakeFromBytes\", Func, 5, \"func(bytes []byte) Value\"},\n\t\t{\"MakeFromLiteral\", Func, 5, \"func(lit string, tok token.Token, zero uint) Value\"},\n\t\t{\"MakeImag\", Func, 5, \"func(x Value) Value\"},\n\t\t{\"MakeInt64\", Func, 5, \"func(x int64) Value\"},\n\t\t{\"MakeString\", Func, 5, \"func(s string) Value\"},\n\t\t{\"MakeUint64\", Func, 5, \"func(x uint64) Value\"},\n\t\t{\"MakeUnknown\", Func, 5, \"func() Value\"},\n\t\t{\"Num\", Func, 5, \"func(x Value) Value\"},\n\t\t{\"Real\", Func, 5, \"func(x Value) Value\"},\n\t\t{\"Shift\", Func, 5, \"func(x Value, op token.Token, s uint) Value\"},\n\t\t{\"Sign\", Func, 5, \"func(x Value) int\"},\n\t\t{\"String\", Const, 5, \"\"},\n\t\t{\"StringVal\", Func, 5, \"func(x Value) string\"},\n\t\t{\"ToComplex\", Func, 6, \"func(x Value) Value\"},\n\t\t{\"ToFloat\", Func, 6, \"func(x Value) Value\"},\n\t\t{\"ToInt\", Func, 6, \"func(x Value) Value\"},\n\t\t{\"Uint64Val\", Func, 5, \"func(x Value) (uint64, bool)\"},\n\t\t{\"UnaryOp\", Func, 5, \"func(op token.Token, y Value, prec uint) Value\"},\n\t\t{\"Unknown\", Const, 5, \"\"},\n\t\t{\"Val\", Func, 13, \"func(x Value) any\"},\n\t},\n\t\"go/doc\": {\n\t\t{\"(*Package).Filter\", Method, 0, \"\"},\n\t\t{\"(*Package).HTML\", Method, 19, \"\"},\n\t\t{\"(*Package).Markdown\", Method, 19, \"\"},\n\t\t{\"(*Package).Parser\", Method, 19, \"\"},\n\t\t{\"(*Package).Printer\", Method, 19, \"\"},\n\t\t{\"(*Package).Synopsis\", Method, 19, \"\"},\n\t\t{\"(*Package).Text\", Method, 19, \"\"},\n\t\t{\"AllDecls\", Const, 0, \"\"},\n\t\t{\"AllMethods\", Const, 0, \"\"},\n\t\t{\"Example\", Type, 0, \"\"},\n\t\t{\"Example.Code\", Field, 0, \"\"},\n\t\t{\"Example.Comments\", Field, 0, \"\"},\n\t\t{\"Example.Doc\", Field, 0, \"\"},\n\t\t{\"Example.EmptyOutput\", Field, 1, \"\"},\n\t\t{\"Example.Name\", Field, 0, \"\"},\n\t\t{\"Example.Order\", Field, 1, \"\"},\n\t\t{\"Example.Output\", Field, 0, \"\"},\n\t\t{\"Example.Play\", Field, 1, \"\"},\n\t\t{\"Example.Suffix\", Field, 14, \"\"},\n\t\t{\"Example.Unordered\", Field, 7, \"\"},\n\t\t{\"Examples\", Func, 0, \"func(testFiles ...*ast.File) []*Example\"},\n\t\t{\"Filter\", Type, 0, \"\"},\n\t\t{\"Func\", Type, 0, \"\"},\n\t\t{\"Func.Decl\", Field, 0, \"\"},\n\t\t{\"Func.Doc\", Field, 0, \"\"},\n\t\t{\"Func.Examples\", Field, 14, \"\"},\n\t\t{\"Func.Level\", Field, 0, \"\"},\n\t\t{\"Func.Name\", Field, 0, \"\"},\n\t\t{\"Func.Orig\", Field, 0, \"\"},\n\t\t{\"Func.Recv\", Field, 0, \"\"},\n\t\t{\"IllegalPrefixes\", Var, 1, \"\"},\n\t\t{\"IsPredeclared\", Func, 8, \"func(s string) bool\"},\n\t\t{\"Mode\", Type, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func(pkg *ast.Package, importPath string, mode Mode) *Package\"},\n\t\t{\"NewFromFiles\", Func, 14, \"func(fset *token.FileSet, files []*ast.File, importPath string, opts ...any) (*Package, error)\"},\n\t\t{\"Note\", Type, 1, \"\"},\n\t\t{\"Note.Body\", Field, 1, \"\"},\n\t\t{\"Note.End\", Field, 1, \"\"},\n\t\t{\"Note.Pos\", Field, 1, \"\"},\n\t\t{\"Note.UID\", Field, 1, \"\"},\n\t\t{\"Package\", Type, 0, \"\"},\n\t\t{\"Package.Bugs\", Field, 0, \"\"},\n\t\t{\"Package.Consts\", Field, 0, \"\"},\n\t\t{\"Package.Doc\", Field, 0, \"\"},\n\t\t{\"Package.Examples\", Field, 14, \"\"},\n\t\t{\"Package.Filenames\", Field, 0, \"\"},\n\t\t{\"Package.Funcs\", Field, 0, \"\"},\n\t\t{\"Package.ImportPath\", Field, 0, \"\"},\n\t\t{\"Package.Imports\", Field, 0, \"\"},\n\t\t{\"Package.Name\", Field, 0, \"\"},\n\t\t{\"Package.Notes\", Field, 1, \"\"},\n\t\t{\"Package.Types\", Field, 0, \"\"},\n\t\t{\"Package.Vars\", Field, 0, \"\"},\n\t\t{\"PreserveAST\", Const, 12, \"\"},\n\t\t{\"Synopsis\", Func, 0, \"func(text string) string\"},\n\t\t{\"ToHTML\", Func, 0, \"func(w io.Writer, text string, words map[string]string)\"},\n\t\t{\"ToText\", Func, 0, \"func(w io.Writer, text string, prefix string, codePrefix string, width int)\"},\n\t\t{\"Type\", Type, 0, \"\"},\n\t\t{\"Type.Consts\", Field, 0, \"\"},\n\t\t{\"Type.Decl\", Field, 0, \"\"},\n\t\t{\"Type.Doc\", Field, 0, \"\"},\n\t\t{\"Type.Examples\", Field, 14, \"\"},\n\t\t{\"Type.Funcs\", Field, 0, \"\"},\n\t\t{\"Type.Methods\", Field, 0, \"\"},\n\t\t{\"Type.Name\", Field, 0, \"\"},\n\t\t{\"Type.Vars\", Field, 0, \"\"},\n\t\t{\"Value\", Type, 0, \"\"},\n\t\t{\"Value.Decl\", Field, 0, \"\"},\n\t\t{\"Value.Doc\", Field, 0, \"\"},\n\t\t{\"Value.Names\", Field, 0, \"\"},\n\t},\n\t\"go/doc/comment\": {\n\t\t{\"(*DocLink).DefaultURL\", Method, 19, \"\"},\n\t\t{\"(*Heading).DefaultID\", Method, 19, \"\"},\n\t\t{\"(*List).BlankBefore\", Method, 19, \"\"},\n\t\t{\"(*List).BlankBetween\", Method, 19, \"\"},\n\t\t{\"(*Parser).Parse\", Method, 19, \"\"},\n\t\t{\"(*Printer).Comment\", Method, 19, \"\"},\n\t\t{\"(*Printer).HTML\", Method, 19, \"\"},\n\t\t{\"(*Printer).Markdown\", Method, 19, \"\"},\n\t\t{\"(*Printer).Text\", Method, 19, \"\"},\n\t\t{\"Code\", Type, 19, \"\"},\n\t\t{\"Code.Text\", Field, 19, \"\"},\n\t\t{\"DefaultLookupPackage\", Func, 19, \"func(name string) (importPath string, ok bool)\"},\n\t\t{\"Doc\", Type, 19, \"\"},\n\t\t{\"Doc.Content\", Field, 19, \"\"},\n\t\t{\"Doc.Links\", Field, 19, \"\"},\n\t\t{\"DocLink\", Type, 19, \"\"},\n\t\t{\"DocLink.ImportPath\", Field, 19, \"\"},\n\t\t{\"DocLink.Name\", Field, 19, \"\"},\n\t\t{\"DocLink.Recv\", Field, 19, \"\"},\n\t\t{\"DocLink.Text\", Field, 19, \"\"},\n\t\t{\"Heading\", Type, 19, \"\"},\n\t\t{\"Heading.Text\", Field, 19, \"\"},\n\t\t{\"Italic\", Type, 19, \"\"},\n\t\t{\"Link\", Type, 19, \"\"},\n\t\t{\"Link.Auto\", Field, 19, \"\"},\n\t\t{\"Link.Text\", Field, 19, \"\"},\n\t\t{\"Link.URL\", Field, 19, \"\"},\n\t\t{\"LinkDef\", Type, 19, \"\"},\n\t\t{\"LinkDef.Text\", Field, 19, \"\"},\n\t\t{\"LinkDef.URL\", Field, 19, \"\"},\n\t\t{\"LinkDef.Used\", Field, 19, \"\"},\n\t\t{\"List\", Type, 19, \"\"},\n\t\t{\"List.ForceBlankBefore\", Field, 19, \"\"},\n\t\t{\"List.ForceBlankBetween\", Field, 19, \"\"},\n\t\t{\"List.Items\", Field, 19, \"\"},\n\t\t{\"ListItem\", Type, 19, \"\"},\n\t\t{\"ListItem.Content\", Field, 19, \"\"},\n\t\t{\"ListItem.Number\", Field, 19, \"\"},\n\t\t{\"Paragraph\", Type, 19, \"\"},\n\t\t{\"Paragraph.Text\", Field, 19, \"\"},\n\t\t{\"Parser\", Type, 19, \"\"},\n\t\t{\"Parser.LookupPackage\", Field, 19, \"\"},\n\t\t{\"Parser.LookupSym\", Field, 19, \"\"},\n\t\t{\"Parser.Words\", Field, 19, \"\"},\n\t\t{\"Plain\", Type, 19, \"\"},\n\t\t{\"Printer\", Type, 19, \"\"},\n\t\t{\"Printer.DocLinkBaseURL\", Field, 19, \"\"},\n\t\t{\"Printer.DocLinkURL\", Field, 19, \"\"},\n\t\t{\"Printer.HeadingID\", Field, 19, \"\"},\n\t\t{\"Printer.HeadingLevel\", Field, 19, \"\"},\n\t\t{\"Printer.TextCodePrefix\", Field, 19, \"\"},\n\t\t{\"Printer.TextPrefix\", Field, 19, \"\"},\n\t\t{\"Printer.TextWidth\", Field, 19, \"\"},\n\t},\n\t\"go/format\": {\n\t\t{\"Node\", Func, 1, \"func(dst io.Writer, fset *token.FileSet, node any) error\"},\n\t\t{\"Source\", Func, 1, \"func(src []byte) ([]byte, error)\"},\n\t},\n\t\"go/importer\": {\n\t\t{\"Default\", Func, 5, \"func() types.Importer\"},\n\t\t{\"For\", Func, 5, \"func(compiler string, lookup Lookup) types.Importer\"},\n\t\t{\"ForCompiler\", Func, 12, \"func(fset *token.FileSet, compiler string, lookup Lookup) types.Importer\"},\n\t\t{\"Lookup\", Type, 5, \"\"},\n\t},\n\t\"go/parser\": {\n\t\t{\"AllErrors\", Const, 1, \"\"},\n\t\t{\"DeclarationErrors\", Const, 0, \"\"},\n\t\t{\"ImportsOnly\", Const, 0, \"\"},\n\t\t{\"Mode\", Type, 0, \"\"},\n\t\t{\"PackageClauseOnly\", Const, 0, \"\"},\n\t\t{\"ParseComments\", Const, 0, \"\"},\n\t\t{\"ParseDir\", Func, 0, \"func(fset *token.FileSet, path string, filter func(fs.FileInfo) bool, mode Mode) (pkgs map[string]*ast.Package, first error)\"},\n\t\t{\"ParseExpr\", Func, 0, \"func(x string) (ast.Expr, error)\"},\n\t\t{\"ParseExprFrom\", Func, 5, \"func(fset *token.FileSet, filename string, src any, mode Mode) (expr ast.Expr, err error)\"},\n\t\t{\"ParseFile\", Func, 0, \"func(fset *token.FileSet, filename string, src any, mode Mode) (f *ast.File, err error)\"},\n\t\t{\"SkipObjectResolution\", Const, 17, \"\"},\n\t\t{\"SpuriousErrors\", Const, 0, \"\"},\n\t\t{\"Trace\", Const, 0, \"\"},\n\t},\n\t\"go/printer\": {\n\t\t{\"(*Config).Fprint\", Method, 0, \"\"},\n\t\t{\"CommentedNode\", Type, 0, \"\"},\n\t\t{\"CommentedNode.Comments\", Field, 0, \"\"},\n\t\t{\"CommentedNode.Node\", Field, 0, \"\"},\n\t\t{\"Config\", Type, 0, \"\"},\n\t\t{\"Config.Indent\", Field, 1, \"\"},\n\t\t{\"Config.Mode\", Field, 0, \"\"},\n\t\t{\"Config.Tabwidth\", Field, 0, \"\"},\n\t\t{\"Fprint\", Func, 0, \"func(output io.Writer, fset *token.FileSet, node any) error\"},\n\t\t{\"Mode\", Type, 0, \"\"},\n\t\t{\"RawFormat\", Const, 0, \"\"},\n\t\t{\"SourcePos\", Const, 0, \"\"},\n\t\t{\"TabIndent\", Const, 0, \"\"},\n\t\t{\"UseSpaces\", Const, 0, \"\"},\n\t},\n\t\"go/scanner\": {\n\t\t{\"(*ErrorList).Add\", Method, 0, \"\"},\n\t\t{\"(*ErrorList).RemoveMultiples\", Method, 0, \"\"},\n\t\t{\"(*ErrorList).Reset\", Method, 0, \"\"},\n\t\t{\"(*Scanner).Init\", Method, 0, \"\"},\n\t\t{\"(*Scanner).Scan\", Method, 0, \"\"},\n\t\t{\"(Error).Error\", Method, 0, \"\"},\n\t\t{\"(ErrorList).Err\", Method, 0, \"\"},\n\t\t{\"(ErrorList).Error\", Method, 0, \"\"},\n\t\t{\"(ErrorList).Len\", Method, 0, \"\"},\n\t\t{\"(ErrorList).Less\", Method, 0, \"\"},\n\t\t{\"(ErrorList).Sort\", Method, 0, \"\"},\n\t\t{\"(ErrorList).Swap\", Method, 0, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Error.Msg\", Field, 0, \"\"},\n\t\t{\"Error.Pos\", Field, 0, \"\"},\n\t\t{\"ErrorHandler\", Type, 0, \"\"},\n\t\t{\"ErrorList\", Type, 0, \"\"},\n\t\t{\"Mode\", Type, 0, \"\"},\n\t\t{\"PrintError\", Func, 0, \"func(w io.Writer, err error)\"},\n\t\t{\"ScanComments\", Const, 0, \"\"},\n\t\t{\"Scanner\", Type, 0, \"\"},\n\t\t{\"Scanner.ErrorCount\", Field, 0, \"\"},\n\t},\n\t\"go/token\": {\n\t\t{\"(*File).AddLine\", Method, 0, \"\"},\n\t\t{\"(*File).AddLineColumnInfo\", Method, 11, \"\"},\n\t\t{\"(*File).AddLineInfo\", Method, 0, \"\"},\n\t\t{\"(*File).Base\", Method, 0, \"\"},\n\t\t{\"(*File).End\", Method, 26, \"\"},\n\t\t{\"(*File).Line\", Method, 0, \"\"},\n\t\t{\"(*File).LineCount\", Method, 0, \"\"},\n\t\t{\"(*File).LineStart\", Method, 12, \"\"},\n\t\t{\"(*File).Lines\", Method, 21, \"\"},\n\t\t{\"(*File).MergeLine\", Method, 2, \"\"},\n\t\t{\"(*File).Name\", Method, 0, \"\"},\n\t\t{\"(*File).Offset\", Method, 0, \"\"},\n\t\t{\"(*File).Pos\", Method, 0, \"\"},\n\t\t{\"(*File).Position\", Method, 0, \"\"},\n\t\t{\"(*File).PositionFor\", Method, 4, \"\"},\n\t\t{\"(*File).SetLines\", Method, 0, \"\"},\n\t\t{\"(*File).SetLinesForContent\", Method, 0, \"\"},\n\t\t{\"(*File).Size\", Method, 0, \"\"},\n\t\t{\"(*FileSet).AddExistingFiles\", Method, 25, \"\"},\n\t\t{\"(*FileSet).AddFile\", Method, 0, \"\"},\n\t\t{\"(*FileSet).Base\", Method, 0, \"\"},\n\t\t{\"(*FileSet).File\", Method, 0, \"\"},\n\t\t{\"(*FileSet).Iterate\", Method, 0, \"\"},\n\t\t{\"(*FileSet).Position\", Method, 0, \"\"},\n\t\t{\"(*FileSet).PositionFor\", Method, 4, \"\"},\n\t\t{\"(*FileSet).Read\", Method, 0, \"\"},\n\t\t{\"(*FileSet).RemoveFile\", Method, 20, \"\"},\n\t\t{\"(*FileSet).Write\", Method, 0, \"\"},\n\t\t{\"(*Position).IsValid\", Method, 0, \"\"},\n\t\t{\"(Pos).IsValid\", Method, 0, \"\"},\n\t\t{\"(Position).String\", Method, 0, \"\"},\n\t\t{\"(Token).IsKeyword\", Method, 0, \"\"},\n\t\t{\"(Token).IsLiteral\", Method, 0, \"\"},\n\t\t{\"(Token).IsOperator\", Method, 0, \"\"},\n\t\t{\"(Token).Precedence\", Method, 0, \"\"},\n\t\t{\"(Token).String\", Method, 0, \"\"},\n\t\t{\"ADD\", Const, 0, \"\"},\n\t\t{\"ADD_ASSIGN\", Const, 0, \"\"},\n\t\t{\"AND\", Const, 0, \"\"},\n\t\t{\"AND_ASSIGN\", Const, 0, \"\"},\n\t\t{\"AND_NOT\", Const, 0, \"\"},\n\t\t{\"AND_NOT_ASSIGN\", Const, 0, \"\"},\n\t\t{\"ARROW\", Const, 0, \"\"},\n\t\t{\"ASSIGN\", Const, 0, \"\"},\n\t\t{\"BREAK\", Const, 0, \"\"},\n\t\t{\"CASE\", Const, 0, \"\"},\n\t\t{\"CHAN\", Const, 0, \"\"},\n\t\t{\"CHAR\", Const, 0, \"\"},\n\t\t{\"COLON\", Const, 0, \"\"},\n\t\t{\"COMMA\", Const, 0, \"\"},\n\t\t{\"COMMENT\", Const, 0, \"\"},\n\t\t{\"CONST\", Const, 0, \"\"},\n\t\t{\"CONTINUE\", Const, 0, \"\"},\n\t\t{\"DEC\", Const, 0, \"\"},\n\t\t{\"DEFAULT\", Const, 0, \"\"},\n\t\t{\"DEFER\", Const, 0, \"\"},\n\t\t{\"DEFINE\", Const, 0, \"\"},\n\t\t{\"ELLIPSIS\", Const, 0, \"\"},\n\t\t{\"ELSE\", Const, 0, \"\"},\n\t\t{\"EOF\", Const, 0, \"\"},\n\t\t{\"EQL\", Const, 0, \"\"},\n\t\t{\"FALLTHROUGH\", Const, 0, \"\"},\n\t\t{\"FLOAT\", Const, 0, \"\"},\n\t\t{\"FOR\", Const, 0, \"\"},\n\t\t{\"FUNC\", Const, 0, \"\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"FileSet\", Type, 0, \"\"},\n\t\t{\"GEQ\", Const, 0, \"\"},\n\t\t{\"GO\", Const, 0, \"\"},\n\t\t{\"GOTO\", Const, 0, \"\"},\n\t\t{\"GTR\", Const, 0, \"\"},\n\t\t{\"HighestPrec\", Const, 0, \"\"},\n\t\t{\"IDENT\", Const, 0, \"\"},\n\t\t{\"IF\", Const, 0, \"\"},\n\t\t{\"ILLEGAL\", Const, 0, \"\"},\n\t\t{\"IMAG\", Const, 0, \"\"},\n\t\t{\"IMPORT\", Const, 0, \"\"},\n\t\t{\"INC\", Const, 0, \"\"},\n\t\t{\"INT\", Const, 0, \"\"},\n\t\t{\"INTERFACE\", Const, 0, \"\"},\n\t\t{\"IsExported\", Func, 13, \"func(name string) bool\"},\n\t\t{\"IsIdentifier\", Func, 13, \"func(name string) bool\"},\n\t\t{\"IsKeyword\", Func, 13, \"func(name string) bool\"},\n\t\t{\"LAND\", Const, 0, \"\"},\n\t\t{\"LBRACE\", Const, 0, \"\"},\n\t\t{\"LBRACK\", Const, 0, \"\"},\n\t\t{\"LEQ\", Const, 0, \"\"},\n\t\t{\"LOR\", Const, 0, \"\"},\n\t\t{\"LPAREN\", Const, 0, \"\"},\n\t\t{\"LSS\", Const, 0, \"\"},\n\t\t{\"Lookup\", Func, 0, \"func(ident string) Token\"},\n\t\t{\"LowestPrec\", Const, 0, \"\"},\n\t\t{\"MAP\", Const, 0, \"\"},\n\t\t{\"MUL\", Const, 0, \"\"},\n\t\t{\"MUL_ASSIGN\", Const, 0, \"\"},\n\t\t{\"NEQ\", Const, 0, \"\"},\n\t\t{\"NOT\", Const, 0, \"\"},\n\t\t{\"NewFileSet\", Func, 0, \"func() *FileSet\"},\n\t\t{\"NoPos\", Const, 0, \"\"},\n\t\t{\"OR\", Const, 0, \"\"},\n\t\t{\"OR_ASSIGN\", Const, 0, \"\"},\n\t\t{\"PACKAGE\", Const, 0, \"\"},\n\t\t{\"PERIOD\", Const, 0, \"\"},\n\t\t{\"Pos\", Type, 0, \"\"},\n\t\t{\"Position\", Type, 0, \"\"},\n\t\t{\"Position.Column\", Field, 0, \"\"},\n\t\t{\"Position.Filename\", Field, 0, \"\"},\n\t\t{\"Position.Line\", Field, 0, \"\"},\n\t\t{\"Position.Offset\", Field, 0, \"\"},\n\t\t{\"QUO\", Const, 0, \"\"},\n\t\t{\"QUO_ASSIGN\", Const, 0, \"\"},\n\t\t{\"RANGE\", Const, 0, \"\"},\n\t\t{\"RBRACE\", Const, 0, \"\"},\n\t\t{\"RBRACK\", Const, 0, \"\"},\n\t\t{\"REM\", Const, 0, \"\"},\n\t\t{\"REM_ASSIGN\", Const, 0, \"\"},\n\t\t{\"RETURN\", Const, 0, \"\"},\n\t\t{\"RPAREN\", Const, 0, \"\"},\n\t\t{\"SELECT\", Const, 0, \"\"},\n\t\t{\"SEMICOLON\", Const, 0, \"\"},\n\t\t{\"SHL\", Const, 0, \"\"},\n\t\t{\"SHL_ASSIGN\", Const, 0, \"\"},\n\t\t{\"SHR\", Const, 0, \"\"},\n\t\t{\"SHR_ASSIGN\", Const, 0, \"\"},\n\t\t{\"STRING\", Const, 0, \"\"},\n\t\t{\"STRUCT\", Const, 0, \"\"},\n\t\t{\"SUB\", Const, 0, \"\"},\n\t\t{\"SUB_ASSIGN\", Const, 0, \"\"},\n\t\t{\"SWITCH\", Const, 0, \"\"},\n\t\t{\"TILDE\", Const, 18, \"\"},\n\t\t{\"TYPE\", Const, 0, \"\"},\n\t\t{\"Token\", Type, 0, \"\"},\n\t\t{\"UnaryPrec\", Const, 0, \"\"},\n\t\t{\"VAR\", Const, 0, \"\"},\n\t\t{\"XOR\", Const, 0, \"\"},\n\t\t{\"XOR_ASSIGN\", Const, 0, \"\"},\n\t},\n\t\"go/types\": {\n\t\t{\"(*Alias).Obj\", Method, 22, \"\"},\n\t\t{\"(*Alias).Origin\", Method, 23, \"\"},\n\t\t{\"(*Alias).Rhs\", Method, 23, \"\"},\n\t\t{\"(*Alias).SetTypeParams\", Method, 23, \"\"},\n\t\t{\"(*Alias).String\", Method, 22, \"\"},\n\t\t{\"(*Alias).TypeArgs\", Method, 23, \"\"},\n\t\t{\"(*Alias).TypeParams\", Method, 23, \"\"},\n\t\t{\"(*Alias).Underlying\", Method, 22, \"\"},\n\t\t{\"(*ArgumentError).Error\", Method, 18, \"\"},\n\t\t{\"(*ArgumentError).Unwrap\", Method, 18, \"\"},\n\t\t{\"(*Array).Elem\", Method, 5, \"\"},\n\t\t{\"(*Array).Len\", Method, 5, \"\"},\n\t\t{\"(*Array).String\", Method, 5, \"\"},\n\t\t{\"(*Array).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Basic).Info\", Method, 5, \"\"},\n\t\t{\"(*Basic).Kind\", Method, 5, \"\"},\n\t\t{\"(*Basic).Name\", Method, 5, \"\"},\n\t\t{\"(*Basic).String\", Method, 5, \"\"},\n\t\t{\"(*Basic).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Builtin).Exported\", Method, 5, \"\"},\n\t\t{\"(*Builtin).Id\", Method, 5, \"\"},\n\t\t{\"(*Builtin).Name\", Method, 5, \"\"},\n\t\t{\"(*Builtin).Parent\", Method, 5, \"\"},\n\t\t{\"(*Builtin).Pkg\", Method, 5, \"\"},\n\t\t{\"(*Builtin).Pos\", Method, 5, \"\"},\n\t\t{\"(*Builtin).String\", Method, 5, \"\"},\n\t\t{\"(*Builtin).Type\", Method, 5, \"\"},\n\t\t{\"(*Chan).Dir\", Method, 5, \"\"},\n\t\t{\"(*Chan).Elem\", Method, 5, \"\"},\n\t\t{\"(*Chan).String\", Method, 5, \"\"},\n\t\t{\"(*Chan).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Checker).Files\", Method, 5, \"\"},\n\t\t{\"(*Config).Check\", Method, 5, \"\"},\n\t\t{\"(*Const).Exported\", Method, 5, \"\"},\n\t\t{\"(*Const).Id\", Method, 5, \"\"},\n\t\t{\"(*Const).Name\", Method, 5, \"\"},\n\t\t{\"(*Const).Parent\", Method, 5, \"\"},\n\t\t{\"(*Const).Pkg\", Method, 5, \"\"},\n\t\t{\"(*Const).Pos\", Method, 5, \"\"},\n\t\t{\"(*Const).String\", Method, 5, \"\"},\n\t\t{\"(*Const).Type\", Method, 5, \"\"},\n\t\t{\"(*Const).Val\", Method, 5, \"\"},\n\t\t{\"(*Func).Exported\", Method, 5, \"\"},\n\t\t{\"(*Func).FullName\", Method, 5, \"\"},\n\t\t{\"(*Func).Id\", Method, 5, \"\"},\n\t\t{\"(*Func).Name\", Method, 5, \"\"},\n\t\t{\"(*Func).Origin\", Method, 19, \"\"},\n\t\t{\"(*Func).Parent\", Method, 5, \"\"},\n\t\t{\"(*Func).Pkg\", Method, 5, \"\"},\n\t\t{\"(*Func).Pos\", Method, 5, \"\"},\n\t\t{\"(*Func).Scope\", Method, 5, \"\"},\n\t\t{\"(*Func).Signature\", Method, 23, \"\"},\n\t\t{\"(*Func).String\", Method, 5, \"\"},\n\t\t{\"(*Func).Type\", Method, 5, \"\"},\n\t\t{\"(*Info).ObjectOf\", Method, 5, \"\"},\n\t\t{\"(*Info).PkgNameOf\", Method, 22, \"\"},\n\t\t{\"(*Info).TypeOf\", Method, 5, \"\"},\n\t\t{\"(*Initializer).String\", Method, 5, \"\"},\n\t\t{\"(*Interface).Complete\", Method, 5, \"\"},\n\t\t{\"(*Interface).Embedded\", Method, 5, \"\"},\n\t\t{\"(*Interface).EmbeddedType\", Method, 11, \"\"},\n\t\t{\"(*Interface).EmbeddedTypes\", Method, 24, \"\"},\n\t\t{\"(*Interface).Empty\", Method, 5, \"\"},\n\t\t{\"(*Interface).ExplicitMethod\", Method, 5, \"\"},\n\t\t{\"(*Interface).ExplicitMethods\", Method, 24, \"\"},\n\t\t{\"(*Interface).IsComparable\", Method, 18, \"\"},\n\t\t{\"(*Interface).IsImplicit\", Method, 18, \"\"},\n\t\t{\"(*Interface).IsMethodSet\", Method, 18, \"\"},\n\t\t{\"(*Interface).MarkImplicit\", Method, 18, \"\"},\n\t\t{\"(*Interface).Method\", Method, 5, \"\"},\n\t\t{\"(*Interface).Methods\", Method, 24, \"\"},\n\t\t{\"(*Interface).NumEmbeddeds\", Method, 5, \"\"},\n\t\t{\"(*Interface).NumExplicitMethods\", Method, 5, \"\"},\n\t\t{\"(*Interface).NumMethods\", Method, 5, \"\"},\n\t\t{\"(*Interface).String\", Method, 5, \"\"},\n\t\t{\"(*Interface).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Label).Exported\", Method, 5, \"\"},\n\t\t{\"(*Label).Id\", Method, 5, \"\"},\n\t\t{\"(*Label).Name\", Method, 5, \"\"},\n\t\t{\"(*Label).Parent\", Method, 5, \"\"},\n\t\t{\"(*Label).Pkg\", Method, 5, \"\"},\n\t\t{\"(*Label).Pos\", Method, 5, \"\"},\n\t\t{\"(*Label).String\", Method, 5, \"\"},\n\t\t{\"(*Label).Type\", Method, 5, \"\"},\n\t\t{\"(*Map).Elem\", Method, 5, \"\"},\n\t\t{\"(*Map).Key\", Method, 5, \"\"},\n\t\t{\"(*Map).String\", Method, 5, \"\"},\n\t\t{\"(*Map).Underlying\", Method, 5, \"\"},\n\t\t{\"(*MethodSet).At\", Method, 5, \"\"},\n\t\t{\"(*MethodSet).Len\", Method, 5, \"\"},\n\t\t{\"(*MethodSet).Lookup\", Method, 5, \"\"},\n\t\t{\"(*MethodSet).Methods\", Method, 24, \"\"},\n\t\t{\"(*MethodSet).String\", Method, 5, \"\"},\n\t\t{\"(*Named).AddMethod\", Method, 5, \"\"},\n\t\t{\"(*Named).Method\", Method, 5, \"\"},\n\t\t{\"(*Named).Methods\", Method, 24, \"\"},\n\t\t{\"(*Named).NumMethods\", Method, 5, \"\"},\n\t\t{\"(*Named).Obj\", Method, 5, \"\"},\n\t\t{\"(*Named).Origin\", Method, 18, \"\"},\n\t\t{\"(*Named).SetTypeParams\", Method, 18, \"\"},\n\t\t{\"(*Named).SetUnderlying\", Method, 5, \"\"},\n\t\t{\"(*Named).String\", Method, 5, \"\"},\n\t\t{\"(*Named).TypeArgs\", Method, 18, \"\"},\n\t\t{\"(*Named).TypeParams\", Method, 18, \"\"},\n\t\t{\"(*Named).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Nil).Exported\", Method, 5, \"\"},\n\t\t{\"(*Nil).Id\", Method, 5, \"\"},\n\t\t{\"(*Nil).Name\", Method, 5, \"\"},\n\t\t{\"(*Nil).Parent\", Method, 5, \"\"},\n\t\t{\"(*Nil).Pkg\", Method, 5, \"\"},\n\t\t{\"(*Nil).Pos\", Method, 5, \"\"},\n\t\t{\"(*Nil).String\", Method, 5, \"\"},\n\t\t{\"(*Nil).Type\", Method, 5, \"\"},\n\t\t{\"(*Package).Complete\", Method, 5, \"\"},\n\t\t{\"(*Package).GoVersion\", Method, 21, \"\"},\n\t\t{\"(*Package).Imports\", Method, 5, \"\"},\n\t\t{\"(*Package).MarkComplete\", Method, 5, \"\"},\n\t\t{\"(*Package).Name\", Method, 5, \"\"},\n\t\t{\"(*Package).Path\", Method, 5, \"\"},\n\t\t{\"(*Package).Scope\", Method, 5, \"\"},\n\t\t{\"(*Package).SetImports\", Method, 5, \"\"},\n\t\t{\"(*Package).SetName\", Method, 6, \"\"},\n\t\t{\"(*Package).String\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Exported\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Id\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Imported\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Name\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Parent\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Pkg\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Pos\", Method, 5, \"\"},\n\t\t{\"(*PkgName).String\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Type\", Method, 5, \"\"},\n\t\t{\"(*Pointer).Elem\", Method, 5, \"\"},\n\t\t{\"(*Pointer).String\", Method, 5, \"\"},\n\t\t{\"(*Pointer).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Scope).Child\", Method, 5, \"\"},\n\t\t{\"(*Scope).Children\", Method, 24, \"\"},\n\t\t{\"(*Scope).Contains\", Method, 5, \"\"},\n\t\t{\"(*Scope).End\", Method, 5, \"\"},\n\t\t{\"(*Scope).Innermost\", Method, 5, \"\"},\n\t\t{\"(*Scope).Insert\", Method, 5, \"\"},\n\t\t{\"(*Scope).Len\", Method, 5, \"\"},\n\t\t{\"(*Scope).Lookup\", Method, 5, \"\"},\n\t\t{\"(*Scope).LookupParent\", Method, 5, \"\"},\n\t\t{\"(*Scope).Names\", Method, 5, \"\"},\n\t\t{\"(*Scope).NumChildren\", Method, 5, \"\"},\n\t\t{\"(*Scope).Parent\", Method, 5, \"\"},\n\t\t{\"(*Scope).Pos\", Method, 5, \"\"},\n\t\t{\"(*Scope).String\", Method, 5, \"\"},\n\t\t{\"(*Scope).WriteTo\", Method, 5, \"\"},\n\t\t{\"(*Selection).Index\", Method, 5, \"\"},\n\t\t{\"(*Selection).Indirect\", Method, 5, \"\"},\n\t\t{\"(*Selection).Kind\", Method, 5, \"\"},\n\t\t{\"(*Selection).Obj\", Method, 5, \"\"},\n\t\t{\"(*Selection).Recv\", Method, 5, \"\"},\n\t\t{\"(*Selection).String\", Method, 5, \"\"},\n\t\t{\"(*Selection).Type\", Method, 5, \"\"},\n\t\t{\"(*Signature).Params\", Method, 5, \"\"},\n\t\t{\"(*Signature).Recv\", Method, 5, \"\"},\n\t\t{\"(*Signature).RecvTypeParams\", Method, 18, \"\"},\n\t\t{\"(*Signature).Results\", Method, 5, \"\"},\n\t\t{\"(*Signature).String\", Method, 5, \"\"},\n\t\t{\"(*Signature).TypeParams\", Method, 18, \"\"},\n\t\t{\"(*Signature).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Signature).Variadic\", Method, 5, \"\"},\n\t\t{\"(*Slice).Elem\", Method, 5, \"\"},\n\t\t{\"(*Slice).String\", Method, 5, \"\"},\n\t\t{\"(*Slice).Underlying\", Method, 5, \"\"},\n\t\t{\"(*StdSizes).Alignof\", Method, 5, \"\"},\n\t\t{\"(*StdSizes).Offsetsof\", Method, 5, \"\"},\n\t\t{\"(*StdSizes).Sizeof\", Method, 5, \"\"},\n\t\t{\"(*Struct).Field\", Method, 5, \"\"},\n\t\t{\"(*Struct).Fields\", Method, 24, \"\"},\n\t\t{\"(*Struct).NumFields\", Method, 5, \"\"},\n\t\t{\"(*Struct).String\", Method, 5, \"\"},\n\t\t{\"(*Struct).Tag\", Method, 5, \"\"},\n\t\t{\"(*Struct).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Term).String\", Method, 18, \"\"},\n\t\t{\"(*Term).Tilde\", Method, 18, \"\"},\n\t\t{\"(*Term).Type\", Method, 18, \"\"},\n\t\t{\"(*Tuple).At\", Method, 5, \"\"},\n\t\t{\"(*Tuple).Len\", Method, 5, \"\"},\n\t\t{\"(*Tuple).String\", Method, 5, \"\"},\n\t\t{\"(*Tuple).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Tuple).Variables\", Method, 24, \"\"},\n\t\t{\"(*TypeList).At\", Method, 18, \"\"},\n\t\t{\"(*TypeList).Len\", Method, 18, \"\"},\n\t\t{\"(*TypeList).Types\", Method, 24, \"\"},\n\t\t{\"(*TypeName).Exported\", Method, 5, \"\"},\n\t\t{\"(*TypeName).Id\", Method, 5, \"\"},\n\t\t{\"(*TypeName).IsAlias\", Method, 9, \"\"},\n\t\t{\"(*TypeName).Name\", Method, 5, \"\"},\n\t\t{\"(*TypeName).Parent\", Method, 5, \"\"},\n\t\t{\"(*TypeName).Pkg\", Method, 5, \"\"},\n\t\t{\"(*TypeName).Pos\", Method, 5, \"\"},\n\t\t{\"(*TypeName).String\", Method, 5, \"\"},\n\t\t{\"(*TypeName).Type\", Method, 5, \"\"},\n\t\t{\"(*TypeParam).Constraint\", Method, 18, \"\"},\n\t\t{\"(*TypeParam).Index\", Method, 18, \"\"},\n\t\t{\"(*TypeParam).Obj\", Method, 18, \"\"},\n\t\t{\"(*TypeParam).SetConstraint\", Method, 18, \"\"},\n\t\t{\"(*TypeParam).String\", Method, 18, \"\"},\n\t\t{\"(*TypeParam).Underlying\", Method, 18, \"\"},\n\t\t{\"(*TypeParamList).At\", Method, 18, \"\"},\n\t\t{\"(*TypeParamList).Len\", Method, 18, \"\"},\n\t\t{\"(*TypeParamList).TypeParams\", Method, 24, \"\"},\n\t\t{\"(*Union).Len\", Method, 18, \"\"},\n\t\t{\"(*Union).String\", Method, 18, \"\"},\n\t\t{\"(*Union).Term\", Method, 18, \"\"},\n\t\t{\"(*Union).Terms\", Method, 24, \"\"},\n\t\t{\"(*Union).Underlying\", Method, 18, \"\"},\n\t\t{\"(*Var).Anonymous\", Method, 5, \"\"},\n\t\t{\"(*Var).Embedded\", Method, 11, \"\"},\n\t\t{\"(*Var).Exported\", Method, 5, \"\"},\n\t\t{\"(*Var).Id\", Method, 5, \"\"},\n\t\t{\"(*Var).IsField\", Method, 5, \"\"},\n\t\t{\"(*Var).Kind\", Method, 25, \"\"},\n\t\t{\"(*Var).Name\", Method, 5, \"\"},\n\t\t{\"(*Var).Origin\", Method, 19, \"\"},\n\t\t{\"(*Var).Parent\", Method, 5, \"\"},\n\t\t{\"(*Var).Pkg\", Method, 5, \"\"},\n\t\t{\"(*Var).Pos\", Method, 5, \"\"},\n\t\t{\"(*Var).SetKind\", Method, 25, \"\"},\n\t\t{\"(*Var).String\", Method, 5, \"\"},\n\t\t{\"(*Var).Type\", Method, 5, \"\"},\n\t\t{\"(Checker).ObjectOf\", Method, 5, \"\"},\n\t\t{\"(Checker).PkgNameOf\", Method, 22, \"\"},\n\t\t{\"(Checker).TypeOf\", Method, 5, \"\"},\n\t\t{\"(Error).Error\", Method, 5, \"\"},\n\t\t{\"(Importer).Import\", Method, 5, \"\"},\n\t\t{\"(ImporterFrom).Import\", Method, 6, \"\"},\n\t\t{\"(ImporterFrom).ImportFrom\", Method, 6, \"\"},\n\t\t{\"(Object).Exported\", Method, 5, \"\"},\n\t\t{\"(Object).Id\", Method, 5, \"\"},\n\t\t{\"(Object).Name\", Method, 5, \"\"},\n\t\t{\"(Object).Parent\", Method, 5, \"\"},\n\t\t{\"(Object).Pkg\", Method, 5, \"\"},\n\t\t{\"(Object).Pos\", Method, 5, \"\"},\n\t\t{\"(Object).String\", Method, 5, \"\"},\n\t\t{\"(Object).Type\", Method, 5, \"\"},\n\t\t{\"(Sizes).Alignof\", Method, 5, \"\"},\n\t\t{\"(Sizes).Offsetsof\", Method, 5, \"\"},\n\t\t{\"(Sizes).Sizeof\", Method, 5, \"\"},\n\t\t{\"(Type).String\", Method, 5, \"\"},\n\t\t{\"(Type).Underlying\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).Addressable\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).Assignable\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).HasOk\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).IsBuiltin\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).IsNil\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).IsType\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).IsValue\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).IsVoid\", Method, 5, \"\"},\n\t\t{\"(VarKind).String\", Method, 25, \"\"},\n\t\t{\"Alias\", Type, 22, \"\"},\n\t\t{\"ArgumentError\", Type, 18, \"\"},\n\t\t{\"ArgumentError.Err\", Field, 18, \"\"},\n\t\t{\"ArgumentError.Index\", Field, 18, \"\"},\n\t\t{\"Array\", Type, 5, \"\"},\n\t\t{\"AssertableTo\", Func, 5, \"func(V *Interface, T Type) bool\"},\n\t\t{\"AssignableTo\", Func, 5, \"func(V Type, T Type) bool\"},\n\t\t{\"Basic\", Type, 5, \"\"},\n\t\t{\"BasicInfo\", Type, 5, \"\"},\n\t\t{\"BasicKind\", Type, 5, \"\"},\n\t\t{\"Bool\", Const, 5, \"\"},\n\t\t{\"Builtin\", Type, 5, \"\"},\n\t\t{\"Byte\", Const, 5, \"\"},\n\t\t{\"Chan\", Type, 5, \"\"},\n\t\t{\"ChanDir\", Type, 5, \"\"},\n\t\t{\"CheckExpr\", Func, 13, \"func(fset *token.FileSet, pkg *Package, pos token.Pos, expr ast.Expr, info *Info) (err error)\"},\n\t\t{\"Checker\", Type, 5, \"\"},\n\t\t{\"Checker.Info\", Field, 5, \"\"},\n\t\t{\"Comparable\", Func, 5, \"func(T Type) bool\"},\n\t\t{\"Complex128\", Const, 5, \"\"},\n\t\t{\"Complex64\", Const, 5, \"\"},\n\t\t{\"Config\", Type, 5, \"\"},\n\t\t{\"Config.Context\", Field, 18, \"\"},\n\t\t{\"Config.DisableUnusedImportCheck\", Field, 5, \"\"},\n\t\t{\"Config.Error\", Field, 5, \"\"},\n\t\t{\"Config.FakeImportC\", Field, 5, \"\"},\n\t\t{\"Config.GoVersion\", Field, 18, \"\"},\n\t\t{\"Config.IgnoreFuncBodies\", Field, 5, \"\"},\n\t\t{\"Config.Importer\", Field, 5, \"\"},\n\t\t{\"Config.Sizes\", Field, 5, \"\"},\n\t\t{\"Const\", Type, 5, \"\"},\n\t\t{\"Context\", Type, 18, \"\"},\n\t\t{\"ConvertibleTo\", Func, 5, \"func(V Type, T Type) bool\"},\n\t\t{\"DefPredeclaredTestFuncs\", Func, 5, \"func()\"},\n\t\t{\"Default\", Func, 8, \"func(t Type) Type\"},\n\t\t{\"Error\", Type, 5, \"\"},\n\t\t{\"Error.Fset\", Field, 5, \"\"},\n\t\t{\"Error.Msg\", Field, 5, \"\"},\n\t\t{\"Error.Pos\", Field, 5, \"\"},\n\t\t{\"Error.Soft\", Field, 5, \"\"},\n\t\t{\"Eval\", Func, 5, \"func(fset *token.FileSet, pkg *Package, pos token.Pos, expr string) (_ TypeAndValue, err error)\"},\n\t\t{\"ExprString\", Func, 5, \"func(x ast.Expr) string\"},\n\t\t{\"FieldVal\", Const, 5, \"\"},\n\t\t{\"FieldVar\", Const, 25, \"\"},\n\t\t{\"Float32\", Const, 5, \"\"},\n\t\t{\"Float64\", Const, 5, \"\"},\n\t\t{\"Func\", Type, 5, \"\"},\n\t\t{\"Id\", Func, 5, \"func(pkg *Package, name string) string\"},\n\t\t{\"Identical\", Func, 5, \"func(x Type, y Type) bool\"},\n\t\t{\"IdenticalIgnoreTags\", Func, 8, \"func(x Type, y Type) bool\"},\n\t\t{\"Implements\", Func, 5, \"func(V Type, T *Interface) bool\"},\n\t\t{\"ImportMode\", Type, 6, \"\"},\n\t\t{\"Importer\", Type, 5, \"\"},\n\t\t{\"ImporterFrom\", Type, 6, \"\"},\n\t\t{\"Info\", Type, 5, \"\"},\n\t\t{\"Info.Defs\", Field, 5, \"\"},\n\t\t{\"Info.FileVersions\", Field, 22, \"\"},\n\t\t{\"Info.Implicits\", Field, 5, \"\"},\n\t\t{\"Info.InitOrder\", Field, 5, \"\"},\n\t\t{\"Info.Instances\", Field, 18, \"\"},\n\t\t{\"Info.Scopes\", Field, 5, \"\"},\n\t\t{\"Info.Selections\", Field, 5, \"\"},\n\t\t{\"Info.Types\", Field, 5, \"\"},\n\t\t{\"Info.Uses\", Field, 5, \"\"},\n\t\t{\"Initializer\", Type, 5, \"\"},\n\t\t{\"Initializer.Lhs\", Field, 5, \"\"},\n\t\t{\"Initializer.Rhs\", Field, 5, \"\"},\n\t\t{\"Instance\", Type, 18, \"\"},\n\t\t{\"Instance.Type\", Field, 18, \"\"},\n\t\t{\"Instance.TypeArgs\", Field, 18, \"\"},\n\t\t{\"Instantiate\", Func, 18, \"func(ctxt *Context, orig Type, targs []Type, validate bool) (Type, error)\"},\n\t\t{\"Int\", Const, 5, \"\"},\n\t\t{\"Int16\", Const, 5, \"\"},\n\t\t{\"Int32\", Const, 5, \"\"},\n\t\t{\"Int64\", Const, 5, \"\"},\n\t\t{\"Int8\", Const, 5, \"\"},\n\t\t{\"Interface\", Type, 5, \"\"},\n\t\t{\"Invalid\", Const, 5, \"\"},\n\t\t{\"IsBoolean\", Const, 5, \"\"},\n\t\t{\"IsComplex\", Const, 5, \"\"},\n\t\t{\"IsConstType\", Const, 5, \"\"},\n\t\t{\"IsFloat\", Const, 5, \"\"},\n\t\t{\"IsInteger\", Const, 5, \"\"},\n\t\t{\"IsInterface\", Func, 5, \"func(t Type) bool\"},\n\t\t{\"IsNumeric\", Const, 5, \"\"},\n\t\t{\"IsOrdered\", Const, 5, \"\"},\n\t\t{\"IsString\", Const, 5, \"\"},\n\t\t{\"IsUnsigned\", Const, 5, \"\"},\n\t\t{\"IsUntyped\", Const, 5, \"\"},\n\t\t{\"Label\", Type, 5, \"\"},\n\t\t{\"LocalVar\", Const, 25, \"\"},\n\t\t{\"LookupFieldOrMethod\", Func, 5, \"func(T Type, addressable bool, pkg *Package, name string) (obj Object, index []int, indirect bool)\"},\n\t\t{\"LookupSelection\", Func, 25, \"func(T Type, addressable bool, pkg *Package, name string) (Selection, bool)\"},\n\t\t{\"Map\", Type, 5, \"\"},\n\t\t{\"MethodExpr\", Const, 5, \"\"},\n\t\t{\"MethodSet\", Type, 5, \"\"},\n\t\t{\"MethodVal\", Const, 5, \"\"},\n\t\t{\"MissingMethod\", Func, 5, \"func(V Type, T *Interface, static bool) (method *Func, wrongType bool)\"},\n\t\t{\"Named\", Type, 5, \"\"},\n\t\t{\"NewAlias\", Func, 22, \"func(obj *TypeName, rhs Type) *Alias\"},\n\t\t{\"NewArray\", Func, 5, \"func(elem Type, len int64) *Array\"},\n\t\t{\"NewChan\", Func, 5, \"func(dir ChanDir, elem Type) *Chan\"},\n\t\t{\"NewChecker\", Func, 5, \"func(conf *Config, fset *token.FileSet, pkg *Package, info *Info) *Checker\"},\n\t\t{\"NewConst\", Func, 5, \"func(pos token.Pos, pkg *Package, name string, typ Type, val constant.Value) *Const\"},\n\t\t{\"NewContext\", Func, 18, \"func() *Context\"},\n\t\t{\"NewField\", Func, 5, \"func(pos token.Pos, pkg *Package, name string, typ Type, embedded bool) *Var\"},\n\t\t{\"NewFunc\", Func, 5, \"func(pos token.Pos, pkg *Package, name string, sig *Signature) *Func\"},\n\t\t{\"NewInterface\", Func, 5, \"func(methods []*Func, embeddeds []*Named) *Interface\"},\n\t\t{\"NewInterfaceType\", Func, 11, \"func(methods []*Func, embeddeds []Type) *Interface\"},\n\t\t{\"NewLabel\", Func, 5, \"func(pos token.Pos, pkg *Package, name string) *Label\"},\n\t\t{\"NewMap\", Func, 5, \"func(key Type, elem Type) *Map\"},\n\t\t{\"NewMethodSet\", Func, 5, \"func(T Type) *MethodSet\"},\n\t\t{\"NewNamed\", Func, 5, \"func(obj *TypeName, underlying Type, methods []*Func) *Named\"},\n\t\t{\"NewPackage\", Func, 5, \"func(path string, name string) *Package\"},\n\t\t{\"NewParam\", Func, 5, \"func(pos token.Pos, pkg *Package, name string, typ Type) *Var\"},\n\t\t{\"NewPkgName\", Func, 5, \"func(pos token.Pos, pkg *Package, name string, imported *Package) *PkgName\"},\n\t\t{\"NewPointer\", Func, 5, \"func(elem Type) *Pointer\"},\n\t\t{\"NewScope\", Func, 5, \"func(parent *Scope, pos token.Pos, end token.Pos, comment string) *Scope\"},\n\t\t{\"NewSignature\", Func, 5, \"func(recv *Var, params *Tuple, results *Tuple, variadic bool) *Signature\"},\n\t\t{\"NewSignatureType\", Func, 18, \"func(recv *Var, recvTypeParams []*TypeParam, typeParams []*TypeParam, params *Tuple, results *Tuple, variadic bool) *Signature\"},\n\t\t{\"NewSlice\", Func, 5, \"func(elem Type) *Slice\"},\n\t\t{\"NewStruct\", Func, 5, \"func(fields []*Var, tags []string) *Struct\"},\n\t\t{\"NewTerm\", Func, 18, \"func(tilde bool, typ Type) *Term\"},\n\t\t{\"NewTuple\", Func, 5, \"func(x ...*Var) *Tuple\"},\n\t\t{\"NewTypeName\", Func, 5, \"func(pos token.Pos, pkg *Package, name string, typ Type) *TypeName\"},\n\t\t{\"NewTypeParam\", Func, 18, \"func(obj *TypeName, constraint Type) *TypeParam\"},\n\t\t{\"NewUnion\", Func, 18, \"func(terms []*Term) *Union\"},\n\t\t{\"NewVar\", Func, 5, \"func(pos token.Pos, pkg *Package, name string, typ Type) *Var\"},\n\t\t{\"Nil\", Type, 5, \"\"},\n\t\t{\"ObjectString\", Func, 5, \"func(obj Object, qf Qualifier) string\"},\n\t\t{\"Package\", Type, 5, \"\"},\n\t\t{\"PackageVar\", Const, 25, \"\"},\n\t\t{\"ParamVar\", Const, 25, \"\"},\n\t\t{\"PkgName\", Type, 5, \"\"},\n\t\t{\"Pointer\", Type, 5, \"\"},\n\t\t{\"Qualifier\", Type, 5, \"\"},\n\t\t{\"RecvOnly\", Const, 5, \"\"},\n\t\t{\"RecvVar\", Const, 25, \"\"},\n\t\t{\"RelativeTo\", Func, 5, \"func(pkg *Package) Qualifier\"},\n\t\t{\"ResultVar\", Const, 25, \"\"},\n\t\t{\"Rune\", Const, 5, \"\"},\n\t\t{\"Satisfies\", Func, 20, \"func(V Type, T *Interface) bool\"},\n\t\t{\"Scope\", Type, 5, \"\"},\n\t\t{\"Selection\", Type, 5, \"\"},\n\t\t{\"SelectionKind\", Type, 5, \"\"},\n\t\t{\"SelectionString\", Func, 5, \"func(s *Selection, qf Qualifier) string\"},\n\t\t{\"SendOnly\", Const, 5, \"\"},\n\t\t{\"SendRecv\", Const, 5, \"\"},\n\t\t{\"Signature\", Type, 5, \"\"},\n\t\t{\"Sizes\", Type, 5, \"\"},\n\t\t{\"SizesFor\", Func, 9, \"func(compiler string, arch string) Sizes\"},\n\t\t{\"Slice\", Type, 5, \"\"},\n\t\t{\"StdSizes\", Type, 5, \"\"},\n\t\t{\"StdSizes.MaxAlign\", Field, 5, \"\"},\n\t\t{\"StdSizes.WordSize\", Field, 5, \"\"},\n\t\t{\"String\", Const, 5, \"\"},\n\t\t{\"Struct\", Type, 5, \"\"},\n\t\t{\"Term\", Type, 18, \"\"},\n\t\t{\"Tuple\", Type, 5, \"\"},\n\t\t{\"Typ\", Var, 5, \"\"},\n\t\t{\"Type\", Type, 5, \"\"},\n\t\t{\"TypeAndValue\", Type, 5, \"\"},\n\t\t{\"TypeAndValue.Type\", Field, 5, \"\"},\n\t\t{\"TypeAndValue.Value\", Field, 5, \"\"},\n\t\t{\"TypeList\", Type, 18, \"\"},\n\t\t{\"TypeName\", Type, 5, \"\"},\n\t\t{\"TypeParam\", Type, 18, \"\"},\n\t\t{\"TypeParamList\", Type, 18, \"\"},\n\t\t{\"TypeString\", Func, 5, \"func(typ Type, qf Qualifier) string\"},\n\t\t{\"Uint\", Const, 5, \"\"},\n\t\t{\"Uint16\", Const, 5, \"\"},\n\t\t{\"Uint32\", Const, 5, \"\"},\n\t\t{\"Uint64\", Const, 5, \"\"},\n\t\t{\"Uint8\", Const, 5, \"\"},\n\t\t{\"Uintptr\", Const, 5, \"\"},\n\t\t{\"Unalias\", Func, 22, \"func(t Type) Type\"},\n\t\t{\"Union\", Type, 18, \"\"},\n\t\t{\"Universe\", Var, 5, \"\"},\n\t\t{\"Unsafe\", Var, 5, \"\"},\n\t\t{\"UnsafePointer\", Const, 5, \"\"},\n\t\t{\"UntypedBool\", Const, 5, \"\"},\n\t\t{\"UntypedComplex\", Const, 5, \"\"},\n\t\t{\"UntypedFloat\", Const, 5, \"\"},\n\t\t{\"UntypedInt\", Const, 5, \"\"},\n\t\t{\"UntypedNil\", Const, 5, \"\"},\n\t\t{\"UntypedRune\", Const, 5, \"\"},\n\t\t{\"UntypedString\", Const, 5, \"\"},\n\t\t{\"Var\", Type, 5, \"\"},\n\t\t{\"VarKind\", Type, 25, \"\"},\n\t\t{\"WriteExpr\", Func, 5, \"func(buf *bytes.Buffer, x ast.Expr)\"},\n\t\t{\"WriteSignature\", Func, 5, \"func(buf *bytes.Buffer, sig *Signature, qf Qualifier)\"},\n\t\t{\"WriteType\", Func, 5, \"func(buf *bytes.Buffer, typ Type, qf Qualifier)\"},\n\t},\n\t\"go/version\": {\n\t\t{\"Compare\", Func, 22, \"func(x string, y string) int\"},\n\t\t{\"IsValid\", Func, 22, \"func(x string) bool\"},\n\t\t{\"Lang\", Func, 22, \"func(x string) string\"},\n\t},\n\t\"hash\": {\n\t\t{\"(Cloner).BlockSize\", Method, 25, \"\"},\n\t\t{\"(Cloner).Clone\", Method, 25, \"\"},\n\t\t{\"(Cloner).Reset\", Method, 25, \"\"},\n\t\t{\"(Cloner).Size\", Method, 25, \"\"},\n\t\t{\"(Cloner).Sum\", Method, 25, \"\"},\n\t\t{\"(Cloner).Write\", Method, 25, \"\"},\n\t\t{\"(Hash).BlockSize\", Method, 0, \"\"},\n\t\t{\"(Hash).Reset\", Method, 0, \"\"},\n\t\t{\"(Hash).Size\", Method, 0, \"\"},\n\t\t{\"(Hash).Sum\", Method, 0, \"\"},\n\t\t{\"(Hash).Write\", Method, 0, \"\"},\n\t\t{\"(Hash32).BlockSize\", Method, 0, \"\"},\n\t\t{\"(Hash32).Reset\", Method, 0, \"\"},\n\t\t{\"(Hash32).Size\", Method, 0, \"\"},\n\t\t{\"(Hash32).Sum\", Method, 0, \"\"},\n\t\t{\"(Hash32).Sum32\", Method, 0, \"\"},\n\t\t{\"(Hash32).Write\", Method, 0, \"\"},\n\t\t{\"(Hash64).BlockSize\", Method, 0, \"\"},\n\t\t{\"(Hash64).Reset\", Method, 0, \"\"},\n\t\t{\"(Hash64).Size\", Method, 0, \"\"},\n\t\t{\"(Hash64).Sum\", Method, 0, \"\"},\n\t\t{\"(Hash64).Sum64\", Method, 0, \"\"},\n\t\t{\"(Hash64).Write\", Method, 0, \"\"},\n\t\t{\"(XOF).BlockSize\", Method, 25, \"\"},\n\t\t{\"(XOF).Read\", Method, 25, \"\"},\n\t\t{\"(XOF).Reset\", Method, 25, \"\"},\n\t\t{\"(XOF).Write\", Method, 25, \"\"},\n\t\t{\"Cloner\", Type, 25, \"\"},\n\t\t{\"Hash\", Type, 0, \"\"},\n\t\t{\"Hash32\", Type, 0, \"\"},\n\t\t{\"Hash64\", Type, 0, \"\"},\n\t\t{\"XOF\", Type, 25, \"\"},\n\t},\n\t\"hash/adler32\": {\n\t\t{\"Checksum\", Func, 0, \"func(data []byte) uint32\"},\n\t\t{\"New\", Func, 0, \"func() hash.Hash32\"},\n\t\t{\"Size\", Const, 0, \"\"},\n\t},\n\t\"hash/crc32\": {\n\t\t{\"Castagnoli\", Const, 0, \"\"},\n\t\t{\"Checksum\", Func, 0, \"func(data []byte, tab *Table) uint32\"},\n\t\t{\"ChecksumIEEE\", Func, 0, \"func(data []byte) uint32\"},\n\t\t{\"IEEE\", Const, 0, \"\"},\n\t\t{\"IEEETable\", Var, 0, \"\"},\n\t\t{\"Koopman\", Const, 0, \"\"},\n\t\t{\"MakeTable\", Func, 0, \"func(poly uint32) *Table\"},\n\t\t{\"New\", Func, 0, \"func(tab *Table) hash.Hash32\"},\n\t\t{\"NewIEEE\", Func, 0, \"func() hash.Hash32\"},\n\t\t{\"Size\", Const, 0, \"\"},\n\t\t{\"Table\", Type, 0, \"\"},\n\t\t{\"Update\", Func, 0, \"func(crc uint32, tab *Table, p []byte) uint32\"},\n\t},\n\t\"hash/crc64\": {\n\t\t{\"Checksum\", Func, 0, \"func(data []byte, tab *Table) uint64\"},\n\t\t{\"ECMA\", Const, 0, \"\"},\n\t\t{\"ISO\", Const, 0, \"\"},\n\t\t{\"MakeTable\", Func, 0, \"func(poly uint64) *Table\"},\n\t\t{\"New\", Func, 0, \"func(tab *Table) hash.Hash64\"},\n\t\t{\"Size\", Const, 0, \"\"},\n\t\t{\"Table\", Type, 0, \"\"},\n\t\t{\"Update\", Func, 0, \"func(crc uint64, tab *Table, p []byte) uint64\"},\n\t},\n\t\"hash/fnv\": {\n\t\t{\"New128\", Func, 9, \"func() hash.Hash\"},\n\t\t{\"New128a\", Func, 9, \"func() hash.Hash\"},\n\t\t{\"New32\", Func, 0, \"func() hash.Hash32\"},\n\t\t{\"New32a\", Func, 0, \"func() hash.Hash32\"},\n\t\t{\"New64\", Func, 0, \"func() hash.Hash64\"},\n\t\t{\"New64a\", Func, 0, \"func() hash.Hash64\"},\n\t},\n\t\"hash/maphash\": {\n\t\t{\"(*Hash).BlockSize\", Method, 14, \"\"},\n\t\t{\"(*Hash).Clone\", Method, 25, \"\"},\n\t\t{\"(*Hash).Reset\", Method, 14, \"\"},\n\t\t{\"(*Hash).Seed\", Method, 14, \"\"},\n\t\t{\"(*Hash).SetSeed\", Method, 14, \"\"},\n\t\t{\"(*Hash).Size\", Method, 14, \"\"},\n\t\t{\"(*Hash).Sum\", Method, 14, \"\"},\n\t\t{\"(*Hash).Sum64\", Method, 14, \"\"},\n\t\t{\"(*Hash).Write\", Method, 14, \"\"},\n\t\t{\"(*Hash).WriteByte\", Method, 14, \"\"},\n\t\t{\"(*Hash).WriteString\", Method, 14, \"\"},\n\t\t{\"Bytes\", Func, 19, \"func(seed Seed, b []byte) uint64\"},\n\t\t{\"Comparable\", Func, 24, \"func[T comparable](seed Seed, v T) uint64\"},\n\t\t{\"Hash\", Type, 14, \"\"},\n\t\t{\"MakeSeed\", Func, 14, \"func() Seed\"},\n\t\t{\"Seed\", Type, 14, \"\"},\n\t\t{\"String\", Func, 19, \"func(seed Seed, s string) uint64\"},\n\t\t{\"WriteComparable\", Func, 24, \"func[T comparable](h *Hash, x T)\"},\n\t},\n\t\"html\": {\n\t\t{\"EscapeString\", Func, 0, \"func(s string) string\"},\n\t\t{\"UnescapeString\", Func, 0, \"func(s string) string\"},\n\t},\n\t\"html/template\": {\n\t\t{\"(*Error).Error\", Method, 0, \"\"},\n\t\t{\"(*Template).AddParseTree\", Method, 0, \"\"},\n\t\t{\"(*Template).Clone\", Method, 0, \"\"},\n\t\t{\"(*Template).DefinedTemplates\", Method, 6, \"\"},\n\t\t{\"(*Template).Delims\", Method, 0, \"\"},\n\t\t{\"(*Template).Execute\", Method, 0, \"\"},\n\t\t{\"(*Template).ExecuteTemplate\", Method, 0, \"\"},\n\t\t{\"(*Template).Funcs\", Method, 0, \"\"},\n\t\t{\"(*Template).Lookup\", Method, 0, \"\"},\n\t\t{\"(*Template).Name\", Method, 0, \"\"},\n\t\t{\"(*Template).New\", Method, 0, \"\"},\n\t\t{\"(*Template).Option\", Method, 5, \"\"},\n\t\t{\"(*Template).Parse\", Method, 0, \"\"},\n\t\t{\"(*Template).ParseFS\", Method, 16, \"\"},\n\t\t{\"(*Template).ParseFiles\", Method, 0, \"\"},\n\t\t{\"(*Template).ParseGlob\", Method, 0, \"\"},\n\t\t{\"(*Template).Templates\", Method, 0, \"\"},\n\t\t{\"CSS\", Type, 0, \"\"},\n\t\t{\"ErrAmbigContext\", Const, 0, \"\"},\n\t\t{\"ErrBadHTML\", Const, 0, \"\"},\n\t\t{\"ErrBranchEnd\", Const, 0, \"\"},\n\t\t{\"ErrEndContext\", Const, 0, \"\"},\n\t\t{\"ErrJSTemplate\", Const, 21, \"\"},\n\t\t{\"ErrNoSuchTemplate\", Const, 0, \"\"},\n\t\t{\"ErrOutputContext\", Const, 0, \"\"},\n\t\t{\"ErrPartialCharset\", Const, 0, \"\"},\n\t\t{\"ErrPartialEscape\", Const, 0, \"\"},\n\t\t{\"ErrPredefinedEscaper\", Const, 9, \"\"},\n\t\t{\"ErrRangeLoopReentry\", Const, 0, \"\"},\n\t\t{\"ErrSlashAmbig\", Const, 0, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Error.Description\", Field, 0, \"\"},\n\t\t{\"Error.ErrorCode\", Field, 0, \"\"},\n\t\t{\"Error.Line\", Field, 0, \"\"},\n\t\t{\"Error.Name\", Field, 0, \"\"},\n\t\t{\"Error.Node\", Field, 4, \"\"},\n\t\t{\"ErrorCode\", Type, 0, \"\"},\n\t\t{\"FuncMap\", Type, 0, \"\"},\n\t\t{\"HTML\", Type, 0, \"\"},\n\t\t{\"HTMLAttr\", Type, 0, \"\"},\n\t\t{\"HTMLEscape\", Func, 0, \"func(w io.Writer, b []byte)\"},\n\t\t{\"HTMLEscapeString\", Func, 0, \"func(s string) string\"},\n\t\t{\"HTMLEscaper\", Func, 0, \"func(args ...any) string\"},\n\t\t{\"IsTrue\", Func, 6, \"func(val any) (truth bool, ok bool)\"},\n\t\t{\"JS\", Type, 0, \"\"},\n\t\t{\"JSEscape\", Func, 0, \"func(w io.Writer, b []byte)\"},\n\t\t{\"JSEscapeString\", Func, 0, \"func(s string) string\"},\n\t\t{\"JSEscaper\", Func, 0, \"func(args ...any) string\"},\n\t\t{\"JSStr\", Type, 0, \"\"},\n\t\t{\"Must\", Func, 0, \"func(t *Template, err error) *Template\"},\n\t\t{\"New\", Func, 0, \"func(name string) *Template\"},\n\t\t{\"OK\", Const, 0, \"\"},\n\t\t{\"ParseFS\", Func, 16, \"func(fs fs.FS, patterns ...string) (*Template, error)\"},\n\t\t{\"ParseFiles\", Func, 0, \"func(filenames ...string) (*Template, error)\"},\n\t\t{\"ParseGlob\", Func, 0, \"func(pattern string) (*Template, error)\"},\n\t\t{\"Srcset\", Type, 10, \"\"},\n\t\t{\"Template\", Type, 0, \"\"},\n\t\t{\"Template.Tree\", Field, 2, \"\"},\n\t\t{\"URL\", Type, 0, \"\"},\n\t\t{\"URLQueryEscaper\", Func, 0, \"func(args ...any) string\"},\n\t},\n\t\"image\": {\n\t\t{\"(*Alpha).AlphaAt\", Method, 4, \"\"},\n\t\t{\"(*Alpha).At\", Method, 0, \"\"},\n\t\t{\"(*Alpha).Bounds\", Method, 0, \"\"},\n\t\t{\"(*Alpha).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*Alpha).Opaque\", Method, 0, \"\"},\n\t\t{\"(*Alpha).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*Alpha).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*Alpha).Set\", Method, 0, \"\"},\n\t\t{\"(*Alpha).SetAlpha\", Method, 0, \"\"},\n\t\t{\"(*Alpha).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*Alpha).SubImage\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).Alpha16At\", Method, 4, \"\"},\n\t\t{\"(*Alpha16).At\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).Bounds\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).Opaque\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*Alpha16).Set\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).SetAlpha16\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*Alpha16).SubImage\", Method, 0, \"\"},\n\t\t{\"(*CMYK).At\", Method, 5, \"\"},\n\t\t{\"(*CMYK).Bounds\", Method, 5, \"\"},\n\t\t{\"(*CMYK).CMYKAt\", Method, 5, \"\"},\n\t\t{\"(*CMYK).ColorModel\", Method, 5, \"\"},\n\t\t{\"(*CMYK).Opaque\", Method, 5, \"\"},\n\t\t{\"(*CMYK).PixOffset\", Method, 5, \"\"},\n\t\t{\"(*CMYK).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*CMYK).Set\", Method, 5, \"\"},\n\t\t{\"(*CMYK).SetCMYK\", Method, 5, \"\"},\n\t\t{\"(*CMYK).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*CMYK).SubImage\", Method, 5, \"\"},\n\t\t{\"(*Gray).At\", Method, 0, \"\"},\n\t\t{\"(*Gray).Bounds\", Method, 0, \"\"},\n\t\t{\"(*Gray).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*Gray).GrayAt\", Method, 4, \"\"},\n\t\t{\"(*Gray).Opaque\", Method, 0, \"\"},\n\t\t{\"(*Gray).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*Gray).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*Gray).Set\", Method, 0, \"\"},\n\t\t{\"(*Gray).SetGray\", Method, 0, \"\"},\n\t\t{\"(*Gray).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*Gray).SubImage\", Method, 0, \"\"},\n\t\t{\"(*Gray16).At\", Method, 0, \"\"},\n\t\t{\"(*Gray16).Bounds\", Method, 0, \"\"},\n\t\t{\"(*Gray16).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*Gray16).Gray16At\", Method, 4, \"\"},\n\t\t{\"(*Gray16).Opaque\", Method, 0, \"\"},\n\t\t{\"(*Gray16).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*Gray16).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*Gray16).Set\", Method, 0, \"\"},\n\t\t{\"(*Gray16).SetGray16\", Method, 0, \"\"},\n\t\t{\"(*Gray16).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*Gray16).SubImage\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).At\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).Bounds\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).NRGBAAt\", Method, 4, \"\"},\n\t\t{\"(*NRGBA).Opaque\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*NRGBA).Set\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).SetNRGBA\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*NRGBA).SubImage\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).At\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).Bounds\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).NRGBA64At\", Method, 4, \"\"},\n\t\t{\"(*NRGBA64).Opaque\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*NRGBA64).Set\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).SetNRGBA64\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*NRGBA64).SubImage\", Method, 0, \"\"},\n\t\t{\"(*NYCbCrA).AOffset\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).At\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).Bounds\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).COffset\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).ColorModel\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).NYCbCrAAt\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).Opaque\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*NYCbCrA).SubImage\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).YCbCrAt\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).YOffset\", Method, 6, \"\"},\n\t\t{\"(*Paletted).At\", Method, 0, \"\"},\n\t\t{\"(*Paletted).Bounds\", Method, 0, \"\"},\n\t\t{\"(*Paletted).ColorIndexAt\", Method, 0, \"\"},\n\t\t{\"(*Paletted).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*Paletted).Opaque\", Method, 0, \"\"},\n\t\t{\"(*Paletted).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*Paletted).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*Paletted).Set\", Method, 0, \"\"},\n\t\t{\"(*Paletted).SetColorIndex\", Method, 0, \"\"},\n\t\t{\"(*Paletted).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*Paletted).SubImage\", Method, 0, \"\"},\n\t\t{\"(*RGBA).At\", Method, 0, \"\"},\n\t\t{\"(*RGBA).Bounds\", Method, 0, \"\"},\n\t\t{\"(*RGBA).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*RGBA).Opaque\", Method, 0, \"\"},\n\t\t{\"(*RGBA).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*RGBA).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*RGBA).RGBAAt\", Method, 4, \"\"},\n\t\t{\"(*RGBA).Set\", Method, 0, \"\"},\n\t\t{\"(*RGBA).SetRGBA\", Method, 0, \"\"},\n\t\t{\"(*RGBA).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*RGBA).SubImage\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).At\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).Bounds\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).Opaque\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).RGBA64At\", Method, 4, \"\"},\n\t\t{\"(*RGBA64).Set\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).SetRGBA64\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).SubImage\", Method, 0, \"\"},\n\t\t{\"(*Uniform).At\", Method, 0, \"\"},\n\t\t{\"(*Uniform).Bounds\", Method, 0, \"\"},\n\t\t{\"(*Uniform).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*Uniform).Convert\", Method, 0, \"\"},\n\t\t{\"(*Uniform).Opaque\", Method, 0, \"\"},\n\t\t{\"(*Uniform).RGBA\", Method, 0, \"\"},\n\t\t{\"(*Uniform).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*YCbCr).At\", Method, 0, \"\"},\n\t\t{\"(*YCbCr).Bounds\", Method, 0, \"\"},\n\t\t{\"(*YCbCr).COffset\", Method, 0, \"\"},\n\t\t{\"(*YCbCr).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*YCbCr).Opaque\", Method, 0, \"\"},\n\t\t{\"(*YCbCr).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*YCbCr).SubImage\", Method, 0, \"\"},\n\t\t{\"(*YCbCr).YCbCrAt\", Method, 4, \"\"},\n\t\t{\"(*YCbCr).YOffset\", Method, 0, \"\"},\n\t\t{\"(Image).At\", Method, 0, \"\"},\n\t\t{\"(Image).Bounds\", Method, 0, \"\"},\n\t\t{\"(Image).ColorModel\", Method, 0, \"\"},\n\t\t{\"(PalettedImage).At\", Method, 0, \"\"},\n\t\t{\"(PalettedImage).Bounds\", Method, 0, \"\"},\n\t\t{\"(PalettedImage).ColorIndexAt\", Method, 0, \"\"},\n\t\t{\"(PalettedImage).ColorModel\", Method, 0, \"\"},\n\t\t{\"(Point).Add\", Method, 0, \"\"},\n\t\t{\"(Point).Div\", Method, 0, \"\"},\n\t\t{\"(Point).Eq\", Method, 0, \"\"},\n\t\t{\"(Point).In\", Method, 0, \"\"},\n\t\t{\"(Point).Mod\", Method, 0, \"\"},\n\t\t{\"(Point).Mul\", Method, 0, \"\"},\n\t\t{\"(Point).String\", Method, 0, \"\"},\n\t\t{\"(Point).Sub\", Method, 0, \"\"},\n\t\t{\"(RGBA64Image).At\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).Bounds\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).ColorModel\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(Rectangle).Add\", Method, 0, \"\"},\n\t\t{\"(Rectangle).At\", Method, 5, \"\"},\n\t\t{\"(Rectangle).Bounds\", Method, 5, \"\"},\n\t\t{\"(Rectangle).Canon\", Method, 0, \"\"},\n\t\t{\"(Rectangle).ColorModel\", Method, 5, \"\"},\n\t\t{\"(Rectangle).Dx\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Dy\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Empty\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Eq\", Method, 0, \"\"},\n\t\t{\"(Rectangle).In\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Inset\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Intersect\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Overlaps\", Method, 0, \"\"},\n\t\t{\"(Rectangle).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(Rectangle).Size\", Method, 0, \"\"},\n\t\t{\"(Rectangle).String\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Sub\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Union\", Method, 0, \"\"},\n\t\t{\"(YCbCrSubsampleRatio).String\", Method, 0, \"\"},\n\t\t{\"Alpha\", Type, 0, \"\"},\n\t\t{\"Alpha.Pix\", Field, 0, \"\"},\n\t\t{\"Alpha.Rect\", Field, 0, \"\"},\n\t\t{\"Alpha.Stride\", Field, 0, \"\"},\n\t\t{\"Alpha16\", Type, 0, \"\"},\n\t\t{\"Alpha16.Pix\", Field, 0, \"\"},\n\t\t{\"Alpha16.Rect\", Field, 0, \"\"},\n\t\t{\"Alpha16.Stride\", Field, 0, \"\"},\n\t\t{\"Black\", Var, 0, \"\"},\n\t\t{\"CMYK\", Type, 5, \"\"},\n\t\t{\"CMYK.Pix\", Field, 5, \"\"},\n\t\t{\"CMYK.Rect\", Field, 5, \"\"},\n\t\t{\"CMYK.Stride\", Field, 5, \"\"},\n\t\t{\"Config\", Type, 0, \"\"},\n\t\t{\"Config.ColorModel\", Field, 0, \"\"},\n\t\t{\"Config.Height\", Field, 0, \"\"},\n\t\t{\"Config.Width\", Field, 0, \"\"},\n\t\t{\"Decode\", Func, 0, \"func(r io.Reader) (Image, string, error)\"},\n\t\t{\"DecodeConfig\", Func, 0, \"func(r io.Reader) (Config, string, error)\"},\n\t\t{\"ErrFormat\", Var, 0, \"\"},\n\t\t{\"Gray\", Type, 0, \"\"},\n\t\t{\"Gray.Pix\", Field, 0, \"\"},\n\t\t{\"Gray.Rect\", Field, 0, \"\"},\n\t\t{\"Gray.Stride\", Field, 0, \"\"},\n\t\t{\"Gray16\", Type, 0, \"\"},\n\t\t{\"Gray16.Pix\", Field, 0, \"\"},\n\t\t{\"Gray16.Rect\", Field, 0, \"\"},\n\t\t{\"Gray16.Stride\", Field, 0, \"\"},\n\t\t{\"Image\", Type, 0, \"\"},\n\t\t{\"NRGBA\", Type, 0, \"\"},\n\t\t{\"NRGBA.Pix\", Field, 0, \"\"},\n\t\t{\"NRGBA.Rect\", Field, 0, \"\"},\n\t\t{\"NRGBA.Stride\", Field, 0, \"\"},\n\t\t{\"NRGBA64\", Type, 0, \"\"},\n\t\t{\"NRGBA64.Pix\", Field, 0, \"\"},\n\t\t{\"NRGBA64.Rect\", Field, 0, \"\"},\n\t\t{\"NRGBA64.Stride\", Field, 0, \"\"},\n\t\t{\"NYCbCrA\", Type, 6, \"\"},\n\t\t{\"NYCbCrA.A\", Field, 6, \"\"},\n\t\t{\"NYCbCrA.AStride\", Field, 6, \"\"},\n\t\t{\"NYCbCrA.YCbCr\", Field, 6, \"\"},\n\t\t{\"NewAlpha\", Func, 0, \"func(r Rectangle) *Alpha\"},\n\t\t{\"NewAlpha16\", Func, 0, \"func(r Rectangle) *Alpha16\"},\n\t\t{\"NewCMYK\", Func, 5, \"func(r Rectangle) *CMYK\"},\n\t\t{\"NewGray\", Func, 0, \"func(r Rectangle) *Gray\"},\n\t\t{\"NewGray16\", Func, 0, \"func(r Rectangle) *Gray16\"},\n\t\t{\"NewNRGBA\", Func, 0, \"func(r Rectangle) *NRGBA\"},\n\t\t{\"NewNRGBA64\", Func, 0, \"func(r Rectangle) *NRGBA64\"},\n\t\t{\"NewNYCbCrA\", Func, 6, \"func(r Rectangle, subsampleRatio YCbCrSubsampleRatio) *NYCbCrA\"},\n\t\t{\"NewPaletted\", Func, 0, \"func(r Rectangle, p color.Palette) *Paletted\"},\n\t\t{\"NewRGBA\", Func, 0, \"func(r Rectangle) *RGBA\"},\n\t\t{\"NewRGBA64\", Func, 0, \"func(r Rectangle) *RGBA64\"},\n\t\t{\"NewUniform\", Func, 0, \"func(c color.Color) *Uniform\"},\n\t\t{\"NewYCbCr\", Func, 0, \"func(r Rectangle, subsampleRatio YCbCrSubsampleRatio) *YCbCr\"},\n\t\t{\"Opaque\", Var, 0, \"\"},\n\t\t{\"Paletted\", Type, 0, \"\"},\n\t\t{\"Paletted.Palette\", Field, 0, \"\"},\n\t\t{\"Paletted.Pix\", Field, 0, \"\"},\n\t\t{\"Paletted.Rect\", Field, 0, \"\"},\n\t\t{\"Paletted.Stride\", Field, 0, \"\"},\n\t\t{\"PalettedImage\", Type, 0, \"\"},\n\t\t{\"Point\", Type, 0, \"\"},\n\t\t{\"Point.X\", Field, 0, \"\"},\n\t\t{\"Point.Y\", Field, 0, \"\"},\n\t\t{\"Pt\", Func, 0, \"func(X int, Y int) Point\"},\n\t\t{\"RGBA\", Type, 0, \"\"},\n\t\t{\"RGBA.Pix\", Field, 0, \"\"},\n\t\t{\"RGBA.Rect\", Field, 0, \"\"},\n\t\t{\"RGBA.Stride\", Field, 0, \"\"},\n\t\t{\"RGBA64\", Type, 0, \"\"},\n\t\t{\"RGBA64.Pix\", Field, 0, \"\"},\n\t\t{\"RGBA64.Rect\", Field, 0, \"\"},\n\t\t{\"RGBA64.Stride\", Field, 0, \"\"},\n\t\t{\"RGBA64Image\", Type, 17, \"\"},\n\t\t{\"Rect\", Func, 0, \"func(x0 int, y0 int, x1 int, y1 int) Rectangle\"},\n\t\t{\"Rectangle\", Type, 0, \"\"},\n\t\t{\"Rectangle.Max\", Field, 0, \"\"},\n\t\t{\"Rectangle.Min\", Field, 0, \"\"},\n\t\t{\"RegisterFormat\", Func, 0, \"func(name string, magic string, decode func(io.Reader) (Image, error), decodeConfig func(io.Reader) (Config, error))\"},\n\t\t{\"Transparent\", Var, 0, \"\"},\n\t\t{\"Uniform\", Type, 0, \"\"},\n\t\t{\"Uniform.C\", Field, 0, \"\"},\n\t\t{\"White\", Var, 0, \"\"},\n\t\t{\"YCbCr\", Type, 0, \"\"},\n\t\t{\"YCbCr.CStride\", Field, 0, \"\"},\n\t\t{\"YCbCr.Cb\", Field, 0, \"\"},\n\t\t{\"YCbCr.Cr\", Field, 0, \"\"},\n\t\t{\"YCbCr.Rect\", Field, 0, \"\"},\n\t\t{\"YCbCr.SubsampleRatio\", Field, 0, \"\"},\n\t\t{\"YCbCr.Y\", Field, 0, \"\"},\n\t\t{\"YCbCr.YStride\", Field, 0, \"\"},\n\t\t{\"YCbCrSubsampleRatio\", Type, 0, \"\"},\n\t\t{\"YCbCrSubsampleRatio410\", Const, 5, \"\"},\n\t\t{\"YCbCrSubsampleRatio411\", Const, 5, \"\"},\n\t\t{\"YCbCrSubsampleRatio420\", Const, 0, \"\"},\n\t\t{\"YCbCrSubsampleRatio422\", Const, 0, \"\"},\n\t\t{\"YCbCrSubsampleRatio440\", Const, 1, \"\"},\n\t\t{\"YCbCrSubsampleRatio444\", Const, 0, \"\"},\n\t\t{\"ZP\", Var, 0, \"\"},\n\t\t{\"ZR\", Var, 0, \"\"},\n\t},\n\t\"image/color\": {\n\t\t{\"(Alpha).RGBA\", Method, 0, \"\"},\n\t\t{\"(Alpha16).RGBA\", Method, 0, \"\"},\n\t\t{\"(CMYK).RGBA\", Method, 5, \"\"},\n\t\t{\"(Color).RGBA\", Method, 0, \"\"},\n\t\t{\"(Gray).RGBA\", Method, 0, \"\"},\n\t\t{\"(Gray16).RGBA\", Method, 0, \"\"},\n\t\t{\"(Model).Convert\", Method, 0, \"\"},\n\t\t{\"(NRGBA).RGBA\", Method, 0, \"\"},\n\t\t{\"(NRGBA64).RGBA\", Method, 0, \"\"},\n\t\t{\"(NYCbCrA).RGBA\", Method, 6, \"\"},\n\t\t{\"(Palette).Convert\", Method, 0, \"\"},\n\t\t{\"(Palette).Index\", Method, 0, \"\"},\n\t\t{\"(RGBA).RGBA\", Method, 0, \"\"},\n\t\t{\"(RGBA64).RGBA\", Method, 0, \"\"},\n\t\t{\"(YCbCr).RGBA\", Method, 0, \"\"},\n\t\t{\"Alpha\", Type, 0, \"\"},\n\t\t{\"Alpha.A\", Field, 0, \"\"},\n\t\t{\"Alpha16\", Type, 0, \"\"},\n\t\t{\"Alpha16.A\", Field, 0, \"\"},\n\t\t{\"Alpha16Model\", Var, 0, \"\"},\n\t\t{\"AlphaModel\", Var, 0, \"\"},\n\t\t{\"Black\", Var, 0, \"\"},\n\t\t{\"CMYK\", Type, 5, \"\"},\n\t\t{\"CMYK.C\", Field, 5, \"\"},\n\t\t{\"CMYK.K\", Field, 5, \"\"},\n\t\t{\"CMYK.M\", Field, 5, \"\"},\n\t\t{\"CMYK.Y\", Field, 5, \"\"},\n\t\t{\"CMYKModel\", Var, 5, \"\"},\n\t\t{\"CMYKToRGB\", Func, 5, \"func(c uint8, m uint8, y uint8, k uint8) (uint8, uint8, uint8)\"},\n\t\t{\"Color\", Type, 0, \"\"},\n\t\t{\"Gray\", Type, 0, \"\"},\n\t\t{\"Gray.Y\", Field, 0, \"\"},\n\t\t{\"Gray16\", Type, 0, \"\"},\n\t\t{\"Gray16.Y\", Field, 0, \"\"},\n\t\t{\"Gray16Model\", Var, 0, \"\"},\n\t\t{\"GrayModel\", Var, 0, \"\"},\n\t\t{\"Model\", Type, 0, \"\"},\n\t\t{\"ModelFunc\", Func, 0, \"func(f func(Color) Color) Model\"},\n\t\t{\"NRGBA\", Type, 0, \"\"},\n\t\t{\"NRGBA.A\", Field, 0, \"\"},\n\t\t{\"NRGBA.B\", Field, 0, \"\"},\n\t\t{\"NRGBA.G\", Field, 0, \"\"},\n\t\t{\"NRGBA.R\", Field, 0, \"\"},\n\t\t{\"NRGBA64\", Type, 0, \"\"},\n\t\t{\"NRGBA64.A\", Field, 0, \"\"},\n\t\t{\"NRGBA64.B\", Field, 0, \"\"},\n\t\t{\"NRGBA64.G\", Field, 0, \"\"},\n\t\t{\"NRGBA64.R\", Field, 0, \"\"},\n\t\t{\"NRGBA64Model\", Var, 0, \"\"},\n\t\t{\"NRGBAModel\", Var, 0, \"\"},\n\t\t{\"NYCbCrA\", Type, 6, \"\"},\n\t\t{\"NYCbCrA.A\", Field, 6, \"\"},\n\t\t{\"NYCbCrA.YCbCr\", Field, 6, \"\"},\n\t\t{\"NYCbCrAModel\", Var, 6, \"\"},\n\t\t{\"Opaque\", Var, 0, \"\"},\n\t\t{\"Palette\", Type, 0, \"\"},\n\t\t{\"RGBA\", Type, 0, \"\"},\n\t\t{\"RGBA.A\", Field, 0, \"\"},\n\t\t{\"RGBA.B\", Field, 0, \"\"},\n\t\t{\"RGBA.G\", Field, 0, \"\"},\n\t\t{\"RGBA.R\", Field, 0, \"\"},\n\t\t{\"RGBA64\", Type, 0, \"\"},\n\t\t{\"RGBA64.A\", Field, 0, \"\"},\n\t\t{\"RGBA64.B\", Field, 0, \"\"},\n\t\t{\"RGBA64.G\", Field, 0, \"\"},\n\t\t{\"RGBA64.R\", Field, 0, \"\"},\n\t\t{\"RGBA64Model\", Var, 0, \"\"},\n\t\t{\"RGBAModel\", Var, 0, \"\"},\n\t\t{\"RGBToCMYK\", Func, 5, \"func(r uint8, g uint8, b uint8) (uint8, uint8, uint8, uint8)\"},\n\t\t{\"RGBToYCbCr\", Func, 0, \"func(r uint8, g uint8, b uint8) (uint8, uint8, uint8)\"},\n\t\t{\"Transparent\", Var, 0, \"\"},\n\t\t{\"White\", Var, 0, \"\"},\n\t\t{\"YCbCr\", Type, 0, \"\"},\n\t\t{\"YCbCr.Cb\", Field, 0, \"\"},\n\t\t{\"YCbCr.Cr\", Field, 0, \"\"},\n\t\t{\"YCbCr.Y\", Field, 0, \"\"},\n\t\t{\"YCbCrModel\", Var, 0, \"\"},\n\t\t{\"YCbCrToRGB\", Func, 0, \"func(y uint8, cb uint8, cr uint8) (uint8, uint8, uint8)\"},\n\t},\n\t\"image/color/palette\": {\n\t\t{\"Plan9\", Var, 2, \"\"},\n\t\t{\"WebSafe\", Var, 2, \"\"},\n\t},\n\t\"image/draw\": {\n\t\t{\"(Drawer).Draw\", Method, 2, \"\"},\n\t\t{\"(Image).At\", Method, 0, \"\"},\n\t\t{\"(Image).Bounds\", Method, 0, \"\"},\n\t\t{\"(Image).ColorModel\", Method, 0, \"\"},\n\t\t{\"(Image).Set\", Method, 0, \"\"},\n\t\t{\"(Op).Draw\", Method, 2, \"\"},\n\t\t{\"(Quantizer).Quantize\", Method, 2, \"\"},\n\t\t{\"(RGBA64Image).At\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).Bounds\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).ColorModel\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).Set\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"Draw\", Func, 0, \"func(dst Image, r image.Rectangle, src image.Image, sp image.Point, op Op)\"},\n\t\t{\"DrawMask\", Func, 0, \"func(dst Image, r image.Rectangle, src image.Image, sp image.Point, mask image.Image, mp image.Point, op Op)\"},\n\t\t{\"Drawer\", Type, 2, \"\"},\n\t\t{\"FloydSteinberg\", Var, 2, \"\"},\n\t\t{\"Image\", Type, 0, \"\"},\n\t\t{\"Op\", Type, 0, \"\"},\n\t\t{\"Over\", Const, 0, \"\"},\n\t\t{\"Quantizer\", Type, 2, \"\"},\n\t\t{\"RGBA64Image\", Type, 17, \"\"},\n\t\t{\"Src\", Const, 0, \"\"},\n\t},\n\t\"image/gif\": {\n\t\t{\"Decode\", Func, 0, \"func(r io.Reader) (image.Image, error)\"},\n\t\t{\"DecodeAll\", Func, 0, \"func(r io.Reader) (*GIF, error)\"},\n\t\t{\"DecodeConfig\", Func, 0, \"func(r io.Reader) (image.Config, error)\"},\n\t\t{\"DisposalBackground\", Const, 5, \"\"},\n\t\t{\"DisposalNone\", Const, 5, \"\"},\n\t\t{\"DisposalPrevious\", Const, 5, \"\"},\n\t\t{\"Encode\", Func, 2, \"func(w io.Writer, m image.Image, o *Options) error\"},\n\t\t{\"EncodeAll\", Func, 2, \"func(w io.Writer, g *GIF) error\"},\n\t\t{\"GIF\", Type, 0, \"\"},\n\t\t{\"GIF.BackgroundIndex\", Field, 5, \"\"},\n\t\t{\"GIF.Config\", Field, 5, \"\"},\n\t\t{\"GIF.Delay\", Field, 0, \"\"},\n\t\t{\"GIF.Disposal\", Field, 5, \"\"},\n\t\t{\"GIF.Image\", Field, 0, \"\"},\n\t\t{\"GIF.LoopCount\", Field, 0, \"\"},\n\t\t{\"Options\", Type, 2, \"\"},\n\t\t{\"Options.Drawer\", Field, 2, \"\"},\n\t\t{\"Options.NumColors\", Field, 2, \"\"},\n\t\t{\"Options.Quantizer\", Field, 2, \"\"},\n\t},\n\t\"image/jpeg\": {\n\t\t{\"(FormatError).Error\", Method, 0, \"\"},\n\t\t{\"(Reader).Read\", Method, 0, \"\"},\n\t\t{\"(Reader).ReadByte\", Method, 0, \"\"},\n\t\t{\"(UnsupportedError).Error\", Method, 0, \"\"},\n\t\t{\"Decode\", Func, 0, \"func(r io.Reader) (image.Image, error)\"},\n\t\t{\"DecodeConfig\", Func, 0, \"func(r io.Reader) (image.Config, error)\"},\n\t\t{\"DefaultQuality\", Const, 0, \"\"},\n\t\t{\"Encode\", Func, 0, \"func(w io.Writer, m image.Image, o *Options) error\"},\n\t\t{\"FormatError\", Type, 0, \"\"},\n\t\t{\"Options\", Type, 0, \"\"},\n\t\t{\"Options.Quality\", Field, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"UnsupportedError\", Type, 0, \"\"},\n\t},\n\t\"image/png\": {\n\t\t{\"(*Encoder).Encode\", Method, 4, \"\"},\n\t\t{\"(EncoderBufferPool).Get\", Method, 9, \"\"},\n\t\t{\"(EncoderBufferPool).Put\", Method, 9, \"\"},\n\t\t{\"(FormatError).Error\", Method, 0, \"\"},\n\t\t{\"(UnsupportedError).Error\", Method, 0, \"\"},\n\t\t{\"BestCompression\", Const, 4, \"\"},\n\t\t{\"BestSpeed\", Const, 4, \"\"},\n\t\t{\"CompressionLevel\", Type, 4, \"\"},\n\t\t{\"Decode\", Func, 0, \"func(r io.Reader) (image.Image, error)\"},\n\t\t{\"DecodeConfig\", Func, 0, \"func(r io.Reader) (image.Config, error)\"},\n\t\t{\"DefaultCompression\", Const, 4, \"\"},\n\t\t{\"Encode\", Func, 0, \"func(w io.Writer, m image.Image) error\"},\n\t\t{\"Encoder\", Type, 4, \"\"},\n\t\t{\"Encoder.BufferPool\", Field, 9, \"\"},\n\t\t{\"Encoder.CompressionLevel\", Field, 4, \"\"},\n\t\t{\"EncoderBuffer\", Type, 9, \"\"},\n\t\t{\"EncoderBufferPool\", Type, 9, \"\"},\n\t\t{\"FormatError\", Type, 0, \"\"},\n\t\t{\"NoCompression\", Const, 4, \"\"},\n\t\t{\"UnsupportedError\", Type, 0, \"\"},\n\t},\n\t\"index/suffixarray\": {\n\t\t{\"(*Index).Bytes\", Method, 0, \"\"},\n\t\t{\"(*Index).FindAllIndex\", Method, 0, \"\"},\n\t\t{\"(*Index).Lookup\", Method, 0, \"\"},\n\t\t{\"(*Index).Read\", Method, 0, \"\"},\n\t\t{\"(*Index).Write\", Method, 0, \"\"},\n\t\t{\"Index\", Type, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func(data []byte) *Index\"},\n\t},\n\t\"io\": {\n\t\t{\"(*LimitedReader).Read\", Method, 0, \"\"},\n\t\t{\"(*OffsetWriter).Seek\", Method, 20, \"\"},\n\t\t{\"(*OffsetWriter).Write\", Method, 20, \"\"},\n\t\t{\"(*OffsetWriter).WriteAt\", Method, 20, \"\"},\n\t\t{\"(*PipeReader).Close\", Method, 0, \"\"},\n\t\t{\"(*PipeReader).CloseWithError\", Method, 0, \"\"},\n\t\t{\"(*PipeReader).Read\", Method, 0, \"\"},\n\t\t{\"(*PipeWriter).Close\", Method, 0, \"\"},\n\t\t{\"(*PipeWriter).CloseWithError\", Method, 0, \"\"},\n\t\t{\"(*PipeWriter).Write\", Method, 0, \"\"},\n\t\t{\"(*SectionReader).Outer\", Method, 22, \"\"},\n\t\t{\"(*SectionReader).Read\", Method, 0, \"\"},\n\t\t{\"(*SectionReader).ReadAt\", Method, 0, \"\"},\n\t\t{\"(*SectionReader).Seek\", Method, 0, \"\"},\n\t\t{\"(*SectionReader).Size\", Method, 0, \"\"},\n\t\t{\"(ByteReader).ReadByte\", Method, 0, \"\"},\n\t\t{\"(ByteScanner).ReadByte\", Method, 0, \"\"},\n\t\t{\"(ByteScanner).UnreadByte\", Method, 0, \"\"},\n\t\t{\"(ByteWriter).WriteByte\", Method, 1, \"\"},\n\t\t{\"(Closer).Close\", Method, 0, \"\"},\n\t\t{\"(ReadCloser).Close\", Method, 0, \"\"},\n\t\t{\"(ReadCloser).Read\", Method, 0, \"\"},\n\t\t{\"(ReadSeekCloser).Close\", Method, 16, \"\"},\n\t\t{\"(ReadSeekCloser).Read\", Method, 16, \"\"},\n\t\t{\"(ReadSeekCloser).Seek\", Method, 16, \"\"},\n\t\t{\"(ReadSeeker).Read\", Method, 0, \"\"},\n\t\t{\"(ReadSeeker).Seek\", Method, 0, \"\"},\n\t\t{\"(ReadWriteCloser).Close\", Method, 0, \"\"},\n\t\t{\"(ReadWriteCloser).Read\", Method, 0, \"\"},\n\t\t{\"(ReadWriteCloser).Write\", Method, 0, \"\"},\n\t\t{\"(ReadWriteSeeker).Read\", Method, 0, \"\"},\n\t\t{\"(ReadWriteSeeker).Seek\", Method, 0, \"\"},\n\t\t{\"(ReadWriteSeeker).Write\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).Read\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).Write\", Method, 0, \"\"},\n\t\t{\"(Reader).Read\", Method, 0, \"\"},\n\t\t{\"(ReaderAt).ReadAt\", Method, 0, \"\"},\n\t\t{\"(ReaderFrom).ReadFrom\", Method, 0, \"\"},\n\t\t{\"(RuneReader).ReadRune\", Method, 0, \"\"},\n\t\t{\"(RuneScanner).ReadRune\", Method, 0, \"\"},\n\t\t{\"(RuneScanner).UnreadRune\", Method, 0, \"\"},\n\t\t{\"(Seeker).Seek\", Method, 0, \"\"},\n\t\t{\"(StringWriter).WriteString\", Method, 12, \"\"},\n\t\t{\"(WriteCloser).Close\", Method, 0, \"\"},\n\t\t{\"(WriteCloser).Write\", Method, 0, \"\"},\n\t\t{\"(WriteSeeker).Seek\", Method, 0, \"\"},\n\t\t{\"(WriteSeeker).Write\", Method, 0, \"\"},\n\t\t{\"(Writer).Write\", Method, 0, \"\"},\n\t\t{\"(WriterAt).WriteAt\", Method, 0, \"\"},\n\t\t{\"(WriterTo).WriteTo\", Method, 0, \"\"},\n\t\t{\"ByteReader\", Type, 0, \"\"},\n\t\t{\"ByteScanner\", Type, 0, \"\"},\n\t\t{\"ByteWriter\", Type, 1, \"\"},\n\t\t{\"Closer\", Type, 0, \"\"},\n\t\t{\"Copy\", Func, 0, \"func(dst Writer, src Reader) (written int64, err error)\"},\n\t\t{\"CopyBuffer\", Func, 5, \"func(dst Writer, src Reader, buf []byte) (written int64, err error)\"},\n\t\t{\"CopyN\", Func, 0, \"func(dst Writer, src Reader, n int64) (written int64, err error)\"},\n\t\t{\"Discard\", Var, 16, \"\"},\n\t\t{\"EOF\", Var, 0, \"\"},\n\t\t{\"ErrClosedPipe\", Var, 0, \"\"},\n\t\t{\"ErrNoProgress\", Var, 1, \"\"},\n\t\t{\"ErrShortBuffer\", Var, 0, \"\"},\n\t\t{\"ErrShortWrite\", Var, 0, \"\"},\n\t\t{\"ErrUnexpectedEOF\", Var, 0, \"\"},\n\t\t{\"LimitReader\", Func, 0, \"func(r Reader, n int64) Reader\"},\n\t\t{\"LimitedReader\", Type, 0, \"\"},\n\t\t{\"LimitedReader.N\", Field, 0, \"\"},\n\t\t{\"LimitedReader.R\", Field, 0, \"\"},\n\t\t{\"MultiReader\", Func, 0, \"func(readers ...Reader) Reader\"},\n\t\t{\"MultiWriter\", Func, 0, \"func(writers ...Writer) Writer\"},\n\t\t{\"NewOffsetWriter\", Func, 20, \"func(w WriterAt, off int64) *OffsetWriter\"},\n\t\t{\"NewSectionReader\", Func, 0, \"func(r ReaderAt, off int64, n int64) *SectionReader\"},\n\t\t{\"NopCloser\", Func, 16, \"func(r Reader) ReadCloser\"},\n\t\t{\"OffsetWriter\", Type, 20, \"\"},\n\t\t{\"Pipe\", Func, 0, \"func() (*PipeReader, *PipeWriter)\"},\n\t\t{\"PipeReader\", Type, 0, \"\"},\n\t\t{\"PipeWriter\", Type, 0, \"\"},\n\t\t{\"ReadAll\", Func, 16, \"func(r Reader) ([]byte, error)\"},\n\t\t{\"ReadAtLeast\", Func, 0, \"func(r Reader, buf []byte, min int) (n int, err error)\"},\n\t\t{\"ReadCloser\", Type, 0, \"\"},\n\t\t{\"ReadFull\", Func, 0, \"func(r Reader, buf []byte) (n int, err error)\"},\n\t\t{\"ReadSeekCloser\", Type, 16, \"\"},\n\t\t{\"ReadSeeker\", Type, 0, \"\"},\n\t\t{\"ReadWriteCloser\", Type, 0, \"\"},\n\t\t{\"ReadWriteSeeker\", Type, 0, \"\"},\n\t\t{\"ReadWriter\", Type, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"ReaderAt\", Type, 0, \"\"},\n\t\t{\"ReaderFrom\", Type, 0, \"\"},\n\t\t{\"RuneReader\", Type, 0, \"\"},\n\t\t{\"RuneScanner\", Type, 0, \"\"},\n\t\t{\"SectionReader\", Type, 0, \"\"},\n\t\t{\"SeekCurrent\", Const, 7, \"\"},\n\t\t{\"SeekEnd\", Const, 7, \"\"},\n\t\t{\"SeekStart\", Const, 7, \"\"},\n\t\t{\"Seeker\", Type, 0, \"\"},\n\t\t{\"StringWriter\", Type, 12, \"\"},\n\t\t{\"TeeReader\", Func, 0, \"func(r Reader, w Writer) Reader\"},\n\t\t{\"WriteCloser\", Type, 0, \"\"},\n\t\t{\"WriteSeeker\", Type, 0, \"\"},\n\t\t{\"WriteString\", Func, 0, \"func(w Writer, s string) (n int, err error)\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t\t{\"WriterAt\", Type, 0, \"\"},\n\t\t{\"WriterTo\", Type, 0, \"\"},\n\t},\n\t\"io/fs\": {\n\t\t{\"(*PathError).Error\", Method, 16, \"\"},\n\t\t{\"(*PathError).Timeout\", Method, 16, \"\"},\n\t\t{\"(*PathError).Unwrap\", Method, 16, \"\"},\n\t\t{\"(DirEntry).Info\", Method, 16, \"\"},\n\t\t{\"(DirEntry).IsDir\", Method, 16, \"\"},\n\t\t{\"(DirEntry).Name\", Method, 16, \"\"},\n\t\t{\"(DirEntry).Type\", Method, 16, \"\"},\n\t\t{\"(FS).Open\", Method, 16, \"\"},\n\t\t{\"(File).Close\", Method, 16, \"\"},\n\t\t{\"(File).Read\", Method, 16, \"\"},\n\t\t{\"(File).Stat\", Method, 16, \"\"},\n\t\t{\"(FileInfo).IsDir\", Method, 16, \"\"},\n\t\t{\"(FileInfo).ModTime\", Method, 16, \"\"},\n\t\t{\"(FileInfo).Mode\", Method, 16, \"\"},\n\t\t{\"(FileInfo).Name\", Method, 16, \"\"},\n\t\t{\"(FileInfo).Size\", Method, 16, \"\"},\n\t\t{\"(FileInfo).Sys\", Method, 16, \"\"},\n\t\t{\"(FileMode).IsDir\", Method, 16, \"\"},\n\t\t{\"(FileMode).IsRegular\", Method, 16, \"\"},\n\t\t{\"(FileMode).Perm\", Method, 16, \"\"},\n\t\t{\"(FileMode).String\", Method, 16, \"\"},\n\t\t{\"(FileMode).Type\", Method, 16, \"\"},\n\t\t{\"(GlobFS).Glob\", Method, 16, \"\"},\n\t\t{\"(GlobFS).Open\", Method, 16, \"\"},\n\t\t{\"(ReadDirFS).Open\", Method, 16, \"\"},\n\t\t{\"(ReadDirFS).ReadDir\", Method, 16, \"\"},\n\t\t{\"(ReadDirFile).Close\", Method, 16, \"\"},\n\t\t{\"(ReadDirFile).Read\", Method, 16, \"\"},\n\t\t{\"(ReadDirFile).ReadDir\", Method, 16, \"\"},\n\t\t{\"(ReadDirFile).Stat\", Method, 16, \"\"},\n\t\t{\"(ReadFileFS).Open\", Method, 16, \"\"},\n\t\t{\"(ReadFileFS).ReadFile\", Method, 16, \"\"},\n\t\t{\"(ReadLinkFS).Lstat\", Method, 25, \"\"},\n\t\t{\"(ReadLinkFS).Open\", Method, 25, \"\"},\n\t\t{\"(ReadLinkFS).ReadLink\", Method, 25, \"\"},\n\t\t{\"(StatFS).Open\", Method, 16, \"\"},\n\t\t{\"(StatFS).Stat\", Method, 16, \"\"},\n\t\t{\"(SubFS).Open\", Method, 16, \"\"},\n\t\t{\"(SubFS).Sub\", Method, 16, \"\"},\n\t\t{\"DirEntry\", Type, 16, \"\"},\n\t\t{\"ErrClosed\", Var, 16, \"\"},\n\t\t{\"ErrExist\", Var, 16, \"\"},\n\t\t{\"ErrInvalid\", Var, 16, \"\"},\n\t\t{\"ErrNotExist\", Var, 16, \"\"},\n\t\t{\"ErrPermission\", Var, 16, \"\"},\n\t\t{\"FS\", Type, 16, \"\"},\n\t\t{\"File\", Type, 16, \"\"},\n\t\t{\"FileInfo\", Type, 16, \"\"},\n\t\t{\"FileInfoToDirEntry\", Func, 17, \"func(info FileInfo) DirEntry\"},\n\t\t{\"FileMode\", Type, 16, \"\"},\n\t\t{\"FormatDirEntry\", Func, 21, \"func(dir DirEntry) string\"},\n\t\t{\"FormatFileInfo\", Func, 21, \"func(info FileInfo) string\"},\n\t\t{\"Glob\", Func, 16, \"func(fsys FS, pattern string) (matches []string, err error)\"},\n\t\t{\"GlobFS\", Type, 16, \"\"},\n\t\t{\"Lstat\", Func, 25, \"func(fsys FS, name string) (FileInfo, error)\"},\n\t\t{\"ModeAppend\", Const, 16, \"\"},\n\t\t{\"ModeCharDevice\", Const, 16, \"\"},\n\t\t{\"ModeDevice\", Const, 16, \"\"},\n\t\t{\"ModeDir\", Const, 16, \"\"},\n\t\t{\"ModeExclusive\", Const, 16, \"\"},\n\t\t{\"ModeIrregular\", Const, 16, \"\"},\n\t\t{\"ModeNamedPipe\", Const, 16, \"\"},\n\t\t{\"ModePerm\", Const, 16, \"\"},\n\t\t{\"ModeSetgid\", Const, 16, \"\"},\n\t\t{\"ModeSetuid\", Const, 16, \"\"},\n\t\t{\"ModeSocket\", Const, 16, \"\"},\n\t\t{\"ModeSticky\", Const, 16, \"\"},\n\t\t{\"ModeSymlink\", Const, 16, \"\"},\n\t\t{\"ModeTemporary\", Const, 16, \"\"},\n\t\t{\"ModeType\", Const, 16, \"\"},\n\t\t{\"PathError\", Type, 16, \"\"},\n\t\t{\"PathError.Err\", Field, 16, \"\"},\n\t\t{\"PathError.Op\", Field, 16, \"\"},\n\t\t{\"PathError.Path\", Field, 16, \"\"},\n\t\t{\"ReadDir\", Func, 16, \"func(fsys FS, name string) ([]DirEntry, error)\"},\n\t\t{\"ReadDirFS\", Type, 16, \"\"},\n\t\t{\"ReadDirFile\", Type, 16, \"\"},\n\t\t{\"ReadFile\", Func, 16, \"func(fsys FS, name string) ([]byte, error)\"},\n\t\t{\"ReadFileFS\", Type, 16, \"\"},\n\t\t{\"ReadLink\", Func, 25, \"func(fsys FS, name string) (string, error)\"},\n\t\t{\"ReadLinkFS\", Type, 25, \"\"},\n\t\t{\"SkipAll\", Var, 20, \"\"},\n\t\t{\"SkipDir\", Var, 16, \"\"},\n\t\t{\"Stat\", Func, 16, \"func(fsys FS, name string) (FileInfo, error)\"},\n\t\t{\"StatFS\", Type, 16, \"\"},\n\t\t{\"Sub\", Func, 16, \"func(fsys FS, dir string) (FS, error)\"},\n\t\t{\"SubFS\", Type, 16, \"\"},\n\t\t{\"ValidPath\", Func, 16, \"func(name string) bool\"},\n\t\t{\"WalkDir\", Func, 16, \"func(fsys FS, root string, fn WalkDirFunc) error\"},\n\t\t{\"WalkDirFunc\", Type, 16, \"\"},\n\t},\n\t\"io/ioutil\": {\n\t\t{\"Discard\", Var, 0, \"\"},\n\t\t{\"NopCloser\", Func, 0, \"func(r io.Reader) io.ReadCloser\"},\n\t\t{\"ReadAll\", Func, 0, \"func(r io.Reader) ([]byte, error)\"},\n\t\t{\"ReadDir\", Func, 0, \"func(dirname string) ([]fs.FileInfo, error)\"},\n\t\t{\"ReadFile\", Func, 0, \"func(filename string) ([]byte, error)\"},\n\t\t{\"TempDir\", Func, 0, \"func(dir string, pattern string) (name string, err error)\"},\n\t\t{\"TempFile\", Func, 0, \"func(dir string, pattern string) (f *os.File, err error)\"},\n\t\t{\"WriteFile\", Func, 0, \"func(filename string, data []byte, perm fs.FileMode) error\"},\n\t},\n\t\"iter\": {\n\t\t{\"Pull\", Func, 23, \"func[V any](seq Seq[V]) (next func() (V, bool), stop func())\"},\n\t\t{\"Pull2\", Func, 23, \"func[K, V any](seq Seq2[K, V]) (next func() (K, V, bool), stop func())\"},\n\t\t{\"Seq\", Type, 23, \"\"},\n\t\t{\"Seq2\", Type, 23, \"\"},\n\t},\n\t\"log\": {\n\t\t{\"(*Logger).Fatal\", Method, 0, \"\"},\n\t\t{\"(*Logger).Fatalf\", Method, 0, \"\"},\n\t\t{\"(*Logger).Fatalln\", Method, 0, \"\"},\n\t\t{\"(*Logger).Flags\", Method, 0, \"\"},\n\t\t{\"(*Logger).Output\", Method, 0, \"\"},\n\t\t{\"(*Logger).Panic\", Method, 0, \"\"},\n\t\t{\"(*Logger).Panicf\", Method, 0, \"\"},\n\t\t{\"(*Logger).Panicln\", Method, 0, \"\"},\n\t\t{\"(*Logger).Prefix\", Method, 0, \"\"},\n\t\t{\"(*Logger).Print\", Method, 0, \"\"},\n\t\t{\"(*Logger).Printf\", Method, 0, \"\"},\n\t\t{\"(*Logger).Println\", Method, 0, \"\"},\n\t\t{\"(*Logger).SetFlags\", Method, 0, \"\"},\n\t\t{\"(*Logger).SetOutput\", Method, 5, \"\"},\n\t\t{\"(*Logger).SetPrefix\", Method, 0, \"\"},\n\t\t{\"(*Logger).Writer\", Method, 12, \"\"},\n\t\t{\"Default\", Func, 16, \"func() *Logger\"},\n\t\t{\"Fatal\", Func, 0, \"func(v ...any)\"},\n\t\t{\"Fatalf\", Func, 0, \"func(format string, v ...any)\"},\n\t\t{\"Fatalln\", Func, 0, \"func(v ...any)\"},\n\t\t{\"Flags\", Func, 0, \"func() int\"},\n\t\t{\"LUTC\", Const, 5, \"\"},\n\t\t{\"Ldate\", Const, 0, \"\"},\n\t\t{\"Llongfile\", Const, 0, \"\"},\n\t\t{\"Lmicroseconds\", Const, 0, \"\"},\n\t\t{\"Lmsgprefix\", Const, 14, \"\"},\n\t\t{\"Logger\", Type, 0, \"\"},\n\t\t{\"Lshortfile\", Const, 0, \"\"},\n\t\t{\"LstdFlags\", Const, 0, \"\"},\n\t\t{\"Ltime\", Const, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func(out io.Writer, prefix string, flag int) *Logger\"},\n\t\t{\"Output\", Func, 5, \"func(calldepth int, s string) error\"},\n\t\t{\"Panic\", Func, 0, \"func(v ...any)\"},\n\t\t{\"Panicf\", Func, 0, \"func(format string, v ...any)\"},\n\t\t{\"Panicln\", Func, 0, \"func(v ...any)\"},\n\t\t{\"Prefix\", Func, 0, \"func() string\"},\n\t\t{\"Print\", Func, 0, \"func(v ...any)\"},\n\t\t{\"Printf\", Func, 0, \"func(format string, v ...any)\"},\n\t\t{\"Println\", Func, 0, \"func(v ...any)\"},\n\t\t{\"SetFlags\", Func, 0, \"func(flag int)\"},\n\t\t{\"SetOutput\", Func, 0, \"func(w io.Writer)\"},\n\t\t{\"SetPrefix\", Func, 0, \"func(prefix string)\"},\n\t\t{\"Writer\", Func, 13, \"func() io.Writer\"},\n\t},\n\t\"log/slog\": {\n\t\t{\"(*JSONHandler).Enabled\", Method, 21, \"\"},\n\t\t{\"(*JSONHandler).Handle\", Method, 21, \"\"},\n\t\t{\"(*JSONHandler).WithAttrs\", Method, 21, \"\"},\n\t\t{\"(*JSONHandler).WithGroup\", Method, 21, \"\"},\n\t\t{\"(*Level).UnmarshalJSON\", Method, 21, \"\"},\n\t\t{\"(*Level).UnmarshalText\", Method, 21, \"\"},\n\t\t{\"(*LevelVar).AppendText\", Method, 24, \"\"},\n\t\t{\"(*LevelVar).Level\", Method, 21, \"\"},\n\t\t{\"(*LevelVar).MarshalText\", Method, 21, \"\"},\n\t\t{\"(*LevelVar).Set\", Method, 21, \"\"},\n\t\t{\"(*LevelVar).String\", Method, 21, \"\"},\n\t\t{\"(*LevelVar).UnmarshalText\", Method, 21, \"\"},\n\t\t{\"(*Logger).Debug\", Method, 21, \"\"},\n\t\t{\"(*Logger).DebugContext\", Method, 21, \"\"},\n\t\t{\"(*Logger).Enabled\", Method, 21, \"\"},\n\t\t{\"(*Logger).Error\", Method, 21, \"\"},\n\t\t{\"(*Logger).ErrorContext\", Method, 21, \"\"},\n\t\t{\"(*Logger).Handler\", Method, 21, \"\"},\n\t\t{\"(*Logger).Info\", Method, 21, \"\"},\n\t\t{\"(*Logger).InfoContext\", Method, 21, \"\"},\n\t\t{\"(*Logger).Log\", Method, 21, \"\"},\n\t\t{\"(*Logger).LogAttrs\", Method, 21, \"\"},\n\t\t{\"(*Logger).Warn\", Method, 21, \"\"},\n\t\t{\"(*Logger).WarnContext\", Method, 21, \"\"},\n\t\t{\"(*Logger).With\", Method, 21, \"\"},\n\t\t{\"(*Logger).WithGroup\", Method, 21, \"\"},\n\t\t{\"(*MultiHandler).Enabled\", Method, 26, \"\"},\n\t\t{\"(*MultiHandler).Handle\", Method, 26, \"\"},\n\t\t{\"(*MultiHandler).WithAttrs\", Method, 26, \"\"},\n\t\t{\"(*MultiHandler).WithGroup\", Method, 26, \"\"},\n\t\t{\"(*Record).Add\", Method, 21, \"\"},\n\t\t{\"(*Record).AddAttrs\", Method, 21, \"\"},\n\t\t{\"(*TextHandler).Enabled\", Method, 21, \"\"},\n\t\t{\"(*TextHandler).Handle\", Method, 21, \"\"},\n\t\t{\"(*TextHandler).WithAttrs\", Method, 21, \"\"},\n\t\t{\"(*TextHandler).WithGroup\", Method, 21, \"\"},\n\t\t{\"(Attr).Equal\", Method, 21, \"\"},\n\t\t{\"(Attr).String\", Method, 21, \"\"},\n\t\t{\"(Handler).Enabled\", Method, 21, \"\"},\n\t\t{\"(Handler).Handle\", Method, 21, \"\"},\n\t\t{\"(Handler).WithAttrs\", Method, 21, \"\"},\n\t\t{\"(Handler).WithGroup\", Method, 21, \"\"},\n\t\t{\"(Kind).String\", Method, 21, \"\"},\n\t\t{\"(Level).AppendText\", Method, 24, \"\"},\n\t\t{\"(Level).Level\", Method, 21, \"\"},\n\t\t{\"(Level).MarshalJSON\", Method, 21, \"\"},\n\t\t{\"(Level).MarshalText\", Method, 21, \"\"},\n\t\t{\"(Level).String\", Method, 21, \"\"},\n\t\t{\"(Leveler).Level\", Method, 21, \"\"},\n\t\t{\"(LogValuer).LogValue\", Method, 21, \"\"},\n\t\t{\"(Record).Attrs\", Method, 21, \"\"},\n\t\t{\"(Record).Clone\", Method, 21, \"\"},\n\t\t{\"(Record).NumAttrs\", Method, 21, \"\"},\n\t\t{\"(Record).Source\", Method, 25, \"\"},\n\t\t{\"(Value).Any\", Method, 21, \"\"},\n\t\t{\"(Value).Bool\", Method, 21, \"\"},\n\t\t{\"(Value).Duration\", Method, 21, \"\"},\n\t\t{\"(Value).Equal\", Method, 21, \"\"},\n\t\t{\"(Value).Float64\", Method, 21, \"\"},\n\t\t{\"(Value).Group\", Method, 21, \"\"},\n\t\t{\"(Value).Int64\", Method, 21, \"\"},\n\t\t{\"(Value).Kind\", Method, 21, \"\"},\n\t\t{\"(Value).LogValuer\", Method, 21, \"\"},\n\t\t{\"(Value).Resolve\", Method, 21, \"\"},\n\t\t{\"(Value).String\", Method, 21, \"\"},\n\t\t{\"(Value).Time\", Method, 21, \"\"},\n\t\t{\"(Value).Uint64\", Method, 21, \"\"},\n\t\t{\"Any\", Func, 21, \"func(key string, value any) Attr\"},\n\t\t{\"AnyValue\", Func, 21, \"func(v any) Value\"},\n\t\t{\"Attr\", Type, 21, \"\"},\n\t\t{\"Attr.Key\", Field, 21, \"\"},\n\t\t{\"Attr.Value\", Field, 21, \"\"},\n\t\t{\"Bool\", Func, 21, \"func(key string, v bool) Attr\"},\n\t\t{\"BoolValue\", Func, 21, \"func(v bool) Value\"},\n\t\t{\"Debug\", Func, 21, \"func(msg string, args ...any)\"},\n\t\t{\"DebugContext\", Func, 21, \"func(ctx context.Context, msg string, args ...any)\"},\n\t\t{\"Default\", Func, 21, \"func() *Logger\"},\n\t\t{\"DiscardHandler\", Var, 24, \"\"},\n\t\t{\"Duration\", Func, 21, \"func(key string, v time.Duration) Attr\"},\n\t\t{\"DurationValue\", Func, 21, \"func(v time.Duration) Value\"},\n\t\t{\"Error\", Func, 21, \"func(msg string, args ...any)\"},\n\t\t{\"ErrorContext\", Func, 21, \"func(ctx context.Context, msg string, args ...any)\"},\n\t\t{\"Float64\", Func, 21, \"func(key string, v float64) Attr\"},\n\t\t{\"Float64Value\", Func, 21, \"func(v float64) Value\"},\n\t\t{\"Group\", Func, 21, \"func(key string, args ...any) Attr\"},\n\t\t{\"GroupAttrs\", Func, 25, \"func(key string, attrs ...Attr) Attr\"},\n\t\t{\"GroupValue\", Func, 21, \"func(as ...Attr) Value\"},\n\t\t{\"Handler\", Type, 21, \"\"},\n\t\t{\"HandlerOptions\", Type, 21, \"\"},\n\t\t{\"HandlerOptions.AddSource\", Field, 21, \"\"},\n\t\t{\"HandlerOptions.Level\", Field, 21, \"\"},\n\t\t{\"HandlerOptions.ReplaceAttr\", Field, 21, \"\"},\n\t\t{\"Info\", Func, 21, \"func(msg string, args ...any)\"},\n\t\t{\"InfoContext\", Func, 21, \"func(ctx context.Context, msg string, args ...any)\"},\n\t\t{\"Int\", Func, 21, \"func(key string, value int) Attr\"},\n\t\t{\"Int64\", Func, 21, \"func(key string, value int64) Attr\"},\n\t\t{\"Int64Value\", Func, 21, \"func(v int64) Value\"},\n\t\t{\"IntValue\", Func, 21, \"func(v int) Value\"},\n\t\t{\"JSONHandler\", Type, 21, \"\"},\n\t\t{\"Kind\", Type, 21, \"\"},\n\t\t{\"KindAny\", Const, 21, \"\"},\n\t\t{\"KindBool\", Const, 21, \"\"},\n\t\t{\"KindDuration\", Const, 21, \"\"},\n\t\t{\"KindFloat64\", Const, 21, \"\"},\n\t\t{\"KindGroup\", Const, 21, \"\"},\n\t\t{\"KindInt64\", Const, 21, \"\"},\n\t\t{\"KindLogValuer\", Const, 21, \"\"},\n\t\t{\"KindString\", Const, 21, \"\"},\n\t\t{\"KindTime\", Const, 21, \"\"},\n\t\t{\"KindUint64\", Const, 21, \"\"},\n\t\t{\"Level\", Type, 21, \"\"},\n\t\t{\"LevelDebug\", Const, 21, \"\"},\n\t\t{\"LevelError\", Const, 21, \"\"},\n\t\t{\"LevelInfo\", Const, 21, \"\"},\n\t\t{\"LevelKey\", Const, 21, \"\"},\n\t\t{\"LevelVar\", Type, 21, \"\"},\n\t\t{\"LevelWarn\", Const, 21, \"\"},\n\t\t{\"Leveler\", Type, 21, \"\"},\n\t\t{\"Log\", Func, 21, \"func(ctx context.Context, level Level, msg string, args ...any)\"},\n\t\t{\"LogAttrs\", Func, 21, \"func(ctx context.Context, level Level, msg string, attrs ...Attr)\"},\n\t\t{\"LogValuer\", Type, 21, \"\"},\n\t\t{\"Logger\", Type, 21, \"\"},\n\t\t{\"MessageKey\", Const, 21, \"\"},\n\t\t{\"MultiHandler\", Type, 26, \"\"},\n\t\t{\"New\", Func, 21, \"func(h Handler) *Logger\"},\n\t\t{\"NewJSONHandler\", Func, 21, \"func(w io.Writer, opts *HandlerOptions) *JSONHandler\"},\n\t\t{\"NewLogLogger\", Func, 21, \"func(h Handler, level Level) *log.Logger\"},\n\t\t{\"NewMultiHandler\", Func, 26, \"func(handlers ...Handler) *MultiHandler\"},\n\t\t{\"NewRecord\", Func, 21, \"func(t time.Time, level Level, msg string, pc uintptr) Record\"},\n\t\t{\"NewTextHandler\", Func, 21, \"func(w io.Writer, opts *HandlerOptions) *TextHandler\"},\n\t\t{\"Record\", Type, 21, \"\"},\n\t\t{\"Record.Level\", Field, 21, \"\"},\n\t\t{\"Record.Message\", Field, 21, \"\"},\n\t\t{\"Record.PC\", Field, 21, \"\"},\n\t\t{\"Record.Time\", Field, 21, \"\"},\n\t\t{\"SetDefault\", Func, 21, \"func(l *Logger)\"},\n\t\t{\"SetLogLoggerLevel\", Func, 22, \"func(level Level) (oldLevel Level)\"},\n\t\t{\"Source\", Type, 21, \"\"},\n\t\t{\"Source.File\", Field, 21, \"\"},\n\t\t{\"Source.Function\", Field, 21, \"\"},\n\t\t{\"Source.Line\", Field, 21, \"\"},\n\t\t{\"SourceKey\", Const, 21, \"\"},\n\t\t{\"String\", Func, 21, \"func(key string, value string) Attr\"},\n\t\t{\"StringValue\", Func, 21, \"func(value string) Value\"},\n\t\t{\"TextHandler\", Type, 21, \"\"},\n\t\t{\"Time\", Func, 21, \"func(key string, v time.Time) Attr\"},\n\t\t{\"TimeKey\", Const, 21, \"\"},\n\t\t{\"TimeValue\", Func, 21, \"func(v time.Time) Value\"},\n\t\t{\"Uint64\", Func, 21, \"func(key string, v uint64) Attr\"},\n\t\t{\"Uint64Value\", Func, 21, \"func(v uint64) Value\"},\n\t\t{\"Value\", Type, 21, \"\"},\n\t\t{\"Warn\", Func, 21, \"func(msg string, args ...any)\"},\n\t\t{\"WarnContext\", Func, 21, \"func(ctx context.Context, msg string, args ...any)\"},\n\t\t{\"With\", Func, 21, \"func(args ...any) *Logger\"},\n\t},\n\t\"log/syslog\": {\n\t\t{\"(*Writer).Alert\", Method, 0, \"\"},\n\t\t{\"(*Writer).Close\", Method, 0, \"\"},\n\t\t{\"(*Writer).Crit\", Method, 0, \"\"},\n\t\t{\"(*Writer).Debug\", Method, 0, \"\"},\n\t\t{\"(*Writer).Emerg\", Method, 0, \"\"},\n\t\t{\"(*Writer).Err\", Method, 0, \"\"},\n\t\t{\"(*Writer).Info\", Method, 0, \"\"},\n\t\t{\"(*Writer).Notice\", Method, 0, \"\"},\n\t\t{\"(*Writer).Warning\", Method, 0, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"Dial\", Func, 0, \"func(network string, raddr string, priority Priority, tag string) (*Writer, error)\"},\n\t\t{\"LOG_ALERT\", Const, 0, \"\"},\n\t\t{\"LOG_AUTH\", Const, 1, \"\"},\n\t\t{\"LOG_AUTHPRIV\", Const, 1, \"\"},\n\t\t{\"LOG_CRIT\", Const, 0, \"\"},\n\t\t{\"LOG_CRON\", Const, 1, \"\"},\n\t\t{\"LOG_DAEMON\", Const, 1, \"\"},\n\t\t{\"LOG_DEBUG\", Const, 0, \"\"},\n\t\t{\"LOG_EMERG\", Const, 0, \"\"},\n\t\t{\"LOG_ERR\", Const, 0, \"\"},\n\t\t{\"LOG_FTP\", Const, 1, \"\"},\n\t\t{\"LOG_INFO\", Const, 0, \"\"},\n\t\t{\"LOG_KERN\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL0\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL1\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL2\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL3\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL4\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL5\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL6\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL7\", Const, 1, \"\"},\n\t\t{\"LOG_LPR\", Const, 1, \"\"},\n\t\t{\"LOG_MAIL\", Const, 1, \"\"},\n\t\t{\"LOG_NEWS\", Const, 1, \"\"},\n\t\t{\"LOG_NOTICE\", Const, 0, \"\"},\n\t\t{\"LOG_SYSLOG\", Const, 1, \"\"},\n\t\t{\"LOG_USER\", Const, 1, \"\"},\n\t\t{\"LOG_UUCP\", Const, 1, \"\"},\n\t\t{\"LOG_WARNING\", Const, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func(priority Priority, tag string) (*Writer, error)\"},\n\t\t{\"NewLogger\", Func, 0, \"func(p Priority, logFlag int) (*log.Logger, error)\"},\n\t\t{\"Priority\", Type, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"maps\": {\n\t\t{\"All\", Func, 23, \"func[Map ~map[K]V, K comparable, V any](m Map) iter.Seq2[K, V]\"},\n\t\t{\"Clone\", Func, 21, \"func[M ~map[K]V, K comparable, V any](m M) M\"},\n\t\t{\"Collect\", Func, 23, \"func[K comparable, V any](seq iter.Seq2[K, V]) map[K]V\"},\n\t\t{\"Copy\", Func, 21, \"func[M1 ~map[K]V, M2 ~map[K]V, K comparable, V any](dst M1, src M2)\"},\n\t\t{\"DeleteFunc\", Func, 21, \"func[M ~map[K]V, K comparable, V any](m M, del func(K, V) bool)\"},\n\t\t{\"Equal\", Func, 21, \"func[M1, M2 ~map[K]V, K, V comparable](m1 M1, m2 M2) bool\"},\n\t\t{\"EqualFunc\", Func, 21, \"func[M1 ~map[K]V1, M2 ~map[K]V2, K comparable, V1, V2 any](m1 M1, m2 M2, eq func(V1, V2) bool) bool\"},\n\t\t{\"Insert\", Func, 23, \"func[Map ~map[K]V, K comparable, V any](m Map, seq iter.Seq2[K, V])\"},\n\t\t{\"Keys\", Func, 23, \"func[Map ~map[K]V, K comparable, V any](m Map) iter.Seq[K]\"},\n\t\t{\"Values\", Func, 23, \"func[Map ~map[K]V, K comparable, V any](m Map) iter.Seq[V]\"},\n\t},\n\t\"math\": {\n\t\t{\"Abs\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Acos\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Acosh\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Asin\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Asinh\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Atan\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Atan2\", Func, 0, \"func(y float64, x float64) float64\"},\n\t\t{\"Atanh\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Cbrt\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Ceil\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Copysign\", Func, 0, \"func(f float64, sign float64) float64\"},\n\t\t{\"Cos\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Cosh\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Dim\", Func, 0, \"func(x float64, y float64) float64\"},\n\t\t{\"E\", Const, 0, \"\"},\n\t\t{\"Erf\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Erfc\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Erfcinv\", Func, 10, \"func(x float64) float64\"},\n\t\t{\"Erfinv\", Func, 10, \"func(x float64) float64\"},\n\t\t{\"Exp\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Exp2\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Expm1\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"FMA\", Func, 14, \"func(x float64, y float64, z float64) float64\"},\n\t\t{\"Float32bits\", Func, 0, \"func(f float32) uint32\"},\n\t\t{\"Float32frombits\", Func, 0, \"func(b uint32) float32\"},\n\t\t{\"Float64bits\", Func, 0, \"func(f float64) uint64\"},\n\t\t{\"Float64frombits\", Func, 0, \"func(b uint64) float64\"},\n\t\t{\"Floor\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Frexp\", Func, 0, \"func(f float64) (frac float64, exp int)\"},\n\t\t{\"Gamma\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Hypot\", Func, 0, \"func(p float64, q float64) float64\"},\n\t\t{\"Ilogb\", Func, 0, \"func(x float64) int\"},\n\t\t{\"Inf\", Func, 0, \"func(sign int) float64\"},\n\t\t{\"IsInf\", Func, 0, \"func(f float64, sign int) bool\"},\n\t\t{\"IsNaN\", Func, 0, \"func(f float64) (is bool)\"},\n\t\t{\"J0\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"J1\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Jn\", Func, 0, \"func(n int, x float64) float64\"},\n\t\t{\"Ldexp\", Func, 0, \"func(frac float64, exp int) float64\"},\n\t\t{\"Lgamma\", Func, 0, \"func(x float64) (lgamma float64, sign int)\"},\n\t\t{\"Ln10\", Const, 0, \"\"},\n\t\t{\"Ln2\", Const, 0, \"\"},\n\t\t{\"Log\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Log10\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Log10E\", Const, 0, \"\"},\n\t\t{\"Log1p\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Log2\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Log2E\", Const, 0, \"\"},\n\t\t{\"Logb\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Max\", Func, 0, \"func(x float64, y float64) float64\"},\n\t\t{\"MaxFloat32\", Const, 0, \"\"},\n\t\t{\"MaxFloat64\", Const, 0, \"\"},\n\t\t{\"MaxInt\", Const, 17, \"\"},\n\t\t{\"MaxInt16\", Const, 0, \"\"},\n\t\t{\"MaxInt32\", Const, 0, \"\"},\n\t\t{\"MaxInt64\", Const, 0, \"\"},\n\t\t{\"MaxInt8\", Const, 0, \"\"},\n\t\t{\"MaxUint\", Const, 17, \"\"},\n\t\t{\"MaxUint16\", Const, 0, \"\"},\n\t\t{\"MaxUint32\", Const, 0, \"\"},\n\t\t{\"MaxUint64\", Const, 0, \"\"},\n\t\t{\"MaxUint8\", Const, 0, \"\"},\n\t\t{\"Min\", Func, 0, \"func(x float64, y float64) float64\"},\n\t\t{\"MinInt\", Const, 17, \"\"},\n\t\t{\"MinInt16\", Const, 0, \"\"},\n\t\t{\"MinInt32\", Const, 0, \"\"},\n\t\t{\"MinInt64\", Const, 0, \"\"},\n\t\t{\"MinInt8\", Const, 0, \"\"},\n\t\t{\"Mod\", Func, 0, \"func(x float64, y float64) float64\"},\n\t\t{\"Modf\", Func, 0, \"func(f float64) (integer float64, fractional float64)\"},\n\t\t{\"NaN\", Func, 0, \"func() float64\"},\n\t\t{\"Nextafter\", Func, 0, \"func(x float64, y float64) (r float64)\"},\n\t\t{\"Nextafter32\", Func, 4, \"func(x float32, y float32) (r float32)\"},\n\t\t{\"Phi\", Const, 0, \"\"},\n\t\t{\"Pi\", Const, 0, \"\"},\n\t\t{\"Pow\", Func, 0, \"func(x float64, y float64) float64\"},\n\t\t{\"Pow10\", Func, 0, \"func(n int) float64\"},\n\t\t{\"Remainder\", Func, 0, \"func(x float64, y float64) float64\"},\n\t\t{\"Round\", Func, 10, \"func(x float64) float64\"},\n\t\t{\"RoundToEven\", Func, 10, \"func(x float64) float64\"},\n\t\t{\"Signbit\", Func, 0, \"func(x float64) bool\"},\n\t\t{\"Sin\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Sincos\", Func, 0, \"func(x float64) (sin float64, cos float64)\"},\n\t\t{\"Sinh\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"SmallestNonzeroFloat32\", Const, 0, \"\"},\n\t\t{\"SmallestNonzeroFloat64\", Const, 0, \"\"},\n\t\t{\"Sqrt\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Sqrt2\", Const, 0, \"\"},\n\t\t{\"SqrtE\", Const, 0, \"\"},\n\t\t{\"SqrtPhi\", Const, 0, \"\"},\n\t\t{\"SqrtPi\", Const, 0, \"\"},\n\t\t{\"Tan\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Tanh\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Trunc\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Y0\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Y1\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Yn\", Func, 0, \"func(n int, x float64) float64\"},\n\t},\n\t\"math/big\": {\n\t\t{\"(*Float).Abs\", Method, 5, \"\"},\n\t\t{\"(*Float).Acc\", Method, 5, \"\"},\n\t\t{\"(*Float).Add\", Method, 5, \"\"},\n\t\t{\"(*Float).Append\", Method, 5, \"\"},\n\t\t{\"(*Float).AppendText\", Method, 24, \"\"},\n\t\t{\"(*Float).Cmp\", Method, 5, \"\"},\n\t\t{\"(*Float).Copy\", Method, 5, \"\"},\n\t\t{\"(*Float).Float32\", Method, 5, \"\"},\n\t\t{\"(*Float).Float64\", Method, 5, \"\"},\n\t\t{\"(*Float).Format\", Method, 5, \"\"},\n\t\t{\"(*Float).GobDecode\", Method, 7, \"\"},\n\t\t{\"(*Float).GobEncode\", Method, 7, \"\"},\n\t\t{\"(*Float).Int\", Method, 5, \"\"},\n\t\t{\"(*Float).Int64\", Method, 5, \"\"},\n\t\t{\"(*Float).IsInf\", Method, 5, \"\"},\n\t\t{\"(*Float).IsInt\", Method, 5, \"\"},\n\t\t{\"(*Float).MantExp\", Method, 5, \"\"},\n\t\t{\"(*Float).MarshalText\", Method, 6, \"\"},\n\t\t{\"(*Float).MinPrec\", Method, 5, \"\"},\n\t\t{\"(*Float).Mode\", Method, 5, \"\"},\n\t\t{\"(*Float).Mul\", Method, 5, \"\"},\n\t\t{\"(*Float).Neg\", Method, 5, \"\"},\n\t\t{\"(*Float).Parse\", Method, 5, \"\"},\n\t\t{\"(*Float).Prec\", Method, 5, \"\"},\n\t\t{\"(*Float).Quo\", Method, 5, \"\"},\n\t\t{\"(*Float).Rat\", Method, 5, \"\"},\n\t\t{\"(*Float).Scan\", Method, 8, \"\"},\n\t\t{\"(*Float).Set\", Method, 5, \"\"},\n\t\t{\"(*Float).SetFloat64\", Method, 5, \"\"},\n\t\t{\"(*Float).SetInf\", Method, 5, \"\"},\n\t\t{\"(*Float).SetInt\", Method, 5, \"\"},\n\t\t{\"(*Float).SetInt64\", Method, 5, \"\"},\n\t\t{\"(*Float).SetMantExp\", Method, 5, \"\"},\n\t\t{\"(*Float).SetMode\", Method, 5, \"\"},\n\t\t{\"(*Float).SetPrec\", Method, 5, \"\"},\n\t\t{\"(*Float).SetRat\", Method, 5, \"\"},\n\t\t{\"(*Float).SetString\", Method, 5, \"\"},\n\t\t{\"(*Float).SetUint64\", Method, 5, \"\"},\n\t\t{\"(*Float).Sign\", Method, 5, \"\"},\n\t\t{\"(*Float).Signbit\", Method, 5, \"\"},\n\t\t{\"(*Float).Sqrt\", Method, 10, \"\"},\n\t\t{\"(*Float).String\", Method, 5, \"\"},\n\t\t{\"(*Float).Sub\", Method, 5, \"\"},\n\t\t{\"(*Float).Text\", Method, 5, \"\"},\n\t\t{\"(*Float).Uint64\", Method, 5, \"\"},\n\t\t{\"(*Float).UnmarshalText\", Method, 6, \"\"},\n\t\t{\"(*Int).Abs\", Method, 0, \"\"},\n\t\t{\"(*Int).Add\", Method, 0, \"\"},\n\t\t{\"(*Int).And\", Method, 0, \"\"},\n\t\t{\"(*Int).AndNot\", Method, 0, \"\"},\n\t\t{\"(*Int).Append\", Method, 6, \"\"},\n\t\t{\"(*Int).AppendText\", Method, 24, \"\"},\n\t\t{\"(*Int).Binomial\", Method, 0, \"\"},\n\t\t{\"(*Int).Bit\", Method, 0, \"\"},\n\t\t{\"(*Int).BitLen\", Method, 0, \"\"},\n\t\t{\"(*Int).Bits\", Method, 0, \"\"},\n\t\t{\"(*Int).Bytes\", Method, 0, \"\"},\n\t\t{\"(*Int).Cmp\", Method, 0, \"\"},\n\t\t{\"(*Int).CmpAbs\", Method, 10, \"\"},\n\t\t{\"(*Int).Div\", Method, 0, \"\"},\n\t\t{\"(*Int).DivMod\", Method, 0, \"\"},\n\t\t{\"(*Int).Exp\", Method, 0, \"\"},\n\t\t{\"(*Int).FillBytes\", Method, 15, \"\"},\n\t\t{\"(*Int).Float64\", Method, 21, \"\"},\n\t\t{\"(*Int).Format\", Method, 0, \"\"},\n\t\t{\"(*Int).GCD\", Method, 0, \"\"},\n\t\t{\"(*Int).GobDecode\", Method, 0, \"\"},\n\t\t{\"(*Int).GobEncode\", Method, 0, \"\"},\n\t\t{\"(*Int).Int64\", Method, 0, \"\"},\n\t\t{\"(*Int).IsInt64\", Method, 9, \"\"},\n\t\t{\"(*Int).IsUint64\", Method, 9, \"\"},\n\t\t{\"(*Int).Lsh\", Method, 0, \"\"},\n\t\t{\"(*Int).MarshalJSON\", Method, 1, \"\"},\n\t\t{\"(*Int).MarshalText\", Method, 3, \"\"},\n\t\t{\"(*Int).Mod\", Method, 0, \"\"},\n\t\t{\"(*Int).ModInverse\", Method, 0, \"\"},\n\t\t{\"(*Int).ModSqrt\", Method, 5, \"\"},\n\t\t{\"(*Int).Mul\", Method, 0, \"\"},\n\t\t{\"(*Int).MulRange\", Method, 0, \"\"},\n\t\t{\"(*Int).Neg\", Method, 0, \"\"},\n\t\t{\"(*Int).Not\", Method, 0, \"\"},\n\t\t{\"(*Int).Or\", Method, 0, \"\"},\n\t\t{\"(*Int).ProbablyPrime\", Method, 0, \"\"},\n\t\t{\"(*Int).Quo\", Method, 0, \"\"},\n\t\t{\"(*Int).QuoRem\", Method, 0, \"\"},\n\t\t{\"(*Int).Rand\", Method, 0, \"\"},\n\t\t{\"(*Int).Rem\", Method, 0, \"\"},\n\t\t{\"(*Int).Rsh\", Method, 0, \"\"},\n\t\t{\"(*Int).Scan\", Method, 0, \"\"},\n\t\t{\"(*Int).Set\", Method, 0, \"\"},\n\t\t{\"(*Int).SetBit\", Method, 0, \"\"},\n\t\t{\"(*Int).SetBits\", Method, 0, \"\"},\n\t\t{\"(*Int).SetBytes\", Method, 0, \"\"},\n\t\t{\"(*Int).SetInt64\", Method, 0, \"\"},\n\t\t{\"(*Int).SetString\", Method, 0, \"\"},\n\t\t{\"(*Int).SetUint64\", Method, 1, \"\"},\n\t\t{\"(*Int).Sign\", Method, 0, \"\"},\n\t\t{\"(*Int).Sqrt\", Method, 8, \"\"},\n\t\t{\"(*Int).String\", Method, 0, \"\"},\n\t\t{\"(*Int).Sub\", Method, 0, \"\"},\n\t\t{\"(*Int).Text\", Method, 6, \"\"},\n\t\t{\"(*Int).TrailingZeroBits\", Method, 13, \"\"},\n\t\t{\"(*Int).Uint64\", Method, 1, \"\"},\n\t\t{\"(*Int).UnmarshalJSON\", Method, 1, \"\"},\n\t\t{\"(*Int).UnmarshalText\", Method, 3, \"\"},\n\t\t{\"(*Int).Xor\", Method, 0, \"\"},\n\t\t{\"(*Rat).Abs\", Method, 0, \"\"},\n\t\t{\"(*Rat).Add\", Method, 0, \"\"},\n\t\t{\"(*Rat).AppendText\", Method, 24, \"\"},\n\t\t{\"(*Rat).Cmp\", Method, 0, \"\"},\n\t\t{\"(*Rat).Denom\", Method, 0, \"\"},\n\t\t{\"(*Rat).Float32\", Method, 4, \"\"},\n\t\t{\"(*Rat).Float64\", Method, 1, \"\"},\n\t\t{\"(*Rat).FloatPrec\", Method, 22, \"\"},\n\t\t{\"(*Rat).FloatString\", Method, 0, \"\"},\n\t\t{\"(*Rat).GobDecode\", Method, 0, \"\"},\n\t\t{\"(*Rat).GobEncode\", Method, 0, \"\"},\n\t\t{\"(*Rat).Inv\", Method, 0, \"\"},\n\t\t{\"(*Rat).IsInt\", Method, 0, \"\"},\n\t\t{\"(*Rat).MarshalText\", Method, 3, \"\"},\n\t\t{\"(*Rat).Mul\", Method, 0, \"\"},\n\t\t{\"(*Rat).Neg\", Method, 0, \"\"},\n\t\t{\"(*Rat).Num\", Method, 0, \"\"},\n\t\t{\"(*Rat).Quo\", Method, 0, \"\"},\n\t\t{\"(*Rat).RatString\", Method, 0, \"\"},\n\t\t{\"(*Rat).Scan\", Method, 0, \"\"},\n\t\t{\"(*Rat).Set\", Method, 0, \"\"},\n\t\t{\"(*Rat).SetFloat64\", Method, 1, \"\"},\n\t\t{\"(*Rat).SetFrac\", Method, 0, \"\"},\n\t\t{\"(*Rat).SetFrac64\", Method, 0, \"\"},\n\t\t{\"(*Rat).SetInt\", Method, 0, \"\"},\n\t\t{\"(*Rat).SetInt64\", Method, 0, \"\"},\n\t\t{\"(*Rat).SetString\", Method, 0, \"\"},\n\t\t{\"(*Rat).SetUint64\", Method, 13, \"\"},\n\t\t{\"(*Rat).Sign\", Method, 0, \"\"},\n\t\t{\"(*Rat).String\", Method, 0, \"\"},\n\t\t{\"(*Rat).Sub\", Method, 0, \"\"},\n\t\t{\"(*Rat).UnmarshalText\", Method, 3, \"\"},\n\t\t{\"(Accuracy).String\", Method, 5, \"\"},\n\t\t{\"(ErrNaN).Error\", Method, 5, \"\"},\n\t\t{\"(RoundingMode).String\", Method, 5, \"\"},\n\t\t{\"Above\", Const, 5, \"\"},\n\t\t{\"Accuracy\", Type, 5, \"\"},\n\t\t{\"AwayFromZero\", Const, 5, \"\"},\n\t\t{\"Below\", Const, 5, \"\"},\n\t\t{\"ErrNaN\", Type, 5, \"\"},\n\t\t{\"Exact\", Const, 5, \"\"},\n\t\t{\"Float\", Type, 5, \"\"},\n\t\t{\"Int\", Type, 0, \"\"},\n\t\t{\"Jacobi\", Func, 5, \"func(x *Int, y *Int) int\"},\n\t\t{\"MaxBase\", Const, 0, \"\"},\n\t\t{\"MaxExp\", Const, 5, \"\"},\n\t\t{\"MaxPrec\", Const, 5, \"\"},\n\t\t{\"MinExp\", Const, 5, \"\"},\n\t\t{\"NewFloat\", Func, 5, \"func(x float64) *Float\"},\n\t\t{\"NewInt\", Func, 0, \"func(x int64) *Int\"},\n\t\t{\"NewRat\", Func, 0, \"func(a int64, b int64) *Rat\"},\n\t\t{\"ParseFloat\", Func, 5, \"func(s string, base int, prec uint, mode RoundingMode) (f *Float, b int, err error)\"},\n\t\t{\"Rat\", Type, 0, \"\"},\n\t\t{\"RoundingMode\", Type, 5, \"\"},\n\t\t{\"ToNearestAway\", Const, 5, \"\"},\n\t\t{\"ToNearestEven\", Const, 5, \"\"},\n\t\t{\"ToNegativeInf\", Const, 5, \"\"},\n\t\t{\"ToPositiveInf\", Const, 5, \"\"},\n\t\t{\"ToZero\", Const, 5, \"\"},\n\t\t{\"Word\", Type, 0, \"\"},\n\t},\n\t\"math/bits\": {\n\t\t{\"Add\", Func, 12, \"func(x uint, y uint, carry uint) (sum uint, carryOut uint)\"},\n\t\t{\"Add32\", Func, 12, \"func(x uint32, y uint32, carry uint32) (sum uint32, carryOut uint32)\"},\n\t\t{\"Add64\", Func, 12, \"func(x uint64, y uint64, carry uint64) (sum uint64, carryOut uint64)\"},\n\t\t{\"Div\", Func, 12, \"func(hi uint, lo uint, y uint) (quo uint, rem uint)\"},\n\t\t{\"Div32\", Func, 12, \"func(hi uint32, lo uint32, y uint32) (quo uint32, rem uint32)\"},\n\t\t{\"Div64\", Func, 12, \"func(hi uint64, lo uint64, y uint64) (quo uint64, rem uint64)\"},\n\t\t{\"LeadingZeros\", Func, 9, \"func(x uint) int\"},\n\t\t{\"LeadingZeros16\", Func, 9, \"func(x uint16) int\"},\n\t\t{\"LeadingZeros32\", Func, 9, \"func(x uint32) int\"},\n\t\t{\"LeadingZeros64\", Func, 9, \"func(x uint64) int\"},\n\t\t{\"LeadingZeros8\", Func, 9, \"func(x uint8) int\"},\n\t\t{\"Len\", Func, 9, \"func(x uint) int\"},\n\t\t{\"Len16\", Func, 9, \"func(x uint16) (n int)\"},\n\t\t{\"Len32\", Func, 9, \"func(x uint32) (n int)\"},\n\t\t{\"Len64\", Func, 9, \"func(x uint64) (n int)\"},\n\t\t{\"Len8\", Func, 9, \"func(x uint8) int\"},\n\t\t{\"Mul\", Func, 12, \"func(x uint, y uint) (hi uint, lo uint)\"},\n\t\t{\"Mul32\", Func, 12, \"func(x uint32, y uint32) (hi uint32, lo uint32)\"},\n\t\t{\"Mul64\", Func, 12, \"func(x uint64, y uint64) (hi uint64, lo uint64)\"},\n\t\t{\"OnesCount\", Func, 9, \"func(x uint) int\"},\n\t\t{\"OnesCount16\", Func, 9, \"func(x uint16) int\"},\n\t\t{\"OnesCount32\", Func, 9, \"func(x uint32) int\"},\n\t\t{\"OnesCount64\", Func, 9, \"func(x uint64) int\"},\n\t\t{\"OnesCount8\", Func, 9, \"func(x uint8) int\"},\n\t\t{\"Rem\", Func, 14, \"func(hi uint, lo uint, y uint) uint\"},\n\t\t{\"Rem32\", Func, 14, \"func(hi uint32, lo uint32, y uint32) uint32\"},\n\t\t{\"Rem64\", Func, 14, \"func(hi uint64, lo uint64, y uint64) uint64\"},\n\t\t{\"Reverse\", Func, 9, \"func(x uint) uint\"},\n\t\t{\"Reverse16\", Func, 9, \"func(x uint16) uint16\"},\n\t\t{\"Reverse32\", Func, 9, \"func(x uint32) uint32\"},\n\t\t{\"Reverse64\", Func, 9, \"func(x uint64) uint64\"},\n\t\t{\"Reverse8\", Func, 9, \"func(x uint8) uint8\"},\n\t\t{\"ReverseBytes\", Func, 9, \"func(x uint) uint\"},\n\t\t{\"ReverseBytes16\", Func, 9, \"func(x uint16) uint16\"},\n\t\t{\"ReverseBytes32\", Func, 9, \"func(x uint32) uint32\"},\n\t\t{\"ReverseBytes64\", Func, 9, \"func(x uint64) uint64\"},\n\t\t{\"RotateLeft\", Func, 9, \"func(x uint, k int) uint\"},\n\t\t{\"RotateLeft16\", Func, 9, \"func(x uint16, k int) uint16\"},\n\t\t{\"RotateLeft32\", Func, 9, \"func(x uint32, k int) uint32\"},\n\t\t{\"RotateLeft64\", Func, 9, \"func(x uint64, k int) uint64\"},\n\t\t{\"RotateLeft8\", Func, 9, \"func(x uint8, k int) uint8\"},\n\t\t{\"Sub\", Func, 12, \"func(x uint, y uint, borrow uint) (diff uint, borrowOut uint)\"},\n\t\t{\"Sub32\", Func, 12, \"func(x uint32, y uint32, borrow uint32) (diff uint32, borrowOut uint32)\"},\n\t\t{\"Sub64\", Func, 12, \"func(x uint64, y uint64, borrow uint64) (diff uint64, borrowOut uint64)\"},\n\t\t{\"TrailingZeros\", Func, 9, \"func(x uint) int\"},\n\t\t{\"TrailingZeros16\", Func, 9, \"func(x uint16) int\"},\n\t\t{\"TrailingZeros32\", Func, 9, \"func(x uint32) int\"},\n\t\t{\"TrailingZeros64\", Func, 9, \"func(x uint64) int\"},\n\t\t{\"TrailingZeros8\", Func, 9, \"func(x uint8) int\"},\n\t\t{\"UintSize\", Const, 9, \"\"},\n\t},\n\t\"math/cmplx\": {\n\t\t{\"Abs\", Func, 0, \"func(x complex128) float64\"},\n\t\t{\"Acos\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Acosh\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Asin\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Asinh\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Atan\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Atanh\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Conj\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Cos\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Cosh\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Cot\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Exp\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Inf\", Func, 0, \"func() complex128\"},\n\t\t{\"IsInf\", Func, 0, \"func(x complex128) bool\"},\n\t\t{\"IsNaN\", Func, 0, \"func(x complex128) bool\"},\n\t\t{\"Log\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Log10\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"NaN\", Func, 0, \"func() complex128\"},\n\t\t{\"Phase\", Func, 0, \"func(x complex128) float64\"},\n\t\t{\"Polar\", Func, 0, \"func(x complex128) (r float64, θ float64)\"},\n\t\t{\"Pow\", Func, 0, \"func(x complex128, y complex128) complex128\"},\n\t\t{\"Rect\", Func, 0, \"func(r float64, θ float64) complex128\"},\n\t\t{\"Sin\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Sinh\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Sqrt\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Tan\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Tanh\", Func, 0, \"func(x complex128) complex128\"},\n\t},\n\t\"math/rand\": {\n\t\t{\"(*Rand).ExpFloat64\", Method, 0, \"\"},\n\t\t{\"(*Rand).Float32\", Method, 0, \"\"},\n\t\t{\"(*Rand).Float64\", Method, 0, \"\"},\n\t\t{\"(*Rand).Int\", Method, 0, \"\"},\n\t\t{\"(*Rand).Int31\", Method, 0, \"\"},\n\t\t{\"(*Rand).Int31n\", Method, 0, \"\"},\n\t\t{\"(*Rand).Int63\", Method, 0, \"\"},\n\t\t{\"(*Rand).Int63n\", Method, 0, \"\"},\n\t\t{\"(*Rand).Intn\", Method, 0, \"\"},\n\t\t{\"(*Rand).NormFloat64\", Method, 0, \"\"},\n\t\t{\"(*Rand).Perm\", Method, 0, \"\"},\n\t\t{\"(*Rand).Read\", Method, 6, \"\"},\n\t\t{\"(*Rand).Seed\", Method, 0, \"\"},\n\t\t{\"(*Rand).Shuffle\", Method, 10, \"\"},\n\t\t{\"(*Rand).Uint32\", Method, 0, \"\"},\n\t\t{\"(*Rand).Uint64\", Method, 8, \"\"},\n\t\t{\"(*Zipf).Uint64\", Method, 0, \"\"},\n\t\t{\"(Source).Int63\", Method, 0, \"\"},\n\t\t{\"(Source).Seed\", Method, 0, \"\"},\n\t\t{\"(Source64).Int63\", Method, 8, \"\"},\n\t\t{\"(Source64).Seed\", Method, 8, \"\"},\n\t\t{\"(Source64).Uint64\", Method, 8, \"\"},\n\t\t{\"ExpFloat64\", Func, 0, \"func() float64\"},\n\t\t{\"Float32\", Func, 0, \"func() float32\"},\n\t\t{\"Float64\", Func, 0, \"func() float64\"},\n\t\t{\"Int\", Func, 0, \"func() int\"},\n\t\t{\"Int31\", Func, 0, \"func() int32\"},\n\t\t{\"Int31n\", Func, 0, \"func(n int32) int32\"},\n\t\t{\"Int63\", Func, 0, \"func() int64\"},\n\t\t{\"Int63n\", Func, 0, \"func(n int64) int64\"},\n\t\t{\"Intn\", Func, 0, \"func(n int) int\"},\n\t\t{\"New\", Func, 0, \"func(src Source) *Rand\"},\n\t\t{\"NewSource\", Func, 0, \"func(seed int64) Source\"},\n\t\t{\"NewZipf\", Func, 0, \"func(r *Rand, s float64, v float64, imax uint64) *Zipf\"},\n\t\t{\"NormFloat64\", Func, 0, \"func() float64\"},\n\t\t{\"Perm\", Func, 0, \"func(n int) []int\"},\n\t\t{\"Rand\", Type, 0, \"\"},\n\t\t{\"Read\", Func, 6, \"func(p []byte) (n int, err error)\"},\n\t\t{\"Seed\", Func, 0, \"func(seed int64)\"},\n\t\t{\"Shuffle\", Func, 10, \"func(n int, swap func(i int, j int))\"},\n\t\t{\"Source\", Type, 0, \"\"},\n\t\t{\"Source64\", Type, 8, \"\"},\n\t\t{\"Uint32\", Func, 0, \"func() uint32\"},\n\t\t{\"Uint64\", Func, 8, \"func() uint64\"},\n\t\t{\"Zipf\", Type, 0, \"\"},\n\t},\n\t\"math/rand/v2\": {\n\t\t{\"(*ChaCha8).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(*ChaCha8).MarshalBinary\", Method, 22, \"\"},\n\t\t{\"(*ChaCha8).Read\", Method, 23, \"\"},\n\t\t{\"(*ChaCha8).Seed\", Method, 22, \"\"},\n\t\t{\"(*ChaCha8).Uint64\", Method, 22, \"\"},\n\t\t{\"(*ChaCha8).UnmarshalBinary\", Method, 22, \"\"},\n\t\t{\"(*PCG).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(*PCG).MarshalBinary\", Method, 22, \"\"},\n\t\t{\"(*PCG).Seed\", Method, 22, \"\"},\n\t\t{\"(*PCG).Uint64\", Method, 22, \"\"},\n\t\t{\"(*PCG).UnmarshalBinary\", Method, 22, \"\"},\n\t\t{\"(*Rand).ExpFloat64\", Method, 22, \"\"},\n\t\t{\"(*Rand).Float32\", Method, 22, \"\"},\n\t\t{\"(*Rand).Float64\", Method, 22, \"\"},\n\t\t{\"(*Rand).Int\", Method, 22, \"\"},\n\t\t{\"(*Rand).Int32\", Method, 22, \"\"},\n\t\t{\"(*Rand).Int32N\", Method, 22, \"\"},\n\t\t{\"(*Rand).Int64\", Method, 22, \"\"},\n\t\t{\"(*Rand).Int64N\", Method, 22, \"\"},\n\t\t{\"(*Rand).IntN\", Method, 22, \"\"},\n\t\t{\"(*Rand).NormFloat64\", Method, 22, \"\"},\n\t\t{\"(*Rand).Perm\", Method, 22, \"\"},\n\t\t{\"(*Rand).Shuffle\", Method, 22, \"\"},\n\t\t{\"(*Rand).Uint\", Method, 23, \"\"},\n\t\t{\"(*Rand).Uint32\", Method, 22, \"\"},\n\t\t{\"(*Rand).Uint32N\", Method, 22, \"\"},\n\t\t{\"(*Rand).Uint64\", Method, 22, \"\"},\n\t\t{\"(*Rand).Uint64N\", Method, 22, \"\"},\n\t\t{\"(*Rand).UintN\", Method, 22, \"\"},\n\t\t{\"(*Zipf).Uint64\", Method, 22, \"\"},\n\t\t{\"(Source).Uint64\", Method, 22, \"\"},\n\t\t{\"ChaCha8\", Type, 22, \"\"},\n\t\t{\"ExpFloat64\", Func, 22, \"func() float64\"},\n\t\t{\"Float32\", Func, 22, \"func() float32\"},\n\t\t{\"Float64\", Func, 22, \"func() float64\"},\n\t\t{\"Int\", Func, 22, \"func() int\"},\n\t\t{\"Int32\", Func, 22, \"func() int32\"},\n\t\t{\"Int32N\", Func, 22, \"func(n int32) int32\"},\n\t\t{\"Int64\", Func, 22, \"func() int64\"},\n\t\t{\"Int64N\", Func, 22, \"func(n int64) int64\"},\n\t\t{\"IntN\", Func, 22, \"func(n int) int\"},\n\t\t{\"N\", Func, 22, \"func[Int intType](n Int) Int\"},\n\t\t{\"New\", Func, 22, \"func(src Source) *Rand\"},\n\t\t{\"NewChaCha8\", Func, 22, \"func(seed [32]byte) *ChaCha8\"},\n\t\t{\"NewPCG\", Func, 22, \"func(seed1 uint64, seed2 uint64) *PCG\"},\n\t\t{\"NewZipf\", Func, 22, \"func(r *Rand, s float64, v float64, imax uint64) *Zipf\"},\n\t\t{\"NormFloat64\", Func, 22, \"func() float64\"},\n\t\t{\"PCG\", Type, 22, \"\"},\n\t\t{\"Perm\", Func, 22, \"func(n int) []int\"},\n\t\t{\"Rand\", Type, 22, \"\"},\n\t\t{\"Shuffle\", Func, 22, \"func(n int, swap func(i int, j int))\"},\n\t\t{\"Source\", Type, 22, \"\"},\n\t\t{\"Uint\", Func, 23, \"func() uint\"},\n\t\t{\"Uint32\", Func, 22, \"func() uint32\"},\n\t\t{\"Uint32N\", Func, 22, \"func(n uint32) uint32\"},\n\t\t{\"Uint64\", Func, 22, \"func() uint64\"},\n\t\t{\"Uint64N\", Func, 22, \"func(n uint64) uint64\"},\n\t\t{\"UintN\", Func, 22, \"func(n uint) uint\"},\n\t\t{\"Zipf\", Type, 22, \"\"},\n\t},\n\t\"mime\": {\n\t\t{\"(*WordDecoder).Decode\", Method, 5, \"\"},\n\t\t{\"(*WordDecoder).DecodeHeader\", Method, 5, \"\"},\n\t\t{\"(WordEncoder).Encode\", Method, 5, \"\"},\n\t\t{\"AddExtensionType\", Func, 0, \"func(ext string, typ string) error\"},\n\t\t{\"BEncoding\", Const, 5, \"\"},\n\t\t{\"ErrInvalidMediaParameter\", Var, 9, \"\"},\n\t\t{\"ExtensionsByType\", Func, 5, \"func(typ string) ([]string, error)\"},\n\t\t{\"FormatMediaType\", Func, 0, \"func(t string, param map[string]string) string\"},\n\t\t{\"ParseMediaType\", Func, 0, \"func(v string) (mediatype string, params map[string]string, err error)\"},\n\t\t{\"QEncoding\", Const, 5, \"\"},\n\t\t{\"TypeByExtension\", Func, 0, \"func(ext string) string\"},\n\t\t{\"WordDecoder\", Type, 5, \"\"},\n\t\t{\"WordDecoder.CharsetReader\", Field, 5, \"\"},\n\t\t{\"WordEncoder\", Type, 5, \"\"},\n\t},\n\t\"mime/multipart\": {\n\t\t{\"(*FileHeader).Open\", Method, 0, \"\"},\n\t\t{\"(*Form).RemoveAll\", Method, 0, \"\"},\n\t\t{\"(*Part).Close\", Method, 0, \"\"},\n\t\t{\"(*Part).FileName\", Method, 0, \"\"},\n\t\t{\"(*Part).FormName\", Method, 0, \"\"},\n\t\t{\"(*Part).Read\", Method, 0, \"\"},\n\t\t{\"(*Reader).NextPart\", Method, 0, \"\"},\n\t\t{\"(*Reader).NextRawPart\", Method, 14, \"\"},\n\t\t{\"(*Reader).ReadForm\", Method, 0, \"\"},\n\t\t{\"(*Writer).Boundary\", Method, 0, \"\"},\n\t\t{\"(*Writer).Close\", Method, 0, \"\"},\n\t\t{\"(*Writer).CreateFormField\", Method, 0, \"\"},\n\t\t{\"(*Writer).CreateFormFile\", Method, 0, \"\"},\n\t\t{\"(*Writer).CreatePart\", Method, 0, \"\"},\n\t\t{\"(*Writer).FormDataContentType\", Method, 0, \"\"},\n\t\t{\"(*Writer).SetBoundary\", Method, 1, \"\"},\n\t\t{\"(*Writer).WriteField\", Method, 0, \"\"},\n\t\t{\"(File).Close\", Method, 0, \"\"},\n\t\t{\"(File).Read\", Method, 0, \"\"},\n\t\t{\"(File).ReadAt\", Method, 0, \"\"},\n\t\t{\"(File).Seek\", Method, 0, \"\"},\n\t\t{\"ErrMessageTooLarge\", Var, 9, \"\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"FileContentDisposition\", Func, 25, \"func(fieldname string, filename string) string\"},\n\t\t{\"FileHeader\", Type, 0, \"\"},\n\t\t{\"FileHeader.Filename\", Field, 0, \"\"},\n\t\t{\"FileHeader.Header\", Field, 0, \"\"},\n\t\t{\"FileHeader.Size\", Field, 9, \"\"},\n\t\t{\"Form\", Type, 0, \"\"},\n\t\t{\"Form.File\", Field, 0, \"\"},\n\t\t{\"Form.Value\", Field, 0, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader, boundary string) *Reader\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer) *Writer\"},\n\t\t{\"Part\", Type, 0, \"\"},\n\t\t{\"Part.Header\", Field, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"mime/quotedprintable\": {\n\t\t{\"(*Reader).Read\", Method, 5, \"\"},\n\t\t{\"(*Writer).Close\", Method, 5, \"\"},\n\t\t{\"(*Writer).Write\", Method, 5, \"\"},\n\t\t{\"NewReader\", Func, 5, \"func(r io.Reader) *Reader\"},\n\t\t{\"NewWriter\", Func, 5, \"func(w io.Writer) *Writer\"},\n\t\t{\"Reader\", Type, 5, \"\"},\n\t\t{\"Writer\", Type, 5, \"\"},\n\t\t{\"Writer.Binary\", Field, 5, \"\"},\n\t},\n\t\"net\": {\n\t\t{\"(*AddrError).Error\", Method, 0, \"\"},\n\t\t{\"(*AddrError).Temporary\", Method, 0, \"\"},\n\t\t{\"(*AddrError).Timeout\", Method, 0, \"\"},\n\t\t{\"(*Buffers).Read\", Method, 8, \"\"},\n\t\t{\"(*Buffers).WriteTo\", Method, 8, \"\"},\n\t\t{\"(*DNSConfigError).Error\", Method, 0, \"\"},\n\t\t{\"(*DNSConfigError).Temporary\", Method, 0, \"\"},\n\t\t{\"(*DNSConfigError).Timeout\", Method, 0, \"\"},\n\t\t{\"(*DNSConfigError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*DNSError).Error\", Method, 0, \"\"},\n\t\t{\"(*DNSError).Temporary\", Method, 0, \"\"},\n\t\t{\"(*DNSError).Timeout\", Method, 0, \"\"},\n\t\t{\"(*DNSError).Unwrap\", Method, 23, \"\"},\n\t\t{\"(*Dialer).Dial\", Method, 1, \"\"},\n\t\t{\"(*Dialer).DialContext\", Method, 7, \"\"},\n\t\t{\"(*Dialer).DialIP\", Method, 26, \"\"},\n\t\t{\"(*Dialer).DialTCP\", Method, 26, \"\"},\n\t\t{\"(*Dialer).DialUDP\", Method, 26, \"\"},\n\t\t{\"(*Dialer).DialUnix\", Method, 26, \"\"},\n\t\t{\"(*Dialer).MultipathTCP\", Method, 21, \"\"},\n\t\t{\"(*Dialer).SetMultipathTCP\", Method, 21, \"\"},\n\t\t{\"(*IP).UnmarshalText\", Method, 2, \"\"},\n\t\t{\"(*IPAddr).Network\", Method, 0, \"\"},\n\t\t{\"(*IPAddr).String\", Method, 0, \"\"},\n\t\t{\"(*IPConn).Close\", Method, 0, \"\"},\n\t\t{\"(*IPConn).File\", Method, 0, \"\"},\n\t\t{\"(*IPConn).LocalAddr\", Method, 0, \"\"},\n\t\t{\"(*IPConn).Read\", Method, 0, \"\"},\n\t\t{\"(*IPConn).ReadFrom\", Method, 0, \"\"},\n\t\t{\"(*IPConn).ReadFromIP\", Method, 0, \"\"},\n\t\t{\"(*IPConn).ReadMsgIP\", Method, 1, \"\"},\n\t\t{\"(*IPConn).RemoteAddr\", Method, 0, \"\"},\n\t\t{\"(*IPConn).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(*IPConn).SetReadBuffer\", Method, 0, \"\"},\n\t\t{\"(*IPConn).SetReadDeadline\", Method, 0, \"\"},\n\t\t{\"(*IPConn).SetWriteBuffer\", Method, 0, \"\"},\n\t\t{\"(*IPConn).SetWriteDeadline\", Method, 0, \"\"},\n\t\t{\"(*IPConn).SyscallConn\", Method, 9, \"\"},\n\t\t{\"(*IPConn).Write\", Method, 0, \"\"},\n\t\t{\"(*IPConn).WriteMsgIP\", Method, 1, \"\"},\n\t\t{\"(*IPConn).WriteTo\", Method, 0, \"\"},\n\t\t{\"(*IPConn).WriteToIP\", Method, 0, \"\"},\n\t\t{\"(*IPNet).Contains\", Method, 0, \"\"},\n\t\t{\"(*IPNet).Network\", Method, 0, \"\"},\n\t\t{\"(*IPNet).String\", Method, 0, \"\"},\n\t\t{\"(*Interface).Addrs\", Method, 0, \"\"},\n\t\t{\"(*Interface).MulticastAddrs\", Method, 0, \"\"},\n\t\t{\"(*ListenConfig).Listen\", Method, 11, \"\"},\n\t\t{\"(*ListenConfig).ListenPacket\", Method, 11, \"\"},\n\t\t{\"(*ListenConfig).MultipathTCP\", Method, 21, \"\"},\n\t\t{\"(*ListenConfig).SetMultipathTCP\", Method, 21, \"\"},\n\t\t{\"(*OpError).Error\", Method, 0, \"\"},\n\t\t{\"(*OpError).Temporary\", Method, 0, \"\"},\n\t\t{\"(*OpError).Timeout\", Method, 0, \"\"},\n\t\t{\"(*OpError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*ParseError).Error\", Method, 0, \"\"},\n\t\t{\"(*ParseError).Temporary\", Method, 17, \"\"},\n\t\t{\"(*ParseError).Timeout\", Method, 17, \"\"},\n\t\t{\"(*Resolver).LookupAddr\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupCNAME\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupHost\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupIP\", Method, 15, \"\"},\n\t\t{\"(*Resolver).LookupIPAddr\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupMX\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupNS\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupNetIP\", Method, 18, \"\"},\n\t\t{\"(*Resolver).LookupPort\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupSRV\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupTXT\", Method, 8, \"\"},\n\t\t{\"(*TCPAddr).AddrPort\", Method, 18, \"\"},\n\t\t{\"(*TCPAddr).Network\", Method, 0, \"\"},\n\t\t{\"(*TCPAddr).String\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).Close\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).CloseRead\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).CloseWrite\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).File\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).LocalAddr\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).MultipathTCP\", Method, 21, \"\"},\n\t\t{\"(*TCPConn).Read\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).ReadFrom\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).RemoteAddr\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetKeepAlive\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetKeepAliveConfig\", Method, 23, \"\"},\n\t\t{\"(*TCPConn).SetKeepAlivePeriod\", Method, 2, \"\"},\n\t\t{\"(*TCPConn).SetLinger\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetNoDelay\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetReadBuffer\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetReadDeadline\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetWriteBuffer\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetWriteDeadline\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SyscallConn\", Method, 9, \"\"},\n\t\t{\"(*TCPConn).Write\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).WriteTo\", Method, 22, \"\"},\n\t\t{\"(*TCPListener).Accept\", Method, 0, \"\"},\n\t\t{\"(*TCPListener).AcceptTCP\", Method, 0, \"\"},\n\t\t{\"(*TCPListener).Addr\", Method, 0, \"\"},\n\t\t{\"(*TCPListener).Close\", Method, 0, \"\"},\n\t\t{\"(*TCPListener).File\", Method, 0, \"\"},\n\t\t{\"(*TCPListener).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(*TCPListener).SyscallConn\", Method, 10, \"\"},\n\t\t{\"(*UDPAddr).AddrPort\", Method, 18, \"\"},\n\t\t{\"(*UDPAddr).Network\", Method, 0, \"\"},\n\t\t{\"(*UDPAddr).String\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).Close\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).File\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).LocalAddr\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).Read\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).ReadFrom\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).ReadFromUDP\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).ReadFromUDPAddrPort\", Method, 18, \"\"},\n\t\t{\"(*UDPConn).ReadMsgUDP\", Method, 1, \"\"},\n\t\t{\"(*UDPConn).ReadMsgUDPAddrPort\", Method, 18, \"\"},\n\t\t{\"(*UDPConn).RemoteAddr\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).SetReadBuffer\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).SetReadDeadline\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).SetWriteBuffer\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).SetWriteDeadline\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).SyscallConn\", Method, 9, \"\"},\n\t\t{\"(*UDPConn).Write\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).WriteMsgUDP\", Method, 1, \"\"},\n\t\t{\"(*UDPConn).WriteMsgUDPAddrPort\", Method, 18, \"\"},\n\t\t{\"(*UDPConn).WriteTo\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).WriteToUDP\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).WriteToUDPAddrPort\", Method, 18, \"\"},\n\t\t{\"(*UnixAddr).Network\", Method, 0, \"\"},\n\t\t{\"(*UnixAddr).String\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).Close\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).CloseRead\", Method, 1, \"\"},\n\t\t{\"(*UnixConn).CloseWrite\", Method, 1, \"\"},\n\t\t{\"(*UnixConn).File\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).LocalAddr\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).Read\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).ReadFrom\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).ReadFromUnix\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).ReadMsgUnix\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).RemoteAddr\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).SetReadBuffer\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).SetReadDeadline\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).SetWriteBuffer\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).SetWriteDeadline\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).SyscallConn\", Method, 9, \"\"},\n\t\t{\"(*UnixConn).Write\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).WriteMsgUnix\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).WriteTo\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).WriteToUnix\", Method, 0, \"\"},\n\t\t{\"(*UnixListener).Accept\", Method, 0, \"\"},\n\t\t{\"(*UnixListener).AcceptUnix\", Method, 0, \"\"},\n\t\t{\"(*UnixListener).Addr\", Method, 0, \"\"},\n\t\t{\"(*UnixListener).Close\", Method, 0, \"\"},\n\t\t{\"(*UnixListener).File\", Method, 0, \"\"},\n\t\t{\"(*UnixListener).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(*UnixListener).SetUnlinkOnClose\", Method, 8, \"\"},\n\t\t{\"(*UnixListener).SyscallConn\", Method, 10, \"\"},\n\t\t{\"(Addr).Network\", Method, 0, \"\"},\n\t\t{\"(Addr).String\", Method, 0, \"\"},\n\t\t{\"(Conn).Close\", Method, 0, \"\"},\n\t\t{\"(Conn).LocalAddr\", Method, 0, \"\"},\n\t\t{\"(Conn).Read\", Method, 0, \"\"},\n\t\t{\"(Conn).RemoteAddr\", Method, 0, \"\"},\n\t\t{\"(Conn).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(Conn).SetReadDeadline\", Method, 0, \"\"},\n\t\t{\"(Conn).SetWriteDeadline\", Method, 0, \"\"},\n\t\t{\"(Conn).Write\", Method, 0, \"\"},\n\t\t{\"(Error).Error\", Method, 0, \"\"},\n\t\t{\"(Error).Temporary\", Method, 0, \"\"},\n\t\t{\"(Error).Timeout\", Method, 0, \"\"},\n\t\t{\"(Flags).String\", Method, 0, \"\"},\n\t\t{\"(HardwareAddr).String\", Method, 0, \"\"},\n\t\t{\"(IP).AppendText\", Method, 24, \"\"},\n\t\t{\"(IP).DefaultMask\", Method, 0, \"\"},\n\t\t{\"(IP).Equal\", Method, 0, \"\"},\n\t\t{\"(IP).IsGlobalUnicast\", Method, 0, \"\"},\n\t\t{\"(IP).IsInterfaceLocalMulticast\", Method, 0, \"\"},\n\t\t{\"(IP).IsLinkLocalMulticast\", Method, 0, \"\"},\n\t\t{\"(IP).IsLinkLocalUnicast\", Method, 0, \"\"},\n\t\t{\"(IP).IsLoopback\", Method, 0, \"\"},\n\t\t{\"(IP).IsMulticast\", Method, 0, \"\"},\n\t\t{\"(IP).IsPrivate\", Method, 17, \"\"},\n\t\t{\"(IP).IsUnspecified\", Method, 0, \"\"},\n\t\t{\"(IP).MarshalText\", Method, 2, \"\"},\n\t\t{\"(IP).Mask\", Method, 0, \"\"},\n\t\t{\"(IP).String\", Method, 0, \"\"},\n\t\t{\"(IP).To16\", Method, 0, \"\"},\n\t\t{\"(IP).To4\", Method, 0, \"\"},\n\t\t{\"(IPMask).Size\", Method, 0, \"\"},\n\t\t{\"(IPMask).String\", Method, 0, \"\"},\n\t\t{\"(InvalidAddrError).Error\", Method, 0, \"\"},\n\t\t{\"(InvalidAddrError).Temporary\", Method, 0, \"\"},\n\t\t{\"(InvalidAddrError).Timeout\", Method, 0, \"\"},\n\t\t{\"(Listener).Accept\", Method, 0, \"\"},\n\t\t{\"(Listener).Addr\", Method, 0, \"\"},\n\t\t{\"(Listener).Close\", Method, 0, \"\"},\n\t\t{\"(PacketConn).Close\", Method, 0, \"\"},\n\t\t{\"(PacketConn).LocalAddr\", Method, 0, \"\"},\n\t\t{\"(PacketConn).ReadFrom\", Method, 0, \"\"},\n\t\t{\"(PacketConn).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(PacketConn).SetReadDeadline\", Method, 0, \"\"},\n\t\t{\"(PacketConn).SetWriteDeadline\", Method, 0, \"\"},\n\t\t{\"(PacketConn).WriteTo\", Method, 0, \"\"},\n\t\t{\"(UnknownNetworkError).Error\", Method, 0, \"\"},\n\t\t{\"(UnknownNetworkError).Temporary\", Method, 0, \"\"},\n\t\t{\"(UnknownNetworkError).Timeout\", Method, 0, \"\"},\n\t\t{\"Addr\", Type, 0, \"\"},\n\t\t{\"AddrError\", Type, 0, \"\"},\n\t\t{\"AddrError.Addr\", Field, 0, \"\"},\n\t\t{\"AddrError.Err\", Field, 0, \"\"},\n\t\t{\"Buffers\", Type, 8, \"\"},\n\t\t{\"CIDRMask\", Func, 0, \"func(ones int, bits int) IPMask\"},\n\t\t{\"Conn\", Type, 0, \"\"},\n\t\t{\"DNSConfigError\", Type, 0, \"\"},\n\t\t{\"DNSConfigError.Err\", Field, 0, \"\"},\n\t\t{\"DNSError\", Type, 0, \"\"},\n\t\t{\"DNSError.Err\", Field, 0, \"\"},\n\t\t{\"DNSError.IsNotFound\", Field, 13, \"\"},\n\t\t{\"DNSError.IsTemporary\", Field, 6, \"\"},\n\t\t{\"DNSError.IsTimeout\", Field, 0, \"\"},\n\t\t{\"DNSError.Name\", Field, 0, \"\"},\n\t\t{\"DNSError.Server\", Field, 0, \"\"},\n\t\t{\"DNSError.UnwrapErr\", Field, 23, \"\"},\n\t\t{\"DefaultResolver\", Var, 8, \"\"},\n\t\t{\"Dial\", Func, 0, \"func(network string, address string) (Conn, error)\"},\n\t\t{\"DialIP\", Func, 0, \"func(network string, laddr *IPAddr, raddr *IPAddr) (*IPConn, error)\"},\n\t\t{\"DialTCP\", Func, 0, \"func(network string, laddr *TCPAddr, raddr *TCPAddr) (*TCPConn, error)\"},\n\t\t{\"DialTimeout\", Func, 0, \"func(network string, address string, timeout time.Duration) (Conn, error)\"},\n\t\t{\"DialUDP\", Func, 0, \"func(network string, laddr *UDPAddr, raddr *UDPAddr) (*UDPConn, error)\"},\n\t\t{\"DialUnix\", Func, 0, \"func(network string, laddr *UnixAddr, raddr *UnixAddr) (*UnixConn, error)\"},\n\t\t{\"Dialer\", Type, 1, \"\"},\n\t\t{\"Dialer.Cancel\", Field, 6, \"\"},\n\t\t{\"Dialer.Control\", Field, 11, \"\"},\n\t\t{\"Dialer.ControlContext\", Field, 20, \"\"},\n\t\t{\"Dialer.Deadline\", Field, 1, \"\"},\n\t\t{\"Dialer.DualStack\", Field, 2, \"\"},\n\t\t{\"Dialer.FallbackDelay\", Field, 5, \"\"},\n\t\t{\"Dialer.KeepAlive\", Field, 3, \"\"},\n\t\t{\"Dialer.KeepAliveConfig\", Field, 23, \"\"},\n\t\t{\"Dialer.LocalAddr\", Field, 1, \"\"},\n\t\t{\"Dialer.Resolver\", Field, 8, \"\"},\n\t\t{\"Dialer.Timeout\", Field, 1, \"\"},\n\t\t{\"ErrClosed\", Var, 16, \"\"},\n\t\t{\"ErrWriteToConnected\", Var, 0, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"FileConn\", Func, 0, \"func(f *os.File) (c Conn, err error)\"},\n\t\t{\"FileListener\", Func, 0, \"func(f *os.File) (ln Listener, err error)\"},\n\t\t{\"FilePacketConn\", Func, 0, \"func(f *os.File) (c PacketConn, err error)\"},\n\t\t{\"FlagBroadcast\", Const, 0, \"\"},\n\t\t{\"FlagLoopback\", Const, 0, \"\"},\n\t\t{\"FlagMulticast\", Const, 0, \"\"},\n\t\t{\"FlagPointToPoint\", Const, 0, \"\"},\n\t\t{\"FlagRunning\", Const, 20, \"\"},\n\t\t{\"FlagUp\", Const, 0, \"\"},\n\t\t{\"Flags\", Type, 0, \"\"},\n\t\t{\"HardwareAddr\", Type, 0, \"\"},\n\t\t{\"IP\", Type, 0, \"\"},\n\t\t{\"IPAddr\", Type, 0, \"\"},\n\t\t{\"IPAddr.IP\", Field, 0, \"\"},\n\t\t{\"IPAddr.Zone\", Field, 1, \"\"},\n\t\t{\"IPConn\", Type, 0, \"\"},\n\t\t{\"IPMask\", Type, 0, \"\"},\n\t\t{\"IPNet\", Type, 0, \"\"},\n\t\t{\"IPNet.IP\", Field, 0, \"\"},\n\t\t{\"IPNet.Mask\", Field, 0, \"\"},\n\t\t{\"IPv4\", Func, 0, \"func(a byte, b byte, c byte, d byte) IP\"},\n\t\t{\"IPv4Mask\", Func, 0, \"func(a byte, b byte, c byte, d byte) IPMask\"},\n\t\t{\"IPv4allrouter\", Var, 0, \"\"},\n\t\t{\"IPv4allsys\", Var, 0, \"\"},\n\t\t{\"IPv4bcast\", Var, 0, \"\"},\n\t\t{\"IPv4len\", Const, 0, \"\"},\n\t\t{\"IPv4zero\", Var, 0, \"\"},\n\t\t{\"IPv6interfacelocalallnodes\", Var, 0, \"\"},\n\t\t{\"IPv6len\", Const, 0, \"\"},\n\t\t{\"IPv6linklocalallnodes\", Var, 0, \"\"},\n\t\t{\"IPv6linklocalallrouters\", Var, 0, \"\"},\n\t\t{\"IPv6loopback\", Var, 0, \"\"},\n\t\t{\"IPv6unspecified\", Var, 0, \"\"},\n\t\t{\"IPv6zero\", Var, 0, \"\"},\n\t\t{\"Interface\", Type, 0, \"\"},\n\t\t{\"Interface.Flags\", Field, 0, \"\"},\n\t\t{\"Interface.HardwareAddr\", Field, 0, \"\"},\n\t\t{\"Interface.Index\", Field, 0, \"\"},\n\t\t{\"Interface.MTU\", Field, 0, \"\"},\n\t\t{\"Interface.Name\", Field, 0, \"\"},\n\t\t{\"InterfaceAddrs\", Func, 0, \"func() ([]Addr, error)\"},\n\t\t{\"InterfaceByIndex\", Func, 0, \"func(index int) (*Interface, error)\"},\n\t\t{\"InterfaceByName\", Func, 0, \"func(name string) (*Interface, error)\"},\n\t\t{\"Interfaces\", Func, 0, \"func() ([]Interface, error)\"},\n\t\t{\"InvalidAddrError\", Type, 0, \"\"},\n\t\t{\"JoinHostPort\", Func, 0, \"func(host string, port string) string\"},\n\t\t{\"KeepAliveConfig\", Type, 23, \"\"},\n\t\t{\"KeepAliveConfig.Count\", Field, 23, \"\"},\n\t\t{\"KeepAliveConfig.Enable\", Field, 23, \"\"},\n\t\t{\"KeepAliveConfig.Idle\", Field, 23, \"\"},\n\t\t{\"KeepAliveConfig.Interval\", Field, 23, \"\"},\n\t\t{\"Listen\", Func, 0, \"func(network string, address string) (Listener, error)\"},\n\t\t{\"ListenConfig\", Type, 11, \"\"},\n\t\t{\"ListenConfig.Control\", Field, 11, \"\"},\n\t\t{\"ListenConfig.KeepAlive\", Field, 13, \"\"},\n\t\t{\"ListenConfig.KeepAliveConfig\", Field, 23, \"\"},\n\t\t{\"ListenIP\", Func, 0, \"func(network string, laddr *IPAddr) (*IPConn, error)\"},\n\t\t{\"ListenMulticastUDP\", Func, 0, \"func(network string, ifi *Interface, gaddr *UDPAddr) (*UDPConn, error)\"},\n\t\t{\"ListenPacket\", Func, 0, \"func(network string, address string) (PacketConn, error)\"},\n\t\t{\"ListenTCP\", Func, 0, \"func(network string, laddr *TCPAddr) (*TCPListener, error)\"},\n\t\t{\"ListenUDP\", Func, 0, \"func(network string, laddr *UDPAddr) (*UDPConn, error)\"},\n\t\t{\"ListenUnix\", Func, 0, \"func(network string, laddr *UnixAddr) (*UnixListener, error)\"},\n\t\t{\"ListenUnixgram\", Func, 0, \"func(network string, laddr *UnixAddr) (*UnixConn, error)\"},\n\t\t{\"Listener\", Type, 0, \"\"},\n\t\t{\"LookupAddr\", Func, 0, \"func(addr string) (names []string, err error)\"},\n\t\t{\"LookupCNAME\", Func, 0, \"func(host string) (cname string, err error)\"},\n\t\t{\"LookupHost\", Func, 0, \"func(host string) (addrs []string, err error)\"},\n\t\t{\"LookupIP\", Func, 0, \"func(host string) ([]IP, error)\"},\n\t\t{\"LookupMX\", Func, 0, \"func(name string) ([]*MX, error)\"},\n\t\t{\"LookupNS\", Func, 1, \"func(name string) ([]*NS, error)\"},\n\t\t{\"LookupPort\", Func, 0, \"func(network string, service string) (port int, err error)\"},\n\t\t{\"LookupSRV\", Func, 0, \"func(service string, proto string, name string) (cname string, addrs []*SRV, err error)\"},\n\t\t{\"LookupTXT\", Func, 0, \"func(name string) ([]string, error)\"},\n\t\t{\"MX\", Type, 0, \"\"},\n\t\t{\"MX.Host\", Field, 0, \"\"},\n\t\t{\"MX.Pref\", Field, 0, \"\"},\n\t\t{\"NS\", Type, 1, \"\"},\n\t\t{\"NS.Host\", Field, 1, \"\"},\n\t\t{\"OpError\", Type, 0, \"\"},\n\t\t{\"OpError.Addr\", Field, 0, \"\"},\n\t\t{\"OpError.Err\", Field, 0, \"\"},\n\t\t{\"OpError.Net\", Field, 0, \"\"},\n\t\t{\"OpError.Op\", Field, 0, \"\"},\n\t\t{\"OpError.Source\", Field, 5, \"\"},\n\t\t{\"PacketConn\", Type, 0, \"\"},\n\t\t{\"ParseCIDR\", Func, 0, \"func(s string) (IP, *IPNet, error)\"},\n\t\t{\"ParseError\", Type, 0, \"\"},\n\t\t{\"ParseError.Text\", Field, 0, \"\"},\n\t\t{\"ParseError.Type\", Field, 0, \"\"},\n\t\t{\"ParseIP\", Func, 0, \"func(s string) IP\"},\n\t\t{\"ParseMAC\", Func, 0, \"func(s string) (hw HardwareAddr, err error)\"},\n\t\t{\"Pipe\", Func, 0, \"func() (Conn, Conn)\"},\n\t\t{\"ResolveIPAddr\", Func, 0, \"func(network string, address string) (*IPAddr, error)\"},\n\t\t{\"ResolveTCPAddr\", Func, 0, \"func(network string, address string) (*TCPAddr, error)\"},\n\t\t{\"ResolveUDPAddr\", Func, 0, \"func(network string, address string) (*UDPAddr, error)\"},\n\t\t{\"ResolveUnixAddr\", Func, 0, \"func(network string, address string) (*UnixAddr, error)\"},\n\t\t{\"Resolver\", Type, 8, \"\"},\n\t\t{\"Resolver.Dial\", Field, 9, \"\"},\n\t\t{\"Resolver.PreferGo\", Field, 8, \"\"},\n\t\t{\"Resolver.StrictErrors\", Field, 9, \"\"},\n\t\t{\"SRV\", Type, 0, \"\"},\n\t\t{\"SRV.Port\", Field, 0, \"\"},\n\t\t{\"SRV.Priority\", Field, 0, \"\"},\n\t\t{\"SRV.Target\", Field, 0, \"\"},\n\t\t{\"SRV.Weight\", Field, 0, \"\"},\n\t\t{\"SplitHostPort\", Func, 0, \"func(hostport string) (host string, port string, err error)\"},\n\t\t{\"TCPAddr\", Type, 0, \"\"},\n\t\t{\"TCPAddr.IP\", Field, 0, \"\"},\n\t\t{\"TCPAddr.Port\", Field, 0, \"\"},\n\t\t{\"TCPAddr.Zone\", Field, 1, \"\"},\n\t\t{\"TCPAddrFromAddrPort\", Func, 18, \"func(addr netip.AddrPort) *TCPAddr\"},\n\t\t{\"TCPConn\", Type, 0, \"\"},\n\t\t{\"TCPListener\", Type, 0, \"\"},\n\t\t{\"UDPAddr\", Type, 0, \"\"},\n\t\t{\"UDPAddr.IP\", Field, 0, \"\"},\n\t\t{\"UDPAddr.Port\", Field, 0, \"\"},\n\t\t{\"UDPAddr.Zone\", Field, 1, \"\"},\n\t\t{\"UDPAddrFromAddrPort\", Func, 18, \"func(addr netip.AddrPort) *UDPAddr\"},\n\t\t{\"UDPConn\", Type, 0, \"\"},\n\t\t{\"UnixAddr\", Type, 0, \"\"},\n\t\t{\"UnixAddr.Name\", Field, 0, \"\"},\n\t\t{\"UnixAddr.Net\", Field, 0, \"\"},\n\t\t{\"UnixConn\", Type, 0, \"\"},\n\t\t{\"UnixListener\", Type, 0, \"\"},\n\t\t{\"UnknownNetworkError\", Type, 0, \"\"},\n\t},\n\t\"net/http\": {\n\t\t{\"(*Client).CloseIdleConnections\", Method, 12, \"\"},\n\t\t{\"(*Client).Do\", Method, 0, \"\"},\n\t\t{\"(*Client).Get\", Method, 0, \"\"},\n\t\t{\"(*Client).Head\", Method, 0, \"\"},\n\t\t{\"(*Client).Post\", Method, 0, \"\"},\n\t\t{\"(*Client).PostForm\", Method, 0, \"\"},\n\t\t{\"(*ClientConn).Available\", Method, 26, \"\"},\n\t\t{\"(*ClientConn).Close\", Method, 26, \"\"},\n\t\t{\"(*ClientConn).Err\", Method, 26, \"\"},\n\t\t{\"(*ClientConn).InFlight\", Method, 26, \"\"},\n\t\t{\"(*ClientConn).Release\", Method, 26, \"\"},\n\t\t{\"(*ClientConn).Reserve\", Method, 26, \"\"},\n\t\t{\"(*ClientConn).RoundTrip\", Method, 26, \"\"},\n\t\t{\"(*ClientConn).SetStateHook\", Method, 26, \"\"},\n\t\t{\"(*Cookie).String\", Method, 0, \"\"},\n\t\t{\"(*Cookie).Valid\", Method, 18, \"\"},\n\t\t{\"(*CrossOriginProtection).AddInsecureBypassPattern\", Method, 25, \"\"},\n\t\t{\"(*CrossOriginProtection).AddTrustedOrigin\", Method, 25, \"\"},\n\t\t{\"(*CrossOriginProtection).Check\", Method, 25, \"\"},\n\t\t{\"(*CrossOriginProtection).Handler\", Method, 25, \"\"},\n\t\t{\"(*CrossOriginProtection).SetDenyHandler\", Method, 25, \"\"},\n\t\t{\"(*MaxBytesError).Error\", Method, 19, \"\"},\n\t\t{\"(*ProtocolError).Error\", Method, 0, \"\"},\n\t\t{\"(*ProtocolError).Is\", Method, 21, \"\"},\n\t\t{\"(*Protocols).SetHTTP1\", Method, 24, \"\"},\n\t\t{\"(*Protocols).SetHTTP2\", Method, 24, \"\"},\n\t\t{\"(*Protocols).SetUnencryptedHTTP2\", Method, 24, \"\"},\n\t\t{\"(*Request).AddCookie\", Method, 0, \"\"},\n\t\t{\"(*Request).BasicAuth\", Method, 4, \"\"},\n\t\t{\"(*Request).Clone\", Method, 13, \"\"},\n\t\t{\"(*Request).Context\", Method, 7, \"\"},\n\t\t{\"(*Request).Cookie\", Method, 0, \"\"},\n\t\t{\"(*Request).Cookies\", Method, 0, \"\"},\n\t\t{\"(*Request).CookiesNamed\", Method, 23, \"\"},\n\t\t{\"(*Request).FormFile\", Method, 0, \"\"},\n\t\t{\"(*Request).FormValue\", Method, 0, \"\"},\n\t\t{\"(*Request).MultipartReader\", Method, 0, \"\"},\n\t\t{\"(*Request).ParseForm\", Method, 0, \"\"},\n\t\t{\"(*Request).ParseMultipartForm\", Method, 0, \"\"},\n\t\t{\"(*Request).PathValue\", Method, 22, \"\"},\n\t\t{\"(*Request).PostFormValue\", Method, 1, \"\"},\n\t\t{\"(*Request).ProtoAtLeast\", Method, 0, \"\"},\n\t\t{\"(*Request).Referer\", Method, 0, \"\"},\n\t\t{\"(*Request).SetBasicAuth\", Method, 0, \"\"},\n\t\t{\"(*Request).SetPathValue\", Method, 22, \"\"},\n\t\t{\"(*Request).UserAgent\", Method, 0, \"\"},\n\t\t{\"(*Request).WithContext\", Method, 7, \"\"},\n\t\t{\"(*Request).Write\", Method, 0, \"\"},\n\t\t{\"(*Request).WriteProxy\", Method, 0, \"\"},\n\t\t{\"(*Response).Cookies\", Method, 0, \"\"},\n\t\t{\"(*Response).Location\", Method, 0, \"\"},\n\t\t{\"(*Response).ProtoAtLeast\", Method, 0, \"\"},\n\t\t{\"(*Response).Write\", Method, 0, \"\"},\n\t\t{\"(*ResponseController).EnableFullDuplex\", Method, 21, \"\"},\n\t\t{\"(*ResponseController).Flush\", Method, 20, \"\"},\n\t\t{\"(*ResponseController).Hijack\", Method, 20, \"\"},\n\t\t{\"(*ResponseController).SetReadDeadline\", Method, 20, \"\"},\n\t\t{\"(*ResponseController).SetWriteDeadline\", Method, 20, \"\"},\n\t\t{\"(*ServeMux).Handle\", Method, 0, \"\"},\n\t\t{\"(*ServeMux).HandleFunc\", Method, 0, \"\"},\n\t\t{\"(*ServeMux).Handler\", Method, 1, \"\"},\n\t\t{\"(*ServeMux).ServeHTTP\", Method, 0, \"\"},\n\t\t{\"(*Server).Close\", Method, 8, \"\"},\n\t\t{\"(*Server).ListenAndServe\", Method, 0, \"\"},\n\t\t{\"(*Server).ListenAndServeTLS\", Method, 0, \"\"},\n\t\t{\"(*Server).RegisterOnShutdown\", Method, 9, \"\"},\n\t\t{\"(*Server).Serve\", Method, 0, \"\"},\n\t\t{\"(*Server).ServeTLS\", Method, 9, \"\"},\n\t\t{\"(*Server).SetKeepAlivesEnabled\", Method, 3, \"\"},\n\t\t{\"(*Server).Shutdown\", Method, 8, \"\"},\n\t\t{\"(*Transport).CancelRequest\", Method, 1, \"\"},\n\t\t{\"(*Transport).Clone\", Method, 13, \"\"},\n\t\t{\"(*Transport).CloseIdleConnections\", Method, 0, \"\"},\n\t\t{\"(*Transport).NewClientConn\", Method, 26, \"\"},\n\t\t{\"(*Transport).RegisterProtocol\", Method, 0, \"\"},\n\t\t{\"(*Transport).RoundTrip\", Method, 0, \"\"},\n\t\t{\"(CloseNotifier).CloseNotify\", Method, 1, \"\"},\n\t\t{\"(ConnState).String\", Method, 3, \"\"},\n\t\t{\"(CookieJar).Cookies\", Method, 0, \"\"},\n\t\t{\"(CookieJar).SetCookies\", Method, 0, \"\"},\n\t\t{\"(Dir).Open\", Method, 0, \"\"},\n\t\t{\"(File).Close\", Method, 0, \"\"},\n\t\t{\"(File).Read\", Method, 0, \"\"},\n\t\t{\"(File).Readdir\", Method, 0, \"\"},\n\t\t{\"(File).Seek\", Method, 0, \"\"},\n\t\t{\"(File).Stat\", Method, 0, \"\"},\n\t\t{\"(FileSystem).Open\", Method, 0, \"\"},\n\t\t{\"(Flusher).Flush\", Method, 0, \"\"},\n\t\t{\"(Handler).ServeHTTP\", Method, 0, \"\"},\n\t\t{\"(HandlerFunc).ServeHTTP\", Method, 0, \"\"},\n\t\t{\"(Header).Add\", Method, 0, \"\"},\n\t\t{\"(Header).Clone\", Method, 13, \"\"},\n\t\t{\"(Header).Del\", Method, 0, \"\"},\n\t\t{\"(Header).Get\", Method, 0, \"\"},\n\t\t{\"(Header).Set\", Method, 0, \"\"},\n\t\t{\"(Header).Values\", Method, 14, \"\"},\n\t\t{\"(Header).Write\", Method, 0, \"\"},\n\t\t{\"(Header).WriteSubset\", Method, 0, \"\"},\n\t\t{\"(Hijacker).Hijack\", Method, 0, \"\"},\n\t\t{\"(Protocols).HTTP1\", Method, 24, \"\"},\n\t\t{\"(Protocols).HTTP2\", Method, 24, \"\"},\n\t\t{\"(Protocols).String\", Method, 24, \"\"},\n\t\t{\"(Protocols).UnencryptedHTTP2\", Method, 24, \"\"},\n\t\t{\"(Pusher).Push\", Method, 8, \"\"},\n\t\t{\"(ResponseWriter).Header\", Method, 0, \"\"},\n\t\t{\"(ResponseWriter).Write\", Method, 0, \"\"},\n\t\t{\"(ResponseWriter).WriteHeader\", Method, 0, \"\"},\n\t\t{\"(RoundTripper).RoundTrip\", Method, 0, \"\"},\n\t\t{\"AllowQuerySemicolons\", Func, 17, \"func(h Handler) Handler\"},\n\t\t{\"CanonicalHeaderKey\", Func, 0, \"func(s string) string\"},\n\t\t{\"Client\", Type, 0, \"\"},\n\t\t{\"Client.CheckRedirect\", Field, 0, \"\"},\n\t\t{\"Client.Jar\", Field, 0, \"\"},\n\t\t{\"Client.Timeout\", Field, 3, \"\"},\n\t\t{\"Client.Transport\", Field, 0, \"\"},\n\t\t{\"ClientConn\", Type, 26, \"\"},\n\t\t{\"CloseNotifier\", Type, 1, \"\"},\n\t\t{\"ConnState\", Type, 3, \"\"},\n\t\t{\"Cookie\", Type, 0, \"\"},\n\t\t{\"Cookie.Domain\", Field, 0, \"\"},\n\t\t{\"Cookie.Expires\", Field, 0, \"\"},\n\t\t{\"Cookie.HttpOnly\", Field, 0, \"\"},\n\t\t{\"Cookie.MaxAge\", Field, 0, \"\"},\n\t\t{\"Cookie.Name\", Field, 0, \"\"},\n\t\t{\"Cookie.Partitioned\", Field, 23, \"\"},\n\t\t{\"Cookie.Path\", Field, 0, \"\"},\n\t\t{\"Cookie.Quoted\", Field, 23, \"\"},\n\t\t{\"Cookie.Raw\", Field, 0, \"\"},\n\t\t{\"Cookie.RawExpires\", Field, 0, \"\"},\n\t\t{\"Cookie.SameSite\", Field, 11, \"\"},\n\t\t{\"Cookie.Secure\", Field, 0, \"\"},\n\t\t{\"Cookie.Unparsed\", Field, 0, \"\"},\n\t\t{\"Cookie.Value\", Field, 0, \"\"},\n\t\t{\"CookieJar\", Type, 0, \"\"},\n\t\t{\"CrossOriginProtection\", Type, 25, \"\"},\n\t\t{\"DefaultClient\", Var, 0, \"\"},\n\t\t{\"DefaultMaxHeaderBytes\", Const, 0, \"\"},\n\t\t{\"DefaultMaxIdleConnsPerHost\", Const, 0, \"\"},\n\t\t{\"DefaultServeMux\", Var, 0, \"\"},\n\t\t{\"DefaultTransport\", Var, 0, \"\"},\n\t\t{\"DetectContentType\", Func, 0, \"func(data []byte) string\"},\n\t\t{\"Dir\", Type, 0, \"\"},\n\t\t{\"ErrAbortHandler\", Var, 8, \"\"},\n\t\t{\"ErrBodyNotAllowed\", Var, 0, \"\"},\n\t\t{\"ErrBodyReadAfterClose\", Var, 0, \"\"},\n\t\t{\"ErrContentLength\", Var, 0, \"\"},\n\t\t{\"ErrHandlerTimeout\", Var, 0, \"\"},\n\t\t{\"ErrHeaderTooLong\", Var, 0, \"\"},\n\t\t{\"ErrHijacked\", Var, 0, \"\"},\n\t\t{\"ErrLineTooLong\", Var, 0, \"\"},\n\t\t{\"ErrMissingBoundary\", Var, 0, \"\"},\n\t\t{\"ErrMissingContentLength\", Var, 0, \"\"},\n\t\t{\"ErrMissingFile\", Var, 0, \"\"},\n\t\t{\"ErrNoCookie\", Var, 0, \"\"},\n\t\t{\"ErrNoLocation\", Var, 0, \"\"},\n\t\t{\"ErrNotMultipart\", Var, 0, \"\"},\n\t\t{\"ErrNotSupported\", Var, 0, \"\"},\n\t\t{\"ErrSchemeMismatch\", Var, 21, \"\"},\n\t\t{\"ErrServerClosed\", Var, 8, \"\"},\n\t\t{\"ErrShortBody\", Var, 0, \"\"},\n\t\t{\"ErrSkipAltProtocol\", Var, 6, \"\"},\n\t\t{\"ErrUnexpectedTrailer\", Var, 0, \"\"},\n\t\t{\"ErrUseLastResponse\", Var, 7, \"\"},\n\t\t{\"ErrWriteAfterFlush\", Var, 0, \"\"},\n\t\t{\"Error\", Func, 0, \"func(w ResponseWriter, error string, code int)\"},\n\t\t{\"FS\", Func, 16, \"func(fsys fs.FS) FileSystem\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"FileServer\", Func, 0, \"func(root FileSystem) Handler\"},\n\t\t{\"FileServerFS\", Func, 22, \"func(root fs.FS) Handler\"},\n\t\t{\"FileSystem\", Type, 0, \"\"},\n\t\t{\"Flusher\", Type, 0, \"\"},\n\t\t{\"Get\", Func, 0, \"func(url string) (resp *Response, err error)\"},\n\t\t{\"HTTP2Config\", Type, 24, \"\"},\n\t\t{\"HTTP2Config.CountError\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.MaxConcurrentStreams\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.MaxDecoderHeaderTableSize\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.MaxEncoderHeaderTableSize\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.MaxReadFrameSize\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.MaxReceiveBufferPerConnection\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.MaxReceiveBufferPerStream\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.PermitProhibitedCipherSuites\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.PingTimeout\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.SendPingTimeout\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.StrictMaxConcurrentRequests\", Field, 26, \"\"},\n\t\t{\"HTTP2Config.WriteByteTimeout\", Field, 24, \"\"},\n\t\t{\"Handle\", Func, 0, \"func(pattern string, handler Handler)\"},\n\t\t{\"HandleFunc\", Func, 0, \"func(pattern string, handler func(ResponseWriter, *Request))\"},\n\t\t{\"Handler\", Type, 0, \"\"},\n\t\t{\"HandlerFunc\", Type, 0, \"\"},\n\t\t{\"Head\", Func, 0, \"func(url string) (resp *Response, err error)\"},\n\t\t{\"Header\", Type, 0, \"\"},\n\t\t{\"Hijacker\", Type, 0, \"\"},\n\t\t{\"ListenAndServe\", Func, 0, \"func(addr string, handler Handler) error\"},\n\t\t{\"ListenAndServeTLS\", Func, 0, \"func(addr string, certFile string, keyFile string, handler Handler) error\"},\n\t\t{\"LocalAddrContextKey\", Var, 7, \"\"},\n\t\t{\"MaxBytesError\", Type, 19, \"\"},\n\t\t{\"MaxBytesError.Limit\", Field, 19, \"\"},\n\t\t{\"MaxBytesHandler\", Func, 18, \"func(h Handler, n int64) Handler\"},\n\t\t{\"MaxBytesReader\", Func, 0, \"func(w ResponseWriter, r io.ReadCloser, n int64) io.ReadCloser\"},\n\t\t{\"MethodConnect\", Const, 6, \"\"},\n\t\t{\"MethodDelete\", Const, 6, \"\"},\n\t\t{\"MethodGet\", Const, 6, \"\"},\n\t\t{\"MethodHead\", Const, 6, \"\"},\n\t\t{\"MethodOptions\", Const, 6, \"\"},\n\t\t{\"MethodPatch\", Const, 6, \"\"},\n\t\t{\"MethodPost\", Const, 6, \"\"},\n\t\t{\"MethodPut\", Const, 6, \"\"},\n\t\t{\"MethodTrace\", Const, 6, \"\"},\n\t\t{\"NewCrossOriginProtection\", Func, 25, \"func() *CrossOriginProtection\"},\n\t\t{\"NewFileTransport\", Func, 0, \"func(fs FileSystem) RoundTripper\"},\n\t\t{\"NewFileTransportFS\", Func, 22, \"func(fsys fs.FS) RoundTripper\"},\n\t\t{\"NewRequest\", Func, 0, \"func(method string, url string, body io.Reader) (*Request, error)\"},\n\t\t{\"NewRequestWithContext\", Func, 13, \"func(ctx context.Context, method string, url string, body io.Reader) (*Request, error)\"},\n\t\t{\"NewResponseController\", Func, 20, \"func(rw ResponseWriter) *ResponseController\"},\n\t\t{\"NewServeMux\", Func, 0, \"func() *ServeMux\"},\n\t\t{\"NoBody\", Var, 8, \"\"},\n\t\t{\"NotFound\", Func, 0, \"func(w ResponseWriter, r *Request)\"},\n\t\t{\"NotFoundHandler\", Func, 0, \"func() Handler\"},\n\t\t{\"ParseCookie\", Func, 23, \"func(line string) ([]*Cookie, error)\"},\n\t\t{\"ParseHTTPVersion\", Func, 0, \"func(vers string) (major int, minor int, ok bool)\"},\n\t\t{\"ParseSetCookie\", Func, 23, \"func(line string) (*Cookie, error)\"},\n\t\t{\"ParseTime\", Func, 1, \"func(text string) (t time.Time, err error)\"},\n\t\t{\"Post\", Func, 0, \"func(url string, contentType string, body io.Reader) (resp *Response, err error)\"},\n\t\t{\"PostForm\", Func, 0, \"func(url string, data url.Values) (resp *Response, err error)\"},\n\t\t{\"ProtocolError\", Type, 0, \"\"},\n\t\t{\"ProtocolError.ErrorString\", Field, 0, \"\"},\n\t\t{\"Protocols\", Type, 24, \"\"},\n\t\t{\"ProxyFromEnvironment\", Func, 0, \"func(req *Request) (*url.URL, error)\"},\n\t\t{\"ProxyURL\", Func, 0, \"func(fixedURL *url.URL) func(*Request) (*url.URL, error)\"},\n\t\t{\"PushOptions\", Type, 8, \"\"},\n\t\t{\"PushOptions.Header\", Field, 8, \"\"},\n\t\t{\"PushOptions.Method\", Field, 8, \"\"},\n\t\t{\"Pusher\", Type, 8, \"\"},\n\t\t{\"ReadRequest\", Func, 0, \"func(b *bufio.Reader) (*Request, error)\"},\n\t\t{\"ReadResponse\", Func, 0, \"func(r *bufio.Reader, req *Request) (*Response, error)\"},\n\t\t{\"Redirect\", Func, 0, \"func(w ResponseWriter, r *Request, url string, code int)\"},\n\t\t{\"RedirectHandler\", Func, 0, \"func(url string, code int) Handler\"},\n\t\t{\"Request\", Type, 0, \"\"},\n\t\t{\"Request.Body\", Field, 0, \"\"},\n\t\t{\"Request.Cancel\", Field, 5, \"\"},\n\t\t{\"Request.Close\", Field, 0, \"\"},\n\t\t{\"Request.ContentLength\", Field, 0, \"\"},\n\t\t{\"Request.Form\", Field, 0, \"\"},\n\t\t{\"Request.GetBody\", Field, 8, \"\"},\n\t\t{\"Request.Header\", Field, 0, \"\"},\n\t\t{\"Request.Host\", Field, 0, \"\"},\n\t\t{\"Request.Method\", Field, 0, \"\"},\n\t\t{\"Request.MultipartForm\", Field, 0, \"\"},\n\t\t{\"Request.Pattern\", Field, 23, \"\"},\n\t\t{\"Request.PostForm\", Field, 1, \"\"},\n\t\t{\"Request.Proto\", Field, 0, \"\"},\n\t\t{\"Request.ProtoMajor\", Field, 0, \"\"},\n\t\t{\"Request.ProtoMinor\", Field, 0, \"\"},\n\t\t{\"Request.RemoteAddr\", Field, 0, \"\"},\n\t\t{\"Request.RequestURI\", Field, 0, \"\"},\n\t\t{\"Request.Response\", Field, 7, \"\"},\n\t\t{\"Request.TLS\", Field, 0, \"\"},\n\t\t{\"Request.Trailer\", Field, 0, \"\"},\n\t\t{\"Request.TransferEncoding\", Field, 0, \"\"},\n\t\t{\"Request.URL\", Field, 0, \"\"},\n\t\t{\"Response\", Type, 0, \"\"},\n\t\t{\"Response.Body\", Field, 0, \"\"},\n\t\t{\"Response.Close\", Field, 0, \"\"},\n\t\t{\"Response.ContentLength\", Field, 0, \"\"},\n\t\t{\"Response.Header\", Field, 0, \"\"},\n\t\t{\"Response.Proto\", Field, 0, \"\"},\n\t\t{\"Response.ProtoMajor\", Field, 0, \"\"},\n\t\t{\"Response.ProtoMinor\", Field, 0, \"\"},\n\t\t{\"Response.Request\", Field, 0, \"\"},\n\t\t{\"Response.Status\", Field, 0, \"\"},\n\t\t{\"Response.StatusCode\", Field, 0, \"\"},\n\t\t{\"Response.TLS\", Field, 3, \"\"},\n\t\t{\"Response.Trailer\", Field, 0, \"\"},\n\t\t{\"Response.TransferEncoding\", Field, 0, \"\"},\n\t\t{\"Response.Uncompressed\", Field, 7, \"\"},\n\t\t{\"ResponseController\", Type, 20, \"\"},\n\t\t{\"ResponseWriter\", Type, 0, \"\"},\n\t\t{\"RoundTripper\", Type, 0, \"\"},\n\t\t{\"SameSite\", Type, 11, \"\"},\n\t\t{\"SameSiteDefaultMode\", Const, 11, \"\"},\n\t\t{\"SameSiteLaxMode\", Const, 11, \"\"},\n\t\t{\"SameSiteNoneMode\", Const, 13, \"\"},\n\t\t{\"SameSiteStrictMode\", Const, 11, \"\"},\n\t\t{\"Serve\", Func, 0, \"func(l net.Listener, handler Handler) error\"},\n\t\t{\"ServeContent\", Func, 0, \"func(w ResponseWriter, req *Request, name string, modtime time.Time, content io.ReadSeeker)\"},\n\t\t{\"ServeFile\", Func, 0, \"func(w ResponseWriter, r *Request, name string)\"},\n\t\t{\"ServeFileFS\", Func, 22, \"func(w ResponseWriter, r *Request, fsys fs.FS, name string)\"},\n\t\t{\"ServeMux\", Type, 0, \"\"},\n\t\t{\"ServeTLS\", Func, 9, \"func(l net.Listener, handler Handler, certFile string, keyFile string) error\"},\n\t\t{\"Server\", Type, 0, \"\"},\n\t\t{\"Server.Addr\", Field, 0, \"\"},\n\t\t{\"Server.BaseContext\", Field, 13, \"\"},\n\t\t{\"Server.ConnContext\", Field, 13, \"\"},\n\t\t{\"Server.ConnState\", Field, 3, \"\"},\n\t\t{\"Server.DisableGeneralOptionsHandler\", Field, 20, \"\"},\n\t\t{\"Server.ErrorLog\", Field, 3, \"\"},\n\t\t{\"Server.HTTP2\", Field, 24, \"\"},\n\t\t{\"Server.Handler\", Field, 0, \"\"},\n\t\t{\"Server.IdleTimeout\", Field, 8, \"\"},\n\t\t{\"Server.MaxHeaderBytes\", Field, 0, \"\"},\n\t\t{\"Server.Protocols\", Field, 24, \"\"},\n\t\t{\"Server.ReadHeaderTimeout\", Field, 8, \"\"},\n\t\t{\"Server.ReadTimeout\", Field, 0, \"\"},\n\t\t{\"Server.TLSConfig\", Field, 0, \"\"},\n\t\t{\"Server.TLSNextProto\", Field, 1, \"\"},\n\t\t{\"Server.WriteTimeout\", Field, 0, \"\"},\n\t\t{\"ServerContextKey\", Var, 7, \"\"},\n\t\t{\"SetCookie\", Func, 0, \"func(w ResponseWriter, cookie *Cookie)\"},\n\t\t{\"StateActive\", Const, 3, \"\"},\n\t\t{\"StateClosed\", Const, 3, \"\"},\n\t\t{\"StateHijacked\", Const, 3, \"\"},\n\t\t{\"StateIdle\", Const, 3, \"\"},\n\t\t{\"StateNew\", Const, 3, \"\"},\n\t\t{\"StatusAccepted\", Const, 0, \"\"},\n\t\t{\"StatusAlreadyReported\", Const, 7, \"\"},\n\t\t{\"StatusBadGateway\", Const, 0, \"\"},\n\t\t{\"StatusBadRequest\", Const, 0, \"\"},\n\t\t{\"StatusConflict\", Const, 0, \"\"},\n\t\t{\"StatusContinue\", Const, 0, \"\"},\n\t\t{\"StatusCreated\", Const, 0, \"\"},\n\t\t{\"StatusEarlyHints\", Const, 13, \"\"},\n\t\t{\"StatusExpectationFailed\", Const, 0, \"\"},\n\t\t{\"StatusFailedDependency\", Const, 7, \"\"},\n\t\t{\"StatusForbidden\", Const, 0, \"\"},\n\t\t{\"StatusFound\", Const, 0, \"\"},\n\t\t{\"StatusGatewayTimeout\", Const, 0, \"\"},\n\t\t{\"StatusGone\", Const, 0, \"\"},\n\t\t{\"StatusHTTPVersionNotSupported\", Const, 0, \"\"},\n\t\t{\"StatusIMUsed\", Const, 7, \"\"},\n\t\t{\"StatusInsufficientStorage\", Const, 7, \"\"},\n\t\t{\"StatusInternalServerError\", Const, 0, \"\"},\n\t\t{\"StatusLengthRequired\", Const, 0, \"\"},\n\t\t{\"StatusLocked\", Const, 7, \"\"},\n\t\t{\"StatusLoopDetected\", Const, 7, \"\"},\n\t\t{\"StatusMethodNotAllowed\", Const, 0, \"\"},\n\t\t{\"StatusMisdirectedRequest\", Const, 11, \"\"},\n\t\t{\"StatusMovedPermanently\", Const, 0, \"\"},\n\t\t{\"StatusMultiStatus\", Const, 7, \"\"},\n\t\t{\"StatusMultipleChoices\", Const, 0, \"\"},\n\t\t{\"StatusNetworkAuthenticationRequired\", Const, 6, \"\"},\n\t\t{\"StatusNoContent\", Const, 0, \"\"},\n\t\t{\"StatusNonAuthoritativeInfo\", Const, 0, \"\"},\n\t\t{\"StatusNotAcceptable\", Const, 0, \"\"},\n\t\t{\"StatusNotExtended\", Const, 7, \"\"},\n\t\t{\"StatusNotFound\", Const, 0, \"\"},\n\t\t{\"StatusNotImplemented\", Const, 0, \"\"},\n\t\t{\"StatusNotModified\", Const, 0, \"\"},\n\t\t{\"StatusOK\", Const, 0, \"\"},\n\t\t{\"StatusPartialContent\", Const, 0, \"\"},\n\t\t{\"StatusPaymentRequired\", Const, 0, \"\"},\n\t\t{\"StatusPermanentRedirect\", Const, 7, \"\"},\n\t\t{\"StatusPreconditionFailed\", Const, 0, \"\"},\n\t\t{\"StatusPreconditionRequired\", Const, 6, \"\"},\n\t\t{\"StatusProcessing\", Const, 7, \"\"},\n\t\t{\"StatusProxyAuthRequired\", Const, 0, \"\"},\n\t\t{\"StatusRequestEntityTooLarge\", Const, 0, \"\"},\n\t\t{\"StatusRequestHeaderFieldsTooLarge\", Const, 6, \"\"},\n\t\t{\"StatusRequestTimeout\", Const, 0, \"\"},\n\t\t{\"StatusRequestURITooLong\", Const, 0, \"\"},\n\t\t{\"StatusRequestedRangeNotSatisfiable\", Const, 0, \"\"},\n\t\t{\"StatusResetContent\", Const, 0, \"\"},\n\t\t{\"StatusSeeOther\", Const, 0, \"\"},\n\t\t{\"StatusServiceUnavailable\", Const, 0, \"\"},\n\t\t{\"StatusSwitchingProtocols\", Const, 0, \"\"},\n\t\t{\"StatusTeapot\", Const, 0, \"\"},\n\t\t{\"StatusTemporaryRedirect\", Const, 0, \"\"},\n\t\t{\"StatusText\", Func, 0, \"func(code int) string\"},\n\t\t{\"StatusTooEarly\", Const, 12, \"\"},\n\t\t{\"StatusTooManyRequests\", Const, 6, \"\"},\n\t\t{\"StatusUnauthorized\", Const, 0, \"\"},\n\t\t{\"StatusUnavailableForLegalReasons\", Const, 6, \"\"},\n\t\t{\"StatusUnprocessableEntity\", Const, 7, \"\"},\n\t\t{\"StatusUnsupportedMediaType\", Const, 0, \"\"},\n\t\t{\"StatusUpgradeRequired\", Const, 7, \"\"},\n\t\t{\"StatusUseProxy\", Const, 0, \"\"},\n\t\t{\"StatusVariantAlsoNegotiates\", Const, 7, \"\"},\n\t\t{\"StripPrefix\", Func, 0, \"func(prefix string, h Handler) Handler\"},\n\t\t{\"TimeFormat\", Const, 0, \"\"},\n\t\t{\"TimeoutHandler\", Func, 0, \"func(h Handler, dt time.Duration, msg string) Handler\"},\n\t\t{\"TrailerPrefix\", Const, 8, \"\"},\n\t\t{\"Transport\", Type, 0, \"\"},\n\t\t{\"Transport.Dial\", Field, 0, \"\"},\n\t\t{\"Transport.DialContext\", Field, 7, \"\"},\n\t\t{\"Transport.DialTLS\", Field, 4, \"\"},\n\t\t{\"Transport.DialTLSContext\", Field, 14, \"\"},\n\t\t{\"Transport.DisableCompression\", Field, 0, \"\"},\n\t\t{\"Transport.DisableKeepAlives\", Field, 0, \"\"},\n\t\t{\"Transport.ExpectContinueTimeout\", Field, 6, \"\"},\n\t\t{\"Transport.ForceAttemptHTTP2\", Field, 13, \"\"},\n\t\t{\"Transport.GetProxyConnectHeader\", Field, 16, \"\"},\n\t\t{\"Transport.HTTP2\", Field, 24, \"\"},\n\t\t{\"Transport.IdleConnTimeout\", Field, 7, \"\"},\n\t\t{\"Transport.MaxConnsPerHost\", Field, 11, \"\"},\n\t\t{\"Transport.MaxIdleConns\", Field, 7, \"\"},\n\t\t{\"Transport.MaxIdleConnsPerHost\", Field, 0, \"\"},\n\t\t{\"Transport.MaxResponseHeaderBytes\", Field, 7, \"\"},\n\t\t{\"Transport.OnProxyConnectResponse\", Field, 20, \"\"},\n\t\t{\"Transport.Protocols\", Field, 24, \"\"},\n\t\t{\"Transport.Proxy\", Field, 0, \"\"},\n\t\t{\"Transport.ProxyConnectHeader\", Field, 8, \"\"},\n\t\t{\"Transport.ReadBufferSize\", Field, 13, \"\"},\n\t\t{\"Transport.ResponseHeaderTimeout\", Field, 1, \"\"},\n\t\t{\"Transport.TLSClientConfig\", Field, 0, \"\"},\n\t\t{\"Transport.TLSHandshakeTimeout\", Field, 3, \"\"},\n\t\t{\"Transport.TLSNextProto\", Field, 6, \"\"},\n\t\t{\"Transport.WriteBufferSize\", Field, 13, \"\"},\n\t},\n\t\"net/http/cgi\": {\n\t\t{\"(*Handler).ServeHTTP\", Method, 0, \"\"},\n\t\t{\"Handler\", Type, 0, \"\"},\n\t\t{\"Handler.Args\", Field, 0, \"\"},\n\t\t{\"Handler.Dir\", Field, 0, \"\"},\n\t\t{\"Handler.Env\", Field, 0, \"\"},\n\t\t{\"Handler.InheritEnv\", Field, 0, \"\"},\n\t\t{\"Handler.Logger\", Field, 0, \"\"},\n\t\t{\"Handler.Path\", Field, 0, \"\"},\n\t\t{\"Handler.PathLocationHandler\", Field, 0, \"\"},\n\t\t{\"Handler.Root\", Field, 0, \"\"},\n\t\t{\"Handler.Stderr\", Field, 7, \"\"},\n\t\t{\"Request\", Func, 0, \"func() (*http.Request, error)\"},\n\t\t{\"RequestFromMap\", Func, 0, \"func(params map[string]string) (*http.Request, error)\"},\n\t\t{\"Serve\", Func, 0, \"func(handler http.Handler) error\"},\n\t},\n\t\"net/http/cookiejar\": {\n\t\t{\"(*Jar).Cookies\", Method, 1, \"\"},\n\t\t{\"(*Jar).SetCookies\", Method, 1, \"\"},\n\t\t{\"(PublicSuffixList).PublicSuffix\", Method, 1, \"\"},\n\t\t{\"(PublicSuffixList).String\", Method, 1, \"\"},\n\t\t{\"Jar\", Type, 1, \"\"},\n\t\t{\"New\", Func, 1, \"func(o *Options) (*Jar, error)\"},\n\t\t{\"Options\", Type, 1, \"\"},\n\t\t{\"Options.PublicSuffixList\", Field, 1, \"\"},\n\t\t{\"PublicSuffixList\", Type, 1, \"\"},\n\t},\n\t\"net/http/fcgi\": {\n\t\t{\"ErrConnClosed\", Var, 5, \"\"},\n\t\t{\"ErrRequestAborted\", Var, 5, \"\"},\n\t\t{\"ProcessEnv\", Func, 9, \"func(r *http.Request) map[string]string\"},\n\t\t{\"Serve\", Func, 0, \"func(l net.Listener, handler http.Handler) error\"},\n\t},\n\t\"net/http/httptest\": {\n\t\t{\"(*ResponseRecorder).Flush\", Method, 0, \"\"},\n\t\t{\"(*ResponseRecorder).Header\", Method, 0, \"\"},\n\t\t{\"(*ResponseRecorder).Result\", Method, 7, \"\"},\n\t\t{\"(*ResponseRecorder).Write\", Method, 0, \"\"},\n\t\t{\"(*ResponseRecorder).WriteHeader\", Method, 0, \"\"},\n\t\t{\"(*ResponseRecorder).WriteString\", Method, 6, \"\"},\n\t\t{\"(*Server).Certificate\", Method, 9, \"\"},\n\t\t{\"(*Server).Client\", Method, 9, \"\"},\n\t\t{\"(*Server).Close\", Method, 0, \"\"},\n\t\t{\"(*Server).CloseClientConnections\", Method, 0, \"\"},\n\t\t{\"(*Server).Start\", Method, 0, \"\"},\n\t\t{\"(*Server).StartTLS\", Method, 0, \"\"},\n\t\t{\"DefaultRemoteAddr\", Const, 0, \"\"},\n\t\t{\"NewRecorder\", Func, 0, \"func() *ResponseRecorder\"},\n\t\t{\"NewRequest\", Func, 7, \"func(method string, target string, body io.Reader) *http.Request\"},\n\t\t{\"NewRequestWithContext\", Func, 23, \"func(ctx context.Context, method string, target string, body io.Reader) *http.Request\"},\n\t\t{\"NewServer\", Func, 0, \"func(handler http.Handler) *Server\"},\n\t\t{\"NewTLSServer\", Func, 0, \"func(handler http.Handler) *Server\"},\n\t\t{\"NewUnstartedServer\", Func, 0, \"func(handler http.Handler) *Server\"},\n\t\t{\"ResponseRecorder\", Type, 0, \"\"},\n\t\t{\"ResponseRecorder.Body\", Field, 0, \"\"},\n\t\t{\"ResponseRecorder.Code\", Field, 0, \"\"},\n\t\t{\"ResponseRecorder.Flushed\", Field, 0, \"\"},\n\t\t{\"ResponseRecorder.HeaderMap\", Field, 0, \"\"},\n\t\t{\"Server\", Type, 0, \"\"},\n\t\t{\"Server.Config\", Field, 0, \"\"},\n\t\t{\"Server.EnableHTTP2\", Field, 14, \"\"},\n\t\t{\"Server.Listener\", Field, 0, \"\"},\n\t\t{\"Server.TLS\", Field, 0, \"\"},\n\t\t{\"Server.URL\", Field, 0, \"\"},\n\t},\n\t\"net/http/httptrace\": {\n\t\t{\"ClientTrace\", Type, 7, \"\"},\n\t\t{\"ClientTrace.ConnectDone\", Field, 7, \"\"},\n\t\t{\"ClientTrace.ConnectStart\", Field, 7, \"\"},\n\t\t{\"ClientTrace.DNSDone\", Field, 7, \"\"},\n\t\t{\"ClientTrace.DNSStart\", Field, 7, \"\"},\n\t\t{\"ClientTrace.GetConn\", Field, 7, \"\"},\n\t\t{\"ClientTrace.Got100Continue\", Field, 7, \"\"},\n\t\t{\"ClientTrace.Got1xxResponse\", Field, 11, \"\"},\n\t\t{\"ClientTrace.GotConn\", Field, 7, \"\"},\n\t\t{\"ClientTrace.GotFirstResponseByte\", Field, 7, \"\"},\n\t\t{\"ClientTrace.PutIdleConn\", Field, 7, \"\"},\n\t\t{\"ClientTrace.TLSHandshakeDone\", Field, 8, \"\"},\n\t\t{\"ClientTrace.TLSHandshakeStart\", Field, 8, \"\"},\n\t\t{\"ClientTrace.Wait100Continue\", Field, 7, \"\"},\n\t\t{\"ClientTrace.WroteHeaderField\", Field, 11, \"\"},\n\t\t{\"ClientTrace.WroteHeaders\", Field, 7, \"\"},\n\t\t{\"ClientTrace.WroteRequest\", Field, 7, \"\"},\n\t\t{\"ContextClientTrace\", Func, 7, \"func(ctx context.Context) *ClientTrace\"},\n\t\t{\"DNSDoneInfo\", Type, 7, \"\"},\n\t\t{\"DNSDoneInfo.Addrs\", Field, 7, \"\"},\n\t\t{\"DNSDoneInfo.Coalesced\", Field, 7, \"\"},\n\t\t{\"DNSDoneInfo.Err\", Field, 7, \"\"},\n\t\t{\"DNSStartInfo\", Type, 7, \"\"},\n\t\t{\"DNSStartInfo.Host\", Field, 7, \"\"},\n\t\t{\"GotConnInfo\", Type, 7, \"\"},\n\t\t{\"GotConnInfo.Conn\", Field, 7, \"\"},\n\t\t{\"GotConnInfo.IdleTime\", Field, 7, \"\"},\n\t\t{\"GotConnInfo.Reused\", Field, 7, \"\"},\n\t\t{\"GotConnInfo.WasIdle\", Field, 7, \"\"},\n\t\t{\"WithClientTrace\", Func, 7, \"func(ctx context.Context, trace *ClientTrace) context.Context\"},\n\t\t{\"WroteRequestInfo\", Type, 7, \"\"},\n\t\t{\"WroteRequestInfo.Err\", Field, 7, \"\"},\n\t},\n\t\"net/http/httputil\": {\n\t\t{\"(*ClientConn).Close\", Method, 0, \"\"},\n\t\t{\"(*ClientConn).Do\", Method, 0, \"\"},\n\t\t{\"(*ClientConn).Hijack\", Method, 0, \"\"},\n\t\t{\"(*ClientConn).Pending\", Method, 0, \"\"},\n\t\t{\"(*ClientConn).Read\", Method, 0, \"\"},\n\t\t{\"(*ClientConn).Write\", Method, 0, \"\"},\n\t\t{\"(*ProxyRequest).SetURL\", Method, 20, \"\"},\n\t\t{\"(*ProxyRequest).SetXForwarded\", Method, 20, \"\"},\n\t\t{\"(*ReverseProxy).ServeHTTP\", Method, 0, \"\"},\n\t\t{\"(*ServerConn).Close\", Method, 0, \"\"},\n\t\t{\"(*ServerConn).Hijack\", Method, 0, \"\"},\n\t\t{\"(*ServerConn).Pending\", Method, 0, \"\"},\n\t\t{\"(*ServerConn).Read\", Method, 0, \"\"},\n\t\t{\"(*ServerConn).Write\", Method, 0, \"\"},\n\t\t{\"(BufferPool).Get\", Method, 6, \"\"},\n\t\t{\"(BufferPool).Put\", Method, 6, \"\"},\n\t\t{\"BufferPool\", Type, 6, \"\"},\n\t\t{\"ClientConn\", Type, 0, \"\"},\n\t\t{\"DumpRequest\", Func, 0, \"func(req *http.Request, body bool) ([]byte, error)\"},\n\t\t{\"DumpRequestOut\", Func, 0, \"func(req *http.Request, body bool) ([]byte, error)\"},\n\t\t{\"DumpResponse\", Func, 0, \"func(resp *http.Response, body bool) ([]byte, error)\"},\n\t\t{\"ErrClosed\", Var, 0, \"\"},\n\t\t{\"ErrLineTooLong\", Var, 0, \"\"},\n\t\t{\"ErrPersistEOF\", Var, 0, \"\"},\n\t\t{\"ErrPipeline\", Var, 0, \"\"},\n\t\t{\"NewChunkedReader\", Func, 0, \"func(r io.Reader) io.Reader\"},\n\t\t{\"NewChunkedWriter\", Func, 0, \"func(w io.Writer) io.WriteCloser\"},\n\t\t{\"NewClientConn\", Func, 0, \"func(c net.Conn, r *bufio.Reader) *ClientConn\"},\n\t\t{\"NewProxyClientConn\", Func, 0, \"func(c net.Conn, r *bufio.Reader) *ClientConn\"},\n\t\t{\"NewServerConn\", Func, 0, \"func(c net.Conn, r *bufio.Reader) *ServerConn\"},\n\t\t{\"NewSingleHostReverseProxy\", Func, 0, \"func(target *url.URL) *ReverseProxy\"},\n\t\t{\"ProxyRequest\", Type, 20, \"\"},\n\t\t{\"ProxyRequest.In\", Field, 20, \"\"},\n\t\t{\"ProxyRequest.Out\", Field, 20, \"\"},\n\t\t{\"ReverseProxy\", Type, 0, \"\"},\n\t\t{\"ReverseProxy.BufferPool\", Field, 6, \"\"},\n\t\t{\"ReverseProxy.Director\", Field, 0, \"\"},\n\t\t{\"ReverseProxy.ErrorHandler\", Field, 11, \"\"},\n\t\t{\"ReverseProxy.ErrorLog\", Field, 4, \"\"},\n\t\t{\"ReverseProxy.FlushInterval\", Field, 0, \"\"},\n\t\t{\"ReverseProxy.ModifyResponse\", Field, 8, \"\"},\n\t\t{\"ReverseProxy.Rewrite\", Field, 20, \"\"},\n\t\t{\"ReverseProxy.Transport\", Field, 0, \"\"},\n\t\t{\"ServerConn\", Type, 0, \"\"},\n\t},\n\t\"net/http/pprof\": {\n\t\t{\"Cmdline\", Func, 0, \"func(w http.ResponseWriter, r *http.Request)\"},\n\t\t{\"Handler\", Func, 0, \"func(name string) http.Handler\"},\n\t\t{\"Index\", Func, 0, \"func(w http.ResponseWriter, r *http.Request)\"},\n\t\t{\"Profile\", Func, 0, \"func(w http.ResponseWriter, r *http.Request)\"},\n\t\t{\"Symbol\", Func, 0, \"func(w http.ResponseWriter, r *http.Request)\"},\n\t\t{\"Trace\", Func, 5, \"func(w http.ResponseWriter, r *http.Request)\"},\n\t},\n\t\"net/mail\": {\n\t\t{\"(*Address).String\", Method, 0, \"\"},\n\t\t{\"(*AddressParser).Parse\", Method, 5, \"\"},\n\t\t{\"(*AddressParser).ParseList\", Method, 5, \"\"},\n\t\t{\"(Header).AddressList\", Method, 0, \"\"},\n\t\t{\"(Header).Date\", Method, 0, \"\"},\n\t\t{\"(Header).Get\", Method, 0, \"\"},\n\t\t{\"Address\", Type, 0, \"\"},\n\t\t{\"Address.Address\", Field, 0, \"\"},\n\t\t{\"Address.Name\", Field, 0, \"\"},\n\t\t{\"AddressParser\", Type, 5, \"\"},\n\t\t{\"AddressParser.WordDecoder\", Field, 5, \"\"},\n\t\t{\"ErrHeaderNotPresent\", Var, 0, \"\"},\n\t\t{\"Header\", Type, 0, \"\"},\n\t\t{\"Message\", Type, 0, \"\"},\n\t\t{\"Message.Body\", Field, 0, \"\"},\n\t\t{\"Message.Header\", Field, 0, \"\"},\n\t\t{\"ParseAddress\", Func, 1, \"func(address string) (*Address, error)\"},\n\t\t{\"ParseAddressList\", Func, 1, \"func(list string) ([]*Address, error)\"},\n\t\t{\"ParseDate\", Func, 8, \"func(date string) (time.Time, error)\"},\n\t\t{\"ReadMessage\", Func, 0, \"func(r io.Reader) (msg *Message, err error)\"},\n\t},\n\t\"net/netip\": {\n\t\t{\"(*Addr).UnmarshalBinary\", Method, 18, \"\"},\n\t\t{\"(*Addr).UnmarshalText\", Method, 18, \"\"},\n\t\t{\"(*AddrPort).UnmarshalBinary\", Method, 18, \"\"},\n\t\t{\"(*AddrPort).UnmarshalText\", Method, 18, \"\"},\n\t\t{\"(*Prefix).UnmarshalBinary\", Method, 18, \"\"},\n\t\t{\"(*Prefix).UnmarshalText\", Method, 18, \"\"},\n\t\t{\"(Addr).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(Addr).AppendText\", Method, 24, \"\"},\n\t\t{\"(Addr).AppendTo\", Method, 18, \"\"},\n\t\t{\"(Addr).As16\", Method, 18, \"\"},\n\t\t{\"(Addr).As4\", Method, 18, \"\"},\n\t\t{\"(Addr).AsSlice\", Method, 18, \"\"},\n\t\t{\"(Addr).BitLen\", Method, 18, \"\"},\n\t\t{\"(Addr).Compare\", Method, 18, \"\"},\n\t\t{\"(Addr).Is4\", Method, 18, \"\"},\n\t\t{\"(Addr).Is4In6\", Method, 18, \"\"},\n\t\t{\"(Addr).Is6\", Method, 18, \"\"},\n\t\t{\"(Addr).IsGlobalUnicast\", Method, 18, \"\"},\n\t\t{\"(Addr).IsInterfaceLocalMulticast\", Method, 18, \"\"},\n\t\t{\"(Addr).IsLinkLocalMulticast\", Method, 18, \"\"},\n\t\t{\"(Addr).IsLinkLocalUnicast\", Method, 18, \"\"},\n\t\t{\"(Addr).IsLoopback\", Method, 18, \"\"},\n\t\t{\"(Addr).IsMulticast\", Method, 18, \"\"},\n\t\t{\"(Addr).IsPrivate\", Method, 18, \"\"},\n\t\t{\"(Addr).IsUnspecified\", Method, 18, \"\"},\n\t\t{\"(Addr).IsValid\", Method, 18, \"\"},\n\t\t{\"(Addr).Less\", Method, 18, \"\"},\n\t\t{\"(Addr).MarshalBinary\", Method, 18, \"\"},\n\t\t{\"(Addr).MarshalText\", Method, 18, \"\"},\n\t\t{\"(Addr).Next\", Method, 18, \"\"},\n\t\t{\"(Addr).Prefix\", Method, 18, \"\"},\n\t\t{\"(Addr).Prev\", Method, 18, \"\"},\n\t\t{\"(Addr).String\", Method, 18, \"\"},\n\t\t{\"(Addr).StringExpanded\", Method, 18, \"\"},\n\t\t{\"(Addr).Unmap\", Method, 18, \"\"},\n\t\t{\"(Addr).WithZone\", Method, 18, \"\"},\n\t\t{\"(Addr).Zone\", Method, 18, \"\"},\n\t\t{\"(AddrPort).Addr\", Method, 18, \"\"},\n\t\t{\"(AddrPort).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(AddrPort).AppendText\", Method, 24, \"\"},\n\t\t{\"(AddrPort).AppendTo\", Method, 18, \"\"},\n\t\t{\"(AddrPort).Compare\", Method, 22, \"\"},\n\t\t{\"(AddrPort).IsValid\", Method, 18, \"\"},\n\t\t{\"(AddrPort).MarshalBinary\", Method, 18, \"\"},\n\t\t{\"(AddrPort).MarshalText\", Method, 18, \"\"},\n\t\t{\"(AddrPort).Port\", Method, 18, \"\"},\n\t\t{\"(AddrPort).String\", Method, 18, \"\"},\n\t\t{\"(Prefix).Addr\", Method, 18, \"\"},\n\t\t{\"(Prefix).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(Prefix).AppendText\", Method, 24, \"\"},\n\t\t{\"(Prefix).AppendTo\", Method, 18, \"\"},\n\t\t{\"(Prefix).Bits\", Method, 18, \"\"},\n\t\t{\"(Prefix).Compare\", Method, 26, \"\"},\n\t\t{\"(Prefix).Contains\", Method, 18, \"\"},\n\t\t{\"(Prefix).IsSingleIP\", Method, 18, \"\"},\n\t\t{\"(Prefix).IsValid\", Method, 18, \"\"},\n\t\t{\"(Prefix).MarshalBinary\", Method, 18, \"\"},\n\t\t{\"(Prefix).MarshalText\", Method, 18, \"\"},\n\t\t{\"(Prefix).Masked\", Method, 18, \"\"},\n\t\t{\"(Prefix).Overlaps\", Method, 18, \"\"},\n\t\t{\"(Prefix).String\", Method, 18, \"\"},\n\t\t{\"Addr\", Type, 18, \"\"},\n\t\t{\"AddrFrom16\", Func, 18, \"func(addr [16]byte) Addr\"},\n\t\t{\"AddrFrom4\", Func, 18, \"func(addr [4]byte) Addr\"},\n\t\t{\"AddrFromSlice\", Func, 18, \"func(slice []byte) (ip Addr, ok bool)\"},\n\t\t{\"AddrPort\", Type, 18, \"\"},\n\t\t{\"AddrPortFrom\", Func, 18, \"func(ip Addr, port uint16) AddrPort\"},\n\t\t{\"IPv4Unspecified\", Func, 18, \"func() Addr\"},\n\t\t{\"IPv6LinkLocalAllNodes\", Func, 18, \"func() Addr\"},\n\t\t{\"IPv6LinkLocalAllRouters\", Func, 20, \"func() Addr\"},\n\t\t{\"IPv6Loopback\", Func, 20, \"func() Addr\"},\n\t\t{\"IPv6Unspecified\", Func, 18, \"func() Addr\"},\n\t\t{\"MustParseAddr\", Func, 18, \"func(s string) Addr\"},\n\t\t{\"MustParseAddrPort\", Func, 18, \"func(s string) AddrPort\"},\n\t\t{\"MustParsePrefix\", Func, 18, \"func(s string) Prefix\"},\n\t\t{\"ParseAddr\", Func, 18, \"func(s string) (Addr, error)\"},\n\t\t{\"ParseAddrPort\", Func, 18, \"func(s string) (AddrPort, error)\"},\n\t\t{\"ParsePrefix\", Func, 18, \"func(s string) (Prefix, error)\"},\n\t\t{\"Prefix\", Type, 18, \"\"},\n\t\t{\"PrefixFrom\", Func, 18, \"func(ip Addr, bits int) Prefix\"},\n\t},\n\t\"net/rpc\": {\n\t\t{\"(*Client).Call\", Method, 0, \"\"},\n\t\t{\"(*Client).Close\", Method, 0, \"\"},\n\t\t{\"(*Client).Go\", Method, 0, \"\"},\n\t\t{\"(*Server).Accept\", Method, 0, \"\"},\n\t\t{\"(*Server).HandleHTTP\", Method, 0, \"\"},\n\t\t{\"(*Server).Register\", Method, 0, \"\"},\n\t\t{\"(*Server).RegisterName\", Method, 0, \"\"},\n\t\t{\"(*Server).ServeCodec\", Method, 0, \"\"},\n\t\t{\"(*Server).ServeConn\", Method, 0, \"\"},\n\t\t{\"(*Server).ServeHTTP\", Method, 0, \"\"},\n\t\t{\"(*Server).ServeRequest\", Method, 0, \"\"},\n\t\t{\"(ClientCodec).Close\", Method, 0, \"\"},\n\t\t{\"(ClientCodec).ReadResponseBody\", Method, 0, \"\"},\n\t\t{\"(ClientCodec).ReadResponseHeader\", Method, 0, \"\"},\n\t\t{\"(ClientCodec).WriteRequest\", Method, 0, \"\"},\n\t\t{\"(ServerCodec).Close\", Method, 0, \"\"},\n\t\t{\"(ServerCodec).ReadRequestBody\", Method, 0, \"\"},\n\t\t{\"(ServerCodec).ReadRequestHeader\", Method, 0, \"\"},\n\t\t{\"(ServerCodec).WriteResponse\", Method, 0, \"\"},\n\t\t{\"(ServerError).Error\", Method, 0, \"\"},\n\t\t{\"Accept\", Func, 0, \"func(lis net.Listener)\"},\n\t\t{\"Call\", Type, 0, \"\"},\n\t\t{\"Call.Args\", Field, 0, \"\"},\n\t\t{\"Call.Done\", Field, 0, \"\"},\n\t\t{\"Call.Error\", Field, 0, \"\"},\n\t\t{\"Call.Reply\", Field, 0, \"\"},\n\t\t{\"Call.ServiceMethod\", Field, 0, \"\"},\n\t\t{\"Client\", Type, 0, \"\"},\n\t\t{\"ClientCodec\", Type, 0, \"\"},\n\t\t{\"DefaultDebugPath\", Const, 0, \"\"},\n\t\t{\"DefaultRPCPath\", Const, 0, \"\"},\n\t\t{\"DefaultServer\", Var, 0, \"\"},\n\t\t{\"Dial\", Func, 0, \"func(network string, address string) (*Client, error)\"},\n\t\t{\"DialHTTP\", Func, 0, \"func(network string, address string) (*Client, error)\"},\n\t\t{\"DialHTTPPath\", Func, 0, \"func(network string, address string, path string) (*Client, error)\"},\n\t\t{\"ErrShutdown\", Var, 0, \"\"},\n\t\t{\"HandleHTTP\", Func, 0, \"func()\"},\n\t\t{\"NewClient\", Func, 0, \"func(conn io.ReadWriteCloser) *Client\"},\n\t\t{\"NewClientWithCodec\", Func, 0, \"func(codec ClientCodec) *Client\"},\n\t\t{\"NewServer\", Func, 0, \"func() *Server\"},\n\t\t{\"Register\", Func, 0, \"func(rcvr any) error\"},\n\t\t{\"RegisterName\", Func, 0, \"func(name string, rcvr any) error\"},\n\t\t{\"Request\", Type, 0, \"\"},\n\t\t{\"Request.Seq\", Field, 0, \"\"},\n\t\t{\"Request.ServiceMethod\", Field, 0, \"\"},\n\t\t{\"Response\", Type, 0, \"\"},\n\t\t{\"Response.Error\", Field, 0, \"\"},\n\t\t{\"Response.Seq\", Field, 0, \"\"},\n\t\t{\"Response.ServiceMethod\", Field, 0, \"\"},\n\t\t{\"ServeCodec\", Func, 0, \"func(codec ServerCodec)\"},\n\t\t{\"ServeConn\", Func, 0, \"func(conn io.ReadWriteCloser)\"},\n\t\t{\"ServeRequest\", Func, 0, \"func(codec ServerCodec) error\"},\n\t\t{\"Server\", Type, 0, \"\"},\n\t\t{\"ServerCodec\", Type, 0, \"\"},\n\t\t{\"ServerError\", Type, 0, \"\"},\n\t},\n\t\"net/rpc/jsonrpc\": {\n\t\t{\"Dial\", Func, 0, \"func(network string, address string) (*rpc.Client, error)\"},\n\t\t{\"NewClient\", Func, 0, \"func(conn io.ReadWriteCloser) *rpc.Client\"},\n\t\t{\"NewClientCodec\", Func, 0, \"func(conn io.ReadWriteCloser) rpc.ClientCodec\"},\n\t\t{\"NewServerCodec\", Func, 0, \"func(conn io.ReadWriteCloser) rpc.ServerCodec\"},\n\t\t{\"ServeConn\", Func, 0, \"func(conn io.ReadWriteCloser)\"},\n\t},\n\t\"net/smtp\": {\n\t\t{\"(*Client).Auth\", Method, 0, \"\"},\n\t\t{\"(*Client).Close\", Method, 2, \"\"},\n\t\t{\"(*Client).Data\", Method, 0, \"\"},\n\t\t{\"(*Client).Extension\", Method, 0, \"\"},\n\t\t{\"(*Client).Hello\", Method, 1, \"\"},\n\t\t{\"(*Client).Mail\", Method, 0, \"\"},\n\t\t{\"(*Client).Noop\", Method, 10, \"\"},\n\t\t{\"(*Client).Quit\", Method, 0, \"\"},\n\t\t{\"(*Client).Rcpt\", Method, 0, \"\"},\n\t\t{\"(*Client).Reset\", Method, 0, \"\"},\n\t\t{\"(*Client).StartTLS\", Method, 0, \"\"},\n\t\t{\"(*Client).TLSConnectionState\", Method, 5, \"\"},\n\t\t{\"(*Client).Verify\", Method, 0, \"\"},\n\t\t{\"(Auth).Next\", Method, 0, \"\"},\n\t\t{\"(Auth).Start\", Method, 0, \"\"},\n\t\t{\"Auth\", Type, 0, \"\"},\n\t\t{\"CRAMMD5Auth\", Func, 0, \"func(username string, secret string) Auth\"},\n\t\t{\"Client\", Type, 0, \"\"},\n\t\t{\"Client.Text\", Field, 0, \"\"},\n\t\t{\"Dial\", Func, 0, \"func(addr string) (*Client, error)\"},\n\t\t{\"NewClient\", Func, 0, \"func(conn net.Conn, host string) (*Client, error)\"},\n\t\t{\"PlainAuth\", Func, 0, \"func(identity string, username string, password string, host string) Auth\"},\n\t\t{\"SendMail\", Func, 0, \"func(addr string, a Auth, from string, to []string, msg []byte) error\"},\n\t\t{\"ServerInfo\", Type, 0, \"\"},\n\t\t{\"ServerInfo.Auth\", Field, 0, \"\"},\n\t\t{\"ServerInfo.Name\", Field, 0, \"\"},\n\t\t{\"ServerInfo.TLS\", Field, 0, \"\"},\n\t},\n\t\"net/textproto\": {\n\t\t{\"(*Conn).Close\", Method, 0, \"\"},\n\t\t{\"(*Conn).Cmd\", Method, 0, \"\"},\n\t\t{\"(*Conn).DotReader\", Method, 0, \"\"},\n\t\t{\"(*Conn).DotWriter\", Method, 0, \"\"},\n\t\t{\"(*Conn).EndRequest\", Method, 0, \"\"},\n\t\t{\"(*Conn).EndResponse\", Method, 0, \"\"},\n\t\t{\"(*Conn).Next\", Method, 0, \"\"},\n\t\t{\"(*Conn).PrintfLine\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadCodeLine\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadContinuedLine\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadContinuedLineBytes\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadDotBytes\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadDotLines\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadLine\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadLineBytes\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadMIMEHeader\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadResponse\", Method, 0, \"\"},\n\t\t{\"(*Conn).StartRequest\", Method, 0, \"\"},\n\t\t{\"(*Conn).StartResponse\", Method, 0, \"\"},\n\t\t{\"(*Error).Error\", Method, 0, \"\"},\n\t\t{\"(*Pipeline).EndRequest\", Method, 0, \"\"},\n\t\t{\"(*Pipeline).EndResponse\", Method, 0, \"\"},\n\t\t{\"(*Pipeline).Next\", Method, 0, \"\"},\n\t\t{\"(*Pipeline).StartRequest\", Method, 0, \"\"},\n\t\t{\"(*Pipeline).StartResponse\", Method, 0, \"\"},\n\t\t{\"(*Reader).DotReader\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadCodeLine\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadContinuedLine\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadContinuedLineBytes\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadDotBytes\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadDotLines\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadLine\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadLineBytes\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadMIMEHeader\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadResponse\", Method, 0, \"\"},\n\t\t{\"(*Writer).DotWriter\", Method, 0, \"\"},\n\t\t{\"(*Writer).PrintfLine\", Method, 0, \"\"},\n\t\t{\"(MIMEHeader).Add\", Method, 0, \"\"},\n\t\t{\"(MIMEHeader).Del\", Method, 0, \"\"},\n\t\t{\"(MIMEHeader).Get\", Method, 0, \"\"},\n\t\t{\"(MIMEHeader).Set\", Method, 0, \"\"},\n\t\t{\"(MIMEHeader).Values\", Method, 14, \"\"},\n\t\t{\"(ProtocolError).Error\", Method, 0, \"\"},\n\t\t{\"CanonicalMIMEHeaderKey\", Func, 0, \"func(s string) string\"},\n\t\t{\"Conn\", Type, 0, \"\"},\n\t\t{\"Conn.Pipeline\", Field, 0, \"\"},\n\t\t{\"Conn.Reader\", Field, 0, \"\"},\n\t\t{\"Conn.Writer\", Field, 0, \"\"},\n\t\t{\"Dial\", Func, 0, \"func(network string, addr string) (*Conn, error)\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Error.Code\", Field, 0, \"\"},\n\t\t{\"Error.Msg\", Field, 0, \"\"},\n\t\t{\"MIMEHeader\", Type, 0, \"\"},\n\t\t{\"NewConn\", Func, 0, \"func(conn io.ReadWriteCloser) *Conn\"},\n\t\t{\"NewReader\", Func, 0, \"func(r *bufio.Reader) *Reader\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w *bufio.Writer) *Writer\"},\n\t\t{\"Pipeline\", Type, 0, \"\"},\n\t\t{\"ProtocolError\", Type, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Reader.R\", Field, 0, \"\"},\n\t\t{\"TrimBytes\", Func, 1, \"func(b []byte) []byte\"},\n\t\t{\"TrimString\", Func, 1, \"func(s string) string\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t\t{\"Writer.W\", Field, 0, \"\"},\n\t},\n\t\"net/url\": {\n\t\t{\"(*Error).Error\", Method, 0, \"\"},\n\t\t{\"(*Error).Temporary\", Method, 6, \"\"},\n\t\t{\"(*Error).Timeout\", Method, 6, \"\"},\n\t\t{\"(*Error).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*URL).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(*URL).EscapedFragment\", Method, 15, \"\"},\n\t\t{\"(*URL).EscapedPath\", Method, 5, \"\"},\n\t\t{\"(*URL).Hostname\", Method, 8, \"\"},\n\t\t{\"(*URL).IsAbs\", Method, 0, \"\"},\n\t\t{\"(*URL).JoinPath\", Method, 19, \"\"},\n\t\t{\"(*URL).MarshalBinary\", Method, 8, \"\"},\n\t\t{\"(*URL).Parse\", Method, 0, \"\"},\n\t\t{\"(*URL).Port\", Method, 8, \"\"},\n\t\t{\"(*URL).Query\", Method, 0, \"\"},\n\t\t{\"(*URL).Redacted\", Method, 15, \"\"},\n\t\t{\"(*URL).RequestURI\", Method, 0, \"\"},\n\t\t{\"(*URL).ResolveReference\", Method, 0, \"\"},\n\t\t{\"(*URL).String\", Method, 0, \"\"},\n\t\t{\"(*URL).UnmarshalBinary\", Method, 8, \"\"},\n\t\t{\"(*Userinfo).Password\", Method, 0, \"\"},\n\t\t{\"(*Userinfo).String\", Method, 0, \"\"},\n\t\t{\"(*Userinfo).Username\", Method, 0, \"\"},\n\t\t{\"(EscapeError).Error\", Method, 0, \"\"},\n\t\t{\"(InvalidHostError).Error\", Method, 6, \"\"},\n\t\t{\"(Values).Add\", Method, 0, \"\"},\n\t\t{\"(Values).Del\", Method, 0, \"\"},\n\t\t{\"(Values).Encode\", Method, 0, \"\"},\n\t\t{\"(Values).Get\", Method, 0, \"\"},\n\t\t{\"(Values).Has\", Method, 17, \"\"},\n\t\t{\"(Values).Set\", Method, 0, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Error.Err\", Field, 0, \"\"},\n\t\t{\"Error.Op\", Field, 0, \"\"},\n\t\t{\"Error.URL\", Field, 0, \"\"},\n\t\t{\"EscapeError\", Type, 0, \"\"},\n\t\t{\"InvalidHostError\", Type, 6, \"\"},\n\t\t{\"JoinPath\", Func, 19, \"func(base string, elem ...string) (result string, err error)\"},\n\t\t{\"Parse\", Func, 0, \"func(rawURL string) (*URL, error)\"},\n\t\t{\"ParseQuery\", Func, 0, \"func(query string) (Values, error)\"},\n\t\t{\"ParseRequestURI\", Func, 0, \"func(rawURL string) (*URL, error)\"},\n\t\t{\"PathEscape\", Func, 8, \"func(s string) string\"},\n\t\t{\"PathUnescape\", Func, 8, \"func(s string) (string, error)\"},\n\t\t{\"QueryEscape\", Func, 0, \"func(s string) string\"},\n\t\t{\"QueryUnescape\", Func, 0, \"func(s string) (string, error)\"},\n\t\t{\"URL\", Type, 0, \"\"},\n\t\t{\"URL.ForceQuery\", Field, 7, \"\"},\n\t\t{\"URL.Fragment\", Field, 0, \"\"},\n\t\t{\"URL.Host\", Field, 0, \"\"},\n\t\t{\"URL.OmitHost\", Field, 19, \"\"},\n\t\t{\"URL.Opaque\", Field, 0, \"\"},\n\t\t{\"URL.Path\", Field, 0, \"\"},\n\t\t{\"URL.RawFragment\", Field, 15, \"\"},\n\t\t{\"URL.RawPath\", Field, 5, \"\"},\n\t\t{\"URL.RawQuery\", Field, 0, \"\"},\n\t\t{\"URL.Scheme\", Field, 0, \"\"},\n\t\t{\"URL.User\", Field, 0, \"\"},\n\t\t{\"User\", Func, 0, \"func(username string) *Userinfo\"},\n\t\t{\"UserPassword\", Func, 0, \"func(username string, password string) *Userinfo\"},\n\t\t{\"Userinfo\", Type, 0, \"\"},\n\t\t{\"Values\", Type, 0, \"\"},\n\t},\n\t\"os\": {\n\t\t{\"(*File).Chdir\", Method, 0, \"\"},\n\t\t{\"(*File).Chmod\", Method, 0, \"\"},\n\t\t{\"(*File).Chown\", Method, 0, \"\"},\n\t\t{\"(*File).Close\", Method, 0, \"\"},\n\t\t{\"(*File).Fd\", Method, 0, \"\"},\n\t\t{\"(*File).Name\", Method, 0, \"\"},\n\t\t{\"(*File).Read\", Method, 0, \"\"},\n\t\t{\"(*File).ReadAt\", Method, 0, \"\"},\n\t\t{\"(*File).ReadDir\", Method, 16, \"\"},\n\t\t{\"(*File).ReadFrom\", Method, 15, \"\"},\n\t\t{\"(*File).Readdir\", Method, 0, \"\"},\n\t\t{\"(*File).Readdirnames\", Method, 0, \"\"},\n\t\t{\"(*File).Seek\", Method, 0, \"\"},\n\t\t{\"(*File).SetDeadline\", Method, 10, \"\"},\n\t\t{\"(*File).SetReadDeadline\", Method, 10, \"\"},\n\t\t{\"(*File).SetWriteDeadline\", Method, 10, \"\"},\n\t\t{\"(*File).Stat\", Method, 0, \"\"},\n\t\t{\"(*File).Sync\", Method, 0, \"\"},\n\t\t{\"(*File).SyscallConn\", Method, 12, \"\"},\n\t\t{\"(*File).Truncate\", Method, 0, \"\"},\n\t\t{\"(*File).Write\", Method, 0, \"\"},\n\t\t{\"(*File).WriteAt\", Method, 0, \"\"},\n\t\t{\"(*File).WriteString\", Method, 0, \"\"},\n\t\t{\"(*File).WriteTo\", Method, 22, \"\"},\n\t\t{\"(*LinkError).Error\", Method, 0, \"\"},\n\t\t{\"(*LinkError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*PathError).Error\", Method, 0, \"\"},\n\t\t{\"(*PathError).Timeout\", Method, 10, \"\"},\n\t\t{\"(*PathError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*Process).Kill\", Method, 0, \"\"},\n\t\t{\"(*Process).Release\", Method, 0, \"\"},\n\t\t{\"(*Process).Signal\", Method, 0, \"\"},\n\t\t{\"(*Process).Wait\", Method, 0, \"\"},\n\t\t{\"(*Process).WithHandle\", Method, 26, \"\"},\n\t\t{\"(*ProcessState).ExitCode\", Method, 12, \"\"},\n\t\t{\"(*ProcessState).Exited\", Method, 0, \"\"},\n\t\t{\"(*ProcessState).Pid\", Method, 0, \"\"},\n\t\t{\"(*ProcessState).String\", Method, 0, \"\"},\n\t\t{\"(*ProcessState).Success\", Method, 0, \"\"},\n\t\t{\"(*ProcessState).Sys\", Method, 0, \"\"},\n\t\t{\"(*ProcessState).SysUsage\", Method, 0, \"\"},\n\t\t{\"(*ProcessState).SystemTime\", Method, 0, \"\"},\n\t\t{\"(*ProcessState).UserTime\", Method, 0, \"\"},\n\t\t{\"(*Root).Chmod\", Method, 25, \"\"},\n\t\t{\"(*Root).Chown\", Method, 25, \"\"},\n\t\t{\"(*Root).Chtimes\", Method, 25, \"\"},\n\t\t{\"(*Root).Close\", Method, 24, \"\"},\n\t\t{\"(*Root).Create\", Method, 24, \"\"},\n\t\t{\"(*Root).FS\", Method, 24, \"\"},\n\t\t{\"(*Root).Lchown\", Method, 25, \"\"},\n\t\t{\"(*Root).Link\", Method, 25, \"\"},\n\t\t{\"(*Root).Lstat\", Method, 24, \"\"},\n\t\t{\"(*Root).Mkdir\", Method, 24, \"\"},\n\t\t{\"(*Root).MkdirAll\", Method, 25, \"\"},\n\t\t{\"(*Root).Name\", Method, 24, \"\"},\n\t\t{\"(*Root).Open\", Method, 24, \"\"},\n\t\t{\"(*Root).OpenFile\", Method, 24, \"\"},\n\t\t{\"(*Root).OpenRoot\", Method, 24, \"\"},\n\t\t{\"(*Root).ReadFile\", Method, 25, \"\"},\n\t\t{\"(*Root).Readlink\", Method, 25, \"\"},\n\t\t{\"(*Root).Remove\", Method, 24, \"\"},\n\t\t{\"(*Root).RemoveAll\", Method, 25, \"\"},\n\t\t{\"(*Root).Rename\", Method, 25, \"\"},\n\t\t{\"(*Root).Stat\", Method, 24, \"\"},\n\t\t{\"(*Root).Symlink\", Method, 25, \"\"},\n\t\t{\"(*Root).WriteFile\", Method, 25, \"\"},\n\t\t{\"(*SyscallError).Error\", Method, 0, \"\"},\n\t\t{\"(*SyscallError).Timeout\", Method, 10, \"\"},\n\t\t{\"(*SyscallError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(FileInfo).IsDir\", Method, 0, \"\"},\n\t\t{\"(FileInfo).ModTime\", Method, 0, \"\"},\n\t\t{\"(FileInfo).Mode\", Method, 0, \"\"},\n\t\t{\"(FileInfo).Name\", Method, 0, \"\"},\n\t\t{\"(FileInfo).Size\", Method, 0, \"\"},\n\t\t{\"(FileInfo).Sys\", Method, 0, \"\"},\n\t\t{\"(FileMode).IsDir\", Method, 0, \"\"},\n\t\t{\"(FileMode).IsRegular\", Method, 1, \"\"},\n\t\t{\"(FileMode).Perm\", Method, 0, \"\"},\n\t\t{\"(FileMode).String\", Method, 0, \"\"},\n\t\t{\"(Signal).Signal\", Method, 0, \"\"},\n\t\t{\"(Signal).String\", Method, 0, \"\"},\n\t\t{\"Args\", Var, 0, \"\"},\n\t\t{\"Chdir\", Func, 0, \"func(dir string) error\"},\n\t\t{\"Chmod\", Func, 0, \"func(name string, mode FileMode) error\"},\n\t\t{\"Chown\", Func, 0, \"func(name string, uid int, gid int) error\"},\n\t\t{\"Chtimes\", Func, 0, \"func(name string, atime time.Time, mtime time.Time) error\"},\n\t\t{\"Clearenv\", Func, 0, \"func()\"},\n\t\t{\"CopyFS\", Func, 23, \"func(dir string, fsys fs.FS) error\"},\n\t\t{\"Create\", Func, 0, \"func(name string) (*File, error)\"},\n\t\t{\"CreateTemp\", Func, 16, \"func(dir string, pattern string) (*File, error)\"},\n\t\t{\"DevNull\", Const, 0, \"\"},\n\t\t{\"DirEntry\", Type, 16, \"\"},\n\t\t{\"DirFS\", Func, 16, \"func(dir string) fs.FS\"},\n\t\t{\"Environ\", Func, 0, \"func() []string\"},\n\t\t{\"ErrClosed\", Var, 8, \"\"},\n\t\t{\"ErrDeadlineExceeded\", Var, 15, \"\"},\n\t\t{\"ErrExist\", Var, 0, \"\"},\n\t\t{\"ErrInvalid\", Var, 0, \"\"},\n\t\t{\"ErrNoDeadline\", Var, 10, \"\"},\n\t\t{\"ErrNoHandle\", Var, 26, \"\"},\n\t\t{\"ErrNotExist\", Var, 0, \"\"},\n\t\t{\"ErrPermission\", Var, 0, \"\"},\n\t\t{\"ErrProcessDone\", Var, 16, \"\"},\n\t\t{\"Executable\", Func, 8, \"func() (string, error)\"},\n\t\t{\"Exit\", Func, 0, \"func(code int)\"},\n\t\t{\"Expand\", Func, 0, \"func(s string, mapping func(string) string) string\"},\n\t\t{\"ExpandEnv\", Func, 0, \"func(s string) string\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"FileInfo\", Type, 0, \"\"},\n\t\t{\"FileMode\", Type, 0, \"\"},\n\t\t{\"FindProcess\", Func, 0, \"func(pid int) (*Process, error)\"},\n\t\t{\"Getegid\", Func, 0, \"func() int\"},\n\t\t{\"Getenv\", Func, 0, \"func(key string) string\"},\n\t\t{\"Geteuid\", Func, 0, \"func() int\"},\n\t\t{\"Getgid\", Func, 0, \"func() int\"},\n\t\t{\"Getgroups\", Func, 0, \"func() ([]int, error)\"},\n\t\t{\"Getpagesize\", Func, 0, \"func() int\"},\n\t\t{\"Getpid\", Func, 0, \"func() int\"},\n\t\t{\"Getppid\", Func, 0, \"func() int\"},\n\t\t{\"Getuid\", Func, 0, \"func() int\"},\n\t\t{\"Getwd\", Func, 0, \"func() (dir string, err error)\"},\n\t\t{\"Hostname\", Func, 0, \"func() (name string, err error)\"},\n\t\t{\"Interrupt\", Var, 0, \"\"},\n\t\t{\"IsExist\", Func, 0, \"func(err error) bool\"},\n\t\t{\"IsNotExist\", Func, 0, \"func(err error) bool\"},\n\t\t{\"IsPathSeparator\", Func, 0, \"func(c uint8) bool\"},\n\t\t{\"IsPermission\", Func, 0, \"func(err error) bool\"},\n\t\t{\"IsTimeout\", Func, 10, \"func(err error) bool\"},\n\t\t{\"Kill\", Var, 0, \"\"},\n\t\t{\"Lchown\", Func, 0, \"func(name string, uid int, gid int) error\"},\n\t\t{\"Link\", Func, 0, \"func(oldname string, newname string) error\"},\n\t\t{\"LinkError\", Type, 0, \"\"},\n\t\t{\"LinkError.Err\", Field, 0, \"\"},\n\t\t{\"LinkError.New\", Field, 0, \"\"},\n\t\t{\"LinkError.Old\", Field, 0, \"\"},\n\t\t{\"LinkError.Op\", Field, 0, \"\"},\n\t\t{\"LookupEnv\", Func, 5, \"func(key string) (string, bool)\"},\n\t\t{\"Lstat\", Func, 0, \"func(name string) (FileInfo, error)\"},\n\t\t{\"Mkdir\", Func, 0, \"func(name string, perm FileMode) error\"},\n\t\t{\"MkdirAll\", Func, 0, \"func(path string, perm FileMode) error\"},\n\t\t{\"MkdirTemp\", Func, 16, \"func(dir string, pattern string) (string, error)\"},\n\t\t{\"ModeAppend\", Const, 0, \"\"},\n\t\t{\"ModeCharDevice\", Const, 0, \"\"},\n\t\t{\"ModeDevice\", Const, 0, \"\"},\n\t\t{\"ModeDir\", Const, 0, \"\"},\n\t\t{\"ModeExclusive\", Const, 0, \"\"},\n\t\t{\"ModeIrregular\", Const, 11, \"\"},\n\t\t{\"ModeNamedPipe\", Const, 0, \"\"},\n\t\t{\"ModePerm\", Const, 0, \"\"},\n\t\t{\"ModeSetgid\", Const, 0, \"\"},\n\t\t{\"ModeSetuid\", Const, 0, \"\"},\n\t\t{\"ModeSocket\", Const, 0, \"\"},\n\t\t{\"ModeSticky\", Const, 0, \"\"},\n\t\t{\"ModeSymlink\", Const, 0, \"\"},\n\t\t{\"ModeTemporary\", Const, 0, \"\"},\n\t\t{\"ModeType\", Const, 0, \"\"},\n\t\t{\"NewFile\", Func, 0, \"func(fd uintptr, name string) *File\"},\n\t\t{\"NewSyscallError\", Func, 0, \"func(syscall string, err error) error\"},\n\t\t{\"O_APPEND\", Const, 0, \"\"},\n\t\t{\"O_CREATE\", Const, 0, \"\"},\n\t\t{\"O_EXCL\", Const, 0, \"\"},\n\t\t{\"O_RDONLY\", Const, 0, \"\"},\n\t\t{\"O_RDWR\", Const, 0, \"\"},\n\t\t{\"O_SYNC\", Const, 0, \"\"},\n\t\t{\"O_TRUNC\", Const, 0, \"\"},\n\t\t{\"O_WRONLY\", Const, 0, \"\"},\n\t\t{\"Open\", Func, 0, \"func(name string) (*File, error)\"},\n\t\t{\"OpenFile\", Func, 0, \"func(name string, flag int, perm FileMode) (*File, error)\"},\n\t\t{\"OpenInRoot\", Func, 24, \"func(dir string, name string) (*File, error)\"},\n\t\t{\"OpenRoot\", Func, 24, \"func(name string) (*Root, error)\"},\n\t\t{\"PathError\", Type, 0, \"\"},\n\t\t{\"PathError.Err\", Field, 0, \"\"},\n\t\t{\"PathError.Op\", Field, 0, \"\"},\n\t\t{\"PathError.Path\", Field, 0, \"\"},\n\t\t{\"PathListSeparator\", Const, 0, \"\"},\n\t\t{\"PathSeparator\", Const, 0, \"\"},\n\t\t{\"Pipe\", Func, 0, \"func() (r *File, w *File, err error)\"},\n\t\t{\"ProcAttr\", Type, 0, \"\"},\n\t\t{\"ProcAttr.Dir\", Field, 0, \"\"},\n\t\t{\"ProcAttr.Env\", Field, 0, \"\"},\n\t\t{\"ProcAttr.Files\", Field, 0, \"\"},\n\t\t{\"ProcAttr.Sys\", Field, 0, \"\"},\n\t\t{\"Process\", Type, 0, \"\"},\n\t\t{\"Process.Pid\", Field, 0, \"\"},\n\t\t{\"ProcessState\", Type, 0, \"\"},\n\t\t{\"ReadDir\", Func, 16, \"func(name string) ([]DirEntry, error)\"},\n\t\t{\"ReadFile\", Func, 16, \"func(name string) ([]byte, error)\"},\n\t\t{\"Readlink\", Func, 0, \"func(name string) (string, error)\"},\n\t\t{\"Remove\", Func, 0, \"func(name string) error\"},\n\t\t{\"RemoveAll\", Func, 0, \"func(path string) error\"},\n\t\t{\"Rename\", Func, 0, \"func(oldpath string, newpath string) error\"},\n\t\t{\"Root\", Type, 24, \"\"},\n\t\t{\"SEEK_CUR\", Const, 0, \"\"},\n\t\t{\"SEEK_END\", Const, 0, \"\"},\n\t\t{\"SEEK_SET\", Const, 0, \"\"},\n\t\t{\"SameFile\", Func, 0, \"func(fi1 FileInfo, fi2 FileInfo) bool\"},\n\t\t{\"Setenv\", Func, 0, \"func(key string, value string) error\"},\n\t\t{\"Signal\", Type, 0, \"\"},\n\t\t{\"StartProcess\", Func, 0, \"func(name string, argv []string, attr *ProcAttr) (*Process, error)\"},\n\t\t{\"Stat\", Func, 0, \"func(name string) (FileInfo, error)\"},\n\t\t{\"Stderr\", Var, 0, \"\"},\n\t\t{\"Stdin\", Var, 0, \"\"},\n\t\t{\"Stdout\", Var, 0, \"\"},\n\t\t{\"Symlink\", Func, 0, \"func(oldname string, newname string) error\"},\n\t\t{\"SyscallError\", Type, 0, \"\"},\n\t\t{\"SyscallError.Err\", Field, 0, \"\"},\n\t\t{\"SyscallError.Syscall\", Field, 0, \"\"},\n\t\t{\"TempDir\", Func, 0, \"func() string\"},\n\t\t{\"Truncate\", Func, 0, \"func(name string, size int64) error\"},\n\t\t{\"Unsetenv\", Func, 4, \"func(key string) error\"},\n\t\t{\"UserCacheDir\", Func, 11, \"func() (string, error)\"},\n\t\t{\"UserConfigDir\", Func, 13, \"func() (string, error)\"},\n\t\t{\"UserHomeDir\", Func, 12, \"func() (string, error)\"},\n\t\t{\"WriteFile\", Func, 16, \"func(name string, data []byte, perm FileMode) error\"},\n\t},\n\t\"os/exec\": {\n\t\t{\"(*Cmd).CombinedOutput\", Method, 0, \"\"},\n\t\t{\"(*Cmd).Environ\", Method, 19, \"\"},\n\t\t{\"(*Cmd).Output\", Method, 0, \"\"},\n\t\t{\"(*Cmd).Run\", Method, 0, \"\"},\n\t\t{\"(*Cmd).Start\", Method, 0, \"\"},\n\t\t{\"(*Cmd).StderrPipe\", Method, 0, \"\"},\n\t\t{\"(*Cmd).StdinPipe\", Method, 0, \"\"},\n\t\t{\"(*Cmd).StdoutPipe\", Method, 0, \"\"},\n\t\t{\"(*Cmd).String\", Method, 13, \"\"},\n\t\t{\"(*Cmd).Wait\", Method, 0, \"\"},\n\t\t{\"(*Error).Error\", Method, 0, \"\"},\n\t\t{\"(*Error).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*ExitError).Error\", Method, 0, \"\"},\n\t\t{\"(ExitError).ExitCode\", Method, 12, \"\"},\n\t\t{\"(ExitError).Exited\", Method, 0, \"\"},\n\t\t{\"(ExitError).Pid\", Method, 0, \"\"},\n\t\t{\"(ExitError).String\", Method, 0, \"\"},\n\t\t{\"(ExitError).Success\", Method, 0, \"\"},\n\t\t{\"(ExitError).Sys\", Method, 0, \"\"},\n\t\t{\"(ExitError).SysUsage\", Method, 0, \"\"},\n\t\t{\"(ExitError).SystemTime\", Method, 0, \"\"},\n\t\t{\"(ExitError).UserTime\", Method, 0, \"\"},\n\t\t{\"Cmd\", Type, 0, \"\"},\n\t\t{\"Cmd.Args\", Field, 0, \"\"},\n\t\t{\"Cmd.Cancel\", Field, 20, \"\"},\n\t\t{\"Cmd.Dir\", Field, 0, \"\"},\n\t\t{\"Cmd.Env\", Field, 0, \"\"},\n\t\t{\"Cmd.Err\", Field, 19, \"\"},\n\t\t{\"Cmd.ExtraFiles\", Field, 0, \"\"},\n\t\t{\"Cmd.Path\", Field, 0, \"\"},\n\t\t{\"Cmd.Process\", Field, 0, \"\"},\n\t\t{\"Cmd.ProcessState\", Field, 0, \"\"},\n\t\t{\"Cmd.Stderr\", Field, 0, \"\"},\n\t\t{\"Cmd.Stdin\", Field, 0, \"\"},\n\t\t{\"Cmd.Stdout\", Field, 0, \"\"},\n\t\t{\"Cmd.SysProcAttr\", Field, 0, \"\"},\n\t\t{\"Cmd.WaitDelay\", Field, 20, \"\"},\n\t\t{\"Command\", Func, 0, \"func(name string, arg ...string) *Cmd\"},\n\t\t{\"CommandContext\", Func, 7, \"func(ctx context.Context, name string, arg ...string) *Cmd\"},\n\t\t{\"ErrDot\", Var, 19, \"\"},\n\t\t{\"ErrNotFound\", Var, 0, \"\"},\n\t\t{\"ErrWaitDelay\", Var, 20, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Error.Err\", Field, 0, \"\"},\n\t\t{\"Error.Name\", Field, 0, \"\"},\n\t\t{\"ExitError\", Type, 0, \"\"},\n\t\t{\"ExitError.ProcessState\", Field, 0, \"\"},\n\t\t{\"ExitError.Stderr\", Field, 6, \"\"},\n\t\t{\"LookPath\", Func, 0, \"func(file string) (string, error)\"},\n\t},\n\t\"os/signal\": {\n\t\t{\"Ignore\", Func, 5, \"func(sig ...os.Signal)\"},\n\t\t{\"Ignored\", Func, 11, \"func(sig os.Signal) bool\"},\n\t\t{\"Notify\", Func, 0, \"func(c chan<- os.Signal, sig ...os.Signal)\"},\n\t\t{\"NotifyContext\", Func, 16, \"func(parent context.Context, signals ...os.Signal) (ctx context.Context, stop context.CancelFunc)\"},\n\t\t{\"Reset\", Func, 5, \"func(sig ...os.Signal)\"},\n\t\t{\"Stop\", Func, 1, \"func(c chan<- os.Signal)\"},\n\t},\n\t\"os/user\": {\n\t\t{\"(*User).GroupIds\", Method, 7, \"\"},\n\t\t{\"(UnknownGroupError).Error\", Method, 7, \"\"},\n\t\t{\"(UnknownGroupIdError).Error\", Method, 7, \"\"},\n\t\t{\"(UnknownUserError).Error\", Method, 0, \"\"},\n\t\t{\"(UnknownUserIdError).Error\", Method, 0, \"\"},\n\t\t{\"Current\", Func, 0, \"func() (*User, error)\"},\n\t\t{\"Group\", Type, 7, \"\"},\n\t\t{\"Group.Gid\", Field, 7, \"\"},\n\t\t{\"Group.Name\", Field, 7, \"\"},\n\t\t{\"Lookup\", Func, 0, \"func(username string) (*User, error)\"},\n\t\t{\"LookupGroup\", Func, 7, \"func(name string) (*Group, error)\"},\n\t\t{\"LookupGroupId\", Func, 7, \"func(gid string) (*Group, error)\"},\n\t\t{\"LookupId\", Func, 0, \"func(uid string) (*User, error)\"},\n\t\t{\"UnknownGroupError\", Type, 7, \"\"},\n\t\t{\"UnknownGroupIdError\", Type, 7, \"\"},\n\t\t{\"UnknownUserError\", Type, 0, \"\"},\n\t\t{\"UnknownUserIdError\", Type, 0, \"\"},\n\t\t{\"User\", Type, 0, \"\"},\n\t\t{\"User.Gid\", Field, 0, \"\"},\n\t\t{\"User.HomeDir\", Field, 0, \"\"},\n\t\t{\"User.Name\", Field, 0, \"\"},\n\t\t{\"User.Uid\", Field, 0, \"\"},\n\t\t{\"User.Username\", Field, 0, \"\"},\n\t},\n\t\"path\": {\n\t\t{\"Base\", Func, 0, \"func(path string) string\"},\n\t\t{\"Clean\", Func, 0, \"func(path string) string\"},\n\t\t{\"Dir\", Func, 0, \"func(path string) string\"},\n\t\t{\"ErrBadPattern\", Var, 0, \"\"},\n\t\t{\"Ext\", Func, 0, \"func(path string) string\"},\n\t\t{\"IsAbs\", Func, 0, \"func(path string) bool\"},\n\t\t{\"Join\", Func, 0, \"func(elem ...string) string\"},\n\t\t{\"Match\", Func, 0, \"func(pattern string, name string) (matched bool, err error)\"},\n\t\t{\"Split\", Func, 0, \"func(path string) (dir string, file string)\"},\n\t},\n\t\"path/filepath\": {\n\t\t{\"Abs\", Func, 0, \"func(path string) (string, error)\"},\n\t\t{\"Base\", Func, 0, \"func(path string) string\"},\n\t\t{\"Clean\", Func, 0, \"func(path string) string\"},\n\t\t{\"Dir\", Func, 0, \"func(path string) string\"},\n\t\t{\"ErrBadPattern\", Var, 0, \"\"},\n\t\t{\"EvalSymlinks\", Func, 0, \"func(path string) (string, error)\"},\n\t\t{\"Ext\", Func, 0, \"func(path string) string\"},\n\t\t{\"FromSlash\", Func, 0, \"func(path string) string\"},\n\t\t{\"Glob\", Func, 0, \"func(pattern string) (matches []string, err error)\"},\n\t\t{\"HasPrefix\", Func, 0, \"func(p string, prefix string) bool\"},\n\t\t{\"IsAbs\", Func, 0, \"func(path string) bool\"},\n\t\t{\"IsLocal\", Func, 20, \"func(path string) bool\"},\n\t\t{\"Join\", Func, 0, \"func(elem ...string) string\"},\n\t\t{\"ListSeparator\", Const, 0, \"\"},\n\t\t{\"Localize\", Func, 23, \"func(path string) (string, error)\"},\n\t\t{\"Match\", Func, 0, \"func(pattern string, name string) (matched bool, err error)\"},\n\t\t{\"Rel\", Func, 0, \"func(basePath string, targPath string) (string, error)\"},\n\t\t{\"Separator\", Const, 0, \"\"},\n\t\t{\"SkipAll\", Var, 20, \"\"},\n\t\t{\"SkipDir\", Var, 0, \"\"},\n\t\t{\"Split\", Func, 0, \"func(path string) (dir string, file string)\"},\n\t\t{\"SplitList\", Func, 0, \"func(path string) []string\"},\n\t\t{\"ToSlash\", Func, 0, \"func(path string) string\"},\n\t\t{\"VolumeName\", Func, 0, \"func(path string) string\"},\n\t\t{\"Walk\", Func, 0, \"func(root string, fn WalkFunc) error\"},\n\t\t{\"WalkDir\", Func, 16, \"func(root string, fn fs.WalkDirFunc) error\"},\n\t\t{\"WalkFunc\", Type, 0, \"\"},\n\t},\n\t\"plugin\": {\n\t\t{\"(*Plugin).Lookup\", Method, 8, \"\"},\n\t\t{\"Open\", Func, 8, \"func(path string) (*Plugin, error)\"},\n\t\t{\"Plugin\", Type, 8, \"\"},\n\t\t{\"Symbol\", Type, 8, \"\"},\n\t},\n\t\"reflect\": {\n\t\t{\"(*MapIter).Key\", Method, 12, \"\"},\n\t\t{\"(*MapIter).Next\", Method, 12, \"\"},\n\t\t{\"(*MapIter).Reset\", Method, 18, \"\"},\n\t\t{\"(*MapIter).Value\", Method, 12, \"\"},\n\t\t{\"(*ValueError).Error\", Method, 0, \"\"},\n\t\t{\"(ChanDir).String\", Method, 0, \"\"},\n\t\t{\"(Kind).String\", Method, 0, \"\"},\n\t\t{\"(Method).IsExported\", Method, 17, \"\"},\n\t\t{\"(StructField).IsExported\", Method, 17, \"\"},\n\t\t{\"(StructTag).Get\", Method, 0, \"\"},\n\t\t{\"(StructTag).Lookup\", Method, 7, \"\"},\n\t\t{\"(Type).Align\", Method, 0, \"\"},\n\t\t{\"(Type).AssignableTo\", Method, 0, \"\"},\n\t\t{\"(Type).Bits\", Method, 0, \"\"},\n\t\t{\"(Type).CanSeq\", Method, 23, \"\"},\n\t\t{\"(Type).CanSeq2\", Method, 23, \"\"},\n\t\t{\"(Type).ChanDir\", Method, 0, \"\"},\n\t\t{\"(Type).Comparable\", Method, 4, \"\"},\n\t\t{\"(Type).ConvertibleTo\", Method, 1, \"\"},\n\t\t{\"(Type).Elem\", Method, 0, \"\"},\n\t\t{\"(Type).Field\", Method, 0, \"\"},\n\t\t{\"(Type).FieldAlign\", Method, 0, \"\"},\n\t\t{\"(Type).FieldByIndex\", Method, 0, \"\"},\n\t\t{\"(Type).FieldByName\", Method, 0, \"\"},\n\t\t{\"(Type).FieldByNameFunc\", Method, 0, \"\"},\n\t\t{\"(Type).Fields\", Method, 26, \"\"},\n\t\t{\"(Type).Implements\", Method, 0, \"\"},\n\t\t{\"(Type).In\", Method, 0, \"\"},\n\t\t{\"(Type).Ins\", Method, 26, \"\"},\n\t\t{\"(Type).IsVariadic\", Method, 0, \"\"},\n\t\t{\"(Type).Key\", Method, 0, \"\"},\n\t\t{\"(Type).Kind\", Method, 0, \"\"},\n\t\t{\"(Type).Len\", Method, 0, \"\"},\n\t\t{\"(Type).Method\", Method, 0, \"\"},\n\t\t{\"(Type).MethodByName\", Method, 0, \"\"},\n\t\t{\"(Type).Methods\", Method, 26, \"\"},\n\t\t{\"(Type).Name\", Method, 0, \"\"},\n\t\t{\"(Type).NumField\", Method, 0, \"\"},\n\t\t{\"(Type).NumIn\", Method, 0, \"\"},\n\t\t{\"(Type).NumMethod\", Method, 0, \"\"},\n\t\t{\"(Type).NumOut\", Method, 0, \"\"},\n\t\t{\"(Type).Out\", Method, 0, \"\"},\n\t\t{\"(Type).Outs\", Method, 26, \"\"},\n\t\t{\"(Type).OverflowComplex\", Method, 23, \"\"},\n\t\t{\"(Type).OverflowFloat\", Method, 23, \"\"},\n\t\t{\"(Type).OverflowInt\", Method, 23, \"\"},\n\t\t{\"(Type).OverflowUint\", Method, 23, \"\"},\n\t\t{\"(Type).PkgPath\", Method, 0, \"\"},\n\t\t{\"(Type).Size\", Method, 0, \"\"},\n\t\t{\"(Type).String\", Method, 0, \"\"},\n\t\t{\"(Value).Addr\", Method, 0, \"\"},\n\t\t{\"(Value).Bool\", Method, 0, \"\"},\n\t\t{\"(Value).Bytes\", Method, 0, \"\"},\n\t\t{\"(Value).Call\", Method, 0, \"\"},\n\t\t{\"(Value).CallSlice\", Method, 0, \"\"},\n\t\t{\"(Value).CanAddr\", Method, 0, \"\"},\n\t\t{\"(Value).CanComplex\", Method, 18, \"\"},\n\t\t{\"(Value).CanConvert\", Method, 17, \"\"},\n\t\t{\"(Value).CanFloat\", Method, 18, \"\"},\n\t\t{\"(Value).CanInt\", Method, 18, \"\"},\n\t\t{\"(Value).CanInterface\", Method, 0, \"\"},\n\t\t{\"(Value).CanSet\", Method, 0, \"\"},\n\t\t{\"(Value).CanUint\", Method, 18, \"\"},\n\t\t{\"(Value).Cap\", Method, 0, \"\"},\n\t\t{\"(Value).Clear\", Method, 21, \"\"},\n\t\t{\"(Value).Close\", Method, 0, \"\"},\n\t\t{\"(Value).Comparable\", Method, 20, \"\"},\n\t\t{\"(Value).Complex\", Method, 0, \"\"},\n\t\t{\"(Value).Convert\", Method, 1, \"\"},\n\t\t{\"(Value).Elem\", Method, 0, \"\"},\n\t\t{\"(Value).Equal\", Method, 20, \"\"},\n\t\t{\"(Value).Field\", Method, 0, \"\"},\n\t\t{\"(Value).FieldByIndex\", Method, 0, \"\"},\n\t\t{\"(Value).FieldByIndexErr\", Method, 18, \"\"},\n\t\t{\"(Value).FieldByName\", Method, 0, \"\"},\n\t\t{\"(Value).FieldByNameFunc\", Method, 0, \"\"},\n\t\t{\"(Value).Fields\", Method, 26, \"\"},\n\t\t{\"(Value).Float\", Method, 0, \"\"},\n\t\t{\"(Value).Grow\", Method, 20, \"\"},\n\t\t{\"(Value).Index\", Method, 0, \"\"},\n\t\t{\"(Value).Int\", Method, 0, \"\"},\n\t\t{\"(Value).Interface\", Method, 0, \"\"},\n\t\t{\"(Value).InterfaceData\", Method, 0, \"\"},\n\t\t{\"(Value).IsNil\", Method, 0, \"\"},\n\t\t{\"(Value).IsValid\", Method, 0, \"\"},\n\t\t{\"(Value).IsZero\", Method, 13, \"\"},\n\t\t{\"(Value).Kind\", Method, 0, \"\"},\n\t\t{\"(Value).Len\", Method, 0, \"\"},\n\t\t{\"(Value).MapIndex\", Method, 0, \"\"},\n\t\t{\"(Value).MapKeys\", Method, 0, \"\"},\n\t\t{\"(Value).MapRange\", Method, 12, \"\"},\n\t\t{\"(Value).Method\", Method, 0, \"\"},\n\t\t{\"(Value).MethodByName\", Method, 0, \"\"},\n\t\t{\"(Value).Methods\", Method, 26, \"\"},\n\t\t{\"(Value).NumField\", Method, 0, \"\"},\n\t\t{\"(Value).NumMethod\", Method, 0, \"\"},\n\t\t{\"(Value).OverflowComplex\", Method, 0, \"\"},\n\t\t{\"(Value).OverflowFloat\", Method, 0, \"\"},\n\t\t{\"(Value).OverflowInt\", Method, 0, \"\"},\n\t\t{\"(Value).OverflowUint\", Method, 0, \"\"},\n\t\t{\"(Value).Pointer\", Method, 0, \"\"},\n\t\t{\"(Value).Recv\", Method, 0, \"\"},\n\t\t{\"(Value).Send\", Method, 0, \"\"},\n\t\t{\"(Value).Seq\", Method, 23, \"\"},\n\t\t{\"(Value).Seq2\", Method, 23, \"\"},\n\t\t{\"(Value).Set\", Method, 0, \"\"},\n\t\t{\"(Value).SetBool\", Method, 0, \"\"},\n\t\t{\"(Value).SetBytes\", Method, 0, \"\"},\n\t\t{\"(Value).SetCap\", Method, 2, \"\"},\n\t\t{\"(Value).SetComplex\", Method, 0, \"\"},\n\t\t{\"(Value).SetFloat\", Method, 0, \"\"},\n\t\t{\"(Value).SetInt\", Method, 0, \"\"},\n\t\t{\"(Value).SetIterKey\", Method, 18, \"\"},\n\t\t{\"(Value).SetIterValue\", Method, 18, \"\"},\n\t\t{\"(Value).SetLen\", Method, 0, \"\"},\n\t\t{\"(Value).SetMapIndex\", Method, 0, \"\"},\n\t\t{\"(Value).SetPointer\", Method, 0, \"\"},\n\t\t{\"(Value).SetString\", Method, 0, \"\"},\n\t\t{\"(Value).SetUint\", Method, 0, \"\"},\n\t\t{\"(Value).SetZero\", Method, 20, \"\"},\n\t\t{\"(Value).Slice\", Method, 0, \"\"},\n\t\t{\"(Value).Slice3\", Method, 2, \"\"},\n\t\t{\"(Value).String\", Method, 0, \"\"},\n\t\t{\"(Value).TryRecv\", Method, 0, \"\"},\n\t\t{\"(Value).TrySend\", Method, 0, \"\"},\n\t\t{\"(Value).Type\", Method, 0, \"\"},\n\t\t{\"(Value).Uint\", Method, 0, \"\"},\n\t\t{\"(Value).UnsafeAddr\", Method, 0, \"\"},\n\t\t{\"(Value).UnsafePointer\", Method, 18, \"\"},\n\t\t{\"Append\", Func, 0, \"func(s Value, x ...Value) Value\"},\n\t\t{\"AppendSlice\", Func, 0, \"func(s Value, t Value) Value\"},\n\t\t{\"Array\", Const, 0, \"\"},\n\t\t{\"ArrayOf\", Func, 5, \"func(length int, elem Type) Type\"},\n\t\t{\"Bool\", Const, 0, \"\"},\n\t\t{\"BothDir\", Const, 0, \"\"},\n\t\t{\"Chan\", Const, 0, \"\"},\n\t\t{\"ChanDir\", Type, 0, \"\"},\n\t\t{\"ChanOf\", Func, 1, \"func(dir ChanDir, t Type) Type\"},\n\t\t{\"Complex128\", Const, 0, \"\"},\n\t\t{\"Complex64\", Const, 0, \"\"},\n\t\t{\"Copy\", Func, 0, \"func(dst Value, src Value) int\"},\n\t\t{\"DeepEqual\", Func, 0, \"func(x any, y any) bool\"},\n\t\t{\"Float32\", Const, 0, \"\"},\n\t\t{\"Float64\", Const, 0, \"\"},\n\t\t{\"Func\", Const, 0, \"\"},\n\t\t{\"FuncOf\", Func, 5, \"func(in []Type, out []Type, variadic bool) Type\"},\n\t\t{\"Indirect\", Func, 0, \"func(v Value) Value\"},\n\t\t{\"Int\", Const, 0, \"\"},\n\t\t{\"Int16\", Const, 0, \"\"},\n\t\t{\"Int32\", Const, 0, \"\"},\n\t\t{\"Int64\", Const, 0, \"\"},\n\t\t{\"Int8\", Const, 0, \"\"},\n\t\t{\"Interface\", Const, 0, \"\"},\n\t\t{\"Invalid\", Const, 0, \"\"},\n\t\t{\"Kind\", Type, 0, \"\"},\n\t\t{\"MakeChan\", Func, 0, \"func(typ Type, buffer int) Value\"},\n\t\t{\"MakeFunc\", Func, 1, \"func(typ Type, fn func(args []Value) (results []Value)) Value\"},\n\t\t{\"MakeMap\", Func, 0, \"func(typ Type) Value\"},\n\t\t{\"MakeMapWithSize\", Func, 9, \"func(typ Type, n int) Value\"},\n\t\t{\"MakeSlice\", Func, 0, \"func(typ Type, len int, cap int) Value\"},\n\t\t{\"Map\", Const, 0, \"\"},\n\t\t{\"MapIter\", Type, 12, \"\"},\n\t\t{\"MapOf\", Func, 1, \"func(key Type, elem Type) Type\"},\n\t\t{\"Method\", Type, 0, \"\"},\n\t\t{\"Method.Func\", Field, 0, \"\"},\n\t\t{\"Method.Index\", Field, 0, \"\"},\n\t\t{\"Method.Name\", Field, 0, \"\"},\n\t\t{\"Method.PkgPath\", Field, 0, \"\"},\n\t\t{\"Method.Type\", Field, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func(typ Type) Value\"},\n\t\t{\"NewAt\", Func, 0, \"func(typ Type, p unsafe.Pointer) Value\"},\n\t\t{\"Pointer\", Const, 18, \"\"},\n\t\t{\"PointerTo\", Func, 18, \"func(t Type) Type\"},\n\t\t{\"Ptr\", Const, 0, \"\"},\n\t\t{\"PtrTo\", Func, 0, \"func(t Type) Type\"},\n\t\t{\"RecvDir\", Const, 0, \"\"},\n\t\t{\"Select\", Func, 1, \"func(cases []SelectCase) (chosen int, recv Value, recvOK bool)\"},\n\t\t{\"SelectCase\", Type, 1, \"\"},\n\t\t{\"SelectCase.Chan\", Field, 1, \"\"},\n\t\t{\"SelectCase.Dir\", Field, 1, \"\"},\n\t\t{\"SelectCase.Send\", Field, 1, \"\"},\n\t\t{\"SelectDefault\", Const, 1, \"\"},\n\t\t{\"SelectDir\", Type, 1, \"\"},\n\t\t{\"SelectRecv\", Const, 1, \"\"},\n\t\t{\"SelectSend\", Const, 1, \"\"},\n\t\t{\"SendDir\", Const, 0, \"\"},\n\t\t{\"Slice\", Const, 0, \"\"},\n\t\t{\"SliceAt\", Func, 23, \"func(typ Type, p unsafe.Pointer, n int) Value\"},\n\t\t{\"SliceHeader\", Type, 0, \"\"},\n\t\t{\"SliceHeader.Cap\", Field, 0, \"\"},\n\t\t{\"SliceHeader.Data\", Field, 0, \"\"},\n\t\t{\"SliceHeader.Len\", Field, 0, \"\"},\n\t\t{\"SliceOf\", Func, 1, \"func(t Type) Type\"},\n\t\t{\"String\", Const, 0, \"\"},\n\t\t{\"StringHeader\", Type, 0, \"\"},\n\t\t{\"StringHeader.Data\", Field, 0, \"\"},\n\t\t{\"StringHeader.Len\", Field, 0, \"\"},\n\t\t{\"Struct\", Const, 0, \"\"},\n\t\t{\"StructField\", Type, 0, \"\"},\n\t\t{\"StructField.Anonymous\", Field, 0, \"\"},\n\t\t{\"StructField.Index\", Field, 0, \"\"},\n\t\t{\"StructField.Name\", Field, 0, \"\"},\n\t\t{\"StructField.Offset\", Field, 0, \"\"},\n\t\t{\"StructField.PkgPath\", Field, 0, \"\"},\n\t\t{\"StructField.Tag\", Field, 0, \"\"},\n\t\t{\"StructField.Type\", Field, 0, \"\"},\n\t\t{\"StructOf\", Func, 7, \"func(fields []StructField) Type\"},\n\t\t{\"StructTag\", Type, 0, \"\"},\n\t\t{\"Swapper\", Func, 8, \"func(slice any) func(i int, j int)\"},\n\t\t{\"TypeAssert\", Func, 25, \"func[T any](v Value) (T, bool)\"},\n\t\t{\"TypeFor\", Func, 22, \"func[T any]() Type\"},\n\t\t{\"TypeOf\", Func, 0, \"func(i any) Type\"},\n\t\t{\"Uint\", Const, 0, \"\"},\n\t\t{\"Uint16\", Const, 0, \"\"},\n\t\t{\"Uint32\", Const, 0, \"\"},\n\t\t{\"Uint64\", Const, 0, \"\"},\n\t\t{\"Uint8\", Const, 0, \"\"},\n\t\t{\"Uintptr\", Const, 0, \"\"},\n\t\t{\"UnsafePointer\", Const, 0, \"\"},\n\t\t{\"Value\", Type, 0, \"\"},\n\t\t{\"ValueError\", Type, 0, \"\"},\n\t\t{\"ValueError.Kind\", Field, 0, \"\"},\n\t\t{\"ValueError.Method\", Field, 0, \"\"},\n\t\t{\"ValueOf\", Func, 0, \"func(i any) Value\"},\n\t\t{\"VisibleFields\", Func, 17, \"func(t Type) []StructField\"},\n\t\t{\"Zero\", Func, 0, \"func(typ Type) Value\"},\n\t},\n\t\"regexp\": {\n\t\t{\"(*Regexp).AppendText\", Method, 24, \"\"},\n\t\t{\"(*Regexp).Copy\", Method, 6, \"\"},\n\t\t{\"(*Regexp).Expand\", Method, 0, \"\"},\n\t\t{\"(*Regexp).ExpandString\", Method, 0, \"\"},\n\t\t{\"(*Regexp).Find\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAll\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAllIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAllString\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAllStringIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAllStringSubmatch\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAllStringSubmatchIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAllSubmatch\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAllSubmatchIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindReaderIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindReaderSubmatchIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindString\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindStringIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindStringSubmatch\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindStringSubmatchIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindSubmatch\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindSubmatchIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).LiteralPrefix\", Method, 0, \"\"},\n\t\t{\"(*Regexp).Longest\", Method, 1, \"\"},\n\t\t{\"(*Regexp).MarshalText\", Method, 21, \"\"},\n\t\t{\"(*Regexp).Match\", Method, 0, \"\"},\n\t\t{\"(*Regexp).MatchReader\", Method, 0, \"\"},\n\t\t{\"(*Regexp).MatchString\", Method, 0, \"\"},\n\t\t{\"(*Regexp).NumSubexp\", Method, 0, \"\"},\n\t\t{\"(*Regexp).ReplaceAll\", Method, 0, \"\"},\n\t\t{\"(*Regexp).ReplaceAllFunc\", Method, 0, \"\"},\n\t\t{\"(*Regexp).ReplaceAllLiteral\", Method, 0, \"\"},\n\t\t{\"(*Regexp).ReplaceAllLiteralString\", Method, 0, \"\"},\n\t\t{\"(*Regexp).ReplaceAllString\", Method, 0, \"\"},\n\t\t{\"(*Regexp).ReplaceAllStringFunc\", Method, 0, \"\"},\n\t\t{\"(*Regexp).Split\", Method, 1, \"\"},\n\t\t{\"(*Regexp).String\", Method, 0, \"\"},\n\t\t{\"(*Regexp).SubexpIndex\", Method, 15, \"\"},\n\t\t{\"(*Regexp).SubexpNames\", Method, 0, \"\"},\n\t\t{\"(*Regexp).UnmarshalText\", Method, 21, \"\"},\n\t\t{\"Compile\", Func, 0, \"func(expr string) (*Regexp, error)\"},\n\t\t{\"CompilePOSIX\", Func, 0, \"func(expr string) (*Regexp, error)\"},\n\t\t{\"Match\", Func, 0, \"func(pattern string, b []byte) (matched bool, err error)\"},\n\t\t{\"MatchReader\", Func, 0, \"func(pattern string, r io.RuneReader) (matched bool, err error)\"},\n\t\t{\"MatchString\", Func, 0, \"func(pattern string, s string) (matched bool, err error)\"},\n\t\t{\"MustCompile\", Func, 0, \"func(str string) *Regexp\"},\n\t\t{\"MustCompilePOSIX\", Func, 0, \"func(str string) *Regexp\"},\n\t\t{\"QuoteMeta\", Func, 0, \"func(s string) string\"},\n\t\t{\"Regexp\", Type, 0, \"\"},\n\t},\n\t\"regexp/syntax\": {\n\t\t{\"(*Error).Error\", Method, 0, \"\"},\n\t\t{\"(*Inst).MatchEmptyWidth\", Method, 0, \"\"},\n\t\t{\"(*Inst).MatchRune\", Method, 0, \"\"},\n\t\t{\"(*Inst).MatchRunePos\", Method, 3, \"\"},\n\t\t{\"(*Inst).String\", Method, 0, \"\"},\n\t\t{\"(*Prog).Prefix\", Method, 0, \"\"},\n\t\t{\"(*Prog).StartCond\", Method, 0, \"\"},\n\t\t{\"(*Prog).String\", Method, 0, \"\"},\n\t\t{\"(*Regexp).CapNames\", Method, 0, \"\"},\n\t\t{\"(*Regexp).Equal\", Method, 0, \"\"},\n\t\t{\"(*Regexp).MaxCap\", Method, 0, \"\"},\n\t\t{\"(*Regexp).Simplify\", Method, 0, \"\"},\n\t\t{\"(*Regexp).String\", Method, 0, \"\"},\n\t\t{\"(ErrorCode).String\", Method, 0, \"\"},\n\t\t{\"(InstOp).String\", Method, 3, \"\"},\n\t\t{\"(Op).String\", Method, 11, \"\"},\n\t\t{\"ClassNL\", Const, 0, \"\"},\n\t\t{\"Compile\", Func, 0, \"func(re *Regexp) (*Prog, error)\"},\n\t\t{\"DotNL\", Const, 0, \"\"},\n\t\t{\"EmptyBeginLine\", Const, 0, \"\"},\n\t\t{\"EmptyBeginText\", Const, 0, \"\"},\n\t\t{\"EmptyEndLine\", Const, 0, \"\"},\n\t\t{\"EmptyEndText\", Const, 0, \"\"},\n\t\t{\"EmptyNoWordBoundary\", Const, 0, \"\"},\n\t\t{\"EmptyOp\", Type, 0, \"\"},\n\t\t{\"EmptyOpContext\", Func, 0, \"func(r1 rune, r2 rune) EmptyOp\"},\n\t\t{\"EmptyWordBoundary\", Const, 0, \"\"},\n\t\t{\"ErrInternalError\", Const, 0, \"\"},\n\t\t{\"ErrInvalidCharClass\", Const, 0, \"\"},\n\t\t{\"ErrInvalidCharRange\", Const, 0, \"\"},\n\t\t{\"ErrInvalidEscape\", Const, 0, \"\"},\n\t\t{\"ErrInvalidNamedCapture\", Const, 0, \"\"},\n\t\t{\"ErrInvalidPerlOp\", Const, 0, \"\"},\n\t\t{\"ErrInvalidRepeatOp\", Const, 0, \"\"},\n\t\t{\"ErrInvalidRepeatSize\", Const, 0, \"\"},\n\t\t{\"ErrInvalidUTF8\", Const, 0, \"\"},\n\t\t{\"ErrLarge\", Const, 20, \"\"},\n\t\t{\"ErrMissingBracket\", Const, 0, \"\"},\n\t\t{\"ErrMissingParen\", Const, 0, \"\"},\n\t\t{\"ErrMissingRepeatArgument\", Const, 0, \"\"},\n\t\t{\"ErrNestingDepth\", Const, 19, \"\"},\n\t\t{\"ErrTrailingBackslash\", Const, 0, \"\"},\n\t\t{\"ErrUnexpectedParen\", Const, 1, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Error.Code\", Field, 0, \"\"},\n\t\t{\"Error.Expr\", Field, 0, \"\"},\n\t\t{\"ErrorCode\", Type, 0, \"\"},\n\t\t{\"Flags\", Type, 0, \"\"},\n\t\t{\"FoldCase\", Const, 0, \"\"},\n\t\t{\"Inst\", Type, 0, \"\"},\n\t\t{\"Inst.Arg\", Field, 0, \"\"},\n\t\t{\"Inst.Op\", Field, 0, \"\"},\n\t\t{\"Inst.Out\", Field, 0, \"\"},\n\t\t{\"Inst.Rune\", Field, 0, \"\"},\n\t\t{\"InstAlt\", Const, 0, \"\"},\n\t\t{\"InstAltMatch\", Const, 0, \"\"},\n\t\t{\"InstCapture\", Const, 0, \"\"},\n\t\t{\"InstEmptyWidth\", Const, 0, \"\"},\n\t\t{\"InstFail\", Const, 0, \"\"},\n\t\t{\"InstMatch\", Const, 0, \"\"},\n\t\t{\"InstNop\", Const, 0, \"\"},\n\t\t{\"InstOp\", Type, 0, \"\"},\n\t\t{\"InstRune\", Const, 0, \"\"},\n\t\t{\"InstRune1\", Const, 0, \"\"},\n\t\t{\"InstRuneAny\", Const, 0, \"\"},\n\t\t{\"InstRuneAnyNotNL\", Const, 0, \"\"},\n\t\t{\"IsWordChar\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"Literal\", Const, 0, \"\"},\n\t\t{\"MatchNL\", Const, 0, \"\"},\n\t\t{\"NonGreedy\", Const, 0, \"\"},\n\t\t{\"OneLine\", Const, 0, \"\"},\n\t\t{\"Op\", Type, 0, \"\"},\n\t\t{\"OpAlternate\", Const, 0, \"\"},\n\t\t{\"OpAnyChar\", Const, 0, \"\"},\n\t\t{\"OpAnyCharNotNL\", Const, 0, \"\"},\n\t\t{\"OpBeginLine\", Const, 0, \"\"},\n\t\t{\"OpBeginText\", Const, 0, \"\"},\n\t\t{\"OpCapture\", Const, 0, \"\"},\n\t\t{\"OpCharClass\", Const, 0, \"\"},\n\t\t{\"OpConcat\", Const, 0, \"\"},\n\t\t{\"OpEmptyMatch\", Const, 0, \"\"},\n\t\t{\"OpEndLine\", Const, 0, \"\"},\n\t\t{\"OpEndText\", Const, 0, \"\"},\n\t\t{\"OpLiteral\", Const, 0, \"\"},\n\t\t{\"OpNoMatch\", Const, 0, \"\"},\n\t\t{\"OpNoWordBoundary\", Const, 0, \"\"},\n\t\t{\"OpPlus\", Const, 0, \"\"},\n\t\t{\"OpQuest\", Const, 0, \"\"},\n\t\t{\"OpRepeat\", Const, 0, \"\"},\n\t\t{\"OpStar\", Const, 0, \"\"},\n\t\t{\"OpWordBoundary\", Const, 0, \"\"},\n\t\t{\"POSIX\", Const, 0, \"\"},\n\t\t{\"Parse\", Func, 0, \"func(s string, flags Flags) (*Regexp, error)\"},\n\t\t{\"Perl\", Const, 0, \"\"},\n\t\t{\"PerlX\", Const, 0, \"\"},\n\t\t{\"Prog\", Type, 0, \"\"},\n\t\t{\"Prog.Inst\", Field, 0, \"\"},\n\t\t{\"Prog.NumCap\", Field, 0, \"\"},\n\t\t{\"Prog.Start\", Field, 0, \"\"},\n\t\t{\"Regexp\", Type, 0, \"\"},\n\t\t{\"Regexp.Cap\", Field, 0, \"\"},\n\t\t{\"Regexp.Flags\", Field, 0, \"\"},\n\t\t{\"Regexp.Max\", Field, 0, \"\"},\n\t\t{\"Regexp.Min\", Field, 0, \"\"},\n\t\t{\"Regexp.Name\", Field, 0, \"\"},\n\t\t{\"Regexp.Op\", Field, 0, \"\"},\n\t\t{\"Regexp.Rune\", Field, 0, \"\"},\n\t\t{\"Regexp.Rune0\", Field, 0, \"\"},\n\t\t{\"Regexp.Sub\", Field, 0, \"\"},\n\t\t{\"Regexp.Sub0\", Field, 0, \"\"},\n\t\t{\"Simple\", Const, 0, \"\"},\n\t\t{\"UnicodeGroups\", Const, 0, \"\"},\n\t\t{\"WasDollar\", Const, 0, \"\"},\n\t},\n\t\"runtime\": {\n\t\t{\"(*BlockProfileRecord).Stack\", Method, 1, \"\"},\n\t\t{\"(*Frames).Next\", Method, 7, \"\"},\n\t\t{\"(*Func).Entry\", Method, 0, \"\"},\n\t\t{\"(*Func).FileLine\", Method, 0, \"\"},\n\t\t{\"(*Func).Name\", Method, 0, \"\"},\n\t\t{\"(*MemProfileRecord).InUseBytes\", Method, 0, \"\"},\n\t\t{\"(*MemProfileRecord).InUseObjects\", Method, 0, \"\"},\n\t\t{\"(*MemProfileRecord).Stack\", Method, 0, \"\"},\n\t\t{\"(*PanicNilError).Error\", Method, 21, \"\"},\n\t\t{\"(*PanicNilError).RuntimeError\", Method, 21, \"\"},\n\t\t{\"(*Pinner).Pin\", Method, 21, \"\"},\n\t\t{\"(*Pinner).Unpin\", Method, 21, \"\"},\n\t\t{\"(*StackRecord).Stack\", Method, 0, \"\"},\n\t\t{\"(*TypeAssertionError).Error\", Method, 0, \"\"},\n\t\t{\"(*TypeAssertionError).RuntimeError\", Method, 0, \"\"},\n\t\t{\"(Cleanup).Stop\", Method, 24, \"\"},\n\t\t{\"(Error).Error\", Method, 0, \"\"},\n\t\t{\"(Error).RuntimeError\", Method, 0, \"\"},\n\t\t{\"AddCleanup\", Func, 24, \"func[T, S any](ptr *T, cleanup func(S), arg S) Cleanup\"},\n\t\t{\"BlockProfile\", Func, 1, \"func(p []BlockProfileRecord) (n int, ok bool)\"},\n\t\t{\"BlockProfileRecord\", Type, 1, \"\"},\n\t\t{\"BlockProfileRecord.Count\", Field, 1, \"\"},\n\t\t{\"BlockProfileRecord.Cycles\", Field, 1, \"\"},\n\t\t{\"BlockProfileRecord.StackRecord\", Field, 1, \"\"},\n\t\t{\"Breakpoint\", Func, 0, \"func()\"},\n\t\t{\"CPUProfile\", Func, 0, \"func() []byte\"},\n\t\t{\"Caller\", Func, 0, \"func(skip int) (pc uintptr, file string, line int, ok bool)\"},\n\t\t{\"Callers\", Func, 0, \"func(skip int, pc []uintptr) int\"},\n\t\t{\"CallersFrames\", Func, 7, \"func(callers []uintptr) *Frames\"},\n\t\t{\"Cleanup\", Type, 24, \"\"},\n\t\t{\"Compiler\", Const, 0, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Frame\", Type, 7, \"\"},\n\t\t{\"Frame.Entry\", Field, 7, \"\"},\n\t\t{\"Frame.File\", Field, 7, \"\"},\n\t\t{\"Frame.Func\", Field, 7, \"\"},\n\t\t{\"Frame.Function\", Field, 7, \"\"},\n\t\t{\"Frame.Line\", Field, 7, \"\"},\n\t\t{\"Frame.PC\", Field, 7, \"\"},\n\t\t{\"Frames\", Type, 7, \"\"},\n\t\t{\"Func\", Type, 0, \"\"},\n\t\t{\"FuncForPC\", Func, 0, \"func(pc uintptr) *Func\"},\n\t\t{\"GC\", Func, 0, \"func()\"},\n\t\t{\"GOARCH\", Const, 0, \"\"},\n\t\t{\"GOMAXPROCS\", Func, 0, \"func(n int) int\"},\n\t\t{\"GOOS\", Const, 0, \"\"},\n\t\t{\"GOROOT\", Func, 0, \"func() string\"},\n\t\t{\"Goexit\", Func, 0, \"func()\"},\n\t\t{\"GoroutineProfile\", Func, 0, \"func(p []StackRecord) (n int, ok bool)\"},\n\t\t{\"Gosched\", Func, 0, \"func()\"},\n\t\t{\"KeepAlive\", Func, 7, \"func(x any)\"},\n\t\t{\"LockOSThread\", Func, 0, \"func()\"},\n\t\t{\"MemProfile\", Func, 0, \"func(p []MemProfileRecord, inuseZero bool) (n int, ok bool)\"},\n\t\t{\"MemProfileRate\", Var, 0, \"\"},\n\t\t{\"MemProfileRecord\", Type, 0, \"\"},\n\t\t{\"MemProfileRecord.AllocBytes\", Field, 0, \"\"},\n\t\t{\"MemProfileRecord.AllocObjects\", Field, 0, \"\"},\n\t\t{\"MemProfileRecord.FreeBytes\", Field, 0, \"\"},\n\t\t{\"MemProfileRecord.FreeObjects\", Field, 0, \"\"},\n\t\t{\"MemProfileRecord.Stack0\", Field, 0, \"\"},\n\t\t{\"MemStats\", Type, 0, \"\"},\n\t\t{\"MemStats.Alloc\", Field, 0, \"\"},\n\t\t{\"MemStats.BuckHashSys\", Field, 0, \"\"},\n\t\t{\"MemStats.BySize\", Field, 0, \"\"},\n\t\t{\"MemStats.DebugGC\", Field, 0, \"\"},\n\t\t{\"MemStats.EnableGC\", Field, 0, \"\"},\n\t\t{\"MemStats.Frees\", Field, 0, \"\"},\n\t\t{\"MemStats.GCCPUFraction\", Field, 5, \"\"},\n\t\t{\"MemStats.GCSys\", Field, 2, \"\"},\n\t\t{\"MemStats.HeapAlloc\", Field, 0, \"\"},\n\t\t{\"MemStats.HeapIdle\", Field, 0, \"\"},\n\t\t{\"MemStats.HeapInuse\", Field, 0, \"\"},\n\t\t{\"MemStats.HeapObjects\", Field, 0, \"\"},\n\t\t{\"MemStats.HeapReleased\", Field, 0, \"\"},\n\t\t{\"MemStats.HeapSys\", Field, 0, \"\"},\n\t\t{\"MemStats.LastGC\", Field, 0, \"\"},\n\t\t{\"MemStats.Lookups\", Field, 0, \"\"},\n\t\t{\"MemStats.MCacheInuse\", Field, 0, \"\"},\n\t\t{\"MemStats.MCacheSys\", Field, 0, \"\"},\n\t\t{\"MemStats.MSpanInuse\", Field, 0, \"\"},\n\t\t{\"MemStats.MSpanSys\", Field, 0, \"\"},\n\t\t{\"MemStats.Mallocs\", Field, 0, \"\"},\n\t\t{\"MemStats.NextGC\", Field, 0, \"\"},\n\t\t{\"MemStats.NumForcedGC\", Field, 8, \"\"},\n\t\t{\"MemStats.NumGC\", Field, 0, \"\"},\n\t\t{\"MemStats.OtherSys\", Field, 2, \"\"},\n\t\t{\"MemStats.PauseEnd\", Field, 4, \"\"},\n\t\t{\"MemStats.PauseNs\", Field, 0, \"\"},\n\t\t{\"MemStats.PauseTotalNs\", Field, 0, \"\"},\n\t\t{\"MemStats.StackInuse\", Field, 0, \"\"},\n\t\t{\"MemStats.StackSys\", Field, 0, \"\"},\n\t\t{\"MemStats.Sys\", Field, 0, \"\"},\n\t\t{\"MemStats.TotalAlloc\", Field, 0, \"\"},\n\t\t{\"MutexProfile\", Func, 8, \"func(p []BlockProfileRecord) (n int, ok bool)\"},\n\t\t{\"NumCPU\", Func, 0, \"func() int\"},\n\t\t{\"NumCgoCall\", Func, 0, \"func() int64\"},\n\t\t{\"NumGoroutine\", Func, 0, \"func() int\"},\n\t\t{\"PanicNilError\", Type, 21, \"\"},\n\t\t{\"Pinner\", Type, 21, \"\"},\n\t\t{\"ReadMemStats\", Func, 0, \"func(m *MemStats)\"},\n\t\t{\"ReadTrace\", Func, 5, \"func() (buf []byte)\"},\n\t\t{\"SetBlockProfileRate\", Func, 1, \"func(rate int)\"},\n\t\t{\"SetCPUProfileRate\", Func, 0, \"func(hz int)\"},\n\t\t{\"SetCgoTraceback\", Func, 7, \"func(version int, traceback unsafe.Pointer, context unsafe.Pointer, symbolizer unsafe.Pointer)\"},\n\t\t{\"SetDefaultGOMAXPROCS\", Func, 25, \"func()\"},\n\t\t{\"SetFinalizer\", Func, 0, \"func(obj any, finalizer any)\"},\n\t\t{\"SetMutexProfileFraction\", Func, 8, \"func(rate int) int\"},\n\t\t{\"Stack\", Func, 0, \"func(buf []byte, all bool) int\"},\n\t\t{\"StackRecord\", Type, 0, \"\"},\n\t\t{\"StackRecord.Stack0\", Field, 0, \"\"},\n\t\t{\"StartTrace\", Func, 5, \"func() error\"},\n\t\t{\"StopTrace\", Func, 5, \"func()\"},\n\t\t{\"ThreadCreateProfile\", Func, 0, \"func(p []StackRecord) (n int, ok bool)\"},\n\t\t{\"TypeAssertionError\", Type, 0, \"\"},\n\t\t{\"UnlockOSThread\", Func, 0, \"func()\"},\n\t\t{\"Version\", Func, 0, \"func() string\"},\n\t},\n\t\"runtime/cgo\": {\n\t\t{\"(Handle).Delete\", Method, 17, \"\"},\n\t\t{\"(Handle).Value\", Method, 17, \"\"},\n\t\t{\"Handle\", Type, 17, \"\"},\n\t\t{\"Incomplete\", Type, 20, \"\"},\n\t\t{\"NewHandle\", Func, 17, \"\"},\n\t},\n\t\"runtime/coverage\": {\n\t\t{\"ClearCounters\", Func, 20, \"func() error\"},\n\t\t{\"WriteCounters\", Func, 20, \"func(w io.Writer) error\"},\n\t\t{\"WriteCountersDir\", Func, 20, \"func(dir string) error\"},\n\t\t{\"WriteMeta\", Func, 20, \"func(w io.Writer) error\"},\n\t\t{\"WriteMetaDir\", Func, 20, \"func(dir string) error\"},\n\t},\n\t\"runtime/debug\": {\n\t\t{\"(*BuildInfo).String\", Method, 18, \"\"},\n\t\t{\"BuildInfo\", Type, 12, \"\"},\n\t\t{\"BuildInfo.Deps\", Field, 12, \"\"},\n\t\t{\"BuildInfo.GoVersion\", Field, 18, \"\"},\n\t\t{\"BuildInfo.Main\", Field, 12, \"\"},\n\t\t{\"BuildInfo.Path\", Field, 12, \"\"},\n\t\t{\"BuildInfo.Settings\", Field, 18, \"\"},\n\t\t{\"BuildSetting\", Type, 18, \"\"},\n\t\t{\"BuildSetting.Key\", Field, 18, \"\"},\n\t\t{\"BuildSetting.Value\", Field, 18, \"\"},\n\t\t{\"CrashOptions\", Type, 23, \"\"},\n\t\t{\"FreeOSMemory\", Func, 1, \"func()\"},\n\t\t{\"GCStats\", Type, 1, \"\"},\n\t\t{\"GCStats.LastGC\", Field, 1, \"\"},\n\t\t{\"GCStats.NumGC\", Field, 1, \"\"},\n\t\t{\"GCStats.Pause\", Field, 1, \"\"},\n\t\t{\"GCStats.PauseEnd\", Field, 4, \"\"},\n\t\t{\"GCStats.PauseQuantiles\", Field, 1, \"\"},\n\t\t{\"GCStats.PauseTotal\", Field, 1, \"\"},\n\t\t{\"Module\", Type, 12, \"\"},\n\t\t{\"Module.Path\", Field, 12, \"\"},\n\t\t{\"Module.Replace\", Field, 12, \"\"},\n\t\t{\"Module.Sum\", Field, 12, \"\"},\n\t\t{\"Module.Version\", Field, 12, \"\"},\n\t\t{\"ParseBuildInfo\", Func, 18, \"func(data string) (bi *BuildInfo, err error)\"},\n\t\t{\"PrintStack\", Func, 0, \"func()\"},\n\t\t{\"ReadBuildInfo\", Func, 12, \"func() (info *BuildInfo, ok bool)\"},\n\t\t{\"ReadGCStats\", Func, 1, \"func(stats *GCStats)\"},\n\t\t{\"SetCrashOutput\", Func, 23, \"func(f *os.File, opts CrashOptions) error\"},\n\t\t{\"SetGCPercent\", Func, 1, \"func(percent int) int\"},\n\t\t{\"SetMaxStack\", Func, 2, \"func(bytes int) int\"},\n\t\t{\"SetMaxThreads\", Func, 2, \"func(threads int) int\"},\n\t\t{\"SetMemoryLimit\", Func, 19, \"func(limit int64) int64\"},\n\t\t{\"SetPanicOnFault\", Func, 3, \"func(enabled bool) bool\"},\n\t\t{\"SetTraceback\", Func, 6, \"func(level string)\"},\n\t\t{\"Stack\", Func, 0, \"func() []byte\"},\n\t\t{\"WriteHeapDump\", Func, 3, \"func(fd uintptr)\"},\n\t},\n\t\"runtime/metrics\": {\n\t\t{\"(Value).Float64\", Method, 16, \"\"},\n\t\t{\"(Value).Float64Histogram\", Method, 16, \"\"},\n\t\t{\"(Value).Kind\", Method, 16, \"\"},\n\t\t{\"(Value).Uint64\", Method, 16, \"\"},\n\t\t{\"All\", Func, 16, \"func() []Description\"},\n\t\t{\"Description\", Type, 16, \"\"},\n\t\t{\"Description.Cumulative\", Field, 16, \"\"},\n\t\t{\"Description.Description\", Field, 16, \"\"},\n\t\t{\"Description.Kind\", Field, 16, \"\"},\n\t\t{\"Description.Name\", Field, 16, \"\"},\n\t\t{\"Float64Histogram\", Type, 16, \"\"},\n\t\t{\"Float64Histogram.Buckets\", Field, 16, \"\"},\n\t\t{\"Float64Histogram.Counts\", Field, 16, \"\"},\n\t\t{\"KindBad\", Const, 16, \"\"},\n\t\t{\"KindFloat64\", Const, 16, \"\"},\n\t\t{\"KindFloat64Histogram\", Const, 16, \"\"},\n\t\t{\"KindUint64\", Const, 16, \"\"},\n\t\t{\"Read\", Func, 16, \"func(m []Sample)\"},\n\t\t{\"Sample\", Type, 16, \"\"},\n\t\t{\"Sample.Name\", Field, 16, \"\"},\n\t\t{\"Sample.Value\", Field, 16, \"\"},\n\t\t{\"Value\", Type, 16, \"\"},\n\t\t{\"ValueKind\", Type, 16, \"\"},\n\t},\n\t\"runtime/pprof\": {\n\t\t{\"(*Profile).Add\", Method, 0, \"\"},\n\t\t{\"(*Profile).Count\", Method, 0, \"\"},\n\t\t{\"(*Profile).Name\", Method, 0, \"\"},\n\t\t{\"(*Profile).Remove\", Method, 0, \"\"},\n\t\t{\"(*Profile).WriteTo\", Method, 0, \"\"},\n\t\t{\"Do\", Func, 9, \"func(ctx context.Context, labels LabelSet, f func(context.Context))\"},\n\t\t{\"ForLabels\", Func, 9, \"func(ctx context.Context, f func(key string, value string) bool)\"},\n\t\t{\"Label\", Func, 9, \"func(ctx context.Context, key string) (string, bool)\"},\n\t\t{\"LabelSet\", Type, 9, \"\"},\n\t\t{\"Labels\", Func, 9, \"func(args ...string) LabelSet\"},\n\t\t{\"Lookup\", Func, 0, \"func(name string) *Profile\"},\n\t\t{\"NewProfile\", Func, 0, \"func(name string) *Profile\"},\n\t\t{\"Profile\", Type, 0, \"\"},\n\t\t{\"Profiles\", Func, 0, \"func() []*Profile\"},\n\t\t{\"SetGoroutineLabels\", Func, 9, \"func(ctx context.Context)\"},\n\t\t{\"StartCPUProfile\", Func, 0, \"func(w io.Writer) error\"},\n\t\t{\"StopCPUProfile\", Func, 0, \"func()\"},\n\t\t{\"WithLabels\", Func, 9, \"func(ctx context.Context, labels LabelSet) context.Context\"},\n\t\t{\"WriteHeapProfile\", Func, 0, \"func(w io.Writer) error\"},\n\t},\n\t\"runtime/trace\": {\n\t\t{\"(*FlightRecorder).Enabled\", Method, 25, \"\"},\n\t\t{\"(*FlightRecorder).Start\", Method, 25, \"\"},\n\t\t{\"(*FlightRecorder).Stop\", Method, 25, \"\"},\n\t\t{\"(*FlightRecorder).WriteTo\", Method, 25, \"\"},\n\t\t{\"(*Region).End\", Method, 11, \"\"},\n\t\t{\"(*Task).End\", Method, 11, \"\"},\n\t\t{\"FlightRecorder\", Type, 25, \"\"},\n\t\t{\"FlightRecorderConfig\", Type, 25, \"\"},\n\t\t{\"FlightRecorderConfig.MaxBytes\", Field, 25, \"\"},\n\t\t{\"FlightRecorderConfig.MinAge\", Field, 25, \"\"},\n\t\t{\"IsEnabled\", Func, 11, \"func() bool\"},\n\t\t{\"Log\", Func, 11, \"func(ctx context.Context, category string, message string)\"},\n\t\t{\"Logf\", Func, 11, \"func(ctx context.Context, category string, format string, args ...any)\"},\n\t\t{\"NewFlightRecorder\", Func, 25, \"func(cfg FlightRecorderConfig) *FlightRecorder\"},\n\t\t{\"NewTask\", Func, 11, \"func(pctx context.Context, taskType string) (ctx context.Context, task *Task)\"},\n\t\t{\"Region\", Type, 11, \"\"},\n\t\t{\"Start\", Func, 5, \"func(w io.Writer) error\"},\n\t\t{\"StartRegion\", Func, 11, \"func(ctx context.Context, regionType string) *Region\"},\n\t\t{\"Stop\", Func, 5, \"func()\"},\n\t\t{\"Task\", Type, 11, \"\"},\n\t\t{\"WithRegion\", Func, 11, \"func(ctx context.Context, regionType string, fn func())\"},\n\t},\n\t\"slices\": {\n\t\t{\"All\", Func, 23, \"func[Slice ~[]E, E any](s Slice) iter.Seq2[int, E]\"},\n\t\t{\"AppendSeq\", Func, 23, \"func[Slice ~[]E, E any](s Slice, seq iter.Seq[E]) Slice\"},\n\t\t{\"Backward\", Func, 23, \"func[Slice ~[]E, E any](s Slice) iter.Seq2[int, E]\"},\n\t\t{\"BinarySearch\", Func, 21, \"func[S ~[]E, E cmp.Ordered](x S, target E) (int, bool)\"},\n\t\t{\"BinarySearchFunc\", Func, 21, \"func[S ~[]E, E, T any](x S, target T, cmp func(E, T) int) (int, bool)\"},\n\t\t{\"Chunk\", Func, 23, \"func[Slice ~[]E, E any](s Slice, n int) iter.Seq[Slice]\"},\n\t\t{\"Clip\", Func, 21, \"func[S ~[]E, E any](s S) S\"},\n\t\t{\"Clone\", Func, 21, \"func[S ~[]E, E any](s S) S\"},\n\t\t{\"Collect\", Func, 23, \"func[E any](seq iter.Seq[E]) []E\"},\n\t\t{\"Compact\", Func, 21, \"func[S ~[]E, E comparable](s S) S\"},\n\t\t{\"CompactFunc\", Func, 21, \"func[S ~[]E, E any](s S, eq func(E, E) bool) S\"},\n\t\t{\"Compare\", Func, 21, \"func[S ~[]E, E cmp.Ordered](s1 S, s2 S) int\"},\n\t\t{\"CompareFunc\", Func, 21, \"func[S1 ~[]E1, S2 ~[]E2, E1, E2 any](s1 S1, s2 S2, cmp func(E1, E2) int) int\"},\n\t\t{\"Concat\", Func, 22, \"func[S ~[]E, E any](slices ...S) S\"},\n\t\t{\"Contains\", Func, 21, \"func[S ~[]E, E comparable](s S, v E) bool\"},\n\t\t{\"ContainsFunc\", Func, 21, \"func[S ~[]E, E any](s S, f func(E) bool) bool\"},\n\t\t{\"Delete\", Func, 21, \"func[S ~[]E, E any](s S, i int, j int) S\"},\n\t\t{\"DeleteFunc\", Func, 21, \"func[S ~[]E, E any](s S, del func(E) bool) S\"},\n\t\t{\"Equal\", Func, 21, \"func[S ~[]E, E comparable](s1 S, s2 S) bool\"},\n\t\t{\"EqualFunc\", Func, 21, \"func[S1 ~[]E1, S2 ~[]E2, E1, E2 any](s1 S1, s2 S2, eq func(E1, E2) bool) bool\"},\n\t\t{\"Grow\", Func, 21, \"func[S ~[]E, E any](s S, n int) S\"},\n\t\t{\"Index\", Func, 21, \"func[S ~[]E, E comparable](s S, v E) int\"},\n\t\t{\"IndexFunc\", Func, 21, \"func[S ~[]E, E any](s S, f func(E) bool) int\"},\n\t\t{\"Insert\", Func, 21, \"func[S ~[]E, E any](s S, i int, v ...E) S\"},\n\t\t{\"IsSorted\", Func, 21, \"func[S ~[]E, E cmp.Ordered](x S) bool\"},\n\t\t{\"IsSortedFunc\", Func, 21, \"func[S ~[]E, E any](x S, cmp func(a E, b E) int) bool\"},\n\t\t{\"Max\", Func, 21, \"func[S ~[]E, E cmp.Ordered](x S) E\"},\n\t\t{\"MaxFunc\", Func, 21, \"func[S ~[]E, E any](x S, cmp func(a E, b E) int) E\"},\n\t\t{\"Min\", Func, 21, \"func[S ~[]E, E cmp.Ordered](x S) E\"},\n\t\t{\"MinFunc\", Func, 21, \"func[S ~[]E, E any](x S, cmp func(a E, b E) int) E\"},\n\t\t{\"Repeat\", Func, 23, \"func[S ~[]E, E any](x S, count int) S\"},\n\t\t{\"Replace\", Func, 21, \"func[S ~[]E, E any](s S, i int, j int, v ...E) S\"},\n\t\t{\"Reverse\", Func, 21, \"func[S ~[]E, E any](s S)\"},\n\t\t{\"Sort\", Func, 21, \"func[S ~[]E, E cmp.Ordered](x S)\"},\n\t\t{\"SortFunc\", Func, 21, \"func[S ~[]E, E any](x S, cmp func(a E, b E) int)\"},\n\t\t{\"SortStableFunc\", Func, 21, \"func[S ~[]E, E any](x S, cmp func(a E, b E) int)\"},\n\t\t{\"Sorted\", Func, 23, \"func[E cmp.Ordered](seq iter.Seq[E]) []E\"},\n\t\t{\"SortedFunc\", Func, 23, \"func[E any](seq iter.Seq[E], cmp func(E, E) int) []E\"},\n\t\t{\"SortedStableFunc\", Func, 23, \"func[E any](seq iter.Seq[E], cmp func(E, E) int) []E\"},\n\t\t{\"Values\", Func, 23, \"func[Slice ~[]E, E any](s Slice) iter.Seq[E]\"},\n\t},\n\t\"sort\": {\n\t\t{\"(Float64Slice).Len\", Method, 0, \"\"},\n\t\t{\"(Float64Slice).Less\", Method, 0, \"\"},\n\t\t{\"(Float64Slice).Search\", Method, 0, \"\"},\n\t\t{\"(Float64Slice).Sort\", Method, 0, \"\"},\n\t\t{\"(Float64Slice).Swap\", Method, 0, \"\"},\n\t\t{\"(IntSlice).Len\", Method, 0, \"\"},\n\t\t{\"(IntSlice).Less\", Method, 0, \"\"},\n\t\t{\"(IntSlice).Search\", Method, 0, \"\"},\n\t\t{\"(IntSlice).Sort\", Method, 0, \"\"},\n\t\t{\"(IntSlice).Swap\", Method, 0, \"\"},\n\t\t{\"(Interface).Len\", Method, 0, \"\"},\n\t\t{\"(Interface).Less\", Method, 0, \"\"},\n\t\t{\"(Interface).Swap\", Method, 0, \"\"},\n\t\t{\"(StringSlice).Len\", Method, 0, \"\"},\n\t\t{\"(StringSlice).Less\", Method, 0, \"\"},\n\t\t{\"(StringSlice).Search\", Method, 0, \"\"},\n\t\t{\"(StringSlice).Sort\", Method, 0, \"\"},\n\t\t{\"(StringSlice).Swap\", Method, 0, \"\"},\n\t\t{\"Find\", Func, 19, \"func(n int, cmp func(int) int) (i int, found bool)\"},\n\t\t{\"Float64Slice\", Type, 0, \"\"},\n\t\t{\"Float64s\", Func, 0, \"func(x []float64)\"},\n\t\t{\"Float64sAreSorted\", Func, 0, \"func(x []float64) bool\"},\n\t\t{\"IntSlice\", Type, 0, \"\"},\n\t\t{\"Interface\", Type, 0, \"\"},\n\t\t{\"Ints\", Func, 0, \"func(x []int)\"},\n\t\t{\"IntsAreSorted\", Func, 0, \"func(x []int) bool\"},\n\t\t{\"IsSorted\", Func, 0, \"func(data Interface) bool\"},\n\t\t{\"Reverse\", Func, 1, \"func(data Interface) Interface\"},\n\t\t{\"Search\", Func, 0, \"func(n int, f func(int) bool) int\"},\n\t\t{\"SearchFloat64s\", Func, 0, \"func(a []float64, x float64) int\"},\n\t\t{\"SearchInts\", Func, 0, \"func(a []int, x int) int\"},\n\t\t{\"SearchStrings\", Func, 0, \"func(a []string, x string) int\"},\n\t\t{\"Slice\", Func, 8, \"func(x any, less func(i int, j int) bool)\"},\n\t\t{\"SliceIsSorted\", Func, 8, \"func(x any, less func(i int, j int) bool) bool\"},\n\t\t{\"SliceStable\", Func, 8, \"func(x any, less func(i int, j int) bool)\"},\n\t\t{\"Sort\", Func, 0, \"func(data Interface)\"},\n\t\t{\"Stable\", Func, 2, \"func(data Interface)\"},\n\t\t{\"StringSlice\", Type, 0, \"\"},\n\t\t{\"Strings\", Func, 0, \"func(x []string)\"},\n\t\t{\"StringsAreSorted\", Func, 0, \"func(x []string) bool\"},\n\t},\n\t\"strconv\": {\n\t\t{\"(*NumError).Error\", Method, 0, \"\"},\n\t\t{\"(*NumError).Unwrap\", Method, 14, \"\"},\n\t\t{\"AppendBool\", Func, 0, \"func(dst []byte, b bool) []byte\"},\n\t\t{\"AppendFloat\", Func, 0, \"func(dst []byte, f float64, fmt byte, prec int, bitSize int) []byte\"},\n\t\t{\"AppendInt\", Func, 0, \"func(dst []byte, i int64, base int) []byte\"},\n\t\t{\"AppendQuote\", Func, 0, \"func(dst []byte, s string) []byte\"},\n\t\t{\"AppendQuoteRune\", Func, 0, \"func(dst []byte, r rune) []byte\"},\n\t\t{\"AppendQuoteRuneToASCII\", Func, 0, \"func(dst []byte, r rune) []byte\"},\n\t\t{\"AppendQuoteRuneToGraphic\", Func, 6, \"func(dst []byte, r rune) []byte\"},\n\t\t{\"AppendQuoteToASCII\", Func, 0, \"func(dst []byte, s string) []byte\"},\n\t\t{\"AppendQuoteToGraphic\", Func, 6, \"func(dst []byte, s string) []byte\"},\n\t\t{\"AppendUint\", Func, 0, \"func(dst []byte, i uint64, base int) []byte\"},\n\t\t{\"Atoi\", Func, 0, \"func(s string) (int, error)\"},\n\t\t{\"CanBackquote\", Func, 0, \"func(s string) bool\"},\n\t\t{\"ErrRange\", Var, 0, \"\"},\n\t\t{\"ErrSyntax\", Var, 0, \"\"},\n\t\t{\"FormatBool\", Func, 0, \"func(b bool) string\"},\n\t\t{\"FormatComplex\", Func, 15, \"func(c complex128, fmt byte, prec int, bitSize int) string\"},\n\t\t{\"FormatFloat\", Func, 0, \"func(f float64, fmt byte, prec int, bitSize int) string\"},\n\t\t{\"FormatInt\", Func, 0, \"func(i int64, base int) string\"},\n\t\t{\"FormatUint\", Func, 0, \"func(i uint64, base int) string\"},\n\t\t{\"IntSize\", Const, 0, \"\"},\n\t\t{\"IsGraphic\", Func, 6, \"func(r rune) bool\"},\n\t\t{\"IsPrint\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"Itoa\", Func, 0, \"func(i int) string\"},\n\t\t{\"NumError\", Type, 0, \"\"},\n\t\t{\"NumError.Err\", Field, 0, \"\"},\n\t\t{\"NumError.Func\", Field, 0, \"\"},\n\t\t{\"NumError.Num\", Field, 0, \"\"},\n\t\t{\"ParseBool\", Func, 0, \"func(str string) (bool, error)\"},\n\t\t{\"ParseComplex\", Func, 15, \"func(s string, bitSize int) (complex128, error)\"},\n\t\t{\"ParseFloat\", Func, 0, \"func(s string, bitSize int) (float64, error)\"},\n\t\t{\"ParseInt\", Func, 0, \"func(s string, base int, bitSize int) (i int64, err error)\"},\n\t\t{\"ParseUint\", Func, 0, \"func(s string, base int, bitSize int) (uint64, error)\"},\n\t\t{\"Quote\", Func, 0, \"func(s string) string\"},\n\t\t{\"QuoteRune\", Func, 0, \"func(r rune) string\"},\n\t\t{\"QuoteRuneToASCII\", Func, 0, \"func(r rune) string\"},\n\t\t{\"QuoteRuneToGraphic\", Func, 6, \"func(r rune) string\"},\n\t\t{\"QuoteToASCII\", Func, 0, \"func(s string) string\"},\n\t\t{\"QuoteToGraphic\", Func, 6, \"func(s string) string\"},\n\t\t{\"QuotedPrefix\", Func, 17, \"func(s string) (string, error)\"},\n\t\t{\"Unquote\", Func, 0, \"func(s string) (string, error)\"},\n\t\t{\"UnquoteChar\", Func, 0, \"func(s string, quote byte) (value rune, multibyte bool, tail string, err error)\"},\n\t},\n\t\"strings\": {\n\t\t{\"(*Builder).Cap\", Method, 12, \"\"},\n\t\t{\"(*Builder).Grow\", Method, 10, \"\"},\n\t\t{\"(*Builder).Len\", Method, 10, \"\"},\n\t\t{\"(*Builder).Reset\", Method, 10, \"\"},\n\t\t{\"(*Builder).String\", Method, 10, \"\"},\n\t\t{\"(*Builder).Write\", Method, 10, \"\"},\n\t\t{\"(*Builder).WriteByte\", Method, 10, \"\"},\n\t\t{\"(*Builder).WriteRune\", Method, 10, \"\"},\n\t\t{\"(*Builder).WriteString\", Method, 10, \"\"},\n\t\t{\"(*Reader).Len\", Method, 0, \"\"},\n\t\t{\"(*Reader).Read\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadAt\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadByte\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadRune\", Method, 0, \"\"},\n\t\t{\"(*Reader).Reset\", Method, 7, \"\"},\n\t\t{\"(*Reader).Seek\", Method, 0, \"\"},\n\t\t{\"(*Reader).Size\", Method, 5, \"\"},\n\t\t{\"(*Reader).UnreadByte\", Method, 0, \"\"},\n\t\t{\"(*Reader).UnreadRune\", Method, 0, \"\"},\n\t\t{\"(*Reader).WriteTo\", Method, 1, \"\"},\n\t\t{\"(*Replacer).Replace\", Method, 0, \"\"},\n\t\t{\"(*Replacer).WriteString\", Method, 0, \"\"},\n\t\t{\"Builder\", Type, 10, \"\"},\n\t\t{\"Clone\", Func, 18, \"func(s string) string\"},\n\t\t{\"Compare\", Func, 5, \"func(a string, b string) int\"},\n\t\t{\"Contains\", Func, 0, \"func(s string, substr string) bool\"},\n\t\t{\"ContainsAny\", Func, 0, \"func(s string, chars string) bool\"},\n\t\t{\"ContainsFunc\", Func, 21, \"func(s string, f func(rune) bool) bool\"},\n\t\t{\"ContainsRune\", Func, 0, \"func(s string, r rune) bool\"},\n\t\t{\"Count\", Func, 0, \"func(s string, substr string) int\"},\n\t\t{\"Cut\", Func, 18, \"func(s string, sep string) (before string, after string, found bool)\"},\n\t\t{\"CutPrefix\", Func, 20, \"func(s string, prefix string) (after string, found bool)\"},\n\t\t{\"CutSuffix\", Func, 20, \"func(s string, suffix string) (before string, found bool)\"},\n\t\t{\"EqualFold\", Func, 0, \"func(s string, t string) bool\"},\n\t\t{\"Fields\", Func, 0, \"func(s string) []string\"},\n\t\t{\"FieldsFunc\", Func, 0, \"func(s string, f func(rune) bool) []string\"},\n\t\t{\"FieldsFuncSeq\", Func, 24, \"func(s string, f func(rune) bool) iter.Seq[string]\"},\n\t\t{\"FieldsSeq\", Func, 24, \"func(s string) iter.Seq[string]\"},\n\t\t{\"HasPrefix\", Func, 0, \"func(s string, prefix string) bool\"},\n\t\t{\"HasSuffix\", Func, 0, \"func(s string, suffix string) bool\"},\n\t\t{\"Index\", Func, 0, \"func(s string, substr string) int\"},\n\t\t{\"IndexAny\", Func, 0, \"func(s string, chars string) int\"},\n\t\t{\"IndexByte\", Func, 2, \"func(s string, c byte) int\"},\n\t\t{\"IndexFunc\", Func, 0, \"func(s string, f func(rune) bool) int\"},\n\t\t{\"IndexRune\", Func, 0, \"func(s string, r rune) int\"},\n\t\t{\"Join\", Func, 0, \"func(elems []string, sep string) string\"},\n\t\t{\"LastIndex\", Func, 0, \"func(s string, substr string) int\"},\n\t\t{\"LastIndexAny\", Func, 0, \"func(s string, chars string) int\"},\n\t\t{\"LastIndexByte\", Func, 5, \"func(s string, c byte) int\"},\n\t\t{\"LastIndexFunc\", Func, 0, \"func(s string, f func(rune) bool) int\"},\n\t\t{\"Lines\", Func, 24, \"func(s string) iter.Seq[string]\"},\n\t\t{\"Map\", Func, 0, \"func(mapping func(rune) rune, s string) string\"},\n\t\t{\"NewReader\", Func, 0, \"func(s string) *Reader\"},\n\t\t{\"NewReplacer\", Func, 0, \"func(oldnew ...string) *Replacer\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Repeat\", Func, 0, \"func(s string, count int) string\"},\n\t\t{\"Replace\", Func, 0, \"func(s string, old string, new string, n int) string\"},\n\t\t{\"ReplaceAll\", Func, 12, \"func(s string, old string, new string) string\"},\n\t\t{\"Replacer\", Type, 0, \"\"},\n\t\t{\"Split\", Func, 0, \"func(s string, sep string) []string\"},\n\t\t{\"SplitAfter\", Func, 0, \"func(s string, sep string) []string\"},\n\t\t{\"SplitAfterN\", Func, 0, \"func(s string, sep string, n int) []string\"},\n\t\t{\"SplitAfterSeq\", Func, 24, \"func(s string, sep string) iter.Seq[string]\"},\n\t\t{\"SplitN\", Func, 0, \"func(s string, sep string, n int) []string\"},\n\t\t{\"SplitSeq\", Func, 24, \"func(s string, sep string) iter.Seq[string]\"},\n\t\t{\"Title\", Func, 0, \"func(s string) string\"},\n\t\t{\"ToLower\", Func, 0, \"func(s string) string\"},\n\t\t{\"ToLowerSpecial\", Func, 0, \"func(c unicode.SpecialCase, s string) string\"},\n\t\t{\"ToTitle\", Func, 0, \"func(s string) string\"},\n\t\t{\"ToTitleSpecial\", Func, 0, \"func(c unicode.SpecialCase, s string) string\"},\n\t\t{\"ToUpper\", Func, 0, \"func(s string) string\"},\n\t\t{\"ToUpperSpecial\", Func, 0, \"func(c unicode.SpecialCase, s string) string\"},\n\t\t{\"ToValidUTF8\", Func, 13, \"func(s string, replacement string) string\"},\n\t\t{\"Trim\", Func, 0, \"func(s string, cutset string) string\"},\n\t\t{\"TrimFunc\", Func, 0, \"func(s string, f func(rune) bool) string\"},\n\t\t{\"TrimLeft\", Func, 0, \"func(s string, cutset string) string\"},\n\t\t{\"TrimLeftFunc\", Func, 0, \"func(s string, f func(rune) bool) string\"},\n\t\t{\"TrimPrefix\", Func, 1, \"func(s string, prefix string) string\"},\n\t\t{\"TrimRight\", Func, 0, \"func(s string, cutset string) string\"},\n\t\t{\"TrimRightFunc\", Func, 0, \"func(s string, f func(rune) bool) string\"},\n\t\t{\"TrimSpace\", Func, 0, \"func(s string) string\"},\n\t\t{\"TrimSuffix\", Func, 1, \"func(s string, suffix string) string\"},\n\t},\n\t\"structs\": {\n\t\t{\"HostLayout\", Type, 23, \"\"},\n\t},\n\t\"sync\": {\n\t\t{\"(*Cond).Broadcast\", Method, 0, \"\"},\n\t\t{\"(*Cond).Signal\", Method, 0, \"\"},\n\t\t{\"(*Cond).Wait\", Method, 0, \"\"},\n\t\t{\"(*Map).Clear\", Method, 23, \"\"},\n\t\t{\"(*Map).CompareAndDelete\", Method, 20, \"\"},\n\t\t{\"(*Map).CompareAndSwap\", Method, 20, \"\"},\n\t\t{\"(*Map).Delete\", Method, 9, \"\"},\n\t\t{\"(*Map).Load\", Method, 9, \"\"},\n\t\t{\"(*Map).LoadAndDelete\", Method, 15, \"\"},\n\t\t{\"(*Map).LoadOrStore\", Method, 9, \"\"},\n\t\t{\"(*Map).Range\", Method, 9, \"\"},\n\t\t{\"(*Map).Store\", Method, 9, \"\"},\n\t\t{\"(*Map).Swap\", Method, 20, \"\"},\n\t\t{\"(*Mutex).Lock\", Method, 0, \"\"},\n\t\t{\"(*Mutex).TryLock\", Method, 18, \"\"},\n\t\t{\"(*Mutex).Unlock\", Method, 0, \"\"},\n\t\t{\"(*Once).Do\", Method, 0, \"\"},\n\t\t{\"(*Pool).Get\", Method, 3, \"\"},\n\t\t{\"(*Pool).Put\", Method, 3, \"\"},\n\t\t{\"(*RWMutex).Lock\", Method, 0, \"\"},\n\t\t{\"(*RWMutex).RLock\", Method, 0, \"\"},\n\t\t{\"(*RWMutex).RLocker\", Method, 0, \"\"},\n\t\t{\"(*RWMutex).RUnlock\", Method, 0, \"\"},\n\t\t{\"(*RWMutex).TryLock\", Method, 18, \"\"},\n\t\t{\"(*RWMutex).TryRLock\", Method, 18, \"\"},\n\t\t{\"(*RWMutex).Unlock\", Method, 0, \"\"},\n\t\t{\"(*WaitGroup).Add\", Method, 0, \"\"},\n\t\t{\"(*WaitGroup).Done\", Method, 0, \"\"},\n\t\t{\"(*WaitGroup).Go\", Method, 25, \"\"},\n\t\t{\"(*WaitGroup).Wait\", Method, 0, \"\"},\n\t\t{\"(Locker).Lock\", Method, 0, \"\"},\n\t\t{\"(Locker).Unlock\", Method, 0, \"\"},\n\t\t{\"Cond\", Type, 0, \"\"},\n\t\t{\"Cond.L\", Field, 0, \"\"},\n\t\t{\"Locker\", Type, 0, \"\"},\n\t\t{\"Map\", Type, 9, \"\"},\n\t\t{\"Mutex\", Type, 0, \"\"},\n\t\t{\"NewCond\", Func, 0, \"func(l Locker) *Cond\"},\n\t\t{\"Once\", Type, 0, \"\"},\n\t\t{\"OnceFunc\", Func, 21, \"func(f func()) func()\"},\n\t\t{\"OnceValue\", Func, 21, \"func[T any](f func() T) func() T\"},\n\t\t{\"OnceValues\", Func, 21, \"func[T1, T2 any](f func() (T1, T2)) func() (T1, T2)\"},\n\t\t{\"Pool\", Type, 3, \"\"},\n\t\t{\"Pool.New\", Field, 3, \"\"},\n\t\t{\"RWMutex\", Type, 0, \"\"},\n\t\t{\"WaitGroup\", Type, 0, \"\"},\n\t},\n\t\"sync/atomic\": {\n\t\t{\"(*Bool).CompareAndSwap\", Method, 19, \"\"},\n\t\t{\"(*Bool).Load\", Method, 19, \"\"},\n\t\t{\"(*Bool).Store\", Method, 19, \"\"},\n\t\t{\"(*Bool).Swap\", Method, 19, \"\"},\n\t\t{\"(*Int32).Add\", Method, 19, \"\"},\n\t\t{\"(*Int32).And\", Method, 23, \"\"},\n\t\t{\"(*Int32).CompareAndSwap\", Method, 19, \"\"},\n\t\t{\"(*Int32).Load\", Method, 19, \"\"},\n\t\t{\"(*Int32).Or\", Method, 23, \"\"},\n\t\t{\"(*Int32).Store\", Method, 19, \"\"},\n\t\t{\"(*Int32).Swap\", Method, 19, \"\"},\n\t\t{\"(*Int64).Add\", Method, 19, \"\"},\n\t\t{\"(*Int64).And\", Method, 23, \"\"},\n\t\t{\"(*Int64).CompareAndSwap\", Method, 19, \"\"},\n\t\t{\"(*Int64).Load\", Method, 19, \"\"},\n\t\t{\"(*Int64).Or\", Method, 23, \"\"},\n\t\t{\"(*Int64).Store\", Method, 19, \"\"},\n\t\t{\"(*Int64).Swap\", Method, 19, \"\"},\n\t\t{\"(*Pointer).CompareAndSwap\", Method, 19, \"\"},\n\t\t{\"(*Pointer).Load\", Method, 19, \"\"},\n\t\t{\"(*Pointer).Store\", Method, 19, \"\"},\n\t\t{\"(*Pointer).Swap\", Method, 19, \"\"},\n\t\t{\"(*Uint32).Add\", Method, 19, \"\"},\n\t\t{\"(*Uint32).And\", Method, 23, \"\"},\n\t\t{\"(*Uint32).CompareAndSwap\", Method, 19, \"\"},\n\t\t{\"(*Uint32).Load\", Method, 19, \"\"},\n\t\t{\"(*Uint32).Or\", Method, 23, \"\"},\n\t\t{\"(*Uint32).Store\", Method, 19, \"\"},\n\t\t{\"(*Uint32).Swap\", Method, 19, \"\"},\n\t\t{\"(*Uint64).Add\", Method, 19, \"\"},\n\t\t{\"(*Uint64).And\", Method, 23, \"\"},\n\t\t{\"(*Uint64).CompareAndSwap\", Method, 19, \"\"},\n\t\t{\"(*Uint64).Load\", Method, 19, \"\"},\n\t\t{\"(*Uint64).Or\", Method, 23, \"\"},\n\t\t{\"(*Uint64).Store\", Method, 19, \"\"},\n\t\t{\"(*Uint64).Swap\", Method, 19, \"\"},\n\t\t{\"(*Uintptr).Add\", Method, 19, \"\"},\n\t\t{\"(*Uintptr).And\", Method, 23, \"\"},\n\t\t{\"(*Uintptr).CompareAndSwap\", Method, 19, \"\"},\n\t\t{\"(*Uintptr).Load\", Method, 19, \"\"},\n\t\t{\"(*Uintptr).Or\", Method, 23, \"\"},\n\t\t{\"(*Uintptr).Store\", Method, 19, \"\"},\n\t\t{\"(*Uintptr).Swap\", Method, 19, \"\"},\n\t\t{\"(*Value).CompareAndSwap\", Method, 17, \"\"},\n\t\t{\"(*Value).Load\", Method, 4, \"\"},\n\t\t{\"(*Value).Store\", Method, 4, \"\"},\n\t\t{\"(*Value).Swap\", Method, 17, \"\"},\n\t\t{\"AddInt32\", Func, 0, \"func(addr *int32, delta int32) (new int32)\"},\n\t\t{\"AddInt64\", Func, 0, \"func(addr *int64, delta int64) (new int64)\"},\n\t\t{\"AddUint32\", Func, 0, \"func(addr *uint32, delta uint32) (new uint32)\"},\n\t\t{\"AddUint64\", Func, 0, \"func(addr *uint64, delta uint64) (new uint64)\"},\n\t\t{\"AddUintptr\", Func, 0, \"func(addr *uintptr, delta uintptr) (new uintptr)\"},\n\t\t{\"AndInt32\", Func, 23, \"func(addr *int32, mask int32) (old int32)\"},\n\t\t{\"AndInt64\", Func, 23, \"func(addr *int64, mask int64) (old int64)\"},\n\t\t{\"AndUint32\", Func, 23, \"func(addr *uint32, mask uint32) (old uint32)\"},\n\t\t{\"AndUint64\", Func, 23, \"func(addr *uint64, mask uint64) (old uint64)\"},\n\t\t{\"AndUintptr\", Func, 23, \"func(addr *uintptr, mask uintptr) (old uintptr)\"},\n\t\t{\"Bool\", Type, 19, \"\"},\n\t\t{\"CompareAndSwapInt32\", Func, 0, \"func(addr *int32, old int32, new int32) (swapped bool)\"},\n\t\t{\"CompareAndSwapInt64\", Func, 0, \"func(addr *int64, old int64, new int64) (swapped bool)\"},\n\t\t{\"CompareAndSwapPointer\", Func, 0, \"func(addr *unsafe.Pointer, old unsafe.Pointer, new unsafe.Pointer) (swapped bool)\"},\n\t\t{\"CompareAndSwapUint32\", Func, 0, \"func(addr *uint32, old uint32, new uint32) (swapped bool)\"},\n\t\t{\"CompareAndSwapUint64\", Func, 0, \"func(addr *uint64, old uint64, new uint64) (swapped bool)\"},\n\t\t{\"CompareAndSwapUintptr\", Func, 0, \"func(addr *uintptr, old uintptr, new uintptr) (swapped bool)\"},\n\t\t{\"Int32\", Type, 19, \"\"},\n\t\t{\"Int64\", Type, 19, \"\"},\n\t\t{\"LoadInt32\", Func, 0, \"func(addr *int32) (val int32)\"},\n\t\t{\"LoadInt64\", Func, 0, \"func(addr *int64) (val int64)\"},\n\t\t{\"LoadPointer\", Func, 0, \"func(addr *unsafe.Pointer) (val unsafe.Pointer)\"},\n\t\t{\"LoadUint32\", Func, 0, \"func(addr *uint32) (val uint32)\"},\n\t\t{\"LoadUint64\", Func, 0, \"func(addr *uint64) (val uint64)\"},\n\t\t{\"LoadUintptr\", Func, 0, \"func(addr *uintptr) (val uintptr)\"},\n\t\t{\"OrInt32\", Func, 23, \"func(addr *int32, mask int32) (old int32)\"},\n\t\t{\"OrInt64\", Func, 23, \"func(addr *int64, mask int64) (old int64)\"},\n\t\t{\"OrUint32\", Func, 23, \"func(addr *uint32, mask uint32) (old uint32)\"},\n\t\t{\"OrUint64\", Func, 23, \"func(addr *uint64, mask uint64) (old uint64)\"},\n\t\t{\"OrUintptr\", Func, 23, \"func(addr *uintptr, mask uintptr) (old uintptr)\"},\n\t\t{\"Pointer\", Type, 19, \"\"},\n\t\t{\"StoreInt32\", Func, 0, \"func(addr *int32, val int32)\"},\n\t\t{\"StoreInt64\", Func, 0, \"func(addr *int64, val int64)\"},\n\t\t{\"StorePointer\", Func, 0, \"func(addr *unsafe.Pointer, val unsafe.Pointer)\"},\n\t\t{\"StoreUint32\", Func, 0, \"func(addr *uint32, val uint32)\"},\n\t\t{\"StoreUint64\", Func, 0, \"func(addr *uint64, val uint64)\"},\n\t\t{\"StoreUintptr\", Func, 0, \"func(addr *uintptr, val uintptr)\"},\n\t\t{\"SwapInt32\", Func, 2, \"func(addr *int32, new int32) (old int32)\"},\n\t\t{\"SwapInt64\", Func, 2, \"func(addr *int64, new int64) (old int64)\"},\n\t\t{\"SwapPointer\", Func, 2, \"func(addr *unsafe.Pointer, new unsafe.Pointer) (old unsafe.Pointer)\"},\n\t\t{\"SwapUint32\", Func, 2, \"func(addr *uint32, new uint32) (old uint32)\"},\n\t\t{\"SwapUint64\", Func, 2, \"func(addr *uint64, new uint64) (old uint64)\"},\n\t\t{\"SwapUintptr\", Func, 2, \"func(addr *uintptr, new uintptr) (old uintptr)\"},\n\t\t{\"Uint32\", Type, 19, \"\"},\n\t\t{\"Uint64\", Type, 19, \"\"},\n\t\t{\"Uintptr\", Type, 19, \"\"},\n\t\t{\"Value\", Type, 4, \"\"},\n\t},\n\t\"syscall\": {\n\t\t{\"(*Cmsghdr).SetLen\", Method, 0, \"\"},\n\t\t{\"(*DLL).FindProc\", Method, 0, \"\"},\n\t\t{\"(*DLL).MustFindProc\", Method, 0, \"\"},\n\t\t{\"(*DLL).Release\", Method, 0, \"\"},\n\t\t{\"(*DLLError).Error\", Method, 0, \"\"},\n\t\t{\"(*DLLError).Unwrap\", Method, 16, \"\"},\n\t\t{\"(*Filetime).Nanoseconds\", Method, 0, \"\"},\n\t\t{\"(*Iovec).SetLen\", Method, 0, \"\"},\n\t\t{\"(*LazyDLL).Handle\", Method, 0, \"\"},\n\t\t{\"(*LazyDLL).Load\", Method, 0, \"\"},\n\t\t{\"(*LazyDLL).NewProc\", Method, 0, \"\"},\n\t\t{\"(*LazyProc).Addr\", Method, 0, \"\"},\n\t\t{\"(*LazyProc).Call\", Method, 0, \"\"},\n\t\t{\"(*LazyProc).Find\", Method, 0, \"\"},\n\t\t{\"(*Msghdr).SetControllen\", Method, 0, \"\"},\n\t\t{\"(*Proc).Addr\", Method, 0, \"\"},\n\t\t{\"(*Proc).Call\", Method, 0, \"\"},\n\t\t{\"(*PtraceRegs).PC\", Method, 0, \"\"},\n\t\t{\"(*PtraceRegs).SetPC\", Method, 0, \"\"},\n\t\t{\"(*RawSockaddrAny).Sockaddr\", Method, 0, \"\"},\n\t\t{\"(*SID).Copy\", Method, 0, \"\"},\n\t\t{\"(*SID).Len\", Method, 0, \"\"},\n\t\t{\"(*SID).LookupAccount\", Method, 0, \"\"},\n\t\t{\"(*SID).String\", Method, 0, \"\"},\n\t\t{\"(*Timespec).Nano\", Method, 0, \"\"},\n\t\t{\"(*Timespec).Unix\", Method, 0, \"\"},\n\t\t{\"(*Timeval).Nano\", Method, 0, \"\"},\n\t\t{\"(*Timeval).Nanoseconds\", Method, 0, \"\"},\n\t\t{\"(*Timeval).Unix\", Method, 0, \"\"},\n\t\t{\"(Conn).SyscallConn\", Method, 9, \"\"},\n\t\t{\"(Errno).Error\", Method, 0, \"\"},\n\t\t{\"(Errno).Is\", Method, 13, \"\"},\n\t\t{\"(Errno).Temporary\", Method, 0, \"\"},\n\t\t{\"(Errno).Timeout\", Method, 0, \"\"},\n\t\t{\"(RawConn).Control\", Method, 9, \"\"},\n\t\t{\"(RawConn).Read\", Method, 9, \"\"},\n\t\t{\"(RawConn).Write\", Method, 9, \"\"},\n\t\t{\"(Signal).Signal\", Method, 0, \"\"},\n\t\t{\"(Signal).String\", Method, 0, \"\"},\n\t\t{\"(Token).Close\", Method, 0, \"\"},\n\t\t{\"(Token).GetTokenPrimaryGroup\", Method, 0, \"\"},\n\t\t{\"(Token).GetTokenUser\", Method, 0, \"\"},\n\t\t{\"(Token).GetUserProfileDirectory\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).Continued\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).CoreDump\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).ExitStatus\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).Exited\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).Signal\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).Signaled\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).StopSignal\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).Stopped\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).TrapCause\", Method, 0, \"\"},\n\t\t{\"AF_ALG\", Const, 0, \"\"},\n\t\t{\"AF_APPLETALK\", Const, 0, \"\"},\n\t\t{\"AF_ARP\", Const, 0, \"\"},\n\t\t{\"AF_ASH\", Const, 0, \"\"},\n\t\t{\"AF_ATM\", Const, 0, \"\"},\n\t\t{\"AF_ATMPVC\", Const, 0, \"\"},\n\t\t{\"AF_ATMSVC\", Const, 0, \"\"},\n\t\t{\"AF_AX25\", Const, 0, \"\"},\n\t\t{\"AF_BLUETOOTH\", Const, 0, \"\"},\n\t\t{\"AF_BRIDGE\", Const, 0, \"\"},\n\t\t{\"AF_CAIF\", Const, 0, \"\"},\n\t\t{\"AF_CAN\", Const, 0, \"\"},\n\t\t{\"AF_CCITT\", Const, 0, \"\"},\n\t\t{\"AF_CHAOS\", Const, 0, \"\"},\n\t\t{\"AF_CNT\", Const, 0, \"\"},\n\t\t{\"AF_COIP\", Const, 0, \"\"},\n\t\t{\"AF_DATAKIT\", Const, 0, \"\"},\n\t\t{\"AF_DECnet\", Const, 0, \"\"},\n\t\t{\"AF_DLI\", Const, 0, \"\"},\n\t\t{\"AF_E164\", Const, 0, \"\"},\n\t\t{\"AF_ECMA\", Const, 0, \"\"},\n\t\t{\"AF_ECONET\", Const, 0, \"\"},\n\t\t{\"AF_ENCAP\", Const, 1, \"\"},\n\t\t{\"AF_FILE\", Const, 0, \"\"},\n\t\t{\"AF_HYLINK\", Const, 0, \"\"},\n\t\t{\"AF_IEEE80211\", Const, 0, \"\"},\n\t\t{\"AF_IEEE802154\", Const, 0, \"\"},\n\t\t{\"AF_IMPLINK\", Const, 0, \"\"},\n\t\t{\"AF_INET\", Const, 0, \"\"},\n\t\t{\"AF_INET6\", Const, 0, \"\"},\n\t\t{\"AF_INET6_SDP\", Const, 3, \"\"},\n\t\t{\"AF_INET_SDP\", Const, 3, \"\"},\n\t\t{\"AF_IPX\", Const, 0, \"\"},\n\t\t{\"AF_IRDA\", Const, 0, \"\"},\n\t\t{\"AF_ISDN\", Const, 0, \"\"},\n\t\t{\"AF_ISO\", Const, 0, \"\"},\n\t\t{\"AF_IUCV\", Const, 0, \"\"},\n\t\t{\"AF_KEY\", Const, 0, \"\"},\n\t\t{\"AF_LAT\", Const, 0, \"\"},\n\t\t{\"AF_LINK\", Const, 0, \"\"},\n\t\t{\"AF_LLC\", Const, 0, \"\"},\n\t\t{\"AF_LOCAL\", Const, 0, \"\"},\n\t\t{\"AF_MAX\", Const, 0, \"\"},\n\t\t{\"AF_MPLS\", Const, 1, \"\"},\n\t\t{\"AF_NATM\", Const, 0, \"\"},\n\t\t{\"AF_NDRV\", Const, 0, \"\"},\n\t\t{\"AF_NETBEUI\", Const, 0, \"\"},\n\t\t{\"AF_NETBIOS\", Const, 0, \"\"},\n\t\t{\"AF_NETGRAPH\", Const, 0, \"\"},\n\t\t{\"AF_NETLINK\", Const, 0, \"\"},\n\t\t{\"AF_NETROM\", Const, 0, \"\"},\n\t\t{\"AF_NS\", Const, 0, \"\"},\n\t\t{\"AF_OROUTE\", Const, 1, \"\"},\n\t\t{\"AF_OSI\", Const, 0, \"\"},\n\t\t{\"AF_PACKET\", Const, 0, \"\"},\n\t\t{\"AF_PHONET\", Const, 0, \"\"},\n\t\t{\"AF_PPP\", Const, 0, \"\"},\n\t\t{\"AF_PPPOX\", Const, 0, \"\"},\n\t\t{\"AF_PUP\", Const, 0, \"\"},\n\t\t{\"AF_RDS\", Const, 0, \"\"},\n\t\t{\"AF_RESERVED_36\", Const, 0, \"\"},\n\t\t{\"AF_ROSE\", Const, 0, \"\"},\n\t\t{\"AF_ROUTE\", Const, 0, \"\"},\n\t\t{\"AF_RXRPC\", Const, 0, \"\"},\n\t\t{\"AF_SCLUSTER\", Const, 0, \"\"},\n\t\t{\"AF_SECURITY\", Const, 0, \"\"},\n\t\t{\"AF_SIP\", Const, 0, \"\"},\n\t\t{\"AF_SLOW\", Const, 0, \"\"},\n\t\t{\"AF_SNA\", Const, 0, \"\"},\n\t\t{\"AF_SYSTEM\", Const, 0, \"\"},\n\t\t{\"AF_TIPC\", Const, 0, \"\"},\n\t\t{\"AF_UNIX\", Const, 0, \"\"},\n\t\t{\"AF_UNSPEC\", Const, 0, \"\"},\n\t\t{\"AF_UTUN\", Const, 16, \"\"},\n\t\t{\"AF_VENDOR00\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR01\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR02\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR03\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR04\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR05\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR06\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR07\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR08\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR09\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR10\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR11\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR12\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR13\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR14\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR15\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR16\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR17\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR18\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR19\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR20\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR21\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR22\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR23\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR24\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR25\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR26\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR27\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR28\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR29\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR30\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR31\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR32\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR33\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR34\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR35\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR36\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR37\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR38\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR39\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR40\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR41\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR42\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR43\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR44\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR45\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR46\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR47\", Const, 0, \"\"},\n\t\t{\"AF_WANPIPE\", Const, 0, \"\"},\n\t\t{\"AF_X25\", Const, 0, \"\"},\n\t\t{\"AI_CANONNAME\", Const, 1, \"\"},\n\t\t{\"AI_NUMERICHOST\", Const, 1, \"\"},\n\t\t{\"AI_PASSIVE\", Const, 1, \"\"},\n\t\t{\"APPLICATION_ERROR\", Const, 0, \"\"},\n\t\t{\"ARPHRD_ADAPT\", Const, 0, \"\"},\n\t\t{\"ARPHRD_APPLETLK\", Const, 0, \"\"},\n\t\t{\"ARPHRD_ARCNET\", Const, 0, \"\"},\n\t\t{\"ARPHRD_ASH\", Const, 0, \"\"},\n\t\t{\"ARPHRD_ATM\", Const, 0, \"\"},\n\t\t{\"ARPHRD_AX25\", Const, 0, \"\"},\n\t\t{\"ARPHRD_BIF\", Const, 0, \"\"},\n\t\t{\"ARPHRD_CHAOS\", Const, 0, \"\"},\n\t\t{\"ARPHRD_CISCO\", Const, 0, \"\"},\n\t\t{\"ARPHRD_CSLIP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_CSLIP6\", Const, 0, \"\"},\n\t\t{\"ARPHRD_DDCMP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_DLCI\", Const, 0, \"\"},\n\t\t{\"ARPHRD_ECONET\", Const, 0, \"\"},\n\t\t{\"ARPHRD_EETHER\", Const, 0, \"\"},\n\t\t{\"ARPHRD_ETHER\", Const, 0, \"\"},\n\t\t{\"ARPHRD_EUI64\", Const, 0, \"\"},\n\t\t{\"ARPHRD_FCAL\", Const, 0, \"\"},\n\t\t{\"ARPHRD_FCFABRIC\", Const, 0, \"\"},\n\t\t{\"ARPHRD_FCPL\", Const, 0, \"\"},\n\t\t{\"ARPHRD_FCPP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_FDDI\", Const, 0, \"\"},\n\t\t{\"ARPHRD_FRAD\", Const, 0, \"\"},\n\t\t{\"ARPHRD_FRELAY\", Const, 1, \"\"},\n\t\t{\"ARPHRD_HDLC\", Const, 0, \"\"},\n\t\t{\"ARPHRD_HIPPI\", Const, 0, \"\"},\n\t\t{\"ARPHRD_HWX25\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE1394\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE802\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE80211\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE80211_PRISM\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE80211_RADIOTAP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE802154\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE802154_PHY\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE802_TR\", Const, 0, \"\"},\n\t\t{\"ARPHRD_INFINIBAND\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IPDDP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IPGRE\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IRDA\", Const, 0, \"\"},\n\t\t{\"ARPHRD_LAPB\", Const, 0, \"\"},\n\t\t{\"ARPHRD_LOCALTLK\", Const, 0, \"\"},\n\t\t{\"ARPHRD_LOOPBACK\", Const, 0, \"\"},\n\t\t{\"ARPHRD_METRICOM\", Const, 0, \"\"},\n\t\t{\"ARPHRD_NETROM\", Const, 0, \"\"},\n\t\t{\"ARPHRD_NONE\", Const, 0, \"\"},\n\t\t{\"ARPHRD_PIMREG\", Const, 0, \"\"},\n\t\t{\"ARPHRD_PPP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_PRONET\", Const, 0, \"\"},\n\t\t{\"ARPHRD_RAWHDLC\", Const, 0, \"\"},\n\t\t{\"ARPHRD_ROSE\", Const, 0, \"\"},\n\t\t{\"ARPHRD_RSRVD\", Const, 0, \"\"},\n\t\t{\"ARPHRD_SIT\", Const, 0, \"\"},\n\t\t{\"ARPHRD_SKIP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_SLIP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_SLIP6\", Const, 0, \"\"},\n\t\t{\"ARPHRD_STRIP\", Const, 1, \"\"},\n\t\t{\"ARPHRD_TUNNEL\", Const, 0, \"\"},\n\t\t{\"ARPHRD_TUNNEL6\", Const, 0, \"\"},\n\t\t{\"ARPHRD_VOID\", Const, 0, \"\"},\n\t\t{\"ARPHRD_X25\", Const, 0, \"\"},\n\t\t{\"AUTHTYPE_CLIENT\", Const, 0, \"\"},\n\t\t{\"AUTHTYPE_SERVER\", Const, 0, \"\"},\n\t\t{\"Accept\", Func, 0, \"func(fd int) (nfd int, sa Sockaddr, err error)\"},\n\t\t{\"Accept4\", Func, 1, \"func(fd int, flags int) (nfd int, sa Sockaddr, err error)\"},\n\t\t{\"AcceptEx\", Func, 0, \"\"},\n\t\t{\"Access\", Func, 0, \"func(path string, mode uint32) (err error)\"},\n\t\t{\"Acct\", Func, 0, \"func(path string) (err error)\"},\n\t\t{\"AddrinfoW\", Type, 1, \"\"},\n\t\t{\"AddrinfoW.Addr\", Field, 1, \"\"},\n\t\t{\"AddrinfoW.Addrlen\", Field, 1, \"\"},\n\t\t{\"AddrinfoW.Canonname\", Field, 1, \"\"},\n\t\t{\"AddrinfoW.Family\", Field, 1, \"\"},\n\t\t{\"AddrinfoW.Flags\", Field, 1, \"\"},\n\t\t{\"AddrinfoW.Next\", Field, 1, \"\"},\n\t\t{\"AddrinfoW.Protocol\", Field, 1, \"\"},\n\t\t{\"AddrinfoW.Socktype\", Field, 1, \"\"},\n\t\t{\"Adjtime\", Func, 0, \"\"},\n\t\t{\"Adjtimex\", Func, 0, \"func(buf *Timex) (state int, err error)\"},\n\t\t{\"AllThreadsSyscall\", Func, 16, \"func(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr) (r1 uintptr, r2 uintptr, err Errno)\"},\n\t\t{\"AllThreadsSyscall6\", Func, 16, \"func(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr, a6 uintptr) (r1 uintptr, r2 uintptr, err Errno)\"},\n\t\t{\"AttachLsf\", Func, 0, \"func(fd int, i []SockFilter) error\"},\n\t\t{\"B0\", Const, 0, \"\"},\n\t\t{\"B1000000\", Const, 0, \"\"},\n\t\t{\"B110\", Const, 0, \"\"},\n\t\t{\"B115200\", Const, 0, \"\"},\n\t\t{\"B1152000\", Const, 0, \"\"},\n\t\t{\"B1200\", Const, 0, \"\"},\n\t\t{\"B134\", Const, 0, \"\"},\n\t\t{\"B14400\", Const, 1, \"\"},\n\t\t{\"B150\", Const, 0, \"\"},\n\t\t{\"B1500000\", Const, 0, \"\"},\n\t\t{\"B1800\", Const, 0, \"\"},\n\t\t{\"B19200\", Const, 0, \"\"},\n\t\t{\"B200\", Const, 0, \"\"},\n\t\t{\"B2000000\", Const, 0, \"\"},\n\t\t{\"B230400\", Const, 0, \"\"},\n\t\t{\"B2400\", Const, 0, \"\"},\n\t\t{\"B2500000\", Const, 0, \"\"},\n\t\t{\"B28800\", Const, 1, \"\"},\n\t\t{\"B300\", Const, 0, \"\"},\n\t\t{\"B3000000\", Const, 0, \"\"},\n\t\t{\"B3500000\", Const, 0, \"\"},\n\t\t{\"B38400\", Const, 0, \"\"},\n\t\t{\"B4000000\", Const, 0, \"\"},\n\t\t{\"B460800\", Const, 0, \"\"},\n\t\t{\"B4800\", Const, 0, \"\"},\n\t\t{\"B50\", Const, 0, \"\"},\n\t\t{\"B500000\", Const, 0, \"\"},\n\t\t{\"B57600\", Const, 0, \"\"},\n\t\t{\"B576000\", Const, 0, \"\"},\n\t\t{\"B600\", Const, 0, \"\"},\n\t\t{\"B7200\", Const, 1, \"\"},\n\t\t{\"B75\", Const, 0, \"\"},\n\t\t{\"B76800\", Const, 1, \"\"},\n\t\t{\"B921600\", Const, 0, \"\"},\n\t\t{\"B9600\", Const, 0, \"\"},\n\t\t{\"BASE_PROTOCOL\", Const, 2, \"\"},\n\t\t{\"BIOCFEEDBACK\", Const, 0, \"\"},\n\t\t{\"BIOCFLUSH\", Const, 0, \"\"},\n\t\t{\"BIOCGBLEN\", Const, 0, \"\"},\n\t\t{\"BIOCGDIRECTION\", Const, 0, \"\"},\n\t\t{\"BIOCGDIRFILT\", Const, 1, \"\"},\n\t\t{\"BIOCGDLT\", Const, 0, \"\"},\n\t\t{\"BIOCGDLTLIST\", Const, 0, \"\"},\n\t\t{\"BIOCGETBUFMODE\", Const, 0, \"\"},\n\t\t{\"BIOCGETIF\", Const, 0, \"\"},\n\t\t{\"BIOCGETZMAX\", Const, 0, \"\"},\n\t\t{\"BIOCGFEEDBACK\", Const, 1, \"\"},\n\t\t{\"BIOCGFILDROP\", Const, 1, \"\"},\n\t\t{\"BIOCGHDRCMPLT\", Const, 0, \"\"},\n\t\t{\"BIOCGRSIG\", Const, 0, \"\"},\n\t\t{\"BIOCGRTIMEOUT\", Const, 0, \"\"},\n\t\t{\"BIOCGSEESENT\", Const, 0, \"\"},\n\t\t{\"BIOCGSTATS\", Const, 0, \"\"},\n\t\t{\"BIOCGSTATSOLD\", Const, 1, \"\"},\n\t\t{\"BIOCGTSTAMP\", Const, 1, \"\"},\n\t\t{\"BIOCIMMEDIATE\", Const, 0, \"\"},\n\t\t{\"BIOCLOCK\", Const, 0, \"\"},\n\t\t{\"BIOCPROMISC\", Const, 0, \"\"},\n\t\t{\"BIOCROTZBUF\", Const, 0, \"\"},\n\t\t{\"BIOCSBLEN\", Const, 0, \"\"},\n\t\t{\"BIOCSDIRECTION\", Const, 0, \"\"},\n\t\t{\"BIOCSDIRFILT\", Const, 1, \"\"},\n\t\t{\"BIOCSDLT\", Const, 0, \"\"},\n\t\t{\"BIOCSETBUFMODE\", Const, 0, \"\"},\n\t\t{\"BIOCSETF\", Const, 0, \"\"},\n\t\t{\"BIOCSETFNR\", Const, 0, \"\"},\n\t\t{\"BIOCSETIF\", Const, 0, \"\"},\n\t\t{\"BIOCSETWF\", Const, 0, \"\"},\n\t\t{\"BIOCSETZBUF\", Const, 0, \"\"},\n\t\t{\"BIOCSFEEDBACK\", Const, 1, \"\"},\n\t\t{\"BIOCSFILDROP\", Const, 1, \"\"},\n\t\t{\"BIOCSHDRCMPLT\", Const, 0, \"\"},\n\t\t{\"BIOCSRSIG\", Const, 0, \"\"},\n\t\t{\"BIOCSRTIMEOUT\", Const, 0, \"\"},\n\t\t{\"BIOCSSEESENT\", Const, 0, \"\"},\n\t\t{\"BIOCSTCPF\", Const, 1, \"\"},\n\t\t{\"BIOCSTSTAMP\", Const, 1, \"\"},\n\t\t{\"BIOCSUDPF\", Const, 1, \"\"},\n\t\t{\"BIOCVERSION\", Const, 0, \"\"},\n\t\t{\"BPF_A\", Const, 0, \"\"},\n\t\t{\"BPF_ABS\", Const, 0, \"\"},\n\t\t{\"BPF_ADD\", Const, 0, \"\"},\n\t\t{\"BPF_ALIGNMENT\", Const, 0, \"\"},\n\t\t{\"BPF_ALIGNMENT32\", Const, 1, \"\"},\n\t\t{\"BPF_ALU\", Const, 0, \"\"},\n\t\t{\"BPF_AND\", Const, 0, \"\"},\n\t\t{\"BPF_B\", Const, 0, \"\"},\n\t\t{\"BPF_BUFMODE_BUFFER\", Const, 0, \"\"},\n\t\t{\"BPF_BUFMODE_ZBUF\", Const, 0, \"\"},\n\t\t{\"BPF_DFLTBUFSIZE\", Const, 1, \"\"},\n\t\t{\"BPF_DIRECTION_IN\", Const, 1, \"\"},\n\t\t{\"BPF_DIRECTION_OUT\", Const, 1, \"\"},\n\t\t{\"BPF_DIV\", Const, 0, \"\"},\n\t\t{\"BPF_H\", Const, 0, \"\"},\n\t\t{\"BPF_IMM\", Const, 0, \"\"},\n\t\t{\"BPF_IND\", Const, 0, \"\"},\n\t\t{\"BPF_JA\", Const, 0, \"\"},\n\t\t{\"BPF_JEQ\", Const, 0, \"\"},\n\t\t{\"BPF_JGE\", Const, 0, \"\"},\n\t\t{\"BPF_JGT\", Const, 0, \"\"},\n\t\t{\"BPF_JMP\", Const, 0, \"\"},\n\t\t{\"BPF_JSET\", Const, 0, \"\"},\n\t\t{\"BPF_K\", Const, 0, \"\"},\n\t\t{\"BPF_LD\", Const, 0, \"\"},\n\t\t{\"BPF_LDX\", Const, 0, \"\"},\n\t\t{\"BPF_LEN\", Const, 0, \"\"},\n\t\t{\"BPF_LSH\", Const, 0, \"\"},\n\t\t{\"BPF_MAJOR_VERSION\", Const, 0, \"\"},\n\t\t{\"BPF_MAXBUFSIZE\", Const, 0, \"\"},\n\t\t{\"BPF_MAXINSNS\", Const, 0, \"\"},\n\t\t{\"BPF_MEM\", Const, 0, \"\"},\n\t\t{\"BPF_MEMWORDS\", Const, 0, \"\"},\n\t\t{\"BPF_MINBUFSIZE\", Const, 0, \"\"},\n\t\t{\"BPF_MINOR_VERSION\", Const, 0, \"\"},\n\t\t{\"BPF_MISC\", Const, 0, \"\"},\n\t\t{\"BPF_MSH\", Const, 0, \"\"},\n\t\t{\"BPF_MUL\", Const, 0, \"\"},\n\t\t{\"BPF_NEG\", Const, 0, \"\"},\n\t\t{\"BPF_OR\", Const, 0, \"\"},\n\t\t{\"BPF_RELEASE\", Const, 0, \"\"},\n\t\t{\"BPF_RET\", Const, 0, \"\"},\n\t\t{\"BPF_RSH\", Const, 0, \"\"},\n\t\t{\"BPF_ST\", Const, 0, \"\"},\n\t\t{\"BPF_STX\", Const, 0, \"\"},\n\t\t{\"BPF_SUB\", Const, 0, \"\"},\n\t\t{\"BPF_TAX\", Const, 0, \"\"},\n\t\t{\"BPF_TXA\", Const, 0, \"\"},\n\t\t{\"BPF_T_BINTIME\", Const, 1, \"\"},\n\t\t{\"BPF_T_BINTIME_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_BINTIME_MONOTONIC\", Const, 1, \"\"},\n\t\t{\"BPF_T_BINTIME_MONOTONIC_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_FLAG_MASK\", Const, 1, \"\"},\n\t\t{\"BPF_T_FORMAT_MASK\", Const, 1, \"\"},\n\t\t{\"BPF_T_MICROTIME\", Const, 1, \"\"},\n\t\t{\"BPF_T_MICROTIME_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_MICROTIME_MONOTONIC\", Const, 1, \"\"},\n\t\t{\"BPF_T_MICROTIME_MONOTONIC_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_MONOTONIC\", Const, 1, \"\"},\n\t\t{\"BPF_T_MONOTONIC_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_NANOTIME\", Const, 1, \"\"},\n\t\t{\"BPF_T_NANOTIME_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_NANOTIME_MONOTONIC\", Const, 1, \"\"},\n\t\t{\"BPF_T_NANOTIME_MONOTONIC_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_NONE\", Const, 1, \"\"},\n\t\t{\"BPF_T_NORMAL\", Const, 1, \"\"},\n\t\t{\"BPF_W\", Const, 0, \"\"},\n\t\t{\"BPF_X\", Const, 0, \"\"},\n\t\t{\"BRKINT\", Const, 0, \"\"},\n\t\t{\"Bind\", Func, 0, \"func(fd int, sa Sockaddr) (err error)\"},\n\t\t{\"BindToDevice\", Func, 0, \"func(fd int, device string) (err error)\"},\n\t\t{\"BpfBuflen\", Func, 0, \"\"},\n\t\t{\"BpfDatalink\", Func, 0, \"\"},\n\t\t{\"BpfHdr\", Type, 0, \"\"},\n\t\t{\"BpfHdr.Caplen\", Field, 0, \"\"},\n\t\t{\"BpfHdr.Datalen\", Field, 0, \"\"},\n\t\t{\"BpfHdr.Hdrlen\", Field, 0, \"\"},\n\t\t{\"BpfHdr.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"BpfHdr.Tstamp\", Field, 0, \"\"},\n\t\t{\"BpfHeadercmpl\", Func, 0, \"\"},\n\t\t{\"BpfInsn\", Type, 0, \"\"},\n\t\t{\"BpfInsn.Code\", Field, 0, \"\"},\n\t\t{\"BpfInsn.Jf\", Field, 0, \"\"},\n\t\t{\"BpfInsn.Jt\", Field, 0, \"\"},\n\t\t{\"BpfInsn.K\", Field, 0, \"\"},\n\t\t{\"BpfInterface\", Func, 0, \"\"},\n\t\t{\"BpfJump\", Func, 0, \"\"},\n\t\t{\"BpfProgram\", Type, 0, \"\"},\n\t\t{\"BpfProgram.Insns\", Field, 0, \"\"},\n\t\t{\"BpfProgram.Len\", Field, 0, \"\"},\n\t\t{\"BpfProgram.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"BpfStat\", Type, 0, \"\"},\n\t\t{\"BpfStat.Capt\", Field, 2, \"\"},\n\t\t{\"BpfStat.Drop\", Field, 0, \"\"},\n\t\t{\"BpfStat.Padding\", Field, 2, \"\"},\n\t\t{\"BpfStat.Recv\", Field, 0, \"\"},\n\t\t{\"BpfStats\", Func, 0, \"\"},\n\t\t{\"BpfStmt\", Func, 0, \"\"},\n\t\t{\"BpfTimeout\", Func, 0, \"\"},\n\t\t{\"BpfTimeval\", Type, 2, \"\"},\n\t\t{\"BpfTimeval.Sec\", Field, 2, \"\"},\n\t\t{\"BpfTimeval.Usec\", Field, 2, \"\"},\n\t\t{\"BpfVersion\", Type, 0, \"\"},\n\t\t{\"BpfVersion.Major\", Field, 0, \"\"},\n\t\t{\"BpfVersion.Minor\", Field, 0, \"\"},\n\t\t{\"BpfZbuf\", Type, 0, \"\"},\n\t\t{\"BpfZbuf.Bufa\", Field, 0, \"\"},\n\t\t{\"BpfZbuf.Bufb\", Field, 0, \"\"},\n\t\t{\"BpfZbuf.Buflen\", Field, 0, \"\"},\n\t\t{\"BpfZbufHeader\", Type, 0, \"\"},\n\t\t{\"BpfZbufHeader.Kernel_gen\", Field, 0, \"\"},\n\t\t{\"BpfZbufHeader.Kernel_len\", Field, 0, \"\"},\n\t\t{\"BpfZbufHeader.User_gen\", Field, 0, \"\"},\n\t\t{\"BpfZbufHeader.X_bzh_pad\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation\", Type, 0, \"\"},\n\t\t{\"ByHandleFileInformation.CreationTime\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.FileAttributes\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.FileIndexHigh\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.FileIndexLow\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.FileSizeHigh\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.FileSizeLow\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.LastAccessTime\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.LastWriteTime\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.NumberOfLinks\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.VolumeSerialNumber\", Field, 0, \"\"},\n\t\t{\"BytePtrFromString\", Func, 1, \"func(s string) (*byte, error)\"},\n\t\t{\"ByteSliceFromString\", Func, 1, \"func(s string) ([]byte, error)\"},\n\t\t{\"CCR0_FLUSH\", Const, 1, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_AUTHENTICODE\", Const, 0, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_AUTHENTICODE_TS\", Const, 0, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_BASE\", Const, 0, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_BASIC_CONSTRAINTS\", Const, 0, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_EV\", Const, 0, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_MICROSOFT_ROOT\", Const, 0, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_NT_AUTH\", Const, 0, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_SSL\", Const, 0, \"\"},\n\t\t{\"CERT_E_CN_NO_MATCH\", Const, 0, \"\"},\n\t\t{\"CERT_E_EXPIRED\", Const, 0, \"\"},\n\t\t{\"CERT_E_PURPOSE\", Const, 0, \"\"},\n\t\t{\"CERT_E_ROLE\", Const, 0, \"\"},\n\t\t{\"CERT_E_UNTRUSTEDROOT\", Const, 0, \"\"},\n\t\t{\"CERT_STORE_ADD_ALWAYS\", Const, 0, \"\"},\n\t\t{\"CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG\", Const, 0, \"\"},\n\t\t{\"CERT_STORE_PROV_MEMORY\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_INVALID_BASIC_CONSTRAINTS\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_INVALID_EXTENSION\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_INVALID_NAME_CONSTRAINTS\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_INVALID_POLICY_CONSTRAINTS\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_CYCLIC\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_EXPLICIT_DISTRUST\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_NOT_SIGNATURE_VALID\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_NOT_TIME_VALID\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_NOT_VALID_FOR_USAGE\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_OFFLINE_REVOCATION\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_REVOKED\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_UNTRUSTED_ROOT\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_NO_ERROR\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_REVOCATION_STATUS_UNKNOWN\", Const, 0, \"\"},\n\t\t{\"CFLUSH\", Const, 1, \"\"},\n\t\t{\"CLOCAL\", Const, 0, \"\"},\n\t\t{\"CLONE_CHILD_CLEARTID\", Const, 2, \"\"},\n\t\t{\"CLONE_CHILD_SETTID\", Const, 2, \"\"},\n\t\t{\"CLONE_CLEAR_SIGHAND\", Const, 20, \"\"},\n\t\t{\"CLONE_CSIGNAL\", Const, 3, \"\"},\n\t\t{\"CLONE_DETACHED\", Const, 2, \"\"},\n\t\t{\"CLONE_FILES\", Const, 2, \"\"},\n\t\t{\"CLONE_FS\", Const, 2, \"\"},\n\t\t{\"CLONE_INTO_CGROUP\", Const, 20, \"\"},\n\t\t{\"CLONE_IO\", Const, 2, \"\"},\n\t\t{\"CLONE_NEWCGROUP\", Const, 20, \"\"},\n\t\t{\"CLONE_NEWIPC\", Const, 2, \"\"},\n\t\t{\"CLONE_NEWNET\", Const, 2, \"\"},\n\t\t{\"CLONE_NEWNS\", Const, 2, \"\"},\n\t\t{\"CLONE_NEWPID\", Const, 2, \"\"},\n\t\t{\"CLONE_NEWTIME\", Const, 20, \"\"},\n\t\t{\"CLONE_NEWUSER\", Const, 2, \"\"},\n\t\t{\"CLONE_NEWUTS\", Const, 2, \"\"},\n\t\t{\"CLONE_PARENT\", Const, 2, \"\"},\n\t\t{\"CLONE_PARENT_SETTID\", Const, 2, \"\"},\n\t\t{\"CLONE_PID\", Const, 3, \"\"},\n\t\t{\"CLONE_PIDFD\", Const, 20, \"\"},\n\t\t{\"CLONE_PTRACE\", Const, 2, \"\"},\n\t\t{\"CLONE_SETTLS\", Const, 2, \"\"},\n\t\t{\"CLONE_SIGHAND\", Const, 2, \"\"},\n\t\t{\"CLONE_SYSVSEM\", Const, 2, \"\"},\n\t\t{\"CLONE_THREAD\", Const, 2, \"\"},\n\t\t{\"CLONE_UNTRACED\", Const, 2, \"\"},\n\t\t{\"CLONE_VFORK\", Const, 2, \"\"},\n\t\t{\"CLONE_VM\", Const, 2, \"\"},\n\t\t{\"CPUID_CFLUSH\", Const, 1, \"\"},\n\t\t{\"CREAD\", Const, 0, \"\"},\n\t\t{\"CREATE_ALWAYS\", Const, 0, \"\"},\n\t\t{\"CREATE_NEW\", Const, 0, \"\"},\n\t\t{\"CREATE_NEW_PROCESS_GROUP\", Const, 1, \"\"},\n\t\t{\"CREATE_UNICODE_ENVIRONMENT\", Const, 0, \"\"},\n\t\t{\"CRYPT_DEFAULT_CONTAINER_OPTIONAL\", Const, 0, \"\"},\n\t\t{\"CRYPT_DELETEKEYSET\", Const, 0, \"\"},\n\t\t{\"CRYPT_MACHINE_KEYSET\", Const, 0, \"\"},\n\t\t{\"CRYPT_NEWKEYSET\", Const, 0, \"\"},\n\t\t{\"CRYPT_SILENT\", Const, 0, \"\"},\n\t\t{\"CRYPT_VERIFYCONTEXT\", Const, 0, \"\"},\n\t\t{\"CS5\", Const, 0, \"\"},\n\t\t{\"CS6\", Const, 0, \"\"},\n\t\t{\"CS7\", Const, 0, \"\"},\n\t\t{\"CS8\", Const, 0, \"\"},\n\t\t{\"CSIZE\", Const, 0, \"\"},\n\t\t{\"CSTART\", Const, 1, \"\"},\n\t\t{\"CSTATUS\", Const, 1, \"\"},\n\t\t{\"CSTOP\", Const, 1, \"\"},\n\t\t{\"CSTOPB\", Const, 0, \"\"},\n\t\t{\"CSUSP\", Const, 1, \"\"},\n\t\t{\"CTL_MAXNAME\", Const, 0, \"\"},\n\t\t{\"CTL_NET\", Const, 0, \"\"},\n\t\t{\"CTL_QUERY\", Const, 1, \"\"},\n\t\t{\"CTRL_BREAK_EVENT\", Const, 1, \"\"},\n\t\t{\"CTRL_CLOSE_EVENT\", Const, 14, \"\"},\n\t\t{\"CTRL_C_EVENT\", Const, 1, \"\"},\n\t\t{\"CTRL_LOGOFF_EVENT\", Const, 14, \"\"},\n\t\t{\"CTRL_SHUTDOWN_EVENT\", Const, 14, \"\"},\n\t\t{\"CancelIo\", Func, 0, \"\"},\n\t\t{\"CancelIoEx\", Func, 1, \"\"},\n\t\t{\"CertAddCertificateContextToStore\", Func, 0, \"\"},\n\t\t{\"CertChainContext\", Type, 0, \"\"},\n\t\t{\"CertChainContext.ChainCount\", Field, 0, \"\"},\n\t\t{\"CertChainContext.Chains\", Field, 0, \"\"},\n\t\t{\"CertChainContext.HasRevocationFreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertChainContext.LowerQualityChainCount\", Field, 0, \"\"},\n\t\t{\"CertChainContext.LowerQualityChains\", Field, 0, \"\"},\n\t\t{\"CertChainContext.RevocationFreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertChainContext.Size\", Field, 0, \"\"},\n\t\t{\"CertChainContext.TrustStatus\", Field, 0, \"\"},\n\t\t{\"CertChainElement\", Type, 0, \"\"},\n\t\t{\"CertChainElement.ApplicationUsage\", Field, 0, \"\"},\n\t\t{\"CertChainElement.CertContext\", Field, 0, \"\"},\n\t\t{\"CertChainElement.ExtendedErrorInfo\", Field, 0, \"\"},\n\t\t{\"CertChainElement.IssuanceUsage\", Field, 0, \"\"},\n\t\t{\"CertChainElement.RevocationInfo\", Field, 0, \"\"},\n\t\t{\"CertChainElement.Size\", Field, 0, \"\"},\n\t\t{\"CertChainElement.TrustStatus\", Field, 0, \"\"},\n\t\t{\"CertChainPara\", Type, 0, \"\"},\n\t\t{\"CertChainPara.CacheResync\", Field, 0, \"\"},\n\t\t{\"CertChainPara.CheckRevocationFreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertChainPara.RequestedUsage\", Field, 0, \"\"},\n\t\t{\"CertChainPara.RequstedIssuancePolicy\", Field, 0, \"\"},\n\t\t{\"CertChainPara.RevocationFreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertChainPara.Size\", Field, 0, \"\"},\n\t\t{\"CertChainPara.URLRetrievalTimeout\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyPara\", Type, 0, \"\"},\n\t\t{\"CertChainPolicyPara.ExtraPolicyPara\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyPara.Flags\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyPara.Size\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyStatus\", Type, 0, \"\"},\n\t\t{\"CertChainPolicyStatus.ChainIndex\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyStatus.ElementIndex\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyStatus.Error\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyStatus.ExtraPolicyStatus\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyStatus.Size\", Field, 0, \"\"},\n\t\t{\"CertCloseStore\", Func, 0, \"\"},\n\t\t{\"CertContext\", Type, 0, \"\"},\n\t\t{\"CertContext.CertInfo\", Field, 0, \"\"},\n\t\t{\"CertContext.EncodedCert\", Field, 0, \"\"},\n\t\t{\"CertContext.EncodingType\", Field, 0, \"\"},\n\t\t{\"CertContext.Length\", Field, 0, \"\"},\n\t\t{\"CertContext.Store\", Field, 0, \"\"},\n\t\t{\"CertCreateCertificateContext\", Func, 0, \"\"},\n\t\t{\"CertEnhKeyUsage\", Type, 0, \"\"},\n\t\t{\"CertEnhKeyUsage.Length\", Field, 0, \"\"},\n\t\t{\"CertEnhKeyUsage.UsageIdentifiers\", Field, 0, \"\"},\n\t\t{\"CertEnumCertificatesInStore\", Func, 0, \"\"},\n\t\t{\"CertFreeCertificateChain\", Func, 0, \"\"},\n\t\t{\"CertFreeCertificateContext\", Func, 0, \"\"},\n\t\t{\"CertGetCertificateChain\", Func, 0, \"\"},\n\t\t{\"CertInfo\", Type, 11, \"\"},\n\t\t{\"CertOpenStore\", Func, 0, \"\"},\n\t\t{\"CertOpenSystemStore\", Func, 0, \"\"},\n\t\t{\"CertRevocationCrlInfo\", Type, 11, \"\"},\n\t\t{\"CertRevocationInfo\", Type, 0, \"\"},\n\t\t{\"CertRevocationInfo.CrlInfo\", Field, 0, \"\"},\n\t\t{\"CertRevocationInfo.FreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertRevocationInfo.HasFreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertRevocationInfo.OidSpecificInfo\", Field, 0, \"\"},\n\t\t{\"CertRevocationInfo.RevocationOid\", Field, 0, \"\"},\n\t\t{\"CertRevocationInfo.RevocationResult\", Field, 0, \"\"},\n\t\t{\"CertRevocationInfo.Size\", Field, 0, \"\"},\n\t\t{\"CertSimpleChain\", Type, 0, \"\"},\n\t\t{\"CertSimpleChain.Elements\", Field, 0, \"\"},\n\t\t{\"CertSimpleChain.HasRevocationFreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertSimpleChain.NumElements\", Field, 0, \"\"},\n\t\t{\"CertSimpleChain.RevocationFreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertSimpleChain.Size\", Field, 0, \"\"},\n\t\t{\"CertSimpleChain.TrustListInfo\", Field, 0, \"\"},\n\t\t{\"CertSimpleChain.TrustStatus\", Field, 0, \"\"},\n\t\t{\"CertTrustListInfo\", Type, 11, \"\"},\n\t\t{\"CertTrustStatus\", Type, 0, \"\"},\n\t\t{\"CertTrustStatus.ErrorStatus\", Field, 0, \"\"},\n\t\t{\"CertTrustStatus.InfoStatus\", Field, 0, \"\"},\n\t\t{\"CertUsageMatch\", Type, 0, \"\"},\n\t\t{\"CertUsageMatch.Type\", Field, 0, \"\"},\n\t\t{\"CertUsageMatch.Usage\", Field, 0, \"\"},\n\t\t{\"CertVerifyCertificateChainPolicy\", Func, 0, \"\"},\n\t\t{\"Chdir\", Func, 0, \"func(path string) (err error)\"},\n\t\t{\"CheckBpfVersion\", Func, 0, \"\"},\n\t\t{\"Chflags\", Func, 0, \"\"},\n\t\t{\"Chmod\", Func, 0, \"func(path string, mode uint32) (err error)\"},\n\t\t{\"Chown\", Func, 0, \"func(path string, uid int, gid int) (err error)\"},\n\t\t{\"Chroot\", Func, 0, \"func(path string) (err error)\"},\n\t\t{\"Clearenv\", Func, 0, \"func()\"},\n\t\t{\"Close\", Func, 0, \"func(fd int) (err error)\"},\n\t\t{\"CloseHandle\", Func, 0, \"\"},\n\t\t{\"CloseOnExec\", Func, 0, \"func(fd int)\"},\n\t\t{\"Closesocket\", Func, 0, \"\"},\n\t\t{\"CmsgLen\", Func, 0, \"func(datalen int) int\"},\n\t\t{\"CmsgSpace\", Func, 0, \"func(datalen int) int\"},\n\t\t{\"Cmsghdr\", Type, 0, \"\"},\n\t\t{\"Cmsghdr.Len\", Field, 0, \"\"},\n\t\t{\"Cmsghdr.Level\", Field, 0, \"\"},\n\t\t{\"Cmsghdr.Type\", Field, 0, \"\"},\n\t\t{\"Cmsghdr.X__cmsg_data\", Field, 0, \"\"},\n\t\t{\"CommandLineToArgv\", Func, 0, \"\"},\n\t\t{\"ComputerName\", Func, 0, \"\"},\n\t\t{\"Conn\", Type, 9, \"\"},\n\t\t{\"Connect\", Func, 0, \"func(fd int, sa Sockaddr) (err error)\"},\n\t\t{\"ConnectEx\", Func, 1, \"\"},\n\t\t{\"ConvertSidToStringSid\", Func, 0, \"\"},\n\t\t{\"ConvertStringSidToSid\", Func, 0, \"\"},\n\t\t{\"CopySid\", Func, 0, \"\"},\n\t\t{\"Creat\", Func, 0, \"func(path string, mode uint32) (fd int, err error)\"},\n\t\t{\"CreateDirectory\", Func, 0, \"\"},\n\t\t{\"CreateFile\", Func, 0, \"\"},\n\t\t{\"CreateFileMapping\", Func, 0, \"\"},\n\t\t{\"CreateHardLink\", Func, 4, \"\"},\n\t\t{\"CreateIoCompletionPort\", Func, 0, \"\"},\n\t\t{\"CreatePipe\", Func, 0, \"\"},\n\t\t{\"CreateProcess\", Func, 0, \"\"},\n\t\t{\"CreateProcessAsUser\", Func, 10, \"\"},\n\t\t{\"CreateSymbolicLink\", Func, 4, \"\"},\n\t\t{\"CreateToolhelp32Snapshot\", Func, 4, \"\"},\n\t\t{\"Credential\", Type, 0, \"\"},\n\t\t{\"Credential.Gid\", Field, 0, \"\"},\n\t\t{\"Credential.Groups\", Field, 0, \"\"},\n\t\t{\"Credential.NoSetGroups\", Field, 9, \"\"},\n\t\t{\"Credential.Uid\", Field, 0, \"\"},\n\t\t{\"CryptAcquireContext\", Func, 0, \"\"},\n\t\t{\"CryptGenRandom\", Func, 0, \"\"},\n\t\t{\"CryptReleaseContext\", Func, 0, \"\"},\n\t\t{\"DIOCBSFLUSH\", Const, 1, \"\"},\n\t\t{\"DIOCOSFPFLUSH\", Const, 1, \"\"},\n\t\t{\"DLL\", Type, 0, \"\"},\n\t\t{\"DLL.Handle\", Field, 0, \"\"},\n\t\t{\"DLL.Name\", Field, 0, \"\"},\n\t\t{\"DLLError\", Type, 0, \"\"},\n\t\t{\"DLLError.Err\", Field, 0, \"\"},\n\t\t{\"DLLError.Msg\", Field, 0, \"\"},\n\t\t{\"DLLError.ObjName\", Field, 0, \"\"},\n\t\t{\"DLT_A429\", Const, 0, \"\"},\n\t\t{\"DLT_A653_ICM\", Const, 0, \"\"},\n\t\t{\"DLT_AIRONET_HEADER\", Const, 0, \"\"},\n\t\t{\"DLT_AOS\", Const, 1, \"\"},\n\t\t{\"DLT_APPLE_IP_OVER_IEEE1394\", Const, 0, \"\"},\n\t\t{\"DLT_ARCNET\", Const, 0, \"\"},\n\t\t{\"DLT_ARCNET_LINUX\", Const, 0, \"\"},\n\t\t{\"DLT_ATM_CLIP\", Const, 0, \"\"},\n\t\t{\"DLT_ATM_RFC1483\", Const, 0, \"\"},\n\t\t{\"DLT_AURORA\", Const, 0, \"\"},\n\t\t{\"DLT_AX25\", Const, 0, \"\"},\n\t\t{\"DLT_AX25_KISS\", Const, 0, \"\"},\n\t\t{\"DLT_BACNET_MS_TP\", Const, 0, \"\"},\n\t\t{\"DLT_BLUETOOTH_HCI_H4\", Const, 0, \"\"},\n\t\t{\"DLT_BLUETOOTH_HCI_H4_WITH_PHDR\", Const, 0, \"\"},\n\t\t{\"DLT_CAN20B\", Const, 0, \"\"},\n\t\t{\"DLT_CAN_SOCKETCAN\", Const, 1, \"\"},\n\t\t{\"DLT_CHAOS\", Const, 0, \"\"},\n\t\t{\"DLT_CHDLC\", Const, 0, \"\"},\n\t\t{\"DLT_CISCO_IOS\", Const, 0, \"\"},\n\t\t{\"DLT_C_HDLC\", Const, 0, \"\"},\n\t\t{\"DLT_C_HDLC_WITH_DIR\", Const, 0, \"\"},\n\t\t{\"DLT_DBUS\", Const, 1, \"\"},\n\t\t{\"DLT_DECT\", Const, 1, \"\"},\n\t\t{\"DLT_DOCSIS\", Const, 0, \"\"},\n\t\t{\"DLT_DVB_CI\", Const, 1, \"\"},\n\t\t{\"DLT_ECONET\", Const, 0, \"\"},\n\t\t{\"DLT_EN10MB\", Const, 0, \"\"},\n\t\t{\"DLT_EN3MB\", Const, 0, \"\"},\n\t\t{\"DLT_ENC\", Const, 0, \"\"},\n\t\t{\"DLT_ERF\", Const, 0, \"\"},\n\t\t{\"DLT_ERF_ETH\", Const, 0, \"\"},\n\t\t{\"DLT_ERF_POS\", Const, 0, \"\"},\n\t\t{\"DLT_FC_2\", Const, 1, \"\"},\n\t\t{\"DLT_FC_2_WITH_FRAME_DELIMS\", Const, 1, \"\"},\n\t\t{\"DLT_FDDI\", Const, 0, \"\"},\n\t\t{\"DLT_FLEXRAY\", Const, 0, \"\"},\n\t\t{\"DLT_FRELAY\", Const, 0, \"\"},\n\t\t{\"DLT_FRELAY_WITH_DIR\", Const, 0, \"\"},\n\t\t{\"DLT_GCOM_SERIAL\", Const, 0, \"\"},\n\t\t{\"DLT_GCOM_T1E1\", Const, 0, \"\"},\n\t\t{\"DLT_GPF_F\", Const, 0, \"\"},\n\t\t{\"DLT_GPF_T\", Const, 0, \"\"},\n\t\t{\"DLT_GPRS_LLC\", Const, 0, \"\"},\n\t\t{\"DLT_GSMTAP_ABIS\", Const, 1, \"\"},\n\t\t{\"DLT_GSMTAP_UM\", Const, 1, \"\"},\n\t\t{\"DLT_HDLC\", Const, 1, \"\"},\n\t\t{\"DLT_HHDLC\", Const, 0, \"\"},\n\t\t{\"DLT_HIPPI\", Const, 1, \"\"},\n\t\t{\"DLT_IBM_SN\", Const, 0, \"\"},\n\t\t{\"DLT_IBM_SP\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_11\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_11_RADIO\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_11_RADIO_AVS\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_15_4\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_15_4_LINUX\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_15_4_NOFCS\", Const, 1, \"\"},\n\t\t{\"DLT_IEEE802_15_4_NONASK_PHY\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_16_MAC_CPS\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_16_MAC_CPS_RADIO\", Const, 0, \"\"},\n\t\t{\"DLT_IPFILTER\", Const, 0, \"\"},\n\t\t{\"DLT_IPMB\", Const, 0, \"\"},\n\t\t{\"DLT_IPMB_LINUX\", Const, 0, \"\"},\n\t\t{\"DLT_IPNET\", Const, 1, \"\"},\n\t\t{\"DLT_IPOIB\", Const, 1, \"\"},\n\t\t{\"DLT_IPV4\", Const, 1, \"\"},\n\t\t{\"DLT_IPV6\", Const, 1, \"\"},\n\t\t{\"DLT_IP_OVER_FC\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_ATM1\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_ATM2\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_ATM_CEMIC\", Const, 1, \"\"},\n\t\t{\"DLT_JUNIPER_CHDLC\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_ES\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_ETHER\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_FIBRECHANNEL\", Const, 1, \"\"},\n\t\t{\"DLT_JUNIPER_FRELAY\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_GGSN\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_ISM\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_MFR\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_MLFR\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_MLPPP\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_MONITOR\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_PIC_PEER\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_PPP\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_PPPOE\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_PPPOE_ATM\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_SERVICES\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_SRX_E2E\", Const, 1, \"\"},\n\t\t{\"DLT_JUNIPER_ST\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_VP\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_VS\", Const, 1, \"\"},\n\t\t{\"DLT_LAPB_WITH_DIR\", Const, 0, \"\"},\n\t\t{\"DLT_LAPD\", Const, 0, \"\"},\n\t\t{\"DLT_LIN\", Const, 0, \"\"},\n\t\t{\"DLT_LINUX_EVDEV\", Const, 1, \"\"},\n\t\t{\"DLT_LINUX_IRDA\", Const, 0, \"\"},\n\t\t{\"DLT_LINUX_LAPD\", Const, 0, \"\"},\n\t\t{\"DLT_LINUX_PPP_WITHDIRECTION\", Const, 0, \"\"},\n\t\t{\"DLT_LINUX_SLL\", Const, 0, \"\"},\n\t\t{\"DLT_LOOP\", Const, 0, \"\"},\n\t\t{\"DLT_LTALK\", Const, 0, \"\"},\n\t\t{\"DLT_MATCHING_MAX\", Const, 1, \"\"},\n\t\t{\"DLT_MATCHING_MIN\", Const, 1, \"\"},\n\t\t{\"DLT_MFR\", Const, 0, \"\"},\n\t\t{\"DLT_MOST\", Const, 0, \"\"},\n\t\t{\"DLT_MPEG_2_TS\", Const, 1, \"\"},\n\t\t{\"DLT_MPLS\", Const, 1, \"\"},\n\t\t{\"DLT_MTP2\", Const, 0, \"\"},\n\t\t{\"DLT_MTP2_WITH_PHDR\", Const, 0, \"\"},\n\t\t{\"DLT_MTP3\", Const, 0, \"\"},\n\t\t{\"DLT_MUX27010\", Const, 1, \"\"},\n\t\t{\"DLT_NETANALYZER\", Const, 1, \"\"},\n\t\t{\"DLT_NETANALYZER_TRANSPARENT\", Const, 1, \"\"},\n\t\t{\"DLT_NFC_LLCP\", Const, 1, \"\"},\n\t\t{\"DLT_NFLOG\", Const, 1, \"\"},\n\t\t{\"DLT_NG40\", Const, 1, \"\"},\n\t\t{\"DLT_NULL\", Const, 0, \"\"},\n\t\t{\"DLT_PCI_EXP\", Const, 0, \"\"},\n\t\t{\"DLT_PFLOG\", Const, 0, \"\"},\n\t\t{\"DLT_PFSYNC\", Const, 0, \"\"},\n\t\t{\"DLT_PPI\", Const, 0, \"\"},\n\t\t{\"DLT_PPP\", Const, 0, \"\"},\n\t\t{\"DLT_PPP_BSDOS\", Const, 0, \"\"},\n\t\t{\"DLT_PPP_ETHER\", Const, 0, \"\"},\n\t\t{\"DLT_PPP_PPPD\", Const, 0, \"\"},\n\t\t{\"DLT_PPP_SERIAL\", Const, 0, \"\"},\n\t\t{\"DLT_PPP_WITH_DIR\", Const, 0, \"\"},\n\t\t{\"DLT_PPP_WITH_DIRECTION\", Const, 0, \"\"},\n\t\t{\"DLT_PRISM_HEADER\", Const, 0, \"\"},\n\t\t{\"DLT_PRONET\", Const, 0, \"\"},\n\t\t{\"DLT_RAIF1\", Const, 0, \"\"},\n\t\t{\"DLT_RAW\", Const, 0, \"\"},\n\t\t{\"DLT_RAWAF_MASK\", Const, 1, \"\"},\n\t\t{\"DLT_RIO\", Const, 0, \"\"},\n\t\t{\"DLT_SCCP\", Const, 0, \"\"},\n\t\t{\"DLT_SITA\", Const, 0, \"\"},\n\t\t{\"DLT_SLIP\", Const, 0, \"\"},\n\t\t{\"DLT_SLIP_BSDOS\", Const, 0, \"\"},\n\t\t{\"DLT_STANAG_5066_D_PDU\", Const, 1, \"\"},\n\t\t{\"DLT_SUNATM\", Const, 0, \"\"},\n\t\t{\"DLT_SYMANTEC_FIREWALL\", Const, 0, \"\"},\n\t\t{\"DLT_TZSP\", Const, 0, \"\"},\n\t\t{\"DLT_USB\", Const, 0, \"\"},\n\t\t{\"DLT_USB_LINUX\", Const, 0, \"\"},\n\t\t{\"DLT_USB_LINUX_MMAPPED\", Const, 1, \"\"},\n\t\t{\"DLT_USER0\", Const, 0, \"\"},\n\t\t{\"DLT_USER1\", Const, 0, \"\"},\n\t\t{\"DLT_USER10\", Const, 0, \"\"},\n\t\t{\"DLT_USER11\", Const, 0, \"\"},\n\t\t{\"DLT_USER12\", Const, 0, \"\"},\n\t\t{\"DLT_USER13\", Const, 0, \"\"},\n\t\t{\"DLT_USER14\", Const, 0, \"\"},\n\t\t{\"DLT_USER15\", Const, 0, \"\"},\n\t\t{\"DLT_USER2\", Const, 0, \"\"},\n\t\t{\"DLT_USER3\", Const, 0, \"\"},\n\t\t{\"DLT_USER4\", Const, 0, \"\"},\n\t\t{\"DLT_USER5\", Const, 0, \"\"},\n\t\t{\"DLT_USER6\", Const, 0, \"\"},\n\t\t{\"DLT_USER7\", Const, 0, \"\"},\n\t\t{\"DLT_USER8\", Const, 0, \"\"},\n\t\t{\"DLT_USER9\", Const, 0, \"\"},\n\t\t{\"DLT_WIHART\", Const, 1, \"\"},\n\t\t{\"DLT_X2E_SERIAL\", Const, 0, \"\"},\n\t\t{\"DLT_X2E_XORAYA\", Const, 0, \"\"},\n\t\t{\"DNSMXData\", Type, 0, \"\"},\n\t\t{\"DNSMXData.NameExchange\", Field, 0, \"\"},\n\t\t{\"DNSMXData.Pad\", Field, 0, \"\"},\n\t\t{\"DNSMXData.Preference\", Field, 0, \"\"},\n\t\t{\"DNSPTRData\", Type, 0, \"\"},\n\t\t{\"DNSPTRData.Host\", Field, 0, \"\"},\n\t\t{\"DNSRecord\", Type, 0, \"\"},\n\t\t{\"DNSRecord.Data\", Field, 0, \"\"},\n\t\t{\"DNSRecord.Dw\", Field, 0, \"\"},\n\t\t{\"DNSRecord.Length\", Field, 0, \"\"},\n\t\t{\"DNSRecord.Name\", Field, 0, \"\"},\n\t\t{\"DNSRecord.Next\", Field, 0, \"\"},\n\t\t{\"DNSRecord.Reserved\", Field, 0, \"\"},\n\t\t{\"DNSRecord.Ttl\", Field, 0, \"\"},\n\t\t{\"DNSRecord.Type\", Field, 0, \"\"},\n\t\t{\"DNSSRVData\", Type, 0, \"\"},\n\t\t{\"DNSSRVData.Pad\", Field, 0, \"\"},\n\t\t{\"DNSSRVData.Port\", Field, 0, \"\"},\n\t\t{\"DNSSRVData.Priority\", Field, 0, \"\"},\n\t\t{\"DNSSRVData.Target\", Field, 0, \"\"},\n\t\t{\"DNSSRVData.Weight\", Field, 0, \"\"},\n\t\t{\"DNSTXTData\", Type, 0, \"\"},\n\t\t{\"DNSTXTData.StringArray\", Field, 0, \"\"},\n\t\t{\"DNSTXTData.StringCount\", Field, 0, \"\"},\n\t\t{\"DNS_INFO_NO_RECORDS\", Const, 4, \"\"},\n\t\t{\"DNS_TYPE_A\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_A6\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_AAAA\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_ADDRS\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_AFSDB\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_ALL\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_ANY\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_ATMA\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_AXFR\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_CERT\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_CNAME\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_DHCID\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_DNAME\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_DNSKEY\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_DS\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_EID\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_GID\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_GPOS\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_HINFO\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_ISDN\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_IXFR\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_KEY\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_KX\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_LOC\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MAILA\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MAILB\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MB\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MD\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MF\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MG\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MINFO\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MR\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MX\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NAPTR\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NBSTAT\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NIMLOC\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NS\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NSAP\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NSAPPTR\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NSEC\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NULL\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NXT\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_OPT\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_PTR\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_PX\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_RP\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_RRSIG\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_RT\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_SIG\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_SINK\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_SOA\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_SRV\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_TEXT\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_TKEY\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_TSIG\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_UID\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_UINFO\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_UNSPEC\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_WINS\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_WINSR\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_WKS\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_X25\", Const, 0, \"\"},\n\t\t{\"DT_BLK\", Const, 0, \"\"},\n\t\t{\"DT_CHR\", Const, 0, \"\"},\n\t\t{\"DT_DIR\", Const, 0, \"\"},\n\t\t{\"DT_FIFO\", Const, 0, \"\"},\n\t\t{\"DT_LNK\", Const, 0, \"\"},\n\t\t{\"DT_REG\", Const, 0, \"\"},\n\t\t{\"DT_SOCK\", Const, 0, \"\"},\n\t\t{\"DT_UNKNOWN\", Const, 0, \"\"},\n\t\t{\"DT_WHT\", Const, 0, \"\"},\n\t\t{\"DUPLICATE_CLOSE_SOURCE\", Const, 0, \"\"},\n\t\t{\"DUPLICATE_SAME_ACCESS\", Const, 0, \"\"},\n\t\t{\"DeleteFile\", Func, 0, \"\"},\n\t\t{\"DetachLsf\", Func, 0, \"func(fd int) error\"},\n\t\t{\"DeviceIoControl\", Func, 4, \"\"},\n\t\t{\"Dirent\", Type, 0, \"\"},\n\t\t{\"Dirent.Fileno\", Field, 0, \"\"},\n\t\t{\"Dirent.Ino\", Field, 0, \"\"},\n\t\t{\"Dirent.Name\", Field, 0, \"\"},\n\t\t{\"Dirent.Namlen\", Field, 0, \"\"},\n\t\t{\"Dirent.Off\", Field, 0, \"\"},\n\t\t{\"Dirent.Pad0\", Field, 12, \"\"},\n\t\t{\"Dirent.Pad1\", Field, 12, \"\"},\n\t\t{\"Dirent.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Dirent.Reclen\", Field, 0, \"\"},\n\t\t{\"Dirent.Seekoff\", Field, 0, \"\"},\n\t\t{\"Dirent.Type\", Field, 0, \"\"},\n\t\t{\"Dirent.X__d_padding\", Field, 3, \"\"},\n\t\t{\"DnsNameCompare\", Func, 4, \"\"},\n\t\t{\"DnsQuery\", Func, 0, \"\"},\n\t\t{\"DnsRecordListFree\", Func, 0, \"\"},\n\t\t{\"DnsSectionAdditional\", Const, 4, \"\"},\n\t\t{\"DnsSectionAnswer\", Const, 4, \"\"},\n\t\t{\"DnsSectionAuthority\", Const, 4, \"\"},\n\t\t{\"DnsSectionQuestion\", Const, 4, \"\"},\n\t\t{\"Dup\", Func, 0, \"func(oldfd int) (fd int, err error)\"},\n\t\t{\"Dup2\", Func, 0, \"func(oldfd int, newfd int) (err error)\"},\n\t\t{\"Dup3\", Func, 2, \"func(oldfd int, newfd int, flags int) (err error)\"},\n\t\t{\"DuplicateHandle\", Func, 0, \"\"},\n\t\t{\"E2BIG\", Const, 0, \"\"},\n\t\t{\"EACCES\", Const, 0, \"\"},\n\t\t{\"EADDRINUSE\", Const, 0, \"\"},\n\t\t{\"EADDRNOTAVAIL\", Const, 0, \"\"},\n\t\t{\"EADV\", Const, 0, \"\"},\n\t\t{\"EAFNOSUPPORT\", Const, 0, \"\"},\n\t\t{\"EAGAIN\", Const, 0, \"\"},\n\t\t{\"EALREADY\", Const, 0, \"\"},\n\t\t{\"EAUTH\", Const, 0, \"\"},\n\t\t{\"EBADARCH\", Const, 0, \"\"},\n\t\t{\"EBADE\", Const, 0, \"\"},\n\t\t{\"EBADEXEC\", Const, 0, \"\"},\n\t\t{\"EBADF\", Const, 0, \"\"},\n\t\t{\"EBADFD\", Const, 0, \"\"},\n\t\t{\"EBADMACHO\", Const, 0, \"\"},\n\t\t{\"EBADMSG\", Const, 0, \"\"},\n\t\t{\"EBADR\", Const, 0, \"\"},\n\t\t{\"EBADRPC\", Const, 0, \"\"},\n\t\t{\"EBADRQC\", Const, 0, \"\"},\n\t\t{\"EBADSLT\", Const, 0, \"\"},\n\t\t{\"EBFONT\", Const, 0, \"\"},\n\t\t{\"EBUSY\", Const, 0, \"\"},\n\t\t{\"ECANCELED\", Const, 0, \"\"},\n\t\t{\"ECAPMODE\", Const, 1, \"\"},\n\t\t{\"ECHILD\", Const, 0, \"\"},\n\t\t{\"ECHO\", Const, 0, \"\"},\n\t\t{\"ECHOCTL\", Const, 0, \"\"},\n\t\t{\"ECHOE\", Const, 0, \"\"},\n\t\t{\"ECHOK\", Const, 0, \"\"},\n\t\t{\"ECHOKE\", Const, 0, \"\"},\n\t\t{\"ECHONL\", Const, 0, \"\"},\n\t\t{\"ECHOPRT\", Const, 0, \"\"},\n\t\t{\"ECHRNG\", Const, 0, \"\"},\n\t\t{\"ECOMM\", Const, 0, \"\"},\n\t\t{\"ECONNABORTED\", Const, 0, \"\"},\n\t\t{\"ECONNREFUSED\", Const, 0, \"\"},\n\t\t{\"ECONNRESET\", Const, 0, \"\"},\n\t\t{\"EDEADLK\", Const, 0, \"\"},\n\t\t{\"EDEADLOCK\", Const, 0, \"\"},\n\t\t{\"EDESTADDRREQ\", Const, 0, \"\"},\n\t\t{\"EDEVERR\", Const, 0, \"\"},\n\t\t{\"EDOM\", Const, 0, \"\"},\n\t\t{\"EDOOFUS\", Const, 0, \"\"},\n\t\t{\"EDOTDOT\", Const, 0, \"\"},\n\t\t{\"EDQUOT\", Const, 0, \"\"},\n\t\t{\"EEXIST\", Const, 0, \"\"},\n\t\t{\"EFAULT\", Const, 0, \"\"},\n\t\t{\"EFBIG\", Const, 0, \"\"},\n\t\t{\"EFER_LMA\", Const, 1, \"\"},\n\t\t{\"EFER_LME\", Const, 1, \"\"},\n\t\t{\"EFER_NXE\", Const, 1, \"\"},\n\t\t{\"EFER_SCE\", Const, 1, \"\"},\n\t\t{\"EFTYPE\", Const, 0, \"\"},\n\t\t{\"EHOSTDOWN\", Const, 0, \"\"},\n\t\t{\"EHOSTUNREACH\", Const, 0, \"\"},\n\t\t{\"EHWPOISON\", Const, 0, \"\"},\n\t\t{\"EIDRM\", Const, 0, \"\"},\n\t\t{\"EILSEQ\", Const, 0, \"\"},\n\t\t{\"EINPROGRESS\", Const, 0, \"\"},\n\t\t{\"EINTR\", Const, 0, \"\"},\n\t\t{\"EINVAL\", Const, 0, \"\"},\n\t\t{\"EIO\", Const, 0, \"\"},\n\t\t{\"EIPSEC\", Const, 1, \"\"},\n\t\t{\"EISCONN\", Const, 0, \"\"},\n\t\t{\"EISDIR\", Const, 0, \"\"},\n\t\t{\"EISNAM\", Const, 0, \"\"},\n\t\t{\"EKEYEXPIRED\", Const, 0, \"\"},\n\t\t{\"EKEYREJECTED\", Const, 0, \"\"},\n\t\t{\"EKEYREVOKED\", Const, 0, \"\"},\n\t\t{\"EL2HLT\", Const, 0, \"\"},\n\t\t{\"EL2NSYNC\", Const, 0, \"\"},\n\t\t{\"EL3HLT\", Const, 0, \"\"},\n\t\t{\"EL3RST\", Const, 0, \"\"},\n\t\t{\"ELAST\", Const, 0, \"\"},\n\t\t{\"ELF_NGREG\", Const, 0, \"\"},\n\t\t{\"ELF_PRARGSZ\", Const, 0, \"\"},\n\t\t{\"ELIBACC\", Const, 0, \"\"},\n\t\t{\"ELIBBAD\", Const, 0, \"\"},\n\t\t{\"ELIBEXEC\", Const, 0, \"\"},\n\t\t{\"ELIBMAX\", Const, 0, \"\"},\n\t\t{\"ELIBSCN\", Const, 0, \"\"},\n\t\t{\"ELNRNG\", Const, 0, \"\"},\n\t\t{\"ELOOP\", Const, 0, \"\"},\n\t\t{\"EMEDIUMTYPE\", Const, 0, \"\"},\n\t\t{\"EMFILE\", Const, 0, \"\"},\n\t\t{\"EMLINK\", Const, 0, \"\"},\n\t\t{\"EMSGSIZE\", Const, 0, \"\"},\n\t\t{\"EMT_TAGOVF\", Const, 1, \"\"},\n\t\t{\"EMULTIHOP\", Const, 0, \"\"},\n\t\t{\"EMUL_ENABLED\", Const, 1, \"\"},\n\t\t{\"EMUL_LINUX\", Const, 1, \"\"},\n\t\t{\"EMUL_LINUX32\", Const, 1, \"\"},\n\t\t{\"EMUL_MAXID\", Const, 1, \"\"},\n\t\t{\"EMUL_NATIVE\", Const, 1, \"\"},\n\t\t{\"ENAMETOOLONG\", Const, 0, \"\"},\n\t\t{\"ENAVAIL\", Const, 0, \"\"},\n\t\t{\"ENDRUNDISC\", Const, 1, \"\"},\n\t\t{\"ENEEDAUTH\", Const, 0, \"\"},\n\t\t{\"ENETDOWN\", Const, 0, \"\"},\n\t\t{\"ENETRESET\", Const, 0, \"\"},\n\t\t{\"ENETUNREACH\", Const, 0, \"\"},\n\t\t{\"ENFILE\", Const, 0, \"\"},\n\t\t{\"ENOANO\", Const, 0, \"\"},\n\t\t{\"ENOATTR\", Const, 0, \"\"},\n\t\t{\"ENOBUFS\", Const, 0, \"\"},\n\t\t{\"ENOCSI\", Const, 0, \"\"},\n\t\t{\"ENODATA\", Const, 0, \"\"},\n\t\t{\"ENODEV\", Const, 0, \"\"},\n\t\t{\"ENOENT\", Const, 0, \"\"},\n\t\t{\"ENOEXEC\", Const, 0, \"\"},\n\t\t{\"ENOKEY\", Const, 0, \"\"},\n\t\t{\"ENOLCK\", Const, 0, \"\"},\n\t\t{\"ENOLINK\", Const, 0, \"\"},\n\t\t{\"ENOMEDIUM\", Const, 0, \"\"},\n\t\t{\"ENOMEM\", Const, 0, \"\"},\n\t\t{\"ENOMSG\", Const, 0, \"\"},\n\t\t{\"ENONET\", Const, 0, \"\"},\n\t\t{\"ENOPKG\", Const, 0, \"\"},\n\t\t{\"ENOPOLICY\", Const, 0, \"\"},\n\t\t{\"ENOPROTOOPT\", Const, 0, \"\"},\n\t\t{\"ENOSPC\", Const, 0, \"\"},\n\t\t{\"ENOSR\", Const, 0, \"\"},\n\t\t{\"ENOSTR\", Const, 0, \"\"},\n\t\t{\"ENOSYS\", Const, 0, \"\"},\n\t\t{\"ENOTBLK\", Const, 0, \"\"},\n\t\t{\"ENOTCAPABLE\", Const, 0, \"\"},\n\t\t{\"ENOTCONN\", Const, 0, \"\"},\n\t\t{\"ENOTDIR\", Const, 0, \"\"},\n\t\t{\"ENOTEMPTY\", Const, 0, \"\"},\n\t\t{\"ENOTNAM\", Const, 0, \"\"},\n\t\t{\"ENOTRECOVERABLE\", Const, 0, \"\"},\n\t\t{\"ENOTSOCK\", Const, 0, \"\"},\n\t\t{\"ENOTSUP\", Const, 0, \"\"},\n\t\t{\"ENOTTY\", Const, 0, \"\"},\n\t\t{\"ENOTUNIQ\", Const, 0, \"\"},\n\t\t{\"ENXIO\", Const, 0, \"\"},\n\t\t{\"EN_SW_CTL_INF\", Const, 1, \"\"},\n\t\t{\"EN_SW_CTL_PREC\", Const, 1, \"\"},\n\t\t{\"EN_SW_CTL_ROUND\", Const, 1, \"\"},\n\t\t{\"EN_SW_DATACHAIN\", Const, 1, \"\"},\n\t\t{\"EN_SW_DENORM\", Const, 1, \"\"},\n\t\t{\"EN_SW_INVOP\", Const, 1, \"\"},\n\t\t{\"EN_SW_OVERFLOW\", Const, 1, \"\"},\n\t\t{\"EN_SW_PRECLOSS\", Const, 1, \"\"},\n\t\t{\"EN_SW_UNDERFLOW\", Const, 1, \"\"},\n\t\t{\"EN_SW_ZERODIV\", Const, 1, \"\"},\n\t\t{\"EOPNOTSUPP\", Const, 0, \"\"},\n\t\t{\"EOVERFLOW\", Const, 0, \"\"},\n\t\t{\"EOWNERDEAD\", Const, 0, \"\"},\n\t\t{\"EPERM\", Const, 0, \"\"},\n\t\t{\"EPFNOSUPPORT\", Const, 0, \"\"},\n\t\t{\"EPIPE\", Const, 0, \"\"},\n\t\t{\"EPOLLERR\", Const, 0, \"\"},\n\t\t{\"EPOLLET\", Const, 0, \"\"},\n\t\t{\"EPOLLHUP\", Const, 0, \"\"},\n\t\t{\"EPOLLIN\", Const, 0, \"\"},\n\t\t{\"EPOLLMSG\", Const, 0, \"\"},\n\t\t{\"EPOLLONESHOT\", Const, 0, \"\"},\n\t\t{\"EPOLLOUT\", Const, 0, \"\"},\n\t\t{\"EPOLLPRI\", Const, 0, \"\"},\n\t\t{\"EPOLLRDBAND\", Const, 0, \"\"},\n\t\t{\"EPOLLRDHUP\", Const, 0, \"\"},\n\t\t{\"EPOLLRDNORM\", Const, 0, \"\"},\n\t\t{\"EPOLLWRBAND\", Const, 0, \"\"},\n\t\t{\"EPOLLWRNORM\", Const, 0, \"\"},\n\t\t{\"EPOLL_CLOEXEC\", Const, 0, \"\"},\n\t\t{\"EPOLL_CTL_ADD\", Const, 0, \"\"},\n\t\t{\"EPOLL_CTL_DEL\", Const, 0, \"\"},\n\t\t{\"EPOLL_CTL_MOD\", Const, 0, \"\"},\n\t\t{\"EPOLL_NONBLOCK\", Const, 0, \"\"},\n\t\t{\"EPROCLIM\", Const, 0, \"\"},\n\t\t{\"EPROCUNAVAIL\", Const, 0, \"\"},\n\t\t{\"EPROGMISMATCH\", Const, 0, \"\"},\n\t\t{\"EPROGUNAVAIL\", Const, 0, \"\"},\n\t\t{\"EPROTO\", Const, 0, \"\"},\n\t\t{\"EPROTONOSUPPORT\", Const, 0, \"\"},\n\t\t{\"EPROTOTYPE\", Const, 0, \"\"},\n\t\t{\"EPWROFF\", Const, 0, \"\"},\n\t\t{\"EQFULL\", Const, 16, \"\"},\n\t\t{\"ERANGE\", Const, 0, \"\"},\n\t\t{\"EREMCHG\", Const, 0, \"\"},\n\t\t{\"EREMOTE\", Const, 0, \"\"},\n\t\t{\"EREMOTEIO\", Const, 0, \"\"},\n\t\t{\"ERESTART\", Const, 0, \"\"},\n\t\t{\"ERFKILL\", Const, 0, \"\"},\n\t\t{\"EROFS\", Const, 0, \"\"},\n\t\t{\"ERPCMISMATCH\", Const, 0, \"\"},\n\t\t{\"ERROR_ACCESS_DENIED\", Const, 0, \"\"},\n\t\t{\"ERROR_ALREADY_EXISTS\", Const, 0, \"\"},\n\t\t{\"ERROR_BROKEN_PIPE\", Const, 0, \"\"},\n\t\t{\"ERROR_BUFFER_OVERFLOW\", Const, 0, \"\"},\n\t\t{\"ERROR_DIR_NOT_EMPTY\", Const, 8, \"\"},\n\t\t{\"ERROR_ENVVAR_NOT_FOUND\", Const, 0, \"\"},\n\t\t{\"ERROR_FILE_EXISTS\", Const, 0, \"\"},\n\t\t{\"ERROR_FILE_NOT_FOUND\", Const, 0, \"\"},\n\t\t{\"ERROR_HANDLE_EOF\", Const, 2, \"\"},\n\t\t{\"ERROR_INSUFFICIENT_BUFFER\", Const, 0, \"\"},\n\t\t{\"ERROR_IO_PENDING\", Const, 0, \"\"},\n\t\t{\"ERROR_MOD_NOT_FOUND\", Const, 0, \"\"},\n\t\t{\"ERROR_MORE_DATA\", Const, 3, \"\"},\n\t\t{\"ERROR_NETNAME_DELETED\", Const, 3, \"\"},\n\t\t{\"ERROR_NOT_FOUND\", Const, 1, \"\"},\n\t\t{\"ERROR_NO_MORE_FILES\", Const, 0, \"\"},\n\t\t{\"ERROR_OPERATION_ABORTED\", Const, 0, \"\"},\n\t\t{\"ERROR_PATH_NOT_FOUND\", Const, 0, \"\"},\n\t\t{\"ERROR_PRIVILEGE_NOT_HELD\", Const, 4, \"\"},\n\t\t{\"ERROR_PROC_NOT_FOUND\", Const, 0, \"\"},\n\t\t{\"ESHLIBVERS\", Const, 0, \"\"},\n\t\t{\"ESHUTDOWN\", Const, 0, \"\"},\n\t\t{\"ESOCKTNOSUPPORT\", Const, 0, \"\"},\n\t\t{\"ESPIPE\", Const, 0, \"\"},\n\t\t{\"ESRCH\", Const, 0, \"\"},\n\t\t{\"ESRMNT\", Const, 0, \"\"},\n\t\t{\"ESTALE\", Const, 0, \"\"},\n\t\t{\"ESTRPIPE\", Const, 0, \"\"},\n\t\t{\"ETHERCAP_JUMBO_MTU\", Const, 1, \"\"},\n\t\t{\"ETHERCAP_VLAN_HWTAGGING\", Const, 1, \"\"},\n\t\t{\"ETHERCAP_VLAN_MTU\", Const, 1, \"\"},\n\t\t{\"ETHERMIN\", Const, 1, \"\"},\n\t\t{\"ETHERMTU\", Const, 1, \"\"},\n\t\t{\"ETHERMTU_JUMBO\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_8023\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AARP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ACCTON\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AEONIC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ALPHA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AMBER\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AMOEBA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AOE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_APOLLO\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_APOLLODOMAIN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_APPLETALK\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_APPLITEK\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ARGONAUT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ARP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ATALK\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ATOMIC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ATT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ATTSTANFORD\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AUTOPHON\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AXIS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_BCLOOP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_BOFL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_CABLETRON\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_CHAOS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_COMDESIGN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_COMPUGRAPHIC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_COUNTERPOINT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_CRONUS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_CRONUSVLN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DCA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DDE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DEBNI\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECAM\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECCUST\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECDIAG\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECDNS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECDTS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECEXPER\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECLAST\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECLTM\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECMUMPS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECNETBIOS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DELTACON\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DIDDLE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DLOG1\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DLOG2\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DOGFIGHT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DSMD\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ECMA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ENCRYPT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ES\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_EXCELAN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_EXPERDATA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_FLIP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_FLOWCONTROL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_FRARP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_GENDYN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_HAYES\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_HIPPI_FP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_HITACHI\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_HP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IEEEPUP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IEEEPUPAT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IMLBL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IMLBLDIAG\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IPAS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IPV6\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IPX\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IPXNEW\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_KALPANA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LANBRIDGE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LANPROBE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LAT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LBACK\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LITTLE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LLDP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LOGICRAFT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LOOPBACK\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MATRA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MAX\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MERIT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MICP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MOPDL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MOPRC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MOTOROLA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MPLS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MPLS_MCAST\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MUMPS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPCC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPCLAIM\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPCLREQ\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPCLRSP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPCREQ\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPCRSP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPDG\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPDGB\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPDLTE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPRAR\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPRAS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPRST\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPSCD\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPVCD\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NCD\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NESTAR\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NETBEUI\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NOVELL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NSAT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NSCOMPAT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NTRAILER\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_OS9\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_OS9NET\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PACER\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PAE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PCS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PLANNING\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PPP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PPPOE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PPPOEDISC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PRIMENTS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PUP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PUPAT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_QINQ\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_RACAL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_RATIONAL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_RAWFR\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_RCL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_RDP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_RETIX\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_REVARP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SCA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SECTRA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SECUREDATA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SGITW\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SG_BOUNCE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SG_DIAG\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SG_NETGAMES\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SG_RESV\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SIMNET\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SLOW\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SLOWPROTOCOLS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SNA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SNMP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SONIX\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SPIDER\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SPRITE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_STP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TALARIS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TALARISMC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TCPCOMP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TCPSM\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TEC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TIGAN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TRAIL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TRANSETHER\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TYMSHARE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_UBBST\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_UBDEBUG\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_UBDIAGLOOP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_UBDL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_UBNIU\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_UBNMC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VALID\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VARIAN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VAXELN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VEECO\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VEXP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VGLAB\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VINES\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VINESECHO\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VINESLOOP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VITAL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VLAN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VLTLMAN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VPROD\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VURESERVED\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_WATERLOO\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_WELLFLEET\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_X25\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_X75\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_XNSSM\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_XTP\", Const, 1, \"\"},\n\t\t{\"ETHER_ADDR_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_ALIGN\", Const, 1, \"\"},\n\t\t{\"ETHER_CRC_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_CRC_POLY_BE\", Const, 1, \"\"},\n\t\t{\"ETHER_CRC_POLY_LE\", Const, 1, \"\"},\n\t\t{\"ETHER_HDR_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_MAX_DIX_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_MAX_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_MAX_LEN_JUMBO\", Const, 1, \"\"},\n\t\t{\"ETHER_MIN_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_PPPOE_ENCAP_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_TYPE_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_VLAN_ENCAP_LEN\", Const, 1, \"\"},\n\t\t{\"ETH_P_1588\", Const, 0, \"\"},\n\t\t{\"ETH_P_8021Q\", Const, 0, \"\"},\n\t\t{\"ETH_P_802_2\", Const, 0, \"\"},\n\t\t{\"ETH_P_802_3\", Const, 0, \"\"},\n\t\t{\"ETH_P_AARP\", Const, 0, \"\"},\n\t\t{\"ETH_P_ALL\", Const, 0, \"\"},\n\t\t{\"ETH_P_AOE\", Const, 0, \"\"},\n\t\t{\"ETH_P_ARCNET\", Const, 0, \"\"},\n\t\t{\"ETH_P_ARP\", Const, 0, \"\"},\n\t\t{\"ETH_P_ATALK\", Const, 0, \"\"},\n\t\t{\"ETH_P_ATMFATE\", Const, 0, \"\"},\n\t\t{\"ETH_P_ATMMPOA\", Const, 0, \"\"},\n\t\t{\"ETH_P_AX25\", Const, 0, \"\"},\n\t\t{\"ETH_P_BPQ\", Const, 0, \"\"},\n\t\t{\"ETH_P_CAIF\", Const, 0, \"\"},\n\t\t{\"ETH_P_CAN\", Const, 0, \"\"},\n\t\t{\"ETH_P_CONTROL\", Const, 0, \"\"},\n\t\t{\"ETH_P_CUST\", Const, 0, \"\"},\n\t\t{\"ETH_P_DDCMP\", Const, 0, \"\"},\n\t\t{\"ETH_P_DEC\", Const, 0, \"\"},\n\t\t{\"ETH_P_DIAG\", Const, 0, \"\"},\n\t\t{\"ETH_P_DNA_DL\", Const, 0, \"\"},\n\t\t{\"ETH_P_DNA_RC\", Const, 0, \"\"},\n\t\t{\"ETH_P_DNA_RT\", Const, 0, \"\"},\n\t\t{\"ETH_P_DSA\", Const, 0, \"\"},\n\t\t{\"ETH_P_ECONET\", Const, 0, \"\"},\n\t\t{\"ETH_P_EDSA\", Const, 0, \"\"},\n\t\t{\"ETH_P_FCOE\", Const, 0, \"\"},\n\t\t{\"ETH_P_FIP\", Const, 0, \"\"},\n\t\t{\"ETH_P_HDLC\", Const, 0, \"\"},\n\t\t{\"ETH_P_IEEE802154\", Const, 0, \"\"},\n\t\t{\"ETH_P_IEEEPUP\", Const, 0, \"\"},\n\t\t{\"ETH_P_IEEEPUPAT\", Const, 0, \"\"},\n\t\t{\"ETH_P_IP\", Const, 0, \"\"},\n\t\t{\"ETH_P_IPV6\", Const, 0, \"\"},\n\t\t{\"ETH_P_IPX\", Const, 0, \"\"},\n\t\t{\"ETH_P_IRDA\", Const, 0, \"\"},\n\t\t{\"ETH_P_LAT\", Const, 0, \"\"},\n\t\t{\"ETH_P_LINK_CTL\", Const, 0, \"\"},\n\t\t{\"ETH_P_LOCALTALK\", Const, 0, \"\"},\n\t\t{\"ETH_P_LOOP\", Const, 0, \"\"},\n\t\t{\"ETH_P_MOBITEX\", Const, 0, \"\"},\n\t\t{\"ETH_P_MPLS_MC\", Const, 0, \"\"},\n\t\t{\"ETH_P_MPLS_UC\", Const, 0, \"\"},\n\t\t{\"ETH_P_PAE\", Const, 0, \"\"},\n\t\t{\"ETH_P_PAUSE\", Const, 0, \"\"},\n\t\t{\"ETH_P_PHONET\", Const, 0, \"\"},\n\t\t{\"ETH_P_PPPTALK\", Const, 0, \"\"},\n\t\t{\"ETH_P_PPP_DISC\", Const, 0, \"\"},\n\t\t{\"ETH_P_PPP_MP\", Const, 0, \"\"},\n\t\t{\"ETH_P_PPP_SES\", Const, 0, \"\"},\n\t\t{\"ETH_P_PUP\", Const, 0, \"\"},\n\t\t{\"ETH_P_PUPAT\", Const, 0, \"\"},\n\t\t{\"ETH_P_RARP\", Const, 0, \"\"},\n\t\t{\"ETH_P_SCA\", Const, 0, \"\"},\n\t\t{\"ETH_P_SLOW\", Const, 0, \"\"},\n\t\t{\"ETH_P_SNAP\", Const, 0, \"\"},\n\t\t{\"ETH_P_TEB\", Const, 0, \"\"},\n\t\t{\"ETH_P_TIPC\", Const, 0, \"\"},\n\t\t{\"ETH_P_TRAILER\", Const, 0, \"\"},\n\t\t{\"ETH_P_TR_802_2\", Const, 0, \"\"},\n\t\t{\"ETH_P_WAN_PPP\", Const, 0, \"\"},\n\t\t{\"ETH_P_WCCP\", Const, 0, \"\"},\n\t\t{\"ETH_P_X25\", Const, 0, \"\"},\n\t\t{\"ETIME\", Const, 0, \"\"},\n\t\t{\"ETIMEDOUT\", Const, 0, \"\"},\n\t\t{\"ETOOMANYREFS\", Const, 0, \"\"},\n\t\t{\"ETXTBSY\", Const, 0, \"\"},\n\t\t{\"EUCLEAN\", Const, 0, \"\"},\n\t\t{\"EUNATCH\", Const, 0, \"\"},\n\t\t{\"EUSERS\", Const, 0, \"\"},\n\t\t{\"EVFILT_AIO\", Const, 0, \"\"},\n\t\t{\"EVFILT_FS\", Const, 0, \"\"},\n\t\t{\"EVFILT_LIO\", Const, 0, \"\"},\n\t\t{\"EVFILT_MACHPORT\", Const, 0, \"\"},\n\t\t{\"EVFILT_PROC\", Const, 0, \"\"},\n\t\t{\"EVFILT_READ\", Const, 0, \"\"},\n\t\t{\"EVFILT_SIGNAL\", Const, 0, \"\"},\n\t\t{\"EVFILT_SYSCOUNT\", Const, 0, \"\"},\n\t\t{\"EVFILT_THREADMARKER\", Const, 0, \"\"},\n\t\t{\"EVFILT_TIMER\", Const, 0, \"\"},\n\t\t{\"EVFILT_USER\", Const, 0, \"\"},\n\t\t{\"EVFILT_VM\", Const, 0, \"\"},\n\t\t{\"EVFILT_VNODE\", Const, 0, \"\"},\n\t\t{\"EVFILT_WRITE\", Const, 0, \"\"},\n\t\t{\"EV_ADD\", Const, 0, \"\"},\n\t\t{\"EV_CLEAR\", Const, 0, \"\"},\n\t\t{\"EV_DELETE\", Const, 0, \"\"},\n\t\t{\"EV_DISABLE\", Const, 0, \"\"},\n\t\t{\"EV_DISPATCH\", Const, 0, \"\"},\n\t\t{\"EV_DROP\", Const, 3, \"\"},\n\t\t{\"EV_ENABLE\", Const, 0, \"\"},\n\t\t{\"EV_EOF\", Const, 0, \"\"},\n\t\t{\"EV_ERROR\", Const, 0, \"\"},\n\t\t{\"EV_FLAG0\", Const, 0, \"\"},\n\t\t{\"EV_FLAG1\", Const, 0, \"\"},\n\t\t{\"EV_ONESHOT\", Const, 0, \"\"},\n\t\t{\"EV_OOBAND\", Const, 0, \"\"},\n\t\t{\"EV_POLL\", Const, 0, \"\"},\n\t\t{\"EV_RECEIPT\", Const, 0, \"\"},\n\t\t{\"EV_SYSFLAGS\", Const, 0, \"\"},\n\t\t{\"EWINDOWS\", Const, 0, \"\"},\n\t\t{\"EWOULDBLOCK\", Const, 0, \"\"},\n\t\t{\"EXDEV\", Const, 0, \"\"},\n\t\t{\"EXFULL\", Const, 0, \"\"},\n\t\t{\"EXTA\", Const, 0, \"\"},\n\t\t{\"EXTB\", Const, 0, \"\"},\n\t\t{\"EXTPROC\", Const, 0, \"\"},\n\t\t{\"Environ\", Func, 0, \"func() []string\"},\n\t\t{\"EpollCreate\", Func, 0, \"func(size int) (fd int, err error)\"},\n\t\t{\"EpollCreate1\", Func, 0, \"func(flag int) (fd int, err error)\"},\n\t\t{\"EpollCtl\", Func, 0, \"func(epfd int, op int, fd int, event *EpollEvent) (err error)\"},\n\t\t{\"EpollEvent\", Type, 0, \"\"},\n\t\t{\"EpollEvent.Events\", Field, 0, \"\"},\n\t\t{\"EpollEvent.Fd\", Field, 0, \"\"},\n\t\t{\"EpollEvent.Pad\", Field, 0, \"\"},\n\t\t{\"EpollEvent.PadFd\", Field, 0, \"\"},\n\t\t{\"EpollWait\", Func, 0, \"func(epfd int, events []EpollEvent, msec int) (n int, err error)\"},\n\t\t{\"Errno\", Type, 0, \"\"},\n\t\t{\"EscapeArg\", Func, 0, \"\"},\n\t\t{\"Exchangedata\", Func, 0, \"\"},\n\t\t{\"Exec\", Func, 0, \"func(argv0 string, argv []string, envv []string) (err error)\"},\n\t\t{\"Exit\", Func, 0, \"func(code int)\"},\n\t\t{\"ExitProcess\", Func, 0, \"\"},\n\t\t{\"FD_CLOEXEC\", Const, 0, \"\"},\n\t\t{\"FD_SETSIZE\", Const, 0, \"\"},\n\t\t{\"FILE_ACTION_ADDED\", Const, 0, \"\"},\n\t\t{\"FILE_ACTION_MODIFIED\", Const, 0, \"\"},\n\t\t{\"FILE_ACTION_REMOVED\", Const, 0, \"\"},\n\t\t{\"FILE_ACTION_RENAMED_NEW_NAME\", Const, 0, \"\"},\n\t\t{\"FILE_ACTION_RENAMED_OLD_NAME\", Const, 0, \"\"},\n\t\t{\"FILE_APPEND_DATA\", Const, 0, \"\"},\n\t\t{\"FILE_ATTRIBUTE_ARCHIVE\", Const, 0, \"\"},\n\t\t{\"FILE_ATTRIBUTE_DIRECTORY\", Const, 0, \"\"},\n\t\t{\"FILE_ATTRIBUTE_HIDDEN\", Const, 0, \"\"},\n\t\t{\"FILE_ATTRIBUTE_NORMAL\", Const, 0, \"\"},\n\t\t{\"FILE_ATTRIBUTE_READONLY\", Const, 0, \"\"},\n\t\t{\"FILE_ATTRIBUTE_REPARSE_POINT\", Const, 4, \"\"},\n\t\t{\"FILE_ATTRIBUTE_SYSTEM\", Const, 0, \"\"},\n\t\t{\"FILE_BEGIN\", Const, 0, \"\"},\n\t\t{\"FILE_CURRENT\", Const, 0, \"\"},\n\t\t{\"FILE_END\", Const, 0, \"\"},\n\t\t{\"FILE_FLAG_BACKUP_SEMANTICS\", Const, 0, \"\"},\n\t\t{\"FILE_FLAG_OPEN_REPARSE_POINT\", Const, 4, \"\"},\n\t\t{\"FILE_FLAG_OVERLAPPED\", Const, 0, \"\"},\n\t\t{\"FILE_LIST_DIRECTORY\", Const, 0, \"\"},\n\t\t{\"FILE_MAP_COPY\", Const, 0, \"\"},\n\t\t{\"FILE_MAP_EXECUTE\", Const, 0, \"\"},\n\t\t{\"FILE_MAP_READ\", Const, 0, \"\"},\n\t\t{\"FILE_MAP_WRITE\", Const, 0, \"\"},\n\t\t{\"FILE_NOTIFY_CHANGE_ATTRIBUTES\", Const, 0, \"\"},\n\t\t{\"FILE_NOTIFY_CHANGE_CREATION\", Const, 0, \"\"},\n\t\t{\"FILE_NOTIFY_CHANGE_DIR_NAME\", Const, 0, \"\"},\n\t\t{\"FILE_NOTIFY_CHANGE_FILE_NAME\", Const, 0, \"\"},\n\t\t{\"FILE_NOTIFY_CHANGE_LAST_ACCESS\", Const, 0, \"\"},\n\t\t{\"FILE_NOTIFY_CHANGE_LAST_WRITE\", Const, 0, \"\"},\n\t\t{\"FILE_NOTIFY_CHANGE_SIZE\", Const, 0, \"\"},\n\t\t{\"FILE_SHARE_DELETE\", Const, 0, \"\"},\n\t\t{\"FILE_SHARE_READ\", Const, 0, \"\"},\n\t\t{\"FILE_SHARE_WRITE\", Const, 0, \"\"},\n\t\t{\"FILE_SKIP_COMPLETION_PORT_ON_SUCCESS\", Const, 2, \"\"},\n\t\t{\"FILE_SKIP_SET_EVENT_ON_HANDLE\", Const, 2, \"\"},\n\t\t{\"FILE_TYPE_CHAR\", Const, 0, \"\"},\n\t\t{\"FILE_TYPE_DISK\", Const, 0, \"\"},\n\t\t{\"FILE_TYPE_PIPE\", Const, 0, \"\"},\n\t\t{\"FILE_TYPE_REMOTE\", Const, 0, \"\"},\n\t\t{\"FILE_TYPE_UNKNOWN\", Const, 0, \"\"},\n\t\t{\"FILE_WRITE_ATTRIBUTES\", Const, 0, \"\"},\n\t\t{\"FLUSHO\", Const, 0, \"\"},\n\t\t{\"FORMAT_MESSAGE_ALLOCATE_BUFFER\", Const, 0, \"\"},\n\t\t{\"FORMAT_MESSAGE_ARGUMENT_ARRAY\", Const, 0, \"\"},\n\t\t{\"FORMAT_MESSAGE_FROM_HMODULE\", Const, 0, \"\"},\n\t\t{\"FORMAT_MESSAGE_FROM_STRING\", Const, 0, \"\"},\n\t\t{\"FORMAT_MESSAGE_FROM_SYSTEM\", Const, 0, \"\"},\n\t\t{\"FORMAT_MESSAGE_IGNORE_INSERTS\", Const, 0, \"\"},\n\t\t{\"FORMAT_MESSAGE_MAX_WIDTH_MASK\", Const, 0, \"\"},\n\t\t{\"FSCTL_GET_REPARSE_POINT\", Const, 4, \"\"},\n\t\t{\"F_ADDFILESIGS\", Const, 0, \"\"},\n\t\t{\"F_ADDSIGS\", Const, 0, \"\"},\n\t\t{\"F_ALLOCATEALL\", Const, 0, \"\"},\n\t\t{\"F_ALLOCATECONTIG\", Const, 0, \"\"},\n\t\t{\"F_CANCEL\", Const, 0, \"\"},\n\t\t{\"F_CHKCLEAN\", Const, 0, \"\"},\n\t\t{\"F_CLOSEM\", Const, 1, \"\"},\n\t\t{\"F_DUP2FD\", Const, 0, \"\"},\n\t\t{\"F_DUP2FD_CLOEXEC\", Const, 1, \"\"},\n\t\t{\"F_DUPFD\", Const, 0, \"\"},\n\t\t{\"F_DUPFD_CLOEXEC\", Const, 0, \"\"},\n\t\t{\"F_EXLCK\", Const, 0, \"\"},\n\t\t{\"F_FINDSIGS\", Const, 16, \"\"},\n\t\t{\"F_FLUSH_DATA\", Const, 0, \"\"},\n\t\t{\"F_FREEZE_FS\", Const, 0, \"\"},\n\t\t{\"F_FSCTL\", Const, 1, \"\"},\n\t\t{\"F_FSDIRMASK\", Const, 1, \"\"},\n\t\t{\"F_FSIN\", Const, 1, \"\"},\n\t\t{\"F_FSINOUT\", Const, 1, \"\"},\n\t\t{\"F_FSOUT\", Const, 1, \"\"},\n\t\t{\"F_FSPRIV\", Const, 1, \"\"},\n\t\t{\"F_FSVOID\", Const, 1, \"\"},\n\t\t{\"F_FULLFSYNC\", Const, 0, \"\"},\n\t\t{\"F_GETCODEDIR\", Const, 16, \"\"},\n\t\t{\"F_GETFD\", Const, 0, \"\"},\n\t\t{\"F_GETFL\", Const, 0, \"\"},\n\t\t{\"F_GETLEASE\", Const, 0, \"\"},\n\t\t{\"F_GETLK\", Const, 0, \"\"},\n\t\t{\"F_GETLK64\", Const, 0, \"\"},\n\t\t{\"F_GETLKPID\", Const, 0, \"\"},\n\t\t{\"F_GETNOSIGPIPE\", Const, 0, \"\"},\n\t\t{\"F_GETOWN\", Const, 0, \"\"},\n\t\t{\"F_GETOWN_EX\", Const, 0, \"\"},\n\t\t{\"F_GETPATH\", Const, 0, \"\"},\n\t\t{\"F_GETPATH_MTMINFO\", Const, 0, \"\"},\n\t\t{\"F_GETPIPE_SZ\", Const, 0, \"\"},\n\t\t{\"F_GETPROTECTIONCLASS\", Const, 0, \"\"},\n\t\t{\"F_GETPROTECTIONLEVEL\", Const, 16, \"\"},\n\t\t{\"F_GETSIG\", Const, 0, \"\"},\n\t\t{\"F_GLOBAL_NOCACHE\", Const, 0, \"\"},\n\t\t{\"F_LOCK\", Const, 0, \"\"},\n\t\t{\"F_LOG2PHYS\", Const, 0, \"\"},\n\t\t{\"F_LOG2PHYS_EXT\", Const, 0, \"\"},\n\t\t{\"F_MARKDEPENDENCY\", Const, 0, \"\"},\n\t\t{\"F_MAXFD\", Const, 1, \"\"},\n\t\t{\"F_NOCACHE\", Const, 0, \"\"},\n\t\t{\"F_NODIRECT\", Const, 0, \"\"},\n\t\t{\"F_NOTIFY\", Const, 0, \"\"},\n\t\t{\"F_OGETLK\", Const, 0, \"\"},\n\t\t{\"F_OK\", Const, 0, \"\"},\n\t\t{\"F_OSETLK\", Const, 0, \"\"},\n\t\t{\"F_OSETLKW\", Const, 0, \"\"},\n\t\t{\"F_PARAM_MASK\", Const, 1, \"\"},\n\t\t{\"F_PARAM_MAX\", Const, 1, \"\"},\n\t\t{\"F_PATHPKG_CHECK\", Const, 0, \"\"},\n\t\t{\"F_PEOFPOSMODE\", Const, 0, \"\"},\n\t\t{\"F_PREALLOCATE\", Const, 0, \"\"},\n\t\t{\"F_RDADVISE\", Const, 0, \"\"},\n\t\t{\"F_RDAHEAD\", Const, 0, \"\"},\n\t\t{\"F_RDLCK\", Const, 0, \"\"},\n\t\t{\"F_READAHEAD\", Const, 0, \"\"},\n\t\t{\"F_READBOOTSTRAP\", Const, 0, \"\"},\n\t\t{\"F_SETBACKINGSTORE\", Const, 0, \"\"},\n\t\t{\"F_SETFD\", Const, 0, \"\"},\n\t\t{\"F_SETFL\", Const, 0, \"\"},\n\t\t{\"F_SETLEASE\", Const, 0, \"\"},\n\t\t{\"F_SETLK\", Const, 0, \"\"},\n\t\t{\"F_SETLK64\", Const, 0, \"\"},\n\t\t{\"F_SETLKW\", Const, 0, \"\"},\n\t\t{\"F_SETLKW64\", Const, 0, \"\"},\n\t\t{\"F_SETLKWTIMEOUT\", Const, 16, \"\"},\n\t\t{\"F_SETLK_REMOTE\", Const, 0, \"\"},\n\t\t{\"F_SETNOSIGPIPE\", Const, 0, \"\"},\n\t\t{\"F_SETOWN\", Const, 0, \"\"},\n\t\t{\"F_SETOWN_EX\", Const, 0, \"\"},\n\t\t{\"F_SETPIPE_SZ\", Const, 0, \"\"},\n\t\t{\"F_SETPROTECTIONCLASS\", Const, 0, \"\"},\n\t\t{\"F_SETSIG\", Const, 0, \"\"},\n\t\t{\"F_SETSIZE\", Const, 0, \"\"},\n\t\t{\"F_SHLCK\", Const, 0, \"\"},\n\t\t{\"F_SINGLE_WRITER\", Const, 16, \"\"},\n\t\t{\"F_TEST\", Const, 0, \"\"},\n\t\t{\"F_THAW_FS\", Const, 0, \"\"},\n\t\t{\"F_TLOCK\", Const, 0, \"\"},\n\t\t{\"F_TRANSCODEKEY\", Const, 16, \"\"},\n\t\t{\"F_ULOCK\", Const, 0, \"\"},\n\t\t{\"F_UNLCK\", Const, 0, \"\"},\n\t\t{\"F_UNLCKSYS\", Const, 0, \"\"},\n\t\t{\"F_VOLPOSMODE\", Const, 0, \"\"},\n\t\t{\"F_WRITEBOOTSTRAP\", Const, 0, \"\"},\n\t\t{\"F_WRLCK\", Const, 0, \"\"},\n\t\t{\"Faccessat\", Func, 0, \"func(dirfd int, path string, mode uint32, flags int) (err error)\"},\n\t\t{\"Fallocate\", Func, 0, \"func(fd int, mode uint32, off int64, len int64) (err error)\"},\n\t\t{\"Fbootstraptransfer_t\", Type, 0, \"\"},\n\t\t{\"Fbootstraptransfer_t.Buffer\", Field, 0, \"\"},\n\t\t{\"Fbootstraptransfer_t.Length\", Field, 0, \"\"},\n\t\t{\"Fbootstraptransfer_t.Offset\", Field, 0, \"\"},\n\t\t{\"Fchdir\", Func, 0, \"func(fd int) (err error)\"},\n\t\t{\"Fchflags\", Func, 0, \"\"},\n\t\t{\"Fchmod\", Func, 0, \"func(fd int, mode uint32) (err error)\"},\n\t\t{\"Fchmodat\", Func, 0, \"func(dirfd int, path string, mode uint32, flags int) error\"},\n\t\t{\"Fchown\", Func, 0, \"func(fd int, uid int, gid int) (err error)\"},\n\t\t{\"Fchownat\", Func, 0, \"func(dirfd int, path string, uid int, gid int, flags int) (err error)\"},\n\t\t{\"FcntlFlock\", Func, 3, \"func(fd uintptr, cmd int, lk *Flock_t) error\"},\n\t\t{\"FdSet\", Type, 0, \"\"},\n\t\t{\"FdSet.Bits\", Field, 0, \"\"},\n\t\t{\"FdSet.X__fds_bits\", Field, 0, \"\"},\n\t\t{\"Fdatasync\", Func, 0, \"func(fd int) (err error)\"},\n\t\t{\"FileNotifyInformation\", Type, 0, \"\"},\n\t\t{\"FileNotifyInformation.Action\", Field, 0, \"\"},\n\t\t{\"FileNotifyInformation.FileName\", Field, 0, \"\"},\n\t\t{\"FileNotifyInformation.FileNameLength\", Field, 0, \"\"},\n\t\t{\"FileNotifyInformation.NextEntryOffset\", Field, 0, \"\"},\n\t\t{\"Filetime\", Type, 0, \"\"},\n\t\t{\"Filetime.HighDateTime\", Field, 0, \"\"},\n\t\t{\"Filetime.LowDateTime\", Field, 0, \"\"},\n\t\t{\"FindClose\", Func, 0, \"\"},\n\t\t{\"FindFirstFile\", Func, 0, \"\"},\n\t\t{\"FindNextFile\", Func, 0, \"\"},\n\t\t{\"Flock\", Func, 0, \"func(fd int, how int) (err error)\"},\n\t\t{\"Flock_t\", Type, 0, \"\"},\n\t\t{\"Flock_t.Len\", Field, 0, \"\"},\n\t\t{\"Flock_t.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Flock_t.Pad_cgo_1\", Field, 3, \"\"},\n\t\t{\"Flock_t.Pid\", Field, 0, \"\"},\n\t\t{\"Flock_t.Start\", Field, 0, \"\"},\n\t\t{\"Flock_t.Sysid\", Field, 0, \"\"},\n\t\t{\"Flock_t.Type\", Field, 0, \"\"},\n\t\t{\"Flock_t.Whence\", Field, 0, \"\"},\n\t\t{\"FlushBpf\", Func, 0, \"\"},\n\t\t{\"FlushFileBuffers\", Func, 0, \"\"},\n\t\t{\"FlushViewOfFile\", Func, 0, \"\"},\n\t\t{\"ForkExec\", Func, 0, \"func(argv0 string, argv []string, attr *ProcAttr) (pid int, err error)\"},\n\t\t{\"ForkLock\", Var, 0, \"\"},\n\t\t{\"FormatMessage\", Func, 0, \"\"},\n\t\t{\"Fpathconf\", Func, 0, \"\"},\n\t\t{\"FreeAddrInfoW\", Func, 1, \"\"},\n\t\t{\"FreeEnvironmentStrings\", Func, 0, \"\"},\n\t\t{\"FreeLibrary\", Func, 0, \"\"},\n\t\t{\"Fsid\", Type, 0, \"\"},\n\t\t{\"Fsid.Val\", Field, 0, \"\"},\n\t\t{\"Fsid.X__fsid_val\", Field, 2, \"\"},\n\t\t{\"Fsid.X__val\", Field, 0, \"\"},\n\t\t{\"Fstat\", Func, 0, \"func(fd int, stat *Stat_t) (err error)\"},\n\t\t{\"Fstatat\", Func, 12, \"\"},\n\t\t{\"Fstatfs\", Func, 0, \"func(fd int, buf *Statfs_t) (err error)\"},\n\t\t{\"Fstore_t\", Type, 0, \"\"},\n\t\t{\"Fstore_t.Bytesalloc\", Field, 0, \"\"},\n\t\t{\"Fstore_t.Flags\", Field, 0, \"\"},\n\t\t{\"Fstore_t.Length\", Field, 0, \"\"},\n\t\t{\"Fstore_t.Offset\", Field, 0, \"\"},\n\t\t{\"Fstore_t.Posmode\", Field, 0, \"\"},\n\t\t{\"Fsync\", Func, 0, \"func(fd int) (err error)\"},\n\t\t{\"Ftruncate\", Func, 0, \"func(fd int, length int64) (err error)\"},\n\t\t{\"FullPath\", Func, 4, \"\"},\n\t\t{\"Futimes\", Func, 0, \"func(fd int, tv []Timeval) (err error)\"},\n\t\t{\"Futimesat\", Func, 0, \"func(dirfd int, path string, tv []Timeval) (err error)\"},\n\t\t{\"GENERIC_ALL\", Const, 0, \"\"},\n\t\t{\"GENERIC_EXECUTE\", Const, 0, \"\"},\n\t\t{\"GENERIC_READ\", Const, 0, \"\"},\n\t\t{\"GENERIC_WRITE\", Const, 0, \"\"},\n\t\t{\"GUID\", Type, 1, \"\"},\n\t\t{\"GUID.Data1\", Field, 1, \"\"},\n\t\t{\"GUID.Data2\", Field, 1, \"\"},\n\t\t{\"GUID.Data3\", Field, 1, \"\"},\n\t\t{\"GUID.Data4\", Field, 1, \"\"},\n\t\t{\"GetAcceptExSockaddrs\", Func, 0, \"\"},\n\t\t{\"GetAdaptersInfo\", Func, 0, \"\"},\n\t\t{\"GetAddrInfoW\", Func, 1, \"\"},\n\t\t{\"GetCommandLine\", Func, 0, \"\"},\n\t\t{\"GetComputerName\", Func, 0, \"\"},\n\t\t{\"GetConsoleMode\", Func, 1, \"\"},\n\t\t{\"GetCurrentDirectory\", Func, 0, \"\"},\n\t\t{\"GetCurrentProcess\", Func, 0, \"\"},\n\t\t{\"GetEnvironmentStrings\", Func, 0, \"\"},\n\t\t{\"GetEnvironmentVariable\", Func, 0, \"\"},\n\t\t{\"GetExitCodeProcess\", Func, 0, \"\"},\n\t\t{\"GetFileAttributes\", Func, 0, \"\"},\n\t\t{\"GetFileAttributesEx\", Func, 0, \"\"},\n\t\t{\"GetFileExInfoStandard\", Const, 0, \"\"},\n\t\t{\"GetFileExMaxInfoLevel\", Const, 0, \"\"},\n\t\t{\"GetFileInformationByHandle\", Func, 0, \"\"},\n\t\t{\"GetFileType\", Func, 0, \"\"},\n\t\t{\"GetFullPathName\", Func, 0, \"\"},\n\t\t{\"GetHostByName\", Func, 0, \"\"},\n\t\t{\"GetIfEntry\", Func, 0, \"\"},\n\t\t{\"GetLastError\", Func, 0, \"\"},\n\t\t{\"GetLengthSid\", Func, 0, \"\"},\n\t\t{\"GetLongPathName\", Func, 0, \"\"},\n\t\t{\"GetProcAddress\", Func, 0, \"\"},\n\t\t{\"GetProcessTimes\", Func, 0, \"\"},\n\t\t{\"GetProtoByName\", Func, 0, \"\"},\n\t\t{\"GetQueuedCompletionStatus\", Func, 0, \"\"},\n\t\t{\"GetServByName\", Func, 0, \"\"},\n\t\t{\"GetShortPathName\", Func, 0, \"\"},\n\t\t{\"GetStartupInfo\", Func, 0, \"\"},\n\t\t{\"GetStdHandle\", Func, 0, \"\"},\n\t\t{\"GetSystemTimeAsFileTime\", Func, 0, \"\"},\n\t\t{\"GetTempPath\", Func, 0, \"\"},\n\t\t{\"GetTimeZoneInformation\", Func, 0, \"\"},\n\t\t{\"GetTokenInformation\", Func, 0, \"\"},\n\t\t{\"GetUserNameEx\", Func, 0, \"\"},\n\t\t{\"GetUserProfileDirectory\", Func, 0, \"\"},\n\t\t{\"GetVersion\", Func, 0, \"\"},\n\t\t{\"Getcwd\", Func, 0, \"func(buf []byte) (n int, err error)\"},\n\t\t{\"Getdents\", Func, 0, \"func(fd int, buf []byte) (n int, err error)\"},\n\t\t{\"Getdirentries\", Func, 0, \"\"},\n\t\t{\"Getdtablesize\", Func, 0, \"\"},\n\t\t{\"Getegid\", Func, 0, \"func() (egid int)\"},\n\t\t{\"Getenv\", Func, 0, \"func(key string) (value string, found bool)\"},\n\t\t{\"Geteuid\", Func, 0, \"func() (euid int)\"},\n\t\t{\"Getfsstat\", Func, 0, \"\"},\n\t\t{\"Getgid\", Func, 0, \"func() (gid int)\"},\n\t\t{\"Getgroups\", Func, 0, \"func() (gids []int, err error)\"},\n\t\t{\"Getpagesize\", Func, 0, \"func() int\"},\n\t\t{\"Getpeername\", Func, 0, \"func(fd int) (sa Sockaddr, err error)\"},\n\t\t{\"Getpgid\", Func, 0, \"func(pid int) (pgid int, err error)\"},\n\t\t{\"Getpgrp\", Func, 0, \"func() (pid int)\"},\n\t\t{\"Getpid\", Func, 0, \"func() (pid int)\"},\n\t\t{\"Getppid\", Func, 0, \"func() (ppid int)\"},\n\t\t{\"Getpriority\", Func, 0, \"func(which int, who int) (prio int, err error)\"},\n\t\t{\"Getrlimit\", Func, 0, \"func(resource int, rlim *Rlimit) (err error)\"},\n\t\t{\"Getrusage\", Func, 0, \"func(who int, rusage *Rusage) (err error)\"},\n\t\t{\"Getsid\", Func, 0, \"\"},\n\t\t{\"Getsockname\", Func, 0, \"func(fd int) (sa Sockaddr, err error)\"},\n\t\t{\"Getsockopt\", Func, 1, \"\"},\n\t\t{\"GetsockoptByte\", Func, 0, \"\"},\n\t\t{\"GetsockoptICMPv6Filter\", Func, 2, \"func(fd int, level int, opt int) (*ICMPv6Filter, error)\"},\n\t\t{\"GetsockoptIPMreq\", Func, 0, \"func(fd int, level int, opt int) (*IPMreq, error)\"},\n\t\t{\"GetsockoptIPMreqn\", Func, 0, \"func(fd int, level int, opt int) (*IPMreqn, error)\"},\n\t\t{\"GetsockoptIPv6MTUInfo\", Func, 2, \"func(fd int, level int, opt int) (*IPv6MTUInfo, error)\"},\n\t\t{\"GetsockoptIPv6Mreq\", Func, 0, \"func(fd int, level int, opt int) (*IPv6Mreq, error)\"},\n\t\t{\"GetsockoptInet4Addr\", Func, 0, \"func(fd int, level int, opt int) (value [4]byte, err error)\"},\n\t\t{\"GetsockoptInt\", Func, 0, \"func(fd int, level int, opt int) (value int, err error)\"},\n\t\t{\"GetsockoptUcred\", Func, 1, \"func(fd int, level int, opt int) (*Ucred, error)\"},\n\t\t{\"Gettid\", Func, 0, \"func() (tid int)\"},\n\t\t{\"Gettimeofday\", Func, 0, \"func(tv *Timeval) (err error)\"},\n\t\t{\"Getuid\", Func, 0, \"func() (uid int)\"},\n\t\t{\"Getwd\", Func, 0, \"func() (wd string, err error)\"},\n\t\t{\"Getxattr\", Func, 1, \"func(path string, attr string, dest []byte) (sz int, err error)\"},\n\t\t{\"HANDLE_FLAG_INHERIT\", Const, 0, \"\"},\n\t\t{\"HKEY_CLASSES_ROOT\", Const, 0, \"\"},\n\t\t{\"HKEY_CURRENT_CONFIG\", Const, 0, \"\"},\n\t\t{\"HKEY_CURRENT_USER\", Const, 0, \"\"},\n\t\t{\"HKEY_DYN_DATA\", Const, 0, \"\"},\n\t\t{\"HKEY_LOCAL_MACHINE\", Const, 0, \"\"},\n\t\t{\"HKEY_PERFORMANCE_DATA\", Const, 0, \"\"},\n\t\t{\"HKEY_USERS\", Const, 0, \"\"},\n\t\t{\"HUPCL\", Const, 0, \"\"},\n\t\t{\"Handle\", Type, 0, \"\"},\n\t\t{\"Hostent\", Type, 0, \"\"},\n\t\t{\"Hostent.AddrList\", Field, 0, \"\"},\n\t\t{\"Hostent.AddrType\", Field, 0, \"\"},\n\t\t{\"Hostent.Aliases\", Field, 0, \"\"},\n\t\t{\"Hostent.Length\", Field, 0, \"\"},\n\t\t{\"Hostent.Name\", Field, 0, \"\"},\n\t\t{\"ICANON\", Const, 0, \"\"},\n\t\t{\"ICMP6_FILTER\", Const, 2, \"\"},\n\t\t{\"ICMPV6_FILTER\", Const, 2, \"\"},\n\t\t{\"ICMPv6Filter\", Type, 2, \"\"},\n\t\t{\"ICMPv6Filter.Data\", Field, 2, \"\"},\n\t\t{\"ICMPv6Filter.Filt\", Field, 2, \"\"},\n\t\t{\"ICRNL\", Const, 0, \"\"},\n\t\t{\"IEXTEN\", Const, 0, \"\"},\n\t\t{\"IFAN_ARRIVAL\", Const, 1, \"\"},\n\t\t{\"IFAN_DEPARTURE\", Const, 1, \"\"},\n\t\t{\"IFA_ADDRESS\", Const, 0, \"\"},\n\t\t{\"IFA_ANYCAST\", Const, 0, \"\"},\n\t\t{\"IFA_BROADCAST\", Const, 0, \"\"},\n\t\t{\"IFA_CACHEINFO\", Const, 0, \"\"},\n\t\t{\"IFA_F_DADFAILED\", Const, 0, \"\"},\n\t\t{\"IFA_F_DEPRECATED\", Const, 0, \"\"},\n\t\t{\"IFA_F_HOMEADDRESS\", Const, 0, \"\"},\n\t\t{\"IFA_F_NODAD\", Const, 0, \"\"},\n\t\t{\"IFA_F_OPTIMISTIC\", Const, 0, \"\"},\n\t\t{\"IFA_F_PERMANENT\", Const, 0, \"\"},\n\t\t{\"IFA_F_SECONDARY\", Const, 0, \"\"},\n\t\t{\"IFA_F_TEMPORARY\", Const, 0, \"\"},\n\t\t{\"IFA_F_TENTATIVE\", Const, 0, \"\"},\n\t\t{\"IFA_LABEL\", Const, 0, \"\"},\n\t\t{\"IFA_LOCAL\", Const, 0, \"\"},\n\t\t{\"IFA_MAX\", Const, 0, \"\"},\n\t\t{\"IFA_MULTICAST\", Const, 0, \"\"},\n\t\t{\"IFA_ROUTE\", Const, 1, \"\"},\n\t\t{\"IFA_UNSPEC\", Const, 0, \"\"},\n\t\t{\"IFF_ALLMULTI\", Const, 0, \"\"},\n\t\t{\"IFF_ALTPHYS\", Const, 0, \"\"},\n\t\t{\"IFF_AUTOMEDIA\", Const, 0, \"\"},\n\t\t{\"IFF_BROADCAST\", Const, 0, \"\"},\n\t\t{\"IFF_CANTCHANGE\", Const, 0, \"\"},\n\t\t{\"IFF_CANTCONFIG\", Const, 1, \"\"},\n\t\t{\"IFF_DEBUG\", Const, 0, \"\"},\n\t\t{\"IFF_DRV_OACTIVE\", Const, 0, \"\"},\n\t\t{\"IFF_DRV_RUNNING\", Const, 0, \"\"},\n\t\t{\"IFF_DYING\", Const, 0, \"\"},\n\t\t{\"IFF_DYNAMIC\", Const, 0, \"\"},\n\t\t{\"IFF_LINK0\", Const, 0, \"\"},\n\t\t{\"IFF_LINK1\", Const, 0, \"\"},\n\t\t{\"IFF_LINK2\", Const, 0, \"\"},\n\t\t{\"IFF_LOOPBACK\", Const, 0, \"\"},\n\t\t{\"IFF_MASTER\", Const, 0, \"\"},\n\t\t{\"IFF_MONITOR\", Const, 0, \"\"},\n\t\t{\"IFF_MULTICAST\", Const, 0, \"\"},\n\t\t{\"IFF_NOARP\", Const, 0, \"\"},\n\t\t{\"IFF_NOTRAILERS\", Const, 0, \"\"},\n\t\t{\"IFF_NO_PI\", Const, 0, \"\"},\n\t\t{\"IFF_OACTIVE\", Const, 0, \"\"},\n\t\t{\"IFF_ONE_QUEUE\", Const, 0, \"\"},\n\t\t{\"IFF_POINTOPOINT\", Const, 0, \"\"},\n\t\t{\"IFF_POINTTOPOINT\", Const, 0, \"\"},\n\t\t{\"IFF_PORTSEL\", Const, 0, \"\"},\n\t\t{\"IFF_PPROMISC\", Const, 0, \"\"},\n\t\t{\"IFF_PROMISC\", Const, 0, \"\"},\n\t\t{\"IFF_RENAMING\", Const, 0, \"\"},\n\t\t{\"IFF_RUNNING\", Const, 0, \"\"},\n\t\t{\"IFF_SIMPLEX\", Const, 0, \"\"},\n\t\t{\"IFF_SLAVE\", Const, 0, \"\"},\n\t\t{\"IFF_SMART\", Const, 0, \"\"},\n\t\t{\"IFF_STATICARP\", Const, 0, \"\"},\n\t\t{\"IFF_TAP\", Const, 0, \"\"},\n\t\t{\"IFF_TUN\", Const, 0, \"\"},\n\t\t{\"IFF_TUN_EXCL\", Const, 0, \"\"},\n\t\t{\"IFF_UP\", Const, 0, \"\"},\n\t\t{\"IFF_VNET_HDR\", Const, 0, \"\"},\n\t\t{\"IFLA_ADDRESS\", Const, 0, \"\"},\n\t\t{\"IFLA_BROADCAST\", Const, 0, \"\"},\n\t\t{\"IFLA_COST\", Const, 0, \"\"},\n\t\t{\"IFLA_IFALIAS\", Const, 0, \"\"},\n\t\t{\"IFLA_IFNAME\", Const, 0, \"\"},\n\t\t{\"IFLA_LINK\", Const, 0, \"\"},\n\t\t{\"IFLA_LINKINFO\", Const, 0, \"\"},\n\t\t{\"IFLA_LINKMODE\", Const, 0, \"\"},\n\t\t{\"IFLA_MAP\", Const, 0, \"\"},\n\t\t{\"IFLA_MASTER\", Const, 0, \"\"},\n\t\t{\"IFLA_MAX\", Const, 0, \"\"},\n\t\t{\"IFLA_MTU\", Const, 0, \"\"},\n\t\t{\"IFLA_NET_NS_PID\", Const, 0, \"\"},\n\t\t{\"IFLA_OPERSTATE\", Const, 0, \"\"},\n\t\t{\"IFLA_PRIORITY\", Const, 0, \"\"},\n\t\t{\"IFLA_PROTINFO\", Const, 0, \"\"},\n\t\t{\"IFLA_QDISC\", Const, 0, \"\"},\n\t\t{\"IFLA_STATS\", Const, 0, \"\"},\n\t\t{\"IFLA_TXQLEN\", Const, 0, \"\"},\n\t\t{\"IFLA_UNSPEC\", Const, 0, \"\"},\n\t\t{\"IFLA_WEIGHT\", Const, 0, \"\"},\n\t\t{\"IFLA_WIRELESS\", Const, 0, \"\"},\n\t\t{\"IFNAMSIZ\", Const, 0, \"\"},\n\t\t{\"IFT_1822\", Const, 0, \"\"},\n\t\t{\"IFT_A12MPPSWITCH\", Const, 0, \"\"},\n\t\t{\"IFT_AAL2\", Const, 0, \"\"},\n\t\t{\"IFT_AAL5\", Const, 0, \"\"},\n\t\t{\"IFT_ADSL\", Const, 0, \"\"},\n\t\t{\"IFT_AFLANE8023\", Const, 0, \"\"},\n\t\t{\"IFT_AFLANE8025\", Const, 0, \"\"},\n\t\t{\"IFT_ARAP\", Const, 0, \"\"},\n\t\t{\"IFT_ARCNET\", Const, 0, \"\"},\n\t\t{\"IFT_ARCNETPLUS\", Const, 0, \"\"},\n\t\t{\"IFT_ASYNC\", Const, 0, \"\"},\n\t\t{\"IFT_ATM\", Const, 0, \"\"},\n\t\t{\"IFT_ATMDXI\", Const, 0, \"\"},\n\t\t{\"IFT_ATMFUNI\", Const, 0, \"\"},\n\t\t{\"IFT_ATMIMA\", Const, 0, \"\"},\n\t\t{\"IFT_ATMLOGICAL\", Const, 0, \"\"},\n\t\t{\"IFT_ATMRADIO\", Const, 0, \"\"},\n\t\t{\"IFT_ATMSUBINTERFACE\", Const, 0, \"\"},\n\t\t{\"IFT_ATMVCIENDPT\", Const, 0, \"\"},\n\t\t{\"IFT_ATMVIRTUAL\", Const, 0, \"\"},\n\t\t{\"IFT_BGPPOLICYACCOUNTING\", Const, 0, \"\"},\n\t\t{\"IFT_BLUETOOTH\", Const, 1, \"\"},\n\t\t{\"IFT_BRIDGE\", Const, 0, \"\"},\n\t\t{\"IFT_BSC\", Const, 0, \"\"},\n\t\t{\"IFT_CARP\", Const, 0, \"\"},\n\t\t{\"IFT_CCTEMUL\", Const, 0, \"\"},\n\t\t{\"IFT_CELLULAR\", Const, 0, \"\"},\n\t\t{\"IFT_CEPT\", Const, 0, \"\"},\n\t\t{\"IFT_CES\", Const, 0, \"\"},\n\t\t{\"IFT_CHANNEL\", Const, 0, \"\"},\n\t\t{\"IFT_CNR\", Const, 0, \"\"},\n\t\t{\"IFT_COFFEE\", Const, 0, \"\"},\n\t\t{\"IFT_COMPOSITELINK\", Const, 0, \"\"},\n\t\t{\"IFT_DCN\", Const, 0, \"\"},\n\t\t{\"IFT_DIGITALPOWERLINE\", Const, 0, \"\"},\n\t\t{\"IFT_DIGITALWRAPPEROVERHEADCHANNEL\", Const, 0, \"\"},\n\t\t{\"IFT_DLSW\", Const, 0, \"\"},\n\t\t{\"IFT_DOCSCABLEDOWNSTREAM\", Const, 0, \"\"},\n\t\t{\"IFT_DOCSCABLEMACLAYER\", Const, 0, \"\"},\n\t\t{\"IFT_DOCSCABLEUPSTREAM\", Const, 0, \"\"},\n\t\t{\"IFT_DOCSCABLEUPSTREAMCHANNEL\", Const, 1, \"\"},\n\t\t{\"IFT_DS0\", Const, 0, \"\"},\n\t\t{\"IFT_DS0BUNDLE\", Const, 0, \"\"},\n\t\t{\"IFT_DS1FDL\", Const, 0, \"\"},\n\t\t{\"IFT_DS3\", Const, 0, \"\"},\n\t\t{\"IFT_DTM\", Const, 0, \"\"},\n\t\t{\"IFT_DUMMY\", Const, 1, \"\"},\n\t\t{\"IFT_DVBASILN\", Const, 0, \"\"},\n\t\t{\"IFT_DVBASIOUT\", Const, 0, \"\"},\n\t\t{\"IFT_DVBRCCDOWNSTREAM\", Const, 0, \"\"},\n\t\t{\"IFT_DVBRCCMACLAYER\", Const, 0, \"\"},\n\t\t{\"IFT_DVBRCCUPSTREAM\", Const, 0, \"\"},\n\t\t{\"IFT_ECONET\", Const, 1, \"\"},\n\t\t{\"IFT_ENC\", Const, 0, \"\"},\n\t\t{\"IFT_EON\", Const, 0, \"\"},\n\t\t{\"IFT_EPLRS\", Const, 0, \"\"},\n\t\t{\"IFT_ESCON\", Const, 0, \"\"},\n\t\t{\"IFT_ETHER\", Const, 0, \"\"},\n\t\t{\"IFT_FAITH\", Const, 0, \"\"},\n\t\t{\"IFT_FAST\", Const, 0, \"\"},\n\t\t{\"IFT_FASTETHER\", Const, 0, \"\"},\n\t\t{\"IFT_FASTETHERFX\", Const, 0, \"\"},\n\t\t{\"IFT_FDDI\", Const, 0, \"\"},\n\t\t{\"IFT_FIBRECHANNEL\", Const, 0, \"\"},\n\t\t{\"IFT_FRAMERELAYINTERCONNECT\", Const, 0, \"\"},\n\t\t{\"IFT_FRAMERELAYMPI\", Const, 0, \"\"},\n\t\t{\"IFT_FRDLCIENDPT\", Const, 0, \"\"},\n\t\t{\"IFT_FRELAY\", Const, 0, \"\"},\n\t\t{\"IFT_FRELAYDCE\", Const, 0, \"\"},\n\t\t{\"IFT_FRF16MFRBUNDLE\", Const, 0, \"\"},\n\t\t{\"IFT_FRFORWARD\", Const, 0, \"\"},\n\t\t{\"IFT_G703AT2MB\", Const, 0, \"\"},\n\t\t{\"IFT_G703AT64K\", Const, 0, \"\"},\n\t\t{\"IFT_GIF\", Const, 0, \"\"},\n\t\t{\"IFT_GIGABITETHERNET\", Const, 0, \"\"},\n\t\t{\"IFT_GR303IDT\", Const, 0, \"\"},\n\t\t{\"IFT_GR303RDT\", Const, 0, \"\"},\n\t\t{\"IFT_H323GATEKEEPER\", Const, 0, \"\"},\n\t\t{\"IFT_H323PROXY\", Const, 0, \"\"},\n\t\t{\"IFT_HDH1822\", Const, 0, \"\"},\n\t\t{\"IFT_HDLC\", Const, 0, \"\"},\n\t\t{\"IFT_HDSL2\", Const, 0, \"\"},\n\t\t{\"IFT_HIPERLAN2\", Const, 0, \"\"},\n\t\t{\"IFT_HIPPI\", Const, 0, \"\"},\n\t\t{\"IFT_HIPPIINTERFACE\", Const, 0, \"\"},\n\t\t{\"IFT_HOSTPAD\", Const, 0, \"\"},\n\t\t{\"IFT_HSSI\", Const, 0, \"\"},\n\t\t{\"IFT_HY\", Const, 0, \"\"},\n\t\t{\"IFT_IBM370PARCHAN\", Const, 0, \"\"},\n\t\t{\"IFT_IDSL\", Const, 0, \"\"},\n\t\t{\"IFT_IEEE1394\", Const, 0, \"\"},\n\t\t{\"IFT_IEEE80211\", Const, 0, \"\"},\n\t\t{\"IFT_IEEE80212\", Const, 0, \"\"},\n\t\t{\"IFT_IEEE8023ADLAG\", Const, 0, \"\"},\n\t\t{\"IFT_IFGSN\", Const, 0, \"\"},\n\t\t{\"IFT_IMT\", Const, 0, \"\"},\n\t\t{\"IFT_INFINIBAND\", Const, 1, \"\"},\n\t\t{\"IFT_INTERLEAVE\", Const, 0, \"\"},\n\t\t{\"IFT_IP\", Const, 0, \"\"},\n\t\t{\"IFT_IPFORWARD\", Const, 0, \"\"},\n\t\t{\"IFT_IPOVERATM\", Const, 0, \"\"},\n\t\t{\"IFT_IPOVERCDLC\", Const, 0, \"\"},\n\t\t{\"IFT_IPOVERCLAW\", Const, 0, \"\"},\n\t\t{\"IFT_IPSWITCH\", Const, 0, \"\"},\n\t\t{\"IFT_IPXIP\", Const, 0, \"\"},\n\t\t{\"IFT_ISDN\", Const, 0, \"\"},\n\t\t{\"IFT_ISDNBASIC\", Const, 0, \"\"},\n\t\t{\"IFT_ISDNPRIMARY\", Const, 0, \"\"},\n\t\t{\"IFT_ISDNS\", Const, 0, \"\"},\n\t\t{\"IFT_ISDNU\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88022LLC\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88023\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88024\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88025\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88025CRFPINT\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88025DTR\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88025FIBER\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88026\", Const, 0, \"\"},\n\t\t{\"IFT_ISUP\", Const, 0, \"\"},\n\t\t{\"IFT_L2VLAN\", Const, 0, \"\"},\n\t\t{\"IFT_L3IPVLAN\", Const, 0, \"\"},\n\t\t{\"IFT_L3IPXVLAN\", Const, 0, \"\"},\n\t\t{\"IFT_LAPB\", Const, 0, \"\"},\n\t\t{\"IFT_LAPD\", Const, 0, \"\"},\n\t\t{\"IFT_LAPF\", Const, 0, \"\"},\n\t\t{\"IFT_LINEGROUP\", Const, 1, \"\"},\n\t\t{\"IFT_LOCALTALK\", Const, 0, \"\"},\n\t\t{\"IFT_LOOP\", Const, 0, \"\"},\n\t\t{\"IFT_MEDIAMAILOVERIP\", Const, 0, \"\"},\n\t\t{\"IFT_MFSIGLINK\", Const, 0, \"\"},\n\t\t{\"IFT_MIOX25\", Const, 0, \"\"},\n\t\t{\"IFT_MODEM\", Const, 0, \"\"},\n\t\t{\"IFT_MPC\", Const, 0, \"\"},\n\t\t{\"IFT_MPLS\", Const, 0, \"\"},\n\t\t{\"IFT_MPLSTUNNEL\", Const, 0, \"\"},\n\t\t{\"IFT_MSDSL\", Const, 0, \"\"},\n\t\t{\"IFT_MVL\", Const, 0, \"\"},\n\t\t{\"IFT_MYRINET\", Const, 0, \"\"},\n\t\t{\"IFT_NFAS\", Const, 0, \"\"},\n\t\t{\"IFT_NSIP\", Const, 0, \"\"},\n\t\t{\"IFT_OPTICALCHANNEL\", Const, 0, \"\"},\n\t\t{\"IFT_OPTICALTRANSPORT\", Const, 0, \"\"},\n\t\t{\"IFT_OTHER\", Const, 0, \"\"},\n\t\t{\"IFT_P10\", Const, 0, \"\"},\n\t\t{\"IFT_P80\", Const, 0, \"\"},\n\t\t{\"IFT_PARA\", Const, 0, \"\"},\n\t\t{\"IFT_PDP\", Const, 0, \"\"},\n\t\t{\"IFT_PFLOG\", Const, 0, \"\"},\n\t\t{\"IFT_PFLOW\", Const, 1, \"\"},\n\t\t{\"IFT_PFSYNC\", Const, 0, \"\"},\n\t\t{\"IFT_PLC\", Const, 0, \"\"},\n\t\t{\"IFT_PON155\", Const, 1, \"\"},\n\t\t{\"IFT_PON622\", Const, 1, \"\"},\n\t\t{\"IFT_POS\", Const, 0, \"\"},\n\t\t{\"IFT_PPP\", Const, 0, \"\"},\n\t\t{\"IFT_PPPMULTILINKBUNDLE\", Const, 0, \"\"},\n\t\t{\"IFT_PROPATM\", Const, 1, \"\"},\n\t\t{\"IFT_PROPBWAP2MP\", Const, 0, \"\"},\n\t\t{\"IFT_PROPCNLS\", Const, 0, \"\"},\n\t\t{\"IFT_PROPDOCSWIRELESSDOWNSTREAM\", Const, 0, \"\"},\n\t\t{\"IFT_PROPDOCSWIRELESSMACLAYER\", Const, 0, \"\"},\n\t\t{\"IFT_PROPDOCSWIRELESSUPSTREAM\", Const, 0, \"\"},\n\t\t{\"IFT_PROPMUX\", Const, 0, \"\"},\n\t\t{\"IFT_PROPVIRTUAL\", Const, 0, \"\"},\n\t\t{\"IFT_PROPWIRELESSP2P\", Const, 0, \"\"},\n\t\t{\"IFT_PTPSERIAL\", Const, 0, \"\"},\n\t\t{\"IFT_PVC\", Const, 0, \"\"},\n\t\t{\"IFT_Q2931\", Const, 1, \"\"},\n\t\t{\"IFT_QLLC\", Const, 0, \"\"},\n\t\t{\"IFT_RADIOMAC\", Const, 0, \"\"},\n\t\t{\"IFT_RADSL\", Const, 0, \"\"},\n\t\t{\"IFT_REACHDSL\", Const, 0, \"\"},\n\t\t{\"IFT_RFC1483\", Const, 0, \"\"},\n\t\t{\"IFT_RS232\", Const, 0, \"\"},\n\t\t{\"IFT_RSRB\", Const, 0, \"\"},\n\t\t{\"IFT_SDLC\", Const, 0, \"\"},\n\t\t{\"IFT_SDSL\", Const, 0, \"\"},\n\t\t{\"IFT_SHDSL\", Const, 0, \"\"},\n\t\t{\"IFT_SIP\", Const, 0, \"\"},\n\t\t{\"IFT_SIPSIG\", Const, 1, \"\"},\n\t\t{\"IFT_SIPTG\", Const, 1, \"\"},\n\t\t{\"IFT_SLIP\", Const, 0, \"\"},\n\t\t{\"IFT_SMDSDXI\", Const, 0, \"\"},\n\t\t{\"IFT_SMDSICIP\", Const, 0, \"\"},\n\t\t{\"IFT_SONET\", Const, 0, \"\"},\n\t\t{\"IFT_SONETOVERHEADCHANNEL\", Const, 0, \"\"},\n\t\t{\"IFT_SONETPATH\", Const, 0, \"\"},\n\t\t{\"IFT_SONETVT\", Const, 0, \"\"},\n\t\t{\"IFT_SRP\", Const, 0, \"\"},\n\t\t{\"IFT_SS7SIGLINK\", Const, 0, \"\"},\n\t\t{\"IFT_STACKTOSTACK\", Const, 0, \"\"},\n\t\t{\"IFT_STARLAN\", Const, 0, \"\"},\n\t\t{\"IFT_STF\", Const, 0, \"\"},\n\t\t{\"IFT_T1\", Const, 0, \"\"},\n\t\t{\"IFT_TDLC\", Const, 0, \"\"},\n\t\t{\"IFT_TELINK\", Const, 1, \"\"},\n\t\t{\"IFT_TERMPAD\", Const, 0, \"\"},\n\t\t{\"IFT_TR008\", Const, 0, \"\"},\n\t\t{\"IFT_TRANSPHDLC\", Const, 0, \"\"},\n\t\t{\"IFT_TUNNEL\", Const, 0, \"\"},\n\t\t{\"IFT_ULTRA\", Const, 0, \"\"},\n\t\t{\"IFT_USB\", Const, 0, \"\"},\n\t\t{\"IFT_V11\", Const, 0, \"\"},\n\t\t{\"IFT_V35\", Const, 0, \"\"},\n\t\t{\"IFT_V36\", Const, 0, \"\"},\n\t\t{\"IFT_V37\", Const, 0, \"\"},\n\t\t{\"IFT_VDSL\", Const, 0, \"\"},\n\t\t{\"IFT_VIRTUALIPADDRESS\", Const, 0, \"\"},\n\t\t{\"IFT_VIRTUALTG\", Const, 1, \"\"},\n\t\t{\"IFT_VOICEDID\", Const, 1, \"\"},\n\t\t{\"IFT_VOICEEM\", Const, 0, \"\"},\n\t\t{\"IFT_VOICEEMFGD\", Const, 1, \"\"},\n\t\t{\"IFT_VOICEENCAP\", Const, 0, \"\"},\n\t\t{\"IFT_VOICEFGDEANA\", Const, 1, \"\"},\n\t\t{\"IFT_VOICEFXO\", Const, 0, \"\"},\n\t\t{\"IFT_VOICEFXS\", Const, 0, \"\"},\n\t\t{\"IFT_VOICEOVERATM\", Const, 0, \"\"},\n\t\t{\"IFT_VOICEOVERCABLE\", Const, 1, \"\"},\n\t\t{\"IFT_VOICEOVERFRAMERELAY\", Const, 0, \"\"},\n\t\t{\"IFT_VOICEOVERIP\", Const, 0, \"\"},\n\t\t{\"IFT_X213\", Const, 0, \"\"},\n\t\t{\"IFT_X25\", Const, 0, \"\"},\n\t\t{\"IFT_X25DDN\", Const, 0, \"\"},\n\t\t{\"IFT_X25HUNTGROUP\", Const, 0, \"\"},\n\t\t{\"IFT_X25MLP\", Const, 0, \"\"},\n\t\t{\"IFT_X25PLE\", Const, 0, \"\"},\n\t\t{\"IFT_XETHER\", Const, 0, \"\"},\n\t\t{\"IGNBRK\", Const, 0, \"\"},\n\t\t{\"IGNCR\", Const, 0, \"\"},\n\t\t{\"IGNORE\", Const, 0, \"\"},\n\t\t{\"IGNPAR\", Const, 0, \"\"},\n\t\t{\"IMAXBEL\", Const, 0, \"\"},\n\t\t{\"INFINITE\", Const, 0, \"\"},\n\t\t{\"INLCR\", Const, 0, \"\"},\n\t\t{\"INPCK\", Const, 0, \"\"},\n\t\t{\"INVALID_FILE_ATTRIBUTES\", Const, 0, \"\"},\n\t\t{\"IN_ACCESS\", Const, 0, \"\"},\n\t\t{\"IN_ALL_EVENTS\", Const, 0, \"\"},\n\t\t{\"IN_ATTRIB\", Const, 0, \"\"},\n\t\t{\"IN_CLASSA_HOST\", Const, 0, \"\"},\n\t\t{\"IN_CLASSA_MAX\", Const, 0, \"\"},\n\t\t{\"IN_CLASSA_NET\", Const, 0, \"\"},\n\t\t{\"IN_CLASSA_NSHIFT\", Const, 0, \"\"},\n\t\t{\"IN_CLASSB_HOST\", Const, 0, \"\"},\n\t\t{\"IN_CLASSB_MAX\", Const, 0, \"\"},\n\t\t{\"IN_CLASSB_NET\", Const, 0, \"\"},\n\t\t{\"IN_CLASSB_NSHIFT\", Const, 0, \"\"},\n\t\t{\"IN_CLASSC_HOST\", Const, 0, \"\"},\n\t\t{\"IN_CLASSC_NET\", Const, 0, \"\"},\n\t\t{\"IN_CLASSC_NSHIFT\", Const, 0, \"\"},\n\t\t{\"IN_CLASSD_HOST\", Const, 0, \"\"},\n\t\t{\"IN_CLASSD_NET\", Const, 0, \"\"},\n\t\t{\"IN_CLASSD_NSHIFT\", Const, 0, \"\"},\n\t\t{\"IN_CLOEXEC\", Const, 0, \"\"},\n\t\t{\"IN_CLOSE\", Const, 0, \"\"},\n\t\t{\"IN_CLOSE_NOWRITE\", Const, 0, \"\"},\n\t\t{\"IN_CLOSE_WRITE\", Const, 0, \"\"},\n\t\t{\"IN_CREATE\", Const, 0, \"\"},\n\t\t{\"IN_DELETE\", Const, 0, \"\"},\n\t\t{\"IN_DELETE_SELF\", Const, 0, \"\"},\n\t\t{\"IN_DONT_FOLLOW\", Const, 0, \"\"},\n\t\t{\"IN_EXCL_UNLINK\", Const, 0, \"\"},\n\t\t{\"IN_IGNORED\", Const, 0, \"\"},\n\t\t{\"IN_ISDIR\", Const, 0, \"\"},\n\t\t{\"IN_LINKLOCALNETNUM\", Const, 0, \"\"},\n\t\t{\"IN_LOOPBACKNET\", Const, 0, \"\"},\n\t\t{\"IN_MASK_ADD\", Const, 0, \"\"},\n\t\t{\"IN_MODIFY\", Const, 0, \"\"},\n\t\t{\"IN_MOVE\", Const, 0, \"\"},\n\t\t{\"IN_MOVED_FROM\", Const, 0, \"\"},\n\t\t{\"IN_MOVED_TO\", Const, 0, \"\"},\n\t\t{\"IN_MOVE_SELF\", Const, 0, \"\"},\n\t\t{\"IN_NONBLOCK\", Const, 0, \"\"},\n\t\t{\"IN_ONESHOT\", Const, 0, \"\"},\n\t\t{\"IN_ONLYDIR\", Const, 0, \"\"},\n\t\t{\"IN_OPEN\", Const, 0, \"\"},\n\t\t{\"IN_Q_OVERFLOW\", Const, 0, \"\"},\n\t\t{\"IN_RFC3021_HOST\", Const, 1, \"\"},\n\t\t{\"IN_RFC3021_MASK\", Const, 1, \"\"},\n\t\t{\"IN_RFC3021_NET\", Const, 1, \"\"},\n\t\t{\"IN_RFC3021_NSHIFT\", Const, 1, \"\"},\n\t\t{\"IN_UNMOUNT\", Const, 0, \"\"},\n\t\t{\"IOC_IN\", Const, 1, \"\"},\n\t\t{\"IOC_INOUT\", Const, 1, \"\"},\n\t\t{\"IOC_OUT\", Const, 1, \"\"},\n\t\t{\"IOC_VENDOR\", Const, 3, \"\"},\n\t\t{\"IOC_WS2\", Const, 1, \"\"},\n\t\t{\"IO_REPARSE_TAG_SYMLINK\", Const, 4, \"\"},\n\t\t{\"IPMreq\", Type, 0, \"\"},\n\t\t{\"IPMreq.Interface\", Field, 0, \"\"},\n\t\t{\"IPMreq.Multiaddr\", Field, 0, \"\"},\n\t\t{\"IPMreqn\", Type, 0, \"\"},\n\t\t{\"IPMreqn.Address\", Field, 0, \"\"},\n\t\t{\"IPMreqn.Ifindex\", Field, 0, \"\"},\n\t\t{\"IPMreqn.Multiaddr\", Field, 0, \"\"},\n\t\t{\"IPPROTO_3PC\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ADFS\", Const, 0, \"\"},\n\t\t{\"IPPROTO_AH\", Const, 0, \"\"},\n\t\t{\"IPPROTO_AHIP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_APES\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ARGUS\", Const, 0, \"\"},\n\t\t{\"IPPROTO_AX25\", Const, 0, \"\"},\n\t\t{\"IPPROTO_BHA\", Const, 0, \"\"},\n\t\t{\"IPPROTO_BLT\", Const, 0, \"\"},\n\t\t{\"IPPROTO_BRSATMON\", Const, 0, \"\"},\n\t\t{\"IPPROTO_CARP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_CFTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_CHAOS\", Const, 0, \"\"},\n\t\t{\"IPPROTO_CMTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_COMP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_CPHB\", Const, 0, \"\"},\n\t\t{\"IPPROTO_CPNX\", Const, 0, \"\"},\n\t\t{\"IPPROTO_DCCP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_DDP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_DGP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_DIVERT\", Const, 0, \"\"},\n\t\t{\"IPPROTO_DIVERT_INIT\", Const, 3, \"\"},\n\t\t{\"IPPROTO_DIVERT_RESP\", Const, 3, \"\"},\n\t\t{\"IPPROTO_DONE\", Const, 0, \"\"},\n\t\t{\"IPPROTO_DSTOPTS\", Const, 0, \"\"},\n\t\t{\"IPPROTO_EGP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_EMCON\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ENCAP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_EON\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ESP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ETHERIP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_FRAGMENT\", Const, 0, \"\"},\n\t\t{\"IPPROTO_GGP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_GMTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_GRE\", Const, 0, \"\"},\n\t\t{\"IPPROTO_HELLO\", Const, 0, \"\"},\n\t\t{\"IPPROTO_HMP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_HOPOPTS\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ICMP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ICMPV6\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IDP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IDPR\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IDRP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IGMP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IGP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IGRP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IL\", Const, 0, \"\"},\n\t\t{\"IPPROTO_INLSP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_INP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPCOMP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPCV\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPEIP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPIP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPPC\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPV4\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPV6\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPV6_ICMP\", Const, 1, \"\"},\n\t\t{\"IPPROTO_IRTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_KRYPTOLAN\", Const, 0, \"\"},\n\t\t{\"IPPROTO_LARP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_LEAF1\", Const, 0, \"\"},\n\t\t{\"IPPROTO_LEAF2\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MAX\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MAXID\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MEAS\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MH\", Const, 1, \"\"},\n\t\t{\"IPPROTO_MHRP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MICP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MOBILE\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MPLS\", Const, 1, \"\"},\n\t\t{\"IPPROTO_MTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MUX\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ND\", Const, 0, \"\"},\n\t\t{\"IPPROTO_NHRP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_NONE\", Const, 0, \"\"},\n\t\t{\"IPPROTO_NSP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_NVPII\", Const, 0, \"\"},\n\t\t{\"IPPROTO_OLD_DIVERT\", Const, 0, \"\"},\n\t\t{\"IPPROTO_OSPFIGP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_PFSYNC\", Const, 0, \"\"},\n\t\t{\"IPPROTO_PGM\", Const, 0, \"\"},\n\t\t{\"IPPROTO_PIGP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_PIM\", Const, 0, \"\"},\n\t\t{\"IPPROTO_PRM\", Const, 0, \"\"},\n\t\t{\"IPPROTO_PUP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_PVP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_RAW\", Const, 0, \"\"},\n\t\t{\"IPPROTO_RCCMON\", Const, 0, \"\"},\n\t\t{\"IPPROTO_RDP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ROUTING\", Const, 0, \"\"},\n\t\t{\"IPPROTO_RSVP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_RVD\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SATEXPAK\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SATMON\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SCCSP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SCTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SDRP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SEND\", Const, 1, \"\"},\n\t\t{\"IPPROTO_SEP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SKIP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SPACER\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SRPC\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ST\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SVMTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SWIPE\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TCF\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TCP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TLSP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TPXX\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TRUNK1\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TRUNK2\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_UDP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_UDPLITE\", Const, 0, \"\"},\n\t\t{\"IPPROTO_VINES\", Const, 0, \"\"},\n\t\t{\"IPPROTO_VISA\", Const, 0, \"\"},\n\t\t{\"IPPROTO_VMTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_VRRP\", Const, 1, \"\"},\n\t\t{\"IPPROTO_WBEXPAK\", Const, 0, \"\"},\n\t\t{\"IPPROTO_WBMON\", Const, 0, \"\"},\n\t\t{\"IPPROTO_WSN\", Const, 0, \"\"},\n\t\t{\"IPPROTO_XNET\", Const, 0, \"\"},\n\t\t{\"IPPROTO_XTP\", Const, 0, \"\"},\n\t\t{\"IPV6_2292DSTOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_2292HOPLIMIT\", Const, 0, \"\"},\n\t\t{\"IPV6_2292HOPOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_2292NEXTHOP\", Const, 0, \"\"},\n\t\t{\"IPV6_2292PKTINFO\", Const, 0, \"\"},\n\t\t{\"IPV6_2292PKTOPTIONS\", Const, 0, \"\"},\n\t\t{\"IPV6_2292RTHDR\", Const, 0, \"\"},\n\t\t{\"IPV6_ADDRFORM\", Const, 0, \"\"},\n\t\t{\"IPV6_ADD_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"IPV6_AUTHHDR\", Const, 0, \"\"},\n\t\t{\"IPV6_AUTH_LEVEL\", Const, 1, \"\"},\n\t\t{\"IPV6_AUTOFLOWLABEL\", Const, 0, \"\"},\n\t\t{\"IPV6_BINDANY\", Const, 0, \"\"},\n\t\t{\"IPV6_BINDV6ONLY\", Const, 0, \"\"},\n\t\t{\"IPV6_BOUND_IF\", Const, 0, \"\"},\n\t\t{\"IPV6_CHECKSUM\", Const, 0, \"\"},\n\t\t{\"IPV6_DEFAULT_MULTICAST_HOPS\", Const, 0, \"\"},\n\t\t{\"IPV6_DEFAULT_MULTICAST_LOOP\", Const, 0, \"\"},\n\t\t{\"IPV6_DEFHLIM\", Const, 0, \"\"},\n\t\t{\"IPV6_DONTFRAG\", Const, 0, \"\"},\n\t\t{\"IPV6_DROP_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"IPV6_DSTOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_ESP_NETWORK_LEVEL\", Const, 1, \"\"},\n\t\t{\"IPV6_ESP_TRANS_LEVEL\", Const, 1, \"\"},\n\t\t{\"IPV6_FAITH\", Const, 0, \"\"},\n\t\t{\"IPV6_FLOWINFO_MASK\", Const, 0, \"\"},\n\t\t{\"IPV6_FLOWLABEL_MASK\", Const, 0, \"\"},\n\t\t{\"IPV6_FRAGTTL\", Const, 0, \"\"},\n\t\t{\"IPV6_FW_ADD\", Const, 0, \"\"},\n\t\t{\"IPV6_FW_DEL\", Const, 0, \"\"},\n\t\t{\"IPV6_FW_FLUSH\", Const, 0, \"\"},\n\t\t{\"IPV6_FW_GET\", Const, 0, \"\"},\n\t\t{\"IPV6_FW_ZERO\", Const, 0, \"\"},\n\t\t{\"IPV6_HLIMDEC\", Const, 0, \"\"},\n\t\t{\"IPV6_HOPLIMIT\", Const, 0, \"\"},\n\t\t{\"IPV6_HOPOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_IPCOMP_LEVEL\", Const, 1, \"\"},\n\t\t{\"IPV6_IPSEC_POLICY\", Const, 0, \"\"},\n\t\t{\"IPV6_JOIN_ANYCAST\", Const, 0, \"\"},\n\t\t{\"IPV6_JOIN_GROUP\", Const, 0, \"\"},\n\t\t{\"IPV6_LEAVE_ANYCAST\", Const, 0, \"\"},\n\t\t{\"IPV6_LEAVE_GROUP\", Const, 0, \"\"},\n\t\t{\"IPV6_MAXHLIM\", Const, 0, \"\"},\n\t\t{\"IPV6_MAXOPTHDR\", Const, 0, \"\"},\n\t\t{\"IPV6_MAXPACKET\", Const, 0, \"\"},\n\t\t{\"IPV6_MAX_GROUP_SRC_FILTER\", Const, 0, \"\"},\n\t\t{\"IPV6_MAX_MEMBERSHIPS\", Const, 0, \"\"},\n\t\t{\"IPV6_MAX_SOCK_SRC_FILTER\", Const, 0, \"\"},\n\t\t{\"IPV6_MIN_MEMBERSHIPS\", Const, 0, \"\"},\n\t\t{\"IPV6_MMTU\", Const, 0, \"\"},\n\t\t{\"IPV6_MSFILTER\", Const, 0, \"\"},\n\t\t{\"IPV6_MTU\", Const, 0, \"\"},\n\t\t{\"IPV6_MTU_DISCOVER\", Const, 0, \"\"},\n\t\t{\"IPV6_MULTICAST_HOPS\", Const, 0, \"\"},\n\t\t{\"IPV6_MULTICAST_IF\", Const, 0, \"\"},\n\t\t{\"IPV6_MULTICAST_LOOP\", Const, 0, \"\"},\n\t\t{\"IPV6_NEXTHOP\", Const, 0, \"\"},\n\t\t{\"IPV6_OPTIONS\", Const, 1, \"\"},\n\t\t{\"IPV6_PATHMTU\", Const, 0, \"\"},\n\t\t{\"IPV6_PIPEX\", Const, 1, \"\"},\n\t\t{\"IPV6_PKTINFO\", Const, 0, \"\"},\n\t\t{\"IPV6_PMTUDISC_DO\", Const, 0, \"\"},\n\t\t{\"IPV6_PMTUDISC_DONT\", Const, 0, \"\"},\n\t\t{\"IPV6_PMTUDISC_PROBE\", Const, 0, \"\"},\n\t\t{\"IPV6_PMTUDISC_WANT\", Const, 0, \"\"},\n\t\t{\"IPV6_PORTRANGE\", Const, 0, \"\"},\n\t\t{\"IPV6_PORTRANGE_DEFAULT\", Const, 0, \"\"},\n\t\t{\"IPV6_PORTRANGE_HIGH\", Const, 0, \"\"},\n\t\t{\"IPV6_PORTRANGE_LOW\", Const, 0, \"\"},\n\t\t{\"IPV6_PREFER_TEMPADDR\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVDSTOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVDSTPORT\", Const, 3, \"\"},\n\t\t{\"IPV6_RECVERR\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVHOPLIMIT\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVHOPOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVPATHMTU\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVPKTINFO\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVRTHDR\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVTCLASS\", Const, 0, \"\"},\n\t\t{\"IPV6_ROUTER_ALERT\", Const, 0, \"\"},\n\t\t{\"IPV6_RTABLE\", Const, 1, \"\"},\n\t\t{\"IPV6_RTHDR\", Const, 0, \"\"},\n\t\t{\"IPV6_RTHDRDSTOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_RTHDR_LOOSE\", Const, 0, \"\"},\n\t\t{\"IPV6_RTHDR_STRICT\", Const, 0, \"\"},\n\t\t{\"IPV6_RTHDR_TYPE_0\", Const, 0, \"\"},\n\t\t{\"IPV6_RXDSTOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_RXHOPOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_SOCKOPT_RESERVED1\", Const, 0, \"\"},\n\t\t{\"IPV6_TCLASS\", Const, 0, \"\"},\n\t\t{\"IPV6_UNICAST_HOPS\", Const, 0, \"\"},\n\t\t{\"IPV6_USE_MIN_MTU\", Const, 0, \"\"},\n\t\t{\"IPV6_V6ONLY\", Const, 0, \"\"},\n\t\t{\"IPV6_VERSION\", Const, 0, \"\"},\n\t\t{\"IPV6_VERSION_MASK\", Const, 0, \"\"},\n\t\t{\"IPV6_XFRM_POLICY\", Const, 0, \"\"},\n\t\t{\"IP_ADD_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"IP_ADD_SOURCE_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"IP_AUTH_LEVEL\", Const, 1, \"\"},\n\t\t{\"IP_BINDANY\", Const, 0, \"\"},\n\t\t{\"IP_BLOCK_SOURCE\", Const, 0, \"\"},\n\t\t{\"IP_BOUND_IF\", Const, 0, \"\"},\n\t\t{\"IP_DEFAULT_MULTICAST_LOOP\", Const, 0, \"\"},\n\t\t{\"IP_DEFAULT_MULTICAST_TTL\", Const, 0, \"\"},\n\t\t{\"IP_DF\", Const, 0, \"\"},\n\t\t{\"IP_DIVERTFL\", Const, 3, \"\"},\n\t\t{\"IP_DONTFRAG\", Const, 0, \"\"},\n\t\t{\"IP_DROP_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"IP_DROP_SOURCE_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"IP_DUMMYNET3\", Const, 0, \"\"},\n\t\t{\"IP_DUMMYNET_CONFIGURE\", Const, 0, \"\"},\n\t\t{\"IP_DUMMYNET_DEL\", Const, 0, \"\"},\n\t\t{\"IP_DUMMYNET_FLUSH\", Const, 0, \"\"},\n\t\t{\"IP_DUMMYNET_GET\", Const, 0, \"\"},\n\t\t{\"IP_EF\", Const, 1, \"\"},\n\t\t{\"IP_ERRORMTU\", Const, 1, \"\"},\n\t\t{\"IP_ESP_NETWORK_LEVEL\", Const, 1, \"\"},\n\t\t{\"IP_ESP_TRANS_LEVEL\", Const, 1, \"\"},\n\t\t{\"IP_FAITH\", Const, 0, \"\"},\n\t\t{\"IP_FREEBIND\", Const, 0, \"\"},\n\t\t{\"IP_FW3\", Const, 0, \"\"},\n\t\t{\"IP_FW_ADD\", Const, 0, \"\"},\n\t\t{\"IP_FW_DEL\", Const, 0, \"\"},\n\t\t{\"IP_FW_FLUSH\", Const, 0, \"\"},\n\t\t{\"IP_FW_GET\", Const, 0, \"\"},\n\t\t{\"IP_FW_NAT_CFG\", Const, 0, \"\"},\n\t\t{\"IP_FW_NAT_DEL\", Const, 0, \"\"},\n\t\t{\"IP_FW_NAT_GET_CONFIG\", Const, 0, \"\"},\n\t\t{\"IP_FW_NAT_GET_LOG\", Const, 0, \"\"},\n\t\t{\"IP_FW_RESETLOG\", Const, 0, \"\"},\n\t\t{\"IP_FW_TABLE_ADD\", Const, 0, \"\"},\n\t\t{\"IP_FW_TABLE_DEL\", Const, 0, \"\"},\n\t\t{\"IP_FW_TABLE_FLUSH\", Const, 0, \"\"},\n\t\t{\"IP_FW_TABLE_GETSIZE\", Const, 0, \"\"},\n\t\t{\"IP_FW_TABLE_LIST\", Const, 0, \"\"},\n\t\t{\"IP_FW_ZERO\", Const, 0, \"\"},\n\t\t{\"IP_HDRINCL\", Const, 0, \"\"},\n\t\t{\"IP_IPCOMP_LEVEL\", Const, 1, \"\"},\n\t\t{\"IP_IPSECFLOWINFO\", Const, 1, \"\"},\n\t\t{\"IP_IPSEC_LOCAL_AUTH\", Const, 1, \"\"},\n\t\t{\"IP_IPSEC_LOCAL_CRED\", Const, 1, \"\"},\n\t\t{\"IP_IPSEC_LOCAL_ID\", Const, 1, \"\"},\n\t\t{\"IP_IPSEC_POLICY\", Const, 0, \"\"},\n\t\t{\"IP_IPSEC_REMOTE_AUTH\", Const, 1, \"\"},\n\t\t{\"IP_IPSEC_REMOTE_CRED\", Const, 1, \"\"},\n\t\t{\"IP_IPSEC_REMOTE_ID\", Const, 1, \"\"},\n\t\t{\"IP_MAXPACKET\", Const, 0, \"\"},\n\t\t{\"IP_MAX_GROUP_SRC_FILTER\", Const, 0, \"\"},\n\t\t{\"IP_MAX_MEMBERSHIPS\", Const, 0, \"\"},\n\t\t{\"IP_MAX_SOCK_MUTE_FILTER\", Const, 0, \"\"},\n\t\t{\"IP_MAX_SOCK_SRC_FILTER\", Const, 0, \"\"},\n\t\t{\"IP_MAX_SOURCE_FILTER\", Const, 0, \"\"},\n\t\t{\"IP_MF\", Const, 0, \"\"},\n\t\t{\"IP_MINFRAGSIZE\", Const, 1, \"\"},\n\t\t{\"IP_MINTTL\", Const, 0, \"\"},\n\t\t{\"IP_MIN_MEMBERSHIPS\", Const, 0, \"\"},\n\t\t{\"IP_MSFILTER\", Const, 0, \"\"},\n\t\t{\"IP_MSS\", Const, 0, \"\"},\n\t\t{\"IP_MTU\", Const, 0, \"\"},\n\t\t{\"IP_MTU_DISCOVER\", Const, 0, \"\"},\n\t\t{\"IP_MULTICAST_IF\", Const, 0, \"\"},\n\t\t{\"IP_MULTICAST_IFINDEX\", Const, 0, \"\"},\n\t\t{\"IP_MULTICAST_LOOP\", Const, 0, \"\"},\n\t\t{\"IP_MULTICAST_TTL\", Const, 0, \"\"},\n\t\t{\"IP_MULTICAST_VIF\", Const, 0, \"\"},\n\t\t{\"IP_NAT__XXX\", Const, 0, \"\"},\n\t\t{\"IP_OFFMASK\", Const, 0, \"\"},\n\t\t{\"IP_OLD_FW_ADD\", Const, 0, \"\"},\n\t\t{\"IP_OLD_FW_DEL\", Const, 0, \"\"},\n\t\t{\"IP_OLD_FW_FLUSH\", Const, 0, \"\"},\n\t\t{\"IP_OLD_FW_GET\", Const, 0, \"\"},\n\t\t{\"IP_OLD_FW_RESETLOG\", Const, 0, \"\"},\n\t\t{\"IP_OLD_FW_ZERO\", Const, 0, \"\"},\n\t\t{\"IP_ONESBCAST\", Const, 0, \"\"},\n\t\t{\"IP_OPTIONS\", Const, 0, \"\"},\n\t\t{\"IP_ORIGDSTADDR\", Const, 0, \"\"},\n\t\t{\"IP_PASSSEC\", Const, 0, \"\"},\n\t\t{\"IP_PIPEX\", Const, 1, \"\"},\n\t\t{\"IP_PKTINFO\", Const, 0, \"\"},\n\t\t{\"IP_PKTOPTIONS\", Const, 0, \"\"},\n\t\t{\"IP_PMTUDISC\", Const, 0, \"\"},\n\t\t{\"IP_PMTUDISC_DO\", Const, 0, \"\"},\n\t\t{\"IP_PMTUDISC_DONT\", Const, 0, \"\"},\n\t\t{\"IP_PMTUDISC_PROBE\", Const, 0, \"\"},\n\t\t{\"IP_PMTUDISC_WANT\", Const, 0, \"\"},\n\t\t{\"IP_PORTRANGE\", Const, 0, \"\"},\n\t\t{\"IP_PORTRANGE_DEFAULT\", Const, 0, \"\"},\n\t\t{\"IP_PORTRANGE_HIGH\", Const, 0, \"\"},\n\t\t{\"IP_PORTRANGE_LOW\", Const, 0, \"\"},\n\t\t{\"IP_RECVDSTADDR\", Const, 0, \"\"},\n\t\t{\"IP_RECVDSTPORT\", Const, 1, \"\"},\n\t\t{\"IP_RECVERR\", Const, 0, \"\"},\n\t\t{\"IP_RECVIF\", Const, 0, \"\"},\n\t\t{\"IP_RECVOPTS\", Const, 0, \"\"},\n\t\t{\"IP_RECVORIGDSTADDR\", Const, 0, \"\"},\n\t\t{\"IP_RECVPKTINFO\", Const, 0, \"\"},\n\t\t{\"IP_RECVRETOPTS\", Const, 0, \"\"},\n\t\t{\"IP_RECVRTABLE\", Const, 1, \"\"},\n\t\t{\"IP_RECVTOS\", Const, 0, \"\"},\n\t\t{\"IP_RECVTTL\", Const, 0, \"\"},\n\t\t{\"IP_RETOPTS\", Const, 0, \"\"},\n\t\t{\"IP_RF\", Const, 0, \"\"},\n\t\t{\"IP_ROUTER_ALERT\", Const, 0, \"\"},\n\t\t{\"IP_RSVP_OFF\", Const, 0, \"\"},\n\t\t{\"IP_RSVP_ON\", Const, 0, \"\"},\n\t\t{\"IP_RSVP_VIF_OFF\", Const, 0, \"\"},\n\t\t{\"IP_RSVP_VIF_ON\", Const, 0, \"\"},\n\t\t{\"IP_RTABLE\", Const, 1, \"\"},\n\t\t{\"IP_SENDSRCADDR\", Const, 0, \"\"},\n\t\t{\"IP_STRIPHDR\", Const, 0, \"\"},\n\t\t{\"IP_TOS\", Const, 0, \"\"},\n\t\t{\"IP_TRAFFIC_MGT_BACKGROUND\", Const, 0, \"\"},\n\t\t{\"IP_TRANSPARENT\", Const, 0, \"\"},\n\t\t{\"IP_TTL\", Const, 0, \"\"},\n\t\t{\"IP_UNBLOCK_SOURCE\", Const, 0, \"\"},\n\t\t{\"IP_XFRM_POLICY\", Const, 0, \"\"},\n\t\t{\"IPv6MTUInfo\", Type, 2, \"\"},\n\t\t{\"IPv6MTUInfo.Addr\", Field, 2, \"\"},\n\t\t{\"IPv6MTUInfo.Mtu\", Field, 2, \"\"},\n\t\t{\"IPv6Mreq\", Type, 0, \"\"},\n\t\t{\"IPv6Mreq.Interface\", Field, 0, \"\"},\n\t\t{\"IPv6Mreq.Multiaddr\", Field, 0, \"\"},\n\t\t{\"ISIG\", Const, 0, \"\"},\n\t\t{\"ISTRIP\", Const, 0, \"\"},\n\t\t{\"IUCLC\", Const, 0, \"\"},\n\t\t{\"IUTF8\", Const, 0, \"\"},\n\t\t{\"IXANY\", Const, 0, \"\"},\n\t\t{\"IXOFF\", Const, 0, \"\"},\n\t\t{\"IXON\", Const, 0, \"\"},\n\t\t{\"IfAddrmsg\", Type, 0, \"\"},\n\t\t{\"IfAddrmsg.Family\", Field, 0, \"\"},\n\t\t{\"IfAddrmsg.Flags\", Field, 0, \"\"},\n\t\t{\"IfAddrmsg.Index\", Field, 0, \"\"},\n\t\t{\"IfAddrmsg.Prefixlen\", Field, 0, \"\"},\n\t\t{\"IfAddrmsg.Scope\", Field, 0, \"\"},\n\t\t{\"IfAnnounceMsghdr\", Type, 1, \"\"},\n\t\t{\"IfAnnounceMsghdr.Hdrlen\", Field, 2, \"\"},\n\t\t{\"IfAnnounceMsghdr.Index\", Field, 1, \"\"},\n\t\t{\"IfAnnounceMsghdr.Msglen\", Field, 1, \"\"},\n\t\t{\"IfAnnounceMsghdr.Name\", Field, 1, \"\"},\n\t\t{\"IfAnnounceMsghdr.Type\", Field, 1, \"\"},\n\t\t{\"IfAnnounceMsghdr.Version\", Field, 1, \"\"},\n\t\t{\"IfAnnounceMsghdr.What\", Field, 1, \"\"},\n\t\t{\"IfData\", Type, 0, \"\"},\n\t\t{\"IfData.Addrlen\", Field, 0, \"\"},\n\t\t{\"IfData.Baudrate\", Field, 0, \"\"},\n\t\t{\"IfData.Capabilities\", Field, 2, \"\"},\n\t\t{\"IfData.Collisions\", Field, 0, \"\"},\n\t\t{\"IfData.Datalen\", Field, 0, \"\"},\n\t\t{\"IfData.Epoch\", Field, 0, \"\"},\n\t\t{\"IfData.Hdrlen\", Field, 0, \"\"},\n\t\t{\"IfData.Hwassist\", Field, 0, \"\"},\n\t\t{\"IfData.Ibytes\", Field, 0, \"\"},\n\t\t{\"IfData.Ierrors\", Field, 0, \"\"},\n\t\t{\"IfData.Imcasts\", Field, 0, \"\"},\n\t\t{\"IfData.Ipackets\", Field, 0, \"\"},\n\t\t{\"IfData.Iqdrops\", Field, 0, \"\"},\n\t\t{\"IfData.Lastchange\", Field, 0, \"\"},\n\t\t{\"IfData.Link_state\", Field, 0, \"\"},\n\t\t{\"IfData.Mclpool\", Field, 2, \"\"},\n\t\t{\"IfData.Metric\", Field, 0, \"\"},\n\t\t{\"IfData.Mtu\", Field, 0, \"\"},\n\t\t{\"IfData.Noproto\", Field, 0, \"\"},\n\t\t{\"IfData.Obytes\", Field, 0, \"\"},\n\t\t{\"IfData.Oerrors\", Field, 0, \"\"},\n\t\t{\"IfData.Omcasts\", Field, 0, \"\"},\n\t\t{\"IfData.Opackets\", Field, 0, \"\"},\n\t\t{\"IfData.Pad\", Field, 2, \"\"},\n\t\t{\"IfData.Pad_cgo_0\", Field, 2, \"\"},\n\t\t{\"IfData.Pad_cgo_1\", Field, 2, \"\"},\n\t\t{\"IfData.Physical\", Field, 0, \"\"},\n\t\t{\"IfData.Recvquota\", Field, 0, \"\"},\n\t\t{\"IfData.Recvtiming\", Field, 0, \"\"},\n\t\t{\"IfData.Reserved1\", Field, 0, \"\"},\n\t\t{\"IfData.Reserved2\", Field, 0, \"\"},\n\t\t{\"IfData.Spare_char1\", Field, 0, \"\"},\n\t\t{\"IfData.Spare_char2\", Field, 0, \"\"},\n\t\t{\"IfData.Type\", Field, 0, \"\"},\n\t\t{\"IfData.Typelen\", Field, 0, \"\"},\n\t\t{\"IfData.Unused1\", Field, 0, \"\"},\n\t\t{\"IfData.Unused2\", Field, 0, \"\"},\n\t\t{\"IfData.Xmitquota\", Field, 0, \"\"},\n\t\t{\"IfData.Xmittiming\", Field, 0, \"\"},\n\t\t{\"IfInfomsg\", Type, 0, \"\"},\n\t\t{\"IfInfomsg.Change\", Field, 0, \"\"},\n\t\t{\"IfInfomsg.Family\", Field, 0, \"\"},\n\t\t{\"IfInfomsg.Flags\", Field, 0, \"\"},\n\t\t{\"IfInfomsg.Index\", Field, 0, \"\"},\n\t\t{\"IfInfomsg.Type\", Field, 0, \"\"},\n\t\t{\"IfInfomsg.X__ifi_pad\", Field, 0, \"\"},\n\t\t{\"IfMsghdr\", Type, 0, \"\"},\n\t\t{\"IfMsghdr.Addrs\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Data\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Flags\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Hdrlen\", Field, 2, \"\"},\n\t\t{\"IfMsghdr.Index\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Msglen\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Pad1\", Field, 2, \"\"},\n\t\t{\"IfMsghdr.Pad2\", Field, 2, \"\"},\n\t\t{\"IfMsghdr.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Pad_cgo_1\", Field, 2, \"\"},\n\t\t{\"IfMsghdr.Tableid\", Field, 2, \"\"},\n\t\t{\"IfMsghdr.Type\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Version\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Xflags\", Field, 2, \"\"},\n\t\t{\"IfaMsghdr\", Type, 0, \"\"},\n\t\t{\"IfaMsghdr.Addrs\", Field, 0, \"\"},\n\t\t{\"IfaMsghdr.Flags\", Field, 0, \"\"},\n\t\t{\"IfaMsghdr.Hdrlen\", Field, 2, \"\"},\n\t\t{\"IfaMsghdr.Index\", Field, 0, \"\"},\n\t\t{\"IfaMsghdr.Metric\", Field, 0, \"\"},\n\t\t{\"IfaMsghdr.Msglen\", Field, 0, \"\"},\n\t\t{\"IfaMsghdr.Pad1\", Field, 2, \"\"},\n\t\t{\"IfaMsghdr.Pad2\", Field, 2, \"\"},\n\t\t{\"IfaMsghdr.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"IfaMsghdr.Tableid\", Field, 2, \"\"},\n\t\t{\"IfaMsghdr.Type\", Field, 0, \"\"},\n\t\t{\"IfaMsghdr.Version\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr\", Type, 0, \"\"},\n\t\t{\"IfmaMsghdr.Addrs\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr.Flags\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr.Index\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr.Msglen\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr.Type\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr.Version\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2\", Type, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Addrs\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Flags\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Index\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Msglen\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Refcount\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Type\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Version\", Field, 0, \"\"},\n\t\t{\"ImplementsGetwd\", Const, 0, \"\"},\n\t\t{\"Inet4Pktinfo\", Type, 0, \"\"},\n\t\t{\"Inet4Pktinfo.Addr\", Field, 0, \"\"},\n\t\t{\"Inet4Pktinfo.Ifindex\", Field, 0, \"\"},\n\t\t{\"Inet4Pktinfo.Spec_dst\", Field, 0, \"\"},\n\t\t{\"Inet6Pktinfo\", Type, 0, \"\"},\n\t\t{\"Inet6Pktinfo.Addr\", Field, 0, \"\"},\n\t\t{\"Inet6Pktinfo.Ifindex\", Field, 0, \"\"},\n\t\t{\"InotifyAddWatch\", Func, 0, \"func(fd int, pathname string, mask uint32) (watchdesc int, err error)\"},\n\t\t{\"InotifyEvent\", Type, 0, \"\"},\n\t\t{\"InotifyEvent.Cookie\", Field, 0, \"\"},\n\t\t{\"InotifyEvent.Len\", Field, 0, \"\"},\n\t\t{\"InotifyEvent.Mask\", Field, 0, \"\"},\n\t\t{\"InotifyEvent.Name\", Field, 0, \"\"},\n\t\t{\"InotifyEvent.Wd\", Field, 0, \"\"},\n\t\t{\"InotifyInit\", Func, 0, \"func() (fd int, err error)\"},\n\t\t{\"InotifyInit1\", Func, 0, \"func(flags int) (fd int, err error)\"},\n\t\t{\"InotifyRmWatch\", Func, 0, \"func(fd int, watchdesc uint32) (success int, err error)\"},\n\t\t{\"InterfaceAddrMessage\", Type, 0, \"\"},\n\t\t{\"InterfaceAddrMessage.Data\", Field, 0, \"\"},\n\t\t{\"InterfaceAddrMessage.Header\", Field, 0, \"\"},\n\t\t{\"InterfaceAnnounceMessage\", Type, 1, \"\"},\n\t\t{\"InterfaceAnnounceMessage.Header\", Field, 1, \"\"},\n\t\t{\"InterfaceInfo\", Type, 0, \"\"},\n\t\t{\"InterfaceInfo.Address\", Field, 0, \"\"},\n\t\t{\"InterfaceInfo.BroadcastAddress\", Field, 0, \"\"},\n\t\t{\"InterfaceInfo.Flags\", Field, 0, \"\"},\n\t\t{\"InterfaceInfo.Netmask\", Field, 0, \"\"},\n\t\t{\"InterfaceMessage\", Type, 0, \"\"},\n\t\t{\"InterfaceMessage.Data\", Field, 0, \"\"},\n\t\t{\"InterfaceMessage.Header\", Field, 0, \"\"},\n\t\t{\"InterfaceMulticastAddrMessage\", Type, 0, \"\"},\n\t\t{\"InterfaceMulticastAddrMessage.Data\", Field, 0, \"\"},\n\t\t{\"InterfaceMulticastAddrMessage.Header\", Field, 0, \"\"},\n\t\t{\"InvalidHandle\", Const, 0, \"\"},\n\t\t{\"Ioperm\", Func, 0, \"func(from int, num int, on int) (err error)\"},\n\t\t{\"Iopl\", Func, 0, \"func(level int) (err error)\"},\n\t\t{\"Iovec\", Type, 0, \"\"},\n\t\t{\"Iovec.Base\", Field, 0, \"\"},\n\t\t{\"Iovec.Len\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo\", Type, 0, \"\"},\n\t\t{\"IpAdapterInfo.AdapterName\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.Address\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.AddressLength\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.ComboIndex\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.CurrentIpAddress\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.Description\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.DhcpEnabled\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.DhcpServer\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.GatewayList\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.HaveWins\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.Index\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.IpAddressList\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.LeaseExpires\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.LeaseObtained\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.Next\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.PrimaryWinsServer\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.SecondaryWinsServer\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.Type\", Field, 0, \"\"},\n\t\t{\"IpAddrString\", Type, 0, \"\"},\n\t\t{\"IpAddrString.Context\", Field, 0, \"\"},\n\t\t{\"IpAddrString.IpAddress\", Field, 0, \"\"},\n\t\t{\"IpAddrString.IpMask\", Field, 0, \"\"},\n\t\t{\"IpAddrString.Next\", Field, 0, \"\"},\n\t\t{\"IpAddressString\", Type, 0, \"\"},\n\t\t{\"IpAddressString.String\", Field, 0, \"\"},\n\t\t{\"IpMaskString\", Type, 0, \"\"},\n\t\t{\"IpMaskString.String\", Field, 2, \"\"},\n\t\t{\"Issetugid\", Func, 0, \"\"},\n\t\t{\"KEY_ALL_ACCESS\", Const, 0, \"\"},\n\t\t{\"KEY_CREATE_LINK\", Const, 0, \"\"},\n\t\t{\"KEY_CREATE_SUB_KEY\", Const, 0, \"\"},\n\t\t{\"KEY_ENUMERATE_SUB_KEYS\", Const, 0, \"\"},\n\t\t{\"KEY_EXECUTE\", Const, 0, \"\"},\n\t\t{\"KEY_NOTIFY\", Const, 0, \"\"},\n\t\t{\"KEY_QUERY_VALUE\", Const, 0, \"\"},\n\t\t{\"KEY_READ\", Const, 0, \"\"},\n\t\t{\"KEY_SET_VALUE\", Const, 0, \"\"},\n\t\t{\"KEY_WOW64_32KEY\", Const, 0, \"\"},\n\t\t{\"KEY_WOW64_64KEY\", Const, 0, \"\"},\n\t\t{\"KEY_WRITE\", Const, 0, \"\"},\n\t\t{\"Kevent\", Func, 0, \"\"},\n\t\t{\"Kevent_t\", Type, 0, \"\"},\n\t\t{\"Kevent_t.Data\", Field, 0, \"\"},\n\t\t{\"Kevent_t.Fflags\", Field, 0, \"\"},\n\t\t{\"Kevent_t.Filter\", Field, 0, \"\"},\n\t\t{\"Kevent_t.Flags\", Field, 0, \"\"},\n\t\t{\"Kevent_t.Ident\", Field, 0, \"\"},\n\t\t{\"Kevent_t.Pad_cgo_0\", Field, 2, \"\"},\n\t\t{\"Kevent_t.Udata\", Field, 0, \"\"},\n\t\t{\"Kill\", Func, 0, \"func(pid int, sig Signal) (err error)\"},\n\t\t{\"Klogctl\", Func, 0, \"func(typ int, buf []byte) (n int, err error)\"},\n\t\t{\"Kqueue\", Func, 0, \"\"},\n\t\t{\"LANG_ENGLISH\", Const, 0, \"\"},\n\t\t{\"LAYERED_PROTOCOL\", Const, 2, \"\"},\n\t\t{\"LCNT_OVERLOAD_FLUSH\", Const, 1, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_CAD_OFF\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_CAD_ON\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_HALT\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_KEXEC\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_POWER_OFF\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_RESTART\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_RESTART2\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_SW_SUSPEND\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_MAGIC1\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_MAGIC2\", Const, 0, \"\"},\n\t\t{\"LOCK_EX\", Const, 0, \"\"},\n\t\t{\"LOCK_NB\", Const, 0, \"\"},\n\t\t{\"LOCK_SH\", Const, 0, \"\"},\n\t\t{\"LOCK_UN\", Const, 0, \"\"},\n\t\t{\"LazyDLL\", Type, 0, \"\"},\n\t\t{\"LazyDLL.Name\", Field, 0, \"\"},\n\t\t{\"LazyProc\", Type, 0, \"\"},\n\t\t{\"LazyProc.Name\", Field, 0, \"\"},\n\t\t{\"Lchown\", Func, 0, \"func(path string, uid int, gid int) (err error)\"},\n\t\t{\"Linger\", Type, 0, \"\"},\n\t\t{\"Linger.Linger\", Field, 0, \"\"},\n\t\t{\"Linger.Onoff\", Field, 0, \"\"},\n\t\t{\"Link\", Func, 0, \"func(oldpath string, newpath string) (err error)\"},\n\t\t{\"Listen\", Func, 0, \"func(s int, n int) (err error)\"},\n\t\t{\"Listxattr\", Func, 1, \"func(path string, dest []byte) (sz int, err error)\"},\n\t\t{\"LoadCancelIoEx\", Func, 1, \"\"},\n\t\t{\"LoadConnectEx\", Func, 1, \"\"},\n\t\t{\"LoadCreateSymbolicLink\", Func, 4, \"\"},\n\t\t{\"LoadDLL\", Func, 0, \"\"},\n\t\t{\"LoadGetAddrInfo\", Func, 1, \"\"},\n\t\t{\"LoadLibrary\", Func, 0, \"\"},\n\t\t{\"LoadSetFileCompletionNotificationModes\", Func, 2, \"\"},\n\t\t{\"LocalFree\", Func, 0, \"\"},\n\t\t{\"Log2phys_t\", Type, 0, \"\"},\n\t\t{\"Log2phys_t.Contigbytes\", Field, 0, \"\"},\n\t\t{\"Log2phys_t.Devoffset\", Field, 0, \"\"},\n\t\t{\"Log2phys_t.Flags\", Field, 0, \"\"},\n\t\t{\"LookupAccountName\", Func, 0, \"\"},\n\t\t{\"LookupAccountSid\", Func, 0, \"\"},\n\t\t{\"LookupSID\", Func, 0, \"\"},\n\t\t{\"LsfJump\", Func, 0, \"func(code int, k int, jt int, jf int) *SockFilter\"},\n\t\t{\"LsfSocket\", Func, 0, \"func(ifindex int, proto int) (int, error)\"},\n\t\t{\"LsfStmt\", Func, 0, \"func(code int, k int) *SockFilter\"},\n\t\t{\"Lstat\", Func, 0, \"func(path string, stat *Stat_t) (err error)\"},\n\t\t{\"MADV_AUTOSYNC\", Const, 1, \"\"},\n\t\t{\"MADV_CAN_REUSE\", Const, 0, \"\"},\n\t\t{\"MADV_CORE\", Const, 1, \"\"},\n\t\t{\"MADV_DOFORK\", Const, 0, \"\"},\n\t\t{\"MADV_DONTFORK\", Const, 0, \"\"},\n\t\t{\"MADV_DONTNEED\", Const, 0, \"\"},\n\t\t{\"MADV_FREE\", Const, 0, \"\"},\n\t\t{\"MADV_FREE_REUSABLE\", Const, 0, \"\"},\n\t\t{\"MADV_FREE_REUSE\", Const, 0, \"\"},\n\t\t{\"MADV_HUGEPAGE\", Const, 0, \"\"},\n\t\t{\"MADV_HWPOISON\", Const, 0, \"\"},\n\t\t{\"MADV_MERGEABLE\", Const, 0, \"\"},\n\t\t{\"MADV_NOCORE\", Const, 1, \"\"},\n\t\t{\"MADV_NOHUGEPAGE\", Const, 0, \"\"},\n\t\t{\"MADV_NORMAL\", Const, 0, \"\"},\n\t\t{\"MADV_NOSYNC\", Const, 1, \"\"},\n\t\t{\"MADV_PROTECT\", Const, 1, \"\"},\n\t\t{\"MADV_RANDOM\", Const, 0, \"\"},\n\t\t{\"MADV_REMOVE\", Const, 0, \"\"},\n\t\t{\"MADV_SEQUENTIAL\", Const, 0, \"\"},\n\t\t{\"MADV_SPACEAVAIL\", Const, 3, \"\"},\n\t\t{\"MADV_UNMERGEABLE\", Const, 0, \"\"},\n\t\t{\"MADV_WILLNEED\", Const, 0, \"\"},\n\t\t{\"MADV_ZERO_WIRED_PAGES\", Const, 0, \"\"},\n\t\t{\"MAP_32BIT\", Const, 0, \"\"},\n\t\t{\"MAP_ALIGNED_SUPER\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_16MB\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_1TB\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_256TB\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_4GB\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_64KB\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_64PB\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_MASK\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_SHIFT\", Const, 3, \"\"},\n\t\t{\"MAP_ANON\", Const, 0, \"\"},\n\t\t{\"MAP_ANONYMOUS\", Const, 0, \"\"},\n\t\t{\"MAP_COPY\", Const, 0, \"\"},\n\t\t{\"MAP_DENYWRITE\", Const, 0, \"\"},\n\t\t{\"MAP_EXECUTABLE\", Const, 0, \"\"},\n\t\t{\"MAP_FILE\", Const, 0, \"\"},\n\t\t{\"MAP_FIXED\", Const, 0, \"\"},\n\t\t{\"MAP_FLAGMASK\", Const, 3, \"\"},\n\t\t{\"MAP_GROWSDOWN\", Const, 0, \"\"},\n\t\t{\"MAP_HASSEMAPHORE\", Const, 0, \"\"},\n\t\t{\"MAP_HUGETLB\", Const, 0, \"\"},\n\t\t{\"MAP_INHERIT\", Const, 3, \"\"},\n\t\t{\"MAP_INHERIT_COPY\", Const, 3, \"\"},\n\t\t{\"MAP_INHERIT_DEFAULT\", Const, 3, \"\"},\n\t\t{\"MAP_INHERIT_DONATE_COPY\", Const, 3, \"\"},\n\t\t{\"MAP_INHERIT_NONE\", Const, 3, \"\"},\n\t\t{\"MAP_INHERIT_SHARE\", Const, 3, \"\"},\n\t\t{\"MAP_JIT\", Const, 0, \"\"},\n\t\t{\"MAP_LOCKED\", Const, 0, \"\"},\n\t\t{\"MAP_NOCACHE\", Const, 0, \"\"},\n\t\t{\"MAP_NOCORE\", Const, 1, \"\"},\n\t\t{\"MAP_NOEXTEND\", Const, 0, \"\"},\n\t\t{\"MAP_NONBLOCK\", Const, 0, \"\"},\n\t\t{\"MAP_NORESERVE\", Const, 0, \"\"},\n\t\t{\"MAP_NOSYNC\", Const, 1, \"\"},\n\t\t{\"MAP_POPULATE\", Const, 0, \"\"},\n\t\t{\"MAP_PREFAULT_READ\", Const, 1, \"\"},\n\t\t{\"MAP_PRIVATE\", Const, 0, \"\"},\n\t\t{\"MAP_RENAME\", Const, 0, \"\"},\n\t\t{\"MAP_RESERVED0080\", Const, 0, \"\"},\n\t\t{\"MAP_RESERVED0100\", Const, 1, \"\"},\n\t\t{\"MAP_SHARED\", Const, 0, \"\"},\n\t\t{\"MAP_STACK\", Const, 0, \"\"},\n\t\t{\"MAP_TRYFIXED\", Const, 3, \"\"},\n\t\t{\"MAP_TYPE\", Const, 0, \"\"},\n\t\t{\"MAP_WIRED\", Const, 3, \"\"},\n\t\t{\"MAXIMUM_REPARSE_DATA_BUFFER_SIZE\", Const, 4, \"\"},\n\t\t{\"MAXLEN_IFDESCR\", Const, 0, \"\"},\n\t\t{\"MAXLEN_PHYSADDR\", Const, 0, \"\"},\n\t\t{\"MAX_ADAPTER_ADDRESS_LENGTH\", Const, 0, \"\"},\n\t\t{\"MAX_ADAPTER_DESCRIPTION_LENGTH\", Const, 0, \"\"},\n\t\t{\"MAX_ADAPTER_NAME_LENGTH\", Const, 0, \"\"},\n\t\t{\"MAX_COMPUTERNAME_LENGTH\", Const, 0, \"\"},\n\t\t{\"MAX_INTERFACE_NAME_LEN\", Const, 0, \"\"},\n\t\t{\"MAX_LONG_PATH\", Const, 0, \"\"},\n\t\t{\"MAX_PATH\", Const, 0, \"\"},\n\t\t{\"MAX_PROTOCOL_CHAIN\", Const, 2, \"\"},\n\t\t{\"MCL_CURRENT\", Const, 0, \"\"},\n\t\t{\"MCL_FUTURE\", Const, 0, \"\"},\n\t\t{\"MNT_DETACH\", Const, 0, \"\"},\n\t\t{\"MNT_EXPIRE\", Const, 0, \"\"},\n\t\t{\"MNT_FORCE\", Const, 0, \"\"},\n\t\t{\"MSG_BCAST\", Const, 1, \"\"},\n\t\t{\"MSG_CMSG_CLOEXEC\", Const, 0, \"\"},\n\t\t{\"MSG_COMPAT\", Const, 0, \"\"},\n\t\t{\"MSG_CONFIRM\", Const, 0, \"\"},\n\t\t{\"MSG_CONTROLMBUF\", Const, 1, \"\"},\n\t\t{\"MSG_CTRUNC\", Const, 0, \"\"},\n\t\t{\"MSG_DONTROUTE\", Const, 0, \"\"},\n\t\t{\"MSG_DONTWAIT\", Const, 0, \"\"},\n\t\t{\"MSG_EOF\", Const, 0, \"\"},\n\t\t{\"MSG_EOR\", Const, 0, \"\"},\n\t\t{\"MSG_ERRQUEUE\", Const, 0, \"\"},\n\t\t{\"MSG_FASTOPEN\", Const, 1, \"\"},\n\t\t{\"MSG_FIN\", Const, 0, \"\"},\n\t\t{\"MSG_FLUSH\", Const, 0, \"\"},\n\t\t{\"MSG_HAVEMORE\", Const, 0, \"\"},\n\t\t{\"MSG_HOLD\", Const, 0, \"\"},\n\t\t{\"MSG_IOVUSRSPACE\", Const, 1, \"\"},\n\t\t{\"MSG_LENUSRSPACE\", Const, 1, \"\"},\n\t\t{\"MSG_MCAST\", Const, 1, \"\"},\n\t\t{\"MSG_MORE\", Const, 0, \"\"},\n\t\t{\"MSG_NAMEMBUF\", Const, 1, \"\"},\n\t\t{\"MSG_NBIO\", Const, 0, \"\"},\n\t\t{\"MSG_NEEDSA\", Const, 0, \"\"},\n\t\t{\"MSG_NOSIGNAL\", Const, 0, \"\"},\n\t\t{\"MSG_NOTIFICATION\", Const, 0, \"\"},\n\t\t{\"MSG_OOB\", Const, 0, \"\"},\n\t\t{\"MSG_PEEK\", Const, 0, \"\"},\n\t\t{\"MSG_PROXY\", Const, 0, \"\"},\n\t\t{\"MSG_RCVMORE\", Const, 0, \"\"},\n\t\t{\"MSG_RST\", Const, 0, \"\"},\n\t\t{\"MSG_SEND\", Const, 0, \"\"},\n\t\t{\"MSG_SYN\", Const, 0, \"\"},\n\t\t{\"MSG_TRUNC\", Const, 0, \"\"},\n\t\t{\"MSG_TRYHARD\", Const, 0, \"\"},\n\t\t{\"MSG_USERFLAGS\", Const, 1, \"\"},\n\t\t{\"MSG_WAITALL\", Const, 0, \"\"},\n\t\t{\"MSG_WAITFORONE\", Const, 0, \"\"},\n\t\t{\"MSG_WAITSTREAM\", Const, 0, \"\"},\n\t\t{\"MS_ACTIVE\", Const, 0, \"\"},\n\t\t{\"MS_ASYNC\", Const, 0, \"\"},\n\t\t{\"MS_BIND\", Const, 0, \"\"},\n\t\t{\"MS_DEACTIVATE\", Const, 0, \"\"},\n\t\t{\"MS_DIRSYNC\", Const, 0, \"\"},\n\t\t{\"MS_INVALIDATE\", Const, 0, \"\"},\n\t\t{\"MS_I_VERSION\", Const, 0, \"\"},\n\t\t{\"MS_KERNMOUNT\", Const, 0, \"\"},\n\t\t{\"MS_KILLPAGES\", Const, 0, \"\"},\n\t\t{\"MS_MANDLOCK\", Const, 0, \"\"},\n\t\t{\"MS_MGC_MSK\", Const, 0, \"\"},\n\t\t{\"MS_MGC_VAL\", Const, 0, \"\"},\n\t\t{\"MS_MOVE\", Const, 0, \"\"},\n\t\t{\"MS_NOATIME\", Const, 0, \"\"},\n\t\t{\"MS_NODEV\", Const, 0, \"\"},\n\t\t{\"MS_NODIRATIME\", Const, 0, \"\"},\n\t\t{\"MS_NOEXEC\", Const, 0, \"\"},\n\t\t{\"MS_NOSUID\", Const, 0, \"\"},\n\t\t{\"MS_NOUSER\", Const, 0, \"\"},\n\t\t{\"MS_POSIXACL\", Const, 0, \"\"},\n\t\t{\"MS_PRIVATE\", Const, 0, \"\"},\n\t\t{\"MS_RDONLY\", Const, 0, \"\"},\n\t\t{\"MS_REC\", Const, 0, \"\"},\n\t\t{\"MS_RELATIME\", Const, 0, \"\"},\n\t\t{\"MS_REMOUNT\", Const, 0, \"\"},\n\t\t{\"MS_RMT_MASK\", Const, 0, \"\"},\n\t\t{\"MS_SHARED\", Const, 0, \"\"},\n\t\t{\"MS_SILENT\", Const, 0, \"\"},\n\t\t{\"MS_SLAVE\", Const, 0, \"\"},\n\t\t{\"MS_STRICTATIME\", Const, 0, \"\"},\n\t\t{\"MS_SYNC\", Const, 0, \"\"},\n\t\t{\"MS_SYNCHRONOUS\", Const, 0, \"\"},\n\t\t{\"MS_UNBINDABLE\", Const, 0, \"\"},\n\t\t{\"Madvise\", Func, 0, \"func(b []byte, advice int) (err error)\"},\n\t\t{\"MapViewOfFile\", Func, 0, \"\"},\n\t\t{\"MaxTokenInfoClass\", Const, 0, \"\"},\n\t\t{\"Mclpool\", Type, 2, \"\"},\n\t\t{\"Mclpool.Alive\", Field, 2, \"\"},\n\t\t{\"Mclpool.Cwm\", Field, 2, \"\"},\n\t\t{\"Mclpool.Grown\", Field, 2, \"\"},\n\t\t{\"Mclpool.Hwm\", Field, 2, \"\"},\n\t\t{\"Mclpool.Lwm\", Field, 2, \"\"},\n\t\t{\"MibIfRow\", Type, 0, \"\"},\n\t\t{\"MibIfRow.AdminStatus\", Field, 0, \"\"},\n\t\t{\"MibIfRow.Descr\", Field, 0, \"\"},\n\t\t{\"MibIfRow.DescrLen\", Field, 0, \"\"},\n\t\t{\"MibIfRow.InDiscards\", Field, 0, \"\"},\n\t\t{\"MibIfRow.InErrors\", Field, 0, \"\"},\n\t\t{\"MibIfRow.InNUcastPkts\", Field, 0, \"\"},\n\t\t{\"MibIfRow.InOctets\", Field, 0, \"\"},\n\t\t{\"MibIfRow.InUcastPkts\", Field, 0, \"\"},\n\t\t{\"MibIfRow.InUnknownProtos\", Field, 0, \"\"},\n\t\t{\"MibIfRow.Index\", Field, 0, \"\"},\n\t\t{\"MibIfRow.LastChange\", Field, 0, \"\"},\n\t\t{\"MibIfRow.Mtu\", Field, 0, \"\"},\n\t\t{\"MibIfRow.Name\", Field, 0, \"\"},\n\t\t{\"MibIfRow.OperStatus\", Field, 0, \"\"},\n\t\t{\"MibIfRow.OutDiscards\", Field, 0, \"\"},\n\t\t{\"MibIfRow.OutErrors\", Field, 0, \"\"},\n\t\t{\"MibIfRow.OutNUcastPkts\", Field, 0, \"\"},\n\t\t{\"MibIfRow.OutOctets\", Field, 0, \"\"},\n\t\t{\"MibIfRow.OutQLen\", Field, 0, \"\"},\n\t\t{\"MibIfRow.OutUcastPkts\", Field, 0, \"\"},\n\t\t{\"MibIfRow.PhysAddr\", Field, 0, \"\"},\n\t\t{\"MibIfRow.PhysAddrLen\", Field, 0, \"\"},\n\t\t{\"MibIfRow.Speed\", Field, 0, \"\"},\n\t\t{\"MibIfRow.Type\", Field, 0, \"\"},\n\t\t{\"Mkdir\", Func, 0, \"func(path string, mode uint32) (err error)\"},\n\t\t{\"Mkdirat\", Func, 0, \"func(dirfd int, path string, mode uint32) (err error)\"},\n\t\t{\"Mkfifo\", Func, 0, \"func(path string, mode uint32) (err error)\"},\n\t\t{\"Mknod\", Func, 0, \"func(path string, mode uint32, dev int) (err error)\"},\n\t\t{\"Mknodat\", Func, 0, \"func(dirfd int, path string, mode uint32, dev int) (err error)\"},\n\t\t{\"Mlock\", Func, 0, \"func(b []byte) (err error)\"},\n\t\t{\"Mlockall\", Func, 0, \"func(flags int) (err error)\"},\n\t\t{\"Mmap\", Func, 0, \"func(fd int, offset int64, length int, prot int, flags int) (data []byte, err error)\"},\n\t\t{\"Mount\", Func, 0, \"func(source string, target string, fstype string, flags uintptr, data string) (err error)\"},\n\t\t{\"MoveFile\", Func, 0, \"\"},\n\t\t{\"Mprotect\", Func, 0, \"func(b []byte, prot int) (err error)\"},\n\t\t{\"Msghdr\", Type, 0, \"\"},\n\t\t{\"Msghdr.Control\", Field, 0, \"\"},\n\t\t{\"Msghdr.Controllen\", Field, 0, \"\"},\n\t\t{\"Msghdr.Flags\", Field, 0, \"\"},\n\t\t{\"Msghdr.Iov\", Field, 0, \"\"},\n\t\t{\"Msghdr.Iovlen\", Field, 0, \"\"},\n\t\t{\"Msghdr.Name\", Field, 0, \"\"},\n\t\t{\"Msghdr.Namelen\", Field, 0, \"\"},\n\t\t{\"Msghdr.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Msghdr.Pad_cgo_1\", Field, 0, \"\"},\n\t\t{\"Munlock\", Func, 0, \"func(b []byte) (err error)\"},\n\t\t{\"Munlockall\", Func, 0, \"func() (err error)\"},\n\t\t{\"Munmap\", Func, 0, \"func(b []byte) (err error)\"},\n\t\t{\"MustLoadDLL\", Func, 0, \"\"},\n\t\t{\"NAME_MAX\", Const, 0, \"\"},\n\t\t{\"NETLINK_ADD_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"NETLINK_AUDIT\", Const, 0, \"\"},\n\t\t{\"NETLINK_BROADCAST_ERROR\", Const, 0, \"\"},\n\t\t{\"NETLINK_CONNECTOR\", Const, 0, \"\"},\n\t\t{\"NETLINK_DNRTMSG\", Const, 0, \"\"},\n\t\t{\"NETLINK_DROP_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"NETLINK_ECRYPTFS\", Const, 0, \"\"},\n\t\t{\"NETLINK_FIB_LOOKUP\", Const, 0, \"\"},\n\t\t{\"NETLINK_FIREWALL\", Const, 0, \"\"},\n\t\t{\"NETLINK_GENERIC\", Const, 0, \"\"},\n\t\t{\"NETLINK_INET_DIAG\", Const, 0, \"\"},\n\t\t{\"NETLINK_IP6_FW\", Const, 0, \"\"},\n\t\t{\"NETLINK_ISCSI\", Const, 0, \"\"},\n\t\t{\"NETLINK_KOBJECT_UEVENT\", Const, 0, \"\"},\n\t\t{\"NETLINK_NETFILTER\", Const, 0, \"\"},\n\t\t{\"NETLINK_NFLOG\", Const, 0, \"\"},\n\t\t{\"NETLINK_NO_ENOBUFS\", Const, 0, \"\"},\n\t\t{\"NETLINK_PKTINFO\", Const, 0, \"\"},\n\t\t{\"NETLINK_RDMA\", Const, 0, \"\"},\n\t\t{\"NETLINK_ROUTE\", Const, 0, \"\"},\n\t\t{\"NETLINK_SCSITRANSPORT\", Const, 0, \"\"},\n\t\t{\"NETLINK_SELINUX\", Const, 0, \"\"},\n\t\t{\"NETLINK_UNUSED\", Const, 0, \"\"},\n\t\t{\"NETLINK_USERSOCK\", Const, 0, \"\"},\n\t\t{\"NETLINK_XFRM\", Const, 0, \"\"},\n\t\t{\"NET_RT_DUMP\", Const, 0, \"\"},\n\t\t{\"NET_RT_DUMP2\", Const, 0, \"\"},\n\t\t{\"NET_RT_FLAGS\", Const, 0, \"\"},\n\t\t{\"NET_RT_IFLIST\", Const, 0, \"\"},\n\t\t{\"NET_RT_IFLIST2\", Const, 0, \"\"},\n\t\t{\"NET_RT_IFLISTL\", Const, 1, \"\"},\n\t\t{\"NET_RT_IFMALIST\", Const, 0, \"\"},\n\t\t{\"NET_RT_MAXID\", Const, 0, \"\"},\n\t\t{\"NET_RT_OIFLIST\", Const, 1, \"\"},\n\t\t{\"NET_RT_OOIFLIST\", Const, 1, \"\"},\n\t\t{\"NET_RT_STAT\", Const, 0, \"\"},\n\t\t{\"NET_RT_STATS\", Const, 1, \"\"},\n\t\t{\"NET_RT_TABLE\", Const, 1, \"\"},\n\t\t{\"NET_RT_TRASH\", Const, 0, \"\"},\n\t\t{\"NLA_ALIGNTO\", Const, 0, \"\"},\n\t\t{\"NLA_F_NESTED\", Const, 0, \"\"},\n\t\t{\"NLA_F_NET_BYTEORDER\", Const, 0, \"\"},\n\t\t{\"NLA_HDRLEN\", Const, 0, \"\"},\n\t\t{\"NLMSG_ALIGNTO\", Const, 0, \"\"},\n\t\t{\"NLMSG_DONE\", Const, 0, \"\"},\n\t\t{\"NLMSG_ERROR\", Const, 0, \"\"},\n\t\t{\"NLMSG_HDRLEN\", Const, 0, \"\"},\n\t\t{\"NLMSG_MIN_TYPE\", Const, 0, \"\"},\n\t\t{\"NLMSG_NOOP\", Const, 0, \"\"},\n\t\t{\"NLMSG_OVERRUN\", Const, 0, \"\"},\n\t\t{\"NLM_F_ACK\", Const, 0, \"\"},\n\t\t{\"NLM_F_APPEND\", Const, 0, \"\"},\n\t\t{\"NLM_F_ATOMIC\", Const, 0, \"\"},\n\t\t{\"NLM_F_CREATE\", Const, 0, \"\"},\n\t\t{\"NLM_F_DUMP\", Const, 0, \"\"},\n\t\t{\"NLM_F_ECHO\", Const, 0, \"\"},\n\t\t{\"NLM_F_EXCL\", Const, 0, \"\"},\n\t\t{\"NLM_F_MATCH\", Const, 0, \"\"},\n\t\t{\"NLM_F_MULTI\", Const, 0, \"\"},\n\t\t{\"NLM_F_REPLACE\", Const, 0, \"\"},\n\t\t{\"NLM_F_REQUEST\", Const, 0, \"\"},\n\t\t{\"NLM_F_ROOT\", Const, 0, \"\"},\n\t\t{\"NOFLSH\", Const, 0, \"\"},\n\t\t{\"NOTE_ABSOLUTE\", Const, 0, \"\"},\n\t\t{\"NOTE_ATTRIB\", Const, 0, \"\"},\n\t\t{\"NOTE_BACKGROUND\", Const, 16, \"\"},\n\t\t{\"NOTE_CHILD\", Const, 0, \"\"},\n\t\t{\"NOTE_CRITICAL\", Const, 16, \"\"},\n\t\t{\"NOTE_DELETE\", Const, 0, \"\"},\n\t\t{\"NOTE_EOF\", Const, 1, \"\"},\n\t\t{\"NOTE_EXEC\", Const, 0, \"\"},\n\t\t{\"NOTE_EXIT\", Const, 0, \"\"},\n\t\t{\"NOTE_EXITSTATUS\", Const, 0, \"\"},\n\t\t{\"NOTE_EXIT_CSERROR\", Const, 16, \"\"},\n\t\t{\"NOTE_EXIT_DECRYPTFAIL\", Const, 16, \"\"},\n\t\t{\"NOTE_EXIT_DETAIL\", Const, 16, \"\"},\n\t\t{\"NOTE_EXIT_DETAIL_MASK\", Const, 16, \"\"},\n\t\t{\"NOTE_EXIT_MEMORY\", Const, 16, \"\"},\n\t\t{\"NOTE_EXIT_REPARENTED\", Const, 16, \"\"},\n\t\t{\"NOTE_EXTEND\", Const, 0, \"\"},\n\t\t{\"NOTE_FFAND\", Const, 0, \"\"},\n\t\t{\"NOTE_FFCOPY\", Const, 0, \"\"},\n\t\t{\"NOTE_FFCTRLMASK\", Const, 0, \"\"},\n\t\t{\"NOTE_FFLAGSMASK\", Const, 0, \"\"},\n\t\t{\"NOTE_FFNOP\", Const, 0, \"\"},\n\t\t{\"NOTE_FFOR\", Const, 0, \"\"},\n\t\t{\"NOTE_FORK\", Const, 0, \"\"},\n\t\t{\"NOTE_LEEWAY\", Const, 16, \"\"},\n\t\t{\"NOTE_LINK\", Const, 0, \"\"},\n\t\t{\"NOTE_LOWAT\", Const, 0, \"\"},\n\t\t{\"NOTE_NONE\", Const, 0, \"\"},\n\t\t{\"NOTE_NSECONDS\", Const, 0, \"\"},\n\t\t{\"NOTE_PCTRLMASK\", Const, 0, \"\"},\n\t\t{\"NOTE_PDATAMASK\", Const, 0, \"\"},\n\t\t{\"NOTE_REAP\", Const, 0, \"\"},\n\t\t{\"NOTE_RENAME\", Const, 0, \"\"},\n\t\t{\"NOTE_RESOURCEEND\", Const, 0, \"\"},\n\t\t{\"NOTE_REVOKE\", Const, 0, \"\"},\n\t\t{\"NOTE_SECONDS\", Const, 0, \"\"},\n\t\t{\"NOTE_SIGNAL\", Const, 0, \"\"},\n\t\t{\"NOTE_TRACK\", Const, 0, \"\"},\n\t\t{\"NOTE_TRACKERR\", Const, 0, \"\"},\n\t\t{\"NOTE_TRIGGER\", Const, 0, \"\"},\n\t\t{\"NOTE_TRUNCATE\", Const, 1, \"\"},\n\t\t{\"NOTE_USECONDS\", Const, 0, \"\"},\n\t\t{\"NOTE_VM_ERROR\", Const, 0, \"\"},\n\t\t{\"NOTE_VM_PRESSURE\", Const, 0, \"\"},\n\t\t{\"NOTE_VM_PRESSURE_SUDDEN_TERMINATE\", Const, 0, \"\"},\n\t\t{\"NOTE_VM_PRESSURE_TERMINATE\", Const, 0, \"\"},\n\t\t{\"NOTE_WRITE\", Const, 0, \"\"},\n\t\t{\"NameCanonical\", Const, 0, \"\"},\n\t\t{\"NameCanonicalEx\", Const, 0, \"\"},\n\t\t{\"NameDisplay\", Const, 0, \"\"},\n\t\t{\"NameDnsDomain\", Const, 0, \"\"},\n\t\t{\"NameFullyQualifiedDN\", Const, 0, \"\"},\n\t\t{\"NameSamCompatible\", Const, 0, \"\"},\n\t\t{\"NameServicePrincipal\", Const, 0, \"\"},\n\t\t{\"NameUniqueId\", Const, 0, \"\"},\n\t\t{\"NameUnknown\", Const, 0, \"\"},\n\t\t{\"NameUserPrincipal\", Const, 0, \"\"},\n\t\t{\"Nanosleep\", Func, 0, \"func(time *Timespec, leftover *Timespec) (err error)\"},\n\t\t{\"NetApiBufferFree\", Func, 0, \"\"},\n\t\t{\"NetGetJoinInformation\", Func, 2, \"\"},\n\t\t{\"NetSetupDomainName\", Const, 2, \"\"},\n\t\t{\"NetSetupUnjoined\", Const, 2, \"\"},\n\t\t{\"NetSetupUnknownStatus\", Const, 2, \"\"},\n\t\t{\"NetSetupWorkgroupName\", Const, 2, \"\"},\n\t\t{\"NetUserGetInfo\", Func, 0, \"\"},\n\t\t{\"NetlinkMessage\", Type, 0, \"\"},\n\t\t{\"NetlinkMessage.Data\", Field, 0, \"\"},\n\t\t{\"NetlinkMessage.Header\", Field, 0, \"\"},\n\t\t{\"NetlinkRIB\", Func, 0, \"func(proto int, family int) ([]byte, error)\"},\n\t\t{\"NetlinkRouteAttr\", Type, 0, \"\"},\n\t\t{\"NetlinkRouteAttr.Attr\", Field, 0, \"\"},\n\t\t{\"NetlinkRouteAttr.Value\", Field, 0, \"\"},\n\t\t{\"NetlinkRouteRequest\", Type, 0, \"\"},\n\t\t{\"NetlinkRouteRequest.Data\", Field, 0, \"\"},\n\t\t{\"NetlinkRouteRequest.Header\", Field, 0, \"\"},\n\t\t{\"NewCallback\", Func, 0, \"\"},\n\t\t{\"NewCallbackCDecl\", Func, 3, \"\"},\n\t\t{\"NewLazyDLL\", Func, 0, \"\"},\n\t\t{\"NlAttr\", Type, 0, \"\"},\n\t\t{\"NlAttr.Len\", Field, 0, \"\"},\n\t\t{\"NlAttr.Type\", Field, 0, \"\"},\n\t\t{\"NlMsgerr\", Type, 0, \"\"},\n\t\t{\"NlMsgerr.Error\", Field, 0, \"\"},\n\t\t{\"NlMsgerr.Msg\", Field, 0, \"\"},\n\t\t{\"NlMsghdr\", Type, 0, \"\"},\n\t\t{\"NlMsghdr.Flags\", Field, 0, \"\"},\n\t\t{\"NlMsghdr.Len\", Field, 0, \"\"},\n\t\t{\"NlMsghdr.Pid\", Field, 0, \"\"},\n\t\t{\"NlMsghdr.Seq\", Field, 0, \"\"},\n\t\t{\"NlMsghdr.Type\", Field, 0, \"\"},\n\t\t{\"NsecToFiletime\", Func, 0, \"\"},\n\t\t{\"NsecToTimespec\", Func, 0, \"func(nsec int64) Timespec\"},\n\t\t{\"NsecToTimeval\", Func, 0, \"func(nsec int64) Timeval\"},\n\t\t{\"Ntohs\", Func, 0, \"\"},\n\t\t{\"OCRNL\", Const, 0, \"\"},\n\t\t{\"OFDEL\", Const, 0, \"\"},\n\t\t{\"OFILL\", Const, 0, \"\"},\n\t\t{\"OFIOGETBMAP\", Const, 1, \"\"},\n\t\t{\"OID_PKIX_KP_SERVER_AUTH\", Var, 0, \"\"},\n\t\t{\"OID_SERVER_GATED_CRYPTO\", Var, 0, \"\"},\n\t\t{\"OID_SGC_NETSCAPE\", Var, 0, \"\"},\n\t\t{\"OLCUC\", Const, 0, \"\"},\n\t\t{\"ONLCR\", Const, 0, \"\"},\n\t\t{\"ONLRET\", Const, 0, \"\"},\n\t\t{\"ONOCR\", Const, 0, \"\"},\n\t\t{\"ONOEOT\", Const, 1, \"\"},\n\t\t{\"OPEN_ALWAYS\", Const, 0, \"\"},\n\t\t{\"OPEN_EXISTING\", Const, 0, \"\"},\n\t\t{\"OPOST\", Const, 0, \"\"},\n\t\t{\"O_ACCMODE\", Const, 0, \"\"},\n\t\t{\"O_ALERT\", Const, 0, \"\"},\n\t\t{\"O_ALT_IO\", Const, 1, \"\"},\n\t\t{\"O_APPEND\", Const, 0, \"\"},\n\t\t{\"O_ASYNC\", Const, 0, \"\"},\n\t\t{\"O_CLOEXEC\", Const, 0, \"\"},\n\t\t{\"O_CREAT\", Const, 0, \"\"},\n\t\t{\"O_DIRECT\", Const, 0, \"\"},\n\t\t{\"O_DIRECTORY\", Const, 0, \"\"},\n\t\t{\"O_DP_GETRAWENCRYPTED\", Const, 16, \"\"},\n\t\t{\"O_DSYNC\", Const, 0, \"\"},\n\t\t{\"O_EVTONLY\", Const, 0, \"\"},\n\t\t{\"O_EXCL\", Const, 0, \"\"},\n\t\t{\"O_EXEC\", Const, 0, \"\"},\n\t\t{\"O_EXLOCK\", Const, 0, \"\"},\n\t\t{\"O_FSYNC\", Const, 0, \"\"},\n\t\t{\"O_LARGEFILE\", Const, 0, \"\"},\n\t\t{\"O_NDELAY\", Const, 0, \"\"},\n\t\t{\"O_NOATIME\", Const, 0, \"\"},\n\t\t{\"O_NOCTTY\", Const, 0, \"\"},\n\t\t{\"O_NOFOLLOW\", Const, 0, \"\"},\n\t\t{\"O_NONBLOCK\", Const, 0, \"\"},\n\t\t{\"O_NOSIGPIPE\", Const, 1, \"\"},\n\t\t{\"O_POPUP\", Const, 0, \"\"},\n\t\t{\"O_RDONLY\", Const, 0, \"\"},\n\t\t{\"O_RDWR\", Const, 0, \"\"},\n\t\t{\"O_RSYNC\", Const, 0, \"\"},\n\t\t{\"O_SHLOCK\", Const, 0, \"\"},\n\t\t{\"O_SYMLINK\", Const, 0, \"\"},\n\t\t{\"O_SYNC\", Const, 0, \"\"},\n\t\t{\"O_TRUNC\", Const, 0, \"\"},\n\t\t{\"O_TTY_INIT\", Const, 0, \"\"},\n\t\t{\"O_WRONLY\", Const, 0, \"\"},\n\t\t{\"Open\", Func, 0, \"func(path string, mode int, perm uint32) (fd int, err error)\"},\n\t\t{\"OpenCurrentProcessToken\", Func, 0, \"\"},\n\t\t{\"OpenProcess\", Func, 0, \"\"},\n\t\t{\"OpenProcessToken\", Func, 0, \"\"},\n\t\t{\"Openat\", Func, 0, \"func(dirfd int, path string, flags int, mode uint32) (fd int, err error)\"},\n\t\t{\"Overlapped\", Type, 0, \"\"},\n\t\t{\"Overlapped.HEvent\", Field, 0, \"\"},\n\t\t{\"Overlapped.Internal\", Field, 0, \"\"},\n\t\t{\"Overlapped.InternalHigh\", Field, 0, \"\"},\n\t\t{\"Overlapped.Offset\", Field, 0, \"\"},\n\t\t{\"Overlapped.OffsetHigh\", Field, 0, \"\"},\n\t\t{\"PACKET_ADD_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"PACKET_BROADCAST\", Const, 0, \"\"},\n\t\t{\"PACKET_DROP_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"PACKET_FASTROUTE\", Const, 0, \"\"},\n\t\t{\"PACKET_HOST\", Const, 0, \"\"},\n\t\t{\"PACKET_LOOPBACK\", Const, 0, \"\"},\n\t\t{\"PACKET_MR_ALLMULTI\", Const, 0, \"\"},\n\t\t{\"PACKET_MR_MULTICAST\", Const, 0, \"\"},\n\t\t{\"PACKET_MR_PROMISC\", Const, 0, \"\"},\n\t\t{\"PACKET_MULTICAST\", Const, 0, \"\"},\n\t\t{\"PACKET_OTHERHOST\", Const, 0, \"\"},\n\t\t{\"PACKET_OUTGOING\", Const, 0, \"\"},\n\t\t{\"PACKET_RECV_OUTPUT\", Const, 0, \"\"},\n\t\t{\"PACKET_RX_RING\", Const, 0, \"\"},\n\t\t{\"PACKET_STATISTICS\", Const, 0, \"\"},\n\t\t{\"PAGE_EXECUTE_READ\", Const, 0, \"\"},\n\t\t{\"PAGE_EXECUTE_READWRITE\", Const, 0, \"\"},\n\t\t{\"PAGE_EXECUTE_WRITECOPY\", Const, 0, \"\"},\n\t\t{\"PAGE_READONLY\", Const, 0, \"\"},\n\t\t{\"PAGE_READWRITE\", Const, 0, \"\"},\n\t\t{\"PAGE_WRITECOPY\", Const, 0, \"\"},\n\t\t{\"PARENB\", Const, 0, \"\"},\n\t\t{\"PARMRK\", Const, 0, \"\"},\n\t\t{\"PARODD\", Const, 0, \"\"},\n\t\t{\"PENDIN\", Const, 0, \"\"},\n\t\t{\"PFL_HIDDEN\", Const, 2, \"\"},\n\t\t{\"PFL_MATCHES_PROTOCOL_ZERO\", Const, 2, \"\"},\n\t\t{\"PFL_MULTIPLE_PROTO_ENTRIES\", Const, 2, \"\"},\n\t\t{\"PFL_NETWORKDIRECT_PROVIDER\", Const, 2, \"\"},\n\t\t{\"PFL_RECOMMENDED_PROTO_ENTRY\", Const, 2, \"\"},\n\t\t{\"PF_FLUSH\", Const, 1, \"\"},\n\t\t{\"PKCS_7_ASN_ENCODING\", Const, 0, \"\"},\n\t\t{\"PMC5_PIPELINE_FLUSH\", Const, 1, \"\"},\n\t\t{\"PRIO_PGRP\", Const, 2, \"\"},\n\t\t{\"PRIO_PROCESS\", Const, 2, \"\"},\n\t\t{\"PRIO_USER\", Const, 2, \"\"},\n\t\t{\"PRI_IOFLUSH\", Const, 1, \"\"},\n\t\t{\"PROCESS_QUERY_INFORMATION\", Const, 0, \"\"},\n\t\t{\"PROCESS_TERMINATE\", Const, 2, \"\"},\n\t\t{\"PROT_EXEC\", Const, 0, \"\"},\n\t\t{\"PROT_GROWSDOWN\", Const, 0, \"\"},\n\t\t{\"PROT_GROWSUP\", Const, 0, \"\"},\n\t\t{\"PROT_NONE\", Const, 0, \"\"},\n\t\t{\"PROT_READ\", Const, 0, \"\"},\n\t\t{\"PROT_WRITE\", Const, 0, \"\"},\n\t\t{\"PROV_DH_SCHANNEL\", Const, 0, \"\"},\n\t\t{\"PROV_DSS\", Const, 0, \"\"},\n\t\t{\"PROV_DSS_DH\", Const, 0, \"\"},\n\t\t{\"PROV_EC_ECDSA_FULL\", Const, 0, \"\"},\n\t\t{\"PROV_EC_ECDSA_SIG\", Const, 0, \"\"},\n\t\t{\"PROV_EC_ECNRA_FULL\", Const, 0, \"\"},\n\t\t{\"PROV_EC_ECNRA_SIG\", Const, 0, \"\"},\n\t\t{\"PROV_FORTEZZA\", Const, 0, \"\"},\n\t\t{\"PROV_INTEL_SEC\", Const, 0, \"\"},\n\t\t{\"PROV_MS_EXCHANGE\", Const, 0, \"\"},\n\t\t{\"PROV_REPLACE_OWF\", Const, 0, \"\"},\n\t\t{\"PROV_RNG\", Const, 0, \"\"},\n\t\t{\"PROV_RSA_AES\", Const, 0, \"\"},\n\t\t{\"PROV_RSA_FULL\", Const, 0, \"\"},\n\t\t{\"PROV_RSA_SCHANNEL\", Const, 0, \"\"},\n\t\t{\"PROV_RSA_SIG\", Const, 0, \"\"},\n\t\t{\"PROV_SPYRUS_LYNKS\", Const, 0, \"\"},\n\t\t{\"PROV_SSL\", Const, 0, \"\"},\n\t\t{\"PR_CAPBSET_DROP\", Const, 0, \"\"},\n\t\t{\"PR_CAPBSET_READ\", Const, 0, \"\"},\n\t\t{\"PR_CLEAR_SECCOMP_FILTER\", Const, 0, \"\"},\n\t\t{\"PR_ENDIAN_BIG\", Const, 0, \"\"},\n\t\t{\"PR_ENDIAN_LITTLE\", Const, 0, \"\"},\n\t\t{\"PR_ENDIAN_PPC_LITTLE\", Const, 0, \"\"},\n\t\t{\"PR_FPEMU_NOPRINT\", Const, 0, \"\"},\n\t\t{\"PR_FPEMU_SIGFPE\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_ASYNC\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_DISABLED\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_DIV\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_INV\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_NONRECOV\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_OVF\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_PRECISE\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_RES\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_SW_ENABLE\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_UND\", Const, 0, \"\"},\n\t\t{\"PR_GET_DUMPABLE\", Const, 0, \"\"},\n\t\t{\"PR_GET_ENDIAN\", Const, 0, \"\"},\n\t\t{\"PR_GET_FPEMU\", Const, 0, \"\"},\n\t\t{\"PR_GET_FPEXC\", Const, 0, \"\"},\n\t\t{\"PR_GET_KEEPCAPS\", Const, 0, \"\"},\n\t\t{\"PR_GET_NAME\", Const, 0, \"\"},\n\t\t{\"PR_GET_PDEATHSIG\", Const, 0, \"\"},\n\t\t{\"PR_GET_SECCOMP\", Const, 0, \"\"},\n\t\t{\"PR_GET_SECCOMP_FILTER\", Const, 0, \"\"},\n\t\t{\"PR_GET_SECUREBITS\", Const, 0, \"\"},\n\t\t{\"PR_GET_TIMERSLACK\", Const, 0, \"\"},\n\t\t{\"PR_GET_TIMING\", Const, 0, \"\"},\n\t\t{\"PR_GET_TSC\", Const, 0, \"\"},\n\t\t{\"PR_GET_UNALIGN\", Const, 0, \"\"},\n\t\t{\"PR_MCE_KILL\", Const, 0, \"\"},\n\t\t{\"PR_MCE_KILL_CLEAR\", Const, 0, \"\"},\n\t\t{\"PR_MCE_KILL_DEFAULT\", Const, 0, \"\"},\n\t\t{\"PR_MCE_KILL_EARLY\", Const, 0, \"\"},\n\t\t{\"PR_MCE_KILL_GET\", Const, 0, \"\"},\n\t\t{\"PR_MCE_KILL_LATE\", Const, 0, \"\"},\n\t\t{\"PR_MCE_KILL_SET\", Const, 0, \"\"},\n\t\t{\"PR_SECCOMP_FILTER_EVENT\", Const, 0, \"\"},\n\t\t{\"PR_SECCOMP_FILTER_SYSCALL\", Const, 0, \"\"},\n\t\t{\"PR_SET_DUMPABLE\", Const, 0, \"\"},\n\t\t{\"PR_SET_ENDIAN\", Const, 0, \"\"},\n\t\t{\"PR_SET_FPEMU\", Const, 0, \"\"},\n\t\t{\"PR_SET_FPEXC\", Const, 0, \"\"},\n\t\t{\"PR_SET_KEEPCAPS\", Const, 0, \"\"},\n\t\t{\"PR_SET_NAME\", Const, 0, \"\"},\n\t\t{\"PR_SET_PDEATHSIG\", Const, 0, \"\"},\n\t\t{\"PR_SET_PTRACER\", Const, 0, \"\"},\n\t\t{\"PR_SET_SECCOMP\", Const, 0, \"\"},\n\t\t{\"PR_SET_SECCOMP_FILTER\", Const, 0, \"\"},\n\t\t{\"PR_SET_SECUREBITS\", Const, 0, \"\"},\n\t\t{\"PR_SET_TIMERSLACK\", Const, 0, \"\"},\n\t\t{\"PR_SET_TIMING\", Const, 0, \"\"},\n\t\t{\"PR_SET_TSC\", Const, 0, \"\"},\n\t\t{\"PR_SET_UNALIGN\", Const, 0, \"\"},\n\t\t{\"PR_TASK_PERF_EVENTS_DISABLE\", Const, 0, \"\"},\n\t\t{\"PR_TASK_PERF_EVENTS_ENABLE\", Const, 0, \"\"},\n\t\t{\"PR_TIMING_STATISTICAL\", Const, 0, \"\"},\n\t\t{\"PR_TIMING_TIMESTAMP\", Const, 0, \"\"},\n\t\t{\"PR_TSC_ENABLE\", Const, 0, \"\"},\n\t\t{\"PR_TSC_SIGSEGV\", Const, 0, \"\"},\n\t\t{\"PR_UNALIGN_NOPRINT\", Const, 0, \"\"},\n\t\t{\"PR_UNALIGN_SIGBUS\", Const, 0, \"\"},\n\t\t{\"PTRACE_ARCH_PRCTL\", Const, 0, \"\"},\n\t\t{\"PTRACE_ATTACH\", Const, 0, \"\"},\n\t\t{\"PTRACE_CONT\", Const, 0, \"\"},\n\t\t{\"PTRACE_DETACH\", Const, 0, \"\"},\n\t\t{\"PTRACE_EVENT_CLONE\", Const, 0, \"\"},\n\t\t{\"PTRACE_EVENT_EXEC\", Const, 0, \"\"},\n\t\t{\"PTRACE_EVENT_EXIT\", Const, 0, \"\"},\n\t\t{\"PTRACE_EVENT_FORK\", Const, 0, \"\"},\n\t\t{\"PTRACE_EVENT_VFORK\", Const, 0, \"\"},\n\t\t{\"PTRACE_EVENT_VFORK_DONE\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETCRUNCHREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETEVENTMSG\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETFPREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETFPXREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETHBPREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETREGSET\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETSIGINFO\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETVFPREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETWMMXREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_GET_THREAD_AREA\", Const, 0, \"\"},\n\t\t{\"PTRACE_KILL\", Const, 0, \"\"},\n\t\t{\"PTRACE_OLDSETOPTIONS\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_MASK\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_TRACECLONE\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_TRACEEXEC\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_TRACEEXIT\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_TRACEFORK\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_TRACESYSGOOD\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_TRACEVFORK\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_TRACEVFORKDONE\", Const, 0, \"\"},\n\t\t{\"PTRACE_PEEKDATA\", Const, 0, \"\"},\n\t\t{\"PTRACE_PEEKTEXT\", Const, 0, \"\"},\n\t\t{\"PTRACE_PEEKUSR\", Const, 0, \"\"},\n\t\t{\"PTRACE_POKEDATA\", Const, 0, \"\"},\n\t\t{\"PTRACE_POKETEXT\", Const, 0, \"\"},\n\t\t{\"PTRACE_POKEUSR\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETCRUNCHREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETFPREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETFPXREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETHBPREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETOPTIONS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETREGSET\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETSIGINFO\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETVFPREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETWMMXREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SET_SYSCALL\", Const, 0, \"\"},\n\t\t{\"PTRACE_SET_THREAD_AREA\", Const, 0, \"\"},\n\t\t{\"PTRACE_SINGLEBLOCK\", Const, 0, \"\"},\n\t\t{\"PTRACE_SINGLESTEP\", Const, 0, \"\"},\n\t\t{\"PTRACE_SYSCALL\", Const, 0, \"\"},\n\t\t{\"PTRACE_SYSEMU\", Const, 0, \"\"},\n\t\t{\"PTRACE_SYSEMU_SINGLESTEP\", Const, 0, \"\"},\n\t\t{\"PTRACE_TRACEME\", Const, 0, \"\"},\n\t\t{\"PT_ATTACH\", Const, 0, \"\"},\n\t\t{\"PT_ATTACHEXC\", Const, 0, \"\"},\n\t\t{\"PT_CONTINUE\", Const, 0, \"\"},\n\t\t{\"PT_DATA_ADDR\", Const, 0, \"\"},\n\t\t{\"PT_DENY_ATTACH\", Const, 0, \"\"},\n\t\t{\"PT_DETACH\", Const, 0, \"\"},\n\t\t{\"PT_FIRSTMACH\", Const, 0, \"\"},\n\t\t{\"PT_FORCEQUOTA\", Const, 0, \"\"},\n\t\t{\"PT_KILL\", Const, 0, \"\"},\n\t\t{\"PT_MASK\", Const, 1, \"\"},\n\t\t{\"PT_READ_D\", Const, 0, \"\"},\n\t\t{\"PT_READ_I\", Const, 0, \"\"},\n\t\t{\"PT_READ_U\", Const, 0, \"\"},\n\t\t{\"PT_SIGEXC\", Const, 0, \"\"},\n\t\t{\"PT_STEP\", Const, 0, \"\"},\n\t\t{\"PT_TEXT_ADDR\", Const, 0, \"\"},\n\t\t{\"PT_TEXT_END_ADDR\", Const, 0, \"\"},\n\t\t{\"PT_THUPDATE\", Const, 0, \"\"},\n\t\t{\"PT_TRACE_ME\", Const, 0, \"\"},\n\t\t{\"PT_WRITE_D\", Const, 0, \"\"},\n\t\t{\"PT_WRITE_I\", Const, 0, \"\"},\n\t\t{\"PT_WRITE_U\", Const, 0, \"\"},\n\t\t{\"ParseDirent\", Func, 0, \"func(buf []byte, max int, names []string) (consumed int, count int, newnames []string)\"},\n\t\t{\"ParseNetlinkMessage\", Func, 0, \"func(b []byte) ([]NetlinkMessage, error)\"},\n\t\t{\"ParseNetlinkRouteAttr\", Func, 0, \"func(m *NetlinkMessage) ([]NetlinkRouteAttr, error)\"},\n\t\t{\"ParseRoutingMessage\", Func, 0, \"\"},\n\t\t{\"ParseRoutingSockaddr\", Func, 0, \"\"},\n\t\t{\"ParseSocketControlMessage\", Func, 0, \"func(b []byte) ([]SocketControlMessage, error)\"},\n\t\t{\"ParseUnixCredentials\", Func, 0, \"func(m *SocketControlMessage) (*Ucred, error)\"},\n\t\t{\"ParseUnixRights\", Func, 0, \"func(m *SocketControlMessage) ([]int, error)\"},\n\t\t{\"PathMax\", Const, 0, \"\"},\n\t\t{\"Pathconf\", Func, 0, \"\"},\n\t\t{\"Pause\", Func, 0, \"func() (err error)\"},\n\t\t{\"Pipe\", Func, 0, \"func(p []int) error\"},\n\t\t{\"Pipe2\", Func, 1, \"func(p []int, flags int) error\"},\n\t\t{\"PivotRoot\", Func, 0, \"func(newroot string, putold string) (err error)\"},\n\t\t{\"Pointer\", Type, 11, \"\"},\n\t\t{\"PostQueuedCompletionStatus\", Func, 0, \"\"},\n\t\t{\"Pread\", Func, 0, \"func(fd int, p []byte, offset int64) (n int, err error)\"},\n\t\t{\"Proc\", Type, 0, \"\"},\n\t\t{\"Proc.Dll\", Field, 0, \"\"},\n\t\t{\"Proc.Name\", Field, 0, \"\"},\n\t\t{\"ProcAttr\", Type, 0, \"\"},\n\t\t{\"ProcAttr.Dir\", Field, 0, \"\"},\n\t\t{\"ProcAttr.Env\", Field, 0, \"\"},\n\t\t{\"ProcAttr.Files\", Field, 0, \"\"},\n\t\t{\"ProcAttr.Sys\", Field, 0, \"\"},\n\t\t{\"Process32First\", Func, 4, \"\"},\n\t\t{\"Process32Next\", Func, 4, \"\"},\n\t\t{\"ProcessEntry32\", Type, 4, \"\"},\n\t\t{\"ProcessEntry32.DefaultHeapID\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.ExeFile\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.Flags\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.ModuleID\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.ParentProcessID\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.PriClassBase\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.ProcessID\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.Size\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.Threads\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.Usage\", Field, 4, \"\"},\n\t\t{\"ProcessInformation\", Type, 0, \"\"},\n\t\t{\"ProcessInformation.Process\", Field, 0, \"\"},\n\t\t{\"ProcessInformation.ProcessId\", Field, 0, \"\"},\n\t\t{\"ProcessInformation.Thread\", Field, 0, \"\"},\n\t\t{\"ProcessInformation.ThreadId\", Field, 0, \"\"},\n\t\t{\"Protoent\", Type, 0, \"\"},\n\t\t{\"Protoent.Aliases\", Field, 0, \"\"},\n\t\t{\"Protoent.Name\", Field, 0, \"\"},\n\t\t{\"Protoent.Proto\", Field, 0, \"\"},\n\t\t{\"PtraceAttach\", Func, 0, \"func(pid int) (err error)\"},\n\t\t{\"PtraceCont\", Func, 0, \"func(pid int, signal int) (err error)\"},\n\t\t{\"PtraceDetach\", Func, 0, \"func(pid int) (err error)\"},\n\t\t{\"PtraceGetEventMsg\", Func, 0, \"func(pid int) (msg uint, err error)\"},\n\t\t{\"PtraceGetRegs\", Func, 0, \"func(pid int, regsout *PtraceRegs) (err error)\"},\n\t\t{\"PtracePeekData\", Func, 0, \"func(pid int, addr uintptr, out []byte) (count int, err error)\"},\n\t\t{\"PtracePeekText\", Func, 0, \"func(pid int, addr uintptr, out []byte) (count int, err error)\"},\n\t\t{\"PtracePokeData\", Func, 0, \"func(pid int, addr uintptr, data []byte) (count int, err error)\"},\n\t\t{\"PtracePokeText\", Func, 0, \"func(pid int, addr uintptr, data []byte) (count int, err error)\"},\n\t\t{\"PtraceRegs\", Type, 0, \"\"},\n\t\t{\"PtraceRegs.Cs\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Ds\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Eax\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Ebp\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Ebx\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Ecx\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Edi\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Edx\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Eflags\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Eip\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Es\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Esi\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Esp\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Fs\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Fs_base\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Gs\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Gs_base\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Orig_eax\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Orig_rax\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R10\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R11\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R12\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R13\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R14\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R15\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R8\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R9\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rax\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rbp\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rbx\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rcx\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rdi\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rdx\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rip\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rsi\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rsp\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Ss\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Uregs\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Xcs\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Xds\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Xes\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Xfs\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Xgs\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Xss\", Field, 0, \"\"},\n\t\t{\"PtraceSetOptions\", Func, 0, \"func(pid int, options int) (err error)\"},\n\t\t{\"PtraceSetRegs\", Func, 0, \"func(pid int, regs *PtraceRegs) (err error)\"},\n\t\t{\"PtraceSingleStep\", Func, 0, \"func(pid int) (err error)\"},\n\t\t{\"PtraceSyscall\", Func, 1, \"func(pid int, signal int) (err error)\"},\n\t\t{\"Pwrite\", Func, 0, \"func(fd int, p []byte, offset int64) (n int, err error)\"},\n\t\t{\"REG_BINARY\", Const, 0, \"\"},\n\t\t{\"REG_DWORD\", Const, 0, \"\"},\n\t\t{\"REG_DWORD_BIG_ENDIAN\", Const, 0, \"\"},\n\t\t{\"REG_DWORD_LITTLE_ENDIAN\", Const, 0, \"\"},\n\t\t{\"REG_EXPAND_SZ\", Const, 0, \"\"},\n\t\t{\"REG_FULL_RESOURCE_DESCRIPTOR\", Const, 0, \"\"},\n\t\t{\"REG_LINK\", Const, 0, \"\"},\n\t\t{\"REG_MULTI_SZ\", Const, 0, \"\"},\n\t\t{\"REG_NONE\", Const, 0, \"\"},\n\t\t{\"REG_QWORD\", Const, 0, \"\"},\n\t\t{\"REG_QWORD_LITTLE_ENDIAN\", Const, 0, \"\"},\n\t\t{\"REG_RESOURCE_LIST\", Const, 0, \"\"},\n\t\t{\"REG_RESOURCE_REQUIREMENTS_LIST\", Const, 0, \"\"},\n\t\t{\"REG_SZ\", Const, 0, \"\"},\n\t\t{\"RLIMIT_AS\", Const, 0, \"\"},\n\t\t{\"RLIMIT_CORE\", Const, 0, \"\"},\n\t\t{\"RLIMIT_CPU\", Const, 0, \"\"},\n\t\t{\"RLIMIT_CPU_USAGE_MONITOR\", Const, 16, \"\"},\n\t\t{\"RLIMIT_DATA\", Const, 0, \"\"},\n\t\t{\"RLIMIT_FSIZE\", Const, 0, \"\"},\n\t\t{\"RLIMIT_NOFILE\", Const, 0, \"\"},\n\t\t{\"RLIMIT_STACK\", Const, 0, \"\"},\n\t\t{\"RLIM_INFINITY\", Const, 0, \"\"},\n\t\t{\"RTAX_ADVMSS\", Const, 0, \"\"},\n\t\t{\"RTAX_AUTHOR\", Const, 0, \"\"},\n\t\t{\"RTAX_BRD\", Const, 0, \"\"},\n\t\t{\"RTAX_CWND\", Const, 0, \"\"},\n\t\t{\"RTAX_DST\", Const, 0, \"\"},\n\t\t{\"RTAX_FEATURES\", Const, 0, \"\"},\n\t\t{\"RTAX_FEATURE_ALLFRAG\", Const, 0, \"\"},\n\t\t{\"RTAX_FEATURE_ECN\", Const, 0, \"\"},\n\t\t{\"RTAX_FEATURE_SACK\", Const, 0, \"\"},\n\t\t{\"RTAX_FEATURE_TIMESTAMP\", Const, 0, \"\"},\n\t\t{\"RTAX_GATEWAY\", Const, 0, \"\"},\n\t\t{\"RTAX_GENMASK\", Const, 0, \"\"},\n\t\t{\"RTAX_HOPLIMIT\", Const, 0, \"\"},\n\t\t{\"RTAX_IFA\", Const, 0, \"\"},\n\t\t{\"RTAX_IFP\", Const, 0, \"\"},\n\t\t{\"RTAX_INITCWND\", Const, 0, \"\"},\n\t\t{\"RTAX_INITRWND\", Const, 0, \"\"},\n\t\t{\"RTAX_LABEL\", Const, 1, \"\"},\n\t\t{\"RTAX_LOCK\", Const, 0, \"\"},\n\t\t{\"RTAX_MAX\", Const, 0, \"\"},\n\t\t{\"RTAX_MTU\", Const, 0, \"\"},\n\t\t{\"RTAX_NETMASK\", Const, 0, \"\"},\n\t\t{\"RTAX_REORDERING\", Const, 0, \"\"},\n\t\t{\"RTAX_RTO_MIN\", Const, 0, \"\"},\n\t\t{\"RTAX_RTT\", Const, 0, \"\"},\n\t\t{\"RTAX_RTTVAR\", Const, 0, \"\"},\n\t\t{\"RTAX_SRC\", Const, 1, \"\"},\n\t\t{\"RTAX_SRCMASK\", Const, 1, \"\"},\n\t\t{\"RTAX_SSTHRESH\", Const, 0, \"\"},\n\t\t{\"RTAX_TAG\", Const, 1, \"\"},\n\t\t{\"RTAX_UNSPEC\", Const, 0, \"\"},\n\t\t{\"RTAX_WINDOW\", Const, 0, \"\"},\n\t\t{\"RTA_ALIGNTO\", Const, 0, \"\"},\n\t\t{\"RTA_AUTHOR\", Const, 0, \"\"},\n\t\t{\"RTA_BRD\", Const, 0, \"\"},\n\t\t{\"RTA_CACHEINFO\", Const, 0, \"\"},\n\t\t{\"RTA_DST\", Const, 0, \"\"},\n\t\t{\"RTA_FLOW\", Const, 0, \"\"},\n\t\t{\"RTA_GATEWAY\", Const, 0, \"\"},\n\t\t{\"RTA_GENMASK\", Const, 0, \"\"},\n\t\t{\"RTA_IFA\", Const, 0, \"\"},\n\t\t{\"RTA_IFP\", Const, 0, \"\"},\n\t\t{\"RTA_IIF\", Const, 0, \"\"},\n\t\t{\"RTA_LABEL\", Const, 1, \"\"},\n\t\t{\"RTA_MAX\", Const, 0, \"\"},\n\t\t{\"RTA_METRICS\", Const, 0, \"\"},\n\t\t{\"RTA_MULTIPATH\", Const, 0, \"\"},\n\t\t{\"RTA_NETMASK\", Const, 0, \"\"},\n\t\t{\"RTA_OIF\", Const, 0, \"\"},\n\t\t{\"RTA_PREFSRC\", Const, 0, \"\"},\n\t\t{\"RTA_PRIORITY\", Const, 0, \"\"},\n\t\t{\"RTA_SRC\", Const, 0, \"\"},\n\t\t{\"RTA_SRCMASK\", Const, 1, \"\"},\n\t\t{\"RTA_TABLE\", Const, 0, \"\"},\n\t\t{\"RTA_TAG\", Const, 1, \"\"},\n\t\t{\"RTA_UNSPEC\", Const, 0, \"\"},\n\t\t{\"RTCF_DIRECTSRC\", Const, 0, \"\"},\n\t\t{\"RTCF_DOREDIRECT\", Const, 0, \"\"},\n\t\t{\"RTCF_LOG\", Const, 0, \"\"},\n\t\t{\"RTCF_MASQ\", Const, 0, \"\"},\n\t\t{\"RTCF_NAT\", Const, 0, \"\"},\n\t\t{\"RTCF_VALVE\", Const, 0, \"\"},\n\t\t{\"RTF_ADDRCLASSMASK\", Const, 0, \"\"},\n\t\t{\"RTF_ADDRCONF\", Const, 0, \"\"},\n\t\t{\"RTF_ALLONLINK\", Const, 0, \"\"},\n\t\t{\"RTF_ANNOUNCE\", Const, 1, \"\"},\n\t\t{\"RTF_BLACKHOLE\", Const, 0, \"\"},\n\t\t{\"RTF_BROADCAST\", Const, 0, \"\"},\n\t\t{\"RTF_CACHE\", Const, 0, \"\"},\n\t\t{\"RTF_CLONED\", Const, 1, \"\"},\n\t\t{\"RTF_CLONING\", Const, 0, \"\"},\n\t\t{\"RTF_CONDEMNED\", Const, 0, \"\"},\n\t\t{\"RTF_DEFAULT\", Const, 0, \"\"},\n\t\t{\"RTF_DELCLONE\", Const, 0, \"\"},\n\t\t{\"RTF_DONE\", Const, 0, \"\"},\n\t\t{\"RTF_DYNAMIC\", Const, 0, \"\"},\n\t\t{\"RTF_FLOW\", Const, 0, \"\"},\n\t\t{\"RTF_FMASK\", Const, 0, \"\"},\n\t\t{\"RTF_GATEWAY\", Const, 0, \"\"},\n\t\t{\"RTF_GWFLAG_COMPAT\", Const, 3, \"\"},\n\t\t{\"RTF_HOST\", Const, 0, \"\"},\n\t\t{\"RTF_IFREF\", Const, 0, \"\"},\n\t\t{\"RTF_IFSCOPE\", Const, 0, \"\"},\n\t\t{\"RTF_INTERFACE\", Const, 0, \"\"},\n\t\t{\"RTF_IRTT\", Const, 0, \"\"},\n\t\t{\"RTF_LINKRT\", Const, 0, \"\"},\n\t\t{\"RTF_LLDATA\", Const, 0, \"\"},\n\t\t{\"RTF_LLINFO\", Const, 0, \"\"},\n\t\t{\"RTF_LOCAL\", Const, 0, \"\"},\n\t\t{\"RTF_MASK\", Const, 1, \"\"},\n\t\t{\"RTF_MODIFIED\", Const, 0, \"\"},\n\t\t{\"RTF_MPATH\", Const, 1, \"\"},\n\t\t{\"RTF_MPLS\", Const, 1, \"\"},\n\t\t{\"RTF_MSS\", Const, 0, \"\"},\n\t\t{\"RTF_MTU\", Const, 0, \"\"},\n\t\t{\"RTF_MULTICAST\", Const, 0, \"\"},\n\t\t{\"RTF_NAT\", Const, 0, \"\"},\n\t\t{\"RTF_NOFORWARD\", Const, 0, \"\"},\n\t\t{\"RTF_NONEXTHOP\", Const, 0, \"\"},\n\t\t{\"RTF_NOPMTUDISC\", Const, 0, \"\"},\n\t\t{\"RTF_PERMANENT_ARP\", Const, 1, \"\"},\n\t\t{\"RTF_PINNED\", Const, 0, \"\"},\n\t\t{\"RTF_POLICY\", Const, 0, \"\"},\n\t\t{\"RTF_PRCLONING\", Const, 0, \"\"},\n\t\t{\"RTF_PROTO1\", Const, 0, \"\"},\n\t\t{\"RTF_PROTO2\", Const, 0, \"\"},\n\t\t{\"RTF_PROTO3\", Const, 0, \"\"},\n\t\t{\"RTF_PROXY\", Const, 16, \"\"},\n\t\t{\"RTF_REINSTATE\", Const, 0, \"\"},\n\t\t{\"RTF_REJECT\", Const, 0, \"\"},\n\t\t{\"RTF_RNH_LOCKED\", Const, 0, \"\"},\n\t\t{\"RTF_ROUTER\", Const, 16, \"\"},\n\t\t{\"RTF_SOURCE\", Const, 1, \"\"},\n\t\t{\"RTF_SRC\", Const, 1, \"\"},\n\t\t{\"RTF_STATIC\", Const, 0, \"\"},\n\t\t{\"RTF_STICKY\", Const, 0, \"\"},\n\t\t{\"RTF_THROW\", Const, 0, \"\"},\n\t\t{\"RTF_TUNNEL\", Const, 1, \"\"},\n\t\t{\"RTF_UP\", Const, 0, \"\"},\n\t\t{\"RTF_USETRAILERS\", Const, 1, \"\"},\n\t\t{\"RTF_WASCLONED\", Const, 0, \"\"},\n\t\t{\"RTF_WINDOW\", Const, 0, \"\"},\n\t\t{\"RTF_XRESOLVE\", Const, 0, \"\"},\n\t\t{\"RTM_ADD\", Const, 0, \"\"},\n\t\t{\"RTM_BASE\", Const, 0, \"\"},\n\t\t{\"RTM_CHANGE\", Const, 0, \"\"},\n\t\t{\"RTM_CHGADDR\", Const, 1, \"\"},\n\t\t{\"RTM_DELACTION\", Const, 0, \"\"},\n\t\t{\"RTM_DELADDR\", Const, 0, \"\"},\n\t\t{\"RTM_DELADDRLABEL\", Const, 0, \"\"},\n\t\t{\"RTM_DELETE\", Const, 0, \"\"},\n\t\t{\"RTM_DELLINK\", Const, 0, \"\"},\n\t\t{\"RTM_DELMADDR\", Const, 0, \"\"},\n\t\t{\"RTM_DELNEIGH\", Const, 0, \"\"},\n\t\t{\"RTM_DELQDISC\", Const, 0, \"\"},\n\t\t{\"RTM_DELROUTE\", Const, 0, \"\"},\n\t\t{\"RTM_DELRULE\", Const, 0, \"\"},\n\t\t{\"RTM_DELTCLASS\", Const, 0, \"\"},\n\t\t{\"RTM_DELTFILTER\", Const, 0, \"\"},\n\t\t{\"RTM_DESYNC\", Const, 1, \"\"},\n\t\t{\"RTM_F_CLONED\", Const, 0, \"\"},\n\t\t{\"RTM_F_EQUALIZE\", Const, 0, \"\"},\n\t\t{\"RTM_F_NOTIFY\", Const, 0, \"\"},\n\t\t{\"RTM_F_PREFIX\", Const, 0, \"\"},\n\t\t{\"RTM_GET\", Const, 0, \"\"},\n\t\t{\"RTM_GET2\", Const, 0, \"\"},\n\t\t{\"RTM_GETACTION\", Const, 0, \"\"},\n\t\t{\"RTM_GETADDR\", Const, 0, \"\"},\n\t\t{\"RTM_GETADDRLABEL\", Const, 0, \"\"},\n\t\t{\"RTM_GETANYCAST\", Const, 0, \"\"},\n\t\t{\"RTM_GETDCB\", Const, 0, \"\"},\n\t\t{\"RTM_GETLINK\", Const, 0, \"\"},\n\t\t{\"RTM_GETMULTICAST\", Const, 0, \"\"},\n\t\t{\"RTM_GETNEIGH\", Const, 0, \"\"},\n\t\t{\"RTM_GETNEIGHTBL\", Const, 0, \"\"},\n\t\t{\"RTM_GETQDISC\", Const, 0, \"\"},\n\t\t{\"RTM_GETROUTE\", Const, 0, \"\"},\n\t\t{\"RTM_GETRULE\", Const, 0, \"\"},\n\t\t{\"RTM_GETTCLASS\", Const, 0, \"\"},\n\t\t{\"RTM_GETTFILTER\", Const, 0, \"\"},\n\t\t{\"RTM_IEEE80211\", Const, 0, \"\"},\n\t\t{\"RTM_IFANNOUNCE\", Const, 0, \"\"},\n\t\t{\"RTM_IFINFO\", Const, 0, \"\"},\n\t\t{\"RTM_IFINFO2\", Const, 0, \"\"},\n\t\t{\"RTM_LLINFO_UPD\", Const, 1, \"\"},\n\t\t{\"RTM_LOCK\", Const, 0, \"\"},\n\t\t{\"RTM_LOSING\", Const, 0, \"\"},\n\t\t{\"RTM_MAX\", Const, 0, \"\"},\n\t\t{\"RTM_MAXSIZE\", Const, 1, \"\"},\n\t\t{\"RTM_MISS\", Const, 0, \"\"},\n\t\t{\"RTM_NEWACTION\", Const, 0, \"\"},\n\t\t{\"RTM_NEWADDR\", Const, 0, \"\"},\n\t\t{\"RTM_NEWADDRLABEL\", Const, 0, \"\"},\n\t\t{\"RTM_NEWLINK\", Const, 0, \"\"},\n\t\t{\"RTM_NEWMADDR\", Const, 0, \"\"},\n\t\t{\"RTM_NEWMADDR2\", Const, 0, \"\"},\n\t\t{\"RTM_NEWNDUSEROPT\", Const, 0, \"\"},\n\t\t{\"RTM_NEWNEIGH\", Const, 0, \"\"},\n\t\t{\"RTM_NEWNEIGHTBL\", Const, 0, \"\"},\n\t\t{\"RTM_NEWPREFIX\", Const, 0, \"\"},\n\t\t{\"RTM_NEWQDISC\", Const, 0, \"\"},\n\t\t{\"RTM_NEWROUTE\", Const, 0, \"\"},\n\t\t{\"RTM_NEWRULE\", Const, 0, \"\"},\n\t\t{\"RTM_NEWTCLASS\", Const, 0, \"\"},\n\t\t{\"RTM_NEWTFILTER\", Const, 0, \"\"},\n\t\t{\"RTM_NR_FAMILIES\", Const, 0, \"\"},\n\t\t{\"RTM_NR_MSGTYPES\", Const, 0, \"\"},\n\t\t{\"RTM_OIFINFO\", Const, 1, \"\"},\n\t\t{\"RTM_OLDADD\", Const, 0, \"\"},\n\t\t{\"RTM_OLDDEL\", Const, 0, \"\"},\n\t\t{\"RTM_OOIFINFO\", Const, 1, \"\"},\n\t\t{\"RTM_REDIRECT\", Const, 0, \"\"},\n\t\t{\"RTM_RESOLVE\", Const, 0, \"\"},\n\t\t{\"RTM_RTTUNIT\", Const, 0, \"\"},\n\t\t{\"RTM_SETDCB\", Const, 0, \"\"},\n\t\t{\"RTM_SETGATE\", Const, 1, \"\"},\n\t\t{\"RTM_SETLINK\", Const, 0, \"\"},\n\t\t{\"RTM_SETNEIGHTBL\", Const, 0, \"\"},\n\t\t{\"RTM_VERSION\", Const, 0, \"\"},\n\t\t{\"RTNH_ALIGNTO\", Const, 0, \"\"},\n\t\t{\"RTNH_F_DEAD\", Const, 0, \"\"},\n\t\t{\"RTNH_F_ONLINK\", Const, 0, \"\"},\n\t\t{\"RTNH_F_PERVASIVE\", Const, 0, \"\"},\n\t\t{\"RTNLGRP_IPV4_IFADDR\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV4_MROUTE\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV4_ROUTE\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV4_RULE\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV6_IFADDR\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV6_IFINFO\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV6_MROUTE\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV6_PREFIX\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV6_ROUTE\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV6_RULE\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_LINK\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_ND_USEROPT\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_NEIGH\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_NONE\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_NOTIFY\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_TC\", Const, 1, \"\"},\n\t\t{\"RTN_ANYCAST\", Const, 0, \"\"},\n\t\t{\"RTN_BLACKHOLE\", Const, 0, \"\"},\n\t\t{\"RTN_BROADCAST\", Const, 0, \"\"},\n\t\t{\"RTN_LOCAL\", Const, 0, \"\"},\n\t\t{\"RTN_MAX\", Const, 0, \"\"},\n\t\t{\"RTN_MULTICAST\", Const, 0, \"\"},\n\t\t{\"RTN_NAT\", Const, 0, \"\"},\n\t\t{\"RTN_PROHIBIT\", Const, 0, \"\"},\n\t\t{\"RTN_THROW\", Const, 0, \"\"},\n\t\t{\"RTN_UNICAST\", Const, 0, \"\"},\n\t\t{\"RTN_UNREACHABLE\", Const, 0, \"\"},\n\t\t{\"RTN_UNSPEC\", Const, 0, \"\"},\n\t\t{\"RTN_XRESOLVE\", Const, 0, \"\"},\n\t\t{\"RTPROT_BIRD\", Const, 0, \"\"},\n\t\t{\"RTPROT_BOOT\", Const, 0, \"\"},\n\t\t{\"RTPROT_DHCP\", Const, 0, \"\"},\n\t\t{\"RTPROT_DNROUTED\", Const, 0, \"\"},\n\t\t{\"RTPROT_GATED\", Const, 0, \"\"},\n\t\t{\"RTPROT_KERNEL\", Const, 0, \"\"},\n\t\t{\"RTPROT_MRT\", Const, 0, \"\"},\n\t\t{\"RTPROT_NTK\", Const, 0, \"\"},\n\t\t{\"RTPROT_RA\", Const, 0, \"\"},\n\t\t{\"RTPROT_REDIRECT\", Const, 0, \"\"},\n\t\t{\"RTPROT_STATIC\", Const, 0, \"\"},\n\t\t{\"RTPROT_UNSPEC\", Const, 0, \"\"},\n\t\t{\"RTPROT_XORP\", Const, 0, \"\"},\n\t\t{\"RTPROT_ZEBRA\", Const, 0, \"\"},\n\t\t{\"RTV_EXPIRE\", Const, 0, \"\"},\n\t\t{\"RTV_HOPCOUNT\", Const, 0, \"\"},\n\t\t{\"RTV_MTU\", Const, 0, \"\"},\n\t\t{\"RTV_RPIPE\", Const, 0, \"\"},\n\t\t{\"RTV_RTT\", Const, 0, \"\"},\n\t\t{\"RTV_RTTVAR\", Const, 0, \"\"},\n\t\t{\"RTV_SPIPE\", Const, 0, \"\"},\n\t\t{\"RTV_SSTHRESH\", Const, 0, \"\"},\n\t\t{\"RTV_WEIGHT\", Const, 0, \"\"},\n\t\t{\"RT_CACHING_CONTEXT\", Const, 1, \"\"},\n\t\t{\"RT_CLASS_DEFAULT\", Const, 0, \"\"},\n\t\t{\"RT_CLASS_LOCAL\", Const, 0, \"\"},\n\t\t{\"RT_CLASS_MAIN\", Const, 0, \"\"},\n\t\t{\"RT_CLASS_MAX\", Const, 0, \"\"},\n\t\t{\"RT_CLASS_UNSPEC\", Const, 0, \"\"},\n\t\t{\"RT_DEFAULT_FIB\", Const, 1, \"\"},\n\t\t{\"RT_NORTREF\", Const, 1, \"\"},\n\t\t{\"RT_SCOPE_HOST\", Const, 0, \"\"},\n\t\t{\"RT_SCOPE_LINK\", Const, 0, \"\"},\n\t\t{\"RT_SCOPE_NOWHERE\", Const, 0, \"\"},\n\t\t{\"RT_SCOPE_SITE\", Const, 0, \"\"},\n\t\t{\"RT_SCOPE_UNIVERSE\", Const, 0, \"\"},\n\t\t{\"RT_TABLEID_MAX\", Const, 1, \"\"},\n\t\t{\"RT_TABLE_COMPAT\", Const, 0, \"\"},\n\t\t{\"RT_TABLE_DEFAULT\", Const, 0, \"\"},\n\t\t{\"RT_TABLE_LOCAL\", Const, 0, \"\"},\n\t\t{\"RT_TABLE_MAIN\", Const, 0, \"\"},\n\t\t{\"RT_TABLE_MAX\", Const, 0, \"\"},\n\t\t{\"RT_TABLE_UNSPEC\", Const, 0, \"\"},\n\t\t{\"RUSAGE_CHILDREN\", Const, 0, \"\"},\n\t\t{\"RUSAGE_SELF\", Const, 0, \"\"},\n\t\t{\"RUSAGE_THREAD\", Const, 0, \"\"},\n\t\t{\"Radvisory_t\", Type, 0, \"\"},\n\t\t{\"Radvisory_t.Count\", Field, 0, \"\"},\n\t\t{\"Radvisory_t.Offset\", Field, 0, \"\"},\n\t\t{\"Radvisory_t.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"RawConn\", Type, 9, \"\"},\n\t\t{\"RawSockaddr\", Type, 0, \"\"},\n\t\t{\"RawSockaddr.Data\", Field, 0, \"\"},\n\t\t{\"RawSockaddr.Family\", Field, 0, \"\"},\n\t\t{\"RawSockaddr.Len\", Field, 0, \"\"},\n\t\t{\"RawSockaddrAny\", Type, 0, \"\"},\n\t\t{\"RawSockaddrAny.Addr\", Field, 0, \"\"},\n\t\t{\"RawSockaddrAny.Pad\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink\", Type, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Alen\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Data\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Family\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Index\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Len\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Nlen\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Pad_cgo_0\", Field, 2, \"\"},\n\t\t{\"RawSockaddrDatalink.Slen\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Type\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet4\", Type, 0, \"\"},\n\t\t{\"RawSockaddrInet4.Addr\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet4.Family\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet4.Len\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet4.Port\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet4.Zero\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet6\", Type, 0, \"\"},\n\t\t{\"RawSockaddrInet6.Addr\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet6.Family\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet6.Flowinfo\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet6.Len\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet6.Port\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet6.Scope_id\", Field, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer\", Type, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer.Addr\", Field, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer.Family\", Field, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer.Halen\", Field, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer.Hatype\", Field, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer.Ifindex\", Field, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer.Pkttype\", Field, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer.Protocol\", Field, 0, \"\"},\n\t\t{\"RawSockaddrNetlink\", Type, 0, \"\"},\n\t\t{\"RawSockaddrNetlink.Family\", Field, 0, \"\"},\n\t\t{\"RawSockaddrNetlink.Groups\", Field, 0, \"\"},\n\t\t{\"RawSockaddrNetlink.Pad\", Field, 0, \"\"},\n\t\t{\"RawSockaddrNetlink.Pid\", Field, 0, \"\"},\n\t\t{\"RawSockaddrUnix\", Type, 0, \"\"},\n\t\t{\"RawSockaddrUnix.Family\", Field, 0, \"\"},\n\t\t{\"RawSockaddrUnix.Len\", Field, 0, \"\"},\n\t\t{\"RawSockaddrUnix.Pad_cgo_0\", Field, 2, \"\"},\n\t\t{\"RawSockaddrUnix.Path\", Field, 0, \"\"},\n\t\t{\"RawSyscall\", Func, 0, \"func(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr) (r1 uintptr, r2 uintptr, err Errno)\"},\n\t\t{\"RawSyscall6\", Func, 0, \"func(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr, a6 uintptr) (r1 uintptr, r2 uintptr, err Errno)\"},\n\t\t{\"Read\", Func, 0, \"func(fd int, p []byte) (n int, err error)\"},\n\t\t{\"ReadConsole\", Func, 1, \"\"},\n\t\t{\"ReadDirectoryChanges\", Func, 0, \"\"},\n\t\t{\"ReadDirent\", Func, 0, \"func(fd int, buf []byte) (n int, err error)\"},\n\t\t{\"ReadFile\", Func, 0, \"\"},\n\t\t{\"Readlink\", Func, 0, \"func(path string, buf []byte) (n int, err error)\"},\n\t\t{\"Reboot\", Func, 0, \"func(cmd int) (err error)\"},\n\t\t{\"Recvfrom\", Func, 0, \"func(fd int, p []byte, flags int) (n int, from Sockaddr, err error)\"},\n\t\t{\"Recvmsg\", Func, 0, \"func(fd int, p []byte, oob []byte, flags int) (n int, oobn int, recvflags int, from Sockaddr, err error)\"},\n\t\t{\"RegCloseKey\", Func, 0, \"\"},\n\t\t{\"RegEnumKeyEx\", Func, 0, \"\"},\n\t\t{\"RegOpenKeyEx\", Func, 0, \"\"},\n\t\t{\"RegQueryInfoKey\", Func, 0, \"\"},\n\t\t{\"RegQueryValueEx\", Func, 0, \"\"},\n\t\t{\"RemoveDirectory\", Func, 0, \"\"},\n\t\t{\"Removexattr\", Func, 1, \"func(path string, attr string) (err error)\"},\n\t\t{\"Rename\", Func, 0, \"func(oldpath string, newpath string) (err error)\"},\n\t\t{\"Renameat\", Func, 0, \"func(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\"},\n\t\t{\"Revoke\", Func, 0, \"\"},\n\t\t{\"Rlimit\", Type, 0, \"\"},\n\t\t{\"Rlimit.Cur\", Field, 0, \"\"},\n\t\t{\"Rlimit.Max\", Field, 0, \"\"},\n\t\t{\"Rmdir\", Func, 0, \"func(path string) error\"},\n\t\t{\"RouteMessage\", Type, 0, \"\"},\n\t\t{\"RouteMessage.Data\", Field, 0, \"\"},\n\t\t{\"RouteMessage.Header\", Field, 0, \"\"},\n\t\t{\"RouteRIB\", Func, 0, \"\"},\n\t\t{\"RoutingMessage\", Type, 14, \"\"},\n\t\t{\"RtAttr\", Type, 0, \"\"},\n\t\t{\"RtAttr.Len\", Field, 0, \"\"},\n\t\t{\"RtAttr.Type\", Field, 0, \"\"},\n\t\t{\"RtGenmsg\", Type, 0, \"\"},\n\t\t{\"RtGenmsg.Family\", Field, 0, \"\"},\n\t\t{\"RtMetrics\", Type, 0, \"\"},\n\t\t{\"RtMetrics.Expire\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Filler\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Hopcount\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Locks\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Mtu\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Pad\", Field, 3, \"\"},\n\t\t{\"RtMetrics.Pksent\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Recvpipe\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Refcnt\", Field, 2, \"\"},\n\t\t{\"RtMetrics.Rtt\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Rttvar\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Sendpipe\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Ssthresh\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Weight\", Field, 0, \"\"},\n\t\t{\"RtMsg\", Type, 0, \"\"},\n\t\t{\"RtMsg.Dst_len\", Field, 0, \"\"},\n\t\t{\"RtMsg.Family\", Field, 0, \"\"},\n\t\t{\"RtMsg.Flags\", Field, 0, \"\"},\n\t\t{\"RtMsg.Protocol\", Field, 0, \"\"},\n\t\t{\"RtMsg.Scope\", Field, 0, \"\"},\n\t\t{\"RtMsg.Src_len\", Field, 0, \"\"},\n\t\t{\"RtMsg.Table\", Field, 0, \"\"},\n\t\t{\"RtMsg.Tos\", Field, 0, \"\"},\n\t\t{\"RtMsg.Type\", Field, 0, \"\"},\n\t\t{\"RtMsghdr\", Type, 0, \"\"},\n\t\t{\"RtMsghdr.Addrs\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Errno\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Flags\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Fmask\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Hdrlen\", Field, 2, \"\"},\n\t\t{\"RtMsghdr.Index\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Inits\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Mpls\", Field, 2, \"\"},\n\t\t{\"RtMsghdr.Msglen\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Pad_cgo_1\", Field, 2, \"\"},\n\t\t{\"RtMsghdr.Pid\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Priority\", Field, 2, \"\"},\n\t\t{\"RtMsghdr.Rmx\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Seq\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Tableid\", Field, 2, \"\"},\n\t\t{\"RtMsghdr.Type\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Use\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Version\", Field, 0, \"\"},\n\t\t{\"RtNexthop\", Type, 0, \"\"},\n\t\t{\"RtNexthop.Flags\", Field, 0, \"\"},\n\t\t{\"RtNexthop.Hops\", Field, 0, \"\"},\n\t\t{\"RtNexthop.Ifindex\", Field, 0, \"\"},\n\t\t{\"RtNexthop.Len\", Field, 0, \"\"},\n\t\t{\"Rusage\", Type, 0, \"\"},\n\t\t{\"Rusage.CreationTime\", Field, 0, \"\"},\n\t\t{\"Rusage.ExitTime\", Field, 0, \"\"},\n\t\t{\"Rusage.Idrss\", Field, 0, \"\"},\n\t\t{\"Rusage.Inblock\", Field, 0, \"\"},\n\t\t{\"Rusage.Isrss\", Field, 0, \"\"},\n\t\t{\"Rusage.Ixrss\", Field, 0, \"\"},\n\t\t{\"Rusage.KernelTime\", Field, 0, \"\"},\n\t\t{\"Rusage.Majflt\", Field, 0, \"\"},\n\t\t{\"Rusage.Maxrss\", Field, 0, \"\"},\n\t\t{\"Rusage.Minflt\", Field, 0, \"\"},\n\t\t{\"Rusage.Msgrcv\", Field, 0, \"\"},\n\t\t{\"Rusage.Msgsnd\", Field, 0, \"\"},\n\t\t{\"Rusage.Nivcsw\", Field, 0, \"\"},\n\t\t{\"Rusage.Nsignals\", Field, 0, \"\"},\n\t\t{\"Rusage.Nswap\", Field, 0, \"\"},\n\t\t{\"Rusage.Nvcsw\", Field, 0, \"\"},\n\t\t{\"Rusage.Oublock\", Field, 0, \"\"},\n\t\t{\"Rusage.Stime\", Field, 0, \"\"},\n\t\t{\"Rusage.UserTime\", Field, 0, \"\"},\n\t\t{\"Rusage.Utime\", Field, 0, \"\"},\n\t\t{\"SCM_BINTIME\", Const, 0, \"\"},\n\t\t{\"SCM_CREDENTIALS\", Const, 0, \"\"},\n\t\t{\"SCM_CREDS\", Const, 0, \"\"},\n\t\t{\"SCM_RIGHTS\", Const, 0, \"\"},\n\t\t{\"SCM_TIMESTAMP\", Const, 0, \"\"},\n\t\t{\"SCM_TIMESTAMPING\", Const, 0, \"\"},\n\t\t{\"SCM_TIMESTAMPNS\", Const, 0, \"\"},\n\t\t{\"SCM_TIMESTAMP_MONOTONIC\", Const, 0, \"\"},\n\t\t{\"SHUT_RD\", Const, 0, \"\"},\n\t\t{\"SHUT_RDWR\", Const, 0, \"\"},\n\t\t{\"SHUT_WR\", Const, 0, \"\"},\n\t\t{\"SID\", Type, 0, \"\"},\n\t\t{\"SIDAndAttributes\", Type, 0, \"\"},\n\t\t{\"SIDAndAttributes.Attributes\", Field, 0, \"\"},\n\t\t{\"SIDAndAttributes.Sid\", Field, 0, \"\"},\n\t\t{\"SIGABRT\", Const, 0, \"\"},\n\t\t{\"SIGALRM\", Const, 0, \"\"},\n\t\t{\"SIGBUS\", Const, 0, \"\"},\n\t\t{\"SIGCHLD\", Const, 0, \"\"},\n\t\t{\"SIGCLD\", Const, 0, \"\"},\n\t\t{\"SIGCONT\", Const, 0, \"\"},\n\t\t{\"SIGEMT\", Const, 0, \"\"},\n\t\t{\"SIGFPE\", Const, 0, \"\"},\n\t\t{\"SIGHUP\", Const, 0, \"\"},\n\t\t{\"SIGILL\", Const, 0, \"\"},\n\t\t{\"SIGINFO\", Const, 0, \"\"},\n\t\t{\"SIGINT\", Const, 0, \"\"},\n\t\t{\"SIGIO\", Const, 0, \"\"},\n\t\t{\"SIGIOT\", Const, 0, \"\"},\n\t\t{\"SIGKILL\", Const, 0, \"\"},\n\t\t{\"SIGLIBRT\", Const, 1, \"\"},\n\t\t{\"SIGLWP\", Const, 0, \"\"},\n\t\t{\"SIGPIPE\", Const, 0, \"\"},\n\t\t{\"SIGPOLL\", Const, 0, \"\"},\n\t\t{\"SIGPROF\", Const, 0, \"\"},\n\t\t{\"SIGPWR\", Const, 0, \"\"},\n\t\t{\"SIGQUIT\", Const, 0, \"\"},\n\t\t{\"SIGSEGV\", Const, 0, \"\"},\n\t\t{\"SIGSTKFLT\", Const, 0, \"\"},\n\t\t{\"SIGSTOP\", Const, 0, \"\"},\n\t\t{\"SIGSYS\", Const, 0, \"\"},\n\t\t{\"SIGTERM\", Const, 0, \"\"},\n\t\t{\"SIGTHR\", Const, 0, \"\"},\n\t\t{\"SIGTRAP\", Const, 0, \"\"},\n\t\t{\"SIGTSTP\", Const, 0, \"\"},\n\t\t{\"SIGTTIN\", Const, 0, \"\"},\n\t\t{\"SIGTTOU\", Const, 0, \"\"},\n\t\t{\"SIGUNUSED\", Const, 0, \"\"},\n\t\t{\"SIGURG\", Const, 0, \"\"},\n\t\t{\"SIGUSR1\", Const, 0, \"\"},\n\t\t{\"SIGUSR2\", Const, 0, \"\"},\n\t\t{\"SIGVTALRM\", Const, 0, \"\"},\n\t\t{\"SIGWINCH\", Const, 0, \"\"},\n\t\t{\"SIGXCPU\", Const, 0, \"\"},\n\t\t{\"SIGXFSZ\", Const, 0, \"\"},\n\t\t{\"SIOCADDDLCI\", Const, 0, \"\"},\n\t\t{\"SIOCADDMULTI\", Const, 0, \"\"},\n\t\t{\"SIOCADDRT\", Const, 0, \"\"},\n\t\t{\"SIOCAIFADDR\", Const, 0, \"\"},\n\t\t{\"SIOCAIFGROUP\", Const, 0, \"\"},\n\t\t{\"SIOCALIFADDR\", Const, 0, \"\"},\n\t\t{\"SIOCARPIPLL\", Const, 0, \"\"},\n\t\t{\"SIOCATMARK\", Const, 0, \"\"},\n\t\t{\"SIOCAUTOADDR\", Const, 0, \"\"},\n\t\t{\"SIOCAUTONETMASK\", Const, 0, \"\"},\n\t\t{\"SIOCBRDGADD\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGADDS\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGARL\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGDADDR\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGDEL\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGDELS\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGFLUSH\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGFRL\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGCACHE\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGFD\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGHT\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGIFFLGS\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGMA\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGPARAM\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGPRI\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGRL\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGSIFS\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGTO\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGIFS\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGRTS\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSADDR\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSCACHE\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSFD\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSHT\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSIFCOST\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSIFFLGS\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSIFPRIO\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSMA\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSPRI\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSPROTO\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSTO\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSTXHC\", Const, 1, \"\"},\n\t\t{\"SIOCDARP\", Const, 0, \"\"},\n\t\t{\"SIOCDELDLCI\", Const, 0, \"\"},\n\t\t{\"SIOCDELMULTI\", Const, 0, \"\"},\n\t\t{\"SIOCDELRT\", Const, 0, \"\"},\n\t\t{\"SIOCDEVPRIVATE\", Const, 0, \"\"},\n\t\t{\"SIOCDIFADDR\", Const, 0, \"\"},\n\t\t{\"SIOCDIFGROUP\", Const, 0, \"\"},\n\t\t{\"SIOCDIFPHYADDR\", Const, 0, \"\"},\n\t\t{\"SIOCDLIFADDR\", Const, 0, \"\"},\n\t\t{\"SIOCDRARP\", Const, 0, \"\"},\n\t\t{\"SIOCGARP\", Const, 0, \"\"},\n\t\t{\"SIOCGDRVSPEC\", Const, 0, \"\"},\n\t\t{\"SIOCGETKALIVE\", Const, 1, \"\"},\n\t\t{\"SIOCGETLABEL\", Const, 1, \"\"},\n\t\t{\"SIOCGETPFLOW\", Const, 1, \"\"},\n\t\t{\"SIOCGETPFSYNC\", Const, 1, \"\"},\n\t\t{\"SIOCGETSGCNT\", Const, 0, \"\"},\n\t\t{\"SIOCGETVIFCNT\", Const, 0, \"\"},\n\t\t{\"SIOCGETVLAN\", Const, 0, \"\"},\n\t\t{\"SIOCGHIWAT\", Const, 0, \"\"},\n\t\t{\"SIOCGIFADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFADDRPREF\", Const, 1, \"\"},\n\t\t{\"SIOCGIFALIAS\", Const, 1, \"\"},\n\t\t{\"SIOCGIFALTMTU\", Const, 0, \"\"},\n\t\t{\"SIOCGIFASYNCMAP\", Const, 0, \"\"},\n\t\t{\"SIOCGIFBOND\", Const, 0, \"\"},\n\t\t{\"SIOCGIFBR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFBRDADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFCAP\", Const, 0, \"\"},\n\t\t{\"SIOCGIFCONF\", Const, 0, \"\"},\n\t\t{\"SIOCGIFCOUNT\", Const, 0, \"\"},\n\t\t{\"SIOCGIFDATA\", Const, 1, \"\"},\n\t\t{\"SIOCGIFDESCR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFDEVMTU\", Const, 0, \"\"},\n\t\t{\"SIOCGIFDLT\", Const, 1, \"\"},\n\t\t{\"SIOCGIFDSTADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFENCAP\", Const, 0, \"\"},\n\t\t{\"SIOCGIFFIB\", Const, 1, \"\"},\n\t\t{\"SIOCGIFFLAGS\", Const, 0, \"\"},\n\t\t{\"SIOCGIFGATTR\", Const, 1, \"\"},\n\t\t{\"SIOCGIFGENERIC\", Const, 0, \"\"},\n\t\t{\"SIOCGIFGMEMB\", Const, 0, \"\"},\n\t\t{\"SIOCGIFGROUP\", Const, 0, \"\"},\n\t\t{\"SIOCGIFHARDMTU\", Const, 3, \"\"},\n\t\t{\"SIOCGIFHWADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFINDEX\", Const, 0, \"\"},\n\t\t{\"SIOCGIFKPI\", Const, 0, \"\"},\n\t\t{\"SIOCGIFMAC\", Const, 0, \"\"},\n\t\t{\"SIOCGIFMAP\", Const, 0, \"\"},\n\t\t{\"SIOCGIFMEDIA\", Const, 0, \"\"},\n\t\t{\"SIOCGIFMEM\", Const, 0, \"\"},\n\t\t{\"SIOCGIFMETRIC\", Const, 0, \"\"},\n\t\t{\"SIOCGIFMTU\", Const, 0, \"\"},\n\t\t{\"SIOCGIFNAME\", Const, 0, \"\"},\n\t\t{\"SIOCGIFNETMASK\", Const, 0, \"\"},\n\t\t{\"SIOCGIFPDSTADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFPFLAGS\", Const, 0, \"\"},\n\t\t{\"SIOCGIFPHYS\", Const, 0, \"\"},\n\t\t{\"SIOCGIFPRIORITY\", Const, 1, \"\"},\n\t\t{\"SIOCGIFPSRCADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFRDOMAIN\", Const, 1, \"\"},\n\t\t{\"SIOCGIFRTLABEL\", Const, 1, \"\"},\n\t\t{\"SIOCGIFSLAVE\", Const, 0, \"\"},\n\t\t{\"SIOCGIFSTATUS\", Const, 0, \"\"},\n\t\t{\"SIOCGIFTIMESLOT\", Const, 1, \"\"},\n\t\t{\"SIOCGIFTXQLEN\", Const, 0, \"\"},\n\t\t{\"SIOCGIFVLAN\", Const, 0, \"\"},\n\t\t{\"SIOCGIFWAKEFLAGS\", Const, 0, \"\"},\n\t\t{\"SIOCGIFXFLAGS\", Const, 1, \"\"},\n\t\t{\"SIOCGLIFADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGLIFPHYADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGLIFPHYRTABLE\", Const, 1, \"\"},\n\t\t{\"SIOCGLIFPHYTTL\", Const, 3, \"\"},\n\t\t{\"SIOCGLINKSTR\", Const, 1, \"\"},\n\t\t{\"SIOCGLOWAT\", Const, 0, \"\"},\n\t\t{\"SIOCGPGRP\", Const, 0, \"\"},\n\t\t{\"SIOCGPRIVATE_0\", Const, 0, \"\"},\n\t\t{\"SIOCGPRIVATE_1\", Const, 0, \"\"},\n\t\t{\"SIOCGRARP\", Const, 0, \"\"},\n\t\t{\"SIOCGSPPPPARAMS\", Const, 3, \"\"},\n\t\t{\"SIOCGSTAMP\", Const, 0, \"\"},\n\t\t{\"SIOCGSTAMPNS\", Const, 0, \"\"},\n\t\t{\"SIOCGVH\", Const, 1, \"\"},\n\t\t{\"SIOCGVNETID\", Const, 3, \"\"},\n\t\t{\"SIOCIFCREATE\", Const, 0, \"\"},\n\t\t{\"SIOCIFCREATE2\", Const, 0, \"\"},\n\t\t{\"SIOCIFDESTROY\", Const, 0, \"\"},\n\t\t{\"SIOCIFGCLONERS\", Const, 0, \"\"},\n\t\t{\"SIOCINITIFADDR\", Const, 1, \"\"},\n\t\t{\"SIOCPROTOPRIVATE\", Const, 0, \"\"},\n\t\t{\"SIOCRSLVMULTI\", Const, 0, \"\"},\n\t\t{\"SIOCRTMSG\", Const, 0, \"\"},\n\t\t{\"SIOCSARP\", Const, 0, \"\"},\n\t\t{\"SIOCSDRVSPEC\", Const, 0, \"\"},\n\t\t{\"SIOCSETKALIVE\", Const, 1, \"\"},\n\t\t{\"SIOCSETLABEL\", Const, 1, \"\"},\n\t\t{\"SIOCSETPFLOW\", Const, 1, \"\"},\n\t\t{\"SIOCSETPFSYNC\", Const, 1, \"\"},\n\t\t{\"SIOCSETVLAN\", Const, 0, \"\"},\n\t\t{\"SIOCSHIWAT\", Const, 0, \"\"},\n\t\t{\"SIOCSIFADDR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFADDRPREF\", Const, 1, \"\"},\n\t\t{\"SIOCSIFALTMTU\", Const, 0, \"\"},\n\t\t{\"SIOCSIFASYNCMAP\", Const, 0, \"\"},\n\t\t{\"SIOCSIFBOND\", Const, 0, \"\"},\n\t\t{\"SIOCSIFBR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFBRDADDR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFCAP\", Const, 0, \"\"},\n\t\t{\"SIOCSIFDESCR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFDSTADDR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFENCAP\", Const, 0, \"\"},\n\t\t{\"SIOCSIFFIB\", Const, 1, \"\"},\n\t\t{\"SIOCSIFFLAGS\", Const, 0, \"\"},\n\t\t{\"SIOCSIFGATTR\", Const, 1, \"\"},\n\t\t{\"SIOCSIFGENERIC\", Const, 0, \"\"},\n\t\t{\"SIOCSIFHWADDR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFHWBROADCAST\", Const, 0, \"\"},\n\t\t{\"SIOCSIFKPI\", Const, 0, \"\"},\n\t\t{\"SIOCSIFLINK\", Const, 0, \"\"},\n\t\t{\"SIOCSIFLLADDR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFMAC\", Const, 0, \"\"},\n\t\t{\"SIOCSIFMAP\", Const, 0, \"\"},\n\t\t{\"SIOCSIFMEDIA\", Const, 0, \"\"},\n\t\t{\"SIOCSIFMEM\", Const, 0, \"\"},\n\t\t{\"SIOCSIFMETRIC\", Const, 0, \"\"},\n\t\t{\"SIOCSIFMTU\", Const, 0, \"\"},\n\t\t{\"SIOCSIFNAME\", Const, 0, \"\"},\n\t\t{\"SIOCSIFNETMASK\", Const, 0, \"\"},\n\t\t{\"SIOCSIFPFLAGS\", Const, 0, \"\"},\n\t\t{\"SIOCSIFPHYADDR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFPHYS\", Const, 0, \"\"},\n\t\t{\"SIOCSIFPRIORITY\", Const, 1, \"\"},\n\t\t{\"SIOCSIFRDOMAIN\", Const, 1, \"\"},\n\t\t{\"SIOCSIFRTLABEL\", Const, 1, \"\"},\n\t\t{\"SIOCSIFRVNET\", Const, 0, \"\"},\n\t\t{\"SIOCSIFSLAVE\", Const, 0, \"\"},\n\t\t{\"SIOCSIFTIMESLOT\", Const, 1, \"\"},\n\t\t{\"SIOCSIFTXQLEN\", Const, 0, \"\"},\n\t\t{\"SIOCSIFVLAN\", Const, 0, \"\"},\n\t\t{\"SIOCSIFVNET\", Const, 0, \"\"},\n\t\t{\"SIOCSIFXFLAGS\", Const, 1, \"\"},\n\t\t{\"SIOCSLIFPHYADDR\", Const, 0, \"\"},\n\t\t{\"SIOCSLIFPHYRTABLE\", Const, 1, \"\"},\n\t\t{\"SIOCSLIFPHYTTL\", Const, 3, \"\"},\n\t\t{\"SIOCSLINKSTR\", Const, 1, \"\"},\n\t\t{\"SIOCSLOWAT\", Const, 0, \"\"},\n\t\t{\"SIOCSPGRP\", Const, 0, \"\"},\n\t\t{\"SIOCSRARP\", Const, 0, \"\"},\n\t\t{\"SIOCSSPPPPARAMS\", Const, 3, \"\"},\n\t\t{\"SIOCSVH\", Const, 1, \"\"},\n\t\t{\"SIOCSVNETID\", Const, 3, \"\"},\n\t\t{\"SIOCZIFDATA\", Const, 1, \"\"},\n\t\t{\"SIO_GET_EXTENSION_FUNCTION_POINTER\", Const, 1, \"\"},\n\t\t{\"SIO_GET_INTERFACE_LIST\", Const, 0, \"\"},\n\t\t{\"SIO_KEEPALIVE_VALS\", Const, 3, \"\"},\n\t\t{\"SIO_UDP_CONNRESET\", Const, 4, \"\"},\n\t\t{\"SOCK_CLOEXEC\", Const, 0, \"\"},\n\t\t{\"SOCK_DCCP\", Const, 0, \"\"},\n\t\t{\"SOCK_DGRAM\", Const, 0, \"\"},\n\t\t{\"SOCK_FLAGS_MASK\", Const, 1, \"\"},\n\t\t{\"SOCK_MAXADDRLEN\", Const, 0, \"\"},\n\t\t{\"SOCK_NONBLOCK\", Const, 0, \"\"},\n\t\t{\"SOCK_NOSIGPIPE\", Const, 1, \"\"},\n\t\t{\"SOCK_PACKET\", Const, 0, \"\"},\n\t\t{\"SOCK_RAW\", Const, 0, \"\"},\n\t\t{\"SOCK_RDM\", Const, 0, \"\"},\n\t\t{\"SOCK_SEQPACKET\", Const, 0, \"\"},\n\t\t{\"SOCK_STREAM\", Const, 0, \"\"},\n\t\t{\"SOL_AAL\", Const, 0, \"\"},\n\t\t{\"SOL_ATM\", Const, 0, \"\"},\n\t\t{\"SOL_DECNET\", Const, 0, \"\"},\n\t\t{\"SOL_ICMPV6\", Const, 0, \"\"},\n\t\t{\"SOL_IP\", Const, 0, \"\"},\n\t\t{\"SOL_IPV6\", Const, 0, \"\"},\n\t\t{\"SOL_IRDA\", Const, 0, \"\"},\n\t\t{\"SOL_PACKET\", Const, 0, \"\"},\n\t\t{\"SOL_RAW\", Const, 0, \"\"},\n\t\t{\"SOL_SOCKET\", Const, 0, \"\"},\n\t\t{\"SOL_TCP\", Const, 0, \"\"},\n\t\t{\"SOL_X25\", Const, 0, \"\"},\n\t\t{\"SOMAXCONN\", Const, 0, \"\"},\n\t\t{\"SO_ACCEPTCONN\", Const, 0, \"\"},\n\t\t{\"SO_ACCEPTFILTER\", Const, 0, \"\"},\n\t\t{\"SO_ATTACH_FILTER\", Const, 0, \"\"},\n\t\t{\"SO_BINDANY\", Const, 1, \"\"},\n\t\t{\"SO_BINDTODEVICE\", Const, 0, \"\"},\n\t\t{\"SO_BINTIME\", Const, 0, \"\"},\n\t\t{\"SO_BROADCAST\", Const, 0, \"\"},\n\t\t{\"SO_BSDCOMPAT\", Const, 0, \"\"},\n\t\t{\"SO_DEBUG\", Const, 0, \"\"},\n\t\t{\"SO_DETACH_FILTER\", Const, 0, \"\"},\n\t\t{\"SO_DOMAIN\", Const, 0, \"\"},\n\t\t{\"SO_DONTROUTE\", Const, 0, \"\"},\n\t\t{\"SO_DONTTRUNC\", Const, 0, \"\"},\n\t\t{\"SO_ERROR\", Const, 0, \"\"},\n\t\t{\"SO_KEEPALIVE\", Const, 0, \"\"},\n\t\t{\"SO_LABEL\", Const, 0, \"\"},\n\t\t{\"SO_LINGER\", Const, 0, \"\"},\n\t\t{\"SO_LINGER_SEC\", Const, 0, \"\"},\n\t\t{\"SO_LISTENINCQLEN\", Const, 0, \"\"},\n\t\t{\"SO_LISTENQLEN\", Const, 0, \"\"},\n\t\t{\"SO_LISTENQLIMIT\", Const, 0, \"\"},\n\t\t{\"SO_MARK\", Const, 0, \"\"},\n\t\t{\"SO_NETPROC\", Const, 1, \"\"},\n\t\t{\"SO_NKE\", Const, 0, \"\"},\n\t\t{\"SO_NOADDRERR\", Const, 0, \"\"},\n\t\t{\"SO_NOHEADER\", Const, 1, \"\"},\n\t\t{\"SO_NOSIGPIPE\", Const, 0, \"\"},\n\t\t{\"SO_NOTIFYCONFLICT\", Const, 0, \"\"},\n\t\t{\"SO_NO_CHECK\", Const, 0, \"\"},\n\t\t{\"SO_NO_DDP\", Const, 0, \"\"},\n\t\t{\"SO_NO_OFFLOAD\", Const, 0, \"\"},\n\t\t{\"SO_NP_EXTENSIONS\", Const, 0, \"\"},\n\t\t{\"SO_NREAD\", Const, 0, \"\"},\n\t\t{\"SO_NUMRCVPKT\", Const, 16, \"\"},\n\t\t{\"SO_NWRITE\", Const, 0, \"\"},\n\t\t{\"SO_OOBINLINE\", Const, 0, \"\"},\n\t\t{\"SO_OVERFLOWED\", Const, 1, \"\"},\n\t\t{\"SO_PASSCRED\", Const, 0, \"\"},\n\t\t{\"SO_PASSSEC\", Const, 0, \"\"},\n\t\t{\"SO_PEERCRED\", Const, 0, \"\"},\n\t\t{\"SO_PEERLABEL\", Const, 0, \"\"},\n\t\t{\"SO_PEERNAME\", Const, 0, \"\"},\n\t\t{\"SO_PEERSEC\", Const, 0, \"\"},\n\t\t{\"SO_PRIORITY\", Const, 0, \"\"},\n\t\t{\"SO_PROTOCOL\", Const, 0, \"\"},\n\t\t{\"SO_PROTOTYPE\", Const, 1, \"\"},\n\t\t{\"SO_RANDOMPORT\", Const, 0, \"\"},\n\t\t{\"SO_RCVBUF\", Const, 0, \"\"},\n\t\t{\"SO_RCVBUFFORCE\", Const, 0, \"\"},\n\t\t{\"SO_RCVLOWAT\", Const, 0, \"\"},\n\t\t{\"SO_RCVTIMEO\", Const, 0, \"\"},\n\t\t{\"SO_RESTRICTIONS\", Const, 0, \"\"},\n\t\t{\"SO_RESTRICT_DENYIN\", Const, 0, \"\"},\n\t\t{\"SO_RESTRICT_DENYOUT\", Const, 0, \"\"},\n\t\t{\"SO_RESTRICT_DENYSET\", Const, 0, \"\"},\n\t\t{\"SO_REUSEADDR\", Const, 0, \"\"},\n\t\t{\"SO_REUSEPORT\", Const, 0, \"\"},\n\t\t{\"SO_REUSESHAREUID\", Const, 0, \"\"},\n\t\t{\"SO_RTABLE\", Const, 1, \"\"},\n\t\t{\"SO_RXQ_OVFL\", Const, 0, \"\"},\n\t\t{\"SO_SECURITY_AUTHENTICATION\", Const, 0, \"\"},\n\t\t{\"SO_SECURITY_ENCRYPTION_NETWORK\", Const, 0, \"\"},\n\t\t{\"SO_SECURITY_ENCRYPTION_TRANSPORT\", Const, 0, \"\"},\n\t\t{\"SO_SETFIB\", Const, 0, \"\"},\n\t\t{\"SO_SNDBUF\", Const, 0, \"\"},\n\t\t{\"SO_SNDBUFFORCE\", Const, 0, \"\"},\n\t\t{\"SO_SNDLOWAT\", Const, 0, \"\"},\n\t\t{\"SO_SNDTIMEO\", Const, 0, \"\"},\n\t\t{\"SO_SPLICE\", Const, 1, \"\"},\n\t\t{\"SO_TIMESTAMP\", Const, 0, \"\"},\n\t\t{\"SO_TIMESTAMPING\", Const, 0, \"\"},\n\t\t{\"SO_TIMESTAMPNS\", Const, 0, \"\"},\n\t\t{\"SO_TIMESTAMP_MONOTONIC\", Const, 0, \"\"},\n\t\t{\"SO_TYPE\", Const, 0, \"\"},\n\t\t{\"SO_UPCALLCLOSEWAIT\", Const, 0, \"\"},\n\t\t{\"SO_UPDATE_ACCEPT_CONTEXT\", Const, 0, \"\"},\n\t\t{\"SO_UPDATE_CONNECT_CONTEXT\", Const, 1, \"\"},\n\t\t{\"SO_USELOOPBACK\", Const, 0, \"\"},\n\t\t{\"SO_USER_COOKIE\", Const, 1, \"\"},\n\t\t{\"SO_VENDOR\", Const, 3, \"\"},\n\t\t{\"SO_WANTMORE\", Const, 0, \"\"},\n\t\t{\"SO_WANTOOBFLAG\", Const, 0, \"\"},\n\t\t{\"SSLExtraCertChainPolicyPara\", Type, 0, \"\"},\n\t\t{\"SSLExtraCertChainPolicyPara.AuthType\", Field, 0, \"\"},\n\t\t{\"SSLExtraCertChainPolicyPara.Checks\", Field, 0, \"\"},\n\t\t{\"SSLExtraCertChainPolicyPara.ServerName\", Field, 0, \"\"},\n\t\t{\"SSLExtraCertChainPolicyPara.Size\", Field, 0, \"\"},\n\t\t{\"STANDARD_RIGHTS_ALL\", Const, 0, \"\"},\n\t\t{\"STANDARD_RIGHTS_EXECUTE\", Const, 0, \"\"},\n\t\t{\"STANDARD_RIGHTS_READ\", Const, 0, \"\"},\n\t\t{\"STANDARD_RIGHTS_REQUIRED\", Const, 0, \"\"},\n\t\t{\"STANDARD_RIGHTS_WRITE\", Const, 0, \"\"},\n\t\t{\"STARTF_USESHOWWINDOW\", Const, 0, \"\"},\n\t\t{\"STARTF_USESTDHANDLES\", Const, 0, \"\"},\n\t\t{\"STD_ERROR_HANDLE\", Const, 0, \"\"},\n\t\t{\"STD_INPUT_HANDLE\", Const, 0, \"\"},\n\t\t{\"STD_OUTPUT_HANDLE\", Const, 0, \"\"},\n\t\t{\"SUBLANG_ENGLISH_US\", Const, 0, \"\"},\n\t\t{\"SW_FORCEMINIMIZE\", Const, 0, \"\"},\n\t\t{\"SW_HIDE\", Const, 0, \"\"},\n\t\t{\"SW_MAXIMIZE\", Const, 0, \"\"},\n\t\t{\"SW_MINIMIZE\", Const, 0, \"\"},\n\t\t{\"SW_NORMAL\", Const, 0, \"\"},\n\t\t{\"SW_RESTORE\", Const, 0, \"\"},\n\t\t{\"SW_SHOW\", Const, 0, \"\"},\n\t\t{\"SW_SHOWDEFAULT\", Const, 0, \"\"},\n\t\t{\"SW_SHOWMAXIMIZED\", Const, 0, \"\"},\n\t\t{\"SW_SHOWMINIMIZED\", Const, 0, \"\"},\n\t\t{\"SW_SHOWMINNOACTIVE\", Const, 0, \"\"},\n\t\t{\"SW_SHOWNA\", Const, 0, \"\"},\n\t\t{\"SW_SHOWNOACTIVATE\", Const, 0, \"\"},\n\t\t{\"SW_SHOWNORMAL\", Const, 0, \"\"},\n\t\t{\"SYMBOLIC_LINK_FLAG_DIRECTORY\", Const, 4, \"\"},\n\t\t{\"SYNCHRONIZE\", Const, 0, \"\"},\n\t\t{\"SYSCTL_VERSION\", Const, 1, \"\"},\n\t\t{\"SYSCTL_VERS_0\", Const, 1, \"\"},\n\t\t{\"SYSCTL_VERS_1\", Const, 1, \"\"},\n\t\t{\"SYSCTL_VERS_MASK\", Const, 1, \"\"},\n\t\t{\"SYS_ABORT2\", Const, 0, \"\"},\n\t\t{\"SYS_ACCEPT\", Const, 0, \"\"},\n\t\t{\"SYS_ACCEPT4\", Const, 0, \"\"},\n\t\t{\"SYS_ACCEPT_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_ACCESS\", Const, 0, \"\"},\n\t\t{\"SYS_ACCESS_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_ACCT\", Const, 0, \"\"},\n\t\t{\"SYS_ADD_KEY\", Const, 0, \"\"},\n\t\t{\"SYS_ADD_PROFIL\", Const, 0, \"\"},\n\t\t{\"SYS_ADJFREQ\", Const, 1, \"\"},\n\t\t{\"SYS_ADJTIME\", Const, 0, \"\"},\n\t\t{\"SYS_ADJTIMEX\", Const, 0, \"\"},\n\t\t{\"SYS_AFS_SYSCALL\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_CANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_ERROR\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_FSYNC\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_MLOCK\", Const, 14, \"\"},\n\t\t{\"SYS_AIO_READ\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_RETURN\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_SUSPEND\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_SUSPEND_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_WAITCOMPLETE\", Const, 14, \"\"},\n\t\t{\"SYS_AIO_WRITE\", Const, 0, \"\"},\n\t\t{\"SYS_ALARM\", Const, 0, \"\"},\n\t\t{\"SYS_ARCH_PRCTL\", Const, 0, \"\"},\n\t\t{\"SYS_ARM_FADVISE64_64\", Const, 0, \"\"},\n\t\t{\"SYS_ARM_SYNC_FILE_RANGE\", Const, 0, \"\"},\n\t\t{\"SYS_ATGETMSG\", Const, 0, \"\"},\n\t\t{\"SYS_ATPGETREQ\", Const, 0, \"\"},\n\t\t{\"SYS_ATPGETRSP\", Const, 0, \"\"},\n\t\t{\"SYS_ATPSNDREQ\", Const, 0, \"\"},\n\t\t{\"SYS_ATPSNDRSP\", Const, 0, \"\"},\n\t\t{\"SYS_ATPUTMSG\", Const, 0, \"\"},\n\t\t{\"SYS_ATSOCKET\", Const, 0, \"\"},\n\t\t{\"SYS_AUDIT\", Const, 0, \"\"},\n\t\t{\"SYS_AUDITCTL\", Const, 0, \"\"},\n\t\t{\"SYS_AUDITON\", Const, 0, \"\"},\n\t\t{\"SYS_AUDIT_SESSION_JOIN\", Const, 0, \"\"},\n\t\t{\"SYS_AUDIT_SESSION_PORT\", Const, 0, \"\"},\n\t\t{\"SYS_AUDIT_SESSION_SELF\", Const, 0, \"\"},\n\t\t{\"SYS_BDFLUSH\", Const, 0, \"\"},\n\t\t{\"SYS_BIND\", Const, 0, \"\"},\n\t\t{\"SYS_BINDAT\", Const, 3, \"\"},\n\t\t{\"SYS_BREAK\", Const, 0, \"\"},\n\t\t{\"SYS_BRK\", Const, 0, \"\"},\n\t\t{\"SYS_BSDTHREAD_CREATE\", Const, 0, \"\"},\n\t\t{\"SYS_BSDTHREAD_REGISTER\", Const, 0, \"\"},\n\t\t{\"SYS_BSDTHREAD_TERMINATE\", Const, 0, \"\"},\n\t\t{\"SYS_CAPGET\", Const, 0, \"\"},\n\t\t{\"SYS_CAPSET\", Const, 0, \"\"},\n\t\t{\"SYS_CAP_ENTER\", Const, 0, \"\"},\n\t\t{\"SYS_CAP_FCNTLS_GET\", Const, 1, \"\"},\n\t\t{\"SYS_CAP_FCNTLS_LIMIT\", Const, 1, \"\"},\n\t\t{\"SYS_CAP_GETMODE\", Const, 0, \"\"},\n\t\t{\"SYS_CAP_GETRIGHTS\", Const, 0, \"\"},\n\t\t{\"SYS_CAP_IOCTLS_GET\", Const, 1, \"\"},\n\t\t{\"SYS_CAP_IOCTLS_LIMIT\", Const, 1, \"\"},\n\t\t{\"SYS_CAP_NEW\", Const, 0, \"\"},\n\t\t{\"SYS_CAP_RIGHTS_GET\", Const, 1, \"\"},\n\t\t{\"SYS_CAP_RIGHTS_LIMIT\", Const, 1, \"\"},\n\t\t{\"SYS_CHDIR\", Const, 0, \"\"},\n\t\t{\"SYS_CHFLAGS\", Const, 0, \"\"},\n\t\t{\"SYS_CHFLAGSAT\", Const, 3, \"\"},\n\t\t{\"SYS_CHMOD\", Const, 0, \"\"},\n\t\t{\"SYS_CHMOD_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_CHOWN\", Const, 0, \"\"},\n\t\t{\"SYS_CHOWN32\", Const, 0, \"\"},\n\t\t{\"SYS_CHROOT\", Const, 0, \"\"},\n\t\t{\"SYS_CHUD\", Const, 0, \"\"},\n\t\t{\"SYS_CLOCK_ADJTIME\", Const, 0, \"\"},\n\t\t{\"SYS_CLOCK_GETCPUCLOCKID2\", Const, 1, \"\"},\n\t\t{\"SYS_CLOCK_GETRES\", Const, 0, \"\"},\n\t\t{\"SYS_CLOCK_GETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_CLOCK_NANOSLEEP\", Const, 0, \"\"},\n\t\t{\"SYS_CLOCK_SETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_CLONE\", Const, 0, \"\"},\n\t\t{\"SYS_CLOSE\", Const, 0, \"\"},\n\t\t{\"SYS_CLOSEFROM\", Const, 0, \"\"},\n\t\t{\"SYS_CLOSE_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_CONNECT\", Const, 0, \"\"},\n\t\t{\"SYS_CONNECTAT\", Const, 3, \"\"},\n\t\t{\"SYS_CONNECT_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_COPYFILE\", Const, 0, \"\"},\n\t\t{\"SYS_CPUSET\", Const, 0, \"\"},\n\t\t{\"SYS_CPUSET_GETAFFINITY\", Const, 0, \"\"},\n\t\t{\"SYS_CPUSET_GETID\", Const, 0, \"\"},\n\t\t{\"SYS_CPUSET_SETAFFINITY\", Const, 0, \"\"},\n\t\t{\"SYS_CPUSET_SETID\", Const, 0, \"\"},\n\t\t{\"SYS_CREAT\", Const, 0, \"\"},\n\t\t{\"SYS_CREATE_MODULE\", Const, 0, \"\"},\n\t\t{\"SYS_CSOPS\", Const, 0, \"\"},\n\t\t{\"SYS_CSOPS_AUDITTOKEN\", Const, 16, \"\"},\n\t\t{\"SYS_DELETE\", Const, 0, \"\"},\n\t\t{\"SYS_DELETE_MODULE\", Const, 0, \"\"},\n\t\t{\"SYS_DUP\", Const, 0, \"\"},\n\t\t{\"SYS_DUP2\", Const, 0, \"\"},\n\t\t{\"SYS_DUP3\", Const, 0, \"\"},\n\t\t{\"SYS_EACCESS\", Const, 0, \"\"},\n\t\t{\"SYS_EPOLL_CREATE\", Const, 0, \"\"},\n\t\t{\"SYS_EPOLL_CREATE1\", Const, 0, \"\"},\n\t\t{\"SYS_EPOLL_CTL\", Const, 0, \"\"},\n\t\t{\"SYS_EPOLL_CTL_OLD\", Const, 0, \"\"},\n\t\t{\"SYS_EPOLL_PWAIT\", Const, 0, \"\"},\n\t\t{\"SYS_EPOLL_WAIT\", Const, 0, \"\"},\n\t\t{\"SYS_EPOLL_WAIT_OLD\", Const, 0, \"\"},\n\t\t{\"SYS_EVENTFD\", Const, 0, \"\"},\n\t\t{\"SYS_EVENTFD2\", Const, 0, \"\"},\n\t\t{\"SYS_EXCHANGEDATA\", Const, 0, \"\"},\n\t\t{\"SYS_EXECVE\", Const, 0, \"\"},\n\t\t{\"SYS_EXIT\", Const, 0, \"\"},\n\t\t{\"SYS_EXIT_GROUP\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTRCTL\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_DELETE_FD\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_DELETE_FILE\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_DELETE_LINK\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_GET_FD\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_GET_FILE\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_GET_LINK\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_LIST_FD\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_LIST_FILE\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_LIST_LINK\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_SET_FD\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_SET_FILE\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_SET_LINK\", Const, 0, \"\"},\n\t\t{\"SYS_FACCESSAT\", Const, 0, \"\"},\n\t\t{\"SYS_FADVISE64\", Const, 0, \"\"},\n\t\t{\"SYS_FADVISE64_64\", Const, 0, \"\"},\n\t\t{\"SYS_FALLOCATE\", Const, 0, \"\"},\n\t\t{\"SYS_FANOTIFY_INIT\", Const, 0, \"\"},\n\t\t{\"SYS_FANOTIFY_MARK\", Const, 0, \"\"},\n\t\t{\"SYS_FCHDIR\", Const, 0, \"\"},\n\t\t{\"SYS_FCHFLAGS\", Const, 0, \"\"},\n\t\t{\"SYS_FCHMOD\", Const, 0, \"\"},\n\t\t{\"SYS_FCHMODAT\", Const, 0, \"\"},\n\t\t{\"SYS_FCHMOD_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_FCHOWN\", Const, 0, \"\"},\n\t\t{\"SYS_FCHOWN32\", Const, 0, \"\"},\n\t\t{\"SYS_FCHOWNAT\", Const, 0, \"\"},\n\t\t{\"SYS_FCHROOT\", Const, 1, \"\"},\n\t\t{\"SYS_FCNTL\", Const, 0, \"\"},\n\t\t{\"SYS_FCNTL64\", Const, 0, \"\"},\n\t\t{\"SYS_FCNTL_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_FDATASYNC\", Const, 0, \"\"},\n\t\t{\"SYS_FEXECVE\", Const, 0, \"\"},\n\t\t{\"SYS_FFCLOCK_GETCOUNTER\", Const, 0, \"\"},\n\t\t{\"SYS_FFCLOCK_GETESTIMATE\", Const, 0, \"\"},\n\t\t{\"SYS_FFCLOCK_SETESTIMATE\", Const, 0, \"\"},\n\t\t{\"SYS_FFSCTL\", Const, 0, \"\"},\n\t\t{\"SYS_FGETATTRLIST\", Const, 0, \"\"},\n\t\t{\"SYS_FGETXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_FHOPEN\", Const, 0, \"\"},\n\t\t{\"SYS_FHSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_FHSTATFS\", Const, 0, \"\"},\n\t\t{\"SYS_FILEPORT_MAKEFD\", Const, 0, \"\"},\n\t\t{\"SYS_FILEPORT_MAKEPORT\", Const, 0, \"\"},\n\t\t{\"SYS_FKTRACE\", Const, 1, \"\"},\n\t\t{\"SYS_FLISTXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_FLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_FORK\", Const, 0, \"\"},\n\t\t{\"SYS_FPATHCONF\", Const, 0, \"\"},\n\t\t{\"SYS_FREEBSD6_FTRUNCATE\", Const, 0, \"\"},\n\t\t{\"SYS_FREEBSD6_LSEEK\", Const, 0, \"\"},\n\t\t{\"SYS_FREEBSD6_MMAP\", Const, 0, \"\"},\n\t\t{\"SYS_FREEBSD6_PREAD\", Const, 0, \"\"},\n\t\t{\"SYS_FREEBSD6_PWRITE\", Const, 0, \"\"},\n\t\t{\"SYS_FREEBSD6_TRUNCATE\", Const, 0, \"\"},\n\t\t{\"SYS_FREMOVEXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_FSCTL\", Const, 0, \"\"},\n\t\t{\"SYS_FSETATTRLIST\", Const, 0, \"\"},\n\t\t{\"SYS_FSETXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_FSGETPATH\", Const, 0, \"\"},\n\t\t{\"SYS_FSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_FSTAT64\", Const, 0, \"\"},\n\t\t{\"SYS_FSTAT64_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_FSTATAT\", Const, 0, \"\"},\n\t\t{\"SYS_FSTATAT64\", Const, 0, \"\"},\n\t\t{\"SYS_FSTATFS\", Const, 0, \"\"},\n\t\t{\"SYS_FSTATFS64\", Const, 0, \"\"},\n\t\t{\"SYS_FSTATV\", Const, 0, \"\"},\n\t\t{\"SYS_FSTATVFS1\", Const, 1, \"\"},\n\t\t{\"SYS_FSTAT_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_FSYNC\", Const, 0, \"\"},\n\t\t{\"SYS_FSYNC_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_FSYNC_RANGE\", Const, 1, \"\"},\n\t\t{\"SYS_FTIME\", Const, 0, \"\"},\n\t\t{\"SYS_FTRUNCATE\", Const, 0, \"\"},\n\t\t{\"SYS_FTRUNCATE64\", Const, 0, \"\"},\n\t\t{\"SYS_FUTEX\", Const, 0, \"\"},\n\t\t{\"SYS_FUTIMENS\", Const, 1, \"\"},\n\t\t{\"SYS_FUTIMES\", Const, 0, \"\"},\n\t\t{\"SYS_FUTIMESAT\", Const, 0, \"\"},\n\t\t{\"SYS_GETATTRLIST\", Const, 0, \"\"},\n\t\t{\"SYS_GETAUDIT\", Const, 0, \"\"},\n\t\t{\"SYS_GETAUDIT_ADDR\", Const, 0, \"\"},\n\t\t{\"SYS_GETAUID\", Const, 0, \"\"},\n\t\t{\"SYS_GETCONTEXT\", Const, 0, \"\"},\n\t\t{\"SYS_GETCPU\", Const, 0, \"\"},\n\t\t{\"SYS_GETCWD\", Const, 0, \"\"},\n\t\t{\"SYS_GETDENTS\", Const, 0, \"\"},\n\t\t{\"SYS_GETDENTS64\", Const, 0, \"\"},\n\t\t{\"SYS_GETDIRENTRIES\", Const, 0, \"\"},\n\t\t{\"SYS_GETDIRENTRIES64\", Const, 0, \"\"},\n\t\t{\"SYS_GETDIRENTRIESATTR\", Const, 0, \"\"},\n\t\t{\"SYS_GETDTABLECOUNT\", Const, 1, \"\"},\n\t\t{\"SYS_GETDTABLESIZE\", Const, 0, \"\"},\n\t\t{\"SYS_GETEGID\", Const, 0, \"\"},\n\t\t{\"SYS_GETEGID32\", Const, 0, \"\"},\n\t\t{\"SYS_GETEUID\", Const, 0, \"\"},\n\t\t{\"SYS_GETEUID32\", Const, 0, \"\"},\n\t\t{\"SYS_GETFH\", Const, 0, \"\"},\n\t\t{\"SYS_GETFSSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_GETFSSTAT64\", Const, 0, \"\"},\n\t\t{\"SYS_GETGID\", Const, 0, \"\"},\n\t\t{\"SYS_GETGID32\", Const, 0, \"\"},\n\t\t{\"SYS_GETGROUPS\", Const, 0, \"\"},\n\t\t{\"SYS_GETGROUPS32\", Const, 0, \"\"},\n\t\t{\"SYS_GETHOSTUUID\", Const, 0, \"\"},\n\t\t{\"SYS_GETITIMER\", Const, 0, \"\"},\n\t\t{\"SYS_GETLCID\", Const, 0, \"\"},\n\t\t{\"SYS_GETLOGIN\", Const, 0, \"\"},\n\t\t{\"SYS_GETLOGINCLASS\", Const, 0, \"\"},\n\t\t{\"SYS_GETPEERNAME\", Const, 0, \"\"},\n\t\t{\"SYS_GETPGID\", Const, 0, \"\"},\n\t\t{\"SYS_GETPGRP\", Const, 0, \"\"},\n\t\t{\"SYS_GETPID\", Const, 0, \"\"},\n\t\t{\"SYS_GETPMSG\", Const, 0, \"\"},\n\t\t{\"SYS_GETPPID\", Const, 0, \"\"},\n\t\t{\"SYS_GETPRIORITY\", Const, 0, \"\"},\n\t\t{\"SYS_GETRESGID\", Const, 0, \"\"},\n\t\t{\"SYS_GETRESGID32\", Const, 0, \"\"},\n\t\t{\"SYS_GETRESUID\", Const, 0, \"\"},\n\t\t{\"SYS_GETRESUID32\", Const, 0, \"\"},\n\t\t{\"SYS_GETRLIMIT\", Const, 0, \"\"},\n\t\t{\"SYS_GETRTABLE\", Const, 1, \"\"},\n\t\t{\"SYS_GETRUSAGE\", Const, 0, \"\"},\n\t\t{\"SYS_GETSGROUPS\", Const, 0, \"\"},\n\t\t{\"SYS_GETSID\", Const, 0, \"\"},\n\t\t{\"SYS_GETSOCKNAME\", Const, 0, \"\"},\n\t\t{\"SYS_GETSOCKOPT\", Const, 0, \"\"},\n\t\t{\"SYS_GETTHRID\", Const, 1, \"\"},\n\t\t{\"SYS_GETTID\", Const, 0, \"\"},\n\t\t{\"SYS_GETTIMEOFDAY\", Const, 0, \"\"},\n\t\t{\"SYS_GETUID\", Const, 0, \"\"},\n\t\t{\"SYS_GETUID32\", Const, 0, \"\"},\n\t\t{\"SYS_GETVFSSTAT\", Const, 1, \"\"},\n\t\t{\"SYS_GETWGROUPS\", Const, 0, \"\"},\n\t\t{\"SYS_GETXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_GET_KERNEL_SYMS\", Const, 0, \"\"},\n\t\t{\"SYS_GET_MEMPOLICY\", Const, 0, \"\"},\n\t\t{\"SYS_GET_ROBUST_LIST\", Const, 0, \"\"},\n\t\t{\"SYS_GET_THREAD_AREA\", Const, 0, \"\"},\n\t\t{\"SYS_GSSD_SYSCALL\", Const, 14, \"\"},\n\t\t{\"SYS_GTTY\", Const, 0, \"\"},\n\t\t{\"SYS_IDENTITYSVC\", Const, 0, \"\"},\n\t\t{\"SYS_IDLE\", Const, 0, \"\"},\n\t\t{\"SYS_INITGROUPS\", Const, 0, \"\"},\n\t\t{\"SYS_INIT_MODULE\", Const, 0, \"\"},\n\t\t{\"SYS_INOTIFY_ADD_WATCH\", Const, 0, \"\"},\n\t\t{\"SYS_INOTIFY_INIT\", Const, 0, \"\"},\n\t\t{\"SYS_INOTIFY_INIT1\", Const, 0, \"\"},\n\t\t{\"SYS_INOTIFY_RM_WATCH\", Const, 0, \"\"},\n\t\t{\"SYS_IOCTL\", Const, 0, \"\"},\n\t\t{\"SYS_IOPERM\", Const, 0, \"\"},\n\t\t{\"SYS_IOPL\", Const, 0, \"\"},\n\t\t{\"SYS_IOPOLICYSYS\", Const, 0, \"\"},\n\t\t{\"SYS_IOPRIO_GET\", Const, 0, \"\"},\n\t\t{\"SYS_IOPRIO_SET\", Const, 0, \"\"},\n\t\t{\"SYS_IO_CANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_IO_DESTROY\", Const, 0, \"\"},\n\t\t{\"SYS_IO_GETEVENTS\", Const, 0, \"\"},\n\t\t{\"SYS_IO_SETUP\", Const, 0, \"\"},\n\t\t{\"SYS_IO_SUBMIT\", Const, 0, \"\"},\n\t\t{\"SYS_IPC\", Const, 0, \"\"},\n\t\t{\"SYS_ISSETUGID\", Const, 0, \"\"},\n\t\t{\"SYS_JAIL\", Const, 0, \"\"},\n\t\t{\"SYS_JAIL_ATTACH\", Const, 0, \"\"},\n\t\t{\"SYS_JAIL_GET\", Const, 0, \"\"},\n\t\t{\"SYS_JAIL_REMOVE\", Const, 0, \"\"},\n\t\t{\"SYS_JAIL_SET\", Const, 0, \"\"},\n\t\t{\"SYS_KAS_INFO\", Const, 16, \"\"},\n\t\t{\"SYS_KDEBUG_TRACE\", Const, 0, \"\"},\n\t\t{\"SYS_KENV\", Const, 0, \"\"},\n\t\t{\"SYS_KEVENT\", Const, 0, \"\"},\n\t\t{\"SYS_KEVENT64\", Const, 0, \"\"},\n\t\t{\"SYS_KEXEC_LOAD\", Const, 0, \"\"},\n\t\t{\"SYS_KEYCTL\", Const, 0, \"\"},\n\t\t{\"SYS_KILL\", Const, 0, \"\"},\n\t\t{\"SYS_KLDFIND\", Const, 0, \"\"},\n\t\t{\"SYS_KLDFIRSTMOD\", Const, 0, \"\"},\n\t\t{\"SYS_KLDLOAD\", Const, 0, \"\"},\n\t\t{\"SYS_KLDNEXT\", Const, 0, \"\"},\n\t\t{\"SYS_KLDSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_KLDSYM\", Const, 0, \"\"},\n\t\t{\"SYS_KLDUNLOAD\", Const, 0, \"\"},\n\t\t{\"SYS_KLDUNLOADF\", Const, 0, \"\"},\n\t\t{\"SYS_KMQ_NOTIFY\", Const, 14, \"\"},\n\t\t{\"SYS_KMQ_OPEN\", Const, 14, \"\"},\n\t\t{\"SYS_KMQ_SETATTR\", Const, 14, \"\"},\n\t\t{\"SYS_KMQ_TIMEDRECEIVE\", Const, 14, \"\"},\n\t\t{\"SYS_KMQ_TIMEDSEND\", Const, 14, \"\"},\n\t\t{\"SYS_KMQ_UNLINK\", Const, 14, \"\"},\n\t\t{\"SYS_KQUEUE\", Const, 0, \"\"},\n\t\t{\"SYS_KQUEUE1\", Const, 1, \"\"},\n\t\t{\"SYS_KSEM_CLOSE\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_DESTROY\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_GETVALUE\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_INIT\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_OPEN\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_POST\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_TIMEDWAIT\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_TRYWAIT\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_UNLINK\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_WAIT\", Const, 14, \"\"},\n\t\t{\"SYS_KTIMER_CREATE\", Const, 0, \"\"},\n\t\t{\"SYS_KTIMER_DELETE\", Const, 0, \"\"},\n\t\t{\"SYS_KTIMER_GETOVERRUN\", Const, 0, \"\"},\n\t\t{\"SYS_KTIMER_GETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_KTIMER_SETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_KTRACE\", Const, 0, \"\"},\n\t\t{\"SYS_LCHFLAGS\", Const, 0, \"\"},\n\t\t{\"SYS_LCHMOD\", Const, 0, \"\"},\n\t\t{\"SYS_LCHOWN\", Const, 0, \"\"},\n\t\t{\"SYS_LCHOWN32\", Const, 0, \"\"},\n\t\t{\"SYS_LEDGER\", Const, 16, \"\"},\n\t\t{\"SYS_LGETFH\", Const, 0, \"\"},\n\t\t{\"SYS_LGETXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_LINK\", Const, 0, \"\"},\n\t\t{\"SYS_LINKAT\", Const, 0, \"\"},\n\t\t{\"SYS_LIO_LISTIO\", Const, 0, \"\"},\n\t\t{\"SYS_LISTEN\", Const, 0, \"\"},\n\t\t{\"SYS_LISTXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_LLISTXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_LOCK\", Const, 0, \"\"},\n\t\t{\"SYS_LOOKUP_DCOOKIE\", Const, 0, \"\"},\n\t\t{\"SYS_LPATHCONF\", Const, 0, \"\"},\n\t\t{\"SYS_LREMOVEXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_LSEEK\", Const, 0, \"\"},\n\t\t{\"SYS_LSETXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_LSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_LSTAT64\", Const, 0, \"\"},\n\t\t{\"SYS_LSTAT64_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_LSTATV\", Const, 0, \"\"},\n\t\t{\"SYS_LSTAT_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_LUTIMES\", Const, 0, \"\"},\n\t\t{\"SYS_MAC_SYSCALL\", Const, 0, \"\"},\n\t\t{\"SYS_MADVISE\", Const, 0, \"\"},\n\t\t{\"SYS_MADVISE1\", Const, 0, \"\"},\n\t\t{\"SYS_MAXSYSCALL\", Const, 0, \"\"},\n\t\t{\"SYS_MBIND\", Const, 0, \"\"},\n\t\t{\"SYS_MIGRATE_PAGES\", Const, 0, \"\"},\n\t\t{\"SYS_MINCORE\", Const, 0, \"\"},\n\t\t{\"SYS_MINHERIT\", Const, 0, \"\"},\n\t\t{\"SYS_MKCOMPLEX\", Const, 0, \"\"},\n\t\t{\"SYS_MKDIR\", Const, 0, \"\"},\n\t\t{\"SYS_MKDIRAT\", Const, 0, \"\"},\n\t\t{\"SYS_MKDIR_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_MKFIFO\", Const, 0, \"\"},\n\t\t{\"SYS_MKFIFOAT\", Const, 0, \"\"},\n\t\t{\"SYS_MKFIFO_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_MKNOD\", Const, 0, \"\"},\n\t\t{\"SYS_MKNODAT\", Const, 0, \"\"},\n\t\t{\"SYS_MLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_MLOCKALL\", Const, 0, \"\"},\n\t\t{\"SYS_MMAP\", Const, 0, \"\"},\n\t\t{\"SYS_MMAP2\", Const, 0, \"\"},\n\t\t{\"SYS_MODCTL\", Const, 1, \"\"},\n\t\t{\"SYS_MODFIND\", Const, 0, \"\"},\n\t\t{\"SYS_MODFNEXT\", Const, 0, \"\"},\n\t\t{\"SYS_MODIFY_LDT\", Const, 0, \"\"},\n\t\t{\"SYS_MODNEXT\", Const, 0, \"\"},\n\t\t{\"SYS_MODSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_MODWATCH\", Const, 0, \"\"},\n\t\t{\"SYS_MOUNT\", Const, 0, \"\"},\n\t\t{\"SYS_MOVE_PAGES\", Const, 0, \"\"},\n\t\t{\"SYS_MPROTECT\", Const, 0, \"\"},\n\t\t{\"SYS_MPX\", Const, 0, \"\"},\n\t\t{\"SYS_MQUERY\", Const, 1, \"\"},\n\t\t{\"SYS_MQ_GETSETATTR\", Const, 0, \"\"},\n\t\t{\"SYS_MQ_NOTIFY\", Const, 0, \"\"},\n\t\t{\"SYS_MQ_OPEN\", Const, 0, \"\"},\n\t\t{\"SYS_MQ_TIMEDRECEIVE\", Const, 0, \"\"},\n\t\t{\"SYS_MQ_TIMEDSEND\", Const, 0, \"\"},\n\t\t{\"SYS_MQ_UNLINK\", Const, 0, \"\"},\n\t\t{\"SYS_MREMAP\", Const, 0, \"\"},\n\t\t{\"SYS_MSGCTL\", Const, 0, \"\"},\n\t\t{\"SYS_MSGGET\", Const, 0, \"\"},\n\t\t{\"SYS_MSGRCV\", Const, 0, \"\"},\n\t\t{\"SYS_MSGRCV_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_MSGSND\", Const, 0, \"\"},\n\t\t{\"SYS_MSGSND_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_MSGSYS\", Const, 0, \"\"},\n\t\t{\"SYS_MSYNC\", Const, 0, \"\"},\n\t\t{\"SYS_MSYNC_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_MUNLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_MUNLOCKALL\", Const, 0, \"\"},\n\t\t{\"SYS_MUNMAP\", Const, 0, \"\"},\n\t\t{\"SYS_NAME_TO_HANDLE_AT\", Const, 0, \"\"},\n\t\t{\"SYS_NANOSLEEP\", Const, 0, \"\"},\n\t\t{\"SYS_NEWFSTATAT\", Const, 0, \"\"},\n\t\t{\"SYS_NFSCLNT\", Const, 0, \"\"},\n\t\t{\"SYS_NFSSERVCTL\", Const, 0, \"\"},\n\t\t{\"SYS_NFSSVC\", Const, 0, \"\"},\n\t\t{\"SYS_NFSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_NICE\", Const, 0, \"\"},\n\t\t{\"SYS_NLM_SYSCALL\", Const, 14, \"\"},\n\t\t{\"SYS_NLSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_NMOUNT\", Const, 0, \"\"},\n\t\t{\"SYS_NSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_NTP_ADJTIME\", Const, 0, \"\"},\n\t\t{\"SYS_NTP_GETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_NUMA_GETAFFINITY\", Const, 14, \"\"},\n\t\t{\"SYS_NUMA_SETAFFINITY\", Const, 14, \"\"},\n\t\t{\"SYS_OABI_SYSCALL_BASE\", Const, 0, \"\"},\n\t\t{\"SYS_OBREAK\", Const, 0, \"\"},\n\t\t{\"SYS_OLDFSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_OLDLSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_OLDOLDUNAME\", Const, 0, \"\"},\n\t\t{\"SYS_OLDSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_OLDUNAME\", Const, 0, \"\"},\n\t\t{\"SYS_OPEN\", Const, 0, \"\"},\n\t\t{\"SYS_OPENAT\", Const, 0, \"\"},\n\t\t{\"SYS_OPENBSD_POLL\", Const, 0, \"\"},\n\t\t{\"SYS_OPEN_BY_HANDLE_AT\", Const, 0, \"\"},\n\t\t{\"SYS_OPEN_DPROTECTED_NP\", Const, 16, \"\"},\n\t\t{\"SYS_OPEN_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_OPEN_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_OVADVISE\", Const, 0, \"\"},\n\t\t{\"SYS_PACCEPT\", Const, 1, \"\"},\n\t\t{\"SYS_PATHCONF\", Const, 0, \"\"},\n\t\t{\"SYS_PAUSE\", Const, 0, \"\"},\n\t\t{\"SYS_PCICONFIG_IOBASE\", Const, 0, \"\"},\n\t\t{\"SYS_PCICONFIG_READ\", Const, 0, \"\"},\n\t\t{\"SYS_PCICONFIG_WRITE\", Const, 0, \"\"},\n\t\t{\"SYS_PDFORK\", Const, 0, \"\"},\n\t\t{\"SYS_PDGETPID\", Const, 0, \"\"},\n\t\t{\"SYS_PDKILL\", Const, 0, \"\"},\n\t\t{\"SYS_PERF_EVENT_OPEN\", Const, 0, \"\"},\n\t\t{\"SYS_PERSONALITY\", Const, 0, \"\"},\n\t\t{\"SYS_PID_HIBERNATE\", Const, 0, \"\"},\n\t\t{\"SYS_PID_RESUME\", Const, 0, \"\"},\n\t\t{\"SYS_PID_SHUTDOWN_SOCKETS\", Const, 0, \"\"},\n\t\t{\"SYS_PID_SUSPEND\", Const, 0, \"\"},\n\t\t{\"SYS_PIPE\", Const, 0, \"\"},\n\t\t{\"SYS_PIPE2\", Const, 0, \"\"},\n\t\t{\"SYS_PIVOT_ROOT\", Const, 0, \"\"},\n\t\t{\"SYS_PMC_CONTROL\", Const, 1, \"\"},\n\t\t{\"SYS_PMC_GET_INFO\", Const, 1, \"\"},\n\t\t{\"SYS_POLL\", Const, 0, \"\"},\n\t\t{\"SYS_POLLTS\", Const, 1, \"\"},\n\t\t{\"SYS_POLL_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_POSIX_FADVISE\", Const, 0, \"\"},\n\t\t{\"SYS_POSIX_FALLOCATE\", Const, 0, \"\"},\n\t\t{\"SYS_POSIX_OPENPT\", Const, 0, \"\"},\n\t\t{\"SYS_POSIX_SPAWN\", Const, 0, \"\"},\n\t\t{\"SYS_PPOLL\", Const, 0, \"\"},\n\t\t{\"SYS_PRCTL\", Const, 0, \"\"},\n\t\t{\"SYS_PREAD\", Const, 0, \"\"},\n\t\t{\"SYS_PREAD64\", Const, 0, \"\"},\n\t\t{\"SYS_PREADV\", Const, 0, \"\"},\n\t\t{\"SYS_PREAD_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_PRLIMIT64\", Const, 0, \"\"},\n\t\t{\"SYS_PROCCTL\", Const, 3, \"\"},\n\t\t{\"SYS_PROCESS_POLICY\", Const, 0, \"\"},\n\t\t{\"SYS_PROCESS_VM_READV\", Const, 0, \"\"},\n\t\t{\"SYS_PROCESS_VM_WRITEV\", Const, 0, \"\"},\n\t\t{\"SYS_PROC_INFO\", Const, 0, \"\"},\n\t\t{\"SYS_PROF\", Const, 0, \"\"},\n\t\t{\"SYS_PROFIL\", Const, 0, \"\"},\n\t\t{\"SYS_PSELECT\", Const, 0, \"\"},\n\t\t{\"SYS_PSELECT6\", Const, 0, \"\"},\n\t\t{\"SYS_PSET_ASSIGN\", Const, 1, \"\"},\n\t\t{\"SYS_PSET_CREATE\", Const, 1, \"\"},\n\t\t{\"SYS_PSET_DESTROY\", Const, 1, \"\"},\n\t\t{\"SYS_PSYNCH_CVBROAD\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_CVCLRPREPOST\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_CVSIGNAL\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_CVWAIT\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_MUTEXDROP\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_MUTEXWAIT\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_DOWNGRADE\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_LONGRDLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_RDLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_UNLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_UNLOCK2\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_UPGRADE\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_WRLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_YIELDWRLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_PTRACE\", Const, 0, \"\"},\n\t\t{\"SYS_PUTPMSG\", Const, 0, \"\"},\n\t\t{\"SYS_PWRITE\", Const, 0, \"\"},\n\t\t{\"SYS_PWRITE64\", Const, 0, \"\"},\n\t\t{\"SYS_PWRITEV\", Const, 0, \"\"},\n\t\t{\"SYS_PWRITE_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_QUERY_MODULE\", Const, 0, \"\"},\n\t\t{\"SYS_QUOTACTL\", Const, 0, \"\"},\n\t\t{\"SYS_RASCTL\", Const, 1, \"\"},\n\t\t{\"SYS_RCTL_ADD_RULE\", Const, 0, \"\"},\n\t\t{\"SYS_RCTL_GET_LIMITS\", Const, 0, \"\"},\n\t\t{\"SYS_RCTL_GET_RACCT\", Const, 0, \"\"},\n\t\t{\"SYS_RCTL_GET_RULES\", Const, 0, \"\"},\n\t\t{\"SYS_RCTL_REMOVE_RULE\", Const, 0, \"\"},\n\t\t{\"SYS_READ\", Const, 0, \"\"},\n\t\t{\"SYS_READAHEAD\", Const, 0, \"\"},\n\t\t{\"SYS_READDIR\", Const, 0, \"\"},\n\t\t{\"SYS_READLINK\", Const, 0, \"\"},\n\t\t{\"SYS_READLINKAT\", Const, 0, \"\"},\n\t\t{\"SYS_READV\", Const, 0, \"\"},\n\t\t{\"SYS_READV_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_READ_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_REBOOT\", Const, 0, \"\"},\n\t\t{\"SYS_RECV\", Const, 0, \"\"},\n\t\t{\"SYS_RECVFROM\", Const, 0, \"\"},\n\t\t{\"SYS_RECVFROM_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_RECVMMSG\", Const, 0, \"\"},\n\t\t{\"SYS_RECVMSG\", Const, 0, \"\"},\n\t\t{\"SYS_RECVMSG_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_REMAP_FILE_PAGES\", Const, 0, \"\"},\n\t\t{\"SYS_REMOVEXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_RENAME\", Const, 0, \"\"},\n\t\t{\"SYS_RENAMEAT\", Const, 0, \"\"},\n\t\t{\"SYS_REQUEST_KEY\", Const, 0, \"\"},\n\t\t{\"SYS_RESTART_SYSCALL\", Const, 0, \"\"},\n\t\t{\"SYS_REVOKE\", Const, 0, \"\"},\n\t\t{\"SYS_RFORK\", Const, 0, \"\"},\n\t\t{\"SYS_RMDIR\", Const, 0, \"\"},\n\t\t{\"SYS_RTPRIO\", Const, 0, \"\"},\n\t\t{\"SYS_RTPRIO_THREAD\", Const, 0, \"\"},\n\t\t{\"SYS_RT_SIGACTION\", Const, 0, \"\"},\n\t\t{\"SYS_RT_SIGPENDING\", Const, 0, \"\"},\n\t\t{\"SYS_RT_SIGPROCMASK\", Const, 0, \"\"},\n\t\t{\"SYS_RT_SIGQUEUEINFO\", Const, 0, \"\"},\n\t\t{\"SYS_RT_SIGRETURN\", Const, 0, \"\"},\n\t\t{\"SYS_RT_SIGSUSPEND\", Const, 0, \"\"},\n\t\t{\"SYS_RT_SIGTIMEDWAIT\", Const, 0, \"\"},\n\t\t{\"SYS_RT_TGSIGQUEUEINFO\", Const, 0, \"\"},\n\t\t{\"SYS_SBRK\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_GETAFFINITY\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_GETPARAM\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_GETSCHEDULER\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_GET_PRIORITY_MAX\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_GET_PRIORITY_MIN\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_RR_GET_INTERVAL\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_SETAFFINITY\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_SETPARAM\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_SETSCHEDULER\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_YIELD\", Const, 0, \"\"},\n\t\t{\"SYS_SCTP_GENERIC_RECVMSG\", Const, 0, \"\"},\n\t\t{\"SYS_SCTP_GENERIC_SENDMSG\", Const, 0, \"\"},\n\t\t{\"SYS_SCTP_GENERIC_SENDMSG_IOV\", Const, 0, \"\"},\n\t\t{\"SYS_SCTP_PEELOFF\", Const, 0, \"\"},\n\t\t{\"SYS_SEARCHFS\", Const, 0, \"\"},\n\t\t{\"SYS_SECURITY\", Const, 0, \"\"},\n\t\t{\"SYS_SELECT\", Const, 0, \"\"},\n\t\t{\"SYS_SELECT_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_SEMCONFIG\", Const, 1, \"\"},\n\t\t{\"SYS_SEMCTL\", Const, 0, \"\"},\n\t\t{\"SYS_SEMGET\", Const, 0, \"\"},\n\t\t{\"SYS_SEMOP\", Const, 0, \"\"},\n\t\t{\"SYS_SEMSYS\", Const, 0, \"\"},\n\t\t{\"SYS_SEMTIMEDOP\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_CLOSE\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_DESTROY\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_GETVALUE\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_INIT\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_OPEN\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_POST\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_TRYWAIT\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_UNLINK\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_WAIT\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_WAIT_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_SEND\", Const, 0, \"\"},\n\t\t{\"SYS_SENDFILE\", Const, 0, \"\"},\n\t\t{\"SYS_SENDFILE64\", Const, 0, \"\"},\n\t\t{\"SYS_SENDMMSG\", Const, 0, \"\"},\n\t\t{\"SYS_SENDMSG\", Const, 0, \"\"},\n\t\t{\"SYS_SENDMSG_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_SENDTO\", Const, 0, \"\"},\n\t\t{\"SYS_SENDTO_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_SETATTRLIST\", Const, 0, \"\"},\n\t\t{\"SYS_SETAUDIT\", Const, 0, \"\"},\n\t\t{\"SYS_SETAUDIT_ADDR\", Const, 0, \"\"},\n\t\t{\"SYS_SETAUID\", Const, 0, \"\"},\n\t\t{\"SYS_SETCONTEXT\", Const, 0, \"\"},\n\t\t{\"SYS_SETDOMAINNAME\", Const, 0, \"\"},\n\t\t{\"SYS_SETEGID\", Const, 0, \"\"},\n\t\t{\"SYS_SETEUID\", Const, 0, \"\"},\n\t\t{\"SYS_SETFIB\", Const, 0, \"\"},\n\t\t{\"SYS_SETFSGID\", Const, 0, \"\"},\n\t\t{\"SYS_SETFSGID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETFSUID\", Const, 0, \"\"},\n\t\t{\"SYS_SETFSUID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETGID\", Const, 0, \"\"},\n\t\t{\"SYS_SETGID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETGROUPS\", Const, 0, \"\"},\n\t\t{\"SYS_SETGROUPS32\", Const, 0, \"\"},\n\t\t{\"SYS_SETHOSTNAME\", Const, 0, \"\"},\n\t\t{\"SYS_SETITIMER\", Const, 0, \"\"},\n\t\t{\"SYS_SETLCID\", Const, 0, \"\"},\n\t\t{\"SYS_SETLOGIN\", Const, 0, \"\"},\n\t\t{\"SYS_SETLOGINCLASS\", Const, 0, \"\"},\n\t\t{\"SYS_SETNS\", Const, 0, \"\"},\n\t\t{\"SYS_SETPGID\", Const, 0, \"\"},\n\t\t{\"SYS_SETPRIORITY\", Const, 0, \"\"},\n\t\t{\"SYS_SETPRIVEXEC\", Const, 0, \"\"},\n\t\t{\"SYS_SETREGID\", Const, 0, \"\"},\n\t\t{\"SYS_SETREGID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETRESGID\", Const, 0, \"\"},\n\t\t{\"SYS_SETRESGID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETRESUID\", Const, 0, \"\"},\n\t\t{\"SYS_SETRESUID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETREUID\", Const, 0, \"\"},\n\t\t{\"SYS_SETREUID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETRLIMIT\", Const, 0, \"\"},\n\t\t{\"SYS_SETRTABLE\", Const, 1, \"\"},\n\t\t{\"SYS_SETSGROUPS\", Const, 0, \"\"},\n\t\t{\"SYS_SETSID\", Const, 0, \"\"},\n\t\t{\"SYS_SETSOCKOPT\", Const, 0, \"\"},\n\t\t{\"SYS_SETTID\", Const, 0, \"\"},\n\t\t{\"SYS_SETTID_WITH_PID\", Const, 0, \"\"},\n\t\t{\"SYS_SETTIMEOFDAY\", Const, 0, \"\"},\n\t\t{\"SYS_SETUID\", Const, 0, \"\"},\n\t\t{\"SYS_SETUID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETWGROUPS\", Const, 0, \"\"},\n\t\t{\"SYS_SETXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_SET_MEMPOLICY\", Const, 0, \"\"},\n\t\t{\"SYS_SET_ROBUST_LIST\", Const, 0, \"\"},\n\t\t{\"SYS_SET_THREAD_AREA\", Const, 0, \"\"},\n\t\t{\"SYS_SET_TID_ADDRESS\", Const, 0, \"\"},\n\t\t{\"SYS_SGETMASK\", Const, 0, \"\"},\n\t\t{\"SYS_SHARED_REGION_CHECK_NP\", Const, 0, \"\"},\n\t\t{\"SYS_SHARED_REGION_MAP_AND_SLIDE_NP\", Const, 0, \"\"},\n\t\t{\"SYS_SHMAT\", Const, 0, \"\"},\n\t\t{\"SYS_SHMCTL\", Const, 0, \"\"},\n\t\t{\"SYS_SHMDT\", Const, 0, \"\"},\n\t\t{\"SYS_SHMGET\", Const, 0, \"\"},\n\t\t{\"SYS_SHMSYS\", Const, 0, \"\"},\n\t\t{\"SYS_SHM_OPEN\", Const, 0, \"\"},\n\t\t{\"SYS_SHM_UNLINK\", Const, 0, \"\"},\n\t\t{\"SYS_SHUTDOWN\", Const, 0, \"\"},\n\t\t{\"SYS_SIGACTION\", Const, 0, \"\"},\n\t\t{\"SYS_SIGALTSTACK\", Const, 0, \"\"},\n\t\t{\"SYS_SIGNAL\", Const, 0, \"\"},\n\t\t{\"SYS_SIGNALFD\", Const, 0, \"\"},\n\t\t{\"SYS_SIGNALFD4\", Const, 0, \"\"},\n\t\t{\"SYS_SIGPENDING\", Const, 0, \"\"},\n\t\t{\"SYS_SIGPROCMASK\", Const, 0, \"\"},\n\t\t{\"SYS_SIGQUEUE\", Const, 0, \"\"},\n\t\t{\"SYS_SIGQUEUEINFO\", Const, 1, \"\"},\n\t\t{\"SYS_SIGRETURN\", Const, 0, \"\"},\n\t\t{\"SYS_SIGSUSPEND\", Const, 0, \"\"},\n\t\t{\"SYS_SIGSUSPEND_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_SIGTIMEDWAIT\", Const, 0, \"\"},\n\t\t{\"SYS_SIGWAIT\", Const, 0, \"\"},\n\t\t{\"SYS_SIGWAITINFO\", Const, 0, \"\"},\n\t\t{\"SYS_SOCKET\", Const, 0, \"\"},\n\t\t{\"SYS_SOCKETCALL\", Const, 0, \"\"},\n\t\t{\"SYS_SOCKETPAIR\", Const, 0, \"\"},\n\t\t{\"SYS_SPLICE\", Const, 0, \"\"},\n\t\t{\"SYS_SSETMASK\", Const, 0, \"\"},\n\t\t{\"SYS_SSTK\", Const, 0, \"\"},\n\t\t{\"SYS_STACK_SNAPSHOT\", Const, 0, \"\"},\n\t\t{\"SYS_STAT\", Const, 0, \"\"},\n\t\t{\"SYS_STAT64\", Const, 0, \"\"},\n\t\t{\"SYS_STAT64_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_STATFS\", Const, 0, \"\"},\n\t\t{\"SYS_STATFS64\", Const, 0, \"\"},\n\t\t{\"SYS_STATV\", Const, 0, \"\"},\n\t\t{\"SYS_STATVFS1\", Const, 1, \"\"},\n\t\t{\"SYS_STAT_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_STIME\", Const, 0, \"\"},\n\t\t{\"SYS_STTY\", Const, 0, \"\"},\n\t\t{\"SYS_SWAPCONTEXT\", Const, 0, \"\"},\n\t\t{\"SYS_SWAPCTL\", Const, 1, \"\"},\n\t\t{\"SYS_SWAPOFF\", Const, 0, \"\"},\n\t\t{\"SYS_SWAPON\", Const, 0, \"\"},\n\t\t{\"SYS_SYMLINK\", Const, 0, \"\"},\n\t\t{\"SYS_SYMLINKAT\", Const, 0, \"\"},\n\t\t{\"SYS_SYNC\", Const, 0, \"\"},\n\t\t{\"SYS_SYNCFS\", Const, 0, \"\"},\n\t\t{\"SYS_SYNC_FILE_RANGE\", Const, 0, \"\"},\n\t\t{\"SYS_SYSARCH\", Const, 0, \"\"},\n\t\t{\"SYS_SYSCALL\", Const, 0, \"\"},\n\t\t{\"SYS_SYSCALL_BASE\", Const, 0, \"\"},\n\t\t{\"SYS_SYSFS\", Const, 0, \"\"},\n\t\t{\"SYS_SYSINFO\", Const, 0, \"\"},\n\t\t{\"SYS_SYSLOG\", Const, 0, \"\"},\n\t\t{\"SYS_TEE\", Const, 0, \"\"},\n\t\t{\"SYS_TGKILL\", Const, 0, \"\"},\n\t\t{\"SYS_THREAD_SELFID\", Const, 0, \"\"},\n\t\t{\"SYS_THR_CREATE\", Const, 0, \"\"},\n\t\t{\"SYS_THR_EXIT\", Const, 0, \"\"},\n\t\t{\"SYS_THR_KILL\", Const, 0, \"\"},\n\t\t{\"SYS_THR_KILL2\", Const, 0, \"\"},\n\t\t{\"SYS_THR_NEW\", Const, 0, \"\"},\n\t\t{\"SYS_THR_SELF\", Const, 0, \"\"},\n\t\t{\"SYS_THR_SET_NAME\", Const, 0, \"\"},\n\t\t{\"SYS_THR_SUSPEND\", Const, 0, \"\"},\n\t\t{\"SYS_THR_WAKE\", Const, 0, \"\"},\n\t\t{\"SYS_TIME\", Const, 0, \"\"},\n\t\t{\"SYS_TIMERFD_CREATE\", Const, 0, \"\"},\n\t\t{\"SYS_TIMERFD_GETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_TIMERFD_SETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_TIMER_CREATE\", Const, 0, \"\"},\n\t\t{\"SYS_TIMER_DELETE\", Const, 0, \"\"},\n\t\t{\"SYS_TIMER_GETOVERRUN\", Const, 0, \"\"},\n\t\t{\"SYS_TIMER_GETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_TIMER_SETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_TIMES\", Const, 0, \"\"},\n\t\t{\"SYS_TKILL\", Const, 0, \"\"},\n\t\t{\"SYS_TRUNCATE\", Const, 0, \"\"},\n\t\t{\"SYS_TRUNCATE64\", Const, 0, \"\"},\n\t\t{\"SYS_TUXCALL\", Const, 0, \"\"},\n\t\t{\"SYS_UGETRLIMIT\", Const, 0, \"\"},\n\t\t{\"SYS_ULIMIT\", Const, 0, \"\"},\n\t\t{\"SYS_UMASK\", Const, 0, \"\"},\n\t\t{\"SYS_UMASK_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_UMOUNT\", Const, 0, \"\"},\n\t\t{\"SYS_UMOUNT2\", Const, 0, \"\"},\n\t\t{\"SYS_UNAME\", Const, 0, \"\"},\n\t\t{\"SYS_UNDELETE\", Const, 0, \"\"},\n\t\t{\"SYS_UNLINK\", Const, 0, \"\"},\n\t\t{\"SYS_UNLINKAT\", Const, 0, \"\"},\n\t\t{\"SYS_UNMOUNT\", Const, 0, \"\"},\n\t\t{\"SYS_UNSHARE\", Const, 0, \"\"},\n\t\t{\"SYS_USELIB\", Const, 0, \"\"},\n\t\t{\"SYS_USTAT\", Const, 0, \"\"},\n\t\t{\"SYS_UTIME\", Const, 0, \"\"},\n\t\t{\"SYS_UTIMENSAT\", Const, 0, \"\"},\n\t\t{\"SYS_UTIMES\", Const, 0, \"\"},\n\t\t{\"SYS_UTRACE\", Const, 0, \"\"},\n\t\t{\"SYS_UUIDGEN\", Const, 0, \"\"},\n\t\t{\"SYS_VADVISE\", Const, 1, \"\"},\n\t\t{\"SYS_VFORK\", Const, 0, \"\"},\n\t\t{\"SYS_VHANGUP\", Const, 0, \"\"},\n\t\t{\"SYS_VM86\", Const, 0, \"\"},\n\t\t{\"SYS_VM86OLD\", Const, 0, \"\"},\n\t\t{\"SYS_VMSPLICE\", Const, 0, \"\"},\n\t\t{\"SYS_VM_PRESSURE_MONITOR\", Const, 0, \"\"},\n\t\t{\"SYS_VSERVER\", Const, 0, \"\"},\n\t\t{\"SYS_WAIT4\", Const, 0, \"\"},\n\t\t{\"SYS_WAIT4_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_WAIT6\", Const, 1, \"\"},\n\t\t{\"SYS_WAITEVENT\", Const, 0, \"\"},\n\t\t{\"SYS_WAITID\", Const, 0, \"\"},\n\t\t{\"SYS_WAITID_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_WAITPID\", Const, 0, \"\"},\n\t\t{\"SYS_WATCHEVENT\", Const, 0, \"\"},\n\t\t{\"SYS_WORKQ_KERNRETURN\", Const, 0, \"\"},\n\t\t{\"SYS_WORKQ_OPEN\", Const, 0, \"\"},\n\t\t{\"SYS_WRITE\", Const, 0, \"\"},\n\t\t{\"SYS_WRITEV\", Const, 0, \"\"},\n\t\t{\"SYS_WRITEV_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_WRITE_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_YIELD\", Const, 0, \"\"},\n\t\t{\"SYS__LLSEEK\", Const, 0, \"\"},\n\t\t{\"SYS__LWP_CONTINUE\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_CREATE\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_CTL\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_DETACH\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_EXIT\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_GETNAME\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_GETPRIVATE\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_KILL\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_PARK\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_SELF\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_SETNAME\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_SETPRIVATE\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_SUSPEND\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_UNPARK\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_UNPARK_ALL\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_WAIT\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_WAKEUP\", Const, 1, \"\"},\n\t\t{\"SYS__NEWSELECT\", Const, 0, \"\"},\n\t\t{\"SYS__PSET_BIND\", Const, 1, \"\"},\n\t\t{\"SYS__SCHED_GETAFFINITY\", Const, 1, \"\"},\n\t\t{\"SYS__SCHED_GETPARAM\", Const, 1, \"\"},\n\t\t{\"SYS__SCHED_SETAFFINITY\", Const, 1, \"\"},\n\t\t{\"SYS__SCHED_SETPARAM\", Const, 1, \"\"},\n\t\t{\"SYS__SYSCTL\", Const, 0, \"\"},\n\t\t{\"SYS__UMTX_LOCK\", Const, 0, \"\"},\n\t\t{\"SYS__UMTX_OP\", Const, 0, \"\"},\n\t\t{\"SYS__UMTX_UNLOCK\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_ACLCHECK_FD\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_ACLCHECK_FILE\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_ACLCHECK_LINK\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_DELETE_FD\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_DELETE_FILE\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_DELETE_LINK\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_GET_FD\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_GET_FILE\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_GET_LINK\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_SET_FD\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_SET_FILE\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_SET_LINK\", Const, 0, \"\"},\n\t\t{\"SYS___CAP_RIGHTS_GET\", Const, 14, \"\"},\n\t\t{\"SYS___CLONE\", Const, 1, \"\"},\n\t\t{\"SYS___DISABLE_THREADSIGNAL\", Const, 0, \"\"},\n\t\t{\"SYS___GETCWD\", Const, 0, \"\"},\n\t\t{\"SYS___GETLOGIN\", Const, 1, \"\"},\n\t\t{\"SYS___GET_TCB\", Const, 1, \"\"},\n\t\t{\"SYS___MAC_EXECVE\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GETFSSTAT\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_FD\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_FILE\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_LCID\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_LCTX\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_LINK\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_MOUNT\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_PID\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_PROC\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_MOUNT\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_SET_FD\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_SET_FILE\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_SET_LCTX\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_SET_LINK\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_SET_PROC\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_SYSCALL\", Const, 0, \"\"},\n\t\t{\"SYS___OLD_SEMWAIT_SIGNAL\", Const, 0, \"\"},\n\t\t{\"SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS___POSIX_CHOWN\", Const, 1, \"\"},\n\t\t{\"SYS___POSIX_FCHOWN\", Const, 1, \"\"},\n\t\t{\"SYS___POSIX_LCHOWN\", Const, 1, \"\"},\n\t\t{\"SYS___POSIX_RENAME\", Const, 1, \"\"},\n\t\t{\"SYS___PTHREAD_CANCELED\", Const, 0, \"\"},\n\t\t{\"SYS___PTHREAD_CHDIR\", Const, 0, \"\"},\n\t\t{\"SYS___PTHREAD_FCHDIR\", Const, 0, \"\"},\n\t\t{\"SYS___PTHREAD_KILL\", Const, 0, \"\"},\n\t\t{\"SYS___PTHREAD_MARKCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS___PTHREAD_SIGMASK\", Const, 0, \"\"},\n\t\t{\"SYS___QUOTACTL\", Const, 1, \"\"},\n\t\t{\"SYS___SEMCTL\", Const, 1, \"\"},\n\t\t{\"SYS___SEMWAIT_SIGNAL\", Const, 0, \"\"},\n\t\t{\"SYS___SEMWAIT_SIGNAL_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS___SETLOGIN\", Const, 1, \"\"},\n\t\t{\"SYS___SETUGID\", Const, 0, \"\"},\n\t\t{\"SYS___SET_TCB\", Const, 1, \"\"},\n\t\t{\"SYS___SIGACTION_SIGTRAMP\", Const, 1, \"\"},\n\t\t{\"SYS___SIGTIMEDWAIT\", Const, 1, \"\"},\n\t\t{\"SYS___SIGWAIT\", Const, 0, \"\"},\n\t\t{\"SYS___SIGWAIT_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS___SYSCTL\", Const, 0, \"\"},\n\t\t{\"SYS___TFORK\", Const, 1, \"\"},\n\t\t{\"SYS___THREXIT\", Const, 1, \"\"},\n\t\t{\"SYS___THRSIGDIVERT\", Const, 1, \"\"},\n\t\t{\"SYS___THRSLEEP\", Const, 1, \"\"},\n\t\t{\"SYS___THRWAKEUP\", Const, 1, \"\"},\n\t\t{\"S_ARCH1\", Const, 1, \"\"},\n\t\t{\"S_ARCH2\", Const, 1, \"\"},\n\t\t{\"S_BLKSIZE\", Const, 0, \"\"},\n\t\t{\"S_IEXEC\", Const, 0, \"\"},\n\t\t{\"S_IFBLK\", Const, 0, \"\"},\n\t\t{\"S_IFCHR\", Const, 0, \"\"},\n\t\t{\"S_IFDIR\", Const, 0, \"\"},\n\t\t{\"S_IFIFO\", Const, 0, \"\"},\n\t\t{\"S_IFLNK\", Const, 0, \"\"},\n\t\t{\"S_IFMT\", Const, 0, \"\"},\n\t\t{\"S_IFREG\", Const, 0, \"\"},\n\t\t{\"S_IFSOCK\", Const, 0, \"\"},\n\t\t{\"S_IFWHT\", Const, 0, \"\"},\n\t\t{\"S_IREAD\", Const, 0, \"\"},\n\t\t{\"S_IRGRP\", Const, 0, \"\"},\n\t\t{\"S_IROTH\", Const, 0, \"\"},\n\t\t{\"S_IRUSR\", Const, 0, \"\"},\n\t\t{\"S_IRWXG\", Const, 0, \"\"},\n\t\t{\"S_IRWXO\", Const, 0, \"\"},\n\t\t{\"S_IRWXU\", Const, 0, \"\"},\n\t\t{\"S_ISGID\", Const, 0, \"\"},\n\t\t{\"S_ISTXT\", Const, 0, \"\"},\n\t\t{\"S_ISUID\", Const, 0, \"\"},\n\t\t{\"S_ISVTX\", Const, 0, \"\"},\n\t\t{\"S_IWGRP\", Const, 0, \"\"},\n\t\t{\"S_IWOTH\", Const, 0, \"\"},\n\t\t{\"S_IWRITE\", Const, 0, \"\"},\n\t\t{\"S_IWUSR\", Const, 0, \"\"},\n\t\t{\"S_IXGRP\", Const, 0, \"\"},\n\t\t{\"S_IXOTH\", Const, 0, \"\"},\n\t\t{\"S_IXUSR\", Const, 0, \"\"},\n\t\t{\"S_LOGIN_SET\", Const, 1, \"\"},\n\t\t{\"SecurityAttributes\", Type, 0, \"\"},\n\t\t{\"SecurityAttributes.InheritHandle\", Field, 0, \"\"},\n\t\t{\"SecurityAttributes.Length\", Field, 0, \"\"},\n\t\t{\"SecurityAttributes.SecurityDescriptor\", Field, 0, \"\"},\n\t\t{\"Seek\", Func, 0, \"func(fd int, offset int64, whence int) (off int64, err error)\"},\n\t\t{\"Select\", Func, 0, \"func(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\"},\n\t\t{\"Sendfile\", Func, 0, \"func(outfd int, infd int, offset *int64, count int) (written int, err error)\"},\n\t\t{\"Sendmsg\", Func, 0, \"func(fd int, p []byte, oob []byte, to Sockaddr, flags int) (err error)\"},\n\t\t{\"SendmsgN\", Func, 3, \"func(fd int, p []byte, oob []byte, to Sockaddr, flags int) (n int, err error)\"},\n\t\t{\"Sendto\", Func, 0, \"func(fd int, p []byte, flags int, to Sockaddr) (err error)\"},\n\t\t{\"Servent\", Type, 0, \"\"},\n\t\t{\"Servent.Aliases\", Field, 0, \"\"},\n\t\t{\"Servent.Name\", Field, 0, \"\"},\n\t\t{\"Servent.Port\", Field, 0, \"\"},\n\t\t{\"Servent.Proto\", Field, 0, \"\"},\n\t\t{\"SetBpf\", Func, 0, \"\"},\n\t\t{\"SetBpfBuflen\", Func, 0, \"\"},\n\t\t{\"SetBpfDatalink\", Func, 0, \"\"},\n\t\t{\"SetBpfHeadercmpl\", Func, 0, \"\"},\n\t\t{\"SetBpfImmediate\", Func, 0, \"\"},\n\t\t{\"SetBpfInterface\", Func, 0, \"\"},\n\t\t{\"SetBpfPromisc\", Func, 0, \"\"},\n\t\t{\"SetBpfTimeout\", Func, 0, \"\"},\n\t\t{\"SetCurrentDirectory\", Func, 0, \"\"},\n\t\t{\"SetEndOfFile\", Func, 0, \"\"},\n\t\t{\"SetEnvironmentVariable\", Func, 0, \"\"},\n\t\t{\"SetFileAttributes\", Func, 0, \"\"},\n\t\t{\"SetFileCompletionNotificationModes\", Func, 2, \"\"},\n\t\t{\"SetFilePointer\", Func, 0, \"\"},\n\t\t{\"SetFileTime\", Func, 0, \"\"},\n\t\t{\"SetHandleInformation\", Func, 0, \"\"},\n\t\t{\"SetKevent\", Func, 0, \"\"},\n\t\t{\"SetLsfPromisc\", Func, 0, \"func(name string, m bool) error\"},\n\t\t{\"SetNonblock\", Func, 0, \"func(fd int, nonblocking bool) (err error)\"},\n\t\t{\"Setdomainname\", Func, 0, \"func(p []byte) (err error)\"},\n\t\t{\"Setegid\", Func, 0, \"func(egid int) (err error)\"},\n\t\t{\"Setenv\", Func, 0, \"func(key string, value string) error\"},\n\t\t{\"Seteuid\", Func, 0, \"func(euid int) (err error)\"},\n\t\t{\"Setfsgid\", Func, 0, \"func(gid int) (err error)\"},\n\t\t{\"Setfsuid\", Func, 0, \"func(uid int) (err error)\"},\n\t\t{\"Setgid\", Func, 0, \"func(gid int) (err error)\"},\n\t\t{\"Setgroups\", Func, 0, \"func(gids []int) (err error)\"},\n\t\t{\"Sethostname\", Func, 0, \"func(p []byte) (err error)\"},\n\t\t{\"Setlogin\", Func, 0, \"\"},\n\t\t{\"Setpgid\", Func, 0, \"func(pid int, pgid int) (err error)\"},\n\t\t{\"Setpriority\", Func, 0, \"func(which int, who int, prio int) (err error)\"},\n\t\t{\"Setprivexec\", Func, 0, \"\"},\n\t\t{\"Setregid\", Func, 0, \"func(rgid int, egid int) (err error)\"},\n\t\t{\"Setresgid\", Func, 0, \"func(rgid int, egid int, sgid int) (err error)\"},\n\t\t{\"Setresuid\", Func, 0, \"func(ruid int, euid int, suid int) (err error)\"},\n\t\t{\"Setreuid\", Func, 0, \"func(ruid int, euid int) (err error)\"},\n\t\t{\"Setrlimit\", Func, 0, \"func(resource int, rlim *Rlimit) error\"},\n\t\t{\"Setsid\", Func, 0, \"func() (pid int, err error)\"},\n\t\t{\"Setsockopt\", Func, 0, \"\"},\n\t\t{\"SetsockoptByte\", Func, 0, \"func(fd int, level int, opt int, value byte) (err error)\"},\n\t\t{\"SetsockoptICMPv6Filter\", Func, 2, \"func(fd int, level int, opt int, filter *ICMPv6Filter) error\"},\n\t\t{\"SetsockoptIPMreq\", Func, 0, \"func(fd int, level int, opt int, mreq *IPMreq) (err error)\"},\n\t\t{\"SetsockoptIPMreqn\", Func, 0, \"func(fd int, level int, opt int, mreq *IPMreqn) (err error)\"},\n\t\t{\"SetsockoptIPv6Mreq\", Func, 0, \"func(fd int, level int, opt int, mreq *IPv6Mreq) (err error)\"},\n\t\t{\"SetsockoptInet4Addr\", Func, 0, \"func(fd int, level int, opt int, value [4]byte) (err error)\"},\n\t\t{\"SetsockoptInt\", Func, 0, \"func(fd int, level int, opt int, value int) (err error)\"},\n\t\t{\"SetsockoptLinger\", Func, 0, \"func(fd int, level int, opt int, l *Linger) (err error)\"},\n\t\t{\"SetsockoptString\", Func, 0, \"func(fd int, level int, opt int, s string) (err error)\"},\n\t\t{\"SetsockoptTimeval\", Func, 0, \"func(fd int, level int, opt int, tv *Timeval) (err error)\"},\n\t\t{\"Settimeofday\", Func, 0, \"func(tv *Timeval) (err error)\"},\n\t\t{\"Setuid\", Func, 0, \"func(uid int) (err error)\"},\n\t\t{\"Setxattr\", Func, 1, \"func(path string, attr string, data []byte, flags int) (err error)\"},\n\t\t{\"Shutdown\", Func, 0, \"func(fd int, how int) (err error)\"},\n\t\t{\"SidTypeAlias\", Const, 0, \"\"},\n\t\t{\"SidTypeComputer\", Const, 0, \"\"},\n\t\t{\"SidTypeDeletedAccount\", Const, 0, \"\"},\n\t\t{\"SidTypeDomain\", Const, 0, \"\"},\n\t\t{\"SidTypeGroup\", Const, 0, \"\"},\n\t\t{\"SidTypeInvalid\", Const, 0, \"\"},\n\t\t{\"SidTypeLabel\", Const, 0, \"\"},\n\t\t{\"SidTypeUnknown\", Const, 0, \"\"},\n\t\t{\"SidTypeUser\", Const, 0, \"\"},\n\t\t{\"SidTypeWellKnownGroup\", Const, 0, \"\"},\n\t\t{\"Signal\", Type, 0, \"\"},\n\t\t{\"SizeofBpfHdr\", Const, 0, \"\"},\n\t\t{\"SizeofBpfInsn\", Const, 0, \"\"},\n\t\t{\"SizeofBpfProgram\", Const, 0, \"\"},\n\t\t{\"SizeofBpfStat\", Const, 0, \"\"},\n\t\t{\"SizeofBpfVersion\", Const, 0, \"\"},\n\t\t{\"SizeofBpfZbuf\", Const, 0, \"\"},\n\t\t{\"SizeofBpfZbufHeader\", Const, 0, \"\"},\n\t\t{\"SizeofCmsghdr\", Const, 0, \"\"},\n\t\t{\"SizeofICMPv6Filter\", Const, 2, \"\"},\n\t\t{\"SizeofIPMreq\", Const, 0, \"\"},\n\t\t{\"SizeofIPMreqn\", Const, 0, \"\"},\n\t\t{\"SizeofIPv6MTUInfo\", Const, 2, \"\"},\n\t\t{\"SizeofIPv6Mreq\", Const, 0, \"\"},\n\t\t{\"SizeofIfAddrmsg\", Const, 0, \"\"},\n\t\t{\"SizeofIfAnnounceMsghdr\", Const, 1, \"\"},\n\t\t{\"SizeofIfData\", Const, 0, \"\"},\n\t\t{\"SizeofIfInfomsg\", Const, 0, \"\"},\n\t\t{\"SizeofIfMsghdr\", Const, 0, \"\"},\n\t\t{\"SizeofIfaMsghdr\", Const, 0, \"\"},\n\t\t{\"SizeofIfmaMsghdr\", Const, 0, \"\"},\n\t\t{\"SizeofIfmaMsghdr2\", Const, 0, \"\"},\n\t\t{\"SizeofInet4Pktinfo\", Const, 0, \"\"},\n\t\t{\"SizeofInet6Pktinfo\", Const, 0, \"\"},\n\t\t{\"SizeofInotifyEvent\", Const, 0, \"\"},\n\t\t{\"SizeofLinger\", Const, 0, \"\"},\n\t\t{\"SizeofMsghdr\", Const, 0, \"\"},\n\t\t{\"SizeofNlAttr\", Const, 0, \"\"},\n\t\t{\"SizeofNlMsgerr\", Const, 0, \"\"},\n\t\t{\"SizeofNlMsghdr\", Const, 0, \"\"},\n\t\t{\"SizeofRtAttr\", Const, 0, \"\"},\n\t\t{\"SizeofRtGenmsg\", Const, 0, \"\"},\n\t\t{\"SizeofRtMetrics\", Const, 0, \"\"},\n\t\t{\"SizeofRtMsg\", Const, 0, \"\"},\n\t\t{\"SizeofRtMsghdr\", Const, 0, \"\"},\n\t\t{\"SizeofRtNexthop\", Const, 0, \"\"},\n\t\t{\"SizeofSockFilter\", Const, 0, \"\"},\n\t\t{\"SizeofSockFprog\", Const, 0, \"\"},\n\t\t{\"SizeofSockaddrAny\", Const, 0, \"\"},\n\t\t{\"SizeofSockaddrDatalink\", Const, 0, \"\"},\n\t\t{\"SizeofSockaddrInet4\", Const, 0, \"\"},\n\t\t{\"SizeofSockaddrInet6\", Const, 0, \"\"},\n\t\t{\"SizeofSockaddrLinklayer\", Const, 0, \"\"},\n\t\t{\"SizeofSockaddrNetlink\", Const, 0, \"\"},\n\t\t{\"SizeofSockaddrUnix\", Const, 0, \"\"},\n\t\t{\"SizeofTCPInfo\", Const, 1, \"\"},\n\t\t{\"SizeofUcred\", Const, 0, \"\"},\n\t\t{\"SlicePtrFromStrings\", Func, 1, \"func(ss []string) ([]*byte, error)\"},\n\t\t{\"SockFilter\", Type, 0, \"\"},\n\t\t{\"SockFilter.Code\", Field, 0, \"\"},\n\t\t{\"SockFilter.Jf\", Field, 0, \"\"},\n\t\t{\"SockFilter.Jt\", Field, 0, \"\"},\n\t\t{\"SockFilter.K\", Field, 0, \"\"},\n\t\t{\"SockFprog\", Type, 0, \"\"},\n\t\t{\"SockFprog.Filter\", Field, 0, \"\"},\n\t\t{\"SockFprog.Len\", Field, 0, \"\"},\n\t\t{\"SockFprog.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink\", Type, 0, \"\"},\n\t\t{\"SockaddrDatalink.Alen\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink.Data\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink.Family\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink.Index\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink.Len\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink.Nlen\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink.Slen\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink.Type\", Field, 0, \"\"},\n\t\t{\"SockaddrGen\", Type, 0, \"\"},\n\t\t{\"SockaddrInet4\", Type, 0, \"\"},\n\t\t{\"SockaddrInet4.Addr\", Field, 0, \"\"},\n\t\t{\"SockaddrInet4.Port\", Field, 0, \"\"},\n\t\t{\"SockaddrInet6\", Type, 0, \"\"},\n\t\t{\"SockaddrInet6.Addr\", Field, 0, \"\"},\n\t\t{\"SockaddrInet6.Port\", Field, 0, \"\"},\n\t\t{\"SockaddrInet6.ZoneId\", Field, 0, \"\"},\n\t\t{\"SockaddrLinklayer\", Type, 0, \"\"},\n\t\t{\"SockaddrLinklayer.Addr\", Field, 0, \"\"},\n\t\t{\"SockaddrLinklayer.Halen\", Field, 0, \"\"},\n\t\t{\"SockaddrLinklayer.Hatype\", Field, 0, \"\"},\n\t\t{\"SockaddrLinklayer.Ifindex\", Field, 0, \"\"},\n\t\t{\"SockaddrLinklayer.Pkttype\", Field, 0, \"\"},\n\t\t{\"SockaddrLinklayer.Protocol\", Field, 0, \"\"},\n\t\t{\"SockaddrNetlink\", Type, 0, \"\"},\n\t\t{\"SockaddrNetlink.Family\", Field, 0, \"\"},\n\t\t{\"SockaddrNetlink.Groups\", Field, 0, \"\"},\n\t\t{\"SockaddrNetlink.Pad\", Field, 0, \"\"},\n\t\t{\"SockaddrNetlink.Pid\", Field, 0, \"\"},\n\t\t{\"SockaddrUnix\", Type, 0, \"\"},\n\t\t{\"SockaddrUnix.Name\", Field, 0, \"\"},\n\t\t{\"Socket\", Func, 0, \"func(domain int, typ int, proto int) (fd int, err error)\"},\n\t\t{\"SocketControlMessage\", Type, 0, \"\"},\n\t\t{\"SocketControlMessage.Data\", Field, 0, \"\"},\n\t\t{\"SocketControlMessage.Header\", Field, 0, \"\"},\n\t\t{\"SocketDisableIPv6\", Var, 0, \"\"},\n\t\t{\"Socketpair\", Func, 0, \"func(domain int, typ int, proto int) (fd [2]int, err error)\"},\n\t\t{\"Splice\", Func, 0, \"func(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\"},\n\t\t{\"StartProcess\", Func, 0, \"func(argv0 string, argv []string, attr *ProcAttr) (pid int, handle uintptr, err error)\"},\n\t\t{\"StartupInfo\", Type, 0, \"\"},\n\t\t{\"StartupInfo.Cb\", Field, 0, \"\"},\n\t\t{\"StartupInfo.Desktop\", Field, 0, \"\"},\n\t\t{\"StartupInfo.FillAttribute\", Field, 0, \"\"},\n\t\t{\"StartupInfo.Flags\", Field, 0, \"\"},\n\t\t{\"StartupInfo.ShowWindow\", Field, 0, \"\"},\n\t\t{\"StartupInfo.StdErr\", Field, 0, \"\"},\n\t\t{\"StartupInfo.StdInput\", Field, 0, \"\"},\n\t\t{\"StartupInfo.StdOutput\", Field, 0, \"\"},\n\t\t{\"StartupInfo.Title\", Field, 0, \"\"},\n\t\t{\"StartupInfo.X\", Field, 0, \"\"},\n\t\t{\"StartupInfo.XCountChars\", Field, 0, \"\"},\n\t\t{\"StartupInfo.XSize\", Field, 0, \"\"},\n\t\t{\"StartupInfo.Y\", Field, 0, \"\"},\n\t\t{\"StartupInfo.YCountChars\", Field, 0, \"\"},\n\t\t{\"StartupInfo.YSize\", Field, 0, \"\"},\n\t\t{\"Stat\", Func, 0, \"func(path string, stat *Stat_t) (err error)\"},\n\t\t{\"Stat_t\", Type, 0, \"\"},\n\t\t{\"Stat_t.Atim\", Field, 0, \"\"},\n\t\t{\"Stat_t.Atim_ext\", Field, 12, \"\"},\n\t\t{\"Stat_t.Atimespec\", Field, 0, \"\"},\n\t\t{\"Stat_t.Birthtimespec\", Field, 0, \"\"},\n\t\t{\"Stat_t.Blksize\", Field, 0, \"\"},\n\t\t{\"Stat_t.Blocks\", Field, 0, \"\"},\n\t\t{\"Stat_t.Btim_ext\", Field, 12, \"\"},\n\t\t{\"Stat_t.Ctim\", Field, 0, \"\"},\n\t\t{\"Stat_t.Ctim_ext\", Field, 12, \"\"},\n\t\t{\"Stat_t.Ctimespec\", Field, 0, \"\"},\n\t\t{\"Stat_t.Dev\", Field, 0, \"\"},\n\t\t{\"Stat_t.Flags\", Field, 0, \"\"},\n\t\t{\"Stat_t.Gen\", Field, 0, \"\"},\n\t\t{\"Stat_t.Gid\", Field, 0, \"\"},\n\t\t{\"Stat_t.Ino\", Field, 0, \"\"},\n\t\t{\"Stat_t.Lspare\", Field, 0, \"\"},\n\t\t{\"Stat_t.Lspare0\", Field, 2, \"\"},\n\t\t{\"Stat_t.Lspare1\", Field, 2, \"\"},\n\t\t{\"Stat_t.Mode\", Field, 0, \"\"},\n\t\t{\"Stat_t.Mtim\", Field, 0, \"\"},\n\t\t{\"Stat_t.Mtim_ext\", Field, 12, \"\"},\n\t\t{\"Stat_t.Mtimespec\", Field, 0, \"\"},\n\t\t{\"Stat_t.Nlink\", Field, 0, \"\"},\n\t\t{\"Stat_t.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Stat_t.Pad_cgo_1\", Field, 0, \"\"},\n\t\t{\"Stat_t.Pad_cgo_2\", Field, 0, \"\"},\n\t\t{\"Stat_t.Padding0\", Field, 12, \"\"},\n\t\t{\"Stat_t.Padding1\", Field, 12, \"\"},\n\t\t{\"Stat_t.Qspare\", Field, 0, \"\"},\n\t\t{\"Stat_t.Rdev\", Field, 0, \"\"},\n\t\t{\"Stat_t.Size\", Field, 0, \"\"},\n\t\t{\"Stat_t.Spare\", Field, 2, \"\"},\n\t\t{\"Stat_t.Uid\", Field, 0, \"\"},\n\t\t{\"Stat_t.X__pad0\", Field, 0, \"\"},\n\t\t{\"Stat_t.X__pad1\", Field, 0, \"\"},\n\t\t{\"Stat_t.X__pad2\", Field, 0, \"\"},\n\t\t{\"Stat_t.X__st_birthtim\", Field, 2, \"\"},\n\t\t{\"Stat_t.X__st_ino\", Field, 0, \"\"},\n\t\t{\"Stat_t.X__unused\", Field, 0, \"\"},\n\t\t{\"Statfs\", Func, 0, \"func(path string, buf *Statfs_t) (err error)\"},\n\t\t{\"Statfs_t\", Type, 0, \"\"},\n\t\t{\"Statfs_t.Asyncreads\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Asyncwrites\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Bavail\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Bfree\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Blocks\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Bsize\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Charspare\", Field, 0, \"\"},\n\t\t{\"Statfs_t.F_asyncreads\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_asyncwrites\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_bavail\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_bfree\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_blocks\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_bsize\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_ctime\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_favail\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_ffree\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_files\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_flags\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_fsid\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_fstypename\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_iosize\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_mntfromname\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_mntfromspec\", Field, 3, \"\"},\n\t\t{\"Statfs_t.F_mntonname\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_namemax\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_owner\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_spare\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_syncreads\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_syncwrites\", Field, 2, \"\"},\n\t\t{\"Statfs_t.Ffree\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Files\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Flags\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Frsize\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Fsid\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Fssubtype\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Fstypename\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Iosize\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Mntfromname\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Mntonname\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Mount_info\", Field, 2, \"\"},\n\t\t{\"Statfs_t.Namelen\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Namemax\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Owner\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Pad_cgo_1\", Field, 2, \"\"},\n\t\t{\"Statfs_t.Reserved\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Spare\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Syncreads\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Syncwrites\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Type\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Version\", Field, 0, \"\"},\n\t\t{\"Stderr\", Var, 0, \"\"},\n\t\t{\"Stdin\", Var, 0, \"\"},\n\t\t{\"Stdout\", Var, 0, \"\"},\n\t\t{\"StringBytePtr\", Func, 0, \"func(s string) *byte\"},\n\t\t{\"StringByteSlice\", Func, 0, \"func(s string) []byte\"},\n\t\t{\"StringSlicePtr\", Func, 0, \"func(ss []string) []*byte\"},\n\t\t{\"StringToSid\", Func, 0, \"\"},\n\t\t{\"StringToUTF16\", Func, 0, \"\"},\n\t\t{\"StringToUTF16Ptr\", Func, 0, \"\"},\n\t\t{\"Symlink\", Func, 0, \"func(oldpath string, newpath string) (err error)\"},\n\t\t{\"Sync\", Func, 0, \"func()\"},\n\t\t{\"SyncFileRange\", Func, 0, \"func(fd int, off int64, n int64, flags int) (err error)\"},\n\t\t{\"SysProcAttr\", Type, 0, \"\"},\n\t\t{\"SysProcAttr.AdditionalInheritedHandles\", Field, 17, \"\"},\n\t\t{\"SysProcAttr.AmbientCaps\", Field, 9, \"\"},\n\t\t{\"SysProcAttr.CgroupFD\", Field, 20, \"\"},\n\t\t{\"SysProcAttr.Chroot\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.Cloneflags\", Field, 2, \"\"},\n\t\t{\"SysProcAttr.CmdLine\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.CreationFlags\", Field, 1, \"\"},\n\t\t{\"SysProcAttr.Credential\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.Ctty\", Field, 1, \"\"},\n\t\t{\"SysProcAttr.Foreground\", Field, 5, \"\"},\n\t\t{\"SysProcAttr.GidMappings\", Field, 4, \"\"},\n\t\t{\"SysProcAttr.GidMappingsEnableSetgroups\", Field, 5, \"\"},\n\t\t{\"SysProcAttr.HideWindow\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.Jail\", Field, 21, \"\"},\n\t\t{\"SysProcAttr.NoInheritHandles\", Field, 16, \"\"},\n\t\t{\"SysProcAttr.Noctty\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.ParentProcess\", Field, 17, \"\"},\n\t\t{\"SysProcAttr.Pdeathsig\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.Pgid\", Field, 5, \"\"},\n\t\t{\"SysProcAttr.PidFD\", Field, 22, \"\"},\n\t\t{\"SysProcAttr.ProcessAttributes\", Field, 13, \"\"},\n\t\t{\"SysProcAttr.Ptrace\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.Setctty\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.Setpgid\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.Setsid\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.ThreadAttributes\", Field, 13, \"\"},\n\t\t{\"SysProcAttr.Token\", Field, 10, \"\"},\n\t\t{\"SysProcAttr.UidMappings\", Field, 4, \"\"},\n\t\t{\"SysProcAttr.Unshareflags\", Field, 7, \"\"},\n\t\t{\"SysProcAttr.UseCgroupFD\", Field, 20, \"\"},\n\t\t{\"SysProcIDMap\", Type, 4, \"\"},\n\t\t{\"SysProcIDMap.ContainerID\", Field, 4, \"\"},\n\t\t{\"SysProcIDMap.HostID\", Field, 4, \"\"},\n\t\t{\"SysProcIDMap.Size\", Field, 4, \"\"},\n\t\t{\"Syscall\", Func, 0, \"func(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr) (r1 uintptr, r2 uintptr, err Errno)\"},\n\t\t{\"Syscall12\", Func, 0, \"\"},\n\t\t{\"Syscall15\", Func, 0, \"\"},\n\t\t{\"Syscall18\", Func, 12, \"\"},\n\t\t{\"Syscall6\", Func, 0, \"func(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr, a6 uintptr) (r1 uintptr, r2 uintptr, err Errno)\"},\n\t\t{\"Syscall9\", Func, 0, \"\"},\n\t\t{\"SyscallN\", Func, 18, \"\"},\n\t\t{\"Sysctl\", Func, 0, \"\"},\n\t\t{\"SysctlUint32\", Func, 0, \"\"},\n\t\t{\"Sysctlnode\", Type, 2, \"\"},\n\t\t{\"Sysctlnode.Flags\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.Name\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.Num\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.Un\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.Ver\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.X__rsvd\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.X_sysctl_desc\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.X_sysctl_func\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.X_sysctl_parent\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.X_sysctl_size\", Field, 2, \"\"},\n\t\t{\"Sysinfo\", Func, 0, \"func(info *Sysinfo_t) (err error)\"},\n\t\t{\"Sysinfo_t\", Type, 0, \"\"},\n\t\t{\"Sysinfo_t.Bufferram\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Freehigh\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Freeram\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Freeswap\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Loads\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Pad\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Pad_cgo_1\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Procs\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Sharedram\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Totalhigh\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Totalram\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Totalswap\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Unit\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Uptime\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.X_f\", Field, 0, \"\"},\n\t\t{\"Systemtime\", Type, 0, \"\"},\n\t\t{\"Systemtime.Day\", Field, 0, \"\"},\n\t\t{\"Systemtime.DayOfWeek\", Field, 0, \"\"},\n\t\t{\"Systemtime.Hour\", Field, 0, \"\"},\n\t\t{\"Systemtime.Milliseconds\", Field, 0, \"\"},\n\t\t{\"Systemtime.Minute\", Field, 0, \"\"},\n\t\t{\"Systemtime.Month\", Field, 0, \"\"},\n\t\t{\"Systemtime.Second\", Field, 0, \"\"},\n\t\t{\"Systemtime.Year\", Field, 0, \"\"},\n\t\t{\"TCGETS\", Const, 0, \"\"},\n\t\t{\"TCIFLUSH\", Const, 1, \"\"},\n\t\t{\"TCIOFLUSH\", Const, 1, \"\"},\n\t\t{\"TCOFLUSH\", Const, 1, \"\"},\n\t\t{\"TCPInfo\", Type, 1, \"\"},\n\t\t{\"TCPInfo.Advmss\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Ato\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Backoff\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Ca_state\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Fackets\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Last_ack_recv\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Last_ack_sent\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Last_data_recv\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Last_data_sent\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Lost\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Options\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Pad_cgo_0\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Pmtu\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Probes\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Rcv_mss\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Rcv_rtt\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Rcv_space\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Rcv_ssthresh\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Reordering\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Retrans\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Retransmits\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Rto\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Rtt\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Rttvar\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Sacked\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Snd_cwnd\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Snd_mss\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Snd_ssthresh\", Field, 1, \"\"},\n\t\t{\"TCPInfo.State\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Total_retrans\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Unacked\", Field, 1, \"\"},\n\t\t{\"TCPKeepalive\", Type, 3, \"\"},\n\t\t{\"TCPKeepalive.Interval\", Field, 3, \"\"},\n\t\t{\"TCPKeepalive.OnOff\", Field, 3, \"\"},\n\t\t{\"TCPKeepalive.Time\", Field, 3, \"\"},\n\t\t{\"TCP_CA_NAME_MAX\", Const, 0, \"\"},\n\t\t{\"TCP_CONGCTL\", Const, 1, \"\"},\n\t\t{\"TCP_CONGESTION\", Const, 0, \"\"},\n\t\t{\"TCP_CONNECTIONTIMEOUT\", Const, 0, \"\"},\n\t\t{\"TCP_CORK\", Const, 0, \"\"},\n\t\t{\"TCP_DEFER_ACCEPT\", Const, 0, \"\"},\n\t\t{\"TCP_ENABLE_ECN\", Const, 16, \"\"},\n\t\t{\"TCP_INFO\", Const, 0, \"\"},\n\t\t{\"TCP_KEEPALIVE\", Const, 0, \"\"},\n\t\t{\"TCP_KEEPCNT\", Const, 0, \"\"},\n\t\t{\"TCP_KEEPIDLE\", Const, 0, \"\"},\n\t\t{\"TCP_KEEPINIT\", Const, 1, \"\"},\n\t\t{\"TCP_KEEPINTVL\", Const, 0, \"\"},\n\t\t{\"TCP_LINGER2\", Const, 0, \"\"},\n\t\t{\"TCP_MAXBURST\", Const, 0, \"\"},\n\t\t{\"TCP_MAXHLEN\", Const, 0, \"\"},\n\t\t{\"TCP_MAXOLEN\", Const, 0, \"\"},\n\t\t{\"TCP_MAXSEG\", Const, 0, \"\"},\n\t\t{\"TCP_MAXWIN\", Const, 0, \"\"},\n\t\t{\"TCP_MAX_SACK\", Const, 0, \"\"},\n\t\t{\"TCP_MAX_WINSHIFT\", Const, 0, \"\"},\n\t\t{\"TCP_MD5SIG\", Const, 0, \"\"},\n\t\t{\"TCP_MD5SIG_MAXKEYLEN\", Const, 0, \"\"},\n\t\t{\"TCP_MINMSS\", Const, 0, \"\"},\n\t\t{\"TCP_MINMSSOVERLOAD\", Const, 0, \"\"},\n\t\t{\"TCP_MSS\", Const, 0, \"\"},\n\t\t{\"TCP_NODELAY\", Const, 0, \"\"},\n\t\t{\"TCP_NOOPT\", Const, 0, \"\"},\n\t\t{\"TCP_NOPUSH\", Const, 0, \"\"},\n\t\t{\"TCP_NOTSENT_LOWAT\", Const, 16, \"\"},\n\t\t{\"TCP_NSTATES\", Const, 1, \"\"},\n\t\t{\"TCP_QUICKACK\", Const, 0, \"\"},\n\t\t{\"TCP_RXT_CONNDROPTIME\", Const, 0, \"\"},\n\t\t{\"TCP_RXT_FINDROP\", Const, 0, \"\"},\n\t\t{\"TCP_SACK_ENABLE\", Const, 1, \"\"},\n\t\t{\"TCP_SENDMOREACKS\", Const, 16, \"\"},\n\t\t{\"TCP_SYNCNT\", Const, 0, \"\"},\n\t\t{\"TCP_VENDOR\", Const, 3, \"\"},\n\t\t{\"TCP_WINDOW_CLAMP\", Const, 0, \"\"},\n\t\t{\"TCSAFLUSH\", Const, 1, \"\"},\n\t\t{\"TCSETS\", Const, 0, \"\"},\n\t\t{\"TF_DISCONNECT\", Const, 0, \"\"},\n\t\t{\"TF_REUSE_SOCKET\", Const, 0, \"\"},\n\t\t{\"TF_USE_DEFAULT_WORKER\", Const, 0, \"\"},\n\t\t{\"TF_USE_KERNEL_APC\", Const, 0, \"\"},\n\t\t{\"TF_USE_SYSTEM_THREAD\", Const, 0, \"\"},\n\t\t{\"TF_WRITE_BEHIND\", Const, 0, \"\"},\n\t\t{\"TH32CS_INHERIT\", Const, 4, \"\"},\n\t\t{\"TH32CS_SNAPALL\", Const, 4, \"\"},\n\t\t{\"TH32CS_SNAPHEAPLIST\", Const, 4, \"\"},\n\t\t{\"TH32CS_SNAPMODULE\", Const, 4, \"\"},\n\t\t{\"TH32CS_SNAPMODULE32\", Const, 4, \"\"},\n\t\t{\"TH32CS_SNAPPROCESS\", Const, 4, \"\"},\n\t\t{\"TH32CS_SNAPTHREAD\", Const, 4, \"\"},\n\t\t{\"TIME_ZONE_ID_DAYLIGHT\", Const, 0, \"\"},\n\t\t{\"TIME_ZONE_ID_STANDARD\", Const, 0, \"\"},\n\t\t{\"TIME_ZONE_ID_UNKNOWN\", Const, 0, \"\"},\n\t\t{\"TIOCCBRK\", Const, 0, \"\"},\n\t\t{\"TIOCCDTR\", Const, 0, \"\"},\n\t\t{\"TIOCCONS\", Const, 0, \"\"},\n\t\t{\"TIOCDCDTIMESTAMP\", Const, 0, \"\"},\n\t\t{\"TIOCDRAIN\", Const, 0, \"\"},\n\t\t{\"TIOCDSIMICROCODE\", Const, 0, \"\"},\n\t\t{\"TIOCEXCL\", Const, 0, \"\"},\n\t\t{\"TIOCEXT\", Const, 0, \"\"},\n\t\t{\"TIOCFLAG_CDTRCTS\", Const, 1, \"\"},\n\t\t{\"TIOCFLAG_CLOCAL\", Const, 1, \"\"},\n\t\t{\"TIOCFLAG_CRTSCTS\", Const, 1, \"\"},\n\t\t{\"TIOCFLAG_MDMBUF\", Const, 1, \"\"},\n\t\t{\"TIOCFLAG_PPS\", Const, 1, \"\"},\n\t\t{\"TIOCFLAG_SOFTCAR\", Const, 1, \"\"},\n\t\t{\"TIOCFLUSH\", Const, 0, \"\"},\n\t\t{\"TIOCGDEV\", Const, 0, \"\"},\n\t\t{\"TIOCGDRAINWAIT\", Const, 0, \"\"},\n\t\t{\"TIOCGETA\", Const, 0, \"\"},\n\t\t{\"TIOCGETD\", Const, 0, \"\"},\n\t\t{\"TIOCGFLAGS\", Const, 1, \"\"},\n\t\t{\"TIOCGICOUNT\", Const, 0, \"\"},\n\t\t{\"TIOCGLCKTRMIOS\", Const, 0, \"\"},\n\t\t{\"TIOCGLINED\", Const, 1, \"\"},\n\t\t{\"TIOCGPGRP\", Const, 0, \"\"},\n\t\t{\"TIOCGPTN\", Const, 0, \"\"},\n\t\t{\"TIOCGQSIZE\", Const, 1, \"\"},\n\t\t{\"TIOCGRANTPT\", Const, 1, \"\"},\n\t\t{\"TIOCGRS485\", Const, 0, \"\"},\n\t\t{\"TIOCGSERIAL\", Const, 0, \"\"},\n\t\t{\"TIOCGSID\", Const, 0, \"\"},\n\t\t{\"TIOCGSIZE\", Const, 1, \"\"},\n\t\t{\"TIOCGSOFTCAR\", Const, 0, \"\"},\n\t\t{\"TIOCGTSTAMP\", Const, 1, \"\"},\n\t\t{\"TIOCGWINSZ\", Const, 0, \"\"},\n\t\t{\"TIOCINQ\", Const, 0, \"\"},\n\t\t{\"TIOCIXOFF\", Const, 0, \"\"},\n\t\t{\"TIOCIXON\", Const, 0, \"\"},\n\t\t{\"TIOCLINUX\", Const, 0, \"\"},\n\t\t{\"TIOCMBIC\", Const, 0, \"\"},\n\t\t{\"TIOCMBIS\", Const, 0, \"\"},\n\t\t{\"TIOCMGDTRWAIT\", Const, 0, \"\"},\n\t\t{\"TIOCMGET\", Const, 0, \"\"},\n\t\t{\"TIOCMIWAIT\", Const, 0, \"\"},\n\t\t{\"TIOCMODG\", Const, 0, \"\"},\n\t\t{\"TIOCMODS\", Const, 0, \"\"},\n\t\t{\"TIOCMSDTRWAIT\", Const, 0, \"\"},\n\t\t{\"TIOCMSET\", Const, 0, \"\"},\n\t\t{\"TIOCM_CAR\", Const, 0, \"\"},\n\t\t{\"TIOCM_CD\", Const, 0, \"\"},\n\t\t{\"TIOCM_CTS\", Const, 0, \"\"},\n\t\t{\"TIOCM_DCD\", Const, 0, \"\"},\n\t\t{\"TIOCM_DSR\", Const, 0, \"\"},\n\t\t{\"TIOCM_DTR\", Const, 0, \"\"},\n\t\t{\"TIOCM_LE\", Const, 0, \"\"},\n\t\t{\"TIOCM_RI\", Const, 0, \"\"},\n\t\t{\"TIOCM_RNG\", Const, 0, \"\"},\n\t\t{\"TIOCM_RTS\", Const, 0, \"\"},\n\t\t{\"TIOCM_SR\", Const, 0, \"\"},\n\t\t{\"TIOCM_ST\", Const, 0, \"\"},\n\t\t{\"TIOCNOTTY\", Const, 0, \"\"},\n\t\t{\"TIOCNXCL\", Const, 0, \"\"},\n\t\t{\"TIOCOUTQ\", Const, 0, \"\"},\n\t\t{\"TIOCPKT\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_DATA\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_DOSTOP\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_FLUSHREAD\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_FLUSHWRITE\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_IOCTL\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_NOSTOP\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_START\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_STOP\", Const, 0, \"\"},\n\t\t{\"TIOCPTMASTER\", Const, 0, \"\"},\n\t\t{\"TIOCPTMGET\", Const, 1, \"\"},\n\t\t{\"TIOCPTSNAME\", Const, 1, \"\"},\n\t\t{\"TIOCPTYGNAME\", Const, 0, \"\"},\n\t\t{\"TIOCPTYGRANT\", Const, 0, \"\"},\n\t\t{\"TIOCPTYUNLK\", Const, 0, \"\"},\n\t\t{\"TIOCRCVFRAME\", Const, 1, \"\"},\n\t\t{\"TIOCREMOTE\", Const, 0, \"\"},\n\t\t{\"TIOCSBRK\", Const, 0, \"\"},\n\t\t{\"TIOCSCONS\", Const, 0, \"\"},\n\t\t{\"TIOCSCTTY\", Const, 0, \"\"},\n\t\t{\"TIOCSDRAINWAIT\", Const, 0, \"\"},\n\t\t{\"TIOCSDTR\", Const, 0, \"\"},\n\t\t{\"TIOCSERCONFIG\", Const, 0, \"\"},\n\t\t{\"TIOCSERGETLSR\", Const, 0, \"\"},\n\t\t{\"TIOCSERGETMULTI\", Const, 0, \"\"},\n\t\t{\"TIOCSERGSTRUCT\", Const, 0, \"\"},\n\t\t{\"TIOCSERGWILD\", Const, 0, \"\"},\n\t\t{\"TIOCSERSETMULTI\", Const, 0, \"\"},\n\t\t{\"TIOCSERSWILD\", Const, 0, \"\"},\n\t\t{\"TIOCSER_TEMT\", Const, 0, \"\"},\n\t\t{\"TIOCSETA\", Const, 0, \"\"},\n\t\t{\"TIOCSETAF\", Const, 0, \"\"},\n\t\t{\"TIOCSETAW\", Const, 0, \"\"},\n\t\t{\"TIOCSETD\", Const, 0, \"\"},\n\t\t{\"TIOCSFLAGS\", Const, 1, \"\"},\n\t\t{\"TIOCSIG\", Const, 0, \"\"},\n\t\t{\"TIOCSLCKTRMIOS\", Const, 0, \"\"},\n\t\t{\"TIOCSLINED\", Const, 1, \"\"},\n\t\t{\"TIOCSPGRP\", Const, 0, \"\"},\n\t\t{\"TIOCSPTLCK\", Const, 0, \"\"},\n\t\t{\"TIOCSQSIZE\", Const, 1, \"\"},\n\t\t{\"TIOCSRS485\", Const, 0, \"\"},\n\t\t{\"TIOCSSERIAL\", Const, 0, \"\"},\n\t\t{\"TIOCSSIZE\", Const, 1, \"\"},\n\t\t{\"TIOCSSOFTCAR\", Const, 0, \"\"},\n\t\t{\"TIOCSTART\", Const, 0, \"\"},\n\t\t{\"TIOCSTAT\", Const, 0, \"\"},\n\t\t{\"TIOCSTI\", Const, 0, \"\"},\n\t\t{\"TIOCSTOP\", Const, 0, \"\"},\n\t\t{\"TIOCSTSTAMP\", Const, 1, \"\"},\n\t\t{\"TIOCSWINSZ\", Const, 0, \"\"},\n\t\t{\"TIOCTIMESTAMP\", Const, 0, \"\"},\n\t\t{\"TIOCUCNTL\", Const, 0, \"\"},\n\t\t{\"TIOCVHANGUP\", Const, 0, \"\"},\n\t\t{\"TIOCXMTFRAME\", Const, 1, \"\"},\n\t\t{\"TOKEN_ADJUST_DEFAULT\", Const, 0, \"\"},\n\t\t{\"TOKEN_ADJUST_GROUPS\", Const, 0, \"\"},\n\t\t{\"TOKEN_ADJUST_PRIVILEGES\", Const, 0, \"\"},\n\t\t{\"TOKEN_ADJUST_SESSIONID\", Const, 11, \"\"},\n\t\t{\"TOKEN_ALL_ACCESS\", Const, 0, \"\"},\n\t\t{\"TOKEN_ASSIGN_PRIMARY\", Const, 0, \"\"},\n\t\t{\"TOKEN_DUPLICATE\", Const, 0, \"\"},\n\t\t{\"TOKEN_EXECUTE\", Const, 0, \"\"},\n\t\t{\"TOKEN_IMPERSONATE\", Const, 0, \"\"},\n\t\t{\"TOKEN_QUERY\", Const, 0, \"\"},\n\t\t{\"TOKEN_QUERY_SOURCE\", Const, 0, \"\"},\n\t\t{\"TOKEN_READ\", Const, 0, \"\"},\n\t\t{\"TOKEN_WRITE\", Const, 0, \"\"},\n\t\t{\"TOSTOP\", Const, 0, \"\"},\n\t\t{\"TRUNCATE_EXISTING\", Const, 0, \"\"},\n\t\t{\"TUNATTACHFILTER\", Const, 0, \"\"},\n\t\t{\"TUNDETACHFILTER\", Const, 0, \"\"},\n\t\t{\"TUNGETFEATURES\", Const, 0, \"\"},\n\t\t{\"TUNGETIFF\", Const, 0, \"\"},\n\t\t{\"TUNGETSNDBUF\", Const, 0, \"\"},\n\t\t{\"TUNGETVNETHDRSZ\", Const, 0, \"\"},\n\t\t{\"TUNSETDEBUG\", Const, 0, \"\"},\n\t\t{\"TUNSETGROUP\", Const, 0, \"\"},\n\t\t{\"TUNSETIFF\", Const, 0, \"\"},\n\t\t{\"TUNSETLINK\", Const, 0, \"\"},\n\t\t{\"TUNSETNOCSUM\", Const, 0, \"\"},\n\t\t{\"TUNSETOFFLOAD\", Const, 0, \"\"},\n\t\t{\"TUNSETOWNER\", Const, 0, \"\"},\n\t\t{\"TUNSETPERSIST\", Const, 0, \"\"},\n\t\t{\"TUNSETSNDBUF\", Const, 0, \"\"},\n\t\t{\"TUNSETTXFILTER\", Const, 0, \"\"},\n\t\t{\"TUNSETVNETHDRSZ\", Const, 0, \"\"},\n\t\t{\"Tee\", Func, 0, \"func(rfd int, wfd int, len int, flags int) (n int64, err error)\"},\n\t\t{\"TerminateProcess\", Func, 0, \"\"},\n\t\t{\"Termios\", Type, 0, \"\"},\n\t\t{\"Termios.Cc\", Field, 0, \"\"},\n\t\t{\"Termios.Cflag\", Field, 0, \"\"},\n\t\t{\"Termios.Iflag\", Field, 0, \"\"},\n\t\t{\"Termios.Ispeed\", Field, 0, \"\"},\n\t\t{\"Termios.Lflag\", Field, 0, \"\"},\n\t\t{\"Termios.Line\", Field, 0, \"\"},\n\t\t{\"Termios.Oflag\", Field, 0, \"\"},\n\t\t{\"Termios.Ospeed\", Field, 0, \"\"},\n\t\t{\"Termios.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Tgkill\", Func, 0, \"func(tgid int, tid int, sig Signal) (err error)\"},\n\t\t{\"Time\", Func, 0, \"func(t *Time_t) (tt Time_t, err error)\"},\n\t\t{\"Time_t\", Type, 0, \"\"},\n\t\t{\"Times\", Func, 0, \"func(tms *Tms) (ticks uintptr, err error)\"},\n\t\t{\"Timespec\", Type, 0, \"\"},\n\t\t{\"Timespec.Nsec\", Field, 0, \"\"},\n\t\t{\"Timespec.Pad_cgo_0\", Field, 2, \"\"},\n\t\t{\"Timespec.Sec\", Field, 0, \"\"},\n\t\t{\"TimespecToNsec\", Func, 0, \"func(ts Timespec) int64\"},\n\t\t{\"Timeval\", Type, 0, \"\"},\n\t\t{\"Timeval.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Timeval.Sec\", Field, 0, \"\"},\n\t\t{\"Timeval.Usec\", Field, 0, \"\"},\n\t\t{\"Timeval32\", Type, 0, \"\"},\n\t\t{\"Timeval32.Sec\", Field, 0, \"\"},\n\t\t{\"Timeval32.Usec\", Field, 0, \"\"},\n\t\t{\"TimevalToNsec\", Func, 0, \"func(tv Timeval) int64\"},\n\t\t{\"Timex\", Type, 0, \"\"},\n\t\t{\"Timex.Calcnt\", Field, 0, \"\"},\n\t\t{\"Timex.Constant\", Field, 0, \"\"},\n\t\t{\"Timex.Errcnt\", Field, 0, \"\"},\n\t\t{\"Timex.Esterror\", Field, 0, \"\"},\n\t\t{\"Timex.Freq\", Field, 0, \"\"},\n\t\t{\"Timex.Jitcnt\", Field, 0, \"\"},\n\t\t{\"Timex.Jitter\", Field, 0, \"\"},\n\t\t{\"Timex.Maxerror\", Field, 0, \"\"},\n\t\t{\"Timex.Modes\", Field, 0, \"\"},\n\t\t{\"Timex.Offset\", Field, 0, \"\"},\n\t\t{\"Timex.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Timex.Pad_cgo_1\", Field, 0, \"\"},\n\t\t{\"Timex.Pad_cgo_2\", Field, 0, \"\"},\n\t\t{\"Timex.Pad_cgo_3\", Field, 0, \"\"},\n\t\t{\"Timex.Ppsfreq\", Field, 0, \"\"},\n\t\t{\"Timex.Precision\", Field, 0, \"\"},\n\t\t{\"Timex.Shift\", Field, 0, \"\"},\n\t\t{\"Timex.Stabil\", Field, 0, \"\"},\n\t\t{\"Timex.Status\", Field, 0, \"\"},\n\t\t{\"Timex.Stbcnt\", Field, 0, \"\"},\n\t\t{\"Timex.Tai\", Field, 0, \"\"},\n\t\t{\"Timex.Tick\", Field, 0, \"\"},\n\t\t{\"Timex.Time\", Field, 0, \"\"},\n\t\t{\"Timex.Tolerance\", Field, 0, \"\"},\n\t\t{\"Timezoneinformation\", Type, 0, \"\"},\n\t\t{\"Timezoneinformation.Bias\", Field, 0, \"\"},\n\t\t{\"Timezoneinformation.DaylightBias\", Field, 0, \"\"},\n\t\t{\"Timezoneinformation.DaylightDate\", Field, 0, \"\"},\n\t\t{\"Timezoneinformation.DaylightName\", Field, 0, \"\"},\n\t\t{\"Timezoneinformation.StandardBias\", Field, 0, \"\"},\n\t\t{\"Timezoneinformation.StandardDate\", Field, 0, \"\"},\n\t\t{\"Timezoneinformation.StandardName\", Field, 0, \"\"},\n\t\t{\"Tms\", Type, 0, \"\"},\n\t\t{\"Tms.Cstime\", Field, 0, \"\"},\n\t\t{\"Tms.Cutime\", Field, 0, \"\"},\n\t\t{\"Tms.Stime\", Field, 0, \"\"},\n\t\t{\"Tms.Utime\", Field, 0, \"\"},\n\t\t{\"Token\", Type, 0, \"\"},\n\t\t{\"TokenAccessInformation\", Const, 0, \"\"},\n\t\t{\"TokenAuditPolicy\", Const, 0, \"\"},\n\t\t{\"TokenDefaultDacl\", Const, 0, \"\"},\n\t\t{\"TokenElevation\", Const, 0, \"\"},\n\t\t{\"TokenElevationType\", Const, 0, \"\"},\n\t\t{\"TokenGroups\", Const, 0, \"\"},\n\t\t{\"TokenGroupsAndPrivileges\", Const, 0, \"\"},\n\t\t{\"TokenHasRestrictions\", Const, 0, \"\"},\n\t\t{\"TokenImpersonationLevel\", Const, 0, \"\"},\n\t\t{\"TokenIntegrityLevel\", Const, 0, \"\"},\n\t\t{\"TokenLinkedToken\", Const, 0, \"\"},\n\t\t{\"TokenLogonSid\", Const, 0, \"\"},\n\t\t{\"TokenMandatoryPolicy\", Const, 0, \"\"},\n\t\t{\"TokenOrigin\", Const, 0, \"\"},\n\t\t{\"TokenOwner\", Const, 0, \"\"},\n\t\t{\"TokenPrimaryGroup\", Const, 0, \"\"},\n\t\t{\"TokenPrivileges\", Const, 0, \"\"},\n\t\t{\"TokenRestrictedSids\", Const, 0, \"\"},\n\t\t{\"TokenSandBoxInert\", Const, 0, \"\"},\n\t\t{\"TokenSessionId\", Const, 0, \"\"},\n\t\t{\"TokenSessionReference\", Const, 0, \"\"},\n\t\t{\"TokenSource\", Const, 0, \"\"},\n\t\t{\"TokenStatistics\", Const, 0, \"\"},\n\t\t{\"TokenType\", Const, 0, \"\"},\n\t\t{\"TokenUIAccess\", Const, 0, \"\"},\n\t\t{\"TokenUser\", Const, 0, \"\"},\n\t\t{\"TokenVirtualizationAllowed\", Const, 0, \"\"},\n\t\t{\"TokenVirtualizationEnabled\", Const, 0, \"\"},\n\t\t{\"Tokenprimarygroup\", Type, 0, \"\"},\n\t\t{\"Tokenprimarygroup.PrimaryGroup\", Field, 0, \"\"},\n\t\t{\"Tokenuser\", Type, 0, \"\"},\n\t\t{\"Tokenuser.User\", Field, 0, \"\"},\n\t\t{\"TranslateAccountName\", Func, 0, \"\"},\n\t\t{\"TranslateName\", Func, 0, \"\"},\n\t\t{\"TransmitFile\", Func, 0, \"\"},\n\t\t{\"TransmitFileBuffers\", Type, 0, \"\"},\n\t\t{\"TransmitFileBuffers.Head\", Field, 0, \"\"},\n\t\t{\"TransmitFileBuffers.HeadLength\", Field, 0, \"\"},\n\t\t{\"TransmitFileBuffers.Tail\", Field, 0, \"\"},\n\t\t{\"TransmitFileBuffers.TailLength\", Field, 0, \"\"},\n\t\t{\"Truncate\", Func, 0, \"func(path string, length int64) (err error)\"},\n\t\t{\"UNIX_PATH_MAX\", Const, 12, \"\"},\n\t\t{\"USAGE_MATCH_TYPE_AND\", Const, 0, \"\"},\n\t\t{\"USAGE_MATCH_TYPE_OR\", Const, 0, \"\"},\n\t\t{\"UTF16FromString\", Func, 1, \"\"},\n\t\t{\"UTF16PtrFromString\", Func, 1, \"\"},\n\t\t{\"UTF16ToString\", Func, 0, \"\"},\n\t\t{\"Ucred\", Type, 0, \"\"},\n\t\t{\"Ucred.Gid\", Field, 0, \"\"},\n\t\t{\"Ucred.Pid\", Field, 0, \"\"},\n\t\t{\"Ucred.Uid\", Field, 0, \"\"},\n\t\t{\"Umask\", Func, 0, \"func(mask int) (oldmask int)\"},\n\t\t{\"Uname\", Func, 0, \"func(buf *Utsname) (err error)\"},\n\t\t{\"Undelete\", Func, 0, \"\"},\n\t\t{\"UnixCredentials\", Func, 0, \"func(ucred *Ucred) []byte\"},\n\t\t{\"UnixRights\", Func, 0, \"func(fds ...int) []byte\"},\n\t\t{\"Unlink\", Func, 0, \"func(path string) error\"},\n\t\t{\"Unlinkat\", Func, 0, \"func(dirfd int, path string) error\"},\n\t\t{\"UnmapViewOfFile\", Func, 0, \"\"},\n\t\t{\"Unmount\", Func, 0, \"func(target string, flags int) (err error)\"},\n\t\t{\"Unsetenv\", Func, 4, \"func(key string) error\"},\n\t\t{\"Unshare\", Func, 0, \"func(flags int) (err error)\"},\n\t\t{\"UserInfo10\", Type, 0, \"\"},\n\t\t{\"UserInfo10.Comment\", Field, 0, \"\"},\n\t\t{\"UserInfo10.FullName\", Field, 0, \"\"},\n\t\t{\"UserInfo10.Name\", Field, 0, \"\"},\n\t\t{\"UserInfo10.UsrComment\", Field, 0, \"\"},\n\t\t{\"Ustat\", Func, 0, \"func(dev int, ubuf *Ustat_t) (err error)\"},\n\t\t{\"Ustat_t\", Type, 0, \"\"},\n\t\t{\"Ustat_t.Fname\", Field, 0, \"\"},\n\t\t{\"Ustat_t.Fpack\", Field, 0, \"\"},\n\t\t{\"Ustat_t.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Ustat_t.Pad_cgo_1\", Field, 0, \"\"},\n\t\t{\"Ustat_t.Tfree\", Field, 0, \"\"},\n\t\t{\"Ustat_t.Tinode\", Field, 0, \"\"},\n\t\t{\"Utimbuf\", Type, 0, \"\"},\n\t\t{\"Utimbuf.Actime\", Field, 0, \"\"},\n\t\t{\"Utimbuf.Modtime\", Field, 0, \"\"},\n\t\t{\"Utime\", Func, 0, \"func(path string, buf *Utimbuf) (err error)\"},\n\t\t{\"Utimes\", Func, 0, \"func(path string, tv []Timeval) (err error)\"},\n\t\t{\"UtimesNano\", Func, 1, \"func(path string, ts []Timespec) (err error)\"},\n\t\t{\"Utsname\", Type, 0, \"\"},\n\t\t{\"Utsname.Domainname\", Field, 0, \"\"},\n\t\t{\"Utsname.Machine\", Field, 0, \"\"},\n\t\t{\"Utsname.Nodename\", Field, 0, \"\"},\n\t\t{\"Utsname.Release\", Field, 0, \"\"},\n\t\t{\"Utsname.Sysname\", Field, 0, \"\"},\n\t\t{\"Utsname.Version\", Field, 0, \"\"},\n\t\t{\"VDISCARD\", Const, 0, \"\"},\n\t\t{\"VDSUSP\", Const, 1, \"\"},\n\t\t{\"VEOF\", Const, 0, \"\"},\n\t\t{\"VEOL\", Const, 0, \"\"},\n\t\t{\"VEOL2\", Const, 0, \"\"},\n\t\t{\"VERASE\", Const, 0, \"\"},\n\t\t{\"VERASE2\", Const, 1, \"\"},\n\t\t{\"VINTR\", Const, 0, \"\"},\n\t\t{\"VKILL\", Const, 0, \"\"},\n\t\t{\"VLNEXT\", Const, 0, \"\"},\n\t\t{\"VMIN\", Const, 0, \"\"},\n\t\t{\"VQUIT\", Const, 0, \"\"},\n\t\t{\"VREPRINT\", Const, 0, \"\"},\n\t\t{\"VSTART\", Const, 0, \"\"},\n\t\t{\"VSTATUS\", Const, 1, \"\"},\n\t\t{\"VSTOP\", Const, 0, \"\"},\n\t\t{\"VSUSP\", Const, 0, \"\"},\n\t\t{\"VSWTC\", Const, 0, \"\"},\n\t\t{\"VT0\", Const, 1, \"\"},\n\t\t{\"VT1\", Const, 1, \"\"},\n\t\t{\"VTDLY\", Const, 1, \"\"},\n\t\t{\"VTIME\", Const, 0, \"\"},\n\t\t{\"VWERASE\", Const, 0, \"\"},\n\t\t{\"VirtualLock\", Func, 0, \"\"},\n\t\t{\"VirtualUnlock\", Func, 0, \"\"},\n\t\t{\"WAIT_ABANDONED\", Const, 0, \"\"},\n\t\t{\"WAIT_FAILED\", Const, 0, \"\"},\n\t\t{\"WAIT_OBJECT_0\", Const, 0, \"\"},\n\t\t{\"WAIT_TIMEOUT\", Const, 0, \"\"},\n\t\t{\"WALL\", Const, 0, \"\"},\n\t\t{\"WALLSIG\", Const, 1, \"\"},\n\t\t{\"WALTSIG\", Const, 1, \"\"},\n\t\t{\"WCLONE\", Const, 0, \"\"},\n\t\t{\"WCONTINUED\", Const, 0, \"\"},\n\t\t{\"WCOREFLAG\", Const, 0, \"\"},\n\t\t{\"WEXITED\", Const, 0, \"\"},\n\t\t{\"WLINUXCLONE\", Const, 0, \"\"},\n\t\t{\"WNOHANG\", Const, 0, \"\"},\n\t\t{\"WNOTHREAD\", Const, 0, \"\"},\n\t\t{\"WNOWAIT\", Const, 0, \"\"},\n\t\t{\"WNOZOMBIE\", Const, 1, \"\"},\n\t\t{\"WOPTSCHECKED\", Const, 1, \"\"},\n\t\t{\"WORDSIZE\", Const, 0, \"\"},\n\t\t{\"WSABuf\", Type, 0, \"\"},\n\t\t{\"WSABuf.Buf\", Field, 0, \"\"},\n\t\t{\"WSABuf.Len\", Field, 0, \"\"},\n\t\t{\"WSACleanup\", Func, 0, \"\"},\n\t\t{\"WSADESCRIPTION_LEN\", Const, 0, \"\"},\n\t\t{\"WSAData\", Type, 0, \"\"},\n\t\t{\"WSAData.Description\", Field, 0, \"\"},\n\t\t{\"WSAData.HighVersion\", Field, 0, \"\"},\n\t\t{\"WSAData.MaxSockets\", Field, 0, \"\"},\n\t\t{\"WSAData.MaxUdpDg\", Field, 0, \"\"},\n\t\t{\"WSAData.SystemStatus\", Field, 0, \"\"},\n\t\t{\"WSAData.VendorInfo\", Field, 0, \"\"},\n\t\t{\"WSAData.Version\", Field, 0, \"\"},\n\t\t{\"WSAEACCES\", Const, 2, \"\"},\n\t\t{\"WSAECONNABORTED\", Const, 9, \"\"},\n\t\t{\"WSAECONNRESET\", Const, 3, \"\"},\n\t\t{\"WSAENOPROTOOPT\", Const, 23, \"\"},\n\t\t{\"WSAEnumProtocols\", Func, 2, \"\"},\n\t\t{\"WSAID_CONNECTEX\", Var, 1, \"\"},\n\t\t{\"WSAIoctl\", Func, 0, \"\"},\n\t\t{\"WSAPROTOCOL_LEN\", Const, 2, \"\"},\n\t\t{\"WSAProtocolChain\", Type, 2, \"\"},\n\t\t{\"WSAProtocolChain.ChainEntries\", Field, 2, \"\"},\n\t\t{\"WSAProtocolChain.ChainLen\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo\", Type, 2, \"\"},\n\t\t{\"WSAProtocolInfo.AddressFamily\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.CatalogEntryId\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.MaxSockAddr\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.MessageSize\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.MinSockAddr\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.NetworkByteOrder\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.Protocol\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ProtocolChain\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ProtocolMaxOffset\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ProtocolName\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ProviderFlags\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ProviderId\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ProviderReserved\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.SecurityScheme\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ServiceFlags1\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ServiceFlags2\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ServiceFlags3\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ServiceFlags4\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.SocketType\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.Version\", Field, 2, \"\"},\n\t\t{\"WSARecv\", Func, 0, \"\"},\n\t\t{\"WSARecvFrom\", Func, 0, \"\"},\n\t\t{\"WSASYS_STATUS_LEN\", Const, 0, \"\"},\n\t\t{\"WSASend\", Func, 0, \"\"},\n\t\t{\"WSASendTo\", Func, 0, \"\"},\n\t\t{\"WSASendto\", Func, 0, \"\"},\n\t\t{\"WSAStartup\", Func, 0, \"\"},\n\t\t{\"WSTOPPED\", Const, 0, \"\"},\n\t\t{\"WTRAPPED\", Const, 1, \"\"},\n\t\t{\"WUNTRACED\", Const, 0, \"\"},\n\t\t{\"Wait4\", Func, 0, \"func(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error)\"},\n\t\t{\"WaitForSingleObject\", Func, 0, \"\"},\n\t\t{\"WaitStatus\", Type, 0, \"\"},\n\t\t{\"WaitStatus.ExitCode\", Field, 0, \"\"},\n\t\t{\"Win32FileAttributeData\", Type, 0, \"\"},\n\t\t{\"Win32FileAttributeData.CreationTime\", Field, 0, \"\"},\n\t\t{\"Win32FileAttributeData.FileAttributes\", Field, 0, \"\"},\n\t\t{\"Win32FileAttributeData.FileSizeHigh\", Field, 0, \"\"},\n\t\t{\"Win32FileAttributeData.FileSizeLow\", Field, 0, \"\"},\n\t\t{\"Win32FileAttributeData.LastAccessTime\", Field, 0, \"\"},\n\t\t{\"Win32FileAttributeData.LastWriteTime\", Field, 0, \"\"},\n\t\t{\"Win32finddata\", Type, 0, \"\"},\n\t\t{\"Win32finddata.AlternateFileName\", Field, 0, \"\"},\n\t\t{\"Win32finddata.CreationTime\", Field, 0, \"\"},\n\t\t{\"Win32finddata.FileAttributes\", Field, 0, \"\"},\n\t\t{\"Win32finddata.FileName\", Field, 0, \"\"},\n\t\t{\"Win32finddata.FileSizeHigh\", Field, 0, \"\"},\n\t\t{\"Win32finddata.FileSizeLow\", Field, 0, \"\"},\n\t\t{\"Win32finddata.LastAccessTime\", Field, 0, \"\"},\n\t\t{\"Win32finddata.LastWriteTime\", Field, 0, \"\"},\n\t\t{\"Win32finddata.Reserved0\", Field, 0, \"\"},\n\t\t{\"Win32finddata.Reserved1\", Field, 0, \"\"},\n\t\t{\"Write\", Func, 0, \"func(fd int, p []byte) (n int, err error)\"},\n\t\t{\"WriteConsole\", Func, 1, \"\"},\n\t\t{\"WriteFile\", Func, 0, \"\"},\n\t\t{\"X509_ASN_ENCODING\", Const, 0, \"\"},\n\t\t{\"XCASE\", Const, 0, \"\"},\n\t\t{\"XP1_CONNECTIONLESS\", Const, 2, \"\"},\n\t\t{\"XP1_CONNECT_DATA\", Const, 2, \"\"},\n\t\t{\"XP1_DISCONNECT_DATA\", Const, 2, \"\"},\n\t\t{\"XP1_EXPEDITED_DATA\", Const, 2, \"\"},\n\t\t{\"XP1_GRACEFUL_CLOSE\", Const, 2, \"\"},\n\t\t{\"XP1_GUARANTEED_DELIVERY\", Const, 2, \"\"},\n\t\t{\"XP1_GUARANTEED_ORDER\", Const, 2, \"\"},\n\t\t{\"XP1_IFS_HANDLES\", Const, 2, \"\"},\n\t\t{\"XP1_MESSAGE_ORIENTED\", Const, 2, \"\"},\n\t\t{\"XP1_MULTIPOINT_CONTROL_PLANE\", Const, 2, \"\"},\n\t\t{\"XP1_MULTIPOINT_DATA_PLANE\", Const, 2, \"\"},\n\t\t{\"XP1_PARTIAL_MESSAGE\", Const, 2, \"\"},\n\t\t{\"XP1_PSEUDO_STREAM\", Const, 2, \"\"},\n\t\t{\"XP1_QOS_SUPPORTED\", Const, 2, \"\"},\n\t\t{\"XP1_SAN_SUPPORT_SDP\", Const, 2, \"\"},\n\t\t{\"XP1_SUPPORT_BROADCAST\", Const, 2, \"\"},\n\t\t{\"XP1_SUPPORT_MULTIPOINT\", Const, 2, \"\"},\n\t\t{\"XP1_UNI_RECV\", Const, 2, \"\"},\n\t\t{\"XP1_UNI_SEND\", Const, 2, \"\"},\n\t},\n\t\"syscall/js\": {\n\t\t{\"CopyBytesToGo\", Func, 0, \"\"},\n\t\t{\"CopyBytesToJS\", Func, 0, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Func\", Type, 0, \"\"},\n\t\t{\"FuncOf\", Func, 0, \"\"},\n\t\t{\"Global\", Func, 0, \"\"},\n\t\t{\"Null\", Func, 0, \"\"},\n\t\t{\"Type\", Type, 0, \"\"},\n\t\t{\"TypeBoolean\", Const, 0, \"\"},\n\t\t{\"TypeFunction\", Const, 0, \"\"},\n\t\t{\"TypeNull\", Const, 0, \"\"},\n\t\t{\"TypeNumber\", Const, 0, \"\"},\n\t\t{\"TypeObject\", Const, 0, \"\"},\n\t\t{\"TypeString\", Const, 0, \"\"},\n\t\t{\"TypeSymbol\", Const, 0, \"\"},\n\t\t{\"TypeUndefined\", Const, 0, \"\"},\n\t\t{\"Undefined\", Func, 0, \"\"},\n\t\t{\"Value\", Type, 0, \"\"},\n\t\t{\"ValueError\", Type, 0, \"\"},\n\t\t{\"ValueOf\", Func, 0, \"\"},\n\t},\n\t\"testing\": {\n\t\t{\"(*B).ArtifactDir\", Method, 26, \"\"},\n\t\t{\"(*B).Attr\", Method, 25, \"\"},\n\t\t{\"(*B).Chdir\", Method, 24, \"\"},\n\t\t{\"(*B).Cleanup\", Method, 14, \"\"},\n\t\t{\"(*B).Context\", Method, 24, \"\"},\n\t\t{\"(*B).Elapsed\", Method, 20, \"\"},\n\t\t{\"(*B).Error\", Method, 0, \"\"},\n\t\t{\"(*B).Errorf\", Method, 0, \"\"},\n\t\t{\"(*B).Fail\", Method, 0, \"\"},\n\t\t{\"(*B).FailNow\", Method, 0, \"\"},\n\t\t{\"(*B).Failed\", Method, 0, \"\"},\n\t\t{\"(*B).Fatal\", Method, 0, \"\"},\n\t\t{\"(*B).Fatalf\", Method, 0, \"\"},\n\t\t{\"(*B).Helper\", Method, 9, \"\"},\n\t\t{\"(*B).Log\", Method, 0, \"\"},\n\t\t{\"(*B).Logf\", Method, 0, \"\"},\n\t\t{\"(*B).Loop\", Method, 24, \"\"},\n\t\t{\"(*B).Name\", Method, 8, \"\"},\n\t\t{\"(*B).Output\", Method, 25, \"\"},\n\t\t{\"(*B).ReportAllocs\", Method, 1, \"\"},\n\t\t{\"(*B).ReportMetric\", Method, 13, \"\"},\n\t\t{\"(*B).ResetTimer\", Method, 0, \"\"},\n\t\t{\"(*B).Run\", Method, 7, \"\"},\n\t\t{\"(*B).RunParallel\", Method, 3, \"\"},\n\t\t{\"(*B).SetBytes\", Method, 0, \"\"},\n\t\t{\"(*B).SetParallelism\", Method, 3, \"\"},\n\t\t{\"(*B).Setenv\", Method, 17, \"\"},\n\t\t{\"(*B).Skip\", Method, 1, \"\"},\n\t\t{\"(*B).SkipNow\", Method, 1, \"\"},\n\t\t{\"(*B).Skipf\", Method, 1, \"\"},\n\t\t{\"(*B).Skipped\", Method, 1, \"\"},\n\t\t{\"(*B).StartTimer\", Method, 0, \"\"},\n\t\t{\"(*B).StopTimer\", Method, 0, \"\"},\n\t\t{\"(*B).TempDir\", Method, 15, \"\"},\n\t\t{\"(*F).Add\", Method, 18, \"\"},\n\t\t{\"(*F).ArtifactDir\", Method, 26, \"\"},\n\t\t{\"(*F).Attr\", Method, 25, \"\"},\n\t\t{\"(*F).Chdir\", Method, 24, \"\"},\n\t\t{\"(*F).Cleanup\", Method, 18, \"\"},\n\t\t{\"(*F).Context\", Method, 24, \"\"},\n\t\t{\"(*F).Error\", Method, 18, \"\"},\n\t\t{\"(*F).Errorf\", Method, 18, \"\"},\n\t\t{\"(*F).Fail\", Method, 18, \"\"},\n\t\t{\"(*F).FailNow\", Method, 18, \"\"},\n\t\t{\"(*F).Failed\", Method, 18, \"\"},\n\t\t{\"(*F).Fatal\", Method, 18, \"\"},\n\t\t{\"(*F).Fatalf\", Method, 18, \"\"},\n\t\t{\"(*F).Fuzz\", Method, 18, \"\"},\n\t\t{\"(*F).Helper\", Method, 18, \"\"},\n\t\t{\"(*F).Log\", Method, 18, \"\"},\n\t\t{\"(*F).Logf\", Method, 18, \"\"},\n\t\t{\"(*F).Name\", Method, 18, \"\"},\n\t\t{\"(*F).Output\", Method, 25, \"\"},\n\t\t{\"(*F).Setenv\", Method, 18, \"\"},\n\t\t{\"(*F).Skip\", Method, 18, \"\"},\n\t\t{\"(*F).SkipNow\", Method, 18, \"\"},\n\t\t{\"(*F).Skipf\", Method, 18, \"\"},\n\t\t{\"(*F).Skipped\", Method, 18, \"\"},\n\t\t{\"(*F).TempDir\", Method, 18, \"\"},\n\t\t{\"(*M).Run\", Method, 4, \"\"},\n\t\t{\"(*PB).Next\", Method, 3, \"\"},\n\t\t{\"(*T).ArtifactDir\", Method, 26, \"\"},\n\t\t{\"(*T).Attr\", Method, 25, \"\"},\n\t\t{\"(*T).Chdir\", Method, 24, \"\"},\n\t\t{\"(*T).Cleanup\", Method, 14, \"\"},\n\t\t{\"(*T).Context\", Method, 24, \"\"},\n\t\t{\"(*T).Deadline\", Method, 15, \"\"},\n\t\t{\"(*T).Error\", Method, 0, \"\"},\n\t\t{\"(*T).Errorf\", Method, 0, \"\"},\n\t\t{\"(*T).Fail\", Method, 0, \"\"},\n\t\t{\"(*T).FailNow\", Method, 0, \"\"},\n\t\t{\"(*T).Failed\", Method, 0, \"\"},\n\t\t{\"(*T).Fatal\", Method, 0, \"\"},\n\t\t{\"(*T).Fatalf\", Method, 0, \"\"},\n\t\t{\"(*T).Helper\", Method, 9, \"\"},\n\t\t{\"(*T).Log\", Method, 0, \"\"},\n\t\t{\"(*T).Logf\", Method, 0, \"\"},\n\t\t{\"(*T).Name\", Method, 8, \"\"},\n\t\t{\"(*T).Output\", Method, 25, \"\"},\n\t\t{\"(*T).Parallel\", Method, 0, \"\"},\n\t\t{\"(*T).Run\", Method, 7, \"\"},\n\t\t{\"(*T).Setenv\", Method, 17, \"\"},\n\t\t{\"(*T).Skip\", Method, 1, \"\"},\n\t\t{\"(*T).SkipNow\", Method, 1, \"\"},\n\t\t{\"(*T).Skipf\", Method, 1, \"\"},\n\t\t{\"(*T).Skipped\", Method, 1, \"\"},\n\t\t{\"(*T).TempDir\", Method, 15, \"\"},\n\t\t{\"(BenchmarkResult).AllocedBytesPerOp\", Method, 1, \"\"},\n\t\t{\"(BenchmarkResult).AllocsPerOp\", Method, 1, \"\"},\n\t\t{\"(BenchmarkResult).MemString\", Method, 1, \"\"},\n\t\t{\"(BenchmarkResult).NsPerOp\", Method, 0, \"\"},\n\t\t{\"(BenchmarkResult).String\", Method, 0, \"\"},\n\t\t{\"(TB).ArtifactDir\", Method, 26, \"\"},\n\t\t{\"(TB).Attr\", Method, 25, \"\"},\n\t\t{\"(TB).Chdir\", Method, 24, \"\"},\n\t\t{\"(TB).Cleanup\", Method, 14, \"\"},\n\t\t{\"(TB).Context\", Method, 24, \"\"},\n\t\t{\"(TB).Error\", Method, 2, \"\"},\n\t\t{\"(TB).Errorf\", Method, 2, \"\"},\n\t\t{\"(TB).Fail\", Method, 2, \"\"},\n\t\t{\"(TB).FailNow\", Method, 2, \"\"},\n\t\t{\"(TB).Failed\", Method, 2, \"\"},\n\t\t{\"(TB).Fatal\", Method, 2, \"\"},\n\t\t{\"(TB).Fatalf\", Method, 2, \"\"},\n\t\t{\"(TB).Helper\", Method, 9, \"\"},\n\t\t{\"(TB).Log\", Method, 2, \"\"},\n\t\t{\"(TB).Logf\", Method, 2, \"\"},\n\t\t{\"(TB).Name\", Method, 8, \"\"},\n\t\t{\"(TB).Output\", Method, 25, \"\"},\n\t\t{\"(TB).Setenv\", Method, 17, \"\"},\n\t\t{\"(TB).Skip\", Method, 2, \"\"},\n\t\t{\"(TB).SkipNow\", Method, 2, \"\"},\n\t\t{\"(TB).Skipf\", Method, 2, \"\"},\n\t\t{\"(TB).Skipped\", Method, 2, \"\"},\n\t\t{\"(TB).TempDir\", Method, 15, \"\"},\n\t\t{\"AllocsPerRun\", Func, 1, \"func(runs int, f func()) (avg float64)\"},\n\t\t{\"B\", Type, 0, \"\"},\n\t\t{\"B.N\", Field, 0, \"\"},\n\t\t{\"Benchmark\", Func, 0, \"func(f func(b *B)) BenchmarkResult\"},\n\t\t{\"BenchmarkResult\", Type, 0, \"\"},\n\t\t{\"BenchmarkResult.Bytes\", Field, 0, \"\"},\n\t\t{\"BenchmarkResult.Extra\", Field, 13, \"\"},\n\t\t{\"BenchmarkResult.MemAllocs\", Field, 1, \"\"},\n\t\t{\"BenchmarkResult.MemBytes\", Field, 1, \"\"},\n\t\t{\"BenchmarkResult.N\", Field, 0, \"\"},\n\t\t{\"BenchmarkResult.T\", Field, 0, \"\"},\n\t\t{\"Cover\", Type, 2, \"\"},\n\t\t{\"Cover.Blocks\", Field, 2, \"\"},\n\t\t{\"Cover.Counters\", Field, 2, \"\"},\n\t\t{\"Cover.CoveredPackages\", Field, 2, \"\"},\n\t\t{\"Cover.Mode\", Field, 2, \"\"},\n\t\t{\"CoverBlock\", Type, 2, \"\"},\n\t\t{\"CoverBlock.Col0\", Field, 2, \"\"},\n\t\t{\"CoverBlock.Col1\", Field, 2, \"\"},\n\t\t{\"CoverBlock.Line0\", Field, 2, \"\"},\n\t\t{\"CoverBlock.Line1\", Field, 2, \"\"},\n\t\t{\"CoverBlock.Stmts\", Field, 2, \"\"},\n\t\t{\"CoverMode\", Func, 8, \"func() string\"},\n\t\t{\"Coverage\", Func, 4, \"func() float64\"},\n\t\t{\"F\", Type, 18, \"\"},\n\t\t{\"Init\", Func, 13, \"func()\"},\n\t\t{\"InternalBenchmark\", Type, 0, \"\"},\n\t\t{\"InternalBenchmark.F\", Field, 0, \"\"},\n\t\t{\"InternalBenchmark.Name\", Field, 0, \"\"},\n\t\t{\"InternalExample\", Type, 0, \"\"},\n\t\t{\"InternalExample.F\", Field, 0, \"\"},\n\t\t{\"InternalExample.Name\", Field, 0, \"\"},\n\t\t{\"InternalExample.Output\", Field, 0, \"\"},\n\t\t{\"InternalExample.Unordered\", Field, 7, \"\"},\n\t\t{\"InternalFuzzTarget\", Type, 18, \"\"},\n\t\t{\"InternalFuzzTarget.Fn\", Field, 18, \"\"},\n\t\t{\"InternalFuzzTarget.Name\", Field, 18, \"\"},\n\t\t{\"InternalTest\", Type, 0, \"\"},\n\t\t{\"InternalTest.F\", Field, 0, \"\"},\n\t\t{\"InternalTest.Name\", Field, 0, \"\"},\n\t\t{\"M\", Type, 4, \"\"},\n\t\t{\"Main\", Func, 0, \"func(matchString func(pat string, str string) (bool, error), tests []InternalTest, benchmarks []InternalBenchmark, examples []InternalExample)\"},\n\t\t{\"MainStart\", Func, 4, \"func(deps testDeps, tests []InternalTest, benchmarks []InternalBenchmark, fuzzTargets []InternalFuzzTarget, examples []InternalExample) *M\"},\n\t\t{\"PB\", Type, 3, \"\"},\n\t\t{\"RegisterCover\", Func, 2, \"func(c Cover)\"},\n\t\t{\"RunBenchmarks\", Func, 0, \"func(matchString func(pat string, str string) (bool, error), benchmarks []InternalBenchmark)\"},\n\t\t{\"RunExamples\", Func, 0, \"func(matchString func(pat string, str string) (bool, error), examples []InternalExample) (ok bool)\"},\n\t\t{\"RunTests\", Func, 0, \"func(matchString func(pat string, str string) (bool, error), tests []InternalTest) (ok bool)\"},\n\t\t{\"Short\", Func, 0, \"func() bool\"},\n\t\t{\"T\", Type, 0, \"\"},\n\t\t{\"Testing\", Func, 21, \"func() bool\"},\n\t\t{\"Verbose\", Func, 1, \"func() bool\"},\n\t},\n\t\"testing/cryptotest\": {\n\t\t{\"SetGlobalRandom\", Func, 26, \"func(t *testing.T, seed uint64)\"},\n\t},\n\t\"testing/fstest\": {\n\t\t{\"(MapFS).Glob\", Method, 16, \"\"},\n\t\t{\"(MapFS).Lstat\", Method, 25, \"\"},\n\t\t{\"(MapFS).Open\", Method, 16, \"\"},\n\t\t{\"(MapFS).ReadDir\", Method, 16, \"\"},\n\t\t{\"(MapFS).ReadFile\", Method, 16, \"\"},\n\t\t{\"(MapFS).ReadLink\", Method, 25, \"\"},\n\t\t{\"(MapFS).Stat\", Method, 16, \"\"},\n\t\t{\"(MapFS).Sub\", Method, 16, \"\"},\n\t\t{\"MapFS\", Type, 16, \"\"},\n\t\t{\"MapFile\", Type, 16, \"\"},\n\t\t{\"MapFile.Data\", Field, 16, \"\"},\n\t\t{\"MapFile.ModTime\", Field, 16, \"\"},\n\t\t{\"MapFile.Mode\", Field, 16, \"\"},\n\t\t{\"MapFile.Sys\", Field, 16, \"\"},\n\t\t{\"TestFS\", Func, 16, \"func(fsys fs.FS, expected ...string) error\"},\n\t},\n\t\"testing/iotest\": {\n\t\t{\"DataErrReader\", Func, 0, \"func(r io.Reader) io.Reader\"},\n\t\t{\"ErrReader\", Func, 16, \"func(err error) io.Reader\"},\n\t\t{\"ErrTimeout\", Var, 0, \"\"},\n\t\t{\"HalfReader\", Func, 0, \"func(r io.Reader) io.Reader\"},\n\t\t{\"NewReadLogger\", Func, 0, \"func(prefix string, r io.Reader) io.Reader\"},\n\t\t{\"NewWriteLogger\", Func, 0, \"func(prefix string, w io.Writer) io.Writer\"},\n\t\t{\"OneByteReader\", Func, 0, \"func(r io.Reader) io.Reader\"},\n\t\t{\"TestReader\", Func, 16, \"func(r io.Reader, content []byte) error\"},\n\t\t{\"TimeoutReader\", Func, 0, \"func(r io.Reader) io.Reader\"},\n\t\t{\"TruncateWriter\", Func, 0, \"func(w io.Writer, n int64) io.Writer\"},\n\t},\n\t\"testing/quick\": {\n\t\t{\"(*CheckEqualError).Error\", Method, 0, \"\"},\n\t\t{\"(*CheckError).Error\", Method, 0, \"\"},\n\t\t{\"(Generator).Generate\", Method, 0, \"\"},\n\t\t{\"(SetupError).Error\", Method, 0, \"\"},\n\t\t{\"Check\", Func, 0, \"func(f any, config *Config) error\"},\n\t\t{\"CheckEqual\", Func, 0, \"func(f any, g any, config *Config) error\"},\n\t\t{\"CheckEqualError\", Type, 0, \"\"},\n\t\t{\"CheckEqualError.CheckError\", Field, 0, \"\"},\n\t\t{\"CheckEqualError.Out1\", Field, 0, \"\"},\n\t\t{\"CheckEqualError.Out2\", Field, 0, \"\"},\n\t\t{\"CheckError\", Type, 0, \"\"},\n\t\t{\"CheckError.Count\", Field, 0, \"\"},\n\t\t{\"CheckError.In\", Field, 0, \"\"},\n\t\t{\"Config\", Type, 0, \"\"},\n\t\t{\"Config.MaxCount\", Field, 0, \"\"},\n\t\t{\"Config.MaxCountScale\", Field, 0, \"\"},\n\t\t{\"Config.Rand\", Field, 0, \"\"},\n\t\t{\"Config.Values\", Field, 0, \"\"},\n\t\t{\"Generator\", Type, 0, \"\"},\n\t\t{\"SetupError\", Type, 0, \"\"},\n\t\t{\"Value\", Func, 0, \"func(t reflect.Type, rand *rand.Rand) (value reflect.Value, ok bool)\"},\n\t},\n\t\"testing/slogtest\": {\n\t\t{\"Run\", Func, 22, \"func(t *testing.T, newHandler func(*testing.T) slog.Handler, result func(*testing.T) map[string]any)\"},\n\t\t{\"TestHandler\", Func, 21, \"func(h slog.Handler, results func() []map[string]any) error\"},\n\t},\n\t\"testing/synctest\": {\n\t\t{\"Test\", Func, 25, \"func(t *testing.T, f func(*testing.T))\"},\n\t\t{\"Wait\", Func, 25, \"func()\"},\n\t},\n\t\"text/scanner\": {\n\t\t{\"(*Position).IsValid\", Method, 0, \"\"},\n\t\t{\"(*Scanner).Init\", Method, 0, \"\"},\n\t\t{\"(*Scanner).IsValid\", Method, 0, \"\"},\n\t\t{\"(*Scanner).Next\", Method, 0, \"\"},\n\t\t{\"(*Scanner).Peek\", Method, 0, \"\"},\n\t\t{\"(*Scanner).Pos\", Method, 0, \"\"},\n\t\t{\"(*Scanner).Scan\", Method, 0, \"\"},\n\t\t{\"(*Scanner).TokenText\", Method, 0, \"\"},\n\t\t{\"(Position).String\", Method, 0, \"\"},\n\t\t{\"(Scanner).String\", Method, 0, \"\"},\n\t\t{\"Char\", Const, 0, \"\"},\n\t\t{\"Comment\", Const, 0, \"\"},\n\t\t{\"EOF\", Const, 0, \"\"},\n\t\t{\"Float\", Const, 0, \"\"},\n\t\t{\"GoTokens\", Const, 0, \"\"},\n\t\t{\"GoWhitespace\", Const, 0, \"\"},\n\t\t{\"Ident\", Const, 0, \"\"},\n\t\t{\"Int\", Const, 0, \"\"},\n\t\t{\"Position\", Type, 0, \"\"},\n\t\t{\"Position.Column\", Field, 0, \"\"},\n\t\t{\"Position.Filename\", Field, 0, \"\"},\n\t\t{\"Position.Line\", Field, 0, \"\"},\n\t\t{\"Position.Offset\", Field, 0, \"\"},\n\t\t{\"RawString\", Const, 0, \"\"},\n\t\t{\"ScanChars\", Const, 0, \"\"},\n\t\t{\"ScanComments\", Const, 0, \"\"},\n\t\t{\"ScanFloats\", Const, 0, \"\"},\n\t\t{\"ScanIdents\", Const, 0, \"\"},\n\t\t{\"ScanInts\", Const, 0, \"\"},\n\t\t{\"ScanRawStrings\", Const, 0, \"\"},\n\t\t{\"ScanStrings\", Const, 0, \"\"},\n\t\t{\"Scanner\", Type, 0, \"\"},\n\t\t{\"Scanner.Error\", Field, 0, \"\"},\n\t\t{\"Scanner.ErrorCount\", Field, 0, \"\"},\n\t\t{\"Scanner.IsIdentRune\", Field, 4, \"\"},\n\t\t{\"Scanner.Mode\", Field, 0, \"\"},\n\t\t{\"Scanner.Position\", Field, 0, \"\"},\n\t\t{\"Scanner.Whitespace\", Field, 0, \"\"},\n\t\t{\"SkipComments\", Const, 0, \"\"},\n\t\t{\"String\", Const, 0, \"\"},\n\t\t{\"TokenString\", Func, 0, \"func(tok rune) string\"},\n\t},\n\t\"text/tabwriter\": {\n\t\t{\"(*Writer).Flush\", Method, 0, \"\"},\n\t\t{\"(*Writer).Init\", Method, 0, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"AlignRight\", Const, 0, \"\"},\n\t\t{\"Debug\", Const, 0, \"\"},\n\t\t{\"DiscardEmptyColumns\", Const, 0, \"\"},\n\t\t{\"Escape\", Const, 0, \"\"},\n\t\t{\"FilterHTML\", Const, 0, \"\"},\n\t\t{\"NewWriter\", Func, 0, \"func(output io.Writer, minwidth int, tabwidth int, padding int, padchar byte, flags uint) *Writer\"},\n\t\t{\"StripEscape\", Const, 0, \"\"},\n\t\t{\"TabIndent\", Const, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"text/template\": {\n\t\t{\"(*Template).AddParseTree\", Method, 0, \"\"},\n\t\t{\"(*Template).Clone\", Method, 0, \"\"},\n\t\t{\"(*Template).DefinedTemplates\", Method, 5, \"\"},\n\t\t{\"(*Template).Delims\", Method, 0, \"\"},\n\t\t{\"(*Template).Execute\", Method, 0, \"\"},\n\t\t{\"(*Template).ExecuteTemplate\", Method, 0, \"\"},\n\t\t{\"(*Template).Funcs\", Method, 0, \"\"},\n\t\t{\"(*Template).Lookup\", Method, 0, \"\"},\n\t\t{\"(*Template).Name\", Method, 0, \"\"},\n\t\t{\"(*Template).New\", Method, 0, \"\"},\n\t\t{\"(*Template).Option\", Method, 5, \"\"},\n\t\t{\"(*Template).Parse\", Method, 0, \"\"},\n\t\t{\"(*Template).ParseFS\", Method, 16, \"\"},\n\t\t{\"(*Template).ParseFiles\", Method, 0, \"\"},\n\t\t{\"(*Template).ParseGlob\", Method, 0, \"\"},\n\t\t{\"(*Template).Templates\", Method, 0, \"\"},\n\t\t{\"(ExecError).Error\", Method, 6, \"\"},\n\t\t{\"(ExecError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(Template).Copy\", Method, 2, \"\"},\n\t\t{\"(Template).ErrorContext\", Method, 1, \"\"},\n\t\t{\"ExecError\", Type, 6, \"\"},\n\t\t{\"ExecError.Err\", Field, 6, \"\"},\n\t\t{\"ExecError.Name\", Field, 6, \"\"},\n\t\t{\"FuncMap\", Type, 0, \"\"},\n\t\t{\"HTMLEscape\", Func, 0, \"func(w io.Writer, b []byte)\"},\n\t\t{\"HTMLEscapeString\", Func, 0, \"func(s string) string\"},\n\t\t{\"HTMLEscaper\", Func, 0, \"func(args ...any) string\"},\n\t\t{\"IsTrue\", Func, 6, \"func(val any) (truth bool, ok bool)\"},\n\t\t{\"JSEscape\", Func, 0, \"func(w io.Writer, b []byte)\"},\n\t\t{\"JSEscapeString\", Func, 0, \"func(s string) string\"},\n\t\t{\"JSEscaper\", Func, 0, \"func(args ...any) string\"},\n\t\t{\"Must\", Func, 0, \"func(t *Template, err error) *Template\"},\n\t\t{\"New\", Func, 0, \"func(name string) *Template\"},\n\t\t{\"ParseFS\", Func, 16, \"func(fsys fs.FS, patterns ...string) (*Template, error)\"},\n\t\t{\"ParseFiles\", Func, 0, \"func(filenames ...string) (*Template, error)\"},\n\t\t{\"ParseGlob\", Func, 0, \"func(pattern string) (*Template, error)\"},\n\t\t{\"Template\", Type, 0, \"\"},\n\t\t{\"Template.Tree\", Field, 0, \"\"},\n\t\t{\"URLQueryEscaper\", Func, 0, \"func(args ...any) string\"},\n\t},\n\t\"text/template/parse\": {\n\t\t{\"(*ActionNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*ActionNode).String\", Method, 0, \"\"},\n\t\t{\"(*BoolNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*BoolNode).String\", Method, 0, \"\"},\n\t\t{\"(*BranchNode).Copy\", Method, 4, \"\"},\n\t\t{\"(*BranchNode).String\", Method, 0, \"\"},\n\t\t{\"(*BreakNode).Copy\", Method, 18, \"\"},\n\t\t{\"(*BreakNode).String\", Method, 18, \"\"},\n\t\t{\"(*ChainNode).Add\", Method, 1, \"\"},\n\t\t{\"(*ChainNode).Copy\", Method, 1, \"\"},\n\t\t{\"(*ChainNode).String\", Method, 1, \"\"},\n\t\t{\"(*CommandNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*CommandNode).String\", Method, 0, \"\"},\n\t\t{\"(*CommentNode).Copy\", Method, 16, \"\"},\n\t\t{\"(*CommentNode).String\", Method, 16, \"\"},\n\t\t{\"(*ContinueNode).Copy\", Method, 18, \"\"},\n\t\t{\"(*ContinueNode).String\", Method, 18, \"\"},\n\t\t{\"(*DotNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*DotNode).String\", Method, 0, \"\"},\n\t\t{\"(*DotNode).Type\", Method, 0, \"\"},\n\t\t{\"(*FieldNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*FieldNode).String\", Method, 0, \"\"},\n\t\t{\"(*IdentifierNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*IdentifierNode).SetPos\", Method, 1, \"\"},\n\t\t{\"(*IdentifierNode).SetTree\", Method, 4, \"\"},\n\t\t{\"(*IdentifierNode).String\", Method, 0, \"\"},\n\t\t{\"(*IfNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*IfNode).String\", Method, 0, \"\"},\n\t\t{\"(*ListNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*ListNode).CopyList\", Method, 0, \"\"},\n\t\t{\"(*ListNode).String\", Method, 0, \"\"},\n\t\t{\"(*NilNode).Copy\", Method, 1, \"\"},\n\t\t{\"(*NilNode).String\", Method, 1, \"\"},\n\t\t{\"(*NilNode).Type\", Method, 1, \"\"},\n\t\t{\"(*NumberNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*NumberNode).String\", Method, 0, \"\"},\n\t\t{\"(*PipeNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*PipeNode).CopyPipe\", Method, 0, \"\"},\n\t\t{\"(*PipeNode).String\", Method, 0, \"\"},\n\t\t{\"(*RangeNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*RangeNode).String\", Method, 0, \"\"},\n\t\t{\"(*StringNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*StringNode).String\", Method, 0, \"\"},\n\t\t{\"(*TemplateNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*TemplateNode).String\", Method, 0, \"\"},\n\t\t{\"(*TextNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*TextNode).String\", Method, 0, \"\"},\n\t\t{\"(*Tree).Copy\", Method, 2, \"\"},\n\t\t{\"(*Tree).ErrorContext\", Method, 1, \"\"},\n\t\t{\"(*Tree).Parse\", Method, 0, \"\"},\n\t\t{\"(*VariableNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*VariableNode).String\", Method, 0, \"\"},\n\t\t{\"(*WithNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*WithNode).String\", Method, 0, \"\"},\n\t\t{\"(ActionNode).Position\", Method, 1, \"\"},\n\t\t{\"(ActionNode).Type\", Method, 0, \"\"},\n\t\t{\"(BoolNode).Position\", Method, 1, \"\"},\n\t\t{\"(BoolNode).Type\", Method, 0, \"\"},\n\t\t{\"(BranchNode).Position\", Method, 1, \"\"},\n\t\t{\"(BranchNode).Type\", Method, 0, \"\"},\n\t\t{\"(BreakNode).Position\", Method, 18, \"\"},\n\t\t{\"(BreakNode).Type\", Method, 18, \"\"},\n\t\t{\"(ChainNode).Position\", Method, 1, \"\"},\n\t\t{\"(ChainNode).Type\", Method, 1, \"\"},\n\t\t{\"(CommandNode).Position\", Method, 1, \"\"},\n\t\t{\"(CommandNode).Type\", Method, 0, \"\"},\n\t\t{\"(CommentNode).Position\", Method, 16, \"\"},\n\t\t{\"(CommentNode).Type\", Method, 16, \"\"},\n\t\t{\"(ContinueNode).Position\", Method, 18, \"\"},\n\t\t{\"(ContinueNode).Type\", Method, 18, \"\"},\n\t\t{\"(DotNode).Position\", Method, 1, \"\"},\n\t\t{\"(FieldNode).Position\", Method, 1, \"\"},\n\t\t{\"(FieldNode).Type\", Method, 0, \"\"},\n\t\t{\"(IdentifierNode).Position\", Method, 1, \"\"},\n\t\t{\"(IdentifierNode).Type\", Method, 0, \"\"},\n\t\t{\"(IfNode).Position\", Method, 1, \"\"},\n\t\t{\"(IfNode).Type\", Method, 0, \"\"},\n\t\t{\"(ListNode).Position\", Method, 1, \"\"},\n\t\t{\"(ListNode).Type\", Method, 0, \"\"},\n\t\t{\"(NilNode).Position\", Method, 1, \"\"},\n\t\t{\"(Node).Copy\", Method, 0, \"\"},\n\t\t{\"(Node).Position\", Method, 1, \"\"},\n\t\t{\"(Node).String\", Method, 0, \"\"},\n\t\t{\"(Node).Type\", Method, 0, \"\"},\n\t\t{\"(NodeType).Type\", Method, 0, \"\"},\n\t\t{\"(NumberNode).Position\", Method, 1, \"\"},\n\t\t{\"(NumberNode).Type\", Method, 0, \"\"},\n\t\t{\"(PipeNode).Position\", Method, 1, \"\"},\n\t\t{\"(PipeNode).Type\", Method, 0, \"\"},\n\t\t{\"(Pos).Position\", Method, 1, \"\"},\n\t\t{\"(RangeNode).Position\", Method, 1, \"\"},\n\t\t{\"(RangeNode).Type\", Method, 0, \"\"},\n\t\t{\"(StringNode).Position\", Method, 1, \"\"},\n\t\t{\"(StringNode).Type\", Method, 0, \"\"},\n\t\t{\"(TemplateNode).Position\", Method, 1, \"\"},\n\t\t{\"(TemplateNode).Type\", Method, 0, \"\"},\n\t\t{\"(TextNode).Position\", Method, 1, \"\"},\n\t\t{\"(TextNode).Type\", Method, 0, \"\"},\n\t\t{\"(VariableNode).Position\", Method, 1, \"\"},\n\t\t{\"(VariableNode).Type\", Method, 0, \"\"},\n\t\t{\"(WithNode).Position\", Method, 1, \"\"},\n\t\t{\"(WithNode).Type\", Method, 0, \"\"},\n\t\t{\"ActionNode\", Type, 0, \"\"},\n\t\t{\"ActionNode.Line\", Field, 0, \"\"},\n\t\t{\"ActionNode.NodeType\", Field, 0, \"\"},\n\t\t{\"ActionNode.Pipe\", Field, 0, \"\"},\n\t\t{\"ActionNode.Pos\", Field, 1, \"\"},\n\t\t{\"BoolNode\", Type, 0, \"\"},\n\t\t{\"BoolNode.NodeType\", Field, 0, \"\"},\n\t\t{\"BoolNode.Pos\", Field, 1, \"\"},\n\t\t{\"BoolNode.True\", Field, 0, \"\"},\n\t\t{\"BranchNode\", Type, 0, \"\"},\n\t\t{\"BranchNode.ElseList\", Field, 0, \"\"},\n\t\t{\"BranchNode.Line\", Field, 0, \"\"},\n\t\t{\"BranchNode.List\", Field, 0, \"\"},\n\t\t{\"BranchNode.NodeType\", Field, 0, \"\"},\n\t\t{\"BranchNode.Pipe\", Field, 0, \"\"},\n\t\t{\"BranchNode.Pos\", Field, 1, \"\"},\n\t\t{\"BreakNode\", Type, 18, \"\"},\n\t\t{\"BreakNode.Line\", Field, 18, \"\"},\n\t\t{\"BreakNode.NodeType\", Field, 18, \"\"},\n\t\t{\"BreakNode.Pos\", Field, 18, \"\"},\n\t\t{\"ChainNode\", Type, 1, \"\"},\n\t\t{\"ChainNode.Field\", Field, 1, \"\"},\n\t\t{\"ChainNode.Node\", Field, 1, \"\"},\n\t\t{\"ChainNode.NodeType\", Field, 1, \"\"},\n\t\t{\"ChainNode.Pos\", Field, 1, \"\"},\n\t\t{\"CommandNode\", Type, 0, \"\"},\n\t\t{\"CommandNode.Args\", Field, 0, \"\"},\n\t\t{\"CommandNode.NodeType\", Field, 0, \"\"},\n\t\t{\"CommandNode.Pos\", Field, 1, \"\"},\n\t\t{\"CommentNode\", Type, 16, \"\"},\n\t\t{\"CommentNode.NodeType\", Field, 16, \"\"},\n\t\t{\"CommentNode.Pos\", Field, 16, \"\"},\n\t\t{\"CommentNode.Text\", Field, 16, \"\"},\n\t\t{\"ContinueNode\", Type, 18, \"\"},\n\t\t{\"ContinueNode.Line\", Field, 18, \"\"},\n\t\t{\"ContinueNode.NodeType\", Field, 18, \"\"},\n\t\t{\"ContinueNode.Pos\", Field, 18, \"\"},\n\t\t{\"DotNode\", Type, 0, \"\"},\n\t\t{\"DotNode.NodeType\", Field, 4, \"\"},\n\t\t{\"DotNode.Pos\", Field, 1, \"\"},\n\t\t{\"FieldNode\", Type, 0, \"\"},\n\t\t{\"FieldNode.Ident\", Field, 0, \"\"},\n\t\t{\"FieldNode.NodeType\", Field, 0, \"\"},\n\t\t{\"FieldNode.Pos\", Field, 1, \"\"},\n\t\t{\"IdentifierNode\", Type, 0, \"\"},\n\t\t{\"IdentifierNode.Ident\", Field, 0, \"\"},\n\t\t{\"IdentifierNode.NodeType\", Field, 0, \"\"},\n\t\t{\"IdentifierNode.Pos\", Field, 1, \"\"},\n\t\t{\"IfNode\", Type, 0, \"\"},\n\t\t{\"IfNode.BranchNode\", Field, 0, \"\"},\n\t\t{\"IsEmptyTree\", Func, 0, \"func(n Node) bool\"},\n\t\t{\"ListNode\", Type, 0, \"\"},\n\t\t{\"ListNode.NodeType\", Field, 0, \"\"},\n\t\t{\"ListNode.Nodes\", Field, 0, \"\"},\n\t\t{\"ListNode.Pos\", Field, 1, \"\"},\n\t\t{\"Mode\", Type, 16, \"\"},\n\t\t{\"New\", Func, 0, \"func(name string, funcs ...map[string]any) *Tree\"},\n\t\t{\"NewIdentifier\", Func, 0, \"func(ident string) *IdentifierNode\"},\n\t\t{\"NilNode\", Type, 1, \"\"},\n\t\t{\"NilNode.NodeType\", Field, 4, \"\"},\n\t\t{\"NilNode.Pos\", Field, 1, \"\"},\n\t\t{\"Node\", Type, 0, \"\"},\n\t\t{\"NodeAction\", Const, 0, \"\"},\n\t\t{\"NodeBool\", Const, 0, \"\"},\n\t\t{\"NodeBreak\", Const, 18, \"\"},\n\t\t{\"NodeChain\", Const, 1, \"\"},\n\t\t{\"NodeCommand\", Const, 0, \"\"},\n\t\t{\"NodeComment\", Const, 16, \"\"},\n\t\t{\"NodeContinue\", Const, 18, \"\"},\n\t\t{\"NodeDot\", Const, 0, \"\"},\n\t\t{\"NodeField\", Const, 0, \"\"},\n\t\t{\"NodeIdentifier\", Const, 0, \"\"},\n\t\t{\"NodeIf\", Const, 0, \"\"},\n\t\t{\"NodeList\", Const, 0, \"\"},\n\t\t{\"NodeNil\", Const, 1, \"\"},\n\t\t{\"NodeNumber\", Const, 0, \"\"},\n\t\t{\"NodePipe\", Const, 0, \"\"},\n\t\t{\"NodeRange\", Const, 0, \"\"},\n\t\t{\"NodeString\", Const, 0, \"\"},\n\t\t{\"NodeTemplate\", Const, 0, \"\"},\n\t\t{\"NodeText\", Const, 0, \"\"},\n\t\t{\"NodeType\", Type, 0, \"\"},\n\t\t{\"NodeVariable\", Const, 0, \"\"},\n\t\t{\"NodeWith\", Const, 0, \"\"},\n\t\t{\"NumberNode\", Type, 0, \"\"},\n\t\t{\"NumberNode.Complex128\", Field, 0, \"\"},\n\t\t{\"NumberNode.Float64\", Field, 0, \"\"},\n\t\t{\"NumberNode.Int64\", Field, 0, \"\"},\n\t\t{\"NumberNode.IsComplex\", Field, 0, \"\"},\n\t\t{\"NumberNode.IsFloat\", Field, 0, \"\"},\n\t\t{\"NumberNode.IsInt\", Field, 0, \"\"},\n\t\t{\"NumberNode.IsUint\", Field, 0, \"\"},\n\t\t{\"NumberNode.NodeType\", Field, 0, \"\"},\n\t\t{\"NumberNode.Pos\", Field, 1, \"\"},\n\t\t{\"NumberNode.Text\", Field, 0, \"\"},\n\t\t{\"NumberNode.Uint64\", Field, 0, \"\"},\n\t\t{\"Parse\", Func, 0, \"func(name string, text string, leftDelim string, rightDelim string, funcs ...map[string]any) (map[string]*Tree, error)\"},\n\t\t{\"ParseComments\", Const, 16, \"\"},\n\t\t{\"PipeNode\", Type, 0, \"\"},\n\t\t{\"PipeNode.Cmds\", Field, 0, \"\"},\n\t\t{\"PipeNode.Decl\", Field, 0, \"\"},\n\t\t{\"PipeNode.IsAssign\", Field, 11, \"\"},\n\t\t{\"PipeNode.Line\", Field, 0, \"\"},\n\t\t{\"PipeNode.NodeType\", Field, 0, \"\"},\n\t\t{\"PipeNode.Pos\", Field, 1, \"\"},\n\t\t{\"Pos\", Type, 1, \"\"},\n\t\t{\"RangeNode\", Type, 0, \"\"},\n\t\t{\"RangeNode.BranchNode\", Field, 0, \"\"},\n\t\t{\"SkipFuncCheck\", Const, 17, \"\"},\n\t\t{\"StringNode\", Type, 0, \"\"},\n\t\t{\"StringNode.NodeType\", Field, 0, \"\"},\n\t\t{\"StringNode.Pos\", Field, 1, \"\"},\n\t\t{\"StringNode.Quoted\", Field, 0, \"\"},\n\t\t{\"StringNode.Text\", Field, 0, \"\"},\n\t\t{\"TemplateNode\", Type, 0, \"\"},\n\t\t{\"TemplateNode.Line\", Field, 0, \"\"},\n\t\t{\"TemplateNode.Name\", Field, 0, \"\"},\n\t\t{\"TemplateNode.NodeType\", Field, 0, \"\"},\n\t\t{\"TemplateNode.Pipe\", Field, 0, \"\"},\n\t\t{\"TemplateNode.Pos\", Field, 1, \"\"},\n\t\t{\"TextNode\", Type, 0, \"\"},\n\t\t{\"TextNode.NodeType\", Field, 0, \"\"},\n\t\t{\"TextNode.Pos\", Field, 1, \"\"},\n\t\t{\"TextNode.Text\", Field, 0, \"\"},\n\t\t{\"Tree\", Type, 0, \"\"},\n\t\t{\"Tree.Mode\", Field, 16, \"\"},\n\t\t{\"Tree.Name\", Field, 0, \"\"},\n\t\t{\"Tree.ParseName\", Field, 1, \"\"},\n\t\t{\"Tree.Root\", Field, 0, \"\"},\n\t\t{\"VariableNode\", Type, 0, \"\"},\n\t\t{\"VariableNode.Ident\", Field, 0, \"\"},\n\t\t{\"VariableNode.NodeType\", Field, 0, \"\"},\n\t\t{\"VariableNode.Pos\", Field, 1, \"\"},\n\t\t{\"WithNode\", Type, 0, \"\"},\n\t\t{\"WithNode.BranchNode\", Field, 0, \"\"},\n\t},\n\t\"time\": {\n\t\t{\"(*Location).String\", Method, 0, \"\"},\n\t\t{\"(*ParseError).Error\", Method, 0, \"\"},\n\t\t{\"(*Ticker).Reset\", Method, 15, \"\"},\n\t\t{\"(*Ticker).Stop\", Method, 0, \"\"},\n\t\t{\"(*Time).GobDecode\", Method, 0, \"\"},\n\t\t{\"(*Time).UnmarshalBinary\", Method, 2, \"\"},\n\t\t{\"(*Time).UnmarshalJSON\", Method, 0, \"\"},\n\t\t{\"(*Time).UnmarshalText\", Method, 2, \"\"},\n\t\t{\"(*Timer).Reset\", Method, 1, \"\"},\n\t\t{\"(*Timer).Stop\", Method, 0, \"\"},\n\t\t{\"(Duration).Abs\", Method, 19, \"\"},\n\t\t{\"(Duration).Hours\", Method, 0, \"\"},\n\t\t{\"(Duration).Microseconds\", Method, 13, \"\"},\n\t\t{\"(Duration).Milliseconds\", Method, 13, \"\"},\n\t\t{\"(Duration).Minutes\", Method, 0, \"\"},\n\t\t{\"(Duration).Nanoseconds\", Method, 0, \"\"},\n\t\t{\"(Duration).Round\", Method, 9, \"\"},\n\t\t{\"(Duration).Seconds\", Method, 0, \"\"},\n\t\t{\"(Duration).String\", Method, 0, \"\"},\n\t\t{\"(Duration).Truncate\", Method, 9, \"\"},\n\t\t{\"(Month).String\", Method, 0, \"\"},\n\t\t{\"(Time).Add\", Method, 0, \"\"},\n\t\t{\"(Time).AddDate\", Method, 0, \"\"},\n\t\t{\"(Time).After\", Method, 0, \"\"},\n\t\t{\"(Time).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(Time).AppendFormat\", Method, 5, \"\"},\n\t\t{\"(Time).AppendText\", Method, 24, \"\"},\n\t\t{\"(Time).Before\", Method, 0, \"\"},\n\t\t{\"(Time).Clock\", Method, 0, \"\"},\n\t\t{\"(Time).Compare\", Method, 20, \"\"},\n\t\t{\"(Time).Date\", Method, 0, \"\"},\n\t\t{\"(Time).Day\", Method, 0, \"\"},\n\t\t{\"(Time).Equal\", Method, 0, \"\"},\n\t\t{\"(Time).Format\", Method, 0, \"\"},\n\t\t{\"(Time).GoString\", Method, 17, \"\"},\n\t\t{\"(Time).GobEncode\", Method, 0, \"\"},\n\t\t{\"(Time).Hour\", Method, 0, \"\"},\n\t\t{\"(Time).ISOWeek\", Method, 0, \"\"},\n\t\t{\"(Time).In\", Method, 0, \"\"},\n\t\t{\"(Time).IsDST\", Method, 17, \"\"},\n\t\t{\"(Time).IsZero\", Method, 0, \"\"},\n\t\t{\"(Time).Local\", Method, 0, \"\"},\n\t\t{\"(Time).Location\", Method, 0, \"\"},\n\t\t{\"(Time).MarshalBinary\", Method, 2, \"\"},\n\t\t{\"(Time).MarshalJSON\", Method, 0, \"\"},\n\t\t{\"(Time).MarshalText\", Method, 2, \"\"},\n\t\t{\"(Time).Minute\", Method, 0, \"\"},\n\t\t{\"(Time).Month\", Method, 0, \"\"},\n\t\t{\"(Time).Nanosecond\", Method, 0, \"\"},\n\t\t{\"(Time).Round\", Method, 1, \"\"},\n\t\t{\"(Time).Second\", Method, 0, \"\"},\n\t\t{\"(Time).String\", Method, 0, \"\"},\n\t\t{\"(Time).Sub\", Method, 0, \"\"},\n\t\t{\"(Time).Truncate\", Method, 1, \"\"},\n\t\t{\"(Time).UTC\", Method, 0, \"\"},\n\t\t{\"(Time).Unix\", Method, 0, \"\"},\n\t\t{\"(Time).UnixMicro\", Method, 17, \"\"},\n\t\t{\"(Time).UnixMilli\", Method, 17, \"\"},\n\t\t{\"(Time).UnixNano\", Method, 0, \"\"},\n\t\t{\"(Time).Weekday\", Method, 0, \"\"},\n\t\t{\"(Time).Year\", Method, 0, \"\"},\n\t\t{\"(Time).YearDay\", Method, 1, \"\"},\n\t\t{\"(Time).Zone\", Method, 0, \"\"},\n\t\t{\"(Time).ZoneBounds\", Method, 19, \"\"},\n\t\t{\"(Weekday).String\", Method, 0, \"\"},\n\t\t{\"ANSIC\", Const, 0, \"\"},\n\t\t{\"After\", Func, 0, \"func(d Duration) <-chan Time\"},\n\t\t{\"AfterFunc\", Func, 0, \"func(d Duration, f func()) *Timer\"},\n\t\t{\"April\", Const, 0, \"\"},\n\t\t{\"August\", Const, 0, \"\"},\n\t\t{\"Date\", Func, 0, \"func(year int, month Month, day int, hour int, min int, sec int, nsec int, loc *Location) Time\"},\n\t\t{\"DateOnly\", Const, 20, \"\"},\n\t\t{\"DateTime\", Const, 20, \"\"},\n\t\t{\"December\", Const, 0, \"\"},\n\t\t{\"Duration\", Type, 0, \"\"},\n\t\t{\"February\", Const, 0, \"\"},\n\t\t{\"FixedZone\", Func, 0, \"func(name string, offset int) *Location\"},\n\t\t{\"Friday\", Const, 0, \"\"},\n\t\t{\"Hour\", Const, 0, \"\"},\n\t\t{\"January\", Const, 0, \"\"},\n\t\t{\"July\", Const, 0, \"\"},\n\t\t{\"June\", Const, 0, \"\"},\n\t\t{\"Kitchen\", Const, 0, \"\"},\n\t\t{\"Layout\", Const, 17, \"\"},\n\t\t{\"LoadLocation\", Func, 0, \"func(name string) (*Location, error)\"},\n\t\t{\"LoadLocationFromTZData\", Func, 10, \"func(name string, data []byte) (*Location, error)\"},\n\t\t{\"Local\", Var, 0, \"\"},\n\t\t{\"Location\", Type, 0, \"\"},\n\t\t{\"March\", Const, 0, \"\"},\n\t\t{\"May\", Const, 0, \"\"},\n\t\t{\"Microsecond\", Const, 0, \"\"},\n\t\t{\"Millisecond\", Const, 0, \"\"},\n\t\t{\"Minute\", Const, 0, \"\"},\n\t\t{\"Monday\", Const, 0, \"\"},\n\t\t{\"Month\", Type, 0, \"\"},\n\t\t{\"Nanosecond\", Const, 0, \"\"},\n\t\t{\"NewTicker\", Func, 0, \"func(d Duration) *Ticker\"},\n\t\t{\"NewTimer\", Func, 0, \"func(d Duration) *Timer\"},\n\t\t{\"November\", Const, 0, \"\"},\n\t\t{\"Now\", Func, 0, \"func() Time\"},\n\t\t{\"October\", Const, 0, \"\"},\n\t\t{\"Parse\", Func, 0, \"func(layout string, value string) (Time, error)\"},\n\t\t{\"ParseDuration\", Func, 0, \"func(s string) (Duration, error)\"},\n\t\t{\"ParseError\", Type, 0, \"\"},\n\t\t{\"ParseError.Layout\", Field, 0, \"\"},\n\t\t{\"ParseError.LayoutElem\", Field, 0, \"\"},\n\t\t{\"ParseError.Message\", Field, 0, \"\"},\n\t\t{\"ParseError.Value\", Field, 0, \"\"},\n\t\t{\"ParseError.ValueElem\", Field, 0, \"\"},\n\t\t{\"ParseInLocation\", Func, 1, \"func(layout string, value string, loc *Location) (Time, error)\"},\n\t\t{\"RFC1123\", Const, 0, \"\"},\n\t\t{\"RFC1123Z\", Const, 0, \"\"},\n\t\t{\"RFC3339\", Const, 0, \"\"},\n\t\t{\"RFC3339Nano\", Const, 0, \"\"},\n\t\t{\"RFC822\", Const, 0, \"\"},\n\t\t{\"RFC822Z\", Const, 0, \"\"},\n\t\t{\"RFC850\", Const, 0, \"\"},\n\t\t{\"RubyDate\", Const, 0, \"\"},\n\t\t{\"Saturday\", Const, 0, \"\"},\n\t\t{\"Second\", Const, 0, \"\"},\n\t\t{\"September\", Const, 0, \"\"},\n\t\t{\"Since\", Func, 0, \"func(t Time) Duration\"},\n\t\t{\"Sleep\", Func, 0, \"func(d Duration)\"},\n\t\t{\"Stamp\", Const, 0, \"\"},\n\t\t{\"StampMicro\", Const, 0, \"\"},\n\t\t{\"StampMilli\", Const, 0, \"\"},\n\t\t{\"StampNano\", Const, 0, \"\"},\n\t\t{\"Sunday\", Const, 0, \"\"},\n\t\t{\"Thursday\", Const, 0, \"\"},\n\t\t{\"Tick\", Func, 0, \"func(d Duration) <-chan Time\"},\n\t\t{\"Ticker\", Type, 0, \"\"},\n\t\t{\"Ticker.C\", Field, 0, \"\"},\n\t\t{\"Time\", Type, 0, \"\"},\n\t\t{\"TimeOnly\", Const, 20, \"\"},\n\t\t{\"Timer\", Type, 0, \"\"},\n\t\t{\"Timer.C\", Field, 0, \"\"},\n\t\t{\"Tuesday\", Const, 0, \"\"},\n\t\t{\"UTC\", Var, 0, \"\"},\n\t\t{\"Unix\", Func, 0, \"func(sec int64, nsec int64) Time\"},\n\t\t{\"UnixDate\", Const, 0, \"\"},\n\t\t{\"UnixMicro\", Func, 17, \"func(usec int64) Time\"},\n\t\t{\"UnixMilli\", Func, 17, \"func(msec int64) Time\"},\n\t\t{\"Until\", Func, 8, \"func(t Time) Duration\"},\n\t\t{\"Wednesday\", Const, 0, \"\"},\n\t\t{\"Weekday\", Type, 0, \"\"},\n\t},\n\t\"unicode\": {\n\t\t{\"(SpecialCase).ToLower\", Method, 0, \"\"},\n\t\t{\"(SpecialCase).ToTitle\", Method, 0, \"\"},\n\t\t{\"(SpecialCase).ToUpper\", Method, 0, \"\"},\n\t\t{\"ASCII_Hex_Digit\", Var, 0, \"\"},\n\t\t{\"Adlam\", Var, 7, \"\"},\n\t\t{\"Ahom\", Var, 5, \"\"},\n\t\t{\"Anatolian_Hieroglyphs\", Var, 5, \"\"},\n\t\t{\"Arabic\", Var, 0, \"\"},\n\t\t{\"Armenian\", Var, 0, \"\"},\n\t\t{\"Avestan\", Var, 0, \"\"},\n\t\t{\"AzeriCase\", Var, 0, \"\"},\n\t\t{\"Balinese\", Var, 0, \"\"},\n\t\t{\"Bamum\", Var, 0, \"\"},\n\t\t{\"Bassa_Vah\", Var, 4, \"\"},\n\t\t{\"Batak\", Var, 0, \"\"},\n\t\t{\"Bengali\", Var, 0, \"\"},\n\t\t{\"Bhaiksuki\", Var, 7, \"\"},\n\t\t{\"Bidi_Control\", Var, 0, \"\"},\n\t\t{\"Bopomofo\", Var, 0, \"\"},\n\t\t{\"Brahmi\", Var, 0, \"\"},\n\t\t{\"Braille\", Var, 0, \"\"},\n\t\t{\"Buginese\", Var, 0, \"\"},\n\t\t{\"Buhid\", Var, 0, \"\"},\n\t\t{\"C\", Var, 0, \"\"},\n\t\t{\"Canadian_Aboriginal\", Var, 0, \"\"},\n\t\t{\"Carian\", Var, 0, \"\"},\n\t\t{\"CaseRange\", Type, 0, \"\"},\n\t\t{\"CaseRange.Delta\", Field, 0, \"\"},\n\t\t{\"CaseRange.Hi\", Field, 0, \"\"},\n\t\t{\"CaseRange.Lo\", Field, 0, \"\"},\n\t\t{\"CaseRanges\", Var, 0, \"\"},\n\t\t{\"Categories\", Var, 0, \"\"},\n\t\t{\"CategoryAliases\", Var, 25, \"\"},\n\t\t{\"Caucasian_Albanian\", Var, 4, \"\"},\n\t\t{\"Cc\", Var, 0, \"\"},\n\t\t{\"Cf\", Var, 0, \"\"},\n\t\t{\"Chakma\", Var, 1, \"\"},\n\t\t{\"Cham\", Var, 0, \"\"},\n\t\t{\"Cherokee\", Var, 0, \"\"},\n\t\t{\"Chorasmian\", Var, 16, \"\"},\n\t\t{\"Cn\", Var, 25, \"\"},\n\t\t{\"Co\", Var, 0, \"\"},\n\t\t{\"Common\", Var, 0, \"\"},\n\t\t{\"Coptic\", Var, 0, \"\"},\n\t\t{\"Cs\", Var, 0, \"\"},\n\t\t{\"Cuneiform\", Var, 0, \"\"},\n\t\t{\"Cypriot\", Var, 0, \"\"},\n\t\t{\"Cypro_Minoan\", Var, 21, \"\"},\n\t\t{\"Cyrillic\", Var, 0, \"\"},\n\t\t{\"Dash\", Var, 0, \"\"},\n\t\t{\"Deprecated\", Var, 0, \"\"},\n\t\t{\"Deseret\", Var, 0, \"\"},\n\t\t{\"Devanagari\", Var, 0, \"\"},\n\t\t{\"Diacritic\", Var, 0, \"\"},\n\t\t{\"Digit\", Var, 0, \"\"},\n\t\t{\"Dives_Akuru\", Var, 16, \"\"},\n\t\t{\"Dogra\", Var, 13, \"\"},\n\t\t{\"Duployan\", Var, 4, \"\"},\n\t\t{\"Egyptian_Hieroglyphs\", Var, 0, \"\"},\n\t\t{\"Elbasan\", Var, 4, \"\"},\n\t\t{\"Elymaic\", Var, 14, \"\"},\n\t\t{\"Ethiopic\", Var, 0, \"\"},\n\t\t{\"Extender\", Var, 0, \"\"},\n\t\t{\"FoldCategory\", Var, 0, \"\"},\n\t\t{\"FoldScript\", Var, 0, \"\"},\n\t\t{\"Georgian\", Var, 0, \"\"},\n\t\t{\"Glagolitic\", Var, 0, \"\"},\n\t\t{\"Gothic\", Var, 0, \"\"},\n\t\t{\"Grantha\", Var, 4, \"\"},\n\t\t{\"GraphicRanges\", Var, 0, \"\"},\n\t\t{\"Greek\", Var, 0, \"\"},\n\t\t{\"Gujarati\", Var, 0, \"\"},\n\t\t{\"Gunjala_Gondi\", Var, 13, \"\"},\n\t\t{\"Gurmukhi\", Var, 0, \"\"},\n\t\t{\"Han\", Var, 0, \"\"},\n\t\t{\"Hangul\", Var, 0, \"\"},\n\t\t{\"Hanifi_Rohingya\", Var, 13, \"\"},\n\t\t{\"Hanunoo\", Var, 0, \"\"},\n\t\t{\"Hatran\", Var, 5, \"\"},\n\t\t{\"Hebrew\", Var, 0, \"\"},\n\t\t{\"Hex_Digit\", Var, 0, \"\"},\n\t\t{\"Hiragana\", Var, 0, \"\"},\n\t\t{\"Hyphen\", Var, 0, \"\"},\n\t\t{\"IDS_Binary_Operator\", Var, 0, \"\"},\n\t\t{\"IDS_Trinary_Operator\", Var, 0, \"\"},\n\t\t{\"Ideographic\", Var, 0, \"\"},\n\t\t{\"Imperial_Aramaic\", Var, 0, \"\"},\n\t\t{\"In\", Func, 2, \"func(r rune, ranges ...*RangeTable) bool\"},\n\t\t{\"Inherited\", Var, 0, \"\"},\n\t\t{\"Inscriptional_Pahlavi\", Var, 0, \"\"},\n\t\t{\"Inscriptional_Parthian\", Var, 0, \"\"},\n\t\t{\"Is\", Func, 0, \"func(rangeTab *RangeTable, r rune) bool\"},\n\t\t{\"IsControl\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsDigit\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsGraphic\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsLetter\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsLower\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsMark\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsNumber\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsOneOf\", Func, 0, \"func(ranges []*RangeTable, r rune) bool\"},\n\t\t{\"IsPrint\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsPunct\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsSpace\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsSymbol\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsTitle\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsUpper\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"Javanese\", Var, 0, \"\"},\n\t\t{\"Join_Control\", Var, 0, \"\"},\n\t\t{\"Kaithi\", Var, 0, \"\"},\n\t\t{\"Kannada\", Var, 0, \"\"},\n\t\t{\"Katakana\", Var, 0, \"\"},\n\t\t{\"Kawi\", Var, 21, \"\"},\n\t\t{\"Kayah_Li\", Var, 0, \"\"},\n\t\t{\"Kharoshthi\", Var, 0, \"\"},\n\t\t{\"Khitan_Small_Script\", Var, 16, \"\"},\n\t\t{\"Khmer\", Var, 0, \"\"},\n\t\t{\"Khojki\", Var, 4, \"\"},\n\t\t{\"Khudawadi\", Var, 4, \"\"},\n\t\t{\"L\", Var, 0, \"\"},\n\t\t{\"LC\", Var, 25, \"\"},\n\t\t{\"Lao\", Var, 0, \"\"},\n\t\t{\"Latin\", Var, 0, \"\"},\n\t\t{\"Lepcha\", Var, 0, \"\"},\n\t\t{\"Letter\", Var, 0, \"\"},\n\t\t{\"Limbu\", Var, 0, \"\"},\n\t\t{\"Linear_A\", Var, 4, \"\"},\n\t\t{\"Linear_B\", Var, 0, \"\"},\n\t\t{\"Lisu\", Var, 0, \"\"},\n\t\t{\"Ll\", Var, 0, \"\"},\n\t\t{\"Lm\", Var, 0, \"\"},\n\t\t{\"Lo\", Var, 0, \"\"},\n\t\t{\"Logical_Order_Exception\", Var, 0, \"\"},\n\t\t{\"Lower\", Var, 0, \"\"},\n\t\t{\"LowerCase\", Const, 0, \"\"},\n\t\t{\"Lt\", Var, 0, \"\"},\n\t\t{\"Lu\", Var, 0, \"\"},\n\t\t{\"Lycian\", Var, 0, \"\"},\n\t\t{\"Lydian\", Var, 0, \"\"},\n\t\t{\"M\", Var, 0, \"\"},\n\t\t{\"Mahajani\", Var, 4, \"\"},\n\t\t{\"Makasar\", Var, 13, \"\"},\n\t\t{\"Malayalam\", Var, 0, \"\"},\n\t\t{\"Mandaic\", Var, 0, \"\"},\n\t\t{\"Manichaean\", Var, 4, \"\"},\n\t\t{\"Marchen\", Var, 7, \"\"},\n\t\t{\"Mark\", Var, 0, \"\"},\n\t\t{\"Masaram_Gondi\", Var, 10, \"\"},\n\t\t{\"MaxASCII\", Const, 0, \"\"},\n\t\t{\"MaxCase\", Const, 0, \"\"},\n\t\t{\"MaxLatin1\", Const, 0, \"\"},\n\t\t{\"MaxRune\", Const, 0, \"\"},\n\t\t{\"Mc\", Var, 0, \"\"},\n\t\t{\"Me\", Var, 0, \"\"},\n\t\t{\"Medefaidrin\", Var, 13, \"\"},\n\t\t{\"Meetei_Mayek\", Var, 0, \"\"},\n\t\t{\"Mende_Kikakui\", Var, 4, \"\"},\n\t\t{\"Meroitic_Cursive\", Var, 1, \"\"},\n\t\t{\"Meroitic_Hieroglyphs\", Var, 1, \"\"},\n\t\t{\"Miao\", Var, 1, \"\"},\n\t\t{\"Mn\", Var, 0, \"\"},\n\t\t{\"Modi\", Var, 4, \"\"},\n\t\t{\"Mongolian\", Var, 0, \"\"},\n\t\t{\"Mro\", Var, 4, \"\"},\n\t\t{\"Multani\", Var, 5, \"\"},\n\t\t{\"Myanmar\", Var, 0, \"\"},\n\t\t{\"N\", Var, 0, \"\"},\n\t\t{\"Nabataean\", Var, 4, \"\"},\n\t\t{\"Nag_Mundari\", Var, 21, \"\"},\n\t\t{\"Nandinagari\", Var, 14, \"\"},\n\t\t{\"Nd\", Var, 0, \"\"},\n\t\t{\"New_Tai_Lue\", Var, 0, \"\"},\n\t\t{\"Newa\", Var, 7, \"\"},\n\t\t{\"Nko\", Var, 0, \"\"},\n\t\t{\"Nl\", Var, 0, \"\"},\n\t\t{\"No\", Var, 0, \"\"},\n\t\t{\"Noncharacter_Code_Point\", Var, 0, \"\"},\n\t\t{\"Number\", Var, 0, \"\"},\n\t\t{\"Nushu\", Var, 10, \"\"},\n\t\t{\"Nyiakeng_Puachue_Hmong\", Var, 14, \"\"},\n\t\t{\"Ogham\", Var, 0, \"\"},\n\t\t{\"Ol_Chiki\", Var, 0, \"\"},\n\t\t{\"Old_Hungarian\", Var, 5, \"\"},\n\t\t{\"Old_Italic\", Var, 0, \"\"},\n\t\t{\"Old_North_Arabian\", Var, 4, \"\"},\n\t\t{\"Old_Permic\", Var, 4, \"\"},\n\t\t{\"Old_Persian\", Var, 0, \"\"},\n\t\t{\"Old_Sogdian\", Var, 13, \"\"},\n\t\t{\"Old_South_Arabian\", Var, 0, \"\"},\n\t\t{\"Old_Turkic\", Var, 0, \"\"},\n\t\t{\"Old_Uyghur\", Var, 21, \"\"},\n\t\t{\"Oriya\", Var, 0, \"\"},\n\t\t{\"Osage\", Var, 7, \"\"},\n\t\t{\"Osmanya\", Var, 0, \"\"},\n\t\t{\"Other\", Var, 0, \"\"},\n\t\t{\"Other_Alphabetic\", Var, 0, \"\"},\n\t\t{\"Other_Default_Ignorable_Code_Point\", Var, 0, \"\"},\n\t\t{\"Other_Grapheme_Extend\", Var, 0, \"\"},\n\t\t{\"Other_ID_Continue\", Var, 0, \"\"},\n\t\t{\"Other_ID_Start\", Var, 0, \"\"},\n\t\t{\"Other_Lowercase\", Var, 0, \"\"},\n\t\t{\"Other_Math\", Var, 0, \"\"},\n\t\t{\"Other_Uppercase\", Var, 0, \"\"},\n\t\t{\"P\", Var, 0, \"\"},\n\t\t{\"Pahawh_Hmong\", Var, 4, \"\"},\n\t\t{\"Palmyrene\", Var, 4, \"\"},\n\t\t{\"Pattern_Syntax\", Var, 0, \"\"},\n\t\t{\"Pattern_White_Space\", Var, 0, \"\"},\n\t\t{\"Pau_Cin_Hau\", Var, 4, \"\"},\n\t\t{\"Pc\", Var, 0, \"\"},\n\t\t{\"Pd\", Var, 0, \"\"},\n\t\t{\"Pe\", Var, 0, \"\"},\n\t\t{\"Pf\", Var, 0, \"\"},\n\t\t{\"Phags_Pa\", Var, 0, \"\"},\n\t\t{\"Phoenician\", Var, 0, \"\"},\n\t\t{\"Pi\", Var, 0, \"\"},\n\t\t{\"Po\", Var, 0, \"\"},\n\t\t{\"Prepended_Concatenation_Mark\", Var, 7, \"\"},\n\t\t{\"PrintRanges\", Var, 0, \"\"},\n\t\t{\"Properties\", Var, 0, \"\"},\n\t\t{\"Ps\", Var, 0, \"\"},\n\t\t{\"Psalter_Pahlavi\", Var, 4, \"\"},\n\t\t{\"Punct\", Var, 0, \"\"},\n\t\t{\"Quotation_Mark\", Var, 0, \"\"},\n\t\t{\"Radical\", Var, 0, \"\"},\n\t\t{\"Range16\", Type, 0, \"\"},\n\t\t{\"Range16.Hi\", Field, 0, \"\"},\n\t\t{\"Range16.Lo\", Field, 0, \"\"},\n\t\t{\"Range16.Stride\", Field, 0, \"\"},\n\t\t{\"Range32\", Type, 0, \"\"},\n\t\t{\"Range32.Hi\", Field, 0, \"\"},\n\t\t{\"Range32.Lo\", Field, 0, \"\"},\n\t\t{\"Range32.Stride\", Field, 0, \"\"},\n\t\t{\"RangeTable\", Type, 0, \"\"},\n\t\t{\"RangeTable.LatinOffset\", Field, 1, \"\"},\n\t\t{\"RangeTable.R16\", Field, 0, \"\"},\n\t\t{\"RangeTable.R32\", Field, 0, \"\"},\n\t\t{\"Regional_Indicator\", Var, 10, \"\"},\n\t\t{\"Rejang\", Var, 0, \"\"},\n\t\t{\"ReplacementChar\", Const, 0, \"\"},\n\t\t{\"Runic\", Var, 0, \"\"},\n\t\t{\"S\", Var, 0, \"\"},\n\t\t{\"STerm\", Var, 0, \"\"},\n\t\t{\"Samaritan\", Var, 0, \"\"},\n\t\t{\"Saurashtra\", Var, 0, \"\"},\n\t\t{\"Sc\", Var, 0, \"\"},\n\t\t{\"Scripts\", Var, 0, \"\"},\n\t\t{\"Sentence_Terminal\", Var, 7, \"\"},\n\t\t{\"Sharada\", Var, 1, \"\"},\n\t\t{\"Shavian\", Var, 0, \"\"},\n\t\t{\"Siddham\", Var, 4, \"\"},\n\t\t{\"SignWriting\", Var, 5, \"\"},\n\t\t{\"SimpleFold\", Func, 0, \"func(r rune) rune\"},\n\t\t{\"Sinhala\", Var, 0, \"\"},\n\t\t{\"Sk\", Var, 0, \"\"},\n\t\t{\"Sm\", Var, 0, \"\"},\n\t\t{\"So\", Var, 0, \"\"},\n\t\t{\"Soft_Dotted\", Var, 0, \"\"},\n\t\t{\"Sogdian\", Var, 13, \"\"},\n\t\t{\"Sora_Sompeng\", Var, 1, \"\"},\n\t\t{\"Soyombo\", Var, 10, \"\"},\n\t\t{\"Space\", Var, 0, \"\"},\n\t\t{\"SpecialCase\", Type, 0, \"\"},\n\t\t{\"Sundanese\", Var, 0, \"\"},\n\t\t{\"Syloti_Nagri\", Var, 0, \"\"},\n\t\t{\"Symbol\", Var, 0, \"\"},\n\t\t{\"Syriac\", Var, 0, \"\"},\n\t\t{\"Tagalog\", Var, 0, \"\"},\n\t\t{\"Tagbanwa\", Var, 0, \"\"},\n\t\t{\"Tai_Le\", Var, 0, \"\"},\n\t\t{\"Tai_Tham\", Var, 0, \"\"},\n\t\t{\"Tai_Viet\", Var, 0, \"\"},\n\t\t{\"Takri\", Var, 1, \"\"},\n\t\t{\"Tamil\", Var, 0, \"\"},\n\t\t{\"Tangsa\", Var, 21, \"\"},\n\t\t{\"Tangut\", Var, 7, \"\"},\n\t\t{\"Telugu\", Var, 0, \"\"},\n\t\t{\"Terminal_Punctuation\", Var, 0, \"\"},\n\t\t{\"Thaana\", Var, 0, \"\"},\n\t\t{\"Thai\", Var, 0, \"\"},\n\t\t{\"Tibetan\", Var, 0, \"\"},\n\t\t{\"Tifinagh\", Var, 0, \"\"},\n\t\t{\"Tirhuta\", Var, 4, \"\"},\n\t\t{\"Title\", Var, 0, \"\"},\n\t\t{\"TitleCase\", Const, 0, \"\"},\n\t\t{\"To\", Func, 0, \"func(_case int, r rune) rune\"},\n\t\t{\"ToLower\", Func, 0, \"func(r rune) rune\"},\n\t\t{\"ToTitle\", Func, 0, \"func(r rune) rune\"},\n\t\t{\"ToUpper\", Func, 0, \"func(r rune) rune\"},\n\t\t{\"Toto\", Var, 21, \"\"},\n\t\t{\"TurkishCase\", Var, 0, \"\"},\n\t\t{\"Ugaritic\", Var, 0, \"\"},\n\t\t{\"Unified_Ideograph\", Var, 0, \"\"},\n\t\t{\"Upper\", Var, 0, \"\"},\n\t\t{\"UpperCase\", Const, 0, \"\"},\n\t\t{\"UpperLower\", Const, 0, \"\"},\n\t\t{\"Vai\", Var, 0, \"\"},\n\t\t{\"Variation_Selector\", Var, 0, \"\"},\n\t\t{\"Version\", Const, 0, \"\"},\n\t\t{\"Vithkuqi\", Var, 21, \"\"},\n\t\t{\"Wancho\", Var, 14, \"\"},\n\t\t{\"Warang_Citi\", Var, 4, \"\"},\n\t\t{\"White_Space\", Var, 0, \"\"},\n\t\t{\"Yezidi\", Var, 16, \"\"},\n\t\t{\"Yi\", Var, 0, \"\"},\n\t\t{\"Z\", Var, 0, \"\"},\n\t\t{\"Zanabazar_Square\", Var, 10, \"\"},\n\t\t{\"Zl\", Var, 0, \"\"},\n\t\t{\"Zp\", Var, 0, \"\"},\n\t\t{\"Zs\", Var, 0, \"\"},\n\t},\n\t\"unicode/utf16\": {\n\t\t{\"AppendRune\", Func, 20, \"func(a []uint16, r rune) []uint16\"},\n\t\t{\"Decode\", Func, 0, \"func(s []uint16) []rune\"},\n\t\t{\"DecodeRune\", Func, 0, \"func(r1 rune, r2 rune) rune\"},\n\t\t{\"Encode\", Func, 0, \"func(s []rune) []uint16\"},\n\t\t{\"EncodeRune\", Func, 0, \"func(r rune) (r1 rune, r2 rune)\"},\n\t\t{\"IsSurrogate\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"RuneLen\", Func, 23, \"func(r rune) int\"},\n\t},\n\t\"unicode/utf8\": {\n\t\t{\"AppendRune\", Func, 18, \"func(p []byte, r rune) []byte\"},\n\t\t{\"DecodeLastRune\", Func, 0, \"func(p []byte) (r rune, size int)\"},\n\t\t{\"DecodeLastRuneInString\", Func, 0, \"func(s string) (r rune, size int)\"},\n\t\t{\"DecodeRune\", Func, 0, \"func(p []byte) (r rune, size int)\"},\n\t\t{\"DecodeRuneInString\", Func, 0, \"func(s string) (r rune, size int)\"},\n\t\t{\"EncodeRune\", Func, 0, \"func(p []byte, r rune) int\"},\n\t\t{\"FullRune\", Func, 0, \"func(p []byte) bool\"},\n\t\t{\"FullRuneInString\", Func, 0, \"func(s string) bool\"},\n\t\t{\"MaxRune\", Const, 0, \"\"},\n\t\t{\"RuneCount\", Func, 0, \"func(p []byte) int\"},\n\t\t{\"RuneCountInString\", Func, 0, \"func(s string) (n int)\"},\n\t\t{\"RuneError\", Const, 0, \"\"},\n\t\t{\"RuneLen\", Func, 0, \"func(r rune) int\"},\n\t\t{\"RuneSelf\", Const, 0, \"\"},\n\t\t{\"RuneStart\", Func, 0, \"func(b byte) bool\"},\n\t\t{\"UTFMax\", Const, 0, \"\"},\n\t\t{\"Valid\", Func, 0, \"func(p []byte) bool\"},\n\t\t{\"ValidRune\", Func, 1, \"func(r rune) bool\"},\n\t\t{\"ValidString\", Func, 0, \"func(s string) bool\"},\n\t},\n\t\"unique\": {\n\t\t{\"(Handle).Value\", Method, 23, \"\"},\n\t\t{\"Handle\", Type, 23, \"\"},\n\t\t{\"Make\", Func, 23, \"func[T comparable](value T) Handle[T]\"},\n\t},\n\t\"unsafe\": {\n\t\t{\"Add\", Func, 0, \"\"},\n\t\t{\"Alignof\", Func, 0, \"\"},\n\t\t{\"Offsetof\", Func, 0, \"\"},\n\t\t{\"Pointer\", Type, 0, \"\"},\n\t\t{\"Sizeof\", Func, 0, \"\"},\n\t\t{\"Slice\", Func, 0, \"\"},\n\t\t{\"SliceData\", Func, 0, \"\"},\n\t\t{\"String\", Func, 0, \"\"},\n\t\t{\"StringData\", Func, 0, \"\"},\n\t},\n\t\"weak\": {\n\t\t{\"(Pointer).Value\", Method, 24, \"\"},\n\t\t{\"Make\", Func, 24, \"func[T any](ptr *T) Pointer[T]\"},\n\t\t{\"Pointer\", Type, 24, \"\"},\n\t},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/tools/internal/stdlib/stdlib.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run generate.go\n\n// Package stdlib provides a table of all exported symbols in the\n// standard library, along with the version at which they first\n// appeared. It also provides the import graph of std packages.\npackage stdlib\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\ntype Symbol struct {\n\tName    string\n\tKind    Kind\n\tVersion Version // Go version that first included the symbol\n\t// Signature provides the type of a function (defined only for Kind=Func).\n\t// Imported types are denoted as pkg.T; pkg is not fully qualified.\n\t// TODO(adonovan): use an unambiguous encoding that is parseable.\n\t//\n\t// Example2:\n\t//    func[M ~map[K]V, K comparable, V any](m M) M\n\t//    func(fi fs.FileInfo, link string) (*Header, error)\n\tSignature string // if Kind == stdlib.Func\n}\n\n// A Kind indicates the kind of a symbol:\n// function, variable, constant, type, and so on.\ntype Kind int8\n\nconst (\n\tInvalid Kind = iota // Example name:\n\tType                // \"Buffer\"\n\tFunc                // \"Println\"\n\tVar                 // \"EOF\"\n\tConst               // \"Pi\"\n\tField               // \"Point.X\"\n\tMethod              // \"(*Buffer).Grow\" or \"(Reader).Read\"\n)\n\nfunc (kind Kind) String() string {\n\treturn [...]string{\n\t\tInvalid: \"invalid\",\n\t\tType:    \"type\",\n\t\tFunc:    \"func\",\n\t\tVar:     \"var\",\n\t\tConst:   \"const\",\n\t\tField:   \"field\",\n\t\tMethod:  \"method\",\n\t}[kind]\n}\n\n// A Version represents a version of Go of the form \"go1.%d\".\ntype Version int8\n\n// String returns a version string of the form \"go1.23\", without allocating.\nfunc (v Version) String() string { return versions[v] }\n\nvar versions [30]string // (increase constant as needed)\n\nfunc init() {\n\tfor i := range versions {\n\t\tversions[i] = fmt.Sprintf(\"go1.%d\", i)\n\t}\n}\n\n// HasPackage reports whether the specified package path is part of\n// the standard library's public API.\nfunc HasPackage(path string) bool {\n\t_, ok := PackageSymbols[path]\n\treturn ok\n}\n\n// SplitField splits the field symbol name into type and field\n// components. It must be called only on Field symbols.\n//\n// Example: \"File.Package\" -> (\"File\", \"Package\")\nfunc (sym *Symbol) SplitField() (typename, name string) {\n\tif sym.Kind != Field {\n\t\tpanic(\"not a field\")\n\t}\n\ttypename, name, _ = strings.Cut(sym.Name, \".\")\n\treturn\n}\n\n// SplitMethod splits the method symbol name into pointer, receiver,\n// and method components. It must be called only on Method symbols.\n//\n// Example: \"(*Buffer).Grow\" -> (true, \"Buffer\", \"Grow\")\nfunc (sym *Symbol) SplitMethod() (ptr bool, recv, name string) {\n\tif sym.Kind != Method {\n\t\tpanic(\"not a method\")\n\t}\n\trecv, name, _ = strings.Cut(sym.Name, \".\")\n\trecv = recv[len(\"(\") : len(recv)-len(\")\")]\n\tptr = recv[0] == '*'\n\tif ptr {\n\t\trecv = recv[len(\"*\"):]\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/annotations/annotations.pb.go",
    "content": "// Copyright 2025 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v4.24.4\n// source: google/api/annotations.proto\n\npackage annotations\n\nimport (\n\treflect \"reflect\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nvar file_google_api_annotations_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.MethodOptions)(nil),\n\t\tExtensionType: (*HttpRule)(nil),\n\t\tField:         72295728,\n\t\tName:          \"google.api.http\",\n\t\tTag:           \"bytes,72295728,opt,name=http\",\n\t\tFilename:      \"google/api/annotations.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.MethodOptions.\nvar (\n\t// See `HttpRule`.\n\t//\n\t// optional google.api.HttpRule http = 72295728;\n\tE_Http = &file_google_api_annotations_proto_extTypes[0]\n)\n\nvar File_google_api_annotations_proto protoreflect.FileDescriptor\n\nvar file_google_api_annotations_proto_rawDesc = []byte{\n\t0x0a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e,\n\t0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x15, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x3a, 0x4b, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x12, 0x1e, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65,\n\t0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb0, 0xca, 0xbc, 0x22,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70,\n\t0x42, 0x6e, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,\n\t0x70, 0x69, 0x42, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50,\n\t0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,\n\t0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70,\n\t0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e,\n\t0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49,\n\t0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar file_google_api_annotations_proto_goTypes = []interface{}{\n\t(*descriptorpb.MethodOptions)(nil), // 0: google.protobuf.MethodOptions\n\t(*HttpRule)(nil),                   // 1: google.api.HttpRule\n}\nvar file_google_api_annotations_proto_depIdxs = []int32{\n\t0, // 0: google.api.http:extendee -> google.protobuf.MethodOptions\n\t1, // 1: google.api.http:type_name -> google.api.HttpRule\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t1, // [1:2] is the sub-list for extension type_name\n\t0, // [0:1] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_annotations_proto_init() }\nfunc file_google_api_annotations_proto_init() {\n\tif File_google_api_annotations_proto != nil {\n\t\treturn\n\t}\n\tfile_google_api_http_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_annotations_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_annotations_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_annotations_proto_depIdxs,\n\t\tExtensionInfos:    file_google_api_annotations_proto_extTypes,\n\t}.Build()\n\tFile_google_api_annotations_proto = out.File\n\tfile_google_api_annotations_proto_rawDesc = nil\n\tfile_google_api_annotations_proto_goTypes = nil\n\tfile_google_api_annotations_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/annotations/client.pb.go",
    "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v4.24.4\n// source: google/api/client.proto\n\npackage annotations\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tapi \"google.golang.org/genproto/googleapis/api\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// The organization for which the client libraries are being published.\n// Affects the url where generated docs are published, etc.\ntype ClientLibraryOrganization int32\n\nconst (\n\t// Not useful.\n\tClientLibraryOrganization_CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED ClientLibraryOrganization = 0\n\t// Google Cloud Platform Org.\n\tClientLibraryOrganization_CLOUD ClientLibraryOrganization = 1\n\t// Ads (Advertising) Org.\n\tClientLibraryOrganization_ADS ClientLibraryOrganization = 2\n\t// Photos Org.\n\tClientLibraryOrganization_PHOTOS ClientLibraryOrganization = 3\n\t// Street View Org.\n\tClientLibraryOrganization_STREET_VIEW ClientLibraryOrganization = 4\n\t// Shopping Org.\n\tClientLibraryOrganization_SHOPPING ClientLibraryOrganization = 5\n\t// Geo Org.\n\tClientLibraryOrganization_GEO ClientLibraryOrganization = 6\n\t// Generative AI - https://developers.generativeai.google\n\tClientLibraryOrganization_GENERATIVE_AI ClientLibraryOrganization = 7\n)\n\n// Enum value maps for ClientLibraryOrganization.\nvar (\n\tClientLibraryOrganization_name = map[int32]string{\n\t\t0: \"CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED\",\n\t\t1: \"CLOUD\",\n\t\t2: \"ADS\",\n\t\t3: \"PHOTOS\",\n\t\t4: \"STREET_VIEW\",\n\t\t5: \"SHOPPING\",\n\t\t6: \"GEO\",\n\t\t7: \"GENERATIVE_AI\",\n\t}\n\tClientLibraryOrganization_value = map[string]int32{\n\t\t\"CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED\": 0,\n\t\t\"CLOUD\":         1,\n\t\t\"ADS\":           2,\n\t\t\"PHOTOS\":        3,\n\t\t\"STREET_VIEW\":   4,\n\t\t\"SHOPPING\":      5,\n\t\t\"GEO\":           6,\n\t\t\"GENERATIVE_AI\": 7,\n\t}\n)\n\nfunc (x ClientLibraryOrganization) Enum() *ClientLibraryOrganization {\n\tp := new(ClientLibraryOrganization)\n\t*p = x\n\treturn p\n}\n\nfunc (x ClientLibraryOrganization) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ClientLibraryOrganization) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_client_proto_enumTypes[0].Descriptor()\n}\n\nfunc (ClientLibraryOrganization) Type() protoreflect.EnumType {\n\treturn &file_google_api_client_proto_enumTypes[0]\n}\n\nfunc (x ClientLibraryOrganization) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ClientLibraryOrganization.Descriptor instead.\nfunc (ClientLibraryOrganization) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{0}\n}\n\n// To where should client libraries be published?\ntype ClientLibraryDestination int32\n\nconst (\n\t// Client libraries will neither be generated nor published to package\n\t// managers.\n\tClientLibraryDestination_CLIENT_LIBRARY_DESTINATION_UNSPECIFIED ClientLibraryDestination = 0\n\t// Generate the client library in a repo under github.com/googleapis,\n\t// but don't publish it to package managers.\n\tClientLibraryDestination_GITHUB ClientLibraryDestination = 10\n\t// Publish the library to package managers like nuget.org and npmjs.com.\n\tClientLibraryDestination_PACKAGE_MANAGER ClientLibraryDestination = 20\n)\n\n// Enum value maps for ClientLibraryDestination.\nvar (\n\tClientLibraryDestination_name = map[int32]string{\n\t\t0:  \"CLIENT_LIBRARY_DESTINATION_UNSPECIFIED\",\n\t\t10: \"GITHUB\",\n\t\t20: \"PACKAGE_MANAGER\",\n\t}\n\tClientLibraryDestination_value = map[string]int32{\n\t\t\"CLIENT_LIBRARY_DESTINATION_UNSPECIFIED\": 0,\n\t\t\"GITHUB\":                                 10,\n\t\t\"PACKAGE_MANAGER\":                        20,\n\t}\n)\n\nfunc (x ClientLibraryDestination) Enum() *ClientLibraryDestination {\n\tp := new(ClientLibraryDestination)\n\t*p = x\n\treturn p\n}\n\nfunc (x ClientLibraryDestination) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ClientLibraryDestination) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_client_proto_enumTypes[1].Descriptor()\n}\n\nfunc (ClientLibraryDestination) Type() protoreflect.EnumType {\n\treturn &file_google_api_client_proto_enumTypes[1]\n}\n\nfunc (x ClientLibraryDestination) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ClientLibraryDestination.Descriptor instead.\nfunc (ClientLibraryDestination) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{1}\n}\n\n// The behavior to take when the flow control limit is exceeded.\ntype FlowControlLimitExceededBehaviorProto int32\n\nconst (\n\t// Default behavior, system-defined.\n\tFlowControlLimitExceededBehaviorProto_UNSET_BEHAVIOR FlowControlLimitExceededBehaviorProto = 0\n\t// Stop operation, raise error.\n\tFlowControlLimitExceededBehaviorProto_THROW_EXCEPTION FlowControlLimitExceededBehaviorProto = 1\n\t// Pause operation until limit clears.\n\tFlowControlLimitExceededBehaviorProto_BLOCK FlowControlLimitExceededBehaviorProto = 2\n\t// Continue operation, disregard limit.\n\tFlowControlLimitExceededBehaviorProto_IGNORE FlowControlLimitExceededBehaviorProto = 3\n)\n\n// Enum value maps for FlowControlLimitExceededBehaviorProto.\nvar (\n\tFlowControlLimitExceededBehaviorProto_name = map[int32]string{\n\t\t0: \"UNSET_BEHAVIOR\",\n\t\t1: \"THROW_EXCEPTION\",\n\t\t2: \"BLOCK\",\n\t\t3: \"IGNORE\",\n\t}\n\tFlowControlLimitExceededBehaviorProto_value = map[string]int32{\n\t\t\"UNSET_BEHAVIOR\":  0,\n\t\t\"THROW_EXCEPTION\": 1,\n\t\t\"BLOCK\":           2,\n\t\t\"IGNORE\":          3,\n\t}\n)\n\nfunc (x FlowControlLimitExceededBehaviorProto) Enum() *FlowControlLimitExceededBehaviorProto {\n\tp := new(FlowControlLimitExceededBehaviorProto)\n\t*p = x\n\treturn p\n}\n\nfunc (x FlowControlLimitExceededBehaviorProto) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FlowControlLimitExceededBehaviorProto) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_client_proto_enumTypes[2].Descriptor()\n}\n\nfunc (FlowControlLimitExceededBehaviorProto) Type() protoreflect.EnumType {\n\treturn &file_google_api_client_proto_enumTypes[2]\n}\n\nfunc (x FlowControlLimitExceededBehaviorProto) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use FlowControlLimitExceededBehaviorProto.Descriptor instead.\nfunc (FlowControlLimitExceededBehaviorProto) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{2}\n}\n\n// Required information for every language.\ntype CommonLanguageSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Link to automatically generated reference documentation.  Example:\n\t// https://cloud.google.com/nodejs/docs/reference/asset/latest\n\t//\n\t// Deprecated: Do not use.\n\tReferenceDocsUri string `protobuf:\"bytes,1,opt,name=reference_docs_uri,json=referenceDocsUri,proto3\" json:\"reference_docs_uri,omitempty\"`\n\t// The destination where API teams want this client library to be published.\n\tDestinations []ClientLibraryDestination `protobuf:\"varint,2,rep,packed,name=destinations,proto3,enum=google.api.ClientLibraryDestination\" json:\"destinations,omitempty\"`\n\t// Configuration for which RPCs should be generated in the GAPIC client.\n\t//\n\t// Note: This field should not be used in most cases.\n\tSelectiveGapicGeneration *SelectiveGapicGeneration `protobuf:\"bytes,3,opt,name=selective_gapic_generation,json=selectiveGapicGeneration,proto3\" json:\"selective_gapic_generation,omitempty\"`\n}\n\nfunc (x *CommonLanguageSettings) Reset() {\n\t*x = CommonLanguageSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CommonLanguageSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CommonLanguageSettings) ProtoMessage() {}\n\nfunc (x *CommonLanguageSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CommonLanguageSettings.ProtoReflect.Descriptor instead.\nfunc (*CommonLanguageSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{0}\n}\n\n// Deprecated: Do not use.\nfunc (x *CommonLanguageSettings) GetReferenceDocsUri() string {\n\tif x != nil {\n\t\treturn x.ReferenceDocsUri\n\t}\n\treturn \"\"\n}\n\nfunc (x *CommonLanguageSettings) GetDestinations() []ClientLibraryDestination {\n\tif x != nil {\n\t\treturn x.Destinations\n\t}\n\treturn nil\n}\n\nfunc (x *CommonLanguageSettings) GetSelectiveGapicGeneration() *SelectiveGapicGeneration {\n\tif x != nil {\n\t\treturn x.SelectiveGapicGeneration\n\t}\n\treturn nil\n}\n\n// Details about how and where to publish client libraries.\ntype ClientLibrarySettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Version of the API to apply these settings to. This is the full protobuf\n\t// package for the API, ending in the version element.\n\t// Examples: \"google.cloud.speech.v1\" and \"google.spanner.admin.database.v1\".\n\tVersion string `protobuf:\"bytes,1,opt,name=version,proto3\" json:\"version,omitempty\"`\n\t// Launch stage of this version of the API.\n\tLaunchStage api.LaunchStage `protobuf:\"varint,2,opt,name=launch_stage,json=launchStage,proto3,enum=google.api.LaunchStage\" json:\"launch_stage,omitempty\"`\n\t// When using transport=rest, the client request will encode enums as\n\t// numbers rather than strings.\n\tRestNumericEnums bool `protobuf:\"varint,3,opt,name=rest_numeric_enums,json=restNumericEnums,proto3\" json:\"rest_numeric_enums,omitempty\"`\n\t// Settings for legacy Java features, supported in the Service YAML.\n\tJavaSettings *JavaSettings `protobuf:\"bytes,21,opt,name=java_settings,json=javaSettings,proto3\" json:\"java_settings,omitempty\"`\n\t// Settings for C++ client libraries.\n\tCppSettings *CppSettings `protobuf:\"bytes,22,opt,name=cpp_settings,json=cppSettings,proto3\" json:\"cpp_settings,omitempty\"`\n\t// Settings for PHP client libraries.\n\tPhpSettings *PhpSettings `protobuf:\"bytes,23,opt,name=php_settings,json=phpSettings,proto3\" json:\"php_settings,omitempty\"`\n\t// Settings for Python client libraries.\n\tPythonSettings *PythonSettings `protobuf:\"bytes,24,opt,name=python_settings,json=pythonSettings,proto3\" json:\"python_settings,omitempty\"`\n\t// Settings for Node client libraries.\n\tNodeSettings *NodeSettings `protobuf:\"bytes,25,opt,name=node_settings,json=nodeSettings,proto3\" json:\"node_settings,omitempty\"`\n\t// Settings for .NET client libraries.\n\tDotnetSettings *DotnetSettings `protobuf:\"bytes,26,opt,name=dotnet_settings,json=dotnetSettings,proto3\" json:\"dotnet_settings,omitempty\"`\n\t// Settings for Ruby client libraries.\n\tRubySettings *RubySettings `protobuf:\"bytes,27,opt,name=ruby_settings,json=rubySettings,proto3\" json:\"ruby_settings,omitempty\"`\n\t// Settings for Go client libraries.\n\tGoSettings *GoSettings `protobuf:\"bytes,28,opt,name=go_settings,json=goSettings,proto3\" json:\"go_settings,omitempty\"`\n}\n\nfunc (x *ClientLibrarySettings) Reset() {\n\t*x = ClientLibrarySettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ClientLibrarySettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ClientLibrarySettings) ProtoMessage() {}\n\nfunc (x *ClientLibrarySettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ClientLibrarySettings.ProtoReflect.Descriptor instead.\nfunc (*ClientLibrarySettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ClientLibrarySettings) GetVersion() string {\n\tif x != nil {\n\t\treturn x.Version\n\t}\n\treturn \"\"\n}\n\nfunc (x *ClientLibrarySettings) GetLaunchStage() api.LaunchStage {\n\tif x != nil {\n\t\treturn x.LaunchStage\n\t}\n\treturn api.LaunchStage_LAUNCH_STAGE_UNSPECIFIED\n}\n\nfunc (x *ClientLibrarySettings) GetRestNumericEnums() bool {\n\tif x != nil {\n\t\treturn x.RestNumericEnums\n\t}\n\treturn false\n}\n\nfunc (x *ClientLibrarySettings) GetJavaSettings() *JavaSettings {\n\tif x != nil {\n\t\treturn x.JavaSettings\n\t}\n\treturn nil\n}\n\nfunc (x *ClientLibrarySettings) GetCppSettings() *CppSettings {\n\tif x != nil {\n\t\treturn x.CppSettings\n\t}\n\treturn nil\n}\n\nfunc (x *ClientLibrarySettings) GetPhpSettings() *PhpSettings {\n\tif x != nil {\n\t\treturn x.PhpSettings\n\t}\n\treturn nil\n}\n\nfunc (x *ClientLibrarySettings) GetPythonSettings() *PythonSettings {\n\tif x != nil {\n\t\treturn x.PythonSettings\n\t}\n\treturn nil\n}\n\nfunc (x *ClientLibrarySettings) GetNodeSettings() *NodeSettings {\n\tif x != nil {\n\t\treturn x.NodeSettings\n\t}\n\treturn nil\n}\n\nfunc (x *ClientLibrarySettings) GetDotnetSettings() *DotnetSettings {\n\tif x != nil {\n\t\treturn x.DotnetSettings\n\t}\n\treturn nil\n}\n\nfunc (x *ClientLibrarySettings) GetRubySettings() *RubySettings {\n\tif x != nil {\n\t\treturn x.RubySettings\n\t}\n\treturn nil\n}\n\nfunc (x *ClientLibrarySettings) GetGoSettings() *GoSettings {\n\tif x != nil {\n\t\treturn x.GoSettings\n\t}\n\treturn nil\n}\n\n// This message configures the settings for publishing [Google Cloud Client\n// libraries](https://cloud.google.com/apis/docs/cloud-client-libraries)\n// generated from the service config.\ntype Publishing struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// A list of API method settings, e.g. the behavior for methods that use the\n\t// long-running operation pattern.\n\tMethodSettings []*MethodSettings `protobuf:\"bytes,2,rep,name=method_settings,json=methodSettings,proto3\" json:\"method_settings,omitempty\"`\n\t// Link to a *public* URI where users can report issues.  Example:\n\t// https://issuetracker.google.com/issues/new?component=190865&template=1161103\n\tNewIssueUri string `protobuf:\"bytes,101,opt,name=new_issue_uri,json=newIssueUri,proto3\" json:\"new_issue_uri,omitempty\"`\n\t// Link to product home page.  Example:\n\t// https://cloud.google.com/asset-inventory/docs/overview\n\tDocumentationUri string `protobuf:\"bytes,102,opt,name=documentation_uri,json=documentationUri,proto3\" json:\"documentation_uri,omitempty\"`\n\t// Used as a tracking tag when collecting data about the APIs developer\n\t// relations artifacts like docs, packages delivered to package managers,\n\t// etc.  Example: \"speech\".\n\tApiShortName string `protobuf:\"bytes,103,opt,name=api_short_name,json=apiShortName,proto3\" json:\"api_short_name,omitempty\"`\n\t// GitHub label to apply to issues and pull requests opened for this API.\n\tGithubLabel string `protobuf:\"bytes,104,opt,name=github_label,json=githubLabel,proto3\" json:\"github_label,omitempty\"`\n\t// GitHub teams to be added to CODEOWNERS in the directory in GitHub\n\t// containing source code for the client libraries for this API.\n\tCodeownerGithubTeams []string `protobuf:\"bytes,105,rep,name=codeowner_github_teams,json=codeownerGithubTeams,proto3\" json:\"codeowner_github_teams,omitempty\"`\n\t// A prefix used in sample code when demarking regions to be included in\n\t// documentation.\n\tDocTagPrefix string `protobuf:\"bytes,106,opt,name=doc_tag_prefix,json=docTagPrefix,proto3\" json:\"doc_tag_prefix,omitempty\"`\n\t// For whom the client library is being published.\n\tOrganization ClientLibraryOrganization `protobuf:\"varint,107,opt,name=organization,proto3,enum=google.api.ClientLibraryOrganization\" json:\"organization,omitempty\"`\n\t// Client library settings.  If the same version string appears multiple\n\t// times in this list, then the last one wins.  Settings from earlier\n\t// settings with the same version string are discarded.\n\tLibrarySettings []*ClientLibrarySettings `protobuf:\"bytes,109,rep,name=library_settings,json=librarySettings,proto3\" json:\"library_settings,omitempty\"`\n\t// Optional link to proto reference documentation.  Example:\n\t// https://cloud.google.com/pubsub/lite/docs/reference/rpc\n\tProtoReferenceDocumentationUri string `protobuf:\"bytes,110,opt,name=proto_reference_documentation_uri,json=protoReferenceDocumentationUri,proto3\" json:\"proto_reference_documentation_uri,omitempty\"`\n\t// Optional link to REST reference documentation.  Example:\n\t// https://cloud.google.com/pubsub/lite/docs/reference/rest\n\tRestReferenceDocumentationUri string `protobuf:\"bytes,111,opt,name=rest_reference_documentation_uri,json=restReferenceDocumentationUri,proto3\" json:\"rest_reference_documentation_uri,omitempty\"`\n}\n\nfunc (x *Publishing) Reset() {\n\t*x = Publishing{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Publishing) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Publishing) ProtoMessage() {}\n\nfunc (x *Publishing) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Publishing.ProtoReflect.Descriptor instead.\nfunc (*Publishing) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *Publishing) GetMethodSettings() []*MethodSettings {\n\tif x != nil {\n\t\treturn x.MethodSettings\n\t}\n\treturn nil\n}\n\nfunc (x *Publishing) GetNewIssueUri() string {\n\tif x != nil {\n\t\treturn x.NewIssueUri\n\t}\n\treturn \"\"\n}\n\nfunc (x *Publishing) GetDocumentationUri() string {\n\tif x != nil {\n\t\treturn x.DocumentationUri\n\t}\n\treturn \"\"\n}\n\nfunc (x *Publishing) GetApiShortName() string {\n\tif x != nil {\n\t\treturn x.ApiShortName\n\t}\n\treturn \"\"\n}\n\nfunc (x *Publishing) GetGithubLabel() string {\n\tif x != nil {\n\t\treturn x.GithubLabel\n\t}\n\treturn \"\"\n}\n\nfunc (x *Publishing) GetCodeownerGithubTeams() []string {\n\tif x != nil {\n\t\treturn x.CodeownerGithubTeams\n\t}\n\treturn nil\n}\n\nfunc (x *Publishing) GetDocTagPrefix() string {\n\tif x != nil {\n\t\treturn x.DocTagPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *Publishing) GetOrganization() ClientLibraryOrganization {\n\tif x != nil {\n\t\treturn x.Organization\n\t}\n\treturn ClientLibraryOrganization_CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED\n}\n\nfunc (x *Publishing) GetLibrarySettings() []*ClientLibrarySettings {\n\tif x != nil {\n\t\treturn x.LibrarySettings\n\t}\n\treturn nil\n}\n\nfunc (x *Publishing) GetProtoReferenceDocumentationUri() string {\n\tif x != nil {\n\t\treturn x.ProtoReferenceDocumentationUri\n\t}\n\treturn \"\"\n}\n\nfunc (x *Publishing) GetRestReferenceDocumentationUri() string {\n\tif x != nil {\n\t\treturn x.RestReferenceDocumentationUri\n\t}\n\treturn \"\"\n}\n\n// Settings for Java client libraries.\ntype JavaSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The package name to use in Java. Clobbers the java_package option\n\t// set in the protobuf. This should be used **only** by APIs\n\t// who have already set the language_settings.java.package_name\" field\n\t// in gapic.yaml. API teams should use the protobuf java_package option\n\t// where possible.\n\t//\n\t// Example of a YAML configuration::\n\t//\n\t//\tpublishing:\n\t//\t  library_settings:\n\t//\t    java_settings:\n\t//\t      library_package: com.google.cloud.pubsub.v1\n\tLibraryPackage string `protobuf:\"bytes,1,opt,name=library_package,json=libraryPackage,proto3\" json:\"library_package,omitempty\"`\n\t// Configure the Java class name to use instead of the service's for its\n\t// corresponding generated GAPIC client. Keys are fully-qualified\n\t// service names as they appear in the protobuf (including the full\n\t// the language_settings.java.interface_names\" field in gapic.yaml. API\n\t// teams should otherwise use the service name as it appears in the\n\t// protobuf.\n\t//\n\t// Example of a YAML configuration::\n\t//\n\t//\tpublishing:\n\t//\t  java_settings:\n\t//\t    service_class_names:\n\t//\t      - google.pubsub.v1.Publisher: TopicAdmin\n\t//\t      - google.pubsub.v1.Subscriber: SubscriptionAdmin\n\tServiceClassNames map[string]string `protobuf:\"bytes,2,rep,name=service_class_names,json=serviceClassNames,proto3\" json:\"service_class_names,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,3,opt,name=common,proto3\" json:\"common,omitempty\"`\n}\n\nfunc (x *JavaSettings) Reset() {\n\t*x = JavaSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *JavaSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*JavaSettings) ProtoMessage() {}\n\nfunc (x *JavaSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use JavaSettings.ProtoReflect.Descriptor instead.\nfunc (*JavaSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *JavaSettings) GetLibraryPackage() string {\n\tif x != nil {\n\t\treturn x.LibraryPackage\n\t}\n\treturn \"\"\n}\n\nfunc (x *JavaSettings) GetServiceClassNames() map[string]string {\n\tif x != nil {\n\t\treturn x.ServiceClassNames\n\t}\n\treturn nil\n}\n\nfunc (x *JavaSettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\n// Settings for C++ client libraries.\ntype CppSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,1,opt,name=common,proto3\" json:\"common,omitempty\"`\n}\n\nfunc (x *CppSettings) Reset() {\n\t*x = CppSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CppSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CppSettings) ProtoMessage() {}\n\nfunc (x *CppSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CppSettings.ProtoReflect.Descriptor instead.\nfunc (*CppSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *CppSettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\n// Settings for Php client libraries.\ntype PhpSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,1,opt,name=common,proto3\" json:\"common,omitempty\"`\n\t// The package name to use in Php. Clobbers the php_namespace option\n\t// set in the protobuf. This should be used **only** by APIs\n\t// who have already set the language_settings.php.package_name\" field\n\t// in gapic.yaml. API teams should use the protobuf php_namespace option\n\t// where possible.\n\t//\n\t// Example of a YAML configuration::\n\t//\n\t//\tpublishing:\n\t//\t  library_settings:\n\t//\t    php_settings:\n\t//\t      library_package: Google\\Cloud\\PubSub\\V1\n\tLibraryPackage string `protobuf:\"bytes,2,opt,name=library_package,json=libraryPackage,proto3\" json:\"library_package,omitempty\"`\n}\n\nfunc (x *PhpSettings) Reset() {\n\t*x = PhpSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PhpSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PhpSettings) ProtoMessage() {}\n\nfunc (x *PhpSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use PhpSettings.ProtoReflect.Descriptor instead.\nfunc (*PhpSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *PhpSettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\nfunc (x *PhpSettings) GetLibraryPackage() string {\n\tif x != nil {\n\t\treturn x.LibraryPackage\n\t}\n\treturn \"\"\n}\n\n// Settings for Python client libraries.\ntype PythonSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,1,opt,name=common,proto3\" json:\"common,omitempty\"`\n\t// Experimental features to be included during client library generation.\n\tExperimentalFeatures *PythonSettings_ExperimentalFeatures `protobuf:\"bytes,2,opt,name=experimental_features,json=experimentalFeatures,proto3\" json:\"experimental_features,omitempty\"`\n}\n\nfunc (x *PythonSettings) Reset() {\n\t*x = PythonSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PythonSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PythonSettings) ProtoMessage() {}\n\nfunc (x *PythonSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use PythonSettings.ProtoReflect.Descriptor instead.\nfunc (*PythonSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *PythonSettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\nfunc (x *PythonSettings) GetExperimentalFeatures() *PythonSettings_ExperimentalFeatures {\n\tif x != nil {\n\t\treturn x.ExperimentalFeatures\n\t}\n\treturn nil\n}\n\n// Settings for Node client libraries.\ntype NodeSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,1,opt,name=common,proto3\" json:\"common,omitempty\"`\n}\n\nfunc (x *NodeSettings) Reset() {\n\t*x = NodeSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *NodeSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*NodeSettings) ProtoMessage() {}\n\nfunc (x *NodeSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use NodeSettings.ProtoReflect.Descriptor instead.\nfunc (*NodeSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *NodeSettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\n// Settings for Dotnet client libraries.\ntype DotnetSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,1,opt,name=common,proto3\" json:\"common,omitempty\"`\n\t// Map from original service names to renamed versions.\n\t// This is used when the default generated types\n\t// would cause a naming conflict. (Neither name is\n\t// fully-qualified.)\n\t// Example: Subscriber to SubscriberServiceApi.\n\tRenamedServices map[string]string `protobuf:\"bytes,2,rep,name=renamed_services,json=renamedServices,proto3\" json:\"renamed_services,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\t// Map from full resource types to the effective short name\n\t// for the resource. This is used when otherwise resource\n\t// named from different services would cause naming collisions.\n\t// Example entry:\n\t// \"datalabeling.googleapis.com/Dataset\": \"DataLabelingDataset\"\n\tRenamedResources map[string]string `protobuf:\"bytes,3,rep,name=renamed_resources,json=renamedResources,proto3\" json:\"renamed_resources,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\t// List of full resource types to ignore during generation.\n\t// This is typically used for API-specific Location resources,\n\t// which should be handled by the generator as if they were actually\n\t// the common Location resources.\n\t// Example entry: \"documentai.googleapis.com/Location\"\n\tIgnoredResources []string `protobuf:\"bytes,4,rep,name=ignored_resources,json=ignoredResources,proto3\" json:\"ignored_resources,omitempty\"`\n\t// Namespaces which must be aliased in snippets due to\n\t// a known (but non-generator-predictable) naming collision\n\tForcedNamespaceAliases []string `protobuf:\"bytes,5,rep,name=forced_namespace_aliases,json=forcedNamespaceAliases,proto3\" json:\"forced_namespace_aliases,omitempty\"`\n\t// Method signatures (in the form \"service.method(signature)\")\n\t// which are provided separately, so shouldn't be generated.\n\t// Snippets *calling* these methods are still generated, however.\n\tHandwrittenSignatures []string `protobuf:\"bytes,6,rep,name=handwritten_signatures,json=handwrittenSignatures,proto3\" json:\"handwritten_signatures,omitempty\"`\n}\n\nfunc (x *DotnetSettings) Reset() {\n\t*x = DotnetSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DotnetSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DotnetSettings) ProtoMessage() {}\n\nfunc (x *DotnetSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DotnetSettings.ProtoReflect.Descriptor instead.\nfunc (*DotnetSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *DotnetSettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\nfunc (x *DotnetSettings) GetRenamedServices() map[string]string {\n\tif x != nil {\n\t\treturn x.RenamedServices\n\t}\n\treturn nil\n}\n\nfunc (x *DotnetSettings) GetRenamedResources() map[string]string {\n\tif x != nil {\n\t\treturn x.RenamedResources\n\t}\n\treturn nil\n}\n\nfunc (x *DotnetSettings) GetIgnoredResources() []string {\n\tif x != nil {\n\t\treturn x.IgnoredResources\n\t}\n\treturn nil\n}\n\nfunc (x *DotnetSettings) GetForcedNamespaceAliases() []string {\n\tif x != nil {\n\t\treturn x.ForcedNamespaceAliases\n\t}\n\treturn nil\n}\n\nfunc (x *DotnetSettings) GetHandwrittenSignatures() []string {\n\tif x != nil {\n\t\treturn x.HandwrittenSignatures\n\t}\n\treturn nil\n}\n\n// Settings for Ruby client libraries.\ntype RubySettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,1,opt,name=common,proto3\" json:\"common,omitempty\"`\n}\n\nfunc (x *RubySettings) Reset() {\n\t*x = RubySettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RubySettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RubySettings) ProtoMessage() {}\n\nfunc (x *RubySettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RubySettings.ProtoReflect.Descriptor instead.\nfunc (*RubySettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *RubySettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\n// Settings for Go client libraries.\ntype GoSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,1,opt,name=common,proto3\" json:\"common,omitempty\"`\n\t// Map of service names to renamed services. Keys are the package relative\n\t// service names and values are the name to be used for the service client\n\t// and call options.\n\t//\n\t// Example:\n\t//\n\t//\tpublishing:\n\t//\t  go_settings:\n\t//\t    renamed_services:\n\t//\t      Publisher: TopicAdmin\n\tRenamedServices map[string]string `protobuf:\"bytes,2,rep,name=renamed_services,json=renamedServices,proto3\" json:\"renamed_services,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n}\n\nfunc (x *GoSettings) Reset() {\n\t*x = GoSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GoSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GoSettings) ProtoMessage() {}\n\nfunc (x *GoSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GoSettings.ProtoReflect.Descriptor instead.\nfunc (*GoSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *GoSettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\nfunc (x *GoSettings) GetRenamedServices() map[string]string {\n\tif x != nil {\n\t\treturn x.RenamedServices\n\t}\n\treturn nil\n}\n\n// Describes the generator configuration for a method.\ntype MethodSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The fully qualified name of the method, for which the options below apply.\n\t// This is used to find the method to apply the options.\n\t//\n\t// Example:\n\t//\n\t//\tpublishing:\n\t//\t  method_settings:\n\t//\t  - selector: google.storage.control.v2.StorageControl.CreateFolder\n\t//\t    # method settings for CreateFolder...\n\tSelector string `protobuf:\"bytes,1,opt,name=selector,proto3\" json:\"selector,omitempty\"`\n\t// Describes settings to use for long-running operations when generating\n\t// API methods for RPCs. Complements RPCs that use the annotations in\n\t// google/longrunning/operations.proto.\n\t//\n\t// Example of a YAML configuration::\n\t//\n\t//\tpublishing:\n\t//\t  method_settings:\n\t//\t  - selector: google.cloud.speech.v2.Speech.BatchRecognize\n\t//\t    long_running:\n\t//\t      initial_poll_delay: 60s # 1 minute\n\t//\t      poll_delay_multiplier: 1.5\n\t//\t      max_poll_delay: 360s # 6 minutes\n\t//\t      total_poll_timeout: 54000s # 90 minutes\n\tLongRunning *MethodSettings_LongRunning `protobuf:\"bytes,2,opt,name=long_running,json=longRunning,proto3\" json:\"long_running,omitempty\"`\n\t// List of top-level fields of the request message, that should be\n\t// automatically populated by the client libraries based on their\n\t// (google.api.field_info).format. Currently supported format: UUID4.\n\t//\n\t// Example of a YAML configuration:\n\t//\n\t//\tpublishing:\n\t//\t  method_settings:\n\t//\t  - selector: google.example.v1.ExampleService.CreateExample\n\t//\t    auto_populated_fields:\n\t//\t    - request_id\n\tAutoPopulatedFields []string `protobuf:\"bytes,3,rep,name=auto_populated_fields,json=autoPopulatedFields,proto3\" json:\"auto_populated_fields,omitempty\"`\n\t// Batching configuration for an API method in client libraries.\n\t//\n\t// Example of a YAML configuration:\n\t//\n\t//\tpublishing:\n\t//\t  method_settings:\n\t//\t  - selector: google.example.v1.ExampleService.BatchCreateExample\n\t//\t    batching:\n\t//\t      element_count_threshold: 1000\n\t//\t      request_byte_threshold: 100000000\n\t//\t      delay_threshold_millis: 10\n\tBatching *BatchingConfigProto `protobuf:\"bytes,4,opt,name=batching,proto3\" json:\"batching,omitempty\"`\n}\n\nfunc (x *MethodSettings) Reset() {\n\t*x = MethodSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MethodSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MethodSettings) ProtoMessage() {}\n\nfunc (x *MethodSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MethodSettings.ProtoReflect.Descriptor instead.\nfunc (*MethodSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *MethodSettings) GetSelector() string {\n\tif x != nil {\n\t\treturn x.Selector\n\t}\n\treturn \"\"\n}\n\nfunc (x *MethodSettings) GetLongRunning() *MethodSettings_LongRunning {\n\tif x != nil {\n\t\treturn x.LongRunning\n\t}\n\treturn nil\n}\n\nfunc (x *MethodSettings) GetAutoPopulatedFields() []string {\n\tif x != nil {\n\t\treturn x.AutoPopulatedFields\n\t}\n\treturn nil\n}\n\nfunc (x *MethodSettings) GetBatching() *BatchingConfigProto {\n\tif x != nil {\n\t\treturn x.Batching\n\t}\n\treturn nil\n}\n\n// This message is used to configure the generation of a subset of the RPCs in\n// a service for client libraries.\n//\n// Note: This feature should not be used in most cases.\ntype SelectiveGapicGeneration struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// An allowlist of the fully qualified names of RPCs that should be included\n\t// on public client surfaces.\n\tMethods []string `protobuf:\"bytes,1,rep,name=methods,proto3\" json:\"methods,omitempty\"`\n\t// Setting this to true indicates to the client generators that methods\n\t// that would be excluded from the generation should instead be generated\n\t// in a way that indicates these methods should not be consumed by\n\t// end users. How this is expressed is up to individual language\n\t// implementations to decide. Some examples may be: added annotations,\n\t// obfuscated identifiers, or other language idiomatic patterns.\n\tGenerateOmittedAsInternal bool `protobuf:\"varint,2,opt,name=generate_omitted_as_internal,json=generateOmittedAsInternal,proto3\" json:\"generate_omitted_as_internal,omitempty\"`\n}\n\nfunc (x *SelectiveGapicGeneration) Reset() {\n\t*x = SelectiveGapicGeneration{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[12]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SelectiveGapicGeneration) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SelectiveGapicGeneration) ProtoMessage() {}\n\nfunc (x *SelectiveGapicGeneration) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[12]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SelectiveGapicGeneration.ProtoReflect.Descriptor instead.\nfunc (*SelectiveGapicGeneration) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *SelectiveGapicGeneration) GetMethods() []string {\n\tif x != nil {\n\t\treturn x.Methods\n\t}\n\treturn nil\n}\n\nfunc (x *SelectiveGapicGeneration) GetGenerateOmittedAsInternal() bool {\n\tif x != nil {\n\t\treturn x.GenerateOmittedAsInternal\n\t}\n\treturn false\n}\n\n// `BatchingConfigProto` defines the batching configuration for an API method.\ntype BatchingConfigProto struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The thresholds which trigger a batched request to be sent.\n\tThresholds *BatchingSettingsProto `protobuf:\"bytes,1,opt,name=thresholds,proto3\" json:\"thresholds,omitempty\"`\n\t// The request and response fields used in batching.\n\tBatchDescriptor *BatchingDescriptorProto `protobuf:\"bytes,2,opt,name=batch_descriptor,json=batchDescriptor,proto3\" json:\"batch_descriptor,omitempty\"`\n}\n\nfunc (x *BatchingConfigProto) Reset() {\n\t*x = BatchingConfigProto{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[13]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *BatchingConfigProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*BatchingConfigProto) ProtoMessage() {}\n\nfunc (x *BatchingConfigProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[13]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use BatchingConfigProto.ProtoReflect.Descriptor instead.\nfunc (*BatchingConfigProto) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{13}\n}\n\nfunc (x *BatchingConfigProto) GetThresholds() *BatchingSettingsProto {\n\tif x != nil {\n\t\treturn x.Thresholds\n\t}\n\treturn nil\n}\n\nfunc (x *BatchingConfigProto) GetBatchDescriptor() *BatchingDescriptorProto {\n\tif x != nil {\n\t\treturn x.BatchDescriptor\n\t}\n\treturn nil\n}\n\n// `BatchingSettingsProto` specifies a set of batching thresholds, each of\n// which acts as a trigger to send a batch of messages as a request. At least\n// one threshold must be positive nonzero.\ntype BatchingSettingsProto struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The number of elements of a field collected into a batch which, if\n\t// exceeded, causes the batch to be sent.\n\tElementCountThreshold int32 `protobuf:\"varint,1,opt,name=element_count_threshold,json=elementCountThreshold,proto3\" json:\"element_count_threshold,omitempty\"`\n\t// The aggregated size of the batched field which, if exceeded, causes the\n\t// batch to be sent. This size is computed by aggregating the sizes of the\n\t// request field to be batched, not of the entire request message.\n\tRequestByteThreshold int64 `protobuf:\"varint,2,opt,name=request_byte_threshold,json=requestByteThreshold,proto3\" json:\"request_byte_threshold,omitempty\"`\n\t// The duration after which a batch should be sent, starting from the addition\n\t// of the first message to that batch.\n\tDelayThreshold *durationpb.Duration `protobuf:\"bytes,3,opt,name=delay_threshold,json=delayThreshold,proto3\" json:\"delay_threshold,omitempty\"`\n\t// The maximum number of elements collected in a batch that could be accepted\n\t// by server.\n\tElementCountLimit int32 `protobuf:\"varint,4,opt,name=element_count_limit,json=elementCountLimit,proto3\" json:\"element_count_limit,omitempty\"`\n\t// The maximum size of the request that could be accepted by server.\n\tRequestByteLimit int32 `protobuf:\"varint,5,opt,name=request_byte_limit,json=requestByteLimit,proto3\" json:\"request_byte_limit,omitempty\"`\n\t// The maximum number of elements allowed by flow control.\n\tFlowControlElementLimit int32 `protobuf:\"varint,6,opt,name=flow_control_element_limit,json=flowControlElementLimit,proto3\" json:\"flow_control_element_limit,omitempty\"`\n\t// The maximum size of data allowed by flow control.\n\tFlowControlByteLimit int32 `protobuf:\"varint,7,opt,name=flow_control_byte_limit,json=flowControlByteLimit,proto3\" json:\"flow_control_byte_limit,omitempty\"`\n\t// The behavior to take when the flow control limit is exceeded.\n\tFlowControlLimitExceededBehavior FlowControlLimitExceededBehaviorProto `protobuf:\"varint,8,opt,name=flow_control_limit_exceeded_behavior,json=flowControlLimitExceededBehavior,proto3,enum=google.api.FlowControlLimitExceededBehaviorProto\" json:\"flow_control_limit_exceeded_behavior,omitempty\"`\n}\n\nfunc (x *BatchingSettingsProto) Reset() {\n\t*x = BatchingSettingsProto{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[14]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *BatchingSettingsProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*BatchingSettingsProto) ProtoMessage() {}\n\nfunc (x *BatchingSettingsProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[14]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use BatchingSettingsProto.ProtoReflect.Descriptor instead.\nfunc (*BatchingSettingsProto) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{14}\n}\n\nfunc (x *BatchingSettingsProto) GetElementCountThreshold() int32 {\n\tif x != nil {\n\t\treturn x.ElementCountThreshold\n\t}\n\treturn 0\n}\n\nfunc (x *BatchingSettingsProto) GetRequestByteThreshold() int64 {\n\tif x != nil {\n\t\treturn x.RequestByteThreshold\n\t}\n\treturn 0\n}\n\nfunc (x *BatchingSettingsProto) GetDelayThreshold() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.DelayThreshold\n\t}\n\treturn nil\n}\n\nfunc (x *BatchingSettingsProto) GetElementCountLimit() int32 {\n\tif x != nil {\n\t\treturn x.ElementCountLimit\n\t}\n\treturn 0\n}\n\nfunc (x *BatchingSettingsProto) GetRequestByteLimit() int32 {\n\tif x != nil {\n\t\treturn x.RequestByteLimit\n\t}\n\treturn 0\n}\n\nfunc (x *BatchingSettingsProto) GetFlowControlElementLimit() int32 {\n\tif x != nil {\n\t\treturn x.FlowControlElementLimit\n\t}\n\treturn 0\n}\n\nfunc (x *BatchingSettingsProto) GetFlowControlByteLimit() int32 {\n\tif x != nil {\n\t\treturn x.FlowControlByteLimit\n\t}\n\treturn 0\n}\n\nfunc (x *BatchingSettingsProto) GetFlowControlLimitExceededBehavior() FlowControlLimitExceededBehaviorProto {\n\tif x != nil {\n\t\treturn x.FlowControlLimitExceededBehavior\n\t}\n\treturn FlowControlLimitExceededBehaviorProto_UNSET_BEHAVIOR\n}\n\n// `BatchingDescriptorProto` specifies the fields of the request message to be\n// used for batching, and, optionally, the fields of the response message to be\n// used for demultiplexing.\ntype BatchingDescriptorProto struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The repeated field in the request message to be aggregated by batching.\n\tBatchedField string `protobuf:\"bytes,1,opt,name=batched_field,json=batchedField,proto3\" json:\"batched_field,omitempty\"`\n\t// A list of the fields in the request message. Two requests will be batched\n\t// together only if the values of every field specified in\n\t// `request_discriminator_fields` is equal between the two requests.\n\tDiscriminatorFields []string `protobuf:\"bytes,2,rep,name=discriminator_fields,json=discriminatorFields,proto3\" json:\"discriminator_fields,omitempty\"`\n\t// Optional. When present, indicates the field in the response message to be\n\t// used to demultiplex the response into multiple response messages, in\n\t// correspondence with the multiple request messages originally batched\n\t// together.\n\tSubresponseField string `protobuf:\"bytes,3,opt,name=subresponse_field,json=subresponseField,proto3\" json:\"subresponse_field,omitempty\"`\n}\n\nfunc (x *BatchingDescriptorProto) Reset() {\n\t*x = BatchingDescriptorProto{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[15]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *BatchingDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*BatchingDescriptorProto) ProtoMessage() {}\n\nfunc (x *BatchingDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[15]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use BatchingDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*BatchingDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{15}\n}\n\nfunc (x *BatchingDescriptorProto) GetBatchedField() string {\n\tif x != nil {\n\t\treturn x.BatchedField\n\t}\n\treturn \"\"\n}\n\nfunc (x *BatchingDescriptorProto) GetDiscriminatorFields() []string {\n\tif x != nil {\n\t\treturn x.DiscriminatorFields\n\t}\n\treturn nil\n}\n\nfunc (x *BatchingDescriptorProto) GetSubresponseField() string {\n\tif x != nil {\n\t\treturn x.SubresponseField\n\t}\n\treturn \"\"\n}\n\n// Experimental features to be included during client library generation.\n// These fields will be deprecated once the feature graduates and is enabled\n// by default.\ntype PythonSettings_ExperimentalFeatures struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Enables generation of asynchronous REST clients if `rest` transport is\n\t// enabled. By default, asynchronous REST clients will not be generated.\n\t// This feature will be enabled by default 1 month after launching the\n\t// feature in preview packages.\n\tRestAsyncIoEnabled bool `protobuf:\"varint,1,opt,name=rest_async_io_enabled,json=restAsyncIoEnabled,proto3\" json:\"rest_async_io_enabled,omitempty\"`\n\t// Enables generation of protobuf code using new types that are more\n\t// Pythonic which are included in `protobuf>=5.29.x`. This feature will be\n\t// enabled by default 1 month after launching the feature in preview\n\t// packages.\n\tProtobufPythonicTypesEnabled bool `protobuf:\"varint,2,opt,name=protobuf_pythonic_types_enabled,json=protobufPythonicTypesEnabled,proto3\" json:\"protobuf_pythonic_types_enabled,omitempty\"`\n\t// Disables generation of an unversioned Python package for this client\n\t// library. This means that the module names will need to be versioned in\n\t// import statements. For example `import google.cloud.library_v2` instead\n\t// of `import google.cloud.library`.\n\tUnversionedPackageDisabled bool `protobuf:\"varint,3,opt,name=unversioned_package_disabled,json=unversionedPackageDisabled,proto3\" json:\"unversioned_package_disabled,omitempty\"`\n}\n\nfunc (x *PythonSettings_ExperimentalFeatures) Reset() {\n\t*x = PythonSettings_ExperimentalFeatures{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[17]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PythonSettings_ExperimentalFeatures) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PythonSettings_ExperimentalFeatures) ProtoMessage() {}\n\nfunc (x *PythonSettings_ExperimentalFeatures) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[17]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use PythonSettings_ExperimentalFeatures.ProtoReflect.Descriptor instead.\nfunc (*PythonSettings_ExperimentalFeatures) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{6, 0}\n}\n\nfunc (x *PythonSettings_ExperimentalFeatures) GetRestAsyncIoEnabled() bool {\n\tif x != nil {\n\t\treturn x.RestAsyncIoEnabled\n\t}\n\treturn false\n}\n\nfunc (x *PythonSettings_ExperimentalFeatures) GetProtobufPythonicTypesEnabled() bool {\n\tif x != nil {\n\t\treturn x.ProtobufPythonicTypesEnabled\n\t}\n\treturn false\n}\n\nfunc (x *PythonSettings_ExperimentalFeatures) GetUnversionedPackageDisabled() bool {\n\tif x != nil {\n\t\treturn x.UnversionedPackageDisabled\n\t}\n\treturn false\n}\n\n// Describes settings to use when generating API methods that use the\n// long-running operation pattern.\n// All default values below are from those used in the client library\n// generators (e.g.\n// [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)).\ntype MethodSettings_LongRunning struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Initial delay after which the first poll request will be made.\n\t// Default value: 5 seconds.\n\tInitialPollDelay *durationpb.Duration `protobuf:\"bytes,1,opt,name=initial_poll_delay,json=initialPollDelay,proto3\" json:\"initial_poll_delay,omitempty\"`\n\t// Multiplier to gradually increase delay between subsequent polls until it\n\t// reaches max_poll_delay.\n\t// Default value: 1.5.\n\tPollDelayMultiplier float32 `protobuf:\"fixed32,2,opt,name=poll_delay_multiplier,json=pollDelayMultiplier,proto3\" json:\"poll_delay_multiplier,omitempty\"`\n\t// Maximum time between two subsequent poll requests.\n\t// Default value: 45 seconds.\n\tMaxPollDelay *durationpb.Duration `protobuf:\"bytes,3,opt,name=max_poll_delay,json=maxPollDelay,proto3\" json:\"max_poll_delay,omitempty\"`\n\t// Total polling timeout.\n\t// Default value: 5 minutes.\n\tTotalPollTimeout *durationpb.Duration `protobuf:\"bytes,4,opt,name=total_poll_timeout,json=totalPollTimeout,proto3\" json:\"total_poll_timeout,omitempty\"`\n}\n\nfunc (x *MethodSettings_LongRunning) Reset() {\n\t*x = MethodSettings_LongRunning{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[21]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MethodSettings_LongRunning) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MethodSettings_LongRunning) ProtoMessage() {}\n\nfunc (x *MethodSettings_LongRunning) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[21]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MethodSettings_LongRunning.ProtoReflect.Descriptor instead.\nfunc (*MethodSettings_LongRunning) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{11, 0}\n}\n\nfunc (x *MethodSettings_LongRunning) GetInitialPollDelay() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.InitialPollDelay\n\t}\n\treturn nil\n}\n\nfunc (x *MethodSettings_LongRunning) GetPollDelayMultiplier() float32 {\n\tif x != nil {\n\t\treturn x.PollDelayMultiplier\n\t}\n\treturn 0\n}\n\nfunc (x *MethodSettings_LongRunning) GetMaxPollDelay() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.MaxPollDelay\n\t}\n\treturn nil\n}\n\nfunc (x *MethodSettings_LongRunning) GetTotalPollTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.TotalPollTimeout\n\t}\n\treturn nil\n}\n\nvar file_google_api_client_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.MethodOptions)(nil),\n\t\tExtensionType: ([]string)(nil),\n\t\tField:         1051,\n\t\tName:          \"google.api.method_signature\",\n\t\tTag:           \"bytes,1051,rep,name=method_signature\",\n\t\tFilename:      \"google/api/client.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.ServiceOptions)(nil),\n\t\tExtensionType: (*string)(nil),\n\t\tField:         1049,\n\t\tName:          \"google.api.default_host\",\n\t\tTag:           \"bytes,1049,opt,name=default_host\",\n\t\tFilename:      \"google/api/client.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.ServiceOptions)(nil),\n\t\tExtensionType: (*string)(nil),\n\t\tField:         1050,\n\t\tName:          \"google.api.oauth_scopes\",\n\t\tTag:           \"bytes,1050,opt,name=oauth_scopes\",\n\t\tFilename:      \"google/api/client.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.ServiceOptions)(nil),\n\t\tExtensionType: (*string)(nil),\n\t\tField:         525000001,\n\t\tName:          \"google.api.api_version\",\n\t\tTag:           \"bytes,525000001,opt,name=api_version\",\n\t\tFilename:      \"google/api/client.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.MethodOptions.\nvar (\n\t// A definition of a client library method signature.\n\t//\n\t// In client libraries, each proto RPC corresponds to one or more methods\n\t// which the end user is able to call, and calls the underlying RPC.\n\t// Normally, this method receives a single argument (a struct or instance\n\t// corresponding to the RPC request object). Defining this field will\n\t// add one or more overloads providing flattened or simpler method signatures\n\t// in some languages.\n\t//\n\t// The fields on the method signature are provided as a comma-separated\n\t// string.\n\t//\n\t// For example, the proto RPC and annotation:\n\t//\n\t//\trpc CreateSubscription(CreateSubscriptionRequest)\n\t//\t    returns (Subscription) {\n\t//\t  option (google.api.method_signature) = \"name,topic\";\n\t//\t}\n\t//\n\t// Would add the following Java overload (in addition to the method accepting\n\t// the request object):\n\t//\n\t//\tpublic final Subscription createSubscription(String name, String topic)\n\t//\n\t// The following backwards-compatibility guidelines apply:\n\t//\n\t//   - Adding this annotation to an unannotated method is backwards\n\t//     compatible.\n\t//   - Adding this annotation to a method which already has existing\n\t//     method signature annotations is backwards compatible if and only if\n\t//     the new method signature annotation is last in the sequence.\n\t//   - Modifying or removing an existing method signature annotation is\n\t//     a breaking change.\n\t//   - Re-ordering existing method signature annotations is a breaking\n\t//     change.\n\t//\n\t// repeated string method_signature = 1051;\n\tE_MethodSignature = &file_google_api_client_proto_extTypes[0]\n)\n\n// Extension fields to descriptorpb.ServiceOptions.\nvar (\n\t// The hostname for this service.\n\t// This should be specified with no prefix or protocol.\n\t//\n\t// Example:\n\t//\n\t//\tservice Foo {\n\t//\t  option (google.api.default_host) = \"foo.googleapi.com\";\n\t//\t  ...\n\t//\t}\n\t//\n\t// optional string default_host = 1049;\n\tE_DefaultHost = &file_google_api_client_proto_extTypes[1]\n\t// OAuth scopes needed for the client.\n\t//\n\t// Example:\n\t//\n\t//\tservice Foo {\n\t//\t  option (google.api.oauth_scopes) = \\\n\t//\t    \"https://www.googleapis.com/auth/cloud-platform\";\n\t//\t  ...\n\t//\t}\n\t//\n\t// If there is more than one scope, use a comma-separated string:\n\t//\n\t// Example:\n\t//\n\t//\tservice Foo {\n\t//\t  option (google.api.oauth_scopes) = \\\n\t//\t    \"https://www.googleapis.com/auth/cloud-platform,\"\n\t//\t    \"https://www.googleapis.com/auth/monitoring\";\n\t//\t  ...\n\t//\t}\n\t//\n\t// optional string oauth_scopes = 1050;\n\tE_OauthScopes = &file_google_api_client_proto_extTypes[2]\n\t// The API version of this service, which should be sent by version-aware\n\t// clients to the service. This allows services to abide by the schema and\n\t// behavior of the service at the time this API version was deployed.\n\t// The format of the API version must be treated as opaque by clients.\n\t// Services may use a format with an apparent structure, but clients must\n\t// not rely on this to determine components within an API version, or attempt\n\t// to construct other valid API versions. Note that this is for upcoming\n\t// functionality and may not be implemented for all services.\n\t//\n\t// Example:\n\t//\n\t//\tservice Foo {\n\t//\t  option (google.api.api_version) = \"v1_20230821_preview\";\n\t//\t}\n\t//\n\t// optional string api_version = 525000001;\n\tE_ApiVersion = &file_google_api_client_proto_extTypes[3]\n)\n\nvar File_google_api_client_proto protoreflect.FileDescriptor\n\nvar file_google_api_client_proto_rawDesc = []byte{\n\t0x0a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69,\n\t0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x1d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70,\n\t0x69, 0x2f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf8, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x6d, 0x6f,\n\t0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,\n\t0x73, 0x12, 0x30, 0x0a, 0x12, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x64,\n\t0x6f, 0x63, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18,\n\t0x01, 0x52, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x6f, 0x63, 0x73,\n\t0x55, 0x72, 0x69, 0x12, 0x48, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62,\n\t0x72, 0x61, 0x72, 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,\n\t0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x62, 0x0a,\n\t0x1a, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x61, 0x70, 0x69, 0x63,\n\t0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53,\n\t0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x47, 0x61, 0x70, 0x69, 0x63, 0x47, 0x65, 0x6e,\n\t0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69,\n\t0x76, 0x65, 0x47, 0x61, 0x70, 0x69, 0x63, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x22, 0x93, 0x05, 0x0a, 0x15, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62, 0x72,\n\t0x61, 0x72, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76,\n\t0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,\n\t0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x0c, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f,\n\t0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x53,\n\t0x74, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67,\n\t0x65, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69,\n\t0x63, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72,\n\t0x65, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x12,\n\t0x3d, 0x0a, 0x0d, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,\n\t0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x4a, 0x61, 0x76, 0x61, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,\n\t0x52, 0x0c, 0x6a, 0x61, 0x76, 0x61, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a,\n\t0x0a, 0x0c, 0x63, 0x70, 0x70, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x16,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x43, 0x70, 0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0b, 0x63,\n\t0x70, 0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x0c, 0x70, 0x68,\n\t0x70, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x68,\n\t0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0b, 0x70, 0x68, 0x70, 0x53, 0x65,\n\t0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e,\n\t0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x79, 0x74,\n\t0x68, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0e, 0x70, 0x79, 0x74,\n\t0x68, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3d, 0x0a, 0x0d, 0x6e,\n\t0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x19, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0c, 0x6e, 0x6f,\n\t0x64, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x64, 0x6f,\n\t0x74, 0x6e, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x1a, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x44, 0x6f, 0x74, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52,\n\t0x0e, 0x64, 0x6f, 0x74, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12,\n\t0x3d, 0x0a, 0x0d, 0x72, 0x75, 0x62, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,\n\t0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x52, 0x75, 0x62, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,\n\t0x52, 0x0c, 0x72, 0x75, 0x62, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x37,\n\t0x0a, 0x0b, 0x67, 0x6f, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x1c, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x47, 0x6f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0a, 0x67, 0x6f, 0x53,\n\t0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xf4, 0x04, 0x0a, 0x0a, 0x50, 0x75, 0x62, 0x6c,\n\t0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x43, 0x0a, 0x0f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64,\n\t0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x65, 0x74,\n\t0x68, 0x6f, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0e, 0x6d, 0x65, 0x74,\n\t0x68, 0x6f, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6e,\n\t0x65, 0x77, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x65, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x49, 0x73, 0x73, 0x75, 0x65, 0x55, 0x72, 0x69, 0x12,\n\t0x2b, 0x0a, 0x11, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x5f, 0x75, 0x72, 0x69, 0x18, 0x66, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x6f, 0x63, 0x75,\n\t0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x69, 0x12, 0x24, 0x0a, 0x0e,\n\t0x61, 0x70, 0x69, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x67,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x70, 0x69, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x4e, 0x61,\n\t0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x6c, 0x61, 0x62,\n\t0x65, 0x6c, 0x18, 0x68, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,\n\t0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x64, 0x65, 0x6f, 0x77, 0x6e,\n\t0x65, 0x72, 0x5f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18,\n\t0x69, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x63, 0x6f, 0x64, 0x65, 0x6f, 0x77, 0x6e, 0x65, 0x72,\n\t0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x64,\n\t0x6f, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x6a, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x54, 0x61, 0x67, 0x50, 0x72, 0x65, 0x66, 0x69,\n\t0x78, 0x12, 0x49, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61,\n\t0x72, 0x79, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c,\n\t0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x10,\n\t0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,\n\t0x18, 0x6d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72,\n\t0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0f, 0x6c, 0x69, 0x62, 0x72, 0x61,\n\t0x72, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x49, 0x0a, 0x21, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x6f,\n\t0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x69, 0x18,\n\t0x6e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x65, 0x66, 0x65,\n\t0x72, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x55, 0x72, 0x69, 0x12, 0x47, 0x0a, 0x20, 0x72, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65,\n\t0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x1d, 0x72, 0x65, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x6f,\n\t0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x69, 0x22, 0x9a,\n\t0x02, 0x0a, 0x0c, 0x4a, 0x61, 0x76, 0x61, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12,\n\t0x27, 0x0a, 0x0f, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61,\n\t0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72,\n\t0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x5f, 0x0a, 0x13, 0x73, 0x65, 0x72, 0x76,\n\t0x69, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18,\n\t0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x4a, 0x61, 0x76, 0x61, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e,\n\t0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65,\n\t0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43,\n\t0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d,\n\t0x6d, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e,\n\t0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63,\n\t0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x1a, 0x44, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,\n\t0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,\n\t0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,\n\t0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x49, 0x0a, 0x0b, 0x43,\n\t0x70, 0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f,\n\t0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61,\n\t0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06,\n\t0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x72, 0x0a, 0x0b, 0x50, 0x68, 0x70, 0x53, 0x65, 0x74,\n\t0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67,\n\t0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,\n\t0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x63,\n\t0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x69, 0x62, 0x72,\n\t0x61, 0x72, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x22, 0x87, 0x03, 0x0a, 0x0e, 0x50,\n\t0x79, 0x74, 0x68, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a,\n\t0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f,\n\t0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,\n\t0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x64, 0x0a, 0x15, 0x65, 0x78, 0x70,\n\t0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,\n\t0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74,\n\t0x69, 0x6e, 0x67, 0x73, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61,\n\t0x6c, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x14, 0x65, 0x78, 0x70, 0x65, 0x72,\n\t0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x1a,\n\t0xd2, 0x01, 0x0a, 0x14, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c,\n\t0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x74,\n\t0x5f, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x69, 0x6f, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,\n\t0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x72, 0x65, 0x73, 0x74, 0x41, 0x73, 0x79,\n\t0x6e, 0x63, 0x49, 0x6f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x69, 0x63,\n\t0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x50, 0x79,\n\t0x74, 0x68, 0x6f, 0x6e, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c,\n\t0x65, 0x64, 0x12, 0x40, 0x0a, 0x1c, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65,\n\t0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c,\n\t0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x73,\n\t0x69, 0x6f, 0x6e, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x69, 0x73, 0x61,\n\t0x62, 0x6c, 0x65, 0x64, 0x22, 0x4a, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x74,\n\t0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65,\n\t0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,\n\t0x22, 0xae, 0x04, 0x0a, 0x0e, 0x44, 0x6f, 0x74, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69,\n\t0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53,\n\t0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12,\n\t0x5a, 0x0a, 0x10, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69,\n\t0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x74, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x74,\n\t0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x65, 0x72,\n\t0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x72, 0x65, 0x6e, 0x61,\n\t0x6d, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x5d, 0x0a, 0x11, 0x72,\n\t0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,\n\t0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x74, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,\n\t0x67, 0x73, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65,\n\t0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x67,\n\t0x6e, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18,\n\t0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x65,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x66, 0x6f, 0x72, 0x63, 0x65,\n\t0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61,\n\t0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x66, 0x6f, 0x72, 0x63, 0x65,\n\t0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65,\n\t0x73, 0x12, 0x35, 0x0a, 0x16, 0x68, 0x61, 0x6e, 0x64, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e,\n\t0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28,\n\t0x09, 0x52, 0x15, 0x68, 0x61, 0x6e, 0x64, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x53, 0x69,\n\t0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x1a, 0x42, 0x0a, 0x14, 0x52, 0x65, 0x6e, 0x61,\n\t0x6d, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,\n\t0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,\n\t0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x43, 0x0a, 0x15,\n\t0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,\n\t0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,\n\t0x01, 0x22, 0x4a, 0x0a, 0x0c, 0x52, 0x75, 0x62, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,\n\t0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43,\n\t0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74,\n\t0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0xe4, 0x01,\n\t0x0a, 0x0a, 0x47, 0x6f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x06,\n\t0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,\n\t0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,\n\t0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x10, 0x72, 0x65, 0x6e, 0x61,\n\t0x6d, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03,\n\t0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x47, 0x6f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d,\n\t0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,\n\t0x0f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73,\n\t0x1a, 0x42, 0x0a, 0x14, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69,\n\t0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,\n\t0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x3a, 0x02, 0x38, 0x01, 0x22, 0xff, 0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53,\n\t0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63,\n\t0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63,\n\t0x74, 0x6f, 0x72, 0x12, 0x49, 0x0a, 0x0c, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6e, 0x6e,\n\t0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x65, 0x74,\n\t0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e,\n\t0x67, 0x52, 0x0b, 0x6c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x32,\n\t0x0a, 0x15, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64,\n\t0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x61,\n\t0x75, 0x74, 0x6f, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c,\n\t0x64, 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x04,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,\n\t0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x1a,\n\t0x94, 0x02, 0x0a, 0x0b, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x12,\n\t0x47, 0x0a, 0x12, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f,\n\t0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75,\n\t0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x50,\n\t0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x6f, 0x6c, 0x6c,\n\t0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65,\n\t0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x70, 0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c,\n\t0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0e,\n\t0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,\n\t0x0c, 0x6d, 0x61, 0x78, 0x50, 0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x47, 0x0a,\n\t0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65,\n\t0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x6f, 0x6c, 0x6c, 0x54,\n\t0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x75, 0x0a, 0x18, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,\n\t0x69, 0x76, 0x65, 0x47, 0x61, 0x70, 0x69, 0x63, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x01, 0x20,\n\t0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x3f, 0x0a, 0x1c,\n\t0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64,\n\t0x5f, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x08, 0x52, 0x19, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4f, 0x6d, 0x69, 0x74,\n\t0x74, 0x65, 0x64, 0x41, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x22, 0xa8, 0x01,\n\t0x0a, 0x13, 0x42, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,\n\t0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x41, 0x0a, 0x0a, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f,\n\t0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x53,\n\t0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0a, 0x74, 0x68,\n\t0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x12, 0x4e, 0x0a, 0x10, 0x62, 0x61, 0x74, 0x63,\n\t0x68, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x42, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,\n\t0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65,\n\t0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x22, 0x9f, 0x04, 0x0a, 0x15, 0x42, 0x61, 0x74,\n\t0x63, 0x68, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x50, 0x72, 0x6f,\n\t0x74, 0x6f, 0x12, 0x36, 0x0a, 0x17, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f,\n\t0x75, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x05, 0x52, 0x15, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e,\n\t0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65,\n\t0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73,\n\t0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x72, 0x65, 0x71, 0x75,\n\t0x65, 0x73, 0x74, 0x42, 0x79, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64,\n\t0x12, 0x42, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68,\n\t0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x68, 0x72, 0x65, 0x73,\n\t0x68, 0x6f, 0x6c, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f,\n\t0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,\n\t0x05, 0x52, 0x11, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c,\n\t0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f,\n\t0x62, 0x79, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,\n\t0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x74, 0x65, 0x4c, 0x69, 0x6d,\n\t0x69, 0x74, 0x12, 0x3b, 0x0a, 0x1a, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,\n\t0x6f, 0x6c, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,\n\t0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x66, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74,\n\t0x72, 0x6f, 0x6c, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12,\n\t0x35, 0x0a, 0x17, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f,\n\t0x62, 0x79, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,\n\t0x52, 0x14, 0x66, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x79, 0x74,\n\t0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x81, 0x01, 0x0a, 0x24, 0x66, 0x6c, 0x6f, 0x77, 0x5f,\n\t0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x78,\n\t0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18,\n\t0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4c, 0x69,\n\t0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76,\n\t0x69, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x20, 0x66, 0x6c, 0x6f, 0x77, 0x43, 0x6f,\n\t0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64,\n\t0x65, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x9e, 0x01, 0x0a, 0x17, 0x42,\n\t0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,\n\t0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x74, 0x63, 0x68, 0x65,\n\t0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62,\n\t0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x31, 0x0a, 0x14, 0x64,\n\t0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x66, 0x69, 0x65,\n\t0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x64, 0x69, 0x73, 0x63, 0x72,\n\t0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x2b,\n\t0x0a, 0x11, 0x73, 0x75, 0x62, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x66, 0x69,\n\t0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x75, 0x62, 0x72, 0x65,\n\t0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x2a, 0xa3, 0x01, 0x0a, 0x19,\n\t0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4f, 0x72, 0x67,\n\t0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x4c, 0x49,\n\t0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x49, 0x42, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x4f, 0x52, 0x47, 0x41,\n\t0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,\n\t0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x10,\n\t0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x53, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x48,\n\t0x4f, 0x54, 0x4f, 0x53, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x52, 0x45, 0x45, 0x54,\n\t0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x48, 0x4f, 0x50, 0x50,\n\t0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x45, 0x4f, 0x10, 0x06, 0x12, 0x11,\n\t0x0a, 0x0d, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x41, 0x49, 0x10,\n\t0x07, 0x2a, 0x67, 0x0a, 0x18, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61,\n\t0x72, 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a,\n\t0x26, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x49, 0x42, 0x52, 0x41, 0x52, 0x59, 0x5f,\n\t0x44, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50,\n\t0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x49, 0x54,\n\t0x48, 0x55, 0x42, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45,\n\t0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x52, 0x10, 0x14, 0x2a, 0x67, 0x0a, 0x25, 0x46, 0x6c,\n\t0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78,\n\t0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x50, 0x72,\n\t0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x5f, 0x42, 0x45, 0x48,\n\t0x41, 0x56, 0x49, 0x4f, 0x52, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x48, 0x52, 0x4f, 0x57,\n\t0x5f, 0x45, 0x58, 0x43, 0x45, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05,\n\t0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x47, 0x4e, 0x4f, 0x52,\n\t0x45, 0x10, 0x03, 0x3a, 0x4a, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x73, 0x69,\n\t0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64,\n\t0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9b, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f,\n\t0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x3a,\n\t0x43, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x12,\n\t0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,\n\t0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,\n\t0x18, 0x99, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,\n\t0x48, 0x6f, 0x73, 0x74, 0x3a, 0x43, 0x0a, 0x0c, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x63,\n\t0x6f, 0x70, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9a, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x61,\n\t0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x3a, 0x44, 0x0a, 0x0b, 0x61, 0x70, 0x69,\n\t0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69,\n\t0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xc1, 0xba, 0xab, 0xfa, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42,\n\t0x69, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x42, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,\n\t0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,\n\t0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,\n\t0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_client_proto_rawDescOnce sync.Once\n\tfile_google_api_client_proto_rawDescData = file_google_api_client_proto_rawDesc\n)\n\nfunc file_google_api_client_proto_rawDescGZIP() []byte {\n\tfile_google_api_client_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_client_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_client_proto_rawDescData)\n\t})\n\treturn file_google_api_client_proto_rawDescData\n}\n\nvar file_google_api_client_proto_enumTypes = make([]protoimpl.EnumInfo, 3)\nvar file_google_api_client_proto_msgTypes = make([]protoimpl.MessageInfo, 22)\nvar file_google_api_client_proto_goTypes = []interface{}{\n\t(ClientLibraryOrganization)(0),              // 0: google.api.ClientLibraryOrganization\n\t(ClientLibraryDestination)(0),               // 1: google.api.ClientLibraryDestination\n\t(FlowControlLimitExceededBehaviorProto)(0),  // 2: google.api.FlowControlLimitExceededBehaviorProto\n\t(*CommonLanguageSettings)(nil),              // 3: google.api.CommonLanguageSettings\n\t(*ClientLibrarySettings)(nil),               // 4: google.api.ClientLibrarySettings\n\t(*Publishing)(nil),                          // 5: google.api.Publishing\n\t(*JavaSettings)(nil),                        // 6: google.api.JavaSettings\n\t(*CppSettings)(nil),                         // 7: google.api.CppSettings\n\t(*PhpSettings)(nil),                         // 8: google.api.PhpSettings\n\t(*PythonSettings)(nil),                      // 9: google.api.PythonSettings\n\t(*NodeSettings)(nil),                        // 10: google.api.NodeSettings\n\t(*DotnetSettings)(nil),                      // 11: google.api.DotnetSettings\n\t(*RubySettings)(nil),                        // 12: google.api.RubySettings\n\t(*GoSettings)(nil),                          // 13: google.api.GoSettings\n\t(*MethodSettings)(nil),                      // 14: google.api.MethodSettings\n\t(*SelectiveGapicGeneration)(nil),            // 15: google.api.SelectiveGapicGeneration\n\t(*BatchingConfigProto)(nil),                 // 16: google.api.BatchingConfigProto\n\t(*BatchingSettingsProto)(nil),               // 17: google.api.BatchingSettingsProto\n\t(*BatchingDescriptorProto)(nil),             // 18: google.api.BatchingDescriptorProto\n\tnil,                                         // 19: google.api.JavaSettings.ServiceClassNamesEntry\n\t(*PythonSettings_ExperimentalFeatures)(nil), // 20: google.api.PythonSettings.ExperimentalFeatures\n\tnil,                                 // 21: google.api.DotnetSettings.RenamedServicesEntry\n\tnil,                                 // 22: google.api.DotnetSettings.RenamedResourcesEntry\n\tnil,                                 // 23: google.api.GoSettings.RenamedServicesEntry\n\t(*MethodSettings_LongRunning)(nil),  // 24: google.api.MethodSettings.LongRunning\n\t(api.LaunchStage)(0),                // 25: google.api.LaunchStage\n\t(*durationpb.Duration)(nil),         // 26: google.protobuf.Duration\n\t(*descriptorpb.MethodOptions)(nil),  // 27: google.protobuf.MethodOptions\n\t(*descriptorpb.ServiceOptions)(nil), // 28: google.protobuf.ServiceOptions\n}\nvar file_google_api_client_proto_depIdxs = []int32{\n\t1,  // 0: google.api.CommonLanguageSettings.destinations:type_name -> google.api.ClientLibraryDestination\n\t15, // 1: google.api.CommonLanguageSettings.selective_gapic_generation:type_name -> google.api.SelectiveGapicGeneration\n\t25, // 2: google.api.ClientLibrarySettings.launch_stage:type_name -> google.api.LaunchStage\n\t6,  // 3: google.api.ClientLibrarySettings.java_settings:type_name -> google.api.JavaSettings\n\t7,  // 4: google.api.ClientLibrarySettings.cpp_settings:type_name -> google.api.CppSettings\n\t8,  // 5: google.api.ClientLibrarySettings.php_settings:type_name -> google.api.PhpSettings\n\t9,  // 6: google.api.ClientLibrarySettings.python_settings:type_name -> google.api.PythonSettings\n\t10, // 7: google.api.ClientLibrarySettings.node_settings:type_name -> google.api.NodeSettings\n\t11, // 8: google.api.ClientLibrarySettings.dotnet_settings:type_name -> google.api.DotnetSettings\n\t12, // 9: google.api.ClientLibrarySettings.ruby_settings:type_name -> google.api.RubySettings\n\t13, // 10: google.api.ClientLibrarySettings.go_settings:type_name -> google.api.GoSettings\n\t14, // 11: google.api.Publishing.method_settings:type_name -> google.api.MethodSettings\n\t0,  // 12: google.api.Publishing.organization:type_name -> google.api.ClientLibraryOrganization\n\t4,  // 13: google.api.Publishing.library_settings:type_name -> google.api.ClientLibrarySettings\n\t19, // 14: google.api.JavaSettings.service_class_names:type_name -> google.api.JavaSettings.ServiceClassNamesEntry\n\t3,  // 15: google.api.JavaSettings.common:type_name -> google.api.CommonLanguageSettings\n\t3,  // 16: google.api.CppSettings.common:type_name -> google.api.CommonLanguageSettings\n\t3,  // 17: google.api.PhpSettings.common:type_name -> google.api.CommonLanguageSettings\n\t3,  // 18: google.api.PythonSettings.common:type_name -> google.api.CommonLanguageSettings\n\t20, // 19: google.api.PythonSettings.experimental_features:type_name -> google.api.PythonSettings.ExperimentalFeatures\n\t3,  // 20: google.api.NodeSettings.common:type_name -> google.api.CommonLanguageSettings\n\t3,  // 21: google.api.DotnetSettings.common:type_name -> google.api.CommonLanguageSettings\n\t21, // 22: google.api.DotnetSettings.renamed_services:type_name -> google.api.DotnetSettings.RenamedServicesEntry\n\t22, // 23: google.api.DotnetSettings.renamed_resources:type_name -> google.api.DotnetSettings.RenamedResourcesEntry\n\t3,  // 24: google.api.RubySettings.common:type_name -> google.api.CommonLanguageSettings\n\t3,  // 25: google.api.GoSettings.common:type_name -> google.api.CommonLanguageSettings\n\t23, // 26: google.api.GoSettings.renamed_services:type_name -> google.api.GoSettings.RenamedServicesEntry\n\t24, // 27: google.api.MethodSettings.long_running:type_name -> google.api.MethodSettings.LongRunning\n\t16, // 28: google.api.MethodSettings.batching:type_name -> google.api.BatchingConfigProto\n\t17, // 29: google.api.BatchingConfigProto.thresholds:type_name -> google.api.BatchingSettingsProto\n\t18, // 30: google.api.BatchingConfigProto.batch_descriptor:type_name -> google.api.BatchingDescriptorProto\n\t26, // 31: google.api.BatchingSettingsProto.delay_threshold:type_name -> google.protobuf.Duration\n\t2,  // 32: google.api.BatchingSettingsProto.flow_control_limit_exceeded_behavior:type_name -> google.api.FlowControlLimitExceededBehaviorProto\n\t26, // 33: google.api.MethodSettings.LongRunning.initial_poll_delay:type_name -> google.protobuf.Duration\n\t26, // 34: google.api.MethodSettings.LongRunning.max_poll_delay:type_name -> google.protobuf.Duration\n\t26, // 35: google.api.MethodSettings.LongRunning.total_poll_timeout:type_name -> google.protobuf.Duration\n\t27, // 36: google.api.method_signature:extendee -> google.protobuf.MethodOptions\n\t28, // 37: google.api.default_host:extendee -> google.protobuf.ServiceOptions\n\t28, // 38: google.api.oauth_scopes:extendee -> google.protobuf.ServiceOptions\n\t28, // 39: google.api.api_version:extendee -> google.protobuf.ServiceOptions\n\t40, // [40:40] is the sub-list for method output_type\n\t40, // [40:40] is the sub-list for method input_type\n\t40, // [40:40] is the sub-list for extension type_name\n\t36, // [36:40] is the sub-list for extension extendee\n\t0,  // [0:36] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_client_proto_init() }\nfunc file_google_api_client_proto_init() {\n\tif File_google_api_client_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_client_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CommonLanguageSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ClientLibrarySettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Publishing); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*JavaSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CppSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PhpSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PythonSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*NodeSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DotnetSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RubySettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GoSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MethodSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SelectiveGapicGeneration); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*BatchingConfigProto); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*BatchingSettingsProto); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*BatchingDescriptorProto); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PythonSettings_ExperimentalFeatures); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MethodSettings_LongRunning); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_client_proto_rawDesc,\n\t\t\tNumEnums:      3,\n\t\t\tNumMessages:   22,\n\t\t\tNumExtensions: 4,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_client_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_client_proto_depIdxs,\n\t\tEnumInfos:         file_google_api_client_proto_enumTypes,\n\t\tMessageInfos:      file_google_api_client_proto_msgTypes,\n\t\tExtensionInfos:    file_google_api_client_proto_extTypes,\n\t}.Build()\n\tFile_google_api_client_proto = out.File\n\tfile_google_api_client_proto_rawDesc = nil\n\tfile_google_api_client_proto_goTypes = nil\n\tfile_google_api_client_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/annotations/field_behavior.pb.go",
    "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v4.24.4\n// source: google/api/field_behavior.proto\n\npackage annotations\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// An indicator of the behavior of a given field (for example, that a field\n// is required in requests, or given as output but ignored as input).\n// This **does not** change the behavior in protocol buffers itself; it only\n// denotes the behavior and may affect how API tooling handles the field.\n//\n// Note: This enum **may** receive new values in the future.\ntype FieldBehavior int32\n\nconst (\n\t// Conventional default for enums. Do not use this.\n\tFieldBehavior_FIELD_BEHAVIOR_UNSPECIFIED FieldBehavior = 0\n\t// Specifically denotes a field as optional.\n\t// While all fields in protocol buffers are optional, this may be specified\n\t// for emphasis if appropriate.\n\tFieldBehavior_OPTIONAL FieldBehavior = 1\n\t// Denotes a field as required.\n\t// This indicates that the field **must** be provided as part of the request,\n\t// and failure to do so will cause an error (usually `INVALID_ARGUMENT`).\n\tFieldBehavior_REQUIRED FieldBehavior = 2\n\t// Denotes a field as output only.\n\t// This indicates that the field is provided in responses, but including the\n\t// field in a request does nothing (the server *must* ignore it and\n\t// *must not* throw an error as a result of the field's presence).\n\tFieldBehavior_OUTPUT_ONLY FieldBehavior = 3\n\t// Denotes a field as input only.\n\t// This indicates that the field is provided in requests, and the\n\t// corresponding field is not included in output.\n\tFieldBehavior_INPUT_ONLY FieldBehavior = 4\n\t// Denotes a field as immutable.\n\t// This indicates that the field may be set once in a request to create a\n\t// resource, but may not be changed thereafter.\n\tFieldBehavior_IMMUTABLE FieldBehavior = 5\n\t// Denotes that a (repeated) field is an unordered list.\n\t// This indicates that the service may provide the elements of the list\n\t// in any arbitrary  order, rather than the order the user originally\n\t// provided. Additionally, the list's order may or may not be stable.\n\tFieldBehavior_UNORDERED_LIST FieldBehavior = 6\n\t// Denotes that this field returns a non-empty default value if not set.\n\t// This indicates that if the user provides the empty value in a request,\n\t// a non-empty value will be returned. The user will not be aware of what\n\t// non-empty value to expect.\n\tFieldBehavior_NON_EMPTY_DEFAULT FieldBehavior = 7\n\t// Denotes that the field in a resource (a message annotated with\n\t// google.api.resource) is used in the resource name to uniquely identify the\n\t// resource. For AIP-compliant APIs, this should only be applied to the\n\t// `name` field on the resource.\n\t//\n\t// This behavior should not be applied to references to other resources within\n\t// the message.\n\t//\n\t// The identifier field of resources often have different field behavior\n\t// depending on the request it is embedded in (e.g. for Create methods name\n\t// is optional and unused, while for Update methods it is required). Instead\n\t// of method-specific annotations, only `IDENTIFIER` is required.\n\tFieldBehavior_IDENTIFIER FieldBehavior = 8\n)\n\n// Enum value maps for FieldBehavior.\nvar (\n\tFieldBehavior_name = map[int32]string{\n\t\t0: \"FIELD_BEHAVIOR_UNSPECIFIED\",\n\t\t1: \"OPTIONAL\",\n\t\t2: \"REQUIRED\",\n\t\t3: \"OUTPUT_ONLY\",\n\t\t4: \"INPUT_ONLY\",\n\t\t5: \"IMMUTABLE\",\n\t\t6: \"UNORDERED_LIST\",\n\t\t7: \"NON_EMPTY_DEFAULT\",\n\t\t8: \"IDENTIFIER\",\n\t}\n\tFieldBehavior_value = map[string]int32{\n\t\t\"FIELD_BEHAVIOR_UNSPECIFIED\": 0,\n\t\t\"OPTIONAL\":                   1,\n\t\t\"REQUIRED\":                   2,\n\t\t\"OUTPUT_ONLY\":                3,\n\t\t\"INPUT_ONLY\":                 4,\n\t\t\"IMMUTABLE\":                  5,\n\t\t\"UNORDERED_LIST\":             6,\n\t\t\"NON_EMPTY_DEFAULT\":          7,\n\t\t\"IDENTIFIER\":                 8,\n\t}\n)\n\nfunc (x FieldBehavior) Enum() *FieldBehavior {\n\tp := new(FieldBehavior)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldBehavior) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldBehavior) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_field_behavior_proto_enumTypes[0].Descriptor()\n}\n\nfunc (FieldBehavior) Type() protoreflect.EnumType {\n\treturn &file_google_api_field_behavior_proto_enumTypes[0]\n}\n\nfunc (x FieldBehavior) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use FieldBehavior.Descriptor instead.\nfunc (FieldBehavior) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_field_behavior_proto_rawDescGZIP(), []int{0}\n}\n\nvar file_google_api_field_behavior_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: ([]FieldBehavior)(nil),\n\t\tField:         1052,\n\t\tName:          \"google.api.field_behavior\",\n\t\tTag:           \"varint,1052,rep,name=field_behavior,enum=google.api.FieldBehavior\",\n\t\tFilename:      \"google/api/field_behavior.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// A designation of a specific field behavior (required, output only, etc.)\n\t// in protobuf messages.\n\t//\n\t// Examples:\n\t//\n\t//\tstring name = 1 [(google.api.field_behavior) = REQUIRED];\n\t//\tState state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];\n\t//\tgoogle.protobuf.Duration ttl = 1\n\t//\t  [(google.api.field_behavior) = INPUT_ONLY];\n\t//\tgoogle.protobuf.Timestamp expire_time = 1\n\t//\t  [(google.api.field_behavior) = OUTPUT_ONLY,\n\t//\t   (google.api.field_behavior) = IMMUTABLE];\n\t//\n\t// repeated google.api.FieldBehavior field_behavior = 1052;\n\tE_FieldBehavior = &file_google_api_field_behavior_proto_extTypes[0]\n)\n\nvar File_google_api_field_behavior_proto protoreflect.FileDescriptor\n\nvar file_google_api_field_behavior_proto_rawDesc = []byte{\n\t0x0a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65,\n\t0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x20, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64,\n\t0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a,\n\t0xb6, 0x01, 0x0a, 0x0d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f,\n\t0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56,\n\t0x49, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,\n\t0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12,\n\t0x0c, 0x0a, 0x08, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0f, 0x0a,\n\t0x0b, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x0e,\n\t0x0a, 0x0a, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x0d,\n\t0x0a, 0x09, 0x49, 0x4d, 0x4d, 0x55, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x12, 0x0a,\n\t0x0e, 0x55, 0x4e, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x45, 0x44, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10,\n\t0x06, 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x4f, 0x4e, 0x5f, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x5f, 0x44,\n\t0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x44, 0x45, 0x4e,\n\t0x54, 0x49, 0x46, 0x49, 0x45, 0x52, 0x10, 0x08, 0x3a, 0x64, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c,\n\t0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,\n\t0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9c, 0x08, 0x20, 0x03, 0x28, 0x0e,\n\t0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69,\n\t0x65, 0x6c, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, 0x02, 0x10, 0x00, 0x52,\n\t0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, 0x70,\n\t0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69,\n\t0x42, 0x12, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x50,\n\t0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,\n\t0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70,\n\t0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e,\n\t0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49,\n\t0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_field_behavior_proto_rawDescOnce sync.Once\n\tfile_google_api_field_behavior_proto_rawDescData = file_google_api_field_behavior_proto_rawDesc\n)\n\nfunc file_google_api_field_behavior_proto_rawDescGZIP() []byte {\n\tfile_google_api_field_behavior_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_field_behavior_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_field_behavior_proto_rawDescData)\n\t})\n\treturn file_google_api_field_behavior_proto_rawDescData\n}\n\nvar file_google_api_field_behavior_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_google_api_field_behavior_proto_goTypes = []interface{}{\n\t(FieldBehavior)(0),                // 0: google.api.FieldBehavior\n\t(*descriptorpb.FieldOptions)(nil), // 1: google.protobuf.FieldOptions\n}\nvar file_google_api_field_behavior_proto_depIdxs = []int32{\n\t1, // 0: google.api.field_behavior:extendee -> google.protobuf.FieldOptions\n\t0, // 1: google.api.field_behavior:type_name -> google.api.FieldBehavior\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t1, // [1:2] is the sub-list for extension type_name\n\t0, // [0:1] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_field_behavior_proto_init() }\nfunc file_google_api_field_behavior_proto_init() {\n\tif File_google_api_field_behavior_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_field_behavior_proto_rawDesc,\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_field_behavior_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_field_behavior_proto_depIdxs,\n\t\tEnumInfos:         file_google_api_field_behavior_proto_enumTypes,\n\t\tExtensionInfos:    file_google_api_field_behavior_proto_extTypes,\n\t}.Build()\n\tFile_google_api_field_behavior_proto = out.File\n\tfile_google_api_field_behavior_proto_rawDesc = nil\n\tfile_google_api_field_behavior_proto_goTypes = nil\n\tfile_google_api_field_behavior_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/annotations/field_info.pb.go",
    "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v4.24.4\n// source: google/api/field_info.proto\n\npackage annotations\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// The standard format of a field value. The supported formats are all backed\n// by either an RFC defined by the IETF or a Google-defined AIP.\ntype FieldInfo_Format int32\n\nconst (\n\t// Default, unspecified value.\n\tFieldInfo_FORMAT_UNSPECIFIED FieldInfo_Format = 0\n\t// Universally Unique Identifier, version 4, value as defined by\n\t// https://datatracker.ietf.org/doc/html/rfc4122. The value may be\n\t// normalized to entirely lowercase letters. For example, the value\n\t// `F47AC10B-58CC-0372-8567-0E02B2C3D479` would be normalized to\n\t// `f47ac10b-58cc-0372-8567-0e02b2c3d479`.\n\tFieldInfo_UUID4 FieldInfo_Format = 1\n\t// Internet Protocol v4 value as defined by [RFC\n\t// 791](https://datatracker.ietf.org/doc/html/rfc791). The value may be\n\t// condensed, with leading zeros in each octet stripped. For example,\n\t// `001.022.233.040` would be condensed to `1.22.233.40`.\n\tFieldInfo_IPV4 FieldInfo_Format = 2\n\t// Internet Protocol v6 value as defined by [RFC\n\t// 2460](https://datatracker.ietf.org/doc/html/rfc2460). The value may be\n\t// normalized to entirely lowercase letters with zeros compressed, following\n\t// [RFC 5952](https://datatracker.ietf.org/doc/html/rfc5952). For example,\n\t// the value `2001:0DB8:0::0` would be normalized to `2001:db8::`.\n\tFieldInfo_IPV6 FieldInfo_Format = 3\n\t// An IP address in either v4 or v6 format as described by the individual\n\t// values defined herein. See the comments on the IPV4 and IPV6 types for\n\t// allowed normalizations of each.\n\tFieldInfo_IPV4_OR_IPV6 FieldInfo_Format = 4\n)\n\n// Enum value maps for FieldInfo_Format.\nvar (\n\tFieldInfo_Format_name = map[int32]string{\n\t\t0: \"FORMAT_UNSPECIFIED\",\n\t\t1: \"UUID4\",\n\t\t2: \"IPV4\",\n\t\t3: \"IPV6\",\n\t\t4: \"IPV4_OR_IPV6\",\n\t}\n\tFieldInfo_Format_value = map[string]int32{\n\t\t\"FORMAT_UNSPECIFIED\": 0,\n\t\t\"UUID4\":              1,\n\t\t\"IPV4\":               2,\n\t\t\"IPV6\":               3,\n\t\t\"IPV4_OR_IPV6\":       4,\n\t}\n)\n\nfunc (x FieldInfo_Format) Enum() *FieldInfo_Format {\n\tp := new(FieldInfo_Format)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldInfo_Format) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldInfo_Format) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_field_info_proto_enumTypes[0].Descriptor()\n}\n\nfunc (FieldInfo_Format) Type() protoreflect.EnumType {\n\treturn &file_google_api_field_info_proto_enumTypes[0]\n}\n\nfunc (x FieldInfo_Format) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use FieldInfo_Format.Descriptor instead.\nfunc (FieldInfo_Format) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_field_info_proto_rawDescGZIP(), []int{0, 0}\n}\n\n// Rich semantic information of an API field beyond basic typing.\ntype FieldInfo struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The standard format of a field value. This does not explicitly configure\n\t// any API consumer, just documents the API's format for the field it is\n\t// applied to.\n\tFormat FieldInfo_Format `protobuf:\"varint,1,opt,name=format,proto3,enum=google.api.FieldInfo_Format\" json:\"format,omitempty\"`\n\t// The type(s) that the annotated, generic field may represent.\n\t//\n\t// Currently, this must only be used on fields of type `google.protobuf.Any`.\n\t// Supporting other generic types may be considered in the future.\n\tReferencedTypes []*TypeReference `protobuf:\"bytes,2,rep,name=referenced_types,json=referencedTypes,proto3\" json:\"referenced_types,omitempty\"`\n}\n\nfunc (x *FieldInfo) Reset() {\n\t*x = FieldInfo{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_field_info_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FieldInfo) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldInfo) ProtoMessage() {}\n\nfunc (x *FieldInfo) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_field_info_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldInfo.ProtoReflect.Descriptor instead.\nfunc (*FieldInfo) Descriptor() ([]byte, []int) {\n\treturn file_google_api_field_info_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *FieldInfo) GetFormat() FieldInfo_Format {\n\tif x != nil {\n\t\treturn x.Format\n\t}\n\treturn FieldInfo_FORMAT_UNSPECIFIED\n}\n\nfunc (x *FieldInfo) GetReferencedTypes() []*TypeReference {\n\tif x != nil {\n\t\treturn x.ReferencedTypes\n\t}\n\treturn nil\n}\n\n// A reference to a message type, for use in [FieldInfo][google.api.FieldInfo].\ntype TypeReference struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The name of the type that the annotated, generic field may represent.\n\t// If the type is in the same protobuf package, the value can be the simple\n\t// message name e.g., `\"MyMessage\"`. Otherwise, the value must be the\n\t// fully-qualified message name e.g., `\"google.library.v1.Book\"`.\n\t//\n\t// If the type(s) are unknown to the service (e.g. the field accepts generic\n\t// user input), use the wildcard `\"*\"` to denote this behavior.\n\t//\n\t// See [AIP-202](https://google.aip.dev/202#type-references) for more details.\n\tTypeName string `protobuf:\"bytes,1,opt,name=type_name,json=typeName,proto3\" json:\"type_name,omitempty\"`\n}\n\nfunc (x *TypeReference) Reset() {\n\t*x = TypeReference{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_field_info_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *TypeReference) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*TypeReference) ProtoMessage() {}\n\nfunc (x *TypeReference) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_field_info_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use TypeReference.ProtoReflect.Descriptor instead.\nfunc (*TypeReference) Descriptor() ([]byte, []int) {\n\treturn file_google_api_field_info_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *TypeReference) GetTypeName() string {\n\tif x != nil {\n\t\treturn x.TypeName\n\t}\n\treturn \"\"\n}\n\nvar file_google_api_field_info_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: (*FieldInfo)(nil),\n\t\tField:         291403980,\n\t\tName:          \"google.api.field_info\",\n\t\tTag:           \"bytes,291403980,opt,name=field_info\",\n\t\tFilename:      \"google/api/field_info.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// Rich semantic descriptor of an API field beyond the basic typing.\n\t//\n\t// Examples:\n\t//\n\t//\tstring request_id = 1 [(google.api.field_info).format = UUID4];\n\t//\tstring old_ip_address = 2 [(google.api.field_info).format = IPV4];\n\t//\tstring new_ip_address = 3 [(google.api.field_info).format = IPV6];\n\t//\tstring actual_ip_address = 4 [\n\t//\t  (google.api.field_info).format = IPV4_OR_IPV6\n\t//\t];\n\t//\tgoogle.protobuf.Any generic_field = 5 [\n\t//\t  (google.api.field_info).referenced_types = {type_name: \"ActualType\"},\n\t//\t  (google.api.field_info).referenced_types = {type_name: \"OtherType\"},\n\t//\t];\n\t//\tgoogle.protobuf.Any generic_user_input = 5 [\n\t//\t  (google.api.field_info).referenced_types = {type_name: \"*\"},\n\t//\t];\n\t//\n\t// optional google.api.FieldInfo field_info = 291403980;\n\tE_FieldInfo = &file_google_api_field_info_proto_extTypes[0]\n)\n\nvar File_google_api_field_info_proto protoreflect.FileDescriptor\n\nvar file_google_api_field_info_proto_rawDesc = []byte{\n\t0x0a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65,\n\t0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72,\n\t0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xda, 0x01, 0x0a, 0x09,\n\t0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x06, 0x66, 0x6f, 0x72,\n\t0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f,\n\t0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12,\n\t0x44, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x74, 0x79,\n\t0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72,\n\t0x65, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64,\n\t0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x51, 0x0a, 0x06, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12,\n\t0x16, 0x0a, 0x12, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,\n\t0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x55, 0x49, 0x44, 0x34,\n\t0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x50, 0x56, 0x34, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04,\n\t0x49, 0x50, 0x56, 0x36, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x4f,\n\t0x52, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x04, 0x22, 0x2c, 0x0a, 0x0d, 0x54, 0x79, 0x70, 0x65,\n\t0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70,\n\t0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79,\n\t0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0x57, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,\n\t0x69, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x18, 0xcc, 0xf1, 0xf9, 0x8a, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64,\n\t0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x42,\n\t0x6c, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x42, 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x72, 0x6f, 0x74,\n\t0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61,\n\t0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61,\n\t0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_field_info_proto_rawDescOnce sync.Once\n\tfile_google_api_field_info_proto_rawDescData = file_google_api_field_info_proto_rawDesc\n)\n\nfunc file_google_api_field_info_proto_rawDescGZIP() []byte {\n\tfile_google_api_field_info_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_field_info_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_field_info_proto_rawDescData)\n\t})\n\treturn file_google_api_field_info_proto_rawDescData\n}\n\nvar file_google_api_field_info_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_google_api_field_info_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_google_api_field_info_proto_goTypes = []interface{}{\n\t(FieldInfo_Format)(0),             // 0: google.api.FieldInfo.Format\n\t(*FieldInfo)(nil),                 // 1: google.api.FieldInfo\n\t(*TypeReference)(nil),             // 2: google.api.TypeReference\n\t(*descriptorpb.FieldOptions)(nil), // 3: google.protobuf.FieldOptions\n}\nvar file_google_api_field_info_proto_depIdxs = []int32{\n\t0, // 0: google.api.FieldInfo.format:type_name -> google.api.FieldInfo.Format\n\t2, // 1: google.api.FieldInfo.referenced_types:type_name -> google.api.TypeReference\n\t3, // 2: google.api.field_info:extendee -> google.protobuf.FieldOptions\n\t1, // 3: google.api.field_info:type_name -> google.api.FieldInfo\n\t4, // [4:4] is the sub-list for method output_type\n\t4, // [4:4] is the sub-list for method input_type\n\t3, // [3:4] is the sub-list for extension type_name\n\t2, // [2:3] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_field_info_proto_init() }\nfunc file_google_api_field_info_proto_init() {\n\tif File_google_api_field_info_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_field_info_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FieldInfo); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_field_info_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*TypeReference); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_field_info_proto_rawDesc,\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_field_info_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_field_info_proto_depIdxs,\n\t\tEnumInfos:         file_google_api_field_info_proto_enumTypes,\n\t\tMessageInfos:      file_google_api_field_info_proto_msgTypes,\n\t\tExtensionInfos:    file_google_api_field_info_proto_extTypes,\n\t}.Build()\n\tFile_google_api_field_info_proto = out.File\n\tfile_google_api_field_info_proto_rawDesc = nil\n\tfile_google_api_field_info_proto_goTypes = nil\n\tfile_google_api_field_info_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/annotations/http.pb.go",
    "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v4.24.4\n// source: google/api/http.proto\n\npackage annotations\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Defines the HTTP configuration for an API service. It contains a list of\n// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method\n// to one or more HTTP REST API methods.\ntype Http struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// A list of HTTP configuration rules that apply to individual API methods.\n\t//\n\t// **NOTE:** All service configuration rules follow \"last one wins\" order.\n\tRules []*HttpRule `protobuf:\"bytes,1,rep,name=rules,proto3\" json:\"rules,omitempty\"`\n\t// When set to true, URL path parameters will be fully URI-decoded except in\n\t// cases of single segment matches in reserved expansion, where \"%2F\" will be\n\t// left encoded.\n\t//\n\t// The default behavior is to not decode RFC 6570 reserved characters in multi\n\t// segment matches.\n\tFullyDecodeReservedExpansion bool `protobuf:\"varint,2,opt,name=fully_decode_reserved_expansion,json=fullyDecodeReservedExpansion,proto3\" json:\"fully_decode_reserved_expansion,omitempty\"`\n}\n\nfunc (x *Http) Reset() {\n\t*x = Http{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_http_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Http) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Http) ProtoMessage() {}\n\nfunc (x *Http) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_http_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Http.ProtoReflect.Descriptor instead.\nfunc (*Http) Descriptor() ([]byte, []int) {\n\treturn file_google_api_http_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Http) GetRules() []*HttpRule {\n\tif x != nil {\n\t\treturn x.Rules\n\t}\n\treturn nil\n}\n\nfunc (x *Http) GetFullyDecodeReservedExpansion() bool {\n\tif x != nil {\n\t\treturn x.FullyDecodeReservedExpansion\n\t}\n\treturn false\n}\n\n// gRPC Transcoding\n//\n// gRPC Transcoding is a feature for mapping between a gRPC method and one or\n// more HTTP REST endpoints. It allows developers to build a single API service\n// that supports both gRPC APIs and REST APIs. Many systems, including [Google\n// APIs](https://github.com/googleapis/googleapis),\n// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC\n// Gateway](https://github.com/grpc-ecosystem/grpc-gateway),\n// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature\n// and use it for large scale production services.\n//\n// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies\n// how different portions of the gRPC request message are mapped to the URL\n// path, URL query parameters, and HTTP request body. It also controls how the\n// gRPC response message is mapped to the HTTP response body. `HttpRule` is\n// typically specified as an `google.api.http` annotation on the gRPC method.\n//\n// Each mapping specifies a URL path template and an HTTP method. The path\n// template may refer to one or more fields in the gRPC request message, as long\n// as each field is a non-repeated field with a primitive (non-message) type.\n// The path template controls how fields of the request message are mapped to\n// the URL path.\n//\n// Example:\n//\n//\tservice Messaging {\n//\t  rpc GetMessage(GetMessageRequest) returns (Message) {\n//\t    option (google.api.http) = {\n//\t        get: \"/v1/{name=messages/*}\"\n//\t    };\n//\t  }\n//\t}\n//\tmessage GetMessageRequest {\n//\t  string name = 1; // Mapped to URL path.\n//\t}\n//\tmessage Message {\n//\t  string text = 1; // The resource content.\n//\t}\n//\n// This enables an HTTP REST to gRPC mapping as below:\n//\n// - HTTP: `GET /v1/messages/123456`\n// - gRPC: `GetMessage(name: \"messages/123456\")`\n//\n// Any fields in the request message which are not bound by the path template\n// automatically become HTTP query parameters if there is no HTTP request body.\n// For example:\n//\n//\tservice Messaging {\n//\t  rpc GetMessage(GetMessageRequest) returns (Message) {\n//\t    option (google.api.http) = {\n//\t        get:\"/v1/messages/{message_id}\"\n//\t    };\n//\t  }\n//\t}\n//\tmessage GetMessageRequest {\n//\t  message SubMessage {\n//\t    string subfield = 1;\n//\t  }\n//\t  string message_id = 1; // Mapped to URL path.\n//\t  int64 revision = 2;    // Mapped to URL query parameter `revision`.\n//\t  SubMessage sub = 3;    // Mapped to URL query parameter `sub.subfield`.\n//\t}\n//\n// This enables a HTTP JSON to RPC mapping as below:\n//\n// - HTTP: `GET /v1/messages/123456?revision=2&sub.subfield=foo`\n// - gRPC: `GetMessage(message_id: \"123456\" revision: 2 sub:\n// SubMessage(subfield: \"foo\"))`\n//\n// Note that fields which are mapped to URL query parameters must have a\n// primitive type or a repeated primitive type or a non-repeated message type.\n// In the case of a repeated type, the parameter can be repeated in the URL\n// as `...?param=A&param=B`. In the case of a message type, each field of the\n// message is mapped to a separate parameter, such as\n// `...?foo.a=A&foo.b=B&foo.c=C`.\n//\n// For HTTP methods that allow a request body, the `body` field\n// specifies the mapping. Consider a REST update method on the\n// message resource collection:\n//\n//\tservice Messaging {\n//\t  rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n//\t    option (google.api.http) = {\n//\t      patch: \"/v1/messages/{message_id}\"\n//\t      body: \"message\"\n//\t    };\n//\t  }\n//\t}\n//\tmessage UpdateMessageRequest {\n//\t  string message_id = 1; // mapped to the URL\n//\t  Message message = 2;   // mapped to the body\n//\t}\n//\n// The following HTTP JSON to RPC mapping is enabled, where the\n// representation of the JSON in the request body is determined by\n// protos JSON encoding:\n//\n// - HTTP: `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }`\n// - gRPC: `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n//\n// The special name `*` can be used in the body mapping to define that\n// every field not bound by the path template should be mapped to the\n// request body.  This enables the following alternative definition of\n// the update method:\n//\n//\tservice Messaging {\n//\t  rpc UpdateMessage(Message) returns (Message) {\n//\t    option (google.api.http) = {\n//\t      patch: \"/v1/messages/{message_id}\"\n//\t      body: \"*\"\n//\t    };\n//\t  }\n//\t}\n//\tmessage Message {\n//\t  string message_id = 1;\n//\t  string text = 2;\n//\t}\n//\n// The following HTTP JSON to RPC mapping is enabled:\n//\n// - HTTP: `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }`\n// - gRPC: `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n//\n// Note that when using `*` in the body mapping, it is not possible to\n// have HTTP parameters, as all fields not bound by the path end in\n// the body. This makes this option more rarely used in practice when\n// defining REST APIs. The common usage of `*` is in custom methods\n// which don't use the URL at all for transferring data.\n//\n// It is possible to define multiple HTTP methods for one RPC by using\n// the `additional_bindings` option. Example:\n//\n//\tservice Messaging {\n//\t  rpc GetMessage(GetMessageRequest) returns (Message) {\n//\t    option (google.api.http) = {\n//\t      get: \"/v1/messages/{message_id}\"\n//\t      additional_bindings {\n//\t        get: \"/v1/users/{user_id}/messages/{message_id}\"\n//\t      }\n//\t    };\n//\t  }\n//\t}\n//\tmessage GetMessageRequest {\n//\t  string message_id = 1;\n//\t  string user_id = 2;\n//\t}\n//\n// This enables the following two alternative HTTP JSON to RPC mappings:\n//\n// - HTTP: `GET /v1/messages/123456`\n// - gRPC: `GetMessage(message_id: \"123456\")`\n//\n// - HTTP: `GET /v1/users/me/messages/123456`\n// - gRPC: `GetMessage(user_id: \"me\" message_id: \"123456\")`\n//\n// # Rules for HTTP mapping\n//\n//  1. Leaf request fields (recursive expansion nested messages in the request\n//     message) are classified into three categories:\n//     - Fields referred by the path template. They are passed via the URL path.\n//     - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They\n//     are passed via the HTTP\n//     request body.\n//     - All other fields are passed via the URL query parameters, and the\n//     parameter name is the field path in the request message. A repeated\n//     field can be represented as multiple query parameters under the same\n//     name.\n//  2. If [HttpRule.body][google.api.HttpRule.body] is \"*\", there is no URL\n//     query parameter, all fields\n//     are passed via URL path and HTTP request body.\n//  3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP\n//     request body, all\n//     fields are passed via URL path and URL query parameters.\n//\n// Path template syntax\n//\n//\tTemplate = \"/\" Segments [ Verb ] ;\n//\tSegments = Segment { \"/\" Segment } ;\n//\tSegment  = \"*\" | \"**\" | LITERAL | Variable ;\n//\tVariable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n//\tFieldPath = IDENT { \".\" IDENT } ;\n//\tVerb     = \":\" LITERAL ;\n//\n// The syntax `*` matches a single URL path segment. The syntax `**` matches\n// zero or more URL path segments, which must be the last part of the URL path\n// except the `Verb`.\n//\n// The syntax `Variable` matches part of the URL path as specified by its\n// template. A variable template must not contain other variables. If a variable\n// matches a single path segment, its template may be omitted, e.g. `{var}`\n// is equivalent to `{var=*}`.\n//\n// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`\n// contains any reserved character, such characters should be percent-encoded\n// before the matching.\n//\n// If a variable contains exactly one path segment, such as `\"{var}\"` or\n// `\"{var=*}\"`, when such a variable is expanded into a URL path on the client\n// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The\n// server side does the reverse decoding. Such variables show up in the\n// [Discovery\n// Document](https://developers.google.com/discovery/v1/reference/apis) as\n// `{var}`.\n//\n// If a variable contains multiple path segments, such as `\"{var=foo/*}\"`\n// or `\"{var=**}\"`, when such a variable is expanded into a URL path on the\n// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.\n// The server side does the reverse decoding, except \"%2F\" and \"%2f\" are left\n// unchanged. Such variables show up in the\n// [Discovery\n// Document](https://developers.google.com/discovery/v1/reference/apis) as\n// `{+var}`.\n//\n// # Using gRPC API Service Configuration\n//\n// gRPC API Service Configuration (service config) is a configuration language\n// for configuring a gRPC service to become a user-facing product. The\n// service config is simply the YAML representation of the `google.api.Service`\n// proto message.\n//\n// As an alternative to annotating your proto file, you can configure gRPC\n// transcoding in your service config YAML files. You do this by specifying a\n// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same\n// effect as the proto annotation. This can be particularly useful if you\n// have a proto that is reused in multiple services. Note that any transcoding\n// specified in the service config will override any matching transcoding\n// configuration in the proto.\n//\n// The following example selects a gRPC method and applies an `HttpRule` to it:\n//\n//\thttp:\n//\t  rules:\n//\t    - selector: example.v1.Messaging.GetMessage\n//\t      get: /v1/messages/{message_id}/{sub.subfield}\n//\n// # Special notes\n//\n// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the\n// proto to JSON conversion must follow the [proto3\n// specification](https://developers.google.com/protocol-buffers/docs/proto3#json).\n//\n// While the single segment variable follows the semantics of\n// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String\n// Expansion, the multi segment variable **does not** follow RFC 6570 Section\n// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion\n// does not expand special characters like `?` and `#`, which would lead\n// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding\n// for multi segment variables.\n//\n// The path variables **must not** refer to any repeated or mapped field,\n// because client libraries are not capable of handling such variable expansion.\n//\n// The path variables **must not** capture the leading \"/\" character. The reason\n// is that the most common use case \"{var}\" does not capture the leading \"/\"\n// character. For consistency, all path variables must share the same behavior.\n//\n// Repeated message fields must not be mapped to URL query parameters, because\n// no client library can support such complicated mapping.\n//\n// If an API needs to use a JSON array for request or response body, it can map\n// the request or response body to a repeated field. However, some gRPC\n// Transcoding implementations may not support this feature.\ntype HttpRule struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Selects a method to which this rule applies.\n\t//\n\t// Refer to [selector][google.api.DocumentationRule.selector] for syntax\n\t// details.\n\tSelector string `protobuf:\"bytes,1,opt,name=selector,proto3\" json:\"selector,omitempty\"`\n\t// Determines the URL pattern is matched by this rules. This pattern can be\n\t// used with any of the {get|put|post|delete|patch} methods. A custom method\n\t// can be defined using the 'custom' field.\n\t//\n\t// Types that are assignable to Pattern:\n\t//\n\t//\t*HttpRule_Get\n\t//\t*HttpRule_Put\n\t//\t*HttpRule_Post\n\t//\t*HttpRule_Delete\n\t//\t*HttpRule_Patch\n\t//\t*HttpRule_Custom\n\tPattern isHttpRule_Pattern `protobuf_oneof:\"pattern\"`\n\t// The name of the request field whose value is mapped to the HTTP request\n\t// body, or `*` for mapping all request fields not captured by the path\n\t// pattern to the HTTP body, or omitted for not having any HTTP request body.\n\t//\n\t// NOTE: the referred field must be present at the top-level of the request\n\t// message type.\n\tBody string `protobuf:\"bytes,7,opt,name=body,proto3\" json:\"body,omitempty\"`\n\t// Optional. The name of the response field whose value is mapped to the HTTP\n\t// response body. When omitted, the entire response message will be used\n\t// as the HTTP response body.\n\t//\n\t// NOTE: The referred field must be present at the top-level of the response\n\t// message type.\n\tResponseBody string `protobuf:\"bytes,12,opt,name=response_body,json=responseBody,proto3\" json:\"response_body,omitempty\"`\n\t// Additional HTTP bindings for the selector. Nested bindings must\n\t// not contain an `additional_bindings` field themselves (that is,\n\t// the nesting may only be one level deep).\n\tAdditionalBindings []*HttpRule `protobuf:\"bytes,11,rep,name=additional_bindings,json=additionalBindings,proto3\" json:\"additional_bindings,omitempty\"`\n}\n\nfunc (x *HttpRule) Reset() {\n\t*x = HttpRule{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_http_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *HttpRule) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpRule) ProtoMessage() {}\n\nfunc (x *HttpRule) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_http_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpRule.ProtoReflect.Descriptor instead.\nfunc (*HttpRule) Descriptor() ([]byte, []int) {\n\treturn file_google_api_http_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *HttpRule) GetSelector() string {\n\tif x != nil {\n\t\treturn x.Selector\n\t}\n\treturn \"\"\n}\n\nfunc (m *HttpRule) GetPattern() isHttpRule_Pattern {\n\tif m != nil {\n\t\treturn m.Pattern\n\t}\n\treturn nil\n}\n\nfunc (x *HttpRule) GetGet() string {\n\tif x, ok := x.GetPattern().(*HttpRule_Get); ok {\n\t\treturn x.Get\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpRule) GetPut() string {\n\tif x, ok := x.GetPattern().(*HttpRule_Put); ok {\n\t\treturn x.Put\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpRule) GetPost() string {\n\tif x, ok := x.GetPattern().(*HttpRule_Post); ok {\n\t\treturn x.Post\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpRule) GetDelete() string {\n\tif x, ok := x.GetPattern().(*HttpRule_Delete); ok {\n\t\treturn x.Delete\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpRule) GetPatch() string {\n\tif x, ok := x.GetPattern().(*HttpRule_Patch); ok {\n\t\treturn x.Patch\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpRule) GetCustom() *CustomHttpPattern {\n\tif x, ok := x.GetPattern().(*HttpRule_Custom); ok {\n\t\treturn x.Custom\n\t}\n\treturn nil\n}\n\nfunc (x *HttpRule) GetBody() string {\n\tif x != nil {\n\t\treturn x.Body\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpRule) GetResponseBody() string {\n\tif x != nil {\n\t\treturn x.ResponseBody\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpRule) GetAdditionalBindings() []*HttpRule {\n\tif x != nil {\n\t\treturn x.AdditionalBindings\n\t}\n\treturn nil\n}\n\ntype isHttpRule_Pattern interface {\n\tisHttpRule_Pattern()\n}\n\ntype HttpRule_Get struct {\n\t// Maps to HTTP GET. Used for listing and getting information about\n\t// resources.\n\tGet string `protobuf:\"bytes,2,opt,name=get,proto3,oneof\"`\n}\n\ntype HttpRule_Put struct {\n\t// Maps to HTTP PUT. Used for replacing a resource.\n\tPut string `protobuf:\"bytes,3,opt,name=put,proto3,oneof\"`\n}\n\ntype HttpRule_Post struct {\n\t// Maps to HTTP POST. Used for creating a resource or performing an action.\n\tPost string `protobuf:\"bytes,4,opt,name=post,proto3,oneof\"`\n}\n\ntype HttpRule_Delete struct {\n\t// Maps to HTTP DELETE. Used for deleting a resource.\n\tDelete string `protobuf:\"bytes,5,opt,name=delete,proto3,oneof\"`\n}\n\ntype HttpRule_Patch struct {\n\t// Maps to HTTP PATCH. Used for updating a resource.\n\tPatch string `protobuf:\"bytes,6,opt,name=patch,proto3,oneof\"`\n}\n\ntype HttpRule_Custom struct {\n\t// The custom pattern is used for specifying an HTTP method that is not\n\t// included in the `pattern` field, such as HEAD, or \"*\" to leave the\n\t// HTTP method unspecified for this rule. The wild-card rule is useful\n\t// for services that provide content to Web (HTML) clients.\n\tCustom *CustomHttpPattern `protobuf:\"bytes,8,opt,name=custom,proto3,oneof\"`\n}\n\nfunc (*HttpRule_Get) isHttpRule_Pattern() {}\n\nfunc (*HttpRule_Put) isHttpRule_Pattern() {}\n\nfunc (*HttpRule_Post) isHttpRule_Pattern() {}\n\nfunc (*HttpRule_Delete) isHttpRule_Pattern() {}\n\nfunc (*HttpRule_Patch) isHttpRule_Pattern() {}\n\nfunc (*HttpRule_Custom) isHttpRule_Pattern() {}\n\n// A custom pattern is used for defining custom HTTP verb.\ntype CustomHttpPattern struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The name of this custom HTTP verb.\n\tKind string `protobuf:\"bytes,1,opt,name=kind,proto3\" json:\"kind,omitempty\"`\n\t// The path matched by this custom verb.\n\tPath string `protobuf:\"bytes,2,opt,name=path,proto3\" json:\"path,omitempty\"`\n}\n\nfunc (x *CustomHttpPattern) Reset() {\n\t*x = CustomHttpPattern{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_http_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CustomHttpPattern) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CustomHttpPattern) ProtoMessage() {}\n\nfunc (x *CustomHttpPattern) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_http_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CustomHttpPattern.ProtoReflect.Descriptor instead.\nfunc (*CustomHttpPattern) Descriptor() ([]byte, []int) {\n\treturn file_google_api_http_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *CustomHttpPattern) GetKind() string {\n\tif x != nil {\n\t\treturn x.Kind\n\t}\n\treturn \"\"\n}\n\nfunc (x *CustomHttpPattern) GetPath() string {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn \"\"\n}\n\nvar File_google_api_http_proto protoreflect.FileDescriptor\n\nvar file_google_api_http_proto_rawDesc = []byte{\n\t0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x68, 0x74, 0x74,\n\t0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x61, 0x70, 0x69, 0x22, 0x79, 0x0a, 0x04, 0x48, 0x74, 0x74, 0x70, 0x12, 0x2a, 0x0a, 0x05, 0x72,\n\t0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65,\n\t0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x66, 0x75, 0x6c, 0x6c, 0x79,\n\t0x5f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64,\n\t0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,\n\t0x52, 0x1c, 0x66, 0x75, 0x6c, 0x6c, 0x79, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73,\n\t0x65, 0x72, 0x76, 0x65, 0x64, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xda,\n\t0x02, 0x0a, 0x08, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73,\n\t0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73,\n\t0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x03, 0x67, 0x65, 0x74, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x67, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x70,\n\t0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x70, 0x75, 0x74, 0x12,\n\t0x14, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,\n\t0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18,\n\t0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12,\n\t0x16, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,\n\t0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f,\n\t0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x74, 0x74, 0x70, 0x50,\n\t0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d,\n\t0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,\n\t0x62, 0x6f, 0x64, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,\n\t0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x45, 0x0a, 0x13, 0x61, 0x64, 0x64,\n\t0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,\n\t0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x12, 0x61, 0x64,\n\t0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,\n\t0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0x3b, 0x0a, 0x11, 0x43,\n\t0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x74, 0x74, 0x70, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,\n\t0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,\n\t0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x42, 0x67, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x09, 0x48, 0x74, 0x74, 0x70,\n\t0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61,\n\t0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61,\n\t0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50,\n\t0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_http_proto_rawDescOnce sync.Once\n\tfile_google_api_http_proto_rawDescData = file_google_api_http_proto_rawDesc\n)\n\nfunc file_google_api_http_proto_rawDescGZIP() []byte {\n\tfile_google_api_http_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_http_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_http_proto_rawDescData)\n\t})\n\treturn file_google_api_http_proto_rawDescData\n}\n\nvar file_google_api_http_proto_msgTypes = make([]protoimpl.MessageInfo, 3)\nvar file_google_api_http_proto_goTypes = []interface{}{\n\t(*Http)(nil),              // 0: google.api.Http\n\t(*HttpRule)(nil),          // 1: google.api.HttpRule\n\t(*CustomHttpPattern)(nil), // 2: google.api.CustomHttpPattern\n}\nvar file_google_api_http_proto_depIdxs = []int32{\n\t1, // 0: google.api.Http.rules:type_name -> google.api.HttpRule\n\t2, // 1: google.api.HttpRule.custom:type_name -> google.api.CustomHttpPattern\n\t1, // 2: google.api.HttpRule.additional_bindings:type_name -> google.api.HttpRule\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t3, // [3:3] is the sub-list for extension type_name\n\t3, // [3:3] is the sub-list for extension extendee\n\t0, // [0:3] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_http_proto_init() }\nfunc file_google_api_http_proto_init() {\n\tif File_google_api_http_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_http_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Http); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_http_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*HttpRule); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_http_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CustomHttpPattern); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tfile_google_api_http_proto_msgTypes[1].OneofWrappers = []interface{}{\n\t\t(*HttpRule_Get)(nil),\n\t\t(*HttpRule_Put)(nil),\n\t\t(*HttpRule_Post)(nil),\n\t\t(*HttpRule_Delete)(nil),\n\t\t(*HttpRule_Patch)(nil),\n\t\t(*HttpRule_Custom)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_http_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   3,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_http_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_http_proto_depIdxs,\n\t\tMessageInfos:      file_google_api_http_proto_msgTypes,\n\t}.Build()\n\tFile_google_api_http_proto = out.File\n\tfile_google_api_http_proto_rawDesc = nil\n\tfile_google_api_http_proto_goTypes = nil\n\tfile_google_api_http_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/annotations/resource.pb.go",
    "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v4.24.4\n// source: google/api/resource.proto\n\npackage annotations\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// A description of the historical or future-looking state of the\n// resource pattern.\ntype ResourceDescriptor_History int32\n\nconst (\n\t// The \"unset\" value.\n\tResourceDescriptor_HISTORY_UNSPECIFIED ResourceDescriptor_History = 0\n\t// The resource originally had one pattern and launched as such, and\n\t// additional patterns were added later.\n\tResourceDescriptor_ORIGINALLY_SINGLE_PATTERN ResourceDescriptor_History = 1\n\t// The resource has one pattern, but the API owner expects to add more\n\t// later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents\n\t// that from being necessary once there are multiple patterns.)\n\tResourceDescriptor_FUTURE_MULTI_PATTERN ResourceDescriptor_History = 2\n)\n\n// Enum value maps for ResourceDescriptor_History.\nvar (\n\tResourceDescriptor_History_name = map[int32]string{\n\t\t0: \"HISTORY_UNSPECIFIED\",\n\t\t1: \"ORIGINALLY_SINGLE_PATTERN\",\n\t\t2: \"FUTURE_MULTI_PATTERN\",\n\t}\n\tResourceDescriptor_History_value = map[string]int32{\n\t\t\"HISTORY_UNSPECIFIED\":       0,\n\t\t\"ORIGINALLY_SINGLE_PATTERN\": 1,\n\t\t\"FUTURE_MULTI_PATTERN\":      2,\n\t}\n)\n\nfunc (x ResourceDescriptor_History) Enum() *ResourceDescriptor_History {\n\tp := new(ResourceDescriptor_History)\n\t*p = x\n\treturn p\n}\n\nfunc (x ResourceDescriptor_History) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ResourceDescriptor_History) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_resource_proto_enumTypes[0].Descriptor()\n}\n\nfunc (ResourceDescriptor_History) Type() protoreflect.EnumType {\n\treturn &file_google_api_resource_proto_enumTypes[0]\n}\n\nfunc (x ResourceDescriptor_History) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ResourceDescriptor_History.Descriptor instead.\nfunc (ResourceDescriptor_History) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_resource_proto_rawDescGZIP(), []int{0, 0}\n}\n\n// A flag representing a specific style that a resource claims to conform to.\ntype ResourceDescriptor_Style int32\n\nconst (\n\t// The unspecified value. Do not use.\n\tResourceDescriptor_STYLE_UNSPECIFIED ResourceDescriptor_Style = 0\n\t// This resource is intended to be \"declarative-friendly\".\n\t//\n\t// Declarative-friendly resources must be more strictly consistent, and\n\t// setting this to true communicates to tools that this resource should\n\t// adhere to declarative-friendly expectations.\n\t//\n\t// Note: This is used by the API linter (linter.aip.dev) to enable\n\t// additional checks.\n\tResourceDescriptor_DECLARATIVE_FRIENDLY ResourceDescriptor_Style = 1\n)\n\n// Enum value maps for ResourceDescriptor_Style.\nvar (\n\tResourceDescriptor_Style_name = map[int32]string{\n\t\t0: \"STYLE_UNSPECIFIED\",\n\t\t1: \"DECLARATIVE_FRIENDLY\",\n\t}\n\tResourceDescriptor_Style_value = map[string]int32{\n\t\t\"STYLE_UNSPECIFIED\":    0,\n\t\t\"DECLARATIVE_FRIENDLY\": 1,\n\t}\n)\n\nfunc (x ResourceDescriptor_Style) Enum() *ResourceDescriptor_Style {\n\tp := new(ResourceDescriptor_Style)\n\t*p = x\n\treturn p\n}\n\nfunc (x ResourceDescriptor_Style) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ResourceDescriptor_Style) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_resource_proto_enumTypes[1].Descriptor()\n}\n\nfunc (ResourceDescriptor_Style) Type() protoreflect.EnumType {\n\treturn &file_google_api_resource_proto_enumTypes[1]\n}\n\nfunc (x ResourceDescriptor_Style) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ResourceDescriptor_Style.Descriptor instead.\nfunc (ResourceDescriptor_Style) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_resource_proto_rawDescGZIP(), []int{0, 1}\n}\n\n// A simple descriptor of a resource type.\n//\n// ResourceDescriptor annotates a resource message (either by means of a\n// protobuf annotation or use in the service config), and associates the\n// resource's schema, the resource type, and the pattern of the resource name.\n//\n// Example:\n//\n//\tmessage Topic {\n//\t  // Indicates this message defines a resource schema.\n//\t  // Declares the resource type in the format of {service}/{kind}.\n//\t  // For Kubernetes resources, the format is {api group}/{kind}.\n//\t  option (google.api.resource) = {\n//\t    type: \"pubsub.googleapis.com/Topic\"\n//\t    pattern: \"projects/{project}/topics/{topic}\"\n//\t  };\n//\t}\n//\n// The ResourceDescriptor Yaml config will look like:\n//\n//\tresources:\n//\t- type: \"pubsub.googleapis.com/Topic\"\n//\t  pattern: \"projects/{project}/topics/{topic}\"\n//\n// Sometimes, resources have multiple patterns, typically because they can\n// live under multiple parents.\n//\n// Example:\n//\n//\tmessage LogEntry {\n//\t  option (google.api.resource) = {\n//\t    type: \"logging.googleapis.com/LogEntry\"\n//\t    pattern: \"projects/{project}/logs/{log}\"\n//\t    pattern: \"folders/{folder}/logs/{log}\"\n//\t    pattern: \"organizations/{organization}/logs/{log}\"\n//\t    pattern: \"billingAccounts/{billing_account}/logs/{log}\"\n//\t  };\n//\t}\n//\n// The ResourceDescriptor Yaml config will look like:\n//\n//\tresources:\n//\t- type: 'logging.googleapis.com/LogEntry'\n//\t  pattern: \"projects/{project}/logs/{log}\"\n//\t  pattern: \"folders/{folder}/logs/{log}\"\n//\t  pattern: \"organizations/{organization}/logs/{log}\"\n//\t  pattern: \"billingAccounts/{billing_account}/logs/{log}\"\ntype ResourceDescriptor struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The resource type. It must be in the format of\n\t// {service_name}/{resource_type_kind}. The `resource_type_kind` must be\n\t// singular and must not include version numbers.\n\t//\n\t// Example: `storage.googleapis.com/Bucket`\n\t//\n\t// The value of the resource_type_kind must follow the regular expression\n\t// /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and\n\t// should use PascalCase (UpperCamelCase). The maximum number of\n\t// characters allowed for the `resource_type_kind` is 100.\n\tType string `protobuf:\"bytes,1,opt,name=type,proto3\" json:\"type,omitempty\"`\n\t// Optional. The relative resource name pattern associated with this resource\n\t// type. The DNS prefix of the full resource name shouldn't be specified here.\n\t//\n\t// The path pattern must follow the syntax, which aligns with HTTP binding\n\t// syntax:\n\t//\n\t//\tTemplate = Segment { \"/\" Segment } ;\n\t//\tSegment = LITERAL | Variable ;\n\t//\tVariable = \"{\" LITERAL \"}\" ;\n\t//\n\t// Examples:\n\t//\n\t//   - \"projects/{project}/topics/{topic}\"\n\t//   - \"projects/{project}/knowledgeBases/{knowledge_base}\"\n\t//\n\t// The components in braces correspond to the IDs for each resource in the\n\t// hierarchy. It is expected that, if multiple patterns are provided,\n\t// the same component name (e.g. \"project\") refers to IDs of the same\n\t// type of resource.\n\tPattern []string `protobuf:\"bytes,2,rep,name=pattern,proto3\" json:\"pattern,omitempty\"`\n\t// Optional. The field on the resource that designates the resource name\n\t// field. If omitted, this is assumed to be \"name\".\n\tNameField string `protobuf:\"bytes,3,opt,name=name_field,json=nameField,proto3\" json:\"name_field,omitempty\"`\n\t// Optional. The historical or future-looking state of the resource pattern.\n\t//\n\t// Example:\n\t//\n\t//\t// The InspectTemplate message originally only supported resource\n\t//\t// names with organization, and project was added later.\n\t//\tmessage InspectTemplate {\n\t//\t  option (google.api.resource) = {\n\t//\t    type: \"dlp.googleapis.com/InspectTemplate\"\n\t//\t    pattern:\n\t//\t    \"organizations/{organization}/inspectTemplates/{inspect_template}\"\n\t//\t    pattern: \"projects/{project}/inspectTemplates/{inspect_template}\"\n\t//\t    history: ORIGINALLY_SINGLE_PATTERN\n\t//\t  };\n\t//\t}\n\tHistory ResourceDescriptor_History `protobuf:\"varint,4,opt,name=history,proto3,enum=google.api.ResourceDescriptor_History\" json:\"history,omitempty\"`\n\t// The plural name used in the resource name and permission names, such as\n\t// 'projects' for the resource name of 'projects/{project}' and the permission\n\t// name of 'cloudresourcemanager.googleapis.com/projects.get'. One exception\n\t// to this is for Nested Collections that have stuttering names, as defined\n\t// in [AIP-122](https://google.aip.dev/122#nested-collections), where the\n\t// collection ID in the resource name pattern does not necessarily directly\n\t// match the `plural` value.\n\t//\n\t// It is the same concept of the `plural` field in k8s CRD spec\n\t// https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/\n\t//\n\t// Note: The plural form is required even for singleton resources. See\n\t// https://aip.dev/156\n\tPlural string `protobuf:\"bytes,5,opt,name=plural,proto3\" json:\"plural,omitempty\"`\n\t// The same concept of the `singular` field in k8s CRD spec\n\t// https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/\n\t// Such as \"project\" for the `resourcemanager.googleapis.com/Project` type.\n\tSingular string `protobuf:\"bytes,6,opt,name=singular,proto3\" json:\"singular,omitempty\"`\n\t// Style flag(s) for this resource.\n\t// These indicate that a resource is expected to conform to a given\n\t// style. See the specific style flags for additional information.\n\tStyle []ResourceDescriptor_Style `protobuf:\"varint,10,rep,packed,name=style,proto3,enum=google.api.ResourceDescriptor_Style\" json:\"style,omitempty\"`\n}\n\nfunc (x *ResourceDescriptor) Reset() {\n\t*x = ResourceDescriptor{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_resource_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ResourceDescriptor) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ResourceDescriptor) ProtoMessage() {}\n\nfunc (x *ResourceDescriptor) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_resource_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ResourceDescriptor.ProtoReflect.Descriptor instead.\nfunc (*ResourceDescriptor) Descriptor() ([]byte, []int) {\n\treturn file_google_api_resource_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ResourceDescriptor) GetType() string {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceDescriptor) GetPattern() []string {\n\tif x != nil {\n\t\treturn x.Pattern\n\t}\n\treturn nil\n}\n\nfunc (x *ResourceDescriptor) GetNameField() string {\n\tif x != nil {\n\t\treturn x.NameField\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceDescriptor) GetHistory() ResourceDescriptor_History {\n\tif x != nil {\n\t\treturn x.History\n\t}\n\treturn ResourceDescriptor_HISTORY_UNSPECIFIED\n}\n\nfunc (x *ResourceDescriptor) GetPlural() string {\n\tif x != nil {\n\t\treturn x.Plural\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceDescriptor) GetSingular() string {\n\tif x != nil {\n\t\treturn x.Singular\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceDescriptor) GetStyle() []ResourceDescriptor_Style {\n\tif x != nil {\n\t\treturn x.Style\n\t}\n\treturn nil\n}\n\n// Defines a proto annotation that describes a string field that refers to\n// an API resource.\ntype ResourceReference struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The resource type that the annotated field references.\n\t//\n\t// Example:\n\t//\n\t//\tmessage Subscription {\n\t//\t  string topic = 2 [(google.api.resource_reference) = {\n\t//\t    type: \"pubsub.googleapis.com/Topic\"\n\t//\t  }];\n\t//\t}\n\t//\n\t// Occasionally, a field may reference an arbitrary resource. In this case,\n\t// APIs use the special value * in their resource reference.\n\t//\n\t// Example:\n\t//\n\t//\tmessage GetIamPolicyRequest {\n\t//\t  string resource = 2 [(google.api.resource_reference) = {\n\t//\t    type: \"*\"\n\t//\t  }];\n\t//\t}\n\tType string `protobuf:\"bytes,1,opt,name=type,proto3\" json:\"type,omitempty\"`\n\t// The resource type of a child collection that the annotated field\n\t// references. This is useful for annotating the `parent` field that\n\t// doesn't have a fixed resource type.\n\t//\n\t// Example:\n\t//\n\t//\tmessage ListLogEntriesRequest {\n\t//\t  string parent = 1 [(google.api.resource_reference) = {\n\t//\t    child_type: \"logging.googleapis.com/LogEntry\"\n\t//\t  };\n\t//\t}\n\tChildType string `protobuf:\"bytes,2,opt,name=child_type,json=childType,proto3\" json:\"child_type,omitempty\"`\n}\n\nfunc (x *ResourceReference) Reset() {\n\t*x = ResourceReference{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_resource_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ResourceReference) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ResourceReference) ProtoMessage() {}\n\nfunc (x *ResourceReference) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_resource_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ResourceReference.ProtoReflect.Descriptor instead.\nfunc (*ResourceReference) Descriptor() ([]byte, []int) {\n\treturn file_google_api_resource_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ResourceReference) GetType() string {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceReference) GetChildType() string {\n\tif x != nil {\n\t\treturn x.ChildType\n\t}\n\treturn \"\"\n}\n\nvar file_google_api_resource_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: (*ResourceReference)(nil),\n\t\tField:         1055,\n\t\tName:          \"google.api.resource_reference\",\n\t\tTag:           \"bytes,1055,opt,name=resource_reference\",\n\t\tFilename:      \"google/api/resource.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.FileOptions)(nil),\n\t\tExtensionType: ([]*ResourceDescriptor)(nil),\n\t\tField:         1053,\n\t\tName:          \"google.api.resource_definition\",\n\t\tTag:           \"bytes,1053,rep,name=resource_definition\",\n\t\tFilename:      \"google/api/resource.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.MessageOptions)(nil),\n\t\tExtensionType: (*ResourceDescriptor)(nil),\n\t\tField:         1053,\n\t\tName:          \"google.api.resource\",\n\t\tTag:           \"bytes,1053,opt,name=resource\",\n\t\tFilename:      \"google/api/resource.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// An annotation that describes a resource reference, see\n\t// [ResourceReference][].\n\t//\n\t// optional google.api.ResourceReference resource_reference = 1055;\n\tE_ResourceReference = &file_google_api_resource_proto_extTypes[0]\n)\n\n// Extension fields to descriptorpb.FileOptions.\nvar (\n\t// An annotation that describes a resource definition without a corresponding\n\t// message; see [ResourceDescriptor][].\n\t//\n\t// repeated google.api.ResourceDescriptor resource_definition = 1053;\n\tE_ResourceDefinition = &file_google_api_resource_proto_extTypes[1]\n)\n\n// Extension fields to descriptorpb.MessageOptions.\nvar (\n\t// An annotation that describes a resource definition, see\n\t// [ResourceDescriptor][].\n\t//\n\t// optional google.api.ResourceDescriptor resource = 1053;\n\tE_Resource = &file_google_api_resource_proto_extTypes[2]\n)\n\nvar File_google_api_resource_proto protoreflect.FileDescriptor\n\nvar file_google_api_resource_proto_rawDesc = []byte{\n\t0x0a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,\n\t0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaa, 0x03, 0x0a, 0x12, 0x52, 0x65,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,\n\t0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,\n\t0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18,\n\t0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1d,\n\t0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x40, 0x0a,\n\t0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x48,\n\t0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12,\n\t0x16, 0x0a, 0x06, 0x70, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x06, 0x70, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x67, 0x75,\n\t0x6c, 0x61, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x69, 0x6e, 0x67, 0x75,\n\t0x6c, 0x61, 0x72, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x03,\n\t0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,\n\t0x6f, 0x72, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x05, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x22,\n\t0x5b, 0x0a, 0x07, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x13, 0x48, 0x49,\n\t0x53, 0x54, 0x4f, 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,\n\t0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x52, 0x49, 0x47, 0x49, 0x4e, 0x41, 0x4c, 0x4c,\n\t0x59, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4e,\n\t0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x55, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x55, 0x4c,\n\t0x54, 0x49, 0x5f, 0x50, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4e, 0x10, 0x02, 0x22, 0x38, 0x0a, 0x05,\n\t0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x5f, 0x55,\n\t0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14,\n\t0x44, 0x45, 0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x46, 0x52, 0x49, 0x45,\n\t0x4e, 0x44, 0x4c, 0x59, 0x10, 0x01, 0x22, 0x46, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74,\n\t0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,\n\t0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x6c,\n\t0x0a, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72,\n\t0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x18, 0x9f, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x3a, 0x6e, 0x0a, 0x13,\n\t0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74,\n\t0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,\n\t0x73, 0x18, 0x9d, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65,\n\t0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x5c, 0x0a, 0x08,\n\t0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,\n\t0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9d, 0x08, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,\n\t0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x6b, 0x0a, 0x0e, 0x63, 0x6f,\n\t0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0d, 0x52, 0x65,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,\n\t0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,\n\t0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_resource_proto_rawDescOnce sync.Once\n\tfile_google_api_resource_proto_rawDescData = file_google_api_resource_proto_rawDesc\n)\n\nfunc file_google_api_resource_proto_rawDescGZIP() []byte {\n\tfile_google_api_resource_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_resource_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_resource_proto_rawDescData)\n\t})\n\treturn file_google_api_resource_proto_rawDescData\n}\n\nvar file_google_api_resource_proto_enumTypes = make([]protoimpl.EnumInfo, 2)\nvar file_google_api_resource_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_google_api_resource_proto_goTypes = []interface{}{\n\t(ResourceDescriptor_History)(0),     // 0: google.api.ResourceDescriptor.History\n\t(ResourceDescriptor_Style)(0),       // 1: google.api.ResourceDescriptor.Style\n\t(*ResourceDescriptor)(nil),          // 2: google.api.ResourceDescriptor\n\t(*ResourceReference)(nil),           // 3: google.api.ResourceReference\n\t(*descriptorpb.FieldOptions)(nil),   // 4: google.protobuf.FieldOptions\n\t(*descriptorpb.FileOptions)(nil),    // 5: google.protobuf.FileOptions\n\t(*descriptorpb.MessageOptions)(nil), // 6: google.protobuf.MessageOptions\n}\nvar file_google_api_resource_proto_depIdxs = []int32{\n\t0, // 0: google.api.ResourceDescriptor.history:type_name -> google.api.ResourceDescriptor.History\n\t1, // 1: google.api.ResourceDescriptor.style:type_name -> google.api.ResourceDescriptor.Style\n\t4, // 2: google.api.resource_reference:extendee -> google.protobuf.FieldOptions\n\t5, // 3: google.api.resource_definition:extendee -> google.protobuf.FileOptions\n\t6, // 4: google.api.resource:extendee -> google.protobuf.MessageOptions\n\t3, // 5: google.api.resource_reference:type_name -> google.api.ResourceReference\n\t2, // 6: google.api.resource_definition:type_name -> google.api.ResourceDescriptor\n\t2, // 7: google.api.resource:type_name -> google.api.ResourceDescriptor\n\t8, // [8:8] is the sub-list for method output_type\n\t8, // [8:8] is the sub-list for method input_type\n\t5, // [5:8] is the sub-list for extension type_name\n\t2, // [2:5] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_resource_proto_init() }\nfunc file_google_api_resource_proto_init() {\n\tif File_google_api_resource_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_resource_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ResourceDescriptor); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_resource_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ResourceReference); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_resource_proto_rawDesc,\n\t\t\tNumEnums:      2,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 3,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_resource_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_resource_proto_depIdxs,\n\t\tEnumInfos:         file_google_api_resource_proto_enumTypes,\n\t\tMessageInfos:      file_google_api_resource_proto_msgTypes,\n\t\tExtensionInfos:    file_google_api_resource_proto_extTypes,\n\t}.Build()\n\tFile_google_api_resource_proto = out.File\n\tfile_google_api_resource_proto_rawDesc = nil\n\tfile_google_api_resource_proto_goTypes = nil\n\tfile_google_api_resource_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/annotations/routing.pb.go",
    "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v4.24.4\n// source: google/api/routing.proto\n\npackage annotations\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Specifies the routing information that should be sent along with the request\n// in the form of routing header.\n// **NOTE:** All service configuration rules follow the \"last one wins\" order.\n//\n// The examples below will apply to an RPC which has the following request type:\n//\n// Message Definition:\n//\n//\tmessage Request {\n//\t  // The name of the Table\n//\t  // Values can be of the following formats:\n//\t  // - `projects/<project>/tables/<table>`\n//\t  // - `projects/<project>/instances/<instance>/tables/<table>`\n//\t  // - `region/<region>/zones/<zone>/tables/<table>`\n//\t  string table_name = 1;\n//\n//\t  // This value specifies routing for replication.\n//\t  // It can be in the following formats:\n//\t  // - `profiles/<profile_id>`\n//\t  // - a legacy `profile_id` that can be any string\n//\t  string app_profile_id = 2;\n//\t}\n//\n// Example message:\n//\n//\t{\n//\t  table_name: projects/proj_foo/instances/instance_bar/table/table_baz,\n//\t  app_profile_id: profiles/prof_qux\n//\t}\n//\n// The routing header consists of one or multiple key-value pairs. The order of\n// the key-value pairs is undefined, the order of the `routing_parameters` in\n// the `RoutingRule` only matters for the evaluation order of the path\n// templates when `field` is the same. See the examples below for more details.\n//\n// Every key and value in the routing header must be percent-encoded,\n// and joined together in the following format: `key1=value1&key2=value2`.\n// The examples below skip the percent-encoding for readability.\n//\n// # Example 1\n//\n// Extracting a field from the request to put into the routing header\n// unchanged, with the key equal to the field name.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // Take the `app_profile_id`.\n//\t  routing_parameters {\n//\t    field: \"app_profile_id\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params: app_profile_id=profiles/prof_qux\n//\n// # Example 2\n//\n// Extracting a field from the request to put into the routing header\n// unchanged, with the key different from the field name.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // Take the `app_profile_id`, but name it `routing_id` in the header.\n//\t  routing_parameters {\n//\t    field: \"app_profile_id\"\n//\t    path_template: \"{routing_id=**}\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params: routing_id=profiles/prof_qux\n//\n// # Example 3\n//\n// Extracting a field from the request to put into the routing\n// header, while matching a path template syntax on the field's value.\n//\n// NB: it is more useful to send nothing than to send garbage for the purpose\n// of dynamic routing, since garbage pollutes cache. Thus the matching.\n//\n// # Sub-example 3a\n//\n// The field matches the template.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // Take the `table_name`, if it's well-formed (with project-based\n//\t  // syntax).\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{table_name=projects/*/instances/*/**}\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params:\n//\ttable_name=projects/proj_foo/instances/instance_bar/table/table_baz\n//\n// # Sub-example 3b\n//\n// The field does not match the template.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // Take the `table_name`, if it's well-formed (with region-based\n//\t  // syntax).\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{table_name=regions/*/zones/*/**}\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\t<no routing header will be sent>\n//\n// # Sub-example 3c\n//\n// Multiple alternative conflictingly named path templates are\n// specified. The one that matches is used to construct the header.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // Take the `table_name`, if it's well-formed, whether\n//\t  // using the region- or projects-based syntax.\n//\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{table_name=regions/*/zones/*/**}\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{table_name=projects/*/instances/*/**}\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params:\n//\ttable_name=projects/proj_foo/instances/instance_bar/table/table_baz\n//\n// # Example 4\n//\n// Extracting a single routing header key-value pair by matching a\n// template syntax on (a part of) a single request field.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // Take just the project id from the `table_name` field.\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{routing_id=projects/*}/**\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params: routing_id=projects/proj_foo\n//\n// # Example 5\n//\n// Extracting a single routing header key-value pair by matching\n// several conflictingly named path templates on (parts of) a single request\n// field. The last template to match \"wins\" the conflict.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // If the `table_name` does not have instances information,\n//\t  // take just the project id for routing.\n//\t  // Otherwise take project + instance.\n//\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{routing_id=projects/*}/**\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{routing_id=projects/*/instances/*}/**\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params:\n//\trouting_id=projects/proj_foo/instances/instance_bar\n//\n// # Example 6\n//\n// Extracting multiple routing header key-value pairs by matching\n// several non-conflicting path templates on (parts of) a single request field.\n//\n// # Sub-example 6a\n//\n// Make the templates strict, so that if the `table_name` does not\n// have an instance information, nothing is sent.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // The routing code needs two keys instead of one composite\n//\t  // but works only for the tables with the \"project-instance\" name\n//\t  // syntax.\n//\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{project_id=projects/*}/instances/*/**\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"projects/*/{instance_id=instances/*}/**\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params:\n//\tproject_id=projects/proj_foo&instance_id=instances/instance_bar\n//\n// # Sub-example 6b\n//\n// Make the templates loose, so that if the `table_name` does not\n// have an instance information, just the project id part is sent.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // The routing code wants two keys instead of one composite\n//\t  // but will work with just the `project_id` for tables without\n//\t  // an instance in the `table_name`.\n//\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{project_id=projects/*}/**\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"projects/*/{instance_id=instances/*}/**\"\n//\t  }\n//\t};\n//\n// result (is the same as 6a for our example message because it has the instance\n// information):\n//\n//\tx-goog-request-params:\n//\tproject_id=projects/proj_foo&instance_id=instances/instance_bar\n//\n// # Example 7\n//\n// Extracting multiple routing header key-value pairs by matching\n// several path templates on multiple request fields.\n//\n// NB: note that here there is no way to specify sending nothing if one of the\n// fields does not match its template. E.g. if the `table_name` is in the wrong\n// format, the `project_id` will not be sent, but the `routing_id` will be.\n// The backend routing code has to be aware of that and be prepared to not\n// receive a full complement of keys if it expects multiple.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // The routing needs both `project_id` and `routing_id`\n//\t  // (from the `app_profile_id` field) for routing.\n//\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{project_id=projects/*}/**\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"app_profile_id\"\n//\t    path_template: \"{routing_id=**}\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params:\n//\tproject_id=projects/proj_foo&routing_id=profiles/prof_qux\n//\n// # Example 8\n//\n// Extracting a single routing header key-value pair by matching\n// several conflictingly named path templates on several request fields. The\n// last template to match \"wins\" the conflict.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // The `routing_id` can be a project id or a region id depending on\n//\t  // the table name format, but only if the `app_profile_id` is not set.\n//\t  // If `app_profile_id` is set it should be used instead.\n//\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{routing_id=projects/*}/**\"\n//\t  }\n//\t  routing_parameters {\n//\t     field: \"table_name\"\n//\t     path_template: \"{routing_id=regions/*}/**\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"app_profile_id\"\n//\t    path_template: \"{routing_id=**}\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params: routing_id=profiles/prof_qux\n//\n// # Example 9\n//\n// Bringing it all together.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // For routing both `table_location` and a `routing_id` are needed.\n//\t  //\n//\t  // table_location can be either an instance id or a region+zone id.\n//\t  //\n//\t  // For `routing_id`, take the value of `app_profile_id`\n//\t  // - If it's in the format `profiles/<profile_id>`, send\n//\t  // just the `<profile_id>` part.\n//\t  // - If it's any other literal, send it as is.\n//\t  // If the `app_profile_id` is empty, and the `table_name` starts with\n//\t  // the project_id, send that instead.\n//\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"projects/*/{table_location=instances/*}/tables/*\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{table_location=regions/*/zones/*}/tables/*\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{routing_id=projects/*}/**\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"app_profile_id\"\n//\t    path_template: \"{routing_id=**}\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"app_profile_id\"\n//\t    path_template: \"profiles/{routing_id=*}\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params:\n//\ttable_location=instances/instance_bar&routing_id=prof_qux\ntype RoutingRule struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// A collection of Routing Parameter specifications.\n\t// **NOTE:** If multiple Routing Parameters describe the same key\n\t// (via the `path_template` field or via the `field` field when\n\t// `path_template` is not provided), \"last one wins\" rule\n\t// determines which Parameter gets used.\n\t// See the examples for more details.\n\tRoutingParameters []*RoutingParameter `protobuf:\"bytes,2,rep,name=routing_parameters,json=routingParameters,proto3\" json:\"routing_parameters,omitempty\"`\n}\n\nfunc (x *RoutingRule) Reset() {\n\t*x = RoutingRule{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_routing_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RoutingRule) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RoutingRule) ProtoMessage() {}\n\nfunc (x *RoutingRule) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_routing_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RoutingRule.ProtoReflect.Descriptor instead.\nfunc (*RoutingRule) Descriptor() ([]byte, []int) {\n\treturn file_google_api_routing_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *RoutingRule) GetRoutingParameters() []*RoutingParameter {\n\tif x != nil {\n\t\treturn x.RoutingParameters\n\t}\n\treturn nil\n}\n\n// A projection from an input message to the GRPC or REST header.\ntype RoutingParameter struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// A request field to extract the header key-value pair from.\n\tField string `protobuf:\"bytes,1,opt,name=field,proto3\" json:\"field,omitempty\"`\n\t// A pattern matching the key-value field. Optional.\n\t// If not specified, the whole field specified in the `field` field will be\n\t// taken as value, and its name used as key. If specified, it MUST contain\n\t// exactly one named segment (along with any number of unnamed segments) The\n\t// pattern will be matched over the field specified in the `field` field, then\n\t// if the match is successful:\n\t// - the name of the single named segment will be used as a header name,\n\t// - the match value of the segment will be used as a header value;\n\t// if the match is NOT successful, nothing will be sent.\n\t//\n\t// Example:\n\t//\n\t//\t          -- This is a field in the request message\n\t//\t         |   that the header value will be extracted from.\n\t//\t         |\n\t//\t         |                     -- This is the key name in the\n\t//\t         |                    |   routing header.\n\t//\t         V                    |\n\t//\tfield: \"table_name\"           v\n\t//\tpath_template: \"projects/*/{table_location=instances/*}/tables/*\"\n\t//\t                                           ^            ^\n\t//\t                                           |            |\n\t//\t  In the {} brackets is the pattern that --             |\n\t//\t  specifies what to extract from the                    |\n\t//\t  field as a value to be sent.                          |\n\t//\t                                                        |\n\t//\t The string in the field must match the whole pattern --\n\t//\t before brackets, inside brackets, after brackets.\n\t//\n\t// When looking at this specific example, we can see that:\n\t//   - A key-value pair with the key `table_location`\n\t//     and the value matching `instances/*` should be added\n\t//     to the x-goog-request-params routing header.\n\t//   - The value is extracted from the request message's `table_name` field\n\t//     if it matches the full pattern specified:\n\t//     `projects/*/instances/*/tables/*`.\n\t//\n\t// **NB:** If the `path_template` field is not provided, the key name is\n\t// equal to the field name, and the whole field should be sent as a value.\n\t// This makes the pattern for the field and the value functionally equivalent\n\t// to `**`, and the configuration\n\t//\n\t//\t{\n\t//\t  field: \"table_name\"\n\t//\t}\n\t//\n\t// is a functionally equivalent shorthand to:\n\t//\n\t//\t{\n\t//\t  field: \"table_name\"\n\t//\t  path_template: \"{table_name=**}\"\n\t//\t}\n\t//\n\t// See Example 1 for more details.\n\tPathTemplate string `protobuf:\"bytes,2,opt,name=path_template,json=pathTemplate,proto3\" json:\"path_template,omitempty\"`\n}\n\nfunc (x *RoutingParameter) Reset() {\n\t*x = RoutingParameter{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_routing_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RoutingParameter) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RoutingParameter) ProtoMessage() {}\n\nfunc (x *RoutingParameter) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_routing_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RoutingParameter.ProtoReflect.Descriptor instead.\nfunc (*RoutingParameter) Descriptor() ([]byte, []int) {\n\treturn file_google_api_routing_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *RoutingParameter) GetField() string {\n\tif x != nil {\n\t\treturn x.Field\n\t}\n\treturn \"\"\n}\n\nfunc (x *RoutingParameter) GetPathTemplate() string {\n\tif x != nil {\n\t\treturn x.PathTemplate\n\t}\n\treturn \"\"\n}\n\nvar file_google_api_routing_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.MethodOptions)(nil),\n\t\tExtensionType: (*RoutingRule)(nil),\n\t\tField:         72295729,\n\t\tName:          \"google.api.routing\",\n\t\tTag:           \"bytes,72295729,opt,name=routing\",\n\t\tFilename:      \"google/api/routing.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.MethodOptions.\nvar (\n\t// See RoutingRule.\n\t//\n\t// optional google.api.RoutingRule routing = 72295729;\n\tE_Routing = &file_google_api_routing_proto_extTypes[0]\n)\n\nvar File_google_api_routing_proto protoreflect.FileDescriptor\n\nvar file_google_api_routing_proto_rawDesc = []byte{\n\t0x0a, 0x18, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x6f, 0x75,\n\t0x74, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,\n\t0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5a, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74,\n\t0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x12, 0x72, 0x6f, 0x75, 0x74, 0x69,\n\t0x6e, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20,\n\t0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65,\n\t0x72, 0x52, 0x11, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,\n\t0x74, 0x65, 0x72, 0x73, 0x22, 0x4d, 0x0a, 0x10, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50,\n\t0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c,\n\t0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x23,\n\t0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18,\n\t0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x54, 0x65, 0x6d, 0x70, 0x6c,\n\t0x61, 0x74, 0x65, 0x3a, 0x54, 0x0a, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1e,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,\n\t0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb1,\n\t0xca, 0xbc, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65,\n\t0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x6a, 0x0a, 0x0e, 0x63, 0x6f, 0x6d,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0c, 0x52, 0x6f, 0x75,\n\t0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67,\n\t0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,\n\t0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02,\n\t0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_routing_proto_rawDescOnce sync.Once\n\tfile_google_api_routing_proto_rawDescData = file_google_api_routing_proto_rawDesc\n)\n\nfunc file_google_api_routing_proto_rawDescGZIP() []byte {\n\tfile_google_api_routing_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_routing_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_routing_proto_rawDescData)\n\t})\n\treturn file_google_api_routing_proto_rawDescData\n}\n\nvar file_google_api_routing_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_google_api_routing_proto_goTypes = []interface{}{\n\t(*RoutingRule)(nil),                // 0: google.api.RoutingRule\n\t(*RoutingParameter)(nil),           // 1: google.api.RoutingParameter\n\t(*descriptorpb.MethodOptions)(nil), // 2: google.protobuf.MethodOptions\n}\nvar file_google_api_routing_proto_depIdxs = []int32{\n\t1, // 0: google.api.RoutingRule.routing_parameters:type_name -> google.api.RoutingParameter\n\t2, // 1: google.api.routing:extendee -> google.protobuf.MethodOptions\n\t0, // 2: google.api.routing:type_name -> google.api.RoutingRule\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t2, // [2:3] is the sub-list for extension type_name\n\t1, // [1:2] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_routing_proto_init() }\nfunc file_google_api_routing_proto_init() {\n\tif File_google_api_routing_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_routing_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RoutingRule); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_routing_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RoutingParameter); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_routing_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_routing_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_routing_proto_depIdxs,\n\t\tMessageInfos:      file_google_api_routing_proto_msgTypes,\n\t\tExtensionInfos:    file_google_api_routing_proto_extTypes,\n\t}.Build()\n\tFile_google_api_routing_proto = out.File\n\tfile_google_api_routing_proto_rawDesc = nil\n\tfile_google_api_routing_proto_goTypes = nil\n\tfile_google_api_routing_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/checked.pb.go",
    "content": "// Copyright 2025 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v4.24.4\n// source: google/api/expr/v1alpha1/checked.proto\n\npackage expr\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\temptypb \"google.golang.org/protobuf/types/known/emptypb\"\n\tstructpb \"google.golang.org/protobuf/types/known/structpb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// CEL primitive types.\ntype Type_PrimitiveType int32\n\nconst (\n\t// Unspecified type.\n\tType_PRIMITIVE_TYPE_UNSPECIFIED Type_PrimitiveType = 0\n\t// Boolean type.\n\tType_BOOL Type_PrimitiveType = 1\n\t// Int64 type.\n\t//\n\t// Proto-based integer values are widened to int64.\n\tType_INT64 Type_PrimitiveType = 2\n\t// Uint64 type.\n\t//\n\t// Proto-based unsigned integer values are widened to uint64.\n\tType_UINT64 Type_PrimitiveType = 3\n\t// Double type.\n\t//\n\t// Proto-based float values are widened to double values.\n\tType_DOUBLE Type_PrimitiveType = 4\n\t// String type.\n\tType_STRING Type_PrimitiveType = 5\n\t// Bytes type.\n\tType_BYTES Type_PrimitiveType = 6\n)\n\n// Enum value maps for Type_PrimitiveType.\nvar (\n\tType_PrimitiveType_name = map[int32]string{\n\t\t0: \"PRIMITIVE_TYPE_UNSPECIFIED\",\n\t\t1: \"BOOL\",\n\t\t2: \"INT64\",\n\t\t3: \"UINT64\",\n\t\t4: \"DOUBLE\",\n\t\t5: \"STRING\",\n\t\t6: \"BYTES\",\n\t}\n\tType_PrimitiveType_value = map[string]int32{\n\t\t\"PRIMITIVE_TYPE_UNSPECIFIED\": 0,\n\t\t\"BOOL\":                       1,\n\t\t\"INT64\":                      2,\n\t\t\"UINT64\":                     3,\n\t\t\"DOUBLE\":                     4,\n\t\t\"STRING\":                     5,\n\t\t\"BYTES\":                      6,\n\t}\n)\n\nfunc (x Type_PrimitiveType) Enum() *Type_PrimitiveType {\n\tp := new(Type_PrimitiveType)\n\t*p = x\n\treturn p\n}\n\nfunc (x Type_PrimitiveType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (Type_PrimitiveType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_expr_v1alpha1_checked_proto_enumTypes[0].Descriptor()\n}\n\nfunc (Type_PrimitiveType) Type() protoreflect.EnumType {\n\treturn &file_google_api_expr_v1alpha1_checked_proto_enumTypes[0]\n}\n\nfunc (x Type_PrimitiveType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use Type_PrimitiveType.Descriptor instead.\nfunc (Type_PrimitiveType) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_checked_proto_rawDescGZIP(), []int{1, 0}\n}\n\n// Well-known protobuf types treated with first-class support in CEL.\ntype Type_WellKnownType int32\n\nconst (\n\t// Unspecified type.\n\tType_WELL_KNOWN_TYPE_UNSPECIFIED Type_WellKnownType = 0\n\t// Well-known protobuf.Any type.\n\t//\n\t// Any types are a polymorphic message type. During type-checking they are\n\t// treated like `DYN` types, but at runtime they are resolved to a specific\n\t// message type specified at evaluation time.\n\tType_ANY Type_WellKnownType = 1\n\t// Well-known protobuf.Timestamp type, internally referenced as `timestamp`.\n\tType_TIMESTAMP Type_WellKnownType = 2\n\t// Well-known protobuf.Duration type, internally referenced as `duration`.\n\tType_DURATION Type_WellKnownType = 3\n)\n\n// Enum value maps for Type_WellKnownType.\nvar (\n\tType_WellKnownType_name = map[int32]string{\n\t\t0: \"WELL_KNOWN_TYPE_UNSPECIFIED\",\n\t\t1: \"ANY\",\n\t\t2: \"TIMESTAMP\",\n\t\t3: \"DURATION\",\n\t}\n\tType_WellKnownType_value = map[string]int32{\n\t\t\"WELL_KNOWN_TYPE_UNSPECIFIED\": 0,\n\t\t\"ANY\":                         1,\n\t\t\"TIMESTAMP\":                   2,\n\t\t\"DURATION\":                    3,\n\t}\n)\n\nfunc (x Type_WellKnownType) Enum() *Type_WellKnownType {\n\tp := new(Type_WellKnownType)\n\t*p = x\n\treturn p\n}\n\nfunc (x Type_WellKnownType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (Type_WellKnownType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_expr_v1alpha1_checked_proto_enumTypes[1].Descriptor()\n}\n\nfunc (Type_WellKnownType) Type() protoreflect.EnumType {\n\treturn &file_google_api_expr_v1alpha1_checked_proto_enumTypes[1]\n}\n\nfunc (x Type_WellKnownType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use Type_WellKnownType.Descriptor instead.\nfunc (Type_WellKnownType) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_checked_proto_rawDescGZIP(), []int{1, 1}\n}\n\n// A CEL expression which has been successfully type checked.\ntype CheckedExpr struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// A map from expression ids to resolved references.\n\t//\n\t// The following entries are in this table:\n\t//\n\t//   - An Ident or Select expression is represented here if it resolves to a\n\t//     declaration. For instance, if `a.b.c` is represented by\n\t//     `select(select(id(a), b), c)`, and `a.b` resolves to a declaration,\n\t//     while `c` is a field selection, then the reference is attached to the\n\t//     nested select expression (but not to the id or or the outer select).\n\t//     In turn, if `a` resolves to a declaration and `b.c` are field selections,\n\t//     the reference is attached to the ident expression.\n\t//   - Every Call expression has an entry here, identifying the function being\n\t//     called.\n\t//   - Every CreateStruct expression for a message has an entry, identifying\n\t//     the message.\n\tReferenceMap map[int64]*Reference `protobuf:\"bytes,2,rep,name=reference_map,json=referenceMap,proto3\" json:\"reference_map,omitempty\" protobuf_key:\"varint,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\t// A map from expression ids to types.\n\t//\n\t// Every expression node which has a type different than DYN has a mapping\n\t// here. If an expression has type DYN, it is omitted from this map to save\n\t// space.\n\tTypeMap map[int64]*Type `protobuf:\"bytes,3,rep,name=type_map,json=typeMap,proto3\" json:\"type_map,omitempty\" protobuf_key:\"varint,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\t// The source info derived from input that generated the parsed `expr` and\n\t// any optimizations made during the type-checking pass.\n\tSourceInfo *SourceInfo `protobuf:\"bytes,5,opt,name=source_info,json=sourceInfo,proto3\" json:\"source_info,omitempty\"`\n\t// The expr version indicates the major / minor version number of the `expr`\n\t// representation.\n\t//\n\t// The most common reason for a version change will be to indicate to the CEL\n\t// runtimes that transformations have been performed on the expr during static\n\t// analysis. In some cases, this will save the runtime the work of applying\n\t// the same or similar transformations prior to evaluation.\n\tExprVersion string `protobuf:\"bytes,6,opt,name=expr_version,json=exprVersion,proto3\" json:\"expr_version,omitempty\"`\n\t// The checked expression. Semantically equivalent to the parsed `expr`, but\n\t// may have structural differences.\n\tExpr *Expr `protobuf:\"bytes,4,opt,name=expr,proto3\" json:\"expr,omitempty\"`\n}\n\nfunc (x *CheckedExpr) Reset() {\n\t*x = CheckedExpr{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CheckedExpr) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CheckedExpr) ProtoMessage() {}\n\nfunc (x *CheckedExpr) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CheckedExpr.ProtoReflect.Descriptor instead.\nfunc (*CheckedExpr) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_checked_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *CheckedExpr) GetReferenceMap() map[int64]*Reference {\n\tif x != nil {\n\t\treturn x.ReferenceMap\n\t}\n\treturn nil\n}\n\nfunc (x *CheckedExpr) GetTypeMap() map[int64]*Type {\n\tif x != nil {\n\t\treturn x.TypeMap\n\t}\n\treturn nil\n}\n\nfunc (x *CheckedExpr) GetSourceInfo() *SourceInfo {\n\tif x != nil {\n\t\treturn x.SourceInfo\n\t}\n\treturn nil\n}\n\nfunc (x *CheckedExpr) GetExprVersion() string {\n\tif x != nil {\n\t\treturn x.ExprVersion\n\t}\n\treturn \"\"\n}\n\nfunc (x *CheckedExpr) GetExpr() *Expr {\n\tif x != nil {\n\t\treturn x.Expr\n\t}\n\treturn nil\n}\n\n// Represents a CEL type.\ntype Type struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The kind of type.\n\t//\n\t// Types that are assignable to TypeKind:\n\t//\n\t//\t*Type_Dyn\n\t//\t*Type_Null\n\t//\t*Type_Primitive\n\t//\t*Type_Wrapper\n\t//\t*Type_WellKnown\n\t//\t*Type_ListType_\n\t//\t*Type_MapType_\n\t//\t*Type_Function\n\t//\t*Type_MessageType\n\t//\t*Type_TypeParam\n\t//\t*Type_Type\n\t//\t*Type_Error\n\t//\t*Type_AbstractType_\n\tTypeKind isType_TypeKind `protobuf_oneof:\"type_kind\"`\n}\n\nfunc (x *Type) Reset() {\n\t*x = Type{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Type) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Type) ProtoMessage() {}\n\nfunc (x *Type) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Type.ProtoReflect.Descriptor instead.\nfunc (*Type) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_checked_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (m *Type) GetTypeKind() isType_TypeKind {\n\tif m != nil {\n\t\treturn m.TypeKind\n\t}\n\treturn nil\n}\n\nfunc (x *Type) GetDyn() *emptypb.Empty {\n\tif x, ok := x.GetTypeKind().(*Type_Dyn); ok {\n\t\treturn x.Dyn\n\t}\n\treturn nil\n}\n\nfunc (x *Type) GetNull() structpb.NullValue {\n\tif x, ok := x.GetTypeKind().(*Type_Null); ok {\n\t\treturn x.Null\n\t}\n\treturn structpb.NullValue_NULL_VALUE\n}\n\nfunc (x *Type) GetPrimitive() Type_PrimitiveType {\n\tif x, ok := x.GetTypeKind().(*Type_Primitive); ok {\n\t\treturn x.Primitive\n\t}\n\treturn Type_PRIMITIVE_TYPE_UNSPECIFIED\n}\n\nfunc (x *Type) GetWrapper() Type_PrimitiveType {\n\tif x, ok := x.GetTypeKind().(*Type_Wrapper); ok {\n\t\treturn x.Wrapper\n\t}\n\treturn Type_PRIMITIVE_TYPE_UNSPECIFIED\n}\n\nfunc (x *Type) GetWellKnown() Type_WellKnownType {\n\tif x, ok := x.GetTypeKind().(*Type_WellKnown); ok {\n\t\treturn x.WellKnown\n\t}\n\treturn Type_WELL_KNOWN_TYPE_UNSPECIFIED\n}\n\nfunc (x *Type) GetListType() *Type_ListType {\n\tif x, ok := x.GetTypeKind().(*Type_ListType_); ok {\n\t\treturn x.ListType\n\t}\n\treturn nil\n}\n\nfunc (x *Type) GetMapType() *Type_MapType {\n\tif x, ok := x.GetTypeKind().(*Type_MapType_); ok {\n\t\treturn x.MapType\n\t}\n\treturn nil\n}\n\nfunc (x *Type) GetFunction() *Type_FunctionType {\n\tif x, ok := x.GetTypeKind().(*Type_Function); ok {\n\t\treturn x.Function\n\t}\n\treturn nil\n}\n\nfunc (x *Type) GetMessageType() string {\n\tif x, ok := x.GetTypeKind().(*Type_MessageType); ok {\n\t\treturn x.MessageType\n\t}\n\treturn \"\"\n}\n\nfunc (x *Type) GetTypeParam() string {\n\tif x, ok := x.GetTypeKind().(*Type_TypeParam); ok {\n\t\treturn x.TypeParam\n\t}\n\treturn \"\"\n}\n\nfunc (x *Type) GetType() *Type {\n\tif x, ok := x.GetTypeKind().(*Type_Type); ok {\n\t\treturn x.Type\n\t}\n\treturn nil\n}\n\nfunc (x *Type) GetError() *emptypb.Empty {\n\tif x, ok := x.GetTypeKind().(*Type_Error); ok {\n\t\treturn x.Error\n\t}\n\treturn nil\n}\n\nfunc (x *Type) GetAbstractType() *Type_AbstractType {\n\tif x, ok := x.GetTypeKind().(*Type_AbstractType_); ok {\n\t\treturn x.AbstractType\n\t}\n\treturn nil\n}\n\ntype isType_TypeKind interface {\n\tisType_TypeKind()\n}\n\ntype Type_Dyn struct {\n\t// Dynamic type.\n\tDyn *emptypb.Empty `protobuf:\"bytes,1,opt,name=dyn,proto3,oneof\"`\n}\n\ntype Type_Null struct {\n\t// Null value.\n\tNull structpb.NullValue `protobuf:\"varint,2,opt,name=null,proto3,enum=google.protobuf.NullValue,oneof\"`\n}\n\ntype Type_Primitive struct {\n\t// Primitive types: `true`, `1u`, `-2.0`, `'string'`, `b'bytes'`.\n\tPrimitive Type_PrimitiveType `protobuf:\"varint,3,opt,name=primitive,proto3,enum=google.api.expr.v1alpha1.Type_PrimitiveType,oneof\"`\n}\n\ntype Type_Wrapper struct {\n\t// Wrapper of a primitive type, e.g. `google.protobuf.Int64Value`.\n\tWrapper Type_PrimitiveType `protobuf:\"varint,4,opt,name=wrapper,proto3,enum=google.api.expr.v1alpha1.Type_PrimitiveType,oneof\"`\n}\n\ntype Type_WellKnown struct {\n\t// Well-known protobuf type such as `google.protobuf.Timestamp`.\n\tWellKnown Type_WellKnownType `protobuf:\"varint,5,opt,name=well_known,json=wellKnown,proto3,enum=google.api.expr.v1alpha1.Type_WellKnownType,oneof\"`\n}\n\ntype Type_ListType_ struct {\n\t// Parameterized list with elements of `list_type`, e.g. `list<timestamp>`.\n\tListType *Type_ListType `protobuf:\"bytes,6,opt,name=list_type,json=listType,proto3,oneof\"`\n}\n\ntype Type_MapType_ struct {\n\t// Parameterized map with typed keys and values.\n\tMapType *Type_MapType `protobuf:\"bytes,7,opt,name=map_type,json=mapType,proto3,oneof\"`\n}\n\ntype Type_Function struct {\n\t// Function type.\n\tFunction *Type_FunctionType `protobuf:\"bytes,8,opt,name=function,proto3,oneof\"`\n}\n\ntype Type_MessageType struct {\n\t// Protocol buffer message type.\n\t//\n\t// The `message_type` string specifies the qualified message type name. For\n\t// example, `google.plus.Profile`.\n\tMessageType string `protobuf:\"bytes,9,opt,name=message_type,json=messageType,proto3,oneof\"`\n}\n\ntype Type_TypeParam struct {\n\t// Type param type.\n\t//\n\t// The `type_param` string specifies the type parameter name, e.g. `list<E>`\n\t// would be a `list_type` whose element type was a `type_param` type\n\t// named `E`.\n\tTypeParam string `protobuf:\"bytes,10,opt,name=type_param,json=typeParam,proto3,oneof\"`\n}\n\ntype Type_Type struct {\n\t// Type type.\n\t//\n\t// The `type` value specifies the target type. e.g. int is type with a\n\t// target type of `Primitive.INT`.\n\tType *Type `protobuf:\"bytes,11,opt,name=type,proto3,oneof\"`\n}\n\ntype Type_Error struct {\n\t// Error type.\n\t//\n\t// During type-checking if an expression is an error, its type is propagated\n\t// as the `ERROR` type. This permits the type-checker to discover other\n\t// errors present in the expression.\n\tError *emptypb.Empty `protobuf:\"bytes,12,opt,name=error,proto3,oneof\"`\n}\n\ntype Type_AbstractType_ struct {\n\t// Abstract, application defined type.\n\tAbstractType *Type_AbstractType `protobuf:\"bytes,14,opt,name=abstract_type,json=abstractType,proto3,oneof\"`\n}\n\nfunc (*Type_Dyn) isType_TypeKind() {}\n\nfunc (*Type_Null) isType_TypeKind() {}\n\nfunc (*Type_Primitive) isType_TypeKind() {}\n\nfunc (*Type_Wrapper) isType_TypeKind() {}\n\nfunc (*Type_WellKnown) isType_TypeKind() {}\n\nfunc (*Type_ListType_) isType_TypeKind() {}\n\nfunc (*Type_MapType_) isType_TypeKind() {}\n\nfunc (*Type_Function) isType_TypeKind() {}\n\nfunc (*Type_MessageType) isType_TypeKind() {}\n\nfunc (*Type_TypeParam) isType_TypeKind() {}\n\nfunc (*Type_Type) isType_TypeKind() {}\n\nfunc (*Type_Error) isType_TypeKind() {}\n\nfunc (*Type_AbstractType_) isType_TypeKind() {}\n\n// Represents a declaration of a named value or function.\n//\n// A declaration is part of the contract between the expression, the agent\n// evaluating that expression, and the caller requesting evaluation.\ntype Decl struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The fully qualified name of the declaration.\n\t//\n\t// Declarations are organized in containers and this represents the full path\n\t// to the declaration in its container, as in `google.api.expr.Decl`.\n\t//\n\t// Declarations used as\n\t// [FunctionDecl.Overload][google.api.expr.v1alpha1.Decl.FunctionDecl.Overload]\n\t// parameters may or may not have a name depending on whether the overload is\n\t// function declaration or a function definition containing a result\n\t// [Expr][google.api.expr.v1alpha1.Expr].\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Required. The declaration kind.\n\t//\n\t// Types that are assignable to DeclKind:\n\t//\n\t//\t*Decl_Ident\n\t//\t*Decl_Function\n\tDeclKind isDecl_DeclKind `protobuf_oneof:\"decl_kind\"`\n}\n\nfunc (x *Decl) Reset() {\n\t*x = Decl{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Decl) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Decl) ProtoMessage() {}\n\nfunc (x *Decl) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Decl.ProtoReflect.Descriptor instead.\nfunc (*Decl) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_checked_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *Decl) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *Decl) GetDeclKind() isDecl_DeclKind {\n\tif m != nil {\n\t\treturn m.DeclKind\n\t}\n\treturn nil\n}\n\nfunc (x *Decl) GetIdent() *Decl_IdentDecl {\n\tif x, ok := x.GetDeclKind().(*Decl_Ident); ok {\n\t\treturn x.Ident\n\t}\n\treturn nil\n}\n\nfunc (x *Decl) GetFunction() *Decl_FunctionDecl {\n\tif x, ok := x.GetDeclKind().(*Decl_Function); ok {\n\t\treturn x.Function\n\t}\n\treturn nil\n}\n\ntype isDecl_DeclKind interface {\n\tisDecl_DeclKind()\n}\n\ntype Decl_Ident struct {\n\t// Identifier declaration.\n\tIdent *Decl_IdentDecl `protobuf:\"bytes,2,opt,name=ident,proto3,oneof\"`\n}\n\ntype Decl_Function struct {\n\t// Function declaration.\n\tFunction *Decl_FunctionDecl `protobuf:\"bytes,3,opt,name=function,proto3,oneof\"`\n}\n\nfunc (*Decl_Ident) isDecl_DeclKind() {}\n\nfunc (*Decl_Function) isDecl_DeclKind() {}\n\n// Describes a resolved reference to a declaration.\ntype Reference struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The fully qualified name of the declaration.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// For references to functions, this is a list of `Overload.overload_id`\n\t// values which match according to typing rules.\n\t//\n\t// If the list has more than one element, overload resolution among the\n\t// presented candidates must happen at runtime because of dynamic types. The\n\t// type checker attempts to narrow down this list as much as possible.\n\t//\n\t// Empty if this is not a reference to a\n\t// [Decl.FunctionDecl][google.api.expr.v1alpha1.Decl.FunctionDecl].\n\tOverloadId []string `protobuf:\"bytes,3,rep,name=overload_id,json=overloadId,proto3\" json:\"overload_id,omitempty\"`\n\t// For references to constants, this may contain the value of the\n\t// constant if known at compile time.\n\tValue *Constant `protobuf:\"bytes,4,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *Reference) Reset() {\n\t*x = Reference{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Reference) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Reference) ProtoMessage() {}\n\nfunc (x *Reference) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Reference.ProtoReflect.Descriptor instead.\nfunc (*Reference) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_checked_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *Reference) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *Reference) GetOverloadId() []string {\n\tif x != nil {\n\t\treturn x.OverloadId\n\t}\n\treturn nil\n}\n\nfunc (x *Reference) GetValue() *Constant {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\n// List type with typed elements, e.g. `list<example.proto.MyMessage>`.\ntype Type_ListType struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The element type.\n\tElemType *Type `protobuf:\"bytes,1,opt,name=elem_type,json=elemType,proto3\" json:\"elem_type,omitempty\"`\n}\n\nfunc (x *Type_ListType) Reset() {\n\t*x = Type_ListType{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Type_ListType) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Type_ListType) ProtoMessage() {}\n\nfunc (x *Type_ListType) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Type_ListType.ProtoReflect.Descriptor instead.\nfunc (*Type_ListType) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_checked_proto_rawDescGZIP(), []int{1, 0}\n}\n\nfunc (x *Type_ListType) GetElemType() *Type {\n\tif x != nil {\n\t\treturn x.ElemType\n\t}\n\treturn nil\n}\n\n// Map type with parameterized key and value types, e.g. `map<string, int>`.\ntype Type_MapType struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The type of the key.\n\tKeyType *Type `protobuf:\"bytes,1,opt,name=key_type,json=keyType,proto3\" json:\"key_type,omitempty\"`\n\t// The type of the value.\n\tValueType *Type `protobuf:\"bytes,2,opt,name=value_type,json=valueType,proto3\" json:\"value_type,omitempty\"`\n}\n\nfunc (x *Type_MapType) Reset() {\n\t*x = Type_MapType{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Type_MapType) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Type_MapType) ProtoMessage() {}\n\nfunc (x *Type_MapType) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Type_MapType.ProtoReflect.Descriptor instead.\nfunc (*Type_MapType) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_checked_proto_rawDescGZIP(), []int{1, 1}\n}\n\nfunc (x *Type_MapType) GetKeyType() *Type {\n\tif x != nil {\n\t\treturn x.KeyType\n\t}\n\treturn nil\n}\n\nfunc (x *Type_MapType) GetValueType() *Type {\n\tif x != nil {\n\t\treturn x.ValueType\n\t}\n\treturn nil\n}\n\n// Function type with result and arg types.\ntype Type_FunctionType struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Result type of the function.\n\tResultType *Type `protobuf:\"bytes,1,opt,name=result_type,json=resultType,proto3\" json:\"result_type,omitempty\"`\n\t// Argument types of the function.\n\tArgTypes []*Type `protobuf:\"bytes,2,rep,name=arg_types,json=argTypes,proto3\" json:\"arg_types,omitempty\"`\n}\n\nfunc (x *Type_FunctionType) Reset() {\n\t*x = Type_FunctionType{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Type_FunctionType) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Type_FunctionType) ProtoMessage() {}\n\nfunc (x *Type_FunctionType) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Type_FunctionType.ProtoReflect.Descriptor instead.\nfunc (*Type_FunctionType) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_checked_proto_rawDescGZIP(), []int{1, 2}\n}\n\nfunc (x *Type_FunctionType) GetResultType() *Type {\n\tif x != nil {\n\t\treturn x.ResultType\n\t}\n\treturn nil\n}\n\nfunc (x *Type_FunctionType) GetArgTypes() []*Type {\n\tif x != nil {\n\t\treturn x.ArgTypes\n\t}\n\treturn nil\n}\n\n// Application defined abstract type.\ntype Type_AbstractType struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The fully qualified name of this abstract type.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// Parameter types for this abstract type.\n\tParameterTypes []*Type `protobuf:\"bytes,2,rep,name=parameter_types,json=parameterTypes,proto3\" json:\"parameter_types,omitempty\"`\n}\n\nfunc (x *Type_AbstractType) Reset() {\n\t*x = Type_AbstractType{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Type_AbstractType) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Type_AbstractType) ProtoMessage() {}\n\nfunc (x *Type_AbstractType) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Type_AbstractType.ProtoReflect.Descriptor instead.\nfunc (*Type_AbstractType) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_checked_proto_rawDescGZIP(), []int{1, 3}\n}\n\nfunc (x *Type_AbstractType) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *Type_AbstractType) GetParameterTypes() []*Type {\n\tif x != nil {\n\t\treturn x.ParameterTypes\n\t}\n\treturn nil\n}\n\n// Identifier declaration which specifies its type and optional `Expr` value.\n//\n// An identifier without a value is a declaration that must be provided at\n// evaluation time. An identifier with a value should resolve to a constant,\n// but may be used in conjunction with other identifiers bound at evaluation\n// time.\ntype Decl_IdentDecl struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Required. The type of the identifier.\n\tType *Type `protobuf:\"bytes,1,opt,name=type,proto3\" json:\"type,omitempty\"`\n\t// The constant value of the identifier. If not specified, the identifier\n\t// must be supplied at evaluation time.\n\tValue *Constant `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\t// Documentation string for the identifier.\n\tDoc string `protobuf:\"bytes,3,opt,name=doc,proto3\" json:\"doc,omitempty\"`\n}\n\nfunc (x *Decl_IdentDecl) Reset() {\n\t*x = Decl_IdentDecl{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Decl_IdentDecl) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Decl_IdentDecl) ProtoMessage() {}\n\nfunc (x *Decl_IdentDecl) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Decl_IdentDecl.ProtoReflect.Descriptor instead.\nfunc (*Decl_IdentDecl) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_checked_proto_rawDescGZIP(), []int{2, 0}\n}\n\nfunc (x *Decl_IdentDecl) GetType() *Type {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn nil\n}\n\nfunc (x *Decl_IdentDecl) GetValue() *Constant {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nfunc (x *Decl_IdentDecl) GetDoc() string {\n\tif x != nil {\n\t\treturn x.Doc\n\t}\n\treturn \"\"\n}\n\n// Function declaration specifies one or more overloads which indicate the\n// function's parameter types and return type.\n//\n// Functions have no observable side-effects (there may be side-effects like\n// logging which are not observable from CEL).\ntype Decl_FunctionDecl struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Required. List of function overloads, must contain at least one overload.\n\tOverloads []*Decl_FunctionDecl_Overload `protobuf:\"bytes,1,rep,name=overloads,proto3\" json:\"overloads,omitempty\"`\n}\n\nfunc (x *Decl_FunctionDecl) Reset() {\n\t*x = Decl_FunctionDecl{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Decl_FunctionDecl) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Decl_FunctionDecl) ProtoMessage() {}\n\nfunc (x *Decl_FunctionDecl) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Decl_FunctionDecl.ProtoReflect.Descriptor instead.\nfunc (*Decl_FunctionDecl) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_checked_proto_rawDescGZIP(), []int{2, 1}\n}\n\nfunc (x *Decl_FunctionDecl) GetOverloads() []*Decl_FunctionDecl_Overload {\n\tif x != nil {\n\t\treturn x.Overloads\n\t}\n\treturn nil\n}\n\n// An overload indicates a function's parameter types and return type, and\n// may optionally include a function body described in terms of\n// [Expr][google.api.expr.v1alpha1.Expr] values.\n//\n// Functions overloads are declared in either a function or method\n// call-style. For methods, the `params[0]` is the expected type of the\n// target receiver.\n//\n// Overloads must have non-overlapping argument types after erasure of all\n// parameterized type variables (similar as type erasure in Java).\ntype Decl_FunctionDecl_Overload struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Required. Globally unique overload name of the function which reflects\n\t// the function name and argument types.\n\t//\n\t// This will be used by a [Reference][google.api.expr.v1alpha1.Reference]\n\t// to indicate the `overload_id` that was resolved for the function\n\t// `name`.\n\tOverloadId string `protobuf:\"bytes,1,opt,name=overload_id,json=overloadId,proto3\" json:\"overload_id,omitempty\"`\n\t// List of function parameter [Type][google.api.expr.v1alpha1.Type]\n\t// values.\n\t//\n\t// Param types are disjoint after generic type parameters have been\n\t// replaced with the type `DYN`. Since the `DYN` type is compatible with\n\t// any other type, this means that if `A` is a type parameter, the\n\t// function types `int<A>` and `int<int>` are not disjoint. Likewise,\n\t// `map<string, string>` is not disjoint from `map<K, V>`.\n\t//\n\t// When the `result_type` of a function is a generic type param, the\n\t// type param name also appears as the `type` of on at least one params.\n\tParams []*Type `protobuf:\"bytes,2,rep,name=params,proto3\" json:\"params,omitempty\"`\n\t// The type param names associated with the function declaration.\n\t//\n\t// For example, `function ex<K,V>(K key, map<K, V> map) : V` would yield\n\t// the type params of `K, V`.\n\tTypeParams []string `protobuf:\"bytes,3,rep,name=type_params,json=typeParams,proto3\" json:\"type_params,omitempty\"`\n\t// Required. The result type of the function. For example, the operator\n\t// `string.isEmpty()` would have `result_type` of `kind: BOOL`.\n\tResultType *Type `protobuf:\"bytes,4,opt,name=result_type,json=resultType,proto3\" json:\"result_type,omitempty\"`\n\t// Whether the function is to be used in a method call-style `x.f(...)`\n\t// or a function call-style `f(x, ...)`.\n\t//\n\t// For methods, the first parameter declaration, `params[0]` is the\n\t// expected type of the target receiver.\n\tIsInstanceFunction bool `protobuf:\"varint,5,opt,name=is_instance_function,json=isInstanceFunction,proto3\" json:\"is_instance_function,omitempty\"`\n\t// Documentation string for the overload.\n\tDoc string `protobuf:\"bytes,6,opt,name=doc,proto3\" json:\"doc,omitempty\"`\n}\n\nfunc (x *Decl_FunctionDecl_Overload) Reset() {\n\t*x = Decl_FunctionDecl_Overload{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[12]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Decl_FunctionDecl_Overload) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Decl_FunctionDecl_Overload) ProtoMessage() {}\n\nfunc (x *Decl_FunctionDecl_Overload) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_checked_proto_msgTypes[12]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Decl_FunctionDecl_Overload.ProtoReflect.Descriptor instead.\nfunc (*Decl_FunctionDecl_Overload) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_checked_proto_rawDescGZIP(), []int{2, 1, 0}\n}\n\nfunc (x *Decl_FunctionDecl_Overload) GetOverloadId() string {\n\tif x != nil {\n\t\treturn x.OverloadId\n\t}\n\treturn \"\"\n}\n\nfunc (x *Decl_FunctionDecl_Overload) GetParams() []*Type {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\nfunc (x *Decl_FunctionDecl_Overload) GetTypeParams() []string {\n\tif x != nil {\n\t\treturn x.TypeParams\n\t}\n\treturn nil\n}\n\nfunc (x *Decl_FunctionDecl_Overload) GetResultType() *Type {\n\tif x != nil {\n\t\treturn x.ResultType\n\t}\n\treturn nil\n}\n\nfunc (x *Decl_FunctionDecl_Overload) GetIsInstanceFunction() bool {\n\tif x != nil {\n\t\treturn x.IsInstanceFunction\n\t}\n\treturn false\n}\n\nfunc (x *Decl_FunctionDecl_Overload) GetDoc() string {\n\tif x != nil {\n\t\treturn x.Doc\n\t}\n\treturn \"\"\n}\n\nvar File_google_api_expr_v1alpha1_checked_proto protoreflect.FileDescriptor\n\nvar file_google_api_expr_v1alpha1_checked_proto_rawDesc = []byte{\n\t0x0a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x70,\n\t0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b,\n\t0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x1a, 0x25, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65,\n\t0x78, 0x70, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x73, 0x79, 0x6e,\n\t0x74, 0x61, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9a, 0x04, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64,\n\t0x45, 0x78, 0x70, 0x72, 0x12, 0x5c, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,\n\t0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78,\n\t0x70, 0x72, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x45,\n\t0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4d,\n\t0x61, 0x70, 0x12, 0x4d, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03,\n\t0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x70, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65,\n\t0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x4d, 0x61,\n\t0x70, 0x12, 0x45, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f,\n\t0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,\n\t0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x72,\n\t0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,\n\t0x65, 0x78, 0x70, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x04, 0x65,\n\t0x78, 0x70, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x1a,\n\t0x64, 0x0a, 0x11, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x45,\n\t0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,\n\t0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,\n\t0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5a, 0x0a, 0x0c, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x61, 0x70,\n\t0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,\n\t0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,\n\t0x01, 0x22, 0xc8, 0x0b, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x64, 0x79,\n\t0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48,\n\t0x00, 0x52, 0x03, 0x64, 0x79, 0x6e, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,\n\t0x48, 0x00, 0x52, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x12, 0x4c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6d,\n\t0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x50, 0x72, 0x69, 0x6d,\n\t0x69, 0x74, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x69,\n\t0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x48, 0x0a, 0x07, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65,\n\t0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76,\n\t0x65, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x07, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72,\n\t0x12, 0x4d, 0x0a, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x18, 0x05,\n\t0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x54, 0x79, 0x70, 0x65, 0x2e, 0x57, 0x65, 0x6c, 0x6c, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79,\n\t0x70, 0x65, 0x48, 0x00, 0x52, 0x09, 0x77, 0x65, 0x6c, 0x6c, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x12,\n\t0x46, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x79,\n\t0x70, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x08, 0x6c,\n\t0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x6d, 0x61, 0x70, 0x5f, 0x74,\n\t0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70,\n\t0x65, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x08,\n\t0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x46,\n\t0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x08, 0x66,\n\t0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61,\n\t0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,\n\t0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0a,\n\t0x74, 0x79, 0x70, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09,\n\t0x48, 0x00, 0x52, 0x09, 0x74, 0x79, 0x70, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x34, 0x0a,\n\t0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x74,\n\t0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72,\n\t0x72, 0x6f, 0x72, 0x12, 0x52, 0x0a, 0x0d, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f,\n\t0x74, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x41, 0x62, 0x73, 0x74, 0x72,\n\t0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x62, 0x73, 0x74, 0x72,\n\t0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x47, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x54,\n\t0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x09, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,\n\t0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65,\n\t0x1a, 0x83, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x08,\n\t0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07,\n\t0x6b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x76, 0x61, 0x6c,\n\t0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x8c, 0x01, 0x0a, 0x0c, 0x46, 0x75, 0x6e, 0x63, 0x74,\n\t0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x75, 0x6c,\n\t0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x72, 0x65,\n\t0x73, 0x75, 0x6c, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x5f,\n\t0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x61, 0x72, 0x67,\n\t0x54, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x6b, 0x0a, 0x0c, 0x41, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63,\n\t0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x0f, 0x70, 0x61, 0x72,\n\t0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03,\n\t0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x79,\n\t0x70, 0x65, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70,\n\t0x65, 0x73, 0x22, 0x73, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x54,\n\t0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x49, 0x4d, 0x49, 0x54, 0x49, 0x56, 0x45,\n\t0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,\n\t0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x01, 0x12, 0x09, 0x0a,\n\t0x05, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x49, 0x4e, 0x54,\n\t0x36, 0x34, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x04,\n\t0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05,\n\t0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x06, 0x22, 0x56, 0x0a, 0x0d, 0x57, 0x65, 0x6c, 0x6c, 0x4b,\n\t0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x57, 0x45, 0x4c, 0x4c,\n\t0x5f, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50,\n\t0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, 0x59,\n\t0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10,\n\t0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x42,\n\t0x0b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xb3, 0x05, 0x0a,\n\t0x04, 0x44, 0x65, 0x63, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x69, 0x64, 0x65,\n\t0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x44, 0x65,\n\t0x63, 0x6c, 0x48, 0x00, 0x52, 0x05, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x08, 0x66,\n\t0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e,\n\t0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x2e, 0x46, 0x75,\n\t0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x63, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x66, 0x75,\n\t0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x8b, 0x01, 0x0a, 0x09, 0x49, 0x64, 0x65, 0x6e, 0x74,\n\t0x44, 0x65, 0x63, 0x6c, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x79,\n\t0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,\n\t0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c,\n\t0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x03, 0x64, 0x6f, 0x63, 0x1a, 0xee, 0x02, 0x0a, 0x0c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,\n\t0x6e, 0x44, 0x65, 0x63, 0x6c, 0x12, 0x52, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x6f, 0x61,\n\t0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,\n\t0x6e, 0x44, 0x65, 0x63, 0x6c, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x09,\n\t0x6f, 0x76, 0x65, 0x72, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x1a, 0x89, 0x02, 0x0a, 0x08, 0x4f, 0x76,\n\t0x65, 0x72, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x6f,\n\t0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x76, 0x65,\n\t0x72, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d,\n\t0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12,\n\t0x1f, 0x0a, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03,\n\t0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,\n\t0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,\n\t0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x54, 0x79, 0x70,\n\t0x65, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,\n\t0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52,\n\t0x12, 0x69, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74,\n\t0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x03, 0x64, 0x6f, 0x63, 0x42, 0x0b, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x6c, 0x5f, 0x6b, 0x69,\n\t0x6e, 0x64, 0x22, 0x7a, 0x0a, 0x09, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12,\n\t0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,\n\t0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x6f, 0x61, 0x64, 0x5f,\n\t0x69, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x6f,\n\t0x61, 0x64, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43,\n\t0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x6c,\n\t0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x09,\n\t0x44, 0x65, 0x63, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67,\n\t0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,\n\t0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x70, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x3b, 0x65, 0x78, 0x70, 0x72, 0xf8, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_expr_v1alpha1_checked_proto_rawDescOnce sync.Once\n\tfile_google_api_expr_v1alpha1_checked_proto_rawDescData = file_google_api_expr_v1alpha1_checked_proto_rawDesc\n)\n\nfunc file_google_api_expr_v1alpha1_checked_proto_rawDescGZIP() []byte {\n\tfile_google_api_expr_v1alpha1_checked_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_expr_v1alpha1_checked_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_expr_v1alpha1_checked_proto_rawDescData)\n\t})\n\treturn file_google_api_expr_v1alpha1_checked_proto_rawDescData\n}\n\nvar file_google_api_expr_v1alpha1_checked_proto_enumTypes = make([]protoimpl.EnumInfo, 2)\nvar file_google_api_expr_v1alpha1_checked_proto_msgTypes = make([]protoimpl.MessageInfo, 13)\nvar file_google_api_expr_v1alpha1_checked_proto_goTypes = []interface{}{\n\t(Type_PrimitiveType)(0),            // 0: google.api.expr.v1alpha1.Type.PrimitiveType\n\t(Type_WellKnownType)(0),            // 1: google.api.expr.v1alpha1.Type.WellKnownType\n\t(*CheckedExpr)(nil),                // 2: google.api.expr.v1alpha1.CheckedExpr\n\t(*Type)(nil),                       // 3: google.api.expr.v1alpha1.Type\n\t(*Decl)(nil),                       // 4: google.api.expr.v1alpha1.Decl\n\t(*Reference)(nil),                  // 5: google.api.expr.v1alpha1.Reference\n\tnil,                                // 6: google.api.expr.v1alpha1.CheckedExpr.ReferenceMapEntry\n\tnil,                                // 7: google.api.expr.v1alpha1.CheckedExpr.TypeMapEntry\n\t(*Type_ListType)(nil),              // 8: google.api.expr.v1alpha1.Type.ListType\n\t(*Type_MapType)(nil),               // 9: google.api.expr.v1alpha1.Type.MapType\n\t(*Type_FunctionType)(nil),          // 10: google.api.expr.v1alpha1.Type.FunctionType\n\t(*Type_AbstractType)(nil),          // 11: google.api.expr.v1alpha1.Type.AbstractType\n\t(*Decl_IdentDecl)(nil),             // 12: google.api.expr.v1alpha1.Decl.IdentDecl\n\t(*Decl_FunctionDecl)(nil),          // 13: google.api.expr.v1alpha1.Decl.FunctionDecl\n\t(*Decl_FunctionDecl_Overload)(nil), // 14: google.api.expr.v1alpha1.Decl.FunctionDecl.Overload\n\t(*SourceInfo)(nil),                 // 15: google.api.expr.v1alpha1.SourceInfo\n\t(*Expr)(nil),                       // 16: google.api.expr.v1alpha1.Expr\n\t(*emptypb.Empty)(nil),              // 17: google.protobuf.Empty\n\t(structpb.NullValue)(0),            // 18: google.protobuf.NullValue\n\t(*Constant)(nil),                   // 19: google.api.expr.v1alpha1.Constant\n}\nvar file_google_api_expr_v1alpha1_checked_proto_depIdxs = []int32{\n\t6,  // 0: google.api.expr.v1alpha1.CheckedExpr.reference_map:type_name -> google.api.expr.v1alpha1.CheckedExpr.ReferenceMapEntry\n\t7,  // 1: google.api.expr.v1alpha1.CheckedExpr.type_map:type_name -> google.api.expr.v1alpha1.CheckedExpr.TypeMapEntry\n\t15, // 2: google.api.expr.v1alpha1.CheckedExpr.source_info:type_name -> google.api.expr.v1alpha1.SourceInfo\n\t16, // 3: google.api.expr.v1alpha1.CheckedExpr.expr:type_name -> google.api.expr.v1alpha1.Expr\n\t17, // 4: google.api.expr.v1alpha1.Type.dyn:type_name -> google.protobuf.Empty\n\t18, // 5: google.api.expr.v1alpha1.Type.null:type_name -> google.protobuf.NullValue\n\t0,  // 6: google.api.expr.v1alpha1.Type.primitive:type_name -> google.api.expr.v1alpha1.Type.PrimitiveType\n\t0,  // 7: google.api.expr.v1alpha1.Type.wrapper:type_name -> google.api.expr.v1alpha1.Type.PrimitiveType\n\t1,  // 8: google.api.expr.v1alpha1.Type.well_known:type_name -> google.api.expr.v1alpha1.Type.WellKnownType\n\t8,  // 9: google.api.expr.v1alpha1.Type.list_type:type_name -> google.api.expr.v1alpha1.Type.ListType\n\t9,  // 10: google.api.expr.v1alpha1.Type.map_type:type_name -> google.api.expr.v1alpha1.Type.MapType\n\t10, // 11: google.api.expr.v1alpha1.Type.function:type_name -> google.api.expr.v1alpha1.Type.FunctionType\n\t3,  // 12: google.api.expr.v1alpha1.Type.type:type_name -> google.api.expr.v1alpha1.Type\n\t17, // 13: google.api.expr.v1alpha1.Type.error:type_name -> google.protobuf.Empty\n\t11, // 14: google.api.expr.v1alpha1.Type.abstract_type:type_name -> google.api.expr.v1alpha1.Type.AbstractType\n\t12, // 15: google.api.expr.v1alpha1.Decl.ident:type_name -> google.api.expr.v1alpha1.Decl.IdentDecl\n\t13, // 16: google.api.expr.v1alpha1.Decl.function:type_name -> google.api.expr.v1alpha1.Decl.FunctionDecl\n\t19, // 17: google.api.expr.v1alpha1.Reference.value:type_name -> google.api.expr.v1alpha1.Constant\n\t5,  // 18: google.api.expr.v1alpha1.CheckedExpr.ReferenceMapEntry.value:type_name -> google.api.expr.v1alpha1.Reference\n\t3,  // 19: google.api.expr.v1alpha1.CheckedExpr.TypeMapEntry.value:type_name -> google.api.expr.v1alpha1.Type\n\t3,  // 20: google.api.expr.v1alpha1.Type.ListType.elem_type:type_name -> google.api.expr.v1alpha1.Type\n\t3,  // 21: google.api.expr.v1alpha1.Type.MapType.key_type:type_name -> google.api.expr.v1alpha1.Type\n\t3,  // 22: google.api.expr.v1alpha1.Type.MapType.value_type:type_name -> google.api.expr.v1alpha1.Type\n\t3,  // 23: google.api.expr.v1alpha1.Type.FunctionType.result_type:type_name -> google.api.expr.v1alpha1.Type\n\t3,  // 24: google.api.expr.v1alpha1.Type.FunctionType.arg_types:type_name -> google.api.expr.v1alpha1.Type\n\t3,  // 25: google.api.expr.v1alpha1.Type.AbstractType.parameter_types:type_name -> google.api.expr.v1alpha1.Type\n\t3,  // 26: google.api.expr.v1alpha1.Decl.IdentDecl.type:type_name -> google.api.expr.v1alpha1.Type\n\t19, // 27: google.api.expr.v1alpha1.Decl.IdentDecl.value:type_name -> google.api.expr.v1alpha1.Constant\n\t14, // 28: google.api.expr.v1alpha1.Decl.FunctionDecl.overloads:type_name -> google.api.expr.v1alpha1.Decl.FunctionDecl.Overload\n\t3,  // 29: google.api.expr.v1alpha1.Decl.FunctionDecl.Overload.params:type_name -> google.api.expr.v1alpha1.Type\n\t3,  // 30: google.api.expr.v1alpha1.Decl.FunctionDecl.Overload.result_type:type_name -> google.api.expr.v1alpha1.Type\n\t31, // [31:31] is the sub-list for method output_type\n\t31, // [31:31] is the sub-list for method input_type\n\t31, // [31:31] is the sub-list for extension type_name\n\t31, // [31:31] is the sub-list for extension extendee\n\t0,  // [0:31] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_expr_v1alpha1_checked_proto_init() }\nfunc file_google_api_expr_v1alpha1_checked_proto_init() {\n\tif File_google_api_expr_v1alpha1_checked_proto != nil {\n\t\treturn\n\t}\n\tfile_google_api_expr_v1alpha1_syntax_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_expr_v1alpha1_checked_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CheckedExpr); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_checked_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Type); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_checked_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Decl); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_checked_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Reference); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_checked_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Type_ListType); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_checked_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Type_MapType); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_checked_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Type_FunctionType); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_checked_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Type_AbstractType); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_checked_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Decl_IdentDecl); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_checked_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Decl_FunctionDecl); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_checked_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Decl_FunctionDecl_Overload); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tfile_google_api_expr_v1alpha1_checked_proto_msgTypes[1].OneofWrappers = []interface{}{\n\t\t(*Type_Dyn)(nil),\n\t\t(*Type_Null)(nil),\n\t\t(*Type_Primitive)(nil),\n\t\t(*Type_Wrapper)(nil),\n\t\t(*Type_WellKnown)(nil),\n\t\t(*Type_ListType_)(nil),\n\t\t(*Type_MapType_)(nil),\n\t\t(*Type_Function)(nil),\n\t\t(*Type_MessageType)(nil),\n\t\t(*Type_TypeParam)(nil),\n\t\t(*Type_Type)(nil),\n\t\t(*Type_Error)(nil),\n\t\t(*Type_AbstractType_)(nil),\n\t}\n\tfile_google_api_expr_v1alpha1_checked_proto_msgTypes[2].OneofWrappers = []interface{}{\n\t\t(*Decl_Ident)(nil),\n\t\t(*Decl_Function)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_expr_v1alpha1_checked_proto_rawDesc,\n\t\t\tNumEnums:      2,\n\t\t\tNumMessages:   13,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_expr_v1alpha1_checked_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_expr_v1alpha1_checked_proto_depIdxs,\n\t\tEnumInfos:         file_google_api_expr_v1alpha1_checked_proto_enumTypes,\n\t\tMessageInfos:      file_google_api_expr_v1alpha1_checked_proto_msgTypes,\n\t}.Build()\n\tFile_google_api_expr_v1alpha1_checked_proto = out.File\n\tfile_google_api_expr_v1alpha1_checked_proto_rawDesc = nil\n\tfile_google_api_expr_v1alpha1_checked_proto_goTypes = nil\n\tfile_google_api_expr_v1alpha1_checked_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/eval.pb.go",
    "content": "// Copyright 2025 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v4.24.4\n// source: google/api/expr/v1alpha1/eval.proto\n\npackage expr\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tstatus \"google.golang.org/genproto/googleapis/rpc/status\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// The state of an evaluation.\n//\n// Can represent an inital, partial, or completed state of evaluation.\ntype EvalState struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The unique values referenced in this message.\n\tValues []*ExprValue `protobuf:\"bytes,1,rep,name=values,proto3\" json:\"values,omitempty\"`\n\t// An ordered list of results.\n\t//\n\t// Tracks the flow of evaluation through the expression.\n\t// May be sparse.\n\tResults []*EvalState_Result `protobuf:\"bytes,3,rep,name=results,proto3\" json:\"results,omitempty\"`\n}\n\nfunc (x *EvalState) Reset() {\n\t*x = EvalState{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_eval_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EvalState) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EvalState) ProtoMessage() {}\n\nfunc (x *EvalState) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_eval_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EvalState.ProtoReflect.Descriptor instead.\nfunc (*EvalState) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_eval_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *EvalState) GetValues() []*ExprValue {\n\tif x != nil {\n\t\treturn x.Values\n\t}\n\treturn nil\n}\n\nfunc (x *EvalState) GetResults() []*EvalState_Result {\n\tif x != nil {\n\t\treturn x.Results\n\t}\n\treturn nil\n}\n\n// The value of an evaluated expression.\ntype ExprValue struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// An expression can resolve to a value, error or unknown.\n\t//\n\t// Types that are assignable to Kind:\n\t//\n\t//\t*ExprValue_Value\n\t//\t*ExprValue_Error\n\t//\t*ExprValue_Unknown\n\tKind isExprValue_Kind `protobuf_oneof:\"kind\"`\n}\n\nfunc (x *ExprValue) Reset() {\n\t*x = ExprValue{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_eval_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ExprValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ExprValue) ProtoMessage() {}\n\nfunc (x *ExprValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_eval_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ExprValue.ProtoReflect.Descriptor instead.\nfunc (*ExprValue) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_eval_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (m *ExprValue) GetKind() isExprValue_Kind {\n\tif m != nil {\n\t\treturn m.Kind\n\t}\n\treturn nil\n}\n\nfunc (x *ExprValue) GetValue() *Value {\n\tif x, ok := x.GetKind().(*ExprValue_Value); ok {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nfunc (x *ExprValue) GetError() *ErrorSet {\n\tif x, ok := x.GetKind().(*ExprValue_Error); ok {\n\t\treturn x.Error\n\t}\n\treturn nil\n}\n\nfunc (x *ExprValue) GetUnknown() *UnknownSet {\n\tif x, ok := x.GetKind().(*ExprValue_Unknown); ok {\n\t\treturn x.Unknown\n\t}\n\treturn nil\n}\n\ntype isExprValue_Kind interface {\n\tisExprValue_Kind()\n}\n\ntype ExprValue_Value struct {\n\t// A concrete value.\n\tValue *Value `protobuf:\"bytes,1,opt,name=value,proto3,oneof\"`\n}\n\ntype ExprValue_Error struct {\n\t// The set of errors in the critical path of evalution.\n\t//\n\t// Only errors in the critical path are included. For example,\n\t// `(<error1> || true) && <error2>` will only result in `<error2>`,\n\t// while `<error1> || <error2>` will result in both `<error1>` and\n\t// `<error2>`.\n\t//\n\t// Errors cause by the presence of other errors are not included in the\n\t// set. For example `<error1>.foo`, `foo(<error1>)`, and `<error1> + 1` will\n\t// only result in `<error1>`.\n\t//\n\t// Multiple errors *might* be included when evaluation could result\n\t// in different errors. For example `<error1> + <error2>` and\n\t// `foo(<error1>, <error2>)` may result in `<error1>`, `<error2>` or both.\n\t// The exact subset of errors included for this case is unspecified and\n\t// depends on the implementation details of the evaluator.\n\tError *ErrorSet `protobuf:\"bytes,2,opt,name=error,proto3,oneof\"`\n}\n\ntype ExprValue_Unknown struct {\n\t// The set of unknowns in the critical path of evaluation.\n\t//\n\t// Unknown behaves identically to Error with regards to propagation.\n\t// Specifically, only unknowns in the critical path are included, unknowns\n\t// caused by the presence of other unknowns are not included, and multiple\n\t// unknowns *might* be included included when evaluation could result in\n\t// different unknowns. For example:\n\t//\n\t//\t(<unknown[1]> || true) && <unknown[2]> -> <unknown[2]>\n\t//\t<unknown[1]> || <unknown[2]> -> <unknown[1,2]>\n\t//\t<unknown[1]>.foo -> <unknown[1]>\n\t//\tfoo(<unknown[1]>) -> <unknown[1]>\n\t//\t<unknown[1]> + <unknown[2]> -> <unknown[1]> or <unknown[2[>\n\t//\n\t// Unknown takes precidence over Error in cases where a `Value` can short\n\t// circuit the result:\n\t//\n\t//\t<error> || <unknown> -> <unknown>\n\t//\t<error> && <unknown> -> <unknown>\n\t//\n\t// Errors take precidence in all other cases:\n\t//\n\t//\t<unknown> + <error> -> <error>\n\t//\tfoo(<unknown>, <error>) -> <error>\n\tUnknown *UnknownSet `protobuf:\"bytes,3,opt,name=unknown,proto3,oneof\"`\n}\n\nfunc (*ExprValue_Value) isExprValue_Kind() {}\n\nfunc (*ExprValue_Error) isExprValue_Kind() {}\n\nfunc (*ExprValue_Unknown) isExprValue_Kind() {}\n\n// A set of errors.\n//\n// The errors included depend on the context. See `ExprValue.error`.\ntype ErrorSet struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The errors in the set.\n\tErrors []*status.Status `protobuf:\"bytes,1,rep,name=errors,proto3\" json:\"errors,omitempty\"`\n}\n\nfunc (x *ErrorSet) Reset() {\n\t*x = ErrorSet{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_eval_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ErrorSet) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ErrorSet) ProtoMessage() {}\n\nfunc (x *ErrorSet) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_eval_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ErrorSet.ProtoReflect.Descriptor instead.\nfunc (*ErrorSet) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_eval_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *ErrorSet) GetErrors() []*status.Status {\n\tif x != nil {\n\t\treturn x.Errors\n\t}\n\treturn nil\n}\n\n// A set of expressions for which the value is unknown.\n//\n// The unknowns included depend on the context. See `ExprValue.unknown`.\ntype UnknownSet struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The ids of the expressions with unknown values.\n\tExprs []int64 `protobuf:\"varint,1,rep,packed,name=exprs,proto3\" json:\"exprs,omitempty\"`\n}\n\nfunc (x *UnknownSet) Reset() {\n\t*x = UnknownSet{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_eval_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UnknownSet) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UnknownSet) ProtoMessage() {}\n\nfunc (x *UnknownSet) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_eval_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UnknownSet.ProtoReflect.Descriptor instead.\nfunc (*UnknownSet) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_eval_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *UnknownSet) GetExprs() []int64 {\n\tif x != nil {\n\t\treturn x.Exprs\n\t}\n\treturn nil\n}\n\n// A single evalution result.\ntype EvalState_Result struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The id of the expression this result if for.\n\tExpr int64 `protobuf:\"varint,1,opt,name=expr,proto3\" json:\"expr,omitempty\"`\n\t// The index in `values` of the resulting value.\n\tValue int64 `protobuf:\"varint,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *EvalState_Result) Reset() {\n\t*x = EvalState_Result{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_eval_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EvalState_Result) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EvalState_Result) ProtoMessage() {}\n\nfunc (x *EvalState_Result) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_eval_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EvalState_Result.ProtoReflect.Descriptor instead.\nfunc (*EvalState_Result) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_eval_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *EvalState_Result) GetExpr() int64 {\n\tif x != nil {\n\t\treturn x.Expr\n\t}\n\treturn 0\n}\n\nfunc (x *EvalState_Result) GetValue() int64 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\nvar File_google_api_expr_v1alpha1_eval_proto protoreflect.FileDescriptor\n\nvar file_google_api_expr_v1alpha1_eval_proto_rawDesc = []byte{\n\t0x0a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x70,\n\t0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x65, 0x76, 0x61, 0x6c, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a,\n\t0x24, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x70, 0x72,\n\t0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70,\n\t0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc2,\n\t0x01, 0x0a, 0x09, 0x45, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x06,\n\t0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x56, 0x61, 0x6c, 0x75,\n\t0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x07, 0x72, 0x65, 0x73,\n\t0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e,\n\t0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x1a,\n\t0x32, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x78, 0x70,\n\t0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x12, 0x14, 0x0a,\n\t0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61,\n\t0x6c, 0x75, 0x65, 0x22, 0xca, 0x01, 0x0a, 0x09, 0x45, 0x78, 0x70, 0x72, 0x56, 0x61, 0x6c, 0x75,\n\t0x65, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78,\n\t0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75,\n\t0x65, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3a, 0x0a, 0x05, 0x65, 0x72,\n\t0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52,\n\t0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x40, 0x0a, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77,\n\t0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52,\n\t0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,\n\t0x22, 0x36, 0x0a, 0x08, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x06,\n\t0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,\n\t0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x22, 0x0a, 0x0a, 0x55, 0x6e, 0x6b, 0x6e,\n\t0x6f, 0x77, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x70, 0x72, 0x73, 0x18,\n\t0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x65, 0x78, 0x70, 0x72, 0x73, 0x42, 0x6c, 0x0a, 0x1c,\n\t0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65,\n\t0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x09, 0x45, 0x76,\n\t0x61, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,\n\t0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x70, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x3b, 0x65, 0x78, 0x70, 0x72, 0xf8, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_expr_v1alpha1_eval_proto_rawDescOnce sync.Once\n\tfile_google_api_expr_v1alpha1_eval_proto_rawDescData = file_google_api_expr_v1alpha1_eval_proto_rawDesc\n)\n\nfunc file_google_api_expr_v1alpha1_eval_proto_rawDescGZIP() []byte {\n\tfile_google_api_expr_v1alpha1_eval_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_expr_v1alpha1_eval_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_expr_v1alpha1_eval_proto_rawDescData)\n\t})\n\treturn file_google_api_expr_v1alpha1_eval_proto_rawDescData\n}\n\nvar file_google_api_expr_v1alpha1_eval_proto_msgTypes = make([]protoimpl.MessageInfo, 5)\nvar file_google_api_expr_v1alpha1_eval_proto_goTypes = []interface{}{\n\t(*EvalState)(nil),        // 0: google.api.expr.v1alpha1.EvalState\n\t(*ExprValue)(nil),        // 1: google.api.expr.v1alpha1.ExprValue\n\t(*ErrorSet)(nil),         // 2: google.api.expr.v1alpha1.ErrorSet\n\t(*UnknownSet)(nil),       // 3: google.api.expr.v1alpha1.UnknownSet\n\t(*EvalState_Result)(nil), // 4: google.api.expr.v1alpha1.EvalState.Result\n\t(*Value)(nil),            // 5: google.api.expr.v1alpha1.Value\n\t(*status.Status)(nil),    // 6: google.rpc.Status\n}\nvar file_google_api_expr_v1alpha1_eval_proto_depIdxs = []int32{\n\t1, // 0: google.api.expr.v1alpha1.EvalState.values:type_name -> google.api.expr.v1alpha1.ExprValue\n\t4, // 1: google.api.expr.v1alpha1.EvalState.results:type_name -> google.api.expr.v1alpha1.EvalState.Result\n\t5, // 2: google.api.expr.v1alpha1.ExprValue.value:type_name -> google.api.expr.v1alpha1.Value\n\t2, // 3: google.api.expr.v1alpha1.ExprValue.error:type_name -> google.api.expr.v1alpha1.ErrorSet\n\t3, // 4: google.api.expr.v1alpha1.ExprValue.unknown:type_name -> google.api.expr.v1alpha1.UnknownSet\n\t6, // 5: google.api.expr.v1alpha1.ErrorSet.errors:type_name -> google.rpc.Status\n\t6, // [6:6] is the sub-list for method output_type\n\t6, // [6:6] is the sub-list for method input_type\n\t6, // [6:6] is the sub-list for extension type_name\n\t6, // [6:6] is the sub-list for extension extendee\n\t0, // [0:6] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_expr_v1alpha1_eval_proto_init() }\nfunc file_google_api_expr_v1alpha1_eval_proto_init() {\n\tif File_google_api_expr_v1alpha1_eval_proto != nil {\n\t\treturn\n\t}\n\tfile_google_api_expr_v1alpha1_value_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_expr_v1alpha1_eval_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EvalState); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_eval_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ExprValue); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_eval_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ErrorSet); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_eval_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UnknownSet); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_eval_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EvalState_Result); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tfile_google_api_expr_v1alpha1_eval_proto_msgTypes[1].OneofWrappers = []interface{}{\n\t\t(*ExprValue_Value)(nil),\n\t\t(*ExprValue_Error)(nil),\n\t\t(*ExprValue_Unknown)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_expr_v1alpha1_eval_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   5,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_expr_v1alpha1_eval_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_expr_v1alpha1_eval_proto_depIdxs,\n\t\tMessageInfos:      file_google_api_expr_v1alpha1_eval_proto_msgTypes,\n\t}.Build()\n\tFile_google_api_expr_v1alpha1_eval_proto = out.File\n\tfile_google_api_expr_v1alpha1_eval_proto_rawDesc = nil\n\tfile_google_api_expr_v1alpha1_eval_proto_goTypes = nil\n\tfile_google_api_expr_v1alpha1_eval_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/explain.pb.go",
    "content": "// Copyright 2025 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v4.24.4\n// source: google/api/expr/v1alpha1/explain.proto\n\npackage expr\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Values of intermediate expressions produced when evaluating expression.\n// Deprecated, use `EvalState` instead.\n//\n// Deprecated: Do not use.\ntype Explain struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// All of the observed values.\n\t//\n\t// The field value_index is an index in the values list.\n\t// Separating values from steps is needed to remove redundant values.\n\tValues []*Value `protobuf:\"bytes,1,rep,name=values,proto3\" json:\"values,omitempty\"`\n\t// List of steps.\n\t//\n\t// Repeated evaluations of the same expression generate new ExprStep\n\t// instances. The order of such ExprStep instances matches the order of\n\t// elements returned by Comprehension.iter_range.\n\tExprSteps []*Explain_ExprStep `protobuf:\"bytes,2,rep,name=expr_steps,json=exprSteps,proto3\" json:\"expr_steps,omitempty\"`\n}\n\nfunc (x *Explain) Reset() {\n\t*x = Explain{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_explain_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Explain) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Explain) ProtoMessage() {}\n\nfunc (x *Explain) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_explain_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Explain.ProtoReflect.Descriptor instead.\nfunc (*Explain) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_explain_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Explain) GetValues() []*Value {\n\tif x != nil {\n\t\treturn x.Values\n\t}\n\treturn nil\n}\n\nfunc (x *Explain) GetExprSteps() []*Explain_ExprStep {\n\tif x != nil {\n\t\treturn x.ExprSteps\n\t}\n\treturn nil\n}\n\n// ID and value index of one step.\ntype Explain_ExprStep struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// ID of corresponding Expr node.\n\tId int64 `protobuf:\"varint,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\t// Index of the value in the values list.\n\tValueIndex int32 `protobuf:\"varint,2,opt,name=value_index,json=valueIndex,proto3\" json:\"value_index,omitempty\"`\n}\n\nfunc (x *Explain_ExprStep) Reset() {\n\t*x = Explain_ExprStep{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_explain_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Explain_ExprStep) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Explain_ExprStep) ProtoMessage() {}\n\nfunc (x *Explain_ExprStep) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_explain_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Explain_ExprStep.ProtoReflect.Descriptor instead.\nfunc (*Explain_ExprStep) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_explain_proto_rawDescGZIP(), []int{0, 0}\n}\n\nfunc (x *Explain_ExprStep) GetId() int64 {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn 0\n}\n\nfunc (x *Explain_ExprStep) GetValueIndex() int32 {\n\tif x != nil {\n\t\treturn x.ValueIndex\n\t}\n\treturn 0\n}\n\nvar File_google_api_expr_v1alpha1_explain_proto protoreflect.FileDescriptor\n\nvar file_google_api_expr_v1alpha1_explain_proto_rawDesc = []byte{\n\t0x0a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x70,\n\t0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x6c, 0x61,\n\t0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x1a, 0x24, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65,\n\t0x78, 0x70, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c,\n\t0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xce, 0x01, 0x0a, 0x07, 0x45, 0x78, 0x70,\n\t0x6c, 0x61, 0x69, 0x6e, 0x12, 0x37, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01,\n\t0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x49, 0x0a,\n\t0x0a, 0x65, 0x78, 0x70, 0x72, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,\n\t0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65,\n\t0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70,\n\t0x6c, 0x61, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x53, 0x74, 0x65, 0x70, 0x52, 0x09, 0x65,\n\t0x78, 0x70, 0x72, 0x53, 0x74, 0x65, 0x70, 0x73, 0x1a, 0x3b, 0x0a, 0x08, 0x45, 0x78, 0x70, 0x72,\n\t0x53, 0x74, 0x65, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,\n\t0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x6e,\n\t0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x49, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x02, 0x18, 0x01, 0x42, 0x6f, 0x0a, 0x1c, 0x63, 0x6f, 0x6d,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0c, 0x45, 0x78, 0x70, 0x6c, 0x61,\n\t0x69, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,\n\t0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x70, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x3b, 0x65, 0x78, 0x70, 0x72, 0xf8, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_expr_v1alpha1_explain_proto_rawDescOnce sync.Once\n\tfile_google_api_expr_v1alpha1_explain_proto_rawDescData = file_google_api_expr_v1alpha1_explain_proto_rawDesc\n)\n\nfunc file_google_api_expr_v1alpha1_explain_proto_rawDescGZIP() []byte {\n\tfile_google_api_expr_v1alpha1_explain_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_expr_v1alpha1_explain_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_expr_v1alpha1_explain_proto_rawDescData)\n\t})\n\treturn file_google_api_expr_v1alpha1_explain_proto_rawDescData\n}\n\nvar file_google_api_expr_v1alpha1_explain_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_google_api_expr_v1alpha1_explain_proto_goTypes = []interface{}{\n\t(*Explain)(nil),          // 0: google.api.expr.v1alpha1.Explain\n\t(*Explain_ExprStep)(nil), // 1: google.api.expr.v1alpha1.Explain.ExprStep\n\t(*Value)(nil),            // 2: google.api.expr.v1alpha1.Value\n}\nvar file_google_api_expr_v1alpha1_explain_proto_depIdxs = []int32{\n\t2, // 0: google.api.expr.v1alpha1.Explain.values:type_name -> google.api.expr.v1alpha1.Value\n\t1, // 1: google.api.expr.v1alpha1.Explain.expr_steps:type_name -> google.api.expr.v1alpha1.Explain.ExprStep\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_expr_v1alpha1_explain_proto_init() }\nfunc file_google_api_expr_v1alpha1_explain_proto_init() {\n\tif File_google_api_expr_v1alpha1_explain_proto != nil {\n\t\treturn\n\t}\n\tfile_google_api_expr_v1alpha1_value_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_expr_v1alpha1_explain_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Explain); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_explain_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Explain_ExprStep); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_expr_v1alpha1_explain_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_expr_v1alpha1_explain_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_expr_v1alpha1_explain_proto_depIdxs,\n\t\tMessageInfos:      file_google_api_expr_v1alpha1_explain_proto_msgTypes,\n\t}.Build()\n\tFile_google_api_expr_v1alpha1_explain_proto = out.File\n\tfile_google_api_expr_v1alpha1_explain_proto_rawDesc = nil\n\tfile_google_api_expr_v1alpha1_explain_proto_goTypes = nil\n\tfile_google_api_expr_v1alpha1_explain_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/syntax.pb.go",
    "content": "// Copyright 2025 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v4.24.4\n// source: google/api/expr/v1alpha1/syntax.proto\n\npackage expr\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\tstructpb \"google.golang.org/protobuf/types/known/structpb\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// CEL component specifier.\ntype SourceInfo_Extension_Component int32\n\nconst (\n\t// Unspecified, default.\n\tSourceInfo_Extension_COMPONENT_UNSPECIFIED SourceInfo_Extension_Component = 0\n\t// Parser. Converts a CEL string to an AST.\n\tSourceInfo_Extension_COMPONENT_PARSER SourceInfo_Extension_Component = 1\n\t// Type checker. Checks that references in an AST are defined and types\n\t// agree.\n\tSourceInfo_Extension_COMPONENT_TYPE_CHECKER SourceInfo_Extension_Component = 2\n\t// Runtime. Evaluates a parsed and optionally checked CEL AST against a\n\t// context.\n\tSourceInfo_Extension_COMPONENT_RUNTIME SourceInfo_Extension_Component = 3\n)\n\n// Enum value maps for SourceInfo_Extension_Component.\nvar (\n\tSourceInfo_Extension_Component_name = map[int32]string{\n\t\t0: \"COMPONENT_UNSPECIFIED\",\n\t\t1: \"COMPONENT_PARSER\",\n\t\t2: \"COMPONENT_TYPE_CHECKER\",\n\t\t3: \"COMPONENT_RUNTIME\",\n\t}\n\tSourceInfo_Extension_Component_value = map[string]int32{\n\t\t\"COMPONENT_UNSPECIFIED\":  0,\n\t\t\"COMPONENT_PARSER\":       1,\n\t\t\"COMPONENT_TYPE_CHECKER\": 2,\n\t\t\"COMPONENT_RUNTIME\":      3,\n\t}\n)\n\nfunc (x SourceInfo_Extension_Component) Enum() *SourceInfo_Extension_Component {\n\tp := new(SourceInfo_Extension_Component)\n\t*p = x\n\treturn p\n}\n\nfunc (x SourceInfo_Extension_Component) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (SourceInfo_Extension_Component) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_enumTypes[0].Descriptor()\n}\n\nfunc (SourceInfo_Extension_Component) Type() protoreflect.EnumType {\n\treturn &file_google_api_expr_v1alpha1_syntax_proto_enumTypes[0]\n}\n\nfunc (x SourceInfo_Extension_Component) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use SourceInfo_Extension_Component.Descriptor instead.\nfunc (SourceInfo_Extension_Component) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{3, 0, 0}\n}\n\n// An expression together with source information as returned by the parser.\ntype ParsedExpr struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The parsed expression.\n\tExpr *Expr `protobuf:\"bytes,2,opt,name=expr,proto3\" json:\"expr,omitempty\"`\n\t// The source info derived from input that generated the parsed `expr`.\n\tSourceInfo *SourceInfo `protobuf:\"bytes,3,opt,name=source_info,json=sourceInfo,proto3\" json:\"source_info,omitempty\"`\n}\n\nfunc (x *ParsedExpr) Reset() {\n\t*x = ParsedExpr{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ParsedExpr) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ParsedExpr) ProtoMessage() {}\n\nfunc (x *ParsedExpr) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ParsedExpr.ProtoReflect.Descriptor instead.\nfunc (*ParsedExpr) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ParsedExpr) GetExpr() *Expr {\n\tif x != nil {\n\t\treturn x.Expr\n\t}\n\treturn nil\n}\n\nfunc (x *ParsedExpr) GetSourceInfo() *SourceInfo {\n\tif x != nil {\n\t\treturn x.SourceInfo\n\t}\n\treturn nil\n}\n\n// An abstract representation of a common expression.\n//\n// Expressions are abstractly represented as a collection of identifiers,\n// select statements, function calls, literals, and comprehensions. All\n// operators with the exception of the '.' operator are modelled as function\n// calls. This makes it easy to represent new operators into the existing AST.\n//\n// All references within expressions must resolve to a\n// [Decl][google.api.expr.v1alpha1.Decl] provided at type-check for an\n// expression to be valid. A reference may either be a bare identifier `name` or\n// a qualified identifier `google.api.name`. References may either refer to a\n// value or a function declaration.\n//\n// For example, the expression `google.api.name.startsWith('expr')` references\n// the declaration `google.api.name` within a\n// [Expr.Select][google.api.expr.v1alpha1.Expr.Select] expression, and the\n// function declaration `startsWith`.\ntype Expr struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Required. An id assigned to this node by the parser which is unique in a\n\t// given expression tree. This is used to associate type information and other\n\t// attributes to a node in the parse tree.\n\tId int64 `protobuf:\"varint,2,opt,name=id,proto3\" json:\"id,omitempty\"`\n\t// Required. Variants of expressions.\n\t//\n\t// Types that are assignable to ExprKind:\n\t//\n\t//\t*Expr_ConstExpr\n\t//\t*Expr_IdentExpr\n\t//\t*Expr_SelectExpr\n\t//\t*Expr_CallExpr\n\t//\t*Expr_ListExpr\n\t//\t*Expr_StructExpr\n\t//\t*Expr_ComprehensionExpr\n\tExprKind isExpr_ExprKind `protobuf_oneof:\"expr_kind\"`\n}\n\nfunc (x *Expr) Reset() {\n\t*x = Expr{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Expr) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr) ProtoMessage() {}\n\nfunc (x *Expr) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr.ProtoReflect.Descriptor instead.\nfunc (*Expr) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *Expr) GetId() int64 {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn 0\n}\n\nfunc (m *Expr) GetExprKind() isExpr_ExprKind {\n\tif m != nil {\n\t\treturn m.ExprKind\n\t}\n\treturn nil\n}\n\nfunc (x *Expr) GetConstExpr() *Constant {\n\tif x, ok := x.GetExprKind().(*Expr_ConstExpr); ok {\n\t\treturn x.ConstExpr\n\t}\n\treturn nil\n}\n\nfunc (x *Expr) GetIdentExpr() *Expr_Ident {\n\tif x, ok := x.GetExprKind().(*Expr_IdentExpr); ok {\n\t\treturn x.IdentExpr\n\t}\n\treturn nil\n}\n\nfunc (x *Expr) GetSelectExpr() *Expr_Select {\n\tif x, ok := x.GetExprKind().(*Expr_SelectExpr); ok {\n\t\treturn x.SelectExpr\n\t}\n\treturn nil\n}\n\nfunc (x *Expr) GetCallExpr() *Expr_Call {\n\tif x, ok := x.GetExprKind().(*Expr_CallExpr); ok {\n\t\treturn x.CallExpr\n\t}\n\treturn nil\n}\n\nfunc (x *Expr) GetListExpr() *Expr_CreateList {\n\tif x, ok := x.GetExprKind().(*Expr_ListExpr); ok {\n\t\treturn x.ListExpr\n\t}\n\treturn nil\n}\n\nfunc (x *Expr) GetStructExpr() *Expr_CreateStruct {\n\tif x, ok := x.GetExprKind().(*Expr_StructExpr); ok {\n\t\treturn x.StructExpr\n\t}\n\treturn nil\n}\n\nfunc (x *Expr) GetComprehensionExpr() *Expr_Comprehension {\n\tif x, ok := x.GetExprKind().(*Expr_ComprehensionExpr); ok {\n\t\treturn x.ComprehensionExpr\n\t}\n\treturn nil\n}\n\ntype isExpr_ExprKind interface {\n\tisExpr_ExprKind()\n}\n\ntype Expr_ConstExpr struct {\n\t// A literal expression.\n\tConstExpr *Constant `protobuf:\"bytes,3,opt,name=const_expr,json=constExpr,proto3,oneof\"`\n}\n\ntype Expr_IdentExpr struct {\n\t// An identifier expression.\n\tIdentExpr *Expr_Ident `protobuf:\"bytes,4,opt,name=ident_expr,json=identExpr,proto3,oneof\"`\n}\n\ntype Expr_SelectExpr struct {\n\t// A field selection expression, e.g. `request.auth`.\n\tSelectExpr *Expr_Select `protobuf:\"bytes,5,opt,name=select_expr,json=selectExpr,proto3,oneof\"`\n}\n\ntype Expr_CallExpr struct {\n\t// A call expression, including calls to predefined functions and operators.\n\tCallExpr *Expr_Call `protobuf:\"bytes,6,opt,name=call_expr,json=callExpr,proto3,oneof\"`\n}\n\ntype Expr_ListExpr struct {\n\t// A list creation expression.\n\tListExpr *Expr_CreateList `protobuf:\"bytes,7,opt,name=list_expr,json=listExpr,proto3,oneof\"`\n}\n\ntype Expr_StructExpr struct {\n\t// A map or message creation expression.\n\tStructExpr *Expr_CreateStruct `protobuf:\"bytes,8,opt,name=struct_expr,json=structExpr,proto3,oneof\"`\n}\n\ntype Expr_ComprehensionExpr struct {\n\t// A comprehension expression.\n\tComprehensionExpr *Expr_Comprehension `protobuf:\"bytes,9,opt,name=comprehension_expr,json=comprehensionExpr,proto3,oneof\"`\n}\n\nfunc (*Expr_ConstExpr) isExpr_ExprKind() {}\n\nfunc (*Expr_IdentExpr) isExpr_ExprKind() {}\n\nfunc (*Expr_SelectExpr) isExpr_ExprKind() {}\n\nfunc (*Expr_CallExpr) isExpr_ExprKind() {}\n\nfunc (*Expr_ListExpr) isExpr_ExprKind() {}\n\nfunc (*Expr_StructExpr) isExpr_ExprKind() {}\n\nfunc (*Expr_ComprehensionExpr) isExpr_ExprKind() {}\n\n// Represents a primitive literal.\n//\n// Named 'Constant' here for backwards compatibility.\n//\n// This is similar as the primitives supported in the well-known type\n// `google.protobuf.Value`, but richer so it can represent CEL's full range of\n// primitives.\n//\n// Lists and structs are not included as constants as these aggregate types may\n// contain [Expr][google.api.expr.v1alpha1.Expr] elements which require\n// evaluation and are thus not constant.\n//\n// Examples of literals include: `\"hello\"`, `b'bytes'`, `1u`, `4.2`, `-2`,\n// `true`, `null`.\ntype Constant struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Required. The valid constant kinds.\n\t//\n\t// Types that are assignable to ConstantKind:\n\t//\n\t//\t*Constant_NullValue\n\t//\t*Constant_BoolValue\n\t//\t*Constant_Int64Value\n\t//\t*Constant_Uint64Value\n\t//\t*Constant_DoubleValue\n\t//\t*Constant_StringValue\n\t//\t*Constant_BytesValue\n\t//\t*Constant_DurationValue\n\t//\t*Constant_TimestampValue\n\tConstantKind isConstant_ConstantKind `protobuf_oneof:\"constant_kind\"`\n}\n\nfunc (x *Constant) Reset() {\n\t*x = Constant{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Constant) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Constant) ProtoMessage() {}\n\nfunc (x *Constant) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Constant.ProtoReflect.Descriptor instead.\nfunc (*Constant) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (m *Constant) GetConstantKind() isConstant_ConstantKind {\n\tif m != nil {\n\t\treturn m.ConstantKind\n\t}\n\treturn nil\n}\n\nfunc (x *Constant) GetNullValue() structpb.NullValue {\n\tif x, ok := x.GetConstantKind().(*Constant_NullValue); ok {\n\t\treturn x.NullValue\n\t}\n\treturn structpb.NullValue_NULL_VALUE\n}\n\nfunc (x *Constant) GetBoolValue() bool {\n\tif x, ok := x.GetConstantKind().(*Constant_BoolValue); ok {\n\t\treturn x.BoolValue\n\t}\n\treturn false\n}\n\nfunc (x *Constant) GetInt64Value() int64 {\n\tif x, ok := x.GetConstantKind().(*Constant_Int64Value); ok {\n\t\treturn x.Int64Value\n\t}\n\treturn 0\n}\n\nfunc (x *Constant) GetUint64Value() uint64 {\n\tif x, ok := x.GetConstantKind().(*Constant_Uint64Value); ok {\n\t\treturn x.Uint64Value\n\t}\n\treturn 0\n}\n\nfunc (x *Constant) GetDoubleValue() float64 {\n\tif x, ok := x.GetConstantKind().(*Constant_DoubleValue); ok {\n\t\treturn x.DoubleValue\n\t}\n\treturn 0\n}\n\nfunc (x *Constant) GetStringValue() string {\n\tif x, ok := x.GetConstantKind().(*Constant_StringValue); ok {\n\t\treturn x.StringValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *Constant) GetBytesValue() []byte {\n\tif x, ok := x.GetConstantKind().(*Constant_BytesValue); ok {\n\t\treturn x.BytesValue\n\t}\n\treturn nil\n}\n\n// Deprecated: Do not use.\nfunc (x *Constant) GetDurationValue() *durationpb.Duration {\n\tif x, ok := x.GetConstantKind().(*Constant_DurationValue); ok {\n\t\treturn x.DurationValue\n\t}\n\treturn nil\n}\n\n// Deprecated: Do not use.\nfunc (x *Constant) GetTimestampValue() *timestamppb.Timestamp {\n\tif x, ok := x.GetConstantKind().(*Constant_TimestampValue); ok {\n\t\treturn x.TimestampValue\n\t}\n\treturn nil\n}\n\ntype isConstant_ConstantKind interface {\n\tisConstant_ConstantKind()\n}\n\ntype Constant_NullValue struct {\n\t// null value.\n\tNullValue structpb.NullValue `protobuf:\"varint,1,opt,name=null_value,json=nullValue,proto3,enum=google.protobuf.NullValue,oneof\"`\n}\n\ntype Constant_BoolValue struct {\n\t// boolean value.\n\tBoolValue bool `protobuf:\"varint,2,opt,name=bool_value,json=boolValue,proto3,oneof\"`\n}\n\ntype Constant_Int64Value struct {\n\t// int64 value.\n\tInt64Value int64 `protobuf:\"varint,3,opt,name=int64_value,json=int64Value,proto3,oneof\"`\n}\n\ntype Constant_Uint64Value struct {\n\t// uint64 value.\n\tUint64Value uint64 `protobuf:\"varint,4,opt,name=uint64_value,json=uint64Value,proto3,oneof\"`\n}\n\ntype Constant_DoubleValue struct {\n\t// double value.\n\tDoubleValue float64 `protobuf:\"fixed64,5,opt,name=double_value,json=doubleValue,proto3,oneof\"`\n}\n\ntype Constant_StringValue struct {\n\t// string value.\n\tStringValue string `protobuf:\"bytes,6,opt,name=string_value,json=stringValue,proto3,oneof\"`\n}\n\ntype Constant_BytesValue struct {\n\t// bytes value.\n\tBytesValue []byte `protobuf:\"bytes,7,opt,name=bytes_value,json=bytesValue,proto3,oneof\"`\n}\n\ntype Constant_DurationValue struct {\n\t// protobuf.Duration value.\n\t//\n\t// Deprecated: duration is no longer considered a builtin cel type.\n\t//\n\t// Deprecated: Do not use.\n\tDurationValue *durationpb.Duration `protobuf:\"bytes,8,opt,name=duration_value,json=durationValue,proto3,oneof\"`\n}\n\ntype Constant_TimestampValue struct {\n\t// protobuf.Timestamp value.\n\t//\n\t// Deprecated: timestamp is no longer considered a builtin cel type.\n\t//\n\t// Deprecated: Do not use.\n\tTimestampValue *timestamppb.Timestamp `protobuf:\"bytes,9,opt,name=timestamp_value,json=timestampValue,proto3,oneof\"`\n}\n\nfunc (*Constant_NullValue) isConstant_ConstantKind() {}\n\nfunc (*Constant_BoolValue) isConstant_ConstantKind() {}\n\nfunc (*Constant_Int64Value) isConstant_ConstantKind() {}\n\nfunc (*Constant_Uint64Value) isConstant_ConstantKind() {}\n\nfunc (*Constant_DoubleValue) isConstant_ConstantKind() {}\n\nfunc (*Constant_StringValue) isConstant_ConstantKind() {}\n\nfunc (*Constant_BytesValue) isConstant_ConstantKind() {}\n\nfunc (*Constant_DurationValue) isConstant_ConstantKind() {}\n\nfunc (*Constant_TimestampValue) isConstant_ConstantKind() {}\n\n// Source information collected at parse time.\ntype SourceInfo struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The syntax version of the source, e.g. `cel1`.\n\tSyntaxVersion string `protobuf:\"bytes,1,opt,name=syntax_version,json=syntaxVersion,proto3\" json:\"syntax_version,omitempty\"`\n\t// The location name. All position information attached to an expression is\n\t// relative to this location.\n\t//\n\t// The location could be a file, UI element, or similar. For example,\n\t// `acme/app/AnvilPolicy.cel`.\n\tLocation string `protobuf:\"bytes,2,opt,name=location,proto3\" json:\"location,omitempty\"`\n\t// Monotonically increasing list of code point offsets where newlines\n\t// `\\n` appear.\n\t//\n\t// The line number of a given position is the index `i` where for a given\n\t// `id` the `line_offsets[i] < id_positions[id] < line_offsets[i+1]`. The\n\t// column may be derivd from `id_positions[id] - line_offsets[i]`.\n\tLineOffsets []int32 `protobuf:\"varint,3,rep,packed,name=line_offsets,json=lineOffsets,proto3\" json:\"line_offsets,omitempty\"`\n\t// A map from the parse node id (e.g. `Expr.id`) to the code point offset\n\t// within the source.\n\tPositions map[int64]int32 `protobuf:\"bytes,4,rep,name=positions,proto3\" json:\"positions,omitempty\" protobuf_key:\"varint,1,opt,name=key,proto3\" protobuf_val:\"varint,2,opt,name=value,proto3\"`\n\t// A map from the parse node id where a macro replacement was made to the\n\t// call `Expr` that resulted in a macro expansion.\n\t//\n\t// For example, `has(value.field)` is a function call that is replaced by a\n\t// `test_only` field selection in the AST. Likewise, the call\n\t// `list.exists(e, e > 10)` translates to a comprehension expression. The key\n\t// in the map corresponds to the expression id of the expanded macro, and the\n\t// value is the call `Expr` that was replaced.\n\tMacroCalls map[int64]*Expr `protobuf:\"bytes,5,rep,name=macro_calls,json=macroCalls,proto3\" json:\"macro_calls,omitempty\" protobuf_key:\"varint,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\t// A list of tags for extensions that were used while parsing or type checking\n\t// the source expression. For example, optimizations that require special\n\t// runtime support may be specified.\n\t//\n\t// These are used to check feature support between components in separate\n\t// implementations. This can be used to either skip redundant work or\n\t// report an error if the extension is unsupported.\n\tExtensions []*SourceInfo_Extension `protobuf:\"bytes,6,rep,name=extensions,proto3\" json:\"extensions,omitempty\"`\n}\n\nfunc (x *SourceInfo) Reset() {\n\t*x = SourceInfo{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SourceInfo) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SourceInfo) ProtoMessage() {}\n\nfunc (x *SourceInfo) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SourceInfo.ProtoReflect.Descriptor instead.\nfunc (*SourceInfo) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *SourceInfo) GetSyntaxVersion() string {\n\tif x != nil {\n\t\treturn x.SyntaxVersion\n\t}\n\treturn \"\"\n}\n\nfunc (x *SourceInfo) GetLocation() string {\n\tif x != nil {\n\t\treturn x.Location\n\t}\n\treturn \"\"\n}\n\nfunc (x *SourceInfo) GetLineOffsets() []int32 {\n\tif x != nil {\n\t\treturn x.LineOffsets\n\t}\n\treturn nil\n}\n\nfunc (x *SourceInfo) GetPositions() map[int64]int32 {\n\tif x != nil {\n\t\treturn x.Positions\n\t}\n\treturn nil\n}\n\nfunc (x *SourceInfo) GetMacroCalls() map[int64]*Expr {\n\tif x != nil {\n\t\treturn x.MacroCalls\n\t}\n\treturn nil\n}\n\nfunc (x *SourceInfo) GetExtensions() []*SourceInfo_Extension {\n\tif x != nil {\n\t\treturn x.Extensions\n\t}\n\treturn nil\n}\n\n// A specific position in source.\ntype SourcePosition struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The soucre location name (e.g. file name).\n\tLocation string `protobuf:\"bytes,1,opt,name=location,proto3\" json:\"location,omitempty\"`\n\t// The UTF-8 code unit offset.\n\tOffset int32 `protobuf:\"varint,2,opt,name=offset,proto3\" json:\"offset,omitempty\"`\n\t// The 1-based index of the starting line in the source text\n\t// where the issue occurs, or 0 if unknown.\n\tLine int32 `protobuf:\"varint,3,opt,name=line,proto3\" json:\"line,omitempty\"`\n\t// The 0-based index of the starting position within the line of source text\n\t// where the issue occurs.  Only meaningful if line is nonzero.\n\tColumn int32 `protobuf:\"varint,4,opt,name=column,proto3\" json:\"column,omitempty\"`\n}\n\nfunc (x *SourcePosition) Reset() {\n\t*x = SourcePosition{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SourcePosition) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SourcePosition) ProtoMessage() {}\n\nfunc (x *SourcePosition) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SourcePosition.ProtoReflect.Descriptor instead.\nfunc (*SourcePosition) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *SourcePosition) GetLocation() string {\n\tif x != nil {\n\t\treturn x.Location\n\t}\n\treturn \"\"\n}\n\nfunc (x *SourcePosition) GetOffset() int32 {\n\tif x != nil {\n\t\treturn x.Offset\n\t}\n\treturn 0\n}\n\nfunc (x *SourcePosition) GetLine() int32 {\n\tif x != nil {\n\t\treturn x.Line\n\t}\n\treturn 0\n}\n\nfunc (x *SourcePosition) GetColumn() int32 {\n\tif x != nil {\n\t\treturn x.Column\n\t}\n\treturn 0\n}\n\n// An identifier expression. e.g. `request`.\ntype Expr_Ident struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Required. Holds a single, unqualified identifier, possibly preceded by a\n\t// '.'.\n\t//\n\t// Qualified names are represented by the\n\t// [Expr.Select][google.api.expr.v1alpha1.Expr.Select] expression.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n}\n\nfunc (x *Expr_Ident) Reset() {\n\t*x = Expr_Ident{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Expr_Ident) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr_Ident) ProtoMessage() {}\n\nfunc (x *Expr_Ident) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr_Ident.ProtoReflect.Descriptor instead.\nfunc (*Expr_Ident) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{1, 0}\n}\n\nfunc (x *Expr_Ident) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\n// A field selection expression. e.g. `request.auth`.\ntype Expr_Select struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Required. The target of the selection expression.\n\t//\n\t// For example, in the select expression `request.auth`, the `request`\n\t// portion of the expression is the `operand`.\n\tOperand *Expr `protobuf:\"bytes,1,opt,name=operand,proto3\" json:\"operand,omitempty\"`\n\t// Required. The name of the field to select.\n\t//\n\t// For example, in the select expression `request.auth`, the `auth` portion\n\t// of the expression would be the `field`.\n\tField string `protobuf:\"bytes,2,opt,name=field,proto3\" json:\"field,omitempty\"`\n\t// Whether the select is to be interpreted as a field presence test.\n\t//\n\t// This results from the macro `has(request.auth)`.\n\tTestOnly bool `protobuf:\"varint,3,opt,name=test_only,json=testOnly,proto3\" json:\"test_only,omitempty\"`\n}\n\nfunc (x *Expr_Select) Reset() {\n\t*x = Expr_Select{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Expr_Select) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr_Select) ProtoMessage() {}\n\nfunc (x *Expr_Select) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr_Select.ProtoReflect.Descriptor instead.\nfunc (*Expr_Select) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{1, 1}\n}\n\nfunc (x *Expr_Select) GetOperand() *Expr {\n\tif x != nil {\n\t\treturn x.Operand\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_Select) GetField() string {\n\tif x != nil {\n\t\treturn x.Field\n\t}\n\treturn \"\"\n}\n\nfunc (x *Expr_Select) GetTestOnly() bool {\n\tif x != nil {\n\t\treturn x.TestOnly\n\t}\n\treturn false\n}\n\n// A call expression, including calls to predefined functions and operators.\n//\n// For example, `value == 10`, `size(map_value)`.\ntype Expr_Call struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The target of an method call-style expression. For example, `x` in\n\t// `x.f()`.\n\tTarget *Expr `protobuf:\"bytes,1,opt,name=target,proto3\" json:\"target,omitempty\"`\n\t// Required. The name of the function or method being called.\n\tFunction string `protobuf:\"bytes,2,opt,name=function,proto3\" json:\"function,omitempty\"`\n\t// The arguments.\n\tArgs []*Expr `protobuf:\"bytes,3,rep,name=args,proto3\" json:\"args,omitempty\"`\n}\n\nfunc (x *Expr_Call) Reset() {\n\t*x = Expr_Call{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Expr_Call) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr_Call) ProtoMessage() {}\n\nfunc (x *Expr_Call) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr_Call.ProtoReflect.Descriptor instead.\nfunc (*Expr_Call) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{1, 2}\n}\n\nfunc (x *Expr_Call) GetTarget() *Expr {\n\tif x != nil {\n\t\treturn x.Target\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_Call) GetFunction() string {\n\tif x != nil {\n\t\treturn x.Function\n\t}\n\treturn \"\"\n}\n\nfunc (x *Expr_Call) GetArgs() []*Expr {\n\tif x != nil {\n\t\treturn x.Args\n\t}\n\treturn nil\n}\n\n// A list creation expression.\n//\n// Lists may either be homogenous, e.g. `[1, 2, 3]`, or heterogeneous, e.g.\n// `dyn([1, 'hello', 2.0])`\ntype Expr_CreateList struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The elements part of the list.\n\tElements []*Expr `protobuf:\"bytes,1,rep,name=elements,proto3\" json:\"elements,omitempty\"`\n\t// The indices within the elements list which are marked as optional\n\t// elements.\n\t//\n\t// When an optional-typed value is present, the value it contains\n\t// is included in the list. If the optional-typed value is absent, the list\n\t// element is omitted from the CreateList result.\n\tOptionalIndices []int32 `protobuf:\"varint,2,rep,packed,name=optional_indices,json=optionalIndices,proto3\" json:\"optional_indices,omitempty\"`\n}\n\nfunc (x *Expr_CreateList) Reset() {\n\t*x = Expr_CreateList{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Expr_CreateList) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr_CreateList) ProtoMessage() {}\n\nfunc (x *Expr_CreateList) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr_CreateList.ProtoReflect.Descriptor instead.\nfunc (*Expr_CreateList) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{1, 3}\n}\n\nfunc (x *Expr_CreateList) GetElements() []*Expr {\n\tif x != nil {\n\t\treturn x.Elements\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_CreateList) GetOptionalIndices() []int32 {\n\tif x != nil {\n\t\treturn x.OptionalIndices\n\t}\n\treturn nil\n}\n\n// A map or message creation expression.\n//\n// Maps are constructed as `{'key_name': 'value'}`. Message construction is\n// similar, but prefixed with a type name and composed of field ids:\n// `types.MyType{field_id: 'value'}`.\ntype Expr_CreateStruct struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The type name of the message to be created, empty when creating map\n\t// literals.\n\tMessageName string `protobuf:\"bytes,1,opt,name=message_name,json=messageName,proto3\" json:\"message_name,omitempty\"`\n\t// The entries in the creation expression.\n\tEntries []*Expr_CreateStruct_Entry `protobuf:\"bytes,2,rep,name=entries,proto3\" json:\"entries,omitempty\"`\n}\n\nfunc (x *Expr_CreateStruct) Reset() {\n\t*x = Expr_CreateStruct{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Expr_CreateStruct) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr_CreateStruct) ProtoMessage() {}\n\nfunc (x *Expr_CreateStruct) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr_CreateStruct.ProtoReflect.Descriptor instead.\nfunc (*Expr_CreateStruct) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{1, 4}\n}\n\nfunc (x *Expr_CreateStruct) GetMessageName() string {\n\tif x != nil {\n\t\treturn x.MessageName\n\t}\n\treturn \"\"\n}\n\nfunc (x *Expr_CreateStruct) GetEntries() []*Expr_CreateStruct_Entry {\n\tif x != nil {\n\t\treturn x.Entries\n\t}\n\treturn nil\n}\n\n// A comprehension expression applied to a list or map.\n//\n// Comprehensions are not part of the core syntax, but enabled with macros.\n// A macro matches a specific call signature within a parsed AST and replaces\n// the call with an alternate AST block. Macro expansion happens at parse\n// time.\n//\n// The following macros are supported within CEL:\n//\n// Aggregate type macros may be applied to all elements in a list or all keys\n// in a map:\n//\n//   - `all`, `exists`, `exists_one` -  test a predicate expression against\n//     the inputs and return `true` if the predicate is satisfied for all,\n//     any, or only one value `list.all(x, x < 10)`.\n//   - `filter` - test a predicate expression against the inputs and return\n//     the subset of elements which satisfy the predicate:\n//     `payments.filter(p, p > 1000)`.\n//   - `map` - apply an expression to all elements in the input and return the\n//     output aggregate type: `[1, 2, 3].map(i, i * i)`.\n//\n// The `has(m.x)` macro tests whether the property `x` is present in struct\n// `m`. The semantics of this macro depend on the type of `m`. For proto2\n// messages `has(m.x)` is defined as 'defined, but not set`. For proto3, the\n// macro tests whether the property is set to its default. For map and struct\n// types, the macro tests whether the property `x` is defined on `m`.\n//\n// Comprehensions for the standard environment macros evaluation can be best\n// visualized as the following pseudocode:\n//\n// ```\n// let `accu_var` = `accu_init`\n//\n//\tfor (let `iter_var` in `iter_range`) {\n//\t  if (!`loop_condition`) {\n//\t    break\n//\t  }\n//\t  `accu_var` = `loop_step`\n//\t}\n//\n// return `result`\n// ```\n//\n// Comprehensions for the optional V2 macros which support map-to-map\n// translation differ slightly from the standard environment macros in that\n// they expose both the key or index in addition to the value for each list\n// or map entry:\n//\n// ```\n// let `accu_var` = `accu_init`\n//\n//\tfor (let `iter_var`, `iter_var2` in `iter_range`) {\n//\t  if (!`loop_condition`) {\n//\t    break\n//\t  }\n//\t  `accu_var` = `loop_step`\n//\t}\n//\n// return `result`\n// ```\ntype Expr_Comprehension struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The name of the first iteration variable.\n\t// When the iter_range is a list, this variable is the list element.\n\t// When the iter_range is a map, this variable is the map entry key.\n\tIterVar string `protobuf:\"bytes,1,opt,name=iter_var,json=iterVar,proto3\" json:\"iter_var,omitempty\"`\n\t// The name of the second iteration variable, empty if not set.\n\t// When the iter_range is a list, this variable is the integer index.\n\t// When the iter_range is a map, this variable is the map entry value.\n\t// This field is only set for comprehension v2 macros.\n\tIterVar2 string `protobuf:\"bytes,8,opt,name=iter_var2,json=iterVar2,proto3\" json:\"iter_var2,omitempty\"`\n\t// The range over which the comprehension iterates.\n\tIterRange *Expr `protobuf:\"bytes,2,opt,name=iter_range,json=iterRange,proto3\" json:\"iter_range,omitempty\"`\n\t// The name of the variable used for accumulation of the result.\n\tAccuVar string `protobuf:\"bytes,3,opt,name=accu_var,json=accuVar,proto3\" json:\"accu_var,omitempty\"`\n\t// The initial value of the accumulator.\n\tAccuInit *Expr `protobuf:\"bytes,4,opt,name=accu_init,json=accuInit,proto3\" json:\"accu_init,omitempty\"`\n\t// An expression which can contain iter_var, iter_var2, and accu_var.\n\t//\n\t// Returns false when the result has been computed and may be used as\n\t// a hint to short-circuit the remainder of the comprehension.\n\tLoopCondition *Expr `protobuf:\"bytes,5,opt,name=loop_condition,json=loopCondition,proto3\" json:\"loop_condition,omitempty\"`\n\t// An expression which can contain iter_var, iter_var2, and accu_var.\n\t//\n\t// Computes the next value of accu_var.\n\tLoopStep *Expr `protobuf:\"bytes,6,opt,name=loop_step,json=loopStep,proto3\" json:\"loop_step,omitempty\"`\n\t// An expression which can contain accu_var.\n\t//\n\t// Computes the result.\n\tResult *Expr `protobuf:\"bytes,7,opt,name=result,proto3\" json:\"result,omitempty\"`\n}\n\nfunc (x *Expr_Comprehension) Reset() {\n\t*x = Expr_Comprehension{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Expr_Comprehension) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr_Comprehension) ProtoMessage() {}\n\nfunc (x *Expr_Comprehension) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr_Comprehension.ProtoReflect.Descriptor instead.\nfunc (*Expr_Comprehension) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{1, 5}\n}\n\nfunc (x *Expr_Comprehension) GetIterVar() string {\n\tif x != nil {\n\t\treturn x.IterVar\n\t}\n\treturn \"\"\n}\n\nfunc (x *Expr_Comprehension) GetIterVar2() string {\n\tif x != nil {\n\t\treturn x.IterVar2\n\t}\n\treturn \"\"\n}\n\nfunc (x *Expr_Comprehension) GetIterRange() *Expr {\n\tif x != nil {\n\t\treturn x.IterRange\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_Comprehension) GetAccuVar() string {\n\tif x != nil {\n\t\treturn x.AccuVar\n\t}\n\treturn \"\"\n}\n\nfunc (x *Expr_Comprehension) GetAccuInit() *Expr {\n\tif x != nil {\n\t\treturn x.AccuInit\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_Comprehension) GetLoopCondition() *Expr {\n\tif x != nil {\n\t\treturn x.LoopCondition\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_Comprehension) GetLoopStep() *Expr {\n\tif x != nil {\n\t\treturn x.LoopStep\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_Comprehension) GetResult() *Expr {\n\tif x != nil {\n\t\treturn x.Result\n\t}\n\treturn nil\n}\n\n// Represents an entry.\ntype Expr_CreateStruct_Entry struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Required. An id assigned to this node by the parser which is unique\n\t// in a given expression tree. This is used to associate type\n\t// information and other attributes to the node.\n\tId int64 `protobuf:\"varint,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\t// The `Entry` key kinds.\n\t//\n\t// Types that are assignable to KeyKind:\n\t//\n\t//\t*Expr_CreateStruct_Entry_FieldKey\n\t//\t*Expr_CreateStruct_Entry_MapKey\n\tKeyKind isExpr_CreateStruct_Entry_KeyKind `protobuf_oneof:\"key_kind\"`\n\t// Required. The value assigned to the key.\n\t//\n\t// If the optional_entry field is true, the expression must resolve to an\n\t// optional-typed value. If the optional value is present, the key will be\n\t// set; however, if the optional value is absent, the key will be unset.\n\tValue *Expr `protobuf:\"bytes,4,opt,name=value,proto3\" json:\"value,omitempty\"`\n\t// Whether the key-value pair is optional.\n\tOptionalEntry bool `protobuf:\"varint,5,opt,name=optional_entry,json=optionalEntry,proto3\" json:\"optional_entry,omitempty\"`\n}\n\nfunc (x *Expr_CreateStruct_Entry) Reset() {\n\t*x = Expr_CreateStruct_Entry{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Expr_CreateStruct_Entry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Expr_CreateStruct_Entry) ProtoMessage() {}\n\nfunc (x *Expr_CreateStruct_Entry) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Expr_CreateStruct_Entry.ProtoReflect.Descriptor instead.\nfunc (*Expr_CreateStruct_Entry) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{1, 4, 0}\n}\n\nfunc (x *Expr_CreateStruct_Entry) GetId() int64 {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn 0\n}\n\nfunc (m *Expr_CreateStruct_Entry) GetKeyKind() isExpr_CreateStruct_Entry_KeyKind {\n\tif m != nil {\n\t\treturn m.KeyKind\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_CreateStruct_Entry) GetFieldKey() string {\n\tif x, ok := x.GetKeyKind().(*Expr_CreateStruct_Entry_FieldKey); ok {\n\t\treturn x.FieldKey\n\t}\n\treturn \"\"\n}\n\nfunc (x *Expr_CreateStruct_Entry) GetMapKey() *Expr {\n\tif x, ok := x.GetKeyKind().(*Expr_CreateStruct_Entry_MapKey); ok {\n\t\treturn x.MapKey\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_CreateStruct_Entry) GetValue() *Expr {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nfunc (x *Expr_CreateStruct_Entry) GetOptionalEntry() bool {\n\tif x != nil {\n\t\treturn x.OptionalEntry\n\t}\n\treturn false\n}\n\ntype isExpr_CreateStruct_Entry_KeyKind interface {\n\tisExpr_CreateStruct_Entry_KeyKind()\n}\n\ntype Expr_CreateStruct_Entry_FieldKey struct {\n\t// The field key for a message creator statement.\n\tFieldKey string `protobuf:\"bytes,2,opt,name=field_key,json=fieldKey,proto3,oneof\"`\n}\n\ntype Expr_CreateStruct_Entry_MapKey struct {\n\t// The key expression for a map creation statement.\n\tMapKey *Expr `protobuf:\"bytes,3,opt,name=map_key,json=mapKey,proto3,oneof\"`\n}\n\nfunc (*Expr_CreateStruct_Entry_FieldKey) isExpr_CreateStruct_Entry_KeyKind() {}\n\nfunc (*Expr_CreateStruct_Entry_MapKey) isExpr_CreateStruct_Entry_KeyKind() {}\n\n// An extension that was requested for the source expression.\ntype SourceInfo_Extension struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Identifier for the extension. Example: constant_folding\n\tId string `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\t// If set, the listed components must understand the extension for the\n\t// expression to evaluate correctly.\n\t//\n\t// This field has set semantics, repeated values should be deduplicated.\n\tAffectedComponents []SourceInfo_Extension_Component `protobuf:\"varint,2,rep,packed,name=affected_components,json=affectedComponents,proto3,enum=google.api.expr.v1alpha1.SourceInfo_Extension_Component\" json:\"affected_components,omitempty\"`\n\t// Version info. May be skipped if it isn't meaningful for the extension.\n\t// (for example constant_folding might always be v0.0).\n\tVersion *SourceInfo_Extension_Version `protobuf:\"bytes,3,opt,name=version,proto3\" json:\"version,omitempty\"`\n}\n\nfunc (x *SourceInfo_Extension) Reset() {\n\t*x = SourceInfo_Extension{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[12]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SourceInfo_Extension) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SourceInfo_Extension) ProtoMessage() {}\n\nfunc (x *SourceInfo_Extension) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[12]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SourceInfo_Extension.ProtoReflect.Descriptor instead.\nfunc (*SourceInfo_Extension) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{3, 0}\n}\n\nfunc (x *SourceInfo_Extension) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\nfunc (x *SourceInfo_Extension) GetAffectedComponents() []SourceInfo_Extension_Component {\n\tif x != nil {\n\t\treturn x.AffectedComponents\n\t}\n\treturn nil\n}\n\nfunc (x *SourceInfo_Extension) GetVersion() *SourceInfo_Extension_Version {\n\tif x != nil {\n\t\treturn x.Version\n\t}\n\treturn nil\n}\n\n// Version\ntype SourceInfo_Extension_Version struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Major version changes indicate different required support level from\n\t// the required components.\n\tMajor int64 `protobuf:\"varint,1,opt,name=major,proto3\" json:\"major,omitempty\"`\n\t// Minor version changes must not change the observed behavior from\n\t// existing implementations, but may be provided informationally.\n\tMinor int64 `protobuf:\"varint,2,opt,name=minor,proto3\" json:\"minor,omitempty\"`\n}\n\nfunc (x *SourceInfo_Extension_Version) Reset() {\n\t*x = SourceInfo_Extension_Version{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[15]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SourceInfo_Extension_Version) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SourceInfo_Extension_Version) ProtoMessage() {}\n\nfunc (x *SourceInfo_Extension_Version) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_syntax_proto_msgTypes[15]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SourceInfo_Extension_Version.ProtoReflect.Descriptor instead.\nfunc (*SourceInfo_Extension_Version) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP(), []int{3, 0, 0}\n}\n\nfunc (x *SourceInfo_Extension_Version) GetMajor() int64 {\n\tif x != nil {\n\t\treturn x.Major\n\t}\n\treturn 0\n}\n\nfunc (x *SourceInfo_Extension_Version) GetMinor() int64 {\n\tif x != nil {\n\t\treturn x.Minor\n\t}\n\treturn 0\n}\n\nvar File_google_api_expr_v1alpha1_syntax_proto protoreflect.FileDescriptor\n\nvar file_google_api_expr_v1alpha1_syntax_proto_rawDesc = []byte{\n\t0x0a, 0x25, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x70,\n\t0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x73, 0x79, 0x6e, 0x74, 0x61,\n\t0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,\n\t0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,\n\t0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,\n\t0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x22, 0x87, 0x01, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x73, 0x65, 0x64, 0x45, 0x78, 0x70, 0x72, 0x12,\n\t0x32, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e,\n\t0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x04, 0x65,\n\t0x78, 0x70, 0x72, 0x12, 0x45, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e,\n\t0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xcb, 0x0d, 0x0a, 0x04, 0x45,\n\t0x78, 0x70, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,\n\t0x02, 0x69, 0x64, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x70,\n\t0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x63,\n\t0x6f, 0x6e, 0x73, 0x74, 0x45, 0x78, 0x70, 0x72, 0x12, 0x45, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e,\n\t0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x2e, 0x49, 0x64, 0x65,\n\t0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x72, 0x12,\n\t0x48, 0x0a, 0x0b, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x05,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x45, 0x78, 0x70, 0x72, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x73,\n\t0x65, 0x6c, 0x65, 0x63, 0x74, 0x45, 0x78, 0x70, 0x72, 0x12, 0x42, 0x0a, 0x09, 0x63, 0x61, 0x6c,\n\t0x6c, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x2e, 0x43, 0x61, 0x6c,\n\t0x6c, 0x48, 0x00, 0x52, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x48, 0x0a,\n\t0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78,\n\t0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72,\n\t0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, 0x6c,\n\t0x69, 0x73, 0x74, 0x45, 0x78, 0x70, 0x72, 0x12, 0x4e, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x75, 0x63,\n\t0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x2e, 0x43, 0x72, 0x65,\n\t0x61, 0x74, 0x65, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x74, 0x72,\n\t0x75, 0x63, 0x74, 0x45, 0x78, 0x70, 0x72, 0x12, 0x5d, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x72,\n\t0x65, 0x68, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x09, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45,\n\t0x78, 0x70, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x68, 0x65, 0x6e, 0x73, 0x69, 0x6f,\n\t0x6e, 0x48, 0x00, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x68, 0x65, 0x6e, 0x73, 0x69,\n\t0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x1a, 0x1b, 0x0a, 0x05, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x12,\n\t0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,\n\t0x61, 0x6d, 0x65, 0x1a, 0x75, 0x0a, 0x06, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x38, 0x0a,\n\t0x07, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x07,\n\t0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1b, 0x0a,\n\t0x09, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,\n\t0x52, 0x08, 0x74, 0x65, 0x73, 0x74, 0x4f, 0x6e, 0x6c, 0x79, 0x1a, 0x8e, 0x01, 0x0a, 0x04, 0x43,\n\t0x61, 0x6c, 0x6c, 0x12, 0x36, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45,\n\t0x78, 0x70, 0x72, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66,\n\t0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66,\n\t0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18,\n\t0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x1a, 0x73, 0x0a, 0x0a, 0x43,\n\t0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6c, 0x65,\n\t0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x08, 0x65, 0x6c, 0x65,\n\t0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,\n\t0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52,\n\t0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73,\n\t0x1a, 0xdb, 0x02, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x72, 0x75, 0x63,\n\t0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d,\n\t0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,\n\t0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18,\n\t0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2e, 0x45, 0x78, 0x70, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x72, 0x75,\n\t0x63, 0x74, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65,\n\t0x73, 0x1a, 0xda, 0x01, 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69,\n\t0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x66,\n\t0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,\n\t0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x07, 0x6d, 0x61,\n\t0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x06, 0x6d,\n\t0x61, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x45, 0x78, 0x70, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f,\n\t0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x05, 0x20,\n\t0x01, 0x28, 0x08, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x74,\n\t0x72, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x1a, 0x9a,\n\t0x03, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x68, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,\n\t0x12, 0x19, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x07, 0x69, 0x74, 0x65, 0x72, 0x56, 0x61, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x69,\n\t0x74, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x72, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,\n\t0x69, 0x74, 0x65, 0x72, 0x56, 0x61, 0x72, 0x32, 0x12, 0x3d, 0x0a, 0x0a, 0x69, 0x74, 0x65, 0x72,\n\t0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x09, 0x69, 0x74,\n\t0x65, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x75, 0x5f,\n\t0x76, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x75, 0x56,\n\t0x61, 0x72, 0x12, 0x3b, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x75, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x18,\n\t0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x08, 0x61, 0x63, 0x63, 0x75, 0x49, 0x6e, 0x69, 0x74, 0x12,\n\t0x45, 0x0a, 0x0e, 0x6c, 0x6f, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f,\n\t0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x0d, 0x6c, 0x6f, 0x6f, 0x70, 0x43, 0x6f, 0x6e,\n\t0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x09, 0x6c, 0x6f, 0x6f, 0x70, 0x5f, 0x73,\n\t0x74, 0x65, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x08, 0x6c, 0x6f, 0x6f, 0x70, 0x53,\n\t0x74, 0x65, 0x70, 0x12, 0x36, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x07, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45,\n\t0x78, 0x70, 0x72, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x65,\n\t0x78, 0x70, 0x72, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xc1, 0x03, 0x0a, 0x08, 0x43, 0x6f, 0x6e,\n\t0x73, 0x74, 0x61, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61,\n\t0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c,\n\t0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c,\n\t0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61,\n\t0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x76, 0x61, 0x6c,\n\t0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x36,\n\t0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,\n\t0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b,\n\t0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x64,\n\t0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,\n\t0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,\n\t0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,\n\t0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x76,\n\t0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x79,\n\t0x74, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x46, 0x0a, 0x0e, 0x64, 0x75, 0x72, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x48,\n\t0x00, 0x52, 0x0d, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,\n\t0x12, 0x49, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x76, 0x61,\n\t0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,\n\t0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x0e, 0x74, 0x69, 0x6d,\n\t0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x63,\n\t0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x8c, 0x07, 0x0a,\n\t0x0a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x73,\n\t0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69,\n\t0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21,\n\t0x0a, 0x0c, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x18, 0x03,\n\t0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x6c, 0x69, 0x6e, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74,\n\t0x73, 0x12, 0x51, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04,\n\t0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x5f, 0x63, 0x61,\n\t0x6c, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e,\n\t0x4d, 0x61, 0x63, 0x72, 0x6f, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,\n\t0x0a, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4e, 0x0a, 0x0a, 0x65,\n\t0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70,\n\t0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52,\n\t0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x80, 0x03, 0x0a, 0x09,\n\t0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x69, 0x0a, 0x13, 0x61, 0x66, 0x66,\n\t0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73,\n\t0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,\n\t0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x78, 0x74,\n\t0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74,\n\t0x52, 0x12, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e,\n\t0x65, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,\n\t0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65,\n\t0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76,\n\t0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x35, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,\n\t0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,\n\t0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x22, 0x6f, 0x0a,\n\t0x09, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f,\n\t0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,\n\t0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45,\n\t0x4e, 0x54, 0x5f, 0x50, 0x41, 0x52, 0x53, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x43,\n\t0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x48,\n\t0x45, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4d, 0x50, 0x4f,\n\t0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x03, 0x1a, 0x3c,\n\t0x0a, 0x0e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,\n\t0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b,\n\t0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5d, 0x0a, 0x0f,\n\t0x4d, 0x61, 0x63, 0x72, 0x6f, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,\n\t0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65,\n\t0x79, 0x12, 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78,\n\t0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72,\n\t0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x70, 0x0a, 0x0e, 0x53,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a,\n\t0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66,\n\t0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65,\n\t0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,\n\t0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18,\n\t0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x42, 0x6e, 0x0a,\n\t0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0b, 0x53,\n\t0x79, 0x6e, 0x74, 0x61, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,\n\t0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,\n\t0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x70, 0x72, 0x2f, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x65, 0x78, 0x70, 0x72, 0xf8, 0x01, 0x01, 0x62, 0x06, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_expr_v1alpha1_syntax_proto_rawDescOnce sync.Once\n\tfile_google_api_expr_v1alpha1_syntax_proto_rawDescData = file_google_api_expr_v1alpha1_syntax_proto_rawDesc\n)\n\nfunc file_google_api_expr_v1alpha1_syntax_proto_rawDescGZIP() []byte {\n\tfile_google_api_expr_v1alpha1_syntax_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_expr_v1alpha1_syntax_proto_rawDescData)\n\t})\n\treturn file_google_api_expr_v1alpha1_syntax_proto_rawDescData\n}\n\nvar file_google_api_expr_v1alpha1_syntax_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_google_api_expr_v1alpha1_syntax_proto_msgTypes = make([]protoimpl.MessageInfo, 16)\nvar file_google_api_expr_v1alpha1_syntax_proto_goTypes = []interface{}{\n\t(SourceInfo_Extension_Component)(0),  // 0: google.api.expr.v1alpha1.SourceInfo.Extension.Component\n\t(*ParsedExpr)(nil),                   // 1: google.api.expr.v1alpha1.ParsedExpr\n\t(*Expr)(nil),                         // 2: google.api.expr.v1alpha1.Expr\n\t(*Constant)(nil),                     // 3: google.api.expr.v1alpha1.Constant\n\t(*SourceInfo)(nil),                   // 4: google.api.expr.v1alpha1.SourceInfo\n\t(*SourcePosition)(nil),               // 5: google.api.expr.v1alpha1.SourcePosition\n\t(*Expr_Ident)(nil),                   // 6: google.api.expr.v1alpha1.Expr.Ident\n\t(*Expr_Select)(nil),                  // 7: google.api.expr.v1alpha1.Expr.Select\n\t(*Expr_Call)(nil),                    // 8: google.api.expr.v1alpha1.Expr.Call\n\t(*Expr_CreateList)(nil),              // 9: google.api.expr.v1alpha1.Expr.CreateList\n\t(*Expr_CreateStruct)(nil),            // 10: google.api.expr.v1alpha1.Expr.CreateStruct\n\t(*Expr_Comprehension)(nil),           // 11: google.api.expr.v1alpha1.Expr.Comprehension\n\t(*Expr_CreateStruct_Entry)(nil),      // 12: google.api.expr.v1alpha1.Expr.CreateStruct.Entry\n\t(*SourceInfo_Extension)(nil),         // 13: google.api.expr.v1alpha1.SourceInfo.Extension\n\tnil,                                  // 14: google.api.expr.v1alpha1.SourceInfo.PositionsEntry\n\tnil,                                  // 15: google.api.expr.v1alpha1.SourceInfo.MacroCallsEntry\n\t(*SourceInfo_Extension_Version)(nil), // 16: google.api.expr.v1alpha1.SourceInfo.Extension.Version\n\t(structpb.NullValue)(0),              // 17: google.protobuf.NullValue\n\t(*durationpb.Duration)(nil),          // 18: google.protobuf.Duration\n\t(*timestamppb.Timestamp)(nil),        // 19: google.protobuf.Timestamp\n}\nvar file_google_api_expr_v1alpha1_syntax_proto_depIdxs = []int32{\n\t2,  // 0: google.api.expr.v1alpha1.ParsedExpr.expr:type_name -> google.api.expr.v1alpha1.Expr\n\t4,  // 1: google.api.expr.v1alpha1.ParsedExpr.source_info:type_name -> google.api.expr.v1alpha1.SourceInfo\n\t3,  // 2: google.api.expr.v1alpha1.Expr.const_expr:type_name -> google.api.expr.v1alpha1.Constant\n\t6,  // 3: google.api.expr.v1alpha1.Expr.ident_expr:type_name -> google.api.expr.v1alpha1.Expr.Ident\n\t7,  // 4: google.api.expr.v1alpha1.Expr.select_expr:type_name -> google.api.expr.v1alpha1.Expr.Select\n\t8,  // 5: google.api.expr.v1alpha1.Expr.call_expr:type_name -> google.api.expr.v1alpha1.Expr.Call\n\t9,  // 6: google.api.expr.v1alpha1.Expr.list_expr:type_name -> google.api.expr.v1alpha1.Expr.CreateList\n\t10, // 7: google.api.expr.v1alpha1.Expr.struct_expr:type_name -> google.api.expr.v1alpha1.Expr.CreateStruct\n\t11, // 8: google.api.expr.v1alpha1.Expr.comprehension_expr:type_name -> google.api.expr.v1alpha1.Expr.Comprehension\n\t17, // 9: google.api.expr.v1alpha1.Constant.null_value:type_name -> google.protobuf.NullValue\n\t18, // 10: google.api.expr.v1alpha1.Constant.duration_value:type_name -> google.protobuf.Duration\n\t19, // 11: google.api.expr.v1alpha1.Constant.timestamp_value:type_name -> google.protobuf.Timestamp\n\t14, // 12: google.api.expr.v1alpha1.SourceInfo.positions:type_name -> google.api.expr.v1alpha1.SourceInfo.PositionsEntry\n\t15, // 13: google.api.expr.v1alpha1.SourceInfo.macro_calls:type_name -> google.api.expr.v1alpha1.SourceInfo.MacroCallsEntry\n\t13, // 14: google.api.expr.v1alpha1.SourceInfo.extensions:type_name -> google.api.expr.v1alpha1.SourceInfo.Extension\n\t2,  // 15: google.api.expr.v1alpha1.Expr.Select.operand:type_name -> google.api.expr.v1alpha1.Expr\n\t2,  // 16: google.api.expr.v1alpha1.Expr.Call.target:type_name -> google.api.expr.v1alpha1.Expr\n\t2,  // 17: google.api.expr.v1alpha1.Expr.Call.args:type_name -> google.api.expr.v1alpha1.Expr\n\t2,  // 18: google.api.expr.v1alpha1.Expr.CreateList.elements:type_name -> google.api.expr.v1alpha1.Expr\n\t12, // 19: google.api.expr.v1alpha1.Expr.CreateStruct.entries:type_name -> google.api.expr.v1alpha1.Expr.CreateStruct.Entry\n\t2,  // 20: google.api.expr.v1alpha1.Expr.Comprehension.iter_range:type_name -> google.api.expr.v1alpha1.Expr\n\t2,  // 21: google.api.expr.v1alpha1.Expr.Comprehension.accu_init:type_name -> google.api.expr.v1alpha1.Expr\n\t2,  // 22: google.api.expr.v1alpha1.Expr.Comprehension.loop_condition:type_name -> google.api.expr.v1alpha1.Expr\n\t2,  // 23: google.api.expr.v1alpha1.Expr.Comprehension.loop_step:type_name -> google.api.expr.v1alpha1.Expr\n\t2,  // 24: google.api.expr.v1alpha1.Expr.Comprehension.result:type_name -> google.api.expr.v1alpha1.Expr\n\t2,  // 25: google.api.expr.v1alpha1.Expr.CreateStruct.Entry.map_key:type_name -> google.api.expr.v1alpha1.Expr\n\t2,  // 26: google.api.expr.v1alpha1.Expr.CreateStruct.Entry.value:type_name -> google.api.expr.v1alpha1.Expr\n\t0,  // 27: google.api.expr.v1alpha1.SourceInfo.Extension.affected_components:type_name -> google.api.expr.v1alpha1.SourceInfo.Extension.Component\n\t16, // 28: google.api.expr.v1alpha1.SourceInfo.Extension.version:type_name -> google.api.expr.v1alpha1.SourceInfo.Extension.Version\n\t2,  // 29: google.api.expr.v1alpha1.SourceInfo.MacroCallsEntry.value:type_name -> google.api.expr.v1alpha1.Expr\n\t30, // [30:30] is the sub-list for method output_type\n\t30, // [30:30] is the sub-list for method input_type\n\t30, // [30:30] is the sub-list for extension type_name\n\t30, // [30:30] is the sub-list for extension extendee\n\t0,  // [0:30] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_expr_v1alpha1_syntax_proto_init() }\nfunc file_google_api_expr_v1alpha1_syntax_proto_init() {\n\tif File_google_api_expr_v1alpha1_syntax_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ParsedExpr); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Expr); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Constant); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SourceInfo); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SourcePosition); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Expr_Ident); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Expr_Select); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Expr_Call); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Expr_CreateList); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Expr_CreateStruct); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Expr_Comprehension); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Expr_CreateStruct_Entry); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SourceInfo_Extension); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SourceInfo_Extension_Version); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[1].OneofWrappers = []interface{}{\n\t\t(*Expr_ConstExpr)(nil),\n\t\t(*Expr_IdentExpr)(nil),\n\t\t(*Expr_SelectExpr)(nil),\n\t\t(*Expr_CallExpr)(nil),\n\t\t(*Expr_ListExpr)(nil),\n\t\t(*Expr_StructExpr)(nil),\n\t\t(*Expr_ComprehensionExpr)(nil),\n\t}\n\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[2].OneofWrappers = []interface{}{\n\t\t(*Constant_NullValue)(nil),\n\t\t(*Constant_BoolValue)(nil),\n\t\t(*Constant_Int64Value)(nil),\n\t\t(*Constant_Uint64Value)(nil),\n\t\t(*Constant_DoubleValue)(nil),\n\t\t(*Constant_StringValue)(nil),\n\t\t(*Constant_BytesValue)(nil),\n\t\t(*Constant_DurationValue)(nil),\n\t\t(*Constant_TimestampValue)(nil),\n\t}\n\tfile_google_api_expr_v1alpha1_syntax_proto_msgTypes[11].OneofWrappers = []interface{}{\n\t\t(*Expr_CreateStruct_Entry_FieldKey)(nil),\n\t\t(*Expr_CreateStruct_Entry_MapKey)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_expr_v1alpha1_syntax_proto_rawDesc,\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   16,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_expr_v1alpha1_syntax_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_expr_v1alpha1_syntax_proto_depIdxs,\n\t\tEnumInfos:         file_google_api_expr_v1alpha1_syntax_proto_enumTypes,\n\t\tMessageInfos:      file_google_api_expr_v1alpha1_syntax_proto_msgTypes,\n\t}.Build()\n\tFile_google_api_expr_v1alpha1_syntax_proto = out.File\n\tfile_google_api_expr_v1alpha1_syntax_proto_rawDesc = nil\n\tfile_google_api_expr_v1alpha1_syntax_proto_goTypes = nil\n\tfile_google_api_expr_v1alpha1_syntax_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/value.pb.go",
    "content": "// Copyright 2025 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v4.24.4\n// source: google/api/expr/v1alpha1/value.proto\n\npackage expr\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\tstructpb \"google.golang.org/protobuf/types/known/structpb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Represents a CEL value.\n//\n// This is similar to `google.protobuf.Value`, but can represent CEL's full\n// range of values.\ntype Value struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Required. The valid kinds of values.\n\t//\n\t// Types that are assignable to Kind:\n\t//\n\t//\t*Value_NullValue\n\t//\t*Value_BoolValue\n\t//\t*Value_Int64Value\n\t//\t*Value_Uint64Value\n\t//\t*Value_DoubleValue\n\t//\t*Value_StringValue\n\t//\t*Value_BytesValue\n\t//\t*Value_EnumValue\n\t//\t*Value_ObjectValue\n\t//\t*Value_MapValue\n\t//\t*Value_ListValue\n\t//\t*Value_TypeValue\n\tKind isValue_Kind `protobuf_oneof:\"kind\"`\n}\n\nfunc (x *Value) Reset() {\n\t*x = Value{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_value_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Value) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Value) ProtoMessage() {}\n\nfunc (x *Value) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_value_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Value.ProtoReflect.Descriptor instead.\nfunc (*Value) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_value_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (m *Value) GetKind() isValue_Kind {\n\tif m != nil {\n\t\treturn m.Kind\n\t}\n\treturn nil\n}\n\nfunc (x *Value) GetNullValue() structpb.NullValue {\n\tif x, ok := x.GetKind().(*Value_NullValue); ok {\n\t\treturn x.NullValue\n\t}\n\treturn structpb.NullValue_NULL_VALUE\n}\n\nfunc (x *Value) GetBoolValue() bool {\n\tif x, ok := x.GetKind().(*Value_BoolValue); ok {\n\t\treturn x.BoolValue\n\t}\n\treturn false\n}\n\nfunc (x *Value) GetInt64Value() int64 {\n\tif x, ok := x.GetKind().(*Value_Int64Value); ok {\n\t\treturn x.Int64Value\n\t}\n\treturn 0\n}\n\nfunc (x *Value) GetUint64Value() uint64 {\n\tif x, ok := x.GetKind().(*Value_Uint64Value); ok {\n\t\treturn x.Uint64Value\n\t}\n\treturn 0\n}\n\nfunc (x *Value) GetDoubleValue() float64 {\n\tif x, ok := x.GetKind().(*Value_DoubleValue); ok {\n\t\treturn x.DoubleValue\n\t}\n\treturn 0\n}\n\nfunc (x *Value) GetStringValue() string {\n\tif x, ok := x.GetKind().(*Value_StringValue); ok {\n\t\treturn x.StringValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *Value) GetBytesValue() []byte {\n\tif x, ok := x.GetKind().(*Value_BytesValue); ok {\n\t\treturn x.BytesValue\n\t}\n\treturn nil\n}\n\nfunc (x *Value) GetEnumValue() *EnumValue {\n\tif x, ok := x.GetKind().(*Value_EnumValue); ok {\n\t\treturn x.EnumValue\n\t}\n\treturn nil\n}\n\nfunc (x *Value) GetObjectValue() *anypb.Any {\n\tif x, ok := x.GetKind().(*Value_ObjectValue); ok {\n\t\treturn x.ObjectValue\n\t}\n\treturn nil\n}\n\nfunc (x *Value) GetMapValue() *MapValue {\n\tif x, ok := x.GetKind().(*Value_MapValue); ok {\n\t\treturn x.MapValue\n\t}\n\treturn nil\n}\n\nfunc (x *Value) GetListValue() *ListValue {\n\tif x, ok := x.GetKind().(*Value_ListValue); ok {\n\t\treturn x.ListValue\n\t}\n\treturn nil\n}\n\nfunc (x *Value) GetTypeValue() string {\n\tif x, ok := x.GetKind().(*Value_TypeValue); ok {\n\t\treturn x.TypeValue\n\t}\n\treturn \"\"\n}\n\ntype isValue_Kind interface {\n\tisValue_Kind()\n}\n\ntype Value_NullValue struct {\n\t// Null value.\n\tNullValue structpb.NullValue `protobuf:\"varint,1,opt,name=null_value,json=nullValue,proto3,enum=google.protobuf.NullValue,oneof\"`\n}\n\ntype Value_BoolValue struct {\n\t// Boolean value.\n\tBoolValue bool `protobuf:\"varint,2,opt,name=bool_value,json=boolValue,proto3,oneof\"`\n}\n\ntype Value_Int64Value struct {\n\t// Signed integer value.\n\tInt64Value int64 `protobuf:\"varint,3,opt,name=int64_value,json=int64Value,proto3,oneof\"`\n}\n\ntype Value_Uint64Value struct {\n\t// Unsigned integer value.\n\tUint64Value uint64 `protobuf:\"varint,4,opt,name=uint64_value,json=uint64Value,proto3,oneof\"`\n}\n\ntype Value_DoubleValue struct {\n\t// Floating point value.\n\tDoubleValue float64 `protobuf:\"fixed64,5,opt,name=double_value,json=doubleValue,proto3,oneof\"`\n}\n\ntype Value_StringValue struct {\n\t// UTF-8 string value.\n\tStringValue string `protobuf:\"bytes,6,opt,name=string_value,json=stringValue,proto3,oneof\"`\n}\n\ntype Value_BytesValue struct {\n\t// Byte string value.\n\tBytesValue []byte `protobuf:\"bytes,7,opt,name=bytes_value,json=bytesValue,proto3,oneof\"`\n}\n\ntype Value_EnumValue struct {\n\t// An enum value.\n\tEnumValue *EnumValue `protobuf:\"bytes,9,opt,name=enum_value,json=enumValue,proto3,oneof\"`\n}\n\ntype Value_ObjectValue struct {\n\t// The proto message backing an object value.\n\tObjectValue *anypb.Any `protobuf:\"bytes,10,opt,name=object_value,json=objectValue,proto3,oneof\"`\n}\n\ntype Value_MapValue struct {\n\t// Map value.\n\tMapValue *MapValue `protobuf:\"bytes,11,opt,name=map_value,json=mapValue,proto3,oneof\"`\n}\n\ntype Value_ListValue struct {\n\t// List value.\n\tListValue *ListValue `protobuf:\"bytes,12,opt,name=list_value,json=listValue,proto3,oneof\"`\n}\n\ntype Value_TypeValue struct {\n\t// Type value.\n\tTypeValue string `protobuf:\"bytes,15,opt,name=type_value,json=typeValue,proto3,oneof\"`\n}\n\nfunc (*Value_NullValue) isValue_Kind() {}\n\nfunc (*Value_BoolValue) isValue_Kind() {}\n\nfunc (*Value_Int64Value) isValue_Kind() {}\n\nfunc (*Value_Uint64Value) isValue_Kind() {}\n\nfunc (*Value_DoubleValue) isValue_Kind() {}\n\nfunc (*Value_StringValue) isValue_Kind() {}\n\nfunc (*Value_BytesValue) isValue_Kind() {}\n\nfunc (*Value_EnumValue) isValue_Kind() {}\n\nfunc (*Value_ObjectValue) isValue_Kind() {}\n\nfunc (*Value_MapValue) isValue_Kind() {}\n\nfunc (*Value_ListValue) isValue_Kind() {}\n\nfunc (*Value_TypeValue) isValue_Kind() {}\n\n// An enum value.\ntype EnumValue struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The fully qualified name of the enum type.\n\tType string `protobuf:\"bytes,1,opt,name=type,proto3\" json:\"type,omitempty\"`\n\t// The value of the enum.\n\tValue int32 `protobuf:\"varint,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *EnumValue) Reset() {\n\t*x = EnumValue{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_value_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EnumValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumValue) ProtoMessage() {}\n\nfunc (x *EnumValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_value_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumValue.ProtoReflect.Descriptor instead.\nfunc (*EnumValue) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_value_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *EnumValue) GetType() string {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn \"\"\n}\n\nfunc (x *EnumValue) GetValue() int32 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\n// A list.\n//\n// Wrapped in a message so 'not set' and empty can be differentiated, which is\n// required for use in a 'oneof'.\ntype ListValue struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The ordered values in the list.\n\tValues []*Value `protobuf:\"bytes,1,rep,name=values,proto3\" json:\"values,omitempty\"`\n}\n\nfunc (x *ListValue) Reset() {\n\t*x = ListValue{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_value_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ListValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ListValue) ProtoMessage() {}\n\nfunc (x *ListValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_value_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ListValue.ProtoReflect.Descriptor instead.\nfunc (*ListValue) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_value_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *ListValue) GetValues() []*Value {\n\tif x != nil {\n\t\treturn x.Values\n\t}\n\treturn nil\n}\n\n// A map.\n//\n// Wrapped in a message so 'not set' and empty can be differentiated, which is\n// required for use in a 'oneof'.\ntype MapValue struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The set of map entries.\n\t//\n\t// CEL has fewer restrictions on keys, so a protobuf map represenation\n\t// cannot be used.\n\tEntries []*MapValue_Entry `protobuf:\"bytes,1,rep,name=entries,proto3\" json:\"entries,omitempty\"`\n}\n\nfunc (x *MapValue) Reset() {\n\t*x = MapValue{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_value_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MapValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MapValue) ProtoMessage() {}\n\nfunc (x *MapValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_value_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MapValue.ProtoReflect.Descriptor instead.\nfunc (*MapValue) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_value_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *MapValue) GetEntries() []*MapValue_Entry {\n\tif x != nil {\n\t\treturn x.Entries\n\t}\n\treturn nil\n}\n\n// An entry in the map.\ntype MapValue_Entry struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The key.\n\t//\n\t// Must be unique with in the map.\n\t// Currently only boolean, int, uint, and string values can be keys.\n\tKey *Value `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// The value.\n\tValue *Value `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *MapValue_Entry) Reset() {\n\t*x = MapValue_Entry{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_expr_v1alpha1_value_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MapValue_Entry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MapValue_Entry) ProtoMessage() {}\n\nfunc (x *MapValue_Entry) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_expr_v1alpha1_value_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MapValue_Entry.ProtoReflect.Descriptor instead.\nfunc (*MapValue_Entry) Descriptor() ([]byte, []int) {\n\treturn file_google_api_expr_v1alpha1_value_proto_rawDescGZIP(), []int{3, 0}\n}\n\nfunc (x *MapValue_Entry) GetKey() *Value {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn nil\n}\n\nfunc (x *MapValue_Entry) GetValue() *Value {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nvar File_google_api_expr_v1alpha1_value_proto protoreflect.FileDescriptor\n\nvar file_google_api_expr_v1alpha1_value_proto_rawDesc = []byte{\n\t0x0a, 0x24, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x70,\n\t0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,\n\t0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72,\n\t0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcd, 0x04, 0x0a, 0x05, 0x56, 0x61,\n\t0x6c, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75,\n\t0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61,\n\t0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,\n\t0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75,\n\t0x65, 0x12, 0x21, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x56,\n\t0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x76,\n\t0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x69,\n\t0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x64, 0x6f, 0x75,\n\t0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x48,\n\t0x00, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23,\n\t0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06,\n\t0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61,\n\t0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x76, 0x61, 0x6c,\n\t0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x79, 0x74, 0x65,\n\t0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76,\n\t0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48,\n\t0x00, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x39, 0x0a, 0x0c,\n\t0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x62, 0x6a, 0x65,\n\t0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x76,\n\t0x61, 0x6c, 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00,\n\t0x52, 0x08, 0x6d, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x6c, 0x69,\n\t0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61,\n\t0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,\n\t0x12, 0x1f, 0x0a, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0f,\n\t0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x74, 0x79, 0x70, 0x65, 0x56, 0x61, 0x6c, 0x75,\n\t0x65, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x35, 0x0a, 0x09, 0x45, 0x6e, 0x75,\n\t0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,\n\t0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x22, 0x44, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a,\n\t0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e,\n\t0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06,\n\t0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xc1, 0x01, 0x0a, 0x08, 0x4d, 0x61, 0x70, 0x56, 0x61,\n\t0x6c, 0x75, 0x65, 0x12, 0x42, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01,\n\t0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x4d, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07,\n\t0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x71, 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x72, 0x79,\n\t0x12, 0x31, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e,\n\t0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03,\n\t0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61,\n\t0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x6d, 0x0a, 0x1c, 0x63, 0x6f,\n\t0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70,\n\t0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0a, 0x56, 0x61, 0x6c, 0x75,\n\t0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f,\n\t0x61, 0x70, 0x69, 0x2f, 0x65, 0x78, 0x70, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,\n\t0x31, 0x3b, 0x65, 0x78, 0x70, 0x72, 0xf8, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x33,\n}\n\nvar (\n\tfile_google_api_expr_v1alpha1_value_proto_rawDescOnce sync.Once\n\tfile_google_api_expr_v1alpha1_value_proto_rawDescData = file_google_api_expr_v1alpha1_value_proto_rawDesc\n)\n\nfunc file_google_api_expr_v1alpha1_value_proto_rawDescGZIP() []byte {\n\tfile_google_api_expr_v1alpha1_value_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_expr_v1alpha1_value_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_expr_v1alpha1_value_proto_rawDescData)\n\t})\n\treturn file_google_api_expr_v1alpha1_value_proto_rawDescData\n}\n\nvar file_google_api_expr_v1alpha1_value_proto_msgTypes = make([]protoimpl.MessageInfo, 5)\nvar file_google_api_expr_v1alpha1_value_proto_goTypes = []interface{}{\n\t(*Value)(nil),           // 0: google.api.expr.v1alpha1.Value\n\t(*EnumValue)(nil),       // 1: google.api.expr.v1alpha1.EnumValue\n\t(*ListValue)(nil),       // 2: google.api.expr.v1alpha1.ListValue\n\t(*MapValue)(nil),        // 3: google.api.expr.v1alpha1.MapValue\n\t(*MapValue_Entry)(nil),  // 4: google.api.expr.v1alpha1.MapValue.Entry\n\t(structpb.NullValue)(0), // 5: google.protobuf.NullValue\n\t(*anypb.Any)(nil),       // 6: google.protobuf.Any\n}\nvar file_google_api_expr_v1alpha1_value_proto_depIdxs = []int32{\n\t5, // 0: google.api.expr.v1alpha1.Value.null_value:type_name -> google.protobuf.NullValue\n\t1, // 1: google.api.expr.v1alpha1.Value.enum_value:type_name -> google.api.expr.v1alpha1.EnumValue\n\t6, // 2: google.api.expr.v1alpha1.Value.object_value:type_name -> google.protobuf.Any\n\t3, // 3: google.api.expr.v1alpha1.Value.map_value:type_name -> google.api.expr.v1alpha1.MapValue\n\t2, // 4: google.api.expr.v1alpha1.Value.list_value:type_name -> google.api.expr.v1alpha1.ListValue\n\t0, // 5: google.api.expr.v1alpha1.ListValue.values:type_name -> google.api.expr.v1alpha1.Value\n\t4, // 6: google.api.expr.v1alpha1.MapValue.entries:type_name -> google.api.expr.v1alpha1.MapValue.Entry\n\t0, // 7: google.api.expr.v1alpha1.MapValue.Entry.key:type_name -> google.api.expr.v1alpha1.Value\n\t0, // 8: google.api.expr.v1alpha1.MapValue.Entry.value:type_name -> google.api.expr.v1alpha1.Value\n\t9, // [9:9] is the sub-list for method output_type\n\t9, // [9:9] is the sub-list for method input_type\n\t9, // [9:9] is the sub-list for extension type_name\n\t9, // [9:9] is the sub-list for extension extendee\n\t0, // [0:9] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_expr_v1alpha1_value_proto_init() }\nfunc file_google_api_expr_v1alpha1_value_proto_init() {\n\tif File_google_api_expr_v1alpha1_value_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_expr_v1alpha1_value_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Value); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_value_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EnumValue); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_value_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ListValue); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_value_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MapValue); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_expr_v1alpha1_value_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MapValue_Entry); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tfile_google_api_expr_v1alpha1_value_proto_msgTypes[0].OneofWrappers = []interface{}{\n\t\t(*Value_NullValue)(nil),\n\t\t(*Value_BoolValue)(nil),\n\t\t(*Value_Int64Value)(nil),\n\t\t(*Value_Uint64Value)(nil),\n\t\t(*Value_DoubleValue)(nil),\n\t\t(*Value_StringValue)(nil),\n\t\t(*Value_BytesValue)(nil),\n\t\t(*Value_EnumValue)(nil),\n\t\t(*Value_ObjectValue)(nil),\n\t\t(*Value_MapValue)(nil),\n\t\t(*Value_ListValue)(nil),\n\t\t(*Value_TypeValue)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_expr_v1alpha1_value_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   5,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_expr_v1alpha1_value_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_expr_v1alpha1_value_proto_depIdxs,\n\t\tMessageInfos:      file_google_api_expr_v1alpha1_value_proto_msgTypes,\n\t}.Build()\n\tFile_google_api_expr_v1alpha1_value_proto = out.File\n\tfile_google_api_expr_v1alpha1_value_proto_rawDesc = nil\n\tfile_google_api_expr_v1alpha1_value_proto_goTypes = nil\n\tfile_google_api_expr_v1alpha1_value_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/launch_stage.pb.go",
    "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v4.24.4\n// source: google/api/launch_stage.proto\n\npackage api\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// The launch stage as defined by [Google Cloud Platform\n// Launch Stages](https://cloud.google.com/terms/launch-stages).\ntype LaunchStage int32\n\nconst (\n\t// Do not use this default value.\n\tLaunchStage_LAUNCH_STAGE_UNSPECIFIED LaunchStage = 0\n\t// The feature is not yet implemented. Users can not use it.\n\tLaunchStage_UNIMPLEMENTED LaunchStage = 6\n\t// Prelaunch features are hidden from users and are only visible internally.\n\tLaunchStage_PRELAUNCH LaunchStage = 7\n\t// Early Access features are limited to a closed group of testers. To use\n\t// these features, you must sign up in advance and sign a Trusted Tester\n\t// agreement (which includes confidentiality provisions). These features may\n\t// be unstable, changed in backward-incompatible ways, and are not\n\t// guaranteed to be released.\n\tLaunchStage_EARLY_ACCESS LaunchStage = 1\n\t// Alpha is a limited availability test for releases before they are cleared\n\t// for widespread use. By Alpha, all significant design issues are resolved\n\t// and we are in the process of verifying functionality. Alpha customers\n\t// need to apply for access, agree to applicable terms, and have their\n\t// projects allowlisted. Alpha releases don't have to be feature complete,\n\t// no SLAs are provided, and there are no technical support obligations, but\n\t// they will be far enough along that customers can actually use them in\n\t// test environments or for limited-use tests -- just like they would in\n\t// normal production cases.\n\tLaunchStage_ALPHA LaunchStage = 2\n\t// Beta is the point at which we are ready to open a release for any\n\t// customer to use. There are no SLA or technical support obligations in a\n\t// Beta release. Products will be complete from a feature perspective, but\n\t// may have some open outstanding issues. Beta releases are suitable for\n\t// limited production use cases.\n\tLaunchStage_BETA LaunchStage = 3\n\t// GA features are open to all developers and are considered stable and\n\t// fully qualified for production use.\n\tLaunchStage_GA LaunchStage = 4\n\t// Deprecated features are scheduled to be shut down and removed. For more\n\t// information, see the \"Deprecation Policy\" section of our [Terms of\n\t// Service](https://cloud.google.com/terms/)\n\t// and the [Google Cloud Platform Subject to the Deprecation\n\t// Policy](https://cloud.google.com/terms/deprecation) documentation.\n\tLaunchStage_DEPRECATED LaunchStage = 5\n)\n\n// Enum value maps for LaunchStage.\nvar (\n\tLaunchStage_name = map[int32]string{\n\t\t0: \"LAUNCH_STAGE_UNSPECIFIED\",\n\t\t6: \"UNIMPLEMENTED\",\n\t\t7: \"PRELAUNCH\",\n\t\t1: \"EARLY_ACCESS\",\n\t\t2: \"ALPHA\",\n\t\t3: \"BETA\",\n\t\t4: \"GA\",\n\t\t5: \"DEPRECATED\",\n\t}\n\tLaunchStage_value = map[string]int32{\n\t\t\"LAUNCH_STAGE_UNSPECIFIED\": 0,\n\t\t\"UNIMPLEMENTED\":            6,\n\t\t\"PRELAUNCH\":                7,\n\t\t\"EARLY_ACCESS\":             1,\n\t\t\"ALPHA\":                    2,\n\t\t\"BETA\":                     3,\n\t\t\"GA\":                       4,\n\t\t\"DEPRECATED\":               5,\n\t}\n)\n\nfunc (x LaunchStage) Enum() *LaunchStage {\n\tp := new(LaunchStage)\n\t*p = x\n\treturn p\n}\n\nfunc (x LaunchStage) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (LaunchStage) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_launch_stage_proto_enumTypes[0].Descriptor()\n}\n\nfunc (LaunchStage) Type() protoreflect.EnumType {\n\treturn &file_google_api_launch_stage_proto_enumTypes[0]\n}\n\nfunc (x LaunchStage) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use LaunchStage.Descriptor instead.\nfunc (LaunchStage) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_launch_stage_proto_rawDescGZIP(), []int{0}\n}\n\nvar File_google_api_launch_stage_proto protoreflect.FileDescriptor\n\nvar file_google_api_launch_stage_proto_rawDesc = []byte{\n\t0x0a, 0x1d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x61, 0x75,\n\t0x6e, 0x63, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,\n\t0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2a, 0x8c, 0x01, 0x0a, 0x0b,\n\t0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x4c,\n\t0x41, 0x55, 0x4e, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50,\n\t0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x49,\n\t0x4d, 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x45, 0x44, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09,\n\t0x50, 0x52, 0x45, 0x4c, 0x41, 0x55, 0x4e, 0x43, 0x48, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x45,\n\t0x41, 0x52, 0x4c, 0x59, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x09, 0x0a,\n\t0x05, 0x41, 0x4c, 0x50, 0x48, 0x41, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x45, 0x54, 0x41,\n\t0x10, 0x03, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x41, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45,\n\t0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x05, 0x42, 0x5a, 0x0a, 0x0e, 0x63, 0x6f,\n\t0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x10, 0x4c, 0x61,\n\t0x75, 0x6e, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,\n\t0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,\n\t0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x3b, 0x61, 0x70, 0x69, 0xa2,\n\t0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_launch_stage_proto_rawDescOnce sync.Once\n\tfile_google_api_launch_stage_proto_rawDescData = file_google_api_launch_stage_proto_rawDesc\n)\n\nfunc file_google_api_launch_stage_proto_rawDescGZIP() []byte {\n\tfile_google_api_launch_stage_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_launch_stage_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_launch_stage_proto_rawDescData)\n\t})\n\treturn file_google_api_launch_stage_proto_rawDescData\n}\n\nvar file_google_api_launch_stage_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_google_api_launch_stage_proto_goTypes = []interface{}{\n\t(LaunchStage)(0), // 0: google.api.LaunchStage\n}\nvar file_google_api_launch_stage_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_launch_stage_proto_init() }\nfunc file_google_api_launch_stage_proto_init() {\n\tif File_google_api_launch_stage_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_launch_stage_proto_rawDesc,\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_launch_stage_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_launch_stage_proto_depIdxs,\n\t\tEnumInfos:         file_google_api_launch_stage_proto_enumTypes,\n\t}.Build()\n\tFile_google_api_launch_stage_proto = out.File\n\tfile_google_api_launch_stage_proto_rawDesc = nil\n\tfile_google_api_launch_stage_proto_goTypes = nil\n\tfile_google_api_launch_stage_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/rpc/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go",
    "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v4.24.4\n// source: google/rpc/status.proto\n\npackage status\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// The `Status` type defines a logical error model that is suitable for\n// different programming environments, including REST APIs and RPC APIs. It is\n// used by [gRPC](https://github.com/grpc). Each `Status` message contains\n// three pieces of data: error code, error message, and error details.\n//\n// You can find out more about this error model and how to work with it in the\n// [API Design Guide](https://cloud.google.com/apis/design/errors).\ntype Status struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The status code, which should be an enum value of\n\t// [google.rpc.Code][google.rpc.Code].\n\tCode int32 `protobuf:\"varint,1,opt,name=code,proto3\" json:\"code,omitempty\"`\n\t// A developer-facing error message, which should be in English. Any\n\t// user-facing error message should be localized and sent in the\n\t// [google.rpc.Status.details][google.rpc.Status.details] field, or localized\n\t// by the client.\n\tMessage string `protobuf:\"bytes,2,opt,name=message,proto3\" json:\"message,omitempty\"`\n\t// A list of messages that carry the error details.  There is a common set of\n\t// message types for APIs to use.\n\tDetails []*anypb.Any `protobuf:\"bytes,3,rep,name=details,proto3\" json:\"details,omitempty\"`\n}\n\nfunc (x *Status) Reset() {\n\t*x = Status{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_rpc_status_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Status) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Status) ProtoMessage() {}\n\nfunc (x *Status) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_rpc_status_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Status.ProtoReflect.Descriptor instead.\nfunc (*Status) Descriptor() ([]byte, []int) {\n\treturn file_google_rpc_status_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Status) GetCode() int32 {\n\tif x != nil {\n\t\treturn x.Code\n\t}\n\treturn 0\n}\n\nfunc (x *Status) GetMessage() string {\n\tif x != nil {\n\t\treturn x.Message\n\t}\n\treturn \"\"\n}\n\nfunc (x *Status) GetDetails() []*anypb.Any {\n\tif x != nil {\n\t\treturn x.Details\n\t}\n\treturn nil\n}\n\nvar File_google_rpc_status_proto protoreflect.FileDescriptor\n\nvar file_google_rpc_status_proto_rawDesc = []byte{\n\t0x0a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61,\n\t0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x72, 0x70, 0x63, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x22, 0x66, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f,\n\t0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18,\n\t0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61,\n\t0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52,\n\t0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x5e, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x42, 0x0b, 0x53, 0x74, 0x61, 0x74,\n\t0x75, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x37, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,\n\t0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3b, 0x73, 0x74, 0x61, 0x74,\n\t0x75, 0x73, 0xa2, 0x02, 0x03, 0x52, 0x50, 0x43, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_rpc_status_proto_rawDescOnce sync.Once\n\tfile_google_rpc_status_proto_rawDescData = file_google_rpc_status_proto_rawDesc\n)\n\nfunc file_google_rpc_status_proto_rawDescGZIP() []byte {\n\tfile_google_rpc_status_proto_rawDescOnce.Do(func() {\n\t\tfile_google_rpc_status_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_rpc_status_proto_rawDescData)\n\t})\n\treturn file_google_rpc_status_proto_rawDescData\n}\n\nvar file_google_rpc_status_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_rpc_status_proto_goTypes = []interface{}{\n\t(*Status)(nil),    // 0: google.rpc.Status\n\t(*anypb.Any)(nil), // 1: google.protobuf.Any\n}\nvar file_google_rpc_status_proto_depIdxs = []int32{\n\t1, // 0: google.rpc.Status.details:type_name -> google.protobuf.Any\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_google_rpc_status_proto_init() }\nfunc file_google_rpc_status_proto_init() {\n\tif File_google_rpc_status_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_rpc_status_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Status); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_rpc_status_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_rpc_status_proto_goTypes,\n\t\tDependencyIndexes: file_google_rpc_status_proto_depIdxs,\n\t\tMessageInfos:      file_google_rpc_status_proto_msgTypes,\n\t}.Build()\n\tFile_google_rpc_status_proto = out.File\n\tfile_google_rpc_status_proto_rawDesc = nil\n\tfile_google_rpc_status_proto_goTypes = nil\n\tfile_google_rpc_status_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/AUTHORS",
    "content": "Google Inc.\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/CODE-OF-CONDUCT.md",
    "content": "## Community Code of Conduct\n\ngRPC follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md).\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/CONTRIBUTING.md",
    "content": "# How to contribute\n\nWe welcome your patches and contributions to gRPC! Please read the gRPC\norganization's [governance\nrules](https://github.com/grpc/grpc-community/blob/master/governance.md) before\nproceeding.\n\nIf you are new to GitHub, please start by reading [Pull Request howto](https://help.github.com/articles/about-pull-requests/)\n\n## Legal requirements\n\nIn order to protect both you and ourselves, you will need to sign the\n[Contributor License\nAgreement](https://identity.linuxfoundation.org/projects/cncf). When you create\nyour first PR, a link will be added as a comment that contains the steps needed\nto complete this process.\n\n## Getting Started\n\nA great way to start is by searching through our open issues. [Unassigned issues\nlabeled as \"help\nwanted\"](https://github.com/grpc/grpc-go/issues?q=sort%3Aupdated-desc%20is%3Aissue%20is%3Aopen%20label%3A%22Status%3A%20Help%20Wanted%22%20no%3Aassignee)\nare especially nice for first-time contributors, as they should be well-defined\nproblems that already have agreed-upon solutions.\n\n## Code Style\n\nWe follow [Google's published Go style\nguide](https://google.github.io/styleguide/go/). Note that there are three\nprimary documents that make up this style guide; please follow them as closely\nas possible. If a reviewer recommends something that contradicts those\nguidelines, there may be valid reasons to do so, but it should be rare.\n\n## Guidelines for Pull Requests\n\nPlease read the following carefully to ensure your contributions can be merged\nsmoothly and quickly.\n\n### PR Contents\n\n- Create **small PRs** that are narrowly focused on **addressing a single\n  concern**. We often receive PRs that attempt to fix several things at the same\n  time, and if one part of the PR has a problem, that will hold up the entire\n  PR.\n\n- If your change does not address an **open issue** with an **agreed\n  resolution**, consider opening an issue and discussing it first. If you are\n  suggesting a behavioral or API change, consider starting with a [gRFC\n  proposal](https://github.com/grpc/proposal). Many new features that are not\n  bug fixes will require cross-language agreement.\n\n- If you want to fix **formatting or style**, consider whether your changes are\n  an obvious improvement or might be considered a personal preference. If a\n  style change is based on preference, it likely will not be accepted. If it\n  corrects widely agreed-upon anti-patterns, then please do create a PR and\n  explain the benefits of the change.\n\n- For correcting **misspellings**, please be aware that we use some terms that\n  are sometimes flagged by spell checkers. As an example, \"if an only if\" is\n  often written as \"iff\". Please do not make spelling correction changes unless\n  you are certain they are misspellings.\n\n- **All tests need to be passing** before your change can be merged. We\n  recommend you run tests locally before creating your PR to catch breakages\n  early on:\n\n  - `./scripts/vet.sh` to catch vet errors.\n  - `go test -cpu 1,4 -timeout 7m ./...` to run the tests.\n  - `go test -race -cpu 1,4 -timeout 7m ./...` to run tests in race mode.\n\n  Note that we have a multi-module repo, so `go test` commands may need to be\n  run from the root of each module in order to cause all tests to run.\n\n  *Alternatively*, you may find it easier to push your changes to your fork on\n  GitHub, which will trigger a GitHub Actions run that you can use to verify\n  everything is passing.\n\n- Note that there are two GitHub actions checks that need not be green:\n\n  1. We test the freshness of the generated proto code we maintain via the\n     `vet-proto` check. If the source proto files are updated, but our repo is\n     not updated, an optional checker will fail. This will be fixed by our team\n     in a separate PR and will not prevent the merge of your PR.\n\n  2. We run a checker that will fail if there is any change in dependencies of\n     an exported package via the `dependencies` check. If new dependencies are\n     added that are not appropriate, we may not accept your PR (see below).\n\n- If you are adding a **new file**, make sure it has the **copyright message**\n  template at the top as a comment. You can copy the message from an existing\n  file and update the year.\n\n- The grpc package should only depend on standard Go packages and a small number\n  of exceptions. **If your contribution introduces new dependencies**, you will\n  need a discussion with gRPC-Go maintainers.\n\n### PR Descriptions\n\n- **PR titles** should start with the name of the component being addressed, or\n  the type of change. Examples: transport, client, server, round_robin, xds,\n  cleanup, deps.\n\n- Read and follow the **guidelines for PR titles and descriptions** here:\n  https://google.github.io/eng-practices/review/developer/cl-descriptions.html\n\n  *particularly* the sections \"First Line\" and \"Body is Informative\".\n\n  Note: your PR description will be used as the git commit message in a\n  squash-and-merge if your PR is approved. We may make changes to this as\n  necessary.\n\n- **Does this PR relate to an open issue?** On the first line, please use the\n  tag `Fixes #<issue>` to ensure the issue is closed when the PR is merged. Or\n  use `Updates #<issue>` if the PR is related to an open issue, but does not fix\n  it. Consider filing an issue if one does not already exist.\n\n- PR descriptions *must* conclude with **release notes** as follows:\n\n  ```\n  RELEASE NOTES:\n  * <component>: <summary>\n  ```\n\n  This need not match the PR title.\n\n  The summary must:\n\n  * be something that gRPC users will understand.\n\n  * clearly explain the feature being added, the issue being fixed, or the\n    behavior being changed, etc. If fixing a bug, be clear about how the bug\n    can be triggered by an end-user.\n\n  * begin with a capital letter and use complete sentences.\n\n  * be as short as possible to describe the change being made.\n\n  If a PR is *not* end-user visible -- e.g. a cleanup, testing change, or\n  GitHub-related, use `RELEASE NOTES: n/a`.\n\n### PR Process\n\n- Please **self-review** your code changes before sending your PR. This will\n  prevent simple, obvious errors from causing delays.\n\n- Maintain a **clean commit history** and use **meaningful commit messages**.\n  PRs with messy commit histories are difficult to review and won't be merged.\n  Before sending your PR, ensure your changes are based on top of the latest\n  `upstream/master` commits, and avoid rebasing in the middle of a code review.\n  You should **never use `git push -f`** unless absolutely necessary during a\n  review, as it can interfere with GitHub's tracking of comments.\n\n- Unless your PR is trivial, you should **expect reviewer comments** that you\n  will need to address before merging. We'll label the PR as `Status: Requires\n  Reporter Clarification` if we expect you to respond to these comments in a\n  timely manner. If the PR remains inactive for 6 days, it will be marked as\n  `stale`, and we will automatically close it after 7 days if we don't hear back\n  from you. Please feel free to ping issues or bugs if you do not get a response\n  within a week.\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/GOVERNANCE.md",
    "content": "This repository is governed by the gRPC organization's [governance rules](https://github.com/grpc/grpc-community/blob/master/governance.md).\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/MAINTAINERS.md",
    "content": "This page lists all active maintainers of this repository. If you were a\nmaintainer and would like to add your name to the Emeritus list, please send us a\nPR.\n\nSee [GOVERNANCE.md](https://github.com/grpc/grpc-community/blob/master/governance.md)\nfor governance guidelines and how to become a maintainer.\nSee [CONTRIBUTING.md](https://github.com/grpc/grpc-community/blob/master/CONTRIBUTING.md)\nfor general contribution guidelines.\n\n## Maintainers (in alphabetical order)\n\n- [arjan-bal](https://github.com/arjan-bal), Google LLC\n- [arvindbr8](https://github.com/arvindbr8), Google LLC\n- [atollena](https://github.com/atollena), Datadog, Inc.\n- [dfawley](https://github.com/dfawley), Google LLC\n- [easwars](https://github.com/easwars), Google LLC\n- [gtcooke94](https://github.com/gtcooke94), Google LLC\n\n## Emeritus Maintainers (in alphabetical order)\n- [adelez](https://github.com/adelez)\n- [aranjans](https://github.com/aranjans)\n- [canguler](https://github.com/canguler)\n- [cesarghali](https://github.com/cesarghali)\n- [erm-g](https://github.com/erm-g)\n- [iamqizhao](https://github.com/iamqizhao)\n- [jeanbza](https://github.com/jeanbza)\n- [jtattermusch](https://github.com/jtattermusch)\n- [lyuxuan](https://github.com/lyuxuan)\n- [makmukhi](https://github.com/makmukhi)\n- [matt-kwong](https://github.com/matt-kwong)\n- [menghanl](https://github.com/menghanl)\n- [nicolasnoble](https://github.com/nicolasnoble)\n- [purnesh42h](https://github.com/purnesh42h)\n- [srini100](https://github.com/srini100)\n- [yongni](https://github.com/yongni)\n- [zasweq](https://github.com/zasweq)\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/Makefile",
    "content": "all: vet test testrace\n\nbuild:\n\tgo build google.golang.org/grpc/...\n\nclean:\n\tgo clean -i google.golang.org/grpc/...\n\ndeps:\n\tGO111MODULE=on go get -d -v google.golang.org/grpc/...\n\nproto:\n\t@ if ! which protoc > /dev/null; then \\\n\t\techo \"error: protoc not installed\" >&2; \\\n\t\texit 1; \\\n\tfi\n\tgo generate google.golang.org/grpc/...\n\ntest:\n\tgo test -cpu 1,4 -timeout 7m google.golang.org/grpc/...\n\ntestsubmodule:\n\tcd security/advancedtls && go test -cpu 1,4 -timeout 7m google.golang.org/grpc/security/advancedtls/...\n\tcd security/authorization && go test -cpu 1,4 -timeout 7m google.golang.org/grpc/security/authorization/...\n\ntestrace:\n\tgo test -race -cpu 1,4 -timeout 7m google.golang.org/grpc/...\n\ntestdeps:\n\tGO111MODULE=on go get -d -v -t google.golang.org/grpc/...\n\nvet: vetdeps\n\t./scripts/vet.sh\n\nvetdeps:\n\t./scripts/vet.sh -install\n\n.PHONY: \\\n\tall \\\n\tbuild \\\n\tclean \\\n\tdeps \\\n\tproto \\\n\ttest \\\n\ttestsubmodule \\\n\ttestrace \\\n\ttestdeps \\\n\tvet \\\n\tvetdeps\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/NOTICE.txt",
    "content": "Copyright 2014 gRPC authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/README.md",
    "content": "# gRPC-Go\n\n[![GoDoc](https://pkg.go.dev/badge/google.golang.org/grpc)][API]\n[![GoReportCard](https://goreportcard.com/badge/grpc/grpc-go)](https://goreportcard.com/report/github.com/grpc/grpc-go)\n[![codecov](https://codecov.io/gh/grpc/grpc-go/graph/badge.svg)](https://codecov.io/gh/grpc/grpc-go)\n\nThe [Go][] implementation of [gRPC][]: A high performance, open source, general\nRPC framework that puts mobile and HTTP/2 first. For more information see the\n[Go gRPC docs][], or jump directly into the [quick start][].\n\n## Prerequisites\n\n- **[Go][]**: any one of the **two latest major** [releases][go-releases].\n\n## Installation\n\nSimply add the following import to your code, and then `go [build|run|test]`\nwill automatically fetch the necessary dependencies:\n\n\n```go\nimport \"google.golang.org/grpc\"\n```\n\n> **Note:** If you are trying to access `grpc-go` from **China**, see the\n> [FAQ](#FAQ) below.\n\n## Learn more\n\n- [Go gRPC docs][], which include a [quick start][] and [API\n  reference][API] among other resources\n- [Low-level technical docs](Documentation) from this repository\n- [Performance benchmark][]\n- [Examples](examples)\n- [Contribution guidelines](CONTRIBUTING.md)\n\n## FAQ\n\n### I/O Timeout Errors\n\nThe `golang.org` domain may be blocked from some countries. `go get` usually\nproduces an error like the following when this happens:\n\n```console\n$ go get -u google.golang.org/grpc\npackage google.golang.org/grpc: unrecognized import path \"google.golang.org/grpc\" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)\n```\n\nTo build Go code, there are several options:\n\n- Set up a VPN and access google.golang.org through that.\n\n- With Go module support: it is possible to use the `replace` feature of `go\n  mod` to create aliases for golang.org packages.  In your project's directory:\n\n  ```sh\n  go mod edit -replace=google.golang.org/grpc=github.com/grpc/grpc-go@latest\n  go mod tidy\n  go mod vendor\n  go build -mod=vendor\n  ```\n\n  Again, this will need to be done for all transitive dependencies hosted on\n  golang.org as well. For details, refer to [golang/go issue\n  #28652](https://github.com/golang/go/issues/28652).\n\n### Compiling error, undefined: grpc.SupportPackageIsVersion\n\nPlease update to the latest version of gRPC-Go using\n`go get google.golang.org/grpc`.\n\n### How to turn on logging\n\nThe default logger is controlled by environment variables. Turn everything on\nlike this:\n\n```console\n$ export GRPC_GO_LOG_VERBOSITY_LEVEL=99\n$ export GRPC_GO_LOG_SEVERITY_LEVEL=info\n```\n\n### The RPC failed with error `\"code = Unavailable desc = transport is closing\"`\n\nThis error means the connection the RPC is using was closed, and there are many\npossible reasons, including:\n 1. mis-configured transport credentials, connection failed on handshaking\n 1. bytes disrupted, possibly by a proxy in between\n 1. server shutdown\n 1. Keepalive parameters caused connection shutdown, for example if you have\n    configured your server to terminate connections regularly to [trigger DNS\n    lookups](https://github.com/grpc/grpc-go/issues/3170#issuecomment-552517779).\n    If this is the case, you may want to increase your\n    [MaxConnectionAgeGrace](https://pkg.go.dev/google.golang.org/grpc/keepalive?tab=doc#ServerParameters),\n    to allow longer RPC calls to finish.\n\nIt can be tricky to debug this because the error happens on the client side but\nthe root cause of the connection being closed is on the server side. Turn on\nlogging on __both client and server__, and see if there are any transport\nerrors.\n\n[API]: https://pkg.go.dev/google.golang.org/grpc\n[Go]: https://golang.org\n[Go module]: https://github.com/golang/go/wiki/Modules\n[gRPC]: https://grpc.io\n[Go gRPC docs]: https://grpc.io/docs/languages/go\n[Performance benchmark]: https://performance-dot-grpc-testing.appspot.com/explore?dashboard=5180705743044608\n[quick start]: https://grpc.io/docs/languages/go/quickstart\n[go-releases]: https://golang.org/doc/devel/release.html\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/SECURITY.md",
    "content": "# Security Policy\n\nFor information on gRPC Security Policy and reporting potential security issues, please see [gRPC CVE Process](https://github.com/grpc/proposal/blob/master/P4-grpc-cve-process.md).\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/attributes/attributes.go",
    "content": "/*\n *\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package attributes defines a generic key/value store used in various gRPC\n// components.\n//\n// # Experimental\n//\n// Notice: This package is EXPERIMENTAL and may be changed or removed in a\n// later release.\npackage attributes\n\nimport (\n\t\"fmt\"\n\t\"iter\"\n\t\"maps\"\n\t\"strings\"\n)\n\n// Attributes is an immutable struct for storing and retrieving generic\n// key/value pairs.  Keys must be hashable, and users should define their own\n// types for keys.  Values should not be modified after they are added to an\n// Attributes or if they were received from one.  If values implement 'Equal(o\n// any) bool', it will be called by (*Attributes).Equal to determine whether\n// two values with the same key should be considered equal.\ntype Attributes struct {\n\tparent     *Attributes\n\tkey, value any\n}\n\n// New returns a new Attributes containing the key/value pair.\nfunc New(key, value any) *Attributes {\n\treturn &Attributes{\n\t\tkey:   key,\n\t\tvalue: value,\n\t}\n}\n\n// WithValue returns a new Attributes containing the previous keys and values\n// and the new key/value pair.  If the same key appears multiple times, the\n// last value overwrites all previous values for that key.  value should not be\n// modified later.\n//\n// Note that Attributes do not support deletion. Avoid using untyped nil values.\n// Since the Value method returns an untyped nil when a key is absent, it is\n// impossible to distinguish between a missing key and a key explicitly set to\n// an untyped nil. If you need to represent a value being unset, consider\n// storing a specific sentinel type or a wrapper struct with a boolean field\n// indicating presence.\nfunc (a *Attributes) WithValue(key, value any) *Attributes {\n\treturn &Attributes{\n\t\tparent: a,\n\t\tkey:    key,\n\t\tvalue:  value,\n\t}\n}\n\n// Value returns the value associated with these attributes for key, or nil if\n// no value is associated with key.  The returned value should not be modified.\nfunc (a *Attributes) Value(key any) any {\n\tfor cur := a; cur != nil; cur = cur.parent {\n\t\tif cur.key == key {\n\t\t\treturn cur.value\n\t\t}\n\t}\n\treturn nil\n}\n\n// Equal returns whether a and o are equivalent.  If 'Equal(o any) bool' is\n// implemented for a value in the attributes, it is called to determine if the\n// value matches the one stored in the other attributes.  If Equal is not\n// implemented, standard equality is used to determine if the two values are\n// equal. Note that some types (e.g. maps) aren't comparable by default, so\n// they must be wrapped in a struct, or in an alias type, with Equal defined.\nfunc (a *Attributes) Equal(o *Attributes) bool {\n\tif a == nil && o == nil {\n\t\treturn true\n\t}\n\tif a == nil || o == nil {\n\t\treturn false\n\t}\n\tif a == o {\n\t\treturn true\n\t}\n\tm := maps.Collect(o.all())\n\tlenA := 0\n\n\tfor k, v := range a.all() {\n\t\tlenA++\n\t\tov, ok := m[k]\n\t\tif !ok {\n\t\t\t// o missing element of a\n\t\t\treturn false\n\t\t}\n\t\tif eq, ok := v.(interface{ Equal(o any) bool }); ok {\n\t\t\tif !eq.Equal(ov) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else if v != ov {\n\t\t\t// Fallback to a standard equality check if Value is unimplemented.\n\t\t\treturn false\n\t\t}\n\t}\n\treturn lenA == len(m)\n}\n\n// String prints the attribute map. If any key or values throughout the map\n// implement fmt.Stringer, it calls that method and appends.\nfunc (a *Attributes) String() string {\n\tvar sb strings.Builder\n\tsb.WriteString(\"{\")\n\tfirst := true\n\tfor k, v := range a.all() {\n\t\tif !first {\n\t\t\tsb.WriteString(\", \")\n\t\t}\n\t\tfmt.Fprintf(&sb, \"%q: %q \", str(k), str(v))\n\t\tfirst = false\n\t}\n\tsb.WriteString(\"}\")\n\treturn sb.String()\n}\n\nfunc str(x any) (s string) {\n\tif v, ok := x.(fmt.Stringer); ok {\n\t\treturn fmt.Sprint(v)\n\t} else if v, ok := x.(string); ok {\n\t\treturn v\n\t}\n\treturn fmt.Sprintf(\"<%p>\", x)\n}\n\n// MarshalJSON helps implement the json.Marshaler interface, thereby rendering\n// the Attributes correctly when printing (via pretty.JSON) structs containing\n// Attributes as fields.\n//\n// Is it impossible to unmarshal attributes from a JSON representation and this\n// method is meant only for debugging purposes.\nfunc (a *Attributes) MarshalJSON() ([]byte, error) {\n\treturn []byte(a.String()), nil\n}\n\n// all returns an iterator that yields all key-value pairs in the Attributes\n// chain. If a key appears multiple times, only the most recently added value\n// is yielded.\nfunc (a *Attributes) all() iter.Seq2[any, any] {\n\treturn func(yield func(any, any) bool) {\n\t\tseen := map[any]bool{}\n\t\tfor cur := a; cur != nil; cur = cur.parent {\n\t\t\tif seen[cur.key] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !yield(cur.key, cur.value) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tseen[cur.key] = true\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/backoff/backoff.go",
    "content": "/*\n *\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package backoff provides configuration options for backoff.\n//\n// More details can be found at:\n// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.\n//\n// All APIs in this package are experimental.\npackage backoff\n\nimport \"time\"\n\n// Config defines the configuration options for backoff.\ntype Config struct {\n\t// BaseDelay is the amount of time to backoff after the first failure.\n\tBaseDelay time.Duration\n\t// Multiplier is the factor with which to multiply backoffs after a\n\t// failed retry. Should ideally be greater than 1.\n\tMultiplier float64\n\t// Jitter is the factor with which backoffs are randomized.\n\tJitter float64\n\t// MaxDelay is the upper bound of backoff delay.\n\tMaxDelay time.Duration\n}\n\n// DefaultConfig is a backoff configuration with the default values specified\n// at https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.\n//\n// This should be useful for callers who want to configure backoff with\n// non-default values only for a subset of the options.\nvar DefaultConfig = Config{\n\tBaseDelay:  1.0 * time.Second,\n\tMultiplier: 1.6,\n\tJitter:     0.2,\n\tMaxDelay:   120 * time.Second,\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/backoff.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// See internal/backoff package for the backoff implementation. This file is\n// kept for the exported types and API backward compatibility.\n\npackage grpc\n\nimport (\n\t\"time\"\n\n\t\"google.golang.org/grpc/backoff\"\n)\n\n// DefaultBackoffConfig uses values specified for backoff in\n// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.\n//\n// Deprecated: use ConnectParams instead. Will be supported throughout 1.x.\nvar DefaultBackoffConfig = BackoffConfig{\n\tMaxDelay: 120 * time.Second,\n}\n\n// BackoffConfig defines the parameters for the default gRPC backoff strategy.\n//\n// Deprecated: use ConnectParams instead. Will be supported throughout 1.x.\ntype BackoffConfig struct {\n\t// MaxDelay is the upper bound of backoff delay.\n\tMaxDelay time.Duration\n}\n\n// ConnectParams defines the parameters for connecting and retrying. Users are\n// encouraged to use this instead of the BackoffConfig type defined above. See\n// here for more details:\n// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype ConnectParams struct {\n\t// Backoff specifies the configuration options for connection backoff.\n\tBackoff backoff.Config\n\t// MinConnectTimeout is the minimum amount of time we are willing to give a\n\t// connection to complete.\n\tMinConnectTimeout time.Duration\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/balancer.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package balancer defines APIs for load balancing in gRPC.\n// All APIs in this package are experimental.\npackage balancer\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"net\"\n\t\"strings\"\n\n\t\"google.golang.org/grpc/channelz\"\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/credentials\"\n\testats \"google.golang.org/grpc/experimental/stats\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/internal/envconfig\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nvar (\n\t// m is a map from name to balancer builder.\n\tm = make(map[string]Builder)\n\n\tlogger = grpclog.Component(\"balancer\")\n)\n\n// Register registers the balancer builder to the balancer map. b.Name\n// will be used as the name registered with this builder. If the Builder\n// implements ConfigParser, ParseConfig will be called when new service\n// configs are received by the resolver, and the result will be provided to the\n// Balancer in UpdateClientConnState.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. If multiple Balancers are\n// registered with the same name, the one registered last will take effect.\nfunc Register(b Builder) {\n\tname := b.Name()\n\tif !envconfig.CaseSensitiveBalancerRegistries {\n\t\tname = strings.ToLower(name)\n\t\tif name != b.Name() {\n\t\t\tlogger.Warningf(\"Balancer registered with name %q. grpc-go will be switching to case sensitive balancer registries soon. After 2 releases, we will enable the env var by default.\", b.Name())\n\t\t}\n\t}\n\tm[name] = b\n}\n\n// unregisterForTesting deletes the balancer with the given name from the\n// balancer map.\n//\n// This function is not thread-safe.\nfunc unregisterForTesting(name string) {\n\tdelete(m, name)\n}\n\nfunc init() {\n\tinternal.BalancerUnregister = unregisterForTesting\n}\n\n// Get returns the resolver builder registered with the given name.\n// Note that the compare is done in a case-sensitive fashion.\n// If no builder is register with the name, nil will be returned.\nfunc Get(name string) Builder {\n\tif !envconfig.CaseSensitiveBalancerRegistries {\n\t\tlowerName := strings.ToLower(name)\n\t\tif lowerName != name {\n\t\t\tlogger.Warningf(\"Balancer retrieved for name %q. grpc-go will be switching to case sensitive balancer registries soon. After 2 releases, we will enable the env var by default.\", name)\n\t\t}\n\t\tname = lowerName\n\t}\n\tif b, ok := m[name]; ok {\n\t\treturn b\n\t}\n\treturn nil\n}\n\n// NewSubConnOptions contains options to create new SubConn.\ntype NewSubConnOptions struct {\n\t// CredsBundle is the credentials bundle that will be used in the created\n\t// SubConn. If it's nil, the original creds from grpc DialOptions will be\n\t// used.\n\t//\n\t// Deprecated: Use the Attributes field in resolver.Address to pass\n\t// arbitrary data to the credential handshaker.\n\tCredsBundle credentials.Bundle\n\t// HealthCheckEnabled indicates whether health check service should be\n\t// enabled on this SubConn\n\tHealthCheckEnabled bool\n\t// StateListener is called when the state of the subconn changes.  If nil,\n\t// Balancer.UpdateSubConnState will be called instead.  Will never be\n\t// invoked until after Connect() is called on the SubConn created with\n\t// these options.\n\tStateListener func(SubConnState)\n}\n\n// State contains the balancer's state relevant to the gRPC ClientConn.\ntype State struct {\n\t// State contains the connectivity state of the balancer, which is used to\n\t// determine the state of the ClientConn.\n\tConnectivityState connectivity.State\n\t// Picker is used to choose connections (SubConns) for RPCs.\n\tPicker Picker\n}\n\n// ClientConn represents a gRPC ClientConn.\n//\n// This interface is to be implemented by gRPC. Users should not need a\n// brand new implementation of this interface. For the situations like\n// testing, the new implementation should embed this interface. This allows\n// gRPC to add new methods to this interface.\n//\n// NOTICE: This interface is intended to be implemented by gRPC, or intercepted\n// by custom load balancing polices.  Users should not need their own complete\n// implementation of this interface -- they should always delegate to a\n// ClientConn passed to Builder.Build() by embedding it in their\n// implementations. An embedded ClientConn must never be nil, or runtime panics\n// will occur.\ntype ClientConn interface {\n\t// NewSubConn is called by balancer to create a new SubConn.\n\t// It doesn't block and wait for the connections to be established.\n\t// Behaviors of the SubConn can be controlled by options.\n\t//\n\t// Deprecated: please be aware that in a future version, SubConns will only\n\t// support one address per SubConn.\n\tNewSubConn([]resolver.Address, NewSubConnOptions) (SubConn, error)\n\t// RemoveSubConn removes the SubConn from ClientConn.\n\t// The SubConn will be shutdown.\n\t//\n\t// Deprecated: use SubConn.Shutdown instead.\n\tRemoveSubConn(SubConn)\n\t// UpdateAddresses updates the addresses used in the passed in SubConn.\n\t// gRPC checks if the currently connected address is still in the new list.\n\t// If so, the connection will be kept. Else, the connection will be\n\t// gracefully closed, and a new connection will be created.\n\t//\n\t// This may trigger a state transition for the SubConn.\n\t//\n\t// Deprecated: this method will be removed.  Create new SubConns for new\n\t// addresses instead.\n\tUpdateAddresses(SubConn, []resolver.Address)\n\n\t// UpdateState notifies gRPC that the balancer's internal state has\n\t// changed.\n\t//\n\t// gRPC will update the connectivity state of the ClientConn, and will call\n\t// Pick on the new Picker to pick new SubConns.\n\tUpdateState(State)\n\n\t// ResolveNow is called by balancer to notify gRPC to do a name resolving.\n\tResolveNow(resolver.ResolveNowOptions)\n\n\t// Target returns the dial target for this ClientConn.\n\t//\n\t// Deprecated: Use the Target field in the BuildOptions instead.\n\tTarget() string\n\n\t// MetricsRecorder provides the metrics recorder that balancers can use to\n\t// record metrics. Balancer implementations which do not register metrics on\n\t// metrics registry and record on them can ignore this method. The returned\n\t// MetricsRecorder is guaranteed to never be nil.\n\tMetricsRecorder() estats.MetricsRecorder\n\n\t// EnforceClientConnEmbedding is included to force implementers to embed\n\t// another implementation of this interface, allowing gRPC to add methods\n\t// without breaking users.\n\tinternal.EnforceClientConnEmbedding\n}\n\n// BuildOptions contains additional information for Build.\ntype BuildOptions struct {\n\t// DialCreds is the transport credentials to use when communicating with a\n\t// remote load balancer server. Balancer implementations which do not\n\t// communicate with a remote load balancer server can ignore this field.\n\tDialCreds credentials.TransportCredentials\n\t// CredsBundle is the credentials bundle to use when communicating with a\n\t// remote load balancer server. Balancer implementations which do not\n\t// communicate with a remote load balancer server can ignore this field.\n\tCredsBundle credentials.Bundle\n\t// Dialer is the custom dialer to use when communicating with a remote load\n\t// balancer server. Balancer implementations which do not communicate with a\n\t// remote load balancer server can ignore this field.\n\tDialer func(context.Context, string) (net.Conn, error)\n\t// Authority is the server name to use as part of the authentication\n\t// handshake when communicating with a remote load balancer server. Balancer\n\t// implementations which do not communicate with a remote load balancer\n\t// server can ignore this field.\n\tAuthority string\n\t// ChannelzParent is the parent ClientConn's channelz channel.\n\tChannelzParent channelz.Identifier\n\t// CustomUserAgent is the custom user agent set on the parent ClientConn.\n\t// The balancer should set the same custom user agent if it creates a\n\t// ClientConn.\n\tCustomUserAgent string\n\t// Target contains the parsed address info of the dial target. It is the\n\t// same resolver.Target as passed to the resolver. See the documentation for\n\t// the resolver.Target type for details about what it contains.\n\tTarget resolver.Target\n}\n\n// Builder creates a balancer.\ntype Builder interface {\n\t// Build creates a new balancer with the ClientConn.\n\tBuild(cc ClientConn, opts BuildOptions) Balancer\n\t// Name returns the name of balancers built by this builder.\n\t// It will be used to pick balancers (for example in service config).\n\tName() string\n}\n\n// ConfigParser parses load balancer configs.\ntype ConfigParser interface {\n\t// ParseConfig parses the JSON load balancer config provided into an\n\t// internal form or returns an error if the config is invalid.  For future\n\t// compatibility reasons, unknown fields in the config should be ignored.\n\tParseConfig(LoadBalancingConfigJSON json.RawMessage) (serviceconfig.LoadBalancingConfig, error)\n}\n\n// PickInfo contains additional information for the Pick operation.\ntype PickInfo struct {\n\t// FullMethodName is the method name that NewClientStream() is called\n\t// with. The canonical format is /service/Method.\n\tFullMethodName string\n\t// Ctx is the RPC's context, and may contain relevant RPC-level information\n\t// like the outgoing header metadata.\n\tCtx context.Context\n}\n\n// DoneInfo contains additional information for done.\ntype DoneInfo struct {\n\t// Err is the rpc error the RPC finished with. It could be nil.\n\tErr error\n\t// Trailer contains the metadata from the RPC's trailer, if present.\n\tTrailer metadata.MD\n\t// BytesSent indicates if any bytes have been sent to the server.\n\tBytesSent bool\n\t// BytesReceived indicates if any byte has been received from the server.\n\tBytesReceived bool\n\t// ServerLoad is the load received from server. It's usually sent as part of\n\t// trailing metadata.\n\t//\n\t// The only supported type now is *orca_v3.LoadReport.\n\tServerLoad any\n}\n\nvar (\n\t// ErrNoSubConnAvailable indicates no SubConn is available for pick().\n\t// gRPC will block the RPC until a new picker is available via UpdateState().\n\tErrNoSubConnAvailable = errors.New(\"no SubConn is available\")\n\t// ErrTransientFailure indicates all SubConns are in TransientFailure.\n\t// WaitForReady RPCs will block, non-WaitForReady RPCs will fail.\n\t//\n\t// Deprecated: return an appropriate error based on the last resolution or\n\t// connection attempt instead.  The behavior is the same for any non-gRPC\n\t// status error.\n\tErrTransientFailure = errors.New(\"all SubConns are in TransientFailure\")\n)\n\n// PickResult contains information related to a connection chosen for an RPC.\ntype PickResult struct {\n\t// SubConn is the connection to use for this pick, if its state is Ready.\n\t// If the state is not Ready, gRPC will block the RPC until a new Picker is\n\t// provided by the balancer (using ClientConn.UpdateState).  The SubConn\n\t// must be one returned by ClientConn.NewSubConn.\n\tSubConn SubConn\n\n\t// Done is called when the RPC is completed.  If the SubConn is not ready,\n\t// this will be called with a nil parameter.  If the SubConn is not a valid\n\t// type, Done may not be called.  May be nil if the balancer does not wish\n\t// to be notified when the RPC completes.\n\tDone func(DoneInfo)\n\n\t// Metadata provides a way for LB policies to inject arbitrary per-call\n\t// metadata. Any metadata returned here will be merged with existing\n\t// metadata added by the client application.\n\t//\n\t// LB policies with child policies are responsible for propagating metadata\n\t// injected by their children to the ClientConn, as part of Pick().\n\tMetadata metadata.MD\n}\n\n// TransientFailureError returns e.  It exists for backward compatibility and\n// will be deleted soon.\n//\n// Deprecated: no longer necessary, picker errors are treated this way by\n// default.\nfunc TransientFailureError(e error) error { return e }\n\n// Picker is used by gRPC to pick a SubConn to send an RPC.\n// Balancer is expected to generate a new picker from its snapshot every time its\n// internal state has changed.\n//\n// The pickers used by gRPC can be updated by ClientConn.UpdateState().\ntype Picker interface {\n\t// Pick returns the connection to use for this RPC and related information.\n\t//\n\t// Pick should not block.  If the balancer needs to do I/O or any blocking\n\t// or time-consuming work to service this call, it should return\n\t// ErrNoSubConnAvailable, and the Pick call will be repeated by gRPC when\n\t// the Picker is updated (using ClientConn.UpdateState).\n\t//\n\t// If an error is returned:\n\t//\n\t// - If the error is ErrNoSubConnAvailable, gRPC will block until a new\n\t//   Picker is provided by the balancer (using ClientConn.UpdateState).\n\t//\n\t// - If the error is a status error (implemented by the grpc/status\n\t//   package), gRPC will terminate the RPC with the code and message\n\t//   provided.\n\t//\n\t// - For all other errors, wait for ready RPCs will wait, but non-wait for\n\t//   ready RPCs will be terminated with this error's Error() string and\n\t//   status code Unavailable.\n\tPick(info PickInfo) (PickResult, error)\n}\n\n// Balancer takes input from gRPC, manages SubConns, and collects and aggregates\n// the connectivity states.\n//\n// It also generates and updates the Picker used by gRPC to pick SubConns for RPCs.\n//\n// UpdateClientConnState, ResolverError, UpdateSubConnState, and Close are\n// guaranteed to be called synchronously from the same goroutine.  There's no\n// guarantee on picker.Pick, it may be called anytime.\ntype Balancer interface {\n\t// UpdateClientConnState is called by gRPC when the state of the ClientConn\n\t// changes.  If the error returned is ErrBadResolverState, the ClientConn\n\t// will begin calling ResolveNow on the active name resolver with\n\t// exponential backoff until a subsequent call to UpdateClientConnState\n\t// returns a nil error.  Any other errors are currently ignored.\n\tUpdateClientConnState(ClientConnState) error\n\t// ResolverError is called by gRPC when the name resolver reports an error.\n\tResolverError(error)\n\t// UpdateSubConnState is called by gRPC when the state of a SubConn\n\t// changes.\n\t//\n\t// Deprecated: Use NewSubConnOptions.StateListener when creating the\n\t// SubConn instead.\n\tUpdateSubConnState(SubConn, SubConnState)\n\t// Close closes the balancer. The balancer is not currently required to\n\t// call SubConn.Shutdown for its existing SubConns; however, this will be\n\t// required in a future release, so it is recommended.\n\tClose()\n\t// ExitIdle instructs the LB policy to reconnect to backends / exit the\n\t// IDLE state, if appropriate and possible.  Note that SubConns that enter\n\t// the IDLE state will not reconnect until SubConn.Connect is called.\n\tExitIdle()\n}\n\n// ExitIdler is an optional interface for balancers to implement.  If\n// implemented, ExitIdle will be called when ClientConn.Connect is called, if\n// the ClientConn is idle.  If unimplemented, ClientConn.Connect will cause\n// all SubConns to connect.\n//\n// Deprecated: All balancers must implement this interface. This interface will\n// be removed in a future release.\ntype ExitIdler interface {\n\t// ExitIdle instructs the LB policy to reconnect to backends / exit the\n\t// IDLE state, if appropriate and possible.  Note that SubConns that enter\n\t// the IDLE state will not reconnect until SubConn.Connect is called.\n\tExitIdle()\n}\n\n// ClientConnState describes the state of a ClientConn relevant to the\n// balancer.\ntype ClientConnState struct {\n\tResolverState resolver.State\n\t// The parsed load balancing configuration returned by the builder's\n\t// ParseConfig method, if implemented.\n\tBalancerConfig serviceconfig.LoadBalancingConfig\n}\n\n// ErrBadResolverState may be returned by UpdateClientConnState to indicate a\n// problem with the provided name resolver data.\nvar ErrBadResolverState = errors.New(\"bad resolver state\")\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/base/balancer.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage base\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\nvar logger = grpclog.Component(\"balancer\")\n\ntype baseBuilder struct {\n\tname          string\n\tpickerBuilder PickerBuilder\n\tconfig        Config\n}\n\nfunc (bb *baseBuilder) Build(cc balancer.ClientConn, _ balancer.BuildOptions) balancer.Balancer {\n\tbal := &baseBalancer{\n\t\tcc:            cc,\n\t\tpickerBuilder: bb.pickerBuilder,\n\n\t\tsubConns: resolver.NewAddressMapV2[balancer.SubConn](),\n\t\tscStates: make(map[balancer.SubConn]connectivity.State),\n\t\tcsEvltr:  &balancer.ConnectivityStateEvaluator{},\n\t\tconfig:   bb.config,\n\t\tstate:    connectivity.Connecting,\n\t}\n\t// Initialize picker to a picker that always returns\n\t// ErrNoSubConnAvailable, because when state of a SubConn changes, we\n\t// may call UpdateState with this picker.\n\tbal.picker = NewErrPicker(balancer.ErrNoSubConnAvailable)\n\treturn bal\n}\n\nfunc (bb *baseBuilder) Name() string {\n\treturn bb.name\n}\n\ntype baseBalancer struct {\n\tcc            balancer.ClientConn\n\tpickerBuilder PickerBuilder\n\n\tcsEvltr *balancer.ConnectivityStateEvaluator\n\tstate   connectivity.State\n\n\tsubConns *resolver.AddressMapV2[balancer.SubConn]\n\tscStates map[balancer.SubConn]connectivity.State\n\tpicker   balancer.Picker\n\tconfig   Config\n\n\tresolverErr error // the last error reported by the resolver; cleared on successful resolution\n\tconnErr     error // the last connection error; cleared upon leaving TransientFailure\n}\n\nfunc (b *baseBalancer) ResolverError(err error) {\n\tb.resolverErr = err\n\tif b.subConns.Len() == 0 {\n\t\tb.state = connectivity.TransientFailure\n\t}\n\n\tif b.state != connectivity.TransientFailure {\n\t\t// The picker will not change since the balancer does not currently\n\t\t// report an error.\n\t\treturn\n\t}\n\tb.regeneratePicker()\n\tb.cc.UpdateState(balancer.State{\n\t\tConnectivityState: b.state,\n\t\tPicker:            b.picker,\n\t})\n}\n\nfunc (b *baseBalancer) UpdateClientConnState(s balancer.ClientConnState) error {\n\t// TODO: handle s.ResolverState.ServiceConfig?\n\tif logger.V(2) {\n\t\tlogger.Info(\"base.baseBalancer: got new ClientConn state: \", s)\n\t}\n\t// Successful resolution; clear resolver error and ensure we return nil.\n\tb.resolverErr = nil\n\t// addrsSet is the set converted from addrs, it's used for quick lookup of an address.\n\taddrsSet := resolver.NewAddressMapV2[any]()\n\tfor _, a := range s.ResolverState.Addresses {\n\t\taddrsSet.Set(a, nil)\n\t\tif _, ok := b.subConns.Get(a); !ok {\n\t\t\t// a is a new address (not existing in b.subConns).\n\t\t\tvar sc balancer.SubConn\n\t\t\topts := balancer.NewSubConnOptions{\n\t\t\t\tHealthCheckEnabled: b.config.HealthCheck,\n\t\t\t\tStateListener:      func(scs balancer.SubConnState) { b.updateSubConnState(sc, scs) },\n\t\t\t}\n\t\t\tsc, err := b.cc.NewSubConn([]resolver.Address{a}, opts)\n\t\t\tif err != nil {\n\t\t\t\tlogger.Warningf(\"base.baseBalancer: failed to create new SubConn: %v\", err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tb.subConns.Set(a, sc)\n\t\t\tb.scStates[sc] = connectivity.Idle\n\t\t\tb.csEvltr.RecordTransition(connectivity.Shutdown, connectivity.Idle)\n\t\t\tsc.Connect()\n\t\t}\n\t}\n\tfor a, sc := range b.subConns.All() {\n\t\t// a was removed by resolver.\n\t\tif _, ok := addrsSet.Get(a); !ok {\n\t\t\tsc.Shutdown()\n\t\t\tb.subConns.Delete(a)\n\t\t\t// Keep the state of this sc in b.scStates until sc's state becomes Shutdown.\n\t\t\t// The entry will be deleted in updateSubConnState.\n\t\t}\n\t}\n\t// If resolver state contains no addresses, return an error so ClientConn\n\t// will trigger re-resolve. Also records this as a resolver error, so when\n\t// the overall state turns transient failure, the error message will have\n\t// the zero address information.\n\tif len(s.ResolverState.Addresses) == 0 {\n\t\tb.ResolverError(errors.New(\"produced zero addresses\"))\n\t\treturn balancer.ErrBadResolverState\n\t}\n\n\tb.regeneratePicker()\n\tb.cc.UpdateState(balancer.State{ConnectivityState: b.state, Picker: b.picker})\n\treturn nil\n}\n\n// mergeErrors builds an error from the last connection error and the last\n// resolver error.  Must only be called if b.state is TransientFailure.\nfunc (b *baseBalancer) mergeErrors() error {\n\t// connErr must always be non-nil unless there are no SubConns, in which\n\t// case resolverErr must be non-nil.\n\tif b.connErr == nil {\n\t\treturn fmt.Errorf(\"last resolver error: %v\", b.resolverErr)\n\t}\n\tif b.resolverErr == nil {\n\t\treturn fmt.Errorf(\"last connection error: %v\", b.connErr)\n\t}\n\treturn fmt.Errorf(\"last connection error: %v; last resolver error: %v\", b.connErr, b.resolverErr)\n}\n\n// regeneratePicker takes a snapshot of the balancer, and generates a picker\n// from it. The picker is\n//   - errPicker if the balancer is in TransientFailure,\n//   - built by the pickerBuilder with all READY SubConns otherwise.\nfunc (b *baseBalancer) regeneratePicker() {\n\tif b.state == connectivity.TransientFailure {\n\t\tb.picker = NewErrPicker(b.mergeErrors())\n\t\treturn\n\t}\n\treadySCs := make(map[balancer.SubConn]SubConnInfo)\n\n\t// Filter out all ready SCs from full subConn map.\n\tfor addr, sc := range b.subConns.All() {\n\t\tif st, ok := b.scStates[sc]; ok && st == connectivity.Ready {\n\t\t\treadySCs[sc] = SubConnInfo{Address: addr}\n\t\t}\n\t}\n\tb.picker = b.pickerBuilder.Build(PickerBuildInfo{ReadySCs: readySCs})\n}\n\n// UpdateSubConnState is a nop because a StateListener is always set in NewSubConn.\nfunc (b *baseBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.SubConnState) {\n\tlogger.Errorf(\"base.baseBalancer: UpdateSubConnState(%v, %+v) called unexpectedly\", sc, state)\n}\n\nfunc (b *baseBalancer) updateSubConnState(sc balancer.SubConn, state balancer.SubConnState) {\n\ts := state.ConnectivityState\n\tif logger.V(2) {\n\t\tlogger.Infof(\"base.baseBalancer: handle SubConn state change: %p, %v\", sc, s)\n\t}\n\toldS, ok := b.scStates[sc]\n\tif !ok {\n\t\tif logger.V(2) {\n\t\t\tlogger.Infof(\"base.baseBalancer: got state changes for an unknown SubConn: %p, %v\", sc, s)\n\t\t}\n\t\treturn\n\t}\n\tif oldS == connectivity.TransientFailure &&\n\t\t(s == connectivity.Connecting || s == connectivity.Idle) {\n\t\t// Once a subconn enters TRANSIENT_FAILURE, ignore subsequent IDLE or\n\t\t// CONNECTING transitions to prevent the aggregated state from being\n\t\t// always CONNECTING when many backends exist but are all down.\n\t\tif s == connectivity.Idle {\n\t\t\tsc.Connect()\n\t\t}\n\t\treturn\n\t}\n\tb.scStates[sc] = s\n\tswitch s {\n\tcase connectivity.Idle:\n\t\tsc.Connect()\n\tcase connectivity.Shutdown:\n\t\t// When an address was removed by resolver, b called Shutdown but kept\n\t\t// the sc's state in scStates. Remove state for this sc here.\n\t\tdelete(b.scStates, sc)\n\tcase connectivity.TransientFailure:\n\t\t// Save error to be reported via picker.\n\t\tb.connErr = state.ConnectionError\n\t}\n\n\tb.state = b.csEvltr.RecordTransition(oldS, s)\n\n\t// Regenerate picker when one of the following happens:\n\t//  - this sc entered or left ready\n\t//  - the aggregated state of balancer is TransientFailure\n\t//    (may need to update error message)\n\tif (s == connectivity.Ready) != (oldS == connectivity.Ready) ||\n\t\tb.state == connectivity.TransientFailure {\n\t\tb.regeneratePicker()\n\t}\n\tb.cc.UpdateState(balancer.State{ConnectivityState: b.state, Picker: b.picker})\n}\n\n// Close is a nop because base balancer doesn't have internal state to clean up,\n// and it doesn't need to call Shutdown for the SubConns.\nfunc (b *baseBalancer) Close() {\n}\n\n// ExitIdle is a nop because the base balancer attempts to stay connected to\n// all SubConns at all times.\nfunc (b *baseBalancer) ExitIdle() {\n}\n\n// NewErrPicker returns a Picker that always returns err on Pick().\nfunc NewErrPicker(err error) balancer.Picker {\n\treturn &errPicker{err: err}\n}\n\n// NewErrPickerV2 is temporarily defined for backward compatibility reasons.\n//\n// Deprecated: use NewErrPicker instead.\nvar NewErrPickerV2 = NewErrPicker\n\ntype errPicker struct {\n\terr error // Pick() always returns this err.\n}\n\nfunc (p *errPicker) Pick(balancer.PickInfo) (balancer.PickResult, error) {\n\treturn balancer.PickResult{}, p.err\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/base/base.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package base defines a balancer base that can be used to build balancers with\n// different picking algorithms.\n//\n// The base balancer creates a new SubConn for each resolved address. The\n// provided picker will only be notified about READY SubConns.\n//\n// This package is the base of round_robin balancer, its purpose is to be used\n// to build round_robin like balancers with complex picking algorithms.\n// Balancers with more complicated logic should try to implement a balancer\n// builder from scratch.\n//\n// All APIs in this package are experimental.\npackage base\n\nimport (\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\n// PickerBuilder creates balancer.Picker.\ntype PickerBuilder interface {\n\t// Build returns a picker that will be used by gRPC to pick a SubConn.\n\tBuild(info PickerBuildInfo) balancer.Picker\n}\n\n// PickerBuildInfo contains information needed by the picker builder to\n// construct a picker.\ntype PickerBuildInfo struct {\n\t// ReadySCs is a map from all ready SubConns to the Addresses used to\n\t// create them.\n\tReadySCs map[balancer.SubConn]SubConnInfo\n}\n\n// SubConnInfo contains information about a SubConn created by the base\n// balancer.\ntype SubConnInfo struct {\n\tAddress resolver.Address // the address used to create this SubConn\n}\n\n// Config contains the config info about the base balancer builder.\ntype Config struct {\n\t// HealthCheck indicates whether health checking should be enabled for this specific balancer.\n\tHealthCheck bool\n}\n\n// NewBalancerBuilder returns a base balancer builder configured by the provided config.\nfunc NewBalancerBuilder(name string, pb PickerBuilder, config Config) balancer.Builder {\n\treturn &baseBuilder{\n\t\tname:          name,\n\t\tpickerBuilder: pb,\n\t\tconfig:        config,\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/conn_state_evaluator.go",
    "content": "/*\n *\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage balancer\n\nimport \"google.golang.org/grpc/connectivity\"\n\n// ConnectivityStateEvaluator takes the connectivity states of multiple SubConns\n// and returns one aggregated connectivity state.\n//\n// It's not thread safe.\ntype ConnectivityStateEvaluator struct {\n\tnumReady            uint64 // Number of addrConns in ready state.\n\tnumConnecting       uint64 // Number of addrConns in connecting state.\n\tnumTransientFailure uint64 // Number of addrConns in transient failure state.\n\tnumIdle             uint64 // Number of addrConns in idle state.\n}\n\n// RecordTransition records state change happening in subConn and based on that\n// it evaluates what aggregated state should be.\n//\n//   - If at least one SubConn in Ready, the aggregated state is Ready;\n//   - Else if at least one SubConn in Connecting, the aggregated state is Connecting;\n//   - Else if at least one SubConn is Idle, the aggregated state is Idle;\n//   - Else if at least one SubConn is TransientFailure (or there are no SubConns), the aggregated state is Transient Failure.\n//\n// Shutdown is not considered.\nfunc (cse *ConnectivityStateEvaluator) RecordTransition(oldState, newState connectivity.State) connectivity.State {\n\t// Update counters.\n\tfor idx, state := range []connectivity.State{oldState, newState} {\n\t\tupdateVal := 2*uint64(idx) - 1 // -1 for oldState and +1 for new.\n\t\tswitch state {\n\t\tcase connectivity.Ready:\n\t\t\tcse.numReady += updateVal\n\t\tcase connectivity.Connecting:\n\t\t\tcse.numConnecting += updateVal\n\t\tcase connectivity.TransientFailure:\n\t\t\tcse.numTransientFailure += updateVal\n\t\tcase connectivity.Idle:\n\t\t\tcse.numIdle += updateVal\n\t\t}\n\t}\n\treturn cse.CurrentState()\n}\n\n// CurrentState returns the current aggregate conn state by evaluating the counters\nfunc (cse *ConnectivityStateEvaluator) CurrentState() connectivity.State {\n\t// Evaluate.\n\tif cse.numReady > 0 {\n\t\treturn connectivity.Ready\n\t}\n\tif cse.numConnecting > 0 {\n\t\treturn connectivity.Connecting\n\t}\n\tif cse.numIdle > 0 {\n\t\treturn connectivity.Idle\n\t}\n\treturn connectivity.TransientFailure\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/endpointsharding/endpointsharding.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package endpointsharding implements a load balancing policy that manages\n// homogeneous child policies each owning a single endpoint.\n//\n// # Experimental\n//\n// Notice: This package is EXPERIMENTAL and may be changed or removed in a\n// later release.\npackage endpointsharding\n\nimport (\n\t\"errors\"\n\trand \"math/rand/v2\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/balancer/base\"\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\nvar randIntN = rand.IntN\n\n// ChildState is the balancer state of a child along with the endpoint which\n// identifies the child balancer.\ntype ChildState struct {\n\tEndpoint resolver.Endpoint\n\tState    balancer.State\n\n\t// Balancer exposes only the ExitIdler interface of the child LB policy.\n\t// Other methods of the child policy are called only by endpointsharding.\n\tBalancer ExitIdler\n}\n\n// ExitIdler provides access to only the ExitIdle method of the child balancer.\ntype ExitIdler interface {\n\t// ExitIdle instructs the LB policy to reconnect to backends / exit the\n\t// IDLE state, if appropriate and possible.  Note that SubConns that enter\n\t// the IDLE state will not reconnect until SubConn.Connect is called.\n\tExitIdle()\n}\n\n// Options are the options to configure the behaviour of the\n// endpointsharding balancer.\ntype Options struct {\n\t// DisableAutoReconnect allows the balancer to keep child balancer in the\n\t// IDLE state until they are explicitly triggered to exit using the\n\t// ChildState obtained from the endpointsharding picker. When set to false,\n\t// the endpointsharding balancer will automatically call ExitIdle on child\n\t// connections that report IDLE.\n\tDisableAutoReconnect bool\n}\n\n// ChildBuilderFunc creates a new balancer with the ClientConn. It has the same\n// type as the balancer.Builder.Build method.\ntype ChildBuilderFunc func(cc balancer.ClientConn, opts balancer.BuildOptions) balancer.Balancer\n\n// NewBalancer returns a load balancing policy that manages homogeneous child\n// policies each owning a single endpoint. The endpointsharding balancer\n// forwards the LoadBalancingConfig in ClientConn state updates to its children.\nfunc NewBalancer(cc balancer.ClientConn, opts balancer.BuildOptions, childBuilder ChildBuilderFunc, esOpts Options) balancer.Balancer {\n\tes := &endpointSharding{\n\t\tcc:           cc,\n\t\tbOpts:        opts,\n\t\tesOpts:       esOpts,\n\t\tchildBuilder: childBuilder,\n\t}\n\tes.children.Store(resolver.NewEndpointMap[*balancerWrapper]())\n\treturn es\n}\n\n// endpointSharding is a balancer that wraps child balancers. It creates a child\n// balancer with child config for every unique Endpoint received. It updates the\n// child states on any update from parent or child.\ntype endpointSharding struct {\n\tcc           balancer.ClientConn\n\tbOpts        balancer.BuildOptions\n\tesOpts       Options\n\tchildBuilder ChildBuilderFunc\n\n\t// childMu synchronizes calls to any single child. It must be held for all\n\t// calls into a child. To avoid deadlocks, do not acquire childMu while\n\t// holding mu.\n\tchildMu  sync.Mutex\n\tchildren atomic.Pointer[resolver.EndpointMap[*balancerWrapper]]\n\n\t// inhibitChildUpdates is set during UpdateClientConnState/ResolverError\n\t// calls (calls to children will each produce an update, only want one\n\t// update).\n\tinhibitChildUpdates atomic.Bool\n\n\t// mu synchronizes access to the state stored in balancerWrappers in the\n\t// children field. mu must not be held during calls into a child since\n\t// synchronous calls back from the child may require taking mu, causing a\n\t// deadlock. To avoid deadlocks, do not acquire childMu while holding mu.\n\tmu sync.Mutex\n}\n\n// rotateEndpoints returns a slice of all the input endpoints rotated a random\n// amount.\nfunc rotateEndpoints(es []resolver.Endpoint) []resolver.Endpoint {\n\tles := len(es)\n\tif les == 0 {\n\t\treturn es\n\t}\n\tr := randIntN(les)\n\t// Make a copy to avoid mutating data beyond the end of es.\n\tret := make([]resolver.Endpoint, les)\n\tcopy(ret, es[r:])\n\tcopy(ret[les-r:], es[:r])\n\treturn ret\n}\n\n// UpdateClientConnState creates a child for new endpoints and deletes children\n// for endpoints that are no longer present. It also updates all the children,\n// and sends a single synchronous update of the childrens' aggregated state at\n// the end of the UpdateClientConnState operation. If any endpoint has no\n// addresses it will ignore that endpoint. Otherwise, returns first error found\n// from a child, but fully processes the new update.\nfunc (es *endpointSharding) UpdateClientConnState(state balancer.ClientConnState) error {\n\tes.childMu.Lock()\n\tdefer es.childMu.Unlock()\n\n\tes.inhibitChildUpdates.Store(true)\n\tdefer func() {\n\t\tes.inhibitChildUpdates.Store(false)\n\t\tes.updateState()\n\t}()\n\tvar ret error\n\n\tchildren := es.children.Load()\n\tnewChildren := resolver.NewEndpointMap[*balancerWrapper]()\n\n\t// Update/Create new children.\n\tfor _, endpoint := range rotateEndpoints(state.ResolverState.Endpoints) {\n\t\tif _, ok := newChildren.Get(endpoint); ok {\n\t\t\t// Endpoint child was already created, continue to avoid duplicate\n\t\t\t// update.\n\t\t\tcontinue\n\t\t}\n\t\tchildBalancer, ok := children.Get(endpoint)\n\t\tif ok {\n\t\t\t// Endpoint attributes may have changed, update the stored endpoint.\n\t\t\tes.mu.Lock()\n\t\t\tchildBalancer.childState.Endpoint = endpoint\n\t\t\tes.mu.Unlock()\n\t\t} else {\n\t\t\tchildBalancer = &balancerWrapper{\n\t\t\t\tchildState: ChildState{Endpoint: endpoint},\n\t\t\t\tClientConn: es.cc,\n\t\t\t\tes:         es,\n\t\t\t}\n\t\t\tchildBalancer.childState.Balancer = childBalancer\n\t\t\tchildBalancer.child = es.childBuilder(childBalancer, es.bOpts)\n\t\t}\n\t\tnewChildren.Set(endpoint, childBalancer)\n\t\tif err := childBalancer.updateClientConnStateLocked(balancer.ClientConnState{\n\t\t\tBalancerConfig: state.BalancerConfig,\n\t\t\tResolverState: resolver.State{\n\t\t\t\tEndpoints:  []resolver.Endpoint{endpoint},\n\t\t\t\tAttributes: state.ResolverState.Attributes,\n\t\t\t},\n\t\t}); err != nil && ret == nil {\n\t\t\t// Return first error found, and always commit full processing of\n\t\t\t// updating children. If desired to process more specific errors\n\t\t\t// across all endpoints, caller should make these specific\n\t\t\t// validations, this is a current limitation for simplicity sake.\n\t\t\tret = err\n\t\t}\n\t}\n\t// Delete old children that are no longer present.\n\tfor e, child := range children.All() {\n\t\tif _, ok := newChildren.Get(e); !ok {\n\t\t\tchild.closeLocked()\n\t\t}\n\t}\n\tes.children.Store(newChildren)\n\tif newChildren.Len() == 0 {\n\t\treturn balancer.ErrBadResolverState\n\t}\n\treturn ret\n}\n\n// ResolverError forwards the resolver error to all of the endpointSharding's\n// children and sends a single synchronous update of the childStates at the end\n// of the ResolverError operation.\nfunc (es *endpointSharding) ResolverError(err error) {\n\tes.childMu.Lock()\n\tdefer es.childMu.Unlock()\n\tes.inhibitChildUpdates.Store(true)\n\tdefer func() {\n\t\tes.inhibitChildUpdates.Store(false)\n\t\tes.updateState()\n\t}()\n\tchildren := es.children.Load()\n\tfor _, child := range children.All() {\n\t\tchild.resolverErrorLocked(err)\n\t}\n}\n\nfunc (es *endpointSharding) UpdateSubConnState(balancer.SubConn, balancer.SubConnState) {\n\t// UpdateSubConnState is deprecated.\n}\n\nfunc (es *endpointSharding) Close() {\n\tes.childMu.Lock()\n\tdefer es.childMu.Unlock()\n\tchildren := es.children.Load()\n\tfor _, child := range children.All() {\n\t\tchild.closeLocked()\n\t}\n}\n\nfunc (es *endpointSharding) ExitIdle() {\n\tes.childMu.Lock()\n\tdefer es.childMu.Unlock()\n\tfor _, bw := range es.children.Load().All() {\n\t\tif !bw.isClosed {\n\t\t\tbw.child.ExitIdle()\n\t\t}\n\t}\n}\n\n// updateState updates this component's state. It sends the aggregated state,\n// and a picker with round robin behavior with all the child states present if\n// needed.\nfunc (es *endpointSharding) updateState() {\n\tif es.inhibitChildUpdates.Load() {\n\t\treturn\n\t}\n\tvar readyPickers, connectingPickers, idlePickers, transientFailurePickers []balancer.Picker\n\n\tes.mu.Lock()\n\tdefer es.mu.Unlock()\n\n\tchildren := es.children.Load()\n\tchildStates := make([]ChildState, 0, children.Len())\n\n\tfor _, child := range children.All() {\n\t\tchildState := child.childState\n\t\tchildStates = append(childStates, childState)\n\t\tchildPicker := childState.State.Picker\n\t\tswitch childState.State.ConnectivityState {\n\t\tcase connectivity.Ready:\n\t\t\treadyPickers = append(readyPickers, childPicker)\n\t\tcase connectivity.Connecting:\n\t\t\tconnectingPickers = append(connectingPickers, childPicker)\n\t\tcase connectivity.Idle:\n\t\t\tidlePickers = append(idlePickers, childPicker)\n\t\tcase connectivity.TransientFailure:\n\t\t\ttransientFailurePickers = append(transientFailurePickers, childPicker)\n\t\t\t// connectivity.Shutdown shouldn't appear.\n\t\t}\n\t}\n\n\t// Construct the round robin picker based off the aggregated state. Whatever\n\t// the aggregated state, use the pickers present that are currently in that\n\t// state only.\n\tvar aggState connectivity.State\n\tvar pickers []balancer.Picker\n\tif len(readyPickers) >= 1 {\n\t\taggState = connectivity.Ready\n\t\tpickers = readyPickers\n\t} else if len(connectingPickers) >= 1 {\n\t\taggState = connectivity.Connecting\n\t\tpickers = connectingPickers\n\t} else if len(idlePickers) >= 1 {\n\t\taggState = connectivity.Idle\n\t\tpickers = idlePickers\n\t} else if len(transientFailurePickers) >= 1 {\n\t\taggState = connectivity.TransientFailure\n\t\tpickers = transientFailurePickers\n\t} else {\n\t\taggState = connectivity.TransientFailure\n\t\tpickers = []balancer.Picker{base.NewErrPicker(errors.New(\"no children to pick from\"))}\n\t} // No children (resolver error before valid update).\n\tp := &pickerWithChildStates{\n\t\tpickers:     pickers,\n\t\tchildStates: childStates,\n\t\tnext:        uint32(randIntN(len(pickers))),\n\t}\n\tes.cc.UpdateState(balancer.State{\n\t\tConnectivityState: aggState,\n\t\tPicker:            p,\n\t})\n}\n\n// pickerWithChildStates delegates to the pickers it holds in a round robin\n// fashion. It also contains the childStates of all the endpointSharding's\n// children.\ntype pickerWithChildStates struct {\n\tpickers     []balancer.Picker\n\tchildStates []ChildState\n\tnext        uint32\n}\n\nfunc (p *pickerWithChildStates) Pick(info balancer.PickInfo) (balancer.PickResult, error) {\n\tnextIndex := atomic.AddUint32(&p.next, 1)\n\tpicker := p.pickers[nextIndex%uint32(len(p.pickers))]\n\treturn picker.Pick(info)\n}\n\n// ChildStatesFromPicker returns the state of all the children managed by the\n// endpoint sharding balancer that created this picker.\nfunc ChildStatesFromPicker(picker balancer.Picker) []ChildState {\n\tp, ok := picker.(*pickerWithChildStates)\n\tif !ok {\n\t\treturn nil\n\t}\n\treturn p.childStates\n}\n\n// balancerWrapper is a wrapper of a balancer. It ID's a child balancer by\n// endpoint, and persists recent child balancer state.\ntype balancerWrapper struct {\n\t// The following fields are initialized at build time and read-only after\n\t// that and therefore do not need to be guarded by a mutex.\n\n\t// child contains the wrapped balancer. Access its methods only through\n\t// methods on balancerWrapper to ensure proper synchronization\n\tchild               balancer.Balancer\n\tbalancer.ClientConn // embed to intercept UpdateState, doesn't deal with SubConns\n\n\tes *endpointSharding\n\n\t// Access to the following fields is guarded by es.mu.\n\n\tchildState ChildState\n\tisClosed   bool\n}\n\nfunc (bw *balancerWrapper) UpdateState(state balancer.State) {\n\tbw.es.mu.Lock()\n\tbw.childState.State = state\n\tbw.es.mu.Unlock()\n\tif state.ConnectivityState == connectivity.Idle && !bw.es.esOpts.DisableAutoReconnect {\n\t\tbw.ExitIdle()\n\t}\n\tbw.es.updateState()\n}\n\n// ExitIdle pings an IDLE child balancer to exit idle in a new goroutine to\n// avoid deadlocks due to synchronous balancer state updates.\nfunc (bw *balancerWrapper) ExitIdle() {\n\tgo func() {\n\t\tbw.es.childMu.Lock()\n\t\tif !bw.isClosed {\n\t\t\tbw.child.ExitIdle()\n\t\t}\n\t\tbw.es.childMu.Unlock()\n\t}()\n}\n\n// updateClientConnStateLocked delivers the ClientConnState to the child\n// balancer. Callers must hold the child mutex of the parent endpointsharding\n// balancer.\nfunc (bw *balancerWrapper) updateClientConnStateLocked(ccs balancer.ClientConnState) error {\n\treturn bw.child.UpdateClientConnState(ccs)\n}\n\n// closeLocked closes the child balancer. Callers must hold the child mutext of\n// the parent endpointsharding balancer.\nfunc (bw *balancerWrapper) closeLocked() {\n\tbw.child.Close()\n\tbw.isClosed = true\n}\n\nfunc (bw *balancerWrapper) resolverErrorLocked(err error) {\n\tbw.child.ResolverError(err)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/grpclb/state/state.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package state declares grpclb types to be set by resolvers wishing to pass\n// information to grpclb via resolver.State Attributes.\npackage state\n\nimport (\n\t\"google.golang.org/grpc/resolver\"\n)\n\n// keyType is the key to use for storing State in Attributes.\ntype keyType string\n\nconst key = keyType(\"grpc.grpclb.state\")\n\n// State contains gRPCLB-relevant data passed from the name resolver.\ntype State struct {\n\t// BalancerAddresses contains the remote load balancer address(es).  If\n\t// set, overrides any resolver-provided addresses with Type of GRPCLB.\n\tBalancerAddresses []resolver.Address\n}\n\n// Set returns a copy of the provided state with attributes containing s.  s's\n// data should not be mutated after calling Set.\nfunc Set(state resolver.State, s *State) resolver.State {\n\tstate.Attributes = state.Attributes.WithValue(key, s)\n\treturn state\n}\n\n// Get returns the grpclb State in the resolver.State, or nil if not present.\n// The returned data should not be mutated.\nfunc Get(state resolver.State) *State {\n\ts, _ := state.Attributes.Value(key).(*State)\n\treturn s\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/pickfirst/internal/internal.go",
    "content": "/*\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package internal contains code internal to the pickfirst package.\npackage internal\n\nimport (\n\trand \"math/rand/v2\"\n\t\"time\"\n)\n\nvar (\n\t// RandShuffle pseudo-randomizes the order of addresses.\n\tRandShuffle = rand.Shuffle\n\t// RandFloat64 returns, as a float64, a pseudo-random number in [0.0,1.0).\n\tRandFloat64 = rand.Float64\n\t// TimeAfterFunc allows mocking the timer for testing connection delay\n\t// related functionality.\n\tTimeAfterFunc = func(d time.Duration, f func()) func() {\n\t\ttimer := time.AfterFunc(d, f)\n\t\treturn func() { timer.Stop() }\n\t}\n)\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package pickfirst contains the pick_first load balancing policy which\n// is the universal leaf policy.\npackage pickfirst\n\nimport (\n\t\"cmp\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"net\"\n\t\"net/netip\"\n\t\"slices\"\n\t\"sync\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/balancer/pickfirst/internal\"\n\t\"google.golang.org/grpc/connectivity\"\n\texpstats \"google.golang.org/grpc/experimental/stats\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/internal/balancer/weight\"\n\t\"google.golang.org/grpc/internal/envconfig\"\n\tinternalgrpclog \"google.golang.org/grpc/internal/grpclog\"\n\t\"google.golang.org/grpc/internal/pretty\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nfunc init() {\n\tbalancer.Register(pickfirstBuilder{})\n}\n\n// Name is the name of the pick_first balancer.\nconst Name = \"pick_first\"\n\n// enableHealthListenerKeyType is a unique key type used in resolver\n// attributes to indicate whether the health listener usage is enabled.\ntype enableHealthListenerKeyType struct{}\n\nvar (\n\tlogger               = grpclog.Component(\"pick-first-leaf-lb\")\n\tdisconnectionsMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{\n\t\tName:        \"grpc.lb.pick_first.disconnections\",\n\t\tDescription: \"EXPERIMENTAL. Number of times the selected subchannel becomes disconnected.\",\n\t\tUnit:        \"{disconnection}\",\n\t\tLabels:      []string{\"grpc.target\"},\n\t\tDefault:     false,\n\t})\n\tconnectionAttemptsSucceededMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{\n\t\tName:        \"grpc.lb.pick_first.connection_attempts_succeeded\",\n\t\tDescription: \"EXPERIMENTAL. Number of successful connection attempts.\",\n\t\tUnit:        \"{attempt}\",\n\t\tLabels:      []string{\"grpc.target\"},\n\t\tDefault:     false,\n\t})\n\tconnectionAttemptsFailedMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{\n\t\tName:        \"grpc.lb.pick_first.connection_attempts_failed\",\n\t\tDescription: \"EXPERIMENTAL. Number of failed connection attempts.\",\n\t\tUnit:        \"{attempt}\",\n\t\tLabels:      []string{\"grpc.target\"},\n\t\tDefault:     false,\n\t})\n)\n\nconst (\n\t// TODO: change to pick-first when this becomes the default pick_first policy.\n\tlogPrefix = \"[pick-first-leaf-lb %p] \"\n\t// connectionDelayInterval is the time to wait for during the happy eyeballs\n\t// pass before starting the next connection attempt.\n\tconnectionDelayInterval = 250 * time.Millisecond\n)\n\ntype ipAddrFamily int\n\nconst (\n\t// ipAddrFamilyUnknown represents strings that can't be parsed as an IP\n\t// address.\n\tipAddrFamilyUnknown ipAddrFamily = iota\n\tipAddrFamilyV4\n\tipAddrFamilyV6\n)\n\ntype pickfirstBuilder struct{}\n\nfunc (pickfirstBuilder) Build(cc balancer.ClientConn, bo balancer.BuildOptions) balancer.Balancer {\n\tb := &pickfirstBalancer{\n\t\tcc:              cc,\n\t\ttarget:          bo.Target.String(),\n\t\tmetricsRecorder: cc.MetricsRecorder(),\n\n\t\tsubConns:              resolver.NewAddressMapV2[*scData](),\n\t\tstate:                 connectivity.Connecting,\n\t\tcancelConnectionTimer: func() {},\n\t}\n\tb.logger = internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(logPrefix, b))\n\treturn b\n}\n\nfunc (b pickfirstBuilder) Name() string {\n\treturn Name\n}\n\nfunc (pickfirstBuilder) ParseConfig(js json.RawMessage) (serviceconfig.LoadBalancingConfig, error) {\n\tvar cfg pfConfig\n\tif err := json.Unmarshal(js, &cfg); err != nil {\n\t\treturn nil, fmt.Errorf(\"pickfirst: unable to unmarshal LB policy config: %s, error: %v\", string(js), err)\n\t}\n\treturn cfg, nil\n}\n\n// EnableHealthListener updates the state to configure pickfirst for using a\n// generic health listener.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a later\n// release.\nfunc EnableHealthListener(state resolver.State) resolver.State {\n\tstate.Attributes = state.Attributes.WithValue(enableHealthListenerKeyType{}, true)\n\treturn state\n}\n\ntype pfConfig struct {\n\tserviceconfig.LoadBalancingConfig `json:\"-\"`\n\n\t// If set to true, instructs the LB policy to shuffle the order of the list\n\t// of endpoints received from the name resolver before attempting to\n\t// connect to them.\n\tShuffleAddressList bool `json:\"shuffleAddressList\"`\n}\n\n// scData keeps track of the current state of the subConn.\n// It is not safe for concurrent access.\ntype scData struct {\n\t// The following fields are initialized at build time and read-only after\n\t// that.\n\tsubConn balancer.SubConn\n\taddr    resolver.Address\n\n\trawConnectivityState connectivity.State\n\t// The effective connectivity state based on raw connectivity, health state\n\t// and after following sticky TransientFailure behaviour defined in A62.\n\teffectiveState              connectivity.State\n\tlastErr                     error\n\tconnectionFailedInFirstPass bool\n}\n\nfunc (b *pickfirstBalancer) newSCData(addr resolver.Address) (*scData, error) {\n\tsd := &scData{\n\t\trawConnectivityState: connectivity.Idle,\n\t\teffectiveState:       connectivity.Idle,\n\t\taddr:                 addr,\n\t}\n\tsc, err := b.cc.NewSubConn([]resolver.Address{addr}, balancer.NewSubConnOptions{\n\t\tStateListener: func(state balancer.SubConnState) {\n\t\t\tb.updateSubConnState(sd, state)\n\t\t},\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsd.subConn = sc\n\treturn sd, nil\n}\n\ntype pickfirstBalancer struct {\n\t// The following fields are initialized at build time and read-only after\n\t// that and therefore do not need to be guarded by a mutex.\n\tlogger          *internalgrpclog.PrefixLogger\n\tcc              balancer.ClientConn\n\ttarget          string\n\tmetricsRecorder expstats.MetricsRecorder // guaranteed to be non nil\n\n\t// The mutex is used to ensure synchronization of updates triggered\n\t// from the idle picker and the already serialized resolver,\n\t// SubConn state updates.\n\tmu sync.Mutex\n\t// State reported to the channel based on SubConn states and resolver\n\t// updates.\n\tstate connectivity.State\n\t// scData for active subonns mapped by address.\n\tsubConns              *resolver.AddressMapV2[*scData]\n\taddressList           addressList\n\tfirstPass             bool\n\tnumTF                 int\n\tcancelConnectionTimer func()\n\thealthCheckingEnabled bool\n}\n\n// ResolverError is called by the ClientConn when the name resolver produces\n// an error or when pickfirst determined the resolver update to be invalid.\nfunc (b *pickfirstBalancer) ResolverError(err error) {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\tb.resolverErrorLocked(err)\n}\n\nfunc (b *pickfirstBalancer) resolverErrorLocked(err error) {\n\tif b.logger.V(2) {\n\t\tb.logger.Infof(\"Received error from the name resolver: %v\", err)\n\t}\n\n\t// The picker will not change since the balancer does not currently\n\t// report an error. If the balancer hasn't received a single good resolver\n\t// update yet, transition to TRANSIENT_FAILURE.\n\tif b.state != connectivity.TransientFailure && b.addressList.size() > 0 {\n\t\tif b.logger.V(2) {\n\t\t\tb.logger.Infof(\"Ignoring resolver error because balancer is using a previous good update.\")\n\t\t}\n\t\treturn\n\t}\n\n\tb.updateBalancerState(balancer.State{\n\t\tConnectivityState: connectivity.TransientFailure,\n\t\tPicker:            &picker{err: fmt.Errorf(\"name resolver error: %v\", err)},\n\t})\n}\n\nfunc (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState) error {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\tb.cancelConnectionTimer()\n\tif len(state.ResolverState.Addresses) == 0 && len(state.ResolverState.Endpoints) == 0 {\n\t\t// Cleanup state pertaining to the previous resolver state.\n\t\t// Treat an empty address list like an error by calling b.ResolverError.\n\t\tb.closeSubConnsLocked()\n\t\tb.addressList.updateAddrs(nil)\n\t\tb.resolverErrorLocked(errors.New(\"produced zero addresses\"))\n\t\treturn balancer.ErrBadResolverState\n\t}\n\tb.healthCheckingEnabled = state.ResolverState.Attributes.Value(enableHealthListenerKeyType{}) != nil\n\tcfg, ok := state.BalancerConfig.(pfConfig)\n\tif state.BalancerConfig != nil && !ok {\n\t\treturn fmt.Errorf(\"pickfirst: received illegal BalancerConfig (type %T): %v: %w\", state.BalancerConfig, state.BalancerConfig, balancer.ErrBadResolverState)\n\t}\n\n\tif b.logger.V(2) {\n\t\tb.logger.Infof(\"Received new config %s, resolver state %s\", pretty.ToJSON(cfg), pretty.ToJSON(state.ResolverState))\n\t}\n\n\tvar newAddrs []resolver.Address\n\tif endpoints := state.ResolverState.Endpoints; len(endpoints) != 0 {\n\t\t// Perform the optional shuffling described in gRFC A62. The shuffling\n\t\t// will change the order of endpoints but not touch the order of the\n\t\t// addresses within each endpoint. - A61\n\t\tif cfg.ShuffleAddressList {\n\t\t\tif envconfig.PickFirstWeightedShuffling {\n\t\t\t\ttype weightedEndpoint struct {\n\t\t\t\t\tendpoint resolver.Endpoint\n\t\t\t\t\tweight   float64\n\t\t\t\t}\n\n\t\t\t\t// For each endpoint, compute a key as described in A113 and\n\t\t\t\t// https://utopia.duth.gr/~pefraimi/research/data/2007EncOfAlg.pdf:\n\t\t\t\tvar weightedEndpoints []weightedEndpoint\n\t\t\t\tfor _, endpoint := range endpoints {\n\t\t\t\t\tu := internal.RandFloat64() // Random number in [0.0, 1.0)\n\t\t\t\t\tweight := weightAttribute(endpoint)\n\t\t\t\t\tweightedEndpoints = append(weightedEndpoints, weightedEndpoint{\n\t\t\t\t\t\tendpoint: endpoint,\n\t\t\t\t\t\tweight:   math.Pow(u, 1.0/float64(weight)),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\t// Sort endpoints by key in descending order and reconstruct the\n\t\t\t\t// endpoints slice.\n\t\t\t\tslices.SortFunc(weightedEndpoints, func(a, b weightedEndpoint) int {\n\t\t\t\t\treturn cmp.Compare(b.weight, a.weight)\n\t\t\t\t})\n\n\t\t\t\t// Here, and in the \"else\" block below, we clone the endpoints\n\t\t\t\t// slice to avoid mutating the resolver state. Doing the latter\n\t\t\t\t// would lead to data races if the caller is accessing the same\n\t\t\t\t// slice concurrently.\n\t\t\t\tsortedEndpoints := make([]resolver.Endpoint, len(endpoints))\n\t\t\t\tfor i, we := range weightedEndpoints {\n\t\t\t\t\tsortedEndpoints[i] = we.endpoint\n\t\t\t\t}\n\t\t\t\tendpoints = sortedEndpoints\n\t\t\t} else {\n\t\t\t\tendpoints = slices.Clone(endpoints)\n\t\t\t\tinternal.RandShuffle(len(endpoints), func(i, j int) { endpoints[i], endpoints[j] = endpoints[j], endpoints[i] })\n\t\t\t}\n\t\t}\n\n\t\t// \"Flatten the list by concatenating the ordered list of addresses for\n\t\t// each of the endpoints, in order.\" - A61\n\t\tfor _, endpoint := range endpoints {\n\t\t\tnewAddrs = append(newAddrs, endpoint.Addresses...)\n\t\t}\n\t} else {\n\t\t// Endpoints not set, process addresses until we migrate resolver\n\t\t// emissions fully to Endpoints. The top channel does wrap emitted\n\t\t// addresses with endpoints, however some balancers such as weighted\n\t\t// target do not forward the corresponding correct endpoints down/split\n\t\t// endpoints properly. Once all balancers correctly forward endpoints\n\t\t// down, can delete this else conditional.\n\t\tnewAddrs = state.ResolverState.Addresses\n\t\tif cfg.ShuffleAddressList {\n\t\t\tnewAddrs = append([]resolver.Address{}, newAddrs...)\n\t\t\tinternal.RandShuffle(len(newAddrs), func(i, j int) { newAddrs[i], newAddrs[j] = newAddrs[j], newAddrs[i] })\n\t\t}\n\t}\n\n\t// If an address appears in multiple endpoints or in the same endpoint\n\t// multiple times, we keep it only once. We will create only one SubConn\n\t// for the address because an AddressMap is used to store SubConns.\n\t// Not de-duplicating would result in attempting to connect to the same\n\t// SubConn multiple times in the same pass. We don't want this.\n\tnewAddrs = deDupAddresses(newAddrs)\n\tnewAddrs = interleaveAddresses(newAddrs)\n\n\tprevAddr := b.addressList.currentAddress()\n\tprevSCData, found := b.subConns.Get(prevAddr)\n\tprevAddrsCount := b.addressList.size()\n\tisPrevRawConnectivityStateReady := found && prevSCData.rawConnectivityState == connectivity.Ready\n\tb.addressList.updateAddrs(newAddrs)\n\n\t// If the previous ready SubConn exists in new address list,\n\t// keep this connection and don't create new SubConns.\n\tif isPrevRawConnectivityStateReady && b.addressList.seekTo(prevAddr) {\n\t\treturn nil\n\t}\n\n\tb.reconcileSubConnsLocked(newAddrs)\n\t// If it's the first resolver update or the balancer was already READY\n\t// (but the new address list does not contain the ready SubConn) or\n\t// CONNECTING, enter CONNECTING.\n\t// We may be in TRANSIENT_FAILURE due to a previous empty address list,\n\t// we should still enter CONNECTING because the sticky TF behaviour\n\t//  mentioned in A62 applies only when the TRANSIENT_FAILURE is reported\n\t// due to connectivity failures.\n\tif isPrevRawConnectivityStateReady || b.state == connectivity.Connecting || prevAddrsCount == 0 {\n\t\t// Start connection attempt at first address.\n\t\tb.forceUpdateConcludedStateLocked(balancer.State{\n\t\t\tConnectivityState: connectivity.Connecting,\n\t\t\tPicker:            &picker{err: balancer.ErrNoSubConnAvailable},\n\t\t})\n\t\tb.startFirstPassLocked()\n\t} else if b.state == connectivity.TransientFailure {\n\t\t// If we're in TRANSIENT_FAILURE, we stay in TRANSIENT_FAILURE until\n\t\t// we're READY. See A62.\n\t\tb.startFirstPassLocked()\n\t}\n\treturn nil\n}\n\n// UpdateSubConnState is unused as a StateListener is always registered when\n// creating SubConns.\nfunc (b *pickfirstBalancer) UpdateSubConnState(subConn balancer.SubConn, state balancer.SubConnState) {\n\tb.logger.Errorf(\"UpdateSubConnState(%v, %+v) called unexpectedly\", subConn, state)\n}\n\nfunc (b *pickfirstBalancer) Close() {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\tb.closeSubConnsLocked()\n\tb.cancelConnectionTimer()\n\tb.state = connectivity.Shutdown\n}\n\n// ExitIdle moves the balancer out of idle state. It can be called concurrently\n// by the idlePicker and clientConn so access to variables should be\n// synchronized.\nfunc (b *pickfirstBalancer) ExitIdle() {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\tif b.state == connectivity.Idle {\n\t\t// Move the balancer into CONNECTING state immediately. This is done to\n\t\t// avoid staying in IDLE if a resolver update arrives before the first\n\t\t// SubConn reports CONNECTING.\n\t\tb.updateBalancerState(balancer.State{\n\t\t\tConnectivityState: connectivity.Connecting,\n\t\t\tPicker:            &picker{err: balancer.ErrNoSubConnAvailable},\n\t\t})\n\t\tb.startFirstPassLocked()\n\t}\n}\n\nfunc (b *pickfirstBalancer) startFirstPassLocked() {\n\tb.firstPass = true\n\tb.numTF = 0\n\t// Reset the connection attempt record for existing SubConns.\n\tfor _, sd := range b.subConns.All() {\n\t\tsd.connectionFailedInFirstPass = false\n\t}\n\tb.requestConnectionLocked()\n}\n\nfunc (b *pickfirstBalancer) closeSubConnsLocked() {\n\tfor _, sd := range b.subConns.All() {\n\t\tsd.subConn.Shutdown()\n\t}\n\tb.subConns = resolver.NewAddressMapV2[*scData]()\n}\n\n// deDupAddresses ensures that each address appears only once in the slice.\nfunc deDupAddresses(addrs []resolver.Address) []resolver.Address {\n\tseenAddrs := resolver.NewAddressMapV2[bool]()\n\tretAddrs := []resolver.Address{}\n\n\tfor _, addr := range addrs {\n\t\tif _, ok := seenAddrs.Get(addr); ok {\n\t\t\tcontinue\n\t\t}\n\t\tseenAddrs.Set(addr, true)\n\t\tretAddrs = append(retAddrs, addr)\n\t}\n\treturn retAddrs\n}\n\n// interleaveAddresses interleaves addresses of both families (IPv4 and IPv6)\n// as per RFC-8305 section 4.\n// Whichever address family is first in the list is followed by an address of\n// the other address family; that is, if the first address in the list is IPv6,\n// then the first IPv4 address should be moved up in the list to be second in\n// the list. It doesn't support configuring \"First Address Family Count\", i.e.\n// there will always be a single member of the first address family at the\n// beginning of the interleaved list.\n// Addresses that are neither IPv4 nor IPv6 are treated as part of a third\n// \"unknown\" family for interleaving.\n// See: https://datatracker.ietf.org/doc/html/rfc8305#autoid-6\nfunc interleaveAddresses(addrs []resolver.Address) []resolver.Address {\n\tfamilyAddrsMap := map[ipAddrFamily][]resolver.Address{}\n\tinterleavingOrder := []ipAddrFamily{}\n\tfor _, addr := range addrs {\n\t\tfamily := addressFamily(addr.Addr)\n\t\tif _, found := familyAddrsMap[family]; !found {\n\t\t\tinterleavingOrder = append(interleavingOrder, family)\n\t\t}\n\t\tfamilyAddrsMap[family] = append(familyAddrsMap[family], addr)\n\t}\n\n\tinterleavedAddrs := make([]resolver.Address, 0, len(addrs))\n\n\tfor curFamilyIdx := 0; len(interleavedAddrs) < len(addrs); curFamilyIdx = (curFamilyIdx + 1) % len(interleavingOrder) {\n\t\t// Some IP types may have fewer addresses than others, so we look for\n\t\t// the next type that has a remaining member to add to the interleaved\n\t\t// list.\n\t\tfamily := interleavingOrder[curFamilyIdx]\n\t\tremainingMembers := familyAddrsMap[family]\n\t\tif len(remainingMembers) > 0 {\n\t\t\tinterleavedAddrs = append(interleavedAddrs, remainingMembers[0])\n\t\t\tfamilyAddrsMap[family] = remainingMembers[1:]\n\t\t}\n\t}\n\n\treturn interleavedAddrs\n}\n\n// addressFamily returns the ipAddrFamily after parsing the address string.\n// If the address isn't of the format \"ip-address:port\", it returns\n// ipAddrFamilyUnknown. The address may be valid even if it's not an IP when\n// using a resolver like passthrough where the address may be a hostname in\n// some format that the dialer can resolve.\nfunc addressFamily(address string) ipAddrFamily {\n\t// Parse the IP after removing the port.\n\thost, _, err := net.SplitHostPort(address)\n\tif err != nil {\n\t\treturn ipAddrFamilyUnknown\n\t}\n\tip, err := netip.ParseAddr(host)\n\tif err != nil {\n\t\treturn ipAddrFamilyUnknown\n\t}\n\tswitch {\n\tcase ip.Is4() || ip.Is4In6():\n\t\treturn ipAddrFamilyV4\n\tcase ip.Is6():\n\t\treturn ipAddrFamilyV6\n\tdefault:\n\t\treturn ipAddrFamilyUnknown\n\t}\n}\n\n// reconcileSubConnsLocked updates the active subchannels based on a new address\n// list from the resolver. It does this by:\n//   - closing subchannels: any existing subchannels associated with addresses\n//     that are no longer in the updated list are shut down.\n//   - removing subchannels: entries for these closed subchannels are removed\n//     from the subchannel map.\n//\n// This ensures that the subchannel map accurately reflects the current set of\n// addresses received from the name resolver.\nfunc (b *pickfirstBalancer) reconcileSubConnsLocked(newAddrs []resolver.Address) {\n\tnewAddrsMap := resolver.NewAddressMapV2[bool]()\n\tfor _, addr := range newAddrs {\n\t\tnewAddrsMap.Set(addr, true)\n\t}\n\n\tfor oldAddr := range b.subConns.All() {\n\t\tif _, ok := newAddrsMap.Get(oldAddr); ok {\n\t\t\tcontinue\n\t\t}\n\t\tval, _ := b.subConns.Get(oldAddr)\n\t\tval.subConn.Shutdown()\n\t\tb.subConns.Delete(oldAddr)\n\t}\n}\n\n// shutdownRemainingLocked shuts down remaining subConns. Called when a subConn\n// becomes ready, which means that all other subConn must be shutdown.\nfunc (b *pickfirstBalancer) shutdownRemainingLocked(selected *scData) {\n\tb.cancelConnectionTimer()\n\tfor _, sd := range b.subConns.All() {\n\t\tif sd.subConn != selected.subConn {\n\t\t\tsd.subConn.Shutdown()\n\t\t}\n\t}\n\tb.subConns = resolver.NewAddressMapV2[*scData]()\n\tb.subConns.Set(selected.addr, selected)\n}\n\n// requestConnectionLocked starts connecting on the subchannel corresponding to\n// the current address. If no subchannel exists, one is created. If the current\n// subchannel is in TransientFailure, a connection to the next address is\n// attempted until a subchannel is found.\nfunc (b *pickfirstBalancer) requestConnectionLocked() {\n\tif !b.addressList.isValid() {\n\t\treturn\n\t}\n\tvar lastErr error\n\tfor valid := true; valid; valid = b.addressList.increment() {\n\t\tcurAddr := b.addressList.currentAddress()\n\t\tsd, ok := b.subConns.Get(curAddr)\n\t\tif !ok {\n\t\t\tvar err error\n\t\t\t// We want to assign the new scData to sd from the outer scope,\n\t\t\t// hence we can't use := below.\n\t\t\tsd, err = b.newSCData(curAddr)\n\t\t\tif err != nil {\n\t\t\t\t// This should never happen, unless the clientConn is being shut\n\t\t\t\t// down.\n\t\t\t\tif b.logger.V(2) {\n\t\t\t\t\tb.logger.Infof(\"Failed to create a subConn for address %v: %v\", curAddr.String(), err)\n\t\t\t\t}\n\t\t\t\t// Do nothing, the LB policy will be closed soon.\n\t\t\t\treturn\n\t\t\t}\n\t\t\tb.subConns.Set(curAddr, sd)\n\t\t}\n\n\t\tswitch sd.rawConnectivityState {\n\t\tcase connectivity.Idle:\n\t\t\tsd.subConn.Connect()\n\t\t\tb.scheduleNextConnectionLocked()\n\t\t\treturn\n\t\tcase connectivity.TransientFailure:\n\t\t\t// The SubConn is being re-used and failed during a previous pass\n\t\t\t// over the addressList. It has not completed backoff yet.\n\t\t\t// Mark it as having failed and try the next address.\n\t\t\tsd.connectionFailedInFirstPass = true\n\t\t\tlastErr = sd.lastErr\n\t\t\tcontinue\n\t\tcase connectivity.Connecting:\n\t\t\t// Wait for the connection attempt to complete or the timer to fire\n\t\t\t// before attempting the next address.\n\t\t\tb.scheduleNextConnectionLocked()\n\t\t\treturn\n\t\tdefault:\n\t\t\tb.logger.Errorf(\"SubConn with unexpected state %v present in SubConns map.\", sd.rawConnectivityState)\n\t\t\treturn\n\n\t\t}\n\t}\n\n\t// All the remaining addresses in the list are in TRANSIENT_FAILURE, end the\n\t// first pass if possible.\n\tb.endFirstPassIfPossibleLocked(lastErr)\n}\n\nfunc (b *pickfirstBalancer) scheduleNextConnectionLocked() {\n\tb.cancelConnectionTimer()\n\tif !b.addressList.hasNext() {\n\t\treturn\n\t}\n\tcurAddr := b.addressList.currentAddress()\n\tcancelled := false // Access to this is protected by the balancer's mutex.\n\tcloseFn := internal.TimeAfterFunc(connectionDelayInterval, func() {\n\t\tb.mu.Lock()\n\t\tdefer b.mu.Unlock()\n\t\t// If the scheduled task is cancelled while acquiring the mutex, return.\n\t\tif cancelled {\n\t\t\treturn\n\t\t}\n\t\tif b.logger.V(2) {\n\t\t\tb.logger.Infof(\"Happy Eyeballs timer expired while waiting for connection to %q.\", curAddr.Addr)\n\t\t}\n\t\tif b.addressList.increment() {\n\t\t\tb.requestConnectionLocked()\n\t\t}\n\t})\n\t// Access to the cancellation callback held by the balancer is guarded by\n\t// the balancer's mutex, so it's safe to set the boolean from the callback.\n\tb.cancelConnectionTimer = sync.OnceFunc(func() {\n\t\tcancelled = true\n\t\tcloseFn()\n\t})\n}\n\nfunc (b *pickfirstBalancer) updateSubConnState(sd *scData, newState balancer.SubConnState) {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\toldState := sd.rawConnectivityState\n\tsd.rawConnectivityState = newState.ConnectivityState\n\t// Previously relevant SubConns can still callback with state updates.\n\t// To prevent pickers from returning these obsolete SubConns, this logic\n\t// is included to check if the current list of active SubConns includes this\n\t// SubConn.\n\tif !b.isActiveSCData(sd) {\n\t\treturn\n\t}\n\tif newState.ConnectivityState == connectivity.Shutdown {\n\t\tsd.effectiveState = connectivity.Shutdown\n\t\treturn\n\t}\n\n\t// Record a connection attempt when exiting CONNECTING.\n\tif newState.ConnectivityState == connectivity.TransientFailure {\n\t\tsd.connectionFailedInFirstPass = true\n\t\tconnectionAttemptsFailedMetric.Record(b.metricsRecorder, 1, b.target)\n\t}\n\n\tif newState.ConnectivityState == connectivity.Ready {\n\t\tconnectionAttemptsSucceededMetric.Record(b.metricsRecorder, 1, b.target)\n\t\tb.shutdownRemainingLocked(sd)\n\t\tif !b.addressList.seekTo(sd.addr) {\n\t\t\t// This should not fail as we should have only one SubConn after\n\t\t\t// entering READY. The SubConn should be present in the addressList.\n\t\t\tb.logger.Errorf(\"Address %q not found address list in %v\", sd.addr, b.addressList.addresses)\n\t\t\treturn\n\t\t}\n\t\tif !b.healthCheckingEnabled {\n\t\t\tif b.logger.V(2) {\n\t\t\t\tb.logger.Infof(\"SubConn %p reported connectivity state READY and the health listener is disabled. Transitioning SubConn to READY.\", sd.subConn)\n\t\t\t}\n\n\t\t\tsd.effectiveState = connectivity.Ready\n\t\t\tb.updateBalancerState(balancer.State{\n\t\t\t\tConnectivityState: connectivity.Ready,\n\t\t\t\tPicker:            &picker{result: balancer.PickResult{SubConn: sd.subConn}},\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t\tif b.logger.V(2) {\n\t\t\tb.logger.Infof(\"SubConn %p reported connectivity state READY. Registering health listener.\", sd.subConn)\n\t\t}\n\t\t// Send a CONNECTING update to take the SubConn out of sticky-TF if\n\t\t// required.\n\t\tsd.effectiveState = connectivity.Connecting\n\t\tb.updateBalancerState(balancer.State{\n\t\t\tConnectivityState: connectivity.Connecting,\n\t\t\tPicker:            &picker{err: balancer.ErrNoSubConnAvailable},\n\t\t})\n\t\tsd.subConn.RegisterHealthListener(func(scs balancer.SubConnState) {\n\t\t\tb.updateSubConnHealthState(sd, scs)\n\t\t})\n\t\treturn\n\t}\n\n\t// If the LB policy is READY, and it receives a subchannel state change,\n\t// it means that the READY subchannel has failed.\n\t// A SubConn can also transition from CONNECTING directly to IDLE when\n\t// a transport is successfully created, but the connection fails\n\t// before the SubConn can send the notification for READY. We treat\n\t// this as a successful connection and transition to IDLE.\n\t// TODO: https://github.com/grpc/grpc-go/issues/7862 - Remove the second\n\t// part of the if condition below once the issue is fixed.\n\tif oldState == connectivity.Ready || (oldState == connectivity.Connecting && newState.ConnectivityState == connectivity.Idle) {\n\t\t// Once a transport fails, the balancer enters IDLE and starts from\n\t\t// the first address when the picker is used.\n\t\tb.shutdownRemainingLocked(sd)\n\t\tsd.effectiveState = newState.ConnectivityState\n\t\t// READY SubConn interspliced in between CONNECTING and IDLE, need to\n\t\t// account for that.\n\t\tif oldState == connectivity.Connecting {\n\t\t\t// A known issue (https://github.com/grpc/grpc-go/issues/7862)\n\t\t\t// causes a race that prevents the READY state change notification.\n\t\t\t// This works around it.\n\t\t\tconnectionAttemptsSucceededMetric.Record(b.metricsRecorder, 1, b.target)\n\t\t}\n\t\tdisconnectionsMetric.Record(b.metricsRecorder, 1, b.target)\n\t\tb.addressList.reset()\n\t\tb.updateBalancerState(balancer.State{\n\t\t\tConnectivityState: connectivity.Idle,\n\t\t\tPicker:            &idlePicker{exitIdle: sync.OnceFunc(b.ExitIdle)},\n\t\t})\n\t\treturn\n\t}\n\n\tif b.firstPass {\n\t\tswitch newState.ConnectivityState {\n\t\tcase connectivity.Connecting:\n\t\t\t// The effective state can be in either IDLE, CONNECTING or\n\t\t\t// TRANSIENT_FAILURE. If it's  TRANSIENT_FAILURE, stay in\n\t\t\t// TRANSIENT_FAILURE until it's READY. See A62.\n\t\t\tif sd.effectiveState != connectivity.TransientFailure {\n\t\t\t\tsd.effectiveState = connectivity.Connecting\n\t\t\t\tb.updateBalancerState(balancer.State{\n\t\t\t\t\tConnectivityState: connectivity.Connecting,\n\t\t\t\t\tPicker:            &picker{err: balancer.ErrNoSubConnAvailable},\n\t\t\t\t})\n\t\t\t}\n\t\tcase connectivity.TransientFailure:\n\t\t\tsd.lastErr = newState.ConnectionError\n\t\t\tsd.effectiveState = connectivity.TransientFailure\n\t\t\t// Since we're re-using common SubConns while handling resolver\n\t\t\t// updates, we could receive an out of turn TRANSIENT_FAILURE from\n\t\t\t// a pass over the previous address list. Happy Eyeballs will also\n\t\t\t// cause out of order updates to arrive.\n\n\t\t\tif curAddr := b.addressList.currentAddress(); equalAddressIgnoringBalAttributes(&curAddr, &sd.addr) {\n\t\t\t\tb.cancelConnectionTimer()\n\t\t\t\tif b.addressList.increment() {\n\t\t\t\t\tb.requestConnectionLocked()\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// End the first pass if we've seen a TRANSIENT_FAILURE from all\n\t\t\t// SubConns once.\n\t\t\tb.endFirstPassIfPossibleLocked(newState.ConnectionError)\n\t\t}\n\t\treturn\n\t}\n\n\t// We have finished the first pass, keep re-connecting failing SubConns.\n\tswitch newState.ConnectivityState {\n\tcase connectivity.TransientFailure:\n\t\tb.numTF = (b.numTF + 1) % b.subConns.Len()\n\t\tsd.lastErr = newState.ConnectionError\n\t\tif b.numTF%b.subConns.Len() == 0 {\n\t\t\tb.updateBalancerState(balancer.State{\n\t\t\t\tConnectivityState: connectivity.TransientFailure,\n\t\t\t\tPicker:            &picker{err: newState.ConnectionError},\n\t\t\t})\n\t\t}\n\t\t// We don't need to request re-resolution since the SubConn already\n\t\t// does that before reporting TRANSIENT_FAILURE.\n\t\t// TODO: #7534 - Move re-resolution requests from SubConn into\n\t\t// pick_first.\n\tcase connectivity.Idle:\n\t\tsd.subConn.Connect()\n\t}\n}\n\n// endFirstPassIfPossibleLocked ends the first happy-eyeballs pass if all the\n// addresses are tried and their SubConns have reported a failure.\nfunc (b *pickfirstBalancer) endFirstPassIfPossibleLocked(lastErr error) {\n\t// An optimization to avoid iterating over the entire SubConn map.\n\tif b.addressList.isValid() {\n\t\treturn\n\t}\n\t// Connect() has been called on all the SubConns. The first pass can be\n\t// ended if all the SubConns have reported a failure.\n\tfor _, sd := range b.subConns.All() {\n\t\tif !sd.connectionFailedInFirstPass {\n\t\t\treturn\n\t\t}\n\t}\n\tb.firstPass = false\n\tb.updateBalancerState(balancer.State{\n\t\tConnectivityState: connectivity.TransientFailure,\n\t\tPicker:            &picker{err: lastErr},\n\t})\n\t// Start re-connecting all the SubConns that are already in IDLE.\n\tfor _, sd := range b.subConns.All() {\n\t\tif sd.rawConnectivityState == connectivity.Idle {\n\t\t\tsd.subConn.Connect()\n\t\t}\n\t}\n}\n\nfunc (b *pickfirstBalancer) isActiveSCData(sd *scData) bool {\n\tactiveSD, found := b.subConns.Get(sd.addr)\n\treturn found && activeSD == sd\n}\n\nfunc (b *pickfirstBalancer) updateSubConnHealthState(sd *scData, state balancer.SubConnState) {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\t// Previously relevant SubConns can still callback with state updates.\n\t// To prevent pickers from returning these obsolete SubConns, this logic\n\t// is included to check if the current list of active SubConns includes\n\t// this SubConn.\n\tif !b.isActiveSCData(sd) {\n\t\treturn\n\t}\n\tsd.effectiveState = state.ConnectivityState\n\tswitch state.ConnectivityState {\n\tcase connectivity.Ready:\n\t\tb.updateBalancerState(balancer.State{\n\t\t\tConnectivityState: connectivity.Ready,\n\t\t\tPicker:            &picker{result: balancer.PickResult{SubConn: sd.subConn}},\n\t\t})\n\tcase connectivity.TransientFailure:\n\t\tb.updateBalancerState(balancer.State{\n\t\t\tConnectivityState: connectivity.TransientFailure,\n\t\t\tPicker:            &picker{err: fmt.Errorf(\"pickfirst: health check failure: %v\", state.ConnectionError)},\n\t\t})\n\tcase connectivity.Connecting:\n\t\tb.updateBalancerState(balancer.State{\n\t\t\tConnectivityState: connectivity.Connecting,\n\t\t\tPicker:            &picker{err: balancer.ErrNoSubConnAvailable},\n\t\t})\n\tdefault:\n\t\tb.logger.Errorf(\"Got unexpected health update for SubConn %p: %v\", state)\n\t}\n}\n\n// updateBalancerState stores the state reported to the channel and calls\n// ClientConn.UpdateState(). As an optimization, it avoids sending duplicate\n// updates to the channel.\nfunc (b *pickfirstBalancer) updateBalancerState(newState balancer.State) {\n\t// In case of TransientFailures allow the picker to be updated to update\n\t// the connectivity error, in all other cases don't send duplicate state\n\t// updates.\n\tif newState.ConnectivityState == b.state && b.state != connectivity.TransientFailure {\n\t\treturn\n\t}\n\tb.forceUpdateConcludedStateLocked(newState)\n}\n\n// forceUpdateConcludedStateLocked stores the state reported to the channel and\n// calls ClientConn.UpdateState().\n// A separate function is defined to force update the ClientConn state since the\n// channel doesn't correctly assume that LB policies start in CONNECTING and\n// relies on LB policy to send an initial CONNECTING update.\nfunc (b *pickfirstBalancer) forceUpdateConcludedStateLocked(newState balancer.State) {\n\tb.state = newState.ConnectivityState\n\tb.cc.UpdateState(newState)\n}\n\ntype picker struct {\n\tresult balancer.PickResult\n\terr    error\n}\n\nfunc (p *picker) Pick(balancer.PickInfo) (balancer.PickResult, error) {\n\treturn p.result, p.err\n}\n\n// idlePicker is used when the SubConn is IDLE and kicks the SubConn into\n// CONNECTING when Pick is called.\ntype idlePicker struct {\n\texitIdle func()\n}\n\nfunc (i *idlePicker) Pick(balancer.PickInfo) (balancer.PickResult, error) {\n\ti.exitIdle()\n\treturn balancer.PickResult{}, balancer.ErrNoSubConnAvailable\n}\n\n// addressList manages sequentially iterating over addresses present in a list\n// of endpoints. It provides a 1 dimensional view of the addresses present in\n// the endpoints.\n// This type is not safe for concurrent access.\ntype addressList struct {\n\taddresses []resolver.Address\n\tidx       int\n}\n\nfunc (al *addressList) isValid() bool {\n\treturn al.idx < len(al.addresses)\n}\n\nfunc (al *addressList) size() int {\n\treturn len(al.addresses)\n}\n\n// increment moves to the next index in the address list.\n// This method returns false if it went off the list, true otherwise.\nfunc (al *addressList) increment() bool {\n\tif !al.isValid() {\n\t\treturn false\n\t}\n\tal.idx++\n\treturn al.idx < len(al.addresses)\n}\n\n// currentAddress returns the current address pointed to in the addressList.\n// If the list is in an invalid state, it returns an empty address instead.\nfunc (al *addressList) currentAddress() resolver.Address {\n\tif !al.isValid() {\n\t\treturn resolver.Address{}\n\t}\n\treturn al.addresses[al.idx]\n}\n\nfunc (al *addressList) reset() {\n\tal.idx = 0\n}\n\nfunc (al *addressList) updateAddrs(addrs []resolver.Address) {\n\tal.addresses = addrs\n\tal.reset()\n}\n\n// seekTo returns false if the needle was not found and the current index was\n// left unchanged.\nfunc (al *addressList) seekTo(needle resolver.Address) bool {\n\tfor ai, addr := range al.addresses {\n\t\tif !equalAddressIgnoringBalAttributes(&addr, &needle) {\n\t\t\tcontinue\n\t\t}\n\t\tal.idx = ai\n\t\treturn true\n\t}\n\treturn false\n}\n\n// hasNext returns whether incrementing the addressList will result in moving\n// past the end of the list. If the list has already moved past the end, it\n// returns false.\nfunc (al *addressList) hasNext() bool {\n\tif !al.isValid() {\n\t\treturn false\n\t}\n\treturn al.idx+1 < len(al.addresses)\n}\n\n// equalAddressIgnoringBalAttributes returns true is a and b are considered\n// equal. This is different from the Equal method on the resolver.Address type\n// which considers all fields to determine equality. Here, we only consider\n// fields that are meaningful to the SubConn.\nfunc equalAddressIgnoringBalAttributes(a, b *resolver.Address) bool {\n\treturn a.Addr == b.Addr && a.ServerName == b.ServerName &&\n\t\ta.Attributes.Equal(b.Attributes)\n}\n\n// weightAttribute is a convenience function which returns the value of the\n// weight endpoint Attribute.\n//\n// When used in the xDS context, the weight attribute is guaranteed to be\n// non-zero. But, when used in a non-xDS context, the weight attribute could be\n// unset. A Default of 1 is used in the latter case.\nfunc weightAttribute(e resolver.Endpoint) uint32 {\n\tw := weight.FromEndpoint(e).Weight\n\tif w == 0 {\n\t\treturn 1\n\t}\n\treturn w\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package roundrobin defines a roundrobin balancer. Roundrobin balancer is\n// installed as one of the default balancers in gRPC, users don't need to\n// explicitly install this balancer.\npackage roundrobin\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/balancer/endpointsharding\"\n\t\"google.golang.org/grpc/balancer/pickfirst\"\n\t\"google.golang.org/grpc/grpclog\"\n\tinternalgrpclog \"google.golang.org/grpc/internal/grpclog\"\n)\n\n// Name is the name of round_robin balancer.\nconst Name = \"round_robin\"\n\nvar logger = grpclog.Component(\"roundrobin\")\n\nfunc init() {\n\tbalancer.Register(builder{})\n}\n\ntype builder struct{}\n\nfunc (bb builder) Name() string {\n\treturn Name\n}\n\nfunc (bb builder) Build(cc balancer.ClientConn, opts balancer.BuildOptions) balancer.Balancer {\n\tchildBuilder := balancer.Get(pickfirst.Name).Build\n\tbal := &rrBalancer{\n\t\tcc:       cc,\n\t\tBalancer: endpointsharding.NewBalancer(cc, opts, childBuilder, endpointsharding.Options{}),\n\t}\n\tbal.logger = internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(\"[%p] \", bal))\n\tbal.logger.Infof(\"Created\")\n\treturn bal\n}\n\ntype rrBalancer struct {\n\tbalancer.Balancer\n\tcc     balancer.ClientConn\n\tlogger *internalgrpclog.PrefixLogger\n}\n\nfunc (b *rrBalancer) UpdateClientConnState(ccs balancer.ClientConnState) error {\n\treturn b.Balancer.UpdateClientConnState(balancer.ClientConnState{\n\t\t// Enable the health listener in pickfirst children for client side health\n\t\t// checks and outlier detection, if configured.\n\t\tResolverState: pickfirst.EnableHealthListener(ccs.ResolverState),\n\t})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/subconn.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage balancer\n\nimport (\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\n// A SubConn represents a single connection to a gRPC backend service.\n//\n// All SubConns start in IDLE, and will not try to connect. To trigger a\n// connection attempt, Balancers must call Connect.\n//\n// If the connection attempt fails, the SubConn will transition to\n// TRANSIENT_FAILURE for a backoff period, and then return to IDLE.  If the\n// connection attempt succeeds, it will transition to READY.\n//\n// If a READY SubConn becomes disconnected, the SubConn will transition to IDLE.\n//\n// If a connection re-enters IDLE, Balancers must call Connect again to trigger\n// a new connection attempt.\n//\n// Each SubConn contains a list of addresses.  gRPC will try to connect to the\n// addresses in sequence, and stop trying the remainder once the first\n// connection is successful.  However, this behavior is deprecated.  SubConns\n// should only use a single address.\n//\n// NOTICE: This interface is intended to be implemented by gRPC, or intercepted\n// by custom load balancing polices.  Users should not need their own complete\n// implementation of this interface -- they should always delegate to a SubConn\n// returned by ClientConn.NewSubConn() by embedding it in their implementations.\n// An embedded SubConn must never be nil, or runtime panics will occur.\ntype SubConn interface {\n\t// UpdateAddresses updates the addresses used in this SubConn.\n\t// gRPC checks if currently-connected address is still in the new list.\n\t// If it's in the list, the connection will be kept.\n\t// If it's not in the list, the connection will gracefully close, and\n\t// a new connection will be created.\n\t//\n\t// This will trigger a state transition for the SubConn.\n\t//\n\t// Deprecated: this method will be removed.  Create new SubConns for new\n\t// addresses instead.\n\tUpdateAddresses([]resolver.Address)\n\t// Connect starts the connecting for this SubConn.\n\tConnect()\n\t// GetOrBuildProducer returns a reference to the existing Producer for this\n\t// ProducerBuilder in this SubConn, or, if one does not currently exist,\n\t// creates a new one and returns it.  Returns a close function which may be\n\t// called when the Producer is no longer needed.  Otherwise the producer\n\t// will automatically be closed upon connection loss or subchannel close.\n\t// Should only be called on a SubConn in state Ready.  Otherwise the\n\t// producer will be unable to create streams.\n\tGetOrBuildProducer(ProducerBuilder) (p Producer, close func())\n\t// Shutdown shuts down the SubConn gracefully.  Any started RPCs will be\n\t// allowed to complete.  No future calls should be made on the SubConn.\n\t// One final state update will be delivered to the StateListener (or\n\t// UpdateSubConnState; deprecated) with ConnectivityState of Shutdown to\n\t// indicate the shutdown operation.  This may be delivered before\n\t// in-progress RPCs are complete and the actual connection is closed.\n\tShutdown()\n\t// RegisterHealthListener registers a health listener that receives health\n\t// updates for a Ready SubConn. Only one health listener can be registered\n\t// at a time. A health listener should be registered each time the SubConn's\n\t// connectivity state changes to READY. Registering a health listener when\n\t// the connectivity state is not READY may result in undefined behaviour.\n\t// This method must not be called synchronously while handling an update\n\t// from a previously registered health listener.\n\tRegisterHealthListener(func(SubConnState))\n\t// EnforceSubConnEmbedding is included to force implementers to embed\n\t// another implementation of this interface, allowing gRPC to add methods\n\t// without breaking users.\n\tinternal.EnforceSubConnEmbedding\n}\n\n// A ProducerBuilder is a simple constructor for a Producer.  It is used by the\n// SubConn to create producers when needed.\ntype ProducerBuilder interface {\n\t// Build creates a Producer.  The first parameter is always a\n\t// grpc.ClientConnInterface (a type to allow creating RPCs/streams on the\n\t// associated SubConn), but is declared as `any` to avoid a dependency\n\t// cycle.  Build also returns a close function that will be called when all\n\t// references to the Producer have been given up for a SubConn, or when a\n\t// connectivity state change occurs on the SubConn.  The close function\n\t// should always block until all asynchronous cleanup work is completed.\n\tBuild(grpcClientConnInterface any) (p Producer, close func())\n}\n\n// SubConnState describes the state of a SubConn.\ntype SubConnState struct {\n\t// ConnectivityState is the connectivity state of the SubConn.\n\tConnectivityState connectivity.State\n\t// ConnectionError is set if the ConnectivityState is TransientFailure,\n\t// describing the reason the SubConn failed.  Otherwise, it is nil.\n\tConnectionError error\n}\n\n// A Producer is a type shared among potentially many consumers.  It is\n// associated with a SubConn, and an implementation will typically contain\n// other methods to provide additional functionality, e.g. configuration or\n// subscription registration.\ntype Producer any\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer_wrapper.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"sync\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/experimental/stats\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/internal/balancer/gracefulswitch\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\t\"google.golang.org/grpc/internal/grpcsync\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/status\"\n)\n\nvar (\n\t// noOpRegisterHealthListenerFn is used when client side health checking is\n\t// disabled. It sends a single READY update on the registered listener.\n\tnoOpRegisterHealthListenerFn = func(_ context.Context, listener func(balancer.SubConnState)) func() {\n\t\tlistener(balancer.SubConnState{ConnectivityState: connectivity.Ready})\n\t\treturn func() {}\n\t}\n)\n\n// ccBalancerWrapper sits between the ClientConn and the Balancer.\n//\n// ccBalancerWrapper implements methods corresponding to the ones on the\n// balancer.Balancer interface. The ClientConn is free to call these methods\n// concurrently and the ccBalancerWrapper ensures that calls from the ClientConn\n// to the Balancer happen in order by performing them in the serializer, without\n// any mutexes held.\n//\n// ccBalancerWrapper also implements the balancer.ClientConn interface and is\n// passed to the Balancer implementations. It invokes unexported methods on the\n// ClientConn to handle these calls from the Balancer.\n//\n// It uses the gracefulswitch.Balancer internally to ensure that balancer\n// switches happen in a graceful manner.\ntype ccBalancerWrapper struct {\n\tinternal.EnforceClientConnEmbedding\n\t// The following fields are initialized when the wrapper is created and are\n\t// read-only afterwards, and therefore can be accessed without a mutex.\n\tcc               *ClientConn\n\topts             balancer.BuildOptions\n\tserializer       *grpcsync.CallbackSerializer\n\tserializerCancel context.CancelFunc\n\n\t// The following fields are only accessed within the serializer or during\n\t// initialization.\n\tcurBalancerName string\n\tbalancer        *gracefulswitch.Balancer\n\n\t// The following field is protected by mu.  Caller must take cc.mu before\n\t// taking mu.\n\tmu     sync.Mutex\n\tclosed bool\n}\n\n// newCCBalancerWrapper creates a new balancer wrapper in idle state. The\n// underlying balancer is not created until the updateClientConnState() method\n// is invoked.\nfunc newCCBalancerWrapper(cc *ClientConn) *ccBalancerWrapper {\n\tctx, cancel := context.WithCancel(cc.ctx)\n\tccb := &ccBalancerWrapper{\n\t\tcc: cc,\n\t\topts: balancer.BuildOptions{\n\t\t\tDialCreds:       cc.dopts.copts.TransportCredentials,\n\t\t\tCredsBundle:     cc.dopts.copts.CredsBundle,\n\t\t\tDialer:          cc.dopts.copts.Dialer,\n\t\t\tAuthority:       cc.authority,\n\t\t\tCustomUserAgent: cc.dopts.copts.UserAgent,\n\t\t\tChannelzParent:  cc.channelz,\n\t\t\tTarget:          cc.parsedTarget,\n\t\t},\n\t\tserializer:       grpcsync.NewCallbackSerializer(ctx),\n\t\tserializerCancel: cancel,\n\t}\n\tccb.balancer = gracefulswitch.NewBalancer(ccb, ccb.opts)\n\treturn ccb\n}\n\nfunc (ccb *ccBalancerWrapper) MetricsRecorder() stats.MetricsRecorder {\n\treturn ccb.cc.metricsRecorderList\n}\n\n// updateClientConnState is invoked by grpc to push a ClientConnState update to\n// the underlying balancer.  This is always executed from the serializer, so\n// it is safe to call into the balancer here.\nfunc (ccb *ccBalancerWrapper) updateClientConnState(ccs *balancer.ClientConnState) error {\n\terrCh := make(chan error)\n\tuccs := func(ctx context.Context) {\n\t\tdefer close(errCh)\n\t\tif ctx.Err() != nil || ccb.balancer == nil {\n\t\t\treturn\n\t\t}\n\t\tname := gracefulswitch.ChildName(ccs.BalancerConfig)\n\t\tif ccb.curBalancerName != name {\n\t\t\tccb.curBalancerName = name\n\t\t\tchannelz.Infof(logger, ccb.cc.channelz, \"Channel switches to new LB policy %q\", name)\n\t\t}\n\t\terr := ccb.balancer.UpdateClientConnState(*ccs)\n\t\tif logger.V(2) && err != nil {\n\t\t\tlogger.Infof(\"error from balancer.UpdateClientConnState: %v\", err)\n\t\t}\n\t\terrCh <- err\n\t}\n\tonFailure := func() { close(errCh) }\n\n\t// UpdateClientConnState can race with Close, and when the latter wins, the\n\t// serializer is closed, and the attempt to schedule the callback will fail.\n\t// It is acceptable to ignore this failure. But since we want to handle the\n\t// state update in a blocking fashion (when we successfully schedule the\n\t// callback), we have to use the ScheduleOr method and not the MaybeSchedule\n\t// method on the serializer.\n\tccb.serializer.ScheduleOr(uccs, onFailure)\n\treturn <-errCh\n}\n\n// resolverError is invoked by grpc to push a resolver error to the underlying\n// balancer.  The call to the balancer is executed from the serializer.\nfunc (ccb *ccBalancerWrapper) resolverError(err error) {\n\tccb.serializer.TrySchedule(func(ctx context.Context) {\n\t\tif ctx.Err() != nil || ccb.balancer == nil {\n\t\t\treturn\n\t\t}\n\t\tccb.balancer.ResolverError(err)\n\t})\n}\n\n// close initiates async shutdown of the wrapper.  cc.mu must be held when\n// calling this function.  To determine the wrapper has finished shutting down,\n// the channel should block on ccb.serializer.Done() without cc.mu held.\nfunc (ccb *ccBalancerWrapper) close() {\n\tccb.mu.Lock()\n\tccb.closed = true\n\tccb.mu.Unlock()\n\tchannelz.Info(logger, ccb.cc.channelz, \"ccBalancerWrapper: closing\")\n\tccb.serializer.TrySchedule(func(context.Context) {\n\t\tif ccb.balancer == nil {\n\t\t\treturn\n\t\t}\n\t\tccb.balancer.Close()\n\t\tccb.balancer = nil\n\t})\n\tccb.serializerCancel()\n}\n\n// exitIdle invokes the balancer's exitIdle method in the serializer.\nfunc (ccb *ccBalancerWrapper) exitIdle() {\n\tccb.serializer.TrySchedule(func(ctx context.Context) {\n\t\tif ctx.Err() != nil || ccb.balancer == nil {\n\t\t\treturn\n\t\t}\n\t\tccb.balancer.ExitIdle()\n\t})\n}\n\nfunc (ccb *ccBalancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (balancer.SubConn, error) {\n\tccb.cc.mu.Lock()\n\tdefer ccb.cc.mu.Unlock()\n\n\tccb.mu.Lock()\n\tif ccb.closed {\n\t\tccb.mu.Unlock()\n\t\treturn nil, fmt.Errorf(\"balancer is being closed; no new SubConns allowed\")\n\t}\n\tccb.mu.Unlock()\n\n\tif len(addrs) == 0 {\n\t\treturn nil, fmt.Errorf(\"grpc: cannot create SubConn with empty address list\")\n\t}\n\tac, err := ccb.cc.newAddrConnLocked(addrs, opts)\n\tif err != nil {\n\t\tchannelz.Warningf(logger, ccb.cc.channelz, \"acBalancerWrapper: NewSubConn: failed to newAddrConn: %v\", err)\n\t\treturn nil, err\n\t}\n\tacbw := &acBalancerWrapper{\n\t\tccb:           ccb,\n\t\tac:            ac,\n\t\tproducers:     make(map[balancer.ProducerBuilder]*refCountedProducer),\n\t\tstateListener: opts.StateListener,\n\t\thealthData:    newHealthData(connectivity.Idle),\n\t}\n\tac.acbw = acbw\n\treturn acbw, nil\n}\n\nfunc (ccb *ccBalancerWrapper) RemoveSubConn(balancer.SubConn) {\n\t// The graceful switch balancer will never call this.\n\tlogger.Errorf(\"ccb RemoveSubConn(%v) called unexpectedly, sc\")\n}\n\nfunc (ccb *ccBalancerWrapper) UpdateAddresses(sc balancer.SubConn, addrs []resolver.Address) {\n\tacbw, ok := sc.(*acBalancerWrapper)\n\tif !ok {\n\t\treturn\n\t}\n\tacbw.UpdateAddresses(addrs)\n}\n\nfunc (ccb *ccBalancerWrapper) UpdateState(s balancer.State) {\n\tccb.cc.mu.Lock()\n\tdefer ccb.cc.mu.Unlock()\n\tif ccb.cc.conns == nil {\n\t\t// The CC has been closed; ignore this update.\n\t\treturn\n\t}\n\n\tccb.mu.Lock()\n\tif ccb.closed {\n\t\tccb.mu.Unlock()\n\t\treturn\n\t}\n\tccb.mu.Unlock()\n\t// Update picker before updating state.  Even though the ordering here does\n\t// not matter, it can lead to multiple calls of Pick in the common start-up\n\t// case where we wait for ready and then perform an RPC.  If the picker is\n\t// updated later, we could call the \"connecting\" picker when the state is\n\t// updated, and then call the \"ready\" picker after the picker gets updated.\n\n\t// Note that there is no need to check if the balancer wrapper was closed,\n\t// as we know the graceful switch LB policy will not call cc if it has been\n\t// closed.\n\tccb.cc.pickerWrapper.updatePicker(s.Picker)\n\tccb.cc.csMgr.updateState(s.ConnectivityState)\n}\n\nfunc (ccb *ccBalancerWrapper) ResolveNow(o resolver.ResolveNowOptions) {\n\tccb.cc.mu.RLock()\n\tdefer ccb.cc.mu.RUnlock()\n\n\tccb.mu.Lock()\n\tif ccb.closed {\n\t\tccb.mu.Unlock()\n\t\treturn\n\t}\n\tccb.mu.Unlock()\n\tccb.cc.resolveNowLocked(o)\n}\n\nfunc (ccb *ccBalancerWrapper) Target() string {\n\treturn ccb.cc.target\n}\n\n// acBalancerWrapper is a wrapper on top of ac for balancers.\n// It implements balancer.SubConn interface.\ntype acBalancerWrapper struct {\n\tinternal.EnforceSubConnEmbedding\n\tac            *addrConn          // read-only\n\tccb           *ccBalancerWrapper // read-only\n\tstateListener func(balancer.SubConnState)\n\n\tproducersMu sync.Mutex\n\tproducers   map[balancer.ProducerBuilder]*refCountedProducer\n\n\t// Access to healthData is protected by healthMu.\n\thealthMu sync.Mutex\n\t// healthData is stored as a pointer to detect when the health listener is\n\t// dropped or updated. This is required as closures can't be compared for\n\t// equality.\n\thealthData *healthData\n}\n\n// healthData holds data related to health state reporting.\ntype healthData struct {\n\t// connectivityState stores the most recent connectivity state delivered\n\t// to the LB policy. This is stored to avoid sending updates when the\n\t// SubConn has already exited connectivity state READY.\n\tconnectivityState connectivity.State\n\t// closeHealthProducer stores function to close the ref counted health\n\t// producer. The health producer is automatically closed when the SubConn\n\t// state changes.\n\tcloseHealthProducer func()\n}\n\nfunc newHealthData(s connectivity.State) *healthData {\n\treturn &healthData{\n\t\tconnectivityState:   s,\n\t\tcloseHealthProducer: func() {},\n\t}\n}\n\n// updateState is invoked by grpc to push a subConn state update to the\n// underlying balancer.\nfunc (acbw *acBalancerWrapper) updateState(s connectivity.State, err error) {\n\tacbw.ccb.serializer.TrySchedule(func(ctx context.Context) {\n\t\tif ctx.Err() != nil || acbw.ccb.balancer == nil {\n\t\t\treturn\n\t\t}\n\t\t// Invalidate all producers on any state change.\n\t\tacbw.closeProducers()\n\n\t\t// Even though it is optional for balancers, gracefulswitch ensures\n\t\t// opts.StateListener is set, so this cannot ever be nil.\n\t\t// TODO: delete this comment when UpdateSubConnState is removed.\n\t\tscs := balancer.SubConnState{ConnectivityState: s, ConnectionError: err}\n\t\t// Invalidate the health listener by updating the healthData.\n\t\tacbw.healthMu.Lock()\n\t\t// A race may occur if a health listener is registered soon after the\n\t\t// connectivity state is set but before the stateListener is called.\n\t\t// Two cases may arise:\n\t\t// 1. The new state is not READY: RegisterHealthListener has checks to\n\t\t//    ensure no updates are sent when the connectivity state is not\n\t\t//    READY.\n\t\t// 2. The new state is READY: This means that the old state wasn't Ready.\n\t\t//    The RegisterHealthListener API mentions that a health listener\n\t\t//    must not be registered when a SubConn is not ready to avoid such\n\t\t//    races. When this happens, the LB policy would get health updates\n\t\t//    on the old listener. When the LB policy registers a new listener\n\t\t//    on receiving the connectivity update, the health updates will be\n\t\t//    sent to the new health listener.\n\t\tacbw.healthData = newHealthData(scs.ConnectivityState)\n\t\tacbw.healthMu.Unlock()\n\n\t\tacbw.stateListener(scs)\n\t})\n}\n\nfunc (acbw *acBalancerWrapper) String() string {\n\treturn fmt.Sprintf(\"SubConn(id:%d)\", acbw.ac.channelz.ID)\n}\n\nfunc (acbw *acBalancerWrapper) UpdateAddresses(addrs []resolver.Address) {\n\tacbw.ac.updateAddrs(addrs)\n}\n\nfunc (acbw *acBalancerWrapper) Connect() {\n\tgo acbw.ac.connect()\n}\n\nfunc (acbw *acBalancerWrapper) Shutdown() {\n\tacbw.closeProducers()\n\tacbw.ccb.cc.removeAddrConn(acbw.ac, errConnDrain)\n}\n\n// NewStream begins a streaming RPC on the addrConn.  If the addrConn is not\n// ready, blocks until it is or ctx expires.  Returns an error when the context\n// expires or the addrConn is shut down.\nfunc (acbw *acBalancerWrapper) NewStream(ctx context.Context, desc *StreamDesc, method string, opts ...CallOption) (ClientStream, error) {\n\ttransport := acbw.ac.getReadyTransport()\n\tif transport == nil {\n\t\treturn nil, status.Errorf(codes.Unavailable, \"SubConn state is not Ready\")\n\n\t}\n\treturn newNonRetryClientStream(ctx, desc, method, transport, acbw.ac, opts...)\n}\n\n// Invoke performs a unary RPC.  If the addrConn is not ready, returns\n// errSubConnNotReady.\nfunc (acbw *acBalancerWrapper) Invoke(ctx context.Context, method string, args any, reply any, opts ...CallOption) error {\n\tcs, err := acbw.NewStream(ctx, unaryStreamDesc, method, opts...)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := cs.SendMsg(args); err != nil {\n\t\treturn err\n\t}\n\treturn cs.RecvMsg(reply)\n}\n\ntype refCountedProducer struct {\n\tproducer balancer.Producer\n\trefs     int    // number of current refs to the producer\n\tclose    func() // underlying producer's close function\n}\n\nfunc (acbw *acBalancerWrapper) GetOrBuildProducer(pb balancer.ProducerBuilder) (balancer.Producer, func()) {\n\tacbw.producersMu.Lock()\n\tdefer acbw.producersMu.Unlock()\n\n\t// Look up existing producer from this builder.\n\tpData := acbw.producers[pb]\n\tif pData == nil {\n\t\t// Not found; create a new one and add it to the producers map.\n\t\tp, closeFn := pb.Build(acbw)\n\t\tpData = &refCountedProducer{producer: p, close: closeFn}\n\t\tacbw.producers[pb] = pData\n\t}\n\t// Account for this new reference.\n\tpData.refs++\n\n\t// Return a cleanup function wrapped in a OnceFunc to remove this reference\n\t// and delete the refCountedProducer from the map if the total reference\n\t// count goes to zero.\n\tunref := func() {\n\t\tacbw.producersMu.Lock()\n\t\t// If closeProducers has already closed this producer instance, refs is\n\t\t// set to 0, so the check after decrementing will never pass, and the\n\t\t// producer will not be double-closed.\n\t\tpData.refs--\n\t\tif pData.refs == 0 {\n\t\t\tdefer pData.close() // Run outside the acbw mutex\n\t\t\tdelete(acbw.producers, pb)\n\t\t}\n\t\tacbw.producersMu.Unlock()\n\t}\n\treturn pData.producer, sync.OnceFunc(unref)\n}\n\nfunc (acbw *acBalancerWrapper) closeProducers() {\n\tacbw.producersMu.Lock()\n\tdefer acbw.producersMu.Unlock()\n\tfor pb, pData := range acbw.producers {\n\t\tpData.refs = 0\n\t\tpData.close()\n\t\tdelete(acbw.producers, pb)\n\t}\n}\n\n// healthProducerRegisterFn is a type alias for the health producer's function\n// for registering listeners.\ntype healthProducerRegisterFn = func(context.Context, balancer.SubConn, string, func(balancer.SubConnState)) func()\n\n// healthListenerRegFn returns a function to register a listener for health\n// updates. If client side health checks are disabled, the registered listener\n// will get a single READY (raw connectivity state) update.\n//\n// Client side health checking is enabled when all the following\n// conditions are satisfied:\n// 1. Health checking is not disabled using the dial option.\n// 2. The health package is imported.\n// 3. The health check config is present in the service config.\nfunc (acbw *acBalancerWrapper) healthListenerRegFn() func(context.Context, func(balancer.SubConnState)) func() {\n\tif acbw.ccb.cc.dopts.disableHealthCheck {\n\t\treturn noOpRegisterHealthListenerFn\n\t}\n\tcfg := acbw.ac.cc.healthCheckConfig()\n\tif cfg == nil {\n\t\treturn noOpRegisterHealthListenerFn\n\t}\n\tregHealthLisFn := internal.RegisterClientHealthCheckListener\n\tif regHealthLisFn == nil {\n\t\t// The health package is not imported.\n\t\tchannelz.Error(logger, acbw.ac.channelz, \"Health check is requested but health package is not imported.\")\n\t\treturn noOpRegisterHealthListenerFn\n\t}\n\treturn func(ctx context.Context, listener func(balancer.SubConnState)) func() {\n\t\treturn regHealthLisFn.(healthProducerRegisterFn)(ctx, acbw, cfg.ServiceName, listener)\n\t}\n}\n\n// RegisterHealthListener accepts a health listener from the LB policy. It sends\n// updates to the health listener as long as the SubConn's connectivity state\n// doesn't change and a new health listener is not registered. To invalidate\n// the currently registered health listener, acbw updates the healthData. If a\n// nil listener is registered, the active health listener is dropped.\nfunc (acbw *acBalancerWrapper) RegisterHealthListener(listener func(balancer.SubConnState)) {\n\tacbw.healthMu.Lock()\n\tdefer acbw.healthMu.Unlock()\n\tacbw.healthData.closeHealthProducer()\n\t// listeners should not be registered when the connectivity state\n\t// isn't Ready. This may happen when the balancer registers a listener\n\t// after the connectivityState is updated, but before it is notified\n\t// of the update.\n\tif acbw.healthData.connectivityState != connectivity.Ready {\n\t\treturn\n\t}\n\t// Replace the health data to stop sending updates to any previously\n\t// registered health listeners.\n\thd := newHealthData(connectivity.Ready)\n\tacbw.healthData = hd\n\tif listener == nil {\n\t\treturn\n\t}\n\n\tregisterFn := acbw.healthListenerRegFn()\n\tacbw.ccb.serializer.TrySchedule(func(ctx context.Context) {\n\t\tif ctx.Err() != nil || acbw.ccb.balancer == nil {\n\t\t\treturn\n\t\t}\n\t\t// Don't send updates if a new listener is registered.\n\t\tacbw.healthMu.Lock()\n\t\tdefer acbw.healthMu.Unlock()\n\t\tif acbw.healthData != hd {\n\t\t\treturn\n\t\t}\n\t\t// Serialize the health updates from the health producer with\n\t\t// other calls into the LB policy.\n\t\tlistenerWrapper := func(scs balancer.SubConnState) {\n\t\t\tacbw.ccb.serializer.TrySchedule(func(ctx context.Context) {\n\t\t\t\tif ctx.Err() != nil || acbw.ccb.balancer == nil {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tacbw.healthMu.Lock()\n\t\t\t\tdefer acbw.healthMu.Unlock()\n\t\t\t\tif acbw.healthData != hd {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tlistener(scs)\n\t\t\t})\n\t\t}\n\n\t\thd.closeHealthProducer = registerFn(ctx, listenerWrapper)\n\t})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go",
    "content": "// Copyright 2018 The gRPC Authors\n// All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// The canonical version of this proto can be found at\n// https://github.com/grpc/grpc-proto/blob/master/grpc/binlog/v1/binarylog.proto\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.36.11\n// \tprotoc        v5.27.1\n// source: grpc/binlog/v1/binarylog.proto\n\npackage grpc_binarylog_v1\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Enumerates the type of event\n// Note the terminology is different from the RPC semantics\n// definition, but the same meaning is expressed here.\ntype GrpcLogEntry_EventType int32\n\nconst (\n\tGrpcLogEntry_EVENT_TYPE_UNKNOWN GrpcLogEntry_EventType = 0\n\t// Header sent from client to server\n\tGrpcLogEntry_EVENT_TYPE_CLIENT_HEADER GrpcLogEntry_EventType = 1\n\t// Header sent from server to client\n\tGrpcLogEntry_EVENT_TYPE_SERVER_HEADER GrpcLogEntry_EventType = 2\n\t// Message sent from client to server\n\tGrpcLogEntry_EVENT_TYPE_CLIENT_MESSAGE GrpcLogEntry_EventType = 3\n\t// Message sent from server to client\n\tGrpcLogEntry_EVENT_TYPE_SERVER_MESSAGE GrpcLogEntry_EventType = 4\n\t// A signal that client is done sending\n\tGrpcLogEntry_EVENT_TYPE_CLIENT_HALF_CLOSE GrpcLogEntry_EventType = 5\n\t// Trailer indicates the end of the RPC.\n\t// On client side, this event means a trailer was either received\n\t// from the network or the gRPC library locally generated a status\n\t// to inform the application about a failure.\n\t// On server side, this event means the server application requested\n\t// to send a trailer. Note: EVENT_TYPE_CANCEL may still arrive after\n\t// this due to races on server side.\n\tGrpcLogEntry_EVENT_TYPE_SERVER_TRAILER GrpcLogEntry_EventType = 6\n\t// A signal that the RPC is cancelled. On client side, this\n\t// indicates the client application requests a cancellation.\n\t// On server side, this indicates that cancellation was detected.\n\t// Note: This marks the end of the RPC. Events may arrive after\n\t// this due to races. For example, on client side a trailer\n\t// may arrive even though the application requested to cancel the RPC.\n\tGrpcLogEntry_EVENT_TYPE_CANCEL GrpcLogEntry_EventType = 7\n)\n\n// Enum value maps for GrpcLogEntry_EventType.\nvar (\n\tGrpcLogEntry_EventType_name = map[int32]string{\n\t\t0: \"EVENT_TYPE_UNKNOWN\",\n\t\t1: \"EVENT_TYPE_CLIENT_HEADER\",\n\t\t2: \"EVENT_TYPE_SERVER_HEADER\",\n\t\t3: \"EVENT_TYPE_CLIENT_MESSAGE\",\n\t\t4: \"EVENT_TYPE_SERVER_MESSAGE\",\n\t\t5: \"EVENT_TYPE_CLIENT_HALF_CLOSE\",\n\t\t6: \"EVENT_TYPE_SERVER_TRAILER\",\n\t\t7: \"EVENT_TYPE_CANCEL\",\n\t}\n\tGrpcLogEntry_EventType_value = map[string]int32{\n\t\t\"EVENT_TYPE_UNKNOWN\":           0,\n\t\t\"EVENT_TYPE_CLIENT_HEADER\":     1,\n\t\t\"EVENT_TYPE_SERVER_HEADER\":     2,\n\t\t\"EVENT_TYPE_CLIENT_MESSAGE\":    3,\n\t\t\"EVENT_TYPE_SERVER_MESSAGE\":    4,\n\t\t\"EVENT_TYPE_CLIENT_HALF_CLOSE\": 5,\n\t\t\"EVENT_TYPE_SERVER_TRAILER\":    6,\n\t\t\"EVENT_TYPE_CANCEL\":            7,\n\t}\n)\n\nfunc (x GrpcLogEntry_EventType) Enum() *GrpcLogEntry_EventType {\n\tp := new(GrpcLogEntry_EventType)\n\t*p = x\n\treturn p\n}\n\nfunc (x GrpcLogEntry_EventType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (GrpcLogEntry_EventType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_grpc_binlog_v1_binarylog_proto_enumTypes[0].Descriptor()\n}\n\nfunc (GrpcLogEntry_EventType) Type() protoreflect.EnumType {\n\treturn &file_grpc_binlog_v1_binarylog_proto_enumTypes[0]\n}\n\nfunc (x GrpcLogEntry_EventType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use GrpcLogEntry_EventType.Descriptor instead.\nfunc (GrpcLogEntry_EventType) EnumDescriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0, 0}\n}\n\n// Enumerates the entity that generates the log entry\ntype GrpcLogEntry_Logger int32\n\nconst (\n\tGrpcLogEntry_LOGGER_UNKNOWN GrpcLogEntry_Logger = 0\n\tGrpcLogEntry_LOGGER_CLIENT  GrpcLogEntry_Logger = 1\n\tGrpcLogEntry_LOGGER_SERVER  GrpcLogEntry_Logger = 2\n)\n\n// Enum value maps for GrpcLogEntry_Logger.\nvar (\n\tGrpcLogEntry_Logger_name = map[int32]string{\n\t\t0: \"LOGGER_UNKNOWN\",\n\t\t1: \"LOGGER_CLIENT\",\n\t\t2: \"LOGGER_SERVER\",\n\t}\n\tGrpcLogEntry_Logger_value = map[string]int32{\n\t\t\"LOGGER_UNKNOWN\": 0,\n\t\t\"LOGGER_CLIENT\":  1,\n\t\t\"LOGGER_SERVER\":  2,\n\t}\n)\n\nfunc (x GrpcLogEntry_Logger) Enum() *GrpcLogEntry_Logger {\n\tp := new(GrpcLogEntry_Logger)\n\t*p = x\n\treturn p\n}\n\nfunc (x GrpcLogEntry_Logger) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (GrpcLogEntry_Logger) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_grpc_binlog_v1_binarylog_proto_enumTypes[1].Descriptor()\n}\n\nfunc (GrpcLogEntry_Logger) Type() protoreflect.EnumType {\n\treturn &file_grpc_binlog_v1_binarylog_proto_enumTypes[1]\n}\n\nfunc (x GrpcLogEntry_Logger) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use GrpcLogEntry_Logger.Descriptor instead.\nfunc (GrpcLogEntry_Logger) EnumDescriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0, 1}\n}\n\ntype Address_Type int32\n\nconst (\n\tAddress_TYPE_UNKNOWN Address_Type = 0\n\t// address is in 1.2.3.4 form\n\tAddress_TYPE_IPV4 Address_Type = 1\n\t// address is in IPv6 canonical form (RFC5952 section 4)\n\t// The scope is NOT included in the address string.\n\tAddress_TYPE_IPV6 Address_Type = 2\n\t// address is UDS string\n\tAddress_TYPE_UNIX Address_Type = 3\n)\n\n// Enum value maps for Address_Type.\nvar (\n\tAddress_Type_name = map[int32]string{\n\t\t0: \"TYPE_UNKNOWN\",\n\t\t1: \"TYPE_IPV4\",\n\t\t2: \"TYPE_IPV6\",\n\t\t3: \"TYPE_UNIX\",\n\t}\n\tAddress_Type_value = map[string]int32{\n\t\t\"TYPE_UNKNOWN\": 0,\n\t\t\"TYPE_IPV4\":    1,\n\t\t\"TYPE_IPV6\":    2,\n\t\t\"TYPE_UNIX\":    3,\n\t}\n)\n\nfunc (x Address_Type) Enum() *Address_Type {\n\tp := new(Address_Type)\n\t*p = x\n\treturn p\n}\n\nfunc (x Address_Type) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (Address_Type) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_grpc_binlog_v1_binarylog_proto_enumTypes[2].Descriptor()\n}\n\nfunc (Address_Type) Type() protoreflect.EnumType {\n\treturn &file_grpc_binlog_v1_binarylog_proto_enumTypes[2]\n}\n\nfunc (x Address_Type) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use Address_Type.Descriptor instead.\nfunc (Address_Type) EnumDescriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{7, 0}\n}\n\n// Log entry we store in binary logs\ntype GrpcLogEntry struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The timestamp of the binary log message\n\tTimestamp *timestamppb.Timestamp `protobuf:\"bytes,1,opt,name=timestamp,proto3\" json:\"timestamp,omitempty\"`\n\t// Uniquely identifies a call. The value must not be 0 in order to disambiguate\n\t// from an unset value.\n\t// Each call may have several log entries, they will all have the same call_id.\n\t// Nothing is guaranteed about their value other than they are unique across\n\t// different RPCs in the same gRPC process.\n\tCallId uint64 `protobuf:\"varint,2,opt,name=call_id,json=callId,proto3\" json:\"call_id,omitempty\"`\n\t// The entry sequence id for this call. The first GrpcLogEntry has a\n\t// value of 1, to disambiguate from an unset value. The purpose of\n\t// this field is to detect missing entries in environments where\n\t// durability or ordering is not guaranteed.\n\tSequenceIdWithinCall uint64                 `protobuf:\"varint,3,opt,name=sequence_id_within_call,json=sequenceIdWithinCall,proto3\" json:\"sequence_id_within_call,omitempty\"`\n\tType                 GrpcLogEntry_EventType `protobuf:\"varint,4,opt,name=type,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_EventType\" json:\"type,omitempty\"`\n\tLogger               GrpcLogEntry_Logger    `protobuf:\"varint,5,opt,name=logger,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_Logger\" json:\"logger,omitempty\"` // One of the above Logger enum\n\t// The logger uses one of the following fields to record the payload,\n\t// according to the type of the log entry.\n\t//\n\t// Types that are valid to be assigned to Payload:\n\t//\n\t//\t*GrpcLogEntry_ClientHeader\n\t//\t*GrpcLogEntry_ServerHeader\n\t//\t*GrpcLogEntry_Message\n\t//\t*GrpcLogEntry_Trailer\n\tPayload isGrpcLogEntry_Payload `protobuf_oneof:\"payload\"`\n\t// true if payload does not represent the full message or metadata.\n\tPayloadTruncated bool `protobuf:\"varint,10,opt,name=payload_truncated,json=payloadTruncated,proto3\" json:\"payload_truncated,omitempty\"`\n\t// Peer address information, will only be recorded on the first\n\t// incoming event. On client side, peer is logged on\n\t// EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in\n\t// the case of trailers-only. On server side, peer is always\n\t// logged on EVENT_TYPE_CLIENT_HEADER.\n\tPeer          *Address `protobuf:\"bytes,11,opt,name=peer,proto3\" json:\"peer,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *GrpcLogEntry) Reset() {\n\t*x = GrpcLogEntry{}\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GrpcLogEntry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcLogEntry) ProtoMessage() {}\n\nfunc (x *GrpcLogEntry) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcLogEntry.ProtoReflect.Descriptor instead.\nfunc (*GrpcLogEntry) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *GrpcLogEntry) GetTimestamp() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.Timestamp\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcLogEntry) GetCallId() uint64 {\n\tif x != nil {\n\t\treturn x.CallId\n\t}\n\treturn 0\n}\n\nfunc (x *GrpcLogEntry) GetSequenceIdWithinCall() uint64 {\n\tif x != nil {\n\t\treturn x.SequenceIdWithinCall\n\t}\n\treturn 0\n}\n\nfunc (x *GrpcLogEntry) GetType() GrpcLogEntry_EventType {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn GrpcLogEntry_EVENT_TYPE_UNKNOWN\n}\n\nfunc (x *GrpcLogEntry) GetLogger() GrpcLogEntry_Logger {\n\tif x != nil {\n\t\treturn x.Logger\n\t}\n\treturn GrpcLogEntry_LOGGER_UNKNOWN\n}\n\nfunc (x *GrpcLogEntry) GetPayload() isGrpcLogEntry_Payload {\n\tif x != nil {\n\t\treturn x.Payload\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcLogEntry) GetClientHeader() *ClientHeader {\n\tif x != nil {\n\t\tif x, ok := x.Payload.(*GrpcLogEntry_ClientHeader); ok {\n\t\t\treturn x.ClientHeader\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcLogEntry) GetServerHeader() *ServerHeader {\n\tif x != nil {\n\t\tif x, ok := x.Payload.(*GrpcLogEntry_ServerHeader); ok {\n\t\t\treturn x.ServerHeader\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcLogEntry) GetMessage() *Message {\n\tif x != nil {\n\t\tif x, ok := x.Payload.(*GrpcLogEntry_Message); ok {\n\t\t\treturn x.Message\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcLogEntry) GetTrailer() *Trailer {\n\tif x != nil {\n\t\tif x, ok := x.Payload.(*GrpcLogEntry_Trailer); ok {\n\t\t\treturn x.Trailer\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcLogEntry) GetPayloadTruncated() bool {\n\tif x != nil {\n\t\treturn x.PayloadTruncated\n\t}\n\treturn false\n}\n\nfunc (x *GrpcLogEntry) GetPeer() *Address {\n\tif x != nil {\n\t\treturn x.Peer\n\t}\n\treturn nil\n}\n\ntype isGrpcLogEntry_Payload interface {\n\tisGrpcLogEntry_Payload()\n}\n\ntype GrpcLogEntry_ClientHeader struct {\n\tClientHeader *ClientHeader `protobuf:\"bytes,6,opt,name=client_header,json=clientHeader,proto3,oneof\"`\n}\n\ntype GrpcLogEntry_ServerHeader struct {\n\tServerHeader *ServerHeader `protobuf:\"bytes,7,opt,name=server_header,json=serverHeader,proto3,oneof\"`\n}\n\ntype GrpcLogEntry_Message struct {\n\t// Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE\n\tMessage *Message `protobuf:\"bytes,8,opt,name=message,proto3,oneof\"`\n}\n\ntype GrpcLogEntry_Trailer struct {\n\tTrailer *Trailer `protobuf:\"bytes,9,opt,name=trailer,proto3,oneof\"`\n}\n\nfunc (*GrpcLogEntry_ClientHeader) isGrpcLogEntry_Payload() {}\n\nfunc (*GrpcLogEntry_ServerHeader) isGrpcLogEntry_Payload() {}\n\nfunc (*GrpcLogEntry_Message) isGrpcLogEntry_Payload() {}\n\nfunc (*GrpcLogEntry_Trailer) isGrpcLogEntry_Payload() {}\n\ntype ClientHeader struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// This contains only the metadata from the application.\n\tMetadata *Metadata `protobuf:\"bytes,1,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n\t// The name of the RPC method, which looks something like:\n\t// /<service>/<method>\n\t// Note the leading \"/\" character.\n\tMethodName string `protobuf:\"bytes,2,opt,name=method_name,json=methodName,proto3\" json:\"method_name,omitempty\"`\n\t// A single process may be used to run multiple virtual\n\t// servers with different identities.\n\t// The authority is the name of such a server identity.\n\t// It is typically a portion of the URI in the form of\n\t// <host> or <host>:<port> .\n\tAuthority string `protobuf:\"bytes,3,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n\t// the RPC timeout\n\tTimeout       *durationpb.Duration `protobuf:\"bytes,4,opt,name=timeout,proto3\" json:\"timeout,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ClientHeader) Reset() {\n\t*x = ClientHeader{}\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ClientHeader) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ClientHeader) ProtoMessage() {}\n\nfunc (x *ClientHeader) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ClientHeader.ProtoReflect.Descriptor instead.\nfunc (*ClientHeader) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ClientHeader) GetMetadata() *Metadata {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\nfunc (x *ClientHeader) GetMethodName() string {\n\tif x != nil {\n\t\treturn x.MethodName\n\t}\n\treturn \"\"\n}\n\nfunc (x *ClientHeader) GetAuthority() string {\n\tif x != nil {\n\t\treturn x.Authority\n\t}\n\treturn \"\"\n}\n\nfunc (x *ClientHeader) GetTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Timeout\n\t}\n\treturn nil\n}\n\ntype ServerHeader struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// This contains only the metadata from the application.\n\tMetadata      *Metadata `protobuf:\"bytes,1,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ServerHeader) Reset() {\n\t*x = ServerHeader{}\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ServerHeader) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ServerHeader) ProtoMessage() {}\n\nfunc (x *ServerHeader) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ServerHeader.ProtoReflect.Descriptor instead.\nfunc (*ServerHeader) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *ServerHeader) GetMetadata() *Metadata {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\ntype Trailer struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// This contains only the metadata from the application.\n\tMetadata *Metadata `protobuf:\"bytes,1,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n\t// The gRPC status code.\n\tStatusCode uint32 `protobuf:\"varint,2,opt,name=status_code,json=statusCode,proto3\" json:\"status_code,omitempty\"`\n\t// An original status message before any transport specific\n\t// encoding.\n\tStatusMessage string `protobuf:\"bytes,3,opt,name=status_message,json=statusMessage,proto3\" json:\"status_message,omitempty\"`\n\t// The value of the 'grpc-status-details-bin' metadata key. If\n\t// present, this is always an encoded 'google.rpc.Status' message.\n\tStatusDetails []byte `protobuf:\"bytes,4,opt,name=status_details,json=statusDetails,proto3\" json:\"status_details,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Trailer) Reset() {\n\t*x = Trailer{}\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Trailer) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Trailer) ProtoMessage() {}\n\nfunc (x *Trailer) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Trailer.ProtoReflect.Descriptor instead.\nfunc (*Trailer) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *Trailer) GetMetadata() *Metadata {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\nfunc (x *Trailer) GetStatusCode() uint32 {\n\tif x != nil {\n\t\treturn x.StatusCode\n\t}\n\treturn 0\n}\n\nfunc (x *Trailer) GetStatusMessage() string {\n\tif x != nil {\n\t\treturn x.StatusMessage\n\t}\n\treturn \"\"\n}\n\nfunc (x *Trailer) GetStatusDetails() []byte {\n\tif x != nil {\n\t\treturn x.StatusDetails\n\t}\n\treturn nil\n}\n\n// Message payload, used by CLIENT_MESSAGE and SERVER_MESSAGE\ntype Message struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Length of the message. It may not be the same as the length of the\n\t// data field, as the logging payload can be truncated or omitted.\n\tLength uint32 `protobuf:\"varint,1,opt,name=length,proto3\" json:\"length,omitempty\"`\n\t// May be truncated or omitted.\n\tData          []byte `protobuf:\"bytes,2,opt,name=data,proto3\" json:\"data,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Message) Reset() {\n\t*x = Message{}\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Message) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Message) ProtoMessage() {}\n\nfunc (x *Message) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Message.ProtoReflect.Descriptor instead.\nfunc (*Message) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *Message) GetLength() uint32 {\n\tif x != nil {\n\t\treturn x.Length\n\t}\n\treturn 0\n}\n\nfunc (x *Message) GetData() []byte {\n\tif x != nil {\n\t\treturn x.Data\n\t}\n\treturn nil\n}\n\n// A list of metadata pairs, used in the payload of client header,\n// server header, and server trailer.\n// Implementations may omit some entries to honor the header limits\n// of GRPC_BINARY_LOG_CONFIG.\n//\n// Header keys added by gRPC are omitted. To be more specific,\n// implementations will not log the following entries, and this is\n// not to be treated as a truncation:\n//   - entries handled by grpc that are not user visible, such as those\n//     that begin with 'grpc-' (with exception of grpc-trace-bin)\n//     or keys like 'lb-token'\n//   - transport specific entries, including but not limited to:\n//     ':path', ':authority', 'content-encoding', 'user-agent', 'te', etc\n//   - entries added for call credentials\n//\n// Implementations must always log grpc-trace-bin if it is present.\n// Practically speaking it will only be visible on server side because\n// grpc-trace-bin is managed by low level client side mechanisms\n// inaccessible from the application level. On server side, the\n// header is just a normal metadata key.\n// The pair will not count towards the size limit.\ntype Metadata struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tEntry         []*MetadataEntry       `protobuf:\"bytes,1,rep,name=entry,proto3\" json:\"entry,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Metadata) Reset() {\n\t*x = Metadata{}\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Metadata) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Metadata) ProtoMessage() {}\n\nfunc (x *Metadata) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Metadata.ProtoReflect.Descriptor instead.\nfunc (*Metadata) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *Metadata) GetEntry() []*MetadataEntry {\n\tif x != nil {\n\t\treturn x.Entry\n\t}\n\treturn nil\n}\n\n// A metadata key value pair\ntype MetadataEntry struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tKey           string                 `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\tValue         []byte                 `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *MetadataEntry) Reset() {\n\t*x = MetadataEntry{}\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MetadataEntry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MetadataEntry) ProtoMessage() {}\n\nfunc (x *MetadataEntry) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MetadataEntry.ProtoReflect.Descriptor instead.\nfunc (*MetadataEntry) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *MetadataEntry) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\nfunc (x *MetadataEntry) GetValue() []byte {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\n// Address information\ntype Address struct {\n\tstate   protoimpl.MessageState `protogen:\"open.v1\"`\n\tType    Address_Type           `protobuf:\"varint,1,opt,name=type,proto3,enum=grpc.binarylog.v1.Address_Type\" json:\"type,omitempty\"`\n\tAddress string                 `protobuf:\"bytes,2,opt,name=address,proto3\" json:\"address,omitempty\"`\n\t// only for TYPE_IPV4 and TYPE_IPV6\n\tIpPort        uint32 `protobuf:\"varint,3,opt,name=ip_port,json=ipPort,proto3\" json:\"ip_port,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Address) Reset() {\n\t*x = Address{}\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Address) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Address) ProtoMessage() {}\n\nfunc (x *Address) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Address.ProtoReflect.Descriptor instead.\nfunc (*Address) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *Address) GetType() Address_Type {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn Address_TYPE_UNKNOWN\n}\n\nfunc (x *Address) GetAddress() string {\n\tif x != nil {\n\t\treturn x.Address\n\t}\n\treturn \"\"\n}\n\nfunc (x *Address) GetIpPort() uint32 {\n\tif x != nil {\n\t\treturn x.IpPort\n\t}\n\treturn 0\n}\n\nvar File_grpc_binlog_v1_binarylog_proto protoreflect.FileDescriptor\n\nconst file_grpc_binlog_v1_binarylog_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1egrpc/binlog/v1/binarylog.proto\\x12\\x11grpc.binarylog.v1\\x1a\\x1egoogle/protobuf/duration.proto\\x1a\\x1fgoogle/protobuf/timestamp.proto\\\"\\xbb\\a\\n\" +\n\t\"\\fGrpcLogEntry\\x128\\n\" +\n\t\"\\ttimestamp\\x18\\x01 \\x01(\\v2\\x1a.google.protobuf.TimestampR\\ttimestamp\\x12\\x17\\n\" +\n\t\"\\acall_id\\x18\\x02 \\x01(\\x04R\\x06callId\\x125\\n\" +\n\t\"\\x17sequence_id_within_call\\x18\\x03 \\x01(\\x04R\\x14sequenceIdWithinCall\\x12=\\n\" +\n\t\"\\x04type\\x18\\x04 \\x01(\\x0e2).grpc.binarylog.v1.GrpcLogEntry.EventTypeR\\x04type\\x12>\\n\" +\n\t\"\\x06logger\\x18\\x05 \\x01(\\x0e2&.grpc.binarylog.v1.GrpcLogEntry.LoggerR\\x06logger\\x12F\\n\" +\n\t\"\\rclient_header\\x18\\x06 \\x01(\\v2\\x1f.grpc.binarylog.v1.ClientHeaderH\\x00R\\fclientHeader\\x12F\\n\" +\n\t\"\\rserver_header\\x18\\a \\x01(\\v2\\x1f.grpc.binarylog.v1.ServerHeaderH\\x00R\\fserverHeader\\x126\\n\" +\n\t\"\\amessage\\x18\\b \\x01(\\v2\\x1a.grpc.binarylog.v1.MessageH\\x00R\\amessage\\x126\\n\" +\n\t\"\\atrailer\\x18\\t \\x01(\\v2\\x1a.grpc.binarylog.v1.TrailerH\\x00R\\atrailer\\x12+\\n\" +\n\t\"\\x11payload_truncated\\x18\\n\" +\n\t\" \\x01(\\bR\\x10payloadTruncated\\x12.\\n\" +\n\t\"\\x04peer\\x18\\v \\x01(\\v2\\x1a.grpc.binarylog.v1.AddressR\\x04peer\\\"\\xf5\\x01\\n\" +\n\t\"\\tEventType\\x12\\x16\\n\" +\n\t\"\\x12EVENT_TYPE_UNKNOWN\\x10\\x00\\x12\\x1c\\n\" +\n\t\"\\x18EVENT_TYPE_CLIENT_HEADER\\x10\\x01\\x12\\x1c\\n\" +\n\t\"\\x18EVENT_TYPE_SERVER_HEADER\\x10\\x02\\x12\\x1d\\n\" +\n\t\"\\x19EVENT_TYPE_CLIENT_MESSAGE\\x10\\x03\\x12\\x1d\\n\" +\n\t\"\\x19EVENT_TYPE_SERVER_MESSAGE\\x10\\x04\\x12 \\n\" +\n\t\"\\x1cEVENT_TYPE_CLIENT_HALF_CLOSE\\x10\\x05\\x12\\x1d\\n\" +\n\t\"\\x19EVENT_TYPE_SERVER_TRAILER\\x10\\x06\\x12\\x15\\n\" +\n\t\"\\x11EVENT_TYPE_CANCEL\\x10\\a\\\"B\\n\" +\n\t\"\\x06Logger\\x12\\x12\\n\" +\n\t\"\\x0eLOGGER_UNKNOWN\\x10\\x00\\x12\\x11\\n\" +\n\t\"\\rLOGGER_CLIENT\\x10\\x01\\x12\\x11\\n\" +\n\t\"\\rLOGGER_SERVER\\x10\\x02B\\t\\n\" +\n\t\"\\apayload\\\"\\xbb\\x01\\n\" +\n\t\"\\fClientHeader\\x127\\n\" +\n\t\"\\bmetadata\\x18\\x01 \\x01(\\v2\\x1b.grpc.binarylog.v1.MetadataR\\bmetadata\\x12\\x1f\\n\" +\n\t\"\\vmethod_name\\x18\\x02 \\x01(\\tR\\n\" +\n\t\"methodName\\x12\\x1c\\n\" +\n\t\"\\tauthority\\x18\\x03 \\x01(\\tR\\tauthority\\x123\\n\" +\n\t\"\\atimeout\\x18\\x04 \\x01(\\v2\\x19.google.protobuf.DurationR\\atimeout\\\"G\\n\" +\n\t\"\\fServerHeader\\x127\\n\" +\n\t\"\\bmetadata\\x18\\x01 \\x01(\\v2\\x1b.grpc.binarylog.v1.MetadataR\\bmetadata\\\"\\xb1\\x01\\n\" +\n\t\"\\aTrailer\\x127\\n\" +\n\t\"\\bmetadata\\x18\\x01 \\x01(\\v2\\x1b.grpc.binarylog.v1.MetadataR\\bmetadata\\x12\\x1f\\n\" +\n\t\"\\vstatus_code\\x18\\x02 \\x01(\\rR\\n\" +\n\t\"statusCode\\x12%\\n\" +\n\t\"\\x0estatus_message\\x18\\x03 \\x01(\\tR\\rstatusMessage\\x12%\\n\" +\n\t\"\\x0estatus_details\\x18\\x04 \\x01(\\fR\\rstatusDetails\\\"5\\n\" +\n\t\"\\aMessage\\x12\\x16\\n\" +\n\t\"\\x06length\\x18\\x01 \\x01(\\rR\\x06length\\x12\\x12\\n\" +\n\t\"\\x04data\\x18\\x02 \\x01(\\fR\\x04data\\\"B\\n\" +\n\t\"\\bMetadata\\x126\\n\" +\n\t\"\\x05entry\\x18\\x01 \\x03(\\v2 .grpc.binarylog.v1.MetadataEntryR\\x05entry\\\"7\\n\" +\n\t\"\\rMetadataEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\fR\\x05value\\\"\\xb8\\x01\\n\" +\n\t\"\\aAddress\\x123\\n\" +\n\t\"\\x04type\\x18\\x01 \\x01(\\x0e2\\x1f.grpc.binarylog.v1.Address.TypeR\\x04type\\x12\\x18\\n\" +\n\t\"\\aaddress\\x18\\x02 \\x01(\\tR\\aaddress\\x12\\x17\\n\" +\n\t\"\\aip_port\\x18\\x03 \\x01(\\rR\\x06ipPort\\\"E\\n\" +\n\t\"\\x04Type\\x12\\x10\\n\" +\n\t\"\\fTYPE_UNKNOWN\\x10\\x00\\x12\\r\\n\" +\n\t\"\\tTYPE_IPV4\\x10\\x01\\x12\\r\\n\" +\n\t\"\\tTYPE_IPV6\\x10\\x02\\x12\\r\\n\" +\n\t\"\\tTYPE_UNIX\\x10\\x03B\\\\\\n\" +\n\t\"\\x14io.grpc.binarylog.v1B\\x0eBinaryLogProtoP\\x01Z2google.golang.org/grpc/binarylog/grpc_binarylog_v1b\\x06proto3\"\n\nvar (\n\tfile_grpc_binlog_v1_binarylog_proto_rawDescOnce sync.Once\n\tfile_grpc_binlog_v1_binarylog_proto_rawDescData []byte\n)\n\nfunc file_grpc_binlog_v1_binarylog_proto_rawDescGZIP() []byte {\n\tfile_grpc_binlog_v1_binarylog_proto_rawDescOnce.Do(func() {\n\t\tfile_grpc_binlog_v1_binarylog_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_grpc_binlog_v1_binarylog_proto_rawDesc), len(file_grpc_binlog_v1_binarylog_proto_rawDesc)))\n\t})\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescData\n}\n\nvar file_grpc_binlog_v1_binarylog_proto_enumTypes = make([]protoimpl.EnumInfo, 3)\nvar file_grpc_binlog_v1_binarylog_proto_msgTypes = make([]protoimpl.MessageInfo, 8)\nvar file_grpc_binlog_v1_binarylog_proto_goTypes = []any{\n\t(GrpcLogEntry_EventType)(0),   // 0: grpc.binarylog.v1.GrpcLogEntry.EventType\n\t(GrpcLogEntry_Logger)(0),      // 1: grpc.binarylog.v1.GrpcLogEntry.Logger\n\t(Address_Type)(0),             // 2: grpc.binarylog.v1.Address.Type\n\t(*GrpcLogEntry)(nil),          // 3: grpc.binarylog.v1.GrpcLogEntry\n\t(*ClientHeader)(nil),          // 4: grpc.binarylog.v1.ClientHeader\n\t(*ServerHeader)(nil),          // 5: grpc.binarylog.v1.ServerHeader\n\t(*Trailer)(nil),               // 6: grpc.binarylog.v1.Trailer\n\t(*Message)(nil),               // 7: grpc.binarylog.v1.Message\n\t(*Metadata)(nil),              // 8: grpc.binarylog.v1.Metadata\n\t(*MetadataEntry)(nil),         // 9: grpc.binarylog.v1.MetadataEntry\n\t(*Address)(nil),               // 10: grpc.binarylog.v1.Address\n\t(*timestamppb.Timestamp)(nil), // 11: google.protobuf.Timestamp\n\t(*durationpb.Duration)(nil),   // 12: google.protobuf.Duration\n}\nvar file_grpc_binlog_v1_binarylog_proto_depIdxs = []int32{\n\t11, // 0: grpc.binarylog.v1.GrpcLogEntry.timestamp:type_name -> google.protobuf.Timestamp\n\t0,  // 1: grpc.binarylog.v1.GrpcLogEntry.type:type_name -> grpc.binarylog.v1.GrpcLogEntry.EventType\n\t1,  // 2: grpc.binarylog.v1.GrpcLogEntry.logger:type_name -> grpc.binarylog.v1.GrpcLogEntry.Logger\n\t4,  // 3: grpc.binarylog.v1.GrpcLogEntry.client_header:type_name -> grpc.binarylog.v1.ClientHeader\n\t5,  // 4: grpc.binarylog.v1.GrpcLogEntry.server_header:type_name -> grpc.binarylog.v1.ServerHeader\n\t7,  // 5: grpc.binarylog.v1.GrpcLogEntry.message:type_name -> grpc.binarylog.v1.Message\n\t6,  // 6: grpc.binarylog.v1.GrpcLogEntry.trailer:type_name -> grpc.binarylog.v1.Trailer\n\t10, // 7: grpc.binarylog.v1.GrpcLogEntry.peer:type_name -> grpc.binarylog.v1.Address\n\t8,  // 8: grpc.binarylog.v1.ClientHeader.metadata:type_name -> grpc.binarylog.v1.Metadata\n\t12, // 9: grpc.binarylog.v1.ClientHeader.timeout:type_name -> google.protobuf.Duration\n\t8,  // 10: grpc.binarylog.v1.ServerHeader.metadata:type_name -> grpc.binarylog.v1.Metadata\n\t8,  // 11: grpc.binarylog.v1.Trailer.metadata:type_name -> grpc.binarylog.v1.Metadata\n\t9,  // 12: grpc.binarylog.v1.Metadata.entry:type_name -> grpc.binarylog.v1.MetadataEntry\n\t2,  // 13: grpc.binarylog.v1.Address.type:type_name -> grpc.binarylog.v1.Address.Type\n\t14, // [14:14] is the sub-list for method output_type\n\t14, // [14:14] is the sub-list for method input_type\n\t14, // [14:14] is the sub-list for extension type_name\n\t14, // [14:14] is the sub-list for extension extendee\n\t0,  // [0:14] is the sub-list for field type_name\n}\n\nfunc init() { file_grpc_binlog_v1_binarylog_proto_init() }\nfunc file_grpc_binlog_v1_binarylog_proto_init() {\n\tif File_grpc_binlog_v1_binarylog_proto != nil {\n\t\treturn\n\t}\n\tfile_grpc_binlog_v1_binarylog_proto_msgTypes[0].OneofWrappers = []any{\n\t\t(*GrpcLogEntry_ClientHeader)(nil),\n\t\t(*GrpcLogEntry_ServerHeader)(nil),\n\t\t(*GrpcLogEntry_Message)(nil),\n\t\t(*GrpcLogEntry_Trailer)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_grpc_binlog_v1_binarylog_proto_rawDesc), len(file_grpc_binlog_v1_binarylog_proto_rawDesc)),\n\t\t\tNumEnums:      3,\n\t\t\tNumMessages:   8,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_grpc_binlog_v1_binarylog_proto_goTypes,\n\t\tDependencyIndexes: file_grpc_binlog_v1_binarylog_proto_depIdxs,\n\t\tEnumInfos:         file_grpc_binlog_v1_binarylog_proto_enumTypes,\n\t\tMessageInfos:      file_grpc_binlog_v1_binarylog_proto_msgTypes,\n\t}.Build()\n\tFile_grpc_binlog_v1_binarylog_proto = out.File\n\tfile_grpc_binlog_v1_binarylog_proto_goTypes = nil\n\tfile_grpc_binlog_v1_binarylog_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/call.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n)\n\n// Invoke sends the RPC request on the wire and returns after response is\n// received.  This is typically called by generated code.\n//\n// All errors returned by Invoke are compatible with the status package.\nfunc (cc *ClientConn) Invoke(ctx context.Context, method string, args, reply any, opts ...CallOption) error {\n\t// allow interceptor to see all applicable call options, which means those\n\t// configured as defaults from dial option as well as per-call options\n\topts = combine(cc.dopts.callOptions, opts)\n\n\tif cc.dopts.unaryInt != nil {\n\t\treturn cc.dopts.unaryInt(ctx, method, args, reply, cc, invoke, opts...)\n\t}\n\treturn invoke(ctx, method, args, reply, cc, opts...)\n}\n\nfunc combine(o1 []CallOption, o2 []CallOption) []CallOption {\n\t// we don't use append because o1 could have extra capacity whose\n\t// elements would be overwritten, which could cause inadvertent\n\t// sharing (and race conditions) between concurrent calls\n\tif len(o1) == 0 {\n\t\treturn o2\n\t} else if len(o2) == 0 {\n\t\treturn o1\n\t}\n\tret := make([]CallOption, len(o1)+len(o2))\n\tcopy(ret, o1)\n\tcopy(ret[len(o1):], o2)\n\treturn ret\n}\n\n// Invoke sends the RPC request on the wire and returns after response is\n// received.  This is typically called by generated code.\n//\n// DEPRECATED: Use ClientConn.Invoke instead.\nfunc Invoke(ctx context.Context, method string, args, reply any, cc *ClientConn, opts ...CallOption) error {\n\treturn cc.Invoke(ctx, method, args, reply, opts...)\n}\n\nvar unaryStreamDesc = &StreamDesc{ServerStreams: false, ClientStreams: false}\n\nfunc invoke(ctx context.Context, method string, req, reply any, cc *ClientConn, opts ...CallOption) error {\n\tcs, err := newClientStream(ctx, unaryStreamDesc, cc, method, opts...)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := cs.SendMsg(req); err != nil {\n\t\treturn err\n\t}\n\treturn cs.RecvMsg(reply)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/channelz/channelz.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package channelz exports internals of the channelz implementation as required\n// by other gRPC packages.\n//\n// The implementation of the channelz spec as defined in\n// https://github.com/grpc/proposal/blob/master/A14-channelz.md, is provided by\n// the `internal/channelz` package.\n//\n// # Experimental\n//\n// Notice: All APIs in this package are experimental and may be removed in a\n// later release.\npackage channelz\n\nimport \"google.golang.org/grpc/internal/channelz\"\n\n// Identifier is an opaque identifier which uniquely identifies an entity in the\n// channelz database.\ntype Identifier = channelz.Identifier\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/clientconn.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"net/url\"\n\t\"os\"\n\t\"slices\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/balancer/base\"\n\t\"google.golang.org/grpc/balancer/pickfirst\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/credentials\"\n\texpstats \"google.golang.org/grpc/experimental/stats\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\t\"google.golang.org/grpc/internal/grpcsync\"\n\t\"google.golang.org/grpc/internal/idle\"\n\tiresolver \"google.golang.org/grpc/internal/resolver\"\n\tistats \"google.golang.org/grpc/internal/stats\"\n\t\"google.golang.org/grpc/internal/transport\"\n\t\"google.golang.org/grpc/keepalive\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/serviceconfig\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n\n\t_ \"google.golang.org/grpc/balancer/roundrobin\"           // To register roundrobin.\n\t_ \"google.golang.org/grpc/internal/resolver/passthrough\" // To register passthrough resolver.\n\t_ \"google.golang.org/grpc/internal/resolver/unix\"        // To register unix resolver.\n\t_ \"google.golang.org/grpc/resolver/dns\"                  // To register dns resolver.\n)\n\nconst (\n\t// minimum time to give a connection to complete\n\tminConnectTimeout = 20 * time.Second\n)\n\nvar (\n\t// ErrClientConnClosing indicates that the operation is illegal because\n\t// the ClientConn is closing.\n\t//\n\t// Deprecated: this error should not be relied upon by users; use the status\n\t// code of Canceled instead.\n\tErrClientConnClosing = status.Error(codes.Canceled, \"grpc: the client connection is closing\")\n\t// errConnDrain indicates that the connection starts to be drained and does not accept any new RPCs.\n\terrConnDrain = errors.New(\"grpc: the connection is drained\")\n\t// errConnClosing indicates that the connection is closing.\n\terrConnClosing = errors.New(\"grpc: the connection is closing\")\n\t// errConnIdling indicates the connection is being closed as the channel\n\t// is moving to an idle mode due to inactivity.\n\terrConnIdling = errors.New(\"grpc: the connection is closing due to channel idleness\")\n\t// invalidDefaultServiceConfigErrPrefix is used to prefix the json parsing error for the default\n\t// service config.\n\tinvalidDefaultServiceConfigErrPrefix = \"grpc: the provided default service config is invalid\"\n\t// PickFirstBalancerName is the name of the pick_first balancer.\n\tPickFirstBalancerName = pickfirst.Name\n)\n\n// The following errors are returned from Dial and DialContext\nvar (\n\t// errNoTransportSecurity indicates that there is no transport security\n\t// being set for ClientConn. Users should either set one or explicitly\n\t// call WithInsecure DialOption to disable security.\n\terrNoTransportSecurity = errors.New(\"grpc: no transport security set (use grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or set credentials)\")\n\t// errTransportCredsAndBundle indicates that creds bundle is used together\n\t// with other individual Transport Credentials.\n\terrTransportCredsAndBundle = errors.New(\"grpc: credentials.Bundle may not be used with individual TransportCredentials\")\n\t// errNoTransportCredsInBundle indicated that the configured creds bundle\n\t// returned a transport credentials which was nil.\n\terrNoTransportCredsInBundle = errors.New(\"grpc: credentials.Bundle must return non-nil transport credentials\")\n\t// errTransportCredentialsMissing indicates that users want to transmit\n\t// security information (e.g., OAuth2 token) which requires secure\n\t// connection on an insecure connection.\n\terrTransportCredentialsMissing = errors.New(\"grpc: the credentials require transport level security (use grpc.WithTransportCredentials() to set)\")\n)\n\nvar (\n\tdisconnectionsMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{\n\t\tName:           \"grpc.subchannel.disconnections\",\n\t\tDescription:    \"EXPERIMENTAL. Number of times the selected subchannel becomes disconnected.\",\n\t\tUnit:           \"{disconnection}\",\n\t\tLabels:         []string{\"grpc.target\"},\n\t\tOptionalLabels: []string{\"grpc.lb.backend_service\", \"grpc.lb.locality\", \"grpc.disconnect_error\"},\n\t\tDefault:        false,\n\t})\n\tconnectionAttemptsSucceededMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{\n\t\tName:           \"grpc.subchannel.connection_attempts_succeeded\",\n\t\tDescription:    \"EXPERIMENTAL. Number of successful connection attempts.\",\n\t\tUnit:           \"{attempt}\",\n\t\tLabels:         []string{\"grpc.target\"},\n\t\tOptionalLabels: []string{\"grpc.lb.backend_service\", \"grpc.lb.locality\"},\n\t\tDefault:        false,\n\t})\n\tconnectionAttemptsFailedMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{\n\t\tName:           \"grpc.subchannel.connection_attempts_failed\",\n\t\tDescription:    \"EXPERIMENTAL. Number of failed connection attempts.\",\n\t\tUnit:           \"{attempt}\",\n\t\tLabels:         []string{\"grpc.target\"},\n\t\tOptionalLabels: []string{\"grpc.lb.backend_service\", \"grpc.lb.locality\"},\n\t\tDefault:        false,\n\t})\n\topenConnectionsMetric = expstats.RegisterInt64UpDownCount(expstats.MetricDescriptor{\n\t\tName:           \"grpc.subchannel.open_connections\",\n\t\tDescription:    \"EXPERIMENTAL. Number of open connections.\",\n\t\tUnit:           \"{attempt}\",\n\t\tLabels:         []string{\"grpc.target\"},\n\t\tOptionalLabels: []string{\"grpc.lb.backend_service\", \"grpc.security_level\", \"grpc.lb.locality\"},\n\t\tDefault:        false,\n\t})\n)\n\nconst (\n\tdefaultClientMaxReceiveMessageSize = 1024 * 1024 * 4\n\tdefaultClientMaxSendMessageSize    = math.MaxInt32\n\t// http2IOBufSize specifies the buffer size for sending frames.\n\tdefaultWriteBufSize = 32 * 1024\n\tdefaultReadBufSize  = 32 * 1024\n)\n\ntype defaultConfigSelector struct {\n\tsc *ServiceConfig\n}\n\nfunc (dcs *defaultConfigSelector) SelectConfig(rpcInfo iresolver.RPCInfo) (*iresolver.RPCConfig, error) {\n\treturn &iresolver.RPCConfig{\n\t\tContext:      rpcInfo.Context,\n\t\tMethodConfig: getMethodConfig(dcs.sc, rpcInfo.Method),\n\t}, nil\n}\n\n// NewClient creates a new gRPC \"channel\" for the target URI provided.  No I/O\n// is performed.  Use of the ClientConn for RPCs will automatically cause it to\n// connect.  The Connect method may be called to manually create a connection,\n// but for most users this should be unnecessary.\n//\n// The target name syntax is defined in\n// https://github.com/grpc/grpc/blob/master/doc/naming.md.  E.g. to use the dns\n// name resolver, a \"dns:///\" prefix may be applied to the target.  The default\n// name resolver will be used if no scheme is detected, or if the parsed scheme\n// is not a registered name resolver.  The default resolver is \"dns\" but can be\n// overridden using the resolver package's SetDefaultScheme.\n//\n// Examples:\n//\n//   - \"foo.googleapis.com:8080\"\n//   - \"dns:///foo.googleapis.com:8080\"\n//   - \"dns:///foo.googleapis.com\"\n//   - \"dns:///10.0.0.213:8080\"\n//   - \"dns:///%5B2001:db8:85a3:8d3:1319:8a2e:370:7348%5D:443\"\n//   - \"dns://8.8.8.8/foo.googleapis.com:8080\"\n//   - \"dns://8.8.8.8/foo.googleapis.com\"\n//   - \"zookeeper://zk.example.com:9900/example_service\"\n//\n// The DialOptions returned by WithBlock, WithTimeout,\n// WithReturnConnectionError, and FailOnNonTempDialError are ignored by this\n// function.\nfunc NewClient(target string, opts ...DialOption) (conn *ClientConn, err error) {\n\tcc := &ClientConn{\n\t\ttarget: target,\n\t\tconns:  make(map[*addrConn]struct{}),\n\t\tdopts:  defaultDialOptions(),\n\t}\n\n\tcc.retryThrottler.Store((*retryThrottler)(nil))\n\tcc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{nil})\n\tcc.ctx, cc.cancel = context.WithCancel(context.Background())\n\n\t// Apply dial options.\n\tdisableGlobalOpts := false\n\tfor _, opt := range opts {\n\t\tif _, ok := opt.(*disableGlobalDialOptions); ok {\n\t\t\tdisableGlobalOpts = true\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif !disableGlobalOpts {\n\t\tfor _, opt := range globalDialOptions {\n\t\t\topt.apply(&cc.dopts)\n\t\t}\n\t}\n\n\tfor _, opt := range opts {\n\t\topt.apply(&cc.dopts)\n\t}\n\n\t// Determine the resolver to use.\n\tif err := cc.initParsedTargetAndResolverBuilder(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, opt := range globalPerTargetDialOptions {\n\t\topt.DialOptionForTarget(cc.parsedTarget.URL).apply(&cc.dopts)\n\t}\n\n\tchainUnaryClientInterceptors(cc)\n\tchainStreamClientInterceptors(cc)\n\n\tif err := cc.validateTransportCredentials(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif cc.dopts.defaultServiceConfigRawJSON != nil {\n\t\tscpr := parseServiceConfig(*cc.dopts.defaultServiceConfigRawJSON, cc.dopts.maxCallAttempts)\n\t\tif scpr.Err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%s: %v\", invalidDefaultServiceConfigErrPrefix, scpr.Err)\n\t\t}\n\t\tcc.dopts.defaultServiceConfig, _ = scpr.Config.(*ServiceConfig)\n\t}\n\tcc.keepaliveParams = cc.dopts.copts.KeepaliveParams\n\n\tif err = cc.initAuthority(); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Register ClientConn with channelz. Note that this is only done after\n\t// channel creation cannot fail.\n\tcc.channelzRegistration(target)\n\tchannelz.Infof(logger, cc.channelz, \"parsed dial target is: %#v\", cc.parsedTarget)\n\tchannelz.Infof(logger, cc.channelz, \"Channel authority set to %q\", cc.authority)\n\n\tcc.csMgr = newConnectivityStateManager(cc.ctx, cc.channelz)\n\tcc.pickerWrapper = newPickerWrapper()\n\n\tcc.metricsRecorderList = istats.NewMetricsRecorderList(cc.dopts.copts.StatsHandlers)\n\tcc.statsHandler = istats.NewCombinedHandler(cc.dopts.copts.StatsHandlers...)\n\n\tcc.initIdleStateLocked() // Safe to call without the lock, since nothing else has a reference to cc.\n\tcc.idlenessMgr = idle.NewManager((*idler)(cc), cc.dopts.idleTimeout)\n\n\treturn cc, nil\n}\n\n// Dial calls DialContext(context.Background(), target, opts...).\n//\n// Deprecated: use NewClient instead.  Will be supported throughout 1.x.\nfunc Dial(target string, opts ...DialOption) (*ClientConn, error) {\n\treturn DialContext(context.Background(), target, opts...)\n}\n\n// DialContext calls NewClient and then exits idle mode.  If WithBlock(true) is\n// used, it calls Connect and WaitForStateChange until either the context\n// expires or the state of the ClientConn is Ready.\n//\n// One subtle difference between NewClient and Dial and DialContext is that the\n// former uses \"dns\" as the default name resolver, while the latter use\n// \"passthrough\" for backward compatibility.  This distinction should not matter\n// to most users, but could matter to legacy users that specify a custom dialer\n// and expect it to receive the target string directly.\n//\n// Deprecated: use NewClient instead.  Will be supported throughout 1.x.\nfunc DialContext(ctx context.Context, target string, opts ...DialOption) (conn *ClientConn, err error) {\n\t// At the end of this method, we kick the channel out of idle, rather than\n\t// waiting for the first rpc.\n\t//\n\t// WithLocalDNSResolution dial option in `grpc.Dial` ensures that it\n\t// preserves behavior: when default scheme passthrough is used, skip\n\t// hostname resolution, when \"dns\" is used for resolution, perform\n\t// resolution on the client.\n\topts = append([]DialOption{withDefaultScheme(\"passthrough\"), WithLocalDNSResolution()}, opts...)\n\tcc, err := NewClient(target, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// We start the channel off in idle mode, but kick it out of idle now,\n\t// instead of waiting for the first RPC.  This is the legacy behavior of\n\t// Dial.\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tcc.Close()\n\t\t}\n\t}()\n\n\t// This creates the name resolver, load balancer, etc.\n\tif err := cc.exitIdleMode(); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to exit idle mode: %w\", err)\n\t}\n\tcc.idlenessMgr.UnsafeSetNotIdle()\n\n\t// Return now for non-blocking dials.\n\tif !cc.dopts.block {\n\t\treturn cc, nil\n\t}\n\n\tif cc.dopts.timeout > 0 {\n\t\tvar cancel context.CancelFunc\n\t\tctx, cancel = context.WithTimeout(ctx, cc.dopts.timeout)\n\t\tdefer cancel()\n\t}\n\tdefer func() {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\tswitch {\n\t\t\tcase ctx.Err() == err:\n\t\t\t\tconn = nil\n\t\t\tcase err == nil || !cc.dopts.returnLastError:\n\t\t\t\tconn, err = nil, ctx.Err()\n\t\t\tdefault:\n\t\t\t\tconn, err = nil, fmt.Errorf(\"%v: %v\", ctx.Err(), err)\n\t\t\t}\n\t\tdefault:\n\t\t}\n\t}()\n\n\t// A blocking dial blocks until the clientConn is ready.\n\tfor {\n\t\ts := cc.GetState()\n\t\tif s == connectivity.Idle {\n\t\t\tcc.Connect()\n\t\t}\n\t\tif s == connectivity.Ready {\n\t\t\treturn cc, nil\n\t\t} else if cc.dopts.copts.FailOnNonTempDialError && s == connectivity.TransientFailure {\n\t\t\tif err = cc.connectionError(); err != nil {\n\t\t\t\tterr, ok := err.(interface {\n\t\t\t\t\tTemporary() bool\n\t\t\t\t})\n\t\t\t\tif ok && !terr.Temporary() {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif !cc.WaitForStateChange(ctx, s) {\n\t\t\t// ctx got timeout or canceled.\n\t\t\tif err = cc.connectionError(); err != nil && cc.dopts.returnLastError {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn nil, ctx.Err()\n\t\t}\n\t}\n}\n\n// addTraceEvent is a helper method to add a trace event on the channel. If the\n// channel is a nested one, the same event is also added on the parent channel.\nfunc (cc *ClientConn) addTraceEvent(msg string) {\n\tted := &channelz.TraceEvent{\n\t\tDesc:     fmt.Sprintf(\"Channel %s\", msg),\n\t\tSeverity: channelz.CtInfo,\n\t}\n\tif cc.dopts.channelzParent != nil {\n\t\tted.Parent = &channelz.TraceEvent{\n\t\t\tDesc:     fmt.Sprintf(\"Nested channel(id:%d) %s\", cc.channelz.ID, msg),\n\t\t\tSeverity: channelz.CtInfo,\n\t\t}\n\t}\n\tchannelz.AddTraceEvent(logger, cc.channelz, 1, ted)\n}\n\ntype idler ClientConn\n\nfunc (i *idler) EnterIdleMode() {\n\t(*ClientConn)(i).enterIdleMode()\n}\n\nfunc (i *idler) ExitIdleMode() {\n\t// Ignore the error returned from this method, because from the perspective\n\t// of the caller (idleness manager), the channel would have always moved out\n\t// of IDLE by the time this method returns.\n\t(*ClientConn)(i).exitIdleMode()\n}\n\n// exitIdleMode moves the channel out of idle mode by recreating the name\n// resolver and load balancer.  This should never be called directly; use\n// cc.idlenessMgr.ExitIdleMode instead.\nfunc (cc *ClientConn) exitIdleMode() error {\n\tcc.mu.Lock()\n\tif cc.conns == nil {\n\t\tcc.mu.Unlock()\n\t\treturn errConnClosing\n\t}\n\tcc.mu.Unlock()\n\n\t// Set state to CONNECTING before building the name resolver\n\t// so the channel does not remain in IDLE.\n\tcc.csMgr.updateState(connectivity.Connecting)\n\n\t// This needs to be called without cc.mu because this builds a new resolver\n\t// which might update state or report error inline, which would then need to\n\t// acquire cc.mu.\n\tif err := cc.resolverWrapper.start(); err != nil {\n\t\t// If resolver creation fails, treat it like an error reported by the\n\t\t// resolver before any valid updates. Set channel's state to\n\t\t// TransientFailure, and set an erroring picker with the resolver build\n\t\t// error, which will returned as part of any subsequent RPCs.\n\t\tlogger.Warningf(\"Failed to start resolver: %v\", err)\n\t\tcc.csMgr.updateState(connectivity.TransientFailure)\n\t\tcc.mu.Lock()\n\t\tcc.updateResolverStateAndUnlock(resolver.State{}, err)\n\t\treturn fmt.Errorf(\"failed to start resolver: %w\", err)\n\t}\n\n\tcc.addTraceEvent(\"exiting idle mode\")\n\treturn nil\n}\n\n// initIdleStateLocked initializes common state to how it should be while idle.\nfunc (cc *ClientConn) initIdleStateLocked() {\n\tcc.resolverWrapper = newCCResolverWrapper(cc)\n\tcc.balancerWrapper = newCCBalancerWrapper(cc)\n\tcc.firstResolveEvent = grpcsync.NewEvent()\n\t// cc.conns == nil is a proxy for the ClientConn being closed. So, instead\n\t// of setting it to nil here, we recreate the map. This also means that we\n\t// don't have to do this when exiting idle mode.\n\tcc.conns = make(map[*addrConn]struct{})\n}\n\n// enterIdleMode puts the channel in idle mode, and as part of it shuts down the\n// name resolver, load balancer, and any subchannels.  This should never be\n// called directly; use cc.idlenessMgr.EnterIdleMode instead.\nfunc (cc *ClientConn) enterIdleMode() {\n\tcc.mu.Lock()\n\n\tif cc.conns == nil {\n\t\tcc.mu.Unlock()\n\t\treturn\n\t}\n\n\tconns := cc.conns\n\n\trWrapper := cc.resolverWrapper\n\trWrapper.close()\n\tcc.pickerWrapper.reset()\n\tbWrapper := cc.balancerWrapper\n\tbWrapper.close()\n\tcc.csMgr.updateState(connectivity.Idle)\n\tcc.addTraceEvent(\"entering idle mode\")\n\n\tcc.initIdleStateLocked()\n\n\tcc.mu.Unlock()\n\n\t// Block until the name resolver and LB policy are closed.\n\t<-rWrapper.serializer.Done()\n\t<-bWrapper.serializer.Done()\n\n\t// Close all subchannels after the LB policy is closed.\n\tfor ac := range conns {\n\t\tac.tearDown(errConnIdling)\n\t}\n}\n\n// validateTransportCredentials performs a series of checks on the configured\n// transport credentials. It returns a non-nil error if any of these conditions\n// are met:\n//   - no transport creds and no creds bundle is configured\n//   - both transport creds and creds bundle are configured\n//   - creds bundle is configured, but it lacks a transport credentials\n//   - insecure transport creds configured alongside call creds that require\n//     transport level security\n//\n// If none of the above conditions are met, the configured credentials are\n// deemed valid and a nil error is returned.\nfunc (cc *ClientConn) validateTransportCredentials() error {\n\tif cc.dopts.copts.TransportCredentials == nil && cc.dopts.copts.CredsBundle == nil {\n\t\treturn errNoTransportSecurity\n\t}\n\tif cc.dopts.copts.TransportCredentials != nil && cc.dopts.copts.CredsBundle != nil {\n\t\treturn errTransportCredsAndBundle\n\t}\n\tif cc.dopts.copts.CredsBundle != nil && cc.dopts.copts.CredsBundle.TransportCredentials() == nil {\n\t\treturn errNoTransportCredsInBundle\n\t}\n\ttransportCreds := cc.dopts.copts.TransportCredentials\n\tif transportCreds == nil {\n\t\ttransportCreds = cc.dopts.copts.CredsBundle.TransportCredentials()\n\t}\n\tif transportCreds.Info().SecurityProtocol == \"insecure\" {\n\t\tfor _, cd := range cc.dopts.copts.PerRPCCredentials {\n\t\t\tif cd.RequireTransportSecurity() {\n\t\t\t\treturn errTransportCredentialsMissing\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// channelzRegistration registers the newly created ClientConn with channelz and\n// stores the returned identifier in `cc.channelz`.  A channelz trace event is\n// emitted for ClientConn creation. If the newly created ClientConn is a nested\n// one, i.e a valid parent ClientConn ID is specified via a dial option, the\n// trace event is also added to the parent.\n//\n// Doesn't grab cc.mu as this method is expected to be called only at Dial time.\nfunc (cc *ClientConn) channelzRegistration(target string) {\n\tparentChannel, _ := cc.dopts.channelzParent.(*channelz.Channel)\n\tcc.channelz = channelz.RegisterChannel(parentChannel, target)\n\tcc.addTraceEvent(fmt.Sprintf(\"created for target %q\", target))\n}\n\n// chainUnaryClientInterceptors chains all unary client interceptors into one.\nfunc chainUnaryClientInterceptors(cc *ClientConn) {\n\tinterceptors := cc.dopts.chainUnaryInts\n\t// Prepend dopts.unaryInt to the chaining interceptors if it exists, since unaryInt will\n\t// be executed before any other chained interceptors.\n\tif cc.dopts.unaryInt != nil {\n\t\tinterceptors = append([]UnaryClientInterceptor{cc.dopts.unaryInt}, interceptors...)\n\t}\n\tvar chainedInt UnaryClientInterceptor\n\tif len(interceptors) == 0 {\n\t\tchainedInt = nil\n\t} else if len(interceptors) == 1 {\n\t\tchainedInt = interceptors[0]\n\t} else {\n\t\tchainedInt = func(ctx context.Context, method string, req, reply any, cc *ClientConn, invoker UnaryInvoker, opts ...CallOption) error {\n\t\t\treturn interceptors[0](ctx, method, req, reply, cc, getChainUnaryInvoker(interceptors, 0, invoker), opts...)\n\t\t}\n\t}\n\tcc.dopts.unaryInt = chainedInt\n}\n\n// getChainUnaryInvoker recursively generate the chained unary invoker.\nfunc getChainUnaryInvoker(interceptors []UnaryClientInterceptor, curr int, finalInvoker UnaryInvoker) UnaryInvoker {\n\tif curr == len(interceptors)-1 {\n\t\treturn finalInvoker\n\t}\n\treturn func(ctx context.Context, method string, req, reply any, cc *ClientConn, opts ...CallOption) error {\n\t\treturn interceptors[curr+1](ctx, method, req, reply, cc, getChainUnaryInvoker(interceptors, curr+1, finalInvoker), opts...)\n\t}\n}\n\n// chainStreamClientInterceptors chains all stream client interceptors into one.\nfunc chainStreamClientInterceptors(cc *ClientConn) {\n\tinterceptors := cc.dopts.chainStreamInts\n\t// Prepend dopts.streamInt to the chaining interceptors if it exists, since streamInt will\n\t// be executed before any other chained interceptors.\n\tif cc.dopts.streamInt != nil {\n\t\tinterceptors = append([]StreamClientInterceptor{cc.dopts.streamInt}, interceptors...)\n\t}\n\tvar chainedInt StreamClientInterceptor\n\tif len(interceptors) == 0 {\n\t\tchainedInt = nil\n\t} else if len(interceptors) == 1 {\n\t\tchainedInt = interceptors[0]\n\t} else {\n\t\tchainedInt = func(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, streamer Streamer, opts ...CallOption) (ClientStream, error) {\n\t\t\treturn interceptors[0](ctx, desc, cc, method, getChainStreamer(interceptors, 0, streamer), opts...)\n\t\t}\n\t}\n\tcc.dopts.streamInt = chainedInt\n}\n\n// getChainStreamer recursively generate the chained client stream constructor.\nfunc getChainStreamer(interceptors []StreamClientInterceptor, curr int, finalStreamer Streamer) Streamer {\n\tif curr == len(interceptors)-1 {\n\t\treturn finalStreamer\n\t}\n\treturn func(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (ClientStream, error) {\n\t\treturn interceptors[curr+1](ctx, desc, cc, method, getChainStreamer(interceptors, curr+1, finalStreamer), opts...)\n\t}\n}\n\n// newConnectivityStateManager creates an connectivityStateManager with\n// the specified channel.\nfunc newConnectivityStateManager(ctx context.Context, channel *channelz.Channel) *connectivityStateManager {\n\treturn &connectivityStateManager{\n\t\tchannelz: channel,\n\t\tpubSub:   grpcsync.NewPubSub(ctx),\n\t}\n}\n\n// connectivityStateManager keeps the connectivity.State of ClientConn.\n// This struct will eventually be exported so the balancers can access it.\n//\n// TODO: If possible, get rid of the `connectivityStateManager` type, and\n// provide this functionality using the `PubSub`, to avoid keeping track of\n// the connectivity state at two places.\ntype connectivityStateManager struct {\n\tmu         sync.Mutex\n\tstate      connectivity.State\n\tnotifyChan chan struct{}\n\tchannelz   *channelz.Channel\n\tpubSub     *grpcsync.PubSub\n}\n\n// updateState updates the connectivity.State of ClientConn.\n// If there's a change it notifies goroutines waiting on state change to\n// happen.\nfunc (csm *connectivityStateManager) updateState(state connectivity.State) {\n\tcsm.mu.Lock()\n\tdefer csm.mu.Unlock()\n\tif csm.state == connectivity.Shutdown {\n\t\treturn\n\t}\n\tif csm.state == state {\n\t\treturn\n\t}\n\tcsm.state = state\n\tcsm.channelz.ChannelMetrics.State.Store(&state)\n\tcsm.pubSub.Publish(state)\n\n\tchannelz.Infof(logger, csm.channelz, \"Channel Connectivity change to %v\", state)\n\tif csm.notifyChan != nil {\n\t\t// There are other goroutines waiting on this channel.\n\t\tclose(csm.notifyChan)\n\t\tcsm.notifyChan = nil\n\t}\n}\n\nfunc (csm *connectivityStateManager) getState() connectivity.State {\n\tcsm.mu.Lock()\n\tdefer csm.mu.Unlock()\n\treturn csm.state\n}\n\nfunc (csm *connectivityStateManager) getNotifyChan() <-chan struct{} {\n\tcsm.mu.Lock()\n\tdefer csm.mu.Unlock()\n\tif csm.notifyChan == nil {\n\t\tcsm.notifyChan = make(chan struct{})\n\t}\n\treturn csm.notifyChan\n}\n\n// ClientConnInterface defines the functions clients need to perform unary and\n// streaming RPCs.  It is implemented by *ClientConn, and is only intended to\n// be referenced by generated code.\ntype ClientConnInterface interface {\n\t// Invoke performs a unary RPC and returns after the response is received\n\t// into reply.\n\tInvoke(ctx context.Context, method string, args any, reply any, opts ...CallOption) error\n\t// NewStream begins a streaming RPC.\n\tNewStream(ctx context.Context, desc *StreamDesc, method string, opts ...CallOption) (ClientStream, error)\n}\n\n// Assert *ClientConn implements ClientConnInterface.\nvar _ ClientConnInterface = (*ClientConn)(nil)\n\n// ClientConn represents a virtual connection to a conceptual endpoint, to\n// perform RPCs.\n//\n// A ClientConn is free to have zero or more actual connections to the endpoint\n// based on configuration, load, etc. It is also free to determine which actual\n// endpoints to use and may change it every RPC, permitting client-side load\n// balancing.\n//\n// A ClientConn encapsulates a range of functionality including name\n// resolution, TCP connection establishment (with retries and backoff) and TLS\n// handshakes. It also handles errors on established connections by\n// re-resolving the name and reconnecting.\ntype ClientConn struct {\n\tctx    context.Context    // Initialized using the background context at dial time.\n\tcancel context.CancelFunc // Cancelled on close.\n\n\t// The following are initialized at dial time, and are read-only after that.\n\ttarget              string            // User's dial target.\n\tparsedTarget        resolver.Target   // See initParsedTargetAndResolverBuilder().\n\tauthority           string            // See initAuthority().\n\tdopts               dialOptions       // Default and user specified dial options.\n\tchannelz            *channelz.Channel // Channelz object.\n\tresolverBuilder     resolver.Builder  // See initParsedTargetAndResolverBuilder().\n\tidlenessMgr         *idle.Manager\n\tmetricsRecorderList *istats.MetricsRecorderList\n\tstatsHandler        stats.Handler\n\n\t// The following provide their own synchronization, and therefore don't\n\t// require cc.mu to be held to access them.\n\tcsMgr              *connectivityStateManager\n\tpickerWrapper      *pickerWrapper\n\tsafeConfigSelector iresolver.SafeConfigSelector\n\tretryThrottler     atomic.Value // Updated from service config.\n\n\t// mu protects the following fields.\n\t// TODO: split mu so the same mutex isn't used for everything.\n\tmu              sync.RWMutex\n\tresolverWrapper *ccResolverWrapper         // Always recreated whenever entering idle to simplify Close.\n\tbalancerWrapper *ccBalancerWrapper         // Always recreated whenever entering idle to simplify Close.\n\tsc              *ServiceConfig             // Latest service config received from the resolver.\n\tconns           map[*addrConn]struct{}     // Set to nil on close.\n\tkeepaliveParams keepalive.ClientParameters // May be updated upon receipt of a GoAway.\n\t// firstResolveEvent is used to track whether the name resolver sent us at\n\t// least one update. RPCs block on this event.  May be accessed without mu\n\t// if we know we cannot be asked to enter idle mode while accessing it (e.g.\n\t// when the idle manager has already been closed, or if we are already\n\t// entering idle mode).\n\tfirstResolveEvent *grpcsync.Event\n\n\tlceMu               sync.Mutex // protects lastConnectionError\n\tlastConnectionError error\n}\n\n// WaitForStateChange waits until the connectivity.State of ClientConn changes from sourceState or\n// ctx expires. A true value is returned in former case and false in latter.\nfunc (cc *ClientConn) WaitForStateChange(ctx context.Context, sourceState connectivity.State) bool {\n\tch := cc.csMgr.getNotifyChan()\n\tif cc.csMgr.getState() != sourceState {\n\t\treturn true\n\t}\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn false\n\tcase <-ch:\n\t\treturn true\n\t}\n}\n\n// GetState returns the connectivity.State of ClientConn.\nfunc (cc *ClientConn) GetState() connectivity.State {\n\treturn cc.csMgr.getState()\n}\n\n// Connect causes all subchannels in the ClientConn to attempt to connect if\n// the channel is idle.  Does not wait for the connection attempts to begin\n// before returning.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a later\n// release.\nfunc (cc *ClientConn) Connect() {\n\tcc.idlenessMgr.ExitIdleMode()\n\n\t// If the ClientConn was not in idle mode, we need to call ExitIdle on the\n\t// LB policy so that connections can be created.\n\tcc.mu.Lock()\n\tcc.balancerWrapper.exitIdle()\n\tcc.mu.Unlock()\n}\n\n// waitForResolvedAddrs blocks until the resolver provides addresses or the\n// context expires, whichever happens first.\n//\n// Error is nil unless the context expires first; otherwise returns a status\n// error based on the context.\n//\n// The returned boolean indicates whether it did block or not. If the\n// resolution has already happened once before, it returns false without\n// blocking. Otherwise, it wait for the resolution and return true if\n// resolution has succeeded or return false along with error if resolution has\n// failed.\nfunc (cc *ClientConn) waitForResolvedAddrs(ctx context.Context) (bool, error) {\n\t// This is on the RPC path, so we use a fast path to avoid the\n\t// more-expensive \"select\" below after the resolver has returned once.\n\tif cc.firstResolveEvent.HasFired() {\n\t\treturn false, nil\n\t}\n\tinternal.NewStreamWaitingForResolver()\n\tselect {\n\tcase <-cc.firstResolveEvent.Done():\n\t\treturn true, nil\n\tcase <-ctx.Done():\n\t\treturn false, status.FromContextError(ctx.Err()).Err()\n\tcase <-cc.ctx.Done():\n\t\treturn false, ErrClientConnClosing\n\t}\n}\n\nvar emptyServiceConfig *ServiceConfig\n\nfunc init() {\n\tcfg := parseServiceConfig(\"{}\", defaultMaxCallAttempts)\n\tif cfg.Err != nil {\n\t\tpanic(fmt.Sprintf(\"impossible error parsing empty service config: %v\", cfg.Err))\n\t}\n\temptyServiceConfig = cfg.Config.(*ServiceConfig)\n\n\tinternal.SubscribeToConnectivityStateChanges = func(cc *ClientConn, s grpcsync.Subscriber) func() {\n\t\treturn cc.csMgr.pubSub.Subscribe(s)\n\t}\n\tinternal.EnterIdleModeForTesting = func(cc *ClientConn) {\n\t\tcc.idlenessMgr.EnterIdleModeForTesting()\n\t}\n\tinternal.ExitIdleModeForTesting = func(cc *ClientConn) {\n\t\tcc.idlenessMgr.ExitIdleMode()\n\t}\n}\n\nfunc (cc *ClientConn) maybeApplyDefaultServiceConfig() {\n\tif cc.sc != nil {\n\t\tcc.applyServiceConfigAndBalancer(cc.sc, nil)\n\t\treturn\n\t}\n\tif cc.dopts.defaultServiceConfig != nil {\n\t\tcc.applyServiceConfigAndBalancer(cc.dopts.defaultServiceConfig, &defaultConfigSelector{cc.dopts.defaultServiceConfig})\n\t} else {\n\t\tcc.applyServiceConfigAndBalancer(emptyServiceConfig, &defaultConfigSelector{emptyServiceConfig})\n\t}\n}\n\nfunc (cc *ClientConn) updateResolverStateAndUnlock(s resolver.State, err error) error {\n\tdefer cc.firstResolveEvent.Fire()\n\t// Check if the ClientConn is already closed. Some fields (e.g.\n\t// balancerWrapper) are set to nil when closing the ClientConn, and could\n\t// cause nil pointer panic if we don't have this check.\n\tif cc.conns == nil {\n\t\tcc.mu.Unlock()\n\t\treturn nil\n\t}\n\n\tif err != nil {\n\t\t// May need to apply the initial service config in case the resolver\n\t\t// doesn't support service configs, or doesn't provide a service config\n\t\t// with the new addresses.\n\t\tcc.maybeApplyDefaultServiceConfig()\n\n\t\tcc.balancerWrapper.resolverError(err)\n\n\t\t// No addresses are valid with err set; return early.\n\t\tcc.mu.Unlock()\n\t\treturn balancer.ErrBadResolverState\n\t}\n\n\tvar ret error\n\tif cc.dopts.disableServiceConfig {\n\t\tchannelz.Infof(logger, cc.channelz, \"ignoring service config from resolver (%v) and applying the default because service config is disabled\", s.ServiceConfig)\n\t\tcc.maybeApplyDefaultServiceConfig()\n\t} else if s.ServiceConfig == nil {\n\t\tcc.maybeApplyDefaultServiceConfig()\n\t\t// TODO: do we need to apply a failing LB policy if there is no\n\t\t// default, per the error handling design?\n\t} else {\n\t\tif sc, ok := s.ServiceConfig.Config.(*ServiceConfig); s.ServiceConfig.Err == nil && ok {\n\t\t\tconfigSelector := iresolver.GetConfigSelector(s)\n\t\t\tif configSelector != nil {\n\t\t\t\tif len(s.ServiceConfig.Config.(*ServiceConfig).Methods) != 0 {\n\t\t\t\t\tchannelz.Infof(logger, cc.channelz, \"method configs in service config will be ignored due to presence of config selector\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconfigSelector = &defaultConfigSelector{sc}\n\t\t\t}\n\t\t\tcc.applyServiceConfigAndBalancer(sc, configSelector)\n\t\t} else {\n\t\t\tret = balancer.ErrBadResolverState\n\t\t\tif cc.sc == nil {\n\t\t\t\t// Apply the failing LB only if we haven't received valid service config\n\t\t\t\t// from the name resolver in the past.\n\t\t\t\tcc.applyFailingLBLocked(s.ServiceConfig)\n\t\t\t\tcc.mu.Unlock()\n\t\t\t\treturn ret\n\t\t\t}\n\t\t}\n\t}\n\n\tbalCfg := cc.sc.lbConfig\n\tbw := cc.balancerWrapper\n\tcc.mu.Unlock()\n\n\tuccsErr := bw.updateClientConnState(&balancer.ClientConnState{ResolverState: s, BalancerConfig: balCfg})\n\tif ret == nil {\n\t\tret = uccsErr // prefer ErrBadResolver state since any other error is\n\t\t// currently meaningless to the caller.\n\t}\n\treturn ret\n}\n\n// applyFailingLBLocked is akin to configuring an LB policy on the channel which\n// always fails RPCs. Here, an actual LB policy is not configured, but an always\n// erroring picker is configured, which returns errors with information about\n// what was invalid in the received service config. A config selector with no\n// service config is configured, and the connectivity state of the channel is\n// set to TransientFailure.\nfunc (cc *ClientConn) applyFailingLBLocked(sc *serviceconfig.ParseResult) {\n\tvar err error\n\tif sc.Err != nil {\n\t\terr = status.Errorf(codes.Unavailable, \"error parsing service config: %v\", sc.Err)\n\t} else {\n\t\terr = status.Errorf(codes.Unavailable, \"illegal service config type: %T\", sc.Config)\n\t}\n\tcc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{nil})\n\tcc.pickerWrapper.updatePicker(base.NewErrPicker(err))\n\tcc.csMgr.updateState(connectivity.TransientFailure)\n}\n\n// Makes a copy of the input addresses slice. Addresses are passed during\n// subconn creation and address update operations.\nfunc copyAddresses(in []resolver.Address) []resolver.Address {\n\tout := make([]resolver.Address, len(in))\n\tcopy(out, in)\n\treturn out\n}\n\n// newAddrConnLocked creates an addrConn for addrs and adds it to cc.conns.\n//\n// Caller needs to make sure len(addrs) > 0.\nfunc (cc *ClientConn) newAddrConnLocked(addrs []resolver.Address, opts balancer.NewSubConnOptions) (*addrConn, error) {\n\tif cc.conns == nil {\n\t\treturn nil, ErrClientConnClosing\n\t}\n\n\tac := &addrConn{\n\t\tstate:        connectivity.Idle,\n\t\tcc:           cc,\n\t\taddrs:        copyAddresses(addrs),\n\t\tscopts:       opts,\n\t\tdopts:        cc.dopts,\n\t\tchannelz:     channelz.RegisterSubChannel(cc.channelz, \"\"),\n\t\tresetBackoff: make(chan struct{}),\n\t}\n\tac.updateTelemetryLabelsLocked()\n\tac.ctx, ac.cancel = context.WithCancel(cc.ctx)\n\t// Start with our address set to the first address; this may be updated if\n\t// we connect to different addresses.\n\tac.channelz.ChannelMetrics.Target.Store(&addrs[0].Addr)\n\n\tchannelz.AddTraceEvent(logger, ac.channelz, 0, &channelz.TraceEvent{\n\t\tDesc:     \"Subchannel created\",\n\t\tSeverity: channelz.CtInfo,\n\t\tParent: &channelz.TraceEvent{\n\t\t\tDesc:     fmt.Sprintf(\"Subchannel(id:%d) created\", ac.channelz.ID),\n\t\t\tSeverity: channelz.CtInfo,\n\t\t},\n\t})\n\n\t// Track ac in cc. This needs to be done before any getTransport(...) is called.\n\tcc.conns[ac] = struct{}{}\n\treturn ac, nil\n}\n\n// removeAddrConn removes the addrConn in the subConn from clientConn.\n// It also tears down the ac with the given error.\nfunc (cc *ClientConn) removeAddrConn(ac *addrConn, err error) {\n\tcc.mu.Lock()\n\tif cc.conns == nil {\n\t\tcc.mu.Unlock()\n\t\treturn\n\t}\n\tdelete(cc.conns, ac)\n\tcc.mu.Unlock()\n\tac.tearDown(err)\n}\n\n// Target returns the target string of the ClientConn.\nfunc (cc *ClientConn) Target() string {\n\treturn cc.target\n}\n\n// CanonicalTarget returns the canonical target string used when creating cc.\n//\n// This always has the form \"<scheme>://[authority]/<endpoint>\".  For example:\n//\n//   - \"dns:///example.com:42\"\n//   - \"dns://8.8.8.8/example.com:42\"\n//   - \"unix:///path/to/socket\"\nfunc (cc *ClientConn) CanonicalTarget() string {\n\treturn cc.parsedTarget.String()\n}\n\nfunc (cc *ClientConn) incrCallsStarted() {\n\tcc.channelz.ChannelMetrics.CallsStarted.Add(1)\n\tcc.channelz.ChannelMetrics.LastCallStartedTimestamp.Store(time.Now().UnixNano())\n}\n\nfunc (cc *ClientConn) incrCallsSucceeded() {\n\tcc.channelz.ChannelMetrics.CallsSucceeded.Add(1)\n}\n\nfunc (cc *ClientConn) incrCallsFailed() {\n\tcc.channelz.ChannelMetrics.CallsFailed.Add(1)\n}\n\n// connect starts creating a transport.\n// It does nothing if the ac is not IDLE.\n// TODO(bar) Move this to the addrConn section.\nfunc (ac *addrConn) connect() {\n\tac.mu.Lock()\n\tif ac.state == connectivity.Shutdown {\n\t\tif logger.V(2) {\n\t\t\tlogger.Infof(\"connect called on shutdown addrConn; ignoring.\")\n\t\t}\n\t\tac.mu.Unlock()\n\t\treturn\n\t}\n\tif ac.state != connectivity.Idle {\n\t\tif logger.V(2) {\n\t\t\tlogger.Infof(\"connect called on addrConn in non-idle state (%v); ignoring.\", ac.state)\n\t\t}\n\t\tac.mu.Unlock()\n\t\treturn\n\t}\n\n\tac.resetTransportAndUnlock()\n}\n\n// equalAddressIgnoringBalAttributes returns true is a and b are considered equal.\n// This is different from the Equal method on the resolver.Address type which\n// considers all fields to determine equality. Here, we only consider fields\n// that are meaningful to the subConn.\nfunc equalAddressIgnoringBalAttributes(a, b *resolver.Address) bool {\n\treturn a.Addr == b.Addr && a.ServerName == b.ServerName &&\n\t\ta.Attributes.Equal(b.Attributes) &&\n\t\ta.Metadata == b.Metadata\n}\n\nfunc equalAddressesIgnoringBalAttributes(a, b []resolver.Address) bool {\n\treturn slices.EqualFunc(a, b, func(a, b resolver.Address) bool { return equalAddressIgnoringBalAttributes(&a, &b) })\n}\n\n// updateAddrs updates ac.addrs with the new addresses list and handles active\n// connections or connection attempts.\nfunc (ac *addrConn) updateAddrs(addrs []resolver.Address) {\n\taddrs = copyAddresses(addrs)\n\tlimit := len(addrs)\n\tif limit > 5 {\n\t\tlimit = 5\n\t}\n\tchannelz.Infof(logger, ac.channelz, \"addrConn: updateAddrs addrs (%d of %d): %v\", limit, len(addrs), addrs[:limit])\n\n\tac.mu.Lock()\n\tif equalAddressesIgnoringBalAttributes(ac.addrs, addrs) {\n\t\tac.mu.Unlock()\n\t\treturn\n\t}\n\n\tac.addrs = addrs\n\tac.updateTelemetryLabelsLocked()\n\tif ac.state == connectivity.Shutdown ||\n\t\tac.state == connectivity.TransientFailure ||\n\t\tac.state == connectivity.Idle {\n\t\t// We were not connecting, so do nothing but update the addresses.\n\t\tac.mu.Unlock()\n\t\treturn\n\t}\n\n\tif ac.state == connectivity.Ready {\n\t\t// Try to find the connected address.\n\t\tfor _, a := range addrs {\n\t\t\ta.ServerName = ac.cc.getServerName(a)\n\t\t\tif equalAddressIgnoringBalAttributes(&a, &ac.curAddr) {\n\t\t\t\t// We are connected to a valid address, so do nothing but\n\t\t\t\t// update the addresses.\n\t\t\t\tac.mu.Unlock()\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\t// We are either connected to the wrong address or currently connecting.\n\t// Stop the current iteration and restart.\n\n\tac.cancel()\n\tac.ctx, ac.cancel = context.WithCancel(ac.cc.ctx)\n\n\t// We have to defer here because GracefulClose => onClose, which requires\n\t// locking ac.mu.\n\tif ac.transport != nil {\n\t\tdefer ac.transport.GracefulClose()\n\t\tac.transport = nil\n\t}\n\n\tif len(addrs) == 0 {\n\t\tac.updateConnectivityState(connectivity.Idle, nil)\n\t}\n\n\t// Since we were connecting/connected, we should start a new connection\n\t// attempt.\n\tgo ac.resetTransportAndUnlock()\n}\n\n// getServerName determines the serverName to be used in the connection\n// handshake. The default value for the serverName is the authority on the\n// ClientConn, which either comes from the user's dial target or through an\n// authority override specified using the WithAuthority dial option. Name\n// resolvers can specify a per-address override for the serverName through the\n// resolver.Address.ServerName field which is used only if the WithAuthority\n// dial option was not used. The rationale is that per-address authority\n// overrides specified by the name resolver can represent a security risk, while\n// an override specified by the user is more dependable since they probably know\n// what they are doing.\nfunc (cc *ClientConn) getServerName(addr resolver.Address) string {\n\tif cc.dopts.authority != \"\" {\n\t\treturn cc.dopts.authority\n\t}\n\tif addr.ServerName != \"\" {\n\t\treturn addr.ServerName\n\t}\n\treturn cc.authority\n}\n\nfunc getMethodConfig(sc *ServiceConfig, method string) MethodConfig {\n\tif sc == nil {\n\t\treturn MethodConfig{}\n\t}\n\tif m, ok := sc.Methods[method]; ok {\n\t\treturn m\n\t}\n\ti := strings.LastIndex(method, \"/\")\n\tif m, ok := sc.Methods[method[:i+1]]; ok {\n\t\treturn m\n\t}\n\treturn sc.Methods[\"\"]\n}\n\n// GetMethodConfig gets the method config of the input method.\n// If there's an exact match for input method (i.e. /service/method), we return\n// the corresponding MethodConfig.\n// If there isn't an exact match for the input method, we look for the service's default\n// config under the service (i.e /service/) and then for the default for all services (empty string).\n//\n// If there is a default MethodConfig for the service, we return it.\n// Otherwise, we return an empty MethodConfig.\nfunc (cc *ClientConn) GetMethodConfig(method string) MethodConfig {\n\t// TODO: Avoid the locking here.\n\tcc.mu.RLock()\n\tdefer cc.mu.RUnlock()\n\treturn getMethodConfig(cc.sc, method)\n}\n\nfunc (cc *ClientConn) healthCheckConfig() *healthCheckConfig {\n\tcc.mu.RLock()\n\tdefer cc.mu.RUnlock()\n\tif cc.sc == nil {\n\t\treturn nil\n\t}\n\treturn cc.sc.healthCheckConfig\n}\n\nfunc (cc *ClientConn) applyServiceConfigAndBalancer(sc *ServiceConfig, configSelector iresolver.ConfigSelector) {\n\tif sc == nil {\n\t\t// should never reach here.\n\t\treturn\n\t}\n\tcc.sc = sc\n\tif configSelector != nil {\n\t\tcc.safeConfigSelector.UpdateConfigSelector(configSelector)\n\t}\n\n\tif cc.sc.retryThrottling != nil {\n\t\tnewThrottler := &retryThrottler{\n\t\t\ttokens: cc.sc.retryThrottling.MaxTokens,\n\t\t\tmax:    cc.sc.retryThrottling.MaxTokens,\n\t\t\tthresh: cc.sc.retryThrottling.MaxTokens / 2,\n\t\t\tratio:  cc.sc.retryThrottling.TokenRatio,\n\t\t}\n\t\tcc.retryThrottler.Store(newThrottler)\n\t} else {\n\t\tcc.retryThrottler.Store((*retryThrottler)(nil))\n\t}\n}\n\nfunc (cc *ClientConn) resolveNow(o resolver.ResolveNowOptions) {\n\tcc.mu.RLock()\n\tcc.resolverWrapper.resolveNow(o)\n\tcc.mu.RUnlock()\n}\n\nfunc (cc *ClientConn) resolveNowLocked(o resolver.ResolveNowOptions) {\n\tcc.resolverWrapper.resolveNow(o)\n}\n\n// ResetConnectBackoff wakes up all subchannels in transient failure and causes\n// them to attempt another connection immediately.  It also resets the backoff\n// times used for subsequent attempts regardless of the current state.\n//\n// In general, this function should not be used.  Typical service or network\n// outages result in a reasonable client reconnection strategy by default.\n// However, if a previously unavailable network becomes available, this may be\n// used to trigger an immediate reconnect.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc (cc *ClientConn) ResetConnectBackoff() {\n\tcc.mu.Lock()\n\tconns := cc.conns\n\tcc.mu.Unlock()\n\tfor ac := range conns {\n\t\tac.resetConnectBackoff()\n\t}\n}\n\n// Close tears down the ClientConn and all underlying connections.\nfunc (cc *ClientConn) Close() error {\n\tdefer func() {\n\t\tcc.cancel()\n\t\t<-cc.csMgr.pubSub.Done()\n\t}()\n\n\t// Prevent calls to enter/exit idle immediately, and ensure we are not\n\t// currently entering/exiting idle mode.\n\tcc.idlenessMgr.Close()\n\n\tcc.mu.Lock()\n\tif cc.conns == nil {\n\t\tcc.mu.Unlock()\n\t\treturn ErrClientConnClosing\n\t}\n\n\tconns := cc.conns\n\tcc.conns = nil\n\tcc.csMgr.updateState(connectivity.Shutdown)\n\n\t// We can safely unlock and continue to access all fields now as\n\t// cc.conns==nil, preventing any further operations on cc.\n\tcc.mu.Unlock()\n\n\tcc.resolverWrapper.close()\n\t// The order of closing matters here since the balancer wrapper assumes the\n\t// picker is closed before it is closed.\n\tcc.pickerWrapper.close()\n\tcc.balancerWrapper.close()\n\n\t<-cc.resolverWrapper.serializer.Done()\n\t<-cc.balancerWrapper.serializer.Done()\n\tvar wg sync.WaitGroup\n\tfor ac := range conns {\n\t\twg.Add(1)\n\t\tgo func(ac *addrConn) {\n\t\t\tdefer wg.Done()\n\t\t\tac.tearDown(ErrClientConnClosing)\n\t\t}(ac)\n\t}\n\twg.Wait()\n\tcc.addTraceEvent(\"deleted\")\n\t// TraceEvent needs to be called before RemoveEntry, as TraceEvent may add\n\t// trace reference to the entity being deleted, and thus prevent it from being\n\t// deleted right away.\n\tchannelz.RemoveEntry(cc.channelz.ID)\n\n\treturn nil\n}\n\n// addrConn is a network connection to a given address.\ntype addrConn struct {\n\tctx    context.Context\n\tcancel context.CancelFunc\n\n\tcc     *ClientConn\n\tdopts  dialOptions\n\tacbw   *acBalancerWrapper\n\tscopts balancer.NewSubConnOptions\n\n\t// transport is set when there's a viable transport (note: ac state may not be READY as LB channel\n\t// health checking may require server to report healthy to set ac to READY), and is reset\n\t// to nil when the current transport should no longer be used to create a stream (e.g. after GoAway\n\t// is received, transport is closed, ac has been torn down).\n\ttransport transport.ClientTransport // The current transport.\n\n\t// This mutex is used on the RPC path, so its usage should be minimized as\n\t// much as possible.\n\t// TODO: Find a lock-free way to retrieve the transport and state from the\n\t// addrConn.\n\tmu      sync.Mutex\n\tcurAddr resolver.Address   // The current address.\n\taddrs   []resolver.Address // All addresses that the resolver resolved to.\n\n\t// Use updateConnectivityState for updating addrConn's connectivity state.\n\tstate connectivity.State\n\n\tbackoffIdx   int // Needs to be stateful for resetConnectBackoff.\n\tresetBackoff chan struct{}\n\n\tchannelz *channelz.SubChannel\n\n\tlocalityLabel        string\n\tbackendServiceLabel  string\n\tdisconnectErrorLabel string\n}\n\n// Note: this requires a lock on ac.mu.\nfunc (ac *addrConn) updateConnectivityState(s connectivity.State, lastErr error) {\n\tif ac.state == s {\n\t\treturn\n\t}\n\n\t// If we are transitioning out of Ready, it means there is a disconnection.\n\t// A SubConn can also transition from CONNECTING directly to IDLE when\n\t// a transport is successfully created, but the connection fails\n\t// before the SubConn can send the notification for READY. We treat\n\t// this as a successful connection and transition to IDLE.\n\t// TODO: https://github.com/grpc/grpc-go/issues/7862 - Remove the second\n\t// part of the if condition below once the issue is fixed.\n\tif ac.state == connectivity.Ready || (ac.state == connectivity.Connecting && s == connectivity.Idle) {\n\t\tdisconnectError := ac.disconnectErrorLabel\n\t\tif disconnectError == \"\" {\n\t\t\tdisconnectError = \"unknown\"\n\t\t}\n\t\tdisconnectionsMetric.Record(ac.cc.metricsRecorderList, 1, ac.cc.target, ac.backendServiceLabel, ac.localityLabel, disconnectError)\n\t\topenConnectionsMetric.Record(ac.cc.metricsRecorderList, -1, ac.cc.target, ac.backendServiceLabel, ac.securityLevelLocked(), ac.localityLabel)\n\t}\n\tac.disconnectErrorLabel = \"\" // Reset for next time\n\tac.state = s\n\tac.channelz.ChannelMetrics.State.Store(&s)\n\tif lastErr == nil {\n\t\tchannelz.Infof(logger, ac.channelz, \"Subchannel Connectivity change to %v\", s)\n\t} else {\n\t\tchannelz.Infof(logger, ac.channelz, \"Subchannel Connectivity change to %v, last error: %s\", s, lastErr)\n\t}\n\tac.acbw.updateState(s, lastErr)\n}\n\n// adjustParams updates parameters used to create transports upon\n// receiving a GoAway.\nfunc (ac *addrConn) adjustParams(r transport.GoAwayReason) {\n\tif r == transport.GoAwayTooManyPings {\n\t\tv := 2 * ac.dopts.copts.KeepaliveParams.Time\n\t\tac.cc.mu.Lock()\n\t\tif v > ac.cc.keepaliveParams.Time {\n\t\t\tac.cc.keepaliveParams.Time = v\n\t\t}\n\t\tac.cc.mu.Unlock()\n\t}\n}\n\n// resetTransportAndUnlock unconditionally connects the addrConn.\n//\n// ac.mu must be held by the caller, and this function will guarantee it is released.\nfunc (ac *addrConn) resetTransportAndUnlock() {\n\tacCtx := ac.ctx\n\tif acCtx.Err() != nil {\n\t\tac.mu.Unlock()\n\t\treturn\n\t}\n\n\taddrs := ac.addrs\n\tbackoffFor := ac.dopts.bs.Backoff(ac.backoffIdx)\n\t// This will be the duration that dial gets to finish.\n\tdialDuration := minConnectTimeout\n\tif ac.dopts.minConnectTimeout != nil {\n\t\tdialDuration = ac.dopts.minConnectTimeout()\n\t}\n\n\tif dialDuration < backoffFor {\n\t\t// Give dial more time as we keep failing to connect.\n\t\tdialDuration = backoffFor\n\t}\n\t// We can potentially spend all the time trying the first address, and\n\t// if the server accepts the connection and then hangs, the following\n\t// addresses will never be tried.\n\t//\n\t// The spec doesn't mention what should be done for multiple addresses.\n\t// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md#proposed-backoff-algorithm\n\tconnectDeadline := time.Now().Add(dialDuration)\n\n\tac.updateConnectivityState(connectivity.Connecting, nil)\n\tac.mu.Unlock()\n\n\tif err := ac.tryAllAddrs(acCtx, addrs, connectDeadline); err != nil {\n\t\tif !errors.Is(err, context.Canceled) {\n\t\t\tconnectionAttemptsFailedMetric.Record(ac.cc.metricsRecorderList, 1, ac.cc.target, ac.backendServiceLabel, ac.localityLabel)\n\t\t} else {\n\t\t\tif logger.V(2) {\n\t\t\t\t// This records cancelled connection attempts which can be later\n\t\t\t\t// replaced by a metric.\n\t\t\t\tlogger.Infof(\"Context cancellation detected; not recording this as a failed connection attempt.\")\n\t\t\t}\n\t\t}\n\t\t// TODO: #7534 - Move re-resolution requests into the pick_first LB policy\n\t\t// to ensure one resolution request per pass instead of per subconn failure.\n\t\tac.cc.resolveNow(resolver.ResolveNowOptions{})\n\t\tac.mu.Lock()\n\t\tif acCtx.Err() != nil {\n\t\t\t// addrConn was torn down.\n\t\t\tac.mu.Unlock()\n\t\t\treturn\n\t\t}\n\t\t// After exhausting all addresses, the addrConn enters\n\t\t// TRANSIENT_FAILURE.\n\t\tac.updateConnectivityState(connectivity.TransientFailure, err)\n\n\t\t// Backoff.\n\t\tb := ac.resetBackoff\n\t\tac.mu.Unlock()\n\n\t\ttimer := time.NewTimer(backoffFor)\n\t\tselect {\n\t\tcase <-timer.C:\n\t\t\tac.mu.Lock()\n\t\t\tac.backoffIdx++\n\t\t\tac.mu.Unlock()\n\t\tcase <-b:\n\t\t\ttimer.Stop()\n\t\tcase <-acCtx.Done():\n\t\t\ttimer.Stop()\n\t\t\treturn\n\t\t}\n\n\t\tac.mu.Lock()\n\t\tif acCtx.Err() == nil {\n\t\t\tac.updateConnectivityState(connectivity.Idle, err)\n\t\t}\n\t\tac.mu.Unlock()\n\t\treturn\n\t}\n\t// Success; reset backoff.\n\tac.mu.Lock()\n\tconnectionAttemptsSucceededMetric.Record(ac.cc.metricsRecorderList, 1, ac.cc.target, ac.backendServiceLabel, ac.localityLabel)\n\topenConnectionsMetric.Record(ac.cc.metricsRecorderList, 1, ac.cc.target, ac.backendServiceLabel, ac.securityLevelLocked(), ac.localityLabel)\n\tac.backoffIdx = 0\n\tac.mu.Unlock()\n}\n\n// updateTelemetryLabelsLocked calculates and caches the telemetry labels based on the\n// first address in addrConn.\nfunc (ac *addrConn) updateTelemetryLabelsLocked() {\n\tlabelsFunc, ok := internal.AddressToTelemetryLabels.(func(resolver.Address) map[string]string)\n\tif !ok || len(ac.addrs) == 0 {\n\t\t// Reset defaults\n\t\tac.localityLabel = \"\"\n\t\tac.backendServiceLabel = \"\"\n\t\treturn\n\t}\n\tlabels := labelsFunc(ac.addrs[0])\n\tac.localityLabel = labels[\"grpc.lb.locality\"]\n\tac.backendServiceLabel = labels[\"grpc.lb.backend_service\"]\n}\n\ntype securityLevelKey struct{}\n\nfunc (ac *addrConn) securityLevelLocked() string {\n\tvar secLevel string\n\t// During disconnection, ac.transport is nil. Fall back to the security level\n\t// stored in the current address during connection.\n\tif ac.transport == nil {\n\t\tsecLevel, _ = ac.curAddr.Attributes.Value(securityLevelKey{}).(string)\n\t\treturn secLevel\n\t}\n\tauthInfo := ac.transport.Peer().AuthInfo\n\tif ci, ok := authInfo.(interface {\n\t\tGetCommonAuthInfo() credentials.CommonAuthInfo\n\t}); ok {\n\t\tsecLevel = ci.GetCommonAuthInfo().SecurityLevel.String()\n\t\t// Store the security level in the current address' attributes so\n\t\t// that it remains available for disconnection metrics after the\n\t\t// transport is closed.\n\t\tac.curAddr.Attributes = ac.curAddr.Attributes.WithValue(securityLevelKey{}, secLevel)\n\t}\n\treturn secLevel\n}\n\n// tryAllAddrs tries to create a connection to the addresses, and stop when at\n// the first successful one. It returns an error if no address was successfully\n// connected, or updates ac appropriately with the new transport.\nfunc (ac *addrConn) tryAllAddrs(ctx context.Context, addrs []resolver.Address, connectDeadline time.Time) error {\n\tvar firstConnErr error\n\tfor _, addr := range addrs {\n\t\tac.channelz.ChannelMetrics.Target.Store(&addr.Addr)\n\t\tif ctx.Err() != nil {\n\t\t\treturn errConnClosing\n\t\t}\n\t\tac.mu.Lock()\n\n\t\tac.cc.mu.RLock()\n\t\tac.dopts.copts.KeepaliveParams = ac.cc.keepaliveParams\n\t\tac.cc.mu.RUnlock()\n\n\t\tcopts := ac.dopts.copts\n\t\tif ac.scopts.CredsBundle != nil {\n\t\t\tcopts.CredsBundle = ac.scopts.CredsBundle\n\t\t}\n\t\tac.mu.Unlock()\n\n\t\tchannelz.Infof(logger, ac.channelz, \"Subchannel picks a new address %q to connect\", addr.Addr)\n\n\t\terr := ac.createTransport(ctx, addr, copts, connectDeadline)\n\t\tif err == nil {\n\t\t\treturn nil\n\t\t}\n\t\tif firstConnErr == nil {\n\t\t\tfirstConnErr = err\n\t\t}\n\t\tac.cc.updateConnectionError(err)\n\t}\n\n\t// Couldn't connect to any address.\n\treturn firstConnErr\n}\n\n// createTransport creates a connection to addr. It returns an error if the\n// address was not successfully connected, or updates ac appropriately with the\n// new transport.\nfunc (ac *addrConn) createTransport(ctx context.Context, addr resolver.Address, copts transport.ConnectOptions, connectDeadline time.Time) error {\n\taddr.ServerName = ac.cc.getServerName(addr)\n\thctx, hcancel := context.WithCancel(ctx)\n\n\tonClose := func(info transport.GoAwayInfo) {\n\t\tac.mu.Lock()\n\t\tdefer ac.mu.Unlock()\n\t\t// adjust params based on GoAwayReason\n\t\tac.adjustParams(info.Reason)\n\t\tif ctx.Err() != nil {\n\t\t\t// Already shut down or connection attempt canceled.  tearDown() or\n\t\t\t// updateAddrs() already cleared the transport and canceled hctx\n\t\t\t// via ac.ctx, and we expected this connection to be closed, so do\n\t\t\t// nothing here.\n\t\t\treturn\n\t\t}\n\t\thcancel()\n\t\tif ac.transport == nil {\n\t\t\t// We're still connecting to this address, which could error.  Do\n\t\t\t// not update the connectivity state or resolve; these will happen\n\t\t\t// at the end of the tryAllAddrs connection loop in the event of an\n\t\t\t// error.\n\t\t\treturn\n\t\t}\n\t\tac.transport = nil\n\t\tac.disconnectErrorLabel = disconnectErrorString(info)\n\t\t// Refresh the name resolver on any connection loss.\n\t\tac.cc.resolveNow(resolver.ResolveNowOptions{})\n\t\t// Always go idle and wait for the LB policy to initiate a new\n\t\t// connection attempt.\n\t\tac.updateConnectivityState(connectivity.Idle, nil)\n\t}\n\n\tconnectCtx, cancel := context.WithDeadline(ctx, connectDeadline)\n\tdefer cancel()\n\tcopts.ChannelzParent = ac.channelz\n\n\tnewTr, err := transport.NewHTTP2Client(connectCtx, ac.cc.ctx, addr, copts, onClose)\n\tif err != nil {\n\t\tif logger.V(2) {\n\t\t\tlogger.Infof(\"Creating new client transport to %q: %v\", addr, err)\n\t\t}\n\t\t// newTr is either nil, or closed.\n\t\thcancel()\n\t\tchannelz.Warningf(logger, ac.channelz, \"grpc: addrConn.createTransport failed to connect to %s. Err: %v\", addr, err)\n\t\treturn err\n\t}\n\n\tac.mu.Lock()\n\tif ctx.Err() != nil {\n\t\t// This can happen if the subConn was removed while in `Connecting`\n\t\t// state. tearDown() would have set the state to `Shutdown`, but\n\t\t// would not have closed the transport since ac.transport would not\n\t\t// have been set at that point.\n\n\t\t// We unlock ac.mu because newTr.Close() calls onClose()\n\t\t// inline, which requires locking ac.mu.\n\t\tac.mu.Unlock()\n\n\t\t// The error we pass to Close() is immaterial since there are no open\n\t\t// streams at this point, so no trailers with error details will be sent\n\t\t// out. We just need to pass a non-nil error.\n\t\t//\n\t\t// This can also happen when updateAddrs is called during a connection\n\t\t// attempt.\n\t\tnewTr.Close(transport.ErrConnClosing)\n\t\treturn nil\n\t}\n\tdefer ac.mu.Unlock()\n\tif hctx.Err() != nil {\n\t\t// onClose was already called for this connection, but the connection\n\t\t// was successfully established first.  Consider it a success and set\n\t\t// the new state to Idle.\n\t\tac.updateConnectivityState(connectivity.Idle, nil)\n\t\treturn nil\n\t}\n\tac.curAddr = addr\n\tac.transport = newTr\n\tac.startHealthCheck(hctx) // Will set state to READY if appropriate.\n\treturn nil\n}\n\n// disconnectErrorString returns the grpc.disconnect_error metric label corresponding\n// to the provided transport.GoAwayInfo, as specified by gRFC A94:\n// https://github.com/grpc/proposal/blob/master/A94-grpc-subchannel-disconnections-metrics.md\nfunc disconnectErrorString(info transport.GoAwayInfo) string {\n\terr := info.Err\n\tvar sysErr syscall.Errno\n\tswitch {\n\tcase info.Reason != transport.GoAwayInvalid:\n\t\treturn fmt.Sprintf(\"GOAWAY %s\", info.GoAwayCode.String())\n\tcase err == nil:\n\t\treturn \"unknown\"\n\tcase errors.Is(err, context.Canceled):\n\t\treturn \"subchannel shutdown\"\n\tcase errors.Is(err, syscall.ECONNRESET):\n\t\treturn \"connection reset\"\n\tcase errors.Is(err, syscall.ETIMEDOUT), errors.Is(err, context.DeadlineExceeded), errors.Is(err, os.ErrDeadlineExceeded):\n\t\treturn \"connection timed out\"\n\tcase errors.Is(err, syscall.ECONNABORTED):\n\t\treturn \"connection aborted\"\n\tcase errors.As(err, &sysErr):\n\t\treturn \"socket error\"\n\tdefault:\n\t\treturn \"unknown\"\n\t}\n}\n\n// startHealthCheck starts the health checking stream (RPC) to watch the health\n// stats of this connection if health checking is requested and configured.\n//\n// LB channel health checking is enabled when all requirements below are met:\n// 1. it is not disabled by the user with the WithDisableHealthCheck DialOption\n// 2. internal.HealthCheckFunc is set by importing the grpc/health package\n// 3. a service config with non-empty healthCheckConfig field is provided\n// 4. the load balancer requests it\n//\n// It sets addrConn to READY if the health checking stream is not started.\n//\n// Caller must hold ac.mu.\nfunc (ac *addrConn) startHealthCheck(ctx context.Context) {\n\tvar healthcheckManagingState bool\n\tdefer func() {\n\t\tif !healthcheckManagingState {\n\t\t\tac.updateConnectivityState(connectivity.Ready, nil)\n\t\t}\n\t}()\n\n\tif ac.cc.dopts.disableHealthCheck {\n\t\treturn\n\t}\n\thealthCheckConfig := ac.cc.healthCheckConfig()\n\tif healthCheckConfig == nil {\n\t\treturn\n\t}\n\tif !ac.scopts.HealthCheckEnabled {\n\t\treturn\n\t}\n\thealthCheckFunc := internal.HealthCheckFunc\n\tif healthCheckFunc == nil {\n\t\t// The health package is not imported to set health check function.\n\t\t//\n\t\t// TODO: add a link to the health check doc in the error message.\n\t\tchannelz.Error(logger, ac.channelz, \"Health check is requested but health check function is not set.\")\n\t\treturn\n\t}\n\n\thealthcheckManagingState = true\n\n\t// Set up the health check helper functions.\n\tcurrentTr := ac.transport\n\tnewStream := func(method string) (any, error) {\n\t\tac.mu.Lock()\n\t\tif ac.transport != currentTr {\n\t\t\tac.mu.Unlock()\n\t\t\treturn nil, status.Error(codes.Canceled, \"the provided transport is no longer valid to use\")\n\t\t}\n\t\tac.mu.Unlock()\n\t\treturn newNonRetryClientStream(ctx, &StreamDesc{ServerStreams: true}, method, currentTr, ac)\n\t}\n\tsetConnectivityState := func(s connectivity.State, lastErr error) {\n\t\tac.mu.Lock()\n\t\tdefer ac.mu.Unlock()\n\t\tif ac.transport != currentTr {\n\t\t\treturn\n\t\t}\n\t\tac.updateConnectivityState(s, lastErr)\n\t}\n\t// Start the health checking stream.\n\tgo func() {\n\t\terr := healthCheckFunc(ctx, newStream, setConnectivityState, healthCheckConfig.ServiceName)\n\t\tif err != nil {\n\t\t\tif status.Code(err) == codes.Unimplemented {\n\t\t\t\tchannelz.Error(logger, ac.channelz, \"Subchannel health check is unimplemented at server side, thus health check is disabled\")\n\t\t\t} else {\n\t\t\t\tchannelz.Errorf(logger, ac.channelz, \"Health checking failed: %v\", err)\n\t\t\t}\n\t\t}\n\t}()\n}\n\nfunc (ac *addrConn) resetConnectBackoff() {\n\tac.mu.Lock()\n\tclose(ac.resetBackoff)\n\tac.backoffIdx = 0\n\tac.resetBackoff = make(chan struct{})\n\tac.mu.Unlock()\n}\n\n// getReadyTransport returns the transport if ac's state is READY or nil if not.\nfunc (ac *addrConn) getReadyTransport() transport.ClientTransport {\n\tac.mu.Lock()\n\tdefer ac.mu.Unlock()\n\tif ac.state == connectivity.Ready {\n\t\treturn ac.transport\n\t}\n\treturn nil\n}\n\n// tearDown starts to tear down the addrConn.\n//\n// Note that tearDown doesn't remove ac from ac.cc.conns, so the addrConn struct\n// will leak. In most cases, call cc.removeAddrConn() instead.\nfunc (ac *addrConn) tearDown(err error) {\n\tac.mu.Lock()\n\tif ac.state == connectivity.Shutdown {\n\t\tac.mu.Unlock()\n\t\treturn\n\t}\n\tcurTr := ac.transport\n\tac.transport = nil\n\tif ac.disconnectErrorLabel == \"\" {\n\t\tac.disconnectErrorLabel = \"subchannel shutdown\"\n\t}\n\t// We have to set the state to Shutdown before anything else to prevent races\n\t// between setting the state and logic that waits on context cancellation / etc.\n\tac.updateConnectivityState(connectivity.Shutdown, nil)\n\tac.cancel()\n\tac.curAddr = resolver.Address{}\n\n\tchannelz.AddTraceEvent(logger, ac.channelz, 0, &channelz.TraceEvent{\n\t\tDesc:     \"Subchannel deleted\",\n\t\tSeverity: channelz.CtInfo,\n\t\tParent: &channelz.TraceEvent{\n\t\t\tDesc:     fmt.Sprintf(\"Subchannel(id:%d) deleted\", ac.channelz.ID),\n\t\t\tSeverity: channelz.CtInfo,\n\t\t},\n\t})\n\t// TraceEvent needs to be called before RemoveEntry, as TraceEvent may add\n\t// trace reference to the entity being deleted, and thus prevent it from\n\t// being deleted right away.\n\tchannelz.RemoveEntry(ac.channelz.ID)\n\tac.mu.Unlock()\n\n\t// We have to release the lock before the call to GracefulClose/Close here\n\t// because both of them call onClose(), which requires locking ac.mu.\n\tif curTr != nil {\n\t\tif err == errConnDrain {\n\t\t\t// Close the transport gracefully when the subConn is being shutdown.\n\t\t\t//\n\t\t\t// GracefulClose() may be executed multiple times if:\n\t\t\t// - multiple GoAway frames are received from the server\n\t\t\t// - there are concurrent name resolver or balancer triggered\n\t\t\t//   address removal and GoAway\n\t\t\tcurTr.GracefulClose()\n\t\t} else {\n\t\t\t// Hard close the transport when the channel is entering idle or is\n\t\t\t// being shutdown. In the case where the channel is being shutdown,\n\t\t\t// closing of transports is also taken care of by cancellation of cc.ctx.\n\t\t\t// But in the case where the channel is entering idle, we need to\n\t\t\t// explicitly close the transports here. Instead of distinguishing\n\t\t\t// between these two cases, it is simpler to close the transport\n\t\t\t// unconditionally here.\n\t\t\tcurTr.Close(err)\n\t\t}\n\t}\n}\n\ntype retryThrottler struct {\n\tmax    float64\n\tthresh float64\n\tratio  float64\n\n\tmu     sync.Mutex\n\ttokens float64 // TODO(dfawley): replace with atomic and remove lock.\n}\n\n// throttle subtracts a retry token from the pool and returns whether a retry\n// should be throttled (disallowed) based upon the retry throttling policy in\n// the service config.\nfunc (rt *retryThrottler) throttle() bool {\n\tif rt == nil {\n\t\treturn false\n\t}\n\trt.mu.Lock()\n\tdefer rt.mu.Unlock()\n\trt.tokens--\n\tif rt.tokens < 0 {\n\t\trt.tokens = 0\n\t}\n\treturn rt.tokens <= rt.thresh\n}\n\nfunc (rt *retryThrottler) successfulRPC() {\n\tif rt == nil {\n\t\treturn\n\t}\n\trt.mu.Lock()\n\tdefer rt.mu.Unlock()\n\trt.tokens += rt.ratio\n\tif rt.tokens > rt.max {\n\t\trt.tokens = rt.max\n\t}\n}\n\nfunc (ac *addrConn) incrCallsStarted() {\n\tac.channelz.ChannelMetrics.CallsStarted.Add(1)\n\tac.channelz.ChannelMetrics.LastCallStartedTimestamp.Store(time.Now().UnixNano())\n}\n\nfunc (ac *addrConn) incrCallsSucceeded() {\n\tac.channelz.ChannelMetrics.CallsSucceeded.Add(1)\n}\n\nfunc (ac *addrConn) incrCallsFailed() {\n\tac.channelz.ChannelMetrics.CallsFailed.Add(1)\n}\n\n// ErrClientConnTimeout indicates that the ClientConn cannot establish the\n// underlying connections within the specified timeout.\n//\n// Deprecated: This error is never returned by grpc and should not be\n// referenced by users.\nvar ErrClientConnTimeout = errors.New(\"grpc: timed out when dialing\")\n\n// getResolver finds the scheme in the cc's resolvers or the global registry.\n// scheme should always be lowercase (typically by virtue of url.Parse()\n// performing proper RFC3986 behavior).\nfunc (cc *ClientConn) getResolver(scheme string) resolver.Builder {\n\tfor _, rb := range cc.dopts.resolvers {\n\t\tif scheme == rb.Scheme() {\n\t\t\treturn rb\n\t\t}\n\t}\n\treturn resolver.Get(scheme)\n}\n\nfunc (cc *ClientConn) updateConnectionError(err error) {\n\tcc.lceMu.Lock()\n\tcc.lastConnectionError = err\n\tcc.lceMu.Unlock()\n}\n\nfunc (cc *ClientConn) connectionError() error {\n\tcc.lceMu.Lock()\n\tdefer cc.lceMu.Unlock()\n\treturn cc.lastConnectionError\n}\n\n// initParsedTargetAndResolverBuilder parses the user's dial target and stores\n// the parsed target in `cc.parsedTarget`.\n//\n// The resolver to use is determined based on the scheme in the parsed target\n// and the same is stored in `cc.resolverBuilder`.\n//\n// Doesn't grab cc.mu as this method is expected to be called only at Dial time.\nfunc (cc *ClientConn) initParsedTargetAndResolverBuilder() error {\n\tlogger.Infof(\"original dial target is: %q\", cc.target)\n\n\tvar rb resolver.Builder\n\tparsedTarget, err := parseTarget(cc.target)\n\tif err == nil {\n\t\trb = cc.getResolver(parsedTarget.URL.Scheme)\n\t\tif rb != nil {\n\t\t\tcc.parsedTarget = parsedTarget\n\t\t\tcc.resolverBuilder = rb\n\t\t\treturn nil\n\t\t}\n\t}\n\n\t// We are here because the user's dial target did not contain a scheme or\n\t// specified an unregistered scheme. We should fallback to the default\n\t// scheme, except when a custom dialer is specified in which case, we should\n\t// always use passthrough scheme. For either case, we need to respect any overridden\n\t// global defaults set by the user.\n\tdefScheme := cc.dopts.defaultScheme\n\tif internal.UserSetDefaultScheme {\n\t\tdefScheme = resolver.GetDefaultScheme()\n\t}\n\n\tcanonicalTarget := defScheme + \":///\" + cc.target\n\n\tparsedTarget, err = parseTarget(canonicalTarget)\n\tif err != nil {\n\t\treturn err\n\t}\n\trb = cc.getResolver(parsedTarget.URL.Scheme)\n\tif rb == nil {\n\t\treturn fmt.Errorf(\"could not get resolver for default scheme: %q\", parsedTarget.URL.Scheme)\n\t}\n\tcc.parsedTarget = parsedTarget\n\tcc.resolverBuilder = rb\n\treturn nil\n}\n\n// parseTarget uses RFC 3986 semantics to parse the given target into a\n// resolver.Target struct containing url. Query params are stripped from the\n// endpoint.\nfunc parseTarget(target string) (resolver.Target, error) {\n\tu, err := url.Parse(target)\n\tif err != nil {\n\t\treturn resolver.Target{}, err\n\t}\n\n\treturn resolver.Target{URL: *u}, nil\n}\n\n// encodeAuthority escapes the authority string based on valid chars defined in\n// https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.\nfunc encodeAuthority(authority string) string {\n\tconst upperhex = \"0123456789ABCDEF\"\n\n\t// Return for characters that must be escaped as per\n\t// Valid chars are mentioned here:\n\t// https://datatracker.ietf.org/doc/html/rfc3986#section-3.2\n\tshouldEscape := func(c byte) bool {\n\t\t// Alphanum are always allowed.\n\t\tif 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9' {\n\t\t\treturn false\n\t\t}\n\t\tswitch c {\n\t\tcase '-', '_', '.', '~': // Unreserved characters\n\t\t\treturn false\n\t\tcase '!', '$', '&', '\\'', '(', ')', '*', '+', ',', ';', '=': // Subdelim characters\n\t\t\treturn false\n\t\tcase ':', '[', ']', '@': // Authority related delimiters\n\t\t\treturn false\n\t\t}\n\t\t// Everything else must be escaped.\n\t\treturn true\n\t}\n\n\thexCount := 0\n\tfor i := 0; i < len(authority); i++ {\n\t\tc := authority[i]\n\t\tif shouldEscape(c) {\n\t\t\thexCount++\n\t\t}\n\t}\n\n\tif hexCount == 0 {\n\t\treturn authority\n\t}\n\n\trequired := len(authority) + 2*hexCount\n\tt := make([]byte, required)\n\n\tj := 0\n\t// This logic is a barebones version of escape in the go net/url library.\n\tfor i := 0; i < len(authority); i++ {\n\t\tswitch c := authority[i]; {\n\t\tcase shouldEscape(c):\n\t\t\tt[j] = '%'\n\t\t\tt[j+1] = upperhex[c>>4]\n\t\t\tt[j+2] = upperhex[c&15]\n\t\t\tj += 3\n\t\tdefault:\n\t\t\tt[j] = authority[i]\n\t\t\tj++\n\t\t}\n\t}\n\treturn string(t)\n}\n\n// Determine channel authority. The order of precedence is as follows:\n// - user specified authority override using `WithAuthority` dial option\n// - creds' notion of server name for the authentication handshake\n// - endpoint from dial target of the form \"scheme://[authority]/endpoint\"\n//\n// Stores the determined authority in `cc.authority`.\n//\n// Returns a non-nil error if the authority returned by the transport\n// credentials do not match the authority configured through the dial option.\n//\n// Doesn't grab cc.mu as this method is expected to be called only at Dial time.\nfunc (cc *ClientConn) initAuthority() error {\n\tdopts := cc.dopts\n\t// Historically, we had two options for users to specify the serverName or\n\t// authority for a channel. One was through the transport credentials\n\t// (either in its constructor, or through the OverrideServerName() method).\n\t// The other option (for cases where WithInsecure() dial option was used)\n\t// was to use the WithAuthority() dial option.\n\t//\n\t// A few things have changed since:\n\t// - `insecure` package with an implementation of the `TransportCredentials`\n\t//   interface for the insecure case\n\t// - WithAuthority() dial option support for secure credentials\n\tauthorityFromCreds := \"\"\n\tif creds := dopts.copts.TransportCredentials; creds != nil && creds.Info().ServerName != \"\" {\n\t\tauthorityFromCreds = creds.Info().ServerName\n\t}\n\tauthorityFromDialOption := dopts.authority\n\tif (authorityFromCreds != \"\" && authorityFromDialOption != \"\") && authorityFromCreds != authorityFromDialOption {\n\t\treturn fmt.Errorf(\"ClientConn's authority from transport creds %q and dial option %q don't match\", authorityFromCreds, authorityFromDialOption)\n\t}\n\n\tendpoint := cc.parsedTarget.Endpoint()\n\tif authorityFromDialOption != \"\" {\n\t\tcc.authority = authorityFromDialOption\n\t} else if authorityFromCreds != \"\" {\n\t\tcc.authority = authorityFromCreds\n\t} else if auth, ok := cc.resolverBuilder.(resolver.AuthorityOverrider); ok {\n\t\tcc.authority = auth.OverrideAuthority(cc.parsedTarget)\n\t} else if strings.HasPrefix(endpoint, \":\") {\n\t\tcc.authority = \"localhost\" + encodeAuthority(endpoint)\n\t} else {\n\t\tcc.authority = encodeAuthority(endpoint)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/cmd/protoc-gen-go-grpc/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/cmd/protoc-gen-go-grpc/README.md",
    "content": "# protoc-gen-go-grpc\n\nThis tool generates Go language bindings of `service`s in protobuf definition\nfiles for gRPC.  For usage information, please see our [quick start\nguide](https://grpc.io/docs/languages/go/quickstart/).\n\n## Future-proofing services\n\nBy default, to register services using the methods generated by this tool, the\nservice implementations must embed the corresponding\n`Unimplemented<ServiceName>Server` for future compatibility.  This is a behavior\nchange from the grpc code generator previously included with `protoc-gen-go`.\nTo restore this behavior, set the option `require_unimplemented_servers=false`.\nE.g.:\n\n```sh\n  protoc --go-grpc_out=. --go-grpc_opt=require_unimplemented_servers=false[,other options...] \\\n```\n\nNote that this is not recommended, and the option is only provided to restore\nbackward compatibility with previously-generated code.\n\nWhen embedding the `Unimplemented<ServiceName>Server` in a struct that\nimplements the service, it should be embedded by _value_ instead of as a\n_pointer_.  If it is embedded as a pointer, it must be assigned to a valid,\nnon-nil pointer or else unimplemented methods would panic when called.  This is\ntested at service registration time, and will lead to a panic in\n`Register<ServiceName>Server` if it is not embedded properly.\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/cmd/protoc-gen-go-grpc/grpc.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage main\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/compiler/protogen\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nconst (\n\tcontextPackage = protogen.GoImportPath(\"context\")\n\tgrpcPackage    = protogen.GoImportPath(\"google.golang.org/grpc\")\n\tcodesPackage   = protogen.GoImportPath(\"google.golang.org/grpc/codes\")\n\tstatusPackage  = protogen.GoImportPath(\"google.golang.org/grpc/status\")\n)\n\ntype serviceGenerateHelperInterface interface {\n\tformatFullMethodSymbol(service *protogen.Service, method *protogen.Method) string\n\tgenFullMethods(g *protogen.GeneratedFile, service *protogen.Service)\n\tgenerateClientStruct(g *protogen.GeneratedFile, clientName string)\n\tgenerateNewClientDefinitions(g *protogen.GeneratedFile, service *protogen.Service, clientName string)\n\tgenerateUnimplementedServerType(gen *protogen.Plugin, file *protogen.File, g *protogen.GeneratedFile, service *protogen.Service)\n\tgenerateServerFunctions(gen *protogen.Plugin, file *protogen.File, g *protogen.GeneratedFile, service *protogen.Service, serverType string, serviceDescVar string)\n\tformatHandlerFuncName(service *protogen.Service, hname string) string\n}\n\ntype serviceGenerateHelper struct{}\n\nfunc (serviceGenerateHelper) formatFullMethodSymbol(service *protogen.Service, method *protogen.Method) string {\n\treturn fmt.Sprintf(\"%s_%s_FullMethodName\", service.GoName, method.GoName)\n}\n\nfunc (serviceGenerateHelper) genFullMethods(g *protogen.GeneratedFile, service *protogen.Service) {\n\tif len(service.Methods) == 0 {\n\t\treturn\n\t}\n\n\tg.P(\"const (\")\n\tfor _, method := range service.Methods {\n\t\tfmSymbol := helper.formatFullMethodSymbol(service, method)\n\t\tfmName := fmt.Sprintf(\"/%s/%s\", service.Desc.FullName(), method.Desc.Name())\n\t\tg.P(fmSymbol, ` = \"`, fmName, `\"`)\n\t}\n\tg.P(\")\")\n\tg.P()\n}\n\nfunc (serviceGenerateHelper) generateClientStruct(g *protogen.GeneratedFile, clientName string) {\n\tg.P(\"type \", unexport(clientName), \" struct {\")\n\tg.P(\"cc \", grpcPackage.Ident(\"ClientConnInterface\"))\n\tg.P(\"}\")\n\tg.P()\n}\n\nfunc (serviceGenerateHelper) generateNewClientDefinitions(g *protogen.GeneratedFile, _ *protogen.Service, clientName string) {\n\tg.P(\"return &\", unexport(clientName), \"{cc}\")\n}\n\nfunc (serviceGenerateHelper) generateUnimplementedServerType(_ *protogen.Plugin, _ *protogen.File, g *protogen.GeneratedFile, service *protogen.Service) {\n\tserverType := service.GoName + \"Server\"\n\tmustOrShould := \"must\"\n\tif !*requireUnimplemented {\n\t\tmustOrShould = \"should\"\n\t}\n\t// Server Unimplemented struct for forward compatibility.\n\tg.P(\"// Unimplemented\", serverType, \" \", mustOrShould, \" be embedded to have\")\n\tg.P(\"// forward compatible implementations.\")\n\tg.P(\"//\")\n\tg.P(\"// NOTE: this should be embedded by value instead of pointer to avoid a nil\")\n\tg.P(\"// pointer dereference when methods are called.\")\n\tg.P(\"type Unimplemented\", serverType, \" struct {}\")\n\tg.P()\n\tfor _, method := range service.Methods {\n\t\tnilArg := \"\"\n\t\tif !method.Desc.IsStreamingClient() && !method.Desc.IsStreamingServer() {\n\t\t\tnilArg = \"nil,\"\n\t\t}\n\t\tg.P(\"func (Unimplemented\", serverType, \") \", serverSignature(g, method), \"{\")\n\t\tg.P(\"return \", nilArg, statusPackage.Ident(\"Error\"), \"(\", codesPackage.Ident(\"Unimplemented\"), `, \"method `, method.GoName, ` not implemented\")`)\n\t\tg.P(\"}\")\n\t}\n\tif *requireUnimplemented {\n\t\tg.P(\"func (Unimplemented\", serverType, \") mustEmbedUnimplemented\", serverType, \"() {}\")\n\t}\n\tg.P(\"func (Unimplemented\", serverType, \") testEmbeddedByValue() {}\")\n\tg.P()\n}\n\nfunc (serviceGenerateHelper) generateServerFunctions(gen *protogen.Plugin, file *protogen.File, g *protogen.GeneratedFile, service *protogen.Service, serverType string, serviceDescVar string) {\n\t// Server handler implementations.\n\thandlerNames := make([]string, 0, len(service.Methods))\n\tfor _, method := range service.Methods {\n\t\thname := genServerMethod(gen, file, g, method, func(hname string) string {\n\t\t\treturn hname\n\t\t})\n\t\thandlerNames = append(handlerNames, hname)\n\t}\n\tgenServiceDesc(file, g, serviceDescVar, serverType, service, handlerNames)\n}\n\nfunc (serviceGenerateHelper) formatHandlerFuncName(_ *protogen.Service, hname string) string {\n\treturn hname\n}\n\nvar helper serviceGenerateHelperInterface = serviceGenerateHelper{}\n\n// FileDescriptorProto.package field number\nconst fileDescriptorProtoPackageFieldNumber = 2\n\n// FileDescriptorProto.syntax field number\nconst fileDescriptorProtoSyntaxFieldNumber = 12\n\n// generateFile generates a _grpc.pb.go file containing gRPC service definitions.\nfunc generateFile(gen *protogen.Plugin, file *protogen.File) *protogen.GeneratedFile {\n\tif len(file.Services) == 0 {\n\t\treturn nil\n\t}\n\tfilename := file.GeneratedFilenamePrefix + \"_grpc.pb.go\"\n\tg := gen.NewGeneratedFile(filename, file.GoImportPath)\n\t// Attach all comments associated with the syntax field.\n\tgenLeadingComments(g, file.Desc.SourceLocations().ByPath(protoreflect.SourcePath{fileDescriptorProtoSyntaxFieldNumber}))\n\tg.P(\"// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\")\n\tg.P(\"// versions:\")\n\tg.P(\"// - protoc-gen-go-grpc v\", version)\n\tg.P(\"// - protoc             \", protocVersion(gen))\n\tif file.Proto.GetOptions().GetDeprecated() {\n\t\tg.P(\"// \", file.Desc.Path(), \" is a deprecated file.\")\n\t} else {\n\t\tg.P(\"// source: \", file.Desc.Path())\n\t}\n\tg.P()\n\t// Attach all comments associated with the package field.\n\tgenLeadingComments(g, file.Desc.SourceLocations().ByPath(protoreflect.SourcePath{fileDescriptorProtoPackageFieldNumber}))\n\tg.P(\"package \", file.GoPackageName)\n\tg.P()\n\tgenerateFileContent(gen, file, g)\n\treturn g\n}\n\nfunc protocVersion(gen *protogen.Plugin) string {\n\tv := gen.Request.GetCompilerVersion()\n\tif v == nil {\n\t\treturn \"(unknown)\"\n\t}\n\tvar suffix string\n\tif s := v.GetSuffix(); s != \"\" {\n\t\tsuffix = \"-\" + s\n\t}\n\treturn fmt.Sprintf(\"v%d.%d.%d%s\", v.GetMajor(), v.GetMinor(), v.GetPatch(), suffix)\n}\n\n// generateFileContent generates the gRPC service definitions, excluding the package statement.\nfunc generateFileContent(gen *protogen.Plugin, file *protogen.File, g *protogen.GeneratedFile) {\n\tif len(file.Services) == 0 {\n\t\treturn\n\t}\n\n\tg.P(\"// This is a compile-time assertion to ensure that this generated file\")\n\tg.P(\"// is compatible with the grpc package it is being compiled against.\")\n\tg.P(\"// Requires gRPC-Go v1.64.0 or later.\")\n\tg.P(\"const _ = \", grpcPackage.Ident(\"SupportPackageIsVersion9\"))\n\tg.P()\n\tfor _, service := range file.Services {\n\t\tgenService(gen, file, g, service)\n\t}\n}\n\n// genServiceComments copies the comments from the RPC proto definitions\n// to the corresponding generated interface file.\nfunc genServiceComments(g *protogen.GeneratedFile, service *protogen.Service) {\n\tif service.Comments.Leading != \"\" {\n\t\t// Add empty comment line to attach this service's comments to\n\t\t// the godoc comments previously output for all services.\n\t\tg.P(\"//\")\n\t\tg.P(strings.TrimSpace(service.Comments.Leading.String()))\n\t}\n}\n\nfunc genService(gen *protogen.Plugin, file *protogen.File, g *protogen.GeneratedFile, service *protogen.Service) {\n\t// Full methods constants.\n\thelper.genFullMethods(g, service)\n\n\t// Client interface.\n\tclientName := service.GoName + \"Client\"\n\n\tg.P(\"// \", clientName, \" is the client API for \", service.GoName, \" service.\")\n\tg.P(\"//\")\n\tg.P(\"// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\")\n\n\t// Copy comments from proto file.\n\tgenServiceComments(g, service)\n\n\tif service.Desc.Options().(*descriptorpb.ServiceOptions).GetDeprecated() {\n\t\tg.P(\"//\")\n\t\tg.P(deprecationComment)\n\t}\n\tg.AnnotateSymbol(clientName, protogen.Annotation{Location: service.Location})\n\tg.P(\"type \", clientName, \" interface {\")\n\tfor _, method := range service.Methods {\n\t\tg.AnnotateSymbol(clientName+\".\"+method.GoName, protogen.Annotation{Location: method.Location})\n\t\tif method.Desc.Options().(*descriptorpb.MethodOptions).GetDeprecated() {\n\t\t\tg.P(deprecationComment)\n\t\t}\n\t\tg.P(method.Comments.Leading,\n\t\t\tclientSignature(g, method))\n\t}\n\tg.P(\"}\")\n\tg.P()\n\n\t// Client structure.\n\thelper.generateClientStruct(g, clientName)\n\n\t// NewClient factory.\n\tif service.Desc.Options().(*descriptorpb.ServiceOptions).GetDeprecated() {\n\t\tg.P(deprecationComment)\n\t}\n\tg.P(\"func New\", clientName, \" (cc \", grpcPackage.Ident(\"ClientConnInterface\"), \") \", clientName, \" {\")\n\thelper.generateNewClientDefinitions(g, service, clientName)\n\tg.P(\"}\")\n\tg.P()\n\n\tvar methodIndex, streamIndex int\n\t// Client method implementations.\n\tfor _, method := range service.Methods {\n\t\tif !method.Desc.IsStreamingServer() && !method.Desc.IsStreamingClient() {\n\t\t\t// Unary RPC method\n\t\t\tgenClientMethod(gen, file, g, method, methodIndex)\n\t\t\tmethodIndex++\n\t\t} else {\n\t\t\t// Streaming RPC method\n\t\t\tgenClientMethod(gen, file, g, method, streamIndex)\n\t\t\tstreamIndex++\n\t\t}\n\t}\n\n\tmustOrShould := \"must\"\n\tif !*requireUnimplemented {\n\t\tmustOrShould = \"should\"\n\t}\n\n\t// Server interface.\n\tserverType := service.GoName + \"Server\"\n\tg.P(\"// \", serverType, \" is the server API for \", service.GoName, \" service.\")\n\tg.P(\"// All implementations \", mustOrShould, \" embed Unimplemented\", serverType)\n\tg.P(\"// for forward compatibility.\")\n\n\t// Copy comments from proto file.\n\tgenServiceComments(g, service)\n\n\tif service.Desc.Options().(*descriptorpb.ServiceOptions).GetDeprecated() {\n\t\tg.P(\"//\")\n\t\tg.P(deprecationComment)\n\t}\n\tg.AnnotateSymbol(serverType, protogen.Annotation{Location: service.Location})\n\tg.P(\"type \", serverType, \" interface {\")\n\tfor _, method := range service.Methods {\n\t\tg.AnnotateSymbol(serverType+\".\"+method.GoName, protogen.Annotation{Location: method.Location})\n\t\tif method.Desc.Options().(*descriptorpb.MethodOptions).GetDeprecated() {\n\t\t\tg.P(deprecationComment)\n\t\t}\n\t\tg.P(method.Comments.Leading,\n\t\t\tserverSignature(g, method))\n\t}\n\tif *requireUnimplemented {\n\t\tg.P(\"mustEmbedUnimplemented\", serverType, \"()\")\n\t}\n\tg.P(\"}\")\n\tg.P()\n\n\t// Server Unimplemented struct for forward compatibility.\n\thelper.generateUnimplementedServerType(gen, file, g, service)\n\n\t// Unsafe Server interface to opt-out of forward compatibility.\n\tg.P(\"// Unsafe\", serverType, \" may be embedded to opt out of forward compatibility for this service.\")\n\tg.P(\"// Use of this interface is not recommended, as added methods to \", serverType, \" will\")\n\tg.P(\"// result in compilation errors.\")\n\tg.P(\"type Unsafe\", serverType, \" interface {\")\n\tg.P(\"mustEmbedUnimplemented\", serverType, \"()\")\n\tg.P(\"}\")\n\n\t// Server registration.\n\tif service.Desc.Options().(*descriptorpb.ServiceOptions).GetDeprecated() {\n\t\tg.P(deprecationComment)\n\t}\n\tserviceDescVar := service.GoName + \"_ServiceDesc\"\n\tg.P(\"func Register\", service.GoName, \"Server(s \", grpcPackage.Ident(\"ServiceRegistrar\"), \", srv \", serverType, \") {\")\n\tg.P(\"// If the following call panics, it indicates Unimplemented\", serverType, \" was\")\n\tg.P(\"// embedded by pointer and is nil.  This will cause panics if an\")\n\tg.P(\"// unimplemented method is ever invoked, so we test this at initialization\")\n\tg.P(\"// time to prevent it from happening at runtime later due to I/O.\")\n\tg.P(\"if t, ok := srv.(interface { testEmbeddedByValue() }); ok {\")\n\tg.P(\"t.testEmbeddedByValue()\")\n\tg.P(\"}\")\n\tg.P(\"s.RegisterService(&\", serviceDescVar, `, srv)`)\n\tg.P(\"}\")\n\tg.P()\n\n\thelper.generateServerFunctions(gen, file, g, service, serverType, serviceDescVar)\n}\n\nfunc clientSignature(g *protogen.GeneratedFile, method *protogen.Method) string {\n\ts := method.GoName + \"(ctx \" + g.QualifiedGoIdent(contextPackage.Ident(\"Context\"))\n\tif !method.Desc.IsStreamingClient() {\n\t\ts += \", in *\" + g.QualifiedGoIdent(method.Input.GoIdent)\n\t}\n\ts += \", opts ...\" + g.QualifiedGoIdent(grpcPackage.Ident(\"CallOption\")) + \") (\"\n\tif !method.Desc.IsStreamingClient() && !method.Desc.IsStreamingServer() {\n\t\ts += \"*\" + g.QualifiedGoIdent(method.Output.GoIdent)\n\t} else {\n\t\ts += clientStreamInterface(g, method)\n\t}\n\ts += \", error)\"\n\treturn s\n}\n\nfunc clientStreamInterface(g *protogen.GeneratedFile, method *protogen.Method) string {\n\ttypeParam := g.QualifiedGoIdent(method.Input.GoIdent) + \", \" + g.QualifiedGoIdent(method.Output.GoIdent)\n\tif method.Desc.IsStreamingClient() && method.Desc.IsStreamingServer() {\n\t\treturn g.QualifiedGoIdent(grpcPackage.Ident(\"BidiStreamingClient\")) + \"[\" + typeParam + \"]\"\n\t}\n\tif method.Desc.IsStreamingClient() {\n\t\treturn g.QualifiedGoIdent(grpcPackage.Ident(\"ClientStreamingClient\")) + \"[\" + typeParam + \"]\"\n\t}\n\treturn g.QualifiedGoIdent(grpcPackage.Ident(\"ServerStreamingClient\")) + \"[\" + g.QualifiedGoIdent(method.Output.GoIdent) + \"]\"\n}\n\nfunc genClientMethod(_ *protogen.Plugin, _ *protogen.File, g *protogen.GeneratedFile, method *protogen.Method, index int) {\n\tservice := method.Parent\n\tfmSymbol := helper.formatFullMethodSymbol(service, method)\n\n\tif method.Desc.Options().(*descriptorpb.MethodOptions).GetDeprecated() {\n\t\tg.P(deprecationComment)\n\t}\n\tg.P(\"func (c *\", unexport(service.GoName), \"Client) \", clientSignature(g, method), \"{\")\n\tg.P(\"cOpts := append([]\", grpcPackage.Ident(\"CallOption\"), \"{\", grpcPackage.Ident(\"StaticMethod()\"), \"}, opts...)\")\n\tif !method.Desc.IsStreamingServer() && !method.Desc.IsStreamingClient() {\n\t\tg.P(\"out := new(\", method.Output.GoIdent, \")\")\n\t\tg.P(`err := c.cc.Invoke(ctx, `, fmSymbol, `, in, out, cOpts...)`)\n\t\tg.P(\"if err != nil { return nil, err }\")\n\t\tg.P(\"return out, nil\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\treturn\n\t}\n\n\ttypeParam := g.QualifiedGoIdent(method.Input.GoIdent) + \", \" + g.QualifiedGoIdent(method.Output.GoIdent)\n\tstreamImpl := g.QualifiedGoIdent(grpcPackage.Ident(\"GenericClientStream\")) + \"[\" + typeParam + \"]\"\n\tserviceDescVar := service.GoName + \"_ServiceDesc\"\n\tg.P(\"stream, err := c.cc.NewStream(ctx, &\", serviceDescVar, \".Streams[\", index, `], `, fmSymbol, `, cOpts...)`)\n\tg.P(\"if err != nil { return nil, err }\")\n\tg.P(\"x := &\", streamImpl, \"{ClientStream: stream}\")\n\tif !method.Desc.IsStreamingClient() {\n\t\tg.P(\"if err := x.ClientStream.SendMsg(in); err != nil { return nil, err }\")\n\t\tg.P(\"if err := x.ClientStream.CloseSend(); err != nil { return nil, err }\")\n\t}\n\tg.P(\"return x, nil\")\n\tg.P(\"}\")\n\tg.P()\n\n\t// Auxiliary types aliases, for backwards compatibility.\n\tg.P(\"// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.\")\n\tg.P(\"type \", service.GoName, \"_\", method.GoName, \"Client = \", clientStreamInterface(g, method))\n\tg.P()\n}\n\nfunc serverSignature(g *protogen.GeneratedFile, method *protogen.Method) string {\n\tvar reqArgs []string\n\tret := \"error\"\n\tif !method.Desc.IsStreamingClient() && !method.Desc.IsStreamingServer() {\n\t\treqArgs = append(reqArgs, g.QualifiedGoIdent(contextPackage.Ident(\"Context\")))\n\t\tret = \"(*\" + g.QualifiedGoIdent(method.Output.GoIdent) + \", error)\"\n\t}\n\tif !method.Desc.IsStreamingClient() {\n\t\treqArgs = append(reqArgs, \"*\"+g.QualifiedGoIdent(method.Input.GoIdent))\n\t}\n\tif method.Desc.IsStreamingClient() || method.Desc.IsStreamingServer() {\n\t\treqArgs = append(reqArgs, serverStreamInterface(g, method))\n\t}\n\treturn method.GoName + \"(\" + strings.Join(reqArgs, \", \") + \") \" + ret\n}\n\nfunc genServiceDesc(file *protogen.File, g *protogen.GeneratedFile, serviceDescVar string, serverType string, service *protogen.Service, handlerNames []string) {\n\t// Service descriptor.\n\tg.P(\"// \", serviceDescVar, \" is the \", grpcPackage.Ident(\"ServiceDesc\"), \" for \", service.GoName, \" service.\")\n\tg.P(\"// It's only intended for direct use with \", grpcPackage.Ident(\"RegisterService\"), \",\")\n\tg.P(\"// and not to be introspected or modified (even as a copy)\")\n\tg.P(\"var \", serviceDescVar, \" = \", grpcPackage.Ident(\"ServiceDesc\"), \" {\")\n\tg.P(\"ServiceName: \", strconv.Quote(string(service.Desc.FullName())), \",\")\n\tg.P(\"HandlerType: (*\", serverType, \")(nil),\")\n\tg.P(\"Methods: []\", grpcPackage.Ident(\"MethodDesc\"), \"{\")\n\tfor i, method := range service.Methods {\n\t\tif method.Desc.IsStreamingClient() || method.Desc.IsStreamingServer() {\n\t\t\tcontinue\n\t\t}\n\t\tg.P(\"{\")\n\t\tg.P(\"MethodName: \", strconv.Quote(string(method.Desc.Name())), \",\")\n\t\tg.P(\"Handler: \", handlerNames[i], \",\")\n\t\tg.P(\"},\")\n\t}\n\tg.P(\"},\")\n\tg.P(\"Streams: []\", grpcPackage.Ident(\"StreamDesc\"), \"{\")\n\tfor i, method := range service.Methods {\n\t\tif !method.Desc.IsStreamingClient() && !method.Desc.IsStreamingServer() {\n\t\t\tcontinue\n\t\t}\n\t\tg.P(\"{\")\n\t\tg.P(\"StreamName: \", strconv.Quote(string(method.Desc.Name())), \",\")\n\t\tg.P(\"Handler: \", handlerNames[i], \",\")\n\t\tif method.Desc.IsStreamingServer() {\n\t\t\tg.P(\"ServerStreams: true,\")\n\t\t}\n\t\tif method.Desc.IsStreamingClient() {\n\t\t\tg.P(\"ClientStreams: true,\")\n\t\t}\n\t\tg.P(\"},\")\n\t}\n\tg.P(\"},\")\n\tg.P(\"Metadata: \\\"\", file.Desc.Path(), \"\\\",\")\n\tg.P(\"}\")\n\tg.P()\n}\n\nfunc serverStreamInterface(g *protogen.GeneratedFile, method *protogen.Method) string {\n\ttypeParam := g.QualifiedGoIdent(method.Input.GoIdent) + \", \" + g.QualifiedGoIdent(method.Output.GoIdent)\n\tif method.Desc.IsStreamingClient() && method.Desc.IsStreamingServer() {\n\t\treturn g.QualifiedGoIdent(grpcPackage.Ident(\"BidiStreamingServer\")) + \"[\" + typeParam + \"]\"\n\t}\n\tif method.Desc.IsStreamingClient() {\n\t\treturn g.QualifiedGoIdent(grpcPackage.Ident(\"ClientStreamingServer\")) + \"[\" + typeParam + \"]\"\n\t}\n\n\treturn g.QualifiedGoIdent(grpcPackage.Ident(\"ServerStreamingServer\")) + \"[\" + g.QualifiedGoIdent(method.Output.GoIdent) + \"]\"\n}\n\nfunc genServerMethod(_ *protogen.Plugin, _ *protogen.File, g *protogen.GeneratedFile, method *protogen.Method, hnameFuncNameFormatter func(string) string) string {\n\tservice := method.Parent\n\thname := fmt.Sprintf(\"_%s_%s_Handler\", service.GoName, method.GoName)\n\n\tif !method.Desc.IsStreamingClient() && !method.Desc.IsStreamingServer() {\n\t\tg.P(\"func \", hnameFuncNameFormatter(hname), \"(srv interface{}, ctx \", contextPackage.Ident(\"Context\"), \", dec func(interface{}) error, interceptor \", grpcPackage.Ident(\"UnaryServerInterceptor\"), \") (interface{}, error) {\")\n\t\tg.P(\"in := new(\", method.Input.GoIdent, \")\")\n\t\tg.P(\"if err := dec(in); err != nil { return nil, err }\")\n\t\tg.P(\"if interceptor == nil { return srv.(\", service.GoName, \"Server).\", method.GoName, \"(ctx, in) }\")\n\t\tg.P(\"info := &\", grpcPackage.Ident(\"UnaryServerInfo\"), \"{\")\n\t\tg.P(\"Server: srv,\")\n\t\tfmSymbol := helper.formatFullMethodSymbol(service, method)\n\t\tg.P(\"FullMethod: \", fmSymbol, \",\")\n\t\tg.P(\"}\")\n\t\tg.P(\"handler := func(ctx \", contextPackage.Ident(\"Context\"), \", req interface{}) (interface{}, error) {\")\n\t\tg.P(\"return srv.(\", service.GoName, \"Server).\", method.GoName, \"(ctx, req.(*\", method.Input.GoIdent, \"))\")\n\t\tg.P(\"}\")\n\t\tg.P(\"return interceptor(ctx, in, info, handler)\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\treturn hname\n\t}\n\n\ttypeParam := g.QualifiedGoIdent(method.Input.GoIdent) + \", \" + g.QualifiedGoIdent(method.Output.GoIdent)\n\tstreamImpl := g.QualifiedGoIdent(grpcPackage.Ident(\"GenericServerStream\")) + \"[\" + typeParam + \"]\"\n\n\tg.P(\"func \", hnameFuncNameFormatter(hname), \"(srv interface{}, stream \", grpcPackage.Ident(\"ServerStream\"), \") error {\")\n\tif !method.Desc.IsStreamingClient() {\n\t\tg.P(\"m := new(\", method.Input.GoIdent, \")\")\n\t\tg.P(\"if err := stream.RecvMsg(m); err != nil { return err }\")\n\t\tg.P(\"return srv.(\", service.GoName, \"Server).\", method.GoName, \"(m, &\", streamImpl, \"{ServerStream: stream})\")\n\t} else {\n\t\tg.P(\"return srv.(\", service.GoName, \"Server).\", method.GoName, \"(&\", streamImpl, \"{ServerStream: stream})\")\n\t}\n\tg.P(\"}\")\n\tg.P()\n\n\t// Auxiliary types aliases, for backwards compatibility.\n\tg.P(\"// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.\")\n\tg.P(\"type \", service.GoName, \"_\", method.GoName, \"Server = \", serverStreamInterface(g, method))\n\tg.P()\n\treturn hname\n}\n\nfunc genLeadingComments(g *protogen.GeneratedFile, loc protoreflect.SourceLocation) {\n\tfor _, s := range loc.LeadingDetachedComments {\n\t\tg.P(protogen.Comments(s))\n\t\tg.P()\n\t}\n\tif s := loc.LeadingComments; s != \"\" {\n\t\tg.P(protogen.Comments(s))\n\t\tg.P()\n\t}\n}\n\nconst deprecationComment = \"// Deprecated: Do not use.\"\n\nfunc unexport(s string) string { return strings.ToLower(s[:1]) + s[1:] }\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/cmd/protoc-gen-go-grpc/main.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// protoc-gen-go-grpc is a plugin for the Google protocol buffer compiler to\n// generate Go code. Install it by building this program and making it\n// accessible within your PATH with the name:\n//\n//\tprotoc-gen-go-grpc\n//\n// The 'go-grpc' suffix becomes part of the argument for the protocol compiler,\n// such that it can be invoked as:\n//\n//\tprotoc --go-grpc_out=. path/to/file.proto\n//\n// This generates Go service definitions for the protocol buffer defined by\n// file.proto.  With that input, the output will be written to:\n//\n//\tpath/to/file_grpc.pb.go\npackage main\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/compiler/protogen\"\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n\t\"google.golang.org/protobuf/types/pluginpb\"\n)\n\nconst version = \"1.6.2\"\n\nvar requireUnimplemented *bool\n\nfunc main() {\n\tshowVersion := flag.Bool(\"version\", false, \"print the version and exit\")\n\tflag.Parse()\n\tif *showVersion {\n\t\tfmt.Printf(\"protoc-gen-go-grpc %v\\n\", version)\n\t\treturn\n\t}\n\n\tvar flags flag.FlagSet\n\trequireUnimplemented = flags.Bool(\"require_unimplemented_servers\", true, \"set to false to match legacy behavior\")\n\n\tprotogen.Options{\n\t\tParamFunc: flags.Set,\n\t}.Run(func(gen *protogen.Plugin) error {\n\t\tgen.SupportedFeatures = uint64(pluginpb.CodeGeneratorResponse_FEATURE_PROTO3_OPTIONAL) | uint64(pluginpb.CodeGeneratorResponse_FEATURE_SUPPORTS_EDITIONS)\n\t\tgen.SupportedEditionsMinimum = descriptorpb.Edition_EDITION_PROTO2\n\t\tgen.SupportedEditionsMaximum = descriptorpb.Edition_EDITION_2024\n\t\tfor _, f := range gen.Files {\n\t\t\tif !f.Generate {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tgenerateFile(gen, f)\n\t\t}\n\t\treturn nil\n\t})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/cmd/protoc-gen-go-grpc/protoc-gen-go-grpc_test.sh",
    "content": "#!/bin/bash -e\n\n# Copyright 2024 gRPC authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Uncomment to enable debugging.\n# set -x\n\nWORKDIR=\"$(dirname $0)\"\nTEMPDIR=$(mktemp -d)\n\ntrap \"rm -rf ${TEMPDIR}\" EXIT\n\n# Build protoc-gen-go-grpc binary and add to $PATH.\npushd \"${WORKDIR}\"\ngo build -o \"${TEMPDIR}\" .\nPATH=\"${TEMPDIR}:${PATH}\"\npopd\n\nprotoc \\\n    --go-grpc_out=\"${TEMPDIR}\" \\\n    --go-grpc_opt=paths=source_relative \\\n    \"examples/route_guide/routeguide/route_guide.proto\"\n\nGOLDENFILE=\"examples/route_guide/routeguide/route_guide_grpc.pb.go\"\nGENFILE=\"${TEMPDIR}/examples/route_guide/routeguide/route_guide_grpc.pb.go\"\n\n# diff is piped to [[ $? == 1 ]] to avoid exiting on diff but exit on error\n# (like if the file was not found). See man diff for more info.\nDIFF=$(diff \"${GOLDENFILE}\" \"${GENFILE}\" || [[ $? == 1 ]])\nif [[ -n \"${DIFF}\" ]]; then\n    echo -e \"ERROR: Generated file differs from golden file:\\n${DIFF}\"\n    echo -e \"If you have made recent changes to protoc-gen-go-grpc,\" \\\n     \"please regenerate the golden files by running:\" \\\n     \"\\n\\t go generate google.golang.org/grpc/...\" >&2\n    exit 1\nfi\n\necho SUCCESS\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/codec.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"google.golang.org/grpc/encoding\"\n\t_ \"google.golang.org/grpc/encoding/proto\" // to register the Codec for \"proto\"\n\t\"google.golang.org/grpc/mem\"\n)\n\n// baseCodec captures the new encoding.CodecV2 interface without the Name\n// function, allowing it to be implemented by older Codec and encoding.Codec\n// implementations. The omitted Name function is only needed for the register in\n// the encoding package and is not part of the core functionality.\ntype baseCodec interface {\n\tMarshal(v any) (mem.BufferSlice, error)\n\tUnmarshal(data mem.BufferSlice, v any) error\n}\n\n// getCodec returns an encoding.CodecV2 for the codec of the given name (if\n// registered). Initially checks the V2 registry with encoding.GetCodecV2 and\n// returns the V2 codec if it is registered. Otherwise, it checks the V1 registry\n// with encoding.GetCodec and if it is registered wraps it with newCodecV1Bridge\n// to turn it into an encoding.CodecV2. Returns nil otherwise.\nfunc getCodec(name string) encoding.CodecV2 {\n\tif codecV1 := encoding.GetCodec(name); codecV1 != nil {\n\t\treturn newCodecV1Bridge(codecV1)\n\t}\n\n\treturn encoding.GetCodecV2(name)\n}\n\nfunc newCodecV0Bridge(c Codec) baseCodec {\n\treturn codecV0Bridge{codec: c}\n}\n\nfunc newCodecV1Bridge(c encoding.Codec) encoding.CodecV2 {\n\treturn codecV1Bridge{\n\t\tcodecV0Bridge: codecV0Bridge{codec: c},\n\t\tname:          c.Name(),\n\t}\n}\n\nvar _ baseCodec = codecV0Bridge{}\n\ntype codecV0Bridge struct {\n\tcodec interface {\n\t\tMarshal(v any) ([]byte, error)\n\t\tUnmarshal(data []byte, v any) error\n\t}\n}\n\nfunc (c codecV0Bridge) Marshal(v any) (mem.BufferSlice, error) {\n\tdata, err := c.codec.Marshal(v)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn mem.BufferSlice{mem.SliceBuffer(data)}, nil\n}\n\nfunc (c codecV0Bridge) Unmarshal(data mem.BufferSlice, v any) (err error) {\n\treturn c.codec.Unmarshal(data.Materialize(), v)\n}\n\nvar _ encoding.CodecV2 = codecV1Bridge{}\n\ntype codecV1Bridge struct {\n\tcodecV0Bridge\n\tname string\n}\n\nfunc (c codecV1Bridge) Name() string {\n\treturn c.name\n}\n\n// Codec defines the interface gRPC uses to encode and decode messages.\n// Note that implementations of this interface must be thread safe;\n// a Codec's methods can be called from concurrent goroutines.\n//\n// Deprecated: use encoding.Codec instead.\ntype Codec interface {\n\t// Marshal returns the wire format of v.\n\tMarshal(v any) ([]byte, error)\n\t// Unmarshal parses the wire format into v.\n\tUnmarshal(data []byte, v any) error\n\t// String returns the name of the Codec implementation.  This is unused by\n\t// gRPC.\n\tString() string\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/codes/code_string.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage codes\n\nimport (\n\t\"strconv\"\n\n\t\"google.golang.org/grpc/internal\"\n)\n\nfunc init() {\n\tinternal.CanonicalString = canonicalString\n}\n\nfunc (c Code) String() string {\n\tswitch c {\n\tcase OK:\n\t\treturn \"OK\"\n\tcase Canceled:\n\t\treturn \"Canceled\"\n\tcase Unknown:\n\t\treturn \"Unknown\"\n\tcase InvalidArgument:\n\t\treturn \"InvalidArgument\"\n\tcase DeadlineExceeded:\n\t\treturn \"DeadlineExceeded\"\n\tcase NotFound:\n\t\treturn \"NotFound\"\n\tcase AlreadyExists:\n\t\treturn \"AlreadyExists\"\n\tcase PermissionDenied:\n\t\treturn \"PermissionDenied\"\n\tcase ResourceExhausted:\n\t\treturn \"ResourceExhausted\"\n\tcase FailedPrecondition:\n\t\treturn \"FailedPrecondition\"\n\tcase Aborted:\n\t\treturn \"Aborted\"\n\tcase OutOfRange:\n\t\treturn \"OutOfRange\"\n\tcase Unimplemented:\n\t\treturn \"Unimplemented\"\n\tcase Internal:\n\t\treturn \"Internal\"\n\tcase Unavailable:\n\t\treturn \"Unavailable\"\n\tcase DataLoss:\n\t\treturn \"DataLoss\"\n\tcase Unauthenticated:\n\t\treturn \"Unauthenticated\"\n\tdefault:\n\t\treturn \"Code(\" + strconv.FormatInt(int64(c), 10) + \")\"\n\t}\n}\n\nfunc canonicalString(c Code) string {\n\tswitch c {\n\tcase OK:\n\t\treturn \"OK\"\n\tcase Canceled:\n\t\treturn \"CANCELLED\"\n\tcase Unknown:\n\t\treturn \"UNKNOWN\"\n\tcase InvalidArgument:\n\t\treturn \"INVALID_ARGUMENT\"\n\tcase DeadlineExceeded:\n\t\treturn \"DEADLINE_EXCEEDED\"\n\tcase NotFound:\n\t\treturn \"NOT_FOUND\"\n\tcase AlreadyExists:\n\t\treturn \"ALREADY_EXISTS\"\n\tcase PermissionDenied:\n\t\treturn \"PERMISSION_DENIED\"\n\tcase ResourceExhausted:\n\t\treturn \"RESOURCE_EXHAUSTED\"\n\tcase FailedPrecondition:\n\t\treturn \"FAILED_PRECONDITION\"\n\tcase Aborted:\n\t\treturn \"ABORTED\"\n\tcase OutOfRange:\n\t\treturn \"OUT_OF_RANGE\"\n\tcase Unimplemented:\n\t\treturn \"UNIMPLEMENTED\"\n\tcase Internal:\n\t\treturn \"INTERNAL\"\n\tcase Unavailable:\n\t\treturn \"UNAVAILABLE\"\n\tcase DataLoss:\n\t\treturn \"DATA_LOSS\"\n\tcase Unauthenticated:\n\t\treturn \"UNAUTHENTICATED\"\n\tdefault:\n\t\treturn \"CODE(\" + strconv.FormatInt(int64(c), 10) + \")\"\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/codes/codes.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package codes defines the canonical error codes used by gRPC. It is\n// consistent across various languages.\npackage codes // import \"google.golang.org/grpc/codes\"\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n)\n\n// A Code is a status code defined according to the [gRPC documentation].\n//\n// Only the codes defined as consts in this package are valid codes. Do not use\n// other code values.  Behavior of other codes is implementation-specific and\n// interoperability between implementations is not guaranteed.\n//\n// [gRPC documentation]: https://github.com/grpc/grpc/blob/master/doc/statuscodes.md\ntype Code uint32\n\nconst (\n\t// OK is returned on success.\n\tOK Code = 0\n\n\t// Canceled indicates the operation was canceled (typically by the caller).\n\t//\n\t// The gRPC framework will generate this error code when cancellation\n\t// is requested.\n\tCanceled Code = 1\n\n\t// Unknown error. An example of where this error may be returned is\n\t// if a Status value received from another address space belongs to\n\t// an error-space that is not known in this address space. Also\n\t// errors raised by APIs that do not return enough error information\n\t// may be converted to this error.\n\t//\n\t// The gRPC framework will generate this error code in the above two\n\t// mentioned cases.\n\tUnknown Code = 2\n\n\t// InvalidArgument indicates client specified an invalid argument.\n\t// Note that this differs from FailedPrecondition. It indicates arguments\n\t// that are problematic regardless of the state of the system\n\t// (e.g., a malformed file name).\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tInvalidArgument Code = 3\n\n\t// DeadlineExceeded means operation expired before completion.\n\t// For operations that change the state of the system, this error may be\n\t// returned even if the operation has completed successfully. For\n\t// example, a successful response from a server could have been delayed\n\t// long enough for the deadline to expire.\n\t//\n\t// The gRPC framework will generate this error code when the deadline is\n\t// exceeded.\n\tDeadlineExceeded Code = 4\n\n\t// NotFound means some requested entity (e.g., file or directory) was\n\t// not found.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tNotFound Code = 5\n\n\t// AlreadyExists means an attempt to create an entity failed because one\n\t// already exists.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tAlreadyExists Code = 6\n\n\t// PermissionDenied indicates the caller does not have permission to\n\t// execute the specified operation. It must not be used for rejections\n\t// caused by exhausting some resource (use ResourceExhausted\n\t// instead for those errors). It must not be\n\t// used if the caller cannot be identified (use Unauthenticated\n\t// instead for those errors).\n\t//\n\t// This error code will not be generated by the gRPC core framework,\n\t// but expect authentication middleware to use it.\n\tPermissionDenied Code = 7\n\n\t// ResourceExhausted indicates some resource has been exhausted, perhaps\n\t// a per-user quota, or perhaps the entire file system is out of space.\n\t//\n\t// This error code will be generated by the gRPC framework in\n\t// out-of-memory and server overload situations, or when a message is\n\t// larger than the configured maximum size.\n\tResourceExhausted Code = 8\n\n\t// FailedPrecondition indicates operation was rejected because the\n\t// system is not in a state required for the operation's execution.\n\t// For example, directory to be deleted may be non-empty, an rmdir\n\t// operation is applied to a non-directory, etc.\n\t//\n\t// A litmus test that may help a service implementor in deciding\n\t// between FailedPrecondition, Aborted, and Unavailable:\n\t//  (a) Use Unavailable if the client can retry just the failing call.\n\t//  (b) Use Aborted if the client should retry at a higher-level\n\t//      (e.g., restarting a read-modify-write sequence).\n\t//  (c) Use FailedPrecondition if the client should not retry until\n\t//      the system state has been explicitly fixed. E.g., if an \"rmdir\"\n\t//      fails because the directory is non-empty, FailedPrecondition\n\t//      should be returned since the client should not retry unless\n\t//      they have first fixed up the directory by deleting files from it.\n\t//  (d) Use FailedPrecondition if the client performs conditional\n\t//      REST Get/Update/Delete on a resource and the resource on the\n\t//      server does not match the condition. E.g., conflicting\n\t//      read-modify-write on the same resource.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tFailedPrecondition Code = 9\n\n\t// Aborted indicates the operation was aborted, typically due to a\n\t// concurrency issue like sequencer check failures, transaction aborts,\n\t// etc.\n\t//\n\t// See litmus test above for deciding between FailedPrecondition,\n\t// Aborted, and Unavailable.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tAborted Code = 10\n\n\t// OutOfRange means operation was attempted past the valid range.\n\t// E.g., seeking or reading past end of file.\n\t//\n\t// Unlike InvalidArgument, this error indicates a problem that may\n\t// be fixed if the system state changes. For example, a 32-bit file\n\t// system will generate InvalidArgument if asked to read at an\n\t// offset that is not in the range [0,2^32-1], but it will generate\n\t// OutOfRange if asked to read from an offset past the current\n\t// file size.\n\t//\n\t// There is a fair bit of overlap between FailedPrecondition and\n\t// OutOfRange. We recommend using OutOfRange (the more specific\n\t// error) when it applies so that callers who are iterating through\n\t// a space can easily look for an OutOfRange error to detect when\n\t// they are done.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tOutOfRange Code = 11\n\n\t// Unimplemented indicates operation is not implemented or not\n\t// supported/enabled in this service.\n\t//\n\t// This error code will be generated by the gRPC framework. Most\n\t// commonly, you will see this error code when a method implementation\n\t// is missing on the server. It can also be generated for unknown\n\t// compression algorithms or a disagreement as to whether an RPC should\n\t// be streaming.\n\tUnimplemented Code = 12\n\n\t// Internal errors. Means some invariants expected by underlying\n\t// system has been broken. If you see one of these errors,\n\t// something is very broken.\n\t//\n\t// This error code will be generated by the gRPC framework in several\n\t// internal error conditions.\n\tInternal Code = 13\n\n\t// Unavailable indicates the service is currently unavailable.\n\t// This is a most likely a transient condition and may be corrected\n\t// by retrying with a backoff. Note that it is not always safe to retry\n\t// non-idempotent operations.\n\t//\n\t// See litmus test above for deciding between FailedPrecondition,\n\t// Aborted, and Unavailable.\n\t//\n\t// This error code will be generated by the gRPC framework during\n\t// abrupt shutdown of a server process or network connection.\n\tUnavailable Code = 14\n\n\t// DataLoss indicates unrecoverable data loss or corruption.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tDataLoss Code = 15\n\n\t// Unauthenticated indicates the request does not have valid\n\t// authentication credentials for the operation.\n\t//\n\t// The gRPC framework will generate this error code when the\n\t// authentication metadata is invalid or a Credentials callback fails,\n\t// but also expect authentication middleware to generate it.\n\tUnauthenticated Code = 16\n\n\t_maxCode = 17\n)\n\nvar strToCode = map[string]Code{\n\t`\"OK\"`: OK,\n\t`\"CANCELLED\"`:/* [sic] */ Canceled,\n\t`\"UNKNOWN\"`:             Unknown,\n\t`\"INVALID_ARGUMENT\"`:    InvalidArgument,\n\t`\"DEADLINE_EXCEEDED\"`:   DeadlineExceeded,\n\t`\"NOT_FOUND\"`:           NotFound,\n\t`\"ALREADY_EXISTS\"`:      AlreadyExists,\n\t`\"PERMISSION_DENIED\"`:   PermissionDenied,\n\t`\"RESOURCE_EXHAUSTED\"`:  ResourceExhausted,\n\t`\"FAILED_PRECONDITION\"`: FailedPrecondition,\n\t`\"ABORTED\"`:             Aborted,\n\t`\"OUT_OF_RANGE\"`:        OutOfRange,\n\t`\"UNIMPLEMENTED\"`:       Unimplemented,\n\t`\"INTERNAL\"`:            Internal,\n\t`\"UNAVAILABLE\"`:         Unavailable,\n\t`\"DATA_LOSS\"`:           DataLoss,\n\t`\"UNAUTHENTICATED\"`:     Unauthenticated,\n}\n\n// UnmarshalJSON unmarshals b into the Code.\nfunc (c *Code) UnmarshalJSON(b []byte) error {\n\t// From json.Unmarshaler: By convention, to approximate the behavior of\n\t// Unmarshal itself, Unmarshalers implement UnmarshalJSON([]byte(\"null\")) as\n\t// a no-op.\n\tif string(b) == \"null\" {\n\t\treturn nil\n\t}\n\tif c == nil {\n\t\treturn fmt.Errorf(\"nil receiver passed to UnmarshalJSON\")\n\t}\n\n\tif ci, err := strconv.ParseUint(string(b), 10, 32); err == nil {\n\t\tif ci >= _maxCode {\n\t\t\treturn fmt.Errorf(\"invalid code: %d\", ci)\n\t\t}\n\n\t\t*c = Code(ci)\n\t\treturn nil\n\t}\n\n\tif jc, ok := strToCode[string(b)]; ok {\n\t\t*c = jc\n\t\treturn nil\n\t}\n\treturn fmt.Errorf(\"invalid code: %q\", string(b))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/connectivity/connectivity.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package connectivity defines connectivity semantics.\n// For details, see https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md.\npackage connectivity\n\nimport (\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nvar logger = grpclog.Component(\"core\")\n\n// State indicates the state of connectivity.\n// It can be the state of a ClientConn or SubConn.\ntype State int\n\nfunc (s State) String() string {\n\tswitch s {\n\tcase Idle:\n\t\treturn \"IDLE\"\n\tcase Connecting:\n\t\treturn \"CONNECTING\"\n\tcase Ready:\n\t\treturn \"READY\"\n\tcase TransientFailure:\n\t\treturn \"TRANSIENT_FAILURE\"\n\tcase Shutdown:\n\t\treturn \"SHUTDOWN\"\n\tdefault:\n\t\tlogger.Errorf(\"unknown connectivity state: %d\", s)\n\t\treturn \"INVALID_STATE\"\n\t}\n}\n\nconst (\n\t// Idle indicates the ClientConn is idle.\n\tIdle State = iota\n\t// Connecting indicates the ClientConn is connecting.\n\tConnecting\n\t// Ready indicates the ClientConn is ready for work.\n\tReady\n\t// TransientFailure indicates the ClientConn has seen a failure but expects to recover.\n\tTransientFailure\n\t// Shutdown indicates the ClientConn has started shutting down.\n\tShutdown\n)\n\n// ServingMode indicates the current mode of operation of the server.\n//\n// Only xDS enabled gRPC servers currently report their serving mode.\ntype ServingMode int\n\nconst (\n\t// ServingModeStarting indicates that the server is starting up.\n\tServingModeStarting ServingMode = iota\n\t// ServingModeServing indicates that the server contains all required\n\t// configuration and is serving RPCs.\n\tServingModeServing\n\t// ServingModeNotServing indicates that the server is not accepting new\n\t// connections. Existing connections will be closed gracefully, allowing\n\t// in-progress RPCs to complete. A server enters this mode when it does not\n\t// contain the required configuration to serve RPCs.\n\tServingModeNotServing\n)\n\nfunc (s ServingMode) String() string {\n\tswitch s {\n\tcase ServingModeStarting:\n\t\treturn \"STARTING\"\n\tcase ServingModeServing:\n\t\treturn \"SERVING\"\n\tcase ServingModeNotServing:\n\t\treturn \"NOT_SERVING\"\n\tdefault:\n\t\tlogger.Errorf(\"unknown serving mode: %d\", s)\n\t\treturn \"INVALID_MODE\"\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/credentials/credentials.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package credentials implements various credentials supported by gRPC library,\n// which encapsulate all the state needed by a client to authenticate with a\n// server and make various assertions, e.g., about the client's identity, role,\n// or whether it is authorized to make a particular call.\npackage credentials // import \"google.golang.org/grpc/credentials\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\n\t\"google.golang.org/grpc/attributes\"\n\ticredentials \"google.golang.org/grpc/internal/credentials\"\n\t\"google.golang.org/protobuf/proto\"\n)\n\n// PerRPCCredentials defines the common interface for the credentials which need to\n// attach security information to every RPC (e.g., oauth2).\ntype PerRPCCredentials interface {\n\t// GetRequestMetadata gets the current request metadata, refreshing tokens\n\t// if required. This should be called by the transport layer on each\n\t// request, and the data should be populated in headers or other\n\t// context. If a status code is returned, it will be used as the status for\n\t// the RPC (restricted to an allowable set of codes as defined by gRFC\n\t// A54). uri is the URI of the entry point for the request.  When supported\n\t// by the underlying implementation, ctx can be used for timeout and\n\t// cancellation. Additionally, RequestInfo data will be available via ctx\n\t// to this call.\n\tGetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error)\n\t// RequireTransportSecurity indicates whether the credentials requires\n\t// transport security.\n\tRequireTransportSecurity() bool\n}\n\n// SecurityLevel defines the protection level on an established connection.\n//\n// This API is experimental.\ntype SecurityLevel int\n\nconst (\n\t// InvalidSecurityLevel indicates an invalid security level.\n\t// The zero SecurityLevel value is invalid for backward compatibility.\n\tInvalidSecurityLevel SecurityLevel = iota\n\t// NoSecurity indicates a connection is insecure.\n\tNoSecurity\n\t// IntegrityOnly indicates a connection only provides integrity protection.\n\tIntegrityOnly\n\t// PrivacyAndIntegrity indicates a connection provides both privacy and integrity protection.\n\tPrivacyAndIntegrity\n)\n\n// String returns SecurityLevel in a string format.\nfunc (s SecurityLevel) String() string {\n\tswitch s {\n\tcase NoSecurity:\n\t\treturn \"NoSecurity\"\n\tcase IntegrityOnly:\n\t\treturn \"IntegrityOnly\"\n\tcase PrivacyAndIntegrity:\n\t\treturn \"PrivacyAndIntegrity\"\n\t}\n\treturn fmt.Sprintf(\"invalid SecurityLevel: %v\", int(s))\n}\n\n// CommonAuthInfo contains authenticated information common to AuthInfo implementations.\n// It should be embedded in a struct implementing AuthInfo to provide additional information\n// about the credentials.\n//\n// This API is experimental.\ntype CommonAuthInfo struct {\n\tSecurityLevel SecurityLevel\n}\n\n// GetCommonAuthInfo returns the pointer to CommonAuthInfo struct.\nfunc (c CommonAuthInfo) GetCommonAuthInfo() CommonAuthInfo {\n\treturn c\n}\n\n// ProtocolInfo provides static information regarding transport credentials.\ntype ProtocolInfo struct {\n\t// ProtocolVersion is the gRPC wire protocol version.\n\t//\n\t// Deprecated: this is unused by gRPC.\n\tProtocolVersion string\n\t// SecurityProtocol is the security protocol in use.\n\tSecurityProtocol string\n\t// SecurityVersion is the security protocol version.  It is a static version string from the\n\t// credentials, not a value that reflects per-connection protocol negotiation.  To retrieve\n\t// details about the credentials used for a connection, use the Peer's AuthInfo field instead.\n\t//\n\t// Deprecated: please use Peer.AuthInfo.\n\tSecurityVersion string\n\t// ServerName is the user-configured server name.  If set, this overrides\n\t// the default :authority header used for all RPCs on the channel using the\n\t// containing credentials, unless grpc.WithAuthority is set on the channel,\n\t// in which case that setting will take precedence.\n\t//\n\t// This must be a valid `:authority` header according to\n\t// [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#section-3.2).\n\t//\n\t// Deprecated: Users should use grpc.WithAuthority to override the authority\n\t// on a channel instead of configuring the credentials.\n\tServerName string\n}\n\n// AuthInfo defines the common interface for the auth information the users are interested in.\n// A struct that implements AuthInfo should embed CommonAuthInfo by including additional\n// information about the credentials in it.\ntype AuthInfo interface {\n\tAuthType() string\n}\n\n// AuthorityValidator validates the authority used to override the `:authority`\n// header. This is an optional interface that implementations of AuthInfo can\n// implement if they support per-RPC authority overrides. It is invoked when the\n// application attempts to override the HTTP/2 `:authority` header using the\n// CallAuthority call option.\ntype AuthorityValidator interface {\n\t// ValidateAuthority checks the authority value used to override the\n\t// `:authority` header. The authority parameter is the override value\n\t// provided by the application via the CallAuthority option. This value\n\t// typically corresponds to the server hostname or endpoint the RPC is\n\t// targeting. It returns non-nil error if the validation fails.\n\tValidateAuthority(authority string) error\n}\n\n// ErrConnDispatched indicates that rawConn has been dispatched out of gRPC\n// and the caller should not close rawConn.\nvar ErrConnDispatched = errors.New(\"credentials: rawConn is dispatched out of gRPC\")\n\n// TransportCredentials defines the common interface for all the live gRPC wire\n// protocols and supported transport security protocols (e.g., TLS, SSL).\ntype TransportCredentials interface {\n\t// ClientHandshake does the authentication handshake specified by the\n\t// corresponding authentication protocol on rawConn for clients. It returns\n\t// the authenticated connection and the corresponding auth information\n\t// about the connection.  The auth information should embed CommonAuthInfo\n\t// to return additional information about the credentials. Implementations\n\t// must use the provided context to implement timely cancellation.  gRPC\n\t// will try to reconnect if the error returned is a temporary error\n\t// (io.EOF, context.DeadlineExceeded or err.Temporary() == true).  If the\n\t// returned error is a wrapper error, implementations should make sure that\n\t// the error implements Temporary() to have the correct retry behaviors.\n\t// Additionally, ClientHandshakeInfo data will be available via the context\n\t// passed to this call.\n\t//\n\t// The second argument to this method is the `:authority` header value used\n\t// while creating new streams on this connection after authentication\n\t// succeeds. Implementations must use this as the server name during the\n\t// authentication handshake.\n\t//\n\t// If the returned net.Conn is closed, it MUST close the net.Conn provided.\n\tClientHandshake(context.Context, string, net.Conn) (net.Conn, AuthInfo, error)\n\t// ServerHandshake does the authentication handshake for servers. It returns\n\t// the authenticated connection and the corresponding auth information about\n\t// the connection. The auth information should embed CommonAuthInfo to return additional information\n\t// about the credentials.\n\t//\n\t// If the returned net.Conn is closed, it MUST close the net.Conn provided.\n\tServerHandshake(net.Conn) (net.Conn, AuthInfo, error)\n\t// Info provides the ProtocolInfo of this TransportCredentials.\n\tInfo() ProtocolInfo\n\t// Clone makes a copy of this TransportCredentials.\n\tClone() TransportCredentials\n\t// OverrideServerName specifies the value used for the following:\n\t//\n\t// - verifying the hostname on the returned certificates\n\t// - as SNI in the client's handshake to support virtual hosting\n\t// - as the value for `:authority` header at stream creation time\n\t//\n\t// The provided string should be a valid `:authority` header according to\n\t// [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#section-3.2).\n\t//\n\t// Deprecated: this method is unused by gRPC.  Users should use\n\t// grpc.WithAuthority to override the authority on a channel instead of\n\t// configuring the credentials.\n\tOverrideServerName(string) error\n}\n\n// Bundle is a combination of TransportCredentials and PerRPCCredentials.\n//\n// It also contains a mode switching method, so it can be used as a combination\n// of different credential policies.\n//\n// Bundle cannot be used together with individual TransportCredentials.\n// PerRPCCredentials from Bundle will be appended to other PerRPCCredentials.\n//\n// This API is experimental.\ntype Bundle interface {\n\t// TransportCredentials returns the transport credentials from the Bundle.\n\t//\n\t// Implementations must return non-nil transport credentials. If transport\n\t// security is not needed by the Bundle, implementations may choose to\n\t// return insecure.NewCredentials().\n\tTransportCredentials() TransportCredentials\n\n\t// PerRPCCredentials returns the per-RPC credentials from the Bundle.\n\t//\n\t// May be nil if per-RPC credentials are not needed.\n\tPerRPCCredentials() PerRPCCredentials\n\n\t// NewWithMode should make a copy of Bundle, and switch mode. Modifying the\n\t// existing Bundle may cause races.\n\t//\n\t// NewWithMode returns nil if the requested mode is not supported.\n\tNewWithMode(mode string) (Bundle, error)\n}\n\n// RequestInfo contains request data attached to the context passed to GetRequestMetadata calls.\n//\n// This API is experimental.\ntype RequestInfo struct {\n\t// The method passed to Invoke or NewStream for this RPC. (For proto methods, this has the format \"/some.Service/Method\")\n\tMethod string\n\t// AuthInfo contains the information from a security handshake (TransportCredentials.ClientHandshake, TransportCredentials.ServerHandshake)\n\tAuthInfo AuthInfo\n}\n\n// requestInfoKey is a struct to be used as the key to store RequestInfo in a\n// context.\ntype requestInfoKey struct{}\n\n// RequestInfoFromContext extracts the RequestInfo from the context if it exists.\n//\n// This API is experimental.\nfunc RequestInfoFromContext(ctx context.Context) (ri RequestInfo, ok bool) {\n\tri, ok = ctx.Value(requestInfoKey{}).(RequestInfo)\n\treturn ri, ok\n}\n\n// NewContextWithRequestInfo creates a new context from ctx and attaches ri to it.\n//\n// This RequestInfo will be accessible via RequestInfoFromContext.\n//\n// Intended to be used from tests for PerRPCCredentials implementations (that\n// often need to check connection's SecurityLevel). Should not be used from\n// non-test code: the gRPC client already prepares a context with the correct\n// RequestInfo attached when calling PerRPCCredentials.GetRequestMetadata.\n//\n// This API is experimental.\nfunc NewContextWithRequestInfo(ctx context.Context, ri RequestInfo) context.Context {\n\treturn context.WithValue(ctx, requestInfoKey{}, ri)\n}\n\n// ClientHandshakeInfo holds data to be passed to ClientHandshake. This makes\n// it possible to pass arbitrary data to the handshaker from gRPC, resolver,\n// balancer etc. Individual credential implementations control the actual\n// format of the data that they are willing to receive.\n//\n// This API is experimental.\ntype ClientHandshakeInfo struct {\n\t// Attributes contains the attributes for the address. It could be provided\n\t// by the gRPC, resolver, balancer etc.\n\tAttributes *attributes.Attributes\n}\n\n// ClientHandshakeInfoFromContext returns the ClientHandshakeInfo struct stored\n// in ctx.\n//\n// This API is experimental.\nfunc ClientHandshakeInfoFromContext(ctx context.Context) ClientHandshakeInfo {\n\tchi, _ := icredentials.ClientHandshakeInfoFromContext(ctx).(ClientHandshakeInfo)\n\treturn chi\n}\n\n// CheckSecurityLevel checks if a connection's security level is greater than or equal to the specified one.\n// It returns success if 1) the condition is satisfied or 2) AuthInfo struct does not implement GetCommonAuthInfo() method\n// or 3) CommonAuthInfo.SecurityLevel has an invalid zero value. For 2) and 3), it is for the purpose of backward-compatibility.\n//\n// This API is experimental.\nfunc CheckSecurityLevel(ai AuthInfo, level SecurityLevel) error {\n\ttype internalInfo interface {\n\t\tGetCommonAuthInfo() CommonAuthInfo\n\t}\n\tif ai == nil {\n\t\treturn errors.New(\"AuthInfo is nil\")\n\t}\n\tif ci, ok := ai.(internalInfo); ok {\n\t\t// CommonAuthInfo.SecurityLevel has an invalid value.\n\t\tif ci.GetCommonAuthInfo().SecurityLevel == InvalidSecurityLevel {\n\t\t\treturn nil\n\t\t}\n\t\tif ci.GetCommonAuthInfo().SecurityLevel < level {\n\t\t\treturn fmt.Errorf(\"requires SecurityLevel %v; connection has %v\", level, ci.GetCommonAuthInfo().SecurityLevel)\n\t\t}\n\t}\n\t// The condition is satisfied or AuthInfo struct does not implement GetCommonAuthInfo() method.\n\treturn nil\n}\n\n// ChannelzSecurityInfo defines the interface that security protocols should implement\n// in order to provide security info to channelz.\n//\n// This API is experimental.\ntype ChannelzSecurityInfo interface {\n\tGetSecurityValue() ChannelzSecurityValue\n}\n\n// ChannelzSecurityValue defines the interface that GetSecurityValue() return value\n// should satisfy. This interface should only be satisfied by *TLSChannelzSecurityValue\n// and *OtherChannelzSecurityValue.\n//\n// This API is experimental.\ntype ChannelzSecurityValue interface {\n\tisChannelzSecurityValue()\n}\n\n// OtherChannelzSecurityValue defines the struct that non-TLS protocol should return\n// from GetSecurityValue(), which contains protocol specific security info. Note\n// the Value field will be sent to users of channelz requesting channel info, and\n// thus sensitive info should better be avoided.\n//\n// This API is experimental.\ntype OtherChannelzSecurityValue struct {\n\tChannelzSecurityValue\n\tName  string\n\tValue proto.Message\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/credentials/insecure/insecure.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package insecure provides an implementation of the\n// credentials.TransportCredentials interface which disables transport security.\npackage insecure\n\nimport (\n\t\"context\"\n\t\"net\"\n\n\t\"google.golang.org/grpc/credentials\"\n)\n\n// NewCredentials returns a credentials which disables transport security.\n//\n// Note that using this credentials with per-RPC credentials which require\n// transport security is incompatible and will cause RPCs to fail.\nfunc NewCredentials() credentials.TransportCredentials {\n\treturn insecureTC{}\n}\n\n// insecureTC implements the insecure transport credentials. The handshake\n// methods simply return the passed in net.Conn and set the security level to\n// NoSecurity.\ntype insecureTC struct{}\n\nfunc (insecureTC) ClientHandshake(_ context.Context, _ string, conn net.Conn) (net.Conn, credentials.AuthInfo, error) {\n\treturn conn, info{credentials.CommonAuthInfo{SecurityLevel: credentials.NoSecurity}}, nil\n}\n\nfunc (insecureTC) ServerHandshake(conn net.Conn) (net.Conn, credentials.AuthInfo, error) {\n\treturn conn, info{credentials.CommonAuthInfo{SecurityLevel: credentials.NoSecurity}}, nil\n}\n\nfunc (insecureTC) Info() credentials.ProtocolInfo {\n\treturn credentials.ProtocolInfo{SecurityProtocol: \"insecure\"}\n}\n\nfunc (insecureTC) Clone() credentials.TransportCredentials {\n\treturn insecureTC{}\n}\n\nfunc (insecureTC) OverrideServerName(string) error {\n\treturn nil\n}\n\n// info contains the auth information for an insecure connection.\n// It implements the AuthInfo interface.\ntype info struct {\n\tcredentials.CommonAuthInfo\n}\n\n// AuthType returns the type of info as a string.\nfunc (info) AuthType() string {\n\treturn \"insecure\"\n}\n\n// ValidateAuthority allows any value to be overridden for the :authority\n// header.\nfunc (info) ValidateAuthority(string) error {\n\treturn nil\n}\n\n// insecureBundle implements an insecure bundle.\n// An insecure bundle provides a thin wrapper around insecureTC to support\n// the credentials.Bundle interface.\ntype insecureBundle struct{}\n\n// NewBundle returns a bundle with disabled transport security and no per rpc credential.\nfunc NewBundle() credentials.Bundle {\n\treturn insecureBundle{}\n}\n\n// NewWithMode returns a new insecure Bundle. The mode is ignored.\nfunc (insecureBundle) NewWithMode(string) (credentials.Bundle, error) {\n\treturn insecureBundle{}, nil\n}\n\n// PerRPCCredentials returns an nil implementation as insecure\n// bundle does not support a per rpc credential.\nfunc (insecureBundle) PerRPCCredentials() credentials.PerRPCCredentials {\n\treturn nil\n}\n\n// TransportCredentials returns the underlying insecure transport credential.\nfunc (insecureBundle) TransportCredentials() credentials.TransportCredentials {\n\treturn NewCredentials()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/credentials/tls.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage credentials\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"os\"\n\n\t\"google.golang.org/grpc/grpclog\"\n\tcredinternal \"google.golang.org/grpc/internal/credentials\"\n\t\"google.golang.org/grpc/internal/envconfig\"\n)\n\nconst alpnFailureHelpMessage = \"If you upgraded from a grpc-go version earlier than 1.67, your TLS connections may have stopped working due to ALPN enforcement. For more details, see: https://github.com/grpc/grpc-go/issues/434\"\n\nvar logger = grpclog.Component(\"credentials\")\n\n// TLSInfo contains the auth information for a TLS authenticated connection.\n// It implements the AuthInfo interface.\ntype TLSInfo struct {\n\tState tls.ConnectionState\n\tCommonAuthInfo\n\t// This API is experimental.\n\tSPIFFEID *url.URL\n}\n\n// AuthType returns the type of TLSInfo as a string.\nfunc (t TLSInfo) AuthType() string {\n\treturn \"tls\"\n}\n\n// ValidateAuthority validates the provided authority being used to override the\n// :authority header by verifying it against the peer certificate. It returns a\n// non-nil error if the validation fails.\nfunc (t TLSInfo) ValidateAuthority(authority string) error {\n\thost, _, err := net.SplitHostPort(authority)\n\tif err != nil {\n\t\thost = authority\n\t}\n\n\t// Verify authority against the leaf certificate.\n\tif len(t.State.PeerCertificates) == 0 {\n\t\t// This is not expected to happen as the TLS handshake has already\n\t\t// completed and should have populated PeerCertificates.\n\t\treturn fmt.Errorf(\"credentials: no peer certificates found to verify authority %q\", host)\n\t}\n\treturn t.State.PeerCertificates[0].VerifyHostname(host)\n}\n\n// cipherSuiteLookup returns the string version of a TLS cipher suite ID.\nfunc cipherSuiteLookup(cipherSuiteID uint16) string {\n\tfor _, s := range tls.CipherSuites() {\n\t\tif s.ID == cipherSuiteID {\n\t\t\treturn s.Name\n\t\t}\n\t}\n\tfor _, s := range tls.InsecureCipherSuites() {\n\t\tif s.ID == cipherSuiteID {\n\t\t\treturn s.Name\n\t\t}\n\t}\n\treturn fmt.Sprintf(\"unknown ID: %v\", cipherSuiteID)\n}\n\n// GetSecurityValue returns security info requested by channelz.\nfunc (t TLSInfo) GetSecurityValue() ChannelzSecurityValue {\n\tv := &TLSChannelzSecurityValue{\n\t\tStandardName: cipherSuiteLookup(t.State.CipherSuite),\n\t}\n\t// Currently there's no way to get LocalCertificate info from tls package.\n\tif len(t.State.PeerCertificates) > 0 {\n\t\tv.RemoteCertificate = t.State.PeerCertificates[0].Raw\n\t}\n\treturn v\n}\n\n// tlsCreds is the credentials required for authenticating a connection using TLS.\ntype tlsCreds struct {\n\t// TLS configuration\n\tconfig *tls.Config\n}\n\nfunc (c tlsCreds) Info() ProtocolInfo {\n\treturn ProtocolInfo{\n\t\tSecurityProtocol: \"tls\",\n\t\tSecurityVersion:  \"1.2\",\n\t\tServerName:       c.config.ServerName,\n\t}\n}\n\nfunc (c *tlsCreds) ClientHandshake(ctx context.Context, authority string, rawConn net.Conn) (_ net.Conn, _ AuthInfo, err error) {\n\t// use local cfg to avoid clobbering ServerName if using multiple endpoints\n\tcfg := credinternal.CloneTLSConfig(c.config)\n\n\tserverName, _, err := net.SplitHostPort(authority)\n\tif err != nil {\n\t\t// If the authority had no host port or if the authority cannot be parsed, use it as-is.\n\t\tserverName = authority\n\t}\n\tcfg.ServerName = serverName\n\n\tconn := tls.Client(rawConn, cfg)\n\terrChannel := make(chan error, 1)\n\tgo func() {\n\t\terrChannel <- conn.Handshake()\n\t\tclose(errChannel)\n\t}()\n\tselect {\n\tcase err := <-errChannel:\n\t\tif err != nil {\n\t\t\tconn.Close()\n\t\t\treturn nil, nil, err\n\t\t}\n\tcase <-ctx.Done():\n\t\tconn.Close()\n\t\treturn nil, nil, ctx.Err()\n\t}\n\n\t// The negotiated protocol can be either of the following:\n\t// 1. h2: When the server supports ALPN. Only HTTP/2 can be negotiated since\n\t//    it is the only protocol advertised by the client during the handshake.\n\t//    The tls library ensures that the server chooses a protocol advertised\n\t//    by the client.\n\t// 2. \"\" (empty string): If the server doesn't support ALPN. ALPN is a requirement\n\t//    for using HTTP/2 over TLS. We can terminate the connection immediately.\n\tnp := conn.ConnectionState().NegotiatedProtocol\n\tif np == \"\" {\n\t\tif envconfig.EnforceALPNEnabled {\n\t\t\tconn.Close()\n\t\t\treturn nil, nil, fmt.Errorf(\"credentials: cannot check peer: missing selected ALPN property. %s\", alpnFailureHelpMessage)\n\t\t}\n\t\tlogger.Warningf(\"Allowing TLS connection to server %q with ALPN disabled. TLS connections to servers with ALPN disabled will be disallowed in future grpc-go releases\", cfg.ServerName)\n\t}\n\ttlsInfo := TLSInfo{\n\t\tState: conn.ConnectionState(),\n\t\tCommonAuthInfo: CommonAuthInfo{\n\t\t\tSecurityLevel: PrivacyAndIntegrity,\n\t\t},\n\t}\n\tid := credinternal.SPIFFEIDFromState(conn.ConnectionState())\n\tif id != nil {\n\t\ttlsInfo.SPIFFEID = id\n\t}\n\treturn credinternal.WrapSyscallConn(rawConn, conn), tlsInfo, nil\n}\n\nfunc (c *tlsCreds) ServerHandshake(rawConn net.Conn) (net.Conn, AuthInfo, error) {\n\tconn := tls.Server(rawConn, c.config)\n\tif err := conn.Handshake(); err != nil {\n\t\tconn.Close()\n\t\treturn nil, nil, err\n\t}\n\tcs := conn.ConnectionState()\n\t// The negotiated application protocol can be empty only if the client doesn't\n\t// support ALPN. In such cases, we can close the connection since ALPN is required\n\t// for using HTTP/2 over TLS.\n\tif cs.NegotiatedProtocol == \"\" {\n\t\tif envconfig.EnforceALPNEnabled {\n\t\t\tconn.Close()\n\t\t\treturn nil, nil, fmt.Errorf(\"credentials: cannot check peer: missing selected ALPN property. %s\", alpnFailureHelpMessage)\n\t\t} else if logger.V(2) {\n\t\t\tlogger.Info(\"Allowing TLS connection from client with ALPN disabled. TLS connections with ALPN disabled will be disallowed in future grpc-go releases\")\n\t\t}\n\t}\n\ttlsInfo := TLSInfo{\n\t\tState: cs,\n\t\tCommonAuthInfo: CommonAuthInfo{\n\t\t\tSecurityLevel: PrivacyAndIntegrity,\n\t\t},\n\t}\n\tid := credinternal.SPIFFEIDFromState(conn.ConnectionState())\n\tif id != nil {\n\t\ttlsInfo.SPIFFEID = id\n\t}\n\treturn credinternal.WrapSyscallConn(rawConn, conn), tlsInfo, nil\n}\n\nfunc (c *tlsCreds) Clone() TransportCredentials {\n\treturn NewTLS(c.config)\n}\n\nfunc (c *tlsCreds) OverrideServerName(serverNameOverride string) error {\n\tc.config.ServerName = serverNameOverride\n\treturn nil\n}\n\n// The following cipher suites are forbidden for use with HTTP/2 by\n// https://datatracker.ietf.org/doc/html/rfc7540#appendix-A\nvar tls12ForbiddenCipherSuites = map[uint16]struct{}{\n\ttls.TLS_RSA_WITH_AES_128_CBC_SHA:         {},\n\ttls.TLS_RSA_WITH_AES_256_CBC_SHA:         {},\n\ttls.TLS_RSA_WITH_AES_128_GCM_SHA256:      {},\n\ttls.TLS_RSA_WITH_AES_256_GCM_SHA384:      {},\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: {},\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: {},\n\ttls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:   {},\n\ttls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:   {},\n}\n\n// NewTLS uses c to construct a TransportCredentials based on TLS.\nfunc NewTLS(c *tls.Config) TransportCredentials {\n\tconfig := applyDefaults(c)\n\tif config.GetConfigForClient != nil {\n\t\toldFn := config.GetConfigForClient\n\t\tconfig.GetConfigForClient = func(hello *tls.ClientHelloInfo) (*tls.Config, error) {\n\t\t\tcfgForClient, err := oldFn(hello)\n\t\t\tif err != nil || cfgForClient == nil {\n\t\t\t\treturn cfgForClient, err\n\t\t\t}\n\t\t\treturn applyDefaults(cfgForClient), nil\n\t\t}\n\t}\n\treturn &tlsCreds{config: config}\n}\n\nfunc applyDefaults(c *tls.Config) *tls.Config {\n\tconfig := credinternal.CloneTLSConfig(c)\n\tconfig.NextProtos = credinternal.AppendH2ToNextProtos(config.NextProtos)\n\t// If the user did not configure a MinVersion and did not configure a\n\t// MaxVersion < 1.2, use MinVersion=1.2, which is required by\n\t// https://datatracker.ietf.org/doc/html/rfc7540#section-9.2\n\tif config.MinVersion == 0 && (config.MaxVersion == 0 || config.MaxVersion >= tls.VersionTLS12) {\n\t\tconfig.MinVersion = tls.VersionTLS12\n\t}\n\t// If the user did not configure CipherSuites, use all \"secure\" cipher\n\t// suites reported by the TLS package, but remove some explicitly forbidden\n\t// by https://datatracker.ietf.org/doc/html/rfc7540#appendix-A\n\tif config.CipherSuites == nil {\n\t\tfor _, cs := range tls.CipherSuites() {\n\t\t\tif _, ok := tls12ForbiddenCipherSuites[cs.ID]; !ok {\n\t\t\t\tconfig.CipherSuites = append(config.CipherSuites, cs.ID)\n\t\t\t}\n\t\t}\n\t}\n\treturn config\n}\n\n// NewClientTLSFromCert constructs TLS credentials from the provided root\n// certificate authority certificate(s) to validate server connections. If\n// certificates to establish the identity of the client need to be included in\n// the credentials (eg: for mTLS), use NewTLS instead, where a complete\n// tls.Config can be specified.\n//\n// serverNameOverride is for testing only. If set to a non empty string, it will\n// override the virtual host name of authority (e.g. :authority header field) in\n// requests.  Users should use grpc.WithAuthority passed to grpc.NewClient to\n// override the authority of the client instead.\nfunc NewClientTLSFromCert(cp *x509.CertPool, serverNameOverride string) TransportCredentials {\n\treturn NewTLS(&tls.Config{ServerName: serverNameOverride, RootCAs: cp})\n}\n\n// NewClientTLSFromFile constructs TLS credentials from the provided root\n// certificate authority certificate file(s) to validate server connections. If\n// certificates to establish the identity of the client need to be included in\n// the credentials (eg: for mTLS), use NewTLS instead, where a complete\n// tls.Config can be specified.\n//\n// serverNameOverride is for testing only. If set to a non empty string, it will\n// override the virtual host name of authority (e.g. :authority header field) in\n// requests.  Users should use grpc.WithAuthority passed to grpc.NewClient to\n// override the authority of the client instead.\nfunc NewClientTLSFromFile(certFile, serverNameOverride string) (TransportCredentials, error) {\n\tb, err := os.ReadFile(certFile)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcp := x509.NewCertPool()\n\tif !cp.AppendCertsFromPEM(b) {\n\t\treturn nil, fmt.Errorf(\"credentials: failed to append certificates\")\n\t}\n\treturn NewTLS(&tls.Config{ServerName: serverNameOverride, RootCAs: cp}), nil\n}\n\n// NewServerTLSFromCert constructs TLS credentials from the input certificate for server.\nfunc NewServerTLSFromCert(cert *tls.Certificate) TransportCredentials {\n\treturn NewTLS(&tls.Config{Certificates: []tls.Certificate{*cert}})\n}\n\n// NewServerTLSFromFile constructs TLS credentials from the input certificate file and key\n// file for server.\nfunc NewServerTLSFromFile(certFile, keyFile string) (TransportCredentials, error) {\n\tcert, err := tls.LoadX509KeyPair(certFile, keyFile)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn NewTLS(&tls.Config{Certificates: []tls.Certificate{cert}}), nil\n}\n\n// TLSChannelzSecurityValue defines the struct that TLS protocol should return\n// from GetSecurityValue(), containing security info like cipher and certificate used.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype TLSChannelzSecurityValue struct {\n\tChannelzSecurityValue\n\tStandardName      string\n\tLocalCertificate  []byte\n\tRemoteCertificate []byte\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/dialoptions.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\t\"net\"\n\t\"net/url\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/backoff\"\n\t\"google.golang.org/grpc/channelz\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/credentials/insecure\"\n\t\"google.golang.org/grpc/internal\"\n\tinternalbackoff \"google.golang.org/grpc/internal/backoff\"\n\t\"google.golang.org/grpc/internal/binarylog\"\n\t\"google.golang.org/grpc/internal/transport\"\n\t\"google.golang.org/grpc/keepalive\"\n\t\"google.golang.org/grpc/mem\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/stats\"\n)\n\nconst (\n\t// https://github.com/grpc/proposal/blob/master/A6-client-retries.md#limits-on-retries-and-hedges\n\tdefaultMaxCallAttempts = 5\n)\n\nfunc init() {\n\tinternal.AddGlobalDialOptions = func(opt ...DialOption) {\n\t\tglobalDialOptions = append(globalDialOptions, opt...)\n\t}\n\tinternal.ClearGlobalDialOptions = func() {\n\t\tglobalDialOptions = nil\n\t}\n\tinternal.AddGlobalPerTargetDialOptions = func(opt any) {\n\t\tif ptdo, ok := opt.(perTargetDialOption); ok {\n\t\t\tglobalPerTargetDialOptions = append(globalPerTargetDialOptions, ptdo)\n\t\t}\n\t}\n\tinternal.ClearGlobalPerTargetDialOptions = func() {\n\t\tglobalPerTargetDialOptions = nil\n\t}\n\tinternal.WithBinaryLogger = withBinaryLogger\n\tinternal.JoinDialOptions = newJoinDialOption\n\tinternal.DisableGlobalDialOptions = newDisableGlobalDialOptions\n\tinternal.WithBufferPool = withBufferPool\n}\n\n// dialOptions configure a Dial call. dialOptions are set by the DialOption\n// values passed to Dial.\ntype dialOptions struct {\n\tunaryInt  UnaryClientInterceptor\n\tstreamInt StreamClientInterceptor\n\n\tchainUnaryInts  []UnaryClientInterceptor\n\tchainStreamInts []StreamClientInterceptor\n\n\tcompressorV0                Compressor\n\tdc                          Decompressor\n\tbs                          internalbackoff.Strategy\n\tblock                       bool\n\treturnLastError             bool\n\ttimeout                     time.Duration\n\tauthority                   string\n\tbinaryLogger                binarylog.Logger\n\tcopts                       transport.ConnectOptions\n\tcallOptions                 []CallOption\n\tchannelzParent              channelz.Identifier\n\tdisableServiceConfig        bool\n\tdisableRetry                bool\n\tdisableHealthCheck          bool\n\tminConnectTimeout           func() time.Duration\n\tdefaultServiceConfig        *ServiceConfig // defaultServiceConfig is parsed from defaultServiceConfigRawJSON.\n\tdefaultServiceConfigRawJSON *string\n\tresolvers                   []resolver.Builder\n\tidleTimeout                 time.Duration\n\tdefaultScheme               string\n\tmaxCallAttempts             int\n\tenableLocalDNSResolution    bool // Specifies if target hostnames should be resolved when proxying is enabled.\n\tuseProxy                    bool // Specifies if a server should be connected via proxy.\n}\n\n// DialOption configures how we set up the connection.\ntype DialOption interface {\n\tapply(*dialOptions)\n}\n\nvar globalDialOptions []DialOption\n\n// perTargetDialOption takes a parsed target and returns a dial option to apply.\n//\n// This gets called after NewClient() parses the target, and allows per target\n// configuration set through a returned DialOption. The DialOption will not take\n// effect if specifies a resolver builder, as that Dial Option is factored in\n// while parsing target.\ntype perTargetDialOption interface {\n\t// DialOption returns a Dial Option to apply.\n\tDialOptionForTarget(parsedTarget url.URL) DialOption\n}\n\nvar globalPerTargetDialOptions []perTargetDialOption\n\n// EmptyDialOption does not alter the dial configuration. It can be embedded in\n// another structure to build custom dial options.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype EmptyDialOption struct{}\n\nfunc (EmptyDialOption) apply(*dialOptions) {}\n\ntype disableGlobalDialOptions struct{}\n\nfunc (disableGlobalDialOptions) apply(*dialOptions) {}\n\n// newDisableGlobalDialOptions returns a DialOption that prevents the ClientConn\n// from applying the global DialOptions (set via AddGlobalDialOptions).\nfunc newDisableGlobalDialOptions() DialOption {\n\treturn &disableGlobalDialOptions{}\n}\n\n// funcDialOption wraps a function that modifies dialOptions into an\n// implementation of the DialOption interface.\ntype funcDialOption struct {\n\tf func(*dialOptions)\n}\n\nfunc (fdo *funcDialOption) apply(do *dialOptions) {\n\tfdo.f(do)\n}\n\nfunc newFuncDialOption(f func(*dialOptions)) *funcDialOption {\n\treturn &funcDialOption{\n\t\tf: f,\n\t}\n}\n\ntype joinDialOption struct {\n\topts []DialOption\n}\n\nfunc (jdo *joinDialOption) apply(do *dialOptions) {\n\tfor _, opt := range jdo.opts {\n\t\topt.apply(do)\n\t}\n}\n\nfunc newJoinDialOption(opts ...DialOption) DialOption {\n\treturn &joinDialOption{opts: opts}\n}\n\n// WithSharedWriteBuffer allows reusing per-connection transport write buffer.\n// If this option is set to true every connection will release the buffer after\n// flushing the data on the wire.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithSharedWriteBuffer(val bool) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.SharedWriteBuffer = val\n\t})\n}\n\n// WithWriteBufferSize determines how much data can be batched before doing a\n// write on the wire. The default value for this buffer is 32KB.\n//\n// Zero or negative values will disable the write buffer such that each write\n// will be on underlying connection. Note: A Send call may not directly\n// translate to a write.\nfunc WithWriteBufferSize(s int) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.WriteBufferSize = s\n\t})\n}\n\n// WithReadBufferSize lets you set the size of read buffer, this determines how\n// much data can be read at most for each read syscall.\n//\n// The default value for this buffer is 32KB. Zero or negative values will\n// disable read buffer for a connection so data framer can access the\n// underlying conn directly.\nfunc WithReadBufferSize(s int) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.ReadBufferSize = s\n\t})\n}\n\n// WithInitialWindowSize returns a DialOption which sets the value for initial\n// window size on a stream. The lower bound for window size is 64K and any value\n// smaller than that will be ignored.\nfunc WithInitialWindowSize(s int32) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.InitialWindowSize = s\n\t\to.copts.StaticWindowSize = true\n\t})\n}\n\n// WithInitialConnWindowSize returns a DialOption which sets the value for\n// initial window size on a connection. The lower bound for window size is 64K\n// and any value smaller than that will be ignored.\nfunc WithInitialConnWindowSize(s int32) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.InitialConnWindowSize = s\n\t\to.copts.StaticWindowSize = true\n\t})\n}\n\n// WithStaticStreamWindowSize returns a DialOption which sets the initial\n// stream window size to the value provided and disables dynamic flow control.\nfunc WithStaticStreamWindowSize(s int32) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.InitialWindowSize = s\n\t\to.copts.StaticWindowSize = true\n\t})\n}\n\n// WithStaticConnWindowSize returns a DialOption which sets the initial\n// connection window size to the value provided and disables dynamic flow\n// control.\nfunc WithStaticConnWindowSize(s int32) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.InitialConnWindowSize = s\n\t\to.copts.StaticWindowSize = true\n\t})\n}\n\n// WithMaxMsgSize returns a DialOption which sets the maximum message size the\n// client can receive.\n//\n// Deprecated: use WithDefaultCallOptions(MaxCallRecvMsgSize(s)) instead.  Will\n// be supported throughout 1.x.\nfunc WithMaxMsgSize(s int) DialOption {\n\treturn WithDefaultCallOptions(MaxCallRecvMsgSize(s))\n}\n\n// WithDefaultCallOptions returns a DialOption which sets the default\n// CallOptions for calls over the connection.\nfunc WithDefaultCallOptions(cos ...CallOption) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.callOptions = append(o.callOptions, cos...)\n\t})\n}\n\n// WithCodec returns a DialOption which sets a codec for message marshaling and\n// unmarshaling.\n//\n// Deprecated: use WithDefaultCallOptions(ForceCodec(_)) instead.  Will be\n// supported throughout 1.x.\nfunc WithCodec(c Codec) DialOption {\n\treturn WithDefaultCallOptions(CallCustomCodec(c))\n}\n\n// WithCompressor returns a DialOption which sets a Compressor to use for\n// message compression. It has lower priority than the compressor set by the\n// UseCompressor CallOption.\n//\n// Deprecated: use UseCompressor instead.  Will be supported throughout 1.x.\nfunc WithCompressor(cp Compressor) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.compressorV0 = cp\n\t})\n}\n\n// WithDecompressor returns a DialOption which sets a Decompressor to use for\n// incoming message decompression.  If incoming response messages are encoded\n// using the decompressor's Type(), it will be used.  Otherwise, the message\n// encoding will be used to look up the compressor registered via\n// encoding.RegisterCompressor, which will then be used to decompress the\n// message.  If no compressor is registered for the encoding, an Unimplemented\n// status error will be returned.\n//\n// Deprecated: use encoding.RegisterCompressor instead.  Will be supported\n// throughout 1.x.\nfunc WithDecompressor(dc Decompressor) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.dc = dc\n\t})\n}\n\n// WithConnectParams configures the ClientConn to use the provided ConnectParams\n// for creating and maintaining connections to servers.\n//\n// The backoff configuration specified as part of the ConnectParams overrides\n// all defaults specified in\n// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. Consider\n// using the backoff.DefaultConfig as a base, in cases where you want to\n// override only a subset of the backoff configuration.\nfunc WithConnectParams(p ConnectParams) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.bs = internalbackoff.Exponential{Config: p.Backoff}\n\t\to.minConnectTimeout = func() time.Duration {\n\t\t\treturn p.MinConnectTimeout\n\t\t}\n\t})\n}\n\n// WithBackoffMaxDelay configures the dialer to use the provided maximum delay\n// when backing off after failed connection attempts.\n//\n// Deprecated: use WithConnectParams instead. Will be supported throughout 1.x.\nfunc WithBackoffMaxDelay(md time.Duration) DialOption {\n\treturn WithBackoffConfig(BackoffConfig{MaxDelay: md})\n}\n\n// WithBackoffConfig configures the dialer to use the provided backoff\n// parameters after connection failures.\n//\n// Deprecated: use WithConnectParams instead. Will be supported throughout 1.x.\nfunc WithBackoffConfig(b BackoffConfig) DialOption {\n\tbc := backoff.DefaultConfig\n\tbc.MaxDelay = b.MaxDelay\n\treturn withBackoff(internalbackoff.Exponential{Config: bc})\n}\n\n// withBackoff sets the backoff strategy used for connectRetryNum after a failed\n// connection attempt.\n//\n// This can be exported if arbitrary backoff strategies are allowed by gRPC.\nfunc withBackoff(bs internalbackoff.Strategy) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.bs = bs\n\t})\n}\n\n// WithBlock returns a DialOption which makes callers of Dial block until the\n// underlying connection is up. Without this, Dial returns immediately and\n// connecting the server happens in background.\n//\n// Use of this feature is not recommended.  For more information, please see:\n// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md\n//\n// Deprecated: this DialOption is not supported by NewClient.\n// Will be supported throughout 1.x.\nfunc WithBlock() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.block = true\n\t})\n}\n\n// WithReturnConnectionError returns a DialOption which makes the client connection\n// return a string containing both the last connection error that occurred and\n// the context.DeadlineExceeded error.\n// Implies WithBlock()\n//\n// Use of this feature is not recommended.  For more information, please see:\n// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md\n//\n// Deprecated: this DialOption is not supported by NewClient.\n// Will be supported throughout 1.x.\nfunc WithReturnConnectionError() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.block = true\n\t\to.returnLastError = true\n\t})\n}\n\n// WithInsecure returns a DialOption which disables transport security for this\n// ClientConn. Under the hood, it uses insecure.NewCredentials().\n//\n// Note that using this DialOption with per-RPC credentials (through\n// WithCredentialsBundle or WithPerRPCCredentials) which require transport\n// security is incompatible and will cause RPCs to fail.\n//\n// Deprecated: use WithTransportCredentials and insecure.NewCredentials()\n// instead. Will be supported throughout 1.x.\nfunc WithInsecure() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.TransportCredentials = insecure.NewCredentials()\n\t})\n}\n\n// WithNoProxy returns a DialOption which disables the use of proxies for this\n// ClientConn. This is ignored if WithDialer or WithContextDialer are used.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithNoProxy() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.useProxy = false\n\t})\n}\n\n// WithLocalDNSResolution forces local DNS name resolution even when a proxy is\n// specified in the environment.  By default, the server name is provided\n// directly to the proxy as part of the CONNECT handshake. This is ignored if\n// WithNoProxy is used.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithLocalDNSResolution() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.enableLocalDNSResolution = true\n\t})\n}\n\n// WithTransportCredentials returns a DialOption which configures a connection\n// level security credentials (e.g., TLS/SSL). This should not be used together\n// with WithCredentialsBundle.\nfunc WithTransportCredentials(creds credentials.TransportCredentials) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.TransportCredentials = creds\n\t})\n}\n\n// WithPerRPCCredentials returns a DialOption which sets credentials and places\n// auth state on each outbound RPC.\nfunc WithPerRPCCredentials(creds credentials.PerRPCCredentials) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.PerRPCCredentials = append(o.copts.PerRPCCredentials, creds)\n\t})\n}\n\n// WithCredentialsBundle returns a DialOption to set a credentials bundle for\n// the ClientConn.WithCreds. This should not be used together with\n// WithTransportCredentials.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithCredentialsBundle(b credentials.Bundle) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.CredsBundle = b\n\t})\n}\n\n// WithTimeout returns a DialOption that configures a timeout for dialing a\n// ClientConn initially. This is valid if and only if WithBlock() is present.\n//\n// Deprecated: this DialOption is not supported by NewClient.\n// Will be supported throughout 1.x.\nfunc WithTimeout(d time.Duration) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.timeout = d\n\t})\n}\n\n// WithContextDialer returns a DialOption that sets a dialer to create\n// connections. If FailOnNonTempDialError() is set to true, and an error is\n// returned by f, gRPC checks the error's Temporary() method to decide if it\n// should try to reconnect to the network address.\n//\n// Note that gRPC by default performs name resolution on the target passed to\n// NewClient. To bypass name resolution and cause the target string to be\n// passed directly to the dialer here instead, use the \"passthrough\" resolver\n// by specifying it in the target string, e.g. \"passthrough:target\".\n//\n// Note: All supported releases of Go (as of December 2023) override the OS\n// defaults for TCP keepalive time and interval to 15s. To enable TCP keepalive\n// with OS defaults for keepalive time and interval, use a net.Dialer that sets\n// the KeepAlive field to a negative value, and sets the SO_KEEPALIVE socket\n// option to true from the Control field. For a concrete example of how to do\n// this, see internal.NetDialerWithTCPKeepalive().\n//\n// For more information, please see [issue 23459] in the Go GitHub repo.\n//\n// [issue 23459]: https://github.com/golang/go/issues/23459\nfunc WithContextDialer(f func(context.Context, string) (net.Conn, error)) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.Dialer = f\n\t})\n}\n\n// WithDialer returns a DialOption that specifies a function to use for dialing\n// network addresses. If FailOnNonTempDialError() is set to true, and an error\n// is returned by f, gRPC checks the error's Temporary() method to decide if it\n// should try to reconnect to the network address.\n//\n// Deprecated: use WithContextDialer instead.  Will be supported throughout\n// 1.x.\nfunc WithDialer(f func(string, time.Duration) (net.Conn, error)) DialOption {\n\treturn WithContextDialer(\n\t\tfunc(ctx context.Context, addr string) (net.Conn, error) {\n\t\t\tif deadline, ok := ctx.Deadline(); ok {\n\t\t\t\treturn f(addr, time.Until(deadline))\n\t\t\t}\n\t\t\treturn f(addr, 0)\n\t\t})\n}\n\n// WithStatsHandler returns a DialOption that specifies the stats handler for\n// all the RPCs and underlying network connections in this ClientConn.\nfunc WithStatsHandler(h stats.Handler) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\tif h == nil {\n\t\t\tlogger.Error(\"ignoring nil parameter in grpc.WithStatsHandler ClientOption\")\n\t\t\t// Do not allow a nil stats handler, which would otherwise cause\n\t\t\t// panics.\n\t\t\treturn\n\t\t}\n\t\to.copts.StatsHandlers = append(o.copts.StatsHandlers, h)\n\t})\n}\n\n// withBinaryLogger returns a DialOption that specifies the binary logger for\n// this ClientConn.\nfunc withBinaryLogger(bl binarylog.Logger) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.binaryLogger = bl\n\t})\n}\n\n// FailOnNonTempDialError returns a DialOption that specifies if gRPC fails on\n// non-temporary dial errors. If f is true, and dialer returns a non-temporary\n// error, gRPC will fail the connection to the network address and won't try to\n// reconnect. The default value of FailOnNonTempDialError is false.\n//\n// FailOnNonTempDialError only affects the initial dial, and does not do\n// anything useful unless you are also using WithBlock().\n//\n// Use of this feature is not recommended.  For more information, please see:\n// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md\n//\n// Deprecated: this DialOption is not supported by NewClient.\n// This API may be changed or removed in a\n// later release.\nfunc FailOnNonTempDialError(f bool) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.FailOnNonTempDialError = f\n\t})\n}\n\n// WithUserAgent returns a DialOption that specifies a user agent string for all\n// the RPCs.\nfunc WithUserAgent(s string) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.UserAgent = s + \" \" + grpcUA\n\t})\n}\n\n// WithKeepaliveParams returns a DialOption that specifies keepalive parameters\n// for the client transport.\n//\n// Keepalive is disabled by default.\nfunc WithKeepaliveParams(kp keepalive.ClientParameters) DialOption {\n\tif kp.Time < internal.KeepaliveMinPingTime {\n\t\tlogger.Warningf(\"Adjusting keepalive ping interval to minimum period of %v\", internal.KeepaliveMinPingTime)\n\t\tkp.Time = internal.KeepaliveMinPingTime\n\t}\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.KeepaliveParams = kp\n\t})\n}\n\n// WithUnaryInterceptor returns a DialOption that specifies the interceptor for\n// unary RPCs.\nfunc WithUnaryInterceptor(f UnaryClientInterceptor) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.unaryInt = f\n\t})\n}\n\n// WithChainUnaryInterceptor returns a DialOption that specifies the chained\n// interceptor for unary RPCs. The first interceptor will be the outer most,\n// while the last interceptor will be the inner most wrapper around the real call.\n// All interceptors added by this method will be chained, and the interceptor\n// defined by WithUnaryInterceptor will always be prepended to the chain.\nfunc WithChainUnaryInterceptor(interceptors ...UnaryClientInterceptor) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.chainUnaryInts = append(o.chainUnaryInts, interceptors...)\n\t})\n}\n\n// WithStreamInterceptor returns a DialOption that specifies the interceptor for\n// streaming RPCs.\nfunc WithStreamInterceptor(f StreamClientInterceptor) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.streamInt = f\n\t})\n}\n\n// WithChainStreamInterceptor returns a DialOption that specifies the chained\n// interceptor for streaming RPCs. The first interceptor will be the outer most,\n// while the last interceptor will be the inner most wrapper around the real call.\n// All interceptors added by this method will be chained, and the interceptor\n// defined by WithStreamInterceptor will always be prepended to the chain.\nfunc WithChainStreamInterceptor(interceptors ...StreamClientInterceptor) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.chainStreamInts = append(o.chainStreamInts, interceptors...)\n\t})\n}\n\n// WithAuthority returns a DialOption that specifies the value to be used as the\n// :authority pseudo-header and as the server name in authentication handshake.\n// This overrides all other ways of setting authority on the channel, but can be\n// overridden per-call by using grpc.CallAuthority.\nfunc WithAuthority(a string) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.authority = a\n\t})\n}\n\n// WithChannelzParentID returns a DialOption that specifies the channelz ID of\n// current ClientConn's parent. This function is used in nested channel creation\n// (e.g. grpclb dial).\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithChannelzParentID(c channelz.Identifier) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.channelzParent = c\n\t})\n}\n\n// WithDisableServiceConfig returns a DialOption that causes gRPC to ignore any\n// service config provided by the resolver and provides a hint to the resolver\n// to not fetch service configs.\n//\n// Note that this dial option only disables service config from resolver. If\n// default service config is provided, gRPC will use the default service config.\nfunc WithDisableServiceConfig() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.disableServiceConfig = true\n\t})\n}\n\n// WithDefaultServiceConfig returns a DialOption that configures the default\n// service config, which will be used in cases where:\n//\n// 1. WithDisableServiceConfig is also used, or\n//\n// 2. The name resolver does not provide a service config or provides an\n// invalid service config.\n//\n// The parameter s is the JSON representation of the default service config.\n// For more information about service configs, see:\n// https://github.com/grpc/grpc/blob/master/doc/service_config.md\n// For a simple example of usage, see:\n// examples/features/load_balancing/client/main.go\nfunc WithDefaultServiceConfig(s string) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.defaultServiceConfigRawJSON = &s\n\t})\n}\n\n// WithDisableRetry returns a DialOption that disables retries, even if the\n// service config enables them.  This does not impact transparent retries, which\n// will happen automatically if no data is written to the wire or if the RPC is\n// unprocessed by the remote server.\nfunc WithDisableRetry() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.disableRetry = true\n\t})\n}\n\n// MaxHeaderListSizeDialOption is a DialOption that specifies the maximum\n// (uncompressed) size of header list that the client is prepared to accept.\ntype MaxHeaderListSizeDialOption struct {\n\tMaxHeaderListSize uint32\n}\n\nfunc (o MaxHeaderListSizeDialOption) apply(do *dialOptions) {\n\tdo.copts.MaxHeaderListSize = &o.MaxHeaderListSize\n}\n\n// WithMaxHeaderListSize returns a DialOption that specifies the maximum\n// (uncompressed) size of header list that the client is prepared to accept.\nfunc WithMaxHeaderListSize(s uint32) DialOption {\n\treturn MaxHeaderListSizeDialOption{\n\t\tMaxHeaderListSize: s,\n\t}\n}\n\n// WithDisableHealthCheck disables the LB channel health checking for all\n// SubConns of this ClientConn.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithDisableHealthCheck() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.disableHealthCheck = true\n\t})\n}\n\nfunc defaultDialOptions() dialOptions {\n\treturn dialOptions{\n\t\tcopts: transport.ConnectOptions{\n\t\t\tReadBufferSize:    defaultReadBufSize,\n\t\t\tWriteBufferSize:   defaultWriteBufSize,\n\t\t\tSharedWriteBuffer: true,\n\t\t\tUserAgent:         grpcUA,\n\t\t\tBufferPool:        mem.DefaultBufferPool(),\n\t\t},\n\t\tbs:                       internalbackoff.DefaultExponential,\n\t\tidleTimeout:              30 * time.Minute,\n\t\tdefaultScheme:            \"dns\",\n\t\tmaxCallAttempts:          defaultMaxCallAttempts,\n\t\tuseProxy:                 true,\n\t\tenableLocalDNSResolution: false,\n\t}\n}\n\n// withMinConnectDeadline specifies the function that clientconn uses to\n// get minConnectDeadline. This can be used to make connection attempts happen\n// faster/slower.\n//\n// For testing purpose only.\nfunc withMinConnectDeadline(f func() time.Duration) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.minConnectTimeout = f\n\t})\n}\n\n// withDefaultScheme is used to allow Dial to use \"passthrough\" as the default\n// name resolver, while NewClient uses \"dns\" otherwise.\nfunc withDefaultScheme(s string) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.defaultScheme = s\n\t})\n}\n\n// WithResolvers allows a list of resolver implementations to be registered\n// locally with the ClientConn without needing to be globally registered via\n// resolver.Register.  They will be matched against the scheme used for the\n// current Dial only, and will take precedence over the global registry.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithResolvers(rs ...resolver.Builder) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.resolvers = append(o.resolvers, rs...)\n\t})\n}\n\n// WithIdleTimeout returns a DialOption that configures an idle timeout for the\n// channel. If the channel is idle for the configured timeout, i.e there are no\n// ongoing RPCs and no new RPCs are initiated, the channel will enter idle mode\n// and as a result the name resolver and load balancer will be shut down. The\n// channel will exit idle mode when the Connect() method is called or when an\n// RPC is initiated.\n//\n// A default timeout of 30 minutes will be used if this dial option is not set\n// at dial time and idleness can be disabled by passing a timeout of zero.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithIdleTimeout(d time.Duration) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.idleTimeout = d\n\t})\n}\n\n// WithMaxCallAttempts returns a DialOption that configures the maximum number\n// of attempts per call (including retries and hedging) using the channel.\n// Service owners may specify a higher value for these parameters, but higher\n// values will be treated as equal to the maximum value by the client\n// implementation. This mitigates security concerns related to the service\n// config being transferred to the client via DNS.\n//\n// A value of 5 will be used if this dial option is not set or n < 2.\nfunc WithMaxCallAttempts(n int) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\tif n < 2 {\n\t\t\tn = defaultMaxCallAttempts\n\t\t}\n\t\to.maxCallAttempts = n\n\t})\n}\n\nfunc withBufferPool(bufferPool mem.BufferPool) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.BufferPool = bufferPool\n\t})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/doc.go",
    "content": "/*\n *\n * Copyright 2015 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n//go:generate ./scripts/regenerate.sh\n\n/*\nPackage grpc implements an RPC system called gRPC.\n\nSee grpc.io for more information about gRPC.\n*/\npackage grpc // import \"google.golang.org/grpc\"\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/encoding/encoding.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package encoding defines the interface for the compressor and codec, and\n// functions to register and retrieve compressors and codecs.\n//\n// # Experimental\n//\n// Notice: This package is EXPERIMENTAL and may be changed or removed in a\n// later release.\npackage encoding\n\nimport (\n\t\"io\"\n\t\"slices\"\n\t\"strings\"\n\n\t\"google.golang.org/grpc/encoding/internal\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n)\n\n// Identity specifies the optional encoding for uncompressed streams.\n// It is intended for grpc internal use only.\nconst Identity = \"identity\"\n\nfunc init() {\n\tinternal.RegisterCompressorForTesting = func(c Compressor) func() {\n\t\tname := c.Name()\n\t\tcurCompressor, found := registeredCompressor[name]\n\t\tRegisterCompressor(c)\n\t\treturn func() {\n\t\t\tif found {\n\t\t\t\tregisteredCompressor[name] = curCompressor\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdelete(registeredCompressor, name)\n\t\t\tgrpcutil.RegisteredCompressorNames = slices.DeleteFunc(grpcutil.RegisteredCompressorNames, func(s string) bool {\n\t\t\t\treturn s == name\n\t\t\t})\n\t\t}\n\t}\n}\n\n// Compressor is used for compressing and decompressing when sending or\n// receiving messages.\ntype Compressor interface {\n\t// Compress writes the data written to wc to w after compressing it.  If an\n\t// error occurs while initializing the compressor, that error is returned\n\t// instead.\n\tCompress(w io.Writer) (io.WriteCloser, error)\n\t// Decompress reads data from r, decompresses it, and provides the\n\t// uncompressed data via the returned io.Reader.  If an error occurs while\n\t// initializing the decompressor, that error is returned instead.\n\tDecompress(r io.Reader) (io.Reader, error)\n\t// Name is the name of the compression codec and is used to set the content\n\t// coding header.  The result must be static; the result cannot change\n\t// between calls.\n\tName() string\n}\n\nvar registeredCompressor = make(map[string]Compressor)\n\n// RegisterCompressor registers the compressor with gRPC by its name.  It can\n// be activated when sending an RPC via grpc.UseCompressor().  It will be\n// automatically accessed when receiving a message based on the content coding\n// header.  Servers also use it to send a response with the same encoding as\n// the request.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe.  If multiple Compressors are\n// registered with the same name, the one registered last will take effect.\nfunc RegisterCompressor(c Compressor) {\n\tregisteredCompressor[c.Name()] = c\n\tif !grpcutil.IsCompressorNameRegistered(c.Name()) {\n\t\tgrpcutil.RegisteredCompressorNames = append(grpcutil.RegisteredCompressorNames, c.Name())\n\t}\n}\n\n// GetCompressor returns Compressor for the given compressor name.\nfunc GetCompressor(name string) Compressor {\n\treturn registeredCompressor[name]\n}\n\n// Codec defines the interface gRPC uses to encode and decode messages.  Note\n// that implementations of this interface must be thread safe; a Codec's\n// methods can be called from concurrent goroutines.\ntype Codec interface {\n\t// Marshal returns the wire format of v.\n\tMarshal(v any) ([]byte, error)\n\t// Unmarshal parses the wire format into v.\n\tUnmarshal(data []byte, v any) error\n\t// Name returns the name of the Codec implementation. The returned string\n\t// will be used as part of content type in transmission.  The result must be\n\t// static; the result cannot change between calls.\n\tName() string\n}\n\nvar registeredCodecs = make(map[string]any)\n\n// RegisterCodec registers the provided Codec for use with all gRPC clients and\n// servers.\n//\n// The Codec will be stored and looked up by result of its Name() method, which\n// should match the content-subtype of the encoding handled by the Codec.  This\n// is case-insensitive, and is stored and looked up as lowercase.  If the\n// result of calling Name() is an empty string, RegisterCodec will panic. See\n// Content-Type on\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for\n// more details.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe.  If multiple Codecs are\n// registered with the same name, the one registered last will take effect.\nfunc RegisterCodec(codec Codec) {\n\tif codec == nil {\n\t\tpanic(\"cannot register a nil Codec\")\n\t}\n\tif codec.Name() == \"\" {\n\t\tpanic(\"cannot register Codec with empty string result for Name()\")\n\t}\n\tcontentSubtype := strings.ToLower(codec.Name())\n\tregisteredCodecs[contentSubtype] = codec\n}\n\n// GetCodec gets a registered Codec by content-subtype, or nil if no Codec is\n// registered for the content-subtype.\n//\n// The content-subtype is expected to be lowercase.\nfunc GetCodec(contentSubtype string) Codec {\n\tc, _ := registeredCodecs[contentSubtype].(Codec)\n\treturn c\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/encoding/encoding_v2.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage encoding\n\nimport (\n\t\"strings\"\n\n\t\"google.golang.org/grpc/mem\"\n)\n\n// CodecV2 defines the interface gRPC uses to encode and decode messages. Note\n// that implementations of this interface must be thread safe; a CodecV2's\n// methods can be called from concurrent goroutines.\ntype CodecV2 interface {\n\t// Marshal returns the wire format of v. The buffers in the returned\n\t// [mem.BufferSlice] must have at least one reference each, which will be freed\n\t// by gRPC when they are no longer needed.\n\tMarshal(v any) (out mem.BufferSlice, err error)\n\t// Unmarshal parses the wire format into v. Note that data will be freed as soon\n\t// as this function returns. If the codec wishes to guarantee access to the data\n\t// after this function, it must take its own reference that it frees when it is\n\t// no longer needed.\n\tUnmarshal(data mem.BufferSlice, v any) error\n\t// Name returns the name of the Codec implementation. The returned string\n\t// will be used as part of content type in transmission.  The result must be\n\t// static; the result cannot change between calls.\n\tName() string\n}\n\n// RegisterCodecV2 registers the provided CodecV2 for use with all gRPC clients and\n// servers.\n//\n// The CodecV2 will be stored and looked up by result of its Name() method, which\n// should match the content-subtype of the encoding handled by the CodecV2.  This\n// is case-insensitive, and is stored and looked up as lowercase.  If the\n// result of calling Name() is an empty string, RegisterCodecV2 will panic. See\n// Content-Type on\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for\n// more details.\n//\n// If both a Codec and CodecV2 are registered with the same name, the CodecV2\n// will be used.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe.  If multiple Codecs are\n// registered with the same name, the one registered last will take effect.\nfunc RegisterCodecV2(codec CodecV2) {\n\tif codec == nil {\n\t\tpanic(\"cannot register a nil CodecV2\")\n\t}\n\tif codec.Name() == \"\" {\n\t\tpanic(\"cannot register CodecV2 with empty string result for Name()\")\n\t}\n\tcontentSubtype := strings.ToLower(codec.Name())\n\tregisteredCodecs[contentSubtype] = codec\n}\n\n// GetCodecV2 gets a registered CodecV2 by content-subtype, or nil if no CodecV2 is\n// registered for the content-subtype.\n//\n// The content-subtype is expected to be lowercase.\nfunc GetCodecV2(contentSubtype string) CodecV2 {\n\tc, _ := registeredCodecs[contentSubtype].(CodecV2)\n\treturn c\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/encoding/internal/internal.go",
    "content": "/*\n *\n * Copyright 2025 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package internal contains code internal to the encoding package.\npackage internal\n\n// RegisterCompressorForTesting registers a compressor in the global compressor\n// registry. It returns a cleanup function that should be called at the end\n// of the test to unregister the compressor.\n//\n// This prevents compressors registered in one test from appearing in the\n// encoding headers of subsequent tests.\nvar RegisterCompressorForTesting any // func RegisterCompressor(c Compressor) func()\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/encoding/proto/proto.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package proto defines the protobuf codec. Importing this package will\n// register the codec.\npackage proto\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/encoding\"\n\t\"google.golang.org/grpc/mem\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/protoadapt\"\n)\n\n// Name is the name registered for the proto compressor.\nconst Name = \"proto\"\n\nfunc init() {\n\tencoding.RegisterCodecV2(&codecV2{})\n}\n\n// codec is a CodecV2 implementation with protobuf. It is the default codec for\n// gRPC.\ntype codecV2 struct{}\n\nfunc (c *codecV2) Marshal(v any) (data mem.BufferSlice, err error) {\n\tvv := messageV2Of(v)\n\tif vv == nil {\n\t\treturn nil, fmt.Errorf(\"proto: failed to marshal, message is %T, want proto.Message\", v)\n\t}\n\n\t// Important: if we remove this Size call then we cannot use\n\t// UseCachedSize in MarshalOptions below.\n\tsize := proto.Size(vv)\n\n\t// MarshalOptions with UseCachedSize allows reusing the result from the\n\t// previous Size call. This is safe here because:\n\t//\n\t// 1. We just computed the size.\n\t// 2. We assume the message is not being mutated concurrently.\n\t//\n\t// Important: If the proto.Size call above is removed, using UseCachedSize\n\t// becomes unsafe and may lead to incorrect marshaling.\n\t//\n\t// For more details, see the doc of UseCachedSize:\n\t// https://pkg.go.dev/google.golang.org/protobuf/proto#MarshalOptions\n\tmarshalOptions := proto.MarshalOptions{UseCachedSize: true}\n\n\tif mem.IsBelowBufferPoolingThreshold(size) {\n\t\tbuf, err := marshalOptions.Marshal(vv)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdata = append(data, mem.SliceBuffer(buf))\n\t} else {\n\t\tpool := mem.DefaultBufferPool()\n\t\tbuf := pool.Get(size)\n\t\tif _, err := marshalOptions.MarshalAppend((*buf)[:0], vv); err != nil {\n\t\t\tpool.Put(buf)\n\t\t\treturn nil, err\n\t\t}\n\t\tdata = append(data, mem.NewBuffer(buf, pool))\n\t}\n\n\treturn data, nil\n}\n\nfunc (c *codecV2) Unmarshal(data mem.BufferSlice, v any) (err error) {\n\tvv := messageV2Of(v)\n\tif vv == nil {\n\t\treturn fmt.Errorf(\"failed to unmarshal, message is %T, want proto.Message\", v)\n\t}\n\n\tbuf := data.MaterializeToBuffer(mem.DefaultBufferPool())\n\tdefer buf.Free()\n\t// TODO: Upgrade proto.Unmarshal to support mem.BufferSlice. Right now, it's not\n\t//  really possible without a major overhaul of the proto package, but the\n\t//  vtprotobuf library may be able to support this.\n\treturn proto.Unmarshal(buf.ReadOnlyData(), vv)\n}\n\nfunc messageV2Of(v any) proto.Message {\n\tswitch v := v.(type) {\n\tcase protoadapt.MessageV1:\n\t\treturn protoadapt.MessageV2Of(v)\n\tcase protoadapt.MessageV2:\n\t\treturn v\n\t}\n\n\treturn nil\n}\n\nfunc (c *codecV2) Name() string {\n\treturn Name\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/experimental/stats/metricregistry.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage stats\n\nimport (\n\t\"maps\"\n\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/stats\"\n)\n\nfunc init() {\n\tinternal.SnapshotMetricRegistryForTesting = snapshotMetricsRegistryForTesting\n}\n\nvar logger = grpclog.Component(\"metrics-registry\")\n\n// DefaultMetrics are the default metrics registered through global metrics\n// registry. This is written to at initialization time only, and is read only\n// after initialization.\nvar DefaultMetrics = stats.NewMetricSet()\n\n// MetricDescriptor is the data for a registered metric.\ntype MetricDescriptor struct {\n\t// The name of this metric. This name must be unique across the whole binary\n\t// (including any per call metrics). See\n\t// https://github.com/grpc/proposal/blob/master/A79-non-per-call-metrics-architecture.md#metric-instrument-naming-conventions\n\t// for metric naming conventions.\n\tName string\n\t// The description of this metric.\n\tDescription string\n\t// The unit (e.g. entries, seconds) of this metric.\n\tUnit string\n\t// The required label keys for this metric. These are intended to\n\t// metrics emitted from a stats handler.\n\tLabels []string\n\t// The optional label keys for this metric. These are intended to attached\n\t// to metrics emitted from a stats handler if configured.\n\tOptionalLabels []string\n\t// Whether this metric is on by default.\n\tDefault bool\n\t// The type of metric. This is set by the metric registry, and not intended\n\t// to be set by a component registering a metric.\n\tType MetricType\n\t// Bounds are the bounds of this metric. This only applies to histogram\n\t// metrics. If unset or set with length 0, stats handlers will fall back to\n\t// default bounds.\n\tBounds []float64\n}\n\n// MetricType is the type of metric.\ntype MetricType int\n\n// Type of metric supported by this instrument registry.\nconst (\n\tMetricTypeIntCount MetricType = iota\n\tMetricTypeFloatCount\n\tMetricTypeIntHisto\n\tMetricTypeFloatHisto\n\tMetricTypeIntGauge\n\tMetricTypeIntUpDownCount\n\tMetricTypeIntAsyncGauge\n)\n\n// Int64CountHandle is a typed handle for a int count metric. This handle\n// is passed at the recording point in order to know which metric to record\n// on.\ntype Int64CountHandle MetricDescriptor\n\n// Descriptor returns the int64 count handle typecast to a pointer to a\n// MetricDescriptor.\nfunc (h *Int64CountHandle) Descriptor() *MetricDescriptor {\n\treturn (*MetricDescriptor)(h)\n}\n\n// Record records the int64 count value on the metrics recorder provided.\nfunc (h *Int64CountHandle) Record(recorder MetricsRecorder, incr int64, labels ...string) {\n\trecorder.RecordInt64Count(h, incr, labels...)\n}\n\n// Int64UpDownCountHandle is a typed handle for an int up-down counter metric.\n// This handle is passed at the recording point in order to know which metric\n// to record on.\ntype Int64UpDownCountHandle MetricDescriptor\n\n// Descriptor returns the int64 up-down counter handle typecast to a pointer to a\n// MetricDescriptor.\nfunc (h *Int64UpDownCountHandle) Descriptor() *MetricDescriptor {\n\treturn (*MetricDescriptor)(h)\n}\n\n// Record records the int64 up-down counter value on the metrics recorder provided.\n// The value 'v' can be positive to increment or negative to decrement.\nfunc (h *Int64UpDownCountHandle) Record(recorder MetricsRecorder, v int64, labels ...string) {\n\trecorder.RecordInt64UpDownCount(h, v, labels...)\n}\n\n// Float64CountHandle is a typed handle for a float count metric. This handle is\n// passed at the recording point in order to know which metric to record on.\ntype Float64CountHandle MetricDescriptor\n\n// Descriptor returns the float64 count handle typecast to a pointer to a\n// MetricDescriptor.\nfunc (h *Float64CountHandle) Descriptor() *MetricDescriptor {\n\treturn (*MetricDescriptor)(h)\n}\n\n// Record records the float64 count value on the metrics recorder provided.\nfunc (h *Float64CountHandle) Record(recorder MetricsRecorder, incr float64, labels ...string) {\n\trecorder.RecordFloat64Count(h, incr, labels...)\n}\n\n// Int64HistoHandle is a typed handle for an int histogram metric. This handle\n// is passed at the recording point in order to know which metric to record on.\ntype Int64HistoHandle MetricDescriptor\n\n// Descriptor returns the int64 histo handle typecast to a pointer to a\n// MetricDescriptor.\nfunc (h *Int64HistoHandle) Descriptor() *MetricDescriptor {\n\treturn (*MetricDescriptor)(h)\n}\n\n// Record records the int64 histo value on the metrics recorder provided.\nfunc (h *Int64HistoHandle) Record(recorder MetricsRecorder, incr int64, labels ...string) {\n\trecorder.RecordInt64Histo(h, incr, labels...)\n}\n\n// Float64HistoHandle is a typed handle for a float histogram metric. This\n// handle is passed at the recording point in order to know which metric to\n// record on.\ntype Float64HistoHandle MetricDescriptor\n\n// Descriptor returns the float64 histo handle typecast to a pointer to a\n// MetricDescriptor.\nfunc (h *Float64HistoHandle) Descriptor() *MetricDescriptor {\n\treturn (*MetricDescriptor)(h)\n}\n\n// Record records the float64 histo value on the metrics recorder provided.\nfunc (h *Float64HistoHandle) Record(recorder MetricsRecorder, incr float64, labels ...string) {\n\trecorder.RecordFloat64Histo(h, incr, labels...)\n}\n\n// Int64GaugeHandle is a typed handle for an int gauge metric. This handle is\n// passed at the recording point in order to know which metric to record on.\ntype Int64GaugeHandle MetricDescriptor\n\n// Descriptor returns the int64 gauge handle typecast to a pointer to a\n// MetricDescriptor.\nfunc (h *Int64GaugeHandle) Descriptor() *MetricDescriptor {\n\treturn (*MetricDescriptor)(h)\n}\n\n// Record records the int64 histo value on the metrics recorder provided.\nfunc (h *Int64GaugeHandle) Record(recorder MetricsRecorder, incr int64, labels ...string) {\n\trecorder.RecordInt64Gauge(h, incr, labels...)\n}\n\n// AsyncMetric is a marker interface for asynchronous metric types.\ntype AsyncMetric interface {\n\tisAsync()\n\tDescriptor() *MetricDescriptor\n}\n\n// Int64AsyncGaugeHandle is a typed handle for an int gauge metric. This handle is\n// passed at the recording point in order to know which metric to record on.\ntype Int64AsyncGaugeHandle MetricDescriptor\n\n// isAsync implements the AsyncMetric interface.\nfunc (h *Int64AsyncGaugeHandle) isAsync() {}\n\n// Descriptor returns the int64 gauge handle typecast to a pointer to a\n// MetricDescriptor.\nfunc (h *Int64AsyncGaugeHandle) Descriptor() *MetricDescriptor {\n\treturn (*MetricDescriptor)(h)\n}\n\n// Record records the int64 gauge value on the metrics recorder provided.\nfunc (h *Int64AsyncGaugeHandle) Record(recorder AsyncMetricsRecorder, value int64, labels ...string) {\n\trecorder.RecordInt64AsyncGauge(h, value, labels...)\n}\n\n// registeredMetrics are the registered metric descriptor names.\nvar registeredMetrics = make(map[string]bool)\n\n// metricsRegistry contains all of the registered metrics.\n//\n// This is written to only at init time, and read only after that.\nvar metricsRegistry = make(map[string]*MetricDescriptor)\n\n// DescriptorForMetric returns the MetricDescriptor from the global registry.\n//\n// Returns nil if MetricDescriptor not present.\nfunc DescriptorForMetric(metricName string) *MetricDescriptor {\n\treturn metricsRegistry[metricName]\n}\n\nfunc registerMetric(metricName string, def bool) {\n\tif registeredMetrics[metricName] {\n\t\tlogger.Fatalf(\"metric %v already registered\", metricName)\n\t}\n\tregisteredMetrics[metricName] = true\n\tif def {\n\t\tDefaultMetrics = DefaultMetrics.Add(metricName)\n\t}\n}\n\n// RegisterInt64Count registers the metric description onto the global registry.\n// It returns a typed handle to use to recording data.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. If multiple metrics are\n// registered with the same name, this function will panic.\nfunc RegisterInt64Count(descriptor MetricDescriptor) *Int64CountHandle {\n\tregisterMetric(descriptor.Name, descriptor.Default)\n\tdescriptor.Type = MetricTypeIntCount\n\tdescPtr := &descriptor\n\tmetricsRegistry[descriptor.Name] = descPtr\n\treturn (*Int64CountHandle)(descPtr)\n}\n\n// RegisterFloat64Count registers the metric description onto the global\n// registry. It returns a typed handle to use to recording data.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. If multiple metrics are\n// registered with the same name, this function will panic.\nfunc RegisterFloat64Count(descriptor MetricDescriptor) *Float64CountHandle {\n\tregisterMetric(descriptor.Name, descriptor.Default)\n\tdescriptor.Type = MetricTypeFloatCount\n\tdescPtr := &descriptor\n\tmetricsRegistry[descriptor.Name] = descPtr\n\treturn (*Float64CountHandle)(descPtr)\n}\n\n// RegisterInt64Histo registers the metric description onto the global registry.\n// It returns a typed handle to use to recording data.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. If multiple metrics are\n// registered with the same name, this function will panic.\nfunc RegisterInt64Histo(descriptor MetricDescriptor) *Int64HistoHandle {\n\tregisterMetric(descriptor.Name, descriptor.Default)\n\tdescriptor.Type = MetricTypeIntHisto\n\tdescPtr := &descriptor\n\tmetricsRegistry[descriptor.Name] = descPtr\n\treturn (*Int64HistoHandle)(descPtr)\n}\n\n// RegisterFloat64Histo registers the metric description onto the global\n// registry. It returns a typed handle to use to recording data.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. If multiple metrics are\n// registered with the same name, this function will panic.\nfunc RegisterFloat64Histo(descriptor MetricDescriptor) *Float64HistoHandle {\n\tregisterMetric(descriptor.Name, descriptor.Default)\n\tdescriptor.Type = MetricTypeFloatHisto\n\tdescPtr := &descriptor\n\tmetricsRegistry[descriptor.Name] = descPtr\n\treturn (*Float64HistoHandle)(descPtr)\n}\n\n// RegisterInt64Gauge registers the metric description onto the global registry.\n// It returns a typed handle to use to recording data.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. If multiple metrics are\n// registered with the same name, this function will panic.\nfunc RegisterInt64Gauge(descriptor MetricDescriptor) *Int64GaugeHandle {\n\tregisterMetric(descriptor.Name, descriptor.Default)\n\tdescriptor.Type = MetricTypeIntGauge\n\tdescPtr := &descriptor\n\tmetricsRegistry[descriptor.Name] = descPtr\n\treturn (*Int64GaugeHandle)(descPtr)\n}\n\n// RegisterInt64UpDownCount registers the metric description onto the global registry.\n// It returns a typed handle to use for recording data.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. If multiple metrics are\n// registered with the same name, this function will panic.\nfunc RegisterInt64UpDownCount(descriptor MetricDescriptor) *Int64UpDownCountHandle {\n\tregisterMetric(descriptor.Name, descriptor.Default)\n\t// Set the specific metric type for the up-down counter\n\tdescriptor.Type = MetricTypeIntUpDownCount\n\tdescPtr := &descriptor\n\tmetricsRegistry[descriptor.Name] = descPtr\n\treturn (*Int64UpDownCountHandle)(descPtr)\n}\n\n// RegisterInt64AsyncGauge registers the metric description onto the global registry.\n// It returns a typed handle to use for recording data.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. If multiple metrics are\n// registered with the same name, this function will panic.\nfunc RegisterInt64AsyncGauge(descriptor MetricDescriptor) *Int64AsyncGaugeHandle {\n\tregisterMetric(descriptor.Name, descriptor.Default)\n\tdescriptor.Type = MetricTypeIntAsyncGauge\n\tdescPtr := &descriptor\n\tmetricsRegistry[descriptor.Name] = descPtr\n\treturn (*Int64AsyncGaugeHandle)(descPtr)\n}\n\n// snapshotMetricsRegistryForTesting snapshots the global data of the metrics\n// registry. Returns a cleanup function that sets the metrics registry to its\n// original state.\nfunc snapshotMetricsRegistryForTesting() func() {\n\toldDefaultMetrics := DefaultMetrics\n\toldRegisteredMetrics := registeredMetrics\n\toldMetricsRegistry := metricsRegistry\n\n\tregisteredMetrics = make(map[string]bool)\n\tmetricsRegistry = make(map[string]*MetricDescriptor)\n\tmaps.Copy(registeredMetrics, registeredMetrics)\n\tmaps.Copy(metricsRegistry, metricsRegistry)\n\n\treturn func() {\n\t\tDefaultMetrics = oldDefaultMetrics\n\t\tregisteredMetrics = oldRegisteredMetrics\n\t\tmetricsRegistry = oldMetricsRegistry\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/experimental/stats/metrics.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package stats contains experimental metrics/stats API's.\npackage stats\n\nimport (\n\t\"context\"\n\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/stats\"\n)\n\ntype customLabelKey struct{}\n\n// NewContextWithCustomLabel returns a new context with the provided custom label\n// attached. The label will be propagated to all metric instruments specified in gRFC A108.\nfunc NewContextWithCustomLabel(ctx context.Context, label string) context.Context {\n\treturn context.WithValue(ctx, customLabelKey{}, label)\n}\n\n// CustomLabelFromContext returns the custom label from the context if it exists.\n// If the custom label is not present, it returns an empty string.\nfunc CustomLabelFromContext(ctx context.Context) string {\n\tlabel, _ := ctx.Value(customLabelKey{}).(string)\n\treturn label\n}\n\n// MetricsRecorder records on metrics derived from metric registry.\n// Implementors must embed UnimplementedMetricsRecorder.\ntype MetricsRecorder interface {\n\t// RecordInt64Count records the measurement alongside labels on the int\n\t// count associated with the provided handle.\n\tRecordInt64Count(handle *Int64CountHandle, incr int64, labels ...string)\n\t// RecordFloat64Count records the measurement alongside labels on the float\n\t// count associated with the provided handle.\n\tRecordFloat64Count(handle *Float64CountHandle, incr float64, labels ...string)\n\t// RecordInt64Histo records the measurement alongside labels on the int\n\t// histo associated with the provided handle.\n\tRecordInt64Histo(handle *Int64HistoHandle, incr int64, labels ...string)\n\t// RecordFloat64Histo records the measurement alongside labels on the float\n\t// histo associated with the provided handle.\n\tRecordFloat64Histo(handle *Float64HistoHandle, incr float64, labels ...string)\n\t// RecordInt64Gauge records the measurement alongside labels on the int\n\t// gauge associated with the provided handle.\n\tRecordInt64Gauge(handle *Int64GaugeHandle, incr int64, labels ...string)\n\t// RecordInt64UpDownCounter records the measurement alongside labels on the int\n\t// count associated with the provided handle.\n\tRecordInt64UpDownCount(handle *Int64UpDownCountHandle, incr int64, labels ...string)\n\t// RegisterAsyncReporter registers a reporter to produce metric values for\n\t// only the listed descriptors. The returned function must be called when\n\t// the metrics are no longer needed, which will remove the reporter. The\n\t// returned method needs to be idempotent and concurrent safe.\n\tRegisterAsyncReporter(reporter AsyncMetricReporter, descriptors ...AsyncMetric) func()\n\n\t// EnforceMetricsRecorderEmbedding is included to force implementers to embed\n\t// another implementation of this interface, allowing gRPC to add methods\n\t// without breaking users.\n\tinternal.EnforceMetricsRecorderEmbedding\n}\n\n// AsyncMetricReporter is an interface for types that record metrics asynchronously\n// for the set of descriptors they are registered with. The AsyncMetricsRecorder\n// parameter is used to record values for these metrics.\n//\n// Implementations must make unique recordings across all registered\n// AsyncMetricReporters. Meaning, they should not report values for a metric with\n// the same attributes as another AsyncMetricReporter will report.\n//\n// Implementations must be concurrent-safe.\ntype AsyncMetricReporter interface {\n\t// Report records metric values using the provided recorder.\n\tReport(AsyncMetricsRecorder) error\n}\n\n// AsyncMetricReporterFunc is an adapter to allow the use of ordinary functions as\n// AsyncMetricReporters.\ntype AsyncMetricReporterFunc func(AsyncMetricsRecorder) error\n\n// Report calls f(r).\nfunc (f AsyncMetricReporterFunc) Report(r AsyncMetricsRecorder) error {\n\treturn f(r)\n}\n\n// AsyncMetricsRecorder records on asynchronous metrics derived from metric registry.\ntype AsyncMetricsRecorder interface {\n\t// RecordInt64AsyncGauge records the measurement alongside labels on the int\n\t// count associated with the provided handle asynchronously\n\tRecordInt64AsyncGauge(handle *Int64AsyncGaugeHandle, incr int64, labels ...string)\n}\n\n// Metrics is an experimental legacy alias of the now-stable stats.MetricSet.\n// Metrics will be deleted in a future release.\ntype Metrics = stats.MetricSet\n\n// Metric was replaced by direct usage of strings.\ntype Metric = string\n\n// NewMetrics is an experimental legacy alias of the now-stable\n// stats.NewMetricSet.  NewMetrics will be deleted in a future release.\nfunc NewMetrics(metrics ...Metric) *Metrics {\n\treturn stats.NewMetricSet(metrics...)\n}\n\n// UnimplementedMetricsRecorder must be embedded to have forward compatible implementations.\ntype UnimplementedMetricsRecorder struct {\n\tinternal.EnforceMetricsRecorderEmbedding\n}\n\n// RecordInt64Count provides a no-op implementation.\nfunc (UnimplementedMetricsRecorder) RecordInt64Count(*Int64CountHandle, int64, ...string) {}\n\n// RecordFloat64Count provides a no-op implementation.\nfunc (UnimplementedMetricsRecorder) RecordFloat64Count(*Float64CountHandle, float64, ...string) {}\n\n// RecordInt64Histo provides a no-op implementation.\nfunc (UnimplementedMetricsRecorder) RecordInt64Histo(*Int64HistoHandle, int64, ...string) {}\n\n// RecordFloat64Histo provides a no-op implementation.\nfunc (UnimplementedMetricsRecorder) RecordFloat64Histo(*Float64HistoHandle, float64, ...string) {}\n\n// RecordInt64Gauge provides a no-op implementation.\nfunc (UnimplementedMetricsRecorder) RecordInt64Gauge(*Int64GaugeHandle, int64, ...string) {}\n\n// RecordInt64UpDownCount provides a no-op implementation.\nfunc (UnimplementedMetricsRecorder) RecordInt64UpDownCount(*Int64UpDownCountHandle, int64, ...string) {\n}\n\n// RegisterAsyncReporter provides a no-op implementation.\nfunc (UnimplementedMetricsRecorder) RegisterAsyncReporter(AsyncMetricReporter, ...AsyncMetric) func() {\n\t// No-op: Return an empty function to ensure caller doesn't panic on nil function call\n\treturn func() {}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/component.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpclog\n\nimport (\n\t\"fmt\"\n)\n\n// componentData records the settings for a component.\ntype componentData struct {\n\tname string\n}\n\nvar cache = map[string]*componentData{}\n\nfunc (c *componentData) InfoDepth(depth int, args ...any) {\n\targs = append([]any{\"[\" + string(c.name) + \"]\"}, args...)\n\tInfoDepth(depth+1, args...)\n}\n\nfunc (c *componentData) WarningDepth(depth int, args ...any) {\n\targs = append([]any{\"[\" + string(c.name) + \"]\"}, args...)\n\tWarningDepth(depth+1, args...)\n}\n\nfunc (c *componentData) ErrorDepth(depth int, args ...any) {\n\targs = append([]any{\"[\" + string(c.name) + \"]\"}, args...)\n\tErrorDepth(depth+1, args...)\n}\n\nfunc (c *componentData) FatalDepth(depth int, args ...any) {\n\targs = append([]any{\"[\" + string(c.name) + \"]\"}, args...)\n\tFatalDepth(depth+1, args...)\n}\n\nfunc (c *componentData) Info(args ...any) {\n\tc.InfoDepth(1, args...)\n}\n\nfunc (c *componentData) Warning(args ...any) {\n\tc.WarningDepth(1, args...)\n}\n\nfunc (c *componentData) Error(args ...any) {\n\tc.ErrorDepth(1, args...)\n}\n\nfunc (c *componentData) Fatal(args ...any) {\n\tc.FatalDepth(1, args...)\n}\n\nfunc (c *componentData) Infof(format string, args ...any) {\n\tc.InfoDepth(1, fmt.Sprintf(format, args...))\n}\n\nfunc (c *componentData) Warningf(format string, args ...any) {\n\tc.WarningDepth(1, fmt.Sprintf(format, args...))\n}\n\nfunc (c *componentData) Errorf(format string, args ...any) {\n\tc.ErrorDepth(1, fmt.Sprintf(format, args...))\n}\n\nfunc (c *componentData) Fatalf(format string, args ...any) {\n\tc.FatalDepth(1, fmt.Sprintf(format, args...))\n}\n\nfunc (c *componentData) Infoln(args ...any) {\n\tc.InfoDepth(1, args...)\n}\n\nfunc (c *componentData) Warningln(args ...any) {\n\tc.WarningDepth(1, args...)\n}\n\nfunc (c *componentData) Errorln(args ...any) {\n\tc.ErrorDepth(1, args...)\n}\n\nfunc (c *componentData) Fatalln(args ...any) {\n\tc.FatalDepth(1, args...)\n}\n\nfunc (c *componentData) V(l int) bool {\n\treturn V(l)\n}\n\n// Component creates a new component and returns it for logging. If a component\n// with the name already exists, nothing will be created and it will be\n// returned. SetLoggerV2 will panic if it is called with a logger created by\n// Component.\nfunc Component(componentName string) DepthLoggerV2 {\n\tif cData, ok := cache[componentName]; ok {\n\t\treturn cData\n\t}\n\tc := &componentData{componentName}\n\tcache[componentName] = c\n\treturn c\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/grpclog.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package grpclog defines logging for grpc.\n//\n// In the default logger, severity level can be set by environment variable\n// GRPC_GO_LOG_SEVERITY_LEVEL, verbosity level can be set by\n// GRPC_GO_LOG_VERBOSITY_LEVEL.\npackage grpclog\n\nimport (\n\t\"os\"\n\n\t\"google.golang.org/grpc/grpclog/internal\"\n)\n\nfunc init() {\n\tSetLoggerV2(newLoggerV2())\n}\n\n// V reports whether verbosity level l is at least the requested verbose level.\nfunc V(l int) bool {\n\treturn internal.LoggerV2Impl.V(l)\n}\n\n// Info logs to the INFO log.\nfunc Info(args ...any) {\n\tinternal.LoggerV2Impl.Info(args...)\n}\n\n// Infof logs to the INFO log. Arguments are handled in the manner of fmt.Printf.\nfunc Infof(format string, args ...any) {\n\tinternal.LoggerV2Impl.Infof(format, args...)\n}\n\n// Infoln logs to the INFO log. Arguments are handled in the manner of fmt.Println.\nfunc Infoln(args ...any) {\n\tinternal.LoggerV2Impl.Infoln(args...)\n}\n\n// Warning logs to the WARNING log.\nfunc Warning(args ...any) {\n\tinternal.LoggerV2Impl.Warning(args...)\n}\n\n// Warningf logs to the WARNING log. Arguments are handled in the manner of fmt.Printf.\nfunc Warningf(format string, args ...any) {\n\tinternal.LoggerV2Impl.Warningf(format, args...)\n}\n\n// Warningln logs to the WARNING log. Arguments are handled in the manner of fmt.Println.\nfunc Warningln(args ...any) {\n\tinternal.LoggerV2Impl.Warningln(args...)\n}\n\n// Error logs to the ERROR log.\nfunc Error(args ...any) {\n\tinternal.LoggerV2Impl.Error(args...)\n}\n\n// Errorf logs to the ERROR log. Arguments are handled in the manner of fmt.Printf.\nfunc Errorf(format string, args ...any) {\n\tinternal.LoggerV2Impl.Errorf(format, args...)\n}\n\n// Errorln logs to the ERROR log. Arguments are handled in the manner of fmt.Println.\nfunc Errorln(args ...any) {\n\tinternal.LoggerV2Impl.Errorln(args...)\n}\n\n// Fatal logs to the FATAL log. Arguments are handled in the manner of fmt.Print.\n// It calls os.Exit() with exit code 1.\nfunc Fatal(args ...any) {\n\tinternal.LoggerV2Impl.Fatal(args...)\n\t// Make sure fatal logs will exit.\n\tos.Exit(1)\n}\n\n// Fatalf logs to the FATAL log. Arguments are handled in the manner of fmt.Printf.\n// It calls os.Exit() with exit code 1.\nfunc Fatalf(format string, args ...any) {\n\tinternal.LoggerV2Impl.Fatalf(format, args...)\n\t// Make sure fatal logs will exit.\n\tos.Exit(1)\n}\n\n// Fatalln logs to the FATAL log. Arguments are handled in the manner of fmt.Println.\n// It calls os.Exit() with exit code 1.\nfunc Fatalln(args ...any) {\n\tinternal.LoggerV2Impl.Fatalln(args...)\n\t// Make sure fatal logs will exit.\n\tos.Exit(1)\n}\n\n// Print prints to the logger. Arguments are handled in the manner of fmt.Print.\n//\n// Deprecated: use Info.\nfunc Print(args ...any) {\n\tinternal.LoggerV2Impl.Info(args...)\n}\n\n// Printf prints to the logger. Arguments are handled in the manner of fmt.Printf.\n//\n// Deprecated: use Infof.\nfunc Printf(format string, args ...any) {\n\tinternal.LoggerV2Impl.Infof(format, args...)\n}\n\n// Println prints to the logger. Arguments are handled in the manner of fmt.Println.\n//\n// Deprecated: use Infoln.\nfunc Println(args ...any) {\n\tinternal.LoggerV2Impl.Infoln(args...)\n}\n\n// InfoDepth logs to the INFO log at the specified depth.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc InfoDepth(depth int, args ...any) {\n\tif internal.DepthLoggerV2Impl != nil {\n\t\tinternal.DepthLoggerV2Impl.InfoDepth(depth, args...)\n\t} else {\n\t\tinternal.LoggerV2Impl.Infoln(args...)\n\t}\n}\n\n// WarningDepth logs to the WARNING log at the specified depth.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WarningDepth(depth int, args ...any) {\n\tif internal.DepthLoggerV2Impl != nil {\n\t\tinternal.DepthLoggerV2Impl.WarningDepth(depth, args...)\n\t} else {\n\t\tinternal.LoggerV2Impl.Warningln(args...)\n\t}\n}\n\n// ErrorDepth logs to the ERROR log at the specified depth.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc ErrorDepth(depth int, args ...any) {\n\tif internal.DepthLoggerV2Impl != nil {\n\t\tinternal.DepthLoggerV2Impl.ErrorDepth(depth, args...)\n\t} else {\n\t\tinternal.LoggerV2Impl.Errorln(args...)\n\t}\n}\n\n// FatalDepth logs to the FATAL log at the specified depth.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc FatalDepth(depth int, args ...any) {\n\tif internal.DepthLoggerV2Impl != nil {\n\t\tinternal.DepthLoggerV2Impl.FatalDepth(depth, args...)\n\t} else {\n\t\tinternal.LoggerV2Impl.Fatalln(args...)\n\t}\n\tos.Exit(1)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/internal/grpclog.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package internal contains functionality internal to the grpclog package.\npackage internal\n\n// LoggerV2Impl is the logger used for the non-depth log functions.\nvar LoggerV2Impl LoggerV2\n\n// DepthLoggerV2Impl is the logger used for the depth log functions.\nvar DepthLoggerV2Impl DepthLoggerV2\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/internal/logger.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage internal\n\n// Logger mimics golang's standard Logger as an interface.\n//\n// Deprecated: use LoggerV2.\ntype Logger interface {\n\tFatal(args ...any)\n\tFatalf(format string, args ...any)\n\tFatalln(args ...any)\n\tPrint(args ...any)\n\tPrintf(format string, args ...any)\n\tPrintln(args ...any)\n}\n\n// LoggerWrapper wraps Logger into a LoggerV2.\ntype LoggerWrapper struct {\n\tLogger\n}\n\n// Info logs to INFO log. Arguments are handled in the manner of fmt.Print.\nfunc (l *LoggerWrapper) Info(args ...any) {\n\tl.Logger.Print(args...)\n}\n\n// Infoln logs to INFO log. Arguments are handled in the manner of fmt.Println.\nfunc (l *LoggerWrapper) Infoln(args ...any) {\n\tl.Logger.Println(args...)\n}\n\n// Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf.\nfunc (l *LoggerWrapper) Infof(format string, args ...any) {\n\tl.Logger.Printf(format, args...)\n}\n\n// Warning logs to WARNING log. Arguments are handled in the manner of fmt.Print.\nfunc (l *LoggerWrapper) Warning(args ...any) {\n\tl.Logger.Print(args...)\n}\n\n// Warningln logs to WARNING log. Arguments are handled in the manner of fmt.Println.\nfunc (l *LoggerWrapper) Warningln(args ...any) {\n\tl.Logger.Println(args...)\n}\n\n// Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf.\nfunc (l *LoggerWrapper) Warningf(format string, args ...any) {\n\tl.Logger.Printf(format, args...)\n}\n\n// Error logs to ERROR log. Arguments are handled in the manner of fmt.Print.\nfunc (l *LoggerWrapper) Error(args ...any) {\n\tl.Logger.Print(args...)\n}\n\n// Errorln logs to ERROR log. Arguments are handled in the manner of fmt.Println.\nfunc (l *LoggerWrapper) Errorln(args ...any) {\n\tl.Logger.Println(args...)\n}\n\n// Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.\nfunc (l *LoggerWrapper) Errorf(format string, args ...any) {\n\tl.Logger.Printf(format, args...)\n}\n\n// V reports whether verbosity level l is at least the requested verbose level.\nfunc (*LoggerWrapper) V(int) bool {\n\t// Returns true for all verbose level.\n\treturn true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/internal/loggerv2.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage internal\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n)\n\n// LoggerV2 does underlying logging work for grpclog.\ntype LoggerV2 interface {\n\t// Info logs to INFO log. Arguments are handled in the manner of fmt.Print.\n\tInfo(args ...any)\n\t// Infoln logs to INFO log. Arguments are handled in the manner of fmt.Println.\n\tInfoln(args ...any)\n\t// Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf.\n\tInfof(format string, args ...any)\n\t// Warning logs to WARNING log. Arguments are handled in the manner of fmt.Print.\n\tWarning(args ...any)\n\t// Warningln logs to WARNING log. Arguments are handled in the manner of fmt.Println.\n\tWarningln(args ...any)\n\t// Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf.\n\tWarningf(format string, args ...any)\n\t// Error logs to ERROR log. Arguments are handled in the manner of fmt.Print.\n\tError(args ...any)\n\t// Errorln logs to ERROR log. Arguments are handled in the manner of fmt.Println.\n\tErrorln(args ...any)\n\t// Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.\n\tErrorf(format string, args ...any)\n\t// Fatal logs to ERROR log. Arguments are handled in the manner of fmt.Print.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatal(args ...any)\n\t// Fatalln logs to ERROR log. Arguments are handled in the manner of fmt.Println.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatalln(args ...any)\n\t// Fatalf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatalf(format string, args ...any)\n\t// V reports whether verbosity level l is at least the requested verbose level.\n\tV(l int) bool\n}\n\n// DepthLoggerV2 logs at a specified call frame. If a LoggerV2 also implements\n// DepthLoggerV2, the below functions will be called with the appropriate stack\n// depth set for trivial functions the logger may ignore.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype DepthLoggerV2 interface {\n\tLoggerV2\n\t// InfoDepth logs to INFO log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tInfoDepth(depth int, args ...any)\n\t// WarningDepth logs to WARNING log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tWarningDepth(depth int, args ...any)\n\t// ErrorDepth logs to ERROR log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tErrorDepth(depth int, args ...any)\n\t// FatalDepth logs to FATAL log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tFatalDepth(depth int, args ...any)\n}\n\nconst (\n\t// infoLog indicates Info severity.\n\tinfoLog int = iota\n\t// warningLog indicates Warning severity.\n\twarningLog\n\t// errorLog indicates Error severity.\n\terrorLog\n\t// fatalLog indicates Fatal severity.\n\tfatalLog\n)\n\n// severityName contains the string representation of each severity.\nvar severityName = []string{\n\tinfoLog:    \"INFO\",\n\twarningLog: \"WARNING\",\n\terrorLog:   \"ERROR\",\n\tfatalLog:   \"FATAL\",\n}\n\n// sprintf is fmt.Sprintf.\n// These vars exist to make it possible to test that expensive format calls aren't made unnecessarily.\nvar sprintf = fmt.Sprintf\n\n// sprint is fmt.Sprint.\n// These vars exist to make it possible to test that expensive format calls aren't made unnecessarily.\nvar sprint = fmt.Sprint\n\n// sprintln is fmt.Sprintln.\n// These vars exist to make it possible to test that expensive format calls aren't made unnecessarily.\nvar sprintln = fmt.Sprintln\n\n// exit is os.Exit.\n// This var exists to make it possible to test functions calling os.Exit.\nvar exit = os.Exit\n\n// loggerT is the default logger used by grpclog.\ntype loggerT struct {\n\tm          []*log.Logger\n\tv          int\n\tjsonFormat bool\n}\n\nfunc (g *loggerT) output(severity int, s string) {\n\tsevStr := severityName[severity]\n\tif !g.jsonFormat {\n\t\tg.m[severity].Output(2, sevStr+\": \"+s)\n\t\treturn\n\t}\n\t// TODO: we can also include the logging component, but that needs more\n\t// (API) changes.\n\tb, _ := json.Marshal(map[string]string{\n\t\t\"severity\": sevStr,\n\t\t\"message\":  s,\n\t})\n\tg.m[severity].Output(2, string(b))\n}\n\nfunc (g *loggerT) printf(severity int, format string, args ...any) {\n\t// Note the discard check is duplicated in each print func, rather than in\n\t// output, to avoid the expensive Sprint calls.\n\t// De-duplicating this by moving to output would be a significant performance regression!\n\tif lg := g.m[severity]; lg.Writer() == io.Discard {\n\t\treturn\n\t}\n\tg.output(severity, sprintf(format, args...))\n}\n\nfunc (g *loggerT) print(severity int, v ...any) {\n\tif lg := g.m[severity]; lg.Writer() == io.Discard {\n\t\treturn\n\t}\n\tg.output(severity, sprint(v...))\n}\n\nfunc (g *loggerT) println(severity int, v ...any) {\n\tif lg := g.m[severity]; lg.Writer() == io.Discard {\n\t\treturn\n\t}\n\tg.output(severity, sprintln(v...))\n}\n\nfunc (g *loggerT) Info(args ...any) {\n\tg.print(infoLog, args...)\n}\n\nfunc (g *loggerT) Infoln(args ...any) {\n\tg.println(infoLog, args...)\n}\n\nfunc (g *loggerT) Infof(format string, args ...any) {\n\tg.printf(infoLog, format, args...)\n}\n\nfunc (g *loggerT) Warning(args ...any) {\n\tg.print(warningLog, args...)\n}\n\nfunc (g *loggerT) Warningln(args ...any) {\n\tg.println(warningLog, args...)\n}\n\nfunc (g *loggerT) Warningf(format string, args ...any) {\n\tg.printf(warningLog, format, args...)\n}\n\nfunc (g *loggerT) Error(args ...any) {\n\tg.print(errorLog, args...)\n}\n\nfunc (g *loggerT) Errorln(args ...any) {\n\tg.println(errorLog, args...)\n}\n\nfunc (g *loggerT) Errorf(format string, args ...any) {\n\tg.printf(errorLog, format, args...)\n}\n\nfunc (g *loggerT) Fatal(args ...any) {\n\tg.print(fatalLog, args...)\n\texit(1)\n}\n\nfunc (g *loggerT) Fatalln(args ...any) {\n\tg.println(fatalLog, args...)\n\texit(1)\n}\n\nfunc (g *loggerT) Fatalf(format string, args ...any) {\n\tg.printf(fatalLog, format, args...)\n\texit(1)\n}\n\nfunc (g *loggerT) V(l int) bool {\n\treturn l <= g.v\n}\n\n// LoggerV2Config configures the LoggerV2 implementation.\ntype LoggerV2Config struct {\n\t// Verbosity sets the verbosity level of the logger.\n\tVerbosity int\n\t// FormatJSON controls whether the logger should output logs in JSON format.\n\tFormatJSON bool\n}\n\n// combineLoggers returns a combined logger for both higher & lower severity logs,\n// or only one if the other is io.Discard.\n//\n// This uses io.Discard instead of io.MultiWriter when all loggers\n// are set to io.Discard. Both this package and the standard log package have\n// significant optimizations for io.Discard, which io.MultiWriter lacks (as of\n// this writing).\nfunc combineLoggers(lower, higher io.Writer) io.Writer {\n\tif lower == io.Discard {\n\t\treturn higher\n\t}\n\tif higher == io.Discard {\n\t\treturn lower\n\t}\n\treturn io.MultiWriter(lower, higher)\n}\n\n// NewLoggerV2 creates a new LoggerV2 instance with the provided configuration.\n// The infoW, warningW, and errorW writers are used to write log messages of\n// different severity levels.\nfunc NewLoggerV2(infoW, warningW, errorW io.Writer, c LoggerV2Config) LoggerV2 {\n\tflag := log.LstdFlags\n\tif c.FormatJSON {\n\t\tflag = 0\n\t}\n\n\twarningW = combineLoggers(infoW, warningW)\n\terrorW = combineLoggers(errorW, warningW)\n\n\tfatalW := errorW\n\n\tm := []*log.Logger{\n\t\tlog.New(infoW, \"\", flag),\n\t\tlog.New(warningW, \"\", flag),\n\t\tlog.New(errorW, \"\", flag),\n\t\tlog.New(fatalW, \"\", flag),\n\t}\n\treturn &loggerT{m: m, v: c.Verbosity, jsonFormat: c.FormatJSON}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/logger.go",
    "content": "/*\n *\n * Copyright 2015 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpclog\n\nimport \"google.golang.org/grpc/grpclog/internal\"\n\n// Logger mimics golang's standard Logger as an interface.\n//\n// Deprecated: use LoggerV2.\ntype Logger internal.Logger\n\n// SetLogger sets the logger that is used in grpc. Call only from\n// init() functions.\n//\n// Deprecated: use SetLoggerV2.\nfunc SetLogger(l Logger) {\n\tinternal.LoggerV2Impl = &internal.LoggerWrapper{Logger: l}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/loggerv2.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpclog\n\nimport (\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/grpc/grpclog/internal\"\n)\n\n// LoggerV2 does underlying logging work for grpclog.\ntype LoggerV2 internal.LoggerV2\n\n// SetLoggerV2 sets logger that is used in grpc to a V2 logger.\n// Not mutex-protected, should be called before any gRPC functions.\nfunc SetLoggerV2(l LoggerV2) {\n\tif _, ok := l.(*componentData); ok {\n\t\tpanic(\"cannot use component logger as grpclog logger\")\n\t}\n\tinternal.LoggerV2Impl = l\n\tinternal.DepthLoggerV2Impl, _ = l.(internal.DepthLoggerV2)\n}\n\n// NewLoggerV2 creates a loggerV2 with the provided writers.\n// Fatal logs will be written to errorW, warningW, infoW, followed by exit(1).\n// Error logs will be written to errorW, warningW and infoW.\n// Warning logs will be written to warningW and infoW.\n// Info logs will be written to infoW.\nfunc NewLoggerV2(infoW, warningW, errorW io.Writer) LoggerV2 {\n\treturn internal.NewLoggerV2(infoW, warningW, errorW, internal.LoggerV2Config{})\n}\n\n// NewLoggerV2WithVerbosity creates a loggerV2 with the provided writers and\n// verbosity level.\nfunc NewLoggerV2WithVerbosity(infoW, warningW, errorW io.Writer, v int) LoggerV2 {\n\treturn internal.NewLoggerV2(infoW, warningW, errorW, internal.LoggerV2Config{Verbosity: v})\n}\n\n// newLoggerV2 creates a loggerV2 to be used as default logger.\n// All logs are written to stderr.\nfunc newLoggerV2() LoggerV2 {\n\terrorW := io.Discard\n\twarningW := io.Discard\n\tinfoW := io.Discard\n\n\tlogLevel := os.Getenv(\"GRPC_GO_LOG_SEVERITY_LEVEL\")\n\tswitch logLevel {\n\tcase \"\", \"ERROR\", \"error\": // If env is unset, set level to ERROR.\n\t\terrorW = os.Stderr\n\tcase \"WARNING\", \"warning\":\n\t\twarningW = os.Stderr\n\tcase \"INFO\", \"info\":\n\t\tinfoW = os.Stderr\n\t}\n\n\tvar v int\n\tvLevel := os.Getenv(\"GRPC_GO_LOG_VERBOSITY_LEVEL\")\n\tif vl, err := strconv.Atoi(vLevel); err == nil {\n\t\tv = vl\n\t}\n\n\tjsonFormat := strings.EqualFold(os.Getenv(\"GRPC_GO_LOG_FORMATTER\"), \"json\")\n\n\treturn internal.NewLoggerV2(infoW, warningW, errorW, internal.LoggerV2Config{\n\t\tVerbosity:  v,\n\t\tFormatJSON: jsonFormat,\n\t})\n}\n\n// DepthLoggerV2 logs at a specified call frame. If a LoggerV2 also implements\n// DepthLoggerV2, the below functions will be called with the appropriate stack\n// depth set for trivial functions the logger may ignore.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype DepthLoggerV2 internal.DepthLoggerV2\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/interceptor.go",
    "content": "/*\n *\n * Copyright 2016 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n)\n\n// UnaryInvoker is called by UnaryClientInterceptor to complete RPCs.\ntype UnaryInvoker func(ctx context.Context, method string, req, reply any, cc *ClientConn, opts ...CallOption) error\n\n// UnaryClientInterceptor intercepts the execution of a unary RPC on the client.\n// Unary interceptors can be specified as a DialOption, using\n// WithUnaryInterceptor() or WithChainUnaryInterceptor(), when creating a\n// ClientConn. When a unary interceptor(s) is set on a ClientConn, gRPC\n// delegates all unary RPC invocations to the interceptor, and it is the\n// responsibility of the interceptor to call invoker to complete the processing\n// of the RPC.\n//\n// method is the RPC name. req and reply are the corresponding request and\n// response messages. cc is the ClientConn on which the RPC was invoked. invoker\n// is the handler to complete the RPC and it is the responsibility of the\n// interceptor to call it. opts contain all applicable call options, including\n// defaults from the ClientConn as well as per-call options.\n//\n// The returned error must be compatible with the status package.\ntype UnaryClientInterceptor func(ctx context.Context, method string, req, reply any, cc *ClientConn, invoker UnaryInvoker, opts ...CallOption) error\n\n// Streamer is called by StreamClientInterceptor to create a ClientStream.\ntype Streamer func(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (ClientStream, error)\n\n// StreamClientInterceptor intercepts the creation of a ClientStream. Stream\n// interceptors can be specified as a DialOption, using WithStreamInterceptor()\n// or WithChainStreamInterceptor(), when creating a ClientConn. When a stream\n// interceptor(s) is set on the ClientConn, gRPC delegates all stream creations\n// to the interceptor, and it is the responsibility of the interceptor to call\n// streamer.\n//\n// desc contains a description of the stream. cc is the ClientConn on which the\n// RPC was invoked. streamer is the handler to create a ClientStream and it is\n// the responsibility of the interceptor to call it. opts contain all applicable\n// call options, including defaults from the ClientConn as well as per-call\n// options.\n//\n// StreamClientInterceptor may return a custom ClientStream to intercept all I/O\n// operations. The returned error must be compatible with the status package.\ntype StreamClientInterceptor func(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, streamer Streamer, opts ...CallOption) (ClientStream, error)\n\n// UnaryServerInfo consists of various information about a unary RPC on\n// server side. All per-rpc information may be mutated by the interceptor.\ntype UnaryServerInfo struct {\n\t// Server is the service implementation the user provides. This is read-only.\n\tServer any\n\t// FullMethod is the full RPC method string, i.e., /package.service/method.\n\tFullMethod string\n}\n\n// UnaryHandler defines the handler invoked by UnaryServerInterceptor to complete the normal\n// execution of a unary RPC.\n//\n// If a UnaryHandler returns an error, it should either be produced by the\n// status package, or be one of the context errors. Otherwise, gRPC will use\n// codes.Unknown as the status code and err.Error() as the status message of the\n// RPC.\ntype UnaryHandler func(ctx context.Context, req any) (any, error)\n\n// UnaryServerInterceptor provides a hook to intercept the execution of a unary RPC on the server. info\n// contains all the information of this RPC the interceptor can operate on. And handler is the wrapper\n// of the service method implementation. It is the responsibility of the interceptor to invoke handler\n// to complete the RPC.\ntype UnaryServerInterceptor func(ctx context.Context, req any, info *UnaryServerInfo, handler UnaryHandler) (resp any, err error)\n\n// StreamServerInfo consists of various information about a streaming RPC on\n// server side. All per-rpc information may be mutated by the interceptor.\ntype StreamServerInfo struct {\n\t// FullMethod is the full RPC method string, i.e., /package.service/method.\n\tFullMethod string\n\t// IsClientStream indicates whether the RPC is a client streaming RPC.\n\tIsClientStream bool\n\t// IsServerStream indicates whether the RPC is a server streaming RPC.\n\tIsServerStream bool\n}\n\n// StreamServerInterceptor provides a hook to intercept the execution of a\n// streaming RPC on the server.\n//\n// srv is the service implementation on which the RPC was invoked, and needs to\n// be passed to handler, and not used otherwise. ss is the server side of the\n// stream. info contains all the information of this RPC the interceptor can\n// operate on. And handler is the service method implementation. It is the\n// responsibility of the interceptor to invoke handler to complete the RPC.\ntype StreamServerInterceptor func(srv any, ss ServerStream, info *StreamServerInfo, handler StreamHandler) error\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/backoff/backoff.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package backoff implement the backoff strategy for gRPC.\n//\n// This is kept in internal until the gRPC project decides whether or not to\n// allow alternative backoff strategies.\npackage backoff\n\nimport (\n\t\"context\"\n\t\"errors\"\n\trand \"math/rand/v2\"\n\t\"time\"\n\n\tgrpcbackoff \"google.golang.org/grpc/backoff\"\n)\n\n// Strategy defines the methodology for backing off after a grpc connection\n// failure.\ntype Strategy interface {\n\t// Backoff returns the amount of time to wait before the next retry given\n\t// the number of consecutive failures.\n\tBackoff(retries int) time.Duration\n}\n\n// DefaultExponential is an exponential backoff implementation using the\n// default values for all the configurable knobs defined in\n// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.\nvar DefaultExponential = Exponential{Config: grpcbackoff.DefaultConfig}\n\n// Exponential implements exponential backoff algorithm as defined in\n// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.\ntype Exponential struct {\n\t// Config contains all options to configure the backoff algorithm.\n\tConfig grpcbackoff.Config\n}\n\n// Backoff returns the amount of time to wait before the next retry given the\n// number of retries.\nfunc (bc Exponential) Backoff(retries int) time.Duration {\n\tif retries == 0 {\n\t\treturn bc.Config.BaseDelay\n\t}\n\tbackoff, max := float64(bc.Config.BaseDelay), float64(bc.Config.MaxDelay)\n\tfor backoff < max && retries > 0 {\n\t\tbackoff *= bc.Config.Multiplier\n\t\tretries--\n\t}\n\tif backoff > max {\n\t\tbackoff = max\n\t}\n\t// Randomize backoff delays so that if a cluster of requests start at\n\t// the same time, they won't operate in lockstep.\n\tbackoff *= 1 + bc.Config.Jitter*(rand.Float64()*2-1)\n\tif backoff < 0 {\n\t\treturn 0\n\t}\n\treturn time.Duration(backoff)\n}\n\n// ErrResetBackoff is the error to be returned by the function executed by RunF,\n// to instruct the latter to reset its backoff state.\nvar ErrResetBackoff = errors.New(\"reset backoff state\")\n\n// RunF provides a convenient way to run a function f repeatedly until the\n// context expires or f returns a non-nil error that is not ErrResetBackoff.\n// When f returns ErrResetBackoff, RunF continues to run f, but resets its\n// backoff state before doing so. backoff accepts an integer representing the\n// number of retries, and returns the amount of time to backoff.\nfunc RunF(ctx context.Context, f func() error, backoff func(int) time.Duration) {\n\tattempt := 0\n\ttimer := time.NewTimer(0)\n\tfor ctx.Err() == nil {\n\t\tselect {\n\t\tcase <-timer.C:\n\t\tcase <-ctx.Done():\n\t\t\ttimer.Stop()\n\t\t\treturn\n\t\t}\n\n\t\terr := f()\n\t\tif errors.Is(err, ErrResetBackoff) {\n\t\t\ttimer.Reset(0)\n\t\t\tattempt = 0\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\ttimer.Reset(backoff(attempt))\n\t\tattempt++\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/config.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage gracefulswitch\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\ntype lbConfig struct {\n\tserviceconfig.LoadBalancingConfig\n\n\tchildBuilder balancer.Builder\n\tchildConfig  serviceconfig.LoadBalancingConfig\n}\n\n// ChildName returns the name of the child balancer of the gracefulswitch\n// Balancer.\nfunc ChildName(l serviceconfig.LoadBalancingConfig) string {\n\treturn l.(*lbConfig).childBuilder.Name()\n}\n\n// ParseConfig parses a child config list and returns a LB config for the\n// gracefulswitch Balancer.\n//\n// cfg is expected to be a json.RawMessage containing a JSON array of LB policy\n// names + configs as the format of the \"loadBalancingConfig\" field in\n// ServiceConfig.  It returns a type that should be passed to\n// UpdateClientConnState in the BalancerConfig field.\nfunc ParseConfig(cfg json.RawMessage) (serviceconfig.LoadBalancingConfig, error) {\n\tvar lbCfg []map[string]json.RawMessage\n\tif err := json.Unmarshal(cfg, &lbCfg); err != nil {\n\t\treturn nil, err\n\t}\n\tfor i, e := range lbCfg {\n\t\tif len(e) != 1 {\n\t\t\treturn nil, fmt.Errorf(\"expected a JSON struct with one entry; received entry %v at index %d\", e, i)\n\t\t}\n\n\t\tvar name string\n\t\tvar jsonCfg json.RawMessage\n\t\tfor name, jsonCfg = range e {\n\t\t}\n\n\t\tbuilder := balancer.Get(name)\n\t\tif builder == nil {\n\t\t\t// Skip unregistered balancer names.\n\t\t\tcontinue\n\t\t}\n\n\t\tparser, ok := builder.(balancer.ConfigParser)\n\t\tif !ok {\n\t\t\t// This is a valid child with no config.\n\t\t\treturn &lbConfig{childBuilder: builder}, nil\n\t\t}\n\n\t\tcfg, err := parser.ParseConfig(jsonCfg)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error parsing config for policy %q: %v\", name, err)\n\t\t}\n\t\treturn &lbConfig{childBuilder: builder, childConfig: cfg}, nil\n\t}\n\n\treturn nil, fmt.Errorf(\"no supported policies found in config: %v\", string(cfg))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go",
    "content": "/*\n *\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package gracefulswitch implements a graceful switch load balancer.\npackage gracefulswitch\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/balancer/base\"\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\nvar errBalancerClosed = errors.New(\"gracefulSwitchBalancer is closed\")\nvar _ balancer.Balancer = (*Balancer)(nil)\n\n// NewBalancer returns a graceful switch Balancer.\nfunc NewBalancer(cc balancer.ClientConn, opts balancer.BuildOptions) *Balancer {\n\treturn &Balancer{\n\t\tcc:    cc,\n\t\tbOpts: opts,\n\t}\n}\n\n// Balancer is a utility to gracefully switch from one balancer to\n// a new balancer. It implements the balancer.Balancer interface.\ntype Balancer struct {\n\tbOpts balancer.BuildOptions\n\tcc    balancer.ClientConn\n\n\t// mu protects the following fields and all fields within balancerCurrent\n\t// and balancerPending. mu does not need to be held when calling into the\n\t// child balancers, as all calls into these children happen only as a direct\n\t// result of a call into the gracefulSwitchBalancer, which are also\n\t// guaranteed to be synchronous. There is one exception: an UpdateState call\n\t// from a child balancer when current and pending are populated can lead to\n\t// calling Close() on the current. To prevent that racing with an\n\t// UpdateSubConnState from the channel, we hold currentMu during Close and\n\t// UpdateSubConnState calls.\n\tmu              sync.Mutex\n\tbalancerCurrent *balancerWrapper\n\tbalancerPending *balancerWrapper\n\tclosed          bool // set to true when this balancer is closed\n\n\t// currentMu must be locked before mu. This mutex guards against this\n\t// sequence of events: UpdateSubConnState() called, finds the\n\t// balancerCurrent, gives up lock, updateState comes in, causes Close() on\n\t// balancerCurrent before the UpdateSubConnState is called on the\n\t// balancerCurrent.\n\tcurrentMu sync.Mutex\n\n\t// activeGoroutines tracks all the goroutines that this balancer has started\n\t// and that should be waited on when the balancer closes.\n\tactiveGoroutines sync.WaitGroup\n}\n\n// swap swaps out the current lb with the pending lb and updates the ClientConn.\n// The caller must hold gsb.mu.\nfunc (gsb *Balancer) swap() {\n\tgsb.cc.UpdateState(gsb.balancerPending.lastState)\n\tcur := gsb.balancerCurrent\n\tgsb.balancerCurrent = gsb.balancerPending\n\tgsb.balancerPending = nil\n\tgsb.activeGoroutines.Add(1)\n\tgo func() {\n\t\tdefer gsb.activeGoroutines.Done()\n\t\tgsb.currentMu.Lock()\n\t\tdefer gsb.currentMu.Unlock()\n\t\tcur.Close()\n\t}()\n}\n\n// Helper function that checks if the balancer passed in is current or pending.\n// The caller must hold gsb.mu.\nfunc (gsb *Balancer) balancerCurrentOrPending(bw *balancerWrapper) bool {\n\treturn bw == gsb.balancerCurrent || bw == gsb.balancerPending\n}\n\n// SwitchTo initializes the graceful switch process, which completes based on\n// connectivity state changes on the current/pending balancer. Thus, the switch\n// process is not complete when this method returns. This method must be called\n// synchronously alongside the rest of the balancer.Balancer methods this\n// Graceful Switch Balancer implements.\n//\n// Deprecated: use ParseConfig and pass a parsed config to UpdateClientConnState\n// to cause the Balancer to automatically change to the new child when necessary.\nfunc (gsb *Balancer) SwitchTo(builder balancer.Builder) error {\n\t_, err := gsb.switchTo(builder)\n\treturn err\n}\n\nfunc (gsb *Balancer) switchTo(builder balancer.Builder) (*balancerWrapper, error) {\n\tgsb.mu.Lock()\n\tif gsb.closed {\n\t\tgsb.mu.Unlock()\n\t\treturn nil, errBalancerClosed\n\t}\n\tbw := &balancerWrapper{\n\t\tClientConn: gsb.cc,\n\t\tbuilder:    builder,\n\t\tgsb:        gsb,\n\t\tlastState: balancer.State{\n\t\t\tConnectivityState: connectivity.Connecting,\n\t\t\tPicker:            base.NewErrPicker(balancer.ErrNoSubConnAvailable),\n\t\t},\n\t\tsubconns: make(map[balancer.SubConn]bool),\n\t}\n\tbalToClose := gsb.balancerPending // nil if there is no pending balancer\n\tif gsb.balancerCurrent == nil {\n\t\tgsb.balancerCurrent = bw\n\t} else {\n\t\tgsb.balancerPending = bw\n\t}\n\tgsb.mu.Unlock()\n\tbalToClose.Close()\n\t// This function takes a builder instead of a balancer because builder.Build\n\t// can call back inline, and this utility needs to handle the callbacks.\n\tnewBalancer := builder.Build(bw, gsb.bOpts)\n\tif newBalancer == nil {\n\t\t// This is illegal and should never happen; we clear the balancerWrapper\n\t\t// we were constructing if it happens to avoid a potential panic.\n\t\tgsb.mu.Lock()\n\t\tif gsb.balancerPending != nil {\n\t\t\tgsb.balancerPending = nil\n\t\t} else {\n\t\t\tgsb.balancerCurrent = nil\n\t\t}\n\t\tgsb.mu.Unlock()\n\t\treturn nil, balancer.ErrBadResolverState\n\t}\n\n\t// This write doesn't need to take gsb.mu because this field never gets read\n\t// or written to on any calls from the current or pending. Calls from grpc\n\t// to this balancer are guaranteed to be called synchronously, so this\n\t// bw.Balancer field will never be forwarded to until this SwitchTo()\n\t// function returns.\n\tbw.Balancer = newBalancer\n\treturn bw, nil\n}\n\n// Returns nil if the graceful switch balancer is closed.\nfunc (gsb *Balancer) latestBalancer() *balancerWrapper {\n\tgsb.mu.Lock()\n\tdefer gsb.mu.Unlock()\n\tif gsb.balancerPending != nil {\n\t\treturn gsb.balancerPending\n\t}\n\treturn gsb.balancerCurrent\n}\n\n// UpdateClientConnState forwards the update to the latest balancer created.\n//\n// If the state's BalancerConfig is the config returned by a call to\n// gracefulswitch.ParseConfig, then this function will automatically SwitchTo\n// the balancer indicated by the config before forwarding its config to it, if\n// necessary.\nfunc (gsb *Balancer) UpdateClientConnState(state balancer.ClientConnState) error {\n\t// The resolver data is only relevant to the most recent LB Policy.\n\tbalToUpdate := gsb.latestBalancer()\n\tgsbCfg, ok := state.BalancerConfig.(*lbConfig)\n\tif ok {\n\t\t// Switch to the child in the config unless it is already active.\n\t\tif balToUpdate == nil || gsbCfg.childBuilder.Name() != balToUpdate.builder.Name() {\n\t\t\tvar err error\n\t\t\tbalToUpdate, err = gsb.switchTo(gsbCfg.childBuilder)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"could not switch to new child balancer: %w\", err)\n\t\t\t}\n\t\t}\n\t\t// Unwrap the child balancer's config.\n\t\tstate.BalancerConfig = gsbCfg.childConfig\n\t}\n\n\tif balToUpdate == nil {\n\t\treturn errBalancerClosed\n\t}\n\n\t// Perform this call without gsb.mu to prevent deadlocks if the child calls\n\t// back into the channel. The latest balancer can never be closed during a\n\t// call from the channel, even without gsb.mu held.\n\treturn balToUpdate.UpdateClientConnState(state)\n}\n\n// ResolverError forwards the error to the latest balancer created.\nfunc (gsb *Balancer) ResolverError(err error) {\n\t// The resolver data is only relevant to the most recent LB Policy.\n\tbalToUpdate := gsb.latestBalancer()\n\tif balToUpdate == nil {\n\t\tgsb.cc.UpdateState(balancer.State{\n\t\t\tConnectivityState: connectivity.TransientFailure,\n\t\t\tPicker:            base.NewErrPicker(err),\n\t\t})\n\t\treturn\n\t}\n\t// Perform this call without gsb.mu to prevent deadlocks if the child calls\n\t// back into the channel. The latest balancer can never be closed during a\n\t// call from the channel, even without gsb.mu held.\n\tbalToUpdate.ResolverError(err)\n}\n\n// ExitIdle forwards the call to the latest balancer created.\n//\n// If the latest balancer does not support ExitIdle, the subConns are\n// re-connected to manually.\nfunc (gsb *Balancer) ExitIdle() {\n\tbalToUpdate := gsb.latestBalancer()\n\tif balToUpdate == nil {\n\t\treturn\n\t}\n\t// There is no need to protect this read with a mutex, as the write to the\n\t// Balancer field happens in SwitchTo, which completes before this can be\n\t// called.\n\tbalToUpdate.ExitIdle()\n}\n\n// updateSubConnState forwards the update to the appropriate child.\nfunc (gsb *Balancer) updateSubConnState(sc balancer.SubConn, state balancer.SubConnState, cb func(balancer.SubConnState)) {\n\tgsb.currentMu.Lock()\n\tdefer gsb.currentMu.Unlock()\n\tgsb.mu.Lock()\n\t// Forward update to the appropriate child.  Even if there is a pending\n\t// balancer, the current balancer should continue to get SubConn updates to\n\t// maintain the proper state while the pending is still connecting.\n\tvar balToUpdate *balancerWrapper\n\tif gsb.balancerCurrent != nil && gsb.balancerCurrent.subconns[sc] {\n\t\tbalToUpdate = gsb.balancerCurrent\n\t} else if gsb.balancerPending != nil && gsb.balancerPending.subconns[sc] {\n\t\tbalToUpdate = gsb.balancerPending\n\t}\n\tif balToUpdate == nil {\n\t\t// SubConn belonged to a stale lb policy that has not yet fully closed,\n\t\t// or the balancer was already closed.\n\t\tgsb.mu.Unlock()\n\t\treturn\n\t}\n\tif state.ConnectivityState == connectivity.Shutdown {\n\t\tdelete(balToUpdate.subconns, sc)\n\t}\n\tgsb.mu.Unlock()\n\tif cb != nil {\n\t\tcb(state)\n\t} else {\n\t\tbalToUpdate.UpdateSubConnState(sc, state)\n\t}\n}\n\n// UpdateSubConnState forwards the update to the appropriate child.\nfunc (gsb *Balancer) UpdateSubConnState(sc balancer.SubConn, state balancer.SubConnState) {\n\tgsb.updateSubConnState(sc, state, nil)\n}\n\n// Close closes any active child balancers.\nfunc (gsb *Balancer) Close() {\n\tgsb.mu.Lock()\n\tgsb.closed = true\n\tcurrentBalancerToClose := gsb.balancerCurrent\n\tgsb.balancerCurrent = nil\n\tpendingBalancerToClose := gsb.balancerPending\n\tgsb.balancerPending = nil\n\tgsb.mu.Unlock()\n\n\tcurrentBalancerToClose.Close()\n\tpendingBalancerToClose.Close()\n\tgsb.activeGoroutines.Wait()\n}\n\n// balancerWrapper wraps a balancer.Balancer, and overrides some Balancer\n// methods to help cleanup SubConns created by the wrapped balancer.\n//\n// It implements the balancer.ClientConn interface and is passed down in that\n// capacity to the wrapped balancer. It maintains a set of subConns created by\n// the wrapped balancer and calls from the latter to create/update/shutdown\n// SubConns update this set before being forwarded to the parent ClientConn.\n// State updates from the wrapped balancer can result in invocation of the\n// graceful switch logic.\ntype balancerWrapper struct {\n\tbalancer.ClientConn\n\tbalancer.Balancer\n\tgsb     *Balancer\n\tbuilder balancer.Builder\n\n\tlastState balancer.State\n\tsubconns  map[balancer.SubConn]bool // subconns created by this balancer\n}\n\n// Close closes the underlying LB policy and shuts down the subconns it\n// created. bw must not be referenced via balancerCurrent or balancerPending in\n// gsb when called. gsb.mu must not be held.  Does not panic with a nil\n// receiver.\nfunc (bw *balancerWrapper) Close() {\n\t// before Close is called.\n\tif bw == nil {\n\t\treturn\n\t}\n\t// There is no need to protect this read with a mutex, as Close() is\n\t// impossible to be called concurrently with the write in SwitchTo(). The\n\t// callsites of Close() for this balancer in Graceful Switch Balancer will\n\t// never be called until SwitchTo() returns.\n\tbw.Balancer.Close()\n\tbw.gsb.mu.Lock()\n\tfor sc := range bw.subconns {\n\t\tsc.Shutdown()\n\t}\n\tbw.gsb.mu.Unlock()\n}\n\nfunc (bw *balancerWrapper) UpdateState(state balancer.State) {\n\t// Hold the mutex for this entire call to ensure it cannot occur\n\t// concurrently with other updateState() calls. This causes updates to\n\t// lastState and calls to cc.UpdateState to happen atomically.\n\tbw.gsb.mu.Lock()\n\tdefer bw.gsb.mu.Unlock()\n\tbw.lastState = state\n\n\t// If Close() acquires the mutex before UpdateState(), the balancer\n\t// will already have been removed from the current or pending state when\n\t// reaching this point.\n\tif !bw.gsb.balancerCurrentOrPending(bw) {\n\t\t// Returning here ensures that (*Balancer).swap() is not invoked after\n\t\t// (*Balancer).Close() and therefore prevents \"use after close\".\n\t\treturn\n\t}\n\n\tif bw == bw.gsb.balancerCurrent {\n\t\t// In the case that the current balancer exits READY, and there is a pending\n\t\t// balancer, you can forward the pending balancer's cached State up to\n\t\t// ClientConn and swap the pending into the current. This is because there\n\t\t// is no reason to gracefully switch from and keep using the old policy as\n\t\t// the ClientConn is not connected to any backends.\n\t\tif state.ConnectivityState != connectivity.Ready && bw.gsb.balancerPending != nil {\n\t\t\tbw.gsb.swap()\n\t\t\treturn\n\t\t}\n\t\t// Even if there is a pending balancer waiting to be gracefully switched to,\n\t\t// continue to forward current balancer updates to the Client Conn. Ignoring\n\t\t// state + picker from the current would cause undefined behavior/cause the\n\t\t// system to behave incorrectly from the current LB policies perspective.\n\t\t// Also, the current LB is still being used by grpc to choose SubConns per\n\t\t// RPC, and thus should use the most updated form of the current balancer.\n\t\tbw.gsb.cc.UpdateState(state)\n\t\treturn\n\t}\n\t// This method is now dealing with a state update from the pending balancer.\n\t// If the current balancer is currently in a state other than READY, the new\n\t// policy can be swapped into place immediately. This is because there is no\n\t// reason to gracefully switch from and keep using the old policy as the\n\t// ClientConn is not connected to any backends.\n\tif state.ConnectivityState != connectivity.Connecting || bw.gsb.balancerCurrent.lastState.ConnectivityState != connectivity.Ready {\n\t\tbw.gsb.swap()\n\t}\n}\n\nfunc (bw *balancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (balancer.SubConn, error) {\n\tbw.gsb.mu.Lock()\n\tif !bw.gsb.balancerCurrentOrPending(bw) {\n\t\tbw.gsb.mu.Unlock()\n\t\treturn nil, fmt.Errorf(\"%T at address %p that called NewSubConn is deleted\", bw, bw)\n\t}\n\tbw.gsb.mu.Unlock()\n\n\tvar sc balancer.SubConn\n\toldListener := opts.StateListener\n\topts.StateListener = func(state balancer.SubConnState) { bw.gsb.updateSubConnState(sc, state, oldListener) }\n\tsc, err := bw.gsb.cc.NewSubConn(addrs, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tbw.gsb.mu.Lock()\n\tif !bw.gsb.balancerCurrentOrPending(bw) { // balancer was closed during this call\n\t\tsc.Shutdown()\n\t\tbw.gsb.mu.Unlock()\n\t\treturn nil, fmt.Errorf(\"%T at address %p that called NewSubConn is deleted\", bw, bw)\n\t}\n\tbw.subconns[sc] = true\n\tbw.gsb.mu.Unlock()\n\treturn sc, nil\n}\n\nfunc (bw *balancerWrapper) ResolveNow(opts resolver.ResolveNowOptions) {\n\t// Ignore ResolveNow requests from anything other than the most recent\n\t// balancer, because older balancers were already removed from the config.\n\tif bw != bw.gsb.latestBalancer() {\n\t\treturn\n\t}\n\tbw.gsb.cc.ResolveNow(opts)\n}\n\nfunc (bw *balancerWrapper) RemoveSubConn(sc balancer.SubConn) {\n\t// Note: existing third party balancers may call this, so it must remain\n\t// until RemoveSubConn is fully removed.\n\tsc.Shutdown()\n}\n\nfunc (bw *balancerWrapper) UpdateAddresses(sc balancer.SubConn, addrs []resolver.Address) {\n\tbw.gsb.mu.Lock()\n\tif !bw.gsb.balancerCurrentOrPending(bw) {\n\t\tbw.gsb.mu.Unlock()\n\t\treturn\n\t}\n\tbw.gsb.mu.Unlock()\n\tbw.gsb.cc.UpdateAddresses(sc, addrs)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/balancer/weight/weight.go",
    "content": "/*\n *\n * Copyright 2025 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package weight contains utilities to manage endpoint weights. Weights are\n// used by LB policies such as ringhash to distribute load across multiple\n// endpoints.\npackage weight\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/resolver\"\n)\n\n// attributeKey is the type used as the key to store EndpointInfo in the\n// Attributes field of resolver.Endpoint.\ntype attributeKey struct{}\n\n// EndpointInfo will be stored in the Attributes field of Endpoints in order to\n// use the ringhash balancer.\ntype EndpointInfo struct {\n\tWeight uint32\n}\n\n// Equal allows the values to be compared by Attributes.Equal.\nfunc (a EndpointInfo) Equal(o any) bool {\n\toa, ok := o.(EndpointInfo)\n\treturn ok && oa.Weight == a.Weight\n}\n\n// Set returns a copy of endpoint in which the Attributes field is updated with\n// EndpointInfo.\nfunc Set(endpoint resolver.Endpoint, epInfo EndpointInfo) resolver.Endpoint {\n\tendpoint.Attributes = endpoint.Attributes.WithValue(attributeKey{}, epInfo)\n\treturn endpoint\n}\n\n// String returns a human-readable representation of EndpointInfo.\n// This method is intended for logging, testing, and debugging purposes only.\n// Do not rely on the output format, as it is not guaranteed to remain stable.\nfunc (a EndpointInfo) String() string {\n\treturn fmt.Sprintf(\"Weight: %d\", a.Weight)\n}\n\n// FromEndpoint returns the EndpointInfo stored in the Attributes field of an\n// endpoint. It returns an empty EndpointInfo if attribute is not found.\nfunc FromEndpoint(endpoint resolver.Endpoint) EndpointInfo {\n\tv := endpoint.Attributes.Value(attributeKey{})\n\tei, _ := v.(EndpointInfo)\n\treturn ei\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/balancerload/load.go",
    "content": "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Package balancerload defines APIs to parse server loads in trailers. The\n// parsed loads are sent to balancers in DoneInfo.\npackage balancerload\n\nimport (\n\t\"google.golang.org/grpc/metadata\"\n)\n\n// Parser converts loads from metadata into a concrete type.\ntype Parser interface {\n\t// Parse parses loads from metadata.\n\tParse(md metadata.MD) any\n}\n\nvar parser Parser\n\n// SetParser sets the load parser.\n//\n// Not mutex-protected, should be called before any gRPC functions.\nfunc SetParser(lr Parser) {\n\tparser = lr\n}\n\n// Parse calls parser.Read().\nfunc Parse(md metadata.MD) any {\n\tif parser == nil {\n\t\treturn nil\n\t}\n\treturn parser.Parse(md)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/binarylog/binarylog.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package binarylog implementation binary logging as defined in\n// https://github.com/grpc/proposal/blob/master/A16-binary-logging.md.\npackage binarylog\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n)\n\nvar grpclogLogger = grpclog.Component(\"binarylog\")\n\n// Logger specifies MethodLoggers for method names with a Log call that\n// takes a context.\n//\n// This is used in the 1.0 release of gcp/observability, and thus must not be\n// deleted or changed.\ntype Logger interface {\n\tGetMethodLogger(methodName string) MethodLogger\n}\n\n// binLogger is the global binary logger for the binary. One of this should be\n// built at init time from the configuration (environment variable or flags).\n//\n// It is used to get a MethodLogger for each individual method.\nvar binLogger Logger\n\n// SetLogger sets the binary logger.\n//\n// Only call this at init time.\nfunc SetLogger(l Logger) {\n\tbinLogger = l\n}\n\n// GetLogger gets the binary logger.\n//\n// Only call this at init time.\nfunc GetLogger() Logger {\n\treturn binLogger\n}\n\n// GetMethodLogger returns the MethodLogger for the given methodName.\n//\n// methodName should be in the format of \"/service/method\".\n//\n// Each MethodLogger returned by this method is a new instance. This is to\n// generate sequence id within the call.\nfunc GetMethodLogger(methodName string) MethodLogger {\n\tif binLogger == nil {\n\t\treturn nil\n\t}\n\treturn binLogger.GetMethodLogger(methodName)\n}\n\nfunc init() {\n\tconst envStr = \"GRPC_BINARY_LOG_FILTER\"\n\tconfigStr := os.Getenv(envStr)\n\tbinLogger = NewLoggerFromConfigString(configStr)\n}\n\n// MethodLoggerConfig contains the setting for logging behavior of a method\n// logger. Currently, it contains the max length of header and message.\ntype MethodLoggerConfig struct {\n\t// Max length of header and message.\n\tHeader, Message uint64\n}\n\n// LoggerConfig contains the config for loggers to create method loggers.\ntype LoggerConfig struct {\n\tAll      *MethodLoggerConfig\n\tServices map[string]*MethodLoggerConfig\n\tMethods  map[string]*MethodLoggerConfig\n\n\tBlacklist map[string]struct{}\n}\n\ntype logger struct {\n\tconfig LoggerConfig\n}\n\n// NewLoggerFromConfig builds a logger with the given LoggerConfig.\nfunc NewLoggerFromConfig(config LoggerConfig) Logger {\n\treturn &logger{config: config}\n}\n\n// newEmptyLogger creates an empty logger. The map fields need to be filled in\n// using the set* functions.\nfunc newEmptyLogger() *logger {\n\treturn &logger{}\n}\n\n// Set method logger for \"*\".\nfunc (l *logger) setDefaultMethodLogger(ml *MethodLoggerConfig) error {\n\tif l.config.All != nil {\n\t\treturn fmt.Errorf(\"conflicting global rules found\")\n\t}\n\tl.config.All = ml\n\treturn nil\n}\n\n// Set method logger for \"service/*\".\n//\n// New MethodLogger with same service overrides the old one.\nfunc (l *logger) setServiceMethodLogger(service string, ml *MethodLoggerConfig) error {\n\tif _, ok := l.config.Services[service]; ok {\n\t\treturn fmt.Errorf(\"conflicting service rules for service %v found\", service)\n\t}\n\tif l.config.Services == nil {\n\t\tl.config.Services = make(map[string]*MethodLoggerConfig)\n\t}\n\tl.config.Services[service] = ml\n\treturn nil\n}\n\n// Set method logger for \"service/method\".\n//\n// New MethodLogger with same method overrides the old one.\nfunc (l *logger) setMethodMethodLogger(method string, ml *MethodLoggerConfig) error {\n\tif _, ok := l.config.Blacklist[method]; ok {\n\t\treturn fmt.Errorf(\"conflicting blacklist rules for method %v found\", method)\n\t}\n\tif _, ok := l.config.Methods[method]; ok {\n\t\treturn fmt.Errorf(\"conflicting method rules for method %v found\", method)\n\t}\n\tif l.config.Methods == nil {\n\t\tl.config.Methods = make(map[string]*MethodLoggerConfig)\n\t}\n\tl.config.Methods[method] = ml\n\treturn nil\n}\n\n// Set blacklist method for \"-service/method\".\nfunc (l *logger) setBlacklist(method string) error {\n\tif _, ok := l.config.Blacklist[method]; ok {\n\t\treturn fmt.Errorf(\"conflicting blacklist rules for method %v found\", method)\n\t}\n\tif _, ok := l.config.Methods[method]; ok {\n\t\treturn fmt.Errorf(\"conflicting method rules for method %v found\", method)\n\t}\n\tif l.config.Blacklist == nil {\n\t\tl.config.Blacklist = make(map[string]struct{})\n\t}\n\tl.config.Blacklist[method] = struct{}{}\n\treturn nil\n}\n\n// getMethodLogger returns the MethodLogger for the given methodName.\n//\n// methodName should be in the format of \"/service/method\".\n//\n// Each MethodLogger returned by this method is a new instance. This is to\n// generate sequence id within the call.\nfunc (l *logger) GetMethodLogger(methodName string) MethodLogger {\n\ts, m, err := grpcutil.ParseMethod(methodName)\n\tif err != nil {\n\t\tgrpclogLogger.Infof(\"binarylogging: failed to parse %q: %v\", methodName, err)\n\t\treturn nil\n\t}\n\tif ml, ok := l.config.Methods[s+\"/\"+m]; ok {\n\t\treturn NewTruncatingMethodLogger(ml.Header, ml.Message)\n\t}\n\tif _, ok := l.config.Blacklist[s+\"/\"+m]; ok {\n\t\treturn nil\n\t}\n\tif ml, ok := l.config.Services[s]; ok {\n\t\treturn NewTruncatingMethodLogger(ml.Header, ml.Message)\n\t}\n\tif l.config.All == nil {\n\t\treturn nil\n\t}\n\treturn NewTruncatingMethodLogger(l.config.All.Header, l.config.All.Message)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/binarylog/binarylog_testutil.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// This file contains exported variables/functions that are exported for testing\n// only.\n//\n// An ideal way for this would be to put those in a *_test.go but in binarylog\n// package. But this doesn't work with staticcheck with go module. Error was:\n// \"MdToMetadataProto not declared by package binarylog\". This could be caused\n// by the way staticcheck looks for files for a certain package, which doesn't\n// support *_test.go files.\n//\n// Move those to binary_test.go when staticcheck is fixed.\n\npackage binarylog\n\nvar (\n\t// AllLogger is a logger that logs all headers/messages for all RPCs. It's\n\t// for testing only.\n\tAllLogger = NewLoggerFromConfigString(\"*\")\n\t// MdToMetadataProto converts metadata to a binary logging proto message.\n\t// It's for testing only.\n\tMdToMetadataProto = mdToMetadataProto\n\t// AddrToProto converts an address to a binary logging proto message. It's\n\t// for testing only.\n\tAddrToProto = addrToProto\n)\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/binarylog/env_config.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage binarylog\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// NewLoggerFromConfigString reads the string and build a logger. It can be used\n// to build a new logger and assign it to binarylog.Logger.\n//\n// Example filter config strings:\n//   - \"\" Nothing will be logged\n//   - \"*\" All headers and messages will be fully logged.\n//   - \"*{h}\" Only headers will be logged.\n//   - \"*{m:256}\" Only the first 256 bytes of each message will be logged.\n//   - \"Foo/*\" Logs every method in service Foo\n//   - \"Foo/*,-Foo/Bar\" Logs every method in service Foo except method /Foo/Bar\n//   - \"Foo/*,Foo/Bar{m:256}\" Logs the first 256 bytes of each message in method\n//     /Foo/Bar, logs all headers and messages in every other method in service\n//     Foo.\n//\n// If two configs exist for one certain method or service, the one specified\n// later overrides the previous config.\nfunc NewLoggerFromConfigString(s string) Logger {\n\tif s == \"\" {\n\t\treturn nil\n\t}\n\tl := newEmptyLogger()\n\tmethods := strings.Split(s, \",\")\n\tfor _, method := range methods {\n\t\tif err := l.fillMethodLoggerWithConfigString(method); err != nil {\n\t\t\tgrpclogLogger.Warningf(\"failed to parse binary log config: %v\", err)\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn l\n}\n\n// fillMethodLoggerWithConfigString parses config, creates TruncatingMethodLogger and adds\n// it to the right map in the logger.\nfunc (l *logger) fillMethodLoggerWithConfigString(config string) error {\n\t// \"\" is invalid.\n\tif config == \"\" {\n\t\treturn errors.New(\"empty string is not a valid method binary logging config\")\n\t}\n\n\t// \"-service/method\", blacklist, no * or {} allowed.\n\tif config[0] == '-' {\n\t\ts, m, suffix, err := parseMethodConfigAndSuffix(config[1:])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"invalid config: %q, %v\", config, err)\n\t\t}\n\t\tif m == \"*\" {\n\t\t\treturn fmt.Errorf(\"invalid config: %q, %v\", config, \"* not allowed in blacklist config\")\n\t\t}\n\t\tif suffix != \"\" {\n\t\t\treturn fmt.Errorf(\"invalid config: %q, %v\", config, \"header/message limit not allowed in blacklist config\")\n\t\t}\n\t\tif err := l.setBlacklist(s + \"/\" + m); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid config: %v\", err)\n\t\t}\n\t\treturn nil\n\t}\n\n\t// \"*{h:256;m:256}\"\n\tif config[0] == '*' {\n\t\thdr, msg, err := parseHeaderMessageLengthConfig(config[1:])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"invalid config: %q, %v\", config, err)\n\t\t}\n\t\tif err := l.setDefaultMethodLogger(&MethodLoggerConfig{Header: hdr, Message: msg}); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid config: %v\", err)\n\t\t}\n\t\treturn nil\n\t}\n\n\ts, m, suffix, err := parseMethodConfigAndSuffix(config)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"invalid config: %q, %v\", config, err)\n\t}\n\thdr, msg, err := parseHeaderMessageLengthConfig(suffix)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"invalid header/message length config: %q, %v\", suffix, err)\n\t}\n\tif m == \"*\" {\n\t\tif err := l.setServiceMethodLogger(s, &MethodLoggerConfig{Header: hdr, Message: msg}); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid config: %v\", err)\n\t\t}\n\t} else {\n\t\tif err := l.setMethodMethodLogger(s+\"/\"+m, &MethodLoggerConfig{Header: hdr, Message: msg}); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid config: %v\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\nconst (\n\t// TODO: this const is only used by env_config now. But could be useful for\n\t// other config. Move to binarylog.go if necessary.\n\tmaxUInt = ^uint64(0)\n\n\t// For \"p.s/m\" plus any suffix. Suffix will be parsed again. See test for\n\t// expected output.\n\tlongMethodConfigRegexpStr = `^([\\w./]+)/((?:\\w+)|[*])(.+)?$`\n\n\t// For suffix from above, \"{h:123,m:123}\". See test for expected output.\n\toptionalLengthRegexpStr      = `(?::(\\d+))?` // Optional \":123\".\n\theaderConfigRegexpStr        = `^{h` + optionalLengthRegexpStr + `}$`\n\tmessageConfigRegexpStr       = `^{m` + optionalLengthRegexpStr + `}$`\n\theaderMessageConfigRegexpStr = `^{h` + optionalLengthRegexpStr + `;m` + optionalLengthRegexpStr + `}$`\n)\n\nvar (\n\tlongMethodConfigRegexp    = regexp.MustCompile(longMethodConfigRegexpStr)\n\theaderConfigRegexp        = regexp.MustCompile(headerConfigRegexpStr)\n\tmessageConfigRegexp       = regexp.MustCompile(messageConfigRegexpStr)\n\theaderMessageConfigRegexp = regexp.MustCompile(headerMessageConfigRegexpStr)\n)\n\n// Turn \"service/method{h;m}\" into \"service\", \"method\", \"{h;m}\".\nfunc parseMethodConfigAndSuffix(c string) (service, method, suffix string, _ error) {\n\t// Regexp result:\n\t//\n\t// in:  \"p.s/m{h:123,m:123}\",\n\t// out: []string{\"p.s/m{h:123,m:123}\", \"p.s\", \"m\", \"{h:123,m:123}\"},\n\tmatch := longMethodConfigRegexp.FindStringSubmatch(c)\n\tif match == nil {\n\t\treturn \"\", \"\", \"\", fmt.Errorf(\"%q contains invalid substring\", c)\n\t}\n\tservice = match[1]\n\tmethod = match[2]\n\tsuffix = match[3]\n\treturn\n}\n\n// Turn \"{h:123;m:345}\" into 123, 345.\n//\n// Return maxUInt if length is unspecified.\nfunc parseHeaderMessageLengthConfig(c string) (hdrLenStr, msgLenStr uint64, err error) {\n\tif c == \"\" {\n\t\treturn maxUInt, maxUInt, nil\n\t}\n\t// Header config only.\n\tif match := headerConfigRegexp.FindStringSubmatch(c); match != nil {\n\t\tif s := match[1]; s != \"\" {\n\t\t\thdrLenStr, err = strconv.ParseUint(s, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, 0, fmt.Errorf(\"failed to convert %q to uint\", s)\n\t\t\t}\n\t\t\treturn hdrLenStr, 0, nil\n\t\t}\n\t\treturn maxUInt, 0, nil\n\t}\n\n\t// Message config only.\n\tif match := messageConfigRegexp.FindStringSubmatch(c); match != nil {\n\t\tif s := match[1]; s != \"\" {\n\t\t\tmsgLenStr, err = strconv.ParseUint(s, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, 0, fmt.Errorf(\"failed to convert %q to uint\", s)\n\t\t\t}\n\t\t\treturn 0, msgLenStr, nil\n\t\t}\n\t\treturn 0, maxUInt, nil\n\t}\n\n\t// Header and message config both.\n\tif match := headerMessageConfigRegexp.FindStringSubmatch(c); match != nil {\n\t\t// Both hdr and msg are specified, but one or two of them might be empty.\n\t\thdrLenStr = maxUInt\n\t\tmsgLenStr = maxUInt\n\t\tif s := match[1]; s != \"\" {\n\t\t\thdrLenStr, err = strconv.ParseUint(s, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, 0, fmt.Errorf(\"failed to convert %q to uint\", s)\n\t\t\t}\n\t\t}\n\t\tif s := match[2]; s != \"\" {\n\t\t\tmsgLenStr, err = strconv.ParseUint(s, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, 0, fmt.Errorf(\"failed to convert %q to uint\", s)\n\t\t\t}\n\t\t}\n\t\treturn hdrLenStr, msgLenStr, nil\n\t}\n\treturn 0, 0, fmt.Errorf(\"%q contains invalid substring\", c)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/binarylog/method_logger.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage binarylog\n\nimport (\n\t\"context\"\n\t\"net\"\n\t\"strings\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\tbinlogpb \"google.golang.org/grpc/binarylog/grpc_binarylog_v1\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/status\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/types/known/durationpb\"\n\t\"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\ntype callIDGenerator struct {\n\tid uint64\n}\n\nfunc (g *callIDGenerator) next() uint64 {\n\tid := atomic.AddUint64(&g.id, 1)\n\treturn id\n}\n\n// reset is for testing only, and doesn't need to be thread safe.\nfunc (g *callIDGenerator) reset() {\n\tg.id = 0\n}\n\nvar idGen callIDGenerator\n\n// MethodLogger is the sub-logger for each method.\n//\n// This is used in the 1.0 release of gcp/observability, and thus must not be\n// deleted or changed.\ntype MethodLogger interface {\n\tLog(context.Context, LogEntryConfig)\n}\n\n// TruncatingMethodLogger is a method logger that truncates headers and messages\n// based on configured fields.\ntype TruncatingMethodLogger struct {\n\theaderMaxLen, messageMaxLen uint64\n\n\tcallID          uint64\n\tidWithinCallGen *callIDGenerator\n\n\tsink Sink // TODO(blog): make this pluggable.\n}\n\n// NewTruncatingMethodLogger returns a new truncating method logger.\n//\n// This is used in the 1.0 release of gcp/observability, and thus must not be\n// deleted or changed.\nfunc NewTruncatingMethodLogger(h, m uint64) *TruncatingMethodLogger {\n\treturn &TruncatingMethodLogger{\n\t\theaderMaxLen:  h,\n\t\tmessageMaxLen: m,\n\n\t\tcallID:          idGen.next(),\n\t\tidWithinCallGen: &callIDGenerator{},\n\n\t\tsink: DefaultSink, // TODO(blog): make it pluggable.\n\t}\n}\n\n// Build is an internal only method for building the proto message out of the\n// input event. It's made public to enable other library to reuse as much logic\n// in TruncatingMethodLogger as possible.\nfunc (ml *TruncatingMethodLogger) Build(c LogEntryConfig) *binlogpb.GrpcLogEntry {\n\tm := c.toProto()\n\ttimestamp := timestamppb.Now()\n\tm.Timestamp = timestamp\n\tm.CallId = ml.callID\n\tm.SequenceIdWithinCall = ml.idWithinCallGen.next()\n\n\tswitch pay := m.Payload.(type) {\n\tcase *binlogpb.GrpcLogEntry_ClientHeader:\n\t\tm.PayloadTruncated = ml.truncateMetadata(pay.ClientHeader.GetMetadata())\n\tcase *binlogpb.GrpcLogEntry_ServerHeader:\n\t\tm.PayloadTruncated = ml.truncateMetadata(pay.ServerHeader.GetMetadata())\n\tcase *binlogpb.GrpcLogEntry_Message:\n\t\tm.PayloadTruncated = ml.truncateMessage(pay.Message)\n\t}\n\treturn m\n}\n\n// Log creates a proto binary log entry, and logs it to the sink.\nfunc (ml *TruncatingMethodLogger) Log(_ context.Context, c LogEntryConfig) {\n\tml.sink.Write(ml.Build(c))\n}\n\nfunc (ml *TruncatingMethodLogger) truncateMetadata(mdPb *binlogpb.Metadata) (truncated bool) {\n\tif ml.headerMaxLen == maxUInt {\n\t\treturn false\n\t}\n\tvar (\n\t\tbytesLimit = ml.headerMaxLen\n\t\tindex      int\n\t)\n\t// At the end of the loop, index will be the first entry where the total\n\t// size is greater than the limit:\n\t//\n\t// len(entry[:index]) <= ml.hdr && len(entry[:index+1]) > ml.hdr.\n\tfor ; index < len(mdPb.Entry); index++ {\n\t\tentry := mdPb.Entry[index]\n\t\tif entry.Key == \"grpc-trace-bin\" {\n\t\t\t// \"grpc-trace-bin\" is a special key. It's kept in the log entry,\n\t\t\t// but not counted towards the size limit.\n\t\t\tcontinue\n\t\t}\n\t\tcurrentEntryLen := uint64(len(entry.GetKey())) + uint64(len(entry.GetValue()))\n\t\tif currentEntryLen > bytesLimit {\n\t\t\tbreak\n\t\t}\n\t\tbytesLimit -= currentEntryLen\n\t}\n\ttruncated = index < len(mdPb.Entry)\n\tmdPb.Entry = mdPb.Entry[:index]\n\treturn truncated\n}\n\nfunc (ml *TruncatingMethodLogger) truncateMessage(msgPb *binlogpb.Message) (truncated bool) {\n\tif ml.messageMaxLen == maxUInt {\n\t\treturn false\n\t}\n\tif ml.messageMaxLen >= uint64(len(msgPb.Data)) {\n\t\treturn false\n\t}\n\tmsgPb.Data = msgPb.Data[:ml.messageMaxLen]\n\treturn true\n}\n\n// LogEntryConfig represents the configuration for binary log entry.\n//\n// This is used in the 1.0 release of gcp/observability, and thus must not be\n// deleted or changed.\ntype LogEntryConfig interface {\n\ttoProto() *binlogpb.GrpcLogEntry\n}\n\n// ClientHeader configs the binary log entry to be a ClientHeader entry.\ntype ClientHeader struct {\n\tOnClientSide bool\n\tHeader       metadata.MD\n\tMethodName   string\n\tAuthority    string\n\tTimeout      time.Duration\n\t// PeerAddr is required only when it's on server side.\n\tPeerAddr net.Addr\n}\n\nfunc (c *ClientHeader) toProto() *binlogpb.GrpcLogEntry {\n\t// This function doesn't need to set all the fields (e.g. seq ID). The Log\n\t// function will set the fields when necessary.\n\tclientHeader := &binlogpb.ClientHeader{\n\t\tMetadata:   mdToMetadataProto(c.Header),\n\t\tMethodName: c.MethodName,\n\t\tAuthority:  c.Authority,\n\t}\n\tif c.Timeout > 0 {\n\t\tclientHeader.Timeout = durationpb.New(c.Timeout)\n\t}\n\tret := &binlogpb.GrpcLogEntry{\n\t\tType: binlogpb.GrpcLogEntry_EVENT_TYPE_CLIENT_HEADER,\n\t\tPayload: &binlogpb.GrpcLogEntry_ClientHeader{\n\t\t\tClientHeader: clientHeader,\n\t\t},\n\t}\n\tif c.OnClientSide {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT\n\t} else {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER\n\t}\n\tif c.PeerAddr != nil {\n\t\tret.Peer = addrToProto(c.PeerAddr)\n\t}\n\treturn ret\n}\n\n// ServerHeader configs the binary log entry to be a ServerHeader entry.\ntype ServerHeader struct {\n\tOnClientSide bool\n\tHeader       metadata.MD\n\t// PeerAddr is required only when it's on client side.\n\tPeerAddr net.Addr\n}\n\nfunc (c *ServerHeader) toProto() *binlogpb.GrpcLogEntry {\n\tret := &binlogpb.GrpcLogEntry{\n\t\tType: binlogpb.GrpcLogEntry_EVENT_TYPE_SERVER_HEADER,\n\t\tPayload: &binlogpb.GrpcLogEntry_ServerHeader{\n\t\t\tServerHeader: &binlogpb.ServerHeader{\n\t\t\t\tMetadata: mdToMetadataProto(c.Header),\n\t\t\t},\n\t\t},\n\t}\n\tif c.OnClientSide {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT\n\t} else {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER\n\t}\n\tif c.PeerAddr != nil {\n\t\tret.Peer = addrToProto(c.PeerAddr)\n\t}\n\treturn ret\n}\n\n// ClientMessage configs the binary log entry to be a ClientMessage entry.\ntype ClientMessage struct {\n\tOnClientSide bool\n\t// Message can be a proto.Message or []byte. Other messages formats are not\n\t// supported.\n\tMessage any\n}\n\nfunc (c *ClientMessage) toProto() *binlogpb.GrpcLogEntry {\n\tvar (\n\t\tdata []byte\n\t\terr  error\n\t)\n\tif m, ok := c.Message.(proto.Message); ok {\n\t\tdata, err = proto.Marshal(m)\n\t\tif err != nil {\n\t\t\tgrpclogLogger.Infof(\"binarylogging: failed to marshal proto message: %v\", err)\n\t\t}\n\t} else if b, ok := c.Message.([]byte); ok {\n\t\tdata = b\n\t} else {\n\t\tgrpclogLogger.Infof(\"binarylogging: message to log is neither proto.message nor []byte\")\n\t}\n\tret := &binlogpb.GrpcLogEntry{\n\t\tType: binlogpb.GrpcLogEntry_EVENT_TYPE_CLIENT_MESSAGE,\n\t\tPayload: &binlogpb.GrpcLogEntry_Message{\n\t\t\tMessage: &binlogpb.Message{\n\t\t\t\tLength: uint32(len(data)),\n\t\t\t\tData:   data,\n\t\t\t},\n\t\t},\n\t}\n\tif c.OnClientSide {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT\n\t} else {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER\n\t}\n\treturn ret\n}\n\n// ServerMessage configs the binary log entry to be a ServerMessage entry.\ntype ServerMessage struct {\n\tOnClientSide bool\n\t// Message can be a proto.Message or []byte. Other messages formats are not\n\t// supported.\n\tMessage any\n}\n\nfunc (c *ServerMessage) toProto() *binlogpb.GrpcLogEntry {\n\tvar (\n\t\tdata []byte\n\t\terr  error\n\t)\n\tif m, ok := c.Message.(proto.Message); ok {\n\t\tdata, err = proto.Marshal(m)\n\t\tif err != nil {\n\t\t\tgrpclogLogger.Infof(\"binarylogging: failed to marshal proto message: %v\", err)\n\t\t}\n\t} else if b, ok := c.Message.([]byte); ok {\n\t\tdata = b\n\t} else {\n\t\tgrpclogLogger.Infof(\"binarylogging: message to log is neither proto.message nor []byte\")\n\t}\n\tret := &binlogpb.GrpcLogEntry{\n\t\tType: binlogpb.GrpcLogEntry_EVENT_TYPE_SERVER_MESSAGE,\n\t\tPayload: &binlogpb.GrpcLogEntry_Message{\n\t\t\tMessage: &binlogpb.Message{\n\t\t\t\tLength: uint32(len(data)),\n\t\t\t\tData:   data,\n\t\t\t},\n\t\t},\n\t}\n\tif c.OnClientSide {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT\n\t} else {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER\n\t}\n\treturn ret\n}\n\n// ClientHalfClose configs the binary log entry to be a ClientHalfClose entry.\ntype ClientHalfClose struct {\n\tOnClientSide bool\n}\n\nfunc (c *ClientHalfClose) toProto() *binlogpb.GrpcLogEntry {\n\tret := &binlogpb.GrpcLogEntry{\n\t\tType:    binlogpb.GrpcLogEntry_EVENT_TYPE_CLIENT_HALF_CLOSE,\n\t\tPayload: nil, // No payload here.\n\t}\n\tif c.OnClientSide {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT\n\t} else {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER\n\t}\n\treturn ret\n}\n\n// ServerTrailer configs the binary log entry to be a ServerTrailer entry.\ntype ServerTrailer struct {\n\tOnClientSide bool\n\tTrailer      metadata.MD\n\t// Err is the status error.\n\tErr error\n\t// PeerAddr is required only when it's on client side and the RPC is trailer\n\t// only.\n\tPeerAddr net.Addr\n}\n\nfunc (c *ServerTrailer) toProto() *binlogpb.GrpcLogEntry {\n\tst, ok := status.FromError(c.Err)\n\tif !ok {\n\t\tgrpclogLogger.Info(\"binarylogging: error in trailer is not a status error\")\n\t}\n\tvar (\n\t\tdetailsBytes []byte\n\t\terr          error\n\t)\n\tstProto := st.Proto()\n\tif stProto != nil && len(stProto.Details) != 0 {\n\t\tdetailsBytes, err = proto.Marshal(stProto)\n\t\tif err != nil {\n\t\t\tgrpclogLogger.Infof(\"binarylogging: failed to marshal status proto: %v\", err)\n\t\t}\n\t}\n\tret := &binlogpb.GrpcLogEntry{\n\t\tType: binlogpb.GrpcLogEntry_EVENT_TYPE_SERVER_TRAILER,\n\t\tPayload: &binlogpb.GrpcLogEntry_Trailer{\n\t\t\tTrailer: &binlogpb.Trailer{\n\t\t\t\tMetadata:      mdToMetadataProto(c.Trailer),\n\t\t\t\tStatusCode:    uint32(st.Code()),\n\t\t\t\tStatusMessage: st.Message(),\n\t\t\t\tStatusDetails: detailsBytes,\n\t\t\t},\n\t\t},\n\t}\n\tif c.OnClientSide {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT\n\t} else {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER\n\t}\n\tif c.PeerAddr != nil {\n\t\tret.Peer = addrToProto(c.PeerAddr)\n\t}\n\treturn ret\n}\n\n// Cancel configs the binary log entry to be a Cancel entry.\ntype Cancel struct {\n\tOnClientSide bool\n}\n\nfunc (c *Cancel) toProto() *binlogpb.GrpcLogEntry {\n\tret := &binlogpb.GrpcLogEntry{\n\t\tType:    binlogpb.GrpcLogEntry_EVENT_TYPE_CANCEL,\n\t\tPayload: nil,\n\t}\n\tif c.OnClientSide {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT\n\t} else {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER\n\t}\n\treturn ret\n}\n\n// metadataKeyOmit returns whether the metadata entry with this key should be\n// omitted.\nfunc metadataKeyOmit(key string) bool {\n\tswitch key {\n\tcase \"lb-token\", \":path\", \":authority\", \"content-encoding\", \"content-type\", \"user-agent\", \"te\":\n\t\treturn true\n\tcase \"grpc-trace-bin\": // grpc-trace-bin is special because it's visible to users.\n\t\treturn false\n\t}\n\treturn strings.HasPrefix(key, \"grpc-\")\n}\n\nfunc mdToMetadataProto(md metadata.MD) *binlogpb.Metadata {\n\tret := &binlogpb.Metadata{}\n\tfor k, vv := range md {\n\t\tif metadataKeyOmit(k) {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, v := range vv {\n\t\t\tret.Entry = append(ret.Entry,\n\t\t\t\t&binlogpb.MetadataEntry{\n\t\t\t\t\tKey:   k,\n\t\t\t\t\tValue: []byte(v),\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\t}\n\treturn ret\n}\n\nfunc addrToProto(addr net.Addr) *binlogpb.Address {\n\tret := &binlogpb.Address{}\n\tswitch a := addr.(type) {\n\tcase *net.TCPAddr:\n\t\tif a.IP.To4() != nil {\n\t\t\tret.Type = binlogpb.Address_TYPE_IPV4\n\t\t} else if a.IP.To16() != nil {\n\t\t\tret.Type = binlogpb.Address_TYPE_IPV6\n\t\t} else {\n\t\t\tret.Type = binlogpb.Address_TYPE_UNKNOWN\n\t\t\t// Do not set address and port fields.\n\t\t\tbreak\n\t\t}\n\t\tret.Address = a.IP.String()\n\t\tret.IpPort = uint32(a.Port)\n\tcase *net.UnixAddr:\n\t\tret.Type = binlogpb.Address_TYPE_UNIX\n\t\tret.Address = a.String()\n\tdefault:\n\t\tret.Type = binlogpb.Address_TYPE_UNKNOWN\n\t}\n\treturn ret\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/binarylog/sink.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage binarylog\n\nimport (\n\t\"bufio\"\n\t\"encoding/binary\"\n\t\"io\"\n\t\"sync\"\n\t\"time\"\n\n\tbinlogpb \"google.golang.org/grpc/binarylog/grpc_binarylog_v1\"\n\t\"google.golang.org/protobuf/proto\"\n)\n\nvar (\n\t// DefaultSink is the sink where the logs will be written to. It's exported\n\t// for the binarylog package to update.\n\tDefaultSink Sink = &noopSink{} // TODO(blog): change this default (file in /tmp).\n)\n\n// Sink writes log entry into the binary log sink.\n//\n// sink is a copy of the exported binarylog.Sink, to avoid circular dependency.\ntype Sink interface {\n\t// Write will be called to write the log entry into the sink.\n\t//\n\t// It should be thread-safe so it can be called in parallel.\n\tWrite(*binlogpb.GrpcLogEntry) error\n\t// Close will be called when the Sink is replaced by a new Sink.\n\tClose() error\n}\n\ntype noopSink struct{}\n\nfunc (ns *noopSink) Write(*binlogpb.GrpcLogEntry) error { return nil }\nfunc (ns *noopSink) Close() error                       { return nil }\n\n// newWriterSink creates a binary log sink with the given writer.\n//\n// Write() marshals the proto message and writes it to the given writer. Each\n// message is prefixed with a 4 byte big endian unsigned integer as the length.\n//\n// No buffer is done, Close() doesn't try to close the writer.\nfunc newWriterSink(w io.Writer) Sink {\n\treturn &writerSink{out: w}\n}\n\ntype writerSink struct {\n\tout io.Writer\n}\n\nfunc (ws *writerSink) Write(e *binlogpb.GrpcLogEntry) error {\n\tb, err := proto.Marshal(e)\n\tif err != nil {\n\t\tgrpclogLogger.Errorf(\"binary logging: failed to marshal proto message: %v\", err)\n\t\treturn err\n\t}\n\thdr := make([]byte, 4)\n\tbinary.BigEndian.PutUint32(hdr, uint32(len(b)))\n\tif _, err := ws.out.Write(hdr); err != nil {\n\t\treturn err\n\t}\n\tif _, err := ws.out.Write(b); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (ws *writerSink) Close() error { return nil }\n\ntype bufferedSink struct {\n\tmu             sync.Mutex\n\tcloser         io.Closer\n\tout            Sink          // out is built on buf.\n\tbuf            *bufio.Writer // buf is kept for flush.\n\tflusherStarted bool\n\n\twriteTicker *time.Ticker\n\tdone        chan struct{}\n}\n\nfunc (fs *bufferedSink) Write(e *binlogpb.GrpcLogEntry) error {\n\tfs.mu.Lock()\n\tdefer fs.mu.Unlock()\n\tif !fs.flusherStarted {\n\t\t// Start the write loop when Write is called.\n\t\tfs.startFlushGoroutine()\n\t\tfs.flusherStarted = true\n\t}\n\tif err := fs.out.Write(e); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nconst (\n\tbufFlushDuration = 60 * time.Second\n)\n\nfunc (fs *bufferedSink) startFlushGoroutine() {\n\tfs.writeTicker = time.NewTicker(bufFlushDuration)\n\tgo func() {\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase <-fs.done:\n\t\t\t\treturn\n\t\t\tcase <-fs.writeTicker.C:\n\t\t\t}\n\t\t\tfs.mu.Lock()\n\t\t\tif err := fs.buf.Flush(); err != nil {\n\t\t\t\tgrpclogLogger.Warningf(\"failed to flush to Sink: %v\", err)\n\t\t\t}\n\t\t\tfs.mu.Unlock()\n\t\t}\n\t}()\n}\n\nfunc (fs *bufferedSink) Close() error {\n\tfs.mu.Lock()\n\tdefer fs.mu.Unlock()\n\tif fs.writeTicker != nil {\n\t\tfs.writeTicker.Stop()\n\t}\n\tclose(fs.done)\n\tif err := fs.buf.Flush(); err != nil {\n\t\tgrpclogLogger.Warningf(\"failed to flush to Sink: %v\", err)\n\t}\n\tif err := fs.closer.Close(); err != nil {\n\t\tgrpclogLogger.Warningf(\"failed to close the underlying WriterCloser: %v\", err)\n\t}\n\tif err := fs.out.Close(); err != nil {\n\t\tgrpclogLogger.Warningf(\"failed to close the Sink: %v\", err)\n\t}\n\treturn nil\n}\n\n// NewBufferedSink creates a binary log sink with the given WriteCloser.\n//\n// Write() marshals the proto message and writes it to the given writer. Each\n// message is prefixed with a 4 byte big endian unsigned integer as the length.\n//\n// Content is kept in a buffer, and is flushed every 60 seconds.\n//\n// Close closes the WriteCloser.\nfunc NewBufferedSink(o io.WriteCloser) Sink {\n\tbufW := bufio.NewWriter(o)\n\treturn &bufferedSink{\n\t\tcloser: o,\n\t\tout:    newWriterSink(bufW),\n\t\tbuf:    bufW,\n\t\tdone:   make(chan struct{}),\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/buffer/unbounded.go",
    "content": "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package buffer provides an implementation of an unbounded buffer.\npackage buffer\n\nimport (\n\t\"errors\"\n\t\"sync\"\n)\n\n// Unbounded is an implementation of an unbounded buffer which does not use\n// extra goroutines. This is typically used for passing updates from one entity\n// to another within gRPC.\n//\n// All methods on this type are thread-safe and don't block on anything except\n// the underlying mutex used for synchronization.\n//\n// Unbounded supports values of any type to be stored in it by using a channel\n// of `any`. This means that a call to Put() incurs an extra memory allocation,\n// and also that users need a type assertion while reading. For performance\n// critical code paths, using Unbounded is strongly discouraged and defining a\n// new type specific implementation of this buffer is preferred. See\n// internal/transport/transport.go for an example of this.\ntype Unbounded struct {\n\tc       chan any\n\tclosed  bool\n\tclosing bool\n\tmu      sync.Mutex\n\tbacklog []any\n}\n\n// NewUnbounded returns a new instance of Unbounded.\nfunc NewUnbounded() *Unbounded {\n\treturn &Unbounded{c: make(chan any, 1)}\n}\n\nvar errBufferClosed = errors.New(\"Put called on closed buffer.Unbounded\")\n\n// Put adds t to the unbounded buffer.\nfunc (b *Unbounded) Put(t any) error {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\tif b.closing {\n\t\treturn errBufferClosed\n\t}\n\tif len(b.backlog) == 0 {\n\t\tselect {\n\t\tcase b.c <- t:\n\t\t\treturn nil\n\t\tdefault:\n\t\t}\n\t}\n\tb.backlog = append(b.backlog, t)\n\treturn nil\n}\n\n// Load sends the earliest buffered data, if any, onto the read channel returned\n// by Get(). Users are expected to call this every time they successfully read a\n// value from the read channel.\nfunc (b *Unbounded) Load() {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\tif len(b.backlog) > 0 {\n\t\tselect {\n\t\tcase b.c <- b.backlog[0]:\n\t\t\tb.backlog[0] = nil\n\t\t\tb.backlog = b.backlog[1:]\n\t\tdefault:\n\t\t}\n\t} else if b.closing && !b.closed {\n\t\tb.closed = true\n\t\tclose(b.c)\n\t}\n}\n\n// Get returns a read channel on which values added to the buffer, via Put(),\n// are sent on.\n//\n// Upon reading a value from this channel, users are expected to call Load() to\n// send the next buffered value onto the channel if there is any.\n//\n// If the unbounded buffer is closed, the read channel returned by this method\n// is closed after all data is drained.\nfunc (b *Unbounded) Get() <-chan any {\n\treturn b.c\n}\n\n// Close closes the unbounded buffer. No subsequent data may be Put(), and the\n// channel returned from Get() will be closed after all the data is read and\n// Load() is called for the final time.\nfunc (b *Unbounded) Close() {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\tif b.closing {\n\t\treturn\n\t}\n\tb.closing = true\n\tif len(b.backlog) == 0 {\n\t\tb.closed = true\n\t\tclose(b.c)\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/channel.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport (\n\t\"fmt\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/grpc/connectivity\"\n)\n\n// Channel represents a channel within channelz, which includes metrics and\n// internal channelz data, such as channelz id, child list, etc.\ntype Channel struct {\n\tEntity\n\t// ID is the channelz id of this channel.\n\tID int64\n\t// RefName is the human readable reference string of this channel.\n\tRefName string\n\n\tcloseCalled bool\n\tnestedChans map[int64]string\n\tsubChans    map[int64]string\n\tParent      *Channel\n\ttrace       *ChannelTrace\n\t// traceRefCount is the number of trace events that reference this channel.\n\t// Non-zero traceRefCount means the trace of this channel cannot be deleted.\n\ttraceRefCount int32\n\n\t// ChannelMetrics holds connectivity state, target and call metrics for the\n\t// channel within channelz.\n\tChannelMetrics ChannelMetrics\n}\n\n// Implemented to make Channel implement the Identifier interface used for\n// nesting.\nfunc (c *Channel) channelzIdentifier() {}\n\n// String returns a string representation of the Channel, including its parent\n// entity and ID.\nfunc (c *Channel) String() string {\n\tif c.Parent == nil {\n\t\treturn fmt.Sprintf(\"Channel #%d\", c.ID)\n\t}\n\treturn fmt.Sprintf(\"%s Channel #%d\", c.Parent, c.ID)\n}\n\nfunc (c *Channel) id() int64 {\n\treturn c.ID\n}\n\n// SubChans returns a copy of the map of sub-channels associated with the\n// Channel.\nfunc (c *Channel) SubChans() map[int64]string {\n\tdb.mu.RLock()\n\tdefer db.mu.RUnlock()\n\treturn copyMap(c.subChans)\n}\n\n// NestedChans returns a copy of the map of nested channels associated with the\n// Channel.\nfunc (c *Channel) NestedChans() map[int64]string {\n\tdb.mu.RLock()\n\tdefer db.mu.RUnlock()\n\treturn copyMap(c.nestedChans)\n}\n\n// Trace returns a copy of the Channel's trace data.\nfunc (c *Channel) Trace() *ChannelTrace {\n\tdb.mu.RLock()\n\tdefer db.mu.RUnlock()\n\treturn c.trace.copy()\n}\n\n// ChannelMetrics holds connectivity state, target and call metrics for the\n// channel within channelz.\ntype ChannelMetrics struct {\n\t// The current connectivity state of the channel.\n\tState atomic.Pointer[connectivity.State]\n\t// The target this channel originally tried to connect to.  May be absent\n\tTarget atomic.Pointer[string]\n\t// The number of calls started on the channel.\n\tCallsStarted atomic.Int64\n\t// The number of calls that have completed with an OK status.\n\tCallsSucceeded atomic.Int64\n\t// The number of calls that have a completed with a non-OK status.\n\tCallsFailed atomic.Int64\n\t// The last time a call was started on the channel.\n\tLastCallStartedTimestamp atomic.Int64\n}\n\n// CopyFrom copies the metrics in o to c.  For testing only.\nfunc (c *ChannelMetrics) CopyFrom(o *ChannelMetrics) {\n\tc.State.Store(o.State.Load())\n\tc.Target.Store(o.Target.Load())\n\tc.CallsStarted.Store(o.CallsStarted.Load())\n\tc.CallsSucceeded.Store(o.CallsSucceeded.Load())\n\tc.CallsFailed.Store(o.CallsFailed.Load())\n\tc.LastCallStartedTimestamp.Store(o.LastCallStartedTimestamp.Load())\n}\n\n// Equal returns true iff the metrics of c are the same as the metrics of o.\n// For testing only.\nfunc (c *ChannelMetrics) Equal(o any) bool {\n\toc, ok := o.(*ChannelMetrics)\n\tif !ok {\n\t\treturn false\n\t}\n\tif (c.State.Load() == nil) != (oc.State.Load() == nil) {\n\t\treturn false\n\t}\n\tif c.State.Load() != nil && *c.State.Load() != *oc.State.Load() {\n\t\treturn false\n\t}\n\tif (c.Target.Load() == nil) != (oc.Target.Load() == nil) {\n\t\treturn false\n\t}\n\tif c.Target.Load() != nil && *c.Target.Load() != *oc.Target.Load() {\n\t\treturn false\n\t}\n\treturn c.CallsStarted.Load() == oc.CallsStarted.Load() &&\n\t\tc.CallsFailed.Load() == oc.CallsFailed.Load() &&\n\t\tc.CallsSucceeded.Load() == oc.CallsSucceeded.Load() &&\n\t\tc.LastCallStartedTimestamp.Load() == oc.LastCallStartedTimestamp.Load()\n}\n\nfunc strFromPointer(s *string) string {\n\tif s == nil {\n\t\treturn \"\"\n\t}\n\treturn *s\n}\n\n// String returns a string representation of the ChannelMetrics, including its\n// state, target, and call metrics.\nfunc (c *ChannelMetrics) String() string {\n\treturn fmt.Sprintf(\"State: %v, Target: %s, CallsStarted: %v, CallsSucceeded: %v, CallsFailed: %v, LastCallStartedTimestamp: %v\",\n\t\tc.State.Load(), strFromPointer(c.Target.Load()), c.CallsStarted.Load(), c.CallsSucceeded.Load(), c.CallsFailed.Load(), c.LastCallStartedTimestamp.Load(),\n\t)\n}\n\n// NewChannelMetricForTesting creates a new instance of ChannelMetrics with\n// specified initial values for testing purposes.\nfunc NewChannelMetricForTesting(state connectivity.State, target string, started, succeeded, failed, timestamp int64) *ChannelMetrics {\n\tc := &ChannelMetrics{}\n\tc.State.Store(&state)\n\tc.Target.Store(&target)\n\tc.CallsStarted.Store(started)\n\tc.CallsSucceeded.Store(succeeded)\n\tc.CallsFailed.Store(failed)\n\tc.LastCallStartedTimestamp.Store(timestamp)\n\treturn c\n}\n\nfunc (c *Channel) addChild(id int64, e entry) {\n\tswitch v := e.(type) {\n\tcase *SubChannel:\n\t\tc.subChans[id] = v.RefName\n\tcase *Channel:\n\t\tc.nestedChans[id] = v.RefName\n\tdefault:\n\t\tlogger.Errorf(\"cannot add a child (id = %d) of type %T to a channel\", id, e)\n\t}\n}\n\nfunc (c *Channel) deleteChild(id int64) {\n\tdelete(c.subChans, id)\n\tdelete(c.nestedChans, id)\n\tc.deleteSelfIfReady()\n}\n\nfunc (c *Channel) triggerDelete() {\n\tc.closeCalled = true\n\tc.deleteSelfIfReady()\n}\n\nfunc (c *Channel) getParentID() int64 {\n\tif c.Parent == nil {\n\t\treturn -1\n\t}\n\treturn c.Parent.ID\n}\n\n// deleteSelfFromTree tries to delete the channel from the channelz entry relation tree, which means\n// deleting the channel reference from its parent's child list.\n//\n// In order for a channel to be deleted from the tree, it must meet the criteria that, removal of the\n// corresponding grpc object has been invoked, and the channel does not have any children left.\n//\n// The returned boolean value indicates whether the channel has been successfully deleted from tree.\nfunc (c *Channel) deleteSelfFromTree() (deleted bool) {\n\tif !c.closeCalled || len(c.subChans)+len(c.nestedChans) != 0 {\n\t\treturn false\n\t}\n\t// not top channel\n\tif c.Parent != nil {\n\t\tc.Parent.deleteChild(c.ID)\n\t}\n\treturn true\n}\n\n// deleteSelfFromMap checks whether it is valid to delete the channel from the map, which means\n// deleting the channel from channelz's tracking entirely. Users can no longer use id to query the\n// channel, and its memory will be garbage collected.\n//\n// The trace reference count of the channel must be 0 in order to be deleted from the map. This is\n// specified in the channel tracing gRFC that as long as some other trace has reference to an entity,\n// the trace of the referenced entity must not be deleted. In order to release the resource allocated\n// by grpc, the reference to the grpc object is reset to a dummy object.\n//\n// deleteSelfFromMap must be called after deleteSelfFromTree returns true.\n//\n// It returns a bool to indicate whether the channel can be safely deleted from map.\nfunc (c *Channel) deleteSelfFromMap() (delete bool) {\n\treturn c.getTraceRefCount() == 0\n}\n\n// deleteSelfIfReady tries to delete the channel itself from the channelz database.\n// The delete process includes two steps:\n//  1. delete the channel from the entry relation tree, i.e. delete the channel reference from its\n//     parent's child list.\n//  2. delete the channel from the map, i.e. delete the channel entirely from channelz. Lookup by id\n//     will return entry not found error.\nfunc (c *Channel) deleteSelfIfReady() {\n\tif !c.deleteSelfFromTree() {\n\t\treturn\n\t}\n\tif !c.deleteSelfFromMap() {\n\t\treturn\n\t}\n\tdb.deleteEntry(c.ID)\n\tc.trace.clear()\n}\n\nfunc (c *Channel) getChannelTrace() *ChannelTrace {\n\treturn c.trace\n}\n\nfunc (c *Channel) incrTraceRefCount() {\n\tatomic.AddInt32(&c.traceRefCount, 1)\n}\n\nfunc (c *Channel) decrTraceRefCount() {\n\tatomic.AddInt32(&c.traceRefCount, -1)\n}\n\nfunc (c *Channel) getTraceRefCount() int {\n\ti := atomic.LoadInt32(&c.traceRefCount)\n\treturn int(i)\n}\n\nfunc (c *Channel) getRefName() string {\n\treturn c.RefName\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/channelmap.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"sync\"\n\t\"time\"\n)\n\n// entry represents a node in the channelz database.\ntype entry interface {\n\t// addChild adds a child e, whose channelz id is id to child list\n\taddChild(id int64, e entry)\n\t// deleteChild deletes a child with channelz id to be id from child list\n\tdeleteChild(id int64)\n\t// triggerDelete tries to delete self from channelz database. However, if\n\t// child list is not empty, then deletion from the database is on hold until\n\t// the last child is deleted from database.\n\ttriggerDelete()\n\t// deleteSelfIfReady check whether triggerDelete() has been called before,\n\t// and whether child list is now empty. If both conditions are met, then\n\t// delete self from database.\n\tdeleteSelfIfReady()\n\t// getParentID returns parent ID of the entry. 0 value parent ID means no parent.\n\tgetParentID() int64\n\tEntity\n}\n\n// channelMap is the storage data structure for channelz.\n//\n// Methods of channelMap can be divided into two categories with respect to\n// locking.\n//\n// 1. Methods acquire the global lock.\n// 2. Methods that can only be called when global lock is held.\n//\n// A second type of method need always to be called inside a first type of method.\ntype channelMap struct {\n\tmu               sync.RWMutex\n\ttopLevelChannels map[int64]struct{}\n\tchannels         map[int64]*Channel\n\tsubChannels      map[int64]*SubChannel\n\tsockets          map[int64]*Socket\n\tservers          map[int64]*Server\n}\n\nfunc newChannelMap() *channelMap {\n\treturn &channelMap{\n\t\ttopLevelChannels: make(map[int64]struct{}),\n\t\tchannels:         make(map[int64]*Channel),\n\t\tsubChannels:      make(map[int64]*SubChannel),\n\t\tsockets:          make(map[int64]*Socket),\n\t\tservers:          make(map[int64]*Server),\n\t}\n}\n\nfunc (c *channelMap) addServer(id int64, s *Server) {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\ts.cm = c\n\tc.servers[id] = s\n}\n\nfunc (c *channelMap) addChannel(id int64, cn *Channel, isTopChannel bool, pid int64) {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\tcn.trace.cm = c\n\tc.channels[id] = cn\n\tif isTopChannel {\n\t\tc.topLevelChannels[id] = struct{}{}\n\t} else if p := c.channels[pid]; p != nil {\n\t\tp.addChild(id, cn)\n\t} else {\n\t\tlogger.Infof(\"channel %d references invalid parent ID %d\", id, pid)\n\t}\n}\n\nfunc (c *channelMap) addSubChannel(id int64, sc *SubChannel, pid int64) {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\tsc.trace.cm = c\n\tc.subChannels[id] = sc\n\tif p := c.channels[pid]; p != nil {\n\t\tp.addChild(id, sc)\n\t} else {\n\t\tlogger.Infof(\"subchannel %d references invalid parent ID %d\", id, pid)\n\t}\n}\n\nfunc (c *channelMap) addSocket(s *Socket) {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\ts.cm = c\n\tc.sockets[s.ID] = s\n\tif s.Parent == nil {\n\t\tlogger.Infof(\"normal socket %d has no parent\", s.ID)\n\t}\n\ts.Parent.(entry).addChild(s.ID, s)\n}\n\n// removeEntry triggers the removal of an entry, which may not indeed delete the\n// entry, if it has to wait on the deletion of its children and until no other\n// entity's channel trace references it.  It may lead to a chain of entry\n// deletion. For example, deleting the last socket of a gracefully shutting down\n// server will lead to the server being also deleted.\nfunc (c *channelMap) removeEntry(id int64) {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\tc.findEntry(id).triggerDelete()\n}\n\n// tracedChannel represents tracing operations which are present on both\n// channels and subChannels.\ntype tracedChannel interface {\n\tgetChannelTrace() *ChannelTrace\n\tincrTraceRefCount()\n\tdecrTraceRefCount()\n\tgetRefName() string\n}\n\n// c.mu must be held by the caller\nfunc (c *channelMap) decrTraceRefCount(id int64) {\n\te := c.findEntry(id)\n\tif v, ok := e.(tracedChannel); ok {\n\t\tv.decrTraceRefCount()\n\t\te.deleteSelfIfReady()\n\t}\n}\n\n// c.mu must be held by the caller.\nfunc (c *channelMap) findEntry(id int64) entry {\n\tif v, ok := c.channels[id]; ok {\n\t\treturn v\n\t}\n\tif v, ok := c.subChannels[id]; ok {\n\t\treturn v\n\t}\n\tif v, ok := c.servers[id]; ok {\n\t\treturn v\n\t}\n\tif v, ok := c.sockets[id]; ok {\n\t\treturn v\n\t}\n\treturn &dummyEntry{idNotFound: id}\n}\n\n// c.mu must be held by the caller\n//\n// deleteEntry deletes an entry from the channelMap. Before calling this method,\n// caller must check this entry is ready to be deleted, i.e removeEntry() has\n// been called on it, and no children still exist.\nfunc (c *channelMap) deleteEntry(id int64) entry {\n\tif v, ok := c.sockets[id]; ok {\n\t\tdelete(c.sockets, id)\n\t\treturn v\n\t}\n\tif v, ok := c.subChannels[id]; ok {\n\t\tdelete(c.subChannels, id)\n\t\treturn v\n\t}\n\tif v, ok := c.channels[id]; ok {\n\t\tdelete(c.channels, id)\n\t\tdelete(c.topLevelChannels, id)\n\t\treturn v\n\t}\n\tif v, ok := c.servers[id]; ok {\n\t\tdelete(c.servers, id)\n\t\treturn v\n\t}\n\treturn &dummyEntry{idNotFound: id}\n}\n\nfunc (c *channelMap) traceEvent(id int64, desc *TraceEvent) {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\tchild := c.findEntry(id)\n\tchildTC, ok := child.(tracedChannel)\n\tif !ok {\n\t\treturn\n\t}\n\tchildTC.getChannelTrace().append(&traceEvent{Desc: desc.Desc, Severity: desc.Severity, Timestamp: time.Now()})\n\tif desc.Parent != nil {\n\t\tparent := c.findEntry(child.getParentID())\n\t\tvar chanType RefChannelType\n\t\tswitch child.(type) {\n\t\tcase *Channel:\n\t\t\tchanType = RefChannel\n\t\tcase *SubChannel:\n\t\t\tchanType = RefSubChannel\n\t\t}\n\t\tif parentTC, ok := parent.(tracedChannel); ok {\n\t\t\tparentTC.getChannelTrace().append(&traceEvent{\n\t\t\t\tDesc:      desc.Parent.Desc,\n\t\t\t\tSeverity:  desc.Parent.Severity,\n\t\t\t\tTimestamp: time.Now(),\n\t\t\t\tRefID:     id,\n\t\t\t\tRefName:   childTC.getRefName(),\n\t\t\t\tRefType:   chanType,\n\t\t\t})\n\t\t\tchildTC.incrTraceRefCount()\n\t\t}\n\t}\n}\n\ntype int64Slice []int64\n\nfunc (s int64Slice) Len() int           { return len(s) }\nfunc (s int64Slice) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }\nfunc (s int64Slice) Less(i, j int) bool { return s[i] < s[j] }\n\nfunc copyMap(m map[int64]string) map[int64]string {\n\tn := make(map[int64]string)\n\tfor k, v := range m {\n\t\tn[k] = v\n\t}\n\treturn n\n}\n\nfunc (c *channelMap) getTopChannels(id int64, maxResults int) ([]*Channel, bool) {\n\tif maxResults <= 0 {\n\t\tmaxResults = EntriesPerPage\n\t}\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\tl := int64(len(c.topLevelChannels))\n\tids := make([]int64, 0, l)\n\n\tfor k := range c.topLevelChannels {\n\t\tids = append(ids, k)\n\t}\n\tsort.Sort(int64Slice(ids))\n\tidx := sort.Search(len(ids), func(i int) bool { return ids[i] >= id })\n\tend := true\n\tvar t []*Channel\n\tfor _, v := range ids[idx:] {\n\t\tif len(t) == maxResults {\n\t\t\tend = false\n\t\t\tbreak\n\t\t}\n\t\tif cn, ok := c.channels[v]; ok {\n\t\t\tt = append(t, cn)\n\t\t}\n\t}\n\treturn t, end\n}\n\nfunc (c *channelMap) getServers(id int64, maxResults int) ([]*Server, bool) {\n\tif maxResults <= 0 {\n\t\tmaxResults = EntriesPerPage\n\t}\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\tids := make([]int64, 0, len(c.servers))\n\tfor k := range c.servers {\n\t\tids = append(ids, k)\n\t}\n\tsort.Sort(int64Slice(ids))\n\tidx := sort.Search(len(ids), func(i int) bool { return ids[i] >= id })\n\tend := true\n\tvar s []*Server\n\tfor _, v := range ids[idx:] {\n\t\tif len(s) == maxResults {\n\t\t\tend = false\n\t\t\tbreak\n\t\t}\n\t\tif svr, ok := c.servers[v]; ok {\n\t\t\ts = append(s, svr)\n\t\t}\n\t}\n\treturn s, end\n}\n\nfunc (c *channelMap) getServerSockets(id int64, startID int64, maxResults int) ([]*Socket, bool) {\n\tif maxResults <= 0 {\n\t\tmaxResults = EntriesPerPage\n\t}\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\tsvr, ok := c.servers[id]\n\tif !ok {\n\t\t// server with id doesn't exist.\n\t\treturn nil, true\n\t}\n\tsvrskts := svr.sockets\n\tids := make([]int64, 0, len(svrskts))\n\tsks := make([]*Socket, 0, min(len(svrskts), maxResults))\n\tfor k := range svrskts {\n\t\tids = append(ids, k)\n\t}\n\tsort.Sort(int64Slice(ids))\n\tidx := sort.Search(len(ids), func(i int) bool { return ids[i] >= startID })\n\tend := true\n\tfor _, v := range ids[idx:] {\n\t\tif len(sks) == maxResults {\n\t\t\tend = false\n\t\t\tbreak\n\t\t}\n\t\tif ns, ok := c.sockets[v]; ok {\n\t\t\tsks = append(sks, ns)\n\t\t}\n\t}\n\treturn sks, end\n}\n\nfunc (c *channelMap) getChannel(id int64) *Channel {\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\treturn c.channels[id]\n}\n\nfunc (c *channelMap) getSubChannel(id int64) *SubChannel {\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\treturn c.subChannels[id]\n}\n\nfunc (c *channelMap) getSocket(id int64) *Socket {\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\treturn c.sockets[id]\n}\n\nfunc (c *channelMap) getServer(id int64) *Server {\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\treturn c.servers[id]\n}\n\ntype dummyEntry struct {\n\t// dummyEntry is a fake entry to handle entry not found case.\n\tidNotFound int64\n\tEntity\n}\n\nfunc (d *dummyEntry) String() string {\n\treturn fmt.Sprintf(\"non-existent entity #%d\", d.idNotFound)\n}\n\nfunc (d *dummyEntry) ID() int64 { return d.idNotFound }\n\nfunc (d *dummyEntry) addChild(id int64, e entry) {\n\t// Note: It is possible for a normal program to reach here under race\n\t// condition.  For example, there could be a race between ClientConn.Close()\n\t// info being propagated to addrConn and http2Client. ClientConn.Close()\n\t// cancel the context and result in http2Client to error. The error info is\n\t// then caught by transport monitor and before addrConn.tearDown() is called\n\t// in side ClientConn.Close(). Therefore, the addrConn will create a new\n\t// transport. And when registering the new transport in channelz, its parent\n\t// addrConn could have already been torn down and deleted from channelz\n\t// tracking, and thus reach the code here.\n\tlogger.Infof(\"attempt to add child of type %T with id %d to a parent (id=%d) that doesn't currently exist\", e, id, d.idNotFound)\n}\n\nfunc (d *dummyEntry) deleteChild(id int64) {\n\t// It is possible for a normal program to reach here under race condition.\n\t// Refer to the example described in addChild().\n\tlogger.Infof(\"attempt to delete child with id %d from a parent (id=%d) that doesn't currently exist\", id, d.idNotFound)\n}\n\nfunc (d *dummyEntry) triggerDelete() {\n\tlogger.Warningf(\"attempt to delete an entry (id=%d) that doesn't currently exist\", d.idNotFound)\n}\n\nfunc (*dummyEntry) deleteSelfIfReady() {\n\t// code should not reach here. deleteSelfIfReady is always called on an existing entry.\n}\n\nfunc (*dummyEntry) getParentID() int64 {\n\treturn 0\n}\n\n// Entity is implemented by all channelz types.\ntype Entity interface {\n\tisEntity()\n\tfmt.Stringer\n\tid() int64\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/funcs.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package channelz defines internal APIs for enabling channelz service, entry\n// registration/deletion, and accessing channelz data. It also defines channelz\n// metric struct formats.\npackage channelz\n\nimport (\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/internal\"\n)\n\nvar (\n\t// IDGen is the global channelz entity ID generator.  It should not be used\n\t// outside this package except by tests.\n\tIDGen IDGenerator\n\n\tdb = newChannelMap()\n\t// EntriesPerPage defines the number of channelz entries to be shown on a web page.\n\tEntriesPerPage = 50\n\tcurState       int32\n)\n\n// TurnOn turns on channelz data collection.\nfunc TurnOn() {\n\tatomic.StoreInt32(&curState, 1)\n}\n\nfunc init() {\n\tinternal.ChannelzTurnOffForTesting = func() {\n\t\tatomic.StoreInt32(&curState, 0)\n\t}\n}\n\n// IsOn returns whether channelz data collection is on.\nfunc IsOn() bool {\n\treturn atomic.LoadInt32(&curState) == 1\n}\n\n// GetTopChannels returns a slice of top channel's ChannelMetric, along with a\n// boolean indicating whether there's more top channels to be queried for.\n//\n// The arg id specifies that only top channel with id at or above it will be\n// included in the result. The returned slice is up to a length of the arg\n// maxResults or EntriesPerPage if maxResults is zero, and is sorted in ascending\n// id order.\nfunc GetTopChannels(id int64, maxResults int) ([]*Channel, bool) {\n\treturn db.getTopChannels(id, maxResults)\n}\n\n// GetServers returns a slice of server's ServerMetric, along with a\n// boolean indicating whether there's more servers to be queried for.\n//\n// The arg id specifies that only server with id at or above it will be included\n// in the result. The returned slice is up to a length of the arg maxResults or\n// EntriesPerPage if maxResults is zero, and is sorted in ascending id order.\nfunc GetServers(id int64, maxResults int) ([]*Server, bool) {\n\treturn db.getServers(id, maxResults)\n}\n\n// GetServerSockets returns a slice of server's (identified by id) normal socket's\n// SocketMetrics, along with a boolean indicating whether there's more sockets to\n// be queried for.\n//\n// The arg startID specifies that only sockets with id at or above it will be\n// included in the result. The returned slice is up to a length of the arg maxResults\n// or EntriesPerPage if maxResults is zero, and is sorted in ascending id order.\nfunc GetServerSockets(id int64, startID int64, maxResults int) ([]*Socket, bool) {\n\treturn db.getServerSockets(id, startID, maxResults)\n}\n\n// GetChannel returns the Channel for the channel (identified by id).\nfunc GetChannel(id int64) *Channel {\n\treturn db.getChannel(id)\n}\n\n// GetSubChannel returns the SubChannel for the subchannel (identified by id).\nfunc GetSubChannel(id int64) *SubChannel {\n\treturn db.getSubChannel(id)\n}\n\n// GetSocket returns the Socket for the socket (identified by id).\nfunc GetSocket(id int64) *Socket {\n\treturn db.getSocket(id)\n}\n\n// GetServer returns the ServerMetric for the server (identified by id).\nfunc GetServer(id int64) *Server {\n\treturn db.getServer(id)\n}\n\n// RegisterChannel registers the given channel c in the channelz database with\n// target as its target and reference name, and adds it to the child list of its\n// parent.  parent == nil means no parent.\n//\n// Returns a unique channelz identifier assigned to this channel.\n//\n// If channelz is not turned ON, the channelz database is not mutated.\nfunc RegisterChannel(parent *Channel, target string) *Channel {\n\tid := IDGen.genID()\n\n\tif !IsOn() {\n\t\treturn &Channel{ID: id}\n\t}\n\n\tisTopChannel := parent == nil\n\n\tcn := &Channel{\n\t\tID:          id,\n\t\tRefName:     target,\n\t\tnestedChans: make(map[int64]string),\n\t\tsubChans:    make(map[int64]string),\n\t\tParent:      parent,\n\t\ttrace:       &ChannelTrace{CreationTime: time.Now(), Events: make([]*traceEvent, 0, getMaxTraceEntry())},\n\t}\n\tcn.ChannelMetrics.Target.Store(&target)\n\tdb.addChannel(id, cn, isTopChannel, cn.getParentID())\n\treturn cn\n}\n\n// RegisterSubChannel registers the given subChannel c in the channelz database\n// with ref as its reference name, and adds it to the child list of its parent\n// (identified by pid).\n//\n// Returns a unique channelz identifier assigned to this subChannel.\n//\n// If channelz is not turned ON, the channelz database is not mutated.\nfunc RegisterSubChannel(parent *Channel, ref string) *SubChannel {\n\tid := IDGen.genID()\n\tsc := &SubChannel{\n\t\tID:      id,\n\t\tRefName: ref,\n\t\tparent:  parent,\n\t}\n\n\tif !IsOn() {\n\t\treturn sc\n\t}\n\n\tsc.sockets = make(map[int64]string)\n\tsc.trace = &ChannelTrace{CreationTime: time.Now(), Events: make([]*traceEvent, 0, getMaxTraceEntry())}\n\tdb.addSubChannel(id, sc, parent.ID)\n\treturn sc\n}\n\n// RegisterServer registers the given server s in channelz database. It returns\n// the unique channelz tracking id assigned to this server.\n//\n// If channelz is not turned ON, the channelz database is not mutated.\nfunc RegisterServer(ref string) *Server {\n\tid := IDGen.genID()\n\tif !IsOn() {\n\t\treturn &Server{ID: id}\n\t}\n\n\tsvr := &Server{\n\t\tRefName:       ref,\n\t\tsockets:       make(map[int64]string),\n\t\tlistenSockets: make(map[int64]string),\n\t\tID:            id,\n\t}\n\tdb.addServer(id, svr)\n\treturn svr\n}\n\n// RegisterSocket registers the given normal socket s in channelz database\n// with ref as its reference name, and adds it to the child list of its parent\n// (identified by skt.Parent, which must be set). It returns the unique channelz\n// tracking id assigned to this normal socket.\n//\n// If channelz is not turned ON, the channelz database is not mutated.\nfunc RegisterSocket(skt *Socket) *Socket {\n\tskt.ID = IDGen.genID()\n\tif IsOn() {\n\t\tdb.addSocket(skt)\n\t}\n\treturn skt\n}\n\n// RemoveEntry removes an entry with unique channelz tracking id to be id from\n// channelz database.\n//\n// If channelz is not turned ON, this function is a no-op.\nfunc RemoveEntry(id int64) {\n\tif !IsOn() {\n\t\treturn\n\t}\n\tdb.removeEntry(id)\n}\n\n// IDGenerator is an incrementing atomic that tracks IDs for channelz entities.\ntype IDGenerator struct {\n\tid int64\n}\n\n// Reset resets the generated ID back to zero.  Should only be used at\n// initialization or by tests sensitive to the ID number.\nfunc (i *IDGenerator) Reset() {\n\tatomic.StoreInt64(&i.id, 0)\n}\n\nfunc (i *IDGenerator) genID() int64 {\n\treturn atomic.AddInt64(&i.id, 1)\n}\n\n// Identifier is an opaque channelz identifier used to expose channelz symbols\n// outside of grpc.  Currently only implemented by Channel since no other\n// types require exposure outside grpc.\ntype Identifier interface {\n\tEntity\n\tchannelzIdentifier()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/logging.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nvar logger = grpclog.Component(\"channelz\")\n\n// Info logs and adds a trace event if channelz is on.\nfunc Info(l grpclog.DepthLoggerV2, e Entity, args ...any) {\n\tAddTraceEvent(l, e, 1, &TraceEvent{\n\t\tDesc:     fmt.Sprint(args...),\n\t\tSeverity: CtInfo,\n\t})\n}\n\n// Infof logs and adds a trace event if channelz is on.\nfunc Infof(l grpclog.DepthLoggerV2, e Entity, format string, args ...any) {\n\tAddTraceEvent(l, e, 1, &TraceEvent{\n\t\tDesc:     fmt.Sprintf(format, args...),\n\t\tSeverity: CtInfo,\n\t})\n}\n\n// Warning logs and adds a trace event if channelz is on.\nfunc Warning(l grpclog.DepthLoggerV2, e Entity, args ...any) {\n\tAddTraceEvent(l, e, 1, &TraceEvent{\n\t\tDesc:     fmt.Sprint(args...),\n\t\tSeverity: CtWarning,\n\t})\n}\n\n// Warningf logs and adds a trace event if channelz is on.\nfunc Warningf(l grpclog.DepthLoggerV2, e Entity, format string, args ...any) {\n\tAddTraceEvent(l, e, 1, &TraceEvent{\n\t\tDesc:     fmt.Sprintf(format, args...),\n\t\tSeverity: CtWarning,\n\t})\n}\n\n// Error logs and adds a trace event if channelz is on.\nfunc Error(l grpclog.DepthLoggerV2, e Entity, args ...any) {\n\tAddTraceEvent(l, e, 1, &TraceEvent{\n\t\tDesc:     fmt.Sprint(args...),\n\t\tSeverity: CtError,\n\t})\n}\n\n// Errorf logs and adds a trace event if channelz is on.\nfunc Errorf(l grpclog.DepthLoggerV2, e Entity, format string, args ...any) {\n\tAddTraceEvent(l, e, 1, &TraceEvent{\n\t\tDesc:     fmt.Sprintf(format, args...),\n\t\tSeverity: CtError,\n\t})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/server.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport (\n\t\"fmt\"\n\t\"sync/atomic\"\n)\n\n// Server is the channelz representation of a server.\ntype Server struct {\n\tEntity\n\tID      int64\n\tRefName string\n\n\tServerMetrics ServerMetrics\n\n\tcloseCalled   bool\n\tsockets       map[int64]string\n\tlistenSockets map[int64]string\n\tcm            *channelMap\n}\n\n// ServerMetrics defines a struct containing metrics for servers.\ntype ServerMetrics struct {\n\t// The number of incoming calls started on the server.\n\tCallsStarted atomic.Int64\n\t// The number of incoming calls that have completed with an OK status.\n\tCallsSucceeded atomic.Int64\n\t// The number of incoming calls that have a completed with a non-OK status.\n\tCallsFailed atomic.Int64\n\t// The last time a call was started on the server.\n\tLastCallStartedTimestamp atomic.Int64\n}\n\n// NewServerMetricsForTesting returns an initialized ServerMetrics.\nfunc NewServerMetricsForTesting(started, succeeded, failed, timestamp int64) *ServerMetrics {\n\tsm := &ServerMetrics{}\n\tsm.CallsStarted.Store(started)\n\tsm.CallsSucceeded.Store(succeeded)\n\tsm.CallsFailed.Store(failed)\n\tsm.LastCallStartedTimestamp.Store(timestamp)\n\treturn sm\n}\n\n// CopyFrom copies the metrics data from the provided ServerMetrics\n// instance into the current instance.\nfunc (sm *ServerMetrics) CopyFrom(o *ServerMetrics) {\n\tsm.CallsStarted.Store(o.CallsStarted.Load())\n\tsm.CallsSucceeded.Store(o.CallsSucceeded.Load())\n\tsm.CallsFailed.Store(o.CallsFailed.Load())\n\tsm.LastCallStartedTimestamp.Store(o.LastCallStartedTimestamp.Load())\n}\n\n// ListenSockets returns the listening sockets for s.\nfunc (s *Server) ListenSockets() map[int64]string {\n\tdb.mu.RLock()\n\tdefer db.mu.RUnlock()\n\treturn copyMap(s.listenSockets)\n}\n\n// String returns a printable description of s.\nfunc (s *Server) String() string {\n\treturn fmt.Sprintf(\"Server #%d\", s.ID)\n}\n\nfunc (s *Server) id() int64 {\n\treturn s.ID\n}\n\nfunc (s *Server) addChild(id int64, e entry) {\n\tswitch v := e.(type) {\n\tcase *Socket:\n\t\tswitch v.SocketType {\n\t\tcase SocketTypeNormal:\n\t\t\ts.sockets[id] = v.RefName\n\t\tcase SocketTypeListen:\n\t\t\ts.listenSockets[id] = v.RefName\n\t\t}\n\tdefault:\n\t\tlogger.Errorf(\"cannot add a child (id = %d) of type %T to a server\", id, e)\n\t}\n}\n\nfunc (s *Server) deleteChild(id int64) {\n\tdelete(s.sockets, id)\n\tdelete(s.listenSockets, id)\n\ts.deleteSelfIfReady()\n}\n\nfunc (s *Server) triggerDelete() {\n\ts.closeCalled = true\n\ts.deleteSelfIfReady()\n}\n\nfunc (s *Server) deleteSelfIfReady() {\n\tif !s.closeCalled || len(s.sockets)+len(s.listenSockets) != 0 {\n\t\treturn\n\t}\n\ts.cm.deleteEntry(s.ID)\n}\n\nfunc (s *Server) getParentID() int64 {\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/socket.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/grpc/credentials\"\n)\n\n// SocketMetrics defines the struct that the implementor of Socket interface\n// should return from ChannelzMetric().\ntype SocketMetrics struct {\n\t// The number of streams that have been started.\n\tStreamsStarted atomic.Int64\n\t// The number of streams that have ended successfully:\n\t// On client side, receiving frame with eos bit set.\n\t// On server side, sending frame with eos bit set.\n\tStreamsSucceeded atomic.Int64\n\t// The number of streams that have ended unsuccessfully:\n\t// On client side, termination without receiving frame with eos bit set.\n\t// On server side, termination without sending frame with eos bit set.\n\tStreamsFailed atomic.Int64\n\t// The number of messages successfully sent on this socket.\n\tMessagesSent     atomic.Int64\n\tMessagesReceived atomic.Int64\n\t// The number of keep alives sent.  This is typically implemented with HTTP/2\n\t// ping messages.\n\tKeepAlivesSent atomic.Int64\n\t// The last time a stream was created by this endpoint.  Usually unset for\n\t// servers.\n\tLastLocalStreamCreatedTimestamp atomic.Int64\n\t// The last time a stream was created by the remote endpoint.  Usually unset\n\t// for clients.\n\tLastRemoteStreamCreatedTimestamp atomic.Int64\n\t// The last time a message was sent by this endpoint.\n\tLastMessageSentTimestamp atomic.Int64\n\t// The last time a message was received by this endpoint.\n\tLastMessageReceivedTimestamp atomic.Int64\n}\n\n// EphemeralSocketMetrics are metrics that change rapidly and are tracked\n// outside of channelz.\ntype EphemeralSocketMetrics struct {\n\t// The amount of window, granted to the local endpoint by the remote endpoint.\n\t// This may be slightly out of date due to network latency.  This does NOT\n\t// include stream level or TCP level flow control info.\n\tLocalFlowControlWindow int64\n\t// The amount of window, granted to the remote endpoint by the local endpoint.\n\t// This may be slightly out of date due to network latency.  This does NOT\n\t// include stream level or TCP level flow control info.\n\tRemoteFlowControlWindow int64\n}\n\n// SocketType represents the type of socket.\ntype SocketType string\n\n// SocketType can be one of these.\nconst (\n\tSocketTypeNormal = \"NormalSocket\"\n\tSocketTypeListen = \"ListenSocket\"\n)\n\n// Socket represents a socket within channelz which includes socket\n// metrics and data related to socket activity and provides methods\n// for managing and interacting with sockets.\ntype Socket struct {\n\tEntity\n\tSocketType       SocketType\n\tID               int64\n\tParent           Entity\n\tcm               *channelMap\n\tSocketMetrics    SocketMetrics\n\tEphemeralMetrics func() *EphemeralSocketMetrics\n\n\tRefName string\n\t// The locally bound address.  Immutable.\n\tLocalAddr net.Addr\n\t// The remote bound address.  May be absent.  Immutable.\n\tRemoteAddr net.Addr\n\t// Optional, represents the name of the remote endpoint, if different than\n\t// the original target name.  Immutable.\n\tRemoteName string\n\t// Immutable.\n\tSocketOptions *SocketOptionData\n\t// Immutable.\n\tSecurity credentials.ChannelzSecurityValue\n}\n\n// String returns a string representation of the Socket, including its parent\n// entity, socket type, and ID.\nfunc (ls *Socket) String() string {\n\treturn fmt.Sprintf(\"%s %s #%d\", ls.Parent, ls.SocketType, ls.ID)\n}\n\nfunc (ls *Socket) id() int64 {\n\treturn ls.ID\n}\n\nfunc (ls *Socket) addChild(id int64, e entry) {\n\tlogger.Errorf(\"cannot add a child (id = %d) of type %T to a listen socket\", id, e)\n}\n\nfunc (ls *Socket) deleteChild(id int64) {\n\tlogger.Errorf(\"cannot delete a child (id = %d) from a listen socket\", id)\n}\n\nfunc (ls *Socket) triggerDelete() {\n\tls.cm.deleteEntry(ls.ID)\n\tls.Parent.(entry).deleteChild(ls.ID)\n}\n\nfunc (ls *Socket) deleteSelfIfReady() {\n\tlogger.Errorf(\"cannot call deleteSelfIfReady on a listen socket\")\n}\n\nfunc (ls *Socket) getParentID() int64 {\n\treturn ls.Parent.id()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/subchannel.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport (\n\t\"fmt\"\n\t\"sync/atomic\"\n)\n\n// SubChannel is the channelz representation of a subchannel.\ntype SubChannel struct {\n\tEntity\n\t// ID is the channelz id of this subchannel.\n\tID int64\n\t// RefName is the human readable reference string of this subchannel.\n\tRefName       string\n\tcloseCalled   bool\n\tsockets       map[int64]string\n\tparent        *Channel\n\ttrace         *ChannelTrace\n\ttraceRefCount int32\n\n\tChannelMetrics ChannelMetrics\n}\n\nfunc (sc *SubChannel) String() string {\n\treturn fmt.Sprintf(\"%s SubChannel #%d\", sc.parent, sc.ID)\n}\n\nfunc (sc *SubChannel) id() int64 {\n\treturn sc.ID\n}\n\n// Sockets returns a copy of the sockets map associated with the SubChannel.\nfunc (sc *SubChannel) Sockets() map[int64]string {\n\tdb.mu.RLock()\n\tdefer db.mu.RUnlock()\n\treturn copyMap(sc.sockets)\n}\n\n// Trace returns a copy of the ChannelTrace associated with the SubChannel.\nfunc (sc *SubChannel) Trace() *ChannelTrace {\n\tdb.mu.RLock()\n\tdefer db.mu.RUnlock()\n\treturn sc.trace.copy()\n}\n\nfunc (sc *SubChannel) addChild(id int64, e entry) {\n\tif v, ok := e.(*Socket); ok && v.SocketType == SocketTypeNormal {\n\t\tsc.sockets[id] = v.RefName\n\t} else {\n\t\tlogger.Errorf(\"cannot add a child (id = %d) of type %T to a subChannel\", id, e)\n\t}\n}\n\nfunc (sc *SubChannel) deleteChild(id int64) {\n\tdelete(sc.sockets, id)\n\tsc.deleteSelfIfReady()\n}\n\nfunc (sc *SubChannel) triggerDelete() {\n\tsc.closeCalled = true\n\tsc.deleteSelfIfReady()\n}\n\nfunc (sc *SubChannel) getParentID() int64 {\n\treturn sc.parent.ID\n}\n\n// deleteSelfFromTree tries to delete the subchannel from the channelz entry relation tree, which\n// means deleting the subchannel reference from its parent's child list.\n//\n// In order for a subchannel to be deleted from the tree, it must meet the criteria that, removal of\n// the corresponding grpc object has been invoked, and the subchannel does not have any children left.\n//\n// The returned boolean value indicates whether the channel has been successfully deleted from tree.\nfunc (sc *SubChannel) deleteSelfFromTree() (deleted bool) {\n\tif !sc.closeCalled || len(sc.sockets) != 0 {\n\t\treturn false\n\t}\n\tsc.parent.deleteChild(sc.ID)\n\treturn true\n}\n\n// deleteSelfFromMap checks whether it is valid to delete the subchannel from the map, which means\n// deleting the subchannel from channelz's tracking entirely. Users can no longer use id to query\n// the subchannel, and its memory will be garbage collected.\n//\n// The trace reference count of the subchannel must be 0 in order to be deleted from the map. This is\n// specified in the channel tracing gRFC that as long as some other trace has reference to an entity,\n// the trace of the referenced entity must not be deleted. In order to release the resource allocated\n// by grpc, the reference to the grpc object is reset to a dummy object.\n//\n// deleteSelfFromMap must be called after deleteSelfFromTree returns true.\n//\n// It returns a bool to indicate whether the channel can be safely deleted from map.\nfunc (sc *SubChannel) deleteSelfFromMap() (delete bool) {\n\treturn sc.getTraceRefCount() == 0\n}\n\n// deleteSelfIfReady tries to delete the subchannel itself from the channelz database.\n// The delete process includes two steps:\n//  1. delete the subchannel from the entry relation tree, i.e. delete the subchannel reference from\n//     its parent's child list.\n//  2. delete the subchannel from the map, i.e. delete the subchannel entirely from channelz. Lookup\n//     by id will return entry not found error.\nfunc (sc *SubChannel) deleteSelfIfReady() {\n\tif !sc.deleteSelfFromTree() {\n\t\treturn\n\t}\n\tif !sc.deleteSelfFromMap() {\n\t\treturn\n\t}\n\tdb.deleteEntry(sc.ID)\n\tsc.trace.clear()\n}\n\nfunc (sc *SubChannel) getChannelTrace() *ChannelTrace {\n\treturn sc.trace\n}\n\nfunc (sc *SubChannel) incrTraceRefCount() {\n\tatomic.AddInt32(&sc.traceRefCount, 1)\n}\n\nfunc (sc *SubChannel) decrTraceRefCount() {\n\tatomic.AddInt32(&sc.traceRefCount, -1)\n}\n\nfunc (sc *SubChannel) getTraceRefCount() int {\n\ti := atomic.LoadInt32(&sc.traceRefCount)\n\treturn int(i)\n}\n\nfunc (sc *SubChannel) getRefName() string {\n\treturn sc.RefName\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/syscall_linux.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport (\n\t\"syscall\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// SocketOptionData defines the struct to hold socket option data, and related\n// getter function to obtain info from fd.\ntype SocketOptionData struct {\n\tLinger      *unix.Linger\n\tRecvTimeout *unix.Timeval\n\tSendTimeout *unix.Timeval\n\tTCPInfo     *unix.TCPInfo\n}\n\n// Getsockopt defines the function to get socket options requested by channelz.\n// It is to be passed to syscall.RawConn.Control().\nfunc (s *SocketOptionData) Getsockopt(fd uintptr) {\n\tif v, err := unix.GetsockoptLinger(int(fd), syscall.SOL_SOCKET, syscall.SO_LINGER); err == nil {\n\t\ts.Linger = v\n\t}\n\tif v, err := unix.GetsockoptTimeval(int(fd), syscall.SOL_SOCKET, syscall.SO_RCVTIMEO); err == nil {\n\t\ts.RecvTimeout = v\n\t}\n\tif v, err := unix.GetsockoptTimeval(int(fd), syscall.SOL_SOCKET, syscall.SO_SNDTIMEO); err == nil {\n\t\ts.SendTimeout = v\n\t}\n\tif v, err := unix.GetsockoptTCPInfo(int(fd), syscall.SOL_TCP, syscall.TCP_INFO); err == nil {\n\t\ts.TCPInfo = v\n\t}\n}\n\n// GetSocketOption gets the socket option info of the conn.\nfunc GetSocketOption(socket any) *SocketOptionData {\n\tc, ok := socket.(syscall.Conn)\n\tif !ok {\n\t\treturn nil\n\t}\n\tdata := &SocketOptionData{}\n\tif rawConn, err := c.SyscallConn(); err == nil {\n\t\trawConn.Control(data.Getsockopt)\n\t\treturn data\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/syscall_nonlinux.go",
    "content": "//go:build !linux\n\n/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport (\n\t\"sync\"\n)\n\nvar once sync.Once\n\n// SocketOptionData defines the struct to hold socket option data, and related\n// getter function to obtain info from fd.\n// Windows OS doesn't support Socket Option\ntype SocketOptionData struct {\n}\n\n// Getsockopt defines the function to get socket options requested by channelz.\n// It is to be passed to syscall.RawConn.Control().\n// Windows OS doesn't support Socket Option\nfunc (s *SocketOptionData) Getsockopt(uintptr) {\n\tonce.Do(func() {\n\t\tlogger.Warning(\"Channelz: socket options are not supported on non-linux environments\")\n\t})\n}\n\n// GetSocketOption gets the socket option info of the conn.\nfunc GetSocketOption(any) *SocketOptionData {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/trace.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nconst (\n\tdefaultMaxTraceEntry int32 = 30\n)\n\nvar maxTraceEntry = defaultMaxTraceEntry\n\n// SetMaxTraceEntry sets maximum number of trace entries per entity (i.e.\n// channel/subchannel).  Setting it to 0 will disable channel tracing.\nfunc SetMaxTraceEntry(i int32) {\n\tatomic.StoreInt32(&maxTraceEntry, i)\n}\n\n// ResetMaxTraceEntryToDefault resets the maximum number of trace entries per\n// entity to default.\nfunc ResetMaxTraceEntryToDefault() {\n\tatomic.StoreInt32(&maxTraceEntry, defaultMaxTraceEntry)\n}\n\nfunc getMaxTraceEntry() int {\n\ti := atomic.LoadInt32(&maxTraceEntry)\n\treturn int(i)\n}\n\n// traceEvent is an internal representation of a single trace event\ntype traceEvent struct {\n\t// Desc is a simple description of the trace event.\n\tDesc string\n\t// Severity states the severity of this trace event.\n\tSeverity Severity\n\t// Timestamp is the event time.\n\tTimestamp time.Time\n\t// RefID is the id of the entity that gets referenced in the event. RefID is 0 if no other entity is\n\t// involved in this event.\n\t// e.g. SubChannel (id: 4[]) Created. --> RefID = 4, RefName = \"\" (inside [])\n\tRefID int64\n\t// RefName is the reference name for the entity that gets referenced in the event.\n\tRefName string\n\t// RefType indicates the referenced entity type, i.e Channel or SubChannel.\n\tRefType RefChannelType\n}\n\n// TraceEvent is what the caller of AddTraceEvent should provide to describe the\n// event to be added to the channel trace.\n//\n// The Parent field is optional. It is used for an event that will be recorded\n// in the entity's parent trace.\ntype TraceEvent struct {\n\tDesc     string\n\tSeverity Severity\n\tParent   *TraceEvent\n}\n\n// ChannelTrace provides tracing information for a channel.\n// It tracks various events and metadata related to the channel's lifecycle\n// and operations.\ntype ChannelTrace struct {\n\tcm          *channelMap\n\tclearCalled bool\n\t// The time when the trace was created.\n\tCreationTime time.Time\n\t// A counter for the number of events recorded in the\n\t// trace.\n\tEventNum int64\n\tmu       sync.Mutex\n\t// A slice of traceEvent pointers representing the events recorded for\n\t// this channel.\n\tEvents []*traceEvent\n}\n\nfunc (c *ChannelTrace) copy() *ChannelTrace {\n\treturn &ChannelTrace{\n\t\tCreationTime: c.CreationTime,\n\t\tEventNum:     c.EventNum,\n\t\tEvents:       append(([]*traceEvent)(nil), c.Events...),\n\t}\n}\n\nfunc (c *ChannelTrace) append(e *traceEvent) {\n\tc.mu.Lock()\n\tif len(c.Events) == getMaxTraceEntry() {\n\t\tdel := c.Events[0]\n\t\tc.Events = c.Events[1:]\n\t\tif del.RefID != 0 {\n\t\t\t// start recursive cleanup in a goroutine to not block the call originated from grpc.\n\t\t\tgo func() {\n\t\t\t\t// need to acquire c.cm.mu lock to call the unlocked attemptCleanup func.\n\t\t\t\tc.cm.mu.Lock()\n\t\t\t\tc.cm.decrTraceRefCount(del.RefID)\n\t\t\t\tc.cm.mu.Unlock()\n\t\t\t}()\n\t\t}\n\t}\n\te.Timestamp = time.Now()\n\tc.Events = append(c.Events, e)\n\tc.EventNum++\n\tc.mu.Unlock()\n}\n\nfunc (c *ChannelTrace) clear() {\n\tif c.clearCalled {\n\t\treturn\n\t}\n\tc.clearCalled = true\n\tc.mu.Lock()\n\tfor _, e := range c.Events {\n\t\tif e.RefID != 0 {\n\t\t\t// caller should have already held the c.cm.mu lock.\n\t\t\tc.cm.decrTraceRefCount(e.RefID)\n\t\t}\n\t}\n\tc.mu.Unlock()\n}\n\n// Severity is the severity level of a trace event.\n// The canonical enumeration of all valid values is here:\n// https://github.com/grpc/grpc-proto/blob/9b13d199cc0d4703c7ea26c9c330ba695866eb23/grpc/channelz/v1/channelz.proto#L126.\ntype Severity int\n\nconst (\n\t// CtUnknown indicates unknown severity of a trace event.\n\tCtUnknown Severity = iota\n\t// CtInfo indicates info level severity of a trace event.\n\tCtInfo\n\t// CtWarning indicates warning level severity of a trace event.\n\tCtWarning\n\t// CtError indicates error level severity of a trace event.\n\tCtError\n)\n\n// RefChannelType is the type of the entity being referenced in a trace event.\ntype RefChannelType int\n\nconst (\n\t// RefUnknown indicates an unknown entity type, the zero value for this type.\n\tRefUnknown RefChannelType = iota\n\t// RefChannel indicates the referenced entity is a Channel.\n\tRefChannel\n\t// RefSubChannel indicates the referenced entity is a SubChannel.\n\tRefSubChannel\n\t// RefServer indicates the referenced entity is a Server.\n\tRefServer\n\t// RefListenSocket indicates the referenced entity is a ListenSocket.\n\tRefListenSocket\n\t// RefNormalSocket indicates the referenced entity is a NormalSocket.\n\tRefNormalSocket\n)\n\nvar refChannelTypeToString = map[RefChannelType]string{\n\tRefUnknown:      \"Unknown\",\n\tRefChannel:      \"Channel\",\n\tRefSubChannel:   \"SubChannel\",\n\tRefServer:       \"Server\",\n\tRefListenSocket: \"ListenSocket\",\n\tRefNormalSocket: \"NormalSocket\",\n}\n\n// String returns a string representation of the RefChannelType\nfunc (r RefChannelType) String() string {\n\treturn refChannelTypeToString[r]\n}\n\n// AddTraceEvent adds trace related to the entity with specified id, using the\n// provided TraceEventDesc.\n//\n// If channelz is not turned ON, this will simply log the event descriptions.\nfunc AddTraceEvent(l grpclog.DepthLoggerV2, e Entity, depth int, desc *TraceEvent) {\n\t// Log only the trace description associated with the bottom most entity.\n\td := fmt.Sprintf(\"[%s] %s\", e, desc.Desc)\n\tswitch desc.Severity {\n\tcase CtUnknown, CtInfo:\n\t\tl.InfoDepth(depth+1, d)\n\tcase CtWarning:\n\t\tl.WarningDepth(depth+1, d)\n\tcase CtError:\n\t\tl.ErrorDepth(depth+1, d)\n\t}\n\n\tif getMaxTraceEntry() == 0 {\n\t\treturn\n\t}\n\tif IsOn() {\n\t\tdb.traceEvent(e.id(), desc)\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/credentials/credentials.go",
    "content": "/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage credentials\n\nimport (\n\t\"context\"\n)\n\n// clientHandshakeInfoKey is a struct used as the key to store\n// ClientHandshakeInfo in a context.\ntype clientHandshakeInfoKey struct{}\n\n// ClientHandshakeInfoFromContext extracts the ClientHandshakeInfo from ctx.\nfunc ClientHandshakeInfoFromContext(ctx context.Context) any {\n\treturn ctx.Value(clientHandshakeInfoKey{})\n}\n\n// NewClientHandshakeInfoContext creates a context with chi.\nfunc NewClientHandshakeInfoContext(ctx context.Context, chi any) context.Context {\n\treturn context.WithValue(ctx, clientHandshakeInfoKey{}, chi)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/credentials/spiffe.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package credentials defines APIs for parsing SPIFFE ID.\n//\n// All APIs in this package are experimental.\npackage credentials\n\nimport (\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"net/url\"\n\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nvar logger = grpclog.Component(\"credentials\")\n\n// SPIFFEIDFromState parses the SPIFFE ID from State. If the SPIFFE ID format\n// is invalid, return nil with warning.\nfunc SPIFFEIDFromState(state tls.ConnectionState) *url.URL {\n\tif len(state.PeerCertificates) == 0 || len(state.PeerCertificates[0].URIs) == 0 {\n\t\treturn nil\n\t}\n\treturn SPIFFEIDFromCert(state.PeerCertificates[0])\n}\n\n// SPIFFEIDFromCert parses the SPIFFE ID from x509.Certificate. If the SPIFFE\n// ID format is invalid, return nil with warning.\nfunc SPIFFEIDFromCert(cert *x509.Certificate) *url.URL {\n\tif cert == nil || cert.URIs == nil {\n\t\treturn nil\n\t}\n\tvar spiffeID *url.URL\n\tfor _, uri := range cert.URIs {\n\t\tif uri == nil || uri.Scheme != \"spiffe\" || uri.Opaque != \"\" || (uri.User != nil && uri.User.Username() != \"\") {\n\t\t\tcontinue\n\t\t}\n\t\t// From this point, we assume the uri is intended for a SPIFFE ID.\n\t\tif len(uri.String()) > 2048 {\n\t\t\tlogger.Warning(\"invalid SPIFFE ID: total ID length larger than 2048 bytes\")\n\t\t\treturn nil\n\t\t}\n\t\tif len(uri.Host) == 0 || len(uri.Path) == 0 {\n\t\t\tlogger.Warning(\"invalid SPIFFE ID: domain or workload ID is empty\")\n\t\t\treturn nil\n\t\t}\n\t\tif len(uri.Host) > 255 {\n\t\t\tlogger.Warning(\"invalid SPIFFE ID: domain length larger than 255 characters\")\n\t\t\treturn nil\n\t\t}\n\t\t// A valid SPIFFE certificate can only have exactly one URI SAN field.\n\t\tif len(cert.URIs) > 1 {\n\t\t\tlogger.Warning(\"invalid SPIFFE ID: multiple URI SANs\")\n\t\t\treturn nil\n\t\t}\n\t\tspiffeID = uri\n\t}\n\treturn spiffeID\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/credentials/syscallconn.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage credentials\n\nimport (\n\t\"net\"\n\t\"syscall\"\n)\n\ntype sysConn = syscall.Conn\n\n// syscallConn keeps reference of rawConn to support syscall.Conn for channelz.\n// SyscallConn() (the method in interface syscall.Conn) is explicitly\n// implemented on this type,\n//\n// Interface syscall.Conn is implemented by most net.Conn implementations (e.g.\n// TCPConn, UnixConn), but is not part of net.Conn interface. So wrapper conns\n// that embed net.Conn don't implement syscall.Conn. (Side note: tls.Conn\n// doesn't embed net.Conn, so even if syscall.Conn is part of net.Conn, it won't\n// help here).\ntype syscallConn struct {\n\tnet.Conn\n\t// sysConn is a type alias of syscall.Conn. It's necessary because the name\n\t// `Conn` collides with `net.Conn`.\n\tsysConn\n}\n\n// WrapSyscallConn tries to wrap rawConn and newConn into a net.Conn that\n// implements syscall.Conn. rawConn will be used to support syscall, and newConn\n// will be used for read/write.\n//\n// This function returns newConn if rawConn doesn't implement syscall.Conn.\nfunc WrapSyscallConn(rawConn, newConn net.Conn) net.Conn {\n\tsysConn, ok := rawConn.(syscall.Conn)\n\tif !ok {\n\t\treturn newConn\n\t}\n\treturn &syscallConn{\n\t\tConn:    newConn,\n\t\tsysConn: sysConn,\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/credentials/util.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage credentials\n\nimport (\n\t\"crypto/tls\"\n)\n\nconst alpnProtoStrH2 = \"h2\"\n\n// AppendH2ToNextProtos appends h2 to next protos.\nfunc AppendH2ToNextProtos(ps []string) []string {\n\tfor _, p := range ps {\n\t\tif p == alpnProtoStrH2 {\n\t\t\treturn ps\n\t\t}\n\t}\n\tret := make([]string, 0, len(ps)+1)\n\tret = append(ret, ps...)\n\treturn append(ret, alpnProtoStrH2)\n}\n\n// CloneTLSConfig returns a shallow clone of the exported\n// fields of cfg, ignoring the unexported sync.Once, which\n// contains a mutex and must not be copied.\n//\n// If cfg is nil, a new zero tls.Config is returned.\n//\n// TODO: inline this function if possible.\nfunc CloneTLSConfig(cfg *tls.Config) *tls.Config {\n\tif cfg == nil {\n\t\treturn &tls.Config{}\n\t}\n\n\treturn cfg.Clone()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/envconfig/envconfig.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package envconfig contains grpc settings configured by environment variables.\npackage envconfig\n\nimport (\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nvar (\n\t// EnableTXTServiceConfig is set if the DNS resolver should perform TXT\n\t// lookups for service config (\"GRPC_ENABLE_TXT_SERVICE_CONFIG\" is not\n\t// \"false\").\n\tEnableTXTServiceConfig = boolFromEnv(\"GRPC_ENABLE_TXT_SERVICE_CONFIG\", true)\n\n\t// TXTErrIgnore is set if TXT errors should be ignored\n\t// (\"GRPC_GO_IGNORE_TXT_ERRORS\" is not \"false\").\n\tTXTErrIgnore = boolFromEnv(\"GRPC_GO_IGNORE_TXT_ERRORS\", true)\n\n\t// RingHashCap indicates the maximum ring size which defaults to 4096\n\t// entries but may be overridden by setting the environment variable\n\t// \"GRPC_RING_HASH_CAP\".  This does not override the default bounds\n\t// checking which NACKs configs specifying ring sizes > 8*1024*1024 (~8M).\n\tRingHashCap = uint64FromEnv(\"GRPC_RING_HASH_CAP\", 4096, 1, 8*1024*1024)\n\n\t// ALTSMaxConcurrentHandshakes is the maximum number of concurrent ALTS\n\t// handshakes that can be performed.\n\tALTSMaxConcurrentHandshakes = uint64FromEnv(\"GRPC_ALTS_MAX_CONCURRENT_HANDSHAKES\", 100, 1, 100)\n\n\t// EnforceALPNEnabled is set if TLS connections to servers with ALPN disabled\n\t// should be rejected. The HTTP/2 protocol requires ALPN to be enabled, this\n\t// option is present for backward compatibility. This option may be overridden\n\t// by setting the environment variable \"GRPC_ENFORCE_ALPN_ENABLED\" to \"true\"\n\t// or \"false\".\n\tEnforceALPNEnabled = boolFromEnv(\"GRPC_ENFORCE_ALPN_ENABLED\", true)\n\n\t// XDSEndpointHashKeyBackwardCompat controls the parsing of the endpoint hash\n\t// key from EDS LbEndpoint metadata. Endpoint hash keys can be disabled by\n\t// setting \"GRPC_XDS_ENDPOINT_HASH_KEY_BACKWARD_COMPAT\" to \"true\". A future\n\t// release will remove this environment variable, enabling the new behavior\n\t// unconditionally.\n\tXDSEndpointHashKeyBackwardCompat = boolFromEnv(\"GRPC_XDS_ENDPOINT_HASH_KEY_BACKWARD_COMPAT\", false)\n\n\t// RingHashSetRequestHashKey is set if the ring hash balancer can get the\n\t// request hash header by setting the \"requestHashHeader\" field, according\n\t// to gRFC A76. It can be disabled by setting the environment variable\n\t// \"GRPC_EXPERIMENTAL_RING_HASH_SET_REQUEST_HASH_KEY\" to \"false\".\n\tRingHashSetRequestHashKey = boolFromEnv(\"GRPC_EXPERIMENTAL_RING_HASH_SET_REQUEST_HASH_KEY\", true)\n\n\t// ALTSHandshakerKeepaliveParams is set if we should add the\n\t// KeepaliveParams when dial the ALTS handshaker service.\n\tALTSHandshakerKeepaliveParams = boolFromEnv(\"GRPC_EXPERIMENTAL_ALTS_HANDSHAKER_KEEPALIVE_PARAMS\", false)\n\n\t// EnableDefaultPortForProxyTarget controls whether the resolver adds a default port 443\n\t// to a target address that lacks one. This flag only has an effect when all of\n\t// the following conditions are met:\n\t//   - A connect proxy is being used.\n\t//   - Target resolution is disabled.\n\t//   - The DNS resolver is being used.\n\tEnableDefaultPortForProxyTarget = boolFromEnv(\"GRPC_EXPERIMENTAL_ENABLE_DEFAULT_PORT_FOR_PROXY_TARGET\", true)\n\n\t// CaseSensitiveBalancerRegistries is set if the balancer registry should be\n\t// case-sensitive. This is disabled by default, but can be enabled by setting\n\t// the env variable \"GRPC_GO_EXPERIMENTAL_CASE_SENSITIVE_BALANCER_REGISTRIES\"\n\t// to \"true\".\n\t//\n\t// TODO: After 2 releases, we will enable the env var by default.\n\tCaseSensitiveBalancerRegistries = boolFromEnv(\"GRPC_GO_EXPERIMENTAL_CASE_SENSITIVE_BALANCER_REGISTRIES\", false)\n\n\t// XDSAuthorityRewrite indicates whether xDS authority rewriting is enabled.\n\t// This feature is defined in gRFC A81 and is enabled by setting the\n\t// environment variable GRPC_EXPERIMENTAL_XDS_AUTHORITY_REWRITE to \"true\".\n\tXDSAuthorityRewrite = boolFromEnv(\"GRPC_EXPERIMENTAL_XDS_AUTHORITY_REWRITE\", false)\n\n\t// PickFirstWeightedShuffling indicates whether weighted endpoint shuffling\n\t// is enabled in the pick_first LB policy, as defined in gRFC A113. This\n\t// feature can be disabled by setting the environment variable\n\t// GRPC_EXPERIMENTAL_PF_WEIGHTED_SHUFFLING to \"false\".\n\tPickFirstWeightedShuffling = boolFromEnv(\"GRPC_EXPERIMENTAL_PF_WEIGHTED_SHUFFLING\", true)\n\n\t// XDSRecoverPanicInResourceParsing indicates whether the xdsclient should\n\t// recover from panics while parsing xDS resources.\n\t//\n\t// This feature can be disabled (e.g. for fuzz testing) by setting the\n\t// environment variable \"GRPC_GO_EXPERIMENTAL_XDS_RESOURCE_PANIC_RECOVERY\"\n\t// to \"false\".\n\tXDSRecoverPanicInResourceParsing = boolFromEnv(\"GRPC_GO_EXPERIMENTAL_XDS_RESOURCE_PANIC_RECOVERY\", true)\n\n\t// DisableStrictPathChecking indicates whether strict path checking is\n\t// disabled. This feature can be disabled by setting the environment\n\t// variable GRPC_GO_EXPERIMENTAL_DISABLE_STRICT_PATH_CHECKING to \"true\".\n\t//\n\t// When strict path checking is enabled, gRPC will reject requests with\n\t// paths that do not conform to the gRPC over HTTP/2 specification found at\n\t// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md.\n\t//\n\t// When disabled, gRPC will allow paths that do not contain a leading slash.\n\t// Enabling strict path checking is recommended for security reasons, as it\n\t// prevents potential path traversal vulnerabilities.\n\t//\n\t// A future release will remove this environment variable, enabling strict\n\t// path checking behavior unconditionally.\n\tDisableStrictPathChecking = boolFromEnv(\"GRPC_GO_EXPERIMENTAL_DISABLE_STRICT_PATH_CHECKING\", false)\n\n\t// EnablePriorityLBChildPolicyCache controls whether the priority balancer\n\t// should cache child balancers that are removed from the LB policy config,\n\t// for a period of 15 minutes. This is disabled by default, but can be\n\t// enabled by setting the env variable\n\t// GRPC_EXPERIMENTAL_ENABLE_PRIORITY_LB_CHILD_POLICY_CACHE to true.\n\tEnablePriorityLBChildPolicyCache = boolFromEnv(\"GRPC_EXPERIMENTAL_ENABLE_PRIORITY_LB_CHILD_POLICY_CACHE\", false)\n\n\t// EnableHTTPFramerReadBufferPooling enables the use of the\n\t// readyreader.Reader interface to perform non-memory-pinning reads,\n\t// provided the underlying net.Conn supports it. This reduces memory usage\n\t// when subchannels are idle.\n\t//\n\t// This environment variable serves as an escape hatch to disable the\n\t// feature if unforeseen issues arise, and it will be removed in a future\n\t// release.\n\tEnableHTTPFramerReadBufferPooling = boolFromEnv(\"GRPC_GO_EXPERIMENTAL_HTTP_FRAMER_READ_BUFFER_POOLING\", true)\n)\n\nfunc boolFromEnv(envVar string, def bool) bool {\n\tif def {\n\t\t// The default is true; return true unless the variable is \"false\".\n\t\treturn !strings.EqualFold(os.Getenv(envVar), \"false\")\n\t}\n\t// The default is false; return false unless the variable is \"true\".\n\treturn strings.EqualFold(os.Getenv(envVar), \"true\")\n}\n\nfunc uint64FromEnv(envVar string, def, min, max uint64) uint64 {\n\tv, err := strconv.ParseUint(os.Getenv(envVar), 10, 64)\n\tif err != nil {\n\t\treturn def\n\t}\n\tif v < min {\n\t\treturn min\n\t}\n\tif v > max {\n\t\treturn max\n\t}\n\treturn v\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/envconfig/observability.go",
    "content": "/*\n *\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage envconfig\n\nimport \"os\"\n\nconst (\n\tenvObservabilityConfig     = \"GRPC_GCP_OBSERVABILITY_CONFIG\"\n\tenvObservabilityConfigFile = \"GRPC_GCP_OBSERVABILITY_CONFIG_FILE\"\n)\n\nvar (\n\t// ObservabilityConfig is the json configuration for the gcp/observability\n\t// package specified directly in the envObservabilityConfig env var.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tObservabilityConfig = os.Getenv(envObservabilityConfig)\n\t// ObservabilityConfigFile is the json configuration for the\n\t// gcp/observability specified in a file with the location specified in\n\t// envObservabilityConfigFile env var.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tObservabilityConfigFile = os.Getenv(envObservabilityConfigFile)\n)\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/envconfig/xds.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage envconfig\n\nimport (\n\t\"os\"\n)\n\nconst (\n\t// XDSBootstrapFileNameEnv is the env variable to set bootstrap file name.\n\t// Do not use this and read from env directly. Its value is read and kept in\n\t// variable XDSBootstrapFileName.\n\t//\n\t// When both bootstrap FileName and FileContent are set, FileName is used.\n\tXDSBootstrapFileNameEnv = \"GRPC_XDS_BOOTSTRAP\"\n\t// XDSBootstrapFileContentEnv is the env variable to set bootstrap file\n\t// content. Do not use this and read from env directly. Its value is read\n\t// and kept in variable XDSBootstrapFileContent.\n\t//\n\t// When both bootstrap FileName and FileContent are set, FileName is used.\n\tXDSBootstrapFileContentEnv = \"GRPC_XDS_BOOTSTRAP_CONFIG\"\n)\n\nvar (\n\t// XDSBootstrapFileName holds the name of the file which contains xDS\n\t// bootstrap configuration. Users can specify the location of the bootstrap\n\t// file by setting the environment variable \"GRPC_XDS_BOOTSTRAP\".\n\t//\n\t// When both bootstrap FileName and FileContent are set, FileName is used.\n\tXDSBootstrapFileName = os.Getenv(XDSBootstrapFileNameEnv)\n\t// XDSBootstrapFileContent holds the content of the xDS bootstrap\n\t// configuration. Users can specify the bootstrap config by setting the\n\t// environment variable \"GRPC_XDS_BOOTSTRAP_CONFIG\".\n\t//\n\t// When both bootstrap FileName and FileContent are set, FileName is used.\n\tXDSBootstrapFileContent = os.Getenv(XDSBootstrapFileContentEnv)\n\n\t// C2PResolverTestOnlyTrafficDirectorURI is the TD URI for testing.\n\tC2PResolverTestOnlyTrafficDirectorURI = os.Getenv(\"GRPC_TEST_ONLY_GOOGLE_C2P_RESOLVER_TRAFFIC_DIRECTOR_URI\")\n\n\t// XDSDualstackEndpointsEnabled is true if gRPC should read the\n\t// \"additional addresses\" in the xDS endpoint resource.\n\tXDSDualstackEndpointsEnabled = boolFromEnv(\"GRPC_EXPERIMENTAL_XDS_DUALSTACK_ENDPOINTS\", true)\n\n\t// XDSSystemRootCertsEnabled is true when xDS enabled gRPC clients can use\n\t// the system's default root certificates for TLS certificate validation.\n\t// For more details, see:\n\t// https://github.com/grpc/proposal/blob/master/A82-xds-system-root-certs.md.\n\tXDSSystemRootCertsEnabled = boolFromEnv(\"GRPC_EXPERIMENTAL_XDS_SYSTEM_ROOT_CERTS\", false)\n\n\t// XDSSPIFFEEnabled controls if SPIFFE Bundle Maps can be used as roots of\n\t// trust.  For more details, see:\n\t// https://github.com/grpc/proposal/blob/master/A87-mtls-spiffe-support.md\n\tXDSSPIFFEEnabled = boolFromEnv(\"GRPC_EXPERIMENTAL_XDS_MTLS_SPIFFE\", false)\n\n\t// XDSHTTPConnectEnabled is true if gRPC should parse custom Metadata\n\t// configuring use of an HTTP CONNECT proxy via xDS from cluster resources.\n\t// For more details, see:\n\t// https://github.com/grpc/proposal/blob/master/A86-xds-http-connect.md\n\tXDSHTTPConnectEnabled = boolFromEnv(\"GRPC_EXPERIMENTAL_XDS_HTTP_CONNECT\", false)\n\n\t// XDSBootstrapCallCredsEnabled controls if call credentials can be used in\n\t// xDS bootstrap configuration via the `call_creds` field. For more details,\n\t// see: https://github.com/grpc/proposal/blob/master/A97-xds-jwt-call-creds.md\n\tXDSBootstrapCallCredsEnabled = boolFromEnv(\"GRPC_EXPERIMENTAL_XDS_BOOTSTRAP_CALL_CREDS\", false)\n\n\t// XDSSNIEnabled controls if gRPC should send SNI information in xDS\n\t// configured TLS handshakes. For more details, see:\n\t// https://github.com/grpc/proposal/blob/master/A101-SNI-setting-and-SNI-SAN-validation.md\n\tXDSSNIEnabled = boolFromEnv(\"GRPC_EXPERIMENTAL_XDS_SNI\", false)\n\n\t// XDSORCAToLRSPropEnabled controls whether ORCA metrics are explicitly\n\t// filtered and prefix-propagated to the LRS server. For more details, see:\n\t// https://github.com/grpc/proposal/blob/master/A85-lrs-custom-metrics-changes.md\n\tXDSORCAToLRSPropEnabled = boolFromEnv(\"GRPC_EXPERIMENTAL_XDS_ORCA_LRS_PROPAGATION\", false)\n)\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/experimental.go",
    "content": "/*\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage internal\n\nvar (\n\t// WithBufferPool is implemented by the grpc package and returns a dial\n\t// option to configure a shared buffer pool for a grpc.ClientConn.\n\tWithBufferPool any // func (grpc.SharedBufferPool) grpc.DialOption\n\n\t// BufferPool is implemented by the grpc package and returns a server\n\t// option to configure a shared buffer pool for a grpc.Server.\n\tBufferPool any // func (grpc.SharedBufferPool) grpc.ServerOption\n\n\t// SetDefaultBufferPool updates the default buffer pool.\n\tSetDefaultBufferPool any // func(mem.BufferPool)\n\n\t// AcceptCompressors is implemented by the grpc package and returns\n\t// a call option that restricts the grpc-accept-encoding header for a call.\n\tAcceptCompressors any // func(...string) grpc.CallOption\n)\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpclog/prefix_logger.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package grpclog provides logging functionality for internal gRPC packages,\n// outside of the functionality provided by the external `grpclog` package.\npackage grpclog\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/grpclog\"\n)\n\n// PrefixLogger does logging with a prefix.\n//\n// Logging method on a nil logs without any prefix.\ntype PrefixLogger struct {\n\tlogger grpclog.DepthLoggerV2\n\tprefix string\n}\n\n// Infof does info logging.\nfunc (pl *PrefixLogger) Infof(format string, args ...any) {\n\tif pl != nil {\n\t\t// Handle nil, so the tests can pass in a nil logger.\n\t\tformat = pl.prefix + format\n\t\tpl.logger.InfoDepth(1, fmt.Sprintf(format, args...))\n\t\treturn\n\t}\n\tgrpclog.InfoDepth(1, fmt.Sprintf(format, args...))\n}\n\n// Warningf does warning logging.\nfunc (pl *PrefixLogger) Warningf(format string, args ...any) {\n\tif pl != nil {\n\t\tformat = pl.prefix + format\n\t\tpl.logger.WarningDepth(1, fmt.Sprintf(format, args...))\n\t\treturn\n\t}\n\tgrpclog.WarningDepth(1, fmt.Sprintf(format, args...))\n}\n\n// Errorf does error logging.\nfunc (pl *PrefixLogger) Errorf(format string, args ...any) {\n\tif pl != nil {\n\t\tformat = pl.prefix + format\n\t\tpl.logger.ErrorDepth(1, fmt.Sprintf(format, args...))\n\t\treturn\n\t}\n\tgrpclog.ErrorDepth(1, fmt.Sprintf(format, args...))\n}\n\n// V reports whether verbosity level l is at least the requested verbose level.\nfunc (pl *PrefixLogger) V(l int) bool {\n\tif pl != nil {\n\t\treturn pl.logger.V(l)\n\t}\n\treturn true\n}\n\n// NewPrefixLogger creates a prefix logger with the given prefix.\nfunc NewPrefixLogger(logger grpclog.DepthLoggerV2, prefix string) *PrefixLogger {\n\treturn &PrefixLogger{logger: logger, prefix: prefix}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go",
    "content": "/*\n *\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcsync\n\nimport (\n\t\"context\"\n\n\t\"google.golang.org/grpc/internal/buffer\"\n)\n\n// CallbackSerializer provides a mechanism to schedule callbacks in a\n// synchronized manner. It provides a FIFO guarantee on the order of execution\n// of scheduled callbacks. New callbacks can be scheduled by invoking the\n// Schedule() method.\n//\n// This type is safe for concurrent access.\ntype CallbackSerializer struct {\n\t// done is closed once the serializer is shut down completely, i.e all\n\t// scheduled callbacks are executed and the serializer has deallocated all\n\t// its resources.\n\tdone chan struct{}\n\n\tcallbacks *buffer.Unbounded\n}\n\n// NewCallbackSerializer returns a new CallbackSerializer instance. The provided\n// context will be passed to the scheduled callbacks. Users should cancel the\n// provided context to shutdown the CallbackSerializer. It is guaranteed that no\n// callbacks will be added once this context is canceled, and any pending un-run\n// callbacks will be executed before the serializer is shut down.\nfunc NewCallbackSerializer(ctx context.Context) *CallbackSerializer {\n\tcs := &CallbackSerializer{\n\t\tdone:      make(chan struct{}),\n\t\tcallbacks: buffer.NewUnbounded(),\n\t}\n\tgo cs.run(ctx)\n\treturn cs\n}\n\n// TrySchedule tries to schedule the provided callback function f to be\n// executed in the order it was added. This is a best-effort operation. If the\n// context passed to NewCallbackSerializer was canceled before this method is\n// called, the callback will not be scheduled.\n//\n// Callbacks are expected to honor the context when performing any blocking\n// operations, and should return early when the context is canceled.\nfunc (cs *CallbackSerializer) TrySchedule(f func(ctx context.Context)) {\n\tcs.callbacks.Put(f)\n}\n\n// ScheduleOr schedules the provided callback function f to be executed in the\n// order it was added. If the context passed to NewCallbackSerializer has been\n// canceled before this method is called, the onFailure callback will be\n// executed inline instead.\n//\n// Callbacks are expected to honor the context when performing any blocking\n// operations, and should return early when the context is canceled.\nfunc (cs *CallbackSerializer) ScheduleOr(f func(ctx context.Context), onFailure func()) {\n\tif cs.callbacks.Put(f) != nil {\n\t\tonFailure()\n\t}\n}\n\nfunc (cs *CallbackSerializer) run(ctx context.Context) {\n\tdefer close(cs.done)\n\n\t// Close the buffer when the context is canceled\n\t// to prevent new callbacks from being added.\n\tcontext.AfterFunc(ctx, cs.callbacks.Close)\n\n\t// Run all callbacks.\n\tfor cb := range cs.callbacks.Get() {\n\t\tcs.callbacks.Load()\n\t\tcb.(func(context.Context))(ctx)\n\t}\n}\n\n// Done returns a channel that is closed after the context passed to\n// NewCallbackSerializer is canceled and all callbacks have been executed.\nfunc (cs *CallbackSerializer) Done() <-chan struct{} {\n\treturn cs.done\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcsync/event.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package grpcsync implements additional synchronization primitives built upon\n// the sync package.\npackage grpcsync\n\nimport (\n\t\"sync/atomic\"\n)\n\n// Event represents a one-time event that may occur in the future.\ntype Event struct {\n\tfired atomic.Bool\n\tc     chan struct{}\n}\n\n// Fire causes e to complete.  It is safe to call multiple times, and\n// concurrently.  It returns true iff this call to Fire caused the signaling\n// channel returned by Done to close. If Fire returns false, it is possible\n// the Done channel has not been closed yet.\nfunc (e *Event) Fire() bool {\n\tif e.fired.CompareAndSwap(false, true) {\n\t\tclose(e.c)\n\t\treturn true\n\t}\n\treturn false\n}\n\n// Done returns a channel that will be closed when Fire is called.\nfunc (e *Event) Done() <-chan struct{} {\n\treturn e.c\n}\n\n// HasFired returns true if Fire has been called.\nfunc (e *Event) HasFired() bool {\n\treturn e.fired.Load()\n}\n\n// NewEvent returns a new, ready-to-use Event.\nfunc NewEvent() *Event {\n\treturn &Event{c: make(chan struct{})}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go",
    "content": "/*\n *\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcsync\n\nimport (\n\t\"context\"\n\t\"sync\"\n)\n\n// Subscriber represents an entity that is subscribed to messages published on\n// a PubSub. It wraps the callback to be invoked by the PubSub when a new\n// message is published.\ntype Subscriber interface {\n\t// OnMessage is invoked when a new message is published. Implementations\n\t// must not block in this method.\n\tOnMessage(msg any)\n}\n\n// PubSub is a simple one-to-many publish-subscribe system that supports\n// messages of arbitrary type. It guarantees that messages are delivered in\n// the same order in which they were published.\n//\n// Publisher invokes the Publish() method to publish new messages, while\n// subscribers interested in receiving these messages register a callback\n// via the Subscribe() method.\n//\n// Once a PubSub is stopped, no more messages can be published, but any pending\n// published messages will be delivered to the subscribers.  Done may be used\n// to determine when all published messages have been delivered.\ntype PubSub struct {\n\tcs *CallbackSerializer\n\n\t// Access to the below fields are guarded by this mutex.\n\tmu          sync.Mutex\n\tmsg         any\n\tsubscribers map[Subscriber]bool\n}\n\n// NewPubSub returns a new PubSub instance.  Users should cancel the\n// provided context to shutdown the PubSub.\nfunc NewPubSub(ctx context.Context) *PubSub {\n\treturn &PubSub{\n\t\tcs:          NewCallbackSerializer(ctx),\n\t\tsubscribers: map[Subscriber]bool{},\n\t}\n}\n\n// Subscribe registers the provided Subscriber to the PubSub.\n//\n// If the PubSub contains a previously published message, the Subscriber's\n// OnMessage() callback will be invoked asynchronously with the existing\n// message to begin with, and subsequently for every newly published message.\n//\n// The caller is responsible for invoking the returned cancel function to\n// unsubscribe itself from the PubSub.\nfunc (ps *PubSub) Subscribe(sub Subscriber) (cancel func()) {\n\tps.mu.Lock()\n\tdefer ps.mu.Unlock()\n\n\tps.subscribers[sub] = true\n\n\tif ps.msg != nil {\n\t\tmsg := ps.msg\n\t\tps.cs.TrySchedule(func(context.Context) {\n\t\t\tps.mu.Lock()\n\t\t\tdefer ps.mu.Unlock()\n\t\t\tif !ps.subscribers[sub] {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsub.OnMessage(msg)\n\t\t})\n\t}\n\n\treturn func() {\n\t\tps.mu.Lock()\n\t\tdefer ps.mu.Unlock()\n\t\tdelete(ps.subscribers, sub)\n\t}\n}\n\n// Publish publishes the provided message to the PubSub, and invokes\n// callbacks registered by subscribers asynchronously.\nfunc (ps *PubSub) Publish(msg any) {\n\tps.mu.Lock()\n\tdefer ps.mu.Unlock()\n\n\tps.msg = msg\n\tfor sub := range ps.subscribers {\n\t\ts := sub\n\t\tps.cs.TrySchedule(func(context.Context) {\n\t\t\tps.mu.Lock()\n\t\t\tdefer ps.mu.Unlock()\n\t\t\tif !ps.subscribers[s] {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ts.OnMessage(msg)\n\t\t})\n\t}\n}\n\n// Done returns a channel that is closed after the context passed to NewPubSub\n// is canceled and all updates have been sent to subscribers.\nfunc (ps *PubSub) Done() <-chan struct{} {\n\treturn ps.cs.Done()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcutil/compressor.go",
    "content": "/*\n *\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcutil\n\nimport (\n\t\"strings\"\n)\n\n// RegisteredCompressorNames holds names of the registered compressors.\nvar RegisteredCompressorNames []string\n\n// IsCompressorNameRegistered returns true when name is available in registry.\nfunc IsCompressorNameRegistered(name string) bool {\n\tfor _, compressor := range RegisteredCompressorNames {\n\t\tif compressor == name {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// RegisteredCompressors returns a string of registered compressor names\n// separated by comma.\nfunc RegisteredCompressors() string {\n\treturn strings.Join(RegisteredCompressorNames, \",\")\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcutil/encode_duration.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcutil\n\nimport (\n\t\"strconv\"\n\t\"time\"\n)\n\nconst maxTimeoutValue int64 = 100000000 - 1\n\n// div does integer division and round-up the result. Note that this is\n// equivalent to (d+r-1)/r but has less chance to overflow.\nfunc div(d, r time.Duration) int64 {\n\tif d%r > 0 {\n\t\treturn int64(d/r + 1)\n\t}\n\treturn int64(d / r)\n}\n\n// EncodeDuration encodes the duration to the format grpc-timeout header\n// accepts.\n//\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests\nfunc EncodeDuration(t time.Duration) string {\n\t// TODO: This is simplistic and not bandwidth efficient. Improve it.\n\tif t <= 0 {\n\t\treturn \"0n\"\n\t}\n\tif d := div(t, time.Nanosecond); d <= maxTimeoutValue {\n\t\treturn strconv.FormatInt(d, 10) + \"n\"\n\t}\n\tif d := div(t, time.Microsecond); d <= maxTimeoutValue {\n\t\treturn strconv.FormatInt(d, 10) + \"u\"\n\t}\n\tif d := div(t, time.Millisecond); d <= maxTimeoutValue {\n\t\treturn strconv.FormatInt(d, 10) + \"m\"\n\t}\n\tif d := div(t, time.Second); d <= maxTimeoutValue {\n\t\treturn strconv.FormatInt(d, 10) + \"S\"\n\t}\n\tif d := div(t, time.Minute); d <= maxTimeoutValue {\n\t\treturn strconv.FormatInt(d, 10) + \"M\"\n\t}\n\t// Note that maxTimeoutValue * time.Hour > MaxInt64.\n\treturn strconv.FormatInt(div(t, time.Hour), 10) + \"H\"\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcutil/grpcutil.go",
    "content": "/*\n *\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package grpcutil provides utility functions used across the gRPC codebase.\npackage grpcutil\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcutil/metadata.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcutil\n\nimport (\n\t\"context\"\n\n\t\"google.golang.org/grpc/metadata\"\n)\n\ntype mdExtraKey struct{}\n\n// WithExtraMetadata creates a new context with incoming md attached.\nfunc WithExtraMetadata(ctx context.Context, md metadata.MD) context.Context {\n\treturn context.WithValue(ctx, mdExtraKey{}, md)\n}\n\n// ExtraMetadata returns the incoming metadata in ctx if it exists.  The\n// returned MD should not be modified. Writing to it may cause races.\n// Modification should be made to copies of the returned MD.\nfunc ExtraMetadata(ctx context.Context) (md metadata.MD, ok bool) {\n\tmd, ok = ctx.Value(mdExtraKey{}).(metadata.MD)\n\treturn\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcutil/method.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcutil\n\nimport (\n\t\"errors\"\n\t\"strings\"\n)\n\n// ParseMethod splits service and method from the input. It expects format\n// \"/service/method\".\nfunc ParseMethod(methodName string) (service, method string, _ error) {\n\tif !strings.HasPrefix(methodName, \"/\") {\n\t\treturn \"\", \"\", errors.New(\"invalid method name: should start with /\")\n\t}\n\tmethodName = methodName[1:]\n\n\tpos := strings.LastIndex(methodName, \"/\")\n\tif pos < 0 {\n\t\treturn \"\", \"\", errors.New(\"invalid method name: suffix /method is missing\")\n\t}\n\treturn methodName[:pos], methodName[pos+1:], nil\n}\n\n// baseContentType is the base content-type for gRPC.  This is a valid\n// content-type on its own, but can also include a content-subtype such as\n// \"proto\" as a suffix after \"+\" or \";\".  See\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests\n// for more details.\nconst baseContentType = \"application/grpc\"\n\n// ContentSubtype returns the content-subtype for the given content-type.  The\n// given content-type must be a valid content-type that starts with\n// \"application/grpc\". A content-subtype will follow \"application/grpc\" after a\n// \"+\" or \";\". See\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for\n// more details.\n//\n// If contentType is not a valid content-type for gRPC, the boolean\n// will be false, otherwise true. If content-type == \"application/grpc\",\n// \"application/grpc+\", or \"application/grpc;\", the boolean will be true,\n// but no content-subtype will be returned.\n//\n// contentType is assumed to be lowercase already.\nfunc ContentSubtype(contentType string) (string, bool) {\n\tif contentType == baseContentType {\n\t\treturn \"\", true\n\t}\n\tif !strings.HasPrefix(contentType, baseContentType) {\n\t\treturn \"\", false\n\t}\n\t// guaranteed since != baseContentType and has baseContentType prefix\n\tswitch contentType[len(baseContentType)] {\n\tcase '+', ';':\n\t\t// this will return true for \"application/grpc+\" or \"application/grpc;\"\n\t\t// which the previous validContentType function tested to be valid, so we\n\t\t// just say that no content-subtype is specified in this case\n\t\treturn contentType[len(baseContentType)+1:], true\n\tdefault:\n\t\treturn \"\", false\n\t}\n}\n\n// ContentType builds full content type with the given sub-type.\n//\n// contentSubtype is assumed to be lowercase\nfunc ContentType(contentSubtype string) string {\n\tif contentSubtype == \"\" {\n\t\treturn baseContentType\n\t}\n\treturn baseContentType + \"+\" + contentSubtype\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcutil/regex.go",
    "content": "/*\n *\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcutil\n\nimport \"regexp\"\n\n// FullMatchWithRegex returns whether the full text matches the regex provided.\nfunc FullMatchWithRegex(re *regexp.Regexp, text string) bool {\n\tif len(text) == 0 {\n\t\treturn re.MatchString(text)\n\t}\n\tre.Longest()\n\trem := re.FindString(text)\n\treturn len(rem) == len(text)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/idle/idle.go",
    "content": "/*\n *\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package idle contains a component for managing idleness (entering and exiting)\n// based on RPC activity.\npackage idle\n\nimport (\n\t\"math\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n)\n\n// For overriding in unit tests.\nvar timeAfterFunc = func(d time.Duration, f func()) *time.Timer {\n\treturn time.AfterFunc(d, f)\n}\n\n// ClientConn is the functionality provided by grpc.ClientConn to enter and exit\n// from idle mode.\ntype ClientConn interface {\n\tExitIdleMode()\n\tEnterIdleMode()\n}\n\n// Manager implements idleness detection and calls the ClientConn to enter/exit\n// idle mode when appropriate. Must be created by NewManager.\ntype Manager struct {\n\t// State accessed atomically.\n\tlastCallEndTime           int64 // Unix timestamp in nanos; time when the most recent RPC completed.\n\tactiveCallsCount          int32 // Count of active RPCs; -math.MaxInt32 means channel is idle or is trying to get there.\n\tactiveSinceLastTimerCheck int32 // Boolean; True if there was an RPC since the last timer callback.\n\tclosed                    int32 // Boolean; True when the manager is closed.\n\n\t// Can be accessed without atomics or mutex since these are set at creation\n\t// time and read-only after that.\n\tcc      ClientConn // Functionality provided by grpc.ClientConn.\n\ttimeout time.Duration\n\n\t// idleMu is used to guarantee mutual exclusion in two scenarios:\n\t// - Opposing intentions:\n\t//   - a: Idle timeout has fired and handleIdleTimeout() is trying to put\n\t//     the channel in idle mode because the channel has been inactive.\n\t//   - b: At the same time an RPC is made on the channel, and OnCallBegin()\n\t//     is trying to prevent the channel from going idle.\n\t// - Competing intentions:\n\t//   - The channel is in idle mode and there are multiple RPCs starting at\n\t//     the same time, all trying to move the channel out of idle. Only one\n\t//     of them should succeed in doing so, while the other RPCs should\n\t//     piggyback on the first one and be successfully handled.\n\tidleMu       sync.RWMutex\n\tactuallyIdle bool\n\ttimer        *time.Timer\n}\n\n// NewManager creates a new idleness manager implementation for the\n// given idle timeout.  It begins in idle mode.\nfunc NewManager(cc ClientConn, timeout time.Duration) *Manager {\n\treturn &Manager{\n\t\tcc:               cc,\n\t\ttimeout:          timeout,\n\t\tactuallyIdle:     true,\n\t\tactiveCallsCount: -math.MaxInt32,\n\t}\n}\n\n// resetIdleTimerLocked resets the idle timer to the given duration.  Called\n// when exiting idle mode or when the timer fires and we need to reset it.\nfunc (m *Manager) resetIdleTimerLocked(d time.Duration) {\n\tif m.isClosed() || m.timeout == 0 || m.actuallyIdle {\n\t\treturn\n\t}\n\n\t// It is safe to ignore the return value from Reset() because this method is\n\t// only ever called from the timer callback or when exiting idle mode.\n\tif m.timer != nil {\n\t\tm.timer.Stop()\n\t}\n\tm.timer = timeAfterFunc(d, m.handleIdleTimeout)\n}\n\nfunc (m *Manager) resetIdleTimer(d time.Duration) {\n\tm.idleMu.Lock()\n\tdefer m.idleMu.Unlock()\n\tm.resetIdleTimerLocked(d)\n}\n\n// handleIdleTimeout is the timer callback that is invoked upon expiry of the\n// configured idle timeout. The channel is considered inactive if there are no\n// ongoing calls and no RPC activity since the last time the timer fired.\nfunc (m *Manager) handleIdleTimeout() {\n\tif m.isClosed() {\n\t\treturn\n\t}\n\n\tif atomic.LoadInt32(&m.activeCallsCount) > 0 {\n\t\tm.resetIdleTimer(m.timeout)\n\t\treturn\n\t}\n\n\t// There has been activity on the channel since we last got here. Reset the\n\t// timer and return.\n\tif atomic.LoadInt32(&m.activeSinceLastTimerCheck) == 1 {\n\t\t// Set the timer to fire after a duration of idle timeout, calculated\n\t\t// from the time the most recent RPC completed.\n\t\tatomic.StoreInt32(&m.activeSinceLastTimerCheck, 0)\n\t\tm.resetIdleTimer(time.Duration(atomic.LoadInt64(&m.lastCallEndTime)-time.Now().UnixNano()) + m.timeout)\n\t\treturn\n\t}\n\n\t// Now that we've checked that there has been no activity, attempt to enter\n\t// idle mode, which is very likely to succeed.\n\tif m.tryEnterIdleMode(true) {\n\t\t// Successfully entered idle mode. No timer needed until we exit idle.\n\t\treturn\n\t}\n\n\t// Failed to enter idle mode due to a concurrent RPC that kept the channel\n\t// active, or because of an error from the channel. Undo the attempt to\n\t// enter idle, and reset the timer to try again later.\n\tm.resetIdleTimer(m.timeout)\n}\n\n// tryEnterIdleMode instructs the channel to enter idle mode. But before\n// that, it performs a last minute check to ensure that no new RPC has come in,\n// making the channel active.\n//\n// checkActivity controls if a check for RPC activity, since the last time the\n// idle_timeout fired, is made.\n\n// Return value indicates whether or not the channel moved to idle mode.\n//\n// Holds idleMu which ensures mutual exclusion with exitIdleMode.\nfunc (m *Manager) tryEnterIdleMode(checkActivity bool) bool {\n\t// Setting the activeCallsCount to -math.MaxInt32 indicates to OnCallBegin()\n\t// that the channel is either in idle mode or is trying to get there.\n\tif !atomic.CompareAndSwapInt32(&m.activeCallsCount, 0, -math.MaxInt32) {\n\t\t// This CAS operation can fail if an RPC started after we checked for\n\t\t// activity in the timer handler, or one was ongoing from before the\n\t\t// last time the timer fired, or if a test is attempting to enter idle\n\t\t// mode without checking.  In all cases, abort going into idle mode.\n\t\treturn false\n\t}\n\t// N.B. if we fail to enter idle mode after this, we must re-add\n\t// math.MaxInt32 to m.activeCallsCount.\n\n\tm.idleMu.Lock()\n\tdefer m.idleMu.Unlock()\n\n\tif atomic.LoadInt32(&m.activeCallsCount) != -math.MaxInt32 {\n\t\t// We raced and lost to a new RPC. Very rare, but stop entering idle.\n\t\tatomic.AddInt32(&m.activeCallsCount, math.MaxInt32)\n\t\treturn false\n\t}\n\tif checkActivity && atomic.LoadInt32(&m.activeSinceLastTimerCheck) == 1 {\n\t\t// A very short RPC could have come in (and also finished) after we\n\t\t// checked for calls count and activity in handleIdleTimeout(), but\n\t\t// before the CAS operation. So, we need to check for activity again.\n\t\tatomic.AddInt32(&m.activeCallsCount, math.MaxInt32)\n\t\treturn false\n\t}\n\n\t// No new RPCs have come in since we set the active calls count value to\n\t// -math.MaxInt32. And since we have the lock, it is safe to enter idle mode\n\t// unconditionally now.\n\tm.cc.EnterIdleMode()\n\tm.actuallyIdle = true\n\treturn true\n}\n\n// EnterIdleModeForTesting instructs the channel to enter idle mode.\nfunc (m *Manager) EnterIdleModeForTesting() {\n\tm.tryEnterIdleMode(false)\n}\n\n// OnCallBegin is invoked at the start of every RPC.\nfunc (m *Manager) OnCallBegin() {\n\tif m.isClosed() {\n\t\treturn\n\t}\n\n\tif atomic.AddInt32(&m.activeCallsCount, 1) > 0 {\n\t\t// Channel is not idle now. Set the activity bit and allow the call.\n\t\tatomic.StoreInt32(&m.activeSinceLastTimerCheck, 1)\n\t\treturn\n\t}\n\n\t// Channel is either in idle mode or is in the process of moving to idle\n\t// mode. Attempt to exit idle mode to allow this RPC.\n\tm.ExitIdleMode()\n\tatomic.StoreInt32(&m.activeSinceLastTimerCheck, 1)\n}\n\n// ExitIdleMode instructs m to call the ClientConn's ExitIdleMode and update its\n// internal state.\nfunc (m *Manager) ExitIdleMode() {\n\t// Holds idleMu which ensures mutual exclusion with tryEnterIdleMode.\n\tm.idleMu.Lock()\n\tdefer m.idleMu.Unlock()\n\n\tif m.isClosed() || !m.actuallyIdle {\n\t\t// This can happen in three scenarios:\n\t\t// - handleIdleTimeout() set the calls count to -math.MaxInt32 and called\n\t\t//   tryEnterIdleMode(). But before the latter could grab the lock, an RPC\n\t\t//   came in and OnCallBegin() noticed that the calls count is negative.\n\t\t// - Channel is in idle mode, and multiple new RPCs come in at the same\n\t\t//   time, all of them notice a negative calls count in OnCallBegin and get\n\t\t//   here. The first one to get the lock would get the channel to exit idle.\n\t\t// - Channel is not in idle mode, and the user calls Connect which calls\n\t\t//   m.ExitIdleMode.\n\t\t//\n\t\t// In any case, there is nothing to do here.\n\t\treturn\n\t}\n\n\tm.cc.ExitIdleMode()\n\n\t// Undo the idle entry process. This also respects any new RPC attempts.\n\tatomic.AddInt32(&m.activeCallsCount, math.MaxInt32)\n\tm.actuallyIdle = false\n\n\t// Start a new timer to fire after the configured idle timeout.\n\tm.resetIdleTimerLocked(m.timeout)\n}\n\n// UnsafeSetNotIdle instructs the Manager to update its internal state to\n// reflect the reality that the channel is no longer in IDLE mode.\n//\n// N.B. This method is intended only for internal use by the gRPC client\n// when it exits IDLE mode **manually** from `Dial`. The callsite must ensure:\n//   - The channel was **actually in IDLE mode** immediately prior to the call.\n//   - There is **no concurrent activity** that could cause the channel to exit\n//     IDLE mode *naturally* at the same time.\nfunc (m *Manager) UnsafeSetNotIdle() {\n\tm.idleMu.Lock()\n\tdefer m.idleMu.Unlock()\n\n\tatomic.AddInt32(&m.activeCallsCount, math.MaxInt32)\n\tm.actuallyIdle = false\n\tm.resetIdleTimerLocked(m.timeout)\n}\n\n// OnCallEnd is invoked at the end of every RPC.\nfunc (m *Manager) OnCallEnd() {\n\tif m.isClosed() {\n\t\treturn\n\t}\n\n\t// Record the time at which the most recent call finished.\n\tatomic.StoreInt64(&m.lastCallEndTime, time.Now().UnixNano())\n\n\t// Decrement the active calls count. This count can temporarily go negative\n\t// when the timer callback is in the process of moving the channel to idle\n\t// mode, but one or more RPCs come in and complete before the timer callback\n\t// can get done with the process of moving to idle mode.\n\tatomic.AddInt32(&m.activeCallsCount, -1)\n}\n\nfunc (m *Manager) isClosed() bool {\n\treturn atomic.LoadInt32(&m.closed) == 1\n}\n\n// Close stops the timer associated with the Manager, if it exists.\nfunc (m *Manager) Close() {\n\tatomic.StoreInt32(&m.closed, 1)\n\n\tm.idleMu.Lock()\n\tif m.timer != nil {\n\t\tm.timer.Stop()\n\t\tm.timer = nil\n\t}\n\tm.idleMu.Unlock()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/internal.go",
    "content": "/*\n * Copyright 2016 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package internal contains gRPC-internal code, to avoid polluting\n// the godoc of the top-level grpc package.  It must not import any grpc\n// symbols to avoid circular dependencies.\npackage internal\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nvar (\n\t// HealthCheckFunc is used to provide client-side LB channel health checking\n\tHealthCheckFunc HealthChecker\n\t// RegisterClientHealthCheckListener is used to provide a listener for\n\t// updates from the client-side health checking service. It returns a\n\t// function that can be called to stop the health producer.\n\tRegisterClientHealthCheckListener any // func(ctx context.Context, sc balancer.SubConn, serviceName string, listener func(balancer.SubConnState)) func()\n\t// BalancerUnregister is exported by package balancer to unregister a balancer.\n\tBalancerUnregister func(name string)\n\t// KeepaliveMinPingTime is the minimum ping interval.  This must be 10s by\n\t// default, but tests may wish to set it lower for convenience.\n\tKeepaliveMinPingTime = 10 * time.Second\n\t// KeepaliveMinServerPingTime is the minimum ping interval for servers.\n\t// This must be 1s by default, but tests may wish to set it lower for\n\t// convenience.\n\tKeepaliveMinServerPingTime = time.Second\n\t// ParseServiceConfig parses a JSON representation of the service config.\n\tParseServiceConfig any // func(string) *serviceconfig.ParseResult\n\t// EqualServiceConfigForTesting is for testing service config generation and\n\t// parsing. Both a and b should be returned by ParseServiceConfig.\n\t// This function compares the config without rawJSON stripped, in case the\n\t// there's difference in white space.\n\tEqualServiceConfigForTesting func(a, b serviceconfig.Config) bool\n\t// GetCertificateProviderBuilder returns the registered builder for the\n\t// given name. This is set by package certprovider for use from xDS\n\t// bootstrap code while parsing certificate provider configs in the\n\t// bootstrap file.\n\tGetCertificateProviderBuilder any // func(string) certprovider.Builder\n\t// GetXDSHandshakeInfoForTesting returns a pointer to the xds.HandshakeInfo\n\t// stored in the passed in attributes. This is set by\n\t// credentials/xds/xds.go.\n\tGetXDSHandshakeInfoForTesting any // func (*attributes.Attributes) *unsafe.Pointer\n\t// GetServerCredentials returns the transport credentials configured on a\n\t// gRPC server. An xDS-enabled server needs to know what type of credentials\n\t// is configured on the underlying gRPC server. This is set by server.go.\n\tGetServerCredentials any // func (*grpc.Server) credentials.TransportCredentials\n\t// MetricsRecorderForServer returns the MetricsRecorderList derived from a\n\t// server's stats handlers.\n\tMetricsRecorderForServer any // func (*grpc.Server) estats.MetricsRecorder\n\t// CanonicalString returns the canonical string of the code defined here:\n\t// https://github.com/grpc/grpc/blob/master/doc/statuscodes.md.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tCanonicalString any // func (codes.Code) string\n\t// IsRegisteredMethod returns whether the passed in method is registered as\n\t// a method on the server.\n\tIsRegisteredMethod any // func(*grpc.Server, string) bool\n\t// ServerFromContext returns the server from the context.\n\tServerFromContext any // func(context.Context) *grpc.Server\n\t// AddGlobalServerOptions adds an array of ServerOption that will be\n\t// effective globally for newly created servers. The priority will be: 1.\n\t// user-provided; 2. this method; 3. default values.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tAddGlobalServerOptions any // func(opt ...ServerOption)\n\t// ClearGlobalServerOptions clears the array of extra ServerOption. This\n\t// method is useful in testing and benchmarking.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tClearGlobalServerOptions func()\n\t// AddGlobalDialOptions adds an array of DialOption that will be effective\n\t// globally for newly created client channels. The priority will be: 1.\n\t// user-provided; 2. this method; 3. default values.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tAddGlobalDialOptions any // func(opt ...DialOption)\n\t// DisableGlobalDialOptions returns a DialOption that prevents the\n\t// ClientConn from applying the global DialOptions (set via\n\t// AddGlobalDialOptions).\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tDisableGlobalDialOptions any // func() grpc.DialOption\n\t// ClearGlobalDialOptions clears the array of extra DialOption. This\n\t// method is useful in testing and benchmarking.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tClearGlobalDialOptions func()\n\n\t// AddGlobalPerTargetDialOptions adds a PerTargetDialOption that will be\n\t// configured for newly created ClientConns.\n\tAddGlobalPerTargetDialOptions any // func (opt any)\n\t// ClearGlobalPerTargetDialOptions clears the slice of global late apply\n\t// dial options.\n\tClearGlobalPerTargetDialOptions func()\n\n\t// JoinDialOptions combines the dial options passed as arguments into a\n\t// single dial option.\n\tJoinDialOptions any // func(...grpc.DialOption) grpc.DialOption\n\t// JoinServerOptions combines the server options passed as arguments into a\n\t// single server option.\n\tJoinServerOptions any // func(...grpc.ServerOption) grpc.ServerOption\n\n\t// WithBinaryLogger returns a DialOption that specifies the binary logger\n\t// for a ClientConn.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tWithBinaryLogger any // func(binarylog.Logger) grpc.DialOption\n\t// BinaryLogger returns a ServerOption that can set the binary logger for a\n\t// server.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tBinaryLogger any // func(binarylog.Logger) grpc.ServerOption\n\n\t// SubscribeToConnectivityStateChanges adds a grpcsync.Subscriber to a\n\t// provided grpc.ClientConn.\n\tSubscribeToConnectivityStateChanges any // func(*grpc.ClientConn, grpcsync.Subscriber)\n\n\t// NewXDSResolverWithConfigForTesting creates a new xds resolver builder using\n\t// the provided xds bootstrap config instead of the global configuration from\n\t// the supported environment variables.  The resolver.Builder is meant to be\n\t// used in conjunction with the grpc.WithResolvers DialOption.\n\t//\n\t// Testing Only\n\t//\n\t// This function should ONLY be used for testing and may not work with some\n\t// other features, including the CSDS service.\n\tNewXDSResolverWithConfigForTesting any // func([]byte) (resolver.Builder, error)\n\n\t// NewXDSResolverWithPoolForTesting creates a new xDS resolver builder\n\t// using the provided xDS pool instead of creating a new one using the\n\t// bootstrap configuration specified by the supported environment variables.\n\t// The resolver.Builder is meant to be used in conjunction with the\n\t// grpc.WithResolvers DialOption. The resolver.Builder does not take\n\t// ownership of the provided xDS client and it is the responsibility of the\n\t// caller to close the client when no longer required.\n\t//\n\t// Testing Only\n\t//\n\t// This function should ONLY be used for testing and may not work with some\n\t// other features, including the CSDS service.\n\tNewXDSResolverWithPoolForTesting any // func(*xdsclient.Pool) (resolver.Builder, error)\n\n\t// NewXDSResolverWithClientForTesting creates a new xDS resolver builder\n\t// using the provided xDS client instead of creating a new one using the\n\t// bootstrap configuration specified by the supported environment variables.\n\t// The resolver.Builder is meant to be used in conjunction with the\n\t// grpc.WithResolvers DialOption. The resolver.Builder does not take\n\t// ownership of the provided xDS client and it is the responsibility of the\n\t// caller to close the client when no longer required.\n\t//\n\t// Testing Only\n\t//\n\t// This function should ONLY be used for testing and may not work with some\n\t// other features, including the CSDS service.\n\tNewXDSResolverWithClientForTesting any // func(xdsclient.XDSClient) (resolver.Builder, error)\n\n\t// ORCAAllowAnyMinReportingInterval is for examples/orca use ONLY.\n\tORCAAllowAnyMinReportingInterval any // func(so *orca.ServiceOptions)\n\n\t// GRPCResolverSchemeExtraMetadata determines when gRPC will add extra\n\t// metadata to RPCs.\n\tGRPCResolverSchemeExtraMetadata = \"xds\"\n\n\t// EnterIdleModeForTesting gets the ClientConn to enter IDLE mode.\n\tEnterIdleModeForTesting any // func(*grpc.ClientConn)\n\n\t// ExitIdleModeForTesting gets the ClientConn to exit IDLE mode.\n\tExitIdleModeForTesting any // func(*grpc.ClientConn) error\n\n\t// ChannelzTurnOffForTesting disables the Channelz service for testing\n\t// purposes.\n\tChannelzTurnOffForTesting func()\n\n\t// TriggerXDSResourceNotFoundForTesting causes the provided xDS Client to\n\t// invoke resource-not-found error for the given resource type and name.\n\tTriggerXDSResourceNotFoundForTesting any // func(xdsclient.XDSClient, xdsresource.Type, string) error\n\n\t// FromOutgoingContextRaw returns the un-merged, intermediary contents of\n\t// metadata.rawMD.\n\tFromOutgoingContextRaw any // func(context.Context) (metadata.MD, [][]string, bool)\n\n\t// UserSetDefaultScheme is set to true if the user has overridden the\n\t// default resolver scheme.\n\tUserSetDefaultScheme = false\n\n\t// SnapshotMetricRegistryForTesting snapshots the global data of the metric\n\t// registry. Returns a cleanup function that sets the metric registry to its\n\t// original state. Only called in testing functions.\n\tSnapshotMetricRegistryForTesting func() func()\n\n\t// SetBufferPoolingThresholdForTesting updates the buffer pooling threshold, for\n\t// testing purposes.\n\tSetBufferPoolingThresholdForTesting any // func(int)\n\n\t// TimeAfterFunc is used to create timers. During tests the function is\n\t// replaced to track allocated timers and fail the test if a timer isn't\n\t// cancelled.\n\tTimeAfterFunc = func(d time.Duration, f func()) Timer {\n\t\treturn time.AfterFunc(d, f)\n\t}\n\n\t// NewStreamWaitingForResolver is a test hook that is triggered when a\n\t// new stream blocks while waiting for name resolution. This can be\n\t// used in tests to synchronize resolver updates and avoid race conditions.\n\t// When set, the function will be called before the stream enters\n\t// the blocking state.\n\tNewStreamWaitingForResolver = func() {}\n\n\t// AddressToTelemetryLabels is an xDS-provided function to extract telemetry\n\t// labels from a resolver.Address. Callers must assert its type before calling.\n\tAddressToTelemetryLabels any // func(addr resolver.Address) map[string]string\n\n\t// AsyncReporterCleanupDelegate is initialized to a pass-through function by\n\t// default (production behavior), allowing tests to swap it with an\n\t// implementation which tracks registration of async reporter and its\n\t// corresponding cleanup.\n\tAsyncReporterCleanupDelegate = func(cleanup func()) func() {\n\t\treturn cleanup\n\t}\n)\n\n// HealthChecker defines the signature of the client-side LB channel health\n// checking function.\n//\n// The implementation is expected to create a health checking RPC stream by\n// calling newStream(), watch for the health status of serviceName, and report\n// its health back by calling setConnectivityState().\n//\n// The health checking protocol is defined at:\n// https://github.com/grpc/grpc/blob/master/doc/health-checking.md\ntype HealthChecker func(ctx context.Context, newStream func(string) (any, error), setConnectivityState func(connectivity.State, error), serviceName string) error\n\nconst (\n\t// CredsBundleModeFallback switches GoogleDefaultCreds to fallback mode.\n\tCredsBundleModeFallback = \"fallback\"\n\t// CredsBundleModeBalancer switches GoogleDefaultCreds to grpclb balancer\n\t// mode.\n\tCredsBundleModeBalancer = \"balancer\"\n\t// CredsBundleModeBackendFromBalancer switches GoogleDefaultCreds to mode\n\t// that supports backend returned by grpclb balancer.\n\tCredsBundleModeBackendFromBalancer = \"backend-from-balancer\"\n)\n\n// RLSLoadBalancingPolicyName is the name of the RLS LB policy.\n//\n// It currently has an experimental suffix which would be removed once\n// end-to-end testing of the policy is completed.\nconst RLSLoadBalancingPolicyName = \"rls_experimental\"\n\n// EnforceSubConnEmbedding is used to enforce proper SubConn implementation\n// embedding.\ntype EnforceSubConnEmbedding interface {\n\tenforceSubConnEmbedding()\n}\n\n// EnforceClientConnEmbedding is used to enforce proper ClientConn implementation\n// embedding.\ntype EnforceClientConnEmbedding interface {\n\tenforceClientConnEmbedding()\n}\n\n// Timer is an interface to allow injecting different time.Timer implementations\n// during tests.\ntype Timer interface {\n\tStop() bool\n}\n\n// EnforceMetricsRecorderEmbedding is used to enforce proper MetricsRecorder\n// implementation embedding.\ntype EnforceMetricsRecorderEmbedding interface {\n\tenforceMetricsRecorderEmbedding()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/mem/buffer_pool.go",
    "content": "/*\n *\n * Copyright 2026 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package mem provides utilities that facilitate memory reuse in byte slices\n// that are used as buffers.\npackage mem\n\nimport (\n\t\"fmt\"\n\t\"math/bits\"\n\t\"slices\"\n\t\"sort\"\n\t\"sync\"\n)\n\nconst (\n\tgoPageSize = 4 * 1024 // 4KiB. N.B. this must be a power of 2.\n)\n\nvar uintSize = bits.UintSize // use a variable for mocking during tests.\n\n// bufferPool is a copy of the public bufferPool interface used to avoid\n// circular dependencies.\ntype bufferPool interface {\n\t// Get returns a buffer with specified length from the pool.\n\tGet(length int) *[]byte\n\n\t// Put returns a buffer to the pool.\n\t//\n\t// The provided pointer must hold a prefix of the buffer obtained via\n\t// BufferPool.Get to ensure the buffer's entire capacity can be re-used.\n\tPut(*[]byte)\n}\n\n// BinaryTieredBufferPool is a buffer pool that uses multiple sub-pools with\n// power-of-two sizes.\ntype BinaryTieredBufferPool struct {\n\t// exponentToNextLargestPoolMap maps a power-of-two exponent (e.g., 12 for\n\t// 4KB) to the index of the next largest sizedBufferPool. This is used by\n\t// Get() to find the smallest pool that can satisfy a request for a given\n\t// size.\n\texponentToNextLargestPoolMap []int\n\t// exponentToPreviousLargestPoolMap maps a power-of-two exponent to the\n\t// index of the previous largest sizedBufferPool. This is used by Put()\n\t// to return a buffer to the most appropriate pool based on its capacity.\n\texponentToPreviousLargestPoolMap []int\n\tsizedPools                       []bufferPool\n\tfallbackPool                     bufferPool\n\tmaxPoolCap                       int // Optimization: Cache max capacity\n}\n\n// NewBinaryTieredBufferPool returns a BufferPool backed by multiple sub-pools.\n// This structure enables O(1) lookup time for Get and Put operations.\n//\n// The arguments provided are the exponents for the buffer capacities (powers\n// of 2), not the raw byte sizes. For example, to create a pool of 16KB buffers\n// (2^14 bytes), pass 14 as the argument.\nfunc NewBinaryTieredBufferPool(powerOfTwoExponents ...uint8) (*BinaryTieredBufferPool, error) {\n\treturn newBinaryTiered(func(size int) bufferPool {\n\t\treturn newSizedBufferPool(size, true)\n\t}, &SimpleBufferPool{shouldZero: true}, powerOfTwoExponents...)\n}\n\n// NewDirtyBinaryTieredBufferPool returns a BufferPool backed by multiple\n// sub-pools. It is similar to NewBinaryTieredBufferPool but it does not\n// initialize the buffers before returning them.\nfunc NewDirtyBinaryTieredBufferPool(powerOfTwoExponents ...uint8) (*BinaryTieredBufferPool, error) {\n\treturn newBinaryTiered(func(size int) bufferPool {\n\t\treturn newSizedBufferPool(size, false)\n\t}, NewDirtySimplePool(), powerOfTwoExponents...)\n}\n\nfunc newBinaryTiered(sizedPoolFactory func(int) bufferPool, fallbackPool bufferPool, powerOfTwoExponents ...uint8) (*BinaryTieredBufferPool, error) {\n\tslices.Sort(powerOfTwoExponents)\n\tpowerOfTwoExponents = slices.Compact(powerOfTwoExponents)\n\n\t// Determine the maximum exponent we need to support. This depends on the\n\t// word size (32-bit vs 64-bit).\n\tmaxExponent := uintSize - 2\n\tindexOfNextLargestBit := slices.Repeat([]int{-1}, maxExponent+1)\n\tindexOfPreviousLargestBit := slices.Repeat([]int{-1}, maxExponent+1)\n\n\tmaxTier := 0\n\tpools := make([]bufferPool, 0, len(powerOfTwoExponents))\n\n\tfor i, exp := range powerOfTwoExponents {\n\t\t// Allocating slices of size > 2^maxExponent isn't possible on\n\t\t// maxExponent-bit machines.\n\t\tif int(exp) > maxExponent {\n\t\t\treturn nil, fmt.Errorf(\"mem: allocating slice of size 2^%d is not possible\", exp)\n\t\t}\n\t\ttierSize := 1 << exp\n\t\tpools = append(pools, sizedPoolFactory(tierSize))\n\t\tmaxTier = max(maxTier, tierSize)\n\n\t\t// Map the exact power of 2 to this pool index.\n\t\tindexOfNextLargestBit[exp] = i\n\t\tindexOfPreviousLargestBit[exp] = i\n\t}\n\n\t// Fill gaps for Get() (Next Largest)\n\t// We iterate backwards. If current is empty, take the value from the right (larger).\n\tfor i := maxExponent - 1; i >= 0; i-- {\n\t\tif indexOfNextLargestBit[i] == -1 {\n\t\t\tindexOfNextLargestBit[i] = indexOfNextLargestBit[i+1]\n\t\t}\n\t}\n\n\t// Fill gaps for Put() (Previous Largest)\n\t// We iterate forwards. If current is empty, take the value from the left (smaller).\n\tfor i := 1; i <= maxExponent; i++ {\n\t\tif indexOfPreviousLargestBit[i] == -1 {\n\t\t\tindexOfPreviousLargestBit[i] = indexOfPreviousLargestBit[i-1]\n\t\t}\n\t}\n\n\treturn &BinaryTieredBufferPool{\n\t\texponentToNextLargestPoolMap:     indexOfNextLargestBit,\n\t\texponentToPreviousLargestPoolMap: indexOfPreviousLargestBit,\n\t\tsizedPools:                       pools,\n\t\tmaxPoolCap:                       maxTier,\n\t\tfallbackPool:                     fallbackPool,\n\t}, nil\n}\n\n// Get returns a buffer with specified length from the pool.\nfunc (b *BinaryTieredBufferPool) Get(size int) *[]byte {\n\treturn b.poolForGet(size).Get(size)\n}\n\nfunc (b *BinaryTieredBufferPool) poolForGet(size int) bufferPool {\n\tif size == 0 || size > b.maxPoolCap {\n\t\treturn b.fallbackPool\n\t}\n\n\t// Calculate the exponent of the smallest power of 2 >= size.\n\t// We subtract 1 from size to handle exact powers of 2 correctly.\n\t//\n\t// Examples:\n\t// size=16 (0b10000) -> size-1=15 (0b01111) -> bits.Len=4 -> Pool for 2^4\n\t// size=17 (0b10001) -> size-1=16 (0b10000) -> bits.Len=5 -> Pool for 2^5\n\tquerySize := uint(size - 1)\n\tpoolIdx := b.exponentToNextLargestPoolMap[bits.Len(querySize)]\n\n\treturn b.sizedPools[poolIdx]\n}\n\n// Put returns a buffer to the pool.\nfunc (b *BinaryTieredBufferPool) Put(buf *[]byte) {\n\t// We pass the capacity of the buffer, and not the size of the buffer here.\n\t// If we did the latter, all buffers would eventually move to the smallest\n\t// pool.\n\tb.poolForPut(cap(*buf)).Put(buf)\n}\n\nfunc (b *BinaryTieredBufferPool) poolForPut(bCap int) bufferPool {\n\tif bCap == 0 {\n\t\treturn NopBufferPool{}\n\t}\n\tif bCap > b.maxPoolCap {\n\t\treturn b.fallbackPool\n\t}\n\t// Find the pool with the largest capacity <= bCap.\n\t//\n\t// We calculate the exponent of the largest power of 2 <= bCap.\n\t// bits.Len(x) returns the minimum number of bits required to represent x;\n\t// i.e. the number of bits up to and including the most significant bit.\n\t// Subtracting 1 gives the 0-based index of the most significant bit,\n\t// which is the exponent of the largest power of 2 <= bCap.\n\t//\n\t// Examples:\n\t// cap=16 (0b10000) -> Len=5 -> 5-1=4 -> 2^4\n\t// cap=15 (0b01111) -> Len=4 -> 4-1=3 -> 2^3\n\tlargestPowerOfTwo := bits.Len(uint(bCap)) - 1\n\tpoolIdx := b.exponentToPreviousLargestPoolMap[largestPowerOfTwo]\n\t// The buffer is smaller than the smallest power of 2, discard it.\n\tif poolIdx == -1 {\n\t\t// Buffer is smaller than our smallest pool bucket.\n\t\treturn NopBufferPool{}\n\t}\n\treturn b.sizedPools[poolIdx]\n}\n\n// NopBufferPool is a buffer pool that returns new buffers without pooling.\ntype NopBufferPool struct{}\n\n// Get returns a buffer with specified length from the pool.\nfunc (NopBufferPool) Get(length int) *[]byte {\n\tb := make([]byte, length)\n\treturn &b\n}\n\n// Put returns a buffer to the pool.\nfunc (NopBufferPool) Put(*[]byte) {\n}\n\n// sizedBufferPool is a BufferPool implementation that is optimized for specific\n// buffer sizes. For example, HTTP/2 frames within gRPC have a default max size\n// of 16kb and a sizedBufferPool can be configured to only return buffers with a\n// capacity of 16kb. Note that however it does not support returning larger\n// buffers and in fact panics if such a buffer is requested. Because of this,\n// this BufferPool implementation is not meant to be used on its own and rather\n// is intended to be embedded in a TieredBufferPool such that Get is only\n// invoked when the required size is smaller than or equal to defaultSize.\ntype sizedBufferPool struct {\n\tpool        sync.Pool\n\tdefaultSize int\n\tshouldZero  bool\n}\n\nfunc (p *sizedBufferPool) Get(size int) *[]byte {\n\tbuf, ok := p.pool.Get().(*[]byte)\n\tif !ok {\n\t\tbuf := make([]byte, size, p.defaultSize)\n\t\treturn &buf\n\t}\n\tb := *buf\n\tif p.shouldZero {\n\t\tclear(b[:cap(b)])\n\t}\n\t*buf = b[:size]\n\treturn buf\n}\n\nfunc (p *sizedBufferPool) Put(buf *[]byte) {\n\tif cap(*buf) < p.defaultSize {\n\t\t// Ignore buffers that are too small to fit in the pool. Otherwise, when\n\t\t// Get is called it will panic as it tries to index outside the bounds\n\t\t// of the buffer.\n\t\treturn\n\t}\n\tp.pool.Put(buf)\n}\n\nfunc newSizedBufferPool(size int, zero bool) *sizedBufferPool {\n\treturn &sizedBufferPool{\n\t\tdefaultSize: size,\n\t\tshouldZero:  zero,\n\t}\n}\n\n// TieredBufferPool implements the BufferPool interface with multiple tiers of\n// buffer pools for different sizes of buffers.\ntype TieredBufferPool struct {\n\tsizedPools   []*sizedBufferPool\n\tfallbackPool SimpleBufferPool\n}\n\n// NewTieredBufferPool returns a BufferPool implementation that uses multiple\n// underlying pools of the given pool sizes.\nfunc NewTieredBufferPool(poolSizes ...int) *TieredBufferPool {\n\tsort.Ints(poolSizes)\n\tpools := make([]*sizedBufferPool, len(poolSizes))\n\tfor i, s := range poolSizes {\n\t\tpools[i] = newSizedBufferPool(s, true)\n\t}\n\treturn &TieredBufferPool{\n\t\tsizedPools:   pools,\n\t\tfallbackPool: SimpleBufferPool{shouldZero: true},\n\t}\n}\n\n// Get returns a buffer with specified length from the pool.\nfunc (p *TieredBufferPool) Get(size int) *[]byte {\n\treturn p.getPool(size).Get(size)\n}\n\n// Put returns a buffer to the pool.\nfunc (p *TieredBufferPool) Put(buf *[]byte) {\n\tp.getPool(cap(*buf)).Put(buf)\n}\n\nfunc (p *TieredBufferPool) getPool(size int) bufferPool {\n\tpoolIdx := sort.Search(len(p.sizedPools), func(i int) bool {\n\t\treturn p.sizedPools[i].defaultSize >= size\n\t})\n\n\tif poolIdx == len(p.sizedPools) {\n\t\treturn &p.fallbackPool\n\t}\n\n\treturn p.sizedPools[poolIdx]\n}\n\n// SimpleBufferPool is an implementation of the mem.BufferPool interface that\n// attempts to pool buffers with a sync.Pool. When Get is invoked, it tries to\n// acquire a buffer from the pool but if that buffer is too small, it returns it\n// to the pool and creates a new one.\ntype SimpleBufferPool struct {\n\tpool       sync.Pool\n\tshouldZero bool\n}\n\n// NewDirtySimplePool constructs a [SimpleBufferPool]. It does not initialize\n// the buffers before returning them. Callers must ensure they don't read the\n// buffers before writing data to them.\nfunc NewDirtySimplePool() *SimpleBufferPool {\n\treturn &SimpleBufferPool{\n\t\tshouldZero: false,\n\t}\n}\n\n// Get returns a buffer with specified length from the pool.\nfunc (p *SimpleBufferPool) Get(size int) *[]byte {\n\tbs, ok := p.pool.Get().(*[]byte)\n\tif ok && cap(*bs) >= size {\n\t\tif p.shouldZero {\n\t\t\tclear((*bs)[:cap(*bs)])\n\t\t}\n\t\t*bs = (*bs)[:size]\n\t\treturn bs\n\t}\n\n\t// A buffer was pulled from the pool, but it is too small. Put it back in\n\t// the pool and create one large enough.\n\tif ok {\n\t\tp.pool.Put(bs)\n\t}\n\n\t// If we're going to allocate, round up to the nearest page. This way if\n\t// requests frequently arrive with small variation we don't allocate\n\t// repeatedly if we get unlucky and they increase over time. By default we\n\t// only allocate here if size > 1MiB. Because goPageSize is a power of 2, we\n\t// can round up efficiently.\n\tallocSize := (size + goPageSize - 1) & ^(goPageSize - 1)\n\n\tb := make([]byte, size, allocSize)\n\treturn &b\n}\n\n// Put returns a buffer to the pool.\nfunc (p *SimpleBufferPool) Put(buf *[]byte) {\n\tp.pool.Put(buf)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/metadata/metadata.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package metadata contains functions to set and get metadata from addresses.\n//\n// This package is experimental.\npackage metadata\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\ntype mdKeyType string\n\nconst mdKey = mdKeyType(\"grpc.internal.address.metadata\")\n\ntype mdValue metadata.MD\n\nfunc (m mdValue) Equal(o any) bool {\n\tom, ok := o.(mdValue)\n\tif !ok {\n\t\treturn false\n\t}\n\tif len(m) != len(om) {\n\t\treturn false\n\t}\n\tfor k, v := range m {\n\t\tov := om[k]\n\t\tif len(ov) != len(v) {\n\t\t\treturn false\n\t\t}\n\t\tfor i, ve := range v {\n\t\t\tif ov[i] != ve {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\n// Get returns the metadata of addr.\nfunc Get(addr resolver.Address) metadata.MD {\n\tattrs := addr.Attributes\n\tif attrs == nil {\n\t\treturn nil\n\t}\n\tmd, _ := attrs.Value(mdKey).(mdValue)\n\treturn metadata.MD(md)\n}\n\n// Set sets (overrides) the metadata in addr.\n//\n// When a SubConn is created with this address, the RPCs sent on it will all\n// have this metadata.\nfunc Set(addr resolver.Address, md metadata.MD) resolver.Address {\n\taddr.Attributes = addr.Attributes.WithValue(mdKey, mdValue(md))\n\treturn addr\n}\n\n// Validate validates every pair in md with ValidatePair.\nfunc Validate(md metadata.MD) error {\n\tfor k, vals := range md {\n\t\tif err := ValidatePair(k, vals...); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// hasNotPrintable return true if msg contains any characters which are not in %x20-%x7E\nfunc hasNotPrintable(msg string) bool {\n\t// for i that saving a conversion if not using for range\n\tfor i := 0; i < len(msg); i++ {\n\t\tif msg[i] < 0x20 || msg[i] > 0x7E {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ValidateKey validates a key with the following rules (pseudo-headers are\n// skipped):\n// - the key must contain one or more characters.\n// - the characters in the key must be in [0-9 a-z _ - .].\nfunc ValidateKey(key string) error {\n\t// key should not be empty\n\tif key == \"\" {\n\t\treturn fmt.Errorf(\"there is an empty key in the header\")\n\t}\n\t// pseudo-header will be ignored\n\tif key[0] == ':' {\n\t\treturn nil\n\t}\n\t// check key, for i that saving a conversion if not using for range\n\tfor i := 0; i < len(key); i++ {\n\t\tr := key[i]\n\t\tif !(r >= 'a' && r <= 'z') && !(r >= '0' && r <= '9') && r != '.' && r != '-' && r != '_' {\n\t\t\treturn fmt.Errorf(\"header key %q contains illegal characters not in [0-9a-z-_.]\", key)\n\t\t}\n\t}\n\treturn nil\n}\n\n// ValidatePair validates a key-value pair with the following rules\n// (pseudo-header are skipped):\n//   - the key must contain one or more characters.\n//   - the characters in the key must be in [0-9 a-z _ - .].\n//   - if the key ends with a \"-bin\" suffix, no validation of the corresponding\n//     value is performed.\n//   - the characters in every value must be printable (in [%x20-%x7E]).\nfunc ValidatePair(key string, vals ...string) error {\n\tif err := ValidateKey(key); err != nil {\n\t\treturn err\n\t}\n\tif strings.HasSuffix(key, \"-bin\") {\n\t\treturn nil\n\t}\n\t// check value\n\tfor _, val := range vals {\n\t\tif hasNotPrintable(val) {\n\t\t\treturn fmt.Errorf(\"header key %q contains value with non-printable ASCII characters\", key)\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/pretty/pretty.go",
    "content": "/*\n *\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package pretty defines helper functions to pretty-print structs for logging.\npackage pretty\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/encoding/protojson\"\n\t\"google.golang.org/protobuf/protoadapt\"\n)\n\nconst jsonIndent = \"  \"\n\n// ToJSON marshals the input into a json string.\n//\n// If marshal fails, it falls back to fmt.Sprintf(\"%+v\").\nfunc ToJSON(e any) string {\n\tif ee, ok := e.(protoadapt.MessageV1); ok {\n\t\te = protoadapt.MessageV2Of(ee)\n\t}\n\n\tif ee, ok := e.(protoadapt.MessageV2); ok {\n\t\tmm := protojson.MarshalOptions{\n\t\t\tIndent:    jsonIndent,\n\t\t\tMultiline: true,\n\t\t}\n\t\tret, err := mm.Marshal(ee)\n\t\tif err != nil {\n\t\t\t// This may fail for proto.Anys, e.g. for xDS v2, LDS, the v2\n\t\t\t// messages are not imported, and this will fail because the message\n\t\t\t// is not found.\n\t\t\treturn fmt.Sprintf(\"%+v\", ee)\n\t\t}\n\t\treturn string(ret)\n\t}\n\n\tret, err := json.MarshalIndent(e, \"\", jsonIndent)\n\tif err != nil {\n\t\treturn fmt.Sprintf(\"%+v\", e)\n\t}\n\treturn string(ret)\n}\n\n// FormatJSON formats the input json bytes with indentation.\n//\n// If Indent fails, it returns the unchanged input as string.\nfunc FormatJSON(b []byte) string {\n\tvar out bytes.Buffer\n\terr := json.Indent(&out, b, \"\", jsonIndent)\n\tif err != nil {\n\t\treturn string(b)\n\t}\n\treturn out.String()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/proxyattributes/proxyattributes.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package proxyattributes contains functions for getting and setting proxy\n// attributes like the CONNECT address and user info.\npackage proxyattributes\n\nimport (\n\t\"net/url\"\n\n\t\"google.golang.org/grpc/resolver\"\n)\n\ntype keyType string\n\nconst proxyOptionsKey = keyType(\"grpc.resolver.delegatingresolver.proxyOptions\")\n\n// Options holds the proxy connection details needed during the CONNECT\n// handshake.\ntype Options struct {\n\tUser        *url.Userinfo\n\tConnectAddr string\n}\n\n// Set returns a copy of addr with opts set in its attributes.\nfunc Set(addr resolver.Address, opts Options) resolver.Address {\n\taddr.Attributes = addr.Attributes.WithValue(proxyOptionsKey, opts)\n\treturn addr\n}\n\n// Get returns the Options for the proxy [resolver.Address] and a boolean\n// value representing if the attribute is present or not. The returned data\n// should not be mutated.\nfunc Get(addr resolver.Address) (Options, bool) {\n\tif a := addr.Attributes.Value(proxyOptionsKey); a != nil {\n\t\treturn a.(Options), true\n\t}\n\treturn Options{}, false\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/resolver/config_selector.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package resolver provides internal resolver-related functionality.\npackage resolver\n\nimport (\n\t\"context\"\n\t\"sync\"\n\n\t\"google.golang.org/grpc/internal/serviceconfig\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\n// ConfigSelector controls what configuration to use for every RPC.\ntype ConfigSelector interface {\n\t// Selects the configuration for the RPC, or terminates it using the error.\n\t// This error will be converted by the gRPC library to a status error with\n\t// code UNKNOWN if it is not returned as a status error.\n\tSelectConfig(RPCInfo) (*RPCConfig, error)\n}\n\n// RPCInfo contains RPC information needed by a ConfigSelector.\ntype RPCInfo struct {\n\t// Context is the user's context for the RPC and contains headers and\n\t// application timeout.  It is passed for interception purposes and for\n\t// efficiency reasons.  SelectConfig should not be blocking.\n\tContext context.Context\n\tMethod  string // i.e. \"/Service/Method\"\n}\n\n// RPCConfig describes the configuration to use for each RPC.\ntype RPCConfig struct {\n\t// The context to use for the remainder of the RPC; can pass info to LB\n\t// policy or affect timeout or metadata.\n\tContext      context.Context\n\tMethodConfig serviceconfig.MethodConfig // configuration to use for this RPC\n\tOnCommitted  func()                     // Called when the RPC has been committed (retries no longer possible)\n\tInterceptor  ClientInterceptor\n}\n\n// ClientStream is the same as grpc.ClientStream, but defined here for circular\n// dependency reasons.\ntype ClientStream interface {\n\t// Header returns the header metadata received from the server if there\n\t// is any. It blocks if the metadata is not ready to read.\n\tHeader() (metadata.MD, error)\n\t// Trailer returns the trailer metadata from the server, if there is any.\n\t// It must only be called after stream.CloseAndRecv has returned, or\n\t// stream.Recv has returned a non-nil error (including io.EOF).\n\tTrailer() metadata.MD\n\t// CloseSend closes the send direction of the stream. It closes the stream\n\t// when non-nil error is met. It is also not safe to call CloseSend\n\t// concurrently with SendMsg.\n\tCloseSend() error\n\t// Context returns the context for this stream.\n\t//\n\t// It should not be called until after Header or RecvMsg has returned. Once\n\t// called, subsequent client-side retries are disabled.\n\tContext() context.Context\n\t// SendMsg is generally called by generated code. On error, SendMsg aborts\n\t// the stream. If the error was generated by the client, the status is\n\t// returned directly; otherwise, io.EOF is returned and the status of\n\t// the stream may be discovered using RecvMsg.\n\t//\n\t// SendMsg blocks until:\n\t//   - There is sufficient flow control to schedule m with the transport, or\n\t//   - The stream is done, or\n\t//   - The stream breaks.\n\t//\n\t// SendMsg does not wait until the message is received by the server. An\n\t// untimely stream closure may result in lost messages. To ensure delivery,\n\t// users should ensure the RPC completed successfully using RecvMsg.\n\t//\n\t// It is safe to have a goroutine calling SendMsg and another goroutine\n\t// calling RecvMsg on the same stream at the same time, but it is not safe\n\t// to call SendMsg on the same stream in different goroutines. It is also\n\t// not safe to call CloseSend concurrently with SendMsg.\n\tSendMsg(m any) error\n\t// RecvMsg blocks until it receives a message into m or the stream is\n\t// done. It returns io.EOF when the stream completes successfully. On\n\t// any other error, the stream is aborted and the error contains the RPC\n\t// status.\n\t//\n\t// It is safe to have a goroutine calling SendMsg and another goroutine\n\t// calling RecvMsg on the same stream at the same time, but it is not\n\t// safe to call RecvMsg on the same stream in different goroutines.\n\tRecvMsg(m any) error\n}\n\n// ClientInterceptor is an interceptor for gRPC client streams.\ntype ClientInterceptor interface {\n\t// NewStream produces a ClientStream for an RPC which may optionally use\n\t// the provided function to produce a stream for delegation.  Note:\n\t// RPCInfo.Context should not be used (will be nil).\n\t//\n\t// done is invoked when the RPC is finished using its connection, or could\n\t// not be assigned a connection.  RPC operations may still occur on\n\t// ClientStream after done is called, since the interceptor is invoked by\n\t// application-layer operations.  done must never be nil when called.\n\tNewStream(ctx context.Context, ri RPCInfo, done func(), newStream func(ctx context.Context, done func()) (ClientStream, error)) (ClientStream, error)\n\t// Close closes the interceptor. Once called, no new calls to NewStream are\n\t// accepted. Ongoing calls to NewStream are allowed to complete.\n\tClose()\n}\n\n// ServerInterceptor is an interceptor for incoming RPC's on gRPC server side.\ntype ServerInterceptor interface {\n\t// AllowRPC checks if an incoming RPC is allowed to proceed based on\n\t// information about connection RPC was received on, and HTTP Headers. This\n\t// information will be piped into context.\n\tAllowRPC(ctx context.Context) error // TODO: Make this a real interceptor for filters such as rate limiting.\n\t// Close closes the interceptor. Once called, no new calls to NewStream are\n\t// accepted. Ongoing calls to NewStream are allowed to complete.\n\tClose()\n}\n\ntype csKeyType string\n\nconst csKey = csKeyType(\"grpc.internal.resolver.configSelector\")\n\n// SetConfigSelector sets the config selector in state and returns the new\n// state.\nfunc SetConfigSelector(state resolver.State, cs ConfigSelector) resolver.State {\n\tstate.Attributes = state.Attributes.WithValue(csKey, cs)\n\treturn state\n}\n\n// GetConfigSelector retrieves the config selector from state, if present, and\n// returns it or nil if absent.\nfunc GetConfigSelector(state resolver.State) ConfigSelector {\n\tcs, _ := state.Attributes.Value(csKey).(ConfigSelector)\n\treturn cs\n}\n\n// SafeConfigSelector allows for safe switching of ConfigSelector\n// implementations such that previous values are guaranteed to not be in use\n// when UpdateConfigSelector returns.\ntype SafeConfigSelector struct {\n\tmu sync.RWMutex\n\tcs ConfigSelector\n}\n\n// UpdateConfigSelector swaps to the provided ConfigSelector and blocks until\n// all uses of the previous ConfigSelector have completed.\nfunc (scs *SafeConfigSelector) UpdateConfigSelector(cs ConfigSelector) {\n\tscs.mu.Lock()\n\tdefer scs.mu.Unlock()\n\tscs.cs = cs\n}\n\n// SelectConfig defers to the current ConfigSelector in scs.\nfunc (scs *SafeConfigSelector) SelectConfig(r RPCInfo) (*RPCConfig, error) {\n\tscs.mu.RLock()\n\tdefer scs.mu.RUnlock()\n\treturn scs.cs.SelectConfig(r)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package delegatingresolver implements a resolver capable of resolving both\n// target URIs and proxy addresses.\npackage delegatingresolver\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"sync\"\n\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/internal/envconfig\"\n\t\"google.golang.org/grpc/internal/proxyattributes\"\n\t\"google.golang.org/grpc/internal/transport\"\n\t\"google.golang.org/grpc/internal/transport/networktype\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nvar (\n\tlogger = grpclog.Component(\"delegating-resolver\")\n\t// HTTPSProxyFromEnvironment will be overwritten in the tests\n\tHTTPSProxyFromEnvironment = http.ProxyFromEnvironment\n)\n\nconst defaultPort = \"443\"\n\n// delegatingResolver manages both target URI and proxy address resolution by\n// delegating these tasks to separate child resolvers. Essentially, it acts as\n// an intermediary between the gRPC ClientConn and the child resolvers.\n//\n// It implements the [resolver.Resolver] interface.\ntype delegatingResolver struct {\n\ttarget   resolver.Target     // parsed target URI to be resolved\n\tcc       resolver.ClientConn // gRPC ClientConn\n\tproxyURL *url.URL            // proxy URL, derived from proxy environment and target\n\n\t// We do not hold both mu and childMu in the same goroutine. Avoid holding\n\t// both locks when calling into the child, as the child resolver may\n\t// synchronously callback into the channel.\n\tmu                  sync.Mutex         // protects all the fields below\n\ttargetResolverState *resolver.State    // state of the target resolver\n\tproxyAddrs          []resolver.Address // resolved proxy addresses; empty if no proxy is configured\n\n\t// childMu serializes calls into child resolvers. It also protects access to\n\t// the following fields.\n\tchildMu        sync.Mutex\n\ttargetResolver resolver.Resolver // resolver for the target URI, based on its scheme\n\tproxyResolver  resolver.Resolver // resolver for the proxy URI; nil if no proxy is configured\n}\n\n// nopResolver is a resolver that does nothing.\ntype nopResolver struct{}\n\nfunc (nopResolver) ResolveNow(resolver.ResolveNowOptions) {}\n\nfunc (nopResolver) Close() {}\n\n// proxyURLForTarget determines the proxy URL for the given address based on the\n// environment. It can return the following:\n//   - nil URL, nil error: No proxy is configured or the address is excluded\n//     using the `NO_PROXY` environment variable or if req.URL.Host is\n//     \"localhost\" (with or without // a port number)\n//   - nil URL, non-nil error: An error occurred while retrieving the proxy URL.\n//   - non-nil URL, nil error: A proxy is configured, and the proxy URL was\n//     retrieved successfully without any errors.\nfunc proxyURLForTarget(address string) (*url.URL, error) {\n\treq := &http.Request{URL: &url.URL{\n\t\tScheme: \"https\",\n\t\tHost:   address,\n\t}}\n\treturn HTTPSProxyFromEnvironment(req)\n}\n\n// New creates a new delegating resolver that can create up to two child\n// resolvers:\n//   - one to resolve the proxy address specified using the supported\n//     environment variables. This uses the registered resolver for the \"dns\"\n//     scheme. It is lazily built when a target resolver update contains at least\n//     one TCP address.\n//   - one to resolve the target URI using the resolver specified by the scheme\n//     in the target URI or specified by the user using the WithResolvers dial\n//     option. As a special case, if the target URI's scheme is \"dns\" and a\n//     proxy is specified using the supported environment variables, the target\n//     URI's path portion is used as the resolved address unless target\n//     resolution is enabled using the dial option.\nfunc New(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions, targetResolverBuilder resolver.Builder, targetResolutionEnabled bool) (resolver.Resolver, error) {\n\tr := &delegatingResolver{\n\t\ttarget:         target,\n\t\tcc:             cc,\n\t\tproxyResolver:  nopResolver{},\n\t\ttargetResolver: nopResolver{},\n\t}\n\n\taddr := target.Endpoint()\n\tvar err error\n\tif target.URL.Scheme == \"dns\" && !targetResolutionEnabled && envconfig.EnableDefaultPortForProxyTarget {\n\t\taddr, err = parseTarget(addr)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"delegating_resolver: invalid target address %q: %v\", target.Endpoint(), err)\n\t\t}\n\t}\n\n\tr.proxyURL, err = proxyURLForTarget(addr)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"delegating_resolver: failed to determine proxy URL for target %q: %v\", target, err)\n\t}\n\n\t// proxy is not configured or proxy address excluded using `NO_PROXY` env\n\t// var, so only target resolver is used.\n\tif r.proxyURL == nil {\n\t\treturn targetResolverBuilder.Build(target, cc, opts)\n\t}\n\n\tif logger.V(2) {\n\t\tlogger.Infof(\"Proxy URL detected : %s\", r.proxyURL)\n\t}\n\n\t// Resolver updates from one child may trigger calls into the other. Block\n\t// updates until the children are initialized.\n\tr.childMu.Lock()\n\tdefer r.childMu.Unlock()\n\t// When the scheme is 'dns' and target resolution on client is not enabled,\n\t// resolution should be handled by the proxy, not the client. Therefore, we\n\t// bypass the target resolver and store the unresolved target address.\n\tif target.URL.Scheme == \"dns\" && !targetResolutionEnabled {\n\t\tr.targetResolverState = &resolver.State{\n\t\t\tAddresses: []resolver.Address{{Addr: addr}},\n\t\t\tEndpoints: []resolver.Endpoint{{Addresses: []resolver.Address{{Addr: addr}}}},\n\t\t}\n\t\tr.updateTargetResolverState(*r.targetResolverState)\n\t\treturn r, nil\n\t}\n\twcc := &wrappingClientConn{\n\t\tstateListener: r.updateTargetResolverState,\n\t\tparent:        r,\n\t}\n\tif r.targetResolver, err = targetResolverBuilder.Build(target, wcc, opts); err != nil {\n\t\treturn nil, fmt.Errorf(\"delegating_resolver: unable to build the resolver for target %s: %v\", target, err)\n\t}\n\treturn r, nil\n}\n\n// proxyURIResolver creates a resolver for resolving proxy URIs using the \"dns\"\n// scheme. It adjusts the proxyURL to conform to the \"dns:///\" format and builds\n// a resolver with a wrappingClientConn to capture resolved addresses.\nfunc (r *delegatingResolver) proxyURIResolver(opts resolver.BuildOptions) (resolver.Resolver, error) {\n\tproxyBuilder := resolver.Get(\"dns\")\n\tif proxyBuilder == nil {\n\t\tpanic(\"delegating_resolver: resolver for proxy not found for scheme dns\")\n\t}\n\turl := *r.proxyURL\n\turl.Scheme = \"dns\"\n\turl.Path = \"/\" + r.proxyURL.Host\n\turl.Host = \"\" // Clear the Host field to conform to the \"dns:///\" format\n\n\tproxyTarget := resolver.Target{URL: url}\n\twcc := &wrappingClientConn{\n\t\tstateListener: r.updateProxyResolverState,\n\t\tparent:        r,\n\t}\n\treturn proxyBuilder.Build(proxyTarget, wcc, opts)\n}\n\nfunc (r *delegatingResolver) ResolveNow(o resolver.ResolveNowOptions) {\n\tr.childMu.Lock()\n\tdefer r.childMu.Unlock()\n\tr.targetResolver.ResolveNow(o)\n\tr.proxyResolver.ResolveNow(o)\n}\n\nfunc (r *delegatingResolver) Close() {\n\tr.childMu.Lock()\n\tdefer r.childMu.Unlock()\n\tr.targetResolver.Close()\n\tr.targetResolver = nil\n\n\tr.proxyResolver.Close()\n\tr.proxyResolver = nil\n}\n\nfunc needsProxyResolver(state *resolver.State) bool {\n\tfor _, addr := range state.Addresses {\n\t\tif !skipProxy(addr) {\n\t\t\treturn true\n\t\t}\n\t}\n\tfor _, endpoint := range state.Endpoints {\n\t\tfor _, addr := range endpoint.Addresses {\n\t\t\tif !skipProxy(addr) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\n// parseTarget takes a target string and ensures it is a valid \"host:port\" target.\n//\n// It does the following:\n//  1. If the target already has a port (e.g., \"host:port\", \"[ipv6]:port\"),\n//     it is returned as is.\n//  2. If the host part is empty (e.g., \":80\"), it defaults to \"localhost\",\n//     returning \"localhost:80\".\n//  3. If the target is missing a port (e.g., \"host\", \"ipv6\"), the defaultPort\n//     is added.\n//\n// An error is returned for empty targets or targets with a trailing colon\n// but no port (e.g., \"host:\").\nfunc parseTarget(target string) (string, error) {\n\tif target == \"\" {\n\t\treturn \"\", fmt.Errorf(\"missing address\")\n\t}\n\n\thost, port, err := net.SplitHostPort(target)\n\tif err != nil {\n\t\t// If SplitHostPort fails, it's likely because the port is missing.\n\t\t// We append the default port and return the result.\n\t\treturn net.JoinHostPort(target, defaultPort), nil\n\t}\n\n\t// If SplitHostPort succeeds, we check for edge cases.\n\tif port == \"\" {\n\t\t// A success with an empty port means the target had a trailing colon,\n\t\t// e.g., \"host:\", which is an error.\n\t\treturn \"\", fmt.Errorf(\"missing port after port-separator colon\")\n\t}\n\tif host == \"\" {\n\t\t// A success with an empty host means the target was like \":80\".\n\t\t// We default the host to \"localhost\".\n\t\thost = \"localhost\"\n\t}\n\treturn net.JoinHostPort(host, port), nil\n}\n\nfunc skipProxy(address resolver.Address) bool {\n\t// Avoid proxy when network is not tcp.\n\tnetworkType, ok := networktype.Get(address)\n\tif !ok {\n\t\tnetworkType, _ = transport.ParseDialTarget(address.Addr)\n\t}\n\tif networkType != \"tcp\" {\n\t\treturn true\n\t}\n\n\treq := &http.Request{URL: &url.URL{\n\t\tScheme: \"https\",\n\t\tHost:   address.Addr,\n\t}}\n\t// Avoid proxy when address included in `NO_PROXY` environment variable or\n\t// fails to get the proxy address.\n\turl, err := HTTPSProxyFromEnvironment(req)\n\tif err != nil || url == nil {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// updateClientConnStateLocked constructs a combined list of addresses by\n// pairing each proxy address with every target address of type TCP. For each\n// pair, it creates a new [resolver.Address] using the proxy address and\n// attaches the corresponding target address and user info as attributes. Target\n// addresses that are not of type TCP are appended to the list as-is. The\n// function returns nil if either resolver has not yet provided an update, and\n// returns the result of ClientConn.UpdateState once both resolvers have\n// provided at least one update.\nfunc (r *delegatingResolver) updateClientConnStateLocked() error {\n\tif r.targetResolverState == nil || r.proxyAddrs == nil {\n\t\treturn nil\n\t}\n\n\t// If multiple resolved proxy addresses are present, we send only the\n\t// unresolved proxy host and let net.Dial handle the proxy host name\n\t// resolution when creating the transport. Sending all resolved addresses\n\t// would increase the number of addresses passed to the ClientConn and\n\t// subsequently to load balancing (LB) policies like Round Robin, leading\n\t// to additional TCP connections. However, if there's only one resolved\n\t// proxy address, we send it directly, as it doesn't affect the address\n\t// count returned by the target resolver and the address count sent to the\n\t// ClientConn.\n\tvar proxyAddr resolver.Address\n\tif len(r.proxyAddrs) == 1 {\n\t\tproxyAddr = r.proxyAddrs[0]\n\t} else {\n\t\tproxyAddr = resolver.Address{Addr: r.proxyURL.Host}\n\t}\n\tvar addresses []resolver.Address\n\tfor _, targetAddr := range (*r.targetResolverState).Addresses {\n\t\tif skipProxy(targetAddr) {\n\t\t\taddresses = append(addresses, targetAddr)\n\t\t\tcontinue\n\t\t}\n\t\taddresses = append(addresses, proxyattributes.Set(proxyAddr, proxyattributes.Options{\n\t\t\tUser:        r.proxyURL.User,\n\t\t\tConnectAddr: targetAddr.Addr,\n\t\t}))\n\t}\n\n\t// For each target endpoint, construct a new [resolver.Endpoint] that\n\t// includes all addresses from all proxy endpoints and the addresses from\n\t// that target endpoint, preserving the number of target endpoints.\n\tvar endpoints []resolver.Endpoint\n\tfor _, endpt := range (*r.targetResolverState).Endpoints {\n\t\tvar addrs []resolver.Address\n\t\tfor _, targetAddr := range endpt.Addresses {\n\t\t\t// Avoid proxy when network is not tcp.\n\t\t\tif skipProxy(targetAddr) {\n\t\t\t\taddrs = append(addrs, targetAddr)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor _, proxyAddr := range r.proxyAddrs {\n\t\t\t\taddrs = append(addrs, proxyattributes.Set(proxyAddr, proxyattributes.Options{\n\t\t\t\t\tUser:        r.proxyURL.User,\n\t\t\t\t\tConnectAddr: targetAddr.Addr,\n\t\t\t\t}))\n\t\t\t}\n\t\t}\n\t\tendpoints = append(endpoints, resolver.Endpoint{Addresses: addrs})\n\t}\n\t// Use the targetResolverState for its service config and attributes\n\t// contents. The state update is only sent after both the target and proxy\n\t// resolvers have sent their updates, and curState has been updated with the\n\t// combined addresses.\n\tcurState := *r.targetResolverState\n\tcurState.Addresses = addresses\n\tcurState.Endpoints = endpoints\n\treturn r.cc.UpdateState(curState)\n}\n\n// updateProxyResolverState updates the proxy resolver state by storing proxy\n// addresses and endpoints, marking the resolver as ready, and triggering a\n// state update if both proxy and target resolvers are ready. If the ClientConn\n// returns a non-nil error, it calls `ResolveNow()` on the target resolver.  It\n// is a StateListener function of wrappingClientConn passed to the proxy\n// resolver.\nfunc (r *delegatingResolver) updateProxyResolverState(state resolver.State) error {\n\tr.mu.Lock()\n\tdefer r.mu.Unlock()\n\tif logger.V(2) {\n\t\tlogger.Infof(\"Addresses received from proxy resolver: %s\", state.Addresses)\n\t}\n\tif len(state.Endpoints) > 0 {\n\t\t// We expect exactly one address per endpoint because the proxy resolver\n\t\t// uses \"dns\" resolution.\n\t\tr.proxyAddrs = make([]resolver.Address, 0, len(state.Endpoints))\n\t\tfor _, endpoint := range state.Endpoints {\n\t\t\tr.proxyAddrs = append(r.proxyAddrs, endpoint.Addresses...)\n\t\t}\n\t} else if state.Addresses != nil {\n\t\tr.proxyAddrs = state.Addresses\n\t} else {\n\t\tr.proxyAddrs = []resolver.Address{} // ensure proxyAddrs is non-nil to indicate an update has been received\n\t}\n\terr := r.updateClientConnStateLocked()\n\t// Another possible approach was to block until updates are received from\n\t// both resolvers. But this is not used because calling `New()` triggers\n\t// `Build()` for the first resolver, which calls `UpdateState()`. And the\n\t// second resolver hasn't sent an update yet, so it would cause `New()` to\n\t// block indefinitely.\n\tif err != nil {\n\t\tgo func() {\n\t\t\tr.childMu.Lock()\n\t\t\tdefer r.childMu.Unlock()\n\t\t\tif r.targetResolver != nil {\n\t\t\t\tr.targetResolver.ResolveNow(resolver.ResolveNowOptions{})\n\t\t\t}\n\t\t}()\n\t}\n\treturn err\n}\n\n// updateTargetResolverState is the StateListener function provided to the\n// target resolver via wrappingClientConn. It updates the resolver state and\n// marks the target resolver as ready. If the update includes at least one TCP\n// address and the proxy resolver has not yet been constructed, it initializes\n// the proxy resolver. A combined state update is triggered once both resolvers\n// are ready. If all addresses are non-TCP, it proceeds without waiting for the\n// proxy resolver. If ClientConn.UpdateState returns a non-nil error,\n// ResolveNow() is called on the proxy resolver.\nfunc (r *delegatingResolver) updateTargetResolverState(state resolver.State) error {\n\tr.mu.Lock()\n\tdefer r.mu.Unlock()\n\n\tif logger.V(2) {\n\t\tlogger.Infof(\"Addresses received from target resolver: %v\", state.Addresses)\n\t}\n\tr.targetResolverState = &state\n\t// If all addresses returned by the target resolver have a non-TCP network\n\t// type, or are listed in the `NO_PROXY` environment variable, do not wait\n\t// for proxy update.\n\tif !needsProxyResolver(r.targetResolverState) {\n\t\treturn r.cc.UpdateState(*r.targetResolverState)\n\t}\n\n\t// The proxy resolver may be rebuilt multiple times, specifically each time\n\t// the target resolver sends an update, even if the target resolver is built\n\t// successfully but building the proxy resolver fails.\n\tif len(r.proxyAddrs) == 0 {\n\t\tgo func() {\n\t\t\tr.childMu.Lock()\n\t\t\tdefer r.childMu.Unlock()\n\t\t\tif _, ok := r.proxyResolver.(nopResolver); !ok {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tproxyResolver, err := r.proxyURIResolver(resolver.BuildOptions{})\n\t\t\tif err != nil {\n\t\t\t\tr.cc.ReportError(fmt.Errorf(\"delegating_resolver: unable to build the proxy resolver: %v\", err))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tr.proxyResolver = proxyResolver\n\t\t}()\n\t}\n\n\terr := r.updateClientConnStateLocked()\n\tif err != nil {\n\t\tgo func() {\n\t\t\tr.childMu.Lock()\n\t\t\tdefer r.childMu.Unlock()\n\t\t\tif r.proxyResolver != nil {\n\t\t\t\tr.proxyResolver.ResolveNow(resolver.ResolveNowOptions{})\n\t\t\t}\n\t\t}()\n\t}\n\treturn nil\n}\n\n// wrappingClientConn serves as an intermediary between the parent ClientConn\n// and the child resolvers created here. It implements the resolver.ClientConn\n// interface and is passed in that capacity to the child resolvers.\ntype wrappingClientConn struct {\n\t// Callback to deliver resolver state updates\n\tstateListener func(state resolver.State) error\n\tparent        *delegatingResolver\n}\n\n// UpdateState receives resolver state updates and forwards them to the\n// appropriate listener function (either for the proxy or target resolver).\nfunc (wcc *wrappingClientConn) UpdateState(state resolver.State) error {\n\treturn wcc.stateListener(state)\n}\n\n// ReportError intercepts errors from the child resolvers and passes them to\n// ClientConn.\nfunc (wcc *wrappingClientConn) ReportError(err error) {\n\twcc.parent.cc.ReportError(err)\n}\n\n// NewAddress intercepts the new resolved address from the child resolvers and\n// passes them to ClientConn.\nfunc (wcc *wrappingClientConn) NewAddress(addrs []resolver.Address) {\n\twcc.UpdateState(resolver.State{Addresses: addrs})\n}\n\n// ParseServiceConfig parses the provided service config and returns an object\n// that provides the parsed config.\nfunc (wcc *wrappingClientConn) ParseServiceConfig(serviceConfigJSON string) *serviceconfig.ParseResult {\n\treturn wcc.parent.cc.ParseServiceConfig(serviceConfigJSON)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package dns implements a dns resolver to be installed as the default resolver\n// in grpc.\npackage dns\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\trand \"math/rand/v2\"\n\t\"net\"\n\t\"net/netip\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\tgrpclbstate \"google.golang.org/grpc/balancer/grpclb/state\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/internal/backoff\"\n\t\"google.golang.org/grpc/internal/envconfig\"\n\t\"google.golang.org/grpc/internal/resolver/dns/internal\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nvar (\n\t// EnableSRVLookups controls whether the DNS resolver attempts to fetch gRPCLB\n\t// addresses from SRV records.  Must not be changed after init time.\n\tEnableSRVLookups = false\n\n\t// MinResolutionInterval is the minimum interval at which re-resolutions are\n\t// allowed. This helps to prevent excessive re-resolution.\n\tMinResolutionInterval = 30 * time.Second\n\n\t// ResolvingTimeout specifies the maximum duration for a DNS resolution request.\n\t// If the timeout expires before a response is received, the request will be canceled.\n\t//\n\t// It is recommended to set this value at application startup. Avoid modifying this variable\n\t// after initialization as it's not thread-safe for concurrent modification.\n\tResolvingTimeout = 30 * time.Second\n\n\tlogger = grpclog.Component(\"dns\")\n)\n\nfunc init() {\n\tresolver.Register(NewBuilder())\n\tinternal.TimeAfterFunc = time.After\n\tinternal.TimeNowFunc = time.Now\n\tinternal.TimeUntilFunc = time.Until\n\tinternal.NewNetResolver = newNetResolver\n\tinternal.AddressDialer = addressDialer\n}\n\nconst (\n\tdefaultPort       = \"443\"\n\tdefaultDNSSvrPort = \"53\"\n\tgolang            = \"GO\"\n\t// txtPrefix is the prefix string to be prepended to the host name for txt\n\t// record lookup.\n\ttxtPrefix = \"_grpc_config.\"\n\t// In DNS, service config is encoded in a TXT record via the mechanism\n\t// described in RFC-1464 using the attribute name grpc_config.\n\ttxtAttribute = \"grpc_config=\"\n)\n\nvar addressDialer = func(address string) func(context.Context, string, string) (net.Conn, error) {\n\treturn func(ctx context.Context, network, _ string) (net.Conn, error) {\n\t\tvar dialer net.Dialer\n\t\treturn dialer.DialContext(ctx, network, address)\n\t}\n}\n\nvar newNetResolver = func(authority string) (internal.NetResolver, error) {\n\tif authority == \"\" {\n\t\treturn net.DefaultResolver, nil\n\t}\n\n\thost, port, err := parseTarget(authority, defaultDNSSvrPort)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tauthorityWithPort := net.JoinHostPort(host, port)\n\n\treturn &net.Resolver{\n\t\tPreferGo: true,\n\t\tDial:     internal.AddressDialer(authorityWithPort),\n\t}, nil\n}\n\n// NewBuilder creates a dnsBuilder which is used to factory DNS resolvers.\nfunc NewBuilder() resolver.Builder {\n\treturn &dnsBuilder{}\n}\n\ntype dnsBuilder struct{}\n\n// Build creates and starts a DNS resolver that watches the name resolution of\n// the target.\nfunc (b *dnsBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) {\n\thost, port, err := parseTarget(target.Endpoint(), defaultPort)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// IP address.\n\tif ipAddr, err := formatIP(host); err == nil {\n\t\taddr := []resolver.Address{{Addr: ipAddr + \":\" + port}}\n\t\tcc.UpdateState(resolver.State{\n\t\t\tAddresses: addr,\n\t\t\tEndpoints: []resolver.Endpoint{{Addresses: addr}},\n\t\t})\n\t\treturn deadResolver{}, nil\n\t}\n\n\t// DNS address (non-IP).\n\tctx, cancel := context.WithCancel(context.Background())\n\td := &dnsResolver{\n\t\thost:                host,\n\t\tport:                port,\n\t\tctx:                 ctx,\n\t\tcancel:              cancel,\n\t\tcc:                  cc,\n\t\trn:                  make(chan struct{}, 1),\n\t\tenableServiceConfig: envconfig.EnableTXTServiceConfig && !opts.DisableServiceConfig,\n\t}\n\n\td.resolver, err = internal.NewNetResolver(target.URL.Host)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\td.wg.Add(1)\n\tgo d.watcher()\n\treturn d, nil\n}\n\n// Scheme returns the naming scheme of this resolver builder, which is \"dns\".\nfunc (b *dnsBuilder) Scheme() string {\n\treturn \"dns\"\n}\n\n// deadResolver is a resolver that does nothing.\ntype deadResolver struct{}\n\nfunc (deadResolver) ResolveNow(resolver.ResolveNowOptions) {}\n\nfunc (deadResolver) Close() {}\n\n// dnsResolver watches for the name resolution update for a non-IP target.\ntype dnsResolver struct {\n\thost     string\n\tport     string\n\tresolver internal.NetResolver\n\tctx      context.Context\n\tcancel   context.CancelFunc\n\tcc       resolver.ClientConn\n\t// rn channel is used by ResolveNow() to force an immediate resolution of the\n\t// target.\n\trn chan struct{}\n\t// wg is used to enforce Close() to return after the watcher() goroutine has\n\t// finished. Otherwise, data race will be possible. [Race Example] in\n\t// dns_resolver_test we replace the real lookup functions with mocked ones to\n\t// facilitate testing. If Close() doesn't wait for watcher() goroutine\n\t// finishes, race detector sometimes will warn lookup (READ the lookup\n\t// function pointers) inside watcher() goroutine has data race with\n\t// replaceNetFunc (WRITE the lookup function pointers).\n\twg                  sync.WaitGroup\n\tenableServiceConfig bool\n}\n\n// ResolveNow invoke an immediate resolution of the target that this\n// dnsResolver watches.\nfunc (d *dnsResolver) ResolveNow(resolver.ResolveNowOptions) {\n\tselect {\n\tcase d.rn <- struct{}{}:\n\tdefault:\n\t}\n}\n\n// Close closes the dnsResolver.\nfunc (d *dnsResolver) Close() {\n\td.cancel()\n\td.wg.Wait()\n}\n\nfunc (d *dnsResolver) watcher() {\n\tdefer d.wg.Done()\n\tbackoffIndex := 1\n\tfor {\n\t\tstate, err := d.lookup()\n\t\tif err != nil {\n\t\t\t// Report error to the underlying grpc.ClientConn.\n\t\t\td.cc.ReportError(err)\n\t\t} else {\n\t\t\terr = d.cc.UpdateState(*state)\n\t\t}\n\n\t\tvar nextResolutionTime time.Time\n\t\tif err == nil {\n\t\t\t// Success resolving, wait for the next ResolveNow. However, also wait 30\n\t\t\t// seconds at the very least to prevent constantly re-resolving.\n\t\t\tbackoffIndex = 1\n\t\t\tnextResolutionTime = internal.TimeNowFunc().Add(MinResolutionInterval)\n\t\t\tselect {\n\t\t\tcase <-d.ctx.Done():\n\t\t\t\treturn\n\t\t\tcase <-d.rn:\n\t\t\t}\n\t\t} else {\n\t\t\t// Poll on an error found in DNS Resolver or an error received from\n\t\t\t// ClientConn.\n\t\t\tnextResolutionTime = internal.TimeNowFunc().Add(backoff.DefaultExponential.Backoff(backoffIndex))\n\t\t\tbackoffIndex++\n\t\t}\n\t\tselect {\n\t\tcase <-d.ctx.Done():\n\t\t\treturn\n\t\tcase <-internal.TimeAfterFunc(internal.TimeUntilFunc(nextResolutionTime)):\n\t\t}\n\t}\n}\n\nfunc (d *dnsResolver) lookupSRV(ctx context.Context) ([]resolver.Address, error) {\n\t// Skip this particular host to avoid timeouts with some versions of\n\t// systemd-resolved.\n\tif !EnableSRVLookups || d.host == \"metadata.google.internal.\" {\n\t\treturn nil, nil\n\t}\n\tvar newAddrs []resolver.Address\n\t_, srvs, err := d.resolver.LookupSRV(ctx, \"grpclb\", \"tcp\", d.host)\n\tif err != nil {\n\t\terr = handleDNSError(err, \"SRV\") // may become nil\n\t\treturn nil, err\n\t}\n\tfor _, s := range srvs {\n\t\tlbAddrs, err := d.resolver.LookupHost(ctx, s.Target)\n\t\tif err != nil {\n\t\t\terr = handleDNSError(err, \"A\") // may become nil\n\t\t\tif err == nil {\n\t\t\t\t// If there are other SRV records, look them up and ignore this\n\t\t\t\t// one that does not exist.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, a := range lbAddrs {\n\t\t\tip, err := formatIP(a)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"dns: error parsing A record IP address %v: %v\", a, err)\n\t\t\t}\n\t\t\taddr := ip + \":\" + strconv.Itoa(int(s.Port))\n\t\t\tnewAddrs = append(newAddrs, resolver.Address{Addr: addr, ServerName: s.Target})\n\t\t}\n\t}\n\treturn newAddrs, nil\n}\n\nfunc handleDNSError(err error, lookupType string) error {\n\tdnsErr, ok := err.(*net.DNSError)\n\tif ok && !dnsErr.IsTimeout && !dnsErr.IsTemporary {\n\t\t// Timeouts and temporary errors should be communicated to gRPC to\n\t\t// attempt another DNS query (with backoff).  Other errors should be\n\t\t// suppressed (they may represent the absence of a TXT record).\n\t\treturn nil\n\t}\n\tif err != nil {\n\t\terr = fmt.Errorf(\"dns: %v record lookup error: %v\", lookupType, err)\n\t\tlogger.Info(err)\n\t}\n\treturn err\n}\n\nfunc (d *dnsResolver) lookupTXT(ctx context.Context) *serviceconfig.ParseResult {\n\tss, err := d.resolver.LookupTXT(ctx, txtPrefix+d.host)\n\tif err != nil {\n\t\tif envconfig.TXTErrIgnore {\n\t\t\treturn nil\n\t\t}\n\t\tif err = handleDNSError(err, \"TXT\"); err != nil {\n\t\t\treturn &serviceconfig.ParseResult{Err: err}\n\t\t}\n\t\treturn nil\n\t}\n\tvar res string\n\tfor _, s := range ss {\n\t\tres += s\n\t}\n\n\t// TXT record must have \"grpc_config=\" attribute in order to be used as\n\t// service config.\n\tif !strings.HasPrefix(res, txtAttribute) {\n\t\tlogger.Warningf(\"dns: TXT record %v missing %v attribute\", res, txtAttribute)\n\t\t// This is not an error; it is the equivalent of not having a service\n\t\t// config.\n\t\treturn nil\n\t}\n\tsc := canaryingSC(strings.TrimPrefix(res, txtAttribute))\n\treturn d.cc.ParseServiceConfig(sc)\n}\n\nfunc (d *dnsResolver) lookupHost(ctx context.Context) ([]resolver.Address, error) {\n\taddrs, err := d.resolver.LookupHost(ctx, d.host)\n\tif err != nil {\n\t\terr = handleDNSError(err, \"A\")\n\t\treturn nil, err\n\t}\n\tnewAddrs := make([]resolver.Address, 0, len(addrs))\n\tfor _, a := range addrs {\n\t\tip, err := formatIP(a)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"dns: error parsing A record IP address %v: %v\", a, err)\n\t\t}\n\t\taddr := ip + \":\" + d.port\n\t\tnewAddrs = append(newAddrs, resolver.Address{Addr: addr})\n\t}\n\treturn newAddrs, nil\n}\n\nfunc (d *dnsResolver) lookup() (*resolver.State, error) {\n\tctx, cancel := context.WithTimeout(d.ctx, ResolvingTimeout)\n\tdefer cancel()\n\tsrv, srvErr := d.lookupSRV(ctx)\n\taddrs, hostErr := d.lookupHost(ctx)\n\tif hostErr != nil && (srvErr != nil || len(srv) == 0) {\n\t\treturn nil, hostErr\n\t}\n\n\teps := make([]resolver.Endpoint, 0, len(addrs))\n\tfor _, addr := range addrs {\n\t\teps = append(eps, resolver.Endpoint{Addresses: []resolver.Address{addr}})\n\t}\n\n\tstate := resolver.State{\n\t\tAddresses: addrs,\n\t\tEndpoints: eps,\n\t}\n\tif len(srv) > 0 {\n\t\tstate = grpclbstate.Set(state, &grpclbstate.State{BalancerAddresses: srv})\n\t}\n\tif d.enableServiceConfig {\n\t\tstate.ServiceConfig = d.lookupTXT(ctx)\n\t}\n\treturn &state, nil\n}\n\n// formatIP returns an error if addr is not a valid textual representation of\n// an IP address. If addr is an IPv4 address, return the addr and error = nil.\n// If addr is an IPv6 address, return the addr enclosed in square brackets and\n// error = nil.\nfunc formatIP(addr string) (string, error) {\n\tip, err := netip.ParseAddr(addr)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif ip.Is4() {\n\t\treturn addr, nil\n\t}\n\treturn \"[\" + addr + \"]\", nil\n}\n\n// parseTarget takes the user input target string and default port, returns\n// formatted host and port info. If target doesn't specify a port, set the port\n// to be the defaultPort. If target is in IPv6 format and host-name is enclosed\n// in square brackets, brackets are stripped when setting the host.\n// examples:\n// target: \"www.google.com\" defaultPort: \"443\" returns host: \"www.google.com\", port: \"443\"\n// target: \"ipv4-host:80\" defaultPort: \"443\" returns host: \"ipv4-host\", port: \"80\"\n// target: \"[ipv6-host]\" defaultPort: \"443\" returns host: \"ipv6-host\", port: \"443\"\n// target: \":80\" defaultPort: \"443\" returns host: \"localhost\", port: \"80\"\nfunc parseTarget(target, defaultPort string) (host, port string, err error) {\n\tif target == \"\" {\n\t\treturn \"\", \"\", internal.ErrMissingAddr\n\t}\n\tif _, err := netip.ParseAddr(target); err == nil {\n\t\t// target is an IPv4 or IPv6(without brackets) address\n\t\treturn target, defaultPort, nil\n\t}\n\tif host, port, err = net.SplitHostPort(target); err == nil {\n\t\tif port == \"\" {\n\t\t\t// If the port field is empty (target ends with colon), e.g. \"[::1]:\",\n\t\t\t// this is an error.\n\t\t\treturn \"\", \"\", internal.ErrEndsWithColon\n\t\t}\n\t\t// target has port, i.e ipv4-host:port, [ipv6-host]:port, host-name:port\n\t\tif host == \"\" {\n\t\t\t// Keep consistent with net.Dial(): If the host is empty, as in \":80\",\n\t\t\t// the local system is assumed.\n\t\t\thost = \"localhost\"\n\t\t}\n\t\treturn host, port, nil\n\t}\n\tif host, port, err = net.SplitHostPort(target + \":\" + defaultPort); err == nil {\n\t\t// target doesn't have port\n\t\treturn host, port, nil\n\t}\n\treturn \"\", \"\", fmt.Errorf(\"invalid target address %v, error info: %v\", target, err)\n}\n\ntype rawChoice struct {\n\tClientLanguage *[]string        `json:\"clientLanguage,omitempty\"`\n\tPercentage     *int             `json:\"percentage,omitempty\"`\n\tClientHostName *[]string        `json:\"clientHostName,omitempty\"`\n\tServiceConfig  *json.RawMessage `json:\"serviceConfig,omitempty\"`\n}\n\nfunc containsString(a *[]string, b string) bool {\n\tif a == nil {\n\t\treturn true\n\t}\n\tfor _, c := range *a {\n\t\tif c == b {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc chosenByPercentage(a *int) bool {\n\tif a == nil {\n\t\treturn true\n\t}\n\treturn rand.IntN(100)+1 <= *a\n}\n\nfunc canaryingSC(js string) string {\n\tif js == \"\" {\n\t\treturn \"\"\n\t}\n\tvar rcs []rawChoice\n\terr := json.Unmarshal([]byte(js), &rcs)\n\tif err != nil {\n\t\tlogger.Warningf(\"dns: error parsing service config json: %v\", err)\n\t\treturn \"\"\n\t}\n\tcliHostname, err := os.Hostname()\n\tif err != nil {\n\t\tlogger.Warningf(\"dns: error getting client hostname: %v\", err)\n\t\treturn \"\"\n\t}\n\tvar sc string\n\tfor _, c := range rcs {\n\t\tif !containsString(c.ClientLanguage, golang) ||\n\t\t\t!chosenByPercentage(c.Percentage) ||\n\t\t\t!containsString(c.ClientHostName, cliHostname) ||\n\t\t\tc.ServiceConfig == nil {\n\t\t\tcontinue\n\t\t}\n\t\tsc = string(*c.ServiceConfig)\n\t\tbreak\n\t}\n\treturn sc\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/resolver/dns/internal/internal.go",
    "content": "/*\n *\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package internal contains functionality internal to the dns resolver package.\npackage internal\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"net\"\n\t\"time\"\n)\n\n// NetResolver groups the methods on net.Resolver that are used by the DNS\n// resolver implementation. This allows the default net.Resolver instance to be\n// overridden from tests.\ntype NetResolver interface {\n\tLookupHost(ctx context.Context, host string) (addrs []string, err error)\n\tLookupSRV(ctx context.Context, service, proto, name string) (cname string, addrs []*net.SRV, err error)\n\tLookupTXT(ctx context.Context, name string) (txts []string, err error)\n}\n\nvar (\n\t// ErrMissingAddr is the error returned when building a DNS resolver when\n\t// the provided target name is empty.\n\tErrMissingAddr = errors.New(\"dns resolver: missing address\")\n\n\t// ErrEndsWithColon is the error returned when building a DNS resolver when\n\t// the provided target name ends with a colon that is supposed to be the\n\t// separator between host and port.  E.g. \"::\" is a valid address as it is\n\t// an IPv6 address (host only) and \"[::]:\" is invalid as it ends with a\n\t// colon as the host and port separator\n\tErrEndsWithColon = errors.New(\"dns resolver: missing port after port-separator colon\")\n)\n\n// The following vars are overridden from tests.\nvar (\n\t// TimeAfterFunc is used by the DNS resolver to wait for the given duration\n\t// to elapse. In non-test code, this is implemented by time.After. In test\n\t// code, this can be used to control the amount of time the resolver is\n\t// blocked waiting for the duration to elapse.\n\tTimeAfterFunc func(time.Duration) <-chan time.Time\n\n\t// TimeNowFunc is used by the DNS resolver to get the current time.\n\t// In non-test code, this is implemented by time.Now. In test code,\n\t// this can be used to control the current time for the resolver.\n\tTimeNowFunc func() time.Time\n\n\t// TimeUntilFunc is used by the DNS resolver to calculate the remaining\n\t// wait time for re-resolution. In non-test code, this is implemented by\n\t// time.Until. In test code, this can be used to control the remaining\n\t// time for resolver to wait for re-resolution.\n\tTimeUntilFunc func(time.Time) time.Duration\n\n\t// NewNetResolver returns the net.Resolver instance for the given target.\n\tNewNetResolver func(string) (NetResolver, error)\n\n\t// AddressDialer is the dialer used to dial the DNS server. It accepts the\n\t// Host portion of the URL corresponding to the user's dial target and\n\t// returns a dial function.\n\tAddressDialer func(address string) func(context.Context, string, string) (net.Conn, error)\n)\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package passthrough implements a pass-through resolver. It sends the target\n// name without scheme back to gRPC as resolved address.\npackage passthrough\n\nimport (\n\t\"errors\"\n\n\t\"google.golang.org/grpc/resolver\"\n)\n\nconst scheme = \"passthrough\"\n\ntype passthroughBuilder struct{}\n\nfunc (*passthroughBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) {\n\tif target.Endpoint() == \"\" && opts.Dialer == nil {\n\t\treturn nil, errors.New(\"passthrough: received empty target in Build()\")\n\t}\n\tr := &passthroughResolver{\n\t\ttarget: target,\n\t\tcc:     cc,\n\t}\n\tr.start()\n\treturn r, nil\n}\n\nfunc (*passthroughBuilder) Scheme() string {\n\treturn scheme\n}\n\ntype passthroughResolver struct {\n\ttarget resolver.Target\n\tcc     resolver.ClientConn\n}\n\nfunc (r *passthroughResolver) start() {\n\tr.cc.UpdateState(resolver.State{Addresses: []resolver.Address{{Addr: r.target.Endpoint()}}})\n}\n\nfunc (*passthroughResolver) ResolveNow(resolver.ResolveNowOptions) {}\n\nfunc (*passthroughResolver) Close() {}\n\nfunc init() {\n\tresolver.Register(&passthroughBuilder{})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/resolver/unix/unix.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package unix implements a resolver for unix targets.\npackage unix\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/internal/transport/networktype\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\nconst unixScheme = \"unix\"\nconst unixAbstractScheme = \"unix-abstract\"\n\ntype builder struct {\n\tscheme string\n}\n\nfunc (b *builder) Build(target resolver.Target, cc resolver.ClientConn, _ resolver.BuildOptions) (resolver.Resolver, error) {\n\tif target.URL.Host != \"\" {\n\t\treturn nil, fmt.Errorf(\"invalid (non-empty) authority: %v\", target.URL.Host)\n\t}\n\n\t// gRPC was parsing the dial target manually before PR #4817, and we\n\t// switched to using url.Parse() in that PR. To avoid breaking existing\n\t// resolver implementations we ended up stripping the leading \"/\" from the\n\t// endpoint. This obviously does not work for the \"unix\" scheme. Hence we\n\t// end up using the parsed URL instead.\n\tendpoint := target.URL.Path\n\tif endpoint == \"\" {\n\t\tendpoint = target.URL.Opaque\n\t}\n\taddr := resolver.Address{Addr: endpoint}\n\tif b.scheme == unixAbstractScheme {\n\t\t// We can not prepend \\0 as c++ gRPC does, as in Golang '@' is used to signify we do\n\t\t// not want trailing \\0 in address.\n\t\taddr.Addr = \"@\" + addr.Addr\n\t}\n\tcc.UpdateState(resolver.State{Addresses: []resolver.Address{networktype.Set(addr, \"unix\")}})\n\treturn &nopResolver{}, nil\n}\n\nfunc (b *builder) Scheme() string {\n\treturn b.scheme\n}\n\nfunc (b *builder) OverrideAuthority(resolver.Target) string {\n\treturn \"localhost\"\n}\n\ntype nopResolver struct {\n}\n\nfunc (*nopResolver) ResolveNow(resolver.ResolveNowOptions) {}\n\nfunc (*nopResolver) Close() {}\n\nfunc init() {\n\tresolver.Register(&builder{scheme: unixScheme})\n\tresolver.Register(&builder{scheme: unixAbstractScheme})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/serviceconfig/duration.go",
    "content": "/*\n *\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage serviceconfig\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// Duration defines JSON marshal and unmarshal methods to conform to the\n// protobuf JSON spec defined [here].\n//\n// [here]: https://protobuf.dev/reference/protobuf/google.protobuf/#duration\ntype Duration time.Duration\n\nfunc (d Duration) String() string {\n\treturn fmt.Sprint(time.Duration(d))\n}\n\n// MarshalJSON converts from d to a JSON string output.\nfunc (d Duration) MarshalJSON() ([]byte, error) {\n\tns := time.Duration(d).Nanoseconds()\n\tsec := ns / int64(time.Second)\n\tns = ns % int64(time.Second)\n\n\tvar sign string\n\tif sec < 0 || ns < 0 {\n\t\tsign, sec, ns = \"-\", -1*sec, -1*ns\n\t}\n\n\t// Generated output always contains 0, 3, 6, or 9 fractional digits,\n\t// depending on required precision.\n\tstr := fmt.Sprintf(\"%s%d.%09d\", sign, sec, ns)\n\tstr = strings.TrimSuffix(str, \"000\")\n\tstr = strings.TrimSuffix(str, \"000\")\n\tstr = strings.TrimSuffix(str, \".000\")\n\treturn []byte(fmt.Sprintf(\"\\\"%ss\\\"\", str)), nil\n}\n\n// UnmarshalJSON unmarshals b as a duration JSON string into d.\nfunc (d *Duration) UnmarshalJSON(b []byte) error {\n\tvar s string\n\tif err := json.Unmarshal(b, &s); err != nil {\n\t\treturn err\n\t}\n\tif !strings.HasSuffix(s, \"s\") {\n\t\treturn fmt.Errorf(\"malformed duration %q: missing seconds unit\", s)\n\t}\n\tneg := false\n\tif s[0] == '-' {\n\t\tneg = true\n\t\ts = s[1:]\n\t}\n\tss := strings.SplitN(s[:len(s)-1], \".\", 3)\n\tif len(ss) > 2 {\n\t\treturn fmt.Errorf(\"malformed duration %q: too many decimals\", s)\n\t}\n\t// hasDigits is set if either the whole or fractional part of the number is\n\t// present, since both are optional but one is required.\n\thasDigits := false\n\tvar sec, ns int64\n\tif len(ss[0]) > 0 {\n\t\tvar err error\n\t\tif sec, err = strconv.ParseInt(ss[0], 10, 64); err != nil {\n\t\t\treturn fmt.Errorf(\"malformed duration %q: %v\", s, err)\n\t\t}\n\t\t// Maximum seconds value per the durationpb spec.\n\t\tconst maxProtoSeconds = 315_576_000_000\n\t\tif sec > maxProtoSeconds {\n\t\t\treturn fmt.Errorf(\"out of range: %q\", s)\n\t\t}\n\t\thasDigits = true\n\t}\n\tif len(ss) == 2 && len(ss[1]) > 0 {\n\t\tif len(ss[1]) > 9 {\n\t\t\treturn fmt.Errorf(\"malformed duration %q: too many digits after decimal\", s)\n\t\t}\n\t\tvar err error\n\t\tif ns, err = strconv.ParseInt(ss[1], 10, 64); err != nil {\n\t\t\treturn fmt.Errorf(\"malformed duration %q: %v\", s, err)\n\t\t}\n\t\tfor i := 9; i > len(ss[1]); i-- {\n\t\t\tns *= 10\n\t\t}\n\t\thasDigits = true\n\t}\n\tif !hasDigits {\n\t\treturn fmt.Errorf(\"malformed duration %q: contains no numbers\", s)\n\t}\n\n\tif neg {\n\t\tsec *= -1\n\t\tns *= -1\n\t}\n\n\t// Maximum/minimum seconds/nanoseconds representable by Go's time.Duration.\n\tconst maxSeconds = math.MaxInt64 / int64(time.Second)\n\tconst maxNanosAtMaxSeconds = math.MaxInt64 % int64(time.Second)\n\tconst minSeconds = math.MinInt64 / int64(time.Second)\n\tconst minNanosAtMinSeconds = math.MinInt64 % int64(time.Second)\n\n\tif sec > maxSeconds || (sec == maxSeconds && ns >= maxNanosAtMaxSeconds) {\n\t\t*d = Duration(math.MaxInt64)\n\t} else if sec < minSeconds || (sec == minSeconds && ns <= minNanosAtMinSeconds) {\n\t\t*d = Duration(math.MinInt64)\n\t} else {\n\t\t*d = Duration(sec*int64(time.Second) + ns)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package serviceconfig contains utility functions to parse service config.\npackage serviceconfig\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/grpclog\"\n\texternalserviceconfig \"google.golang.org/grpc/serviceconfig\"\n)\n\nvar logger = grpclog.Component(\"core\")\n\n// BalancerConfig wraps the name and config associated with one load balancing\n// policy. It corresponds to a single entry of the loadBalancingConfig field\n// from ServiceConfig.\n//\n// It implements the json.Unmarshaler interface.\n//\n// https://github.com/grpc/grpc-proto/blob/54713b1e8bc6ed2d4f25fb4dff527842150b91b2/grpc/service_config/service_config.proto#L247\ntype BalancerConfig struct {\n\tName   string\n\tConfig externalserviceconfig.LoadBalancingConfig\n}\n\ntype intermediateBalancerConfig []map[string]json.RawMessage\n\n// MarshalJSON implements the json.Marshaler interface.\n//\n// It marshals the balancer and config into a length-1 slice\n// ([]map[string]config).\nfunc (bc *BalancerConfig) MarshalJSON() ([]byte, error) {\n\tif bc.Config == nil {\n\t\t// If config is nil, return empty config `{}`.\n\t\treturn []byte(fmt.Sprintf(`[{%q: %v}]`, bc.Name, \"{}\")), nil\n\t}\n\tc, err := json.Marshal(bc.Config)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn []byte(fmt.Sprintf(`[{%q: %s}]`, bc.Name, c)), nil\n}\n\n// UnmarshalJSON implements the json.Unmarshaler interface.\n//\n// ServiceConfig contains a list of loadBalancingConfigs, each with a name and\n// config. This method iterates through that list in order, and stops at the\n// first policy that is supported.\n//   - If the config for the first supported policy is invalid, the whole service\n//     config is invalid.\n//   - If the list doesn't contain any supported policy, the whole service config\n//     is invalid.\nfunc (bc *BalancerConfig) UnmarshalJSON(b []byte) error {\n\tvar ir intermediateBalancerConfig\n\terr := json.Unmarshal(b, &ir)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar names []string\n\tfor i, lbcfg := range ir {\n\t\tif len(lbcfg) != 1 {\n\t\t\treturn fmt.Errorf(\"invalid loadBalancingConfig: entry %v does not contain exactly 1 policy/config pair: %q\", i, lbcfg)\n\t\t}\n\n\t\tvar (\n\t\t\tname    string\n\t\t\tjsonCfg json.RawMessage\n\t\t)\n\t\t// Get the key:value pair from the map. We have already made sure that\n\t\t// the map contains a single entry.\n\t\tfor name, jsonCfg = range lbcfg {\n\t\t}\n\n\t\tnames = append(names, name)\n\t\tbuilder := balancer.Get(name)\n\t\tif builder == nil {\n\t\t\t// If the balancer is not registered, move on to the next config.\n\t\t\t// This is not an error.\n\t\t\tcontinue\n\t\t}\n\t\tbc.Name = name\n\n\t\tparser, ok := builder.(balancer.ConfigParser)\n\t\tif !ok {\n\t\t\tif string(jsonCfg) != \"{}\" {\n\t\t\t\tlogger.Warningf(\"non-empty balancer configuration %q, but balancer does not implement ParseConfig\", string(jsonCfg))\n\t\t\t}\n\t\t\t// Stop at this, though the builder doesn't support parsing config.\n\t\t\treturn nil\n\t\t}\n\n\t\tcfg, err := parser.ParseConfig(jsonCfg)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error parsing loadBalancingConfig for policy %q: %v\", name, err)\n\t\t}\n\t\tbc.Config = cfg\n\t\treturn nil\n\t}\n\t// This is reached when the for loop iterates over all entries, but didn't\n\t// return. This means we had a loadBalancingConfig slice but did not\n\t// encounter a registered policy. The config is considered invalid in this\n\t// case.\n\treturn fmt.Errorf(\"invalid loadBalancingConfig: no supported policies found in %v\", names)\n}\n\n// MethodConfig defines the configuration recommended by the service providers for a\n// particular method.\ntype MethodConfig struct {\n\t// WaitForReady indicates whether RPCs sent to this method should wait until\n\t// the connection is ready by default (!failfast). The value specified via the\n\t// gRPC client API will override the value set here.\n\tWaitForReady *bool\n\t// Timeout is the default timeout for RPCs sent to this method. The actual\n\t// deadline used will be the minimum of the value specified here and the value\n\t// set by the application via the gRPC client API.  If either one is not set,\n\t// then the other will be used.  If neither is set, then the RPC has no deadline.\n\tTimeout *time.Duration\n\t// MaxReqSize is the maximum allowed payload size for an individual request in a\n\t// stream (client->server) in bytes. The size which is measured is the serialized\n\t// payload after per-message compression (but before stream compression) in bytes.\n\t// The actual value used is the minimum of the value specified here and the value set\n\t// by the application via the gRPC client API. If either one is not set, then the other\n\t// will be used.  If neither is set, then the built-in default is used.\n\tMaxReqSize *int\n\t// MaxRespSize is the maximum allowed payload size for an individual response in a\n\t// stream (server->client) in bytes.\n\tMaxRespSize *int\n\t// RetryPolicy configures retry options for the method.\n\tRetryPolicy *RetryPolicy\n}\n\n// RetryPolicy defines the go-native version of the retry policy defined by the\n// service config here:\n// https://github.com/grpc/proposal/blob/master/A6-client-retries.md#integration-with-service-config\ntype RetryPolicy struct {\n\t// MaxAttempts is the maximum number of attempts, including the original RPC.\n\t//\n\t// This field is required and must be two or greater.\n\tMaxAttempts int\n\n\t// Exponential backoff parameters. The initial retry attempt will occur at\n\t// random(0, initialBackoff). In general, the nth attempt will occur at\n\t// random(0,\n\t//   min(initialBackoff*backoffMultiplier**(n-1), maxBackoff)).\n\t//\n\t// These fields are required and must be greater than zero.\n\tInitialBackoff    time.Duration\n\tMaxBackoff        time.Duration\n\tBackoffMultiplier float64\n\n\t// The set of status codes which may be retried.\n\t//\n\t// Status codes are specified as strings, e.g., \"UNAVAILABLE\".\n\t//\n\t// This field is required and must be non-empty.\n\t// Note: a set is used to store this for easy lookup.\n\tRetryableStatusCodes map[codes.Code]bool\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/stats/labels.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package stats provides internal stats related functionality.\npackage stats\n\nimport \"context\"\n\n// Labels are the labels for metrics.\ntype Labels struct {\n\t// TelemetryLabels are the telemetry labels to record.\n\tTelemetryLabels map[string]string\n}\n\ntype labelsKey struct{}\n\n// GetLabels returns the Labels stored in the context, or nil if there is one.\nfunc GetLabels(ctx context.Context) *Labels {\n\tlabels, _ := ctx.Value(labelsKey{}).(*Labels)\n\treturn labels\n}\n\n// SetLabels sets the Labels in the context.\nfunc SetLabels(ctx context.Context, labels *Labels) context.Context {\n\t// could also append\n\treturn context.WithValue(ctx, labelsKey{}, labels)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go",
    "content": "/*\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage stats\n\nimport (\n\t\"fmt\"\n\n\testats \"google.golang.org/grpc/experimental/stats\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/stats\"\n)\n\n// MetricsRecorderList forwards Record calls to all of its metricsRecorders.\n//\n// It eats any record calls where the label values provided do not match the\n// number of label keys.\ntype MetricsRecorderList struct {\n\tinternal.EnforceMetricsRecorderEmbedding\n\t// metricsRecorders are the metrics recorders this list will forward to.\n\tmetricsRecorders []estats.MetricsRecorder\n}\n\n// NewMetricsRecorderList creates a new metric recorder list with all the stats\n// handlers provided which implement the MetricsRecorder interface.\n// If no stats handlers provided implement the MetricsRecorder interface,\n// the MetricsRecorder list returned is a no-op.\nfunc NewMetricsRecorderList(shs []stats.Handler) *MetricsRecorderList {\n\tvar mrs []estats.MetricsRecorder\n\tfor _, sh := range shs {\n\t\tif mr, ok := sh.(estats.MetricsRecorder); ok {\n\t\t\tmrs = append(mrs, mr)\n\t\t}\n\t}\n\treturn &MetricsRecorderList{\n\t\tmetricsRecorders: mrs,\n\t}\n}\n\nfunc verifyLabels(desc *estats.MetricDescriptor, labelsRecv ...string) {\n\tif got, want := len(labelsRecv), len(desc.Labels)+len(desc.OptionalLabels); got != want {\n\t\tpanic(fmt.Sprintf(\"Received %d labels in call to record metric %q, but expected %d.\", got, desc.Name, want))\n\t}\n}\n\n// RecordInt64Count records the measurement alongside labels on the int\n// count associated with the provided handle.\nfunc (l *MetricsRecorderList) RecordInt64Count(handle *estats.Int64CountHandle, incr int64, labels ...string) {\n\tverifyLabels(handle.Descriptor(), labels...)\n\n\tfor _, metricRecorder := range l.metricsRecorders {\n\t\tmetricRecorder.RecordInt64Count(handle, incr, labels...)\n\t}\n}\n\n// RecordInt64UpDownCount records the measurement alongside labels on the int\n// count associated with the provided handle.\nfunc (l *MetricsRecorderList) RecordInt64UpDownCount(handle *estats.Int64UpDownCountHandle, incr int64, labels ...string) {\n\tverifyLabels(handle.Descriptor(), labels...)\n\n\tfor _, metricRecorder := range l.metricsRecorders {\n\t\tmetricRecorder.RecordInt64UpDownCount(handle, incr, labels...)\n\t}\n}\n\n// RecordFloat64Count records the measurement alongside labels on the float\n// count associated with the provided handle.\nfunc (l *MetricsRecorderList) RecordFloat64Count(handle *estats.Float64CountHandle, incr float64, labels ...string) {\n\tverifyLabels(handle.Descriptor(), labels...)\n\n\tfor _, metricRecorder := range l.metricsRecorders {\n\t\tmetricRecorder.RecordFloat64Count(handle, incr, labels...)\n\t}\n}\n\n// RecordInt64Histo records the measurement alongside labels on the int\n// histo associated with the provided handle.\nfunc (l *MetricsRecorderList) RecordInt64Histo(handle *estats.Int64HistoHandle, incr int64, labels ...string) {\n\tverifyLabels(handle.Descriptor(), labels...)\n\n\tfor _, metricRecorder := range l.metricsRecorders {\n\t\tmetricRecorder.RecordInt64Histo(handle, incr, labels...)\n\t}\n}\n\n// RecordFloat64Histo records the measurement alongside labels on the float\n// histo associated with the provided handle.\nfunc (l *MetricsRecorderList) RecordFloat64Histo(handle *estats.Float64HistoHandle, incr float64, labels ...string) {\n\tverifyLabels(handle.Descriptor(), labels...)\n\n\tfor _, metricRecorder := range l.metricsRecorders {\n\t\tmetricRecorder.RecordFloat64Histo(handle, incr, labels...)\n\t}\n}\n\n// RecordInt64Gauge records the measurement alongside labels on the int\n// gauge associated with the provided handle.\nfunc (l *MetricsRecorderList) RecordInt64Gauge(handle *estats.Int64GaugeHandle, incr int64, labels ...string) {\n\tverifyLabels(handle.Descriptor(), labels...)\n\n\tfor _, metricRecorder := range l.metricsRecorders {\n\t\tmetricRecorder.RecordInt64Gauge(handle, incr, labels...)\n\t}\n}\n\n// RegisterAsyncReporter forwards the registration to all underlying metrics\n// recorders.\n//\n// It returns a cleanup function that, when called, invokes the cleanup function\n// returned by each underlying recorder, ensuring the reporter is unregistered\n// from all of them.\nfunc (l *MetricsRecorderList) RegisterAsyncReporter(reporter estats.AsyncMetricReporter, metrics ...estats.AsyncMetric) func() {\n\tdescriptorsMap := make(map[*estats.MetricDescriptor]bool, len(metrics))\n\tfor _, m := range metrics {\n\t\tdescriptorsMap[m.Descriptor()] = true\n\t}\n\tunregisterFns := make([]func(), 0, len(l.metricsRecorders))\n\tfor _, mr := range l.metricsRecorders {\n\t\t// Wrap the AsyncMetricsRecorder to intercept calls to RecordInt64Gauge\n\t\t// and validate the labels.\n\t\twrappedCallback := func(recorder estats.AsyncMetricsRecorder) error {\n\t\t\twrappedRecorder := &asyncRecorderWrapper{\n\t\t\t\tdelegate:    recorder,\n\t\t\t\tdescriptors: descriptorsMap,\n\t\t\t}\n\t\t\treturn reporter.Report(wrappedRecorder)\n\t\t}\n\t\tunregisterFns = append(unregisterFns, mr.RegisterAsyncReporter(estats.AsyncMetricReporterFunc(wrappedCallback), metrics...))\n\t}\n\n\t// Wrap the cleanup function using the internal delegate.\n\t// In production, this returns realCleanup as-is.\n\t// In tests, the leak checker can swap this to track the registration lifetime.\n\treturn internal.AsyncReporterCleanupDelegate(defaultCleanUp(unregisterFns))\n}\n\nfunc defaultCleanUp(unregisterFns []func()) func() {\n\treturn func() {\n\t\tfor _, unregister := range unregisterFns {\n\t\t\tunregister()\n\t\t}\n\t}\n}\n\ntype asyncRecorderWrapper struct {\n\tdelegate    estats.AsyncMetricsRecorder\n\tdescriptors map[*estats.MetricDescriptor]bool\n}\n\n// RecordIntAsync64Gauge records the measurement alongside labels on the int\n// gauge associated with the provided handle.\nfunc (w *asyncRecorderWrapper) RecordInt64AsyncGauge(handle *estats.Int64AsyncGaugeHandle, value int64, labels ...string) {\n\t// Ensure only metrics for descriptors passed during callback registration\n\t// are emitted.\n\td := handle.Descriptor()\n\tif _, ok := w.descriptors[d]; !ok {\n\t\treturn\n\t}\n\t// Validate labels and delegate.\n\tverifyLabels(d, labels...)\n\tw.delegate.RecordInt64AsyncGauge(handle, value, labels...)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/stats/stats.go",
    "content": "/*\n *\n * Copyright 2025 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage stats\n\nimport (\n\t\"context\"\n\n\t\"google.golang.org/grpc/stats\"\n)\n\ntype combinedHandler struct {\n\thandlers []stats.Handler\n}\n\n// NewCombinedHandler combines multiple stats.Handlers into a single handler.\n//\n// It returns nil if no handlers are provided. If only one handler is\n// provided, it is returned directly without wrapping.\nfunc NewCombinedHandler(handlers ...stats.Handler) stats.Handler {\n\tswitch len(handlers) {\n\tcase 0:\n\t\treturn nil\n\tcase 1:\n\t\treturn handlers[0]\n\tdefault:\n\t\treturn &combinedHandler{handlers: handlers}\n\t}\n}\n\nfunc (ch *combinedHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context {\n\tfor _, h := range ch.handlers {\n\t\tctx = h.TagRPC(ctx, info)\n\t}\n\treturn ctx\n}\n\nfunc (ch *combinedHandler) HandleRPC(ctx context.Context, stats stats.RPCStats) {\n\tfor _, h := range ch.handlers {\n\t\th.HandleRPC(ctx, stats)\n\t}\n}\n\nfunc (ch *combinedHandler) TagConn(ctx context.Context, info *stats.ConnTagInfo) context.Context {\n\tfor _, h := range ch.handlers {\n\t\tctx = h.TagConn(ctx, info)\n\t}\n\treturn ctx\n}\n\nfunc (ch *combinedHandler) HandleConn(ctx context.Context, stats stats.ConnStats) {\n\tfor _, h := range ch.handlers {\n\t\th.HandleConn(ctx, stats)\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/status/status.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package status implements errors returned by gRPC.  These errors are\n// serialized and transmitted on the wire between server and client, and allow\n// for additional data to be transmitted via the Details field in the status\n// proto.  gRPC service handlers should return an error created by this\n// package, and gRPC clients should expect a corresponding error to be\n// returned from the RPC call.\n//\n// This package upholds the invariants that a non-nil error may not\n// contain an OK code, and an OK code must result in a nil error.\npackage status\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\tspb \"google.golang.org/genproto/googleapis/rpc/status\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/protoadapt\"\n\t\"google.golang.org/protobuf/types/known/anypb\"\n)\n\n// Status represents an RPC status code, message, and details.  It is immutable\n// and should be created with New, Newf, or FromProto.\ntype Status struct {\n\ts *spb.Status\n}\n\n// NewWithProto returns a new status including details from statusProto.  This\n// is meant to be used by the gRPC library only.\nfunc NewWithProto(code codes.Code, message string, statusProto []string) *Status {\n\tif len(statusProto) != 1 {\n\t\t// No grpc-status-details bin header, or multiple; just ignore.\n\t\treturn &Status{s: &spb.Status{Code: int32(code), Message: message}}\n\t}\n\tst := &spb.Status{}\n\tif err := proto.Unmarshal([]byte(statusProto[0]), st); err != nil {\n\t\t// Probably not a google.rpc.Status proto; do not provide details.\n\t\treturn &Status{s: &spb.Status{Code: int32(code), Message: message}}\n\t}\n\tif st.Code == int32(code) {\n\t\t// The codes match between the grpc-status header and the\n\t\t// grpc-status-details-bin header; use the full details proto.\n\t\treturn &Status{s: st}\n\t}\n\treturn &Status{\n\t\ts: &spb.Status{\n\t\t\tCode: int32(codes.Internal),\n\t\t\tMessage: fmt.Sprintf(\n\t\t\t\t\"grpc-status-details-bin mismatch: grpc-status=%v, grpc-message=%q, grpc-status-details-bin=%+v\",\n\t\t\t\tcode, message, st,\n\t\t\t),\n\t\t},\n\t}\n}\n\n// New returns a Status representing c and msg.\nfunc New(c codes.Code, msg string) *Status {\n\treturn &Status{s: &spb.Status{Code: int32(c), Message: msg}}\n}\n\n// Newf returns New(c, fmt.Sprintf(format, a...)).\nfunc Newf(c codes.Code, format string, a ...any) *Status {\n\treturn New(c, fmt.Sprintf(format, a...))\n}\n\n// FromProto returns a Status representing s.\nfunc FromProto(s *spb.Status) *Status {\n\treturn &Status{s: proto.Clone(s).(*spb.Status)}\n}\n\n// Err returns an error representing c and msg.  If c is OK, returns nil.\nfunc Err(c codes.Code, msg string) error {\n\treturn New(c, msg).Err()\n}\n\n// Errorf returns Error(c, fmt.Sprintf(format, a...)).\nfunc Errorf(c codes.Code, format string, a ...any) error {\n\treturn Err(c, fmt.Sprintf(format, a...))\n}\n\n// Code returns the status code contained in s.\nfunc (s *Status) Code() codes.Code {\n\tif s == nil || s.s == nil {\n\t\treturn codes.OK\n\t}\n\treturn codes.Code(s.s.Code)\n}\n\n// Message returns the message contained in s.\nfunc (s *Status) Message() string {\n\tif s == nil || s.s == nil {\n\t\treturn \"\"\n\t}\n\treturn s.s.Message\n}\n\n// Proto returns s's status as an spb.Status proto message.\nfunc (s *Status) Proto() *spb.Status {\n\tif s == nil {\n\t\treturn nil\n\t}\n\treturn proto.Clone(s.s).(*spb.Status)\n}\n\n// Err returns an immutable error representing s; returns nil if s.Code() is OK.\nfunc (s *Status) Err() error {\n\tif s.Code() == codes.OK {\n\t\treturn nil\n\t}\n\treturn &Error{s: s}\n}\n\n// WithDetails returns a new status with the provided details messages appended to the status.\n// If any errors are encountered, it returns nil and the first error encountered.\nfunc (s *Status) WithDetails(details ...protoadapt.MessageV1) (*Status, error) {\n\tif s.Code() == codes.OK {\n\t\treturn nil, errors.New(\"no error details for status with code OK\")\n\t}\n\t// s.Code() != OK implies that s.Proto() != nil.\n\tp := s.Proto()\n\tfor _, detail := range details {\n\t\tm, err := anypb.New(protoadapt.MessageV2Of(detail))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tp.Details = append(p.Details, m)\n\t}\n\treturn &Status{s: p}, nil\n}\n\n// Details returns a slice of details messages attached to the status.\n// If a detail cannot be decoded, the error is returned in place of the detail.\n// If the detail can be decoded, the proto message returned is of the same\n// type that was given to WithDetails().\nfunc (s *Status) Details() []any {\n\tif s == nil || s.s == nil {\n\t\treturn nil\n\t}\n\tdetails := make([]any, 0, len(s.s.Details))\n\tfor _, any := range s.s.Details {\n\t\tdetail, err := any.UnmarshalNew()\n\t\tif err != nil {\n\t\t\tdetails = append(details, err)\n\t\t\tcontinue\n\t\t}\n\t\t// The call to MessageV1Of is required to unwrap the proto message if\n\t\t// it implemented only the MessageV1 API. The proto message would have\n\t\t// been wrapped in a V2 wrapper in Status.WithDetails. V2 messages are\n\t\t// added to a global registry used by any.UnmarshalNew().\n\t\t// MessageV1Of has the following behaviour:\n\t\t// 1. If the given message is a wrapped MessageV1, it returns the\n\t\t//   unwrapped value.\n\t\t// 2. If the given message already implements MessageV1, it returns it\n\t\t//   as is.\n\t\t// 3. Else, it wraps the MessageV2 in a MessageV1 wrapper.\n\t\t//\n\t\t// Since the Status.WithDetails() API only accepts MessageV1, calling\n\t\t// MessageV1Of ensures we return the same type that was given to\n\t\t// WithDetails:\n\t\t// * If the give type implemented only MessageV1, the unwrapping from\n\t\t//   point 1 above will restore the type.\n\t\t// * If the given type implemented both MessageV1 and MessageV2, point 2\n\t\t//   above will ensure no wrapping is performed.\n\t\t// * If the given type implemented only MessageV2 and was wrapped using\n\t\t//   MessageV1Of before passing to WithDetails(), it would be unwrapped\n\t\t//   in WithDetails by calling MessageV2Of(). Point 3 above will ensure\n\t\t//   that the type is wrapped in a MessageV1 wrapper again before\n\t\t//   returning. Note that protoc-gen-go doesn't generate code which\n\t\t//   implements ONLY MessageV2 at the time of writing.\n\t\t//\n\t\t// NOTE: Status details can also be added using the FromProto method.\n\t\t// This could theoretically allow passing a Detail message that only\n\t\t// implements the V2 API. In such a case the message will be wrapped in\n\t\t// a MessageV1 wrapper when fetched using Details().\n\t\t// Since protoc-gen-go generates only code that implements both V1 and\n\t\t// V2 APIs for backward compatibility, this is not a concern.\n\t\tdetails = append(details, protoadapt.MessageV1Of(detail))\n\t}\n\treturn details\n}\n\nfunc (s *Status) String() string {\n\treturn fmt.Sprintf(\"rpc error: code = %s desc = %s\", s.Code(), s.Message())\n}\n\n// Error wraps a pointer of a status proto. It implements error and Status,\n// and a nil *Error should never be returned by this package.\ntype Error struct {\n\ts *Status\n}\n\nfunc (e *Error) Error() string {\n\treturn e.s.String()\n}\n\n// GRPCStatus returns the Status represented by se.\nfunc (e *Error) GRPCStatus() *Status {\n\treturn e.s\n}\n\n// Is implements future error.Is functionality.\n// A Error is equivalent if the code and message are identical.\nfunc (e *Error) Is(target error) bool {\n\ttse, ok := target.(*Error)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn proto.Equal(e.s.s, tse.s.s)\n}\n\n// IsRestrictedControlPlaneCode returns whether the status includes a code\n// restricted for control plane usage as defined by gRFC A54.\nfunc IsRestrictedControlPlaneCode(s *Status) bool {\n\tswitch s.Code() {\n\tcase codes.InvalidArgument, codes.NotFound, codes.AlreadyExists, codes.FailedPrecondition, codes.Aborted, codes.OutOfRange, codes.DataLoss:\n\t\treturn true\n\t}\n\treturn false\n}\n\n// RawStatusProto returns the internal protobuf message for use by gRPC itself.\nfunc RawStatusProto(s *Status) *spb.Status {\n\tif s == nil {\n\t\treturn nil\n\t}\n\treturn s.s\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package syscall provides functionalities that grpc uses to get low-level operating system\n// stats/info.\npackage syscall\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"golang.org/x/sys/unix\"\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nvar logger = grpclog.Component(\"core\")\n\n// GetCPUTime returns the how much CPU time has passed since the start of this process.\nfunc GetCPUTime() int64 {\n\tvar ts unix.Timespec\n\tif err := unix.ClockGettime(unix.CLOCK_PROCESS_CPUTIME_ID, &ts); err != nil {\n\t\tlogger.Fatal(err)\n\t}\n\treturn ts.Nano()\n}\n\n// Rusage is an alias for syscall.Rusage under linux environment.\ntype Rusage = syscall.Rusage\n\n// GetRusage returns the resource usage of current process.\nfunc GetRusage() *Rusage {\n\trusage := new(Rusage)\n\tsyscall.Getrusage(syscall.RUSAGE_SELF, rusage)\n\treturn rusage\n}\n\n// CPUTimeDiff returns the differences of user CPU time and system CPU time used\n// between two Rusage structs.\nfunc CPUTimeDiff(first *Rusage, latest *Rusage) (float64, float64) {\n\tvar (\n\t\tutimeDiffs  = latest.Utime.Sec - first.Utime.Sec\n\t\tutimeDiffus = latest.Utime.Usec - first.Utime.Usec\n\t\tstimeDiffs  = latest.Stime.Sec - first.Stime.Sec\n\t\tstimeDiffus = latest.Stime.Usec - first.Stime.Usec\n\t)\n\n\tuTimeElapsed := float64(utimeDiffs) + float64(utimeDiffus)*1.0e-6\n\tsTimeElapsed := float64(stimeDiffs) + float64(stimeDiffus)*1.0e-6\n\n\treturn uTimeElapsed, sTimeElapsed\n}\n\n// SetTCPUserTimeout sets the TCP user timeout on a connection's socket\nfunc SetTCPUserTimeout(conn net.Conn, timeout time.Duration) error {\n\ttcpconn, ok := conn.(*net.TCPConn)\n\tif !ok {\n\t\t// not a TCP connection. exit early\n\t\treturn nil\n\t}\n\trawConn, err := tcpconn.SyscallConn()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error getting raw connection: %v\", err)\n\t}\n\terr = rawConn.Control(func(fd uintptr) {\n\t\terr = syscall.SetsockoptInt(int(fd), syscall.IPPROTO_TCP, unix.TCP_USER_TIMEOUT, int(timeout/time.Millisecond))\n\t})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error setting option on socket: %v\", err)\n\t}\n\n\treturn nil\n}\n\n// GetTCPUserTimeout gets the TCP user timeout on a connection's socket\nfunc GetTCPUserTimeout(conn net.Conn) (opt int, err error) {\n\ttcpconn, ok := conn.(*net.TCPConn)\n\tif !ok {\n\t\terr = fmt.Errorf(\"conn is not *net.TCPConn. got %T\", conn)\n\t\treturn\n\t}\n\trawConn, err := tcpconn.SyscallConn()\n\tif err != nil {\n\t\terr = fmt.Errorf(\"error getting raw connection: %v\", err)\n\t\treturn\n\t}\n\terr = rawConn.Control(func(fd uintptr) {\n\t\topt, err = syscall.GetsockoptInt(int(fd), syscall.IPPROTO_TCP, unix.TCP_USER_TIMEOUT)\n\t})\n\tif err != nil {\n\t\terr = fmt.Errorf(\"error getting option on socket: %v\", err)\n\t\treturn\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go",
    "content": "//go:build !linux\n// +build !linux\n\n/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package syscall provides functionalities that grpc uses to get low-level\n// operating system stats/info.\npackage syscall\n\nimport (\n\t\"net\"\n\t\"sync\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nvar once sync.Once\nvar logger = grpclog.Component(\"core\")\n\nfunc log() {\n\tonce.Do(func() {\n\t\tlogger.Info(\"CPU time info is unavailable on non-linux environments.\")\n\t})\n}\n\n// GetCPUTime returns the how much CPU time has passed since the start of this\n// process. It always returns 0 under non-linux environments.\nfunc GetCPUTime() int64 {\n\tlog()\n\treturn 0\n}\n\n// Rusage is an empty struct under non-linux environments.\ntype Rusage struct{}\n\n// GetRusage is a no-op function under non-linux environments.\nfunc GetRusage() *Rusage {\n\tlog()\n\treturn nil\n}\n\n// CPUTimeDiff returns the differences of user CPU time and system CPU time used\n// between two Rusage structs. It a no-op function for non-linux environments.\nfunc CPUTimeDiff(*Rusage, *Rusage) (float64, float64) {\n\tlog()\n\treturn 0, 0\n}\n\n// SetTCPUserTimeout is a no-op function under non-linux environments.\nfunc SetTCPUserTimeout(net.Conn, time.Duration) error {\n\tlog()\n\treturn nil\n}\n\n// GetTCPUserTimeout is a no-op function under non-linux environments.\n// A negative return value indicates the operation is not supported\nfunc GetTCPUserTimeout(net.Conn) (int, error) {\n\tlog()\n\treturn -1, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/tcp_keepalive_others.go",
    "content": "//go:build !unix && !windows\n\n/*\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage internal\n\nimport (\n\t\"net\"\n)\n\n// NetDialerWithTCPKeepalive returns a vanilla net.Dialer on non-unix platforms.\nfunc NetDialerWithTCPKeepalive() *net.Dialer {\n\treturn &net.Dialer{}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/tcp_keepalive_unix.go",
    "content": "//go:build unix\n\n/*\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage internal\n\nimport (\n\t\"net\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// NetDialerWithTCPKeepalive returns a net.Dialer that enables TCP keepalives on\n// the underlying connection with OS default values for keepalive parameters.\n//\n// TODO: Once https://github.com/golang/go/issues/62254 lands, and the\n// appropriate Go version becomes less than our least supported Go version, we\n// should look into using the new API to make things more straightforward.\nfunc NetDialerWithTCPKeepalive() *net.Dialer {\n\treturn &net.Dialer{\n\t\t// Setting a negative value here prevents the Go stdlib from overriding\n\t\t// the values of TCP keepalive time and interval. It also prevents the\n\t\t// Go stdlib from enabling TCP keepalives by default.\n\t\tKeepAlive: time.Duration(-1),\n\t\t// This method is called after the underlying network socket is created,\n\t\t// but before dialing the socket (or calling its connect() method). The\n\t\t// combination of unconditionally enabling TCP keepalives here, and\n\t\t// disabling the overriding of TCP keepalive parameters by setting the\n\t\t// KeepAlive field to a negative value above, results in OS defaults for\n\t\t// the TCP keepalive interval and time parameters.\n\t\tControl: func(_, _ string, c syscall.RawConn) error {\n\t\t\treturn c.Control(func(fd uintptr) {\n\t\t\t\tunix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_KEEPALIVE, 1)\n\t\t\t})\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/tcp_keepalive_windows.go",
    "content": "//go:build windows\n\n/*\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage internal\n\nimport (\n\t\"net\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"golang.org/x/sys/windows\"\n)\n\n// NetDialerWithTCPKeepalive returns a net.Dialer that enables TCP keepalives on\n// the underlying connection with OS default values for keepalive parameters.\n//\n// TODO: Once https://github.com/golang/go/issues/62254 lands, and the\n// appropriate Go version becomes less than our least supported Go version, we\n// should look into using the new API to make things more straightforward.\nfunc NetDialerWithTCPKeepalive() *net.Dialer {\n\treturn &net.Dialer{\n\t\t// Setting a negative value here prevents the Go stdlib from overriding\n\t\t// the values of TCP keepalive time and interval. It also prevents the\n\t\t// Go stdlib from enabling TCP keepalives by default.\n\t\tKeepAlive: time.Duration(-1),\n\t\t// This method is called after the underlying network socket is created,\n\t\t// but before dialing the socket (or calling its connect() method). The\n\t\t// combination of unconditionally enabling TCP keepalives here, and\n\t\t// disabling the overriding of TCP keepalive parameters by setting the\n\t\t// KeepAlive field to a negative value above, results in OS defaults for\n\t\t// the TCP keepalive interval and time parameters.\n\t\tControl: func(_, _ string, c syscall.RawConn) error {\n\t\t\treturn c.Control(func(fd uintptr) {\n\t\t\t\twindows.SetsockoptInt(windows.Handle(fd), windows.SOL_SOCKET, windows.SO_KEEPALIVE, 1)\n\t\t\t})\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/bdp_estimator.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"sync\"\n\t\"time\"\n)\n\nconst (\n\t// bdpLimit is the maximum value the flow control windows will be increased\n\t// to.  TCP typically limits this to 4MB, but some systems go up to 16MB.\n\t// Since this is only a limit, it is safe to make it optimistic.\n\tbdpLimit = (1 << 20) * 16\n\t// alpha is a constant factor used to keep a moving average\n\t// of RTTs.\n\talpha = 0.9\n\t// If the current bdp sample is greater than or equal to\n\t// our beta * our estimated bdp and the current bandwidth\n\t// sample is the maximum bandwidth observed so far, we\n\t// increase our bbp estimate by a factor of gamma.\n\tbeta = 0.66\n\t// To put our bdp to be smaller than or equal to twice the real BDP,\n\t// we should multiply our current sample with 4/3, however to round things out\n\t// we use 2 as the multiplication factor.\n\tgamma = 2\n)\n\n// Adding arbitrary data to ping so that its ack can be identified.\n// Easter-egg: what does the ping message say?\nvar bdpPing = &ping{data: [8]byte{2, 4, 16, 16, 9, 14, 7, 7}}\n\ntype bdpEstimator struct {\n\t// sentAt is the time when the ping was sent.\n\tsentAt time.Time\n\n\tmu sync.Mutex\n\t// bdp is the current bdp estimate.\n\tbdp uint32\n\t// sample is the number of bytes received in one measurement cycle.\n\tsample uint32\n\t// bwMax is the maximum bandwidth noted so far (bytes/sec).\n\tbwMax float64\n\t// bool to keep track of the beginning of a new measurement cycle.\n\tisSent bool\n\t// Callback to update the window sizes.\n\tupdateFlowControl func(n uint32)\n\t// sampleCount is the number of samples taken so far.\n\tsampleCount uint64\n\t// round trip time (seconds)\n\trtt float64\n}\n\n// timesnap registers the time bdp ping was sent out so that\n// network rtt can be calculated when its ack is received.\n// It is called (by controller) when the bdpPing is\n// being written on the wire.\nfunc (b *bdpEstimator) timesnap(d [8]byte) {\n\tif bdpPing.data != d {\n\t\treturn\n\t}\n\tb.sentAt = time.Now()\n}\n\n// add adds bytes to the current sample for calculating bdp.\n// It returns true only if a ping must be sent. This can be used\n// by the caller (handleData) to make decision about batching\n// a window update with it.\nfunc (b *bdpEstimator) add(n uint32) bool {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\tif b.bdp == bdpLimit {\n\t\treturn false\n\t}\n\tif !b.isSent {\n\t\tb.isSent = true\n\t\tb.sample = n\n\t\tb.sentAt = time.Time{}\n\t\tb.sampleCount++\n\t\treturn true\n\t}\n\tb.sample += n\n\treturn false\n}\n\n// calculate is called when an ack for a bdp ping is received.\n// Here we calculate the current bdp and bandwidth sample and\n// decide if the flow control windows should go up.\nfunc (b *bdpEstimator) calculate(d [8]byte) {\n\t// Check if the ping acked for was the bdp ping.\n\tif bdpPing.data != d {\n\t\treturn\n\t}\n\tb.mu.Lock()\n\trttSample := time.Since(b.sentAt).Seconds()\n\tif b.sampleCount < 10 {\n\t\t// Bootstrap rtt with an average of first 10 rtt samples.\n\t\tb.rtt += (rttSample - b.rtt) / float64(b.sampleCount)\n\t} else {\n\t\t// Heed to the recent past more.\n\t\tb.rtt += (rttSample - b.rtt) * float64(alpha)\n\t}\n\tb.isSent = false\n\t// The number of bytes accumulated so far in the sample is smaller\n\t// than or equal to 1.5 times the real BDP on a saturated connection.\n\tbwCurrent := float64(b.sample) / (b.rtt * float64(1.5))\n\tif bwCurrent > b.bwMax {\n\t\tb.bwMax = bwCurrent\n\t}\n\t// If the current sample (which is smaller than or equal to the 1.5 times the real BDP) is\n\t// greater than or equal to 2/3rd our perceived bdp AND this is the maximum bandwidth seen so far, we\n\t// should update our perception of the network BDP.\n\tif float64(b.sample) >= beta*float64(b.bdp) && bwCurrent == b.bwMax && b.bdp != bdpLimit {\n\t\tsampleFloat := float64(b.sample)\n\t\tb.bdp = uint32(gamma * sampleFloat)\n\t\tif b.bdp > bdpLimit {\n\t\t\tb.bdp = bdpLimit\n\t\t}\n\t\tbdp := b.bdp\n\t\tb.mu.Unlock()\n\t\tb.updateFlowControl(bdp)\n\t\treturn\n\t}\n\tb.mu.Unlock()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/client_stream.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"sync/atomic\"\n\n\t\"golang.org/x/net/http2\"\n\t\"google.golang.org/grpc/mem\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// ClientStream implements streaming functionality for a gRPC client.\ntype ClientStream struct {\n\tStream // Embed for common stream functionality.\n\n\tct       *http2Client\n\tdone     chan struct{} // closed at the end of stream to unblock writers.\n\tdoneFunc func()        // invoked at the end of stream.\n\n\theaderChan chan struct{} // closed to indicate the end of header metadata.\n\theader     metadata.MD   // the received header metadata\n\n\tstatus *status.Status // the status error received from the server\n\n\t// Non-pointer fields are at the end to optimize GC allocations.\n\n\t// headerValid indicates whether a valid header was received.  Only\n\t// meaningful after headerChan is closed (always call waitOnHeader() before\n\t// reading its value).\n\theaderValid      bool\n\tnoHeaders        bool          // set if the client never received headers (set only after the stream is done).\n\theaderChanClosed uint32        // set when headerChan is closed. Used to avoid closing headerChan multiple times.\n\tbytesReceived    atomic.Bool   // indicates whether any bytes have been received on this stream\n\tunprocessed      atomic.Bool   // set if the server sends a refused stream or GOAWAY including this stream\n\tstatsHandler     stats.Handler // nil for internal streams (e.g., health check, ORCA) where telemetry is not supported.\n}\n\n// Read reads an n byte message from the input stream.\nfunc (s *ClientStream) Read(n int) (mem.BufferSlice, error) {\n\tb, err := s.Stream.read(n)\n\tif err == nil {\n\t\ts.ct.incrMsgRecv()\n\t}\n\treturn b, err\n}\n\n// Close closes the stream and propagates err to any readers.\nfunc (s *ClientStream) Close(err error) {\n\tvar (\n\t\trst     bool\n\t\trstCode http2.ErrCode\n\t)\n\tif err != nil {\n\t\trst = true\n\t\trstCode = http2.ErrCodeCancel\n\t}\n\ts.ct.closeStream(s, err, rst, rstCode, status.Convert(err), nil, false)\n}\n\n// Write writes the hdr and data bytes to the output stream.\nfunc (s *ClientStream) Write(hdr []byte, data mem.BufferSlice, opts *WriteOptions) error {\n\treturn s.ct.write(s, hdr, data, opts)\n}\n\n// BytesReceived indicates whether any bytes have been received on this stream.\nfunc (s *ClientStream) BytesReceived() bool {\n\treturn s.bytesReceived.Load()\n}\n\n// Unprocessed indicates whether the server did not process this stream --\n// i.e. it sent a refused stream or GOAWAY including this stream ID.\nfunc (s *ClientStream) Unprocessed() bool {\n\treturn s.unprocessed.Load()\n}\n\nfunc (s *ClientStream) waitOnHeader() {\n\tselect {\n\tcase <-s.ctx.Done():\n\t\t// Close the stream to prevent headers/trailers from changing after\n\t\t// this function returns.\n\t\ts.Close(ContextErr(s.ctx.Err()))\n\t\t// headerChan could possibly not be closed yet if closeStream raced\n\t\t// with operateHeaders; wait until it is closed explicitly here.\n\t\t<-s.headerChan\n\tcase <-s.headerChan:\n\t}\n}\n\n// RecvCompress returns the compression algorithm applied to the inbound\n// message. It is empty string if there is no compression applied.\nfunc (s *ClientStream) RecvCompress() string {\n\ts.waitOnHeader()\n\treturn s.recvCompress\n}\n\n// Done returns a channel which is closed when it receives the final status\n// from the server.\nfunc (s *ClientStream) Done() <-chan struct{} {\n\treturn s.done\n}\n\n// Header returns the header metadata of the stream. Acquires the key-value\n// pairs of header metadata once it is available. It blocks until i) the\n// metadata is ready or ii) there is no header metadata or iii) the stream is\n// canceled/expired.\nfunc (s *ClientStream) Header() (metadata.MD, error) {\n\ts.waitOnHeader()\n\n\tif !s.headerValid || s.noHeaders {\n\t\treturn nil, s.status.Err()\n\t}\n\n\treturn s.header.Copy(), nil\n}\n\n// TrailersOnly blocks until a header or trailers-only frame is received and\n// then returns true if the stream was trailers-only.  If the stream ends\n// before headers are received, returns true, nil.\nfunc (s *ClientStream) TrailersOnly() bool {\n\ts.waitOnHeader()\n\treturn s.noHeaders\n}\n\n// Status returns the status received from the server.\n// Status can be read safely only after the stream has ended,\n// that is, after Done() is closed.\nfunc (s *ClientStream) Status() *status.Status {\n\treturn s.status\n}\n\nfunc (s *ClientStream) requestRead(n int) {\n\ts.ct.adjustWindow(s, uint32(n))\n}\n\nfunc (s *ClientStream) updateWindow(n int) {\n\ts.ct.updateWindow(s, uint32(n))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/controlbuf.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"runtime\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"golang.org/x/net/http2\"\n\t\"golang.org/x/net/http2/hpack\"\n\t\"google.golang.org/grpc/internal/grpclog\"\n\t\"google.golang.org/grpc/mem\"\n)\n\nvar updateHeaderTblSize = func(e *hpack.Encoder, v uint32) {\n\te.SetMaxDynamicTableSizeLimit(v)\n}\n\n// itemNodePool is used to reduce heap allocations.\nvar itemNodePool = sync.Pool{\n\tNew: func() any {\n\t\treturn &itemNode{}\n\t},\n}\n\ntype itemNode struct {\n\tit   any\n\tnext *itemNode\n}\n\ntype itemList struct {\n\thead *itemNode\n\ttail *itemNode\n}\n\nfunc (il *itemList) enqueue(i any) {\n\tn := itemNodePool.Get().(*itemNode)\n\tn.next = nil\n\tn.it = i\n\tif il.tail == nil {\n\t\til.head, il.tail = n, n\n\t\treturn\n\t}\n\til.tail.next = n\n\til.tail = n\n}\n\n// peek returns the first item in the list without removing it from the\n// list.\nfunc (il *itemList) peek() any {\n\treturn il.head.it\n}\n\nfunc (il *itemList) dequeue() any {\n\tif il.head == nil {\n\t\treturn nil\n\t}\n\ti := il.head.it\n\ttemp := il.head\n\til.head = il.head.next\n\titemNodePool.Put(temp)\n\tif il.head == nil {\n\t\til.tail = nil\n\t}\n\treturn i\n}\n\nfunc (il *itemList) dequeueAll() *itemNode {\n\th := il.head\n\til.head, il.tail = nil, nil\n\treturn h\n}\n\nfunc (il *itemList) isEmpty() bool {\n\treturn il.head == nil\n}\n\n// The following defines various control items which could flow through\n// the control buffer of transport. They represent different aspects of\n// control tasks, e.g., flow control, settings, streaming resetting, etc.\n\n// maxQueuedTransportResponseFrames is the most queued \"transport response\"\n// frames we will buffer before preventing new reads from occurring on the\n// transport.  These are control frames sent in response to client requests,\n// such as RST_STREAM due to bad headers or settings acks.\nconst maxQueuedTransportResponseFrames = 50\n\ntype cbItem interface {\n\tisTransportResponseFrame() bool\n}\n\n// registerStream is used to register an incoming stream with loopy writer.\ntype registerStream struct {\n\tstreamID uint32\n\twq       *writeQuota\n}\n\nfunc (*registerStream) isTransportResponseFrame() bool { return false }\n\n// headerFrame is also used to register stream on the client-side.\ntype headerFrame struct {\n\tstreamID   uint32\n\thf         []hpack.HeaderField\n\tendStream  bool               // Valid on server side.\n\tinitStream func(uint32) error // Used only on the client side.\n\tonWrite    func()\n\twq         *writeQuota    // write quota for the stream created.\n\tcleanup    *cleanupStream // Valid on the server side.\n\tonOrphaned func(error)    // Valid on client-side\n}\n\nfunc (h *headerFrame) isTransportResponseFrame() bool {\n\treturn h.cleanup != nil && h.cleanup.rst // Results in a RST_STREAM\n}\n\ntype cleanupStream struct {\n\tstreamID uint32\n\trst      bool\n\trstCode  http2.ErrCode\n\tonWrite  func()\n}\n\nfunc (c *cleanupStream) isTransportResponseFrame() bool { return c.rst } // Results in a RST_STREAM\n\ntype earlyAbortStream struct {\n\tstreamID uint32\n\trst      bool\n\thf       []hpack.HeaderField // Pre-built header fields\n}\n\nfunc (*earlyAbortStream) isTransportResponseFrame() bool { return false }\n\ntype dataFrame struct {\n\tstreamID   uint32\n\tendStream  bool\n\th          []byte\n\tdata       mem.BufferSlice\n\tprocessing bool\n\t// onEachWrite is called every time\n\t// a part of data is written out.\n\tonEachWrite func()\n}\n\nfunc (*dataFrame) isTransportResponseFrame() bool { return false }\n\ntype incomingWindowUpdate struct {\n\tstreamID  uint32\n\tincrement uint32\n}\n\nfunc (*incomingWindowUpdate) isTransportResponseFrame() bool { return false }\n\ntype outgoingWindowUpdate struct {\n\tstreamID  uint32\n\tincrement uint32\n}\n\nfunc (*outgoingWindowUpdate) isTransportResponseFrame() bool {\n\treturn false // window updates are throttled by thresholds\n}\n\ntype incomingSettings struct {\n\tss []http2.Setting\n}\n\nfunc (*incomingSettings) isTransportResponseFrame() bool { return true } // Results in a settings ACK\n\ntype outgoingSettings struct {\n\tss []http2.Setting\n}\n\nfunc (*outgoingSettings) isTransportResponseFrame() bool { return false }\n\ntype incomingGoAway struct {\n}\n\nfunc (*incomingGoAway) isTransportResponseFrame() bool { return false }\n\ntype goAway struct {\n\tcode      http2.ErrCode\n\tdebugData []byte\n\theadsUp   bool\n\tcloseConn error // if set, loopyWriter will exit with this error\n}\n\nfunc (*goAway) isTransportResponseFrame() bool { return false }\n\ntype ping struct {\n\tack  bool\n\tdata [8]byte\n}\n\nfunc (*ping) isTransportResponseFrame() bool { return true }\n\ntype outFlowControlSizeRequest struct {\n\tresp chan uint32\n}\n\nfunc (*outFlowControlSizeRequest) isTransportResponseFrame() bool { return false }\n\n// closeConnection is an instruction to tell the loopy writer to flush the\n// framer and exit, which will cause the transport's connection to be closed\n// (by the client or server).  The transport itself will close after the reader\n// encounters the EOF caused by the connection closure.\ntype closeConnection struct{}\n\nfunc (closeConnection) isTransportResponseFrame() bool { return false }\n\ntype outStreamState int\n\nconst (\n\tactive outStreamState = iota\n\tempty\n\twaitingOnStreamQuota\n)\n\ntype outStream struct {\n\tid               uint32\n\tstate            outStreamState\n\titl              *itemList\n\tbytesOutStanding int\n\twq               *writeQuota\n\treader           mem.Reader\n\n\tnext *outStream\n\tprev *outStream\n}\n\nfunc (s *outStream) deleteSelf() {\n\tif s.prev != nil {\n\t\ts.prev.next = s.next\n\t}\n\tif s.next != nil {\n\t\ts.next.prev = s.prev\n\t}\n\ts.next, s.prev = nil, nil\n}\n\ntype outStreamList struct {\n\t// Following are sentinel objects that mark the\n\t// beginning and end of the list. They do not\n\t// contain any item lists. All valid objects are\n\t// inserted in between them.\n\t// This is needed so that an outStream object can\n\t// deleteSelf() in O(1) time without knowing which\n\t// list it belongs to.\n\thead *outStream\n\ttail *outStream\n}\n\nfunc newOutStreamList() *outStreamList {\n\thead, tail := new(outStream), new(outStream)\n\thead.next = tail\n\ttail.prev = head\n\treturn &outStreamList{\n\t\thead: head,\n\t\ttail: tail,\n\t}\n}\n\nfunc (l *outStreamList) enqueue(s *outStream) {\n\te := l.tail.prev\n\te.next = s\n\ts.prev = e\n\ts.next = l.tail\n\tl.tail.prev = s\n}\n\n// remove from the beginning of the list.\nfunc (l *outStreamList) dequeue() *outStream {\n\tb := l.head.next\n\tif b == l.tail {\n\t\treturn nil\n\t}\n\tb.deleteSelf()\n\treturn b\n}\n\n// controlBuffer is a way to pass information to loopy.\n//\n// Information is passed as specific struct types called control frames. A\n// control frame not only represents data, messages or headers to be sent out\n// but can also be used to instruct loopy to update its internal state. It\n// shouldn't be confused with an HTTP2 frame, although some of the control\n// frames like dataFrame and headerFrame do go out on wire as HTTP2 frames.\ntype controlBuffer struct {\n\twakeupCh chan struct{}   // Unblocks readers waiting for something to read.\n\tdone     <-chan struct{} // Closed when the transport is done.\n\n\t// Mutex guards all the fields below, except trfChan which can be read\n\t// atomically without holding mu.\n\tmu              sync.Mutex\n\tconsumerWaiting bool      // True when readers are blocked waiting for new data.\n\tclosed          bool      // True when the controlbuf is finished.\n\tlist            *itemList // List of queued control frames.\n\n\t// transportResponseFrames counts the number of queued items that represent\n\t// the response of an action initiated by the peer.  trfChan is created\n\t// when transportResponseFrames >= maxQueuedTransportResponseFrames and is\n\t// closed and nilled when transportResponseFrames drops below the\n\t// threshold.  Both fields are protected by mu.\n\ttransportResponseFrames int\n\ttrfChan                 atomic.Pointer[chan struct{}]\n}\n\nfunc newControlBuffer(done <-chan struct{}) *controlBuffer {\n\treturn &controlBuffer{\n\t\twakeupCh: make(chan struct{}, 1),\n\t\tlist:     &itemList{},\n\t\tdone:     done,\n\t}\n}\n\n// throttle blocks if there are too many frames in the control buf that\n// represent the response of an action initiated by the peer, like\n// incomingSettings cleanupStreams etc.\nfunc (c *controlBuffer) throttle() {\n\tif ch := c.trfChan.Load(); ch != nil {\n\t\tselect {\n\t\tcase <-(*ch):\n\t\tcase <-c.done:\n\t\t}\n\t}\n}\n\n// put adds an item to the controlbuf.\nfunc (c *controlBuffer) put(it cbItem) error {\n\t_, err := c.executeAndPut(nil, it)\n\treturn err\n}\n\n// executeAndPut runs f, and if the return value is true, adds the given item to\n// the controlbuf. The item could be nil, in which case, this method simply\n// executes f and does not add the item to the controlbuf.\n//\n// The first return value indicates whether the item was successfully added to\n// the control buffer. A non-nil error, specifically ErrConnClosing, is returned\n// if the control buffer is already closed.\nfunc (c *controlBuffer) executeAndPut(f func() bool, it cbItem) (bool, error) {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\n\tif c.closed {\n\t\treturn false, ErrConnClosing\n\t}\n\tif f != nil {\n\t\tif !f() { // f wasn't successful\n\t\t\treturn false, nil\n\t\t}\n\t}\n\tif it == nil {\n\t\treturn true, nil\n\t}\n\n\tvar wakeUp bool\n\tif c.consumerWaiting {\n\t\twakeUp = true\n\t\tc.consumerWaiting = false\n\t}\n\tc.list.enqueue(it)\n\tif it.isTransportResponseFrame() {\n\t\tc.transportResponseFrames++\n\t\tif c.transportResponseFrames == maxQueuedTransportResponseFrames {\n\t\t\t// We are adding the frame that puts us over the threshold; create\n\t\t\t// a throttling channel.\n\t\t\tch := make(chan struct{})\n\t\t\tc.trfChan.Store(&ch)\n\t\t}\n\t}\n\tif wakeUp {\n\t\tselect {\n\t\tcase c.wakeupCh <- struct{}{}:\n\t\tdefault:\n\t\t}\n\t}\n\treturn true, nil\n}\n\n// get returns the next control frame from the control buffer. If block is true\n// **and** there are no control frames in the control buffer, the call blocks\n// until one of the conditions is met: there is a frame to return or the\n// transport is closed.\nfunc (c *controlBuffer) get(block bool) (any, error) {\n\tfor {\n\t\tc.mu.Lock()\n\t\tframe, err := c.getOnceLocked()\n\t\tif frame != nil || err != nil || !block {\n\t\t\t// If we read a frame or an error, we can return to the caller. The\n\t\t\t// call to getOnceLocked() returns a nil frame and a nil error if\n\t\t\t// there is nothing to read, and in that case, if the caller asked\n\t\t\t// us not to block, we can return now as well.\n\t\t\tc.mu.Unlock()\n\t\t\treturn frame, err\n\t\t}\n\t\tc.consumerWaiting = true\n\t\tc.mu.Unlock()\n\n\t\t// Release the lock above and wait to be woken up.\n\t\tselect {\n\t\tcase <-c.wakeupCh:\n\t\tcase <-c.done:\n\t\t\treturn nil, errors.New(\"transport closed by client\")\n\t\t}\n\t}\n}\n\n// Callers must not use this method, but should instead use get().\n//\n// Caller must hold c.mu.\nfunc (c *controlBuffer) getOnceLocked() (any, error) {\n\tif c.closed {\n\t\treturn false, ErrConnClosing\n\t}\n\tif c.list.isEmpty() {\n\t\treturn nil, nil\n\t}\n\th := c.list.dequeue().(cbItem)\n\tif h.isTransportResponseFrame() {\n\t\tif c.transportResponseFrames == maxQueuedTransportResponseFrames {\n\t\t\t// We are removing the frame that put us over the\n\t\t\t// threshold; close and clear the throttling channel.\n\t\t\tch := c.trfChan.Swap(nil)\n\t\t\tclose(*ch)\n\t\t}\n\t\tc.transportResponseFrames--\n\t}\n\treturn h, nil\n}\n\n// finish closes the control buffer, cleaning up any streams that have queued\n// header frames. Once this method returns, no more frames can be added to the\n// control buffer, and attempts to do so will return ErrConnClosing.\nfunc (c *controlBuffer) finish() {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\n\tif c.closed {\n\t\treturn\n\t}\n\tc.closed = true\n\t// There may be headers for streams in the control buffer.\n\t// These streams need to be cleaned out since the transport\n\t// is still not aware of these yet.\n\tfor head := c.list.dequeueAll(); head != nil; head = head.next {\n\t\tswitch v := head.it.(type) {\n\t\tcase *headerFrame:\n\t\t\tif v.onOrphaned != nil { // It will be nil on the server-side.\n\t\t\t\tv.onOrphaned(ErrConnClosing)\n\t\t\t}\n\t\tcase *dataFrame:\n\t\t\tif !v.processing {\n\t\t\t\tv.data.Free()\n\t\t\t}\n\t\t}\n\t}\n\n\t// In case throttle() is currently in flight, it needs to be unblocked.\n\t// Otherwise, the transport may not close, since the transport is closed by\n\t// the reader encountering the connection error.\n\tch := c.trfChan.Swap(nil)\n\tif ch != nil {\n\t\tclose(*ch)\n\t}\n}\n\ntype side int\n\nconst (\n\tclientSide side = iota\n\tserverSide\n)\n\n// maxWriteBufSize is the maximum length (number of elements) the cached\n// writeBuf can grow to. The length depends on the number of buffers\n// contained within the BufferSlice produced by the codec, which is\n// generally small.\n//\n// If a writeBuf larger than this limit is required, it will be allocated\n// and freed after use, rather than being cached. This avoids holding\n// on to large amounts of memory.\nconst maxWriteBufSize = 64\n\n// Loopy receives frames from the control buffer.\n// Each frame is handled individually; most of the work done by loopy goes\n// into handling data frames. Loopy maintains a queue of active streams, and each\n// stream maintains a queue of data frames; as loopy receives data frames\n// it gets added to the queue of the relevant stream.\n// Loopy goes over this list of active streams by processing one node every iteration,\n// thereby closely resembling a round-robin scheduling over all streams. While\n// processing a stream, loopy writes out data bytes from this stream capped by the min\n// of http2MaxFrameLen, connection-level flow control and stream-level flow control.\ntype loopyWriter struct {\n\tside      side\n\tcbuf      *controlBuffer\n\tsendQuota uint32\n\toiws      uint32 // outbound initial window size.\n\t// estdStreams is map of all established streams that are not cleaned-up yet.\n\t// On client-side, this is all streams whose headers were sent out.\n\t// On server-side, this is all streams whose headers were received.\n\testdStreams map[uint32]*outStream // Established streams.\n\t// activeStreams is a linked-list of all streams that have data to send and some\n\t// stream-level flow control quota.\n\t// Each of these streams internally have a list of data items(and perhaps trailers\n\t// on the server-side) to be sent out.\n\tactiveStreams *outStreamList\n\tframer        *framer\n\thBuf          *bytes.Buffer  // The buffer for HPACK encoding.\n\thEnc          *hpack.Encoder // HPACK encoder.\n\tbdpEst        *bdpEstimator\n\tdraining      bool\n\tconn          net.Conn\n\tlogger        *grpclog.PrefixLogger\n\tbufferPool    mem.BufferPool\n\n\t// Side-specific handlers\n\tssGoAwayHandler func(*goAway) (bool, error)\n\n\twriteBuf [][]byte // cached slice to avoid heap allocations for calls to mem.Reader.Peek.\n}\n\nfunc newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimator, conn net.Conn, logger *grpclog.PrefixLogger, goAwayHandler func(*goAway) (bool, error), bufferPool mem.BufferPool) *loopyWriter {\n\tvar buf bytes.Buffer\n\tl := &loopyWriter{\n\t\tside:            s,\n\t\tcbuf:            cbuf,\n\t\tsendQuota:       defaultWindowSize,\n\t\toiws:            defaultWindowSize,\n\t\testdStreams:     make(map[uint32]*outStream),\n\t\tactiveStreams:   newOutStreamList(),\n\t\tframer:          fr,\n\t\thBuf:            &buf,\n\t\thEnc:            hpack.NewEncoder(&buf),\n\t\tbdpEst:          bdpEst,\n\t\tconn:            conn,\n\t\tlogger:          logger,\n\t\tssGoAwayHandler: goAwayHandler,\n\t\tbufferPool:      bufferPool,\n\t}\n\treturn l\n}\n\nconst minBatchSize = 1000\n\n// run should be run in a separate goroutine.\n// It reads control frames from controlBuf and processes them by:\n// 1. Updating loopy's internal state, or/and\n// 2. Writing out HTTP2 frames on the wire.\n//\n// Loopy keeps all active streams with data to send in a linked-list.\n// All streams in the activeStreams linked-list must have both:\n// 1. Data to send, and\n// 2. Stream level flow control quota available.\n//\n// In each iteration of run loop, other than processing the incoming control\n// frame, loopy calls processData, which processes one node from the\n// activeStreams linked-list.  This results in writing of HTTP2 frames into an\n// underlying write buffer.  When there's no more control frames to read from\n// controlBuf, loopy flushes the write buffer.  As an optimization, to increase\n// the batch size for each flush, loopy yields the processor, once if the batch\n// size is too low to give stream goroutines a chance to fill it up.\n//\n// Upon exiting, if the error causing the exit is not an I/O error, run()\n// flushes the underlying connection.  The connection is always left open to\n// allow different closing behavior on the client and server.\nfunc (l *loopyWriter) run() (err error) {\n\tdefer func() {\n\t\tif l.logger.V(logLevel) {\n\t\t\tl.logger.Infof(\"loopyWriter exiting with error: %v\", err)\n\t\t}\n\t\tif !isIOError(err) {\n\t\t\tl.framer.writer.Flush()\n\t\t}\n\t\tl.cbuf.finish()\n\t}()\n\tfor {\n\t\tit, err := l.cbuf.get(true)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err = l.handle(it); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif _, err = l.processData(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgosched := true\n\thasdata:\n\t\tfor {\n\t\t\tit, err := l.cbuf.get(false)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif it != nil {\n\t\t\t\tif err = l.handle(it); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif _, err = l.processData(); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tcontinue hasdata\n\t\t\t}\n\t\t\tisEmpty, err := l.processData()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif !isEmpty {\n\t\t\t\tcontinue hasdata\n\t\t\t}\n\t\t\tif gosched {\n\t\t\t\tgosched = false\n\t\t\t\tif l.framer.writer.offset < minBatchSize {\n\t\t\t\t\truntime.Gosched()\n\t\t\t\t\tcontinue hasdata\n\t\t\t\t}\n\t\t\t}\n\t\t\tl.framer.writer.Flush()\n\t\t\tbreak hasdata\n\t\t}\n\t}\n}\n\nfunc (l *loopyWriter) outgoingWindowUpdateHandler(w *outgoingWindowUpdate) error {\n\treturn l.framer.fr.WriteWindowUpdate(w.streamID, w.increment)\n}\n\nfunc (l *loopyWriter) incomingWindowUpdateHandler(w *incomingWindowUpdate) {\n\t// Otherwise update the quota.\n\tif w.streamID == 0 {\n\t\tl.sendQuota += w.increment\n\t\treturn\n\t}\n\t// Find the stream and update it.\n\tif str, ok := l.estdStreams[w.streamID]; ok {\n\t\tstr.bytesOutStanding -= int(w.increment)\n\t\tif strQuota := int(l.oiws) - str.bytesOutStanding; strQuota > 0 && str.state == waitingOnStreamQuota {\n\t\t\tstr.state = active\n\t\t\tl.activeStreams.enqueue(str)\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (l *loopyWriter) outgoingSettingsHandler(s *outgoingSettings) error {\n\treturn l.framer.fr.WriteSettings(s.ss...)\n}\n\nfunc (l *loopyWriter) incomingSettingsHandler(s *incomingSettings) error {\n\tl.applySettings(s.ss)\n\treturn l.framer.fr.WriteSettingsAck()\n}\n\nfunc (l *loopyWriter) registerStreamHandler(h *registerStream) {\n\tstr := &outStream{\n\t\tid:    h.streamID,\n\t\tstate: empty,\n\t\titl:   &itemList{},\n\t\twq:    h.wq,\n\t}\n\tl.estdStreams[h.streamID] = str\n}\n\nfunc (l *loopyWriter) headerHandler(h *headerFrame) error {\n\tif l.side == serverSide {\n\t\tstr, ok := l.estdStreams[h.streamID]\n\t\tif !ok {\n\t\t\tif l.logger.V(logLevel) {\n\t\t\t\tl.logger.Infof(\"Unrecognized streamID %d in loopyWriter\", h.streamID)\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\t\t// Case 1.A: Server is responding back with headers.\n\t\tif !h.endStream {\n\t\t\treturn l.writeHeader(h.streamID, h.endStream, h.hf, h.onWrite)\n\t\t}\n\t\t// else:  Case 1.B: Server wants to close stream.\n\n\t\tif str.state != empty { // either active or waiting on stream quota.\n\t\t\t// add it str's list of items.\n\t\t\tstr.itl.enqueue(h)\n\t\t\treturn nil\n\t\t}\n\t\tif err := l.writeHeader(h.streamID, h.endStream, h.hf, h.onWrite); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn l.cleanupStreamHandler(h.cleanup)\n\t}\n\t// Case 2: Client wants to originate stream.\n\tstr := &outStream{\n\t\tid:    h.streamID,\n\t\tstate: empty,\n\t\titl:   &itemList{},\n\t\twq:    h.wq,\n\t}\n\treturn l.originateStream(str, h)\n}\n\nfunc (l *loopyWriter) originateStream(str *outStream, hdr *headerFrame) error {\n\t// l.draining is set when handling GoAway. In which case, we want to avoid\n\t// creating new streams.\n\tif l.draining {\n\t\t// TODO: provide a better error with the reason we are in draining.\n\t\thdr.onOrphaned(errStreamDrain)\n\t\treturn nil\n\t}\n\tif err := hdr.initStream(str.id); err != nil {\n\t\treturn err\n\t}\n\tif err := l.writeHeader(str.id, hdr.endStream, hdr.hf, hdr.onWrite); err != nil {\n\t\treturn err\n\t}\n\tl.estdStreams[str.id] = str\n\treturn nil\n}\n\nfunc (l *loopyWriter) writeHeader(streamID uint32, endStream bool, hf []hpack.HeaderField, onWrite func()) error {\n\tif onWrite != nil {\n\t\tonWrite()\n\t}\n\tl.hBuf.Reset()\n\tfor _, f := range hf {\n\t\tif err := l.hEnc.WriteField(f); err != nil {\n\t\t\tif l.logger.V(logLevel) {\n\t\t\t\tl.logger.Warningf(\"Encountered error while encoding headers: %v\", err)\n\t\t\t}\n\t\t}\n\t}\n\tvar (\n\t\terr               error\n\t\tendHeaders, first bool\n\t)\n\tfirst = true\n\tfor !endHeaders {\n\t\tsize := l.hBuf.Len()\n\t\tif size > http2MaxFrameLen {\n\t\t\tsize = http2MaxFrameLen\n\t\t} else {\n\t\t\tendHeaders = true\n\t\t}\n\t\tif first {\n\t\t\tfirst = false\n\t\t\terr = l.framer.fr.WriteHeaders(http2.HeadersFrameParam{\n\t\t\t\tStreamID:      streamID,\n\t\t\t\tBlockFragment: l.hBuf.Next(size),\n\t\t\t\tEndStream:     endStream,\n\t\t\t\tEndHeaders:    endHeaders,\n\t\t\t})\n\t\t} else {\n\t\t\terr = l.framer.fr.WriteContinuation(\n\t\t\t\tstreamID,\n\t\t\t\tendHeaders,\n\t\t\t\tl.hBuf.Next(size),\n\t\t\t)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (l *loopyWriter) preprocessData(df *dataFrame) {\n\tstr, ok := l.estdStreams[df.streamID]\n\tif !ok {\n\t\treturn\n\t}\n\t// If we got data for a stream it means that\n\t// stream was originated and the headers were sent out.\n\tstr.itl.enqueue(df)\n\tif str.state == empty {\n\t\tstr.state = active\n\t\tl.activeStreams.enqueue(str)\n\t}\n}\n\nfunc (l *loopyWriter) pingHandler(p *ping) error {\n\tif !p.ack {\n\t\tl.bdpEst.timesnap(p.data)\n\t}\n\treturn l.framer.fr.WritePing(p.ack, p.data)\n\n}\n\nfunc (l *loopyWriter) outFlowControlSizeRequestHandler(o *outFlowControlSizeRequest) {\n\to.resp <- l.sendQuota\n}\n\nfunc (l *loopyWriter) cleanupStreamHandler(c *cleanupStream) error {\n\tc.onWrite()\n\tif str, ok := l.estdStreams[c.streamID]; ok {\n\t\t// On the server side it could be a trailers-only response or\n\t\t// a RST_STREAM before stream initialization thus the stream might\n\t\t// not be established yet.\n\t\tdelete(l.estdStreams, c.streamID)\n\t\tstr.reader.Close()\n\t\tstr.deleteSelf()\n\t\tfor head := str.itl.dequeueAll(); head != nil; head = head.next {\n\t\t\tif df, ok := head.it.(*dataFrame); ok {\n\t\t\t\tif !df.processing {\n\t\t\t\t\tdf.data.Free()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif c.rst { // If RST_STREAM needs to be sent.\n\t\tif err := l.framer.fr.WriteRSTStream(c.streamID, c.rstCode); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif l.draining && len(l.estdStreams) == 0 {\n\t\t// Flush and close the connection; we are done with it.\n\t\treturn errors.New(\"finished processing active streams while in draining mode\")\n\t}\n\treturn nil\n}\n\nfunc (l *loopyWriter) earlyAbortStreamHandler(eas *earlyAbortStream) error {\n\tif l.side == clientSide {\n\t\treturn errors.New(\"earlyAbortStream not handled on client\")\n\t}\n\tif err := l.writeHeader(eas.streamID, true, eas.hf, nil); err != nil {\n\t\treturn err\n\t}\n\tif eas.rst {\n\t\tif err := l.framer.fr.WriteRSTStream(eas.streamID, http2.ErrCodeNo); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (l *loopyWriter) incomingGoAwayHandler(*incomingGoAway) error {\n\tif l.side == clientSide {\n\t\tl.draining = true\n\t\tif len(l.estdStreams) == 0 {\n\t\t\t// Flush and close the connection; we are done with it.\n\t\t\treturn errors.New(\"received GOAWAY with no active streams\")\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (l *loopyWriter) goAwayHandler(g *goAway) error {\n\t// Handling of outgoing GoAway is very specific to side.\n\tif l.ssGoAwayHandler != nil {\n\t\tdraining, err := l.ssGoAwayHandler(g)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tl.draining = draining\n\t}\n\treturn nil\n}\n\nfunc (l *loopyWriter) handle(i any) error {\n\tswitch i := i.(type) {\n\tcase *incomingWindowUpdate:\n\t\tl.incomingWindowUpdateHandler(i)\n\tcase *outgoingWindowUpdate:\n\t\treturn l.outgoingWindowUpdateHandler(i)\n\tcase *incomingSettings:\n\t\treturn l.incomingSettingsHandler(i)\n\tcase *outgoingSettings:\n\t\treturn l.outgoingSettingsHandler(i)\n\tcase *headerFrame:\n\t\treturn l.headerHandler(i)\n\tcase *registerStream:\n\t\tl.registerStreamHandler(i)\n\tcase *cleanupStream:\n\t\treturn l.cleanupStreamHandler(i)\n\tcase *earlyAbortStream:\n\t\treturn l.earlyAbortStreamHandler(i)\n\tcase *incomingGoAway:\n\t\treturn l.incomingGoAwayHandler(i)\n\tcase *dataFrame:\n\t\tl.preprocessData(i)\n\tcase *ping:\n\t\treturn l.pingHandler(i)\n\tcase *goAway:\n\t\treturn l.goAwayHandler(i)\n\tcase *outFlowControlSizeRequest:\n\t\tl.outFlowControlSizeRequestHandler(i)\n\tcase closeConnection:\n\t\t// Just return a non-I/O error and run() will flush and close the\n\t\t// connection.\n\t\treturn ErrConnClosing\n\tdefault:\n\t\treturn fmt.Errorf(\"transport: unknown control message type %T\", i)\n\t}\n\treturn nil\n}\n\nfunc (l *loopyWriter) applySettings(ss []http2.Setting) {\n\tfor _, s := range ss {\n\t\tswitch s.ID {\n\t\tcase http2.SettingInitialWindowSize:\n\t\t\to := l.oiws\n\t\t\tl.oiws = s.Val\n\t\t\tif o < l.oiws {\n\t\t\t\t// If the new limit is greater make all depleted streams active.\n\t\t\t\tfor _, stream := range l.estdStreams {\n\t\t\t\t\tif stream.state == waitingOnStreamQuota {\n\t\t\t\t\t\tstream.state = active\n\t\t\t\t\t\tl.activeStreams.enqueue(stream)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase http2.SettingHeaderTableSize:\n\t\t\tupdateHeaderTblSize(l.hEnc, s.Val)\n\t\t}\n\t}\n}\n\n// processData removes the first stream from active streams, writes out at most 16KB\n// of its data and then puts it at the end of activeStreams if there's still more data\n// to be sent and stream has some stream-level flow control.\nfunc (l *loopyWriter) processData() (bool, error) {\n\tif l.sendQuota == 0 {\n\t\treturn true, nil\n\t}\n\tstr := l.activeStreams.dequeue() // Remove the first stream.\n\tif str == nil {\n\t\treturn true, nil\n\t}\n\treader := &str.reader\n\tdataItem := str.itl.peek().(*dataFrame) // Peek at the first data item this stream.\n\tif !dataItem.processing {\n\t\tdataItem.processing = true\n\t\treader.Reset(dataItem.data)\n\t\tdataItem.data.Free()\n\t}\n\t// A data item is represented by a dataFrame, since it later translates into\n\t// multiple HTTP2 data frames.\n\t// Every dataFrame has two buffers; h that keeps grpc-message header and data\n\t// that is the actual message. As an optimization to keep wire traffic low, data\n\t// from data is copied to h to make as big as the maximum possible HTTP2 frame\n\t// size.\n\n\tif len(dataItem.h) == 0 && reader.Remaining() == 0 { // Empty data frame\n\t\t// Client sends out empty data frame with endStream = true\n\t\tif err := l.framer.writeData(dataItem.streamID, dataItem.endStream, nil); err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tstr.itl.dequeue() // remove the empty data item from stream\n\t\treader.Close()\n\t\tif str.itl.isEmpty() {\n\t\t\tstr.state = empty\n\t\t} else if trailer, ok := str.itl.peek().(*headerFrame); ok { // the next item is trailers.\n\t\t\tif err := l.writeHeader(trailer.streamID, trailer.endStream, trailer.hf, trailer.onWrite); err != nil {\n\t\t\t\treturn false, err\n\t\t\t}\n\t\t\tif err := l.cleanupStreamHandler(trailer.cleanup); err != nil {\n\t\t\t\treturn false, err\n\t\t\t}\n\t\t} else {\n\t\t\tl.activeStreams.enqueue(str)\n\t\t}\n\t\treturn false, nil\n\t}\n\n\t// Figure out the maximum size we can send\n\tmaxSize := http2MaxFrameLen\n\tif strQuota := int(l.oiws) - str.bytesOutStanding; strQuota <= 0 { // stream-level flow control.\n\t\tstr.state = waitingOnStreamQuota\n\t\treturn false, nil\n\t} else if maxSize > strQuota {\n\t\tmaxSize = strQuota\n\t}\n\tif maxSize > int(l.sendQuota) { // connection-level flow control.\n\t\tmaxSize = int(l.sendQuota)\n\t}\n\t// Compute how much of the header and data we can send within quota and max frame length\n\thSize := min(maxSize, len(dataItem.h))\n\tdSize := min(maxSize-hSize, reader.Remaining())\n\tremainingBytes := len(dataItem.h) + reader.Remaining() - hSize - dSize\n\tsize := hSize + dSize\n\n\tl.writeBuf = l.writeBuf[:0]\n\tif hSize > 0 {\n\t\tl.writeBuf = append(l.writeBuf, dataItem.h[:hSize])\n\t}\n\tif dSize > 0 {\n\t\tvar err error\n\t\tl.writeBuf, err = reader.Peek(dSize, l.writeBuf)\n\t\tif err != nil {\n\t\t\t// This must never happen since the reader must have at least dSize\n\t\t\t// bytes.\n\t\t\t// Log an error to fail tests.\n\t\t\tl.logger.Errorf(\"unexpected error while reading Data frame payload: %v\", err)\n\t\t\treturn false, err\n\t\t}\n\t}\n\n\t// Now that outgoing flow controls are checked we can replenish str's write quota\n\tstr.wq.replenish(size)\n\tvar endStream bool\n\t// If this is the last data message on this stream and all of it can be written in this iteration.\n\tif dataItem.endStream && remainingBytes == 0 {\n\t\tendStream = true\n\t}\n\tif dataItem.onEachWrite != nil {\n\t\tdataItem.onEachWrite()\n\t}\n\terr := l.framer.writeData(dataItem.streamID, endStream, l.writeBuf)\n\treader.Discard(dSize)\n\tif cap(l.writeBuf) > maxWriteBufSize {\n\t\tl.writeBuf = nil\n\t} else {\n\t\tclear(l.writeBuf)\n\t}\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tstr.bytesOutStanding += size\n\tl.sendQuota -= uint32(size)\n\tdataItem.h = dataItem.h[hSize:]\n\n\tif remainingBytes == 0 { // All the data from that message was written out.\n\t\treader.Close()\n\t\tstr.itl.dequeue()\n\t}\n\tif str.itl.isEmpty() {\n\t\tstr.state = empty\n\t} else if trailer, ok := str.itl.peek().(*headerFrame); ok { // The next item is trailers.\n\t\tif err := l.writeHeader(trailer.streamID, trailer.endStream, trailer.hf, trailer.onWrite); err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tif err := l.cleanupStreamHandler(trailer.cleanup); err != nil {\n\t\t\treturn false, err\n\t\t}\n\t} else if int(l.oiws)-str.bytesOutStanding <= 0 { // Ran out of stream quota.\n\t\tstr.state = waitingOnStreamQuota\n\t} else { // Otherwise add it back to the list of active streams.\n\t\tl.activeStreams.enqueue(str)\n\t}\n\treturn false, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/defaults.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"math\"\n\t\"time\"\n)\n\nconst (\n\t// The default value of flow control window size in HTTP2 spec.\n\tdefaultWindowSize = 65535\n\t// The initial window size for flow control.\n\tinitialWindowSize             = defaultWindowSize // for an RPC\n\tinfinity                      = time.Duration(math.MaxInt64)\n\tdefaultClientKeepaliveTime    = infinity\n\tdefaultClientKeepaliveTimeout = 20 * time.Second\n\tdefaultMaxStreamsClient       = 100\n\tdefaultMaxConnectionIdle      = infinity\n\tdefaultMaxConnectionAge       = infinity\n\tdefaultMaxConnectionAgeGrace  = infinity\n\tdefaultServerKeepaliveTime    = 2 * time.Hour\n\tdefaultServerKeepaliveTimeout = 20 * time.Second\n\tdefaultKeepalivePolicyMinTime = 5 * time.Minute\n\t// max window limit set by HTTP2 Specs.\n\tmaxWindowSize = math.MaxInt32\n\t// defaultWriteQuota is the default value for number of data\n\t// bytes that each stream can schedule before some of it being\n\t// flushed out.\n\tdefaultWriteQuota              = 64 * 1024\n\tdefaultClientMaxHeaderListSize = uint32(16 << 20)\n\tdefaultServerMaxHeaderListSize = uint32(16 << 20)\n\tupcomingDefaultHeaderListSize  = uint32(8 << 10)\n)\n\n// MaxStreamID is the upper bound for the stream ID before the current\n// transport gracefully closes and new transport is created for subsequent RPCs.\n// This is set to 75% of 2^31-1. Streams are identified with an unsigned 31-bit\n// integer. It's exported so that tests can override it.\nvar MaxStreamID = uint32(math.MaxInt32 * 3 / 4)\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/flowcontrol.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"sync\"\n\t\"sync/atomic\"\n)\n\n// writeQuota is a soft limit on the amount of data a stream can\n// schedule before some of it is written out.\ntype writeQuota struct {\n\t_ noCopy\n\t// get waits on read from when quota goes less than or equal to zero.\n\t// replenish writes on it when quota goes positive again.\n\tch chan struct{}\n\t// done is triggered in error case.\n\tdone <-chan struct{}\n\t// replenish is called by loopyWriter to give quota back to.\n\t// It is implemented as a field so that it can be updated\n\t// by tests.\n\treplenish func(n int)\n\tquota     int32\n}\n\n// init allows a writeQuota to be initialized in-place, which is useful for\n// resetting a buffer or for avoiding a heap allocation when the buffer is\n// embedded in another struct.\nfunc (w *writeQuota) init(sz int32, done <-chan struct{}) {\n\tw.quota = sz\n\tw.ch = make(chan struct{}, 1)\n\tw.done = done\n\tw.replenish = w.realReplenish\n}\n\nfunc (w *writeQuota) get(sz int32) error {\n\tfor {\n\t\tif atomic.LoadInt32(&w.quota) > 0 {\n\t\t\tatomic.AddInt32(&w.quota, -sz)\n\t\t\treturn nil\n\t\t}\n\t\tselect {\n\t\tcase <-w.ch:\n\t\t\tcontinue\n\t\tcase <-w.done:\n\t\t\treturn errStreamDone\n\t\t}\n\t}\n}\n\nfunc (w *writeQuota) realReplenish(n int) {\n\tsz := int32(n)\n\tnewQuota := atomic.AddInt32(&w.quota, sz)\n\tpreviousQuota := newQuota - sz\n\tif previousQuota <= 0 && newQuota > 0 {\n\t\tselect {\n\t\tcase w.ch <- struct{}{}:\n\t\tdefault:\n\t\t}\n\t}\n}\n\ntype trInFlow struct {\n\tlimit               uint32\n\tunacked             uint32\n\teffectiveWindowSize uint32\n}\n\nfunc (f *trInFlow) newLimit(n uint32) uint32 {\n\td := n - f.limit\n\tf.limit = n\n\tf.updateEffectiveWindowSize()\n\treturn d\n}\n\nfunc (f *trInFlow) onData(n uint32) uint32 {\n\tf.unacked += n\n\tif f.unacked < f.limit/4 {\n\t\tf.updateEffectiveWindowSize()\n\t\treturn 0\n\t}\n\treturn f.reset()\n}\n\nfunc (f *trInFlow) reset() uint32 {\n\tw := f.unacked\n\tf.unacked = 0\n\tf.updateEffectiveWindowSize()\n\treturn w\n}\n\nfunc (f *trInFlow) updateEffectiveWindowSize() {\n\tatomic.StoreUint32(&f.effectiveWindowSize, f.limit-f.unacked)\n}\n\nfunc (f *trInFlow) getSize() uint32 {\n\treturn atomic.LoadUint32(&f.effectiveWindowSize)\n}\n\n// TODO(mmukhi): Simplify this code.\n// inFlow deals with inbound flow control\ntype inFlow struct {\n\tmu sync.Mutex\n\t// The inbound flow control limit for pending data.\n\tlimit uint32\n\t// pendingData is the overall data which have been received but not been\n\t// consumed by applications.\n\tpendingData uint32\n\t// The amount of data the application has consumed but grpc has not sent\n\t// window update for them. Used to reduce window update frequency.\n\tpendingUpdate uint32\n\t// delta is the extra window update given by receiver when an application\n\t// is reading data bigger in size than the inFlow limit.\n\tdelta uint32\n}\n\n// newLimit updates the inflow window to a new value n.\n// It assumes that n is always greater than the old limit.\nfunc (f *inFlow) newLimit(n uint32) {\n\tf.mu.Lock()\n\tf.limit = n\n\tf.mu.Unlock()\n}\n\nfunc (f *inFlow) maybeAdjust(n uint32) uint32 {\n\tif n > uint32(math.MaxInt32) {\n\t\tn = uint32(math.MaxInt32)\n\t}\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\t// estSenderQuota is the receiver's view of the maximum number of bytes the sender\n\t// can send without a window update.\n\testSenderQuota := int32(f.limit - (f.pendingData + f.pendingUpdate))\n\t// estUntransmittedData is the maximum number of bytes the sends might not have put\n\t// on the wire yet. A value of 0 or less means that we have already received all or\n\t// more bytes than the application is requesting to read.\n\testUntransmittedData := int32(n - f.pendingData) // Casting into int32 since it could be negative.\n\t// This implies that unless we send a window update, the sender won't be able to send all the bytes\n\t// for this message. Therefore we must send an update over the limit since there's an active read\n\t// request from the application.\n\tif estUntransmittedData > estSenderQuota {\n\t\t// Sender's window shouldn't go more than 2^31 - 1 as specified in the HTTP spec.\n\t\tif f.limit+n > maxWindowSize {\n\t\t\tf.delta = maxWindowSize - f.limit\n\t\t} else {\n\t\t\t// Send a window update for the whole message and not just the difference between\n\t\t\t// estUntransmittedData and estSenderQuota. This will be helpful in case the message\n\t\t\t// is padded; We will fallback on the current available window(at least a 1/4th of the limit).\n\t\t\tf.delta = n\n\t\t}\n\t\treturn f.delta\n\t}\n\treturn 0\n}\n\n// onData is invoked when some data frame is received. It updates pendingData.\nfunc (f *inFlow) onData(n uint32) error {\n\tf.mu.Lock()\n\tf.pendingData += n\n\tif f.pendingData+f.pendingUpdate > f.limit+f.delta {\n\t\tlimit := f.limit\n\t\trcvd := f.pendingData + f.pendingUpdate\n\t\tf.mu.Unlock()\n\t\treturn fmt.Errorf(\"received %d-bytes data exceeding the limit %d bytes\", rcvd, limit)\n\t}\n\tf.mu.Unlock()\n\treturn nil\n}\n\n// onRead is invoked when the application reads the data. It returns the window size\n// to be sent to the peer.\nfunc (f *inFlow) onRead(n uint32) uint32 {\n\tf.mu.Lock()\n\tif f.pendingData == 0 {\n\t\tf.mu.Unlock()\n\t\treturn 0\n\t}\n\tf.pendingData -= n\n\tif n > f.delta {\n\t\tn -= f.delta\n\t\tf.delta = 0\n\t} else {\n\t\tf.delta -= n\n\t\tn = 0\n\t}\n\tf.pendingUpdate += n\n\tif f.pendingUpdate >= f.limit/4 {\n\t\twu := f.pendingUpdate\n\t\tf.pendingUpdate = 0\n\t\tf.mu.Unlock()\n\t\treturn wu\n\t}\n\tf.mu.Unlock()\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/handler_server.go",
    "content": "/*\n *\n * Copyright 2016 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// This file is the implementation of a gRPC server using HTTP/2 which\n// uses the standard Go http2 Server implementation (via the\n// http.Handler interface), rather than speaking low-level HTTP/2\n// frames itself. It is the implementation of *grpc.Server.ServeHTTP.\n\npackage transport\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"net/http\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"golang.org/x/net/http2\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/internal/grpclog\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n\t\"google.golang.org/grpc/mem\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/peer\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n\t\"google.golang.org/protobuf/proto\"\n)\n\n// NewServerHandlerTransport returns a ServerTransport handling gRPC from\n// inside an http.Handler, or writes an HTTP error to w and returns an error.\n// It requires that the http Server supports HTTP/2.\nfunc NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats stats.Handler, bufferPool mem.BufferPool) (ServerTransport, error) {\n\tif r.Method != http.MethodPost {\n\t\tw.Header().Set(\"Allow\", http.MethodPost)\n\t\tmsg := fmt.Sprintf(\"invalid gRPC request method %q\", r.Method)\n\t\thttp.Error(w, msg, http.StatusMethodNotAllowed)\n\t\treturn nil, errors.New(msg)\n\t}\n\tcontentType := r.Header.Get(\"Content-Type\")\n\t// TODO: do we assume contentType is lowercase? we did before\n\tcontentSubtype, validContentType := grpcutil.ContentSubtype(contentType)\n\tif !validContentType {\n\t\tmsg := fmt.Sprintf(\"invalid gRPC request content-type %q\", contentType)\n\t\thttp.Error(w, msg, http.StatusUnsupportedMediaType)\n\t\treturn nil, errors.New(msg)\n\t}\n\tif r.ProtoMajor != 2 {\n\t\tmsg := \"gRPC requires HTTP/2\"\n\t\thttp.Error(w, msg, http.StatusHTTPVersionNotSupported)\n\t\treturn nil, errors.New(msg)\n\t}\n\tif _, ok := w.(http.Flusher); !ok {\n\t\tmsg := \"gRPC requires a ResponseWriter supporting http.Flusher\"\n\t\thttp.Error(w, msg, http.StatusInternalServerError)\n\t\treturn nil, errors.New(msg)\n\t}\n\n\tvar localAddr net.Addr\n\tif la := r.Context().Value(http.LocalAddrContextKey); la != nil {\n\t\tlocalAddr, _ = la.(net.Addr)\n\t}\n\tvar authInfo credentials.AuthInfo\n\tif r.TLS != nil {\n\t\tauthInfo = credentials.TLSInfo{State: *r.TLS, CommonAuthInfo: credentials.CommonAuthInfo{SecurityLevel: credentials.PrivacyAndIntegrity}}\n\t}\n\tp := peer.Peer{\n\t\tAddr:      strAddr(r.RemoteAddr),\n\t\tLocalAddr: localAddr,\n\t\tAuthInfo:  authInfo,\n\t}\n\tst := &serverHandlerTransport{\n\t\trw:             w,\n\t\treq:            r,\n\t\tclosedCh:       make(chan struct{}),\n\t\twrites:         make(chan func()),\n\t\tpeer:           p,\n\t\tcontentType:    contentType,\n\t\tcontentSubtype: contentSubtype,\n\t\tstats:          stats,\n\t\tbufferPool:     bufferPool,\n\t}\n\tst.logger = prefixLoggerForServerHandlerTransport(st)\n\n\tif v := r.Header.Get(\"grpc-timeout\"); v != \"\" {\n\t\tto, err := decodeTimeout(v)\n\t\tif err != nil {\n\t\t\tmsg := fmt.Sprintf(\"malformed grpc-timeout: %v\", err)\n\t\t\thttp.Error(w, msg, http.StatusBadRequest)\n\t\t\treturn nil, status.Error(codes.Internal, msg)\n\t\t}\n\t\tst.timeoutSet = true\n\t\tst.timeout = to\n\t}\n\n\tmetakv := []string{\"content-type\", contentType}\n\tif r.Host != \"\" {\n\t\tmetakv = append(metakv, \":authority\", r.Host)\n\t}\n\tfor k, vv := range r.Header {\n\t\tk = strings.ToLower(k)\n\t\tif isReservedHeader(k) && !isWhitelistedHeader(k) {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, v := range vv {\n\t\t\tv, err := decodeMetadataHeader(k, v)\n\t\t\tif err != nil {\n\t\t\t\tmsg := fmt.Sprintf(\"malformed binary metadata %q in header %q: %v\", v, k, err)\n\t\t\t\thttp.Error(w, msg, http.StatusBadRequest)\n\t\t\t\treturn nil, status.Error(codes.Internal, msg)\n\t\t\t}\n\t\t\tmetakv = append(metakv, k, v)\n\t\t}\n\t}\n\tst.headerMD = metadata.Pairs(metakv...)\n\n\treturn st, nil\n}\n\n// serverHandlerTransport is an implementation of ServerTransport\n// which replies to exactly one gRPC request (exactly one HTTP request),\n// using the net/http.Handler interface. This http.Handler is guaranteed\n// at this point to be speaking over HTTP/2, so it's able to speak valid\n// gRPC.\ntype serverHandlerTransport struct {\n\trw         http.ResponseWriter\n\treq        *http.Request\n\ttimeoutSet bool\n\ttimeout    time.Duration\n\n\theaderMD metadata.MD\n\n\tpeer peer.Peer\n\n\tcloseOnce sync.Once\n\tclosedCh  chan struct{} // closed on Close\n\n\t// writes is a channel of code to run serialized in the\n\t// ServeHTTP (HandleStreams) goroutine. The channel is closed\n\t// when WriteStatus is called.\n\twrites chan func()\n\n\t// block concurrent WriteStatus calls\n\t// e.g. grpc/(*serverStream).SendMsg/RecvMsg\n\twriteStatusMu sync.Mutex\n\n\t// we just mirror the request content-type\n\tcontentType string\n\t// we store both contentType and contentSubtype so we don't keep recreating them\n\t// TODO make sure this is consistent across handler_server and http2_server\n\tcontentSubtype string\n\n\tstats  stats.Handler\n\tlogger *grpclog.PrefixLogger\n\n\tbufferPool mem.BufferPool\n}\n\nfunc (ht *serverHandlerTransport) Close(err error) {\n\tht.closeOnce.Do(func() {\n\t\tif ht.logger.V(logLevel) {\n\t\t\tht.logger.Infof(\"Closing: %v\", err)\n\t\t}\n\t\tclose(ht.closedCh)\n\t})\n}\n\nfunc (ht *serverHandlerTransport) Peer() *peer.Peer {\n\treturn &peer.Peer{\n\t\tAddr:      ht.peer.Addr,\n\t\tLocalAddr: ht.peer.LocalAddr,\n\t\tAuthInfo:  ht.peer.AuthInfo,\n\t}\n}\n\n// strAddr is a net.Addr backed by either a TCP \"ip:port\" string, or\n// the empty string if unknown.\ntype strAddr string\n\nfunc (a strAddr) Network() string {\n\tif a != \"\" {\n\t\t// Per the documentation on net/http.Request.RemoteAddr, if this is\n\t\t// set, it's set to the IP:port of the peer (hence, TCP):\n\t\t// https://golang.org/pkg/net/http/#Request\n\t\t//\n\t\t// If we want to support Unix sockets later, we can\n\t\t// add our own grpc-specific convention within the\n\t\t// grpc codebase to set RemoteAddr to a different\n\t\t// format, or probably better: we can attach it to the\n\t\t// context and use that from serverHandlerTransport.RemoteAddr.\n\t\treturn \"tcp\"\n\t}\n\treturn \"\"\n}\n\nfunc (a strAddr) String() string { return string(a) }\n\n// do runs fn in the ServeHTTP goroutine.\nfunc (ht *serverHandlerTransport) do(fn func()) error {\n\tselect {\n\tcase <-ht.closedCh:\n\t\treturn ErrConnClosing\n\tcase ht.writes <- fn:\n\t\treturn nil\n\t}\n}\n\nfunc (ht *serverHandlerTransport) writeStatus(s *ServerStream, st *status.Status) error {\n\tht.writeStatusMu.Lock()\n\tdefer ht.writeStatusMu.Unlock()\n\n\theadersWritten := s.updateHeaderSent()\n\terr := ht.do(func() {\n\t\tif !headersWritten {\n\t\t\tht.writePendingHeaders(s)\n\t\t}\n\n\t\t// And flush, in case no header or body has been sent yet.\n\t\t// This forces a separation of headers and trailers if this is the\n\t\t// first call (for example, in end2end tests's TestNoService).\n\t\tht.rw.(http.Flusher).Flush()\n\n\t\th := ht.rw.Header()\n\t\th.Set(\"Grpc-Status\", fmt.Sprintf(\"%d\", st.Code()))\n\t\tif m := st.Message(); m != \"\" {\n\t\t\th.Set(\"Grpc-Message\", encodeGrpcMessage(m))\n\t\t}\n\n\t\ts.hdrMu.Lock()\n\t\tdefer s.hdrMu.Unlock()\n\t\tif p := st.Proto(); p != nil && len(p.Details) > 0 {\n\t\t\tdelete(s.trailer, grpcStatusDetailsBinHeader)\n\t\t\tstBytes, err := proto.Marshal(p)\n\t\t\tif err != nil {\n\t\t\t\t// TODO: return error instead, when callers are able to handle it.\n\t\t\t\tpanic(err)\n\t\t\t}\n\n\t\t\th.Set(grpcStatusDetailsBinHeader, encodeBinHeader(stBytes))\n\t\t}\n\n\t\tif len(s.trailer) > 0 {\n\t\t\tfor k, vv := range s.trailer {\n\t\t\t\t// Clients don't tolerate reading restricted headers after some non restricted ones were sent.\n\t\t\t\tif isReservedHeader(k) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfor _, v := range vv {\n\t\t\t\t\t// http2 ResponseWriter mechanism to send undeclared Trailers after\n\t\t\t\t\t// the headers have possibly been written.\n\t\t\t\t\th.Add(http2.TrailerPrefix+k, encodeMetadataHeader(k, v))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\n\tif err == nil && ht.stats != nil { // transport has not been closed\n\t\t// Note: The trailer fields are compressed with hpack after this call returns.\n\t\t// No WireLength field is set here.\n\t\ts.hdrMu.Lock()\n\t\tht.stats.HandleRPC(s.Context(), &stats.OutTrailer{\n\t\t\tTrailer: s.trailer.Copy(),\n\t\t})\n\t\ts.hdrMu.Unlock()\n\t}\n\tht.Close(errors.New(\"finished writing status\"))\n\treturn err\n}\n\n// writePendingHeaders sets common and custom headers on the first\n// write call (Write, WriteHeader, or WriteStatus)\nfunc (ht *serverHandlerTransport) writePendingHeaders(s *ServerStream) {\n\tht.writeCommonHeaders(s)\n\tht.writeCustomHeaders(s)\n}\n\n// writeCommonHeaders sets common headers on the first write\n// call (Write, WriteHeader, or WriteStatus).\nfunc (ht *serverHandlerTransport) writeCommonHeaders(s *ServerStream) {\n\th := ht.rw.Header()\n\th[\"Date\"] = nil // suppress Date to make tests happy; TODO: restore\n\th.Set(\"Content-Type\", ht.contentType)\n\n\t// Predeclare trailers we'll set later in WriteStatus (after the body).\n\t// This is a SHOULD in the HTTP RFC, and the way you add (known)\n\t// Trailers per the net/http.ResponseWriter contract.\n\t// See https://golang.org/pkg/net/http/#ResponseWriter\n\t// and https://golang.org/pkg/net/http/#example_ResponseWriter_trailers\n\th.Add(\"Trailer\", \"Grpc-Status\")\n\th.Add(\"Trailer\", \"Grpc-Message\")\n\th.Add(\"Trailer\", \"Grpc-Status-Details-Bin\")\n\n\tif s.sendCompress != \"\" {\n\t\th.Set(\"Grpc-Encoding\", s.sendCompress)\n\t}\n}\n\n// writeCustomHeaders sets custom headers set on the stream via SetHeader\n// on the first write call (Write, WriteHeader, or WriteStatus)\nfunc (ht *serverHandlerTransport) writeCustomHeaders(s *ServerStream) {\n\th := ht.rw.Header()\n\n\ts.hdrMu.Lock()\n\tfor k, vv := range s.header {\n\t\tif isReservedHeader(k) {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, v := range vv {\n\t\t\th.Add(k, encodeMetadataHeader(k, v))\n\t\t}\n\t}\n\n\ts.hdrMu.Unlock()\n}\n\nfunc (ht *serverHandlerTransport) write(s *ServerStream, hdr []byte, data mem.BufferSlice, _ *WriteOptions) error {\n\t// Always take a reference because otherwise there is no guarantee the data will\n\t// be available after this function returns. This is what callers to Write\n\t// expect.\n\tdata.Ref()\n\theadersWritten := s.updateHeaderSent()\n\terr := ht.do(func() {\n\t\tdefer data.Free()\n\t\tif !headersWritten {\n\t\t\tht.writePendingHeaders(s)\n\t\t}\n\t\tht.rw.Write(hdr)\n\t\tfor _, b := range data {\n\t\t\t_, _ = ht.rw.Write(b.ReadOnlyData())\n\t\t}\n\t\tht.rw.(http.Flusher).Flush()\n\t})\n\tif err != nil {\n\t\tdata.Free()\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (ht *serverHandlerTransport) writeHeader(s *ServerStream, md metadata.MD) error {\n\tif err := s.SetHeader(md); err != nil {\n\t\treturn err\n\t}\n\n\theadersWritten := s.updateHeaderSent()\n\terr := ht.do(func() {\n\t\tif !headersWritten {\n\t\t\tht.writePendingHeaders(s)\n\t\t}\n\n\t\tht.rw.WriteHeader(200)\n\t\tht.rw.(http.Flusher).Flush()\n\t})\n\n\tif err == nil && ht.stats != nil {\n\t\t// Note: The header fields are compressed with hpack after this call returns.\n\t\t// No WireLength field is set here.\n\t\tht.stats.HandleRPC(s.Context(), &stats.OutHeader{\n\t\t\tHeader:      md.Copy(),\n\t\t\tCompression: s.sendCompress,\n\t\t})\n\t}\n\treturn err\n}\n\nfunc (ht *serverHandlerTransport) adjustWindow(*ServerStream, uint32) {\n}\n\nfunc (ht *serverHandlerTransport) updateWindow(*ServerStream, uint32) {\n}\n\nfunc (ht *serverHandlerTransport) HandleStreams(ctx context.Context, startStream func(*ServerStream)) {\n\t// With this transport type there will be exactly 1 stream: this HTTP request.\n\tvar cancel context.CancelFunc\n\tif ht.timeoutSet {\n\t\tctx, cancel = context.WithTimeout(ctx, ht.timeout)\n\t} else {\n\t\tctx, cancel = context.WithCancel(ctx)\n\t}\n\n\t// requestOver is closed when the status has been written via WriteStatus.\n\trequestOver := make(chan struct{})\n\tgo func() {\n\t\tselect {\n\t\tcase <-requestOver:\n\t\tcase <-ht.closedCh:\n\t\tcase <-ht.req.Context().Done():\n\t\t}\n\t\tcancel()\n\t\tht.Close(errors.New(\"request is done processing\"))\n\t}()\n\n\tctx = metadata.NewIncomingContext(ctx, ht.headerMD)\n\treq := ht.req\n\ts := &ServerStream{\n\t\tStream: Stream{\n\t\t\tid:             0, // irrelevant\n\t\t\tctx:            ctx,\n\t\t\tmethod:         req.URL.Path,\n\t\t\trecvCompress:   req.Header.Get(\"grpc-encoding\"),\n\t\t\tcontentSubtype: ht.contentSubtype,\n\t\t},\n\t\tcancel:           cancel,\n\t\tst:               ht,\n\t\theaderWireLength: 0, // won't have access to header wire length until golang/go#18997.\n\t}\n\ts.Stream.buf.init()\n\ts.readRequester = s\n\ts.trReader = transportReader{\n\t\treader:        recvBufferReader{ctx: s.ctx, ctxDone: s.ctx.Done(), recv: &s.buf},\n\t\twindowHandler: s,\n\t}\n\n\t// readerDone is closed when the Body.Read-ing goroutine exits.\n\treaderDone := make(chan struct{})\n\tgo func() {\n\t\tdefer close(readerDone)\n\n\t\tfor {\n\t\t\tbuf := ht.bufferPool.Get(http2MaxFrameLen)\n\t\t\tn, err := req.Body.Read(*buf)\n\t\t\tif n > 0 {\n\t\t\t\t*buf = (*buf)[:n]\n\t\t\t\ts.buf.put(recvMsg{buffer: mem.NewBuffer(buf, ht.bufferPool)})\n\t\t\t} else {\n\t\t\t\tht.bufferPool.Put(buf)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\ts.buf.put(recvMsg{err: mapRecvMsgError(err)})\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}()\n\n\t// startStream is provided by the *grpc.Server's serveStreams.\n\t// It starts a goroutine serving s and exits immediately.\n\t// The goroutine that is started is the one that then calls\n\t// into ht, calling WriteHeader, Write, WriteStatus, Close, etc.\n\tstartStream(s)\n\n\tht.runStream()\n\tclose(requestOver)\n\n\t// Wait for reading goroutine to finish.\n\treq.Body.Close()\n\t<-readerDone\n}\n\nfunc (ht *serverHandlerTransport) runStream() {\n\tfor {\n\t\tselect {\n\t\tcase fn := <-ht.writes:\n\t\t\tfn()\n\t\tcase <-ht.closedCh:\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (ht *serverHandlerTransport) incrMsgRecv() {}\n\nfunc (ht *serverHandlerTransport) Drain(string) {\n\tpanic(\"Drain() is not implemented\")\n}\n\n// mapRecvMsgError returns the non-nil err into the appropriate\n// error value as expected by callers of *grpc.parser.recvMsg.\n// In particular, in can only be:\n//   - io.EOF\n//   - io.ErrUnexpectedEOF\n//   - of type transport.ConnectionError\n//   - an error from the status package\nfunc mapRecvMsgError(err error) error {\n\tif err == io.EOF || err == io.ErrUnexpectedEOF {\n\t\treturn err\n\t}\n\tif se, ok := err.(http2.StreamError); ok {\n\t\tif code, ok := http2ErrConvTab[se.Code]; ok {\n\t\t\treturn status.Error(code, se.Error())\n\t\t}\n\t}\n\tif strings.Contains(err.Error(), \"body closed by handler\") {\n\t\treturn status.Error(codes.Canceled, err.Error())\n\t}\n\treturn connectionErrorf(true, err, \"%s\", err.Error())\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/http2_client.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"net\"\n\t\"net/http\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"golang.org/x/net/http2\"\n\t\"golang.org/x/net/http2/hpack\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\ticredentials \"google.golang.org/grpc/internal/credentials\"\n\t\"google.golang.org/grpc/internal/grpclog\"\n\t\"google.golang.org/grpc/internal/grpcsync\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n\timetadata \"google.golang.org/grpc/internal/metadata\"\n\t\"google.golang.org/grpc/internal/proxyattributes\"\n\tistats \"google.golang.org/grpc/internal/stats\"\n\tistatus \"google.golang.org/grpc/internal/status\"\n\tisyscall \"google.golang.org/grpc/internal/syscall\"\n\t\"google.golang.org/grpc/internal/transport/networktype\"\n\t\"google.golang.org/grpc/keepalive\"\n\t\"google.golang.org/grpc/mem\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/peer\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// clientConnectionCounter counts the number of connections a client has\n// initiated (equal to the number of http2Clients created). Must be accessed\n// atomically.\nvar clientConnectionCounter uint64\n\nvar goAwayLoopyWriterTimeout = 5 * time.Second\n\nvar metadataFromOutgoingContextRaw = internal.FromOutgoingContextRaw.(func(context.Context) (metadata.MD, [][]string, bool))\n\n// http2Client implements the ClientTransport interface with HTTP2.\ntype http2Client struct {\n\tlastRead  int64 // Keep this field 64-bit aligned. Accessed atomically.\n\tctx       context.Context\n\tcancel    context.CancelFunc\n\tctxDone   <-chan struct{} // Cache the ctx.Done() chan.\n\tuserAgent string\n\t// address contains the resolver returned address for this transport.\n\t// If the `ServerName` field is set, it takes precedence over `CallHdr.Host`\n\t// passed to `NewStream`, when determining the :authority header.\n\taddress    resolver.Address\n\tmd         metadata.MD\n\tconn       net.Conn // underlying communication channel\n\tloopy      *loopyWriter\n\tremoteAddr net.Addr\n\tlocalAddr  net.Addr\n\tauthInfo   credentials.AuthInfo // auth info about the connection\n\n\treaderDone chan struct{} // sync point to enable testing.\n\twriterDone chan struct{} // sync point to enable testing.\n\t// goAway is closed to notify the upper layer (i.e., addrConn.transportMonitor)\n\t// that the server sent GoAway on this transport.\n\tgoAway        chan struct{}\n\tkeepaliveDone chan struct{} // Closed when the keepalive goroutine exits.\n\tframer        *framer\n\t// controlBuf delivers all the control related tasks (e.g., window\n\t// updates, reset streams, and various settings) to the controller.\n\t// Do not access controlBuf with mu held.\n\tcontrolBuf *controlBuffer\n\tfc         *trInFlow\n\t// The scheme used: https if TLS is on, http otherwise.\n\tscheme string\n\n\tisSecure bool\n\n\tperRPCCreds []credentials.PerRPCCredentials\n\n\tkp               keepalive.ClientParameters\n\tkeepaliveEnabled bool\n\n\tstatsHandler stats.Handler\n\n\tinitialWindowSize int32\n\n\t// configured by peer through SETTINGS_MAX_HEADER_LIST_SIZE\n\tmaxSendHeaderListSize *uint32\n\n\tbdpEst *bdpEstimator\n\n\tmaxConcurrentStreams  uint32\n\tstreamQuota           int64\n\tstreamsQuotaAvailable chan struct{}\n\twaitingStreams        uint32\n\tregisteredCompressors string\n\n\t// Do not access controlBuf with mu held.\n\tmu            sync.Mutex // guard the following variables\n\tnextID        uint32\n\tstate         transportState\n\tactiveStreams map[uint32]*ClientStream\n\t// prevGoAway ID records the Last-Stream-ID in the previous GOAway frame.\n\tprevGoAwayID uint32\n\t// goAwayReason records the http2.ErrCode and debug data received with the\n\t// GoAway frame.\n\tgoAwayReason GoAwayReason\n\t// goAwayDebugMessage contains a detailed human readable string about a\n\t// GoAway frame, useful for error messages.\n\tgoAwayDebugMessage string\n\t// goAwayCode records the http2.ErrCode received with the GoAway frame.\n\tgoAwayCode http2.ErrCode\n\t// A condition variable used to signal when the keepalive goroutine should\n\t// go dormant. The condition for dormancy is based on the number of active\n\t// streams and the `PermitWithoutStream` keepalive client parameter. And\n\t// since the number of active streams is guarded by the above mutex, we use\n\t// the same for this condition variable as well.\n\tkpDormancyCond *sync.Cond\n\t// A boolean to track whether the keepalive goroutine is dormant or not.\n\t// This is checked before attempting to signal the above condition\n\t// variable.\n\tkpDormant bool\n\n\tchannelz *channelz.Socket\n\n\tonClose OnCloseFunc\n\n\tbufferPool mem.BufferPool\n\n\tconnectionID uint64\n\tlogger       *grpclog.PrefixLogger\n}\n\nfunc dial(ctx context.Context, fn func(context.Context, string) (net.Conn, error), addr resolver.Address, grpcUA string) (net.Conn, error) {\n\taddress := addr.Addr\n\tnetworkType, ok := networktype.Get(addr)\n\tif fn != nil {\n\t\t// Special handling for unix scheme with custom dialer. Back in the day,\n\t\t// we did not have a unix resolver and therefore targets with a unix\n\t\t// scheme would end up using the passthrough resolver. So, user's used a\n\t\t// custom dialer in this case and expected the original dial target to\n\t\t// be passed to the custom dialer. Now, we have a unix resolver. But if\n\t\t// a custom dialer is specified, we want to retain the old behavior in\n\t\t// terms of the address being passed to the custom dialer.\n\t\tif networkType == \"unix\" && !strings.HasPrefix(address, \"\\x00\") {\n\t\t\t// Supported unix targets are either \"unix://absolute-path\" or\n\t\t\t// \"unix:relative-path\".\n\t\t\tif filepath.IsAbs(address) {\n\t\t\t\treturn fn(ctx, \"unix://\"+address)\n\t\t\t}\n\t\t\treturn fn(ctx, \"unix:\"+address)\n\t\t}\n\t\treturn fn(ctx, address)\n\t}\n\tif !ok {\n\t\tnetworkType, address = ParseDialTarget(address)\n\t}\n\tif opts, present := proxyattributes.Get(addr); present {\n\t\treturn proxyDial(ctx, addr, grpcUA, opts)\n\t}\n\treturn internal.NetDialerWithTCPKeepalive().DialContext(ctx, networkType, address)\n}\n\nfunc isTemporary(err error) bool {\n\tswitch err := err.(type) {\n\tcase interface {\n\t\tTemporary() bool\n\t}:\n\t\treturn err.Temporary()\n\tcase interface {\n\t\tTimeout() bool\n\t}:\n\t\t// Timeouts may be resolved upon retry, and are thus treated as\n\t\t// temporary.\n\t\treturn err.Timeout()\n\t}\n\treturn true\n}\n\n// NewHTTP2Client constructs a connected ClientTransport to addr based on HTTP2\n// and starts to receive messages on it. Non-nil error returns if construction\n// fails.\nfunc NewHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts ConnectOptions, onClose OnCloseFunc) (_ ClientTransport, err error) {\n\tscheme := \"http\"\n\tctx, cancel := context.WithCancel(ctx)\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tcancel()\n\t\t}\n\t}()\n\n\t// gRPC, resolver, balancer etc. can specify arbitrary data in the\n\t// Attributes field of resolver.Address, which is shoved into connectCtx\n\t// and passed to the dialer and credential handshaker. This makes it possible for\n\t// address specific arbitrary data to reach custom dialers and credential handshakers.\n\tconnectCtx = icredentials.NewClientHandshakeInfoContext(connectCtx, credentials.ClientHandshakeInfo{Attributes: addr.Attributes})\n\n\tconn, err := dial(connectCtx, opts.Dialer, addr, opts.UserAgent)\n\tif err != nil {\n\t\tif opts.FailOnNonTempDialError {\n\t\t\treturn nil, connectionErrorf(isTemporary(err), err, \"transport: error while dialing: %v\", err)\n\t\t}\n\t\treturn nil, connectionErrorf(true, err, \"transport: Error while dialing: %v\", err)\n\t}\n\n\t// Any further errors will close the underlying connection\n\tdefer func(conn net.Conn) {\n\t\tif err != nil {\n\t\t\tconn.Close()\n\t\t}\n\t}(conn)\n\n\t// The following defer and goroutine monitor the connectCtx for cancellation\n\t// and deadline.  On context expiration, the connection is hard closed and\n\t// this function will naturally fail as a result.  Otherwise, the defer\n\t// waits for the goroutine to exit to prevent the context from being\n\t// monitored (and to prevent the connection from ever being closed) after\n\t// returning from this function.\n\tctxMonitorDone := grpcsync.NewEvent()\n\tnewClientCtx, newClientDone := context.WithCancel(connectCtx)\n\tdefer func() {\n\t\tnewClientDone()         // Awaken the goroutine below if connectCtx hasn't expired.\n\t\t<-ctxMonitorDone.Done() // Wait for the goroutine below to exit.\n\t}()\n\tgo func(conn net.Conn) {\n\t\tdefer ctxMonitorDone.Fire() // Signal this goroutine has exited.\n\t\t<-newClientCtx.Done()       // Block until connectCtx expires or the defer above executes.\n\t\tif err := connectCtx.Err(); err != nil {\n\t\t\t// connectCtx expired before exiting the function.  Hard close the connection.\n\t\t\tif logger.V(logLevel) {\n\t\t\t\tlogger.Infof(\"Aborting due to connect deadline expiring: %v\", err)\n\t\t\t}\n\t\t\tconn.Close()\n\t\t}\n\t}(conn)\n\n\tkp := opts.KeepaliveParams\n\t// Validate keepalive parameters.\n\tif kp.Time == 0 {\n\t\tkp.Time = defaultClientKeepaliveTime\n\t}\n\tif kp.Timeout == 0 {\n\t\tkp.Timeout = defaultClientKeepaliveTimeout\n\t}\n\tkeepaliveEnabled := false\n\tif kp.Time != infinity {\n\t\tif err = isyscall.SetTCPUserTimeout(conn, kp.Timeout); err != nil {\n\t\t\treturn nil, connectionErrorf(false, err, \"transport: failed to set TCP_USER_TIMEOUT: %v\", err)\n\t\t}\n\t\tkeepaliveEnabled = true\n\t}\n\tvar (\n\t\tisSecure bool\n\t\tauthInfo credentials.AuthInfo\n\t)\n\ttransportCreds := opts.TransportCredentials\n\tperRPCCreds := opts.PerRPCCredentials\n\n\tif b := opts.CredsBundle; b != nil {\n\t\tif t := b.TransportCredentials(); t != nil {\n\t\t\ttransportCreds = t\n\t\t}\n\t\tif t := b.PerRPCCredentials(); t != nil {\n\t\t\tperRPCCreds = append(perRPCCreds, t)\n\t\t}\n\t}\n\tif transportCreds != nil {\n\t\tconn, authInfo, err = transportCreds.ClientHandshake(connectCtx, addr.ServerName, conn)\n\t\tif err != nil {\n\t\t\treturn nil, connectionErrorf(isTemporary(err), err, \"transport: authentication handshake failed: %v\", err)\n\t\t}\n\t\tfor _, cd := range perRPCCreds {\n\t\t\tif cd.RequireTransportSecurity() {\n\t\t\t\tif ci, ok := authInfo.(interface {\n\t\t\t\t\tGetCommonAuthInfo() credentials.CommonAuthInfo\n\t\t\t\t}); ok {\n\t\t\t\t\tsecLevel := ci.GetCommonAuthInfo().SecurityLevel\n\t\t\t\t\tif secLevel != credentials.InvalidSecurityLevel && secLevel < credentials.PrivacyAndIntegrity {\n\t\t\t\t\t\treturn nil, connectionErrorf(true, nil, \"transport: cannot send secure credentials on an insecure connection\")\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tisSecure = true\n\t\tif transportCreds.Info().SecurityProtocol == \"tls\" {\n\t\t\tscheme = \"https\"\n\t\t}\n\t}\n\ticwz := int32(initialWindowSize)\n\tif opts.InitialConnWindowSize >= defaultWindowSize {\n\t\ticwz = opts.InitialConnWindowSize\n\t}\n\twriteBufSize := opts.WriteBufferSize\n\treadBufSize := opts.ReadBufferSize\n\tmaxHeaderListSize := defaultClientMaxHeaderListSize\n\tif opts.MaxHeaderListSize != nil {\n\t\tmaxHeaderListSize = *opts.MaxHeaderListSize\n\t}\n\n\tt := &http2Client{\n\t\tctx:                   ctx,\n\t\tctxDone:               ctx.Done(), // Cache Done chan.\n\t\tcancel:                cancel,\n\t\tuserAgent:             opts.UserAgent,\n\t\tregisteredCompressors: grpcutil.RegisteredCompressors(),\n\t\taddress:               addr,\n\t\tconn:                  conn,\n\t\tremoteAddr:            conn.RemoteAddr(),\n\t\tlocalAddr:             conn.LocalAddr(),\n\t\tauthInfo:              authInfo,\n\t\treaderDone:            make(chan struct{}),\n\t\twriterDone:            make(chan struct{}),\n\t\tgoAway:                make(chan struct{}),\n\t\tkeepaliveDone:         make(chan struct{}),\n\t\tframer:                newFramer(conn, writeBufSize, readBufSize, opts.SharedWriteBuffer, maxHeaderListSize, opts.BufferPool),\n\t\tfc:                    &trInFlow{limit: uint32(icwz)},\n\t\tscheme:                scheme,\n\t\tactiveStreams:         make(map[uint32]*ClientStream),\n\t\tisSecure:              isSecure,\n\t\tperRPCCreds:           perRPCCreds,\n\t\tkp:                    kp,\n\t\tstatsHandler:          istats.NewCombinedHandler(opts.StatsHandlers...),\n\t\tinitialWindowSize:     initialWindowSize,\n\t\tnextID:                1,\n\t\tmaxConcurrentStreams:  defaultMaxStreamsClient,\n\t\tstreamQuota:           defaultMaxStreamsClient,\n\t\tstreamsQuotaAvailable: make(chan struct{}, 1),\n\t\tkeepaliveEnabled:      keepaliveEnabled,\n\t\tbufferPool:            opts.BufferPool,\n\t\tonClose:               onClose,\n\t}\n\tvar czSecurity credentials.ChannelzSecurityValue\n\tif au, ok := authInfo.(credentials.ChannelzSecurityInfo); ok {\n\t\tczSecurity = au.GetSecurityValue()\n\t}\n\tt.channelz = channelz.RegisterSocket(\n\t\t&channelz.Socket{\n\t\t\tSocketType:       channelz.SocketTypeNormal,\n\t\t\tParent:           opts.ChannelzParent,\n\t\t\tSocketMetrics:    channelz.SocketMetrics{},\n\t\t\tEphemeralMetrics: t.socketMetrics,\n\t\t\tLocalAddr:        t.localAddr,\n\t\t\tRemoteAddr:       t.remoteAddr,\n\t\t\tSocketOptions:    channelz.GetSocketOption(t.conn),\n\t\t\tSecurity:         czSecurity,\n\t\t})\n\tt.logger = prefixLoggerForClientTransport(t)\n\t// Add peer information to the http2client context.\n\tt.ctx = peer.NewContext(t.ctx, t.Peer())\n\n\tif md, ok := addr.Metadata.(*metadata.MD); ok {\n\t\tt.md = *md\n\t} else if md := imetadata.Get(addr); md != nil {\n\t\tt.md = md\n\t}\n\tt.controlBuf = newControlBuffer(t.ctxDone)\n\tif opts.InitialWindowSize >= defaultWindowSize {\n\t\tt.initialWindowSize = opts.InitialWindowSize\n\t}\n\tif !opts.StaticWindowSize {\n\t\tt.bdpEst = &bdpEstimator{\n\t\t\tbdp:               initialWindowSize,\n\t\t\tupdateFlowControl: t.updateFlowControl,\n\t\t}\n\t}\n\tif t.statsHandler != nil {\n\t\tt.ctx = t.statsHandler.TagConn(t.ctx, &stats.ConnTagInfo{\n\t\t\tRemoteAddr: t.remoteAddr,\n\t\t\tLocalAddr:  t.localAddr,\n\t\t})\n\t\tt.statsHandler.HandleConn(t.ctx, &stats.ConnBegin{\n\t\t\tClient: true,\n\t\t})\n\t}\n\tif t.keepaliveEnabled {\n\t\tt.kpDormancyCond = sync.NewCond(&t.mu)\n\t\tgo t.keepalive()\n\t}\n\n\t// Start the reader goroutine for incoming messages. Each transport has a\n\t// dedicated goroutine which reads HTTP2 frames from the network. Then it\n\t// dispatches the frame to the corresponding stream entity.  When the\n\t// server preface is received, readerErrCh is closed.  If an error occurs\n\t// first, an error is pushed to the channel.  This must be checked before\n\t// returning from this function.\n\treaderErrCh := make(chan error, 1)\n\tgo t.reader(readerErrCh)\n\tdefer func() {\n\t\tif err != nil {\n\t\t\t// writerDone should be closed since the loopy goroutine\n\t\t\t// wouldn't have started in the case this function returns an error.\n\t\t\tclose(t.writerDone)\n\t\t\tt.Close(err)\n\t\t}\n\t}()\n\n\t// Send connection preface to server.\n\tn, err := t.conn.Write(clientPreface)\n\tif err != nil {\n\t\terr = connectionErrorf(true, err, \"transport: failed to write client preface: %v\", err)\n\t\treturn nil, err\n\t}\n\tif n != len(clientPreface) {\n\t\terr = connectionErrorf(true, nil, \"transport: preface mismatch, wrote %d bytes; want %d\", n, len(clientPreface))\n\t\treturn nil, err\n\t}\n\tvar ss []http2.Setting\n\n\tif t.initialWindowSize != defaultWindowSize {\n\t\tss = append(ss, http2.Setting{\n\t\t\tID:  http2.SettingInitialWindowSize,\n\t\t\tVal: uint32(t.initialWindowSize),\n\t\t})\n\t}\n\tif opts.MaxHeaderListSize != nil {\n\t\tss = append(ss, http2.Setting{\n\t\t\tID:  http2.SettingMaxHeaderListSize,\n\t\t\tVal: *opts.MaxHeaderListSize,\n\t\t})\n\t}\n\terr = t.framer.fr.WriteSettings(ss...)\n\tif err != nil {\n\t\terr = connectionErrorf(true, err, \"transport: failed to write initial settings frame: %v\", err)\n\t\treturn nil, err\n\t}\n\t// Adjust the connection flow control window if needed.\n\tif delta := uint32(icwz - defaultWindowSize); delta > 0 {\n\t\tif err := t.framer.fr.WriteWindowUpdate(0, delta); err != nil {\n\t\t\terr = connectionErrorf(true, err, \"transport: failed to write window update: %v\", err)\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tt.connectionID = atomic.AddUint64(&clientConnectionCounter, 1)\n\n\tif err := t.framer.writer.Flush(); err != nil {\n\t\treturn nil, err\n\t}\n\t// Block until the server preface is received successfully or an error occurs.\n\tif err = <-readerErrCh; err != nil {\n\t\treturn nil, err\n\t}\n\tgo func() {\n\t\tt.loopy = newLoopyWriter(clientSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger, t.outgoingGoAwayHandler, t.bufferPool)\n\t\tif err := t.loopy.run(); !isIOError(err) {\n\t\t\t// Immediately close the connection, as the loopy writer returns\n\t\t\t// when there are no more active streams and we were draining (the\n\t\t\t// server sent a GOAWAY).  For I/O errors, the reader will hit it\n\t\t\t// after draining any remaining incoming data.\n\t\t\tt.conn.Close()\n\t\t}\n\t\tclose(t.writerDone)\n\t}()\n\treturn t, nil\n}\n\nfunc (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr, handler stats.Handler) *ClientStream {\n\t// TODO(zhaoq): Handle uint32 overflow of Stream.id.\n\ts := &ClientStream{\n\t\tStream: Stream{\n\t\t\tmethod:         callHdr.Method,\n\t\t\tsendCompress:   callHdr.SendCompress,\n\t\t\tcontentSubtype: callHdr.ContentSubtype,\n\t\t},\n\t\tct:           t,\n\t\tdone:         make(chan struct{}),\n\t\theaderChan:   make(chan struct{}),\n\t\tdoneFunc:     callHdr.DoneFunc,\n\t\tstatsHandler: handler,\n\t}\n\ts.Stream.buf.init()\n\ts.Stream.wq.init(defaultWriteQuota, s.done)\n\ts.readRequester = s\n\t// The client side stream context should have exactly the same life cycle with the user provided context.\n\t// That means, s.ctx should be read-only. And s.ctx is done iff ctx is done.\n\t// So we use the original context here instead of creating a copy.\n\ts.ctx = ctx\n\ts.trReader = transportReader{\n\t\treader: recvBufferReader{\n\t\t\tctx:          s.ctx,\n\t\t\tctxDone:      s.ctx.Done(),\n\t\t\trecv:         &s.buf,\n\t\t\tclientStream: s,\n\t\t},\n\t\twindowHandler: s,\n\t}\n\treturn s\n}\n\nfunc (t *http2Client) Peer() *peer.Peer {\n\treturn &peer.Peer{\n\t\tAddr:      t.remoteAddr,\n\t\tAuthInfo:  t.authInfo, // Can be nil\n\t\tLocalAddr: t.localAddr,\n\t}\n}\n\n// OutgoingGoAwayHandler writes a GOAWAY to the connection.  Always returns (false, err) as we want the GoAway\n// to be the last frame loopy writes to the transport.\nfunc (t *http2Client) outgoingGoAwayHandler(g *goAway) (bool, error) {\n\tt.mu.Lock()\n\tmaxStreamID := t.nextID - 2\n\tt.mu.Unlock()\n\tif err := t.framer.fr.WriteGoAway(maxStreamID, http2.ErrCodeNo, g.debugData); err != nil {\n\t\treturn false, err\n\t}\n\treturn false, g.closeConn\n}\n\nfunc (t *http2Client) createHeaderFields(ctx context.Context, callHdr *CallHdr) ([]hpack.HeaderField, error) {\n\taud := t.createAudience(callHdr)\n\tri := credentials.RequestInfo{\n\t\tMethod:   callHdr.Method,\n\t\tAuthInfo: t.authInfo,\n\t}\n\tctxWithRequestInfo := credentials.NewContextWithRequestInfo(ctx, ri)\n\tauthData, err := t.getTrAuthData(ctxWithRequestInfo, aud)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcallAuthData, err := t.getCallAuthData(ctxWithRequestInfo, aud, callHdr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields\n\t// first and create a slice of that exact size.\n\t// Make the slice of certain predictable size to reduce allocations made by append.\n\thfLen := 7 // :method, :scheme, :path, :authority, content-type, user-agent, te\n\thfLen += len(authData) + len(callAuthData)\n\tregisteredCompressors := t.registeredCompressors\n\tif callHdr.AcceptedCompressors != nil {\n\t\tregisteredCompressors = *callHdr.AcceptedCompressors\n\t}\n\tif callHdr.PreviousAttempts > 0 {\n\t\thfLen++\n\t}\n\tif callHdr.SendCompress != \"\" {\n\t\thfLen++\n\t}\n\tif registeredCompressors != \"\" {\n\t\thfLen++\n\t}\n\tif _, ok := ctx.Deadline(); ok {\n\t\thfLen++\n\t}\n\theaderFields := make([]hpack.HeaderField, 0, hfLen)\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \":method\", Value: \"POST\"})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \":scheme\", Value: t.scheme})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \":path\", Value: callHdr.Method})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \":authority\", Value: callHdr.Host})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \"content-type\", Value: grpcutil.ContentType(callHdr.ContentSubtype)})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \"user-agent\", Value: t.userAgent})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \"te\", Value: \"trailers\"})\n\tif callHdr.PreviousAttempts > 0 {\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-previous-rpc-attempts\", Value: strconv.Itoa(callHdr.PreviousAttempts)})\n\t}\n\n\tif callHdr.SendCompress != \"\" {\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-encoding\", Value: callHdr.SendCompress})\n\t\t// Include the outgoing compressor name when compressor is not registered\n\t\t// via encoding.RegisterCompressor. This is possible when client uses\n\t\t// WithCompressor dial option.\n\t\tif !grpcutil.IsCompressorNameRegistered(callHdr.SendCompress) {\n\t\t\tif registeredCompressors != \"\" {\n\t\t\t\tregisteredCompressors += \",\"\n\t\t\t}\n\t\t\tregisteredCompressors += callHdr.SendCompress\n\t\t}\n\t}\n\n\tif registeredCompressors != \"\" {\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-accept-encoding\", Value: registeredCompressors})\n\t}\n\tif dl, ok := ctx.Deadline(); ok {\n\t\t// Send out timeout regardless its value. The server can detect timeout context by itself.\n\t\t// TODO(mmukhi): Perhaps this field should be updated when actually writing out to the wire.\n\t\ttimeout := time.Until(dl)\n\t\tif timeout <= 0 {\n\t\t\treturn nil, status.Error(codes.DeadlineExceeded, context.DeadlineExceeded.Error())\n\t\t}\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-timeout\", Value: grpcutil.EncodeDuration(timeout)})\n\t}\n\tfor k, v := range authData {\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)})\n\t}\n\tfor k, v := range callAuthData {\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)})\n\t}\n\n\tif md, added, ok := metadataFromOutgoingContextRaw(ctx); ok {\n\t\tvar k string\n\t\tfor k, vv := range md {\n\t\t\t// HTTP doesn't allow you to set pseudoheaders after non pseudoheaders were set.\n\t\t\tif isReservedHeader(k) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor _, v := range vv {\n\t\t\t\theaderFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)})\n\t\t\t}\n\t\t}\n\t\tfor _, vv := range added {\n\t\t\tfor i, v := range vv {\n\t\t\t\tif i%2 == 0 {\n\t\t\t\t\tk = strings.ToLower(v)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// HTTP doesn't allow you to set pseudoheaders after non pseudoheaders were set.\n\t\t\t\tif isReservedHeader(k) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\theaderFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)})\n\t\t\t}\n\t\t}\n\t}\n\tfor k, vv := range t.md {\n\t\tif isReservedHeader(k) {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, v := range vv {\n\t\t\theaderFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)})\n\t\t}\n\t}\n\treturn headerFields, nil\n}\n\nfunc (t *http2Client) createAudience(callHdr *CallHdr) string {\n\t// Create an audience string only if needed.\n\tif len(t.perRPCCreds) == 0 && callHdr.Creds == nil {\n\t\treturn \"\"\n\t}\n\t// Construct URI required to get auth request metadata.\n\t// Omit port if it is the default one.\n\thost := strings.TrimSuffix(callHdr.Host, \":443\")\n\tpos := strings.LastIndex(callHdr.Method, \"/\")\n\tif pos == -1 {\n\t\tpos = len(callHdr.Method)\n\t}\n\treturn \"https://\" + host + callHdr.Method[:pos]\n}\n\nfunc (t *http2Client) getTrAuthData(ctx context.Context, audience string) (map[string]string, error) {\n\tif len(t.perRPCCreds) == 0 {\n\t\treturn nil, nil\n\t}\n\tauthData := map[string]string{}\n\tfor _, c := range t.perRPCCreds {\n\t\tdata, err := c.GetRequestMetadata(ctx, audience)\n\t\tif err != nil {\n\t\t\tif st, ok := status.FromError(err); ok {\n\t\t\t\t// Restrict the code to the list allowed by gRFC A54.\n\t\t\t\tif istatus.IsRestrictedControlPlaneCode(st) {\n\t\t\t\t\terr = status.Errorf(codes.Internal, \"transport: received per-RPC creds error with illegal status: %v\", err)\n\t\t\t\t}\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\treturn nil, status.Errorf(codes.Unauthenticated, \"transport: per-RPC creds failed due to error: %v\", err)\n\t\t}\n\t\tfor k, v := range data {\n\t\t\t// Capital header names are illegal in HTTP/2.\n\t\t\tk = strings.ToLower(k)\n\t\t\tauthData[k] = v\n\t\t}\n\t}\n\treturn authData, nil\n}\n\nfunc (t *http2Client) getCallAuthData(ctx context.Context, audience string, callHdr *CallHdr) (map[string]string, error) {\n\tvar callAuthData map[string]string\n\t// Check if credentials.PerRPCCredentials were provided via call options.\n\t// Note: if these credentials are provided both via dial options and call\n\t// options, then both sets of credentials will be applied.\n\tif callCreds := callHdr.Creds; callCreds != nil {\n\t\tif callCreds.RequireTransportSecurity() {\n\t\t\tri, _ := credentials.RequestInfoFromContext(ctx)\n\t\t\tif !t.isSecure || credentials.CheckSecurityLevel(ri.AuthInfo, credentials.PrivacyAndIntegrity) != nil {\n\t\t\t\treturn nil, status.Error(codes.Unauthenticated, \"transport: cannot send secure credentials on an insecure connection\")\n\t\t\t}\n\t\t}\n\t\tdata, err := callCreds.GetRequestMetadata(ctx, audience)\n\t\tif err != nil {\n\t\t\tif st, ok := status.FromError(err); ok {\n\t\t\t\t// Restrict the code to the list allowed by gRFC A54.\n\t\t\t\tif istatus.IsRestrictedControlPlaneCode(st) {\n\t\t\t\t\terr = status.Errorf(codes.Internal, \"transport: received per-RPC creds error with illegal status: %v\", err)\n\t\t\t\t}\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn nil, status.Errorf(codes.Internal, \"transport: per-RPC creds failed due to error: %v\", err)\n\t\t}\n\t\tcallAuthData = make(map[string]string, len(data))\n\t\tfor k, v := range data {\n\t\t\t// Capital header names are illegal in HTTP/2\n\t\t\tk = strings.ToLower(k)\n\t\t\tcallAuthData[k] = v\n\t\t}\n\t}\n\treturn callAuthData, nil\n}\n\n// NewStreamError wraps an error and reports additional information.  Typically\n// NewStream errors result in transparent retry, as they mean nothing went onto\n// the wire.  However, there are two notable exceptions:\n//\n//  1. If the stream headers violate the max header list size allowed by the\n//     server.  It's possible this could succeed on another transport, even if\n//     it's unlikely, but do not transparently retry.\n//  2. If the credentials errored when requesting their headers.  In this case,\n//     it's possible a retry can fix the problem, but indefinitely transparently\n//     retrying is not appropriate as it is likely the credentials, if they can\n//     eventually succeed, would need I/O to do so.\ntype NewStreamError struct {\n\tErr error\n\n\tAllowTransparentRetry bool\n}\n\nfunc (e NewStreamError) Error() string {\n\treturn e.Err.Error()\n}\n\n// NewStream creates a stream and registers it into the transport as \"active\"\n// streams.  All non-nil errors returned will be *NewStreamError.\nfunc (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr, handler stats.Handler) (*ClientStream, error) {\n\tctx = peer.NewContext(ctx, t.Peer())\n\n\t// ServerName field of the resolver returned address takes precedence over\n\t// Host field of CallHdr to determine the :authority header. This is because,\n\t// the ServerName field takes precedence for server authentication during\n\t// TLS handshake, and the :authority header should match the value used\n\t// for server authentication.\n\tif t.address.ServerName != \"\" {\n\t\tnewCallHdr := *callHdr\n\t\tnewCallHdr.Host = t.address.ServerName\n\t\tcallHdr = &newCallHdr\n\t}\n\n\t// The authority specified via the `CallAuthority` CallOption takes the\n\t// highest precedence when determining the `:authority` header. It overrides\n\t// any value present in the Host field of CallHdr. Before applying this\n\t// override, the authority string is validated. If the credentials do not\n\t// implement the AuthorityValidator interface, or if validation fails, the\n\t// RPC is failed with a status code of `UNAVAILABLE`.\n\tif callHdr.Authority != \"\" {\n\t\tauth, ok := t.authInfo.(credentials.AuthorityValidator)\n\t\tif !ok {\n\t\t\treturn nil, &NewStreamError{Err: status.Errorf(codes.Unavailable, \"credentials type %q does not implement the AuthorityValidator interface, but authority override specified with CallAuthority call option\", t.authInfo.AuthType())}\n\t\t}\n\t\tif err := auth.ValidateAuthority(callHdr.Authority); err != nil {\n\t\t\treturn nil, &NewStreamError{Err: status.Errorf(codes.Unavailable, \"failed to validate authority %q : %v\", callHdr.Authority, err)}\n\t\t}\n\t\tnewCallHdr := *callHdr\n\t\tnewCallHdr.Host = callHdr.Authority\n\t\tcallHdr = &newCallHdr\n\t}\n\n\theaderFields, err := t.createHeaderFields(ctx, callHdr)\n\tif err != nil {\n\t\treturn nil, &NewStreamError{Err: err, AllowTransparentRetry: false}\n\t}\n\ts := t.newStream(ctx, callHdr, handler)\n\tcleanup := func(err error) {\n\t\tif s.swapState(streamDone) == streamDone {\n\t\t\t// If it was already done, return.\n\t\t\treturn\n\t\t}\n\t\t// The stream was unprocessed by the server.\n\t\ts.unprocessed.Store(true)\n\t\ts.write(recvMsg{err: err})\n\t\tclose(s.done)\n\t\t// If headerChan isn't closed, then close it.\n\t\tif atomic.CompareAndSwapUint32(&s.headerChanClosed, 0, 1) {\n\t\t\tclose(s.headerChan)\n\t\t}\n\t}\n\thdr := &headerFrame{\n\t\thf:        headerFields,\n\t\tendStream: false,\n\t\tinitStream: func(uint32) error {\n\t\t\tt.mu.Lock()\n\t\t\t// TODO: handle transport closure in loopy instead and remove this\n\t\t\t// initStream is never called when transport is draining.\n\t\t\tif t.state == closing {\n\t\t\t\tt.mu.Unlock()\n\t\t\t\tcleanup(ErrConnClosing)\n\t\t\t\treturn ErrConnClosing\n\t\t\t}\n\t\t\tif channelz.IsOn() {\n\t\t\t\tt.channelz.SocketMetrics.StreamsStarted.Add(1)\n\t\t\t\tt.channelz.SocketMetrics.LastLocalStreamCreatedTimestamp.Store(time.Now().UnixNano())\n\t\t\t}\n\t\t\t// If the keepalive goroutine has gone dormant, wake it up.\n\t\t\tif t.kpDormant {\n\t\t\t\tt.kpDormancyCond.Signal()\n\t\t\t}\n\t\t\tt.mu.Unlock()\n\t\t\treturn nil\n\t\t},\n\t\tonOrphaned: cleanup,\n\t\twq:         &s.wq,\n\t}\n\tfirstTry := true\n\tvar ch chan struct{}\n\ttransportDrainRequired := false\n\tcheckForStreamQuota := func() bool {\n\t\tif t.streamQuota <= 0 { // Can go negative if server decreases it.\n\t\t\tif firstTry {\n\t\t\t\tt.waitingStreams++\n\t\t\t}\n\t\t\tch = t.streamsQuotaAvailable\n\t\t\treturn false\n\t\t}\n\t\tif !firstTry {\n\t\t\tt.waitingStreams--\n\t\t}\n\t\tt.streamQuota--\n\n\t\tt.mu.Lock()\n\t\tif t.state == draining || t.activeStreams == nil { // Can be niled from Close().\n\t\t\tt.mu.Unlock()\n\t\t\treturn false // Don't create a stream if the transport is already closed.\n\t\t}\n\n\t\thdr.streamID = t.nextID\n\t\tt.nextID += 2\n\t\t// Drain client transport if nextID > MaxStreamID which signals gRPC that\n\t\t// the connection is closed and a new one must be created for subsequent RPCs.\n\t\ttransportDrainRequired = t.nextID > MaxStreamID\n\n\t\ts.id = hdr.streamID\n\t\ts.fc = inFlow{limit: uint32(t.initialWindowSize)}\n\t\tt.activeStreams[s.id] = s\n\t\tt.mu.Unlock()\n\n\t\tif t.streamQuota > 0 && t.waitingStreams > 0 {\n\t\t\tselect {\n\t\t\tcase t.streamsQuotaAvailable <- struct{}{}:\n\t\t\tdefault:\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\tvar hdrListSizeErr error\n\tcheckForHeaderListSize := func() bool {\n\t\tif t.maxSendHeaderListSize == nil {\n\t\t\treturn true\n\t\t}\n\t\tvar sz int64\n\t\tfor _, f := range hdr.hf {\n\t\t\tsz += int64(f.Size())\n\t\t\tif sz > int64(*t.maxSendHeaderListSize) {\n\t\t\t\thdrListSizeErr = status.Errorf(codes.Internal, \"header list size to send violates the maximum size (%d bytes) set by server\", *t.maxSendHeaderListSize)\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif sz > int64(upcomingDefaultHeaderListSize) {\n\t\t\tt.logger.Warningf(\"Header list size to send (%d bytes) is larger than the upcoming default limit (%d bytes). In a future release, this will be restricted to %d bytes.\", sz, upcomingDefaultHeaderListSize, upcomingDefaultHeaderListSize)\n\t\t}\n\t\treturn true\n\t}\n\tfor {\n\t\tsuccess, err := t.controlBuf.executeAndPut(func() bool {\n\t\t\treturn checkForHeaderListSize() && checkForStreamQuota()\n\t\t}, hdr)\n\t\tif err != nil {\n\t\t\t// Connection closed.\n\t\t\treturn nil, &NewStreamError{Err: err, AllowTransparentRetry: true}\n\t\t}\n\t\tif success {\n\t\t\tbreak\n\t\t}\n\t\tif hdrListSizeErr != nil {\n\t\t\treturn nil, &NewStreamError{Err: hdrListSizeErr}\n\t\t}\n\t\tfirstTry = false\n\t\tselect {\n\t\tcase <-ch:\n\t\tcase <-ctx.Done():\n\t\t\treturn nil, &NewStreamError{Err: ContextErr(ctx.Err())}\n\t\tcase <-t.goAway:\n\t\t\treturn nil, &NewStreamError{Err: errStreamDrain, AllowTransparentRetry: true}\n\t\tcase <-t.ctx.Done():\n\t\t\treturn nil, &NewStreamError{Err: ErrConnClosing, AllowTransparentRetry: true}\n\t\t}\n\t}\n\tif s.statsHandler != nil {\n\t\theader, ok := metadata.FromOutgoingContext(ctx)\n\t\tif ok {\n\t\t\theader.Set(\"user-agent\", t.userAgent)\n\t\t} else {\n\t\t\theader = metadata.Pairs(\"user-agent\", t.userAgent)\n\t\t}\n\t\t// Note: The header fields are compressed with hpack after this call returns.\n\t\t// No WireLength field is set here.\n\t\ts.statsHandler.HandleRPC(s.ctx, &stats.OutHeader{\n\t\t\tClient:      true,\n\t\t\tFullMethod:  callHdr.Method,\n\t\t\tRemoteAddr:  t.remoteAddr,\n\t\t\tLocalAddr:   t.localAddr,\n\t\t\tCompression: callHdr.SendCompress,\n\t\t\tHeader:      header,\n\t\t})\n\t}\n\tif transportDrainRequired {\n\t\tif t.logger.V(logLevel) {\n\t\t\tt.logger.Infof(\"Draining transport: t.nextID > MaxStreamID\")\n\t\t}\n\t\tt.GracefulClose()\n\t}\n\treturn s, nil\n}\n\nfunc (t *http2Client) closeStream(s *ClientStream, err error, rst bool, rstCode http2.ErrCode, st *status.Status, mdata map[string][]string, eosReceived bool) {\n\t// Set stream status to done.\n\tif s.swapState(streamDone) == streamDone {\n\t\t// If it was already done, return.  If multiple closeStream calls\n\t\t// happen simultaneously, wait for the first to finish.\n\t\t<-s.done\n\t\treturn\n\t}\n\t// status and trailers can be updated here without any synchronization because the stream goroutine will\n\t// only read it after it sees an io.EOF error from read or write and we'll write those errors\n\t// only after updating this.\n\ts.status = st\n\tif len(mdata) > 0 {\n\t\ts.trailer = mdata\n\t}\n\tif err != nil {\n\t\t// This will unblock reads eventually.\n\t\ts.write(recvMsg{err: err})\n\t}\n\t// If headerChan isn't closed, then close it.\n\tif atomic.CompareAndSwapUint32(&s.headerChanClosed, 0, 1) {\n\t\ts.noHeaders = true\n\t\tclose(s.headerChan)\n\t}\n\tcleanup := &cleanupStream{\n\t\tstreamID: s.id,\n\t\tonWrite: func() {\n\t\t\tt.mu.Lock()\n\t\t\tif t.activeStreams != nil {\n\t\t\t\tdelete(t.activeStreams, s.id)\n\t\t\t}\n\t\t\tt.mu.Unlock()\n\t\t\tif channelz.IsOn() {\n\t\t\t\tif eosReceived {\n\t\t\t\t\tt.channelz.SocketMetrics.StreamsSucceeded.Add(1)\n\t\t\t\t} else {\n\t\t\t\t\tt.channelz.SocketMetrics.StreamsFailed.Add(1)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\trst:     rst,\n\t\trstCode: rstCode,\n\t}\n\taddBackStreamQuota := func() bool {\n\t\tt.streamQuota++\n\t\tif t.streamQuota > 0 && t.waitingStreams > 0 {\n\t\t\tselect {\n\t\t\tcase t.streamsQuotaAvailable <- struct{}{}:\n\t\t\tdefault:\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\tt.controlBuf.executeAndPut(addBackStreamQuota, cleanup)\n\t// This will unblock write.\n\tclose(s.done)\n\tif s.doneFunc != nil {\n\t\ts.doneFunc()\n\t}\n}\n\n// Close kicks off the shutdown process of the transport. This should be called\n// only once on a transport. Once it is called, the transport should not be\n// accessed anymore.\nfunc (t *http2Client) Close(err error) {\n\tt.conn.SetWriteDeadline(time.Now().Add(time.Second * 10))\n\t// For background on the deadline value chosen here, see\n\t// https://github.com/grpc/grpc-go/issues/8425#issuecomment-3057938248 .\n\tt.conn.SetReadDeadline(time.Now().Add(time.Second))\n\tt.mu.Lock()\n\t// Make sure we only close once.\n\tif t.state == closing {\n\t\tt.mu.Unlock()\n\t\treturn\n\t}\n\tif t.logger.V(logLevel) {\n\t\tt.logger.Infof(\"Closing: %v\", err)\n\t}\n\t// Call t.onClose ASAP to prevent the client from attempting to create new\n\t// streams.\n\tif t.state != draining {\n\t\tt.onClose(GoAwayInfo{Reason: GoAwayInvalid, GoAwayCode: http2.ErrCodeNo, Err: err})\n\t}\n\tt.state = closing\n\tstreams := t.activeStreams\n\tt.activeStreams = nil\n\tif t.kpDormant {\n\t\t// If the keepalive goroutine is blocked on this condition variable, we\n\t\t// should unblock it so that the goroutine eventually exits.\n\t\tt.kpDormancyCond.Signal()\n\t}\n\t// Append info about previous goaways if there were any, since this may be important\n\t// for understanding the root cause for this connection to be closed.\n\tgoAwayDebugMessage := t.goAwayDebugMessage\n\tt.mu.Unlock()\n\n\t// Per HTTP/2 spec, a GOAWAY frame must be sent before closing the\n\t// connection. See https://httpwg.org/specs/rfc7540.html#GOAWAY. It\n\t// also waits for loopyWriter to be closed with a timer to avoid the\n\t// long blocking in case the connection is blackholed, i.e. TCP is\n\t// just stuck.\n\tt.controlBuf.put(&goAway{code: http2.ErrCodeNo, debugData: []byte(\"client transport shutdown\"), closeConn: err})\n\ttimer := time.NewTimer(goAwayLoopyWriterTimeout)\n\tdefer timer.Stop()\n\tselect {\n\tcase <-t.writerDone: // success\n\tcase <-timer.C:\n\t\tt.logger.Infof(\"Failed to write a GOAWAY frame as part of connection close after %s. Giving up and closing the transport.\", goAwayLoopyWriterTimeout)\n\t}\n\tt.cancel()\n\tt.conn.Close()\n\t// Waits for the reader and keepalive goroutines to exit before returning to\n\t// ensure all resources are cleaned up before Close can return.\n\t<-t.readerDone\n\tif t.keepaliveEnabled {\n\t\t<-t.keepaliveDone\n\t}\n\tchannelz.RemoveEntry(t.channelz.ID)\n\tvar st *status.Status\n\tif len(goAwayDebugMessage) > 0 {\n\t\tst = status.Newf(codes.Unavailable, \"closing transport due to: %v, received prior goaway: %v\", err, goAwayDebugMessage)\n\t\terr = st.Err()\n\t} else {\n\t\tst = status.New(codes.Unavailable, err.Error())\n\t}\n\n\t// Notify all active streams.\n\tfor _, s := range streams {\n\t\tt.closeStream(s, err, false, http2.ErrCodeNo, st, nil, false)\n\t}\n\tif t.statsHandler != nil {\n\t\tt.statsHandler.HandleConn(t.ctx, &stats.ConnEnd{\n\t\t\tClient: true,\n\t\t})\n\t}\n}\n\n// GracefulClose sets the state to draining, which prevents new streams from\n// being created and causes the transport to be closed when the last active\n// stream is closed.  If there are no active streams, the transport is closed\n// immediately.  This does nothing if the transport is already draining or\n// closing.\nfunc (t *http2Client) GracefulClose() {\n\tt.mu.Lock()\n\t// Make sure we move to draining only from active.\n\tif t.state == draining || t.state == closing {\n\t\tt.mu.Unlock()\n\t\treturn\n\t}\n\tif t.logger.V(logLevel) {\n\t\tt.logger.Infof(\"GracefulClose called\")\n\t}\n\tt.onClose(GoAwayInfo{Reason: GoAwayInvalid, GoAwayCode: http2.ErrCodeNo})\n\tt.state = draining\n\tactive := len(t.activeStreams)\n\tt.mu.Unlock()\n\tif active == 0 {\n\t\tt.Close(connectionErrorf(true, nil, \"no active streams left to process while draining\"))\n\t\treturn\n\t}\n\tt.controlBuf.put(&incomingGoAway{})\n}\n\n// Write formats the data into HTTP2 data frame(s) and sends it out. The caller\n// should proceed only if Write returns nil.\nfunc (t *http2Client) write(s *ClientStream, hdr []byte, data mem.BufferSlice, opts *WriteOptions) error {\n\tif opts.Last {\n\t\t// If it's the last message, update stream state.\n\t\tif !s.compareAndSwapState(streamActive, streamWriteDone) {\n\t\t\treturn errStreamDone\n\t\t}\n\t} else if s.getState() != streamActive {\n\t\treturn errStreamDone\n\t}\n\tdf := &dataFrame{\n\t\tstreamID:  s.id,\n\t\tendStream: opts.Last,\n\t\th:         hdr,\n\t\tdata:      data,\n\t}\n\tdataLen := data.Len()\n\tif hdr != nil || dataLen != 0 { // If it's not an empty data frame, check quota.\n\t\tif err := s.wq.get(int32(len(hdr) + dataLen)); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tdata.Ref()\n\tif err := t.controlBuf.put(df); err != nil {\n\t\tdata.Free()\n\t\treturn err\n\t}\n\tt.incrMsgSent()\n\treturn nil\n}\n\nfunc (t *http2Client) getStream(f http2.Frame) *ClientStream {\n\tt.mu.Lock()\n\ts := t.activeStreams[f.Header().StreamID]\n\tt.mu.Unlock()\n\treturn s\n}\n\n// adjustWindow sends out extra window update over the initial window size\n// of stream if the application is requesting data larger in size than\n// the window.\nfunc (t *http2Client) adjustWindow(s *ClientStream, n uint32) {\n\tif w := s.fc.maybeAdjust(n); w > 0 {\n\t\tt.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w})\n\t}\n}\n\n// updateWindow adjusts the inbound quota for the stream.\n// Window updates will be sent out when the cumulative quota\n// exceeds the corresponding threshold.\nfunc (t *http2Client) updateWindow(s *ClientStream, n uint32) {\n\tif w := s.fc.onRead(n); w > 0 {\n\t\tt.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w})\n\t}\n}\n\n// updateFlowControl updates the incoming flow control windows\n// for the transport and the stream based on the current bdp\n// estimation.\nfunc (t *http2Client) updateFlowControl(n uint32) {\n\tupdateIWS := func() bool {\n\t\tt.initialWindowSize = int32(n)\n\t\tt.mu.Lock()\n\t\tfor _, s := range t.activeStreams {\n\t\t\ts.fc.newLimit(n)\n\t\t}\n\t\tt.mu.Unlock()\n\t\treturn true\n\t}\n\tt.controlBuf.executeAndPut(updateIWS, &outgoingWindowUpdate{streamID: 0, increment: t.fc.newLimit(n)})\n\tt.controlBuf.put(&outgoingSettings{\n\t\tss: []http2.Setting{\n\t\t\t{\n\t\t\t\tID:  http2.SettingInitialWindowSize,\n\t\t\t\tVal: n,\n\t\t\t},\n\t\t},\n\t})\n}\n\nfunc (t *http2Client) handleData(f *parsedDataFrame) {\n\tsize := f.Header().Length\n\tvar sendBDPPing bool\n\tif t.bdpEst != nil {\n\t\tsendBDPPing = t.bdpEst.add(size)\n\t}\n\t// Decouple connection's flow control from application's read.\n\t// An update on connection's flow control should not depend on\n\t// whether user application has read the data or not. Such a\n\t// restriction is already imposed on the stream's flow control,\n\t// and therefore the sender will be blocked anyways.\n\t// Decoupling the connection flow control will prevent other\n\t// active(fast) streams from starving in presence of slow or\n\t// inactive streams.\n\t//\n\tif w := t.fc.onData(size); w > 0 {\n\t\tt.controlBuf.put(&outgoingWindowUpdate{\n\t\t\tstreamID:  0,\n\t\t\tincrement: w,\n\t\t})\n\t}\n\tif sendBDPPing {\n\t\t// Avoid excessive ping detection (e.g. in an L7 proxy)\n\t\t// by sending a window update prior to the BDP ping.\n\n\t\tif w := t.fc.reset(); w > 0 {\n\t\t\tt.controlBuf.put(&outgoingWindowUpdate{\n\t\t\t\tstreamID:  0,\n\t\t\t\tincrement: w,\n\t\t\t})\n\t\t}\n\n\t\tt.controlBuf.put(bdpPing)\n\t}\n\t// Select the right stream to dispatch.\n\ts := t.getStream(f)\n\tif s == nil {\n\t\treturn\n\t}\n\tif size > 0 {\n\t\tif err := s.fc.onData(size); err != nil {\n\t\t\tt.closeStream(s, io.EOF, true, http2.ErrCodeFlowControl, status.New(codes.Internal, err.Error()), nil, false)\n\t\t\treturn\n\t\t}\n\t\tdataLen := f.data.Len()\n\t\tif f.Header().Flags.Has(http2.FlagDataPadded) {\n\t\t\tif w := s.fc.onRead(size - uint32(dataLen)); w > 0 {\n\t\t\t\tt.controlBuf.put(&outgoingWindowUpdate{s.id, w})\n\t\t\t}\n\t\t}\n\t\tif dataLen > 0 {\n\t\t\tf.data.Ref()\n\t\t\ts.write(recvMsg{buffer: f.data})\n\t\t}\n\t}\n\t// The server has closed the stream without sending trailers.  Record that\n\t// the read direction is closed, and set the status appropriately.\n\tif f.StreamEnded() {\n\t\t// If client received END_STREAM from server while stream was still\n\t\t// active, send RST_STREAM.\n\t\trstStream := s.getState() == streamActive\n\t\tt.closeStream(s, io.EOF, rstStream, http2.ErrCodeNo, status.New(codes.Internal, \"server closed the stream without sending trailers\"), nil, true)\n\t}\n}\n\nfunc (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) {\n\ts := t.getStream(f)\n\tif s == nil {\n\t\treturn\n\t}\n\tif f.ErrCode == http2.ErrCodeRefusedStream {\n\t\t// The stream was unprocessed by the server.\n\t\ts.unprocessed.Store(true)\n\t}\n\tstatusCode, ok := http2ErrConvTab[f.ErrCode]\n\tif !ok {\n\t\tif t.logger.V(logLevel) {\n\t\t\tt.logger.Infof(\"Received a RST_STREAM frame with code %q, but found no mapped gRPC status\", f.ErrCode)\n\t\t}\n\t\tstatusCode = codes.Unknown\n\t}\n\tif statusCode == codes.Canceled {\n\t\tif d, ok := s.ctx.Deadline(); ok && !d.After(time.Now()) {\n\t\t\t// Our deadline was already exceeded, and that was likely the cause\n\t\t\t// of this cancellation.  Alter the status code accordingly.\n\t\t\tstatusCode = codes.DeadlineExceeded\n\t\t}\n\t}\n\tst := status.Newf(statusCode, \"stream terminated by RST_STREAM with error code: %v\", f.ErrCode)\n\tt.closeStream(s, st.Err(), false, http2.ErrCodeNo, st, nil, false)\n}\n\nfunc (t *http2Client) handleSettings(f *http2.SettingsFrame, isFirst bool) {\n\tif f.IsAck() {\n\t\treturn\n\t}\n\tvar maxStreams *uint32\n\tvar ss []http2.Setting\n\tvar updateFuncs []func()\n\tf.ForeachSetting(func(s http2.Setting) error {\n\t\tswitch s.ID {\n\t\tcase http2.SettingMaxConcurrentStreams:\n\t\t\tmaxStreams = new(uint32)\n\t\t\t*maxStreams = s.Val\n\t\tcase http2.SettingMaxHeaderListSize:\n\t\t\tupdateFuncs = append(updateFuncs, func() {\n\t\t\t\tt.maxSendHeaderListSize = new(uint32)\n\t\t\t\t*t.maxSendHeaderListSize = s.Val\n\t\t\t})\n\t\tdefault:\n\t\t\tss = append(ss, s)\n\t\t}\n\t\treturn nil\n\t})\n\tif isFirst && maxStreams == nil {\n\t\tmaxStreams = new(uint32)\n\t\t*maxStreams = math.MaxUint32\n\t}\n\tsf := &incomingSettings{\n\t\tss: ss,\n\t}\n\tif maxStreams != nil {\n\t\tupdateStreamQuota := func() {\n\t\t\tdelta := int64(*maxStreams) - int64(t.maxConcurrentStreams)\n\t\t\tt.maxConcurrentStreams = *maxStreams\n\t\t\tt.streamQuota += delta\n\t\t\tif delta > 0 && t.waitingStreams > 0 {\n\t\t\t\tclose(t.streamsQuotaAvailable) // wake all of them up.\n\t\t\t\tt.streamsQuotaAvailable = make(chan struct{}, 1)\n\t\t\t}\n\t\t}\n\t\tupdateFuncs = append(updateFuncs, updateStreamQuota)\n\t}\n\tt.controlBuf.executeAndPut(func() bool {\n\t\tfor _, f := range updateFuncs {\n\t\t\tf()\n\t\t}\n\t\treturn true\n\t}, sf)\n}\n\nfunc (t *http2Client) handlePing(f *http2.PingFrame) {\n\tif f.IsAck() {\n\t\t// Maybe it's a BDP ping.\n\t\tif t.bdpEst != nil {\n\t\t\tt.bdpEst.calculate(f.Data)\n\t\t}\n\t\treturn\n\t}\n\tpingAck := &ping{ack: true}\n\tcopy(pingAck.data[:], f.Data[:])\n\tt.controlBuf.put(pingAck)\n}\n\nfunc (t *http2Client) handleGoAway(f *http2.GoAwayFrame) error {\n\tt.mu.Lock()\n\tif t.state == closing {\n\t\tt.mu.Unlock()\n\t\treturn nil\n\t}\n\tif f.ErrCode == http2.ErrCodeEnhanceYourCalm && string(f.DebugData()) == \"too_many_pings\" {\n\t\t// When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug\n\t\t// data equal to ASCII \"too_many_pings\", it should log the occurrence at a log level that is\n\t\t// enabled by default and double the configure KEEPALIVE_TIME used for new connections\n\t\t// on that channel.\n\t\tlogger.Errorf(\"Client received GoAway with error code ENHANCE_YOUR_CALM and debug data equal to ASCII \\\"too_many_pings\\\".\")\n\t}\n\tid := f.LastStreamID\n\tif id > 0 && id%2 == 0 {\n\t\tt.mu.Unlock()\n\t\treturn connectionErrorf(true, nil, \"received goaway with non-zero even-numbered stream id: %v\", id)\n\t}\n\t// A client can receive multiple GoAways from the server (see\n\t// https://github.com/grpc/grpc-go/issues/1387).  The idea is that the first\n\t// GoAway will be sent with an ID of MaxInt32 and the second GoAway will be\n\t// sent after an RTT delay with the ID of the last stream the server will\n\t// process.\n\t//\n\t// Therefore, when we get the first GoAway we don't necessarily close any\n\t// streams. While in case of second GoAway we close all streams created after\n\t// the GoAwayId. This way streams that were in-flight while the GoAway from\n\t// server was being sent don't get killed.\n\tselect {\n\tcase <-t.goAway: // t.goAway has been closed (i.e.,multiple GoAways).\n\t\t// If there are multiple GoAways the first one should always have an ID greater than the following ones.\n\t\tif id > t.prevGoAwayID {\n\t\t\tt.mu.Unlock()\n\t\t\treturn connectionErrorf(true, nil, \"received goaway with stream id: %v, which exceeds stream id of previous goaway: %v\", id, t.prevGoAwayID)\n\t\t}\n\tdefault:\n\t\tt.setGoAwayReason(f)\n\t\tclose(t.goAway)\n\t\tdefer t.controlBuf.put(&incomingGoAway{}) // Defer as t.mu is currently held.\n\t\t// Notify the clientconn about the GOAWAY before we set the state to\n\t\t// draining, to allow the client to stop attempting to create streams\n\t\t// before disallowing new streams on this connection.\n\t\tif t.state != draining {\n\t\t\tt.onClose(GoAwayInfo{Reason: t.goAwayReason, GoAwayCode: t.goAwayCode})\n\t\t\tt.state = draining\n\t\t}\n\t}\n\t// All streams with IDs greater than the GoAwayId\n\t// and smaller than the previous GoAway ID should be killed.\n\tupperLimit := t.prevGoAwayID\n\tif upperLimit == 0 { // This is the first GoAway Frame.\n\t\tupperLimit = math.MaxUint32 // Kill all streams after the GoAway ID.\n\t}\n\n\tt.prevGoAwayID = id\n\tif len(t.activeStreams) == 0 {\n\t\tt.mu.Unlock()\n\t\treturn connectionErrorf(true, nil, \"received goaway and there are no active streams\")\n\t}\n\n\tstreamsToClose := make([]*ClientStream, 0)\n\tfor streamID, stream := range t.activeStreams {\n\t\tif streamID > id && streamID <= upperLimit {\n\t\t\t// The stream was unprocessed by the server.\n\t\t\tstream.unprocessed.Store(true)\n\t\t\tstreamsToClose = append(streamsToClose, stream)\n\t\t}\n\t}\n\tt.mu.Unlock()\n\t// Called outside t.mu because closeStream can take controlBuf's mu, which\n\t// could induce deadlock and is not allowed.\n\tfor _, stream := range streamsToClose {\n\t\tt.closeStream(stream, errStreamDrain, false, http2.ErrCodeNo, statusGoAway, nil, false)\n\t}\n\treturn nil\n}\n\n// setGoAwayReason sets the value of t.goAwayReason based\n// on the GoAway frame received.\n// It expects a lock on transport's mutex to be held by\n// the caller.\nfunc (t *http2Client) setGoAwayReason(f *http2.GoAwayFrame) {\n\tt.goAwayReason = GoAwayNoReason\n\tif f.ErrCode == http2.ErrCodeEnhanceYourCalm {\n\t\tif string(f.DebugData()) == \"too_many_pings\" {\n\t\t\tt.goAwayReason = GoAwayTooManyPings\n\t\t}\n\t}\n\tif len(f.DebugData()) == 0 {\n\t\tt.goAwayDebugMessage = fmt.Sprintf(\"code: %s\", f.ErrCode)\n\t} else {\n\t\tt.goAwayDebugMessage = fmt.Sprintf(\"code: %s, debug data: %q\", f.ErrCode, string(f.DebugData()))\n\t}\n\tt.goAwayCode = f.ErrCode\n}\n\nfunc (t *http2Client) GetGoAwayReason() (GoAwayReason, string) {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\treturn t.goAwayReason, t.goAwayDebugMessage\n}\n\nfunc (t *http2Client) handleWindowUpdate(f *http2.WindowUpdateFrame) {\n\tt.controlBuf.put(&incomingWindowUpdate{\n\t\tstreamID:  f.Header().StreamID,\n\t\tincrement: f.Increment,\n\t})\n}\n\n// operateHeaders takes action on the decoded headers.\nfunc (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) {\n\ts := t.getStream(frame)\n\tif s == nil {\n\t\treturn\n\t}\n\tendStream := frame.StreamEnded()\n\ts.bytesReceived.Store(true)\n\tinitialHeader := atomic.LoadUint32(&s.headerChanClosed) == 0\n\n\tif !initialHeader && !endStream {\n\t\t// As specified by gRPC over HTTP2, a HEADERS frame (and associated CONTINUATION frames) can only appear at the start or end of a stream. Therefore, second HEADERS frame must have EOS bit set.\n\t\tst := status.New(codes.Internal, \"a HEADERS frame cannot appear in the middle of a stream\")\n\t\tt.closeStream(s, st.Err(), true, http2.ErrCodeProtocol, st, nil, false)\n\t\treturn\n\t}\n\n\t// frame.Truncated is set to true when framer detects that the current header\n\t// list size hits MaxHeaderListSize limit.\n\tif frame.Truncated {\n\t\tse := status.New(codes.Internal, \"peer header list size exceeded limit\")\n\t\tt.closeStream(s, se.Err(), true, http2.ErrCodeFrameSize, se, nil, endStream)\n\t\treturn\n\t}\n\n\tvar (\n\t\t// If a gRPC Response-Headers has already been received, then it means\n\t\t// that the peer is speaking gRPC and we are in gRPC mode.\n\t\tisGRPC         = !initialHeader\n\t\tmdata          = make(map[string][]string)\n\t\tcontentTypeErr = \"malformed header: missing HTTP content-type\"\n\t\tgrpcMessage    string\n\t\trecvCompress   string\n\t\thttpStatusErr  string\n\t\t// the code from the grpc-status header, if present\n\t\tgrpcStatusCode = codes.Unknown\n\t\t// headerError is set if an error is encountered while parsing the headers\n\t\theaderError string\n\t\thttpStatus  string\n\t)\n\n\tfor _, hf := range frame.Fields {\n\t\tswitch hf.Name {\n\t\tcase \"content-type\":\n\t\t\tif _, validContentType := grpcutil.ContentSubtype(hf.Value); !validContentType {\n\t\t\t\tcontentTypeErr = fmt.Sprintf(\"transport: received unexpected content-type %q\", hf.Value)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcontentTypeErr = \"\"\n\t\t\tmdata[hf.Name] = append(mdata[hf.Name], hf.Value)\n\t\t\tisGRPC = true\n\t\tcase \"grpc-encoding\":\n\t\t\trecvCompress = hf.Value\n\t\tcase \"grpc-status\":\n\t\t\tcode, err := strconv.ParseInt(hf.Value, 10, 32)\n\t\t\tif err != nil {\n\t\t\t\tse := status.New(codes.Unknown, fmt.Sprintf(\"transport: malformed grpc-status: %v\", err))\n\t\t\t\tt.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tgrpcStatusCode = codes.Code(uint32(code))\n\t\tcase \"grpc-message\":\n\t\t\tgrpcMessage = decodeGrpcMessage(hf.Value)\n\t\tcase \":status\":\n\t\t\thttpStatus = hf.Value\n\t\tdefault:\n\t\t\tif isReservedHeader(hf.Name) && !isWhitelistedHeader(hf.Name) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv, err := decodeMetadataHeader(hf.Name, hf.Value)\n\t\t\tif err != nil {\n\t\t\t\theaderError = fmt.Sprintf(\"transport: malformed %s: %v\", hf.Name, err)\n\t\t\t\tlogger.Warningf(\"Failed to decode metadata header (%q, %q): %v\", hf.Name, hf.Value, err)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tmdata[hf.Name] = append(mdata[hf.Name], v)\n\t\t}\n\t}\n\n\t// If a non-gRPC response is received, then evaluate the HTTP status to\n\t// process the response and close the stream.\n\t// In case http status doesn't provide any error information (status : 200),\n\t// then evalute response code to be Unknown.\n\tif !isGRPC {\n\t\tvar grpcErrorCode = codes.Internal\n\t\tif httpStatus == \"\" {\n\t\t\thttpStatusErr = \"malformed header: missing HTTP status\"\n\t\t} else {\n\t\t\t// Parse the status codes (e.g. \"200\", 404\").\n\t\t\tstatusCode, err := strconv.Atoi(httpStatus)\n\t\t\tif err != nil {\n\t\t\t\tse := status.New(grpcErrorCode, fmt.Sprintf(\"transport: malformed http-status: %v\", err))\n\t\t\t\tt.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif statusCode >= 100 && statusCode < 200 {\n\t\t\t\tif endStream {\n\t\t\t\t\tse := status.New(codes.Internal, fmt.Sprintf(\n\t\t\t\t\t\t\"protocol error: informational header with status code %d must not have END_STREAM set\", statusCode))\n\t\t\t\t\tt.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)\n\t\t\t\t}\n\t\t\t\t// In case of informational headers, return.\n\t\t\t\treturn\n\t\t\t}\n\t\t\thttpStatusErr = fmt.Sprintf(\n\t\t\t\t\"unexpected HTTP status code received from server: %d (%s)\",\n\t\t\t\tstatusCode,\n\t\t\t\thttp.StatusText(statusCode),\n\t\t\t)\n\t\t\tvar ok bool\n\t\t\tgrpcErrorCode, ok = HTTPStatusConvTab[statusCode]\n\t\t\tif !ok {\n\t\t\t\tgrpcErrorCode = codes.Unknown\n\t\t\t}\n\t\t}\n\t\tvar errs []string\n\t\tif httpStatusErr != \"\" {\n\t\t\terrs = append(errs, httpStatusErr)\n\t\t}\n\n\t\tif contentTypeErr != \"\" {\n\t\t\terrs = append(errs, contentTypeErr)\n\t\t}\n\n\t\tse := status.New(grpcErrorCode, strings.Join(errs, \"; \"))\n\t\tt.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)\n\t\treturn\n\t}\n\n\tif headerError != \"\" {\n\t\tse := status.New(codes.Internal, headerError)\n\t\tt.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)\n\t\treturn\n\t}\n\n\t// For headers, set them in s.header and close headerChan.  For trailers or\n\t// trailers-only, closeStream will set the trailers and close headerChan as\n\t// needed.\n\tif !endStream {\n\t\t// If headerChan hasn't been closed yet (expected, given we checked it\n\t\t// above, but something else could have potentially closed the whole\n\t\t// stream).\n\t\tif atomic.CompareAndSwapUint32(&s.headerChanClosed, 0, 1) {\n\t\t\ts.headerValid = true\n\t\t\t// These values can be set without any synchronization because\n\t\t\t// stream goroutine will read it only after seeing a closed\n\t\t\t// headerChan which we'll close after setting this.\n\t\t\ts.recvCompress = recvCompress\n\t\t\tif len(mdata) > 0 {\n\t\t\t\ts.header = mdata\n\t\t\t}\n\t\t\tclose(s.headerChan)\n\t\t}\n\t}\n\n\tif s.statsHandler != nil {\n\t\tif !endStream {\n\t\t\ts.statsHandler.HandleRPC(s.ctx, &stats.InHeader{\n\t\t\t\tClient:      true,\n\t\t\t\tWireLength:  int(frame.Header().Length),\n\t\t\t\tHeader:      metadata.MD(mdata).Copy(),\n\t\t\t\tCompression: s.recvCompress,\n\t\t\t})\n\t\t} else {\n\t\t\ts.statsHandler.HandleRPC(s.ctx, &stats.InTrailer{\n\t\t\t\tClient:     true,\n\t\t\t\tWireLength: int(frame.Header().Length),\n\t\t\t\tTrailer:    metadata.MD(mdata).Copy(),\n\t\t\t})\n\t\t}\n\t}\n\n\tif !endStream {\n\t\treturn\n\t}\n\n\tstatus := istatus.NewWithProto(grpcStatusCode, grpcMessage, mdata[grpcStatusDetailsBinHeader])\n\n\t// If client received END_STREAM from server while stream was still active,\n\t// send RST_STREAM.\n\trstStream := s.getState() == streamActive\n\tt.closeStream(s, io.EOF, rstStream, http2.ErrCodeNo, status, mdata, true)\n}\n\n// readServerPreface reads and handles the initial settings frame from the\n// server.\nfunc (t *http2Client) readServerPreface() error {\n\tframe, err := t.framer.fr.ReadFrame()\n\tif err != nil {\n\t\treturn connectionErrorf(true, err, \"error reading server preface: %v\", err)\n\t}\n\tsf, ok := frame.(*http2.SettingsFrame)\n\tif !ok {\n\t\treturn connectionErrorf(true, nil, \"initial http2 frame from server is not a settings frame: %T\", frame)\n\t}\n\tt.handleSettings(sf, true)\n\treturn nil\n}\n\n// reader verifies the server preface and reads all subsequent data from\n// network connection.  If the server preface is not read successfully, an\n// error is pushed to errCh; otherwise errCh is closed with no error.\nfunc (t *http2Client) reader(errCh chan<- error) {\n\tvar errClose error\n\tdefer func() {\n\t\tclose(t.readerDone)\n\t\tif errClose != nil {\n\t\t\tt.Close(errClose)\n\t\t}\n\t}()\n\n\tif err := t.readServerPreface(); err != nil {\n\t\terrCh <- err\n\t\treturn\n\t}\n\tclose(errCh)\n\tif t.keepaliveEnabled {\n\t\tatomic.StoreInt64(&t.lastRead, time.Now().UnixNano())\n\t}\n\n\t// loop to keep reading incoming messages on this transport.\n\tfor {\n\t\tt.controlBuf.throttle()\n\t\tframe, err := t.framer.readFrame()\n\t\tif t.keepaliveEnabled {\n\t\t\tatomic.StoreInt64(&t.lastRead, time.Now().UnixNano())\n\t\t}\n\t\tif err != nil {\n\t\t\t// Abort an active stream if the http2.Framer returns a\n\t\t\t// http2.StreamError. This can happen only if the server's response\n\t\t\t// is malformed http2.\n\t\t\tif se, ok := err.(http2.StreamError); ok {\n\t\t\t\tt.mu.Lock()\n\t\t\t\ts := t.activeStreams[se.StreamID]\n\t\t\t\tt.mu.Unlock()\n\t\t\t\tif s != nil {\n\t\t\t\t\t// use error detail to provide better err message\n\t\t\t\t\tcode := http2ErrConvTab[se.Code]\n\t\t\t\t\terrorDetail := t.framer.errorDetail()\n\t\t\t\t\tvar msg string\n\t\t\t\t\tif errorDetail != nil {\n\t\t\t\t\t\tmsg = errorDetail.Error()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmsg = \"received invalid frame\"\n\t\t\t\t\t}\n\t\t\t\t\tt.closeStream(s, status.Error(code, msg), true, http2.ErrCodeProtocol, status.New(code, msg), nil, false)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// Transport error.\n\t\t\terrClose = connectionErrorf(true, err, \"error reading from server: %v\", err)\n\t\t\treturn\n\t\t}\n\t\tswitch frame := frame.(type) {\n\t\tcase *http2.MetaHeadersFrame:\n\t\t\tt.operateHeaders(frame)\n\t\tcase *parsedDataFrame:\n\t\t\tt.handleData(frame)\n\t\t\tframe.data.Free()\n\t\tcase *http2.RSTStreamFrame:\n\t\t\tt.handleRSTStream(frame)\n\t\tcase *http2.SettingsFrame:\n\t\t\tt.handleSettings(frame, false)\n\t\tcase *http2.PingFrame:\n\t\t\tt.handlePing(frame)\n\t\tcase *http2.GoAwayFrame:\n\t\t\terrClose = t.handleGoAway(frame)\n\t\tcase *http2.WindowUpdateFrame:\n\t\t\tt.handleWindowUpdate(frame)\n\t\tdefault:\n\t\t\tif logger.V(logLevel) {\n\t\t\t\tlogger.Errorf(\"transport: http2Client.reader got unhandled frame type %v.\", frame)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// keepalive running in a separate goroutine makes sure the connection is alive by sending pings.\nfunc (t *http2Client) keepalive() {\n\tvar err error\n\tdefer func() {\n\t\tclose(t.keepaliveDone)\n\t\tif err != nil {\n\t\t\tt.Close(err)\n\t\t}\n\t}()\n\tp := &ping{data: [8]byte{}}\n\t// True iff a ping has been sent, and no data has been received since then.\n\toutstandingPing := false\n\t// Amount of time remaining before which we should receive an ACK for the\n\t// last sent ping.\n\ttimeoutLeft := time.Duration(0)\n\t// Records the last value of t.lastRead before we go block on the timer.\n\t// This is required to check for read activity since then.\n\tprevNano := time.Now().UnixNano()\n\ttimer := time.NewTimer(t.kp.Time)\n\tfor {\n\t\tselect {\n\t\tcase <-timer.C:\n\t\t\tlastRead := atomic.LoadInt64(&t.lastRead)\n\t\t\tif lastRead > prevNano {\n\t\t\t\t// There has been read activity since the last time we were here.\n\t\t\t\toutstandingPing = false\n\t\t\t\t// Next timer should fire at kp.Time seconds from lastRead time.\n\t\t\t\ttimer.Reset(time.Duration(lastRead) + t.kp.Time - time.Duration(time.Now().UnixNano()))\n\t\t\t\tprevNano = lastRead\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif outstandingPing && timeoutLeft <= 0 {\n\t\t\t\terr = connectionErrorf(true, nil, \"keepalive ping failed to receive ACK within timeout\")\n\t\t\t\treturn\n\t\t\t}\n\t\t\tt.mu.Lock()\n\t\t\tif t.state == closing {\n\t\t\t\t// If the transport is closing, we should exit from the\n\t\t\t\t// keepalive goroutine here. If not, we could have a race\n\t\t\t\t// between the call to Signal() from Close() and the call to\n\t\t\t\t// Wait() here, whereby the keepalive goroutine ends up\n\t\t\t\t// blocking on the condition variable which will never be\n\t\t\t\t// signalled again.\n\t\t\t\tt.mu.Unlock()\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif len(t.activeStreams) < 1 && !t.kp.PermitWithoutStream {\n\t\t\t\t// If a ping was sent out previously (because there were active\n\t\t\t\t// streams at that point) which wasn't acked and its timeout\n\t\t\t\t// hadn't fired, but we got here and are about to go dormant,\n\t\t\t\t// we should make sure that we unconditionally send a ping once\n\t\t\t\t// we awaken.\n\t\t\t\toutstandingPing = false\n\t\t\t\tt.kpDormant = true\n\t\t\t\tt.kpDormancyCond.Wait()\n\t\t\t}\n\t\t\tt.kpDormant = false\n\t\t\tt.mu.Unlock()\n\n\t\t\t// We get here either because we were dormant and a new stream was\n\t\t\t// created which unblocked the Wait() call, or because the\n\t\t\t// keepalive timer expired. In both cases, we need to send a ping.\n\t\t\tif !outstandingPing {\n\t\t\t\tif channelz.IsOn() {\n\t\t\t\t\tt.channelz.SocketMetrics.KeepAlivesSent.Add(1)\n\t\t\t\t}\n\t\t\t\tt.controlBuf.put(p)\n\t\t\t\ttimeoutLeft = t.kp.Timeout\n\t\t\t\toutstandingPing = true\n\t\t\t}\n\t\t\t// The amount of time to sleep here is the minimum of kp.Time and\n\t\t\t// timeoutLeft. This will ensure that we wait only for kp.Time\n\t\t\t// before sending out the next ping (for cases where the ping is\n\t\t\t// acked).\n\t\t\tsleepDuration := min(t.kp.Time, timeoutLeft)\n\t\t\ttimeoutLeft -= sleepDuration\n\t\t\ttimer.Reset(sleepDuration)\n\t\tcase <-t.ctx.Done():\n\t\t\tif !timer.Stop() {\n\t\t\t\t<-timer.C\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (t *http2Client) Error() <-chan struct{} {\n\treturn t.ctx.Done()\n}\n\nfunc (t *http2Client) GoAway() <-chan struct{} {\n\treturn t.goAway\n}\n\nfunc (t *http2Client) socketMetrics() *channelz.EphemeralSocketMetrics {\n\treturn &channelz.EphemeralSocketMetrics{\n\t\tLocalFlowControlWindow:  int64(t.fc.getSize()),\n\t\tRemoteFlowControlWindow: t.getOutFlowWindow(),\n\t}\n}\n\nfunc (t *http2Client) incrMsgSent() {\n\tif channelz.IsOn() {\n\t\tt.channelz.SocketMetrics.MessagesSent.Add(1)\n\t\tt.channelz.SocketMetrics.LastMessageSentTimestamp.Store(time.Now().UnixNano())\n\t}\n}\n\nfunc (t *http2Client) incrMsgRecv() {\n\tif channelz.IsOn() {\n\t\tt.channelz.SocketMetrics.MessagesReceived.Add(1)\n\t\tt.channelz.SocketMetrics.LastMessageReceivedTimestamp.Store(time.Now().UnixNano())\n\t}\n}\n\nfunc (t *http2Client) getOutFlowWindow() int64 {\n\tresp := make(chan uint32, 1)\n\ttimer := time.NewTimer(time.Second)\n\tdefer timer.Stop()\n\tt.controlBuf.put(&outFlowControlSizeRequest{resp})\n\tselect {\n\tcase sz := <-resp:\n\t\treturn int64(sz)\n\tcase <-t.ctxDone:\n\t\treturn -1\n\tcase <-timer.C:\n\t\treturn -2\n\t}\n}\n\nfunc (t *http2Client) stateForTesting() transportState {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\treturn t.state\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/http2_server.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\trand \"math/rand/v2\"\n\t\"net\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"golang.org/x/net/http2\"\n\t\"golang.org/x/net/http2/hpack\"\n\t\"google.golang.org/protobuf/proto\"\n\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/internal/grpclog\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n\t\"google.golang.org/grpc/internal/pretty\"\n\tistatus \"google.golang.org/grpc/internal/status\"\n\t\"google.golang.org/grpc/internal/syscall\"\n\t\"google.golang.org/grpc/mem\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\t\"google.golang.org/grpc/internal/grpcsync\"\n\t\"google.golang.org/grpc/keepalive\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/peer\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n\t\"google.golang.org/grpc/tap\"\n)\n\nvar (\n\t// ErrIllegalHeaderWrite indicates that setting header is illegal because of\n\t// the stream's state.\n\tErrIllegalHeaderWrite = status.Error(codes.Internal, \"transport: SendHeader called multiple times\")\n\t// ErrHeaderListSizeLimitViolation indicates that the header list size is larger\n\t// than the limit set by peer.\n\tErrHeaderListSizeLimitViolation = status.Error(codes.Internal, \"transport: trying to send header list size larger than the limit set by peer\")\n)\n\n// serverConnectionCounter counts the number of connections a server has seen\n// (equal to the number of http2Servers created). Must be accessed atomically.\nvar serverConnectionCounter uint64\n\n// http2Server implements the ServerTransport interface with HTTP2.\ntype http2Server struct {\n\tlastRead        int64 // Keep this field 64-bit aligned. Accessed atomically.\n\tdone            chan struct{}\n\tconn            net.Conn\n\tloopy           *loopyWriter\n\treaderDone      chan struct{} // sync point to enable testing.\n\tloopyWriterDone chan struct{}\n\tpeer            peer.Peer\n\tinTapHandle     tap.ServerInHandle\n\tframer          *framer\n\t// The max number of concurrent streams.\n\tmaxStreams uint32\n\t// controlBuf delivers all the control related tasks (e.g., window\n\t// updates, reset streams, and various settings) to the controller.\n\tcontrolBuf *controlBuffer\n\tfc         *trInFlow\n\tstats      stats.Handler\n\t// Keepalive and max-age parameters for the server.\n\tkp keepalive.ServerParameters\n\t// Keepalive enforcement policy.\n\tkep keepalive.EnforcementPolicy\n\t// The time instance last ping was received.\n\tlastPingAt time.Time\n\t// Number of times the client has violated keepalive ping policy so far.\n\tpingStrikes uint8\n\t// Flag to signify that number of ping strikes should be reset to 0.\n\t// This is set whenever data or header frames are sent.\n\t// 1 means yes.\n\tresetPingStrikes      uint32 // Accessed atomically.\n\tinitialWindowSize     int32\n\tbdpEst                *bdpEstimator\n\tmaxSendHeaderListSize *uint32\n\n\tmu sync.Mutex // guard the following\n\n\t// drainEvent is initialized when Drain() is called the first time. After\n\t// which the server writes out the first GoAway(with ID 2^31-1) frame. Then\n\t// an independent goroutine will be launched to later send the second\n\t// GoAway. During this time we don't want to write another first GoAway(with\n\t// ID 2^31 -1) frame. Thus call to Drain() will be a no-op if drainEvent is\n\t// already initialized since draining is already underway.\n\tdrainEvent    *grpcsync.Event\n\tstate         transportState\n\tactiveStreams map[uint32]*ServerStream\n\t// idle is the time instant when the connection went idle.\n\t// This is either the beginning of the connection or when the number of\n\t// RPCs go down to 0.\n\t// When the connection is busy, this value is set to 0.\n\tidle time.Time\n\n\t// Fields below are for channelz metric collection.\n\tchannelz   *channelz.Socket\n\tbufferPool mem.BufferPool\n\n\tconnectionID uint64\n\n\t// maxStreamMu guards the maximum stream ID\n\t// This lock may not be taken if mu is already held.\n\tmaxStreamMu sync.Mutex\n\tmaxStreamID uint32 // max stream ID ever seen\n\n\tlogger *grpclog.PrefixLogger\n\t// setResetPingStrikes is stored as a closure instead of making this a\n\t// method on http2Server to avoid a heap allocation when converting a method\n\t// to a closure for passing to frames objects.\n\tsetResetPingStrikes func()\n}\n\n// NewServerTransport creates a http2 transport with conn and configuration\n// options from config.\n//\n// It returns a non-nil transport and a nil error on success. On failure, it\n// returns a nil transport and a non-nil error. For a special case where the\n// underlying conn gets closed before the client preface could be read, it\n// returns a nil transport and a nil error.\nfunc NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, err error) {\n\tvar authInfo credentials.AuthInfo\n\trawConn := conn\n\tif config.Credentials != nil {\n\t\tvar err error\n\t\tconn, authInfo, err = config.Credentials.ServerHandshake(rawConn)\n\t\tif err != nil {\n\t\t\t// ErrConnDispatched means that the connection was dispatched away\n\t\t\t// from gRPC; those connections should be left open. io.EOF means\n\t\t\t// the connection was closed before handshaking completed, which can\n\t\t\t// happen naturally from probers. Return these errors directly.\n\t\t\tif err == credentials.ErrConnDispatched || err == io.EOF {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn nil, connectionErrorf(false, err, \"ServerHandshake(%q) failed: %v\", rawConn.RemoteAddr(), err)\n\t\t}\n\t}\n\twriteBufSize := config.WriteBufferSize\n\treadBufSize := config.ReadBufferSize\n\tmaxHeaderListSize := defaultServerMaxHeaderListSize\n\tif config.MaxHeaderListSize != nil {\n\t\tmaxHeaderListSize = *config.MaxHeaderListSize\n\t}\n\tframer := newFramer(conn, writeBufSize, readBufSize, config.SharedWriteBuffer, maxHeaderListSize, config.BufferPool)\n\t// Send initial settings as connection preface to client.\n\tisettings := []http2.Setting{{\n\t\tID:  http2.SettingMaxFrameSize,\n\t\tVal: http2MaxFrameLen,\n\t}}\n\tif config.MaxStreams != math.MaxUint32 {\n\t\tisettings = append(isettings, http2.Setting{\n\t\t\tID:  http2.SettingMaxConcurrentStreams,\n\t\t\tVal: config.MaxStreams,\n\t\t})\n\t}\n\tiwz := int32(initialWindowSize)\n\tif config.InitialWindowSize >= defaultWindowSize {\n\t\tiwz = config.InitialWindowSize\n\t}\n\ticwz := int32(initialWindowSize)\n\tif config.InitialConnWindowSize >= defaultWindowSize {\n\t\ticwz = config.InitialConnWindowSize\n\t}\n\tif iwz != defaultWindowSize {\n\t\tisettings = append(isettings, http2.Setting{\n\t\t\tID:  http2.SettingInitialWindowSize,\n\t\t\tVal: uint32(iwz)})\n\t}\n\tif config.MaxHeaderListSize != nil {\n\t\tisettings = append(isettings, http2.Setting{\n\t\t\tID:  http2.SettingMaxHeaderListSize,\n\t\t\tVal: *config.MaxHeaderListSize,\n\t\t})\n\t}\n\tif config.HeaderTableSize != nil {\n\t\tisettings = append(isettings, http2.Setting{\n\t\t\tID:  http2.SettingHeaderTableSize,\n\t\t\tVal: *config.HeaderTableSize,\n\t\t})\n\t}\n\tif err := framer.fr.WriteSettings(isettings...); err != nil {\n\t\treturn nil, connectionErrorf(false, err, \"transport: %v\", err)\n\t}\n\t// Adjust the connection flow control window if needed.\n\tif delta := uint32(icwz - defaultWindowSize); delta > 0 {\n\t\tif err := framer.fr.WriteWindowUpdate(0, delta); err != nil {\n\t\t\treturn nil, connectionErrorf(false, err, \"transport: %v\", err)\n\t\t}\n\t}\n\tkp := config.KeepaliveParams\n\tif kp.MaxConnectionIdle == 0 {\n\t\tkp.MaxConnectionIdle = defaultMaxConnectionIdle\n\t}\n\tif kp.MaxConnectionAge == 0 {\n\t\tkp.MaxConnectionAge = defaultMaxConnectionAge\n\t}\n\t// Add a jitter to MaxConnectionAge.\n\tkp.MaxConnectionAge += getJitter(kp.MaxConnectionAge)\n\tif kp.MaxConnectionAgeGrace == 0 {\n\t\tkp.MaxConnectionAgeGrace = defaultMaxConnectionAgeGrace\n\t}\n\tif kp.Time == 0 {\n\t\tkp.Time = defaultServerKeepaliveTime\n\t}\n\tif kp.Timeout == 0 {\n\t\tkp.Timeout = defaultServerKeepaliveTimeout\n\t}\n\tif kp.Time != infinity {\n\t\tif err = syscall.SetTCPUserTimeout(rawConn, kp.Timeout); err != nil {\n\t\t\treturn nil, connectionErrorf(false, err, \"transport: failed to set TCP_USER_TIMEOUT: %v\", err)\n\t\t}\n\t}\n\tkep := config.KeepalivePolicy\n\tif kep.MinTime == 0 {\n\t\tkep.MinTime = defaultKeepalivePolicyMinTime\n\t}\n\n\tdone := make(chan struct{})\n\tpeer := peer.Peer{\n\t\tAddr:      conn.RemoteAddr(),\n\t\tLocalAddr: conn.LocalAddr(),\n\t\tAuthInfo:  authInfo,\n\t}\n\tt := &http2Server{\n\t\tdone:              done,\n\t\tconn:              conn,\n\t\tpeer:              peer,\n\t\tframer:            framer,\n\t\treaderDone:        make(chan struct{}),\n\t\tloopyWriterDone:   make(chan struct{}),\n\t\tmaxStreams:        config.MaxStreams,\n\t\tinTapHandle:       config.InTapHandle,\n\t\tfc:                &trInFlow{limit: uint32(icwz)},\n\t\tstate:             reachable,\n\t\tactiveStreams:     make(map[uint32]*ServerStream),\n\t\tstats:             config.StatsHandler,\n\t\tkp:                kp,\n\t\tidle:              time.Now(),\n\t\tkep:               kep,\n\t\tinitialWindowSize: iwz,\n\t\tbufferPool:        config.BufferPool,\n\t}\n\tt.setResetPingStrikes = func() {\n\t\tatomic.StoreUint32(&t.resetPingStrikes, 1)\n\t}\n\tvar czSecurity credentials.ChannelzSecurityValue\n\tif au, ok := authInfo.(credentials.ChannelzSecurityInfo); ok {\n\t\tczSecurity = au.GetSecurityValue()\n\t}\n\tt.channelz = channelz.RegisterSocket(\n\t\t&channelz.Socket{\n\t\t\tSocketType:       channelz.SocketTypeNormal,\n\t\t\tParent:           config.ChannelzParent,\n\t\t\tSocketMetrics:    channelz.SocketMetrics{},\n\t\t\tEphemeralMetrics: t.socketMetrics,\n\t\t\tLocalAddr:        t.peer.LocalAddr,\n\t\t\tRemoteAddr:       t.peer.Addr,\n\t\t\tSocketOptions:    channelz.GetSocketOption(t.conn),\n\t\t\tSecurity:         czSecurity,\n\t\t},\n\t)\n\tt.logger = prefixLoggerForServerTransport(t)\n\n\tt.controlBuf = newControlBuffer(t.done)\n\tif !config.StaticWindowSize {\n\t\tt.bdpEst = &bdpEstimator{\n\t\t\tbdp:               initialWindowSize,\n\t\t\tupdateFlowControl: t.updateFlowControl,\n\t\t}\n\t}\n\n\tt.connectionID = atomic.AddUint64(&serverConnectionCounter, 1)\n\tt.framer.writer.Flush()\n\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tt.Close(err)\n\t\t}\n\t}()\n\n\t// Check the validity of client preface.\n\tpreface := make([]byte, len(clientPreface))\n\tif _, err := io.ReadFull(t.conn, preface); err != nil {\n\t\t// In deployments where a gRPC server runs behind a cloud load balancer\n\t\t// which performs regular TCP level health checks, the connection is\n\t\t// closed immediately by the latter.  Returning io.EOF here allows the\n\t\t// grpc server implementation to recognize this scenario and suppress\n\t\t// logging to reduce spam.\n\t\tif err == io.EOF {\n\t\t\treturn nil, io.EOF\n\t\t}\n\t\treturn nil, connectionErrorf(false, err, \"transport: http2Server.HandleStreams failed to receive the preface from client: %v\", err)\n\t}\n\tif !bytes.Equal(preface, clientPreface) {\n\t\treturn nil, connectionErrorf(false, nil, \"transport: http2Server.HandleStreams received bogus greeting from client: %q\", preface)\n\t}\n\n\tframe, err := t.framer.fr.ReadFrame()\n\tif err == io.EOF || err == io.ErrUnexpectedEOF {\n\t\treturn nil, err\n\t}\n\tif err != nil {\n\t\treturn nil, connectionErrorf(false, err, \"transport: http2Server.HandleStreams failed to read initial settings frame: %v\", err)\n\t}\n\tatomic.StoreInt64(&t.lastRead, time.Now().UnixNano())\n\tsf, ok := frame.(*http2.SettingsFrame)\n\tif !ok {\n\t\treturn nil, connectionErrorf(false, nil, \"transport: http2Server.HandleStreams saw invalid preface type %T from client\", frame)\n\t}\n\tt.handleSettings(sf)\n\n\tgo func() {\n\t\tt.loopy = newLoopyWriter(serverSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger, t.outgoingGoAwayHandler, t.bufferPool)\n\t\terr := t.loopy.run()\n\t\tclose(t.loopyWriterDone)\n\t\tif !isIOError(err) {\n\t\t\t// Close the connection if a non-I/O error occurs (for I/O errors\n\t\t\t// the reader will also encounter the error and close).  Wait 1\n\t\t\t// second before closing the connection, or when the reader is done\n\t\t\t// (i.e. the client already closed the connection or a connection\n\t\t\t// error occurred).  This avoids the potential problem where there\n\t\t\t// is unread data on the receive side of the connection, which, if\n\t\t\t// closed, would lead to a TCP RST instead of FIN, and the client\n\t\t\t// encountering errors.  For more info:\n\t\t\t// https://github.com/grpc/grpc-go/issues/5358\n\t\t\ttimer := time.NewTimer(time.Second)\n\t\t\tdefer timer.Stop()\n\t\t\tselect {\n\t\t\tcase <-t.readerDone:\n\t\t\tcase <-timer.C:\n\t\t\t}\n\t\t\tt.conn.Close()\n\t\t}\n\t}()\n\tgo t.keepalive()\n\treturn t, nil\n}\n\n// operateHeaders takes action on the decoded headers. Returns an error if fatal\n// error encountered and transport needs to close, otherwise returns nil.\nfunc (t *http2Server) operateHeaders(ctx context.Context, frame *http2.MetaHeadersFrame, handle func(*ServerStream)) error {\n\t// Acquire max stream ID lock for entire duration\n\tt.maxStreamMu.Lock()\n\tdefer t.maxStreamMu.Unlock()\n\n\tstreamID := frame.Header().StreamID\n\n\t// frame.Truncated is set to true when framer detects that the current header\n\t// list size hits MaxHeaderListSize limit.\n\tif frame.Truncated {\n\t\tt.controlBuf.put(&cleanupStream{\n\t\t\tstreamID: streamID,\n\t\t\trst:      true,\n\t\t\trstCode:  http2.ErrCodeFrameSize,\n\t\t\tonWrite:  func() {},\n\t\t})\n\t\treturn nil\n\t}\n\n\tif streamID%2 != 1 || streamID <= t.maxStreamID {\n\t\t// illegal gRPC stream id.\n\t\treturn fmt.Errorf(\"received an illegal stream id: %v. headers frame: %+v\", streamID, frame)\n\t}\n\tt.maxStreamID = streamID\n\n\ts := &ServerStream{\n\t\tStream: Stream{\n\t\t\tid: streamID,\n\t\t\tfc: inFlow{limit: uint32(t.initialWindowSize)},\n\t\t},\n\t\tst:               t,\n\t\theaderWireLength: int(frame.Header().Length),\n\t}\n\ts.Stream.buf.init()\n\tvar (\n\t\t// if false, content-type was missing or invalid\n\t\tisGRPC      = false\n\t\tcontentType = \"\"\n\t\tmdata       = make(metadata.MD, len(frame.Fields))\n\t\thttpMethod  string\n\t\t// these are set if an error is encountered while parsing the headers\n\t\tprotocolError bool\n\t\theaderError   *status.Status\n\n\t\ttimeoutSet bool\n\t\ttimeout    time.Duration\n\t)\n\n\tfor _, hf := range frame.Fields {\n\t\tswitch hf.Name {\n\t\tcase \"content-type\":\n\t\t\tcontentSubtype, validContentType := grpcutil.ContentSubtype(hf.Value)\n\t\t\tif !validContentType {\n\t\t\t\tcontentType = hf.Value\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tmdata[hf.Name] = append(mdata[hf.Name], hf.Value)\n\t\t\ts.contentSubtype = contentSubtype\n\t\t\tisGRPC = true\n\n\t\tcase \"grpc-accept-encoding\":\n\t\t\tmdata[hf.Name] = append(mdata[hf.Name], hf.Value)\n\t\t\tif hf.Value == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcompressors := hf.Value\n\t\t\tif s.clientAdvertisedCompressors != \"\" {\n\t\t\t\tcompressors = s.clientAdvertisedCompressors + \",\" + compressors\n\t\t\t}\n\t\t\ts.clientAdvertisedCompressors = compressors\n\t\tcase \"grpc-encoding\":\n\t\t\ts.recvCompress = hf.Value\n\t\tcase \":method\":\n\t\t\thttpMethod = hf.Value\n\t\tcase \":path\":\n\t\t\ts.method = hf.Value\n\t\tcase \"grpc-timeout\":\n\t\t\ttimeoutSet = true\n\t\t\tvar err error\n\t\t\tif timeout, err = decodeTimeout(hf.Value); err != nil {\n\t\t\t\theaderError = status.Newf(codes.Internal, \"malformed grpc-timeout: %v\", err)\n\t\t\t}\n\t\t// \"Transports must consider requests containing the Connection header\n\t\t// as malformed.\" - A41\n\t\tcase \"connection\":\n\t\t\tif t.logger.V(logLevel) {\n\t\t\t\tt.logger.Infof(\"Received a HEADERS frame with a :connection header which makes the request malformed, as per the HTTP/2 spec\")\n\t\t\t}\n\t\t\tprotocolError = true\n\t\tdefault:\n\t\t\tif isReservedHeader(hf.Name) && !isWhitelistedHeader(hf.Name) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv, err := decodeMetadataHeader(hf.Name, hf.Value)\n\t\t\tif err != nil {\n\t\t\t\theaderError = status.Newf(codes.Internal, \"malformed binary metadata %q in header %q: %v\", hf.Value, hf.Name, err)\n\t\t\t\tt.logger.Warningf(\"Failed to decode metadata header (%q, %q): %v\", hf.Name, hf.Value, err)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tmdata[hf.Name] = append(mdata[hf.Name], v)\n\t\t}\n\t}\n\n\t// \"If multiple Host headers or multiple :authority headers are present, the\n\t// request must be rejected with an HTTP status code 400 as required by Host\n\t// validation in RFC 7230 §5.4, gRPC status code INTERNAL, or RST_STREAM\n\t// with HTTP/2 error code PROTOCOL_ERROR.\" - A41. Since this is a HTTP/2\n\t// error, this takes precedence over a client not speaking gRPC.\n\tif len(mdata[\":authority\"]) > 1 || len(mdata[\"host\"]) > 1 {\n\t\terrMsg := fmt.Sprintf(\"num values of :authority: %v, num values of host: %v, both must only have 1 value as per HTTP/2 spec\", len(mdata[\":authority\"]), len(mdata[\"host\"]))\n\t\tif t.logger.V(logLevel) {\n\t\t\tt.logger.Infof(\"Aborting the stream early: %v\", errMsg)\n\t\t}\n\t\tt.writeEarlyAbort(streamID, s.contentSubtype, status.New(codes.Internal, errMsg), http.StatusBadRequest, !frame.StreamEnded())\n\t\treturn nil\n\t}\n\n\tif protocolError {\n\t\tt.controlBuf.put(&cleanupStream{\n\t\t\tstreamID: streamID,\n\t\t\trst:      true,\n\t\t\trstCode:  http2.ErrCodeProtocol,\n\t\t\tonWrite:  func() {},\n\t\t})\n\t\treturn nil\n\t}\n\tif !isGRPC {\n\t\tt.writeEarlyAbort(streamID, s.contentSubtype, status.Newf(codes.InvalidArgument, \"invalid gRPC request content-type %q\", contentType), http.StatusUnsupportedMediaType, !frame.StreamEnded())\n\t\treturn nil\n\t}\n\tif headerError != nil {\n\t\tt.writeEarlyAbort(streamID, s.contentSubtype, headerError, http.StatusBadRequest, !frame.StreamEnded())\n\t\treturn nil\n\t}\n\n\t// \"If :authority is missing, Host must be renamed to :authority.\" - A41\n\tif len(mdata[\":authority\"]) == 0 {\n\t\t// No-op if host isn't present, no eventual :authority header is a valid\n\t\t// RPC.\n\t\tif host, ok := mdata[\"host\"]; ok {\n\t\t\tmdata[\":authority\"] = host\n\t\t\tdelete(mdata, \"host\")\n\t\t}\n\t} else {\n\t\t// \"If :authority is present, Host must be discarded\" - A41\n\t\tdelete(mdata, \"host\")\n\t}\n\n\tif frame.StreamEnded() {\n\t\t// s is just created by the caller. No lock needed.\n\t\ts.state = streamReadDone\n\t}\n\tif timeoutSet {\n\t\ts.ctx, s.cancel = context.WithTimeout(ctx, timeout)\n\t} else {\n\t\ts.ctx, s.cancel = context.WithCancel(ctx)\n\t}\n\n\t// Attach the received metadata to the context.\n\tif len(mdata) > 0 {\n\t\ts.ctx = metadata.NewIncomingContext(s.ctx, mdata)\n\t}\n\tt.mu.Lock()\n\tif t.state != reachable {\n\t\tt.mu.Unlock()\n\t\ts.cancel()\n\t\treturn nil\n\t}\n\tif uint32(len(t.activeStreams)) >= t.maxStreams {\n\t\tt.mu.Unlock()\n\t\tt.controlBuf.put(&cleanupStream{\n\t\t\tstreamID: streamID,\n\t\t\trst:      true,\n\t\t\trstCode:  http2.ErrCodeRefusedStream,\n\t\t\tonWrite:  func() {},\n\t\t})\n\t\ts.cancel()\n\t\treturn nil\n\t}\n\tif httpMethod != http.MethodPost {\n\t\tt.mu.Unlock()\n\t\terrMsg := fmt.Sprintf(\"Received a HEADERS frame with :method %q which should be POST\", httpMethod)\n\t\tif t.logger.V(logLevel) {\n\t\t\tt.logger.Infof(\"Aborting the stream early: %v\", errMsg)\n\t\t}\n\t\tt.writeEarlyAbort(streamID, s.contentSubtype, status.New(codes.Internal, errMsg), http.StatusMethodNotAllowed, !frame.StreamEnded())\n\t\ts.cancel()\n\t\treturn nil\n\t}\n\tif t.inTapHandle != nil {\n\t\tvar err error\n\t\tif s.ctx, err = t.inTapHandle(s.ctx, &tap.Info{FullMethodName: s.method, Header: mdata}); err != nil {\n\t\t\tt.mu.Unlock()\n\t\t\tif t.logger.V(logLevel) {\n\t\t\t\tt.logger.Infof(\"Aborting the stream early due to InTapHandle failure: %v\", err)\n\t\t\t}\n\t\t\tstat, ok := status.FromError(err)\n\t\t\tif !ok {\n\t\t\t\tstat = status.New(codes.PermissionDenied, err.Error())\n\t\t\t}\n\t\t\tt.writeEarlyAbort(s.id, s.contentSubtype, stat, http.StatusOK, !frame.StreamEnded())\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tif s.ctx.Err() != nil {\n\t\tt.mu.Unlock()\n\t\tst := status.New(codes.DeadlineExceeded, context.DeadlineExceeded.Error())\n\t\t// Early abort in case the timeout was zero or so low it already fired.\n\t\tt.writeEarlyAbort(s.id, s.contentSubtype, st, http.StatusOK, !frame.StreamEnded())\n\t\treturn nil\n\t}\n\n\tt.activeStreams[streamID] = s\n\tif len(t.activeStreams) == 1 {\n\t\tt.idle = time.Time{}\n\t}\n\n\t// Start a timer to close the stream on reaching the deadline.\n\tif timeoutSet {\n\t\t// We need to wait for s.cancel to be updated before calling\n\t\t// t.closeStream to avoid data races.\n\t\tcancelUpdated := make(chan struct{})\n\t\ttimer := internal.TimeAfterFunc(timeout, func() {\n\t\t\t<-cancelUpdated\n\t\t\tt.closeStream(s, true, http2.ErrCodeCancel, false)\n\t\t})\n\t\toldCancel := s.cancel\n\t\ts.cancel = func() {\n\t\t\toldCancel()\n\t\t\ttimer.Stop()\n\t\t}\n\t\tclose(cancelUpdated)\n\t}\n\tt.mu.Unlock()\n\tif channelz.IsOn() {\n\t\tt.channelz.SocketMetrics.StreamsStarted.Add(1)\n\t\tt.channelz.SocketMetrics.LastRemoteStreamCreatedTimestamp.Store(time.Now().UnixNano())\n\t}\n\ts.readRequester = s\n\ts.ctxDone = s.ctx.Done()\n\ts.Stream.wq.init(defaultWriteQuota, s.ctxDone)\n\ts.trReader = transportReader{\n\t\treader: recvBufferReader{\n\t\t\tctx:     s.ctx,\n\t\t\tctxDone: s.ctxDone,\n\t\t\trecv:    &s.buf,\n\t\t},\n\t\twindowHandler: s,\n\t}\n\t// Register the stream with loopy.\n\tt.controlBuf.put(&registerStream{\n\t\tstreamID: s.id,\n\t\twq:       &s.wq,\n\t})\n\thandle(s)\n\treturn nil\n}\n\n// HandleStreams receives incoming streams using the given handler. This is\n// typically run in a separate goroutine.\n// traceCtx attaches trace to ctx and returns the new context.\nfunc (t *http2Server) HandleStreams(ctx context.Context, handle func(*ServerStream)) {\n\tdefer func() {\n\t\tclose(t.readerDone)\n\t\t<-t.loopyWriterDone\n\t}()\n\tfor {\n\t\tt.controlBuf.throttle()\n\t\tframe, err := t.framer.readFrame()\n\t\tatomic.StoreInt64(&t.lastRead, time.Now().UnixNano())\n\t\tif err != nil {\n\t\t\tif se, ok := err.(http2.StreamError); ok {\n\t\t\t\tif t.logger.V(logLevel) {\n\t\t\t\t\tt.logger.Warningf(\"Encountered http2.StreamError: %v\", se)\n\t\t\t\t}\n\t\t\t\tt.mu.Lock()\n\t\t\t\ts := t.activeStreams[se.StreamID]\n\t\t\t\tt.mu.Unlock()\n\t\t\t\tif s != nil {\n\t\t\t\t\tt.closeStream(s, true, se.Code, false)\n\t\t\t\t} else {\n\t\t\t\t\tt.controlBuf.put(&cleanupStream{\n\t\t\t\t\t\tstreamID: se.StreamID,\n\t\t\t\t\t\trst:      true,\n\t\t\t\t\t\trstCode:  se.Code,\n\t\t\t\t\t\tonWrite:  func() {},\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tt.Close(err)\n\t\t\treturn\n\t\t}\n\t\tswitch frame := frame.(type) {\n\t\tcase *http2.MetaHeadersFrame:\n\t\t\tif err := t.operateHeaders(ctx, frame, handle); err != nil {\n\t\t\t\t// Any error processing client headers, e.g. invalid stream ID,\n\t\t\t\t// is considered a protocol violation.\n\t\t\t\tt.controlBuf.put(&goAway{\n\t\t\t\t\tcode:      http2.ErrCodeProtocol,\n\t\t\t\t\tdebugData: []byte(err.Error()),\n\t\t\t\t\tcloseConn: err,\n\t\t\t\t})\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase *parsedDataFrame:\n\t\t\tt.handleData(frame)\n\t\t\tframe.data.Free()\n\t\tcase *http2.RSTStreamFrame:\n\t\t\tt.handleRSTStream(frame)\n\t\tcase *http2.SettingsFrame:\n\t\t\tt.handleSettings(frame)\n\t\tcase *http2.PingFrame:\n\t\t\tt.handlePing(frame)\n\t\tcase *http2.WindowUpdateFrame:\n\t\t\tt.handleWindowUpdate(frame)\n\t\tcase *http2.GoAwayFrame:\n\t\t\t// TODO: Handle GoAway from the client appropriately.\n\t\tdefault:\n\t\t\tif t.logger.V(logLevel) {\n\t\t\t\tt.logger.Infof(\"Received unsupported frame type %T\", frame)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (t *http2Server) getStream(f http2.Frame) (*ServerStream, bool) {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\tif t.activeStreams == nil {\n\t\t// The transport is closing.\n\t\treturn nil, false\n\t}\n\ts, ok := t.activeStreams[f.Header().StreamID]\n\tif !ok {\n\t\t// The stream is already done.\n\t\treturn nil, false\n\t}\n\treturn s, true\n}\n\n// adjustWindow sends out extra window update over the initial window size\n// of stream if the application is requesting data larger in size than\n// the window.\nfunc (t *http2Server) adjustWindow(s *ServerStream, n uint32) {\n\tif w := s.fc.maybeAdjust(n); w > 0 {\n\t\tt.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w})\n\t}\n\n}\n\n// updateWindow adjusts the inbound quota for the stream and the transport.\n// Window updates will deliver to the controller for sending when\n// the cumulative quota exceeds the corresponding threshold.\nfunc (t *http2Server) updateWindow(s *ServerStream, n uint32) {\n\tif w := s.fc.onRead(n); w > 0 {\n\t\tt.controlBuf.put(&outgoingWindowUpdate{streamID: s.id,\n\t\t\tincrement: w,\n\t\t})\n\t}\n}\n\n// updateFlowControl updates the incoming flow control windows\n// for the transport and the stream based on the current bdp\n// estimation.\nfunc (t *http2Server) updateFlowControl(n uint32) {\n\tt.mu.Lock()\n\tfor _, s := range t.activeStreams {\n\t\ts.fc.newLimit(n)\n\t}\n\tt.initialWindowSize = int32(n)\n\tt.mu.Unlock()\n\tt.controlBuf.put(&outgoingWindowUpdate{\n\t\tstreamID:  0,\n\t\tincrement: t.fc.newLimit(n),\n\t})\n\tt.controlBuf.put(&outgoingSettings{\n\t\tss: []http2.Setting{\n\t\t\t{\n\t\t\t\tID:  http2.SettingInitialWindowSize,\n\t\t\t\tVal: n,\n\t\t\t},\n\t\t},\n\t})\n\n}\n\nfunc (t *http2Server) handleData(f *parsedDataFrame) {\n\tsize := f.Header().Length\n\tvar sendBDPPing bool\n\tif t.bdpEst != nil {\n\t\tsendBDPPing = t.bdpEst.add(size)\n\t}\n\t// Decouple connection's flow control from application's read.\n\t// An update on connection's flow control should not depend on\n\t// whether user application has read the data or not. Such a\n\t// restriction is already imposed on the stream's flow control,\n\t// and therefore the sender will be blocked anyways.\n\t// Decoupling the connection flow control will prevent other\n\t// active(fast) streams from starving in presence of slow or\n\t// inactive streams.\n\tif w := t.fc.onData(size); w > 0 {\n\t\tt.controlBuf.put(&outgoingWindowUpdate{\n\t\t\tstreamID:  0,\n\t\t\tincrement: w,\n\t\t})\n\t}\n\tif sendBDPPing {\n\t\t// Avoid excessive ping detection (e.g. in an L7 proxy)\n\t\t// by sending a window update prior to the BDP ping.\n\t\tif w := t.fc.reset(); w > 0 {\n\t\t\tt.controlBuf.put(&outgoingWindowUpdate{\n\t\t\t\tstreamID:  0,\n\t\t\t\tincrement: w,\n\t\t\t})\n\t\t}\n\t\tt.controlBuf.put(bdpPing)\n\t}\n\t// Select the right stream to dispatch.\n\ts, ok := t.getStream(f)\n\tif !ok {\n\t\treturn\n\t}\n\tif s.getState() == streamReadDone {\n\t\tt.closeStream(s, true, http2.ErrCodeStreamClosed, false)\n\t\treturn\n\t}\n\tif size > 0 {\n\t\tif err := s.fc.onData(size); err != nil {\n\t\t\tt.closeStream(s, true, http2.ErrCodeFlowControl, false)\n\t\t\treturn\n\t\t}\n\t\tdataLen := f.data.Len()\n\t\tif f.Header().Flags.Has(http2.FlagDataPadded) {\n\t\t\tif w := s.fc.onRead(size - uint32(dataLen)); w > 0 {\n\t\t\t\tt.controlBuf.put(&outgoingWindowUpdate{s.id, w})\n\t\t\t}\n\t\t}\n\t\tif dataLen > 0 {\n\t\t\tf.data.Ref()\n\t\t\ts.write(recvMsg{buffer: f.data})\n\t\t}\n\t}\n\tif f.StreamEnded() {\n\t\t// Received the end of stream from the client.\n\t\ts.compareAndSwapState(streamActive, streamReadDone)\n\t\ts.write(recvMsg{err: io.EOF})\n\t}\n}\n\nfunc (t *http2Server) handleRSTStream(f *http2.RSTStreamFrame) {\n\t// If the stream is not deleted from the transport's active streams map, then do a regular close stream.\n\tif s, ok := t.getStream(f); ok {\n\t\tt.closeStream(s, false, 0, false)\n\t\treturn\n\t}\n\t// If the stream is already deleted from the active streams map, then put a cleanupStream item into controlbuf to delete the stream from loopy writer's established streams map.\n\tt.controlBuf.put(&cleanupStream{\n\t\tstreamID: f.Header().StreamID,\n\t\trst:      false,\n\t\trstCode:  0,\n\t\tonWrite:  func() {},\n\t})\n}\n\nfunc (t *http2Server) handleSettings(f *http2.SettingsFrame) {\n\tif f.IsAck() {\n\t\treturn\n\t}\n\tvar ss []http2.Setting\n\tvar updateFuncs []func()\n\tf.ForeachSetting(func(s http2.Setting) error {\n\t\tswitch s.ID {\n\t\tcase http2.SettingMaxHeaderListSize:\n\t\t\tupdateFuncs = append(updateFuncs, func() {\n\t\t\t\tt.maxSendHeaderListSize = new(uint32)\n\t\t\t\t*t.maxSendHeaderListSize = s.Val\n\t\t\t})\n\t\tdefault:\n\t\t\tss = append(ss, s)\n\t\t}\n\t\treturn nil\n\t})\n\tt.controlBuf.executeAndPut(func() bool {\n\t\tfor _, f := range updateFuncs {\n\t\t\tf()\n\t\t}\n\t\treturn true\n\t}, &incomingSettings{\n\t\tss: ss,\n\t})\n}\n\nconst (\n\tmaxPingStrikes     = 2\n\tdefaultPingTimeout = 2 * time.Hour\n)\n\nfunc (t *http2Server) handlePing(f *http2.PingFrame) {\n\tif f.IsAck() {\n\t\tif f.Data == goAwayPing.data && t.drainEvent != nil {\n\t\t\tt.drainEvent.Fire()\n\t\t\treturn\n\t\t}\n\t\t// Maybe it's a BDP ping.\n\t\tif t.bdpEst != nil {\n\t\t\tt.bdpEst.calculate(f.Data)\n\t\t}\n\t\treturn\n\t}\n\tpingAck := &ping{ack: true}\n\tcopy(pingAck.data[:], f.Data[:])\n\tt.controlBuf.put(pingAck)\n\n\tnow := time.Now()\n\tdefer func() {\n\t\tt.lastPingAt = now\n\t}()\n\t// A reset ping strikes means that we don't need to check for policy\n\t// violation for this ping and the pingStrikes counter should be set\n\t// to 0.\n\tif atomic.CompareAndSwapUint32(&t.resetPingStrikes, 1, 0) {\n\t\tt.pingStrikes = 0\n\t\treturn\n\t}\n\tt.mu.Lock()\n\tns := len(t.activeStreams)\n\tt.mu.Unlock()\n\tif ns < 1 && !t.kep.PermitWithoutStream {\n\t\t// Keepalive shouldn't be active thus, this new ping should\n\t\t// have come after at least defaultPingTimeout.\n\t\tif t.lastPingAt.Add(defaultPingTimeout).After(now) {\n\t\t\tt.pingStrikes++\n\t\t}\n\t} else {\n\t\t// Check if keepalive policy is respected.\n\t\tif t.lastPingAt.Add(t.kep.MinTime).After(now) {\n\t\t\tt.pingStrikes++\n\t\t}\n\t}\n\n\tif t.pingStrikes > maxPingStrikes {\n\t\t// Send goaway and close the connection.\n\t\tt.controlBuf.put(&goAway{code: http2.ErrCodeEnhanceYourCalm, debugData: []byte(\"too_many_pings\"), closeConn: errors.New(\"got too many pings from the client\")})\n\t}\n}\n\nfunc (t *http2Server) handleWindowUpdate(f *http2.WindowUpdateFrame) {\n\tt.controlBuf.put(&incomingWindowUpdate{\n\t\tstreamID:  f.Header().StreamID,\n\t\tincrement: f.Increment,\n\t})\n}\n\nfunc appendHeaderFieldsFromMD(headerFields []hpack.HeaderField, md metadata.MD) []hpack.HeaderField {\n\tfor k, vv := range md {\n\t\tif isReservedHeader(k) {\n\t\t\t// Clients don't tolerate reading restricted headers after some non restricted ones were sent.\n\t\t\tcontinue\n\t\t}\n\t\tfor _, v := range vv {\n\t\t\theaderFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)})\n\t\t}\n\t}\n\treturn headerFields\n}\n\nfunc (t *http2Server) checkForHeaderListSize(hf []hpack.HeaderField) bool {\n\tif t.maxSendHeaderListSize == nil {\n\t\treturn true\n\t}\n\tvar sz int64\n\tfor _, f := range hf {\n\t\tsz += int64(f.Size())\n\t\tif sz > int64(*t.maxSendHeaderListSize) {\n\t\t\tif t.logger.V(logLevel) {\n\t\t\t\tt.logger.Infof(\"Header list size to send violates the maximum size (%d bytes) set by client\", *t.maxSendHeaderListSize)\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\t}\n\tif sz > int64(upcomingDefaultHeaderListSize) {\n\t\tt.logger.Warningf(\"Header list size to send (%d bytes) is larger than the upcoming default limit (%d bytes). In a future release, this will be restricted to %d bytes.\", sz, upcomingDefaultHeaderListSize, upcomingDefaultHeaderListSize)\n\t}\n\treturn true\n}\n\n// writeEarlyAbort sends an early abort response with the given HTTP status and\n// gRPC status. If the header list size exceeds the peer's limit, it sends a\n// RST_STREAM instead.\nfunc (t *http2Server) writeEarlyAbort(streamID uint32, contentSubtype string, stat *status.Status, httpStatus uint32, rst bool) {\n\thf := []hpack.HeaderField{\n\t\t{Name: \":status\", Value: strconv.Itoa(int(httpStatus))},\n\t\t{Name: \"content-type\", Value: grpcutil.ContentType(contentSubtype)},\n\t\t{Name: \"grpc-status\", Value: strconv.Itoa(int(stat.Code()))},\n\t\t{Name: \"grpc-message\", Value: encodeGrpcMessage(stat.Message())},\n\t}\n\tif p := istatus.RawStatusProto(stat); len(p.GetDetails()) > 0 {\n\t\tstBytes, err := proto.Marshal(p)\n\t\tif err != nil {\n\t\t\tt.logger.Errorf(\"Failed to marshal rpc status: %s, error: %v\", pretty.ToJSON(p), err)\n\t\t}\n\t\tif err == nil {\n\t\t\thf = append(hf, hpack.HeaderField{Name: grpcStatusDetailsBinHeader, Value: encodeBinHeader(stBytes)})\n\t\t}\n\t}\n\tsuccess, _ := t.controlBuf.executeAndPut(func() bool {\n\t\treturn t.checkForHeaderListSize(hf)\n\t}, &earlyAbortStream{\n\t\tstreamID: streamID,\n\t\trst:      rst,\n\t\thf:       hf,\n\t})\n\tif !success {\n\t\tt.controlBuf.put(&cleanupStream{\n\t\t\tstreamID: streamID,\n\t\t\trst:      true,\n\t\t\trstCode:  http2.ErrCodeInternal,\n\t\t\tonWrite:  func() {},\n\t\t})\n\t}\n}\n\nfunc (t *http2Server) streamContextErr(s *ServerStream) error {\n\tselect {\n\tcase <-t.done:\n\t\treturn ErrConnClosing\n\tdefault:\n\t}\n\treturn ContextErr(s.ctx.Err())\n}\n\n// WriteHeader sends the header metadata md back to the client.\nfunc (t *http2Server) writeHeader(s *ServerStream, md metadata.MD) error {\n\ts.hdrMu.Lock()\n\tdefer s.hdrMu.Unlock()\n\tif s.getState() == streamDone {\n\t\treturn t.streamContextErr(s)\n\t}\n\n\tif s.updateHeaderSent() {\n\t\treturn ErrIllegalHeaderWrite\n\t}\n\n\tif md.Len() > 0 {\n\t\tif s.header.Len() > 0 {\n\t\t\ts.header = metadata.Join(s.header, md)\n\t\t} else {\n\t\t\ts.header = md\n\t\t}\n\t}\n\tif err := t.writeHeaderLocked(s); err != nil {\n\t\tswitch e := err.(type) {\n\t\tcase ConnectionError:\n\t\t\treturn status.Error(codes.Unavailable, e.Desc)\n\t\tdefault:\n\t\t\treturn status.Convert(err).Err()\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (t *http2Server) writeHeaderLocked(s *ServerStream) error {\n\t// TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields\n\t// first and create a slice of that exact size.\n\theaderFields := make([]hpack.HeaderField, 0, 2) // at least :status, content-type will be there if none else.\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \":status\", Value: \"200\"})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \"content-type\", Value: grpcutil.ContentType(s.contentSubtype)})\n\tif s.sendCompress != \"\" {\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-encoding\", Value: s.sendCompress})\n\t}\n\theaderFields = appendHeaderFieldsFromMD(headerFields, s.header)\n\thf := &headerFrame{\n\t\tstreamID:  s.id,\n\t\thf:        headerFields,\n\t\tendStream: false,\n\t\tonWrite:   t.setResetPingStrikes,\n\t}\n\tsuccess, err := t.controlBuf.executeAndPut(func() bool { return t.checkForHeaderListSize(hf.hf) }, hf)\n\tif !success {\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tt.closeStream(s, true, http2.ErrCodeInternal, false)\n\t\treturn ErrHeaderListSizeLimitViolation\n\t}\n\tif t.stats != nil {\n\t\t// Note: Headers are compressed with hpack after this call returns.\n\t\t// No WireLength field is set here.\n\t\tt.stats.HandleRPC(s.Context(), &stats.OutHeader{\n\t\t\tHeader:      s.header.Copy(),\n\t\t\tCompression: s.sendCompress,\n\t\t})\n\t}\n\treturn nil\n}\n\n// writeStatus sends stream status to the client and terminates the stream.\n// There is no further I/O operations being able to perform on this stream.\n// TODO(zhaoq): Now it indicates the end of entire stream. Revisit if early\n// OK is adopted.\nfunc (t *http2Server) writeStatus(s *ServerStream, st *status.Status) error {\n\ts.hdrMu.Lock()\n\tdefer s.hdrMu.Unlock()\n\n\tif s.getState() == streamDone {\n\t\treturn nil\n\t}\n\n\t// TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields\n\t// first and create a slice of that exact size.\n\theaderFields := make([]hpack.HeaderField, 0, 2) // grpc-status and grpc-message will be there if none else.\n\tif !s.updateHeaderSent() {                      // No headers have been sent.\n\t\tif len(s.header) > 0 { // Send a separate header frame.\n\t\t\tif err := t.writeHeaderLocked(s); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else { // Send a trailer only response.\n\t\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \":status\", Value: \"200\"})\n\t\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \"content-type\", Value: grpcutil.ContentType(s.contentSubtype)})\n\t\t}\n\t}\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-status\", Value: strconv.Itoa(int(st.Code()))})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-message\", Value: encodeGrpcMessage(st.Message())})\n\n\tif p := istatus.RawStatusProto(st); len(p.GetDetails()) > 0 {\n\t\t// Do not use the user's grpc-status-details-bin (if present) if we are\n\t\t// even attempting to set our own.\n\t\tdelete(s.trailer, grpcStatusDetailsBinHeader)\n\t\tstBytes, err := proto.Marshal(p)\n\t\tif err != nil {\n\t\t\t// TODO: return error instead, when callers are able to handle it.\n\t\t\tt.logger.Errorf(\"Failed to marshal rpc status: %s, error: %v\", pretty.ToJSON(p), err)\n\t\t} else {\n\t\t\theaderFields = append(headerFields, hpack.HeaderField{Name: grpcStatusDetailsBinHeader, Value: encodeBinHeader(stBytes)})\n\t\t}\n\t}\n\n\t// Attach the trailer metadata.\n\theaderFields = appendHeaderFieldsFromMD(headerFields, s.trailer)\n\ttrailingHeader := &headerFrame{\n\t\tstreamID:  s.id,\n\t\thf:        headerFields,\n\t\tendStream: true,\n\t\tonWrite:   t.setResetPingStrikes,\n\t}\n\n\tsuccess, err := t.controlBuf.executeAndPut(func() bool {\n\t\treturn t.checkForHeaderListSize(trailingHeader.hf)\n\t}, nil)\n\tif !success {\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tt.closeStream(s, true, http2.ErrCodeInternal, false)\n\t\treturn ErrHeaderListSizeLimitViolation\n\t}\n\t// Send a RST_STREAM after the trailers if the client has not already half-closed.\n\trst := s.getState() == streamActive\n\tt.finishStream(s, rst, http2.ErrCodeNo, trailingHeader, true)\n\tif t.stats != nil {\n\t\t// Note: The trailer fields are compressed with hpack after this call returns.\n\t\t// No WireLength field is set here.\n\t\tt.stats.HandleRPC(s.Context(), &stats.OutTrailer{\n\t\t\tTrailer: s.trailer.Copy(),\n\t\t})\n\t}\n\treturn nil\n}\n\n// Write converts the data into HTTP2 data frame and sends it out. Non-nil error\n// is returns if it fails (e.g., framing error, transport error).\nfunc (t *http2Server) write(s *ServerStream, hdr []byte, data mem.BufferSlice, _ *WriteOptions) error {\n\tif !s.isHeaderSent() { // Headers haven't been written yet.\n\t\tif err := t.writeHeader(s, nil); err != nil {\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\t// Writing headers checks for this condition.\n\t\tif s.getState() == streamDone {\n\t\t\treturn t.streamContextErr(s)\n\t\t}\n\t}\n\n\tdf := &dataFrame{\n\t\tstreamID:    s.id,\n\t\th:           hdr,\n\t\tdata:        data,\n\t\tonEachWrite: t.setResetPingStrikes,\n\t}\n\tdataLen := data.Len()\n\tif err := s.wq.get(int32(len(hdr) + dataLen)); err != nil {\n\t\treturn t.streamContextErr(s)\n\t}\n\tdata.Ref()\n\tif err := t.controlBuf.put(df); err != nil {\n\t\tdata.Free()\n\t\treturn err\n\t}\n\tt.incrMsgSent()\n\treturn nil\n}\n\n// keepalive running in a separate goroutine does the following:\n// 1. Gracefully closes an idle connection after a duration of keepalive.MaxConnectionIdle.\n// 2. Gracefully closes any connection after a duration of keepalive.MaxConnectionAge.\n// 3. Forcibly closes a connection after an additive period of keepalive.MaxConnectionAgeGrace over keepalive.MaxConnectionAge.\n// 4. Makes sure a connection is alive by sending pings with a frequency of keepalive.Time and closes a non-responsive connection\n// after an additional duration of keepalive.Timeout.\nfunc (t *http2Server) keepalive() {\n\tp := &ping{}\n\t// True iff a ping has been sent, and no data has been received since then.\n\toutstandingPing := false\n\t// Amount of time remaining before which we should receive an ACK for the\n\t// last sent ping.\n\tkpTimeoutLeft := time.Duration(0)\n\t// Records the last value of t.lastRead before we go block on the timer.\n\t// This is required to check for read activity since then.\n\tprevNano := time.Now().UnixNano()\n\t// Initialize the different timers to their default values.\n\tidleTimer := time.NewTimer(t.kp.MaxConnectionIdle)\n\tageTimer := time.NewTimer(t.kp.MaxConnectionAge)\n\tkpTimer := time.NewTimer(t.kp.Time)\n\tdefer func() {\n\t\t// We need to drain the underlying channel in these timers after a call\n\t\t// to Stop(), only if we are interested in resetting them. Clearly we\n\t\t// are not interested in resetting them here.\n\t\tidleTimer.Stop()\n\t\tageTimer.Stop()\n\t\tkpTimer.Stop()\n\t}()\n\n\tfor {\n\t\tselect {\n\t\tcase <-idleTimer.C:\n\t\t\tt.mu.Lock()\n\t\t\tidle := t.idle\n\t\t\tif idle.IsZero() { // The connection is non-idle.\n\t\t\t\tt.mu.Unlock()\n\t\t\t\tidleTimer.Reset(t.kp.MaxConnectionIdle)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tval := t.kp.MaxConnectionIdle - time.Since(idle)\n\t\t\tt.mu.Unlock()\n\t\t\tif val <= 0 {\n\t\t\t\t// The connection has been idle for a duration of keepalive.MaxConnectionIdle or more.\n\t\t\t\t// Gracefully close the connection.\n\t\t\t\tt.Drain(\"max_idle\")\n\t\t\t\treturn\n\t\t\t}\n\t\t\tidleTimer.Reset(val)\n\t\tcase <-ageTimer.C:\n\t\t\tt.Drain(\"max_age\")\n\t\t\tageTimer.Reset(t.kp.MaxConnectionAgeGrace)\n\t\t\tselect {\n\t\t\tcase <-ageTimer.C:\n\t\t\t\t// Close the connection after grace period.\n\t\t\t\tif t.logger.V(logLevel) {\n\t\t\t\t\tt.logger.Infof(\"Closing server transport due to maximum connection age\")\n\t\t\t\t}\n\t\t\t\tt.controlBuf.put(closeConnection{})\n\t\t\tcase <-t.done:\n\t\t\t}\n\t\t\treturn\n\t\tcase <-kpTimer.C:\n\t\t\tlastRead := atomic.LoadInt64(&t.lastRead)\n\t\t\tif lastRead > prevNano {\n\t\t\t\t// There has been read activity since the last time we were\n\t\t\t\t// here. Setup the timer to fire at kp.Time seconds from\n\t\t\t\t// lastRead time and continue.\n\t\t\t\toutstandingPing = false\n\t\t\t\tkpTimer.Reset(time.Duration(lastRead) + t.kp.Time - time.Duration(time.Now().UnixNano()))\n\t\t\t\tprevNano = lastRead\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif outstandingPing && kpTimeoutLeft <= 0 {\n\t\t\t\tt.Close(fmt.Errorf(\"keepalive ping not acked within timeout %s\", t.kp.Timeout))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif !outstandingPing {\n\t\t\t\tif channelz.IsOn() {\n\t\t\t\t\tt.channelz.SocketMetrics.KeepAlivesSent.Add(1)\n\t\t\t\t}\n\t\t\t\tt.controlBuf.put(p)\n\t\t\t\tkpTimeoutLeft = t.kp.Timeout\n\t\t\t\toutstandingPing = true\n\t\t\t}\n\t\t\t// The amount of time to sleep here is the minimum of kp.Time and\n\t\t\t// timeoutLeft. This will ensure that we wait only for kp.Time\n\t\t\t// before sending out the next ping (for cases where the ping is\n\t\t\t// acked).\n\t\t\tsleepDuration := min(t.kp.Time, kpTimeoutLeft)\n\t\t\tkpTimeoutLeft -= sleepDuration\n\t\t\tkpTimer.Reset(sleepDuration)\n\t\tcase <-t.done:\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Close starts shutting down the http2Server transport.\n// TODO(zhaoq): Now the destruction is not blocked on any pending streams. This\n// could cause some resource issue. Revisit this later.\nfunc (t *http2Server) Close(err error) {\n\tt.mu.Lock()\n\tif t.state == closing {\n\t\tt.mu.Unlock()\n\t\treturn\n\t}\n\tif t.logger.V(logLevel) {\n\t\tt.logger.Infof(\"Closing: %v\", err)\n\t}\n\tt.state = closing\n\tstreams := t.activeStreams\n\tt.activeStreams = nil\n\tt.mu.Unlock()\n\tt.controlBuf.finish()\n\tclose(t.done)\n\tif err := t.conn.Close(); err != nil && t.logger.V(logLevel) {\n\t\tt.logger.Infof(\"Error closing underlying net.Conn during Close: %v\", err)\n\t}\n\tchannelz.RemoveEntry(t.channelz.ID)\n\t// Cancel all active streams.\n\tfor _, s := range streams {\n\t\ts.cancel()\n\t}\n}\n\n// deleteStream deletes the stream s from transport's active streams.\nfunc (t *http2Server) deleteStream(s *ServerStream, eosReceived bool) {\n\tt.mu.Lock()\n\t_, isActive := t.activeStreams[s.id]\n\tif isActive {\n\t\tdelete(t.activeStreams, s.id)\n\t\tif len(t.activeStreams) == 0 {\n\t\t\tt.idle = time.Now()\n\t\t}\n\t}\n\tt.mu.Unlock()\n\n\tif isActive && channelz.IsOn() {\n\t\tif eosReceived {\n\t\t\tt.channelz.SocketMetrics.StreamsSucceeded.Add(1)\n\t\t} else {\n\t\t\tt.channelz.SocketMetrics.StreamsFailed.Add(1)\n\t\t}\n\t}\n}\n\n// finishStream closes the stream and puts the trailing headerFrame into controlbuf.\nfunc (t *http2Server) finishStream(s *ServerStream, rst bool, rstCode http2.ErrCode, hdr *headerFrame, eosReceived bool) {\n\t// In case stream sending and receiving are invoked in separate\n\t// goroutines (e.g., bi-directional streaming), cancel needs to be\n\t// called to interrupt the potential blocking on other goroutines.\n\ts.cancel()\n\n\toldState := s.swapState(streamDone)\n\tif oldState == streamDone {\n\t\t// If the stream was already done, return.\n\t\treturn\n\t}\n\n\thdr.cleanup = &cleanupStream{\n\t\tstreamID: s.id,\n\t\trst:      rst,\n\t\trstCode:  rstCode,\n\t\tonWrite: func() {\n\t\t\tt.deleteStream(s, eosReceived)\n\t\t},\n\t}\n\tt.controlBuf.put(hdr)\n}\n\n// closeStream clears the footprint of a stream when the stream is not needed any more.\nfunc (t *http2Server) closeStream(s *ServerStream, rst bool, rstCode http2.ErrCode, eosReceived bool) {\n\t// In case stream sending and receiving are invoked in separate\n\t// goroutines (e.g., bi-directional streaming), cancel needs to be\n\t// called to interrupt the potential blocking on other goroutines.\n\ts.cancel()\n\n\t// We can't return early even if the stream's state is \"done\" as the state\n\t// might have been set by the `finishStream` method. Deleting the stream via\n\t// `finishStream` can get blocked on flow control.\n\ts.swapState(streamDone)\n\tt.deleteStream(s, eosReceived)\n\n\tt.controlBuf.put(&cleanupStream{\n\t\tstreamID: s.id,\n\t\trst:      rst,\n\t\trstCode:  rstCode,\n\t\tonWrite:  func() {},\n\t})\n}\n\nfunc (t *http2Server) Drain(debugData string) {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\tif t.drainEvent != nil {\n\t\treturn\n\t}\n\tt.drainEvent = grpcsync.NewEvent()\n\tt.controlBuf.put(&goAway{code: http2.ErrCodeNo, debugData: []byte(debugData), headsUp: true})\n}\n\nvar goAwayPing = &ping{data: [8]byte{1, 6, 1, 8, 0, 3, 3, 9}}\n\n// Handles outgoing GoAway and returns true if loopy needs to put itself\n// in draining mode.\nfunc (t *http2Server) outgoingGoAwayHandler(g *goAway) (bool, error) {\n\tt.maxStreamMu.Lock()\n\tt.mu.Lock()\n\tif t.state == closing { // TODO(mmukhi): This seems unnecessary.\n\t\tt.mu.Unlock()\n\t\tt.maxStreamMu.Unlock()\n\t\t// The transport is closing.\n\t\treturn false, ErrConnClosing\n\t}\n\tif !g.headsUp {\n\t\t// Stop accepting more streams now.\n\t\tt.state = draining\n\t\tsid := t.maxStreamID\n\t\tretErr := g.closeConn\n\t\tif len(t.activeStreams) == 0 {\n\t\t\tretErr = errors.New(\"second GOAWAY written and no active streams left to process\")\n\t\t}\n\t\tt.mu.Unlock()\n\t\tt.maxStreamMu.Unlock()\n\t\tif err := t.framer.fr.WriteGoAway(sid, g.code, g.debugData); err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tt.framer.writer.Flush()\n\t\tif retErr != nil {\n\t\t\treturn false, retErr\n\t\t}\n\t\treturn true, nil\n\t}\n\tt.mu.Unlock()\n\tt.maxStreamMu.Unlock()\n\t// For a graceful close, send out a GoAway with stream ID of MaxUInt32,\n\t// Follow that with a ping and wait for the ack to come back or a timer\n\t// to expire. During this time accept new streams since they might have\n\t// originated before the GoAway reaches the client.\n\t// After getting the ack or timer expiration send out another GoAway this\n\t// time with an ID of the max stream server intends to process.\n\tif err := t.framer.fr.WriteGoAway(math.MaxUint32, http2.ErrCodeNo, g.debugData); err != nil {\n\t\treturn false, err\n\t}\n\tif err := t.framer.fr.WritePing(false, goAwayPing.data); err != nil {\n\t\treturn false, err\n\t}\n\tgo func() {\n\t\ttimer := time.NewTimer(5 * time.Second)\n\t\tdefer timer.Stop()\n\t\tselect {\n\t\tcase <-t.drainEvent.Done():\n\t\tcase <-timer.C:\n\t\tcase <-t.done:\n\t\t\treturn\n\t\t}\n\t\tt.controlBuf.put(&goAway{code: g.code, debugData: g.debugData})\n\t}()\n\treturn false, nil\n}\n\nfunc (t *http2Server) socketMetrics() *channelz.EphemeralSocketMetrics {\n\treturn &channelz.EphemeralSocketMetrics{\n\t\tLocalFlowControlWindow:  int64(t.fc.getSize()),\n\t\tRemoteFlowControlWindow: t.getOutFlowWindow(),\n\t}\n}\n\nfunc (t *http2Server) incrMsgSent() {\n\tif channelz.IsOn() {\n\t\tt.channelz.SocketMetrics.MessagesSent.Add(1)\n\t\tt.channelz.SocketMetrics.LastMessageSentTimestamp.Add(1)\n\t}\n}\n\nfunc (t *http2Server) incrMsgRecv() {\n\tif channelz.IsOn() {\n\t\tt.channelz.SocketMetrics.MessagesReceived.Add(1)\n\t\tt.channelz.SocketMetrics.LastMessageReceivedTimestamp.Add(1)\n\t}\n}\n\nfunc (t *http2Server) getOutFlowWindow() int64 {\n\tresp := make(chan uint32, 1)\n\ttimer := time.NewTimer(time.Second)\n\tdefer timer.Stop()\n\tt.controlBuf.put(&outFlowControlSizeRequest{resp})\n\tselect {\n\tcase sz := <-resp:\n\t\treturn int64(sz)\n\tcase <-t.done:\n\t\treturn -1\n\tcase <-timer.C:\n\t\treturn -2\n\t}\n}\n\n// Peer returns the peer of the transport.\nfunc (t *http2Server) Peer() *peer.Peer {\n\treturn &peer.Peer{\n\t\tAddr:      t.peer.Addr,\n\t\tLocalAddr: t.peer.LocalAddr,\n\t\tAuthInfo:  t.peer.AuthInfo, // Can be nil\n\t}\n}\n\nfunc getJitter(v time.Duration) time.Duration {\n\tif v == infinity {\n\t\treturn 0\n\t}\n\t// Generate a jitter between +/- 10% of the value.\n\tr := int64(v / 10)\n\tj := rand.Int64N(2*r) - r\n\treturn time.Duration(j)\n}\n\ntype connectionKey struct{}\n\n// GetConnection gets the connection from the context.\nfunc GetConnection(ctx context.Context) net.Conn {\n\tconn, _ := ctx.Value(connectionKey{}).(net.Conn)\n\treturn conn\n}\n\n// SetConnection adds the connection to the context to be able to get\n// information about the destination ip and port for an incoming RPC. This also\n// allows any unary or streaming interceptors to see the connection.\nfunc SetConnection(ctx context.Context, conn net.Conn) context.Context {\n\treturn context.WithValue(ctx, connectionKey{}, conn)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/http_util.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"bufio\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/net/http2\"\n\t\"golang.org/x/net/http2/hpack\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/internal/envconfig\"\n\timem \"google.golang.org/grpc/internal/mem\"\n\t\"google.golang.org/grpc/internal/transport/readyreader\"\n\t\"google.golang.org/grpc/mem\"\n)\n\nconst (\n\t// http2MaxFrameLen specifies the max length of a HTTP2 frame.\n\thttp2MaxFrameLen = 16384 // 16KB frame\n\t// https://httpwg.org/specs/rfc7540.html#SettingValues\n\thttp2InitHeaderTableSize = 4096\n)\n\nvar (\n\tclientPreface   = []byte(http2.ClientPreface)\n\thttp2ErrConvTab = map[http2.ErrCode]codes.Code{\n\t\thttp2.ErrCodeNo:                 codes.Internal,\n\t\thttp2.ErrCodeProtocol:           codes.Internal,\n\t\thttp2.ErrCodeInternal:           codes.Internal,\n\t\thttp2.ErrCodeFlowControl:        codes.ResourceExhausted,\n\t\thttp2.ErrCodeSettingsTimeout:    codes.Internal,\n\t\thttp2.ErrCodeStreamClosed:       codes.Internal,\n\t\thttp2.ErrCodeFrameSize:          codes.Internal,\n\t\thttp2.ErrCodeRefusedStream:      codes.Unavailable,\n\t\thttp2.ErrCodeCancel:             codes.Canceled,\n\t\thttp2.ErrCodeCompression:        codes.Internal,\n\t\thttp2.ErrCodeConnect:            codes.Internal,\n\t\thttp2.ErrCodeEnhanceYourCalm:    codes.ResourceExhausted,\n\t\thttp2.ErrCodeInadequateSecurity: codes.PermissionDenied,\n\t\thttp2.ErrCodeHTTP11Required:     codes.Internal,\n\t}\n\t// HTTPStatusConvTab is the HTTP status code to gRPC error code conversion table.\n\tHTTPStatusConvTab = map[int]codes.Code{\n\t\t// 400 Bad Request - INTERNAL.\n\t\thttp.StatusBadRequest: codes.Internal,\n\t\t// 401 Unauthorized  - UNAUTHENTICATED.\n\t\thttp.StatusUnauthorized: codes.Unauthenticated,\n\t\t// 403 Forbidden - PERMISSION_DENIED.\n\t\thttp.StatusForbidden: codes.PermissionDenied,\n\t\t// 404 Not Found - UNIMPLEMENTED.\n\t\thttp.StatusNotFound: codes.Unimplemented,\n\t\t// 429 Too Many Requests - UNAVAILABLE.\n\t\thttp.StatusTooManyRequests: codes.Unavailable,\n\t\t// 502 Bad Gateway - UNAVAILABLE.\n\t\thttp.StatusBadGateway: codes.Unavailable,\n\t\t// 503 Service Unavailable - UNAVAILABLE.\n\t\thttp.StatusServiceUnavailable: codes.Unavailable,\n\t\t// 504 Gateway timeout - UNAVAILABLE.\n\t\thttp.StatusGatewayTimeout: codes.Unavailable,\n\t}\n)\n\nvar grpcStatusDetailsBinHeader = \"grpc-status-details-bin\"\n\n// isReservedHeader checks whether hdr belongs to HTTP2 headers\n// reserved by gRPC protocol. Any other headers are classified as the\n// user-specified metadata.\nfunc isReservedHeader(hdr string) bool {\n\tif hdr != \"\" && hdr[0] == ':' {\n\t\treturn true\n\t}\n\tswitch hdr {\n\tcase \"content-type\",\n\t\t\"user-agent\",\n\t\t\"grpc-message-type\",\n\t\t\"grpc-encoding\",\n\t\t\"grpc-message\",\n\t\t\"grpc-status\",\n\t\t\"grpc-timeout\",\n\t\t// Intentionally exclude grpc-previous-rpc-attempts and\n\t\t// grpc-retry-pushback-ms, which are \"reserved\", but their API\n\t\t// intentionally works via metadata.\n\t\t\"te\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// isWhitelistedHeader checks whether hdr should be propagated into metadata\n// visible to users, even though it is classified as \"reserved\", above.\nfunc isWhitelistedHeader(hdr string) bool {\n\tswitch hdr {\n\tcase \":authority\", \"user-agent\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nconst binHdrSuffix = \"-bin\"\n\nfunc encodeBinHeader(v []byte) string {\n\treturn base64.RawStdEncoding.EncodeToString(v)\n}\n\nfunc decodeBinHeader(v string) ([]byte, error) {\n\tif len(v)%4 == 0 {\n\t\t// Input was padded, or padding was not necessary.\n\t\treturn base64.StdEncoding.DecodeString(v)\n\t}\n\treturn base64.RawStdEncoding.DecodeString(v)\n}\n\nfunc encodeMetadataHeader(k, v string) string {\n\tif strings.HasSuffix(k, binHdrSuffix) {\n\t\treturn encodeBinHeader(([]byte)(v))\n\t}\n\treturn v\n}\n\nfunc decodeMetadataHeader(k, v string) (string, error) {\n\tif strings.HasSuffix(k, binHdrSuffix) {\n\t\tb, err := decodeBinHeader(v)\n\t\treturn string(b), err\n\t}\n\treturn v, nil\n}\n\ntype timeoutUnit uint8\n\nconst (\n\thour        timeoutUnit = 'H'\n\tminute      timeoutUnit = 'M'\n\tsecond      timeoutUnit = 'S'\n\tmillisecond timeoutUnit = 'm'\n\tmicrosecond timeoutUnit = 'u'\n\tnanosecond  timeoutUnit = 'n'\n)\n\nfunc timeoutUnitToDuration(u timeoutUnit) (d time.Duration, ok bool) {\n\tswitch u {\n\tcase hour:\n\t\treturn time.Hour, true\n\tcase minute:\n\t\treturn time.Minute, true\n\tcase second:\n\t\treturn time.Second, true\n\tcase millisecond:\n\t\treturn time.Millisecond, true\n\tcase microsecond:\n\t\treturn time.Microsecond, true\n\tcase nanosecond:\n\t\treturn time.Nanosecond, true\n\tdefault:\n\t}\n\treturn\n}\n\nfunc decodeTimeout(s string) (time.Duration, error) {\n\tsize := len(s)\n\tif size < 2 {\n\t\treturn 0, fmt.Errorf(\"transport: timeout string is too short: %q\", s)\n\t}\n\tif size > 9 {\n\t\t// Spec allows for 8 digits plus the unit.\n\t\treturn 0, fmt.Errorf(\"transport: timeout string is too long: %q\", s)\n\t}\n\tunit := timeoutUnit(s[size-1])\n\td, ok := timeoutUnitToDuration(unit)\n\tif !ok {\n\t\treturn 0, fmt.Errorf(\"transport: timeout unit is not recognized: %q\", s)\n\t}\n\tt, err := strconv.ParseUint(s[:size-1], 10, 64)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tconst maxHours = math.MaxInt64 / uint64(time.Hour)\n\tif d == time.Hour && t > maxHours {\n\t\t// This timeout would overflow math.MaxInt64; clamp it.\n\t\treturn time.Duration(math.MaxInt64), nil\n\t}\n\treturn d * time.Duration(t), nil\n}\n\nconst (\n\tspaceByte   = ' '\n\ttildeByte   = '~'\n\tpercentByte = '%'\n)\n\n// encodeGrpcMessage is used to encode status code in header field\n// \"grpc-message\". It does percent encoding and also replaces invalid utf-8\n// characters with Unicode replacement character.\n//\n// It checks to see if each individual byte in msg is an allowable byte, and\n// then either percent encoding or passing it through. When percent encoding,\n// the byte is converted into hexadecimal notation with a '%' prepended.\nfunc encodeGrpcMessage(msg string) string {\n\tif msg == \"\" {\n\t\treturn \"\"\n\t}\n\tlenMsg := len(msg)\n\tfor i := 0; i < lenMsg; i++ {\n\t\tc := msg[i]\n\t\tif !(c >= spaceByte && c <= tildeByte && c != percentByte) {\n\t\t\treturn encodeGrpcMessageUnchecked(msg)\n\t\t}\n\t}\n\treturn msg\n}\n\nfunc encodeGrpcMessageUnchecked(msg string) string {\n\tvar sb strings.Builder\n\tfor len(msg) > 0 {\n\t\tr, size := utf8.DecodeRuneInString(msg)\n\t\tfor _, b := range []byte(string(r)) {\n\t\t\tif size > 1 {\n\t\t\t\t// If size > 1, r is not ascii. Always do percent encoding.\n\t\t\t\tfmt.Fprintf(&sb, \"%%%02X\", b)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// The for loop is necessary even if size == 1. r could be\n\t\t\t// utf8.RuneError.\n\t\t\t//\n\t\t\t// fmt.Sprintf(\"%%%02X\", utf8.RuneError) gives \"%FFFD\".\n\t\t\tif b >= spaceByte && b <= tildeByte && b != percentByte {\n\t\t\t\tsb.WriteByte(b)\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(&sb, \"%%%02X\", b)\n\t\t\t}\n\t\t}\n\t\tmsg = msg[size:]\n\t}\n\treturn sb.String()\n}\n\n// decodeGrpcMessage decodes the msg encoded by encodeGrpcMessage.\nfunc decodeGrpcMessage(msg string) string {\n\tif msg == \"\" {\n\t\treturn \"\"\n\t}\n\tlenMsg := len(msg)\n\tfor i := 0; i < lenMsg; i++ {\n\t\tif msg[i] == percentByte && i+2 < lenMsg {\n\t\t\treturn decodeGrpcMessageUnchecked(msg)\n\t\t}\n\t}\n\treturn msg\n}\n\nfunc decodeGrpcMessageUnchecked(msg string) string {\n\tvar sb strings.Builder\n\tlenMsg := len(msg)\n\tfor i := 0; i < lenMsg; i++ {\n\t\tc := msg[i]\n\t\tif c == percentByte && i+2 < lenMsg {\n\t\t\tparsed, err := strconv.ParseUint(msg[i+1:i+3], 16, 8)\n\t\t\tif err != nil {\n\t\t\t\tsb.WriteByte(c)\n\t\t\t} else {\n\t\t\t\tsb.WriteByte(byte(parsed))\n\t\t\t\ti += 2\n\t\t\t}\n\t\t} else {\n\t\t\tsb.WriteByte(c)\n\t\t}\n\t}\n\treturn sb.String()\n}\n\ntype bufWriter struct {\n\tpool      *imem.SimpleBufferPool\n\tbuf       []byte\n\toffset    int\n\tbatchSize int\n\tconn      io.Writer\n\terr       error\n}\n\nfunc newBufWriter(conn io.Writer, batchSize int, pool *imem.SimpleBufferPool) *bufWriter {\n\tw := &bufWriter{\n\t\tbatchSize: batchSize,\n\t\tconn:      conn,\n\t\tpool:      pool,\n\t}\n\t// this indicates that we should use non shared buf\n\tif pool == nil {\n\t\tw.buf = make([]byte, batchSize)\n\t}\n\treturn w\n}\n\nfunc (w *bufWriter) Write(b []byte) (int, error) {\n\tif w.err != nil {\n\t\treturn 0, w.err\n\t}\n\tif w.batchSize == 0 { // Buffer has been disabled.\n\t\tn, err := w.conn.Write(b)\n\t\treturn n, toIOError(err)\n\t}\n\tif w.buf == nil {\n\t\tb := w.pool.Get(w.batchSize)\n\t\tw.buf = *b\n\t}\n\twritten := 0\n\tfor len(b) > 0 {\n\t\tcopied := copy(w.buf[w.offset:], b)\n\t\tb = b[copied:]\n\t\twritten += copied\n\t\tw.offset += copied\n\t\tif w.offset < w.batchSize {\n\t\t\tcontinue\n\t\t}\n\t\tif err := w.flushKeepBuffer(); err != nil {\n\t\t\treturn written, err\n\t\t}\n\t}\n\treturn written, nil\n}\n\nfunc (w *bufWriter) Flush() error {\n\terr := w.flushKeepBuffer()\n\t// Only release the buffer if we are in a \"shared\" mode\n\tif w.buf != nil && w.pool != nil {\n\t\tb := w.buf\n\t\tw.pool.Put(&b)\n\t\tw.buf = nil\n\t}\n\treturn err\n}\n\nfunc (w *bufWriter) flushKeepBuffer() error {\n\tif w.err != nil {\n\t\treturn w.err\n\t}\n\tif w.offset == 0 {\n\t\treturn nil\n\t}\n\t_, w.err = w.conn.Write(w.buf[:w.offset])\n\tw.err = toIOError(w.err)\n\tw.offset = 0\n\treturn w.err\n}\n\ntype ioError struct {\n\terror\n}\n\nfunc (i ioError) Unwrap() error {\n\treturn i.error\n}\n\nfunc isIOError(err error) bool {\n\treturn errors.As(err, &ioError{})\n}\n\nfunc toIOError(err error) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\treturn ioError{error: err}\n}\n\ntype parsedDataFrame struct {\n\thttp2.FrameHeader\n\tdata mem.Buffer\n}\n\nfunc (df *parsedDataFrame) StreamEnded() bool {\n\treturn df.FrameHeader.Flags.Has(http2.FlagDataEndStream)\n}\n\ntype framer struct {\n\twriter    *bufWriter\n\tfr        *http2.Framer\n\theaderBuf []byte // cached slice for framer headers to reduce heap allocs.\n\treader    io.Reader\n\tdataFrame parsedDataFrame // Cached data frame to avoid heap allocations.\n\tpool      mem.BufferPool\n\terrDetail error\n}\n\nvar ioBufferPoolMap = make(map[int]*imem.SimpleBufferPool)\nvar ioBufferMutex sync.Mutex\n\nfunc bufferedReader(r io.Reader, bufSize int) io.Reader {\n\tif bufSize <= 0 {\n\t\treturn r\n\t}\n\tif envconfig.EnableHTTPFramerReadBufferPooling {\n\t\tif rr := readyreader.NewNonBlocking(r); rr != nil {\n\t\t\treadPool := ioBufferPool(bufSize)\n\t\t\treturn readyreader.NewBuffered(rr, bufSize, readPool)\n\t\t}\n\t}\n\treturn bufio.NewReaderSize(r, bufSize)\n}\n\nfunc newFramer(conn io.ReadWriter, writeBufferSize, readBufferSize int, sharedWriteBuffer bool, maxHeaderListSize uint32, memPool mem.BufferPool) *framer {\n\tif writeBufferSize < 0 {\n\t\twriteBufferSize = 0\n\t}\n\tr := bufferedReader(conn, readBufferSize)\n\tvar writePool *imem.SimpleBufferPool\n\tif sharedWriteBuffer {\n\t\twritePool = ioBufferPool(writeBufferSize)\n\t}\n\tw := newBufWriter(conn, writeBufferSize, writePool)\n\tf := &framer{\n\t\twriter: w,\n\t\tfr:     http2.NewFramer(w, r),\n\t\treader: r,\n\t\tpool:   memPool,\n\t}\n\tf.fr.SetMaxReadFrameSize(http2MaxFrameLen)\n\t// Opt-in to Frame reuse API on framer to reduce garbage.\n\t// Frames aren't safe to read from after a subsequent call to ReadFrame.\n\tf.fr.SetReuseFrames()\n\tf.fr.MaxHeaderListSize = maxHeaderListSize\n\tf.fr.ReadMetaHeaders = hpack.NewDecoder(http2InitHeaderTableSize, nil)\n\treturn f\n}\n\n// writeData writes a DATA frame.\n//\n// It is the caller's responsibility not to violate the maximum frame size.\nfunc (f *framer) writeData(streamID uint32, endStream bool, data [][]byte) error {\n\tvar flags http2.Flags\n\tif endStream {\n\t\tflags = http2.FlagDataEndStream\n\t}\n\tlength := uint32(0)\n\tfor _, d := range data {\n\t\tlength += uint32(len(d))\n\t}\n\t// TODO: Replace the header write with the framer API being added in\n\t// https://github.com/golang/go/issues/66655.\n\tf.headerBuf = append(f.headerBuf[:0],\n\t\tbyte(length>>16),\n\t\tbyte(length>>8),\n\t\tbyte(length),\n\t\tbyte(http2.FrameData),\n\t\tbyte(flags),\n\t\tbyte(streamID>>24),\n\t\tbyte(streamID>>16),\n\t\tbyte(streamID>>8),\n\t\tbyte(streamID))\n\tif _, err := f.writer.Write(f.headerBuf); err != nil {\n\t\treturn err\n\t}\n\tfor _, d := range data {\n\t\tif _, err := f.writer.Write(d); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// readFrame reads a single frame. The returned Frame is only valid\n// until the next call to readFrame.\nfunc (f *framer) readFrame() (any, error) {\n\tf.errDetail = nil\n\tfh, err := f.fr.ReadFrameHeader()\n\tif err != nil {\n\t\tf.errDetail = f.fr.ErrorDetail()\n\t\treturn nil, err\n\t}\n\t// Read the data frame directly from the underlying io.Reader to avoid\n\t// copies.\n\tif fh.Type == http2.FrameData {\n\t\terr = f.readDataFrame(fh)\n\t\treturn &f.dataFrame, err\n\t}\n\tfr, err := f.fr.ReadFrameForHeader(fh)\n\tif err != nil {\n\t\tf.errDetail = f.fr.ErrorDetail()\n\t\treturn nil, err\n\t}\n\treturn fr, err\n}\n\n// errorDetail returns a more detailed error of the last error\n// returned by framer.readFrame. For instance, if readFrame\n// returns a StreamError with code PROTOCOL_ERROR, errorDetail\n// will say exactly what was invalid. errorDetail is not guaranteed\n// to return a non-nil value.\n// errorDetail is reset after the next call to readFrame.\nfunc (f *framer) errorDetail() error {\n\treturn f.errDetail\n}\n\nfunc (f *framer) readDataFrame(fh http2.FrameHeader) (err error) {\n\tif fh.StreamID == 0 {\n\t\t// DATA frames MUST be associated with a stream. If a\n\t\t// DATA frame is received whose stream identifier\n\t\t// field is 0x0, the recipient MUST respond with a\n\t\t// connection error (Section 5.4.1) of type\n\t\t// PROTOCOL_ERROR.\n\t\tf.errDetail = errors.New(\"DATA frame with stream ID 0\")\n\t\treturn http2.ConnectionError(http2.ErrCodeProtocol)\n\t}\n\t// Converting a *[]byte to a mem.SliceBuffer incurs a heap allocation. This\n\t// conversion is performed by mem.NewBuffer. To avoid the extra allocation\n\t// a []byte is allocated directly if required and cast to a mem.SliceBuffer.\n\tvar buf []byte\n\t// poolHandle is the pointer returned by the buffer pool (if it's used.).\n\tvar poolHandle *[]byte\n\tuseBufferPool := !mem.IsBelowBufferPoolingThreshold(int(fh.Length))\n\tif useBufferPool {\n\t\tpoolHandle = f.pool.Get(int(fh.Length))\n\t\tbuf = *poolHandle\n\t\tdefer func() {\n\t\t\tif err != nil {\n\t\t\t\tf.pool.Put(poolHandle)\n\t\t\t}\n\t\t}()\n\t} else {\n\t\tbuf = make([]byte, int(fh.Length))\n\t}\n\tif fh.Flags.Has(http2.FlagDataPadded) {\n\t\tif fh.Length == 0 {\n\t\t\treturn io.ErrUnexpectedEOF\n\t\t}\n\t\t// This initial 1-byte read can be inefficient for unbuffered readers,\n\t\t// but it allows the rest of the payload to be read directly to the\n\t\t// start of the destination slice. This makes it easy to return the\n\t\t// original slice back to the buffer pool.\n\t\tif _, err := io.ReadFull(f.reader, buf[:1]); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpadSize := buf[0]\n\t\tbuf = buf[:len(buf)-1]\n\t\tif int(padSize) > len(buf) {\n\t\t\t// If the length of the padding is greater than the\n\t\t\t// length of the frame payload, the recipient MUST\n\t\t\t// treat this as a connection error.\n\t\t\t// Filed: https://github.com/http2/http2-spec/issues/610\n\t\t\tf.errDetail = errors.New(\"pad size larger than data payload\")\n\t\t\treturn http2.ConnectionError(http2.ErrCodeProtocol)\n\t\t}\n\t\tif _, err := io.ReadFull(f.reader, buf); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbuf = buf[:len(buf)-int(padSize)]\n\t} else if _, err := io.ReadFull(f.reader, buf); err != nil {\n\t\treturn err\n\t}\n\n\tf.dataFrame.FrameHeader = fh\n\tif useBufferPool {\n\t\t// Update the handle to point to the (potentially re-sliced) buf.\n\t\t*poolHandle = buf\n\t\tf.dataFrame.data = mem.NewBuffer(poolHandle, f.pool)\n\t} else {\n\t\tf.dataFrame.data = mem.SliceBuffer(buf)\n\t}\n\treturn nil\n}\n\nfunc (df *parsedDataFrame) Header() http2.FrameHeader {\n\treturn df.FrameHeader\n}\n\nfunc ioBufferPool(size int) *imem.SimpleBufferPool {\n\tioBufferMutex.Lock()\n\tdefer ioBufferMutex.Unlock()\n\tpool, ok := ioBufferPoolMap[size]\n\tif ok {\n\t\treturn pool\n\t}\n\tpool = imem.NewDirtySimplePool()\n\tioBufferPoolMap[size] = pool\n\treturn pool\n}\n\n// ParseDialTarget returns the network and address to pass to dialer.\nfunc ParseDialTarget(target string) (string, string) {\n\tnet := \"tcp\"\n\tm1 := strings.Index(target, \":\")\n\tm2 := strings.Index(target, \":/\")\n\t// handle unix:addr which will fail with url.Parse\n\tif m1 >= 0 && m2 < 0 {\n\t\tif n := target[0:m1]; n == \"unix\" {\n\t\t\treturn n, target[m1+1:]\n\t\t}\n\t}\n\tif m2 >= 0 {\n\t\tt, err := url.Parse(target)\n\t\tif err != nil {\n\t\t\treturn net, target\n\t\t}\n\t\tscheme := t.Scheme\n\t\taddr := t.Path\n\t\tif scheme == \"unix\" {\n\t\t\tif addr == \"\" {\n\t\t\t\taddr = t.Host\n\t\t\t}\n\t\t\treturn scheme, addr\n\t\t}\n\t}\n\treturn net, target\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/logging.go",
    "content": "/*\n *\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/grpclog\"\n\tinternalgrpclog \"google.golang.org/grpc/internal/grpclog\"\n)\n\nvar logger = grpclog.Component(\"transport\")\n\nfunc prefixLoggerForServerTransport(p *http2Server) *internalgrpclog.PrefixLogger {\n\treturn internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(\"[server-transport %p] \", p))\n}\n\nfunc prefixLoggerForServerHandlerTransport(p *serverHandlerTransport) *internalgrpclog.PrefixLogger {\n\treturn internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(\"[server-handler-transport %p] \", p))\n}\n\nfunc prefixLoggerForClientTransport(p *http2Client) *internalgrpclog.PrefixLogger {\n\treturn internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(\"[client-transport %p] \", p))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package networktype declares the network type to be used in the default\n// dialer. Attribute of a resolver.Address.\npackage networktype\n\nimport (\n\t\"google.golang.org/grpc/resolver\"\n)\n\n// keyType is the key to use for storing State in Attributes.\ntype keyType string\n\nconst key = keyType(\"grpc.internal.transport.networktype\")\n\n// Set returns a copy of the provided address with attributes containing networkType.\nfunc Set(address resolver.Address, networkType string) resolver.Address {\n\taddress.Attributes = address.Attributes.WithValue(key, networkType)\n\treturn address\n}\n\n// Get returns the network type in the resolver.Address and true, or \"\", false\n// if not present.\nfunc Get(address resolver.Address) (string, bool) {\n\tv := address.Attributes.Value(key)\n\tif v == nil {\n\t\treturn \"\", false\n\t}\n\treturn v.(string), true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/proxy.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/http/httputil\"\n\t\"net/url\"\n\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/internal/proxyattributes\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\nconst proxyAuthHeaderKey = \"Proxy-Authorization\"\n\n// To read a response from a net.Conn, http.ReadResponse() takes a bufio.Reader.\n// It's possible that this reader reads more than what's need for the response\n// and stores those bytes in the buffer. bufConn wraps the original net.Conn\n// and the bufio.Reader to make sure we don't lose the bytes in the buffer.\ntype bufConn struct {\n\tnet.Conn\n\tr io.Reader\n}\n\nfunc (c *bufConn) Read(b []byte) (int, error) {\n\treturn c.r.Read(b)\n}\n\nfunc basicAuth(username, password string) string {\n\tauth := username + \":\" + password\n\treturn base64.StdEncoding.EncodeToString([]byte(auth))\n}\n\nfunc doHTTPConnectHandshake(ctx context.Context, conn net.Conn, grpcUA string, opts proxyattributes.Options) (_ net.Conn, err error) {\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tconn.Close()\n\t\t}\n\t}()\n\n\treq := &http.Request{\n\t\tMethod: http.MethodConnect,\n\t\tURL:    &url.URL{Host: opts.ConnectAddr},\n\t\tHeader: map[string][]string{\"User-Agent\": {grpcUA}},\n\t}\n\tif user := opts.User; user != nil {\n\t\tu := user.Username()\n\t\tp, _ := user.Password()\n\t\treq.Header.Add(proxyAuthHeaderKey, \"Basic \"+basicAuth(u, p))\n\t}\n\tif err := sendHTTPRequest(ctx, req, conn); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to write the HTTP request: %v\", err)\n\t}\n\n\tr := bufio.NewReader(conn)\n\tresp, err := http.ReadResponse(r, req)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"reading server HTTP response: %v\", err)\n\t}\n\tdefer resp.Body.Close()\n\tif resp.StatusCode != http.StatusOK {\n\t\tdump, err := httputil.DumpResponse(resp, true)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to do connect handshake, status code: %s\", resp.Status)\n\t\t}\n\t\treturn nil, fmt.Errorf(\"failed to do connect handshake, response: %q\", dump)\n\t}\n\t// The buffer could contain extra bytes from the target server, so we can't\n\t// discard it. However, in many cases where the server waits for the client\n\t// to send the first message (e.g. when TLS is being used), the buffer will\n\t// be empty, so we can avoid the overhead of reading through this buffer.\n\tif r.Buffered() != 0 {\n\t\treturn &bufConn{Conn: conn, r: r}, nil\n\t}\n\treturn conn, nil\n}\n\n// proxyDial establishes a TCP connection to the specified address and performs an HTTP CONNECT handshake.\nfunc proxyDial(ctx context.Context, addr resolver.Address, grpcUA string, opts proxyattributes.Options) (net.Conn, error) {\n\tconn, err := internal.NetDialerWithTCPKeepalive().DialContext(ctx, \"tcp\", addr.Addr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn doHTTPConnectHandshake(ctx, conn, grpcUA, opts)\n}\n\nfunc sendHTTPRequest(ctx context.Context, req *http.Request, conn net.Conn) error {\n\treq = req.WithContext(ctx)\n\tif err := req.Write(conn); err != nil {\n\t\treturn fmt.Errorf(\"failed to write the HTTP request: %v\", err)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/readyreader/raw_conn_linux.go",
    "content": "/*\n *\n * Copyright 2026 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage readyreader\n\nimport \"syscall\"\n\nfunc isRawConnSupported() bool {\n\treturn true\n}\n\n// sysRead uses the standard syscall package rather than the modern unix package\n// to avoid triggering the race detector. Because both packages perform sync\n// operations on a local variable to satisfy the race detector, mixing them\n// for read and write syscalls causes data races. We use syscall here to remain\n// consistent with net.Conn implementations in standard library.\nfunc sysRead(fd uintptr, p []byte) (int, error) {\n\treturn syscall.Read(int(fd), p)\n}\n\n// wouldBlock checks standard Unix non-blocking errors.\nfunc wouldBlock(err error) bool {\n\treturn err == syscall.EAGAIN || err == syscall.EWOULDBLOCK\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/readyreader/raw_conn_nonlinux.go",
    "content": "//go:build !linux\n\n/*\n *\n * Copyright 2026 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage readyreader\n\nfunc isRawConnSupported() bool {\n\treturn false\n}\n\n// sysRead is not implemented. Support can be added in the future if necessary.\nfunc sysRead(uintptr, []byte) (int, error) {\n\tpanic(\"RawConn functionality is not implemented for non-unix platforms.\")\n}\n\n// wouldBlock is not implemented. Support can be added in the future if necessary.\nfunc wouldBlock(error) bool {\n\tpanic(\"RawConn functionality is not implemented for non-unix platforms.\")\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/readyreader/ready_reader.go",
    "content": "/*\n *\n * Copyright 2026 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package readyreader provides utilities to perform non-memory-pinning reads.\npackage readyreader\n\nimport (\n\t\"io\"\n\t\"net\"\n\t\"syscall\"\n\n\t\"google.golang.org/grpc/mem\"\n)\n\n// Reader is an optional interface that can be implemented by [net.Conn]\n// implementations to enable gRPC to perform non-memory-pinning reads.\ntype Reader interface {\n\t// ReadOnReady waits for data to arrive, fetches a buffer, and performs a\n\t// read. When the underlying IO is readable, it allocates a buffer of size\n\t// bufSize from the pool and reads up to bufSize bytes into the buffer.\n\t//\n\t// It returns a pointer to the buffer so it can be returned to the pool\n\t// later, the number of bytes read, and an error.\n\t//\n\t// Callers should always process the n > 0 bytes returned before considering\n\t// the error. Doing so correctly handles I/O errors that happen after\n\t// reading some bytes, as well as both of the allowed EOF behaviors.\n\tReadOnReady(bufSize int, pool mem.BufferPool) (b *[]byte, n int, err error)\n}\n\n// nonBlockingReader is optimized for non-memory-pinning reads using the RawConn\n// interface.\ntype nonBlockingReader struct {\n\traw syscall.RawConn\n\t// The following fields are stored as field to avoid heap allocations.\n\tstate  readState\n\tdoRead func(fd uintptr) bool\n}\n\ntype readState struct {\n\t// Request params.\n\tbufSize int\n\tpool    mem.BufferPool\n\n\t// Response params.\n\treadError error\n\tbytesRead int\n\tbuf       *[]byte\n}\n\n// NewNonBlocking returns a ReadyReader if the passed reader supports\n// non-memory-pinning reads, else nil.\nfunc NewNonBlocking(r io.Reader) Reader {\n\tif rr, ok := r.(Reader); ok {\n\t\treturn rr\n\t}\n\tif !isRawConnSupported() {\n\t\treturn nil\n\t}\n\t// We restrict the types before asserting syscall.Conn. The credentials\n\t// package may return a wrapper that implements syscall.Conn by embedding\n\t// both the raw connection and the encrypted connection. If the code\n\t// attempts to read directly from the raw syscall.RawConn, it would read\n\t// encrypted data.\n\tswitch r.(type) {\n\tcase *net.TCPConn, *net.UDPConn, *net.UnixConn, *net.IPConn:\n\tdefault:\n\t\treturn nil\n\t}\n\tsysConn, ok := r.(syscall.Conn)\n\tif !ok {\n\t\treturn nil\n\t}\n\traw, err := sysConn.SyscallConn()\n\tif err != nil {\n\t\treturn nil\n\t}\n\trr := &nonBlockingReader{raw: raw}\n\trr.doRead = func(fd uintptr) bool {\n\t\ts := &rr.state\n\n\t\ts.buf = s.pool.Get(s.bufSize)\n\t\ts.bytesRead, s.readError = sysRead(fd, *s.buf)\n\n\t\tif s.readError != nil {\n\t\t\ts.pool.Put(s.buf)\n\t\t\ts.buf = nil\n\t\t}\n\t\treturn !wouldBlock(s.readError)\n\t}\n\treturn rr\n}\n\nfunc (c *nonBlockingReader) ReadOnReady(bufSize int, pool mem.BufferPool) (*[]byte, int, error) {\n\tc.state = readState{\n\t\tpool:    pool,\n\t\tbufSize: bufSize,\n\t}\n\terr := c.raw.Read(c.doRead)\n\n\tbuf := c.state.buf\n\tn := c.state.bytesRead\n\treadErr := c.state.readError\n\tc.state = readState{}\n\n\tif err != nil {\n\t\tif buf != nil {\n\t\t\tpool.Put(buf)\n\t\t}\n\t\treturn nil, 0, err\n\t}\n\tif readErr != nil {\n\t\t// buffer is already released in the callback.\n\t\treturn nil, 0, readErr\n\t}\n\tif n == 0 {\n\t\t// syscall.Read doesn't consider a graceful socket closure to be an\n\t\t// error condition, but Go's io.Reader expects an EOF error.\n\t\tpool.Put(buf)\n\t\treturn nil, 0, io.EOF\n\t}\n\treturn buf, n, nil\n}\n\ntype blockingReader struct {\n\treader io.Reader\n}\n\nfunc (c *blockingReader) ReadOnReady(bufSize int, pool mem.BufferPool) (*[]byte, int, error) {\n\tbuf := pool.Get(bufSize)\n\tn, err := c.reader.Read(*buf)\n\tif err != nil {\n\t\tpool.Put(buf)\n\t\treturn nil, 0, err\n\t}\n\treturn buf, n, nil\n}\n\n// New detects if [syscall.RawConn] is available for non-memory-pinning reads.\n// If [syscall.RawConn] is unavailable, it falls back to using the simpler\n// [io.Reader] interface for reads.\nfunc New(r io.Reader) Reader {\n\tif r := NewNonBlocking(r); r != nil {\n\t\treturn r\n\t}\n\treturn &blockingReader{reader: r}\n}\n\n// bufReadyReader implements buffering for a ReadyReader object.\n// A new bufReadyReader is created by calling [NewBuffered].\ntype bufReadyReader struct {\n\tbuf       *[]byte\n\tpool      mem.BufferPool\n\tbufSize   int\n\trd        Reader // reader provided by the caller\n\tr, w      int    // buf read and write positions\n\terr       error\n\tconstPool constBufferPool // stored as a field to avoid heap allocations.\n}\n\n// NewBuffered returns a new [io.Reader] with a buffer of the specified size\n// which is allocated from the provided pool.\nfunc NewBuffered(rd Reader, size int, pool mem.BufferPool) io.Reader {\n\treturn &bufReadyReader{\n\t\trd:      rd,\n\t\tpool:    pool,\n\t\tbufSize: size,\n\t}\n}\n\nfunc (b *bufReadyReader) readErr() error {\n\terr := b.err\n\tb.err = nil\n\treturn err\n}\n\nfunc (b *bufReadyReader) buffered() int { return b.w - b.r }\n\n// Read reads data into p. It returns the number of bytes read into p. The\n// bytes are taken from at most one Read on the underlying [ReadyReader],\n// hence n may be less than len(p). If the underlying [ReadyReader] can return\n// a non-zero count with io.EOF, then this Read method can do so as well; see\n// the [io.Reader] docs.\nfunc (b *bufReadyReader) Read(p []byte) (n int, err error) {\n\tn = len(p)\n\tif n == 0 {\n\t\tif b.buffered() > 0 {\n\t\t\treturn 0, nil\n\t\t}\n\t\treturn 0, b.readErr()\n\t}\n\tif b.r == b.w {\n\t\tif b.err != nil {\n\t\t\treturn 0, b.readErr()\n\t\t}\n\t\tif len(p) >= b.bufSize {\n\t\t\t// Large read, empty buffer.\n\t\t\t// Read directly into p to avoid copy.\n\t\t\tb.constPool.buffer = p\n\t\t\t_, n, b.err = b.rd.ReadOnReady(len(p), &b.constPool)\n\t\t\treturn n, b.readErr()\n\t\t}\n\t\t// One read.\n\t\tb.r = 0\n\t\tb.w = 0\n\t\tb.buf, n, b.err = b.rd.ReadOnReady(b.bufSize, b.pool)\n\t\tif n == 0 {\n\t\t\tif b.buf != nil {\n\t\t\t\tb.pool.Put(b.buf)\n\t\t\t\tb.buf = nil\n\t\t\t}\n\t\t\treturn 0, b.readErr()\n\t\t}\n\t\tb.w += n\n\t}\n\n\t// copy as much as we can\n\t// b.buf must be non-nil since b.r != b.w.\n\tbuf := *b.buf\n\tn = copy(p, buf[b.r:b.w])\n\tb.r += n\n\tif b.r == b.w {\n\t\t// Consumed entire buffer, release it.\n\t\tb.pool.Put(b.buf)\n\t\tb.buf = nil\n\t}\n\treturn n, nil\n}\n\ntype constBufferPool struct {\n\tbuffer []byte\n}\n\nfunc (p *constBufferPool) Get(int) *[]byte {\n\treturn &p.buffer\n}\n\nfunc (p *constBufferPool) Put(*[]byte) {}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/server_stream.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/grpc/mem\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// ServerStream implements streaming functionality for a gRPC server.\ntype ServerStream struct {\n\tStream // Embed for common stream functionality.\n\n\tst      internalServerTransport\n\tctxDone <-chan struct{} // closed at the end of stream.  Cache of ctx.Done() (for performance)\n\t// cancel is invoked at the end of stream to cancel ctx. It also stops the\n\t// timer for monitoring the rpc deadline if configured.\n\tcancel func()\n\n\t// Holds compressor names passed in grpc-accept-encoding metadata from the\n\t// client.\n\tclientAdvertisedCompressors string\n\n\t// hdrMu protects outgoing header and trailer metadata.\n\thdrMu      sync.Mutex\n\theader     metadata.MD // the outgoing header metadata.  Updated by WriteHeader.\n\theaderSent atomic.Bool // atomically set when the headers are sent out.\n\n\theaderWireLength int\n}\n\n// Read reads an n byte message from the input stream.\nfunc (s *ServerStream) Read(n int) (mem.BufferSlice, error) {\n\tb, err := s.Stream.read(n)\n\tif err == nil {\n\t\ts.st.incrMsgRecv()\n\t}\n\treturn b, err\n}\n\n// SendHeader sends the header metadata for the given stream.\nfunc (s *ServerStream) SendHeader(md metadata.MD) error {\n\treturn s.st.writeHeader(s, md)\n}\n\n// Write writes the hdr and data bytes to the output stream.\nfunc (s *ServerStream) Write(hdr []byte, data mem.BufferSlice, opts *WriteOptions) error {\n\treturn s.st.write(s, hdr, data, opts)\n}\n\n// WriteStatus sends the status of a stream to the client.  WriteStatus is\n// the final call made on a stream and always occurs.\nfunc (s *ServerStream) WriteStatus(st *status.Status) error {\n\treturn s.st.writeStatus(s, st)\n}\n\n// isHeaderSent indicates whether headers have been sent.\nfunc (s *ServerStream) isHeaderSent() bool {\n\treturn s.headerSent.Load()\n}\n\n// updateHeaderSent updates headerSent and returns true\n// if it was already set.\nfunc (s *ServerStream) updateHeaderSent() bool {\n\treturn s.headerSent.Swap(true)\n}\n\n// RecvCompress returns the compression algorithm applied to the inbound\n// message. It is empty string if there is no compression applied.\nfunc (s *ServerStream) RecvCompress() string {\n\treturn s.recvCompress\n}\n\n// SendCompress returns the send compressor name.\nfunc (s *ServerStream) SendCompress() string {\n\treturn s.sendCompress\n}\n\n// ContentSubtype returns the content-subtype for a request. For example, a\n// content-subtype of \"proto\" will result in a content-type of\n// \"application/grpc+proto\". This will always be lowercase.  See\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for\n// more details.\nfunc (s *ServerStream) ContentSubtype() string {\n\treturn s.contentSubtype\n}\n\n// SetSendCompress sets the compression algorithm to the stream.\nfunc (s *ServerStream) SetSendCompress(name string) error {\n\tif s.isHeaderSent() || s.getState() == streamDone {\n\t\treturn errors.New(\"transport: set send compressor called after headers sent or stream done\")\n\t}\n\n\ts.sendCompress = name\n\treturn nil\n}\n\n// SetContext sets the context of the stream. This will be deleted once the\n// stats handler callouts all move to gRPC layer.\nfunc (s *ServerStream) SetContext(ctx context.Context) {\n\ts.ctx = ctx\n}\n\n// ClientAdvertisedCompressors returns the compressor names advertised by the\n// client via grpc-accept-encoding header.\nfunc (s *ServerStream) ClientAdvertisedCompressors() []string {\n\tvalues := strings.Split(s.clientAdvertisedCompressors, \",\")\n\tfor i, v := range values {\n\t\tvalues[i] = strings.TrimSpace(v)\n\t}\n\treturn values\n}\n\n// Header returns the header metadata of the stream.  It returns the out header\n// after t.WriteHeader is called.  It does not block and must not be called\n// until after WriteHeader.\nfunc (s *ServerStream) Header() (metadata.MD, error) {\n\t// Return the header in stream. It will be the out\n\t// header after t.WriteHeader is called.\n\treturn s.header.Copy(), nil\n}\n\n// HeaderWireLength returns the size of the headers of the stream as received\n// from the wire.\nfunc (s *ServerStream) HeaderWireLength() int {\n\treturn s.headerWireLength\n}\n\n// SetHeader sets the header metadata. This can be called multiple times.\n// This should not be called in parallel to other data writes.\nfunc (s *ServerStream) SetHeader(md metadata.MD) error {\n\tif md.Len() == 0 {\n\t\treturn nil\n\t}\n\tif s.isHeaderSent() || s.getState() == streamDone {\n\t\treturn ErrIllegalHeaderWrite\n\t}\n\ts.hdrMu.Lock()\n\ts.header = metadata.Join(s.header, md)\n\ts.hdrMu.Unlock()\n\treturn nil\n}\n\n// SetTrailer sets the trailer metadata which will be sent with the RPC status\n// by the server. This can be called multiple times.\n// This should not be called parallel to other data writes.\nfunc (s *ServerStream) SetTrailer(md metadata.MD) error {\n\tif md.Len() == 0 {\n\t\treturn nil\n\t}\n\tif s.getState() == streamDone {\n\t\treturn ErrIllegalHeaderWrite\n\t}\n\ts.hdrMu.Lock()\n\ts.trailer = metadata.Join(s.trailer, md)\n\ts.hdrMu.Unlock()\n\treturn nil\n}\n\nfunc (s *ServerStream) requestRead(n int) {\n\ts.st.adjustWindow(s, uint32(n))\n}\n\nfunc (s *ServerStream) updateWindow(n int) {\n\ts.st.updateWindow(s, uint32(n))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/transport.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package transport defines and implements message oriented communication\n// channel to complete various transactions (e.g., an RPC).  It is meant for\n// grpc-internal usage and is not intended to be imported directly by users.\npackage transport\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"golang.org/x/net/http2\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\t\"google.golang.org/grpc/keepalive\"\n\t\"google.golang.org/grpc/mem\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/peer\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n\t\"google.golang.org/grpc/tap\"\n)\n\nconst logLevel = 2\n\n// recvMsg represents the received msg from the transport. All transport\n// protocol specific info has been removed.\ntype recvMsg struct {\n\tbuffer mem.Buffer\n\t// nil: received some data\n\t// io.EOF: stream is completed. data is nil.\n\t// other non-nil error: transport failure. data is nil.\n\terr error\n}\n\n// recvBuffer is an unbounded channel of recvMsg structs.\n//\n// Note: recvBuffer differs from buffer.Unbounded only in the fact that it\n// holds a channel of recvMsg structs instead of objects implementing \"item\"\n// interface. recvBuffer is written to much more often and using strict recvMsg\n// structs helps avoid allocation in \"recvBuffer.put\"\ntype recvBuffer struct {\n\tc       chan recvMsg\n\tmu      sync.Mutex\n\tbacklog []recvMsg\n\terr     error\n}\n\n// init allows a recvBuffer to be initialized in-place, which is useful\n// for resetting a buffer or for avoiding a heap allocation when the buffer\n// is embedded in another struct.\nfunc (b *recvBuffer) init() {\n\tb.c = make(chan recvMsg, 1)\n}\n\nfunc (b *recvBuffer) put(r recvMsg) {\n\tb.mu.Lock()\n\tif b.err != nil {\n\t\t// drop the buffer on the floor. Since b.err is not nil, any subsequent reads\n\t\t// will always return an error, making this buffer inaccessible.\n\t\tr.buffer.Free()\n\t\tb.mu.Unlock()\n\t\t// An error had occurred earlier, don't accept more\n\t\t// data or errors.\n\t\treturn\n\t}\n\tb.err = r.err\n\tif len(b.backlog) == 0 {\n\t\tselect {\n\t\tcase b.c <- r:\n\t\t\tb.mu.Unlock()\n\t\t\treturn\n\t\tdefault:\n\t\t}\n\t}\n\tb.backlog = append(b.backlog, r)\n\tb.mu.Unlock()\n}\n\nfunc (b *recvBuffer) load() {\n\tb.mu.Lock()\n\tif len(b.backlog) > 0 {\n\t\tselect {\n\t\tcase b.c <- b.backlog[0]:\n\t\t\tb.backlog[0] = recvMsg{}\n\t\t\tb.backlog = b.backlog[1:]\n\t\tdefault:\n\t\t}\n\t}\n\tb.mu.Unlock()\n}\n\n// get returns the channel that receives a recvMsg in the buffer.\n//\n// Upon receipt of a recvMsg, the caller should call load to send another\n// recvMsg onto the channel if there is any.\nfunc (b *recvBuffer) get() <-chan recvMsg {\n\treturn b.c\n}\n\n// recvBufferReader implements io.Reader interface to read the data from\n// recvBuffer.\ntype recvBufferReader struct {\n\t_            noCopy\n\tclientStream *ClientStream // The client transport stream is closed with a status representing ctx.Err() and nil trailer metadata.\n\tctx          context.Context\n\tctxDone      <-chan struct{} // cache of ctx.Done() (for performance).\n\trecv         *recvBuffer\n\tlast         mem.Buffer // Stores the remaining data in the previous calls.\n\terr          error\n}\n\nfunc (r *recvBufferReader) ReadMessageHeader(header []byte) (n int, err error) {\n\tif r.err != nil {\n\t\treturn 0, r.err\n\t}\n\tif r.last != nil {\n\t\tn, r.last = mem.ReadUnsafe(header, r.last)\n\t\treturn n, nil\n\t}\n\tif r.clientStream != nil {\n\t\tn, r.err = r.readMessageHeaderClient(header)\n\t} else {\n\t\tn, r.err = r.readMessageHeader(header)\n\t}\n\treturn n, r.err\n}\n\n// Read reads the next n bytes from last. If last is drained, it tries to read\n// additional data from recv. It blocks if there no additional data available in\n// recv. If Read returns any non-nil error, it will continue to return that\n// error.\nfunc (r *recvBufferReader) Read(n int) (buf mem.Buffer, err error) {\n\tif r.err != nil {\n\t\treturn nil, r.err\n\t}\n\tif r.last != nil {\n\t\tbuf = r.last\n\t\tif r.last.Len() > n {\n\t\t\tbuf, r.last = mem.SplitUnsafe(buf, n)\n\t\t} else {\n\t\t\tr.last = nil\n\t\t}\n\t\treturn buf, nil\n\t}\n\tif r.clientStream != nil {\n\t\tbuf, r.err = r.readClient(n)\n\t} else {\n\t\tbuf, r.err = r.read(n)\n\t}\n\treturn buf, r.err\n}\n\nfunc (r *recvBufferReader) readMessageHeader(header []byte) (n int, err error) {\n\tselect {\n\tcase <-r.ctxDone:\n\t\treturn 0, ContextErr(r.ctx.Err())\n\tcase m := <-r.recv.get():\n\t\treturn r.readMessageHeaderAdditional(m, header)\n\t}\n}\n\nfunc (r *recvBufferReader) read(n int) (buf mem.Buffer, err error) {\n\tselect {\n\tcase <-r.ctxDone:\n\t\treturn nil, ContextErr(r.ctx.Err())\n\tcase m := <-r.recv.get():\n\t\treturn r.readAdditional(m, n)\n\t}\n}\n\nfunc (r *recvBufferReader) readMessageHeaderClient(header []byte) (n int, err error) {\n\t// If the context is canceled, then closes the stream with nil metadata.\n\t// closeStream writes its error parameter to r.recv as a recvMsg.\n\t// r.readAdditional acts on that message and returns the necessary error.\n\tselect {\n\tcase <-r.ctxDone:\n\t\t// Note that this adds the ctx error to the end of recv buffer, and\n\t\t// reads from the head. This will delay the error until recv buffer is\n\t\t// empty, thus will delay ctx cancellation in Recv().\n\t\t//\n\t\t// It's done this way to fix a race between ctx cancel and trailer. The\n\t\t// race was, stream.Recv() may return ctx error if ctxDone wins the\n\t\t// race, but stream.Trailer() may return a non-nil md because the stream\n\t\t// was not marked as done when trailer is received. This closeStream\n\t\t// call will mark stream as done, thus fix the race.\n\t\t//\n\t\t// TODO: delaying ctx error seems like a unnecessary side effect. What\n\t\t// we really want is to mark the stream as done, and return ctx error\n\t\t// faster.\n\t\tr.clientStream.Close(ContextErr(r.ctx.Err()))\n\t\tm := <-r.recv.get()\n\t\treturn r.readMessageHeaderAdditional(m, header)\n\tcase m := <-r.recv.get():\n\t\treturn r.readMessageHeaderAdditional(m, header)\n\t}\n}\n\nfunc (r *recvBufferReader) readClient(n int) (buf mem.Buffer, err error) {\n\t// If the context is canceled, then closes the stream with nil metadata.\n\t// closeStream writes its error parameter to r.recv as a recvMsg.\n\t// r.readAdditional acts on that message and returns the necessary error.\n\tselect {\n\tcase <-r.ctxDone:\n\t\t// Note that this adds the ctx error to the end of recv buffer, and\n\t\t// reads from the head. This will delay the error until recv buffer is\n\t\t// empty, thus will delay ctx cancellation in Recv().\n\t\t//\n\t\t// It's done this way to fix a race between ctx cancel and trailer. The\n\t\t// race was, stream.Recv() may return ctx error if ctxDone wins the\n\t\t// race, but stream.Trailer() may return a non-nil md because the stream\n\t\t// was not marked as done when trailer is received. This closeStream\n\t\t// call will mark stream as done, thus fix the race.\n\t\t//\n\t\t// TODO: delaying ctx error seems like a unnecessary side effect. What\n\t\t// we really want is to mark the stream as done, and return ctx error\n\t\t// faster.\n\t\tr.clientStream.Close(ContextErr(r.ctx.Err()))\n\t\tm := <-r.recv.get()\n\t\treturn r.readAdditional(m, n)\n\tcase m := <-r.recv.get():\n\t\treturn r.readAdditional(m, n)\n\t}\n}\n\nfunc (r *recvBufferReader) readMessageHeaderAdditional(m recvMsg, header []byte) (n int, err error) {\n\tr.recv.load()\n\tif m.err != nil {\n\t\tif m.buffer != nil {\n\t\t\tm.buffer.Free()\n\t\t}\n\t\treturn 0, m.err\n\t}\n\n\tn, r.last = mem.ReadUnsafe(header, m.buffer)\n\n\treturn n, nil\n}\n\nfunc (r *recvBufferReader) readAdditional(m recvMsg, n int) (b mem.Buffer, err error) {\n\tr.recv.load()\n\tif m.err != nil {\n\t\tif m.buffer != nil {\n\t\t\tm.buffer.Free()\n\t\t}\n\t\treturn nil, m.err\n\t}\n\n\tif m.buffer.Len() > n {\n\t\tm.buffer, r.last = mem.SplitUnsafe(m.buffer, n)\n\t}\n\n\treturn m.buffer, nil\n}\n\ntype streamState uint32\n\nconst (\n\tstreamActive    streamState = iota\n\tstreamWriteDone             // EndStream sent\n\tstreamReadDone              // EndStream received\n\tstreamDone                  // the entire stream is finished.\n)\n\n// Stream represents an RPC in the transport layer.\ntype Stream struct {\n\tctx          context.Context // the associated context of the stream\n\tmethod       string          // the associated RPC method of the stream\n\trecvCompress string\n\tsendCompress string\n\n\treadRequester readRequester\n\n\t// contentSubtype is the content-subtype for requests.\n\t// this must be lowercase or the behavior is undefined.\n\tcontentSubtype string\n\n\ttrailer metadata.MD // the key-value map of trailer metadata.\n\n\t// Non-pointer fields are at the end to optimize GC performance.\n\tstate    streamState\n\tid       uint32\n\tbuf      recvBuffer\n\ttrReader transportReader\n\tfc       inFlow\n\twq       writeQuota\n}\n\n// readRequester is used to state application's intentions to read data. This\n// is used to adjust flow control, if needed.\ntype readRequester interface {\n\trequestRead(int)\n}\n\nfunc (s *Stream) swapState(st streamState) streamState {\n\treturn streamState(atomic.SwapUint32((*uint32)(&s.state), uint32(st)))\n}\n\nfunc (s *Stream) compareAndSwapState(oldState, newState streamState) bool {\n\treturn atomic.CompareAndSwapUint32((*uint32)(&s.state), uint32(oldState), uint32(newState))\n}\n\nfunc (s *Stream) getState() streamState {\n\treturn streamState(atomic.LoadUint32((*uint32)(&s.state)))\n}\n\n// Trailer returns the cached trailer metadata. Note that if it is not called\n// after the entire stream is done, it could return an empty MD.\n// It can be safely read only after stream has ended that is either read\n// or write have returned io.EOF.\nfunc (s *Stream) Trailer() metadata.MD {\n\treturn s.trailer.Copy()\n}\n\n// Context returns the context of the stream.\nfunc (s *Stream) Context() context.Context {\n\treturn s.ctx\n}\n\n// Method returns the method for the stream.\nfunc (s *Stream) Method() string {\n\treturn s.method\n}\n\nfunc (s *Stream) write(m recvMsg) {\n\ts.buf.put(m)\n}\n\n// ReadMessageHeader reads data into the provided header slice from the stream.\n// It first checks if there was an error during a previous read operation and\n// returns it if present. It then requests a read operation for the length of\n// the header. It continues to read from the stream until the entire header\n// slice is filled or an error occurs. If an `io.EOF` error is encountered with\n// partially read data, it is converted to `io.ErrUnexpectedEOF` to indicate an\n// unexpected end of the stream. The method returns any error encountered during\n// the read process or nil if the header was successfully read.\nfunc (s *Stream) ReadMessageHeader(header []byte) (err error) {\n\t// Don't request a read if there was an error earlier\n\tif er := s.trReader.er; er != nil {\n\t\treturn er\n\t}\n\ts.readRequester.requestRead(len(header))\n\tfor len(header) != 0 {\n\t\tn, err := s.trReader.ReadMessageHeader(header)\n\t\theader = header[n:]\n\t\tif len(header) == 0 {\n\t\t\terr = nil\n\t\t}\n\t\tif err != nil {\n\t\t\tif n > 0 && err == io.EOF {\n\t\t\t\terr = io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// ceil returns the ceil after dividing the numerator and denominator while\n// avoiding integer overflows.\nfunc ceil(numerator, denominator int) int {\n\tif numerator == 0 {\n\t\treturn 0\n\t}\n\treturn (numerator-1)/denominator + 1\n}\n\n// Read reads n bytes from the wire for this stream.\nfunc (s *Stream) read(n int) (data mem.BufferSlice, err error) {\n\t// Don't request a read if there was an error earlier\n\tif er := s.trReader.er; er != nil {\n\t\treturn nil, er\n\t}\n\t// gRPC Go accepts data frames with a maximum length of 16KB. Larger\n\t// messages must be split into multiple frames. We pre-allocate the\n\t// buffer to avoid resizing during the read loop, but cap the initial\n\t// capacity to 128 frames (2MB) to prevent over-allocation or panics\n\t// when reading extremely large streams.\n\tallocCap := min(ceil(n, http2MaxFrameLen), 128)\n\tdata = make(mem.BufferSlice, 0, allocCap)\n\ts.readRequester.requestRead(n)\n\tfor n != 0 {\n\t\tbuf, err := s.trReader.Read(n)\n\t\tvar bufLen int\n\t\tif buf != nil {\n\t\t\tbufLen = buf.Len()\n\t\t}\n\t\tn -= bufLen\n\t\tif n == 0 {\n\t\t\terr = nil\n\t\t}\n\t\tif err != nil {\n\t\t\tif bufLen > 0 && err == io.EOF {\n\t\t\t\terr = io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tdata.Free()\n\t\t\treturn nil, err\n\t\t}\n\t\tdata = append(data, buf)\n\t}\n\treturn data, nil\n}\n\n// noCopy may be embedded into structs which must not be copied\n// after the first use.\n//\n// See https://golang.org/issues/8005#issuecomment-190753527\n// for details.\ntype noCopy struct {\n}\n\nfunc (*noCopy) Lock()   {}\nfunc (*noCopy) Unlock() {}\n\n// transportReader reads all the data available for this Stream from the transport and\n// passes them into the decoder, which converts them into a gRPC message stream.\n// The error is io.EOF when the stream is done or another non-nil error if\n// the stream broke.\ntype transportReader struct {\n\t_ noCopy\n\t// The handler to control the window update procedure for both this\n\t// particular stream and the associated transport.\n\twindowHandler windowHandler\n\ter            error\n\treader        recvBufferReader\n}\n\n// The handler to control the window update procedure for both this\n// particular stream and the associated transport.\ntype windowHandler interface {\n\tupdateWindow(int)\n}\n\nfunc (t *transportReader) ReadMessageHeader(header []byte) (int, error) {\n\tn, err := t.reader.ReadMessageHeader(header)\n\tif err != nil {\n\t\tt.er = err\n\t\treturn 0, err\n\t}\n\tt.windowHandler.updateWindow(n)\n\treturn n, nil\n}\n\nfunc (t *transportReader) Read(n int) (mem.Buffer, error) {\n\tbuf, err := t.reader.Read(n)\n\tif err != nil {\n\t\tt.er = err\n\t\treturn buf, err\n\t}\n\tt.windowHandler.updateWindow(buf.Len())\n\treturn buf, nil\n}\n\n// GoString is implemented by Stream so context.String() won't\n// race when printing %#v.\nfunc (s *Stream) GoString() string {\n\treturn fmt.Sprintf(\"<stream: %p, %v>\", s, s.method)\n}\n\n// state of transport\ntype transportState int\n\nconst (\n\treachable transportState = iota\n\tclosing\n\tdraining\n)\n\n// ServerConfig consists of all the configurations to establish a server transport.\ntype ServerConfig struct {\n\tMaxStreams            uint32\n\tConnectionTimeout     time.Duration\n\tCredentials           credentials.TransportCredentials\n\tInTapHandle           tap.ServerInHandle\n\tStatsHandler          stats.Handler\n\tKeepaliveParams       keepalive.ServerParameters\n\tKeepalivePolicy       keepalive.EnforcementPolicy\n\tInitialWindowSize     int32\n\tInitialConnWindowSize int32\n\tWriteBufferSize       int\n\tReadBufferSize        int\n\tSharedWriteBuffer     bool\n\tChannelzParent        *channelz.Server\n\tMaxHeaderListSize     *uint32\n\tHeaderTableSize       *uint32\n\tBufferPool            mem.BufferPool\n\tStaticWindowSize      bool\n}\n\n// ConnectOptions covers all relevant options for communicating with the server.\ntype ConnectOptions struct {\n\t// UserAgent is the application user agent.\n\tUserAgent string\n\t// Dialer specifies how to dial a network address.\n\tDialer func(context.Context, string) (net.Conn, error)\n\t// FailOnNonTempDialError specifies if gRPC fails on non-temporary dial errors.\n\tFailOnNonTempDialError bool\n\t// PerRPCCredentials stores the PerRPCCredentials required to issue RPCs.\n\tPerRPCCredentials []credentials.PerRPCCredentials\n\t// TransportCredentials stores the Authenticator required to setup a client\n\t// connection. Only one of TransportCredentials and CredsBundle is non-nil.\n\tTransportCredentials credentials.TransportCredentials\n\t// CredsBundle is the credentials bundle to be used. Only one of\n\t// TransportCredentials and CredsBundle is non-nil.\n\tCredsBundle credentials.Bundle\n\t// KeepaliveParams stores the keepalive parameters.\n\tKeepaliveParams keepalive.ClientParameters\n\t// StatsHandlers stores the handler for stats.\n\tStatsHandlers []stats.Handler\n\t// InitialWindowSize sets the initial window size for a stream.\n\tInitialWindowSize int32\n\t// InitialConnWindowSize sets the initial window size for a connection.\n\tInitialConnWindowSize int32\n\t// WriteBufferSize sets the size of write buffer which in turn determines how much data can be batched before it's written on the wire.\n\tWriteBufferSize int\n\t// ReadBufferSize sets the size of read buffer, which in turn determines how much data can be read at most for one read syscall.\n\tReadBufferSize int\n\t// SharedWriteBuffer indicates whether connections should reuse write buffer\n\tSharedWriteBuffer bool\n\t// ChannelzParent sets the addrConn id which initiated the creation of this client transport.\n\tChannelzParent *channelz.SubChannel\n\t// MaxHeaderListSize sets the max (uncompressed) size of header list that is prepared to be received.\n\tMaxHeaderListSize *uint32\n\t// The mem.BufferPool to use when reading/writing to the wire.\n\tBufferPool mem.BufferPool\n\t// StaticWindowSize controls whether dynamic window sizing is enabled.\n\tStaticWindowSize bool\n}\n\n// WriteOptions provides additional hints and information for message\n// transmission.\ntype WriteOptions struct {\n\t// Last indicates whether this write is the last piece for\n\t// this stream.\n\tLast bool\n}\n\n// CallHdr carries the information of a particular RPC.\ntype CallHdr struct {\n\t// Host specifies the peer's host.\n\tHost string\n\n\t// Method specifies the operation to perform.\n\tMethod string\n\n\t// SendCompress specifies the compression algorithm applied on\n\t// outbound message.\n\tSendCompress string\n\n\t// AcceptedCompressors overrides the grpc-accept-encoding header for this\n\t// call. When nil, the transport advertises the default set of registered\n\t// compressors. A non-nil pointer overrides that value (including the empty\n\t// string to advertise none).\n\tAcceptedCompressors *string\n\n\t// Creds specifies credentials.PerRPCCredentials for a call.\n\tCreds credentials.PerRPCCredentials\n\n\t// ContentSubtype specifies the content-subtype for a request. For example, a\n\t// content-subtype of \"proto\" will result in a content-type of\n\t// \"application/grpc+proto\". The value of ContentSubtype must be all\n\t// lowercase, otherwise the behavior is undefined. See\n\t// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests\n\t// for more details.\n\tContentSubtype string\n\n\tPreviousAttempts int // value of grpc-previous-rpc-attempts header to set\n\n\tDoneFunc func() // called when the stream is finished\n\n\t// Authority is used to explicitly override the `:authority` header.\n\t//\n\t// This value comes from one of two sources:\n\t// 1. The `CallAuthority` call option, if specified by the user.\n\t// 2. An override provided by the LB picker (e.g. xDS authority rewriting).\n\t//\n\t// The `CallAuthority` call option always takes precedence over the LB\n\t// picker override.\n\tAuthority string\n}\n\n// ClientTransport is the common interface for all gRPC client-side transport\n// implementations.\ntype ClientTransport interface {\n\t// Close tears down this transport. Once it returns, the transport\n\t// should not be accessed any more. The caller must make sure this\n\t// is called only once.\n\tClose(err error)\n\n\t// GracefulClose starts to tear down the transport: the transport will stop\n\t// accepting new RPCs and NewStream will return error. Once all streams are\n\t// finished, the transport will close.\n\t//\n\t// It does not block.\n\tGracefulClose()\n\n\t// NewStream creates a Stream for an RPC.\n\tNewStream(ctx context.Context, callHdr *CallHdr, handler stats.Handler) (*ClientStream, error)\n\n\t// Error returns a channel that is closed when some I/O error\n\t// happens. Typically the caller should have a goroutine to monitor\n\t// this in order to take action (e.g., close the current transport\n\t// and create a new one) in error case. It should not return nil\n\t// once the transport is initiated.\n\tError() <-chan struct{}\n\n\t// GoAway returns a channel that is closed when ClientTransport\n\t// receives the draining signal from the server (e.g., GOAWAY frame in\n\t// HTTP/2).\n\tGoAway() <-chan struct{}\n\n\t// GetGoAwayReason returns the reason why GoAway frame was received, along\n\t// with a human readable string with debug info.\n\tGetGoAwayReason() (GoAwayReason, string)\n\n\t// Peer returns information about the peer associated with the Transport.\n\t// The returned information includes authentication and network address details.\n\tPeer() *peer.Peer\n}\n\n// ServerTransport is the common interface for all gRPC server-side transport\n// implementations.\n//\n// Methods may be called concurrently from multiple goroutines, but\n// Write methods for a given Stream will be called serially.\ntype ServerTransport interface {\n\t// HandleStreams receives incoming streams using the given handler.\n\tHandleStreams(context.Context, func(*ServerStream))\n\n\t// Close tears down the transport. Once it is called, the transport\n\t// should not be accessed any more. All the pending streams and their\n\t// handlers will be terminated asynchronously.\n\tClose(err error)\n\n\t// Peer returns the peer of the server transport.\n\tPeer() *peer.Peer\n\n\t// Drain notifies the client this ServerTransport stops accepting new RPCs.\n\tDrain(debugData string)\n}\n\ntype internalServerTransport interface {\n\tServerTransport\n\twriteHeader(s *ServerStream, md metadata.MD) error\n\twrite(s *ServerStream, hdr []byte, data mem.BufferSlice, opts *WriteOptions) error\n\twriteStatus(s *ServerStream, st *status.Status) error\n\tincrMsgRecv()\n\tadjustWindow(s *ServerStream, n uint32)\n\tupdateWindow(s *ServerStream, n uint32)\n}\n\n// connectionErrorf creates an ConnectionError with the specified error description.\nfunc connectionErrorf(temp bool, e error, format string, a ...any) ConnectionError {\n\treturn ConnectionError{\n\t\tDesc: fmt.Sprintf(format, a...),\n\t\ttemp: temp,\n\t\terr:  e,\n\t}\n}\n\n// ConnectionError is an error that results in the termination of the\n// entire connection and the retry of all the active streams.\ntype ConnectionError struct {\n\tDesc string\n\ttemp bool\n\terr  error\n}\n\nfunc (e ConnectionError) Error() string {\n\treturn fmt.Sprintf(\"connection error: desc = %q\", e.Desc)\n}\n\n// Temporary indicates if this connection error is temporary or fatal.\nfunc (e ConnectionError) Temporary() bool {\n\treturn e.temp\n}\n\n// Origin returns the original error of this connection error.\nfunc (e ConnectionError) Origin() error {\n\t// Never return nil error here.\n\t// If the original error is nil, return itself.\n\tif e.err == nil {\n\t\treturn e\n\t}\n\treturn e.err\n}\n\n// Unwrap returns the original error of this connection error or nil when the\n// origin is nil.\nfunc (e ConnectionError) Unwrap() error {\n\treturn e.err\n}\n\nvar (\n\t// ErrConnClosing indicates that the transport is closing.\n\tErrConnClosing = connectionErrorf(true, nil, \"transport is closing\")\n\t// errStreamDrain indicates that the stream is rejected because the\n\t// connection is draining. This could be caused by goaway or balancer\n\t// removing the address.\n\terrStreamDrain = status.Error(codes.Unavailable, \"the connection is draining\")\n\t// errStreamDone is returned from write at the client side to indicate application\n\t// layer of an error.\n\terrStreamDone = errors.New(\"the stream is done\")\n\t// StatusGoAway indicates that the server sent a GOAWAY that included this\n\t// stream's ID in unprocessed RPCs.\n\tstatusGoAway = status.New(codes.Unavailable, \"the stream is rejected because server is draining the connection\")\n)\n\n// GoAwayReason contains the reason for the GoAway frame received.\ntype GoAwayReason uint8\n\nconst (\n\t// GoAwayInvalid indicates that no GoAway frame is received.\n\tGoAwayInvalid GoAwayReason = 0\n\t// GoAwayNoReason is the default value when GoAway frame is received.\n\tGoAwayNoReason GoAwayReason = 1\n\t// GoAwayTooManyPings indicates that a GoAway frame with\n\t// ErrCodeEnhanceYourCalm was received and that the debug data said\n\t// \"too_many_pings\".\n\tGoAwayTooManyPings GoAwayReason = 2\n)\n\n// GoAwayInfo contains metadata about why a connection was closed.\ntype GoAwayInfo struct {\n\t// Reason is the parsed reason for an HTTP/2 GOAWAY frame.\n\tReason GoAwayReason\n\t// GoAwayCode is the raw HTTP/2 error code received in a GOAWAY frame.\n\tGoAwayCode http2.ErrCode\n\t// Err is the underlying error that caused the connection to close. It is\n\t// populated if the connection was closed due to a socket error or context\n\t// cancellation without receiving a GOAWAY frame. If the connection was\n\t// closed due to a GOAWAY frame, this field will be nil.\n\tErr error\n}\n\n// OnCloseFunc is a callback invoked when a ClientTransport closes.\ntype OnCloseFunc func(GoAwayInfo)\n\n// ContextErr converts the error from context package into a status error.\nfunc ContextErr(err error) error {\n\tswitch err {\n\tcase context.DeadlineExceeded:\n\t\treturn status.Error(codes.DeadlineExceeded, err.Error())\n\tcase context.Canceled:\n\t\treturn status.Error(codes.Canceled, err.Error())\n\t}\n\treturn status.Errorf(codes.Internal, \"Unexpected error from context packet: %v\", err)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/keepalive/keepalive.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package keepalive defines configurable parameters for point-to-point\n// healthcheck.\npackage keepalive\n\nimport (\n\t\"time\"\n)\n\n// ClientParameters is used to set keepalive parameters on the client-side.\n// These configure how the client will actively probe to notice when a\n// connection is broken and send pings so intermediaries will be aware of the\n// liveness of the connection. Make sure these parameters are set in\n// coordination with the keepalive policy on the server, as incompatible\n// settings can result in closing of connection.\ntype ClientParameters struct {\n\t// After a duration of this time if the client doesn't see any activity it\n\t// pings the server to see if the transport is still alive.\n\t// If set below 10s, a minimum value of 10s will be used instead.\n\t//\n\t// Note that gRPC servers have a default EnforcementPolicy.MinTime of 5\n\t// minutes (which means the client shouldn't ping more frequently than every\n\t// 5 minutes).\n\t//\n\t// Though not ideal, it's not a strong requirement for Time to be less than\n\t// EnforcementPolicy.MinTime.  Time will automatically double if the server\n\t// disconnects due to its enforcement policy.\n\t//\n\t// For more details, see\n\t// https://github.com/grpc/proposal/blob/master/A8-client-side-keepalive.md\n\tTime time.Duration\n\t// After having pinged for keepalive check, the client waits for a duration\n\t// of Timeout and if no activity is seen even after that the connection is\n\t// closed.\n\t//\n\t// If keepalive is enabled, and this value is not explicitly set, the default\n\t// is 20 seconds.\n\tTimeout time.Duration\n\t// If true, client sends keepalive pings even with no active RPCs. If false,\n\t// when there are no active RPCs, Time and Timeout will be ignored and no\n\t// keepalive pings will be sent.\n\tPermitWithoutStream bool\n}\n\n// ServerParameters is used to set keepalive and max-age parameters on the\n// server-side.\ntype ServerParameters struct {\n\t// MaxConnectionIdle is a duration for the amount of time after which an\n\t// idle connection would be closed by sending a GoAway. Idleness duration is\n\t// defined since the most recent time the number of outstanding RPCs became\n\t// zero or the connection establishment.\n\tMaxConnectionIdle time.Duration // The current default value is infinity.\n\t// MaxConnectionAge is a duration for the maximum amount of time a\n\t// connection may exist before it will be closed by sending a GoAway. A\n\t// random jitter of +/-10% will be added to MaxConnectionAge to spread out\n\t// connection storms.\n\tMaxConnectionAge time.Duration // The current default value is infinity.\n\t// MaxConnectionAgeGrace is an additive period after MaxConnectionAge after\n\t// which the connection will be forcibly closed.\n\tMaxConnectionAgeGrace time.Duration // The current default value is infinity.\n\t// After a duration of this time if the server doesn't see any activity it\n\t// pings the client to see if the transport is still alive.\n\t// If set below 1s, a minimum value of 1s will be used instead.\n\tTime time.Duration // The current default value is 2 hours.\n\t// After having pinged for keepalive check, the server waits for a duration\n\t// of Timeout and if no activity is seen even after that the connection is\n\t// closed.\n\tTimeout time.Duration // The current default value is 20 seconds.\n}\n\n// EnforcementPolicy is used to set keepalive enforcement policy on the\n// server-side. Server will close connection with a client that violates this\n// policy.\ntype EnforcementPolicy struct {\n\t// MinTime is the minimum amount of time a client should wait before sending\n\t// a keepalive ping.\n\tMinTime time.Duration // The current default value is 5 minutes.\n\t// If true, server allows keepalive pings even when there are no active\n\t// streams(RPCs). If false, and client sends ping when there are no active\n\t// streams, server will send GOAWAY and close the connection.\n\tPermitWithoutStream bool // false by default.\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/mem/buffer_pool.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage mem\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/internal/mem\"\n)\n\n// BufferPool is a pool of buffers that can be shared and reused, resulting in\n// decreased memory allocation.\ntype BufferPool interface {\n\t// Get returns a buffer with specified length from the pool.\n\tGet(length int) *[]byte\n\n\t// Put returns a buffer to the pool.\n\t//\n\t// The provided pointer must hold a prefix of the buffer obtained via\n\t// BufferPool.Get to ensure the buffer's entire capacity can be re-used.\n\tPut(*[]byte)\n}\n\nvar (\n\tdefaultBufferPoolSizeExponents = []uint8{\n\t\t8,\n\t\t12, // Go page size, 4KB\n\t\t14, // 16KB (max HTTP/2 frame size used by gRPC)\n\t\t15, // 32KB (default buffer size for io.Copy)\n\t\t20, // 1MB\n\t}\n\tdefaultBufferPool BufferPool\n)\n\nfunc init() {\n\tvar err error\n\tdefaultBufferPool, err = NewBinaryTieredBufferPool(defaultBufferPoolSizeExponents...)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"Failed to create default buffer pool: %v\", err))\n\t}\n\n\tinternal.SetDefaultBufferPool = func(pool BufferPool) {\n\t\tdefaultBufferPool = pool\n\t}\n\n\tinternal.SetBufferPoolingThresholdForTesting = func(threshold int) {\n\t\tbufferPoolingThreshold = threshold\n\t}\n}\n\n// DefaultBufferPool returns the current default buffer pool. It is a BufferPool\n// created with NewBufferPool that uses a set of default sizes optimized for\n// expected workflows.\nfunc DefaultBufferPool() BufferPool {\n\treturn defaultBufferPool\n}\n\n// NewTieredBufferPool returns a BufferPool implementation that uses multiple\n// underlying pools of the given pool sizes.\nfunc NewTieredBufferPool(poolSizes ...int) BufferPool {\n\treturn mem.NewTieredBufferPool(poolSizes...)\n}\n\n// NewBinaryTieredBufferPool returns a BufferPool backed by multiple sub-pools.\n// This structure enables O(1) lookup time for Get and Put operations.\n//\n// The arguments provided are the exponents for the buffer capacities (powers\n// of 2), not the raw byte sizes. For example, to create a pool of 16KB buffers\n// (2^14 bytes), pass 14 as the argument.\nfunc NewBinaryTieredBufferPool(powerOfTwoExponents ...uint8) (BufferPool, error) {\n\treturn mem.NewBinaryTieredBufferPool(powerOfTwoExponents...)\n}\n\n// NopBufferPool is a buffer pool that returns new buffers without pooling.\ntype NopBufferPool struct {\n\tmem.NopBufferPool\n}\n\nvar _ BufferPool = NopBufferPool{}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/mem/buffer_slice.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage mem\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\nconst (\n\t// 32 KiB is what io.Copy uses.\n\treadAllBufSize = 32 * 1024\n)\n\n// BufferSlice offers a means to represent data that spans one or more Buffer\n// instances. A BufferSlice is meant to be immutable after creation, and methods\n// like Ref create and return copies of the slice. This is why all methods have\n// value receivers rather than pointer receivers.\n//\n// Note that any of the methods that read the underlying buffers such as Ref,\n// Len or CopyTo etc., will panic if any underlying buffers have already been\n// freed. It is recommended to not directly interact with any of the underlying\n// buffers directly, rather such interactions should be mediated through the\n// various methods on this type.\n//\n// By convention, any APIs that return (mem.BufferSlice, error) should reduce\n// the burden on the caller by never returning a mem.BufferSlice that needs to\n// be freed if the error is non-nil, unless explicitly stated.\ntype BufferSlice []Buffer\n\n// Len returns the sum of the length of all the Buffers in this slice.\n//\n// # Warning\n//\n// Invoking the built-in len on a BufferSlice will return the number of buffers\n// in the slice, and *not* the value returned by this function.\nfunc (s BufferSlice) Len() int {\n\tvar length int\n\tfor _, b := range s {\n\t\tlength += b.Len()\n\t}\n\treturn length\n}\n\n// Ref invokes Ref on each buffer in the slice.\nfunc (s BufferSlice) Ref() {\n\tfor _, b := range s {\n\t\tb.Ref()\n\t}\n}\n\n// Free invokes Buffer.Free() on each Buffer in the slice.\nfunc (s BufferSlice) Free() {\n\tfor _, b := range s {\n\t\tb.Free()\n\t}\n}\n\n// CopyTo copies each of the underlying Buffer's data into the given buffer,\n// returning the number of bytes copied. Has the same semantics as the copy\n// builtin in that it will copy as many bytes as it can, stopping when either dst\n// is full or s runs out of data, returning the minimum of s.Len() and len(dst).\nfunc (s BufferSlice) CopyTo(dst []byte) int {\n\toff := 0\n\tfor _, b := range s {\n\t\toff += copy(dst[off:], b.ReadOnlyData())\n\t}\n\treturn off\n}\n\n// Materialize concatenates all the underlying Buffer's data into a single\n// contiguous buffer using CopyTo.\nfunc (s BufferSlice) Materialize() []byte {\n\tl := s.Len()\n\tif l == 0 {\n\t\treturn nil\n\t}\n\tout := make([]byte, l)\n\ts.CopyTo(out)\n\treturn out\n}\n\n// MaterializeToBuffer functions like Materialize except that it writes the data\n// to a single Buffer pulled from the given BufferPool.\n//\n// As a special case, if the input BufferSlice only actually has one Buffer, this\n// function simply increases the refcount before returning said Buffer. Freeing this\n// buffer won't release it until the BufferSlice is itself released.\nfunc (s BufferSlice) MaterializeToBuffer(pool BufferPool) Buffer {\n\tif len(s) == 1 {\n\t\ts[0].Ref()\n\t\treturn s[0]\n\t}\n\tsLen := s.Len()\n\tif sLen == 0 {\n\t\treturn emptyBuffer{}\n\t}\n\tbuf := pool.Get(sLen)\n\ts.CopyTo(*buf)\n\treturn NewBuffer(buf, pool)\n}\n\n// Reader returns a new Reader for the input slice after taking references to\n// each underlying buffer.\nfunc (s BufferSlice) Reader() *Reader {\n\ts.Ref()\n\treturn &Reader{\n\t\tdata: s,\n\t\tlen:  s.Len(),\n\t}\n}\n\n// Reader exposes a BufferSlice's data as an io.Reader, allowing it to interface\n// with other systems.\n//\n// Buffers will be freed as they are read.\n//\n// A Reader can be constructed from a BufferSlice; alternatively the zero value\n// of a Reader may be used after calling Reset on it.\ntype Reader struct {\n\tdata BufferSlice\n\tlen  int\n\t// The index into data[0].ReadOnlyData().\n\tbufferIdx int\n}\n\n// Remaining returns the number of unread bytes remaining in the slice.\nfunc (r *Reader) Remaining() int {\n\treturn r.len\n}\n\n// Reset frees the currently held buffer slice and starts reading from the\n// provided slice. This allows reusing the reader object.\nfunc (r *Reader) Reset(s BufferSlice) {\n\tr.data.Free()\n\ts.Ref()\n\tr.data = s\n\tr.len = s.Len()\n\tr.bufferIdx = 0\n}\n\n// Close frees the underlying BufferSlice and never returns an error. Subsequent\n// calls to Read will return (0, io.EOF).\nfunc (r *Reader) Close() error {\n\tr.data.Free()\n\tr.data = nil\n\tr.len = 0\n\treturn nil\n}\n\nfunc (r *Reader) freeFirstBufferIfEmpty() bool {\n\tif len(r.data) == 0 || r.bufferIdx != r.data[0].Len() {\n\t\treturn false\n\t}\n\n\tr.data[0].Free()\n\tr.data = r.data[1:]\n\tr.bufferIdx = 0\n\treturn true\n}\n\nfunc (r *Reader) Read(buf []byte) (n int, _ error) {\n\tif r.len == 0 {\n\t\treturn 0, io.EOF\n\t}\n\n\tfor len(buf) != 0 && r.len != 0 {\n\t\t// Copy as much as possible from the first Buffer in the slice into the\n\t\t// given byte slice.\n\t\tdata := r.data[0].ReadOnlyData()\n\t\tcopied := copy(buf, data[r.bufferIdx:])\n\t\tr.len -= copied       // Reduce len by the number of bytes copied.\n\t\tr.bufferIdx += copied // Increment the buffer index.\n\t\tn += copied           // Increment the total number of bytes read.\n\t\tbuf = buf[copied:]    // Shrink the given byte slice.\n\n\t\t// If we have copied all the data from the first Buffer, free it and advance to\n\t\t// the next in the slice.\n\t\tr.freeFirstBufferIfEmpty()\n\t}\n\n\treturn n, nil\n}\n\n// ReadByte reads a single byte.\nfunc (r *Reader) ReadByte() (byte, error) {\n\tif r.len == 0 {\n\t\treturn 0, io.EOF\n\t}\n\n\t// There may be any number of empty buffers in the slice, clear them all until a\n\t// non-empty buffer is reached. This is guaranteed to exit since r.len is not 0.\n\tfor r.freeFirstBufferIfEmpty() {\n\t}\n\n\tb := r.data[0].ReadOnlyData()[r.bufferIdx]\n\tr.len--\n\tr.bufferIdx++\n\t// Free the first buffer in the slice if the last byte was read\n\tr.freeFirstBufferIfEmpty()\n\treturn b, nil\n}\n\nvar _ io.Writer = (*writer)(nil)\n\ntype writer struct {\n\tbuffers *BufferSlice\n\tpool    BufferPool\n}\n\nfunc (w *writer) Write(p []byte) (n int, err error) {\n\tb := Copy(p, w.pool)\n\t*w.buffers = append(*w.buffers, b)\n\treturn b.Len(), nil\n}\n\n// NewWriter wraps the given BufferSlice and BufferPool to implement the\n// io.Writer interface. Every call to Write copies the contents of the given\n// buffer into a new Buffer pulled from the given pool and the Buffer is\n// added to the given BufferSlice.\nfunc NewWriter(buffers *BufferSlice, pool BufferPool) io.Writer {\n\treturn &writer{buffers: buffers, pool: pool}\n}\n\n// ReadAll reads from r until an error or EOF and returns the data it read.\n// A successful call returns err == nil, not err == EOF. Because ReadAll is\n// defined to read from src until EOF, it does not treat an EOF from Read\n// as an error to be reported.\n//\n// Important: A failed call returns a non-nil error and may also return\n// partially read buffers. It is the responsibility of the caller to free the\n// BufferSlice returned, or its memory will not be reused.\nfunc ReadAll(r io.Reader, pool BufferPool) (BufferSlice, error) {\n\tvar result BufferSlice\n\tif wt, ok := r.(io.WriterTo); ok {\n\t\t// This is more optimal since wt knows the size of chunks it wants to\n\t\t// write and, hence, we can allocate buffers of an optimal size to fit\n\t\t// them. E.g. might be a single big chunk, and we wouldn't chop it\n\t\t// into pieces.\n\t\tw := NewWriter(&result, pool)\n\t\t_, err := wt.WriteTo(w)\n\t\treturn result, err\n\t}\nnextBuffer:\n\tfor {\n\t\tbuf := pool.Get(readAllBufSize)\n\t\t// We asked for 32KiB but may have been given a bigger buffer.\n\t\t// Use all of it if that's the case.\n\t\t*buf = (*buf)[:cap(*buf)]\n\t\tusedCap := 0\n\t\tfor {\n\t\t\tn, err := r.Read((*buf)[usedCap:])\n\t\t\tusedCap += n\n\t\t\tif err != nil {\n\t\t\t\tif usedCap == 0 {\n\t\t\t\t\t// Nothing in this buf, put it back\n\t\t\t\t\tpool.Put(buf)\n\t\t\t\t} else {\n\t\t\t\t\t*buf = (*buf)[:usedCap]\n\t\t\t\t\tresult = append(result, NewBuffer(buf, pool))\n\t\t\t\t}\n\t\t\t\tif err == io.EOF {\n\t\t\t\t\terr = nil\n\t\t\t\t}\n\t\t\t\treturn result, err\n\t\t\t}\n\t\t\tif len(*buf) == usedCap {\n\t\t\t\tresult = append(result, NewBuffer(buf, pool))\n\t\t\t\tcontinue nextBuffer\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Discard skips the next n bytes, returning the number of bytes discarded.\n//\n// It frees buffers as they are fully consumed.\n//\n// If Discard skips fewer than n bytes, it also returns an error.\nfunc (r *Reader) Discard(n int) (discarded int, err error) {\n\ttotal := n\n\tfor n > 0 && r.len > 0 {\n\t\tcurData := r.data[0].ReadOnlyData()\n\t\tcurSize := min(n, len(curData)-r.bufferIdx)\n\t\tn -= curSize\n\t\tr.len -= curSize\n\t\tr.bufferIdx += curSize\n\t\tif r.bufferIdx >= len(curData) {\n\t\t\tr.data[0].Free()\n\t\t\tr.data = r.data[1:]\n\t\t\tr.bufferIdx = 0\n\t\t}\n\t}\n\tdiscarded = total - n\n\tif n > 0 {\n\t\treturn discarded, fmt.Errorf(\"insufficient bytes in reader\")\n\t}\n\treturn discarded, nil\n}\n\n// Peek returns the next n bytes without advancing the reader.\n//\n// Peek appends results to the provided res slice and returns the updated slice.\n// This pattern allows re-using the storage of res if it has sufficient\n// capacity.\n//\n// The returned subslices are views into the underlying buffers and are only\n// valid until the reader is advanced past the corresponding buffer.\n//\n// If Peek returns fewer than n bytes, it also returns an error.\nfunc (r *Reader) Peek(n int, res [][]byte) ([][]byte, error) {\n\tfor i := 0; n > 0 && i < len(r.data); i++ {\n\t\tcurData := r.data[i].ReadOnlyData()\n\t\tstart := 0\n\t\tif i == 0 {\n\t\t\tstart = r.bufferIdx\n\t\t}\n\t\tcurSize := min(n, len(curData)-start)\n\t\tif curSize == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tres = append(res, curData[start:start+curSize])\n\t\tn -= curSize\n\t}\n\tif n > 0 {\n\t\treturn nil, fmt.Errorf(\"insufficient bytes in reader\")\n\t}\n\treturn res, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/mem/buffers.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package mem provides utilities that facilitate memory reuse in byte slices\n// that are used as buffers.\n//\n// # Experimental\n//\n// Notice: All APIs in this package are EXPERIMENTAL and may be changed or\n// removed in a later release.\npackage mem\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\t\"sync/atomic\"\n)\n\n// A Buffer represents a reference counted piece of data (in bytes) that can be\n// acquired by a call to NewBuffer() or Copy(). A reference to a Buffer may be\n// released by calling Free(), which invokes the free function given at creation\n// only after all references are released.\n//\n// Note that a Buffer is not safe for concurrent access and instead each\n// goroutine should use its own reference to the data, which can be acquired via\n// a call to Ref().\n//\n// Attempts to access the underlying data after releasing the reference to the\n// Buffer will panic.\ntype Buffer interface {\n\t// ReadOnlyData returns the underlying byte slice. Note that it is undefined\n\t// behavior to modify the contents of this slice in any way.\n\tReadOnlyData() []byte\n\t// Ref increases the reference counter for this Buffer.\n\tRef()\n\t// Free decrements this Buffer's reference counter and frees the underlying\n\t// byte slice if the counter reaches 0 as a result of this call.\n\tFree()\n\t// Len returns the Buffer's size.\n\tLen() int\n\t// Slice returns a new Buffer that is a view into this buffer's data\n\t// from [start:end). The buffer is not modified. Panics if the buffer\n\t// has been freed or if start/end are out of bounds.\n\tSlice(start, end int) Buffer\n\n\tsplit(n int) (left, right Buffer)\n\tread(buf []byte) (int, Buffer)\n}\n\nvar (\n\tbufferPoolingThreshold = 1 << 10\n\n\tbufferObjectPool = sync.Pool{New: func() any { return new(buffer) }}\n)\n\n// IsBelowBufferPoolingThreshold returns true if the given size is less than or\n// equal to the threshold for buffer pooling. This is used to determine whether\n// to pool buffers or allocate them directly.\nfunc IsBelowBufferPoolingThreshold(size int) bool {\n\treturn size <= bufferPoolingThreshold\n}\n\ntype buffer struct {\n\trefs atomic.Int32\n\tdata []byte\n\n\t// rootBuf is the buffer responsible for returning origData to the pool\n\t// once the reference count drops to 0.\n\t//\n\t// When a buffer is split, the new buffer inherits the rootBuf of the\n\t// original and increments the root's reference count. For the\n\t// initial buffer (the root), this field points to itself.\n\trootBuf *buffer\n\n\t// The following fields are only set for root buffers.\n\torigData *[]byte\n\tpool     BufferPool\n}\n\nfunc newBuffer() *buffer {\n\treturn bufferObjectPool.Get().(*buffer)\n}\n\n// NewBuffer creates a new Buffer from the given data, initializing the reference\n// counter to 1. The data will then be returned to the given pool when all\n// references to the returned Buffer are released. As a special case to avoid\n// additional allocations, if the given buffer pool is nil, the returned buffer\n// will be a \"no-op\" Buffer where invoking Buffer.Free() does nothing and the\n// underlying data is never freed.\n//\n// Note that the backing array of the given data is not copied.\nfunc NewBuffer(data *[]byte, pool BufferPool) Buffer {\n\t// Use the buffer's capacity instead of the length, otherwise buffers may\n\t// not be reused under certain conditions. For example, if a large buffer\n\t// is acquired from the pool, but fewer bytes than the buffering threshold\n\t// are written to it, the buffer will not be returned to the pool.\n\tif pool == nil || IsBelowBufferPoolingThreshold(cap(*data)) {\n\t\treturn (SliceBuffer)(*data)\n\t}\n\tb := newBuffer()\n\tb.origData = data\n\tb.data = *data\n\tb.pool = pool\n\tb.rootBuf = b\n\tb.refs.Store(1)\n\treturn b\n}\n\n// Copy creates a new Buffer from the given data, initializing the reference\n// counter to 1.\n//\n// It acquires a []byte from the given pool and copies over the backing array\n// of the given data. The []byte acquired from the pool is returned to the\n// pool when all references to the returned Buffer are released.\nfunc Copy(data []byte, pool BufferPool) Buffer {\n\tif IsBelowBufferPoolingThreshold(len(data)) {\n\t\tbuf := make(SliceBuffer, len(data))\n\t\tcopy(buf, data)\n\t\treturn buf\n\t}\n\n\tbuf := pool.Get(len(data))\n\tcopy(*buf, data)\n\treturn NewBuffer(buf, pool)\n}\n\nfunc (b *buffer) ReadOnlyData() []byte {\n\tif b.rootBuf == nil {\n\t\tpanic(\"Cannot read freed buffer\")\n\t}\n\treturn b.data\n}\n\nfunc (b *buffer) Ref() {\n\tif b.refs.Add(1) <= 1 {\n\t\tpanic(\"Cannot ref freed buffer\")\n\t}\n}\n\nfunc (b *buffer) Free() {\n\trefs := b.refs.Add(-1)\n\tif refs < 0 {\n\t\tpanic(\"Cannot free freed buffer\")\n\t}\n\tif refs > 0 {\n\t\treturn\n\t}\n\n\tb.data = nil\n\tif b.rootBuf == b {\n\t\t// This buffer is the owner of the data slice and its ref count reached\n\t\t// 0, free the slice.\n\t\tif b.pool != nil {\n\t\t\tb.pool.Put(b.origData)\n\t\t\tb.pool = nil\n\t\t}\n\t\tb.origData = nil\n\t} else {\n\t\t// This buffer doesn't own the data slice, decrement a ref on the root\n\t\t// buffer.\n\t\tb.rootBuf.Free()\n\t}\n\n\tb.rootBuf = nil\n\tbufferObjectPool.Put(b)\n}\n\nfunc (b *buffer) Len() int {\n\treturn len(b.ReadOnlyData())\n}\n\nfunc (b *buffer) Slice(start, end int) Buffer {\n\tif b.rootBuf == nil {\n\t\tpanic(\"Cannot slice freed buffer\")\n\t}\n\n\tdata := b.data[start:end] // access the data to check slice bounds\n\n\tif len(data) == 0 {\n\t\treturn emptyBuffer{}\n\t}\n\tif len(data) == len(b.data) {\n\t\tb.Ref()\n\t\treturn b\n\t}\n\t// We are creating a new reference (view) to a portion of the root buffer's\n\t// data. Therefore, we must increment the reference count of the root buffer\n\t// to ensure the underlying data is not freed while this view is still in\n\t// use.\n\tb.rootBuf.Ref()\n\ts := newBuffer()\n\ts.data = data\n\ts.rootBuf = b.rootBuf\n\ts.refs.Store(1)\n\treturn s\n}\n\nfunc (b *buffer) split(n int) (Buffer, Buffer) {\n\tif b.rootBuf == nil || b.rootBuf.refs.Add(1) <= 1 {\n\t\tpanic(\"Cannot split freed buffer\")\n\t}\n\n\tsplit := newBuffer()\n\tsplit.data = b.data[n:]\n\tsplit.rootBuf = b.rootBuf\n\tsplit.refs.Store(1)\n\n\tb.data = b.data[:n]\n\n\treturn b, split\n}\n\nfunc (b *buffer) read(buf []byte) (int, Buffer) {\n\tif b.rootBuf == nil {\n\t\tpanic(\"Cannot read freed buffer\")\n\t}\n\n\tn := copy(buf, b.data)\n\tif n == len(b.data) {\n\t\tb.Free()\n\t\treturn n, nil\n\t}\n\n\tb.data = b.data[n:]\n\treturn n, b\n}\n\nfunc (b *buffer) String() string {\n\treturn fmt.Sprintf(\"mem.Buffer(%p, data: %p, length: %d)\", b, b.ReadOnlyData(), len(b.ReadOnlyData()))\n}\n\n// ReadUnsafe reads bytes from the given Buffer into the provided slice.\n// It does not perform safety checks.\nfunc ReadUnsafe(dst []byte, buf Buffer) (int, Buffer) {\n\treturn buf.read(dst)\n}\n\n// SplitUnsafe modifies the receiver to point to the first n bytes while it\n// returns a new reference to the remaining bytes. The returned Buffer\n// functions just like a normal reference acquired using Ref().\nfunc SplitUnsafe(buf Buffer, n int) (left, right Buffer) {\n\treturn buf.split(n)\n}\n\ntype emptyBuffer struct{}\n\nfunc (e emptyBuffer) ReadOnlyData() []byte {\n\treturn nil\n}\n\nfunc (e emptyBuffer) Ref()  {}\nfunc (e emptyBuffer) Free() {}\n\nfunc (e emptyBuffer) Len() int {\n\treturn 0\n}\n\nfunc (e emptyBuffer) Slice(start, end int) Buffer {\n\tif start != 0 || end != 0 {\n\t\tpanic(fmt.Sprintf(\"slice bounds out of range [%d:%d] with length 0\", start, end))\n\t}\n\treturn e\n}\n\nfunc (e emptyBuffer) split(int) (left, right Buffer) {\n\treturn e, e\n}\n\nfunc (e emptyBuffer) read([]byte) (int, Buffer) {\n\treturn 0, e\n}\n\n// SliceBuffer is a Buffer implementation that wraps a byte slice. It provides\n// methods for reading, splitting, and managing the byte slice.\ntype SliceBuffer []byte\n\n// ReadOnlyData returns the byte slice.\nfunc (s SliceBuffer) ReadOnlyData() []byte { return s }\n\n// Ref is a noop implementation of Ref.\nfunc (s SliceBuffer) Ref() {}\n\n// Free is a noop implementation of Free.\nfunc (s SliceBuffer) Free() {}\n\n// Len is a noop implementation of Len.\nfunc (s SliceBuffer) Len() int { return len(s) }\n\n// Slice returns a new SliceBuffer that is a view into the receiver from [start:end).\nfunc (s SliceBuffer) Slice(start, end int) Buffer { return s[start:end] }\n\nfunc (s SliceBuffer) split(n int) (left, right Buffer) {\n\treturn s[:n], s[n:]\n}\n\nfunc (s SliceBuffer) read(buf []byte) (int, Buffer) {\n\tn := copy(buf, s)\n\tif n == len(s) {\n\t\treturn n, nil\n\t}\n\treturn n, s[n:]\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/metadata/metadata.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package metadata define the structure of the metadata supported by gRPC library.\n// Please refer to https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md\n// for more information about custom-metadata.\npackage metadata // import \"google.golang.org/grpc/metadata\"\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"google.golang.org/grpc/internal\"\n)\n\nfunc init() {\n\tinternal.FromOutgoingContextRaw = fromOutgoingContextRaw\n}\n\n// DecodeKeyValue returns k, v, nil.\n//\n// Deprecated: use k and v directly instead.\nfunc DecodeKeyValue(k, v string) (string, string, error) {\n\treturn k, v, nil\n}\n\n// MD is a mapping from metadata keys to values. Users should use the following\n// two convenience functions New and Pairs to generate MD.\ntype MD map[string][]string\n\n// New creates an MD from a given key-value map.\n//\n// Only the following ASCII characters are allowed in keys:\n//   - digits: 0-9\n//   - uppercase letters: A-Z (normalized to lower)\n//   - lowercase letters: a-z\n//   - special characters: -_.\n//\n// Uppercase letters are automatically converted to lowercase.\n//\n// Keys beginning with \"grpc-\" are reserved for grpc-internal use only and may\n// result in errors if set in metadata.\nfunc New(m map[string]string) MD {\n\tmd := make(MD, len(m))\n\tfor k, val := range m {\n\t\tkey := strings.ToLower(k)\n\t\tmd[key] = append(md[key], val)\n\t}\n\treturn md\n}\n\n// Pairs returns an MD formed by the mapping of key, value ...\n// Pairs panics if len(kv) is odd.\n//\n// Only the following ASCII characters are allowed in keys:\n//   - digits: 0-9\n//   - uppercase letters: A-Z (normalized to lower)\n//   - lowercase letters: a-z\n//   - special characters: -_.\n//\n// Uppercase letters are automatically converted to lowercase.\n//\n// Keys beginning with \"grpc-\" are reserved for grpc-internal use only and may\n// result in errors if set in metadata.\nfunc Pairs(kv ...string) MD {\n\tif len(kv)%2 == 1 {\n\t\tpanic(fmt.Sprintf(\"metadata: Pairs got the odd number of input pairs for metadata: %d\", len(kv)))\n\t}\n\tmd := make(MD, len(kv)/2)\n\tfor i := 0; i < len(kv); i += 2 {\n\t\tkey := strings.ToLower(kv[i])\n\t\tmd[key] = append(md[key], kv[i+1])\n\t}\n\treturn md\n}\n\n// Len returns the number of items in md.\nfunc (md MD) Len() int {\n\treturn len(md)\n}\n\n// Copy returns a copy of md.\nfunc (md MD) Copy() MD {\n\tout := make(MD, len(md))\n\tfor k, v := range md {\n\t\tout[k] = copyOf(v)\n\t}\n\treturn out\n}\n\n// Get obtains the values for a given key.\n//\n// k is converted to lowercase before searching in md.\nfunc (md MD) Get(k string) []string {\n\tk = strings.ToLower(k)\n\treturn md[k]\n}\n\n// Set sets the value of a given key with a slice of values.\n//\n// k is converted to lowercase before storing in md.\nfunc (md MD) Set(k string, vals ...string) {\n\tif len(vals) == 0 {\n\t\treturn\n\t}\n\tk = strings.ToLower(k)\n\tmd[k] = vals\n}\n\n// Append adds the values to key k, not overwriting what was already stored at\n// that key.\n//\n// k is converted to lowercase before storing in md.\nfunc (md MD) Append(k string, vals ...string) {\n\tif len(vals) == 0 {\n\t\treturn\n\t}\n\tk = strings.ToLower(k)\n\tmd[k] = append(md[k], vals...)\n}\n\n// Delete removes the values for a given key k which is converted to lowercase\n// before removing it from md.\nfunc (md MD) Delete(k string) {\n\tk = strings.ToLower(k)\n\tdelete(md, k)\n}\n\n// Join joins any number of mds into a single MD.\n//\n// The order of values for each key is determined by the order in which the mds\n// containing those values are presented to Join.\nfunc Join(mds ...MD) MD {\n\tout := MD{}\n\tfor _, md := range mds {\n\t\tfor k, v := range md {\n\t\t\tout[k] = append(out[k], v...)\n\t\t}\n\t}\n\treturn out\n}\n\ntype mdIncomingKey struct{}\ntype mdOutgoingKey struct{}\n\n// NewIncomingContext creates a new context with incoming md attached. md must\n// not be modified after calling this function.\nfunc NewIncomingContext(ctx context.Context, md MD) context.Context {\n\treturn context.WithValue(ctx, mdIncomingKey{}, md)\n}\n\n// NewOutgoingContext creates a new context with outgoing md attached. If used\n// in conjunction with AppendToOutgoingContext, NewOutgoingContext will\n// overwrite any previously-appended metadata. md must not be modified after\n// calling this function.\nfunc NewOutgoingContext(ctx context.Context, md MD) context.Context {\n\treturn context.WithValue(ctx, mdOutgoingKey{}, rawMD{md: md})\n}\n\n// AppendToOutgoingContext returns a new context with the provided kv merged\n// with any existing metadata in the context. Please refer to the documentation\n// of Pairs for a description of kv.\nfunc AppendToOutgoingContext(ctx context.Context, kv ...string) context.Context {\n\tif len(kv)%2 == 1 {\n\t\tpanic(fmt.Sprintf(\"metadata: AppendToOutgoingContext got an odd number of input pairs for metadata: %d\", len(kv)))\n\t}\n\tmd, _ := ctx.Value(mdOutgoingKey{}).(rawMD)\n\tadded := make([][]string, len(md.added)+1)\n\tcopy(added, md.added)\n\tkvCopy := make([]string, 0, len(kv))\n\tfor i := 0; i < len(kv); i += 2 {\n\t\tkvCopy = append(kvCopy, strings.ToLower(kv[i]), kv[i+1])\n\t}\n\tadded[len(added)-1] = kvCopy\n\treturn context.WithValue(ctx, mdOutgoingKey{}, rawMD{md: md.md, added: added})\n}\n\n// FromIncomingContext returns the incoming metadata in ctx if it exists.\n//\n// All keys in the returned MD are lowercase.\nfunc FromIncomingContext(ctx context.Context) (MD, bool) {\n\tmd, ok := ctx.Value(mdIncomingKey{}).(MD)\n\tif !ok {\n\t\treturn nil, false\n\t}\n\tout := make(MD, len(md))\n\tfor k, v := range md {\n\t\t// We need to manually convert all keys to lower case, because MD is a\n\t\t// map, and there's no guarantee that the MD attached to the context is\n\t\t// created using our helper functions.\n\t\tkey := strings.ToLower(k)\n\t\tout[key] = copyOf(v)\n\t}\n\treturn out, true\n}\n\n// ValueFromIncomingContext returns the metadata value corresponding to the metadata\n// key from the incoming metadata if it exists. Keys are matched in a case insensitive\n// manner.\nfunc ValueFromIncomingContext(ctx context.Context, key string) []string {\n\tmd, ok := ctx.Value(mdIncomingKey{}).(MD)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tif v, ok := md[key]; ok {\n\t\treturn copyOf(v)\n\t}\n\tfor k, v := range md {\n\t\t// Case insensitive comparison: MD is a map, and there's no guarantee\n\t\t// that the MD attached to the context is created using our helper\n\t\t// functions.\n\t\tif strings.EqualFold(k, key) {\n\t\t\treturn copyOf(v)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc copyOf(v []string) []string {\n\tvals := make([]string, len(v))\n\tcopy(vals, v)\n\treturn vals\n}\n\n// fromOutgoingContextRaw returns the un-merged, intermediary contents of rawMD.\n//\n// Remember to perform strings.ToLower on the keys, for both the returned MD (MD\n// is a map, there's no guarantee it's created using our helper functions) and\n// the extra kv pairs (AppendToOutgoingContext doesn't turn them into\n// lowercase).\nfunc fromOutgoingContextRaw(ctx context.Context) (MD, [][]string, bool) {\n\traw, ok := ctx.Value(mdOutgoingKey{}).(rawMD)\n\tif !ok {\n\t\treturn nil, nil, false\n\t}\n\n\treturn raw.md, raw.added, true\n}\n\n// FromOutgoingContext returns the outgoing metadata in ctx if it exists.\n//\n// All keys in the returned MD are lowercase.\nfunc FromOutgoingContext(ctx context.Context) (MD, bool) {\n\traw, ok := ctx.Value(mdOutgoingKey{}).(rawMD)\n\tif !ok {\n\t\treturn nil, false\n\t}\n\n\tmdSize := len(raw.md)\n\tfor i := range raw.added {\n\t\tmdSize += len(raw.added[i]) / 2\n\t}\n\n\tout := make(MD, mdSize)\n\tfor k, v := range raw.md {\n\t\t// We need to manually convert all keys to lower case, because MD is a\n\t\t// map, and there's no guarantee that the MD attached to the context is\n\t\t// created using our helper functions.\n\t\tkey := strings.ToLower(k)\n\t\tout[key] = copyOf(v)\n\t}\n\tfor _, added := range raw.added {\n\t\tif len(added)%2 == 1 {\n\t\t\tpanic(fmt.Sprintf(\"metadata: FromOutgoingContext got an odd number of input pairs for metadata: %d\", len(added)))\n\t\t}\n\n\t\tfor i := 0; i < len(added); i += 2 {\n\t\t\tkey := strings.ToLower(added[i])\n\t\t\tout[key] = append(out[key], added[i+1])\n\t\t}\n\t}\n\treturn out, ok\n}\n\ntype rawMD struct {\n\tmd    MD\n\tadded [][]string\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/peer/peer.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package peer defines various peer information associated with RPCs and\n// corresponding utils.\npackage peer\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net\"\n\t\"strings\"\n\n\t\"google.golang.org/grpc/credentials\"\n)\n\n// Peer contains the information of the peer for an RPC, such as the address\n// and authentication information.\ntype Peer struct {\n\t// Addr is the peer address.\n\tAddr net.Addr\n\t// LocalAddr is the local address.\n\tLocalAddr net.Addr\n\t// AuthInfo is the authentication information of the transport.\n\t// It is nil if there is no transport security being used.\n\tAuthInfo credentials.AuthInfo\n}\n\n// String ensures the Peer types implements the Stringer interface in order to\n// allow to print a context with a peerKey value effectively.\nfunc (p *Peer) String() string {\n\tif p == nil {\n\t\treturn \"Peer<nil>\"\n\t}\n\tsb := &strings.Builder{}\n\tsb.WriteString(\"Peer{\")\n\tif p.Addr != nil {\n\t\tfmt.Fprintf(sb, \"Addr: '%s', \", p.Addr.String())\n\t} else {\n\t\tfmt.Fprintf(sb, \"Addr: <nil>, \")\n\t}\n\tif p.LocalAddr != nil {\n\t\tfmt.Fprintf(sb, \"LocalAddr: '%s', \", p.LocalAddr.String())\n\t} else {\n\t\tfmt.Fprintf(sb, \"LocalAddr: <nil>, \")\n\t}\n\tif p.AuthInfo != nil {\n\t\tfmt.Fprintf(sb, \"AuthInfo: '%s'\", p.AuthInfo.AuthType())\n\t} else {\n\t\tfmt.Fprintf(sb, \"AuthInfo: <nil>\")\n\t}\n\tsb.WriteString(\"}\")\n\n\treturn sb.String()\n}\n\ntype peerKey struct{}\n\n// NewContext creates a new context with peer information attached.\nfunc NewContext(ctx context.Context, p *Peer) context.Context {\n\treturn context.WithValue(ctx, peerKey{}, p)\n}\n\n// FromContext returns the peer information in ctx if it exists.\nfunc FromContext(ctx context.Context) (p *Peer, ok bool) {\n\tp, ok = ctx.Value(peerKey{}).(*Peer)\n\treturn\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/picker_wrapper.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\tistatus \"google.golang.org/grpc/internal/status\"\n\t\"google.golang.org/grpc/internal/transport\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// pickerGeneration stores a picker and a channel used to signal that a picker\n// newer than this one is available.\ntype pickerGeneration struct {\n\t// picker is the picker produced by the LB policy.  May be nil if a picker\n\t// has never been produced.\n\tpicker balancer.Picker\n\t// blockingCh is closed when the picker has been invalidated because there\n\t// is a new one available.\n\tblockingCh chan struct{}\n}\n\n// pickerWrapper is a wrapper of balancer.Picker. It blocks on certain pick\n// actions and unblock when there's a picker update.\ntype pickerWrapper struct {\n\t// If pickerGen holds a nil pointer, the pickerWrapper is closed.\n\tpickerGen atomic.Pointer[pickerGeneration]\n}\n\nfunc newPickerWrapper() *pickerWrapper {\n\tpw := &pickerWrapper{}\n\tpw.pickerGen.Store(&pickerGeneration{\n\t\tblockingCh: make(chan struct{}),\n\t})\n\treturn pw\n}\n\n// updatePicker is called by UpdateState calls from the LB policy. It\n// unblocks all blocked pick.\nfunc (pw *pickerWrapper) updatePicker(p balancer.Picker) {\n\told := pw.pickerGen.Swap(&pickerGeneration{\n\t\tpicker:     p,\n\t\tblockingCh: make(chan struct{}),\n\t})\n\tclose(old.blockingCh)\n}\n\n// doneChannelzWrapper performs the following:\n//   - increments the calls started channelz counter\n//   - wraps the done function in the passed in result to increment the calls\n//     failed or calls succeeded channelz counter before invoking the actual\n//     done function.\nfunc doneChannelzWrapper(acbw *acBalancerWrapper, result *balancer.PickResult) {\n\tac := acbw.ac\n\tac.incrCallsStarted()\n\tdone := result.Done\n\tresult.Done = func(b balancer.DoneInfo) {\n\t\tif b.Err != nil && b.Err != io.EOF {\n\t\t\tac.incrCallsFailed()\n\t\t} else {\n\t\t\tac.incrCallsSucceeded()\n\t\t}\n\t\tif done != nil {\n\t\t\tdone(b)\n\t\t}\n\t}\n}\n\ntype pick struct {\n\ttransport transport.ClientTransport // the selected transport\n\tresult    balancer.PickResult       // the contents of the pick from the LB policy\n\tblocked   bool                      // set if a picker call queued for a new picker\n}\n\n// pick returns the transport that will be used for the RPC.\n// It may block in the following cases:\n// - there's no picker\n// - the current picker returns ErrNoSubConnAvailable\n// - the current picker returns other errors and failfast is false.\n// - the subConn returned by the current picker is not READY\n// When one of these situations happens, pick blocks until the picker gets updated.\nfunc (pw *pickerWrapper) pick(ctx context.Context, failfast bool, info balancer.PickInfo) (pick, error) {\n\tvar ch chan struct{}\n\n\tvar lastPickErr error\n\tpickBlocked := false\n\n\tfor {\n\t\tpg := pw.pickerGen.Load()\n\t\tif pg == nil {\n\t\t\treturn pick{}, ErrClientConnClosing\n\t\t}\n\t\tif pg.picker == nil {\n\t\t\tch = pg.blockingCh\n\t\t}\n\t\tif ch == pg.blockingCh {\n\t\t\t// This could happen when either:\n\t\t\t// - pw.picker is nil (the previous if condition), or\n\t\t\t// - we have already called pick on the current picker.\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\tvar errStr string\n\t\t\t\tif lastPickErr != nil {\n\t\t\t\t\terrStr = \"latest balancer error: \" + lastPickErr.Error()\n\t\t\t\t} else {\n\t\t\t\t\terrStr = fmt.Sprintf(\"%v while waiting for connections to become ready\", ctx.Err())\n\t\t\t\t}\n\t\t\t\tswitch ctx.Err() {\n\t\t\t\tcase context.DeadlineExceeded:\n\t\t\t\t\treturn pick{}, status.Error(codes.DeadlineExceeded, errStr)\n\t\t\t\tcase context.Canceled:\n\t\t\t\t\treturn pick{}, status.Error(codes.Canceled, errStr)\n\t\t\t\t}\n\t\t\tcase <-ch:\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// If the channel is set, it means that the pick call had to wait for a\n\t\t// new picker at some point. Either it's the first iteration and this\n\t\t// function received the first picker, or a picker errored with\n\t\t// ErrNoSubConnAvailable or errored with failfast set to false, which\n\t\t// will trigger a continue to the next iteration. In the first case this\n\t\t// conditional will hit if this call had to block (the channel is set).\n\t\t// In the second case, the only way it will get to this conditional is\n\t\t// if there is a new picker.\n\t\tif ch != nil {\n\t\t\tpickBlocked = true\n\t\t}\n\n\t\tch = pg.blockingCh\n\t\tp := pg.picker\n\n\t\tpickResult, err := p.Pick(info)\n\t\tif err != nil {\n\t\t\tif err == balancer.ErrNoSubConnAvailable {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif st, ok := status.FromError(err); ok {\n\t\t\t\t// Status error: end the RPC unconditionally with this status.\n\t\t\t\t// First restrict the code to the list allowed by gRFC A54.\n\t\t\t\tif istatus.IsRestrictedControlPlaneCode(st) {\n\t\t\t\t\terr = status.Errorf(codes.Internal, \"received picker error with illegal status: %v\", err)\n\t\t\t\t}\n\t\t\t\treturn pick{}, dropError{error: err}\n\t\t\t}\n\t\t\t// For all other errors, wait for ready RPCs should block and other\n\t\t\t// RPCs should fail with unavailable.\n\t\t\tif !failfast {\n\t\t\t\tlastPickErr = err\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn pick{}, status.Error(codes.Unavailable, err.Error())\n\t\t}\n\n\t\tacbw, ok := pickResult.SubConn.(*acBalancerWrapper)\n\t\tif !ok {\n\t\t\tlogger.Errorf(\"subconn returned from pick is type %T, not *acBalancerWrapper\", pickResult.SubConn)\n\t\t\tcontinue\n\t\t}\n\t\tif t := acbw.ac.getReadyTransport(); t != nil {\n\t\t\tif channelz.IsOn() {\n\t\t\t\tdoneChannelzWrapper(acbw, &pickResult)\n\t\t\t}\n\t\t\treturn pick{transport: t, result: pickResult, blocked: pickBlocked}, nil\n\t\t}\n\t\tif pickResult.Done != nil {\n\t\t\t// Calling done with nil error, no bytes sent and no bytes received.\n\t\t\t// DoneInfo with default value works.\n\t\t\tpickResult.Done(balancer.DoneInfo{})\n\t\t}\n\t\tif logger.V(2) {\n\t\t\tlogger.Infof(\"blockingPicker: the picked transport is not ready, loop back to repick\")\n\t\t}\n\t\t// If ok == false, ac.state is not READY.\n\t\t// A valid picker always returns READY subConn. This means the state of ac\n\t\t// just changed, and picker will be updated shortly.\n\t\t// continue back to the beginning of the for loop to repick.\n\t}\n}\n\nfunc (pw *pickerWrapper) close() {\n\told := pw.pickerGen.Swap(nil)\n\tclose(old.blockingCh)\n}\n\n// reset clears the pickerWrapper and prepares it for being used again when idle\n// mode is exited.\nfunc (pw *pickerWrapper) reset() {\n\told := pw.pickerGen.Swap(&pickerGeneration{blockingCh: make(chan struct{})})\n\tclose(old.blockingCh)\n}\n\n// dropError is a wrapper error that indicates the LB policy wishes to drop the\n// RPC and not retry it.\ntype dropError struct {\n\terror\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/preloader.go",
    "content": "/*\n *\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/mem\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// PreparedMsg is responsible for creating a Marshalled and Compressed object.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype PreparedMsg struct {\n\t// Struct for preparing msg before sending them\n\tencodedData mem.BufferSlice\n\thdr         []byte\n\tpayload     mem.BufferSlice\n\tpf          payloadFormat\n}\n\n// Encode marshalls and compresses the message using the codec and compressor for the stream.\nfunc (p *PreparedMsg) Encode(s Stream, msg any) error {\n\tctx := s.Context()\n\trpcInfo, ok := rpcInfoFromContext(ctx)\n\tif !ok {\n\t\treturn status.Errorf(codes.Internal, \"grpc: unable to get rpcInfo\")\n\t}\n\n\t// check if the context has the relevant information to prepareMsg\n\tif rpcInfo.preloaderInfo.codec == nil {\n\t\treturn status.Errorf(codes.Internal, \"grpc: rpcInfo.preloaderInfo.codec is nil\")\n\t}\n\n\t// prepare the msg\n\tdata, err := encode(rpcInfo.preloaderInfo.codec, msg)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tmaterializedData := data.Materialize()\n\tdata.Free()\n\tp.encodedData = mem.BufferSlice{mem.SliceBuffer(materializedData)}\n\n\t// TODO: it should be possible to grab the bufferPool from the underlying\n\t//  stream implementation with a type cast to its actual type (such as\n\t//  addrConnStream) and accessing the buffer pool directly.\n\tvar compData mem.BufferSlice\n\tcompData, p.pf, err = compress(p.encodedData, rpcInfo.preloaderInfo.cp, rpcInfo.preloaderInfo.comp, mem.DefaultBufferPool())\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif p.pf.isCompressed() {\n\t\tmaterializedCompData := compData.Materialize()\n\t\tcompData.Free()\n\t\tcompData = mem.BufferSlice{mem.SliceBuffer(materializedCompData)}\n\t}\n\n\tp.hdr, p.payload = msgHeader(p.encodedData, compData, p.pf)\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package dns implements a dns resolver to be installed as the default resolver\n// in grpc.\npackage dns\n\nimport (\n\t\"time\"\n\n\t\"google.golang.org/grpc/internal/resolver/dns\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\n// SetResolvingTimeout sets the maximum duration for DNS resolution requests.\n//\n// This function affects the global timeout used by all channels using the DNS\n// name resolver scheme.\n//\n// It must be called only at application startup, before any gRPC calls are\n// made. Modifying this value after initialization is not thread-safe.\n//\n// The default value is 30 seconds. Setting the timeout too low may result in\n// premature timeouts during resolution, while setting it too high may lead to\n// unnecessary delays in service discovery. Choose a value appropriate for your\n// specific needs and network environment.\nfunc SetResolvingTimeout(timeout time.Duration) {\n\tdns.ResolvingTimeout = timeout\n}\n\n// NewBuilder creates a dnsBuilder which is used to factory DNS resolvers.\n//\n// Deprecated: import grpc and use resolver.Get(\"dns\") instead.\nfunc NewBuilder() resolver.Builder {\n\treturn dns.NewBuilder()\n}\n\n// SetMinResolutionInterval sets the default minimum interval at which DNS\n// re-resolutions are allowed. This helps to prevent excessive re-resolution.\n//\n// It must be called only at application startup, before any gRPC calls are\n// made. Modifying this value after initialization is not thread-safe.\nfunc SetMinResolutionInterval(d time.Duration) {\n\tdns.MinResolutionInterval = d\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/resolver/map.go",
    "content": "/*\n *\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage resolver\n\nimport (\n\t\"encoding/base64\"\n\t\"iter\"\n\t\"sort\"\n\t\"strings\"\n)\n\ntype addressMapEntry[T any] struct {\n\taddr  Address\n\tvalue T\n}\n\n// AddressMap is an AddressMapV2[any].  It will be deleted in an upcoming\n// release of grpc-go.\n//\n// Deprecated: use the generic AddressMapV2 type instead.\ntype AddressMap = AddressMapV2[any]\n\n// AddressMapV2 is a map of addresses to arbitrary values taking into account\n// Attributes.  BalancerAttributes are ignored, as are Metadata and Type.\n// Multiple accesses may not be performed concurrently.  Must be created via\n// NewAddressMap; do not construct directly.\ntype AddressMapV2[T any] struct {\n\t// The underlying map is keyed by an Address with fields that we don't care\n\t// about being set to their zero values. The only fields that we care about\n\t// are `Addr`, `ServerName` and `Attributes`. Since we need to be able to\n\t// distinguish between addresses with same `Addr` and `ServerName`, but\n\t// different `Attributes`, we cannot store the `Attributes` in the map key.\n\t//\n\t// The comparison operation for structs work as follows:\n\t//  Struct values are comparable if all their fields are comparable. Two\n\t//  struct values are equal if their corresponding non-blank fields are equal.\n\t//\n\t// The value type of the map contains a slice of addresses which match the key\n\t// in their `Addr` and `ServerName` fields and contain the corresponding value\n\t// associated with them.\n\tm map[Address]addressMapEntryList[T]\n}\n\nfunc toMapKey(addr *Address) Address {\n\treturn Address{Addr: addr.Addr, ServerName: addr.ServerName}\n}\n\ntype addressMapEntryList[T any] []*addressMapEntry[T]\n\n// NewAddressMap creates a new AddressMapV2[any].\n//\n// Deprecated: use the generic NewAddressMapV2 constructor instead.\nfunc NewAddressMap() *AddressMap {\n\treturn NewAddressMapV2[any]()\n}\n\n// NewAddressMapV2 creates a new AddressMapV2.\nfunc NewAddressMapV2[T any]() *AddressMapV2[T] {\n\treturn &AddressMapV2[T]{m: make(map[Address]addressMapEntryList[T])}\n}\n\n// find returns the index of addr in the addressMapEntry slice, or -1 if not\n// present.\nfunc (l addressMapEntryList[T]) find(addr Address) int {\n\tfor i, entry := range l {\n\t\t// Attributes are the only thing to match on here, since `Addr` and\n\t\t// `ServerName` are already equal.\n\t\tif entry.addr.Attributes.Equal(addr.Attributes) {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\n// Get returns the value for the address in the map, if present.\nfunc (a *AddressMapV2[T]) Get(addr Address) (value T, ok bool) {\n\taddrKey := toMapKey(&addr)\n\tentryList := a.m[addrKey]\n\tif entry := entryList.find(addr); entry != -1 {\n\t\treturn entryList[entry].value, true\n\t}\n\treturn value, false\n}\n\n// Set updates or adds the value to the address in the map.\nfunc (a *AddressMapV2[T]) Set(addr Address, value T) {\n\taddrKey := toMapKey(&addr)\n\tentryList := a.m[addrKey]\n\tif entry := entryList.find(addr); entry != -1 {\n\t\tentryList[entry].value = value\n\t\treturn\n\t}\n\ta.m[addrKey] = append(entryList, &addressMapEntry[T]{addr: addr, value: value})\n}\n\n// Delete removes addr from the map.\nfunc (a *AddressMapV2[T]) Delete(addr Address) {\n\taddrKey := toMapKey(&addr)\n\tentryList := a.m[addrKey]\n\tentry := entryList.find(addr)\n\tif entry == -1 {\n\t\treturn\n\t}\n\tif len(entryList) == 1 {\n\t\tentryList = nil\n\t} else {\n\t\tcopy(entryList[entry:], entryList[entry+1:])\n\t\tentryList = entryList[:len(entryList)-1]\n\t}\n\ta.m[addrKey] = entryList\n}\n\n// Len returns the number of entries in the map.\nfunc (a *AddressMapV2[T]) Len() int {\n\tret := 0\n\tfor _, entryList := range a.m {\n\t\tret += len(entryList)\n\t}\n\treturn ret\n}\n\n// Keys returns a slice of all current map keys.\n// Deprecated: Use AddressMapV2.All() instead.\nfunc (a *AddressMapV2[T]) Keys() []Address {\n\tret := make([]Address, 0, a.Len())\n\tfor _, entryList := range a.m {\n\t\tfor _, entry := range entryList {\n\t\t\tret = append(ret, entry.addr)\n\t\t}\n\t}\n\treturn ret\n}\n\n// Values returns a slice of all current map values.\n// Deprecated: Use AddressMapV2.All() instead.\nfunc (a *AddressMapV2[T]) Values() []T {\n\tret := make([]T, 0, a.Len())\n\tfor _, entryList := range a.m {\n\t\tfor _, entry := range entryList {\n\t\t\tret = append(ret, entry.value)\n\t\t}\n\t}\n\treturn ret\n}\n\n// All returns an iterator over all elements.\nfunc (a *AddressMapV2[T]) All() iter.Seq2[Address, T] {\n\treturn func(yield func(Address, T) bool) {\n\t\tfor _, entryList := range a.m {\n\t\t\tfor _, entry := range entryList {\n\t\t\t\tif !yield(entry.addr, entry.value) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\ntype endpointMapKey string\n\n// EndpointMap is a map of endpoints to arbitrary values keyed on only the\n// unordered set of address strings within an endpoint. This map is not thread\n// safe, thus it is unsafe to access concurrently. Must be created via\n// NewEndpointMap; do not construct directly.\ntype EndpointMap[T any] struct {\n\tendpoints map[endpointMapKey]endpointData[T]\n}\n\ntype endpointData[T any] struct {\n\t// decodedKey stores the original key to avoid decoding when iterating on\n\t// EndpointMap keys.\n\tdecodedKey Endpoint\n\tvalue      T\n}\n\n// NewEndpointMap creates a new EndpointMap.\nfunc NewEndpointMap[T any]() *EndpointMap[T] {\n\treturn &EndpointMap[T]{\n\t\tendpoints: make(map[endpointMapKey]endpointData[T]),\n\t}\n}\n\n// encodeEndpoint returns a string that uniquely identifies the unordered set of\n// addresses within an endpoint.\nfunc encodeEndpoint(e Endpoint) endpointMapKey {\n\taddrs := make([]string, 0, len(e.Addresses))\n\t// base64 encoding the address strings restricts the characters present\n\t// within the strings. This allows us to use a delimiter without the need of\n\t// escape characters.\n\tfor _, addr := range e.Addresses {\n\t\taddrs = append(addrs, base64.StdEncoding.EncodeToString([]byte(addr.Addr)))\n\t}\n\tsort.Strings(addrs)\n\t// \" \" should not appear in base64 encoded strings.\n\treturn endpointMapKey(strings.Join(addrs, \" \"))\n}\n\n// Get returns the value for the address in the map, if present.\nfunc (em *EndpointMap[T]) Get(e Endpoint) (value T, ok bool) {\n\tval, found := em.endpoints[encodeEndpoint(e)]\n\tif found {\n\t\treturn val.value, true\n\t}\n\treturn value, false\n}\n\n// Set updates or adds the value to the address in the map.\nfunc (em *EndpointMap[T]) Set(e Endpoint, value T) {\n\ten := encodeEndpoint(e)\n\tem.endpoints[en] = endpointData[T]{\n\t\tdecodedKey: Endpoint{Addresses: e.Addresses},\n\t\tvalue:      value,\n\t}\n}\n\n// Len returns the number of entries in the map.\nfunc (em *EndpointMap[T]) Len() int {\n\treturn len(em.endpoints)\n}\n\n// Keys returns a slice of all current map keys, as endpoints specifying the\n// addresses present in the endpoint keys, in which uniqueness is determined by\n// the unordered set of addresses. Thus, endpoint information returned is not\n// the full endpoint data (drops duplicated addresses and attributes) but can be\n// used for EndpointMap accesses.\n// Deprecated: Use EndpointMap.All() instead.\nfunc (em *EndpointMap[T]) Keys() []Endpoint {\n\tret := make([]Endpoint, 0, len(em.endpoints))\n\tfor _, en := range em.endpoints {\n\t\tret = append(ret, en.decodedKey)\n\t}\n\treturn ret\n}\n\n// Values returns a slice of all current map values.\n// Deprecated: Use EndpointMap.All() instead.\nfunc (em *EndpointMap[T]) Values() []T {\n\tret := make([]T, 0, len(em.endpoints))\n\tfor _, val := range em.endpoints {\n\t\tret = append(ret, val.value)\n\t}\n\treturn ret\n}\n\n// All returns an iterator over all elements.\n// The map keys are endpoints specifying the addresses present in the endpoint\n// map, in which uniqueness is determined by the unordered set of addresses.\n// Thus, endpoint information returned is not the full endpoint data (drops\n// duplicated addresses and attributes) but can be used for EndpointMap\n// accesses.\nfunc (em *EndpointMap[T]) All() iter.Seq2[Endpoint, T] {\n\treturn func(yield func(Endpoint, T) bool) {\n\t\tfor _, en := range em.endpoints {\n\t\t\tif !yield(en.decodedKey, en.value) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Delete removes the specified endpoint from the map.\nfunc (em *EndpointMap[T]) Delete(e Endpoint) {\n\ten := encodeEndpoint(e)\n\tdelete(em.endpoints, en)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/resolver/resolver.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package resolver defines APIs for name resolution in gRPC.\n// All APIs in this package are experimental.\npackage resolver\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"strings\"\n\n\t\"google.golang.org/grpc/attributes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/experimental/stats\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nvar (\n\t// m is a map from scheme to resolver builder.\n\tm = make(map[string]Builder)\n\t// defaultScheme is the default scheme to use.\n\tdefaultScheme = \"passthrough\"\n)\n\n// TODO(bar) install dns resolver in init(){}.\n\n// Register registers the resolver builder to the resolver map. b.Scheme will\n// be used as the scheme registered with this builder. The registry is case\n// sensitive, and schemes should not contain any uppercase characters.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. If multiple Resolvers are\n// registered with the same name, the one registered last will take effect.\nfunc Register(b Builder) {\n\tm[b.Scheme()] = b\n}\n\n// Get returns the resolver builder registered with the given scheme.\n//\n// If no builder is register with the scheme, nil will be returned.\nfunc Get(scheme string) Builder {\n\tif b, ok := m[scheme]; ok {\n\t\treturn b\n\t}\n\treturn nil\n}\n\n// SetDefaultScheme sets the default scheme that will be used. The default\n// scheme is initially set to \"passthrough\".\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. The scheme set last overrides\n// previously set values.\nfunc SetDefaultScheme(scheme string) {\n\tdefaultScheme = scheme\n\tinternal.UserSetDefaultScheme = true\n}\n\n// GetDefaultScheme gets the default scheme that will be used by grpc.Dial.  If\n// SetDefaultScheme is never called, the default scheme used by grpc.NewClient is \"dns\" instead.\nfunc GetDefaultScheme() string {\n\treturn defaultScheme\n}\n\n// Address represents a server the client connects to.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype Address struct {\n\t// Addr is the server address on which a connection will be established.\n\tAddr string\n\n\t// ServerName is the name of this address.\n\t// If non-empty, the ServerName is used as the transport certification authority for\n\t// the address, instead of the hostname from the Dial target string. In most cases,\n\t// this should not be set.\n\t//\n\t// WARNING: ServerName must only be populated with trusted values. It\n\t// is insecure to populate it with data from untrusted inputs since untrusted\n\t// values could be used to bypass the authority checks performed by TLS.\n\tServerName string\n\n\t// Attributes contains arbitrary data about this address intended for\n\t// consumption by the SubConn.\n\tAttributes *attributes.Attributes\n\n\t// BalancerAttributes contains arbitrary data about this address intended\n\t// for consumption by the LB policy.  These attributes do not affect SubConn\n\t// creation, connection establishment, handshaking, etc.\n\t//\n\t// Deprecated: when an Address is inside an Endpoint, this field should not\n\t// be used, and it will eventually be removed entirely.\n\tBalancerAttributes *attributes.Attributes\n\n\t// Metadata is the information associated with Addr, which may be used\n\t// to make load balancing decision.\n\t//\n\t// Deprecated: use Attributes instead.\n\tMetadata any\n}\n\n// Equal returns whether a and o are identical.  Metadata is compared directly,\n// not with any recursive introspection.\n//\n// This method compares all fields of the address. When used to tell apart\n// addresses during subchannel creation or connection establishment, it might be\n// more appropriate for the caller to implement custom equality logic.\nfunc (a Address) Equal(o Address) bool {\n\treturn a.Addr == o.Addr && a.ServerName == o.ServerName &&\n\t\ta.Attributes.Equal(o.Attributes) &&\n\t\ta.BalancerAttributes.Equal(o.BalancerAttributes) &&\n\t\ta.Metadata == o.Metadata\n}\n\n// String returns JSON formatted string representation of the address.\nfunc (a Address) String() string {\n\tvar sb strings.Builder\n\tsb.WriteString(fmt.Sprintf(\"{Addr: %q, \", a.Addr))\n\tsb.WriteString(fmt.Sprintf(\"ServerName: %q, \", a.ServerName))\n\tif a.Attributes != nil {\n\t\tsb.WriteString(fmt.Sprintf(\"Attributes: %v, \", a.Attributes.String()))\n\t}\n\tif a.BalancerAttributes != nil {\n\t\tsb.WriteString(fmt.Sprintf(\"BalancerAttributes: %v\", a.BalancerAttributes.String()))\n\t}\n\tsb.WriteString(\"}\")\n\treturn sb.String()\n}\n\n// BuildOptions includes additional information for the builder to create\n// the resolver.\ntype BuildOptions struct {\n\t// DisableServiceConfig indicates whether a resolver implementation should\n\t// fetch service config data.\n\tDisableServiceConfig bool\n\t// DialCreds is the transport credentials used by the ClientConn for\n\t// communicating with the target gRPC service (set via\n\t// WithTransportCredentials). In cases where a name resolution service\n\t// requires the same credentials, the resolver may use this field. In most\n\t// cases though, it is not appropriate, and this field may be ignored.\n\tDialCreds credentials.TransportCredentials\n\t// CredsBundle is the credentials bundle used by the ClientConn for\n\t// communicating with the target gRPC service (set via\n\t// WithCredentialsBundle). In cases where a name resolution service\n\t// requires the same credentials, the resolver may use this field. In most\n\t// cases though, it is not appropriate, and this field may be ignored.\n\tCredsBundle credentials.Bundle\n\t// Dialer is the custom dialer used by the ClientConn for dialling the\n\t// target gRPC service (set via WithDialer). In cases where a name\n\t// resolution service requires the same dialer, the resolver may use this\n\t// field. In most cases though, it is not appropriate, and this field may\n\t// be ignored.\n\tDialer func(context.Context, string) (net.Conn, error)\n\t// Authority is the effective authority of the clientconn for which the\n\t// resolver is built.\n\tAuthority string\n\t// MetricsRecorder is the metrics recorder to do recording.\n\tMetricsRecorder stats.MetricsRecorder\n}\n\n// An Endpoint is one network endpoint, or server, which may have multiple\n// addresses with which it can be accessed.\n// TODO(i/8773) : make resolver.Endpoint and resolver.Address immutable\ntype Endpoint struct {\n\t// Addresses contains a list of addresses used to access this endpoint.\n\tAddresses []Address\n\n\t// Attributes contains arbitrary data about this endpoint intended for\n\t// consumption by the LB policy.\n\tAttributes *attributes.Attributes\n}\n\n// State contains the current Resolver state relevant to the ClientConn.\ntype State struct {\n\t// Addresses is the latest set of resolved addresses for the target.\n\t//\n\t// If a resolver sets Addresses but does not set Endpoints, one Endpoint\n\t// will be created for each Address before the State is passed to the LB\n\t// policy.  The BalancerAttributes of each entry in Addresses will be set\n\t// in Endpoints.Attributes, and be cleared in the Endpoint's Address's\n\t// BalancerAttributes.\n\t//\n\t// Soon, Addresses will be deprecated and replaced fully by Endpoints.\n\tAddresses []Address\n\n\t// Endpoints is the latest set of resolved endpoints for the target.\n\t//\n\t// If a resolver produces a State containing Endpoints but not Addresses,\n\t// it must take care to ensure the LB policies it selects will support\n\t// Endpoints.\n\tEndpoints []Endpoint\n\n\t// ServiceConfig contains the result from parsing the latest service\n\t// config.  If it is nil, it indicates no service config is present or the\n\t// resolver does not provide service configs.\n\tServiceConfig *serviceconfig.ParseResult\n\n\t// Attributes contains arbitrary data about the resolver intended for\n\t// consumption by the load balancing policy.\n\tAttributes *attributes.Attributes\n}\n\n// ClientConn contains the callbacks for resolver to notify any updates\n// to the gRPC ClientConn.\n//\n// This interface is to be implemented by gRPC. Users should not need a\n// brand new implementation of this interface. For the situations like\n// testing, the new implementation should embed this interface. This allows\n// gRPC to add new methods to this interface.\ntype ClientConn interface {\n\t// UpdateState updates the state of the ClientConn appropriately.\n\t//\n\t// If an error is returned, the resolver should try to resolve the\n\t// target again. The resolver should use a backoff timer to prevent\n\t// overloading the server with requests. If a resolver is certain that\n\t// reresolving will not change the result, e.g. because it is\n\t// a watch-based resolver, returned errors can be ignored.\n\t//\n\t// If the resolved State is the same as the last reported one, calling\n\t// UpdateState can be omitted.\n\tUpdateState(State) error\n\t// ReportError notifies the ClientConn that the Resolver encountered an\n\t// error. The ClientConn then forwards this error to the load balancing\n\t// policy.\n\tReportError(error)\n\t// NewAddress is called by resolver to notify ClientConn a new list\n\t// of resolved addresses.\n\t// The address list should be the complete list of resolved addresses.\n\t//\n\t// Deprecated: Use UpdateState instead.\n\tNewAddress(addresses []Address)\n\t// ParseServiceConfig parses the provided service config and returns an\n\t// object that provides the parsed config.\n\tParseServiceConfig(serviceConfigJSON string) *serviceconfig.ParseResult\n}\n\n// Target represents a target for gRPC, as specified in:\n// https://github.com/grpc/grpc/blob/master/doc/naming.md.\n// It is parsed from the target string that gets passed into Dial or DialContext\n// by the user. And gRPC passes it to the resolver and the balancer.\n//\n// If the target follows the naming spec, and the parsed scheme is registered\n// with gRPC, we will parse the target string according to the spec. If the\n// target does not contain a scheme or if the parsed scheme is not registered\n// (i.e. no corresponding resolver available to resolve the endpoint), we will\n// apply the default scheme, and will attempt to reparse it.\ntype Target struct {\n\t// URL contains the parsed dial target with an optional default scheme added\n\t// to it if the original dial target contained no scheme or contained an\n\t// unregistered scheme. Any query params specified in the original dial\n\t// target can be accessed from here.\n\tURL url.URL\n}\n\n// Endpoint retrieves endpoint without leading \"/\" from either `URL.Path`\n// or `URL.Opaque`. The latter is used when the former is empty.\nfunc (t Target) Endpoint() string {\n\tendpoint := t.URL.Path\n\tif endpoint == \"\" {\n\t\tendpoint = t.URL.Opaque\n\t}\n\t// For targets of the form \"[scheme]://[authority]/endpoint, the endpoint\n\t// value returned from url.Parse() contains a leading \"/\". Although this is\n\t// in accordance with RFC 3986, we do not want to break existing resolver\n\t// implementations which expect the endpoint without the leading \"/\". So, we\n\t// end up stripping the leading \"/\" here. But this will result in an\n\t// incorrect parsing for something like \"unix:///path/to/socket\". Since we\n\t// own the \"unix\" resolver, we can workaround in the unix resolver by using\n\t// the `URL` field.\n\treturn strings.TrimPrefix(endpoint, \"/\")\n}\n\n// String returns the canonical string representation of Target.\nfunc (t Target) String() string {\n\treturn t.URL.Scheme + \"://\" + t.URL.Host + \"/\" + t.Endpoint()\n}\n\n// Builder creates a resolver that will be used to watch name resolution updates.\ntype Builder interface {\n\t// Build creates a new resolver for the given target.\n\t//\n\t// gRPC dial calls Build synchronously, and fails if the returned error is\n\t// not nil.\n\tBuild(target Target, cc ClientConn, opts BuildOptions) (Resolver, error)\n\t// Scheme returns the scheme supported by this resolver.  Scheme is defined\n\t// at https://github.com/grpc/grpc/blob/master/doc/naming.md.  The returned\n\t// string should not contain uppercase characters, as they will not match\n\t// the parsed target's scheme as defined in RFC 3986.\n\tScheme() string\n}\n\n// ResolveNowOptions includes additional information for ResolveNow.\ntype ResolveNowOptions struct{}\n\n// Resolver watches for the updates on the specified target.\n// Updates include address updates and service config updates.\ntype Resolver interface {\n\t// ResolveNow will be called by gRPC to try to resolve the target name\n\t// again. It's just a hint, resolver can ignore this if it's not necessary.\n\t//\n\t// It could be called multiple times concurrently.\n\tResolveNow(ResolveNowOptions)\n\t// Close closes the resolver.\n\tClose()\n}\n\n// AuthorityOverrider is implemented by Builders that wish to override the\n// default authority for the ClientConn.\n// By default, the authority used is target.Endpoint().\ntype AuthorityOverrider interface {\n\t// OverrideAuthority returns the authority to use for a ClientConn with the\n\t// given target. The implementation must generate it without blocking,\n\t// typically in line, and must keep it unchanged.\n\t//\n\t// The returned string must be a valid \":authority\" header value, i.e. be\n\t// encoded according to\n\t// [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#section-3.2) as\n\t// necessary.\n\tOverrideAuthority(Target) string\n}\n\n// ValidateEndpoints validates endpoints from a petiole policy's perspective.\n// Petiole policies should call this before calling into their children. See\n// [gRPC A61](https://github.com/grpc/proposal/blob/master/A61-IPv4-IPv6-dualstack-backends.md)\n// for details.\nfunc ValidateEndpoints(endpoints []Endpoint) error {\n\tif len(endpoints) == 0 {\n\t\treturn errors.New(\"endpoints list is empty\")\n\t}\n\n\tfor _, endpoint := range endpoints {\n\t\tfor range endpoint.Addresses {\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn errors.New(\"endpoints list contains no addresses\")\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/resolver_wrapper.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/grpc/internal/channelz\"\n\t\"google.golang.org/grpc/internal/grpcsync\"\n\t\"google.golang.org/grpc/internal/pretty\"\n\t\"google.golang.org/grpc/internal/resolver/delegatingresolver\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\n// ccResolverWrapper is a wrapper on top of cc for resolvers.\n// It implements resolver.ClientConn interface.\ntype ccResolverWrapper struct {\n\t// The following fields are initialized when the wrapper is created and are\n\t// read-only afterwards, and therefore can be accessed without a mutex.\n\tcc                  *ClientConn\n\tignoreServiceConfig bool\n\tserializer          *grpcsync.CallbackSerializer\n\tserializerCancel    context.CancelFunc\n\n\tresolver resolver.Resolver // only accessed within the serializer\n\n\t// The following fields are protected by mu.  Caller must take cc.mu before\n\t// taking mu.\n\tmu       sync.Mutex\n\tcurState resolver.State\n\tclosed   bool\n}\n\n// newCCResolverWrapper initializes the ccResolverWrapper.  It can only be used\n// after calling start, which builds the resolver.\nfunc newCCResolverWrapper(cc *ClientConn) *ccResolverWrapper {\n\tctx, cancel := context.WithCancel(cc.ctx)\n\treturn &ccResolverWrapper{\n\t\tcc:                  cc,\n\t\tignoreServiceConfig: cc.dopts.disableServiceConfig,\n\t\tserializer:          grpcsync.NewCallbackSerializer(ctx),\n\t\tserializerCancel:    cancel,\n\t}\n}\n\n// start builds the name resolver using the resolver.Builder in cc and returns\n// any error encountered.  It must always be the first operation performed on\n// any newly created ccResolverWrapper, except that close may be called instead.\nfunc (ccr *ccResolverWrapper) start() error {\n\terrCh := make(chan error)\n\tccr.serializer.TrySchedule(func(ctx context.Context) {\n\t\tif ctx.Err() != nil {\n\t\t\terrCh <- ctx.Err()\n\t\t\treturn\n\t\t}\n\t\topts := resolver.BuildOptions{\n\t\t\tDisableServiceConfig: ccr.cc.dopts.disableServiceConfig,\n\t\t\tDialCreds:            ccr.cc.dopts.copts.TransportCredentials,\n\t\t\tCredsBundle:          ccr.cc.dopts.copts.CredsBundle,\n\t\t\tDialer:               ccr.cc.dopts.copts.Dialer,\n\t\t\tAuthority:            ccr.cc.authority,\n\t\t\tMetricsRecorder:      ccr.cc.metricsRecorderList,\n\t\t}\n\t\tvar err error\n\t\t// The delegating resolver is used unless:\n\t\t//   - A custom dialer is provided via WithContextDialer dialoption or\n\t\t//   - Proxy usage is disabled through WithNoProxy dialoption.\n\t\t// In these cases, the resolver is built based on the scheme of target,\n\t\t// using the appropriate resolver builder.\n\t\tif ccr.cc.dopts.copts.Dialer != nil || !ccr.cc.dopts.useProxy {\n\t\t\tccr.resolver, err = ccr.cc.resolverBuilder.Build(ccr.cc.parsedTarget, ccr, opts)\n\t\t} else {\n\t\t\tccr.resolver, err = delegatingresolver.New(ccr.cc.parsedTarget, ccr, opts, ccr.cc.resolverBuilder, ccr.cc.dopts.enableLocalDNSResolution)\n\t\t}\n\t\terrCh <- err\n\t})\n\treturn <-errCh\n}\n\nfunc (ccr *ccResolverWrapper) resolveNow(o resolver.ResolveNowOptions) {\n\tccr.serializer.TrySchedule(func(ctx context.Context) {\n\t\tif ctx.Err() != nil || ccr.resolver == nil {\n\t\t\treturn\n\t\t}\n\t\tccr.resolver.ResolveNow(o)\n\t})\n}\n\n// close initiates async shutdown of the wrapper.  To determine the wrapper has\n// finished shutting down, the channel should block on ccr.serializer.Done()\n// without cc.mu held.\nfunc (ccr *ccResolverWrapper) close() {\n\tchannelz.Info(logger, ccr.cc.channelz, \"Closing the name resolver\")\n\tccr.mu.Lock()\n\tccr.closed = true\n\tccr.mu.Unlock()\n\n\tccr.serializer.TrySchedule(func(context.Context) {\n\t\tif ccr.resolver == nil {\n\t\t\treturn\n\t\t}\n\t\tccr.resolver.Close()\n\t\tccr.resolver = nil\n\t})\n\tccr.serializerCancel()\n}\n\n// UpdateState is called by resolver implementations to report new state to gRPC\n// which includes addresses and service config.\nfunc (ccr *ccResolverWrapper) UpdateState(s resolver.State) error {\n\tccr.cc.mu.Lock()\n\tccr.mu.Lock()\n\tif ccr.closed {\n\t\tccr.mu.Unlock()\n\t\tccr.cc.mu.Unlock()\n\t\treturn nil\n\t}\n\tif s.Endpoints == nil {\n\t\ts.Endpoints = addressesToEndpoints(s.Addresses)\n\t}\n\tccr.addChannelzTraceEvent(s)\n\tccr.curState = s\n\tccr.mu.Unlock()\n\treturn ccr.cc.updateResolverStateAndUnlock(s, nil)\n}\n\n// ReportError is called by resolver implementations to report errors\n// encountered during name resolution to gRPC.\nfunc (ccr *ccResolverWrapper) ReportError(err error) {\n\tccr.cc.mu.Lock()\n\tccr.mu.Lock()\n\tif ccr.closed {\n\t\tccr.mu.Unlock()\n\t\tccr.cc.mu.Unlock()\n\t\treturn\n\t}\n\tccr.mu.Unlock()\n\tchannelz.Warningf(logger, ccr.cc.channelz, \"ccResolverWrapper: reporting error to cc: %v\", err)\n\tccr.cc.updateResolverStateAndUnlock(resolver.State{}, err)\n}\n\n// NewAddress is called by the resolver implementation to send addresses to\n// gRPC.\nfunc (ccr *ccResolverWrapper) NewAddress(addrs []resolver.Address) {\n\tccr.cc.mu.Lock()\n\tccr.mu.Lock()\n\tif ccr.closed {\n\t\tccr.mu.Unlock()\n\t\tccr.cc.mu.Unlock()\n\t\treturn\n\t}\n\ts := resolver.State{\n\t\tAddresses:     addrs,\n\t\tServiceConfig: ccr.curState.ServiceConfig,\n\t\tEndpoints:     addressesToEndpoints(addrs),\n\t}\n\tccr.addChannelzTraceEvent(s)\n\tccr.curState = s\n\tccr.mu.Unlock()\n\tccr.cc.updateResolverStateAndUnlock(s, nil)\n}\n\n// ParseServiceConfig is called by resolver implementations to parse a JSON\n// representation of the service config.\nfunc (ccr *ccResolverWrapper) ParseServiceConfig(scJSON string) *serviceconfig.ParseResult {\n\treturn parseServiceConfig(scJSON, ccr.cc.dopts.maxCallAttempts)\n}\n\n// addChannelzTraceEvent adds a channelz trace event containing the new\n// state received from resolver implementations.\nfunc (ccr *ccResolverWrapper) addChannelzTraceEvent(s resolver.State) {\n\tif !logger.V(0) && !channelz.IsOn() {\n\t\treturn\n\t}\n\tvar updates []string\n\tvar oldSC, newSC *ServiceConfig\n\tvar oldOK, newOK bool\n\tif ccr.curState.ServiceConfig != nil {\n\t\toldSC, oldOK = ccr.curState.ServiceConfig.Config.(*ServiceConfig)\n\t}\n\tif s.ServiceConfig != nil {\n\t\tnewSC, newOK = s.ServiceConfig.Config.(*ServiceConfig)\n\t}\n\tif oldOK != newOK || (oldOK && newOK && oldSC.rawJSONString != newSC.rawJSONString) {\n\t\tupdates = append(updates, \"service config updated\")\n\t}\n\tif len(ccr.curState.Addresses) > 0 && len(s.Addresses) == 0 {\n\t\tupdates = append(updates, \"resolver returned an empty address list\")\n\t} else if len(ccr.curState.Addresses) == 0 && len(s.Addresses) > 0 {\n\t\tupdates = append(updates, \"resolver returned new addresses\")\n\t}\n\tchannelz.Infof(logger, ccr.cc.channelz, \"Resolver state updated: %s (%v)\", pretty.ToJSON(s), strings.Join(updates, \"; \"))\n}\n\nfunc addressesToEndpoints(addrs []resolver.Address) []resolver.Endpoint {\n\tendpoints := make([]resolver.Endpoint, 0, len(addrs))\n\tfor _, a := range addrs {\n\t\tep := resolver.Endpoint{Addresses: []resolver.Address{a}, Attributes: a.BalancerAttributes}\n\t\tep.Addresses[0].BalancerAttributes = nil\n\t\tendpoints = append(endpoints, ep)\n\t}\n\treturn endpoints\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/rpc_util.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"compress/gzip\"\n\t\"context\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/encoding\"\n\t\"google.golang.org/grpc/encoding/proto\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n\t\"google.golang.org/grpc/internal/transport\"\n\t\"google.golang.org/grpc/mem\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/peer\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n)\n\nfunc init() {\n\tinternal.AcceptCompressors = acceptCompressors\n}\n\n// Compressor defines the interface gRPC uses to compress a message.\n//\n// Deprecated: use package encoding.\ntype Compressor interface {\n\t// Do compresses p into w.\n\tDo(w io.Writer, p []byte) error\n\t// Type returns the compression algorithm the Compressor uses.\n\tType() string\n}\n\ntype gzipCompressor struct {\n\tpool sync.Pool\n}\n\n// NewGZIPCompressor creates a Compressor based on GZIP.\n//\n// Deprecated: use package encoding/gzip.\nfunc NewGZIPCompressor() Compressor {\n\tc, _ := NewGZIPCompressorWithLevel(gzip.DefaultCompression)\n\treturn c\n}\n\n// NewGZIPCompressorWithLevel is like NewGZIPCompressor but specifies the gzip compression level instead\n// of assuming DefaultCompression.\n//\n// The error returned will be nil if the level is valid.\n//\n// Deprecated: use package encoding/gzip.\nfunc NewGZIPCompressorWithLevel(level int) (Compressor, error) {\n\tif level < gzip.DefaultCompression || level > gzip.BestCompression {\n\t\treturn nil, fmt.Errorf(\"grpc: invalid compression level: %d\", level)\n\t}\n\treturn &gzipCompressor{\n\t\tpool: sync.Pool{\n\t\t\tNew: func() any {\n\t\t\t\tw, err := gzip.NewWriterLevel(io.Discard, level)\n\t\t\t\tif err != nil {\n\t\t\t\t\tpanic(err)\n\t\t\t\t}\n\t\t\t\treturn w\n\t\t\t},\n\t\t},\n\t}, nil\n}\n\nfunc (c *gzipCompressor) Do(w io.Writer, p []byte) error {\n\tz := c.pool.Get().(*gzip.Writer)\n\tdefer c.pool.Put(z)\n\tz.Reset(w)\n\tif _, err := z.Write(p); err != nil {\n\t\treturn err\n\t}\n\treturn z.Close()\n}\n\nfunc (c *gzipCompressor) Type() string {\n\treturn \"gzip\"\n}\n\n// Decompressor defines the interface gRPC uses to decompress a message.\n//\n// Deprecated: use package encoding.\ntype Decompressor interface {\n\t// Do reads the data from r and uncompress them.\n\tDo(r io.Reader) ([]byte, error)\n\t// Type returns the compression algorithm the Decompressor uses.\n\tType() string\n}\n\ntype gzipDecompressor struct {\n\tpool sync.Pool\n}\n\n// NewGZIPDecompressor creates a Decompressor based on GZIP.\n//\n// Deprecated: use package encoding/gzip.\nfunc NewGZIPDecompressor() Decompressor {\n\treturn &gzipDecompressor{}\n}\n\nfunc (d *gzipDecompressor) Do(r io.Reader) ([]byte, error) {\n\tvar z *gzip.Reader\n\tswitch maybeZ := d.pool.Get().(type) {\n\tcase nil:\n\t\tnewZ, err := gzip.NewReader(r)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tz = newZ\n\tcase *gzip.Reader:\n\t\tz = maybeZ\n\t\tif err := z.Reset(r); err != nil {\n\t\t\td.pool.Put(z)\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tdefer func() {\n\t\tz.Close()\n\t\td.pool.Put(z)\n\t}()\n\treturn io.ReadAll(z)\n}\n\nfunc (d *gzipDecompressor) Type() string {\n\treturn \"gzip\"\n}\n\n// callInfo contains all related configuration and information about an RPC.\ntype callInfo struct {\n\tcompressorName              string\n\tfailFast                    bool\n\tmaxReceiveMessageSize       *int\n\tmaxSendMessageSize          *int\n\tcreds                       credentials.PerRPCCredentials\n\tcontentSubtype              string\n\tcodec                       baseCodec\n\tmaxRetryRPCBufferSize       int\n\tonFinish                    []func(err error)\n\tauthority                   string\n\tacceptedResponseCompressors []string\n}\n\nfunc acceptedCompressorAllows(allowed []string, name string) bool {\n\tif allowed == nil {\n\t\treturn true\n\t}\n\tif name == \"\" || name == encoding.Identity {\n\t\treturn true\n\t}\n\tfor _, a := range allowed {\n\t\tif a == name {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc defaultCallInfo() *callInfo {\n\treturn &callInfo{\n\t\tfailFast:              true,\n\t\tmaxRetryRPCBufferSize: 256 * 1024, // 256KB\n\t}\n}\n\nfunc newAcceptedCompressionConfig(names []string) ([]string, error) {\n\tif len(names) == 0 {\n\t\treturn nil, nil\n\t}\n\tvar allowed []string\n\tseen := make(map[string]struct{}, len(names))\n\tfor _, name := range names {\n\t\tname = strings.TrimSpace(name)\n\t\tif name == \"\" || name == encoding.Identity {\n\t\t\tcontinue\n\t\t}\n\t\tif !grpcutil.IsCompressorNameRegistered(name) {\n\t\t\treturn nil, status.Errorf(codes.InvalidArgument, \"grpc: compressor %q is not registered\", name)\n\t\t}\n\t\tif _, dup := seen[name]; dup {\n\t\t\tcontinue\n\t\t}\n\t\tseen[name] = struct{}{}\n\t\tallowed = append(allowed, name)\n\t}\n\treturn allowed, nil\n}\n\n// CallOption configures a Call before it starts or extracts information from\n// a Call after it completes.\ntype CallOption interface {\n\t// before is called before the call is sent to any server.  If before\n\t// returns a non-nil error, the RPC fails with that error.\n\tbefore(*callInfo) error\n\n\t// after is called after the call has completed.  after cannot return an\n\t// error, so any failures should be reported via output parameters.\n\tafter(*callInfo, *csAttempt)\n}\n\n// EmptyCallOption does not alter the Call configuration.\n// It can be embedded in another structure to carry satellite data for use\n// by interceptors.\ntype EmptyCallOption struct{}\n\nfunc (EmptyCallOption) before(*callInfo) error      { return nil }\nfunc (EmptyCallOption) after(*callInfo, *csAttempt) {}\n\n// StaticMethod returns a CallOption which specifies that a call is being made\n// to a method that is static, which means the method is known at compile time\n// and doesn't change at runtime. This can be used as a signal to stats plugins\n// that this method is safe to include as a key to a measurement.\nfunc StaticMethod() CallOption {\n\treturn StaticMethodCallOption{}\n}\n\n// StaticMethodCallOption is a CallOption that specifies that a call comes\n// from a static method.\ntype StaticMethodCallOption struct {\n\tEmptyCallOption\n}\n\n// Header returns a CallOptions that retrieves the header metadata\n// for a unary RPC.\nfunc Header(md *metadata.MD) CallOption {\n\treturn HeaderCallOption{HeaderAddr: md}\n}\n\n// HeaderCallOption is a CallOption for collecting response header metadata.\n// The metadata field will be populated *after* the RPC completes.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype HeaderCallOption struct {\n\tHeaderAddr *metadata.MD\n}\n\nfunc (o HeaderCallOption) before(*callInfo) error { return nil }\nfunc (o HeaderCallOption) after(_ *callInfo, attempt *csAttempt) {\n\t*o.HeaderAddr, _ = attempt.transportStream.Header()\n}\n\n// Trailer returns a CallOptions that retrieves the trailer metadata\n// for a unary RPC.\nfunc Trailer(md *metadata.MD) CallOption {\n\treturn TrailerCallOption{TrailerAddr: md}\n}\n\n// TrailerCallOption is a CallOption for collecting response trailer metadata.\n// The metadata field will be populated *after* the RPC completes.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype TrailerCallOption struct {\n\tTrailerAddr *metadata.MD\n}\n\nfunc (o TrailerCallOption) before(*callInfo) error { return nil }\nfunc (o TrailerCallOption) after(_ *callInfo, attempt *csAttempt) {\n\t*o.TrailerAddr = attempt.transportStream.Trailer()\n}\n\n// Peer returns a CallOption that retrieves peer information for a unary RPC.\n// The peer field will be populated *after* the RPC completes.\nfunc Peer(p *peer.Peer) CallOption {\n\treturn PeerCallOption{PeerAddr: p}\n}\n\n// PeerCallOption is a CallOption for collecting the identity of the remote\n// peer. The peer field will be populated *after* the RPC completes.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype PeerCallOption struct {\n\tPeerAddr *peer.Peer\n}\n\nfunc (o PeerCallOption) before(*callInfo) error { return nil }\nfunc (o PeerCallOption) after(_ *callInfo, attempt *csAttempt) {\n\tif x, ok := peer.FromContext(attempt.transportStream.Context()); ok {\n\t\t*o.PeerAddr = *x\n\t}\n}\n\n// WaitForReady configures the RPC's behavior when the client is in\n// TRANSIENT_FAILURE, which occurs when all addresses fail to connect.  If\n// waitForReady is false, the RPC will fail immediately.  Otherwise, the client\n// will wait until a connection becomes available or the RPC's deadline is\n// reached.\n//\n// By default, RPCs do not \"wait for ready\".\nfunc WaitForReady(waitForReady bool) CallOption {\n\treturn FailFastCallOption{FailFast: !waitForReady}\n}\n\n// FailFast is the opposite of WaitForReady.\n//\n// Deprecated: use WaitForReady.\nfunc FailFast(failFast bool) CallOption {\n\treturn FailFastCallOption{FailFast: failFast}\n}\n\n// FailFastCallOption is a CallOption for indicating whether an RPC should fail\n// fast or not.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype FailFastCallOption struct {\n\tFailFast bool\n}\n\nfunc (o FailFastCallOption) before(c *callInfo) error {\n\tc.failFast = o.FailFast\n\treturn nil\n}\nfunc (o FailFastCallOption) after(*callInfo, *csAttempt) {}\n\n// OnFinish returns a CallOption that configures a callback to be called when\n// the call completes. The error passed to the callback is the status of the\n// RPC, and may be nil. The onFinish callback provided will only be called once\n// by gRPC. This is mainly used to be used by streaming interceptors, to be\n// notified when the RPC completes along with information about the status of\n// the RPC.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc OnFinish(onFinish func(err error)) CallOption {\n\treturn OnFinishCallOption{\n\t\tOnFinish: onFinish,\n\t}\n}\n\n// OnFinishCallOption is CallOption that indicates a callback to be called when\n// the call completes.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype OnFinishCallOption struct {\n\tOnFinish func(error)\n}\n\nfunc (o OnFinishCallOption) before(c *callInfo) error {\n\tc.onFinish = append(c.onFinish, o.OnFinish)\n\treturn nil\n}\n\nfunc (o OnFinishCallOption) after(*callInfo, *csAttempt) {}\n\n// MaxCallRecvMsgSize returns a CallOption which sets the maximum message size\n// in bytes the client can receive. If this is not set, gRPC uses the default\n// 4MB.\nfunc MaxCallRecvMsgSize(bytes int) CallOption {\n\treturn MaxRecvMsgSizeCallOption{MaxRecvMsgSize: bytes}\n}\n\n// MaxRecvMsgSizeCallOption is a CallOption that indicates the maximum message\n// size in bytes the client can receive.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype MaxRecvMsgSizeCallOption struct {\n\tMaxRecvMsgSize int\n}\n\nfunc (o MaxRecvMsgSizeCallOption) before(c *callInfo) error {\n\tc.maxReceiveMessageSize = &o.MaxRecvMsgSize\n\treturn nil\n}\nfunc (o MaxRecvMsgSizeCallOption) after(*callInfo, *csAttempt) {}\n\n// CallAuthority returns a CallOption that sets the HTTP/2 :authority header of\n// an RPC to the specified value. When using CallAuthority, the credentials in\n// use must implement the AuthorityValidator interface.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a later\n// release.\nfunc CallAuthority(authority string) CallOption {\n\treturn AuthorityOverrideCallOption{Authority: authority}\n}\n\n// AuthorityOverrideCallOption is a CallOption that indicates the HTTP/2\n// :authority header value to use for the call.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a later\n// release.\ntype AuthorityOverrideCallOption struct {\n\tAuthority string\n}\n\nfunc (o AuthorityOverrideCallOption) before(c *callInfo) error {\n\tc.authority = o.Authority\n\treturn nil\n}\n\nfunc (o AuthorityOverrideCallOption) after(*callInfo, *csAttempt) {}\n\n// MaxCallSendMsgSize returns a CallOption which sets the maximum message size\n// in bytes the client can send. If this is not set, gRPC uses the default\n// `math.MaxInt32`.\nfunc MaxCallSendMsgSize(bytes int) CallOption {\n\treturn MaxSendMsgSizeCallOption{MaxSendMsgSize: bytes}\n}\n\n// MaxSendMsgSizeCallOption is a CallOption that indicates the maximum message\n// size in bytes the client can send.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype MaxSendMsgSizeCallOption struct {\n\tMaxSendMsgSize int\n}\n\nfunc (o MaxSendMsgSizeCallOption) before(c *callInfo) error {\n\tc.maxSendMessageSize = &o.MaxSendMsgSize\n\treturn nil\n}\nfunc (o MaxSendMsgSizeCallOption) after(*callInfo, *csAttempt) {}\n\n// PerRPCCredentials returns a CallOption that sets credentials.PerRPCCredentials\n// for a call.\nfunc PerRPCCredentials(creds credentials.PerRPCCredentials) CallOption {\n\treturn PerRPCCredsCallOption{Creds: creds}\n}\n\n// PerRPCCredsCallOption is a CallOption that indicates the per-RPC\n// credentials to use for the call.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype PerRPCCredsCallOption struct {\n\tCreds credentials.PerRPCCredentials\n}\n\nfunc (o PerRPCCredsCallOption) before(c *callInfo) error {\n\tc.creds = o.Creds\n\treturn nil\n}\nfunc (o PerRPCCredsCallOption) after(*callInfo, *csAttempt) {}\n\n// UseCompressor returns a CallOption which sets the compressor used when\n// sending the request.  If WithCompressor is also set, UseCompressor has\n// higher priority.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc UseCompressor(name string) CallOption {\n\treturn CompressorCallOption{CompressorType: name}\n}\n\n// CompressorCallOption is a CallOption that indicates the compressor to use.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype CompressorCallOption struct {\n\tCompressorType string\n}\n\nfunc (o CompressorCallOption) before(c *callInfo) error {\n\tc.compressorName = o.CompressorType\n\treturn nil\n}\nfunc (o CompressorCallOption) after(*callInfo, *csAttempt) {}\n\n// acceptCompressors returns a CallOption that limits the compression algorithms\n// advertised in the grpc-accept-encoding header for response messages.\n// Compression algorithms not in the provided list will not be advertised, and\n// responses compressed with non-listed algorithms will be rejected.\nfunc acceptCompressors(names ...string) CallOption {\n\tcp := append([]string(nil), names...)\n\treturn acceptCompressorsCallOption{names: cp}\n}\n\n// acceptCompressorsCallOption is a CallOption that limits response compression.\ntype acceptCompressorsCallOption struct {\n\tnames []string\n}\n\nfunc (o acceptCompressorsCallOption) before(c *callInfo) error {\n\tallowed, err := newAcceptedCompressionConfig(o.names)\n\tif err != nil {\n\t\treturn err\n\t}\n\tc.acceptedResponseCompressors = allowed\n\treturn nil\n}\n\nfunc (acceptCompressorsCallOption) after(*callInfo, *csAttempt) {}\n\n// CallContentSubtype returns a CallOption that will set the content-subtype\n// for a call. For example, if content-subtype is \"json\", the Content-Type over\n// the wire will be \"application/grpc+json\". The content-subtype is converted\n// to lowercase before being included in Content-Type. See Content-Type on\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for\n// more details.\n//\n// If ForceCodec is not also used, the content-subtype will be used to look up\n// the Codec to use in the registry controlled by RegisterCodec. See the\n// documentation on RegisterCodec for details on registration. The lookup of\n// content-subtype is case-insensitive. If no such Codec is found, the call\n// will result in an error with code codes.Internal.\n//\n// If ForceCodec is also used, that Codec will be used for all request and\n// response messages, with the content-subtype set to the given contentSubtype\n// here for requests.\nfunc CallContentSubtype(contentSubtype string) CallOption {\n\treturn ContentSubtypeCallOption{ContentSubtype: strings.ToLower(contentSubtype)}\n}\n\n// ContentSubtypeCallOption is a CallOption that indicates the content-subtype\n// used for marshaling messages.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype ContentSubtypeCallOption struct {\n\tContentSubtype string\n}\n\nfunc (o ContentSubtypeCallOption) before(c *callInfo) error {\n\tc.contentSubtype = o.ContentSubtype\n\treturn nil\n}\nfunc (o ContentSubtypeCallOption) after(*callInfo, *csAttempt) {}\n\n// ForceCodec returns a CallOption that will set codec to be used for all\n// request and response messages for a call. The result of calling Name() will\n// be used as the content-subtype after converting to lowercase, unless\n// CallContentSubtype is also used.\n//\n// See Content-Type on\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for\n// more details. Also see the documentation on RegisterCodec and\n// CallContentSubtype for more details on the interaction between Codec and\n// content-subtype.\n//\n// This function is provided for advanced users; prefer to use only\n// CallContentSubtype to select a registered codec instead.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc ForceCodec(codec encoding.Codec) CallOption {\n\treturn ForceCodecCallOption{Codec: codec}\n}\n\n// ForceCodecCallOption is a CallOption that indicates the codec used for\n// marshaling messages.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype ForceCodecCallOption struct {\n\tCodec encoding.Codec\n}\n\nfunc (o ForceCodecCallOption) before(c *callInfo) error {\n\tc.codec = newCodecV1Bridge(o.Codec)\n\treturn nil\n}\nfunc (o ForceCodecCallOption) after(*callInfo, *csAttempt) {}\n\n// ForceCodecV2 returns a CallOption that will set codec to be used for all\n// request and response messages for a call. The result of calling Name() will\n// be used as the content-subtype after converting to lowercase, unless\n// CallContentSubtype is also used.\n//\n// See Content-Type on\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for\n// more details. Also see the documentation on RegisterCodec and\n// CallContentSubtype for more details on the interaction between Codec and\n// content-subtype.\n//\n// This function is provided for advanced users; prefer to use only\n// CallContentSubtype to select a registered codec instead.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc ForceCodecV2(codec encoding.CodecV2) CallOption {\n\treturn ForceCodecV2CallOption{CodecV2: codec}\n}\n\n// ForceCodecV2CallOption is a CallOption that indicates the codec used for\n// marshaling messages.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype ForceCodecV2CallOption struct {\n\tCodecV2 encoding.CodecV2\n}\n\nfunc (o ForceCodecV2CallOption) before(c *callInfo) error {\n\tc.codec = o.CodecV2\n\treturn nil\n}\n\nfunc (o ForceCodecV2CallOption) after(*callInfo, *csAttempt) {}\n\n// CallCustomCodec behaves like ForceCodec, but accepts a grpc.Codec instead of\n// an encoding.Codec.\n//\n// Deprecated: use ForceCodec instead.\nfunc CallCustomCodec(codec Codec) CallOption {\n\treturn CustomCodecCallOption{Codec: codec}\n}\n\n// CustomCodecCallOption is a CallOption that indicates the codec used for\n// marshaling messages.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype CustomCodecCallOption struct {\n\tCodec Codec\n}\n\nfunc (o CustomCodecCallOption) before(c *callInfo) error {\n\tc.codec = newCodecV0Bridge(o.Codec)\n\treturn nil\n}\nfunc (o CustomCodecCallOption) after(*callInfo, *csAttempt) {}\n\n// MaxRetryRPCBufferSize returns a CallOption that limits the amount of memory\n// used for buffering this RPC's requests for retry purposes.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc MaxRetryRPCBufferSize(bytes int) CallOption {\n\treturn MaxRetryRPCBufferSizeCallOption{bytes}\n}\n\n// MaxRetryRPCBufferSizeCallOption is a CallOption indicating the amount of\n// memory to be used for caching this RPC for retry purposes.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype MaxRetryRPCBufferSizeCallOption struct {\n\tMaxRetryRPCBufferSize int\n}\n\nfunc (o MaxRetryRPCBufferSizeCallOption) before(c *callInfo) error {\n\tc.maxRetryRPCBufferSize = o.MaxRetryRPCBufferSize\n\treturn nil\n}\nfunc (o MaxRetryRPCBufferSizeCallOption) after(*callInfo, *csAttempt) {}\n\n// The format of the payload: compressed or not?\ntype payloadFormat uint8\n\nconst (\n\tcompressionNone payloadFormat = 0 // no compression\n\tcompressionMade payloadFormat = 1 // compressed\n)\n\nfunc (pf payloadFormat) isCompressed() bool {\n\treturn pf == compressionMade\n}\n\ntype streamReader interface {\n\tReadMessageHeader(header []byte) error\n\tRead(n int) (mem.BufferSlice, error)\n}\n\n// noCopy may be embedded into structs which must not be copied\n// after the first use.\n//\n// See https://golang.org/issues/8005#issuecomment-190753527\n// for details.\ntype noCopy struct {\n}\n\nfunc (*noCopy) Lock()   {}\nfunc (*noCopy) Unlock() {}\n\n// parser reads complete gRPC messages from the underlying reader.\ntype parser struct {\n\t_ noCopy\n\t// r is the underlying reader.\n\t// See the comment on recvMsg for the permissible\n\t// error types.\n\tr streamReader\n\n\t// The header of a gRPC message. Find more detail at\n\t// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md\n\theader [5]byte\n\n\t// bufferPool is the pool of shared receive buffers.\n\tbufferPool mem.BufferPool\n}\n\n// recvMsg reads a complete gRPC message from the stream.\n//\n// It returns the message and its payload (compression/encoding)\n// format. The caller owns the returned msg memory.\n//\n// If there is an error, possible values are:\n//   - io.EOF, when no messages remain\n//   - io.ErrUnexpectedEOF\n//   - of type transport.ConnectionError\n//   - an error from the status package\n//\n// No other error values or types must be returned, which also means\n// that the underlying streamReader must not return an incompatible\n// error.\nfunc (p *parser) recvMsg(maxReceiveMessageSize int) (payloadFormat, mem.BufferSlice, error) {\n\terr := p.r.ReadMessageHeader(p.header[:])\n\tif err != nil {\n\t\treturn 0, nil, err\n\t}\n\n\tpf := payloadFormat(p.header[0])\n\tlength := binary.BigEndian.Uint32(p.header[1:])\n\n\tif int64(length) > int64(maxInt) {\n\t\treturn 0, nil, status.Errorf(codes.ResourceExhausted, \"grpc: received message larger than max length allowed on current machine (%d vs. %d)\", length, maxInt)\n\t}\n\tif int(length) > maxReceiveMessageSize {\n\t\treturn 0, nil, status.Errorf(codes.ResourceExhausted, \"grpc: received message larger than max (%d vs. %d)\", length, maxReceiveMessageSize)\n\t}\n\n\tdata, err := p.r.Read(int(length))\n\tif err != nil {\n\t\tif err == io.EOF {\n\t\t\terr = io.ErrUnexpectedEOF\n\t\t}\n\t\treturn 0, nil, err\n\t}\n\treturn pf, data, nil\n}\n\n// encode serializes msg and returns a buffer containing the message, or an\n// error if it is too large to be transmitted by grpc.  If msg is nil, it\n// generates an empty message.\nfunc encode(c baseCodec, msg any) (mem.BufferSlice, error) {\n\tif msg == nil { // NOTE: typed nils will not be caught by this check\n\t\treturn nil, nil\n\t}\n\tb, err := c.Marshal(msg)\n\tif err != nil {\n\t\treturn nil, status.Errorf(codes.Internal, \"grpc: error while marshaling: %v\", err.Error())\n\t}\n\tif bufSize := uint(b.Len()); bufSize > math.MaxUint32 {\n\t\tb.Free()\n\t\treturn nil, status.Errorf(codes.ResourceExhausted, \"grpc: message too large (%d bytes)\", bufSize)\n\t}\n\treturn b, nil\n}\n\n// compress returns the input bytes compressed by compressor or cp.\n// If both compressors are nil, or if the message has zero length, returns nil,\n// indicating no compression was done.\n//\n// TODO(dfawley): eliminate cp parameter by wrapping Compressor in an encoding.Compressor.\nfunc compress(in mem.BufferSlice, cp Compressor, compressor encoding.Compressor, pool mem.BufferPool) (mem.BufferSlice, payloadFormat, error) {\n\tif (compressor == nil && cp == nil) || in.Len() == 0 {\n\t\treturn nil, compressionNone, nil\n\t}\n\tvar out mem.BufferSlice\n\tw := mem.NewWriter(&out, pool)\n\twrapErr := func(err error) error {\n\t\tout.Free()\n\t\treturn status.Errorf(codes.Internal, \"grpc: error while compressing: %v\", err.Error())\n\t}\n\tif compressor != nil {\n\t\tz, err := compressor.Compress(w)\n\t\tif err != nil {\n\t\t\treturn nil, 0, wrapErr(err)\n\t\t}\n\t\tfor _, b := range in {\n\t\t\tif _, err := z.Write(b.ReadOnlyData()); err != nil {\n\t\t\t\treturn nil, 0, wrapErr(err)\n\t\t\t}\n\t\t}\n\t\tif err := z.Close(); err != nil {\n\t\t\treturn nil, 0, wrapErr(err)\n\t\t}\n\t} else {\n\t\t// This is obviously really inefficient since it fully materializes the data, but\n\t\t// there is no way around this with the old Compressor API. At least it attempts\n\t\t// to return the buffer to the provider, in the hopes it can be reused (maybe\n\t\t// even by a subsequent call to this very function).\n\t\tbuf := in.MaterializeToBuffer(pool)\n\t\tdefer buf.Free()\n\t\tif err := cp.Do(w, buf.ReadOnlyData()); err != nil {\n\t\t\treturn nil, 0, wrapErr(err)\n\t\t}\n\t}\n\treturn out, compressionMade, nil\n}\n\nconst (\n\tpayloadLen = 1\n\tsizeLen    = 4\n\theaderLen  = payloadLen + sizeLen\n)\n\n// msgHeader returns a 5-byte header for the message being transmitted and the\n// payload, which is compData if non-nil or data otherwise.\nfunc msgHeader(data, compData mem.BufferSlice, pf payloadFormat) (hdr []byte, payload mem.BufferSlice) {\n\thdr = make([]byte, headerLen)\n\thdr[0] = byte(pf)\n\n\tvar length uint32\n\tif pf.isCompressed() {\n\t\tlength = uint32(compData.Len())\n\t\tpayload = compData\n\t} else {\n\t\tlength = uint32(data.Len())\n\t\tpayload = data\n\t}\n\n\t// Write length of payload into buf\n\tbinary.BigEndian.PutUint32(hdr[payloadLen:], length)\n\treturn hdr, payload\n}\n\nfunc outPayload(client bool, msg any, dataLength, payloadLength int, t time.Time) *stats.OutPayload {\n\treturn &stats.OutPayload{\n\t\tClient:           client,\n\t\tPayload:          msg,\n\t\tLength:           dataLength,\n\t\tWireLength:       payloadLength + headerLen,\n\t\tCompressedLength: payloadLength,\n\t\tSentTime:         t,\n\t}\n}\n\nfunc checkRecvPayload(pf payloadFormat, recvCompress string, haveCompressor bool, isServer bool) *status.Status {\n\tswitch pf {\n\tcase compressionNone:\n\tcase compressionMade:\n\t\tif recvCompress == \"\" || recvCompress == encoding.Identity {\n\t\t\treturn status.New(codes.Internal, \"grpc: compressed flag set with identity or empty encoding\")\n\t\t}\n\t\tif !haveCompressor {\n\t\t\tif isServer {\n\t\t\t\treturn status.Newf(codes.Unimplemented, \"grpc: Decompressor is not installed for grpc-encoding %q\", recvCompress)\n\t\t\t}\n\t\t\treturn status.Newf(codes.Internal, \"grpc: Decompressor is not installed for grpc-encoding %q\", recvCompress)\n\t\t}\n\tdefault:\n\t\treturn status.Newf(codes.Internal, \"grpc: received unexpected payload format %d\", pf)\n\t}\n\treturn nil\n}\n\ntype payloadInfo struct {\n\tcompressedLength  int // The compressed length got from wire.\n\tuncompressedBytes mem.BufferSlice\n}\n\nfunc (p *payloadInfo) free() {\n\tif p != nil && p.uncompressedBytes != nil {\n\t\tp.uncompressedBytes.Free()\n\t}\n}\n\n// recvAndDecompress reads a message from the stream, decompressing it if necessary.\n//\n// Cancelling the returned cancel function releases the buffer back to the pool. So the caller should cancel as soon as\n// the buffer is no longer needed.\n// TODO: Refactor this function to reduce the number of arguments.\n// See: https://google.github.io/styleguide/go/best-practices.html#function-argument-lists\nfunc recvAndDecompress(p *parser, s recvCompressor, dc Decompressor, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor, isServer bool) (out mem.BufferSlice, err error) {\n\tpf, compressed, err := p.recvMsg(maxReceiveMessageSize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcompressedLength := compressed.Len()\n\n\tif st := checkRecvPayload(pf, s.RecvCompress(), compressor != nil || dc != nil, isServer); st != nil {\n\t\tcompressed.Free()\n\t\treturn nil, st.Err()\n\t}\n\n\tif pf.isCompressed() {\n\t\tdefer compressed.Free()\n\t\t// To match legacy behavior, if the decompressor is set by WithDecompressor or RPCDecompressor,\n\t\t// use this decompressor as the default.\n\t\tout, err = decompress(compressor, compressed, dc, maxReceiveMessageSize, p.bufferPool)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else {\n\t\tout = compressed\n\t}\n\n\tif payInfo != nil {\n\t\tpayInfo.compressedLength = compressedLength\n\t\tout.Ref()\n\t\tpayInfo.uncompressedBytes = out\n\t}\n\n\treturn out, nil\n}\n\n// decompress processes the given data by decompressing it using either\n// a custom decompressor or a standard compressor. If a custom decompressor\n// is provided, it takes precedence. The function validates that\n// the decompressed data does not exceed the specified maximum size and returns\n// an error if this limit is exceeded. On success, it returns the decompressed\n// data. Otherwise, it returns an error if decompression fails or the data\n// exceeds the size limit.\nfunc decompress(compressor encoding.Compressor, d mem.BufferSlice, dc Decompressor, maxReceiveMessageSize int, pool mem.BufferPool) (mem.BufferSlice, error) {\n\tif dc != nil {\n\t\tr := d.Reader()\n\t\tuncompressed, err := dc.Do(r)\n\t\tif err != nil {\n\t\t\tr.Close() // ensure buffers are reused\n\t\t\treturn nil, status.Errorf(codes.Internal, \"grpc: failed to decompress the received message: %v\", err)\n\t\t}\n\t\tif len(uncompressed) > maxReceiveMessageSize {\n\t\t\tr.Close() // ensure buffers are reused\n\t\t\treturn nil, status.Errorf(codes.ResourceExhausted, \"grpc: message after decompression larger than max (%d vs. %d)\", len(uncompressed), maxReceiveMessageSize)\n\t\t}\n\t\treturn mem.BufferSlice{mem.SliceBuffer(uncompressed)}, nil\n\t}\n\tif compressor != nil {\n\t\tr := d.Reader()\n\t\tdcReader, err := compressor.Decompress(r)\n\t\tif err != nil {\n\t\t\tr.Close() // ensure buffers are reused\n\t\t\treturn nil, status.Errorf(codes.Internal, \"grpc: failed to decompress the message: %v\", err)\n\t\t}\n\n\t\t// Read at most one byte more than the limit from the decompressor.\n\t\t// Unless the limit is MaxInt64, in which case, that's impossible, so\n\t\t// apply no limit.\n\t\tif limit := int64(maxReceiveMessageSize); limit < math.MaxInt64 {\n\t\t\tdcReader = io.LimitReader(dcReader, limit+1)\n\t\t}\n\t\tout, err := mem.ReadAll(dcReader, pool)\n\t\tif err != nil {\n\t\t\tr.Close() // ensure buffers are reused\n\t\t\tout.Free()\n\t\t\treturn nil, status.Errorf(codes.Internal, \"grpc: failed to read decompressed data: %v\", err)\n\t\t}\n\n\t\tif out.Len() > maxReceiveMessageSize {\n\t\t\tr.Close() // ensure buffers are reused\n\t\t\tout.Free()\n\t\t\treturn nil, status.Errorf(codes.ResourceExhausted, \"grpc: received message after decompression larger than max %d\", maxReceiveMessageSize)\n\t\t}\n\t\treturn out, nil\n\t}\n\treturn nil, status.Errorf(codes.Internal, \"grpc: no decompressor available for compressed payload\")\n}\n\ntype recvCompressor interface {\n\tRecvCompress() string\n}\n\n// For the two compressor parameters, both should not be set, but if they are,\n// dc takes precedence over compressor.\n// TODO(dfawley): wrap the old compressor/decompressor using the new API?\nfunc recv(p *parser, c baseCodec, s recvCompressor, dc Decompressor, m any, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor, isServer bool) error {\n\tdata, err := recvAndDecompress(p, s, dc, maxReceiveMessageSize, payInfo, compressor, isServer)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// If the codec wants its own reference to the data, it can get it. Otherwise, always\n\t// free the buffers.\n\tdefer data.Free()\n\n\tif err := c.Unmarshal(data, m); err != nil {\n\t\treturn status.Errorf(codes.Internal, \"grpc: failed to unmarshal the received message: %v\", err)\n\t}\n\n\treturn nil\n}\n\n// Information about RPC\ntype rpcInfo struct {\n\tfailfast      bool\n\tpreloaderInfo compressorInfo\n}\n\n// Information about Preloader\n// Responsible for storing codec, and compressors\n// If stream (s) has  context s.Context which stores rpcInfo that has non nil\n// pointers to codec, and compressors, then we can use preparedMsg for Async message prep\n// and reuse marshalled bytes\ntype compressorInfo struct {\n\tcodec baseCodec\n\tcp    Compressor\n\tcomp  encoding.Compressor\n}\n\ntype rpcInfoContextKey struct{}\n\nfunc newContextWithRPCInfo(ctx context.Context, failfast bool, codec baseCodec, cp Compressor, comp encoding.Compressor) context.Context {\n\treturn context.WithValue(ctx, rpcInfoContextKey{}, &rpcInfo{\n\t\tfailfast: failfast,\n\t\tpreloaderInfo: compressorInfo{\n\t\t\tcodec: codec,\n\t\t\tcp:    cp,\n\t\t\tcomp:  comp,\n\t\t},\n\t})\n}\n\nfunc rpcInfoFromContext(ctx context.Context) (s *rpcInfo, ok bool) {\n\ts, ok = ctx.Value(rpcInfoContextKey{}).(*rpcInfo)\n\treturn\n}\n\n// Code returns the error code for err if it was produced by the rpc system.\n// Otherwise, it returns codes.Unknown.\n//\n// Deprecated: use status.Code instead.\nfunc Code(err error) codes.Code {\n\treturn status.Code(err)\n}\n\n// ErrorDesc returns the error description of err if it was produced by the rpc system.\n// Otherwise, it returns err.Error() or empty string when err is nil.\n//\n// Deprecated: use status.Convert and Message method instead.\nfunc ErrorDesc(err error) string {\n\treturn status.Convert(err).Message()\n}\n\n// Errorf returns an error containing an error code and a description;\n// Errorf returns nil if c is OK.\n//\n// Deprecated: use status.Errorf instead.\nfunc Errorf(c codes.Code, format string, a ...any) error {\n\treturn status.Errorf(c, format, a...)\n}\n\nvar errContextCanceled = status.Error(codes.Canceled, context.Canceled.Error())\nvar errContextDeadline = status.Error(codes.DeadlineExceeded, context.DeadlineExceeded.Error())\n\n// toRPCErr converts an error into an error from the status package.\nfunc toRPCErr(err error) error {\n\tswitch err {\n\tcase nil, io.EOF:\n\t\treturn err\n\tcase context.DeadlineExceeded:\n\t\treturn errContextDeadline\n\tcase context.Canceled:\n\t\treturn errContextCanceled\n\tcase io.ErrUnexpectedEOF:\n\t\treturn status.Error(codes.Internal, err.Error())\n\t}\n\n\tswitch e := err.(type) {\n\tcase transport.ConnectionError:\n\t\treturn status.Error(codes.Unavailable, e.Desc)\n\tcase *transport.NewStreamError:\n\t\treturn toRPCErr(e.Err)\n\t}\n\n\tif _, ok := status.FromError(err); ok {\n\t\treturn err\n\t}\n\n\treturn status.Error(codes.Unknown, err.Error())\n}\n\n// setCallInfoCodec should only be called after CallOptions have been applied.\nfunc setCallInfoCodec(c *callInfo) error {\n\tif c.codec != nil {\n\t\t// codec was already set by a CallOption; use it, but set the content\n\t\t// subtype if it is not set.\n\t\tif c.contentSubtype == \"\" {\n\t\t\t// c.codec is a baseCodec to hide the difference between grpc.Codec and\n\t\t\t// encoding.Codec (Name vs. String method name).  We only support\n\t\t\t// setting content subtype from encoding.Codec to avoid a behavior\n\t\t\t// change with the deprecated version.\n\t\t\tif ec, ok := c.codec.(encoding.CodecV2); ok {\n\t\t\t\tc.contentSubtype = strings.ToLower(ec.Name())\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\n\tif c.contentSubtype == \"\" {\n\t\t// No codec specified in CallOptions; use proto by default.\n\t\tc.codec = getCodec(proto.Name)\n\t\treturn nil\n\t}\n\n\t// c.contentSubtype is already lowercased in CallContentSubtype\n\tc.codec = getCodec(c.contentSubtype)\n\tif c.codec == nil {\n\t\treturn status.Errorf(codes.Internal, \"no codec registered for content-subtype %s\", c.contentSubtype)\n\t}\n\treturn nil\n}\n\n// The SupportPackageIsVersion variables are referenced from generated protocol\n// buffer files to ensure compatibility with the gRPC version used.  The latest\n// support package version is 9.\n//\n// Older versions are kept for compatibility.\n//\n// These constants should not be referenced from any other code.\nconst (\n\tSupportPackageIsVersion3 = true\n\tSupportPackageIsVersion4 = true\n\tSupportPackageIsVersion5 = true\n\tSupportPackageIsVersion6 = true\n\tSupportPackageIsVersion7 = true\n\tSupportPackageIsVersion8 = true\n\tSupportPackageIsVersion9 = true\n)\n\nconst grpcUA = \"grpc-go/\" + Version\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/server.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"net\"\n\t\"net/http\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/encoding\"\n\t\"google.golang.org/grpc/encoding/proto\"\n\testats \"google.golang.org/grpc/experimental/stats\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/internal/binarylog\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\t\"google.golang.org/grpc/internal/envconfig\"\n\t\"google.golang.org/grpc/internal/grpcsync\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n\tistats \"google.golang.org/grpc/internal/stats\"\n\t\"google.golang.org/grpc/internal/transport\"\n\t\"google.golang.org/grpc/keepalive\"\n\t\"google.golang.org/grpc/mem\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/peer\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n\t\"google.golang.org/grpc/tap\"\n)\n\nconst (\n\tdefaultServerMaxReceiveMessageSize = 1024 * 1024 * 4\n\tdefaultServerMaxSendMessageSize    = math.MaxInt32\n\n\t// Server transports are tracked in a map which is keyed on listener\n\t// address. For regular gRPC traffic, connections are accepted in Serve()\n\t// through a call to Accept(), and we use the actual listener address as key\n\t// when we add it to the map. But for connections received through\n\t// ServeHTTP(), we do not have a listener and hence use this dummy value.\n\tlistenerAddressForServeHTTP = \"listenerAddressForServeHTTP\"\n)\n\nfunc init() {\n\tinternal.GetServerCredentials = func(srv *Server) credentials.TransportCredentials {\n\t\treturn srv.opts.creds\n\t}\n\tinternal.IsRegisteredMethod = func(srv *Server, method string) bool {\n\t\treturn srv.isRegisteredMethod(method)\n\t}\n\tinternal.ServerFromContext = serverFromContext\n\tinternal.AddGlobalServerOptions = func(opt ...ServerOption) {\n\t\tglobalServerOptions = append(globalServerOptions, opt...)\n\t}\n\tinternal.ClearGlobalServerOptions = func() {\n\t\tglobalServerOptions = nil\n\t}\n\tinternal.BinaryLogger = binaryLogger\n\tinternal.JoinServerOptions = newJoinServerOption\n\tinternal.BufferPool = bufferPool\n\tinternal.MetricsRecorderForServer = func(srv *Server) estats.MetricsRecorder {\n\t\treturn istats.NewMetricsRecorderList(srv.opts.statsHandlers)\n\t}\n}\n\nvar statusOK = status.New(codes.OK, \"\")\nvar logger = grpclog.Component(\"core\")\n\n// MethodHandler is a function type that processes a unary RPC method call.\ntype MethodHandler func(srv any, ctx context.Context, dec func(any) error, interceptor UnaryServerInterceptor) (any, error)\n\n// MethodDesc represents an RPC service's method specification.\ntype MethodDesc struct {\n\tMethodName string\n\tHandler    MethodHandler\n}\n\n// ServiceDesc represents an RPC service's specification.\ntype ServiceDesc struct {\n\tServiceName string\n\t// The pointer to the service interface. Used to check whether the user\n\t// provided implementation satisfies the interface requirements.\n\tHandlerType any\n\tMethods     []MethodDesc\n\tStreams     []StreamDesc\n\tMetadata    any\n}\n\n// serviceInfo wraps information about a service. It is very similar to\n// ServiceDesc and is constructed from it for internal purposes.\ntype serviceInfo struct {\n\t// Contains the implementation for the methods in this service.\n\tserviceImpl any\n\tmethods     map[string]*MethodDesc\n\tstreams     map[string]*StreamDesc\n\tmdata       any\n}\n\n// Server is a gRPC server to serve RPC requests.\ntype Server struct {\n\topts         serverOptions\n\tstatsHandler stats.Handler\n\n\tmu  sync.Mutex // guards following\n\tlis map[net.Listener]bool\n\t// conns contains all active server transports. It is a map keyed on a\n\t// listener address with the value being the set of active transports\n\t// belonging to that listener.\n\tconns    map[string]map[transport.ServerTransport]bool\n\tserve    bool\n\tdrain    bool\n\tcv       *sync.Cond              // signaled when connections close for GracefulStop\n\tservices map[string]*serviceInfo // service name -> service info\n\tevents   traceEventLog\n\n\tquit               *grpcsync.Event\n\tdone               *grpcsync.Event\n\tchannelzRemoveOnce sync.Once\n\tserveWG            sync.WaitGroup // counts active Serve goroutines for Stop/GracefulStop\n\thandlersWG         sync.WaitGroup // counts active method handler goroutines\n\n\tchannelz *channelz.Server\n\n\tserverWorkerChannel      chan func()\n\tserverWorkerChannelClose func()\n\n\tstrictPathCheckingLogEmitted atomic.Bool\n}\n\ntype serverOptions struct {\n\tcreds                 credentials.TransportCredentials\n\tcodec                 baseCodec\n\tcp                    Compressor\n\tdc                    Decompressor\n\tunaryInt              UnaryServerInterceptor\n\tstreamInt             StreamServerInterceptor\n\tchainUnaryInts        []UnaryServerInterceptor\n\tchainStreamInts       []StreamServerInterceptor\n\tbinaryLogger          binarylog.Logger\n\tinTapHandle           tap.ServerInHandle\n\tstatsHandlers         []stats.Handler\n\tmaxConcurrentStreams  uint32\n\tmaxReceiveMessageSize int\n\tmaxSendMessageSize    int\n\tunknownStreamDesc     *StreamDesc\n\tkeepaliveParams       keepalive.ServerParameters\n\tkeepalivePolicy       keepalive.EnforcementPolicy\n\tinitialWindowSize     int32\n\tinitialConnWindowSize int32\n\twriteBufferSize       int\n\treadBufferSize        int\n\tsharedWriteBuffer     bool\n\tconnectionTimeout     time.Duration\n\tmaxHeaderListSize     *uint32\n\theaderTableSize       *uint32\n\tnumServerWorkers      uint32\n\tbufferPool            mem.BufferPool\n\twaitForHandlers       bool\n\tstaticWindowSize      bool\n}\n\nvar defaultServerOptions = serverOptions{\n\tmaxConcurrentStreams:  math.MaxUint32,\n\tmaxReceiveMessageSize: defaultServerMaxReceiveMessageSize,\n\tmaxSendMessageSize:    defaultServerMaxSendMessageSize,\n\tconnectionTimeout:     120 * time.Second,\n\twriteBufferSize:       defaultWriteBufSize,\n\tsharedWriteBuffer:     true,\n\treadBufferSize:        defaultReadBufSize,\n\tbufferPool:            mem.DefaultBufferPool(),\n}\nvar globalServerOptions []ServerOption\n\n// A ServerOption sets options such as credentials, codec and keepalive parameters, etc.\ntype ServerOption interface {\n\tapply(*serverOptions)\n}\n\n// EmptyServerOption does not alter the server configuration. It can be embedded\n// in another structure to build custom server options.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype EmptyServerOption struct{}\n\nfunc (EmptyServerOption) apply(*serverOptions) {}\n\n// funcServerOption wraps a function that modifies serverOptions into an\n// implementation of the ServerOption interface.\ntype funcServerOption struct {\n\tf func(*serverOptions)\n}\n\nfunc (fdo *funcServerOption) apply(do *serverOptions) {\n\tfdo.f(do)\n}\n\nfunc newFuncServerOption(f func(*serverOptions)) *funcServerOption {\n\treturn &funcServerOption{\n\t\tf: f,\n\t}\n}\n\n// joinServerOption provides a way to combine arbitrary number of server\n// options into one.\ntype joinServerOption struct {\n\topts []ServerOption\n}\n\nfunc (mdo *joinServerOption) apply(do *serverOptions) {\n\tfor _, opt := range mdo.opts {\n\t\topt.apply(do)\n\t}\n}\n\nfunc newJoinServerOption(opts ...ServerOption) ServerOption {\n\treturn &joinServerOption{opts: opts}\n}\n\n// SharedWriteBuffer allows reusing per-connection transport write buffer.\n// If this option is set to true every connection will release the buffer after\n// flushing the data on the wire.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc SharedWriteBuffer(val bool) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.sharedWriteBuffer = val\n\t})\n}\n\n// WriteBufferSize determines how much data can be batched before doing a write\n// on the wire. The default value for this buffer is 32KB. Zero or negative\n// values will disable the write buffer such that each write will be on underlying\n// connection. Note: A Send call may not directly translate to a write.\nfunc WriteBufferSize(s int) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.writeBufferSize = s\n\t})\n}\n\n// ReadBufferSize lets you set the size of read buffer, this determines how much\n// data can be read at most for one read syscall. The default value for this\n// buffer is 32KB. Zero or negative values will disable read buffer for a\n// connection so data framer can access the underlying conn directly.\nfunc ReadBufferSize(s int) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.readBufferSize = s\n\t})\n}\n\n// InitialWindowSize returns a ServerOption that sets window size for stream.\n// The lower bound for window size is 64K and any value smaller than that will be ignored.\nfunc InitialWindowSize(s int32) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.initialWindowSize = s\n\t\to.staticWindowSize = true\n\t})\n}\n\n// InitialConnWindowSize returns a ServerOption that sets window size for a connection.\n// The lower bound for window size is 64K and any value smaller than that will be ignored.\nfunc InitialConnWindowSize(s int32) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.initialConnWindowSize = s\n\t\to.staticWindowSize = true\n\t})\n}\n\n// StaticStreamWindowSize returns a ServerOption to set the initial stream\n// window size to the value provided and disables dynamic flow control.\n// The lower bound for window size is 64K and any value smaller than that\n// will be ignored.\nfunc StaticStreamWindowSize(s int32) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.initialWindowSize = s\n\t\to.staticWindowSize = true\n\t})\n}\n\n// StaticConnWindowSize returns a ServerOption to set the initial connection\n// window size to the value provided and disables dynamic flow control.\n// The lower bound for window size is 64K and any value smaller than that\n// will be ignored.\nfunc StaticConnWindowSize(s int32) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.initialConnWindowSize = s\n\t\to.staticWindowSize = true\n\t})\n}\n\n// KeepaliveParams returns a ServerOption that sets keepalive and max-age parameters for the server.\nfunc KeepaliveParams(kp keepalive.ServerParameters) ServerOption {\n\tif kp.Time > 0 && kp.Time < internal.KeepaliveMinServerPingTime {\n\t\tlogger.Warning(\"Adjusting keepalive ping interval to minimum period of 1s\")\n\t\tkp.Time = internal.KeepaliveMinServerPingTime\n\t}\n\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.keepaliveParams = kp\n\t})\n}\n\n// KeepaliveEnforcementPolicy returns a ServerOption that sets keepalive enforcement policy for the server.\nfunc KeepaliveEnforcementPolicy(kep keepalive.EnforcementPolicy) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.keepalivePolicy = kep\n\t})\n}\n\n// CustomCodec returns a ServerOption that sets a codec for message marshaling and unmarshaling.\n//\n// This will override any lookups by content-subtype for Codecs registered with RegisterCodec.\n//\n// Deprecated: register codecs using encoding.RegisterCodec. The server will\n// automatically use registered codecs based on the incoming requests' headers.\n// See also\n// https://github.com/grpc/grpc-go/blob/master/Documentation/encoding.md#using-a-codec.\n// Will be supported throughout 1.x.\nfunc CustomCodec(codec Codec) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.codec = newCodecV0Bridge(codec)\n\t})\n}\n\n// ForceServerCodec returns a ServerOption that sets a codec for message\n// marshaling and unmarshaling.\n//\n// This will override any lookups by content-subtype for Codecs registered\n// with RegisterCodec.\n//\n// See Content-Type on\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for\n// more details. Also see the documentation on RegisterCodec and\n// CallContentSubtype for more details on the interaction between encoding.Codec\n// and content-subtype.\n//\n// This function is provided for advanced users; prefer to register codecs\n// using encoding.RegisterCodec.\n// The server will automatically use registered codecs based on the incoming\n// requests' headers. See also\n// https://github.com/grpc/grpc-go/blob/master/Documentation/encoding.md#using-a-codec.\n// Will be supported throughout 1.x.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc ForceServerCodec(codec encoding.Codec) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.codec = newCodecV1Bridge(codec)\n\t})\n}\n\n// ForceServerCodecV2 is the equivalent of ForceServerCodec, but for the new\n// CodecV2 interface.\n//\n// Will be supported throughout 1.x.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc ForceServerCodecV2(codecV2 encoding.CodecV2) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.codec = codecV2\n\t})\n}\n\n// RPCCompressor returns a ServerOption that sets a compressor for outbound\n// messages.  For backward compatibility, all outbound messages will be sent\n// using this compressor, regardless of incoming message compression.  By\n// default, server messages will be sent using the same compressor with which\n// request messages were sent.\n//\n// Deprecated: use encoding.RegisterCompressor instead. Will be supported\n// throughout 1.x.\nfunc RPCCompressor(cp Compressor) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.cp = cp\n\t})\n}\n\n// RPCDecompressor returns a ServerOption that sets a decompressor for inbound\n// messages.  It has higher priority than decompressors registered via\n// encoding.RegisterCompressor.\n//\n// Deprecated: use encoding.RegisterCompressor instead. Will be supported\n// throughout 1.x.\nfunc RPCDecompressor(dc Decompressor) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.dc = dc\n\t})\n}\n\n// MaxMsgSize returns a ServerOption to set the max message size in bytes the server can receive.\n// If this is not set, gRPC uses the default limit.\n//\n// Deprecated: use MaxRecvMsgSize instead. Will be supported throughout 1.x.\nfunc MaxMsgSize(m int) ServerOption {\n\treturn MaxRecvMsgSize(m)\n}\n\n// MaxRecvMsgSize returns a ServerOption to set the max message size in bytes the server can receive.\n// If this is not set, gRPC uses the default 4MB.\nfunc MaxRecvMsgSize(m int) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.maxReceiveMessageSize = m\n\t})\n}\n\n// MaxSendMsgSize returns a ServerOption to set the max message size in bytes the server can send.\n// If this is not set, gRPC uses the default `math.MaxInt32`.\nfunc MaxSendMsgSize(m int) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.maxSendMessageSize = m\n\t})\n}\n\n// MaxConcurrentStreams returns a ServerOption that will apply a limit on the number\n// of concurrent streams to each ServerTransport.\nfunc MaxConcurrentStreams(n uint32) ServerOption {\n\tif n == 0 {\n\t\tn = math.MaxUint32\n\t}\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.maxConcurrentStreams = n\n\t})\n}\n\n// Creds returns a ServerOption that sets credentials for server connections.\nfunc Creds(c credentials.TransportCredentials) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.creds = c\n\t})\n}\n\n// UnaryInterceptor returns a ServerOption that sets the UnaryServerInterceptor for the\n// server. Only one unary interceptor can be installed. The construction of multiple\n// interceptors (e.g., chaining) can be implemented at the caller.\nfunc UnaryInterceptor(i UnaryServerInterceptor) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\tif o.unaryInt != nil {\n\t\t\tpanic(\"The unary server interceptor was already set and may not be reset.\")\n\t\t}\n\t\to.unaryInt = i\n\t})\n}\n\n// ChainUnaryInterceptor returns a ServerOption that specifies the chained interceptor\n// for unary RPCs. The first interceptor will be the outer most,\n// while the last interceptor will be the inner most wrapper around the real call.\n// All unary interceptors added by this method will be chained.\nfunc ChainUnaryInterceptor(interceptors ...UnaryServerInterceptor) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.chainUnaryInts = append(o.chainUnaryInts, interceptors...)\n\t})\n}\n\n// StreamInterceptor returns a ServerOption that sets the StreamServerInterceptor for the\n// server. Only one stream interceptor can be installed.\nfunc StreamInterceptor(i StreamServerInterceptor) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\tif o.streamInt != nil {\n\t\t\tpanic(\"The stream server interceptor was already set and may not be reset.\")\n\t\t}\n\t\to.streamInt = i\n\t})\n}\n\n// ChainStreamInterceptor returns a ServerOption that specifies the chained interceptor\n// for streaming RPCs. The first interceptor will be the outer most,\n// while the last interceptor will be the inner most wrapper around the real call.\n// All stream interceptors added by this method will be chained.\nfunc ChainStreamInterceptor(interceptors ...StreamServerInterceptor) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.chainStreamInts = append(o.chainStreamInts, interceptors...)\n\t})\n}\n\n// InTapHandle returns a ServerOption that sets the tap handle for all the server\n// transport to be created. Only one can be installed.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc InTapHandle(h tap.ServerInHandle) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\tif o.inTapHandle != nil {\n\t\t\tpanic(\"The tap handle was already set and may not be reset.\")\n\t\t}\n\t\to.inTapHandle = h\n\t})\n}\n\n// StatsHandler returns a ServerOption that sets the stats handler for the server.\nfunc StatsHandler(h stats.Handler) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\tif h == nil {\n\t\t\tlogger.Error(\"ignoring nil parameter in grpc.StatsHandler ServerOption\")\n\t\t\t// Do not allow a nil stats handler, which would otherwise cause\n\t\t\t// panics.\n\t\t\treturn\n\t\t}\n\t\to.statsHandlers = append(o.statsHandlers, h)\n\t})\n}\n\n// binaryLogger returns a ServerOption that can set the binary logger for the\n// server.\nfunc binaryLogger(bl binarylog.Logger) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.binaryLogger = bl\n\t})\n}\n\n// UnknownServiceHandler returns a ServerOption that allows for adding a custom\n// unknown service handler. The provided method is a bidi-streaming RPC service\n// handler that will be invoked instead of returning the \"unimplemented\" gRPC\n// error whenever a request is received for an unregistered service or method.\n// The handling function and stream interceptor (if set) have full access to\n// the ServerStream, including its Context.\nfunc UnknownServiceHandler(streamHandler StreamHandler) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.unknownStreamDesc = &StreamDesc{\n\t\t\tStreamName: \"unknown_service_handler\",\n\t\t\tHandler:    streamHandler,\n\t\t\t// We need to assume that the users of the streamHandler will want to use both.\n\t\t\tClientStreams: true,\n\t\t\tServerStreams: true,\n\t\t}\n\t})\n}\n\n// ConnectionTimeout returns a ServerOption that sets the timeout for\n// connection establishment (up to and including HTTP/2 handshaking) for all\n// new connections.  If this is not set, the default is 120 seconds.  A zero or\n// negative value will result in an immediate timeout.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc ConnectionTimeout(d time.Duration) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.connectionTimeout = d\n\t})\n}\n\n// MaxHeaderListSizeServerOption is a ServerOption that sets the max\n// (uncompressed) size of header list that the server is prepared to accept.\ntype MaxHeaderListSizeServerOption struct {\n\tMaxHeaderListSize uint32\n}\n\nfunc (o MaxHeaderListSizeServerOption) apply(so *serverOptions) {\n\tso.maxHeaderListSize = &o.MaxHeaderListSize\n}\n\n// MaxHeaderListSize returns a ServerOption that sets the max (uncompressed) size\n// of header list that the server is prepared to accept.\nfunc MaxHeaderListSize(s uint32) ServerOption {\n\treturn MaxHeaderListSizeServerOption{\n\t\tMaxHeaderListSize: s,\n\t}\n}\n\n// HeaderTableSize returns a ServerOption that sets the size of dynamic\n// header table for stream.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc HeaderTableSize(s uint32) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.headerTableSize = &s\n\t})\n}\n\n// NumStreamWorkers returns a ServerOption that sets the number of worker\n// goroutines that should be used to process incoming streams. Setting this to\n// zero (default) will disable workers and spawn a new goroutine for each\n// stream.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc NumStreamWorkers(numServerWorkers uint32) ServerOption {\n\t// TODO: If/when this API gets stabilized (i.e. stream workers become the\n\t// only way streams are processed), change the behavior of the zero value to\n\t// a sane default. Preliminary experiments suggest that a value equal to the\n\t// number of CPUs available is most performant; requires thorough testing.\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.numServerWorkers = numServerWorkers\n\t})\n}\n\n// WaitForHandlers cause Stop to wait until all outstanding method handlers have\n// exited before returning.  If false, Stop will return as soon as all\n// connections have closed, but method handlers may still be running. By\n// default, Stop does not wait for method handlers to return.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WaitForHandlers(w bool) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.waitForHandlers = w\n\t})\n}\n\nfunc bufferPool(bufferPool mem.BufferPool) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.bufferPool = bufferPool\n\t})\n}\n\n// serverWorkerResetThreshold defines how often the stack must be reset. Every\n// N requests, by spawning a new goroutine in its place, a worker can reset its\n// stack so that large stacks don't live in memory forever. 2^16 should allow\n// each goroutine stack to live for at least a few seconds in a typical\n// workload (assuming a QPS of a few thousand requests/sec).\nconst serverWorkerResetThreshold = 1 << 16\n\n// serverWorker blocks on a *transport.ServerStream channel forever and waits\n// for data to be fed by serveStreams. This allows multiple requests to be\n// processed by the same goroutine, removing the need for expensive stack\n// re-allocations (see the runtime.morestack problem [1]).\n//\n// [1] https://github.com/golang/go/issues/18138\nfunc (s *Server) serverWorker() {\n\tfor completed := 0; completed < serverWorkerResetThreshold; completed++ {\n\t\tf, ok := <-s.serverWorkerChannel\n\t\tif !ok {\n\t\t\treturn\n\t\t}\n\t\tf()\n\t}\n\tgo s.serverWorker()\n}\n\n// initServerWorkers creates worker goroutines and a channel to process incoming\n// connections to reduce the time spent overall on runtime.morestack.\nfunc (s *Server) initServerWorkers() {\n\ts.serverWorkerChannel = make(chan func())\n\ts.serverWorkerChannelClose = sync.OnceFunc(func() {\n\t\tclose(s.serverWorkerChannel)\n\t})\n\tfor i := uint32(0); i < s.opts.numServerWorkers; i++ {\n\t\tgo s.serverWorker()\n\t}\n}\n\n// NewServer creates a gRPC server which has no service registered and has not\n// started to accept requests yet.\nfunc NewServer(opt ...ServerOption) *Server {\n\topts := defaultServerOptions\n\tfor _, o := range globalServerOptions {\n\t\to.apply(&opts)\n\t}\n\tfor _, o := range opt {\n\t\to.apply(&opts)\n\t}\n\ts := &Server{\n\t\tlis:          make(map[net.Listener]bool),\n\t\topts:         opts,\n\t\tstatsHandler: istats.NewCombinedHandler(opts.statsHandlers...),\n\t\tconns:        make(map[string]map[transport.ServerTransport]bool),\n\t\tservices:     make(map[string]*serviceInfo),\n\t\tquit:         grpcsync.NewEvent(),\n\t\tdone:         grpcsync.NewEvent(),\n\t\tchannelz:     channelz.RegisterServer(\"\"),\n\t}\n\tchainUnaryServerInterceptors(s)\n\tchainStreamServerInterceptors(s)\n\ts.cv = sync.NewCond(&s.mu)\n\tif EnableTracing {\n\t\t_, file, line, _ := runtime.Caller(1)\n\t\ts.events = newTraceEventLog(\"grpc.Server\", fmt.Sprintf(\"%s:%d\", file, line))\n\t}\n\n\tif s.opts.numServerWorkers > 0 {\n\t\ts.initServerWorkers()\n\t}\n\n\tchannelz.Info(logger, s.channelz, \"Server created\")\n\treturn s\n}\n\n// printf records an event in s's event log, unless s has been stopped.\n// REQUIRES s.mu is held.\nfunc (s *Server) printf(format string, a ...any) {\n\tif s.events != nil {\n\t\ts.events.Printf(format, a...)\n\t}\n}\n\n// errorf records an error in s's event log, unless s has been stopped.\n// REQUIRES s.mu is held.\nfunc (s *Server) errorf(format string, a ...any) {\n\tif s.events != nil {\n\t\ts.events.Errorf(format, a...)\n\t}\n}\n\n// ServiceRegistrar wraps a single method that supports service registration. It\n// enables users to pass concrete types other than grpc.Server to the service\n// registration methods exported by the IDL generated code.\ntype ServiceRegistrar interface {\n\t// RegisterService registers a service and its implementation to the\n\t// concrete type implementing this interface.  It may not be called\n\t// once the server has started serving.\n\t// desc describes the service and its methods and handlers. impl is the\n\t// service implementation which is passed to the method handlers.\n\tRegisterService(desc *ServiceDesc, impl any)\n}\n\n// RegisterService registers a service and its implementation to the gRPC\n// server. It is called from the IDL generated code. This must be called before\n// invoking Serve. If ss is non-nil (for legacy code), its type is checked to\n// ensure it implements sd.HandlerType.\nfunc (s *Server) RegisterService(sd *ServiceDesc, ss any) {\n\tif ss != nil {\n\t\tht := reflect.TypeOf(sd.HandlerType).Elem()\n\t\tst := reflect.TypeOf(ss)\n\t\tif !st.Implements(ht) {\n\t\t\tlogger.Fatalf(\"grpc: Server.RegisterService found the handler of type %v that does not satisfy %v\", st, ht)\n\t\t}\n\t}\n\ts.register(sd, ss)\n}\n\nfunc (s *Server) register(sd *ServiceDesc, ss any) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\ts.printf(\"RegisterService(%q)\", sd.ServiceName)\n\tif s.serve {\n\t\tlogger.Fatalf(\"grpc: Server.RegisterService after Server.Serve for %q\", sd.ServiceName)\n\t}\n\tif _, ok := s.services[sd.ServiceName]; ok {\n\t\tlogger.Fatalf(\"grpc: Server.RegisterService found duplicate service registration for %q\", sd.ServiceName)\n\t}\n\tinfo := &serviceInfo{\n\t\tserviceImpl: ss,\n\t\tmethods:     make(map[string]*MethodDesc),\n\t\tstreams:     make(map[string]*StreamDesc),\n\t\tmdata:       sd.Metadata,\n\t}\n\tfor i := range sd.Methods {\n\t\td := &sd.Methods[i]\n\t\tinfo.methods[d.MethodName] = d\n\t}\n\tfor i := range sd.Streams {\n\t\td := &sd.Streams[i]\n\t\tinfo.streams[d.StreamName] = d\n\t}\n\ts.services[sd.ServiceName] = info\n}\n\n// MethodInfo contains the information of an RPC including its method name and type.\ntype MethodInfo struct {\n\t// Name is the method name only, without the service name or package name.\n\tName string\n\t// IsClientStream indicates whether the RPC is a client streaming RPC.\n\tIsClientStream bool\n\t// IsServerStream indicates whether the RPC is a server streaming RPC.\n\tIsServerStream bool\n}\n\n// ServiceInfo contains unary RPC method info, streaming RPC method info and metadata for a service.\ntype ServiceInfo struct {\n\tMethods []MethodInfo\n\t// Metadata is the metadata specified in ServiceDesc when registering service.\n\tMetadata any\n}\n\n// GetServiceInfo returns a map from service names to ServiceInfo.\n// Service names include the package names, in the form of <package>.<service>.\nfunc (s *Server) GetServiceInfo() map[string]ServiceInfo {\n\tret := make(map[string]ServiceInfo)\n\tfor n, srv := range s.services {\n\t\tmethods := make([]MethodInfo, 0, len(srv.methods)+len(srv.streams))\n\t\tfor m := range srv.methods {\n\t\t\tmethods = append(methods, MethodInfo{\n\t\t\t\tName:           m,\n\t\t\t\tIsClientStream: false,\n\t\t\t\tIsServerStream: false,\n\t\t\t})\n\t\t}\n\t\tfor m, d := range srv.streams {\n\t\t\tmethods = append(methods, MethodInfo{\n\t\t\t\tName:           m,\n\t\t\t\tIsClientStream: d.ClientStreams,\n\t\t\t\tIsServerStream: d.ServerStreams,\n\t\t\t})\n\t\t}\n\n\t\tret[n] = ServiceInfo{\n\t\t\tMethods:  methods,\n\t\t\tMetadata: srv.mdata,\n\t\t}\n\t}\n\treturn ret\n}\n\n// ErrServerStopped indicates that the operation is now illegal because of\n// the server being stopped.\nvar ErrServerStopped = errors.New(\"grpc: the server has been stopped\")\n\ntype listenSocket struct {\n\tnet.Listener\n\tchannelz *channelz.Socket\n}\n\nfunc (l *listenSocket) Close() error {\n\terr := l.Listener.Close()\n\tchannelz.RemoveEntry(l.channelz.ID)\n\tchannelz.Info(logger, l.channelz, \"ListenSocket deleted\")\n\treturn err\n}\n\n// Serve accepts incoming connections on the listener lis, creating a new\n// ServerTransport and service goroutine for each. The service goroutines\n// read gRPC requests and then call the registered handlers to reply to them.\n// Serve returns when lis.Accept fails with fatal errors.  lis will be closed when\n// this method returns.\n// Serve will return a non-nil error unless Stop or GracefulStop is called.\n//\n// Note: All supported releases of Go (as of December 2023) override the OS\n// defaults for TCP keepalive time and interval to 15s. To enable TCP keepalive\n// with OS defaults for keepalive time and interval, callers need to do the\n// following two things:\n//   - pass a net.Listener created by calling the Listen method on a\n//     net.ListenConfig with the `KeepAlive` field set to a negative value. This\n//     will result in the Go standard library not overriding OS defaults for TCP\n//     keepalive interval and time. But this will also result in the Go standard\n//     library not enabling TCP keepalives by default.\n//   - override the Accept method on the passed in net.Listener and set the\n//     SO_KEEPALIVE socket option to enable TCP keepalives, with OS defaults.\nfunc (s *Server) Serve(lis net.Listener) error {\n\ts.mu.Lock()\n\ts.printf(\"serving\")\n\ts.serve = true\n\tif s.lis == nil {\n\t\t// Serve called after Stop or GracefulStop.\n\t\ts.mu.Unlock()\n\t\tlis.Close()\n\t\treturn ErrServerStopped\n\t}\n\n\ts.serveWG.Add(1)\n\tdefer func() {\n\t\ts.serveWG.Done()\n\t\tif s.quit.HasFired() {\n\t\t\t// Stop or GracefulStop called; block until done and return nil.\n\t\t\t<-s.done.Done()\n\t\t}\n\t}()\n\n\tls := &listenSocket{\n\t\tListener: lis,\n\t\tchannelz: channelz.RegisterSocket(&channelz.Socket{\n\t\t\tSocketType:    channelz.SocketTypeListen,\n\t\t\tParent:        s.channelz,\n\t\t\tRefName:       lis.Addr().String(),\n\t\t\tLocalAddr:     lis.Addr(),\n\t\t\tSocketOptions: channelz.GetSocketOption(lis)},\n\t\t),\n\t}\n\ts.lis[ls] = true\n\n\tdefer func() {\n\t\ts.mu.Lock()\n\t\tif s.lis != nil && s.lis[ls] {\n\t\t\tls.Close()\n\t\t\tdelete(s.lis, ls)\n\t\t}\n\t\ts.mu.Unlock()\n\t}()\n\n\ts.mu.Unlock()\n\tchannelz.Info(logger, ls.channelz, \"ListenSocket created\")\n\n\tvar tempDelay time.Duration // how long to sleep on accept failure\n\tfor {\n\t\trawConn, err := lis.Accept()\n\t\tif err != nil {\n\t\t\tif ne, ok := err.(interface {\n\t\t\t\tTemporary() bool\n\t\t\t}); ok && ne.Temporary() {\n\t\t\t\tif tempDelay == 0 {\n\t\t\t\t\ttempDelay = 5 * time.Millisecond\n\t\t\t\t} else {\n\t\t\t\t\ttempDelay *= 2\n\t\t\t\t\ttempDelay = min(tempDelay, 1*time.Second)\n\t\t\t\t}\n\t\t\t\ts.mu.Lock()\n\t\t\t\ts.printf(\"Accept error: %v; retrying in %v\", err, tempDelay)\n\t\t\t\ts.mu.Unlock()\n\t\t\t\ttimer := time.NewTimer(tempDelay)\n\t\t\t\tselect {\n\t\t\t\tcase <-timer.C:\n\t\t\t\tcase <-s.quit.Done():\n\t\t\t\t\ttimer.Stop()\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ts.mu.Lock()\n\t\t\ts.printf(\"done serving; Accept = %v\", err)\n\t\t\ts.mu.Unlock()\n\n\t\t\tif s.quit.HasFired() {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t\ttempDelay = 0\n\t\t// Start a new goroutine to deal with rawConn so we don't stall this Accept\n\t\t// loop goroutine.\n\t\t//\n\t\t// Make sure we account for the goroutine so GracefulStop doesn't nil out\n\t\t// s.conns before this conn can be added.\n\t\ts.serveWG.Add(1)\n\t\tgo func() {\n\t\t\ts.handleRawConn(lis.Addr().String(), rawConn)\n\t\t\ts.serveWG.Done()\n\t\t}()\n\t}\n}\n\n// handleRawConn forks a goroutine to handle a just-accepted connection that\n// has not had any I/O performed on it yet.\nfunc (s *Server) handleRawConn(lisAddr string, rawConn net.Conn) {\n\tif s.quit.HasFired() {\n\t\trawConn.Close()\n\t\treturn\n\t}\n\trawConn.SetDeadline(time.Now().Add(s.opts.connectionTimeout))\n\n\t// Finish handshaking (HTTP2)\n\tst := s.newHTTP2Transport(rawConn)\n\trawConn.SetDeadline(time.Time{})\n\tif st == nil {\n\t\treturn\n\t}\n\n\tif cc, ok := rawConn.(interface {\n\t\tPassServerTransport(transport.ServerTransport)\n\t}); ok {\n\t\tcc.PassServerTransport(st)\n\t}\n\n\tif !s.addConn(lisAddr, st) {\n\t\treturn\n\t}\n\tgo func() {\n\t\ts.serveStreams(context.Background(), st, rawConn)\n\t\ts.removeConn(lisAddr, st)\n\t}()\n}\n\n// newHTTP2Transport sets up a http/2 transport (using the\n// gRPC http2 server transport in transport/http2_server.go).\nfunc (s *Server) newHTTP2Transport(c net.Conn) transport.ServerTransport {\n\tconfig := &transport.ServerConfig{\n\t\tMaxStreams:            s.opts.maxConcurrentStreams,\n\t\tConnectionTimeout:     s.opts.connectionTimeout,\n\t\tCredentials:           s.opts.creds,\n\t\tInTapHandle:           s.opts.inTapHandle,\n\t\tStatsHandler:          s.statsHandler,\n\t\tKeepaliveParams:       s.opts.keepaliveParams,\n\t\tKeepalivePolicy:       s.opts.keepalivePolicy,\n\t\tInitialWindowSize:     s.opts.initialWindowSize,\n\t\tInitialConnWindowSize: s.opts.initialConnWindowSize,\n\t\tWriteBufferSize:       s.opts.writeBufferSize,\n\t\tReadBufferSize:        s.opts.readBufferSize,\n\t\tSharedWriteBuffer:     s.opts.sharedWriteBuffer,\n\t\tChannelzParent:        s.channelz,\n\t\tMaxHeaderListSize:     s.opts.maxHeaderListSize,\n\t\tHeaderTableSize:       s.opts.headerTableSize,\n\t\tBufferPool:            s.opts.bufferPool,\n\t\tStaticWindowSize:      s.opts.staticWindowSize,\n\t}\n\tst, err := transport.NewServerTransport(c, config)\n\tif err != nil {\n\t\ts.mu.Lock()\n\t\ts.errorf(\"NewServerTransport(%q) failed: %v\", c.RemoteAddr(), err)\n\t\ts.mu.Unlock()\n\t\t// ErrConnDispatched means that the connection was dispatched away from\n\t\t// gRPC; those connections should be left open.\n\t\tif err != credentials.ErrConnDispatched {\n\t\t\t// Don't log on ErrConnDispatched and io.EOF to prevent log spam.\n\t\t\tif err != io.EOF {\n\t\t\t\tchannelz.Info(logger, s.channelz, \"grpc: Server.Serve failed to create ServerTransport: \", err)\n\t\t\t}\n\t\t\tc.Close()\n\t\t}\n\t\treturn nil\n\t}\n\n\treturn st\n}\n\nfunc (s *Server) serveStreams(ctx context.Context, st transport.ServerTransport, rawConn net.Conn) {\n\tctx = transport.SetConnection(ctx, rawConn)\n\tctx = peer.NewContext(ctx, st.Peer())\n\tif s.statsHandler != nil {\n\t\tctx = s.statsHandler.TagConn(ctx, &stats.ConnTagInfo{\n\t\t\tRemoteAddr: st.Peer().Addr,\n\t\t\tLocalAddr:  st.Peer().LocalAddr,\n\t\t})\n\t\ts.statsHandler.HandleConn(ctx, &stats.ConnBegin{})\n\t}\n\n\tdefer func() {\n\t\tst.Close(errors.New(\"finished serving streams for the server transport\"))\n\t\tif s.statsHandler != nil {\n\t\t\ts.statsHandler.HandleConn(ctx, &stats.ConnEnd{})\n\t\t}\n\t}()\n\n\tstreamQuota := newHandlerQuota(s.opts.maxConcurrentStreams)\n\tst.HandleStreams(ctx, func(stream *transport.ServerStream) {\n\t\ts.handlersWG.Add(1)\n\t\tstreamQuota.acquire()\n\t\tf := func() {\n\t\t\tdefer streamQuota.release()\n\t\t\tdefer s.handlersWG.Done()\n\t\t\ts.handleStream(st, stream)\n\t\t}\n\n\t\tif s.opts.numServerWorkers > 0 {\n\t\t\tselect {\n\t\t\tcase s.serverWorkerChannel <- f:\n\t\t\t\treturn\n\t\t\tdefault:\n\t\t\t\t// If all stream workers are busy, fallback to the default code path.\n\t\t\t}\n\t\t}\n\t\tgo f()\n\t})\n}\n\nvar _ http.Handler = (*Server)(nil)\n\n// ServeHTTP implements the Go standard library's http.Handler\n// interface by responding to the gRPC request r, by looking up\n// the requested gRPC method in the gRPC server s.\n//\n// The provided HTTP request must have arrived on an HTTP/2\n// connection. When using the Go standard library's server,\n// practically this means that the Request must also have arrived\n// over TLS.\n//\n// To share one port (such as 443 for https) between gRPC and an\n// existing http.Handler, use a root http.Handler such as:\n//\n//\tif r.ProtoMajor == 2 && strings.HasPrefix(\n//\t\tr.Header.Get(\"Content-Type\"), \"application/grpc\") {\n//\t\tgrpcServer.ServeHTTP(w, r)\n//\t} else {\n//\t\tyourMux.ServeHTTP(w, r)\n//\t}\n//\n// Note that ServeHTTP uses Go's HTTP/2 server implementation which is totally\n// separate from grpc-go's HTTP/2 server. Performance and features may vary\n// between the two paths. ServeHTTP does not support some gRPC features\n// available through grpc-go's HTTP/2 server.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {\n\tst, err := transport.NewServerHandlerTransport(w, r, s.statsHandler, s.opts.bufferPool)\n\tif err != nil {\n\t\t// Errors returned from transport.NewServerHandlerTransport have\n\t\t// already been written to w.\n\t\treturn\n\t}\n\tif !s.addConn(listenerAddressForServeHTTP, st) {\n\t\treturn\n\t}\n\tdefer s.removeConn(listenerAddressForServeHTTP, st)\n\ts.serveStreams(r.Context(), st, nil)\n}\n\nfunc (s *Server) addConn(addr string, st transport.ServerTransport) bool {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\tif s.conns == nil {\n\t\tst.Close(errors.New(\"Server.addConn called when server has already been stopped\"))\n\t\treturn false\n\t}\n\tif s.drain {\n\t\t// Transport added after we drained our existing conns: drain it\n\t\t// immediately.\n\t\tst.Drain(\"\")\n\t}\n\n\tif s.conns[addr] == nil {\n\t\t// Create a map entry if this is the first connection on this listener.\n\t\ts.conns[addr] = make(map[transport.ServerTransport]bool)\n\t}\n\ts.conns[addr][st] = true\n\treturn true\n}\n\nfunc (s *Server) removeConn(addr string, st transport.ServerTransport) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\tconns := s.conns[addr]\n\tif conns != nil {\n\t\tdelete(conns, st)\n\t\tif len(conns) == 0 {\n\t\t\t// If the last connection for this address is being removed, also\n\t\t\t// remove the map entry corresponding to the address. This is used\n\t\t\t// in GracefulStop() when waiting for all connections to be closed.\n\t\t\tdelete(s.conns, addr)\n\t\t}\n\t\ts.cv.Broadcast()\n\t}\n}\n\nfunc (s *Server) incrCallsStarted() {\n\ts.channelz.ServerMetrics.CallsStarted.Add(1)\n\ts.channelz.ServerMetrics.LastCallStartedTimestamp.Store(time.Now().UnixNano())\n}\n\nfunc (s *Server) incrCallsSucceeded() {\n\ts.channelz.ServerMetrics.CallsSucceeded.Add(1)\n}\n\nfunc (s *Server) incrCallsFailed() {\n\ts.channelz.ServerMetrics.CallsFailed.Add(1)\n}\n\nfunc (s *Server) sendResponse(ctx context.Context, stream *transport.ServerStream, msg any, cp Compressor, opts *transport.WriteOptions, comp encoding.Compressor) error {\n\tdata, err := encode(s.getCodec(stream.ContentSubtype()), msg)\n\tif err != nil {\n\t\tchannelz.Error(logger, s.channelz, \"grpc: server failed to encode response: \", err)\n\t\treturn err\n\t}\n\n\tcompData, pf, err := compress(data, cp, comp, s.opts.bufferPool)\n\tif err != nil {\n\t\tdata.Free()\n\t\tchannelz.Error(logger, s.channelz, \"grpc: server failed to compress response: \", err)\n\t\treturn err\n\t}\n\n\thdr, payload := msgHeader(data, compData, pf)\n\n\tdefer func() {\n\t\tcompData.Free()\n\t\tdata.Free()\n\t\t// payload does not need to be freed here, it is either data or compData, both of\n\t\t// which are already freed.\n\t}()\n\n\tdataLen := data.Len()\n\tpayloadLen := payload.Len()\n\t// TODO(dfawley): should we be checking len(data) instead?\n\tif payloadLen > s.opts.maxSendMessageSize {\n\t\treturn status.Errorf(codes.ResourceExhausted, \"grpc: trying to send message larger than max (%d vs. %d)\", payloadLen, s.opts.maxSendMessageSize)\n\t}\n\terr = stream.Write(hdr, payload, opts)\n\tif err == nil && s.statsHandler != nil {\n\t\ts.statsHandler.HandleRPC(ctx, outPayload(false, msg, dataLen, payloadLen, time.Now()))\n\t}\n\treturn err\n}\n\n// chainUnaryServerInterceptors chains all unary server interceptors into one.\nfunc chainUnaryServerInterceptors(s *Server) {\n\t// Prepend opts.unaryInt to the chaining interceptors if it exists, since unaryInt will\n\t// be executed before any other chained interceptors.\n\tinterceptors := s.opts.chainUnaryInts\n\tif s.opts.unaryInt != nil {\n\t\tinterceptors = append([]UnaryServerInterceptor{s.opts.unaryInt}, s.opts.chainUnaryInts...)\n\t}\n\n\tvar chainedInt UnaryServerInterceptor\n\tif len(interceptors) == 0 {\n\t\tchainedInt = nil\n\t} else if len(interceptors) == 1 {\n\t\tchainedInt = interceptors[0]\n\t} else {\n\t\tchainedInt = chainUnaryInterceptors(interceptors)\n\t}\n\n\ts.opts.unaryInt = chainedInt\n}\n\nfunc chainUnaryInterceptors(interceptors []UnaryServerInterceptor) UnaryServerInterceptor {\n\treturn func(ctx context.Context, req any, info *UnaryServerInfo, handler UnaryHandler) (any, error) {\n\t\treturn interceptors[0](ctx, req, info, getChainUnaryHandler(interceptors, 0, info, handler))\n\t}\n}\n\nfunc getChainUnaryHandler(interceptors []UnaryServerInterceptor, curr int, info *UnaryServerInfo, finalHandler UnaryHandler) UnaryHandler {\n\tif curr == len(interceptors)-1 {\n\t\treturn finalHandler\n\t}\n\treturn func(ctx context.Context, req any) (any, error) {\n\t\treturn interceptors[curr+1](ctx, req, info, getChainUnaryHandler(interceptors, curr+1, info, finalHandler))\n\t}\n}\n\nfunc (s *Server) processUnaryRPC(ctx context.Context, stream *transport.ServerStream, info *serviceInfo, md *MethodDesc, trInfo *traceInfo) (err error) {\n\tsh := s.statsHandler\n\tif sh != nil || trInfo != nil || channelz.IsOn() {\n\t\tif channelz.IsOn() {\n\t\t\ts.incrCallsStarted()\n\t\t}\n\t\tvar statsBegin *stats.Begin\n\t\tif sh != nil {\n\t\t\tstatsBegin = &stats.Begin{\n\t\t\t\tBeginTime:      time.Now(),\n\t\t\t\tIsClientStream: false,\n\t\t\t\tIsServerStream: false,\n\t\t\t}\n\t\t\tsh.HandleRPC(ctx, statsBegin)\n\t\t}\n\t\tif trInfo != nil {\n\t\t\ttrInfo.tr.LazyLog(&trInfo.firstLine, false)\n\t\t}\n\t\t// The deferred error handling for tracing, stats handler and channelz are\n\t\t// combined into one function to reduce stack usage -- a defer takes ~56-64\n\t\t// bytes on the stack, so overflowing the stack will require a stack\n\t\t// re-allocation, which is expensive.\n\t\t//\n\t\t// To maintain behavior similar to separate deferred statements, statements\n\t\t// should be executed in the reverse order. That is, tracing first, stats\n\t\t// handler second, and channelz last. Note that panics *within* defers will\n\t\t// lead to different behavior, but that's an acceptable compromise; that\n\t\t// would be undefined behavior territory anyway.\n\t\tdefer func() {\n\t\t\tif trInfo != nil {\n\t\t\t\tif err != nil && err != io.EOF {\n\t\t\t\t\ttrInfo.tr.LazyLog(&fmtStringer{\"%v\", []any{err}}, true)\n\t\t\t\t\ttrInfo.tr.SetError()\n\t\t\t\t}\n\t\t\t\ttrInfo.tr.Finish()\n\t\t\t}\n\n\t\t\tif sh != nil {\n\t\t\t\tend := &stats.End{\n\t\t\t\t\tBeginTime: statsBegin.BeginTime,\n\t\t\t\t\tEndTime:   time.Now(),\n\t\t\t\t}\n\t\t\t\tif err != nil && err != io.EOF {\n\t\t\t\t\tend.Error = toRPCErr(err)\n\t\t\t\t}\n\t\t\t\tsh.HandleRPC(ctx, end)\n\t\t\t}\n\n\t\t\tif channelz.IsOn() {\n\t\t\t\tif err != nil && err != io.EOF {\n\t\t\t\t\ts.incrCallsFailed()\n\t\t\t\t} else {\n\t\t\t\t\ts.incrCallsSucceeded()\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n\tvar binlogs []binarylog.MethodLogger\n\tif ml := binarylog.GetMethodLogger(stream.Method()); ml != nil {\n\t\tbinlogs = append(binlogs, ml)\n\t}\n\tif s.opts.binaryLogger != nil {\n\t\tif ml := s.opts.binaryLogger.GetMethodLogger(stream.Method()); ml != nil {\n\t\t\tbinlogs = append(binlogs, ml)\n\t\t}\n\t}\n\tif len(binlogs) != 0 {\n\t\tmd, _ := metadata.FromIncomingContext(ctx)\n\t\tlogEntry := &binarylog.ClientHeader{\n\t\t\tHeader:     md,\n\t\t\tMethodName: stream.Method(),\n\t\t\tPeerAddr:   nil,\n\t\t}\n\t\tif deadline, ok := ctx.Deadline(); ok {\n\t\t\tlogEntry.Timeout = time.Until(deadline)\n\t\t\tif logEntry.Timeout < 0 {\n\t\t\t\tlogEntry.Timeout = 0\n\t\t\t}\n\t\t}\n\t\tif a := md[\":authority\"]; len(a) > 0 {\n\t\t\tlogEntry.Authority = a[0]\n\t\t}\n\t\tif peer, ok := peer.FromContext(ctx); ok {\n\t\t\tlogEntry.PeerAddr = peer.Addr\n\t\t}\n\t\tfor _, binlog := range binlogs {\n\t\t\tbinlog.Log(ctx, logEntry)\n\t\t}\n\t}\n\n\t// comp and cp are used for compression.  decomp and dc are used for\n\t// decompression.  If comp and decomp are both set, they are the same;\n\t// however they are kept separate to ensure that at most one of the\n\t// compressor/decompressor variable pairs are set for use later.\n\tvar comp, decomp encoding.Compressor\n\tvar cp Compressor\n\tvar dc Decompressor\n\tvar sendCompressorName string\n\n\t// If dc is set and matches the stream's compression, use it.  Otherwise, try\n\t// to find a matching registered compressor for decomp.\n\tif rc := stream.RecvCompress(); s.opts.dc != nil && s.opts.dc.Type() == rc {\n\t\tdc = s.opts.dc\n\t} else if rc != \"\" && rc != encoding.Identity {\n\t\tdecomp = encoding.GetCompressor(rc)\n\t\tif decomp == nil {\n\t\t\tst := status.Newf(codes.Unimplemented, \"grpc: Decompressor is not installed for grpc-encoding %q\", rc)\n\t\t\tstream.WriteStatus(st)\n\t\t\treturn st.Err()\n\t\t}\n\t}\n\n\t// If cp is set, use it.  Otherwise, attempt to compress the response using\n\t// the incoming message compression method.\n\t//\n\t// NOTE: this needs to be ahead of all handling, https://github.com/grpc/grpc-go/issues/686.\n\tif s.opts.cp != nil {\n\t\tcp = s.opts.cp\n\t\tsendCompressorName = cp.Type()\n\t} else if rc := stream.RecvCompress(); rc != \"\" && rc != encoding.Identity {\n\t\t// Legacy compressor not specified; attempt to respond with same encoding.\n\t\tcomp = encoding.GetCompressor(rc)\n\t\tif comp != nil {\n\t\t\tsendCompressorName = comp.Name()\n\t\t}\n\t}\n\n\tif sendCompressorName != \"\" {\n\t\tif err := stream.SetSendCompress(sendCompressorName); err != nil {\n\t\t\treturn status.Errorf(codes.Internal, \"grpc: failed to set send compressor: %v\", err)\n\t\t}\n\t}\n\n\tvar payInfo *payloadInfo\n\tif sh != nil || len(binlogs) != 0 {\n\t\tpayInfo = &payloadInfo{}\n\t\tdefer payInfo.free()\n\t}\n\n\td, err := recvAndDecompress(&parser{r: stream, bufferPool: s.opts.bufferPool}, stream, dc, s.opts.maxReceiveMessageSize, payInfo, decomp, true)\n\tif err != nil {\n\t\tif e := stream.WriteStatus(status.Convert(err)); e != nil {\n\t\t\tchannelz.Warningf(logger, s.channelz, \"grpc: Server.processUnaryRPC failed to write status: %v\", e)\n\t\t}\n\t\treturn err\n\t}\n\tfreed := false\n\tdataFree := func() {\n\t\tif !freed {\n\t\t\td.Free()\n\t\t\tfreed = true\n\t\t}\n\t}\n\tdefer dataFree()\n\tdf := func(v any) error {\n\t\tdefer dataFree()\n\t\tif err := s.getCodec(stream.ContentSubtype()).Unmarshal(d, v); err != nil {\n\t\t\treturn status.Errorf(codes.Internal, \"grpc: error unmarshalling request: %v\", err)\n\t\t}\n\n\t\tif sh != nil {\n\t\t\tsh.HandleRPC(ctx, &stats.InPayload{\n\t\t\t\tRecvTime:         time.Now(),\n\t\t\t\tPayload:          v,\n\t\t\t\tLength:           d.Len(),\n\t\t\t\tWireLength:       payInfo.compressedLength + headerLen,\n\t\t\t\tCompressedLength: payInfo.compressedLength,\n\t\t\t})\n\t\t}\n\t\tif len(binlogs) != 0 {\n\t\t\tcm := &binarylog.ClientMessage{\n\t\t\t\tMessage: d.Materialize(),\n\t\t\t}\n\t\t\tfor _, binlog := range binlogs {\n\t\t\t\tbinlog.Log(ctx, cm)\n\t\t\t}\n\t\t}\n\t\tif trInfo != nil {\n\t\t\ttrInfo.tr.LazyLog(&payload{sent: false, msg: v}, true)\n\t\t}\n\t\treturn nil\n\t}\n\tctx = NewContextWithServerTransportStream(ctx, stream)\n\treply, appErr := md.Handler(info.serviceImpl, ctx, df, s.opts.unaryInt)\n\tif appErr != nil {\n\t\tappStatus, ok := status.FromError(appErr)\n\t\tif !ok {\n\t\t\t// Convert non-status application error to a status error with code\n\t\t\t// Unknown, but handle context errors specifically.\n\t\t\tappStatus = status.FromContextError(appErr)\n\t\t\tappErr = appStatus.Err()\n\t\t}\n\t\tif trInfo != nil {\n\t\t\ttrInfo.tr.LazyLog(stringer(appStatus.Message()), true)\n\t\t\ttrInfo.tr.SetError()\n\t\t}\n\t\tif e := stream.WriteStatus(appStatus); e != nil {\n\t\t\tchannelz.Warningf(logger, s.channelz, \"grpc: Server.processUnaryRPC failed to write status: %v\", e)\n\t\t}\n\t\tif len(binlogs) != 0 {\n\t\t\tif h, _ := stream.Header(); h.Len() > 0 {\n\t\t\t\t// Only log serverHeader if there was header. Otherwise it can\n\t\t\t\t// be trailer only.\n\t\t\t\tsh := &binarylog.ServerHeader{\n\t\t\t\t\tHeader: h,\n\t\t\t\t}\n\t\t\t\tfor _, binlog := range binlogs {\n\t\t\t\t\tbinlog.Log(ctx, sh)\n\t\t\t\t}\n\t\t\t}\n\t\t\tst := &binarylog.ServerTrailer{\n\t\t\t\tTrailer: stream.Trailer(),\n\t\t\t\tErr:     appErr,\n\t\t\t}\n\t\t\tfor _, binlog := range binlogs {\n\t\t\t\tbinlog.Log(ctx, st)\n\t\t\t}\n\t\t}\n\t\treturn appErr\n\t}\n\tif trInfo != nil {\n\t\ttrInfo.tr.LazyLog(stringer(\"OK\"), false)\n\t}\n\topts := &transport.WriteOptions{Last: true}\n\n\t// Server handler could have set new compressor by calling SetSendCompressor.\n\t// In case it is set, we need to use it for compressing outbound message.\n\tif stream.SendCompress() != sendCompressorName {\n\t\tcomp = encoding.GetCompressor(stream.SendCompress())\n\t}\n\tif err := s.sendResponse(ctx, stream, reply, cp, opts, comp); err != nil {\n\t\tif err == io.EOF {\n\t\t\t// The entire stream is done (for unary RPC only).\n\t\t\treturn err\n\t\t}\n\t\tif sts, ok := status.FromError(err); ok {\n\t\t\tif e := stream.WriteStatus(sts); e != nil {\n\t\t\t\tchannelz.Warningf(logger, s.channelz, \"grpc: Server.processUnaryRPC failed to write status: %v\", e)\n\t\t\t}\n\t\t} else {\n\t\t\tswitch st := err.(type) {\n\t\t\tcase transport.ConnectionError:\n\t\t\t\t// Nothing to do here.\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"grpc: Unexpected error (%T) from sendResponse: %v\", st, st))\n\t\t\t}\n\t\t}\n\t\tif len(binlogs) != 0 {\n\t\t\th, _ := stream.Header()\n\t\t\tsh := &binarylog.ServerHeader{\n\t\t\t\tHeader: h,\n\t\t\t}\n\t\t\tst := &binarylog.ServerTrailer{\n\t\t\t\tTrailer: stream.Trailer(),\n\t\t\t\tErr:     appErr,\n\t\t\t}\n\t\t\tfor _, binlog := range binlogs {\n\t\t\t\tbinlog.Log(ctx, sh)\n\t\t\t\tbinlog.Log(ctx, st)\n\t\t\t}\n\t\t}\n\t\treturn err\n\t}\n\tif len(binlogs) != 0 {\n\t\th, _ := stream.Header()\n\t\tsh := &binarylog.ServerHeader{\n\t\t\tHeader: h,\n\t\t}\n\t\tsm := &binarylog.ServerMessage{\n\t\t\tMessage: reply,\n\t\t}\n\t\tfor _, binlog := range binlogs {\n\t\t\tbinlog.Log(ctx, sh)\n\t\t\tbinlog.Log(ctx, sm)\n\t\t}\n\t}\n\tif trInfo != nil {\n\t\ttrInfo.tr.LazyLog(&payload{sent: true, msg: reply}, true)\n\t}\n\t// TODO: Should we be logging if writing status failed here, like above?\n\t// Should the logging be in WriteStatus?  Should we ignore the WriteStatus\n\t// error or allow the stats handler to see it?\n\tif len(binlogs) != 0 {\n\t\tst := &binarylog.ServerTrailer{\n\t\t\tTrailer: stream.Trailer(),\n\t\t\tErr:     appErr,\n\t\t}\n\t\tfor _, binlog := range binlogs {\n\t\t\tbinlog.Log(ctx, st)\n\t\t}\n\t}\n\treturn stream.WriteStatus(statusOK)\n}\n\n// chainStreamServerInterceptors chains all stream server interceptors into one.\nfunc chainStreamServerInterceptors(s *Server) {\n\t// Prepend opts.streamInt to the chaining interceptors if it exists, since streamInt will\n\t// be executed before any other chained interceptors.\n\tinterceptors := s.opts.chainStreamInts\n\tif s.opts.streamInt != nil {\n\t\tinterceptors = append([]StreamServerInterceptor{s.opts.streamInt}, s.opts.chainStreamInts...)\n\t}\n\n\tvar chainedInt StreamServerInterceptor\n\tif len(interceptors) == 0 {\n\t\tchainedInt = nil\n\t} else if len(interceptors) == 1 {\n\t\tchainedInt = interceptors[0]\n\t} else {\n\t\tchainedInt = chainStreamInterceptors(interceptors)\n\t}\n\n\ts.opts.streamInt = chainedInt\n}\n\nfunc chainStreamInterceptors(interceptors []StreamServerInterceptor) StreamServerInterceptor {\n\treturn func(srv any, ss ServerStream, info *StreamServerInfo, handler StreamHandler) error {\n\t\treturn interceptors[0](srv, ss, info, getChainStreamHandler(interceptors, 0, info, handler))\n\t}\n}\n\nfunc getChainStreamHandler(interceptors []StreamServerInterceptor, curr int, info *StreamServerInfo, finalHandler StreamHandler) StreamHandler {\n\tif curr == len(interceptors)-1 {\n\t\treturn finalHandler\n\t}\n\treturn func(srv any, stream ServerStream) error {\n\t\treturn interceptors[curr+1](srv, stream, info, getChainStreamHandler(interceptors, curr+1, info, finalHandler))\n\t}\n}\n\nfunc (s *Server) processStreamingRPC(ctx context.Context, stream *transport.ServerStream, info *serviceInfo, sd *StreamDesc, trInfo *traceInfo) (err error) {\n\tif channelz.IsOn() {\n\t\ts.incrCallsStarted()\n\t}\n\tsh := s.statsHandler\n\tvar statsBegin *stats.Begin\n\tif sh != nil {\n\t\tstatsBegin = &stats.Begin{\n\t\t\tBeginTime:      time.Now(),\n\t\t\tIsClientStream: sd.ClientStreams,\n\t\t\tIsServerStream: sd.ServerStreams,\n\t\t}\n\t\tsh.HandleRPC(ctx, statsBegin)\n\t}\n\tctx = NewContextWithServerTransportStream(ctx, stream)\n\tss := &serverStream{\n\t\tctx:                   ctx,\n\t\ts:                     stream,\n\t\tp:                     parser{r: stream, bufferPool: s.opts.bufferPool},\n\t\tcodec:                 s.getCodec(stream.ContentSubtype()),\n\t\tdesc:                  sd,\n\t\tmaxReceiveMessageSize: s.opts.maxReceiveMessageSize,\n\t\tmaxSendMessageSize:    s.opts.maxSendMessageSize,\n\t\ttrInfo:                trInfo,\n\t\tstatsHandler:          sh,\n\t}\n\n\tif sh != nil || trInfo != nil || channelz.IsOn() {\n\t\t// See comment in processUnaryRPC on defers.\n\t\tdefer func() {\n\t\t\tif trInfo != nil {\n\t\t\t\tss.mu.Lock()\n\t\t\t\tif err != nil && err != io.EOF {\n\t\t\t\t\tss.trInfo.tr.LazyLog(&fmtStringer{\"%v\", []any{err}}, true)\n\t\t\t\t\tss.trInfo.tr.SetError()\n\t\t\t\t}\n\t\t\t\tss.trInfo.tr.Finish()\n\t\t\t\tss.trInfo.tr = nil\n\t\t\t\tss.mu.Unlock()\n\t\t\t}\n\n\t\t\tif sh != nil {\n\t\t\t\tend := &stats.End{\n\t\t\t\t\tBeginTime: statsBegin.BeginTime,\n\t\t\t\t\tEndTime:   time.Now(),\n\t\t\t\t}\n\t\t\t\tif err != nil && err != io.EOF {\n\t\t\t\t\tend.Error = toRPCErr(err)\n\t\t\t\t}\n\t\t\t\tsh.HandleRPC(ctx, end)\n\t\t\t}\n\n\t\t\tif channelz.IsOn() {\n\t\t\t\tif err != nil && err != io.EOF {\n\t\t\t\t\ts.incrCallsFailed()\n\t\t\t\t} else {\n\t\t\t\t\ts.incrCallsSucceeded()\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n\n\tif ml := binarylog.GetMethodLogger(stream.Method()); ml != nil {\n\t\tss.binlogs = append(ss.binlogs, ml)\n\t}\n\tif s.opts.binaryLogger != nil {\n\t\tif ml := s.opts.binaryLogger.GetMethodLogger(stream.Method()); ml != nil {\n\t\t\tss.binlogs = append(ss.binlogs, ml)\n\t\t}\n\t}\n\tif len(ss.binlogs) != 0 {\n\t\tmd, _ := metadata.FromIncomingContext(ctx)\n\t\tlogEntry := &binarylog.ClientHeader{\n\t\t\tHeader:     md,\n\t\t\tMethodName: stream.Method(),\n\t\t\tPeerAddr:   nil,\n\t\t}\n\t\tif deadline, ok := ctx.Deadline(); ok {\n\t\t\tlogEntry.Timeout = time.Until(deadline)\n\t\t\tif logEntry.Timeout < 0 {\n\t\t\t\tlogEntry.Timeout = 0\n\t\t\t}\n\t\t}\n\t\tif a := md[\":authority\"]; len(a) > 0 {\n\t\t\tlogEntry.Authority = a[0]\n\t\t}\n\t\tif peer, ok := peer.FromContext(ss.Context()); ok {\n\t\t\tlogEntry.PeerAddr = peer.Addr\n\t\t}\n\t\tfor _, binlog := range ss.binlogs {\n\t\t\tbinlog.Log(ctx, logEntry)\n\t\t}\n\t}\n\n\t// If dc is set and matches the stream's compression, use it.  Otherwise, try\n\t// to find a matching registered compressor for decomp.\n\tif rc := stream.RecvCompress(); s.opts.dc != nil && s.opts.dc.Type() == rc {\n\t\tss.decompressorV0 = s.opts.dc\n\t} else if rc != \"\" && rc != encoding.Identity {\n\t\tss.decompressorV1 = encoding.GetCompressor(rc)\n\t\tif ss.decompressorV1 == nil {\n\t\t\tst := status.Newf(codes.Unimplemented, \"grpc: Decompressor is not installed for grpc-encoding %q\", rc)\n\t\t\tss.s.WriteStatus(st)\n\t\t\treturn st.Err()\n\t\t}\n\t}\n\n\t// If cp is set, use it.  Otherwise, attempt to compress the response using\n\t// the incoming message compression method.\n\t//\n\t// NOTE: this needs to be ahead of all handling, https://github.com/grpc/grpc-go/issues/686.\n\tif s.opts.cp != nil {\n\t\tss.compressorV0 = s.opts.cp\n\t\tss.sendCompressorName = s.opts.cp.Type()\n\t} else if rc := stream.RecvCompress(); rc != \"\" && rc != encoding.Identity {\n\t\t// Legacy compressor not specified; attempt to respond with same encoding.\n\t\tss.compressorV1 = encoding.GetCompressor(rc)\n\t\tif ss.compressorV1 != nil {\n\t\t\tss.sendCompressorName = rc\n\t\t}\n\t}\n\n\tif ss.sendCompressorName != \"\" {\n\t\tif err := stream.SetSendCompress(ss.sendCompressorName); err != nil {\n\t\t\treturn status.Errorf(codes.Internal, \"grpc: failed to set send compressor: %v\", err)\n\t\t}\n\t}\n\n\tss.ctx = newContextWithRPCInfo(ss.ctx, false, ss.codec, ss.compressorV0, ss.compressorV1)\n\n\tif trInfo != nil {\n\t\ttrInfo.tr.LazyLog(&trInfo.firstLine, false)\n\t}\n\tvar appErr error\n\tvar server any\n\tif info != nil {\n\t\tserver = info.serviceImpl\n\t}\n\tif s.opts.streamInt == nil {\n\t\tappErr = sd.Handler(server, ss)\n\t} else {\n\t\tinfo := &StreamServerInfo{\n\t\t\tFullMethod:     stream.Method(),\n\t\t\tIsClientStream: sd.ClientStreams,\n\t\t\tIsServerStream: sd.ServerStreams,\n\t\t}\n\t\tappErr = s.opts.streamInt(server, ss, info, sd.Handler)\n\t}\n\tif appErr != nil {\n\t\tappStatus, ok := status.FromError(appErr)\n\t\tif !ok {\n\t\t\t// Convert non-status application error to a status error with code\n\t\t\t// Unknown, but handle context errors specifically.\n\t\t\tappStatus = status.FromContextError(appErr)\n\t\t\tappErr = appStatus.Err()\n\t\t}\n\t\tif trInfo != nil {\n\t\t\tss.mu.Lock()\n\t\t\tss.trInfo.tr.LazyLog(stringer(appStatus.Message()), true)\n\t\t\tss.trInfo.tr.SetError()\n\t\t\tss.mu.Unlock()\n\t\t}\n\t\tif len(ss.binlogs) != 0 {\n\t\t\tst := &binarylog.ServerTrailer{\n\t\t\t\tTrailer: ss.s.Trailer(),\n\t\t\t\tErr:     appErr,\n\t\t\t}\n\t\t\tfor _, binlog := range ss.binlogs {\n\t\t\t\tbinlog.Log(ctx, st)\n\t\t\t}\n\t\t}\n\t\tss.s.WriteStatus(appStatus)\n\t\t// TODO: Should we log an error from WriteStatus here and below?\n\t\treturn appErr\n\t}\n\tif trInfo != nil {\n\t\tss.mu.Lock()\n\t\tss.trInfo.tr.LazyLog(stringer(\"OK\"), false)\n\t\tss.mu.Unlock()\n\t}\n\tif len(ss.binlogs) != 0 {\n\t\tst := &binarylog.ServerTrailer{\n\t\t\tTrailer: ss.s.Trailer(),\n\t\t\tErr:     appErr,\n\t\t}\n\t\tfor _, binlog := range ss.binlogs {\n\t\t\tbinlog.Log(ctx, st)\n\t\t}\n\t}\n\treturn ss.s.WriteStatus(statusOK)\n}\n\nfunc (s *Server) handleMalformedMethodName(stream *transport.ServerStream, ti *traceInfo) {\n\tif ti != nil {\n\t\tti.tr.LazyLog(&fmtStringer{\"Malformed method name %q\", []any{stream.Method()}}, true)\n\t\tti.tr.SetError()\n\t}\n\terrDesc := fmt.Sprintf(\"malformed method name: %q\", stream.Method())\n\tif err := stream.WriteStatus(status.New(codes.Unimplemented, errDesc)); err != nil {\n\t\tif ti != nil {\n\t\t\tti.tr.LazyLog(&fmtStringer{\"%v\", []any{err}}, true)\n\t\t\tti.tr.SetError()\n\t\t}\n\t\tchannelz.Warningf(logger, s.channelz, \"grpc: Server.handleStream failed to write status: %v\", err)\n\t}\n\tif ti != nil {\n\t\tti.tr.Finish()\n\t}\n}\n\nfunc (s *Server) handleStream(t transport.ServerTransport, stream *transport.ServerStream) {\n\tctx := stream.Context()\n\tctx = contextWithServer(ctx, s)\n\tvar ti *traceInfo\n\tif EnableTracing {\n\t\ttr := newTrace(\"grpc.Recv.\"+methodFamily(stream.Method()), stream.Method())\n\t\tctx = newTraceContext(ctx, tr)\n\t\tti = &traceInfo{\n\t\t\ttr: tr,\n\t\t\tfirstLine: firstLine{\n\t\t\t\tclient:     false,\n\t\t\t\tremoteAddr: t.Peer().Addr,\n\t\t\t},\n\t\t}\n\t\tif dl, ok := ctx.Deadline(); ok {\n\t\t\tti.firstLine.deadline = time.Until(dl)\n\t\t}\n\t}\n\n\tsm := stream.Method()\n\tif sm == \"\" {\n\t\ts.handleMalformedMethodName(stream, ti)\n\t\treturn\n\t}\n\tif sm[0] != '/' {\n\t\t// TODO(easwars): Add a link to the CVE in the below log messages once\n\t\t// published.\n\t\tif envconfig.DisableStrictPathChecking {\n\t\t\tif old := s.strictPathCheckingLogEmitted.Swap(true); !old {\n\t\t\t\tchannelz.Warningf(logger, s.channelz, \"grpc: Server.handleStream received malformed method name %q. Allowing it because the environment variable GRPC_GO_EXPERIMENTAL_DISABLE_STRICT_PATH_CHECKING is set to true, but this option will be removed in a future release.\", sm)\n\t\t\t}\n\t\t} else {\n\t\t\tif old := s.strictPathCheckingLogEmitted.Swap(true); !old {\n\t\t\t\tchannelz.Warningf(logger, s.channelz, \"grpc: Server.handleStream rejected malformed method name %q. To temporarily allow such requests, set the environment variable GRPC_GO_EXPERIMENTAL_DISABLE_STRICT_PATH_CHECKING to true. Note that this is not recommended as it may allow requests to bypass security policies.\", sm)\n\t\t\t}\n\t\t\ts.handleMalformedMethodName(stream, ti)\n\t\t\treturn\n\t\t}\n\t} else {\n\t\tsm = sm[1:]\n\t}\n\tpos := strings.LastIndex(sm, \"/\")\n\tif pos == -1 {\n\t\ts.handleMalformedMethodName(stream, ti)\n\t\treturn\n\t}\n\tservice := sm[:pos]\n\tmethod := sm[pos+1:]\n\n\t// FromIncomingContext is expensive: skip if there are no statsHandlers\n\tif s.statsHandler != nil {\n\t\tmd, _ := metadata.FromIncomingContext(ctx)\n\t\tctx = s.statsHandler.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: stream.Method()})\n\t\ts.statsHandler.HandleRPC(ctx, &stats.InHeader{\n\t\t\tFullMethod:  stream.Method(),\n\t\t\tRemoteAddr:  t.Peer().Addr,\n\t\t\tLocalAddr:   t.Peer().LocalAddr,\n\t\t\tCompression: stream.RecvCompress(),\n\t\t\tWireLength:  stream.HeaderWireLength(),\n\t\t\tHeader:      md,\n\t\t})\n\t}\n\t// To have calls in stream callouts work. Will delete once all stats handler\n\t// calls come from the gRPC layer.\n\tstream.SetContext(ctx)\n\n\tsrv, knownService := s.services[service]\n\tif knownService {\n\t\tif md, ok := srv.methods[method]; ok {\n\t\t\ts.processUnaryRPC(ctx, stream, srv, md, ti)\n\t\t\treturn\n\t\t}\n\t\tif sd, ok := srv.streams[method]; ok {\n\t\t\ts.processStreamingRPC(ctx, stream, srv, sd, ti)\n\t\t\treturn\n\t\t}\n\t}\n\t// Unknown service, or known server unknown method.\n\tif unknownDesc := s.opts.unknownStreamDesc; unknownDesc != nil {\n\t\ts.processStreamingRPC(ctx, stream, nil, unknownDesc, ti)\n\t\treturn\n\t}\n\tvar errDesc string\n\tif !knownService {\n\t\terrDesc = fmt.Sprintf(\"unknown service %v\", service)\n\t} else {\n\t\terrDesc = fmt.Sprintf(\"unknown method %v for service %v\", method, service)\n\t}\n\tif ti != nil {\n\t\tti.tr.LazyPrintf(\"%s\", errDesc)\n\t\tti.tr.SetError()\n\t}\n\tif err := stream.WriteStatus(status.New(codes.Unimplemented, errDesc)); err != nil {\n\t\tif ti != nil {\n\t\t\tti.tr.LazyLog(&fmtStringer{\"%v\", []any{err}}, true)\n\t\t\tti.tr.SetError()\n\t\t}\n\t\tchannelz.Warningf(logger, s.channelz, \"grpc: Server.handleStream failed to write status: %v\", err)\n\t}\n\tif ti != nil {\n\t\tti.tr.Finish()\n\t}\n}\n\n// The key to save ServerTransportStream in the context.\ntype streamKey struct{}\n\n// NewContextWithServerTransportStream creates a new context from ctx and\n// attaches stream to it.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc NewContextWithServerTransportStream(ctx context.Context, stream ServerTransportStream) context.Context {\n\treturn context.WithValue(ctx, streamKey{}, stream)\n}\n\n// ServerTransportStream is a minimal interface that a transport stream must\n// implement. This can be used to mock an actual transport stream for tests of\n// handler code that use, for example, grpc.SetHeader (which requires some\n// stream to be in context).\n//\n// See also NewContextWithServerTransportStream.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype ServerTransportStream interface {\n\tMethod() string\n\tSetHeader(md metadata.MD) error\n\tSendHeader(md metadata.MD) error\n\tSetTrailer(md metadata.MD) error\n}\n\n// ServerTransportStreamFromContext returns the ServerTransportStream saved in\n// ctx. Returns nil if the given context has no stream associated with it\n// (which implies it is not an RPC invocation context).\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc ServerTransportStreamFromContext(ctx context.Context) ServerTransportStream {\n\ts, _ := ctx.Value(streamKey{}).(ServerTransportStream)\n\treturn s\n}\n\n// Stop stops the gRPC server. It immediately closes all open\n// connections and listeners.\n// It cancels all active RPCs on the server side and the corresponding\n// pending RPCs on the client side will get notified by connection\n// errors.\nfunc (s *Server) Stop() {\n\ts.stop(false)\n}\n\n// GracefulStop stops the gRPC server gracefully. It stops the server from\n// accepting new connections and RPCs and blocks until all the pending RPCs are\n// finished.\nfunc (s *Server) GracefulStop() {\n\ts.stop(true)\n}\n\nfunc (s *Server) stop(graceful bool) {\n\ts.quit.Fire()\n\tdefer s.done.Fire()\n\n\ts.channelzRemoveOnce.Do(func() { channelz.RemoveEntry(s.channelz.ID) })\n\ts.mu.Lock()\n\ts.closeListenersLocked()\n\t// Wait for serving threads to be ready to exit.  Only then can we be sure no\n\t// new conns will be created.\n\ts.mu.Unlock()\n\ts.serveWG.Wait()\n\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\tif graceful {\n\t\ts.drainAllServerTransportsLocked()\n\t} else {\n\t\ts.closeServerTransportsLocked()\n\t}\n\n\tfor len(s.conns) != 0 {\n\t\ts.cv.Wait()\n\t}\n\ts.conns = nil\n\n\tif s.opts.numServerWorkers > 0 {\n\t\t// Closing the channel (only once, via sync.OnceFunc) after all the\n\t\t// connections have been closed above ensures that there are no\n\t\t// goroutines executing the callback passed to st.HandleStreams (where\n\t\t// the channel is written to).\n\t\ts.serverWorkerChannelClose()\n\t}\n\n\tif graceful || s.opts.waitForHandlers {\n\t\ts.handlersWG.Wait()\n\t}\n\n\tif s.events != nil {\n\t\ts.events.Finish()\n\t\ts.events = nil\n\t}\n}\n\n// s.mu must be held by the caller.\nfunc (s *Server) closeServerTransportsLocked() {\n\tfor _, conns := range s.conns {\n\t\tfor st := range conns {\n\t\t\tst.Close(errors.New(\"Server.Stop called\"))\n\t\t}\n\t}\n}\n\n// s.mu must be held by the caller.\nfunc (s *Server) drainAllServerTransportsLocked() {\n\tif !s.drain {\n\t\tfor _, conns := range s.conns {\n\t\t\tfor st := range conns {\n\t\t\t\tst.Drain(\"graceful_stop\")\n\t\t\t}\n\t\t}\n\t\ts.drain = true\n\t}\n}\n\n// s.mu must be held by the caller.\nfunc (s *Server) closeListenersLocked() {\n\tfor lis := range s.lis {\n\t\tlis.Close()\n\t}\n\ts.lis = nil\n}\n\n// contentSubtype must be lowercase\n// cannot return nil\nfunc (s *Server) getCodec(contentSubtype string) baseCodec {\n\tif s.opts.codec != nil {\n\t\treturn s.opts.codec\n\t}\n\tif contentSubtype == \"\" {\n\t\treturn getCodec(proto.Name)\n\t}\n\tcodec := getCodec(contentSubtype)\n\tif codec == nil {\n\t\tlogger.Warningf(\"Unsupported codec %q. Defaulting to %q for now. This will start to fail in future releases.\", contentSubtype, proto.Name)\n\t\treturn getCodec(proto.Name)\n\t}\n\treturn codec\n}\n\ntype serverKey struct{}\n\n// serverFromContext gets the Server from the context.\nfunc serverFromContext(ctx context.Context) *Server {\n\ts, _ := ctx.Value(serverKey{}).(*Server)\n\treturn s\n}\n\n// contextWithServer sets the Server in the context.\nfunc contextWithServer(ctx context.Context, server *Server) context.Context {\n\treturn context.WithValue(ctx, serverKey{}, server)\n}\n\n// isRegisteredMethod returns whether the passed in method is registered as a\n// method on the server. /service/method and service/method will match if the\n// service and method are registered on the server.\nfunc (s *Server) isRegisteredMethod(serviceMethod string) bool {\n\tif serviceMethod != \"\" && serviceMethod[0] == '/' {\n\t\tserviceMethod = serviceMethod[1:]\n\t}\n\tpos := strings.LastIndex(serviceMethod, \"/\")\n\tif pos == -1 { // Invalid method name syntax.\n\t\treturn false\n\t}\n\tservice := serviceMethod[:pos]\n\tmethod := serviceMethod[pos+1:]\n\tsrv, knownService := s.services[service]\n\tif knownService {\n\t\tif _, ok := srv.methods[method]; ok {\n\t\t\treturn true\n\t\t}\n\t\tif _, ok := srv.streams[method]; ok {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// SetHeader sets the header metadata to be sent from the server to the client.\n// The context provided must be the context passed to the server's handler.\n//\n// Streaming RPCs should prefer the SetHeader method of the ServerStream.\n//\n// When called multiple times, all the provided metadata will be merged.  All\n// the metadata will be sent out when one of the following happens:\n//\n//   - grpc.SendHeader is called, or for streaming handlers, stream.SendHeader.\n//   - The first response message is sent.  For unary handlers, this occurs when\n//     the handler returns; for streaming handlers, this can happen when stream's\n//     SendMsg method is called.\n//   - An RPC status is sent out (error or success).  This occurs when the handler\n//     returns.\n//\n// SetHeader will fail if called after any of the events above.\n//\n// The error returned is compatible with the status package.  However, the\n// status code will often not match the RPC status as seen by the client\n// application, and therefore, should not be relied upon for this purpose.\nfunc SetHeader(ctx context.Context, md metadata.MD) error {\n\tif md.Len() == 0 {\n\t\treturn nil\n\t}\n\tstream := ServerTransportStreamFromContext(ctx)\n\tif stream == nil {\n\t\treturn status.Errorf(codes.Internal, \"grpc: failed to fetch the stream from the context %v\", ctx)\n\t}\n\treturn stream.SetHeader(md)\n}\n\n// SendHeader sends header metadata. It may be called at most once, and may not\n// be called after any event that causes headers to be sent (see SetHeader for\n// a complete list).  The provided md and headers set by SetHeader() will be\n// sent.\n//\n// The error returned is compatible with the status package.  However, the\n// status code will often not match the RPC status as seen by the client\n// application, and therefore, should not be relied upon for this purpose.\nfunc SendHeader(ctx context.Context, md metadata.MD) error {\n\tstream := ServerTransportStreamFromContext(ctx)\n\tif stream == nil {\n\t\treturn status.Errorf(codes.Internal, \"grpc: failed to fetch the stream from the context %v\", ctx)\n\t}\n\tif err := stream.SendHeader(md); err != nil {\n\t\treturn toRPCErr(err)\n\t}\n\treturn nil\n}\n\n// SetSendCompressor sets a compressor for outbound messages from the server.\n// It must not be called after any event that causes headers to be sent\n// (see ServerStream.SetHeader for the complete list). Provided compressor is\n// used when below conditions are met:\n//\n//   - compressor is registered via encoding.RegisterCompressor\n//   - compressor name must exist in the client advertised compressor names\n//     sent in grpc-accept-encoding header. Use ClientSupportedCompressors to\n//     get client supported compressor names.\n//\n// The context provided must be the context passed to the server's handler.\n// It must be noted that compressor name encoding.Identity disables the\n// outbound compression.\n// By default, server messages will be sent using the same compressor with\n// which request messages were sent.\n//\n// It is not safe to call SetSendCompressor concurrently with SendHeader and\n// SendMsg.\n//\n// # Experimental\n//\n// Notice: This function is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc SetSendCompressor(ctx context.Context, name string) error {\n\tstream, ok := ServerTransportStreamFromContext(ctx).(*transport.ServerStream)\n\tif !ok || stream == nil {\n\t\treturn fmt.Errorf(\"failed to fetch the stream from the given context\")\n\t}\n\n\tif err := validateSendCompressor(name, stream.ClientAdvertisedCompressors()); err != nil {\n\t\treturn fmt.Errorf(\"unable to set send compressor: %w\", err)\n\t}\n\n\treturn stream.SetSendCompress(name)\n}\n\n// ClientSupportedCompressors returns compressor names advertised by the client\n// via grpc-accept-encoding header.\n//\n// The context provided must be the context passed to the server's handler.\n//\n// # Experimental\n//\n// Notice: This function is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc ClientSupportedCompressors(ctx context.Context) ([]string, error) {\n\tstream, ok := ServerTransportStreamFromContext(ctx).(*transport.ServerStream)\n\tif !ok || stream == nil {\n\t\treturn nil, fmt.Errorf(\"failed to fetch the stream from the given context %v\", ctx)\n\t}\n\n\treturn stream.ClientAdvertisedCompressors(), nil\n}\n\n// SetTrailer sets the trailer metadata that will be sent when an RPC returns.\n// When called more than once, all the provided metadata will be merged.\n//\n// The error returned is compatible with the status package.  However, the\n// status code will often not match the RPC status as seen by the client\n// application, and therefore, should not be relied upon for this purpose.\nfunc SetTrailer(ctx context.Context, md metadata.MD) error {\n\tif md.Len() == 0 {\n\t\treturn nil\n\t}\n\tstream := ServerTransportStreamFromContext(ctx)\n\tif stream == nil {\n\t\treturn status.Errorf(codes.Internal, \"grpc: failed to fetch the stream from the context %v\", ctx)\n\t}\n\treturn stream.SetTrailer(md)\n}\n\n// Method returns the method string for the server context.  The returned\n// string is in the format of \"/service/method\".\nfunc Method(ctx context.Context) (string, bool) {\n\ts := ServerTransportStreamFromContext(ctx)\n\tif s == nil {\n\t\treturn \"\", false\n\t}\n\treturn s.Method(), true\n}\n\n// validateSendCompressor returns an error when given compressor name cannot be\n// handled by the server or the client based on the advertised compressors.\nfunc validateSendCompressor(name string, clientCompressors []string) error {\n\tif name == encoding.Identity {\n\t\treturn nil\n\t}\n\n\tif !grpcutil.IsCompressorNameRegistered(name) {\n\t\treturn fmt.Errorf(\"compressor not registered %q\", name)\n\t}\n\n\tfor _, c := range clientCompressors {\n\t\tif c == name {\n\t\t\treturn nil // found match\n\t\t}\n\t}\n\treturn fmt.Errorf(\"client does not support compressor %q\", name)\n}\n\n// atomicSemaphore implements a blocking, counting semaphore. acquire should be\n// called synchronously; release may be called asynchronously.\ntype atomicSemaphore struct {\n\tn    atomic.Int64\n\twait chan struct{}\n}\n\nfunc (q *atomicSemaphore) acquire() {\n\tif q.n.Add(-1) < 0 {\n\t\t// We ran out of quota.  Block until a release happens.\n\t\t<-q.wait\n\t}\n}\n\nfunc (q *atomicSemaphore) release() {\n\t// N.B. the \"<= 0\" check below should allow for this to work with multiple\n\t// concurrent calls to acquire, but also note that with synchronous calls to\n\t// acquire, as our system does, n will never be less than -1.  There are\n\t// fairness issues (queuing) to consider if this was to be generalized.\n\tif q.n.Add(1) <= 0 {\n\t\t// An acquire was waiting on us.  Unblock it.\n\t\tq.wait <- struct{}{}\n\t}\n}\n\nfunc newHandlerQuota(n uint32) *atomicSemaphore {\n\ta := &atomicSemaphore{wait: make(chan struct{}, 1)}\n\ta.n.Store(int64(n))\n\treturn a\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/service_config.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/balancer/pickfirst\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/internal/balancer/gracefulswitch\"\n\tinternalserviceconfig \"google.golang.org/grpc/internal/serviceconfig\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nconst maxInt = int(^uint(0) >> 1)\n\n// MethodConfig defines the configuration recommended by the service providers for a\n// particular method.\n//\n// Deprecated: Users should not use this struct. Service config should be received\n// through name resolver, as specified here\n// https://github.com/grpc/grpc/blob/master/doc/service_config.md\ntype MethodConfig = internalserviceconfig.MethodConfig\n\n// ServiceConfig is provided by the service provider and contains parameters for how\n// clients that connect to the service should behave.\n//\n// Deprecated: Users should not use this struct. Service config should be received\n// through name resolver, as specified here\n// https://github.com/grpc/grpc/blob/master/doc/service_config.md\ntype ServiceConfig struct {\n\tserviceconfig.Config\n\n\t// lbConfig is the service config's load balancing configuration.  If\n\t// lbConfig and LB are both present, lbConfig will be used.\n\tlbConfig serviceconfig.LoadBalancingConfig\n\n\t// Methods contains a map for the methods in this service.  If there is an\n\t// exact match for a method (i.e. /service/method) in the map, use the\n\t// corresponding MethodConfig.  If there's no exact match, look for the\n\t// default config for the service (/service/) and use the corresponding\n\t// MethodConfig if it exists.  Otherwise, the method has no MethodConfig to\n\t// use.\n\tMethods map[string]MethodConfig\n\n\t// If a retryThrottlingPolicy is provided, gRPC will automatically throttle\n\t// retry attempts and hedged RPCs when the client’s ratio of failures to\n\t// successes exceeds a threshold.\n\t//\n\t// For each server name, the gRPC client will maintain a token_count which is\n\t// initially set to maxTokens, and can take values between 0 and maxTokens.\n\t//\n\t// Every outgoing RPC (regardless of service or method invoked) will change\n\t// token_count as follows:\n\t//\n\t//   - Every failed RPC will decrement the token_count by 1.\n\t//   - Every successful RPC will increment the token_count by tokenRatio.\n\t//\n\t// If token_count is less than or equal to maxTokens / 2, then RPCs will not\n\t// be retried and hedged RPCs will not be sent.\n\tretryThrottling *retryThrottlingPolicy\n\t// healthCheckConfig must be set as one of the requirement to enable LB channel\n\t// health check.\n\thealthCheckConfig *healthCheckConfig\n\t// rawJSONString stores service config json string that get parsed into\n\t// this service config struct.\n\trawJSONString string\n}\n\n// healthCheckConfig defines the go-native version of the LB channel health check config.\ntype healthCheckConfig struct {\n\t// serviceName is the service name to use in the health-checking request.\n\tServiceName string\n}\n\ntype jsonRetryPolicy struct {\n\tMaxAttempts          int\n\tInitialBackoff       internalserviceconfig.Duration\n\tMaxBackoff           internalserviceconfig.Duration\n\tBackoffMultiplier    float64\n\tRetryableStatusCodes []codes.Code\n}\n\n// retryThrottlingPolicy defines the go-native version of the retry throttling\n// policy defined by the service config here:\n// https://github.com/grpc/proposal/blob/master/A6-client-retries.md#integration-with-service-config\ntype retryThrottlingPolicy struct {\n\t// The number of tokens starts at maxTokens. The token_count will always be\n\t// between 0 and maxTokens.\n\t//\n\t// This field is required and must be greater than zero.\n\tMaxTokens float64\n\t// The amount of tokens to add on each successful RPC. Typically this will\n\t// be some number between 0 and 1, e.g., 0.1.\n\t//\n\t// This field is required and must be greater than zero. Up to 3 decimal\n\t// places are supported.\n\tTokenRatio float64\n}\n\ntype jsonName struct {\n\tService string\n\tMethod  string\n}\n\nvar (\n\terrDuplicatedName             = errors.New(\"duplicated name\")\n\terrEmptyServiceNonEmptyMethod = errors.New(\"cannot combine empty 'service' and non-empty 'method'\")\n)\n\nfunc (j jsonName) generatePath() (string, error) {\n\tif j.Service == \"\" {\n\t\tif j.Method != \"\" {\n\t\t\treturn \"\", errEmptyServiceNonEmptyMethod\n\t\t}\n\t\treturn \"\", nil\n\t}\n\tres := \"/\" + j.Service + \"/\"\n\tif j.Method != \"\" {\n\t\tres += j.Method\n\t}\n\treturn res, nil\n}\n\n// TODO(lyuxuan): delete this struct after cleaning up old service config implementation.\ntype jsonMC struct {\n\tName                    *[]jsonName\n\tWaitForReady            *bool\n\tTimeout                 *internalserviceconfig.Duration\n\tMaxRequestMessageBytes  *int64\n\tMaxResponseMessageBytes *int64\n\tRetryPolicy             *jsonRetryPolicy\n}\n\n// TODO(lyuxuan): delete this struct after cleaning up old service config implementation.\ntype jsonSC struct {\n\tLoadBalancingPolicy *string\n\tLoadBalancingConfig *json.RawMessage\n\tMethodConfig        *[]jsonMC\n\tRetryThrottling     *retryThrottlingPolicy\n\tHealthCheckConfig   *healthCheckConfig\n}\n\nfunc init() {\n\tinternal.ParseServiceConfig = func(js string) *serviceconfig.ParseResult {\n\t\treturn parseServiceConfig(js, defaultMaxCallAttempts)\n\t}\n}\n\nfunc parseServiceConfig(js string, maxAttempts int) *serviceconfig.ParseResult {\n\tif len(js) == 0 {\n\t\treturn &serviceconfig.ParseResult{Err: fmt.Errorf(\"no JSON service config provided\")}\n\t}\n\tvar rsc jsonSC\n\terr := json.Unmarshal([]byte(js), &rsc)\n\tif err != nil {\n\t\tlogger.Warningf(\"grpc: unmarshalling service config %s: %v\", js, err)\n\t\treturn &serviceconfig.ParseResult{Err: err}\n\t}\n\tsc := ServiceConfig{\n\t\tMethods:           make(map[string]MethodConfig),\n\t\tretryThrottling:   rsc.RetryThrottling,\n\t\thealthCheckConfig: rsc.HealthCheckConfig,\n\t\trawJSONString:     js,\n\t}\n\tc := rsc.LoadBalancingConfig\n\tif c == nil {\n\t\tname := pickfirst.Name\n\t\tif rsc.LoadBalancingPolicy != nil {\n\t\t\tname = *rsc.LoadBalancingPolicy\n\t\t}\n\t\tif balancer.Get(name) == nil {\n\t\t\tname = pickfirst.Name\n\t\t}\n\t\tcfg := []map[string]any{{name: struct{}{}}}\n\t\tstrCfg, err := json.Marshal(cfg)\n\t\tif err != nil {\n\t\t\treturn &serviceconfig.ParseResult{Err: fmt.Errorf(\"unexpected error marshaling simple LB config: %w\", err)}\n\t\t}\n\t\tr := json.RawMessage(strCfg)\n\t\tc = &r\n\t}\n\tcfg, err := gracefulswitch.ParseConfig(*c)\n\tif err != nil {\n\t\treturn &serviceconfig.ParseResult{Err: err}\n\t}\n\tsc.lbConfig = cfg\n\n\tif rsc.MethodConfig == nil {\n\t\treturn &serviceconfig.ParseResult{Config: &sc}\n\t}\n\n\tpaths := map[string]struct{}{}\n\tfor _, m := range *rsc.MethodConfig {\n\t\tif m.Name == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tmc := MethodConfig{\n\t\t\tWaitForReady: m.WaitForReady,\n\t\t\tTimeout:      (*time.Duration)(m.Timeout),\n\t\t}\n\t\tif mc.RetryPolicy, err = convertRetryPolicy(m.RetryPolicy, maxAttempts); err != nil {\n\t\t\tlogger.Warningf(\"grpc: unmarshalling service config %s: %v\", js, err)\n\t\t\treturn &serviceconfig.ParseResult{Err: err}\n\t\t}\n\t\tif m.MaxRequestMessageBytes != nil {\n\t\t\tif *m.MaxRequestMessageBytes > int64(maxInt) {\n\t\t\t\tmc.MaxReqSize = newInt(maxInt)\n\t\t\t} else {\n\t\t\t\tmc.MaxReqSize = newInt(int(*m.MaxRequestMessageBytes))\n\t\t\t}\n\t\t}\n\t\tif m.MaxResponseMessageBytes != nil {\n\t\t\tif *m.MaxResponseMessageBytes > int64(maxInt) {\n\t\t\t\tmc.MaxRespSize = newInt(maxInt)\n\t\t\t} else {\n\t\t\t\tmc.MaxRespSize = newInt(int(*m.MaxResponseMessageBytes))\n\t\t\t}\n\t\t}\n\t\tfor i, n := range *m.Name {\n\t\t\tpath, err := n.generatePath()\n\t\t\tif err != nil {\n\t\t\t\tlogger.Warningf(\"grpc: error unmarshalling service config %s due to methodConfig[%d]: %v\", js, i, err)\n\t\t\t\treturn &serviceconfig.ParseResult{Err: err}\n\t\t\t}\n\n\t\t\tif _, ok := paths[path]; ok {\n\t\t\t\terr = errDuplicatedName\n\t\t\t\tlogger.Warningf(\"grpc: error unmarshalling service config %s due to methodConfig[%d]: %v\", js, i, err)\n\t\t\t\treturn &serviceconfig.ParseResult{Err: err}\n\t\t\t}\n\t\t\tpaths[path] = struct{}{}\n\t\t\tsc.Methods[path] = mc\n\t\t}\n\t}\n\n\tif sc.retryThrottling != nil {\n\t\tif mt := sc.retryThrottling.MaxTokens; mt <= 0 || mt > 1000 {\n\t\t\treturn &serviceconfig.ParseResult{Err: fmt.Errorf(\"invalid retry throttling config: maxTokens (%v) out of range (0, 1000]\", mt)}\n\t\t}\n\t\tif tr := sc.retryThrottling.TokenRatio; tr <= 0 {\n\t\t\treturn &serviceconfig.ParseResult{Err: fmt.Errorf(\"invalid retry throttling config: tokenRatio (%v) may not be negative\", tr)}\n\t\t}\n\t}\n\treturn &serviceconfig.ParseResult{Config: &sc}\n}\n\nfunc isValidRetryPolicy(jrp *jsonRetryPolicy) bool {\n\treturn jrp.MaxAttempts > 1 &&\n\t\tjrp.InitialBackoff > 0 &&\n\t\tjrp.MaxBackoff > 0 &&\n\t\tjrp.BackoffMultiplier > 0 &&\n\t\tlen(jrp.RetryableStatusCodes) > 0\n}\n\nfunc convertRetryPolicy(jrp *jsonRetryPolicy, maxAttempts int) (p *internalserviceconfig.RetryPolicy, err error) {\n\tif jrp == nil {\n\t\treturn nil, nil\n\t}\n\n\tif !isValidRetryPolicy(jrp) {\n\t\treturn nil, fmt.Errorf(\"invalid retry policy (%+v): \", jrp)\n\t}\n\n\tif jrp.MaxAttempts < maxAttempts {\n\t\tmaxAttempts = jrp.MaxAttempts\n\t}\n\trp := &internalserviceconfig.RetryPolicy{\n\t\tMaxAttempts:          maxAttempts,\n\t\tInitialBackoff:       time.Duration(jrp.InitialBackoff),\n\t\tMaxBackoff:           time.Duration(jrp.MaxBackoff),\n\t\tBackoffMultiplier:    jrp.BackoffMultiplier,\n\t\tRetryableStatusCodes: make(map[codes.Code]bool),\n\t}\n\tfor _, code := range jrp.RetryableStatusCodes {\n\t\trp.RetryableStatusCodes[code] = true\n\t}\n\treturn rp, nil\n}\n\nfunc minPointers(a, b *int) *int {\n\tif *a < *b {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc getMaxSize(mcMax, doptMax *int, defaultVal int) *int {\n\tif mcMax == nil && doptMax == nil {\n\t\treturn &defaultVal\n\t}\n\tif mcMax != nil && doptMax != nil {\n\t\treturn minPointers(mcMax, doptMax)\n\t}\n\tif mcMax != nil {\n\t\treturn mcMax\n\t}\n\treturn doptMax\n}\n\nfunc newInt(b int) *int {\n\treturn &b\n}\n\nfunc init() {\n\tinternal.EqualServiceConfigForTesting = equalServiceConfig\n}\n\n// equalServiceConfig compares two configs. The rawJSONString field is ignored,\n// because they may diff in white spaces.\n//\n// If any of them is NOT *ServiceConfig, return false.\nfunc equalServiceConfig(a, b serviceconfig.Config) bool {\n\tif a == nil && b == nil {\n\t\treturn true\n\t}\n\taa, ok := a.(*ServiceConfig)\n\tif !ok {\n\t\treturn false\n\t}\n\tbb, ok := b.(*ServiceConfig)\n\tif !ok {\n\t\treturn false\n\t}\n\taaRaw := aa.rawJSONString\n\taa.rawJSONString = \"\"\n\tbbRaw := bb.rawJSONString\n\tbb.rawJSONString = \"\"\n\tdefer func() {\n\t\taa.rawJSONString = aaRaw\n\t\tbb.rawJSONString = bbRaw\n\t}()\n\t// Using reflect.DeepEqual instead of cmp.Equal because many balancer\n\t// configs are unexported, and cmp.Equal cannot compare unexported fields\n\t// from unexported structs.\n\treturn reflect.DeepEqual(aa, bb)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/serviceconfig/serviceconfig.go",
    "content": "/*\n *\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package serviceconfig defines types and methods for operating on gRPC\n// service configs.\n//\n// # Experimental\n//\n// Notice: This package is EXPERIMENTAL and may be changed or removed in a\n// later release.\npackage serviceconfig\n\n// Config represents an opaque data structure holding a service config.\ntype Config interface {\n\tisServiceConfig()\n}\n\n// LoadBalancingConfig represents an opaque data structure holding a load\n// balancing config.\ntype LoadBalancingConfig interface {\n\tisLoadBalancingConfig()\n}\n\n// ParseResult contains a service config or an error.  Exactly one must be\n// non-nil.\ntype ParseResult struct {\n\tConfig Config\n\tErr    error\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/stats/handlers.go",
    "content": "/*\n *\n * Copyright 2016 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage stats\n\nimport (\n\t\"context\"\n\t\"net\"\n)\n\n// ConnTagInfo defines the relevant information needed by connection context tagger.\ntype ConnTagInfo struct {\n\t// RemoteAddr is the remote address of the corresponding connection.\n\tRemoteAddr net.Addr\n\t// LocalAddr is the local address of the corresponding connection.\n\tLocalAddr net.Addr\n}\n\n// RPCTagInfo defines the relevant information needed by RPC context tagger.\ntype RPCTagInfo struct {\n\t// FullMethodName is the RPC method in the format of /package.service/method.\n\tFullMethodName string\n\t// FailFast indicates if this RPC is failfast.\n\t// This field is only valid on client side, it's always false on server side.\n\tFailFast bool\n\t// NameResolutionDelay indicates if the RPC needed to wait for the\n\t// initial name resolver update before it could begin. This should only\n\t// happen if the channel is IDLE when the RPC is started.  Note that\n\t// all retry or hedging attempts for an RPC that experienced a delay\n\t// will have it set.\n\t//\n\t// This field is only valid on the client side; it is always false on\n\t// the server side.\n\tNameResolutionDelay bool\n}\n\n// Handler defines the interface for the related stats handling (e.g., RPCs, connections).\ntype Handler interface {\n\t// TagRPC can attach some information to the given context.\n\t// The context used for the rest lifetime of the RPC will be derived from\n\t// the returned context.\n\tTagRPC(context.Context, *RPCTagInfo) context.Context\n\t// HandleRPC processes the RPC stats.\n\tHandleRPC(context.Context, RPCStats)\n\n\t// TagConn can attach some information to the given context.\n\t// The returned context will be used for stats handling.\n\t// For conn stats handling, the context used in HandleConn for this\n\t// connection will be derived from the context returned.\n\t// For RPC stats handling,\n\t//  - On server side, the context used in HandleRPC for all RPCs on this\n\t// connection will be derived from the context returned.\n\t//  - On client side, the context is not derived from the context returned.\n\tTagConn(context.Context, *ConnTagInfo) context.Context\n\t// HandleConn processes the Conn stats.\n\tHandleConn(context.Context, ConnStats)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/stats/metrics.go",
    "content": "/*\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage stats\n\nimport \"maps\"\n\n// MetricSet is a set of metrics to record. Once created, MetricSet is immutable,\n// however Add and Remove can make copies with specific metrics added or\n// removed, respectively.\n//\n// Do not construct directly; use NewMetricSet instead.\ntype MetricSet struct {\n\t// metrics are the set of metrics to initialize.\n\tmetrics map[string]bool\n}\n\n// NewMetricSet returns a MetricSet containing metricNames.\nfunc NewMetricSet(metricNames ...string) *MetricSet {\n\tnewMetrics := make(map[string]bool)\n\tfor _, metric := range metricNames {\n\t\tnewMetrics[metric] = true\n\t}\n\treturn &MetricSet{metrics: newMetrics}\n}\n\n// Metrics returns the metrics set. The returned map is read-only and must not\n// be modified.\nfunc (m *MetricSet) Metrics() map[string]bool {\n\treturn m.metrics\n}\n\n// Add adds the metricNames to the metrics set and returns a new copy with the\n// additional metrics.\nfunc (m *MetricSet) Add(metricNames ...string) *MetricSet {\n\tnewMetrics := make(map[string]bool)\n\tfor metric := range m.metrics {\n\t\tnewMetrics[metric] = true\n\t}\n\n\tfor _, metric := range metricNames {\n\t\tnewMetrics[metric] = true\n\t}\n\treturn &MetricSet{metrics: newMetrics}\n}\n\n// Join joins the metrics passed in with the metrics set, and returns a new copy\n// with the merged metrics.\nfunc (m *MetricSet) Join(metrics *MetricSet) *MetricSet {\n\tnewMetrics := make(map[string]bool)\n\tmaps.Copy(newMetrics, m.metrics)\n\tmaps.Copy(newMetrics, metrics.metrics)\n\treturn &MetricSet{metrics: newMetrics}\n}\n\n// Remove removes the metricNames from the metrics set and returns a new copy\n// with the metrics removed.\nfunc (m *MetricSet) Remove(metricNames ...string) *MetricSet {\n\tnewMetrics := make(map[string]bool)\n\tfor metric := range m.metrics {\n\t\tnewMetrics[metric] = true\n\t}\n\n\tfor _, metric := range metricNames {\n\t\tdelete(newMetrics, metric)\n\t}\n\treturn &MetricSet{metrics: newMetrics}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/stats/stats.go",
    "content": "/*\n *\n * Copyright 2016 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package stats is for collecting and reporting various network and RPC stats.\n// This package is for monitoring purpose only. All fields are read-only.\n// All APIs are experimental.\npackage stats // import \"google.golang.org/grpc/stats\"\n\nimport (\n\t\"context\"\n\t\"net\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/metadata\"\n)\n\n// RPCStats contains stats information about RPCs.\ntype RPCStats interface {\n\tisRPCStats()\n\t// IsClient returns true if this RPCStats is from client side.\n\tIsClient() bool\n}\n\n// Begin contains stats for the start of an RPC attempt.\n//\n//   - Server-side: Triggered after `InHeader`, as headers are processed\n//     before the RPC lifecycle begins.\n//   - Client-side: The first stats event recorded.\n//\n// FailFast is only valid if this Begin is from client side.\ntype Begin struct {\n\t// Client is true if this Begin is from client side.\n\tClient bool\n\t// BeginTime is the time when the RPC attempt begins.\n\tBeginTime time.Time\n\t// FailFast indicates if this RPC is failfast.\n\tFailFast bool\n\t// IsClientStream indicates whether the RPC is a client streaming RPC.\n\tIsClientStream bool\n\t// IsServerStream indicates whether the RPC is a server streaming RPC.\n\tIsServerStream bool\n\t// IsTransparentRetryAttempt indicates whether this attempt was initiated\n\t// due to transparently retrying a previous attempt.\n\tIsTransparentRetryAttempt bool\n}\n\n// IsClient indicates if the stats information is from client side.\nfunc (s *Begin) IsClient() bool { return s.Client }\n\nfunc (s *Begin) isRPCStats() {}\n\n// DelayedPickComplete indicates that the RPC is unblocked following a delay in\n// selecting a connection for the call.\ntype DelayedPickComplete struct{}\n\n// IsClient indicates DelayedPickComplete is available on the client.\nfunc (*DelayedPickComplete) IsClient() bool { return true }\n\nfunc (*DelayedPickComplete) isRPCStats() {}\n\n// PickerUpdated indicates that the RPC is unblocked following a delay in\n// selecting a connection for the call.\n//\n// Deprecated: will be removed in a future release; use DelayedPickComplete\n// instead.\ntype PickerUpdated = DelayedPickComplete\n\n// InPayload contains stats about an incoming payload.\ntype InPayload struct {\n\t// Client is true if this InPayload is from client side.\n\tClient bool\n\t// Payload is the payload with original type.  This may be modified after\n\t// the call to HandleRPC which provides the InPayload returns and must be\n\t// copied if needed later.\n\tPayload any\n\n\t// Length is the size of the uncompressed payload data. Does not include any\n\t// framing (gRPC or HTTP/2).\n\tLength int\n\t// CompressedLength is the size of the compressed payload data. Does not\n\t// include any framing (gRPC or HTTP/2). Same as Length if compression not\n\t// enabled.\n\tCompressedLength int\n\t// WireLength is the size of the compressed payload data plus gRPC framing.\n\t// Does not include HTTP/2 framing.\n\tWireLength int\n\n\t// RecvTime is the time when the payload is received.\n\tRecvTime time.Time\n}\n\n// IsClient indicates if the stats information is from client side.\nfunc (s *InPayload) IsClient() bool { return s.Client }\n\nfunc (s *InPayload) isRPCStats() {}\n\n// InHeader contains stats about header reception.\n//\n// - Server-side: The first stats event after the RPC request is received.\ntype InHeader struct {\n\t// Client is true if this InHeader is from client side.\n\tClient bool\n\t// WireLength is the wire length of header.\n\tWireLength int\n\t// Compression is the compression algorithm used for the RPC.\n\tCompression string\n\t// Header contains the header metadata received.\n\tHeader metadata.MD\n\n\t// The following fields are valid only if Client is false.\n\t// FullMethod is the full RPC method string, i.e., /package.service/method.\n\tFullMethod string\n\t// RemoteAddr is the remote address of the corresponding connection.\n\tRemoteAddr net.Addr\n\t// LocalAddr is the local address of the corresponding connection.\n\tLocalAddr net.Addr\n}\n\n// IsClient indicates if the stats information is from client side.\nfunc (s *InHeader) IsClient() bool { return s.Client }\n\nfunc (s *InHeader) isRPCStats() {}\n\n// InTrailer contains stats about trailer reception.\ntype InTrailer struct {\n\t// Client is true if this InTrailer is from client side.\n\tClient bool\n\t// WireLength is the wire length of trailer.\n\tWireLength int\n\t// Trailer contains the trailer metadata received from the server. This\n\t// field is only valid if this InTrailer is from the client side.\n\tTrailer metadata.MD\n}\n\n// IsClient indicates if the stats information is from client side.\nfunc (s *InTrailer) IsClient() bool { return s.Client }\n\nfunc (s *InTrailer) isRPCStats() {}\n\n// OutPayload contains stats about an outgoing payload.\ntype OutPayload struct {\n\t// Client is true if this OutPayload is from client side.\n\tClient bool\n\t// Payload is the payload with original type.  This may be modified after\n\t// the call to HandleRPC which provides the OutPayload returns and must be\n\t// copied if needed later.\n\tPayload any\n\t// Length is the size of the uncompressed payload data. Does not include any\n\t// framing (gRPC or HTTP/2).\n\tLength int\n\t// CompressedLength is the size of the compressed payload data. Does not\n\t// include any framing (gRPC or HTTP/2). Same as Length if compression not\n\t// enabled.\n\tCompressedLength int\n\t// WireLength is the size of the compressed payload data plus gRPC framing.\n\t// Does not include HTTP/2 framing.\n\tWireLength int\n\t// SentTime is the time when the payload is sent.\n\tSentTime time.Time\n}\n\n// IsClient indicates if this stats information is from client side.\nfunc (s *OutPayload) IsClient() bool { return s.Client }\n\nfunc (s *OutPayload) isRPCStats() {}\n\n// OutHeader contains stats about header transmission.\n//\n//   - Client-side: Only occurs after 'Begin', as headers are always the first\n//     thing sent on a stream.\ntype OutHeader struct {\n\t// Client is true if this OutHeader is from client side.\n\tClient bool\n\t// Compression is the compression algorithm used for the RPC.\n\tCompression string\n\t// Header contains the header metadata sent.\n\tHeader metadata.MD\n\n\t// The following fields are valid only if Client is true.\n\t// FullMethod is the full RPC method string, i.e., /package.service/method.\n\tFullMethod string\n\t// RemoteAddr is the remote address of the corresponding connection.\n\tRemoteAddr net.Addr\n\t// LocalAddr is the local address of the corresponding connection.\n\tLocalAddr net.Addr\n}\n\n// IsClient indicates if this stats information is from client side.\nfunc (s *OutHeader) IsClient() bool { return s.Client }\n\nfunc (s *OutHeader) isRPCStats() {}\n\n// OutTrailer contains stats about trailer transmission.\ntype OutTrailer struct {\n\t// Client is true if this OutTrailer is from client side.\n\tClient bool\n\t// WireLength is the wire length of trailer.\n\t//\n\t// Deprecated: This field is never set. The length is not known when this\n\t// message is emitted because the trailer fields are compressed with hpack\n\t// after that.\n\tWireLength int\n\t// Trailer contains the trailer metadata sent to the client. This\n\t// field is only valid if this OutTrailer is from the server side.\n\tTrailer metadata.MD\n}\n\n// IsClient indicates if this stats information is from client side.\nfunc (s *OutTrailer) IsClient() bool { return s.Client }\n\nfunc (s *OutTrailer) isRPCStats() {}\n\n// End contains stats about RPC completion.\ntype End struct {\n\t// Client is true if this End is from client side.\n\tClient bool\n\t// BeginTime is the time when the RPC began.\n\tBeginTime time.Time\n\t// EndTime is the time when the RPC ends.\n\tEndTime time.Time\n\t// Trailer contains the trailer metadata received from the server. This\n\t// field is only valid if this End is from the client side.\n\t// Deprecated: use Trailer in InTrailer instead.\n\tTrailer metadata.MD\n\t// Error is the error the RPC ended with. It is an error generated from\n\t// status.Status and can be converted back to status.Status using\n\t// status.FromError if non-nil.\n\tError error\n}\n\n// IsClient indicates if this is from client side.\nfunc (s *End) IsClient() bool { return s.Client }\n\nfunc (s *End) isRPCStats() {}\n\n// ConnStats contains stats information about connections.\ntype ConnStats interface {\n\tisConnStats()\n\t// IsClient returns true if this ConnStats is from client side.\n\tIsClient() bool\n}\n\n// ConnBegin contains stats about connection establishment.\ntype ConnBegin struct {\n\t// Client is true if this ConnBegin is from client side.\n\tClient bool\n}\n\n// IsClient indicates if this is from client side.\nfunc (s *ConnBegin) IsClient() bool { return s.Client }\n\nfunc (s *ConnBegin) isConnStats() {}\n\n// ConnEnd contains stats about connection termination.\ntype ConnEnd struct {\n\t// Client is true if this ConnEnd is from client side.\n\tClient bool\n}\n\n// IsClient indicates if this is from client side.\nfunc (s *ConnEnd) IsClient() bool { return s.Client }\n\nfunc (s *ConnEnd) isConnStats() {}\n\n// SetTags attaches stats tagging data to the context, which will be sent in\n// the outgoing RPC with the header grpc-tags-bin.  Subsequent calls to\n// SetTags will overwrite the values from earlier calls.\n//\n// Deprecated: set the `grpc-tags-bin` header in the metadata instead.\nfunc SetTags(ctx context.Context, b []byte) context.Context {\n\treturn metadata.AppendToOutgoingContext(ctx, \"grpc-tags-bin\", string(b))\n}\n\n// Tags returns the tags from the context for the inbound RPC.\n//\n// Deprecated: obtain the `grpc-tags-bin` header from metadata instead.\nfunc Tags(ctx context.Context) []byte {\n\ttraceValues := metadata.ValueFromIncomingContext(ctx, \"grpc-tags-bin\")\n\tif len(traceValues) == 0 {\n\t\treturn nil\n\t}\n\treturn []byte(traceValues[len(traceValues)-1])\n}\n\n// SetTrace attaches stats tagging data to the context, which will be sent in\n// the outgoing RPC with the header grpc-trace-bin.  Subsequent calls to\n// SetTrace will overwrite the values from earlier calls.\n//\n// Deprecated: set the `grpc-trace-bin` header in the metadata instead.\nfunc SetTrace(ctx context.Context, b []byte) context.Context {\n\treturn metadata.AppendToOutgoingContext(ctx, \"grpc-trace-bin\", string(b))\n}\n\n// Trace returns the trace from the context for the inbound RPC.\n//\n// Deprecated: obtain the `grpc-trace-bin` header from metadata instead.\nfunc Trace(ctx context.Context) []byte {\n\ttraceValues := metadata.ValueFromIncomingContext(ctx, \"grpc-trace-bin\")\n\tif len(traceValues) == 0 {\n\t\treturn nil\n\t}\n\treturn []byte(traceValues[len(traceValues)-1])\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/status/status.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package status implements errors returned by gRPC.  These errors are\n// serialized and transmitted on the wire between server and client, and allow\n// for additional data to be transmitted via the Details field in the status\n// proto.  gRPC service handlers should return an error created by this\n// package, and gRPC clients should expect a corresponding error to be\n// returned from the RPC call.\n//\n// This package upholds the invariants that a non-nil error may not\n// contain an OK code, and an OK code must result in a nil error.\npackage status\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\n\tspb \"google.golang.org/genproto/googleapis/rpc/status\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/internal/status\"\n)\n\n// Status references google.golang.org/grpc/internal/status. It represents an\n// RPC status code, message, and details.  It is immutable and should be\n// created with New, Newf, or FromProto.\n// https://godoc.org/google.golang.org/grpc/internal/status\ntype Status = status.Status\n\n// New returns a Status representing c and msg.\nfunc New(c codes.Code, msg string) *Status {\n\treturn status.New(c, msg)\n}\n\n// Newf returns New(c, fmt.Sprintf(format, a...)).\nfunc Newf(c codes.Code, format string, a ...any) *Status {\n\treturn New(c, fmt.Sprintf(format, a...))\n}\n\n// Error returns an error representing c and msg.  If c is OK, returns nil.\nfunc Error(c codes.Code, msg string) error {\n\treturn New(c, msg).Err()\n}\n\n// Errorf returns Error(c, fmt.Sprintf(format, a...)).\nfunc Errorf(c codes.Code, format string, a ...any) error {\n\treturn Error(c, fmt.Sprintf(format, a...))\n}\n\n// ErrorProto returns an error representing s.  If s.Code is OK, returns nil.\nfunc ErrorProto(s *spb.Status) error {\n\treturn FromProto(s).Err()\n}\n\n// FromProto returns a Status representing s.\nfunc FromProto(s *spb.Status) *Status {\n\treturn status.FromProto(s)\n}\n\n// FromError returns a Status representation of err.\n//\n//   - If err was produced by this package or implements the method `GRPCStatus()\n//     *Status` and `GRPCStatus()` does not return nil, or if err wraps a type\n//     satisfying this, the Status from `GRPCStatus()` is returned.  For wrapped\n//     errors, the message returned contains the entire err.Error() text and not\n//     just the wrapped status. In that case, ok is true.\n//\n//   - If err is nil, a Status is returned with codes.OK and no message, and ok\n//     is true.\n//\n//   - If err implements the method `GRPCStatus() *Status` and `GRPCStatus()`\n//     returns nil (which maps to Codes.OK), or if err wraps a type\n//     satisfying this, a Status is returned with codes.Unknown and err's\n//     Error() message, and ok is false.\n//\n//   - Otherwise, err is an error not compatible with this package.  In this\n//     case, a Status is returned with codes.Unknown and err's Error() message,\n//     and ok is false.\nfunc FromError(err error) (s *Status, ok bool) {\n\tif err == nil {\n\t\treturn nil, true\n\t}\n\ttype grpcstatus interface{ GRPCStatus() *Status }\n\tif gs, ok := err.(grpcstatus); ok {\n\t\tgrpcStatus := gs.GRPCStatus()\n\t\tif grpcStatus == nil {\n\t\t\t// Error has status nil, which maps to codes.OK. There\n\t\t\t// is no sensible behavior for this, so we turn it into\n\t\t\t// an error with codes.Unknown and discard the existing\n\t\t\t// status.\n\t\t\treturn New(codes.Unknown, err.Error()), false\n\t\t}\n\t\treturn grpcStatus, true\n\t}\n\tvar gs grpcstatus\n\tif errors.As(err, &gs) {\n\t\tgrpcStatus := gs.GRPCStatus()\n\t\tif grpcStatus == nil {\n\t\t\t// Error wraps an error that has status nil, which maps\n\t\t\t// to codes.OK.  There is no sensible behavior for this,\n\t\t\t// so we turn it into an error with codes.Unknown and\n\t\t\t// discard the existing status.\n\t\t\treturn New(codes.Unknown, err.Error()), false\n\t\t}\n\t\tp := grpcStatus.Proto()\n\t\tp.Message = err.Error()\n\t\treturn status.FromProto(p), true\n\t}\n\treturn New(codes.Unknown, err.Error()), false\n}\n\n// Convert is a convenience function which removes the need to handle the\n// boolean return value from FromError.\nfunc Convert(err error) *Status {\n\ts, _ := FromError(err)\n\treturn s\n}\n\n// Code returns the Code of the error if it is a Status error or if it wraps a\n// Status error. If that is not the case, it returns codes.OK if err is nil, or\n// codes.Unknown otherwise.\nfunc Code(err error) codes.Code {\n\t// Don't use FromError to avoid allocation of OK status.\n\tif err == nil {\n\t\treturn codes.OK\n\t}\n\n\treturn Convert(err).Code()\n}\n\n// FromContextError converts a context error or wrapped context error into a\n// Status.  It returns a Status with codes.OK if err is nil, or a Status with\n// codes.Unknown if err is non-nil and not a context error.\nfunc FromContextError(err error) *Status {\n\tif err == nil {\n\t\treturn nil\n\t}\n\tif errors.Is(err, context.DeadlineExceeded) {\n\t\treturn New(codes.DeadlineExceeded, err.Error())\n\t}\n\tif errors.Is(err, context.Canceled) {\n\t\treturn New(codes.Canceled, err.Error())\n\t}\n\treturn New(codes.Unknown, err.Error())\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/stream.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\trand \"math/rand/v2\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/encoding\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/internal/balancerload\"\n\t\"google.golang.org/grpc/internal/binarylog\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n\timetadata \"google.golang.org/grpc/internal/metadata\"\n\tiresolver \"google.golang.org/grpc/internal/resolver\"\n\t\"google.golang.org/grpc/internal/serviceconfig\"\n\tistatus \"google.golang.org/grpc/internal/status\"\n\t\"google.golang.org/grpc/internal/transport\"\n\t\"google.golang.org/grpc/mem\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/peer\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n)\n\nvar metadataFromOutgoingContextRaw = internal.FromOutgoingContextRaw.(func(context.Context) (metadata.MD, [][]string, bool))\n\n// StreamHandler defines the handler called by gRPC server to complete the\n// execution of a streaming RPC. srv is the service implementation on which the\n// RPC was invoked.\n//\n// If a StreamHandler returns an error, it should either be produced by the\n// status package, or be one of the context errors. Otherwise, gRPC will use\n// codes.Unknown as the status code and err.Error() as the status message of the\n// RPC.\ntype StreamHandler func(srv any, stream ServerStream) error\n\n// StreamDesc represents a streaming RPC service's method specification.  Used\n// on the server when registering services and on the client when initiating\n// new streams.\ntype StreamDesc struct {\n\t// StreamName and Handler are only used when registering handlers on a\n\t// server.\n\tStreamName string        // the name of the method excluding the service\n\tHandler    StreamHandler // the handler called for the method\n\n\t// ServerStreams and ClientStreams are used for registering handlers on a\n\t// server as well as defining RPC behavior when passed to NewClientStream\n\t// and ClientConn.NewStream.  At least one must be true.\n\tServerStreams bool // indicates the server can perform streaming sends\n\tClientStreams bool // indicates the client can perform streaming sends\n}\n\n// Stream defines the common interface a client or server stream has to satisfy.\n//\n// Deprecated: See ClientStream and ServerStream documentation instead.\ntype Stream interface {\n\t// Deprecated: See ClientStream and ServerStream documentation instead.\n\tContext() context.Context\n\t// Deprecated: See ClientStream and ServerStream documentation instead.\n\tSendMsg(m any) error\n\t// Deprecated: See ClientStream and ServerStream documentation instead.\n\tRecvMsg(m any) error\n}\n\n// ClientStream defines the client-side behavior of a streaming RPC.\n//\n// All errors returned from ClientStream methods are compatible with the\n// status package.\ntype ClientStream interface {\n\t// Header returns the header metadata received from the server if there\n\t// is any. It blocks if the metadata is not ready to read.  If the metadata\n\t// is nil and the error is also nil, then the stream was terminated without\n\t// headers, and the status can be discovered by calling RecvMsg.\n\tHeader() (metadata.MD, error)\n\t// Trailer returns the trailer metadata from the server, if there is any.\n\t// It must only be called after stream.CloseAndRecv has returned, or\n\t// stream.Recv has returned a non-nil error (including io.EOF).\n\tTrailer() metadata.MD\n\t// CloseSend closes the send direction of the stream. This method always\n\t// returns a nil error. The status of the stream may be discovered using\n\t// RecvMsg. It is also not safe to call CloseSend concurrently with SendMsg.\n\tCloseSend() error\n\t// Context returns the context for this stream.\n\t//\n\t// It should not be called until after Header or RecvMsg has returned. Once\n\t// called, subsequent client-side retries are disabled.\n\tContext() context.Context\n\t// SendMsg is generally called by generated code. On error, SendMsg aborts\n\t// the stream. If the error was generated by the client, the status is\n\t// returned directly; otherwise, io.EOF is returned and the status of\n\t// the stream may be discovered using RecvMsg. For unary or server-streaming\n\t// RPCs (StreamDesc.ClientStreams is false), a nil error is returned\n\t// unconditionally.\n\t//\n\t// SendMsg blocks until:\n\t//   - There is sufficient flow control to schedule m with the transport, or\n\t//   - The stream is done, or\n\t//   - The stream breaks.\n\t//\n\t// SendMsg does not wait until the message is received by the server. An\n\t// untimely stream closure may result in lost messages. To ensure delivery,\n\t// users should ensure the RPC completed successfully using RecvMsg.\n\t//\n\t// It is safe to have a goroutine calling SendMsg and another goroutine\n\t// calling RecvMsg on the same stream at the same time, but it is not safe\n\t// to call SendMsg on the same stream in different goroutines. It is also\n\t// not safe to call CloseSend concurrently with SendMsg.\n\t//\n\t// It is not safe to modify the message after calling SendMsg. Tracing\n\t// libraries and stats handlers may use the message lazily.\n\tSendMsg(m any) error\n\t// RecvMsg blocks until it receives a message into m or the stream is\n\t// done. It returns io.EOF when the stream completes successfully. On\n\t// any other error, the stream is aborted and the error contains the RPC\n\t// status.\n\t//\n\t// It is safe to have a goroutine calling SendMsg and another goroutine\n\t// calling RecvMsg on the same stream at the same time, but it is not\n\t// safe to call RecvMsg on the same stream in different goroutines.\n\tRecvMsg(m any) error\n}\n\n// NewStream creates a new Stream for the client side. This is typically\n// called by generated code. ctx is used for the lifetime of the stream.\n//\n// To ensure resources are not leaked due to the stream returned, one of the following\n// actions must be performed:\n//\n//  1. Call Close on the ClientConn.\n//  2. Cancel the context provided.\n//  3. Call RecvMsg until a non-nil error is returned. A protobuf-generated\n//     client-streaming RPC, for instance, might use the helper function\n//     CloseAndRecv (note that CloseSend does not Recv, therefore is not\n//     guaranteed to release all resources).\n//  4. Receive a non-nil, non-io.EOF error from Header or SendMsg.\n//\n// If none of the above happen, a goroutine and a context will be leaked, and grpc\n// will not call the optionally-configured stats handler with a stats.End message.\nfunc (cc *ClientConn) NewStream(ctx context.Context, desc *StreamDesc, method string, opts ...CallOption) (ClientStream, error) {\n\t// allow interceptor to see all applicable call options, which means those\n\t// configured as defaults from dial option as well as per-call options\n\topts = combine(cc.dopts.callOptions, opts)\n\n\tif cc.dopts.streamInt != nil {\n\t\treturn cc.dopts.streamInt(ctx, desc, cc, method, newClientStream, opts...)\n\t}\n\treturn newClientStream(ctx, desc, cc, method, opts...)\n}\n\n// NewClientStream is a wrapper for ClientConn.NewStream.\nfunc NewClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (ClientStream, error) {\n\treturn cc.NewStream(ctx, desc, method, opts...)\n}\n\nvar emptyMethodConfig = serviceconfig.MethodConfig{}\n\n// endOfClientStream performs cleanup actions required for both successful and\n// failed streams. This includes incrementing channelz stats and invoking all\n// registered OnFinish call options.\nfunc endOfClientStream(cc *ClientConn, err error, opts ...CallOption) {\n\tif channelz.IsOn() {\n\t\tif err != nil {\n\t\t\tcc.incrCallsFailed()\n\t\t} else {\n\t\t\tcc.incrCallsSucceeded()\n\t\t}\n\t}\n\n\tfor _, o := range opts {\n\t\tif o, ok := o.(OnFinishCallOption); ok {\n\t\t\to.OnFinish(err)\n\t\t}\n\t}\n}\n\nfunc newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (_ ClientStream, err error) {\n\tif channelz.IsOn() {\n\t\tcc.incrCallsStarted()\n\t}\n\tdefer func() {\n\t\tif err != nil {\n\t\t\t// Ensure cleanup when stream creation fails.\n\t\t\tendOfClientStream(cc, err, opts...)\n\t\t}\n\t}()\n\n\t// Start tracking the RPC for idleness purposes. This is where a stream is\n\t// created for both streaming and unary RPCs, and hence is a good place to\n\t// track active RPC count.\n\tcc.idlenessMgr.OnCallBegin()\n\n\t// Add a calloption, to decrement the active call count, that gets executed\n\t// when the RPC completes.\n\topts = append([]CallOption{OnFinish(func(error) { cc.idlenessMgr.OnCallEnd() })}, opts...)\n\n\tif md, added, ok := metadataFromOutgoingContextRaw(ctx); ok {\n\t\t// validate md\n\t\tif err := imetadata.Validate(md); err != nil {\n\t\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t\t}\n\t\t// validate added\n\t\tfor _, kvs := range added {\n\t\t\tfor i := 0; i < len(kvs); i += 2 {\n\t\t\t\tif err := imetadata.ValidatePair(kvs[i], kvs[i+1]); err != nil {\n\t\t\t\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Provide an opportunity for the first RPC to see the first service config\n\t// provided by the resolver.\n\tnameResolutionDelayed, err := cc.waitForResolvedAddrs(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tmc := &emptyMethodConfig\n\tvar onCommit func()\n\tnewStream := func(ctx context.Context, done func()) (iresolver.ClientStream, error) {\n\t\treturn newClientStreamWithParams(ctx, desc, cc, method, mc, onCommit, done, nameResolutionDelayed, opts...)\n\t}\n\n\trpcInfo := iresolver.RPCInfo{Context: ctx, Method: method}\n\trpcConfig, err := cc.safeConfigSelector.SelectConfig(rpcInfo)\n\tif err != nil {\n\t\tif st, ok := status.FromError(err); ok {\n\t\t\t// Restrict the code to the list allowed by gRFC A54.\n\t\t\tif istatus.IsRestrictedControlPlaneCode(st) {\n\t\t\t\terr = status.Errorf(codes.Internal, \"config selector returned illegal status: %v\", err)\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, toRPCErr(err)\n\t}\n\n\tif rpcConfig != nil {\n\t\tif rpcConfig.Context != nil {\n\t\t\tctx = rpcConfig.Context\n\t\t}\n\t\tmc = &rpcConfig.MethodConfig\n\t\tonCommit = rpcConfig.OnCommitted\n\t\tif rpcConfig.Interceptor != nil {\n\t\t\trpcInfo.Context = nil\n\t\t\tns := newStream\n\t\t\tnewStream = func(ctx context.Context, done func()) (iresolver.ClientStream, error) {\n\t\t\t\tcs, err := rpcConfig.Interceptor.NewStream(ctx, rpcInfo, done, ns)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, toRPCErr(err)\n\t\t\t\t}\n\t\t\t\treturn cs, nil\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newStream(ctx, func() {})\n}\n\nfunc newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, mc *serviceconfig.MethodConfig, onCommit, doneFunc func(), nameResolutionDelayed bool, opts ...CallOption) (_ iresolver.ClientStream, err error) {\n\tcallInfo := defaultCallInfo()\n\tif mc.WaitForReady != nil {\n\t\tcallInfo.failFast = !*mc.WaitForReady\n\t}\n\n\t// Possible context leak:\n\t// The cancel function for the child context we create will only be called\n\t// when RecvMsg returns a non-nil error, if the ClientConn is closed, or if\n\t// an error is generated by SendMsg.\n\t// https://github.com/grpc/grpc-go/issues/1818.\n\tvar cancel context.CancelFunc\n\tif mc.Timeout != nil && *mc.Timeout >= 0 {\n\t\tctx, cancel = context.WithTimeout(ctx, *mc.Timeout)\n\t} else {\n\t\tctx, cancel = context.WithCancel(ctx)\n\t}\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tcancel()\n\t\t}\n\t}()\n\n\tfor _, o := range opts {\n\t\tif err := o.before(callInfo); err != nil {\n\t\t\treturn nil, toRPCErr(err)\n\t\t}\n\t}\n\tcallInfo.maxSendMessageSize = getMaxSize(mc.MaxReqSize, callInfo.maxSendMessageSize, defaultClientMaxSendMessageSize)\n\tcallInfo.maxReceiveMessageSize = getMaxSize(mc.MaxRespSize, callInfo.maxReceiveMessageSize, defaultClientMaxReceiveMessageSize)\n\tif err := setCallInfoCodec(callInfo); err != nil {\n\t\treturn nil, err\n\t}\n\n\tcallHdr := &transport.CallHdr{\n\t\tHost:           cc.authority,\n\t\tMethod:         method,\n\t\tContentSubtype: callInfo.contentSubtype,\n\t\tDoneFunc:       doneFunc,\n\t\tAuthority:      callInfo.authority,\n\t}\n\tif allowed := callInfo.acceptedResponseCompressors; len(allowed) > 0 {\n\t\theaderValue := strings.Join(allowed, \",\")\n\t\tcallHdr.AcceptedCompressors = &headerValue\n\t}\n\n\t// Set our outgoing compression according to the UseCompressor CallOption, if\n\t// set.  In that case, also find the compressor from the encoding package.\n\t// Otherwise, use the compressor configured by the WithCompressor DialOption,\n\t// if set.\n\tvar compressorV0 Compressor\n\tvar compressorV1 encoding.Compressor\n\tif ct := callInfo.compressorName; ct != \"\" {\n\t\tcallHdr.SendCompress = ct\n\t\tif ct != encoding.Identity {\n\t\t\tcompressorV1 = encoding.GetCompressor(ct)\n\t\t\tif compressorV1 == nil {\n\t\t\t\treturn nil, status.Errorf(codes.Internal, \"grpc: Compressor is not installed for requested grpc-encoding %q\", ct)\n\t\t\t}\n\t\t}\n\t} else if cc.dopts.compressorV0 != nil {\n\t\tcallHdr.SendCompress = cc.dopts.compressorV0.Type()\n\t\tcompressorV0 = cc.dopts.compressorV0\n\t}\n\tif callInfo.creds != nil {\n\t\tcallHdr.Creds = callInfo.creds\n\t}\n\n\tcs := &clientStream{\n\t\tcallHdr:             callHdr,\n\t\tctx:                 ctx,\n\t\tmethodConfig:        mc,\n\t\topts:                opts,\n\t\tcallInfo:            callInfo,\n\t\tcc:                  cc,\n\t\tdesc:                desc,\n\t\tcodec:               callInfo.codec,\n\t\tcompressorV0:        compressorV0,\n\t\tcompressorV1:        compressorV1,\n\t\tcancel:              cancel,\n\t\tfirstAttempt:        true,\n\t\tonCommit:            onCommit,\n\t\tnameResolutionDelay: nameResolutionDelayed,\n\t}\n\tif !cc.dopts.disableRetry {\n\t\tcs.retryThrottler = cc.retryThrottler.Load().(*retryThrottler)\n\t}\n\tif ml := binarylog.GetMethodLogger(method); ml != nil {\n\t\tcs.binlogs = append(cs.binlogs, ml)\n\t}\n\tif cc.dopts.binaryLogger != nil {\n\t\tif ml := cc.dopts.binaryLogger.GetMethodLogger(method); ml != nil {\n\t\t\tcs.binlogs = append(cs.binlogs, ml)\n\t\t}\n\t}\n\n\t// Pick the transport to use and create a new stream on the transport.\n\t// Assign cs.attempt upon success.\n\top := func(a *csAttempt) error {\n\t\tif err := a.getTransport(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := a.newStream(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Because this operation is always called either here (while creating\n\t\t// the clientStream) or by the retry code while locked when replaying\n\t\t// the operation, it is safe to access cs.attempt directly.\n\t\tcs.attempt = a\n\t\treturn nil\n\t}\n\tif err := cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op, nil) }); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(cs.binlogs) != 0 {\n\t\tmd, _ := metadata.FromOutgoingContext(ctx)\n\t\tlogEntry := &binarylog.ClientHeader{\n\t\t\tOnClientSide: true,\n\t\t\tHeader:       md,\n\t\t\tMethodName:   method,\n\t\t\tAuthority:    cs.cc.authority,\n\t\t}\n\t\tif deadline, ok := ctx.Deadline(); ok {\n\t\t\tlogEntry.Timeout = time.Until(deadline)\n\t\t\tif logEntry.Timeout < 0 {\n\t\t\t\tlogEntry.Timeout = 0\n\t\t\t}\n\t\t}\n\t\tfor _, binlog := range cs.binlogs {\n\t\t\tbinlog.Log(cs.ctx, logEntry)\n\t\t}\n\t}\n\n\tif desc != unaryStreamDesc {\n\t\t// Listen on cc and stream contexts to cleanup when the user closes the\n\t\t// ClientConn or cancels the stream context.  In all other cases, an error\n\t\t// should already be injected into the recv buffer by the transport, which\n\t\t// the client will eventually receive, and then we will cancel the stream's\n\t\t// context in clientStream.finish.\n\t\tgo func() {\n\t\t\tselect {\n\t\t\tcase <-cc.ctx.Done():\n\t\t\t\tcs.finish(ErrClientConnClosing)\n\t\t\tcase <-ctx.Done():\n\t\t\t\tcs.finish(toRPCErr(ctx.Err()))\n\t\t\t}\n\t\t}()\n\t}\n\treturn cs, nil\n}\n\n// newAttemptLocked creates a new csAttempt without a transport or stream.\nfunc (cs *clientStream) newAttemptLocked(isTransparent bool) (*csAttempt, error) {\n\tif err := cs.ctx.Err(); err != nil {\n\t\treturn nil, toRPCErr(err)\n\t}\n\tif err := cs.cc.ctx.Err(); err != nil {\n\t\treturn nil, ErrClientConnClosing\n\t}\n\n\tctx := newContextWithRPCInfo(cs.ctx, cs.callInfo.failFast, cs.callInfo.codec, cs.compressorV0, cs.compressorV1)\n\tmethod := cs.callHdr.Method\n\tvar beginTime time.Time\n\tsh := cs.cc.statsHandler\n\tif sh != nil {\n\t\tbeginTime = time.Now()\n\t\tctx = sh.TagRPC(ctx, &stats.RPCTagInfo{\n\t\t\tFullMethodName: method, FailFast: cs.callInfo.failFast,\n\t\t\tNameResolutionDelay: cs.nameResolutionDelay,\n\t\t})\n\t\tsh.HandleRPC(ctx, &stats.Begin{\n\t\t\tClient:                    true,\n\t\t\tBeginTime:                 beginTime,\n\t\t\tFailFast:                  cs.callInfo.failFast,\n\t\t\tIsClientStream:            cs.desc.ClientStreams,\n\t\t\tIsServerStream:            cs.desc.ServerStreams,\n\t\t\tIsTransparentRetryAttempt: isTransparent,\n\t\t})\n\t}\n\n\tvar trInfo *traceInfo\n\tif EnableTracing {\n\t\ttrInfo = &traceInfo{\n\t\t\ttr: newTrace(\"grpc.Sent.\"+methodFamily(method), method),\n\t\t\tfirstLine: firstLine{\n\t\t\t\tclient: true,\n\t\t\t},\n\t\t}\n\t\tif deadline, ok := ctx.Deadline(); ok {\n\t\t\ttrInfo.firstLine.deadline = time.Until(deadline)\n\t\t}\n\t\ttrInfo.tr.LazyLog(&trInfo.firstLine, false)\n\t\tctx = newTraceContext(ctx, trInfo.tr)\n\t}\n\n\tif cs.cc.parsedTarget.URL.Scheme == internal.GRPCResolverSchemeExtraMetadata {\n\t\t// Add extra metadata (metadata that will be added by transport) to context\n\t\t// so the balancer can see them.\n\t\tctx = grpcutil.WithExtraMetadata(ctx, metadata.Pairs(\n\t\t\t\"content-type\", grpcutil.ContentType(cs.callHdr.ContentSubtype),\n\t\t))\n\t}\n\n\treturn &csAttempt{\n\t\tctx:            ctx,\n\t\tbeginTime:      beginTime,\n\t\tcs:             cs,\n\t\tdecompressorV0: cs.cc.dopts.dc,\n\t\tstatsHandler:   sh,\n\t\ttrInfo:         trInfo,\n\t}, nil\n}\n\nfunc (a *csAttempt) getTransport() error {\n\tcs := a.cs\n\n\tpickInfo := balancer.PickInfo{Ctx: a.ctx, FullMethodName: cs.callHdr.Method}\n\tpick, err := cs.cc.pickerWrapper.pick(a.ctx, cs.callInfo.failFast, pickInfo)\n\ta.transport, a.pickResult = pick.transport, pick.result\n\tif err != nil {\n\t\tif de, ok := err.(dropError); ok {\n\t\t\terr = de.error\n\t\t\ta.drop = true\n\t\t}\n\t\treturn err\n\t}\n\tif a.trInfo != nil {\n\t\ta.trInfo.firstLine.SetRemoteAddr(a.transport.Peer().Addr)\n\t}\n\tif pick.blocked && a.statsHandler != nil {\n\t\ta.statsHandler.HandleRPC(a.ctx, &stats.DelayedPickComplete{})\n\t}\n\treturn nil\n}\n\nfunc (a *csAttempt) newStream() error {\n\tcs := a.cs\n\tcs.callHdr.PreviousAttempts = cs.numRetries\n\n\t// Merge metadata stored in PickResult, if any, with existing call metadata.\n\t// It is safe to overwrite the csAttempt's context here, since all state\n\t// maintained in it are local to the attempt. When the attempt has to be\n\t// retried, a new instance of csAttempt will be created.\n\tif a.pickResult.Metadata != nil {\n\t\t// We currently do not have a function it the metadata package which\n\t\t// merges given metadata with existing metadata in a context. Existing\n\t\t// function `AppendToOutgoingContext()` takes a variadic argument of key\n\t\t// value pairs.\n\t\t//\n\t\t// TODO: Make it possible to retrieve key value pairs from metadata.MD\n\t\t// in a form passable to AppendToOutgoingContext(), or create a version\n\t\t// of AppendToOutgoingContext() that accepts a metadata.MD.\n\t\tmd, _ := metadata.FromOutgoingContext(a.ctx)\n\t\tmd = metadata.Join(md, a.pickResult.Metadata)\n\t\ta.ctx = metadata.NewOutgoingContext(a.ctx, md)\n\n\t\t// If the `CallAuthority` CallOption is not set, check if the LB picker\n\t\t// has provided an authority override in the PickResult metadata and\n\t\t// apply it, as specified in gRFC A81.\n\t\tif cs.callInfo.authority == \"\" {\n\t\t\tif authMD := a.pickResult.Metadata.Get(\":authority\"); len(authMD) > 0 {\n\t\t\t\tcs.callHdr.Authority = authMD[0]\n\t\t\t}\n\t\t}\n\t}\n\ts, err := a.transport.NewStream(a.ctx, cs.callHdr, a.statsHandler)\n\tif err != nil {\n\t\tnse, ok := err.(*transport.NewStreamError)\n\t\tif !ok {\n\t\t\t// Unexpected.\n\t\t\treturn err\n\t\t}\n\n\t\tif nse.AllowTransparentRetry {\n\t\t\ta.allowTransparentRetry = true\n\t\t}\n\n\t\t// Unwrap and convert error.\n\t\treturn toRPCErr(nse.Err)\n\t}\n\ta.transportStream = s\n\ta.ctx = s.Context()\n\ta.parser = parser{r: s, bufferPool: a.cs.cc.dopts.copts.BufferPool}\n\treturn nil\n}\n\n// clientStream implements a client side Stream.\ntype clientStream struct {\n\tcallHdr  *transport.CallHdr\n\topts     []CallOption\n\tcallInfo *callInfo\n\tcc       *ClientConn\n\tdesc     *StreamDesc\n\n\tcodec        baseCodec\n\tcompressorV0 Compressor\n\tcompressorV1 encoding.Compressor\n\n\tcancel context.CancelFunc // cancels all attempts\n\n\tsentLast bool // sent an end stream\n\n\treceivedFirstMsg bool // set after the first message is received\n\n\tmethodConfig *MethodConfig\n\n\tctx context.Context // the application's context, wrapped by stats/tracing\n\n\tretryThrottler *retryThrottler // The throttler active when the RPC began.\n\n\tbinlogs []binarylog.MethodLogger\n\t// serverHeaderBinlogged is a boolean for whether server header has been\n\t// logged. Server header will be logged when the first time one of those\n\t// happens: stream.Header(), stream.Recv().\n\t//\n\t// It's only read and used by Recv() and Header(), so it doesn't need to be\n\t// synchronized.\n\tserverHeaderBinlogged bool\n\n\tmu                      sync.Mutex\n\tfirstAttempt            bool // if true, transparent retry is valid\n\tnumRetries              int  // exclusive of transparent retry attempt(s)\n\tnumRetriesSincePushback int  // retries since pushback; to reset backoff\n\tfinished                bool // TODO: replace with atomic cmpxchg or sync.Once?\n\t// attempt is the active client stream attempt.\n\t// The only place where it is written is the newAttemptLocked method and this method never writes nil.\n\t// So, attempt can be nil only inside newClientStream function when clientStream is first created.\n\t// One of the first things done after clientStream's creation, is to call newAttemptLocked which either\n\t// assigns a non nil value to the attempt or returns an error. If an error is returned from newAttemptLocked,\n\t// then newClientStream calls finish on the clientStream and returns. So, finish method is the only\n\t// place where we need to check if the attempt is nil.\n\tattempt *csAttempt\n\t// TODO(hedging): hedging will have multiple attempts simultaneously.\n\tcommitted        bool // active attempt committed for retry?\n\tonCommit         func()\n\treplayBuffer     []replayOp // operations to replay on retry\n\treplayBufferSize int        // current size of replayBuffer\n\t// nameResolutionDelay indicates if there was a delay in the name resolution.\n\t// This field is only valid on client side, it's always false on server side.\n\tnameResolutionDelay bool\n}\n\ntype replayOp struct {\n\top      func(a *csAttempt) error\n\tcleanup func()\n}\n\n// csAttempt implements a single transport stream attempt within a\n// clientStream.\ntype csAttempt struct {\n\tctx             context.Context\n\tcs              *clientStream\n\ttransport       transport.ClientTransport\n\ttransportStream *transport.ClientStream\n\tparser          parser\n\tpickResult      balancer.PickResult\n\n\tfinished        bool\n\tdecompressorV0  Decompressor\n\tdecompressorV1  encoding.Compressor\n\tdecompressorSet bool\n\n\tmu sync.Mutex // guards trInfo.tr\n\t// trInfo may be nil (if EnableTracing is false).\n\t// trInfo.tr is set when created (if EnableTracing is true),\n\t// and cleared when the finish method is called.\n\ttrInfo *traceInfo\n\n\tstatsHandler stats.Handler\n\tbeginTime    time.Time\n\n\t// set for newStream errors that may be transparently retried\n\tallowTransparentRetry bool\n\t// set for pick errors that are returned as a status\n\tdrop bool\n}\n\nfunc (cs *clientStream) commitAttemptLocked() {\n\tif !cs.committed && cs.onCommit != nil {\n\t\tcs.onCommit()\n\t}\n\tcs.committed = true\n\tfor _, op := range cs.replayBuffer {\n\t\tif op.cleanup != nil {\n\t\t\top.cleanup()\n\t\t}\n\t}\n\tcs.replayBuffer = nil\n}\n\nfunc (cs *clientStream) commitAttempt() {\n\tcs.mu.Lock()\n\tcs.commitAttemptLocked()\n\tcs.mu.Unlock()\n}\n\n// shouldRetry returns nil if the RPC should be retried; otherwise it returns\n// the error that should be returned by the operation.  If the RPC should be\n// retried, the bool indicates whether it is being retried transparently.\nfunc (a *csAttempt) shouldRetry(err error) (bool, error) {\n\tcs := a.cs\n\n\tif cs.finished || cs.committed || a.drop {\n\t\t// RPC is finished or committed or was dropped by the picker; cannot retry.\n\t\treturn false, err\n\t}\n\tif a.transportStream == nil && a.allowTransparentRetry {\n\t\treturn true, nil\n\t}\n\t// Wait for the trailers.\n\tunprocessed := false\n\tif a.transportStream != nil {\n\t\t<-a.transportStream.Done()\n\t\tunprocessed = a.transportStream.Unprocessed()\n\t}\n\tif cs.firstAttempt && unprocessed {\n\t\t// First attempt, stream unprocessed: transparently retry.\n\t\treturn true, nil\n\t}\n\tif cs.cc.dopts.disableRetry {\n\t\treturn false, err\n\t}\n\n\tpushback := 0\n\thasPushback := false\n\tif a.transportStream != nil {\n\t\tif !a.transportStream.TrailersOnly() {\n\t\t\treturn false, err\n\t\t}\n\n\t\t// TODO(retry): Move down if the spec changes to not check server pushback\n\t\t// before considering this a failure for throttling.\n\t\tsps := a.transportStream.Trailer()[\"grpc-retry-pushback-ms\"]\n\t\tif len(sps) == 1 {\n\t\t\tvar e error\n\t\t\tif pushback, e = strconv.Atoi(sps[0]); e != nil || pushback < 0 {\n\t\t\t\tchannelz.Infof(logger, cs.cc.channelz, \"Server retry pushback specified to abort (%q).\", sps[0])\n\t\t\t\tcs.retryThrottler.throttle() // This counts as a failure for throttling.\n\t\t\t\treturn false, err\n\t\t\t}\n\t\t\thasPushback = true\n\t\t} else if len(sps) > 1 {\n\t\t\tchannelz.Warningf(logger, cs.cc.channelz, \"Server retry pushback specified multiple values (%q); not retrying.\", sps)\n\t\t\tcs.retryThrottler.throttle() // This counts as a failure for throttling.\n\t\t\treturn false, err\n\t\t}\n\t}\n\n\tvar code codes.Code\n\tif a.transportStream != nil {\n\t\tcode = a.transportStream.Status().Code()\n\t} else {\n\t\tcode = status.Code(err)\n\t}\n\n\trp := cs.methodConfig.RetryPolicy\n\tif rp == nil || !rp.RetryableStatusCodes[code] {\n\t\treturn false, err\n\t}\n\n\t// Note: the ordering here is important; we count this as a failure\n\t// only if the code matched a retryable code.\n\tif cs.retryThrottler.throttle() {\n\t\treturn false, err\n\t}\n\tif cs.numRetries+1 >= rp.MaxAttempts {\n\t\treturn false, fmt.Errorf(\"max retries exhausted: failed after %d attempts: %w\", cs.numRetries+1, err)\n\t}\n\n\tvar dur time.Duration\n\tif hasPushback {\n\t\tdur = time.Millisecond * time.Duration(pushback)\n\t\tcs.numRetriesSincePushback = 0\n\t} else {\n\t\tfact := math.Pow(rp.BackoffMultiplier, float64(cs.numRetriesSincePushback))\n\t\tcur := min(float64(rp.InitialBackoff)*fact, float64(rp.MaxBackoff))\n\t\t// Apply jitter by multiplying with a random factor between 0.8 and 1.2\n\t\tcur *= 0.8 + 0.4*rand.Float64()\n\t\tdur = time.Duration(int64(cur))\n\t\tcs.numRetriesSincePushback++\n\t}\n\n\t// TODO(dfawley): we could eagerly fail here if dur puts us past the\n\t// deadline, but unsure if it is worth doing.\n\tt := time.NewTimer(dur)\n\tselect {\n\tcase <-t.C:\n\t\tcs.numRetries++\n\t\treturn false, nil\n\tcase <-cs.ctx.Done():\n\t\tt.Stop()\n\t\treturn false, status.FromContextError(cs.ctx.Err()).Err()\n\t}\n}\n\n// Returns nil if a retry was performed and succeeded; error otherwise.\nfunc (cs *clientStream) retryLocked(attempt *csAttempt, lastErr error) error {\n\tfor {\n\t\tattempt.finish(toRPCErr(lastErr))\n\t\tisTransparent, err := attempt.shouldRetry(lastErr)\n\t\tif err != nil {\n\t\t\tcs.commitAttemptLocked()\n\t\t\treturn err\n\t\t}\n\t\tcs.firstAttempt = false\n\t\tattempt, err = cs.newAttemptLocked(isTransparent)\n\t\tif err != nil {\n\t\t\t// Only returns error if the clientconn is closed or the context of\n\t\t\t// the stream is canceled.\n\t\t\treturn err\n\t\t}\n\t\t// Note that the first op in replayBuffer always sets cs.attempt\n\t\t// if it is able to pick a transport and create a stream.\n\t\tif lastErr = cs.replayBufferLocked(attempt); lastErr == nil {\n\t\t\treturn nil\n\t\t}\n\t}\n}\n\nfunc (cs *clientStream) Context() context.Context {\n\tcs.commitAttempt()\n\t// No need to lock before using attempt, since we know it is committed and\n\t// cannot change.\n\tif cs.attempt.transportStream != nil {\n\t\treturn cs.attempt.transportStream.Context()\n\t}\n\treturn cs.ctx\n}\n\nfunc (cs *clientStream) withRetry(op func(a *csAttempt) error, onSuccess func()) error {\n\tcs.mu.Lock()\n\tfor {\n\t\tif cs.committed {\n\t\t\tcs.mu.Unlock()\n\t\t\t// toRPCErr is used in case the error from the attempt comes from\n\t\t\t// NewClientStream, which intentionally doesn't return a status\n\t\t\t// error to allow for further inspection; all other errors should\n\t\t\t// already be status errors.\n\t\t\treturn toRPCErr(op(cs.attempt))\n\t\t}\n\t\tif len(cs.replayBuffer) == 0 {\n\t\t\t// For the first op, which controls creation of the stream and\n\t\t\t// assigns cs.attempt, we need to create a new attempt inline\n\t\t\t// before executing the first op.  On subsequent ops, the attempt\n\t\t\t// is created immediately before replaying the ops.\n\t\t\tvar err error\n\t\t\tif cs.attempt, err = cs.newAttemptLocked(false /* isTransparent */); err != nil {\n\t\t\t\tcs.mu.Unlock()\n\t\t\t\tcs.finish(err)\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\ta := cs.attempt\n\t\tcs.mu.Unlock()\n\t\terr := op(a)\n\t\tcs.mu.Lock()\n\t\tif a != cs.attempt {\n\t\t\t// We started another attempt already.\n\t\t\tcontinue\n\t\t}\n\t\tif err == io.EOF {\n\t\t\t<-a.transportStream.Done()\n\t\t}\n\t\tif err == nil || (err == io.EOF && a.transportStream.Status().Code() == codes.OK) {\n\t\t\tonSuccess()\n\t\t\tcs.mu.Unlock()\n\t\t\treturn err\n\t\t}\n\t\tif err := cs.retryLocked(a, err); err != nil {\n\t\t\tcs.mu.Unlock()\n\t\t\treturn err\n\t\t}\n\t}\n}\n\nfunc (cs *clientStream) Header() (metadata.MD, error) {\n\tvar m metadata.MD\n\terr := cs.withRetry(func(a *csAttempt) error {\n\t\tvar err error\n\t\tm, err = a.transportStream.Header()\n\t\treturn toRPCErr(err)\n\t}, cs.commitAttemptLocked)\n\n\tif m == nil && err == nil {\n\t\t// The stream ended with success.  Finish the clientStream.\n\t\terr = io.EOF\n\t}\n\n\tif err != nil {\n\t\tcs.finish(err)\n\t\t// Do not return the error.  The user should get it by calling Recv().\n\t\treturn nil, nil\n\t}\n\n\tif len(cs.binlogs) != 0 && !cs.serverHeaderBinlogged && m != nil {\n\t\t// Only log if binary log is on and header has not been logged, and\n\t\t// there is actually headers to log.\n\t\tlogEntry := &binarylog.ServerHeader{\n\t\t\tOnClientSide: true,\n\t\t\tHeader:       m,\n\t\t\tPeerAddr:     nil,\n\t\t}\n\t\tif peer, ok := peer.FromContext(cs.Context()); ok {\n\t\t\tlogEntry.PeerAddr = peer.Addr\n\t\t}\n\t\tcs.serverHeaderBinlogged = true\n\t\tfor _, binlog := range cs.binlogs {\n\t\t\tbinlog.Log(cs.ctx, logEntry)\n\t\t}\n\t}\n\n\treturn m, nil\n}\n\nfunc (cs *clientStream) Trailer() metadata.MD {\n\t// On RPC failure, we never need to retry, because usage requires that\n\t// RecvMsg() returned a non-nil error before calling this function is valid.\n\t// We would have retried earlier if necessary.\n\t//\n\t// Commit the attempt anyway, just in case users are not following those\n\t// directions -- it will prevent races and should not meaningfully impact\n\t// performance.\n\tcs.commitAttempt()\n\tif cs.attempt.transportStream == nil {\n\t\treturn nil\n\t}\n\treturn cs.attempt.transportStream.Trailer()\n}\n\nfunc (cs *clientStream) replayBufferLocked(attempt *csAttempt) error {\n\tfor _, f := range cs.replayBuffer {\n\t\tif err := f.op(attempt); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (cs *clientStream) bufferForRetryLocked(sz int, op func(a *csAttempt) error, cleanup func()) {\n\t// Note: we still will buffer if retry is disabled (for transparent retries).\n\tif cs.committed {\n\t\treturn\n\t}\n\tcs.replayBufferSize += sz\n\tif cs.replayBufferSize > cs.callInfo.maxRetryRPCBufferSize {\n\t\tcs.commitAttemptLocked()\n\t\tcleanup()\n\t\treturn\n\t}\n\tcs.replayBuffer = append(cs.replayBuffer, replayOp{op: op, cleanup: cleanup})\n}\n\nfunc (cs *clientStream) SendMsg(m any) (err error) {\n\tdefer func() {\n\t\tif err != nil && err != io.EOF {\n\t\t\t// Call finish on the client stream for errors generated by this SendMsg\n\t\t\t// call, as these indicate problems created by this client.  (Transport\n\t\t\t// errors are converted to an io.EOF error in csAttempt.sendMsg; the real\n\t\t\t// error will be returned from RecvMsg eventually in that case, or be\n\t\t\t// retried.)\n\t\t\tcs.finish(err)\n\t\t}\n\t}()\n\tif cs.sentLast {\n\t\treturn status.Errorf(codes.Internal, \"SendMsg called after CloseSend\")\n\t}\n\tif !cs.desc.ClientStreams {\n\t\tcs.sentLast = true\n\t}\n\n\t// load hdr, payload, data\n\thdr, data, payload, pf, err := prepareMsg(m, cs.codec, cs.compressorV0, cs.compressorV1, cs.cc.dopts.copts.BufferPool)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer func() {\n\t\tdata.Free()\n\t\t// only free payload if compression was made, and therefore it is a different set\n\t\t// of buffers from data.\n\t\tif pf.isCompressed() {\n\t\t\tpayload.Free()\n\t\t}\n\t}()\n\n\tdataLen := data.Len()\n\tpayloadLen := payload.Len()\n\t// TODO(dfawley): should we be checking len(data) instead?\n\tif payloadLen > *cs.callInfo.maxSendMessageSize {\n\t\treturn status.Errorf(codes.ResourceExhausted, \"trying to send message larger than max (%d vs. %d)\", payloadLen, *cs.callInfo.maxSendMessageSize)\n\t}\n\n\t// always take an extra ref in case data == payload (i.e. when the data isn't\n\t// compressed). The original ref will always be freed by the deferred free above.\n\tpayload.Ref()\n\top := func(a *csAttempt) error {\n\t\treturn a.sendMsg(m, hdr, payload, dataLen, payloadLen)\n\t}\n\n\t// onSuccess is invoked when the op is captured for a subsequent retry. If the\n\t// stream was established by a previous message and therefore retries are\n\t// disabled, onSuccess will not be invoked, and payloadRef can be freed\n\t// immediately.\n\tonSuccessCalled := false\n\terr = cs.withRetry(op, func() {\n\t\tcs.bufferForRetryLocked(len(hdr)+payloadLen, op, payload.Free)\n\t\tonSuccessCalled = true\n\t})\n\tif !onSuccessCalled {\n\t\tpayload.Free()\n\t}\n\tif len(cs.binlogs) != 0 && err == nil {\n\t\tcm := &binarylog.ClientMessage{\n\t\t\tOnClientSide: true,\n\t\t\tMessage:      data.Materialize(),\n\t\t}\n\t\tfor _, binlog := range cs.binlogs {\n\t\t\tbinlog.Log(cs.ctx, cm)\n\t\t}\n\t}\n\treturn err\n}\n\nfunc (cs *clientStream) RecvMsg(m any) error {\n\tif len(cs.binlogs) != 0 && !cs.serverHeaderBinlogged {\n\t\t// Call Header() to binary log header if it's not already logged.\n\t\tcs.Header()\n\t}\n\tvar recvInfo *payloadInfo\n\tif len(cs.binlogs) != 0 {\n\t\trecvInfo = &payloadInfo{}\n\t\tdefer recvInfo.free()\n\t}\n\terr := cs.withRetry(func(a *csAttempt) error {\n\t\treturn a.recvMsg(m, recvInfo)\n\t}, cs.commitAttemptLocked)\n\tif len(cs.binlogs) != 0 && err == nil {\n\t\tsm := &binarylog.ServerMessage{\n\t\t\tOnClientSide: true,\n\t\t\tMessage:      recvInfo.uncompressedBytes.Materialize(),\n\t\t}\n\t\tfor _, binlog := range cs.binlogs {\n\t\t\tbinlog.Log(cs.ctx, sm)\n\t\t}\n\t}\n\tif err != nil || !cs.desc.ServerStreams {\n\t\t// err != nil or non-server-streaming indicates end of stream.\n\t\tcs.finish(err)\n\t}\n\treturn err\n}\n\nfunc (cs *clientStream) CloseSend() error {\n\tif cs.sentLast {\n\t\t// Return a nil error on repeated calls to this method.\n\t\treturn nil\n\t}\n\tcs.sentLast = true\n\top := func(a *csAttempt) error {\n\t\ta.transportStream.Write(nil, nil, &transport.WriteOptions{Last: true})\n\t\t// Always return nil; io.EOF is the only error that might make sense\n\t\t// instead, but there is no need to signal the client to call RecvMsg\n\t\t// as the only use left for the stream after CloseSend is to call\n\t\t// RecvMsg.  This also matches historical behavior.\n\t\treturn nil\n\t}\n\tcs.withRetry(op, func() { cs.bufferForRetryLocked(0, op, nil) })\n\tif len(cs.binlogs) != 0 {\n\t\tchc := &binarylog.ClientHalfClose{\n\t\t\tOnClientSide: true,\n\t\t}\n\t\tfor _, binlog := range cs.binlogs {\n\t\t\tbinlog.Log(cs.ctx, chc)\n\t\t}\n\t}\n\t// We don't return an error here as we expect users to read all messages\n\t// from the stream and get the RPC status from RecvMsg().  Note that\n\t// SendMsg() must return an error when one occurs so the application\n\t// knows to stop sending messages, but that does not apply here.\n\treturn nil\n}\n\nfunc (cs *clientStream) finish(err error) {\n\tif err == io.EOF {\n\t\t// Ending a stream with EOF indicates a success.\n\t\terr = nil\n\t}\n\tcs.mu.Lock()\n\tif cs.finished {\n\t\tcs.mu.Unlock()\n\t\treturn\n\t}\n\tcs.finished = true\n\tcs.commitAttemptLocked()\n\tif cs.attempt != nil {\n\t\tcs.attempt.finish(err)\n\t\t// after functions all rely upon having a stream.\n\t\tif cs.attempt.transportStream != nil {\n\t\t\tfor _, o := range cs.opts {\n\t\t\t\to.after(cs.callInfo, cs.attempt)\n\t\t\t}\n\t\t}\n\t}\n\n\tcs.mu.Unlock()\n\t// Only one of cancel or trailer needs to be logged.\n\tif len(cs.binlogs) != 0 {\n\t\tswitch err {\n\t\tcase errContextCanceled, errContextDeadline, ErrClientConnClosing:\n\t\t\tc := &binarylog.Cancel{\n\t\t\t\tOnClientSide: true,\n\t\t\t}\n\t\t\tfor _, binlog := range cs.binlogs {\n\t\t\t\tbinlog.Log(cs.ctx, c)\n\t\t\t}\n\t\tdefault:\n\t\t\tlogEntry := &binarylog.ServerTrailer{\n\t\t\t\tOnClientSide: true,\n\t\t\t\tTrailer:      cs.Trailer(),\n\t\t\t\tErr:          err,\n\t\t\t}\n\t\t\tif peer, ok := peer.FromContext(cs.Context()); ok {\n\t\t\t\tlogEntry.PeerAddr = peer.Addr\n\t\t\t}\n\t\t\tfor _, binlog := range cs.binlogs {\n\t\t\t\tbinlog.Log(cs.ctx, logEntry)\n\t\t\t}\n\t\t}\n\t}\n\tif err == nil {\n\t\tcs.retryThrottler.successfulRPC()\n\t}\n\tendOfClientStream(cs.cc, err, cs.opts...)\n\tcs.cancel()\n}\n\nfunc (a *csAttempt) sendMsg(m any, hdr []byte, payld mem.BufferSlice, dataLength, payloadLength int) error {\n\tcs := a.cs\n\tif a.trInfo != nil {\n\t\ta.mu.Lock()\n\t\tif a.trInfo.tr != nil {\n\t\t\ta.trInfo.tr.LazyLog(&payload{sent: true, msg: m}, true)\n\t\t}\n\t\ta.mu.Unlock()\n\t}\n\tif err := a.transportStream.Write(hdr, payld, &transport.WriteOptions{Last: !cs.desc.ClientStreams}); err != nil {\n\t\tif !cs.desc.ClientStreams {\n\t\t\t// For non-client-streaming RPCs, we return nil instead of EOF on error\n\t\t\t// because the generated code requires it.  finish is not called; RecvMsg()\n\t\t\t// will call it with the stream's status independently.\n\t\t\treturn nil\n\t\t}\n\t\treturn io.EOF\n\t}\n\tif a.statsHandler != nil {\n\t\ta.statsHandler.HandleRPC(a.ctx, outPayload(true, m, dataLength, payloadLength, time.Now()))\n\t}\n\treturn nil\n}\n\nfunc (a *csAttempt) recvMsg(m any, payInfo *payloadInfo) (err error) {\n\tcs := a.cs\n\tif a.statsHandler != nil && payInfo == nil {\n\t\tpayInfo = &payloadInfo{}\n\t\tdefer payInfo.free()\n\t}\n\n\tif !a.decompressorSet {\n\t\t// Block until we receive headers containing received message encoding.\n\t\tif ct := a.transportStream.RecvCompress(); ct != \"\" && ct != encoding.Identity {\n\t\t\tif a.decompressorV0 == nil || a.decompressorV0.Type() != ct {\n\t\t\t\t// No configured decompressor, or it does not match the incoming\n\t\t\t\t// message encoding; attempt to find a registered compressor that does.\n\t\t\t\ta.decompressorV0 = nil\n\t\t\t\ta.decompressorV1 = encoding.GetCompressor(ct)\n\t\t\t}\n\t\t\t// Validate that the compression method is acceptable for this call.\n\t\t\tif !acceptedCompressorAllows(cs.callInfo.acceptedResponseCompressors, ct) {\n\t\t\t\treturn status.Errorf(codes.Internal, \"grpc: peer compressed the response with %q which is not allowed by AcceptCompressors\", ct)\n\t\t\t}\n\t\t} else {\n\t\t\t// No compression is used; disable our decompressor.\n\t\t\ta.decompressorV0 = nil\n\t\t}\n\t\t// Only initialize this state once per stream.\n\t\ta.decompressorSet = true\n\t}\n\tif err := recv(&a.parser, cs.codec, a.transportStream, a.decompressorV0, m, *cs.callInfo.maxReceiveMessageSize, payInfo, a.decompressorV1, false); err != nil {\n\t\tif err == io.EOF {\n\t\t\tif statusErr := a.transportStream.Status().Err(); statusErr != nil {\n\t\t\t\treturn statusErr\n\t\t\t}\n\t\t\t// Received no msg and status OK for non-server streaming rpcs.\n\t\t\tif !cs.desc.ServerStreams && !cs.receivedFirstMsg {\n\t\t\t\treturn status.Error(codes.Internal, \"cardinality violation: received no response message from non-server-streaming RPC\")\n\t\t\t}\n\t\t\treturn io.EOF // indicates successful end of stream.\n\t\t}\n\n\t\treturn toRPCErr(err)\n\t}\n\tcs.receivedFirstMsg = true\n\tif a.trInfo != nil {\n\t\ta.mu.Lock()\n\t\tif a.trInfo.tr != nil {\n\t\t\ta.trInfo.tr.LazyLog(&payload{sent: false, msg: m}, true)\n\t\t}\n\t\ta.mu.Unlock()\n\t}\n\tif a.statsHandler != nil {\n\t\ta.statsHandler.HandleRPC(a.ctx, &stats.InPayload{\n\t\t\tClient:           true,\n\t\t\tRecvTime:         time.Now(),\n\t\t\tPayload:          m,\n\t\t\tWireLength:       payInfo.compressedLength + headerLen,\n\t\t\tCompressedLength: payInfo.compressedLength,\n\t\t\tLength:           payInfo.uncompressedBytes.Len(),\n\t\t})\n\t}\n\tif cs.desc.ServerStreams {\n\t\t// Subsequent messages should be received by subsequent RecvMsg calls.\n\t\treturn nil\n\t}\n\t// Special handling for non-server-stream rpcs.\n\t// This recv expects EOF or errors, so we don't collect inPayload.\n\tif err := recv(&a.parser, cs.codec, a.transportStream, a.decompressorV0, m, *cs.callInfo.maxReceiveMessageSize, nil, a.decompressorV1, false); err == io.EOF {\n\t\treturn a.transportStream.Status().Err() // non-server streaming Recv returns nil on success\n\t} else if err != nil {\n\t\treturn toRPCErr(err)\n\t}\n\treturn status.Error(codes.Internal, \"cardinality violation: expected <EOF> for non server-streaming RPCs, but received another message\")\n}\n\nfunc (a *csAttempt) finish(err error) {\n\ta.mu.Lock()\n\tif a.finished {\n\t\ta.mu.Unlock()\n\t\treturn\n\t}\n\ta.finished = true\n\tif err == io.EOF {\n\t\t// Ending a stream with EOF indicates a success.\n\t\terr = nil\n\t}\n\tvar tr metadata.MD\n\tif a.transportStream != nil {\n\t\ta.transportStream.Close(err)\n\t\ttr = a.transportStream.Trailer()\n\t}\n\n\tif a.pickResult.Done != nil {\n\t\tbr := false\n\t\tif a.transportStream != nil {\n\t\t\tbr = a.transportStream.BytesReceived()\n\t\t}\n\t\ta.pickResult.Done(balancer.DoneInfo{\n\t\t\tErr:           err,\n\t\t\tTrailer:       tr,\n\t\t\tBytesSent:     a.transportStream != nil,\n\t\t\tBytesReceived: br,\n\t\t\tServerLoad:    balancerload.Parse(tr),\n\t\t})\n\t}\n\tif a.statsHandler != nil {\n\t\ta.statsHandler.HandleRPC(a.ctx, &stats.End{\n\t\t\tClient:    true,\n\t\t\tBeginTime: a.beginTime,\n\t\t\tEndTime:   time.Now(),\n\t\t\tTrailer:   tr,\n\t\t\tError:     err,\n\t\t})\n\t}\n\tif a.trInfo != nil && a.trInfo.tr != nil {\n\t\tif err == nil {\n\t\t\ta.trInfo.tr.LazyPrintf(\"RPC: [OK]\")\n\t\t} else {\n\t\t\ta.trInfo.tr.LazyPrintf(\"RPC: [%v]\", err)\n\t\t\ta.trInfo.tr.SetError()\n\t\t}\n\t\ta.trInfo.tr.Finish()\n\t\ta.trInfo.tr = nil\n\t}\n\ta.mu.Unlock()\n}\n\n// newNonRetryClientStream creates a ClientStream with the specified transport, on the\n// given addrConn.\n//\n// It's expected that the given transport is either the same one in addrConn, or\n// is already closed. To avoid race, transport is specified separately, instead\n// of using ac.transport.\n//\n// Main difference between this and ClientConn.NewStream:\n// - no retry\n// - no service config (or wait for service config)\n// - no tracing or stats\nfunc newNonRetryClientStream(ctx context.Context, desc *StreamDesc, method string, t transport.ClientTransport, ac *addrConn, opts ...CallOption) (_ ClientStream, err error) {\n\tif t == nil {\n\t\t// TODO: return RPC error here?\n\t\treturn nil, errors.New(\"transport provided is nil\")\n\t}\n\t// defaultCallInfo contains unnecessary info(i.e. failfast, maxRetryRPCBufferSize), so we just initialize an empty struct.\n\tc := &callInfo{}\n\n\t// Possible context leak:\n\t// The cancel function for the child context we create will only be called\n\t// when RecvMsg returns a non-nil error, if the ClientConn is closed, or if\n\t// an error is generated by SendMsg.\n\t// https://github.com/grpc/grpc-go/issues/1818.\n\tctx, cancel := context.WithCancel(ctx)\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tcancel()\n\t\t}\n\t}()\n\n\tfor _, o := range opts {\n\t\tif err := o.before(c); err != nil {\n\t\t\treturn nil, toRPCErr(err)\n\t\t}\n\t}\n\tc.maxReceiveMessageSize = getMaxSize(nil, c.maxReceiveMessageSize, defaultClientMaxReceiveMessageSize)\n\tc.maxSendMessageSize = getMaxSize(nil, c.maxSendMessageSize, defaultServerMaxSendMessageSize)\n\tif err := setCallInfoCodec(c); err != nil {\n\t\treturn nil, err\n\t}\n\n\tcallHdr := &transport.CallHdr{\n\t\tHost:           ac.cc.authority,\n\t\tMethod:         method,\n\t\tContentSubtype: c.contentSubtype,\n\t}\n\n\t// Set our outgoing compression according to the UseCompressor CallOption, if\n\t// set.  In that case, also find the compressor from the encoding package.\n\t// Otherwise, use the compressor configured by the WithCompressor DialOption,\n\t// if set.\n\tvar cp Compressor\n\tvar comp encoding.Compressor\n\tif ct := c.compressorName; ct != \"\" {\n\t\tcallHdr.SendCompress = ct\n\t\tif ct != encoding.Identity {\n\t\t\tcomp = encoding.GetCompressor(ct)\n\t\t\tif comp == nil {\n\t\t\t\treturn nil, status.Errorf(codes.Internal, \"grpc: Compressor is not installed for requested grpc-encoding %q\", ct)\n\t\t\t}\n\t\t}\n\t} else if ac.cc.dopts.compressorV0 != nil {\n\t\tcallHdr.SendCompress = ac.cc.dopts.compressorV0.Type()\n\t\tcp = ac.cc.dopts.compressorV0\n\t}\n\tif c.creds != nil {\n\t\tcallHdr.Creds = c.creds\n\t}\n\n\t// Use a special addrConnStream to avoid retry.\n\tas := &addrConnStream{\n\t\tcallHdr:          callHdr,\n\t\tac:               ac,\n\t\tctx:              ctx,\n\t\tcancel:           cancel,\n\t\topts:             opts,\n\t\tcallInfo:         c,\n\t\tdesc:             desc,\n\t\tcodec:            c.codec,\n\t\tsendCompressorV0: cp,\n\t\tsendCompressorV1: comp,\n\t\tdecompressorV0:   ac.cc.dopts.dc,\n\t\ttransport:        t,\n\t}\n\n\t// nil stats handler: internal streams like health and ORCA do not support telemetry.\n\ts, err := as.transport.NewStream(as.ctx, as.callHdr, nil)\n\tif err != nil {\n\t\terr = toRPCErr(err)\n\t\treturn nil, err\n\t}\n\tas.transportStream = s\n\tas.parser = parser{r: s, bufferPool: ac.dopts.copts.BufferPool}\n\tac.incrCallsStarted()\n\tif desc != unaryStreamDesc {\n\t\t// Listen on stream context to cleanup when the stream context is\n\t\t// canceled.  Also listen for the addrConn's context in case the\n\t\t// addrConn is closed or reconnects to a different address.  In all\n\t\t// other cases, an error should already be injected into the recv\n\t\t// buffer by the transport, which the client will eventually receive,\n\t\t// and then we will cancel the stream's context in\n\t\t// addrConnStream.finish.\n\t\tgo func() {\n\t\t\tac.mu.Lock()\n\t\t\tacCtx := ac.ctx\n\t\t\tac.mu.Unlock()\n\t\t\tselect {\n\t\t\tcase <-acCtx.Done():\n\t\t\t\tas.finish(status.Error(codes.Canceled, \"grpc: the SubConn is closing\"))\n\t\t\tcase <-ctx.Done():\n\t\t\t\tas.finish(toRPCErr(ctx.Err()))\n\t\t\t}\n\t\t}()\n\t}\n\treturn as, nil\n}\n\ntype addrConnStream struct {\n\ttransportStream  *transport.ClientStream\n\tac               *addrConn\n\tcallHdr          *transport.CallHdr\n\tcancel           context.CancelFunc\n\topts             []CallOption\n\tcallInfo         *callInfo\n\ttransport        transport.ClientTransport\n\tctx              context.Context\n\tsentLast         bool\n\treceivedFirstMsg bool\n\tdesc             *StreamDesc\n\tcodec            baseCodec\n\tsendCompressorV0 Compressor\n\tsendCompressorV1 encoding.Compressor\n\tdecompressorSet  bool\n\tdecompressorV0   Decompressor\n\tdecompressorV1   encoding.Compressor\n\tparser           parser\n\n\t// mu guards finished and is held for the entire finish method.\n\tmu       sync.Mutex\n\tfinished bool\n}\n\nfunc (as *addrConnStream) Header() (metadata.MD, error) {\n\tm, err := as.transportStream.Header()\n\tif err != nil {\n\t\tas.finish(toRPCErr(err))\n\t}\n\treturn m, err\n}\n\nfunc (as *addrConnStream) Trailer() metadata.MD {\n\treturn as.transportStream.Trailer()\n}\n\nfunc (as *addrConnStream) CloseSend() error {\n\tif as.sentLast {\n\t\t// Return a nil error on repeated calls to this method.\n\t\treturn nil\n\t}\n\tas.sentLast = true\n\n\tas.transportStream.Write(nil, nil, &transport.WriteOptions{Last: true})\n\t// Always return nil; io.EOF is the only error that might make sense\n\t// instead, but there is no need to signal the client to call RecvMsg\n\t// as the only use left for the stream after CloseSend is to call\n\t// RecvMsg.  This also matches historical behavior.\n\treturn nil\n}\n\nfunc (as *addrConnStream) Context() context.Context {\n\treturn as.transportStream.Context()\n}\n\nfunc (as *addrConnStream) SendMsg(m any) (err error) {\n\tdefer func() {\n\t\tif err != nil && err != io.EOF {\n\t\t\t// Call finish on the client stream for errors generated by this SendMsg\n\t\t\t// call, as these indicate problems created by this client.  (Transport\n\t\t\t// errors are converted to an io.EOF error in csAttempt.sendMsg; the real\n\t\t\t// error will be returned from RecvMsg eventually in that case, or be\n\t\t\t// retried.)\n\t\t\tas.finish(err)\n\t\t}\n\t}()\n\tif as.sentLast {\n\t\treturn status.Errorf(codes.Internal, \"SendMsg called after CloseSend\")\n\t}\n\tif !as.desc.ClientStreams {\n\t\tas.sentLast = true\n\t}\n\n\t// load hdr, payload, data\n\thdr, data, payload, pf, err := prepareMsg(m, as.codec, as.sendCompressorV0, as.sendCompressorV1, as.ac.dopts.copts.BufferPool)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer func() {\n\t\tdata.Free()\n\t\t// only free payload if compression was made, and therefore it is a different set\n\t\t// of buffers from data.\n\t\tif pf.isCompressed() {\n\t\t\tpayload.Free()\n\t\t}\n\t}()\n\n\t// TODO(dfawley): should we be checking len(data) instead?\n\tif payload.Len() > *as.callInfo.maxSendMessageSize {\n\t\treturn status.Errorf(codes.ResourceExhausted, \"trying to send message larger than max (%d vs. %d)\", payload.Len(), *as.callInfo.maxSendMessageSize)\n\t}\n\n\tif err := as.transportStream.Write(hdr, payload, &transport.WriteOptions{Last: !as.desc.ClientStreams}); err != nil {\n\t\tif !as.desc.ClientStreams {\n\t\t\t// For non-client-streaming RPCs, we return nil instead of EOF on error\n\t\t\t// because the generated code requires it.  finish is not called; RecvMsg()\n\t\t\t// will call it with the stream's status independently.\n\t\t\treturn nil\n\t\t}\n\t\treturn io.EOF\n\t}\n\n\treturn nil\n}\n\nfunc (as *addrConnStream) RecvMsg(m any) (err error) {\n\tdefer func() {\n\t\tif err != nil || !as.desc.ServerStreams {\n\t\t\t// err != nil or non-server-streaming indicates end of stream.\n\t\t\tas.finish(err)\n\t\t}\n\t}()\n\n\tif !as.decompressorSet {\n\t\t// Block until we receive headers containing received message encoding.\n\t\tif ct := as.transportStream.RecvCompress(); ct != \"\" && ct != encoding.Identity {\n\t\t\tif as.decompressorV0 == nil || as.decompressorV0.Type() != ct {\n\t\t\t\t// No configured decompressor, or it does not match the incoming\n\t\t\t\t// message encoding; attempt to find a registered compressor that does.\n\t\t\t\tas.decompressorV0 = nil\n\t\t\t\tas.decompressorV1 = encoding.GetCompressor(ct)\n\t\t\t}\n\t\t\t// Validate that the compression method is acceptable for this call.\n\t\t\tif !acceptedCompressorAllows(as.callInfo.acceptedResponseCompressors, ct) {\n\t\t\t\treturn status.Errorf(codes.Internal, \"grpc: peer compressed the response with %q which is not allowed by AcceptCompressors\", ct)\n\t\t\t}\n\t\t} else {\n\t\t\t// No compression is used; disable our decompressor.\n\t\t\tas.decompressorV0 = nil\n\t\t}\n\t\t// Only initialize this state once per stream.\n\t\tas.decompressorSet = true\n\t}\n\tif err := recv(&as.parser, as.codec, as.transportStream, as.decompressorV0, m, *as.callInfo.maxReceiveMessageSize, nil, as.decompressorV1, false); err != nil {\n\t\tif err == io.EOF {\n\t\t\tif statusErr := as.transportStream.Status().Err(); statusErr != nil {\n\t\t\t\treturn statusErr\n\t\t\t}\n\t\t\t// Received no msg and status OK for non-server streaming rpcs.\n\t\t\tif !as.desc.ServerStreams && !as.receivedFirstMsg {\n\t\t\t\treturn status.Error(codes.Internal, \"cardinality violation: received no response message from non-server-streaming RPC\")\n\t\t\t}\n\t\t\treturn io.EOF // indicates successful end of stream.\n\t\t}\n\t\treturn toRPCErr(err)\n\t}\n\tas.receivedFirstMsg = true\n\n\tif as.desc.ServerStreams {\n\t\t// Subsequent messages should be received by subsequent RecvMsg calls.\n\t\treturn nil\n\t}\n\n\t// Special handling for non-server-stream rpcs.\n\t// This recv expects EOF or errors, so we don't collect inPayload.\n\tif err := recv(&as.parser, as.codec, as.transportStream, as.decompressorV0, m, *as.callInfo.maxReceiveMessageSize, nil, as.decompressorV1, false); err == io.EOF {\n\t\treturn as.transportStream.Status().Err() // non-server streaming Recv returns nil on success\n\t} else if err != nil {\n\t\treturn toRPCErr(err)\n\t}\n\treturn status.Error(codes.Internal, \"cardinality violation: expected <EOF> for non server-streaming RPCs, but received another message\")\n}\n\nfunc (as *addrConnStream) finish(err error) {\n\tas.mu.Lock()\n\tif as.finished {\n\t\tas.mu.Unlock()\n\t\treturn\n\t}\n\tas.finished = true\n\tif err == io.EOF {\n\t\t// Ending a stream with EOF indicates a success.\n\t\terr = nil\n\t}\n\tif as.transportStream != nil {\n\t\tas.transportStream.Close(err)\n\t}\n\n\tif err != nil {\n\t\tas.ac.incrCallsFailed()\n\t} else {\n\t\tas.ac.incrCallsSucceeded()\n\t}\n\tas.cancel()\n\tas.mu.Unlock()\n}\n\n// ServerStream defines the server-side behavior of a streaming RPC.\n//\n// Errors returned from ServerStream methods are compatible with the status\n// package.  However, the status code will often not match the RPC status as\n// seen by the client application, and therefore, should not be relied upon for\n// this purpose.\ntype ServerStream interface {\n\t// SetHeader sets the header metadata. It may be called multiple times.\n\t// When call multiple times, all the provided metadata will be merged.\n\t// All the metadata will be sent out when one of the following happens:\n\t//  - ServerStream.SendHeader() is called;\n\t//  - The first response is sent out;\n\t//  - An RPC status is sent out (error or success).\n\tSetHeader(metadata.MD) error\n\t// SendHeader sends the header metadata.\n\t// The provided md and headers set by SetHeader() will be sent.\n\t// It fails if called multiple times.\n\tSendHeader(metadata.MD) error\n\t// SetTrailer sets the trailer metadata which will be sent with the RPC status.\n\t// When called more than once, all the provided metadata will be merged.\n\tSetTrailer(metadata.MD)\n\t// Context returns the context for this stream.\n\tContext() context.Context\n\t// SendMsg sends a message. On error, SendMsg aborts the stream and the\n\t// error is returned directly.\n\t//\n\t// SendMsg blocks until:\n\t//   - There is sufficient flow control to schedule m with the transport, or\n\t//   - The stream is done, or\n\t//   - The stream breaks.\n\t//\n\t// SendMsg does not wait until the message is received by the client. An\n\t// untimely stream closure may result in lost messages.\n\t//\n\t// It is safe to have a goroutine calling SendMsg and another goroutine\n\t// calling RecvMsg on the same stream at the same time, but it is not safe\n\t// to call SendMsg on the same stream in different goroutines.\n\t//\n\t// It is not safe to modify the message after calling SendMsg. Tracing\n\t// libraries and stats handlers may use the message lazily.\n\tSendMsg(m any) error\n\t// RecvMsg blocks until it receives a message into m or the stream is\n\t// done. It returns io.EOF when the client has performed a CloseSend. On\n\t// any non-EOF error, the stream is aborted and the error contains the\n\t// RPC status.\n\t//\n\t// It is safe to have a goroutine calling SendMsg and another goroutine\n\t// calling RecvMsg on the same stream at the same time, but it is not\n\t// safe to call RecvMsg on the same stream in different goroutines.\n\tRecvMsg(m any) error\n}\n\n// serverStream implements a server side Stream.\ntype serverStream struct {\n\tctx   context.Context\n\ts     *transport.ServerStream\n\tp     parser\n\tcodec baseCodec\n\tdesc  *StreamDesc\n\n\tcompressorV0   Compressor\n\tcompressorV1   encoding.Compressor\n\tdecompressorV0 Decompressor\n\tdecompressorV1 encoding.Compressor\n\n\tsendCompressorName string\n\n\trecvFirstMsg bool // set after the first message is received\n\n\tmaxReceiveMessageSize int\n\tmaxSendMessageSize    int\n\ttrInfo                *traceInfo\n\n\tstatsHandler stats.Handler\n\n\tbinlogs []binarylog.MethodLogger\n\t// serverHeaderBinlogged indicates whether server header has been logged. It\n\t// will happen when one of the following two happens: stream.SendHeader(),\n\t// stream.Send().\n\t//\n\t// It's only checked in send and sendHeader, doesn't need to be\n\t// synchronized.\n\tserverHeaderBinlogged bool\n\n\tmu sync.Mutex // protects trInfo.tr after the service handler runs.\n}\n\nfunc (ss *serverStream) Context() context.Context {\n\treturn ss.ctx\n}\n\nfunc (ss *serverStream) SetHeader(md metadata.MD) error {\n\tif md.Len() == 0 {\n\t\treturn nil\n\t}\n\terr := imetadata.Validate(md)\n\tif err != nil {\n\t\treturn status.Error(codes.Internal, err.Error())\n\t}\n\treturn ss.s.SetHeader(md)\n}\n\nfunc (ss *serverStream) SendHeader(md metadata.MD) error {\n\terr := imetadata.Validate(md)\n\tif err != nil {\n\t\treturn status.Error(codes.Internal, err.Error())\n\t}\n\n\terr = ss.s.SendHeader(md)\n\tif len(ss.binlogs) != 0 && !ss.serverHeaderBinlogged {\n\t\th, _ := ss.s.Header()\n\t\tsh := &binarylog.ServerHeader{\n\t\t\tHeader: h,\n\t\t}\n\t\tss.serverHeaderBinlogged = true\n\t\tfor _, binlog := range ss.binlogs {\n\t\t\tbinlog.Log(ss.ctx, sh)\n\t\t}\n\t}\n\treturn err\n}\n\nfunc (ss *serverStream) SetTrailer(md metadata.MD) {\n\tif md.Len() == 0 {\n\t\treturn\n\t}\n\tif err := imetadata.Validate(md); err != nil {\n\t\tlogger.Errorf(\"stream: failed to validate md when setting trailer, err: %v\", err)\n\t}\n\tss.s.SetTrailer(md)\n}\n\nfunc (ss *serverStream) SendMsg(m any) (err error) {\n\tdefer func() {\n\t\tif ss.trInfo != nil {\n\t\t\tss.mu.Lock()\n\t\t\tif ss.trInfo.tr != nil {\n\t\t\t\tif err == nil {\n\t\t\t\t\tss.trInfo.tr.LazyLog(&payload{sent: true, msg: m}, true)\n\t\t\t\t} else {\n\t\t\t\t\tss.trInfo.tr.LazyLog(&fmtStringer{\"%v\", []any{err}}, true)\n\t\t\t\t\tss.trInfo.tr.SetError()\n\t\t\t\t}\n\t\t\t}\n\t\t\tss.mu.Unlock()\n\t\t}\n\t\tif err != nil && err != io.EOF {\n\t\t\tst, _ := status.FromError(toRPCErr(err))\n\t\t\tss.s.WriteStatus(st)\n\t\t\t// Non-user specified status was sent out. This should be an error\n\t\t\t// case (as a server side Cancel maybe).\n\t\t\t//\n\t\t\t// This is not handled specifically now. User will return a final\n\t\t\t// status from the service handler, we will log that error instead.\n\t\t\t// This behavior is similar to an interceptor.\n\t\t}\n\t}()\n\n\t// Server handler could have set new compressor by calling SetSendCompressor.\n\t// In case it is set, we need to use it for compressing outbound message.\n\tif sendCompressorsName := ss.s.SendCompress(); sendCompressorsName != ss.sendCompressorName {\n\t\tss.compressorV1 = encoding.GetCompressor(sendCompressorsName)\n\t\tss.sendCompressorName = sendCompressorsName\n\t}\n\n\t// load hdr, payload, data\n\thdr, data, payload, pf, err := prepareMsg(m, ss.codec, ss.compressorV0, ss.compressorV1, ss.p.bufferPool)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer func() {\n\t\tdata.Free()\n\t\t// only free payload if compression was made, and therefore it is a different set\n\t\t// of buffers from data.\n\t\tif pf.isCompressed() {\n\t\t\tpayload.Free()\n\t\t}\n\t}()\n\n\tdataLen := data.Len()\n\tpayloadLen := payload.Len()\n\n\t// TODO(dfawley): should we be checking len(data) instead?\n\tif payloadLen > ss.maxSendMessageSize {\n\t\treturn status.Errorf(codes.ResourceExhausted, \"trying to send message larger than max (%d vs. %d)\", payloadLen, ss.maxSendMessageSize)\n\t}\n\tif err := ss.s.Write(hdr, payload, &transport.WriteOptions{Last: false}); err != nil {\n\t\treturn toRPCErr(err)\n\t}\n\n\tif len(ss.binlogs) != 0 {\n\t\tif !ss.serverHeaderBinlogged {\n\t\t\th, _ := ss.s.Header()\n\t\t\tsh := &binarylog.ServerHeader{\n\t\t\t\tHeader: h,\n\t\t\t}\n\t\t\tss.serverHeaderBinlogged = true\n\t\t\tfor _, binlog := range ss.binlogs {\n\t\t\t\tbinlog.Log(ss.ctx, sh)\n\t\t\t}\n\t\t}\n\t\tsm := &binarylog.ServerMessage{\n\t\t\tMessage: data.Materialize(),\n\t\t}\n\t\tfor _, binlog := range ss.binlogs {\n\t\t\tbinlog.Log(ss.ctx, sm)\n\t\t}\n\t}\n\tif ss.statsHandler != nil {\n\t\tss.statsHandler.HandleRPC(ss.s.Context(), outPayload(false, m, dataLen, payloadLen, time.Now()))\n\t}\n\treturn nil\n}\n\nfunc (ss *serverStream) RecvMsg(m any) (err error) {\n\tdefer func() {\n\t\tif ss.trInfo != nil {\n\t\t\tss.mu.Lock()\n\t\t\tif ss.trInfo.tr != nil {\n\t\t\t\tif err == nil {\n\t\t\t\t\tss.trInfo.tr.LazyLog(&payload{sent: false, msg: m}, true)\n\t\t\t\t} else if err != io.EOF {\n\t\t\t\t\tss.trInfo.tr.LazyLog(&fmtStringer{\"%v\", []any{err}}, true)\n\t\t\t\t\tss.trInfo.tr.SetError()\n\t\t\t\t}\n\t\t\t}\n\t\t\tss.mu.Unlock()\n\t\t}\n\t\tif err != nil && err != io.EOF {\n\t\t\tst, _ := status.FromError(toRPCErr(err))\n\t\t\tss.s.WriteStatus(st)\n\t\t\t// Non-user specified status was sent out. This should be an error\n\t\t\t// case (as a server side Cancel maybe).\n\t\t\t//\n\t\t\t// This is not handled specifically now. User will return a final\n\t\t\t// status from the service handler, we will log that error instead.\n\t\t\t// This behavior is similar to an interceptor.\n\t\t}\n\t}()\n\tvar payInfo *payloadInfo\n\tif ss.statsHandler != nil || len(ss.binlogs) != 0 {\n\t\tpayInfo = &payloadInfo{}\n\t\tdefer payInfo.free()\n\t}\n\tif err := recv(&ss.p, ss.codec, ss.s, ss.decompressorV0, m, ss.maxReceiveMessageSize, payInfo, ss.decompressorV1, true); err != nil {\n\t\tif err == io.EOF {\n\t\t\tif len(ss.binlogs) != 0 {\n\t\t\t\tchc := &binarylog.ClientHalfClose{}\n\t\t\t\tfor _, binlog := range ss.binlogs {\n\t\t\t\t\tbinlog.Log(ss.ctx, chc)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Received no request msg for non-client streaming rpcs.\n\t\t\tif !ss.desc.ClientStreams && !ss.recvFirstMsg {\n\t\t\t\treturn status.Error(codes.Internal, \"cardinality violation: received no request message from non-client-streaming RPC\")\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t\tif err == io.ErrUnexpectedEOF {\n\t\t\terr = status.Error(codes.Internal, io.ErrUnexpectedEOF.Error())\n\t\t}\n\t\treturn toRPCErr(err)\n\t}\n\tss.recvFirstMsg = true\n\tif ss.statsHandler != nil {\n\t\tss.statsHandler.HandleRPC(ss.s.Context(), &stats.InPayload{\n\t\t\tRecvTime:         time.Now(),\n\t\t\tPayload:          m,\n\t\t\tLength:           payInfo.uncompressedBytes.Len(),\n\t\t\tWireLength:       payInfo.compressedLength + headerLen,\n\t\t\tCompressedLength: payInfo.compressedLength,\n\t\t})\n\t}\n\tif len(ss.binlogs) != 0 {\n\t\tcm := &binarylog.ClientMessage{\n\t\t\tMessage: payInfo.uncompressedBytes.Materialize(),\n\t\t}\n\t\tfor _, binlog := range ss.binlogs {\n\t\t\tbinlog.Log(ss.ctx, cm)\n\t\t}\n\t}\n\n\tif ss.desc.ClientStreams {\n\t\t// Subsequent messages should be received by subsequent RecvMsg calls.\n\t\treturn nil\n\t}\n\t// Special handling for non-client-stream rpcs.\n\t// This recv expects EOF or errors, so we don't collect inPayload.\n\tif err := recv(&ss.p, ss.codec, ss.s, ss.decompressorV0, m, ss.maxReceiveMessageSize, nil, ss.decompressorV1, true); err == io.EOF {\n\t\treturn nil\n\t} else if err != nil {\n\t\treturn err\n\t}\n\treturn status.Error(codes.Internal, \"cardinality violation: received multiple request messages for non-client-streaming RPC\")\n}\n\n// MethodFromServerStream returns the method string for the input stream.\n// The returned string is in the format of \"/service/method\".\nfunc MethodFromServerStream(stream ServerStream) (string, bool) {\n\treturn Method(stream.Context())\n}\n\n// prepareMsg returns the hdr, payload and data using the compressors passed or\n// using the passed preparedmsg. The returned boolean indicates whether\n// compression was made and therefore whether the payload needs to be freed in\n// addition to the returned data. Freeing the payload if the returned boolean is\n// false can lead to undefined behavior.\nfunc prepareMsg(m any, codec baseCodec, cp Compressor, comp encoding.Compressor, pool mem.BufferPool) (hdr []byte, data, payload mem.BufferSlice, pf payloadFormat, err error) {\n\tif preparedMsg, ok := m.(*PreparedMsg); ok {\n\t\treturn preparedMsg.hdr, preparedMsg.encodedData, preparedMsg.payload, preparedMsg.pf, nil\n\t}\n\t// The input interface is not a prepared msg.\n\t// Marshal and Compress the data at this point\n\tdata, err = encode(codec, m)\n\tif err != nil {\n\t\treturn nil, nil, nil, 0, err\n\t}\n\tcompData, pf, err := compress(data, cp, comp, pool)\n\tif err != nil {\n\t\tdata.Free()\n\t\treturn nil, nil, nil, 0, err\n\t}\n\thdr, payload = msgHeader(data, compData, pf)\n\treturn hdr, data, payload, pf, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/stream_interfaces.go",
    "content": "/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\n// ServerStreamingClient represents the client side of a server-streaming (one\n// request, many responses) RPC. It is generic over the type of the response\n// message. It is used in generated code.\ntype ServerStreamingClient[Res any] interface {\n\t// Recv receives the next response message from the server. The client may\n\t// repeatedly call Recv to read messages from the response stream.  If\n\t// io.EOF is returned, the stream has terminated with an OK status.  Any\n\t// other error is compatible with the status package and indicates the\n\t// RPC's status code and message.\n\tRecv() (*Res, error)\n\n\t// ClientStream is embedded to provide Context, Header, and Trailer\n\t// functionality.  No other methods in the ClientStream should be called\n\t// directly.\n\tClientStream\n}\n\n// ServerStreamingServer represents the server side of a server-streaming (one\n// request, many responses) RPC. It is generic over the type of the response\n// message. It is used in generated code.\n//\n// To terminate the response stream, return from the handler method and return\n// an error from the status package, or use nil to indicate an OK status code.\ntype ServerStreamingServer[Res any] interface {\n\t// Send sends a response message to the client.  The server handler may\n\t// call Send multiple times to send multiple messages to the client.  An\n\t// error is returned if the stream was terminated unexpectedly, and the\n\t// handler method should return, as the stream is no longer usable.\n\tSend(*Res) error\n\n\t// ServerStream is embedded to provide Context, SetHeader, SendHeader, and\n\t// SetTrailer functionality.  No other methods in the ServerStream should\n\t// be called directly.\n\tServerStream\n}\n\n// ClientStreamingClient represents the client side of a client-streaming (many\n// requests, one response) RPC. It is generic over both the type of the request\n// message stream and the type of the unary response message. It is used in\n// generated code.\ntype ClientStreamingClient[Req any, Res any] interface {\n\t// Send sends a request message to the server.  The client may call Send\n\t// multiple times to send multiple messages to the server.  On error, Send\n\t// aborts the stream.  If the error was generated by the client, the status\n\t// is returned directly.  Otherwise, io.EOF is returned, and the status of\n\t// the stream may be discovered using CloseAndRecv().\n\tSend(*Req) error\n\n\t// CloseAndRecv closes the request stream and waits for the server's\n\t// response.  This method must be called once and only once after sending\n\t// all request messages.  Any error returned is implemented by the status\n\t// package.\n\tCloseAndRecv() (*Res, error)\n\n\t// ClientStream is embedded to provide Context, Header, and Trailer\n\t// functionality.  No other methods in the ClientStream should be called\n\t// directly.\n\tClientStream\n}\n\n// ClientStreamingServer represents the server side of a client-streaming (many\n// requests, one response) RPC. It is generic over both the type of the request\n// message stream and the type of the unary response message. It is used in\n// generated code.\n//\n// To terminate the RPC, call SendAndClose and return nil from the method\n// handler or do not call SendAndClose and return an error from the status\n// package.\ntype ClientStreamingServer[Req any, Res any] interface {\n\t// Recv receives the next request message from the client.  The server may\n\t// repeatedly call Recv to read messages from the request stream.  If\n\t// io.EOF is returned, it indicates the client called CloseAndRecv on its\n\t// ClientStreamingClient.  Any other error indicates the stream was\n\t// terminated unexpectedly, and the handler method should return, as the\n\t// stream is no longer usable.\n\tRecv() (*Req, error)\n\n\t// SendAndClose sends a single response message to the client and closes\n\t// the stream.  This method must be called once and only once after all\n\t// request messages have been processed.  Recv should not be called after\n\t// calling SendAndClose.\n\tSendAndClose(*Res) error\n\n\t// ServerStream is embedded to provide Context, SetHeader, SendHeader, and\n\t// SetTrailer functionality.  No other methods in the ServerStream should\n\t// be called directly.\n\tServerStream\n}\n\n// BidiStreamingClient represents the client side of a bidirectional-streaming\n// (many requests, many responses) RPC. It is generic over both the type of the\n// request message stream and the type of the response message stream. It is\n// used in generated code.\ntype BidiStreamingClient[Req any, Res any] interface {\n\t// Send sends a request message to the server.  The client may call Send\n\t// multiple times to send multiple messages to the server.  On error, Send\n\t// aborts the stream.  If the error was generated by the client, the status\n\t// is returned directly.  Otherwise, io.EOF is returned, and the status of\n\t// the stream may be discovered using Recv().\n\tSend(*Req) error\n\n\t// Recv receives the next response message from the server. The client may\n\t// repeatedly call Recv to read messages from the response stream.  If\n\t// io.EOF is returned, the stream has terminated with an OK status.  Any\n\t// other error is compatible with the status package and indicates the\n\t// RPC's status code and message.\n\tRecv() (*Res, error)\n\n\t// ClientStream is embedded to provide Context, Header, Trailer, and\n\t// CloseSend functionality.  No other methods in the ClientStream should be\n\t// called directly.\n\tClientStream\n}\n\n// BidiStreamingServer represents the server side of a bidirectional-streaming\n// (many requests, many responses) RPC. It is generic over both the type of the\n// request message stream and the type of the response message stream. It is\n// used in generated code.\n//\n// To terminate the stream, return from the handler method and return\n// an error from the status package, or use nil to indicate an OK status code.\ntype BidiStreamingServer[Req any, Res any] interface {\n\t// Recv receives the next request message from the client.  The server may\n\t// repeatedly call Recv to read messages from the request stream.  If\n\t// io.EOF is returned, it indicates the client called CloseSend on its\n\t// BidiStreamingClient.  Any other error indicates the stream was\n\t// terminated unexpectedly, and the handler method should return, as the\n\t// stream is no longer usable.\n\tRecv() (*Req, error)\n\n\t// Send sends a response message to the client.  The server handler may\n\t// call Send multiple times to send multiple messages to the client.  An\n\t// error is returned if the stream was terminated unexpectedly, and the\n\t// handler method should return, as the stream is no longer usable.\n\tSend(*Res) error\n\n\t// ServerStream is embedded to provide Context, SetHeader, SendHeader, and\n\t// SetTrailer functionality.  No other methods in the ServerStream should\n\t// be called directly.\n\tServerStream\n}\n\n// GenericClientStream implements the ServerStreamingClient, ClientStreamingClient,\n// and BidiStreamingClient interfaces. It is used in generated code.\ntype GenericClientStream[Req any, Res any] struct {\n\tClientStream\n}\n\nvar _ ServerStreamingClient[string] = (*GenericClientStream[int, string])(nil)\nvar _ ClientStreamingClient[int, string] = (*GenericClientStream[int, string])(nil)\nvar _ BidiStreamingClient[int, string] = (*GenericClientStream[int, string])(nil)\n\n// Send pushes one message into the stream of requests to be consumed by the\n// server. The type of message which can be sent is determined by the Req type\n// parameter of the GenericClientStream receiver.\nfunc (x *GenericClientStream[Req, Res]) Send(m *Req) error {\n\treturn x.ClientStream.SendMsg(m)\n}\n\n// Recv reads one message from the stream of responses generated by the server.\n// The type of the message returned is determined by the Res type parameter\n// of the GenericClientStream receiver.\nfunc (x *GenericClientStream[Req, Res]) Recv() (*Res, error) {\n\tm := new(Res)\n\tif err := x.ClientStream.RecvMsg(m); err != nil {\n\t\treturn nil, err\n\t}\n\treturn m, nil\n}\n\n// CloseAndRecv closes the sending side of the stream, then receives the unary\n// response from the server. The type of message which it returns is determined\n// by the Res type parameter of the GenericClientStream receiver.\nfunc (x *GenericClientStream[Req, Res]) CloseAndRecv() (*Res, error) {\n\tif err := x.ClientStream.CloseSend(); err != nil {\n\t\treturn nil, err\n\t}\n\tm := new(Res)\n\tif err := x.ClientStream.RecvMsg(m); err != nil {\n\t\treturn nil, err\n\t}\n\treturn m, nil\n}\n\n// GenericServerStream implements the ServerStreamingServer, ClientStreamingServer,\n// and BidiStreamingServer interfaces. It is used in generated code.\ntype GenericServerStream[Req any, Res any] struct {\n\tServerStream\n}\n\nvar _ ServerStreamingServer[string] = (*GenericServerStream[int, string])(nil)\nvar _ ClientStreamingServer[int, string] = (*GenericServerStream[int, string])(nil)\nvar _ BidiStreamingServer[int, string] = (*GenericServerStream[int, string])(nil)\n\n// Send pushes one message into the stream of responses to be consumed by the\n// client. The type of message which can be sent is determined by the Res\n// type parameter of the serverStreamServer receiver.\nfunc (x *GenericServerStream[Req, Res]) Send(m *Res) error {\n\treturn x.ServerStream.SendMsg(m)\n}\n\n// SendAndClose pushes the unary response to the client. The type of message\n// which can be sent is determined by the Res type parameter of the\n// clientStreamServer receiver.\nfunc (x *GenericServerStream[Req, Res]) SendAndClose(m *Res) error {\n\treturn x.ServerStream.SendMsg(m)\n}\n\n// Recv reads one message from the stream of requests generated by the client.\n// The type of the message returned is determined by the Req type parameter\n// of the clientStreamServer receiver.\nfunc (x *GenericServerStream[Req, Res]) Recv() (*Req, error) {\n\tm := new(Req)\n\tif err := x.ServerStream.RecvMsg(m); err != nil {\n\t\treturn nil, err\n\t}\n\treturn m, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/tap/tap.go",
    "content": "/*\n *\n * Copyright 2016 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package tap defines the function handles which are executed on the transport\n// layer of gRPC-Go and related information.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\npackage tap\n\nimport (\n\t\"context\"\n\n\t\"google.golang.org/grpc/metadata\"\n)\n\n// Info defines the relevant information needed by the handles.\ntype Info struct {\n\t// FullMethodName is the string of grpc method (in the format of\n\t// /package.service/method).\n\tFullMethodName string\n\n\t// Header contains the header metadata received.\n\tHeader metadata.MD\n\n\t// TODO: More to be added.\n}\n\n// ServerInHandle defines the function which runs before a new stream is\n// created on the server side. If it returns a non-nil error, the stream will\n// not be created and an error will be returned to the client.  If the error\n// returned is a status error, that status code and message will be used,\n// otherwise PermissionDenied will be the code and err.Error() will be the\n// message.\n//\n// It's intended to be used in situations where you don't want to waste the\n// resources to accept the new stream (e.g. rate-limiting). For other general\n// usages, please use interceptors.\n//\n// Note that it is executed in the per-connection I/O goroutine(s) instead of\n// per-RPC goroutine. Therefore, users should NOT have any\n// blocking/time-consuming work in this handle. Otherwise all the RPCs would\n// slow down. Also, for the same reason, this handle won't be called\n// concurrently by gRPC.\ntype ServerInHandle func(ctx context.Context, info *Info) (context.Context, error)\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/trace.go",
    "content": "/*\n *\n * Copyright 2015 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\n// EnableTracing controls whether to trace RPCs using the golang.org/x/net/trace package.\n// This should only be set before any RPCs are sent or received by this program.\nvar EnableTracing bool\n\n// methodFamily returns the trace family for the given method.\n// It turns \"/pkg.Service/GetFoo\" into \"pkg.Service\".\nfunc methodFamily(m string) string {\n\tm = strings.TrimPrefix(m, \"/\") // remove leading slash\n\tif i := strings.Index(m, \"/\"); i >= 0 {\n\t\tm = m[:i] // remove everything from second slash\n\t}\n\treturn m\n}\n\n// traceEventLog mirrors golang.org/x/net/trace.EventLog.\n//\n// It exists in order to avoid importing x/net/trace on grpcnotrace builds.\ntype traceEventLog interface {\n\tPrintf(format string, a ...any)\n\tErrorf(format string, a ...any)\n\tFinish()\n}\n\n// traceLog mirrors golang.org/x/net/trace.Trace.\n//\n// It exists in order to avoid importing x/net/trace on grpcnotrace builds.\ntype traceLog interface {\n\tLazyLog(x fmt.Stringer, sensitive bool)\n\tLazyPrintf(format string, a ...any)\n\tSetError()\n\tSetRecycler(f func(any))\n\tSetTraceInfo(traceID, spanID uint64)\n\tSetMaxEvents(m int)\n\tFinish()\n}\n\n// traceInfo contains tracing information for an RPC.\ntype traceInfo struct {\n\ttr        traceLog\n\tfirstLine firstLine\n}\n\n// firstLine is the first line of an RPC trace.\n// It may be mutated after construction; remoteAddr specifically may change\n// during client-side use.\ntype firstLine struct {\n\tmu         sync.Mutex\n\tclient     bool // whether this is a client (outgoing) RPC\n\tremoteAddr net.Addr\n\tdeadline   time.Duration // may be zero\n}\n\nfunc (f *firstLine) SetRemoteAddr(addr net.Addr) {\n\tf.mu.Lock()\n\tf.remoteAddr = addr\n\tf.mu.Unlock()\n}\n\nfunc (f *firstLine) String() string {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\tvar line bytes.Buffer\n\tio.WriteString(&line, \"RPC: \")\n\tif f.client {\n\t\tio.WriteString(&line, \"to\")\n\t} else {\n\t\tio.WriteString(&line, \"from\")\n\t}\n\tfmt.Fprintf(&line, \" %v deadline:\", f.remoteAddr)\n\tif f.deadline != 0 {\n\t\tfmt.Fprint(&line, f.deadline)\n\t} else {\n\t\tio.WriteString(&line, \"none\")\n\t}\n\treturn line.String()\n}\n\nconst truncateSize = 100\n\nfunc truncate(x string, l int) string {\n\tif l > len(x) {\n\t\treturn x\n\t}\n\treturn x[:l]\n}\n\n// payload represents an RPC request or response payload.\ntype payload struct {\n\tsent bool // whether this is an outgoing payload\n\tmsg  any  // e.g. a proto.Message\n\t// TODO(dsymonds): add stringifying info to codec, and limit how much we hold here?\n}\n\nfunc (p payload) String() string {\n\tif p.sent {\n\t\treturn truncate(fmt.Sprintf(\"sent: %v\", p.msg), truncateSize)\n\t}\n\treturn truncate(fmt.Sprintf(\"recv: %v\", p.msg), truncateSize)\n}\n\ntype fmtStringer struct {\n\tformat string\n\ta      []any\n}\n\nfunc (f *fmtStringer) String() string {\n\treturn fmt.Sprintf(f.format, f.a...)\n}\n\ntype stringer string\n\nfunc (s stringer) String() string { return string(s) }\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/trace_notrace.go",
    "content": "//go:build grpcnotrace\n\n/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\n// grpcnotrace can be used to avoid importing golang.org/x/net/trace, which in\n// turn enables binaries using gRPC-Go for dead code elimination, which can\n// yield 10-15% improvements in binary size when tracing is not needed.\n\nimport (\n\t\"context\"\n\t\"fmt\"\n)\n\ntype notrace struct{}\n\nfunc (notrace) LazyLog(x fmt.Stringer, sensitive bool) {}\nfunc (notrace) LazyPrintf(format string, a ...any)     {}\nfunc (notrace) SetError()                              {}\nfunc (notrace) SetRecycler(f func(any))                {}\nfunc (notrace) SetTraceInfo(traceID, spanID uint64)    {}\nfunc (notrace) SetMaxEvents(m int)                     {}\nfunc (notrace) Finish()                                {}\n\nfunc newTrace(family, title string) traceLog {\n\treturn notrace{}\n}\n\nfunc newTraceContext(ctx context.Context, tr traceLog) context.Context {\n\treturn ctx\n}\n\nfunc newTraceEventLog(family, title string) traceEventLog {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/trace_withtrace.go",
    "content": "//go:build !grpcnotrace\n\n/*\n *\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\n\tt \"golang.org/x/net/trace\"\n)\n\nfunc newTrace(family, title string) traceLog {\n\treturn t.New(family, title)\n}\n\nfunc newTraceContext(ctx context.Context, tr traceLog) context.Context {\n\treturn t.NewContext(ctx, tr)\n}\n\nfunc newTraceEventLog(family, title string) traceEventLog {\n\treturn t.NewEventLog(family, title)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/version.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\n// Version is the current grpc version.\nconst Version = \"1.81.0\"\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/LICENSE",
    "content": "Copyright (c) 2018 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo/init.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage internal_gengo\n\nimport (\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/compiler/protogen\"\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\ntype fileInfo struct {\n\t*protogen.File\n\n\tallEnums      []*enumInfo\n\tallMessages   []*messageInfo\n\tallExtensions []*extensionInfo\n\n\tallEnumsByPtr         map[*enumInfo]int    // value is index into allEnums\n\tallMessagesByPtr      map[*messageInfo]int // value is index into allMessages\n\tallMessageFieldsByPtr map[*messageInfo]*structFields\n\n\t// needRawDesc specifies whether the generator should emit logic to provide\n\t// the legacy raw descriptor in GZIP'd form.\n\t// This is updated by enum and message generation logic as necessary,\n\t// and checked at the end of file generation.\n\tneedRawDesc bool\n}\n\ntype structFields struct {\n\tcount      int\n\tunexported map[int]string\n}\n\nfunc (sf *structFields) append(name string) {\n\tif r, _ := utf8.DecodeRuneInString(name); !unicode.IsUpper(r) {\n\t\tif sf.unexported == nil {\n\t\t\tsf.unexported = make(map[int]string)\n\t\t}\n\t\tsf.unexported[sf.count] = name\n\t}\n\tsf.count++\n}\n\nfunc newFileInfo(file *protogen.File) *fileInfo {\n\tf := &fileInfo{File: file}\n\n\t// Collect all enums, messages, and extensions in \"flattened ordering\".\n\t// See filetype.TypeBuilder.\n\tvar walkMessages func([]*protogen.Message, func(*protogen.Message))\n\twalkMessages = func(messages []*protogen.Message, f func(*protogen.Message)) {\n\t\tfor _, m := range messages {\n\t\t\tf(m)\n\t\t\twalkMessages(m.Messages, f)\n\t\t}\n\t}\n\tinitEnumInfos := func(enums []*protogen.Enum) {\n\t\tfor _, enum := range enums {\n\t\t\tf.allEnums = append(f.allEnums, newEnumInfo(f, enum))\n\t\t}\n\t}\n\tinitMessageInfos := func(messages []*protogen.Message) {\n\t\tfor _, message := range messages {\n\t\t\tf.allMessages = append(f.allMessages, newMessageInfo(f, message))\n\t\t}\n\t}\n\tinitExtensionInfos := func(extensions []*protogen.Extension) {\n\t\tfor _, extension := range extensions {\n\t\t\tf.allExtensions = append(f.allExtensions, newExtensionInfo(f, extension))\n\t\t}\n\t}\n\tinitEnumInfos(f.Enums)\n\tinitMessageInfos(f.Messages)\n\tinitExtensionInfos(f.Extensions)\n\twalkMessages(f.Messages, func(m *protogen.Message) {\n\t\tinitEnumInfos(m.Enums)\n\t\tinitMessageInfos(m.Messages)\n\t\tinitExtensionInfos(m.Extensions)\n\t})\n\n\t// Derive a reverse mapping of enum and message pointers to their index\n\t// in allEnums and allMessages.\n\tif len(f.allEnums) > 0 {\n\t\tf.allEnumsByPtr = make(map[*enumInfo]int)\n\t\tfor i, e := range f.allEnums {\n\t\t\tf.allEnumsByPtr[e] = i\n\t\t}\n\t}\n\tif len(f.allMessages) > 0 {\n\t\tf.allMessagesByPtr = make(map[*messageInfo]int)\n\t\tf.allMessageFieldsByPtr = make(map[*messageInfo]*structFields)\n\t\tfor i, m := range f.allMessages {\n\t\t\tf.allMessagesByPtr[m] = i\n\t\t\tf.allMessageFieldsByPtr[m] = new(structFields)\n\t\t}\n\t}\n\n\treturn f\n}\n\ntype enumInfo struct {\n\t*protogen.Enum\n\n\tgenJSONMethod    bool\n\tgenRawDescMethod bool\n}\n\nfunc newEnumInfo(f *fileInfo, enum *protogen.Enum) *enumInfo {\n\te := &enumInfo{Enum: enum}\n\te.genJSONMethod = true\n\te.genRawDescMethod = true\n\topaqueNewEnumInfoHook(f, e)\n\treturn e\n}\n\ntype messageInfo struct {\n\t*protogen.Message\n\n\tgenRawDescMethod  bool\n\tgenExtRangeMethod bool\n\n\tisTracked   bool\n\tnoInterface bool\n}\n\nfunc newMessageInfo(f *fileInfo, message *protogen.Message) *messageInfo {\n\tm := &messageInfo{Message: message}\n\tm.genRawDescMethod = true\n\tm.genExtRangeMethod = true\n\tm.isTracked = isTrackedMessage(m)\n\topaqueNewMessageInfoHook(f, m)\n\treturn m\n}\n\n// isTrackedMessage reports whether field tracking is enabled on the message.\nfunc isTrackedMessage(m *messageInfo) (tracked bool) {\n\tconst trackFieldUse_fieldNumber = 37383685\n\n\t// Decode the option from unknown fields to avoid a dependency on the\n\t// annotation proto from protoc-gen-go.\n\tb := m.Desc.Options().(*descriptorpb.MessageOptions).ProtoReflect().GetUnknown()\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tif num == trackFieldUse_fieldNumber && typ == protowire.VarintType {\n\t\t\tv, _ := protowire.ConsumeVarint(b)\n\t\t\ttracked = protowire.DecodeBool(v)\n\t\t}\n\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\tb = b[m:]\n\t}\n\treturn tracked\n}\n\ntype extensionInfo struct {\n\t*protogen.Extension\n}\n\nfunc newExtensionInfo(f *fileInfo, extension *protogen.Extension) *extensionInfo {\n\tx := &extensionInfo{Extension: extension}\n\treturn x\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo/init_opaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage internal_gengo\n\nimport \"google.golang.org/protobuf/types/gofeaturespb\"\n\nfunc (m *messageInfo) isOpen() bool {\n\treturn m.Message.APILevel == gofeaturespb.GoFeatures_API_OPEN\n}\n\nfunc (m *messageInfo) isHybrid() bool {\n\treturn m.Message.APILevel == gofeaturespb.GoFeatures_API_HYBRID\n}\n\nfunc (m *messageInfo) isOpaque() bool {\n\treturn m.Message.APILevel == gofeaturespb.GoFeatures_API_OPAQUE\n}\n\nfunc opaqueNewEnumInfoHook(f *fileInfo, e *enumInfo) {\n\tif f.File.APILevel != gofeaturespb.GoFeatures_API_OPEN {\n\t\te.genJSONMethod = false\n\t\te.genRawDescMethod = false\n\t}\n}\n\nfunc opaqueNewMessageInfoHook(f *fileInfo, m *messageInfo) {\n\tif !m.isOpen() {\n\t\tm.genRawDescMethod = false\n\t\tm.genExtRangeMethod = false\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo/main.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package internal_gengo is internal to the protobuf module.\npackage internal_gengo\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"math\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/compiler/protogen\"\n\t\"google.golang.org/protobuf/internal/editionssupport\"\n\t\"google.golang.org/protobuf/internal/encoding/tag\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/version\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoimpl\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n\t\"google.golang.org/protobuf/types/gofeaturespb\"\n\t\"google.golang.org/protobuf/types/pluginpb\"\n)\n\n// SupportedFeatures reports the set of supported protobuf language features.\nvar SupportedFeatures = uint64(pluginpb.CodeGeneratorResponse_FEATURE_PROTO3_OPTIONAL | pluginpb.CodeGeneratorResponse_FEATURE_SUPPORTS_EDITIONS)\n\nvar SupportedEditionsMinimum = editionssupport.Minimum\nvar SupportedEditionsMaximum = editionssupport.Maximum\n\n// GenerateVersionMarkers specifies whether to generate version markers.\nvar GenerateVersionMarkers = true\n\n// Standard library dependencies.\nconst (\n\tbase64Package  = protogen.GoImportPath(\"encoding/base64\")\n\tjsonPackage    = protogen.GoImportPath(\"encoding/json\")\n\tmathPackage    = protogen.GoImportPath(\"math\")\n\treflectPackage = protogen.GoImportPath(\"reflect\")\n\tsortPackage    = protogen.GoImportPath(\"sort\")\n\tstringsPackage = protogen.GoImportPath(\"strings\")\n\tsyncPackage    = protogen.GoImportPath(\"sync\")\n\ttimePackage    = protogen.GoImportPath(\"time\")\n\tutf8Package    = protogen.GoImportPath(\"unicode/utf8\")\n\tunsafePackage  = protogen.GoImportPath(\"unsafe\")\n)\n\n// Protobuf library dependencies.\n//\n// These are declared as an interface type so that they can be more easily\n// patched to support unique build environments that impose restrictions\n// on the dependencies of generated source code.\nvar (\n\tprotoPackage         goImportPath = protogen.GoImportPath(\"google.golang.org/protobuf/proto\")\n\tprotoifacePackage    goImportPath = protogen.GoImportPath(\"google.golang.org/protobuf/runtime/protoiface\")\n\tprotoimplPackage     goImportPath = protogen.GoImportPath(\"google.golang.org/protobuf/runtime/protoimpl\")\n\tprotojsonPackage     goImportPath = protogen.GoImportPath(\"google.golang.org/protobuf/encoding/protojson\")\n\tprotoreflectPackage  goImportPath = protogen.GoImportPath(\"google.golang.org/protobuf/reflect/protoreflect\")\n\tprotoregistryPackage goImportPath = protogen.GoImportPath(\"google.golang.org/protobuf/reflect/protoregistry\")\n)\n\ntype goImportPath interface {\n\tString() string\n\tIdent(string) protogen.GoIdent\n}\n\nfunc setToOpaque(msg *protogen.Message) {\n\tmsg.APILevel = gofeaturespb.GoFeatures_API_OPAQUE\n\tfor _, nested := range msg.Messages {\n\t\tnested.APILevel = gofeaturespb.GoFeatures_API_OPAQUE\n\t\tsetToOpaque(nested)\n\t}\n}\n\n// GenerateFile generates the contents of a .pb.go file.\n//\n// With the Hybrid API, multiple files are generated (_protoopaque.pb.go variant),\n// but only the first file (regular, not a variant) is returned.\nfunc GenerateFile(gen *protogen.Plugin, file *protogen.File) *protogen.GeneratedFile {\n\treturn generateFiles(gen, file)[0]\n}\n\nfunc generateFiles(gen *protogen.Plugin, file *protogen.File) []*protogen.GeneratedFile {\n\tf := newFileInfo(file)\n\tgenerated := []*protogen.GeneratedFile{\n\t\tgenerateOneFile(gen, file, f, \"\"),\n\t}\n\tif f.APILevel == gofeaturespb.GoFeatures_API_HYBRID {\n\t\t// Update all APILevel fields to OPAQUE\n\t\tf.APILevel = gofeaturespb.GoFeatures_API_OPAQUE\n\t\tfor _, msg := range f.Messages {\n\t\t\tsetToOpaque(msg)\n\t\t}\n\t\tgenerated = append(generated, generateOneFile(gen, file, f, \"_protoopaque\"))\n\t}\n\treturn generated\n}\n\nfunc generateOneFile(gen *protogen.Plugin, file *protogen.File, f *fileInfo, variant string) *protogen.GeneratedFile {\n\tfilename := file.GeneratedFilenamePrefix + variant + \".pb.go\"\n\tg := gen.NewGeneratedFile(filename, file.GoImportPath)\n\n\tvar packageDoc protogen.Comments\n\tif !gen.InternalStripForEditionsDiff() {\n\t\tgenStandaloneComments(g, f, int32(genid.FileDescriptorProto_Syntax_field_number))\n\t\tgenGeneratedHeader(gen, g, f)\n\t\tgenStandaloneComments(g, f, int32(genid.FileDescriptorProto_Package_field_number))\n\n\t\tpackageDoc = genPackageKnownComment(f)\n\t}\n\tif variant == \"_protoopaque\" {\n\t\tg.P(\"//go:build protoopaque\")\n\t} else if f.APILevel == gofeaturespb.GoFeatures_API_HYBRID {\n\t\tg.P(\"//go:build !protoopaque\")\n\t}\n\tg.P(packageDoc, \"package \", f.GoPackageName)\n\tg.P()\n\n\t// Emit a static check that enforces a minimum version of the proto package.\n\tif GenerateVersionMarkers {\n\t\tg.P(\"const (\")\n\t\tg.P(\"// Verify that this generated code is sufficiently up-to-date.\")\n\t\tg.P(\"_ = \", protoimplPackage.Ident(\"EnforceVersion\"), \"(\", protoimpl.GenVersion, \" - \", protoimplPackage.Ident(\"MinVersion\"), \")\")\n\t\tg.P(\"// Verify that runtime/protoimpl is sufficiently up-to-date.\")\n\t\tg.P(\"_ = \", protoimplPackage.Ident(\"EnforceVersion\"), \"(\", protoimplPackage.Ident(\"MaxVersion\"), \" - \", protoimpl.GenVersion, \")\")\n\t\tg.P(\")\")\n\t\tg.P()\n\t}\n\n\tfor i, imps := 0, f.Desc.Imports(); i < imps.Len(); i++ {\n\t\tgenImport(gen, g, f, imps.Get(i))\n\t}\n\tfor _, enum := range f.allEnums {\n\t\tgenEnum(g, f, enum)\n\t}\n\tfor _, message := range f.allMessages {\n\t\tgenMessage(g, f, message)\n\t}\n\tgenExtensions(g, f)\n\n\t// The descriptor contains a lot of information about the syntax which is\n\t// quite different between the proto2/3 version of a file and the equivalent\n\t// editions version. For example, when a proto3 file is translated from\n\t// proto3 to editions every field in that file that is marked optional in\n\t// proto3 will have a features.field_presence option set.\n\t// Another problem is that the descriptor contains implementation details\n\t// that are not relevant for the semantic. For example, proto3 optional\n\t// fields are implemented as oneof fields with one case. The descriptor\n\t// contains different information about oneofs. If the file is translated\n\t// to editions it no longer is treated as a oneof with one case and thus\n\t// none of the oneof specific information is generated.\n\t// To be able to compare the descriptor before and after translation of the\n\t// associated proto file, we would need to trim many parts. This would lead\n\t// to a brittle implementation in case the translation ever changes.\n\tif !g.InternalStripForEditionsDiff() {\n\t\tgenReflectFileDescriptor(gen, g, f)\n\t}\n\n\treturn g\n}\n\n// genStandaloneComments prints all leading comments for a FileDescriptorProto\n// location identified by the field number n.\nfunc genStandaloneComments(g *protogen.GeneratedFile, f *fileInfo, n int32) {\n\tloc := f.Desc.SourceLocations().ByPath(protoreflect.SourcePath{n})\n\tfor _, s := range loc.LeadingDetachedComments {\n\t\tg.P(protogen.Comments(s))\n\t\tg.P()\n\t}\n\tif s := loc.LeadingComments; s != \"\" {\n\t\tg.P(protogen.Comments(s))\n\t\tg.P()\n\t}\n}\n\nfunc genGeneratedHeader(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo) {\n\tg.P(\"// Code generated by protoc-gen-go. DO NOT EDIT.\")\n\n\tif GenerateVersionMarkers {\n\t\tg.P(\"// versions:\")\n\t\tprotocGenGoVersion := version.String()\n\t\tprotocVersion := \"(unknown)\"\n\t\tif v := gen.Request.GetCompilerVersion(); v != nil {\n\t\t\tprotocVersion = fmt.Sprintf(\"v%v.%v.%v\", v.GetMajor(), v.GetMinor(), v.GetPatch())\n\t\t\tif s := v.GetSuffix(); s != \"\" {\n\t\t\t\tprotocVersion += \"-\" + s\n\t\t\t}\n\t\t}\n\t\tg.P(\"// \\tprotoc-gen-go \", protocGenGoVersion)\n\t\tg.P(\"// \\tprotoc        \", protocVersion)\n\t}\n\n\tif f.Proto.GetOptions().GetDeprecated() {\n\t\tg.P(\"// \", f.Desc.Path(), \" is a deprecated file.\")\n\t} else {\n\t\tg.P(\"// source: \", f.Desc.Path())\n\t}\n\tg.P()\n}\n\nfunc genImport(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, imp protoreflect.FileImport) {\n\timpFile, ok := gen.FilesByPath[imp.Path()]\n\tif !ok {\n\t\treturn\n\t}\n\tif impFile.GoImportPath == f.GoImportPath {\n\t\t// Don't generate imports or aliases for types in the same Go package.\n\t\treturn\n\t}\n\t// Generate imports for all dependencies, even if they are not\n\t// referenced, because other code and tools depend on having the\n\t// full transitive closure of protocol buffer types in the binary.\n\tg.Import(impFile.GoImportPath)\n\tif !imp.IsPublic {\n\t\treturn\n\t}\n\n\t// Generate public imports by generating the imported file, parsing it,\n\t// and extracting every symbol that should receive a forwarding declaration.\n\timpGens := generateFiles(gen, impFile)\n\tfor _, impGen := range impGens {\n\t\timpGen.Skip()\n\t}\n\tb, err := impGens[0].Content()\n\tif err != nil {\n\t\tgen.Error(err)\n\t\treturn\n\t}\n\tfset := token.NewFileSet()\n\tastFile, err := parser.ParseFile(fset, \"\", b, parser.ParseComments)\n\tif err != nil {\n\t\tgen.Error(err)\n\t\treturn\n\t}\n\tgenForward := func(tok token.Token, name string, expr ast.Expr) {\n\t\t// Don't import unexported symbols.\n\t\tr, _ := utf8.DecodeRuneInString(name)\n\t\tif !unicode.IsUpper(r) {\n\t\t\treturn\n\t\t}\n\t\t// Don't import the FileDescriptor.\n\t\tif name == impFile.GoDescriptorIdent.GoName {\n\t\t\treturn\n\t\t}\n\t\t// Don't import decls referencing a symbol defined in another package.\n\t\t// i.e., don't import decls which are themselves public imports:\n\t\t//\n\t\t//\ttype T = somepackage.T\n\t\tif _, ok := expr.(*ast.SelectorExpr); ok {\n\t\t\treturn\n\t\t}\n\t\tg.P(tok, \" \", name, \" = \", impFile.GoImportPath.Ident(name))\n\t}\n\tg.P(\"// Symbols defined in public import of \", imp.Path(), \".\")\n\tg.P()\n\tfor _, decl := range astFile.Decls {\n\t\tswitch decl := decl.(type) {\n\t\tcase *ast.GenDecl:\n\t\t\tfor _, spec := range decl.Specs {\n\t\t\t\tswitch spec := spec.(type) {\n\t\t\t\tcase *ast.TypeSpec:\n\t\t\t\t\tgenForward(decl.Tok, spec.Name.Name, spec.Type)\n\t\t\t\tcase *ast.ValueSpec:\n\t\t\t\t\tfor i, name := range spec.Names {\n\t\t\t\t\t\tvar expr ast.Expr\n\t\t\t\t\t\tif i < len(spec.Values) {\n\t\t\t\t\t\t\texpr = spec.Values[i]\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgenForward(decl.Tok, name.Name, expr)\n\t\t\t\t\t}\n\t\t\t\tcase *ast.ImportSpec:\n\t\t\t\tdefault:\n\t\t\t\t\tpanic(fmt.Sprintf(\"can't generate forward for spec type %T\", spec))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tg.P()\n}\n\nfunc genEnum(g *protogen.GeneratedFile, f *fileInfo, e *enumInfo) {\n\t// Enum type declaration.\n\tg.AnnotateSymbol(e.GoIdent.GoName, protogen.Annotation{Location: e.Location})\n\tleadingComments := appendDeprecationSuffix(e.Comments.Leading,\n\t\te.Desc.ParentFile(),\n\t\te.Desc.Options().(*descriptorpb.EnumOptions).GetDeprecated())\n\tg.P(leadingComments,\n\t\t\"type \", e.GoIdent, \" int32\")\n\n\t// Enum value constants.\n\tg.P(\"const (\")\n\tanyOldName := false\n\tfor _, value := range e.Values {\n\t\tg.AnnotateSymbol(value.GoIdent.GoName, protogen.Annotation{Location: value.Location})\n\t\tleadingComments := appendDeprecationSuffix(value.Comments.Leading,\n\t\t\tvalue.Desc.ParentFile(),\n\t\t\tvalue.Desc.Options().(*descriptorpb.EnumValueOptions).GetDeprecated())\n\t\tg.P(leadingComments,\n\t\t\tvalue.GoIdent, \" \", e.GoIdent, \" = \", value.Desc.Number(),\n\t\t\ttrailingComment(value.Comments.Trailing))\n\n\t\tif value.PrefixedAlias.GoName != \"\" &&\n\t\t\tvalue.PrefixedAlias.GoName != value.GoIdent.GoName {\n\t\t\tanyOldName = true\n\t\t}\n\t}\n\tg.P(\")\")\n\tg.P()\n\tif anyOldName {\n\t\tg.P(\"// Old (prefixed) names for \", e.GoIdent, \" enum values.\")\n\t\tg.P(\"const (\")\n\t\tfor _, value := range e.Values {\n\t\t\tif value.PrefixedAlias.GoName != \"\" &&\n\t\t\t\tvalue.PrefixedAlias.GoName != value.GoIdent.GoName {\n\t\t\t\tg.P(value.PrefixedAlias, \" \", e.GoIdent, \" = \", value.GoIdent)\n\t\t\t}\n\t\t}\n\t\tg.P(\")\")\n\t\tg.P()\n\t}\n\n\t// Enum value maps.\n\tg.P(\"// Enum value maps for \", e.GoIdent, \".\")\n\tg.P(\"var (\")\n\tg.P(e.GoIdent.GoName+\"_name\", \" = map[int32]string{\")\n\tfor _, value := range e.Values {\n\t\tduplicate := \"\"\n\t\tif value.Desc != e.Desc.Values().ByNumber(value.Desc.Number()) {\n\t\t\tduplicate = \"// Duplicate value: \"\n\t\t}\n\t\tg.P(duplicate, value.Desc.Number(), \": \", strconv.Quote(string(value.Desc.Name())), \",\")\n\t}\n\tg.P(\"}\")\n\tg.P(e.GoIdent.GoName+\"_value\", \" = map[string]int32{\")\n\tfor _, value := range e.Values {\n\t\tg.P(strconv.Quote(string(value.Desc.Name())), \": \", value.Desc.Number(), \",\")\n\t}\n\tg.P(\"}\")\n\tg.P(\")\")\n\tg.P()\n\n\t// Enum method.\n\t//\n\t// NOTE: A pointer value is needed to represent presence in proto2.\n\t// Since a proto2 message can reference a proto3 enum, it is useful to\n\t// always generate this method (even on proto3 enums) to support that case.\n\tg.P(\"func (x \", e.GoIdent, \") Enum() *\", e.GoIdent, \" {\")\n\tg.P(\"p := new(\", e.GoIdent, \")\")\n\tg.P(\"*p = x\")\n\tg.P(\"return p\")\n\tg.P(\"}\")\n\tg.P()\n\n\t// String method.\n\tg.P(\"func (x \", e.GoIdent, \") String() string {\")\n\tg.P(\"return \", protoimplPackage.Ident(\"X\"), \".EnumStringOf(x.Descriptor(), \", protoreflectPackage.Ident(\"EnumNumber\"), \"(x))\")\n\tg.P(\"}\")\n\tg.P()\n\n\tgenEnumReflectMethods(g, f, e)\n\n\t// UnmarshalJSON method.\n\tneedsUnmarshalJSONMethod := false\n\tif fde, ok := e.Desc.(*filedesc.Enum); ok {\n\t\tneedsUnmarshalJSONMethod = fde.L1.EditionFeatures.GenerateLegacyUnmarshalJSON\n\t}\n\tif e.genJSONMethod && needsUnmarshalJSONMethod {\n\t\tg.P(\"// Deprecated: Do not use.\")\n\t\tg.P(\"func (x *\", e.GoIdent, \") UnmarshalJSON(b []byte) error {\")\n\t\tg.P(\"num, err := \", protoimplPackage.Ident(\"X\"), \".UnmarshalJSONEnum(x.Descriptor(), b)\")\n\t\tg.P(\"if err != nil {\")\n\t\tg.P(\"return err\")\n\t\tg.P(\"}\")\n\t\tg.P(\"*x = \", e.GoIdent, \"(num)\")\n\t\tg.P(\"return nil\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\t}\n\n\t// EnumDescriptor method.\n\tif e.genRawDescMethod {\n\t\tvar indexes []string\n\t\tfor i := 1; i < len(e.Location.Path); i += 2 {\n\t\t\tindexes = append(indexes, strconv.Itoa(int(e.Location.Path[i])))\n\t\t}\n\t\tg.P(\"// Deprecated: Use \", e.GoIdent, \".Descriptor instead.\")\n\t\tg.P(\"func (\", e.GoIdent, \") EnumDescriptor() ([]byte, []int) {\")\n\t\tg.P(\"return \", rawDescVarName(f), \"GZIP(), []int{\", strings.Join(indexes, \",\"), \"}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\tf.needRawDesc = true\n\t}\n}\n\nfunc genMessage(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {\n\tif m.Desc.IsMapEntry() {\n\t\treturn\n\t}\n\tif opaqueGenMessageHook(g, f, m) {\n\t\treturn\n\t}\n\n\t// Message type declaration.\n\tg.AnnotateSymbol(m.GoIdent.GoName, protogen.Annotation{Location: m.Location})\n\tleadingComments := appendDeprecationSuffix(m.Comments.Leading,\n\t\tm.Desc.ParentFile(),\n\t\tm.Desc.Options().(*descriptorpb.MessageOptions).GetDeprecated())\n\tg.P(leadingComments,\n\t\t\"type \", m.GoIdent, \" struct {\")\n\tgenMessageFields(g, f, m)\n\tg.P(\"}\")\n\tg.P()\n\n\tgenMessageKnownFunctions(g, f, m)\n\tgenMessageDefaultDecls(g, f, m)\n\tgenMessageMethods(g, f, m)\n\tgenMessageOneofWrapperTypes(g, f, m)\n}\n\nfunc genMessageFields(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {\n\tsf := f.allMessageFieldsByPtr[m]\n\tgenMessageInternalFields(g, f, m, sf)\n\tfor _, field := range m.Fields {\n\t\tgenMessageField(g, f, m, field, sf)\n\t}\n}\n\nfunc genMessageInternalFields(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo, sf *structFields) {\n\tg.P(genid.State_goname, \" \", protoimplPackage.Ident(\"MessageState\"))\n\tsf.append(genid.State_goname)\n\tg.P(genid.SizeCache_goname, \" \", protoimplPackage.Ident(\"SizeCache\"))\n\tsf.append(genid.SizeCache_goname)\n\tg.P(genid.UnknownFields_goname, \" \", protoimplPackage.Ident(\"UnknownFields\"))\n\tsf.append(genid.UnknownFields_goname)\n\tif m.Desc.ExtensionRanges().Len() > 0 {\n\t\tg.P(genid.ExtensionFields_goname, \" \", protoimplPackage.Ident(\"ExtensionFields\"))\n\t\tsf.append(genid.ExtensionFields_goname)\n\t}\n\tif sf.count > 0 {\n\t\tg.P()\n\t}\n}\n\nfunc genMessageField(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo, field *protogen.Field, sf *structFields) {\n\tif oneof := field.Oneof; oneof != nil && !oneof.Desc.IsSynthetic() {\n\t\t// It would be a bit simpler to iterate over the oneofs below,\n\t\t// but generating the field here keeps the contents of the Go\n\t\t// struct in the same order as the contents of the source\n\t\t// .proto file.\n\t\tif oneof.Fields[0] != field {\n\t\t\treturn // only generate for first appearance\n\t\t}\n\n\t\ttags := structTags{\n\t\t\t{\"protobuf_oneof\", string(oneof.Desc.Name())},\n\t\t}\n\t\tif m.isTracked {\n\t\t\ttags = append(tags, gotrackTags...)\n\t\t}\n\n\t\tg.AnnotateSymbol(m.GoIdent.GoName+\".\"+oneof.GoName, protogen.Annotation{Location: oneof.Location})\n\t\tleadingComments := oneof.Comments.Leading\n\t\tif leadingComments != \"\" {\n\t\t\tleadingComments += \"\\n\"\n\t\t}\n\t\tss := []string{fmt.Sprintf(\" Types that are assignable to %s:\\n\", oneof.GoName)}\n\t\tfor _, field := range oneof.Fields {\n\t\t\tss = append(ss, \"\\t*\"+field.GoIdent.GoName+\"\\n\")\n\t\t}\n\t\tleadingComments += protogen.Comments(strings.Join(ss, \"\"))\n\t\tg.P(leadingComments,\n\t\t\toneof.GoName, \" \", oneofInterfaceName(oneof), tags)\n\t\tsf.append(oneof.GoName)\n\t\treturn\n\t}\n\tgoType, pointer := fieldGoType(g, f, field)\n\tif pointer {\n\t\tgoType = \"*\" + goType\n\t}\n\ttags := structTags{\n\t\t{\"protobuf\", fieldProtobufTagValue(field)},\n\t\t{\"json\", fieldJSONTagValue(field)},\n\t}\n\tif field.Desc.IsMap() {\n\t\tkey := field.Message.Fields[0]\n\t\tval := field.Message.Fields[1]\n\t\ttags = append(tags, structTags{\n\t\t\t{\"protobuf_key\", fieldProtobufTagValue(key)},\n\t\t\t{\"protobuf_val\", fieldProtobufTagValue(val)},\n\t\t}...)\n\t}\n\tif m.isTracked {\n\t\ttags = append(tags, gotrackTags...)\n\t}\n\n\tname := field.GoName\n\tg.AnnotateSymbol(m.GoIdent.GoName+\".\"+name, protogen.Annotation{Location: field.Location})\n\tleadingComments := appendDeprecationSuffix(field.Comments.Leading,\n\t\tfield.Desc.ParentFile(),\n\t\tfield.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())\n\tg.P(leadingComments,\n\t\tname, \" \", goType, tags,\n\t\ttrailingComment(field.Comments.Trailing))\n\tsf.append(field.GoName)\n}\n\n// genMessageDefaultDecls generates consts and vars holding the default\n// values of fields.\nfunc genMessageDefaultDecls(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {\n\tvar consts, vars []string\n\tfor _, field := range m.Fields {\n\t\tif !field.Desc.HasDefault() {\n\t\t\tcontinue\n\t\t}\n\t\tname := \"Default_\" + m.GoIdent.GoName + \"_\" + field.GoName\n\t\tgoType, _ := fieldGoType(g, f, field)\n\t\tdefVal := field.Desc.Default()\n\t\tswitch field.Desc.Kind() {\n\t\tcase protoreflect.StringKind:\n\t\t\tconsts = append(consts, fmt.Sprintf(\"%s = %s(%q)\", name, goType, defVal.String()))\n\t\tcase protoreflect.BytesKind:\n\t\t\tvars = append(vars, fmt.Sprintf(\"%s = %s(%q)\", name, goType, defVal.Bytes()))\n\t\tcase protoreflect.EnumKind:\n\t\t\tidx := field.Desc.DefaultEnumValue().Index()\n\t\t\tval := field.Enum.Values[idx]\n\t\t\tif val.GoIdent.GoImportPath == f.GoImportPath {\n\t\t\t\tconsts = append(consts, fmt.Sprintf(\"%s = %s\", name, g.QualifiedGoIdent(val.GoIdent)))\n\t\t\t} else {\n\t\t\t\t// If the enum value is declared in a different Go package,\n\t\t\t\t// reference it by number since the name may not be correct.\n\t\t\t\t// See https://github.com/golang/protobuf/issues/513.\n\t\t\t\tconsts = append(consts, fmt.Sprintf(\"%s = %s(%d) // %s\",\n\t\t\t\t\tname, g.QualifiedGoIdent(field.Enum.GoIdent), val.Desc.Number(), g.QualifiedGoIdent(val.GoIdent)))\n\t\t\t}\n\t\tcase protoreflect.FloatKind, protoreflect.DoubleKind:\n\t\t\tif f := defVal.Float(); math.IsNaN(f) || math.IsInf(f, 0) {\n\t\t\t\tvar fn, arg string\n\t\t\t\tswitch f := defVal.Float(); {\n\t\t\t\tcase math.IsInf(f, -1):\n\t\t\t\t\tfn, arg = g.QualifiedGoIdent(mathPackage.Ident(\"Inf\")), \"-1\"\n\t\t\t\tcase math.IsInf(f, +1):\n\t\t\t\t\tfn, arg = g.QualifiedGoIdent(mathPackage.Ident(\"Inf\")), \"+1\"\n\t\t\t\tcase math.IsNaN(f):\n\t\t\t\t\tfn, arg = g.QualifiedGoIdent(mathPackage.Ident(\"NaN\")), \"\"\n\t\t\t\t}\n\t\t\t\tvars = append(vars, fmt.Sprintf(\"%s = %s(%s(%s))\", name, goType, fn, arg))\n\t\t\t} else {\n\t\t\t\tconsts = append(consts, fmt.Sprintf(\"%s = %s(%v)\", name, goType, f))\n\t\t\t}\n\t\tdefault:\n\t\t\tconsts = append(consts, fmt.Sprintf(\"%s = %s(%v)\", name, goType, defVal.Interface()))\n\t\t}\n\t}\n\tif len(consts) > 0 {\n\t\tg.P(\"// Default values for \", m.GoIdent, \" fields.\")\n\t\tg.P(\"const (\")\n\t\tfor _, s := range consts {\n\t\t\tg.P(s)\n\t\t}\n\t\tg.P(\")\")\n\t}\n\tif len(vars) > 0 {\n\t\tg.P(\"// Default values for \", m.GoIdent, \" fields.\")\n\t\tg.P(\"var (\")\n\t\tfor _, s := range vars {\n\t\t\tg.P(s)\n\t\t}\n\t\tg.P(\")\")\n\t}\n\tg.P()\n}\n\nfunc genMessageMethods(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {\n\tgenMessageBaseMethods(g, f, m)\n\tgenMessageGetterMethods(g, f, m)\n}\n\nfunc genMessageBaseMethods(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {\n\t// Reset method.\n\tg.P(\"func (x *\", m.GoIdent, \") Reset() {\")\n\tg.P(\"*x = \", m.GoIdent, \"{}\")\n\tg.P(\"mi := &\", messageTypesVarName(f), \"[\", f.allMessagesByPtr[m], \"]\")\n\tg.P(\"ms := \", protoimplPackage.Ident(\"X\"), \".MessageStateOf(\", protoimplPackage.Ident(\"Pointer\"), \"(x))\")\n\tg.P(\"ms.StoreMessageInfo(mi)\")\n\tg.P(\"}\")\n\tg.P()\n\n\t// String method.\n\tg.P(\"func (x *\", m.GoIdent, \") String() string {\")\n\tg.P(\"return \", protoimplPackage.Ident(\"X\"), \".MessageStringOf(x)\")\n\tg.P(\"}\")\n\tg.P()\n\n\t// ProtoMessage method.\n\tg.P(\"func (*\", m.GoIdent, \") ProtoMessage() {}\")\n\tg.P()\n\n\t// ProtoReflect method.\n\tgenMessageReflectMethods(g, f, m)\n\n\t// Descriptor method.\n\tif m.genRawDescMethod {\n\t\tvar indexes []string\n\t\tfor i := 1; i < len(m.Location.Path); i += 2 {\n\t\t\tindexes = append(indexes, strconv.Itoa(int(m.Location.Path[i])))\n\t\t}\n\t\tg.P(\"// Deprecated: Use \", m.GoIdent, \".ProtoReflect.Descriptor instead.\")\n\t\tg.P(\"func (*\", m.GoIdent, \") Descriptor() ([]byte, []int) {\")\n\t\tg.P(\"return \", rawDescVarName(f), \"GZIP(), []int{\", strings.Join(indexes, \",\"), \"}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\tf.needRawDesc = true\n\t}\n}\n\nfunc genMessageGetterMethods(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {\n\tfor _, field := range m.Fields {\n\t\tgenNoInterfacePragma(g, m.isTracked)\n\n\t\t// Getter for parent oneof.\n\t\tif oneof := field.Oneof; oneof != nil && oneof.Fields[0] == field && !oneof.Desc.IsSynthetic() {\n\t\t\tg.AnnotateSymbol(m.GoIdent.GoName+\".Get\"+oneof.GoName, protogen.Annotation{Location: oneof.Location})\n\t\t\tg.P(\"func (m *\", m.GoIdent.GoName, \") Get\", oneof.GoName, \"() \", oneofInterfaceName(oneof), \" {\")\n\t\t\tg.P(\"if m != nil {\")\n\t\t\tg.P(\"return m.\", oneof.GoName)\n\t\t\tg.P(\"}\")\n\t\t\tg.P(\"return nil\")\n\t\t\tg.P(\"}\")\n\t\t\tg.P()\n\t\t}\n\n\t\t// Getter for message field.\n\t\tgoType, pointer := fieldGoType(g, f, field)\n\t\tdefaultValue := fieldDefaultValue(g, f, m, field)\n\t\tg.AnnotateSymbol(m.GoIdent.GoName+\".Get\"+field.GoName, protogen.Annotation{Location: field.Location})\n\t\tleadingComments := appendDeprecationSuffix(\"\",\n\t\t\tfield.Desc.ParentFile(),\n\t\t\tfield.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())\n\t\tswitch {\n\t\tcase field.Oneof != nil && !field.Oneof.Desc.IsSynthetic():\n\t\t\tg.P(leadingComments, \"func (x *\", m.GoIdent, \") Get\", field.GoName, \"() \", goType, \" {\")\n\t\t\tg.P(\"if x, ok := x.Get\", field.Oneof.GoName, \"().(*\", field.GoIdent, \"); ok {\")\n\t\t\tg.P(\"return x.\", field.GoName)\n\t\t\tg.P(\"}\")\n\t\t\tg.P(\"return \", defaultValue)\n\t\t\tg.P(\"}\")\n\t\tdefault:\n\t\t\tg.P(leadingComments, \"func (x *\", m.GoIdent, \") Get\", field.GoName, \"() \", goType, \" {\")\n\t\t\tif !field.Desc.HasPresence() || defaultValue == \"nil\" {\n\t\t\t\tg.P(\"if x != nil {\")\n\t\t\t} else {\n\t\t\t\tg.P(\"if x != nil && x.\", field.GoName, \" != nil {\")\n\t\t\t}\n\t\t\tstar := \"\"\n\t\t\tif pointer {\n\t\t\t\tstar = \"*\"\n\t\t\t}\n\t\t\tg.P(\"return \", star, \" x.\", field.GoName)\n\t\t\tg.P(\"}\")\n\t\t\tg.P(\"return \", defaultValue)\n\t\t\tg.P(\"}\")\n\t\t}\n\t\tg.P()\n\t}\n}\n\n// fieldGoType returns the Go type used for a field.\n//\n// If it returns pointer=true, the struct field is a pointer to the type.\nfunc fieldGoType(g *protogen.GeneratedFile, f *fileInfo, field *protogen.Field) (goType string, pointer bool) {\n\tpointer = field.Desc.HasPresence()\n\tswitch field.Desc.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tgoType = \"bool\"\n\tcase protoreflect.EnumKind:\n\t\tgoType = g.QualifiedGoIdent(field.Enum.GoIdent)\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tgoType = \"int32\"\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tgoType = \"uint32\"\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tgoType = \"int64\"\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tgoType = \"uint64\"\n\tcase protoreflect.FloatKind:\n\t\tgoType = \"float32\"\n\tcase protoreflect.DoubleKind:\n\t\tgoType = \"float64\"\n\tcase protoreflect.StringKind:\n\t\tgoType = \"string\"\n\tcase protoreflect.BytesKind:\n\t\tgoType = \"[]byte\"\n\t\tpointer = false // rely on nullability of slices for presence\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tgoType = \"*\" + g.QualifiedGoIdent(field.Message.GoIdent)\n\t\tpointer = false // pointer captured as part of the type\n\t}\n\tswitch {\n\tcase field.Desc.IsList():\n\t\treturn \"[]\" + goType, false\n\tcase field.Desc.IsMap():\n\t\tkeyType, _ := fieldGoType(g, f, field.Message.Fields[0])\n\t\tvalType, _ := fieldGoType(g, f, field.Message.Fields[1])\n\t\treturn fmt.Sprintf(\"map[%v]%v\", keyType, valType), false\n\t}\n\treturn goType, pointer\n}\n\nfunc fieldProtobufTagValue(field *protogen.Field) string {\n\tvar enumName string\n\tif field.Desc.Kind() == protoreflect.EnumKind {\n\t\tenumName = protoimpl.X.LegacyEnumName(field.Enum.Desc)\n\t}\n\treturn tag.Marshal(field.Desc, enumName)\n}\n\nfunc fieldDefaultValue(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo, field *protogen.Field) string {\n\tif field.Desc.IsList() {\n\t\treturn \"nil\"\n\t}\n\tif field.Desc.HasDefault() {\n\t\tdefVarName := \"Default_\" + m.GoIdent.GoName + \"_\" + field.GoName\n\t\tif field.Desc.Kind() == protoreflect.BytesKind {\n\t\t\treturn \"append([]byte(nil), \" + defVarName + \"...)\"\n\t\t}\n\t\treturn defVarName\n\t}\n\tswitch field.Desc.Kind() {\n\tcase protoreflect.BoolKind:\n\t\treturn \"false\"\n\tcase protoreflect.StringKind:\n\t\treturn `\"\"`\n\tcase protoreflect.MessageKind, protoreflect.GroupKind, protoreflect.BytesKind:\n\t\treturn \"nil\"\n\tcase protoreflect.EnumKind:\n\t\tval := field.Enum.Values[0]\n\t\tif val.GoIdent.GoImportPath == f.GoImportPath {\n\t\t\treturn g.QualifiedGoIdent(val.GoIdent)\n\t\t} else {\n\t\t\t// If the enum value is declared in a different Go package,\n\t\t\t// reference it by number since the name may not be correct.\n\t\t\t// See https://github.com/golang/protobuf/issues/513.\n\t\t\treturn g.QualifiedGoIdent(field.Enum.GoIdent) + \"(\" + strconv.FormatInt(int64(val.Desc.Number()), 10) + \")\"\n\t\t}\n\tdefault:\n\t\treturn \"0\"\n\t}\n}\n\nfunc fieldJSONTagValue(field *protogen.Field) string {\n\treturn string(field.Desc.Name()) + \",omitempty\"\n}\n\nfunc genExtensions(g *protogen.GeneratedFile, f *fileInfo) {\n\tif len(f.allExtensions) == 0 {\n\t\treturn\n\t}\n\n\tg.P(\"var \", extensionTypesVarName(f), \" = []\", protoimplPackage.Ident(\"ExtensionInfo\"), \"{\")\n\tfor _, x := range f.allExtensions {\n\t\tg.P(\"{\")\n\t\tg.P(\"ExtendedType: (*\", x.Extendee.GoIdent, \")(nil),\")\n\t\tgoType, pointer := fieldGoType(g, f, x.Extension)\n\t\tif pointer {\n\t\t\tgoType = \"*\" + goType\n\t\t}\n\t\tg.P(\"ExtensionType: (\", goType, \")(nil),\")\n\t\tg.P(\"Field: \", x.Desc.Number(), \",\")\n\t\tg.P(\"Name: \", strconv.Quote(string(x.Desc.FullName())), \",\")\n\t\tg.P(\"Tag: \", strconv.Quote(fieldProtobufTagValue(x.Extension)), \",\")\n\t\tg.P(\"Filename: \", strconv.Quote(f.Desc.Path()), \",\")\n\t\tg.P(\"},\")\n\t}\n\tg.P(\"}\")\n\tg.P()\n\n\t// Group extensions by the target message.\n\tvar orderedTargets []protogen.GoIdent\n\tallExtensionsByTarget := make(map[protogen.GoIdent][]*extensionInfo)\n\tallExtensionsByPtr := make(map[*extensionInfo]int)\n\tfor i, x := range f.allExtensions {\n\t\ttarget := x.Extendee.GoIdent\n\t\tif len(allExtensionsByTarget[target]) == 0 {\n\t\t\torderedTargets = append(orderedTargets, target)\n\t\t}\n\t\tallExtensionsByTarget[target] = append(allExtensionsByTarget[target], x)\n\t\tallExtensionsByPtr[x] = i\n\t}\n\tfor _, target := range orderedTargets {\n\t\tg.P(\"// Extension fields to \", target, \".\")\n\t\tg.P(\"var (\")\n\t\tfor _, x := range allExtensionsByTarget[target] {\n\t\t\txd := x.Desc\n\t\t\ttypeName := xd.Kind().String()\n\t\t\tswitch xd.Kind() {\n\t\t\tcase protoreflect.EnumKind:\n\t\t\t\ttypeName = string(xd.Enum().FullName())\n\t\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\t\ttypeName = string(xd.Message().FullName())\n\t\t\t}\n\t\t\tfieldName := string(xd.Name())\n\n\t\t\tleadingComments := x.Comments.Leading\n\t\t\tif leadingComments != \"\" {\n\t\t\t\tleadingComments += \"\\n\"\n\t\t\t}\n\t\t\tleadingComments += protogen.Comments(fmt.Sprintf(\" %v %v %v = %v;\\n\",\n\t\t\t\txd.Cardinality(), typeName, fieldName, xd.Number()))\n\t\t\tleadingComments = appendDeprecationSuffix(leadingComments,\n\t\t\t\tx.Desc.ParentFile(),\n\t\t\t\tx.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())\n\t\t\tg.AnnotateSymbol(\"E_\"+x.GoIdent.GoName, protogen.Annotation{Location: x.Location})\n\t\t\tg.P(leadingComments,\n\t\t\t\t\"E_\", x.GoIdent, \" = &\", extensionTypesVarName(f), \"[\", allExtensionsByPtr[x], \"]\",\n\t\t\t\ttrailingComment(x.Comments.Trailing))\n\t\t}\n\t\tg.P(\")\")\n\t\tg.P()\n\t}\n}\n\n// genMessageOneofWrapperTypes generates the oneof wrapper types and\n// associates the types with the parent message type.\nfunc genMessageOneofWrapperTypes(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {\n\tfor _, oneof := range m.Oneofs {\n\t\tif oneof.Desc.IsSynthetic() {\n\t\t\tcontinue\n\t\t}\n\t\tifName := oneofInterfaceName(oneof)\n\t\tg.P(\"type \", ifName, \" interface {\")\n\t\tg.P(ifName, \"()\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\tfor _, field := range oneof.Fields {\n\t\t\tg.AnnotateSymbol(field.GoIdent.GoName, protogen.Annotation{Location: field.Location})\n\t\t\tg.AnnotateSymbol(field.GoIdent.GoName+\".\"+field.GoName, protogen.Annotation{Location: field.Location})\n\t\t\tg.P(\"type \", field.GoIdent, \" struct {\")\n\t\t\tgoType, _ := fieldGoType(g, f, field)\n\t\t\ttags := structTags{\n\t\t\t\t{\"protobuf\", fieldProtobufTagValue(field)},\n\t\t\t}\n\t\t\tif m.isTracked {\n\t\t\t\ttags = append(tags, gotrackTags...)\n\t\t\t}\n\t\t\tleadingComments := appendDeprecationSuffix(field.Comments.Leading,\n\t\t\t\tfield.Desc.ParentFile(),\n\t\t\t\tfield.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())\n\t\t\tg.P(leadingComments,\n\t\t\t\tfield.GoName, \" \", goType, tags,\n\t\t\t\ttrailingComment(field.Comments.Trailing))\n\t\t\tg.P(\"}\")\n\t\t\tg.P()\n\t\t}\n\t\tfor _, field := range oneof.Fields {\n\t\t\tg.P(\"func (*\", field.GoIdent, \") \", ifName, \"() {}\")\n\t\t\tg.P()\n\t\t}\n\t}\n}\n\n// oneofInterfaceName returns the name of the interface type implemented by\n// the oneof field value types.\nfunc oneofInterfaceName(oneof *protogen.Oneof) string {\n\treturn \"is\" + oneof.GoIdent.GoName\n}\n\n// genNoInterfacePragma generates a standalone \"nointerface\" pragma to\n// decorate methods with field-tracking support.\nfunc genNoInterfacePragma(g *protogen.GeneratedFile, tracked bool) {\n\tif tracked {\n\t\tg.P(\"//go:nointerface\")\n\t\tg.P()\n\t}\n}\n\nvar gotrackTags = structTags{{\"go\", \"track\"}}\n\n// structTags is a data structure for build idiomatic Go struct tags.\n// Each [2]string is a key-value pair, where value is the unescaped string.\n//\n// Example: structTags{{\"key\", \"value\"}}.String() -> `key:\"value\"`\ntype structTags [][2]string\n\nfunc (tags structTags) String() string {\n\tif len(tags) == 0 {\n\t\treturn \"\"\n\t}\n\tvar ss []string\n\tfor _, tag := range tags {\n\t\t// NOTE: When quoting the value, we need to make sure the backtick\n\t\t// character does not appear. Convert all cases to the escaped hex form.\n\t\tkey := tag[0]\n\t\tval := strings.Replace(strconv.Quote(tag[1]), \"`\", `\\x60`, -1)\n\t\tss = append(ss, fmt.Sprintf(\"%s:%s\", key, val))\n\t}\n\treturn \"`\" + strings.Join(ss, \" \") + \"`\"\n}\n\n// appendDeprecationSuffix optionally appends a deprecation notice as a suffix.\nfunc appendDeprecationSuffix(prefix protogen.Comments, parentFile protoreflect.FileDescriptor, deprecated bool) protogen.Comments {\n\tfileDeprecated := parentFile.Options().(*descriptorpb.FileOptions).GetDeprecated()\n\tif !deprecated && !fileDeprecated {\n\t\treturn prefix\n\t}\n\tif prefix != \"\" {\n\t\tprefix += \"\\n\"\n\t}\n\tif fileDeprecated {\n\t\treturn prefix + \" Deprecated: The entire proto file \" + protogen.Comments(parentFile.Path()) + \" is marked as deprecated.\\n\"\n\t}\n\treturn prefix + \" Deprecated: Marked as deprecated in \" + protogen.Comments(parentFile.Path()) + \".\\n\"\n}\n\n// trailingComment is like protogen.Comments, but lacks a trailing newline.\ntype trailingComment protogen.Comments\n\nfunc (c trailingComment) String() string {\n\ts := strings.TrimSuffix(protogen.Comments(c).String(), \"\\n\")\n\tif strings.Contains(s, \"\\n\") {\n\t\t// We don't support multi-lined trailing comments as it is unclear\n\t\t// how to best render them in the generated code.\n\t\treturn \"\"\n\t}\n\treturn s\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo/opaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage internal_gengo\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/compiler/protogen\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nfunc opaqueGenMessageHook(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo) bool {\n\topaqueGenMessage(g, f, message)\n\treturn true\n}\n\nfunc opaqueGenMessage(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo) {\n\t// Message type declaration.\n\tg.AnnotateSymbol(message.GoIdent.GoName, protogen.Annotation{Location: message.Location})\n\tleadingComments := appendDeprecationSuffix(message.Comments.Leading,\n\t\tmessage.Desc.ParentFile(),\n\t\tmessage.Desc.Options().(*descriptorpb.MessageOptions).GetDeprecated())\n\tg.P(leadingComments,\n\t\t\"type \", message.GoIdent, \" struct {\")\n\n\tsf := f.allMessageFieldsByPtr[message]\n\tif sf == nil {\n\t\tsf = new(structFields)\n\t\tf.allMessageFieldsByPtr[message] = sf\n\t}\n\n\tvar tags structTags\n\tswitch {\n\tcase message.isOpen():\n\t\ttags = structTags{{\"protogen\", \"open.v1\"}}\n\tcase message.isHybrid():\n\t\ttags = structTags{{\"protogen\", \"hybrid.v1\"}}\n\tcase message.isOpaque():\n\t\ttags = structTags{{\"protogen\", \"opaque.v1\"}}\n\t}\n\n\tg.P(genid.State_goname, \" \", protoimplPackage.Ident(\"MessageState\"), tags)\n\tsf.append(genid.State_goname)\n\tfields := message.Fields\n\tfor _, field := range fields {\n\t\topaqueGenMessageField(g, f, message, field, sf)\n\t}\n\topaqueGenMessageInternalFields(g, f, message, sf)\n\tg.P(\"}\")\n\tg.P()\n\n\tgenMessageKnownFunctions(g, f, message)\n\tgenMessageDefaultDecls(g, f, message)\n\topaqueGenMessageMethods(g, f, message)\n\topaqueGenMessageBuilder(g, f, message)\n\topaqueGenOneofWrapperTypes(g, f, message)\n}\n\n// opaqueGenMessageField generates a struct field.\nfunc opaqueGenMessageField(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo, field *protogen.Field, sf *structFields) {\n\tif oneof := field.Oneof; oneof != nil && !oneof.Desc.IsSynthetic() {\n\t\t// It would be a bit simpler to iterate over the oneofs below,\n\t\t// but generating the field here keeps the contents of the Go\n\t\t// struct in the same order as the contents of the source\n\t\t// .proto file.\n\t\tif field != oneof.Fields[0] {\n\t\t\treturn\n\t\t}\n\t\topaqueGenOneofFields(g, f, message, oneof, sf)\n\t\treturn\n\t}\n\n\tgoType, pointer := opaqueFieldGoType(g, f, message, field)\n\tif pointer {\n\t\tgoType = \"*\" + goType\n\t}\n\tprotobufTagValue := fieldProtobufTagValue(field)\n\tjsonTagValue := fieldJSONTagValue(field)\n\tif g.InternalStripForEditionsDiff() {\n\t\tif field.Desc.ContainingOneof() != nil && field.Desc.ContainingOneof().IsSynthetic() {\n\t\t\tprotobufTagValue = strings.ReplaceAll(protobufTagValue, \",oneof\", \"\")\n\t\t}\n\t\tprotobufTagValue = strings.ReplaceAll(protobufTagValue, \",proto3\", \"\")\n\t}\n\ttags := structTags{\n\t\t{\"protobuf\", protobufTagValue},\n\t}\n\tif !message.isOpaque() {\n\t\ttags = append(tags, structTags{{\"json\", jsonTagValue}}...)\n\t}\n\tif field.Desc.IsMap() {\n\t\tkeyTagValue := fieldProtobufTagValue(field.Message.Fields[0])\n\t\tvalTagValue := fieldProtobufTagValue(field.Message.Fields[1])\n\t\tkeyTagValue = strings.ReplaceAll(keyTagValue, \",proto3\", \"\")\n\t\tvalTagValue = strings.ReplaceAll(valTagValue, \",proto3\", \"\")\n\t\ttags = append(tags, structTags{\n\t\t\t{\"protobuf_key\", keyTagValue},\n\t\t\t{\"protobuf_val\", valTagValue},\n\t\t}...)\n\t}\n\n\tname := field.GoName\n\tif message.isOpaque() {\n\t\tname = \"xxx_hidden_\" + name\n\t}\n\n\tif message.isOpaque() {\n\t\tg.P(name, \" \", goType, tags)\n\t\tsf.append(name)\n\t\tif message.isTracked {\n\t\t\tg.P(\"// Deprecated: Do not use. This will be deleted in the near future.\")\n\t\t\tg.P(\"XXX_ft_\", field.GoName, \" struct{} `go:\\\"track\\\"`\")\n\t\t\tsf.append(\"XXX_ft_\" + field.GoName)\n\t\t}\n\t} else {\n\t\tif message.isTracked {\n\t\t\ttags = append(tags, structTags{\n\t\t\t\t{\"go\", \"track\"},\n\t\t\t}...)\n\t\t}\n\t\tg.AnnotateSymbol(field.Parent.GoIdent.GoName+\".\"+name, protogen.Annotation{Location: field.Location})\n\t\tleadingComments := appendDeprecationSuffix(field.Comments.Leading,\n\t\t\tfield.Desc.ParentFile(),\n\t\t\tfield.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())\n\t\tg.P(leadingComments,\n\t\t\tname, \" \", goType, tags,\n\t\t\ttrailingComment(field.Comments.Trailing))\n\t\tsf.append(name)\n\t}\n}\n\n// opaqueGenOneofFields generates the message fields for a oneof.\nfunc opaqueGenOneofFields(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo, oneof *protogen.Oneof, sf *structFields) {\n\ttags := structTags{\n\t\t{\"protobuf_oneof\", string(oneof.Desc.Name())},\n\t}\n\tif message.isTracked {\n\t\ttags = append(tags, structTags{\n\t\t\t{\"go\", \"track\"},\n\t\t}...)\n\t}\n\n\toneofName := opaqueOneofFieldName(oneof, message.isOpaque())\n\tgoType := opaqueOneofInterfaceName(oneof)\n\n\tif message.isOpaque() {\n\t\tg.P(oneofName, \" \", goType, tags)\n\t\tsf.append(oneofName)\n\t\tif message.isTracked {\n\t\t\tg.P(\"// Deprecated: Do not use. This will be deleted in the near future.\")\n\t\t\tg.P(\"XXX_ft_\", oneof.GoName, \" struct{} `go:\\\"track\\\"`\")\n\t\t\tsf.append(\"XXX_ft_\" + oneof.GoName)\n\t\t}\n\t\treturn\n\t}\n\n\tleadingComments := oneof.Comments.Leading\n\tif leadingComments != \"\" {\n\t\tleadingComments += \"\\n\"\n\t}\n\t// NOTE(rsc): The extra \\n here is working around #52605,\n\t// making the comment be in Go 1.19 doc comment format\n\t// even though it's not really a doc comment.\n\tss := []string{\" Types that are valid to be assigned to \", oneofName, \":\\n\\n\"}\n\tfor _, field := range oneof.Fields {\n\t\tss = append(ss, \"\\t*\"+opaqueFieldOneofType(field, message.isOpaque()).GoName+\"\\n\")\n\t}\n\tleadingComments += protogen.Comments(strings.Join(ss, \"\"))\n\tg.P(leadingComments, oneofName, \" \", goType, tags)\n\tsf.append(oneofName)\n}\n\n// opaqueGenMessageInternalFields adds additional XXX_ fields to a message struct.\nfunc opaqueGenMessageInternalFields(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo, sf *structFields) {\n\tif opaqueNeedsPresenceArray(message) {\n\t\tif opaqueNeedsLazyStruct(message) {\n\t\t\tg.P(\"// Deprecated: Do not use. This will be deleted in the near future.\")\n\t\t\tg.P(\"XXX_lazyUnmarshalInfo \", protoimplPackage.Ident(\"LazyUnmarshalInfo\"))\n\t\t\tsf.append(\"XXX_lazyUnmarshalInfo\")\n\t\t}\n\t\tg.P(\"XXX_raceDetectHookData \", protoimplPackage.Ident(\"RaceDetectHookData\"))\n\t\tsf.append(\"XXX_raceDetectHookData\")\n\n\t\t// Presence must be stored in a data type no larger than 32 bit:\n\t\t//\n\t\t// Presence used to be a uint64, accessed with atomic.LoadUint64, but it\n\t\t// turns out that on 32-bit platforms like GOARCH=arm, the struct field\n\t\t// was 32-bit aligned (not 64-bit aligned) and hence atomic accesses\n\t\t// failed.\n\t\t//\n\t\t// The easiest solution was to switch to a uint32 on all platforms,\n\t\t// which did not come with a performance penalty.\n\t\tg.P(\"XXX_presence [\", (opaqueNumPresenceFields(message)+31)/32, \"]uint32\")\n\t\tsf.append(\"XXX_presence\")\n\t}\n\tif message.Desc.ExtensionRanges().Len() > 0 {\n\t\tg.P(genid.ExtensionFields_goname, \" \", protoimplPackage.Ident(\"ExtensionFields\"))\n\t\tsf.append(genid.ExtensionFields_goname)\n\t}\n\tg.P(genid.UnknownFields_goname, \" \", protoimplPackage.Ident(\"UnknownFields\"))\n\tsf.append(genid.UnknownFields_goname)\n\tg.P(genid.SizeCache_goname, \" \", protoimplPackage.Ident(\"SizeCache\"))\n\tsf.append(genid.SizeCache_goname)\n}\n\nfunc opaqueGenMessageMethods(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo) {\n\tgenMessageBaseMethods(g, f, message)\n\n\tisRepeated := func(field *protogen.Field) bool {\n\t\treturn field.Desc.Cardinality() == protoreflect.Repeated\n\t}\n\n\tfor _, field := range message.Fields {\n\t\tif isFirstOneofField(field) && !message.isOpaque() {\n\t\t\topaqueGenGetOneof(g, f, message, field.Oneof)\n\t\t}\n\t\topaqueGenGet(g, f, message, field)\n\t}\n\tfor _, field := range message.Fields {\n\t\t// For the plain open mode, we do not have setters.\n\t\tif message.isOpen() {\n\t\t\tcontinue\n\t\t}\n\t\topaqueGenSet(g, f, message, field)\n\t}\n\tfor _, field := range message.Fields {\n\t\t// Open API does not have Has method.\n\t\t// Repeated (includes map) fields do not have Has method.\n\t\tif message.isOpen() || isRepeated(field) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif !field.Desc.HasPresence() {\n\t\t\tcontinue\n\t\t}\n\n\t\tif isFirstOneofField(field) {\n\t\t\topaqueGenHasOneof(g, f, message, field.Oneof)\n\t\t}\n\t\topaqueGenHas(g, f, message, field)\n\t}\n\tfor _, field := range message.Fields {\n\t\t// Open API does not have Clear method.\n\t\t// Repeated (includes map) fields do not have Clear method.\n\t\tif message.isOpen() || isRepeated(field) {\n\t\t\tcontinue\n\t\t}\n\t\tif !field.Desc.HasPresence() {\n\t\t\tcontinue\n\t\t}\n\n\t\tif isFirstOneofField(field) {\n\t\t\topaqueGenClearOneof(g, f, message, field.Oneof)\n\t\t}\n\t\topaqueGenClear(g, f, message, field)\n\t}\n\t// Plain open protos do not have which methods.\n\tif !message.isOpen() {\n\t\topaqueGenWhichOneof(g, f, message)\n\t}\n\n\tif g.InternalStripForEditionsDiff() {\n\t\treturn\n\t}\n}\n\nfunc isLazy(field *protogen.Field) bool {\n\t// Prerequisite: field is of kind message\n\tif field.Message == nil {\n\t\treturn false\n\t}\n\n\t// Was the field marked as [lazy = true] in the .proto file?\n\treturn field.Desc.(interface{ IsLazy() bool }).IsLazy()\n}\n\n// opaqueGenGet generates a Get method for a field.\nfunc opaqueGenGet(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo, field *protogen.Field) {\n\tgoType, pointer := opaqueFieldGoType(g, f, message, field)\n\tgetterName, bcName := field.MethodName(\"Get\")\n\n\t// If we need a backwards compatible getter name, we add it now.\n\tif bcName != \"\" {\n\t\tdefer func() {\n\t\t\tg.P(\"// Deprecated: Use \", getterName, \" instead.\")\n\t\t\tg.P(\"func (x *\", message.GoIdent, \") \", bcName, \"() \", goType, \" {\")\n\t\t\tg.P(\"return x.\", getterName, \"()\")\n\t\t\tg.P(\"}\")\n\t\t\tg.P()\n\t\t}()\n\t}\n\n\tleadingComments := appendDeprecationSuffix(\"\",\n\t\tfield.Desc.ParentFile(),\n\t\tfield.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())\n\tfieldtrackNoInterface(g, message.isTracked)\n\tg.AnnotateSymbol(message.GoIdent.GoName+\".\"+getterName, protogen.Annotation{Location: field.Location})\n\n\tdefaultValue := fieldDefaultValue(g, f, message, field)\n\n\t// Oneof field.\n\tif oneof := field.Oneof; oneof != nil && !oneof.Desc.IsSynthetic() {\n\t\tstructPtr := \"x\"\n\t\tg.P(leadingComments, \"func (x *\", message.GoIdent, \") \", getterName, \"() \", goType, \" {\")\n\t\tg.P(\"if x != nil {\")\n\t\tif message.isOpaque() && message.isTracked {\n\t\t\tg.P(\"_ = \", structPtr, \".XXX_ft_\", field.Oneof.GoName)\n\t\t}\n\t\tg.P(\"if x, ok := \", structPtr, \".\", opaqueOneofFieldName(oneof, message.isOpaque()), \".(*\", opaqueFieldOneofType(field, message.isOpaque()), \"); ok {\")\n\t\tg.P(\"return x.\", field.GoName)\n\t\tg.P(\"}\")\n\t\t// End if m != nil {.\n\t\tg.P(\"}\")\n\t\tg.P(\"return \", defaultValue)\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\treturn\n\t}\n\n\t// Non-oneof field for open type message.\n\tif !message.isOpaque() {\n\t\tg.P(leadingComments, \"func (x *\", message.GoIdent, \") \", getterName, \"() \", goType, \" {\")\n\t\tif !field.Desc.HasPresence() || defaultValue == \"nil\" {\n\t\t\tg.P(\"if x != nil {\")\n\t\t} else {\n\t\t\tg.P(\"if x != nil && x.\", field.GoName, \" != nil {\")\n\t\t}\n\t\tstar := \"\"\n\t\tif pointer {\n\t\t\tstar = \"*\"\n\t\t}\n\t\tg.P(\"return \", star, \" x.\", field.GoName)\n\t\tg.P(\"}\")\n\t\tg.P(\"return \", defaultValue)\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\treturn\n\t}\n\n\t// Non-oneof field for opaque type message.\n\tg.P(leadingComments, \"func (x *\", message.GoIdent, \") \", getterName, \"() \", goType, \"{\")\n\tstructPtr := \"x\"\n\tg.P(\"if x != nil {\")\n\tif message.isTracked {\n\t\tg.P(\"_ = \", structPtr, \".XXX_ft_\", field.GoName)\n\t}\n\tif usePresence(message, field) {\n\t\tpi := opaqueFieldPresenceIndex(field)\n\t\tai := pi / 32\n\t\t// For\n\t\t//\n\t\t//  1. Message fields of lazy messages (unmarshalled lazily),\n\t\t//  2. Fields with a default value,\n\t\t//  3. Closed enums\n\t\t//\n\t\t// ...we check presence, but for other fields using presence, we can return\n\t\t// whatever is there and it should be correct regardless of presence, which\n\t\t// saves us an atomic operation.\n\t\tisEnum := field.Desc.Kind() == protoreflect.EnumKind\n\t\tusePresenceForRead := (isLazy(field)) ||\n\t\t\tfield.Desc.HasDefault() || isEnum\n\n\t\tif usePresenceForRead {\n\t\t\tg.P(\"if \", protoimplPackage.Ident(\"X\"), \".Present(&(\", structPtr, \".XXX_presence[\", ai, \"]),\", pi, \") {\")\n\t\t}\n\t\t// For lazy, check if pointer is nil and optionally unmarshal\n\t\tif isLazy(field) {\n\t\t\t// Since pointer to lazily unmarshaled sub-message can be written during a conceptual\n\t\t\t// \"read\" operation, all read/write accesses to the pointer must be atomic.  This\n\t\t\t// function gets inlined on x86 as just a simple get and compare. Still need to make the\n\t\t\t// slice accesses be atomic.\n\t\t\tg.P(\"if \", protoimplPackage.Ident(\"X\"), \".AtomicCheckPointerIsNil(&\", structPtr, \".xxx_hidden_\", field.GoName, \") {\")\n\t\t\tg.P(protoimplPackage.Ident(\"X\"), \".UnmarshalField(\", structPtr, \", \", field.Desc.Number(), \")\")\n\t\t\tg.P(\"}\")\n\t\t}\n\t\tif field.Message == nil || field.Desc.IsMap() {\n\t\t\tstar := \"\"\n\t\t\tif pointer {\n\t\t\t\tstar = \"*\"\n\t\t\t}\n\t\t\tif pointer {\n\t\t\t\tg.P(\"if \", structPtr, \".xxx_hidden_\", field.GoName, \"!= nil {\")\n\t\t\t}\n\n\t\t\tg.P(\"return \", star, structPtr, \".xxx_hidden_\", field.GoName)\n\t\t\tif pointer {\n\t\t\t\tg.P(\"}\")\n\t\t\t\tg.P(\"return \", defaultValue)\n\t\t\t}\n\t\t} else {\n\t\t\t// We need to do an atomic load of the msg pointer field, but cannot explicitly use\n\t\t\t// unsafe pointers here.  We load the value and store into rv, via protoimpl.Pointer,\n\t\t\t// which is aliased to unsafe.Pointer in pointer_unsafe.go, but is aliased to\n\t\t\t// interface{} in pointer_reflect.go\n\t\t\tstar := \"\"\n\t\t\tif pointer {\n\t\t\t\tstar = \"*\"\n\t\t\t}\n\t\t\tif isLazy(field) {\n\t\t\t\tg.P(\"var rv \", star, goType)\n\t\t\t\tg.P(protoimplPackage.Ident(\"X\"), \".AtomicLoadPointer(\", protoimplPackage.Ident(\"Pointer\"), \"(&\", structPtr, \".xxx_hidden_\", field.GoName, \"), \", protoimplPackage.Ident(\"Pointer\"), \"(&rv))\")\n\t\t\t\tg.P(\"return \", star, \"rv\")\n\t\t\t} else {\n\t\t\t\tif pointer {\n\t\t\t\t\tg.P(\"if \", structPtr, \".xxx_hidden_\", field.GoName, \"!= nil {\")\n\t\t\t\t}\n\t\t\t\tg.P(\"return \", star, structPtr, \".xxx_hidden_\", field.GoName)\n\t\t\t\tif pointer {\n\t\t\t\t\tg.P(\"}\")\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif usePresenceForRead {\n\t\t\tg.P(\"}\")\n\t\t}\n\t} else if pointer {\n\t\tg.P(\"if \", structPtr, \".xxx_hidden_\", field.GoName, \" != nil {\")\n\t\tg.P(\"return *\", structPtr, \".xxx_hidden_\", field.GoName)\n\t\tg.P(\"}\")\n\t} else {\n\t\tg.P(\"return \", structPtr, \".xxx_hidden_\", field.GoName)\n\t}\n\t// End if m != nil {.\n\tg.P(\"}\")\n\tg.P(\"return \", defaultValue)\n\tg.P(\"}\")\n\tg.P()\n}\n\n// opaqueGenSet generates a Set method for a field.\nfunc opaqueGenSet(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo, field *protogen.Field) {\n\tgoType, pointer := opaqueFieldGoType(g, f, message, field)\n\tsetterName, bcName := field.MethodName(\"Set\")\n\n\t// If we need a backwards compatible setter name, we add it now.\n\tif bcName != \"\" {\n\t\tdefer func() {\n\t\t\tg.P(\"// Deprecated: Use \", setterName, \" instead.\")\n\t\t\tg.P(\"func (x *\", message.GoIdent, \") \", bcName, \"(v \", goType, \") {\")\n\t\t\tg.P(\"x.\", setterName, \"(v)\")\n\t\t\tg.P(\"}\")\n\t\t\tg.P()\n\t\t}()\n\t}\n\n\tleadingComments := appendDeprecationSuffix(\"\",\n\t\tfield.Desc.ParentFile(),\n\t\tfield.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())\n\tg.AnnotateSymbol(message.GoIdent.GoName+\".\"+setterName, protogen.Annotation{\n\t\tLocation: field.Location,\n\t\tSemantic: descriptorpb.GeneratedCodeInfo_Annotation_SET.Enum(),\n\t})\n\tfieldtrackNoInterface(g, message.noInterface)\n\n\t// Oneof field.\n\tif oneof := field.Oneof; oneof != nil && !oneof.Desc.IsSynthetic() {\n\t\tg.P(leadingComments, \"func (x *\", message.GoIdent, \") \", setterName, \"(v \", goType, \") {\")\n\t\tstructPtr := \"x\"\n\t\tif message.isOpaque() && message.isTracked {\n\t\t\t// Add access to zero field for tracking\n\t\t\tg.P(structPtr, \".XXX_ft_\", oneof.GoName, \" = struct{}{}\")\n\t\t}\n\t\tif field.Desc.Kind() == protoreflect.BytesKind {\n\t\t\tg.P(\"if v == nil { v = []byte{} }\")\n\t\t} else if field.Message != nil {\n\t\t\tg.P(\"if v == nil {\")\n\t\t\tg.P(structPtr, \".\", opaqueOneofFieldName(oneof, message.isOpaque()), \"= nil\")\n\t\t\tg.P(\"return\")\n\t\t\tg.P(\"}\")\n\t\t}\n\t\tg.P(structPtr, \".\", opaqueOneofFieldName(oneof, message.isOpaque()), \"= &\", opaqueFieldOneofType(field, message.isOpaque()), \"{v}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\treturn\n\t}\n\n\t// Non-oneof field for open type message.\n\tif !message.isOpaque() {\n\t\tg.P(leadingComments, \"func (x *\", message.GoIdent, \") \", setterName, \"(v \", goType, \") {\")\n\t\tif field.Desc.Cardinality() != protoreflect.Repeated && field.Desc.Kind() == protoreflect.BytesKind {\n\t\t\tg.P(\"if v == nil { v = []byte{} }\")\n\t\t}\n\t\tamp := \"\"\n\t\tif pointer {\n\t\t\tamp = \"&\"\n\t\t}\n\n\t\tv := \"v\"\n\t\tg.P(\"x.\", field.GoName, \" = \", amp, v)\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\treturn\n\t}\n\n\t// Non-oneof field for opaque type message.\n\tg.P(leadingComments, \"func (x *\", message.GoIdent, \") \", setterName, \"(v \", goType, \") {\")\n\tstructPtr := \"x\"\n\tif message.isTracked {\n\t\t// Add access to zero field for tracking\n\t\tg.P(structPtr, \".XXX_ft_\", field.GoName, \" = struct{}{}\")\n\t}\n\tif field.Desc.Cardinality() != protoreflect.Repeated && field.Desc.Kind() == protoreflect.BytesKind {\n\t\tg.P(\"if v == nil { v = []byte{} }\")\n\t}\n\tamp := \"\"\n\tif pointer {\n\t\tamp = \"&\"\n\t}\n\tif usePresence(message, field) {\n\t\tpi := opaqueFieldPresenceIndex(field)\n\t\tai := pi / 32\n\n\t\tif field.Message != nil && field.Desc.IsList() {\n\t\t\tg.P(\"var sv *\", goType)\n\t\t\tg.P(protoimplPackage.Ident(\"X\"), \".AtomicLoadPointer(\", protoimplPackage.Ident(\"Pointer\"), \"(&\", structPtr, \".xxx_hidden_\", field.GoName, \"), \", protoimplPackage.Ident(\"Pointer\"), \"(&sv))\")\n\t\t\tg.P(\"if sv == nil {\")\n\t\t\tg.P(\"sv = &\", goType, \"{}\")\n\t\t\tg.P(protoimplPackage.Ident(\"X\"), \".AtomicInitializePointer(\", protoimplPackage.Ident(\"Pointer\"), \"(&\", structPtr, \".xxx_hidden_\", field.GoName, \"), \", protoimplPackage.Ident(\"Pointer\"), \"(&sv))\")\n\t\t\tg.P(\"}\")\n\t\t\tg.P(\"*sv = v\")\n\t\t\tg.P(protoimplPackage.Ident(\"X\"), \".SetPresent(&(\", structPtr, \".XXX_presence[\", ai, \"]),\", pi, \",\", opaqueNumPresenceFields(message), \")\")\n\t\t} else if field.Message != nil && !field.Desc.IsMap() {\n\t\t\t// Only for lazy messages do we need to set pointers atomically\n\t\t\tif isLazy(field) {\n\t\t\t\tg.P(protoimplPackage.Ident(\"X\"), \".AtomicSetPointer(&\", structPtr, \".xxx_hidden_\", field.GoName, \", \", amp, \"v)\")\n\t\t\t} else {\n\t\t\t\tg.P(structPtr, \".xxx_hidden_\", field.GoName, \" = \", amp, \"v\")\n\t\t\t}\n\t\t\t// When setting a message or slice of messages to a nil\n\t\t\t// value, we must clear the presence bit, else we will\n\t\t\t// later think that this field still needs to be lazily decoded.\n\t\t\tg.P(\"if v == nil {\")\n\t\t\tg.P(protoimplPackage.Ident(\"X\"), \".ClearPresent(&(\", structPtr, \".XXX_presence[\", ai, \"]),\", pi, \")\")\n\t\t\tg.P(\"} else {\")\n\t\t\tg.P(protoimplPackage.Ident(\"X\"), \".SetPresent(&(\", structPtr, \".XXX_presence[\", ai, \"]),\", pi, \",\", opaqueNumPresenceFields(message), \")\")\n\t\t\tg.P(\"}\")\n\t\t} else {\n\t\t\t// Any map or non-message, possibly repeated, field that uses presence (proto2 only)\n\t\t\tg.P(structPtr, \".xxx_hidden_\", field.GoName, \" = \", amp, \"v\")\n\t\t\t// For consistent behaviour with lazy fields, non-map repeated fields should be cleared when\n\t\t\t// the last object is removed. Maps are cleared when set to a nil map.\n\t\t\tif field.Desc.Cardinality() == protoreflect.Repeated { // Includes maps.\n\t\t\t\tg.P(\"if v == nil {\")\n\t\t\t\tg.P(protoimplPackage.Ident(\"X\"), \".ClearPresent(&(\", structPtr, \".XXX_presence[\", ai, \"]),\", pi, \")\")\n\t\t\t\tg.P(\"} else {\")\n\t\t\t}\n\t\t\tg.P(protoimplPackage.Ident(\"X\"), \".SetPresent(&(\", structPtr, \".XXX_presence[\", ai, \"]),\", pi, \",\", opaqueNumPresenceFields(message), \")\")\n\t\t\tif field.Desc.Cardinality() == protoreflect.Repeated {\n\t\t\t\tg.P(\"}\")\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// proto3 non-lazy fields\n\t\tg.P(structPtr, \".xxx_hidden_\", field.GoName, \" = \", amp, \"v\")\n\t}\n\tg.P(\"}\")\n\tg.P()\n}\n\n// usePresence returns true if the presence map should be used for a field. It\n// is always true for lazy message types. It is also true for all scalar fields.\n// repeated, map or message fields are not using the presence map.\nfunc usePresence(message *messageInfo, field *protogen.Field) bool {\n\tif !message.isOpaque() {\n\t\treturn false\n\t}\n\tusePresence, _ := filedesc.UsePresenceForField(field.Desc)\n\treturn usePresence\n}\n\n// opaqueGenHas generates a Has method for a field.\nfunc opaqueGenHas(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo, field *protogen.Field) {\n\thasserName, _ := field.MethodName(\"Has\")\n\n\tleadingComments := appendDeprecationSuffix(\"\",\n\t\tfield.Desc.ParentFile(),\n\t\tfield.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())\n\tg.AnnotateSymbol(message.GoIdent.GoName+\".\"+hasserName, protogen.Annotation{Location: field.Location})\n\tfieldtrackNoInterface(g, message.noInterface)\n\n\t// Oneof field.\n\tif oneof := field.Oneof; oneof != nil && !oneof.Desc.IsSynthetic() {\n\t\tg.P(leadingComments, \"func (x *\", message.GoIdent, \") \", hasserName, \"() bool {\")\n\t\tstructPtr := \"x\"\n\t\tg.P(\"if \", structPtr, \" == nil {\")\n\t\tg.P(\"return false\")\n\t\tg.P(\"}\")\n\t\tif message.isOpaque() && message.isTracked {\n\t\t\t// Add access to zero field for tracking\n\t\t\tg.P(\"_ = \", structPtr, \".\", \"XXX_ft_\", oneof.GoName)\n\t\t}\n\t\tg.P(\"_, ok := \", structPtr, \".\", opaqueOneofFieldName(oneof, message.isOpaque()), \".(*\", opaqueFieldOneofType(field, message.isOpaque()), \")\")\n\t\tg.P(\"return ok\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\treturn\n\t}\n\n\t// Non-oneof field in open message.\n\tif !message.isOpaque() {\n\t\tg.P(leadingComments, \"func (x *\", message.GoIdent, \") \", hasserName, \"() bool {\")\n\t\tg.P(\"if x == nil {\")\n\t\tg.P(\"return false\")\n\t\tg.P(\"}\")\n\t\tg.P(\"return \", \"x.\", field.GoName, \" != nil\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\treturn\n\t}\n\n\t// Non-oneof field in opaque message.\n\tg.P(leadingComments, \"func (x *\", message.GoIdent, \") \", hasserName, \"() bool {\")\n\tg.P(\"if x == nil {\")\n\tg.P(\"return false\")\n\tg.P(\"}\")\n\tstructPtr := \"x\"\n\tif message.isTracked {\n\t\t// Add access to zero field for tracking\n\t\tg.P(\"_ = \", structPtr, \".\", \"XXX_ft_\"+field.GoName)\n\t}\n\tif usePresence(message, field) {\n\t\tpi := opaqueFieldPresenceIndex(field)\n\t\tai := pi / 32\n\t\tg.P(\"return \", protoimplPackage.Ident(\"X\"), \".Present(&(\", structPtr, \".XXX_presence[\", ai, \"]),\", pi, \")\")\n\t} else {\n\t\t// Has for proto3 message without presence\n\t\tg.P(\"return \", structPtr, \".xxx_hidden_\", field.GoName, \" != nil\")\n\t}\n\n\tg.P(\"}\")\n\tg.P()\n}\n\n// opaqueGenClear generates a Clear method for a field.\nfunc opaqueGenClear(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo, field *protogen.Field) {\n\tclearerName, _ := field.MethodName(\"Clear\")\n\tpi := opaqueFieldPresenceIndex(field)\n\tai := pi / 32\n\n\tleadingComments := appendDeprecationSuffix(\"\",\n\t\tfield.Desc.ParentFile(),\n\t\tfield.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())\n\tg.AnnotateSymbol(message.GoIdent.GoName+\".\"+clearerName, protogen.Annotation{\n\t\tLocation: field.Location,\n\t\tSemantic: descriptorpb.GeneratedCodeInfo_Annotation_SET.Enum(),\n\t})\n\tfieldtrackNoInterface(g, message.noInterface)\n\n\t// Oneof field.\n\tif oneof := field.Oneof; oneof != nil && !oneof.Desc.IsSynthetic() {\n\t\tg.P(leadingComments, \"func (x *\", message.GoIdent, \") \", clearerName, \"() {\")\n\t\tstructPtr := \"x\"\n\t\tif message.isOpaque() && message.isTracked {\n\t\t\t// Add access to zero field for tracking\n\t\t\tg.P(structPtr, \".\", \"XXX_ft_\", oneof.GoName, \" = struct{}{}\")\n\t\t}\n\t\tg.P(\"if _, ok := \", structPtr, \".\", opaqueOneofFieldName(oneof, message.isOpaque()), \".(*\", opaqueFieldOneofType(field, message.isOpaque()), \"); ok {\")\n\t\tg.P(structPtr, \".\", opaqueOneofFieldName(oneof, message.isOpaque()), \" = nil\")\n\t\tg.P(\"}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\treturn\n\t}\n\n\t// Non-oneof field in open message.\n\tif !message.isOpaque() {\n\t\tg.P(leadingComments, \"func (x *\", message.GoIdent, \") \", clearerName, \"() {\")\n\t\tg.P(\"x.\", field.GoName, \" = nil\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\treturn\n\t}\n\n\t// Non-oneof field in opaque message.\n\tg.P(leadingComments, \"func (x *\", message.GoIdent, \") \", clearerName, \"() {\")\n\tstructPtr := \"x\"\n\tif message.isTracked {\n\t\t// Add access to zero field for tracking\n\t\tg.P(structPtr, \".\", \"XXX_ft_\", field.GoName, \" = struct{}{}\")\n\t}\n\n\tif usePresence(message, field) {\n\t\tg.P(protoimplPackage.Ident(\"X\"), \".ClearPresent(&(\", structPtr, \".XXX_presence[\", ai, \"]),\", pi, \")\")\n\t}\n\n\t// Avoid needing to read the presence value in Get by ensuring that we set the\n\t// right zero value (unless we have an explicit default, in which case we\n\t// revert to presence checking in Get). Rationale: Get is called far more\n\t// frequently than Clear, it should be as lean as possible.\n\tzv := opaqueZeroValueForField(g, field)\n\t// For lazy, (repeated) message fields are unmarshalled lazily. Hence they are\n\t// assigned atomically in Getters (which are allowed to be called\n\t// concurrently). Due to this, historically, the code generator would use\n\t// atomic operations everywhere.\n\t//\n\t// TODO(b/291588964): Stop using atomic operations for non-presence fields in\n\t//                    write calls (Set/Clear). Concurrent reads are allowed,\n\t//                    but concurrent read/write or write/write are not, we\n\t//                    shouldn't cater to it.\n\tif isLazy(field) {\n\t\tgoType, _ := opaqueFieldGoType(g, f, message, field)\n\t\tg.P(protoimplPackage.Ident(\"X\"), \".AtomicSetPointer(&\", structPtr, \".xxx_hidden_\", field.GoName, \",(\", goType, \")(\", zv, \"))\")\n\t} else if !field.Desc.HasDefault() {\n\t\tg.P(structPtr, \".xxx_hidden_\", field.GoName, \" = \", zv)\n\t}\n\tg.P(\"}\")\n\tg.P()\n}\n\n// Determine what value to set a cleared field to.\nfunc opaqueZeroValueForField(g *protogen.GeneratedFile, field *protogen.Field) string {\n\tif field.Desc.Cardinality() == protoreflect.Repeated {\n\t\treturn \"nil\"\n\t}\n\tswitch field.Desc.Kind() {\n\tcase protoreflect.StringKind:\n\t\treturn \"nil\"\n\tcase protoreflect.MessageKind, protoreflect.GroupKind, protoreflect.BytesKind:\n\t\treturn \"nil\"\n\tcase protoreflect.BoolKind:\n\t\treturn \"false\"\n\tcase protoreflect.EnumKind:\n\t\treturn g.QualifiedGoIdent(field.Enum.Values[0].GoIdent)\n\tdefault:\n\t\treturn \"0\"\n\t}\n}\n\n// opaqueGenGetOneof generates a Get function for a oneof union.\nfunc opaqueGenGetOneof(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo, oneof *protogen.Oneof) {\n\tifName := opaqueOneofInterfaceName(oneof)\n\tg.AnnotateSymbol(message.GoIdent.GoName+\".Get\"+oneof.GoName, protogen.Annotation{Location: oneof.Location})\n\tfieldtrackNoInterface(g, message.isTracked)\n\tg.P(\"func (x *\", message.GoIdent.GoName, \") Get\", oneof.GoName, \"() \", ifName, \" {\")\n\tg.P(\"if x != nil {\")\n\tg.P(\"return x.\", opaqueOneofFieldName(oneof, message.isOpaque()))\n\tg.P(\"}\")\n\tg.P(\"return nil\")\n\tg.P(\"}\")\n\tg.P()\n}\n\n// opaqueGenHasOneof generates a Has function for a oneof union.\nfunc opaqueGenHasOneof(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo, oneof *protogen.Oneof) {\n\tfieldtrackNoInterface(g, message.noInterface)\n\thasserName := oneof.MethodName(\"Has\")\n\tg.P(\"func (x *\", message.GoIdent, \") \", hasserName, \"() bool {\")\n\tg.P(\"if x == nil {\")\n\tg.P(\"return false\")\n\tg.P(\"}\")\n\tstructPtr := \"x\"\n\tif message.isOpaque() && message.isTracked {\n\t\t// Add access to zero field for tracking\n\t\tg.P(\"_ = \", structPtr, \".XXX_ft_\", oneof.GoName)\n\t}\n\tg.P(\"return \", structPtr, \".\", opaqueOneofFieldName(oneof, message.isOpaque()), \" != nil\")\n\tg.P(\"}\")\n\tg.P()\n}\n\n// opaqueGenClearOneof generates a Clear function for a oneof union.\nfunc opaqueGenClearOneof(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo, oneof *protogen.Oneof) {\n\tfieldtrackNoInterface(g, message.noInterface)\n\tclearerName := oneof.MethodName(\"Clear\")\n\tg.P(\"func (x *\", message.GoIdent, \") \", clearerName, \"() {\")\n\tstructPtr := \"x\"\n\tif message.isOpaque() && message.isTracked {\n\t\t// Add access to zero field for tracking\n\t\tg.P(structPtr, \".\", \"XXX_ft_\", oneof.GoName, \" = struct{}{}\")\n\t}\n\tg.P(structPtr, \".\", opaqueOneofFieldName(oneof, message.isOpaque()), \" = nil\")\n\tg.P(\"}\")\n\tg.P()\n}\n\n// opaqueGenWhichOneof generates the Which method for each oneof union, as well as the case values for each member\n// of that union.\nfunc opaqueGenWhichOneof(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo) {\n\t// Go through the message, and for each field that is the first of a oneof field, dig down\n\t// and generate constants + the actual which method.\n\toneofIndex := 0\n\tfor _, field := range message.Fields {\n\t\tif oneof := field.Oneof; oneof != nil {\n\t\t\tif !isFirstOneofField(field) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcaseType := opaqueOneofCaseTypeName(oneof)\n\t\t\tg.P(\"const \", message.GoIdent.GoName, \"_\", oneof.GoName, \"_not_set_case \", caseType, \" = \", 0)\n\t\t\tfor _, f := range oneof.Fields {\n\t\t\t\tg.AnnotateSymbol(message.GoIdent.GoName+\"_\"+f.GoName+\"_case\", protogen.Annotation{Location: f.Location})\n\t\t\t\tg.P(\"const \", message.GoIdent.GoName, \"_\", f.GoName, \"_case \", caseType, \" = \", f.Desc.Number())\n\t\t\t}\n\t\t\tfieldtrackNoInterface(g, message.noInterface)\n\t\t\twhicherName := oneof.MethodName(\"Which\")\n\t\t\tg.AnnotateSymbol(message.GoIdent.GoName+\".\"+whicherName, protogen.Annotation{Location: oneof.Location})\n\t\t\tg.P(\"func (x *\", message.GoIdent, \") \", whicherName, \"() \", caseType, \" {\")\n\t\t\tg.P(\"if x == nil {\")\n\t\t\tg.P(\"return \", message.GoIdent.GoName, \"_\", oneof.GoName, \"_not_set_case \")\n\t\t\tg.P(\"}\")\n\t\t\tg.P(\"switch x.\", opaqueOneofFieldName(oneof, message.isOpaque()), \".(type) {\")\n\t\t\tfor _, f := range oneof.Fields {\n\t\t\t\tg.P(\"case *\", opaqueFieldOneofType(f, message.isOpaque()), \":\")\n\t\t\t\tg.P(\"return \", message.GoIdent.GoName, \"_\", f.GoName, \"_case\")\n\t\t\t}\n\t\t\tg.P(\"default\", \":\")\n\t\t\tg.P(\"return \", message.GoIdent.GoName, \"_\", oneof.GoName, \"_not_set_case \")\n\t\t\tg.P(\"}\")\n\t\t\tg.P(\"}\")\n\t\t\tg.P()\n\t\t\toneofIndex++\n\t\t}\n\t}\n}\n\nfunc opaqueNeedsPresenceArray(message *messageInfo) bool {\n\tif !message.isOpaque() {\n\t\treturn false\n\t}\n\tfor _, field := range message.Fields {\n\t\tif usePresence, _ := filedesc.UsePresenceForField(field.Desc); usePresence {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc opaqueNeedsLazyStruct(message *messageInfo) bool {\n\tfor _, field := range message.Fields {\n\t\tif isLazy(field) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// opaqueGenMessageBuilder generates a Builder type for a message.\nfunc opaqueGenMessageBuilder(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo) {\n\tif message.isOpen() {\n\t\treturn\n\t}\n\t// Builder type.\n\tbName := g.QualifiedGoIdent(message.GoIdent) + genid.BuilderSuffix_goname\n\tg.AnnotateSymbol(message.GoIdent.GoName+genid.BuilderSuffix_goname, protogen.Annotation{Location: message.Location})\n\n\tleadingComments := appendDeprecationSuffix(\"\",\n\t\tmessage.Desc.ParentFile(),\n\t\tmessage.Desc.Options().(*descriptorpb.MessageOptions).GetDeprecated())\n\tg.P(leadingComments, \"type \", bName, \" struct {\")\n\tg.P(\"_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.\")\n\tg.P()\n\tfor _, field := range message.Fields {\n\t\toneof := field.Oneof\n\n\t\tgoType, pointer := opaqueBuilderFieldGoType(g, f, message, field)\n\t\tif pointer {\n\t\t\tgoType = \"*\" + goType\n\t\t} else if oneof != nil && fieldDefaultValue(g, f, message, field) != \"nil\" {\n\t\t\tgoType = \"*\" + goType\n\t\t}\n\t\t// Track all non-oneof fields. Note: synthetic oneofs are an\n\t\t// implementation detail of proto3 optional fields:\n\t\t// go/proto-proposals/proto3-presence.md, which should be tracked.\n\t\ttag := \"\"\n\t\tif (oneof == nil || oneof.Desc.IsSynthetic()) && message.isTracked {\n\t\t\ttag = \"`go:\\\"track\\\"`\"\n\t\t}\n\t\tif oneof != nil && oneof.Fields[0] == field && !oneof.Desc.IsSynthetic() {\n\t\t\tif oneof.Comments.Leading != \"\" {\n\t\t\t\tg.P(oneof.Comments.Leading)\n\t\t\t\tg.P()\n\t\t\t}\n\t\t\tg.P(\"// Fields of oneof \", opaqueOneofFieldName(oneof, message.isOpaque()), \":\")\n\t\t}\n\t\tg.AnnotateSymbol(field.Parent.GoIdent.GoName+genid.BuilderSuffix_goname+\".\"+field.BuilderFieldName(), protogen.Annotation{Location: field.Location})\n\t\tleadingComments := appendDeprecationSuffix(field.Comments.Leading,\n\t\t\tfield.Desc.ParentFile(),\n\t\t\tfield.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())\n\t\tg.P(leadingComments,\n\t\t\tfield.BuilderFieldName(), \" \", goType, \" \", tag)\n\t\tif oneof != nil && oneof.Fields[len(oneof.Fields)-1] == field && !oneof.Desc.IsSynthetic() {\n\t\t\tg.P(\"// -- end of \", opaqueOneofFieldName(oneof, message.isOpaque()))\n\t\t}\n\t}\n\tg.P(\"}\")\n\tg.P()\n\n\topaqueGenBuildMethod(g, f, message, bName)\n}\n\n// opaqueGenBuildMethod generates the actual Build method for the builder\nfunc opaqueGenBuildMethod(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo, bName string) {\n\t// Build method on the builder type.\n\tfieldtrackNoInterface(g, message.noInterface)\n\tg.P(\"func (b0 \", bName, \") Build() *\", message.GoIdent, \" {\")\n\tg.P(\"m0 := &\", message.GoIdent, \"{}\")\n\n\tif message.isTracked {\n\t\t// Redeclare the builder and message types as local\n\t\t// defined types, so that field tracking records the\n\t\t// field uses against these types instead of the\n\t\t// original struct types.\n\t\t//\n\t\t// TODO: Actually redeclare the struct types\n\t\t// without `go:\"track\"` tags?\n\t\tg.P(\"type (notrackB \", bName, \"; notrackM \", message.GoIdent, \")\")\n\t\tg.P(\"b, x := (*notrackB)(&b0), (*notrackM)(m0)\")\n\t} else {\n\t\tg.P(\"b, x := &b0, m0\")\n\t}\n\tg.P(\"_, _ = b, x\")\n\n\tfor _, field := range message.Fields {\n\t\toneof := field.Oneof\n\t\tif oneof != nil && !oneof.Desc.IsSynthetic() {\n\t\t\tqual := \"\"\n\t\t\tif fieldDefaultValue(g, f, message, field) != \"nil\" {\n\t\t\t\tqual = \"*\"\n\t\t\t}\n\n\t\t\tg.P(\"if b.\", field.BuilderFieldName(), \" != nil {\")\n\t\t\toneofName := opaqueOneofFieldName(oneof, message.isOpaque())\n\t\t\toneofType := opaqueFieldOneofType(field, message.isOpaque())\n\t\t\tg.P(\"x.\", oneofName, \" = &\", oneofType, \"{\", qual, \"b.\", field.BuilderFieldName(), \"}\")\n\t\t\tg.P(\"}\")\n\t\t} else { // proto3 optional ends up here (synthetic oneof)\n\t\t\tqual := \"\"\n\t\t\t_, pointer := opaqueBuilderFieldGoType(g, f, message, field)\n\t\t\tif pointer && message.isOpaque() && !field.Desc.IsList() && field.Desc.Kind() != protoreflect.StringKind {\n\t\t\t\tqual = \"*\"\n\t\t\t} else if message.isOpaque() && field.Desc.IsList() && field.Desc.Message() != nil {\n\t\t\t\tqual = \"&\"\n\t\t\t}\n\t\t\tpresence := usePresence(message, field)\n\t\t\tif presence {\n\t\t\t\tg.P(\"if b.\", field.BuilderFieldName(), \" != nil {\")\n\t\t\t}\n\t\t\tif presence {\n\t\t\t\tpi := opaqueFieldPresenceIndex(field)\n\t\t\t\tg.P(protoimplPackage.Ident(\"X\"), \".SetPresentNonAtomic(&(x.XXX_presence[\", pi/32, \"]),\", pi, \",\", opaqueNumPresenceFields(message), \")\")\n\t\t\t}\n\t\t\tgoName := field.GoName\n\t\t\tif message.isOpaque() {\n\t\t\t\tgoName = \"xxx_hidden_\" + goName\n\t\t\t}\n\t\t\tg.P(\"x.\", goName, \" = \", qual, \"b.\", field.BuilderFieldName())\n\t\t\tif presence {\n\t\t\t\tg.P(\"}\")\n\t\t\t}\n\t\t}\n\t}\n\n\tg.P(\"return m0\")\n\tg.P(\"}\")\n\tg.P()\n}\n\n// opaqueBuilderFieldGoType does the same as opaqueFieldGoType, but corrects for\n// types that are different in a builder\nfunc opaqueBuilderFieldGoType(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo, field *protogen.Field) (goType string, pointer bool) {\n\tgoType, pointer = opaqueFieldGoType(g, f, message, field)\n\tkind := field.Desc.Kind()\n\n\t// Use []T instead of *[]T for opaque repeated lists.\n\tif message.isOpaque() && field.Desc.IsList() {\n\t\tpointer = false\n\t}\n\n\t// Use *T for optional fields.\n\toptional := field.Desc.HasPresence()\n\tif optional &&\n\t\tkind != protoreflect.GroupKind &&\n\t\tkind != protoreflect.MessageKind &&\n\t\tkind != protoreflect.BytesKind &&\n\t\tfield.Desc.Cardinality() != protoreflect.Repeated {\n\t\tpointer = true\n\t}\n\n\treturn goType, pointer\n}\n\nfunc opaqueGenOneofWrapperTypes(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo) {\n\t// TODO: We should avoid generating these wrapper types in pure-opaque mode.\n\tif !message.isOpen() {\n\t\tfor _, oneof := range message.Oneofs {\n\t\t\tif oneof.Desc.IsSynthetic() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcaseTypeName := opaqueOneofCaseTypeName(oneof)\n\t\t\tg.P(\"type \", caseTypeName, \" \", protoreflectPackage.Ident(\"FieldNumber\"))\n\t\t\tg.P(\"\")\n\n\t\t\tidx := f.allMessagesByPtr[message]\n\t\t\ttypesVar := messageTypesVarName(f)\n\t\t\tg.P(\"func (x \", caseTypeName, \") String() string {\")\n\t\t\tg.P(\"md := \", typesVar, \"[\", idx, \"].Descriptor()\")\n\t\t\tg.P(\"if x == 0 {\")\n\t\t\tg.P(`return \"not set\"`)\n\t\t\tg.P(\"}\")\n\t\t\tg.P(\"return \", protoimplPackage.Ident(\"X\"), \".MessageFieldStringOf(md, \", protoreflectPackage.Ident(\"FieldNumber\"), \"(x))\")\n\t\t\tg.P(\"}\")\n\t\t\tg.P()\n\t\t}\n\t}\n\tfor _, oneof := range message.Oneofs {\n\t\tif oneof.Desc.IsSynthetic() {\n\t\t\tcontinue\n\t\t}\n\t\tifName := opaqueOneofInterfaceName(oneof)\n\t\tg.P(\"type \", ifName, \" interface {\")\n\t\tg.P(ifName, \"()\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\tfor _, field := range oneof.Fields {\n\t\t\tname := opaqueFieldOneofType(field, message.isOpaque())\n\t\t\tg.AnnotateSymbol(name.GoName, protogen.Annotation{Location: field.Location})\n\t\t\tg.AnnotateSymbol(name.GoName+\".\"+field.GoName, protogen.Annotation{Location: field.Location})\n\t\t\tg.P(\"type \", name, \" struct {\")\n\t\t\tgoType, _ := opaqueFieldGoType(g, f, message, field)\n\t\t\tprotobufTagValue := fieldProtobufTagValue(field)\n\t\t\tif g.InternalStripForEditionsDiff() {\n\t\t\t\tprotobufTagValue = strings.ReplaceAll(protobufTagValue, \",proto3\", \"\")\n\t\t\t}\n\t\t\ttags := structTags{\n\t\t\t\t{\"protobuf\", protobufTagValue},\n\t\t\t}\n\t\t\tleadingComments := appendDeprecationSuffix(field.Comments.Leading,\n\t\t\t\tfield.Desc.ParentFile(),\n\t\t\t\tfield.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())\n\t\t\tg.P(leadingComments,\n\t\t\t\tfield.GoName, \" \", goType, tags,\n\t\t\t\ttrailingComment(field.Comments.Trailing))\n\t\t\tg.P(\"}\")\n\t\t\tg.P()\n\t\t}\n\t\tfor _, field := range oneof.Fields {\n\t\t\tg.P(\"func (*\", opaqueFieldOneofType(field, message.isOpaque()), \") \", ifName, \"() {}\")\n\t\t\tg.P()\n\t\t}\n\t}\n}\n\n// opaqueFieldGoType returns the Go type used for a field.\n//\n// If it returns pointer=true, the struct field is a pointer to the type.\nfunc opaqueFieldGoType(g *protogen.GeneratedFile, f *fileInfo, message *messageInfo, field *protogen.Field) (goType string, pointer bool) {\n\tpointer = true\n\tswitch field.Desc.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tgoType = \"bool\"\n\tcase protoreflect.EnumKind:\n\t\tgoType = g.QualifiedGoIdent(field.Enum.GoIdent)\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tgoType = \"int32\"\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tgoType = \"uint32\"\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tgoType = \"int64\"\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tgoType = \"uint64\"\n\tcase protoreflect.FloatKind:\n\t\tgoType = \"float32\"\n\tcase protoreflect.DoubleKind:\n\t\tgoType = \"float64\"\n\tcase protoreflect.StringKind:\n\t\tgoType = \"string\"\n\tcase protoreflect.BytesKind:\n\t\tgoType = \"[]byte\"\n\t\tpointer = false\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tgoType = opaqueMessageFieldGoType(g, f, field, message.isOpaque())\n\t\tpointer = false\n\t}\n\tswitch {\n\tcase field.Desc.IsList():\n\t\tgoType = \"[]\" + goType\n\t\tpointer = false\n\tcase field.Desc.IsMap():\n\t\tkeyType, _ := opaqueFieldGoType(g, f, message, field.Message.Fields[0])\n\t\tvalType, _ := opaqueFieldGoType(g, f, message, field.Message.Fields[1])\n\t\treturn fmt.Sprintf(\"map[%v]%v\", keyType, valType), false\n\t}\n\n\t// Extension fields always have pointer type, even when defined in a proto3 file.\n\tif !field.Desc.IsExtension() && !field.Desc.HasPresence() {\n\t\tpointer = false\n\t}\n\n\tif message.isOpaque() {\n\t\tswitch {\n\t\tcase field.Desc.IsList() && field.Desc.Message() != nil:\n\t\t\tpointer = true\n\t\tcase !field.Desc.IsList() && field.Desc.Kind() == protoreflect.StringKind:\n\t\t\tswitch {\n\t\t\tcase field.Desc.HasPresence():\n\t\t\t\tpointer = true\n\t\t\tdefault:\n\t\t\t\tpointer = false\n\t\t\t}\n\t\tdefault:\n\t\t\tpointer = false\n\t\t}\n\t}\n\n\treturn goType, pointer\n}\n\nfunc opaqueMessageFieldGoType(g *protogen.GeneratedFile, f *fileInfo, field *protogen.Field, isOpaque bool) string {\n\treturn \"*\" + g.QualifiedGoIdent(field.Message.GoIdent)\n}\n\n// opaqueFieldPresenceIndex returns the index to pass to presence functions.\n//\n// TODO: field.Desc.Index() would be simpler, and would give space to record the presence of oneof fields.\nfunc opaqueFieldPresenceIndex(field *protogen.Field) int {\n\tstructFieldIndex := 0\n\tfor _, f := range field.Parent.Fields {\n\t\tif field == f {\n\t\t\tbreak\n\t\t}\n\t\tif f.Oneof == nil || isLastOneofField(f) {\n\t\t\tstructFieldIndex++\n\t\t}\n\t}\n\treturn structFieldIndex\n}\n\n// opaqueNumPresenceFields returns the number of fields that may be passed to presence functions.\n//\n// Since all fields in a oneof currently share a single entry in the presence bitmap,\n// this is not just len(message.Fields).\nfunc opaqueNumPresenceFields(message *messageInfo) int {\n\tif len(message.Fields) == 0 {\n\t\treturn 0\n\t}\n\treturn opaqueFieldPresenceIndex(message.Fields[len(message.Fields)-1]) + 1\n}\n\nfunc fieldtrackNoInterface(g *protogen.GeneratedFile, isTracked bool) {\n\tif isTracked {\n\t\tg.P(\"//go:nointerface\")\n\t}\n}\n\n// opaqueOneofFieldName returns the name of the struct field that holds\n// the value of a oneof.\nfunc opaqueOneofFieldName(oneof *protogen.Oneof, isOpaque bool) string {\n\tif isOpaque {\n\t\treturn \"xxx_hidden_\" + oneof.GoName\n\t}\n\treturn oneof.GoName\n}\n\nfunc opaqueFieldOneofType(field *protogen.Field, isOpaque bool) protogen.GoIdent {\n\tident := protogen.GoIdent{\n\t\tGoImportPath: field.Parent.GoIdent.GoImportPath,\n\t\tGoName:       field.Parent.GoIdent.GoName + \"_\" + field.GoName,\n\t}\n\t// Check for collisions with nested messages or enums.\n\t//\n\t// This conflict resolution is incomplete: Among other things, it\n\t// does not consider collisions with other oneof field types.\nLoop:\n\tfor {\n\t\tfor _, message := range field.Parent.Messages {\n\t\t\tif message.GoIdent == ident {\n\t\t\t\tident.GoName += \"_\"\n\t\t\t\tcontinue Loop\n\t\t\t}\n\t\t}\n\t\tfor _, enum := range field.Parent.Enums {\n\t\t\tif enum.GoIdent == ident {\n\t\t\t\tident.GoName += \"_\"\n\t\t\t\tcontinue Loop\n\t\t\t}\n\t\t}\n\t\treturn unexportIdent(ident, isOpaque)\n\t}\n}\n\n// unexportIdent turns id into its unexported version (by lower-casing), but\n// only if isOpaque is set. This function is used for oneof wrapper types,\n// which remain exported in the non-opaque API for now.\nfunc unexportIdent(id protogen.GoIdent, isOpaque bool) protogen.GoIdent {\n\tif !isOpaque {\n\t\treturn id\n\t}\n\tr, sz := utf8.DecodeRuneInString(id.GoName)\n\tif r == utf8.RuneError {\n\t\tpanic(fmt.Sprintf(\"Go identifier %q contains invalid UTF8?!\", id.GoName))\n\t}\n\tr = unicode.ToLower(r)\n\tid.GoName = string(r) + id.GoName[sz:]\n\treturn id\n}\n\nfunc opaqueOneofInterfaceName(oneof *protogen.Oneof) string {\n\treturn fmt.Sprintf(\"is%s_%s\", oneof.Parent.GoIdent.GoName, oneof.GoName)\n}\nfunc opaqueOneofCaseTypeName(oneof *protogen.Oneof) string {\n\treturn fmt.Sprintf(\"case_%s_%s\", oneof.Parent.GoIdent.GoName, oneof.GoName)\n}\n\n// isFirstOneofField reports whether this is the first field in a oneof.\nfunc isFirstOneofField(field *protogen.Field) bool {\n\treturn field.Oneof != nil && field == field.Oneof.Fields[0] && !field.Oneof.Desc.IsSynthetic()\n}\n\n// isLastOneofField returns true if this is the last field in a oneof.\nfunc isLastOneofField(field *protogen.Field) bool {\n\treturn field.Oneof != nil && field == field.Oneof.Fields[len(field.Oneof.Fields)-1]\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo/reflect.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage internal_gengo\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"math\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/compiler/protogen\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protopath\"\n\t\"google.golang.org/protobuf/reflect/protorange\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nfunc genReflectFileDescriptor(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo) {\n\tg.P(\"var \", f.GoDescriptorIdent, \" \", protoreflectPackage.Ident(\"FileDescriptor\"))\n\tg.P()\n\n\tgenFileDescriptor(gen, g, f)\n\tif len(f.allEnums) > 0 {\n\t\tg.P(\"var \", enumTypesVarName(f), \" = make([]\", protoimplPackage.Ident(\"EnumInfo\"), \",\", len(f.allEnums), \")\")\n\t}\n\tif len(f.allMessages) > 0 {\n\t\tg.P(\"var \", messageTypesVarName(f), \" = make([]\", protoimplPackage.Ident(\"MessageInfo\"), \",\", len(f.allMessages), \")\")\n\t}\n\n\t// Generate a unique list of Go types for all declarations and dependencies,\n\t// and the associated index into the type list for all dependencies.\n\tvar goTypes []string\n\tvar depIdxs []string\n\tseen := map[protoreflect.FullName]int{}\n\tgenDep := func(name protoreflect.FullName, depSource string) {\n\t\tif depSource != \"\" {\n\t\t\tline := fmt.Sprintf(\"%d, // %d: %s -> %s\", seen[name], len(depIdxs), depSource, name)\n\t\t\tdepIdxs = append(depIdxs, line)\n\t\t}\n\t}\n\tgenEnum := func(e *protogen.Enum, depSource string) {\n\t\tif e != nil {\n\t\t\tname := e.Desc.FullName()\n\t\t\tif _, ok := seen[name]; !ok {\n\t\t\t\tline := fmt.Sprintf(\"(%s)(0), // %d: %s\", g.QualifiedGoIdent(e.GoIdent), len(goTypes), name)\n\t\t\t\tgoTypes = append(goTypes, line)\n\t\t\t\tseen[name] = len(seen)\n\t\t\t}\n\t\t\tif depSource != \"\" {\n\t\t\t\tgenDep(name, depSource)\n\t\t\t}\n\t\t}\n\t}\n\tgenMessage := func(m *protogen.Message, depSource string) {\n\t\tif m != nil {\n\t\t\tname := m.Desc.FullName()\n\t\t\tif _, ok := seen[name]; !ok {\n\t\t\t\tline := fmt.Sprintf(\"(*%s)(nil), // %d: %s\", g.QualifiedGoIdent(m.GoIdent), len(goTypes), name)\n\t\t\t\tif m.Desc.IsMapEntry() {\n\t\t\t\t\t// Map entry messages have no associated Go type.\n\t\t\t\t\tline = fmt.Sprintf(\"nil, // %d: %s\", len(goTypes), name)\n\t\t\t\t}\n\t\t\t\tgoTypes = append(goTypes, line)\n\t\t\t\tseen[name] = len(seen)\n\t\t\t}\n\t\t\tif depSource != \"\" {\n\t\t\t\tgenDep(name, depSource)\n\t\t\t}\n\t\t}\n\t}\n\n\t// This ordering is significant.\n\t// See filetype.TypeBuilder.DependencyIndexes.\n\ttype offsetEntry struct {\n\t\tstart int\n\t\tname  string\n\t}\n\tvar depOffsets []offsetEntry\n\tfor _, enum := range f.allEnums {\n\t\tgenEnum(enum.Enum, \"\")\n\t}\n\tfor _, message := range f.allMessages {\n\t\tgenMessage(message.Message, \"\")\n\t}\n\tdepOffsets = append(depOffsets, offsetEntry{len(depIdxs), \"field type_name\"})\n\tfor _, message := range f.allMessages {\n\t\tfor _, field := range message.Fields {\n\t\t\tsource := string(field.Desc.FullName())\n\t\t\tgenEnum(field.Enum, source+\":type_name\")\n\t\t\tgenMessage(field.Message, source+\":type_name\")\n\t\t}\n\t}\n\tdepOffsets = append(depOffsets, offsetEntry{len(depIdxs), \"extension extendee\"})\n\tfor _, extension := range f.allExtensions {\n\t\tsource := string(extension.Desc.FullName())\n\t\tgenMessage(extension.Extendee, source+\":extendee\")\n\t}\n\tdepOffsets = append(depOffsets, offsetEntry{len(depIdxs), \"extension type_name\"})\n\tfor _, extension := range f.allExtensions {\n\t\tsource := string(extension.Desc.FullName())\n\t\tgenEnum(extension.Enum, source+\":type_name\")\n\t\tgenMessage(extension.Message, source+\":type_name\")\n\t}\n\tdepOffsets = append(depOffsets, offsetEntry{len(depIdxs), \"method input_type\"})\n\tfor _, service := range f.Services {\n\t\tfor _, method := range service.Methods {\n\t\t\tsource := string(method.Desc.FullName())\n\t\t\tgenMessage(method.Input, source+\":input_type\")\n\t\t}\n\t}\n\tdepOffsets = append(depOffsets, offsetEntry{len(depIdxs), \"method output_type\"})\n\tfor _, service := range f.Services {\n\t\tfor _, method := range service.Methods {\n\t\t\tsource := string(method.Desc.FullName())\n\t\t\tgenMessage(method.Output, source+\":output_type\")\n\t\t}\n\t}\n\tdepOffsets = append(depOffsets, offsetEntry{len(depIdxs), \"\"})\n\tfor i := len(depOffsets) - 2; i >= 0; i-- {\n\t\tcurr, next := depOffsets[i], depOffsets[i+1]\n\t\tdepIdxs = append(depIdxs, fmt.Sprintf(\"%d, // [%d:%d] is the sub-list for %s\",\n\t\t\tcurr.start, curr.start, next.start, curr.name))\n\t}\n\tif len(depIdxs) > math.MaxInt32 {\n\t\tpanic(\"too many dependencies\") // sanity check\n\t}\n\n\tg.P(\"var \", goTypesVarName(f), \" = []any{\")\n\tfor _, s := range goTypes {\n\t\tg.P(s)\n\t}\n\tg.P(\"}\")\n\n\tg.P(\"var \", depIdxsVarName(f), \" = []int32{\")\n\tfor _, s := range depIdxs {\n\t\tg.P(s)\n\t}\n\tg.P(\"}\")\n\n\tg.P(\"func init() { \", initFuncName(f.File), \"() }\")\n\n\tg.P(\"func \", initFuncName(f.File), \"() {\")\n\tg.P(\"if \", f.GoDescriptorIdent, \" != nil {\")\n\tg.P(\"return\")\n\tg.P(\"}\")\n\n\t// Ensure that initialization functions for different files in the same Go\n\t// package run in the correct order: Call the init funcs for every .proto file\n\t// imported by this one that is in the same Go package.\n\tfor i, imps := 0, f.Desc.Imports(); i < imps.Len(); i++ {\n\t\timpFile := gen.FilesByPath[imps.Get(i).Path()]\n\t\tif impFile.GoImportPath != f.GoImportPath {\n\t\t\tcontinue\n\t\t}\n\t\tg.P(initFuncName(impFile), \"()\")\n\t}\n\n\tif len(f.allMessages) > 0 {\n\t\t// Populate MessageInfo.OneofWrappers.\n\t\tfor _, message := range f.allMessages {\n\t\t\tif len(message.Oneofs) > 0 {\n\t\t\t\tidx := f.allMessagesByPtr[message]\n\t\t\t\ttypesVar := messageTypesVarName(f)\n\n\t\t\t\t// Associate the wrapper types by directly passing them to the MessageInfo.\n\t\t\t\tg.P(typesVar, \"[\", idx, \"].OneofWrappers = []any {\")\n\t\t\t\tfor _, oneof := range message.Oneofs {\n\t\t\t\t\tif !oneof.Desc.IsSynthetic() {\n\t\t\t\t\t\tfor _, field := range oneof.Fields {\n\t\t\t\t\t\t\tg.P(\"(*\", unexportIdent(field.GoIdent, message.isOpaque()), \")(nil),\")\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tg.P(\"}\")\n\t\t\t}\n\t\t}\n\t}\n\n\tg.P(\"type x struct{}\")\n\tg.P(\"out := \", protoimplPackage.Ident(\"TypeBuilder\"), \"{\")\n\tg.P(\"File: \", protoimplPackage.Ident(\"DescBuilder\"), \"{\")\n\tg.P(\"GoPackagePath: \", reflectPackage.Ident(\"TypeOf\"), \"(x{}).PkgPath(),\")\n\t// Avoid a copy of the descriptor. This means modification of the\n\t// RawDescriptor byte slice will crash the program. But generated\n\t// RawDescriptors are never supposed to be modified anyway.\n\tg.P(\"RawDescriptor: \", unsafeBytesRawDesc(g, f), \",\")\n\tg.P(\"NumEnums: \", len(f.allEnums), \",\")\n\tg.P(\"NumMessages: \", len(f.allMessages), \",\")\n\tg.P(\"NumExtensions: \", len(f.allExtensions), \",\")\n\tg.P(\"NumServices: \", len(f.Services), \",\")\n\tg.P(\"},\")\n\tg.P(\"GoTypes: \", goTypesVarName(f), \",\")\n\tg.P(\"DependencyIndexes: \", depIdxsVarName(f), \",\")\n\tif len(f.allEnums) > 0 {\n\t\tg.P(\"EnumInfos: \", enumTypesVarName(f), \",\")\n\t}\n\tif len(f.allMessages) > 0 {\n\t\tg.P(\"MessageInfos: \", messageTypesVarName(f), \",\")\n\t}\n\tif len(f.allExtensions) > 0 {\n\t\tg.P(\"ExtensionInfos: \", extensionTypesVarName(f), \",\")\n\t}\n\tg.P(\"}.Build()\")\n\tg.P(f.GoDescriptorIdent, \" = out.File\")\n\n\t// Set inputs to nil to allow GC to reclaim resources.\n\tg.P(goTypesVarName(f), \" = nil\")\n\tg.P(depIdxsVarName(f), \" = nil\")\n\tg.P(\"}\")\n}\n\n// stripSourceRetentionFieldsFromMessage walks the given message tree recursively\n// and clears any fields with the field option: [retention = RETENTION_SOURCE]\nfunc stripSourceRetentionFieldsFromMessage(m protoreflect.Message) {\n\tprotorange.Range(m, func(ppv protopath.Values) error {\n\t\tm2, ok := ppv.Index(-1).Value.Interface().(protoreflect.Message)\n\t\tif !ok {\n\t\t\treturn nil\n\t\t}\n\t\tm2.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\t\tfdo, ok := fd.Options().(*descriptorpb.FieldOptions)\n\t\t\tif ok && fdo.GetRetention() == descriptorpb.FieldOptions_RETENTION_SOURCE {\n\t\t\t\tm2.Clear(fd)\n\t\t\t}\n\t\t\treturn true\n\t\t})\n\t\treturn nil\n\t})\n}\n\nfunc genFileDescriptor(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo) {\n\tdescProto := proto.Clone(f.Proto).(*descriptorpb.FileDescriptorProto)\n\tdescProto.SourceCodeInfo = nil // drop source code information\n\tstripSourceRetentionFieldsFromMessage(descProto.ProtoReflect())\n\tb, err := proto.MarshalOptions{AllowPartial: true, Deterministic: true}.Marshal(descProto)\n\tif err != nil {\n\t\tgen.Error(err)\n\t\treturn\n\t}\n\n\t// Generate the raw descriptor as a kind-of readable const string.\n\t// To not generate a single potentially very long line, we use the 0x0a\n\t// byte to split the string into multiple \"lines\" and concatenate\n\t// them with \"+\".\n\t// The 0x0a comes from the observation that the FileDescriptorProto,\n\t// and many of the messages it includes (for example\n\t// DescriptorProto, EnumDescriptorProto, etc.), define a string\n\t// (which is LEN encoded) as field with field_number=1.\n\t// That makes all these messages start with (1<<3 + 2[:LEN])=0x0a\n\t// in the wire-format.\n\t// See also https://protobuf.dev/programming-guides/encoding/#structure.\n\tfmt.Fprint(g, \"const \", rawDescVarName(f), `=\"\"`)\n\tfor _, line := range bytes.SplitAfter(b, []byte{'\\x0a'}) {\n\t\tg.P(\"+\")\n\t\tfmt.Fprintf(g, \"%q\", line)\n\t}\n\tg.P()\n\n\tif f.needRawDesc {\n\t\tonceVar := rawDescVarName(f) + \"Once\"\n\t\tdataVar := rawDescVarName(f) + \"Data\"\n\t\tg.P(\"var (\")\n\t\tg.P(onceVar, \" \", syncPackage.Ident(\"Once\"))\n\t\tg.P(dataVar, \" []byte\")\n\t\tg.P(\")\")\n\t\tg.P()\n\n\t\tg.P(\"func \", rawDescVarName(f), \"GZIP() []byte {\")\n\t\tg.P(onceVar, \".Do(func() {\")\n\t\tg.P(dataVar, \" = \", protoimplPackage.Ident(\"X\"), \".CompressGZIP(\", unsafeBytesRawDesc(g, f), \")\")\n\t\tg.P(\"})\")\n\t\tg.P(\"return \", dataVar)\n\t\tg.P(\"}\")\n\t\tg.P()\n\t}\n}\n\n// unsafeBytesRawDesc returns an inlined version of [strs.UnsafeBytes]\n// (gencode cannot depend on internal/strs). Modification of this byte\n// slice will crash the program.\nfunc unsafeBytesRawDesc(g *protogen.GeneratedFile, f *fileInfo) string {\n\treturn fmt.Sprintf(\"%s(%s(%[3]s), len(%[3]s))\",\n\t\tg.QualifiedGoIdent(unsafePackage.Ident(\"Slice\")),\n\t\tg.QualifiedGoIdent(unsafePackage.Ident(\"StringData\")),\n\t\trawDescVarName(f))\n}\n\nfunc genEnumReflectMethods(g *protogen.GeneratedFile, f *fileInfo, e *enumInfo) {\n\tidx := f.allEnumsByPtr[e]\n\ttypesVar := enumTypesVarName(f)\n\n\t// Descriptor method.\n\tg.P(\"func (\", e.GoIdent, \") Descriptor() \", protoreflectPackage.Ident(\"EnumDescriptor\"), \" {\")\n\tg.P(\"return \", typesVar, \"[\", idx, \"].Descriptor()\")\n\tg.P(\"}\")\n\tg.P()\n\n\t// Type method.\n\tg.P(\"func (\", e.GoIdent, \") Type() \", protoreflectPackage.Ident(\"EnumType\"), \" {\")\n\tg.P(\"return &\", typesVar, \"[\", idx, \"]\")\n\tg.P(\"}\")\n\tg.P()\n\n\t// Number method.\n\tg.P(\"func (x \", e.GoIdent, \") Number() \", protoreflectPackage.Ident(\"EnumNumber\"), \" {\")\n\tg.P(\"return \", protoreflectPackage.Ident(\"EnumNumber\"), \"(x)\")\n\tg.P(\"}\")\n\tg.P()\n}\n\nfunc genMessageReflectMethods(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {\n\tidx := f.allMessagesByPtr[m]\n\ttypesVar := messageTypesVarName(f)\n\n\t// ProtoReflect method.\n\tg.P(\"func (x *\", m.GoIdent, \") ProtoReflect() \", protoreflectPackage.Ident(\"Message\"), \" {\")\n\tg.P(\"mi := &\", typesVar, \"[\", idx, \"]\")\n\tg.P(\"if x != nil {\")\n\tg.P(\"ms := \", protoimplPackage.Ident(\"X\"), \".MessageStateOf(\", protoimplPackage.Ident(\"Pointer\"), \"(x))\")\n\tg.P(\"if ms.LoadMessageInfo() == nil {\")\n\tg.P(\"ms.StoreMessageInfo(mi)\")\n\tg.P(\"}\")\n\tg.P(\"return ms\")\n\tg.P(\"}\")\n\tg.P(\"return mi.MessageOf(x)\")\n\tg.P(\"}\")\n\tg.P()\n}\n\nfunc fileVarName(f *protogen.File, suffix string) string {\n\tprefix := f.GoDescriptorIdent.GoName\n\t_, n := utf8.DecodeRuneInString(prefix)\n\tprefix = strings.ToLower(prefix[:n]) + prefix[n:]\n\treturn prefix + \"_\" + suffix\n}\nfunc rawDescVarName(f *fileInfo) string {\n\treturn fileVarName(f.File, \"rawDesc\")\n}\nfunc goTypesVarName(f *fileInfo) string {\n\treturn fileVarName(f.File, \"goTypes\")\n}\nfunc depIdxsVarName(f *fileInfo) string {\n\treturn fileVarName(f.File, \"depIdxs\")\n}\nfunc enumTypesVarName(f *fileInfo) string {\n\treturn fileVarName(f.File, \"enumTypes\")\n}\nfunc messageTypesVarName(f *fileInfo) string {\n\treturn fileVarName(f.File, \"msgTypes\")\n}\nfunc extensionTypesVarName(f *fileInfo) string {\n\treturn fileVarName(f.File, \"extTypes\")\n}\nfunc initFuncName(f *protogen.File) string {\n\treturn fileVarName(f, \"init\")\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo/well_known_types.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage internal_gengo\n\nimport (\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/compiler/protogen\"\n\t\"google.golang.org/protobuf/internal/genid\"\n)\n\n// Specialized support for well-known types are hard-coded into the generator\n// as opposed to being injected in adjacent .go sources in the generated package\n// in order to support specialized build systems like Bazel that always generate\n// dynamically from the source .proto files.\n\nfunc genPackageKnownComment(f *fileInfo) protogen.Comments {\n\tswitch f.Desc.Path() {\n\tcase genid.File_google_protobuf_any_proto:\n\t\treturn ` Package anypb contains generated types for ` + genid.File_google_protobuf_any_proto + `.\n\n The Any message is a dynamic representation of any other message value.\n It is functionally a tuple of the full name of the remote message type and\n the serialized bytes of the remote message value.\n\n\n Constructing an Any\n\n An Any message containing another message value is constructed using New:\n\n\tany, err := anypb.New(m)\n\tif err != nil {\n\t\t... // handle error\n\t}\n\t... // make use of any\n\n\n Unmarshaling an Any\n\n With a populated Any message, the underlying message can be serialized into\n a remote concrete message value in a few ways.\n\n If the exact concrete type is known, then a new (or pre-existing) instance\n of that message can be passed to the UnmarshalTo method:\n\n\tm := new(foopb.MyMessage)\n\tif err := any.UnmarshalTo(m); err != nil {\n\t\t... // handle error\n\t}\n\t... // make use of m\n\n If the exact concrete type is not known, then the UnmarshalNew method can be\n used to unmarshal the contents into a new instance of the remote message type:\n\n\tm, err := any.UnmarshalNew()\n\tif err != nil {\n\t\t... // handle error\n\t}\n\t... // make use of m\n\n UnmarshalNew uses the global type registry to resolve the message type and\n construct a new instance of that message to unmarshal into. In order for a\n message type to appear in the global registry, the Go type representing that\n protobuf message type must be linked into the Go binary. For messages\n generated by protoc-gen-go, this is achieved through an import of the\n generated Go package representing a .proto file.\n\n A common pattern with UnmarshalNew is to use a type switch with the resulting\n proto.Message value:\n\n\tswitch m := m.(type) {\n\tcase *foopb.MyMessage:\n\t\t... // make use of m as a *foopb.MyMessage\n\tcase *barpb.OtherMessage:\n\t\t... // make use of m as a *barpb.OtherMessage\n\tcase *bazpb.SomeMessage:\n\t\t... // make use of m as a *bazpb.SomeMessage\n\t}\n\n This pattern ensures that the generated packages containing the message types\n listed in the case clauses are linked into the Go binary and therefore also\n registered in the global registry.\n\n\n Type checking an Any\n\n In order to type check whether an Any message represents some other message,\n then use the MessageIs method:\n\n\tif any.MessageIs((*foopb.MyMessage)(nil)) {\n\t\t... // make use of any, knowing that it contains a foopb.MyMessage\n\t}\n\n The MessageIs method can also be used with an allocated instance of the target\n message type if the intention is to unmarshal into it if the type matches:\n\n\tm := new(foopb.MyMessage)\n\tif any.MessageIs(m) {\n\t\tif err := any.UnmarshalTo(m); err != nil {\n\t\t\t... // handle error\n\t\t}\n\t\t... // make use of m\n\t}\n\n`\n\tcase genid.File_google_protobuf_timestamp_proto:\n\t\treturn ` Package timestamppb contains generated types for ` + genid.File_google_protobuf_timestamp_proto + `.\n\n The Timestamp message represents a timestamp,\n an instant in time since the Unix epoch (January 1st, 1970).\n\n\n Conversion to a Go Time\n\n The AsTime method can be used to convert a Timestamp message to a\n standard Go time.Time value in UTC:\n\n\tt := ts.AsTime()\n\t... // make use of t as a time.Time\n\n Converting to a time.Time is a common operation so that the extensive\n set of time-based operations provided by the time package can be leveraged.\n See https://golang.org/pkg/time for more information.\n\n The AsTime method performs the conversion on a best-effort basis. Timestamps\n with denormal values (e.g., nanoseconds beyond 0 and 99999999, inclusive)\n are normalized during the conversion to a time.Time. To manually check for\n invalid Timestamps per the documented limitations in timestamp.proto,\n additionally call the CheckValid method:\n\n\tif err := ts.CheckValid(); err != nil {\n\t\t... // handle error\n\t}\n\n\n Conversion from a Go Time\n\n The timestamppb.New function can be used to construct a Timestamp message\n from a standard Go time.Time value:\n\n\tts := timestamppb.New(t)\n\t... // make use of ts as a *timestamppb.Timestamp\n\n In order to construct a Timestamp representing the current time, use Now:\n\n\tts := timestamppb.Now()\n\t... // make use of ts as a *timestamppb.Timestamp\n\n`\n\tcase genid.File_google_protobuf_duration_proto:\n\t\treturn ` Package durationpb contains generated types for ` + genid.File_google_protobuf_duration_proto + `.\n\n The Duration message represents a signed span of time.\n\n\n Conversion to a Go Duration\n\n The AsDuration method can be used to convert a Duration message to a\n standard Go time.Duration value:\n\n\td := dur.AsDuration()\n\t... // make use of d as a time.Duration\n\n Converting to a time.Duration is a common operation so that the extensive\n set of time-based operations provided by the time package can be leveraged.\n See https://golang.org/pkg/time for more information.\n\n The AsDuration method performs the conversion on a best-effort basis.\n Durations with denormal values (e.g., nanoseconds beyond -99999999 and\n +99999999, inclusive; or seconds and nanoseconds with opposite signs)\n are normalized during the conversion to a time.Duration. To manually check for\n invalid Duration per the documented limitations in duration.proto,\n additionally call the CheckValid method:\n\n\tif err := dur.CheckValid(); err != nil {\n\t\t... // handle error\n\t}\n\n Note that the documented limitations in duration.proto does not protect a\n Duration from overflowing the representable range of a time.Duration in Go.\n The AsDuration method uses saturation arithmetic such that an overflow clamps\n the resulting value to the closest representable value (e.g., math.MaxInt64\n for positive overflow and math.MinInt64 for negative overflow).\n\n\n Conversion from a Go Duration\n\n The durationpb.New function can be used to construct a Duration message\n from a standard Go time.Duration value:\n\n\tdur := durationpb.New(d)\n\t... // make use of d as a *durationpb.Duration\n\n`\n\tcase genid.File_google_protobuf_struct_proto:\n\t\treturn ` Package structpb contains generated types for ` + genid.File_google_protobuf_struct_proto + `.\n\n The messages (i.e., Value, Struct, and ListValue) defined in struct.proto are\n used to represent arbitrary JSON. The Value message represents a JSON value,\n the Struct message represents a JSON object, and the ListValue message\n represents a JSON array. See https://json.org for more information.\n\n The Value, Struct, and ListValue types have generated MarshalJSON and\n UnmarshalJSON methods such that they serialize JSON equivalent to what the\n messages themselves represent. Use of these types with the\n \"google.golang.org/protobuf/encoding/protojson\" package\n ensures that they will be serialized as their JSON equivalent.\n\n # Conversion to and from a Go interface\n\n The standard Go \"encoding/json\" package has functionality to serialize\n arbitrary types to a large degree. The Value.AsInterface, Struct.AsMap, and\n ListValue.AsSlice methods can convert the protobuf message representation into\n a form represented by any, map[string]any, and []any.\n This form can be used with other packages that operate on such data structures\n and also directly with the standard json package.\n\n In order to convert the any, map[string]any, and []any\n forms back as Value, Struct, and ListValue messages, use the NewStruct,\n NewList, and NewValue constructor functions.\n\n # Example usage\n\n Consider the following example JSON object:\n\n\t{\n\t\t\"firstName\": \"John\",\n\t\t\"lastName\": \"Smith\",\n\t\t\"isAlive\": true,\n\t\t\"age\": 27,\n\t\t\"address\": {\n\t\t\t\"streetAddress\": \"21 2nd Street\",\n\t\t\t\"city\": \"New York\",\n\t\t\t\"state\": \"NY\",\n\t\t\t\"postalCode\": \"10021-3100\"\n\t\t},\n\t\t\"phoneNumbers\": [\n\t\t\t{\n\t\t\t\t\"type\": \"home\",\n\t\t\t\t\"number\": \"212 555-1234\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"type\": \"office\",\n\t\t\t\t\"number\": \"646 555-4567\"\n\t\t\t}\n\t\t],\n\t\t\"children\": [],\n\t\t\"spouse\": null\n\t}\n\n To construct a Value message representing the above JSON object:\n\n\tm, err := structpb.NewValue(map[string]any{\n\t\t\"firstName\": \"John\",\n\t\t\"lastName\":  \"Smith\",\n\t\t\"isAlive\":   true,\n\t\t\"age\":       27,\n\t\t\"address\": map[string]any{\n\t\t\t\"streetAddress\": \"21 2nd Street\",\n\t\t\t\"city\":          \"New York\",\n\t\t\t\"state\":         \"NY\",\n\t\t\t\"postalCode\":    \"10021-3100\",\n\t\t},\n\t\t\"phoneNumbers\": []any{\n\t\t\tmap[string]any{\n\t\t\t\t\"type\":   \"home\",\n\t\t\t\t\"number\": \"212 555-1234\",\n\t\t\t},\n\t\t\tmap[string]any{\n\t\t\t\t\"type\":   \"office\",\n\t\t\t\t\"number\": \"646 555-4567\",\n\t\t\t},\n\t\t},\n\t\t\"children\": []any{},\n\t\t\"spouse\":   nil,\n\t})\n\tif err != nil {\n\t\t... // handle error\n\t}\n\t... // make use of m as a *structpb.Value\n`\n\tcase genid.File_google_protobuf_field_mask_proto:\n\t\treturn ` Package fieldmaskpb contains generated types for ` + genid.File_google_protobuf_field_mask_proto + `.\n\n The FieldMask message represents a set of symbolic field paths.\n The paths are specific to some target message type,\n which is not stored within the FieldMask message itself.\n\n\n Constructing a FieldMask\n\n The New function is used construct a FieldMask:\n\n\tvar messageType *descriptorpb.DescriptorProto\n\tfm, err := fieldmaskpb.New(messageType, \"field.name\", \"field.number\")\n\tif err != nil {\n\t\t... // handle error\n\t}\n\t... // make use of fm\n\n The \"field.name\" and \"field.number\" paths are valid paths according to the\n google.protobuf.DescriptorProto message. Use of a path that does not correlate\n to valid fields reachable from DescriptorProto would result in an error.\n\n Once a FieldMask message has been constructed,\n the Append method can be used to insert additional paths to the path set:\n\n\tvar messageType *descriptorpb.DescriptorProto\n\tif err := fm.Append(messageType, \"options\"); err != nil {\n\t\t... // handle error\n\t}\n\n\n Type checking a FieldMask\n\n In order to verify that a FieldMask represents a set of fields that are\n reachable from some target message type, use the IsValid method:\n\n\tvar messageType *descriptorpb.DescriptorProto\n\tif fm.IsValid(messageType) {\n\t\t... // make use of fm\n\t}\n\n IsValid needs to be passed the target message type as an input since the\n FieldMask message itself does not store the message type that the set of paths\n are for.\n`\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\nfunc genMessageKnownFunctions(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {\n\tswitch m.Desc.FullName() {\n\tcase genid.Any_message_fullname:\n\t\tg.P(\"// New marshals src into a new Any instance.\")\n\t\tg.P(\"func New(src \", protoPackage.Ident(\"Message\"), \") (*Any, error) {\")\n\t\tg.P(\"\tdst := new(Any)\")\n\t\tg.P(\"\tif err := dst.MarshalFrom(src); err != nil {\")\n\t\tg.P(\"\t\treturn nil, err\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn dst, nil\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// MarshalFrom marshals src into dst as the underlying message\")\n\t\tg.P(\"// using the provided marshal options.\")\n\t\tg.P(\"//\")\n\t\tg.P(\"// If no options are specified, call dst.MarshalFrom instead.\")\n\t\tg.P(\"func MarshalFrom(dst *Any, src \", protoPackage.Ident(\"Message\"), \", opts \", protoPackage.Ident(\"MarshalOptions\"), \") error {\")\n\t\tg.P(\"\tconst urlPrefix = \\\"type.googleapis.com/\\\"\")\n\t\tg.P(\"\tif src == nil {\")\n\t\tg.P(\"\t\treturn \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"invalid nil source message\\\")\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\tb, err := opts.Marshal(src)\")\n\t\tg.P(\"\tif err != nil {\")\n\t\tg.P(\"\t\treturn err\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\tdst.TypeUrl = urlPrefix + string(src.ProtoReflect().Descriptor().FullName())\")\n\t\tg.P(\"\tdst.Value = b\")\n\t\tg.P(\"\treturn nil\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// UnmarshalTo unmarshals the underlying message from src into dst\")\n\t\tg.P(\"// using the provided unmarshal options.\")\n\t\tg.P(\"// It reports an error if dst is not of the right message type.\")\n\t\tg.P(\"//\")\n\t\tg.P(\"// If no options are specified, call src.UnmarshalTo instead.\")\n\t\tg.P(\"func UnmarshalTo(src *Any, dst \", protoPackage.Ident(\"Message\"), \", opts \", protoPackage.Ident(\"UnmarshalOptions\"), \") error {\")\n\t\tg.P(\"\tif src == nil {\")\n\t\tg.P(\"\t\treturn \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"invalid nil source message\\\")\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\tif !src.MessageIs(dst) {\")\n\t\tg.P(\"\t\tgot := dst.ProtoReflect().Descriptor().FullName()\")\n\t\tg.P(\"\t\twant := src.MessageName()\")\n\t\tg.P(\"\t\treturn \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"mismatched message type: got %q, want %q\\\", got, want)\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn opts.Unmarshal(src.GetValue(), dst)\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// UnmarshalNew unmarshals the underlying message from src into dst,\")\n\t\tg.P(\"// which is newly created message using a type resolved from the type URL.\")\n\t\tg.P(\"// The message type is resolved according to opt.Resolver,\")\n\t\tg.P(\"// which should implement protoregistry.MessageTypeResolver.\")\n\t\tg.P(\"// It reports an error if the underlying message type could not be resolved.\")\n\t\tg.P(\"//\")\n\t\tg.P(\"// If no options are specified, call src.UnmarshalNew instead.\")\n\t\tg.P(\"func UnmarshalNew(src *Any, opts \", protoPackage.Ident(\"UnmarshalOptions\"), \") (dst \", protoPackage.Ident(\"Message\"), \", err error) {\")\n\t\tg.P(\"\tif src.GetTypeUrl() == \\\"\\\" {\")\n\t\tg.P(\"\t\treturn nil, \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"invalid empty type URL\\\")\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\tif opts.Resolver == nil {\")\n\t\tg.P(\"\t\topts.Resolver = \", protoregistryPackage.Ident(\"GlobalTypes\"))\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\tr, ok := opts.Resolver.(\", protoregistryPackage.Ident(\"MessageTypeResolver\"), \")\")\n\t\tg.P(\"\tif !ok {\")\n\t\tg.P(\"\t\treturn nil, \", protoregistryPackage.Ident(\"NotFound\"))\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\tmt, err := r.FindMessageByURL(src.GetTypeUrl())\")\n\t\tg.P(\"\tif err != nil {\")\n\t\tg.P(\"\t\tif err == \", protoregistryPackage.Ident(\"NotFound\"), \" {\")\n\t\tg.P(\"\t\t\treturn nil, err\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t\treturn nil, \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"could not resolve %q: %v\\\", src.GetTypeUrl(), err)\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\tdst = mt.New().Interface()\")\n\t\tg.P(\"\treturn dst, opts.Unmarshal(src.GetValue(), dst)\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// MessageIs reports whether the underlying message is of the same type as m.\")\n\t\tg.P(\"func (x *Any) MessageIs(m \", protoPackage.Ident(\"Message\"), \") bool {\")\n\t\tg.P(\"\tif m == nil {\")\n\t\tg.P(\"\t\treturn false\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\turl := x.GetTypeUrl()\")\n\t\tg.P(\"\tname := string(m.ProtoReflect().Descriptor().FullName())\")\n\t\tg.P(\"\tif !\", stringsPackage.Ident(\"HasSuffix\"), \"(url, name) {\")\n\t\tg.P(\"\t\treturn false\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn len(url) == len(name) || url[len(url)-len(name)-1] == '/'\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// MessageName reports the full name of the underlying message,\")\n\t\tg.P(\"// returning an empty string if invalid.\")\n\t\tg.P(\"func (x *Any) MessageName() \", protoreflectPackage.Ident(\"FullName\"), \" {\")\n\t\tg.P(\"\turl := x.GetTypeUrl()\")\n\t\tg.P(\"\tname := \", protoreflectPackage.Ident(\"FullName\"), \"(url)\")\n\t\tg.P(\"\tif i := \", stringsPackage.Ident(\"LastIndexByte\"), \"(url, '/'); i >= 0 {\")\n\t\tg.P(\"\t\tname = name[i+len(\\\"/\\\"):]\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\tif !name.IsValid() {\")\n\t\tg.P(\"\t\treturn \\\"\\\"\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn name\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// MarshalFrom marshals m into x as the underlying message.\")\n\t\tg.P(\"func (x *Any) MarshalFrom(m \", protoPackage.Ident(\"Message\"), \") error {\")\n\t\tg.P(\"\treturn MarshalFrom(x, m, \", protoPackage.Ident(\"MarshalOptions\"), \"{})\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// UnmarshalTo unmarshals the contents of the underlying message of x into m.\")\n\t\tg.P(\"// It resets m before performing the unmarshal operation.\")\n\t\tg.P(\"// It reports an error if m is not of the right message type.\")\n\t\tg.P(\"func (x *Any) UnmarshalTo(m \", protoPackage.Ident(\"Message\"), \") error {\")\n\t\tg.P(\"\treturn UnmarshalTo(x, m, \", protoPackage.Ident(\"UnmarshalOptions\"), \"{})\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// UnmarshalNew unmarshals the contents of the underlying message of x into\")\n\t\tg.P(\"// a newly allocated message of the specified type.\")\n\t\tg.P(\"// It reports an error if the underlying message type could not be resolved.\")\n\t\tg.P(\"func (x *Any) UnmarshalNew() (\", protoPackage.Ident(\"Message\"), \", error) {\")\n\t\tg.P(\"\treturn UnmarshalNew(x, \", protoPackage.Ident(\"UnmarshalOptions\"), \"{})\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\tcase genid.Timestamp_message_fullname:\n\t\tg.P(\"// Now constructs a new Timestamp from the current time.\")\n\t\tg.P(\"func Now() *Timestamp {\")\n\t\tg.P(\"\treturn New(\", timePackage.Ident(\"Now\"), \"())\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// New constructs a new Timestamp from the provided time.Time.\")\n\t\tg.P(\"func New(t \", timePackage.Ident(\"Time\"), \") *Timestamp {\")\n\t\tg.P(\"\treturn &Timestamp{Seconds: int64(t.Unix()), Nanos: int32(t.Nanosecond())}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// AsTime converts x to a time.Time.\")\n\t\tg.P(\"func (x *Timestamp) AsTime() \", timePackage.Ident(\"Time\"), \" {\")\n\t\tg.P(\"\treturn \", timePackage.Ident(\"Unix\"), \"(int64(x.GetSeconds()), int64(x.GetNanos())).UTC()\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// IsValid reports whether the timestamp is valid.\")\n\t\tg.P(\"// It is equivalent to CheckValid == nil.\")\n\t\tg.P(\"func (x *Timestamp) IsValid() bool {\")\n\t\tg.P(\"\treturn x.check() == 0\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// CheckValid returns an error if the timestamp is invalid.\")\n\t\tg.P(\"// In particular, it checks whether the value represents a date that is\")\n\t\tg.P(\"// in the range of 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\")\n\t\tg.P(\"// An error is reported for a nil Timestamp.\")\n\t\tg.P(\"func (x *Timestamp) CheckValid() error {\")\n\t\tg.P(\"\tswitch x.check() {\")\n\t\tg.P(\"\tcase invalidNil:\")\n\t\tg.P(\"\t\treturn \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"invalid nil Timestamp\\\")\")\n\t\tg.P(\"\tcase invalidUnderflow:\")\n\t\tg.P(\"\t\treturn \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"timestamp (%v) before 0001-01-01\\\", x)\")\n\t\tg.P(\"\tcase invalidOverflow:\")\n\t\tg.P(\"\t\treturn \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"timestamp (%v) after 9999-12-31\\\", x)\")\n\t\tg.P(\"\tcase invalidNanos:\")\n\t\tg.P(\"\t\treturn \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"timestamp (%v) has out-of-range nanos\\\", x)\")\n\t\tg.P(\"\tdefault:\")\n\t\tg.P(\"\t\treturn nil\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"const (\")\n\t\tg.P(\"\t_ = iota\")\n\t\tg.P(\"\tinvalidNil\")\n\t\tg.P(\"\tinvalidUnderflow\")\n\t\tg.P(\"\tinvalidOverflow\")\n\t\tg.P(\"\tinvalidNanos\")\n\t\tg.P(\")\")\n\t\tg.P()\n\n\t\tg.P(\"func (x *Timestamp) check() uint {\")\n\t\tg.P(\"\tconst minTimestamp = -62135596800  // Seconds between 1970-01-01T00:00:00Z and 0001-01-01T00:00:00Z, inclusive\")\n\t\tg.P(\"\tconst maxTimestamp = +253402300799 // Seconds between 1970-01-01T00:00:00Z and 9999-12-31T23:59:59Z, inclusive\")\n\t\tg.P(\"\tsecs := x.GetSeconds()\")\n\t\tg.P(\"\tnanos := x.GetNanos()\")\n\t\tg.P(\"\tswitch {\")\n\t\tg.P(\"\tcase x == nil:\")\n\t\tg.P(\"\t\treturn invalidNil\")\n\t\tg.P(\"\tcase secs < minTimestamp:\")\n\t\tg.P(\"\t\treturn invalidUnderflow\")\n\t\tg.P(\"\tcase secs > maxTimestamp:\")\n\t\tg.P(\"\t\treturn invalidOverflow\")\n\t\tg.P(\"\tcase nanos < 0 || nanos >= 1e9:\")\n\t\tg.P(\"\t\treturn invalidNanos\")\n\t\tg.P(\"\tdefault:\")\n\t\tg.P(\"\t\treturn 0\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\tcase genid.Duration_message_fullname:\n\t\tg.P(\"// New constructs a new Duration from the provided time.Duration.\")\n\t\tg.P(\"func New(d \", timePackage.Ident(\"Duration\"), \") *Duration {\")\n\t\tg.P(\"\tnanos := d.Nanoseconds()\")\n\t\tg.P(\"\tsecs := nanos / 1e9\")\n\t\tg.P(\"\tnanos -= secs * 1e9\")\n\t\tg.P(\"\treturn &Duration{Seconds: int64(secs), Nanos: int32(nanos)}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// AsDuration converts x to a time.Duration,\")\n\t\tg.P(\"// returning the closest duration value in the event of overflow.\")\n\t\tg.P(\"func (x *Duration) AsDuration() \", timePackage.Ident(\"Duration\"), \" {\")\n\t\tg.P(\"\tsecs := x.GetSeconds()\")\n\t\tg.P(\"\tnanos := x.GetNanos()\")\n\t\tg.P(\"\td := \", timePackage.Ident(\"Duration\"), \"(secs) * \", timePackage.Ident(\"Second\"))\n\t\tg.P(\"\toverflow := d/\", timePackage.Ident(\"Second\"), \" != \", timePackage.Ident(\"Duration\"), \"(secs)\")\n\t\tg.P(\"\td += \", timePackage.Ident(\"Duration\"), \"(nanos) * \", timePackage.Ident(\"Nanosecond\"))\n\t\tg.P(\"\toverflow = overflow || (secs < 0 && nanos < 0 && d > 0)\")\n\t\tg.P(\"\toverflow = overflow || (secs > 0 && nanos > 0 && d < 0)\")\n\t\tg.P(\"\tif overflow {\")\n\t\tg.P(\"\t\tswitch {\")\n\t\tg.P(\"\t\tcase secs < 0:\")\n\t\tg.P(\"\t\t\treturn \", timePackage.Ident(\"Duration\"), \"(\", mathPackage.Ident(\"MinInt64\"), \")\")\n\t\tg.P(\"\t\tcase secs > 0:\")\n\t\tg.P(\"\t\t\treturn \", timePackage.Ident(\"Duration\"), \"(\", mathPackage.Ident(\"MaxInt64\"), \")\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn d\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// IsValid reports whether the duration is valid.\")\n\t\tg.P(\"// It is equivalent to CheckValid == nil.\")\n\t\tg.P(\"func (x *Duration) IsValid() bool {\")\n\t\tg.P(\"\treturn x.check() == 0\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// CheckValid returns an error if the duration is invalid.\")\n\t\tg.P(\"// In particular, it checks whether the value is within the range of\")\n\t\tg.P(\"// -10000 years to +10000 years inclusive.\")\n\t\tg.P(\"// An error is reported for a nil Duration.\")\n\t\tg.P(\"func (x *Duration) CheckValid() error {\")\n\t\tg.P(\"\tswitch x.check() {\")\n\t\tg.P(\"\tcase invalidNil:\")\n\t\tg.P(\"\t\treturn \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"invalid nil Duration\\\")\")\n\t\tg.P(\"\tcase invalidUnderflow:\")\n\t\tg.P(\"\t\treturn \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"duration (%v) exceeds -10000 years\\\", x)\")\n\t\tg.P(\"\tcase invalidOverflow:\")\n\t\tg.P(\"\t\treturn \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"duration (%v) exceeds +10000 years\\\", x)\")\n\t\tg.P(\"\tcase invalidNanosRange:\")\n\t\tg.P(\"\t\treturn \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"duration (%v) has out-of-range nanos\\\", x)\")\n\t\tg.P(\"\tcase invalidNanosSign:\")\n\t\tg.P(\"\t\treturn \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"duration (%v) has seconds and nanos with different signs\\\", x)\")\n\t\tg.P(\"\tdefault:\")\n\t\tg.P(\"\t\treturn nil\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"const (\")\n\t\tg.P(\"\t_ = iota\")\n\t\tg.P(\"\tinvalidNil\")\n\t\tg.P(\"\tinvalidUnderflow\")\n\t\tg.P(\"\tinvalidOverflow\")\n\t\tg.P(\"\tinvalidNanosRange\")\n\t\tg.P(\"\tinvalidNanosSign\")\n\t\tg.P(\")\")\n\t\tg.P()\n\n\t\tg.P(\"func (x *Duration) check() uint {\")\n\t\tg.P(\"\tconst absDuration = 315576000000 // 10000yr * 365.25day/yr * 24hr/day * 60min/hr * 60sec/min\")\n\t\tg.P(\"\tsecs := x.GetSeconds()\")\n\t\tg.P(\"\tnanos := x.GetNanos()\")\n\t\tg.P(\"\tswitch {\")\n\t\tg.P(\"\tcase x == nil:\")\n\t\tg.P(\"\t\treturn invalidNil\")\n\t\tg.P(\"\tcase secs < -absDuration:\")\n\t\tg.P(\"\t\treturn invalidUnderflow\")\n\t\tg.P(\"\tcase secs > +absDuration:\")\n\t\tg.P(\"\t\treturn invalidOverflow\")\n\t\tg.P(\"\tcase nanos <= -1e9 || nanos >= +1e9:\")\n\t\tg.P(\"\t\treturn invalidNanosRange\")\n\t\tg.P(\"\tcase (secs > 0 && nanos < 0) || (secs < 0 && nanos > 0):\")\n\t\tg.P(\"\t\treturn invalidNanosSign\")\n\t\tg.P(\"\tdefault:\")\n\t\tg.P(\"\t\treturn 0\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\tcase genid.Struct_message_fullname:\n\t\tg.P(\"// NewStruct constructs a Struct from a general-purpose Go map.\")\n\t\tg.P(\"// The map keys must be valid UTF-8.\")\n\t\tg.P(\"// The map values are converted using NewValue.\")\n\t\tg.P(\"func NewStruct(v map[string]any) (*Struct, error) {\")\n\t\tg.P(\"\tx := &Struct{Fields: make(map[string]*Value, len(v))}\")\n\t\tg.P(\"\tfor k, v := range v {\")\n\t\tg.P(\"\t\tif !\", utf8Package.Ident(\"ValidString\"), \"(k) {\")\n\t\tg.P(\"\t\t\treturn nil, \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"invalid UTF-8 in string: %q\\\", k)\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t\tvar err error\")\n\t\tg.P(\"\t\tx.Fields[k], err = NewValue(v)\")\n\t\tg.P(\"\t\tif err != nil {\")\n\t\tg.P(\"\t\t\treturn nil, err\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn x, nil\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// AsMap converts x to a general-purpose Go map.\")\n\t\tg.P(\"// The map values are converted by calling Value.AsInterface.\")\n\t\tg.P(\"func (x *Struct) AsMap() map[string]any {\")\n\t\tg.P(\"\tf := x.GetFields()\")\n\t\tg.P(\"\tvs := make(map[string]any, len(f))\")\n\t\tg.P(\"\tfor k, v := range f {\")\n\t\tg.P(\"\t\tvs[k] = v.AsInterface()\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn vs\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"func (x *Struct) MarshalJSON() ([]byte, error) {\")\n\t\tg.P(\"\treturn \", protojsonPackage.Ident(\"Marshal\"), \"(x)\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"func (x *Struct) UnmarshalJSON(b []byte) error {\")\n\t\tg.P(\"\treturn \", protojsonPackage.Ident(\"Unmarshal\"), \"(b, x)\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\tcase genid.ListValue_message_fullname:\n\t\tg.P(\"// NewList constructs a ListValue from a general-purpose Go slice.\")\n\t\tg.P(\"// The slice elements are converted using NewValue.\")\n\t\tg.P(\"func NewList(v []any) (*ListValue, error) {\")\n\t\tg.P(\"\tx := &ListValue{Values: make([]*Value, len(v))}\")\n\t\tg.P(\"\tfor i, v := range v {\")\n\t\tg.P(\"\t\tvar err error\")\n\t\tg.P(\"\t\tx.Values[i], err = NewValue(v)\")\n\t\tg.P(\"\t\tif err != nil {\")\n\t\tg.P(\"\t\t\treturn nil, err\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn x, nil\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// AsSlice converts x to a general-purpose Go slice.\")\n\t\tg.P(\"// The slice elements are converted by calling Value.AsInterface.\")\n\t\tg.P(\"func (x *ListValue) AsSlice() []any {\")\n\t\tg.P(\"\tvals := x.GetValues()\")\n\t\tg.P(\"\tvs := make([]any, len(vals))\")\n\t\tg.P(\"\tfor i, v := range vals {\")\n\t\tg.P(\"\t\tvs[i] = v.AsInterface()\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn vs\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"func (x *ListValue) MarshalJSON() ([]byte, error) {\")\n\t\tg.P(\"\treturn \", protojsonPackage.Ident(\"Marshal\"), \"(x)\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"func (x *ListValue) UnmarshalJSON(b []byte) error {\")\n\t\tg.P(\"\treturn \", protojsonPackage.Ident(\"Unmarshal\"), \"(b, x)\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\tcase genid.Value_message_fullname:\n\t\tg.P(\"// NewValue constructs a Value from a general-purpose Go interface.\")\n\t\tg.P(\"//\")\n\t\tg.P(\"//\t╔═══════════════════════════════════════╤════════════════════════════════════════════╗\")\n\t\tg.P(\"//\t║ Go type                               │ Conversion                                 ║\")\n\t\tg.P(\"//\t╠═══════════════════════════════════════╪════════════════════════════════════════════╣\")\n\t\tg.P(\"//\t║ nil                                   │ stored as NullValue                        ║\")\n\t\tg.P(\"//\t║ bool                                  │ stored as BoolValue                        ║\")\n\t\tg.P(\"//\t║ int, int8, int16, int32, int64        │ stored as NumberValue                      ║\")\n\t\tg.P(\"//\t║ uint, uint8, uint16, uint32, uint64   │ stored as NumberValue                      ║\")\n\t\tg.P(\"//\t║ float32, float64                      │ stored as NumberValue                      ║\")\n\t\tg.P(\"//\t║ json.Number                           │ stored as NumberValue                      ║\")\n\t\tg.P(\"//\t║ string                                │ stored as StringValue; must be valid UTF-8 ║\")\n\t\tg.P(\"//\t║ []byte                                │ stored as StringValue; base64-encoded      ║\")\n\t\tg.P(\"//\t║ map[string]any                        │ stored as StructValue                      ║\")\n\t\tg.P(\"//\t║ []any                                 │ stored as ListValue                        ║\")\n\t\tg.P(\"//\t╚═══════════════════════════════════════╧════════════════════════════════════════════╝\")\n\t\tg.P(\"//\")\n\t\tg.P(\"// When converting an int64 or uint64 to a NumberValue, numeric precision loss\")\n\t\tg.P(\"// is possible since they are stored as a float64.\")\n\t\tg.P(\"func NewValue(v any) (*Value, error) {\")\n\t\tg.P(\"\tswitch v := v.(type) {\")\n\t\tg.P(\"\tcase nil:\")\n\t\tg.P(\"\t\treturn NewNullValue(), nil\")\n\t\tg.P(\"\tcase bool:\")\n\t\tg.P(\"\t\treturn NewBoolValue(v), nil\")\n\t\tg.P(\"\tcase int:\")\n\t\tg.P(\"\t\treturn NewNumberValue(float64(v)), nil\")\n\t\tg.P(\"\tcase int8:\")\n\t\tg.P(\"\t\treturn NewNumberValue(float64(v)), nil\")\n\t\tg.P(\"\tcase int16:\")\n\t\tg.P(\"\t\treturn NewNumberValue(float64(v)), nil\")\n\t\tg.P(\"\tcase int32:\")\n\t\tg.P(\"\t\treturn NewNumberValue(float64(v)), nil\")\n\t\tg.P(\"\tcase int64:\")\n\t\tg.P(\"\t\treturn NewNumberValue(float64(v)), nil\")\n\t\tg.P(\"\tcase uint:\")\n\t\tg.P(\"\t\treturn NewNumberValue(float64(v)), nil\")\n\t\tg.P(\"\tcase uint8:\")\n\t\tg.P(\"\t\treturn NewNumberValue(float64(v)), nil\")\n\t\tg.P(\"\tcase uint16:\")\n\t\tg.P(\"\t\treturn NewNumberValue(float64(v)), nil\")\n\t\tg.P(\"\tcase uint32:\")\n\t\tg.P(\"\t\treturn NewNumberValue(float64(v)), nil\")\n\t\tg.P(\"\tcase uint64:\")\n\t\tg.P(\"\t\treturn NewNumberValue(float64(v)), nil\")\n\t\tg.P(\"\tcase float32:\")\n\t\tg.P(\"\t\treturn NewNumberValue(float64(v)), nil\")\n\t\tg.P(\"\tcase float64:\")\n\t\tg.P(\"\t\treturn NewNumberValue(float64(v)), nil\")\n\t\tg.P(\"\tcase \", jsonPackage.Ident(\"Number\"), \":\")\n\t\tg.P(\"\t\tn, err := v.Float64()\")\n\t\tg.P(\"\t\tif err != nil {\")\n\t\tg.P(\"\t\t\treturn nil, \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"invalid number format %q, expected a float64: %v\\\", v, err)\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t\treturn NewNumberValue(n), nil\")\n\t\tg.P(\"\tcase string:\")\n\t\tg.P(\"\t\tif !\", utf8Package.Ident(\"ValidString\"), \"(v) {\")\n\t\tg.P(\"\t\t\treturn nil, \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"invalid UTF-8 in string: %q\\\", v)\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t\treturn NewStringValue(v), nil\")\n\t\tg.P(\"\tcase []byte:\")\n\t\tg.P(\"\t\ts := \", base64Package.Ident(\"StdEncoding\"), \".EncodeToString(v)\")\n\t\tg.P(\"\t\treturn NewStringValue(s), nil\")\n\t\tg.P(\"\tcase map[string]any:\")\n\t\tg.P(\"\t\tv2, err := NewStruct(v)\")\n\t\tg.P(\"\t\tif err != nil {\")\n\t\tg.P(\"\t\t\treturn nil, err\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t\treturn NewStructValue(v2), nil\")\n\t\tg.P(\"\tcase []any:\")\n\t\tg.P(\"\t\tv2, err := NewList(v)\")\n\t\tg.P(\"\t\tif err != nil {\")\n\t\tg.P(\"\t\t\treturn nil, err\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t\treturn NewListValue(v2), nil\")\n\t\tg.P(\"\tdefault:\")\n\t\tg.P(\"\t\treturn nil, \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"invalid type: %T\\\", v)\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// NewNullValue constructs a new null Value.\")\n\t\tg.P(\"func NewNullValue() *Value {\")\n\t\tg.P(\"\treturn &Value{Kind: &Value_NullValue{NullValue: NullValue_NULL_VALUE}}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// NewBoolValue constructs a new boolean Value.\")\n\t\tg.P(\"func NewBoolValue(v bool) *Value {\")\n\t\tg.P(\"\treturn &Value{Kind: &Value_BoolValue{BoolValue: v}}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// NewNumberValue constructs a new number Value.\")\n\t\tg.P(\"func NewNumberValue(v float64) *Value {\")\n\t\tg.P(\"\treturn &Value{Kind: &Value_NumberValue{NumberValue: v}}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// NewStringValue constructs a new string Value.\")\n\t\tg.P(\"func NewStringValue(v string) *Value {\")\n\t\tg.P(\"\treturn &Value{Kind: &Value_StringValue{StringValue: v}}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// NewStructValue constructs a new struct Value.\")\n\t\tg.P(\"func NewStructValue(v *Struct) *Value {\")\n\t\tg.P(\"\treturn &Value{Kind: &Value_StructValue{StructValue: v}}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// NewListValue constructs a new list Value.\")\n\t\tg.P(\"func NewListValue(v *ListValue) *Value {\")\n\t\tg.P(\"\treturn &Value{Kind: &Value_ListValue{ListValue: v}}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// AsInterface converts x to a general-purpose Go interface.\")\n\t\tg.P(\"//\")\n\t\tg.P(\"// Calling Value.MarshalJSON and \\\"encoding/json\\\".Marshal on this output produce\")\n\t\tg.P(\"// semantically equivalent JSON (assuming no errors occur).\")\n\t\tg.P(\"//\")\n\t\tg.P(\"// Floating-point values (i.e., \\\"NaN\\\", \\\"Infinity\\\", and \\\"-Infinity\\\") are\")\n\t\tg.P(\"// converted as strings to remain compatible with MarshalJSON.\")\n\t\tg.P(\"func (x *Value) AsInterface() any {\")\n\t\tg.P(\"\tswitch v := x.GetKind().(type) {\")\n\t\tg.P(\"\tcase *Value_NumberValue:\")\n\t\tg.P(\"\t\tif v != nil {\")\n\t\tg.P(\"\t\t\tswitch {\")\n\t\tg.P(\"\t\t\tcase \", mathPackage.Ident(\"IsNaN\"), \"(v.NumberValue):\")\n\t\tg.P(\"\t\t\t\treturn \\\"NaN\\\"\")\n\t\tg.P(\"\t\t\tcase \", mathPackage.Ident(\"IsInf\"), \"(v.NumberValue, +1):\")\n\t\tg.P(\"\t\t\t\treturn \\\"Infinity\\\"\")\n\t\tg.P(\"\t\t\tcase \", mathPackage.Ident(\"IsInf\"), \"(v.NumberValue, -1):\")\n\t\tg.P(\"\t\t\t\treturn \\\"-Infinity\\\"\")\n\t\tg.P(\"\t\t\tdefault:\")\n\t\tg.P(\"\t\t\t\treturn v.NumberValue\")\n\t\tg.P(\"\t\t\t}\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\tcase *Value_StringValue:\")\n\t\tg.P(\"\t\tif v != nil {\")\n\t\tg.P(\"\t\t\treturn v.StringValue\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\tcase *Value_BoolValue:\")\n\t\tg.P(\"\t\tif v != nil {\")\n\t\tg.P(\"\t\t\treturn v.BoolValue\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\tcase *Value_StructValue:\")\n\t\tg.P(\"\t\tif v != nil {\")\n\t\tg.P(\"\t\t\treturn v.StructValue.AsMap()\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\tcase *Value_ListValue:\")\n\t\tg.P(\"\t\tif v != nil {\")\n\t\tg.P(\"\t\t\treturn v.ListValue.AsSlice()\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn nil\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"func (x *Value) MarshalJSON() ([]byte, error) {\")\n\t\tg.P(\"\treturn \", protojsonPackage.Ident(\"Marshal\"), \"(x)\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"func (x *Value) UnmarshalJSON(b []byte) error {\")\n\t\tg.P(\"\treturn \", protojsonPackage.Ident(\"Unmarshal\"), \"(b, x)\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\tcase genid.FieldMask_message_fullname:\n\t\tg.P(\"// New constructs a field mask from a list of paths and verifies that\")\n\t\tg.P(\"// each one is valid according to the specified message type.\")\n\t\tg.P(\"func New(m \", protoPackage.Ident(\"Message\"), \", paths ...string) (*FieldMask, error) {\")\n\t\tg.P(\"\tx := new(FieldMask)\")\n\t\tg.P(\"\treturn x, x.Append(m, paths...)\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// Union returns the union of all the paths in the input field masks.\")\n\t\tg.P(\"func Union(mx *FieldMask, my *FieldMask, ms ...*FieldMask) *FieldMask {\")\n\t\tg.P(\"\tvar out []string\")\n\t\tg.P(\"\tout = append(out, mx.GetPaths()...)\")\n\t\tg.P(\"\tout = append(out, my.GetPaths()...)\")\n\t\tg.P(\"\tfor _, m := range ms {\")\n\t\tg.P(\"\t\tout = append(out, m.GetPaths()...)\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn &FieldMask{Paths: normalizePaths(out)}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// Intersect returns the intersection of all the paths in the input field masks.\")\n\t\tg.P(\"func Intersect(mx *FieldMask, my *FieldMask, ms ...*FieldMask) *FieldMask {\")\n\t\tg.P(\"\tvar ss1, ss2 []string // reused buffers for performance\")\n\t\tg.P(\"\tintersect := func(out, in []string) []string {\")\n\t\tg.P(\"\t\tss1 = normalizePaths(append(ss1[:0], in...))\")\n\t\tg.P(\"\t\tss2 = normalizePaths(append(ss2[:0], out...))\")\n\t\tg.P(\"\t\tout = out[:0]\")\n\t\tg.P(\"\t\tfor i1, i2 := 0, 0; i1 < len(ss1) && i2 < len(ss2); {\")\n\t\tg.P(\"\t\t\tswitch s1, s2 := ss1[i1], ss2[i2]; {\")\n\t\tg.P(\"\t\t\tcase hasPathPrefix(s1, s2):\")\n\t\tg.P(\"\t\t\t\tout = append(out, s1)\")\n\t\tg.P(\"\t\t\t\ti1++\")\n\t\tg.P(\"\t\t\tcase hasPathPrefix(s2, s1):\")\n\t\tg.P(\"\t\t\t\tout = append(out, s2)\")\n\t\tg.P(\"\t\t\t\ti2++\")\n\t\tg.P(\"\t\t\tcase lessPath(s1, s2):\")\n\t\tg.P(\"\t\t\t\ti1++\")\n\t\tg.P(\"\t\t\tcase lessPath(s2, s1):\")\n\t\tg.P(\"\t\t\t\ti2++\")\n\t\tg.P(\"\t\t\t}\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t\treturn out\")\n\t\tg.P(\"\t}\")\n\t\tg.P()\n\t\tg.P(\"\tout := Union(mx, my, ms...).GetPaths()\")\n\t\tg.P(\"\tout = intersect(out, mx.GetPaths())\")\n\t\tg.P(\"\tout = intersect(out, my.GetPaths())\")\n\t\tg.P(\"\tfor _, m := range ms {\")\n\t\tg.P(\"\t\tout = intersect(out, m.GetPaths())\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn &FieldMask{Paths: normalizePaths(out)}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// IsValid reports whether all the paths are syntactically valid and\")\n\t\tg.P(\"// refer to known fields in the specified message type.\")\n\t\tg.P(\"// It reports false for a nil FieldMask.\")\n\t\tg.P(\"func (x *FieldMask) IsValid(m \", protoPackage.Ident(\"Message\"), \") bool {\")\n\t\tg.P(\"\tpaths := x.GetPaths()\")\n\t\tg.P(\"\treturn x != nil && numValidPaths(m, paths) == len(paths)\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// Append appends a list of paths to the mask and verifies that each one\")\n\t\tg.P(\"// is valid according to the specified message type.\")\n\t\tg.P(\"// An invalid path is not appended and breaks insertion of subsequent paths.\")\n\t\tg.P(\"func (x *FieldMask) Append(m \", protoPackage.Ident(\"Message\"), \", paths ...string) error {\")\n\t\tg.P(\"\tnumValid := numValidPaths(m, paths)\")\n\t\tg.P(\"\tx.Paths = append(x.Paths, paths[:numValid]...)\")\n\t\tg.P(\"\tpaths = paths[numValid:]\")\n\t\tg.P(\"\tif len(paths) > 0 {\")\n\t\tg.P(\"\t\tname := m.ProtoReflect().Descriptor().FullName()\")\n\t\tg.P(\"\t\treturn \", protoimplPackage.Ident(\"X\"), \".NewError(\\\"invalid path %q for message %q\\\", paths[0], name)\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn nil\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"func numValidPaths(m \", protoPackage.Ident(\"Message\"), \", paths []string) int {\")\n\t\tg.P(\"\tmd0 := m.ProtoReflect().Descriptor()\")\n\t\tg.P(\"\tfor i, path := range paths {\")\n\t\tg.P(\"\t\tmd := md0\")\n\t\tg.P(\"\t\tif !rangeFields(path, func(field string) bool {\")\n\t\tg.P(\"\t\t\t// Search the field within the message.\")\n\t\tg.P(\"\t\t\tif md == nil {\")\n\t\tg.P(\"\t\t\t\treturn false // not within a message\")\n\t\tg.P(\"\t\t\t}\")\n\t\tg.P(\"\t\t\tfd := md.Fields().ByName(\", protoreflectPackage.Ident(\"Name\"), \"(field))\")\n\t\tg.P(\"\t\t\t// The real field name of a group is the message name.\")\n\t\tg.P(\"\t\t\tif fd == nil {\")\n\t\tg.P(\"\t\t\t\tgd := md.Fields().ByName(\", protoreflectPackage.Ident(\"Name\"), \"(\", stringsPackage.Ident(\"ToLower\"), \"(field)))\")\n\t\tg.P(\"\t\t\t\tif gd != nil && gd.Kind() == \", protoreflectPackage.Ident(\"GroupKind\"), \" && string(gd.Message().Name()) == field {\")\n\t\tg.P(\"\t\t\t\t\tfd = gd\")\n\t\tg.P(\"\t\t\t\t}\")\n\t\tg.P(\"\t\t\t} else if fd.Kind() == \", protoreflectPackage.Ident(\"GroupKind\"), \" && string(fd.Message().Name()) != field {\")\n\t\tg.P(\"\t\t\t\tfd = nil\")\n\t\tg.P(\"\t\t\t}\")\n\t\tg.P(\"\t\t\tif fd == nil {\")\n\t\tg.P(\"\t\t\t\treturn false // message has does not have this field\")\n\t\tg.P(\"\t\t\t}\")\n\t\tg.P()\n\t\tg.P(\"\t\t\t// Identify the next message to search within.\")\n\t\tg.P(\"\t\t\tmd = fd.Message() // may be nil\")\n\t\tg.P()\n\t\tg.P(\"\t\t\t// Repeated fields are only allowed at the last position.\")\n\t\tg.P(\"\t\t\tif fd.IsList() || fd.IsMap() {\")\n\t\tg.P(\"\t\t\t\tmd = nil\")\n\t\tg.P(\"\t\t\t}\")\n\t\tg.P()\n\t\tg.P(\"\t\t\treturn true\")\n\t\tg.P(\"\t\t}) {\")\n\t\tg.P(\"\t\t\treturn i\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn len(paths)\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// Normalize converts the mask to its canonical form where all paths are sorted\")\n\t\tg.P(\"// and redundant paths are removed.\")\n\t\tg.P(\"func (x *FieldMask) Normalize() {\")\n\t\tg.P(\"\tx.Paths = normalizePaths(x.Paths)\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\t\tg.P(\"func normalizePaths(paths []string) []string {\")\n\t\tg.P(\"\t\", sortPackage.Ident(\"Slice\"), \"(paths, func(i, j int) bool {\")\n\t\tg.P(\"\t\treturn lessPath(paths[i], paths[j])\")\n\t\tg.P(\"\t})\")\n\t\tg.P()\n\t\tg.P(\"\t// Elide any path that is a prefix match on the previous.\")\n\t\tg.P(\"\tout := paths[:0]\")\n\t\tg.P(\"\tfor _, path := range paths {\")\n\t\tg.P(\"\t\tif len(out) > 0 && hasPathPrefix(path, out[len(out)-1]) {\")\n\t\tg.P(\"\t\t\tcontinue\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t\tout = append(out, path)\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn out\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// hasPathPrefix is like strings.HasPrefix, but further checks for either\")\n\t\tg.P(\"// an exact matche or that the prefix is delimited by a dot.\")\n\t\tg.P(\"func hasPathPrefix(path, prefix string) bool {\")\n\t\tg.P(\"\treturn \", stringsPackage.Ident(\"HasPrefix\"), \"(path, prefix) && (len(path) == len(prefix) || path[len(prefix)] == '.')\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// lessPath is a lexicographical comparison where dot is specially treated\")\n\t\tg.P(\"// as the smallest symbol.\")\n\t\tg.P(\"func lessPath(x, y string) bool {\")\n\t\tg.P(\"\tfor i := 0; i < len(x) && i < len(y); i++ {\")\n\t\tg.P(\"\t\tif x[i] != y[i] {\")\n\t\tg.P(\"\t\t\treturn (x[i] - '.') < (y[i] - '.')\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"\treturn len(x) < len(y)\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\t\tg.P(\"// rangeFields is like strings.Split(path, \\\".\\\"), but avoids allocations by\")\n\t\tg.P(\"// iterating over each field in place and calling a iterator function.\")\n\t\tg.P(\"func rangeFields(path string, f func(field string) bool) bool {\")\n\t\tg.P(\"\tfor {\")\n\t\tg.P(\"\t\tvar field string\")\n\t\tg.P(\"\t\tif i := \", stringsPackage.Ident(\"IndexByte\"), \"(path, '.'); i >= 0 {\")\n\t\tg.P(\"\t\t\tfield, path = path[:i], path[i:]\")\n\t\tg.P(\"\t\t} else {\")\n\t\tg.P(\"\t\t\tfield, path = path, \\\"\\\"\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P()\n\t\tg.P(\"\t\tif !f(field) {\")\n\t\tg.P(\"\t\t\treturn false\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P()\n\t\tg.P(\"\t\tif len(path) == 0 {\")\n\t\tg.P(\"\t\t\treturn true\")\n\t\tg.P(\"\t\t}\")\n\t\tg.P(\"\t\tpath = \", stringsPackage.Ident(\"TrimPrefix\"), \"(path, \\\".\\\")\")\n\t\tg.P(\"\t}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\n\tcase genid.BoolValue_message_fullname,\n\t\tgenid.Int32Value_message_fullname,\n\t\tgenid.Int64Value_message_fullname,\n\t\tgenid.UInt32Value_message_fullname,\n\t\tgenid.UInt64Value_message_fullname,\n\t\tgenid.FloatValue_message_fullname,\n\t\tgenid.DoubleValue_message_fullname,\n\t\tgenid.StringValue_message_fullname,\n\t\tgenid.BytesValue_message_fullname:\n\t\tfuncName := strings.TrimSuffix(m.GoIdent.GoName, \"Value\")\n\t\ttypeName := strings.ToLower(funcName)\n\t\tswitch typeName {\n\t\tcase \"float\":\n\t\t\ttypeName = \"float32\"\n\t\tcase \"double\":\n\t\t\ttypeName = \"float64\"\n\t\tcase \"bytes\":\n\t\t\ttypeName = \"[]byte\"\n\t\t}\n\n\t\tg.P(\"// \", funcName, \" stores v in a new \", m.GoIdent, \" and returns a pointer to it.\")\n\t\tg.P(\"func \", funcName, \"(v \", typeName, \") *\", m.GoIdent, \" {\")\n\t\tg.P(\"\treturn &\", m.GoIdent, \"{Value: v}\")\n\t\tg.P(\"}\")\n\t\tg.P()\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/cmd/protoc-gen-go/main.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// The protoc-gen-go binary is a protoc plugin to generate Go code for\n// both proto2 and proto3 versions of the protocol buffer language.\n//\n// For more information about the usage of this plugin, see:\n// https://protobuf.dev/reference/go/go-generated.\npackage main\n\nimport (\n\t\"errors\"\n\t\"flag\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\n\tgengo \"google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo\"\n\t\"google.golang.org/protobuf/compiler/protogen\"\n\t\"google.golang.org/protobuf/internal/version\"\n)\n\nconst genGoDocURL = \"https://protobuf.dev/reference/go/go-generated\"\nconst grpcDocURL = \"https://grpc.io/docs/languages/go/quickstart/#regenerate-grpc-code\"\n\nfunc main() {\n\tif len(os.Args) == 2 && os.Args[1] == \"--version\" {\n\t\tfmt.Fprintf(os.Stdout, \"%v %v\\n\", filepath.Base(os.Args[0]), version.String())\n\t\tos.Exit(0)\n\t}\n\tif len(os.Args) == 2 && os.Args[1] == \"--help\" {\n\t\tfmt.Fprintf(os.Stdout, \"See \"+genGoDocURL+\" for usage information.\\n\")\n\t\tos.Exit(0)\n\t}\n\n\tvar (\n\t\tflags                                 flag.FlagSet\n\t\tplugins                               = flags.String(\"plugins\", \"\", \"deprecated option\")\n\t\texperimentalStripNonFunctionalCodegen = flags.Bool(\"experimental_strip_nonfunctional_codegen\", false, \"experimental_strip_nonfunctional_codegen true means that the plugin will not emit certain parts of the generated code in order to make it possible to compare a proto2/proto3 file with its equivalent (according to proto spec) editions file. Primarily, this is the encoded descriptor.\")\n\t)\n\tprotogen.Options{\n\t\tParamFunc:                    flags.Set,\n\t\tInternalStripForEditionsDiff: experimentalStripNonFunctionalCodegen,\n\t}.Run(func(gen *protogen.Plugin) error {\n\t\tif *plugins != \"\" {\n\t\t\treturn errors.New(\"protoc-gen-go: plugins are not supported; use 'protoc --go-grpc_out=...' to generate gRPC\\n\\n\" +\n\t\t\t\t\"See \" + grpcDocURL + \" for more information.\")\n\t\t}\n\t\tfor _, f := range gen.Files {\n\t\t\tif f.Generate {\n\t\t\t\tgengo.GenerateFile(gen, f)\n\t\t\t}\n\t\t}\n\t\tgen.SupportedFeatures = gengo.SupportedFeatures\n\t\tgen.SupportedEditionsMinimum = gengo.SupportedEditionsMinimum\n\t\tgen.SupportedEditionsMaximum = gengo.SupportedEditionsMaximum\n\t\treturn nil\n\t})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/compiler/protogen/protogen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protogen provides support for writing protoc plugins.\n//\n// Plugins for protoc, the Protocol Buffer compiler,\n// are programs which read a [pluginpb.CodeGeneratorRequest] message from standard input\n// and write a [pluginpb.CodeGeneratorResponse] message to standard output.\n// This package provides support for writing plugins which generate Go code.\npackage protogen\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/printer\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/encoding/prototext\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protodesc\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/types/dynamicpb\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n\t\"google.golang.org/protobuf/types/gofeaturespb\"\n\t\"google.golang.org/protobuf/types/pluginpb\"\n)\n\nconst goPackageDocURL = \"https://protobuf.dev/reference/go/go-generated#package\"\n\n// Run executes a function as a protoc plugin.\n//\n// It reads a [pluginpb.CodeGeneratorRequest] message from [os.Stdin], invokes the plugin\n// function, and writes a [pluginpb.CodeGeneratorResponse] message to [os.Stdout].\n//\n// If a failure occurs while reading or writing, Run prints an error to\n// [os.Stderr] and calls [os.Exit](1).\nfunc (opts Options) Run(f func(*Plugin) error) {\n\tif err := run(opts, f); err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"%s: %v\\n\", filepath.Base(os.Args[0]), err)\n\t\tos.Exit(1)\n\t}\n}\n\nfunc run(opts Options, f func(*Plugin) error) error {\n\tif len(os.Args) > 1 {\n\t\treturn fmt.Errorf(\"unknown argument %q (this program should be run by protoc, not directly)\", os.Args[1])\n\t}\n\tin, err := io.ReadAll(os.Stdin)\n\tif err != nil {\n\t\treturn err\n\t}\n\treq := &pluginpb.CodeGeneratorRequest{}\n\tif err := proto.Unmarshal(in, req); err != nil {\n\t\treturn err\n\t}\n\tgen, err := opts.New(req)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := f(gen); err != nil {\n\t\t// Errors from the plugin function are reported by setting the\n\t\t// error field in the CodeGeneratorResponse.\n\t\t//\n\t\t// In contrast, errors that indicate a problem in protoc\n\t\t// itself (unparsable input, I/O errors, etc.) are reported\n\t\t// to stderr.\n\t\tgen.Error(err)\n\t}\n\tresp := gen.Response()\n\tout, err := proto.Marshal(resp)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif _, err := os.Stdout.Write(out); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// A Plugin is a protoc plugin invocation.\ntype Plugin struct {\n\t// Request is the CodeGeneratorRequest provided by protoc.\n\tRequest *pluginpb.CodeGeneratorRequest\n\n\t// Files is the set of files to generate and everything they import.\n\t// Files appear in topological order, so each file appears before any\n\t// file that imports it.\n\tFiles       []*File\n\tFilesByPath map[string]*File\n\n\t// SupportedFeatures is the set of protobuf language features supported by\n\t// this generator plugin. See the documentation for\n\t// google.protobuf.CodeGeneratorResponse.supported_features for details.\n\tSupportedFeatures uint64\n\n\tSupportedEditionsMinimum descriptorpb.Edition\n\tSupportedEditionsMaximum descriptorpb.Edition\n\n\tfileReg        *protoregistry.Files\n\tenumsByName    map[protoreflect.FullName]*Enum\n\tmessagesByName map[protoreflect.FullName]*Message\n\tannotateCode   bool\n\tpathType       pathType\n\tmodule         string\n\tgenFiles       []*GeneratedFile\n\topts           Options\n\terr            error\n}\n\ntype Options struct {\n\t// If ParamFunc is non-nil, it will be called with each unknown\n\t// generator parameter.\n\t//\n\t// Plugins for protoc can accept parameters from the command line,\n\t// passed in the --<lang>_out protoc, separated from the output\n\t// directory with a colon; e.g.,\n\t//\n\t//   --go_out=<param1>=<value1>,<param2>=<value2>:<output_directory>\n\t//\n\t// Parameters passed in this fashion as a comma-separated list of\n\t// key=value pairs will be passed to the ParamFunc.\n\t//\n\t// The (flag.FlagSet).Set method matches this function signature,\n\t// so parameters can be converted into flags as in the following:\n\t//\n\t//   var flags flag.FlagSet\n\t//   value := flags.Bool(\"param\", false, \"\")\n\t//   opts := &protogen.Options{\n\t//     ParamFunc: flags.Set,\n\t//   }\n\t//   opts.Run(func(p *protogen.Plugin) error {\n\t//     if *value { ... }\n\t//   })\n\tParamFunc func(name, value string) error\n\n\t// ImportRewriteFunc is called with the import path of each package\n\t// imported by a generated file. It returns the import path to use\n\t// for this package.\n\tImportRewriteFunc func(GoImportPath) GoImportPath\n\n\t// StripForEditionsDiff true means that the plugin will not emit certain\n\t// parts of the generated code in order to make it possible to compare a\n\t// proto2/proto3 file with its equivalent (according to proto spec)\n\t// editions file. Primarily, this is the encoded descriptor.\n\t//\n\t// This must be a registered flag that is initialized by ParamFunc. It will\n\t// be used by Options.New after it has parsed the flags.\n\t//\n\t// This struct field is for internal use by Go Protobuf only. Do not use it,\n\t// we might remove it at any time.\n\tInternalStripForEditionsDiff *bool\n\n\t// DefaultAPILevel overrides which API to generate by default (despite what\n\t// the editions feature default specifies). One of OPEN, HYBRID or OPAQUE.\n\tDefaultAPILevel gofeaturespb.GoFeatures_APILevel\n}\n\n// New returns a new Plugin.\nfunc (opts Options) New(req *pluginpb.CodeGeneratorRequest) (*Plugin, error) {\n\tgen := &Plugin{\n\t\tRequest:        req,\n\t\tFilesByPath:    make(map[string]*File),\n\t\tfileReg:        new(protoregistry.Files),\n\t\tenumsByName:    make(map[protoreflect.FullName]*Enum),\n\t\tmessagesByName: make(map[protoreflect.FullName]*Message),\n\t\topts:           opts,\n\t}\n\n\tpackageNames := make(map[string]GoPackageName)                // filename -> package name\n\timportPaths := make(map[string]GoImportPath)                  // filename -> import path\n\tapiLevel := make(map[string]gofeaturespb.GoFeatures_APILevel) // filename -> api level\n\tfor _, param := range strings.Split(req.GetParameter(), \",\") {\n\t\tvar value string\n\t\tif i := strings.Index(param, \"=\"); i >= 0 {\n\t\t\tvalue = param[i+1:]\n\t\t\tparam = param[0:i]\n\t\t}\n\t\tswitch param {\n\t\tcase \"\":\n\t\t\t// Ignore.\n\t\tcase \"module\":\n\t\t\tgen.module = value\n\t\tcase \"paths\":\n\t\t\tswitch value {\n\t\t\tcase \"import\":\n\t\t\t\tgen.pathType = pathTypeImport\n\t\t\tcase \"source_relative\":\n\t\t\t\tgen.pathType = pathTypeSourceRelative\n\t\t\tdefault:\n\t\t\t\treturn nil, fmt.Errorf(`unknown path type %q: want \"import\" or \"source_relative\"`, value)\n\t\t\t}\n\t\tcase \"annotate_code\":\n\t\t\tswitch value {\n\t\t\tcase \"true\", \"\":\n\t\t\t\tgen.annotateCode = true\n\t\t\tcase \"false\":\n\t\t\tdefault:\n\t\t\t\treturn nil, fmt.Errorf(`bad value for parameter %q: want \"true\" or \"false\"`, param)\n\t\t\t}\n\t\tcase \"default_api_level\":\n\t\t\tswitch value {\n\t\t\tcase \"API_OPEN\":\n\t\t\t\topts.DefaultAPILevel = gofeaturespb.GoFeatures_API_OPEN\n\t\t\tcase \"API_HYBRID\":\n\t\t\t\topts.DefaultAPILevel = gofeaturespb.GoFeatures_API_HYBRID\n\t\t\tcase \"API_OPAQUE\":\n\t\t\t\topts.DefaultAPILevel = gofeaturespb.GoFeatures_API_OPAQUE\n\t\t\tdefault:\n\t\t\t\treturn nil, fmt.Errorf(`unknown API level %q for parameter %q: want \"API_OPEN\", \"API_HYBRID\" or \"API_OPAQUE\"`, value, param)\n\t\t\t}\n\t\t\tgen.opts = opts\n\t\tdefault:\n\t\t\tif param[0] == 'M' {\n\t\t\t\timpPath, pkgName := splitImportPathAndPackageName(value)\n\t\t\t\tif pkgName != \"\" {\n\t\t\t\t\tpackageNames[param[1:]] = pkgName\n\t\t\t\t}\n\t\t\t\tif impPath != \"\" {\n\t\t\t\t\timportPaths[param[1:]] = impPath\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif strings.HasPrefix(param, \"apilevelM\") {\n\t\t\t\tvar level gofeaturespb.GoFeatures_APILevel\n\t\t\t\tswitch value {\n\t\t\t\tcase \"API_OPEN\":\n\t\t\t\t\tlevel = gofeaturespb.GoFeatures_API_OPEN\n\t\t\t\tcase \"API_HYBRID\":\n\t\t\t\t\tlevel = gofeaturespb.GoFeatures_API_HYBRID\n\t\t\t\tcase \"API_OPAQUE\":\n\t\t\t\t\tlevel = gofeaturespb.GoFeatures_API_OPAQUE\n\t\t\t\tdefault:\n\t\t\t\t\treturn nil, fmt.Errorf(`unknown API level %q for parameter %q: want \"API_OPEN\", \"API_HYBRID\" or \"API_OPAQUE\"`, value, param)\n\t\t\t\t}\n\t\t\t\tapiLevel[strings.TrimPrefix(param, \"apilevelM\")] = level\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif opts.ParamFunc != nil {\n\t\t\t\tif err := opts.ParamFunc(param, value); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// When the module= option is provided, we strip the module name\n\t// prefix from generated files. This only makes sense if generated\n\t// filenames are based on the import path.\n\tif gen.module != \"\" && gen.pathType == pathTypeSourceRelative {\n\t\treturn nil, fmt.Errorf(\"cannot use module= with paths=source_relative\")\n\t}\n\n\t// Instead of generating each gen.Request.ProtoFile,\n\t// generate gen.Request.FileToGenerate and its transitive dependencies.\n\t//\n\t// This effectively filters out 'import option' dependencies.\n\tfiles := gatherTransitiveDependencies(gen.Request)\n\n\t// Figure out the import path and package name for each file.\n\t//\n\t// The rules here are complicated and have grown organically over time.\n\t// Interactions between different ways of specifying package information\n\t// may be surprising.\n\t//\n\t// The recommended approach is to include a go_package option in every\n\t// .proto source file specifying the full import path of the Go package\n\t// associated with this file.\n\t//\n\t//     option go_package = \"google.golang.org/protobuf/types/known/anypb\";\n\t//\n\t// Alternatively, build systems which want to exert full control over\n\t// import paths may specify M<filename>=<import_path> flags.\n\tfor _, fdesc := range files {\n\t\tfilename := fdesc.GetName()\n\t\t// The \"M\" command-line flags take precedence over\n\t\t// the \"go_package\" option in the .proto source file.\n\t\timpPath, pkgName := splitImportPathAndPackageName(fdesc.GetOptions().GetGoPackage())\n\t\tif importPaths[filename] == \"\" && impPath != \"\" {\n\t\t\timportPaths[filename] = impPath\n\t\t}\n\t\tif packageNames[filename] == \"\" && pkgName != \"\" {\n\t\t\tpackageNames[filename] = pkgName\n\t\t}\n\t\tswitch {\n\t\tcase importPaths[filename] == \"\":\n\t\t\t// The import path must be specified one way or another.\n\t\t\treturn nil, fmt.Errorf(\n\t\t\t\t\"unable to determine Go import path for %q\\n\\n\"+\n\t\t\t\t\t\"Please specify either:\\n\"+\n\t\t\t\t\t\"\\t• a \\\"go_package\\\" option in the .proto source file, or\\n\"+\n\t\t\t\t\t\"\\t• a \\\"M\\\" argument on the command line.\\n\\n\"+\n\t\t\t\t\t\"See %v for more information.\\n\",\n\t\t\t\tfdesc.GetName(), goPackageDocURL)\n\t\tcase !strings.Contains(string(importPaths[filename]), \".\") &&\n\t\t\t!strings.Contains(string(importPaths[filename]), \"/\"):\n\t\t\t// Check that import paths contain at least a dot or slash to avoid\n\t\t\t// a common mistake where import path is confused with package name.\n\t\t\treturn nil, fmt.Errorf(\n\t\t\t\t\"invalid Go import path %q for %q\\n\\n\"+\n\t\t\t\t\t\"The import path must contain at least one period ('.') or forward slash ('/') character.\\n\\n\"+\n\t\t\t\t\t\"See %v for more information.\\n\",\n\t\t\t\tstring(importPaths[filename]), fdesc.GetName(), goPackageDocURL)\n\t\tcase packageNames[filename] == \"\":\n\t\t\t// If the package name is not explicitly specified,\n\t\t\t// then derive a reasonable package name from the import path.\n\t\t\t//\n\t\t\t// NOTE: The package name is derived first from the import path in\n\t\t\t// the \"go_package\" option (if present) before trying the \"M\" flag.\n\t\t\t// The inverted order for this is because the primary use of the \"M\"\n\t\t\t// flag is by build systems that have full control over the\n\t\t\t// import paths all packages, where it is generally expected that\n\t\t\t// the Go package name still be identical for the Go toolchain and\n\t\t\t// for custom build systems like Bazel.\n\t\t\tif impPath == \"\" {\n\t\t\t\timpPath = importPaths[filename]\n\t\t\t}\n\t\t\tpackageNames[filename] = cleanPackageName(path.Base(string(impPath)))\n\t\t}\n\t}\n\n\t// Consistency check: Every file with the same Go import path should have\n\t// the same Go package name.\n\tpackageFiles := make(map[GoImportPath][]string)\n\tfor filename, importPath := range importPaths {\n\t\tif _, ok := packageNames[filename]; !ok {\n\t\t\t// Skip files mentioned in a M<file>=<import_path> parameter\n\t\t\t// but which do not appear in the CodeGeneratorRequest.\n\t\t\tcontinue\n\t\t}\n\t\tpackageFiles[importPath] = append(packageFiles[importPath], filename)\n\t}\n\tfor importPath, filenames := range packageFiles {\n\t\tfor i := 1; i < len(filenames); i++ {\n\t\t\tif a, b := packageNames[filenames[0]], packageNames[filenames[i]]; a != b {\n\t\t\t\treturn nil, fmt.Errorf(\"Go package %v has inconsistent names %v (%v) and %v (%v)\",\n\t\t\t\t\timportPath, a, filenames[0], b, filenames[i])\n\t\t\t}\n\t\t}\n\t}\n\n\t// The extracted types from the full import set\n\ttypeRegistry := newExtensionRegistry()\n\tfor _, fdesc := range files {\n\t\tfilename := fdesc.GetName()\n\t\tif gen.FilesByPath[filename] != nil {\n\t\t\treturn nil, fmt.Errorf(\"duplicate file name: %q\", filename)\n\t\t}\n\t\tf, err := newFile(gen, fdesc, packageNames[filename], importPaths[filename], apiLevel[filename])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tgen.Files = append(gen.Files, f)\n\t\tgen.FilesByPath[filename] = f\n\t\tif err = typeRegistry.registerAllExtensionsFromFile(f.Desc); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tfor _, filename := range gen.Request.FileToGenerate {\n\t\tf, ok := gen.FilesByPath[filename]\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"no descriptor for generated file: %v\", filename)\n\t\t}\n\t\tf.Generate = true\n\t}\n\n\t// Create fully-linked descriptors if new extensions were found\n\tif typeRegistry.hasNovelExtensions() {\n\t\tfor _, f := range gen.Files {\n\t\t\tb, err := proto.Marshal(f.Proto.ProtoReflect().Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\terr = proto.UnmarshalOptions{Resolver: typeRegistry}.Unmarshal(b, f.Proto)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t}\n\treturn gen, nil\n}\n\ntype transitiveDependencies struct {\n\tfiles      map[string]*descriptorpb.FileDescriptorProto\n\tdeps       map[string]bool\n\tsortedDeps []*descriptorpb.FileDescriptorProto\n}\n\nfunc newTransitiveDependencies(req *pluginpb.CodeGeneratorRequest) *transitiveDependencies {\n\tfiles := make(map[string]*descriptorpb.FileDescriptorProto)\n\tfor _, f := range req.GetProtoFile() {\n\t\tfiles[f.GetName()] = f\n\t}\n\treturn &transitiveDependencies{\n\t\tfiles: files,\n\t\tdeps:  make(map[string]bool),\n\t}\n}\n\nfunc (td *transitiveDependencies) add(name string) {\n\tif td.deps[name] {\n\t\treturn\n\t}\n\tf := td.files[name]\n\tif f == nil {\n\t\t// This shouldn't happen, but will fail later if it does.\n\t\treturn\n\t}\n\ttd.deps[name] = true\n\tfor _, dep := range f.GetDependency() {\n\t\ttd.add(dep)\n\t}\n\ttd.sortedDeps = append(td.sortedDeps, f)\n}\n\nfunc gatherTransitiveDependencies(req *pluginpb.CodeGeneratorRequest) []*descriptorpb.FileDescriptorProto {\n\tif len(req.GetFileToGenerate()) == 0 {\n\t\treturn req.GetProtoFile()\n\t}\n\ttd := newTransitiveDependencies(req)\n\tfor _, f := range req.GetFileToGenerate() {\n\t\ttd.add(f)\n\t}\n\treturn td.sortedDeps\n}\n\n// InternalStripForEditionsDiff returns whether or not to strip non-functional\n// codegen for editions diff testing.\n//\n// This function is for internal use by Go Protobuf only. Do not use it, we\n// might remove it at any time.\nfunc (gen *Plugin) InternalStripForEditionsDiff() bool {\n\treturn gen.opts.InternalStripForEditionsDiff != nil && *gen.opts.InternalStripForEditionsDiff\n}\n\n// Error records an error in code generation. The generator will report the\n// error back to protoc and will not produce output.\nfunc (gen *Plugin) Error(err error) {\n\tif gen.err == nil {\n\t\tgen.err = err\n\t}\n}\n\n// Response returns the generator output.\nfunc (gen *Plugin) Response() *pluginpb.CodeGeneratorResponse {\n\tresp := &pluginpb.CodeGeneratorResponse{}\n\t// Always report the support for editions. Otherwise protoc might obfuscate\n\t// the error by saying editions are not supported by the plugin.\n\t// It is arguable if protoc should handle this but it is possible that the\n\t// error only exists because the plugin does not support editions and thus\n\t// it is not unreasonable for protoc to suspect it is the lack of editions\n\t// support that led to this error.\n\tif gen.SupportedFeatures > 0 {\n\t\tresp.SupportedFeatures = proto.Uint64(gen.SupportedFeatures)\n\t}\n\tif gen.SupportedEditionsMinimum != descriptorpb.Edition_EDITION_UNKNOWN && gen.SupportedEditionsMaximum != descriptorpb.Edition_EDITION_UNKNOWN {\n\t\tresp.MinimumEdition = proto.Int32(int32(gen.SupportedEditionsMinimum))\n\t\tresp.MaximumEdition = proto.Int32(int32(gen.SupportedEditionsMaximum))\n\t}\n\n\tif gen.err != nil {\n\t\tresp.Error = proto.String(gen.err.Error())\n\t\treturn resp\n\t}\n\tfor _, g := range gen.genFiles {\n\t\tif g.skip {\n\t\t\tcontinue\n\t\t}\n\t\tcontent, err := g.Content()\n\t\tif err != nil {\n\t\t\treturn &pluginpb.CodeGeneratorResponse{\n\t\t\t\tError: proto.String(err.Error()),\n\t\t\t}\n\t\t}\n\t\tfilename := g.filename\n\t\tif gen.module != \"\" {\n\t\t\ttrim := gen.module + \"/\"\n\t\t\tif !strings.HasPrefix(filename, trim) {\n\t\t\t\treturn &pluginpb.CodeGeneratorResponse{\n\t\t\t\t\tError: proto.String(fmt.Sprintf(\"%v: generated file does not match prefix %q\", filename, gen.module)),\n\t\t\t\t}\n\t\t\t}\n\t\t\tfilename = strings.TrimPrefix(filename, trim)\n\t\t}\n\t\tresp.File = append(resp.File, &pluginpb.CodeGeneratorResponse_File{\n\t\t\tName:    proto.String(filename),\n\t\t\tContent: proto.String(string(content)),\n\t\t})\n\t\tif gen.annotateCode && strings.HasSuffix(g.filename, \".go\") {\n\t\t\tmeta, err := g.metaFile(content)\n\t\t\tif err != nil {\n\t\t\t\treturn &pluginpb.CodeGeneratorResponse{\n\t\t\t\t\tError: proto.String(err.Error()),\n\t\t\t\t}\n\t\t\t}\n\t\t\tresp.File = append(resp.File, &pluginpb.CodeGeneratorResponse_File{\n\t\t\t\tName:    proto.String(filename + \".meta\"),\n\t\t\t\tContent: proto.String(meta),\n\t\t\t})\n\t\t}\n\t}\n\treturn resp\n}\n\n// A File describes a .proto source file.\ntype File struct {\n\tDesc  protoreflect.FileDescriptor\n\tProto *descriptorpb.FileDescriptorProto\n\n\tGoDescriptorIdent GoIdent       // name of Go variable for the file descriptor\n\tGoPackageName     GoPackageName // name of this file's Go package\n\tGoImportPath      GoImportPath  // import path of this file's Go package\n\n\tEnums      []*Enum      // top-level enum declarations\n\tMessages   []*Message   // top-level message declarations\n\tExtensions []*Extension // top-level extension declarations\n\tServices   []*Service   // top-level service declarations\n\n\tGenerate bool // true if we should generate code for this file\n\n\t// GeneratedFilenamePrefix is used to construct filenames for generated\n\t// files associated with this source file.\n\t//\n\t// For example, the source file \"dir/foo.proto\" might have a filename prefix\n\t// of \"dir/foo\". Appending \".pb.go\" produces an output file of \"dir/foo.pb.go\".\n\tGeneratedFilenamePrefix string\n\n\tlocation Location\n\n\t// APILevel specifies which API to generate. One of OPEN, HYBRID or OPAQUE.\n\tAPILevel gofeaturespb.GoFeatures_APILevel\n}\n\nfunc newFile(gen *Plugin, p *descriptorpb.FileDescriptorProto, packageName GoPackageName, importPath GoImportPath, apiLevel gofeaturespb.GoFeatures_APILevel) (*File, error) {\n\tdesc, err := protodesc.NewFile(p, gen.fileReg)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid FileDescriptorProto %q: %v\", p.GetName(), err)\n\t}\n\tif err := gen.fileReg.RegisterFile(desc); err != nil {\n\t\treturn nil, fmt.Errorf(\"cannot register descriptor %q: %v\", p.GetName(), err)\n\t}\n\tdefaultAPILevel := gen.defaultAPILevel()\n\tif apiLevel != gofeaturespb.GoFeatures_API_LEVEL_UNSPECIFIED {\n\t\tdefaultAPILevel = apiLevel\n\t}\n\tf := &File{\n\t\tDesc:          desc,\n\t\tProto:         p,\n\t\tGoPackageName: packageName,\n\t\tGoImportPath:  importPath,\n\t\tlocation:      Location{SourceFile: desc.Path()},\n\n\t\tAPILevel: fileAPILevel(desc, defaultAPILevel),\n\t}\n\n\t// Determine the prefix for generated Go files.\n\tprefix := p.GetName()\n\tif ext := path.Ext(prefix); ext == \".proto\" || ext == \".protodevel\" {\n\t\tprefix = prefix[:len(prefix)-len(ext)]\n\t}\n\tswitch gen.pathType {\n\tcase pathTypeImport:\n\t\t// If paths=import, the output filename is derived from the Go import path.\n\t\tprefix = path.Join(string(f.GoImportPath), path.Base(prefix))\n\tcase pathTypeSourceRelative:\n\t\t// If paths=source_relative, the output filename is derived from\n\t\t// the input filename.\n\t}\n\tf.GoDescriptorIdent = GoIdent{\n\t\tGoName:       \"File_\" + strs.GoSanitized(p.GetName()),\n\t\tGoImportPath: f.GoImportPath,\n\t}\n\tf.GeneratedFilenamePrefix = prefix\n\n\tfor i, eds := 0, desc.Enums(); i < eds.Len(); i++ {\n\t\tf.Enums = append(f.Enums, newEnum(gen, f, nil, eds.Get(i)))\n\t}\n\tfor i, mds := 0, desc.Messages(); i < mds.Len(); i++ {\n\t\tf.Messages = append(f.Messages, newMessage(gen, f, nil, mds.Get(i)))\n\t}\n\tfor i, xds := 0, desc.Extensions(); i < xds.Len(); i++ {\n\t\tf.Extensions = append(f.Extensions, newField(gen, f, nil, xds.Get(i)))\n\t}\n\tfor i, sds := 0, desc.Services(); i < sds.Len(); i++ {\n\t\tf.Services = append(f.Services, newService(gen, f, sds.Get(i)))\n\t}\n\tfor _, message := range f.Messages {\n\t\tif err := message.resolveDependencies(gen); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tfor _, extension := range f.Extensions {\n\t\tif err := extension.resolveDependencies(gen); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tfor _, service := range f.Services {\n\t\tfor _, method := range service.Methods {\n\t\t\tif err := method.resolveDependencies(gen); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t}\n\treturn f, nil\n}\n\n// splitImportPathAndPackageName splits off the optional Go package name\n// from the Go import path when separated by a ';' delimiter.\nfunc splitImportPathAndPackageName(s string) (GoImportPath, GoPackageName) {\n\tif i := strings.Index(s, \";\"); i >= 0 {\n\t\treturn GoImportPath(s[:i]), GoPackageName(s[i+1:])\n\t}\n\treturn GoImportPath(s), \"\"\n}\n\n// An Enum describes an enum.\ntype Enum struct {\n\tDesc protoreflect.EnumDescriptor\n\n\tGoIdent GoIdent // name of the generated Go type\n\n\tValues []*EnumValue // enum value declarations\n\n\tLocation Location   // location of this enum\n\tComments CommentSet // comments associated with this enum\n}\n\nfunc newEnum(gen *Plugin, f *File, parent *Message, desc protoreflect.EnumDescriptor) *Enum {\n\tvar loc Location\n\tif parent != nil {\n\t\tloc = parent.Location.appendPath(genid.DescriptorProto_EnumType_field_number, desc.Index())\n\t} else {\n\t\tloc = f.location.appendPath(genid.FileDescriptorProto_EnumType_field_number, desc.Index())\n\t}\n\tenum := &Enum{\n\t\tDesc:     desc,\n\t\tGoIdent:  newGoIdent(f, desc),\n\t\tLocation: loc,\n\t\tComments: makeCommentSet(gen, f.Desc.SourceLocations().ByDescriptor(desc)),\n\t}\n\tgen.enumsByName[desc.FullName()] = enum\n\tfor i, vds := 0, enum.Desc.Values(); i < vds.Len(); i++ {\n\t\tenum.Values = append(enum.Values, newEnumValue(gen, f, parent, enum, vds.Get(i)))\n\t}\n\treturn enum\n}\n\n// An EnumValue describes an enum value.\ntype EnumValue struct {\n\tDesc protoreflect.EnumValueDescriptor\n\n\tGoIdent GoIdent // name of the generated Go declaration\n\n\t// PrefixedAlias is usually empty, except when the strip_enum_prefix feature\n\t// for this enum was set to GENERATE_BOTH, in which case PrefixedAlias holds\n\t// the old name which should be generated as an alias for the new name for\n\t// compatibility.\n\tPrefixedAlias GoIdent\n\n\tParent *Enum // enum in which this value is declared\n\n\tLocation Location   // location of this enum value\n\tComments CommentSet // comments associated with this enum value\n}\n\nfunc newEnumValue(gen *Plugin, f *File, message *Message, enum *Enum, desc protoreflect.EnumValueDescriptor) *EnumValue {\n\t// A top-level enum value's name is: EnumName_ValueName\n\t// An enum value contained in a message is: MessageName_ValueName\n\t//\n\t// For historical reasons, enum value names are not camel-cased.\n\tparentIdent := enum.GoIdent\n\tif message != nil {\n\t\tparentIdent = message.GoIdent\n\t}\n\tname := parentIdent.GoName + \"_\" + string(desc.Name())\n\tvar prefixedName string\n\tloc := enum.Location.appendPath(genid.EnumDescriptorProto_Value_field_number, desc.Index())\n\tif ed, ok := enum.Desc.(*filedesc.Enum); ok {\n\t\tprefix := strings.Replace(strings.ToLower(string(enum.Desc.Name())), \"_\", \"\", -1)\n\n\t\t// Start with the StripEnumPrefix of the enum descriptor,\n\t\t// then override it with the StripEnumPrefix of the enum value descriptor,\n\t\t// if any.\n\t\tsep := ed.L1.EditionFeatures.StripEnumPrefix\n\t\tevof := desc.Options().(*descriptorpb.EnumValueOptions).GetFeatures()\n\t\tif proto.HasExtension(evof, gofeaturespb.E_Go) {\n\t\t\tgf := proto.GetExtension(evof, gofeaturespb.E_Go).(*gofeaturespb.GoFeatures)\n\t\t\tif gf.StripEnumPrefix != nil {\n\t\t\t\tsep = int(*gf.StripEnumPrefix)\n\t\t\t}\n\t\t}\n\n\t\tswitch sep {\n\t\tcase genid.GoFeatures_STRIP_ENUM_PREFIX_KEEP_enum_value:\n\t\t\t// keep long name\n\n\t\tcase genid.GoFeatures_STRIP_ENUM_PREFIX_STRIP_enum_value:\n\t\t\tname = parentIdent.GoName + \"_\" + strs.TrimEnumPrefix(string(desc.Name()), prefix)\n\n\t\tcase genid.GoFeatures_STRIP_ENUM_PREFIX_GENERATE_BOTH_enum_value:\n\t\t\tprefixedName = name\n\t\t\tname = parentIdent.GoName + \"_\" + strs.TrimEnumPrefix(string(desc.Name()), prefix)\n\t\t}\n\t}\n\tev := &EnumValue{\n\t\tDesc:     desc,\n\t\tGoIdent:  f.GoImportPath.Ident(name),\n\t\tParent:   enum,\n\t\tLocation: loc,\n\t\tComments: makeCommentSet(gen, f.Desc.SourceLocations().ByDescriptor(desc)),\n\t}\n\tif prefixedName != \"\" {\n\t\tev.PrefixedAlias = f.GoImportPath.Ident(prefixedName)\n\t}\n\treturn ev\n}\n\n// A Message describes a message.\ntype Message struct {\n\tDesc protoreflect.MessageDescriptor\n\n\tGoIdent GoIdent // name of the generated Go type\n\n\tFields []*Field // message field declarations\n\tOneofs []*Oneof // message oneof declarations\n\n\tEnums      []*Enum      // nested enum declarations\n\tMessages   []*Message   // nested message declarations\n\tExtensions []*Extension // nested extension declarations\n\n\tLocation Location   // location of this message\n\tComments CommentSet // comments associated with this message\n\n\t// APILevel specifies which API to generate. One of OPEN, HYBRID or OPAQUE.\n\tAPILevel gofeaturespb.GoFeatures_APILevel\n}\n\nfunc newMessage(gen *Plugin, f *File, parent *Message, desc protoreflect.MessageDescriptor) *Message {\n\tvar loc Location\n\tif parent != nil {\n\t\tloc = parent.Location.appendPath(genid.DescriptorProto_NestedType_field_number, desc.Index())\n\t} else {\n\t\tloc = f.location.appendPath(genid.FileDescriptorProto_MessageType_field_number, desc.Index())\n\t}\n\n\tdef := f.APILevel\n\tif parent != nil {\n\t\t// editions feature semantics: applies to nested messages.\n\t\tdef = parent.APILevel\n\t}\n\n\tmessage := &Message{\n\t\tDesc:     desc,\n\t\tGoIdent:  newGoIdent(f, desc),\n\t\tLocation: loc,\n\t\tComments: makeCommentSet(gen, f.Desc.SourceLocations().ByDescriptor(desc)),\n\n\t\tAPILevel: messageAPILevel(desc, def),\n\t}\n\tgen.messagesByName[desc.FullName()] = message\n\tfor i, eds := 0, desc.Enums(); i < eds.Len(); i++ {\n\t\tmessage.Enums = append(message.Enums, newEnum(gen, f, message, eds.Get(i)))\n\t}\n\tfor i, mds := 0, desc.Messages(); i < mds.Len(); i++ {\n\t\tmessage.Messages = append(message.Messages, newMessage(gen, f, message, mds.Get(i)))\n\t}\n\tfor i, fds := 0, desc.Fields(); i < fds.Len(); i++ {\n\t\tmessage.Fields = append(message.Fields, newField(gen, f, message, fds.Get(i)))\n\t}\n\tfor i, ods := 0, desc.Oneofs(); i < ods.Len(); i++ {\n\t\tmessage.Oneofs = append(message.Oneofs, newOneof(gen, f, message, ods.Get(i)))\n\t}\n\tfor i, xds := 0, desc.Extensions(); i < xds.Len(); i++ {\n\t\tmessage.Extensions = append(message.Extensions, newField(gen, f, message, xds.Get(i)))\n\t}\n\n\t// Resolve local references between fields and oneofs.\n\tfor _, field := range message.Fields {\n\t\tif od := field.Desc.ContainingOneof(); od != nil {\n\t\t\toneof := message.Oneofs[od.Index()]\n\t\t\tfield.Oneof = oneof\n\t\t\toneof.Fields = append(oneof.Fields, field)\n\t\t}\n\t}\n\n\t// Field name conflict resolution.\n\t//\n\t// We assume well-known method names that may be attached to a generated\n\t// message type, as well as a 'Get*' method for each field. For each\n\t// field in turn, we add _s to its name until there are no conflicts.\n\t//\n\t// Any change to the following set of method names is a potential\n\t// incompatible API change because it may change generated field names.\n\t//\n\t// TODO: If we ever support a 'go_name' option to set the Go name of a\n\t// field, we should consider dropping this entirely. The conflict\n\t// resolution algorithm is subtle and surprising (changing the order\n\t// in which fields appear in the .proto source file can change the\n\t// names of fields in generated code), and does not adapt well to\n\t// adding new per-field methods such as setters.\n\tusedNames := map[string]bool{\n\t\t\"Reset\":               true,\n\t\t\"String\":              true,\n\t\t\"ProtoMessage\":        true,\n\t\t\"Marshal\":             true,\n\t\t\"Unmarshal\":           true,\n\t\t\"ExtensionRangeArray\": true,\n\t\t\"ExtensionMap\":        true,\n\t\t\"Descriptor\":          true,\n\t}\n\tmakeNameUnique := func(name string, hasGetter bool) string {\n\t\tfor usedNames[name] || (hasGetter && usedNames[\"Get\"+name]) {\n\t\t\tname += \"_\"\n\t\t}\n\t\tusedNames[name] = true\n\t\tusedNames[\"Get\"+name] = hasGetter\n\t\treturn name\n\t}\n\tfor _, field := range message.Fields {\n\t\tfield.GoName = makeNameUnique(field.GoName, true)\n\t\tfield.GoIdent.GoName = message.GoIdent.GoName + \"_\" + field.GoName\n\t\tif field.Oneof != nil && field.Oneof.Fields[0] == field {\n\t\t\t// Make the name for a oneof unique as well. For historical reasons,\n\t\t\t// this assumes that a getter method is not generated for oneofs.\n\t\t\t// This is incorrect, but fixing it breaks existing code.\n\t\t\tfield.Oneof.GoName = makeNameUnique(field.Oneof.GoName, false)\n\t\t\tfield.Oneof.GoIdent.GoName = message.GoIdent.GoName + \"_\" + field.Oneof.GoName\n\t\t}\n\t}\n\n\t// Oneof field name conflict resolution.\n\t//\n\t// This conflict resolution is incomplete as it does not consider collisions\n\t// with other oneof field types, but fixing it breaks existing code.\n\tfor _, field := range message.Fields {\n\t\tif field.Oneof != nil {\n\t\tLoop:\n\t\t\tfor {\n\t\t\t\tfor _, nestedMessage := range message.Messages {\n\t\t\t\t\tif nestedMessage.GoIdent == field.GoIdent {\n\t\t\t\t\t\tfield.GoIdent.GoName += \"_\"\n\t\t\t\t\t\tcontinue Loop\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor _, nestedEnum := range message.Enums {\n\t\t\t\t\tif nestedEnum.GoIdent == field.GoIdent {\n\t\t\t\t\t\tfield.GoIdent.GoName += \"_\"\n\t\t\t\t\t\tcontinue Loop\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak Loop\n\t\t\t}\n\t\t}\n\t}\n\n\topaqueNewMessageHook(message)\n\n\treturn message\n}\n\nfunc (message *Message) resolveDependencies(gen *Plugin) error {\n\tfor _, field := range message.Fields {\n\t\tif err := field.resolveDependencies(gen); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tfor _, message := range message.Messages {\n\t\tif err := message.resolveDependencies(gen); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tfor _, extension := range message.Extensions {\n\t\tif err := extension.resolveDependencies(gen); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// A Field describes a message field.\ntype Field struct {\n\tDesc protoreflect.FieldDescriptor\n\n\t// GoName is the base name of this field's Go field and methods.\n\t// For code generated by protoc-gen-go, this means a field named\n\t// '{{GoName}}' and a getter method named 'Get{{GoName}}'.\n\tGoName string // e.g., \"FieldName\"\n\n\t// GoIdent is the base name of a top-level declaration for this field.\n\t// For code generated by protoc-gen-go, this means a wrapper type named\n\t// '{{GoIdent}}' for members fields of a oneof, and a variable named\n\t// 'E_{{GoIdent}}' for extension fields.\n\tGoIdent GoIdent // e.g., \"MessageName_FieldName\"\n\n\tParent   *Message // message in which this field is declared; nil if top-level extension\n\tOneof    *Oneof   // containing oneof; nil if not part of a oneof\n\tExtendee *Message // extended message for extension fields; nil otherwise\n\n\tEnum    *Enum    // type for enum fields; nil otherwise\n\tMessage *Message // type for message or group fields; nil otherwise\n\n\tLocation Location   // location of this field\n\tComments CommentSet // comments associated with this field\n\n\t// camelCase is the same as GoName, but without the name\n\t// mangling.  This is used in builders, where only the single\n\t// name \"Build\" needs to be mangled.\n\tcamelCase string\n\n\t// hasConflictHybrid tells us if we are to insert an '_' into\n\t// the method names, (e.g. SetFoo becomes Set_Foo).  This will\n\t// be set even if we generate opaque protos, as we will want\n\t// to potentially generate these method names anyway\n\t// (opaque-v0).\n\thasConflictHybrid bool\n}\n\nfunc newField(gen *Plugin, f *File, message *Message, desc protoreflect.FieldDescriptor) *Field {\n\tvar loc Location\n\tswitch {\n\tcase desc.IsExtension() && message == nil:\n\t\tloc = f.location.appendPath(genid.FileDescriptorProto_Extension_field_number, desc.Index())\n\tcase desc.IsExtension() && message != nil:\n\t\tloc = message.Location.appendPath(genid.DescriptorProto_Extension_field_number, desc.Index())\n\tdefault:\n\t\tloc = message.Location.appendPath(genid.DescriptorProto_Field_field_number, desc.Index())\n\t}\n\tcamelCased := strs.GoCamelCase(string(desc.Name()))\n\tvar parentPrefix string\n\tif message != nil {\n\t\tparentPrefix = message.GoIdent.GoName + \"_\"\n\t}\n\tfield := &Field{\n\t\tDesc:   desc,\n\t\tGoName: camelCased,\n\t\tGoIdent: GoIdent{\n\t\t\tGoImportPath: f.GoImportPath,\n\t\t\tGoName:       parentPrefix + camelCased,\n\t\t},\n\t\tParent:   message,\n\t\tLocation: loc,\n\t\tComments: makeCommentSet(gen, f.Desc.SourceLocations().ByDescriptor(desc)),\n\t}\n\n\topaqueNewFieldHook(desc, field)\n\n\treturn field\n}\n\nfunc (field *Field) resolveDependencies(gen *Plugin) error {\n\tdesc := field.Desc\n\tswitch desc.Kind() {\n\tcase protoreflect.EnumKind:\n\t\tname := field.Desc.Enum().FullName()\n\t\tenum, ok := gen.enumsByName[name]\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"field %v: no descriptor for enum %v\", desc.FullName(), name)\n\t\t}\n\t\tfield.Enum = enum\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tname := desc.Message().FullName()\n\t\tmessage, ok := gen.messagesByName[name]\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"field %v: no descriptor for type %v\", desc.FullName(), name)\n\t\t}\n\t\tfield.Message = message\n\t}\n\tif desc.IsExtension() {\n\t\tname := desc.ContainingMessage().FullName()\n\t\tmessage, ok := gen.messagesByName[name]\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"field %v: no descriptor for type %v\", desc.FullName(), name)\n\t\t}\n\t\tfield.Extendee = message\n\t}\n\treturn nil\n}\n\n// A Oneof describes a message oneof.\ntype Oneof struct {\n\tDesc protoreflect.OneofDescriptor\n\n\t// GoName is the base name of this oneof's Go field and methods.\n\t// For code generated by protoc-gen-go, this means a field named\n\t// '{{GoName}}' and a getter method named 'Get{{GoName}}'.\n\tGoName string // e.g., \"OneofName\"\n\n\t// GoIdent is the base name of a top-level declaration for this oneof.\n\tGoIdent GoIdent // e.g., \"MessageName_OneofName\"\n\n\tParent *Message // message in which this oneof is declared\n\n\tFields []*Field // fields that are part of this oneof\n\n\tLocation Location   // location of this oneof\n\tComments CommentSet // comments associated with this oneof\n\n\t// camelCase is the same as GoName, but without the name mangling.\n\t// This is used in builders, which never have their names mangled\n\tcamelCase string\n\n\t// hasConflictHybrid tells us if we are to insert an '_' into\n\t// the method names, (e.g. SetFoo becomes Set_Foo).  This will\n\t// be set even if we generate opaque protos, as we will want\n\t// to potentially generate these method names anyway\n\t// (opaque-v0).\n\thasConflictHybrid bool\n}\n\nfunc newOneof(gen *Plugin, f *File, message *Message, desc protoreflect.OneofDescriptor) *Oneof {\n\tloc := message.Location.appendPath(genid.DescriptorProto_OneofDecl_field_number, desc.Index())\n\tcamelCased := strs.GoCamelCase(string(desc.Name()))\n\tparentPrefix := message.GoIdent.GoName + \"_\"\n\toneof := &Oneof{\n\t\tDesc:   desc,\n\t\tParent: message,\n\t\tGoName: camelCased,\n\t\tGoIdent: GoIdent{\n\t\t\tGoImportPath: f.GoImportPath,\n\t\t\tGoName:       parentPrefix + camelCased,\n\t\t},\n\t\tLocation: loc,\n\t\tComments: makeCommentSet(gen, f.Desc.SourceLocations().ByDescriptor(desc)),\n\t}\n\n\topaqueNewOneofHook(desc, oneof)\n\n\treturn oneof\n}\n\n// Extension is an alias of [Field] for documentation.\ntype Extension = Field\n\n// A Service describes a service.\ntype Service struct {\n\tDesc protoreflect.ServiceDescriptor\n\n\tGoName string\n\n\tMethods []*Method // service method declarations\n\n\tLocation Location   // location of this service\n\tComments CommentSet // comments associated with this service\n}\n\nfunc newService(gen *Plugin, f *File, desc protoreflect.ServiceDescriptor) *Service {\n\tloc := f.location.appendPath(genid.FileDescriptorProto_Service_field_number, desc.Index())\n\tservice := &Service{\n\t\tDesc:     desc,\n\t\tGoName:   strs.GoCamelCase(string(desc.Name())),\n\t\tLocation: loc,\n\t\tComments: makeCommentSet(gen, f.Desc.SourceLocations().ByDescriptor(desc)),\n\t}\n\tfor i, mds := 0, desc.Methods(); i < mds.Len(); i++ {\n\t\tservice.Methods = append(service.Methods, newMethod(gen, f, service, mds.Get(i)))\n\t}\n\treturn service\n}\n\n// A Method describes a method in a service.\ntype Method struct {\n\tDesc protoreflect.MethodDescriptor\n\n\tGoName string\n\n\tParent *Service // service in which this method is declared\n\n\tInput  *Message\n\tOutput *Message\n\n\tLocation Location   // location of this method\n\tComments CommentSet // comments associated with this method\n}\n\nfunc newMethod(gen *Plugin, f *File, service *Service, desc protoreflect.MethodDescriptor) *Method {\n\tloc := service.Location.appendPath(genid.ServiceDescriptorProto_Method_field_number, desc.Index())\n\tmethod := &Method{\n\t\tDesc:     desc,\n\t\tGoName:   strs.GoCamelCase(string(desc.Name())),\n\t\tParent:   service,\n\t\tLocation: loc,\n\t\tComments: makeCommentSet(gen, f.Desc.SourceLocations().ByDescriptor(desc)),\n\t}\n\treturn method\n}\n\nfunc (method *Method) resolveDependencies(gen *Plugin) error {\n\tdesc := method.Desc\n\n\tinName := desc.Input().FullName()\n\tin, ok := gen.messagesByName[inName]\n\tif !ok {\n\t\treturn fmt.Errorf(\"method %v: no descriptor for type %v\", desc.FullName(), inName)\n\t}\n\tmethod.Input = in\n\n\toutName := desc.Output().FullName()\n\tout, ok := gen.messagesByName[outName]\n\tif !ok {\n\t\treturn fmt.Errorf(\"method %v: no descriptor for type %v\", desc.FullName(), outName)\n\t}\n\tmethod.Output = out\n\n\treturn nil\n}\n\n// A GeneratedFile is a generated file.\ntype GeneratedFile struct {\n\tgen                  *Plugin\n\tskip                 bool\n\tfilename             string\n\tgoImportPath         GoImportPath\n\tbuf                  bytes.Buffer\n\tpackageNames         map[GoImportPath]GoPackageName\n\tusedPackageNames     map[GoPackageName]bool\n\tmanualImports        map[GoImportPath]bool\n\tannotations          map[string][]Annotation\n\tstripForEditionsDiff bool\n}\n\n// NewGeneratedFile creates a new generated file with the given filename\n// and import path.\nfunc (gen *Plugin) NewGeneratedFile(filename string, goImportPath GoImportPath) *GeneratedFile {\n\tg := &GeneratedFile{\n\t\tgen:                  gen,\n\t\tfilename:             filename,\n\t\tgoImportPath:         goImportPath,\n\t\tpackageNames:         make(map[GoImportPath]GoPackageName),\n\t\tusedPackageNames:     make(map[GoPackageName]bool),\n\t\tmanualImports:        make(map[GoImportPath]bool),\n\t\tannotations:          make(map[string][]Annotation),\n\t\tstripForEditionsDiff: gen.InternalStripForEditionsDiff(),\n\t}\n\n\t// All predeclared identifiers in Go are already used.\n\tfor _, s := range types.Universe.Names() {\n\t\tg.usedPackageNames[GoPackageName(s)] = true\n\t}\n\n\tgen.genFiles = append(gen.genFiles, g)\n\treturn g\n}\n\n// P prints a line to the generated output. It converts each parameter to a\n// string following the same rules as [fmt.Print]. It never inserts spaces\n// between parameters.\nfunc (g *GeneratedFile) P(v ...any) {\n\tfor _, x := range v {\n\t\tswitch x := x.(type) {\n\t\tcase GoIdent:\n\t\t\tfmt.Fprint(&g.buf, g.QualifiedGoIdent(x))\n\t\tdefault:\n\t\t\tfmt.Fprint(&g.buf, x)\n\t\t}\n\t}\n\tfmt.Fprintln(&g.buf)\n}\n\n// QualifiedGoIdent returns the string to use for a Go identifier.\n//\n// If the identifier is from a different Go package than the generated file,\n// the returned name will be qualified (package.name) and an import statement\n// for the identifier's package will be included in the file.\nfunc (g *GeneratedFile) QualifiedGoIdent(ident GoIdent) string {\n\tif ident.GoImportPath == g.goImportPath {\n\t\treturn ident.GoName\n\t}\n\tif packageName, ok := g.packageNames[ident.GoImportPath]; ok {\n\t\treturn string(packageName) + \".\" + ident.GoName\n\t}\n\tpackageName := cleanPackageName(path.Base(string(ident.GoImportPath)))\n\tfor i, orig := 1, packageName; g.usedPackageNames[packageName]; i++ {\n\t\tpackageName = orig + GoPackageName(strconv.Itoa(i))\n\t}\n\tg.packageNames[ident.GoImportPath] = packageName\n\tg.usedPackageNames[packageName] = true\n\treturn string(packageName) + \".\" + ident.GoName\n}\n\n// Import ensures a package is imported by the generated file.\n//\n// Packages referenced by [GeneratedFile.QualifiedGoIdent] are automatically imported.\n// Explicitly importing a package with Import is generally only necessary\n// when the import will be blank (import _ \"package\").\nfunc (g *GeneratedFile) Import(importPath GoImportPath) {\n\tg.manualImports[importPath] = true\n}\n\n// Write implements [io.Writer].\nfunc (g *GeneratedFile) Write(p []byte) (n int, err error) {\n\treturn g.buf.Write(p)\n}\n\n// Skip removes the generated file from the plugin output.\nfunc (g *GeneratedFile) Skip() {\n\tg.skip = true\n}\n\n// Unskip reverts a previous call to [GeneratedFile.Skip],\n// re-including the generated file in the plugin output.\nfunc (g *GeneratedFile) Unskip() {\n\tg.skip = false\n}\n\n// InternalStripForEditionsDiff returns true if the plugin should not emit certain\n// parts of the generated code in order to make it possible to compare a\n// proto2/proto3 file with its equivalent (according to proto spec) editions\n// file. Primarily, this is the encoded descriptor.\n//\n// This function is for internal use by Go Protobuf only. Do not use it, we\n// might remove it at any time.\nfunc (g *GeneratedFile) InternalStripForEditionsDiff() bool {\n\treturn g.stripForEditionsDiff\n}\n\n// Annotate associates a symbol in a generated Go file with a location in a\n// source .proto file.\n//\n// The symbol may refer to a type, constant, variable, function, method, or\n// struct field.  The \"T.sel\" syntax is used to identify the method or field\n// 'sel' on type 'T'.\n//\n// Deprecated: Use the [GeneratedFile.AnnotateSymbol] method instead.\nfunc (g *GeneratedFile) Annotate(symbol string, loc Location) {\n\tg.AnnotateSymbol(symbol, Annotation{Location: loc})\n}\n\n// An Annotation provides semantic detail for a generated proto element.\n//\n// See the google.protobuf.GeneratedCodeInfo.Annotation documentation in\n// descriptor.proto for details.\ntype Annotation struct {\n\t// Location is the source .proto file for the element.\n\tLocation Location\n\n\t// Semantic is the symbol's effect on the element in the original .proto file.\n\tSemantic *descriptorpb.GeneratedCodeInfo_Annotation_Semantic\n}\n\n// AnnotateSymbol associates a symbol in a generated Go file with a location\n// in a source .proto file and a semantic type.\n//\n// The symbol may refer to a type, constant, variable, function, method, or\n// struct field.  The \"T.sel\" syntax is used to identify the method or field\n// 'sel' on type 'T'.\nfunc (g *GeneratedFile) AnnotateSymbol(symbol string, info Annotation) {\n\tg.annotations[symbol] = append(g.annotations[symbol], info)\n}\n\n// Content returns the contents of the generated file.\nfunc (g *GeneratedFile) Content() ([]byte, error) {\n\tif !strings.HasSuffix(g.filename, \".go\") {\n\t\treturn g.buf.Bytes(), nil\n\t}\n\n\t// Reformat generated code.\n\toriginal := g.buf.Bytes()\n\tfset := token.NewFileSet()\n\tfile, err := parser.ParseFile(fset, \"\", original, parser.ParseComments)\n\tif err != nil {\n\t\t// Print out the bad code with line numbers.\n\t\t// This should never happen in practice, but it can while changing generated code\n\t\t// so consider this a debugging aid.\n\t\tvar src bytes.Buffer\n\t\ts := bufio.NewScanner(bytes.NewReader(original))\n\t\tfor line := 1; s.Scan(); line++ {\n\t\t\tfmt.Fprintf(&src, \"%5d\\t%s\\n\", line, s.Bytes())\n\t\t}\n\t\treturn nil, fmt.Errorf(\"%v: unparsable Go source: %v\\n%v\", g.filename, err, src.String())\n\t}\n\n\t// Collect a sorted list of all imports.\n\tvar importPaths [][2]string\n\trewriteImport := func(importPath string) string {\n\t\tif f := g.gen.opts.ImportRewriteFunc; f != nil {\n\t\t\treturn string(f(GoImportPath(importPath)))\n\t\t}\n\t\treturn importPath\n\t}\n\tfor importPath := range g.packageNames {\n\t\tpkgName := string(g.packageNames[GoImportPath(importPath)])\n\t\tpkgPath := rewriteImport(string(importPath))\n\t\timportPaths = append(importPaths, [2]string{pkgName, pkgPath})\n\t}\n\tfor importPath := range g.manualImports {\n\t\tif _, ok := g.packageNames[importPath]; !ok {\n\t\t\tpkgPath := rewriteImport(string(importPath))\n\t\t\timportPaths = append(importPaths, [2]string{\"_\", pkgPath})\n\t\t}\n\t}\n\tsort.Slice(importPaths, func(i, j int) bool {\n\t\treturn importPaths[i][1] < importPaths[j][1]\n\t})\n\n\t// Modify the AST to include a new import block.\n\tif len(importPaths) > 0 {\n\t\t// Insert block after package statement or\n\t\t// possible comment attached to the end of the package statement.\n\t\tpos := file.Package\n\t\ttokFile := fset.File(file.Package)\n\t\tpkgLine := tokFile.Line(file.Package)\n\t\tfor _, c := range file.Comments {\n\t\t\tif tokFile.Line(c.Pos()) > pkgLine {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tpos = c.End()\n\t\t}\n\n\t\t// Construct the import block.\n\t\timpDecl := &ast.GenDecl{\n\t\t\tTok:    token.IMPORT,\n\t\t\tTokPos: pos,\n\t\t\tLparen: pos,\n\t\t\tRparen: pos,\n\t\t}\n\t\tfor _, importPath := range importPaths {\n\t\t\timpDecl.Specs = append(impDecl.Specs, &ast.ImportSpec{\n\t\t\t\tName: &ast.Ident{\n\t\t\t\t\tName:    importPath[0],\n\t\t\t\t\tNamePos: pos,\n\t\t\t\t},\n\t\t\t\tPath: &ast.BasicLit{\n\t\t\t\t\tKind:     token.STRING,\n\t\t\t\t\tValue:    strconv.Quote(importPath[1]),\n\t\t\t\t\tValuePos: pos,\n\t\t\t\t},\n\t\t\t\tEndPos: pos,\n\t\t\t})\n\t\t}\n\t\tfile.Decls = append([]ast.Decl{impDecl}, file.Decls...)\n\t}\n\n\tvar out bytes.Buffer\n\tif err = (&printer.Config{Mode: printer.TabIndent | printer.UseSpaces, Tabwidth: 8}).Fprint(&out, fset, file); err != nil {\n\t\treturn nil, fmt.Errorf(\"%v: can not reformat Go source: %v\", g.filename, err)\n\t}\n\treturn out.Bytes(), nil\n}\n\nfunc (g *GeneratedFile) generatedCodeInfo(content []byte) (*descriptorpb.GeneratedCodeInfo, error) {\n\tfset := token.NewFileSet()\n\tastFile, err := parser.ParseFile(fset, \"\", content, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tinfo := &descriptorpb.GeneratedCodeInfo{}\n\n\tseenAnnotations := make(map[string]bool)\n\tannotate := func(s string, ident *ast.Ident) {\n\t\tseenAnnotations[s] = true\n\t\tfor _, a := range g.annotations[s] {\n\t\t\tinfo.Annotation = append(info.Annotation, &descriptorpb.GeneratedCodeInfo_Annotation{\n\t\t\t\tSourceFile: proto.String(a.Location.SourceFile),\n\t\t\t\tPath:       a.Location.Path,\n\t\t\t\tBegin:      proto.Int32(int32(fset.Position(ident.Pos()).Offset)),\n\t\t\t\tEnd:        proto.Int32(int32(fset.Position(ident.End()).Offset)),\n\t\t\t\tSemantic:   a.Semantic,\n\t\t\t})\n\t\t}\n\t}\n\tfor _, decl := range astFile.Decls {\n\t\tswitch decl := decl.(type) {\n\t\tcase *ast.GenDecl:\n\t\t\tfor _, spec := range decl.Specs {\n\t\t\t\tswitch spec := spec.(type) {\n\t\t\t\tcase *ast.TypeSpec:\n\t\t\t\t\tannotate(spec.Name.Name, spec.Name)\n\t\t\t\t\tswitch st := spec.Type.(type) {\n\t\t\t\t\tcase *ast.StructType:\n\t\t\t\t\t\tfor _, field := range st.Fields.List {\n\t\t\t\t\t\t\tfor _, name := range field.Names {\n\t\t\t\t\t\t\t\tannotate(spec.Name.Name+\".\"+name.Name, name)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\tcase *ast.InterfaceType:\n\t\t\t\t\t\tfor _, field := range st.Methods.List {\n\t\t\t\t\t\t\tfor _, name := range field.Names {\n\t\t\t\t\t\t\t\tannotate(spec.Name.Name+\".\"+name.Name, name)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tcase *ast.ValueSpec:\n\t\t\t\t\tfor _, name := range spec.Names {\n\t\t\t\t\t\tannotate(name.Name, name)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase *ast.FuncDecl:\n\t\t\tif decl.Recv == nil {\n\t\t\t\tannotate(decl.Name.Name, decl.Name)\n\t\t\t} else {\n\t\t\t\trecv := decl.Recv.List[0].Type\n\t\t\t\tif s, ok := recv.(*ast.StarExpr); ok {\n\t\t\t\t\trecv = s.X\n\t\t\t\t}\n\t\t\t\tif id, ok := recv.(*ast.Ident); ok {\n\t\t\t\t\tannotate(id.Name+\".\"+decl.Name.Name, decl.Name)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfor a := range g.annotations {\n\t\tif !seenAnnotations[a] {\n\t\t\treturn nil, fmt.Errorf(\"%v: no symbol matching annotation %q\", g.filename, a)\n\t\t}\n\t}\n\n\treturn info, nil\n}\n\n// metaFile returns the contents of the file's metadata file, which is a\n// text formatted string of the google.protobuf.GeneratedCodeInfo.\nfunc (g *GeneratedFile) metaFile(content []byte) (string, error) {\n\tinfo, err := g.generatedCodeInfo(content)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tb, err := prototext.Marshal(info)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn string(b), nil\n}\n\n// A GoIdent is a Go identifier, consisting of a name and import path.\n// The name is a single identifier and may not be a dot-qualified selector.\ntype GoIdent struct {\n\tGoName       string\n\tGoImportPath GoImportPath\n}\n\nfunc (id GoIdent) String() string { return fmt.Sprintf(\"%q.%v\", id.GoImportPath, id.GoName) }\n\n// newGoIdent returns the Go identifier for a descriptor.\nfunc newGoIdent(f *File, d protoreflect.Descriptor) GoIdent {\n\tname := strings.TrimPrefix(string(d.FullName()), string(f.Desc.Package())+\".\")\n\treturn GoIdent{\n\t\tGoName:       strs.GoCamelCase(name),\n\t\tGoImportPath: f.GoImportPath,\n\t}\n}\n\n// A GoImportPath is the import path of a Go package.\n// For example: \"google.golang.org/protobuf/compiler/protogen\"\ntype GoImportPath string\n\nfunc (p GoImportPath) String() string { return strconv.Quote(string(p)) }\n\n// Ident returns a GoIdent with s as the GoName and p as the GoImportPath.\nfunc (p GoImportPath) Ident(s string) GoIdent {\n\treturn GoIdent{GoName: s, GoImportPath: p}\n}\n\n// A GoPackageName is the name of a Go package. e.g., \"protobuf\".\ntype GoPackageName string\n\n// cleanPackageName converts a string to a valid Go package name.\nfunc cleanPackageName(name string) GoPackageName {\n\treturn GoPackageName(strs.GoSanitized(name))\n}\n\ntype pathType int\n\nconst (\n\tpathTypeImport pathType = iota\n\tpathTypeSourceRelative\n)\n\n// A Location is a location in a .proto source file.\n//\n// See the google.protobuf.SourceCodeInfo documentation in descriptor.proto\n// for details.\ntype Location struct {\n\tSourceFile string\n\tPath       protoreflect.SourcePath\n}\n\n// appendPath add elements to a Location's path, returning a new Location.\nfunc (loc Location) appendPath(num protoreflect.FieldNumber, idx int) Location {\n\tloc.Path = append(protoreflect.SourcePath(nil), loc.Path...) // make copy\n\tloc.Path = append(loc.Path, int32(num), int32(idx))\n\treturn loc\n}\n\n// CommentSet is a set of leading and trailing comments associated\n// with a .proto descriptor declaration.\ntype CommentSet struct {\n\tLeadingDetached []Comments\n\tLeading         Comments\n\tTrailing        Comments\n}\n\nfunc makeCommentSet(gen *Plugin, loc protoreflect.SourceLocation) CommentSet {\n\tif gen.InternalStripForEditionsDiff() {\n\t\treturn CommentSet{}\n\t}\n\tvar leadingDetached []Comments\n\tfor _, s := range loc.LeadingDetachedComments {\n\t\tleadingDetached = append(leadingDetached, Comments(s))\n\t}\n\treturn CommentSet{\n\t\tLeadingDetached: leadingDetached,\n\t\tLeading:         Comments(loc.LeadingComments),\n\t\tTrailing:        Comments(loc.TrailingComments),\n\t}\n}\n\n// Comments is a comments string as provided by protoc.\ntype Comments string\n\n// String formats the comments by inserting // to the start of each line,\n// ensuring that there is a trailing newline.\n// An empty comment is formatted as an empty string.\nfunc (c Comments) String() string {\n\tif c == \"\" {\n\t\treturn \"\"\n\t}\n\tvar b []byte\n\tfor _, line := range strings.Split(strings.TrimSuffix(string(c), \"\\n\"), \"\\n\") {\n\t\tb = append(b, \"//\"...)\n\t\tb = append(b, line...)\n\t\tb = append(b, \"\\n\"...)\n\t}\n\treturn string(b)\n}\n\n// extensionRegistry allows registration of new extensions defined in the .proto\n// file for which we are generating bindings.\n//\n// Lookups consult the local type registry first and fall back to the base type\n// registry which defaults to protoregistry.GlobalTypes.\ntype extensionRegistry struct {\n\tbase  *protoregistry.Types\n\tlocal *protoregistry.Types\n}\n\nfunc newExtensionRegistry() *extensionRegistry {\n\treturn &extensionRegistry{\n\t\tbase:  protoregistry.GlobalTypes,\n\t\tlocal: &protoregistry.Types{},\n\t}\n}\n\n// FindExtensionByName implements proto.UnmarshalOptions.FindExtensionByName\nfunc (e *extensionRegistry) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) {\n\tif xt, err := e.local.FindExtensionByName(field); err == nil {\n\t\treturn xt, nil\n\t}\n\n\treturn e.base.FindExtensionByName(field)\n}\n\n// FindExtensionByNumber implements proto.UnmarshalOptions.FindExtensionByNumber\nfunc (e *extensionRegistry) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) {\n\tif xt, err := e.local.FindExtensionByNumber(message, field); err == nil {\n\t\treturn xt, nil\n\t}\n\n\treturn e.base.FindExtensionByNumber(message, field)\n}\n\nfunc (e *extensionRegistry) hasNovelExtensions() bool {\n\treturn e.local.NumExtensions() > 0\n}\n\nfunc (e *extensionRegistry) registerAllExtensionsFromFile(f protoreflect.FileDescriptor) error {\n\tif err := e.registerAllExtensions(f.Extensions()); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (e *extensionRegistry) registerAllExtensionsFromMessage(ms protoreflect.MessageDescriptors) error {\n\tfor i := 0; i < ms.Len(); i++ {\n\t\tm := ms.Get(i)\n\t\tif err := e.registerAllExtensions(m.Extensions()); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (e *extensionRegistry) registerAllExtensions(exts protoreflect.ExtensionDescriptors) error {\n\tfor i := 0; i < exts.Len(); i++ {\n\t\tif err := e.registerExtension(exts.Get(i)); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// registerExtension adds the given extension to the type registry if an\n// extension with that full name does not exist yet.\nfunc (e *extensionRegistry) registerExtension(xd protoreflect.ExtensionDescriptor) error {\n\tif _, err := e.FindExtensionByName(xd.FullName()); err != protoregistry.NotFound {\n\t\t// Either the extension already exists or there was an error, either way we're done.\n\t\treturn err\n\t}\n\treturn e.local.RegisterExtension(dynamicpb.NewExtensionType(xd))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/compiler/protogen/protogen_apilevel.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protogen\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/types/gofeaturespb\"\n)\n\nfunc fileAPILevel(fd protoreflect.FileDescriptor, def gofeaturespb.GoFeatures_APILevel) gofeaturespb.GoFeatures_APILevel {\n\tlevel := gofeaturespb.GoFeatures_API_OPEN\n\tlevel = def\n\tif fd, ok := fd.(*filedesc.File); ok {\n\t\tal := fd.L1.EditionFeatures.APILevel\n\t\tif al != genid.GoFeatures_API_LEVEL_UNSPECIFIED_enum_value {\n\t\t\tlevel = gofeaturespb.GoFeatures_APILevel(al)\n\t\t}\n\t}\n\n\treturn level\n}\n\nfunc messageAPILevel(md protoreflect.MessageDescriptor, def gofeaturespb.GoFeatures_APILevel) gofeaturespb.GoFeatures_APILevel {\n\tlevel := def\n\tif md, ok := md.(*filedesc.Message); ok {\n\t\tal := md.L1.EditionFeatures.APILevel\n\t\tif al != genid.GoFeatures_API_LEVEL_UNSPECIFIED_enum_value {\n\t\t\tlevel = gofeaturespb.GoFeatures_APILevel(al)\n\t\t}\n\t}\n\n\treturn level\n}\n\nfunc (p *Plugin) defaultAPILevel() gofeaturespb.GoFeatures_APILevel {\n\tif p.opts.DefaultAPILevel != gofeaturespb.GoFeatures_API_LEVEL_UNSPECIFIED {\n\t\treturn p.opts.DefaultAPILevel\n\t}\n\n\treturn gofeaturespb.GoFeatures_API_OPEN\n}\n\n// MethodName returns the (possibly mangled) name of the generated accessor\n// method, along with the backwards-compatible name (if needed).\n//\n// method must be one of Get, Set, Has, Clear. MethodName panics otherwise.\nfunc (field *Field) MethodName(method string) (name, compat string) {\n\tswitch method {\n\tcase \"Get\":\n\t\treturn field.getterName()\n\n\tcase \"Set\":\n\t\treturn field.setterName()\n\n\tcase \"Has\", \"Clear\":\n\t\treturn field.methodName(method), \"\"\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"Field.MethodName called for unknown method %q\", method))\n\t}\n}\n\n// methodName returns the (possibly mangled) name of the generated method with\n// the given prefix.\n//\n// For the Open API, the return value is \"\".\nfunc (field *Field) methodName(prefix string) string {\n\tswitch field.Parent.APILevel {\n\tcase gofeaturespb.GoFeatures_API_OPEN:\n\t\t// In the Open API, only generate getters (no Has or Clear methods).\n\t\treturn \"\"\n\n\tcase gofeaturespb.GoFeatures_API_HYBRID:\n\t\tvar infix string\n\t\tif field.hasConflictHybrid {\n\t\t\tinfix = \"_\"\n\t\t}\n\t\treturn prefix + infix + field.camelCase\n\n\tcase gofeaturespb.GoFeatures_API_OPAQUE:\n\t\treturn prefix + field.camelCase\n\n\tdefault:\n\t\tpanic(\"BUG: message is neither open, nor hybrid, nor opaque?!\")\n\t}\n}\n\n// getterName returns the (possibly mangled) name of the generated Get method,\n// along with the backwards-compatible name (if needed).\nfunc (field *Field) getterName() (getter, compat string) {\n\tswitch field.Parent.APILevel {\n\tcase gofeaturespb.GoFeatures_API_OPEN:\n\t\t// In the Open API, only generate a getter with the old style mangled name.\n\t\treturn \"Get\" + field.GoName, \"\"\n\n\tcase gofeaturespb.GoFeatures_API_HYBRID:\n\t\t// In the Hybrid API, return the mangled getter name and the old style\n\t\t// name if needed, for backwards compatibility with the Open API.\n\t\tvar infix string\n\t\tif field.hasConflictHybrid {\n\t\t\tinfix = \"_\"\n\t\t}\n\t\torig := \"Get\" + infix + field.camelCase\n\t\tmangled := \"Get\" + field.GoName\n\t\tif mangled == orig {\n\t\t\tmangled = \"\"\n\t\t}\n\t\treturn orig, mangled\n\n\tcase gofeaturespb.GoFeatures_API_OPAQUE:\n\t\treturn field.methodName(\"Get\"), \"\"\n\n\tdefault:\n\t\tpanic(\"BUG: message is neither open, nor hybrid, nor opaque?!\")\n\t}\n}\n\n// setterName returns the (possibly mangled) name of the generated Set method,\n// along with the backwards-compatible name (if needed).\nfunc (field *Field) setterName() (setter, compat string) {\n\treturn field.methodName(\"Set\"), \"\"\n}\n\n// BuilderFieldName returns the name of this field in the corresponding _builder\n// struct.\nfunc (field *Field) BuilderFieldName() string {\n\treturn field.camelCase\n}\n\n// MethodName returns the (possibly mangled) name of the generated accessor\n// method.\n//\n// method must be one of Has, Clear, Which. MethodName panics otherwise.\nfunc (oneof *Oneof) MethodName(method string) string {\n\tswitch method {\n\tcase \"Has\", \"Clear\", \"Which\":\n\t\treturn oneof.methodName(method)\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"Oneof.MethodName called for unknown method %q\", method))\n\t}\n}\n\n// methodName returns the (possibly mangled) name of the generated method with\n// the given prefix.\n//\n// For the Open API, the return value is \"\".\nfunc (oneof *Oneof) methodName(prefix string) string {\n\tswitch oneof.Parent.APILevel {\n\tcase gofeaturespb.GoFeatures_API_OPEN:\n\t\t// In the Open API, only generate getters.\n\t\treturn \"\"\n\n\tcase gofeaturespb.GoFeatures_API_HYBRID:\n\t\tvar infix string\n\t\tif oneof.hasConflictHybrid {\n\t\t\tinfix = \"_\"\n\t\t}\n\t\treturn prefix + infix + oneof.camelCase\n\n\tcase gofeaturespb.GoFeatures_API_OPAQUE:\n\t\treturn prefix + oneof.camelCase\n\n\tdefault:\n\t\tpanic(\"BUG: message is neither open, nor hybrid, nor opaque?!\")\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/compiler/protogen/protogen_opaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protogen\n\nimport (\n\t\"strconv\"\n\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc opaqueNewFieldHook(desc protoreflect.FieldDescriptor, field *Field) {\n\tfield.camelCase = strs.GoCamelCase(string(desc.Name()))\n}\n\nfunc opaqueNewOneofHook(desc protoreflect.OneofDescriptor, oneof *Oneof) {\n\toneof.camelCase = strs.GoCamelCase(string(desc.Name()))\n}\n\nfunc resolveCamelCaseConflict(f *Field) {\n\tsuffix := \"_\" + strconv.Itoa(int(f.Desc.Number()))\n\tf.camelCase += suffix\n\tif f.Oneof != nil {\n\t\tf.Oneof.camelCase += suffix\n\t}\n}\n\n// This function finds fields with different names whose GoCamelCase() is\n// identical, for example _foo and X_foo, for both of which camelCase == \"XFoo\",\n// and resolves the resulting conflict by appending a _<fieldnum> suffix,\n// like the Java implementation does.\nfunc resolveCamelCaseConflicts(message *Message) {\n\tcamel2field := make(map[string]*Field)\n\tfor _, field := range message.Fields {\n\t\tother, conflicting := camel2field[field.camelCase]\n\t\tif conflicting {\n\t\t\tresolveCamelCaseConflict(other)\n\t\t\tresolveCamelCaseConflict(field)\n\t\t\t// Assumption: at most two fields can have the same camelCase.\n\t\t\t// Otherwise, the first field ends up with another suffix.\n\t\t\tcontinue\n\t\t}\n\t\tcamel2field[field.camelCase] = field\n\t}\n}\n\nfunc opaqueNewMessageHook(message *Message) {\n\t// New name mangling scheme: Add a '_' between method base\n\t// name (Get, Set, Clear etc) and original field name if\n\t// needed.  As a special case, there is one globally reserved\n\t// name, e.g. \"Build\" thet still results in actual renaming of\n\t// the builder field like in the old scheme.  We begin by\n\t// taking care of this special case.\n\tfor _, field := range message.Fields {\n\t\tif field.camelCase == \"Build\" {\n\t\t\tfield.camelCase += \"_\"\n\t\t}\n\t}\n\n\t// Then find all names of the original field names, we do not want the old scheme to affect\n\t// how we name things.\n\n\tresolveCamelCaseConflicts(message)\n\n\tcamelCases := map[string]bool{}\n\tfor _, field := range message.Fields {\n\t\tif field.Oneof != nil {\n\t\t\t// We add the name of the union here (potentially many times).\n\t\t\tcamelCases[field.Oneof.camelCase] = true\n\t\t\t// fallthrough: The member fields of the oneof are considered fields\n\t\t\t// in the struct although they are not technically there. This is to\n\t\t\t// allow changing a proto2 optional to a oneof with source code\n\t\t\t// compatibility.\n\t\t}\n\t\tcamelCases[field.camelCase] = true\n\t}\n\t// For each field, check if any of it's methods would clash with an original field name\n\tfor _, field := range message.Fields {\n\t\t// Every field (except the union fields, that are taken care of separately) has\n\t\t// a Get and a Set method.\n\t\tmethods := []string{\"Set\", \"Get\"}\n\t\t// For explicit presence fields, we also have Has and Clear.\n\t\tif field.Desc.HasPresence() {\n\t\t\tmethods = append(methods, \"Has\", \"Clear\")\n\t\t}\n\t\tfor _, method := range methods {\n\t\t\t// If any method name clashes with a field name, all methods get a\n\t\t\t// \"_\" inserted between the operation and the field name.\n\t\t\tif camelCases[method+field.camelCase] {\n\t\t\t\tfield.hasConflictHybrid = true\n\t\t\t}\n\t\t}\n\t}\n\t// The union names for oneofs need only have a methods prefix if there is a clash with Has, Clear or Which in\n\t// hybrid and opaque-v0.\n\tfor _, field := range message.Fields {\n\t\tif field.Oneof == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, method := range []string{\"Has\", \"Clear\", \"Which\"} {\n\t\t\t// Same logic as for regular fields - all methods get the \"_\" if one needs it.\n\t\t\tif camelCases[method+field.Oneof.camelCase] {\n\t\t\t\tfield.Oneof.hasConflictHybrid = true\n\t\t\t}\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/protojson/decode.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protojson\n\nimport (\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/json\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/internal/set\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Unmarshal reads the given []byte into the given [proto.Message].\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\nfunc Unmarshal(b []byte, m proto.Message) error {\n\treturn UnmarshalOptions{}.Unmarshal(b, m)\n}\n\n// UnmarshalOptions is a configurable JSON format parser.\ntype UnmarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// If AllowPartial is set, input for messages that will result in missing\n\t// required fields will not return an error.\n\tAllowPartial bool\n\n\t// If DiscardUnknown is set, unknown fields and enum name values are ignored.\n\tDiscardUnknown bool\n\n\t// Resolver is used for looking up types when unmarshaling\n\t// google.protobuf.Any messages or extension fields.\n\t// If nil, this defaults to using protoregistry.GlobalTypes.\n\tResolver interface {\n\t\tprotoregistry.MessageTypeResolver\n\t\tprotoregistry.ExtensionTypeResolver\n\t}\n\n\t// RecursionLimit limits how deeply messages may be nested.\n\t// If zero, a default limit is applied.\n\tRecursionLimit int\n}\n\n// Unmarshal reads the given []byte and populates the given [proto.Message]\n// using options in the UnmarshalOptions object.\n// It will clear the message first before setting the fields.\n// If it returns an error, the given message may be partially set.\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\nfunc (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error {\n\treturn o.unmarshal(b, m)\n}\n\n// unmarshal is a centralized function that all unmarshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for unmarshal that do not go through this.\nfunc (o UnmarshalOptions) unmarshal(b []byte, m proto.Message) error {\n\tproto.Reset(m)\n\n\tif o.Resolver == nil {\n\t\to.Resolver = protoregistry.GlobalTypes\n\t}\n\tif o.RecursionLimit == 0 {\n\t\to.RecursionLimit = protowire.DefaultRecursionLimit\n\t}\n\n\tdec := decoder{json.NewDecoder(b), o}\n\tif err := dec.unmarshalMessage(m.ProtoReflect(), false); err != nil {\n\t\treturn err\n\t}\n\n\t// Check for EOF.\n\ttok, err := dec.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.EOF {\n\t\treturn dec.unexpectedTokenError(tok)\n\t}\n\n\tif o.AllowPartial {\n\t\treturn nil\n\t}\n\treturn proto.CheckInitialized(m)\n}\n\ntype decoder struct {\n\t*json.Decoder\n\topts UnmarshalOptions\n}\n\n// newError returns an error object with position info.\nfunc (d decoder) newError(pos int, f string, x ...any) error {\n\tline, column := d.Position(pos)\n\thead := fmt.Sprintf(\"(line %d:%d): \", line, column)\n\treturn errors.New(head+f, x...)\n}\n\n// unexpectedTokenError returns a syntax error for the given unexpected token.\nfunc (d decoder) unexpectedTokenError(tok json.Token) error {\n\treturn d.syntaxError(tok.Pos(), \"unexpected token %s\", tok.RawString())\n}\n\n// syntaxError returns a syntax error for given position.\nfunc (d decoder) syntaxError(pos int, f string, x ...any) error {\n\tline, column := d.Position(pos)\n\thead := fmt.Sprintf(\"syntax error (line %d:%d): \", line, column)\n\treturn errors.New(head+f, x...)\n}\n\n// unmarshalMessage unmarshals a message into the given protoreflect.Message.\nfunc (d decoder) unmarshalMessage(m protoreflect.Message, skipTypeURL bool) error {\n\td.opts.RecursionLimit--\n\tif d.opts.RecursionLimit < 0 {\n\t\treturn errors.New(\"exceeded max recursion depth\")\n\t}\n\tif unmarshal := wellKnownTypeUnmarshaler(m.Descriptor().FullName()); unmarshal != nil {\n\t\treturn unmarshal(d, m)\n\t}\n\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.ObjectOpen {\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n\n\tmessageDesc := m.Descriptor()\n\tif !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) {\n\t\treturn errors.New(\"no support for proto1 MessageSets\")\n\t}\n\n\tvar seenNums set.Ints\n\tvar seenOneofs set.Ints\n\tfieldDescs := messageDesc.Fields()\n\tfor {\n\t\t// Read field name.\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tdefault:\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\tcase json.ObjectClose:\n\t\t\treturn nil\n\t\tcase json.Name:\n\t\t\t// Continue below.\n\t\t}\n\n\t\tname := tok.Name()\n\t\t// Unmarshaling a non-custom embedded message in Any will contain the\n\t\t// JSON field \"@type\" which should be skipped because it is not a field\n\t\t// of the embedded message, but simply an artifact of the Any format.\n\t\tif skipTypeURL && name == \"@type\" {\n\t\t\td.Read()\n\t\t\tcontinue\n\t\t}\n\n\t\t// Get the FieldDescriptor.\n\t\tvar fd protoreflect.FieldDescriptor\n\t\tif strings.HasPrefix(name, \"[\") && strings.HasSuffix(name, \"]\") {\n\t\t\t// Only extension names are in [name] format.\n\t\t\textName := protoreflect.FullName(name[1 : len(name)-1])\n\t\t\textType, err := d.opts.Resolver.FindExtensionByName(extName)\n\t\t\tif err != nil && err != protoregistry.NotFound {\n\t\t\t\treturn d.newError(tok.Pos(), \"unable to resolve %s: %v\", tok.RawString(), err)\n\t\t\t}\n\t\t\tif extType != nil {\n\t\t\t\tfd = extType.TypeDescriptor()\n\t\t\t\tif !messageDesc.ExtensionRanges().Has(fd.Number()) || fd.ContainingMessage().FullName() != messageDesc.FullName() {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"message %v cannot be extended by %v\", messageDesc.FullName(), fd.FullName())\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// The name can either be the JSON name or the proto field name.\n\t\t\tfd = fieldDescs.ByJSONName(name)\n\t\t\tif fd == nil {\n\t\t\t\tfd = fieldDescs.ByTextName(name)\n\t\t\t}\n\t\t}\n\n\t\tif fd == nil {\n\t\t\t// Field is unknown.\n\t\t\tif d.opts.DiscardUnknown {\n\t\t\t\tif err := d.skipJSONValue(); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn d.newError(tok.Pos(), \"unknown field %v\", tok.RawString())\n\t\t}\n\n\t\t// Do not allow duplicate fields.\n\t\tnum := uint64(fd.Number())\n\t\tif seenNums.Has(num) {\n\t\t\treturn d.newError(tok.Pos(), \"duplicate field %v\", tok.RawString())\n\t\t}\n\t\tseenNums.Set(num)\n\n\t\t// No need to set values for JSON null unless the field type is\n\t\t// google.protobuf.Value or google.protobuf.NullValue.\n\t\tif tok, _ := d.Peek(); tok.Kind() == json.Null && !isKnownValue(fd) && !isNullValue(fd) {\n\t\t\td.Read()\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch {\n\t\tcase fd.IsList():\n\t\t\tlist := m.Mutable(fd).List()\n\t\t\tif err := d.unmarshalList(list, fd); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tcase fd.IsMap():\n\t\t\tmmap := m.Mutable(fd).Map()\n\t\t\tif err := d.unmarshalMap(mmap, fd); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tdefault:\n\t\t\t// If field is a oneof, check if it has already been set.\n\t\t\tif od := fd.ContainingOneof(); od != nil {\n\t\t\t\tidx := uint64(od.Index())\n\t\t\t\tif seenOneofs.Has(idx) {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"error parsing %s, oneof %v is already set\", tok.RawString(), od.FullName())\n\t\t\t\t}\n\t\t\t\tseenOneofs.Set(idx)\n\t\t\t}\n\n\t\t\t// Required or optional fields.\n\t\t\tif err := d.unmarshalSingular(m, fd); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc isKnownValue(fd protoreflect.FieldDescriptor) bool {\n\tmd := fd.Message()\n\treturn md != nil && md.FullName() == genid.Value_message_fullname\n}\n\nfunc isNullValue(fd protoreflect.FieldDescriptor) bool {\n\ted := fd.Enum()\n\treturn ed != nil && ed.FullName() == genid.NullValue_enum_fullname\n}\n\n// unmarshalSingular unmarshals to the non-repeated field specified\n// by the given FieldDescriptor.\nfunc (d decoder) unmarshalSingular(m protoreflect.Message, fd protoreflect.FieldDescriptor) error {\n\tvar val protoreflect.Value\n\tvar err error\n\tswitch fd.Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tval = m.NewField(fd)\n\t\terr = d.unmarshalMessage(val.Message(), false)\n\tdefault:\n\t\tval, err = d.unmarshalScalar(fd)\n\t}\n\n\tif err != nil {\n\t\treturn err\n\t}\n\tif val.IsValid() {\n\t\tm.Set(fd, val)\n\t}\n\treturn nil\n}\n\n// unmarshalScalar unmarshals to a scalar/enum protoreflect.Value specified by\n// the given FieldDescriptor.\nfunc (d decoder) unmarshalScalar(fd protoreflect.FieldDescriptor) (protoreflect.Value, error) {\n\tconst b32 int = 32\n\tconst b64 int = 64\n\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn protoreflect.Value{}, err\n\t}\n\n\tkind := fd.Kind()\n\tswitch kind {\n\tcase protoreflect.BoolKind:\n\t\tif tok.Kind() == json.Bool {\n\t\t\treturn protoreflect.ValueOfBool(tok.Bool()), nil\n\t\t}\n\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif v, ok := unmarshalInt(tok, b32); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif v, ok := unmarshalInt(tok, b64); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif v, ok := unmarshalUint(tok, b32); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif v, ok := unmarshalUint(tok, b64); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tcase protoreflect.FloatKind:\n\t\tif v, ok := unmarshalFloat(tok, b32); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tcase protoreflect.DoubleKind:\n\t\tif v, ok := unmarshalFloat(tok, b64); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tcase protoreflect.StringKind:\n\t\tif tok.Kind() == json.String {\n\t\t\treturn protoreflect.ValueOfString(tok.ParsedString()), nil\n\t\t}\n\n\tcase protoreflect.BytesKind:\n\t\tif v, ok := unmarshalBytes(tok); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tcase protoreflect.EnumKind:\n\t\tif v, ok := unmarshalEnum(tok, fd, d.opts.DiscardUnknown); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unmarshalScalar: invalid scalar kind %v\", kind))\n\t}\n\n\treturn protoreflect.Value{}, d.newError(tok.Pos(), \"invalid value for %v field %v: %v\", kind, fd.JSONName(), tok.RawString())\n}\n\nfunc unmarshalInt(tok json.Token, bitSize int) (protoreflect.Value, bool) {\n\tswitch tok.Kind() {\n\tcase json.Number:\n\t\treturn getInt(tok, bitSize)\n\n\tcase json.String:\n\t\t// Decode number from string.\n\t\ts := strings.TrimSpace(tok.ParsedString())\n\t\tif len(s) != len(tok.ParsedString()) {\n\t\t\treturn protoreflect.Value{}, false\n\t\t}\n\t\tdec := json.NewDecoder([]byte(s))\n\t\ttok, err := dec.Read()\n\t\tif err != nil {\n\t\t\treturn protoreflect.Value{}, false\n\t\t}\n\t\treturn getInt(tok, bitSize)\n\t}\n\treturn protoreflect.Value{}, false\n}\n\nfunc getInt(tok json.Token, bitSize int) (protoreflect.Value, bool) {\n\tn, ok := tok.Int(bitSize)\n\tif !ok {\n\t\treturn protoreflect.Value{}, false\n\t}\n\tif bitSize == 32 {\n\t\treturn protoreflect.ValueOfInt32(int32(n)), true\n\t}\n\treturn protoreflect.ValueOfInt64(n), true\n}\n\nfunc unmarshalUint(tok json.Token, bitSize int) (protoreflect.Value, bool) {\n\tswitch tok.Kind() {\n\tcase json.Number:\n\t\treturn getUint(tok, bitSize)\n\n\tcase json.String:\n\t\t// Decode number from string.\n\t\ts := strings.TrimSpace(tok.ParsedString())\n\t\tif len(s) != len(tok.ParsedString()) {\n\t\t\treturn protoreflect.Value{}, false\n\t\t}\n\t\tdec := json.NewDecoder([]byte(s))\n\t\ttok, err := dec.Read()\n\t\tif err != nil {\n\t\t\treturn protoreflect.Value{}, false\n\t\t}\n\t\treturn getUint(tok, bitSize)\n\t}\n\treturn protoreflect.Value{}, false\n}\n\nfunc getUint(tok json.Token, bitSize int) (protoreflect.Value, bool) {\n\tn, ok := tok.Uint(bitSize)\n\tif !ok {\n\t\treturn protoreflect.Value{}, false\n\t}\n\tif bitSize == 32 {\n\t\treturn protoreflect.ValueOfUint32(uint32(n)), true\n\t}\n\treturn protoreflect.ValueOfUint64(n), true\n}\n\nfunc unmarshalFloat(tok json.Token, bitSize int) (protoreflect.Value, bool) {\n\tswitch tok.Kind() {\n\tcase json.Number:\n\t\treturn getFloat(tok, bitSize)\n\n\tcase json.String:\n\t\ts := tok.ParsedString()\n\t\tswitch s {\n\t\tcase \"NaN\":\n\t\t\tif bitSize == 32 {\n\t\t\t\treturn protoreflect.ValueOfFloat32(float32(math.NaN())), true\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfFloat64(math.NaN()), true\n\t\tcase \"Infinity\":\n\t\t\tif bitSize == 32 {\n\t\t\t\treturn protoreflect.ValueOfFloat32(float32(math.Inf(+1))), true\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfFloat64(math.Inf(+1)), true\n\t\tcase \"-Infinity\":\n\t\t\tif bitSize == 32 {\n\t\t\t\treturn protoreflect.ValueOfFloat32(float32(math.Inf(-1))), true\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfFloat64(math.Inf(-1)), true\n\t\t}\n\n\t\t// Decode number from string.\n\t\tif len(s) != len(strings.TrimSpace(s)) {\n\t\t\treturn protoreflect.Value{}, false\n\t\t}\n\t\tdec := json.NewDecoder([]byte(s))\n\t\ttok, err := dec.Read()\n\t\tif err != nil {\n\t\t\treturn protoreflect.Value{}, false\n\t\t}\n\t\treturn getFloat(tok, bitSize)\n\t}\n\treturn protoreflect.Value{}, false\n}\n\nfunc getFloat(tok json.Token, bitSize int) (protoreflect.Value, bool) {\n\tn, ok := tok.Float(bitSize)\n\tif !ok {\n\t\treturn protoreflect.Value{}, false\n\t}\n\tif bitSize == 32 {\n\t\treturn protoreflect.ValueOfFloat32(float32(n)), true\n\t}\n\treturn protoreflect.ValueOfFloat64(n), true\n}\n\nfunc unmarshalBytes(tok json.Token) (protoreflect.Value, bool) {\n\tif tok.Kind() != json.String {\n\t\treturn protoreflect.Value{}, false\n\t}\n\n\ts := tok.ParsedString()\n\tenc := base64.StdEncoding\n\tif strings.ContainsAny(s, \"-_\") {\n\t\tenc = base64.URLEncoding\n\t}\n\tif len(s)%4 != 0 {\n\t\tenc = enc.WithPadding(base64.NoPadding)\n\t}\n\tb, err := enc.DecodeString(s)\n\tif err != nil {\n\t\treturn protoreflect.Value{}, false\n\t}\n\treturn protoreflect.ValueOfBytes(b), true\n}\n\nfunc unmarshalEnum(tok json.Token, fd protoreflect.FieldDescriptor, discardUnknown bool) (protoreflect.Value, bool) {\n\tswitch tok.Kind() {\n\tcase json.String:\n\t\t// Lookup EnumNumber based on name.\n\t\ts := tok.ParsedString()\n\t\tif enumVal := fd.Enum().Values().ByName(protoreflect.Name(s)); enumVal != nil {\n\t\t\treturn protoreflect.ValueOfEnum(enumVal.Number()), true\n\t\t}\n\t\tif discardUnknown {\n\t\t\treturn protoreflect.Value{}, true\n\t\t}\n\n\tcase json.Number:\n\t\tif n, ok := tok.Int(32); ok {\n\t\t\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(n)), true\n\t\t}\n\n\tcase json.Null:\n\t\t// This is only valid for google.protobuf.NullValue.\n\t\tif isNullValue(fd) {\n\t\t\treturn protoreflect.ValueOfEnum(0), true\n\t\t}\n\t}\n\n\treturn protoreflect.Value{}, false\n}\n\nfunc (d decoder) unmarshalList(list protoreflect.List, fd protoreflect.FieldDescriptor) error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.ArrayOpen {\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n\n\tswitch fd.Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tfor {\n\t\t\ttok, err := d.Peek()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif tok.Kind() == json.ArrayClose {\n\t\t\t\td.Read()\n\t\t\t\treturn nil\n\t\t\t}\n\n\t\t\tval := list.NewElement()\n\t\t\tif err := d.unmarshalMessage(val.Message(), false); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tlist.Append(val)\n\t\t}\n\tdefault:\n\t\tfor {\n\t\t\ttok, err := d.Peek()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif tok.Kind() == json.ArrayClose {\n\t\t\t\td.Read()\n\t\t\t\treturn nil\n\t\t\t}\n\n\t\t\tval, err := d.unmarshalScalar(fd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif val.IsValid() {\n\t\t\t\tlist.Append(val)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (d decoder) unmarshalMap(mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.ObjectOpen {\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n\n\t// Determine ahead whether map entry is a scalar type or a message type in\n\t// order to call the appropriate unmarshalMapValue func inside the for loop\n\t// below.\n\tvar unmarshalMapValue func() (protoreflect.Value, error)\n\tswitch fd.MapValue().Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tunmarshalMapValue = func() (protoreflect.Value, error) {\n\t\t\tval := mmap.NewValue()\n\t\t\tif err := d.unmarshalMessage(val.Message(), false); err != nil {\n\t\t\t\treturn protoreflect.Value{}, err\n\t\t\t}\n\t\t\treturn val, nil\n\t\t}\n\tdefault:\n\t\tunmarshalMapValue = func() (protoreflect.Value, error) {\n\t\t\treturn d.unmarshalScalar(fd.MapValue())\n\t\t}\n\t}\n\nLoop:\n\tfor {\n\t\t// Read field name.\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tdefault:\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\tcase json.ObjectClose:\n\t\t\tbreak Loop\n\t\tcase json.Name:\n\t\t\t// Continue.\n\t\t}\n\n\t\t// Unmarshal field name.\n\t\tpkey, err := d.unmarshalMapKey(tok, fd.MapKey())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Check for duplicate field name.\n\t\tif mmap.Has(pkey) {\n\t\t\treturn d.newError(tok.Pos(), \"duplicate map key %v\", tok.RawString())\n\t\t}\n\n\t\t// Read and unmarshal field value.\n\t\tpval, err := unmarshalMapValue()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif pval.IsValid() {\n\t\t\tmmap.Set(pkey, pval)\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// unmarshalMapKey converts given token of Name kind into a protoreflect.MapKey.\n// A map key type is any integral or string type.\nfunc (d decoder) unmarshalMapKey(tok json.Token, fd protoreflect.FieldDescriptor) (protoreflect.MapKey, error) {\n\tconst b32 = 32\n\tconst b64 = 64\n\tconst base10 = 10\n\n\tname := tok.Name()\n\tkind := fd.Kind()\n\tswitch kind {\n\tcase protoreflect.StringKind:\n\t\treturn protoreflect.ValueOfString(name).MapKey(), nil\n\n\tcase protoreflect.BoolKind:\n\t\tswitch name {\n\t\tcase \"true\":\n\t\t\treturn protoreflect.ValueOfBool(true).MapKey(), nil\n\t\tcase \"false\":\n\t\t\treturn protoreflect.ValueOfBool(false).MapKey(), nil\n\t\t}\n\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif n, err := strconv.ParseInt(name, base10, b32); err == nil {\n\t\t\treturn protoreflect.ValueOfInt32(int32(n)).MapKey(), nil\n\t\t}\n\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif n, err := strconv.ParseInt(name, base10, b64); err == nil {\n\t\t\treturn protoreflect.ValueOfInt64(int64(n)).MapKey(), nil\n\t\t}\n\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif n, err := strconv.ParseUint(name, base10, b32); err == nil {\n\t\t\treturn protoreflect.ValueOfUint32(uint32(n)).MapKey(), nil\n\t\t}\n\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif n, err := strconv.ParseUint(name, base10, b64); err == nil {\n\t\t\treturn protoreflect.ValueOfUint64(uint64(n)).MapKey(), nil\n\t\t}\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid kind for map key: %v\", kind))\n\t}\n\n\treturn protoreflect.MapKey{}, d.newError(tok.Pos(), \"invalid value for %v key: %s\", kind, tok.RawString())\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/protojson/doc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protojson marshals and unmarshals protocol buffer messages as JSON\n// format. It follows the guide at\n// https://protobuf.dev/programming-guides/proto3#json.\n//\n// This package produces a different output than the standard [encoding/json]\n// package, which does not operate correctly on protocol buffer messages.\npackage protojson\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/protojson/encode.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protojson\n\nimport (\n\t\"encoding/base64\"\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/internal/encoding/json\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nconst defaultIndent = \"  \"\n\n// Format formats the message as a multiline string.\n// This function is only intended for human consumption and ignores errors.\n// Do not depend on the output being stable. Its output will change across\n// different builds of your program, even when using the same version of the\n// protobuf module.\nfunc Format(m proto.Message) string {\n\treturn MarshalOptions{Multiline: true}.Format(m)\n}\n\n// Marshal writes the given [proto.Message] in JSON format using default options.\n// Do not depend on the output being stable. Its output will change across\n// different builds of your program, even when using the same version of the\n// protobuf module.\nfunc Marshal(m proto.Message) ([]byte, error) {\n\treturn MarshalOptions{}.Marshal(m)\n}\n\n// MarshalOptions is a configurable JSON format marshaler.\ntype MarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// Multiline specifies whether the marshaler should format the output in\n\t// indented-form with every textual element on a new line.\n\t// If Indent is an empty string, then an arbitrary indent is chosen.\n\tMultiline bool\n\n\t// Indent specifies the set of indentation characters to use in a multiline\n\t// formatted output such that every entry is preceded by Indent and\n\t// terminated by a newline. If non-empty, then Multiline is treated as true.\n\t// Indent can only be composed of space or tab characters.\n\tIndent string\n\n\t// AllowPartial allows messages that have missing required fields to marshal\n\t// without returning an error. If AllowPartial is false (the default),\n\t// Marshal will return error if there are any missing required fields.\n\tAllowPartial bool\n\n\t// UseProtoNames uses proto field name instead of lowerCamelCase name in JSON\n\t// field names.\n\tUseProtoNames bool\n\n\t// UseEnumNumbers emits enum values as numbers.\n\tUseEnumNumbers bool\n\n\t// EmitUnpopulated specifies whether to emit unpopulated fields. It does not\n\t// emit unpopulated oneof fields or unpopulated extension fields.\n\t// The JSON value emitted for unpopulated fields are as follows:\n\t//  ╔═══════╤════════════════════════════╗\n\t//  ║ JSON  │ Protobuf field             ║\n\t//  ╠═══════╪════════════════════════════╣\n\t//  ║ false │ proto3 boolean fields      ║\n\t//  ║ 0     │ proto3 numeric fields      ║\n\t//  ║ \"\"    │ proto3 string/bytes fields ║\n\t//  ║ null  │ proto2 scalar fields       ║\n\t//  ║ null  │ message fields             ║\n\t//  ║ []    │ list fields                ║\n\t//  ║ {}    │ map fields                 ║\n\t//  ╚═══════╧════════════════════════════╝\n\tEmitUnpopulated bool\n\n\t// EmitDefaultValues specifies whether to emit default-valued primitive fields,\n\t// empty lists, and empty maps. The fields affected are as follows:\n\t//  ╔═══════╤════════════════════════════════════════╗\n\t//  ║ JSON  │ Protobuf field                         ║\n\t//  ╠═══════╪════════════════════════════════════════╣\n\t//  ║ false │ non-optional scalar boolean fields     ║\n\t//  ║ 0     │ non-optional scalar numeric fields     ║\n\t//  ║ \"\"    │ non-optional scalar string/byte fields ║\n\t//  ║ []    │ empty repeated fields                  ║\n\t//  ║ {}    │ empty map fields                       ║\n\t//  ╚═══════╧════════════════════════════════════════╝\n\t//\n\t// Behaves similarly to EmitUnpopulated, but does not emit \"null\"-value fields,\n\t// i.e. presence-sensing fields that are omitted will remain omitted to preserve\n\t// presence-sensing.\n\t// EmitUnpopulated takes precedence over EmitDefaultValues since the former generates\n\t// a strict superset of the latter.\n\tEmitDefaultValues bool\n\n\t// Resolver is used for looking up types when expanding google.protobuf.Any\n\t// messages. If nil, this defaults to using protoregistry.GlobalTypes.\n\tResolver interface {\n\t\tprotoregistry.ExtensionTypeResolver\n\t\tprotoregistry.MessageTypeResolver\n\t}\n}\n\n// Format formats the message as a string.\n// This method is only intended for human consumption and ignores errors.\n// Do not depend on the output being stable. Its output will change across\n// different builds of your program, even when using the same version of the\n// protobuf module.\nfunc (o MarshalOptions) Format(m proto.Message) string {\n\tif m == nil || !m.ProtoReflect().IsValid() {\n\t\treturn \"<nil>\" // invalid syntax, but okay since this is for debugging\n\t}\n\to.AllowPartial = true\n\tb, _ := o.Marshal(m)\n\treturn string(b)\n}\n\n// Marshal marshals the given [proto.Message] in the JSON format using options in\n// Do not depend on the output being stable. Its output will change across\n// different builds of your program, even when using the same version of the\n// protobuf module.\nfunc (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) {\n\treturn o.marshal(nil, m)\n}\n\n// MarshalAppend appends the JSON format encoding of m to b,\n// returning the result.\nfunc (o MarshalOptions) MarshalAppend(b []byte, m proto.Message) ([]byte, error) {\n\treturn o.marshal(b, m)\n}\n\n// marshal is a centralized function that all marshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for marshal that do not go through this.\nfunc (o MarshalOptions) marshal(b []byte, m proto.Message) ([]byte, error) {\n\tif o.Multiline && o.Indent == \"\" {\n\t\to.Indent = defaultIndent\n\t}\n\tif o.Resolver == nil {\n\t\to.Resolver = protoregistry.GlobalTypes\n\t}\n\n\tinternalEnc, err := json.NewEncoder(b, o.Indent)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Treat nil message interface as an empty message,\n\t// in which case the output in an empty JSON object.\n\tif m == nil {\n\t\treturn append(b, '{', '}'), nil\n\t}\n\n\tenc := encoder{internalEnc, o}\n\tif err := enc.marshalMessage(m.ProtoReflect(), \"\"); err != nil {\n\t\treturn nil, err\n\t}\n\tif o.AllowPartial {\n\t\treturn enc.Bytes(), nil\n\t}\n\treturn enc.Bytes(), proto.CheckInitialized(m)\n}\n\ntype encoder struct {\n\t*json.Encoder\n\topts MarshalOptions\n}\n\n// typeFieldDesc is a synthetic field descriptor used for the \"@type\" field.\nvar typeFieldDesc = func() protoreflect.FieldDescriptor {\n\tvar fd filedesc.Field\n\tfd.L0.FullName = \"@type\"\n\tfd.L0.Index = -1\n\tfd.L1.Cardinality = protoreflect.Optional\n\tfd.L1.Kind = protoreflect.StringKind\n\treturn &fd\n}()\n\n// typeURLFieldRanger wraps a protoreflect.Message and modifies its Range method\n// to additionally iterate over a synthetic field for the type URL.\ntype typeURLFieldRanger struct {\n\torder.FieldRanger\n\ttypeURL string\n}\n\nfunc (m typeURLFieldRanger) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif !f(typeFieldDesc, protoreflect.ValueOfString(m.typeURL)) {\n\t\treturn\n\t}\n\tm.FieldRanger.Range(f)\n}\n\n// unpopulatedFieldRanger wraps a protoreflect.Message and modifies its Range\n// method to additionally iterate over unpopulated fields.\ntype unpopulatedFieldRanger struct {\n\tprotoreflect.Message\n\n\tskipNull bool\n}\n\nfunc (m unpopulatedFieldRanger) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tfds := m.Descriptor().Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tfd := fds.Get(i)\n\t\tif m.Has(fd) || fd.ContainingOneof() != nil {\n\t\t\tcontinue // ignore populated fields and fields within a oneofs\n\t\t}\n\n\t\tv := m.Get(fd)\n\t\tif fd.HasPresence() {\n\t\t\tif m.skipNull {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tv = protoreflect.Value{} // use invalid value to emit null\n\t\t}\n\t\tif !f(fd, v) {\n\t\t\treturn\n\t\t}\n\t}\n\tm.Message.Range(f)\n}\n\n// marshalMessage marshals the fields in the given protoreflect.Message.\n// If the typeURL is non-empty, then a synthetic \"@type\" field is injected\n// containing the URL as the value.\nfunc (e encoder) marshalMessage(m protoreflect.Message, typeURL string) error {\n\tif !flags.ProtoLegacy && messageset.IsMessageSet(m.Descriptor()) {\n\t\treturn errors.New(\"no support for proto1 MessageSets\")\n\t}\n\n\tif marshal := wellKnownTypeMarshaler(m.Descriptor().FullName()); marshal != nil {\n\t\treturn marshal(e, m)\n\t}\n\n\te.StartObject()\n\tdefer e.EndObject()\n\n\tvar fields order.FieldRanger = m\n\tswitch {\n\tcase e.opts.EmitUnpopulated:\n\t\tfields = unpopulatedFieldRanger{Message: m, skipNull: false}\n\tcase e.opts.EmitDefaultValues:\n\t\tfields = unpopulatedFieldRanger{Message: m, skipNull: true}\n\t}\n\tif typeURL != \"\" {\n\t\tfields = typeURLFieldRanger{fields, typeURL}\n\t}\n\n\tvar err error\n\torder.RangeFields(fields, order.IndexNameFieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tname := fd.JSONName()\n\t\tif e.opts.UseProtoNames {\n\t\t\tname = fd.TextName()\n\t\t}\n\n\t\tif err = e.WriteName(name); err != nil {\n\t\t\treturn false\n\t\t}\n\t\tif err = e.marshalValue(v, fd); err != nil {\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t})\n\treturn err\n}\n\n// marshalValue marshals the given protoreflect.Value.\nfunc (e encoder) marshalValue(val protoreflect.Value, fd protoreflect.FieldDescriptor) error {\n\tswitch {\n\tcase fd.IsList():\n\t\treturn e.marshalList(val.List(), fd)\n\tcase fd.IsMap():\n\t\treturn e.marshalMap(val.Map(), fd)\n\tdefault:\n\t\treturn e.marshalSingular(val, fd)\n\t}\n}\n\n// marshalSingular marshals the given non-repeated field value. This includes\n// all scalar types, enums, messages, and groups.\nfunc (e encoder) marshalSingular(val protoreflect.Value, fd protoreflect.FieldDescriptor) error {\n\tif !val.IsValid() {\n\t\te.WriteNull()\n\t\treturn nil\n\t}\n\n\tswitch kind := fd.Kind(); kind {\n\tcase protoreflect.BoolKind:\n\t\te.WriteBool(val.Bool())\n\n\tcase protoreflect.StringKind:\n\t\tif e.WriteString(val.String()) != nil {\n\t\t\treturn errors.InvalidUTF8(string(fd.FullName()))\n\t\t}\n\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\te.WriteInt(val.Int())\n\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\te.WriteUint(val.Uint())\n\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Uint64Kind,\n\t\tprotoreflect.Sfixed64Kind, protoreflect.Fixed64Kind:\n\t\t// 64-bit integers are written out as JSON string.\n\t\te.WriteString(val.String())\n\n\tcase protoreflect.FloatKind:\n\t\t// Encoder.WriteFloat handles the special numbers NaN and infinites.\n\t\te.WriteFloat(val.Float(), 32)\n\n\tcase protoreflect.DoubleKind:\n\t\t// Encoder.WriteFloat handles the special numbers NaN and infinites.\n\t\te.WriteFloat(val.Float(), 64)\n\n\tcase protoreflect.BytesKind:\n\t\te.WriteString(base64.StdEncoding.EncodeToString(val.Bytes()))\n\n\tcase protoreflect.EnumKind:\n\t\tif fd.Enum().FullName() == genid.NullValue_enum_fullname {\n\t\t\te.WriteNull()\n\t\t} else {\n\t\t\tdesc := fd.Enum().Values().ByNumber(val.Enum())\n\t\t\tif e.opts.UseEnumNumbers || desc == nil {\n\t\t\t\te.WriteInt(int64(val.Enum()))\n\t\t\t} else {\n\t\t\t\te.WriteString(string(desc.Name()))\n\t\t\t}\n\t\t}\n\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tif err := e.marshalMessage(val.Message(), \"\"); err != nil {\n\t\t\treturn err\n\t\t}\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"%v has unknown kind: %v\", fd.FullName(), kind))\n\t}\n\treturn nil\n}\n\n// marshalList marshals the given protoreflect.List.\nfunc (e encoder) marshalList(list protoreflect.List, fd protoreflect.FieldDescriptor) error {\n\te.StartArray()\n\tdefer e.EndArray()\n\n\tfor i := 0; i < list.Len(); i++ {\n\t\titem := list.Get(i)\n\t\tif err := e.marshalSingular(item, fd); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// marshalMap marshals given protoreflect.Map.\nfunc (e encoder) marshalMap(mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error {\n\te.StartObject()\n\tdefer e.EndObject()\n\n\tvar err error\n\torder.RangeEntries(mmap, order.GenericKeyOrder, func(k protoreflect.MapKey, v protoreflect.Value) bool {\n\t\tif err = e.WriteName(k.String()); err != nil {\n\t\t\treturn false\n\t\t}\n\t\tif err = e.marshalSingular(v, fd.MapValue()); err != nil {\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t})\n\treturn err\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protojson\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"google.golang.org/protobuf/internal/encoding/json\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype marshalFunc func(encoder, protoreflect.Message) error\n\n// wellKnownTypeMarshaler returns a marshal function if the message type\n// has specialized serialization behavior. It returns nil otherwise.\nfunc wellKnownTypeMarshaler(name protoreflect.FullName) marshalFunc {\n\tif name.Parent() == genid.GoogleProtobuf_package {\n\t\tswitch name.Name() {\n\t\tcase genid.Any_message_name:\n\t\t\treturn encoder.marshalAny\n\t\tcase genid.Timestamp_message_name:\n\t\t\treturn encoder.marshalTimestamp\n\t\tcase genid.Duration_message_name:\n\t\t\treturn encoder.marshalDuration\n\t\tcase genid.BoolValue_message_name,\n\t\t\tgenid.Int32Value_message_name,\n\t\t\tgenid.Int64Value_message_name,\n\t\t\tgenid.UInt32Value_message_name,\n\t\t\tgenid.UInt64Value_message_name,\n\t\t\tgenid.FloatValue_message_name,\n\t\t\tgenid.DoubleValue_message_name,\n\t\t\tgenid.StringValue_message_name,\n\t\t\tgenid.BytesValue_message_name:\n\t\t\treturn encoder.marshalWrapperType\n\t\tcase genid.Struct_message_name:\n\t\t\treturn encoder.marshalStruct\n\t\tcase genid.ListValue_message_name:\n\t\t\treturn encoder.marshalListValue\n\t\tcase genid.Value_message_name:\n\t\t\treturn encoder.marshalKnownValue\n\t\tcase genid.FieldMask_message_name:\n\t\t\treturn encoder.marshalFieldMask\n\t\tcase genid.Empty_message_name:\n\t\t\treturn encoder.marshalEmpty\n\t\t}\n\t}\n\treturn nil\n}\n\ntype unmarshalFunc func(decoder, protoreflect.Message) error\n\n// wellKnownTypeUnmarshaler returns a unmarshal function if the message type\n// has specialized serialization behavior. It returns nil otherwise.\nfunc wellKnownTypeUnmarshaler(name protoreflect.FullName) unmarshalFunc {\n\tif name.Parent() == genid.GoogleProtobuf_package {\n\t\tswitch name.Name() {\n\t\tcase genid.Any_message_name:\n\t\t\treturn decoder.unmarshalAny\n\t\tcase genid.Timestamp_message_name:\n\t\t\treturn decoder.unmarshalTimestamp\n\t\tcase genid.Duration_message_name:\n\t\t\treturn decoder.unmarshalDuration\n\t\tcase genid.BoolValue_message_name,\n\t\t\tgenid.Int32Value_message_name,\n\t\t\tgenid.Int64Value_message_name,\n\t\t\tgenid.UInt32Value_message_name,\n\t\t\tgenid.UInt64Value_message_name,\n\t\t\tgenid.FloatValue_message_name,\n\t\t\tgenid.DoubleValue_message_name,\n\t\t\tgenid.StringValue_message_name,\n\t\t\tgenid.BytesValue_message_name:\n\t\t\treturn decoder.unmarshalWrapperType\n\t\tcase genid.Struct_message_name:\n\t\t\treturn decoder.unmarshalStruct\n\t\tcase genid.ListValue_message_name:\n\t\t\treturn decoder.unmarshalListValue\n\t\tcase genid.Value_message_name:\n\t\t\treturn decoder.unmarshalKnownValue\n\t\tcase genid.FieldMask_message_name:\n\t\t\treturn decoder.unmarshalFieldMask\n\t\tcase genid.Empty_message_name:\n\t\t\treturn decoder.unmarshalEmpty\n\t\t}\n\t}\n\treturn nil\n}\n\n// The JSON representation of an Any message uses the regular representation of\n// the deserialized, embedded message, with an additional field `@type` which\n// contains the type URL. If the embedded message type is well-known and has a\n// custom JSON representation, that representation will be embedded adding a\n// field `value` which holds the custom JSON in addition to the `@type` field.\n\nfunc (e encoder) marshalAny(m protoreflect.Message) error {\n\tfds := m.Descriptor().Fields()\n\tfdType := fds.ByNumber(genid.Any_TypeUrl_field_number)\n\tfdValue := fds.ByNumber(genid.Any_Value_field_number)\n\n\tif !m.Has(fdType) {\n\t\tif !m.Has(fdValue) {\n\t\t\t// If message is empty, marshal out empty JSON object.\n\t\t\te.StartObject()\n\t\t\te.EndObject()\n\t\t\treturn nil\n\t\t} else {\n\t\t\t// Return error if type_url field is not set, but value is set.\n\t\t\treturn errors.New(\"%s: %v is not set\", genid.Any_message_fullname, genid.Any_TypeUrl_field_name)\n\t\t}\n\t}\n\n\ttypeVal := m.Get(fdType)\n\tvalueVal := m.Get(fdValue)\n\n\t// Resolve the type in order to unmarshal value field.\n\ttypeURL := typeVal.String()\n\temt, err := e.opts.Resolver.FindMessageByURL(typeURL)\n\tif err != nil {\n\t\treturn errors.New(\"%s: unable to resolve %q: %v\", genid.Any_message_fullname, typeURL, err)\n\t}\n\n\tem := emt.New()\n\terr = proto.UnmarshalOptions{\n\t\tAllowPartial: true, // never check required fields inside an Any\n\t\tResolver:     e.opts.Resolver,\n\t}.Unmarshal(valueVal.Bytes(), em.Interface())\n\tif err != nil {\n\t\treturn errors.New(\"%s: unable to unmarshal %q: %v\", genid.Any_message_fullname, typeURL, err)\n\t}\n\n\t// If type of value has custom JSON encoding, marshal out a field \"value\"\n\t// with corresponding custom JSON encoding of the embedded message as a\n\t// field.\n\tif marshal := wellKnownTypeMarshaler(emt.Descriptor().FullName()); marshal != nil {\n\t\te.StartObject()\n\t\tdefer e.EndObject()\n\n\t\t// Marshal out @type field.\n\t\te.WriteName(\"@type\")\n\t\tif err := e.WriteString(typeURL); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\te.WriteName(\"value\")\n\t\treturn marshal(e, em)\n\t}\n\n\t// Else, marshal out the embedded message's fields in this Any object.\n\tif err := e.marshalMessage(em, typeURL); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (d decoder) unmarshalAny(m protoreflect.Message) error {\n\t// Peek to check for json.ObjectOpen to avoid advancing a read.\n\tstart, err := d.Peek()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif start.Kind() != json.ObjectOpen {\n\t\treturn d.unexpectedTokenError(start)\n\t}\n\n\t// Use another decoder to parse the unread bytes for @type field. This\n\t// avoids advancing a read from current decoder because the current JSON\n\t// object may contain the fields of the embedded type.\n\tdec := decoder{d.Clone(), UnmarshalOptions{RecursionLimit: d.opts.RecursionLimit}}\n\ttok, err := findTypeURL(dec)\n\tswitch err {\n\tcase errEmptyObject:\n\t\t// An empty JSON object translates to an empty Any message.\n\t\td.Read() // Read json.ObjectOpen.\n\t\td.Read() // Read json.ObjectClose.\n\t\treturn nil\n\n\tcase errMissingType:\n\t\tif d.opts.DiscardUnknown {\n\t\t\t// Treat all fields as unknowns, similar to an empty object.\n\t\t\treturn d.skipJSONValue()\n\t\t}\n\t\t// Use start.Pos() for line position.\n\t\treturn d.newError(start.Pos(), err.Error())\n\n\tdefault:\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\ttypeURL := tok.ParsedString()\n\temt, err := d.opts.Resolver.FindMessageByURL(typeURL)\n\tif err != nil {\n\t\treturn d.newError(tok.Pos(), \"unable to resolve %v: %q\", tok.RawString(), err)\n\t}\n\n\t// Create new message for the embedded message type and unmarshal into it.\n\tem := emt.New()\n\tif unmarshal := wellKnownTypeUnmarshaler(emt.Descriptor().FullName()); unmarshal != nil {\n\t\t// If embedded message is a custom type,\n\t\t// unmarshal the JSON \"value\" field into it.\n\t\tif err := d.unmarshalAnyValue(unmarshal, em); err != nil {\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\t// Else unmarshal the current JSON object into it.\n\t\tif err := d.unmarshalMessage(em, true); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t// Serialize the embedded message and assign the resulting bytes to the\n\t// proto value field.\n\tb, err := proto.MarshalOptions{\n\t\tAllowPartial:  true, // No need to check required fields inside an Any.\n\t\tDeterministic: true,\n\t}.Marshal(em.Interface())\n\tif err != nil {\n\t\treturn d.newError(start.Pos(), \"error in marshaling Any.value field: %v\", err)\n\t}\n\n\tfds := m.Descriptor().Fields()\n\tfdType := fds.ByNumber(genid.Any_TypeUrl_field_number)\n\tfdValue := fds.ByNumber(genid.Any_Value_field_number)\n\n\tm.Set(fdType, protoreflect.ValueOfString(typeURL))\n\tm.Set(fdValue, protoreflect.ValueOfBytes(b))\n\treturn nil\n}\n\nvar errEmptyObject = fmt.Errorf(`empty object`)\nvar errMissingType = fmt.Errorf(`missing \"@type\" field`)\n\n// findTypeURL returns the token for the \"@type\" field value from the given\n// JSON bytes. It is expected that the given bytes start with json.ObjectOpen.\n// It returns errEmptyObject if the JSON object is empty or errMissingType if\n// @type field does not exist. It returns other error if the @type field is not\n// valid or other decoding issues.\nfunc findTypeURL(d decoder) (json.Token, error) {\n\tvar typeURL string\n\tvar typeTok json.Token\n\tnumFields := 0\n\t// Skip start object.\n\td.Read()\n\nLoop:\n\tfor {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn json.Token{}, err\n\t\t}\n\n\t\tswitch tok.Kind() {\n\t\tcase json.ObjectClose:\n\t\t\tif typeURL == \"\" {\n\t\t\t\t// Did not find @type field.\n\t\t\t\tif numFields > 0 {\n\t\t\t\t\treturn json.Token{}, errMissingType\n\t\t\t\t}\n\t\t\t\treturn json.Token{}, errEmptyObject\n\t\t\t}\n\t\t\tbreak Loop\n\n\t\tcase json.Name:\n\t\t\tnumFields++\n\t\t\tif tok.Name() != \"@type\" {\n\t\t\t\t// Skip value.\n\t\t\t\tif err := d.skipJSONValue(); err != nil {\n\t\t\t\t\treturn json.Token{}, err\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Return error if this was previously set already.\n\t\t\tif typeURL != \"\" {\n\t\t\t\treturn json.Token{}, d.newError(tok.Pos(), `duplicate \"@type\" field`)\n\t\t\t}\n\t\t\t// Read field value.\n\t\t\ttok, err := d.Read()\n\t\t\tif err != nil {\n\t\t\t\treturn json.Token{}, err\n\t\t\t}\n\t\t\tif tok.Kind() != json.String {\n\t\t\t\treturn json.Token{}, d.newError(tok.Pos(), `@type field value is not a string: %v`, tok.RawString())\n\t\t\t}\n\t\t\ttypeURL = tok.ParsedString()\n\t\t\tif typeURL == \"\" {\n\t\t\t\treturn json.Token{}, d.newError(tok.Pos(), `@type field contains empty value`)\n\t\t\t}\n\t\t\ttypeTok = tok\n\t\t}\n\t}\n\n\treturn typeTok, nil\n}\n\n// skipJSONValue parses a JSON value (null, boolean, string, number, object and\n// array) in order to advance the read to the next JSON value. It relies on\n// the decoder returning an error if the types are not in valid sequence.\nfunc (d decoder) skipJSONValue() error {\n\tvar open int\n\tfor {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tcase json.ObjectClose, json.ArrayClose:\n\t\t\topen--\n\t\tcase json.ObjectOpen, json.ArrayOpen:\n\t\t\topen++\n\t\t\tif open > d.opts.RecursionLimit {\n\t\t\t\treturn errors.New(\"exceeded max recursion depth\")\n\t\t\t}\n\t\tcase json.EOF:\n\t\t\t// This can only happen if there's a bug in Decoder.Read.\n\t\t\t// Avoid an infinite loop if this does happen.\n\t\t\treturn errors.New(\"unexpected EOF\")\n\t\t}\n\t\tif open == 0 {\n\t\t\treturn nil\n\t\t}\n\t}\n}\n\n// unmarshalAnyValue unmarshals the given custom-type message from the JSON\n// object's \"value\" field.\nfunc (d decoder) unmarshalAnyValue(unmarshal unmarshalFunc, m protoreflect.Message) error {\n\t// Skip ObjectOpen, and start reading the fields.\n\td.Read()\n\n\tvar found bool // Used for detecting duplicate \"value\".\n\tfor {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tcase json.ObjectClose:\n\t\t\tif !found {\n\t\t\t\t// We tolerate an omitted `value` field with the google.protobuf.Empty Well-Known-Type,\n\t\t\t\t// for compatibility with other proto runtimes that have interpreted the spec differently.\n\t\t\t\tif m.Descriptor().FullName() != genid.Empty_message_fullname {\n\t\t\t\t\treturn d.newError(tok.Pos(), `missing \"value\" field`)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil\n\n\t\tcase json.Name:\n\t\t\tswitch tok.Name() {\n\t\t\tcase \"@type\":\n\t\t\t\t// Skip the value as this was previously parsed already.\n\t\t\t\td.Read()\n\n\t\t\tcase \"value\":\n\t\t\t\tif found {\n\t\t\t\t\treturn d.newError(tok.Pos(), `duplicate \"value\" field`)\n\t\t\t\t}\n\t\t\t\t// Unmarshal the field value into the given message.\n\t\t\t\tif err := unmarshal(d, m); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tfound = true\n\n\t\t\tdefault:\n\t\t\t\tif d.opts.DiscardUnknown {\n\t\t\t\t\tif err := d.skipJSONValue(); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\treturn d.newError(tok.Pos(), \"unknown field %v\", tok.RawString())\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Wrapper types are encoded as JSON primitives like string, number or boolean.\n\nfunc (e encoder) marshalWrapperType(m protoreflect.Message) error {\n\tfd := m.Descriptor().Fields().ByNumber(genid.WrapperValue_Value_field_number)\n\tval := m.Get(fd)\n\treturn e.marshalSingular(val, fd)\n}\n\nfunc (d decoder) unmarshalWrapperType(m protoreflect.Message) error {\n\tfd := m.Descriptor().Fields().ByNumber(genid.WrapperValue_Value_field_number)\n\tval, err := d.unmarshalScalar(fd)\n\tif err != nil {\n\t\treturn err\n\t}\n\tm.Set(fd, val)\n\treturn nil\n}\n\n// The JSON representation for Empty is an empty JSON object.\n\nfunc (e encoder) marshalEmpty(protoreflect.Message) error {\n\te.StartObject()\n\te.EndObject()\n\treturn nil\n}\n\nfunc (d decoder) unmarshalEmpty(protoreflect.Message) error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.ObjectOpen {\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n\n\tfor {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tcase json.ObjectClose:\n\t\t\treturn nil\n\n\t\tcase json.Name:\n\t\t\tif d.opts.DiscardUnknown {\n\t\t\t\tif err := d.skipJSONValue(); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn d.newError(tok.Pos(), \"unknown field %v\", tok.RawString())\n\n\t\tdefault:\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\t}\n}\n\n// The JSON representation for Struct is a JSON object that contains the encoded\n// Struct.fields map and follows the serialization rules for a map.\n\nfunc (e encoder) marshalStruct(m protoreflect.Message) error {\n\tfd := m.Descriptor().Fields().ByNumber(genid.Struct_Fields_field_number)\n\treturn e.marshalMap(m.Get(fd).Map(), fd)\n}\n\nfunc (d decoder) unmarshalStruct(m protoreflect.Message) error {\n\tfd := m.Descriptor().Fields().ByNumber(genid.Struct_Fields_field_number)\n\treturn d.unmarshalMap(m.Mutable(fd).Map(), fd)\n}\n\n// The JSON representation for ListValue is JSON array that contains the encoded\n// ListValue.values repeated field and follows the serialization rules for a\n// repeated field.\n\nfunc (e encoder) marshalListValue(m protoreflect.Message) error {\n\tfd := m.Descriptor().Fields().ByNumber(genid.ListValue_Values_field_number)\n\treturn e.marshalList(m.Get(fd).List(), fd)\n}\n\nfunc (d decoder) unmarshalListValue(m protoreflect.Message) error {\n\tfd := m.Descriptor().Fields().ByNumber(genid.ListValue_Values_field_number)\n\treturn d.unmarshalList(m.Mutable(fd).List(), fd)\n}\n\n// The JSON representation for a Value is dependent on the oneof field that is\n// set. Each of the field in the oneof has its own custom serialization rule. A\n// Value message needs to be a oneof field set, else it is an error.\n\nfunc (e encoder) marshalKnownValue(m protoreflect.Message) error {\n\tod := m.Descriptor().Oneofs().ByName(genid.Value_Kind_oneof_name)\n\tfd := m.WhichOneof(od)\n\tif fd == nil {\n\t\treturn errors.New(\"%s: none of the oneof fields is set\", genid.Value_message_fullname)\n\t}\n\tif fd.Number() == genid.Value_NumberValue_field_number {\n\t\tif v := m.Get(fd).Float(); math.IsNaN(v) || math.IsInf(v, 0) {\n\t\t\treturn errors.New(\"%s: invalid %v value\", genid.Value_NumberValue_field_fullname, v)\n\t\t}\n\t}\n\treturn e.marshalSingular(m.Get(fd), fd)\n}\n\nfunc (d decoder) unmarshalKnownValue(m protoreflect.Message) error {\n\ttok, err := d.Peek()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar fd protoreflect.FieldDescriptor\n\tvar val protoreflect.Value\n\tswitch tok.Kind() {\n\tcase json.Null:\n\t\td.Read()\n\t\tfd = m.Descriptor().Fields().ByNumber(genid.Value_NullValue_field_number)\n\t\tval = protoreflect.ValueOfEnum(0)\n\n\tcase json.Bool:\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfd = m.Descriptor().Fields().ByNumber(genid.Value_BoolValue_field_number)\n\t\tval = protoreflect.ValueOfBool(tok.Bool())\n\n\tcase json.Number:\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfd = m.Descriptor().Fields().ByNumber(genid.Value_NumberValue_field_number)\n\t\tvar ok bool\n\t\tval, ok = unmarshalFloat(tok, 64)\n\t\tif !ok {\n\t\t\treturn d.newError(tok.Pos(), \"invalid %v: %v\", genid.Value_message_fullname, tok.RawString())\n\t\t}\n\n\tcase json.String:\n\t\t// A JSON string may have been encoded from the number_value field,\n\t\t// e.g. \"NaN\", \"Infinity\", etc. Parsing a proto double type also allows\n\t\t// for it to be in JSON string form. Given this custom encoding spec,\n\t\t// however, there is no way to identify that and hence a JSON string is\n\t\t// always assigned to the string_value field, which means that certain\n\t\t// encoding cannot be parsed back to the same field.\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfd = m.Descriptor().Fields().ByNumber(genid.Value_StringValue_field_number)\n\t\tval = protoreflect.ValueOfString(tok.ParsedString())\n\n\tcase json.ObjectOpen:\n\t\tfd = m.Descriptor().Fields().ByNumber(genid.Value_StructValue_field_number)\n\t\tval = m.NewField(fd)\n\t\tif err := d.unmarshalStruct(val.Message()); err != nil {\n\t\t\treturn err\n\t\t}\n\n\tcase json.ArrayOpen:\n\t\tfd = m.Descriptor().Fields().ByNumber(genid.Value_ListValue_field_number)\n\t\tval = m.NewField(fd)\n\t\tif err := d.unmarshalListValue(val.Message()); err != nil {\n\t\t\treturn err\n\t\t}\n\n\tdefault:\n\t\treturn d.newError(tok.Pos(), \"invalid %v: %v\", genid.Value_message_fullname, tok.RawString())\n\t}\n\n\tm.Set(fd, val)\n\treturn nil\n}\n\n// The JSON representation for a Duration is a JSON string that ends in the\n// suffix \"s\" (indicating seconds) and is preceded by the number of seconds,\n// with nanoseconds expressed as fractional seconds.\n//\n// Durations less than one second are represented with a 0 seconds field and a\n// positive or negative nanos field. For durations of one second or more, a\n// non-zero value for the nanos field must be of the same sign as the seconds\n// field.\n//\n// Duration.seconds must be from -315,576,000,000 to +315,576,000,000 inclusive.\n// Duration.nanos must be from -999,999,999 to +999,999,999 inclusive.\n\nconst (\n\tsecondsInNanos       = 999999999\n\tmaxSecondsInDuration = 315576000000\n)\n\nfunc (e encoder) marshalDuration(m protoreflect.Message) error {\n\tfds := m.Descriptor().Fields()\n\tfdSeconds := fds.ByNumber(genid.Duration_Seconds_field_number)\n\tfdNanos := fds.ByNumber(genid.Duration_Nanos_field_number)\n\n\tsecsVal := m.Get(fdSeconds)\n\tnanosVal := m.Get(fdNanos)\n\tsecs := secsVal.Int()\n\tnanos := nanosVal.Int()\n\tif secs < -maxSecondsInDuration || secs > maxSecondsInDuration {\n\t\treturn errors.New(\"%s: seconds out of range %v\", genid.Duration_message_fullname, secs)\n\t}\n\tif nanos < -secondsInNanos || nanos > secondsInNanos {\n\t\treturn errors.New(\"%s: nanos out of range %v\", genid.Duration_message_fullname, nanos)\n\t}\n\tif (secs > 0 && nanos < 0) || (secs < 0 && nanos > 0) {\n\t\treturn errors.New(\"%s: signs of seconds and nanos do not match\", genid.Duration_message_fullname)\n\t}\n\t// Generated output always contains 0, 3, 6, or 9 fractional digits,\n\t// depending on required precision, followed by the suffix \"s\".\n\tvar sign string\n\tif secs < 0 || nanos < 0 {\n\t\tsign, secs, nanos = \"-\", -1*secs, -1*nanos\n\t}\n\tx := fmt.Sprintf(\"%s%d.%09d\", sign, secs, nanos)\n\tx = strings.TrimSuffix(x, \"000\")\n\tx = strings.TrimSuffix(x, \"000\")\n\tx = strings.TrimSuffix(x, \".000\")\n\te.WriteString(x + \"s\")\n\treturn nil\n}\n\nfunc (d decoder) unmarshalDuration(m protoreflect.Message) error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.String {\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n\n\tsecs, nanos, ok := parseDuration(tok.ParsedString())\n\tif !ok {\n\t\treturn d.newError(tok.Pos(), \"invalid %v value %v\", genid.Duration_message_fullname, tok.RawString())\n\t}\n\t// Validate seconds. No need to validate nanos because parseDuration would\n\t// have covered that already.\n\tif secs < -maxSecondsInDuration || secs > maxSecondsInDuration {\n\t\treturn d.newError(tok.Pos(), \"%v value out of range: %v\", genid.Duration_message_fullname, tok.RawString())\n\t}\n\n\tfds := m.Descriptor().Fields()\n\tfdSeconds := fds.ByNumber(genid.Duration_Seconds_field_number)\n\tfdNanos := fds.ByNumber(genid.Duration_Nanos_field_number)\n\n\tm.Set(fdSeconds, protoreflect.ValueOfInt64(secs))\n\tm.Set(fdNanos, protoreflect.ValueOfInt32(nanos))\n\treturn nil\n}\n\n// parseDuration parses the given input string for seconds and nanoseconds value\n// for the Duration JSON format. The format is a decimal number with a suffix\n// 's'. It can have optional plus/minus sign. There needs to be at least an\n// integer or fractional part. Fractional part is limited to 9 digits only for\n// nanoseconds precision, regardless of whether there are trailing zero digits.\n// Example values are 1s, 0.1s, 1.s, .1s, +1s, -1s, -.1s.\nfunc parseDuration(input string) (int64, int32, bool) {\n\tb := []byte(input)\n\tsize := len(b)\n\tif size < 2 {\n\t\treturn 0, 0, false\n\t}\n\tif b[size-1] != 's' {\n\t\treturn 0, 0, false\n\t}\n\tb = b[:size-1]\n\n\t// Read optional plus/minus symbol.\n\tvar neg bool\n\tswitch b[0] {\n\tcase '-':\n\t\tneg = true\n\t\tb = b[1:]\n\tcase '+':\n\t\tb = b[1:]\n\t}\n\tif len(b) == 0 {\n\t\treturn 0, 0, false\n\t}\n\n\t// Read the integer part.\n\tvar intp []byte\n\tswitch {\n\tcase b[0] == '0':\n\t\tb = b[1:]\n\n\tcase '1' <= b[0] && b[0] <= '9':\n\t\tintp = b[0:]\n\t\tb = b[1:]\n\t\tn := 1\n\t\tfor len(b) > 0 && '0' <= b[0] && b[0] <= '9' {\n\t\t\tn++\n\t\t\tb = b[1:]\n\t\t}\n\t\tintp = intp[:n]\n\n\tcase b[0] == '.':\n\t\t// Continue below.\n\n\tdefault:\n\t\treturn 0, 0, false\n\t}\n\n\thasFrac := false\n\tvar frac [9]byte\n\tif len(b) > 0 {\n\t\tif b[0] != '.' {\n\t\t\treturn 0, 0, false\n\t\t}\n\t\t// Read the fractional part.\n\t\tb = b[1:]\n\t\tn := 0\n\t\tfor len(b) > 0 && n < 9 && '0' <= b[0] && b[0] <= '9' {\n\t\t\tfrac[n] = b[0]\n\t\t\tn++\n\t\t\tb = b[1:]\n\t\t}\n\t\t// It is not valid if there are more bytes left.\n\t\tif len(b) > 0 {\n\t\t\treturn 0, 0, false\n\t\t}\n\t\t// Pad fractional part with 0s.\n\t\tfor i := n; i < 9; i++ {\n\t\t\tfrac[i] = '0'\n\t\t}\n\t\thasFrac = true\n\t}\n\n\tvar secs int64\n\tif len(intp) > 0 {\n\t\tvar err error\n\t\tsecs, err = strconv.ParseInt(string(intp), 10, 64)\n\t\tif err != nil {\n\t\t\treturn 0, 0, false\n\t\t}\n\t}\n\n\tvar nanos int64\n\tif hasFrac {\n\t\tnanob := bytes.TrimLeft(frac[:], \"0\")\n\t\tif len(nanob) > 0 {\n\t\t\tvar err error\n\t\t\tnanos, err = strconv.ParseInt(string(nanob), 10, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, 0, false\n\t\t\t}\n\t\t}\n\t}\n\n\tif neg {\n\t\tif secs > 0 {\n\t\t\tsecs = -secs\n\t\t}\n\t\tif nanos > 0 {\n\t\t\tnanos = -nanos\n\t\t}\n\t}\n\treturn secs, int32(nanos), true\n}\n\n// The JSON representation for a Timestamp is a JSON string in the RFC 3339\n// format, i.e. \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\" where\n// {year} is always expressed using four digits while {month}, {day}, {hour},\n// {min}, and {sec} are zero-padded to two digits each. The fractional seconds,\n// which can go up to 9 digits, up to 1 nanosecond resolution, is optional. The\n// \"Z\" suffix indicates the timezone (\"UTC\"); the timezone is required. Encoding\n// should always use UTC (as indicated by \"Z\") and a decoder should be able to\n// accept both UTC and other timezones (as indicated by an offset).\n//\n// Timestamp.seconds must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z\n// inclusive.\n// Timestamp.nanos must be from 0 to 999,999,999 inclusive.\n\nconst (\n\tmaxTimestampSeconds = 253402300799\n\tminTimestampSeconds = -62135596800\n)\n\nfunc (e encoder) marshalTimestamp(m protoreflect.Message) error {\n\tfds := m.Descriptor().Fields()\n\tfdSeconds := fds.ByNumber(genid.Timestamp_Seconds_field_number)\n\tfdNanos := fds.ByNumber(genid.Timestamp_Nanos_field_number)\n\n\tsecsVal := m.Get(fdSeconds)\n\tnanosVal := m.Get(fdNanos)\n\tsecs := secsVal.Int()\n\tnanos := nanosVal.Int()\n\tif secs < minTimestampSeconds || secs > maxTimestampSeconds {\n\t\treturn errors.New(\"%s: seconds out of range %v\", genid.Timestamp_message_fullname, secs)\n\t}\n\tif nanos < 0 || nanos > secondsInNanos {\n\t\treturn errors.New(\"%s: nanos out of range %v\", genid.Timestamp_message_fullname, nanos)\n\t}\n\t// Uses RFC 3339, where generated output will be Z-normalized and uses 0, 3,\n\t// 6 or 9 fractional digits.\n\tt := time.Unix(secs, nanos).UTC()\n\tx := t.Format(\"2006-01-02T15:04:05.000000000\")\n\tx = strings.TrimSuffix(x, \"000\")\n\tx = strings.TrimSuffix(x, \"000\")\n\tx = strings.TrimSuffix(x, \".000\")\n\te.WriteString(x + \"Z\")\n\treturn nil\n}\n\nfunc (d decoder) unmarshalTimestamp(m protoreflect.Message) error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.String {\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n\n\ts := tok.ParsedString()\n\tt, err := time.Parse(time.RFC3339Nano, s)\n\tif err != nil {\n\t\treturn d.newError(tok.Pos(), \"invalid %v value %v\", genid.Timestamp_message_fullname, tok.RawString())\n\t}\n\t// Validate seconds.\n\tsecs := t.Unix()\n\tif secs < minTimestampSeconds || secs > maxTimestampSeconds {\n\t\treturn d.newError(tok.Pos(), \"%v value out of range: %v\", genid.Timestamp_message_fullname, tok.RawString())\n\t}\n\t// Validate subseconds.\n\ti := strings.LastIndexByte(s, '.')  // start of subsecond field\n\tj := strings.LastIndexAny(s, \"Z-+\") // start of timezone field\n\tif i >= 0 && j >= i && j-i > len(\".999999999\") {\n\t\treturn d.newError(tok.Pos(), \"invalid %v value %v\", genid.Timestamp_message_fullname, tok.RawString())\n\t}\n\n\tfds := m.Descriptor().Fields()\n\tfdSeconds := fds.ByNumber(genid.Timestamp_Seconds_field_number)\n\tfdNanos := fds.ByNumber(genid.Timestamp_Nanos_field_number)\n\n\tm.Set(fdSeconds, protoreflect.ValueOfInt64(secs))\n\tm.Set(fdNanos, protoreflect.ValueOfInt32(int32(t.Nanosecond())))\n\treturn nil\n}\n\n// The JSON representation for a FieldMask is a JSON string where paths are\n// separated by a comma. Fields name in each path are converted to/from\n// lower-camel naming conventions. Encoding should fail if the path name would\n// end up differently after a round-trip.\n\nfunc (e encoder) marshalFieldMask(m protoreflect.Message) error {\n\tfd := m.Descriptor().Fields().ByNumber(genid.FieldMask_Paths_field_number)\n\tlist := m.Get(fd).List()\n\tpaths := make([]string, 0, list.Len())\n\n\tfor i := 0; i < list.Len(); i++ {\n\t\ts := list.Get(i).String()\n\t\tif !protoreflect.FullName(s).IsValid() {\n\t\t\treturn errors.New(\"%s contains invalid path: %q\", genid.FieldMask_Paths_field_fullname, s)\n\t\t}\n\t\t// Return error if conversion to camelCase is not reversible.\n\t\tcc := strs.JSONCamelCase(s)\n\t\tif s != strs.JSONSnakeCase(cc) {\n\t\t\treturn errors.New(\"%s contains irreversible value %q\", genid.FieldMask_Paths_field_fullname, s)\n\t\t}\n\t\tpaths = append(paths, cc)\n\t}\n\n\te.WriteString(strings.Join(paths, \",\"))\n\treturn nil\n}\n\nfunc (d decoder) unmarshalFieldMask(m protoreflect.Message) error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.String {\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n\tstr := strings.TrimSpace(tok.ParsedString())\n\tif str == \"\" {\n\t\treturn nil\n\t}\n\tpaths := strings.Split(str, \",\")\n\n\tfd := m.Descriptor().Fields().ByNumber(genid.FieldMask_Paths_field_number)\n\tlist := m.Mutable(fd).List()\n\n\tfor _, s0 := range paths {\n\t\ts := strs.JSONSnakeCase(s0)\n\t\tif strings.Contains(s0, \"_\") || !protoreflect.FullName(s).IsValid() {\n\t\t\treturn d.newError(tok.Pos(), \"%v contains invalid path: %q\", genid.FieldMask_Paths_field_fullname, s0)\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfString(s))\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/prototext/decode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage prototext\n\nimport (\n\t\"fmt\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/encoding/text\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/internal/set\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Unmarshal reads the given []byte into the given [proto.Message].\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\nfunc Unmarshal(b []byte, m proto.Message) error {\n\treturn UnmarshalOptions{}.Unmarshal(b, m)\n}\n\n// UnmarshalOptions is a configurable textproto format unmarshaler.\ntype UnmarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// AllowPartial accepts input for messages that will result in missing\n\t// required fields. If AllowPartial is false (the default), Unmarshal will\n\t// return error if there are any missing required fields.\n\tAllowPartial bool\n\n\t// DiscardUnknown specifies whether to ignore unknown fields when parsing.\n\t// An unknown field is any field whose field name or field number does not\n\t// resolve to any known or extension field in the message.\n\t// By default, unmarshal rejects unknown fields as an error.\n\tDiscardUnknown bool\n\n\t// Resolver is used for looking up types when unmarshaling\n\t// google.protobuf.Any messages or extension fields.\n\t// If nil, this defaults to using protoregistry.GlobalTypes.\n\tResolver interface {\n\t\tprotoregistry.MessageTypeResolver\n\t\tprotoregistry.ExtensionTypeResolver\n\t}\n}\n\n// Unmarshal reads the given []byte and populates the given [proto.Message]\n// using options in the UnmarshalOptions object.\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\nfunc (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error {\n\treturn o.unmarshal(b, m)\n}\n\n// unmarshal is a centralized function that all unmarshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for unmarshal that do not go through this.\nfunc (o UnmarshalOptions) unmarshal(b []byte, m proto.Message) error {\n\tproto.Reset(m)\n\n\tif o.Resolver == nil {\n\t\to.Resolver = protoregistry.GlobalTypes\n\t}\n\n\tdec := decoder{text.NewDecoder(b), o}\n\tif err := dec.unmarshalMessage(m.ProtoReflect(), false); err != nil {\n\t\treturn err\n\t}\n\tif o.AllowPartial {\n\t\treturn nil\n\t}\n\treturn proto.CheckInitialized(m)\n}\n\ntype decoder struct {\n\t*text.Decoder\n\topts UnmarshalOptions\n}\n\n// newError returns an error object with position info.\nfunc (d decoder) newError(pos int, f string, x ...any) error {\n\tline, column := d.Position(pos)\n\thead := fmt.Sprintf(\"(line %d:%d): \", line, column)\n\treturn errors.New(head+f, x...)\n}\n\n// unexpectedTokenError returns a syntax error for the given unexpected token.\nfunc (d decoder) unexpectedTokenError(tok text.Token) error {\n\treturn d.syntaxError(tok.Pos(), \"unexpected token: %s\", tok.RawString())\n}\n\n// syntaxError returns a syntax error for given position.\nfunc (d decoder) syntaxError(pos int, f string, x ...any) error {\n\tline, column := d.Position(pos)\n\thead := fmt.Sprintf(\"syntax error (line %d:%d): \", line, column)\n\treturn errors.New(head+f, x...)\n}\n\n// unmarshalMessage unmarshals into the given protoreflect.Message.\nfunc (d decoder) unmarshalMessage(m protoreflect.Message, checkDelims bool) error {\n\tmessageDesc := m.Descriptor()\n\tif !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) {\n\t\treturn errors.New(\"no support for proto1 MessageSets\")\n\t}\n\n\tif messageDesc.FullName() == genid.Any_message_fullname {\n\t\treturn d.unmarshalAny(m, checkDelims)\n\t}\n\n\tif checkDelims {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif tok.Kind() != text.MessageOpen {\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\t}\n\n\tvar seenNums set.Ints\n\tvar seenOneofs set.Ints\n\tfieldDescs := messageDesc.Fields()\n\n\tfor {\n\t\t// Read field name.\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch typ := tok.Kind(); typ {\n\t\tcase text.Name:\n\t\t\t// Continue below.\n\t\tcase text.EOF:\n\t\t\tif checkDelims {\n\t\t\t\treturn text.ErrUnexpectedEOF\n\t\t\t}\n\t\t\treturn nil\n\t\tdefault:\n\t\t\tif checkDelims && typ == text.MessageClose {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\n\t\t// Resolve the field descriptor.\n\t\tvar name protoreflect.Name\n\t\tvar fd protoreflect.FieldDescriptor\n\t\tvar xt protoreflect.ExtensionType\n\t\tvar xtErr error\n\t\tvar isFieldNumberName bool\n\n\t\tswitch tok.NameKind() {\n\t\tcase text.IdentName:\n\t\t\tname = protoreflect.Name(tok.IdentName())\n\t\t\tfd = fieldDescs.ByTextName(string(name))\n\n\t\tcase text.TypeName:\n\t\t\t// Handle extensions only. This code path is not for Any.\n\t\t\txt, xtErr = d.opts.Resolver.FindExtensionByName(protoreflect.FullName(tok.TypeName()))\n\n\t\tcase text.FieldNumber:\n\t\t\tisFieldNumberName = true\n\t\t\tnum := protoreflect.FieldNumber(tok.FieldNumber())\n\t\t\tif !num.IsValid() {\n\t\t\t\treturn d.newError(tok.Pos(), \"invalid field number: %d\", num)\n\t\t\t}\n\t\t\tfd = fieldDescs.ByNumber(num)\n\t\t\tif fd == nil {\n\t\t\t\txt, xtErr = d.opts.Resolver.FindExtensionByNumber(messageDesc.FullName(), num)\n\t\t\t}\n\t\t}\n\n\t\tif xt != nil {\n\t\t\tfd = xt.TypeDescriptor()\n\t\t\tif !messageDesc.ExtensionRanges().Has(fd.Number()) || fd.ContainingMessage().FullName() != messageDesc.FullName() {\n\t\t\t\treturn d.newError(tok.Pos(), \"message %v cannot be extended by %v\", messageDesc.FullName(), fd.FullName())\n\t\t\t}\n\t\t} else if xtErr != nil && xtErr != protoregistry.NotFound {\n\t\t\treturn d.newError(tok.Pos(), \"unable to resolve [%s]: %v\", tok.RawString(), xtErr)\n\t\t}\n\n\t\t// Handle unknown fields.\n\t\tif fd == nil {\n\t\t\tif d.opts.DiscardUnknown || messageDesc.ReservedNames().Has(name) {\n\t\t\t\td.skipValue()\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn d.newError(tok.Pos(), \"unknown field: %v\", tok.RawString())\n\t\t}\n\n\t\t// Handle fields identified by field number.\n\t\tif isFieldNumberName {\n\t\t\t// TODO: Add an option to permit parsing field numbers.\n\t\t\t//\n\t\t\t// This requires careful thought as the MarshalOptions.EmitUnknown\n\t\t\t// option allows formatting unknown fields as the field number and the\n\t\t\t// best-effort textual representation of the field value.  In that case,\n\t\t\t// it may not be possible to unmarshal the value from a parser that does\n\t\t\t// have information about the unknown field.\n\t\t\treturn d.newError(tok.Pos(), \"cannot specify field by number: %v\", tok.RawString())\n\t\t}\n\n\t\tswitch {\n\t\tcase fd.IsList():\n\t\t\tkind := fd.Kind()\n\t\t\tif kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() {\n\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t}\n\n\t\t\tlist := m.Mutable(fd).List()\n\t\t\tif err := d.unmarshalList(fd, list); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\tcase fd.IsMap():\n\t\t\tmmap := m.Mutable(fd).Map()\n\t\t\tif err := d.unmarshalMap(fd, mmap); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\tdefault:\n\t\t\tkind := fd.Kind()\n\t\t\tif kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() {\n\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t}\n\n\t\t\t// If field is a oneof, check if it has already been set.\n\t\t\tif od := fd.ContainingOneof(); od != nil {\n\t\t\t\tidx := uint64(od.Index())\n\t\t\t\tif seenOneofs.Has(idx) {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"error parsing %q, oneof %v is already set\", tok.RawString(), od.FullName())\n\t\t\t\t}\n\t\t\t\tseenOneofs.Set(idx)\n\t\t\t}\n\n\t\t\tnum := uint64(fd.Number())\n\t\t\tif seenNums.Has(num) {\n\t\t\t\treturn d.newError(tok.Pos(), \"non-repeated field %q is repeated\", tok.RawString())\n\t\t\t}\n\n\t\t\tif err := d.unmarshalSingular(fd, m); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tseenNums.Set(num)\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// unmarshalSingular unmarshals a non-repeated field value specified by the\n// given FieldDescriptor.\nfunc (d decoder) unmarshalSingular(fd protoreflect.FieldDescriptor, m protoreflect.Message) error {\n\tvar val protoreflect.Value\n\tvar err error\n\tswitch fd.Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tval = m.NewField(fd)\n\t\terr = d.unmarshalMessage(val.Message(), true)\n\tdefault:\n\t\tval, err = d.unmarshalScalar(fd)\n\t}\n\tif err == nil {\n\t\tm.Set(fd, val)\n\t}\n\treturn err\n}\n\n// unmarshalScalar unmarshals a scalar/enum protoreflect.Value specified by the\n// given FieldDescriptor.\nfunc (d decoder) unmarshalScalar(fd protoreflect.FieldDescriptor) (protoreflect.Value, error) {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn protoreflect.Value{}, err\n\t}\n\n\tif tok.Kind() != text.Scalar {\n\t\treturn protoreflect.Value{}, d.unexpectedTokenError(tok)\n\t}\n\n\tkind := fd.Kind()\n\tswitch kind {\n\tcase protoreflect.BoolKind:\n\t\tif b, ok := tok.Bool(); ok {\n\t\t\treturn protoreflect.ValueOfBool(b), nil\n\t\t}\n\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif n, ok := tok.Int32(); ok {\n\t\t\treturn protoreflect.ValueOfInt32(n), nil\n\t\t}\n\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif n, ok := tok.Int64(); ok {\n\t\t\treturn protoreflect.ValueOfInt64(n), nil\n\t\t}\n\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif n, ok := tok.Uint32(); ok {\n\t\t\treturn protoreflect.ValueOfUint32(n), nil\n\t\t}\n\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif n, ok := tok.Uint64(); ok {\n\t\t\treturn protoreflect.ValueOfUint64(n), nil\n\t\t}\n\n\tcase protoreflect.FloatKind:\n\t\tif n, ok := tok.Float32(); ok {\n\t\t\treturn protoreflect.ValueOfFloat32(n), nil\n\t\t}\n\n\tcase protoreflect.DoubleKind:\n\t\tif n, ok := tok.Float64(); ok {\n\t\t\treturn protoreflect.ValueOfFloat64(n), nil\n\t\t}\n\n\tcase protoreflect.StringKind:\n\t\tif s, ok := tok.String(); ok {\n\t\t\tif strs.EnforceUTF8(fd) && !utf8.ValidString(s) {\n\t\t\t\treturn protoreflect.Value{}, d.newError(tok.Pos(), \"contains invalid UTF-8\")\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfString(s), nil\n\t\t}\n\n\tcase protoreflect.BytesKind:\n\t\tif b, ok := tok.String(); ok {\n\t\t\treturn protoreflect.ValueOfBytes([]byte(b)), nil\n\t\t}\n\n\tcase protoreflect.EnumKind:\n\t\tif lit, ok := tok.Enum(); ok {\n\t\t\t// Lookup EnumNumber based on name.\n\t\t\tif enumVal := fd.Enum().Values().ByName(protoreflect.Name(lit)); enumVal != nil {\n\t\t\t\treturn protoreflect.ValueOfEnum(enumVal.Number()), nil\n\t\t\t}\n\t\t}\n\t\tif num, ok := tok.Int32(); ok {\n\t\t\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(num)), nil\n\t\t}\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid scalar kind %v\", kind))\n\t}\n\n\treturn protoreflect.Value{}, d.newError(tok.Pos(), \"invalid value for %v type: %v\", kind, tok.RawString())\n}\n\n// unmarshalList unmarshals into given protoreflect.List. A list value can\n// either be in [] syntax or simply just a single scalar/message value.\nfunc (d decoder) unmarshalList(fd protoreflect.FieldDescriptor, list protoreflect.List) error {\n\ttok, err := d.Peek()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tswitch fd.Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tswitch tok.Kind() {\n\t\tcase text.ListOpen:\n\t\t\td.Read()\n\t\t\tfor {\n\t\t\t\ttok, err := d.Peek()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\tswitch tok.Kind() {\n\t\t\t\tcase text.ListClose:\n\t\t\t\t\td.Read()\n\t\t\t\t\treturn nil\n\t\t\t\tcase text.MessageOpen:\n\t\t\t\t\tpval := list.NewElement()\n\t\t\t\t\tif err := d.unmarshalMessage(pval.Message(), true); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tlist.Append(pval)\n\t\t\t\tdefault:\n\t\t\t\t\treturn d.unexpectedTokenError(tok)\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase text.MessageOpen:\n\t\t\tpval := list.NewElement()\n\t\t\tif err := d.unmarshalMessage(pval.Message(), true); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tlist.Append(pval)\n\t\t\treturn nil\n\t\t}\n\n\tdefault:\n\t\tswitch tok.Kind() {\n\t\tcase text.ListOpen:\n\t\t\td.Read()\n\t\t\tfor {\n\t\t\t\ttok, err := d.Peek()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\tswitch tok.Kind() {\n\t\t\t\tcase text.ListClose:\n\t\t\t\t\td.Read()\n\t\t\t\t\treturn nil\n\t\t\t\tcase text.Scalar:\n\t\t\t\t\tpval, err := d.unmarshalScalar(fd)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tlist.Append(pval)\n\t\t\t\tdefault:\n\t\t\t\t\treturn d.unexpectedTokenError(tok)\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase text.Scalar:\n\t\t\tpval, err := d.unmarshalScalar(fd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tlist.Append(pval)\n\t\t\treturn nil\n\t\t}\n\t}\n\n\treturn d.unexpectedTokenError(tok)\n}\n\n// unmarshalMap unmarshals into given protoreflect.Map. A map value is a\n// textproto message containing {key: <kvalue>, value: <mvalue>}.\nfunc (d decoder) unmarshalMap(fd protoreflect.FieldDescriptor, mmap protoreflect.Map) error {\n\t// Determine ahead whether map entry is a scalar type or a message type in\n\t// order to call the appropriate unmarshalMapValue func inside\n\t// unmarshalMapEntry.\n\tvar unmarshalMapValue func() (protoreflect.Value, error)\n\tswitch fd.MapValue().Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tunmarshalMapValue = func() (protoreflect.Value, error) {\n\t\t\tpval := mmap.NewValue()\n\t\t\tif err := d.unmarshalMessage(pval.Message(), true); err != nil {\n\t\t\t\treturn protoreflect.Value{}, err\n\t\t\t}\n\t\t\treturn pval, nil\n\t\t}\n\tdefault:\n\t\tunmarshalMapValue = func() (protoreflect.Value, error) {\n\t\t\treturn d.unmarshalScalar(fd.MapValue())\n\t\t}\n\t}\n\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch tok.Kind() {\n\tcase text.MessageOpen:\n\t\treturn d.unmarshalMapEntry(fd, mmap, unmarshalMapValue)\n\n\tcase text.ListOpen:\n\t\tfor {\n\t\t\ttok, err := d.Read()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tswitch tok.Kind() {\n\t\t\tcase text.ListClose:\n\t\t\t\treturn nil\n\t\t\tcase text.MessageOpen:\n\t\t\t\tif err := d.unmarshalMapEntry(fd, mmap, unmarshalMapValue); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn d.unexpectedTokenError(tok)\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n}\n\n// unmarshalMap unmarshals into given protoreflect.Map. A map value is a\n// textproto message containing {key: <kvalue>, value: <mvalue>}.\nfunc (d decoder) unmarshalMapEntry(fd protoreflect.FieldDescriptor, mmap protoreflect.Map, unmarshalMapValue func() (protoreflect.Value, error)) error {\n\tvar key protoreflect.MapKey\n\tvar pval protoreflect.Value\nLoop:\n\tfor {\n\t\t// Read field name.\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tcase text.Name:\n\t\t\tif tok.NameKind() != text.IdentName {\n\t\t\t\tif !d.opts.DiscardUnknown {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"unknown map entry field %q\", tok.RawString())\n\t\t\t\t}\n\t\t\t\td.skipValue()\n\t\t\t\tcontinue Loop\n\t\t\t}\n\t\t\t// Continue below.\n\t\tcase text.MessageClose:\n\t\t\tbreak Loop\n\t\tdefault:\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\n\t\tswitch name := protoreflect.Name(tok.IdentName()); name {\n\t\tcase genid.MapEntry_Key_field_name:\n\t\t\tif !tok.HasSeparator() {\n\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t}\n\t\t\tif key.IsValid() {\n\t\t\t\treturn d.newError(tok.Pos(), \"map entry %q cannot be repeated\", name)\n\t\t\t}\n\t\t\tval, err := d.unmarshalScalar(fd.MapKey())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tkey = val.MapKey()\n\n\t\tcase genid.MapEntry_Value_field_name:\n\t\t\tif kind := fd.MapValue().Kind(); (kind != protoreflect.MessageKind) && (kind != protoreflect.GroupKind) {\n\t\t\t\tif !tok.HasSeparator() {\n\t\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t\t}\n\t\t\t}\n\t\t\tif pval.IsValid() {\n\t\t\t\treturn d.newError(tok.Pos(), \"map entry %q cannot be repeated\", name)\n\t\t\t}\n\t\t\tpval, err = unmarshalMapValue()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\tdefault:\n\t\t\tif !d.opts.DiscardUnknown {\n\t\t\t\treturn d.newError(tok.Pos(), \"unknown map entry field %q\", name)\n\t\t\t}\n\t\t\td.skipValue()\n\t\t}\n\t}\n\n\tif !key.IsValid() {\n\t\tkey = fd.MapKey().Default().MapKey()\n\t}\n\tif !pval.IsValid() {\n\t\tswitch fd.MapValue().Kind() {\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\t// If value field is not set for message/group types, construct an\n\t\t\t// empty one as default.\n\t\t\tpval = mmap.NewValue()\n\t\tdefault:\n\t\t\tpval = fd.MapValue().Default()\n\t\t}\n\t}\n\tmmap.Set(key, pval)\n\treturn nil\n}\n\n// unmarshalAny unmarshals an Any textproto. It can either be in expanded form\n// or non-expanded form.\nfunc (d decoder) unmarshalAny(m protoreflect.Message, checkDelims bool) error {\n\tvar typeURL string\n\tvar bValue []byte\n\tvar seenTypeUrl bool\n\tvar seenValue bool\n\tvar isExpanded bool\n\n\tif checkDelims {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif tok.Kind() != text.MessageOpen {\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\t}\n\nLoop:\n\tfor {\n\t\t// Read field name. Can only have 3 possible field names, i.e. type_url,\n\t\t// value and type URL name inside [].\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif typ := tok.Kind(); typ != text.Name {\n\t\t\tif checkDelims {\n\t\t\t\tif typ == text.MessageClose {\n\t\t\t\t\tbreak Loop\n\t\t\t\t}\n\t\t\t} else if typ == text.EOF {\n\t\t\t\tbreak Loop\n\t\t\t}\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\n\t\tswitch tok.NameKind() {\n\t\tcase text.IdentName:\n\t\t\t// Both type_url and value fields require field separator :.\n\t\t\tif !tok.HasSeparator() {\n\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t}\n\n\t\t\tswitch name := protoreflect.Name(tok.IdentName()); name {\n\t\t\tcase genid.Any_TypeUrl_field_name:\n\t\t\t\tif seenTypeUrl {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"duplicate %v field\", genid.Any_TypeUrl_field_fullname)\n\t\t\t\t}\n\t\t\t\tif isExpanded {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"conflict with [%s] field\", typeURL)\n\t\t\t\t}\n\t\t\t\ttok, err := d.Read()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvar ok bool\n\t\t\t\ttypeURL, ok = tok.String()\n\t\t\t\tif !ok {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"invalid %v field value: %v\", genid.Any_TypeUrl_field_fullname, tok.RawString())\n\t\t\t\t}\n\t\t\t\tseenTypeUrl = true\n\n\t\t\tcase genid.Any_Value_field_name:\n\t\t\t\tif seenValue {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"duplicate %v field\", genid.Any_Value_field_fullname)\n\t\t\t\t}\n\t\t\t\tif isExpanded {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"conflict with [%s] field\", typeURL)\n\t\t\t\t}\n\t\t\t\ttok, err := d.Read()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\ts, ok := tok.String()\n\t\t\t\tif !ok {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"invalid %v field value: %v\", genid.Any_Value_field_fullname, tok.RawString())\n\t\t\t\t}\n\t\t\t\tbValue = []byte(s)\n\t\t\t\tseenValue = true\n\n\t\t\tdefault:\n\t\t\t\tif !d.opts.DiscardUnknown {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"invalid field name %q in %v message\", tok.RawString(), genid.Any_message_fullname)\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase text.TypeName:\n\t\t\tif isExpanded {\n\t\t\t\treturn d.newError(tok.Pos(), \"cannot have more than one type\")\n\t\t\t}\n\t\t\tif seenTypeUrl {\n\t\t\t\treturn d.newError(tok.Pos(), \"conflict with type_url field\")\n\t\t\t}\n\t\t\ttypeURL = tok.TypeName()\n\t\t\tvar err error\n\t\t\tbValue, err = d.unmarshalExpandedAny(typeURL, tok.Pos())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tisExpanded = true\n\n\t\tdefault:\n\t\t\tif !d.opts.DiscardUnknown {\n\t\t\t\treturn d.newError(tok.Pos(), \"invalid field name %q in %v message\", tok.RawString(), genid.Any_message_fullname)\n\t\t\t}\n\t\t}\n\t}\n\n\tfds := m.Descriptor().Fields()\n\tif len(typeURL) > 0 {\n\t\tm.Set(fds.ByNumber(genid.Any_TypeUrl_field_number), protoreflect.ValueOfString(typeURL))\n\t}\n\tif len(bValue) > 0 {\n\t\tm.Set(fds.ByNumber(genid.Any_Value_field_number), protoreflect.ValueOfBytes(bValue))\n\t}\n\treturn nil\n}\n\nfunc (d decoder) unmarshalExpandedAny(typeURL string, pos int) ([]byte, error) {\n\tmt, err := d.opts.Resolver.FindMessageByURL(typeURL)\n\tif err != nil {\n\t\treturn nil, d.newError(pos, \"unable to resolve message [%v]: %v\", typeURL, err)\n\t}\n\t// Create new message for the embedded message type and unmarshal the value\n\t// field into it.\n\tm := mt.New()\n\tif err := d.unmarshalMessage(m, true); err != nil {\n\t\treturn nil, err\n\t}\n\t// Serialize the embedded message and return the resulting bytes.\n\tb, err := proto.MarshalOptions{\n\t\tAllowPartial:  true, // Never check required fields inside an Any.\n\t\tDeterministic: true,\n\t}.Marshal(m.Interface())\n\tif err != nil {\n\t\treturn nil, d.newError(pos, \"error in marshaling message into Any.value: %v\", err)\n\t}\n\treturn b, nil\n}\n\n// skipValue makes the decoder parse a field value in order to advance the read\n// to the next field. It relies on Read returning an error if the types are not\n// in valid sequence.\nfunc (d decoder) skipValue() error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\t// Only need to continue reading for messages and lists.\n\tswitch tok.Kind() {\n\tcase text.MessageOpen:\n\t\treturn d.skipMessageValue()\n\n\tcase text.ListOpen:\n\t\tfor {\n\t\t\ttok, err := d.Read()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tswitch tok.Kind() {\n\t\t\tcase text.ListClose:\n\t\t\t\treturn nil\n\t\t\tcase text.MessageOpen:\n\t\t\t\tif err := d.skipMessageValue(); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\t// Skip items. This will not validate whether skipped values are\n\t\t\t\t// of the same type or not, same behavior as C++\n\t\t\t\t// TextFormat::Parser::AllowUnknownField(true) version 3.8.0.\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// skipMessageValue makes the decoder parse and skip over all fields in a\n// message. It assumes that the previous read type is MessageOpen.\nfunc (d decoder) skipMessageValue() error {\n\tfor {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tcase text.MessageClose:\n\t\t\treturn nil\n\t\tcase text.Name:\n\t\t\tif err := d.skipValue(); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/prototext/doc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package prototext marshals and unmarshals protocol buffer messages as the\n// textproto format.\npackage prototext\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/prototext/encode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage prototext\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/encoding/text\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nconst defaultIndent = \"  \"\n\n// Format formats the message as a multiline string.\n// This function is only intended for human consumption and ignores errors.\n// Do not depend on the output being stable. Its output will change across\n// different builds of your program, even when using the same version of the\n// protobuf module.\nfunc Format(m proto.Message) string {\n\treturn MarshalOptions{Multiline: true}.Format(m)\n}\n\n// Marshal writes the given [proto.Message] in textproto format using default\n// options. Do not depend on the output being stable. Its output will change\n// across different builds of your program, even when using the same version of\n// the protobuf module.\nfunc Marshal(m proto.Message) ([]byte, error) {\n\treturn MarshalOptions{}.Marshal(m)\n}\n\n// MarshalOptions is a configurable text format marshaler.\ntype MarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// Multiline specifies whether the marshaler should format the output in\n\t// indented-form with every textual element on a new line.\n\t// If Indent is an empty string, then an arbitrary indent is chosen.\n\tMultiline bool\n\n\t// Indent specifies the set of indentation characters to use in a multiline\n\t// formatted output such that every entry is preceded by Indent and\n\t// terminated by a newline. If non-empty, then Multiline is treated as true.\n\t// Indent can only be composed of space or tab characters.\n\tIndent string\n\n\t// EmitASCII specifies whether to format strings and bytes as ASCII only\n\t// as opposed to using UTF-8 encoding when possible.\n\tEmitASCII bool\n\n\t// allowInvalidUTF8 specifies whether to permit the encoding of strings\n\t// with invalid UTF-8. This is unexported as it is intended to only\n\t// be specified by the Format method.\n\tallowInvalidUTF8 bool\n\n\t// AllowPartial allows messages that have missing required fields to marshal\n\t// without returning an error. If AllowPartial is false (the default),\n\t// Marshal will return error if there are any missing required fields.\n\tAllowPartial bool\n\n\t// EmitUnknown specifies whether to emit unknown fields in the output.\n\t// If specified, the unmarshaler may be unable to parse the output.\n\t// The default is to exclude unknown fields.\n\tEmitUnknown bool\n\n\t// Resolver is used for looking up types when expanding google.protobuf.Any\n\t// messages. If nil, this defaults to using protoregistry.GlobalTypes.\n\tResolver interface {\n\t\tprotoregistry.ExtensionTypeResolver\n\t\tprotoregistry.MessageTypeResolver\n\t}\n}\n\n// Format formats the message as a string.\n// This method is only intended for human consumption and ignores errors.\n// Do not depend on the output being stable. Its output will change across\n// different builds of your program, even when using the same version of the\n// protobuf module.\nfunc (o MarshalOptions) Format(m proto.Message) string {\n\tif m == nil || !m.ProtoReflect().IsValid() {\n\t\treturn \"<nil>\" // invalid syntax, but okay since this is for debugging\n\t}\n\to.allowInvalidUTF8 = true\n\to.AllowPartial = true\n\to.EmitUnknown = true\n\tb, _ := o.Marshal(m)\n\treturn string(b)\n}\n\n// Marshal writes the given [proto.Message] in textproto format using options in\n// MarshalOptions object. Do not depend on the output being stable. Its output\n// will change across different builds of your program, even when using the\n// same version of the protobuf module.\nfunc (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) {\n\treturn o.marshal(nil, m)\n}\n\n// MarshalAppend appends the textproto format encoding of m to b,\n// returning the result.\nfunc (o MarshalOptions) MarshalAppend(b []byte, m proto.Message) ([]byte, error) {\n\treturn o.marshal(b, m)\n}\n\n// marshal is a centralized function that all marshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for marshal that do not go through this.\nfunc (o MarshalOptions) marshal(b []byte, m proto.Message) ([]byte, error) {\n\tvar delims = [2]byte{'{', '}'}\n\n\tif o.Multiline && o.Indent == \"\" {\n\t\to.Indent = defaultIndent\n\t}\n\tif o.Resolver == nil {\n\t\to.Resolver = protoregistry.GlobalTypes\n\t}\n\n\tinternalEnc, err := text.NewEncoder(b, o.Indent, delims, o.EmitASCII)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Treat nil message interface as an empty message,\n\t// in which case there is nothing to output.\n\tif m == nil {\n\t\treturn b, nil\n\t}\n\n\tenc := encoder{internalEnc, o}\n\terr = enc.marshalMessage(m.ProtoReflect(), false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tout := enc.Bytes()\n\tif len(o.Indent) > 0 && len(out) > 0 {\n\t\tout = append(out, '\\n')\n\t}\n\tif o.AllowPartial {\n\t\treturn out, nil\n\t}\n\treturn out, proto.CheckInitialized(m)\n}\n\ntype encoder struct {\n\t*text.Encoder\n\topts MarshalOptions\n}\n\n// marshalMessage marshals the given protoreflect.Message.\nfunc (e encoder) marshalMessage(m protoreflect.Message, inclDelims bool) error {\n\tmessageDesc := m.Descriptor()\n\tif !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) {\n\t\treturn errors.New(\"no support for proto1 MessageSets\")\n\t}\n\n\tif inclDelims {\n\t\te.StartMessage()\n\t\tdefer e.EndMessage()\n\t}\n\n\t// Handle Any expansion.\n\tif messageDesc.FullName() == genid.Any_message_fullname {\n\t\tif e.marshalAny(m) {\n\t\t\treturn nil\n\t\t}\n\t\t// If unable to expand, continue on to marshal Any as a regular message.\n\t}\n\n\t// Marshal fields.\n\tvar err error\n\torder.RangeFields(m, order.IndexNameFieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tif err = e.marshalField(fd.TextName(), v, fd); err != nil {\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Marshal unknown fields.\n\tif e.opts.EmitUnknown {\n\t\te.marshalUnknown(m.GetUnknown())\n\t}\n\n\treturn nil\n}\n\n// marshalField marshals the given field with protoreflect.Value.\nfunc (e encoder) marshalField(name string, val protoreflect.Value, fd protoreflect.FieldDescriptor) error {\n\tswitch {\n\tcase fd.IsList():\n\t\treturn e.marshalList(name, val.List(), fd)\n\tcase fd.IsMap():\n\t\treturn e.marshalMap(name, val.Map(), fd)\n\tdefault:\n\t\te.WriteName(name)\n\t\treturn e.marshalSingular(val, fd)\n\t}\n}\n\n// marshalSingular marshals the given non-repeated field value. This includes\n// all scalar types, enums, messages, and groups.\nfunc (e encoder) marshalSingular(val protoreflect.Value, fd protoreflect.FieldDescriptor) error {\n\tkind := fd.Kind()\n\tswitch kind {\n\tcase protoreflect.BoolKind:\n\t\te.WriteBool(val.Bool())\n\n\tcase protoreflect.StringKind:\n\t\ts := val.String()\n\t\tif !e.opts.allowInvalidUTF8 && strs.EnforceUTF8(fd) && !utf8.ValidString(s) {\n\t\t\treturn errors.InvalidUTF8(string(fd.FullName()))\n\t\t}\n\t\te.WriteString(s)\n\n\tcase protoreflect.Int32Kind, protoreflect.Int64Kind,\n\t\tprotoreflect.Sint32Kind, protoreflect.Sint64Kind,\n\t\tprotoreflect.Sfixed32Kind, protoreflect.Sfixed64Kind:\n\t\te.WriteInt(val.Int())\n\n\tcase protoreflect.Uint32Kind, protoreflect.Uint64Kind,\n\t\tprotoreflect.Fixed32Kind, protoreflect.Fixed64Kind:\n\t\te.WriteUint(val.Uint())\n\n\tcase protoreflect.FloatKind:\n\t\t// Encoder.WriteFloat handles the special numbers NaN and infinites.\n\t\te.WriteFloat(val.Float(), 32)\n\n\tcase protoreflect.DoubleKind:\n\t\t// Encoder.WriteFloat handles the special numbers NaN and infinites.\n\t\te.WriteFloat(val.Float(), 64)\n\n\tcase protoreflect.BytesKind:\n\t\te.WriteString(string(val.Bytes()))\n\n\tcase protoreflect.EnumKind:\n\t\tnum := val.Enum()\n\t\tif desc := fd.Enum().Values().ByNumber(num); desc != nil {\n\t\t\te.WriteLiteral(string(desc.Name()))\n\t\t} else {\n\t\t\t// Use numeric value if there is no enum description.\n\t\t\te.WriteInt(int64(num))\n\t\t}\n\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn e.marshalMessage(val.Message(), true)\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"%v has unknown kind: %v\", fd.FullName(), kind))\n\t}\n\treturn nil\n}\n\n// marshalList marshals the given protoreflect.List as multiple name-value fields.\nfunc (e encoder) marshalList(name string, list protoreflect.List, fd protoreflect.FieldDescriptor) error {\n\tsize := list.Len()\n\tfor i := 0; i < size; i++ {\n\t\te.WriteName(name)\n\t\tif err := e.marshalSingular(list.Get(i), fd); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// marshalMap marshals the given protoreflect.Map as multiple name-value fields.\nfunc (e encoder) marshalMap(name string, mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error {\n\tvar err error\n\torder.RangeEntries(mmap, order.GenericKeyOrder, func(key protoreflect.MapKey, val protoreflect.Value) bool {\n\t\te.WriteName(name)\n\t\te.StartMessage()\n\t\tdefer e.EndMessage()\n\n\t\te.WriteName(string(genid.MapEntry_Key_field_name))\n\t\terr = e.marshalSingular(key.Value(), fd.MapKey())\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\n\t\te.WriteName(string(genid.MapEntry_Value_field_name))\n\t\terr = e.marshalSingular(val, fd.MapValue())\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t})\n\treturn err\n}\n\n// marshalUnknown parses the given []byte and marshals fields out.\n// This function assumes proper encoding in the given []byte.\nfunc (e encoder) marshalUnknown(b []byte) {\n\tconst dec = 10\n\tconst hex = 16\n\tfor len(b) > 0 {\n\t\tnum, wtype, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\te.WriteName(strconv.FormatInt(int64(num), dec))\n\n\t\tswitch wtype {\n\t\tcase protowire.VarintType:\n\t\t\tvar v uint64\n\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\te.WriteUint(v)\n\t\tcase protowire.Fixed32Type:\n\t\t\tvar v uint32\n\t\t\tv, n = protowire.ConsumeFixed32(b)\n\t\t\te.WriteLiteral(\"0x\" + strconv.FormatUint(uint64(v), hex))\n\t\tcase protowire.Fixed64Type:\n\t\t\tvar v uint64\n\t\t\tv, n = protowire.ConsumeFixed64(b)\n\t\t\te.WriteLiteral(\"0x\" + strconv.FormatUint(v, hex))\n\t\tcase protowire.BytesType:\n\t\t\tvar v []byte\n\t\t\tv, n = protowire.ConsumeBytes(b)\n\t\t\te.WriteString(string(v))\n\t\tcase protowire.StartGroupType:\n\t\t\te.StartMessage()\n\t\t\tvar v []byte\n\t\t\tv, n = protowire.ConsumeGroup(num, b)\n\t\t\te.marshalUnknown(v)\n\t\t\te.EndMessage()\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"prototext: error parsing unknown field wire type: %v\", wtype))\n\t\t}\n\n\t\tb = b[n:]\n\t}\n}\n\n// marshalAny marshals the given google.protobuf.Any message in expanded form.\n// It returns true if it was able to marshal, else false.\nfunc (e encoder) marshalAny(any protoreflect.Message) bool {\n\t// Construct the embedded message.\n\tfds := any.Descriptor().Fields()\n\tfdType := fds.ByNumber(genid.Any_TypeUrl_field_number)\n\ttypeURL := any.Get(fdType).String()\n\tmt, err := e.opts.Resolver.FindMessageByURL(typeURL)\n\tif err != nil {\n\t\treturn false\n\t}\n\tm := mt.New().Interface()\n\n\t// Unmarshal bytes into embedded message.\n\tfdValue := fds.ByNumber(genid.Any_Value_field_number)\n\tvalue := any.Get(fdValue)\n\terr = proto.UnmarshalOptions{\n\t\tAllowPartial: true,\n\t\tResolver:     e.opts.Resolver,\n\t}.Unmarshal(value.Bytes(), m)\n\tif err != nil {\n\t\treturn false\n\t}\n\n\t// Get current encoder position. If marshaling fails, reset encoder output\n\t// back to this position.\n\tpos := e.Snapshot()\n\n\t// Field name is the proto field name enclosed in [].\n\te.WriteName(\"[\" + typeURL + \"]\")\n\terr = e.marshalMessage(m.ProtoReflect(), true)\n\tif err != nil {\n\t\te.Reset(pos)\n\t\treturn false\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/protowire/wire.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protowire parses and formats the raw wire encoding.\n// See https://protobuf.dev/programming-guides/encoding.\n//\n// For marshaling and unmarshaling entire protobuf messages,\n// use the [google.golang.org/protobuf/proto] package instead.\npackage protowire\n\nimport (\n\t\"io\"\n\t\"math\"\n\t\"math/bits\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n)\n\n// Number represents the field number.\ntype Number int32\n\nconst (\n\tMinValidNumber        Number = 1\n\tFirstReservedNumber   Number = 19000\n\tLastReservedNumber    Number = 19999\n\tMaxValidNumber        Number = 1<<29 - 1\n\tDefaultRecursionLimit        = 10000\n)\n\n// IsValid reports whether the field number is semantically valid.\nfunc (n Number) IsValid() bool {\n\treturn MinValidNumber <= n && n <= MaxValidNumber\n}\n\n// Type represents the wire type.\ntype Type int8\n\nconst (\n\tVarintType     Type = 0\n\tFixed32Type    Type = 5\n\tFixed64Type    Type = 1\n\tBytesType      Type = 2\n\tStartGroupType Type = 3\n\tEndGroupType   Type = 4\n)\n\nconst (\n\t_ = -iota\n\terrCodeTruncated\n\terrCodeFieldNumber\n\terrCodeOverflow\n\terrCodeReserved\n\terrCodeEndGroup\n\terrCodeRecursionDepth\n)\n\nvar (\n\terrFieldNumber = errors.New(\"invalid field number\")\n\terrOverflow    = errors.New(\"variable length integer overflow\")\n\terrReserved    = errors.New(\"cannot parse reserved wire type\")\n\terrEndGroup    = errors.New(\"mismatching end group marker\")\n\terrParse       = errors.New(\"parse error\")\n)\n\n// ParseError converts an error code into an error value.\n// This returns nil if n is a non-negative number.\nfunc ParseError(n int) error {\n\tif n >= 0 {\n\t\treturn nil\n\t}\n\tswitch n {\n\tcase errCodeTruncated:\n\t\treturn io.ErrUnexpectedEOF\n\tcase errCodeFieldNumber:\n\t\treturn errFieldNumber\n\tcase errCodeOverflow:\n\t\treturn errOverflow\n\tcase errCodeReserved:\n\t\treturn errReserved\n\tcase errCodeEndGroup:\n\t\treturn errEndGroup\n\tdefault:\n\t\treturn errParse\n\t}\n}\n\n// ConsumeField parses an entire field record (both tag and value) and returns\n// the field number, the wire type, and the total length.\n// This returns a negative length upon an error (see [ParseError]).\n//\n// The total length includes the tag header and the end group marker (if the\n// field is a group).\nfunc ConsumeField(b []byte) (Number, Type, int) {\n\tnum, typ, n := ConsumeTag(b)\n\tif n < 0 {\n\t\treturn 0, 0, n // forward error code\n\t}\n\tm := ConsumeFieldValue(num, typ, b[n:])\n\tif m < 0 {\n\t\treturn 0, 0, m // forward error code\n\t}\n\treturn num, typ, n + m\n}\n\n// ConsumeFieldValue parses a field value and returns its length.\n// This assumes that the field [Number] and wire [Type] have already been parsed.\n// This returns a negative length upon an error (see [ParseError]).\n//\n// When parsing a group, the length includes the end group marker and\n// the end group is verified to match the starting field number.\nfunc ConsumeFieldValue(num Number, typ Type, b []byte) (n int) {\n\treturn consumeFieldValueD(num, typ, b, DefaultRecursionLimit)\n}\n\nfunc consumeFieldValueD(num Number, typ Type, b []byte, depth int) (n int) {\n\tswitch typ {\n\tcase VarintType:\n\t\t_, n = ConsumeVarint(b)\n\t\treturn n\n\tcase Fixed32Type:\n\t\t_, n = ConsumeFixed32(b)\n\t\treturn n\n\tcase Fixed64Type:\n\t\t_, n = ConsumeFixed64(b)\n\t\treturn n\n\tcase BytesType:\n\t\t_, n = ConsumeBytes(b)\n\t\treturn n\n\tcase StartGroupType:\n\t\tif depth < 0 {\n\t\t\treturn errCodeRecursionDepth\n\t\t}\n\t\tn0 := len(b)\n\t\tfor {\n\t\t\tnum2, typ2, n := ConsumeTag(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn n // forward error code\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tif typ2 == EndGroupType {\n\t\t\t\tif num != num2 {\n\t\t\t\t\treturn errCodeEndGroup\n\t\t\t\t}\n\t\t\t\treturn n0 - len(b)\n\t\t\t}\n\n\t\t\tn = consumeFieldValueD(num2, typ2, b, depth-1)\n\t\t\tif n < 0 {\n\t\t\t\treturn n // forward error code\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t}\n\tcase EndGroupType:\n\t\treturn errCodeEndGroup\n\tdefault:\n\t\treturn errCodeReserved\n\t}\n}\n\n// AppendTag encodes num and typ as a varint-encoded tag and appends it to b.\nfunc AppendTag(b []byte, num Number, typ Type) []byte {\n\treturn AppendVarint(b, EncodeTag(num, typ))\n}\n\n// ConsumeTag parses b as a varint-encoded tag, reporting its length.\n// This returns a negative length upon an error (see [ParseError]).\nfunc ConsumeTag(b []byte) (Number, Type, int) {\n\tv, n := ConsumeVarint(b)\n\tif n < 0 {\n\t\treturn 0, 0, n // forward error code\n\t}\n\tnum, typ := DecodeTag(v)\n\tif num < MinValidNumber {\n\t\treturn 0, 0, errCodeFieldNumber\n\t}\n\treturn num, typ, n\n}\n\nfunc SizeTag(num Number) int {\n\treturn SizeVarint(EncodeTag(num, 0)) // wire type has no effect on size\n}\n\n// AppendVarint appends v to b as a varint-encoded uint64.\nfunc AppendVarint(b []byte, v uint64) []byte {\n\tswitch {\n\tcase v < 1<<7:\n\t\tb = append(b, byte(v))\n\tcase v < 1<<14:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte(v>>7))\n\tcase v < 1<<21:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte(v>>14))\n\tcase v < 1<<28:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte(v>>21))\n\tcase v < 1<<35:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte(v>>28))\n\tcase v < 1<<42:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte(v>>35))\n\tcase v < 1<<49:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte(v>>42))\n\tcase v < 1<<56:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte((v>>42)&0x7f|0x80),\n\t\t\tbyte(v>>49))\n\tcase v < 1<<63:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte((v>>42)&0x7f|0x80),\n\t\t\tbyte((v>>49)&0x7f|0x80),\n\t\t\tbyte(v>>56))\n\tdefault:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte((v>>42)&0x7f|0x80),\n\t\t\tbyte((v>>49)&0x7f|0x80),\n\t\t\tbyte((v>>56)&0x7f|0x80),\n\t\t\t1)\n\t}\n\treturn b\n}\n\n// ConsumeVarint parses b as a varint-encoded uint64, reporting its length.\n// This returns a negative length upon an error (see [ParseError]).\nfunc ConsumeVarint(b []byte) (v uint64, n int) {\n\tvar y uint64\n\tif len(b) <= 0 {\n\t\treturn 0, errCodeTruncated\n\t}\n\tv = uint64(b[0])\n\tif v < 0x80 {\n\t\treturn v, 1\n\t}\n\tv -= 0x80\n\n\tif len(b) <= 1 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[1])\n\tv += y << 7\n\tif y < 0x80 {\n\t\treturn v, 2\n\t}\n\tv -= 0x80 << 7\n\n\tif len(b) <= 2 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[2])\n\tv += y << 14\n\tif y < 0x80 {\n\t\treturn v, 3\n\t}\n\tv -= 0x80 << 14\n\n\tif len(b) <= 3 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[3])\n\tv += y << 21\n\tif y < 0x80 {\n\t\treturn v, 4\n\t}\n\tv -= 0x80 << 21\n\n\tif len(b) <= 4 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[4])\n\tv += y << 28\n\tif y < 0x80 {\n\t\treturn v, 5\n\t}\n\tv -= 0x80 << 28\n\n\tif len(b) <= 5 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[5])\n\tv += y << 35\n\tif y < 0x80 {\n\t\treturn v, 6\n\t}\n\tv -= 0x80 << 35\n\n\tif len(b) <= 6 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[6])\n\tv += y << 42\n\tif y < 0x80 {\n\t\treturn v, 7\n\t}\n\tv -= 0x80 << 42\n\n\tif len(b) <= 7 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[7])\n\tv += y << 49\n\tif y < 0x80 {\n\t\treturn v, 8\n\t}\n\tv -= 0x80 << 49\n\n\tif len(b) <= 8 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[8])\n\tv += y << 56\n\tif y < 0x80 {\n\t\treturn v, 9\n\t}\n\tv -= 0x80 << 56\n\n\tif len(b) <= 9 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[9])\n\tv += y << 63\n\tif y < 2 {\n\t\treturn v, 10\n\t}\n\treturn 0, errCodeOverflow\n}\n\n// SizeVarint returns the encoded size of a varint.\n// The size is guaranteed to be within 1 and 10, inclusive.\nfunc SizeVarint(v uint64) int {\n\t// This computes 1 + (bits.Len64(v)-1)/7.\n\t// 9/64 is a good enough approximation of 1/7\n\t//\n\t// The Go compiler can translate the bits.LeadingZeros64 call into the LZCNT\n\t// instruction, which is very fast on CPUs from the last few years. The\n\t// specific way of expressing the calculation matches C++ Protobuf, see\n\t// https://godbolt.org/z/4P3h53oM4 for the C++ code and how gcc/clang\n\t// optimize that function for GOAMD64=v1 and GOAMD64=v3 (-march=haswell).\n\n\t// By OR'ing v with 1, we guarantee that v is never 0, without changing the\n\t// result of SizeVarint. LZCNT is not defined for 0, meaning the compiler\n\t// needs to add extra instructions to handle that case.\n\t//\n\t// The Go compiler currently (go1.24.4) does not make use of this knowledge.\n\t// This opportunity (removing the XOR instruction, which handles the 0 case)\n\t// results in a small (1%) performance win across CPU architectures.\n\t//\n\t// Independently of avoiding the 0 case, we need the v |= 1 line because\n\t// it allows the Go compiler to eliminate an extra XCHGL barrier.\n\tv |= 1\n\n\t// It would be clearer to write log2value := 63 - uint32(...), but\n\t// writing uint32(...) ^ 63 is much more efficient (-14% ARM, -20% Intel).\n\t// Proof of identity for our value range [0..63]:\n\t// https://go.dev/play/p/Pdn9hEWYakX\n\tlog2value := uint32(bits.LeadingZeros64(v)) ^ 63\n\treturn int((log2value*9 + (64 + 9)) / 64)\n}\n\n// AppendFixed32 appends v to b as a little-endian uint32.\nfunc AppendFixed32(b []byte, v uint32) []byte {\n\treturn append(b,\n\t\tbyte(v>>0),\n\t\tbyte(v>>8),\n\t\tbyte(v>>16),\n\t\tbyte(v>>24))\n}\n\n// ConsumeFixed32 parses b as a little-endian uint32, reporting its length.\n// This returns a negative length upon an error (see [ParseError]).\nfunc ConsumeFixed32(b []byte) (v uint32, n int) {\n\tif len(b) < 4 {\n\t\treturn 0, errCodeTruncated\n\t}\n\tv = uint32(b[0])<<0 | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24\n\treturn v, 4\n}\n\n// SizeFixed32 returns the encoded size of a fixed32; which is always 4.\nfunc SizeFixed32() int {\n\treturn 4\n}\n\n// AppendFixed64 appends v to b as a little-endian uint64.\nfunc AppendFixed64(b []byte, v uint64) []byte {\n\treturn append(b,\n\t\tbyte(v>>0),\n\t\tbyte(v>>8),\n\t\tbyte(v>>16),\n\t\tbyte(v>>24),\n\t\tbyte(v>>32),\n\t\tbyte(v>>40),\n\t\tbyte(v>>48),\n\t\tbyte(v>>56))\n}\n\n// ConsumeFixed64 parses b as a little-endian uint64, reporting its length.\n// This returns a negative length upon an error (see [ParseError]).\nfunc ConsumeFixed64(b []byte) (v uint64, n int) {\n\tif len(b) < 8 {\n\t\treturn 0, errCodeTruncated\n\t}\n\tv = uint64(b[0])<<0 | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n\treturn v, 8\n}\n\n// SizeFixed64 returns the encoded size of a fixed64; which is always 8.\nfunc SizeFixed64() int {\n\treturn 8\n}\n\n// AppendBytes appends v to b as a length-prefixed bytes value.\nfunc AppendBytes(b []byte, v []byte) []byte {\n\treturn append(AppendVarint(b, uint64(len(v))), v...)\n}\n\n// ConsumeBytes parses b as a length-prefixed bytes value, reporting its length.\n// This returns a negative length upon an error (see [ParseError]).\nfunc ConsumeBytes(b []byte) (v []byte, n int) {\n\tm, n := ConsumeVarint(b)\n\tif n < 0 {\n\t\treturn nil, n // forward error code\n\t}\n\tif m > uint64(len(b[n:])) {\n\t\treturn nil, errCodeTruncated\n\t}\n\treturn b[n:][:m], n + int(m)\n}\n\n// SizeBytes returns the encoded size of a length-prefixed bytes value,\n// given only the length.\nfunc SizeBytes(n int) int {\n\treturn SizeVarint(uint64(n)) + n\n}\n\n// AppendString appends v to b as a length-prefixed bytes value.\nfunc AppendString(b []byte, v string) []byte {\n\treturn append(AppendVarint(b, uint64(len(v))), v...)\n}\n\n// ConsumeString parses b as a length-prefixed bytes value, reporting its length.\n// This returns a negative length upon an error (see [ParseError]).\nfunc ConsumeString(b []byte) (v string, n int) {\n\tbb, n := ConsumeBytes(b)\n\treturn string(bb), n\n}\n\n// AppendGroup appends v to b as group value, with a trailing end group marker.\n// The value v must not contain the end marker.\nfunc AppendGroup(b []byte, num Number, v []byte) []byte {\n\treturn AppendVarint(append(b, v...), EncodeTag(num, EndGroupType))\n}\n\n// ConsumeGroup parses b as a group value until the trailing end group marker,\n// and verifies that the end marker matches the provided num. The value v\n// does not contain the end marker, while the length does contain the end marker.\n// This returns a negative length upon an error (see [ParseError]).\nfunc ConsumeGroup(num Number, b []byte) (v []byte, n int) {\n\tn = ConsumeFieldValue(num, StartGroupType, b)\n\tif n < 0 {\n\t\treturn nil, n // forward error code\n\t}\n\tb = b[:n]\n\n\t// Truncate off end group marker, but need to handle denormalized varints.\n\t// Assuming end marker is never 0 (which is always the case since\n\t// EndGroupType is non-zero), we can truncate all trailing bytes where the\n\t// lower 7 bits are all zero (implying that the varint is denormalized).\n\tfor len(b) > 0 && b[len(b)-1]&0x7f == 0 {\n\t\tb = b[:len(b)-1]\n\t}\n\tb = b[:len(b)-SizeTag(num)]\n\treturn b, n\n}\n\n// SizeGroup returns the encoded size of a group, given only the length.\nfunc SizeGroup(num Number, n int) int {\n\treturn n + SizeTag(num)\n}\n\n// DecodeTag decodes the field [Number] and wire [Type] from its unified form.\n// The [Number] is -1 if the decoded field number overflows int32.\n// Other than overflow, this does not check for field number validity.\nfunc DecodeTag(x uint64) (Number, Type) {\n\t// NOTE: MessageSet allows for larger field numbers than normal.\n\tif x>>3 > uint64(math.MaxInt32) {\n\t\treturn -1, 0\n\t}\n\treturn Number(x >> 3), Type(x & 7)\n}\n\n// EncodeTag encodes the field [Number] and wire [Type] into its unified form.\nfunc EncodeTag(num Number, typ Type) uint64 {\n\treturn uint64(num)<<3 | uint64(typ&7)\n}\n\n// DecodeZigZag decodes a zig-zag-encoded uint64 as an int64.\n//\n//\tInput:  {…,  5,  3,  1,  0,  2,  4,  6, …}\n//\tOutput: {…, -3, -2, -1,  0, +1, +2, +3, …}\nfunc DecodeZigZag(x uint64) int64 {\n\treturn int64(x>>1) ^ int64(x)<<63>>63\n}\n\n// EncodeZigZag encodes an int64 as a zig-zag-encoded uint64.\n//\n//\tInput:  {…, -3, -2, -1,  0, +1, +2, +3, …}\n//\tOutput: {…,  5,  3,  1,  0,  2,  4,  6, …}\nfunc EncodeZigZag(x int64) uint64 {\n\treturn uint64(x<<1) ^ uint64(x>>63)\n}\n\n// DecodeBool decodes a uint64 as a bool.\n//\n//\tInput:  {    0,    1,    2, …}\n//\tOutput: {false, true, true, …}\nfunc DecodeBool(x uint64) bool {\n\treturn x != 0\n}\n\n// EncodeBool encodes a bool as a uint64.\n//\n//\tInput:  {false, true}\n//\tOutput: {    0,    1}\nfunc EncodeBool(x bool) uint64 {\n\tif x {\n\t\treturn 1\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/descfmt/stringer.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package descfmt provides functionality to format descriptors.\npackage descfmt\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/detrand\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype list interface {\n\tLen() int\n\tpragma.DoNotImplement\n}\n\nfunc FormatList(s fmt.State, r rune, vs list) {\n\tio.WriteString(s, formatListOpt(vs, true, r == 'v' && (s.Flag('+') || s.Flag('#'))))\n}\nfunc formatListOpt(vs list, isRoot, allowMulti bool) string {\n\tstart, end := \"[\", \"]\"\n\tif isRoot {\n\t\tvar name string\n\t\tswitch vs.(type) {\n\t\tcase protoreflect.Names:\n\t\t\tname = \"Names\"\n\t\tcase protoreflect.FieldNumbers:\n\t\t\tname = \"FieldNumbers\"\n\t\tcase protoreflect.FieldRanges:\n\t\t\tname = \"FieldRanges\"\n\t\tcase protoreflect.EnumRanges:\n\t\t\tname = \"EnumRanges\"\n\t\tcase protoreflect.FileImports:\n\t\t\tname = \"FileImports\"\n\t\tcase protoreflect.Descriptor:\n\t\t\tname = reflect.ValueOf(vs).MethodByName(\"Get\").Type().Out(0).Name() + \"s\"\n\t\tdefault:\n\t\t\tname = reflect.ValueOf(vs).Elem().Type().Name()\n\t\t}\n\t\tstart, end = name+\"{\", \"}\"\n\t}\n\n\tvar ss []string\n\tswitch vs := vs.(type) {\n\tcase protoreflect.Names:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tss = append(ss, fmt.Sprint(vs.Get(i)))\n\t\t}\n\t\treturn start + joinStrings(ss, false) + end\n\tcase protoreflect.FieldNumbers:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tss = append(ss, fmt.Sprint(vs.Get(i)))\n\t\t}\n\t\treturn start + joinStrings(ss, false) + end\n\tcase protoreflect.FieldRanges:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tr := vs.Get(i)\n\t\t\tif r[0]+1 == r[1] {\n\t\t\t\tss = append(ss, fmt.Sprintf(\"%d\", r[0]))\n\t\t\t} else {\n\t\t\t\tss = append(ss, fmt.Sprintf(\"%d:%d\", r[0], r[1])) // enum ranges are end exclusive\n\t\t\t}\n\t\t}\n\t\treturn start + joinStrings(ss, false) + end\n\tcase protoreflect.EnumRanges:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tr := vs.Get(i)\n\t\t\tif r[0] == r[1] {\n\t\t\t\tss = append(ss, fmt.Sprintf(\"%d\", r[0]))\n\t\t\t} else {\n\t\t\t\tss = append(ss, fmt.Sprintf(\"%d:%d\", r[0], int64(r[1])+1)) // enum ranges are end inclusive\n\t\t\t}\n\t\t}\n\t\treturn start + joinStrings(ss, false) + end\n\tcase protoreflect.FileImports:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tvar rs records\n\t\t\trv := reflect.ValueOf(vs.Get(i))\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Path\"), \"Path\"},\n\t\t\t\t{rv.MethodByName(\"Package\"), \"Package\"},\n\t\t\t\t{rv.MethodByName(\"IsPublic\"), \"IsPublic\"},\n\t\t\t\t{rv.MethodByName(\"IsWeak\"), \"IsWeak\"},\n\t\t\t}...)\n\t\t\tss = append(ss, \"{\"+rs.Join()+\"}\")\n\t\t}\n\t\treturn start + joinStrings(ss, allowMulti) + end\n\tdefault:\n\t\t_, isEnumValue := vs.(protoreflect.EnumValueDescriptors)\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tm := reflect.ValueOf(vs).MethodByName(\"Get\")\n\t\t\tv := m.Call([]reflect.Value{reflect.ValueOf(i)})[0].Interface()\n\t\t\tss = append(ss, formatDescOpt(v.(protoreflect.Descriptor), false, allowMulti && !isEnumValue, nil))\n\t\t}\n\t\treturn start + joinStrings(ss, allowMulti && isEnumValue) + end\n\t}\n}\n\ntype methodAndName struct {\n\tmethod reflect.Value\n\tname   string\n}\n\nfunc FormatDesc(s fmt.State, r rune, t protoreflect.Descriptor) {\n\tio.WriteString(s, formatDescOpt(t, true, r == 'v' && (s.Flag('+') || s.Flag('#')), nil))\n}\n\nfunc InternalFormatDescOptForTesting(t protoreflect.Descriptor, isRoot, allowMulti bool, record func(string)) string {\n\treturn formatDescOpt(t, isRoot, allowMulti, record)\n}\n\nfunc formatDescOpt(t protoreflect.Descriptor, isRoot, allowMulti bool, record func(string)) string {\n\trv := reflect.ValueOf(t)\n\trt := rv.MethodByName(\"ProtoType\").Type().In(0)\n\n\tstart, end := \"{\", \"}\"\n\tif isRoot {\n\t\tstart = rt.Name() + \"{\"\n\t}\n\n\t_, isFile := t.(protoreflect.FileDescriptor)\n\trs := records{\n\t\tallowMulti: allowMulti,\n\t\trecord:     record,\n\t}\n\tif t.IsPlaceholder() {\n\t\tif isFile {\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Path\"), \"Path\"},\n\t\t\t\t{rv.MethodByName(\"Package\"), \"Package\"},\n\t\t\t\t{rv.MethodByName(\"IsPlaceholder\"), \"IsPlaceholder\"},\n\t\t\t}...)\n\t\t} else {\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"FullName\"), \"FullName\"},\n\t\t\t\t{rv.MethodByName(\"IsPlaceholder\"), \"IsPlaceholder\"},\n\t\t\t}...)\n\t\t}\n\t} else {\n\t\tswitch {\n\t\tcase isFile:\n\t\t\trs.Append(rv, methodAndName{rv.MethodByName(\"Syntax\"), \"Syntax\"})\n\t\tcase isRoot:\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Syntax\"), \"Syntax\"},\n\t\t\t\t{rv.MethodByName(\"FullName\"), \"FullName\"},\n\t\t\t}...)\n\t\tdefault:\n\t\t\trs.Append(rv, methodAndName{rv.MethodByName(\"Name\"), \"Name\"})\n\t\t}\n\t\tswitch t := t.(type) {\n\t\tcase protoreflect.FieldDescriptor:\n\t\t\taccessors := []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Number\"), \"Number\"},\n\t\t\t\t{rv.MethodByName(\"Cardinality\"), \"Cardinality\"},\n\t\t\t\t{rv.MethodByName(\"Kind\"), \"Kind\"},\n\t\t\t\t{rv.MethodByName(\"HasJSONName\"), \"HasJSONName\"},\n\t\t\t\t{rv.MethodByName(\"JSONName\"), \"JSONName\"},\n\t\t\t\t{rv.MethodByName(\"HasPresence\"), \"HasPresence\"},\n\t\t\t\t{rv.MethodByName(\"IsExtension\"), \"IsExtension\"},\n\t\t\t\t{rv.MethodByName(\"IsPacked\"), \"IsPacked\"},\n\t\t\t\t{rv.MethodByName(\"IsWeak\"), \"IsWeak\"},\n\t\t\t\t{rv.MethodByName(\"IsList\"), \"IsList\"},\n\t\t\t\t{rv.MethodByName(\"IsMap\"), \"IsMap\"},\n\t\t\t\t{rv.MethodByName(\"MapKey\"), \"MapKey\"},\n\t\t\t\t{rv.MethodByName(\"MapValue\"), \"MapValue\"},\n\t\t\t\t{rv.MethodByName(\"HasDefault\"), \"HasDefault\"},\n\t\t\t\t{rv.MethodByName(\"Default\"), \"Default\"},\n\t\t\t\t{rv.MethodByName(\"ContainingOneof\"), \"ContainingOneof\"},\n\t\t\t\t{rv.MethodByName(\"ContainingMessage\"), \"ContainingMessage\"},\n\t\t\t\t{rv.MethodByName(\"Message\"), \"Message\"},\n\t\t\t\t{rv.MethodByName(\"Enum\"), \"Enum\"},\n\t\t\t}\n\t\t\tfor _, s := range accessors {\n\t\t\t\tswitch s.name {\n\t\t\t\tcase \"MapKey\":\n\t\t\t\t\tif k := t.MapKey(); k != nil {\n\t\t\t\t\t\trs.recs = append(rs.recs, [2]string{\"MapKey\", k.Kind().String()})\n\t\t\t\t\t}\n\t\t\t\tcase \"MapValue\":\n\t\t\t\t\tif v := t.MapValue(); v != nil {\n\t\t\t\t\t\tswitch v.Kind() {\n\t\t\t\t\t\tcase protoreflect.EnumKind:\n\t\t\t\t\t\t\trs.AppendRecs(\"MapValue\", [2]string{\"MapValue\", string(v.Enum().FullName())})\n\t\t\t\t\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\t\t\t\t\trs.AppendRecs(\"MapValue\", [2]string{\"MapValue\", string(v.Message().FullName())})\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\trs.AppendRecs(\"MapValue\", [2]string{\"MapValue\", v.Kind().String()})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tcase \"ContainingOneof\":\n\t\t\t\t\tif od := t.ContainingOneof(); od != nil {\n\t\t\t\t\t\trs.AppendRecs(\"ContainingOneof\", [2]string{\"Oneof\", string(od.Name())})\n\t\t\t\t\t}\n\t\t\t\tcase \"ContainingMessage\":\n\t\t\t\t\tif t.IsExtension() {\n\t\t\t\t\t\trs.AppendRecs(\"ContainingMessage\", [2]string{\"Extendee\", string(t.ContainingMessage().FullName())})\n\t\t\t\t\t}\n\t\t\t\tcase \"Message\":\n\t\t\t\t\tif !t.IsMap() {\n\t\t\t\t\t\trs.Append(rv, s)\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\trs.Append(rv, s)\n\t\t\t\t}\n\t\t\t}\n\t\tcase protoreflect.OneofDescriptor:\n\t\t\tvar ss []string\n\t\t\tfs := t.Fields()\n\t\t\tfor i := 0; i < fs.Len(); i++ {\n\t\t\t\tss = append(ss, string(fs.Get(i).Name()))\n\t\t\t}\n\t\t\tif len(ss) > 0 {\n\t\t\t\trs.AppendRecs(\"Fields\", [2]string{\"Fields\", \"[\" + joinStrings(ss, false) + \"]\"})\n\t\t\t}\n\n\t\tcase protoreflect.FileDescriptor:\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Path\"), \"Path\"},\n\t\t\t\t{rv.MethodByName(\"Package\"), \"Package\"},\n\t\t\t\t{rv.MethodByName(\"Imports\"), \"Imports\"},\n\t\t\t\t{rv.MethodByName(\"Messages\"), \"Messages\"},\n\t\t\t\t{rv.MethodByName(\"Enums\"), \"Enums\"},\n\t\t\t\t{rv.MethodByName(\"Extensions\"), \"Extensions\"},\n\t\t\t\t{rv.MethodByName(\"Services\"), \"Services\"},\n\t\t\t}...)\n\n\t\tcase protoreflect.MessageDescriptor:\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"IsMapEntry\"), \"IsMapEntry\"},\n\t\t\t\t{rv.MethodByName(\"Fields\"), \"Fields\"},\n\t\t\t\t{rv.MethodByName(\"Oneofs\"), \"Oneofs\"},\n\t\t\t\t{rv.MethodByName(\"ReservedNames\"), \"ReservedNames\"},\n\t\t\t\t{rv.MethodByName(\"ReservedRanges\"), \"ReservedRanges\"},\n\t\t\t\t{rv.MethodByName(\"RequiredNumbers\"), \"RequiredNumbers\"},\n\t\t\t\t{rv.MethodByName(\"ExtensionRanges\"), \"ExtensionRanges\"},\n\t\t\t\t{rv.MethodByName(\"Messages\"), \"Messages\"},\n\t\t\t\t{rv.MethodByName(\"Enums\"), \"Enums\"},\n\t\t\t\t{rv.MethodByName(\"Extensions\"), \"Extensions\"},\n\t\t\t}...)\n\n\t\tcase protoreflect.EnumDescriptor:\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Values\"), \"Values\"},\n\t\t\t\t{rv.MethodByName(\"ReservedNames\"), \"ReservedNames\"},\n\t\t\t\t{rv.MethodByName(\"ReservedRanges\"), \"ReservedRanges\"},\n\t\t\t\t{rv.MethodByName(\"IsClosed\"), \"IsClosed\"},\n\t\t\t}...)\n\n\t\tcase protoreflect.EnumValueDescriptor:\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Number\"), \"Number\"},\n\t\t\t}...)\n\n\t\tcase protoreflect.ServiceDescriptor:\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Methods\"), \"Methods\"},\n\t\t\t}...)\n\n\t\tcase protoreflect.MethodDescriptor:\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Input\"), \"Input\"},\n\t\t\t\t{rv.MethodByName(\"Output\"), \"Output\"},\n\t\t\t\t{rv.MethodByName(\"IsStreamingClient\"), \"IsStreamingClient\"},\n\t\t\t\t{rv.MethodByName(\"IsStreamingServer\"), \"IsStreamingServer\"},\n\t\t\t}...)\n\t\t}\n\t\tif m := rv.MethodByName(\"GoType\"); m.IsValid() {\n\t\t\trs.Append(rv, methodAndName{m, \"GoType\"})\n\t\t}\n\t}\n\treturn start + rs.Join() + end\n}\n\ntype records struct {\n\trecs       [][2]string\n\tallowMulti bool\n\n\t// record is a function that will be called for every Append() or\n\t// AppendRecs() call, to be used for testing with the\n\t// InternalFormatDescOptForTesting function.\n\trecord func(string)\n}\n\nfunc (rs *records) AppendRecs(fieldName string, newRecs [2]string) {\n\tif rs.record != nil {\n\t\trs.record(fieldName)\n\t}\n\trs.recs = append(rs.recs, newRecs)\n}\n\nfunc (rs *records) Append(v reflect.Value, accessors ...methodAndName) {\n\tfor _, a := range accessors {\n\t\tif rs.record != nil {\n\t\t\trs.record(a.name)\n\t\t}\n\t\tvar rv reflect.Value\n\t\tif a.method.IsValid() {\n\t\t\trv = a.method.Call(nil)[0]\n\t\t}\n\t\tif v.Kind() == reflect.Struct && !rv.IsValid() {\n\t\t\trv = v.FieldByName(a.name)\n\t\t}\n\t\tif !rv.IsValid() {\n\t\t\tpanic(fmt.Sprintf(\"unknown accessor: %v.%s\", v.Type(), a.name))\n\t\t}\n\t\tif _, ok := rv.Interface().(protoreflect.Value); ok {\n\t\t\trv = rv.MethodByName(\"Interface\").Call(nil)[0]\n\t\t\tif !rv.IsNil() {\n\t\t\t\trv = rv.Elem()\n\t\t\t}\n\t\t}\n\n\t\t// Ignore zero values.\n\t\tvar isZero bool\n\t\tswitch rv.Kind() {\n\t\tcase reflect.Interface, reflect.Slice:\n\t\t\tisZero = rv.IsNil()\n\t\tcase reflect.Bool:\n\t\t\tisZero = rv.Bool() == false\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\tisZero = rv.Int() == 0\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t\tisZero = rv.Uint() == 0\n\t\tcase reflect.String:\n\t\t\tisZero = rv.String() == \"\"\n\t\t}\n\t\tif n, ok := rv.Interface().(list); ok {\n\t\t\tisZero = n.Len() == 0\n\t\t}\n\t\tif isZero {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Format the value.\n\t\tvar s string\n\t\tv := rv.Interface()\n\t\tswitch v := v.(type) {\n\t\tcase list:\n\t\t\ts = formatListOpt(v, false, rs.allowMulti)\n\t\tcase protoreflect.FieldDescriptor, protoreflect.OneofDescriptor, protoreflect.EnumValueDescriptor, protoreflect.MethodDescriptor:\n\t\t\ts = string(v.(protoreflect.Descriptor).Name())\n\t\tcase protoreflect.Descriptor:\n\t\t\ts = string(v.FullName())\n\t\tcase string:\n\t\t\ts = strconv.Quote(v)\n\t\tcase []byte:\n\t\t\ts = fmt.Sprintf(\"%q\", v)\n\t\tdefault:\n\t\t\ts = fmt.Sprint(v)\n\t\t}\n\t\trs.recs = append(rs.recs, [2]string{a.name, s})\n\t}\n}\n\nfunc (rs *records) Join() string {\n\tvar ss []string\n\n\t// In single line mode, simply join all records with commas.\n\tif !rs.allowMulti {\n\t\tfor _, r := range rs.recs {\n\t\t\tss = append(ss, r[0]+formatColon(0)+r[1])\n\t\t}\n\t\treturn joinStrings(ss, false)\n\t}\n\n\t// In allowMulti line mode, align single line records for more readable output.\n\tvar maxLen int\n\tflush := func(i int) {\n\t\tfor _, r := range rs.recs[len(ss):i] {\n\t\t\tss = append(ss, r[0]+formatColon(maxLen-len(r[0]))+r[1])\n\t\t}\n\t\tmaxLen = 0\n\t}\n\tfor i, r := range rs.recs {\n\t\tif isMulti := strings.Contains(r[1], \"\\n\"); isMulti {\n\t\t\tflush(i)\n\t\t\tss = append(ss, r[0]+formatColon(0)+strings.Join(strings.Split(r[1], \"\\n\"), \"\\n\\t\"))\n\t\t} else if maxLen < len(r[0]) {\n\t\t\tmaxLen = len(r[0])\n\t\t}\n\t}\n\tflush(len(rs.recs))\n\treturn joinStrings(ss, true)\n}\n\nfunc formatColon(padding int) string {\n\t// Deliberately introduce instability into the debug output to\n\t// discourage users from performing string comparisons.\n\t// This provides us flexibility to change the output in the future.\n\tif detrand.Bool() {\n\t\treturn \":\" + strings.Repeat(\" \", 1+padding) // use non-breaking spaces (U+00a0)\n\t} else {\n\t\treturn \":\" + strings.Repeat(\" \", 1+padding) // use regular spaces (U+0020)\n\t}\n}\n\nfunc joinStrings(ss []string, isMulti bool) string {\n\tif len(ss) == 0 {\n\t\treturn \"\"\n\t}\n\tif isMulti {\n\t\treturn \"\\n\\t\" + strings.Join(ss, \"\\n\\t\") + \"\\n\"\n\t}\n\treturn strings.Join(ss, \", \")\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/descopts/options.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package descopts contains the nil pointers to concrete descriptor options.\n//\n// This package exists as a form of reverse dependency injection so that certain\n// packages (e.g., internal/filedesc and internal/filetype can avoid a direct\n// dependency on the descriptor proto package).\npackage descopts\n\nimport \"google.golang.org/protobuf/reflect/protoreflect\"\n\n// These variables are set by the init function in descriptor.pb.go via logic\n// in internal/filetype. In other words, so long as the descriptor proto package\n// is linked in, these variables will be populated.\n//\n// Each variable is populated with a nil pointer to the options struct.\nvar (\n\tFile           protoreflect.ProtoMessage\n\tEnum           protoreflect.ProtoMessage\n\tEnumValue      protoreflect.ProtoMessage\n\tMessage        protoreflect.ProtoMessage\n\tField          protoreflect.ProtoMessage\n\tOneof          protoreflect.ProtoMessage\n\tExtensionRange protoreflect.ProtoMessage\n\tService        protoreflect.ProtoMessage\n\tMethod         protoreflect.ProtoMessage\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/detrand/rand.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package detrand provides deterministically random functionality.\n//\n// The pseudo-randomness of these functions is seeded by the program binary\n// itself and guarantees that the output does not change within a program,\n// while ensuring that the output is unstable across different builds.\npackage detrand\n\nimport (\n\t\"encoding/binary\"\n\t\"hash/fnv\"\n\t\"os\"\n)\n\n// Disable disables detrand such that all functions returns the zero value.\n// This function is not concurrent-safe and must be called during program init.\nfunc Disable() {\n\trandSeed = 0\n}\n\n// Bool returns a deterministically random boolean.\nfunc Bool() bool {\n\treturn randSeed%2 == 1\n}\n\n// Intn returns a deterministically random integer between 0 and n-1, inclusive.\nfunc Intn(n int) int {\n\tif n <= 0 {\n\t\tpanic(\"must be positive\")\n\t}\n\treturn int(randSeed % uint64(n))\n}\n\n// randSeed is a best-effort at an approximate hash of the Go binary.\nvar randSeed = binaryHash()\n\nfunc binaryHash() uint64 {\n\t// Open the Go binary.\n\ts, err := os.Executable()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tf, err := os.Open(s)\n\tif err != nil {\n\t\treturn 0\n\t}\n\tdefer f.Close()\n\n\t// Hash the size and several samples of the Go binary.\n\tconst numSamples = 8\n\tvar buf [64]byte\n\th := fnv.New64()\n\tfi, err := f.Stat()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tbinary.LittleEndian.PutUint64(buf[:8], uint64(fi.Size()))\n\th.Write(buf[:8])\n\tfor i := int64(0); i < numSamples; i++ {\n\t\tif _, err := f.ReadAt(buf[:], i*fi.Size()/numSamples); err != nil {\n\t\t\treturn 0\n\t\t}\n\t\th.Write(buf[:])\n\t}\n\treturn h.Sum64()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package editiondefaults contains the binary representation of the editions\n// defaults.\npackage editiondefaults\n\nimport _ \"embed\"\n\n//go:embed editions_defaults.binpb\nvar Defaults []byte\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/editionssupport/editions.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package editionssupport defines constants for editions that are supported.\npackage editionssupport\n\nimport \"google.golang.org/protobuf/types/descriptorpb\"\n\nconst (\n\tMinimum = descriptorpb.Edition_EDITION_PROTO2\n\tMaximum = descriptorpb.Edition_EDITION_2024\n\n\t// MaximumKnown is the maximum edition that is known to Go Protobuf, but not\n\t// declared as supported. In other words: end users cannot use it, but\n\t// testprotos inside Go Protobuf can.\n\tMaximumKnown = descriptorpb.Edition_EDITION_2024\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/defval/default.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package defval marshals and unmarshals textual forms of default values.\n//\n// This package handles both the form historically used in Go struct field tags\n// and also the form used by google.protobuf.FieldDescriptorProto.default_value\n// since they differ in superficial ways.\npackage defval\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\n\tptext \"google.golang.org/protobuf/internal/encoding/text\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Format is the serialization format used to represent the default value.\ntype Format int\n\nconst (\n\t_ Format = iota\n\n\t// Descriptor uses the serialization format that protoc uses with the\n\t// google.protobuf.FieldDescriptorProto.default_value field.\n\tDescriptor\n\n\t// GoTag uses the historical serialization format in Go struct field tags.\n\tGoTag\n)\n\n// Unmarshal deserializes the default string s according to the given kind k.\n// When k is an enum, a list of enum value descriptors must be provided.\nfunc Unmarshal(s string, k protoreflect.Kind, evs protoreflect.EnumValueDescriptors, f Format) (protoreflect.Value, protoreflect.EnumValueDescriptor, error) {\n\tswitch k {\n\tcase protoreflect.BoolKind:\n\t\tif f == GoTag {\n\t\t\tswitch s {\n\t\t\tcase \"1\":\n\t\t\t\treturn protoreflect.ValueOfBool(true), nil, nil\n\t\t\tcase \"0\":\n\t\t\t\treturn protoreflect.ValueOfBool(false), nil, nil\n\t\t\t}\n\t\t} else {\n\t\t\tswitch s {\n\t\t\tcase \"true\":\n\t\t\t\treturn protoreflect.ValueOfBool(true), nil, nil\n\t\t\tcase \"false\":\n\t\t\t\treturn protoreflect.ValueOfBool(false), nil, nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.EnumKind:\n\t\tif f == GoTag {\n\t\t\t// Go tags use the numeric form of the enum value.\n\t\t\tif n, err := strconv.ParseInt(s, 10, 32); err == nil {\n\t\t\t\tif ev := evs.ByNumber(protoreflect.EnumNumber(n)); ev != nil {\n\t\t\t\t\treturn protoreflect.ValueOfEnum(ev.Number()), ev, nil\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Descriptor default_value use the enum identifier.\n\t\t\tev := evs.ByName(protoreflect.Name(s))\n\t\t\tif ev != nil {\n\t\t\t\treturn protoreflect.ValueOfEnum(ev.Number()), ev, nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif v, err := strconv.ParseInt(s, 10, 32); err == nil {\n\t\t\treturn protoreflect.ValueOfInt32(int32(v)), nil, nil\n\t\t}\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif v, err := strconv.ParseInt(s, 10, 64); err == nil {\n\t\t\treturn protoreflect.ValueOfInt64(int64(v)), nil, nil\n\t\t}\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif v, err := strconv.ParseUint(s, 10, 32); err == nil {\n\t\t\treturn protoreflect.ValueOfUint32(uint32(v)), nil, nil\n\t\t}\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif v, err := strconv.ParseUint(s, 10, 64); err == nil {\n\t\t\treturn protoreflect.ValueOfUint64(uint64(v)), nil, nil\n\t\t}\n\tcase protoreflect.FloatKind, protoreflect.DoubleKind:\n\t\tvar v float64\n\t\tvar err error\n\t\tswitch s {\n\t\tcase \"-inf\":\n\t\t\tv = math.Inf(-1)\n\t\tcase \"inf\":\n\t\t\tv = math.Inf(+1)\n\t\tcase \"nan\":\n\t\t\tv = math.NaN()\n\t\tdefault:\n\t\t\tv, err = strconv.ParseFloat(s, 64)\n\t\t}\n\t\tif err == nil {\n\t\t\tif k == protoreflect.FloatKind {\n\t\t\t\treturn protoreflect.ValueOfFloat32(float32(v)), nil, nil\n\t\t\t} else {\n\t\t\t\treturn protoreflect.ValueOfFloat64(float64(v)), nil, nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.StringKind:\n\t\t// String values are already unescaped and can be used as is.\n\t\treturn protoreflect.ValueOfString(s), nil, nil\n\tcase protoreflect.BytesKind:\n\t\tif b, ok := unmarshalBytes(s); ok {\n\t\t\treturn protoreflect.ValueOfBytes(b), nil, nil\n\t\t}\n\t}\n\treturn protoreflect.Value{}, nil, errors.New(\"could not parse value for %v: %q\", k, s)\n}\n\n// Marshal serializes v as the default string according to the given kind k.\n// When specifying the Descriptor format for an enum kind, the associated\n// enum value descriptor must be provided.\nfunc Marshal(v protoreflect.Value, ev protoreflect.EnumValueDescriptor, k protoreflect.Kind, f Format) (string, error) {\n\tswitch k {\n\tcase protoreflect.BoolKind:\n\t\tif f == GoTag {\n\t\t\tif v.Bool() {\n\t\t\t\treturn \"1\", nil\n\t\t\t} else {\n\t\t\t\treturn \"0\", nil\n\t\t\t}\n\t\t} else {\n\t\t\tif v.Bool() {\n\t\t\t\treturn \"true\", nil\n\t\t\t} else {\n\t\t\t\treturn \"false\", nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.EnumKind:\n\t\tif f == GoTag {\n\t\t\treturn strconv.FormatInt(int64(v.Enum()), 10), nil\n\t\t} else {\n\t\t\treturn string(ev.Name()), nil\n\t\t}\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\treturn strconv.FormatInt(v.Int(), 10), nil\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind, protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\treturn strconv.FormatUint(v.Uint(), 10), nil\n\tcase protoreflect.FloatKind, protoreflect.DoubleKind:\n\t\tf := v.Float()\n\t\tswitch {\n\t\tcase math.IsInf(f, -1):\n\t\t\treturn \"-inf\", nil\n\t\tcase math.IsInf(f, +1):\n\t\t\treturn \"inf\", nil\n\t\tcase math.IsNaN(f):\n\t\t\treturn \"nan\", nil\n\t\tdefault:\n\t\t\tif k == protoreflect.FloatKind {\n\t\t\t\treturn strconv.FormatFloat(f, 'g', -1, 32), nil\n\t\t\t} else {\n\t\t\t\treturn strconv.FormatFloat(f, 'g', -1, 64), nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.StringKind:\n\t\t// String values are serialized as is without any escaping.\n\t\treturn v.String(), nil\n\tcase protoreflect.BytesKind:\n\t\tif s, ok := marshalBytes(v.Bytes()); ok {\n\t\t\treturn s, nil\n\t\t}\n\t}\n\treturn \"\", errors.New(\"could not format value for %v: %v\", k, v)\n}\n\n// unmarshalBytes deserializes bytes by applying C unescaping.\nfunc unmarshalBytes(s string) ([]byte, bool) {\n\t// Bytes values use the same escaping as the text format,\n\t// however they lack the surrounding double quotes.\n\tv, err := ptext.UnmarshalString(`\"` + s + `\"`)\n\tif err != nil {\n\t\treturn nil, false\n\t}\n\treturn []byte(v), true\n}\n\n// marshalBytes serializes bytes by using C escaping.\n// To match the exact output of protoc, this is identical to the\n// CEscape function in strutil.cc of the protoc source code.\nfunc marshalBytes(b []byte) (string, bool) {\n\tvar s []byte\n\tfor _, c := range b {\n\t\tswitch c {\n\t\tcase '\\n':\n\t\t\ts = append(s, `\\n`...)\n\t\tcase '\\r':\n\t\t\ts = append(s, `\\r`...)\n\t\tcase '\\t':\n\t\t\ts = append(s, `\\t`...)\n\t\tcase '\"':\n\t\t\ts = append(s, `\\\"`...)\n\t\tcase '\\'':\n\t\t\ts = append(s, `\\'`...)\n\t\tcase '\\\\':\n\t\t\ts = append(s, `\\\\`...)\n\t\tdefault:\n\t\t\tif printableASCII := c >= 0x20 && c <= 0x7e; printableASCII {\n\t\t\t\ts = append(s, c)\n\t\t\t} else {\n\t\t\t\ts = append(s, fmt.Sprintf(`\\%03o`, c)...)\n\t\t\t}\n\t\t}\n\t}\n\treturn string(s), true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/json/decode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage json\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"regexp\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n)\n\n// call specifies which Decoder method was invoked.\ntype call uint8\n\nconst (\n\treadCall call = iota\n\tpeekCall\n)\n\nconst unexpectedFmt = \"unexpected token %s\"\n\n// ErrUnexpectedEOF means that EOF was encountered in the middle of the input.\nvar ErrUnexpectedEOF = errors.New(\"%v\", io.ErrUnexpectedEOF)\n\n// Decoder is a token-based JSON decoder.\ntype Decoder struct {\n\t// lastCall is last method called, either readCall or peekCall.\n\t// Initial value is readCall.\n\tlastCall call\n\n\t// lastToken contains the last read token.\n\tlastToken Token\n\n\t// lastErr contains the last read error.\n\tlastErr error\n\n\t// openStack is a stack containing ObjectOpen and ArrayOpen values. The\n\t// top of stack represents the object or the array the current value is\n\t// directly located in.\n\topenStack []Kind\n\n\t// orig is used in reporting line and column.\n\torig []byte\n\t// in contains the unconsumed input.\n\tin []byte\n}\n\n// NewDecoder returns a Decoder to read the given []byte.\nfunc NewDecoder(b []byte) *Decoder {\n\treturn &Decoder{orig: b, in: b}\n}\n\n// Peek looks ahead and returns the next token kind without advancing a read.\nfunc (d *Decoder) Peek() (Token, error) {\n\tdefer func() { d.lastCall = peekCall }()\n\tif d.lastCall == readCall {\n\t\td.lastToken, d.lastErr = d.Read()\n\t}\n\treturn d.lastToken, d.lastErr\n}\n\n// Read returns the next JSON token.\n// It will return an error if there is no valid token.\nfunc (d *Decoder) Read() (Token, error) {\n\tconst scalar = Null | Bool | Number | String\n\n\tdefer func() { d.lastCall = readCall }()\n\tif d.lastCall == peekCall {\n\t\treturn d.lastToken, d.lastErr\n\t}\n\n\ttok, err := d.parseNext()\n\tif err != nil {\n\t\treturn Token{}, err\n\t}\n\n\tswitch tok.kind {\n\tcase EOF:\n\t\tif len(d.openStack) != 0 ||\n\t\t\td.lastToken.kind&scalar|ObjectClose|ArrayClose == 0 {\n\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t}\n\n\tcase Null:\n\t\tif !d.isValueNext() {\n\t\t\treturn Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())\n\t\t}\n\n\tcase Bool, Number:\n\t\tif !d.isValueNext() {\n\t\t\treturn Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())\n\t\t}\n\n\tcase String:\n\t\tif d.isValueNext() {\n\t\t\tbreak\n\t\t}\n\t\t// This string token should only be for a field name.\n\t\tif d.lastToken.kind&(ObjectOpen|comma) == 0 {\n\t\t\treturn Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())\n\t\t}\n\t\tif len(d.in) == 0 {\n\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t}\n\t\tif c := d.in[0]; c != ':' {\n\t\t\treturn Token{}, d.newSyntaxError(d.currPos(), `unexpected character %s, missing \":\" after field name`, string(c))\n\t\t}\n\t\ttok.kind = Name\n\t\td.consume(1)\n\n\tcase ObjectOpen, ArrayOpen:\n\t\tif !d.isValueNext() {\n\t\t\treturn Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())\n\t\t}\n\t\td.openStack = append(d.openStack, tok.kind)\n\n\tcase ObjectClose:\n\t\tif len(d.openStack) == 0 ||\n\t\t\td.lastToken.kind&(Name|comma) != 0 ||\n\t\t\td.openStack[len(d.openStack)-1] != ObjectOpen {\n\t\t\treturn Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())\n\t\t}\n\t\td.openStack = d.openStack[:len(d.openStack)-1]\n\n\tcase ArrayClose:\n\t\tif len(d.openStack) == 0 ||\n\t\t\td.lastToken.kind == comma ||\n\t\t\td.openStack[len(d.openStack)-1] != ArrayOpen {\n\t\t\treturn Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())\n\t\t}\n\t\td.openStack = d.openStack[:len(d.openStack)-1]\n\n\tcase comma:\n\t\tif len(d.openStack) == 0 ||\n\t\t\td.lastToken.kind&(scalar|ObjectClose|ArrayClose) == 0 {\n\t\t\treturn Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())\n\t\t}\n\t}\n\n\t// Update d.lastToken only after validating token to be in the right sequence.\n\td.lastToken = tok\n\n\tif d.lastToken.kind == comma {\n\t\treturn d.Read()\n\t}\n\treturn tok, nil\n}\n\n// Any sequence that looks like a non-delimiter (for error reporting).\nvar errRegexp = regexp.MustCompile(`^([-+._a-zA-Z0-9]{1,32}|.)`)\n\n// parseNext parses for the next JSON token. It returns a Token object for\n// different types, except for Name. It does not handle whether the next token\n// is in a valid sequence or not.\nfunc (d *Decoder) parseNext() (Token, error) {\n\t// Trim leading spaces.\n\td.consume(0)\n\n\tin := d.in\n\tif len(in) == 0 {\n\t\treturn d.consumeToken(EOF, 0), nil\n\t}\n\n\tswitch in[0] {\n\tcase 'n':\n\t\tif n := matchWithDelim(\"null\", in); n != 0 {\n\t\t\treturn d.consumeToken(Null, n), nil\n\t\t}\n\n\tcase 't':\n\t\tif n := matchWithDelim(\"true\", in); n != 0 {\n\t\t\treturn d.consumeBoolToken(true, n), nil\n\t\t}\n\n\tcase 'f':\n\t\tif n := matchWithDelim(\"false\", in); n != 0 {\n\t\t\treturn d.consumeBoolToken(false, n), nil\n\t\t}\n\n\tcase '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':\n\t\tif n, ok := parseNumber(in); ok {\n\t\t\treturn d.consumeToken(Number, n), nil\n\t\t}\n\n\tcase '\"':\n\t\ts, n, err := d.parseString(in)\n\t\tif err != nil {\n\t\t\treturn Token{}, err\n\t\t}\n\t\treturn d.consumeStringToken(s, n), nil\n\n\tcase '{':\n\t\treturn d.consumeToken(ObjectOpen, 1), nil\n\n\tcase '}':\n\t\treturn d.consumeToken(ObjectClose, 1), nil\n\n\tcase '[':\n\t\treturn d.consumeToken(ArrayOpen, 1), nil\n\n\tcase ']':\n\t\treturn d.consumeToken(ArrayClose, 1), nil\n\n\tcase ',':\n\t\treturn d.consumeToken(comma, 1), nil\n\t}\n\treturn Token{}, d.newSyntaxError(d.currPos(), \"invalid value %s\", errRegexp.Find(in))\n}\n\n// newSyntaxError returns an error with line and column information useful for\n// syntax errors.\nfunc (d *Decoder) newSyntaxError(pos int, f string, x ...any) error {\n\te := errors.New(f, x...)\n\tline, column := d.Position(pos)\n\treturn errors.New(\"syntax error (line %d:%d): %v\", line, column, e)\n}\n\n// Position returns line and column number of given index of the original input.\n// It will panic if index is out of range.\nfunc (d *Decoder) Position(idx int) (line int, column int) {\n\tb := d.orig[:idx]\n\tline = bytes.Count(b, []byte(\"\\n\")) + 1\n\tif i := bytes.LastIndexByte(b, '\\n'); i >= 0 {\n\t\tb = b[i+1:]\n\t}\n\tcolumn = utf8.RuneCount(b) + 1 // ignore multi-rune characters\n\treturn line, column\n}\n\n// currPos returns the current index position of d.in from d.orig.\nfunc (d *Decoder) currPos() int {\n\treturn len(d.orig) - len(d.in)\n}\n\n// matchWithDelim matches s with the input b and verifies that the match\n// terminates with a delimiter of some form (e.g., r\"[^-+_.a-zA-Z0-9]\").\n// As a special case, EOF is considered a delimiter. It returns the length of s\n// if there is a match, else 0.\nfunc matchWithDelim(s string, b []byte) int {\n\tif !bytes.HasPrefix(b, []byte(s)) {\n\t\treturn 0\n\t}\n\n\tn := len(s)\n\tif n < len(b) && isNotDelim(b[n]) {\n\t\treturn 0\n\t}\n\treturn n\n}\n\n// isNotDelim returns true if given byte is a not delimiter character.\nfunc isNotDelim(c byte) bool {\n\treturn (c == '-' || c == '+' || c == '.' || c == '_' ||\n\t\t('a' <= c && c <= 'z') ||\n\t\t('A' <= c && c <= 'Z') ||\n\t\t('0' <= c && c <= '9'))\n}\n\n// consume consumes n bytes of input and any subsequent whitespace.\nfunc (d *Decoder) consume(n int) {\n\td.in = d.in[n:]\n\tfor len(d.in) > 0 {\n\t\tswitch d.in[0] {\n\t\tcase ' ', '\\n', '\\r', '\\t':\n\t\t\td.in = d.in[1:]\n\t\tdefault:\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// isValueNext returns true if next type should be a JSON value: Null,\n// Number, String or Bool.\nfunc (d *Decoder) isValueNext() bool {\n\tif len(d.openStack) == 0 {\n\t\treturn d.lastToken.kind == 0\n\t}\n\n\tstart := d.openStack[len(d.openStack)-1]\n\tswitch start {\n\tcase ObjectOpen:\n\t\treturn d.lastToken.kind&Name != 0\n\tcase ArrayOpen:\n\t\treturn d.lastToken.kind&(ArrayOpen|comma) != 0\n\t}\n\tpanic(fmt.Sprintf(\n\t\t\"unreachable logic in Decoder.isValueNext, lastToken.kind: %v, openStack: %v\",\n\t\td.lastToken.kind, start))\n}\n\n// consumeToken constructs a Token for given Kind with raw value derived from\n// current d.in and given size, and consumes the given size-length of it.\nfunc (d *Decoder) consumeToken(kind Kind, size int) Token {\n\ttok := Token{\n\t\tkind: kind,\n\t\traw:  d.in[:size],\n\t\tpos:  len(d.orig) - len(d.in),\n\t}\n\td.consume(size)\n\treturn tok\n}\n\n// consumeBoolToken constructs a Token for a Bool kind with raw value derived from\n// current d.in and given size.\nfunc (d *Decoder) consumeBoolToken(b bool, size int) Token {\n\ttok := Token{\n\t\tkind: Bool,\n\t\traw:  d.in[:size],\n\t\tpos:  len(d.orig) - len(d.in),\n\t\tboo:  b,\n\t}\n\td.consume(size)\n\treturn tok\n}\n\n// consumeStringToken constructs a Token for a String kind with raw value derived\n// from current d.in and given size.\nfunc (d *Decoder) consumeStringToken(s string, size int) Token {\n\ttok := Token{\n\t\tkind: String,\n\t\traw:  d.in[:size],\n\t\tpos:  len(d.orig) - len(d.in),\n\t\tstr:  s,\n\t}\n\td.consume(size)\n\treturn tok\n}\n\n// Clone returns a copy of the Decoder for use in reading ahead the next JSON\n// object, array or other values without affecting current Decoder.\nfunc (d *Decoder) Clone() *Decoder {\n\tret := *d\n\tret.openStack = append([]Kind(nil), ret.openStack...)\n\treturn &ret\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/json/decode_number.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage json\n\nimport (\n\t\"bytes\"\n\t\"strconv\"\n)\n\n// parseNumber reads the given []byte for a valid JSON number. If it is valid,\n// it returns the number of bytes.  Parsing logic follows the definition in\n// https://tools.ietf.org/html/rfc7159#section-6, and is based off\n// encoding/json.isValidNumber function.\nfunc parseNumber(input []byte) (int, bool) {\n\tvar n int\n\n\ts := input\n\tif len(s) == 0 {\n\t\treturn 0, false\n\t}\n\n\t// Optional -\n\tif s[0] == '-' {\n\t\ts = s[1:]\n\t\tn++\n\t\tif len(s) == 0 {\n\t\t\treturn 0, false\n\t\t}\n\t}\n\n\t// Digits\n\tswitch {\n\tcase s[0] == '0':\n\t\ts = s[1:]\n\t\tn++\n\n\tcase '1' <= s[0] && s[0] <= '9':\n\t\ts = s[1:]\n\t\tn++\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\n\tdefault:\n\t\treturn 0, false\n\t}\n\n\t// . followed by 1 or more digits.\n\tif len(s) >= 2 && s[0] == '.' && '0' <= s[1] && s[1] <= '9' {\n\t\ts = s[2:]\n\t\tn += 2\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t}\n\n\t// e or E followed by an optional - or + and\n\t// 1 or more digits.\n\tif len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') {\n\t\ts = s[1:]\n\t\tn++\n\t\tif s[0] == '+' || s[0] == '-' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t\tif len(s) == 0 {\n\t\t\t\treturn 0, false\n\t\t\t}\n\t\t}\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t}\n\n\t// Check that next byte is a delimiter or it is at the end.\n\tif n < len(input) && isNotDelim(input[n]) {\n\t\treturn 0, false\n\t}\n\n\treturn n, true\n}\n\n// numberParts is the result of parsing out a valid JSON number. It contains\n// the parts of a number. The parts are used for integer conversion.\ntype numberParts struct {\n\tneg  bool\n\tintp []byte\n\tfrac []byte\n\texp  []byte\n}\n\n// parseNumber constructs numberParts from given []byte. The logic here is\n// similar to consumeNumber above with the difference of having to construct\n// numberParts. The slice fields in numberParts are subslices of the input.\nfunc parseNumberParts(input []byte) (numberParts, bool) {\n\tvar neg bool\n\tvar intp []byte\n\tvar frac []byte\n\tvar exp []byte\n\n\ts := input\n\tif len(s) == 0 {\n\t\treturn numberParts{}, false\n\t}\n\n\t// Optional -\n\tif s[0] == '-' {\n\t\tneg = true\n\t\ts = s[1:]\n\t\tif len(s) == 0 {\n\t\t\treturn numberParts{}, false\n\t\t}\n\t}\n\n\t// Digits\n\tswitch {\n\tcase s[0] == '0':\n\t\t// Skip first 0 and no need to store.\n\t\ts = s[1:]\n\n\tcase '1' <= s[0] && s[0] <= '9':\n\t\tintp = s\n\t\tn := 1\n\t\ts = s[1:]\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\tintp = intp[:n]\n\n\tdefault:\n\t\treturn numberParts{}, false\n\t}\n\n\t// . followed by 1 or more digits.\n\tif len(s) >= 2 && s[0] == '.' && '0' <= s[1] && s[1] <= '9' {\n\t\tfrac = s[1:]\n\t\tn := 1\n\t\ts = s[2:]\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\tfrac = frac[:n]\n\t}\n\n\t// e or E followed by an optional - or + and\n\t// 1 or more digits.\n\tif len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') {\n\t\ts = s[1:]\n\t\texp = s\n\t\tn := 0\n\t\tif s[0] == '+' || s[0] == '-' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t\tif len(s) == 0 {\n\t\t\t\treturn numberParts{}, false\n\t\t\t}\n\t\t}\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\texp = exp[:n]\n\t}\n\n\treturn numberParts{\n\t\tneg:  neg,\n\t\tintp: intp,\n\t\tfrac: bytes.TrimRight(frac, \"0\"), // Remove unnecessary 0s to the right.\n\t\texp:  exp,\n\t}, true\n}\n\n// normalizeToIntString returns an integer string in normal form without the\n// E-notation for given numberParts. It will return false if it is not an\n// integer or if the exponent exceeds than max/min int value.\nfunc normalizeToIntString(n numberParts) (string, bool) {\n\tintpSize := len(n.intp)\n\tfracSize := len(n.frac)\n\n\tif intpSize == 0 && fracSize == 0 {\n\t\treturn \"0\", true\n\t}\n\n\tvar exp int\n\tif len(n.exp) > 0 {\n\t\ti, err := strconv.ParseInt(string(n.exp), 10, 32)\n\t\tif err != nil {\n\t\t\treturn \"\", false\n\t\t}\n\t\texp = int(i)\n\t}\n\n\tvar num []byte\n\tif exp >= 0 {\n\t\t// For positive E, shift fraction digits into integer part and also pad\n\t\t// with zeroes as needed.\n\n\t\t// If there are more digits in fraction than the E value, then the\n\t\t// number is not an integer.\n\t\tif fracSize > exp {\n\t\t\treturn \"\", false\n\t\t}\n\n\t\t// Make sure resulting digits are within max value limit to avoid\n\t\t// unnecessarily constructing a large byte slice that may simply fail\n\t\t// later on.\n\t\tconst maxDigits = 20 // Max uint64 value has 20 decimal digits.\n\t\tif intpSize+exp > maxDigits {\n\t\t\treturn \"\", false\n\t\t}\n\n\t\t// Set cap to make a copy of integer part when appended.\n\t\tnum = n.intp[:len(n.intp):len(n.intp)]\n\t\tnum = append(num, n.frac...)\n\t\tfor i := 0; i < exp-fracSize; i++ {\n\t\t\tnum = append(num, '0')\n\t\t}\n\t} else {\n\t\t// For negative E, shift digits in integer part out.\n\n\t\t// If there are fractions, then the number is not an integer.\n\t\tif fracSize > 0 {\n\t\t\treturn \"\", false\n\t\t}\n\n\t\t// index is where the decimal point will be after adjusting for negative\n\t\t// exponent.\n\t\tindex := intpSize + exp\n\t\tif index < 0 {\n\t\t\treturn \"\", false\n\t\t}\n\n\t\tnum = n.intp\n\t\t// If any of the digits being shifted to the right of the decimal point\n\t\t// is non-zero, then the number is not an integer.\n\t\tfor i := index; i < intpSize; i++ {\n\t\t\tif num[i] != '0' {\n\t\t\t\treturn \"\", false\n\t\t\t}\n\t\t}\n\t\tnum = num[:index]\n\t}\n\n\tif n.neg {\n\t\treturn \"-\" + string(num), true\n\t}\n\treturn string(num), true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/json/decode_string.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage json\n\nimport (\n\t\"strconv\"\n\t\"unicode\"\n\t\"unicode/utf16\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/strs\"\n)\n\nfunc (d *Decoder) parseString(in []byte) (string, int, error) {\n\tin0 := in\n\tif len(in) == 0 {\n\t\treturn \"\", 0, ErrUnexpectedEOF\n\t}\n\tif in[0] != '\"' {\n\t\treturn \"\", 0, d.newSyntaxError(d.currPos(), \"invalid character %q at start of string\", in[0])\n\t}\n\tin = in[1:]\n\ti := indexNeedEscapeInBytes(in)\n\tin, out := in[i:], in[:i:i] // set cap to prevent mutations\n\tfor len(in) > 0 {\n\t\tswitch r, n := utf8.DecodeRune(in); {\n\t\tcase r == utf8.RuneError && n == 1:\n\t\t\treturn \"\", 0, d.newSyntaxError(d.currPos(), \"invalid UTF-8 in string\")\n\t\tcase r < ' ':\n\t\t\treturn \"\", 0, d.newSyntaxError(d.currPos(), \"invalid character %q in string\", r)\n\t\tcase r == '\"':\n\t\t\tin = in[1:]\n\t\t\tn := len(in0) - len(in)\n\t\t\treturn string(out), n, nil\n\t\tcase r == '\\\\':\n\t\t\tif len(in) < 2 {\n\t\t\t\treturn \"\", 0, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch r := in[1]; r {\n\t\t\tcase '\"', '\\\\', '/':\n\t\t\t\tin, out = in[2:], append(out, r)\n\t\t\tcase 'b':\n\t\t\t\tin, out = in[2:], append(out, '\\b')\n\t\t\tcase 'f':\n\t\t\t\tin, out = in[2:], append(out, '\\f')\n\t\t\tcase 'n':\n\t\t\t\tin, out = in[2:], append(out, '\\n')\n\t\t\tcase 'r':\n\t\t\t\tin, out = in[2:], append(out, '\\r')\n\t\t\tcase 't':\n\t\t\t\tin, out = in[2:], append(out, '\\t')\n\t\t\tcase 'u':\n\t\t\t\tif len(in) < 6 {\n\t\t\t\t\treturn \"\", 0, ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv, err := strconv.ParseUint(string(in[2:6]), 16, 16)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", 0, d.newSyntaxError(d.currPos(), \"invalid escape code %q in string\", in[:6])\n\t\t\t\t}\n\t\t\t\tin = in[6:]\n\n\t\t\t\tr := rune(v)\n\t\t\t\tif utf16.IsSurrogate(r) {\n\t\t\t\t\tif len(in) < 6 {\n\t\t\t\t\t\treturn \"\", 0, ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tv, err := strconv.ParseUint(string(in[2:6]), 16, 16)\n\t\t\t\t\tr = utf16.DecodeRune(r, rune(v))\n\t\t\t\t\tif in[0] != '\\\\' || in[1] != 'u' ||\n\t\t\t\t\t\tr == unicode.ReplacementChar || err != nil {\n\t\t\t\t\t\treturn \"\", 0, d.newSyntaxError(d.currPos(), \"invalid escape code %q in string\", in[:6])\n\t\t\t\t\t}\n\t\t\t\t\tin = in[6:]\n\t\t\t\t}\n\t\t\t\tout = append(out, string(r)...)\n\t\t\tdefault:\n\t\t\t\treturn \"\", 0, d.newSyntaxError(d.currPos(), \"invalid escape code %q in string\", in[:2])\n\t\t\t}\n\t\tdefault:\n\t\t\ti := indexNeedEscapeInBytes(in[n:])\n\t\t\tin, out = in[n+i:], append(out, in[:n+i]...)\n\t\t}\n\t}\n\treturn \"\", 0, ErrUnexpectedEOF\n}\n\n// indexNeedEscapeInBytes returns the index of the character that needs\n// escaping. If no characters need escaping, this returns the input length.\nfunc indexNeedEscapeInBytes(b []byte) int { return indexNeedEscapeInString(strs.UnsafeString(b)) }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/json/decode_token.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage json\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"strconv\"\n)\n\n// Kind represents a token kind expressible in the JSON format.\ntype Kind uint16\n\nconst (\n\tInvalid Kind = (1 << iota) / 2\n\tEOF\n\tNull\n\tBool\n\tNumber\n\tString\n\tName\n\tObjectOpen\n\tObjectClose\n\tArrayOpen\n\tArrayClose\n\n\t// comma is only for parsing in between tokens and\n\t// does not need to be exported.\n\tcomma\n)\n\nfunc (k Kind) String() string {\n\tswitch k {\n\tcase EOF:\n\t\treturn \"eof\"\n\tcase Null:\n\t\treturn \"null\"\n\tcase Bool:\n\t\treturn \"bool\"\n\tcase Number:\n\t\treturn \"number\"\n\tcase String:\n\t\treturn \"string\"\n\tcase ObjectOpen:\n\t\treturn \"{\"\n\tcase ObjectClose:\n\t\treturn \"}\"\n\tcase Name:\n\t\treturn \"name\"\n\tcase ArrayOpen:\n\t\treturn \"[\"\n\tcase ArrayClose:\n\t\treturn \"]\"\n\tcase comma:\n\t\treturn \",\"\n\t}\n\treturn \"<invalid>\"\n}\n\n// Token provides a parsed token kind and value.\n//\n// Values are provided by the difference accessor methods. The accessor methods\n// Name, Bool, and ParsedString will panic if called on the wrong kind. There\n// are different accessor methods for the Number kind for converting to the\n// appropriate Go numeric type and those methods have the ok return value.\ntype Token struct {\n\t// Token kind.\n\tkind Kind\n\t// pos provides the position of the token in the original input.\n\tpos int\n\t// raw bytes of the serialized token.\n\t// This is a subslice into the original input.\n\traw []byte\n\t// boo is parsed boolean value.\n\tboo bool\n\t// str is parsed string value.\n\tstr string\n}\n\n// Kind returns the token kind.\nfunc (t Token) Kind() Kind {\n\treturn t.kind\n}\n\n// RawString returns the read value in string.\nfunc (t Token) RawString() string {\n\treturn string(t.raw)\n}\n\n// Pos returns the token position from the input.\nfunc (t Token) Pos() int {\n\treturn t.pos\n}\n\n// Name returns the object name if token is Name, else it panics.\nfunc (t Token) Name() string {\n\tif t.kind == Name {\n\t\treturn t.str\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a Name: %v\", t.RawString()))\n}\n\n// Bool returns the bool value if token kind is Bool, else it panics.\nfunc (t Token) Bool() bool {\n\tif t.kind == Bool {\n\t\treturn t.boo\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a Bool: %v\", t.RawString()))\n}\n\n// ParsedString returns the string value for a JSON string token or the read\n// value in string if token is not a string.\nfunc (t Token) ParsedString() string {\n\tif t.kind == String {\n\t\treturn t.str\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a String: %v\", t.RawString()))\n}\n\n// Float returns the floating-point number if token kind is Number.\n//\n// The floating-point precision is specified by the bitSize parameter: 32 for\n// float32 or 64 for float64. If bitSize=32, the result still has type float64,\n// but it will be convertible to float32 without changing its value. It will\n// return false if the number exceeds the floating point limits for given\n// bitSize.\nfunc (t Token) Float(bitSize int) (float64, bool) {\n\tif t.kind != Number {\n\t\treturn 0, false\n\t}\n\tf, err := strconv.ParseFloat(t.RawString(), bitSize)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn f, true\n}\n\n// Int returns the signed integer number if token is Number.\n//\n// The given bitSize specifies the integer type that the result must fit into.\n// It returns false if the number is not an integer value or if the result\n// exceeds the limits for given bitSize.\nfunc (t Token) Int(bitSize int) (int64, bool) {\n\ts, ok := t.getIntStr()\n\tif !ok {\n\t\treturn 0, false\n\t}\n\tn, err := strconv.ParseInt(s, 10, bitSize)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn n, true\n}\n\n// Uint returns the signed integer number if token is Number.\n//\n// The given bitSize specifies the unsigned integer type that the result must\n// fit into. It returns false if the number is not an unsigned integer value\n// or if the result exceeds the limits for given bitSize.\nfunc (t Token) Uint(bitSize int) (uint64, bool) {\n\ts, ok := t.getIntStr()\n\tif !ok {\n\t\treturn 0, false\n\t}\n\tn, err := strconv.ParseUint(s, 10, bitSize)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn n, true\n}\n\nfunc (t Token) getIntStr() (string, bool) {\n\tif t.kind != Number {\n\t\treturn \"\", false\n\t}\n\tparts, ok := parseNumberParts(t.raw)\n\tif !ok {\n\t\treturn \"\", false\n\t}\n\treturn normalizeToIntString(parts)\n}\n\n// TokenEquals returns true if given Tokens are equal, else false.\nfunc TokenEquals(x, y Token) bool {\n\treturn x.kind == y.kind &&\n\t\tx.pos == y.pos &&\n\t\tbytes.Equal(x.raw, y.raw) &&\n\t\tx.boo == y.boo &&\n\t\tx.str == y.str\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/json/encode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage json\n\nimport (\n\t\"math\"\n\t\"math/bits\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/detrand\"\n\t\"google.golang.org/protobuf/internal/errors\"\n)\n\n// kind represents an encoding type.\ntype kind uint8\n\nconst (\n\t_ kind = (1 << iota) / 2\n\tname\n\tscalar\n\tobjectOpen\n\tobjectClose\n\tarrayOpen\n\tarrayClose\n)\n\n// Encoder provides methods to write out JSON constructs and values. The user is\n// responsible for producing valid sequences of JSON constructs and values.\ntype Encoder struct {\n\tindent   string\n\tlastKind kind\n\tindents  []byte\n\tout      []byte\n}\n\n// NewEncoder returns an Encoder.\n//\n// If indent is a non-empty string, it causes every entry for an Array or Object\n// to be preceded by the indent and trailed by a newline.\nfunc NewEncoder(buf []byte, indent string) (*Encoder, error) {\n\te := &Encoder{\n\t\tout: buf,\n\t}\n\tif len(indent) > 0 {\n\t\tif strings.Trim(indent, \" \\t\") != \"\" {\n\t\t\treturn nil, errors.New(\"indent may only be composed of space or tab characters\")\n\t\t}\n\t\te.indent = indent\n\t}\n\treturn e, nil\n}\n\n// Bytes returns the content of the written bytes.\nfunc (e *Encoder) Bytes() []byte {\n\treturn e.out\n}\n\n// WriteNull writes out the null value.\nfunc (e *Encoder) WriteNull() {\n\te.prepareNext(scalar)\n\te.out = append(e.out, \"null\"...)\n}\n\n// WriteBool writes out the given boolean value.\nfunc (e *Encoder) WriteBool(b bool) {\n\te.prepareNext(scalar)\n\tif b {\n\t\te.out = append(e.out, \"true\"...)\n\t} else {\n\t\te.out = append(e.out, \"false\"...)\n\t}\n}\n\n// WriteString writes out the given string in JSON string value. Returns error\n// if input string contains invalid UTF-8.\nfunc (e *Encoder) WriteString(s string) error {\n\te.prepareNext(scalar)\n\tvar err error\n\tif e.out, err = appendString(e.out, s); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// Sentinel error used for indicating invalid UTF-8.\nvar errInvalidUTF8 = errors.New(\"invalid UTF-8\")\n\nfunc appendString(out []byte, in string) ([]byte, error) {\n\tout = append(out, '\"')\n\ti := indexNeedEscapeInString(in)\n\tin, out = in[i:], append(out, in[:i]...)\n\tfor len(in) > 0 {\n\t\tswitch r, n := utf8.DecodeRuneInString(in); {\n\t\tcase r == utf8.RuneError && n == 1:\n\t\t\treturn out, errInvalidUTF8\n\t\tcase r < ' ' || r == '\"' || r == '\\\\':\n\t\t\tout = append(out, '\\\\')\n\t\t\tswitch r {\n\t\t\tcase '\"', '\\\\':\n\t\t\t\tout = append(out, byte(r))\n\t\t\tcase '\\b':\n\t\t\t\tout = append(out, 'b')\n\t\t\tcase '\\f':\n\t\t\t\tout = append(out, 'f')\n\t\t\tcase '\\n':\n\t\t\t\tout = append(out, 'n')\n\t\t\tcase '\\r':\n\t\t\t\tout = append(out, 'r')\n\t\t\tcase '\\t':\n\t\t\t\tout = append(out, 't')\n\t\t\tdefault:\n\t\t\t\tout = append(out, 'u')\n\t\t\t\tout = append(out, \"0000\"[1+(bits.Len32(uint32(r))-1)/4:]...)\n\t\t\t\tout = strconv.AppendUint(out, uint64(r), 16)\n\t\t\t}\n\t\t\tin = in[n:]\n\t\tdefault:\n\t\t\ti := indexNeedEscapeInString(in[n:])\n\t\t\tin, out = in[n+i:], append(out, in[:n+i]...)\n\t\t}\n\t}\n\tout = append(out, '\"')\n\treturn out, nil\n}\n\n// indexNeedEscapeInString returns the index of the character that needs\n// escaping. If no characters need escaping, this returns the input length.\nfunc indexNeedEscapeInString(s string) int {\n\tfor i, r := range s {\n\t\tif r < ' ' || r == '\\\\' || r == '\"' || r == utf8.RuneError {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(s)\n}\n\n// WriteFloat writes out the given float and bitSize in JSON number value.\nfunc (e *Encoder) WriteFloat(n float64, bitSize int) {\n\te.prepareNext(scalar)\n\te.out = appendFloat(e.out, n, bitSize)\n}\n\n// appendFloat formats given float in bitSize, and appends to the given []byte.\nfunc appendFloat(out []byte, n float64, bitSize int) []byte {\n\tswitch {\n\tcase math.IsNaN(n):\n\t\treturn append(out, `\"NaN\"`...)\n\tcase math.IsInf(n, +1):\n\t\treturn append(out, `\"Infinity\"`...)\n\tcase math.IsInf(n, -1):\n\t\treturn append(out, `\"-Infinity\"`...)\n\t}\n\n\t// JSON number formatting logic based on encoding/json.\n\t// See floatEncoder.encode for reference.\n\tfmt := byte('f')\n\tif abs := math.Abs(n); abs != 0 {\n\t\tif bitSize == 64 && (abs < 1e-6 || abs >= 1e21) ||\n\t\t\tbitSize == 32 && (float32(abs) < 1e-6 || float32(abs) >= 1e21) {\n\t\t\tfmt = 'e'\n\t\t}\n\t}\n\tout = strconv.AppendFloat(out, n, fmt, -1, bitSize)\n\tif fmt == 'e' {\n\t\tn := len(out)\n\t\tif n >= 4 && out[n-4] == 'e' && out[n-3] == '-' && out[n-2] == '0' {\n\t\t\tout[n-2] = out[n-1]\n\t\t\tout = out[:n-1]\n\t\t}\n\t}\n\treturn out\n}\n\n// WriteInt writes out the given signed integer in JSON number value.\nfunc (e *Encoder) WriteInt(n int64) {\n\te.prepareNext(scalar)\n\te.out = strconv.AppendInt(e.out, n, 10)\n}\n\n// WriteUint writes out the given unsigned integer in JSON number value.\nfunc (e *Encoder) WriteUint(n uint64) {\n\te.prepareNext(scalar)\n\te.out = strconv.AppendUint(e.out, n, 10)\n}\n\n// StartObject writes out the '{' symbol.\nfunc (e *Encoder) StartObject() {\n\te.prepareNext(objectOpen)\n\te.out = append(e.out, '{')\n}\n\n// EndObject writes out the '}' symbol.\nfunc (e *Encoder) EndObject() {\n\te.prepareNext(objectClose)\n\te.out = append(e.out, '}')\n}\n\n// WriteName writes out the given string in JSON string value and the name\n// separator ':'. Returns error if input string contains invalid UTF-8, which\n// should not be likely as protobuf field names should be valid.\nfunc (e *Encoder) WriteName(s string) error {\n\te.prepareNext(name)\n\tvar err error\n\t// Append to output regardless of error.\n\te.out, err = appendString(e.out, s)\n\te.out = append(e.out, ':')\n\treturn err\n}\n\n// StartArray writes out the '[' symbol.\nfunc (e *Encoder) StartArray() {\n\te.prepareNext(arrayOpen)\n\te.out = append(e.out, '[')\n}\n\n// EndArray writes out the ']' symbol.\nfunc (e *Encoder) EndArray() {\n\te.prepareNext(arrayClose)\n\te.out = append(e.out, ']')\n}\n\n// prepareNext adds possible comma and indentation for the next value based\n// on last type and indent option. It also updates lastKind to next.\nfunc (e *Encoder) prepareNext(next kind) {\n\tdefer func() {\n\t\t// Set lastKind to next.\n\t\te.lastKind = next\n\t}()\n\n\tif len(e.indent) == 0 {\n\t\t// Need to add comma on the following condition.\n\t\tif e.lastKind&(scalar|objectClose|arrayClose) != 0 &&\n\t\t\tnext&(name|scalar|objectOpen|arrayOpen) != 0 {\n\t\t\te.out = append(e.out, ',')\n\t\t\t// For single-line output, add a random extra space after each\n\t\t\t// comma to make output unstable.\n\t\t\tif detrand.Bool() {\n\t\t\t\te.out = append(e.out, ' ')\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\tswitch {\n\tcase e.lastKind&(objectOpen|arrayOpen) != 0:\n\t\t// If next type is NOT closing, add indent and newline.\n\t\tif next&(objectClose|arrayClose) == 0 {\n\t\t\te.indents = append(e.indents, e.indent...)\n\t\t\te.out = append(e.out, '\\n')\n\t\t\te.out = append(e.out, e.indents...)\n\t\t}\n\n\tcase e.lastKind&(scalar|objectClose|arrayClose) != 0:\n\t\tswitch {\n\t\t// If next type is either a value or name, add comma and newline.\n\t\tcase next&(name|scalar|objectOpen|arrayOpen) != 0:\n\t\t\te.out = append(e.out, ',', '\\n')\n\n\t\t// If next type is a closing object or array, adjust indentation.\n\t\tcase next&(objectClose|arrayClose) != 0:\n\t\t\te.indents = e.indents[:len(e.indents)-len(e.indent)]\n\t\t\te.out = append(e.out, '\\n')\n\t\t}\n\t\te.out = append(e.out, e.indents...)\n\n\tcase e.lastKind&name != 0:\n\t\te.out = append(e.out, ' ')\n\t\t// For multi-line output, add a random extra space after key: to make\n\t\t// output unstable.\n\t\tif detrand.Bool() {\n\t\t\te.out = append(e.out, ' ')\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package messageset encodes and decodes the obsolete MessageSet wire format.\npackage messageset\n\nimport (\n\t\"math\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// The MessageSet wire format is equivalent to a message defined as follows,\n// where each Item defines an extension field with a field number of 'type_id'\n// and content of 'message'. MessageSet extensions must be non-repeated message\n// fields.\n//\n//\tmessage MessageSet {\n//\t\trepeated group Item = 1 {\n//\t\t\trequired int32 type_id = 2;\n//\t\t\trequired string message = 3;\n//\t\t}\n//\t}\nconst (\n\tFieldItem    = protowire.Number(1)\n\tFieldTypeID  = protowire.Number(2)\n\tFieldMessage = protowire.Number(3)\n)\n\n// ExtensionName is the field name for extensions of MessageSet.\n//\n// A valid MessageSet extension must be of the form:\n//\n//\tmessage MyMessage {\n//\t\textend proto2.bridge.MessageSet {\n//\t\t\toptional MyMessage message_set_extension = 1234;\n//\t\t}\n//\t\t...\n//\t}\nconst ExtensionName = \"message_set_extension\"\n\n// IsMessageSet returns whether the message uses the MessageSet wire format.\nfunc IsMessageSet(md protoreflect.MessageDescriptor) bool {\n\txmd, ok := md.(interface{ IsMessageSet() bool })\n\treturn ok && xmd.IsMessageSet()\n}\n\n// IsMessageSetExtension reports this field properly extends a MessageSet.\nfunc IsMessageSetExtension(fd protoreflect.FieldDescriptor) bool {\n\tswitch {\n\tcase fd.Name() != ExtensionName:\n\t\treturn false\n\tcase !IsMessageSet(fd.ContainingMessage()):\n\t\treturn false\n\tcase fd.FullName().Parent() != fd.Message().FullName():\n\t\treturn false\n\t}\n\treturn true\n}\n\n// SizeField returns the size of a MessageSet item field containing an extension\n// with the given field number, not counting the contents of the message subfield.\nfunc SizeField(num protowire.Number) int {\n\treturn 2*protowire.SizeTag(FieldItem) + protowire.SizeTag(FieldTypeID) + protowire.SizeVarint(uint64(num))\n}\n\n// Unmarshal parses a MessageSet.\n//\n// It calls fn with the type ID and value of each item in the MessageSet.\n// Unknown fields are discarded.\n//\n// If wantLen is true, the item values include the varint length prefix.\n// This is ugly, but simplifies the fast-path decoder in internal/impl.\nfunc Unmarshal(b []byte, wantLen bool, fn func(typeID protowire.Number, value []byte) error) error {\n\tfor len(b) > 0 {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn protowire.ParseError(n)\n\t\t}\n\t\tb = b[n:]\n\t\tif num != FieldItem || wtyp != protowire.StartGroupType {\n\t\t\tn := protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protowire.ParseError(n)\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tcontinue\n\t\t}\n\t\ttypeID, value, n, err := ConsumeFieldValue(b, wantLen)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tb = b[n:]\n\t\tif typeID == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif err := fn(typeID, value); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// ConsumeFieldValue parses b as a MessageSet item field value until and including\n// the trailing end group marker. It assumes the start group tag has already been parsed.\n// It returns the contents of the type_id and message subfields and the total\n// item length.\n//\n// If wantLen is true, the returned message value includes the length prefix.\nfunc ConsumeFieldValue(b []byte, wantLen bool) (typeid protowire.Number, message []byte, n int, err error) {\n\tilen := len(b)\n\tfor {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn 0, nil, 0, protowire.ParseError(n)\n\t\t}\n\t\tb = b[n:]\n\t\tswitch {\n\t\tcase num == FieldItem && wtyp == protowire.EndGroupType:\n\t\t\tif wantLen && len(message) == 0 {\n\t\t\t\t// The message field was missing, which should never happen.\n\t\t\t\t// Be prepared for this case anyway.\n\t\t\t\tmessage = protowire.AppendVarint(message, 0)\n\t\t\t}\n\t\t\treturn typeid, message, ilen - len(b), nil\n\t\tcase num == FieldTypeID && wtyp == protowire.VarintType:\n\t\t\tv, n := protowire.ConsumeVarint(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, nil, 0, protowire.ParseError(n)\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tif v < 1 || v > math.MaxInt32 {\n\t\t\t\treturn 0, nil, 0, errors.New(\"invalid type_id in message set\")\n\t\t\t}\n\t\t\ttypeid = protowire.Number(v)\n\t\tcase num == FieldMessage && wtyp == protowire.BytesType:\n\t\t\tm, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, nil, 0, protowire.ParseError(n)\n\t\t\t}\n\t\t\tif message == nil {\n\t\t\t\tif wantLen {\n\t\t\t\t\tmessage = b[:n:n]\n\t\t\t\t} else {\n\t\t\t\t\tmessage = m[:len(m):len(m)]\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// This case should never happen in practice, but handle it for\n\t\t\t\t// correctness: The MessageSet item contains multiple message\n\t\t\t\t// fields, which need to be merged.\n\t\t\t\t//\n\t\t\t\t// In the case where we're returning the length, this becomes\n\t\t\t\t// quite inefficient since we need to strip the length off\n\t\t\t\t// the existing data and reconstruct it with the combined length.\n\t\t\t\tif wantLen {\n\t\t\t\t\t_, nn := protowire.ConsumeVarint(message)\n\t\t\t\t\tm0 := message[nn:]\n\t\t\t\t\tmessage = nil\n\t\t\t\t\tmessage = protowire.AppendVarint(message, uint64(len(m0)+len(m)))\n\t\t\t\t\tmessage = append(message, m0...)\n\t\t\t\t\tmessage = append(message, m...)\n\t\t\t\t} else {\n\t\t\t\t\tmessage = append(message, m...)\n\t\t\t\t}\n\t\t\t}\n\t\t\tb = b[n:]\n\t\tdefault:\n\t\t\t// We have no place to put it, so we just ignore unknown fields.\n\t\t\tn := protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, nil, 0, protowire.ParseError(n)\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t}\n\t}\n}\n\n// AppendFieldStart appends the start of a MessageSet item field containing\n// an extension with the given number. The caller must add the message\n// subfield (including the tag).\nfunc AppendFieldStart(b []byte, num protowire.Number) []byte {\n\tb = protowire.AppendTag(b, FieldItem, protowire.StartGroupType)\n\tb = protowire.AppendTag(b, FieldTypeID, protowire.VarintType)\n\tb = protowire.AppendVarint(b, uint64(num))\n\treturn b\n}\n\n// AppendFieldEnd appends the trailing end group marker for a MessageSet item field.\nfunc AppendFieldEnd(b []byte) []byte {\n\treturn protowire.AppendTag(b, FieldItem, protowire.EndGroupType)\n}\n\n// SizeUnknown returns the size of an unknown fields section in MessageSet format.\n//\n// See AppendUnknown.\nfunc SizeUnknown(unknown []byte) (size int) {\n\tfor len(unknown) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(unknown)\n\t\tif n < 0 || typ != protowire.BytesType {\n\t\t\treturn 0\n\t\t}\n\t\tunknown = unknown[n:]\n\t\t_, n = protowire.ConsumeBytes(unknown)\n\t\tif n < 0 {\n\t\t\treturn 0\n\t\t}\n\t\tunknown = unknown[n:]\n\t\tsize += SizeField(num) + protowire.SizeTag(FieldMessage) + n\n\t}\n\treturn size\n}\n\n// AppendUnknown appends unknown fields to b in MessageSet format.\n//\n// For historic reasons, unresolved items in a MessageSet are stored in a\n// message's unknown fields section in non-MessageSet format. That is, an\n// unknown item with typeID T and value V appears in the unknown fields as\n// a field with number T and value V.\n//\n// This function converts the unknown fields back into MessageSet form.\nfunc AppendUnknown(b, unknown []byte) ([]byte, error) {\n\tfor len(unknown) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(unknown)\n\t\tif n < 0 || typ != protowire.BytesType {\n\t\t\treturn nil, errors.New(\"invalid data in message set unknown fields\")\n\t\t}\n\t\tunknown = unknown[n:]\n\t\t_, n = protowire.ConsumeBytes(unknown)\n\t\tif n < 0 {\n\t\t\treturn nil, errors.New(\"invalid data in message set unknown fields\")\n\t\t}\n\t\tb = AppendFieldStart(b, num)\n\t\tb = protowire.AppendTag(b, FieldMessage, protowire.BytesType)\n\t\tb = append(b, unknown[:n]...)\n\t\tb = AppendFieldEnd(b)\n\t\tunknown = unknown[n:]\n\t}\n\treturn b, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package tag marshals and unmarshals the legacy struct tags as generated\n// by historical versions of protoc-gen-go.\npackage tag\n\nimport (\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/encoding/defval\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nvar byteType = reflect.TypeOf(byte(0))\n\n// Unmarshal decodes the tag into a prototype.Field.\n//\n// The goType is needed to determine the original protoreflect.Kind since the\n// tag does not record sufficient information to determine that.\n// The type is the underlying field type (e.g., a repeated field may be\n// represented by []T, but the Go type passed in is just T).\n// A list of enum value descriptors must be provided for enum fields.\n// This does not populate the Enum or Message.\n//\n// This function is a best effort attempt; parsing errors are ignored.\nfunc Unmarshal(tag string, goType reflect.Type, evs protoreflect.EnumValueDescriptors) protoreflect.FieldDescriptor {\n\tf := new(filedesc.Field)\n\tf.L0.ParentFile = filedesc.SurrogateProto2\n\tpacked := false\n\tfor len(tag) > 0 {\n\t\ti := strings.IndexByte(tag, ',')\n\t\tif i < 0 {\n\t\t\ti = len(tag)\n\t\t}\n\t\tswitch s := tag[:i]; {\n\t\tcase strings.HasPrefix(s, \"name=\"):\n\t\t\tf.L0.FullName = protoreflect.FullName(s[len(\"name=\"):])\n\t\tcase strings.Trim(s, \"0123456789\") == \"\":\n\t\t\tn, _ := strconv.ParseUint(s, 10, 32)\n\t\t\tf.L1.Number = protoreflect.FieldNumber(n)\n\t\tcase s == \"opt\":\n\t\t\tf.L1.Cardinality = protoreflect.Optional\n\t\tcase s == \"req\":\n\t\t\tf.L1.Cardinality = protoreflect.Required\n\t\tcase s == \"rep\":\n\t\t\tf.L1.Cardinality = protoreflect.Repeated\n\t\tcase s == \"varint\":\n\t\t\tswitch goType.Kind() {\n\t\t\tcase reflect.Bool:\n\t\t\t\tf.L1.Kind = protoreflect.BoolKind\n\t\t\tcase reflect.Int32:\n\t\t\t\tf.L1.Kind = protoreflect.Int32Kind\n\t\t\tcase reflect.Int64:\n\t\t\t\tf.L1.Kind = protoreflect.Int64Kind\n\t\t\tcase reflect.Uint32:\n\t\t\t\tf.L1.Kind = protoreflect.Uint32Kind\n\t\t\tcase reflect.Uint64:\n\t\t\t\tf.L1.Kind = protoreflect.Uint64Kind\n\t\t\t}\n\t\tcase s == \"zigzag32\":\n\t\t\tif goType.Kind() == reflect.Int32 {\n\t\t\t\tf.L1.Kind = protoreflect.Sint32Kind\n\t\t\t}\n\t\tcase s == \"zigzag64\":\n\t\t\tif goType.Kind() == reflect.Int64 {\n\t\t\t\tf.L1.Kind = protoreflect.Sint64Kind\n\t\t\t}\n\t\tcase s == \"fixed32\":\n\t\t\tswitch goType.Kind() {\n\t\t\tcase reflect.Int32:\n\t\t\t\tf.L1.Kind = protoreflect.Sfixed32Kind\n\t\t\tcase reflect.Uint32:\n\t\t\t\tf.L1.Kind = protoreflect.Fixed32Kind\n\t\t\tcase reflect.Float32:\n\t\t\t\tf.L1.Kind = protoreflect.FloatKind\n\t\t\t}\n\t\tcase s == \"fixed64\":\n\t\t\tswitch goType.Kind() {\n\t\t\tcase reflect.Int64:\n\t\t\t\tf.L1.Kind = protoreflect.Sfixed64Kind\n\t\t\tcase reflect.Uint64:\n\t\t\t\tf.L1.Kind = protoreflect.Fixed64Kind\n\t\t\tcase reflect.Float64:\n\t\t\t\tf.L1.Kind = protoreflect.DoubleKind\n\t\t\t}\n\t\tcase s == \"bytes\":\n\t\t\tswitch {\n\t\t\tcase goType.Kind() == reflect.String:\n\t\t\t\tf.L1.Kind = protoreflect.StringKind\n\t\t\tcase goType.Kind() == reflect.Slice && goType.Elem() == byteType:\n\t\t\t\tf.L1.Kind = protoreflect.BytesKind\n\t\t\tdefault:\n\t\t\t\tf.L1.Kind = protoreflect.MessageKind\n\t\t\t}\n\t\tcase s == \"group\":\n\t\t\tf.L1.Kind = protoreflect.GroupKind\n\t\tcase strings.HasPrefix(s, \"enum=\"):\n\t\t\tf.L1.Kind = protoreflect.EnumKind\n\t\tcase strings.HasPrefix(s, \"json=\"):\n\t\t\tjsonName := s[len(\"json=\"):]\n\t\t\tif jsonName != strs.JSONCamelCase(string(f.L0.FullName.Name())) {\n\t\t\t\tf.L1.StringName.InitJSON(jsonName)\n\t\t\t}\n\t\tcase s == \"packed\":\n\t\t\tpacked = true\n\t\tcase strings.HasPrefix(s, \"def=\"):\n\t\t\t// The default tag is special in that everything afterwards is the\n\t\t\t// default regardless of the presence of commas.\n\t\t\ts, i = tag[len(\"def=\"):], len(tag)\n\t\t\tv, ev, _ := defval.Unmarshal(s, f.L1.Kind, evs, defval.GoTag)\n\t\t\tf.L1.Default = filedesc.DefaultValue(v, ev)\n\t\tcase s == \"proto3\":\n\t\t\tf.L0.ParentFile = filedesc.SurrogateProto3\n\t\t}\n\t\ttag = strings.TrimPrefix(tag[i:], \",\")\n\t}\n\n\t// Update EditionFeatures after the loop and after we know whether this is\n\t// a proto2 or proto3 field.\n\tf.L1.EditionFeatures = f.L0.ParentFile.L1.EditionFeatures\n\tif packed {\n\t\tf.L1.EditionFeatures.IsPacked = true\n\t}\n\n\t// The generator uses the group message name instead of the field name.\n\t// We obtain the real field name by lowercasing the group name.\n\tif f.L1.Kind == protoreflect.GroupKind {\n\t\tf.L0.FullName = protoreflect.FullName(strings.ToLower(string(f.L0.FullName)))\n\t}\n\treturn f\n}\n\n// Marshal encodes the protoreflect.FieldDescriptor as a tag.\n//\n// The enumName must be provided if the kind is an enum.\n// Historically, the formulation of the enum \"name\" was the proto package\n// dot-concatenated with the generated Go identifier for the enum type.\n// Depending on the context on how Marshal is called, there are different ways\n// through which that information is determined. As such it is the caller's\n// responsibility to provide a function to obtain that information.\nfunc Marshal(fd protoreflect.FieldDescriptor, enumName string) string {\n\tvar tag []string\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind, protoreflect.EnumKind, protoreflect.Int32Kind, protoreflect.Uint32Kind, protoreflect.Int64Kind, protoreflect.Uint64Kind:\n\t\ttag = append(tag, \"varint\")\n\tcase protoreflect.Sint32Kind:\n\t\ttag = append(tag, \"zigzag32\")\n\tcase protoreflect.Sint64Kind:\n\t\ttag = append(tag, \"zigzag64\")\n\tcase protoreflect.Sfixed32Kind, protoreflect.Fixed32Kind, protoreflect.FloatKind:\n\t\ttag = append(tag, \"fixed32\")\n\tcase protoreflect.Sfixed64Kind, protoreflect.Fixed64Kind, protoreflect.DoubleKind:\n\t\ttag = append(tag, \"fixed64\")\n\tcase protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind:\n\t\ttag = append(tag, \"bytes\")\n\tcase protoreflect.GroupKind:\n\t\ttag = append(tag, \"group\")\n\t}\n\ttag = append(tag, strconv.Itoa(int(fd.Number())))\n\tswitch fd.Cardinality() {\n\tcase protoreflect.Optional:\n\t\ttag = append(tag, \"opt\")\n\tcase protoreflect.Required:\n\t\ttag = append(tag, \"req\")\n\tcase protoreflect.Repeated:\n\t\ttag = append(tag, \"rep\")\n\t}\n\tif fd.IsPacked() {\n\t\ttag = append(tag, \"packed\")\n\t}\n\tname := string(fd.Name())\n\tif fd.Kind() == protoreflect.GroupKind {\n\t\t// The name of the FieldDescriptor for a group field is\n\t\t// lowercased. To find the original capitalization, we\n\t\t// look in the field's MessageType.\n\t\tname = string(fd.Message().Name())\n\t}\n\ttag = append(tag, \"name=\"+name)\n\tif jsonName := fd.JSONName(); jsonName != \"\" && jsonName != name && !fd.IsExtension() {\n\t\t// NOTE: The jsonName != name condition is suspect, but it preserve\n\t\t// the exact same semantics from the previous generator.\n\t\ttag = append(tag, \"json=\"+jsonName)\n\t}\n\t// The previous implementation does not tag extension fields as proto3,\n\t// even when the field is defined in a proto3 file. Match that behavior\n\t// for consistency.\n\tif fd.Syntax() == protoreflect.Proto3 && !fd.IsExtension() {\n\t\ttag = append(tag, \"proto3\")\n\t}\n\tif fd.Kind() == protoreflect.EnumKind && enumName != \"\" {\n\t\ttag = append(tag, \"enum=\"+enumName)\n\t}\n\tif fd.ContainingOneof() != nil {\n\t\ttag = append(tag, \"oneof\")\n\t}\n\t// This must appear last in the tag, since commas in strings aren't escaped.\n\tif fd.HasDefault() {\n\t\tdef, _ := defval.Marshal(fd.Default(), fd.DefaultEnumValue(), fd.Kind(), defval.GoTag)\n\t\ttag = append(tag, \"def=\"+def)\n\t}\n\treturn strings.Join(tag, \",\")\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/decode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n)\n\n// Decoder is a token-based textproto decoder.\ntype Decoder struct {\n\t// lastCall is last method called, either readCall or peekCall.\n\t// Initial value is readCall.\n\tlastCall call\n\n\t// lastToken contains the last read token.\n\tlastToken Token\n\n\t// lastErr contains the last read error.\n\tlastErr error\n\n\t// openStack is a stack containing the byte characters for MessageOpen and\n\t// ListOpen kinds. The top of stack represents the message or the list that\n\t// the current token is nested in. An empty stack means the current token is\n\t// at the top level message. The characters '{' and '<' both represent the\n\t// MessageOpen kind.\n\topenStack []byte\n\n\t// orig is used in reporting line and column.\n\torig []byte\n\t// in contains the unconsumed input.\n\tin []byte\n}\n\n// NewDecoder returns a Decoder to read the given []byte.\nfunc NewDecoder(b []byte) *Decoder {\n\treturn &Decoder{orig: b, in: b}\n}\n\n// ErrUnexpectedEOF means that EOF was encountered in the middle of the input.\nvar ErrUnexpectedEOF = errors.New(\"%v\", io.ErrUnexpectedEOF)\n\n// call specifies which Decoder method was invoked.\ntype call uint8\n\nconst (\n\treadCall call = iota\n\tpeekCall\n)\n\n// Peek looks ahead and returns the next token and error without advancing a read.\nfunc (d *Decoder) Peek() (Token, error) {\n\tdefer func() { d.lastCall = peekCall }()\n\tif d.lastCall == readCall {\n\t\td.lastToken, d.lastErr = d.Read()\n\t}\n\treturn d.lastToken, d.lastErr\n}\n\n// Read returns the next token.\n// It will return an error if there is no valid token.\nfunc (d *Decoder) Read() (Token, error) {\n\tdefer func() { d.lastCall = readCall }()\n\tif d.lastCall == peekCall {\n\t\treturn d.lastToken, d.lastErr\n\t}\n\n\ttok, err := d.parseNext(d.lastToken.kind)\n\tif err != nil {\n\t\treturn Token{}, err\n\t}\n\n\tswitch tok.kind {\n\tcase comma, semicolon:\n\t\ttok, err = d.parseNext(tok.kind)\n\t\tif err != nil {\n\t\t\treturn Token{}, err\n\t\t}\n\t}\n\td.lastToken = tok\n\treturn tok, nil\n}\n\nconst (\n\tmismatchedFmt = \"mismatched close character %q\"\n\tunexpectedFmt = \"unexpected character %q\"\n)\n\n// parseNext parses the next Token based on given last kind.\nfunc (d *Decoder) parseNext(lastKind Kind) (Token, error) {\n\t// Trim leading spaces.\n\td.consume(0)\n\tisEOF := false\n\tif len(d.in) == 0 {\n\t\tisEOF = true\n\t}\n\n\tswitch lastKind {\n\tcase EOF:\n\t\treturn d.consumeToken(EOF, 0, 0), nil\n\n\tcase bof:\n\t\t// Start of top level message. Next token can be EOF or Name.\n\t\tif isEOF {\n\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t}\n\t\treturn d.parseFieldName()\n\n\tcase Name:\n\t\t// Next token can be MessageOpen, ListOpen or Scalar.\n\t\tif isEOF {\n\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t}\n\t\tswitch ch := d.in[0]; ch {\n\t\tcase '{', '<':\n\t\t\td.pushOpenStack(ch)\n\t\t\treturn d.consumeToken(MessageOpen, 1, 0), nil\n\t\tcase '[':\n\t\t\td.pushOpenStack(ch)\n\t\t\treturn d.consumeToken(ListOpen, 1, 0), nil\n\t\tdefault:\n\t\t\treturn d.parseScalar()\n\t\t}\n\n\tcase Scalar:\n\t\topenKind, closeCh := d.currentOpenKind()\n\t\tswitch openKind {\n\t\tcase bof:\n\t\t\t// Top level message.\n\t\t\t// \tNext token can be EOF, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t\t}\n\t\t\tswitch d.in[0] {\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase MessageOpen:\n\t\t\t// Next token can be MessageClose, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\t\tcase otherCloseChar[closeCh]:\n\t\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase ListOpen:\n\t\t\t// Next token can be ListClose or comma.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase ']':\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(ListClose, 1, 0), nil\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn Token{}, d.newSyntaxError(unexpectedFmt, ch)\n\t\t\t}\n\t\t}\n\n\tcase MessageOpen:\n\t\t// Next token can be MessageClose or Name.\n\t\tif isEOF {\n\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t}\n\t\t_, closeCh := d.currentOpenKind()\n\t\tswitch ch := d.in[0]; ch {\n\t\tcase closeCh:\n\t\t\td.popOpenStack()\n\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\tcase otherCloseChar[closeCh]:\n\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\tdefault:\n\t\t\treturn d.parseFieldName()\n\t\t}\n\n\tcase MessageClose:\n\t\topenKind, closeCh := d.currentOpenKind()\n\t\tswitch openKind {\n\t\tcase bof:\n\t\t\t// Top level message.\n\t\t\t// Next token can be EOF, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase MessageOpen:\n\t\t\t// Next token can be MessageClose, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\t\tcase otherCloseChar[closeCh]:\n\t\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase ListOpen:\n\t\t\t// Next token can be ListClose or comma\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(ListClose, 1, 0), nil\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn Token{}, d.newSyntaxError(unexpectedFmt, ch)\n\t\t\t}\n\t\t}\n\n\tcase ListOpen:\n\t\t// Next token can be ListClose, MessageStart or Scalar.\n\t\tif isEOF {\n\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t}\n\t\tswitch ch := d.in[0]; ch {\n\t\tcase ']':\n\t\t\td.popOpenStack()\n\t\t\treturn d.consumeToken(ListClose, 1, 0), nil\n\t\tcase '{', '<':\n\t\t\td.pushOpenStack(ch)\n\t\t\treturn d.consumeToken(MessageOpen, 1, 0), nil\n\t\tdefault:\n\t\t\treturn d.parseScalar()\n\t\t}\n\n\tcase ListClose:\n\t\topenKind, closeCh := d.currentOpenKind()\n\t\tswitch openKind {\n\t\tcase bof:\n\t\t\t// Top level message.\n\t\t\t// Next token can be EOF, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase MessageOpen:\n\t\t\t// Next token can be MessageClose, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\t\tcase otherCloseChar[closeCh]:\n\t\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tdefault:\n\t\t\t// It is not possible to have this case. Let it panic below.\n\t\t}\n\n\tcase comma, semicolon:\n\t\topenKind, closeCh := d.currentOpenKind()\n\t\tswitch openKind {\n\t\tcase bof:\n\t\t\t// Top level message. Next token can be EOF or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t\t}\n\t\t\treturn d.parseFieldName()\n\n\t\tcase MessageOpen:\n\t\t\t// Next token can be MessageClose or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\t\tcase otherCloseChar[closeCh]:\n\t\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase ListOpen:\n\t\t\tif lastKind == semicolon {\n\t\t\t\t// It is not be possible to have this case as logic here\n\t\t\t\t// should not have produced a semicolon Token when inside a\n\t\t\t\t// list. Let it panic below.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Next token can be MessageOpen or Scalar.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase '{', '<':\n\t\t\t\td.pushOpenStack(ch)\n\t\t\t\treturn d.consumeToken(MessageOpen, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseScalar()\n\t\t\t}\n\t\t}\n\t}\n\n\tline, column := d.Position(len(d.orig) - len(d.in))\n\tpanic(fmt.Sprintf(\"Decoder.parseNext: bug at handling line %d:%d with lastKind=%v\", line, column, lastKind))\n}\n\nvar otherCloseChar = map[byte]byte{\n\t'}': '>',\n\t'>': '}',\n}\n\n// currentOpenKind indicates whether current position is inside a message, list\n// or top-level message by returning MessageOpen, ListOpen or bof respectively.\n// If the returned kind is either a MessageOpen or ListOpen, it also returns the\n// corresponding closing character.\nfunc (d *Decoder) currentOpenKind() (Kind, byte) {\n\tif len(d.openStack) == 0 {\n\t\treturn bof, 0\n\t}\n\topenCh := d.openStack[len(d.openStack)-1]\n\tswitch openCh {\n\tcase '{':\n\t\treturn MessageOpen, '}'\n\tcase '<':\n\t\treturn MessageOpen, '>'\n\tcase '[':\n\t\treturn ListOpen, ']'\n\t}\n\tpanic(fmt.Sprintf(\"Decoder: openStack contains invalid byte %c\", openCh))\n}\n\nfunc (d *Decoder) pushOpenStack(ch byte) {\n\td.openStack = append(d.openStack, ch)\n}\n\nfunc (d *Decoder) popOpenStack() {\n\td.openStack = d.openStack[:len(d.openStack)-1]\n}\n\n// parseFieldName parses field name and separator.\nfunc (d *Decoder) parseFieldName() (tok Token, err error) {\n\tdefer func() {\n\t\tif err == nil && d.tryConsumeChar(':') {\n\t\t\ttok.attrs |= hasSeparator\n\t\t}\n\t}()\n\n\t// Extension or Any type URL.\n\tif d.in[0] == '[' {\n\t\treturn d.parseTypeName()\n\t}\n\n\t// Identifier.\n\tif size := parseIdent(d.in, false); size > 0 {\n\t\treturn d.consumeToken(Name, size, uint8(IdentName)), nil\n\t}\n\n\t// Field number. Identify if input is a valid number that is not negative\n\t// and is decimal integer within 32-bit range.\n\tif num := parseNumber(d.in); num.size > 0 {\n\t\tstr := num.string(d.in)\n\t\tif !num.neg && num.kind == numDec {\n\t\t\tif _, err := strconv.ParseInt(str, 10, 32); err == nil {\n\t\t\t\treturn d.consumeToken(Name, num.size, uint8(FieldNumber)), nil\n\t\t\t}\n\t\t}\n\t\treturn Token{}, d.newSyntaxError(\"invalid field number: %s\", str)\n\t}\n\n\treturn Token{}, d.newSyntaxError(\"invalid field name: %s\", errId(d.in))\n}\n\n// parseTypeName parses an Any type URL or an extension field name. The name is\n// enclosed in [ and ] characters. We allow almost arbitrary type URL prefixes,\n// closely following the text-format spec [1,2]. We implement \"ExtensionName |\n// AnyName\" as follows (with some exceptions for backwards compatibility):\n//\n// char      = [-_a-zA-Z0-9]\n// url_char  = char | [.~!$&'()*+,;=] | \"%\", hex, hex\n//\n// Ident         = char, { char }\n// TypeName      = Ident, { \".\", Ident } ;\n// UrlPrefix     = url_char, { url_char | \"/\" } ;\n// ExtensionName = \"[\", TypeName, \"]\" ;\n// AnyName       = \"[\", UrlPrefix, \"/\", TypeName, \"]\" ;\n//\n// Additionally, we allow arbitrary whitespace and comments between [ and ].\n//\n// [1] https://protobuf.dev/reference/protobuf/textformat-spec/#characters\n// [2] https://protobuf.dev/reference/protobuf/textformat-spec/#field-names\nfunc (d *Decoder) parseTypeName() (Token, error) {\n\t// Use alias s to advance first in order to use d.in for error handling.\n\t// Caller already checks for [ as first character (d.in[0] == '[').\n\ts := consume(d.in[1:], 0)\n\tif len(s) == 0 {\n\t\treturn Token{}, ErrUnexpectedEOF\n\t}\n\n\t// Collect everything between [ and ] in name.\n\tvar name []byte\n\tvar closed bool\n\tfor len(s) > 0 && !closed {\n\t\tswitch {\n\t\tcase s[0] == ']':\n\t\t\ts = s[1:]\n\t\t\tclosed = true\n\n\t\tcase s[0] == '/' || isTypeNameChar(s[0]) || isUrlExtraChar(s[0]):\n\t\t\tname = append(name, s[0])\n\t\t\ts = consume(s[1:], 0)\n\n\t\t// URL percent-encoded chars\n\t\tcase s[0] == '%':\n\t\t\tif len(s) < 3 || !isHexChar(s[1]) || !isHexChar(s[2]) {\n\t\t\t\treturn Token{}, d.parseTypeNameError(s, 3)\n\t\t\t}\n\t\t\tname = append(name, s[0], s[1], s[2])\n\t\t\ts = consume(s[3:], 0)\n\n\t\tdefault:\n\t\t\treturn Token{}, d.parseTypeNameError(s, 1)\n\t\t}\n\t}\n\n\tif !closed {\n\t\treturn Token{}, ErrUnexpectedEOF\n\t}\n\n\t// Split collected name on last '/' into urlPrefix and typeName (if '/' is\n\t// present).\n\ttypeName := name\n\tif i := bytes.LastIndexByte(name, '/'); i != -1 {\n\t\turlPrefix := name[:i]\n\t\ttypeName = name[i+1:]\n\n\t\t// urlPrefix may be empty (for backwards compatibility).\n\t\t// If non-empty, it must not start with '/'.\n\t\tif len(urlPrefix) > 0 && urlPrefix[0] == '/' {\n\t\t\treturn Token{}, d.parseTypeNameError(s, 0)\n\t\t}\n\t}\n\n\t// typeName must not be empty (note: \"\" splits to [\"\"]) and all identifier\n\t// parts must not be empty.\n\tfor _, ident := range bytes.Split(typeName, []byte{'.'}) {\n\t\tif len(ident) == 0 {\n\t\t\treturn Token{}, d.parseTypeNameError(s, 0)\n\t\t}\n\t}\n\n\t// typeName must not contain any percent-encoded or special URL chars.\n\tfor _, b := range typeName {\n\t\tif b == '%' || (b != '.' && isUrlExtraChar(b)) {\n\t\t\treturn Token{}, d.parseTypeNameError(s, 0)\n\t\t}\n\t}\n\n\tstartPos := len(d.orig) - len(d.in)\n\tendPos := len(d.orig) - len(s)\n\td.in = s\n\td.consume(0)\n\n\treturn Token{\n\t\tkind:  Name,\n\t\tattrs: uint8(TypeName),\n\t\tpos:   startPos,\n\t\traw:   d.orig[startPos:endPos],\n\t\tstr:   string(name),\n\t}, nil\n}\n\nfunc (d *Decoder) parseTypeNameError(s []byte, numUnconsumedChars int) error {\n\treturn d.newSyntaxError(\n\t\t\"invalid type URL/extension field name: %s\",\n\t\td.in[:len(d.in)-len(s)+min(numUnconsumedChars, len(s))],\n\t)\n}\n\nfunc isHexChar(b byte) bool {\n\treturn ('0' <= b && b <= '9') ||\n\t\t('a' <= b && b <= 'f') ||\n\t\t('A' <= b && b <= 'F')\n}\n\nfunc isTypeNameChar(b byte) bool {\n\treturn b == '-' || b == '_' ||\n\t\t('0' <= b && b <= '9') ||\n\t\t('a' <= b && b <= 'z') ||\n\t\t('A' <= b && b <= 'Z')\n}\n\n// isUrlExtraChar complements isTypeNameChar with extra characters that we allow\n// in URLs but not in type names. Note that '/' is not included so that it can\n// be treated specially.\nfunc isUrlExtraChar(b byte) bool {\n\tswitch b {\n\tcase '.', '~', '!', '$', '&', '(', ')', '*', '+', ',', ';', '=':\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// parseIdent parses an unquoted proto identifier and returns size.\n// If allowNeg is true, it allows '-' to be the first character in the\n// identifier. This is used when parsing literal values like -infinity, etc.\n// Regular expression matches an identifier: `^[_a-zA-Z][_a-zA-Z0-9]*`\nfunc parseIdent(input []byte, allowNeg bool) int {\n\tvar size int\n\n\ts := input\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\n\tif allowNeg && s[0] == '-' {\n\t\ts = s[1:]\n\t\tsize++\n\t\tif len(s) == 0 {\n\t\t\treturn 0\n\t\t}\n\t}\n\n\tswitch {\n\tcase s[0] == '_',\n\t\t'a' <= s[0] && s[0] <= 'z',\n\t\t'A' <= s[0] && s[0] <= 'Z':\n\t\ts = s[1:]\n\t\tsize++\n\tdefault:\n\t\treturn 0\n\t}\n\n\tfor len(s) > 0 && (s[0] == '_' ||\n\t\t'a' <= s[0] && s[0] <= 'z' ||\n\t\t'A' <= s[0] && s[0] <= 'Z' ||\n\t\t'0' <= s[0] && s[0] <= '9') {\n\t\ts = s[1:]\n\t\tsize++\n\t}\n\n\tif len(s) > 0 && !isDelim(s[0]) {\n\t\treturn 0\n\t}\n\n\treturn size\n}\n\n// parseScalar parses for a string, literal or number value.\nfunc (d *Decoder) parseScalar() (Token, error) {\n\tif d.in[0] == '\"' || d.in[0] == '\\'' {\n\t\treturn d.parseStringValue()\n\t}\n\n\tif tok, ok := d.parseLiteralValue(); ok {\n\t\treturn tok, nil\n\t}\n\n\tif tok, ok := d.parseNumberValue(); ok {\n\t\treturn tok, nil\n\t}\n\n\treturn Token{}, d.newSyntaxError(\"invalid scalar value: %s\", errId(d.in))\n}\n\n// parseLiteralValue parses a literal value. A literal value is used for\n// bools, special floats and enums. This function simply identifies that the\n// field value is a literal.\nfunc (d *Decoder) parseLiteralValue() (Token, bool) {\n\tsize := parseIdent(d.in, true)\n\tif size == 0 {\n\t\treturn Token{}, false\n\t}\n\treturn d.consumeToken(Scalar, size, literalValue), true\n}\n\n// consumeToken constructs a Token for given Kind from d.in and consumes given\n// size-length from it.\nfunc (d *Decoder) consumeToken(kind Kind, size int, attrs uint8) Token {\n\t// Important to compute raw and pos before consuming.\n\ttok := Token{\n\t\tkind:  kind,\n\t\tattrs: attrs,\n\t\tpos:   len(d.orig) - len(d.in),\n\t\traw:   d.in[:size],\n\t}\n\td.consume(size)\n\treturn tok\n}\n\n// newSyntaxError returns a syntax error with line and column information for\n// current position.\nfunc (d *Decoder) newSyntaxError(f string, x ...any) error {\n\te := errors.New(f, x...)\n\tline, column := d.Position(len(d.orig) - len(d.in))\n\treturn errors.New(\"syntax error (line %d:%d): %v\", line, column, e)\n}\n\n// Position returns line and column number of given index of the original input.\n// It will panic if index is out of range.\nfunc (d *Decoder) Position(idx int) (line int, column int) {\n\tb := d.orig[:idx]\n\tline = bytes.Count(b, []byte(\"\\n\")) + 1\n\tif i := bytes.LastIndexByte(b, '\\n'); i >= 0 {\n\t\tb = b[i+1:]\n\t}\n\tcolumn = utf8.RuneCount(b) + 1 // ignore multi-rune characters\n\treturn line, column\n}\n\nfunc (d *Decoder) tryConsumeChar(c byte) bool {\n\tif len(d.in) > 0 && d.in[0] == c {\n\t\td.consume(1)\n\t\treturn true\n\t}\n\treturn false\n}\n\n// consume consumes n bytes of input and any subsequent whitespace or comments.\nfunc (d *Decoder) consume(n int) {\n\td.in = consume(d.in, n)\n\treturn\n}\n\n// consume consumes n bytes of input and any subsequent whitespace or comments.\nfunc consume(b []byte, n int) []byte {\n\tb = b[n:]\n\tfor len(b) > 0 {\n\t\tswitch b[0] {\n\t\tcase ' ', '\\n', '\\r', '\\t':\n\t\t\tb = b[1:]\n\t\tcase '#':\n\t\t\tif i := bytes.IndexByte(b, '\\n'); i >= 0 {\n\t\t\t\tb = b[i+len(\"\\n\"):]\n\t\t\t} else {\n\t\t\t\tb = nil\n\t\t\t}\n\t\tdefault:\n\t\t\treturn b\n\t\t}\n\t}\n\treturn b\n}\n\n// errId extracts a byte sequence that looks like an invalid ID\n// (for the purposes of error reporting).\nfunc errId(seq []byte) []byte {\n\tconst maxLen = 32\n\tfor i := 0; i < len(seq); {\n\t\tif i > maxLen {\n\t\t\treturn append(seq[:i:i], \"…\"...)\n\t\t}\n\t\tr, size := utf8.DecodeRune(seq[i:])\n\t\tif r > utf8.RuneSelf || (r != '/' && isDelim(byte(r))) {\n\t\t\tif i == 0 {\n\t\t\t\t// Either the first byte is invalid UTF-8 or a\n\t\t\t\t// delimiter, or the first rune is non-ASCII.\n\t\t\t\t// Return it as-is.\n\t\t\t\ti = size\n\t\t\t}\n\t\t\treturn seq[:i:i]\n\t\t}\n\t\ti += size\n\t}\n\t// No delimiter found.\n\treturn seq\n}\n\n// isDelim returns true if given byte is a delimiter character.\nfunc isDelim(c byte) bool {\n\treturn !(c == '-' || c == '+' || c == '.' || c == '_' ||\n\t\t('a' <= c && c <= 'z') ||\n\t\t('A' <= c && c <= 'Z') ||\n\t\t('0' <= c && c <= '9'))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\n// parseNumberValue parses a number from the input and returns a Token object.\nfunc (d *Decoder) parseNumberValue() (Token, bool) {\n\tin := d.in\n\tnum := parseNumber(in)\n\tif num.size == 0 {\n\t\treturn Token{}, false\n\t}\n\tnumAttrs := num.kind\n\tif num.neg {\n\t\tnumAttrs |= isNegative\n\t}\n\ttok := Token{\n\t\tkind:     Scalar,\n\t\tattrs:    numberValue,\n\t\tpos:      len(d.orig) - len(d.in),\n\t\traw:      d.in[:num.size],\n\t\tstr:      num.string(d.in),\n\t\tnumAttrs: numAttrs,\n\t}\n\td.consume(num.size)\n\treturn tok, true\n}\n\nconst (\n\tnumDec uint8 = (1 << iota) / 2\n\tnumHex\n\tnumOct\n\tnumFloat\n)\n\n// number is the result of parsing out a valid number from parseNumber. It\n// contains data for doing float or integer conversion via the strconv package\n// in conjunction with the input bytes.\ntype number struct {\n\tkind uint8\n\tneg  bool\n\tsize int\n\t// if neg, this is the length of whitespace and comments between\n\t// the minus sign and the rest fo the number literal\n\tsep int\n}\n\nfunc (num number) string(data []byte) string {\n\tstrSize := num.size\n\tlast := num.size - 1\n\tif num.kind == numFloat && (data[last] == 'f' || data[last] == 'F') {\n\t\tstrSize = last\n\t}\n\tif num.neg && num.sep > 0 {\n\t\t// strip whitespace/comments between negative sign and the rest\n\t\tstrLen := strSize - num.sep\n\t\tstr := make([]byte, strLen)\n\t\tstr[0] = data[0]\n\t\tcopy(str[1:], data[num.sep+1:strSize])\n\t\treturn string(str)\n\t}\n\treturn string(data[:strSize])\n\n}\n\n// parseNumber constructs a number object from given input. It allows for the\n// following patterns:\n//\n//\tinteger: ^-?([1-9][0-9]*|0[xX][0-9a-fA-F]+|0[0-7]*)\n//\tfloat: ^-?((0|[1-9][0-9]*)?([.][0-9]*)?([eE][+-]?[0-9]+)?[fF]?)\n//\n// It also returns the number of parsed bytes for the given number, 0 if it is\n// not a number.\nfunc parseNumber(input []byte) number {\n\tkind := numDec\n\tvar size int\n\tvar neg bool\n\n\ts := input\n\tif len(s) == 0 {\n\t\treturn number{}\n\t}\n\n\t// Optional -\n\tvar sep int\n\tif s[0] == '-' {\n\t\tneg = true\n\t\ts = s[1:]\n\t\tsize++\n\t\t// Consume any whitespace or comments between the\n\t\t// negative sign and the rest of the number\n\t\tlenBefore := len(s)\n\t\ts = consume(s, 0)\n\t\tsep = lenBefore - len(s)\n\t\tsize += sep\n\t\tif len(s) == 0 {\n\t\t\treturn number{}\n\t\t}\n\t}\n\n\tswitch {\n\tcase s[0] == '0':\n\t\tif len(s) > 1 {\n\t\t\tswitch {\n\t\t\tcase s[1] == 'x' || s[1] == 'X':\n\t\t\t\t// Parse as hex number.\n\t\t\t\tkind = numHex\n\t\t\t\tn := 2\n\t\t\t\ts = s[2:]\n\t\t\t\tfor len(s) > 0 && (('0' <= s[0] && s[0] <= '9') ||\n\t\t\t\t\t('a' <= s[0] && s[0] <= 'f') ||\n\t\t\t\t\t('A' <= s[0] && s[0] <= 'F')) {\n\t\t\t\t\ts = s[1:]\n\t\t\t\t\tn++\n\t\t\t\t}\n\t\t\t\tif n == 2 {\n\t\t\t\t\treturn number{}\n\t\t\t\t}\n\t\t\t\tsize += n\n\n\t\t\tcase '0' <= s[1] && s[1] <= '7':\n\t\t\t\t// Parse as octal number.\n\t\t\t\tkind = numOct\n\t\t\t\tn := 2\n\t\t\t\ts = s[2:]\n\t\t\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '7' {\n\t\t\t\t\ts = s[1:]\n\t\t\t\t\tn++\n\t\t\t\t}\n\t\t\t\tsize += n\n\t\t\t}\n\n\t\t\tif kind&(numHex|numOct) > 0 {\n\t\t\t\tif len(s) > 0 && !isDelim(s[0]) {\n\t\t\t\t\treturn number{}\n\t\t\t\t}\n\t\t\t\treturn number{kind: kind, neg: neg, size: size, sep: sep}\n\t\t\t}\n\t\t}\n\t\ts = s[1:]\n\t\tsize++\n\n\tcase '1' <= s[0] && s[0] <= '9':\n\t\tn := 1\n\t\ts = s[1:]\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\tsize += n\n\n\tcase s[0] == '.':\n\t\t// Set kind to numFloat to signify the intent to parse as float. And\n\t\t// that it needs to have other digits after '.'.\n\t\tkind = numFloat\n\n\tdefault:\n\t\treturn number{}\n\t}\n\n\t// . followed by 0 or more digits.\n\tif len(s) > 0 && s[0] == '.' {\n\t\tn := 1\n\t\ts = s[1:]\n\t\t// If decimal point was before any digits, it should be followed by\n\t\t// other digits.\n\t\tif len(s) == 0 && kind == numFloat {\n\t\t\treturn number{}\n\t\t}\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\tsize += n\n\t\tkind = numFloat\n\t}\n\n\t// e or E followed by an optional - or + and 1 or more digits.\n\tif len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') {\n\t\tkind = numFloat\n\t\ts = s[1:]\n\t\tn := 1\n\t\tif s[0] == '+' || s[0] == '-' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t\tif len(s) == 0 {\n\t\t\t\treturn number{}\n\t\t\t}\n\t\t}\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\tsize += n\n\t}\n\n\t// Optional suffix f or F for floats.\n\tif len(s) > 0 && (s[0] == 'f' || s[0] == 'F') {\n\t\tkind = numFloat\n\t\ts = s[1:]\n\t\tsize++\n\t}\n\n\t// Check that next byte is a delimiter or it is at the end.\n\tif len(s) > 0 && !isDelim(s[0]) {\n\t\treturn number{}\n\t}\n\n\treturn number{kind: kind, neg: neg, size: size, sep: sep}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\nimport (\n\t\"bytes\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf16\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/strs\"\n)\n\n// parseStringValue parses string field token.\n// This differs from parseString since the text format allows\n// multiple back-to-back string literals where they are semantically treated\n// as a single large string with all values concatenated.\n//\n// E.g., `\"foo\" \"bar\" \"baz\"` => \"foobarbaz\"\nfunc (d *Decoder) parseStringValue() (Token, error) {\n\t// Note that the ending quote is sufficient to unambiguously mark the end\n\t// of a string. Thus, the text grammar does not require intervening\n\t// whitespace or control characters in-between strings.\n\t// Thus, the following is valid:\n\t//\t`\"foo\"'bar'\"baz\"` => \"foobarbaz\"\n\tin0 := d.in\n\tvar ss []string\n\tfor len(d.in) > 0 && (d.in[0] == '\"' || d.in[0] == '\\'') {\n\t\ts, err := d.parseString()\n\t\tif err != nil {\n\t\t\treturn Token{}, err\n\t\t}\n\t\tss = append(ss, s)\n\t}\n\t// d.in already points to the end of the value at this point.\n\treturn Token{\n\t\tkind:  Scalar,\n\t\tattrs: stringValue,\n\t\tpos:   len(d.orig) - len(in0),\n\t\traw:   in0[:len(in0)-len(d.in)],\n\t\tstr:   strings.Join(ss, \"\"),\n\t}, nil\n}\n\n// parseString parses a string value enclosed in \" or '.\nfunc (d *Decoder) parseString() (string, error) {\n\tin := d.in\n\tif len(in) == 0 {\n\t\treturn \"\", ErrUnexpectedEOF\n\t}\n\tquote := in[0]\n\tin = in[1:]\n\ti := indexNeedEscapeInBytes(in)\n\tin, out := in[i:], in[:i:i] // set cap to prevent mutations\n\tfor len(in) > 0 {\n\t\tswitch r, n := utf8.DecodeRune(in); {\n\t\tcase r == utf8.RuneError && n == 1:\n\t\t\treturn \"\", d.newSyntaxError(\"invalid UTF-8 detected\")\n\t\tcase r == 0 || r == '\\n':\n\t\t\treturn \"\", d.newSyntaxError(\"invalid character %q in string\", r)\n\t\tcase r == rune(quote):\n\t\t\tin = in[1:]\n\t\t\td.consume(len(d.in) - len(in))\n\t\t\treturn string(out), nil\n\t\tcase r == '\\\\':\n\t\t\tif len(in) < 2 {\n\t\t\t\treturn \"\", ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch r := in[1]; r {\n\t\t\tcase '\"', '\\'', '\\\\', '?':\n\t\t\t\tin, out = in[2:], append(out, r)\n\t\t\tcase 'a':\n\t\t\t\tin, out = in[2:], append(out, '\\a')\n\t\t\tcase 'b':\n\t\t\t\tin, out = in[2:], append(out, '\\b')\n\t\t\tcase 'n':\n\t\t\t\tin, out = in[2:], append(out, '\\n')\n\t\t\tcase 'r':\n\t\t\t\tin, out = in[2:], append(out, '\\r')\n\t\t\tcase 't':\n\t\t\t\tin, out = in[2:], append(out, '\\t')\n\t\t\tcase 'v':\n\t\t\t\tin, out = in[2:], append(out, '\\v')\n\t\t\tcase 'f':\n\t\t\t\tin, out = in[2:], append(out, '\\f')\n\t\t\tcase '0', '1', '2', '3', '4', '5', '6', '7':\n\t\t\t\t// One, two, or three octal characters.\n\t\t\t\tn := len(in[1:]) - len(bytes.TrimLeft(in[1:], \"01234567\"))\n\t\t\t\tif n > 3 {\n\t\t\t\t\tn = 3\n\t\t\t\t}\n\t\t\t\tv, err := strconv.ParseUint(string(in[1:1+n]), 8, 8)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", d.newSyntaxError(\"invalid octal escape code %q in string\", in[:1+n])\n\t\t\t\t}\n\t\t\t\tin, out = in[1+n:], append(out, byte(v))\n\t\t\tcase 'x':\n\t\t\t\t// One or two hexadecimal characters.\n\t\t\t\tn := len(in[2:]) - len(bytes.TrimLeft(in[2:], \"0123456789abcdefABCDEF\"))\n\t\t\t\tif n > 2 {\n\t\t\t\t\tn = 2\n\t\t\t\t}\n\t\t\t\tv, err := strconv.ParseUint(string(in[2:2+n]), 16, 8)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", d.newSyntaxError(\"invalid hex escape code %q in string\", in[:2+n])\n\t\t\t\t}\n\t\t\t\tin, out = in[2+n:], append(out, byte(v))\n\t\t\tcase 'u', 'U':\n\t\t\t\t// Four or eight hexadecimal characters\n\t\t\t\tn := 6\n\t\t\t\tif r == 'U' {\n\t\t\t\t\tn = 10\n\t\t\t\t}\n\t\t\t\tif len(in) < n {\n\t\t\t\t\treturn \"\", ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv, err := strconv.ParseUint(string(in[2:n]), 16, 32)\n\t\t\t\tif utf8.MaxRune < v || err != nil {\n\t\t\t\t\treturn \"\", d.newSyntaxError(\"invalid Unicode escape code %q in string\", in[:n])\n\t\t\t\t}\n\t\t\t\tin = in[n:]\n\n\t\t\t\tr := rune(v)\n\t\t\t\tif utf16.IsSurrogate(r) {\n\t\t\t\t\tif len(in) < 6 {\n\t\t\t\t\t\treturn \"\", ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tv, err := strconv.ParseUint(string(in[2:6]), 16, 16)\n\t\t\t\t\tr = utf16.DecodeRune(r, rune(v))\n\t\t\t\t\tif in[0] != '\\\\' || in[1] != 'u' || r == unicode.ReplacementChar || err != nil {\n\t\t\t\t\t\treturn \"\", d.newSyntaxError(\"invalid Unicode escape code %q in string\", in[:6])\n\t\t\t\t\t}\n\t\t\t\t\tin = in[6:]\n\t\t\t\t}\n\t\t\t\tout = append(out, string(r)...)\n\t\t\tdefault:\n\t\t\t\treturn \"\", d.newSyntaxError(\"invalid escape code %q in string\", in[:2])\n\t\t\t}\n\t\tdefault:\n\t\t\ti := indexNeedEscapeInBytes(in[n:])\n\t\t\tin, out = in[n+i:], append(out, in[:n+i]...)\n\t\t}\n\t}\n\treturn \"\", ErrUnexpectedEOF\n}\n\n// indexNeedEscapeInString returns the index of the character that needs\n// escaping. If no characters need escaping, this returns the input length.\nfunc indexNeedEscapeInBytes(b []byte) int { return indexNeedEscapeInString(strs.UnsafeString(b)) }\n\n// UnmarshalString returns an unescaped string given a textproto string value.\n// String value needs to contain single or double quotes. This is only used by\n// internal/encoding/defval package for unmarshaling bytes.\nfunc UnmarshalString(s string) (string, error) {\n\td := NewDecoder([]byte(s))\n\treturn d.parseString()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/flags\"\n)\n\n// Kind represents a token kind expressible in the textproto format.\ntype Kind uint8\n\n// Kind values.\nconst (\n\tInvalid Kind = iota\n\tEOF\n\tName   // Name indicates the field name.\n\tScalar // Scalar are scalar values, e.g. \"string\", 47, ENUM_LITERAL, true.\n\tMessageOpen\n\tMessageClose\n\tListOpen\n\tListClose\n\n\t// comma and semi-colon are only for parsing in between values and should not be exposed.\n\tcomma\n\tsemicolon\n\n\t// bof indicates beginning of file, which is the default token\n\t// kind at the beginning of parsing.\n\tbof = Invalid\n)\n\nfunc (t Kind) String() string {\n\tswitch t {\n\tcase Invalid:\n\t\treturn \"<invalid>\"\n\tcase EOF:\n\t\treturn \"eof\"\n\tcase Scalar:\n\t\treturn \"scalar\"\n\tcase Name:\n\t\treturn \"name\"\n\tcase MessageOpen:\n\t\treturn \"{\"\n\tcase MessageClose:\n\t\treturn \"}\"\n\tcase ListOpen:\n\t\treturn \"[\"\n\tcase ListClose:\n\t\treturn \"]\"\n\tcase comma:\n\t\treturn \",\"\n\tcase semicolon:\n\t\treturn \";\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<invalid:%v>\", uint8(t))\n\t}\n}\n\n// NameKind represents different types of field names.\ntype NameKind uint8\n\n// NameKind values.\nconst (\n\tIdentName NameKind = iota + 1\n\tTypeName\n\tFieldNumber\n)\n\nfunc (t NameKind) String() string {\n\tswitch t {\n\tcase IdentName:\n\t\treturn \"IdentName\"\n\tcase TypeName:\n\t\treturn \"TypeName\"\n\tcase FieldNumber:\n\t\treturn \"FieldNumber\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<invalid:%v>\", uint8(t))\n\t}\n}\n\n// Bit mask in Token.attrs to indicate if a Name token is followed by the\n// separator char ':'. The field name separator char is optional for message\n// field or repeated message field, but required for all other types. Decoder\n// simply indicates whether a Name token is followed by separator or not.  It is\n// up to the prototext package to validate.\nconst hasSeparator = 1 << 7\n\n// Scalar value types.\nconst (\n\tnumberValue = iota + 1\n\tstringValue\n\tliteralValue\n)\n\n// Bit mask in Token.numAttrs to indicate that the number is a negative.\nconst isNegative = 1 << 7\n\n// Token provides a parsed token kind and value. Values are provided by the\n// different accessor methods.\ntype Token struct {\n\t// Kind of the Token object.\n\tkind Kind\n\t// attrs contains metadata for the following Kinds:\n\t// Name: hasSeparator bit and one of NameKind.\n\t// Scalar: one of numberValue, stringValue, literalValue.\n\tattrs uint8\n\t// numAttrs contains metadata for numberValue:\n\t// - highest bit is whether negative or positive.\n\t// - lower bits indicate one of numDec, numHex, numOct, numFloat.\n\tnumAttrs uint8\n\t// pos provides the position of the token in the original input.\n\tpos int\n\t// raw bytes of the serialized token.\n\t// This is a subslice into the original input.\n\traw []byte\n\t// str contains parsed string for the following:\n\t// - stringValue of Scalar kind\n\t// - numberValue of Scalar kind\n\t// - TypeName of Name kind\n\tstr string\n}\n\n// Kind returns the token kind.\nfunc (t Token) Kind() Kind {\n\treturn t.kind\n}\n\n// RawString returns the read value in string.\nfunc (t Token) RawString() string {\n\treturn string(t.raw)\n}\n\n// Pos returns the token position from the input.\nfunc (t Token) Pos() int {\n\treturn t.pos\n}\n\n// NameKind returns IdentName, TypeName or FieldNumber.\n// It panics if type is not Name.\nfunc (t Token) NameKind() NameKind {\n\tif t.kind == Name {\n\t\treturn NameKind(t.attrs &^ hasSeparator)\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a Name type: %s\", t.kind))\n}\n\n// HasSeparator returns true if the field name is followed by the separator char\n// ':', else false. It panics if type is not Name.\nfunc (t Token) HasSeparator() bool {\n\tif t.kind == Name {\n\t\treturn t.attrs&hasSeparator != 0\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a Name type: %s\", t.kind))\n}\n\n// IdentName returns the value for IdentName type.\nfunc (t Token) IdentName() string {\n\tif t.kind == Name && t.attrs&uint8(IdentName) != 0 {\n\t\treturn string(t.raw)\n\t}\n\tpanic(fmt.Sprintf(\"Token is not an IdentName: %s:%s\", t.kind, NameKind(t.attrs&^hasSeparator)))\n}\n\n// TypeName returns the value for TypeName type.\nfunc (t Token) TypeName() string {\n\tif t.kind == Name && t.attrs&uint8(TypeName) != 0 {\n\t\treturn t.str\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a TypeName: %s:%s\", t.kind, NameKind(t.attrs&^hasSeparator)))\n}\n\n// FieldNumber returns the value for FieldNumber type. It returns a\n// non-negative int32 value. Caller will still need to validate for the correct\n// field number range.\nfunc (t Token) FieldNumber() int32 {\n\tif t.kind != Name || t.attrs&uint8(FieldNumber) == 0 {\n\t\tpanic(fmt.Sprintf(\"Token is not a FieldNumber: %s:%s\", t.kind, NameKind(t.attrs&^hasSeparator)))\n\t}\n\t// Following should not return an error as it had already been called right\n\t// before this Token was constructed.\n\tnum, _ := strconv.ParseInt(string(t.raw), 10, 32)\n\treturn int32(num)\n}\n\n// String returns the string value for a Scalar type.\nfunc (t Token) String() (string, bool) {\n\tif t.kind != Scalar || t.attrs != stringValue {\n\t\treturn \"\", false\n\t}\n\treturn t.str, true\n}\n\n// Enum returns the literal value for a Scalar type for use as enum literals.\nfunc (t Token) Enum() (string, bool) {\n\tif t.kind != Scalar || t.attrs != literalValue || (len(t.raw) > 0 && t.raw[0] == '-') {\n\t\treturn \"\", false\n\t}\n\treturn string(t.raw), true\n}\n\n// Bool returns the bool value for a Scalar type.\nfunc (t Token) Bool() (bool, bool) {\n\tif t.kind != Scalar {\n\t\treturn false, false\n\t}\n\tswitch t.attrs {\n\tcase literalValue:\n\t\tif b, ok := boolLits[string(t.raw)]; ok {\n\t\t\treturn b, true\n\t\t}\n\tcase numberValue:\n\t\t// Unsigned integer representation of 0 or 1 is permitted: 00, 0x0, 01,\n\t\t// 0x1, etc.\n\t\tn, err := strconv.ParseUint(t.str, 0, 64)\n\t\tif err == nil {\n\t\t\tswitch n {\n\t\t\tcase 0:\n\t\t\t\treturn false, true\n\t\t\tcase 1:\n\t\t\t\treturn true, true\n\t\t\t}\n\t\t}\n\t}\n\treturn false, false\n}\n\n// These exact boolean literals are the ones supported in C++.\nvar boolLits = map[string]bool{\n\t\"t\":     true,\n\t\"true\":  true,\n\t\"True\":  true,\n\t\"f\":     false,\n\t\"false\": false,\n\t\"False\": false,\n}\n\n// Uint64 returns the uint64 value for a Scalar type.\nfunc (t Token) Uint64() (uint64, bool) {\n\tif t.kind != Scalar || t.attrs != numberValue ||\n\t\tt.numAttrs&isNegative > 0 || t.numAttrs&numFloat > 0 {\n\t\treturn 0, false\n\t}\n\tn, err := strconv.ParseUint(t.str, 0, 64)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn n, true\n}\n\n// Uint32 returns the uint32 value for a Scalar type.\nfunc (t Token) Uint32() (uint32, bool) {\n\tif t.kind != Scalar || t.attrs != numberValue ||\n\t\tt.numAttrs&isNegative > 0 || t.numAttrs&numFloat > 0 {\n\t\treturn 0, false\n\t}\n\tn, err := strconv.ParseUint(t.str, 0, 32)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn uint32(n), true\n}\n\n// Int64 returns the int64 value for a Scalar type.\nfunc (t Token) Int64() (int64, bool) {\n\tif t.kind != Scalar || t.attrs != numberValue || t.numAttrs&numFloat > 0 {\n\t\treturn 0, false\n\t}\n\tif n, err := strconv.ParseInt(t.str, 0, 64); err == nil {\n\t\treturn n, true\n\t}\n\t// C++ accepts large positive hex numbers as negative values.\n\t// This feature is here for proto1 backwards compatibility purposes.\n\tif flags.ProtoLegacy && (t.numAttrs == numHex) {\n\t\tif n, err := strconv.ParseUint(t.str, 0, 64); err == nil {\n\t\t\treturn int64(n), true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// Int32 returns the int32 value for a Scalar type.\nfunc (t Token) Int32() (int32, bool) {\n\tif t.kind != Scalar || t.attrs != numberValue || t.numAttrs&numFloat > 0 {\n\t\treturn 0, false\n\t}\n\tif n, err := strconv.ParseInt(t.str, 0, 32); err == nil {\n\t\treturn int32(n), true\n\t}\n\t// C++ accepts large positive hex numbers as negative values.\n\t// This feature is here for proto1 backwards compatibility purposes.\n\tif flags.ProtoLegacy && (t.numAttrs == numHex) {\n\t\tif n, err := strconv.ParseUint(t.str, 0, 32); err == nil {\n\t\t\treturn int32(n), true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// Float64 returns the float64 value for a Scalar type.\nfunc (t Token) Float64() (float64, bool) {\n\tif t.kind != Scalar {\n\t\treturn 0, false\n\t}\n\tswitch t.attrs {\n\tcase literalValue:\n\t\tif f, ok := floatLits[strings.ToLower(string(t.raw))]; ok {\n\t\t\treturn f, true\n\t\t}\n\tcase numberValue:\n\t\tn, err := strconv.ParseFloat(t.str, 64)\n\t\tif err == nil {\n\t\t\treturn n, true\n\t\t}\n\t\tnerr := err.(*strconv.NumError)\n\t\tif nerr.Err == strconv.ErrRange {\n\t\t\treturn n, true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// Float32 returns the float32 value for a Scalar type.\nfunc (t Token) Float32() (float32, bool) {\n\tif t.kind != Scalar {\n\t\treturn 0, false\n\t}\n\tswitch t.attrs {\n\tcase literalValue:\n\t\tif f, ok := floatLits[strings.ToLower(string(t.raw))]; ok {\n\t\t\treturn float32(f), true\n\t\t}\n\tcase numberValue:\n\t\tn, err := strconv.ParseFloat(t.str, 64)\n\t\tif err == nil {\n\t\t\t// Overflows are treated as (-)infinity.\n\t\t\treturn float32(n), true\n\t\t}\n\t\tnerr := err.(*strconv.NumError)\n\t\tif nerr.Err == strconv.ErrRange {\n\t\t\treturn float32(n), true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// These are the supported float literals which C++ permits case-insensitive\n// variants of these.\nvar floatLits = map[string]float64{\n\t\"nan\":       math.NaN(),\n\t\"inf\":       math.Inf(1),\n\t\"infinity\":  math.Inf(1),\n\t\"-inf\":      math.Inf(-1),\n\t\"-infinity\": math.Inf(-1),\n}\n\n// TokenEquals returns true if given Tokens are equal, else false.\nfunc TokenEquals(x, y Token) bool {\n\treturn x.kind == y.kind &&\n\t\tx.attrs == y.attrs &&\n\t\tx.numAttrs == y.numAttrs &&\n\t\tx.pos == y.pos &&\n\t\tbytes.Equal(x.raw, y.raw) &&\n\t\tx.str == y.str\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/doc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package text implements the text format for protocol buffers.\n// This package has no semantic understanding for protocol buffers and is only\n// a parser and composer for the format.\n//\n// There is no formal specification for the protobuf text format, as such the\n// C++ implementation (see google::protobuf::TextFormat) is the reference\n// implementation of the text format.\n//\n// This package is neither a superset nor a subset of the C++ implementation.\n// This implementation permits a more liberal grammar in some cases to be\n// backwards compatible with the historical Go implementation.\n// Future parsings unique to Go should not be added.\n// Some grammars allowed by the C++ implementation are deliberately\n// not implemented here because they are considered a bug by the protobuf team\n// and should not be replicated.\n//\n// The Go implementation should implement a sufficient amount of the C++\n// grammar such that the default text serialization by C++ can be parsed by Go.\n// However, just because the C++ parser accepts some input does not mean that\n// the Go implementation should as well.\n//\n// The text format is almost a superset of JSON except:\n//   - message keys are not quoted strings, but identifiers\n//   - the top-level value must be a message without the delimiters\npackage text\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/encode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\nimport (\n\t\"math\"\n\t\"math/bits\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/detrand\"\n\t\"google.golang.org/protobuf/internal/errors\"\n)\n\n// encType represents an encoding type.\ntype encType uint8\n\nconst (\n\t_ encType = (1 << iota) / 2\n\tname\n\tscalar\n\tmessageOpen\n\tmessageClose\n)\n\n// Encoder provides methods to write out textproto constructs and values. The user is\n// responsible for producing valid sequences of constructs and values.\ntype Encoder struct {\n\tencoderState\n\n\tindent      string\n\tdelims      [2]byte\n\toutputASCII bool\n}\n\ntype encoderState struct {\n\tlastType encType\n\tindents  []byte\n\tout      []byte\n}\n\n// NewEncoder returns an Encoder.\n//\n// If indent is a non-empty string, it causes every entry in a List or Message\n// to be preceded by the indent and trailed by a newline.\n//\n// If delims is not the zero value, it controls the delimiter characters used\n// for messages (e.g., \"{}\" vs \"<>\").\n//\n// If outputASCII is true, strings will be serialized in such a way that\n// multi-byte UTF-8 sequences are escaped. This property ensures that the\n// overall output is ASCII (as opposed to UTF-8).\nfunc NewEncoder(buf []byte, indent string, delims [2]byte, outputASCII bool) (*Encoder, error) {\n\te := &Encoder{\n\t\tencoderState: encoderState{out: buf},\n\t}\n\tif len(indent) > 0 {\n\t\tif strings.Trim(indent, \" \\t\") != \"\" {\n\t\t\treturn nil, errors.New(\"indent may only be composed of space and tab characters\")\n\t\t}\n\t\te.indent = indent\n\t}\n\tswitch delims {\n\tcase [2]byte{0, 0}:\n\t\te.delims = [2]byte{'{', '}'}\n\tcase [2]byte{'{', '}'}, [2]byte{'<', '>'}:\n\t\te.delims = delims\n\tdefault:\n\t\treturn nil, errors.New(\"delimiters may only be \\\"{}\\\" or \\\"<>\\\"\")\n\t}\n\te.outputASCII = outputASCII\n\n\treturn e, nil\n}\n\n// Bytes returns the content of the written bytes.\nfunc (e *Encoder) Bytes() []byte {\n\treturn e.out\n}\n\n// StartMessage writes out the '{' or '<' symbol.\nfunc (e *Encoder) StartMessage() {\n\te.prepareNext(messageOpen)\n\te.out = append(e.out, e.delims[0])\n}\n\n// EndMessage writes out the '}' or '>' symbol.\nfunc (e *Encoder) EndMessage() {\n\te.prepareNext(messageClose)\n\te.out = append(e.out, e.delims[1])\n}\n\n// WriteName writes out the field name and the separator ':'.\nfunc (e *Encoder) WriteName(s string) {\n\te.prepareNext(name)\n\te.out = append(e.out, s...)\n\te.out = append(e.out, ':')\n}\n\n// WriteBool writes out the given boolean value.\nfunc (e *Encoder) WriteBool(b bool) {\n\tif b {\n\t\te.WriteLiteral(\"true\")\n\t} else {\n\t\te.WriteLiteral(\"false\")\n\t}\n}\n\n// WriteString writes out the given string value.\nfunc (e *Encoder) WriteString(s string) {\n\te.prepareNext(scalar)\n\te.out = appendString(e.out, s, e.outputASCII)\n}\n\nfunc appendString(out []byte, in string, outputASCII bool) []byte {\n\tout = append(out, '\"')\n\ti := indexNeedEscapeInString(in)\n\tin, out = in[i:], append(out, in[:i]...)\n\tfor len(in) > 0 {\n\t\tswitch r, n := utf8.DecodeRuneInString(in); {\n\t\tcase r == utf8.RuneError && n == 1:\n\t\t\t// We do not report invalid UTF-8 because strings in the text format\n\t\t\t// are used to represent both the proto string and bytes type.\n\t\t\tr = rune(in[0])\n\t\t\tfallthrough\n\t\tcase r < ' ' || r == '\"' || r == '\\\\' || r == 0x7f:\n\t\t\tout = append(out, '\\\\')\n\t\t\tswitch r {\n\t\t\tcase '\"', '\\\\':\n\t\t\t\tout = append(out, byte(r))\n\t\t\tcase '\\n':\n\t\t\t\tout = append(out, 'n')\n\t\t\tcase '\\r':\n\t\t\t\tout = append(out, 'r')\n\t\t\tcase '\\t':\n\t\t\t\tout = append(out, 't')\n\t\t\tdefault:\n\t\t\t\tout = append(out, 'x')\n\t\t\t\tout = append(out, \"00\"[1+(bits.Len32(uint32(r))-1)/4:]...)\n\t\t\t\tout = strconv.AppendUint(out, uint64(r), 16)\n\t\t\t}\n\t\t\tin = in[n:]\n\t\tcase r >= utf8.RuneSelf && (outputASCII || r <= 0x009f):\n\t\t\tout = append(out, '\\\\')\n\t\t\tif r <= math.MaxUint16 {\n\t\t\t\tout = append(out, 'u')\n\t\t\t\tout = append(out, \"0000\"[1+(bits.Len32(uint32(r))-1)/4:]...)\n\t\t\t\tout = strconv.AppendUint(out, uint64(r), 16)\n\t\t\t} else {\n\t\t\t\tout = append(out, 'U')\n\t\t\t\tout = append(out, \"00000000\"[1+(bits.Len32(uint32(r))-1)/4:]...)\n\t\t\t\tout = strconv.AppendUint(out, uint64(r), 16)\n\t\t\t}\n\t\t\tin = in[n:]\n\t\tdefault:\n\t\t\ti := indexNeedEscapeInString(in[n:])\n\t\t\tin, out = in[n+i:], append(out, in[:n+i]...)\n\t\t}\n\t}\n\tout = append(out, '\"')\n\treturn out\n}\n\n// indexNeedEscapeInString returns the index of the character that needs\n// escaping. If no characters need escaping, this returns the input length.\nfunc indexNeedEscapeInString(s string) int {\n\tfor i := 0; i < len(s); i++ {\n\t\tif c := s[i]; c < ' ' || c == '\"' || c == '\\'' || c == '\\\\' || c >= 0x7f {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(s)\n}\n\n// WriteFloat writes out the given float value for given bitSize.\nfunc (e *Encoder) WriteFloat(n float64, bitSize int) {\n\te.prepareNext(scalar)\n\te.out = appendFloat(e.out, n, bitSize)\n}\n\nfunc appendFloat(out []byte, n float64, bitSize int) []byte {\n\tswitch {\n\tcase math.IsNaN(n):\n\t\treturn append(out, \"nan\"...)\n\tcase math.IsInf(n, +1):\n\t\treturn append(out, \"inf\"...)\n\tcase math.IsInf(n, -1):\n\t\treturn append(out, \"-inf\"...)\n\tdefault:\n\t\treturn strconv.AppendFloat(out, n, 'g', -1, bitSize)\n\t}\n}\n\n// WriteInt writes out the given signed integer value.\nfunc (e *Encoder) WriteInt(n int64) {\n\te.prepareNext(scalar)\n\te.out = strconv.AppendInt(e.out, n, 10)\n}\n\n// WriteUint writes out the given unsigned integer value.\nfunc (e *Encoder) WriteUint(n uint64) {\n\te.prepareNext(scalar)\n\te.out = strconv.AppendUint(e.out, n, 10)\n}\n\n// WriteLiteral writes out the given string as a literal value without quotes.\n// This is used for writing enum literal strings.\nfunc (e *Encoder) WriteLiteral(s string) {\n\te.prepareNext(scalar)\n\te.out = append(e.out, s...)\n}\n\n// prepareNext adds possible space and indentation for the next value based\n// on last encType and indent option. It also updates e.lastType to next.\nfunc (e *Encoder) prepareNext(next encType) {\n\tdefer func() {\n\t\te.lastType = next\n\t}()\n\n\t// Single line.\n\tif len(e.indent) == 0 {\n\t\t// Add space after each field before the next one.\n\t\tif e.lastType&(scalar|messageClose) != 0 && next == name {\n\t\t\te.out = append(e.out, ' ')\n\t\t\t// Add a random extra space to make output unstable.\n\t\t\tif detrand.Bool() {\n\t\t\t\te.out = append(e.out, ' ')\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\t// Multi-line.\n\tswitch {\n\tcase e.lastType == name:\n\t\te.out = append(e.out, ' ')\n\t\t// Add a random extra space after name: to make output unstable.\n\t\tif detrand.Bool() {\n\t\t\te.out = append(e.out, ' ')\n\t\t}\n\n\tcase e.lastType == messageOpen && next != messageClose:\n\t\te.indents = append(e.indents, e.indent...)\n\t\te.out = append(e.out, '\\n')\n\t\te.out = append(e.out, e.indents...)\n\n\tcase e.lastType&(scalar|messageClose) != 0:\n\t\tif next == messageClose {\n\t\t\te.indents = e.indents[:len(e.indents)-len(e.indent)]\n\t\t}\n\t\te.out = append(e.out, '\\n')\n\t\te.out = append(e.out, e.indents...)\n\t}\n}\n\n// Snapshot returns the current snapshot for use in Reset.\nfunc (e *Encoder) Snapshot() encoderState {\n\treturn e.encoderState\n}\n\n// Reset resets the Encoder to the given encoderState from a Snapshot.\nfunc (e *Encoder) Reset(es encoderState) {\n\te.encoderState = es\n}\n\n// AppendString appends the escaped form of the input string to b.\nfunc AppendString(b []byte, s string) []byte {\n\treturn appendString(b, s, false)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/errors/errors.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package errors implements functions to manipulate errors.\npackage errors\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/internal/detrand\"\n)\n\n// Error is a sentinel matching all errors produced by this package.\nvar Error = errors.New(\"protobuf error\")\n\n// New formats a string according to the format specifier and arguments and\n// returns an error that has a \"proto\" prefix.\nfunc New(f string, x ...any) error {\n\treturn &prefixError{s: format(f, x...)}\n}\n\ntype prefixError struct{ s string }\n\nvar prefix = func() string {\n\t// Deliberately introduce instability into the error message string to\n\t// discourage users from performing error string comparisons.\n\tif detrand.Bool() {\n\t\treturn \"proto: \" // use non-breaking spaces (U+00a0)\n\t} else {\n\t\treturn \"proto: \" // use regular spaces (U+0020)\n\t}\n}()\n\nfunc (e *prefixError) Error() string {\n\treturn prefix + e.s\n}\n\nfunc (e *prefixError) Unwrap() error {\n\treturn Error\n}\n\n// Wrap returns an error that has a \"proto\" prefix, the formatted string described\n// by the format specifier and arguments, and a suffix of err. The error wraps err.\nfunc Wrap(err error, f string, x ...any) error {\n\treturn &wrapError{\n\t\ts:   format(f, x...),\n\t\terr: err,\n\t}\n}\n\ntype wrapError struct {\n\ts   string\n\terr error\n}\n\nfunc (e *wrapError) Error() string {\n\treturn format(\"%v%v: %v\", prefix, e.s, e.err)\n}\n\nfunc (e *wrapError) Unwrap() error {\n\treturn e.err\n}\n\nfunc (e *wrapError) Is(target error) bool {\n\treturn target == Error\n}\n\nfunc format(f string, x ...any) string {\n\t// avoid \"proto: \" prefix when chaining\n\tfor i := 0; i < len(x); i++ {\n\t\tswitch e := x[i].(type) {\n\t\tcase *prefixError:\n\t\t\tx[i] = e.s\n\t\tcase *wrapError:\n\t\t\tx[i] = format(\"%v: %v\", e.s, e.err)\n\t\t}\n\t}\n\treturn fmt.Sprintf(f, x...)\n}\n\nfunc InvalidUTF8(name string) error {\n\treturn New(\"field %v contains invalid UTF-8\", name)\n}\n\nfunc RequiredNotSet(name string) error {\n\treturn New(\"required field %v not set\", name)\n}\n\ntype SizeMismatchError struct {\n\tCalculated, Measured int\n}\n\nfunc (e *SizeMismatchError) Error() string {\n\treturn fmt.Sprintf(\"size mismatch (see https://github.com/golang/protobuf/issues/1609): calculated=%d, measured=%d\", e.Calculated, e.Measured)\n}\n\nfunc MismatchedSizeCalculation(calculated, measured int) error {\n\treturn &SizeMismatchError{\n\t\tCalculated: calculated,\n\t\tMeasured:   measured,\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/build.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package filedesc provides functionality for constructing descriptors.\n//\n// The types in this package implement interfaces in the protoreflect package\n// related to protobuf descripriptors.\npackage filedesc\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Builder construct a protoreflect.FileDescriptor from the raw descriptor.\ntype Builder struct {\n\t// GoPackagePath is the Go package path that is invoking this builder.\n\tGoPackagePath string\n\n\t// RawDescriptor is the wire-encoded bytes of FileDescriptorProto\n\t// and must be populated.\n\tRawDescriptor []byte\n\n\t// NumEnums is the total number of enums declared in the file.\n\tNumEnums int32\n\t// NumMessages is the total number of messages declared in the file.\n\t// It includes the implicit message declarations for map entries.\n\tNumMessages int32\n\t// NumExtensions is the total number of extensions declared in the file.\n\tNumExtensions int32\n\t// NumServices is the total number of services declared in the file.\n\tNumServices int32\n\n\t// TypeResolver resolves extension field types for descriptor options.\n\t// If nil, it uses protoregistry.GlobalTypes.\n\tTypeResolver interface {\n\t\tprotoregistry.ExtensionTypeResolver\n\t}\n\n\t// FileRegistry is use to lookup file, enum, and message dependencies.\n\t// Once constructed, the file descriptor is registered here.\n\t// If nil, it uses protoregistry.GlobalFiles.\n\tFileRegistry interface {\n\t\tFindFileByPath(string) (protoreflect.FileDescriptor, error)\n\t\tFindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error)\n\t\tRegisterFile(protoreflect.FileDescriptor) error\n\t}\n}\n\n// resolverByIndex is an interface Builder.FileRegistry may implement.\n// If so, it permits looking up an enum or message dependency based on the\n// sub-list and element index into filetype.Builder.DependencyIndexes.\ntype resolverByIndex interface {\n\tFindEnumByIndex(int32, int32, []Enum, []Message) protoreflect.EnumDescriptor\n\tFindMessageByIndex(int32, int32, []Enum, []Message) protoreflect.MessageDescriptor\n}\n\n// Indexes of each sub-list in filetype.Builder.DependencyIndexes.\nconst (\n\tlistFieldDeps int32 = iota\n\tlistExtTargets\n\tlistExtDeps\n\tlistMethInDeps\n\tlistMethOutDeps\n)\n\n// Out is the output of the Builder.\ntype Out struct {\n\tFile protoreflect.FileDescriptor\n\n\t// Enums is all enum descriptors in \"flattened ordering\".\n\tEnums []Enum\n\t// Messages is all message descriptors in \"flattened ordering\".\n\t// It includes the implicit message declarations for map entries.\n\tMessages []Message\n\t// Extensions is all extension descriptors in \"flattened ordering\".\n\tExtensions []Extension\n\t// Service is all service descriptors in \"flattened ordering\".\n\tServices []Service\n}\n\n// Build constructs a FileDescriptor given the parameters set in Builder.\n// It assumes that the inputs are well-formed and panics if any inconsistencies\n// are encountered.\n//\n// If NumEnums+NumMessages+NumExtensions+NumServices is zero,\n// then Build automatically derives them from the raw descriptor.\nfunc (db Builder) Build() (out Out) {\n\t// Populate the counts if uninitialized.\n\tif db.NumEnums+db.NumMessages+db.NumExtensions+db.NumServices == 0 {\n\t\tdb.unmarshalCounts(db.RawDescriptor, true)\n\t}\n\n\t// Initialize resolvers and registries if unpopulated.\n\tif db.TypeResolver == nil {\n\t\tdb.TypeResolver = protoregistry.GlobalTypes\n\t}\n\tif db.FileRegistry == nil {\n\t\tdb.FileRegistry = protoregistry.GlobalFiles\n\t}\n\n\tfd := newRawFile(db)\n\tout.File = fd\n\tout.Enums = fd.allEnums\n\tout.Messages = fd.allMessages\n\tout.Extensions = fd.allExtensions\n\tout.Services = fd.allServices\n\n\tif err := db.FileRegistry.RegisterFile(fd); err != nil {\n\t\tpanic(err)\n\t}\n\treturn out\n}\n\n// unmarshalCounts counts the number of enum, message, extension, and service\n// declarations in the raw message, which is either a FileDescriptorProto\n// or a MessageDescriptorProto depending on whether isFile is set.\nfunc (db *Builder) unmarshalCounts(b []byte, isFile bool) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tif isFile {\n\t\t\t\tswitch num {\n\t\t\t\tcase genid.FileDescriptorProto_EnumType_field_number:\n\t\t\t\t\tdb.NumEnums++\n\t\t\t\tcase genid.FileDescriptorProto_MessageType_field_number:\n\t\t\t\t\tdb.unmarshalCounts(v, false)\n\t\t\t\t\tdb.NumMessages++\n\t\t\t\tcase genid.FileDescriptorProto_Extension_field_number:\n\t\t\t\t\tdb.NumExtensions++\n\t\t\t\tcase genid.FileDescriptorProto_Service_field_number:\n\t\t\t\t\tdb.NumServices++\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch num {\n\t\t\t\tcase genid.DescriptorProto_EnumType_field_number:\n\t\t\t\t\tdb.NumEnums++\n\t\t\t\tcase genid.DescriptorProto_NestedType_field_number:\n\t\t\t\t\tdb.unmarshalCounts(v, false)\n\t\t\t\t\tdb.NumMessages++\n\t\t\t\tcase genid.DescriptorProto_Extension_field_number:\n\t\t\t\t\tdb.NumExtensions++\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/internal/descfmt\"\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/encoding/defval\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Edition is an Enum for proto2.Edition\ntype Edition int32\n\n// These values align with the value of Enum in descriptor.proto which allows\n// direct conversion between the proto enum and this enum.\nconst (\n\tEditionUnknown     Edition = 0\n\tEditionProto2      Edition = 998\n\tEditionProto3      Edition = 999\n\tEdition2023        Edition = 1000\n\tEdition2024        Edition = 1001\n\tEditionUnstable    Edition = 9999\n\tEditionUnsupported Edition = 100000\n)\n\n// The types in this file may have a suffix:\n//\t• L0: Contains fields common to all descriptors (except File) and\n//\tmust be initialized up front.\n//\t• L1: Contains fields specific to a descriptor and\n//\tmust be initialized up front. If the associated proto uses Editions, the\n//  Editions features must always be resolved. If not explicitly set, the\n//  appropriate default must be resolved and set.\n//\t• L2: Contains fields that are lazily initialized when constructing\n//\tfrom the raw file descriptor. When constructing as a literal, the L2\n//\tfields must be initialized up front.\n//\n// The types are exported so that packages like reflect/protodesc can\n// directly construct descriptors.\n\ntype (\n\tFile struct {\n\t\tfileRaw\n\t\tL1 FileL1\n\n\t\tonce uint32     // atomically set if L2 is valid\n\t\tmu   sync.Mutex // protects L2\n\t\tL2   *FileL2\n\t}\n\tFileL1 struct {\n\t\tSyntax  protoreflect.Syntax\n\t\tEdition Edition // Only used if Syntax == Editions\n\t\tPath    string\n\t\tPackage protoreflect.FullName\n\n\t\tEnums      Enums\n\t\tMessages   Messages\n\t\tExtensions Extensions\n\t\tServices   Services\n\n\t\tEditionFeatures EditionFeatures\n\t}\n\tFileL2 struct {\n\t\tOptions       func() protoreflect.ProtoMessage\n\t\tImports       FileImports\n\t\tOptionImports func() protoreflect.FileImports\n\t\tLocations     SourceLocations\n\t}\n\n\t// EditionFeatures is a frequently-instantiated struct, so please take care\n\t// to minimize padding when adding new fields to this struct (add them in\n\t// the right place/order).\n\tEditionFeatures struct {\n\t\t// StripEnumPrefix determines if the plugin generates enum value\n\t\t// constants as-is, with their prefix stripped, or both variants.\n\t\tStripEnumPrefix int\n\n\t\t// IsFieldPresence is true if field_presence is EXPLICIT\n\t\t// https://protobuf.dev/editions/features/#field_presence\n\t\tIsFieldPresence bool\n\n\t\t// IsFieldPresence is true if field_presence is LEGACY_REQUIRED\n\t\t// https://protobuf.dev/editions/features/#field_presence\n\t\tIsLegacyRequired bool\n\n\t\t// IsOpenEnum is true if enum_type is OPEN\n\t\t// https://protobuf.dev/editions/features/#enum_type\n\t\tIsOpenEnum bool\n\n\t\t// IsPacked is true if repeated_field_encoding is PACKED\n\t\t// https://protobuf.dev/editions/features/#repeated_field_encoding\n\t\tIsPacked bool\n\n\t\t// IsUTF8Validated is true if utf_validation is VERIFY\n\t\t// https://protobuf.dev/editions/features/#utf8_validation\n\t\tIsUTF8Validated bool\n\n\t\t// IsDelimitedEncoded is true if message_encoding is DELIMITED\n\t\t// https://protobuf.dev/editions/features/#message_encoding\n\t\tIsDelimitedEncoded bool\n\n\t\t// IsJSONCompliant is true if json_format is ALLOW\n\t\t// https://protobuf.dev/editions/features/#json_format\n\t\tIsJSONCompliant bool\n\n\t\t// GenerateLegacyUnmarshalJSON determines if the plugin generates the\n\t\t// UnmarshalJSON([]byte) error method for enums.\n\t\tGenerateLegacyUnmarshalJSON bool\n\t\t// APILevel controls which API (Open, Hybrid or Opaque) should be used\n\t\t// for generated code (.pb.go files).\n\t\tAPILevel int\n\t}\n)\n\nfunc (fd *File) ParentFile() protoreflect.FileDescriptor { return fd }\nfunc (fd *File) Parent() protoreflect.Descriptor         { return nil }\nfunc (fd *File) Index() int                              { return 0 }\nfunc (fd *File) Syntax() protoreflect.Syntax             { return fd.L1.Syntax }\nfunc (fd *File) Name() protoreflect.Name                 { return fd.L1.Package.Name() }\nfunc (fd *File) FullName() protoreflect.FullName         { return fd.L1.Package }\nfunc (fd *File) IsPlaceholder() bool                     { return false }\nfunc (fd *File) Options() protoreflect.ProtoMessage {\n\tif f := fd.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.File\n}\nfunc (fd *File) Path() string                                  { return fd.L1.Path }\nfunc (fd *File) Package() protoreflect.FullName                { return fd.L1.Package }\nfunc (fd *File) Imports() protoreflect.FileImports             { return &fd.lazyInit().Imports }\nfunc (fd *File) Enums() protoreflect.EnumDescriptors           { return &fd.L1.Enums }\nfunc (fd *File) Messages() protoreflect.MessageDescriptors     { return &fd.L1.Messages }\nfunc (fd *File) Extensions() protoreflect.ExtensionDescriptors { return &fd.L1.Extensions }\nfunc (fd *File) Services() protoreflect.ServiceDescriptors     { return &fd.L1.Services }\nfunc (fd *File) SourceLocations() protoreflect.SourceLocations { return &fd.lazyInit().Locations }\nfunc (fd *File) Format(s fmt.State, r rune)                    { descfmt.FormatDesc(s, r, fd) }\nfunc (fd *File) ProtoType(protoreflect.FileDescriptor)         {}\nfunc (fd *File) ProtoInternal(pragma.DoNotImplement)           {}\n\n// The next two are not part of the FileDescriptor interface. They are just used to reconstruct\n// the original FileDescriptor proto.\nfunc (fd *File) Edition() int32 { return int32(fd.L1.Edition) }\nfunc (fd *File) OptionImports() protoreflect.FileImports {\n\tif f := fd.lazyInit().OptionImports; f != nil {\n\t\treturn f()\n\t}\n\treturn emptyFiles\n}\n\nfunc (fd *File) lazyInit() *FileL2 {\n\tif atomic.LoadUint32(&fd.once) == 0 {\n\t\tfd.lazyInitOnce()\n\t}\n\treturn fd.L2\n}\n\nfunc (fd *File) lazyInitOnce() {\n\tfd.mu.Lock()\n\tif fd.L2 == nil {\n\t\tfd.lazyRawInit() // recursively initializes all L2 structures\n\t}\n\tatomic.StoreUint32(&fd.once, 1)\n\tfd.mu.Unlock()\n}\n\n// GoPackagePath is a pseudo-internal API for determining the Go package path\n// that this file descriptor is declared in.\n//\n// WARNING: This method is exempt from the compatibility promise and may be\n// removed in the future without warning.\nfunc (fd *File) GoPackagePath() string {\n\treturn fd.builder.GoPackagePath\n}\n\ntype (\n\tEnum struct {\n\t\tBase\n\t\tL1 EnumL1\n\t\tL2 *EnumL2 // protected by fileDesc.once\n\t}\n\tEnumL1 struct {\n\t\tEditionFeatures EditionFeatures\n\t\tVisibility      int32\n\t\teagerValues     bool // controls whether EnumL2.Values is already populated\n\t}\n\tEnumL2 struct {\n\t\tOptions        func() protoreflect.ProtoMessage\n\t\tValues         EnumValues\n\t\tReservedNames  Names\n\t\tReservedRanges EnumRanges\n\t}\n\n\tEnumValue struct {\n\t\tBase\n\t\tL1 EnumValueL1\n\t}\n\tEnumValueL1 struct {\n\t\tOptions func() protoreflect.ProtoMessage\n\t\tNumber  protoreflect.EnumNumber\n\t}\n)\n\nfunc (ed *Enum) Options() protoreflect.ProtoMessage {\n\tif f := ed.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Enum\n}\nfunc (ed *Enum) Values() protoreflect.EnumValueDescriptors {\n\tif ed.L1.eagerValues {\n\t\treturn &ed.L2.Values\n\t}\n\treturn &ed.lazyInit().Values\n}\nfunc (ed *Enum) ReservedNames() protoreflect.Names       { return &ed.lazyInit().ReservedNames }\nfunc (ed *Enum) ReservedRanges() protoreflect.EnumRanges { return &ed.lazyInit().ReservedRanges }\nfunc (ed *Enum) Format(s fmt.State, r rune)              { descfmt.FormatDesc(s, r, ed) }\nfunc (ed *Enum) ProtoType(protoreflect.EnumDescriptor)   {}\n\n// This is not part of the EnumDescriptor interface. It is just used to reconstruct\n// the original FileDescriptor proto.\nfunc (ed *Enum) Visibility() int32 { return ed.L1.Visibility }\n\nfunc (ed *Enum) lazyInit() *EnumL2 {\n\ted.L0.ParentFile.lazyInit() // implicitly initializes L2\n\treturn ed.L2\n}\nfunc (ed *Enum) IsClosed() bool {\n\treturn !ed.L1.EditionFeatures.IsOpenEnum\n}\n\nfunc (ed *EnumValue) Options() protoreflect.ProtoMessage {\n\tif f := ed.L1.Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.EnumValue\n}\nfunc (ed *EnumValue) Number() protoreflect.EnumNumber            { return ed.L1.Number }\nfunc (ed *EnumValue) Format(s fmt.State, r rune)                 { descfmt.FormatDesc(s, r, ed) }\nfunc (ed *EnumValue) ProtoType(protoreflect.EnumValueDescriptor) {}\n\ntype (\n\tMessage struct {\n\t\tBase\n\t\tL1 MessageL1\n\t\tL2 *MessageL2 // protected by fileDesc.once\n\t}\n\tMessageL1 struct {\n\t\tEnums           Enums\n\t\tMessages        Messages\n\t\tExtensions      Extensions\n\t\tEditionFeatures EditionFeatures\n\t\tVisibility      int32\n\t\tIsMapEntry      bool // promoted from google.protobuf.MessageOptions\n\t\tIsMessageSet    bool // promoted from google.protobuf.MessageOptions\n\t}\n\tMessageL2 struct {\n\t\tOptions               func() protoreflect.ProtoMessage\n\t\tFields                Fields\n\t\tOneofs                Oneofs\n\t\tReservedNames         Names\n\t\tReservedRanges        FieldRanges\n\t\tRequiredNumbers       FieldNumbers // must be consistent with Fields.Cardinality\n\t\tExtensionRanges       FieldRanges\n\t\tExtensionRangeOptions []func() protoreflect.ProtoMessage // must be same length as ExtensionRanges\n\t}\n\n\tField struct {\n\t\tBase\n\t\tL1 FieldL1\n\t}\n\tFieldL1 struct {\n\t\tOptions          func() protoreflect.ProtoMessage\n\t\tNumber           protoreflect.FieldNumber\n\t\tCardinality      protoreflect.Cardinality // must be consistent with Message.RequiredNumbers\n\t\tKind             protoreflect.Kind\n\t\tStringName       stringName\n\t\tIsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto\n\t\tIsLazy           bool // promoted from google.protobuf.FieldOptions\n\t\tDefault          defaultValue\n\t\tContainingOneof  protoreflect.OneofDescriptor // must be consistent with Message.Oneofs.Fields\n\t\tEnum             protoreflect.EnumDescriptor\n\t\tMessage          protoreflect.MessageDescriptor\n\n\t\tEditionFeatures EditionFeatures\n\t}\n\n\tOneof struct {\n\t\tBase\n\t\tL1 OneofL1\n\t}\n\tOneofL1 struct {\n\t\tOptions func() protoreflect.ProtoMessage\n\t\tFields  OneofFields // must be consistent with Message.Fields.ContainingOneof\n\n\t\tEditionFeatures EditionFeatures\n\t}\n)\n\nfunc (md *Message) Options() protoreflect.ProtoMessage {\n\tif f := md.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Message\n}\nfunc (md *Message) IsMapEntry() bool                           { return md.L1.IsMapEntry }\nfunc (md *Message) Fields() protoreflect.FieldDescriptors      { return &md.lazyInit().Fields }\nfunc (md *Message) Oneofs() protoreflect.OneofDescriptors      { return &md.lazyInit().Oneofs }\nfunc (md *Message) ReservedNames() protoreflect.Names          { return &md.lazyInit().ReservedNames }\nfunc (md *Message) ReservedRanges() protoreflect.FieldRanges   { return &md.lazyInit().ReservedRanges }\nfunc (md *Message) RequiredNumbers() protoreflect.FieldNumbers { return &md.lazyInit().RequiredNumbers }\nfunc (md *Message) ExtensionRanges() protoreflect.FieldRanges  { return &md.lazyInit().ExtensionRanges }\nfunc (md *Message) ExtensionRangeOptions(i int) protoreflect.ProtoMessage {\n\tif f := md.lazyInit().ExtensionRangeOptions[i]; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.ExtensionRange\n}\nfunc (md *Message) Enums() protoreflect.EnumDescriptors           { return &md.L1.Enums }\nfunc (md *Message) Messages() protoreflect.MessageDescriptors     { return &md.L1.Messages }\nfunc (md *Message) Extensions() protoreflect.ExtensionDescriptors { return &md.L1.Extensions }\nfunc (md *Message) ProtoType(protoreflect.MessageDescriptor)      {}\nfunc (md *Message) Format(s fmt.State, r rune)                    { descfmt.FormatDesc(s, r, md) }\n\n// This is not part of the MessageDescriptor interface. It is just used to reconstruct\n// the original FileDescriptor proto.\nfunc (md *Message) Visibility() int32 { return md.L1.Visibility }\n\nfunc (md *Message) lazyInit() *MessageL2 {\n\tmd.L0.ParentFile.lazyInit() // implicitly initializes L2\n\treturn md.L2\n}\n\n// IsMessageSet is a pseudo-internal API for checking whether a message\n// should serialize in the proto1 message format.\n//\n// WARNING: This method is exempt from the compatibility promise and may be\n// removed in the future without warning.\nfunc (md *Message) IsMessageSet() bool {\n\treturn md.L1.IsMessageSet\n}\n\nfunc (fd *Field) Options() protoreflect.ProtoMessage {\n\tif f := fd.L1.Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Field\n}\nfunc (fd *Field) Number() protoreflect.FieldNumber      { return fd.L1.Number }\nfunc (fd *Field) Cardinality() protoreflect.Cardinality { return fd.L1.Cardinality }\nfunc (fd *Field) Kind() protoreflect.Kind {\n\treturn fd.L1.Kind\n}\nfunc (fd *Field) HasJSONName() bool { return fd.L1.StringName.hasJSON }\nfunc (fd *Field) JSONName() string  { return fd.L1.StringName.getJSON(fd) }\nfunc (fd *Field) TextName() string  { return fd.L1.StringName.getText(fd) }\nfunc (fd *Field) HasPresence() bool {\n\tif fd.L1.Cardinality == protoreflect.Repeated {\n\t\treturn false\n\t}\n\treturn fd.IsExtension() || fd.L1.EditionFeatures.IsFieldPresence || fd.L1.Message != nil || fd.L1.ContainingOneof != nil\n}\nfunc (fd *Field) HasOptionalKeyword() bool {\n\treturn (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Optional && fd.L1.ContainingOneof == nil) || fd.L1.IsProto3Optional\n}\nfunc (fd *Field) IsPacked() bool {\n\tif fd.L1.Cardinality != protoreflect.Repeated {\n\t\treturn false\n\t}\n\tswitch fd.L1.Kind {\n\tcase protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn false\n\t}\n\treturn fd.L1.EditionFeatures.IsPacked\n}\nfunc (fd *Field) IsExtension() bool { return false }\nfunc (fd *Field) IsWeak() bool      { return false }\nfunc (fd *Field) IsLazy() bool      { return fd.L1.IsLazy }\nfunc (fd *Field) IsList() bool      { return fd.Cardinality() == protoreflect.Repeated && !fd.IsMap() }\nfunc (fd *Field) IsMap() bool       { return fd.Message() != nil && fd.Message().IsMapEntry() }\nfunc (fd *Field) MapKey() protoreflect.FieldDescriptor {\n\tif !fd.IsMap() {\n\t\treturn nil\n\t}\n\treturn fd.Message().Fields().ByNumber(genid.MapEntry_Key_field_number)\n}\nfunc (fd *Field) MapValue() protoreflect.FieldDescriptor {\n\tif !fd.IsMap() {\n\t\treturn nil\n\t}\n\treturn fd.Message().Fields().ByNumber(genid.MapEntry_Value_field_number)\n}\nfunc (fd *Field) HasDefault() bool                                   { return fd.L1.Default.has }\nfunc (fd *Field) Default() protoreflect.Value                        { return fd.L1.Default.get(fd) }\nfunc (fd *Field) DefaultEnumValue() protoreflect.EnumValueDescriptor { return fd.L1.Default.enum }\nfunc (fd *Field) ContainingOneof() protoreflect.OneofDescriptor      { return fd.L1.ContainingOneof }\nfunc (fd *Field) ContainingMessage() protoreflect.MessageDescriptor {\n\treturn fd.L0.Parent.(protoreflect.MessageDescriptor)\n}\nfunc (fd *Field) Enum() protoreflect.EnumDescriptor {\n\treturn fd.L1.Enum\n}\nfunc (fd *Field) Message() protoreflect.MessageDescriptor {\n\treturn fd.L1.Message\n}\nfunc (fd *Field) IsMapEntry() bool {\n\tparent, ok := fd.L0.Parent.(protoreflect.MessageDescriptor)\n\treturn ok && parent.IsMapEntry()\n}\nfunc (fd *Field) Format(s fmt.State, r rune)             { descfmt.FormatDesc(s, r, fd) }\nfunc (fd *Field) ProtoType(protoreflect.FieldDescriptor) {}\n\n// EnforceUTF8 is a pseudo-internal API to determine whether to enforce UTF-8\n// validation for the string field. This exists for Google-internal use only\n// since proto3 did not enforce UTF-8 validity prior to the open-source release.\n// If this method does not exist, the default is to enforce valid UTF-8.\n//\n// WARNING: This method is exempt from the compatibility promise and may be\n// removed in the future without warning.\nfunc (fd *Field) EnforceUTF8() bool {\n\treturn fd.L1.EditionFeatures.IsUTF8Validated\n}\n\nfunc (od *Oneof) IsSynthetic() bool {\n\treturn od.L0.ParentFile.L1.Syntax == protoreflect.Proto3 && len(od.L1.Fields.List) == 1 && od.L1.Fields.List[0].HasOptionalKeyword()\n}\nfunc (od *Oneof) Options() protoreflect.ProtoMessage {\n\tif f := od.L1.Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Oneof\n}\nfunc (od *Oneof) Fields() protoreflect.FieldDescriptors  { return &od.L1.Fields }\nfunc (od *Oneof) Format(s fmt.State, r rune)             { descfmt.FormatDesc(s, r, od) }\nfunc (od *Oneof) ProtoType(protoreflect.OneofDescriptor) {}\n\ntype (\n\tExtension struct {\n\t\tBase\n\t\tL1 ExtensionL1\n\t\tL2 *ExtensionL2 // protected by fileDesc.once\n\t}\n\tExtensionL1 struct {\n\t\tNumber          protoreflect.FieldNumber\n\t\tExtendee        protoreflect.MessageDescriptor\n\t\tCardinality     protoreflect.Cardinality\n\t\tKind            protoreflect.Kind\n\t\tIsLazy          bool\n\t\tEditionFeatures EditionFeatures\n\t}\n\tExtensionL2 struct {\n\t\tOptions          func() protoreflect.ProtoMessage\n\t\tStringName       stringName\n\t\tIsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto\n\t\tDefault          defaultValue\n\t\tEnum             protoreflect.EnumDescriptor\n\t\tMessage          protoreflect.MessageDescriptor\n\t}\n)\n\nfunc (xd *Extension) Options() protoreflect.ProtoMessage {\n\tif f := xd.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Field\n}\nfunc (xd *Extension) Number() protoreflect.FieldNumber      { return xd.L1.Number }\nfunc (xd *Extension) Cardinality() protoreflect.Cardinality { return xd.L1.Cardinality }\nfunc (xd *Extension) Kind() protoreflect.Kind               { return xd.L1.Kind }\nfunc (xd *Extension) HasJSONName() bool                     { return xd.lazyInit().StringName.hasJSON }\nfunc (xd *Extension) JSONName() string                      { return xd.lazyInit().StringName.getJSON(xd) }\nfunc (xd *Extension) TextName() string                      { return xd.lazyInit().StringName.getText(xd) }\nfunc (xd *Extension) HasPresence() bool                     { return xd.L1.Cardinality != protoreflect.Repeated }\nfunc (xd *Extension) HasOptionalKeyword() bool {\n\treturn (xd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && xd.L1.Cardinality == protoreflect.Optional) || xd.lazyInit().IsProto3Optional\n}\nfunc (xd *Extension) IsPacked() bool {\n\tif xd.L1.Cardinality != protoreflect.Repeated {\n\t\treturn false\n\t}\n\tswitch xd.L1.Kind {\n\tcase protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn false\n\t}\n\treturn xd.L1.EditionFeatures.IsPacked\n}\nfunc (xd *Extension) IsExtension() bool                      { return true }\nfunc (xd *Extension) IsWeak() bool                           { return false }\nfunc (xd *Extension) IsLazy() bool                           { return xd.L1.IsLazy }\nfunc (xd *Extension) IsList() bool                           { return xd.Cardinality() == protoreflect.Repeated }\nfunc (xd *Extension) IsMap() bool                            { return false }\nfunc (xd *Extension) MapKey() protoreflect.FieldDescriptor   { return nil }\nfunc (xd *Extension) MapValue() protoreflect.FieldDescriptor { return nil }\nfunc (xd *Extension) HasDefault() bool                       { return xd.lazyInit().Default.has }\nfunc (xd *Extension) Default() protoreflect.Value            { return xd.lazyInit().Default.get(xd) }\nfunc (xd *Extension) DefaultEnumValue() protoreflect.EnumValueDescriptor {\n\treturn xd.lazyInit().Default.enum\n}\nfunc (xd *Extension) ContainingOneof() protoreflect.OneofDescriptor     { return nil }\nfunc (xd *Extension) ContainingMessage() protoreflect.MessageDescriptor { return xd.L1.Extendee }\nfunc (xd *Extension) Enum() protoreflect.EnumDescriptor                 { return xd.lazyInit().Enum }\nfunc (xd *Extension) Message() protoreflect.MessageDescriptor           { return xd.lazyInit().Message }\nfunc (xd *Extension) Format(s fmt.State, r rune)                        { descfmt.FormatDesc(s, r, xd) }\nfunc (xd *Extension) ProtoType(protoreflect.FieldDescriptor)            {}\nfunc (xd *Extension) ProtoInternal(pragma.DoNotImplement)               {}\nfunc (xd *Extension) lazyInit() *ExtensionL2 {\n\txd.L0.ParentFile.lazyInit() // implicitly initializes L2\n\treturn xd.L2\n}\n\ntype (\n\tService struct {\n\t\tBase\n\t\tL1 ServiceL1\n\t\tL2 *ServiceL2 // protected by fileDesc.once\n\t}\n\tServiceL1 struct{}\n\tServiceL2 struct {\n\t\tOptions func() protoreflect.ProtoMessage\n\t\tMethods Methods\n\t}\n\n\tMethod struct {\n\t\tBase\n\t\tL1 MethodL1\n\t}\n\tMethodL1 struct {\n\t\tOptions           func() protoreflect.ProtoMessage\n\t\tInput             protoreflect.MessageDescriptor\n\t\tOutput            protoreflect.MessageDescriptor\n\t\tIsStreamingClient bool\n\t\tIsStreamingServer bool\n\t}\n)\n\nfunc (sd *Service) Options() protoreflect.ProtoMessage {\n\tif f := sd.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Service\n}\nfunc (sd *Service) Methods() protoreflect.MethodDescriptors  { return &sd.lazyInit().Methods }\nfunc (sd *Service) Format(s fmt.State, r rune)               { descfmt.FormatDesc(s, r, sd) }\nfunc (sd *Service) ProtoType(protoreflect.ServiceDescriptor) {}\nfunc (sd *Service) ProtoInternal(pragma.DoNotImplement)      {}\nfunc (sd *Service) lazyInit() *ServiceL2 {\n\tsd.L0.ParentFile.lazyInit() // implicitly initializes L2\n\treturn sd.L2\n}\n\nfunc (md *Method) Options() protoreflect.ProtoMessage {\n\tif f := md.L1.Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Method\n}\nfunc (md *Method) Input() protoreflect.MessageDescriptor   { return md.L1.Input }\nfunc (md *Method) Output() protoreflect.MessageDescriptor  { return md.L1.Output }\nfunc (md *Method) IsStreamingClient() bool                 { return md.L1.IsStreamingClient }\nfunc (md *Method) IsStreamingServer() bool                 { return md.L1.IsStreamingServer }\nfunc (md *Method) Format(s fmt.State, r rune)              { descfmt.FormatDesc(s, r, md) }\nfunc (md *Method) ProtoType(protoreflect.MethodDescriptor) {}\nfunc (md *Method) ProtoInternal(pragma.DoNotImplement)     {}\n\n// Surrogate files are can be used to create standalone descriptors\n// where the syntax is only information derived from the parent file.\nvar (\n\tSurrogateProto2      = &File{L1: FileL1{Syntax: protoreflect.Proto2}, L2: &FileL2{}}\n\tSurrogateProto3      = &File{L1: FileL1{Syntax: protoreflect.Proto3}, L2: &FileL2{}}\n\tSurrogateEdition2023 = &File{L1: FileL1{Syntax: protoreflect.Editions, Edition: Edition2023}, L2: &FileL2{}}\n)\n\ntype (\n\tBase struct {\n\t\tL0 BaseL0\n\t}\n\tBaseL0 struct {\n\t\tFullName   protoreflect.FullName // must be populated\n\t\tParentFile *File                 // must be populated\n\t\tParent     protoreflect.Descriptor\n\t\tIndex      int\n\t}\n)\n\nfunc (d *Base) Name() protoreflect.Name         { return d.L0.FullName.Name() }\nfunc (d *Base) FullName() protoreflect.FullName { return d.L0.FullName }\nfunc (d *Base) ParentFile() protoreflect.FileDescriptor {\n\tif d.L0.ParentFile == SurrogateProto2 || d.L0.ParentFile == SurrogateProto3 {\n\t\treturn nil // surrogate files are not real parents\n\t}\n\treturn d.L0.ParentFile\n}\nfunc (d *Base) Parent() protoreflect.Descriptor     { return d.L0.Parent }\nfunc (d *Base) Index() int                          { return d.L0.Index }\nfunc (d *Base) Syntax() protoreflect.Syntax         { return d.L0.ParentFile.Syntax() }\nfunc (d *Base) IsPlaceholder() bool                 { return false }\nfunc (d *Base) ProtoInternal(pragma.DoNotImplement) {}\n\ntype stringName struct {\n\thasJSON  bool\n\tonce     sync.Once\n\tnameJSON string\n\tnameText string\n}\n\n// InitJSON initializes the name. It is exported for use by other internal packages.\nfunc (s *stringName) InitJSON(name string) {\n\ts.hasJSON = true\n\ts.nameJSON = name\n}\n\n// Returns true if this field is structured like the synthetic field of a proto2\n// group. This allows us to expand our treatment of delimited fields without\n// breaking proto2 files that have been upgraded to editions.\nfunc isGroupLike(fd protoreflect.FieldDescriptor) bool {\n\t// Groups are always group types.\n\tif fd.Kind() != protoreflect.GroupKind {\n\t\treturn false\n\t}\n\n\t// Group fields are always the lowercase type name.\n\tif strings.ToLower(string(fd.Message().Name())) != string(fd.Name()) {\n\t\treturn false\n\t}\n\n\t// Groups could only be defined in the same file they're used.\n\tif fd.Message().ParentFile() != fd.ParentFile() {\n\t\treturn false\n\t}\n\n\t// Group messages are always defined in the same scope as the field.  File\n\t// level extensions will compare NULL == NULL here, which is why the file\n\t// comparison above is necessary to ensure both come from the same file.\n\tif fd.IsExtension() {\n\t\treturn fd.Parent() == fd.Message().Parent()\n\t}\n\treturn fd.ContainingMessage() == fd.Message().Parent()\n}\n\nfunc (s *stringName) lazyInit(fd protoreflect.FieldDescriptor) *stringName {\n\ts.once.Do(func() {\n\t\tif fd.IsExtension() {\n\t\t\t// For extensions, JSON and text are formatted the same way.\n\t\t\tvar name string\n\t\t\tif messageset.IsMessageSetExtension(fd) {\n\t\t\t\tname = string(\"[\" + fd.FullName().Parent() + \"]\")\n\t\t\t} else {\n\t\t\t\tname = string(\"[\" + fd.FullName() + \"]\")\n\t\t\t}\n\t\t\ts.nameJSON = name\n\t\t\ts.nameText = name\n\t\t} else {\n\t\t\t// Format the JSON name.\n\t\t\tif !s.hasJSON {\n\t\t\t\ts.nameJSON = strs.JSONCamelCase(string(fd.Name()))\n\t\t\t}\n\n\t\t\t// Format the text name.\n\t\t\ts.nameText = string(fd.Name())\n\t\t\tif isGroupLike(fd) {\n\t\t\t\ts.nameText = string(fd.Message().Name())\n\t\t\t}\n\t\t}\n\t})\n\treturn s\n}\n\nfunc (s *stringName) getJSON(fd protoreflect.FieldDescriptor) string { return s.lazyInit(fd).nameJSON }\nfunc (s *stringName) getText(fd protoreflect.FieldDescriptor) string { return s.lazyInit(fd).nameText }\n\nfunc DefaultValue(v protoreflect.Value, ev protoreflect.EnumValueDescriptor) defaultValue {\n\tdv := defaultValue{has: v.IsValid(), val: v, enum: ev}\n\tif b, ok := v.Interface().([]byte); ok {\n\t\t// Store a copy of the default bytes, so that we can detect\n\t\t// accidental mutations of the original value.\n\t\tdv.bytes = append([]byte(nil), b...)\n\t}\n\treturn dv\n}\n\nfunc unmarshalDefault(b []byte, k protoreflect.Kind, pf *File, ed protoreflect.EnumDescriptor) defaultValue {\n\tvar evs protoreflect.EnumValueDescriptors\n\tif k == protoreflect.EnumKind {\n\t\t// If the enum is declared within the same file, be careful not to\n\t\t// blindly call the Values method, lest we bind ourselves in a deadlock.\n\t\tif e, ok := ed.(*Enum); ok && e.L0.ParentFile == pf {\n\t\t\tevs = &e.L2.Values\n\t\t} else {\n\t\t\tevs = ed.Values()\n\t\t}\n\n\t\t// If we are unable to resolve the enum dependency, use a placeholder\n\t\t// enum value since we will not be able to parse the default value.\n\t\tif ed.IsPlaceholder() && protoreflect.Name(b).IsValid() {\n\t\t\tv := protoreflect.ValueOfEnum(0)\n\t\t\tev := PlaceholderEnumValue(ed.FullName().Parent().Append(protoreflect.Name(b)))\n\t\t\treturn DefaultValue(v, ev)\n\t\t}\n\t}\n\n\tv, ev, err := defval.Unmarshal(string(b), k, evs, defval.Descriptor)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn DefaultValue(v, ev)\n}\n\ntype defaultValue struct {\n\thas   bool\n\tval   protoreflect.Value\n\tenum  protoreflect.EnumValueDescriptor\n\tbytes []byte\n}\n\nfunc (dv *defaultValue) get(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\t// Return the zero value as the default if unpopulated.\n\tif !dv.has {\n\t\tif fd.Cardinality() == protoreflect.Repeated {\n\t\t\treturn protoreflect.Value{}\n\t\t}\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\treturn protoreflect.ValueOfBool(false)\n\t\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\t\treturn protoreflect.ValueOfInt32(0)\n\t\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\t\treturn protoreflect.ValueOfInt64(0)\n\t\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\t\treturn protoreflect.ValueOfUint32(0)\n\t\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\t\treturn protoreflect.ValueOfUint64(0)\n\t\tcase protoreflect.FloatKind:\n\t\t\treturn protoreflect.ValueOfFloat32(0)\n\t\tcase protoreflect.DoubleKind:\n\t\t\treturn protoreflect.ValueOfFloat64(0)\n\t\tcase protoreflect.StringKind:\n\t\t\treturn protoreflect.ValueOfString(\"\")\n\t\tcase protoreflect.BytesKind:\n\t\t\treturn protoreflect.ValueOfBytes(nil)\n\t\tcase protoreflect.EnumKind:\n\t\t\tif evs := fd.Enum().Values(); evs.Len() > 0 {\n\t\t\t\treturn protoreflect.ValueOfEnum(evs.Get(0).Number())\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfEnum(0)\n\t\t}\n\t}\n\n\tif len(dv.bytes) > 0 && !bytes.Equal(dv.bytes, dv.val.Bytes()) {\n\t\t// TODO: Avoid panic if we're running with the race detector\n\t\t// and instead spawn a goroutine that periodically resets\n\t\t// this value back to the original to induce a race.\n\t\tpanic(fmt.Sprintf(\"detected mutation on the default bytes for %v\", fd.FullName()))\n\t}\n\treturn dv.val\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// fileRaw is a data struct used when initializing a file descriptor from\n// a raw FileDescriptorProto.\ntype fileRaw struct {\n\tbuilder       Builder\n\tallEnums      []Enum\n\tallMessages   []Message\n\tallExtensions []Extension\n\tallServices   []Service\n}\n\nfunc newRawFile(db Builder) *File {\n\tfd := &File{fileRaw: fileRaw{builder: db}}\n\tfd.initDecls(db.NumEnums, db.NumMessages, db.NumExtensions, db.NumServices)\n\tfd.unmarshalSeed(db.RawDescriptor)\n\n\t// Extended message targets are eagerly resolved since registration\n\t// needs this information at program init time.\n\tfor i := range fd.allExtensions {\n\t\txd := &fd.allExtensions[i]\n\t\txd.L1.Extendee = fd.resolveMessageDependency(xd.L1.Extendee, listExtTargets, int32(i))\n\t}\n\n\tfd.checkDecls()\n\treturn fd\n}\n\n// initDecls pre-allocates slices for the exact number of enums, messages\n// (including map entries), extensions, and services declared in the proto file.\n// This is done to avoid regrowing the slice, which would change the address\n// for any previously seen declaration.\n//\n// The alloc methods \"allocates\" slices by pulling from the capacity.\nfunc (fd *File) initDecls(numEnums, numMessages, numExtensions, numServices int32) {\n\tfd.allEnums = make([]Enum, 0, numEnums)\n\tfd.allMessages = make([]Message, 0, numMessages)\n\tfd.allExtensions = make([]Extension, 0, numExtensions)\n\tfd.allServices = make([]Service, 0, numServices)\n}\n\nfunc (fd *File) allocEnums(n int) []Enum {\n\ttotal := len(fd.allEnums)\n\tes := fd.allEnums[total : total+n]\n\tfd.allEnums = fd.allEnums[:total+n]\n\treturn es\n}\nfunc (fd *File) allocMessages(n int) []Message {\n\ttotal := len(fd.allMessages)\n\tms := fd.allMessages[total : total+n]\n\tfd.allMessages = fd.allMessages[:total+n]\n\treturn ms\n}\nfunc (fd *File) allocExtensions(n int) []Extension {\n\ttotal := len(fd.allExtensions)\n\txs := fd.allExtensions[total : total+n]\n\tfd.allExtensions = fd.allExtensions[:total+n]\n\treturn xs\n}\nfunc (fd *File) allocServices(n int) []Service {\n\ttotal := len(fd.allServices)\n\txs := fd.allServices[total : total+n]\n\tfd.allServices = fd.allServices[:total+n]\n\treturn xs\n}\n\n// checkDecls performs a sanity check that the expected number of expected\n// declarations matches the number that were found in the descriptor proto.\nfunc (fd *File) checkDecls() {\n\tswitch {\n\tcase len(fd.allEnums) != cap(fd.allEnums):\n\tcase len(fd.allMessages) != cap(fd.allMessages):\n\tcase len(fd.allExtensions) != cap(fd.allExtensions):\n\tcase len(fd.allServices) != cap(fd.allServices):\n\tdefault:\n\t\treturn\n\t}\n\tpanic(\"mismatching cardinality\")\n}\n\nfunc (fd *File) unmarshalSeed(b []byte) {\n\tsb := getBuilder()\n\tdefer putBuilder(sb)\n\n\tvar prevField protoreflect.FieldNumber\n\tvar numEnums, numMessages, numExtensions, numServices int\n\tvar posEnums, posMessages, posExtensions, posServices int\n\tvar options []byte\n\tb0 := b\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FileDescriptorProto_Syntax_field_number:\n\t\t\t\tswitch string(v) {\n\t\t\t\tcase \"proto2\":\n\t\t\t\t\tfd.L1.Syntax = protoreflect.Proto2\n\t\t\t\t\tfd.L1.Edition = EditionProto2\n\t\t\t\tcase \"proto3\":\n\t\t\t\t\tfd.L1.Syntax = protoreflect.Proto3\n\t\t\t\t\tfd.L1.Edition = EditionProto3\n\t\t\t\tcase \"editions\":\n\t\t\t\t\tfd.L1.Syntax = protoreflect.Editions\n\t\t\t\tdefault:\n\t\t\t\t\tpanic(\"invalid syntax\")\n\t\t\t\t}\n\t\t\tcase genid.FileDescriptorProto_Name_field_number:\n\t\t\t\tfd.L1.Path = sb.MakeString(v)\n\t\t\tcase genid.FileDescriptorProto_Package_field_number:\n\t\t\t\tfd.L1.Package = protoreflect.FullName(sb.MakeString(v))\n\t\t\tcase genid.FileDescriptorProto_Options_field_number:\n\t\t\t\toptions = v\n\t\t\tcase genid.FileDescriptorProto_EnumType_field_number:\n\t\t\t\tif prevField != genid.FileDescriptorProto_EnumType_field_number {\n\t\t\t\t\tif numEnums > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposEnums = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumEnums++\n\t\t\tcase genid.FileDescriptorProto_MessageType_field_number:\n\t\t\t\tif prevField != genid.FileDescriptorProto_MessageType_field_number {\n\t\t\t\t\tif numMessages > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposMessages = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumMessages++\n\t\t\tcase genid.FileDescriptorProto_Extension_field_number:\n\t\t\t\tif prevField != genid.FileDescriptorProto_Extension_field_number {\n\t\t\t\t\tif numExtensions > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposExtensions = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumExtensions++\n\t\t\tcase genid.FileDescriptorProto_Service_field_number:\n\t\t\t\tif prevField != genid.FileDescriptorProto_Service_field_number {\n\t\t\t\t\tif numServices > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposServices = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumServices++\n\t\t\t}\n\t\t\tprevField = num\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FileDescriptorProto_Edition_field_number:\n\t\t\t\tfd.L1.Edition = Edition(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t\tprevField = -1 // ignore known field numbers of unknown wire type\n\t\t}\n\t}\n\n\t// If syntax is missing, it is assumed to be proto2.\n\tif fd.L1.Syntax == 0 {\n\t\tfd.L1.Syntax = protoreflect.Proto2\n\t\tfd.L1.Edition = EditionProto2\n\t}\n\n\tfd.L1.EditionFeatures = getFeaturesFor(fd.L1.Edition)\n\n\t// Parse editions features from options if any\n\tif options != nil {\n\t\tfd.unmarshalSeedOptions(options)\n\t}\n\n\t// Must allocate all declarations before parsing each descriptor type\n\t// to ensure we handled all descriptors in \"flattened ordering\".\n\tif numEnums > 0 {\n\t\tfd.L1.Enums.List = fd.allocEnums(numEnums)\n\t}\n\tif numMessages > 0 {\n\t\tfd.L1.Messages.List = fd.allocMessages(numMessages)\n\t}\n\tif numExtensions > 0 {\n\t\tfd.L1.Extensions.List = fd.allocExtensions(numExtensions)\n\t}\n\tif numServices > 0 {\n\t\tfd.L1.Services.List = fd.allocServices(numServices)\n\t}\n\n\tif numEnums > 0 {\n\t\tb := b0[posEnums:]\n\t\tfor i := range fd.L1.Enums.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tfd.L1.Enums.List[i].unmarshalSeed(v, sb, fd, fd, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numMessages > 0 {\n\t\tb := b0[posMessages:]\n\t\tfor i := range fd.L1.Messages.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tfd.L1.Messages.List[i].unmarshalSeed(v, sb, fd, fd, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numExtensions > 0 {\n\t\tb := b0[posExtensions:]\n\t\tfor i := range fd.L1.Extensions.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tfd.L1.Extensions.List[i].unmarshalSeed(v, sb, fd, fd, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numServices > 0 {\n\t\tb := b0[posServices:]\n\t\tfor i := range fd.L1.Services.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tfd.L1.Services.List[i].unmarshalSeed(v, sb, fd, fd, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n}\n\nfunc (fd *File) unmarshalSeedOptions(b []byte) {\n\tfor b := b; len(b) > 0; {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FileOptions_Features_field_number:\n\t\t\t\tif fd.Syntax() != protoreflect.Editions {\n\t\t\t\t\tpanic(fmt.Sprintf(\"invalid descriptor: using edition features in a proto with syntax %s\", fd.Syntax()))\n\t\t\t\t}\n\t\t\t\tfd.L1.EditionFeatures = unmarshalFeatureSet(v, fd.L1.EditionFeatures)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (ed *Enum) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\ted.L0.ParentFile = pf\n\ted.L0.Parent = pd\n\ted.L0.Index = i\n\ted.L1.EditionFeatures = featuresFromParentDesc(ed.Parent())\n\n\tvar numValues int\n\tfor b := b; len(b) > 0; {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumDescriptorProto_Name_field_number:\n\t\t\t\ted.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.EnumDescriptorProto_Value_field_number:\n\t\t\t\tnumValues++\n\t\t\t}\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumDescriptorProto_Visibility_field_number:\n\t\t\t\ted.L1.Visibility = int32(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\n\t// Only construct enum value descriptors for top-level enums since\n\t// they are needed for registration.\n\tif pd != pf {\n\t\treturn\n\t}\n\ted.L1.eagerValues = true\n\ted.L2 = new(EnumL2)\n\ted.L2.Values.List = make([]EnumValue, numValues)\n\tfor i := 0; len(b) > 0; {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumDescriptorProto_Value_field_number:\n\t\t\t\ted.L2.Values.List[i].unmarshalFull(v, sb, pf, ed, i)\n\t\t\t\ti++\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (md *Message) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tmd.L0.ParentFile = pf\n\tmd.L0.Parent = pd\n\tmd.L0.Index = i\n\tmd.L1.EditionFeatures = featuresFromParentDesc(md.Parent())\n\n\tvar prevField protoreflect.FieldNumber\n\tvar numEnums, numMessages, numExtensions int\n\tvar posEnums, posMessages, posExtensions int\n\tb0 := b\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_Name_field_number:\n\t\t\t\tmd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.DescriptorProto_EnumType_field_number:\n\t\t\t\tif prevField != genid.DescriptorProto_EnumType_field_number {\n\t\t\t\t\tif numEnums > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposEnums = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumEnums++\n\t\t\tcase genid.DescriptorProto_NestedType_field_number:\n\t\t\t\tif prevField != genid.DescriptorProto_NestedType_field_number {\n\t\t\t\t\tif numMessages > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposMessages = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumMessages++\n\t\t\tcase genid.DescriptorProto_Extension_field_number:\n\t\t\t\tif prevField != genid.DescriptorProto_Extension_field_number {\n\t\t\t\t\tif numExtensions > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposExtensions = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumExtensions++\n\t\t\tcase genid.DescriptorProto_Options_field_number:\n\t\t\t\tmd.unmarshalSeedOptions(v)\n\t\t\t}\n\t\t\tprevField = num\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_Visibility_field_number:\n\t\t\t\tmd.L1.Visibility = int32(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t\tprevField = -1 // ignore known field numbers of unknown wire type\n\t\t}\n\t}\n\n\t// Must allocate all declarations before parsing each descriptor type\n\t// to ensure we handled all descriptors in \"flattened ordering\".\n\tif numEnums > 0 {\n\t\tmd.L1.Enums.List = pf.allocEnums(numEnums)\n\t}\n\tif numMessages > 0 {\n\t\tmd.L1.Messages.List = pf.allocMessages(numMessages)\n\t}\n\tif numExtensions > 0 {\n\t\tmd.L1.Extensions.List = pf.allocExtensions(numExtensions)\n\t}\n\n\tif numEnums > 0 {\n\t\tb := b0[posEnums:]\n\t\tfor i := range md.L1.Enums.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tmd.L1.Enums.List[i].unmarshalSeed(v, sb, pf, md, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numMessages > 0 {\n\t\tb := b0[posMessages:]\n\t\tfor i := range md.L1.Messages.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tmd.L1.Messages.List[i].unmarshalSeed(v, sb, pf, md, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numExtensions > 0 {\n\t\tb := b0[posExtensions:]\n\t\tfor i := range md.L1.Extensions.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tmd.L1.Extensions.List[i].unmarshalSeed(v, sb, pf, md, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n}\n\nfunc (md *Message) unmarshalSeedOptions(b []byte) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.MessageOptions_MapEntry_field_number:\n\t\t\t\tmd.L1.IsMapEntry = protowire.DecodeBool(v)\n\t\t\tcase genid.MessageOptions_MessageSetWireFormat_field_number:\n\t\t\t\tmd.L1.IsMessageSet = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.MessageOptions_Features_field_number:\n\t\t\t\tmd.L1.EditionFeatures = unmarshalFeatureSet(v, md.L1.EditionFeatures)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (xd *Extension) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\txd.L0.ParentFile = pf\n\txd.L0.Parent = pd\n\txd.L0.Index = i\n\txd.L1.EditionFeatures = featuresFromParentDesc(pd)\n\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Number_field_number:\n\t\t\t\txd.L1.Number = protoreflect.FieldNumber(v)\n\t\t\tcase genid.FieldDescriptorProto_Label_field_number:\n\t\t\t\txd.L1.Cardinality = protoreflect.Cardinality(v)\n\t\t\tcase genid.FieldDescriptorProto_Type_field_number:\n\t\t\t\txd.L1.Kind = protoreflect.Kind(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Name_field_number:\n\t\t\t\txd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.FieldDescriptorProto_Extendee_field_number:\n\t\t\t\txd.L1.Extendee = PlaceholderMessage(makeFullName(sb, v))\n\t\t\tcase genid.FieldDescriptorProto_Options_field_number:\n\t\t\t\txd.unmarshalOptions(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\n\tif xd.L1.Kind == protoreflect.MessageKind && xd.L1.EditionFeatures.IsDelimitedEncoded {\n\t\txd.L1.Kind = protoreflect.GroupKind\n\t}\n}\n\nfunc (xd *Extension) unmarshalOptions(b []byte) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldOptions_Packed_field_number:\n\t\t\t\txd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v)\n\t\t\tcase genid.FieldOptions_Lazy_field_number:\n\t\t\t\txd.L1.IsLazy = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldOptions_Features_field_number:\n\t\t\t\txd.L1.EditionFeatures = unmarshalFeatureSet(v, xd.L1.EditionFeatures)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (sd *Service) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tsd.L0.ParentFile = pf\n\tsd.L0.Parent = pd\n\tsd.L0.Index = i\n\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.ServiceDescriptorProto_Name_field_number:\n\t\t\t\tsd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nvar nameBuilderPool = sync.Pool{\n\tNew: func() any { return new(strs.Builder) },\n}\n\nfunc getBuilder() *strs.Builder {\n\treturn nameBuilderPool.Get().(*strs.Builder)\n}\nfunc putBuilder(b *strs.Builder) {\n\tnameBuilderPool.Put(b)\n}\n\n// makeFullName converts b to a protoreflect.FullName,\n// where b must start with a leading dot.\nfunc makeFullName(sb *strs.Builder, b []byte) protoreflect.FullName {\n\tif len(b) == 0 || b[0] != '.' {\n\t\tpanic(\"name reference must be fully qualified\")\n\t}\n\treturn protoreflect.FullName(sb.MakeString(b[1:]))\n}\n\nfunc appendFullName(sb *strs.Builder, prefix protoreflect.FullName, suffix []byte) protoreflect.FullName {\n\treturn sb.AppendFullName(prefix, protoreflect.Name(strs.UnsafeString(suffix)))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"reflect\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc (fd *File) lazyRawInit() {\n\tfd.unmarshalFull(fd.builder.RawDescriptor)\n\tfd.resolveMessages()\n\tfd.resolveExtensions()\n\tfd.resolveServices()\n}\n\nfunc (file *File) resolveMessages() {\n\tvar depIdx int32\n\tfor i := range file.allMessages {\n\t\tmd := &file.allMessages[i]\n\n\t\t// Resolve message field dependencies.\n\t\tfor j := range md.L2.Fields.List {\n\t\t\tfd := &md.L2.Fields.List[j]\n\n\t\t\t// Resolve message field dependency.\n\t\t\tswitch fd.L1.Kind {\n\t\t\tcase protoreflect.EnumKind:\n\t\t\t\tfd.L1.Enum = file.resolveEnumDependency(fd.L1.Enum, listFieldDeps, depIdx)\n\t\t\t\tdepIdx++\n\t\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\t\tfd.L1.Message = file.resolveMessageDependency(fd.L1.Message, listFieldDeps, depIdx)\n\t\t\t\tdepIdx++\n\t\t\t\tif fd.L1.Kind == protoreflect.GroupKind && (fd.IsMap() || fd.IsMapEntry()) {\n\t\t\t\t\t// A map field might inherit delimited encoding from a file-wide default feature.\n\t\t\t\t\t// But maps never actually use delimited encoding. (At least for now...)\n\t\t\t\t\tfd.L1.Kind = protoreflect.MessageKind\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Default is resolved here since it depends on Enum being resolved.\n\t\t\tif v := fd.L1.Default.val; v.IsValid() {\n\t\t\t\tfd.L1.Default = unmarshalDefault(v.Bytes(), fd.L1.Kind, file, fd.L1.Enum)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (file *File) resolveExtensions() {\n\tvar depIdx int32\n\tfor i := range file.allExtensions {\n\t\txd := &file.allExtensions[i]\n\n\t\t// Resolve extension field dependency.\n\t\tswitch xd.L1.Kind {\n\t\tcase protoreflect.EnumKind:\n\t\t\txd.L2.Enum = file.resolveEnumDependency(xd.L2.Enum, listExtDeps, depIdx)\n\t\t\tdepIdx++\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\txd.L2.Message = file.resolveMessageDependency(xd.L2.Message, listExtDeps, depIdx)\n\t\t\tdepIdx++\n\t\t}\n\n\t\t// Default is resolved here since it depends on Enum being resolved.\n\t\tif v := xd.L2.Default.val; v.IsValid() {\n\t\t\txd.L2.Default = unmarshalDefault(v.Bytes(), xd.L1.Kind, file, xd.L2.Enum)\n\t\t}\n\t}\n}\n\nfunc (file *File) resolveServices() {\n\tvar depIdx int32\n\tfor i := range file.allServices {\n\t\tsd := &file.allServices[i]\n\n\t\t// Resolve method dependencies.\n\t\tfor j := range sd.L2.Methods.List {\n\t\t\tmd := &sd.L2.Methods.List[j]\n\t\t\tmd.L1.Input = file.resolveMessageDependency(md.L1.Input, listMethInDeps, depIdx)\n\t\t\tmd.L1.Output = file.resolveMessageDependency(md.L1.Output, listMethOutDeps, depIdx)\n\t\t\tdepIdx++\n\t\t}\n\t}\n}\n\nfunc (file *File) resolveEnumDependency(ed protoreflect.EnumDescriptor, i, j int32) protoreflect.EnumDescriptor {\n\tr := file.builder.FileRegistry\n\tif r, ok := r.(resolverByIndex); ok {\n\t\tif ed2 := r.FindEnumByIndex(i, j, file.allEnums, file.allMessages); ed2 != nil {\n\t\t\treturn ed2\n\t\t}\n\t}\n\tfor i := range file.allEnums {\n\t\tif ed2 := &file.allEnums[i]; ed2.L0.FullName == ed.FullName() {\n\t\t\treturn ed2\n\t\t}\n\t}\n\tif d, _ := r.FindDescriptorByName(ed.FullName()); d != nil {\n\t\treturn d.(protoreflect.EnumDescriptor)\n\t}\n\treturn ed\n}\n\nfunc (file *File) resolveMessageDependency(md protoreflect.MessageDescriptor, i, j int32) protoreflect.MessageDescriptor {\n\tr := file.builder.FileRegistry\n\tif r, ok := r.(resolverByIndex); ok {\n\t\tif md2 := r.FindMessageByIndex(i, j, file.allEnums, file.allMessages); md2 != nil {\n\t\t\treturn md2\n\t\t}\n\t}\n\tfor i := range file.allMessages {\n\t\tif md2 := &file.allMessages[i]; md2.L0.FullName == md.FullName() {\n\t\t\treturn md2\n\t\t}\n\t}\n\tif d, _ := r.FindDescriptorByName(md.FullName()); d != nil {\n\t\treturn d.(protoreflect.MessageDescriptor)\n\t}\n\treturn md\n}\n\nfunc (fd *File) unmarshalFull(b []byte) {\n\tsb := getBuilder()\n\tdefer putBuilder(sb)\n\n\tvar enumIdx, messageIdx, extensionIdx, serviceIdx int\n\tvar rawOptions []byte\n\tvar optionImports []string\n\tfd.L2 = new(FileL2)\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FileDescriptorProto_PublicDependency_field_number:\n\t\t\t\tfd.L2.Imports[v].IsPublic = true\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FileDescriptorProto_Dependency_field_number:\n\t\t\t\tpath := sb.MakeString(v)\n\t\t\t\timp, _ := fd.builder.FileRegistry.FindFileByPath(path)\n\t\t\t\tif imp == nil {\n\t\t\t\t\timp = PlaceholderFile(path)\n\t\t\t\t}\n\t\t\t\tfd.L2.Imports = append(fd.L2.Imports, protoreflect.FileImport{FileDescriptor: imp})\n\t\t\tcase genid.FileDescriptorProto_OptionDependency_field_number:\n\t\t\t\toptionImports = append(optionImports, sb.MakeString(v))\n\t\t\tcase genid.FileDescriptorProto_EnumType_field_number:\n\t\t\t\tfd.L1.Enums.List[enumIdx].unmarshalFull(v, sb)\n\t\t\t\tenumIdx++\n\t\t\tcase genid.FileDescriptorProto_MessageType_field_number:\n\t\t\t\tfd.L1.Messages.List[messageIdx].unmarshalFull(v, sb)\n\t\t\t\tmessageIdx++\n\t\t\tcase genid.FileDescriptorProto_Extension_field_number:\n\t\t\t\tfd.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb)\n\t\t\t\textensionIdx++\n\t\t\tcase genid.FileDescriptorProto_Service_field_number:\n\t\t\t\tfd.L1.Services.List[serviceIdx].unmarshalFull(v, sb)\n\t\t\t\tserviceIdx++\n\t\t\tcase genid.FileDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tfd.L2.Options = fd.builder.optionsUnmarshaler(&descopts.File, rawOptions)\n\tif len(optionImports) > 0 {\n\t\tvar imps FileImports\n\t\tvar once sync.Once\n\t\tfd.L2.OptionImports = func() protoreflect.FileImports {\n\t\t\tonce.Do(func() {\n\t\t\t\timps = make(FileImports, len(optionImports))\n\t\t\t\tfor i, path := range optionImports {\n\t\t\t\t\timp, _ := fd.builder.FileRegistry.FindFileByPath(path)\n\t\t\t\t\tif imp == nil {\n\t\t\t\t\t\timp = PlaceholderFile(path)\n\t\t\t\t\t}\n\t\t\t\t\timps[i] = protoreflect.FileImport{FileDescriptor: imp}\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn &imps\n\t\t}\n\t}\n}\n\nfunc (ed *Enum) unmarshalFull(b []byte, sb *strs.Builder) {\n\tvar rawValues [][]byte\n\tvar rawOptions []byte\n\tif !ed.L1.eagerValues {\n\t\ted.L2 = new(EnumL2)\n\t}\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumDescriptorProto_Value_field_number:\n\t\t\t\trawValues = append(rawValues, v)\n\t\t\tcase genid.EnumDescriptorProto_ReservedName_field_number:\n\t\t\t\ted.L2.ReservedNames.List = append(ed.L2.ReservedNames.List, protoreflect.Name(sb.MakeString(v)))\n\t\t\tcase genid.EnumDescriptorProto_ReservedRange_field_number:\n\t\t\t\ted.L2.ReservedRanges.List = append(ed.L2.ReservedRanges.List, unmarshalEnumReservedRange(v))\n\t\t\tcase genid.EnumDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif !ed.L1.eagerValues && len(rawValues) > 0 {\n\t\ted.L2.Values.List = make([]EnumValue, len(rawValues))\n\t\tfor i, b := range rawValues {\n\t\t\ted.L2.Values.List[i].unmarshalFull(b, sb, ed.L0.ParentFile, ed, i)\n\t\t}\n\t}\n\ted.L2.Options = ed.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Enum, rawOptions)\n}\n\nfunc unmarshalEnumReservedRange(b []byte) (r [2]protoreflect.EnumNumber) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumDescriptorProto_EnumReservedRange_Start_field_number:\n\t\t\t\tr[0] = protoreflect.EnumNumber(v)\n\t\t\tcase genid.EnumDescriptorProto_EnumReservedRange_End_field_number:\n\t\t\t\tr[1] = protoreflect.EnumNumber(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\treturn r\n}\n\nfunc (vd *EnumValue) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tvd.L0.ParentFile = pf\n\tvd.L0.Parent = pd\n\tvd.L0.Index = i\n\n\tvar rawOptions []byte\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumValueDescriptorProto_Number_field_number:\n\t\t\t\tvd.L1.Number = protoreflect.EnumNumber(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumValueDescriptorProto_Name_field_number:\n\t\t\t\t// NOTE: Enum values are in the same scope as the enum parent.\n\t\t\t\tvd.L0.FullName = appendFullName(sb, pd.Parent().FullName(), v)\n\t\t\tcase genid.EnumValueDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tvd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.EnumValue, rawOptions)\n}\n\nfunc (md *Message) unmarshalFull(b []byte, sb *strs.Builder) {\n\tvar rawFields, rawOneofs [][]byte\n\tvar enumIdx, messageIdx, extensionIdx int\n\tvar rawOptions []byte\n\tmd.L2 = new(MessageL2)\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_Field_field_number:\n\t\t\t\trawFields = append(rawFields, v)\n\t\t\tcase genid.DescriptorProto_OneofDecl_field_number:\n\t\t\t\trawOneofs = append(rawOneofs, v)\n\t\t\tcase genid.DescriptorProto_ReservedName_field_number:\n\t\t\t\tmd.L2.ReservedNames.List = append(md.L2.ReservedNames.List, protoreflect.Name(sb.MakeString(v)))\n\t\t\tcase genid.DescriptorProto_ReservedRange_field_number:\n\t\t\t\tmd.L2.ReservedRanges.List = append(md.L2.ReservedRanges.List, unmarshalMessageReservedRange(v))\n\t\t\tcase genid.DescriptorProto_ExtensionRange_field_number:\n\t\t\t\tr, rawOptions := unmarshalMessageExtensionRange(v)\n\t\t\t\topts := md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.ExtensionRange, rawOptions)\n\t\t\t\tmd.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, r)\n\t\t\t\tmd.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, opts)\n\t\t\tcase genid.DescriptorProto_EnumType_field_number:\n\t\t\t\tmd.L1.Enums.List[enumIdx].unmarshalFull(v, sb)\n\t\t\t\tenumIdx++\n\t\t\tcase genid.DescriptorProto_NestedType_field_number:\n\t\t\t\tmd.L1.Messages.List[messageIdx].unmarshalFull(v, sb)\n\t\t\t\tmessageIdx++\n\t\t\tcase genid.DescriptorProto_Extension_field_number:\n\t\t\t\tmd.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb)\n\t\t\t\textensionIdx++\n\t\t\tcase genid.DescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif len(rawFields) > 0 || len(rawOneofs) > 0 {\n\t\tmd.L2.Fields.List = make([]Field, len(rawFields))\n\t\tmd.L2.Oneofs.List = make([]Oneof, len(rawOneofs))\n\t\tfor i, b := range rawFields {\n\t\t\tfd := &md.L2.Fields.List[i]\n\t\t\tfd.unmarshalFull(b, sb, md.L0.ParentFile, md, i)\n\t\t\tif fd.L1.Cardinality == protoreflect.Required {\n\t\t\t\tmd.L2.RequiredNumbers.List = append(md.L2.RequiredNumbers.List, fd.L1.Number)\n\t\t\t}\n\t\t}\n\t\tfor i, b := range rawOneofs {\n\t\t\tod := &md.L2.Oneofs.List[i]\n\t\t\tod.unmarshalFull(b, sb, md.L0.ParentFile, md, i)\n\t\t}\n\t}\n\tmd.L2.Options = md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Message, rawOptions)\n}\n\nfunc unmarshalMessageReservedRange(b []byte) (r [2]protoreflect.FieldNumber) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_ReservedRange_Start_field_number:\n\t\t\t\tr[0] = protoreflect.FieldNumber(v)\n\t\t\tcase genid.DescriptorProto_ReservedRange_End_field_number:\n\t\t\t\tr[1] = protoreflect.FieldNumber(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\treturn r\n}\n\nfunc unmarshalMessageExtensionRange(b []byte) (r [2]protoreflect.FieldNumber, rawOptions []byte) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_ExtensionRange_Start_field_number:\n\t\t\t\tr[0] = protoreflect.FieldNumber(v)\n\t\t\tcase genid.DescriptorProto_ExtensionRange_End_field_number:\n\t\t\t\tr[1] = protoreflect.FieldNumber(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_ExtensionRange_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\treturn r, rawOptions\n}\n\nfunc (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tfd.L0.ParentFile = pf\n\tfd.L0.Parent = pd\n\tfd.L0.Index = i\n\tfd.L1.EditionFeatures = featuresFromParentDesc(fd.Parent())\n\n\tvar rawTypeName []byte\n\tvar rawOptions []byte\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Number_field_number:\n\t\t\t\tfd.L1.Number = protoreflect.FieldNumber(v)\n\t\t\tcase genid.FieldDescriptorProto_Label_field_number:\n\t\t\t\tfd.L1.Cardinality = protoreflect.Cardinality(v)\n\t\t\tcase genid.FieldDescriptorProto_Type_field_number:\n\t\t\t\tfd.L1.Kind = protoreflect.Kind(v)\n\t\t\tcase genid.FieldDescriptorProto_OneofIndex_field_number:\n\t\t\t\t// In Message.unmarshalFull, we allocate slices for both\n\t\t\t\t// the field and oneof descriptors before unmarshaling either\n\t\t\t\t// of them. This ensures pointers to slice elements are stable.\n\t\t\t\tod := &pd.(*Message).L2.Oneofs.List[v]\n\t\t\t\tod.L1.Fields.List = append(od.L1.Fields.List, fd)\n\t\t\t\tif fd.L1.ContainingOneof != nil {\n\t\t\t\t\tpanic(\"oneof type already set\")\n\t\t\t\t}\n\t\t\t\tfd.L1.ContainingOneof = od\n\t\t\tcase genid.FieldDescriptorProto_Proto3Optional_field_number:\n\t\t\t\tfd.L1.IsProto3Optional = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Name_field_number:\n\t\t\t\tfd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.FieldDescriptorProto_JsonName_field_number:\n\t\t\t\tfd.L1.StringName.InitJSON(sb.MakeString(v))\n\t\t\tcase genid.FieldDescriptorProto_DefaultValue_field_number:\n\t\t\t\tfd.L1.Default.val = protoreflect.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveMessages\n\t\t\tcase genid.FieldDescriptorProto_TypeName_field_number:\n\t\t\t\trawTypeName = v\n\t\t\tcase genid.FieldDescriptorProto_Options_field_number:\n\t\t\t\tfd.unmarshalOptions(v)\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif fd.L1.Kind == protoreflect.MessageKind && fd.L1.EditionFeatures.IsDelimitedEncoded {\n\t\tfd.L1.Kind = protoreflect.GroupKind\n\t}\n\tif fd.L1.EditionFeatures.IsLegacyRequired {\n\t\tfd.L1.Cardinality = protoreflect.Required\n\t}\n\tif rawTypeName != nil {\n\t\tname := makeFullName(sb, rawTypeName)\n\t\tswitch fd.L1.Kind {\n\t\tcase protoreflect.EnumKind:\n\t\t\tfd.L1.Enum = PlaceholderEnum(name)\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\tfd.L1.Message = PlaceholderMessage(name)\n\t\t}\n\t}\n\tfd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Field, rawOptions)\n}\n\nfunc (fd *Field) unmarshalOptions(b []byte) {\n\tconst FieldOptions_EnforceUTF8 = 13\n\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldOptions_Packed_field_number:\n\t\t\t\tfd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v)\n\t\t\tcase genid.FieldOptions_Lazy_field_number:\n\t\t\t\tfd.L1.IsLazy = protowire.DecodeBool(v)\n\t\t\tcase FieldOptions_EnforceUTF8:\n\t\t\t\tfd.L1.EditionFeatures.IsUTF8Validated = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldOptions_Features_field_number:\n\t\t\t\tfd.L1.EditionFeatures = unmarshalFeatureSet(v, fd.L1.EditionFeatures)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (od *Oneof) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tod.L0.ParentFile = pf\n\tod.L0.Parent = pd\n\tod.L0.Index = i\n\n\tvar rawOptions []byte\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.OneofDescriptorProto_Name_field_number:\n\t\t\t\tod.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.OneofDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tod.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Oneof, rawOptions)\n}\n\nfunc (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) {\n\tvar rawTypeName []byte\n\tvar rawOptions []byte\n\txd.L2 = new(ExtensionL2)\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Proto3Optional_field_number:\n\t\t\t\txd.L2.IsProto3Optional = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_JsonName_field_number:\n\t\t\t\txd.L2.StringName.InitJSON(sb.MakeString(v))\n\t\t\tcase genid.FieldDescriptorProto_DefaultValue_field_number:\n\t\t\t\txd.L2.Default.val = protoreflect.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveExtensions\n\t\t\tcase genid.FieldDescriptorProto_TypeName_field_number:\n\t\t\t\trawTypeName = v\n\t\t\tcase genid.FieldDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif rawTypeName != nil {\n\t\tname := makeFullName(sb, rawTypeName)\n\t\tswitch xd.L1.Kind {\n\t\tcase protoreflect.EnumKind:\n\t\t\txd.L2.Enum = PlaceholderEnum(name)\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\txd.L2.Message = PlaceholderMessage(name)\n\t\t}\n\t}\n\txd.L2.Options = xd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Field, rawOptions)\n}\n\nfunc (sd *Service) unmarshalFull(b []byte, sb *strs.Builder) {\n\tvar rawMethods [][]byte\n\tvar rawOptions []byte\n\tsd.L2 = new(ServiceL2)\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.ServiceDescriptorProto_Method_field_number:\n\t\t\t\trawMethods = append(rawMethods, v)\n\t\t\tcase genid.ServiceDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif len(rawMethods) > 0 {\n\t\tsd.L2.Methods.List = make([]Method, len(rawMethods))\n\t\tfor i, b := range rawMethods {\n\t\t\tsd.L2.Methods.List[i].unmarshalFull(b, sb, sd.L0.ParentFile, sd, i)\n\t\t}\n\t}\n\tsd.L2.Options = sd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Service, rawOptions)\n}\n\nfunc (md *Method) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tmd.L0.ParentFile = pf\n\tmd.L0.Parent = pd\n\tmd.L0.Index = i\n\n\tvar rawOptions []byte\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.MethodDescriptorProto_ClientStreaming_field_number:\n\t\t\t\tmd.L1.IsStreamingClient = protowire.DecodeBool(v)\n\t\t\tcase genid.MethodDescriptorProto_ServerStreaming_field_number:\n\t\t\t\tmd.L1.IsStreamingServer = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.MethodDescriptorProto_Name_field_number:\n\t\t\t\tmd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.MethodDescriptorProto_InputType_field_number:\n\t\t\t\tmd.L1.Input = PlaceholderMessage(makeFullName(sb, v))\n\t\t\tcase genid.MethodDescriptorProto_OutputType_field_number:\n\t\t\t\tmd.L1.Output = PlaceholderMessage(makeFullName(sb, v))\n\t\t\tcase genid.MethodDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tmd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Method, rawOptions)\n}\n\n// appendOptions appends src to dst, where the returned slice is never nil.\n// This is necessary to distinguish between empty and unpopulated options.\nfunc appendOptions(dst, src []byte) []byte {\n\tif dst == nil {\n\t\tdst = []byte{}\n\t}\n\treturn append(dst, src...)\n}\n\n// optionsUnmarshaler constructs a lazy unmarshal function for an options message.\n//\n// The type of message to unmarshal to is passed as a pointer since the\n// vars in descopts may not yet be populated at the time this function is called.\nfunc (db *Builder) optionsUnmarshaler(p *protoreflect.ProtoMessage, b []byte) func() protoreflect.ProtoMessage {\n\tif b == nil {\n\t\treturn nil\n\t}\n\tvar opts protoreflect.ProtoMessage\n\tvar once sync.Once\n\treturn func() protoreflect.ProtoMessage {\n\t\tonce.Do(func() {\n\t\t\tif *p == nil {\n\t\t\t\tpanic(\"Descriptor.Options called without importing the descriptor package\")\n\t\t\t}\n\t\t\topts = reflect.New(reflect.TypeOf(*p).Elem()).Interface().(protoreflect.ProtoMessage)\n\t\t\tif err := (proto.UnmarshalOptions{\n\t\t\t\tAllowPartial: true,\n\t\t\t\tResolver:     db.TypeResolver,\n\t\t\t}).Unmarshal(b, opts); err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t})\n\t\treturn opts\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"sort\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/genid\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/descfmt\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype FileImports []protoreflect.FileImport\n\nfunc (p *FileImports) Len() int                            { return len(*p) }\nfunc (p *FileImports) Get(i int) protoreflect.FileImport   { return (*p)[i] }\nfunc (p *FileImports) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *FileImports) ProtoInternal(pragma.DoNotImplement) {}\n\ntype Names struct {\n\tList []protoreflect.Name\n\tonce sync.Once\n\thas  map[protoreflect.Name]int // protected by once\n}\n\nfunc (p *Names) Len() int                            { return len(p.List) }\nfunc (p *Names) Get(i int) protoreflect.Name         { return p.List[i] }\nfunc (p *Names) Has(s protoreflect.Name) bool        { return p.lazyInit().has[s] > 0 }\nfunc (p *Names) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *Names) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Names) lazyInit() *Names {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.has = make(map[protoreflect.Name]int, len(p.List))\n\t\t\tfor _, s := range p.List {\n\t\t\t\tp.has[s] = p.has[s] + 1\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\n// CheckValid reports any errors with the set of names with an error message\n// that completes the sentence: \"ranges is invalid because it has ...\"\nfunc (p *Names) CheckValid() error {\n\tfor s, n := range p.lazyInit().has {\n\t\tswitch {\n\t\tcase n > 1:\n\t\t\treturn errors.New(\"duplicate name: %q\", s)\n\t\tcase false && !s.IsValid():\n\t\t\t// NOTE: The C++ implementation does not validate the identifier.\n\t\t\t// See https://github.com/protocolbuffers/protobuf/issues/6335.\n\t\t\treturn errors.New(\"invalid name: %q\", s)\n\t\t}\n\t}\n\treturn nil\n}\n\ntype EnumRanges struct {\n\tList   [][2]protoreflect.EnumNumber // start inclusive; end inclusive\n\tonce   sync.Once\n\tsorted [][2]protoreflect.EnumNumber // protected by once\n}\n\nfunc (p *EnumRanges) Len() int                             { return len(p.List) }\nfunc (p *EnumRanges) Get(i int) [2]protoreflect.EnumNumber { return p.List[i] }\nfunc (p *EnumRanges) Has(n protoreflect.EnumNumber) bool {\n\tfor ls := p.lazyInit().sorted; len(ls) > 0; {\n\t\ti := len(ls) / 2\n\t\tswitch r := enumRange(ls[i]); {\n\t\tcase n < r.Start():\n\t\t\tls = ls[:i] // search lower\n\t\tcase n > r.End():\n\t\t\tls = ls[i+1:] // search upper\n\t\tdefault:\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\nfunc (p *EnumRanges) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *EnumRanges) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *EnumRanges) lazyInit() *EnumRanges {\n\tp.once.Do(func() {\n\t\tp.sorted = append(p.sorted, p.List...)\n\t\tsort.Slice(p.sorted, func(i, j int) bool {\n\t\t\treturn p.sorted[i][0] < p.sorted[j][0]\n\t\t})\n\t})\n\treturn p\n}\n\n// CheckValid reports any errors with the set of names with an error message\n// that completes the sentence: \"ranges is invalid because it has ...\"\nfunc (p *EnumRanges) CheckValid() error {\n\tvar rp enumRange\n\tfor i, r := range p.lazyInit().sorted {\n\t\tr := enumRange(r)\n\t\tswitch {\n\t\tcase !(r.Start() <= r.End()):\n\t\t\treturn errors.New(\"invalid range: %v\", r)\n\t\tcase !(rp.End() < r.Start()) && i > 0:\n\t\t\treturn errors.New(\"overlapping ranges: %v with %v\", rp, r)\n\t\t}\n\t\trp = r\n\t}\n\treturn nil\n}\n\ntype enumRange [2]protoreflect.EnumNumber\n\nfunc (r enumRange) Start() protoreflect.EnumNumber { return r[0] } // inclusive\nfunc (r enumRange) End() protoreflect.EnumNumber   { return r[1] } // inclusive\nfunc (r enumRange) String() string {\n\tif r.Start() == r.End() {\n\t\treturn fmt.Sprintf(\"%d\", r.Start())\n\t}\n\treturn fmt.Sprintf(\"%d to %d\", r.Start(), r.End())\n}\n\ntype FieldRanges struct {\n\tList   [][2]protoreflect.FieldNumber // start inclusive; end exclusive\n\tonce   sync.Once\n\tsorted [][2]protoreflect.FieldNumber // protected by once\n}\n\nfunc (p *FieldRanges) Len() int                              { return len(p.List) }\nfunc (p *FieldRanges) Get(i int) [2]protoreflect.FieldNumber { return p.List[i] }\nfunc (p *FieldRanges) Has(n protoreflect.FieldNumber) bool {\n\tfor ls := p.lazyInit().sorted; len(ls) > 0; {\n\t\ti := len(ls) / 2\n\t\tswitch r := fieldRange(ls[i]); {\n\t\tcase n < r.Start():\n\t\t\tls = ls[:i] // search lower\n\t\tcase n > r.End():\n\t\t\tls = ls[i+1:] // search upper\n\t\tdefault:\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\nfunc (p *FieldRanges) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *FieldRanges) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *FieldRanges) lazyInit() *FieldRanges {\n\tp.once.Do(func() {\n\t\tp.sorted = append(p.sorted, p.List...)\n\t\tsort.Slice(p.sorted, func(i, j int) bool {\n\t\t\treturn p.sorted[i][0] < p.sorted[j][0]\n\t\t})\n\t})\n\treturn p\n}\n\n// CheckValid reports any errors with the set of ranges with an error message\n// that completes the sentence: \"ranges is invalid because it has ...\"\nfunc (p *FieldRanges) CheckValid(isMessageSet bool) error {\n\tvar rp fieldRange\n\tfor i, r := range p.lazyInit().sorted {\n\t\tr := fieldRange(r)\n\t\tswitch {\n\t\tcase !isValidFieldNumber(r.Start(), isMessageSet):\n\t\t\treturn errors.New(\"invalid field number: %d\", r.Start())\n\t\tcase !isValidFieldNumber(r.End(), isMessageSet):\n\t\t\treturn errors.New(\"invalid field number: %d\", r.End())\n\t\tcase !(r.Start() <= r.End()):\n\t\t\treturn errors.New(\"invalid range: %v\", r)\n\t\tcase !(rp.End() < r.Start()) && i > 0:\n\t\t\treturn errors.New(\"overlapping ranges: %v with %v\", rp, r)\n\t\t}\n\t\trp = r\n\t}\n\treturn nil\n}\n\n// isValidFieldNumber reports whether the field number is valid.\n// Unlike the FieldNumber.IsValid method, it allows ranges that cover the\n// reserved number range.\nfunc isValidFieldNumber(n protoreflect.FieldNumber, isMessageSet bool) bool {\n\treturn protowire.MinValidNumber <= n && (n <= protowire.MaxValidNumber || isMessageSet)\n}\n\n// CheckOverlap reports an error if p and q overlap.\nfunc (p *FieldRanges) CheckOverlap(q *FieldRanges) error {\n\trps := p.lazyInit().sorted\n\trqs := q.lazyInit().sorted\n\tfor pi, qi := 0, 0; pi < len(rps) && qi < len(rqs); {\n\t\trp := fieldRange(rps[pi])\n\t\trq := fieldRange(rqs[qi])\n\t\tif !(rp.End() < rq.Start() || rq.End() < rp.Start()) {\n\t\t\treturn errors.New(\"overlapping ranges: %v with %v\", rp, rq)\n\t\t}\n\t\tif rp.Start() < rq.Start() {\n\t\t\tpi++\n\t\t} else {\n\t\t\tqi++\n\t\t}\n\t}\n\treturn nil\n}\n\ntype fieldRange [2]protoreflect.FieldNumber\n\nfunc (r fieldRange) Start() protoreflect.FieldNumber { return r[0] }     // inclusive\nfunc (r fieldRange) End() protoreflect.FieldNumber   { return r[1] - 1 } // inclusive\nfunc (r fieldRange) String() string {\n\tif r.Start() == r.End() {\n\t\treturn fmt.Sprintf(\"%d\", r.Start())\n\t}\n\treturn fmt.Sprintf(\"%d to %d\", r.Start(), r.End())\n}\n\ntype FieldNumbers struct {\n\tList []protoreflect.FieldNumber\n\tonce sync.Once\n\thas  map[protoreflect.FieldNumber]struct{} // protected by once\n}\n\nfunc (p *FieldNumbers) Len() int                           { return len(p.List) }\nfunc (p *FieldNumbers) Get(i int) protoreflect.FieldNumber { return p.List[i] }\nfunc (p *FieldNumbers) Has(n protoreflect.FieldNumber) bool {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.has = make(map[protoreflect.FieldNumber]struct{}, len(p.List))\n\t\t\tfor _, n := range p.List {\n\t\t\t\tp.has[n] = struct{}{}\n\t\t\t}\n\t\t}\n\t})\n\t_, ok := p.has[n]\n\treturn ok\n}\nfunc (p *FieldNumbers) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *FieldNumbers) ProtoInternal(pragma.DoNotImplement) {}\n\ntype OneofFields struct {\n\tList   []protoreflect.FieldDescriptor\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]protoreflect.FieldDescriptor        // protected by once\n\tbyJSON map[string]protoreflect.FieldDescriptor                   // protected by once\n\tbyText map[string]protoreflect.FieldDescriptor                   // protected by once\n\tbyNum  map[protoreflect.FieldNumber]protoreflect.FieldDescriptor // protected by once\n}\n\nfunc (p *OneofFields) Len() int                               { return len(p.List) }\nfunc (p *OneofFields) Get(i int) protoreflect.FieldDescriptor { return p.List[i] }\nfunc (p *OneofFields) ByName(s protoreflect.Name) protoreflect.FieldDescriptor {\n\treturn p.lazyInit().byName[s]\n}\nfunc (p *OneofFields) ByJSONName(s string) protoreflect.FieldDescriptor {\n\treturn p.lazyInit().byJSON[s]\n}\nfunc (p *OneofFields) ByTextName(s string) protoreflect.FieldDescriptor {\n\treturn p.lazyInit().byText[s]\n}\nfunc (p *OneofFields) ByNumber(n protoreflect.FieldNumber) protoreflect.FieldDescriptor {\n\treturn p.lazyInit().byNum[n]\n}\nfunc (p *OneofFields) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *OneofFields) ProtoInternal(pragma.DoNotImplement) {}\n\nfunc (p *OneofFields) lazyInit() *OneofFields {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]protoreflect.FieldDescriptor, len(p.List))\n\t\t\tp.byJSON = make(map[string]protoreflect.FieldDescriptor, len(p.List))\n\t\t\tp.byText = make(map[string]protoreflect.FieldDescriptor, len(p.List))\n\t\t\tp.byNum = make(map[protoreflect.FieldNumber]protoreflect.FieldDescriptor, len(p.List))\n\t\t\tfor _, f := range p.List {\n\t\t\t\t// Field names and numbers are guaranteed to be unique.\n\t\t\t\tp.byName[f.Name()] = f\n\t\t\t\tp.byJSON[f.JSONName()] = f\n\t\t\t\tp.byText[f.TextName()] = f\n\t\t\t\tp.byNum[f.Number()] = f\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype SourceLocations struct {\n\t// List is a list of SourceLocations.\n\t// The SourceLocation.Next field does not need to be populated\n\t// as it will be lazily populated upon first need.\n\tList []protoreflect.SourceLocation\n\n\t// File is the parent file descriptor that these locations are relative to.\n\t// If non-nil, ByDescriptor verifies that the provided descriptor\n\t// is a child of this file descriptor.\n\tFile protoreflect.FileDescriptor\n\n\tonce   sync.Once\n\tbyPath map[pathKey]int\n}\n\nfunc (p *SourceLocations) Len() int                              { return len(p.List) }\nfunc (p *SourceLocations) Get(i int) protoreflect.SourceLocation { return p.lazyInit().List[i] }\nfunc (p *SourceLocations) byKey(k pathKey) protoreflect.SourceLocation {\n\tif i, ok := p.lazyInit().byPath[k]; ok {\n\t\treturn p.List[i]\n\t}\n\treturn protoreflect.SourceLocation{}\n}\nfunc (p *SourceLocations) ByPath(path protoreflect.SourcePath) protoreflect.SourceLocation {\n\treturn p.byKey(newPathKey(path))\n}\nfunc (p *SourceLocations) ByDescriptor(desc protoreflect.Descriptor) protoreflect.SourceLocation {\n\tif p.File != nil && desc != nil && p.File != desc.ParentFile() {\n\t\treturn protoreflect.SourceLocation{} // mismatching parent files\n\t}\n\tvar pathArr [16]int32\n\tpath := pathArr[:0]\n\tfor {\n\t\tswitch desc.(type) {\n\t\tcase protoreflect.FileDescriptor:\n\t\t\t// Reverse the path since it was constructed in reverse.\n\t\t\tfor i, j := 0, len(path)-1; i < j; i, j = i+1, j-1 {\n\t\t\t\tpath[i], path[j] = path[j], path[i]\n\t\t\t}\n\t\t\treturn p.byKey(newPathKey(path))\n\t\tcase protoreflect.MessageDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.FileDescriptor:\n\t\t\t\tpath = append(path, int32(genid.FileDescriptorProto_MessageType_field_number))\n\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\tpath = append(path, int32(genid.DescriptorProto_NestedType_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.FieldDescriptor:\n\t\t\tisExtension := desc.(protoreflect.FieldDescriptor).IsExtension()\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tif isExtension {\n\t\t\t\tswitch desc.(type) {\n\t\t\t\tcase protoreflect.FileDescriptor:\n\t\t\t\t\tpath = append(path, int32(genid.FileDescriptorProto_Extension_field_number))\n\t\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\t\tpath = append(path, int32(genid.DescriptorProto_Extension_field_number))\n\t\t\t\tdefault:\n\t\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch desc.(type) {\n\t\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\t\tpath = append(path, int32(genid.DescriptorProto_Field_field_number))\n\t\t\t\tdefault:\n\t\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t\t}\n\t\t\t}\n\t\tcase protoreflect.OneofDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\tpath = append(path, int32(genid.DescriptorProto_OneofDecl_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.EnumDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.FileDescriptor:\n\t\t\t\tpath = append(path, int32(genid.FileDescriptorProto_EnumType_field_number))\n\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\tpath = append(path, int32(genid.DescriptorProto_EnumType_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.EnumValueDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.EnumDescriptor:\n\t\t\t\tpath = append(path, int32(genid.EnumDescriptorProto_Value_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.ServiceDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.FileDescriptor:\n\t\t\t\tpath = append(path, int32(genid.FileDescriptorProto_Service_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.MethodDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.ServiceDescriptor:\n\t\t\t\tpath = append(path, int32(genid.ServiceDescriptorProto_Method_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tdefault:\n\t\t\treturn protoreflect.SourceLocation{}\n\t\t}\n\t}\n}\nfunc (p *SourceLocations) lazyInit() *SourceLocations {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\t// Collect all the indexes for a given path.\n\t\t\tpathIdxs := make(map[pathKey][]int, len(p.List))\n\t\t\tfor i, l := range p.List {\n\t\t\t\tk := newPathKey(l.Path)\n\t\t\t\tpathIdxs[k] = append(pathIdxs[k], i)\n\t\t\t}\n\n\t\t\t// Update the next index for all locations.\n\t\t\tp.byPath = make(map[pathKey]int, len(p.List))\n\t\t\tfor k, idxs := range pathIdxs {\n\t\t\t\tfor i := 0; i < len(idxs)-1; i++ {\n\t\t\t\t\tp.List[idxs[i]].Next = idxs[i+1]\n\t\t\t\t}\n\t\t\t\tp.List[idxs[len(idxs)-1]].Next = 0\n\t\t\t\tp.byPath[k] = idxs[0] // record the first location for this path\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\nfunc (p *SourceLocations) ProtoInternal(pragma.DoNotImplement) {}\n\n// pathKey is a comparable representation of protoreflect.SourcePath.\ntype pathKey struct {\n\tarr [16]uint8 // first n-1 path segments; last element is the length\n\tstr string    // used if the path does not fit in arr\n}\n\nfunc newPathKey(p protoreflect.SourcePath) (k pathKey) {\n\tif len(p) < len(k.arr) {\n\t\tfor i, ps := range p {\n\t\t\tif ps < 0 || math.MaxUint8 <= ps {\n\t\t\t\treturn pathKey{str: p.String()}\n\t\t\t}\n\t\t\tk.arr[i] = uint8(ps)\n\t\t}\n\t\tk.arr[len(k.arr)-1] = uint8(len(p))\n\t\treturn k\n\t}\n\treturn pathKey{str: p.String()}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage filedesc\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/descfmt\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype Enums struct {\n\tList   []Enum\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Enum // protected by once\n}\n\nfunc (p *Enums) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Enums) Get(i int) protoreflect.EnumDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Enums) ByName(s protoreflect.Name) protoreflect.EnumDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Enums) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Enums) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Enums) lazyInit() *Enums {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Enum, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype EnumValues struct {\n\tList   []EnumValue\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*EnumValue       // protected by once\n\tbyNum  map[protoreflect.EnumNumber]*EnumValue // protected by once\n}\n\nfunc (p *EnumValues) Len() int {\n\treturn len(p.List)\n}\nfunc (p *EnumValues) Get(i int) protoreflect.EnumValueDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *EnumValues) ByName(s protoreflect.Name) protoreflect.EnumValueDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *EnumValues) ByNumber(n protoreflect.EnumNumber) protoreflect.EnumValueDescriptor {\n\tif d := p.lazyInit().byNum[n]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *EnumValues) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *EnumValues) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *EnumValues) lazyInit() *EnumValues {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*EnumValue, len(p.List))\n\t\t\tp.byNum = make(map[protoreflect.EnumNumber]*EnumValue, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t\tif _, ok := p.byNum[d.Number()]; !ok {\n\t\t\t\t\tp.byNum[d.Number()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Messages struct {\n\tList   []Message\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Message // protected by once\n}\n\nfunc (p *Messages) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Messages) Get(i int) protoreflect.MessageDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Messages) ByName(s protoreflect.Name) protoreflect.MessageDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Messages) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Messages) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Messages) lazyInit() *Messages {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Message, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Fields struct {\n\tList   []Field\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Field        // protected by once\n\tbyJSON map[string]*Field                   // protected by once\n\tbyText map[string]*Field                   // protected by once\n\tbyNum  map[protoreflect.FieldNumber]*Field // protected by once\n}\n\nfunc (p *Fields) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Fields) Get(i int) protoreflect.FieldDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Fields) ByName(s protoreflect.Name) protoreflect.FieldDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Fields) ByJSONName(s string) protoreflect.FieldDescriptor {\n\tif d := p.lazyInit().byJSON[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Fields) ByTextName(s string) protoreflect.FieldDescriptor {\n\tif d := p.lazyInit().byText[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Fields) ByNumber(n protoreflect.FieldNumber) protoreflect.FieldDescriptor {\n\tif d := p.lazyInit().byNum[n]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Fields) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Fields) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Fields) lazyInit() *Fields {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Field, len(p.List))\n\t\t\tp.byJSON = make(map[string]*Field, len(p.List))\n\t\t\tp.byText = make(map[string]*Field, len(p.List))\n\t\t\tp.byNum = make(map[protoreflect.FieldNumber]*Field, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t\tif _, ok := p.byJSON[d.JSONName()]; !ok {\n\t\t\t\t\tp.byJSON[d.JSONName()] = d\n\t\t\t\t}\n\t\t\t\tif _, ok := p.byText[d.TextName()]; !ok {\n\t\t\t\t\tp.byText[d.TextName()] = d\n\t\t\t\t}\n\t\t\t\tif isGroupLike(d) {\n\t\t\t\t\tlowerJSONName := strings.ToLower(d.JSONName())\n\t\t\t\t\tif _, ok := p.byJSON[lowerJSONName]; !ok {\n\t\t\t\t\t\tp.byJSON[lowerJSONName] = d\n\t\t\t\t\t}\n\t\t\t\t\tlowerTextName := strings.ToLower(d.TextName())\n\t\t\t\t\tif _, ok := p.byText[lowerTextName]; !ok {\n\t\t\t\t\t\tp.byText[lowerTextName] = d\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif _, ok := p.byNum[d.Number()]; !ok {\n\t\t\t\t\tp.byNum[d.Number()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Oneofs struct {\n\tList   []Oneof\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Oneof // protected by once\n}\n\nfunc (p *Oneofs) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Oneofs) Get(i int) protoreflect.OneofDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Oneofs) ByName(s protoreflect.Name) protoreflect.OneofDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Oneofs) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Oneofs) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Oneofs) lazyInit() *Oneofs {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Oneof, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Extensions struct {\n\tList   []Extension\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Extension // protected by once\n}\n\nfunc (p *Extensions) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Extensions) Get(i int) protoreflect.ExtensionDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Extensions) ByName(s protoreflect.Name) protoreflect.ExtensionDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Extensions) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Extensions) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Extensions) lazyInit() *Extensions {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Extension, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Services struct {\n\tList   []Service\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Service // protected by once\n}\n\nfunc (p *Services) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Services) Get(i int) protoreflect.ServiceDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Services) ByName(s protoreflect.Name) protoreflect.ServiceDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Services) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Services) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Services) lazyInit() *Services {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Service, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Methods struct {\n\tList   []Method\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Method // protected by once\n}\n\nfunc (p *Methods) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Methods) Get(i int) protoreflect.MethodDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Methods) ByName(s protoreflect.Name) protoreflect.MethodDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Methods) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Methods) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Methods) lazyInit() *Methods {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Method, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/editions.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/editiondefaults\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nvar (\n\tdefaultsCache = make(map[Edition]EditionFeatures)\n\tdefaultsKeys  = []Edition{}\n)\n\nfunc init() {\n\tunmarshalEditionDefaults(editiondefaults.Defaults)\n\tSurrogateProto2.L1.EditionFeatures = getFeaturesFor(EditionProto2)\n\tSurrogateProto3.L1.EditionFeatures = getFeaturesFor(EditionProto3)\n\tSurrogateEdition2023.L1.EditionFeatures = getFeaturesFor(Edition2023)\n}\n\nfunc unmarshalGoFeature(b []byte, parent EditionFeatures) EditionFeatures {\n\tfor len(b) > 0 {\n\t\tnum, _, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch num {\n\t\tcase genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tparent.GenerateLegacyUnmarshalJSON = protowire.DecodeBool(v)\n\t\tcase genid.GoFeatures_ApiLevel_field_number:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tparent.APILevel = int(v)\n\t\tcase genid.GoFeatures_StripEnumPrefix_field_number:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tparent.StripEnumPrefix = int(v)\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"unknown field number %d while unmarshalling GoFeatures\", num))\n\t\t}\n\t}\n\treturn parent\n}\n\nfunc unmarshalFeatureSet(b []byte, parent EditionFeatures) EditionFeatures {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FeatureSet_FieldPresence_field_number:\n\t\t\t\tparent.IsFieldPresence = v == genid.FeatureSet_EXPLICIT_enum_value || v == genid.FeatureSet_LEGACY_REQUIRED_enum_value\n\t\t\t\tparent.IsLegacyRequired = v == genid.FeatureSet_LEGACY_REQUIRED_enum_value\n\t\t\tcase genid.FeatureSet_EnumType_field_number:\n\t\t\t\tparent.IsOpenEnum = v == genid.FeatureSet_OPEN_enum_value\n\t\t\tcase genid.FeatureSet_RepeatedFieldEncoding_field_number:\n\t\t\t\tparent.IsPacked = v == genid.FeatureSet_PACKED_enum_value\n\t\t\tcase genid.FeatureSet_Utf8Validation_field_number:\n\t\t\t\tparent.IsUTF8Validated = v == genid.FeatureSet_VERIFY_enum_value\n\t\t\tcase genid.FeatureSet_MessageEncoding_field_number:\n\t\t\t\tparent.IsDelimitedEncoded = v == genid.FeatureSet_DELIMITED_enum_value\n\t\t\tcase genid.FeatureSet_JsonFormat_field_number:\n\t\t\t\tparent.IsJSONCompliant = v == genid.FeatureSet_ALLOW_enum_value\n\t\t\tcase genid.FeatureSet_EnforceNamingStyle_field_number:\n\t\t\t\t// EnforceNamingStyle is enforced in protoc, languages other than C++\n\t\t\t\t// are not supposed to do anything with this feature.\n\t\t\tcase genid.FeatureSet_DefaultSymbolVisibility_field_number:\n\t\t\t\t// DefaultSymbolVisibility is enforced in protoc, runtimes should not\n\t\t\t\t// inspect this value.\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"unknown field number %d while unmarshalling FeatureSet\", num))\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FeatureSet_Go_ext_number:\n\t\t\t\tparent = unmarshalGoFeature(v, parent)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn parent\n}\n\nfunc featuresFromParentDesc(parentDesc protoreflect.Descriptor) EditionFeatures {\n\tvar parentFS EditionFeatures\n\tswitch p := parentDesc.(type) {\n\tcase *File:\n\t\tparentFS = p.L1.EditionFeatures\n\tcase *Message:\n\t\tparentFS = p.L1.EditionFeatures\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unknown parent type %T\", parentDesc))\n\t}\n\treturn parentFS\n}\n\nfunc unmarshalEditionDefault(b []byte) {\n\tvar ed Edition\n\tvar fs EditionFeatures\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number:\n\t\t\t\ted = Edition(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_number:\n\t\t\t\tfs = unmarshalFeatureSet(v, fs)\n\t\t\tcase genid.FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_number:\n\t\t\t\tfs = unmarshalFeatureSet(v, fs)\n\t\t\t}\n\t\t}\n\t}\n\tdefaultsCache[ed] = fs\n\tdefaultsKeys = append(defaultsKeys, ed)\n}\n\nfunc unmarshalEditionDefaults(b []byte) {\n\tfor len(b) > 0 {\n\t\tnum, _, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch num {\n\t\tcase genid.FeatureSetDefaults_Defaults_field_number:\n\t\t\tdef, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tunmarshalEditionDefault(def)\n\t\tcase genid.FeatureSetDefaults_MinimumEdition_field_number,\n\t\t\tgenid.FeatureSetDefaults_MaximumEdition_field_number:\n\t\t\t// We don't care about the minimum and maximum editions. If the\n\t\t\t// edition we are looking for later on is not in the cache we know\n\t\t\t// it is outside of the range between minimum and maximum edition.\n\t\t\t_, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"unknown field number %d while unmarshalling EditionDefault\", num))\n\t\t}\n\t}\n}\n\nfunc getFeaturesFor(ed Edition) EditionFeatures {\n\tmatch := EditionUnknown\n\tfor _, key := range defaultsKeys {\n\t\tif key > ed {\n\t\t\tbreak\n\t\t}\n\t\tmatch = key\n\t}\n\tif match == EditionUnknown {\n\t\tpanic(fmt.Sprintf(\"unsupported edition: %v\", ed))\n\t}\n\treturn defaultsCache[match]\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nvar (\n\temptyNames           = new(Names)\n\temptyEnumRanges      = new(EnumRanges)\n\temptyFieldRanges     = new(FieldRanges)\n\temptyFieldNumbers    = new(FieldNumbers)\n\temptySourceLocations = new(SourceLocations)\n\n\temptyFiles      = new(FileImports)\n\temptyMessages   = new(Messages)\n\temptyFields     = new(Fields)\n\temptyOneofs     = new(Oneofs)\n\temptyEnums      = new(Enums)\n\temptyEnumValues = new(EnumValues)\n\temptyExtensions = new(Extensions)\n\temptyServices   = new(Services)\n)\n\n// PlaceholderFile is a placeholder, representing only the file path.\ntype PlaceholderFile string\n\nfunc (f PlaceholderFile) ParentFile() protoreflect.FileDescriptor       { return f }\nfunc (f PlaceholderFile) Parent() protoreflect.Descriptor               { return nil }\nfunc (f PlaceholderFile) Index() int                                    { return 0 }\nfunc (f PlaceholderFile) Syntax() protoreflect.Syntax                   { return 0 }\nfunc (f PlaceholderFile) Name() protoreflect.Name                       { return \"\" }\nfunc (f PlaceholderFile) FullName() protoreflect.FullName               { return \"\" }\nfunc (f PlaceholderFile) IsPlaceholder() bool                           { return true }\nfunc (f PlaceholderFile) Options() protoreflect.ProtoMessage            { return descopts.File }\nfunc (f PlaceholderFile) Path() string                                  { return string(f) }\nfunc (f PlaceholderFile) Package() protoreflect.FullName                { return \"\" }\nfunc (f PlaceholderFile) Imports() protoreflect.FileImports             { return emptyFiles }\nfunc (f PlaceholderFile) Messages() protoreflect.MessageDescriptors     { return emptyMessages }\nfunc (f PlaceholderFile) Enums() protoreflect.EnumDescriptors           { return emptyEnums }\nfunc (f PlaceholderFile) Extensions() protoreflect.ExtensionDescriptors { return emptyExtensions }\nfunc (f PlaceholderFile) Services() protoreflect.ServiceDescriptors     { return emptyServices }\nfunc (f PlaceholderFile) SourceLocations() protoreflect.SourceLocations { return emptySourceLocations }\nfunc (f PlaceholderFile) ProtoType(protoreflect.FileDescriptor)         { return }\nfunc (f PlaceholderFile) ProtoInternal(pragma.DoNotImplement)           { return }\n\n// PlaceholderEnum is a placeholder, representing only the full name.\ntype PlaceholderEnum protoreflect.FullName\n\nfunc (e PlaceholderEnum) ParentFile() protoreflect.FileDescriptor   { return nil }\nfunc (e PlaceholderEnum) Parent() protoreflect.Descriptor           { return nil }\nfunc (e PlaceholderEnum) Index() int                                { return 0 }\nfunc (e PlaceholderEnum) Syntax() protoreflect.Syntax               { return 0 }\nfunc (e PlaceholderEnum) Name() protoreflect.Name                   { return protoreflect.FullName(e).Name() }\nfunc (e PlaceholderEnum) FullName() protoreflect.FullName           { return protoreflect.FullName(e) }\nfunc (e PlaceholderEnum) IsPlaceholder() bool                       { return true }\nfunc (e PlaceholderEnum) Options() protoreflect.ProtoMessage        { return descopts.Enum }\nfunc (e PlaceholderEnum) Values() protoreflect.EnumValueDescriptors { return emptyEnumValues }\nfunc (e PlaceholderEnum) ReservedNames() protoreflect.Names         { return emptyNames }\nfunc (e PlaceholderEnum) ReservedRanges() protoreflect.EnumRanges   { return emptyEnumRanges }\nfunc (e PlaceholderEnum) IsClosed() bool                            { return false }\nfunc (e PlaceholderEnum) ProtoType(protoreflect.EnumDescriptor)     { return }\nfunc (e PlaceholderEnum) ProtoInternal(pragma.DoNotImplement)       { return }\n\n// PlaceholderEnumValue is a placeholder, representing only the full name.\ntype PlaceholderEnumValue protoreflect.FullName\n\nfunc (e PlaceholderEnumValue) ParentFile() protoreflect.FileDescriptor    { return nil }\nfunc (e PlaceholderEnumValue) Parent() protoreflect.Descriptor            { return nil }\nfunc (e PlaceholderEnumValue) Index() int                                 { return 0 }\nfunc (e PlaceholderEnumValue) Syntax() protoreflect.Syntax                { return 0 }\nfunc (e PlaceholderEnumValue) Name() protoreflect.Name                    { return protoreflect.FullName(e).Name() }\nfunc (e PlaceholderEnumValue) FullName() protoreflect.FullName            { return protoreflect.FullName(e) }\nfunc (e PlaceholderEnumValue) IsPlaceholder() bool                        { return true }\nfunc (e PlaceholderEnumValue) Options() protoreflect.ProtoMessage         { return descopts.EnumValue }\nfunc (e PlaceholderEnumValue) Number() protoreflect.EnumNumber            { return 0 }\nfunc (e PlaceholderEnumValue) ProtoType(protoreflect.EnumValueDescriptor) { return }\nfunc (e PlaceholderEnumValue) ProtoInternal(pragma.DoNotImplement)        { return }\n\n// PlaceholderMessage is a placeholder, representing only the full name.\ntype PlaceholderMessage protoreflect.FullName\n\nfunc (m PlaceholderMessage) ParentFile() protoreflect.FileDescriptor    { return nil }\nfunc (m PlaceholderMessage) Parent() protoreflect.Descriptor            { return nil }\nfunc (m PlaceholderMessage) Index() int                                 { return 0 }\nfunc (m PlaceholderMessage) Syntax() protoreflect.Syntax                { return 0 }\nfunc (m PlaceholderMessage) Name() protoreflect.Name                    { return protoreflect.FullName(m).Name() }\nfunc (m PlaceholderMessage) FullName() protoreflect.FullName            { return protoreflect.FullName(m) }\nfunc (m PlaceholderMessage) IsPlaceholder() bool                        { return true }\nfunc (m PlaceholderMessage) Options() protoreflect.ProtoMessage         { return descopts.Message }\nfunc (m PlaceholderMessage) IsMapEntry() bool                           { return false }\nfunc (m PlaceholderMessage) Fields() protoreflect.FieldDescriptors      { return emptyFields }\nfunc (m PlaceholderMessage) Oneofs() protoreflect.OneofDescriptors      { return emptyOneofs }\nfunc (m PlaceholderMessage) ReservedNames() protoreflect.Names          { return emptyNames }\nfunc (m PlaceholderMessage) ReservedRanges() protoreflect.FieldRanges   { return emptyFieldRanges }\nfunc (m PlaceholderMessage) RequiredNumbers() protoreflect.FieldNumbers { return emptyFieldNumbers }\nfunc (m PlaceholderMessage) ExtensionRanges() protoreflect.FieldRanges  { return emptyFieldRanges }\nfunc (m PlaceholderMessage) ExtensionRangeOptions(int) protoreflect.ProtoMessage {\n\tpanic(\"index out of range\")\n}\nfunc (m PlaceholderMessage) Messages() protoreflect.MessageDescriptors     { return emptyMessages }\nfunc (m PlaceholderMessage) Enums() protoreflect.EnumDescriptors           { return emptyEnums }\nfunc (m PlaceholderMessage) Extensions() protoreflect.ExtensionDescriptors { return emptyExtensions }\nfunc (m PlaceholderMessage) ProtoType(protoreflect.MessageDescriptor)      { return }\nfunc (m PlaceholderMessage) ProtoInternal(pragma.DoNotImplement)           { return }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/presence.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport \"google.golang.org/protobuf/reflect/protoreflect\"\n\n// UsePresenceForField reports whether the presence bitmap should be used for\n// the specified field.\nfunc UsePresenceForField(fd protoreflect.FieldDescriptor) (usePresence, canBeLazy bool) {\n\tswitch {\n\tcase fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():\n\t\t// Oneof fields never use the presence bitmap.\n\t\t//\n\t\t// Synthetic oneofs are an exception: Those are used to implement proto3\n\t\t// optional fields and hence should follow non-oneof field semantics.\n\t\treturn false, false\n\n\tcase fd.IsMap():\n\t\t// Map-typed fields never use the presence bitmap.\n\t\treturn false, false\n\n\tcase fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind:\n\t\t// Lazy fields always use the presence bitmap (only messages can be lazy).\n\t\tisLazy := fd.(interface{ IsLazy() bool }).IsLazy()\n\t\treturn isLazy, isLazy\n\n\tdefault:\n\t\t// If the field has presence, use the presence bitmap.\n\t\treturn fd.HasPresence(), false\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filetype/build.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package filetype provides functionality for wrapping descriptors\n// with Go type information.\npackage filetype\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\tpimpl \"google.golang.org/protobuf/internal/impl\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Builder constructs type descriptors from a raw file descriptor\n// and associated Go types for each enum and message declaration.\n//\n// # Flattened Ordering\n//\n// The protobuf type system represents declarations as a tree. Certain nodes in\n// the tree require us to either associate it with a concrete Go type or to\n// resolve a dependency, which is information that must be provided separately\n// since it cannot be derived from the file descriptor alone.\n//\n// However, representing a tree as Go literals is difficult to simply do in a\n// space and time efficient way. Thus, we store them as a flattened list of\n// objects where the serialization order from the tree-based form is important.\n//\n// The \"flattened ordering\" is defined as a tree traversal of all enum, message,\n// extension, and service declarations using the following algorithm:\n//\n//\tdef VisitFileDecls(fd):\n//\t\tfor e in fd.Enums:      yield e\n//\t\tfor m in fd.Messages:   yield m\n//\t\tfor x in fd.Extensions: yield x\n//\t\tfor s in fd.Services:   yield s\n//\t\tfor m in fd.Messages:   yield from VisitMessageDecls(m)\n//\n//\tdef VisitMessageDecls(md):\n//\t\tfor e in md.Enums:      yield e\n//\t\tfor m in md.Messages:   yield m\n//\t\tfor x in md.Extensions: yield x\n//\t\tfor m in md.Messages:   yield from VisitMessageDecls(m)\n//\n// The traversal starts at the root file descriptor and yields each direct\n// declaration within each node before traversing into sub-declarations\n// that children themselves may have.\ntype Builder struct {\n\t// File is the underlying file descriptor builder.\n\tFile filedesc.Builder\n\n\t// GoTypes is a unique set of the Go types for all declarations and\n\t// dependencies. Each type is represented as a zero value of the Go type.\n\t//\n\t// Declarations are Go types generated for enums and messages directly\n\t// declared (not publicly imported) in the proto source file.\n\t// Messages for map entries are accounted for, but represented by nil.\n\t// Enum declarations in \"flattened ordering\" come first, followed by\n\t// message declarations in \"flattened ordering\".\n\t//\n\t// Dependencies are Go types for enums or messages referenced by\n\t// message fields, for parent extended messages of\n\t// extension fields, for enums or messages referenced by extension fields,\n\t// and for input and output messages referenced by service methods.\n\t// Dependencies must come after declarations, but the ordering of\n\t// dependencies themselves is unspecified.\n\tGoTypes []any\n\n\t// DependencyIndexes is an ordered list of indexes into GoTypes for the\n\t// dependencies of messages, extensions, or services.\n\t//\n\t// There are 5 sub-lists in \"flattened ordering\" concatenated back-to-back:\n\t//\t0. Message field dependencies: list of the enum or message type\n\t//\treferred to by every message field.\n\t//\t1. Extension field targets: list of the extended parent message of\n\t//\tevery extension.\n\t//\t2. Extension field dependencies: list of the enum or message type\n\t//\treferred to by every extension field.\n\t//\t3. Service method inputs: list of the input message type\n\t//\treferred to by every service method.\n\t//\t4. Service method outputs: list of the output message type\n\t//\treferred to by every service method.\n\t//\n\t// The offset into DependencyIndexes for the start of each sub-list\n\t// is appended to the end in reverse order.\n\tDependencyIndexes []int32\n\n\t// EnumInfos is a list of enum infos in \"flattened ordering\".\n\tEnumInfos []pimpl.EnumInfo\n\n\t// MessageInfos is a list of message infos in \"flattened ordering\".\n\t// If provided, the GoType and PBType for each element is populated.\n\t//\n\t// Requirement: len(MessageInfos) == len(Build.Messages)\n\tMessageInfos []pimpl.MessageInfo\n\n\t// ExtensionInfos is a list of extension infos in \"flattened ordering\".\n\t// Each element is initialized and registered with the protoregistry package.\n\t//\n\t// Requirement: len(LegacyExtensions) == len(Build.Extensions)\n\tExtensionInfos []pimpl.ExtensionInfo\n\n\t// TypeRegistry is the registry to register each type descriptor.\n\t// If nil, it uses protoregistry.GlobalTypes.\n\tTypeRegistry interface {\n\t\tRegisterMessage(protoreflect.MessageType) error\n\t\tRegisterEnum(protoreflect.EnumType) error\n\t\tRegisterExtension(protoreflect.ExtensionType) error\n\t}\n}\n\n// Out is the output of the builder.\ntype Out struct {\n\tFile protoreflect.FileDescriptor\n}\n\nfunc (tb Builder) Build() (out Out) {\n\t// Replace the resolver with one that resolves dependencies by index,\n\t// which is faster and more reliable than relying on the global registry.\n\tif tb.File.FileRegistry == nil {\n\t\ttb.File.FileRegistry = protoregistry.GlobalFiles\n\t}\n\ttb.File.FileRegistry = &resolverByIndex{\n\t\tgoTypes:      tb.GoTypes,\n\t\tdepIdxs:      tb.DependencyIndexes,\n\t\tfileRegistry: tb.File.FileRegistry,\n\t}\n\n\t// Initialize registry if unpopulated.\n\tif tb.TypeRegistry == nil {\n\t\ttb.TypeRegistry = protoregistry.GlobalTypes\n\t}\n\n\tfbOut := tb.File.Build()\n\tout.File = fbOut.File\n\n\t// Process enums.\n\tenumGoTypes := tb.GoTypes[:len(fbOut.Enums)]\n\tif len(tb.EnumInfos) != len(fbOut.Enums) {\n\t\tpanic(\"mismatching enum lengths\")\n\t}\n\tif len(fbOut.Enums) > 0 {\n\t\tfor i := range fbOut.Enums {\n\t\t\ttb.EnumInfos[i] = pimpl.EnumInfo{\n\t\t\t\tGoReflectType: reflect.TypeOf(enumGoTypes[i]),\n\t\t\t\tDesc:          &fbOut.Enums[i],\n\t\t\t}\n\t\t\t// Register enum types.\n\t\t\tif err := tb.TypeRegistry.RegisterEnum(&tb.EnumInfos[i]); err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Process messages.\n\tmessageGoTypes := tb.GoTypes[len(fbOut.Enums):][:len(fbOut.Messages)]\n\tif len(tb.MessageInfos) != len(fbOut.Messages) {\n\t\tpanic(\"mismatching message lengths\")\n\t}\n\tif len(fbOut.Messages) > 0 {\n\t\tfor i := range fbOut.Messages {\n\t\t\tif messageGoTypes[i] == nil {\n\t\t\t\tcontinue // skip map entry\n\t\t\t}\n\n\t\t\ttb.MessageInfos[i].GoReflectType = reflect.TypeOf(messageGoTypes[i])\n\t\t\ttb.MessageInfos[i].Desc = &fbOut.Messages[i]\n\n\t\t\t// Register message types.\n\t\t\tif err := tb.TypeRegistry.RegisterMessage(&tb.MessageInfos[i]); err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t}\n\n\t\t// As a special-case for descriptor.proto,\n\t\t// locally register concrete message type for the options.\n\t\tif out.File.Path() == \"google/protobuf/descriptor.proto\" && out.File.Package() == \"google.protobuf\" {\n\t\t\tfor i := range fbOut.Messages {\n\t\t\t\tswitch fbOut.Messages[i].Name() {\n\t\t\t\tcase \"FileOptions\":\n\t\t\t\t\tdescopts.File = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"EnumOptions\":\n\t\t\t\t\tdescopts.Enum = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"EnumValueOptions\":\n\t\t\t\t\tdescopts.EnumValue = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"MessageOptions\":\n\t\t\t\t\tdescopts.Message = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"FieldOptions\":\n\t\t\t\t\tdescopts.Field = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"OneofOptions\":\n\t\t\t\t\tdescopts.Oneof = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"ExtensionRangeOptions\":\n\t\t\t\t\tdescopts.ExtensionRange = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"ServiceOptions\":\n\t\t\t\t\tdescopts.Service = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"MethodOptions\":\n\t\t\t\t\tdescopts.Method = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Process extensions.\n\tif len(tb.ExtensionInfos) != len(fbOut.Extensions) {\n\t\tpanic(\"mismatching extension lengths\")\n\t}\n\tvar depIdx int32\n\tfor i := range fbOut.Extensions {\n\t\t// For enum and message kinds, determine the referent Go type so\n\t\t// that we can construct their constructors.\n\t\tconst listExtDeps = 2\n\t\tvar goType reflect.Type\n\t\tswitch fbOut.Extensions[i].L1.Kind {\n\t\tcase protoreflect.EnumKind:\n\t\t\tj := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx)\n\t\t\tgoType = reflect.TypeOf(tb.GoTypes[j])\n\t\t\tdepIdx++\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\tj := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx)\n\t\t\tgoType = reflect.TypeOf(tb.GoTypes[j])\n\t\t\tdepIdx++\n\t\tdefault:\n\t\t\tgoType = goTypeForPBKind[fbOut.Extensions[i].L1.Kind]\n\t\t}\n\t\tif fbOut.Extensions[i].IsList() {\n\t\t\tgoType = reflect.SliceOf(goType)\n\t\t}\n\n\t\tpimpl.InitExtensionInfo(&tb.ExtensionInfos[i], &fbOut.Extensions[i], goType)\n\n\t\t// Register extension types.\n\t\tif err := tb.TypeRegistry.RegisterExtension(&tb.ExtensionInfos[i]); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\n\treturn out\n}\n\nvar goTypeForPBKind = map[protoreflect.Kind]reflect.Type{\n\tprotoreflect.BoolKind:     reflect.TypeOf(bool(false)),\n\tprotoreflect.Int32Kind:    reflect.TypeOf(int32(0)),\n\tprotoreflect.Sint32Kind:   reflect.TypeOf(int32(0)),\n\tprotoreflect.Sfixed32Kind: reflect.TypeOf(int32(0)),\n\tprotoreflect.Int64Kind:    reflect.TypeOf(int64(0)),\n\tprotoreflect.Sint64Kind:   reflect.TypeOf(int64(0)),\n\tprotoreflect.Sfixed64Kind: reflect.TypeOf(int64(0)),\n\tprotoreflect.Uint32Kind:   reflect.TypeOf(uint32(0)),\n\tprotoreflect.Fixed32Kind:  reflect.TypeOf(uint32(0)),\n\tprotoreflect.Uint64Kind:   reflect.TypeOf(uint64(0)),\n\tprotoreflect.Fixed64Kind:  reflect.TypeOf(uint64(0)),\n\tprotoreflect.FloatKind:    reflect.TypeOf(float32(0)),\n\tprotoreflect.DoubleKind:   reflect.TypeOf(float64(0)),\n\tprotoreflect.StringKind:   reflect.TypeOf(string(\"\")),\n\tprotoreflect.BytesKind:    reflect.TypeOf([]byte(nil)),\n}\n\ntype depIdxs []int32\n\n// Get retrieves the jth element of the ith sub-list.\nfunc (x depIdxs) Get(i, j int32) int32 {\n\treturn x[x[int32(len(x))-i-1]+j]\n}\n\ntype (\n\tresolverByIndex struct {\n\t\tgoTypes []any\n\t\tdepIdxs depIdxs\n\t\tfileRegistry\n\t}\n\tfileRegistry interface {\n\t\tFindFileByPath(string) (protoreflect.FileDescriptor, error)\n\t\tFindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error)\n\t\tRegisterFile(protoreflect.FileDescriptor) error\n\t}\n)\n\nfunc (r *resolverByIndex) FindEnumByIndex(i, j int32, es []filedesc.Enum, ms []filedesc.Message) protoreflect.EnumDescriptor {\n\tif depIdx := int(r.depIdxs.Get(i, j)); int(depIdx) < len(es)+len(ms) {\n\t\treturn &es[depIdx]\n\t} else {\n\t\treturn pimpl.Export{}.EnumDescriptorOf(r.goTypes[depIdx])\n\t}\n}\n\nfunc (r *resolverByIndex) FindMessageByIndex(i, j int32, es []filedesc.Enum, ms []filedesc.Message) protoreflect.MessageDescriptor {\n\tif depIdx := int(r.depIdxs.Get(i, j)); depIdx < len(es)+len(ms) {\n\t\treturn &ms[depIdx-len(es)]\n\t} else {\n\t\treturn pimpl.Export{}.MessageDescriptorOf(r.goTypes[depIdx])\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/flags/flags.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package flags provides a set of flags controlled by build tags.\npackage flags\n\n// ProtoLegacy specifies whether to enable support for legacy functionality\n// such as MessageSets, and various other obscure behavior\n// that is necessary to maintain backwards compatibility with proto1 or\n// the pre-release variants of proto2 and proto3.\n//\n// This is disabled by default unless built with the \"protolegacy\" tag.\n//\n// WARNING: The compatibility agreement covers nothing provided by this flag.\n// As such, functionality may suddenly be removed or changed at our discretion.\nconst ProtoLegacy = protoLegacy\n\n// LazyUnmarshalExtensions specifies whether to lazily unmarshal extensions.\n//\n// Lazy extension unmarshaling validates the contents of message-valued\n// extension fields at unmarshal time, but defers creating the message\n// structure until the extension is first accessed.\nconst LazyUnmarshalExtensions = ProtoLegacy\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !protolegacy\n// +build !protolegacy\n\npackage flags\n\nconst protoLegacy = false\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build protolegacy\n// +build protolegacy\n\npackage flags\n\nconst protoLegacy = true\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/any_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_any_proto = \"google/protobuf/any.proto\"\n\n// Names for google.protobuf.Any.\nconst (\n\tAny_message_name     protoreflect.Name     = \"Any\"\n\tAny_message_fullname protoreflect.FullName = \"google.protobuf.Any\"\n)\n\n// Field names for google.protobuf.Any.\nconst (\n\tAny_TypeUrl_field_name protoreflect.Name = \"type_url\"\n\tAny_Value_field_name   protoreflect.Name = \"value\"\n\n\tAny_TypeUrl_field_fullname protoreflect.FullName = \"google.protobuf.Any.type_url\"\n\tAny_Value_field_fullname   protoreflect.FullName = \"google.protobuf.Any.value\"\n)\n\n// Field numbers for google.protobuf.Any.\nconst (\n\tAny_TypeUrl_field_number protoreflect.FieldNumber = 1\n\tAny_Value_field_number   protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/api_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_api_proto = \"google/protobuf/api.proto\"\n\n// Names for google.protobuf.Api.\nconst (\n\tApi_message_name     protoreflect.Name     = \"Api\"\n\tApi_message_fullname protoreflect.FullName = \"google.protobuf.Api\"\n)\n\n// Field names for google.protobuf.Api.\nconst (\n\tApi_Name_field_name          protoreflect.Name = \"name\"\n\tApi_Methods_field_name       protoreflect.Name = \"methods\"\n\tApi_Options_field_name       protoreflect.Name = \"options\"\n\tApi_Version_field_name       protoreflect.Name = \"version\"\n\tApi_SourceContext_field_name protoreflect.Name = \"source_context\"\n\tApi_Mixins_field_name        protoreflect.Name = \"mixins\"\n\tApi_Syntax_field_name        protoreflect.Name = \"syntax\"\n\tApi_Edition_field_name       protoreflect.Name = \"edition\"\n\n\tApi_Name_field_fullname          protoreflect.FullName = \"google.protobuf.Api.name\"\n\tApi_Methods_field_fullname       protoreflect.FullName = \"google.protobuf.Api.methods\"\n\tApi_Options_field_fullname       protoreflect.FullName = \"google.protobuf.Api.options\"\n\tApi_Version_field_fullname       protoreflect.FullName = \"google.protobuf.Api.version\"\n\tApi_SourceContext_field_fullname protoreflect.FullName = \"google.protobuf.Api.source_context\"\n\tApi_Mixins_field_fullname        protoreflect.FullName = \"google.protobuf.Api.mixins\"\n\tApi_Syntax_field_fullname        protoreflect.FullName = \"google.protobuf.Api.syntax\"\n\tApi_Edition_field_fullname       protoreflect.FullName = \"google.protobuf.Api.edition\"\n)\n\n// Field numbers for google.protobuf.Api.\nconst (\n\tApi_Name_field_number          protoreflect.FieldNumber = 1\n\tApi_Methods_field_number       protoreflect.FieldNumber = 2\n\tApi_Options_field_number       protoreflect.FieldNumber = 3\n\tApi_Version_field_number       protoreflect.FieldNumber = 4\n\tApi_SourceContext_field_number protoreflect.FieldNumber = 5\n\tApi_Mixins_field_number        protoreflect.FieldNumber = 6\n\tApi_Syntax_field_number        protoreflect.FieldNumber = 7\n\tApi_Edition_field_number       protoreflect.FieldNumber = 8\n)\n\n// Names for google.protobuf.Method.\nconst (\n\tMethod_message_name     protoreflect.Name     = \"Method\"\n\tMethod_message_fullname protoreflect.FullName = \"google.protobuf.Method\"\n)\n\n// Field names for google.protobuf.Method.\nconst (\n\tMethod_Name_field_name              protoreflect.Name = \"name\"\n\tMethod_RequestTypeUrl_field_name    protoreflect.Name = \"request_type_url\"\n\tMethod_RequestStreaming_field_name  protoreflect.Name = \"request_streaming\"\n\tMethod_ResponseTypeUrl_field_name   protoreflect.Name = \"response_type_url\"\n\tMethod_ResponseStreaming_field_name protoreflect.Name = \"response_streaming\"\n\tMethod_Options_field_name           protoreflect.Name = \"options\"\n\tMethod_Syntax_field_name            protoreflect.Name = \"syntax\"\n\tMethod_Edition_field_name           protoreflect.Name = \"edition\"\n\n\tMethod_Name_field_fullname              protoreflect.FullName = \"google.protobuf.Method.name\"\n\tMethod_RequestTypeUrl_field_fullname    protoreflect.FullName = \"google.protobuf.Method.request_type_url\"\n\tMethod_RequestStreaming_field_fullname  protoreflect.FullName = \"google.protobuf.Method.request_streaming\"\n\tMethod_ResponseTypeUrl_field_fullname   protoreflect.FullName = \"google.protobuf.Method.response_type_url\"\n\tMethod_ResponseStreaming_field_fullname protoreflect.FullName = \"google.protobuf.Method.response_streaming\"\n\tMethod_Options_field_fullname           protoreflect.FullName = \"google.protobuf.Method.options\"\n\tMethod_Syntax_field_fullname            protoreflect.FullName = \"google.protobuf.Method.syntax\"\n\tMethod_Edition_field_fullname           protoreflect.FullName = \"google.protobuf.Method.edition\"\n)\n\n// Field numbers for google.protobuf.Method.\nconst (\n\tMethod_Name_field_number              protoreflect.FieldNumber = 1\n\tMethod_RequestTypeUrl_field_number    protoreflect.FieldNumber = 2\n\tMethod_RequestStreaming_field_number  protoreflect.FieldNumber = 3\n\tMethod_ResponseTypeUrl_field_number   protoreflect.FieldNumber = 4\n\tMethod_ResponseStreaming_field_number protoreflect.FieldNumber = 5\n\tMethod_Options_field_number           protoreflect.FieldNumber = 6\n\tMethod_Syntax_field_number            protoreflect.FieldNumber = 7\n\tMethod_Edition_field_number           protoreflect.FieldNumber = 8\n)\n\n// Names for google.protobuf.Mixin.\nconst (\n\tMixin_message_name     protoreflect.Name     = \"Mixin\"\n\tMixin_message_fullname protoreflect.FullName = \"google.protobuf.Mixin\"\n)\n\n// Field names for google.protobuf.Mixin.\nconst (\n\tMixin_Name_field_name protoreflect.Name = \"name\"\n\tMixin_Root_field_name protoreflect.Name = \"root\"\n\n\tMixin_Name_field_fullname protoreflect.FullName = \"google.protobuf.Mixin.name\"\n\tMixin_Root_field_fullname protoreflect.FullName = \"google.protobuf.Mixin.root\"\n)\n\n// Field numbers for google.protobuf.Mixin.\nconst (\n\tMixin_Name_field_number protoreflect.FieldNumber = 1\n\tMixin_Root_field_number protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_descriptor_proto = \"google/protobuf/descriptor.proto\"\n\n// Full and short names for google.protobuf.Edition.\nconst (\n\tEdition_enum_fullname = \"google.protobuf.Edition\"\n\tEdition_enum_name     = \"Edition\"\n)\n\n// Enum values for google.protobuf.Edition.\nconst (\n\tEdition_EDITION_UNKNOWN_enum_value         = 0\n\tEdition_EDITION_LEGACY_enum_value          = 900\n\tEdition_EDITION_PROTO2_enum_value          = 998\n\tEdition_EDITION_PROTO3_enum_value          = 999\n\tEdition_EDITION_2023_enum_value            = 1000\n\tEdition_EDITION_2024_enum_value            = 1001\n\tEdition_EDITION_UNSTABLE_enum_value        = 9999\n\tEdition_EDITION_1_TEST_ONLY_enum_value     = 1\n\tEdition_EDITION_2_TEST_ONLY_enum_value     = 2\n\tEdition_EDITION_99997_TEST_ONLY_enum_value = 99997\n\tEdition_EDITION_99998_TEST_ONLY_enum_value = 99998\n\tEdition_EDITION_99999_TEST_ONLY_enum_value = 99999\n\tEdition_EDITION_MAX_enum_value             = 2147483647\n)\n\n// Full and short names for google.protobuf.SymbolVisibility.\nconst (\n\tSymbolVisibility_enum_fullname = \"google.protobuf.SymbolVisibility\"\n\tSymbolVisibility_enum_name     = \"SymbolVisibility\"\n)\n\n// Enum values for google.protobuf.SymbolVisibility.\nconst (\n\tSymbolVisibility_VISIBILITY_UNSET_enum_value  = 0\n\tSymbolVisibility_VISIBILITY_LOCAL_enum_value  = 1\n\tSymbolVisibility_VISIBILITY_EXPORT_enum_value = 2\n)\n\n// Names for google.protobuf.FileDescriptorSet.\nconst (\n\tFileDescriptorSet_message_name     protoreflect.Name     = \"FileDescriptorSet\"\n\tFileDescriptorSet_message_fullname protoreflect.FullName = \"google.protobuf.FileDescriptorSet\"\n)\n\n// Field names for google.protobuf.FileDescriptorSet.\nconst (\n\tFileDescriptorSet_File_field_name protoreflect.Name = \"file\"\n\n\tFileDescriptorSet_File_field_fullname protoreflect.FullName = \"google.protobuf.FileDescriptorSet.file\"\n)\n\n// Field numbers for google.protobuf.FileDescriptorSet.\nconst (\n\tFileDescriptorSet_File_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.FileDescriptorProto.\nconst (\n\tFileDescriptorProto_message_name     protoreflect.Name     = \"FileDescriptorProto\"\n\tFileDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.FileDescriptorProto\"\n)\n\n// Field names for google.protobuf.FileDescriptorProto.\nconst (\n\tFileDescriptorProto_Name_field_name             protoreflect.Name = \"name\"\n\tFileDescriptorProto_Package_field_name          protoreflect.Name = \"package\"\n\tFileDescriptorProto_Dependency_field_name       protoreflect.Name = \"dependency\"\n\tFileDescriptorProto_PublicDependency_field_name protoreflect.Name = \"public_dependency\"\n\tFileDescriptorProto_WeakDependency_field_name   protoreflect.Name = \"weak_dependency\"\n\tFileDescriptorProto_OptionDependency_field_name protoreflect.Name = \"option_dependency\"\n\tFileDescriptorProto_MessageType_field_name      protoreflect.Name = \"message_type\"\n\tFileDescriptorProto_EnumType_field_name         protoreflect.Name = \"enum_type\"\n\tFileDescriptorProto_Service_field_name          protoreflect.Name = \"service\"\n\tFileDescriptorProto_Extension_field_name        protoreflect.Name = \"extension\"\n\tFileDescriptorProto_Options_field_name          protoreflect.Name = \"options\"\n\tFileDescriptorProto_SourceCodeInfo_field_name   protoreflect.Name = \"source_code_info\"\n\tFileDescriptorProto_Syntax_field_name           protoreflect.Name = \"syntax\"\n\tFileDescriptorProto_Edition_field_name          protoreflect.Name = \"edition\"\n\n\tFileDescriptorProto_Name_field_fullname             protoreflect.FullName = \"google.protobuf.FileDescriptorProto.name\"\n\tFileDescriptorProto_Package_field_fullname          protoreflect.FullName = \"google.protobuf.FileDescriptorProto.package\"\n\tFileDescriptorProto_Dependency_field_fullname       protoreflect.FullName = \"google.protobuf.FileDescriptorProto.dependency\"\n\tFileDescriptorProto_PublicDependency_field_fullname protoreflect.FullName = \"google.protobuf.FileDescriptorProto.public_dependency\"\n\tFileDescriptorProto_WeakDependency_field_fullname   protoreflect.FullName = \"google.protobuf.FileDescriptorProto.weak_dependency\"\n\tFileDescriptorProto_OptionDependency_field_fullname protoreflect.FullName = \"google.protobuf.FileDescriptorProto.option_dependency\"\n\tFileDescriptorProto_MessageType_field_fullname      protoreflect.FullName = \"google.protobuf.FileDescriptorProto.message_type\"\n\tFileDescriptorProto_EnumType_field_fullname         protoreflect.FullName = \"google.protobuf.FileDescriptorProto.enum_type\"\n\tFileDescriptorProto_Service_field_fullname          protoreflect.FullName = \"google.protobuf.FileDescriptorProto.service\"\n\tFileDescriptorProto_Extension_field_fullname        protoreflect.FullName = \"google.protobuf.FileDescriptorProto.extension\"\n\tFileDescriptorProto_Options_field_fullname          protoreflect.FullName = \"google.protobuf.FileDescriptorProto.options\"\n\tFileDescriptorProto_SourceCodeInfo_field_fullname   protoreflect.FullName = \"google.protobuf.FileDescriptorProto.source_code_info\"\n\tFileDescriptorProto_Syntax_field_fullname           protoreflect.FullName = \"google.protobuf.FileDescriptorProto.syntax\"\n\tFileDescriptorProto_Edition_field_fullname          protoreflect.FullName = \"google.protobuf.FileDescriptorProto.edition\"\n)\n\n// Field numbers for google.protobuf.FileDescriptorProto.\nconst (\n\tFileDescriptorProto_Name_field_number             protoreflect.FieldNumber = 1\n\tFileDescriptorProto_Package_field_number          protoreflect.FieldNumber = 2\n\tFileDescriptorProto_Dependency_field_number       protoreflect.FieldNumber = 3\n\tFileDescriptorProto_PublicDependency_field_number protoreflect.FieldNumber = 10\n\tFileDescriptorProto_WeakDependency_field_number   protoreflect.FieldNumber = 11\n\tFileDescriptorProto_OptionDependency_field_number protoreflect.FieldNumber = 15\n\tFileDescriptorProto_MessageType_field_number      protoreflect.FieldNumber = 4\n\tFileDescriptorProto_EnumType_field_number         protoreflect.FieldNumber = 5\n\tFileDescriptorProto_Service_field_number          protoreflect.FieldNumber = 6\n\tFileDescriptorProto_Extension_field_number        protoreflect.FieldNumber = 7\n\tFileDescriptorProto_Options_field_number          protoreflect.FieldNumber = 8\n\tFileDescriptorProto_SourceCodeInfo_field_number   protoreflect.FieldNumber = 9\n\tFileDescriptorProto_Syntax_field_number           protoreflect.FieldNumber = 12\n\tFileDescriptorProto_Edition_field_number          protoreflect.FieldNumber = 14\n)\n\n// Names for google.protobuf.DescriptorProto.\nconst (\n\tDescriptorProto_message_name     protoreflect.Name     = \"DescriptorProto\"\n\tDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto\"\n)\n\n// Field names for google.protobuf.DescriptorProto.\nconst (\n\tDescriptorProto_Name_field_name           protoreflect.Name = \"name\"\n\tDescriptorProto_Field_field_name          protoreflect.Name = \"field\"\n\tDescriptorProto_Extension_field_name      protoreflect.Name = \"extension\"\n\tDescriptorProto_NestedType_field_name     protoreflect.Name = \"nested_type\"\n\tDescriptorProto_EnumType_field_name       protoreflect.Name = \"enum_type\"\n\tDescriptorProto_ExtensionRange_field_name protoreflect.Name = \"extension_range\"\n\tDescriptorProto_OneofDecl_field_name      protoreflect.Name = \"oneof_decl\"\n\tDescriptorProto_Options_field_name        protoreflect.Name = \"options\"\n\tDescriptorProto_ReservedRange_field_name  protoreflect.Name = \"reserved_range\"\n\tDescriptorProto_ReservedName_field_name   protoreflect.Name = \"reserved_name\"\n\tDescriptorProto_Visibility_field_name     protoreflect.Name = \"visibility\"\n\n\tDescriptorProto_Name_field_fullname           protoreflect.FullName = \"google.protobuf.DescriptorProto.name\"\n\tDescriptorProto_Field_field_fullname          protoreflect.FullName = \"google.protobuf.DescriptorProto.field\"\n\tDescriptorProto_Extension_field_fullname      protoreflect.FullName = \"google.protobuf.DescriptorProto.extension\"\n\tDescriptorProto_NestedType_field_fullname     protoreflect.FullName = \"google.protobuf.DescriptorProto.nested_type\"\n\tDescriptorProto_EnumType_field_fullname       protoreflect.FullName = \"google.protobuf.DescriptorProto.enum_type\"\n\tDescriptorProto_ExtensionRange_field_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.extension_range\"\n\tDescriptorProto_OneofDecl_field_fullname      protoreflect.FullName = \"google.protobuf.DescriptorProto.oneof_decl\"\n\tDescriptorProto_Options_field_fullname        protoreflect.FullName = \"google.protobuf.DescriptorProto.options\"\n\tDescriptorProto_ReservedRange_field_fullname  protoreflect.FullName = \"google.protobuf.DescriptorProto.reserved_range\"\n\tDescriptorProto_ReservedName_field_fullname   protoreflect.FullName = \"google.protobuf.DescriptorProto.reserved_name\"\n\tDescriptorProto_Visibility_field_fullname     protoreflect.FullName = \"google.protobuf.DescriptorProto.visibility\"\n)\n\n// Field numbers for google.protobuf.DescriptorProto.\nconst (\n\tDescriptorProto_Name_field_number           protoreflect.FieldNumber = 1\n\tDescriptorProto_Field_field_number          protoreflect.FieldNumber = 2\n\tDescriptorProto_Extension_field_number      protoreflect.FieldNumber = 6\n\tDescriptorProto_NestedType_field_number     protoreflect.FieldNumber = 3\n\tDescriptorProto_EnumType_field_number       protoreflect.FieldNumber = 4\n\tDescriptorProto_ExtensionRange_field_number protoreflect.FieldNumber = 5\n\tDescriptorProto_OneofDecl_field_number      protoreflect.FieldNumber = 8\n\tDescriptorProto_Options_field_number        protoreflect.FieldNumber = 7\n\tDescriptorProto_ReservedRange_field_number  protoreflect.FieldNumber = 9\n\tDescriptorProto_ReservedName_field_number   protoreflect.FieldNumber = 10\n\tDescriptorProto_Visibility_field_number     protoreflect.FieldNumber = 11\n)\n\n// Names for google.protobuf.DescriptorProto.ExtensionRange.\nconst (\n\tDescriptorProto_ExtensionRange_message_name     protoreflect.Name     = \"ExtensionRange\"\n\tDescriptorProto_ExtensionRange_message_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.ExtensionRange\"\n)\n\n// Field names for google.protobuf.DescriptorProto.ExtensionRange.\nconst (\n\tDescriptorProto_ExtensionRange_Start_field_name   protoreflect.Name = \"start\"\n\tDescriptorProto_ExtensionRange_End_field_name     protoreflect.Name = \"end\"\n\tDescriptorProto_ExtensionRange_Options_field_name protoreflect.Name = \"options\"\n\n\tDescriptorProto_ExtensionRange_Start_field_fullname   protoreflect.FullName = \"google.protobuf.DescriptorProto.ExtensionRange.start\"\n\tDescriptorProto_ExtensionRange_End_field_fullname     protoreflect.FullName = \"google.protobuf.DescriptorProto.ExtensionRange.end\"\n\tDescriptorProto_ExtensionRange_Options_field_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.ExtensionRange.options\"\n)\n\n// Field numbers for google.protobuf.DescriptorProto.ExtensionRange.\nconst (\n\tDescriptorProto_ExtensionRange_Start_field_number   protoreflect.FieldNumber = 1\n\tDescriptorProto_ExtensionRange_End_field_number     protoreflect.FieldNumber = 2\n\tDescriptorProto_ExtensionRange_Options_field_number protoreflect.FieldNumber = 3\n)\n\n// Names for google.protobuf.DescriptorProto.ReservedRange.\nconst (\n\tDescriptorProto_ReservedRange_message_name     protoreflect.Name     = \"ReservedRange\"\n\tDescriptorProto_ReservedRange_message_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.ReservedRange\"\n)\n\n// Field names for google.protobuf.DescriptorProto.ReservedRange.\nconst (\n\tDescriptorProto_ReservedRange_Start_field_name protoreflect.Name = \"start\"\n\tDescriptorProto_ReservedRange_End_field_name   protoreflect.Name = \"end\"\n\n\tDescriptorProto_ReservedRange_Start_field_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.ReservedRange.start\"\n\tDescriptorProto_ReservedRange_End_field_fullname   protoreflect.FullName = \"google.protobuf.DescriptorProto.ReservedRange.end\"\n)\n\n// Field numbers for google.protobuf.DescriptorProto.ReservedRange.\nconst (\n\tDescriptorProto_ReservedRange_Start_field_number protoreflect.FieldNumber = 1\n\tDescriptorProto_ReservedRange_End_field_number   protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.ExtensionRangeOptions.\nconst (\n\tExtensionRangeOptions_message_name     protoreflect.Name     = \"ExtensionRangeOptions\"\n\tExtensionRangeOptions_message_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions\"\n)\n\n// Field names for google.protobuf.ExtensionRangeOptions.\nconst (\n\tExtensionRangeOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\tExtensionRangeOptions_Declaration_field_name         protoreflect.Name = \"declaration\"\n\tExtensionRangeOptions_Features_field_name            protoreflect.Name = \"features\"\n\tExtensionRangeOptions_Verification_field_name        protoreflect.Name = \"verification\"\n\n\tExtensionRangeOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.uninterpreted_option\"\n\tExtensionRangeOptions_Declaration_field_fullname         protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.declaration\"\n\tExtensionRangeOptions_Features_field_fullname            protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.features\"\n\tExtensionRangeOptions_Verification_field_fullname        protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.verification\"\n)\n\n// Field numbers for google.protobuf.ExtensionRangeOptions.\nconst (\n\tExtensionRangeOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n\tExtensionRangeOptions_Declaration_field_number         protoreflect.FieldNumber = 2\n\tExtensionRangeOptions_Features_field_number            protoreflect.FieldNumber = 50\n\tExtensionRangeOptions_Verification_field_number        protoreflect.FieldNumber = 3\n)\n\n// Full and short names for google.protobuf.ExtensionRangeOptions.VerificationState.\nconst (\n\tExtensionRangeOptions_VerificationState_enum_fullname = \"google.protobuf.ExtensionRangeOptions.VerificationState\"\n\tExtensionRangeOptions_VerificationState_enum_name     = \"VerificationState\"\n)\n\n// Enum values for google.protobuf.ExtensionRangeOptions.VerificationState.\nconst (\n\tExtensionRangeOptions_DECLARATION_enum_value = 0\n\tExtensionRangeOptions_UNVERIFIED_enum_value  = 1\n)\n\n// Names for google.protobuf.ExtensionRangeOptions.Declaration.\nconst (\n\tExtensionRangeOptions_Declaration_message_name     protoreflect.Name     = \"Declaration\"\n\tExtensionRangeOptions_Declaration_message_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration\"\n)\n\n// Field names for google.protobuf.ExtensionRangeOptions.Declaration.\nconst (\n\tExtensionRangeOptions_Declaration_Number_field_name   protoreflect.Name = \"number\"\n\tExtensionRangeOptions_Declaration_FullName_field_name protoreflect.Name = \"full_name\"\n\tExtensionRangeOptions_Declaration_Type_field_name     protoreflect.Name = \"type\"\n\tExtensionRangeOptions_Declaration_Reserved_field_name protoreflect.Name = \"reserved\"\n\tExtensionRangeOptions_Declaration_Repeated_field_name protoreflect.Name = \"repeated\"\n\n\tExtensionRangeOptions_Declaration_Number_field_fullname   protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.number\"\n\tExtensionRangeOptions_Declaration_FullName_field_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.full_name\"\n\tExtensionRangeOptions_Declaration_Type_field_fullname     protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.type\"\n\tExtensionRangeOptions_Declaration_Reserved_field_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.reserved\"\n\tExtensionRangeOptions_Declaration_Repeated_field_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.repeated\"\n)\n\n// Field numbers for google.protobuf.ExtensionRangeOptions.Declaration.\nconst (\n\tExtensionRangeOptions_Declaration_Number_field_number   protoreflect.FieldNumber = 1\n\tExtensionRangeOptions_Declaration_FullName_field_number protoreflect.FieldNumber = 2\n\tExtensionRangeOptions_Declaration_Type_field_number     protoreflect.FieldNumber = 3\n\tExtensionRangeOptions_Declaration_Reserved_field_number protoreflect.FieldNumber = 5\n\tExtensionRangeOptions_Declaration_Repeated_field_number protoreflect.FieldNumber = 6\n)\n\n// Names for google.protobuf.FieldDescriptorProto.\nconst (\n\tFieldDescriptorProto_message_name     protoreflect.Name     = \"FieldDescriptorProto\"\n\tFieldDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.FieldDescriptorProto\"\n)\n\n// Field names for google.protobuf.FieldDescriptorProto.\nconst (\n\tFieldDescriptorProto_Name_field_name           protoreflect.Name = \"name\"\n\tFieldDescriptorProto_Number_field_name         protoreflect.Name = \"number\"\n\tFieldDescriptorProto_Label_field_name          protoreflect.Name = \"label\"\n\tFieldDescriptorProto_Type_field_name           protoreflect.Name = \"type\"\n\tFieldDescriptorProto_TypeName_field_name       protoreflect.Name = \"type_name\"\n\tFieldDescriptorProto_Extendee_field_name       protoreflect.Name = \"extendee\"\n\tFieldDescriptorProto_DefaultValue_field_name   protoreflect.Name = \"default_value\"\n\tFieldDescriptorProto_OneofIndex_field_name     protoreflect.Name = \"oneof_index\"\n\tFieldDescriptorProto_JsonName_field_name       protoreflect.Name = \"json_name\"\n\tFieldDescriptorProto_Options_field_name        protoreflect.Name = \"options\"\n\tFieldDescriptorProto_Proto3Optional_field_name protoreflect.Name = \"proto3_optional\"\n\n\tFieldDescriptorProto_Name_field_fullname           protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.name\"\n\tFieldDescriptorProto_Number_field_fullname         protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.number\"\n\tFieldDescriptorProto_Label_field_fullname          protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.label\"\n\tFieldDescriptorProto_Type_field_fullname           protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.type\"\n\tFieldDescriptorProto_TypeName_field_fullname       protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.type_name\"\n\tFieldDescriptorProto_Extendee_field_fullname       protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.extendee\"\n\tFieldDescriptorProto_DefaultValue_field_fullname   protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.default_value\"\n\tFieldDescriptorProto_OneofIndex_field_fullname     protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.oneof_index\"\n\tFieldDescriptorProto_JsonName_field_fullname       protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.json_name\"\n\tFieldDescriptorProto_Options_field_fullname        protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.options\"\n\tFieldDescriptorProto_Proto3Optional_field_fullname protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.proto3_optional\"\n)\n\n// Field numbers for google.protobuf.FieldDescriptorProto.\nconst (\n\tFieldDescriptorProto_Name_field_number           protoreflect.FieldNumber = 1\n\tFieldDescriptorProto_Number_field_number         protoreflect.FieldNumber = 3\n\tFieldDescriptorProto_Label_field_number          protoreflect.FieldNumber = 4\n\tFieldDescriptorProto_Type_field_number           protoreflect.FieldNumber = 5\n\tFieldDescriptorProto_TypeName_field_number       protoreflect.FieldNumber = 6\n\tFieldDescriptorProto_Extendee_field_number       protoreflect.FieldNumber = 2\n\tFieldDescriptorProto_DefaultValue_field_number   protoreflect.FieldNumber = 7\n\tFieldDescriptorProto_OneofIndex_field_number     protoreflect.FieldNumber = 9\n\tFieldDescriptorProto_JsonName_field_number       protoreflect.FieldNumber = 10\n\tFieldDescriptorProto_Options_field_number        protoreflect.FieldNumber = 8\n\tFieldDescriptorProto_Proto3Optional_field_number protoreflect.FieldNumber = 17\n)\n\n// Full and short names for google.protobuf.FieldDescriptorProto.Type.\nconst (\n\tFieldDescriptorProto_Type_enum_fullname = \"google.protobuf.FieldDescriptorProto.Type\"\n\tFieldDescriptorProto_Type_enum_name     = \"Type\"\n)\n\n// Enum values for google.protobuf.FieldDescriptorProto.Type.\nconst (\n\tFieldDescriptorProto_TYPE_DOUBLE_enum_value   = 1\n\tFieldDescriptorProto_TYPE_FLOAT_enum_value    = 2\n\tFieldDescriptorProto_TYPE_INT64_enum_value    = 3\n\tFieldDescriptorProto_TYPE_UINT64_enum_value   = 4\n\tFieldDescriptorProto_TYPE_INT32_enum_value    = 5\n\tFieldDescriptorProto_TYPE_FIXED64_enum_value  = 6\n\tFieldDescriptorProto_TYPE_FIXED32_enum_value  = 7\n\tFieldDescriptorProto_TYPE_BOOL_enum_value     = 8\n\tFieldDescriptorProto_TYPE_STRING_enum_value   = 9\n\tFieldDescriptorProto_TYPE_GROUP_enum_value    = 10\n\tFieldDescriptorProto_TYPE_MESSAGE_enum_value  = 11\n\tFieldDescriptorProto_TYPE_BYTES_enum_value    = 12\n\tFieldDescriptorProto_TYPE_UINT32_enum_value   = 13\n\tFieldDescriptorProto_TYPE_ENUM_enum_value     = 14\n\tFieldDescriptorProto_TYPE_SFIXED32_enum_value = 15\n\tFieldDescriptorProto_TYPE_SFIXED64_enum_value = 16\n\tFieldDescriptorProto_TYPE_SINT32_enum_value   = 17\n\tFieldDescriptorProto_TYPE_SINT64_enum_value   = 18\n)\n\n// Full and short names for google.protobuf.FieldDescriptorProto.Label.\nconst (\n\tFieldDescriptorProto_Label_enum_fullname = \"google.protobuf.FieldDescriptorProto.Label\"\n\tFieldDescriptorProto_Label_enum_name     = \"Label\"\n)\n\n// Enum values for google.protobuf.FieldDescriptorProto.Label.\nconst (\n\tFieldDescriptorProto_LABEL_OPTIONAL_enum_value = 1\n\tFieldDescriptorProto_LABEL_REPEATED_enum_value = 3\n\tFieldDescriptorProto_LABEL_REQUIRED_enum_value = 2\n)\n\n// Names for google.protobuf.OneofDescriptorProto.\nconst (\n\tOneofDescriptorProto_message_name     protoreflect.Name     = \"OneofDescriptorProto\"\n\tOneofDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.OneofDescriptorProto\"\n)\n\n// Field names for google.protobuf.OneofDescriptorProto.\nconst (\n\tOneofDescriptorProto_Name_field_name    protoreflect.Name = \"name\"\n\tOneofDescriptorProto_Options_field_name protoreflect.Name = \"options\"\n\n\tOneofDescriptorProto_Name_field_fullname    protoreflect.FullName = \"google.protobuf.OneofDescriptorProto.name\"\n\tOneofDescriptorProto_Options_field_fullname protoreflect.FullName = \"google.protobuf.OneofDescriptorProto.options\"\n)\n\n// Field numbers for google.protobuf.OneofDescriptorProto.\nconst (\n\tOneofDescriptorProto_Name_field_number    protoreflect.FieldNumber = 1\n\tOneofDescriptorProto_Options_field_number protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.EnumDescriptorProto.\nconst (\n\tEnumDescriptorProto_message_name     protoreflect.Name     = \"EnumDescriptorProto\"\n\tEnumDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.EnumDescriptorProto\"\n)\n\n// Field names for google.protobuf.EnumDescriptorProto.\nconst (\n\tEnumDescriptorProto_Name_field_name          protoreflect.Name = \"name\"\n\tEnumDescriptorProto_Value_field_name         protoreflect.Name = \"value\"\n\tEnumDescriptorProto_Options_field_name       protoreflect.Name = \"options\"\n\tEnumDescriptorProto_ReservedRange_field_name protoreflect.Name = \"reserved_range\"\n\tEnumDescriptorProto_ReservedName_field_name  protoreflect.Name = \"reserved_name\"\n\tEnumDescriptorProto_Visibility_field_name    protoreflect.Name = \"visibility\"\n\n\tEnumDescriptorProto_Name_field_fullname          protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.name\"\n\tEnumDescriptorProto_Value_field_fullname         protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.value\"\n\tEnumDescriptorProto_Options_field_fullname       protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.options\"\n\tEnumDescriptorProto_ReservedRange_field_fullname protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.reserved_range\"\n\tEnumDescriptorProto_ReservedName_field_fullname  protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.reserved_name\"\n\tEnumDescriptorProto_Visibility_field_fullname    protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.visibility\"\n)\n\n// Field numbers for google.protobuf.EnumDescriptorProto.\nconst (\n\tEnumDescriptorProto_Name_field_number          protoreflect.FieldNumber = 1\n\tEnumDescriptorProto_Value_field_number         protoreflect.FieldNumber = 2\n\tEnumDescriptorProto_Options_field_number       protoreflect.FieldNumber = 3\n\tEnumDescriptorProto_ReservedRange_field_number protoreflect.FieldNumber = 4\n\tEnumDescriptorProto_ReservedName_field_number  protoreflect.FieldNumber = 5\n\tEnumDescriptorProto_Visibility_field_number    protoreflect.FieldNumber = 6\n)\n\n// Names for google.protobuf.EnumDescriptorProto.EnumReservedRange.\nconst (\n\tEnumDescriptorProto_EnumReservedRange_message_name     protoreflect.Name     = \"EnumReservedRange\"\n\tEnumDescriptorProto_EnumReservedRange_message_fullname protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.EnumReservedRange\"\n)\n\n// Field names for google.protobuf.EnumDescriptorProto.EnumReservedRange.\nconst (\n\tEnumDescriptorProto_EnumReservedRange_Start_field_name protoreflect.Name = \"start\"\n\tEnumDescriptorProto_EnumReservedRange_End_field_name   protoreflect.Name = \"end\"\n\n\tEnumDescriptorProto_EnumReservedRange_Start_field_fullname protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.EnumReservedRange.start\"\n\tEnumDescriptorProto_EnumReservedRange_End_field_fullname   protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.EnumReservedRange.end\"\n)\n\n// Field numbers for google.protobuf.EnumDescriptorProto.EnumReservedRange.\nconst (\n\tEnumDescriptorProto_EnumReservedRange_Start_field_number protoreflect.FieldNumber = 1\n\tEnumDescriptorProto_EnumReservedRange_End_field_number   protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.EnumValueDescriptorProto.\nconst (\n\tEnumValueDescriptorProto_message_name     protoreflect.Name     = \"EnumValueDescriptorProto\"\n\tEnumValueDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.EnumValueDescriptorProto\"\n)\n\n// Field names for google.protobuf.EnumValueDescriptorProto.\nconst (\n\tEnumValueDescriptorProto_Name_field_name    protoreflect.Name = \"name\"\n\tEnumValueDescriptorProto_Number_field_name  protoreflect.Name = \"number\"\n\tEnumValueDescriptorProto_Options_field_name protoreflect.Name = \"options\"\n\n\tEnumValueDescriptorProto_Name_field_fullname    protoreflect.FullName = \"google.protobuf.EnumValueDescriptorProto.name\"\n\tEnumValueDescriptorProto_Number_field_fullname  protoreflect.FullName = \"google.protobuf.EnumValueDescriptorProto.number\"\n\tEnumValueDescriptorProto_Options_field_fullname protoreflect.FullName = \"google.protobuf.EnumValueDescriptorProto.options\"\n)\n\n// Field numbers for google.protobuf.EnumValueDescriptorProto.\nconst (\n\tEnumValueDescriptorProto_Name_field_number    protoreflect.FieldNumber = 1\n\tEnumValueDescriptorProto_Number_field_number  protoreflect.FieldNumber = 2\n\tEnumValueDescriptorProto_Options_field_number protoreflect.FieldNumber = 3\n)\n\n// Names for google.protobuf.ServiceDescriptorProto.\nconst (\n\tServiceDescriptorProto_message_name     protoreflect.Name     = \"ServiceDescriptorProto\"\n\tServiceDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.ServiceDescriptorProto\"\n)\n\n// Field names for google.protobuf.ServiceDescriptorProto.\nconst (\n\tServiceDescriptorProto_Name_field_name    protoreflect.Name = \"name\"\n\tServiceDescriptorProto_Method_field_name  protoreflect.Name = \"method\"\n\tServiceDescriptorProto_Options_field_name protoreflect.Name = \"options\"\n\n\tServiceDescriptorProto_Name_field_fullname    protoreflect.FullName = \"google.protobuf.ServiceDescriptorProto.name\"\n\tServiceDescriptorProto_Method_field_fullname  protoreflect.FullName = \"google.protobuf.ServiceDescriptorProto.method\"\n\tServiceDescriptorProto_Options_field_fullname protoreflect.FullName = \"google.protobuf.ServiceDescriptorProto.options\"\n)\n\n// Field numbers for google.protobuf.ServiceDescriptorProto.\nconst (\n\tServiceDescriptorProto_Name_field_number    protoreflect.FieldNumber = 1\n\tServiceDescriptorProto_Method_field_number  protoreflect.FieldNumber = 2\n\tServiceDescriptorProto_Options_field_number protoreflect.FieldNumber = 3\n)\n\n// Names for google.protobuf.MethodDescriptorProto.\nconst (\n\tMethodDescriptorProto_message_name     protoreflect.Name     = \"MethodDescriptorProto\"\n\tMethodDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.MethodDescriptorProto\"\n)\n\n// Field names for google.protobuf.MethodDescriptorProto.\nconst (\n\tMethodDescriptorProto_Name_field_name            protoreflect.Name = \"name\"\n\tMethodDescriptorProto_InputType_field_name       protoreflect.Name = \"input_type\"\n\tMethodDescriptorProto_OutputType_field_name      protoreflect.Name = \"output_type\"\n\tMethodDescriptorProto_Options_field_name         protoreflect.Name = \"options\"\n\tMethodDescriptorProto_ClientStreaming_field_name protoreflect.Name = \"client_streaming\"\n\tMethodDescriptorProto_ServerStreaming_field_name protoreflect.Name = \"server_streaming\"\n\n\tMethodDescriptorProto_Name_field_fullname            protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.name\"\n\tMethodDescriptorProto_InputType_field_fullname       protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.input_type\"\n\tMethodDescriptorProto_OutputType_field_fullname      protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.output_type\"\n\tMethodDescriptorProto_Options_field_fullname         protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.options\"\n\tMethodDescriptorProto_ClientStreaming_field_fullname protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.client_streaming\"\n\tMethodDescriptorProto_ServerStreaming_field_fullname protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.server_streaming\"\n)\n\n// Field numbers for google.protobuf.MethodDescriptorProto.\nconst (\n\tMethodDescriptorProto_Name_field_number            protoreflect.FieldNumber = 1\n\tMethodDescriptorProto_InputType_field_number       protoreflect.FieldNumber = 2\n\tMethodDescriptorProto_OutputType_field_number      protoreflect.FieldNumber = 3\n\tMethodDescriptorProto_Options_field_number         protoreflect.FieldNumber = 4\n\tMethodDescriptorProto_ClientStreaming_field_number protoreflect.FieldNumber = 5\n\tMethodDescriptorProto_ServerStreaming_field_number protoreflect.FieldNumber = 6\n)\n\n// Names for google.protobuf.FileOptions.\nconst (\n\tFileOptions_message_name     protoreflect.Name     = \"FileOptions\"\n\tFileOptions_message_fullname protoreflect.FullName = \"google.protobuf.FileOptions\"\n)\n\n// Field names for google.protobuf.FileOptions.\nconst (\n\tFileOptions_JavaPackage_field_name               protoreflect.Name = \"java_package\"\n\tFileOptions_JavaOuterClassname_field_name        protoreflect.Name = \"java_outer_classname\"\n\tFileOptions_JavaMultipleFiles_field_name         protoreflect.Name = \"java_multiple_files\"\n\tFileOptions_JavaGenerateEqualsAndHash_field_name protoreflect.Name = \"java_generate_equals_and_hash\"\n\tFileOptions_JavaStringCheckUtf8_field_name       protoreflect.Name = \"java_string_check_utf8\"\n\tFileOptions_OptimizeFor_field_name               protoreflect.Name = \"optimize_for\"\n\tFileOptions_GoPackage_field_name                 protoreflect.Name = \"go_package\"\n\tFileOptions_CcGenericServices_field_name         protoreflect.Name = \"cc_generic_services\"\n\tFileOptions_JavaGenericServices_field_name       protoreflect.Name = \"java_generic_services\"\n\tFileOptions_PyGenericServices_field_name         protoreflect.Name = \"py_generic_services\"\n\tFileOptions_Deprecated_field_name                protoreflect.Name = \"deprecated\"\n\tFileOptions_CcEnableArenas_field_name            protoreflect.Name = \"cc_enable_arenas\"\n\tFileOptions_ObjcClassPrefix_field_name           protoreflect.Name = \"objc_class_prefix\"\n\tFileOptions_CsharpNamespace_field_name           protoreflect.Name = \"csharp_namespace\"\n\tFileOptions_SwiftPrefix_field_name               protoreflect.Name = \"swift_prefix\"\n\tFileOptions_PhpClassPrefix_field_name            protoreflect.Name = \"php_class_prefix\"\n\tFileOptions_PhpNamespace_field_name              protoreflect.Name = \"php_namespace\"\n\tFileOptions_PhpMetadataNamespace_field_name      protoreflect.Name = \"php_metadata_namespace\"\n\tFileOptions_RubyPackage_field_name               protoreflect.Name = \"ruby_package\"\n\tFileOptions_Features_field_name                  protoreflect.Name = \"features\"\n\tFileOptions_UninterpretedOption_field_name       protoreflect.Name = \"uninterpreted_option\"\n\n\tFileOptions_JavaPackage_field_fullname               protoreflect.FullName = \"google.protobuf.FileOptions.java_package\"\n\tFileOptions_JavaOuterClassname_field_fullname        protoreflect.FullName = \"google.protobuf.FileOptions.java_outer_classname\"\n\tFileOptions_JavaMultipleFiles_field_fullname         protoreflect.FullName = \"google.protobuf.FileOptions.java_multiple_files\"\n\tFileOptions_JavaGenerateEqualsAndHash_field_fullname protoreflect.FullName = \"google.protobuf.FileOptions.java_generate_equals_and_hash\"\n\tFileOptions_JavaStringCheckUtf8_field_fullname       protoreflect.FullName = \"google.protobuf.FileOptions.java_string_check_utf8\"\n\tFileOptions_OptimizeFor_field_fullname               protoreflect.FullName = \"google.protobuf.FileOptions.optimize_for\"\n\tFileOptions_GoPackage_field_fullname                 protoreflect.FullName = \"google.protobuf.FileOptions.go_package\"\n\tFileOptions_CcGenericServices_field_fullname         protoreflect.FullName = \"google.protobuf.FileOptions.cc_generic_services\"\n\tFileOptions_JavaGenericServices_field_fullname       protoreflect.FullName = \"google.protobuf.FileOptions.java_generic_services\"\n\tFileOptions_PyGenericServices_field_fullname         protoreflect.FullName = \"google.protobuf.FileOptions.py_generic_services\"\n\tFileOptions_Deprecated_field_fullname                protoreflect.FullName = \"google.protobuf.FileOptions.deprecated\"\n\tFileOptions_CcEnableArenas_field_fullname            protoreflect.FullName = \"google.protobuf.FileOptions.cc_enable_arenas\"\n\tFileOptions_ObjcClassPrefix_field_fullname           protoreflect.FullName = \"google.protobuf.FileOptions.objc_class_prefix\"\n\tFileOptions_CsharpNamespace_field_fullname           protoreflect.FullName = \"google.protobuf.FileOptions.csharp_namespace\"\n\tFileOptions_SwiftPrefix_field_fullname               protoreflect.FullName = \"google.protobuf.FileOptions.swift_prefix\"\n\tFileOptions_PhpClassPrefix_field_fullname            protoreflect.FullName = \"google.protobuf.FileOptions.php_class_prefix\"\n\tFileOptions_PhpNamespace_field_fullname              protoreflect.FullName = \"google.protobuf.FileOptions.php_namespace\"\n\tFileOptions_PhpMetadataNamespace_field_fullname      protoreflect.FullName = \"google.protobuf.FileOptions.php_metadata_namespace\"\n\tFileOptions_RubyPackage_field_fullname               protoreflect.FullName = \"google.protobuf.FileOptions.ruby_package\"\n\tFileOptions_Features_field_fullname                  protoreflect.FullName = \"google.protobuf.FileOptions.features\"\n\tFileOptions_UninterpretedOption_field_fullname       protoreflect.FullName = \"google.protobuf.FileOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.FileOptions.\nconst (\n\tFileOptions_JavaPackage_field_number               protoreflect.FieldNumber = 1\n\tFileOptions_JavaOuterClassname_field_number        protoreflect.FieldNumber = 8\n\tFileOptions_JavaMultipleFiles_field_number         protoreflect.FieldNumber = 10\n\tFileOptions_JavaGenerateEqualsAndHash_field_number protoreflect.FieldNumber = 20\n\tFileOptions_JavaStringCheckUtf8_field_number       protoreflect.FieldNumber = 27\n\tFileOptions_OptimizeFor_field_number               protoreflect.FieldNumber = 9\n\tFileOptions_GoPackage_field_number                 protoreflect.FieldNumber = 11\n\tFileOptions_CcGenericServices_field_number         protoreflect.FieldNumber = 16\n\tFileOptions_JavaGenericServices_field_number       protoreflect.FieldNumber = 17\n\tFileOptions_PyGenericServices_field_number         protoreflect.FieldNumber = 18\n\tFileOptions_Deprecated_field_number                protoreflect.FieldNumber = 23\n\tFileOptions_CcEnableArenas_field_number            protoreflect.FieldNumber = 31\n\tFileOptions_ObjcClassPrefix_field_number           protoreflect.FieldNumber = 36\n\tFileOptions_CsharpNamespace_field_number           protoreflect.FieldNumber = 37\n\tFileOptions_SwiftPrefix_field_number               protoreflect.FieldNumber = 39\n\tFileOptions_PhpClassPrefix_field_number            protoreflect.FieldNumber = 40\n\tFileOptions_PhpNamespace_field_number              protoreflect.FieldNumber = 41\n\tFileOptions_PhpMetadataNamespace_field_number      protoreflect.FieldNumber = 44\n\tFileOptions_RubyPackage_field_number               protoreflect.FieldNumber = 45\n\tFileOptions_Features_field_number                  protoreflect.FieldNumber = 50\n\tFileOptions_UninterpretedOption_field_number       protoreflect.FieldNumber = 999\n)\n\n// Full and short names for google.protobuf.FileOptions.OptimizeMode.\nconst (\n\tFileOptions_OptimizeMode_enum_fullname = \"google.protobuf.FileOptions.OptimizeMode\"\n\tFileOptions_OptimizeMode_enum_name     = \"OptimizeMode\"\n)\n\n// Enum values for google.protobuf.FileOptions.OptimizeMode.\nconst (\n\tFileOptions_SPEED_enum_value        = 1\n\tFileOptions_CODE_SIZE_enum_value    = 2\n\tFileOptions_LITE_RUNTIME_enum_value = 3\n)\n\n// Names for google.protobuf.MessageOptions.\nconst (\n\tMessageOptions_message_name     protoreflect.Name     = \"MessageOptions\"\n\tMessageOptions_message_fullname protoreflect.FullName = \"google.protobuf.MessageOptions\"\n)\n\n// Field names for google.protobuf.MessageOptions.\nconst (\n\tMessageOptions_MessageSetWireFormat_field_name               protoreflect.Name = \"message_set_wire_format\"\n\tMessageOptions_NoStandardDescriptorAccessor_field_name       protoreflect.Name = \"no_standard_descriptor_accessor\"\n\tMessageOptions_Deprecated_field_name                         protoreflect.Name = \"deprecated\"\n\tMessageOptions_MapEntry_field_name                           protoreflect.Name = \"map_entry\"\n\tMessageOptions_DeprecatedLegacyJsonFieldConflicts_field_name protoreflect.Name = \"deprecated_legacy_json_field_conflicts\"\n\tMessageOptions_Features_field_name                           protoreflect.Name = \"features\"\n\tMessageOptions_UninterpretedOption_field_name                protoreflect.Name = \"uninterpreted_option\"\n\n\tMessageOptions_MessageSetWireFormat_field_fullname               protoreflect.FullName = \"google.protobuf.MessageOptions.message_set_wire_format\"\n\tMessageOptions_NoStandardDescriptorAccessor_field_fullname       protoreflect.FullName = \"google.protobuf.MessageOptions.no_standard_descriptor_accessor\"\n\tMessageOptions_Deprecated_field_fullname                         protoreflect.FullName = \"google.protobuf.MessageOptions.deprecated\"\n\tMessageOptions_MapEntry_field_fullname                           protoreflect.FullName = \"google.protobuf.MessageOptions.map_entry\"\n\tMessageOptions_DeprecatedLegacyJsonFieldConflicts_field_fullname protoreflect.FullName = \"google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts\"\n\tMessageOptions_Features_field_fullname                           protoreflect.FullName = \"google.protobuf.MessageOptions.features\"\n\tMessageOptions_UninterpretedOption_field_fullname                protoreflect.FullName = \"google.protobuf.MessageOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.MessageOptions.\nconst (\n\tMessageOptions_MessageSetWireFormat_field_number               protoreflect.FieldNumber = 1\n\tMessageOptions_NoStandardDescriptorAccessor_field_number       protoreflect.FieldNumber = 2\n\tMessageOptions_Deprecated_field_number                         protoreflect.FieldNumber = 3\n\tMessageOptions_MapEntry_field_number                           protoreflect.FieldNumber = 7\n\tMessageOptions_DeprecatedLegacyJsonFieldConflicts_field_number protoreflect.FieldNumber = 11\n\tMessageOptions_Features_field_number                           protoreflect.FieldNumber = 12\n\tMessageOptions_UninterpretedOption_field_number                protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.FieldOptions.\nconst (\n\tFieldOptions_message_name     protoreflect.Name     = \"FieldOptions\"\n\tFieldOptions_message_fullname protoreflect.FullName = \"google.protobuf.FieldOptions\"\n)\n\n// Field names for google.protobuf.FieldOptions.\nconst (\n\tFieldOptions_Ctype_field_name               protoreflect.Name = \"ctype\"\n\tFieldOptions_Packed_field_name              protoreflect.Name = \"packed\"\n\tFieldOptions_Jstype_field_name              protoreflect.Name = \"jstype\"\n\tFieldOptions_Lazy_field_name                protoreflect.Name = \"lazy\"\n\tFieldOptions_UnverifiedLazy_field_name      protoreflect.Name = \"unverified_lazy\"\n\tFieldOptions_Deprecated_field_name          protoreflect.Name = \"deprecated\"\n\tFieldOptions_Weak_field_name                protoreflect.Name = \"weak\"\n\tFieldOptions_DebugRedact_field_name         protoreflect.Name = \"debug_redact\"\n\tFieldOptions_Retention_field_name           protoreflect.Name = \"retention\"\n\tFieldOptions_Targets_field_name             protoreflect.Name = \"targets\"\n\tFieldOptions_EditionDefaults_field_name     protoreflect.Name = \"edition_defaults\"\n\tFieldOptions_Features_field_name            protoreflect.Name = \"features\"\n\tFieldOptions_FeatureSupport_field_name      protoreflect.Name = \"feature_support\"\n\tFieldOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tFieldOptions_Ctype_field_fullname               protoreflect.FullName = \"google.protobuf.FieldOptions.ctype\"\n\tFieldOptions_Packed_field_fullname              protoreflect.FullName = \"google.protobuf.FieldOptions.packed\"\n\tFieldOptions_Jstype_field_fullname              protoreflect.FullName = \"google.protobuf.FieldOptions.jstype\"\n\tFieldOptions_Lazy_field_fullname                protoreflect.FullName = \"google.protobuf.FieldOptions.lazy\"\n\tFieldOptions_UnverifiedLazy_field_fullname      protoreflect.FullName = \"google.protobuf.FieldOptions.unverified_lazy\"\n\tFieldOptions_Deprecated_field_fullname          protoreflect.FullName = \"google.protobuf.FieldOptions.deprecated\"\n\tFieldOptions_Weak_field_fullname                protoreflect.FullName = \"google.protobuf.FieldOptions.weak\"\n\tFieldOptions_DebugRedact_field_fullname         protoreflect.FullName = \"google.protobuf.FieldOptions.debug_redact\"\n\tFieldOptions_Retention_field_fullname           protoreflect.FullName = \"google.protobuf.FieldOptions.retention\"\n\tFieldOptions_Targets_field_fullname             protoreflect.FullName = \"google.protobuf.FieldOptions.targets\"\n\tFieldOptions_EditionDefaults_field_fullname     protoreflect.FullName = \"google.protobuf.FieldOptions.edition_defaults\"\n\tFieldOptions_Features_field_fullname            protoreflect.FullName = \"google.protobuf.FieldOptions.features\"\n\tFieldOptions_FeatureSupport_field_fullname      protoreflect.FullName = \"google.protobuf.FieldOptions.feature_support\"\n\tFieldOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.FieldOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.FieldOptions.\nconst (\n\tFieldOptions_Ctype_field_number               protoreflect.FieldNumber = 1\n\tFieldOptions_Packed_field_number              protoreflect.FieldNumber = 2\n\tFieldOptions_Jstype_field_number              protoreflect.FieldNumber = 6\n\tFieldOptions_Lazy_field_number                protoreflect.FieldNumber = 5\n\tFieldOptions_UnverifiedLazy_field_number      protoreflect.FieldNumber = 15\n\tFieldOptions_Deprecated_field_number          protoreflect.FieldNumber = 3\n\tFieldOptions_Weak_field_number                protoreflect.FieldNumber = 10\n\tFieldOptions_DebugRedact_field_number         protoreflect.FieldNumber = 16\n\tFieldOptions_Retention_field_number           protoreflect.FieldNumber = 17\n\tFieldOptions_Targets_field_number             protoreflect.FieldNumber = 19\n\tFieldOptions_EditionDefaults_field_number     protoreflect.FieldNumber = 20\n\tFieldOptions_Features_field_number            protoreflect.FieldNumber = 21\n\tFieldOptions_FeatureSupport_field_number      protoreflect.FieldNumber = 22\n\tFieldOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Full and short names for google.protobuf.FieldOptions.CType.\nconst (\n\tFieldOptions_CType_enum_fullname = \"google.protobuf.FieldOptions.CType\"\n\tFieldOptions_CType_enum_name     = \"CType\"\n)\n\n// Enum values for google.protobuf.FieldOptions.CType.\nconst (\n\tFieldOptions_STRING_enum_value       = 0\n\tFieldOptions_CORD_enum_value         = 1\n\tFieldOptions_STRING_PIECE_enum_value = 2\n)\n\n// Full and short names for google.protobuf.FieldOptions.JSType.\nconst (\n\tFieldOptions_JSType_enum_fullname = \"google.protobuf.FieldOptions.JSType\"\n\tFieldOptions_JSType_enum_name     = \"JSType\"\n)\n\n// Enum values for google.protobuf.FieldOptions.JSType.\nconst (\n\tFieldOptions_JS_NORMAL_enum_value = 0\n\tFieldOptions_JS_STRING_enum_value = 1\n\tFieldOptions_JS_NUMBER_enum_value = 2\n)\n\n// Full and short names for google.protobuf.FieldOptions.OptionRetention.\nconst (\n\tFieldOptions_OptionRetention_enum_fullname = \"google.protobuf.FieldOptions.OptionRetention\"\n\tFieldOptions_OptionRetention_enum_name     = \"OptionRetention\"\n)\n\n// Enum values for google.protobuf.FieldOptions.OptionRetention.\nconst (\n\tFieldOptions_RETENTION_UNKNOWN_enum_value = 0\n\tFieldOptions_RETENTION_RUNTIME_enum_value = 1\n\tFieldOptions_RETENTION_SOURCE_enum_value  = 2\n)\n\n// Full and short names for google.protobuf.FieldOptions.OptionTargetType.\nconst (\n\tFieldOptions_OptionTargetType_enum_fullname = \"google.protobuf.FieldOptions.OptionTargetType\"\n\tFieldOptions_OptionTargetType_enum_name     = \"OptionTargetType\"\n)\n\n// Enum values for google.protobuf.FieldOptions.OptionTargetType.\nconst (\n\tFieldOptions_TARGET_TYPE_UNKNOWN_enum_value         = 0\n\tFieldOptions_TARGET_TYPE_FILE_enum_value            = 1\n\tFieldOptions_TARGET_TYPE_EXTENSION_RANGE_enum_value = 2\n\tFieldOptions_TARGET_TYPE_MESSAGE_enum_value         = 3\n\tFieldOptions_TARGET_TYPE_FIELD_enum_value           = 4\n\tFieldOptions_TARGET_TYPE_ONEOF_enum_value           = 5\n\tFieldOptions_TARGET_TYPE_ENUM_enum_value            = 6\n\tFieldOptions_TARGET_TYPE_ENUM_ENTRY_enum_value      = 7\n\tFieldOptions_TARGET_TYPE_SERVICE_enum_value         = 8\n\tFieldOptions_TARGET_TYPE_METHOD_enum_value          = 9\n)\n\n// Names for google.protobuf.FieldOptions.EditionDefault.\nconst (\n\tFieldOptions_EditionDefault_message_name     protoreflect.Name     = \"EditionDefault\"\n\tFieldOptions_EditionDefault_message_fullname protoreflect.FullName = \"google.protobuf.FieldOptions.EditionDefault\"\n)\n\n// Field names for google.protobuf.FieldOptions.EditionDefault.\nconst (\n\tFieldOptions_EditionDefault_Edition_field_name protoreflect.Name = \"edition\"\n\tFieldOptions_EditionDefault_Value_field_name   protoreflect.Name = \"value\"\n\n\tFieldOptions_EditionDefault_Edition_field_fullname protoreflect.FullName = \"google.protobuf.FieldOptions.EditionDefault.edition\"\n\tFieldOptions_EditionDefault_Value_field_fullname   protoreflect.FullName = \"google.protobuf.FieldOptions.EditionDefault.value\"\n)\n\n// Field numbers for google.protobuf.FieldOptions.EditionDefault.\nconst (\n\tFieldOptions_EditionDefault_Edition_field_number protoreflect.FieldNumber = 3\n\tFieldOptions_EditionDefault_Value_field_number   protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.FieldOptions.FeatureSupport.\nconst (\n\tFieldOptions_FeatureSupport_message_name     protoreflect.Name     = \"FeatureSupport\"\n\tFieldOptions_FeatureSupport_message_fullname protoreflect.FullName = \"google.protobuf.FieldOptions.FeatureSupport\"\n)\n\n// Field names for google.protobuf.FieldOptions.FeatureSupport.\nconst (\n\tFieldOptions_FeatureSupport_EditionIntroduced_field_name  protoreflect.Name = \"edition_introduced\"\n\tFieldOptions_FeatureSupport_EditionDeprecated_field_name  protoreflect.Name = \"edition_deprecated\"\n\tFieldOptions_FeatureSupport_DeprecationWarning_field_name protoreflect.Name = \"deprecation_warning\"\n\tFieldOptions_FeatureSupport_EditionRemoved_field_name     protoreflect.Name = \"edition_removed\"\n\n\tFieldOptions_FeatureSupport_EditionIntroduced_field_fullname  protoreflect.FullName = \"google.protobuf.FieldOptions.FeatureSupport.edition_introduced\"\n\tFieldOptions_FeatureSupport_EditionDeprecated_field_fullname  protoreflect.FullName = \"google.protobuf.FieldOptions.FeatureSupport.edition_deprecated\"\n\tFieldOptions_FeatureSupport_DeprecationWarning_field_fullname protoreflect.FullName = \"google.protobuf.FieldOptions.FeatureSupport.deprecation_warning\"\n\tFieldOptions_FeatureSupport_EditionRemoved_field_fullname     protoreflect.FullName = \"google.protobuf.FieldOptions.FeatureSupport.edition_removed\"\n)\n\n// Field numbers for google.protobuf.FieldOptions.FeatureSupport.\nconst (\n\tFieldOptions_FeatureSupport_EditionIntroduced_field_number  protoreflect.FieldNumber = 1\n\tFieldOptions_FeatureSupport_EditionDeprecated_field_number  protoreflect.FieldNumber = 2\n\tFieldOptions_FeatureSupport_DeprecationWarning_field_number protoreflect.FieldNumber = 3\n\tFieldOptions_FeatureSupport_EditionRemoved_field_number     protoreflect.FieldNumber = 4\n)\n\n// Names for google.protobuf.OneofOptions.\nconst (\n\tOneofOptions_message_name     protoreflect.Name     = \"OneofOptions\"\n\tOneofOptions_message_fullname protoreflect.FullName = \"google.protobuf.OneofOptions\"\n)\n\n// Field names for google.protobuf.OneofOptions.\nconst (\n\tOneofOptions_Features_field_name            protoreflect.Name = \"features\"\n\tOneofOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tOneofOptions_Features_field_fullname            protoreflect.FullName = \"google.protobuf.OneofOptions.features\"\n\tOneofOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.OneofOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.OneofOptions.\nconst (\n\tOneofOptions_Features_field_number            protoreflect.FieldNumber = 1\n\tOneofOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.EnumOptions.\nconst (\n\tEnumOptions_message_name     protoreflect.Name     = \"EnumOptions\"\n\tEnumOptions_message_fullname protoreflect.FullName = \"google.protobuf.EnumOptions\"\n)\n\n// Field names for google.protobuf.EnumOptions.\nconst (\n\tEnumOptions_AllowAlias_field_name                         protoreflect.Name = \"allow_alias\"\n\tEnumOptions_Deprecated_field_name                         protoreflect.Name = \"deprecated\"\n\tEnumOptions_DeprecatedLegacyJsonFieldConflicts_field_name protoreflect.Name = \"deprecated_legacy_json_field_conflicts\"\n\tEnumOptions_Features_field_name                           protoreflect.Name = \"features\"\n\tEnumOptions_UninterpretedOption_field_name                protoreflect.Name = \"uninterpreted_option\"\n\n\tEnumOptions_AllowAlias_field_fullname                         protoreflect.FullName = \"google.protobuf.EnumOptions.allow_alias\"\n\tEnumOptions_Deprecated_field_fullname                         protoreflect.FullName = \"google.protobuf.EnumOptions.deprecated\"\n\tEnumOptions_DeprecatedLegacyJsonFieldConflicts_field_fullname protoreflect.FullName = \"google.protobuf.EnumOptions.deprecated_legacy_json_field_conflicts\"\n\tEnumOptions_Features_field_fullname                           protoreflect.FullName = \"google.protobuf.EnumOptions.features\"\n\tEnumOptions_UninterpretedOption_field_fullname                protoreflect.FullName = \"google.protobuf.EnumOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.EnumOptions.\nconst (\n\tEnumOptions_AllowAlias_field_number                         protoreflect.FieldNumber = 2\n\tEnumOptions_Deprecated_field_number                         protoreflect.FieldNumber = 3\n\tEnumOptions_DeprecatedLegacyJsonFieldConflicts_field_number protoreflect.FieldNumber = 6\n\tEnumOptions_Features_field_number                           protoreflect.FieldNumber = 7\n\tEnumOptions_UninterpretedOption_field_number                protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.EnumValueOptions.\nconst (\n\tEnumValueOptions_message_name     protoreflect.Name     = \"EnumValueOptions\"\n\tEnumValueOptions_message_fullname protoreflect.FullName = \"google.protobuf.EnumValueOptions\"\n)\n\n// Field names for google.protobuf.EnumValueOptions.\nconst (\n\tEnumValueOptions_Deprecated_field_name          protoreflect.Name = \"deprecated\"\n\tEnumValueOptions_Features_field_name            protoreflect.Name = \"features\"\n\tEnumValueOptions_DebugRedact_field_name         protoreflect.Name = \"debug_redact\"\n\tEnumValueOptions_FeatureSupport_field_name      protoreflect.Name = \"feature_support\"\n\tEnumValueOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tEnumValueOptions_Deprecated_field_fullname          protoreflect.FullName = \"google.protobuf.EnumValueOptions.deprecated\"\n\tEnumValueOptions_Features_field_fullname            protoreflect.FullName = \"google.protobuf.EnumValueOptions.features\"\n\tEnumValueOptions_DebugRedact_field_fullname         protoreflect.FullName = \"google.protobuf.EnumValueOptions.debug_redact\"\n\tEnumValueOptions_FeatureSupport_field_fullname      protoreflect.FullName = \"google.protobuf.EnumValueOptions.feature_support\"\n\tEnumValueOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.EnumValueOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.EnumValueOptions.\nconst (\n\tEnumValueOptions_Deprecated_field_number          protoreflect.FieldNumber = 1\n\tEnumValueOptions_Features_field_number            protoreflect.FieldNumber = 2\n\tEnumValueOptions_DebugRedact_field_number         protoreflect.FieldNumber = 3\n\tEnumValueOptions_FeatureSupport_field_number      protoreflect.FieldNumber = 4\n\tEnumValueOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.ServiceOptions.\nconst (\n\tServiceOptions_message_name     protoreflect.Name     = \"ServiceOptions\"\n\tServiceOptions_message_fullname protoreflect.FullName = \"google.protobuf.ServiceOptions\"\n)\n\n// Field names for google.protobuf.ServiceOptions.\nconst (\n\tServiceOptions_Features_field_name            protoreflect.Name = \"features\"\n\tServiceOptions_Deprecated_field_name          protoreflect.Name = \"deprecated\"\n\tServiceOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tServiceOptions_Features_field_fullname            protoreflect.FullName = \"google.protobuf.ServiceOptions.features\"\n\tServiceOptions_Deprecated_field_fullname          protoreflect.FullName = \"google.protobuf.ServiceOptions.deprecated\"\n\tServiceOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.ServiceOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.ServiceOptions.\nconst (\n\tServiceOptions_Features_field_number            protoreflect.FieldNumber = 34\n\tServiceOptions_Deprecated_field_number          protoreflect.FieldNumber = 33\n\tServiceOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.MethodOptions.\nconst (\n\tMethodOptions_message_name     protoreflect.Name     = \"MethodOptions\"\n\tMethodOptions_message_fullname protoreflect.FullName = \"google.protobuf.MethodOptions\"\n)\n\n// Field names for google.protobuf.MethodOptions.\nconst (\n\tMethodOptions_Deprecated_field_name          protoreflect.Name = \"deprecated\"\n\tMethodOptions_IdempotencyLevel_field_name    protoreflect.Name = \"idempotency_level\"\n\tMethodOptions_Features_field_name            protoreflect.Name = \"features\"\n\tMethodOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tMethodOptions_Deprecated_field_fullname          protoreflect.FullName = \"google.protobuf.MethodOptions.deprecated\"\n\tMethodOptions_IdempotencyLevel_field_fullname    protoreflect.FullName = \"google.protobuf.MethodOptions.idempotency_level\"\n\tMethodOptions_Features_field_fullname            protoreflect.FullName = \"google.protobuf.MethodOptions.features\"\n\tMethodOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.MethodOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.MethodOptions.\nconst (\n\tMethodOptions_Deprecated_field_number          protoreflect.FieldNumber = 33\n\tMethodOptions_IdempotencyLevel_field_number    protoreflect.FieldNumber = 34\n\tMethodOptions_Features_field_number            protoreflect.FieldNumber = 35\n\tMethodOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Full and short names for google.protobuf.MethodOptions.IdempotencyLevel.\nconst (\n\tMethodOptions_IdempotencyLevel_enum_fullname = \"google.protobuf.MethodOptions.IdempotencyLevel\"\n\tMethodOptions_IdempotencyLevel_enum_name     = \"IdempotencyLevel\"\n)\n\n// Enum values for google.protobuf.MethodOptions.IdempotencyLevel.\nconst (\n\tMethodOptions_IDEMPOTENCY_UNKNOWN_enum_value = 0\n\tMethodOptions_NO_SIDE_EFFECTS_enum_value     = 1\n\tMethodOptions_IDEMPOTENT_enum_value          = 2\n)\n\n// Names for google.protobuf.UninterpretedOption.\nconst (\n\tUninterpretedOption_message_name     protoreflect.Name     = \"UninterpretedOption\"\n\tUninterpretedOption_message_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption\"\n)\n\n// Field names for google.protobuf.UninterpretedOption.\nconst (\n\tUninterpretedOption_Name_field_name             protoreflect.Name = \"name\"\n\tUninterpretedOption_IdentifierValue_field_name  protoreflect.Name = \"identifier_value\"\n\tUninterpretedOption_PositiveIntValue_field_name protoreflect.Name = \"positive_int_value\"\n\tUninterpretedOption_NegativeIntValue_field_name protoreflect.Name = \"negative_int_value\"\n\tUninterpretedOption_DoubleValue_field_name      protoreflect.Name = \"double_value\"\n\tUninterpretedOption_StringValue_field_name      protoreflect.Name = \"string_value\"\n\tUninterpretedOption_AggregateValue_field_name   protoreflect.Name = \"aggregate_value\"\n\n\tUninterpretedOption_Name_field_fullname             protoreflect.FullName = \"google.protobuf.UninterpretedOption.name\"\n\tUninterpretedOption_IdentifierValue_field_fullname  protoreflect.FullName = \"google.protobuf.UninterpretedOption.identifier_value\"\n\tUninterpretedOption_PositiveIntValue_field_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption.positive_int_value\"\n\tUninterpretedOption_NegativeIntValue_field_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption.negative_int_value\"\n\tUninterpretedOption_DoubleValue_field_fullname      protoreflect.FullName = \"google.protobuf.UninterpretedOption.double_value\"\n\tUninterpretedOption_StringValue_field_fullname      protoreflect.FullName = \"google.protobuf.UninterpretedOption.string_value\"\n\tUninterpretedOption_AggregateValue_field_fullname   protoreflect.FullName = \"google.protobuf.UninterpretedOption.aggregate_value\"\n)\n\n// Field numbers for google.protobuf.UninterpretedOption.\nconst (\n\tUninterpretedOption_Name_field_number             protoreflect.FieldNumber = 2\n\tUninterpretedOption_IdentifierValue_field_number  protoreflect.FieldNumber = 3\n\tUninterpretedOption_PositiveIntValue_field_number protoreflect.FieldNumber = 4\n\tUninterpretedOption_NegativeIntValue_field_number protoreflect.FieldNumber = 5\n\tUninterpretedOption_DoubleValue_field_number      protoreflect.FieldNumber = 6\n\tUninterpretedOption_StringValue_field_number      protoreflect.FieldNumber = 7\n\tUninterpretedOption_AggregateValue_field_number   protoreflect.FieldNumber = 8\n)\n\n// Names for google.protobuf.UninterpretedOption.NamePart.\nconst (\n\tUninterpretedOption_NamePart_message_name     protoreflect.Name     = \"NamePart\"\n\tUninterpretedOption_NamePart_message_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption.NamePart\"\n)\n\n// Field names for google.protobuf.UninterpretedOption.NamePart.\nconst (\n\tUninterpretedOption_NamePart_NamePart_field_name    protoreflect.Name = \"name_part\"\n\tUninterpretedOption_NamePart_IsExtension_field_name protoreflect.Name = \"is_extension\"\n\n\tUninterpretedOption_NamePart_NamePart_field_fullname    protoreflect.FullName = \"google.protobuf.UninterpretedOption.NamePart.name_part\"\n\tUninterpretedOption_NamePart_IsExtension_field_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption.NamePart.is_extension\"\n)\n\n// Field numbers for google.protobuf.UninterpretedOption.NamePart.\nconst (\n\tUninterpretedOption_NamePart_NamePart_field_number    protoreflect.FieldNumber = 1\n\tUninterpretedOption_NamePart_IsExtension_field_number protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.FeatureSet.\nconst (\n\tFeatureSet_message_name     protoreflect.Name     = \"FeatureSet\"\n\tFeatureSet_message_fullname protoreflect.FullName = \"google.protobuf.FeatureSet\"\n)\n\n// Field names for google.protobuf.FeatureSet.\nconst (\n\tFeatureSet_FieldPresence_field_name           protoreflect.Name = \"field_presence\"\n\tFeatureSet_EnumType_field_name                protoreflect.Name = \"enum_type\"\n\tFeatureSet_RepeatedFieldEncoding_field_name   protoreflect.Name = \"repeated_field_encoding\"\n\tFeatureSet_Utf8Validation_field_name          protoreflect.Name = \"utf8_validation\"\n\tFeatureSet_MessageEncoding_field_name         protoreflect.Name = \"message_encoding\"\n\tFeatureSet_JsonFormat_field_name              protoreflect.Name = \"json_format\"\n\tFeatureSet_EnforceNamingStyle_field_name      protoreflect.Name = \"enforce_naming_style\"\n\tFeatureSet_DefaultSymbolVisibility_field_name protoreflect.Name = \"default_symbol_visibility\"\n\n\tFeatureSet_FieldPresence_field_fullname           protoreflect.FullName = \"google.protobuf.FeatureSet.field_presence\"\n\tFeatureSet_EnumType_field_fullname                protoreflect.FullName = \"google.protobuf.FeatureSet.enum_type\"\n\tFeatureSet_RepeatedFieldEncoding_field_fullname   protoreflect.FullName = \"google.protobuf.FeatureSet.repeated_field_encoding\"\n\tFeatureSet_Utf8Validation_field_fullname          protoreflect.FullName = \"google.protobuf.FeatureSet.utf8_validation\"\n\tFeatureSet_MessageEncoding_field_fullname         protoreflect.FullName = \"google.protobuf.FeatureSet.message_encoding\"\n\tFeatureSet_JsonFormat_field_fullname              protoreflect.FullName = \"google.protobuf.FeatureSet.json_format\"\n\tFeatureSet_EnforceNamingStyle_field_fullname      protoreflect.FullName = \"google.protobuf.FeatureSet.enforce_naming_style\"\n\tFeatureSet_DefaultSymbolVisibility_field_fullname protoreflect.FullName = \"google.protobuf.FeatureSet.default_symbol_visibility\"\n)\n\n// Field numbers for google.protobuf.FeatureSet.\nconst (\n\tFeatureSet_FieldPresence_field_number           protoreflect.FieldNumber = 1\n\tFeatureSet_EnumType_field_number                protoreflect.FieldNumber = 2\n\tFeatureSet_RepeatedFieldEncoding_field_number   protoreflect.FieldNumber = 3\n\tFeatureSet_Utf8Validation_field_number          protoreflect.FieldNumber = 4\n\tFeatureSet_MessageEncoding_field_number         protoreflect.FieldNumber = 5\n\tFeatureSet_JsonFormat_field_number              protoreflect.FieldNumber = 6\n\tFeatureSet_EnforceNamingStyle_field_number      protoreflect.FieldNumber = 7\n\tFeatureSet_DefaultSymbolVisibility_field_number protoreflect.FieldNumber = 8\n)\n\n// Full and short names for google.protobuf.FeatureSet.FieldPresence.\nconst (\n\tFeatureSet_FieldPresence_enum_fullname = \"google.protobuf.FeatureSet.FieldPresence\"\n\tFeatureSet_FieldPresence_enum_name     = \"FieldPresence\"\n)\n\n// Enum values for google.protobuf.FeatureSet.FieldPresence.\nconst (\n\tFeatureSet_FIELD_PRESENCE_UNKNOWN_enum_value = 0\n\tFeatureSet_EXPLICIT_enum_value               = 1\n\tFeatureSet_IMPLICIT_enum_value               = 2\n\tFeatureSet_LEGACY_REQUIRED_enum_value        = 3\n)\n\n// Full and short names for google.protobuf.FeatureSet.EnumType.\nconst (\n\tFeatureSet_EnumType_enum_fullname = \"google.protobuf.FeatureSet.EnumType\"\n\tFeatureSet_EnumType_enum_name     = \"EnumType\"\n)\n\n// Enum values for google.protobuf.FeatureSet.EnumType.\nconst (\n\tFeatureSet_ENUM_TYPE_UNKNOWN_enum_value = 0\n\tFeatureSet_OPEN_enum_value              = 1\n\tFeatureSet_CLOSED_enum_value            = 2\n)\n\n// Full and short names for google.protobuf.FeatureSet.RepeatedFieldEncoding.\nconst (\n\tFeatureSet_RepeatedFieldEncoding_enum_fullname = \"google.protobuf.FeatureSet.RepeatedFieldEncoding\"\n\tFeatureSet_RepeatedFieldEncoding_enum_name     = \"RepeatedFieldEncoding\"\n)\n\n// Enum values for google.protobuf.FeatureSet.RepeatedFieldEncoding.\nconst (\n\tFeatureSet_REPEATED_FIELD_ENCODING_UNKNOWN_enum_value = 0\n\tFeatureSet_PACKED_enum_value                          = 1\n\tFeatureSet_EXPANDED_enum_value                        = 2\n)\n\n// Full and short names for google.protobuf.FeatureSet.Utf8Validation.\nconst (\n\tFeatureSet_Utf8Validation_enum_fullname = \"google.protobuf.FeatureSet.Utf8Validation\"\n\tFeatureSet_Utf8Validation_enum_name     = \"Utf8Validation\"\n)\n\n// Enum values for google.protobuf.FeatureSet.Utf8Validation.\nconst (\n\tFeatureSet_UTF8_VALIDATION_UNKNOWN_enum_value = 0\n\tFeatureSet_VERIFY_enum_value                  = 2\n\tFeatureSet_NONE_enum_value                    = 3\n)\n\n// Full and short names for google.protobuf.FeatureSet.MessageEncoding.\nconst (\n\tFeatureSet_MessageEncoding_enum_fullname = \"google.protobuf.FeatureSet.MessageEncoding\"\n\tFeatureSet_MessageEncoding_enum_name     = \"MessageEncoding\"\n)\n\n// Enum values for google.protobuf.FeatureSet.MessageEncoding.\nconst (\n\tFeatureSet_MESSAGE_ENCODING_UNKNOWN_enum_value = 0\n\tFeatureSet_LENGTH_PREFIXED_enum_value          = 1\n\tFeatureSet_DELIMITED_enum_value                = 2\n)\n\n// Full and short names for google.protobuf.FeatureSet.JsonFormat.\nconst (\n\tFeatureSet_JsonFormat_enum_fullname = \"google.protobuf.FeatureSet.JsonFormat\"\n\tFeatureSet_JsonFormat_enum_name     = \"JsonFormat\"\n)\n\n// Enum values for google.protobuf.FeatureSet.JsonFormat.\nconst (\n\tFeatureSet_JSON_FORMAT_UNKNOWN_enum_value = 0\n\tFeatureSet_ALLOW_enum_value               = 1\n\tFeatureSet_LEGACY_BEST_EFFORT_enum_value  = 2\n)\n\n// Full and short names for google.protobuf.FeatureSet.EnforceNamingStyle.\nconst (\n\tFeatureSet_EnforceNamingStyle_enum_fullname = \"google.protobuf.FeatureSet.EnforceNamingStyle\"\n\tFeatureSet_EnforceNamingStyle_enum_name     = \"EnforceNamingStyle\"\n)\n\n// Enum values for google.protobuf.FeatureSet.EnforceNamingStyle.\nconst (\n\tFeatureSet_ENFORCE_NAMING_STYLE_UNKNOWN_enum_value = 0\n\tFeatureSet_STYLE2024_enum_value                    = 1\n\tFeatureSet_STYLE_LEGACY_enum_value                 = 2\n)\n\n// Names for google.protobuf.FeatureSet.VisibilityFeature.\nconst (\n\tFeatureSet_VisibilityFeature_message_name     protoreflect.Name     = \"VisibilityFeature\"\n\tFeatureSet_VisibilityFeature_message_fullname protoreflect.FullName = \"google.protobuf.FeatureSet.VisibilityFeature\"\n)\n\n// Full and short names for google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility.\nconst (\n\tFeatureSet_VisibilityFeature_DefaultSymbolVisibility_enum_fullname = \"google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility\"\n\tFeatureSet_VisibilityFeature_DefaultSymbolVisibility_enum_name     = \"DefaultSymbolVisibility\"\n)\n\n// Enum values for google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility.\nconst (\n\tFeatureSet_VisibilityFeature_DEFAULT_SYMBOL_VISIBILITY_UNKNOWN_enum_value = 0\n\tFeatureSet_VisibilityFeature_EXPORT_ALL_enum_value                        = 1\n\tFeatureSet_VisibilityFeature_EXPORT_TOP_LEVEL_enum_value                  = 2\n\tFeatureSet_VisibilityFeature_LOCAL_ALL_enum_value                         = 3\n\tFeatureSet_VisibilityFeature_STRICT_enum_value                            = 4\n)\n\n// Names for google.protobuf.FeatureSetDefaults.\nconst (\n\tFeatureSetDefaults_message_name     protoreflect.Name     = \"FeatureSetDefaults\"\n\tFeatureSetDefaults_message_fullname protoreflect.FullName = \"google.protobuf.FeatureSetDefaults\"\n)\n\n// Field names for google.protobuf.FeatureSetDefaults.\nconst (\n\tFeatureSetDefaults_Defaults_field_name       protoreflect.Name = \"defaults\"\n\tFeatureSetDefaults_MinimumEdition_field_name protoreflect.Name = \"minimum_edition\"\n\tFeatureSetDefaults_MaximumEdition_field_name protoreflect.Name = \"maximum_edition\"\n\n\tFeatureSetDefaults_Defaults_field_fullname       protoreflect.FullName = \"google.protobuf.FeatureSetDefaults.defaults\"\n\tFeatureSetDefaults_MinimumEdition_field_fullname protoreflect.FullName = \"google.protobuf.FeatureSetDefaults.minimum_edition\"\n\tFeatureSetDefaults_MaximumEdition_field_fullname protoreflect.FullName = \"google.protobuf.FeatureSetDefaults.maximum_edition\"\n)\n\n// Field numbers for google.protobuf.FeatureSetDefaults.\nconst (\n\tFeatureSetDefaults_Defaults_field_number       protoreflect.FieldNumber = 1\n\tFeatureSetDefaults_MinimumEdition_field_number protoreflect.FieldNumber = 4\n\tFeatureSetDefaults_MaximumEdition_field_number protoreflect.FieldNumber = 5\n)\n\n// Names for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.\nconst (\n\tFeatureSetDefaults_FeatureSetEditionDefault_message_name     protoreflect.Name     = \"FeatureSetEditionDefault\"\n\tFeatureSetDefaults_FeatureSetEditionDefault_message_fullname protoreflect.FullName = \"google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault\"\n)\n\n// Field names for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.\nconst (\n\tFeatureSetDefaults_FeatureSetEditionDefault_Edition_field_name             protoreflect.Name = \"edition\"\n\tFeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_name protoreflect.Name = \"overridable_features\"\n\tFeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_name       protoreflect.Name = \"fixed_features\"\n\n\tFeatureSetDefaults_FeatureSetEditionDefault_Edition_field_fullname             protoreflect.FullName = \"google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition\"\n\tFeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_fullname protoreflect.FullName = \"google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features\"\n\tFeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_fullname       protoreflect.FullName = \"google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features\"\n)\n\n// Field numbers for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.\nconst (\n\tFeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number             protoreflect.FieldNumber = 3\n\tFeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_number protoreflect.FieldNumber = 4\n\tFeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_number       protoreflect.FieldNumber = 5\n)\n\n// Names for google.protobuf.SourceCodeInfo.\nconst (\n\tSourceCodeInfo_message_name     protoreflect.Name     = \"SourceCodeInfo\"\n\tSourceCodeInfo_message_fullname protoreflect.FullName = \"google.protobuf.SourceCodeInfo\"\n)\n\n// Field names for google.protobuf.SourceCodeInfo.\nconst (\n\tSourceCodeInfo_Location_field_name protoreflect.Name = \"location\"\n\n\tSourceCodeInfo_Location_field_fullname protoreflect.FullName = \"google.protobuf.SourceCodeInfo.location\"\n)\n\n// Field numbers for google.protobuf.SourceCodeInfo.\nconst (\n\tSourceCodeInfo_Location_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.SourceCodeInfo.Location.\nconst (\n\tSourceCodeInfo_Location_message_name     protoreflect.Name     = \"Location\"\n\tSourceCodeInfo_Location_message_fullname protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location\"\n)\n\n// Field names for google.protobuf.SourceCodeInfo.Location.\nconst (\n\tSourceCodeInfo_Location_Path_field_name                    protoreflect.Name = \"path\"\n\tSourceCodeInfo_Location_Span_field_name                    protoreflect.Name = \"span\"\n\tSourceCodeInfo_Location_LeadingComments_field_name         protoreflect.Name = \"leading_comments\"\n\tSourceCodeInfo_Location_TrailingComments_field_name        protoreflect.Name = \"trailing_comments\"\n\tSourceCodeInfo_Location_LeadingDetachedComments_field_name protoreflect.Name = \"leading_detached_comments\"\n\n\tSourceCodeInfo_Location_Path_field_fullname                    protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.path\"\n\tSourceCodeInfo_Location_Span_field_fullname                    protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.span\"\n\tSourceCodeInfo_Location_LeadingComments_field_fullname         protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.leading_comments\"\n\tSourceCodeInfo_Location_TrailingComments_field_fullname        protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.trailing_comments\"\n\tSourceCodeInfo_Location_LeadingDetachedComments_field_fullname protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.leading_detached_comments\"\n)\n\n// Field numbers for google.protobuf.SourceCodeInfo.Location.\nconst (\n\tSourceCodeInfo_Location_Path_field_number                    protoreflect.FieldNumber = 1\n\tSourceCodeInfo_Location_Span_field_number                    protoreflect.FieldNumber = 2\n\tSourceCodeInfo_Location_LeadingComments_field_number         protoreflect.FieldNumber = 3\n\tSourceCodeInfo_Location_TrailingComments_field_number        protoreflect.FieldNumber = 4\n\tSourceCodeInfo_Location_LeadingDetachedComments_field_number protoreflect.FieldNumber = 6\n)\n\n// Names for google.protobuf.GeneratedCodeInfo.\nconst (\n\tGeneratedCodeInfo_message_name     protoreflect.Name     = \"GeneratedCodeInfo\"\n\tGeneratedCodeInfo_message_fullname protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo\"\n)\n\n// Field names for google.protobuf.GeneratedCodeInfo.\nconst (\n\tGeneratedCodeInfo_Annotation_field_name protoreflect.Name = \"annotation\"\n\n\tGeneratedCodeInfo_Annotation_field_fullname protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.annotation\"\n)\n\n// Field numbers for google.protobuf.GeneratedCodeInfo.\nconst (\n\tGeneratedCodeInfo_Annotation_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.GeneratedCodeInfo.Annotation.\nconst (\n\tGeneratedCodeInfo_Annotation_message_name     protoreflect.Name     = \"Annotation\"\n\tGeneratedCodeInfo_Annotation_message_fullname protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation\"\n)\n\n// Field names for google.protobuf.GeneratedCodeInfo.Annotation.\nconst (\n\tGeneratedCodeInfo_Annotation_Path_field_name       protoreflect.Name = \"path\"\n\tGeneratedCodeInfo_Annotation_SourceFile_field_name protoreflect.Name = \"source_file\"\n\tGeneratedCodeInfo_Annotation_Begin_field_name      protoreflect.Name = \"begin\"\n\tGeneratedCodeInfo_Annotation_End_field_name        protoreflect.Name = \"end\"\n\tGeneratedCodeInfo_Annotation_Semantic_field_name   protoreflect.Name = \"semantic\"\n\n\tGeneratedCodeInfo_Annotation_Path_field_fullname       protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.path\"\n\tGeneratedCodeInfo_Annotation_SourceFile_field_fullname protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.source_file\"\n\tGeneratedCodeInfo_Annotation_Begin_field_fullname      protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.begin\"\n\tGeneratedCodeInfo_Annotation_End_field_fullname        protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.end\"\n\tGeneratedCodeInfo_Annotation_Semantic_field_fullname   protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.semantic\"\n)\n\n// Field numbers for google.protobuf.GeneratedCodeInfo.Annotation.\nconst (\n\tGeneratedCodeInfo_Annotation_Path_field_number       protoreflect.FieldNumber = 1\n\tGeneratedCodeInfo_Annotation_SourceFile_field_number protoreflect.FieldNumber = 2\n\tGeneratedCodeInfo_Annotation_Begin_field_number      protoreflect.FieldNumber = 3\n\tGeneratedCodeInfo_Annotation_End_field_number        protoreflect.FieldNumber = 4\n\tGeneratedCodeInfo_Annotation_Semantic_field_number   protoreflect.FieldNumber = 5\n)\n\n// Full and short names for google.protobuf.GeneratedCodeInfo.Annotation.Semantic.\nconst (\n\tGeneratedCodeInfo_Annotation_Semantic_enum_fullname = \"google.protobuf.GeneratedCodeInfo.Annotation.Semantic\"\n\tGeneratedCodeInfo_Annotation_Semantic_enum_name     = \"Semantic\"\n)\n\n// Enum values for google.protobuf.GeneratedCodeInfo.Annotation.Semantic.\nconst (\n\tGeneratedCodeInfo_Annotation_NONE_enum_value  = 0\n\tGeneratedCodeInfo_Annotation_SET_enum_value   = 1\n\tGeneratedCodeInfo_Annotation_ALIAS_enum_value = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/doc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package genid contains constants for declarations in descriptor.proto\n// and the well-known types.\npackage genid\n\nimport \"google.golang.org/protobuf/reflect/protoreflect\"\n\nconst GoogleProtobuf_package protoreflect.FullName = \"google.protobuf\"\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/duration_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_duration_proto = \"google/protobuf/duration.proto\"\n\n// Names for google.protobuf.Duration.\nconst (\n\tDuration_message_name     protoreflect.Name     = \"Duration\"\n\tDuration_message_fullname protoreflect.FullName = \"google.protobuf.Duration\"\n)\n\n// Field names for google.protobuf.Duration.\nconst (\n\tDuration_Seconds_field_name protoreflect.Name = \"seconds\"\n\tDuration_Nanos_field_name   protoreflect.Name = \"nanos\"\n\n\tDuration_Seconds_field_fullname protoreflect.FullName = \"google.protobuf.Duration.seconds\"\n\tDuration_Nanos_field_fullname   protoreflect.FullName = \"google.protobuf.Duration.nanos\"\n)\n\n// Field numbers for google.protobuf.Duration.\nconst (\n\tDuration_Seconds_field_number protoreflect.FieldNumber = 1\n\tDuration_Nanos_field_number   protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/empty_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_empty_proto = \"google/protobuf/empty.proto\"\n\n// Names for google.protobuf.Empty.\nconst (\n\tEmpty_message_name     protoreflect.Name     = \"Empty\"\n\tEmpty_message_fullname protoreflect.FullName = \"google.protobuf.Empty\"\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_field_mask_proto = \"google/protobuf/field_mask.proto\"\n\n// Names for google.protobuf.FieldMask.\nconst (\n\tFieldMask_message_name     protoreflect.Name     = \"FieldMask\"\n\tFieldMask_message_fullname protoreflect.FullName = \"google.protobuf.FieldMask\"\n)\n\n// Field names for google.protobuf.FieldMask.\nconst (\n\tFieldMask_Paths_field_name protoreflect.Name = \"paths\"\n\n\tFieldMask_Paths_field_fullname protoreflect.FullName = \"google.protobuf.FieldMask.paths\"\n)\n\n// Field numbers for google.protobuf.FieldMask.\nconst (\n\tFieldMask_Paths_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_go_features_proto = \"google/protobuf/go_features.proto\"\n\n// Names for pb.GoFeatures.\nconst (\n\tGoFeatures_message_name     protoreflect.Name     = \"GoFeatures\"\n\tGoFeatures_message_fullname protoreflect.FullName = \"pb.GoFeatures\"\n)\n\n// Field names for pb.GoFeatures.\nconst (\n\tGoFeatures_LegacyUnmarshalJsonEnum_field_name protoreflect.Name = \"legacy_unmarshal_json_enum\"\n\tGoFeatures_ApiLevel_field_name                protoreflect.Name = \"api_level\"\n\tGoFeatures_StripEnumPrefix_field_name         protoreflect.Name = \"strip_enum_prefix\"\n\n\tGoFeatures_LegacyUnmarshalJsonEnum_field_fullname protoreflect.FullName = \"pb.GoFeatures.legacy_unmarshal_json_enum\"\n\tGoFeatures_ApiLevel_field_fullname                protoreflect.FullName = \"pb.GoFeatures.api_level\"\n\tGoFeatures_StripEnumPrefix_field_fullname         protoreflect.FullName = \"pb.GoFeatures.strip_enum_prefix\"\n)\n\n// Field numbers for pb.GoFeatures.\nconst (\n\tGoFeatures_LegacyUnmarshalJsonEnum_field_number protoreflect.FieldNumber = 1\n\tGoFeatures_ApiLevel_field_number                protoreflect.FieldNumber = 2\n\tGoFeatures_StripEnumPrefix_field_number         protoreflect.FieldNumber = 3\n)\n\n// Full and short names for pb.GoFeatures.APILevel.\nconst (\n\tGoFeatures_APILevel_enum_fullname = \"pb.GoFeatures.APILevel\"\n\tGoFeatures_APILevel_enum_name     = \"APILevel\"\n)\n\n// Enum values for pb.GoFeatures.APILevel.\nconst (\n\tGoFeatures_API_LEVEL_UNSPECIFIED_enum_value = 0\n\tGoFeatures_API_OPEN_enum_value              = 1\n\tGoFeatures_API_HYBRID_enum_value            = 2\n\tGoFeatures_API_OPAQUE_enum_value            = 3\n)\n\n// Full and short names for pb.GoFeatures.StripEnumPrefix.\nconst (\n\tGoFeatures_StripEnumPrefix_enum_fullname = \"pb.GoFeatures.StripEnumPrefix\"\n\tGoFeatures_StripEnumPrefix_enum_name     = \"StripEnumPrefix\"\n)\n\n// Enum values for pb.GoFeatures.StripEnumPrefix.\nconst (\n\tGoFeatures_STRIP_ENUM_PREFIX_UNSPECIFIED_enum_value   = 0\n\tGoFeatures_STRIP_ENUM_PREFIX_KEEP_enum_value          = 1\n\tGoFeatures_STRIP_ENUM_PREFIX_GENERATE_BOTH_enum_value = 2\n\tGoFeatures_STRIP_ENUM_PREFIX_STRIP_enum_value         = 3\n)\n\n// Extension numbers\nconst (\n\tFeatureSet_Go_ext_number protoreflect.FieldNumber = 1002\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/goname.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage genid\n\n// Go names of implementation-specific struct fields in generated messages.\nconst (\n\tState_goname = \"state\"\n\n\tSizeCache_goname  = \"sizeCache\"\n\tSizeCacheA_goname = \"XXX_sizecache\"\n\n\tUnknownFields_goname  = \"unknownFields\"\n\tUnknownFieldsA_goname = \"XXX_unrecognized\"\n\n\tExtensionFields_goname  = \"extensionFields\"\n\tExtensionFieldsA_goname = \"XXX_InternalExtensions\"\n\tExtensionFieldsB_goname = \"XXX_extensions\"\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/map_entry.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage genid\n\nimport \"google.golang.org/protobuf/reflect/protoreflect\"\n\n// Generic field names and numbers for synthetic map entry messages.\nconst (\n\tMapEntry_Key_field_name   protoreflect.Name = \"key\"\n\tMapEntry_Value_field_name protoreflect.Name = \"value\"\n\n\tMapEntry_Key_field_number   protoreflect.FieldNumber = 1\n\tMapEntry_Value_field_number protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/name.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage genid\n\nconst (\n\tNoUnkeyedLiteral_goname  = \"noUnkeyedLiteral\"\n\tNoUnkeyedLiteralA_goname = \"XXX_NoUnkeyedLiteral\"\n\n\tBuilderSuffix_goname = \"_builder\"\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_source_context_proto = \"google/protobuf/source_context.proto\"\n\n// Names for google.protobuf.SourceContext.\nconst (\n\tSourceContext_message_name     protoreflect.Name     = \"SourceContext\"\n\tSourceContext_message_fullname protoreflect.FullName = \"google.protobuf.SourceContext\"\n)\n\n// Field names for google.protobuf.SourceContext.\nconst (\n\tSourceContext_FileName_field_name protoreflect.Name = \"file_name\"\n\n\tSourceContext_FileName_field_fullname protoreflect.FullName = \"google.protobuf.SourceContext.file_name\"\n)\n\n// Field numbers for google.protobuf.SourceContext.\nconst (\n\tSourceContext_FileName_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/struct_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_struct_proto = \"google/protobuf/struct.proto\"\n\n// Full and short names for google.protobuf.NullValue.\nconst (\n\tNullValue_enum_fullname = \"google.protobuf.NullValue\"\n\tNullValue_enum_name     = \"NullValue\"\n)\n\n// Enum values for google.protobuf.NullValue.\nconst (\n\tNullValue_NULL_VALUE_enum_value = 0\n)\n\n// Names for google.protobuf.Struct.\nconst (\n\tStruct_message_name     protoreflect.Name     = \"Struct\"\n\tStruct_message_fullname protoreflect.FullName = \"google.protobuf.Struct\"\n)\n\n// Field names for google.protobuf.Struct.\nconst (\n\tStruct_Fields_field_name protoreflect.Name = \"fields\"\n\n\tStruct_Fields_field_fullname protoreflect.FullName = \"google.protobuf.Struct.fields\"\n)\n\n// Field numbers for google.protobuf.Struct.\nconst (\n\tStruct_Fields_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.Struct.FieldsEntry.\nconst (\n\tStruct_FieldsEntry_message_name     protoreflect.Name     = \"FieldsEntry\"\n\tStruct_FieldsEntry_message_fullname protoreflect.FullName = \"google.protobuf.Struct.FieldsEntry\"\n)\n\n// Field names for google.protobuf.Struct.FieldsEntry.\nconst (\n\tStruct_FieldsEntry_Key_field_name   protoreflect.Name = \"key\"\n\tStruct_FieldsEntry_Value_field_name protoreflect.Name = \"value\"\n\n\tStruct_FieldsEntry_Key_field_fullname   protoreflect.FullName = \"google.protobuf.Struct.FieldsEntry.key\"\n\tStruct_FieldsEntry_Value_field_fullname protoreflect.FullName = \"google.protobuf.Struct.FieldsEntry.value\"\n)\n\n// Field numbers for google.protobuf.Struct.FieldsEntry.\nconst (\n\tStruct_FieldsEntry_Key_field_number   protoreflect.FieldNumber = 1\n\tStruct_FieldsEntry_Value_field_number protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.Value.\nconst (\n\tValue_message_name     protoreflect.Name     = \"Value\"\n\tValue_message_fullname protoreflect.FullName = \"google.protobuf.Value\"\n)\n\n// Field names for google.protobuf.Value.\nconst (\n\tValue_NullValue_field_name   protoreflect.Name = \"null_value\"\n\tValue_NumberValue_field_name protoreflect.Name = \"number_value\"\n\tValue_StringValue_field_name protoreflect.Name = \"string_value\"\n\tValue_BoolValue_field_name   protoreflect.Name = \"bool_value\"\n\tValue_StructValue_field_name protoreflect.Name = \"struct_value\"\n\tValue_ListValue_field_name   protoreflect.Name = \"list_value\"\n\n\tValue_NullValue_field_fullname   protoreflect.FullName = \"google.protobuf.Value.null_value\"\n\tValue_NumberValue_field_fullname protoreflect.FullName = \"google.protobuf.Value.number_value\"\n\tValue_StringValue_field_fullname protoreflect.FullName = \"google.protobuf.Value.string_value\"\n\tValue_BoolValue_field_fullname   protoreflect.FullName = \"google.protobuf.Value.bool_value\"\n\tValue_StructValue_field_fullname protoreflect.FullName = \"google.protobuf.Value.struct_value\"\n\tValue_ListValue_field_fullname   protoreflect.FullName = \"google.protobuf.Value.list_value\"\n)\n\n// Field numbers for google.protobuf.Value.\nconst (\n\tValue_NullValue_field_number   protoreflect.FieldNumber = 1\n\tValue_NumberValue_field_number protoreflect.FieldNumber = 2\n\tValue_StringValue_field_number protoreflect.FieldNumber = 3\n\tValue_BoolValue_field_number   protoreflect.FieldNumber = 4\n\tValue_StructValue_field_number protoreflect.FieldNumber = 5\n\tValue_ListValue_field_number   protoreflect.FieldNumber = 6\n)\n\n// Oneof names for google.protobuf.Value.\nconst (\n\tValue_Kind_oneof_name protoreflect.Name = \"kind\"\n\n\tValue_Kind_oneof_fullname protoreflect.FullName = \"google.protobuf.Value.kind\"\n)\n\n// Names for google.protobuf.ListValue.\nconst (\n\tListValue_message_name     protoreflect.Name     = \"ListValue\"\n\tListValue_message_fullname protoreflect.FullName = \"google.protobuf.ListValue\"\n)\n\n// Field names for google.protobuf.ListValue.\nconst (\n\tListValue_Values_field_name protoreflect.Name = \"values\"\n\n\tListValue_Values_field_fullname protoreflect.FullName = \"google.protobuf.ListValue.values\"\n)\n\n// Field numbers for google.protobuf.ListValue.\nconst (\n\tListValue_Values_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_timestamp_proto = \"google/protobuf/timestamp.proto\"\n\n// Names for google.protobuf.Timestamp.\nconst (\n\tTimestamp_message_name     protoreflect.Name     = \"Timestamp\"\n\tTimestamp_message_fullname protoreflect.FullName = \"google.protobuf.Timestamp\"\n)\n\n// Field names for google.protobuf.Timestamp.\nconst (\n\tTimestamp_Seconds_field_name protoreflect.Name = \"seconds\"\n\tTimestamp_Nanos_field_name   protoreflect.Name = \"nanos\"\n\n\tTimestamp_Seconds_field_fullname protoreflect.FullName = \"google.protobuf.Timestamp.seconds\"\n\tTimestamp_Nanos_field_fullname   protoreflect.FullName = \"google.protobuf.Timestamp.nanos\"\n)\n\n// Field numbers for google.protobuf.Timestamp.\nconst (\n\tTimestamp_Seconds_field_number protoreflect.FieldNumber = 1\n\tTimestamp_Nanos_field_number   protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/type_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_type_proto = \"google/protobuf/type.proto\"\n\n// Full and short names for google.protobuf.Syntax.\nconst (\n\tSyntax_enum_fullname = \"google.protobuf.Syntax\"\n\tSyntax_enum_name     = \"Syntax\"\n)\n\n// Enum values for google.protobuf.Syntax.\nconst (\n\tSyntax_SYNTAX_PROTO2_enum_value   = 0\n\tSyntax_SYNTAX_PROTO3_enum_value   = 1\n\tSyntax_SYNTAX_EDITIONS_enum_value = 2\n)\n\n// Names for google.protobuf.Type.\nconst (\n\tType_message_name     protoreflect.Name     = \"Type\"\n\tType_message_fullname protoreflect.FullName = \"google.protobuf.Type\"\n)\n\n// Field names for google.protobuf.Type.\nconst (\n\tType_Name_field_name          protoreflect.Name = \"name\"\n\tType_Fields_field_name        protoreflect.Name = \"fields\"\n\tType_Oneofs_field_name        protoreflect.Name = \"oneofs\"\n\tType_Options_field_name       protoreflect.Name = \"options\"\n\tType_SourceContext_field_name protoreflect.Name = \"source_context\"\n\tType_Syntax_field_name        protoreflect.Name = \"syntax\"\n\tType_Edition_field_name       protoreflect.Name = \"edition\"\n\n\tType_Name_field_fullname          protoreflect.FullName = \"google.protobuf.Type.name\"\n\tType_Fields_field_fullname        protoreflect.FullName = \"google.protobuf.Type.fields\"\n\tType_Oneofs_field_fullname        protoreflect.FullName = \"google.protobuf.Type.oneofs\"\n\tType_Options_field_fullname       protoreflect.FullName = \"google.protobuf.Type.options\"\n\tType_SourceContext_field_fullname protoreflect.FullName = \"google.protobuf.Type.source_context\"\n\tType_Syntax_field_fullname        protoreflect.FullName = \"google.protobuf.Type.syntax\"\n\tType_Edition_field_fullname       protoreflect.FullName = \"google.protobuf.Type.edition\"\n)\n\n// Field numbers for google.protobuf.Type.\nconst (\n\tType_Name_field_number          protoreflect.FieldNumber = 1\n\tType_Fields_field_number        protoreflect.FieldNumber = 2\n\tType_Oneofs_field_number        protoreflect.FieldNumber = 3\n\tType_Options_field_number       protoreflect.FieldNumber = 4\n\tType_SourceContext_field_number protoreflect.FieldNumber = 5\n\tType_Syntax_field_number        protoreflect.FieldNumber = 6\n\tType_Edition_field_number       protoreflect.FieldNumber = 7\n)\n\n// Names for google.protobuf.Field.\nconst (\n\tField_message_name     protoreflect.Name     = \"Field\"\n\tField_message_fullname protoreflect.FullName = \"google.protobuf.Field\"\n)\n\n// Field names for google.protobuf.Field.\nconst (\n\tField_Kind_field_name         protoreflect.Name = \"kind\"\n\tField_Cardinality_field_name  protoreflect.Name = \"cardinality\"\n\tField_Number_field_name       protoreflect.Name = \"number\"\n\tField_Name_field_name         protoreflect.Name = \"name\"\n\tField_TypeUrl_field_name      protoreflect.Name = \"type_url\"\n\tField_OneofIndex_field_name   protoreflect.Name = \"oneof_index\"\n\tField_Packed_field_name       protoreflect.Name = \"packed\"\n\tField_Options_field_name      protoreflect.Name = \"options\"\n\tField_JsonName_field_name     protoreflect.Name = \"json_name\"\n\tField_DefaultValue_field_name protoreflect.Name = \"default_value\"\n\n\tField_Kind_field_fullname         protoreflect.FullName = \"google.protobuf.Field.kind\"\n\tField_Cardinality_field_fullname  protoreflect.FullName = \"google.protobuf.Field.cardinality\"\n\tField_Number_field_fullname       protoreflect.FullName = \"google.protobuf.Field.number\"\n\tField_Name_field_fullname         protoreflect.FullName = \"google.protobuf.Field.name\"\n\tField_TypeUrl_field_fullname      protoreflect.FullName = \"google.protobuf.Field.type_url\"\n\tField_OneofIndex_field_fullname   protoreflect.FullName = \"google.protobuf.Field.oneof_index\"\n\tField_Packed_field_fullname       protoreflect.FullName = \"google.protobuf.Field.packed\"\n\tField_Options_field_fullname      protoreflect.FullName = \"google.protobuf.Field.options\"\n\tField_JsonName_field_fullname     protoreflect.FullName = \"google.protobuf.Field.json_name\"\n\tField_DefaultValue_field_fullname protoreflect.FullName = \"google.protobuf.Field.default_value\"\n)\n\n// Field numbers for google.protobuf.Field.\nconst (\n\tField_Kind_field_number         protoreflect.FieldNumber = 1\n\tField_Cardinality_field_number  protoreflect.FieldNumber = 2\n\tField_Number_field_number       protoreflect.FieldNumber = 3\n\tField_Name_field_number         protoreflect.FieldNumber = 4\n\tField_TypeUrl_field_number      protoreflect.FieldNumber = 6\n\tField_OneofIndex_field_number   protoreflect.FieldNumber = 7\n\tField_Packed_field_number       protoreflect.FieldNumber = 8\n\tField_Options_field_number      protoreflect.FieldNumber = 9\n\tField_JsonName_field_number     protoreflect.FieldNumber = 10\n\tField_DefaultValue_field_number protoreflect.FieldNumber = 11\n)\n\n// Full and short names for google.protobuf.Field.Kind.\nconst (\n\tField_Kind_enum_fullname = \"google.protobuf.Field.Kind\"\n\tField_Kind_enum_name     = \"Kind\"\n)\n\n// Enum values for google.protobuf.Field.Kind.\nconst (\n\tField_TYPE_UNKNOWN_enum_value  = 0\n\tField_TYPE_DOUBLE_enum_value   = 1\n\tField_TYPE_FLOAT_enum_value    = 2\n\tField_TYPE_INT64_enum_value    = 3\n\tField_TYPE_UINT64_enum_value   = 4\n\tField_TYPE_INT32_enum_value    = 5\n\tField_TYPE_FIXED64_enum_value  = 6\n\tField_TYPE_FIXED32_enum_value  = 7\n\tField_TYPE_BOOL_enum_value     = 8\n\tField_TYPE_STRING_enum_value   = 9\n\tField_TYPE_GROUP_enum_value    = 10\n\tField_TYPE_MESSAGE_enum_value  = 11\n\tField_TYPE_BYTES_enum_value    = 12\n\tField_TYPE_UINT32_enum_value   = 13\n\tField_TYPE_ENUM_enum_value     = 14\n\tField_TYPE_SFIXED32_enum_value = 15\n\tField_TYPE_SFIXED64_enum_value = 16\n\tField_TYPE_SINT32_enum_value   = 17\n\tField_TYPE_SINT64_enum_value   = 18\n)\n\n// Full and short names for google.protobuf.Field.Cardinality.\nconst (\n\tField_Cardinality_enum_fullname = \"google.protobuf.Field.Cardinality\"\n\tField_Cardinality_enum_name     = \"Cardinality\"\n)\n\n// Enum values for google.protobuf.Field.Cardinality.\nconst (\n\tField_CARDINALITY_UNKNOWN_enum_value  = 0\n\tField_CARDINALITY_OPTIONAL_enum_value = 1\n\tField_CARDINALITY_REQUIRED_enum_value = 2\n\tField_CARDINALITY_REPEATED_enum_value = 3\n)\n\n// Names for google.protobuf.Enum.\nconst (\n\tEnum_message_name     protoreflect.Name     = \"Enum\"\n\tEnum_message_fullname protoreflect.FullName = \"google.protobuf.Enum\"\n)\n\n// Field names for google.protobuf.Enum.\nconst (\n\tEnum_Name_field_name          protoreflect.Name = \"name\"\n\tEnum_Enumvalue_field_name     protoreflect.Name = \"enumvalue\"\n\tEnum_Options_field_name       protoreflect.Name = \"options\"\n\tEnum_SourceContext_field_name protoreflect.Name = \"source_context\"\n\tEnum_Syntax_field_name        protoreflect.Name = \"syntax\"\n\tEnum_Edition_field_name       protoreflect.Name = \"edition\"\n\n\tEnum_Name_field_fullname          protoreflect.FullName = \"google.protobuf.Enum.name\"\n\tEnum_Enumvalue_field_fullname     protoreflect.FullName = \"google.protobuf.Enum.enumvalue\"\n\tEnum_Options_field_fullname       protoreflect.FullName = \"google.protobuf.Enum.options\"\n\tEnum_SourceContext_field_fullname protoreflect.FullName = \"google.protobuf.Enum.source_context\"\n\tEnum_Syntax_field_fullname        protoreflect.FullName = \"google.protobuf.Enum.syntax\"\n\tEnum_Edition_field_fullname       protoreflect.FullName = \"google.protobuf.Enum.edition\"\n)\n\n// Field numbers for google.protobuf.Enum.\nconst (\n\tEnum_Name_field_number          protoreflect.FieldNumber = 1\n\tEnum_Enumvalue_field_number     protoreflect.FieldNumber = 2\n\tEnum_Options_field_number       protoreflect.FieldNumber = 3\n\tEnum_SourceContext_field_number protoreflect.FieldNumber = 4\n\tEnum_Syntax_field_number        protoreflect.FieldNumber = 5\n\tEnum_Edition_field_number       protoreflect.FieldNumber = 6\n)\n\n// Names for google.protobuf.EnumValue.\nconst (\n\tEnumValue_message_name     protoreflect.Name     = \"EnumValue\"\n\tEnumValue_message_fullname protoreflect.FullName = \"google.protobuf.EnumValue\"\n)\n\n// Field names for google.protobuf.EnumValue.\nconst (\n\tEnumValue_Name_field_name    protoreflect.Name = \"name\"\n\tEnumValue_Number_field_name  protoreflect.Name = \"number\"\n\tEnumValue_Options_field_name protoreflect.Name = \"options\"\n\n\tEnumValue_Name_field_fullname    protoreflect.FullName = \"google.protobuf.EnumValue.name\"\n\tEnumValue_Number_field_fullname  protoreflect.FullName = \"google.protobuf.EnumValue.number\"\n\tEnumValue_Options_field_fullname protoreflect.FullName = \"google.protobuf.EnumValue.options\"\n)\n\n// Field numbers for google.protobuf.EnumValue.\nconst (\n\tEnumValue_Name_field_number    protoreflect.FieldNumber = 1\n\tEnumValue_Number_field_number  protoreflect.FieldNumber = 2\n\tEnumValue_Options_field_number protoreflect.FieldNumber = 3\n)\n\n// Names for google.protobuf.Option.\nconst (\n\tOption_message_name     protoreflect.Name     = \"Option\"\n\tOption_message_fullname protoreflect.FullName = \"google.protobuf.Option\"\n)\n\n// Field names for google.protobuf.Option.\nconst (\n\tOption_Name_field_name  protoreflect.Name = \"name\"\n\tOption_Value_field_name protoreflect.Name = \"value\"\n\n\tOption_Name_field_fullname  protoreflect.FullName = \"google.protobuf.Option.name\"\n\tOption_Value_field_fullname protoreflect.FullName = \"google.protobuf.Option.value\"\n)\n\n// Field numbers for google.protobuf.Option.\nconst (\n\tOption_Name_field_number  protoreflect.FieldNumber = 1\n\tOption_Value_field_number protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/wrappers.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage genid\n\nimport \"google.golang.org/protobuf/reflect/protoreflect\"\n\n// Generic field name and number for messages in wrappers.proto.\nconst (\n\tWrapperValue_Value_field_name   protoreflect.Name        = \"value\"\n\tWrapperValue_Value_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_wrappers_proto = \"google/protobuf/wrappers.proto\"\n\n// Names for google.protobuf.DoubleValue.\nconst (\n\tDoubleValue_message_name     protoreflect.Name     = \"DoubleValue\"\n\tDoubleValue_message_fullname protoreflect.FullName = \"google.protobuf.DoubleValue\"\n)\n\n// Field names for google.protobuf.DoubleValue.\nconst (\n\tDoubleValue_Value_field_name protoreflect.Name = \"value\"\n\n\tDoubleValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.DoubleValue.value\"\n)\n\n// Field numbers for google.protobuf.DoubleValue.\nconst (\n\tDoubleValue_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.FloatValue.\nconst (\n\tFloatValue_message_name     protoreflect.Name     = \"FloatValue\"\n\tFloatValue_message_fullname protoreflect.FullName = \"google.protobuf.FloatValue\"\n)\n\n// Field names for google.protobuf.FloatValue.\nconst (\n\tFloatValue_Value_field_name protoreflect.Name = \"value\"\n\n\tFloatValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.FloatValue.value\"\n)\n\n// Field numbers for google.protobuf.FloatValue.\nconst (\n\tFloatValue_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.Int64Value.\nconst (\n\tInt64Value_message_name     protoreflect.Name     = \"Int64Value\"\n\tInt64Value_message_fullname protoreflect.FullName = \"google.protobuf.Int64Value\"\n)\n\n// Field names for google.protobuf.Int64Value.\nconst (\n\tInt64Value_Value_field_name protoreflect.Name = \"value\"\n\n\tInt64Value_Value_field_fullname protoreflect.FullName = \"google.protobuf.Int64Value.value\"\n)\n\n// Field numbers for google.protobuf.Int64Value.\nconst (\n\tInt64Value_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.UInt64Value.\nconst (\n\tUInt64Value_message_name     protoreflect.Name     = \"UInt64Value\"\n\tUInt64Value_message_fullname protoreflect.FullName = \"google.protobuf.UInt64Value\"\n)\n\n// Field names for google.protobuf.UInt64Value.\nconst (\n\tUInt64Value_Value_field_name protoreflect.Name = \"value\"\n\n\tUInt64Value_Value_field_fullname protoreflect.FullName = \"google.protobuf.UInt64Value.value\"\n)\n\n// Field numbers for google.protobuf.UInt64Value.\nconst (\n\tUInt64Value_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.Int32Value.\nconst (\n\tInt32Value_message_name     protoreflect.Name     = \"Int32Value\"\n\tInt32Value_message_fullname protoreflect.FullName = \"google.protobuf.Int32Value\"\n)\n\n// Field names for google.protobuf.Int32Value.\nconst (\n\tInt32Value_Value_field_name protoreflect.Name = \"value\"\n\n\tInt32Value_Value_field_fullname protoreflect.FullName = \"google.protobuf.Int32Value.value\"\n)\n\n// Field numbers for google.protobuf.Int32Value.\nconst (\n\tInt32Value_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.UInt32Value.\nconst (\n\tUInt32Value_message_name     protoreflect.Name     = \"UInt32Value\"\n\tUInt32Value_message_fullname protoreflect.FullName = \"google.protobuf.UInt32Value\"\n)\n\n// Field names for google.protobuf.UInt32Value.\nconst (\n\tUInt32Value_Value_field_name protoreflect.Name = \"value\"\n\n\tUInt32Value_Value_field_fullname protoreflect.FullName = \"google.protobuf.UInt32Value.value\"\n)\n\n// Field numbers for google.protobuf.UInt32Value.\nconst (\n\tUInt32Value_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.BoolValue.\nconst (\n\tBoolValue_message_name     protoreflect.Name     = \"BoolValue\"\n\tBoolValue_message_fullname protoreflect.FullName = \"google.protobuf.BoolValue\"\n)\n\n// Field names for google.protobuf.BoolValue.\nconst (\n\tBoolValue_Value_field_name protoreflect.Name = \"value\"\n\n\tBoolValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.BoolValue.value\"\n)\n\n// Field numbers for google.protobuf.BoolValue.\nconst (\n\tBoolValue_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.StringValue.\nconst (\n\tStringValue_message_name     protoreflect.Name     = \"StringValue\"\n\tStringValue_message_fullname protoreflect.FullName = \"google.protobuf.StringValue\"\n)\n\n// Field names for google.protobuf.StringValue.\nconst (\n\tStringValue_Value_field_name protoreflect.Name = \"value\"\n\n\tStringValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.StringValue.value\"\n)\n\n// Field numbers for google.protobuf.StringValue.\nconst (\n\tStringValue_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.BytesValue.\nconst (\n\tBytesValue_message_name     protoreflect.Name     = \"BytesValue\"\n\tBytesValue_message_fullname protoreflect.FullName = \"google.protobuf.BytesValue\"\n)\n\n// Field names for google.protobuf.BytesValue.\nconst (\n\tBytesValue_Value_field_name protoreflect.Name = \"value\"\n\n\tBytesValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.BytesValue.value\"\n)\n\n// Field numbers for google.protobuf.BytesValue.\nconst (\n\tBytesValue_Value_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/api_export.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\n\t\"google.golang.org/protobuf/encoding/prototext\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// Export is a zero-length named type that exists only to export a set of\n// functions that we do not want to appear in godoc.\ntype Export struct{}\n\n// NewError formats a string according to the format specifier and arguments and\n// returns an error that has a \"proto\" prefix.\nfunc (Export) NewError(f string, x ...any) error {\n\treturn errors.New(f, x...)\n}\n\n// enum is any enum type generated by protoc-gen-go\n// and must be a named int32 type.\ntype enum = any\n\n// EnumOf returns the protoreflect.Enum interface over e.\n// It returns nil if e is nil.\nfunc (Export) EnumOf(e enum) protoreflect.Enum {\n\tswitch e := e.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoreflect.Enum:\n\t\treturn e\n\tdefault:\n\t\treturn legacyWrapEnum(reflect.ValueOf(e))\n\t}\n}\n\n// EnumDescriptorOf returns the protoreflect.EnumDescriptor for e.\n// It returns nil if e is nil.\nfunc (Export) EnumDescriptorOf(e enum) protoreflect.EnumDescriptor {\n\tswitch e := e.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoreflect.Enum:\n\t\treturn e.Descriptor()\n\tdefault:\n\t\treturn LegacyLoadEnumDesc(reflect.TypeOf(e))\n\t}\n}\n\n// EnumTypeOf returns the protoreflect.EnumType for e.\n// It returns nil if e is nil.\nfunc (Export) EnumTypeOf(e enum) protoreflect.EnumType {\n\tswitch e := e.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoreflect.Enum:\n\t\treturn e.Type()\n\tdefault:\n\t\treturn legacyLoadEnumType(reflect.TypeOf(e))\n\t}\n}\n\n// EnumStringOf returns the enum value as a string, either as the name if\n// the number is resolvable, or the number formatted as a string.\nfunc (Export) EnumStringOf(ed protoreflect.EnumDescriptor, n protoreflect.EnumNumber) string {\n\tev := ed.Values().ByNumber(n)\n\tif ev != nil {\n\t\treturn string(ev.Name())\n\t}\n\treturn strconv.Itoa(int(n))\n}\n\n// message is any message type generated by protoc-gen-go\n// and must be a pointer to a named struct type.\ntype message = any\n\n// legacyMessageWrapper wraps a v2 message as a v1 message.\ntype legacyMessageWrapper struct{ m protoreflect.ProtoMessage }\n\nfunc (m legacyMessageWrapper) Reset()         { proto.Reset(m.m) }\nfunc (m legacyMessageWrapper) String() string { return Export{}.MessageStringOf(m.m) }\nfunc (m legacyMessageWrapper) ProtoMessage()  {}\n\n// ProtoMessageV1Of converts either a v1 or v2 message to a v1 message.\n// It returns nil if m is nil.\nfunc (Export) ProtoMessageV1Of(m message) protoiface.MessageV1 {\n\tswitch mv := m.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoiface.MessageV1:\n\t\treturn mv\n\tcase unwrapper:\n\t\treturn Export{}.ProtoMessageV1Of(mv.protoUnwrap())\n\tcase protoreflect.ProtoMessage:\n\t\treturn legacyMessageWrapper{mv}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"message %T is neither a v1 or v2 Message\", m))\n\t}\n}\n\nfunc (Export) protoMessageV2Of(m message) protoreflect.ProtoMessage {\n\tswitch mv := m.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoreflect.ProtoMessage:\n\t\treturn mv\n\tcase legacyMessageWrapper:\n\t\treturn mv.m\n\tcase protoiface.MessageV1:\n\t\treturn nil\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"message %T is neither a v1 or v2 Message\", m))\n\t}\n}\n\n// ProtoMessageV2Of converts either a v1 or v2 message to a v2 message.\n// It returns nil if m is nil.\nfunc (Export) ProtoMessageV2Of(m message) protoreflect.ProtoMessage {\n\tif m == nil {\n\t\treturn nil\n\t}\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv\n\t}\n\treturn legacyWrapMessage(reflect.ValueOf(m)).Interface()\n}\n\n// MessageOf returns the protoreflect.Message interface over m.\n// It returns nil if m is nil.\nfunc (Export) MessageOf(m message) protoreflect.Message {\n\tif m == nil {\n\t\treturn nil\n\t}\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv.ProtoReflect()\n\t}\n\treturn legacyWrapMessage(reflect.ValueOf(m))\n}\n\n// MessageDescriptorOf returns the protoreflect.MessageDescriptor for m.\n// It returns nil if m is nil.\nfunc (Export) MessageDescriptorOf(m message) protoreflect.MessageDescriptor {\n\tif m == nil {\n\t\treturn nil\n\t}\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv.ProtoReflect().Descriptor()\n\t}\n\treturn LegacyLoadMessageDesc(reflect.TypeOf(m))\n}\n\n// MessageTypeOf returns the protoreflect.MessageType for m.\n// It returns nil if m is nil.\nfunc (Export) MessageTypeOf(m message) protoreflect.MessageType {\n\tif m == nil {\n\t\treturn nil\n\t}\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv.ProtoReflect().Type()\n\t}\n\treturn legacyLoadMessageType(reflect.TypeOf(m), \"\")\n}\n\n// MessageStringOf returns the message value as a string,\n// which is the message serialized in the protobuf text format.\nfunc (Export) MessageStringOf(m protoreflect.ProtoMessage) string {\n\treturn prototext.MarshalOptions{Multiline: false}.Format(m)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/api_export_opaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"strconv\"\n\t\"sync/atomic\"\n\t\"unsafe\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc (Export) UnmarshalField(msg any, fieldNum int32) {\n\tUnmarshalField(msg.(protoreflect.ProtoMessage).ProtoReflect(), protoreflect.FieldNumber(fieldNum))\n}\n\n// Present checks the presence set for a certain field number (zero\n// based, ordered by appearance in original proto file). part is\n// a pointer to the correct element in the bitmask array, num is the\n// field number unaltered.  Example (field number 70 -> part =\n// &m.XXX_presence[1], num = 70)\nfunc (Export) Present(part *uint32, num uint32) bool {\n\t// This hook will read an unprotected shadow presence set if\n\t// we're unning under the race detector\n\traceDetectHookPresent(part, num)\n\treturn atomic.LoadUint32(part)&(1<<(num%32)) > 0\n}\n\n// SetPresent adds a field to the presence set. part is a pointer to\n// the relevant element in the array and num is the field number\n// unaltered.  size is the number of fields in the protocol\n// buffer.\nfunc (Export) SetPresent(part *uint32, num uint32, size uint32) {\n\t// This hook will mutate an unprotected shadow presence set if\n\t// we're running under the race detector\n\traceDetectHookSetPresent(part, num, presenceSize(size))\n\tfor {\n\t\told := atomic.LoadUint32(part)\n\t\tif atomic.CompareAndSwapUint32(part, old, old|(1<<(num%32))) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// SetPresentNonAtomic is like SetPresent, but operates non-atomically.\n// It is meant for use by builder methods, where the message is known not\n// to be accessible yet by other goroutines.\nfunc (Export) SetPresentNonAtomic(part *uint32, num uint32, size uint32) {\n\t// This hook will mutate an unprotected shadow presence set if\n\t// we're running under the race detector\n\traceDetectHookSetPresent(part, num, presenceSize(size))\n\t*part |= 1 << (num % 32)\n}\n\n// ClearPresence removes a field from the presence set. part is a\n// pointer to the relevant element in the presence array and num is\n// the field number unaltered.\nfunc (Export) ClearPresent(part *uint32, num uint32) {\n\t// This hook will mutate an unprotected shadow presence set if\n\t// we're running under the race detector\n\traceDetectHookClearPresent(part, num)\n\tfor {\n\t\told := atomic.LoadUint32(part)\n\t\tif atomic.CompareAndSwapUint32(part, old, old&^(1<<(num%32))) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// interfaceToPointer takes a pointer to an empty interface whose value is a\n// pointer type, and converts it into a \"pointer\" that points to the same\n// target\nfunc interfaceToPointer(i *any) pointer {\n\treturn pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]}\n}\n\nfunc (p pointer) atomicGetPointer() pointer {\n\treturn pointer{p: atomic.LoadPointer((*unsafe.Pointer)(p.p))}\n}\n\nfunc (p pointer) atomicSetPointer(q pointer) {\n\tatomic.StorePointer((*unsafe.Pointer)(p.p), q.p)\n}\n\n// AtomicCheckPointerIsNil takes an interface (which is a pointer to a\n// pointer) and returns true if the pointed-to pointer is nil (using an\n// atomic load).  This function is inlineable and, on x86, just becomes a\n// simple load and compare.\nfunc (Export) AtomicCheckPointerIsNil(ptr any) bool {\n\treturn interfaceToPointer(&ptr).atomicGetPointer().IsNil()\n}\n\n// AtomicSetPointer takes two interfaces (first is a pointer to a pointer,\n// second is a pointer) and atomically sets the second pointer into location\n// referenced by first pointer.  Unfortunately, atomicSetPointer() does not inline\n// (even on x86), so this does not become a simple store on x86.\nfunc (Export) AtomicSetPointer(dstPtr, valPtr any) {\n\tinterfaceToPointer(&dstPtr).atomicSetPointer(interfaceToPointer(&valPtr))\n}\n\n// AtomicLoadPointer loads the pointer at the location pointed at by src,\n// and stores that pointer value into the location pointed at by dst.\nfunc (Export) AtomicLoadPointer(ptr Pointer, dst Pointer) {\n\t*(*unsafe.Pointer)(unsafe.Pointer(dst)) = atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(ptr)))\n}\n\n// AtomicInitializePointer makes ptr and dst point to the same value.\n//\n// If *ptr is a nil pointer, it sets *ptr = *dst.\n//\n// If *ptr is a non-nil pointer, it sets *dst = *ptr.\nfunc (Export) AtomicInitializePointer(ptr Pointer, dst Pointer) {\n\tif !atomic.CompareAndSwapPointer((*unsafe.Pointer)(ptr), unsafe.Pointer(nil), *(*unsafe.Pointer)(dst)) {\n\t\t*(*unsafe.Pointer)(unsafe.Pointer(dst)) = atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(ptr)))\n\t}\n}\n\n// MessageFieldStringOf returns the field formatted as a string,\n// either as the field name if resolvable otherwise as a decimal string.\nfunc (Export) MessageFieldStringOf(md protoreflect.MessageDescriptor, n protoreflect.FieldNumber) string {\n\tfd := md.Fields().ByNumber(n)\n\tif fd != nil {\n\t\treturn string(fd.Name())\n\t}\n\treturn strconv.Itoa(int(n))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/bitmap.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !race\n\npackage impl\n\n// There is no additional data as we're not running under race detector.\ntype RaceDetectHookData struct{}\n\n// Empty stubs for when not using the race detector. Calls to these from index.go should be optimized away.\nfunc (presence) raceDetectHookPresent(num uint32)                       {}\nfunc (presence) raceDetectHookSetPresent(num uint32, size presenceSize) {}\nfunc (presence) raceDetectHookClearPresent(num uint32)                  {}\nfunc (presence) raceDetectHookAllocAndCopy(src presence)                {}\n\n// raceDetectHookPresent is called by the generated file interface\n// (*proto.internalFuncs) Present to optionally read an unprotected\n// shadow bitmap when race detection is enabled. In regular code it is\n// a noop.\nfunc raceDetectHookPresent(field *uint32, num uint32) {}\n\n// raceDetectHookSetPresent is called by the generated file interface\n// (*proto.internalFuncs) SetPresent to optionally write an unprotected\n// shadow bitmap when race detection is enabled. In regular code it is\n// a noop.\nfunc raceDetectHookSetPresent(field *uint32, num uint32, size presenceSize) {}\n\n// raceDetectHookClearPresent is called by the generated file interface\n// (*proto.internalFuncs) ClearPresent to optionally write an unprotected\n// shadow bitmap when race detection is enabled. In regular code it is\n// a noop.\nfunc raceDetectHookClearPresent(field *uint32, num uint32) {}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/bitmap_race.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build race\n\npackage impl\n\n// When running under race detector, we add a presence map of bytes, that we can access\n// in the hook functions so that we trigger the race detection whenever we have concurrent\n// Read-Writes or Write-Writes. The race detector does not otherwise detect invalid concurrent\n// access to lazy fields as all updates of bitmaps and pointers are done using atomic operations.\ntype RaceDetectHookData struct {\n\tshadowPresence *[]byte\n}\n\n// Hooks for presence bitmap operations that allocate, read and write the shadowPresence\n// using non-atomic operations.\nfunc (data *RaceDetectHookData) raceDetectHookAlloc(size presenceSize) {\n\tsp := make([]byte, size)\n\tatomicStoreShadowPresence(&data.shadowPresence, &sp)\n}\n\nfunc (p presence) raceDetectHookPresent(num uint32) {\n\tdata := p.toRaceDetectData()\n\tif data == nil {\n\t\treturn\n\t}\n\tsp := atomicLoadShadowPresence(&data.shadowPresence)\n\tif sp != nil {\n\t\t_ = (*sp)[num]\n\t}\n}\n\nfunc (p presence) raceDetectHookSetPresent(num uint32, size presenceSize) {\n\tdata := p.toRaceDetectData()\n\tif data == nil {\n\t\treturn\n\t}\n\tsp := atomicLoadShadowPresence(&data.shadowPresence)\n\tif sp == nil {\n\t\tdata.raceDetectHookAlloc(size)\n\t\tsp = atomicLoadShadowPresence(&data.shadowPresence)\n\t}\n\t(*sp)[num] = 1\n}\n\nfunc (p presence) raceDetectHookClearPresent(num uint32) {\n\tdata := p.toRaceDetectData()\n\tif data == nil {\n\t\treturn\n\t}\n\tsp := atomicLoadShadowPresence(&data.shadowPresence)\n\tif sp != nil {\n\t\t(*sp)[num] = 0\n\n\t}\n}\n\n// raceDetectHookAllocAndCopy allocates a new shadowPresence slice at lazy and copies\n// shadowPresence bytes from src to lazy.\nfunc (p presence) raceDetectHookAllocAndCopy(q presence) {\n\tsData := q.toRaceDetectData()\n\tdData := p.toRaceDetectData()\n\tif sData == nil {\n\t\treturn\n\t}\n\tsrcSp := atomicLoadShadowPresence(&sData.shadowPresence)\n\tif srcSp == nil {\n\t\tatomicStoreShadowPresence(&dData.shadowPresence, nil)\n\t\treturn\n\t}\n\tn := len(*srcSp)\n\tdSlice := make([]byte, n)\n\tatomicStoreShadowPresence(&dData.shadowPresence, &dSlice)\n\tfor i := 0; i < n; i++ {\n\t\tdSlice[i] = (*srcSp)[i]\n\t}\n}\n\n// raceDetectHookPresent is called by the generated file interface\n// (*proto.internalFuncs) Present to optionally read an unprotected\n// shadow bitmap when race detection is enabled. In regular code it is\n// a noop.\nfunc raceDetectHookPresent(field *uint32, num uint32) {\n\tdata := findPointerToRaceDetectData(field, num)\n\tif data == nil {\n\t\treturn\n\t}\n\tsp := atomicLoadShadowPresence(&data.shadowPresence)\n\tif sp != nil {\n\t\t_ = (*sp)[num]\n\t}\n}\n\n// raceDetectHookSetPresent is called by the generated file interface\n// (*proto.internalFuncs) SetPresent to optionally write an unprotected\n// shadow bitmap when race detection is enabled. In regular code it is\n// a noop.\nfunc raceDetectHookSetPresent(field *uint32, num uint32, size presenceSize) {\n\tdata := findPointerToRaceDetectData(field, num)\n\tif data == nil {\n\t\treturn\n\t}\n\tsp := atomicLoadShadowPresence(&data.shadowPresence)\n\tif sp == nil {\n\t\tdata.raceDetectHookAlloc(size)\n\t\tsp = atomicLoadShadowPresence(&data.shadowPresence)\n\t}\n\t(*sp)[num] = 1\n}\n\n// raceDetectHookClearPresent is called by the generated file interface\n// (*proto.internalFuncs) ClearPresent to optionally write an unprotected\n// shadow bitmap when race detection is enabled. In regular code it is\n// a noop.\nfunc raceDetectHookClearPresent(field *uint32, num uint32) {\n\tdata := findPointerToRaceDetectData(field, num)\n\tif data == nil {\n\t\treturn\n\t}\n\tsp := atomicLoadShadowPresence(&data.shadowPresence)\n\tif sp != nil {\n\t\t(*sp)[num] = 0\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/checkinit.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nfunc (mi *MessageInfo) checkInitialized(in protoiface.CheckInitializedInput) (protoiface.CheckInitializedOutput, error) {\n\tvar p pointer\n\tif ms, ok := in.Message.(*messageState); ok {\n\t\tp = ms.pointer()\n\t} else {\n\t\tp = in.Message.(*messageReflectWrapper).pointer()\n\t}\n\treturn protoiface.CheckInitializedOutput{}, mi.checkInitializedPointer(p)\n}\n\nfunc (mi *MessageInfo) checkInitializedPointer(p pointer) error {\n\tmi.init()\n\tif !mi.needsInitCheck {\n\t\treturn nil\n\t}\n\tif p.IsNil() {\n\t\tfor _, f := range mi.orderedCoderFields {\n\t\t\tif f.isRequired {\n\t\t\t\treturn errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName()))\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\n\tvar presence presence\n\tif mi.presenceOffset.IsValid() {\n\t\tpresence = p.Apply(mi.presenceOffset).PresenceInfo()\n\t}\n\n\tif mi.extensionOffset.IsValid() {\n\t\te := p.Apply(mi.extensionOffset).Extensions()\n\t\tif err := mi.isInitExtensions(e); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tfor _, f := range mi.orderedCoderFields {\n\t\tif !f.isRequired && f.funcs.isInit == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif f.presenceIndex != noPresence {\n\t\t\tif !presence.Present(f.presenceIndex) {\n\t\t\t\tif f.isRequired {\n\t\t\t\t\treturn errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName()))\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif f.funcs.isInit != nil {\n\t\t\t\tf.mi.init()\n\t\t\t\tif f.mi.needsInitCheck {\n\t\t\t\t\tif f.isLazy && p.Apply(f.offset).AtomicGetPointer().IsNil() {\n\t\t\t\t\t\tlazy := *p.Apply(mi.lazyOffset).LazyInfoPtr()\n\t\t\t\t\t\tif !lazy.AllowedPartial() {\n\t\t\t\t\t\t\t// Nothing to see here, it was checked on unmarshal\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmi.lazyUnmarshal(p, f.num)\n\t\t\t\t\t}\n\t\t\t\t\tif err := f.funcs.isInit(p.Apply(f.offset), f); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tfptr := p.Apply(f.offset)\n\t\tif f.isPointer && fptr.Elem().IsNil() {\n\t\t\tif f.isRequired {\n\t\t\t\treturn errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName()))\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif f.funcs.isInit == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif err := f.funcs.isInit(fptr, f); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (mi *MessageInfo) isInitExtensions(ext *map[int32]ExtensionField) error {\n\tif ext == nil {\n\t\treturn nil\n\t}\n\tfor _, x := range *ext {\n\t\tei := getExtensionFieldInfo(x.Type())\n\t\tif ei.funcs.isInit == nil || x.isUnexpandedLazy() {\n\t\t\tcontinue\n\t\t}\n\t\tv := x.Value()\n\t\tif !v.IsValid() {\n\t\t\tcontinue\n\t\t}\n\t\tif err := ei.funcs.isInit(v); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nvar (\n\tneedsInitCheckMu  sync.Mutex\n\tneedsInitCheckMap sync.Map\n)\n\n// needsInitCheck reports whether a message needs to be checked for partial initialization.\n//\n// It returns true if the message transitively includes any required or extension fields.\nfunc needsInitCheck(md protoreflect.MessageDescriptor) bool {\n\tif v, ok := needsInitCheckMap.Load(md); ok {\n\t\tif has, ok := v.(bool); ok {\n\t\t\treturn has\n\t\t}\n\t}\n\tneedsInitCheckMu.Lock()\n\tdefer needsInitCheckMu.Unlock()\n\treturn needsInitCheckLocked(md)\n}\n\nfunc needsInitCheckLocked(md protoreflect.MessageDescriptor) (has bool) {\n\tif v, ok := needsInitCheckMap.Load(md); ok {\n\t\t// If has is true, we've previously determined that this message\n\t\t// needs init checks.\n\t\t//\n\t\t// If has is false, we've previously determined that it can never\n\t\t// be uninitialized.\n\t\t//\n\t\t// If has is not a bool, we've just encountered a cycle in the\n\t\t// message graph. In this case, it is safe to return false: If\n\t\t// the message does have required fields, we'll detect them later\n\t\t// in the graph traversal.\n\t\thas, ok := v.(bool)\n\t\treturn ok && has\n\t}\n\tneedsInitCheckMap.Store(md, struct{}{}) // avoid cycles while descending into this message\n\tdefer func() {\n\t\tneedsInitCheckMap.Store(md, has)\n\t}()\n\tif md.RequiredNumbers().Len() > 0 {\n\t\treturn true\n\t}\n\tif md.ExtensionRanges().Len() > 0 {\n\t\treturn true\n\t}\n\tfor i := 0; i < md.Fields().Len(); i++ {\n\t\tfd := md.Fields().Get(i)\n\t\t// Map keys are never messages, so just consider the map value.\n\t\tif fd.IsMap() {\n\t\t\tfd = fd.MapValue()\n\t\t}\n\t\tfmd := fd.Message()\n\t\tif fmd != nil && needsInitCheckLocked(fmd) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_extension.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype extensionFieldInfo struct {\n\twiretag             uint64\n\ttagsize             int\n\tunmarshalNeedsValue bool\n\tfuncs               valueCoderFuncs\n\tvalidation          validationInfo\n}\n\nfunc getExtensionFieldInfo(xt protoreflect.ExtensionType) *extensionFieldInfo {\n\tif xi, ok := xt.(*ExtensionInfo); ok {\n\t\txi.lazyInit()\n\t\treturn xi.info\n\t}\n\t// Ideally we'd cache the resulting *extensionFieldInfo so we don't have to\n\t// recompute this metadata repeatedly. But without support for something like\n\t// weak references, such a cache would pin temporary values (like dynamic\n\t// extension types, constructed for the duration of a user request) to the\n\t// heap forever, causing memory usage of the cache to grow unbounded.\n\t// See discussion in https://github.com/golang/protobuf/issues/1521.\n\treturn makeExtensionFieldInfo(xt.TypeDescriptor())\n}\n\nfunc makeExtensionFieldInfo(xd protoreflect.ExtensionDescriptor) *extensionFieldInfo {\n\tvar wiretag uint64\n\tif !xd.IsPacked() {\n\t\twiretag = protowire.EncodeTag(xd.Number(), wireTypes[xd.Kind()])\n\t} else {\n\t\twiretag = protowire.EncodeTag(xd.Number(), protowire.BytesType)\n\t}\n\te := &extensionFieldInfo{\n\t\twiretag: wiretag,\n\t\ttagsize: protowire.SizeVarint(wiretag),\n\t\tfuncs:   encoderFuncsForValue(xd),\n\t}\n\t// Does the unmarshal function need a value passed to it?\n\t// This is true for composite types, where we pass in a message, list, or map to fill in,\n\t// and for enums, where we pass in a prototype value to specify the concrete enum type.\n\tswitch xd.Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind, protoreflect.EnumKind:\n\t\te.unmarshalNeedsValue = true\n\tdefault:\n\t\tif xd.Cardinality() == protoreflect.Repeated {\n\t\t\te.unmarshalNeedsValue = true\n\t\t}\n\t}\n\treturn e\n}\n\ntype lazyExtensionValue struct {\n\tatomicOnce uint32 // atomically set if value is valid\n\tmu         sync.Mutex\n\txi         *extensionFieldInfo\n\tvalue      protoreflect.Value\n\tb          []byte\n}\n\ntype ExtensionField struct {\n\ttyp protoreflect.ExtensionType\n\n\t// value is either the value of GetValue,\n\t// or a *lazyExtensionValue that then returns the value of GetValue.\n\tvalue protoreflect.Value\n\tlazy  *lazyExtensionValue\n}\n\nfunc (f *ExtensionField) appendLazyBytes(xt protoreflect.ExtensionType, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, b []byte) {\n\tif f.lazy == nil {\n\t\tf.lazy = &lazyExtensionValue{xi: xi}\n\t}\n\tf.typ = xt\n\tf.lazy.xi = xi\n\tf.lazy.b = protowire.AppendTag(f.lazy.b, num, wtyp)\n\tf.lazy.b = append(f.lazy.b, b...)\n}\n\nfunc (f *ExtensionField) canLazy(xt protoreflect.ExtensionType) bool {\n\tif f.typ == nil {\n\t\treturn true\n\t}\n\tif f.typ == xt && f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0 {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// isUnexpandedLazy returns true if the ExensionField is lazy and not\n// yet expanded, which means it's present and already checked for\n// initialized required fields.\nfunc (f *ExtensionField) isUnexpandedLazy() bool {\n\treturn f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0\n}\n\n// lazyBuffer retrieves the buffer for a lazy extension if it's not yet expanded.\n//\n// The returned buffer has to be kept over whatever operation we're planning,\n// as re-retrieving it will fail after the message is lazily decoded.\nfunc (f *ExtensionField) lazyBuffer() []byte {\n\t// This function might be in the critical path, so check the atomic without\n\t// taking a look first, then only take the lock if needed.\n\tif !f.isUnexpandedLazy() {\n\t\treturn nil\n\t}\n\tf.lazy.mu.Lock()\n\tdefer f.lazy.mu.Unlock()\n\treturn f.lazy.b\n}\n\nfunc (f *ExtensionField) lazyInit() {\n\tf.lazy.mu.Lock()\n\tdefer f.lazy.mu.Unlock()\n\tif atomic.LoadUint32(&f.lazy.atomicOnce) == 1 {\n\t\treturn\n\t}\n\tif f.lazy.xi != nil {\n\t\tb := f.lazy.b\n\t\tval := f.typ.New()\n\t\tfor len(b) > 0 {\n\t\t\tvar tag uint64\n\t\t\tif b[0] < 0x80 {\n\t\t\t\ttag = uint64(b[0])\n\t\t\t\tb = b[1:]\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\ttag = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tb = b[2:]\n\t\t\t} else {\n\t\t\t\tvar n int\n\t\t\t\ttag, n = protowire.ConsumeVarint(b)\n\t\t\t\tif n < 0 {\n\t\t\t\t\tpanic(errors.New(\"bad tag in lazy extension decoding\"))\n\t\t\t\t}\n\t\t\t\tb = b[n:]\n\t\t\t}\n\t\t\tnum := protowire.Number(tag >> 3)\n\t\t\twtyp := protowire.Type(tag & 7)\n\t\t\tvar out unmarshalOutput\n\t\t\tvar err error\n\t\t\tval, out, err = f.lazy.xi.funcs.unmarshal(b, val, num, wtyp, lazyUnmarshalOptions)\n\t\t\tif err != nil {\n\t\t\t\tpanic(errors.New(\"decode failure in lazy extension decoding: %v\", err))\n\t\t\t}\n\t\t\tb = b[out.n:]\n\t\t}\n\t\tf.lazy.value = val\n\t} else {\n\t\tpanic(\"No support for lazy fns for ExtensionField\")\n\t}\n\tf.lazy.xi = nil\n\tf.lazy.b = nil\n\tatomic.StoreUint32(&f.lazy.atomicOnce, 1)\n}\n\n// Set sets the type and value of the extension field.\n// This must not be called concurrently.\nfunc (f *ExtensionField) Set(t protoreflect.ExtensionType, v protoreflect.Value) {\n\tf.typ = t\n\tf.value = v\n\tf.lazy = nil\n}\n\n// Value returns the value of the extension field.\n// This may be called concurrently.\nfunc (f *ExtensionField) Value() protoreflect.Value {\n\tif f.lazy != nil {\n\t\tif atomic.LoadUint32(&f.lazy.atomicOnce) == 0 {\n\t\t\tf.lazyInit()\n\t\t}\n\t\treturn f.lazy.value\n\t}\n\treturn f.value\n}\n\n// Type returns the type of the extension field.\n// This may be called concurrently.\nfunc (f ExtensionField) Type() protoreflect.ExtensionType {\n\treturn f.typ\n}\n\n// IsSet returns whether the extension field is set.\n// This may be called concurrently.\nfunc (f ExtensionField) IsSet() bool {\n\treturn f.typ != nil\n}\n\n// IsLazy reports whether a field is lazily encoded.\n// It is exported for testing.\nfunc IsLazy(m protoreflect.Message, fd protoreflect.FieldDescriptor) bool {\n\tvar mi *MessageInfo\n\tvar p pointer\n\tswitch m := m.(type) {\n\tcase *messageState:\n\t\tmi = m.messageInfo()\n\t\tp = m.pointer()\n\tcase *messageReflectWrapper:\n\t\tmi = m.messageInfo()\n\t\tp = m.pointer()\n\tdefault:\n\t\treturn false\n\t}\n\txd, ok := fd.(protoreflect.ExtensionTypeDescriptor)\n\tif !ok {\n\t\treturn false\n\t}\n\txt := xd.Type()\n\text := mi.extensionMap(p)\n\tif ext == nil {\n\t\treturn false\n\t}\n\tf, ok := (*ext)[int32(fd.Number())]\n\tif !ok {\n\t\treturn false\n\t}\n\treturn f.typ == xt && f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_field.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\ntype errInvalidUTF8 struct{}\n\nfunc (errInvalidUTF8) Error() string     { return \"string field contains invalid UTF-8\" }\nfunc (errInvalidUTF8) InvalidUTF8() bool { return true }\nfunc (errInvalidUTF8) Unwrap() error     { return errors.Error }\n\n// initOneofFieldCoders initializes the fast-path functions for the fields in a oneof.\n//\n// For size, marshal, and isInit operations, functions are set only on the first field\n// in the oneof. The functions are called when the oneof is non-nil, and will dispatch\n// to the appropriate field-specific function as necessary.\n//\n// The unmarshal function is set on each field individually as usual.\nfunc (mi *MessageInfo) initOneofFieldCoders(od protoreflect.OneofDescriptor, si structInfo) {\n\tfs := si.oneofsByName[od.Name()]\n\tft := fs.Type\n\toneofFields := make(map[reflect.Type]*coderFieldInfo)\n\tneedIsInit := false\n\tfields := od.Fields()\n\tfor i, lim := 0, fields.Len(); i < lim; i++ {\n\t\tfd := od.Fields().Get(i)\n\t\tnum := fd.Number()\n\t\t// Make a copy of the original coderFieldInfo for use in unmarshaling.\n\t\t//\n\t\t// oneofFields[oneofType].funcs.marshal is the field-specific marshal function.\n\t\t//\n\t\t// mi.coderFields[num].marshal is set on only the first field in the oneof,\n\t\t// and dispatches to the field-specific marshaler in oneofFields.\n\t\tcf := *mi.coderFields[num]\n\t\tot := si.oneofWrappersByNumber[num]\n\t\tcf.ft = ot.Field(0).Type\n\t\tcf.mi, cf.funcs = fieldCoder(fd, cf.ft)\n\t\toneofFields[ot] = &cf\n\t\tif cf.funcs.isInit != nil {\n\t\t\tneedIsInit = true\n\t\t}\n\t\tmi.coderFields[num].funcs.unmarshal = func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\tvar vw reflect.Value         // pointer to wrapper type\n\t\t\tvi := p.AsValueOf(ft).Elem() // oneof field value of interface kind\n\t\t\tif !vi.IsNil() && !vi.Elem().IsNil() && vi.Elem().Elem().Type() == ot {\n\t\t\t\tvw = vi.Elem()\n\t\t\t} else {\n\t\t\t\tvw = reflect.New(ot)\n\t\t\t}\n\t\t\tout, err := cf.funcs.unmarshal(b, pointerOfValue(vw).Apply(zeroOffset), wtyp, &cf, opts)\n\t\t\tif err != nil {\n\t\t\t\treturn out, err\n\t\t\t}\n\t\t\tif cf.funcs.isInit == nil {\n\t\t\t\tout.initialized = true\n\t\t\t}\n\t\t\tvi.Set(vw)\n\t\t\treturn out, nil\n\t\t}\n\t}\n\tgetInfo := func(p pointer) (pointer, *coderFieldInfo) {\n\t\tv := p.AsValueOf(ft).Elem()\n\t\tif v.IsNil() {\n\t\t\treturn pointer{}, nil\n\t\t}\n\t\tv = v.Elem() // interface -> *struct\n\t\tif v.IsNil() {\n\t\t\treturn pointer{}, nil\n\t\t}\n\t\treturn pointerOfValue(v).Apply(zeroOffset), oneofFields[v.Elem().Type()]\n\t}\n\tfirst := mi.coderFields[od.Fields().Get(0).Number()]\n\tfirst.funcs.size = func(p pointer, _ *coderFieldInfo, opts marshalOptions) int {\n\t\tp, info := getInfo(p)\n\t\tif info == nil || info.funcs.size == nil {\n\t\t\treturn 0\n\t\t}\n\t\treturn info.funcs.size(p, info, opts)\n\t}\n\tfirst.funcs.marshal = func(b []byte, p pointer, _ *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\tp, info := getInfo(p)\n\t\tif info == nil || info.funcs.marshal == nil {\n\t\t\treturn b, nil\n\t\t}\n\t\treturn info.funcs.marshal(b, p, info, opts)\n\t}\n\tfirst.funcs.merge = func(dst, src pointer, _ *coderFieldInfo, opts mergeOptions) {\n\t\tsrcp, srcinfo := getInfo(src)\n\t\tif srcinfo == nil || srcinfo.funcs.merge == nil {\n\t\t\treturn\n\t\t}\n\t\tdstp, dstinfo := getInfo(dst)\n\t\tif dstinfo != srcinfo {\n\t\t\tdst.AsValueOf(ft).Elem().Set(reflect.New(src.AsValueOf(ft).Elem().Elem().Elem().Type()))\n\t\t\tdstp = pointerOfValue(dst.AsValueOf(ft).Elem().Elem()).Apply(zeroOffset)\n\t\t}\n\t\tsrcinfo.funcs.merge(dstp, srcp, srcinfo, opts)\n\t}\n\tif needIsInit {\n\t\tfirst.funcs.isInit = func(p pointer, _ *coderFieldInfo) error {\n\t\t\tp, info := getInfo(p)\n\t\t\tif info == nil || info.funcs.isInit == nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn info.funcs.isInit(p, info)\n\t\t}\n\t}\n}\n\nfunc makeMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {\n\tif mi := getMessageInfo(ft); mi != nil {\n\t\tfuncs := pointerCoderFuncs{\n\t\t\tsize:      sizeMessageInfo,\n\t\t\tmarshal:   appendMessageInfo,\n\t\t\tunmarshal: consumeMessageInfo,\n\t\t\tmerge:     mergeMessage,\n\t\t}\n\t\tif needsInitCheck(mi.Desc) {\n\t\t\tfuncs.isInit = isInitMessageInfo\n\t\t}\n\t\treturn funcs\n\t} else {\n\t\treturn pointerCoderFuncs{\n\t\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn sizeMessage(m, f.tagsize, opts)\n\t\t\t},\n\t\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn appendMessage(b, m, f.wiretag, opts)\n\t\t\t},\n\t\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\t\tmp := p.AsValueOf(ft).Elem()\n\t\t\t\tif mp.IsNil() {\n\t\t\t\t\tmp.Set(reflect.New(ft.Elem()))\n\t\t\t\t}\n\t\t\t\treturn consumeMessage(b, asMessage(mp), wtyp, opts)\n\t\t\t},\n\t\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn proto.CheckInitialized(m)\n\t\t\t},\n\t\t\tmerge: mergeMessage,\n\t\t}\n\t}\n}\n\nfunc sizeMessageInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\treturn protowire.SizeBytes(f.mi.sizePointer(p.Elem(), opts)) + f.tagsize\n}\n\nfunc appendMessageInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tcalculatedSize := f.mi.sizePointer(p.Elem(), opts)\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(calculatedSize))\n\tbefore := len(b)\n\tb, err := f.mi.marshalAppendPointer(b, p.Elem(), opts)\n\tif measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil {\n\t\treturn nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize)\n\t}\n\treturn b, err\n}\n\nfunc consumeMessageInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif p.Elem().IsNil() {\n\t\tp.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t}\n\to, err := f.mi.unmarshalPointer(v, p.Elem(), 0, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tout.n = n\n\tout.initialized = o.initialized\n\treturn out, nil\n}\n\nfunc isInitMessageInfo(p pointer, f *coderFieldInfo) error {\n\treturn f.mi.checkInitializedPointer(p.Elem())\n}\n\nfunc sizeMessage(m proto.Message, tagsize int, opts marshalOptions) int {\n\treturn protowire.SizeBytes(opts.Options().Size(m)) + tagsize\n}\n\nfunc appendMessage(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tmopts := opts.Options()\n\tcalculatedSize := mopts.Size(m)\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(calculatedSize))\n\tbefore := len(b)\n\tb, err := mopts.MarshalAppend(b, m)\n\tif measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil {\n\t\treturn nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize)\n\t}\n\treturn b, err\n}\n\nfunc consumeMessage(b []byte, m proto.Message, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     v,\n\t\tMessage: m.ProtoReflect(),\n\t})\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn out, nil\n}\n\nfunc sizeMessageValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\tm := v.Message().Interface()\n\treturn sizeMessage(m, tagsize, opts)\n}\n\nfunc appendMessageValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tm := v.Message().Interface()\n\treturn appendMessage(b, m, wiretag, opts)\n}\n\nfunc consumeMessageValue(b []byte, v protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) {\n\tm := v.Message().Interface()\n\tout, err := consumeMessage(b, m, wtyp, opts)\n\treturn v, out, err\n}\n\nfunc isInitMessageValue(v protoreflect.Value) error {\n\tm := v.Message().Interface()\n\treturn proto.CheckInitialized(m)\n}\n\nvar coderMessageValue = valueCoderFuncs{\n\tsize:      sizeMessageValue,\n\tmarshal:   appendMessageValue,\n\tunmarshal: consumeMessageValue,\n\tisInit:    isInitMessageValue,\n\tmerge:     mergeMessageValue,\n}\n\nfunc sizeGroupValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\tm := v.Message().Interface()\n\treturn sizeGroup(m, tagsize, opts)\n}\n\nfunc appendGroupValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tm := v.Message().Interface()\n\treturn appendGroup(b, m, wiretag, opts)\n}\n\nfunc consumeGroupValue(b []byte, v protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) {\n\tm := v.Message().Interface()\n\tout, err := consumeGroup(b, m, num, wtyp, opts)\n\treturn v, out, err\n}\n\nvar coderGroupValue = valueCoderFuncs{\n\tsize:      sizeGroupValue,\n\tmarshal:   appendGroupValue,\n\tunmarshal: consumeGroupValue,\n\tisInit:    isInitMessageValue,\n\tmerge:     mergeMessageValue,\n}\n\nfunc makeGroupFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {\n\tnum := fd.Number()\n\tif mi := getMessageInfo(ft); mi != nil {\n\t\tfuncs := pointerCoderFuncs{\n\t\t\tsize:      sizeGroupType,\n\t\t\tmarshal:   appendGroupType,\n\t\t\tunmarshal: consumeGroupType,\n\t\t\tmerge:     mergeMessage,\n\t\t}\n\t\tif needsInitCheck(mi.Desc) {\n\t\t\tfuncs.isInit = isInitMessageInfo\n\t\t}\n\t\treturn funcs\n\t} else {\n\t\treturn pointerCoderFuncs{\n\t\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn sizeGroup(m, f.tagsize, opts)\n\t\t\t},\n\t\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn appendGroup(b, m, f.wiretag, opts)\n\t\t\t},\n\t\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\t\tmp := p.AsValueOf(ft).Elem()\n\t\t\t\tif mp.IsNil() {\n\t\t\t\t\tmp.Set(reflect.New(ft.Elem()))\n\t\t\t\t}\n\t\t\t\treturn consumeGroup(b, asMessage(mp), num, wtyp, opts)\n\t\t\t},\n\t\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn proto.CheckInitialized(m)\n\t\t\t},\n\t\t\tmerge: mergeMessage,\n\t\t}\n\t}\n}\n\nfunc sizeGroupType(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\treturn 2*f.tagsize + f.mi.sizePointer(p.Elem(), opts)\n}\n\nfunc appendGroupType(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, f.wiretag) // start group\n\tb, err := f.mi.marshalAppendPointer(b, p.Elem(), opts)\n\tb = protowire.AppendVarint(b, f.wiretag+1) // end group\n\treturn b, err\n}\n\nfunc consumeGroupType(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn out, errUnknown\n\t}\n\tif p.Elem().IsNil() {\n\t\tp.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t}\n\treturn f.mi.unmarshalPointer(b, p.Elem(), f.num, opts)\n}\n\nfunc sizeGroup(m proto.Message, tagsize int, opts marshalOptions) int {\n\treturn 2*tagsize + opts.Options().Size(m)\n}\n\nfunc appendGroup(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag) // start group\n\tb, err := opts.Options().MarshalAppend(b, m)\n\tb = protowire.AppendVarint(b, wiretag+1) // end group\n\treturn b, err\n}\n\nfunc consumeGroup(b []byte, m proto.Message, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn out, errUnknown\n\t}\n\tb, n := protowire.ConsumeGroup(num, b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     b,\n\t\tMessage: m.ProtoReflect(),\n\t})\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn out, nil\n}\n\nfunc makeMessageSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {\n\tif mi := getMessageInfo(ft); mi != nil {\n\t\tfuncs := pointerCoderFuncs{\n\t\t\tsize:      sizeMessageSliceInfo,\n\t\t\tmarshal:   appendMessageSliceInfo,\n\t\t\tunmarshal: consumeMessageSliceInfo,\n\t\t\tmerge:     mergeMessageSlice,\n\t\t}\n\t\tif needsInitCheck(mi.Desc) {\n\t\t\tfuncs.isInit = isInitMessageSliceInfo\n\t\t}\n\t\treturn funcs\n\t}\n\treturn pointerCoderFuncs{\n\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\treturn sizeMessageSlice(p, ft, f.tagsize, opts)\n\t\t},\n\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\treturn appendMessageSlice(b, p, f.wiretag, ft, opts)\n\t\t},\n\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\treturn consumeMessageSlice(b, p, ft, wtyp, opts)\n\t\t},\n\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\treturn isInitMessageSlice(p, ft)\n\t\t},\n\t\tmerge: mergeMessageSlice,\n\t}\n}\n\nfunc sizeMessageSliceInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\ts := p.PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeBytes(f.mi.sizePointer(v, opts)) + f.tagsize\n\t}\n\treturn n\n}\n\nfunc appendMessageSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := p.PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tsiz := f.mi.sizePointer(v, opts)\n\t\tb = protowire.AppendVarint(b, uint64(siz))\n\t\tbefore := len(b)\n\t\tb, err = f.mi.marshalAppendPointer(b, v, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tif measuredSize := len(b) - before; siz != measuredSize {\n\t\t\treturn nil, errors.MismatchedSizeCalculation(siz, measuredSize)\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc consumeMessageSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tm := reflect.New(f.mi.GoReflectType.Elem()).Interface()\n\tmp := pointerOfIface(m)\n\to, err := f.mi.unmarshalPointer(v, mp, 0, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tp.AppendPointerSlice(mp)\n\tout.n = n\n\tout.initialized = o.initialized\n\treturn out, nil\n}\n\nfunc isInitMessageSliceInfo(p pointer, f *coderFieldInfo) error {\n\ts := p.PointerSlice()\n\tfor _, v := range s {\n\t\tif err := f.mi.checkInitializedPointer(v); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc sizeMessageSlice(p pointer, goType reflect.Type, tagsize int, opts marshalOptions) int {\n\tmopts := opts.Options()\n\ts := p.PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(goType.Elem()))\n\t\tn += protowire.SizeBytes(mopts.Size(m)) + tagsize\n\t}\n\treturn n\n}\n\nfunc appendMessageSlice(b []byte, p pointer, wiretag uint64, goType reflect.Type, opts marshalOptions) ([]byte, error) {\n\tmopts := opts.Options()\n\ts := p.PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(goType.Elem()))\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tsiz := mopts.Size(m)\n\t\tb = protowire.AppendVarint(b, uint64(siz))\n\t\tbefore := len(b)\n\t\tb, err = mopts.MarshalAppend(b, m)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tif measuredSize := len(b) - before; siz != measuredSize {\n\t\t\treturn nil, errors.MismatchedSizeCalculation(siz, measuredSize)\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc consumeMessageSlice(b []byte, p pointer, goType reflect.Type, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tmp := reflect.New(goType.Elem())\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     v,\n\t\tMessage: asMessage(mp).ProtoReflect(),\n\t})\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tp.AppendPointerSlice(pointerOfValue(mp))\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn out, nil\n}\n\nfunc isInitMessageSlice(p pointer, goType reflect.Type) error {\n\ts := p.PointerSlice()\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(goType.Elem()))\n\t\tif err := proto.CheckInitialized(m); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// Slices of messages\n\nfunc sizeMessageSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int {\n\tmopts := opts.Options()\n\tlist := listv.List()\n\tn := 0\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tn += protowire.SizeBytes(mopts.Size(m)) + tagsize\n\t}\n\treturn n\n}\n\nfunc appendMessageSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tmopts := opts.Options()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tsiz := mopts.Size(m)\n\t\tb = protowire.AppendVarint(b, uint64(siz))\n\t\tbefore := len(b)\n\t\tvar err error\n\t\tb, err = mopts.MarshalAppend(b, m)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tif measuredSize := len(b) - before; siz != measuredSize {\n\t\t\treturn nil, errors.MismatchedSizeCalculation(siz, measuredSize)\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc consumeMessageSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tm := list.NewElement()\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     v,\n\t\tMessage: m.Message(),\n\t})\n\tif err != nil {\n\t\treturn protoreflect.Value{}, out, err\n\t}\n\tlist.Append(m)\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn listv, out, nil\n}\n\nfunc isInitMessageSliceValue(listv protoreflect.Value) error {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tif err := proto.CheckInitialized(m); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nvar coderMessageSliceValue = valueCoderFuncs{\n\tsize:      sizeMessageSliceValue,\n\tmarshal:   appendMessageSliceValue,\n\tunmarshal: consumeMessageSliceValue,\n\tisInit:    isInitMessageSliceValue,\n\tmerge:     mergeMessageListValue,\n}\n\nfunc sizeGroupSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int {\n\tmopts := opts.Options()\n\tlist := listv.List()\n\tn := 0\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tn += 2*tagsize + mopts.Size(m)\n\t}\n\treturn n\n}\n\nfunc appendGroupSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tmopts := opts.Options()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tb = protowire.AppendVarint(b, wiretag) // start group\n\t\tvar err error\n\t\tb, err = mopts.MarshalAppend(b, m)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, wiretag+1) // end group\n\t}\n\treturn b, nil\n}\n\nfunc consumeGroupSliceValue(b []byte, listv protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp != protowire.StartGroupType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tb, n := protowire.ConsumeGroup(num, b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tm := list.NewElement()\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     b,\n\t\tMessage: m.Message(),\n\t})\n\tif err != nil {\n\t\treturn protoreflect.Value{}, out, err\n\t}\n\tlist.Append(m)\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn listv, out, nil\n}\n\nvar coderGroupSliceValue = valueCoderFuncs{\n\tsize:      sizeGroupSliceValue,\n\tmarshal:   appendGroupSliceValue,\n\tunmarshal: consumeGroupSliceValue,\n\tisInit:    isInitMessageSliceValue,\n\tmerge:     mergeMessageListValue,\n}\n\nfunc makeGroupSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {\n\tnum := fd.Number()\n\tif mi := getMessageInfo(ft); mi != nil {\n\t\tfuncs := pointerCoderFuncs{\n\t\t\tsize:      sizeGroupSliceInfo,\n\t\t\tmarshal:   appendGroupSliceInfo,\n\t\t\tunmarshal: consumeGroupSliceInfo,\n\t\t\tmerge:     mergeMessageSlice,\n\t\t}\n\t\tif needsInitCheck(mi.Desc) {\n\t\t\tfuncs.isInit = isInitMessageSliceInfo\n\t\t}\n\t\treturn funcs\n\t}\n\treturn pointerCoderFuncs{\n\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\treturn sizeGroupSlice(p, ft, f.tagsize, opts)\n\t\t},\n\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\treturn appendGroupSlice(b, p, f.wiretag, ft, opts)\n\t\t},\n\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\treturn consumeGroupSlice(b, p, num, wtyp, ft, opts)\n\t\t},\n\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\treturn isInitMessageSlice(p, ft)\n\t\t},\n\t\tmerge: mergeMessageSlice,\n\t}\n}\n\nfunc sizeGroupSlice(p pointer, messageType reflect.Type, tagsize int, opts marshalOptions) int {\n\tmopts := opts.Options()\n\ts := p.PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(messageType.Elem()))\n\t\tn += 2*tagsize + mopts.Size(m)\n\t}\n\treturn n\n}\n\nfunc appendGroupSlice(b []byte, p pointer, wiretag uint64, messageType reflect.Type, opts marshalOptions) ([]byte, error) {\n\ts := p.PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(messageType.Elem()))\n\t\tb = protowire.AppendVarint(b, wiretag) // start group\n\t\tb, err = opts.Options().MarshalAppend(b, m)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, wiretag+1) // end group\n\t}\n\treturn b, nil\n}\n\nfunc consumeGroupSlice(b []byte, p pointer, num protowire.Number, wtyp protowire.Type, goType reflect.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn out, errUnknown\n\t}\n\tb, n := protowire.ConsumeGroup(num, b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tmp := reflect.New(goType.Elem())\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     b,\n\t\tMessage: asMessage(mp).ProtoReflect(),\n\t})\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tp.AppendPointerSlice(pointerOfValue(mp))\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn out, nil\n}\n\nfunc sizeGroupSliceInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\ts := p.PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += 2*f.tagsize + f.mi.sizePointer(v, opts)\n\t}\n\treturn n\n}\n\nfunc appendGroupSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := p.PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag) // start group\n\t\tb, err = f.mi.marshalAppendPointer(b, v, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, f.wiretag+1) // end group\n\t}\n\treturn b, nil\n}\n\nfunc consumeGroupSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn unmarshalOutput{}, errUnknown\n\t}\n\tm := reflect.New(f.mi.GoReflectType.Elem()).Interface()\n\tmp := pointerOfIface(m)\n\tout, err := f.mi.unmarshalPointer(b, mp, f.num, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tp.AppendPointerSlice(mp)\n\treturn out, nil\n}\n\nfunc asMessage(v reflect.Value) protoreflect.ProtoMessage {\n\tif m, ok := v.Interface().(protoreflect.ProtoMessage); ok {\n\t\treturn m\n\t}\n\treturn legacyWrapMessage(v).Interface()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_field_opaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc makeOpaqueMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) {\n\tmi := getMessageInfo(ft)\n\tif mi == nil {\n\t\tpanic(fmt.Sprintf(\"invalid field: %v: unsupported message type %v\", fd.FullName(), ft))\n\t}\n\tswitch fd.Kind() {\n\tcase protoreflect.MessageKind:\n\t\treturn mi, pointerCoderFuncs{\n\t\t\tsize:      sizeOpaqueMessage,\n\t\t\tmarshal:   appendOpaqueMessage,\n\t\t\tunmarshal: consumeOpaqueMessage,\n\t\t\tisInit:    isInitOpaqueMessage,\n\t\t\tmerge:     mergeOpaqueMessage,\n\t\t}\n\tcase protoreflect.GroupKind:\n\t\treturn mi, pointerCoderFuncs{\n\t\t\tsize:      sizeOpaqueGroup,\n\t\t\tmarshal:   appendOpaqueGroup,\n\t\t\tunmarshal: consumeOpaqueGroup,\n\t\t\tisInit:    isInitOpaqueMessage,\n\t\t\tmerge:     mergeOpaqueMessage,\n\t\t}\n\t}\n\tpanic(\"unexpected field kind\")\n}\n\nfunc sizeOpaqueMessage(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn protowire.SizeBytes(f.mi.sizePointer(p.AtomicGetPointer(), opts)) + f.tagsize\n}\n\nfunc appendOpaqueMessage(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tmp := p.AtomicGetPointer()\n\tcalculatedSize := f.mi.sizePointer(mp, opts)\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(calculatedSize))\n\tbefore := len(b)\n\tb, err := f.mi.marshalAppendPointer(b, mp, opts)\n\tif measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil {\n\t\treturn nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize)\n\t}\n\treturn b, err\n}\n\nfunc consumeOpaqueMessage(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tmp := p.AtomicGetPointer()\n\tif mp.IsNil() {\n\t\tmp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t}\n\to, err := f.mi.unmarshalPointer(v, mp, 0, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tout.n = n\n\tout.initialized = o.initialized\n\treturn out, nil\n}\n\nfunc isInitOpaqueMessage(p pointer, f *coderFieldInfo) error {\n\tmp := p.AtomicGetPointer()\n\tif mp.IsNil() {\n\t\treturn nil\n\t}\n\treturn f.mi.checkInitializedPointer(mp)\n}\n\nfunc mergeOpaqueMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tdstmp := dst.AtomicGetPointer()\n\tif dstmp.IsNil() {\n\t\tdstmp = dst.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t}\n\tf.mi.mergePointer(dstmp, src.AtomicGetPointer(), opts)\n}\n\nfunc sizeOpaqueGroup(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn 2*f.tagsize + f.mi.sizePointer(p.AtomicGetPointer(), opts)\n}\n\nfunc appendOpaqueGroup(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, f.wiretag) // start group\n\tb, err := f.mi.marshalAppendPointer(b, p.AtomicGetPointer(), opts)\n\tb = protowire.AppendVarint(b, f.wiretag+1) // end group\n\treturn b, err\n}\n\nfunc consumeOpaqueGroup(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn out, errUnknown\n\t}\n\tmp := p.AtomicGetPointer()\n\tif mp.IsNil() {\n\t\tmp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t}\n\to, e := f.mi.unmarshalPointer(b, mp, f.num, opts)\n\treturn o, e\n}\n\nfunc makeOpaqueRepeatedMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) {\n\tif ft.Kind() != reflect.Ptr || ft.Elem().Kind() != reflect.Slice {\n\t\tpanic(fmt.Sprintf(\"invalid field: %v: unsupported type for opaque repeated message: %v\", fd.FullName(), ft))\n\t}\n\tmt := ft.Elem().Elem() // *[]*T -> *T\n\tmi := getMessageInfo(mt)\n\tif mi == nil {\n\t\tpanic(fmt.Sprintf(\"invalid field: %v: unsupported message type %v\", fd.FullName(), mt))\n\t}\n\tswitch fd.Kind() {\n\tcase protoreflect.MessageKind:\n\t\treturn mi, pointerCoderFuncs{\n\t\t\tsize:      sizeOpaqueMessageSlice,\n\t\t\tmarshal:   appendOpaqueMessageSlice,\n\t\t\tunmarshal: consumeOpaqueMessageSlice,\n\t\t\tisInit:    isInitOpaqueMessageSlice,\n\t\t\tmerge:     mergeOpaqueMessageSlice,\n\t\t}\n\tcase protoreflect.GroupKind:\n\t\treturn mi, pointerCoderFuncs{\n\t\t\tsize:      sizeOpaqueGroupSlice,\n\t\t\tmarshal:   appendOpaqueGroupSlice,\n\t\t\tunmarshal: consumeOpaqueGroupSlice,\n\t\t\tisInit:    isInitOpaqueMessageSlice,\n\t\t\tmerge:     mergeOpaqueMessageSlice,\n\t\t}\n\t}\n\tpanic(\"unexpected field kind\")\n}\n\nfunc sizeOpaqueMessageSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := p.AtomicGetPointer().PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeBytes(f.mi.sizePointer(v, opts)) + f.tagsize\n\t}\n\treturn n\n}\n\nfunc appendOpaqueMessageSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := p.AtomicGetPointer().PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tsiz := f.mi.sizePointer(v, opts)\n\t\tb = protowire.AppendVarint(b, uint64(siz))\n\t\tbefore := len(b)\n\t\tb, err = f.mi.marshalAppendPointer(b, v, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tif measuredSize := len(b) - before; siz != measuredSize {\n\t\t\treturn nil, errors.MismatchedSizeCalculation(siz, measuredSize)\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc consumeOpaqueMessageSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tmp := pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))\n\to, err := f.mi.unmarshalPointer(v, mp, 0, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tsp := p.AtomicGetPointer()\n\tif sp.IsNil() {\n\t\tsp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.ft.Elem())))\n\t}\n\tsp.AppendPointerSlice(mp)\n\tout.n = n\n\tout.initialized = o.initialized\n\treturn out, nil\n}\n\nfunc isInitOpaqueMessageSlice(p pointer, f *coderFieldInfo) error {\n\tsp := p.AtomicGetPointer()\n\tif sp.IsNil() {\n\t\treturn nil\n\t}\n\ts := sp.PointerSlice()\n\tfor _, v := range s {\n\t\tif err := f.mi.checkInitializedPointer(v); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc mergeOpaqueMessageSlice(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tds := dst.AtomicGetPointer()\n\tif ds.IsNil() {\n\t\tds = dst.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.ft.Elem())))\n\t}\n\tfor _, sp := range src.AtomicGetPointer().PointerSlice() {\n\t\tdm := pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))\n\t\tf.mi.mergePointer(dm, sp, opts)\n\t\tds.AppendPointerSlice(dm)\n\t}\n}\n\nfunc sizeOpaqueGroupSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := p.AtomicGetPointer().PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += 2*f.tagsize + f.mi.sizePointer(v, opts)\n\t}\n\treturn n\n}\n\nfunc appendOpaqueGroupSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := p.AtomicGetPointer().PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag) // start group\n\t\tb, err = f.mi.marshalAppendPointer(b, v, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, f.wiretag+1) // end group\n\t}\n\treturn b, nil\n}\n\nfunc consumeOpaqueGroupSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn out, errUnknown\n\t}\n\tmp := pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))\n\tout, err = f.mi.unmarshalPointer(b, mp, f.num, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tsp := p.AtomicGetPointer()\n\tif sp.IsNil() {\n\t\tsp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.ft.Elem())))\n\t}\n\tsp.AppendPointerSlice(mp)\n\treturn out, err\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage impl\n\nimport (\n\t\"math\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// sizeBool returns the size of wire encoding a bool pointer as a Bool.\nfunc sizeBool(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Bool()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))\n}\n\n// appendBool wire encodes a bool pointer as a Bool.\nfunc appendBool(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bool()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\treturn b, nil\n}\n\n// consumeBool wire decodes a bool pointer as a Bool.\nfunc consumeBool(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Bool() = protowire.DecodeBool(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBool = pointerCoderFuncs{\n\tsize:      sizeBool,\n\tmarshal:   appendBool,\n\tunmarshal: consumeBool,\n\tmerge:     mergeBool,\n}\n\n// sizeBoolNoZero returns the size of wire encoding a bool pointer as a Bool.\n// The zero value is not encoded.\nfunc sizeBoolNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Bool()\n\tif v == false {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))\n}\n\n// appendBoolNoZero wire encodes a bool pointer as a Bool.\n// The zero value is not encoded.\nfunc appendBoolNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bool()\n\tif v == false {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\treturn b, nil\n}\n\nvar coderBoolNoZero = pointerCoderFuncs{\n\tsize:      sizeBoolNoZero,\n\tmarshal:   appendBoolNoZero,\n\tunmarshal: consumeBool,\n\tmerge:     mergeBoolNoZero,\n}\n\n// sizeBoolPtr returns the size of wire encoding a *bool pointer as a Bool.\n// It panics if the pointer is nil.\nfunc sizeBoolPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.BoolPtr()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))\n}\n\n// appendBoolPtr wire encodes a *bool pointer as a Bool.\n// It panics if the pointer is nil.\nfunc appendBoolPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.BoolPtr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\treturn b, nil\n}\n\n// consumeBoolPtr wire decodes a *bool pointer as a Bool.\nfunc consumeBoolPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.BoolPtr()\n\tif *vp == nil {\n\t\t*vp = new(bool)\n\t}\n\t**vp = protowire.DecodeBool(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBoolPtr = pointerCoderFuncs{\n\tsize:      sizeBoolPtr,\n\tmarshal:   appendBoolPtr,\n\tunmarshal: consumeBoolPtr,\n\tmerge:     mergeBoolPtr,\n}\n\n// sizeBoolSlice returns the size of wire encoding a []bool pointer as a repeated Bool.\nfunc sizeBoolSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.BoolSlice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))\n\t}\n\treturn size\n}\n\n// appendBoolSlice encodes a []bool pointer as a repeated Bool.\nfunc appendBoolSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.BoolSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\t}\n\treturn b, nil\n}\n\n// consumeBoolSlice wire decodes a []bool pointer as a repeated Bool.\nfunc consumeBoolSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.BoolSlice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := 0\n\t\tfor _, v := range b {\n\t\t\tif v < 0x80 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tif count > 0 {\n\t\t\tp.growBoolSlice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, protowire.DecodeBool(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, protowire.DecodeBool(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBoolSlice = pointerCoderFuncs{\n\tsize:      sizeBoolSlice,\n\tmarshal:   appendBoolSlice,\n\tunmarshal: consumeBoolSlice,\n\tmerge:     mergeBoolSlice,\n}\n\n// sizeBoolPackedSlice returns the size of wire encoding a []bool pointer as a packed repeated Bool.\nfunc sizeBoolPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.BoolSlice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeBool(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendBoolPackedSlice encodes a []bool pointer as a packed repeated Bool.\nfunc appendBoolPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.BoolSlice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeBool(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\t}\n\treturn b, nil\n}\n\nvar coderBoolPackedSlice = pointerCoderFuncs{\n\tsize:      sizeBoolPackedSlice,\n\tmarshal:   appendBoolPackedSlice,\n\tunmarshal: consumeBoolSlice,\n\tmerge:     mergeBoolSlice,\n}\n\n// sizeBoolValue returns the size of wire encoding a bool value as a Bool.\nfunc sizeBoolValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n}\n\n// appendBoolValue encodes a bool value as a Bool.\nfunc appendBoolValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))\n\treturn b, nil\n}\n\n// consumeBoolValue decodes a bool value as a Bool.\nfunc consumeBoolValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfBool(protowire.DecodeBool(v)), out, nil\n}\n\nvar coderBoolValue = valueCoderFuncs{\n\tsize:      sizeBoolValue,\n\tmarshal:   appendBoolValue,\n\tunmarshal: consumeBoolValue,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeBoolSliceValue returns the size of wire encoding a []bool value as a repeated Bool.\nfunc sizeBoolSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n\t}\n\treturn size\n}\n\n// appendBoolSliceValue encodes a []bool value as a repeated Bool.\nfunc appendBoolSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))\n\t}\n\treturn b, nil\n}\n\n// consumeBoolSliceValue wire decodes a []bool value as a repeated Bool.\nfunc consumeBoolSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderBoolSliceValue = valueCoderFuncs{\n\tsize:      sizeBoolSliceValue,\n\tmarshal:   appendBoolSliceValue,\n\tunmarshal: consumeBoolSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeBoolPackedSliceValue returns the size of wire encoding a []bool value as a packed repeated Bool.\nfunc sizeBoolPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendBoolPackedSliceValue encodes a []bool value as a packed repeated Bool.\nfunc appendBoolPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))\n\t}\n\treturn b, nil\n}\n\nvar coderBoolPackedSliceValue = valueCoderFuncs{\n\tsize:      sizeBoolPackedSliceValue,\n\tmarshal:   appendBoolPackedSliceValue,\n\tunmarshal: consumeBoolSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeEnumValue returns the size of wire encoding a  value as a Enum.\nfunc sizeEnumValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(uint64(v.Enum()))\n}\n\n// appendEnumValue encodes a  value as a Enum.\nfunc appendEnumValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(v.Enum()))\n\treturn b, nil\n}\n\n// consumeEnumValue decodes a  value as a Enum.\nfunc consumeEnumValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), out, nil\n}\n\nvar coderEnumValue = valueCoderFuncs{\n\tsize:      sizeEnumValue,\n\tmarshal:   appendEnumValue,\n\tunmarshal: consumeEnumValue,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeEnumSliceValue returns the size of wire encoding a [] value as a repeated Enum.\nfunc sizeEnumSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(uint64(v.Enum()))\n\t}\n\treturn size\n}\n\n// appendEnumSliceValue encodes a [] value as a repeated Enum.\nfunc appendEnumSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v.Enum()))\n\t}\n\treturn b, nil\n}\n\n// consumeEnumSliceValue wire decodes a [] value as a repeated Enum.\nfunc consumeEnumSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderEnumSliceValue = valueCoderFuncs{\n\tsize:      sizeEnumSliceValue,\n\tmarshal:   appendEnumSliceValue,\n\tunmarshal: consumeEnumSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeEnumPackedSliceValue returns the size of wire encoding a [] value as a packed repeated Enum.\nfunc sizeEnumPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(v.Enum()))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendEnumPackedSliceValue encodes a [] value as a packed repeated Enum.\nfunc appendEnumPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(v.Enum()))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, uint64(v.Enum()))\n\t}\n\treturn b, nil\n}\n\nvar coderEnumPackedSliceValue = valueCoderFuncs{\n\tsize:      sizeEnumPackedSliceValue,\n\tmarshal:   appendEnumPackedSliceValue,\n\tunmarshal: consumeEnumSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeInt32 returns the size of wire encoding a int32 pointer as a Int32.\nfunc sizeInt32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt32 wire encodes a int32 pointer as a Int32.\nfunc appendInt32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeInt32 wire decodes a int32 pointer as a Int32.\nfunc consumeInt32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int32() = int32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt32 = pointerCoderFuncs{\n\tsize:      sizeInt32,\n\tmarshal:   appendInt32,\n\tunmarshal: consumeInt32,\n\tmerge:     mergeInt32,\n}\n\n// sizeInt32NoZero returns the size of wire encoding a int32 pointer as a Int32.\n// The zero value is not encoded.\nfunc sizeInt32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt32NoZero wire encodes a int32 pointer as a Int32.\n// The zero value is not encoded.\nfunc appendInt32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\nvar coderInt32NoZero = pointerCoderFuncs{\n\tsize:      sizeInt32NoZero,\n\tmarshal:   appendInt32NoZero,\n\tunmarshal: consumeInt32,\n\tmerge:     mergeInt32NoZero,\n}\n\n// sizeInt32Ptr returns the size of wire encoding a *int32 pointer as a Int32.\n// It panics if the pointer is nil.\nfunc sizeInt32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Int32Ptr()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt32Ptr wire encodes a *int32 pointer as a Int32.\n// It panics if the pointer is nil.\nfunc appendInt32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeInt32Ptr wire decodes a *int32 pointer as a Int32.\nfunc consumeInt32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int32)\n\t}\n\t**vp = int32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt32Ptr = pointerCoderFuncs{\n\tsize:      sizeInt32Ptr,\n\tmarshal:   appendInt32Ptr,\n\tunmarshal: consumeInt32Ptr,\n\tmerge:     mergeInt32Ptr,\n}\n\n// sizeInt32Slice returns the size of wire encoding a []int32 pointer as a repeated Int32.\nfunc sizeInt32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(uint64(v))\n\t}\n\treturn size\n}\n\n// appendInt32Slice encodes a []int32 pointer as a repeated Int32.\nfunc appendInt32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\n// consumeInt32Slice wire decodes a []int32 pointer as a repeated Int32.\nfunc consumeInt32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int32Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := 0\n\t\tfor _, v := range b {\n\t\t\tif v < 0x80 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tif count > 0 {\n\t\t\tp.growInt32Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int32(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int32(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt32Slice = pointerCoderFuncs{\n\tsize:      sizeInt32Slice,\n\tmarshal:   appendInt32Slice,\n\tunmarshal: consumeInt32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeInt32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Int32.\nfunc sizeInt32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendInt32PackedSlice encodes a []int32 pointer as a packed repeated Int32.\nfunc appendInt32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\nvar coderInt32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeInt32PackedSlice,\n\tmarshal:   appendInt32PackedSlice,\n\tunmarshal: consumeInt32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeInt32Value returns the size of wire encoding a int32 value as a Int32.\nfunc sizeInt32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(uint64(int32(v.Int())))\n}\n\n// appendInt32Value encodes a int32 value as a Int32.\nfunc appendInt32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(int32(v.Int())))\n\treturn b, nil\n}\n\n// consumeInt32Value decodes a int32 value as a Int32.\nfunc consumeInt32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt32(int32(v)), out, nil\n}\n\nvar coderInt32Value = valueCoderFuncs{\n\tsize:      sizeInt32Value,\n\tmarshal:   appendInt32Value,\n\tunmarshal: consumeInt32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeInt32SliceValue returns the size of wire encoding a []int32 value as a repeated Int32.\nfunc sizeInt32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(uint64(int32(v.Int())))\n\t}\n\treturn size\n}\n\n// appendInt32SliceValue encodes a []int32 value as a repeated Int32.\nfunc appendInt32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(int32(v.Int())))\n\t}\n\treturn b, nil\n}\n\n// consumeInt32SliceValue wire decodes a []int32 value as a repeated Int32.\nfunc consumeInt32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderInt32SliceValue = valueCoderFuncs{\n\tsize:      sizeInt32SliceValue,\n\tmarshal:   appendInt32SliceValue,\n\tunmarshal: consumeInt32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeInt32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Int32.\nfunc sizeInt32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(int32(v.Int())))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendInt32PackedSliceValue encodes a []int32 value as a packed repeated Int32.\nfunc appendInt32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(int32(v.Int())))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, uint64(int32(v.Int())))\n\t}\n\treturn b, nil\n}\n\nvar coderInt32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeInt32PackedSliceValue,\n\tmarshal:   appendInt32PackedSliceValue,\n\tunmarshal: consumeInt32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSint32 returns the size of wire encoding a int32 pointer as a Sint32.\nfunc sizeSint32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n}\n\n// appendSint32 wire encodes a int32 pointer as a Sint32.\nfunc appendSint32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\treturn b, nil\n}\n\n// consumeSint32 wire decodes a int32 pointer as a Sint32.\nfunc consumeSint32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int32() = int32(protowire.DecodeZigZag(v & math.MaxUint32))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint32 = pointerCoderFuncs{\n\tsize:      sizeSint32,\n\tmarshal:   appendSint32,\n\tunmarshal: consumeSint32,\n\tmerge:     mergeInt32,\n}\n\n// sizeSint32NoZero returns the size of wire encoding a int32 pointer as a Sint32.\n// The zero value is not encoded.\nfunc sizeSint32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n}\n\n// appendSint32NoZero wire encodes a int32 pointer as a Sint32.\n// The zero value is not encoded.\nfunc appendSint32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\treturn b, nil\n}\n\nvar coderSint32NoZero = pointerCoderFuncs{\n\tsize:      sizeSint32NoZero,\n\tmarshal:   appendSint32NoZero,\n\tunmarshal: consumeSint32,\n\tmerge:     mergeInt32NoZero,\n}\n\n// sizeSint32Ptr returns the size of wire encoding a *int32 pointer as a Sint32.\n// It panics if the pointer is nil.\nfunc sizeSint32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Int32Ptr()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n}\n\n// appendSint32Ptr wire encodes a *int32 pointer as a Sint32.\n// It panics if the pointer is nil.\nfunc appendSint32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\treturn b, nil\n}\n\n// consumeSint32Ptr wire decodes a *int32 pointer as a Sint32.\nfunc consumeSint32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int32)\n\t}\n\t**vp = int32(protowire.DecodeZigZag(v & math.MaxUint32))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint32Ptr = pointerCoderFuncs{\n\tsize:      sizeSint32Ptr,\n\tmarshal:   appendSint32Ptr,\n\tunmarshal: consumeSint32Ptr,\n\tmerge:     mergeInt32Ptr,\n}\n\n// sizeSint32Slice returns the size of wire encoding a []int32 pointer as a repeated Sint32.\nfunc sizeSint32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n\t}\n\treturn size\n}\n\n// appendSint32Slice encodes a []int32 pointer as a repeated Sint32.\nfunc appendSint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\t}\n\treturn b, nil\n}\n\n// consumeSint32Slice wire decodes a []int32 pointer as a repeated Sint32.\nfunc consumeSint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int32Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := 0\n\t\tfor _, v := range b {\n\t\t\tif v < 0x80 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tif count > 0 {\n\t\t\tp.growInt32Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int32(protowire.DecodeZigZag(v&math.MaxUint32)))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int32(protowire.DecodeZigZag(v&math.MaxUint32)))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint32Slice = pointerCoderFuncs{\n\tsize:      sizeSint32Slice,\n\tmarshal:   appendSint32Slice,\n\tunmarshal: consumeSint32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeSint32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sint32.\nfunc sizeSint32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendSint32PackedSlice encodes a []int32 pointer as a packed repeated Sint32.\nfunc appendSint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\t}\n\treturn b, nil\n}\n\nvar coderSint32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeSint32PackedSlice,\n\tmarshal:   appendSint32PackedSlice,\n\tunmarshal: consumeSint32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeSint32Value returns the size of wire encoding a int32 value as a Sint32.\nfunc sizeSint32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n}\n\n// appendSint32Value encodes a int32 value as a Sint32.\nfunc appendSint32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))\n\treturn b, nil\n}\n\n// consumeSint32Value decodes a int32 value as a Sint32.\nfunc consumeSint32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))), out, nil\n}\n\nvar coderSint32Value = valueCoderFuncs{\n\tsize:      sizeSint32Value,\n\tmarshal:   appendSint32Value,\n\tunmarshal: consumeSint32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeSint32SliceValue returns the size of wire encoding a []int32 value as a repeated Sint32.\nfunc sizeSint32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\treturn size\n}\n\n// appendSint32SliceValue encodes a []int32 value as a repeated Sint32.\nfunc appendSint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\treturn b, nil\n}\n\n// consumeSint32SliceValue wire decodes a []int32 value as a repeated Sint32.\nfunc consumeSint32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderSint32SliceValue = valueCoderFuncs{\n\tsize:      sizeSint32SliceValue,\n\tmarshal:   appendSint32SliceValue,\n\tunmarshal: consumeSint32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSint32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sint32.\nfunc sizeSint32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendSint32PackedSliceValue encodes a []int32 value as a packed repeated Sint32.\nfunc appendSint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\treturn b, nil\n}\n\nvar coderSint32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeSint32PackedSliceValue,\n\tmarshal:   appendSint32PackedSliceValue,\n\tunmarshal: consumeSint32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeUint32 returns the size of wire encoding a uint32 pointer as a Uint32.\nfunc sizeUint32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint32()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendUint32 wire encodes a uint32 pointer as a Uint32.\nfunc appendUint32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeUint32 wire decodes a uint32 pointer as a Uint32.\nfunc consumeUint32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Uint32() = uint32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint32 = pointerCoderFuncs{\n\tsize:      sizeUint32,\n\tmarshal:   appendUint32,\n\tunmarshal: consumeUint32,\n\tmerge:     mergeUint32,\n}\n\n// sizeUint32NoZero returns the size of wire encoding a uint32 pointer as a Uint32.\n// The zero value is not encoded.\nfunc sizeUint32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendUint32NoZero wire encodes a uint32 pointer as a Uint32.\n// The zero value is not encoded.\nfunc appendUint32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\nvar coderUint32NoZero = pointerCoderFuncs{\n\tsize:      sizeUint32NoZero,\n\tmarshal:   appendUint32NoZero,\n\tunmarshal: consumeUint32,\n\tmerge:     mergeUint32NoZero,\n}\n\n// sizeUint32Ptr returns the size of wire encoding a *uint32 pointer as a Uint32.\n// It panics if the pointer is nil.\nfunc sizeUint32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Uint32Ptr()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendUint32Ptr wire encodes a *uint32 pointer as a Uint32.\n// It panics if the pointer is nil.\nfunc appendUint32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Uint32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeUint32Ptr wire decodes a *uint32 pointer as a Uint32.\nfunc consumeUint32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Uint32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(uint32)\n\t}\n\t**vp = uint32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint32Ptr = pointerCoderFuncs{\n\tsize:      sizeUint32Ptr,\n\tmarshal:   appendUint32Ptr,\n\tunmarshal: consumeUint32Ptr,\n\tmerge:     mergeUint32Ptr,\n}\n\n// sizeUint32Slice returns the size of wire encoding a []uint32 pointer as a repeated Uint32.\nfunc sizeUint32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint32Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(uint64(v))\n\t}\n\treturn size\n}\n\n// appendUint32Slice encodes a []uint32 pointer as a repeated Uint32.\nfunc appendUint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\n// consumeUint32Slice wire decodes a []uint32 pointer as a repeated Uint32.\nfunc consumeUint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Uint32Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := 0\n\t\tfor _, v := range b {\n\t\t\tif v < 0x80 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tif count > 0 {\n\t\t\tp.growUint32Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, uint32(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, uint32(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint32Slice = pointerCoderFuncs{\n\tsize:      sizeUint32Slice,\n\tmarshal:   appendUint32Slice,\n\tunmarshal: consumeUint32Slice,\n\tmerge:     mergeUint32Slice,\n}\n\n// sizeUint32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Uint32.\nfunc sizeUint32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendUint32PackedSlice encodes a []uint32 pointer as a packed repeated Uint32.\nfunc appendUint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\nvar coderUint32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeUint32PackedSlice,\n\tmarshal:   appendUint32PackedSlice,\n\tunmarshal: consumeUint32Slice,\n\tmerge:     mergeUint32Slice,\n}\n\n// sizeUint32Value returns the size of wire encoding a uint32 value as a Uint32.\nfunc sizeUint32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(uint64(uint32(v.Uint())))\n}\n\n// appendUint32Value encodes a uint32 value as a Uint32.\nfunc appendUint32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(uint32(v.Uint())))\n\treturn b, nil\n}\n\n// consumeUint32Value decodes a uint32 value as a Uint32.\nfunc consumeUint32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfUint32(uint32(v)), out, nil\n}\n\nvar coderUint32Value = valueCoderFuncs{\n\tsize:      sizeUint32Value,\n\tmarshal:   appendUint32Value,\n\tunmarshal: consumeUint32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeUint32SliceValue returns the size of wire encoding a []uint32 value as a repeated Uint32.\nfunc sizeUint32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(uint64(uint32(v.Uint())))\n\t}\n\treturn size\n}\n\n// appendUint32SliceValue encodes a []uint32 value as a repeated Uint32.\nfunc appendUint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(uint32(v.Uint())))\n\t}\n\treturn b, nil\n}\n\n// consumeUint32SliceValue wire decodes a []uint32 value as a repeated Uint32.\nfunc consumeUint32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderUint32SliceValue = valueCoderFuncs{\n\tsize:      sizeUint32SliceValue,\n\tmarshal:   appendUint32SliceValue,\n\tunmarshal: consumeUint32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeUint32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Uint32.\nfunc sizeUint32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(uint32(v.Uint())))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendUint32PackedSliceValue encodes a []uint32 value as a packed repeated Uint32.\nfunc appendUint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(uint32(v.Uint())))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, uint64(uint32(v.Uint())))\n\t}\n\treturn b, nil\n}\n\nvar coderUint32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeUint32PackedSliceValue,\n\tmarshal:   appendUint32PackedSliceValue,\n\tunmarshal: consumeUint32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeInt64 returns the size of wire encoding a int64 pointer as a Int64.\nfunc sizeInt64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt64 wire encodes a int64 pointer as a Int64.\nfunc appendInt64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeInt64 wire decodes a int64 pointer as a Int64.\nfunc consumeInt64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int64() = int64(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt64 = pointerCoderFuncs{\n\tsize:      sizeInt64,\n\tmarshal:   appendInt64,\n\tunmarshal: consumeInt64,\n\tmerge:     mergeInt64,\n}\n\n// sizeInt64NoZero returns the size of wire encoding a int64 pointer as a Int64.\n// The zero value is not encoded.\nfunc sizeInt64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt64NoZero wire encodes a int64 pointer as a Int64.\n// The zero value is not encoded.\nfunc appendInt64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\nvar coderInt64NoZero = pointerCoderFuncs{\n\tsize:      sizeInt64NoZero,\n\tmarshal:   appendInt64NoZero,\n\tunmarshal: consumeInt64,\n\tmerge:     mergeInt64NoZero,\n}\n\n// sizeInt64Ptr returns the size of wire encoding a *int64 pointer as a Int64.\n// It panics if the pointer is nil.\nfunc sizeInt64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Int64Ptr()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt64Ptr wire encodes a *int64 pointer as a Int64.\n// It panics if the pointer is nil.\nfunc appendInt64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeInt64Ptr wire decodes a *int64 pointer as a Int64.\nfunc consumeInt64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int64)\n\t}\n\t**vp = int64(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt64Ptr = pointerCoderFuncs{\n\tsize:      sizeInt64Ptr,\n\tmarshal:   appendInt64Ptr,\n\tunmarshal: consumeInt64Ptr,\n\tmerge:     mergeInt64Ptr,\n}\n\n// sizeInt64Slice returns the size of wire encoding a []int64 pointer as a repeated Int64.\nfunc sizeInt64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(uint64(v))\n\t}\n\treturn size\n}\n\n// appendInt64Slice encodes a []int64 pointer as a repeated Int64.\nfunc appendInt64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\n// consumeInt64Slice wire decodes a []int64 pointer as a repeated Int64.\nfunc consumeInt64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int64Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := 0\n\t\tfor _, v := range b {\n\t\t\tif v < 0x80 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tif count > 0 {\n\t\t\tp.growInt64Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int64(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int64(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt64Slice = pointerCoderFuncs{\n\tsize:      sizeInt64Slice,\n\tmarshal:   appendInt64Slice,\n\tunmarshal: consumeInt64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeInt64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Int64.\nfunc sizeInt64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendInt64PackedSlice encodes a []int64 pointer as a packed repeated Int64.\nfunc appendInt64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\nvar coderInt64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeInt64PackedSlice,\n\tmarshal:   appendInt64PackedSlice,\n\tunmarshal: consumeInt64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeInt64Value returns the size of wire encoding a int64 value as a Int64.\nfunc sizeInt64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(uint64(v.Int()))\n}\n\n// appendInt64Value encodes a int64 value as a Int64.\nfunc appendInt64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(v.Int()))\n\treturn b, nil\n}\n\n// consumeInt64Value decodes a int64 value as a Int64.\nfunc consumeInt64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt64(int64(v)), out, nil\n}\n\nvar coderInt64Value = valueCoderFuncs{\n\tsize:      sizeInt64Value,\n\tmarshal:   appendInt64Value,\n\tunmarshal: consumeInt64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeInt64SliceValue returns the size of wire encoding a []int64 value as a repeated Int64.\nfunc sizeInt64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(uint64(v.Int()))\n\t}\n\treturn size\n}\n\n// appendInt64SliceValue encodes a []int64 value as a repeated Int64.\nfunc appendInt64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v.Int()))\n\t}\n\treturn b, nil\n}\n\n// consumeInt64SliceValue wire decodes a []int64 value as a repeated Int64.\nfunc consumeInt64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderInt64SliceValue = valueCoderFuncs{\n\tsize:      sizeInt64SliceValue,\n\tmarshal:   appendInt64SliceValue,\n\tunmarshal: consumeInt64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeInt64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Int64.\nfunc sizeInt64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(v.Int()))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendInt64PackedSliceValue encodes a []int64 value as a packed repeated Int64.\nfunc appendInt64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(v.Int()))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, uint64(v.Int()))\n\t}\n\treturn b, nil\n}\n\nvar coderInt64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeInt64PackedSliceValue,\n\tmarshal:   appendInt64PackedSliceValue,\n\tunmarshal: consumeInt64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSint64 returns the size of wire encoding a int64 pointer as a Sint64.\nfunc sizeSint64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))\n}\n\n// appendSint64 wire encodes a int64 pointer as a Sint64.\nfunc appendSint64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\treturn b, nil\n}\n\n// consumeSint64 wire decodes a int64 pointer as a Sint64.\nfunc consumeSint64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int64() = protowire.DecodeZigZag(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint64 = pointerCoderFuncs{\n\tsize:      sizeSint64,\n\tmarshal:   appendSint64,\n\tunmarshal: consumeSint64,\n\tmerge:     mergeInt64,\n}\n\n// sizeSint64NoZero returns the size of wire encoding a int64 pointer as a Sint64.\n// The zero value is not encoded.\nfunc sizeSint64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))\n}\n\n// appendSint64NoZero wire encodes a int64 pointer as a Sint64.\n// The zero value is not encoded.\nfunc appendSint64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\treturn b, nil\n}\n\nvar coderSint64NoZero = pointerCoderFuncs{\n\tsize:      sizeSint64NoZero,\n\tmarshal:   appendSint64NoZero,\n\tunmarshal: consumeSint64,\n\tmerge:     mergeInt64NoZero,\n}\n\n// sizeSint64Ptr returns the size of wire encoding a *int64 pointer as a Sint64.\n// It panics if the pointer is nil.\nfunc sizeSint64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Int64Ptr()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))\n}\n\n// appendSint64Ptr wire encodes a *int64 pointer as a Sint64.\n// It panics if the pointer is nil.\nfunc appendSint64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\treturn b, nil\n}\n\n// consumeSint64Ptr wire decodes a *int64 pointer as a Sint64.\nfunc consumeSint64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int64)\n\t}\n\t**vp = protowire.DecodeZigZag(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint64Ptr = pointerCoderFuncs{\n\tsize:      sizeSint64Ptr,\n\tmarshal:   appendSint64Ptr,\n\tunmarshal: consumeSint64Ptr,\n\tmerge:     mergeInt64Ptr,\n}\n\n// sizeSint64Slice returns the size of wire encoding a []int64 pointer as a repeated Sint64.\nfunc sizeSint64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))\n\t}\n\treturn size\n}\n\n// appendSint64Slice encodes a []int64 pointer as a repeated Sint64.\nfunc appendSint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\t}\n\treturn b, nil\n}\n\n// consumeSint64Slice wire decodes a []int64 pointer as a repeated Sint64.\nfunc consumeSint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int64Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := 0\n\t\tfor _, v := range b {\n\t\t\tif v < 0x80 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tif count > 0 {\n\t\t\tp.growInt64Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, protowire.DecodeZigZag(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, protowire.DecodeZigZag(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint64Slice = pointerCoderFuncs{\n\tsize:      sizeSint64Slice,\n\tmarshal:   appendSint64Slice,\n\tunmarshal: consumeSint64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeSint64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sint64.\nfunc sizeSint64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendSint64PackedSlice encodes a []int64 pointer as a packed repeated Sint64.\nfunc appendSint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\t}\n\treturn b, nil\n}\n\nvar coderSint64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeSint64PackedSlice,\n\tmarshal:   appendSint64PackedSlice,\n\tunmarshal: consumeSint64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeSint64Value returns the size of wire encoding a int64 value as a Sint64.\nfunc sizeSint64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n}\n\n// appendSint64Value encodes a int64 value as a Sint64.\nfunc appendSint64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))\n\treturn b, nil\n}\n\n// consumeSint64Value decodes a int64 value as a Sint64.\nfunc consumeSint64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)), out, nil\n}\n\nvar coderSint64Value = valueCoderFuncs{\n\tsize:      sizeSint64Value,\n\tmarshal:   appendSint64Value,\n\tunmarshal: consumeSint64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeSint64SliceValue returns the size of wire encoding a []int64 value as a repeated Sint64.\nfunc sizeSint64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n\t}\n\treturn size\n}\n\n// appendSint64SliceValue encodes a []int64 value as a repeated Sint64.\nfunc appendSint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))\n\t}\n\treturn b, nil\n}\n\n// consumeSint64SliceValue wire decodes a []int64 value as a repeated Sint64.\nfunc consumeSint64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderSint64SliceValue = valueCoderFuncs{\n\tsize:      sizeSint64SliceValue,\n\tmarshal:   appendSint64SliceValue,\n\tunmarshal: consumeSint64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSint64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sint64.\nfunc sizeSint64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendSint64PackedSliceValue encodes a []int64 value as a packed repeated Sint64.\nfunc appendSint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))\n\t}\n\treturn b, nil\n}\n\nvar coderSint64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeSint64PackedSliceValue,\n\tmarshal:   appendSint64PackedSliceValue,\n\tunmarshal: consumeSint64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeUint64 returns the size of wire encoding a uint64 pointer as a Uint64.\nfunc sizeUint64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint64()\n\treturn f.tagsize + protowire.SizeVarint(v)\n}\n\n// appendUint64 wire encodes a uint64 pointer as a Uint64.\nfunc appendUint64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, v)\n\treturn b, nil\n}\n\n// consumeUint64 wire decodes a uint64 pointer as a Uint64.\nfunc consumeUint64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Uint64() = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint64 = pointerCoderFuncs{\n\tsize:      sizeUint64,\n\tmarshal:   appendUint64,\n\tunmarshal: consumeUint64,\n\tmerge:     mergeUint64,\n}\n\n// sizeUint64NoZero returns the size of wire encoding a uint64 pointer as a Uint64.\n// The zero value is not encoded.\nfunc sizeUint64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(v)\n}\n\n// appendUint64NoZero wire encodes a uint64 pointer as a Uint64.\n// The zero value is not encoded.\nfunc appendUint64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, v)\n\treturn b, nil\n}\n\nvar coderUint64NoZero = pointerCoderFuncs{\n\tsize:      sizeUint64NoZero,\n\tmarshal:   appendUint64NoZero,\n\tunmarshal: consumeUint64,\n\tmerge:     mergeUint64NoZero,\n}\n\n// sizeUint64Ptr returns the size of wire encoding a *uint64 pointer as a Uint64.\n// It panics if the pointer is nil.\nfunc sizeUint64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Uint64Ptr()\n\treturn f.tagsize + protowire.SizeVarint(v)\n}\n\n// appendUint64Ptr wire encodes a *uint64 pointer as a Uint64.\n// It panics if the pointer is nil.\nfunc appendUint64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Uint64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, v)\n\treturn b, nil\n}\n\n// consumeUint64Ptr wire decodes a *uint64 pointer as a Uint64.\nfunc consumeUint64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Uint64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(uint64)\n\t}\n\t**vp = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint64Ptr = pointerCoderFuncs{\n\tsize:      sizeUint64Ptr,\n\tmarshal:   appendUint64Ptr,\n\tunmarshal: consumeUint64Ptr,\n\tmerge:     mergeUint64Ptr,\n}\n\n// sizeUint64Slice returns the size of wire encoding a []uint64 pointer as a repeated Uint64.\nfunc sizeUint64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint64Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(v)\n\t}\n\treturn size\n}\n\n// appendUint64Slice encodes a []uint64 pointer as a repeated Uint64.\nfunc appendUint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeUint64Slice wire decodes a []uint64 pointer as a repeated Uint64.\nfunc consumeUint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Uint64Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := 0\n\t\tfor _, v := range b {\n\t\t\tif v < 0x80 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tif count > 0 {\n\t\t\tp.growUint64Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, v)\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint64Slice = pointerCoderFuncs{\n\tsize:      sizeUint64Slice,\n\tmarshal:   appendUint64Slice,\n\tunmarshal: consumeUint64Slice,\n\tmerge:     mergeUint64Slice,\n}\n\n// sizeUint64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Uint64.\nfunc sizeUint64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(v)\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendUint64PackedSlice encodes a []uint64 pointer as a packed repeated Uint64.\nfunc appendUint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(v)\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, v)\n\t}\n\treturn b, nil\n}\n\nvar coderUint64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeUint64PackedSlice,\n\tmarshal:   appendUint64PackedSlice,\n\tunmarshal: consumeUint64Slice,\n\tmerge:     mergeUint64Slice,\n}\n\n// sizeUint64Value returns the size of wire encoding a uint64 value as a Uint64.\nfunc sizeUint64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(v.Uint())\n}\n\n// appendUint64Value encodes a uint64 value as a Uint64.\nfunc appendUint64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, v.Uint())\n\treturn b, nil\n}\n\n// consumeUint64Value decodes a uint64 value as a Uint64.\nfunc consumeUint64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfUint64(v), out, nil\n}\n\nvar coderUint64Value = valueCoderFuncs{\n\tsize:      sizeUint64Value,\n\tmarshal:   appendUint64Value,\n\tunmarshal: consumeUint64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeUint64SliceValue returns the size of wire encoding a []uint64 value as a repeated Uint64.\nfunc sizeUint64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(v.Uint())\n\t}\n\treturn size\n}\n\n// appendUint64SliceValue encodes a []uint64 value as a repeated Uint64.\nfunc appendUint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, v.Uint())\n\t}\n\treturn b, nil\n}\n\n// consumeUint64SliceValue wire decodes a []uint64 value as a repeated Uint64.\nfunc consumeUint64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfUint64(v))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderUint64SliceValue = valueCoderFuncs{\n\tsize:      sizeUint64SliceValue,\n\tmarshal:   appendUint64SliceValue,\n\tunmarshal: consumeUint64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeUint64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Uint64.\nfunc sizeUint64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(v.Uint())\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendUint64PackedSliceValue encodes a []uint64 value as a packed repeated Uint64.\nfunc appendUint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(v.Uint())\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, v.Uint())\n\t}\n\treturn b, nil\n}\n\nvar coderUint64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeUint64PackedSliceValue,\n\tmarshal:   appendUint64PackedSliceValue,\n\tunmarshal: consumeUint64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSfixed32 returns the size of wire encoding a int32 pointer as a Sfixed32.\nfunc sizeSfixed32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendSfixed32 wire encodes a int32 pointer as a Sfixed32.\nfunc appendSfixed32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v))\n\treturn b, nil\n}\n\n// consumeSfixed32 wire decodes a int32 pointer as a Sfixed32.\nfunc consumeSfixed32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int32() = int32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed32 = pointerCoderFuncs{\n\tsize:      sizeSfixed32,\n\tmarshal:   appendSfixed32,\n\tunmarshal: consumeSfixed32,\n\tmerge:     mergeInt32,\n}\n\n// sizeSfixed32NoZero returns the size of wire encoding a int32 pointer as a Sfixed32.\n// The zero value is not encoded.\nfunc sizeSfixed32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendSfixed32NoZero wire encodes a int32 pointer as a Sfixed32.\n// The zero value is not encoded.\nfunc appendSfixed32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v))\n\treturn b, nil\n}\n\nvar coderSfixed32NoZero = pointerCoderFuncs{\n\tsize:      sizeSfixed32NoZero,\n\tmarshal:   appendSfixed32NoZero,\n\tunmarshal: consumeSfixed32,\n\tmerge:     mergeInt32NoZero,\n}\n\n// sizeSfixed32Ptr returns the size of wire encoding a *int32 pointer as a Sfixed32.\n// It panics if the pointer is nil.\nfunc sizeSfixed32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendSfixed32Ptr wire encodes a *int32 pointer as a Sfixed32.\n// It panics if the pointer is nil.\nfunc appendSfixed32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v))\n\treturn b, nil\n}\n\n// consumeSfixed32Ptr wire decodes a *int32 pointer as a Sfixed32.\nfunc consumeSfixed32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int32)\n\t}\n\t**vp = int32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed32Ptr = pointerCoderFuncs{\n\tsize:      sizeSfixed32Ptr,\n\tmarshal:   appendSfixed32Ptr,\n\tunmarshal: consumeSfixed32Ptr,\n\tmerge:     mergeInt32Ptr,\n}\n\n// sizeSfixed32Slice returns the size of wire encoding a []int32 pointer as a repeated Sfixed32.\nfunc sizeSfixed32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendSfixed32Slice encodes a []int32 pointer as a repeated Sfixed32.\nfunc appendSfixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed32(b, uint32(v))\n\t}\n\treturn b, nil\n}\n\n// consumeSfixed32Slice wire decodes a []int32 pointer as a repeated Sfixed32.\nfunc consumeSfixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int32Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := len(b) / protowire.SizeFixed32()\n\t\tif count > 0 {\n\t\t\tp.growInt32Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int32(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int32(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed32Slice = pointerCoderFuncs{\n\tsize:      sizeSfixed32Slice,\n\tmarshal:   appendSfixed32Slice,\n\tunmarshal: consumeSfixed32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeSfixed32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sfixed32.\nfunc sizeSfixed32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed32()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendSfixed32PackedSlice encodes a []int32 pointer as a packed repeated Sfixed32.\nfunc appendSfixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed32(b, uint32(v))\n\t}\n\treturn b, nil\n}\n\nvar coderSfixed32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeSfixed32PackedSlice,\n\tmarshal:   appendSfixed32PackedSlice,\n\tunmarshal: consumeSfixed32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeSfixed32Value returns the size of wire encoding a int32 value as a Sfixed32.\nfunc sizeSfixed32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed32()\n}\n\n// appendSfixed32Value encodes a int32 value as a Sfixed32.\nfunc appendSfixed32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v.Int()))\n\treturn b, nil\n}\n\n// consumeSfixed32Value decodes a int32 value as a Sfixed32.\nfunc consumeSfixed32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt32(int32(v)), out, nil\n}\n\nvar coderSfixed32Value = valueCoderFuncs{\n\tsize:      sizeSfixed32Value,\n\tmarshal:   appendSfixed32Value,\n\tunmarshal: consumeSfixed32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeSfixed32SliceValue returns the size of wire encoding a []int32 value as a repeated Sfixed32.\nfunc sizeSfixed32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendSfixed32SliceValue encodes a []int32 value as a repeated Sfixed32.\nfunc appendSfixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed32(b, uint32(v.Int()))\n\t}\n\treturn b, nil\n}\n\n// consumeSfixed32SliceValue wire decodes a []int32 value as a repeated Sfixed32.\nfunc consumeSfixed32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderSfixed32SliceValue = valueCoderFuncs{\n\tsize:      sizeSfixed32SliceValue,\n\tmarshal:   appendSfixed32SliceValue,\n\tunmarshal: consumeSfixed32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSfixed32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sfixed32.\nfunc sizeSfixed32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed32()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendSfixed32PackedSliceValue encodes a []int32 value as a packed repeated Sfixed32.\nfunc appendSfixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed32(b, uint32(v.Int()))\n\t}\n\treturn b, nil\n}\n\nvar coderSfixed32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeSfixed32PackedSliceValue,\n\tmarshal:   appendSfixed32PackedSliceValue,\n\tunmarshal: consumeSfixed32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFixed32 returns the size of wire encoding a uint32 pointer as a Fixed32.\nfunc sizeFixed32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFixed32 wire encodes a uint32 pointer as a Fixed32.\nfunc appendFixed32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, v)\n\treturn b, nil\n}\n\n// consumeFixed32 wire decodes a uint32 pointer as a Fixed32.\nfunc consumeFixed32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Uint32() = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed32 = pointerCoderFuncs{\n\tsize:      sizeFixed32,\n\tmarshal:   appendFixed32,\n\tunmarshal: consumeFixed32,\n\tmerge:     mergeUint32,\n}\n\n// sizeFixed32NoZero returns the size of wire encoding a uint32 pointer as a Fixed32.\n// The zero value is not encoded.\nfunc sizeFixed32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFixed32NoZero wire encodes a uint32 pointer as a Fixed32.\n// The zero value is not encoded.\nfunc appendFixed32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, v)\n\treturn b, nil\n}\n\nvar coderFixed32NoZero = pointerCoderFuncs{\n\tsize:      sizeFixed32NoZero,\n\tmarshal:   appendFixed32NoZero,\n\tunmarshal: consumeFixed32,\n\tmerge:     mergeUint32NoZero,\n}\n\n// sizeFixed32Ptr returns the size of wire encoding a *uint32 pointer as a Fixed32.\n// It panics if the pointer is nil.\nfunc sizeFixed32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFixed32Ptr wire encodes a *uint32 pointer as a Fixed32.\n// It panics if the pointer is nil.\nfunc appendFixed32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Uint32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, v)\n\treturn b, nil\n}\n\n// consumeFixed32Ptr wire decodes a *uint32 pointer as a Fixed32.\nfunc consumeFixed32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Uint32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(uint32)\n\t}\n\t**vp = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed32Ptr = pointerCoderFuncs{\n\tsize:      sizeFixed32Ptr,\n\tmarshal:   appendFixed32Ptr,\n\tunmarshal: consumeFixed32Ptr,\n\tmerge:     mergeUint32Ptr,\n}\n\n// sizeFixed32Slice returns the size of wire encoding a []uint32 pointer as a repeated Fixed32.\nfunc sizeFixed32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint32Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendFixed32Slice encodes a []uint32 pointer as a repeated Fixed32.\nfunc appendFixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed32(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeFixed32Slice wire decodes a []uint32 pointer as a repeated Fixed32.\nfunc consumeFixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Uint32Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := len(b) / protowire.SizeFixed32()\n\t\tif count > 0 {\n\t\t\tp.growUint32Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, v)\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed32Slice = pointerCoderFuncs{\n\tsize:      sizeFixed32Slice,\n\tmarshal:   appendFixed32Slice,\n\tunmarshal: consumeFixed32Slice,\n\tmerge:     mergeUint32Slice,\n}\n\n// sizeFixed32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Fixed32.\nfunc sizeFixed32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed32()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendFixed32PackedSlice encodes a []uint32 pointer as a packed repeated Fixed32.\nfunc appendFixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed32(b, v)\n\t}\n\treturn b, nil\n}\n\nvar coderFixed32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeFixed32PackedSlice,\n\tmarshal:   appendFixed32PackedSlice,\n\tunmarshal: consumeFixed32Slice,\n\tmerge:     mergeUint32Slice,\n}\n\n// sizeFixed32Value returns the size of wire encoding a uint32 value as a Fixed32.\nfunc sizeFixed32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed32()\n}\n\n// appendFixed32Value encodes a uint32 value as a Fixed32.\nfunc appendFixed32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v.Uint()))\n\treturn b, nil\n}\n\n// consumeFixed32Value decodes a uint32 value as a Fixed32.\nfunc consumeFixed32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfUint32(uint32(v)), out, nil\n}\n\nvar coderFixed32Value = valueCoderFuncs{\n\tsize:      sizeFixed32Value,\n\tmarshal:   appendFixed32Value,\n\tunmarshal: consumeFixed32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeFixed32SliceValue returns the size of wire encoding a []uint32 value as a repeated Fixed32.\nfunc sizeFixed32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendFixed32SliceValue encodes a []uint32 value as a repeated Fixed32.\nfunc appendFixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed32(b, uint32(v.Uint()))\n\t}\n\treturn b, nil\n}\n\n// consumeFixed32SliceValue wire decodes a []uint32 value as a repeated Fixed32.\nfunc consumeFixed32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderFixed32SliceValue = valueCoderFuncs{\n\tsize:      sizeFixed32SliceValue,\n\tmarshal:   appendFixed32SliceValue,\n\tunmarshal: consumeFixed32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFixed32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Fixed32.\nfunc sizeFixed32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed32()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendFixed32PackedSliceValue encodes a []uint32 value as a packed repeated Fixed32.\nfunc appendFixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed32(b, uint32(v.Uint()))\n\t}\n\treturn b, nil\n}\n\nvar coderFixed32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeFixed32PackedSliceValue,\n\tmarshal:   appendFixed32PackedSliceValue,\n\tunmarshal: consumeFixed32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFloat returns the size of wire encoding a float32 pointer as a Float.\nfunc sizeFloat(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFloat wire encodes a float32 pointer as a Float.\nfunc appendFloat(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Float32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\treturn b, nil\n}\n\n// consumeFloat wire decodes a float32 pointer as a Float.\nfunc consumeFloat(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Float32() = math.Float32frombits(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFloat = pointerCoderFuncs{\n\tsize:      sizeFloat,\n\tmarshal:   appendFloat,\n\tunmarshal: consumeFloat,\n\tmerge:     mergeFloat32,\n}\n\n// sizeFloatNoZero returns the size of wire encoding a float32 pointer as a Float.\n// The zero value is not encoded.\nfunc sizeFloatNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Float32()\n\tif v == 0 && !math.Signbit(float64(v)) {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFloatNoZero wire encodes a float32 pointer as a Float.\n// The zero value is not encoded.\nfunc appendFloatNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Float32()\n\tif v == 0 && !math.Signbit(float64(v)) {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\treturn b, nil\n}\n\nvar coderFloatNoZero = pointerCoderFuncs{\n\tsize:      sizeFloatNoZero,\n\tmarshal:   appendFloatNoZero,\n\tunmarshal: consumeFloat,\n\tmerge:     mergeFloat32NoZero,\n}\n\n// sizeFloatPtr returns the size of wire encoding a *float32 pointer as a Float.\n// It panics if the pointer is nil.\nfunc sizeFloatPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFloatPtr wire encodes a *float32 pointer as a Float.\n// It panics if the pointer is nil.\nfunc appendFloatPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Float32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\treturn b, nil\n}\n\n// consumeFloatPtr wire decodes a *float32 pointer as a Float.\nfunc consumeFloatPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Float32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(float32)\n\t}\n\t**vp = math.Float32frombits(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFloatPtr = pointerCoderFuncs{\n\tsize:      sizeFloatPtr,\n\tmarshal:   appendFloatPtr,\n\tunmarshal: consumeFloatPtr,\n\tmerge:     mergeFloat32Ptr,\n}\n\n// sizeFloatSlice returns the size of wire encoding a []float32 pointer as a repeated Float.\nfunc sizeFloatSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Float32Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendFloatSlice encodes a []float32 pointer as a repeated Float.\nfunc appendFloatSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Float32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\t}\n\treturn b, nil\n}\n\n// consumeFloatSlice wire decodes a []float32 pointer as a repeated Float.\nfunc consumeFloatSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Float32Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := len(b) / protowire.SizeFixed32()\n\t\tif count > 0 {\n\t\t\tp.growFloat32Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, math.Float32frombits(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, math.Float32frombits(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFloatSlice = pointerCoderFuncs{\n\tsize:      sizeFloatSlice,\n\tmarshal:   appendFloatSlice,\n\tunmarshal: consumeFloatSlice,\n\tmerge:     mergeFloat32Slice,\n}\n\n// sizeFloatPackedSlice returns the size of wire encoding a []float32 pointer as a packed repeated Float.\nfunc sizeFloatPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Float32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed32()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendFloatPackedSlice encodes a []float32 pointer as a packed repeated Float.\nfunc appendFloatPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Float32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\t}\n\treturn b, nil\n}\n\nvar coderFloatPackedSlice = pointerCoderFuncs{\n\tsize:      sizeFloatPackedSlice,\n\tmarshal:   appendFloatPackedSlice,\n\tunmarshal: consumeFloatSlice,\n\tmerge:     mergeFloat32Slice,\n}\n\n// sizeFloatValue returns the size of wire encoding a float32 value as a Float.\nfunc sizeFloatValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed32()\n}\n\n// appendFloatValue encodes a float32 value as a Float.\nfunc appendFloatValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))\n\treturn b, nil\n}\n\n// consumeFloatValue decodes a float32 value as a Float.\nfunc consumeFloatValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), out, nil\n}\n\nvar coderFloatValue = valueCoderFuncs{\n\tsize:      sizeFloatValue,\n\tmarshal:   appendFloatValue,\n\tunmarshal: consumeFloatValue,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeFloatSliceValue returns the size of wire encoding a []float32 value as a repeated Float.\nfunc sizeFloatSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendFloatSliceValue encodes a []float32 value as a repeated Float.\nfunc appendFloatSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))\n\t}\n\treturn b, nil\n}\n\n// consumeFloatSliceValue wire decodes a []float32 value as a repeated Float.\nfunc consumeFloatSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderFloatSliceValue = valueCoderFuncs{\n\tsize:      sizeFloatSliceValue,\n\tmarshal:   appendFloatSliceValue,\n\tunmarshal: consumeFloatSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFloatPackedSliceValue returns the size of wire encoding a []float32 value as a packed repeated Float.\nfunc sizeFloatPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed32()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendFloatPackedSliceValue encodes a []float32 value as a packed repeated Float.\nfunc appendFloatPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))\n\t}\n\treturn b, nil\n}\n\nvar coderFloatPackedSliceValue = valueCoderFuncs{\n\tsize:      sizeFloatPackedSliceValue,\n\tmarshal:   appendFloatPackedSliceValue,\n\tunmarshal: consumeFloatSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSfixed64 returns the size of wire encoding a int64 pointer as a Sfixed64.\nfunc sizeSfixed64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendSfixed64 wire encodes a int64 pointer as a Sfixed64.\nfunc appendSfixed64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeSfixed64 wire decodes a int64 pointer as a Sfixed64.\nfunc consumeSfixed64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int64() = int64(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed64 = pointerCoderFuncs{\n\tsize:      sizeSfixed64,\n\tmarshal:   appendSfixed64,\n\tunmarshal: consumeSfixed64,\n\tmerge:     mergeInt64,\n}\n\n// sizeSfixed64NoZero returns the size of wire encoding a int64 pointer as a Sfixed64.\n// The zero value is not encoded.\nfunc sizeSfixed64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendSfixed64NoZero wire encodes a int64 pointer as a Sfixed64.\n// The zero value is not encoded.\nfunc appendSfixed64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, uint64(v))\n\treturn b, nil\n}\n\nvar coderSfixed64NoZero = pointerCoderFuncs{\n\tsize:      sizeSfixed64NoZero,\n\tmarshal:   appendSfixed64NoZero,\n\tunmarshal: consumeSfixed64,\n\tmerge:     mergeInt64NoZero,\n}\n\n// sizeSfixed64Ptr returns the size of wire encoding a *int64 pointer as a Sfixed64.\n// It panics if the pointer is nil.\nfunc sizeSfixed64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendSfixed64Ptr wire encodes a *int64 pointer as a Sfixed64.\n// It panics if the pointer is nil.\nfunc appendSfixed64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeSfixed64Ptr wire decodes a *int64 pointer as a Sfixed64.\nfunc consumeSfixed64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int64)\n\t}\n\t**vp = int64(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed64Ptr = pointerCoderFuncs{\n\tsize:      sizeSfixed64Ptr,\n\tmarshal:   appendSfixed64Ptr,\n\tunmarshal: consumeSfixed64Ptr,\n\tmerge:     mergeInt64Ptr,\n}\n\n// sizeSfixed64Slice returns the size of wire encoding a []int64 pointer as a repeated Sfixed64.\nfunc sizeSfixed64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendSfixed64Slice encodes a []int64 pointer as a repeated Sfixed64.\nfunc appendSfixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed64(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\n// consumeSfixed64Slice wire decodes a []int64 pointer as a repeated Sfixed64.\nfunc consumeSfixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int64Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := len(b) / protowire.SizeFixed64()\n\t\tif count > 0 {\n\t\t\tp.growInt64Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int64(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int64(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed64Slice = pointerCoderFuncs{\n\tsize:      sizeSfixed64Slice,\n\tmarshal:   appendSfixed64Slice,\n\tunmarshal: consumeSfixed64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeSfixed64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sfixed64.\nfunc sizeSfixed64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed64()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendSfixed64PackedSlice encodes a []int64 pointer as a packed repeated Sfixed64.\nfunc appendSfixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed64(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\nvar coderSfixed64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeSfixed64PackedSlice,\n\tmarshal:   appendSfixed64PackedSlice,\n\tunmarshal: consumeSfixed64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeSfixed64Value returns the size of wire encoding a int64 value as a Sfixed64.\nfunc sizeSfixed64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed64()\n}\n\n// appendSfixed64Value encodes a int64 value as a Sfixed64.\nfunc appendSfixed64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed64(b, uint64(v.Int()))\n\treturn b, nil\n}\n\n// consumeSfixed64Value decodes a int64 value as a Sfixed64.\nfunc consumeSfixed64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt64(int64(v)), out, nil\n}\n\nvar coderSfixed64Value = valueCoderFuncs{\n\tsize:      sizeSfixed64Value,\n\tmarshal:   appendSfixed64Value,\n\tunmarshal: consumeSfixed64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeSfixed64SliceValue returns the size of wire encoding a []int64 value as a repeated Sfixed64.\nfunc sizeSfixed64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendSfixed64SliceValue encodes a []int64 value as a repeated Sfixed64.\nfunc appendSfixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed64(b, uint64(v.Int()))\n\t}\n\treturn b, nil\n}\n\n// consumeSfixed64SliceValue wire decodes a []int64 value as a repeated Sfixed64.\nfunc consumeSfixed64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderSfixed64SliceValue = valueCoderFuncs{\n\tsize:      sizeSfixed64SliceValue,\n\tmarshal:   appendSfixed64SliceValue,\n\tunmarshal: consumeSfixed64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSfixed64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sfixed64.\nfunc sizeSfixed64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed64()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendSfixed64PackedSliceValue encodes a []int64 value as a packed repeated Sfixed64.\nfunc appendSfixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed64(b, uint64(v.Int()))\n\t}\n\treturn b, nil\n}\n\nvar coderSfixed64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeSfixed64PackedSliceValue,\n\tmarshal:   appendSfixed64PackedSliceValue,\n\tunmarshal: consumeSfixed64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFixed64 returns the size of wire encoding a uint64 pointer as a Fixed64.\nfunc sizeFixed64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendFixed64 wire encodes a uint64 pointer as a Fixed64.\nfunc appendFixed64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, v)\n\treturn b, nil\n}\n\n// consumeFixed64 wire decodes a uint64 pointer as a Fixed64.\nfunc consumeFixed64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Uint64() = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed64 = pointerCoderFuncs{\n\tsize:      sizeFixed64,\n\tmarshal:   appendFixed64,\n\tunmarshal: consumeFixed64,\n\tmerge:     mergeUint64,\n}\n\n// sizeFixed64NoZero returns the size of wire encoding a uint64 pointer as a Fixed64.\n// The zero value is not encoded.\nfunc sizeFixed64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendFixed64NoZero wire encodes a uint64 pointer as a Fixed64.\n// The zero value is not encoded.\nfunc appendFixed64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, v)\n\treturn b, nil\n}\n\nvar coderFixed64NoZero = pointerCoderFuncs{\n\tsize:      sizeFixed64NoZero,\n\tmarshal:   appendFixed64NoZero,\n\tunmarshal: consumeFixed64,\n\tmerge:     mergeUint64NoZero,\n}\n\n// sizeFixed64Ptr returns the size of wire encoding a *uint64 pointer as a Fixed64.\n// It panics if the pointer is nil.\nfunc sizeFixed64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendFixed64Ptr wire encodes a *uint64 pointer as a Fixed64.\n// It panics if the pointer is nil.\nfunc appendFixed64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Uint64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, v)\n\treturn b, nil\n}\n\n// consumeFixed64Ptr wire decodes a *uint64 pointer as a Fixed64.\nfunc consumeFixed64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Uint64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(uint64)\n\t}\n\t**vp = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed64Ptr = pointerCoderFuncs{\n\tsize:      sizeFixed64Ptr,\n\tmarshal:   appendFixed64Ptr,\n\tunmarshal: consumeFixed64Ptr,\n\tmerge:     mergeUint64Ptr,\n}\n\n// sizeFixed64Slice returns the size of wire encoding a []uint64 pointer as a repeated Fixed64.\nfunc sizeFixed64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint64Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendFixed64Slice encodes a []uint64 pointer as a repeated Fixed64.\nfunc appendFixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed64(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeFixed64Slice wire decodes a []uint64 pointer as a repeated Fixed64.\nfunc consumeFixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Uint64Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := len(b) / protowire.SizeFixed64()\n\t\tif count > 0 {\n\t\t\tp.growUint64Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, v)\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed64Slice = pointerCoderFuncs{\n\tsize:      sizeFixed64Slice,\n\tmarshal:   appendFixed64Slice,\n\tunmarshal: consumeFixed64Slice,\n\tmerge:     mergeUint64Slice,\n}\n\n// sizeFixed64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Fixed64.\nfunc sizeFixed64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed64()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendFixed64PackedSlice encodes a []uint64 pointer as a packed repeated Fixed64.\nfunc appendFixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed64(b, v)\n\t}\n\treturn b, nil\n}\n\nvar coderFixed64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeFixed64PackedSlice,\n\tmarshal:   appendFixed64PackedSlice,\n\tunmarshal: consumeFixed64Slice,\n\tmerge:     mergeUint64Slice,\n}\n\n// sizeFixed64Value returns the size of wire encoding a uint64 value as a Fixed64.\nfunc sizeFixed64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed64()\n}\n\n// appendFixed64Value encodes a uint64 value as a Fixed64.\nfunc appendFixed64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed64(b, v.Uint())\n\treturn b, nil\n}\n\n// consumeFixed64Value decodes a uint64 value as a Fixed64.\nfunc consumeFixed64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfUint64(v), out, nil\n}\n\nvar coderFixed64Value = valueCoderFuncs{\n\tsize:      sizeFixed64Value,\n\tmarshal:   appendFixed64Value,\n\tunmarshal: consumeFixed64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeFixed64SliceValue returns the size of wire encoding a []uint64 value as a repeated Fixed64.\nfunc sizeFixed64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendFixed64SliceValue encodes a []uint64 value as a repeated Fixed64.\nfunc appendFixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed64(b, v.Uint())\n\t}\n\treturn b, nil\n}\n\n// consumeFixed64SliceValue wire decodes a []uint64 value as a repeated Fixed64.\nfunc consumeFixed64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfUint64(v))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderFixed64SliceValue = valueCoderFuncs{\n\tsize:      sizeFixed64SliceValue,\n\tmarshal:   appendFixed64SliceValue,\n\tunmarshal: consumeFixed64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFixed64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Fixed64.\nfunc sizeFixed64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed64()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendFixed64PackedSliceValue encodes a []uint64 value as a packed repeated Fixed64.\nfunc appendFixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed64(b, v.Uint())\n\t}\n\treturn b, nil\n}\n\nvar coderFixed64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeFixed64PackedSliceValue,\n\tmarshal:   appendFixed64PackedSliceValue,\n\tunmarshal: consumeFixed64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeDouble returns the size of wire encoding a float64 pointer as a Double.\nfunc sizeDouble(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendDouble wire encodes a float64 pointer as a Double.\nfunc appendDouble(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Float64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\treturn b, nil\n}\n\n// consumeDouble wire decodes a float64 pointer as a Double.\nfunc consumeDouble(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Float64() = math.Float64frombits(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderDouble = pointerCoderFuncs{\n\tsize:      sizeDouble,\n\tmarshal:   appendDouble,\n\tunmarshal: consumeDouble,\n\tmerge:     mergeFloat64,\n}\n\n// sizeDoubleNoZero returns the size of wire encoding a float64 pointer as a Double.\n// The zero value is not encoded.\nfunc sizeDoubleNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Float64()\n\tif v == 0 && !math.Signbit(float64(v)) {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendDoubleNoZero wire encodes a float64 pointer as a Double.\n// The zero value is not encoded.\nfunc appendDoubleNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Float64()\n\tif v == 0 && !math.Signbit(float64(v)) {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\treturn b, nil\n}\n\nvar coderDoubleNoZero = pointerCoderFuncs{\n\tsize:      sizeDoubleNoZero,\n\tmarshal:   appendDoubleNoZero,\n\tunmarshal: consumeDouble,\n\tmerge:     mergeFloat64NoZero,\n}\n\n// sizeDoublePtr returns the size of wire encoding a *float64 pointer as a Double.\n// It panics if the pointer is nil.\nfunc sizeDoublePtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendDoublePtr wire encodes a *float64 pointer as a Double.\n// It panics if the pointer is nil.\nfunc appendDoublePtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Float64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\treturn b, nil\n}\n\n// consumeDoublePtr wire decodes a *float64 pointer as a Double.\nfunc consumeDoublePtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Float64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(float64)\n\t}\n\t**vp = math.Float64frombits(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderDoublePtr = pointerCoderFuncs{\n\tsize:      sizeDoublePtr,\n\tmarshal:   appendDoublePtr,\n\tunmarshal: consumeDoublePtr,\n\tmerge:     mergeFloat64Ptr,\n}\n\n// sizeDoubleSlice returns the size of wire encoding a []float64 pointer as a repeated Double.\nfunc sizeDoubleSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Float64Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendDoubleSlice encodes a []float64 pointer as a repeated Double.\nfunc appendDoubleSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Float64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\t}\n\treturn b, nil\n}\n\n// consumeDoubleSlice wire decodes a []float64 pointer as a repeated Double.\nfunc consumeDoubleSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Float64Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := len(b) / protowire.SizeFixed64()\n\t\tif count > 0 {\n\t\t\tp.growFloat64Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, math.Float64frombits(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, math.Float64frombits(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderDoubleSlice = pointerCoderFuncs{\n\tsize:      sizeDoubleSlice,\n\tmarshal:   appendDoubleSlice,\n\tunmarshal: consumeDoubleSlice,\n\tmerge:     mergeFloat64Slice,\n}\n\n// sizeDoublePackedSlice returns the size of wire encoding a []float64 pointer as a packed repeated Double.\nfunc sizeDoublePackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Float64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed64()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendDoublePackedSlice encodes a []float64 pointer as a packed repeated Double.\nfunc appendDoublePackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Float64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\t}\n\treturn b, nil\n}\n\nvar coderDoublePackedSlice = pointerCoderFuncs{\n\tsize:      sizeDoublePackedSlice,\n\tmarshal:   appendDoublePackedSlice,\n\tunmarshal: consumeDoubleSlice,\n\tmerge:     mergeFloat64Slice,\n}\n\n// sizeDoubleValue returns the size of wire encoding a float64 value as a Double.\nfunc sizeDoubleValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed64()\n}\n\n// appendDoubleValue encodes a float64 value as a Double.\nfunc appendDoubleValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed64(b, math.Float64bits(v.Float()))\n\treturn b, nil\n}\n\n// consumeDoubleValue decodes a float64 value as a Double.\nfunc consumeDoubleValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfFloat64(math.Float64frombits(v)), out, nil\n}\n\nvar coderDoubleValue = valueCoderFuncs{\n\tsize:      sizeDoubleValue,\n\tmarshal:   appendDoubleValue,\n\tunmarshal: consumeDoubleValue,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeDoubleSliceValue returns the size of wire encoding a []float64 value as a repeated Double.\nfunc sizeDoubleSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendDoubleSliceValue encodes a []float64 value as a repeated Double.\nfunc appendDoubleSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v.Float()))\n\t}\n\treturn b, nil\n}\n\n// consumeDoubleSliceValue wire decodes a []float64 value as a repeated Double.\nfunc consumeDoubleSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderDoubleSliceValue = valueCoderFuncs{\n\tsize:      sizeDoubleSliceValue,\n\tmarshal:   appendDoubleSliceValue,\n\tunmarshal: consumeDoubleSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeDoublePackedSliceValue returns the size of wire encoding a []float64 value as a packed repeated Double.\nfunc sizeDoublePackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed64()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendDoublePackedSliceValue encodes a []float64 value as a packed repeated Double.\nfunc appendDoublePackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v.Float()))\n\t}\n\treturn b, nil\n}\n\nvar coderDoublePackedSliceValue = valueCoderFuncs{\n\tsize:      sizeDoublePackedSliceValue,\n\tmarshal:   appendDoublePackedSliceValue,\n\tunmarshal: consumeDoubleSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeString returns the size of wire encoding a string pointer as a String.\nfunc sizeString(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.String()\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendString wire encodes a string pointer as a String.\nfunc appendString(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.String()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\treturn b, nil\n}\n\n// consumeString wire decodes a string pointer as a String.\nfunc consumeString(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.String() = string(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderString = pointerCoderFuncs{\n\tsize:      sizeString,\n\tmarshal:   appendString,\n\tunmarshal: consumeString,\n\tmerge:     mergeString,\n}\n\n// appendStringValidateUTF8 wire encodes a string pointer as a String.\nfunc appendStringValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.String()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\tif !utf8.ValidString(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeStringValidateUTF8 wire decodes a string pointer as a String.\nfunc consumeStringValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\t*p.String() = string(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeString,\n\tmarshal:   appendStringValidateUTF8,\n\tunmarshal: consumeStringValidateUTF8,\n\tmerge:     mergeString,\n}\n\n// sizeStringNoZero returns the size of wire encoding a string pointer as a String.\n// The zero value is not encoded.\nfunc sizeStringNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.String()\n\tif len(v) == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendStringNoZero wire encodes a string pointer as a String.\n// The zero value is not encoded.\nfunc appendStringNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.String()\n\tif len(v) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\treturn b, nil\n}\n\nvar coderStringNoZero = pointerCoderFuncs{\n\tsize:      sizeStringNoZero,\n\tmarshal:   appendStringNoZero,\n\tunmarshal: consumeString,\n\tmerge:     mergeStringNoZero,\n}\n\n// appendStringNoZeroValidateUTF8 wire encodes a string pointer as a String.\n// The zero value is not encoded.\nfunc appendStringNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.String()\n\tif len(v) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\tif !utf8.ValidString(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\nvar coderStringNoZeroValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeStringNoZero,\n\tmarshal:   appendStringNoZeroValidateUTF8,\n\tunmarshal: consumeStringValidateUTF8,\n\tmerge:     mergeStringNoZero,\n}\n\n// sizeStringPtr returns the size of wire encoding a *string pointer as a String.\n// It panics if the pointer is nil.\nfunc sizeStringPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.StringPtr()\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendStringPtr wire encodes a *string pointer as a String.\n// It panics if the pointer is nil.\nfunc appendStringPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.StringPtr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\treturn b, nil\n}\n\n// consumeStringPtr wire decodes a *string pointer as a String.\nfunc consumeStringPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.StringPtr()\n\tif *vp == nil {\n\t\t*vp = new(string)\n\t}\n\t**vp = string(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringPtr = pointerCoderFuncs{\n\tsize:      sizeStringPtr,\n\tmarshal:   appendStringPtr,\n\tunmarshal: consumeStringPtr,\n\tmerge:     mergeStringPtr,\n}\n\n// appendStringPtrValidateUTF8 wire encodes a *string pointer as a String.\n// It panics if the pointer is nil.\nfunc appendStringPtrValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.StringPtr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\tif !utf8.ValidString(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeStringPtrValidateUTF8 wire decodes a *string pointer as a String.\nfunc consumeStringPtrValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\tvp := p.StringPtr()\n\tif *vp == nil {\n\t\t*vp = new(string)\n\t}\n\t**vp = string(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringPtrValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeStringPtr,\n\tmarshal:   appendStringPtrValidateUTF8,\n\tunmarshal: consumeStringPtrValidateUTF8,\n\tmerge:     mergeStringPtr,\n}\n\n// sizeStringSlice returns the size of wire encoding a []string pointer as a repeated String.\nfunc sizeStringSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.StringSlice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeBytes(len(v))\n\t}\n\treturn size\n}\n\n// appendStringSlice encodes a []string pointer as a repeated String.\nfunc appendStringSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.StringSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendString(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeStringSlice wire decodes a []string pointer as a repeated String.\nfunc consumeStringSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.StringSlice()\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, string(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringSlice = pointerCoderFuncs{\n\tsize:      sizeStringSlice,\n\tmarshal:   appendStringSlice,\n\tunmarshal: consumeStringSlice,\n\tmerge:     mergeStringSlice,\n}\n\n// appendStringSliceValidateUTF8 encodes a []string pointer as a repeated String.\nfunc appendStringSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.StringSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendString(b, v)\n\t\tif !utf8.ValidString(v) {\n\t\t\treturn b, errInvalidUTF8{}\n\t\t}\n\t}\n\treturn b, nil\n}\n\n// consumeStringSliceValidateUTF8 wire decodes a []string pointer as a repeated String.\nfunc consumeStringSliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\tsp := p.StringSlice()\n\t*sp = append(*sp, string(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringSliceValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeStringSlice,\n\tmarshal:   appendStringSliceValidateUTF8,\n\tunmarshal: consumeStringSliceValidateUTF8,\n\tmerge:     mergeStringSlice,\n}\n\n// sizeStringValue returns the size of wire encoding a string value as a String.\nfunc sizeStringValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeBytes(len(v.String()))\n}\n\n// appendStringValue encodes a string value as a String.\nfunc appendStringValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendString(b, v.String())\n\treturn b, nil\n}\n\n// consumeStringValue decodes a string value as a String.\nfunc consumeStringValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfString(string(v)), out, nil\n}\n\nvar coderStringValue = valueCoderFuncs{\n\tsize:      sizeStringValue,\n\tmarshal:   appendStringValue,\n\tunmarshal: consumeStringValue,\n\tmerge:     mergeScalarValue,\n}\n\n// appendStringValueValidateUTF8 encodes a string value as a String.\nfunc appendStringValueValidateUTF8(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendString(b, v.String())\n\tif !utf8.ValidString(v.String()) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeStringValueValidateUTF8 decodes a string value as a String.\nfunc consumeStringValueValidateUTF8(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn protoreflect.Value{}, out, errInvalidUTF8{}\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfString(string(v)), out, nil\n}\n\nvar coderStringValueValidateUTF8 = valueCoderFuncs{\n\tsize:      sizeStringValue,\n\tmarshal:   appendStringValueValidateUTF8,\n\tunmarshal: consumeStringValueValidateUTF8,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeStringSliceValue returns the size of wire encoding a []string value as a repeated String.\nfunc sizeStringSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeBytes(len(v.String()))\n\t}\n\treturn size\n}\n\n// appendStringSliceValue encodes a []string value as a repeated String.\nfunc appendStringSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendString(b, v.String())\n\t}\n\treturn b, nil\n}\n\n// consumeStringSliceValue wire decodes a []string value as a repeated String.\nfunc consumeStringSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfString(string(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderStringSliceValue = valueCoderFuncs{\n\tsize:      sizeStringSliceValue,\n\tmarshal:   appendStringSliceValue,\n\tunmarshal: consumeStringSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeBytes returns the size of wire encoding a []byte pointer as a Bytes.\nfunc sizeBytes(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Bytes()\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendBytes wire encodes a []byte pointer as a Bytes.\nfunc appendBytes(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bytes()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendBytes(b, v)\n\treturn b, nil\n}\n\n// consumeBytes wire decodes a []byte pointer as a Bytes.\nfunc consumeBytes(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Bytes() = append(emptyBuf[:], v...)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytes = pointerCoderFuncs{\n\tsize:      sizeBytes,\n\tmarshal:   appendBytes,\n\tunmarshal: consumeBytes,\n\tmerge:     mergeBytes,\n}\n\n// appendBytesValidateUTF8 wire encodes a []byte pointer as a Bytes.\nfunc appendBytesValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bytes()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendBytes(b, v)\n\tif !utf8.Valid(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeBytesValidateUTF8 wire decodes a []byte pointer as a Bytes.\nfunc consumeBytesValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\t*p.Bytes() = append(emptyBuf[:], v...)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeBytes,\n\tmarshal:   appendBytesValidateUTF8,\n\tunmarshal: consumeBytesValidateUTF8,\n\tmerge:     mergeBytes,\n}\n\n// sizeBytesNoZero returns the size of wire encoding a []byte pointer as a Bytes.\n// The zero value is not encoded.\nfunc sizeBytesNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Bytes()\n\tif len(v) == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendBytesNoZero wire encodes a []byte pointer as a Bytes.\n// The zero value is not encoded.\nfunc appendBytesNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bytes()\n\tif len(v) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendBytes(b, v)\n\treturn b, nil\n}\n\n// consumeBytesNoZero wire decodes a []byte pointer as a Bytes.\n// The zero value is not decoded.\nfunc consumeBytesNoZero(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Bytes() = append(([]byte)(nil), v...)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesNoZero = pointerCoderFuncs{\n\tsize:      sizeBytesNoZero,\n\tmarshal:   appendBytesNoZero,\n\tunmarshal: consumeBytesNoZero,\n\tmerge:     mergeBytesNoZero,\n}\n\n// appendBytesNoZeroValidateUTF8 wire encodes a []byte pointer as a Bytes.\n// The zero value is not encoded.\nfunc appendBytesNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bytes()\n\tif len(v) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendBytes(b, v)\n\tif !utf8.Valid(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeBytesNoZeroValidateUTF8 wire decodes a []byte pointer as a Bytes.\nfunc consumeBytesNoZeroValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\t*p.Bytes() = append(([]byte)(nil), v...)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesNoZeroValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeBytesNoZero,\n\tmarshal:   appendBytesNoZeroValidateUTF8,\n\tunmarshal: consumeBytesNoZeroValidateUTF8,\n\tmerge:     mergeBytesNoZero,\n}\n\n// sizeBytesSlice returns the size of wire encoding a [][]byte pointer as a repeated Bytes.\nfunc sizeBytesSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.BytesSlice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeBytes(len(v))\n\t}\n\treturn size\n}\n\n// appendBytesSlice encodes a [][]byte pointer as a repeated Bytes.\nfunc appendBytesSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.BytesSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendBytes(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeBytesSlice wire decodes a [][]byte pointer as a repeated Bytes.\nfunc consumeBytesSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.BytesSlice()\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, append(emptyBuf[:], v...))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesSlice = pointerCoderFuncs{\n\tsize:      sizeBytesSlice,\n\tmarshal:   appendBytesSlice,\n\tunmarshal: consumeBytesSlice,\n\tmerge:     mergeBytesSlice,\n}\n\n// appendBytesSliceValidateUTF8 encodes a [][]byte pointer as a repeated Bytes.\nfunc appendBytesSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.BytesSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendBytes(b, v)\n\t\tif !utf8.Valid(v) {\n\t\t\treturn b, errInvalidUTF8{}\n\t\t}\n\t}\n\treturn b, nil\n}\n\n// consumeBytesSliceValidateUTF8 wire decodes a [][]byte pointer as a repeated Bytes.\nfunc consumeBytesSliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\tsp := p.BytesSlice()\n\t*sp = append(*sp, append(emptyBuf[:], v...))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesSliceValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeBytesSlice,\n\tmarshal:   appendBytesSliceValidateUTF8,\n\tunmarshal: consumeBytesSliceValidateUTF8,\n\tmerge:     mergeBytesSlice,\n}\n\n// sizeBytesValue returns the size of wire encoding a []byte value as a Bytes.\nfunc sizeBytesValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeBytes(len(v.Bytes()))\n}\n\n// appendBytesValue encodes a []byte value as a Bytes.\nfunc appendBytesValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendBytes(b, v.Bytes())\n\treturn b, nil\n}\n\n// consumeBytesValue decodes a []byte value as a Bytes.\nfunc consumeBytesValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), out, nil\n}\n\nvar coderBytesValue = valueCoderFuncs{\n\tsize:      sizeBytesValue,\n\tmarshal:   appendBytesValue,\n\tunmarshal: consumeBytesValue,\n\tmerge:     mergeBytesValue,\n}\n\n// sizeBytesSliceValue returns the size of wire encoding a [][]byte value as a repeated Bytes.\nfunc sizeBytesSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeBytes(len(v.Bytes()))\n\t}\n\treturn size\n}\n\n// appendBytesSliceValue encodes a [][]byte value as a repeated Bytes.\nfunc appendBytesSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendBytes(b, v.Bytes())\n\t}\n\treturn b, nil\n}\n\n// consumeBytesSliceValue wire decodes a [][]byte value as a repeated Bytes.\nfunc consumeBytesSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderBytesSliceValue = valueCoderFuncs{\n\tsize:      sizeBytesSliceValue,\n\tmarshal:   appendBytesSliceValue,\n\tunmarshal: consumeBytesSliceValue,\n\tmerge:     mergeBytesListValue,\n}\n\n// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices.\nvar emptyBuf [0]byte\n\nvar wireTypes = map[protoreflect.Kind]protowire.Type{\n\tprotoreflect.BoolKind:     protowire.VarintType,\n\tprotoreflect.EnumKind:     protowire.VarintType,\n\tprotoreflect.Int32Kind:    protowire.VarintType,\n\tprotoreflect.Sint32Kind:   protowire.VarintType,\n\tprotoreflect.Uint32Kind:   protowire.VarintType,\n\tprotoreflect.Int64Kind:    protowire.VarintType,\n\tprotoreflect.Sint64Kind:   protowire.VarintType,\n\tprotoreflect.Uint64Kind:   protowire.VarintType,\n\tprotoreflect.Sfixed32Kind: protowire.Fixed32Type,\n\tprotoreflect.Fixed32Kind:  protowire.Fixed32Type,\n\tprotoreflect.FloatKind:    protowire.Fixed32Type,\n\tprotoreflect.Sfixed64Kind: protowire.Fixed64Type,\n\tprotoreflect.Fixed64Kind:  protowire.Fixed64Type,\n\tprotoreflect.DoubleKind:   protowire.Fixed64Type,\n\tprotoreflect.StringKind:   protowire.BytesType,\n\tprotoreflect.BytesKind:    protowire.BytesType,\n\tprotoreflect.MessageKind:  protowire.BytesType,\n\tprotoreflect.GroupKind:    protowire.StartGroupType,\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_map.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\t\"sort\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype mapInfo struct {\n\tgoType     reflect.Type\n\tkeyWiretag uint64\n\tvalWiretag uint64\n\tkeyFuncs   valueCoderFuncs\n\tvalFuncs   valueCoderFuncs\n\tkeyZero    protoreflect.Value\n\tkeyKind    protoreflect.Kind\n\tconv       *mapConverter\n}\n\nfunc encoderFuncsForMap(fd protoreflect.FieldDescriptor, ft reflect.Type) (valueMessage *MessageInfo, funcs pointerCoderFuncs) {\n\t// TODO: Consider generating specialized map coders.\n\tkeyField := fd.MapKey()\n\tvalField := fd.MapValue()\n\tkeyWiretag := protowire.EncodeTag(1, wireTypes[keyField.Kind()])\n\tvalWiretag := protowire.EncodeTag(2, wireTypes[valField.Kind()])\n\tkeyFuncs := encoderFuncsForValue(keyField)\n\tvalFuncs := encoderFuncsForValue(valField)\n\tconv := newMapConverter(ft, fd)\n\n\tmapi := &mapInfo{\n\t\tgoType:     ft,\n\t\tkeyWiretag: keyWiretag,\n\t\tvalWiretag: valWiretag,\n\t\tkeyFuncs:   keyFuncs,\n\t\tvalFuncs:   valFuncs,\n\t\tkeyZero:    keyField.Default(),\n\t\tkeyKind:    keyField.Kind(),\n\t\tconv:       conv,\n\t}\n\tif valField.Kind() == protoreflect.MessageKind {\n\t\tvalueMessage = getMessageInfo(ft.Elem())\n\t}\n\n\tfuncs = pointerCoderFuncs{\n\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\treturn sizeMap(p.AsValueOf(ft).Elem(), mapi, f, opts)\n\t\t},\n\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\treturn appendMap(b, p.AsValueOf(ft).Elem(), mapi, f, opts)\n\t\t},\n\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\tmp := p.AsValueOf(ft)\n\t\t\tif mp.Elem().IsNil() {\n\t\t\t\tmp.Elem().Set(reflect.MakeMap(mapi.goType))\n\t\t\t}\n\t\t\tif f.mi == nil {\n\t\t\t\treturn consumeMap(b, mp.Elem(), wtyp, mapi, f, opts)\n\t\t\t} else {\n\t\t\t\treturn consumeMapOfMessage(b, mp.Elem(), wtyp, mapi, f, opts)\n\t\t\t}\n\t\t},\n\t}\n\tswitch valField.Kind() {\n\tcase protoreflect.MessageKind:\n\t\tfuncs.merge = mergeMapOfMessage\n\tcase protoreflect.BytesKind:\n\t\tfuncs.merge = mergeMapOfBytes\n\tdefault:\n\t\tfuncs.merge = mergeMap\n\t}\n\tif valFuncs.isInit != nil {\n\t\tfuncs.isInit = func(p pointer, f *coderFieldInfo) error {\n\t\t\treturn isInitMap(p.AsValueOf(ft).Elem(), mapi, f)\n\t\t}\n\t}\n\treturn valueMessage, funcs\n}\n\nconst (\n\tmapKeyTagSize = 1 // field 1, tag size 1.\n\tmapValTagSize = 1 // field 2, tag size 2.\n)\n\nfunc sizeMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) int {\n\tif mapv.Len() == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\titer := mapv.MapRange()\n\tfor iter.Next() {\n\t\tkey := mapi.conv.keyConv.PBValueOf(iter.Key()).MapKey()\n\t\tkeySize := mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)\n\t\tvar valSize int\n\t\tvalue := mapi.conv.valConv.PBValueOf(iter.Value())\n\t\tif f.mi == nil {\n\t\t\tvalSize = mapi.valFuncs.size(value, mapValTagSize, opts)\n\t\t} else {\n\t\t\tp := pointerOfValue(iter.Value())\n\t\t\tvalSize += mapValTagSize\n\t\t\tvalSize += protowire.SizeBytes(f.mi.sizePointer(p, opts))\n\t\t}\n\t\tn += f.tagsize + protowire.SizeBytes(keySize+valSize)\n\t}\n\treturn n\n}\n\nfunc consumeMap(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif opts.depth--; opts.depth < 0 {\n\t\treturn out, errRecursionDepth\n\t}\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tb, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvar (\n\t\tkey = mapi.keyZero\n\t\tval = mapi.conv.valConv.New()\n\t)\n\tfor len(b) > 0 {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tif num > protowire.MaxValidNumber {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tb = b[n:]\n\t\terr := errUnknown\n\t\tswitch num {\n\t\tcase genid.MapEntry_Key_field_number:\n\t\t\tvar v protoreflect.Value\n\t\t\tvar o unmarshalOutput\n\t\t\tv, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tkey = v\n\t\t\tn = o.n\n\t\tcase genid.MapEntry_Value_field_number:\n\t\t\tvar v protoreflect.Value\n\t\t\tvar o unmarshalOutput\n\t\t\tv, o, err = mapi.valFuncs.unmarshal(b, val, num, wtyp, opts)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tval = v\n\t\t\tn = o.n\n\t\t}\n\t\tif err == errUnknown {\n\t\t\tn = protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t} else if err != nil {\n\t\t\treturn out, err\n\t\t}\n\t\tb = b[n:]\n\t}\n\tmapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), mapi.conv.valConv.GoValueOf(val))\n\tout.n = n\n\treturn out, nil\n}\n\nfunc consumeMapOfMessage(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif opts.depth--; opts.depth < 0 {\n\t\treturn out, errRecursionDepth\n\t}\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tb, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvar (\n\t\tkey = mapi.keyZero\n\t\tval = reflect.New(f.mi.GoReflectType.Elem())\n\t)\n\tfor len(b) > 0 {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tif num > protowire.MaxValidNumber {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tb = b[n:]\n\t\terr := errUnknown\n\t\tswitch num {\n\t\tcase 1:\n\t\t\tvar v protoreflect.Value\n\t\t\tvar o unmarshalOutput\n\t\t\tv, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tkey = v\n\t\t\tn = o.n\n\t\tcase 2:\n\t\t\tif wtyp != protowire.BytesType {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar v []byte\n\t\t\tv, n = protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tvar o unmarshalOutput\n\t\t\to, err = f.mi.unmarshalPointer(v, pointerOfValue(val), 0, opts)\n\t\t\tif o.initialized {\n\t\t\t\t// Consider this map item initialized so long as we see\n\t\t\t\t// an initialized value.\n\t\t\t\tout.initialized = true\n\t\t\t}\n\t\t}\n\t\tif err == errUnknown {\n\t\t\tn = protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t} else if err != nil {\n\t\t\treturn out, err\n\t\t}\n\t\tb = b[n:]\n\t}\n\tmapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), val)\n\tout.n = n\n\treturn out, nil\n}\n\nfunc appendMapItem(b []byte, keyrv, valrv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tif f.mi == nil {\n\t\tkey := mapi.conv.keyConv.PBValueOf(keyrv).MapKey()\n\t\tval := mapi.conv.valConv.PBValueOf(valrv)\n\t\tsize := 0\n\t\tsize += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)\n\t\tsize += mapi.valFuncs.size(val, mapValTagSize, opts)\n\t\tb = protowire.AppendVarint(b, uint64(size))\n\t\tbefore := len(b)\n\t\tb, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tb, err = mapi.valFuncs.marshal(b, val, mapi.valWiretag, opts)\n\t\tif measuredSize := len(b) - before; size != measuredSize && err == nil {\n\t\t\treturn nil, errors.MismatchedSizeCalculation(size, measuredSize)\n\t\t}\n\t\treturn b, err\n\t} else {\n\t\tkey := mapi.conv.keyConv.PBValueOf(keyrv).MapKey()\n\t\tval := pointerOfValue(valrv)\n\t\tvalSize := f.mi.sizePointer(val, opts)\n\t\tsize := 0\n\t\tsize += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)\n\t\tsize += mapValTagSize + protowire.SizeBytes(valSize)\n\t\tb = protowire.AppendVarint(b, uint64(size))\n\t\tb, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, mapi.valWiretag)\n\t\tb = protowire.AppendVarint(b, uint64(valSize))\n\t\tbefore := len(b)\n\t\tb, err = f.mi.marshalAppendPointer(b, val, opts)\n\t\tif measuredSize := len(b) - before; valSize != measuredSize && err == nil {\n\t\t\treturn nil, errors.MismatchedSizeCalculation(valSize, measuredSize)\n\t\t}\n\t\treturn b, err\n\t}\n}\n\nfunc appendMap(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tif mapv.Len() == 0 {\n\t\treturn b, nil\n\t}\n\tif opts.Deterministic() {\n\t\treturn appendMapDeterministic(b, mapv, mapi, f, opts)\n\t}\n\titer := mapv.MapRange()\n\tfor iter.Next() {\n\t\tvar err error\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb, err = appendMapItem(b, iter.Key(), iter.Value(), mapi, f, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc appendMapDeterministic(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tkeys := mapv.MapKeys()\n\tsort.Slice(keys, func(i, j int) bool {\n\t\tswitch keys[i].Kind() {\n\t\tcase reflect.Bool:\n\t\t\treturn !keys[i].Bool() && keys[j].Bool()\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\treturn keys[i].Int() < keys[j].Int()\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\t\treturn keys[i].Uint() < keys[j].Uint()\n\t\tcase reflect.Float32, reflect.Float64:\n\t\t\treturn keys[i].Float() < keys[j].Float()\n\t\tcase reflect.String:\n\t\t\treturn keys[i].String() < keys[j].String()\n\t\tdefault:\n\t\t\tpanic(\"invalid kind: \" + keys[i].Kind().String())\n\t\t}\n\t})\n\tfor _, key := range keys {\n\t\tvar err error\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb, err = appendMapItem(b, key, mapv.MapIndex(key), mapi, f, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc isInitMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo) error {\n\tif mi := f.mi; mi != nil {\n\t\tmi.init()\n\t\tif !mi.needsInitCheck {\n\t\t\treturn nil\n\t\t}\n\t\titer := mapv.MapRange()\n\t\tfor iter.Next() {\n\t\t\tval := pointerOfValue(iter.Value())\n\t\t\tif err := mi.checkInitializedPointer(val); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t} else {\n\t\titer := mapv.MapRange()\n\t\tfor iter.Next() {\n\t\t\tval := mapi.conv.valConv.PBValueOf(iter.Value())\n\t\t\tif err := mapi.valFuncs.isInit(val); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc mergeMap(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tdstm := dst.AsValueOf(f.ft).Elem()\n\tsrcm := src.AsValueOf(f.ft).Elem()\n\tif srcm.Len() == 0 {\n\t\treturn\n\t}\n\tif dstm.IsNil() {\n\t\tdstm.Set(reflect.MakeMap(f.ft))\n\t}\n\titer := srcm.MapRange()\n\tfor iter.Next() {\n\t\tdstm.SetMapIndex(iter.Key(), iter.Value())\n\t}\n}\n\nfunc mergeMapOfBytes(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tdstm := dst.AsValueOf(f.ft).Elem()\n\tsrcm := src.AsValueOf(f.ft).Elem()\n\tif srcm.Len() == 0 {\n\t\treturn\n\t}\n\tif dstm.IsNil() {\n\t\tdstm.Set(reflect.MakeMap(f.ft))\n\t}\n\titer := srcm.MapRange()\n\tfor iter.Next() {\n\t\tdstm.SetMapIndex(iter.Key(), reflect.ValueOf(append(emptyBuf[:], iter.Value().Bytes()...)))\n\t}\n}\n\nfunc mergeMapOfMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tdstm := dst.AsValueOf(f.ft).Elem()\n\tsrcm := src.AsValueOf(f.ft).Elem()\n\tif srcm.Len() == 0 {\n\t\treturn\n\t}\n\tif dstm.IsNil() {\n\t\tdstm.Set(reflect.MakeMap(f.ft))\n\t}\n\titer := srcm.MapRange()\n\tfor iter.Next() {\n\t\tval := reflect.New(f.ft.Elem().Elem())\n\t\tif f.mi != nil {\n\t\t\tf.mi.mergePointer(pointerOfValue(val), pointerOfValue(iter.Value()), opts)\n\t\t} else {\n\t\t\topts.Merge(asMessage(val), asMessage(iter.Value()))\n\t\t}\n\t\tdstm.SetMapIndex(iter.Key(), val)\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_message.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// coderMessageInfo contains per-message information used by the fast-path functions.\n// This is a different type from MessageInfo to keep MessageInfo as general-purpose as\n// possible.\ntype coderMessageInfo struct {\n\tmethods protoiface.Methods\n\n\torderedCoderFields []*coderFieldInfo\n\tdenseCoderFields   []*coderFieldInfo\n\tcoderFields        map[protowire.Number]*coderFieldInfo\n\tsizecacheOffset    offset\n\tunknownOffset      offset\n\tunknownPtrKind     bool\n\textensionOffset    offset\n\tneedsInitCheck     bool\n\tisMessageSet       bool\n\tnumRequiredFields  uint8\n\n\tlazyOffset     offset\n\tpresenceOffset offset\n\tpresenceSize   presenceSize\n}\n\ntype coderFieldInfo struct {\n\tfuncs      pointerCoderFuncs // fast-path per-field functions\n\tmi         *MessageInfo      // field's message\n\tft         reflect.Type\n\tvalidation validationInfo           // information used by message validation\n\tnum        protoreflect.FieldNumber // field number\n\toffset     offset                   // struct field offset\n\twiretag    uint64                   // field tag (number + wire type)\n\ttagsize    int                      // size of the varint-encoded tag\n\tisPointer  bool                     // true if IsNil may be called on the struct field\n\tisRequired bool                     // true if field is required\n\n\tisLazy        bool\n\tpresenceIndex uint32\n}\n\nconst noPresence = 0xffffffff\n\nfunc (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) {\n\tmi.sizecacheOffset = invalidOffset\n\tmi.unknownOffset = invalidOffset\n\tmi.extensionOffset = invalidOffset\n\tmi.lazyOffset = invalidOffset\n\tmi.presenceOffset = si.presenceOffset\n\n\tif si.sizecacheOffset.IsValid() && si.sizecacheType == sizecacheType {\n\t\tmi.sizecacheOffset = si.sizecacheOffset\n\t}\n\tif si.unknownOffset.IsValid() && (si.unknownType == unknownFieldsAType || si.unknownType == unknownFieldsBType) {\n\t\tmi.unknownOffset = si.unknownOffset\n\t\tmi.unknownPtrKind = si.unknownType.Kind() == reflect.Ptr\n\t}\n\tif si.extensionOffset.IsValid() && si.extensionType == extensionFieldsType {\n\t\tmi.extensionOffset = si.extensionOffset\n\t}\n\n\tmi.coderFields = make(map[protowire.Number]*coderFieldInfo)\n\tfields := mi.Desc.Fields()\n\tpreallocFields := make([]coderFieldInfo, fields.Len())\n\tfor i := 0; i < fields.Len(); i++ {\n\t\tfd := fields.Get(i)\n\n\t\tfs := si.fieldsByNumber[fd.Number()]\n\t\tisOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic()\n\t\tif isOneof {\n\t\t\tfs = si.oneofsByName[fd.ContainingOneof().Name()]\n\t\t}\n\t\tft := fs.Type\n\t\tvar wiretag uint64\n\t\tif !fd.IsPacked() {\n\t\t\twiretag = protowire.EncodeTag(fd.Number(), wireTypes[fd.Kind()])\n\t\t} else {\n\t\t\twiretag = protowire.EncodeTag(fd.Number(), protowire.BytesType)\n\t\t}\n\t\tvar fieldOffset offset\n\t\tvar funcs pointerCoderFuncs\n\t\tvar childMessage *MessageInfo\n\t\tswitch {\n\t\tcase ft == nil:\n\t\t\t// This never occurs for generated message types.\n\t\t\t// It implies that a hand-crafted type has missing Go fields\n\t\t\t// for specific protobuf message fields.\n\t\t\tfuncs = pointerCoderFuncs{\n\t\t\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\t\t\treturn 0\n\t\t\t\t},\n\t\t\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t\t\t},\n\t\t\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t\t\t},\n\t\t\t\tmerge: func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\t\t\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t\t\t},\n\t\t\t}\n\t\tcase isOneof:\n\t\t\tfieldOffset = offsetOf(fs)\n\t\tdefault:\n\t\t\tfieldOffset = offsetOf(fs)\n\t\t\tchildMessage, funcs = fieldCoder(fd, ft)\n\t\t}\n\t\tcf := &preallocFields[i]\n\t\t*cf = coderFieldInfo{\n\t\t\tnum:        fd.Number(),\n\t\t\toffset:     fieldOffset,\n\t\t\twiretag:    wiretag,\n\t\t\tft:         ft,\n\t\t\ttagsize:    protowire.SizeVarint(wiretag),\n\t\t\tfuncs:      funcs,\n\t\t\tmi:         childMessage,\n\t\t\tvalidation: newFieldValidationInfo(mi, si, fd, ft),\n\t\t\tisPointer:  fd.Cardinality() == protoreflect.Repeated || fd.HasPresence(),\n\t\t\tisRequired: fd.Cardinality() == protoreflect.Required,\n\n\t\t\tpresenceIndex: noPresence,\n\t\t}\n\t\tmi.orderedCoderFields = append(mi.orderedCoderFields, cf)\n\t\tmi.coderFields[cf.num] = cf\n\t}\n\tfor i, oneofs := 0, mi.Desc.Oneofs(); i < oneofs.Len(); i++ {\n\t\tif od := oneofs.Get(i); !od.IsSynthetic() {\n\t\t\tmi.initOneofFieldCoders(od, si)\n\t\t}\n\t}\n\tif messageset.IsMessageSet(mi.Desc) {\n\t\tif !mi.extensionOffset.IsValid() {\n\t\t\tpanic(fmt.Sprintf(\"%v: MessageSet with no extensions field\", mi.Desc.FullName()))\n\t\t}\n\t\tif !mi.unknownOffset.IsValid() {\n\t\t\tpanic(fmt.Sprintf(\"%v: MessageSet with no unknown field\", mi.Desc.FullName()))\n\t\t}\n\t\tmi.isMessageSet = true\n\t}\n\tsort.Slice(mi.orderedCoderFields, func(i, j int) bool {\n\t\treturn mi.orderedCoderFields[i].num < mi.orderedCoderFields[j].num\n\t})\n\n\tvar maxDense protoreflect.FieldNumber\n\tfor _, cf := range mi.orderedCoderFields {\n\t\tif cf.num >= 16 && cf.num >= 2*maxDense {\n\t\t\tbreak\n\t\t}\n\t\tmaxDense = cf.num\n\t}\n\tmi.denseCoderFields = make([]*coderFieldInfo, maxDense+1)\n\tfor _, cf := range mi.orderedCoderFields {\n\t\tif int(cf.num) >= len(mi.denseCoderFields) {\n\t\t\tbreak\n\t\t}\n\t\tmi.denseCoderFields[cf.num] = cf\n\t}\n\n\t// To preserve compatibility with historic wire output, marshal oneofs last.\n\tif mi.Desc.Oneofs().Len() > 0 {\n\t\tsort.Slice(mi.orderedCoderFields, func(i, j int) bool {\n\t\t\tfi := fields.ByNumber(mi.orderedCoderFields[i].num)\n\t\t\tfj := fields.ByNumber(mi.orderedCoderFields[j].num)\n\t\t\treturn order.LegacyFieldOrder(fi, fj)\n\t\t})\n\t}\n\n\tmi.needsInitCheck = needsInitCheck(mi.Desc)\n\tif mi.methods.Marshal == nil && mi.methods.Size == nil {\n\t\tmi.methods.Flags |= protoiface.SupportMarshalDeterministic\n\t\tmi.methods.Marshal = mi.marshal\n\t\tmi.methods.Size = mi.size\n\t}\n\tif mi.methods.Unmarshal == nil {\n\t\tmi.methods.Flags |= protoiface.SupportUnmarshalDiscardUnknown\n\t\tmi.methods.Unmarshal = mi.unmarshal\n\t}\n\tif mi.methods.CheckInitialized == nil {\n\t\tmi.methods.CheckInitialized = mi.checkInitialized\n\t}\n\tif mi.methods.Merge == nil {\n\t\tmi.methods.Merge = mi.merge\n\t}\n\tif mi.methods.Equal == nil {\n\t\tmi.methods.Equal = equal\n\t}\n}\n\n// getUnknownBytes returns a *[]byte for the unknown fields.\n// It is the caller's responsibility to check whether the pointer is nil.\n// This function is specially designed to be inlineable.\nfunc (mi *MessageInfo) getUnknownBytes(p pointer) *[]byte {\n\tif mi.unknownPtrKind {\n\t\treturn *p.Apply(mi.unknownOffset).BytesPtr()\n\t} else {\n\t\treturn p.Apply(mi.unknownOffset).Bytes()\n\t}\n}\n\n// mutableUnknownBytes returns a *[]byte for the unknown fields.\n// The returned pointer is guaranteed to not be nil.\nfunc (mi *MessageInfo) mutableUnknownBytes(p pointer) *[]byte {\n\tif mi.unknownPtrKind {\n\t\tbp := p.Apply(mi.unknownOffset).BytesPtr()\n\t\tif *bp == nil {\n\t\t\t*bp = new([]byte)\n\t\t}\n\t\treturn *bp\n\t} else {\n\t\treturn p.Apply(mi.unknownOffset).Bytes()\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_message_opaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\tpiface \"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nfunc (mi *MessageInfo) makeOpaqueCoderMethods(t reflect.Type, si opaqueStructInfo) {\n\tmi.sizecacheOffset = si.sizecacheOffset\n\tmi.unknownOffset = si.unknownOffset\n\tmi.unknownPtrKind = si.unknownType.Kind() == reflect.Ptr\n\tmi.extensionOffset = si.extensionOffset\n\tmi.lazyOffset = si.lazyOffset\n\tmi.presenceOffset = si.presenceOffset\n\n\tmi.coderFields = make(map[protowire.Number]*coderFieldInfo)\n\tfields := mi.Desc.Fields()\n\tfor i := 0; i < fields.Len(); i++ {\n\t\tfd := fields.Get(i)\n\n\t\tfs := si.fieldsByNumber[fd.Number()]\n\t\tif fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic() {\n\t\t\tfs = si.oneofsByName[fd.ContainingOneof().Name()]\n\t\t}\n\t\tft := fs.Type\n\t\tvar wiretag uint64\n\t\tif !fd.IsPacked() {\n\t\t\twiretag = protowire.EncodeTag(fd.Number(), wireTypes[fd.Kind()])\n\t\t} else {\n\t\t\twiretag = protowire.EncodeTag(fd.Number(), protowire.BytesType)\n\t\t}\n\t\tvar fieldOffset offset\n\t\tvar funcs pointerCoderFuncs\n\t\tvar childMessage *MessageInfo\n\t\tswitch {\n\t\tcase fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():\n\t\t\tfieldOffset = offsetOf(fs)\n\t\tcase fd.Message() != nil && !fd.IsMap():\n\t\t\tfieldOffset = offsetOf(fs)\n\t\t\tif fd.IsList() {\n\t\t\t\tchildMessage, funcs = makeOpaqueRepeatedMessageFieldCoder(fd, ft)\n\t\t\t} else {\n\t\t\t\tchildMessage, funcs = makeOpaqueMessageFieldCoder(fd, ft)\n\t\t\t}\n\t\tdefault:\n\t\t\tfieldOffset = offsetOf(fs)\n\t\t\tchildMessage, funcs = fieldCoder(fd, ft)\n\t\t}\n\t\tcf := &coderFieldInfo{\n\t\t\tnum:        fd.Number(),\n\t\t\toffset:     fieldOffset,\n\t\t\twiretag:    wiretag,\n\t\t\tft:         ft,\n\t\t\ttagsize:    protowire.SizeVarint(wiretag),\n\t\t\tfuncs:      funcs,\n\t\t\tmi:         childMessage,\n\t\t\tvalidation: newFieldValidationInfo(mi, si.structInfo, fd, ft),\n\t\t\tisPointer: (fd.Cardinality() == protoreflect.Repeated ||\n\t\t\t\tfd.Kind() == protoreflect.MessageKind ||\n\t\t\t\tfd.Kind() == protoreflect.GroupKind),\n\t\t\tisRequired:    fd.Cardinality() == protoreflect.Required,\n\t\t\tpresenceIndex: noPresence,\n\t\t}\n\n\t\t// TODO: Use presence for all fields.\n\t\t//\n\t\t// In some cases, such as maps, presence means only \"might be set\" rather\n\t\t// than \"is definitely set\", but every field should have a presence bit to\n\t\t// permit us to skip over definitely-unset fields at marshal time.\n\n\t\tvar hasPresence bool\n\t\thasPresence, cf.isLazy = filedesc.UsePresenceForField(fd)\n\n\t\tif hasPresence {\n\t\t\tcf.presenceIndex, mi.presenceSize = presenceIndex(mi.Desc, fd)\n\t\t}\n\n\t\tmi.orderedCoderFields = append(mi.orderedCoderFields, cf)\n\t\tmi.coderFields[cf.num] = cf\n\t}\n\tfor i, oneofs := 0, mi.Desc.Oneofs(); i < oneofs.Len(); i++ {\n\t\tif od := oneofs.Get(i); !od.IsSynthetic() {\n\t\t\tmi.initOneofFieldCoders(od, si.structInfo)\n\t\t}\n\t}\n\tif messageset.IsMessageSet(mi.Desc) {\n\t\tif !mi.extensionOffset.IsValid() {\n\t\t\tpanic(fmt.Sprintf(\"%v: MessageSet with no extensions field\", mi.Desc.FullName()))\n\t\t}\n\t\tif !mi.unknownOffset.IsValid() {\n\t\t\tpanic(fmt.Sprintf(\"%v: MessageSet with no unknown field\", mi.Desc.FullName()))\n\t\t}\n\t\tmi.isMessageSet = true\n\t}\n\tsort.Slice(mi.orderedCoderFields, func(i, j int) bool {\n\t\treturn mi.orderedCoderFields[i].num < mi.orderedCoderFields[j].num\n\t})\n\n\tvar maxDense protoreflect.FieldNumber\n\tfor _, cf := range mi.orderedCoderFields {\n\t\tif cf.num >= 16 && cf.num >= 2*maxDense {\n\t\t\tbreak\n\t\t}\n\t\tmaxDense = cf.num\n\t}\n\tmi.denseCoderFields = make([]*coderFieldInfo, maxDense+1)\n\tfor _, cf := range mi.orderedCoderFields {\n\t\tif int(cf.num) > len(mi.denseCoderFields) {\n\t\t\tbreak\n\t\t}\n\t\tmi.denseCoderFields[cf.num] = cf\n\t}\n\n\t// To preserve compatibility with historic wire output, marshal oneofs last.\n\tif mi.Desc.Oneofs().Len() > 0 {\n\t\tsort.Slice(mi.orderedCoderFields, func(i, j int) bool {\n\t\t\tfi := fields.ByNumber(mi.orderedCoderFields[i].num)\n\t\t\tfj := fields.ByNumber(mi.orderedCoderFields[j].num)\n\t\t\treturn order.LegacyFieldOrder(fi, fj)\n\t\t})\n\t}\n\n\tmi.needsInitCheck = needsInitCheck(mi.Desc)\n\tif mi.methods.Marshal == nil && mi.methods.Size == nil {\n\t\tmi.methods.Flags |= piface.SupportMarshalDeterministic\n\t\tmi.methods.Marshal = mi.marshal\n\t\tmi.methods.Size = mi.size\n\t}\n\tif mi.methods.Unmarshal == nil {\n\t\tmi.methods.Flags |= piface.SupportUnmarshalDiscardUnknown\n\t\tmi.methods.Unmarshal = mi.unmarshal\n\t}\n\tif mi.methods.CheckInitialized == nil {\n\t\tmi.methods.CheckInitialized = mi.checkInitialized\n\t}\n\tif mi.methods.Merge == nil {\n\t\tmi.methods.Merge = mi.merge\n\t}\n\tif mi.methods.Equal == nil {\n\t\tmi.methods.Equal = equal\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"sort\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n)\n\nfunc sizeMessageSet(mi *MessageInfo, p pointer, opts marshalOptions) (size int) {\n\tif !flags.ProtoLegacy {\n\t\treturn 0\n\t}\n\n\text := *p.Apply(mi.extensionOffset).Extensions()\n\tfor _, x := range ext {\n\t\txi := getExtensionFieldInfo(x.Type())\n\t\tif xi.funcs.size == nil {\n\t\t\tcontinue\n\t\t}\n\t\tnum, _ := protowire.DecodeTag(xi.wiretag)\n\t\tsize += messageset.SizeField(num)\n\t\tif fullyLazyExtensions(opts) {\n\t\t\t// Don't expand the extension, instead use the buffer to calculate size\n\t\t\tif lb := x.lazyBuffer(); lb != nil {\n\t\t\t\t// We got hold of the buffer, so it's still lazy.\n\t\t\t\t// Don't count the tag size in the extension buffer, it's already added.\n\t\t\t\tsize += protowire.SizeTag(messageset.FieldMessage) + len(lb) - xi.tagsize\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tsize += xi.funcs.size(x.Value(), protowire.SizeTag(messageset.FieldMessage), opts)\n\t}\n\n\tif u := mi.getUnknownBytes(p); u != nil {\n\t\tsize += messageset.SizeUnknown(*u)\n\t}\n\n\treturn size\n}\n\nfunc marshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts marshalOptions) ([]byte, error) {\n\tif !flags.ProtoLegacy {\n\t\treturn b, errors.New(\"no support for message_set_wire_format\")\n\t}\n\n\text := *p.Apply(mi.extensionOffset).Extensions()\n\tswitch len(ext) {\n\tcase 0:\n\tcase 1:\n\t\t// Fast-path for one extension: Don't bother sorting the keys.\n\t\tfor _, x := range ext {\n\t\t\tvar err error\n\t\t\tb, err = marshalMessageSetField(mi, b, x, opts)\n\t\t\tif err != nil {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t}\n\tdefault:\n\t\t// Sort the keys to provide a deterministic encoding.\n\t\t// Not sure this is required, but the old code does it.\n\t\tkeys := make([]int, 0, len(ext))\n\t\tfor k := range ext {\n\t\t\tkeys = append(keys, int(k))\n\t\t}\n\t\tsort.Ints(keys)\n\t\tfor _, k := range keys {\n\t\t\tvar err error\n\t\t\tb, err = marshalMessageSetField(mi, b, ext[int32(k)], opts)\n\t\t\tif err != nil {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t}\n\t}\n\n\tif u := mi.getUnknownBytes(p); u != nil {\n\t\tvar err error\n\t\tb, err = messageset.AppendUnknown(b, *u)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\n\treturn b, nil\n}\n\nfunc marshalMessageSetField(mi *MessageInfo, b []byte, x ExtensionField, opts marshalOptions) ([]byte, error) {\n\txi := getExtensionFieldInfo(x.Type())\n\tnum, _ := protowire.DecodeTag(xi.wiretag)\n\tb = messageset.AppendFieldStart(b, num)\n\n\tif fullyLazyExtensions(opts) {\n\t\t// Don't expand the extension if it's still in wire format, instead use the buffer content.\n\t\tif lb := x.lazyBuffer(); lb != nil {\n\t\t\t// The tag inside the lazy buffer is a different tag (the extension\n\t\t\t// number), but what we need here is the tag for FieldMessage:\n\t\t\tb = protowire.AppendVarint(b, protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType))\n\t\t\tb = append(b, lb[xi.tagsize:]...)\n\t\t\tb = messageset.AppendFieldEnd(b)\n\t\t\treturn b, nil\n\t\t}\n\t}\n\n\tb, err := xi.funcs.marshal(b, x.Value(), protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType), opts)\n\tif err != nil {\n\t\treturn b, err\n\t}\n\tb = messageset.AppendFieldEnd(b)\n\treturn b, nil\n}\n\nfunc unmarshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif !flags.ProtoLegacy {\n\t\treturn out, errors.New(\"no support for message_set_wire_format\")\n\t}\n\n\tep := p.Apply(mi.extensionOffset).Extensions()\n\tif *ep == nil {\n\t\t*ep = make(map[int32]ExtensionField)\n\t}\n\text := *ep\n\tinitialized := true\n\terr = messageset.Unmarshal(b, true, func(num protowire.Number, v []byte) error {\n\t\to, err := mi.unmarshalExtension(v, num, protowire.BytesType, ext, opts)\n\t\tif err == errUnknown {\n\t\t\tu := mi.mutableUnknownBytes(p)\n\t\t\t*u = protowire.AppendTag(*u, num, protowire.BytesType)\n\t\t\t*u = append(*u, v...)\n\t\t\treturn nil\n\t\t}\n\t\tif !o.initialized {\n\t\t\tinitialized = false\n\t\t}\n\t\treturn err\n\t})\n\tout.n = len(b)\n\tout.initialized = initialized\n\treturn out, err\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_tables.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// pointerCoderFuncs is a set of pointer encoding functions.\ntype pointerCoderFuncs struct {\n\tmi        *MessageInfo\n\tsize      func(p pointer, f *coderFieldInfo, opts marshalOptions) int\n\tmarshal   func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error)\n\tunmarshal func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error)\n\tisInit    func(p pointer, f *coderFieldInfo) error\n\tmerge     func(dst, src pointer, f *coderFieldInfo, opts mergeOptions)\n}\n\n// valueCoderFuncs is a set of protoreflect.Value encoding functions.\ntype valueCoderFuncs struct {\n\tsize      func(v protoreflect.Value, tagsize int, opts marshalOptions) int\n\tmarshal   func(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error)\n\tunmarshal func(b []byte, v protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error)\n\tisInit    func(v protoreflect.Value) error\n\tmerge     func(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value\n}\n\n// fieldCoder returns pointer functions for a field, used for operating on\n// struct fields.\nfunc fieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) {\n\tswitch {\n\tcase fd.IsMap():\n\t\treturn encoderFuncsForMap(fd, ft)\n\tcase fd.Cardinality() == protoreflect.Repeated && !fd.IsPacked():\n\t\t// Repeated fields (not packed).\n\t\tif ft.Kind() != reflect.Slice {\n\t\t\tbreak\n\t\t}\n\t\tft := ft.Elem()\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBoolSlice\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnumSlice\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32Slice\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32Slice\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32Slice\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64Slice\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64Slice\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64Slice\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32Slice\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32Slice\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloatSlice\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64Slice\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64Slice\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDoubleSlice\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderStringSliceValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringSlice\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderBytesSliceValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytesSlice\n\t\t\t}\n\t\tcase protoreflect.BytesKind:\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringSlice\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytesSlice\n\t\t\t}\n\t\tcase protoreflect.MessageKind:\n\t\t\treturn getMessageInfo(ft), makeMessageSliceFieldCoder(fd, ft)\n\t\tcase protoreflect.GroupKind:\n\t\t\treturn getMessageInfo(ft), makeGroupSliceFieldCoder(fd, ft)\n\t\t}\n\tcase fd.Cardinality() == protoreflect.Repeated && fd.IsPacked():\n\t\t// Packed repeated fields.\n\t\t//\n\t\t// Only repeated fields of primitive numeric types\n\t\t// (Varint, Fixed32, or Fixed64 wire type) can be packed.\n\t\tif ft.Kind() != reflect.Slice {\n\t\t\tbreak\n\t\t}\n\t\tft := ft.Elem()\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBoolPackedSlice\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnumPackedSlice\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloatPackedSlice\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDoublePackedSlice\n\t\t\t}\n\t\t}\n\tcase fd.Kind() == protoreflect.MessageKind:\n\t\treturn getMessageInfo(ft), makeMessageFieldCoder(fd, ft)\n\tcase fd.Kind() == protoreflect.GroupKind:\n\t\treturn getMessageInfo(ft), makeGroupFieldCoder(fd, ft)\n\tcase !fd.HasPresence() && fd.ContainingOneof() == nil:\n\t\t// Populated oneof fields always encode even if set to the zero value,\n\t\t// which normally are not encoded in proto3.\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBoolNoZero\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnumNoZero\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32NoZero\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32NoZero\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32NoZero\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64NoZero\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64NoZero\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64NoZero\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32NoZero\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32NoZero\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloatNoZero\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64NoZero\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64NoZero\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDoubleNoZero\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderStringNoZeroValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringNoZero\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderBytesNoZeroValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytesNoZero\n\t\t\t}\n\t\tcase protoreflect.BytesKind:\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringNoZero\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytesNoZero\n\t\t\t}\n\t\t}\n\tcase ft.Kind() == reflect.Ptr:\n\t\tft := ft.Elem()\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBoolPtr\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnumPtr\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32Ptr\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32Ptr\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32Ptr\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64Ptr\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64Ptr\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64Ptr\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32Ptr\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32Ptr\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloatPtr\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64Ptr\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64Ptr\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDoublePtr\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderStringPtrValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringPtr\n\t\t\t}\n\t\tcase protoreflect.BytesKind:\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringPtr\n\t\t\t}\n\t\t}\n\tdefault:\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBool\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnum\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloat\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDouble\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderStringValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderString\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderBytesValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytes\n\t\t\t}\n\t\tcase protoreflect.BytesKind:\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderString\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytes\n\t\t\t}\n\t\t}\n\t}\n\tpanic(fmt.Sprintf(\"invalid type: no encoder for %v %v %v/%v\", fd.FullName(), fd.Cardinality(), fd.Kind(), ft))\n}\n\n// encoderFuncsForValue returns value functions for a field, used for\n// extension values and map encoding.\nfunc encoderFuncsForValue(fd protoreflect.FieldDescriptor) valueCoderFuncs {\n\tswitch {\n\tcase fd.Cardinality() == protoreflect.Repeated && !fd.IsPacked():\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\treturn coderBoolSliceValue\n\t\tcase protoreflect.EnumKind:\n\t\t\treturn coderEnumSliceValue\n\t\tcase protoreflect.Int32Kind:\n\t\t\treturn coderInt32SliceValue\n\t\tcase protoreflect.Sint32Kind:\n\t\t\treturn coderSint32SliceValue\n\t\tcase protoreflect.Uint32Kind:\n\t\t\treturn coderUint32SliceValue\n\t\tcase protoreflect.Int64Kind:\n\t\t\treturn coderInt64SliceValue\n\t\tcase protoreflect.Sint64Kind:\n\t\t\treturn coderSint64SliceValue\n\t\tcase protoreflect.Uint64Kind:\n\t\t\treturn coderUint64SliceValue\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\treturn coderSfixed32SliceValue\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\treturn coderFixed32SliceValue\n\t\tcase protoreflect.FloatKind:\n\t\t\treturn coderFloatSliceValue\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\treturn coderSfixed64SliceValue\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\treturn coderFixed64SliceValue\n\t\tcase protoreflect.DoubleKind:\n\t\t\treturn coderDoubleSliceValue\n\t\tcase protoreflect.StringKind:\n\t\t\t// We don't have a UTF-8 validating coder for repeated string fields.\n\t\t\t// Value coders are used for extensions and maps.\n\t\t\t// Extensions are never proto3, and maps never contain lists.\n\t\t\treturn coderStringSliceValue\n\t\tcase protoreflect.BytesKind:\n\t\t\treturn coderBytesSliceValue\n\t\tcase protoreflect.MessageKind:\n\t\t\treturn coderMessageSliceValue\n\t\tcase protoreflect.GroupKind:\n\t\t\treturn coderGroupSliceValue\n\t\t}\n\tcase fd.Cardinality() == protoreflect.Repeated && fd.IsPacked():\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\treturn coderBoolPackedSliceValue\n\t\tcase protoreflect.EnumKind:\n\t\t\treturn coderEnumPackedSliceValue\n\t\tcase protoreflect.Int32Kind:\n\t\t\treturn coderInt32PackedSliceValue\n\t\tcase protoreflect.Sint32Kind:\n\t\t\treturn coderSint32PackedSliceValue\n\t\tcase protoreflect.Uint32Kind:\n\t\t\treturn coderUint32PackedSliceValue\n\t\tcase protoreflect.Int64Kind:\n\t\t\treturn coderInt64PackedSliceValue\n\t\tcase protoreflect.Sint64Kind:\n\t\t\treturn coderSint64PackedSliceValue\n\t\tcase protoreflect.Uint64Kind:\n\t\t\treturn coderUint64PackedSliceValue\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\treturn coderSfixed32PackedSliceValue\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\treturn coderFixed32PackedSliceValue\n\t\tcase protoreflect.FloatKind:\n\t\t\treturn coderFloatPackedSliceValue\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\treturn coderSfixed64PackedSliceValue\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\treturn coderFixed64PackedSliceValue\n\t\tcase protoreflect.DoubleKind:\n\t\t\treturn coderDoublePackedSliceValue\n\t\t}\n\tdefault:\n\t\tswitch fd.Kind() {\n\t\tdefault:\n\t\tcase protoreflect.BoolKind:\n\t\t\treturn coderBoolValue\n\t\tcase protoreflect.EnumKind:\n\t\t\treturn coderEnumValue\n\t\tcase protoreflect.Int32Kind:\n\t\t\treturn coderInt32Value\n\t\tcase protoreflect.Sint32Kind:\n\t\t\treturn coderSint32Value\n\t\tcase protoreflect.Uint32Kind:\n\t\t\treturn coderUint32Value\n\t\tcase protoreflect.Int64Kind:\n\t\t\treturn coderInt64Value\n\t\tcase protoreflect.Sint64Kind:\n\t\t\treturn coderSint64Value\n\t\tcase protoreflect.Uint64Kind:\n\t\t\treturn coderUint64Value\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\treturn coderSfixed32Value\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\treturn coderFixed32Value\n\t\tcase protoreflect.FloatKind:\n\t\t\treturn coderFloatValue\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\treturn coderSfixed64Value\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\treturn coderFixed64Value\n\t\tcase protoreflect.DoubleKind:\n\t\t\treturn coderDoubleValue\n\t\tcase protoreflect.StringKind:\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\treturn coderStringValueValidateUTF8\n\t\t\t}\n\t\t\treturn coderStringValue\n\t\tcase protoreflect.BytesKind:\n\t\t\treturn coderBytesValue\n\t\tcase protoreflect.MessageKind:\n\t\t\treturn coderMessageValue\n\t\tcase protoreflect.GroupKind:\n\t\t\treturn coderGroupValue\n\t\t}\n\t}\n\tpanic(fmt.Sprintf(\"invalid field: no encoder for %v %v %v\", fd.FullName(), fd.Cardinality(), fd.Kind()))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\n// When using unsafe pointers, we can just treat enum values as int32s.\n\nvar (\n\tcoderEnumNoZero      = coderInt32NoZero\n\tcoderEnum            = coderInt32\n\tcoderEnumPtr         = coderInt32Ptr\n\tcoderEnumSlice       = coderInt32Slice\n\tcoderEnumPackedSlice = coderInt32PackedSlice\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/convert.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// unwrapper unwraps the value to the underlying value.\n// This is implemented by List and Map.\ntype unwrapper interface {\n\tprotoUnwrap() any\n}\n\n// A Converter coverts to/from Go reflect.Value types and protobuf protoreflect.Value types.\ntype Converter interface {\n\t// PBValueOf converts a reflect.Value to a protoreflect.Value.\n\tPBValueOf(reflect.Value) protoreflect.Value\n\n\t// GoValueOf converts a protoreflect.Value to a reflect.Value.\n\tGoValueOf(protoreflect.Value) reflect.Value\n\n\t// IsValidPB returns whether a protoreflect.Value is compatible with this type.\n\tIsValidPB(protoreflect.Value) bool\n\n\t// IsValidGo returns whether a reflect.Value is compatible with this type.\n\tIsValidGo(reflect.Value) bool\n\n\t// New returns a new field value.\n\t// For scalars, it returns the default value of the field.\n\t// For composite types, it returns a new mutable value.\n\tNew() protoreflect.Value\n\n\t// Zero returns a new field value.\n\t// For scalars, it returns the default value of the field.\n\t// For composite types, it returns an immutable, empty value.\n\tZero() protoreflect.Value\n}\n\n// NewConverter matches a Go type with a protobuf field and returns a Converter\n// that converts between the two. Enums must be a named int32 kind that\n// implements protoreflect.Enum, and messages must be pointer to a named\n// struct type that implements protoreflect.ProtoMessage.\n//\n// This matcher deliberately supports a wider range of Go types than what\n// protoc-gen-go historically generated to be able to automatically wrap some\n// v1 messages generated by other forks of protoc-gen-go.\nfunc NewConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter {\n\tswitch {\n\tcase fd.IsList():\n\t\treturn newListConverter(t, fd)\n\tcase fd.IsMap():\n\t\treturn newMapConverter(t, fd)\n\tdefault:\n\t\treturn newSingularConverter(t, fd)\n\t}\n}\n\nvar (\n\tboolType    = reflect.TypeOf(bool(false))\n\tint32Type   = reflect.TypeOf(int32(0))\n\tint64Type   = reflect.TypeOf(int64(0))\n\tuint32Type  = reflect.TypeOf(uint32(0))\n\tuint64Type  = reflect.TypeOf(uint64(0))\n\tfloat32Type = reflect.TypeOf(float32(0))\n\tfloat64Type = reflect.TypeOf(float64(0))\n\tstringType  = reflect.TypeOf(string(\"\"))\n\tbytesType   = reflect.TypeOf([]byte(nil))\n\tbyteType    = reflect.TypeOf(byte(0))\n)\n\nvar (\n\tboolZero    = protoreflect.ValueOfBool(false)\n\tint32Zero   = protoreflect.ValueOfInt32(0)\n\tint64Zero   = protoreflect.ValueOfInt64(0)\n\tuint32Zero  = protoreflect.ValueOfUint32(0)\n\tuint64Zero  = protoreflect.ValueOfUint64(0)\n\tfloat32Zero = protoreflect.ValueOfFloat32(0)\n\tfloat64Zero = protoreflect.ValueOfFloat64(0)\n\tstringZero  = protoreflect.ValueOfString(\"\")\n\tbytesZero   = protoreflect.ValueOfBytes(nil)\n)\n\nfunc newSingularConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter {\n\tdefVal := func(fd protoreflect.FieldDescriptor, zero protoreflect.Value) protoreflect.Value {\n\t\tif fd.Cardinality() == protoreflect.Repeated {\n\t\t\t// Default isn't defined for repeated fields.\n\t\t\treturn zero\n\t\t}\n\t\treturn fd.Default()\n\t}\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tif t.Kind() == reflect.Bool {\n\t\t\treturn &boolConverter{t, defVal(fd, boolZero)}\n\t\t}\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif t.Kind() == reflect.Int32 {\n\t\t\treturn &int32Converter{t, defVal(fd, int32Zero)}\n\t\t}\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif t.Kind() == reflect.Int64 {\n\t\t\treturn &int64Converter{t, defVal(fd, int64Zero)}\n\t\t}\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif t.Kind() == reflect.Uint32 {\n\t\t\treturn &uint32Converter{t, defVal(fd, uint32Zero)}\n\t\t}\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif t.Kind() == reflect.Uint64 {\n\t\t\treturn &uint64Converter{t, defVal(fd, uint64Zero)}\n\t\t}\n\tcase protoreflect.FloatKind:\n\t\tif t.Kind() == reflect.Float32 {\n\t\t\treturn &float32Converter{t, defVal(fd, float32Zero)}\n\t\t}\n\tcase protoreflect.DoubleKind:\n\t\tif t.Kind() == reflect.Float64 {\n\t\t\treturn &float64Converter{t, defVal(fd, float64Zero)}\n\t\t}\n\tcase protoreflect.StringKind:\n\t\tif t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) {\n\t\t\treturn &stringConverter{t, defVal(fd, stringZero)}\n\t\t}\n\tcase protoreflect.BytesKind:\n\t\tif t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) {\n\t\t\treturn &bytesConverter{t, defVal(fd, bytesZero)}\n\t\t}\n\tcase protoreflect.EnumKind:\n\t\t// Handle enums, which must be a named int32 type.\n\t\tif t.Kind() == reflect.Int32 {\n\t\t\treturn newEnumConverter(t, fd)\n\t\t}\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn newMessageConverter(t)\n\t}\n\tpanic(fmt.Sprintf(\"invalid Go type %v for field %v\", t, fd.FullName()))\n}\n\ntype boolConverter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *boolConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfBool(v.Bool())\n}\nfunc (c *boolConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(v.Bool()).Convert(c.goType)\n}\nfunc (c *boolConverter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(bool)\n\treturn ok\n}\nfunc (c *boolConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *boolConverter) New() protoreflect.Value  { return c.def }\nfunc (c *boolConverter) Zero() protoreflect.Value { return c.def }\n\ntype int32Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *int32Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfInt32(int32(v.Int()))\n}\nfunc (c *int32Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(int32(v.Int())).Convert(c.goType)\n}\nfunc (c *int32Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(int32)\n\treturn ok\n}\nfunc (c *int32Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *int32Converter) New() protoreflect.Value  { return c.def }\nfunc (c *int32Converter) Zero() protoreflect.Value { return c.def }\n\ntype int64Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *int64Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfInt64(int64(v.Int()))\n}\nfunc (c *int64Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(int64(v.Int())).Convert(c.goType)\n}\nfunc (c *int64Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(int64)\n\treturn ok\n}\nfunc (c *int64Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *int64Converter) New() protoreflect.Value  { return c.def }\nfunc (c *int64Converter) Zero() protoreflect.Value { return c.def }\n\ntype uint32Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *uint32Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfUint32(uint32(v.Uint()))\n}\nfunc (c *uint32Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(uint32(v.Uint())).Convert(c.goType)\n}\nfunc (c *uint32Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(uint32)\n\treturn ok\n}\nfunc (c *uint32Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *uint32Converter) New() protoreflect.Value  { return c.def }\nfunc (c *uint32Converter) Zero() protoreflect.Value { return c.def }\n\ntype uint64Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *uint64Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfUint64(uint64(v.Uint()))\n}\nfunc (c *uint64Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(uint64(v.Uint())).Convert(c.goType)\n}\nfunc (c *uint64Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(uint64)\n\treturn ok\n}\nfunc (c *uint64Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *uint64Converter) New() protoreflect.Value  { return c.def }\nfunc (c *uint64Converter) Zero() protoreflect.Value { return c.def }\n\ntype float32Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *float32Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfFloat32(float32(v.Float()))\n}\nfunc (c *float32Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(float32(v.Float())).Convert(c.goType)\n}\nfunc (c *float32Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(float32)\n\treturn ok\n}\nfunc (c *float32Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *float32Converter) New() protoreflect.Value  { return c.def }\nfunc (c *float32Converter) Zero() protoreflect.Value { return c.def }\n\ntype float64Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *float64Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfFloat64(float64(v.Float()))\n}\nfunc (c *float64Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(float64(v.Float())).Convert(c.goType)\n}\nfunc (c *float64Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(float64)\n\treturn ok\n}\nfunc (c *float64Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *float64Converter) New() protoreflect.Value  { return c.def }\nfunc (c *float64Converter) Zero() protoreflect.Value { return c.def }\n\ntype stringConverter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *stringConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfString(v.Convert(stringType).String())\n}\nfunc (c *stringConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\t// protoreflect.Value.String never panics, so we go through an interface\n\t// conversion here to check the type.\n\ts := v.Interface().(string)\n\tif c.goType.Kind() == reflect.Slice && s == \"\" {\n\t\treturn reflect.Zero(c.goType) // ensure empty string is []byte(nil)\n\t}\n\treturn reflect.ValueOf(s).Convert(c.goType)\n}\nfunc (c *stringConverter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(string)\n\treturn ok\n}\nfunc (c *stringConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *stringConverter) New() protoreflect.Value  { return c.def }\nfunc (c *stringConverter) Zero() protoreflect.Value { return c.def }\n\ntype bytesConverter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *bytesConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\tif c.goType.Kind() == reflect.String && v.Len() == 0 {\n\t\treturn protoreflect.ValueOfBytes(nil) // ensure empty string is []byte(nil)\n\t}\n\treturn protoreflect.ValueOfBytes(v.Convert(bytesType).Bytes())\n}\nfunc (c *bytesConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(v.Bytes()).Convert(c.goType)\n}\nfunc (c *bytesConverter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().([]byte)\n\treturn ok\n}\nfunc (c *bytesConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *bytesConverter) New() protoreflect.Value  { return c.def }\nfunc (c *bytesConverter) Zero() protoreflect.Value { return c.def }\n\ntype enumConverter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc newEnumConverter(goType reflect.Type, fd protoreflect.FieldDescriptor) Converter {\n\tvar def protoreflect.Value\n\tif fd.Cardinality() == protoreflect.Repeated {\n\t\tdef = protoreflect.ValueOfEnum(fd.Enum().Values().Get(0).Number())\n\t} else {\n\t\tdef = fd.Default()\n\t}\n\treturn &enumConverter{goType, def}\n}\n\nfunc (c *enumConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(v.Int()))\n}\n\nfunc (c *enumConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(v.Enum()).Convert(c.goType)\n}\n\nfunc (c *enumConverter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(protoreflect.EnumNumber)\n\treturn ok\n}\n\nfunc (c *enumConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *enumConverter) New() protoreflect.Value {\n\treturn c.def\n}\n\nfunc (c *enumConverter) Zero() protoreflect.Value {\n\treturn c.def\n}\n\ntype messageConverter struct {\n\tgoType reflect.Type\n}\n\nfunc newMessageConverter(goType reflect.Type) Converter {\n\treturn &messageConverter{goType}\n}\n\nfunc (c *messageConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\tif c.isNonPointer() {\n\t\tif v.CanAddr() {\n\t\t\tv = v.Addr() // T => *T\n\t\t} else {\n\t\t\tv = reflect.Zero(reflect.PtrTo(v.Type()))\n\t\t}\n\t}\n\tif m, ok := v.Interface().(protoreflect.ProtoMessage); ok {\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\t}\n\treturn protoreflect.ValueOfMessage(legacyWrapMessage(v))\n}\n\nfunc (c *messageConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\tm := v.Message()\n\tvar rv reflect.Value\n\tif u, ok := m.(unwrapper); ok {\n\t\trv = reflect.ValueOf(u.protoUnwrap())\n\t} else {\n\t\trv = reflect.ValueOf(m.Interface())\n\t}\n\tif c.isNonPointer() {\n\t\tif rv.Type() != reflect.PtrTo(c.goType) {\n\t\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", rv.Type(), reflect.PtrTo(c.goType)))\n\t\t}\n\t\tif !rv.IsNil() {\n\t\t\trv = rv.Elem() // *T => T\n\t\t} else {\n\t\t\trv = reflect.Zero(rv.Type().Elem())\n\t\t}\n\t}\n\tif rv.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", rv.Type(), c.goType))\n\t}\n\treturn rv\n}\n\nfunc (c *messageConverter) IsValidPB(v protoreflect.Value) bool {\n\tm := v.Message()\n\tvar rv reflect.Value\n\tif u, ok := m.(unwrapper); ok {\n\t\trv = reflect.ValueOf(u.protoUnwrap())\n\t} else {\n\t\trv = reflect.ValueOf(m.Interface())\n\t}\n\tif c.isNonPointer() {\n\t\treturn rv.Type() == reflect.PtrTo(c.goType)\n\t}\n\treturn rv.Type() == c.goType\n}\n\nfunc (c *messageConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *messageConverter) New() protoreflect.Value {\n\tif c.isNonPointer() {\n\t\treturn c.PBValueOf(reflect.New(c.goType).Elem())\n\t}\n\treturn c.PBValueOf(reflect.New(c.goType.Elem()))\n}\n\nfunc (c *messageConverter) Zero() protoreflect.Value {\n\treturn c.PBValueOf(reflect.Zero(c.goType))\n}\n\n// isNonPointer reports whether the type is a non-pointer type.\n// This never occurs for generated message types.\nfunc (c *messageConverter) isNonPointer() bool {\n\treturn c.goType.Kind() != reflect.Ptr\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/convert_list.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc newListConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter {\n\tswitch {\n\tcase t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Slice:\n\t\treturn &listPtrConverter{t, newSingularConverter(t.Elem().Elem(), fd)}\n\tcase t.Kind() == reflect.Slice:\n\t\treturn &listConverter{t, newSingularConverter(t.Elem(), fd)}\n\t}\n\tpanic(fmt.Sprintf(\"invalid Go type %v for field %v\", t, fd.FullName()))\n}\n\ntype listConverter struct {\n\tgoType reflect.Type // []T\n\tc      Converter\n}\n\nfunc (c *listConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\tpv := reflect.New(c.goType)\n\tpv.Elem().Set(v)\n\treturn protoreflect.ValueOfList(&listReflect{pv, c.c})\n}\n\nfunc (c *listConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\trv := v.List().(*listReflect).v\n\tif rv.IsNil() {\n\t\treturn reflect.Zero(c.goType)\n\t}\n\treturn rv.Elem()\n}\n\nfunc (c *listConverter) IsValidPB(v protoreflect.Value) bool {\n\tlist, ok := v.Interface().(*listReflect)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn list.v.Type().Elem() == c.goType\n}\n\nfunc (c *listConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *listConverter) New() protoreflect.Value {\n\treturn protoreflect.ValueOfList(&listReflect{reflect.New(c.goType), c.c})\n}\n\nfunc (c *listConverter) Zero() protoreflect.Value {\n\treturn protoreflect.ValueOfList(&listReflect{reflect.Zero(reflect.PtrTo(c.goType)), c.c})\n}\n\ntype listPtrConverter struct {\n\tgoType reflect.Type // *[]T\n\tc      Converter\n}\n\nfunc (c *listPtrConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfList(&listReflect{v, c.c})\n}\n\nfunc (c *listPtrConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn v.List().(*listReflect).v\n}\n\nfunc (c *listPtrConverter) IsValidPB(v protoreflect.Value) bool {\n\tlist, ok := v.Interface().(*listReflect)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn list.v.Type() == c.goType\n}\n\nfunc (c *listPtrConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *listPtrConverter) New() protoreflect.Value {\n\treturn c.PBValueOf(reflect.New(c.goType.Elem()))\n}\n\nfunc (c *listPtrConverter) Zero() protoreflect.Value {\n\treturn c.PBValueOf(reflect.Zero(c.goType))\n}\n\ntype listReflect struct {\n\tv    reflect.Value // *[]T\n\tconv Converter\n}\n\nfunc (ls *listReflect) Len() int {\n\tif ls.v.IsNil() {\n\t\treturn 0\n\t}\n\treturn ls.v.Elem().Len()\n}\nfunc (ls *listReflect) Get(i int) protoreflect.Value {\n\treturn ls.conv.PBValueOf(ls.v.Elem().Index(i))\n}\nfunc (ls *listReflect) Set(i int, v protoreflect.Value) {\n\tls.v.Elem().Index(i).Set(ls.conv.GoValueOf(v))\n}\nfunc (ls *listReflect) Append(v protoreflect.Value) {\n\tls.v.Elem().Set(reflect.Append(ls.v.Elem(), ls.conv.GoValueOf(v)))\n}\nfunc (ls *listReflect) AppendMutable() protoreflect.Value {\n\tif _, ok := ls.conv.(*messageConverter); !ok {\n\t\tpanic(\"invalid AppendMutable on list with non-message type\")\n\t}\n\tv := ls.NewElement()\n\tls.Append(v)\n\treturn v\n}\nfunc (ls *listReflect) Truncate(i int) {\n\tls.v.Elem().Set(ls.v.Elem().Slice(0, i))\n}\nfunc (ls *listReflect) NewElement() protoreflect.Value {\n\treturn ls.conv.New()\n}\nfunc (ls *listReflect) IsValid() bool {\n\treturn !ls.v.IsNil()\n}\nfunc (ls *listReflect) protoUnwrap() any {\n\treturn ls.v.Interface()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/convert_map.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype mapConverter struct {\n\tgoType           reflect.Type // map[K]V\n\tkeyConv, valConv Converter\n}\n\nfunc newMapConverter(t reflect.Type, fd protoreflect.FieldDescriptor) *mapConverter {\n\tif t.Kind() != reflect.Map {\n\t\tpanic(fmt.Sprintf(\"invalid Go type %v for field %v\", t, fd.FullName()))\n\t}\n\treturn &mapConverter{\n\t\tgoType:  t,\n\t\tkeyConv: newSingularConverter(t.Key(), fd.MapKey()),\n\t\tvalConv: newSingularConverter(t.Elem(), fd.MapValue()),\n\t}\n}\n\nfunc (c *mapConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfMap(&mapReflect{v, c.keyConv, c.valConv})\n}\n\nfunc (c *mapConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn v.Map().(*mapReflect).v\n}\n\nfunc (c *mapConverter) IsValidPB(v protoreflect.Value) bool {\n\tmapv, ok := v.Interface().(*mapReflect)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn mapv.v.Type() == c.goType\n}\n\nfunc (c *mapConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *mapConverter) New() protoreflect.Value {\n\treturn c.PBValueOf(reflect.MakeMap(c.goType))\n}\n\nfunc (c *mapConverter) Zero() protoreflect.Value {\n\treturn c.PBValueOf(reflect.Zero(c.goType))\n}\n\ntype mapReflect struct {\n\tv       reflect.Value // map[K]V\n\tkeyConv Converter\n\tvalConv Converter\n}\n\nfunc (ms *mapReflect) Len() int {\n\treturn ms.v.Len()\n}\nfunc (ms *mapReflect) Has(k protoreflect.MapKey) bool {\n\trk := ms.keyConv.GoValueOf(k.Value())\n\trv := ms.v.MapIndex(rk)\n\treturn rv.IsValid()\n}\nfunc (ms *mapReflect) Get(k protoreflect.MapKey) protoreflect.Value {\n\trk := ms.keyConv.GoValueOf(k.Value())\n\trv := ms.v.MapIndex(rk)\n\tif !rv.IsValid() {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn ms.valConv.PBValueOf(rv)\n}\nfunc (ms *mapReflect) Set(k protoreflect.MapKey, v protoreflect.Value) {\n\trk := ms.keyConv.GoValueOf(k.Value())\n\trv := ms.valConv.GoValueOf(v)\n\tms.v.SetMapIndex(rk, rv)\n}\nfunc (ms *mapReflect) Clear(k protoreflect.MapKey) {\n\trk := ms.keyConv.GoValueOf(k.Value())\n\tms.v.SetMapIndex(rk, reflect.Value{})\n}\nfunc (ms *mapReflect) Mutable(k protoreflect.MapKey) protoreflect.Value {\n\tif _, ok := ms.valConv.(*messageConverter); !ok {\n\t\tpanic(\"invalid Mutable on map with non-message value type\")\n\t}\n\tv := ms.Get(k)\n\tif !v.IsValid() {\n\t\tv = ms.NewValue()\n\t\tms.Set(k, v)\n\t}\n\treturn v\n}\nfunc (ms *mapReflect) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\titer := ms.v.MapRange()\n\tfor iter.Next() {\n\t\tk := ms.keyConv.PBValueOf(iter.Key()).MapKey()\n\t\tv := ms.valConv.PBValueOf(iter.Value())\n\t\tif !f(k, v) {\n\t\t\treturn\n\t\t}\n\t}\n}\nfunc (ms *mapReflect) NewValue() protoreflect.Value {\n\treturn ms.valConv.New()\n}\nfunc (ms *mapReflect) IsValid() bool {\n\treturn !ms.v.IsNil()\n}\nfunc (ms *mapReflect) protoUnwrap() any {\n\treturn ms.v.Interface()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/decode.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"math/bits\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nvar errDecode = errors.New(\"cannot parse invalid wire-format data\")\nvar errRecursionDepth = errors.New(\"exceeded maximum recursion depth\")\n\ntype unmarshalOptions struct {\n\tflags    protoiface.UnmarshalInputFlags\n\tresolver interface {\n\t\tFindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)\n\t\tFindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)\n\t}\n\tdepth int\n}\n\nfunc (o unmarshalOptions) Options() proto.UnmarshalOptions {\n\treturn proto.UnmarshalOptions{\n\t\tMerge:          true,\n\t\tAllowPartial:   true,\n\t\tDiscardUnknown: o.DiscardUnknown(),\n\t\tResolver:       o.resolver,\n\n\t\tNoLazyDecoding: o.NoLazyDecoding(),\n\t}\n}\n\nfunc (o unmarshalOptions) DiscardUnknown() bool {\n\treturn o.flags&protoiface.UnmarshalDiscardUnknown != 0\n}\n\nfunc (o unmarshalOptions) AliasBuffer() bool { return o.flags&protoiface.UnmarshalAliasBuffer != 0 }\nfunc (o unmarshalOptions) Validated() bool   { return o.flags&protoiface.UnmarshalValidated != 0 }\nfunc (o unmarshalOptions) NoLazyDecoding() bool {\n\treturn o.flags&protoiface.UnmarshalNoLazyDecoding != 0\n}\n\nfunc (o unmarshalOptions) CanBeLazy() bool {\n\tif o.resolver != protoregistry.GlobalTypes {\n\t\treturn false\n\t}\n\t// We ignore the UnmarshalInvalidateSizeCache even though it's not in the default set\n\treturn (o.flags & ^(protoiface.UnmarshalAliasBuffer | protoiface.UnmarshalValidated | protoiface.UnmarshalCheckRequired)) == 0\n}\n\nvar lazyUnmarshalOptions = unmarshalOptions{\n\tresolver: protoregistry.GlobalTypes,\n\n\tflags: protoiface.UnmarshalAliasBuffer | protoiface.UnmarshalValidated,\n\n\tdepth: protowire.DefaultRecursionLimit,\n}\n\ntype unmarshalOutput struct {\n\tn           int // number of bytes consumed\n\tinitialized bool\n}\n\n// unmarshal is protoreflect.Methods.Unmarshal.\nfunc (mi *MessageInfo) unmarshal(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\tvar p pointer\n\tif ms, ok := in.Message.(*messageState); ok {\n\t\tp = ms.pointer()\n\t} else {\n\t\tp = in.Message.(*messageReflectWrapper).pointer()\n\t}\n\tout, err := mi.unmarshalPointer(in.Buf, p, 0, unmarshalOptions{\n\t\tflags:    in.Flags,\n\t\tresolver: in.Resolver,\n\t\tdepth:    in.Depth,\n\t})\n\tvar flags protoiface.UnmarshalOutputFlags\n\tif out.initialized {\n\t\tflags |= protoiface.UnmarshalInitialized\n\t}\n\treturn protoiface.UnmarshalOutput{\n\t\tFlags: flags,\n\t}, err\n}\n\n// errUnknown is returned during unmarshaling to indicate a parse error that\n// should result in a field being placed in the unknown fields section (for example,\n// when the wire type doesn't match) as opposed to the entire unmarshal operation\n// failing (for example, when a field extends past the available input).\n//\n// This is a sentinel error which should never be visible to the user.\nvar errUnknown = errors.New(\"unknown\")\n\nfunc (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tmi.init()\n\tif opts.depth--; opts.depth < 0 {\n\t\treturn out, errRecursionDepth\n\t}\n\tif flags.ProtoLegacy && mi.isMessageSet {\n\t\treturn unmarshalMessageSet(mi, b, p, opts)\n\t}\n\n\tlazyDecoding := LazyEnabled() // default\n\tif opts.NoLazyDecoding() {\n\t\tlazyDecoding = false // explicitly disabled\n\t}\n\tif mi.lazyOffset.IsValid() && lazyDecoding {\n\t\treturn mi.unmarshalPointerLazy(b, p, groupTag, opts)\n\t}\n\treturn mi.unmarshalPointerEager(b, p, groupTag, opts)\n}\n\n// unmarshalPointerEager is the message unmarshalling function for all messages that are not lazy.\n// The corresponding function for Lazy is in google_lazy.go.\nfunc (mi *MessageInfo) unmarshalPointerEager(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\n\tinitialized := true\n\tvar requiredMask uint64\n\tvar exts *map[int32]ExtensionField\n\n\tvar presence presence\n\tif mi.presenceOffset.IsValid() {\n\t\tpresence = p.Apply(mi.presenceOffset).PresenceInfo()\n\t}\n\n\tstart := len(b)\n\tfor len(b) > 0 {\n\t\t// Parse the tag (field number and wire type).\n\t\tvar tag uint64\n\t\tif b[0] < 0x80 {\n\t\t\ttag = uint64(b[0])\n\t\t\tb = b[1:]\n\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\ttag = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\tb = b[2:]\n\t\t} else {\n\t\t\tvar n int\n\t\t\ttag, n = protowire.ConsumeVarint(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t}\n\t\tvar num protowire.Number\n\t\tif n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {\n\t\t\treturn out, errDecode\n\t\t} else {\n\t\t\tnum = protowire.Number(n)\n\t\t}\n\t\twtyp := protowire.Type(tag & 7)\n\n\t\tif wtyp == protowire.EndGroupType {\n\t\t\tif num != groupTag {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tgroupTag = 0\n\t\t\tbreak\n\t\t}\n\n\t\tvar f *coderFieldInfo\n\t\tif int(num) < len(mi.denseCoderFields) {\n\t\t\tf = mi.denseCoderFields[num]\n\t\t} else {\n\t\t\tf = mi.coderFields[num]\n\t\t}\n\t\tvar n int\n\t\terr := errUnknown\n\t\tswitch {\n\t\tcase f != nil:\n\t\t\tif f.funcs.unmarshal == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar o unmarshalOutput\n\t\t\to, err = f.funcs.unmarshal(b, p.Apply(f.offset), wtyp, f, opts)\n\t\t\tn = o.n\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\trequiredMask |= f.validation.requiredBit\n\t\t\tif f.funcs.isInit != nil && !o.initialized {\n\t\t\t\tinitialized = false\n\t\t\t}\n\n\t\t\tif f.presenceIndex != noPresence {\n\t\t\t\tpresence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)\n\t\t\t}\n\n\t\tdefault:\n\t\t\t// Possible extension.\n\t\t\tif exts == nil && mi.extensionOffset.IsValid() {\n\t\t\t\texts = p.Apply(mi.extensionOffset).Extensions()\n\t\t\t\tif *exts == nil {\n\t\t\t\t\t*exts = make(map[int32]ExtensionField)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif exts == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar o unmarshalOutput\n\t\t\to, err = mi.unmarshalExtension(b, num, wtyp, *exts, opts)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tn = o.n\n\t\t\tif !o.initialized {\n\t\t\t\tinitialized = false\n\t\t\t}\n\t\t}\n\t\tif err != nil {\n\t\t\tif err != errUnknown {\n\t\t\t\treturn out, err\n\t\t\t}\n\t\t\tn = protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tif !opts.DiscardUnknown() && mi.unknownOffset.IsValid() {\n\t\t\t\tu := mi.mutableUnknownBytes(p)\n\t\t\t\t*u = protowire.AppendTag(*u, num, wtyp)\n\t\t\t\t*u = append(*u, b[:n]...)\n\t\t\t}\n\t\t}\n\t\tb = b[n:]\n\t}\n\tif groupTag != 0 {\n\t\treturn out, errDecode\n\t}\n\tif mi.numRequiredFields > 0 && bits.OnesCount64(requiredMask) != int(mi.numRequiredFields) {\n\t\tinitialized = false\n\t}\n\tif initialized {\n\t\tout.initialized = true\n\t}\n\tout.n = start - len(b)\n\treturn out, nil\n}\n\nfunc (mi *MessageInfo) unmarshalExtension(b []byte, num protowire.Number, wtyp protowire.Type, exts map[int32]ExtensionField, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tx := exts[int32(num)]\n\txt := x.Type()\n\tif xt == nil {\n\t\tvar err error\n\t\txt, err = opts.resolver.FindExtensionByNumber(mi.Desc.FullName(), num)\n\t\tif err != nil {\n\t\t\tif err == protoregistry.NotFound {\n\t\t\t\treturn out, errUnknown\n\t\t\t}\n\t\t\treturn out, errors.New(\"%v: unable to resolve extension %v: %v\", mi.Desc.FullName(), num, err)\n\t\t}\n\t}\n\txi := getExtensionFieldInfo(xt)\n\tif xi.funcs.unmarshal == nil {\n\t\treturn out, errUnknown\n\t}\n\tif flags.LazyUnmarshalExtensions {\n\t\tif opts.CanBeLazy() && x.canLazy(xt) {\n\t\t\tout, valid := skipExtension(b, xi, num, wtyp, opts)\n\t\t\tswitch valid {\n\t\t\tcase ValidationValid:\n\t\t\t\tif out.initialized {\n\t\t\t\t\tx.appendLazyBytes(xt, xi, num, wtyp, b[:out.n])\n\t\t\t\t\texts[int32(num)] = x\n\t\t\t\t\treturn out, nil\n\t\t\t\t}\n\t\t\tcase ValidationInvalid:\n\t\t\t\treturn out, errDecode\n\t\t\tcase ValidationUnknown:\n\t\t\t}\n\t\t}\n\t}\n\tival := x.Value()\n\tif !ival.IsValid() && xi.unmarshalNeedsValue {\n\t\t// Create a new message, list, or map value to fill in.\n\t\t// For enums, create a prototype value to let the unmarshal func know the\n\t\t// concrete type.\n\t\tival = xt.New()\n\t}\n\tv, out, err := xi.funcs.unmarshal(b, ival, num, wtyp, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tif xi.funcs.isInit == nil {\n\t\tout.initialized = true\n\t}\n\tx.Set(xt, v)\n\texts[int32(num)] = x\n\treturn out, nil\n}\n\nfunc skipExtension(b []byte, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, _ ValidationStatus) {\n\tif xi.validation.mi == nil {\n\t\treturn out, ValidationUnknown\n\t}\n\txi.validation.mi.init()\n\tswitch xi.validation.typ {\n\tcase validationTypeMessage:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\n\t\tif opts.Validated() {\n\t\t\tout.initialized = true\n\t\t\tout.n = n\n\t\t\treturn out, ValidationValid\n\t\t}\n\n\t\tout, st := xi.validation.mi.validate(v, 0, opts)\n\t\tout.n = n\n\t\treturn out, st\n\tcase validationTypeGroup:\n\t\tif wtyp != protowire.StartGroupType {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\t\tout, st := xi.validation.mi.validate(b, num, opts)\n\t\treturn out, st\n\tdefault:\n\t\treturn out, ValidationUnknown\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/encode.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"math\"\n\t\"sort\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/protolazy\"\n\t\"google.golang.org/protobuf/proto\"\n\tpiface \"google.golang.org/protobuf/runtime/protoiface\"\n)\n\ntype marshalOptions struct {\n\tflags piface.MarshalInputFlags\n}\n\nfunc (o marshalOptions) Options() proto.MarshalOptions {\n\treturn proto.MarshalOptions{\n\t\tAllowPartial:  true,\n\t\tDeterministic: o.Deterministic(),\n\t\tUseCachedSize: o.UseCachedSize(),\n\t}\n}\n\nfunc (o marshalOptions) Deterministic() bool { return o.flags&piface.MarshalDeterministic != 0 }\nfunc (o marshalOptions) UseCachedSize() bool { return o.flags&piface.MarshalUseCachedSize != 0 }\n\n// size is protoreflect.Methods.Size.\nfunc (mi *MessageInfo) size(in piface.SizeInput) piface.SizeOutput {\n\tvar p pointer\n\tif ms, ok := in.Message.(*messageState); ok {\n\t\tp = ms.pointer()\n\t} else {\n\t\tp = in.Message.(*messageReflectWrapper).pointer()\n\t}\n\tsize := mi.sizePointer(p, marshalOptions{\n\t\tflags: in.Flags,\n\t})\n\treturn piface.SizeOutput{Size: size}\n}\n\nfunc (mi *MessageInfo) sizePointer(p pointer, opts marshalOptions) (size int) {\n\tmi.init()\n\tif p.IsNil() {\n\t\treturn 0\n\t}\n\tif opts.UseCachedSize() && mi.sizecacheOffset.IsValid() {\n\t\t// The size cache contains the size + 1, to allow the\n\t\t// zero value to be invalid, while also allowing for a\n\t\t// 0 size to be cached.\n\t\tif size := atomic.LoadInt32(p.Apply(mi.sizecacheOffset).Int32()); size > 0 {\n\t\t\treturn int(size - 1)\n\t\t}\n\t}\n\treturn mi.sizePointerSlow(p, opts)\n}\n\nfunc (mi *MessageInfo) sizePointerSlow(p pointer, opts marshalOptions) (size int) {\n\tif flags.ProtoLegacy && mi.isMessageSet {\n\t\tsize = sizeMessageSet(mi, p, opts)\n\t\tif mi.sizecacheOffset.IsValid() {\n\t\t\tatomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size+1))\n\t\t}\n\t\treturn size\n\t}\n\tif mi.extensionOffset.IsValid() {\n\t\te := p.Apply(mi.extensionOffset).Extensions()\n\t\tsize += mi.sizeExtensions(e, opts)\n\t}\n\n\tvar lazy **protolazy.XXX_lazyUnmarshalInfo\n\tvar presence presence\n\tif mi.presenceOffset.IsValid() {\n\t\tpresence = p.Apply(mi.presenceOffset).PresenceInfo()\n\t\tif mi.lazyOffset.IsValid() {\n\t\t\tlazy = p.Apply(mi.lazyOffset).LazyInfoPtr()\n\t\t}\n\t}\n\n\tfor _, f := range mi.orderedCoderFields {\n\t\tif f.funcs.size == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfptr := p.Apply(f.offset)\n\n\t\tif f.presenceIndex != noPresence {\n\t\t\tif !presence.Present(f.presenceIndex) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif f.isLazy && fptr.AtomicGetPointer().IsNil() {\n\t\t\t\tif lazyFields(opts) {\n\t\t\t\t\tsize += (*lazy).SizeField(uint32(f.num))\n\t\t\t\t\tcontinue\n\t\t\t\t} else {\n\t\t\t\t\tmi.lazyUnmarshal(p, f.num)\n\t\t\t\t}\n\t\t\t}\n\t\t\tsize += f.funcs.size(fptr, f, opts)\n\t\t\tcontinue\n\t\t}\n\n\t\tif f.isPointer && fptr.Elem().IsNil() {\n\t\t\tcontinue\n\t\t}\n\t\tsize += f.funcs.size(fptr, f, opts)\n\t}\n\tif mi.unknownOffset.IsValid() {\n\t\tif u := mi.getUnknownBytes(p); u != nil {\n\t\t\tsize += len(*u)\n\t\t}\n\t}\n\tif mi.sizecacheOffset.IsValid() {\n\t\tif size > (math.MaxInt32 - 1) {\n\t\t\t// The size is too large for the int32 sizecache field.\n\t\t\t// We will need to recompute the size when encoding;\n\t\t\t// unfortunately expensive, but better than invalid output.\n\t\t\tatomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), 0)\n\t\t} else {\n\t\t\t// The size cache contains the size + 1, to allow the\n\t\t\t// zero value to be invalid, while also allowing for a\n\t\t\t// 0 size to be cached.\n\t\t\tatomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size+1))\n\t\t}\n\t}\n\treturn size\n}\n\n// marshal is protoreflect.Methods.Marshal.\nfunc (mi *MessageInfo) marshal(in piface.MarshalInput) (out piface.MarshalOutput, err error) {\n\tvar p pointer\n\tif ms, ok := in.Message.(*messageState); ok {\n\t\tp = ms.pointer()\n\t} else {\n\t\tp = in.Message.(*messageReflectWrapper).pointer()\n\t}\n\tb, err := mi.marshalAppendPointer(in.Buf, p, marshalOptions{\n\t\tflags: in.Flags,\n\t})\n\treturn piface.MarshalOutput{Buf: b}, err\n}\n\nfunc (mi *MessageInfo) marshalAppendPointer(b []byte, p pointer, opts marshalOptions) ([]byte, error) {\n\tmi.init()\n\tif p.IsNil() {\n\t\treturn b, nil\n\t}\n\tif flags.ProtoLegacy && mi.isMessageSet {\n\t\treturn marshalMessageSet(mi, b, p, opts)\n\t}\n\tvar err error\n\t// The old marshaler encodes extensions at beginning.\n\tif mi.extensionOffset.IsValid() {\n\t\te := p.Apply(mi.extensionOffset).Extensions()\n\t\t// TODO: Special handling for MessageSet?\n\t\tb, err = mi.appendExtensions(b, e, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\n\tvar lazy **protolazy.XXX_lazyUnmarshalInfo\n\tvar presence presence\n\tif mi.presenceOffset.IsValid() {\n\t\tpresence = p.Apply(mi.presenceOffset).PresenceInfo()\n\t\tif mi.lazyOffset.IsValid() {\n\t\t\tlazy = p.Apply(mi.lazyOffset).LazyInfoPtr()\n\t\t}\n\t}\n\n\tfor _, f := range mi.orderedCoderFields {\n\t\tif f.funcs.marshal == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfptr := p.Apply(f.offset)\n\n\t\tif f.presenceIndex != noPresence {\n\t\t\tif !presence.Present(f.presenceIndex) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif f.isLazy {\n\t\t\t\t// Be careful, this field needs to be read atomically, like for a get\n\t\t\t\tif f.isPointer && fptr.AtomicGetPointer().IsNil() {\n\t\t\t\t\tif lazyFields(opts) {\n\t\t\t\t\t\tb, _ = (*lazy).AppendField(b, uint32(f.num))\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmi.lazyUnmarshal(p, f.num)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tb, err = f.funcs.marshal(b, fptr, f, opts)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn b, err\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t} else if f.isPointer && fptr.Elem().IsNil() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tb, err = f.funcs.marshal(b, fptr, f, opts)\n\t\t\tif err != nil {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif f.isPointer && fptr.Elem().IsNil() {\n\t\t\tcontinue\n\t\t}\n\t\tb, err = f.funcs.marshal(b, fptr, f, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\tif mi.unknownOffset.IsValid() && !mi.isMessageSet {\n\t\tif u := mi.getUnknownBytes(p); u != nil {\n\t\t\tb = append(b, (*u)...)\n\t\t}\n\t}\n\treturn b, nil\n}\n\n// fullyLazyExtensions returns true if we should attempt to keep extensions lazy over size and marshal.\nfunc fullyLazyExtensions(opts marshalOptions) bool {\n\t// When deterministic marshaling is requested, force an unmarshal for lazy\n\t// extensions to produce a deterministic result, instead of passing through\n\t// bytes lazily that may or may not match what Go Protobuf would produce.\n\treturn opts.flags&piface.MarshalDeterministic == 0\n}\n\n// lazyFields returns true if we should attempt to keep fields lazy over size and marshal.\nfunc lazyFields(opts marshalOptions) bool {\n\t// When deterministic marshaling is requested, force an unmarshal for lazy\n\t// fields to produce a deterministic result, instead of passing through\n\t// bytes lazily that may or may not match what Go Protobuf would produce.\n\treturn opts.flags&piface.MarshalDeterministic == 0\n}\n\nfunc (mi *MessageInfo) sizeExtensions(ext *map[int32]ExtensionField, opts marshalOptions) (n int) {\n\tif ext == nil {\n\t\treturn 0\n\t}\n\tfor _, x := range *ext {\n\t\txi := getExtensionFieldInfo(x.Type())\n\t\tif xi.funcs.size == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif fullyLazyExtensions(opts) {\n\t\t\t// Don't expand the extension, instead use the buffer to calculate size\n\t\t\tif lb := x.lazyBuffer(); lb != nil {\n\t\t\t\t// We got hold of the buffer, so it's still lazy.\n\t\t\t\tn += len(lb)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tn += xi.funcs.size(x.Value(), xi.tagsize, opts)\n\t}\n\treturn n\n}\n\nfunc (mi *MessageInfo) appendExtensions(b []byte, ext *map[int32]ExtensionField, opts marshalOptions) ([]byte, error) {\n\tif ext == nil {\n\t\treturn b, nil\n\t}\n\n\tswitch len(*ext) {\n\tcase 0:\n\t\treturn b, nil\n\tcase 1:\n\t\t// Fast-path for one extension: Don't bother sorting the keys.\n\t\tvar err error\n\t\tfor _, x := range *ext {\n\t\t\txi := getExtensionFieldInfo(x.Type())\n\t\t\tif fullyLazyExtensions(opts) {\n\t\t\t\t// Don't expand the extension if it's still in wire format, instead use the buffer content.\n\t\t\t\tif lb := x.lazyBuffer(); lb != nil {\n\t\t\t\t\tb = append(b, lb...)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tb, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts)\n\t\t}\n\t\treturn b, err\n\tdefault:\n\t\t// Sort the keys to provide a deterministic encoding.\n\t\t// Not sure this is required, but the old code does it.\n\t\tkeys := make([]int, 0, len(*ext))\n\t\tfor k := range *ext {\n\t\t\tkeys = append(keys, int(k))\n\t\t}\n\t\tsort.Ints(keys)\n\t\tvar err error\n\t\tfor _, k := range keys {\n\t\t\tx := (*ext)[int32(k)]\n\t\t\txi := getExtensionFieldInfo(x.Type())\n\t\t\tif fullyLazyExtensions(opts) {\n\t\t\t\t// Don't expand the extension if it's still in wire format, instead use the buffer content.\n\t\t\t\tif lb := x.lazyBuffer(); lb != nil {\n\t\t\t\t\tb = append(b, lb...)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tb, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts)\n\t\t\tif err != nil {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t}\n\t\treturn b, nil\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/enum.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype EnumInfo struct {\n\tGoReflectType reflect.Type // int32 kind\n\tDesc          protoreflect.EnumDescriptor\n}\n\nfunc (t *EnumInfo) New(n protoreflect.EnumNumber) protoreflect.Enum {\n\treturn reflect.ValueOf(n).Convert(t.GoReflectType).Interface().(protoreflect.Enum)\n}\nfunc (t *EnumInfo) Descriptor() protoreflect.EnumDescriptor { return t.Desc }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/equal.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"bytes\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nfunc equal(in protoiface.EqualInput) protoiface.EqualOutput {\n\treturn protoiface.EqualOutput{Equal: equalMessage(in.MessageA, in.MessageB)}\n}\n\n// equalMessage is a fast-path variant of protoreflect.equalMessage.\n// It takes advantage of the internal messageState type to avoid\n// unnecessary allocations, type assertions.\nfunc equalMessage(mx, my protoreflect.Message) bool {\n\tif mx == nil || my == nil {\n\t\treturn mx == my\n\t}\n\tif mx.Descriptor() != my.Descriptor() {\n\t\treturn false\n\t}\n\n\tmsx, ok := mx.(*messageState)\n\tif !ok {\n\t\treturn protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my))\n\t}\n\tmsy, ok := my.(*messageState)\n\tif !ok {\n\t\treturn protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my))\n\t}\n\n\tmi := msx.messageInfo()\n\tmiy := msy.messageInfo()\n\tif mi != miy {\n\t\treturn protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my))\n\t}\n\tmi.init()\n\t// Compares regular fields\n\t// Modified Message.Range code that compares two messages of the same type\n\t// while going over the fields.\n\tfor _, ri := range mi.rangeInfos {\n\t\tvar fd protoreflect.FieldDescriptor\n\t\tvar vx, vy protoreflect.Value\n\n\t\tswitch ri := ri.(type) {\n\t\tcase *fieldInfo:\n\t\t\thx := ri.has(msx.pointer())\n\t\t\thy := ri.has(msy.pointer())\n\t\t\tif hx != hy {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !hx {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfd = ri.fieldDesc\n\t\t\tvx = ri.get(msx.pointer())\n\t\t\tvy = ri.get(msy.pointer())\n\t\tcase *oneofInfo:\n\t\t\tfnx := ri.which(msx.pointer())\n\t\t\tfny := ri.which(msy.pointer())\n\t\t\tif fnx != fny {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif fnx <= 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfi := mi.fields[fnx]\n\t\t\tfd = fi.fieldDesc\n\t\t\tvx = fi.get(msx.pointer())\n\t\t\tvy = fi.get(msy.pointer())\n\t\t}\n\n\t\tif !equalValue(fd, vx, vy) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Compare extensions.\n\t// This is more complicated because mx or my could have empty/nil extension maps,\n\t// however some populated extension map values are equal to nil extension maps.\n\temx := mi.extensionMap(msx.pointer())\n\temy := mi.extensionMap(msy.pointer())\n\tif emx != nil {\n\t\tfor k, x := range *emx {\n\t\t\txd := x.Type().TypeDescriptor()\n\t\t\txv := x.Value()\n\t\t\tvar y ExtensionField\n\t\t\tok := false\n\t\t\tif emy != nil {\n\t\t\t\ty, ok = (*emy)[k]\n\t\t\t}\n\t\t\t// We need to treat empty lists as equal to nil values\n\t\t\tif emy == nil || !ok {\n\t\t\t\tif xd.IsList() && xv.List().Len() == 0 {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif !equalValue(xd, xv, y.Value()) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\tif emy != nil {\n\t\t// emy may have extensions emx does not have, need to check them as well\n\t\tfor k, y := range *emy {\n\t\t\tif emx != nil {\n\t\t\t\t// emx has the field, so we already checked it\n\t\t\t\tif _, ok := (*emx)[k]; ok {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Empty lists are equal to nil\n\t\t\tif y.Type().TypeDescriptor().IsList() && y.Value().List().Len() == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Cant be equal if the extension is populated\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn equalUnknown(mx.GetUnknown(), my.GetUnknown())\n}\n\nfunc equalValue(fd protoreflect.FieldDescriptor, vx, vy protoreflect.Value) bool {\n\t// slow path\n\tif fd.Kind() != protoreflect.MessageKind {\n\t\treturn vx.Equal(vy)\n\t}\n\n\t// fast path special cases\n\tif fd.IsMap() {\n\t\tif fd.MapValue().Kind() == protoreflect.MessageKind {\n\t\t\treturn equalMessageMap(vx.Map(), vy.Map())\n\t\t}\n\t\treturn vx.Equal(vy)\n\t}\n\n\tif fd.IsList() {\n\t\treturn equalMessageList(vx.List(), vy.List())\n\t}\n\n\treturn equalMessage(vx.Message(), vy.Message())\n}\n\n// Mostly copied from protoreflect.equalMap.\n// This variant only works for messages as map types.\n// All other map types should be handled via Value.Equal.\nfunc equalMessageMap(mx, my protoreflect.Map) bool {\n\tif mx.Len() != my.Len() {\n\t\treturn false\n\t}\n\tequal := true\n\tmx.Range(func(k protoreflect.MapKey, vx protoreflect.Value) bool {\n\t\tif !my.Has(k) {\n\t\t\tequal = false\n\t\t\treturn false\n\t\t}\n\t\tvy := my.Get(k)\n\t\tequal = equalMessage(vx.Message(), vy.Message())\n\t\treturn equal\n\t})\n\treturn equal\n}\n\n// Mostly copied from protoreflect.equalList.\n// The only change is the usage of equalImpl instead of protoreflect.equalValue.\nfunc equalMessageList(lx, ly protoreflect.List) bool {\n\tif lx.Len() != ly.Len() {\n\t\treturn false\n\t}\n\tfor i := 0; i < lx.Len(); i++ {\n\t\t// We only operate on messages here since equalImpl will not call us in any other case.\n\t\tif !equalMessage(lx.Get(i).Message(), ly.Get(i).Message()) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// equalUnknown compares unknown fields by direct comparison on the raw bytes\n// of each individual field number.\n// Copied from protoreflect.equalUnknown.\nfunc equalUnknown(x, y protoreflect.RawFields) bool {\n\tif len(x) != len(y) {\n\t\treturn false\n\t}\n\tif bytes.Equal([]byte(x), []byte(y)) {\n\t\treturn true\n\t}\n\n\tmx := make(map[protoreflect.FieldNumber]protoreflect.RawFields)\n\tmy := make(map[protoreflect.FieldNumber]protoreflect.RawFields)\n\tfor len(x) > 0 {\n\t\tfnum, _, n := protowire.ConsumeField(x)\n\t\tmx[fnum] = append(mx[fnum], x[:n]...)\n\t\tx = x[n:]\n\t}\n\tfor len(y) > 0 {\n\t\tfnum, _, n := protowire.ConsumeField(y)\n\t\tmy[fnum] = append(my[fnum], y[:n]...)\n\t\ty = y[n:]\n\t}\n\tif len(mx) != len(my) {\n\t\treturn false\n\t}\n\n\tfor k, v1 := range mx {\n\t\tif v2, ok := my[k]; !ok || !bytes.Equal([]byte(v1), []byte(v2)) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/extension.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// ExtensionInfo implements ExtensionType.\n//\n// This type contains a number of exported fields for legacy compatibility.\n// The only non-deprecated use of this type is through the methods of the\n// ExtensionType interface.\ntype ExtensionInfo struct {\n\t// An ExtensionInfo may exist in several stages of initialization.\n\t//\n\t// extensionInfoUninitialized: Some or all of the legacy exported\n\t// fields may be set, but none of the unexported fields have been\n\t// initialized. This is the starting state for an ExtensionInfo\n\t// in legacy generated code.\n\t//\n\t// extensionInfoDescInit: The desc field is set, but other unexported fields\n\t// may not be initialized. Legacy exported fields may or may not be set.\n\t// This is the starting state for an ExtensionInfo in newly generated code.\n\t//\n\t// extensionInfoFullInit: The ExtensionInfo is fully initialized.\n\t// This state is only entered after lazy initialization is complete.\n\tinit uint32\n\tmu   sync.Mutex\n\n\tgoType reflect.Type\n\tdesc   extensionTypeDescriptor\n\tconv   Converter\n\tinfo   *extensionFieldInfo // for fast-path method implementations\n\n\t// ExtendedType is a typed nil-pointer to the parent message type that\n\t// is being extended. It is possible for this to be unpopulated in v2\n\t// since the message may no longer implement the MessageV1 interface.\n\t//\n\t// Deprecated: Use the ExtendedType method instead.\n\tExtendedType protoiface.MessageV1\n\n\t// ExtensionType is the zero value of the extension type.\n\t//\n\t// For historical reasons, reflect.TypeOf(ExtensionType) and the\n\t// type returned by InterfaceOf may not be identical.\n\t//\n\t// Deprecated: Use InterfaceOf(xt.Zero()) instead.\n\tExtensionType any\n\n\t// Field is the field number of the extension.\n\t//\n\t// Deprecated: Use the Descriptor().Number method instead.\n\tField int32\n\n\t// Name is the fully qualified name of extension.\n\t//\n\t// Deprecated: Use the Descriptor().FullName method instead.\n\tName string\n\n\t// Tag is the protobuf struct tag used in the v1 API.\n\t//\n\t// Deprecated: Do not use.\n\tTag string\n\n\t// Filename is the proto filename in which the extension is defined.\n\t//\n\t// Deprecated: Use Descriptor().ParentFile().Path() instead.\n\tFilename string\n}\n\n// Stages of initialization: See the ExtensionInfo.init field.\nconst (\n\textensionInfoUninitialized = 0\n\textensionInfoDescInit      = 1\n\textensionInfoFullInit      = 2\n)\n\nfunc InitExtensionInfo(xi *ExtensionInfo, xd protoreflect.ExtensionDescriptor, goType reflect.Type) {\n\txi.goType = goType\n\txi.desc = extensionTypeDescriptor{xd, xi}\n\txi.init = extensionInfoDescInit\n}\n\nfunc (xi *ExtensionInfo) New() protoreflect.Value {\n\treturn xi.lazyInit().New()\n}\nfunc (xi *ExtensionInfo) Zero() protoreflect.Value {\n\treturn xi.lazyInit().Zero()\n}\nfunc (xi *ExtensionInfo) ValueOf(v any) protoreflect.Value {\n\treturn xi.lazyInit().PBValueOf(reflect.ValueOf(v))\n}\nfunc (xi *ExtensionInfo) InterfaceOf(v protoreflect.Value) any {\n\treturn xi.lazyInit().GoValueOf(v).Interface()\n}\nfunc (xi *ExtensionInfo) IsValidValue(v protoreflect.Value) bool {\n\treturn xi.lazyInit().IsValidPB(v)\n}\nfunc (xi *ExtensionInfo) IsValidInterface(v any) bool {\n\treturn xi.lazyInit().IsValidGo(reflect.ValueOf(v))\n}\nfunc (xi *ExtensionInfo) TypeDescriptor() protoreflect.ExtensionTypeDescriptor {\n\tif atomic.LoadUint32(&xi.init) < extensionInfoDescInit {\n\t\txi.lazyInitSlow()\n\t}\n\treturn &xi.desc\n}\n\nfunc (xi *ExtensionInfo) lazyInit() Converter {\n\tif atomic.LoadUint32(&xi.init) < extensionInfoFullInit {\n\t\txi.lazyInitSlow()\n\t}\n\treturn xi.conv\n}\n\nfunc (xi *ExtensionInfo) lazyInitSlow() {\n\txi.mu.Lock()\n\tdefer xi.mu.Unlock()\n\n\tif xi.init == extensionInfoFullInit {\n\t\treturn\n\t}\n\tdefer atomic.StoreUint32(&xi.init, extensionInfoFullInit)\n\n\tif xi.desc.ExtensionDescriptor == nil {\n\t\txi.initFromLegacy()\n\t}\n\tif !xi.desc.ExtensionDescriptor.IsPlaceholder() {\n\t\tif xi.ExtensionType == nil {\n\t\t\txi.initToLegacy()\n\t\t}\n\t\txi.conv = NewConverter(xi.goType, xi.desc.ExtensionDescriptor)\n\t\txi.info = makeExtensionFieldInfo(xi.desc.ExtensionDescriptor)\n\t\txi.info.validation = newValidationInfo(xi.desc.ExtensionDescriptor, xi.goType)\n\t}\n}\n\ntype extensionTypeDescriptor struct {\n\tprotoreflect.ExtensionDescriptor\n\txi *ExtensionInfo\n}\n\nfunc (xtd *extensionTypeDescriptor) Type() protoreflect.ExtensionType {\n\treturn xtd.xi\n}\nfunc (xtd *extensionTypeDescriptor) Descriptor() protoreflect.ExtensionDescriptor {\n\treturn xtd.ExtensionDescriptor\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/lazy.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"math/bits\"\n\t\"os\"\n\t\"reflect\"\n\t\"sort\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/protolazy\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\tpreg \"google.golang.org/protobuf/reflect/protoregistry\"\n\tpiface \"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nvar enableLazy int32 = func() int32 {\n\tif os.Getenv(\"GOPROTODEBUG\") == \"nolazy\" {\n\t\treturn 0\n\t}\n\treturn 1\n}()\n\n// EnableLazyUnmarshal enables lazy unmarshaling.\nfunc EnableLazyUnmarshal(enable bool) {\n\tif enable {\n\t\tatomic.StoreInt32(&enableLazy, 1)\n\t\treturn\n\t}\n\tatomic.StoreInt32(&enableLazy, 0)\n}\n\n// LazyEnabled reports whether lazy unmarshalling is currently enabled.\nfunc LazyEnabled() bool {\n\treturn atomic.LoadInt32(&enableLazy) != 0\n}\n\n// UnmarshalField unmarshals a field in a message.\nfunc UnmarshalField(m interface{}, num protowire.Number) {\n\tswitch m := m.(type) {\n\tcase *messageState:\n\t\tm.messageInfo().lazyUnmarshal(m.pointer(), num)\n\tcase *messageReflectWrapper:\n\t\tm.messageInfo().lazyUnmarshal(m.pointer(), num)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unsupported wrapper type %T\", m))\n\t}\n}\n\nfunc (mi *MessageInfo) lazyUnmarshal(p pointer, num protoreflect.FieldNumber) {\n\tvar f *coderFieldInfo\n\tif int(num) < len(mi.denseCoderFields) {\n\t\tf = mi.denseCoderFields[num]\n\t} else {\n\t\tf = mi.coderFields[num]\n\t}\n\tif f == nil {\n\t\tpanic(fmt.Sprintf(\"lazyUnmarshal: field info for %v.%v\", mi.Desc.FullName(), num))\n\t}\n\tlazy := *p.Apply(mi.lazyOffset).LazyInfoPtr()\n\tstart, end, found, _, multipleEntries := lazy.FindFieldInProto(uint32(num))\n\tif !found && multipleEntries == nil {\n\t\tpanic(fmt.Sprintf(\"lazyUnmarshal: can't find field data for %v.%v\", mi.Desc.FullName(), num))\n\t}\n\t// The actual pointer in the message can not be set until the whole struct is filled in, otherwise we will have races.\n\t// Create another pointer and set it atomically, if we won the race and the pointer in the original message is still nil.\n\tfp := pointerOfValue(reflect.New(f.ft))\n\tif multipleEntries != nil {\n\t\tfor _, entry := range multipleEntries {\n\t\t\tmi.unmarshalField(lazy.Buffer()[entry.Start:entry.End], fp, f, lazy, lazy.UnmarshalFlags())\n\t\t}\n\t} else {\n\t\tmi.unmarshalField(lazy.Buffer()[start:end], fp, f, lazy, lazy.UnmarshalFlags())\n\t}\n\tp.Apply(f.offset).AtomicSetPointerIfNil(fp.Elem())\n}\n\nfunc (mi *MessageInfo) unmarshalField(b []byte, p pointer, f *coderFieldInfo, lazyInfo *protolazy.XXX_lazyUnmarshalInfo, flags piface.UnmarshalInputFlags) error {\n\topts := lazyUnmarshalOptions\n\topts.flags |= flags\n\tfor len(b) > 0 {\n\t\t// Parse the tag (field number and wire type).\n\t\tvar tag uint64\n\t\tif b[0] < 0x80 {\n\t\t\ttag = uint64(b[0])\n\t\t\tb = b[1:]\n\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\ttag = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\tb = b[2:]\n\t\t} else {\n\t\t\tvar n int\n\t\t\ttag, n = protowire.ConsumeVarint(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn errors.New(\"invalid wire data\")\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t}\n\t\tvar num protowire.Number\n\t\tif n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {\n\t\t\treturn errors.New(\"invalid wire data\")\n\t\t} else {\n\t\t\tnum = protowire.Number(n)\n\t\t}\n\t\twtyp := protowire.Type(tag & 7)\n\t\tif num == f.num {\n\t\t\to, err := f.funcs.unmarshal(b, p, wtyp, f, opts)\n\t\t\tif err == nil {\n\t\t\t\tb = b[o.n:]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err != errUnknown {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tn := protowire.ConsumeFieldValue(num, wtyp, b)\n\t\tif n < 0 {\n\t\t\treturn errors.New(\"invalid wire data\")\n\t\t}\n\t\tb = b[n:]\n\t}\n\treturn nil\n}\n\nfunc (mi *MessageInfo) skipField(b []byte, f *coderFieldInfo, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, _ ValidationStatus) {\n\tfmi := f.validation.mi\n\tif fmi == nil {\n\t\tfd := mi.Desc.Fields().ByNumber(f.num)\n\t\tif fd == nil {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\t\tmessageName := fd.Message().FullName()\n\t\tmessageType, err := preg.GlobalTypes.FindMessageByName(messageName)\n\t\tif err != nil {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\t\tvar ok bool\n\t\tfmi, ok = messageType.(*MessageInfo)\n\t\tif !ok {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\t}\n\tfmi.init()\n\tswitch f.validation.typ {\n\tcase validationTypeMessage:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn out, ValidationWrongWireType\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, ValidationInvalid\n\t\t}\n\t\tout, st := fmi.validate(v, 0, opts)\n\t\tout.n = n\n\t\treturn out, st\n\tcase validationTypeGroup:\n\t\tif wtyp != protowire.StartGroupType {\n\t\t\treturn out, ValidationWrongWireType\n\t\t}\n\t\tout, st := fmi.validate(b, f.num, opts)\n\t\treturn out, st\n\tdefault:\n\t\treturn out, ValidationUnknown\n\t}\n}\n\n// unmarshalPointerLazy is similar to unmarshalPointerEager, but it\n// specifically handles lazy unmarshalling.  it expects lazyOffset and\n// presenceOffset to both be valid.\nfunc (mi *MessageInfo) unmarshalPointerLazy(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tinitialized := true\n\tvar requiredMask uint64\n\tvar lazy **protolazy.XXX_lazyUnmarshalInfo\n\tvar presence presence\n\tvar lazyIndex []protolazy.IndexEntry\n\tvar lastNum protowire.Number\n\toutOfOrder := false\n\tlazyDecode := false\n\tpresence = p.Apply(mi.presenceOffset).PresenceInfo()\n\tlazy = p.Apply(mi.lazyOffset).LazyInfoPtr()\n\tif !presence.AnyPresent(mi.presenceSize) {\n\t\tif opts.CanBeLazy() {\n\t\t\t// If the message contains existing data, we need to merge into it.\n\t\t\t// Lazy unmarshaling doesn't merge, so only enable it when the\n\t\t\t// message is empty (has no presence bitmap).\n\t\t\tlazyDecode = true\n\t\t\tif *lazy == nil {\n\t\t\t\t*lazy = &protolazy.XXX_lazyUnmarshalInfo{}\n\t\t\t}\n\t\t\t(*lazy).SetUnmarshalFlags(opts.flags)\n\t\t\tif !opts.AliasBuffer() {\n\t\t\t\t// Make a copy of the buffer for lazy unmarshaling.\n\t\t\t\t// Set the AliasBuffer flag so recursive unmarshal\n\t\t\t\t// operations reuse the copy.\n\t\t\t\tb = append([]byte{}, b...)\n\t\t\t\topts.flags |= piface.UnmarshalAliasBuffer\n\t\t\t}\n\t\t\t(*lazy).SetBuffer(b)\n\t\t}\n\t}\n\t// Track special handling of lazy fields.\n\t//\n\t// In the common case, all fields are lazyValidateOnly (and lazyFields remains nil).\n\t// In the event that validation for a field fails, this map tracks handling of the field.\n\ttype lazyAction uint8\n\tconst (\n\t\tlazyValidateOnly   lazyAction = iota // validate the field only\n\t\tlazyUnmarshalNow                     // eagerly unmarshal the field\n\t\tlazyUnmarshalLater                   // unmarshal the field after the message is fully processed\n\t)\n\tvar lazyFields map[*coderFieldInfo]lazyAction\n\tvar exts *map[int32]ExtensionField\n\tstart := len(b)\n\tpos := 0\n\tfor len(b) > 0 {\n\t\t// Parse the tag (field number and wire type).\n\t\tvar tag uint64\n\t\tif b[0] < 0x80 {\n\t\t\ttag = uint64(b[0])\n\t\t\tb = b[1:]\n\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\ttag = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\tb = b[2:]\n\t\t} else {\n\t\t\tvar n int\n\t\t\ttag, n = protowire.ConsumeVarint(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t}\n\t\tvar num protowire.Number\n\t\tif n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {\n\t\t\treturn out, errors.New(\"invalid field number\")\n\t\t} else {\n\t\t\tnum = protowire.Number(n)\n\t\t}\n\t\twtyp := protowire.Type(tag & 7)\n\n\t\tif wtyp == protowire.EndGroupType {\n\t\t\tif num != groupTag {\n\t\t\t\treturn out, errors.New(\"mismatching end group marker\")\n\t\t\t}\n\t\t\tgroupTag = 0\n\t\t\tbreak\n\t\t}\n\n\t\tvar f *coderFieldInfo\n\t\tif int(num) < len(mi.denseCoderFields) {\n\t\t\tf = mi.denseCoderFields[num]\n\t\t} else {\n\t\t\tf = mi.coderFields[num]\n\t\t}\n\t\tvar n int\n\t\terr := errUnknown\n\t\tdiscardUnknown := false\n\tField:\n\t\tswitch {\n\t\tcase f != nil:\n\t\t\tif f.funcs.unmarshal == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif f.isLazy && lazyDecode {\n\t\t\t\tswitch {\n\t\t\t\tcase lazyFields == nil || lazyFields[f] == lazyValidateOnly:\n\t\t\t\t\t// Attempt to validate this field and leave it for later lazy unmarshaling.\n\t\t\t\t\to, valid := mi.skipField(b, f, wtyp, opts)\n\t\t\t\t\tswitch valid {\n\t\t\t\t\tcase ValidationValid:\n\t\t\t\t\t\t// Skip over the valid field and continue.\n\t\t\t\t\t\terr = nil\n\t\t\t\t\t\tpresence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)\n\t\t\t\t\t\trequiredMask |= f.validation.requiredBit\n\t\t\t\t\t\tif !o.initialized {\n\t\t\t\t\t\t\tinitialized = false\n\t\t\t\t\t\t}\n\t\t\t\t\t\tn = o.n\n\t\t\t\t\t\tbreak Field\n\t\t\t\t\tcase ValidationInvalid:\n\t\t\t\t\t\treturn out, errors.New(\"invalid proto wire format\")\n\t\t\t\t\tcase ValidationWrongWireType:\n\t\t\t\t\t\tbreak Field\n\t\t\t\t\tcase ValidationUnknown:\n\t\t\t\t\t\tif lazyFields == nil {\n\t\t\t\t\t\t\tlazyFields = make(map[*coderFieldInfo]lazyAction)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif presence.Present(f.presenceIndex) {\n\t\t\t\t\t\t\t// We were unable to determine if the field is valid or not,\n\t\t\t\t\t\t\t// and we've already skipped over at least one instance of this\n\t\t\t\t\t\t\t// field. Clear the presence bit (so if we stop decoding early,\n\t\t\t\t\t\t\t// we don't leave a partially-initialized field around) and flag\n\t\t\t\t\t\t\t// the field for unmarshaling before we return.\n\t\t\t\t\t\t\tpresence.ClearPresent(f.presenceIndex)\n\t\t\t\t\t\t\tlazyFields[f] = lazyUnmarshalLater\n\t\t\t\t\t\t\tdiscardUnknown = true\n\t\t\t\t\t\t\tbreak Field\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// We were unable to determine if the field is valid or not,\n\t\t\t\t\t\t\t// but this is the first time we've seen it. Flag it as needing\n\t\t\t\t\t\t\t// eager unmarshaling and fall through to the eager unmarshal case below.\n\t\t\t\t\t\t\tlazyFields[f] = lazyUnmarshalNow\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tcase lazyFields[f] == lazyUnmarshalLater:\n\t\t\t\t\t// This field will be unmarshaled in a separate pass below.\n\t\t\t\t\t// Skip over it here.\n\t\t\t\t\tdiscardUnknown = true\n\t\t\t\t\tbreak Field\n\t\t\t\tdefault:\n\t\t\t\t\t// Eagerly unmarshal the field.\n\t\t\t\t}\n\t\t\t}\n\t\t\tif f.isLazy && !lazyDecode && presence.Present(f.presenceIndex) {\n\t\t\t\tif p.Apply(f.offset).AtomicGetPointer().IsNil() {\n\t\t\t\t\tmi.lazyUnmarshal(p, f.num)\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar o unmarshalOutput\n\t\t\to, err = f.funcs.unmarshal(b, p.Apply(f.offset), wtyp, f, opts)\n\t\t\tn = o.n\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\trequiredMask |= f.validation.requiredBit\n\t\t\tif f.funcs.isInit != nil && !o.initialized {\n\t\t\t\tinitialized = false\n\t\t\t}\n\t\t\tif f.presenceIndex != noPresence {\n\t\t\t\tpresence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)\n\t\t\t}\n\t\tdefault:\n\t\t\t// Possible extension.\n\t\t\tif exts == nil && mi.extensionOffset.IsValid() {\n\t\t\t\texts = p.Apply(mi.extensionOffset).Extensions()\n\t\t\t\tif *exts == nil {\n\t\t\t\t\t*exts = make(map[int32]ExtensionField)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif exts == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar o unmarshalOutput\n\t\t\to, err = mi.unmarshalExtension(b, num, wtyp, *exts, opts)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tn = o.n\n\t\t\tif !o.initialized {\n\t\t\t\tinitialized = false\n\t\t\t}\n\t\t}\n\t\tif err != nil {\n\t\t\tif err != errUnknown {\n\t\t\t\treturn out, err\n\t\t\t}\n\t\t\tn = protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tif !discardUnknown && !opts.DiscardUnknown() && mi.unknownOffset.IsValid() {\n\t\t\t\tu := mi.mutableUnknownBytes(p)\n\t\t\t\t*u = protowire.AppendTag(*u, num, wtyp)\n\t\t\t\t*u = append(*u, b[:n]...)\n\t\t\t}\n\t\t}\n\t\tb = b[n:]\n\t\tend := start - len(b)\n\t\tif lazyDecode && f != nil && f.isLazy {\n\t\t\tif num != lastNum {\n\t\t\t\tlazyIndex = append(lazyIndex, protolazy.IndexEntry{\n\t\t\t\t\tFieldNum: uint32(num),\n\t\t\t\t\tStart:    uint32(pos),\n\t\t\t\t\tEnd:      uint32(end),\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\ti := len(lazyIndex) - 1\n\t\t\t\tlazyIndex[i].End = uint32(end)\n\t\t\t\tlazyIndex[i].MultipleContiguous = true\n\t\t\t}\n\t\t}\n\t\tif num < lastNum {\n\t\t\toutOfOrder = true\n\t\t}\n\t\tpos = end\n\t\tlastNum = num\n\t}\n\tif groupTag != 0 {\n\t\treturn out, errors.New(\"missing end group marker\")\n\t}\n\tif lazyFields != nil {\n\t\t// Some fields failed validation, and now need to be unmarshaled.\n\t\tfor f, action := range lazyFields {\n\t\t\tif action != lazyUnmarshalLater {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tinitialized = false\n\t\t\tif *lazy == nil {\n\t\t\t\t*lazy = &protolazy.XXX_lazyUnmarshalInfo{}\n\t\t\t}\n\t\t\tif err := mi.unmarshalField((*lazy).Buffer(), p.Apply(f.offset), f, *lazy, opts.flags); err != nil {\n\t\t\t\treturn out, err\n\t\t\t}\n\t\t\tpresence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)\n\t\t}\n\t}\n\tif lazyDecode {\n\t\tif outOfOrder {\n\t\t\tsort.Slice(lazyIndex, func(i, j int) bool {\n\t\t\t\treturn lazyIndex[i].FieldNum < lazyIndex[j].FieldNum ||\n\t\t\t\t\t(lazyIndex[i].FieldNum == lazyIndex[j].FieldNum &&\n\t\t\t\t\t\tlazyIndex[i].Start < lazyIndex[j].Start)\n\t\t\t})\n\t\t}\n\t\tif *lazy == nil {\n\t\t\t*lazy = &protolazy.XXX_lazyUnmarshalInfo{}\n\t\t}\n\n\t\t(*lazy).SetIndex(lazyIndex)\n\t}\n\tif mi.numRequiredFields > 0 && bits.OnesCount64(requiredMask) != int(mi.numRequiredFields) {\n\t\tinitialized = false\n\t}\n\tif initialized {\n\t\tout.initialized = true\n\t}\n\tout.n = start - len(b)\n\treturn out, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// legacyEnumName returns the name of enums used in legacy code.\n// It is neither the protobuf full name nor the qualified Go name,\n// but rather an odd hybrid of both.\nfunc legacyEnumName(ed protoreflect.EnumDescriptor) string {\n\tvar protoPkg string\n\tenumName := string(ed.FullName())\n\tif fd := ed.ParentFile(); fd != nil {\n\t\tprotoPkg = string(fd.Package())\n\t\tenumName = strings.TrimPrefix(enumName, protoPkg+\".\")\n\t}\n\tif protoPkg == \"\" {\n\t\treturn strs.GoCamelCase(enumName)\n\t}\n\treturn protoPkg + \".\" + strs.GoCamelCase(enumName)\n}\n\n// legacyWrapEnum wraps v as a protoreflect.Enum,\n// where v must be a int32 kind and not implement the v2 API already.\nfunc legacyWrapEnum(v reflect.Value) protoreflect.Enum {\n\tet := legacyLoadEnumType(v.Type())\n\treturn et.New(protoreflect.EnumNumber(v.Int()))\n}\n\nvar legacyEnumTypeCache sync.Map // map[reflect.Type]protoreflect.EnumType\n\n// legacyLoadEnumType dynamically loads a protoreflect.EnumType for t,\n// where t must be an int32 kind and not implement the v2 API already.\nfunc legacyLoadEnumType(t reflect.Type) protoreflect.EnumType {\n\t// Fast-path: check if a EnumType is cached for this concrete type.\n\tif et, ok := legacyEnumTypeCache.Load(t); ok {\n\t\treturn et.(protoreflect.EnumType)\n\t}\n\n\t// Slow-path: derive enum descriptor and initialize EnumType.\n\tvar et protoreflect.EnumType\n\ted := LegacyLoadEnumDesc(t)\n\tet = &legacyEnumType{\n\t\tdesc:   ed,\n\t\tgoType: t,\n\t}\n\tif et, ok := legacyEnumTypeCache.LoadOrStore(t, et); ok {\n\t\treturn et.(protoreflect.EnumType)\n\t}\n\treturn et\n}\n\ntype legacyEnumType struct {\n\tdesc   protoreflect.EnumDescriptor\n\tgoType reflect.Type\n\tm      sync.Map // map[protoreflect.EnumNumber]proto.Enum\n}\n\nfunc (t *legacyEnumType) New(n protoreflect.EnumNumber) protoreflect.Enum {\n\tif e, ok := t.m.Load(n); ok {\n\t\treturn e.(protoreflect.Enum)\n\t}\n\te := &legacyEnumWrapper{num: n, pbTyp: t, goTyp: t.goType}\n\tt.m.Store(n, e)\n\treturn e\n}\nfunc (t *legacyEnumType) Descriptor() protoreflect.EnumDescriptor {\n\treturn t.desc\n}\n\ntype legacyEnumWrapper struct {\n\tnum   protoreflect.EnumNumber\n\tpbTyp protoreflect.EnumType\n\tgoTyp reflect.Type\n}\n\nfunc (e *legacyEnumWrapper) Descriptor() protoreflect.EnumDescriptor {\n\treturn e.pbTyp.Descriptor()\n}\nfunc (e *legacyEnumWrapper) Type() protoreflect.EnumType {\n\treturn e.pbTyp\n}\nfunc (e *legacyEnumWrapper) Number() protoreflect.EnumNumber {\n\treturn e.num\n}\nfunc (e *legacyEnumWrapper) ProtoReflect() protoreflect.Enum {\n\treturn e\n}\nfunc (e *legacyEnumWrapper) protoUnwrap() any {\n\tv := reflect.New(e.goTyp).Elem()\n\tv.SetInt(int64(e.num))\n\treturn v.Interface()\n}\n\nvar (\n\t_ protoreflect.Enum = (*legacyEnumWrapper)(nil)\n\t_ unwrapper         = (*legacyEnumWrapper)(nil)\n)\n\nvar legacyEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor\n\n// LegacyLoadEnumDesc returns an EnumDescriptor derived from the Go type,\n// which must be an int32 kind and not implement the v2 API already.\n//\n// This is exported for testing purposes.\nfunc LegacyLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor {\n\t// Fast-path: check if an EnumDescriptor is cached for this concrete type.\n\tif ed, ok := legacyEnumDescCache.Load(t); ok {\n\t\treturn ed.(protoreflect.EnumDescriptor)\n\t}\n\n\t// Slow-path: initialize EnumDescriptor from the raw descriptor.\n\tev := reflect.Zero(t).Interface()\n\tif _, ok := ev.(protoreflect.Enum); ok {\n\t\tpanic(fmt.Sprintf(\"%v already implements proto.Enum\", t))\n\t}\n\tedV1, ok := ev.(enumV1)\n\tif !ok {\n\t\treturn aberrantLoadEnumDesc(t)\n\t}\n\tb, idxs := edV1.EnumDescriptor()\n\n\tvar ed protoreflect.EnumDescriptor\n\tif len(idxs) == 1 {\n\t\ted = legacyLoadFileDesc(b).Enums().Get(idxs[0])\n\t} else {\n\t\tmd := legacyLoadFileDesc(b).Messages().Get(idxs[0])\n\t\tfor _, i := range idxs[1 : len(idxs)-1] {\n\t\t\tmd = md.Messages().Get(i)\n\t\t}\n\t\ted = md.Enums().Get(idxs[len(idxs)-1])\n\t}\n\tif ed, ok := legacyEnumDescCache.LoadOrStore(t, ed); ok {\n\t\treturn ed.(protoreflect.EnumDescriptor)\n\t}\n\treturn ed\n}\n\nvar aberrantEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor\n\n// aberrantLoadEnumDesc returns an EnumDescriptor derived from the Go type,\n// which must not implement protoreflect.Enum or enumV1.\n//\n// If the type does not implement enumV1, then there is no reliable\n// way to derive the original protobuf type information.\n// We are unable to use the global enum registry since it is\n// unfortunately keyed by the protobuf full name, which we also do not know.\n// Thus, this produces some bogus enum descriptor based on the Go type name.\nfunc aberrantLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor {\n\t// Fast-path: check if an EnumDescriptor is cached for this concrete type.\n\tif ed, ok := aberrantEnumDescCache.Load(t); ok {\n\t\treturn ed.(protoreflect.EnumDescriptor)\n\t}\n\n\t// Slow-path: construct a bogus, but unique EnumDescriptor.\n\ted := &filedesc.Enum{L2: new(filedesc.EnumL2)}\n\ted.L0.FullName = AberrantDeriveFullName(t) // e.g., github_com.user.repo.MyEnum\n\ted.L0.ParentFile = filedesc.SurrogateProto3\n\ted.L1.EditionFeatures = ed.L0.ParentFile.L1.EditionFeatures\n\ted.L2.Values.List = append(ed.L2.Values.List, filedesc.EnumValue{})\n\n\t// TODO: Use the presence of a UnmarshalJSON method to determine proto2?\n\n\tvd := &ed.L2.Values.List[0]\n\tvd.L0.FullName = ed.L0.FullName + \"_UNKNOWN\" // e.g., github_com.user.repo.MyEnum_UNKNOWN\n\tvd.L0.ParentFile = ed.L0.ParentFile\n\tvd.L0.Parent = ed\n\n\t// TODO: We could use the String method to obtain some enum value names by\n\t// starting at 0 and print the enum until it produces invalid identifiers.\n\t// An exhaustive query is clearly impractical, but can be best-effort.\n\n\tif ed, ok := aberrantEnumDescCache.LoadOrStore(t, ed); ok {\n\t\treturn ed.(protoreflect.EnumDescriptor)\n\t}\n\treturn ed\n}\n\n// AberrantDeriveFullName derives a fully qualified protobuf name for the given Go type\n// The provided name is not guaranteed to be stable nor universally unique.\n// It should be sufficiently unique within a program.\n//\n// This is exported for testing purposes.\nfunc AberrantDeriveFullName(t reflect.Type) protoreflect.FullName {\n\tsanitize := func(r rune) rune {\n\t\tswitch {\n\t\tcase r == '/':\n\t\t\treturn '.'\n\t\tcase 'a' <= r && r <= 'z', 'A' <= r && r <= 'Z', '0' <= r && r <= '9':\n\t\t\treturn r\n\t\tdefault:\n\t\t\treturn '_'\n\t\t}\n\t}\n\tprefix := strings.Map(sanitize, t.PkgPath())\n\tsuffix := strings.Map(sanitize, t.Name())\n\tif suffix == \"\" {\n\t\tsuffix = fmt.Sprintf(\"UnknownX%X\", reflect.ValueOf(t).Pointer())\n\t}\n\n\tss := append(strings.Split(prefix, \".\"), suffix)\n\tfor i, s := range ss {\n\t\tif s == \"\" || ('0' <= s[0] && s[0] <= '9') {\n\t\t\tss[i] = \"x\" + s\n\t\t}\n\t}\n\treturn protoreflect.FullName(strings.Join(ss, \".\"))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_export.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"encoding/binary\"\n\t\"encoding/json\"\n\t\"hash/crc32\"\n\t\"math\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// These functions exist to support exported APIs in generated protobufs.\n// While these are deprecated, they cannot be removed for compatibility reasons.\n\n// LegacyEnumName returns the name of enums used in legacy code.\nfunc (Export) LegacyEnumName(ed protoreflect.EnumDescriptor) string {\n\treturn legacyEnumName(ed)\n}\n\n// LegacyMessageTypeOf returns the protoreflect.MessageType for m,\n// with name used as the message name if necessary.\nfunc (Export) LegacyMessageTypeOf(m protoiface.MessageV1, name protoreflect.FullName) protoreflect.MessageType {\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv.ProtoReflect().Type()\n\t}\n\treturn legacyLoadMessageType(reflect.TypeOf(m), name)\n}\n\n// UnmarshalJSONEnum unmarshals an enum from a JSON-encoded input.\n// The input can either be a string representing the enum value by name,\n// or a number representing the enum number itself.\nfunc (Export) UnmarshalJSONEnum(ed protoreflect.EnumDescriptor, b []byte) (protoreflect.EnumNumber, error) {\n\tif b[0] == '\"' {\n\t\tvar name protoreflect.Name\n\t\tif err := json.Unmarshal(b, &name); err != nil {\n\t\t\treturn 0, errors.New(\"invalid input for enum %v: %s\", ed.FullName(), b)\n\t\t}\n\t\tev := ed.Values().ByName(name)\n\t\tif ev == nil {\n\t\t\treturn 0, errors.New(\"invalid value for enum %v: %s\", ed.FullName(), name)\n\t\t}\n\t\treturn ev.Number(), nil\n\t} else {\n\t\tvar num protoreflect.EnumNumber\n\t\tif err := json.Unmarshal(b, &num); err != nil {\n\t\t\treturn 0, errors.New(\"invalid input for enum %v: %s\", ed.FullName(), b)\n\t\t}\n\t\treturn num, nil\n\t}\n}\n\n// CompressGZIP compresses the input as a GZIP-encoded file.\n// The current implementation does no compression.\nfunc (Export) CompressGZIP(in []byte) (out []byte) {\n\t// RFC 1952, section 2.3.1.\n\tvar gzipHeader = [10]byte{0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff}\n\n\t// RFC 1951, section 3.2.4.\n\tvar blockHeader [5]byte\n\tconst maxBlockSize = math.MaxUint16\n\tnumBlocks := 1 + len(in)/maxBlockSize\n\n\t// RFC 1952, section 2.3.1.\n\tvar gzipFooter [8]byte\n\tbinary.LittleEndian.PutUint32(gzipFooter[0:4], crc32.ChecksumIEEE(in))\n\tbinary.LittleEndian.PutUint32(gzipFooter[4:8], uint32(len(in)))\n\n\t// Encode the input without compression using raw DEFLATE blocks.\n\tout = make([]byte, 0, len(gzipHeader)+len(blockHeader)*numBlocks+len(in)+len(gzipFooter))\n\tout = append(out, gzipHeader[:]...)\n\tfor blockHeader[0] == 0 {\n\t\tblockSize := maxBlockSize\n\t\tif blockSize > len(in) {\n\t\t\tblockHeader[0] = 0x01 // final bit per RFC 1951, section 3.2.3.\n\t\t\tblockSize = len(in)\n\t\t}\n\t\tbinary.LittleEndian.PutUint16(blockHeader[1:3], uint16(blockSize))\n\t\tbinary.LittleEndian.PutUint16(blockHeader[3:5], ^uint16(blockSize))\n\t\tout = append(out, blockHeader[:]...)\n\t\tout = append(out, in[:blockSize]...)\n\t\tin = in[blockSize:]\n\t}\n\tout = append(out, gzipFooter[:]...)\n\treturn out\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\tptag \"google.golang.org/protobuf/internal/encoding/tag\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nfunc (xi *ExtensionInfo) initToLegacy() {\n\txd := xi.desc\n\tvar parent protoiface.MessageV1\n\tmessageName := xd.ContainingMessage().FullName()\n\tif mt, _ := protoregistry.GlobalTypes.FindMessageByName(messageName); mt != nil {\n\t\t// Create a new parent message and unwrap it if possible.\n\t\tmv := mt.New().Interface()\n\t\tt := reflect.TypeOf(mv)\n\t\tif mv, ok := mv.(unwrapper); ok {\n\t\t\tt = reflect.TypeOf(mv.protoUnwrap())\n\t\t}\n\n\t\t// Check whether the message implements the legacy v1 Message interface.\n\t\tmz := reflect.Zero(t).Interface()\n\t\tif mz, ok := mz.(protoiface.MessageV1); ok {\n\t\t\tparent = mz\n\t\t}\n\t}\n\n\t// Determine the v1 extension type, which is unfortunately not the same as\n\t// the v2 ExtensionType.GoType.\n\textType := xi.goType\n\tswitch extType.Kind() {\n\tcase reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:\n\t\textType = reflect.PtrTo(extType) // T -> *T for singular scalar fields\n\t}\n\n\t// Reconstruct the legacy enum full name.\n\tvar enumName string\n\tif xd.Kind() == protoreflect.EnumKind {\n\t\tenumName = legacyEnumName(xd.Enum())\n\t}\n\n\t// Derive the proto file that the extension was declared within.\n\tvar filename string\n\tif fd := xd.ParentFile(); fd != nil {\n\t\tfilename = fd.Path()\n\t}\n\n\t// For MessageSet extensions, the name used is the parent message.\n\tname := xd.FullName()\n\tif messageset.IsMessageSetExtension(xd) {\n\t\tname = name.Parent()\n\t}\n\n\txi.ExtendedType = parent\n\txi.ExtensionType = reflect.Zero(extType).Interface()\n\txi.Field = int32(xd.Number())\n\txi.Name = string(name)\n\txi.Tag = ptag.Marshal(xd, enumName)\n\txi.Filename = filename\n}\n\n// initFromLegacy initializes an ExtensionInfo from\n// the contents of the deprecated exported fields of the type.\nfunc (xi *ExtensionInfo) initFromLegacy() {\n\t// The v1 API returns \"type incomplete\" descriptors where only the\n\t// field number is specified. In such a case, use a placeholder.\n\tif xi.ExtendedType == nil || xi.ExtensionType == nil {\n\t\txd := placeholderExtension{\n\t\t\tname:   protoreflect.FullName(xi.Name),\n\t\t\tnumber: protoreflect.FieldNumber(xi.Field),\n\t\t}\n\t\txi.desc = extensionTypeDescriptor{xd, xi}\n\t\treturn\n\t}\n\n\t// Resolve enum or message dependencies.\n\tvar ed protoreflect.EnumDescriptor\n\tvar md protoreflect.MessageDescriptor\n\tt := reflect.TypeOf(xi.ExtensionType)\n\tisOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct\n\tisRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8\n\tif isOptional || isRepeated {\n\t\tt = t.Elem()\n\t}\n\tswitch v := reflect.Zero(t).Interface().(type) {\n\tcase protoreflect.Enum:\n\t\ted = v.Descriptor()\n\tcase enumV1:\n\t\ted = LegacyLoadEnumDesc(t)\n\tcase protoreflect.ProtoMessage:\n\t\tmd = v.ProtoReflect().Descriptor()\n\tcase messageV1:\n\t\tmd = LegacyLoadMessageDesc(t)\n\t}\n\n\t// Derive basic field information from the struct tag.\n\tvar evs protoreflect.EnumValueDescriptors\n\tif ed != nil {\n\t\tevs = ed.Values()\n\t}\n\tfd := ptag.Unmarshal(xi.Tag, t, evs).(*filedesc.Field)\n\n\t// Construct a v2 ExtensionType.\n\txd := &filedesc.Extension{L2: new(filedesc.ExtensionL2)}\n\txd.L0.ParentFile = filedesc.SurrogateProto2\n\txd.L0.FullName = protoreflect.FullName(xi.Name)\n\txd.L1.Number = protoreflect.FieldNumber(xi.Field)\n\txd.L1.Cardinality = fd.L1.Cardinality\n\txd.L1.Kind = fd.L1.Kind\n\txd.L1.EditionFeatures = fd.L1.EditionFeatures\n\txd.L2.Default = fd.L1.Default\n\txd.L1.Extendee = Export{}.MessageDescriptorOf(xi.ExtendedType)\n\txd.L2.Enum = ed\n\txd.L2.Message = md\n\n\t// Derive real extension field name for MessageSets.\n\tif messageset.IsMessageSet(xd.L1.Extendee) && md.FullName() == xd.L0.FullName {\n\t\txd.L0.FullName = xd.L0.FullName.Append(messageset.ExtensionName)\n\t}\n\n\ttt := reflect.TypeOf(xi.ExtensionType)\n\tif isOptional {\n\t\ttt = tt.Elem()\n\t}\n\txi.goType = tt\n\txi.desc = extensionTypeDescriptor{xd, xi}\n}\n\ntype placeholderExtension struct {\n\tname   protoreflect.FullName\n\tnumber protoreflect.FieldNumber\n}\n\nfunc (x placeholderExtension) ParentFile() protoreflect.FileDescriptor            { return nil }\nfunc (x placeholderExtension) Parent() protoreflect.Descriptor                    { return nil }\nfunc (x placeholderExtension) Index() int                                         { return 0 }\nfunc (x placeholderExtension) Syntax() protoreflect.Syntax                        { return 0 }\nfunc (x placeholderExtension) Name() protoreflect.Name                            { return x.name.Name() }\nfunc (x placeholderExtension) FullName() protoreflect.FullName                    { return x.name }\nfunc (x placeholderExtension) IsPlaceholder() bool                                { return true }\nfunc (x placeholderExtension) Options() protoreflect.ProtoMessage                 { return descopts.Field }\nfunc (x placeholderExtension) Number() protoreflect.FieldNumber                   { return x.number }\nfunc (x placeholderExtension) Cardinality() protoreflect.Cardinality              { return 0 }\nfunc (x placeholderExtension) Kind() protoreflect.Kind                            { return 0 }\nfunc (x placeholderExtension) HasJSONName() bool                                  { return false }\nfunc (x placeholderExtension) JSONName() string                                   { return \"[\" + string(x.name) + \"]\" }\nfunc (x placeholderExtension) TextName() string                                   { return \"[\" + string(x.name) + \"]\" }\nfunc (x placeholderExtension) HasPresence() bool                                  { return false }\nfunc (x placeholderExtension) HasOptionalKeyword() bool                           { return false }\nfunc (x placeholderExtension) IsExtension() bool                                  { return true }\nfunc (x placeholderExtension) IsWeak() bool                                       { return false }\nfunc (x placeholderExtension) IsLazy() bool                                       { return false }\nfunc (x placeholderExtension) IsPacked() bool                                     { return false }\nfunc (x placeholderExtension) IsList() bool                                       { return false }\nfunc (x placeholderExtension) IsMap() bool                                        { return false }\nfunc (x placeholderExtension) MapKey() protoreflect.FieldDescriptor               { return nil }\nfunc (x placeholderExtension) MapValue() protoreflect.FieldDescriptor             { return nil }\nfunc (x placeholderExtension) HasDefault() bool                                   { return false }\nfunc (x placeholderExtension) Default() protoreflect.Value                        { return protoreflect.Value{} }\nfunc (x placeholderExtension) DefaultEnumValue() protoreflect.EnumValueDescriptor { return nil }\nfunc (x placeholderExtension) ContainingOneof() protoreflect.OneofDescriptor      { return nil }\nfunc (x placeholderExtension) ContainingMessage() protoreflect.MessageDescriptor  { return nil }\nfunc (x placeholderExtension) Enum() protoreflect.EnumDescriptor                  { return nil }\nfunc (x placeholderExtension) Message() protoreflect.MessageDescriptor            { return nil }\nfunc (x placeholderExtension) ProtoType(protoreflect.FieldDescriptor)             { return }\nfunc (x placeholderExtension) ProtoInternal(pragma.DoNotImplement)                { return }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_file.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"io\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Every enum and message type generated by protoc-gen-go since commit 2fc053c5\n// on February 25th, 2016 has had a method to get the raw descriptor.\n// Types that were not generated by protoc-gen-go or were generated prior\n// to that version are not supported.\n//\n// The []byte returned is the encoded form of a FileDescriptorProto message\n// compressed using GZIP. The []int is the path from the top-level file\n// to the specific message or enum declaration.\ntype (\n\tenumV1 interface {\n\t\tEnumDescriptor() ([]byte, []int)\n\t}\n\tmessageV1 interface {\n\t\tDescriptor() ([]byte, []int)\n\t}\n)\n\nvar legacyFileDescCache sync.Map // map[*byte]protoreflect.FileDescriptor\n\n// legacyLoadFileDesc unmarshals b as a compressed FileDescriptorProto message.\n//\n// This assumes that b is immutable and that b does not refer to part of a\n// concatenated series of GZIP files (which would require shenanigans that\n// rely on the concatenation properties of both protobufs and GZIP).\n// File descriptors generated by protoc-gen-go do not rely on that property.\nfunc legacyLoadFileDesc(b []byte) protoreflect.FileDescriptor {\n\t// Fast-path: check whether we already have a cached file descriptor.\n\tif fd, ok := legacyFileDescCache.Load(&b[0]); ok {\n\t\treturn fd.(protoreflect.FileDescriptor)\n\t}\n\n\t// Slow-path: decompress and unmarshal the file descriptor proto.\n\tzr, err := gzip.NewReader(bytes.NewReader(b))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tb2, err := io.ReadAll(zr)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tfd := filedesc.Builder{\n\t\tRawDescriptor: b2,\n\t\tFileRegistry:  resolverOnly{protoregistry.GlobalFiles}, // do not register back to global registry\n\t}.Build().File\n\tif fd, ok := legacyFileDescCache.LoadOrStore(&b[0], fd); ok {\n\t\treturn fd.(protoreflect.FileDescriptor)\n\t}\n\treturn fd\n}\n\ntype resolverOnly struct {\n\treg *protoregistry.Files\n}\n\nfunc (r resolverOnly) FindFileByPath(path string) (protoreflect.FileDescriptor, error) {\n\treturn r.reg.FindFileByPath(path)\n}\nfunc (r resolverOnly) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) {\n\treturn r.reg.FindDescriptorByName(name)\n}\nfunc (resolverOnly) RegisterFile(protoreflect.FileDescriptor) error {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_message.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/descopts\"\n\tptag \"google.golang.org/protobuf/internal/encoding/tag\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// legacyWrapMessage wraps v as a protoreflect.Message,\n// where v must be a *struct kind and not implement the v2 API already.\nfunc legacyWrapMessage(v reflect.Value) protoreflect.Message {\n\tt := v.Type()\n\tif t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {\n\t\treturn aberrantMessage{v: v}\n\t}\n\tmt := legacyLoadMessageInfo(t, \"\")\n\treturn mt.MessageOf(v.Interface())\n}\n\n// legacyLoadMessageType dynamically loads a protoreflect.Type for t,\n// where t must be not implement the v2 API already.\n// The provided name is used if it cannot be determined from the message.\nfunc legacyLoadMessageType(t reflect.Type, name protoreflect.FullName) protoreflect.MessageType {\n\tif t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {\n\t\treturn aberrantMessageType{t}\n\t}\n\treturn legacyLoadMessageInfo(t, name)\n}\n\nvar legacyMessageTypeCache sync.Map // map[reflect.Type]*MessageInfo\n\n// legacyLoadMessageInfo dynamically loads a *MessageInfo for t,\n// where t must be a *struct kind and not implement the v2 API already.\n// The provided name is used if it cannot be determined from the message.\nfunc legacyLoadMessageInfo(t reflect.Type, name protoreflect.FullName) *MessageInfo {\n\t// Fast-path: check if a MessageInfo is cached for this concrete type.\n\tif mt, ok := legacyMessageTypeCache.Load(t); ok {\n\t\treturn mt.(*MessageInfo)\n\t}\n\n\t// Slow-path: derive message descriptor and initialize MessageInfo.\n\tmi := &MessageInfo{\n\t\tDesc:          legacyLoadMessageDesc(t, name),\n\t\tGoReflectType: t,\n\t}\n\n\tvar hasMarshal, hasUnmarshal bool\n\tv := reflect.Zero(t).Interface()\n\tif _, hasMarshal = v.(legacyMarshaler); hasMarshal {\n\t\tmi.methods.Marshal = legacyMarshal\n\n\t\t// We have no way to tell whether the type's Marshal method\n\t\t// supports deterministic serialization or not, but this\n\t\t// preserves the v1 implementation's behavior of always\n\t\t// calling Marshal methods when present.\n\t\tmi.methods.Flags |= protoiface.SupportMarshalDeterministic\n\t}\n\tif _, hasUnmarshal = v.(legacyUnmarshaler); hasUnmarshal {\n\t\tmi.methods.Unmarshal = legacyUnmarshal\n\t}\n\tif _, hasMerge := v.(legacyMerger); hasMerge || (hasMarshal && hasUnmarshal) {\n\t\tmi.methods.Merge = legacyMerge\n\t}\n\n\tif mi, ok := legacyMessageTypeCache.LoadOrStore(t, mi); ok {\n\t\treturn mi.(*MessageInfo)\n\t}\n\treturn mi\n}\n\nvar legacyMessageDescCache sync.Map // map[reflect.Type]protoreflect.MessageDescriptor\n\n// LegacyLoadMessageDesc returns an MessageDescriptor derived from the Go type,\n// which should be a *struct kind and must not implement the v2 API already.\n//\n// This is exported for testing purposes.\nfunc LegacyLoadMessageDesc(t reflect.Type) protoreflect.MessageDescriptor {\n\treturn legacyLoadMessageDesc(t, \"\")\n}\nfunc legacyLoadMessageDesc(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor {\n\t// Fast-path: check if a MessageDescriptor is cached for this concrete type.\n\tif mi, ok := legacyMessageDescCache.Load(t); ok {\n\t\treturn mi.(protoreflect.MessageDescriptor)\n\t}\n\n\t// Slow-path: initialize MessageDescriptor from the raw descriptor.\n\tmv := reflect.Zero(t).Interface()\n\tif _, ok := mv.(protoreflect.ProtoMessage); ok {\n\t\tpanic(fmt.Sprintf(\"%v already implements proto.Message\", t))\n\t}\n\tmdV1, ok := mv.(messageV1)\n\tif !ok {\n\t\treturn aberrantLoadMessageDesc(t, name)\n\t}\n\n\t// If this is a dynamic message type where there isn't a 1-1 mapping between\n\t// Go and protobuf types, calling the Descriptor method on the zero value of\n\t// the message type isn't likely to work. If it panics, swallow the panic and\n\t// continue as if the Descriptor method wasn't present.\n\tb, idxs := func() ([]byte, []int) {\n\t\tdefer func() {\n\t\t\trecover()\n\t\t}()\n\t\treturn mdV1.Descriptor()\n\t}()\n\tif b == nil {\n\t\treturn aberrantLoadMessageDesc(t, name)\n\t}\n\n\t// If the Go type has no fields, then this might be a proto3 empty message\n\t// from before the size cache was added. If there are any fields, check to\n\t// see that at least one of them looks like something we generated.\n\tif t.Elem().Kind() == reflect.Struct {\n\t\tif nfield := t.Elem().NumField(); nfield > 0 {\n\t\t\thasProtoField := false\n\t\t\tfor i := 0; i < nfield; i++ {\n\t\t\t\tf := t.Elem().Field(i)\n\t\t\t\tif f.Tag.Get(\"protobuf\") != \"\" || f.Tag.Get(\"protobuf_oneof\") != \"\" || strings.HasPrefix(f.Name, \"XXX_\") {\n\t\t\t\t\thasProtoField = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !hasProtoField {\n\t\t\t\treturn aberrantLoadMessageDesc(t, name)\n\t\t\t}\n\t\t}\n\t}\n\n\tmd := legacyLoadFileDesc(b).Messages().Get(idxs[0])\n\tfor _, i := range idxs[1:] {\n\t\tmd = md.Messages().Get(i)\n\t}\n\tif name != \"\" && md.FullName() != name {\n\t\tpanic(fmt.Sprintf(\"mismatching message name: got %v, want %v\", md.FullName(), name))\n\t}\n\tif md, ok := legacyMessageDescCache.LoadOrStore(t, md); ok {\n\t\treturn md.(protoreflect.MessageDescriptor)\n\t}\n\treturn md\n}\n\nvar (\n\taberrantMessageDescLock  sync.Mutex\n\taberrantMessageDescCache map[reflect.Type]protoreflect.MessageDescriptor\n)\n\n// aberrantLoadMessageDesc returns an MessageDescriptor derived from the Go type,\n// which must not implement protoreflect.ProtoMessage or messageV1.\n//\n// This is a best-effort derivation of the message descriptor using the protobuf\n// tags on the struct fields.\nfunc aberrantLoadMessageDesc(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor {\n\taberrantMessageDescLock.Lock()\n\tdefer aberrantMessageDescLock.Unlock()\n\tif aberrantMessageDescCache == nil {\n\t\taberrantMessageDescCache = make(map[reflect.Type]protoreflect.MessageDescriptor)\n\t}\n\treturn aberrantLoadMessageDescReentrant(t, name)\n}\nfunc aberrantLoadMessageDescReentrant(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor {\n\t// Fast-path: check if an MessageDescriptor is cached for this concrete type.\n\tif md, ok := aberrantMessageDescCache[t]; ok {\n\t\treturn md\n\t}\n\n\t// Slow-path: construct a descriptor from the Go struct type (best-effort).\n\t// Cache the MessageDescriptor early on so that we can resolve internal\n\t// cyclic references.\n\tmd := &filedesc.Message{L2: new(filedesc.MessageL2)}\n\tmd.L0.FullName = aberrantDeriveMessageName(t, name)\n\tmd.L0.ParentFile = filedesc.SurrogateProto2\n\taberrantMessageDescCache[t] = md\n\n\tif t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {\n\t\treturn md\n\t}\n\n\t// Try to determine if the message is using proto3 by checking scalars.\n\tfor i := 0; i < t.Elem().NumField(); i++ {\n\t\tf := t.Elem().Field(i)\n\t\tif tag := f.Tag.Get(\"protobuf\"); tag != \"\" {\n\t\t\tswitch f.Type.Kind() {\n\t\t\tcase reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:\n\t\t\t\tmd.L0.ParentFile = filedesc.SurrogateProto3\n\t\t\t}\n\t\t\tfor _, s := range strings.Split(tag, \",\") {\n\t\t\t\tif s == \"proto3\" {\n\t\t\t\t\tmd.L0.ParentFile = filedesc.SurrogateProto3\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tmd.L1.EditionFeatures = md.L0.ParentFile.L1.EditionFeatures\n\t// Obtain a list of oneof wrapper types.\n\tvar oneofWrappers []reflect.Type\n\tmethods := make([]reflect.Method, 0, 2)\n\tif m, ok := t.MethodByName(\"XXX_OneofFuncs\"); ok {\n\t\tmethods = append(methods, m)\n\t}\n\tif m, ok := t.MethodByName(\"XXX_OneofWrappers\"); ok {\n\t\tmethods = append(methods, m)\n\t}\n\tfor _, fn := range methods {\n\t\tfor _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) {\n\t\t\tif vs, ok := v.Interface().([]any); ok {\n\t\t\t\tfor _, v := range vs {\n\t\t\t\t\toneofWrappers = append(oneofWrappers, reflect.TypeOf(v))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Obtain a list of the extension ranges.\n\tif fn, ok := t.MethodByName(\"ExtensionRangeArray\"); ok {\n\t\tvs := fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[0]\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tv := vs.Index(i)\n\t\t\tmd.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, [2]protoreflect.FieldNumber{\n\t\t\t\tprotoreflect.FieldNumber(v.FieldByName(\"Start\").Int()),\n\t\t\t\tprotoreflect.FieldNumber(v.FieldByName(\"End\").Int() + 1),\n\t\t\t})\n\t\t\tmd.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, nil)\n\t\t}\n\t}\n\n\t// Derive the message fields by inspecting the struct fields.\n\tfor i := 0; i < t.Elem().NumField(); i++ {\n\t\tf := t.Elem().Field(i)\n\t\tif tag := f.Tag.Get(\"protobuf\"); tag != \"\" {\n\t\t\ttagKey := f.Tag.Get(\"protobuf_key\")\n\t\t\ttagVal := f.Tag.Get(\"protobuf_val\")\n\t\t\taberrantAppendField(md, f.Type, tag, tagKey, tagVal)\n\t\t}\n\t\tif tag := f.Tag.Get(\"protobuf_oneof\"); tag != \"\" {\n\t\t\tn := len(md.L2.Oneofs.List)\n\t\t\tmd.L2.Oneofs.List = append(md.L2.Oneofs.List, filedesc.Oneof{})\n\t\t\tod := &md.L2.Oneofs.List[n]\n\t\t\tod.L0.FullName = md.FullName().Append(protoreflect.Name(tag))\n\t\t\tod.L0.ParentFile = md.L0.ParentFile\n\t\t\tod.L1.EditionFeatures = md.L1.EditionFeatures\n\t\t\tod.L0.Parent = md\n\t\t\tod.L0.Index = n\n\n\t\t\tfor _, t := range oneofWrappers {\n\t\t\t\tif t.Implements(f.Type) {\n\t\t\t\t\tf := t.Elem().Field(0)\n\t\t\t\t\tif tag := f.Tag.Get(\"protobuf\"); tag != \"\" {\n\t\t\t\t\t\taberrantAppendField(md, f.Type, tag, \"\", \"\")\n\t\t\t\t\t\tfd := &md.L2.Fields.List[len(md.L2.Fields.List)-1]\n\t\t\t\t\t\tfd.L1.ContainingOneof = od\n\t\t\t\t\t\tfd.L1.EditionFeatures = od.L1.EditionFeatures\n\t\t\t\t\t\tod.L1.Fields.List = append(od.L1.Fields.List, fd)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn md\n}\n\nfunc aberrantDeriveMessageName(t reflect.Type, name protoreflect.FullName) protoreflect.FullName {\n\tif name.IsValid() {\n\t\treturn name\n\t}\n\tfunc() {\n\t\tdefer func() { recover() }() // swallow possible nil panics\n\t\tif m, ok := reflect.Zero(t).Interface().(interface{ XXX_MessageName() string }); ok {\n\t\t\tname = protoreflect.FullName(m.XXX_MessageName())\n\t\t}\n\t}()\n\tif name.IsValid() {\n\t\treturn name\n\t}\n\tif t.Kind() == reflect.Ptr {\n\t\tt = t.Elem()\n\t}\n\treturn AberrantDeriveFullName(t)\n}\n\nfunc aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey, tagVal string) {\n\tt := goType\n\tisOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct\n\tisRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8\n\tif isOptional || isRepeated {\n\t\tt = t.Elem()\n\t}\n\tfd := ptag.Unmarshal(tag, t, placeholderEnumValues{}).(*filedesc.Field)\n\n\t// Append field descriptor to the message.\n\tn := len(md.L2.Fields.List)\n\tmd.L2.Fields.List = append(md.L2.Fields.List, *fd)\n\tfd = &md.L2.Fields.List[n]\n\tfd.L0.FullName = md.FullName().Append(fd.Name())\n\tfd.L0.ParentFile = md.L0.ParentFile\n\tfd.L0.Parent = md\n\tfd.L0.Index = n\n\n\tif fd.L1.EditionFeatures.IsPacked {\n\t\tfd.L1.Options = func() protoreflect.ProtoMessage {\n\t\t\topts := descopts.Field.ProtoReflect().New()\n\t\t\tif fd.L1.EditionFeatures.IsPacked {\n\t\t\t\topts.Set(opts.Descriptor().Fields().ByName(\"packed\"), protoreflect.ValueOfBool(fd.L1.EditionFeatures.IsPacked))\n\t\t\t}\n\t\t\treturn opts.Interface()\n\t\t}\n\t}\n\n\t// Populate Enum and Message.\n\tif fd.Enum() == nil && fd.Kind() == protoreflect.EnumKind {\n\t\tswitch v := reflect.Zero(t).Interface().(type) {\n\t\tcase protoreflect.Enum:\n\t\t\tfd.L1.Enum = v.Descriptor()\n\t\tdefault:\n\t\t\tfd.L1.Enum = LegacyLoadEnumDesc(t)\n\t\t}\n\t}\n\tif fd.Message() == nil && (fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind) {\n\t\tswitch v := reflect.Zero(t).Interface().(type) {\n\t\tcase protoreflect.ProtoMessage:\n\t\t\tfd.L1.Message = v.ProtoReflect().Descriptor()\n\t\tcase messageV1:\n\t\t\tfd.L1.Message = LegacyLoadMessageDesc(t)\n\t\tdefault:\n\t\t\tif t.Kind() == reflect.Map {\n\t\t\t\tn := len(md.L1.Messages.List)\n\t\t\t\tmd.L1.Messages.List = append(md.L1.Messages.List, filedesc.Message{L2: new(filedesc.MessageL2)})\n\t\t\t\tmd2 := &md.L1.Messages.List[n]\n\t\t\t\tmd2.L0.FullName = md.FullName().Append(protoreflect.Name(strs.MapEntryName(string(fd.Name()))))\n\t\t\t\tmd2.L0.ParentFile = md.L0.ParentFile\n\t\t\t\tmd2.L0.Parent = md\n\t\t\t\tmd2.L0.Index = n\n\t\t\t\tmd2.L1.EditionFeatures = md.L1.EditionFeatures\n\n\t\t\t\tmd2.L1.IsMapEntry = true\n\t\t\t\tmd2.L2.Options = func() protoreflect.ProtoMessage {\n\t\t\t\t\topts := descopts.Message.ProtoReflect().New()\n\t\t\t\t\topts.Set(opts.Descriptor().Fields().ByName(\"map_entry\"), protoreflect.ValueOfBool(true))\n\t\t\t\t\treturn opts.Interface()\n\t\t\t\t}\n\n\t\t\t\taberrantAppendField(md2, t.Key(), tagKey, \"\", \"\")\n\t\t\t\taberrantAppendField(md2, t.Elem(), tagVal, \"\", \"\")\n\n\t\t\t\tfd.L1.Message = md2\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tfd.L1.Message = aberrantLoadMessageDescReentrant(t, \"\")\n\t\t}\n\t}\n}\n\ntype placeholderEnumValues struct {\n\tprotoreflect.EnumValueDescriptors\n}\n\nfunc (placeholderEnumValues) ByNumber(n protoreflect.EnumNumber) protoreflect.EnumValueDescriptor {\n\treturn filedesc.PlaceholderEnumValue(protoreflect.FullName(fmt.Sprintf(\"UNKNOWN_%d\", n)))\n}\n\n// legacyMarshaler is the proto.Marshaler interface superseded by protoiface.Methoder.\ntype legacyMarshaler interface {\n\tMarshal() ([]byte, error)\n}\n\n// legacyUnmarshaler is the proto.Unmarshaler interface superseded by protoiface.Methoder.\ntype legacyUnmarshaler interface {\n\tUnmarshal([]byte) error\n}\n\n// legacyMerger is the proto.Merger interface superseded by protoiface.Methoder.\ntype legacyMerger interface {\n\tMerge(protoiface.MessageV1)\n}\n\nvar aberrantProtoMethods = &protoiface.Methods{\n\tMarshal:   legacyMarshal,\n\tUnmarshal: legacyUnmarshal,\n\tMerge:     legacyMerge,\n\n\t// We have no way to tell whether the type's Marshal method\n\t// supports deterministic serialization or not, but this\n\t// preserves the v1 implementation's behavior of always\n\t// calling Marshal methods when present.\n\tFlags: protoiface.SupportMarshalDeterministic,\n}\n\nfunc legacyMarshal(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\tv := in.Message.(unwrapper).protoUnwrap()\n\tmarshaler, ok := v.(legacyMarshaler)\n\tif !ok {\n\t\treturn protoiface.MarshalOutput{}, errors.New(\"%T does not implement Marshal\", v)\n\t}\n\tout, err := marshaler.Marshal()\n\tif in.Buf != nil {\n\t\tout = append(in.Buf, out...)\n\t}\n\treturn protoiface.MarshalOutput{\n\t\tBuf: out,\n\t}, err\n}\n\nfunc legacyUnmarshal(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\tv := in.Message.(unwrapper).protoUnwrap()\n\tunmarshaler, ok := v.(legacyUnmarshaler)\n\tif !ok {\n\t\treturn protoiface.UnmarshalOutput{}, errors.New(\"%T does not implement Unmarshal\", v)\n\t}\n\treturn protoiface.UnmarshalOutput{}, unmarshaler.Unmarshal(in.Buf)\n}\n\nfunc legacyMerge(in protoiface.MergeInput) protoiface.MergeOutput {\n\t// Check whether this supports the legacy merger.\n\tdstv := in.Destination.(unwrapper).protoUnwrap()\n\tmerger, ok := dstv.(legacyMerger)\n\tif ok {\n\t\tmerger.Merge(Export{}.ProtoMessageV1Of(in.Source))\n\t\treturn protoiface.MergeOutput{Flags: protoiface.MergeComplete}\n\t}\n\n\t// If legacy merger is unavailable, implement merge in terms of\n\t// a marshal and unmarshal operation.\n\tsrcv := in.Source.(unwrapper).protoUnwrap()\n\tmarshaler, ok := srcv.(legacyMarshaler)\n\tif !ok {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\tdstv = in.Destination.(unwrapper).protoUnwrap()\n\tunmarshaler, ok := dstv.(legacyUnmarshaler)\n\tif !ok {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\tif !in.Source.IsValid() {\n\t\t// Legacy Marshal methods may not function on nil messages.\n\t\t// Check for a typed nil source only after we confirm that\n\t\t// legacy Marshal/Unmarshal methods are present, for\n\t\t// consistency.\n\t\treturn protoiface.MergeOutput{Flags: protoiface.MergeComplete}\n\t}\n\tb, err := marshaler.Marshal()\n\tif err != nil {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\terr = unmarshaler.Unmarshal(b)\n\tif err != nil {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\treturn protoiface.MergeOutput{Flags: protoiface.MergeComplete}\n}\n\n// aberrantMessageType implements MessageType for all types other than pointer-to-struct.\ntype aberrantMessageType struct {\n\tt reflect.Type\n}\n\nfunc (mt aberrantMessageType) New() protoreflect.Message {\n\tif mt.t.Kind() == reflect.Ptr {\n\t\treturn aberrantMessage{reflect.New(mt.t.Elem())}\n\t}\n\treturn aberrantMessage{reflect.Zero(mt.t)}\n}\nfunc (mt aberrantMessageType) Zero() protoreflect.Message {\n\treturn aberrantMessage{reflect.Zero(mt.t)}\n}\nfunc (mt aberrantMessageType) GoType() reflect.Type {\n\treturn mt.t\n}\nfunc (mt aberrantMessageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn LegacyLoadMessageDesc(mt.t)\n}\n\n// aberrantMessage implements Message for all types other than pointer-to-struct.\n//\n// When the underlying type implements legacyMarshaler or legacyUnmarshaler,\n// the aberrant Message can be marshaled or unmarshaled. Otherwise, there is\n// not much that can be done with values of this type.\ntype aberrantMessage struct {\n\tv reflect.Value\n}\n\n// Reset implements the v1 proto.Message.Reset method.\nfunc (m aberrantMessage) Reset() {\n\tif mr, ok := m.v.Interface().(interface{ Reset() }); ok {\n\t\tmr.Reset()\n\t\treturn\n\t}\n\tif m.v.Kind() == reflect.Ptr && !m.v.IsNil() {\n\t\tm.v.Elem().Set(reflect.Zero(m.v.Type().Elem()))\n\t}\n}\n\nfunc (m aberrantMessage) ProtoReflect() protoreflect.Message {\n\treturn m\n}\n\nfunc (m aberrantMessage) Descriptor() protoreflect.MessageDescriptor {\n\treturn LegacyLoadMessageDesc(m.v.Type())\n}\nfunc (m aberrantMessage) Type() protoreflect.MessageType {\n\treturn aberrantMessageType{m.v.Type()}\n}\nfunc (m aberrantMessage) New() protoreflect.Message {\n\tif m.v.Type().Kind() == reflect.Ptr {\n\t\treturn aberrantMessage{reflect.New(m.v.Type().Elem())}\n\t}\n\treturn aberrantMessage{reflect.Zero(m.v.Type())}\n}\nfunc (m aberrantMessage) Interface() protoreflect.ProtoMessage {\n\treturn m\n}\nfunc (m aberrantMessage) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\treturn\n}\nfunc (m aberrantMessage) Has(protoreflect.FieldDescriptor) bool {\n\treturn false\n}\nfunc (m aberrantMessage) Clear(protoreflect.FieldDescriptor) {\n\tpanic(\"invalid Message.Clear on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tif fd.Default().IsValid() {\n\t\treturn fd.Default()\n\t}\n\tpanic(\"invalid Message.Get on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) Set(protoreflect.FieldDescriptor, protoreflect.Value) {\n\tpanic(\"invalid Message.Set on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) Mutable(protoreflect.FieldDescriptor) protoreflect.Value {\n\tpanic(\"invalid Message.Mutable on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) NewField(protoreflect.FieldDescriptor) protoreflect.Value {\n\tpanic(\"invalid Message.NewField on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) WhichOneof(protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tpanic(\"invalid Message.WhichOneof descriptor on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) GetUnknown() protoreflect.RawFields {\n\treturn nil\n}\nfunc (m aberrantMessage) SetUnknown(protoreflect.RawFields) {\n\t// SetUnknown discards its input on messages which don't support unknown field storage.\n}\nfunc (m aberrantMessage) IsValid() bool {\n\tif m.v.Kind() == reflect.Ptr {\n\t\treturn !m.v.IsNil()\n\t}\n\treturn false\n}\nfunc (m aberrantMessage) ProtoMethods() *protoiface.Methods {\n\treturn aberrantProtoMethods\n}\nfunc (m aberrantMessage) protoUnwrap() any {\n\treturn m.v.Interface()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/merge.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\ntype mergeOptions struct{}\n\nfunc (o mergeOptions) Merge(dst, src proto.Message) {\n\tproto.Merge(dst, src)\n}\n\n// merge is protoreflect.Methods.Merge.\nfunc (mi *MessageInfo) merge(in protoiface.MergeInput) protoiface.MergeOutput {\n\tdp, ok := mi.getPointer(in.Destination)\n\tif !ok {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\tsp, ok := mi.getPointer(in.Source)\n\tif !ok {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\tmi.mergePointer(dp, sp, mergeOptions{})\n\treturn protoiface.MergeOutput{Flags: protoiface.MergeComplete}\n}\n\nfunc (mi *MessageInfo) mergePointer(dst, src pointer, opts mergeOptions) {\n\tmi.init()\n\tif dst.IsNil() {\n\t\tpanic(fmt.Sprintf(\"invalid value: merging into nil message\"))\n\t}\n\tif src.IsNil() {\n\t\treturn\n\t}\n\n\tvar presenceSrc presence\n\tvar presenceDst presence\n\tif mi.presenceOffset.IsValid() {\n\t\tpresenceSrc = src.Apply(mi.presenceOffset).PresenceInfo()\n\t\tpresenceDst = dst.Apply(mi.presenceOffset).PresenceInfo()\n\t}\n\n\tfor _, f := range mi.orderedCoderFields {\n\t\tif f.funcs.merge == nil {\n\t\t\tcontinue\n\t\t}\n\t\tsfptr := src.Apply(f.offset)\n\n\t\tif f.presenceIndex != noPresence {\n\t\t\tif !presenceSrc.Present(f.presenceIndex) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdfptr := dst.Apply(f.offset)\n\t\t\tif f.isLazy {\n\t\t\t\tif sfptr.AtomicGetPointer().IsNil() {\n\t\t\t\t\tmi.lazyUnmarshal(src, f.num)\n\t\t\t\t}\n\t\t\t\tif presenceDst.Present(f.presenceIndex) && dfptr.AtomicGetPointer().IsNil() {\n\t\t\t\t\tmi.lazyUnmarshal(dst, f.num)\n\t\t\t\t}\n\t\t\t}\n\t\t\tf.funcs.merge(dst.Apply(f.offset), sfptr, f, opts)\n\t\t\tpresenceDst.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)\n\t\t\tcontinue\n\t\t}\n\n\t\tif f.isPointer && sfptr.Elem().IsNil() {\n\t\t\tcontinue\n\t\t}\n\t\tf.funcs.merge(dst.Apply(f.offset), sfptr, f, opts)\n\t}\n\tif mi.extensionOffset.IsValid() {\n\t\tsext := src.Apply(mi.extensionOffset).Extensions()\n\t\tdext := dst.Apply(mi.extensionOffset).Extensions()\n\t\tif *dext == nil {\n\t\t\t*dext = make(map[int32]ExtensionField)\n\t\t}\n\t\tfor num, sx := range *sext {\n\t\t\txt := sx.Type()\n\t\t\txi := getExtensionFieldInfo(xt)\n\t\t\tif xi.funcs.merge == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdx := (*dext)[num]\n\t\t\tvar dv protoreflect.Value\n\t\t\tif dx.Type() == sx.Type() {\n\t\t\t\tdv = dx.Value()\n\t\t\t}\n\t\t\tif !dv.IsValid() && xi.unmarshalNeedsValue {\n\t\t\t\tdv = xt.New()\n\t\t\t}\n\t\t\tdv = xi.funcs.merge(dv, sx.Value(), opts)\n\t\t\tdx.Set(sx.Type(), dv)\n\t\t\t(*dext)[num] = dx\n\t\t}\n\t}\n\tif mi.unknownOffset.IsValid() {\n\t\tsu := mi.getUnknownBytes(src)\n\t\tif su != nil && len(*su) > 0 {\n\t\t\tdu := mi.mutableUnknownBytes(dst)\n\t\t\t*du = append(*du, *su...)\n\t\t}\n\t}\n}\n\nfunc mergeScalarValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\treturn src\n}\n\nfunc mergeBytesValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\treturn protoreflect.ValueOfBytes(append(emptyBuf[:], src.Bytes()...))\n}\n\nfunc mergeListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\tdstl := dst.List()\n\tsrcl := src.List()\n\tfor i, llen := 0, srcl.Len(); i < llen; i++ {\n\t\tdstl.Append(srcl.Get(i))\n\t}\n\treturn dst\n}\n\nfunc mergeBytesListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\tdstl := dst.List()\n\tsrcl := src.List()\n\tfor i, llen := 0, srcl.Len(); i < llen; i++ {\n\t\tsb := srcl.Get(i).Bytes()\n\t\tdb := append(emptyBuf[:], sb...)\n\t\tdstl.Append(protoreflect.ValueOfBytes(db))\n\t}\n\treturn dst\n}\n\nfunc mergeMessageListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\tdstl := dst.List()\n\tsrcl := src.List()\n\tfor i, llen := 0, srcl.Len(); i < llen; i++ {\n\t\tsm := srcl.Get(i).Message()\n\t\tdm := proto.Clone(sm.Interface()).ProtoReflect()\n\t\tdstl.Append(protoreflect.ValueOfMessage(dm))\n\t}\n\treturn dst\n}\n\nfunc mergeMessageValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\topts.Merge(dst.Message().Interface(), src.Message().Interface())\n\treturn dst\n}\n\nfunc mergeMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tif f.mi != nil {\n\t\tif dst.Elem().IsNil() {\n\t\t\tdst.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t\t}\n\t\tf.mi.mergePointer(dst.Elem(), src.Elem(), opts)\n\t} else {\n\t\tdm := dst.AsValueOf(f.ft).Elem()\n\t\tsm := src.AsValueOf(f.ft).Elem()\n\t\tif dm.IsNil() {\n\t\t\tdm.Set(reflect.New(f.ft.Elem()))\n\t\t}\n\t\topts.Merge(asMessage(dm), asMessage(sm))\n\t}\n}\n\nfunc mergeMessageSlice(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tfor _, sp := range src.PointerSlice() {\n\t\tdm := reflect.New(f.ft.Elem().Elem())\n\t\tif f.mi != nil {\n\t\t\tf.mi.mergePointer(pointerOfValue(dm), sp, opts)\n\t\t} else {\n\t\t\topts.Merge(asMessage(dm), asMessage(sp.AsValueOf(f.ft.Elem().Elem())))\n\t\t}\n\t\tdst.AppendPointerSlice(pointerOfValue(dm))\n\t}\n}\n\nfunc mergeBytes(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Bytes() = append(emptyBuf[:], *src.Bytes()...)\n}\n\nfunc mergeBytesNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Bytes()\n\tif len(v) > 0 {\n\t\t*dst.Bytes() = append(emptyBuf[:], v...)\n\t}\n}\n\nfunc mergeBytesSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.BytesSlice()\n\tfor _, v := range *src.BytesSlice() {\n\t\t*ds = append(*ds, append(emptyBuf[:], v...))\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/merge_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage impl\n\nimport ()\n\nfunc mergeBool(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Bool() = *src.Bool()\n}\n\nfunc mergeBoolNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Bool()\n\tif v != false {\n\t\t*dst.Bool() = v\n\t}\n}\n\nfunc mergeBoolPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.BoolPtr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.BoolPtr() = &v\n\t}\n}\n\nfunc mergeBoolSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.BoolSlice()\n\tss := src.BoolSlice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeInt32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Int32() = *src.Int32()\n}\n\nfunc mergeInt32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Int32()\n\tif v != 0 {\n\t\t*dst.Int32() = v\n\t}\n}\n\nfunc mergeInt32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Int32Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Int32Ptr() = &v\n\t}\n}\n\nfunc mergeInt32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Int32Slice()\n\tss := src.Int32Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeUint32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Uint32() = *src.Uint32()\n}\n\nfunc mergeUint32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Uint32()\n\tif v != 0 {\n\t\t*dst.Uint32() = v\n\t}\n}\n\nfunc mergeUint32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Uint32Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Uint32Ptr() = &v\n\t}\n}\n\nfunc mergeUint32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Uint32Slice()\n\tss := src.Uint32Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeInt64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Int64() = *src.Int64()\n}\n\nfunc mergeInt64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Int64()\n\tif v != 0 {\n\t\t*dst.Int64() = v\n\t}\n}\n\nfunc mergeInt64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Int64Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Int64Ptr() = &v\n\t}\n}\n\nfunc mergeInt64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Int64Slice()\n\tss := src.Int64Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeUint64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Uint64() = *src.Uint64()\n}\n\nfunc mergeUint64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Uint64()\n\tif v != 0 {\n\t\t*dst.Uint64() = v\n\t}\n}\n\nfunc mergeUint64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Uint64Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Uint64Ptr() = &v\n\t}\n}\n\nfunc mergeUint64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Uint64Slice()\n\tss := src.Uint64Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeFloat32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Float32() = *src.Float32()\n}\n\nfunc mergeFloat32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Float32()\n\tif v != 0 {\n\t\t*dst.Float32() = v\n\t}\n}\n\nfunc mergeFloat32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Float32Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Float32Ptr() = &v\n\t}\n}\n\nfunc mergeFloat32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Float32Slice()\n\tss := src.Float32Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeFloat64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Float64() = *src.Float64()\n}\n\nfunc mergeFloat64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Float64()\n\tif v != 0 {\n\t\t*dst.Float64() = v\n\t}\n}\n\nfunc mergeFloat64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Float64Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Float64Ptr() = &v\n\t}\n}\n\nfunc mergeFloat64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Float64Slice()\n\tss := src.Float64Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeString(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.String() = *src.String()\n}\n\nfunc mergeStringNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.String()\n\tif v != \"\" {\n\t\t*dst.String() = v\n\t}\n}\n\nfunc mergeStringPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.StringPtr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.StringPtr() = &v\n\t}\n}\n\nfunc mergeStringSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.StringSlice()\n\tss := src.StringSlice()\n\t*ds = append(*ds, *ss...)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// MessageInfo provides protobuf related functionality for a given Go type\n// that represents a message. A given instance of MessageInfo is tied to\n// exactly one Go type, which must be a pointer to a struct type.\n//\n// The exported fields must be populated before any methods are called\n// and cannot be mutated after set.\ntype MessageInfo struct {\n\t// GoReflectType is the underlying message Go type and must be populated.\n\tGoReflectType reflect.Type // pointer to struct\n\n\t// Desc is the underlying message descriptor type and must be populated.\n\tDesc protoreflect.MessageDescriptor\n\n\t// Deprecated: Exporter will be removed the next time we bump\n\t// protoimpl.GenVersion. See https://github.com/golang/protobuf/issues/1640\n\tExporter exporter\n\n\t// OneofWrappers is list of pointers to oneof wrapper struct types.\n\tOneofWrappers []any\n\n\tinitMu   sync.Mutex // protects all unexported fields\n\tinitDone uint32\n\n\treflectMessageInfo // for reflection implementation\n\tcoderMessageInfo   // for fast-path method implementations\n}\n\n// exporter is a function that returns a reference to the ith field of v,\n// where v is a pointer to a struct. It returns nil if it does not support\n// exporting the requested field (e.g., already exported).\ntype exporter func(v any, i int) any\n\n// getMessageInfo returns the MessageInfo for any message type that\n// is generated by our implementation of protoc-gen-go (for v2 and on).\n// If it is unable to obtain a MessageInfo, it returns nil.\nfunc getMessageInfo(mt reflect.Type) *MessageInfo {\n\tm, ok := reflect.Zero(mt).Interface().(protoreflect.ProtoMessage)\n\tif !ok {\n\t\treturn nil\n\t}\n\tmr, ok := m.ProtoReflect().(interface{ ProtoMessageInfo() *MessageInfo })\n\tif !ok {\n\t\treturn nil\n\t}\n\treturn mr.ProtoMessageInfo()\n}\n\nfunc (mi *MessageInfo) init() {\n\t// This function is called in the hot path. Inline the sync.Once logic,\n\t// since allocating a closure for Once.Do is expensive.\n\t// Keep init small to ensure that it can be inlined.\n\tif atomic.LoadUint32(&mi.initDone) == 0 {\n\t\tmi.initOnce()\n\t}\n}\n\nfunc (mi *MessageInfo) initOnce() {\n\tmi.initMu.Lock()\n\tdefer mi.initMu.Unlock()\n\tif mi.initDone == 1 {\n\t\treturn\n\t}\n\tif opaqueInitHook(mi) {\n\t\treturn\n\t}\n\n\tt := mi.GoReflectType\n\tif t.Kind() != reflect.Ptr && t.Elem().Kind() != reflect.Struct {\n\t\tpanic(fmt.Sprintf(\"got %v, want *struct kind\", t))\n\t}\n\tt = t.Elem()\n\n\tsi := mi.makeStructInfo(t)\n\tmi.makeReflectFuncs(t, si)\n\tmi.makeCoderMethods(t, si)\n\n\tatomic.StoreUint32(&mi.initDone, 1)\n}\n\n// getPointer returns the pointer for a message, which should be of\n// the type of the MessageInfo. If the message is of a different type,\n// it returns ok==false.\nfunc (mi *MessageInfo) getPointer(m protoreflect.Message) (p pointer, ok bool) {\n\tswitch m := m.(type) {\n\tcase *messageState:\n\t\treturn m.pointer(), m.messageInfo() == mi\n\tcase *messageReflectWrapper:\n\t\treturn m.pointer(), m.messageInfo() == mi\n\t}\n\treturn pointer{}, false\n}\n\ntype (\n\tSizeCache       = int32\n\tWeakFields      = map[int32]protoreflect.ProtoMessage\n\tUnknownFields   = unknownFieldsA // TODO: switch to unknownFieldsB\n\tunknownFieldsA  = []byte\n\tunknownFieldsB  = *[]byte\n\tExtensionFields = map[int32]ExtensionField\n)\n\nvar (\n\tsizecacheType       = reflect.TypeOf(SizeCache(0))\n\tunknownFieldsAType  = reflect.TypeOf(unknownFieldsA(nil))\n\tunknownFieldsBType  = reflect.TypeOf(unknownFieldsB(nil))\n\textensionFieldsType = reflect.TypeOf(ExtensionFields(nil))\n)\n\ntype structInfo struct {\n\tsizecacheOffset offset\n\tsizecacheType   reflect.Type\n\tunknownOffset   offset\n\tunknownType     reflect.Type\n\textensionOffset offset\n\textensionType   reflect.Type\n\n\tlazyOffset     offset\n\tpresenceOffset offset\n\n\tfieldsByNumber        map[protoreflect.FieldNumber]reflect.StructField\n\toneofsByName          map[protoreflect.Name]reflect.StructField\n\toneofWrappersByType   map[reflect.Type]protoreflect.FieldNumber\n\toneofWrappersByNumber map[protoreflect.FieldNumber]reflect.Type\n}\n\nfunc (mi *MessageInfo) makeStructInfo(t reflect.Type) structInfo {\n\tsi := structInfo{\n\t\tsizecacheOffset: invalidOffset,\n\t\tunknownOffset:   invalidOffset,\n\t\textensionOffset: invalidOffset,\n\t\tlazyOffset:      invalidOffset,\n\t\tpresenceOffset:  invalidOffset,\n\n\t\tfieldsByNumber:        map[protoreflect.FieldNumber]reflect.StructField{},\n\t\toneofsByName:          map[protoreflect.Name]reflect.StructField{},\n\t\toneofWrappersByType:   map[reflect.Type]protoreflect.FieldNumber{},\n\t\toneofWrappersByNumber: map[protoreflect.FieldNumber]reflect.Type{},\n\t}\n\nfieldLoop:\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tswitch f := t.Field(i); f.Name {\n\t\tcase genid.SizeCache_goname, genid.SizeCacheA_goname:\n\t\t\tif f.Type == sizecacheType {\n\t\t\t\tsi.sizecacheOffset = offsetOf(f)\n\t\t\t\tsi.sizecacheType = f.Type\n\t\t\t}\n\t\tcase genid.UnknownFields_goname, genid.UnknownFieldsA_goname:\n\t\t\tif f.Type == unknownFieldsAType || f.Type == unknownFieldsBType {\n\t\t\t\tsi.unknownOffset = offsetOf(f)\n\t\t\t\tsi.unknownType = f.Type\n\t\t\t}\n\t\tcase genid.ExtensionFields_goname, genid.ExtensionFieldsA_goname, genid.ExtensionFieldsB_goname:\n\t\t\tif f.Type == extensionFieldsType {\n\t\t\t\tsi.extensionOffset = offsetOf(f)\n\t\t\t\tsi.extensionType = f.Type\n\t\t\t}\n\t\tcase \"lazyFields\", \"XXX_lazyUnmarshalInfo\":\n\t\t\tsi.lazyOffset = offsetOf(f)\n\t\tcase \"XXX_presence\":\n\t\t\tsi.presenceOffset = offsetOf(f)\n\t\tdefault:\n\t\t\tfor _, s := range strings.Split(f.Tag.Get(\"protobuf\"), \",\") {\n\t\t\t\tif len(s) > 0 && strings.Trim(s, \"0123456789\") == \"\" {\n\t\t\t\t\tn, _ := strconv.ParseUint(s, 10, 64)\n\t\t\t\t\tsi.fieldsByNumber[protoreflect.FieldNumber(n)] = f\n\t\t\t\t\tcontinue fieldLoop\n\t\t\t\t}\n\t\t\t}\n\t\t\tif s := f.Tag.Get(\"protobuf_oneof\"); len(s) > 0 {\n\t\t\t\tsi.oneofsByName[protoreflect.Name(s)] = f\n\t\t\t\tcontinue fieldLoop\n\t\t\t}\n\t\t}\n\t}\n\n\t// Derive a mapping of oneof wrappers to fields.\n\toneofWrappers := mi.OneofWrappers\n\tmethods := make([]reflect.Method, 0, 2)\n\tif m, ok := reflect.PtrTo(t).MethodByName(\"XXX_OneofFuncs\"); ok {\n\t\tmethods = append(methods, m)\n\t}\n\tif m, ok := reflect.PtrTo(t).MethodByName(\"XXX_OneofWrappers\"); ok {\n\t\tmethods = append(methods, m)\n\t}\n\tfor _, fn := range methods {\n\t\tfor _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) {\n\t\t\tif vs, ok := v.Interface().([]any); ok {\n\t\t\t\toneofWrappers = vs\n\t\t\t}\n\t\t}\n\t}\n\tfor _, v := range oneofWrappers {\n\t\ttf := reflect.TypeOf(v).Elem()\n\t\tf := tf.Field(0)\n\t\tfor _, s := range strings.Split(f.Tag.Get(\"protobuf\"), \",\") {\n\t\t\tif len(s) > 0 && strings.Trim(s, \"0123456789\") == \"\" {\n\t\t\t\tn, _ := strconv.ParseUint(s, 10, 64)\n\t\t\t\tsi.oneofWrappersByType[tf] = protoreflect.FieldNumber(n)\n\t\t\t\tsi.oneofWrappersByNumber[protoreflect.FieldNumber(n)] = tf\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\treturn si\n}\n\nfunc (mi *MessageInfo) New() protoreflect.Message {\n\tm := reflect.New(mi.GoReflectType.Elem()).Interface()\n\tif r, ok := m.(protoreflect.ProtoMessage); ok {\n\t\treturn r.ProtoReflect()\n\t}\n\treturn mi.MessageOf(m)\n}\nfunc (mi *MessageInfo) Zero() protoreflect.Message {\n\treturn mi.MessageOf(reflect.Zero(mi.GoReflectType).Interface())\n}\nfunc (mi *MessageInfo) Descriptor() protoreflect.MessageDescriptor {\n\treturn mi.Desc\n}\nfunc (mi *MessageInfo) Enum(i int) protoreflect.EnumType {\n\tmi.init()\n\tfd := mi.Desc.Fields().Get(i)\n\treturn Export{}.EnumTypeOf(mi.fieldTypes[fd.Number()])\n}\nfunc (mi *MessageInfo) Message(i int) protoreflect.MessageType {\n\tmi.init()\n\tfd := mi.Desc.Fields().Get(i)\n\tswitch {\n\tcase fd.IsMap():\n\t\treturn mapEntryType{fd.Message(), mi.fieldTypes[fd.Number()]}\n\tdefault:\n\t\treturn Export{}.MessageTypeOf(mi.fieldTypes[fd.Number()])\n\t}\n}\n\ntype mapEntryType struct {\n\tdesc    protoreflect.MessageDescriptor\n\tvalType any // zero value of enum or message type\n}\n\nfunc (mt mapEntryType) New() protoreflect.Message {\n\treturn nil\n}\nfunc (mt mapEntryType) Zero() protoreflect.Message {\n\treturn nil\n}\nfunc (mt mapEntryType) Descriptor() protoreflect.MessageDescriptor {\n\treturn mt.desc\n}\nfunc (mt mapEntryType) Enum(i int) protoreflect.EnumType {\n\tfd := mt.desc.Fields().Get(i)\n\tif fd.Enum() == nil {\n\t\treturn nil\n\t}\n\treturn Export{}.EnumTypeOf(mt.valType)\n}\nfunc (mt mapEntryType) Message(i int) protoreflect.MessageType {\n\tfd := mt.desc.Fields().Get(i)\n\tif fd.Message() == nil {\n\t\treturn nil\n\t}\n\treturn Export{}.MessageTypeOf(mt.valType)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_opaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype opaqueStructInfo struct {\n\tstructInfo\n}\n\n// isOpaque determines whether a protobuf message type is on the Opaque API.  It\n// checks whether the type is a Go struct that protoc-gen-go would generate.\n//\n// This function only detects newly generated messages from the v2\n// implementation of protoc-gen-go. It is unable to classify generated messages\n// that are too old or those that are generated by a different generator\n// such as protoc-gen-gogo.\nfunc isOpaque(t reflect.Type) bool {\n\t// The current detection mechanism is to simply check the first field\n\t// for a struct tag with the \"protogen\" key.\n\tif t.Kind() == reflect.Struct && t.NumField() > 0 {\n\t\tpgt := t.Field(0).Tag.Get(\"protogen\")\n\t\treturn strings.HasPrefix(pgt, \"opaque.\")\n\t}\n\treturn false\n}\n\nfunc opaqueInitHook(mi *MessageInfo) bool {\n\tmt := mi.GoReflectType.Elem()\n\tsi := opaqueStructInfo{\n\t\tstructInfo: mi.makeStructInfo(mt),\n\t}\n\n\tif !isOpaque(mt) {\n\t\treturn false\n\t}\n\n\tdefer atomic.StoreUint32(&mi.initDone, 1)\n\n\tmi.fields = map[protoreflect.FieldNumber]*fieldInfo{}\n\tfds := mi.Desc.Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tfd := fds.Get(i)\n\t\tfs := si.fieldsByNumber[fd.Number()]\n\t\tvar fi fieldInfo\n\t\tusePresence, _ := filedesc.UsePresenceForField(fd)\n\n\t\tswitch {\n\t\tcase fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():\n\t\t\t// Oneofs are no different for opaque.\n\t\t\tfi = fieldInfoForOneof(fd, si.oneofsByName[fd.ContainingOneof().Name()], mi.Exporter, si.oneofWrappersByNumber[fd.Number()])\n\t\tcase fd.IsMap():\n\t\t\tfi = mi.fieldInfoForMapOpaque(si, fd, fs)\n\t\tcase fd.IsList() && fd.Message() == nil && usePresence:\n\t\t\tfi = mi.fieldInfoForScalarListOpaque(si, fd, fs)\n\t\tcase fd.IsList() && fd.Message() == nil:\n\t\t\t// Proto3 lists without presence can use same access methods as open\n\t\t\tfi = fieldInfoForList(fd, fs, mi.Exporter)\n\t\tcase fd.IsList() && usePresence:\n\t\t\tfi = mi.fieldInfoForMessageListOpaque(si, fd, fs)\n\t\tcase fd.IsList():\n\t\t\t// Proto3 opaque messages that does not need presence bitmap.\n\t\t\t// Different representation than open struct, but same logic\n\t\t\tfi = mi.fieldInfoForMessageListOpaqueNoPresence(si, fd, fs)\n\t\tcase fd.Message() != nil && usePresence:\n\t\t\tfi = mi.fieldInfoForMessageOpaque(si, fd, fs)\n\t\tcase fd.Message() != nil:\n\t\t\t// Proto3 messages without presence can use same access methods as open\n\t\t\tfi = fieldInfoForMessage(fd, fs, mi.Exporter)\n\t\tdefault:\n\t\t\tfi = mi.fieldInfoForScalarOpaque(si, fd, fs)\n\t\t}\n\t\tmi.fields[fd.Number()] = &fi\n\t}\n\tmi.oneofs = map[protoreflect.Name]*oneofInfo{}\n\tfor i := 0; i < mi.Desc.Oneofs().Len(); i++ {\n\t\tod := mi.Desc.Oneofs().Get(i)\n\t\tmi.oneofs[od.Name()] = makeOneofInfoOpaque(mi, od, si.structInfo, mi.Exporter)\n\t}\n\n\tmi.denseFields = make([]*fieldInfo, fds.Len()*2)\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tif fd := fds.Get(i); int(fd.Number()) < len(mi.denseFields) {\n\t\t\tmi.denseFields[fd.Number()] = mi.fields[fd.Number()]\n\t\t}\n\t}\n\n\tfor i := 0; i < fds.Len(); {\n\t\tfd := fds.Get(i)\n\t\tif od := fd.ContainingOneof(); od != nil && !fd.ContainingOneof().IsSynthetic() {\n\t\t\tmi.rangeInfos = append(mi.rangeInfos, mi.oneofs[od.Name()])\n\t\t\ti += od.Fields().Len()\n\t\t} else {\n\t\t\tmi.rangeInfos = append(mi.rangeInfos, mi.fields[fd.Number()])\n\t\t\ti++\n\t\t}\n\t}\n\n\tmi.makeExtensionFieldsFunc(mt, si.structInfo)\n\tmi.makeUnknownFieldsFunc(mt, si.structInfo)\n\tmi.makeOpaqueCoderMethods(mt, si)\n\tmi.makeFieldTypes(si.structInfo)\n\n\treturn true\n}\n\nfunc makeOneofInfoOpaque(mi *MessageInfo, od protoreflect.OneofDescriptor, si structInfo, x exporter) *oneofInfo {\n\toi := &oneofInfo{oneofDesc: od}\n\tif od.IsSynthetic() {\n\t\tfd := od.Fields().Get(0)\n\t\tindex, _ := presenceIndex(mi.Desc, fd)\n\t\toi.which = func(p pointer) protoreflect.FieldNumber {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tif !mi.present(p, index) {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\treturn od.Fields().Get(0).Number()\n\t\t}\n\t\treturn oi\n\t}\n\t// Dispatch to non-opaque oneof implementation for non-synthetic oneofs.\n\treturn makeOneofInfo(od, si, x)\n}\n\nfunc (mi *MessageInfo) fieldInfoForMapOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Map {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want map kind\", ft))\n\t}\n\tfieldOffset := offsetOf(fs)\n\tconv := NewConverter(ft, fd)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Don't bother checking presence bits, since we need to\n\t\t\t// look at the map length even if the presence bit is set.\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn rv.Len() > 0\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.Len() == 0 {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\tpv := conv.GoValueOf(v)\n\t\t\tif pv.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"invalid value: setting map field to read-only value\"))\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(pv)\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif v.IsNil() {\n\t\t\t\tv.Set(reflect.MakeMap(fs.Type))\n\t\t\t}\n\t\t\treturn conv.PBValueOf(v)\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc (mi *MessageInfo) fieldInfoForScalarListOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Slice {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want slice kind\", ft))\n\t}\n\tconv := NewConverter(reflect.PtrTo(ft), fd)\n\tfieldOffset := offsetOf(fs)\n\tindex, _ := presenceIndex(mi.Desc, fd)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn rv.Len() > 0\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type)\n\t\t\tif rv.Elem().Len() == 0 {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\tpv := conv.GoValueOf(v)\n\t\t\tif pv.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"invalid value: setting repeated field to read-only value\"))\n\t\t\t}\n\t\t\tmi.setPresent(p, index)\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(pv.Elem())\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tmi.setPresent(p, index)\n\t\t\treturn conv.PBValueOf(p.Apply(fieldOffset).AsValueOf(fs.Type))\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc (mi *MessageInfo) fieldInfoForMessageListOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Ptr || ft.Elem().Kind() != reflect.Slice {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want slice kind\", ft))\n\t}\n\tconv := NewConverter(ft, fd)\n\tfieldOffset := offsetOf(fs)\n\tindex, _ := presenceIndex(mi.Desc, fd)\n\tfieldNumber := fd.Number()\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !mi.present(p, index) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tsp := p.Apply(fieldOffset).AtomicGetPointer()\n\t\t\tif sp.IsNil() {\n\t\t\t\t// Lazily unmarshal this field.\n\t\t\t\tmi.lazyUnmarshal(p, fieldNumber)\n\t\t\t\tsp = p.Apply(fieldOffset).AtomicGetPointer()\n\t\t\t}\n\t\t\trv := sp.AsValueOf(fs.Type.Elem())\n\t\t\treturn rv.Elem().Len() > 0\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\tfp := p.Apply(fieldOffset)\n\t\t\tsp := fp.AtomicGetPointer()\n\t\t\tif sp.IsNil() {\n\t\t\t\tsp = fp.AtomicSetPointerIfNil(pointerOfValue(reflect.New(fs.Type.Elem())))\n\t\t\t\tmi.setPresent(p, index)\n\t\t\t}\n\t\t\trv := sp.AsValueOf(fs.Type.Elem())\n\t\t\trv.Elem().Set(reflect.Zero(rv.Type().Elem()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tif !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tsp := p.Apply(fieldOffset).AtomicGetPointer()\n\t\t\tif sp.IsNil() {\n\t\t\t\t// Lazily unmarshal this field.\n\t\t\t\tmi.lazyUnmarshal(p, fieldNumber)\n\t\t\t\tsp = p.Apply(fieldOffset).AtomicGetPointer()\n\t\t\t}\n\t\t\trv := sp.AsValueOf(fs.Type.Elem())\n\t\t\tif rv.Elem().Len() == 0 {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\tfp := p.Apply(fieldOffset)\n\t\t\tsp := fp.AtomicGetPointer()\n\t\t\tif sp.IsNil() {\n\t\t\t\tsp = fp.AtomicSetPointerIfNil(pointerOfValue(reflect.New(fs.Type.Elem())))\n\t\t\t\tmi.setPresent(p, index)\n\t\t\t}\n\t\t\trv := sp.AsValueOf(fs.Type.Elem())\n\t\t\tval := conv.GoValueOf(v)\n\t\t\tif val.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"invalid value: setting repeated field to read-only value\"))\n\t\t\t} else {\n\t\t\t\trv.Elem().Set(val.Elem())\n\t\t\t}\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tfp := p.Apply(fieldOffset)\n\t\t\tsp := fp.AtomicGetPointer()\n\t\t\tif sp.IsNil() {\n\t\t\t\tif mi.present(p, index) {\n\t\t\t\t\t// Lazily unmarshal this field.\n\t\t\t\t\tmi.lazyUnmarshal(p, fieldNumber)\n\t\t\t\t\tsp = p.Apply(fieldOffset).AtomicGetPointer()\n\t\t\t\t} else {\n\t\t\t\t\tsp = fp.AtomicSetPointerIfNil(pointerOfValue(reflect.New(fs.Type.Elem())))\n\t\t\t\t\tmi.setPresent(p, index)\n\t\t\t\t}\n\t\t\t}\n\t\t\trv := sp.AsValueOf(fs.Type.Elem())\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc (mi *MessageInfo) fieldInfoForMessageListOpaqueNoPresence(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Ptr || ft.Elem().Kind() != reflect.Slice {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want slice kind\", ft))\n\t}\n\tconv := NewConverter(ft, fd)\n\tfieldOffset := offsetOf(fs)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn rv.Elem().Len() > 0\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif !rv.IsNil() {\n\t\t\t\trv.Elem().Set(reflect.Zero(rv.Type().Elem()))\n\t\t\t}\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tif rv.Elem().Len() == 0 {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() {\n\t\t\t\trv.Set(reflect.New(fs.Type.Elem()))\n\t\t\t}\n\t\t\tval := conv.GoValueOf(v)\n\t\t\tif val.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"invalid value: setting repeated field to read-only value\"))\n\t\t\t} else {\n\t\t\t\trv.Elem().Set(val.Elem())\n\t\t\t}\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() {\n\t\t\t\trv.Set(reflect.New(fs.Type.Elem()))\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc (mi *MessageInfo) fieldInfoForScalarOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {\n\tft := fs.Type\n\tnullable := fd.HasPresence()\n\tif oneof := fd.ContainingOneof(); oneof != nil && oneof.IsSynthetic() {\n\t\tnullable = true\n\t}\n\tderef := false\n\tif nullable && ft.Kind() == reflect.Ptr {\n\t\tft = ft.Elem()\n\t\tderef = true\n\t}\n\tconv := NewConverter(ft, fd)\n\tfieldOffset := offsetOf(fs)\n\tindex, _ := presenceIndex(mi.Desc, fd)\n\tvar getter func(p pointer) protoreflect.Value\n\tif !nullable {\n\t\tgetter = getterForDirectScalar(fd, fs, conv, fieldOffset)\n\t} else {\n\t\tgetter = getterForOpaqueNullableScalar(mi, index, fd, fs, conv, fieldOffset)\n\t}\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif nullable {\n\t\t\t\treturn mi.present(p, index)\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tswitch rv.Kind() {\n\t\t\tcase reflect.Bool:\n\t\t\t\treturn rv.Bool()\n\t\t\tcase reflect.Int32, reflect.Int64:\n\t\t\t\treturn rv.Int() != 0\n\t\t\tcase reflect.Uint32, reflect.Uint64:\n\t\t\t\treturn rv.Uint() != 0\n\t\t\tcase reflect.Float32, reflect.Float64:\n\t\t\t\treturn rv.Float() != 0 || math.Signbit(rv.Float())\n\t\t\tcase reflect.String, reflect.Slice:\n\t\t\t\treturn rv.Len() > 0\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"invalid type: %v\", rv.Type())) // should never happen\n\t\t\t}\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\tif nullable {\n\t\t\t\tmi.clearPresent(p, index)\n\t\t\t}\n\t\t\t// This is only valuable for bytes and strings, but we do it unconditionally.\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: getter,\n\t\t// TODO: Implement unsafe fast path for set?\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif deref {\n\t\t\t\tif rv.IsNil() {\n\t\t\t\t\trv.Set(reflect.New(ft))\n\t\t\t\t}\n\t\t\t\trv = rv.Elem()\n\t\t\t}\n\n\t\t\trv.Set(conv.GoValueOf(v))\n\t\t\tif nullable && rv.Kind() == reflect.Slice && rv.IsNil() {\n\t\t\t\trv.Set(emptyBytes)\n\t\t\t}\n\t\t\tif nullable {\n\t\t\t\tmi.setPresent(p, index)\n\t\t\t}\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc (mi *MessageInfo) fieldInfoForMessageOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {\n\tft := fs.Type\n\tconv := NewConverter(ft, fd)\n\tfieldOffset := offsetOf(fs)\n\tindex, _ := presenceIndex(mi.Desc, fd)\n\tfieldNumber := fd.Number()\n\telemType := fs.Type.Elem()\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn mi.present(p, index)\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\tmi.clearPresent(p, index)\n\t\t\tp.Apply(fieldOffset).AtomicSetNilPointer()\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tfp := p.Apply(fieldOffset)\n\t\t\tmp := fp.AtomicGetPointer()\n\t\t\tif mp.IsNil() {\n\t\t\t\t// Lazily unmarshal this field.\n\t\t\t\tmi.lazyUnmarshal(p, fieldNumber)\n\t\t\t\tmp = fp.AtomicGetPointer()\n\t\t\t}\n\t\t\trv := mp.AsValueOf(elemType)\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\tval := pointerOfValue(conv.GoValueOf(v))\n\t\t\tif val.IsNil() {\n\t\t\t\tpanic(\"invalid nil pointer\")\n\t\t\t}\n\t\t\tp.Apply(fieldOffset).AtomicSetPointer(val)\n\t\t\tmi.setPresent(p, index)\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tfp := p.Apply(fieldOffset)\n\t\t\tmp := fp.AtomicGetPointer()\n\t\t\tif mp.IsNil() {\n\t\t\t\tif mi.present(p, index) {\n\t\t\t\t\t// Lazily unmarshal this field.\n\t\t\t\t\tmi.lazyUnmarshal(p, fieldNumber)\n\t\t\t\t\tmp = fp.AtomicGetPointer()\n\t\t\t\t} else {\n\t\t\t\t\tmp = pointerOfValue(conv.GoValueOf(conv.New()))\n\t\t\t\t\tfp.AtomicSetPointer(mp)\n\t\t\t\t\tmi.setPresent(p, index)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn conv.PBValueOf(mp.AsValueOf(fs.Type.Elem()))\n\t\t},\n\t\tnewMessage: func() protoreflect.Message {\n\t\t\treturn conv.New().Message()\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\n// A presenceList wraps a List, updating presence bits as necessary when the\n// list contents change.\ntype presenceList struct {\n\tpvalueList\n\tsetPresence func(bool)\n}\ntype pvalueList interface {\n\tprotoreflect.List\n\t//Unwrapper\n}\n\nfunc (list presenceList) Append(v protoreflect.Value) {\n\tlist.pvalueList.Append(v)\n\tlist.setPresence(true)\n}\nfunc (list presenceList) Truncate(i int) {\n\tlist.pvalueList.Truncate(i)\n\tlist.setPresence(i > 0)\n}\n\n// presenceIndex returns the index to pass to presence functions.\n//\n// TODO: field.Desc.Index() would be simpler, and would give space to record the presence of oneof fields.\nfunc presenceIndex(md protoreflect.MessageDescriptor, fd protoreflect.FieldDescriptor) (uint32, presenceSize) {\n\tfound := false\n\tvar index, numIndices uint32\n\tfor i := 0; i < md.Fields().Len(); i++ {\n\t\tf := md.Fields().Get(i)\n\t\tif f == fd {\n\t\t\tfound = true\n\t\t\tindex = numIndices\n\t\t}\n\t\tif f.ContainingOneof() == nil || isLastOneofField(f) {\n\t\t\tnumIndices++\n\t\t}\n\t}\n\tif !found {\n\t\tpanic(fmt.Sprintf(\"BUG: %v not in %v\", fd.Name(), md.FullName()))\n\t}\n\treturn index, presenceSize(numIndices)\n}\n\nfunc isLastOneofField(fd protoreflect.FieldDescriptor) bool {\n\tfields := fd.ContainingOneof().Fields()\n\treturn fields.Get(fields.Len()-1) == fd\n}\n\nfunc (mi *MessageInfo) setPresent(p pointer, index uint32) {\n\tp.Apply(mi.presenceOffset).PresenceInfo().SetPresent(index, mi.presenceSize)\n}\n\nfunc (mi *MessageInfo) clearPresent(p pointer, index uint32) {\n\tp.Apply(mi.presenceOffset).PresenceInfo().ClearPresent(index)\n}\n\nfunc (mi *MessageInfo) present(p pointer, index uint32) bool {\n\treturn p.Apply(mi.presenceOffset).PresenceInfo().Present(index)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_opaque_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc getterForOpaqueNullableScalar(mi *MessageInfo, index uint32, fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value {\n\tft := fs.Type\n\tif ft.Kind() == reflect.Ptr {\n\t\tft = ft.Elem()\n\t}\n\tif fd.Kind() == protoreflect.EnumKind {\n\t\t// Enums for nullable opaque types.\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn conv.PBValueOf(rv)\n\t\t}\n\t}\n\tswitch ft.Kind() {\n\tcase reflect.Bool:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Bool()\n\t\t\treturn protoreflect.ValueOfBool(*x)\n\t\t}\n\tcase reflect.Int32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Int32()\n\t\t\treturn protoreflect.ValueOfInt32(*x)\n\t\t}\n\tcase reflect.Uint32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Uint32()\n\t\t\treturn protoreflect.ValueOfUint32(*x)\n\t\t}\n\tcase reflect.Int64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Int64()\n\t\t\treturn protoreflect.ValueOfInt64(*x)\n\t\t}\n\tcase reflect.Uint64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Uint64()\n\t\t\treturn protoreflect.ValueOfUint64(*x)\n\t\t}\n\tcase reflect.Float32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Float32()\n\t\t\treturn protoreflect.ValueOfFloat32(*x)\n\t\t}\n\tcase reflect.Float64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Float64()\n\t\t\treturn protoreflect.ValueOfFloat64(*x)\n\t\t}\n\tcase reflect.String:\n\t\tif fd.Kind() == protoreflect.BytesKind {\n\t\t\treturn func(p pointer) protoreflect.Value {\n\t\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tx := p.Apply(fieldOffset).StringPtr()\n\t\t\t\tif *x == nil {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tif len(**x) == 0 {\n\t\t\t\t\treturn protoreflect.ValueOfBytes(nil)\n\t\t\t\t}\n\t\t\t\treturn protoreflect.ValueOfBytes([]byte(**x))\n\t\t\t}\n\t\t}\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).StringPtr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfString(**x)\n\t\t}\n\tcase reflect.Slice:\n\t\tif fd.Kind() == protoreflect.StringKind {\n\t\t\treturn func(p pointer) protoreflect.Value {\n\t\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tx := p.Apply(fieldOffset).Bytes()\n\t\t\t\treturn protoreflect.ValueOfString(string(*x))\n\t\t\t}\n\t\t}\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Bytes()\n\t\t\treturn protoreflect.ValueOfBytes(*x)\n\t\t}\n\t}\n\tpanic(\"unexpected protobuf kind: \" + ft.Kind().String())\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_reflect.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/internal/detrand\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype reflectMessageInfo struct {\n\tfields map[protoreflect.FieldNumber]*fieldInfo\n\toneofs map[protoreflect.Name]*oneofInfo\n\n\t// fieldTypes contains the zero value of an enum or message field.\n\t// For lists, it contains the element type.\n\t// For maps, it contains the entry value type.\n\tfieldTypes map[protoreflect.FieldNumber]any\n\n\t// denseFields is a subset of fields where:\n\t//\t0 < fieldDesc.Number() < len(denseFields)\n\t// It provides faster access to the fieldInfo, but may be incomplete.\n\tdenseFields []*fieldInfo\n\n\t// rangeInfos is a list of all fields (not belonging to a oneof) and oneofs.\n\trangeInfos []any // either *fieldInfo or *oneofInfo\n\n\tgetUnknown   func(pointer) protoreflect.RawFields\n\tsetUnknown   func(pointer, protoreflect.RawFields)\n\textensionMap func(pointer) *extensionMap\n\n\tnilMessage atomicNilMessage\n}\n\n// makeReflectFuncs generates the set of functions to support reflection.\nfunc (mi *MessageInfo) makeReflectFuncs(t reflect.Type, si structInfo) {\n\tmi.makeKnownFieldsFunc(si)\n\tmi.makeUnknownFieldsFunc(t, si)\n\tmi.makeExtensionFieldsFunc(t, si)\n\tmi.makeFieldTypes(si)\n}\n\n// makeKnownFieldsFunc generates functions for operations that can be performed\n// on each protobuf message field. It takes in a reflect.Type representing the\n// Go struct and matches message fields with struct fields.\n//\n// This code assumes that the struct is well-formed and panics if there are\n// any discrepancies.\nfunc (mi *MessageInfo) makeKnownFieldsFunc(si structInfo) {\n\tmi.fields = map[protoreflect.FieldNumber]*fieldInfo{}\n\tmd := mi.Desc\n\tfds := md.Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tfd := fds.Get(i)\n\t\tfs := si.fieldsByNumber[fd.Number()]\n\t\tisOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic()\n\t\tif isOneof {\n\t\t\tfs = si.oneofsByName[fd.ContainingOneof().Name()]\n\t\t}\n\t\tvar fi fieldInfo\n\t\tswitch {\n\t\tcase fs.Type == nil:\n\t\t\tfi = fieldInfoForMissing(fd) // never occurs for officially generated message types\n\t\tcase isOneof:\n\t\t\tfi = fieldInfoForOneof(fd, fs, mi.Exporter, si.oneofWrappersByNumber[fd.Number()])\n\t\tcase fd.IsMap():\n\t\t\tfi = fieldInfoForMap(fd, fs, mi.Exporter)\n\t\tcase fd.IsList():\n\t\t\tfi = fieldInfoForList(fd, fs, mi.Exporter)\n\t\tcase fd.Message() != nil:\n\t\t\tfi = fieldInfoForMessage(fd, fs, mi.Exporter)\n\t\tdefault:\n\t\t\tfi = fieldInfoForScalar(fd, fs, mi.Exporter)\n\t\t}\n\t\tmi.fields[fd.Number()] = &fi\n\t}\n\n\tmi.oneofs = map[protoreflect.Name]*oneofInfo{}\n\tfor i := 0; i < md.Oneofs().Len(); i++ {\n\t\tod := md.Oneofs().Get(i)\n\t\tmi.oneofs[od.Name()] = makeOneofInfo(od, si, mi.Exporter)\n\t}\n\n\tmi.denseFields = make([]*fieldInfo, fds.Len()*2)\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tif fd := fds.Get(i); int(fd.Number()) < len(mi.denseFields) {\n\t\t\tmi.denseFields[fd.Number()] = mi.fields[fd.Number()]\n\t\t}\n\t}\n\n\tfor i := 0; i < fds.Len(); {\n\t\tfd := fds.Get(i)\n\t\tif od := fd.ContainingOneof(); od != nil && !od.IsSynthetic() {\n\t\t\tmi.rangeInfos = append(mi.rangeInfos, mi.oneofs[od.Name()])\n\t\t\ti += od.Fields().Len()\n\t\t} else {\n\t\t\tmi.rangeInfos = append(mi.rangeInfos, mi.fields[fd.Number()])\n\t\t\ti++\n\t\t}\n\t}\n\n\t// Introduce instability to iteration order, but keep it deterministic.\n\tif len(mi.rangeInfos) > 1 && detrand.Bool() {\n\t\ti := detrand.Intn(len(mi.rangeInfos) - 1)\n\t\tmi.rangeInfos[i], mi.rangeInfos[i+1] = mi.rangeInfos[i+1], mi.rangeInfos[i]\n\t}\n}\n\nfunc (mi *MessageInfo) makeUnknownFieldsFunc(t reflect.Type, si structInfo) {\n\tswitch {\n\tcase si.unknownOffset.IsValid() && si.unknownType == unknownFieldsAType:\n\t\t// Handle as []byte.\n\t\tmi.getUnknown = func(p pointer) protoreflect.RawFields {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn *p.Apply(mi.unknownOffset).Bytes()\n\t\t}\n\t\tmi.setUnknown = func(p pointer, b protoreflect.RawFields) {\n\t\t\tif p.IsNil() {\n\t\t\t\tpanic(\"invalid SetUnknown on nil Message\")\n\t\t\t}\n\t\t\t*p.Apply(mi.unknownOffset).Bytes() = b\n\t\t}\n\tcase si.unknownOffset.IsValid() && si.unknownType == unknownFieldsBType:\n\t\t// Handle as *[]byte.\n\t\tmi.getUnknown = func(p pointer) protoreflect.RawFields {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tbp := p.Apply(mi.unknownOffset).BytesPtr()\n\t\t\tif *bp == nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn **bp\n\t\t}\n\t\tmi.setUnknown = func(p pointer, b protoreflect.RawFields) {\n\t\t\tif p.IsNil() {\n\t\t\t\tpanic(\"invalid SetUnknown on nil Message\")\n\t\t\t}\n\t\t\tbp := p.Apply(mi.unknownOffset).BytesPtr()\n\t\t\tif *bp == nil {\n\t\t\t\t*bp = new([]byte)\n\t\t\t}\n\t\t\t**bp = b\n\t\t}\n\tdefault:\n\t\tmi.getUnknown = func(pointer) protoreflect.RawFields {\n\t\t\treturn nil\n\t\t}\n\t\tmi.setUnknown = func(p pointer, _ protoreflect.RawFields) {\n\t\t\tif p.IsNil() {\n\t\t\t\tpanic(\"invalid SetUnknown on nil Message\")\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (mi *MessageInfo) makeExtensionFieldsFunc(t reflect.Type, si structInfo) {\n\tif si.extensionOffset.IsValid() {\n\t\tmi.extensionMap = func(p pointer) *extensionMap {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn (*extensionMap)(nil)\n\t\t\t}\n\t\t\tv := p.Apply(si.extensionOffset).AsValueOf(extensionFieldsType)\n\t\t\treturn (*extensionMap)(v.Interface().(*map[int32]ExtensionField))\n\t\t}\n\t} else {\n\t\tmi.extensionMap = func(pointer) *extensionMap {\n\t\t\treturn (*extensionMap)(nil)\n\t\t}\n\t}\n}\nfunc (mi *MessageInfo) makeFieldTypes(si structInfo) {\n\tmd := mi.Desc\n\tfds := md.Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tvar ft reflect.Type\n\t\tfd := fds.Get(i)\n\t\tfs := si.fieldsByNumber[fd.Number()]\n\t\tisOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic()\n\t\tif isOneof {\n\t\t\tfs = si.oneofsByName[fd.ContainingOneof().Name()]\n\t\t}\n\t\tvar isMessage bool\n\t\tswitch {\n\t\tcase fs.Type == nil:\n\t\t\tcontinue // never occurs for officially generated message types\n\t\tcase isOneof:\n\t\t\tif fd.Enum() != nil || fd.Message() != nil {\n\t\t\t\tft = si.oneofWrappersByNumber[fd.Number()].Field(0).Type\n\t\t\t}\n\t\tcase fd.IsMap():\n\t\t\tif fd.MapValue().Enum() != nil || fd.MapValue().Message() != nil {\n\t\t\t\tft = fs.Type.Elem()\n\t\t\t}\n\t\t\tisMessage = fd.MapValue().Message() != nil\n\t\tcase fd.IsList():\n\t\t\tif fd.Enum() != nil || fd.Message() != nil {\n\t\t\t\tft = fs.Type.Elem()\n\n\t\t\t\tif ft.Kind() == reflect.Slice {\n\t\t\t\t\tft = ft.Elem()\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tisMessage = fd.Message() != nil\n\t\tcase fd.Enum() != nil:\n\t\t\tft = fs.Type\n\t\t\tif fd.HasPresence() && ft.Kind() == reflect.Ptr {\n\t\t\t\tft = ft.Elem()\n\t\t\t}\n\t\tcase fd.Message() != nil:\n\t\t\tft = fs.Type\n\t\t\tisMessage = true\n\t\t}\n\t\tif isMessage && ft != nil && ft.Kind() != reflect.Ptr {\n\t\t\tft = reflect.PtrTo(ft) // never occurs for officially generated message types\n\t\t}\n\t\tif ft != nil {\n\t\t\tif mi.fieldTypes == nil {\n\t\t\t\tmi.fieldTypes = make(map[protoreflect.FieldNumber]any)\n\t\t\t}\n\t\t\tmi.fieldTypes[fd.Number()] = reflect.Zero(ft).Interface()\n\t\t}\n\t}\n}\n\ntype extensionMap map[int32]ExtensionField\n\nfunc (m *extensionMap) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif m != nil {\n\t\tfor _, x := range *m {\n\t\t\txd := x.Type().TypeDescriptor()\n\t\t\tv := x.Value()\n\t\t\tif xd.IsList() && v.List().Len() == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !f(xd, v) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\nfunc (m *extensionMap) Has(xd protoreflect.ExtensionTypeDescriptor) (ok bool) {\n\tif m == nil {\n\t\treturn false\n\t}\n\tx, ok := (*m)[int32(xd.Number())]\n\tif !ok {\n\t\treturn false\n\t}\n\tif x.isUnexpandedLazy() {\n\t\t// Avoid calling x.Value(), which triggers a lazy unmarshal.\n\t\treturn true\n\t}\n\tswitch {\n\tcase xd.IsList():\n\t\treturn x.Value().List().Len() > 0\n\tcase xd.IsMap():\n\t\treturn x.Value().Map().Len() > 0\n\t}\n\treturn true\n}\nfunc (m *extensionMap) Clear(xd protoreflect.ExtensionTypeDescriptor) {\n\tdelete(*m, int32(xd.Number()))\n}\nfunc (m *extensionMap) Get(xd protoreflect.ExtensionTypeDescriptor) protoreflect.Value {\n\tif m != nil {\n\t\tif x, ok := (*m)[int32(xd.Number())]; ok {\n\t\t\treturn x.Value()\n\t\t}\n\t}\n\treturn xd.Type().Zero()\n}\nfunc (m *extensionMap) Set(xd protoreflect.ExtensionTypeDescriptor, v protoreflect.Value) {\n\txt := xd.Type()\n\tisValid := true\n\tswitch {\n\tcase !xt.IsValidValue(v):\n\t\tisValid = false\n\tcase xd.IsList():\n\t\tisValid = v.List().IsValid()\n\tcase xd.IsMap():\n\t\tisValid = v.Map().IsValid()\n\tcase xd.Message() != nil:\n\t\tisValid = v.Message().IsValid()\n\t}\n\tif !isValid {\n\t\tpanic(fmt.Sprintf(\"%v: assigning invalid value\", xd.FullName()))\n\t}\n\n\tif *m == nil {\n\t\t*m = make(map[int32]ExtensionField)\n\t}\n\tvar x ExtensionField\n\tx.Set(xt, v)\n\t(*m)[int32(xd.Number())] = x\n}\nfunc (m *extensionMap) Mutable(xd protoreflect.ExtensionTypeDescriptor) protoreflect.Value {\n\tif xd.Kind() != protoreflect.MessageKind && xd.Kind() != protoreflect.GroupKind && !xd.IsList() && !xd.IsMap() {\n\t\tpanic(\"invalid Mutable on field with non-composite type\")\n\t}\n\tif x, ok := (*m)[int32(xd.Number())]; ok {\n\t\treturn x.Value()\n\t}\n\tv := xd.Type().New()\n\tm.Set(xd, v)\n\treturn v\n}\n\n// MessageState is a data structure that is nested as the first field in a\n// concrete message. It provides a way to implement the ProtoReflect method\n// in an allocation-free way without needing to have a shadow Go type generated\n// for every message type. This technique only works using unsafe.\n//\n// Example generated code:\n//\n//\ttype M struct {\n//\t\tstate protoimpl.MessageState\n//\n//\t\tField1 int32\n//\t\tField2 string\n//\t\tField3 *BarMessage\n//\t\t...\n//\t}\n//\n//\tfunc (m *M) ProtoReflect() protoreflect.Message {\n//\t\tmi := &file_fizz_buzz_proto_msgInfos[5]\n//\t\tif protoimpl.UnsafeEnabled && m != nil {\n//\t\t\tms := protoimpl.X.MessageStateOf(Pointer(m))\n//\t\t\tif ms.LoadMessageInfo() == nil {\n//\t\t\t\tms.StoreMessageInfo(mi)\n//\t\t\t}\n//\t\t\treturn ms\n//\t\t}\n//\t\treturn mi.MessageOf(m)\n//\t}\n//\n// The MessageState type holds a *MessageInfo, which must be atomically set to\n// the message info associated with a given message instance.\n// By unsafely converting a *M into a *MessageState, the MessageState object\n// has access to all the information needed to implement protobuf reflection.\n// It has access to the message info as its first field, and a pointer to the\n// MessageState is identical to a pointer to the concrete message value.\n//\n// Requirements:\n//   - The type M must implement protoreflect.ProtoMessage.\n//   - The address of m must not be nil.\n//   - The address of m and the address of m.state must be equal,\n//     even though they are different Go types.\ntype MessageState struct {\n\tpragma.NoUnkeyedLiterals\n\tpragma.DoNotCompare\n\tpragma.DoNotCopy\n\n\tatomicMessageInfo *MessageInfo\n}\n\ntype messageState MessageState\n\nvar (\n\t_ protoreflect.Message = (*messageState)(nil)\n\t_ unwrapper            = (*messageState)(nil)\n)\n\n// messageDataType is a tuple of a pointer to the message data and\n// a pointer to the message type. It is a generalized way of providing a\n// reflective view over a message instance. The disadvantage of this approach\n// is the need to allocate this tuple of 16B.\ntype messageDataType struct {\n\tp  pointer\n\tmi *MessageInfo\n}\n\ntype (\n\tmessageReflectWrapper messageDataType\n\tmessageIfaceWrapper   messageDataType\n)\n\nvar (\n\t_ protoreflect.Message      = (*messageReflectWrapper)(nil)\n\t_ unwrapper                 = (*messageReflectWrapper)(nil)\n\t_ protoreflect.ProtoMessage = (*messageIfaceWrapper)(nil)\n\t_ unwrapper                 = (*messageIfaceWrapper)(nil)\n)\n\n// MessageOf returns a reflective view over a message. The input must be a\n// pointer to a named Go struct. If the provided type has a ProtoReflect method,\n// it must be implemented by calling this method.\nfunc (mi *MessageInfo) MessageOf(m any) protoreflect.Message {\n\tif reflect.TypeOf(m) != mi.GoReflectType {\n\t\tpanic(fmt.Sprintf(\"type mismatch: got %T, want %v\", m, mi.GoReflectType))\n\t}\n\tp := pointerOfIface(m)\n\tif p.IsNil() {\n\t\treturn mi.nilMessage.Init(mi)\n\t}\n\treturn &messageReflectWrapper{p, mi}\n}\n\nfunc (m *messageReflectWrapper) pointer() pointer          { return m.p }\nfunc (m *messageReflectWrapper) messageInfo() *MessageInfo { return m.mi }\n\n// Reset implements the v1 proto.Message.Reset method.\nfunc (m *messageIfaceWrapper) Reset() {\n\tif mr, ok := m.protoUnwrap().(interface{ Reset() }); ok {\n\t\tmr.Reset()\n\t\treturn\n\t}\n\trv := reflect.ValueOf(m.protoUnwrap())\n\tif rv.Kind() == reflect.Ptr && !rv.IsNil() {\n\t\trv.Elem().Set(reflect.Zero(rv.Type().Elem()))\n\t}\n}\nfunc (m *messageIfaceWrapper) ProtoReflect() protoreflect.Message {\n\treturn (*messageReflectWrapper)(m)\n}\nfunc (m *messageIfaceWrapper) protoUnwrap() any {\n\treturn m.p.AsIfaceOf(m.mi.GoReflectType.Elem())\n}\n\n// checkField verifies that the provided field descriptor is valid.\n// Exactly one of the returned values is populated.\nfunc (mi *MessageInfo) checkField(fd protoreflect.FieldDescriptor) (*fieldInfo, protoreflect.ExtensionTypeDescriptor) {\n\tvar fi *fieldInfo\n\tif n := fd.Number(); 0 < n && int(n) < len(mi.denseFields) {\n\t\tfi = mi.denseFields[n]\n\t} else {\n\t\tfi = mi.fields[n]\n\t}\n\tif fi != nil {\n\t\tif fi.fieldDesc != fd {\n\t\t\tif got, want := fd.FullName(), fi.fieldDesc.FullName(); got != want {\n\t\t\t\tpanic(fmt.Sprintf(\"mismatching field: got %v, want %v\", got, want))\n\t\t\t}\n\t\t\tpanic(fmt.Sprintf(\"mismatching field: %v\", fd.FullName()))\n\t\t}\n\t\treturn fi, nil\n\t}\n\n\tif fd.IsExtension() {\n\t\tif got, want := fd.ContainingMessage().FullName(), mi.Desc.FullName(); got != want {\n\t\t\t// TODO: Should this be exact containing message descriptor match?\n\t\t\tpanic(fmt.Sprintf(\"extension %v has mismatching containing message: got %v, want %v\", fd.FullName(), got, want))\n\t\t}\n\t\tif !mi.Desc.ExtensionRanges().Has(fd.Number()) {\n\t\t\tpanic(fmt.Sprintf(\"extension %v extends %v outside the extension range\", fd.FullName(), mi.Desc.FullName()))\n\t\t}\n\t\txtd, ok := fd.(protoreflect.ExtensionTypeDescriptor)\n\t\tif !ok {\n\t\t\tpanic(fmt.Sprintf(\"extension %v does not implement protoreflect.ExtensionTypeDescriptor\", fd.FullName()))\n\t\t}\n\t\treturn nil, xtd\n\t}\n\tpanic(fmt.Sprintf(\"field %v is invalid\", fd.FullName()))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype fieldInfo struct {\n\tfieldDesc protoreflect.FieldDescriptor\n\n\t// These fields are used for protobuf reflection support.\n\thas        func(pointer) bool\n\tclear      func(pointer)\n\tget        func(pointer) protoreflect.Value\n\tset        func(pointer, protoreflect.Value)\n\tmutable    func(pointer) protoreflect.Value\n\tnewMessage func() protoreflect.Message\n\tnewField   func() protoreflect.Value\n}\n\nfunc fieldInfoForMissing(fd protoreflect.FieldDescriptor) fieldInfo {\n\t// This never occurs for generated message types.\n\t// It implies that a hand-crafted type has missing Go fields\n\t// for specific protobuf message fields.\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\treturn false\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\treturn fd.Default()\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t\tnewMessage: func() protoreflect.Message {\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\tif v := fd.Default(); v.IsValid() {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t}\n}\n\nfunc fieldInfoForOneof(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter, ot reflect.Type) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Interface {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: got %v, want interface kind\", fd.FullName(), ft))\n\t}\n\tif ot.Kind() != reflect.Struct {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: got %v, want struct kind\", fd.FullName(), ot))\n\t}\n\tif !reflect.PtrTo(ot).Implements(ft) {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: %v does not implement %v\", fd.FullName(), ot, ft))\n\t}\n\tconv := NewConverter(ot.Field(0).Type, fd)\n\tisMessage := fd.Message() != nil\n\n\t// TODO: Implement unsafe fast path?\n\tfieldOffset := offsetOf(fs)\n\treturn fieldInfo{\n\t\t// NOTE: The logic below intentionally assumes that oneof fields are\n\t\t// well-formatted. That is, the oneof interface never contains a\n\t\t// typed nil pointer to one of the wrapper structs.\n\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot {\n\t\t\t\t// NOTE: We intentionally don't check for rv.Elem().IsNil()\n\t\t\t\t// so that (*OneofWrapperType)(nil) gets cleared to nil.\n\t\t\t\treturn\n\t\t\t}\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv = rv.Elem().Elem().Field(0)\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {\n\t\t\t\trv.Set(reflect.New(ot))\n\t\t\t}\n\t\t\trv = rv.Elem().Elem().Field(0)\n\t\t\trv.Set(conv.GoValueOf(v))\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tif !isMessage {\n\t\t\t\tpanic(fmt.Sprintf(\"field %v with invalid Mutable call on field with non-composite type\", fd.FullName()))\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {\n\t\t\t\trv.Set(reflect.New(ot))\n\t\t\t}\n\t\t\trv = rv.Elem().Elem().Field(0)\n\t\t\tif rv.Kind() == reflect.Ptr && rv.IsNil() {\n\t\t\t\trv.Set(conv.GoValueOf(protoreflect.ValueOfMessage(conv.New().Message())))\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tnewMessage: func() protoreflect.Message {\n\t\t\treturn conv.New().Message()\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc fieldInfoForMap(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Map {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: got %v, want map kind\", fd.FullName(), ft))\n\t}\n\tconv := NewConverter(ft, fd)\n\n\t// TODO: Implement unsafe fast path?\n\tfieldOffset := offsetOf(fs)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn rv.Len() > 0\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.Len() == 0 {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tpv := conv.GoValueOf(v)\n\t\t\tif pv.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"map field %v cannot be set with read-only value\", fd.FullName()))\n\t\t\t}\n\t\t\trv.Set(pv)\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif v.IsNil() {\n\t\t\t\tv.Set(reflect.MakeMap(fs.Type))\n\t\t\t}\n\t\t\treturn conv.PBValueOf(v)\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc fieldInfoForList(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Slice {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: got %v, want slice kind\", fd.FullName(), ft))\n\t}\n\tconv := NewConverter(reflect.PtrTo(ft), fd)\n\n\t// TODO: Implement unsafe fast path?\n\tfieldOffset := offsetOf(fs)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn rv.Len() > 0\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type)\n\t\t\tif rv.Elem().Len() == 0 {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tpv := conv.GoValueOf(v)\n\t\t\tif pv.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"list field %v cannot be set with read-only value\", fd.FullName()))\n\t\t\t}\n\t\t\trv.Set(pv.Elem())\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tv := p.Apply(fieldOffset).AsValueOf(fs.Type)\n\t\t\treturn conv.PBValueOf(v)\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nvar (\n\tnilBytes   = reflect.ValueOf([]byte(nil))\n\temptyBytes = reflect.ValueOf([]byte{})\n)\n\nfunc fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {\n\tft := fs.Type\n\tnullable := fd.HasPresence()\n\tisBytes := ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8\n\tvar getter func(p pointer) protoreflect.Value\n\tif nullable {\n\t\tif ft.Kind() != reflect.Ptr && ft.Kind() != reflect.Slice {\n\t\t\t// This never occurs for generated message types.\n\t\t\t// Despite the protobuf type system specifying presence,\n\t\t\t// the Go field type cannot represent it.\n\t\t\tnullable = false\n\t\t}\n\t\tif ft.Kind() == reflect.Ptr {\n\t\t\tft = ft.Elem()\n\t\t}\n\t}\n\tconv := NewConverter(ft, fd)\n\tfieldOffset := offsetOf(fs)\n\n\t// Generate specialized getter functions to avoid going through reflect.Value\n\tif nullable {\n\t\tgetter = getterForNullableScalar(fd, fs, conv, fieldOffset)\n\t} else {\n\t\tgetter = getterForDirectScalar(fd, fs, conv, fieldOffset)\n\t}\n\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif nullable {\n\t\t\t\treturn !p.Apply(fieldOffset).Elem().IsNil()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tswitch rv.Kind() {\n\t\t\tcase reflect.Bool:\n\t\t\t\treturn rv.Bool()\n\t\t\tcase reflect.Int32, reflect.Int64:\n\t\t\t\treturn rv.Int() != 0\n\t\t\tcase reflect.Uint32, reflect.Uint64:\n\t\t\t\treturn rv.Uint() != 0\n\t\t\tcase reflect.Float32, reflect.Float64:\n\t\t\t\treturn rv.Float() != 0 || math.Signbit(rv.Float())\n\t\t\tcase reflect.String, reflect.Slice:\n\t\t\t\treturn rv.Len() > 0\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"field %v has invalid type: %v\", fd.FullName(), rv.Type())) // should never happen\n\t\t\t}\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: getter,\n\t\t// TODO: Implement unsafe fast path for set?\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif nullable && rv.Kind() == reflect.Ptr {\n\t\t\t\tif rv.IsNil() {\n\t\t\t\t\trv.Set(reflect.New(ft))\n\t\t\t\t}\n\t\t\t\trv = rv.Elem()\n\t\t\t}\n\t\t\trv.Set(conv.GoValueOf(v))\n\t\t\tif isBytes && rv.Len() == 0 {\n\t\t\t\tif nullable {\n\t\t\t\t\trv.Set(emptyBytes) // preserve presence\n\t\t\t\t} else {\n\t\t\t\t\trv.Set(nilBytes) // do not preserve presence\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc fieldInfoForMessage(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {\n\tft := fs.Type\n\tconv := NewConverter(ft, fd)\n\n\t// TODO: Implement unsafe fast path?\n\tfieldOffset := offsetOf(fs)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif fs.Type.Kind() != reflect.Ptr {\n\t\t\t\treturn !rv.IsZero()\n\t\t\t}\n\t\t\treturn !rv.IsNil()\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(conv.GoValueOf(v))\n\t\t\tif fs.Type.Kind() == reflect.Ptr && rv.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"field %v has invalid nil pointer\", fd.FullName()))\n\t\t\t}\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif fs.Type.Kind() == reflect.Ptr && rv.IsNil() {\n\t\t\t\trv.Set(conv.GoValueOf(conv.New()))\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tnewMessage: func() protoreflect.Message {\n\t\t\treturn conv.New().Message()\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\ntype oneofInfo struct {\n\toneofDesc protoreflect.OneofDescriptor\n\twhich     func(pointer) protoreflect.FieldNumber\n}\n\nfunc makeOneofInfo(od protoreflect.OneofDescriptor, si structInfo, x exporter) *oneofInfo {\n\toi := &oneofInfo{oneofDesc: od}\n\tif od.IsSynthetic() {\n\t\tfs := si.fieldsByNumber[od.Fields().Get(0).Number()]\n\t\tfieldOffset := offsetOf(fs)\n\t\toi.which = func(p pointer) protoreflect.FieldNumber {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() { // valid on either *T or []byte\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\treturn od.Fields().Get(0).Number()\n\t\t}\n\t} else {\n\t\tfs := si.oneofsByName[od.Name()]\n\t\tfieldOffset := offsetOf(fs)\n\t\toi.which = func(p pointer) protoreflect.FieldNumber {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\trv = rv.Elem()\n\t\t\tif rv.IsNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\treturn si.oneofWrappersByType[rv.Type().Elem()]\n\t\t}\n\t}\n\treturn oi\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_reflect_field_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc getterForNullableScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value {\n\tft := fs.Type\n\tif ft.Kind() == reflect.Ptr {\n\t\tft = ft.Elem()\n\t}\n\tif fd.Kind() == protoreflect.EnumKind {\n\t\telemType := fs.Type.Elem()\n\t\t// Enums for nullable types.\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).Elem().AsValueOf(elemType)\n\t\t\tif rv.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv.Elem())\n\t\t}\n\t}\n\tswitch ft.Kind() {\n\tcase reflect.Bool:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).BoolPtr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfBool(**x)\n\t\t}\n\tcase reflect.Int32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Int32Ptr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfInt32(**x)\n\t\t}\n\tcase reflect.Uint32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Uint32Ptr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfUint32(**x)\n\t\t}\n\tcase reflect.Int64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Int64Ptr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfInt64(**x)\n\t\t}\n\tcase reflect.Uint64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Uint64Ptr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfUint64(**x)\n\t\t}\n\tcase reflect.Float32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Float32Ptr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfFloat32(**x)\n\t\t}\n\tcase reflect.Float64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Float64Ptr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfFloat64(**x)\n\t\t}\n\tcase reflect.String:\n\t\tif fd.Kind() == protoreflect.BytesKind {\n\t\t\treturn func(p pointer) protoreflect.Value {\n\t\t\t\tif p.IsNil() {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tx := p.Apply(fieldOffset).StringPtr()\n\t\t\t\tif *x == nil {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tif len(**x) == 0 {\n\t\t\t\t\treturn protoreflect.ValueOfBytes(nil)\n\t\t\t\t}\n\t\t\t\treturn protoreflect.ValueOfBytes([]byte(**x))\n\t\t\t}\n\t\t}\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).StringPtr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfString(**x)\n\t\t}\n\tcase reflect.Slice:\n\t\tif fd.Kind() == protoreflect.StringKind {\n\t\t\treturn func(p pointer) protoreflect.Value {\n\t\t\t\tif p.IsNil() {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tx := p.Apply(fieldOffset).Bytes()\n\t\t\t\tif len(*x) == 0 {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\treturn protoreflect.ValueOfString(string(*x))\n\t\t\t}\n\t\t}\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Bytes()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfBytes(*x)\n\t\t}\n\t}\n\tpanic(\"unexpected protobuf kind: \" + ft.Kind().String())\n}\n\nfunc getterForDirectScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value {\n\tft := fs.Type\n\tif fd.Kind() == protoreflect.EnumKind {\n\t\t// Enums for non nullable types.\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn conv.PBValueOf(rv)\n\t\t}\n\t}\n\tswitch ft.Kind() {\n\tcase reflect.Bool:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Bool()\n\t\t\treturn protoreflect.ValueOfBool(*x)\n\t\t}\n\tcase reflect.Int32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Int32()\n\t\t\treturn protoreflect.ValueOfInt32(*x)\n\t\t}\n\tcase reflect.Uint32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Uint32()\n\t\t\treturn protoreflect.ValueOfUint32(*x)\n\t\t}\n\tcase reflect.Int64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Int64()\n\t\t\treturn protoreflect.ValueOfInt64(*x)\n\t\t}\n\tcase reflect.Uint64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Uint64()\n\t\t\treturn protoreflect.ValueOfUint64(*x)\n\t\t}\n\tcase reflect.Float32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Float32()\n\t\t\treturn protoreflect.ValueOfFloat32(*x)\n\t\t}\n\tcase reflect.Float64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Float64()\n\t\t\treturn protoreflect.ValueOfFloat64(*x)\n\t\t}\n\tcase reflect.String:\n\t\tif fd.Kind() == protoreflect.BytesKind {\n\t\t\treturn func(p pointer) protoreflect.Value {\n\t\t\t\tif p.IsNil() {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tx := p.Apply(fieldOffset).String()\n\t\t\t\tif len(*x) == 0 {\n\t\t\t\t\treturn protoreflect.ValueOfBytes(nil)\n\t\t\t\t}\n\t\t\t\treturn protoreflect.ValueOfBytes([]byte(*x))\n\t\t\t}\n\t\t}\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).String()\n\t\t\treturn protoreflect.ValueOfString(*x)\n\t\t}\n\tcase reflect.Slice:\n\t\tif fd.Kind() == protoreflect.StringKind {\n\t\t\treturn func(p pointer) protoreflect.Value {\n\t\t\t\tif p.IsNil() {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tx := p.Apply(fieldOffset).Bytes()\n\t\t\t\treturn protoreflect.ValueOfString(string(*x))\n\t\t\t}\n\t\t}\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Bytes()\n\t\t\treturn protoreflect.ValueOfBytes(*x)\n\t\t}\n\t}\n\tpanic(\"unexpected protobuf kind: \" + ft.Kind().String())\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage impl\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nfunc (m *messageState) Descriptor() protoreflect.MessageDescriptor {\n\treturn m.messageInfo().Desc\n}\nfunc (m *messageState) Type() protoreflect.MessageType {\n\treturn m.messageInfo()\n}\nfunc (m *messageState) New() protoreflect.Message {\n\treturn m.messageInfo().New()\n}\nfunc (m *messageState) Interface() protoreflect.ProtoMessage {\n\treturn m.protoUnwrap().(protoreflect.ProtoMessage)\n}\nfunc (m *messageState) protoUnwrap() any {\n\treturn m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())\n}\nfunc (m *messageState) ProtoMethods() *protoiface.Methods {\n\tmi := m.messageInfo()\n\tmi.init()\n\treturn &mi.methods\n}\n\n// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code\n// to be able to retrieve a v2 MessageInfo struct.\n//\n// WARNING: This method is exempt from the compatibility promise and\n// may be removed in the future without warning.\nfunc (m *messageState) ProtoMessageInfo() *MessageInfo {\n\treturn m.messageInfo()\n}\n\nfunc (m *messageState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tfor _, ri := range mi.rangeInfos {\n\t\tswitch ri := ri.(type) {\n\t\tcase *fieldInfo:\n\t\t\tif ri.has(m.pointer()) {\n\t\t\t\tif !f(ri.fieldDesc, ri.get(m.pointer())) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\tcase *oneofInfo:\n\t\t\tif n := ri.which(m.pointer()); n > 0 {\n\t\t\t\tfi := mi.fields[n]\n\t\t\t\tif !f(fi.fieldDesc, fi.get(m.pointer())) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tmi.extensionMap(m.pointer()).Range(f)\n}\nfunc (m *messageState) Has(fd protoreflect.FieldDescriptor) bool {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.has(m.pointer())\n\t} else {\n\t\treturn mi.extensionMap(m.pointer()).Has(xd)\n\t}\n}\nfunc (m *messageState) Clear(fd protoreflect.FieldDescriptor) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\tfi.clear(m.pointer())\n\t} else {\n\t\tmi.extensionMap(m.pointer()).Clear(xd)\n\t}\n}\nfunc (m *messageState) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.get(m.pointer())\n\t} else {\n\t\treturn mi.extensionMap(m.pointer()).Get(xd)\n\t}\n}\nfunc (m *messageState) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\tfi.set(m.pointer(), v)\n\t} else {\n\t\tmi.extensionMap(m.pointer()).Set(xd, v)\n\t}\n}\nfunc (m *messageState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.mutable(m.pointer())\n\t} else {\n\t\treturn mi.extensionMap(m.pointer()).Mutable(xd)\n\t}\n}\nfunc (m *messageState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.newField()\n\t} else {\n\t\treturn xd.Type().New()\n\t}\n}\nfunc (m *messageState) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif oi := mi.oneofs[od.Name()]; oi != nil && oi.oneofDesc == od {\n\t\treturn od.Fields().ByNumber(oi.which(m.pointer()))\n\t}\n\tpanic(\"invalid oneof descriptor \" + string(od.FullName()) + \" for message \" + string(m.Descriptor().FullName()))\n}\nfunc (m *messageState) GetUnknown() protoreflect.RawFields {\n\tmi := m.messageInfo()\n\tmi.init()\n\treturn mi.getUnknown(m.pointer())\n}\nfunc (m *messageState) SetUnknown(b protoreflect.RawFields) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tmi.setUnknown(m.pointer(), b)\n}\nfunc (m *messageState) IsValid() bool {\n\treturn !m.pointer().IsNil()\n}\n\nfunc (m *messageReflectWrapper) Descriptor() protoreflect.MessageDescriptor {\n\treturn m.messageInfo().Desc\n}\nfunc (m *messageReflectWrapper) Type() protoreflect.MessageType {\n\treturn m.messageInfo()\n}\nfunc (m *messageReflectWrapper) New() protoreflect.Message {\n\treturn m.messageInfo().New()\n}\nfunc (m *messageReflectWrapper) Interface() protoreflect.ProtoMessage {\n\tif m, ok := m.protoUnwrap().(protoreflect.ProtoMessage); ok {\n\t\treturn m\n\t}\n\treturn (*messageIfaceWrapper)(m)\n}\nfunc (m *messageReflectWrapper) protoUnwrap() any {\n\treturn m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())\n}\nfunc (m *messageReflectWrapper) ProtoMethods() *protoiface.Methods {\n\tmi := m.messageInfo()\n\tmi.init()\n\treturn &mi.methods\n}\n\n// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code\n// to be able to retrieve a v2 MessageInfo struct.\n//\n// WARNING: This method is exempt from the compatibility promise and\n// may be removed in the future without warning.\nfunc (m *messageReflectWrapper) ProtoMessageInfo() *MessageInfo {\n\treturn m.messageInfo()\n}\n\nfunc (m *messageReflectWrapper) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tfor _, ri := range mi.rangeInfos {\n\t\tswitch ri := ri.(type) {\n\t\tcase *fieldInfo:\n\t\t\tif ri.has(m.pointer()) {\n\t\t\t\tif !f(ri.fieldDesc, ri.get(m.pointer())) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\tcase *oneofInfo:\n\t\t\tif n := ri.which(m.pointer()); n > 0 {\n\t\t\t\tfi := mi.fields[n]\n\t\t\t\tif !f(fi.fieldDesc, fi.get(m.pointer())) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tmi.extensionMap(m.pointer()).Range(f)\n}\nfunc (m *messageReflectWrapper) Has(fd protoreflect.FieldDescriptor) bool {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.has(m.pointer())\n\t} else {\n\t\treturn mi.extensionMap(m.pointer()).Has(xd)\n\t}\n}\nfunc (m *messageReflectWrapper) Clear(fd protoreflect.FieldDescriptor) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\tfi.clear(m.pointer())\n\t} else {\n\t\tmi.extensionMap(m.pointer()).Clear(xd)\n\t}\n}\nfunc (m *messageReflectWrapper) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.get(m.pointer())\n\t} else {\n\t\treturn mi.extensionMap(m.pointer()).Get(xd)\n\t}\n}\nfunc (m *messageReflectWrapper) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\tfi.set(m.pointer(), v)\n\t} else {\n\t\tmi.extensionMap(m.pointer()).Set(xd, v)\n\t}\n}\nfunc (m *messageReflectWrapper) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.mutable(m.pointer())\n\t} else {\n\t\treturn mi.extensionMap(m.pointer()).Mutable(xd)\n\t}\n}\nfunc (m *messageReflectWrapper) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.newField()\n\t} else {\n\t\treturn xd.Type().New()\n\t}\n}\nfunc (m *messageReflectWrapper) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif oi := mi.oneofs[od.Name()]; oi != nil && oi.oneofDesc == od {\n\t\treturn od.Fields().ByNumber(oi.which(m.pointer()))\n\t}\n\tpanic(\"invalid oneof descriptor \" + string(od.FullName()) + \" for message \" + string(m.Descriptor().FullName()))\n}\nfunc (m *messageReflectWrapper) GetUnknown() protoreflect.RawFields {\n\tmi := m.messageInfo()\n\tmi.init()\n\treturn mi.getUnknown(m.pointer())\n}\nfunc (m *messageReflectWrapper) SetUnknown(b protoreflect.RawFields) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tmi.setUnknown(m.pointer(), b)\n}\nfunc (m *messageReflectWrapper) IsValid() bool {\n\treturn !m.pointer().IsNil()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\t\"sync/atomic\"\n\t\"unsafe\"\n\n\t\"google.golang.org/protobuf/internal/protolazy\"\n)\n\nconst UnsafeEnabled = true\n\n// Pointer is an opaque pointer type.\ntype Pointer unsafe.Pointer\n\n// offset represents the offset to a struct field, accessible from a pointer.\n// The offset is the byte offset to the field from the start of the struct.\ntype offset uintptr\n\n// offsetOf returns a field offset for the struct field.\nfunc offsetOf(f reflect.StructField) offset {\n\treturn offset(f.Offset)\n}\n\n// IsValid reports whether the offset is valid.\nfunc (f offset) IsValid() bool { return f != invalidOffset }\n\n// invalidOffset is an invalid field offset.\nvar invalidOffset = ^offset(0)\n\n// zeroOffset is a noop when calling pointer.Apply.\nvar zeroOffset = offset(0)\n\n// pointer is a pointer to a message struct or field.\ntype pointer struct{ p unsafe.Pointer }\n\n// pointerOf returns p as a pointer.\nfunc pointerOf(p Pointer) pointer {\n\treturn pointer{p: unsafe.Pointer(p)}\n}\n\n// pointerOfValue returns v as a pointer.\nfunc pointerOfValue(v reflect.Value) pointer {\n\treturn pointer{p: unsafe.Pointer(v.Pointer())}\n}\n\n// pointerOfIface returns the pointer portion of an interface.\nfunc pointerOfIface(v any) pointer {\n\ttype ifaceHeader struct {\n\t\tType unsafe.Pointer\n\t\tData unsafe.Pointer\n\t}\n\treturn pointer{p: (*ifaceHeader)(unsafe.Pointer(&v)).Data}\n}\n\n// IsNil reports whether the pointer is nil.\nfunc (p pointer) IsNil() bool {\n\treturn p.p == nil\n}\n\n// Apply adds an offset to the pointer to derive a new pointer\n// to a specified field. The pointer must be valid and pointing at a struct.\nfunc (p pointer) Apply(f offset) pointer {\n\tif p.IsNil() {\n\t\tpanic(\"invalid nil pointer\")\n\t}\n\treturn pointer{p: unsafe.Pointer(uintptr(p.p) + uintptr(f))}\n}\n\n// AsValueOf treats p as a pointer to an object of type t and returns the value.\n// It is equivalent to reflect.ValueOf(p.AsIfaceOf(t))\nfunc (p pointer) AsValueOf(t reflect.Type) reflect.Value {\n\treturn reflect.NewAt(t, p.p)\n}\n\n// AsIfaceOf treats p as a pointer to an object of type t and returns the value.\n// It is equivalent to p.AsValueOf(t).Interface()\nfunc (p pointer) AsIfaceOf(t reflect.Type) any {\n\t// TODO: Use tricky unsafe magic to directly create ifaceHeader.\n\treturn p.AsValueOf(t).Interface()\n}\n\nfunc (p pointer) Bool() *bool                           { return (*bool)(p.p) }\nfunc (p pointer) BoolPtr() **bool                       { return (**bool)(p.p) }\nfunc (p pointer) BoolSlice() *[]bool                    { return (*[]bool)(p.p) }\nfunc (p pointer) Int32() *int32                         { return (*int32)(p.p) }\nfunc (p pointer) Int32Ptr() **int32                     { return (**int32)(p.p) }\nfunc (p pointer) Int32Slice() *[]int32                  { return (*[]int32)(p.p) }\nfunc (p pointer) Int64() *int64                         { return (*int64)(p.p) }\nfunc (p pointer) Int64Ptr() **int64                     { return (**int64)(p.p) }\nfunc (p pointer) Int64Slice() *[]int64                  { return (*[]int64)(p.p) }\nfunc (p pointer) Uint32() *uint32                       { return (*uint32)(p.p) }\nfunc (p pointer) Uint32Ptr() **uint32                   { return (**uint32)(p.p) }\nfunc (p pointer) Uint32Slice() *[]uint32                { return (*[]uint32)(p.p) }\nfunc (p pointer) Uint64() *uint64                       { return (*uint64)(p.p) }\nfunc (p pointer) Uint64Ptr() **uint64                   { return (**uint64)(p.p) }\nfunc (p pointer) Uint64Slice() *[]uint64                { return (*[]uint64)(p.p) }\nfunc (p pointer) Float32() *float32                     { return (*float32)(p.p) }\nfunc (p pointer) Float32Ptr() **float32                 { return (**float32)(p.p) }\nfunc (p pointer) Float32Slice() *[]float32              { return (*[]float32)(p.p) }\nfunc (p pointer) Float64() *float64                     { return (*float64)(p.p) }\nfunc (p pointer) Float64Ptr() **float64                 { return (**float64)(p.p) }\nfunc (p pointer) Float64Slice() *[]float64              { return (*[]float64)(p.p) }\nfunc (p pointer) String() *string                       { return (*string)(p.p) }\nfunc (p pointer) StringPtr() **string                   { return (**string)(p.p) }\nfunc (p pointer) StringSlice() *[]string                { return (*[]string)(p.p) }\nfunc (p pointer) Bytes() *[]byte                        { return (*[]byte)(p.p) }\nfunc (p pointer) BytesPtr() **[]byte                    { return (**[]byte)(p.p) }\nfunc (p pointer) BytesSlice() *[][]byte                 { return (*[][]byte)(p.p) }\nfunc (p pointer) Extensions() *map[int32]ExtensionField { return (*map[int32]ExtensionField)(p.p) }\nfunc (p pointer) LazyInfoPtr() **protolazy.XXX_lazyUnmarshalInfo {\n\treturn (**protolazy.XXX_lazyUnmarshalInfo)(p.p)\n}\n\nfunc (p pointer) PresenceInfo() presence {\n\treturn presence{P: p.p}\n}\n\nfunc (p pointer) Elem() pointer {\n\treturn pointer{p: *(*unsafe.Pointer)(p.p)}\n}\n\n// PointerSlice loads []*T from p as a []pointer.\n// The value returned is aliased with the original slice.\n// This behavior differs from the implementation in pointer_reflect.go.\nfunc (p pointer) PointerSlice() []pointer {\n\t// Super-tricky - p should point to a []*T where T is a\n\t// message type. We load it as []pointer.\n\treturn *(*[]pointer)(p.p)\n}\n\n// AppendPointerSlice appends v to p, which must be a []*T.\nfunc (p pointer) AppendPointerSlice(v pointer) {\n\t*(*[]pointer)(p.p) = append(*(*[]pointer)(p.p), v)\n}\n\n// SetPointer sets *p to v.\nfunc (p pointer) SetPointer(v pointer) {\n\t*(*unsafe.Pointer)(p.p) = (unsafe.Pointer)(v.p)\n}\n\nfunc (p pointer) growBoolSlice(addCap int) {\n\tsp := p.BoolSlice()\n\ts := make([]bool, 0, addCap+len(*sp))\n\ts = s[:len(*sp)]\n\tcopy(s, *sp)\n\t*sp = s\n}\n\nfunc (p pointer) growInt32Slice(addCap int) {\n\tsp := p.Int32Slice()\n\ts := make([]int32, 0, addCap+len(*sp))\n\ts = s[:len(*sp)]\n\tcopy(s, *sp)\n\t*sp = s\n}\n\nfunc (p pointer) growUint32Slice(addCap int) {\n\tp.growInt32Slice(addCap)\n}\n\nfunc (p pointer) growFloat32Slice(addCap int) {\n\tp.growInt32Slice(addCap)\n}\n\nfunc (p pointer) growInt64Slice(addCap int) {\n\tsp := p.Int64Slice()\n\ts := make([]int64, 0, addCap+len(*sp))\n\ts = s[:len(*sp)]\n\tcopy(s, *sp)\n\t*sp = s\n}\n\nfunc (p pointer) growUint64Slice(addCap int) {\n\tp.growInt64Slice(addCap)\n}\n\nfunc (p pointer) growFloat64Slice(addCap int) {\n\tp.growInt64Slice(addCap)\n}\n\n// Static check that MessageState does not exceed the size of a pointer.\nconst _ = uint(unsafe.Sizeof(unsafe.Pointer(nil)) - unsafe.Sizeof(MessageState{}))\n\nfunc (Export) MessageStateOf(p Pointer) *messageState {\n\t// Super-tricky - see documentation on MessageState.\n\treturn (*messageState)(unsafe.Pointer(p))\n}\nfunc (ms *messageState) pointer() pointer {\n\t// Super-tricky - see documentation on MessageState.\n\treturn pointer{p: unsafe.Pointer(ms)}\n}\nfunc (ms *messageState) messageInfo() *MessageInfo {\n\tmi := ms.LoadMessageInfo()\n\tif mi == nil {\n\t\tpanic(\"invalid nil message info; this suggests memory corruption due to a race or shallow copy on the message struct\")\n\t}\n\treturn mi\n}\nfunc (ms *messageState) LoadMessageInfo() *MessageInfo {\n\treturn (*MessageInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo))))\n}\nfunc (ms *messageState) StoreMessageInfo(mi *MessageInfo) {\n\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo)), unsafe.Pointer(mi))\n}\n\ntype atomicNilMessage struct{ p unsafe.Pointer } // p is a *messageReflectWrapper\n\nfunc (m *atomicNilMessage) Init(mi *MessageInfo) *messageReflectWrapper {\n\tif p := atomic.LoadPointer(&m.p); p != nil {\n\t\treturn (*messageReflectWrapper)(p)\n\t}\n\tw := &messageReflectWrapper{mi: mi}\n\tatomic.CompareAndSwapPointer(&m.p, nil, (unsafe.Pointer)(w))\n\treturn (*messageReflectWrapper)(atomic.LoadPointer(&m.p))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe_opaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"sync/atomic\"\n\t\"unsafe\"\n)\n\nfunc (p pointer) AtomicGetPointer() pointer {\n\treturn pointer{p: atomic.LoadPointer((*unsafe.Pointer)(p.p))}\n}\n\nfunc (p pointer) AtomicSetPointer(v pointer) {\n\tatomic.StorePointer((*unsafe.Pointer)(p.p), v.p)\n}\n\nfunc (p pointer) AtomicSetNilPointer() {\n\tatomic.StorePointer((*unsafe.Pointer)(p.p), unsafe.Pointer(nil))\n}\n\nfunc (p pointer) AtomicSetPointerIfNil(v pointer) pointer {\n\tif atomic.CompareAndSwapPointer((*unsafe.Pointer)(p.p), unsafe.Pointer(nil), v.p) {\n\t\treturn v\n\t}\n\treturn pointer{p: atomic.LoadPointer((*unsafe.Pointer)(p.p))}\n}\n\ntype atomicV1MessageInfo struct{ p Pointer }\n\nfunc (mi *atomicV1MessageInfo) Get() Pointer {\n\treturn Pointer(atomic.LoadPointer((*unsafe.Pointer)(&mi.p)))\n}\n\nfunc (mi *atomicV1MessageInfo) SetIfNil(p Pointer) Pointer {\n\tif atomic.CompareAndSwapPointer((*unsafe.Pointer)(&mi.p), nil, unsafe.Pointer(p)) {\n\t\treturn p\n\t}\n\treturn mi.Get()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/presence.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"sync/atomic\"\n\t\"unsafe\"\n)\n\n// presenceSize represents the size of a presence set, which should be the largest index of the set+1\ntype presenceSize uint32\n\n// presence is the internal representation of the bitmap array in a generated protobuf\ntype presence struct {\n\t// This is a pointer to the beginning of an array of uint32\n\tP unsafe.Pointer\n}\n\nfunc (p presence) toElem(num uint32) (ret *uint32) {\n\tconst (\n\t\tbitsPerByte = 8\n\t\tsiz         = unsafe.Sizeof(*ret)\n\t)\n\t// p.P points to an array of uint32, num is the bit in this array that the\n\t// caller wants to check/manipulate. Calculate the index in the array that\n\t// contains this specific bit. E.g.: 76 / 32 = 2 (integer division).\n\toffset := uintptr(num) / (siz * bitsPerByte) * siz\n\treturn (*uint32)(unsafe.Pointer(uintptr(p.P) + offset))\n}\n\n// Present checks for the presence of a specific field number in a presence set.\nfunc (p presence) Present(num uint32) bool {\n\treturn Export{}.Present(p.toElem(num), num)\n}\n\n// SetPresent adds presence for a specific field number in a presence set.\nfunc (p presence) SetPresent(num uint32, size presenceSize) {\n\tExport{}.SetPresent(p.toElem(num), num, uint32(size))\n}\n\n// SetPresentUnatomic adds presence for a specific field number in a presence set without using\n// atomic operations. Only to be called during unmarshaling.\nfunc (p presence) SetPresentUnatomic(num uint32, size presenceSize) {\n\tExport{}.SetPresentNonAtomic(p.toElem(num), num, uint32(size))\n}\n\n// ClearPresent removes presence for a specific field number in a presence set.\nfunc (p presence) ClearPresent(num uint32) {\n\tExport{}.ClearPresent(p.toElem(num), num)\n}\n\n// LoadPresenceCache (together with PresentInCache) allows for a\n// cached version of checking for presence without re-reading the word\n// for every field. It is optimized for efficiency and assumes no\n// simltaneous mutation of the presence set (or at least does not have\n// a problem with simultaneous mutation giving inconsistent results).\nfunc (p presence) LoadPresenceCache() (current uint32) {\n\tif p.P == nil {\n\t\treturn 0\n\t}\n\treturn atomic.LoadUint32((*uint32)(p.P))\n}\n\n// PresentInCache reads presence from a cached word in the presence\n// bitmap. It caches up a new word if the bit is outside the\n// word. This is for really fast iteration through bitmaps in cases\n// where we either know that the bitmap will not be altered, or we\n// don't care about inconsistencies caused by simultaneous writes.\nfunc (p presence) PresentInCache(num uint32, cachedElement *uint32, current *uint32) bool {\n\tif num/32 != *cachedElement {\n\t\to := uintptr(num/32) * unsafe.Sizeof(uint32(0))\n\t\tq := (*uint32)(unsafe.Pointer(uintptr(p.P) + o))\n\t\t*current = atomic.LoadUint32(q)\n\t\t*cachedElement = num / 32\n\t}\n\treturn (*current & (1 << (num % 32))) > 0\n}\n\n// AnyPresent checks if any field is marked as present in the bitmap.\nfunc (p presence) AnyPresent(size presenceSize) bool {\n\tn := uintptr((size + 31) / 32)\n\tfor j := uintptr(0); j < n; j++ {\n\t\to := j * unsafe.Sizeof(uint32(0))\n\t\tq := (*uint32)(unsafe.Pointer(uintptr(p.P) + o))\n\t\tb := atomic.LoadUint32(q)\n\t\tif b > 0 {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// toRaceDetectData finds the preceding RaceDetectHookData in a\n// message by using pointer arithmetic. As the type of the presence\n// set (bitmap) varies with the number of fields in the protobuf, we\n// can not have a struct type containing the array and the\n// RaceDetectHookData.  instead the RaceDetectHookData is placed\n// immediately before the bitmap array, and we find it by walking\n// backwards in the struct.\n//\n// This method is only called from the race-detect version of the code,\n// so RaceDetectHookData is never an empty struct.\nfunc (p presence) toRaceDetectData() *RaceDetectHookData {\n\tvar template struct {\n\t\td RaceDetectHookData\n\t\ta [1]uint32\n\t}\n\to := (uintptr(unsafe.Pointer(&template.a)) - uintptr(unsafe.Pointer(&template.d)))\n\treturn (*RaceDetectHookData)(unsafe.Pointer(uintptr(p.P) - o))\n}\n\nfunc atomicLoadShadowPresence(p **[]byte) *[]byte {\n\treturn (*[]byte)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))\n}\nfunc atomicStoreShadowPresence(p **[]byte, v *[]byte) {\n\tatomic.CompareAndSwapPointer((*unsafe.Pointer)(unsafe.Pointer(p)), nil, unsafe.Pointer(v))\n}\n\n// findPointerToRaceDetectData finds the preceding RaceDetectHookData\n// in a message by using pointer arithmetic. For the methods called\n// directy from generated code, we don't have a pointer to the\n// beginning of the presence set, but a pointer inside the array. As\n// we know the index of the bit we're manipulating (num), we can\n// calculate which element of the array ptr is pointing to. With that\n// information we find the preceding RaceDetectHookData and can\n// manipulate the shadow bitmap.\n//\n// This method is only called from the race-detect version of the\n// code, so RaceDetectHookData is never an empty struct.\nfunc findPointerToRaceDetectData(ptr *uint32, num uint32) *RaceDetectHookData {\n\tvar template struct {\n\t\td RaceDetectHookData\n\t\ta [1]uint32\n\t}\n\to := (uintptr(unsafe.Pointer(&template.a)) - uintptr(unsafe.Pointer(&template.d))) + uintptr(num/32)*unsafe.Sizeof(uint32(0))\n\treturn (*RaceDetectHookData)(unsafe.Pointer(uintptr(unsafe.Pointer(ptr)) - o))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/validate.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"math/bits\"\n\t\"reflect\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// ValidationStatus is the result of validating the wire-format encoding of a message.\ntype ValidationStatus int\n\nconst (\n\t// ValidationUnknown indicates that unmarshaling the message might succeed or fail.\n\t// The validator was unable to render a judgement.\n\t//\n\t// The only causes of this status are an aberrant message type appearing somewhere\n\t// in the message or a failure in the extension resolver.\n\tValidationUnknown ValidationStatus = iota + 1\n\n\t// ValidationInvalid indicates that unmarshaling the message will fail.\n\tValidationInvalid\n\n\t// ValidationValid indicates that unmarshaling the message will succeed.\n\tValidationValid\n\n\t// ValidationWrongWireType indicates that a validated field does not have\n\t// the expected wire type.\n\tValidationWrongWireType\n)\n\nfunc (v ValidationStatus) String() string {\n\tswitch v {\n\tcase ValidationUnknown:\n\t\treturn \"ValidationUnknown\"\n\tcase ValidationInvalid:\n\t\treturn \"ValidationInvalid\"\n\tcase ValidationValid:\n\t\treturn \"ValidationValid\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"ValidationStatus(%d)\", int(v))\n\t}\n}\n\n// Validate determines whether the contents of the buffer are a valid wire encoding\n// of the message type.\n//\n// This function is exposed for testing.\nfunc Validate(mt protoreflect.MessageType, in protoiface.UnmarshalInput) (out protoiface.UnmarshalOutput, _ ValidationStatus) {\n\tmi, ok := mt.(*MessageInfo)\n\tif !ok {\n\t\treturn out, ValidationUnknown\n\t}\n\tif in.Resolver == nil {\n\t\tin.Resolver = protoregistry.GlobalTypes\n\t}\n\tif in.Depth == 0 {\n\t\tin.Depth = protowire.DefaultRecursionLimit\n\t}\n\to, st := mi.validate(in.Buf, 0, unmarshalOptions{\n\t\tflags:    in.Flags,\n\t\tresolver: in.Resolver,\n\t\tdepth:    in.Depth,\n\t})\n\tif o.initialized {\n\t\tout.Flags |= protoiface.UnmarshalInitialized\n\t}\n\treturn out, st\n}\n\ntype validationInfo struct {\n\tmi               *MessageInfo\n\ttyp              validationType\n\tkeyType, valType validationType\n\n\t// For non-required fields, requiredBit is 0.\n\t//\n\t// For required fields, requiredBit's nth bit is set, where n is a\n\t// unique index in the range [0, MessageInfo.numRequiredFields).\n\t//\n\t// If there are more than 64 required fields, requiredBit is 0.\n\trequiredBit uint64\n}\n\ntype validationType uint8\n\nconst (\n\tvalidationTypeOther validationType = iota\n\tvalidationTypeMessage\n\tvalidationTypeGroup\n\tvalidationTypeMap\n\tvalidationTypeRepeatedVarint\n\tvalidationTypeRepeatedFixed32\n\tvalidationTypeRepeatedFixed64\n\tvalidationTypeVarint\n\tvalidationTypeFixed32\n\tvalidationTypeFixed64\n\tvalidationTypeBytes\n\tvalidationTypeUTF8String\n\tvalidationTypeMessageSetItem\n)\n\nfunc newFieldValidationInfo(mi *MessageInfo, si structInfo, fd protoreflect.FieldDescriptor, ft reflect.Type) validationInfo {\n\tvar vi validationInfo\n\tswitch {\n\tcase fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.MessageKind:\n\t\t\tvi.typ = validationTypeMessage\n\t\t\tif ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok {\n\t\t\t\tvi.mi = getMessageInfo(ot.Field(0).Type)\n\t\t\t}\n\t\tcase protoreflect.GroupKind:\n\t\t\tvi.typ = validationTypeGroup\n\t\t\tif ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok {\n\t\t\t\tvi.mi = getMessageInfo(ot.Field(0).Type)\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.typ = validationTypeUTF8String\n\t\t\t}\n\t\t}\n\tdefault:\n\t\tvi = newValidationInfo(fd, ft)\n\t}\n\tif fd.Cardinality() == protoreflect.Required {\n\t\t// Avoid overflow. The required field check is done with a 64-bit mask, with\n\t\t// any message containing more than 64 required fields always reported as\n\t\t// potentially uninitialized, so it is not important to get a precise count\n\t\t// of the required fields past 64.\n\t\tif mi.numRequiredFields < math.MaxUint8 {\n\t\t\tmi.numRequiredFields++\n\t\t\tvi.requiredBit = 1 << (mi.numRequiredFields - 1)\n\t\t}\n\t}\n\treturn vi\n}\n\nfunc newValidationInfo(fd protoreflect.FieldDescriptor, ft reflect.Type) validationInfo {\n\tvar vi validationInfo\n\tswitch {\n\tcase fd.IsList():\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.MessageKind:\n\t\t\tvi.typ = validationTypeMessage\n\n\t\t\tif ft.Kind() == reflect.Ptr {\n\t\t\t\t// Repeated opaque message fields are *[]*T.\n\t\t\t\tft = ft.Elem()\n\t\t\t}\n\n\t\t\tif ft.Kind() == reflect.Slice {\n\t\t\t\tvi.mi = getMessageInfo(ft.Elem())\n\t\t\t}\n\t\tcase protoreflect.GroupKind:\n\t\t\tvi.typ = validationTypeGroup\n\n\t\t\tif ft.Kind() == reflect.Ptr {\n\t\t\t\t// Repeated opaque message fields are *[]*T.\n\t\t\t\tft = ft.Elem()\n\t\t\t}\n\n\t\t\tif ft.Kind() == reflect.Slice {\n\t\t\t\tvi.mi = getMessageInfo(ft.Elem())\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tvi.typ = validationTypeBytes\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.typ = validationTypeUTF8String\n\t\t\t}\n\t\tdefault:\n\t\t\tswitch wireTypes[fd.Kind()] {\n\t\t\tcase protowire.VarintType:\n\t\t\t\tvi.typ = validationTypeRepeatedVarint\n\t\t\tcase protowire.Fixed32Type:\n\t\t\t\tvi.typ = validationTypeRepeatedFixed32\n\t\t\tcase protowire.Fixed64Type:\n\t\t\t\tvi.typ = validationTypeRepeatedFixed64\n\t\t\t}\n\t\t}\n\tcase fd.IsMap():\n\t\tvi.typ = validationTypeMap\n\t\tswitch fd.MapKey().Kind() {\n\t\tcase protoreflect.StringKind:\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.keyType = validationTypeUTF8String\n\t\t\t}\n\t\t}\n\t\tswitch fd.MapValue().Kind() {\n\t\tcase protoreflect.MessageKind:\n\t\t\tvi.valType = validationTypeMessage\n\t\t\tif ft.Kind() == reflect.Map {\n\t\t\t\tvi.mi = getMessageInfo(ft.Elem())\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.valType = validationTypeUTF8String\n\t\t\t}\n\t\t}\n\tdefault:\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.MessageKind:\n\t\t\tvi.typ = validationTypeMessage\n\t\t\tvi.mi = getMessageInfo(ft)\n\t\tcase protoreflect.GroupKind:\n\t\t\tvi.typ = validationTypeGroup\n\t\t\tvi.mi = getMessageInfo(ft)\n\t\tcase protoreflect.StringKind:\n\t\t\tvi.typ = validationTypeBytes\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.typ = validationTypeUTF8String\n\t\t\t}\n\t\tdefault:\n\t\t\tswitch wireTypes[fd.Kind()] {\n\t\t\tcase protowire.VarintType:\n\t\t\t\tvi.typ = validationTypeVarint\n\t\t\tcase protowire.Fixed32Type:\n\t\t\t\tvi.typ = validationTypeFixed32\n\t\t\tcase protowire.Fixed64Type:\n\t\t\t\tvi.typ = validationTypeFixed64\n\t\t\tcase protowire.BytesType:\n\t\t\t\tvi.typ = validationTypeBytes\n\t\t\t}\n\t\t}\n\t}\n\treturn vi\n}\n\nfunc (mi *MessageInfo) validate(b []byte, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, result ValidationStatus) {\n\tmi.init()\n\ttype validationState struct {\n\t\ttyp              validationType\n\t\tkeyType, valType validationType\n\t\tendGroup         protowire.Number\n\t\tmi               *MessageInfo\n\t\ttail             []byte\n\t\trequiredMask     uint64\n\t}\n\n\t// Pre-allocate some slots to avoid repeated slice reallocation.\n\tstates := make([]validationState, 0, 16)\n\tstates = append(states, validationState{\n\t\ttyp: validationTypeMessage,\n\t\tmi:  mi,\n\t})\n\tif groupTag > 0 {\n\t\tstates[0].typ = validationTypeGroup\n\t\tstates[0].endGroup = groupTag\n\t}\n\tif opts.depth--; opts.depth < 0 {\n\t\treturn out, ValidationInvalid\n\t}\n\tinitialized := true\n\tstart := len(b)\nState:\n\tfor len(states) > 0 {\n\t\tst := &states[len(states)-1]\n\t\tfor len(b) > 0 {\n\t\t\t// Parse the tag (field number and wire type).\n\t\t\tvar tag uint64\n\t\t\tif b[0] < 0x80 {\n\t\t\t\ttag = uint64(b[0])\n\t\t\t\tb = b[1:]\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\ttag = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tb = b[2:]\n\t\t\t} else {\n\t\t\t\tvar n int\n\t\t\t\ttag, n = protowire.ConsumeVarint(b)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t}\n\t\t\t\tb = b[n:]\n\t\t\t}\n\t\t\tvar num protowire.Number\n\t\t\tif n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {\n\t\t\t\treturn out, ValidationInvalid\n\t\t\t} else {\n\t\t\t\tnum = protowire.Number(n)\n\t\t\t}\n\t\t\twtyp := protowire.Type(tag & 7)\n\n\t\t\tif wtyp == protowire.EndGroupType {\n\t\t\t\tif st.endGroup == num {\n\t\t\t\t\tgoto PopState\n\t\t\t\t}\n\t\t\t\treturn out, ValidationInvalid\n\t\t\t}\n\t\t\tvar vi validationInfo\n\t\t\tswitch {\n\t\t\tcase st.typ == validationTypeMap:\n\t\t\t\tswitch num {\n\t\t\t\tcase genid.MapEntry_Key_field_number:\n\t\t\t\t\tvi.typ = st.keyType\n\t\t\t\tcase genid.MapEntry_Value_field_number:\n\t\t\t\t\tvi.typ = st.valType\n\t\t\t\t\tvi.mi = st.mi\n\t\t\t\t\tvi.requiredBit = 1\n\t\t\t\t}\n\t\t\tcase flags.ProtoLegacy && st.mi.isMessageSet:\n\t\t\t\tswitch num {\n\t\t\t\tcase messageset.FieldItem:\n\t\t\t\t\tvi.typ = validationTypeMessageSetItem\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tvar f *coderFieldInfo\n\t\t\t\tif int(num) < len(st.mi.denseCoderFields) {\n\t\t\t\t\tf = st.mi.denseCoderFields[num]\n\t\t\t\t} else {\n\t\t\t\t\tf = st.mi.coderFields[num]\n\t\t\t\t}\n\t\t\t\tif f != nil {\n\t\t\t\t\tvi = f.validation\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// Possible extension field.\n\t\t\t\t//\n\t\t\t\t// TODO: We should return ValidationUnknown when:\n\t\t\t\t//   1. The resolver is not frozen. (More extensions may be added to it.)\n\t\t\t\t//   2. The resolver returns preg.NotFound.\n\t\t\t\t// In this case, a type added to the resolver in the future could cause\n\t\t\t\t// unmarshaling to begin failing. Supporting this requires some way to\n\t\t\t\t// determine if the resolver is frozen.\n\t\t\t\txt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), num)\n\t\t\t\tif err != nil && err != protoregistry.NotFound {\n\t\t\t\t\treturn out, ValidationUnknown\n\t\t\t\t}\n\t\t\t\tif err == nil {\n\t\t\t\t\tvi = getExtensionFieldInfo(xt).validation\n\t\t\t\t}\n\t\t\t}\n\t\t\tif vi.requiredBit != 0 {\n\t\t\t\t// Check that the field has a compatible wire type.\n\t\t\t\t// We only need to consider non-repeated field types,\n\t\t\t\t// since repeated fields (and maps) can never be required.\n\t\t\t\tok := false\n\t\t\t\tswitch vi.typ {\n\t\t\t\tcase validationTypeVarint:\n\t\t\t\t\tok = wtyp == protowire.VarintType\n\t\t\t\tcase validationTypeFixed32:\n\t\t\t\t\tok = wtyp == protowire.Fixed32Type\n\t\t\t\tcase validationTypeFixed64:\n\t\t\t\t\tok = wtyp == protowire.Fixed64Type\n\t\t\t\tcase validationTypeBytes, validationTypeUTF8String, validationTypeMessage:\n\t\t\t\t\tok = wtyp == protowire.BytesType\n\t\t\t\tcase validationTypeGroup:\n\t\t\t\t\tok = wtyp == protowire.StartGroupType\n\t\t\t\t}\n\t\t\t\tif ok {\n\t\t\t\t\tst.requiredMask |= vi.requiredBit\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tswitch wtyp {\n\t\t\tcase protowire.VarintType:\n\t\t\t\tif len(b) >= 10 {\n\t\t\t\t\tswitch {\n\t\t\t\t\tcase b[0] < 0x80:\n\t\t\t\t\t\tb = b[1:]\n\t\t\t\t\tcase b[1] < 0x80:\n\t\t\t\t\t\tb = b[2:]\n\t\t\t\t\tcase b[2] < 0x80:\n\t\t\t\t\t\tb = b[3:]\n\t\t\t\t\tcase b[3] < 0x80:\n\t\t\t\t\t\tb = b[4:]\n\t\t\t\t\tcase b[4] < 0x80:\n\t\t\t\t\t\tb = b[5:]\n\t\t\t\t\tcase b[5] < 0x80:\n\t\t\t\t\t\tb = b[6:]\n\t\t\t\t\tcase b[6] < 0x80:\n\t\t\t\t\t\tb = b[7:]\n\t\t\t\t\tcase b[7] < 0x80:\n\t\t\t\t\t\tb = b[8:]\n\t\t\t\t\tcase b[8] < 0x80:\n\t\t\t\t\t\tb = b[9:]\n\t\t\t\t\tcase b[9] < 0x80 && b[9] < 2:\n\t\t\t\t\t\tb = b[10:]\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tswitch {\n\t\t\t\t\tcase len(b) > 0 && b[0] < 0x80:\n\t\t\t\t\t\tb = b[1:]\n\t\t\t\t\tcase len(b) > 1 && b[1] < 0x80:\n\t\t\t\t\t\tb = b[2:]\n\t\t\t\t\tcase len(b) > 2 && b[2] < 0x80:\n\t\t\t\t\t\tb = b[3:]\n\t\t\t\t\tcase len(b) > 3 && b[3] < 0x80:\n\t\t\t\t\t\tb = b[4:]\n\t\t\t\t\tcase len(b) > 4 && b[4] < 0x80:\n\t\t\t\t\t\tb = b[5:]\n\t\t\t\t\tcase len(b) > 5 && b[5] < 0x80:\n\t\t\t\t\t\tb = b[6:]\n\t\t\t\t\tcase len(b) > 6 && b[6] < 0x80:\n\t\t\t\t\t\tb = b[7:]\n\t\t\t\t\tcase len(b) > 7 && b[7] < 0x80:\n\t\t\t\t\t\tb = b[8:]\n\t\t\t\t\tcase len(b) > 8 && b[8] < 0x80:\n\t\t\t\t\t\tb = b[9:]\n\t\t\t\t\tcase len(b) > 9 && b[9] < 2:\n\t\t\t\t\t\tb = b[10:]\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue State\n\t\t\tcase protowire.BytesType:\n\t\t\t\tvar size uint64\n\t\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\t\tsize = uint64(b[0])\n\t\t\t\t\tb = b[1:]\n\t\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\t\tsize = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\t\tb = b[2:]\n\t\t\t\t} else {\n\t\t\t\t\tvar n int\n\t\t\t\t\tsize, n = protowire.ConsumeVarint(b)\n\t\t\t\t\tif n < 0 {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t\tb = b[n:]\n\t\t\t\t}\n\t\t\t\tif size > uint64(len(b)) {\n\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t}\n\t\t\t\tv := b[:size]\n\t\t\t\tb = b[size:]\n\t\t\t\tswitch vi.typ {\n\t\t\t\tcase validationTypeMessage:\n\t\t\t\t\tif vi.mi == nil {\n\t\t\t\t\t\treturn out, ValidationUnknown\n\t\t\t\t\t}\n\t\t\t\t\tvi.mi.init()\n\t\t\t\t\tfallthrough\n\t\t\t\tcase validationTypeMap:\n\t\t\t\t\tif vi.mi != nil {\n\t\t\t\t\t\tvi.mi.init()\n\t\t\t\t\t}\n\t\t\t\t\tstates = append(states, validationState{\n\t\t\t\t\t\ttyp:     vi.typ,\n\t\t\t\t\t\tkeyType: vi.keyType,\n\t\t\t\t\t\tvalType: vi.valType,\n\t\t\t\t\t\tmi:      vi.mi,\n\t\t\t\t\t\ttail:    b,\n\t\t\t\t\t})\n\t\t\t\t\tif vi.typ == validationTypeMessage ||\n\t\t\t\t\t\tvi.typ == validationTypeGroup ||\n\t\t\t\t\t\tvi.typ == validationTypeMap {\n\t\t\t\t\t\tif opts.depth--; opts.depth < 0 {\n\t\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tb = v\n\t\t\t\t\tcontinue State\n\t\t\t\tcase validationTypeRepeatedVarint:\n\t\t\t\t\t// Packed field.\n\t\t\t\t\tfor len(v) > 0 {\n\t\t\t\t\t\t_, n := protowire.ConsumeVarint(v)\n\t\t\t\t\t\tif n < 0 {\n\t\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t\t}\n\t\t\t\t\t\tv = v[n:]\n\t\t\t\t\t}\n\t\t\t\tcase validationTypeRepeatedFixed32:\n\t\t\t\t\t// Packed field.\n\t\t\t\t\tif len(v)%4 != 0 {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\tcase validationTypeRepeatedFixed64:\n\t\t\t\t\t// Packed field.\n\t\t\t\t\tif len(v)%8 != 0 {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\tcase validationTypeUTF8String:\n\t\t\t\t\tif !utf8.Valid(v) {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase protowire.Fixed32Type:\n\t\t\t\tif len(b) < 4 {\n\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t}\n\t\t\t\tb = b[4:]\n\t\t\tcase protowire.Fixed64Type:\n\t\t\t\tif len(b) < 8 {\n\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t}\n\t\t\t\tb = b[8:]\n\t\t\tcase protowire.StartGroupType:\n\t\t\t\tswitch {\n\t\t\t\tcase vi.typ == validationTypeGroup:\n\t\t\t\t\tif vi.mi == nil {\n\t\t\t\t\t\treturn out, ValidationUnknown\n\t\t\t\t\t}\n\t\t\t\t\tvi.mi.init()\n\t\t\t\t\tstates = append(states, validationState{\n\t\t\t\t\t\ttyp:      validationTypeGroup,\n\t\t\t\t\t\tmi:       vi.mi,\n\t\t\t\t\t\tendGroup: num,\n\t\t\t\t\t})\n\t\t\t\t\tif opts.depth--; opts.depth < 0 {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t\tcontinue State\n\t\t\t\tcase flags.ProtoLegacy && vi.typ == validationTypeMessageSetItem:\n\t\t\t\t\ttypeid, v, n, err := messageset.ConsumeFieldValue(b, false)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t\txt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), typeid)\n\t\t\t\t\tswitch {\n\t\t\t\t\tcase err == protoregistry.NotFound:\n\t\t\t\t\t\tb = b[n:]\n\t\t\t\t\tcase err != nil:\n\t\t\t\t\t\treturn out, ValidationUnknown\n\t\t\t\t\tdefault:\n\t\t\t\t\t\txvi := getExtensionFieldInfo(xt).validation\n\t\t\t\t\t\tif xvi.mi != nil {\n\t\t\t\t\t\t\txvi.mi.init()\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstates = append(states, validationState{\n\t\t\t\t\t\t\ttyp:  xvi.typ,\n\t\t\t\t\t\t\tmi:   xvi.mi,\n\t\t\t\t\t\t\ttail: b[n:],\n\t\t\t\t\t\t})\n\t\t\t\t\t\tif xvi.typ == validationTypeMessage ||\n\t\t\t\t\t\t\txvi.typ == validationTypeGroup ||\n\t\t\t\t\t\t\txvi.typ == validationTypeMap {\n\t\t\t\t\t\t\tif opts.depth--; opts.depth < 0 {\n\t\t\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb = v\n\t\t\t\t\t\tcontinue State\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tn := protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\t\t\tif n < 0 {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t\tb = b[n:]\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn out, ValidationInvalid\n\t\t\t}\n\t\t}\n\t\tif st.endGroup != 0 {\n\t\t\treturn out, ValidationInvalid\n\t\t}\n\t\tif len(b) != 0 {\n\t\t\treturn out, ValidationInvalid\n\t\t}\n\t\tb = st.tail\n\tPopState:\n\t\tnumRequiredFields := 0\n\t\tswitch st.typ {\n\t\tcase validationTypeMessage, validationTypeGroup:\n\t\t\tnumRequiredFields = int(st.mi.numRequiredFields)\n\t\t\topts.depth++\n\t\tcase validationTypeMap:\n\t\t\t// If this is a map field with a message value that contains\n\t\t\t// required fields, require that the value be present.\n\t\t\tif st.mi != nil && st.mi.numRequiredFields > 0 {\n\t\t\t\tnumRequiredFields = 1\n\t\t\t}\n\t\t\topts.depth++\n\t\t}\n\t\t// If there are more than 64 required fields, this check will\n\t\t// always fail and we will report that the message is potentially\n\t\t// uninitialized.\n\t\tif numRequiredFields > 0 && bits.OnesCount64(st.requiredMask) != numRequiredFields {\n\t\t\tinitialized = false\n\t\t}\n\t\tstates = states[:len(states)-1]\n\t}\n\tout.n = start - len(b)\n\tif initialized {\n\t\tout.initialized = true\n\t}\n\treturn out, ValidationValid\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/msgfmt/format.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package msgfmt implements a text marshaler combining the desirable features\n// of both the JSON and proto text formats.\n// It is optimized for human readability and has no associated deserializer.\npackage msgfmt\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/detrand\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Format returns a formatted string for the message.\nfunc Format(m proto.Message) string {\n\treturn string(appendMessage(nil, m.ProtoReflect()))\n}\n\n// FormatValue returns a formatted string for an arbitrary value.\nfunc FormatValue(v protoreflect.Value, fd protoreflect.FieldDescriptor) string {\n\treturn string(appendValue(nil, v, fd))\n}\n\nfunc appendValue(b []byte, v protoreflect.Value, fd protoreflect.FieldDescriptor) []byte {\n\tswitch v := v.Interface().(type) {\n\tcase nil:\n\t\treturn append(b, \"<invalid>\"...)\n\tcase bool, int32, int64, uint32, uint64, float32, float64:\n\t\treturn append(b, fmt.Sprint(v)...)\n\tcase string:\n\t\treturn append(b, strconv.Quote(string(v))...)\n\tcase []byte:\n\t\treturn append(b, strconv.Quote(string(v))...)\n\tcase protoreflect.EnumNumber:\n\t\treturn appendEnum(b, v, fd)\n\tcase protoreflect.Message:\n\t\treturn appendMessage(b, v)\n\tcase protoreflect.List:\n\t\treturn appendList(b, v, fd)\n\tcase protoreflect.Map:\n\t\treturn appendMap(b, v, fd)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid type: %T\", v))\n\t}\n}\n\nfunc appendEnum(b []byte, v protoreflect.EnumNumber, fd protoreflect.FieldDescriptor) []byte {\n\tif fd != nil {\n\t\tif ev := fd.Enum().Values().ByNumber(v); ev != nil {\n\t\t\treturn append(b, ev.Name()...)\n\t\t}\n\t}\n\treturn strconv.AppendInt(b, int64(v), 10)\n}\n\nfunc appendMessage(b []byte, m protoreflect.Message) []byte {\n\tif b2 := appendKnownMessage(b, m); b2 != nil {\n\t\treturn b2\n\t}\n\n\tb = append(b, '{')\n\torder.RangeFields(m, order.IndexNameFieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tb = append(b, fd.TextName()...)\n\t\tb = append(b, ':')\n\t\tb = appendValue(b, v, fd)\n\t\tb = append(b, delim()...)\n\t\treturn true\n\t})\n\tb = appendUnknown(b, m.GetUnknown())\n\tb = bytes.TrimRight(b, delim())\n\tb = append(b, '}')\n\treturn b\n}\n\nvar protocmpMessageType = reflect.TypeOf(map[string]any(nil))\n\nfunc appendKnownMessage(b []byte, m protoreflect.Message) []byte {\n\tmd := m.Descriptor()\n\tfds := md.Fields()\n\tswitch md.FullName() {\n\tcase genid.Any_message_fullname:\n\t\tvar msgVal protoreflect.Message\n\t\turl := m.Get(fds.ByNumber(genid.Any_TypeUrl_field_number)).String()\n\t\tif v := reflect.ValueOf(m); v.Type().ConvertibleTo(protocmpMessageType) {\n\t\t\t// For protocmp.Message, directly obtain the sub-message value\n\t\t\t// which is stored in structured form, rather than as raw bytes.\n\t\t\tm2 := v.Convert(protocmpMessageType).Interface().(map[string]any)\n\t\t\tv, ok := m2[string(genid.Any_Value_field_name)].(proto.Message)\n\t\t\tif !ok {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tmsgVal = v.ProtoReflect()\n\t\t} else {\n\t\t\tval := m.Get(fds.ByNumber(genid.Any_Value_field_number)).Bytes()\n\t\t\tmt, err := protoregistry.GlobalTypes.FindMessageByURL(url)\n\t\t\tif err != nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tmsgVal = mt.New()\n\t\t\terr = proto.UnmarshalOptions{AllowPartial: true}.Unmarshal(val, msgVal.Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\n\t\tb = append(b, '{')\n\t\tb = append(b, \"[\"+url+\"]\"...)\n\t\tb = append(b, ':')\n\t\tb = appendMessage(b, msgVal)\n\t\tb = append(b, '}')\n\t\treturn b\n\n\tcase genid.Timestamp_message_fullname:\n\t\tsecs := m.Get(fds.ByNumber(genid.Timestamp_Seconds_field_number)).Int()\n\t\tnanos := m.Get(fds.ByNumber(genid.Timestamp_Nanos_field_number)).Int()\n\t\tif nanos < 0 || nanos >= 1e9 {\n\t\t\treturn nil\n\t\t}\n\t\tt := time.Unix(secs, nanos).UTC()\n\t\tx := t.Format(\"2006-01-02T15:04:05.000000000\") // RFC 3339\n\t\tx = strings.TrimSuffix(x, \"000\")\n\t\tx = strings.TrimSuffix(x, \"000\")\n\t\tx = strings.TrimSuffix(x, \".000\")\n\t\treturn append(b, x+\"Z\"...)\n\n\tcase genid.Duration_message_fullname:\n\t\tsign := \"\"\n\t\tsecs := m.Get(fds.ByNumber(genid.Duration_Seconds_field_number)).Int()\n\t\tnanos := m.Get(fds.ByNumber(genid.Duration_Nanos_field_number)).Int()\n\t\tif nanos <= -1e9 || nanos >= 1e9 || (secs > 0 && nanos < 0) || (secs < 0 && nanos > 0) {\n\t\t\treturn nil\n\t\t}\n\t\tif secs < 0 || nanos < 0 {\n\t\t\tsign, secs, nanos = \"-\", -1*secs, -1*nanos\n\t\t}\n\t\tx := fmt.Sprintf(\"%s%d.%09d\", sign, secs, nanos)\n\t\tx = strings.TrimSuffix(x, \"000\")\n\t\tx = strings.TrimSuffix(x, \"000\")\n\t\tx = strings.TrimSuffix(x, \".000\")\n\t\treturn append(b, x+\"s\"...)\n\n\tcase genid.BoolValue_message_fullname,\n\t\tgenid.Int32Value_message_fullname,\n\t\tgenid.Int64Value_message_fullname,\n\t\tgenid.UInt32Value_message_fullname,\n\t\tgenid.UInt64Value_message_fullname,\n\t\tgenid.FloatValue_message_fullname,\n\t\tgenid.DoubleValue_message_fullname,\n\t\tgenid.StringValue_message_fullname,\n\t\tgenid.BytesValue_message_fullname:\n\t\tfd := fds.ByNumber(genid.WrapperValue_Value_field_number)\n\t\treturn appendValue(b, m.Get(fd), fd)\n\t}\n\n\treturn nil\n}\n\nfunc appendUnknown(b []byte, raw protoreflect.RawFields) []byte {\n\trs := make(map[protoreflect.FieldNumber][]protoreflect.RawFields)\n\tfor len(raw) > 0 {\n\t\tnum, _, n := protowire.ConsumeField(raw)\n\t\trs[num] = append(rs[num], raw[:n])\n\t\traw = raw[n:]\n\t}\n\n\tvar ns []protoreflect.FieldNumber\n\tfor n := range rs {\n\t\tns = append(ns, n)\n\t}\n\tsort.Slice(ns, func(i, j int) bool { return ns[i] < ns[j] })\n\n\tfor _, n := range ns {\n\t\tvar leftBracket, rightBracket string\n\t\tif len(rs[n]) > 1 {\n\t\t\tleftBracket, rightBracket = \"[\", \"]\"\n\t\t}\n\n\t\tb = strconv.AppendInt(b, int64(n), 10)\n\t\tb = append(b, ':')\n\t\tb = append(b, leftBracket...)\n\t\tfor _, r := range rs[n] {\n\t\t\tnum, typ, n := protowire.ConsumeTag(r)\n\t\t\tr = r[n:]\n\t\t\tswitch typ {\n\t\t\tcase protowire.VarintType:\n\t\t\t\tv, _ := protowire.ConsumeVarint(r)\n\t\t\t\tb = strconv.AppendInt(b, int64(v), 10)\n\t\t\tcase protowire.Fixed32Type:\n\t\t\t\tv, _ := protowire.ConsumeFixed32(r)\n\t\t\t\tb = append(b, fmt.Sprintf(\"0x%08x\", v)...)\n\t\t\tcase protowire.Fixed64Type:\n\t\t\t\tv, _ := protowire.ConsumeFixed64(r)\n\t\t\t\tb = append(b, fmt.Sprintf(\"0x%016x\", v)...)\n\t\t\tcase protowire.BytesType:\n\t\t\t\tv, _ := protowire.ConsumeBytes(r)\n\t\t\t\tb = strconv.AppendQuote(b, string(v))\n\t\t\tcase protowire.StartGroupType:\n\t\t\t\tv, _ := protowire.ConsumeGroup(num, r)\n\t\t\t\tb = append(b, '{')\n\t\t\t\tb = appendUnknown(b, v)\n\t\t\t\tb = bytes.TrimRight(b, delim())\n\t\t\t\tb = append(b, '}')\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"invalid type: %v\", typ))\n\t\t\t}\n\t\t\tb = append(b, delim()...)\n\t\t}\n\t\tb = bytes.TrimRight(b, delim())\n\t\tb = append(b, rightBracket...)\n\t\tb = append(b, delim()...)\n\t}\n\treturn b\n}\n\nfunc appendList(b []byte, v protoreflect.List, fd protoreflect.FieldDescriptor) []byte {\n\tb = append(b, '[')\n\tfor i := 0; i < v.Len(); i++ {\n\t\tb = appendValue(b, v.Get(i), fd)\n\t\tb = append(b, delim()...)\n\t}\n\tb = bytes.TrimRight(b, delim())\n\tb = append(b, ']')\n\treturn b\n}\n\nfunc appendMap(b []byte, v protoreflect.Map, fd protoreflect.FieldDescriptor) []byte {\n\tb = append(b, '{')\n\torder.RangeEntries(v, order.GenericKeyOrder, func(k protoreflect.MapKey, v protoreflect.Value) bool {\n\t\tb = appendValue(b, k.Value(), fd.MapKey())\n\t\tb = append(b, ':')\n\t\tb = appendValue(b, v, fd.MapValue())\n\t\tb = append(b, delim()...)\n\t\treturn true\n\t})\n\tb = bytes.TrimRight(b, delim())\n\tb = append(b, '}')\n\treturn b\n}\n\nfunc delim() string {\n\t// Deliberately introduce instability into the message string to\n\t// discourage users from depending on it.\n\tif detrand.Bool() {\n\t\treturn \"  \"\n\t}\n\treturn \", \"\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/order/order.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage order\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// FieldOrder specifies the ordering to visit message fields.\n// It is a function that reports whether x is ordered before y.\ntype FieldOrder func(x, y protoreflect.FieldDescriptor) bool\n\nvar (\n\t// AnyFieldOrder specifies no specific field ordering.\n\tAnyFieldOrder FieldOrder = nil\n\n\t// LegacyFieldOrder sorts fields in the same ordering as emitted by\n\t// wire serialization in the github.com/golang/protobuf implementation.\n\tLegacyFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool {\n\t\tox, oy := x.ContainingOneof(), y.ContainingOneof()\n\t\tinOneof := func(od protoreflect.OneofDescriptor) bool {\n\t\t\treturn od != nil && !od.IsSynthetic()\n\t\t}\n\n\t\t// Extension fields sort before non-extension fields.\n\t\tif x.IsExtension() != y.IsExtension() {\n\t\t\treturn x.IsExtension() && !y.IsExtension()\n\t\t}\n\t\t// Fields not within a oneof sort before those within a oneof.\n\t\tif inOneof(ox) != inOneof(oy) {\n\t\t\treturn !inOneof(ox) && inOneof(oy)\n\t\t}\n\t\t// Fields in disjoint oneof sets are sorted by declaration index.\n\t\tif inOneof(ox) && inOneof(oy) && ox != oy {\n\t\t\treturn ox.Index() < oy.Index()\n\t\t}\n\t\t// Fields sorted by field number.\n\t\treturn x.Number() < y.Number()\n\t}\n\n\t// NumberFieldOrder sorts fields by their field number.\n\tNumberFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool {\n\t\treturn x.Number() < y.Number()\n\t}\n\n\t// IndexNameFieldOrder sorts non-extension fields before extension fields.\n\t// Non-extensions are sorted according to their declaration index.\n\t// Extensions are sorted according to their full name.\n\tIndexNameFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool {\n\t\t// Non-extension fields sort before extension fields.\n\t\tif x.IsExtension() != y.IsExtension() {\n\t\t\treturn !x.IsExtension() && y.IsExtension()\n\t\t}\n\t\t// Extensions sorted by fullname.\n\t\tif x.IsExtension() && y.IsExtension() {\n\t\t\treturn x.FullName() < y.FullName()\n\t\t}\n\t\t// Non-extensions sorted by declaration index.\n\t\treturn x.Index() < y.Index()\n\t}\n)\n\n// KeyOrder specifies the ordering to visit map entries.\n// It is a function that reports whether x is ordered before y.\ntype KeyOrder func(x, y protoreflect.MapKey) bool\n\nvar (\n\t// AnyKeyOrder specifies no specific key ordering.\n\tAnyKeyOrder KeyOrder = nil\n\n\t// GenericKeyOrder sorts false before true, numeric keys in ascending order,\n\t// and strings in lexicographical ordering according to UTF-8 codepoints.\n\tGenericKeyOrder KeyOrder = func(x, y protoreflect.MapKey) bool {\n\t\tswitch x.Interface().(type) {\n\t\tcase bool:\n\t\t\treturn !x.Bool() && y.Bool()\n\t\tcase int32, int64:\n\t\t\treturn x.Int() < y.Int()\n\t\tcase uint32, uint64:\n\t\t\treturn x.Uint() < y.Uint()\n\t\tcase string:\n\t\t\treturn x.String() < y.String()\n\t\tdefault:\n\t\t\tpanic(\"invalid map key type\")\n\t\t}\n\t}\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/order/range.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package order provides ordered access to messages and maps.\npackage order\n\nimport (\n\t\"sort\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype messageField struct {\n\tfd protoreflect.FieldDescriptor\n\tv  protoreflect.Value\n}\n\nvar messageFieldPool = sync.Pool{\n\tNew: func() any { return new([]messageField) },\n}\n\ntype (\n\t// FieldRnger is an interface for visiting all fields in a message.\n\t// The protoreflect.Message type implements this interface.\n\tFieldRanger interface{ Range(VisitField) }\n\t// VisitField is called every time a message field is visited.\n\tVisitField = func(protoreflect.FieldDescriptor, protoreflect.Value) bool\n)\n\n// RangeFields iterates over the fields of fs according to the specified order.\nfunc RangeFields(fs FieldRanger, less FieldOrder, fn VisitField) {\n\tif less == nil {\n\t\tfs.Range(fn)\n\t\treturn\n\t}\n\n\t// Obtain a pre-allocated scratch buffer.\n\tp := messageFieldPool.Get().(*[]messageField)\n\tfields := (*p)[:0]\n\tdefer func() {\n\t\tif cap(fields) < 1024 {\n\t\t\t*p = fields\n\t\t\tmessageFieldPool.Put(p)\n\t\t}\n\t}()\n\n\t// Collect all fields in the message and sort them.\n\tfs.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tfields = append(fields, messageField{fd, v})\n\t\treturn true\n\t})\n\tsort.Slice(fields, func(i, j int) bool {\n\t\treturn less(fields[i].fd, fields[j].fd)\n\t})\n\n\t// Visit the fields in the specified ordering.\n\tfor _, f := range fields {\n\t\tif !fn(f.fd, f.v) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\ntype mapEntry struct {\n\tk protoreflect.MapKey\n\tv protoreflect.Value\n}\n\nvar mapEntryPool = sync.Pool{\n\tNew: func() any { return new([]mapEntry) },\n}\n\ntype (\n\t// EntryRanger is an interface for visiting all fields in a message.\n\t// The protoreflect.Map type implements this interface.\n\tEntryRanger interface{ Range(VisitEntry) }\n\t// VisitEntry is called every time a map entry is visited.\n\tVisitEntry = func(protoreflect.MapKey, protoreflect.Value) bool\n)\n\n// RangeEntries iterates over the entries of es according to the specified order.\nfunc RangeEntries(es EntryRanger, less KeyOrder, fn VisitEntry) {\n\tif less == nil {\n\t\tes.Range(fn)\n\t\treturn\n\t}\n\n\t// Obtain a pre-allocated scratch buffer.\n\tp := mapEntryPool.Get().(*[]mapEntry)\n\tentries := (*p)[:0]\n\tdefer func() {\n\t\tif cap(entries) < 1024 {\n\t\t\t*p = entries\n\t\t\tmapEntryPool.Put(p)\n\t\t}\n\t}()\n\n\t// Collect all entries in the map and sort them.\n\tes.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool {\n\t\tentries = append(entries, mapEntry{k, v})\n\t\treturn true\n\t})\n\tsort.Slice(entries, func(i, j int) bool {\n\t\treturn less(entries[i].k, entries[j].k)\n\t})\n\n\t// Visit the entries in the specified ordering.\n\tfor _, e := range entries {\n\t\tif !fn(e.k, e.v) {\n\t\t\treturn\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/pragma/pragma.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package pragma provides types that can be embedded into a struct to\n// statically enforce or prevent certain language properties.\npackage pragma\n\nimport \"sync\"\n\n// NoUnkeyedLiterals can be embedded in a struct to prevent unkeyed literals.\ntype NoUnkeyedLiterals struct{}\n\n// DoNotImplement can be embedded in an interface to prevent trivial\n// implementations of the interface.\n//\n// This is useful to prevent unauthorized implementations of an interface\n// so that it can be extended in the future for any protobuf language changes.\ntype DoNotImplement interface{ ProtoInternal(DoNotImplement) }\n\n// DoNotCompare can be embedded in a struct to prevent comparability.\ntype DoNotCompare [0]func()\n\n// DoNotCopy can be embedded in a struct to help prevent shallow copies.\n// This does not rely on a Go language feature, but rather a special case\n// within the vet checker.\n//\n// See https://golang.org/issues/8005.\ntype DoNotCopy [0]sync.Mutex\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/protolazy/bufferreader.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Helper code for parsing a protocol buffer\n\npackage protolazy\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n)\n\n// BufferReader is a structure encapsulating a protobuf and a current position\ntype BufferReader struct {\n\tBuf []byte\n\tPos int\n}\n\n// NewBufferReader creates a new BufferRead from a protobuf\nfunc NewBufferReader(buf []byte) BufferReader {\n\treturn BufferReader{Buf: buf, Pos: 0}\n}\n\nvar errOutOfBounds = errors.New(\"protobuf decoding: out of bounds\")\nvar errOverflow = errors.New(\"proto: integer overflow\")\n\nfunc (b *BufferReader) DecodeVarintSlow() (x uint64, err error) {\n\ti := b.Pos\n\tl := len(b.Buf)\n\n\tfor shift := uint(0); shift < 64; shift += 7 {\n\t\tif i >= l {\n\t\t\terr = io.ErrUnexpectedEOF\n\t\t\treturn\n\t\t}\n\t\tv := b.Buf[i]\n\t\ti++\n\t\tx |= (uint64(v) & 0x7F) << shift\n\t\tif v < 0x80 {\n\t\t\tb.Pos = i\n\t\t\treturn\n\t\t}\n\t}\n\n\t// The number is too large to represent in a 64-bit value.\n\terr = errOverflow\n\treturn\n}\n\n// decodeVarint decodes a varint at the current position\nfunc (b *BufferReader) DecodeVarint() (x uint64, err error) {\n\ti := b.Pos\n\tbuf := b.Buf\n\n\tif i >= len(buf) {\n\t\treturn 0, io.ErrUnexpectedEOF\n\t} else if buf[i] < 0x80 {\n\t\tb.Pos++\n\t\treturn uint64(buf[i]), nil\n\t} else if len(buf)-i < 10 {\n\t\treturn b.DecodeVarintSlow()\n\t}\n\n\tvar v uint64\n\t// we already checked the first byte\n\tx = uint64(buf[i]) & 127\n\ti++\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 7\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 14\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 21\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 28\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 35\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 42\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 49\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 56\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 63\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\treturn 0, errOverflow\n\ndone:\n\tb.Pos = i\n\treturn\n}\n\n// decodeVarint32 decodes a varint32 at the current position\nfunc (b *BufferReader) DecodeVarint32() (x uint32, err error) {\n\ti := b.Pos\n\tbuf := b.Buf\n\n\tif i >= len(buf) {\n\t\treturn 0, io.ErrUnexpectedEOF\n\t} else if buf[i] < 0x80 {\n\t\tb.Pos++\n\t\treturn uint32(buf[i]), nil\n\t} else if len(buf)-i < 5 {\n\t\tv, err := b.DecodeVarintSlow()\n\t\treturn uint32(v), err\n\t}\n\n\tvar v uint32\n\t// we already checked the first byte\n\tx = uint32(buf[i]) & 127\n\ti++\n\n\tv = uint32(buf[i])\n\ti++\n\tx |= (v & 127) << 7\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint32(buf[i])\n\ti++\n\tx |= (v & 127) << 14\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint32(buf[i])\n\ti++\n\tx |= (v & 127) << 21\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint32(buf[i])\n\ti++\n\tx |= (v & 127) << 28\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\treturn 0, errOverflow\n\ndone:\n\tb.Pos = i\n\treturn\n}\n\n// skipValue skips a value in the protobuf, based on the specified tag\nfunc (b *BufferReader) SkipValue(tag uint32) (err error) {\n\twireType := tag & 0x7\n\tswitch protowire.Type(wireType) {\n\tcase protowire.VarintType:\n\t\terr = b.SkipVarint()\n\tcase protowire.Fixed64Type:\n\t\terr = b.SkipFixed64()\n\tcase protowire.BytesType:\n\t\tvar n uint32\n\t\tn, err = b.DecodeVarint32()\n\t\tif err == nil {\n\t\t\terr = b.Skip(int(n))\n\t\t}\n\tcase protowire.StartGroupType:\n\t\terr = b.SkipGroup(tag)\n\tcase protowire.Fixed32Type:\n\t\terr = b.SkipFixed32()\n\tdefault:\n\t\terr = fmt.Errorf(\"Unexpected wire type (%d)\", wireType)\n\t}\n\treturn\n}\n\n// skipGroup skips a group with the specified tag.  It executes efficiently using a tag stack\nfunc (b *BufferReader) SkipGroup(tag uint32) (err error) {\n\ttagStack := make([]uint32, 0, 16)\n\ttagStack = append(tagStack, tag)\n\tvar n uint32\n\tfor len(tagStack) > 0 {\n\t\ttag, err = b.DecodeVarint32()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch protowire.Type(tag & 0x7) {\n\t\tcase protowire.VarintType:\n\t\t\terr = b.SkipVarint()\n\t\tcase protowire.Fixed64Type:\n\t\t\terr = b.Skip(8)\n\t\tcase protowire.BytesType:\n\t\t\tn, err = b.DecodeVarint32()\n\t\t\tif err == nil {\n\t\t\t\terr = b.Skip(int(n))\n\t\t\t}\n\t\tcase protowire.StartGroupType:\n\t\t\ttagStack = append(tagStack, tag)\n\t\tcase protowire.Fixed32Type:\n\t\t\terr = b.SkipFixed32()\n\t\tcase protowire.EndGroupType:\n\t\t\tif protoFieldNumber(tagStack[len(tagStack)-1]) == protoFieldNumber(tag) {\n\t\t\t\ttagStack = tagStack[:len(tagStack)-1]\n\t\t\t} else {\n\t\t\t\terr = fmt.Errorf(\"end group tag %d does not match begin group tag %d at pos %d\",\n\t\t\t\t\tprotoFieldNumber(tag), protoFieldNumber(tagStack[len(tagStack)-1]), b.Pos)\n\t\t\t}\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// skipVarint effiently skips a varint\nfunc (b *BufferReader) SkipVarint() (err error) {\n\ti := b.Pos\n\n\tif len(b.Buf)-i < 10 {\n\t\t// Use DecodeVarintSlow() to check for buffer overflow, but ignore result\n\t\tif _, err := b.DecodeVarintSlow(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t}\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\treturn errOverflow\n\nout:\n\tb.Pos = i + 1\n\treturn nil\n}\n\n// skip skips the specified number of bytes\nfunc (b *BufferReader) Skip(n int) (err error) {\n\tif len(b.Buf) < b.Pos+n {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\tb.Pos += n\n\treturn\n}\n\n// skipFixed64 skips a fixed64\nfunc (b *BufferReader) SkipFixed64() (err error) {\n\treturn b.Skip(8)\n}\n\n// skipFixed32 skips a fixed32\nfunc (b *BufferReader) SkipFixed32() (err error) {\n\treturn b.Skip(4)\n}\n\n// skipBytes skips a set of bytes\nfunc (b *BufferReader) SkipBytes() (err error) {\n\tn, err := b.DecodeVarint32()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn b.Skip(int(n))\n}\n\n// Done returns whether we are at the end of the protobuf\nfunc (b *BufferReader) Done() bool {\n\treturn b.Pos == len(b.Buf)\n}\n\n// Remaining returns how many bytes remain\nfunc (b *BufferReader) Remaining() int {\n\treturn len(b.Buf) - b.Pos\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/protolazy/lazy.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protolazy contains internal data structures for lazy message decoding.\npackage protolazy\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\tpiface \"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// IndexEntry is the structure for an index of the fields in a message of a\n// proto (not descending to sub-messages)\ntype IndexEntry struct {\n\tFieldNum uint32\n\t// first byte of this tag/field\n\tStart uint32\n\t// first byte after a contiguous sequence of bytes for this tag/field, which could\n\t// include a single encoding of the field, or multiple encodings for the field\n\tEnd uint32\n\t// True if this protobuf segment includes multiple encodings of the field\n\tMultipleContiguous bool\n}\n\n// XXX_lazyUnmarshalInfo has information about a particular lazily decoded message\n//\n// Deprecated: Do not use. This will be deleted in the near future.\ntype XXX_lazyUnmarshalInfo struct {\n\t// Index of fields and their positions in the protobuf for this\n\t// message.  Make index be a pointer to a slice so it can be updated\n\t// atomically.  The index pointer is only set once (lazily when/if\n\t// the index is first needed), and must always be SET and LOADED\n\t// ATOMICALLY.\n\tindex *[]IndexEntry\n\t// The protobuf associated with this lazily decoded message.  It is\n\t// only set during proto.Unmarshal().  It doesn't need to be set and\n\t// loaded atomically, since any simultaneous set (Unmarshal) and read\n\t// (during a get) would already be a race in the app code.\n\tProtobuf []byte\n\t// The flags present when Unmarshal was originally called for this particular message\n\tunmarshalFlags piface.UnmarshalInputFlags\n}\n\n// The Buffer and SetBuffer methods let v2/internal/impl interact with\n// XXX_lazyUnmarshalInfo via an interface, to avoid an import cycle.\n\n// Buffer returns the lazy unmarshal buffer.\n//\n// Deprecated: Do not use. This will be deleted in the near future.\nfunc (lazy *XXX_lazyUnmarshalInfo) Buffer() []byte {\n\treturn lazy.Protobuf\n}\n\n// SetBuffer sets the lazy unmarshal buffer.\n//\n// Deprecated: Do not use. This will be deleted in the near future.\nfunc (lazy *XXX_lazyUnmarshalInfo) SetBuffer(b []byte) {\n\tlazy.Protobuf = b\n}\n\n// SetUnmarshalFlags is called to set a copy of the original unmarshalInputFlags.\n// The flags should reflect how Unmarshal was called.\nfunc (lazy *XXX_lazyUnmarshalInfo) SetUnmarshalFlags(f piface.UnmarshalInputFlags) {\n\tlazy.unmarshalFlags = f\n}\n\n// UnmarshalFlags returns the original unmarshalInputFlags.\nfunc (lazy *XXX_lazyUnmarshalInfo) UnmarshalFlags() piface.UnmarshalInputFlags {\n\treturn lazy.unmarshalFlags\n}\n\n// AllowedPartial returns true if the user originally unmarshalled this message with\n// AllowPartial set to true\nfunc (lazy *XXX_lazyUnmarshalInfo) AllowedPartial() bool {\n\treturn (lazy.unmarshalFlags & piface.UnmarshalCheckRequired) == 0\n}\n\nfunc protoFieldNumber(tag uint32) uint32 {\n\treturn tag >> 3\n}\n\n// buildIndex builds an index of the specified protobuf, return the index\n// array and an error.\nfunc buildIndex(buf []byte) ([]IndexEntry, error) {\n\tindex := make([]IndexEntry, 0, 16)\n\tvar lastProtoFieldNum uint32\n\tvar outOfOrder bool\n\n\tvar r BufferReader = NewBufferReader(buf)\n\n\tfor !r.Done() {\n\t\tvar tag uint32\n\t\tvar err error\n\t\tvar curPos = r.Pos\n\t\t// INLINED: tag, err = r.DecodeVarint32()\n\t\t{\n\t\t\ti := r.Pos\n\t\t\tbuf := r.Buf\n\n\t\t\tif i >= len(buf) {\n\t\t\t\treturn nil, errOutOfBounds\n\t\t\t} else if buf[i] < 0x80 {\n\t\t\t\tr.Pos++\n\t\t\t\ttag = uint32(buf[i])\n\t\t\t} else if r.Remaining() < 5 {\n\t\t\t\tvar v uint64\n\t\t\t\tv, err = r.DecodeVarintSlow()\n\t\t\t\ttag = uint32(v)\n\t\t\t} else {\n\t\t\t\tvar v uint32\n\t\t\t\t// we already checked the first byte\n\t\t\t\ttag = uint32(buf[i]) & 127\n\t\t\t\ti++\n\n\t\t\t\tv = uint32(buf[i])\n\t\t\t\ti++\n\t\t\t\ttag |= (v & 127) << 7\n\t\t\t\tif v < 128 {\n\t\t\t\t\tgoto done\n\t\t\t\t}\n\n\t\t\t\tv = uint32(buf[i])\n\t\t\t\ti++\n\t\t\t\ttag |= (v & 127) << 14\n\t\t\t\tif v < 128 {\n\t\t\t\t\tgoto done\n\t\t\t\t}\n\n\t\t\t\tv = uint32(buf[i])\n\t\t\t\ti++\n\t\t\t\ttag |= (v & 127) << 21\n\t\t\t\tif v < 128 {\n\t\t\t\t\tgoto done\n\t\t\t\t}\n\n\t\t\t\tv = uint32(buf[i])\n\t\t\t\ti++\n\t\t\t\ttag |= (v & 127) << 28\n\t\t\t\tif v < 128 {\n\t\t\t\t\tgoto done\n\t\t\t\t}\n\n\t\t\t\treturn nil, errOutOfBounds\n\n\t\t\tdone:\n\t\t\t\tr.Pos = i\n\t\t\t}\n\t\t}\n\t\t// DONE: tag, err = r.DecodeVarint32()\n\n\t\tfieldNum := protoFieldNumber(tag)\n\t\tif fieldNum < lastProtoFieldNum {\n\t\t\toutOfOrder = true\n\t\t}\n\n\t\t// Skip the current value -- will skip over an entire group as well.\n\t\t// INLINED: err = r.SkipValue(tag)\n\t\twireType := tag & 0x7\n\t\tswitch protowire.Type(wireType) {\n\t\tcase protowire.VarintType:\n\t\t\t// INLINED: err = r.SkipVarint()\n\t\t\ti := r.Pos\n\n\t\t\tif len(r.Buf)-i < 10 {\n\t\t\t\t// Use DecodeVarintSlow() to skip while\n\t\t\t\t// checking for buffer overflow, but ignore result\n\t\t\t\t_, err = r.DecodeVarintSlow()\n\t\t\t\tgoto out2\n\t\t\t}\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\treturn nil, errOverflow\n\t\tout:\n\t\t\tr.Pos = i + 1\n\t\t\t// DONE: err = r.SkipVarint()\n\t\tcase protowire.Fixed64Type:\n\t\t\terr = r.SkipFixed64()\n\t\tcase protowire.BytesType:\n\t\t\tvar n uint32\n\t\t\tn, err = r.DecodeVarint32()\n\t\t\tif err == nil {\n\t\t\t\terr = r.Skip(int(n))\n\t\t\t}\n\t\tcase protowire.StartGroupType:\n\t\t\terr = r.SkipGroup(tag)\n\t\tcase protowire.Fixed32Type:\n\t\t\terr = r.SkipFixed32()\n\t\tdefault:\n\t\t\terr = fmt.Errorf(\"Unexpected wire type (%d)\", wireType)\n\t\t}\n\t\t// DONE: err = r.SkipValue(tag)\n\n\tout2:\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif fieldNum != lastProtoFieldNum {\n\t\t\tindex = append(index, IndexEntry{FieldNum: fieldNum,\n\t\t\t\tStart: uint32(curPos),\n\t\t\t\tEnd:   uint32(r.Pos)},\n\t\t\t)\n\t\t} else {\n\t\t\tindex[len(index)-1].End = uint32(r.Pos)\n\t\t\tindex[len(index)-1].MultipleContiguous = true\n\t\t}\n\t\tlastProtoFieldNum = fieldNum\n\t}\n\tif outOfOrder {\n\t\tsort.Slice(index, func(i, j int) bool {\n\t\t\treturn index[i].FieldNum < index[j].FieldNum ||\n\t\t\t\t(index[i].FieldNum == index[j].FieldNum &&\n\t\t\t\t\tindex[i].Start < index[j].Start)\n\t\t})\n\t}\n\treturn index, nil\n}\n\nfunc (lazy *XXX_lazyUnmarshalInfo) SizeField(num uint32) (size int) {\n\tstart, end, found, _, multipleEntries := lazy.FindFieldInProto(num)\n\tif multipleEntries != nil {\n\t\tfor _, entry := range multipleEntries {\n\t\t\tsize += int(entry.End - entry.Start)\n\t\t}\n\t\treturn size\n\t}\n\tif !found {\n\t\treturn 0\n\t}\n\treturn int(end - start)\n}\n\nfunc (lazy *XXX_lazyUnmarshalInfo) AppendField(b []byte, num uint32) ([]byte, bool) {\n\tstart, end, found, _, multipleEntries := lazy.FindFieldInProto(num)\n\tif multipleEntries != nil {\n\t\tfor _, entry := range multipleEntries {\n\t\t\tb = append(b, lazy.Protobuf[entry.Start:entry.End]...)\n\t\t}\n\t\treturn b, true\n\t}\n\tif !found {\n\t\treturn nil, false\n\t}\n\tb = append(b, lazy.Protobuf[start:end]...)\n\treturn b, true\n}\n\nfunc (lazy *XXX_lazyUnmarshalInfo) SetIndex(index []IndexEntry) {\n\tatomicStoreIndex(&lazy.index, &index)\n}\n\n// FindFieldInProto looks for field fieldNum in lazyUnmarshalInfo information\n// (including protobuf), returns startOffset/endOffset/found.\nfunc (lazy *XXX_lazyUnmarshalInfo) FindFieldInProto(fieldNum uint32) (start, end uint32, found, multipleContiguous bool, multipleEntries []IndexEntry) {\n\tif lazy.Protobuf == nil {\n\t\t// There is no backing protobuf for this message -- it was made from a builder\n\t\treturn 0, 0, false, false, nil\n\t}\n\tindex := atomicLoadIndex(&lazy.index)\n\tif index == nil {\n\t\tr, err := buildIndex(lazy.Protobuf)\n\t\tif err != nil {\n\t\t\tpanic(fmt.Sprintf(\"findFieldInfo: error building index when looking for field %d: %v\", fieldNum, err))\n\t\t}\n\t\t// lazy.index is a pointer to the slice returned by BuildIndex\n\t\tindex = &r\n\t\tatomicStoreIndex(&lazy.index, index)\n\t}\n\treturn lookupField(index, fieldNum)\n}\n\n// lookupField returns the offset at which the indicated field starts using\n// the index, offset immediately after field ends (including all instances of\n// a repeated field), and bools indicating if field was found and if there\n// are multiple encodings of the field in the byte range.\n//\n// To hande the uncommon case where there are repeated encodings for the same\n// field which are not consecutive in the protobuf (so we need to returns\n// multiple start/end offsets), we also return a slice multipleEntries.  If\n// multipleEntries is non-nil, then multiple entries were found, and the\n// values in the slice should be used, rather than start/end/found.\nfunc lookupField(indexp *[]IndexEntry, fieldNum uint32) (start, end uint32, found bool, multipleContiguous bool, multipleEntries []IndexEntry) {\n\t// The pointer indexp to the index was already loaded atomically.\n\t// The slice is uniquely associated with the pointer, so it doesn't\n\t// need to be loaded atomically.\n\tindex := *indexp\n\tfor i, entry := range index {\n\t\tif fieldNum == entry.FieldNum {\n\t\t\tif i < len(index)-1 && entry.FieldNum == index[i+1].FieldNum {\n\t\t\t\t// Handle the uncommon case where there are\n\t\t\t\t// repeated entries for the same field which\n\t\t\t\t// are not contiguous in the protobuf.\n\t\t\t\tmultiple := make([]IndexEntry, 1, 2)\n\t\t\t\tmultiple[0] = IndexEntry{fieldNum, entry.Start, entry.End, entry.MultipleContiguous}\n\t\t\t\ti++\n\t\t\t\tfor i < len(index) && index[i].FieldNum == fieldNum {\n\t\t\t\t\tmultiple = append(multiple, IndexEntry{fieldNum, index[i].Start, index[i].End, index[i].MultipleContiguous})\n\t\t\t\t\ti++\n\t\t\t\t}\n\t\t\t\treturn 0, 0, false, false, multiple\n\n\t\t\t}\n\t\t\treturn entry.Start, entry.End, true, entry.MultipleContiguous, nil\n\t\t}\n\t\tif fieldNum < entry.FieldNum {\n\t\t\treturn 0, 0, false, false, nil\n\t\t}\n\t}\n\treturn 0, 0, false, false, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/protolazy/pointer_unsafe.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protolazy\n\nimport (\n\t\"sync/atomic\"\n\t\"unsafe\"\n)\n\nfunc atomicLoadIndex(p **[]IndexEntry) *[]IndexEntry {\n\treturn (*[]IndexEntry)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))\n}\nfunc atomicStoreIndex(p **[]IndexEntry, v *[]IndexEntry) {\n\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/set/ints.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package set provides simple set data structures for uint64s.\npackage set\n\nimport \"math/bits\"\n\n// int64s represents a set of integers within the range of 0..63.\ntype int64s uint64\n\nfunc (bs *int64s) Len() int {\n\treturn bits.OnesCount64(uint64(*bs))\n}\nfunc (bs *int64s) Has(n uint64) bool {\n\treturn uint64(*bs)&(uint64(1)<<n) > 0\n}\nfunc (bs *int64s) Set(n uint64) {\n\t*(*uint64)(bs) |= uint64(1) << n\n}\nfunc (bs *int64s) Clear(n uint64) {\n\t*(*uint64)(bs) &^= uint64(1) << n\n}\n\n// Ints represents a set of integers within the range of 0..math.MaxUint64.\ntype Ints struct {\n\tlo int64s\n\thi map[uint64]struct{}\n}\n\nfunc (bs *Ints) Len() int {\n\treturn bs.lo.Len() + len(bs.hi)\n}\nfunc (bs *Ints) Has(n uint64) bool {\n\tif n < 64 {\n\t\treturn bs.lo.Has(n)\n\t}\n\t_, ok := bs.hi[n]\n\treturn ok\n}\nfunc (bs *Ints) Set(n uint64) {\n\tif n < 64 {\n\t\tbs.lo.Set(n)\n\t\treturn\n\t}\n\tif bs.hi == nil {\n\t\tbs.hi = make(map[uint64]struct{})\n\t}\n\tbs.hi[n] = struct{}{}\n}\nfunc (bs *Ints) Clear(n uint64) {\n\tif n < 64 {\n\t\tbs.lo.Clear(n)\n\t\treturn\n\t}\n\tdelete(bs.hi, n)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/strs/strings.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package strs provides string manipulation functionality specific to protobuf.\npackage strs\n\nimport (\n\t\"go/token\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// EnforceUTF8 reports whether to enforce strict UTF-8 validation.\nfunc EnforceUTF8(fd protoreflect.FieldDescriptor) bool {\n\tif flags.ProtoLegacy || fd.Syntax() == protoreflect.Editions {\n\t\tif fd, ok := fd.(interface{ EnforceUTF8() bool }); ok {\n\t\t\treturn fd.EnforceUTF8()\n\t\t}\n\t}\n\treturn fd.Syntax() == protoreflect.Proto3\n}\n\n// GoCamelCase camel-cases a protobuf name for use as a Go identifier.\n//\n// If there is an interior underscore followed by a lower case letter,\n// drop the underscore and convert the letter to upper case.\nfunc GoCamelCase(s string) string {\n\t// Invariant: if the next letter is lower case, it must be converted\n\t// to upper case.\n\t// That is, we process a word at a time, where words are marked by _ or\n\t// upper case letter. Digits are treated as words.\n\tvar b []byte\n\tfor i := 0; i < len(s); i++ {\n\t\tc := s[i]\n\t\tswitch {\n\t\tcase c == '.' && i+1 < len(s) && isASCIILower(s[i+1]):\n\t\t\t// Skip over '.' in \".{{lowercase}}\".\n\t\tcase c == '.':\n\t\t\tb = append(b, '_') // convert '.' to '_'\n\t\tcase c == '_' && (i == 0 || s[i-1] == '.'):\n\t\t\t// Convert initial '_' to ensure we start with a capital letter.\n\t\t\t// Do the same for '_' after '.' to match historic behavior.\n\t\t\tb = append(b, 'X') // convert '_' to 'X'\n\t\tcase c == '_' && i+1 < len(s) && isASCIILower(s[i+1]):\n\t\t\t// Skip over '_' in \"_{{lowercase}}\".\n\t\tcase isASCIIDigit(c):\n\t\t\tb = append(b, c)\n\t\tdefault:\n\t\t\t// Assume we have a letter now - if not, it's a bogus identifier.\n\t\t\t// The next word is a sequence of characters that must start upper case.\n\t\t\tif isASCIILower(c) {\n\t\t\t\tc -= 'a' - 'A' // convert lowercase to uppercase\n\t\t\t}\n\t\t\tb = append(b, c)\n\n\t\t\t// Accept lower case sequence that follows.\n\t\t\tfor ; i+1 < len(s) && isASCIILower(s[i+1]); i++ {\n\t\t\t\tb = append(b, s[i+1])\n\t\t\t}\n\t\t}\n\t}\n\treturn string(b)\n}\n\n// GoSanitized converts a string to a valid Go identifier.\nfunc GoSanitized(s string) string {\n\t// Sanitize the input to the set of valid characters,\n\t// which must be '_' or be in the Unicode L or N categories.\n\ts = strings.Map(func(r rune) rune {\n\t\tif unicode.IsLetter(r) || unicode.IsDigit(r) {\n\t\t\treturn r\n\t\t}\n\t\treturn '_'\n\t}, s)\n\n\t// Prepend '_' in the event of a Go keyword conflict or if\n\t// the identifier is invalid (does not start in the Unicode L category).\n\tr, _ := utf8.DecodeRuneInString(s)\n\tif token.Lookup(s).IsKeyword() || !unicode.IsLetter(r) {\n\t\treturn \"_\" + s\n\t}\n\treturn s\n}\n\n// JSONCamelCase converts a snake_case identifier to a camelCase identifier,\n// according to the protobuf JSON specification.\nfunc JSONCamelCase(s string) string {\n\tvar b []byte\n\tvar wasUnderscore bool\n\tfor i := 0; i < len(s); i++ { // proto identifiers are always ASCII\n\t\tc := s[i]\n\t\tif c != '_' {\n\t\t\tif wasUnderscore && isASCIILower(c) {\n\t\t\t\tc -= 'a' - 'A' // convert to uppercase\n\t\t\t}\n\t\t\tb = append(b, c)\n\t\t}\n\t\twasUnderscore = c == '_'\n\t}\n\treturn string(b)\n}\n\n// JSONSnakeCase converts a camelCase identifier to a snake_case identifier,\n// according to the protobuf JSON specification.\nfunc JSONSnakeCase(s string) string {\n\tvar b []byte\n\tfor i := 0; i < len(s); i++ { // proto identifiers are always ASCII\n\t\tc := s[i]\n\t\tif isASCIIUpper(c) {\n\t\t\tb = append(b, '_')\n\t\t\tc += 'a' - 'A' // convert to lowercase\n\t\t}\n\t\tb = append(b, c)\n\t}\n\treturn string(b)\n}\n\n// MapEntryName derives the name of the map entry message given the field name.\n// See protoc v3.8.0: src/google/protobuf/descriptor.cc:254-276,6057\nfunc MapEntryName(s string) string {\n\tvar b []byte\n\tupperNext := true\n\tfor _, c := range s {\n\t\tswitch {\n\t\tcase c == '_':\n\t\t\tupperNext = true\n\t\tcase upperNext:\n\t\t\tb = append(b, byte(unicode.ToUpper(c)))\n\t\t\tupperNext = false\n\t\tdefault:\n\t\t\tb = append(b, byte(c))\n\t\t}\n\t}\n\tb = append(b, \"Entry\"...)\n\treturn string(b)\n}\n\n// EnumValueName derives the camel-cased enum value name.\n// See protoc v3.8.0: src/google/protobuf/descriptor.cc:297-313\nfunc EnumValueName(s string) string {\n\tvar b []byte\n\tupperNext := true\n\tfor _, c := range s {\n\t\tswitch {\n\t\tcase c == '_':\n\t\t\tupperNext = true\n\t\tcase upperNext:\n\t\t\tb = append(b, byte(unicode.ToUpper(c)))\n\t\t\tupperNext = false\n\t\tdefault:\n\t\t\tb = append(b, byte(unicode.ToLower(c)))\n\t\t\tupperNext = false\n\t\t}\n\t}\n\treturn string(b)\n}\n\n// TrimEnumPrefix trims the enum name prefix from an enum value name,\n// where the prefix is all lowercase without underscores.\n// See protoc v3.8.0: src/google/protobuf/descriptor.cc:330-375\nfunc TrimEnumPrefix(s, prefix string) string {\n\ts0 := s // original input\n\tfor len(s) > 0 && len(prefix) > 0 {\n\t\tif s[0] == '_' {\n\t\t\ts = s[1:]\n\t\t\tcontinue\n\t\t}\n\t\tif unicode.ToLower(rune(s[0])) != rune(prefix[0]) {\n\t\t\treturn s0 // no prefix match\n\t\t}\n\t\ts, prefix = s[1:], prefix[1:]\n\t}\n\tif len(prefix) > 0 {\n\t\treturn s0 // no prefix match\n\t}\n\ts = strings.TrimLeft(s, \"_\")\n\tif len(s) == 0 {\n\t\treturn s0 // avoid returning empty string\n\t}\n\treturn s\n}\n\nfunc isASCIILower(c byte) bool {\n\treturn 'a' <= c && c <= 'z'\n}\nfunc isASCIIUpper(c byte) bool {\n\treturn 'A' <= c && c <= 'Z'\n}\nfunc isASCIIDigit(c byte) bool {\n\treturn '0' <= c && c <= '9'\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage strs\n\nimport (\n\t\"unsafe\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// UnsafeString returns an unsafe string reference of b.\n// The caller must treat the input slice as immutable.\n//\n// WARNING: Use carefully. The returned result must not leak to the end user\n// unless the input slice is provably immutable.\nfunc UnsafeString(b []byte) string {\n\treturn unsafe.String(unsafe.SliceData(b), len(b))\n}\n\n// UnsafeBytes returns an unsafe bytes slice reference of s.\n// The caller must treat returned slice as immutable.\n//\n// WARNING: Use carefully. The returned result must not leak to the end user.\nfunc UnsafeBytes(s string) []byte {\n\treturn unsafe.Slice(unsafe.StringData(s), len(s))\n}\n\n// Builder builds a set of strings with shared lifetime.\n// This differs from strings.Builder, which is for building a single string.\ntype Builder struct {\n\tbuf []byte\n}\n\n// AppendFullName is equivalent to protoreflect.FullName.Append,\n// but optimized for large batches where each name has a shared lifetime.\nfunc (sb *Builder) AppendFullName(prefix protoreflect.FullName, name protoreflect.Name) protoreflect.FullName {\n\tn := len(prefix) + len(\".\") + len(name)\n\tif len(prefix) == 0 {\n\t\tn -= len(\".\")\n\t}\n\tsb.grow(n)\n\tsb.buf = append(sb.buf, prefix...)\n\tsb.buf = append(sb.buf, '.')\n\tsb.buf = append(sb.buf, name...)\n\treturn protoreflect.FullName(sb.last(n))\n}\n\n// MakeString is equivalent to string(b), but optimized for large batches\n// with a shared lifetime.\nfunc (sb *Builder) MakeString(b []byte) string {\n\tsb.grow(len(b))\n\tsb.buf = append(sb.buf, b...)\n\treturn sb.last(len(b))\n}\n\nfunc (sb *Builder) grow(n int) {\n\tif cap(sb.buf)-len(sb.buf) >= n {\n\t\treturn\n\t}\n\n\t// Unlike strings.Builder, we do not need to copy over the contents\n\t// of the old buffer since our builder provides no API for\n\t// retrieving previously created strings.\n\tsb.buf = make([]byte, 0, 2*(cap(sb.buf)+n))\n}\n\nfunc (sb *Builder) last(n int) string {\n\treturn UnsafeString(sb.buf[len(sb.buf)-n:])\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/version/version.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package version records versioning information about this module.\npackage version\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// These constants determine the current version of this module.\n//\n// For our release process, we enforce the following rules:\n//   - Tagged releases use a tag that is identical to String.\n//   - Tagged releases never reference a commit where the String\n//     contains \"devel\".\n//   - The set of all commits in this repository where String\n//     does not contain \"devel\" must have a unique String.\n//\n// Steps for tagging a new release:\n//\n//  1. Create a new CL.\n//\n//  2. Update Minor, Patch, and/or PreRelease as necessary.\n//     PreRelease must not contain the string \"devel\".\n//\n//  3. Since the last released minor version, have there been any changes to\n//     generator that relies on new functionality in the runtime?\n//     If yes, then increment RequiredGenerated.\n//\n//  4. Since the last released minor version, have there been any changes to\n//     the runtime that removes support for old .pb.go source code?\n//     If yes, then increment SupportMinimum.\n//\n//  5. Send out the CL for review and submit it.\n//     Note that the next CL in step 8 must be submitted after this CL\n//     without any other CLs in-between.\n//\n//  6. Tag a new version, where the tag is is the current String.\n//\n//  7. Write release notes for all notable changes\n//     between this release and the last release.\n//\n//  8. Create a new CL.\n//\n//  9. Update PreRelease to include the string \"devel\".\n//     For example: \"\" -> \"devel\" or \"rc.1\" -> \"rc.1.devel\"\n//\n//  10. Send out the CL for review and submit it.\nconst (\n\tMajor      = 1\n\tMinor      = 36\n\tPatch      = 11\n\tPreRelease = \"\"\n)\n\n// String formats the version string for this module in semver format.\n//\n// Examples:\n//\n//\tv1.20.1\n//\tv1.21.0-rc.1\nfunc String() string {\n\tv := fmt.Sprintf(\"v%d.%d.%d\", Major, Minor, Patch)\n\tif PreRelease != \"\" {\n\t\tv += \"-\" + PreRelease\n\n\t\t// TODO: Add metadata about the commit or build hash.\n\t\t// See https://golang.org/issue/29814\n\t\t// See https://golang.org/issue/33533\n\t\tvar metadata string\n\t\tif strings.Contains(PreRelease, \"devel\") && metadata != \"\" {\n\t\t\tv += \"+\" + metadata\n\t\t}\n\t}\n\treturn v\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/checkinit.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// CheckInitialized returns an error if any required fields in m are not set.\nfunc CheckInitialized(m Message) error {\n\t// Treat a nil message interface as an \"untyped\" empty message,\n\t// which we assume to have no required fields.\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\treturn checkInitialized(m.ProtoReflect())\n}\n\n// CheckInitialized returns an error if any required fields in m are not set.\nfunc checkInitialized(m protoreflect.Message) error {\n\tif methods := protoMethods(m); methods != nil && methods.CheckInitialized != nil {\n\t\t_, err := methods.CheckInitialized(protoiface.CheckInitializedInput{\n\t\t\tMessage: m,\n\t\t})\n\t\treturn err\n\t}\n\treturn checkInitializedSlow(m)\n}\n\nfunc checkInitializedSlow(m protoreflect.Message) error {\n\tmd := m.Descriptor()\n\tfds := md.Fields()\n\tfor i, nums := 0, md.RequiredNumbers(); i < nums.Len(); i++ {\n\t\tfd := fds.ByNumber(nums.Get(i))\n\t\tif !m.Has(fd) {\n\t\t\treturn errors.RequiredNotSet(string(fd.FullName()))\n\t\t}\n\t}\n\tvar err error\n\tm.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tswitch {\n\t\tcase fd.IsList():\n\t\t\tif fd.Message() == nil {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tfor i, list := 0, v.List(); i < list.Len() && err == nil; i++ {\n\t\t\t\terr = checkInitialized(list.Get(i).Message())\n\t\t\t}\n\t\tcase fd.IsMap():\n\t\t\tif fd.MapValue().Message() == nil {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tv.Map().Range(func(key protoreflect.MapKey, v protoreflect.Value) bool {\n\t\t\t\terr = checkInitialized(v.Message())\n\t\t\t\treturn err == nil\n\t\t\t})\n\t\tdefault:\n\t\t\tif fd.Message() == nil {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\terr = checkInitialized(v.Message())\n\t\t}\n\t\treturn err == nil\n\t})\n\treturn err\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/decode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// UnmarshalOptions configures the unmarshaler.\n//\n// Example usage:\n//\n//\terr := UnmarshalOptions{DiscardUnknown: true}.Unmarshal(b, m)\ntype UnmarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// Merge merges the input into the destination message.\n\t// The default behavior is to always reset the message before unmarshaling,\n\t// unless Merge is specified.\n\tMerge bool\n\n\t// AllowPartial accepts input for messages that will result in missing\n\t// required fields. If AllowPartial is false (the default), Unmarshal will\n\t// return an error if there are any missing required fields.\n\tAllowPartial bool\n\n\t// If DiscardUnknown is set, unknown fields are ignored.\n\tDiscardUnknown bool\n\n\t// Resolver is used for looking up types when unmarshaling extension fields.\n\t// If nil, this defaults to using protoregistry.GlobalTypes.\n\tResolver interface {\n\t\tFindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)\n\t\tFindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)\n\t}\n\n\t// RecursionLimit limits how deeply messages may be nested.\n\t// If zero, a default limit is applied.\n\tRecursionLimit int\n\n\t//\n\t// NoLazyDecoding turns off lazy decoding, which otherwise is enabled by\n\t// default. Lazy decoding only affects submessages (annotated with [lazy =\n\t// true] in the .proto file) within messages that use the Opaque API.\n\tNoLazyDecoding bool\n}\n\n// Unmarshal parses the wire-format message in b and places the result in m.\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\n//\n// See the [UnmarshalOptions] type if you need more control.\nfunc Unmarshal(b []byte, m Message) error {\n\t_, err := UnmarshalOptions{RecursionLimit: protowire.DefaultRecursionLimit}.unmarshal(b, m.ProtoReflect())\n\treturn err\n}\n\n// Unmarshal parses the wire-format message in b and places the result in m.\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\nfunc (o UnmarshalOptions) Unmarshal(b []byte, m Message) error {\n\tif o.RecursionLimit == 0 {\n\t\to.RecursionLimit = protowire.DefaultRecursionLimit\n\t}\n\t_, err := o.unmarshal(b, m.ProtoReflect())\n\treturn err\n}\n\n// UnmarshalState parses a wire-format message and places the result in m.\n//\n// This method permits fine-grained control over the unmarshaler.\n// Most users should use [Unmarshal] instead.\nfunc (o UnmarshalOptions) UnmarshalState(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\tif o.RecursionLimit == 0 {\n\t\to.RecursionLimit = protowire.DefaultRecursionLimit\n\t}\n\treturn o.unmarshal(in.Buf, in.Message)\n}\n\n// unmarshal is a centralized function that all unmarshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for unmarshal that do not go through this.\nfunc (o UnmarshalOptions) unmarshal(b []byte, m protoreflect.Message) (out protoiface.UnmarshalOutput, err error) {\n\tif o.Resolver == nil {\n\t\to.Resolver = protoregistry.GlobalTypes\n\t}\n\tif !o.Merge {\n\t\tReset(m.Interface())\n\t}\n\tallowPartial := o.AllowPartial\n\to.Merge = true\n\to.AllowPartial = true\n\tmethods := protoMethods(m)\n\tif methods != nil && methods.Unmarshal != nil &&\n\t\t!(o.DiscardUnknown && methods.Flags&protoiface.SupportUnmarshalDiscardUnknown == 0) {\n\t\tin := protoiface.UnmarshalInput{\n\t\t\tMessage:  m,\n\t\t\tBuf:      b,\n\t\t\tResolver: o.Resolver,\n\t\t\tDepth:    o.RecursionLimit,\n\t\t}\n\t\tif o.DiscardUnknown {\n\t\t\tin.Flags |= protoiface.UnmarshalDiscardUnknown\n\t\t}\n\n\t\tif !allowPartial {\n\t\t\t// This does not affect how current unmarshal functions work, it just allows them\n\t\t\t// to record this for lazy the decoding case.\n\t\t\tin.Flags |= protoiface.UnmarshalCheckRequired\n\t\t}\n\t\tif o.NoLazyDecoding {\n\t\t\tin.Flags |= protoiface.UnmarshalNoLazyDecoding\n\t\t}\n\n\t\tout, err = methods.Unmarshal(in)\n\t} else {\n\t\tif o.RecursionLimit--; o.RecursionLimit < 0 {\n\t\t\treturn out, errRecursionDepth\n\t\t}\n\t\terr = o.unmarshalMessageSlow(b, m)\n\t}\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tif allowPartial || (out.Flags&protoiface.UnmarshalInitialized != 0) {\n\t\treturn out, nil\n\t}\n\treturn out, checkInitialized(m)\n}\n\nfunc (o UnmarshalOptions) unmarshalMessage(b []byte, m protoreflect.Message) error {\n\t_, err := o.unmarshal(b, m)\n\treturn err\n}\n\nfunc (o UnmarshalOptions) unmarshalMessageSlow(b []byte, m protoreflect.Message) error {\n\tmd := m.Descriptor()\n\tif messageset.IsMessageSet(md) {\n\t\treturn o.unmarshalMessageSet(b, m)\n\t}\n\tfields := md.Fields()\n\tfor len(b) > 0 {\n\t\t// Parse the tag (field number and wire type).\n\t\tnum, wtyp, tagLen := protowire.ConsumeTag(b)\n\t\tif tagLen < 0 {\n\t\t\treturn errDecode\n\t\t}\n\t\tif num > protowire.MaxValidNumber {\n\t\t\treturn errDecode\n\t\t}\n\n\t\t// Find the field descriptor for this field number.\n\t\tfd := fields.ByNumber(num)\n\t\tif fd == nil && md.ExtensionRanges().Has(num) {\n\t\t\textType, err := o.Resolver.FindExtensionByNumber(md.FullName(), num)\n\t\t\tif err != nil && err != protoregistry.NotFound {\n\t\t\t\treturn errors.New(\"%v: unable to resolve extension %v: %v\", md.FullName(), num, err)\n\t\t\t}\n\t\t\tif extType != nil {\n\t\t\t\tfd = extType.TypeDescriptor()\n\t\t\t}\n\t\t}\n\t\tvar err error\n\t\tif fd == nil {\n\t\t\terr = errUnknown\n\t\t}\n\n\t\t// Parse the field value.\n\t\tvar valLen int\n\t\tswitch {\n\t\tcase err != nil:\n\t\tcase fd.IsList():\n\t\t\tvalLen, err = o.unmarshalList(b[tagLen:], wtyp, m.Mutable(fd).List(), fd)\n\t\tcase fd.IsMap():\n\t\t\tvalLen, err = o.unmarshalMap(b[tagLen:], wtyp, m.Mutable(fd).Map(), fd)\n\t\tdefault:\n\t\t\tvalLen, err = o.unmarshalSingular(b[tagLen:], wtyp, m, fd)\n\t\t}\n\t\tif err != nil {\n\t\t\tif err != errUnknown {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tvalLen = protowire.ConsumeFieldValue(num, wtyp, b[tagLen:])\n\t\t\tif valLen < 0 {\n\t\t\t\treturn errDecode\n\t\t\t}\n\t\t\tif !o.DiscardUnknown {\n\t\t\t\tm.SetUnknown(append(m.GetUnknown(), b[:tagLen+valLen]...))\n\t\t\t}\n\t\t}\n\t\tb = b[tagLen+valLen:]\n\t}\n\treturn nil\n}\n\nfunc (o UnmarshalOptions) unmarshalSingular(b []byte, wtyp protowire.Type, m protoreflect.Message, fd protoreflect.FieldDescriptor) (n int, err error) {\n\tv, n, err := o.unmarshalScalar(b, wtyp, fd)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tswitch fd.Kind() {\n\tcase protoreflect.GroupKind, protoreflect.MessageKind:\n\t\tm2 := m.Mutable(fd).Message()\n\t\tif err := o.unmarshalMessage(v.Bytes(), m2); err != nil {\n\t\t\treturn n, err\n\t\t}\n\tdefault:\n\t\t// Non-message scalars replace the previous value.\n\t\tm.Set(fd, v)\n\t}\n\treturn n, nil\n}\n\nfunc (o UnmarshalOptions) unmarshalMap(b []byte, wtyp protowire.Type, mapv protoreflect.Map, fd protoreflect.FieldDescriptor) (n int, err error) {\n\tif o.RecursionLimit--; o.RecursionLimit < 0 {\n\t\treturn 0, errRecursionDepth\n\t}\n\tif wtyp != protowire.BytesType {\n\t\treturn 0, errUnknown\n\t}\n\tb, n = protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn 0, errDecode\n\t}\n\tvar (\n\t\tkeyField = fd.MapKey()\n\t\tvalField = fd.MapValue()\n\t\tkey      protoreflect.Value\n\t\tval      protoreflect.Value\n\t\thaveKey  bool\n\t\thaveVal  bool\n\t)\n\tswitch valField.Kind() {\n\tcase protoreflect.GroupKind, protoreflect.MessageKind:\n\t\tval = mapv.NewValue()\n\t}\n\t// Map entries are represented as a two-element message with fields\n\t// containing the key and value.\n\tfor len(b) > 0 {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tif num > protowire.MaxValidNumber {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tb = b[n:]\n\t\terr = errUnknown\n\t\tswitch num {\n\t\tcase genid.MapEntry_Key_field_number:\n\t\t\tkey, n, err = o.unmarshalScalar(b, wtyp, keyField)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\thaveKey = true\n\t\tcase genid.MapEntry_Value_field_number:\n\t\t\tvar v protoreflect.Value\n\t\t\tv, n, err = o.unmarshalScalar(b, wtyp, valField)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tswitch valField.Kind() {\n\t\t\tcase protoreflect.GroupKind, protoreflect.MessageKind:\n\t\t\t\tif err := o.unmarshalMessage(v.Bytes(), val.Message()); err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tval = v\n\t\t\t}\n\t\t\thaveVal = true\n\t\t}\n\t\tif err == errUnknown {\n\t\t\tn = protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t} else if err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tb = b[n:]\n\t}\n\t// Every map entry should have entries for key and value, but this is not strictly required.\n\tif !haveKey {\n\t\tkey = keyField.Default()\n\t}\n\tif !haveVal {\n\t\tswitch valField.Kind() {\n\t\tcase protoreflect.GroupKind, protoreflect.MessageKind:\n\t\tdefault:\n\t\t\tval = valField.Default()\n\t\t}\n\t}\n\tmapv.Set(key.MapKey(), val)\n\treturn n, nil\n}\n\n// errUnknown is used internally to indicate fields which should be added\n// to the unknown field set of a message. It is never returned from an exported\n// function.\nvar errUnknown = errors.New(\"BUG: internal error (unknown)\")\n\nvar errDecode = errors.New(\"cannot parse invalid wire-format data\")\n\nvar errRecursionDepth = errors.New(\"exceeded maximum recursion depth\")\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/decode_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage proto\n\nimport (\n\t\"math\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// unmarshalScalar decodes a value of the given kind.\n//\n// Message values are decoded into a []byte which aliases the input data.\nfunc (o UnmarshalOptions) unmarshalScalar(b []byte, wtyp protowire.Type, fd protoreflect.FieldDescriptor) (val protoreflect.Value, n int, err error) {\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfBool(protowire.DecodeBool(v)), n, nil\n\tcase protoreflect.EnumKind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), n, nil\n\tcase protoreflect.Int32Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt32(int32(v)), n, nil\n\tcase protoreflect.Sint32Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))), n, nil\n\tcase protoreflect.Uint32Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfUint32(uint32(v)), n, nil\n\tcase protoreflect.Int64Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt64(int64(v)), n, nil\n\tcase protoreflect.Sint64Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)), n, nil\n\tcase protoreflect.Uint64Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfUint64(v), n, nil\n\tcase protoreflect.Sfixed32Kind:\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt32(int32(v)), n, nil\n\tcase protoreflect.Fixed32Kind:\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfUint32(uint32(v)), n, nil\n\tcase protoreflect.FloatKind:\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), n, nil\n\tcase protoreflect.Sfixed64Kind:\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt64(int64(v)), n, nil\n\tcase protoreflect.Fixed64Kind:\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfUint64(v), n, nil\n\tcase protoreflect.DoubleKind:\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfFloat64(math.Float64frombits(v)), n, nil\n\tcase protoreflect.StringKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\tif strs.EnforceUTF8(fd) && !utf8.Valid(v) {\n\t\t\treturn protoreflect.Value{}, 0, errors.InvalidUTF8(string(fd.FullName()))\n\t\t}\n\t\treturn protoreflect.ValueOfString(string(v)), n, nil\n\tcase protoreflect.BytesKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), n, nil\n\tcase protoreflect.MessageKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfBytes(v), n, nil\n\tcase protoreflect.GroupKind:\n\t\tif wtyp != protowire.StartGroupType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeGroup(fd.Number(), b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfBytes(v), n, nil\n\tdefault:\n\t\treturn val, 0, errUnknown\n\t}\n}\n\nfunc (o UnmarshalOptions) unmarshalList(b []byte, wtyp protowire.Type, list protoreflect.List, fd protoreflect.FieldDescriptor) (n int, err error) {\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))\n\t\treturn n, nil\n\tcase protoreflect.EnumKind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))\n\t\treturn n, nil\n\tcase protoreflect.Int32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\treturn n, nil\n\tcase protoreflect.Sint32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))\n\t\treturn n, nil\n\tcase protoreflect.Uint32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\treturn n, nil\n\tcase protoreflect.Int64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\treturn n, nil\n\tcase protoreflect.Sint64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))\n\t\treturn n, nil\n\tcase protoreflect.Uint64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\treturn n, nil\n\tcase protoreflect.Sfixed32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed32(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\treturn n, nil\n\tcase protoreflect.Fixed32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed32(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\treturn n, nil\n\tcase protoreflect.FloatKind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed32(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))\n\t\treturn n, nil\n\tcase protoreflect.Sfixed64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed64(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\treturn n, nil\n\tcase protoreflect.Fixed64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed64(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\treturn n, nil\n\tcase protoreflect.DoubleKind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed64(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))\n\t\treturn n, nil\n\tcase protoreflect.StringKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tif strs.EnforceUTF8(fd) && !utf8.Valid(v) {\n\t\t\treturn 0, errors.InvalidUTF8(string(fd.FullName()))\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfString(string(v)))\n\t\treturn n, nil\n\tcase protoreflect.BytesKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...)))\n\t\treturn n, nil\n\tcase protoreflect.MessageKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tm := list.NewElement()\n\t\tif err := o.unmarshalMessage(v, m.Message()); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tlist.Append(m)\n\t\treturn n, nil\n\tcase protoreflect.GroupKind:\n\t\tif wtyp != protowire.StartGroupType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeGroup(fd.Number(), b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tm := list.NewElement()\n\t\tif err := o.unmarshalMessage(v, m.Message()); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tlist.Append(m)\n\t\treturn n, nil\n\tdefault:\n\t\treturn 0, errUnknown\n\t}\n}\n\n// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices.\nvar emptyBuf [0]byte\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/doc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package proto provides functions operating on protocol buffer messages.\n//\n// For documentation on protocol buffers in general, see:\n// https://protobuf.dev.\n//\n// For a tutorial on using protocol buffers with Go, see:\n// https://protobuf.dev/getting-started/gotutorial.\n//\n// For a guide to generated Go protocol buffer code, see:\n// https://protobuf.dev/reference/go/go-generated.\n//\n// # Binary serialization\n//\n// This package contains functions to convert to and from the wire format,\n// an efficient binary serialization of protocol buffers.\n//\n//   - [Size] reports the size of a message in the wire format.\n//\n//   - [Marshal] converts a message to the wire format.\n//     The [MarshalOptions] type provides more control over wire marshaling.\n//\n//   - [Unmarshal] converts a message from the wire format.\n//     The [UnmarshalOptions] type provides more control over wire unmarshaling.\n//\n// # Basic message operations\n//\n//   - [Clone] makes a deep copy of a message.\n//\n//   - [Merge] merges the content of a message into another.\n//\n//   - [Equal] compares two messages. For more control over comparisons\n//     and detailed reporting of differences, see package\n//     [google.golang.org/protobuf/testing/protocmp].\n//\n//   - [Reset] clears the content of a message.\n//\n//   - [CheckInitialized] reports whether all required fields in a message are set.\n//\n// # Optional scalar constructors\n//\n// The API for some generated messages represents optional scalar fields\n// as pointers to a value. For example, an optional string field has the\n// Go type *string.\n//\n//   - [Bool], [Int32], [Int64], [Uint32], [Uint64], [Float32], [Float64], and [String]\n//     take a value and return a pointer to a new instance of it,\n//     to simplify construction of optional field values.\n//\n// Generated enum types usually have an Enum method which performs the\n// same operation.\n//\n// Optional scalar fields are only supported in proto2.\n//\n// # Extension accessors\n//\n//   - [HasExtension], [GetExtension], [SetExtension], and [ClearExtension]\n//     access extension field values in a protocol buffer message.\n//\n// Extension fields are only supported in proto2.\n//\n// # Related packages\n//\n//   - Package [google.golang.org/protobuf/encoding/protojson] converts messages to\n//     and from JSON.\n//\n//   - Package [google.golang.org/protobuf/encoding/prototext] converts messages to\n//     and from the text format.\n//\n//   - Package [google.golang.org/protobuf/reflect/protoreflect] provides a\n//     reflection interface for protocol buffer data types.\n//\n//   - Package [google.golang.org/protobuf/testing/protocmp] provides features\n//     to compare protocol buffer messages with the [github.com/google/go-cmp/cmp]\n//     package.\n//\n//   - Package [google.golang.org/protobuf/types/dynamicpb] provides a dynamic\n//     message type, suitable for working with messages where the protocol buffer\n//     type is only known at runtime.\n//\n// This module contains additional packages for more specialized use cases.\n// Consult the individual package documentation for details.\npackage proto\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/encode.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n\n\tprotoerrors \"google.golang.org/protobuf/internal/errors\"\n)\n\n// MarshalOptions configures the marshaler.\n//\n// Example usage:\n//\n//\tb, err := MarshalOptions{Deterministic: true}.Marshal(m)\ntype MarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// AllowPartial allows messages that have missing required fields to marshal\n\t// without returning an error. If AllowPartial is false (the default),\n\t// Marshal will return an error if there are any missing required fields.\n\tAllowPartial bool\n\n\t// Deterministic controls whether the same message will always be\n\t// serialized to the same bytes within the same binary.\n\t//\n\t// Setting this option guarantees that repeated serialization of\n\t// the same message will return the same bytes, and that different\n\t// processes of the same binary (which may be executing on different\n\t// machines) will serialize equal messages to the same bytes.\n\t// It has no effect on the resulting size of the encoded message compared\n\t// to a non-deterministic marshal.\n\t//\n\t// Note that the deterministic serialization is NOT canonical across\n\t// languages. It is not guaranteed to remain stable over time. It is\n\t// unstable across different builds with schema changes due to unknown\n\t// fields. Users who need canonical serialization (e.g., persistent\n\t// storage in a canonical form, fingerprinting, etc.) must define\n\t// their own canonicalization specification and implement their own\n\t// serializer rather than relying on this API.\n\t//\n\t// If deterministic serialization is requested, map entries will be\n\t// sorted by keys in lexographical order. This is an implementation\n\t// detail and subject to change.\n\tDeterministic bool\n\n\t// UseCachedSize indicates that the result of a previous Size call\n\t// may be reused.\n\t//\n\t// Setting this option asserts that:\n\t//\n\t// 1. Size has previously been called on this message with identical\n\t// options (except for UseCachedSize itself).\n\t//\n\t// 2. The message and all its submessages have not changed in any\n\t// way since the Size call. For lazily decoded messages, accessing\n\t// a message results in decoding the message, which is a change.\n\t//\n\t// If either of these invariants is violated,\n\t// the results are undefined and may include panics or corrupted output.\n\t//\n\t// Implementations MAY take this option into account to provide\n\t// better performance, but there is no guarantee that they will do so.\n\t// There is absolutely no guarantee that Size followed by Marshal with\n\t// UseCachedSize set will perform equivalently to Marshal alone.\n\tUseCachedSize bool\n}\n\n// flags turns the specified MarshalOptions (user-facing) into\n// protoiface.MarshalInputFlags (used internally by the marshaler).\n//\n// See impl.marshalOptions.Options for the inverse operation.\nfunc (o MarshalOptions) flags() protoiface.MarshalInputFlags {\n\tvar flags protoiface.MarshalInputFlags\n\n\t// Note: o.AllowPartial is always forced to true by MarshalOptions.marshal,\n\t// which is why it is not a part of MarshalInputFlags.\n\n\tif o.Deterministic {\n\t\tflags |= protoiface.MarshalDeterministic\n\t}\n\n\tif o.UseCachedSize {\n\t\tflags |= protoiface.MarshalUseCachedSize\n\t}\n\n\treturn flags\n}\n\n// Marshal returns the wire-format encoding of m.\n//\n// This is the most common entry point for encoding a Protobuf message.\n//\n// See the [MarshalOptions] type if you need more control.\nfunc Marshal(m Message) ([]byte, error) {\n\t// Treat nil message interface as an empty message; nothing to output.\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\n\tout, err := MarshalOptions{}.marshal(nil, m.ProtoReflect())\n\tif len(out.Buf) == 0 && err == nil {\n\t\tout.Buf = emptyBytesForMessage(m)\n\t}\n\treturn out.Buf, err\n}\n\n// Marshal returns the wire-format encoding of m.\nfunc (o MarshalOptions) Marshal(m Message) ([]byte, error) {\n\t// Treat nil message interface as an empty message; nothing to output.\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\n\tout, err := o.marshal(nil, m.ProtoReflect())\n\tif len(out.Buf) == 0 && err == nil {\n\t\tout.Buf = emptyBytesForMessage(m)\n\t}\n\treturn out.Buf, err\n}\n\n// emptyBytesForMessage returns a nil buffer if and only if m is invalid,\n// otherwise it returns a non-nil empty buffer.\n//\n// This is to assist the edge-case where user-code does the following:\n//\n//\tm1.OptionalBytes, _ = proto.Marshal(m2)\n//\n// where they expect the proto2 \"optional_bytes\" field to be populated\n// if any only if m2 is a valid message.\nfunc emptyBytesForMessage(m Message) []byte {\n\tif m == nil || !m.ProtoReflect().IsValid() {\n\t\treturn nil\n\t}\n\treturn emptyBuf[:]\n}\n\n// MarshalAppend appends the wire-format encoding of m to b,\n// returning the result.\n//\n// This is a less common entry point than [Marshal], which is only needed if you\n// need to supply your own buffers for performance reasons.\nfunc (o MarshalOptions) MarshalAppend(b []byte, m Message) ([]byte, error) {\n\t// Treat nil message interface as an empty message; nothing to append.\n\tif m == nil {\n\t\treturn b, nil\n\t}\n\n\tout, err := o.marshal(b, m.ProtoReflect())\n\treturn out.Buf, err\n}\n\n// MarshalState returns the wire-format encoding of a message.\n//\n// This method permits fine-grained control over the marshaler.\n// Most users should use [Marshal] instead.\nfunc (o MarshalOptions) MarshalState(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\treturn o.marshal(in.Buf, in.Message)\n}\n\n// marshal is a centralized function that all marshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for marshal that do not go through this.\nfunc (o MarshalOptions) marshal(b []byte, m protoreflect.Message) (out protoiface.MarshalOutput, err error) {\n\tallowPartial := o.AllowPartial\n\to.AllowPartial = true\n\tif methods := protoMethods(m); methods != nil && methods.Marshal != nil &&\n\t\t!(o.Deterministic && methods.Flags&protoiface.SupportMarshalDeterministic == 0) {\n\t\tin := protoiface.MarshalInput{\n\t\t\tMessage: m,\n\t\t\tBuf:     b,\n\t\t\tFlags:   o.flags(),\n\t\t}\n\t\tif methods.Size != nil {\n\t\t\tsout := methods.Size(protoiface.SizeInput{\n\t\t\t\tMessage: m,\n\t\t\t\tFlags:   in.Flags,\n\t\t\t})\n\t\t\tif cap(b) < len(b)+sout.Size {\n\t\t\t\tin.Buf = make([]byte, len(b), growcap(cap(b), len(b)+sout.Size))\n\t\t\t\tcopy(in.Buf, b)\n\t\t\t}\n\t\t\tin.Flags |= protoiface.MarshalUseCachedSize\n\t\t}\n\t\tout, err = methods.Marshal(in)\n\t} else {\n\t\tout.Buf, err = o.marshalMessageSlow(b, m)\n\t}\n\tif err != nil {\n\t\tvar mismatch *protoerrors.SizeMismatchError\n\t\tif errors.As(err, &mismatch) {\n\t\t\treturn out, fmt.Errorf(\"marshaling %s: %v\", string(m.Descriptor().FullName()), err)\n\t\t}\n\t\treturn out, err\n\t}\n\tif allowPartial {\n\t\treturn out, nil\n\t}\n\treturn out, checkInitialized(m)\n}\n\nfunc (o MarshalOptions) marshalMessage(b []byte, m protoreflect.Message) ([]byte, error) {\n\tout, err := o.marshal(b, m)\n\treturn out.Buf, err\n}\n\n// growcap scales up the capacity of a slice.\n//\n// Given a slice with a current capacity of oldcap and a desired\n// capacity of wantcap, growcap returns a new capacity >= wantcap.\n//\n// The algorithm is mostly identical to the one used by append as of Go 1.14.\nfunc growcap(oldcap, wantcap int) (newcap int) {\n\tif wantcap > oldcap*2 {\n\t\tnewcap = wantcap\n\t} else if oldcap < 1024 {\n\t\t// The Go 1.14 runtime takes this case when len(s) < 1024,\n\t\t// not when cap(s) < 1024. The difference doesn't seem\n\t\t// significant here.\n\t\tnewcap = oldcap * 2\n\t} else {\n\t\tnewcap = oldcap\n\t\tfor 0 < newcap && newcap < wantcap {\n\t\t\tnewcap += newcap / 4\n\t\t}\n\t\tif newcap <= 0 {\n\t\t\tnewcap = wantcap\n\t\t}\n\t}\n\treturn newcap\n}\n\nfunc (o MarshalOptions) marshalMessageSlow(b []byte, m protoreflect.Message) ([]byte, error) {\n\tif messageset.IsMessageSet(m.Descriptor()) {\n\t\treturn o.marshalMessageSet(b, m)\n\t}\n\tfieldOrder := order.AnyFieldOrder\n\tif o.Deterministic {\n\t\t// TODO: This should use a more natural ordering like NumberFieldOrder,\n\t\t// but doing so breaks golden tests that make invalid assumption about\n\t\t// output stability of this implementation.\n\t\tfieldOrder = order.LegacyFieldOrder\n\t}\n\tvar err error\n\torder.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tb, err = o.marshalField(b, fd, v)\n\t\treturn err == nil\n\t})\n\tif err != nil {\n\t\treturn b, err\n\t}\n\tb = append(b, m.GetUnknown()...)\n\treturn b, nil\n}\n\nfunc (o MarshalOptions) marshalField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) {\n\tswitch {\n\tcase fd.IsList():\n\t\treturn o.marshalList(b, fd, value.List())\n\tcase fd.IsMap():\n\t\treturn o.marshalMap(b, fd, value.Map())\n\tdefault:\n\t\tb = protowire.AppendTag(b, fd.Number(), wireTypes[fd.Kind()])\n\t\treturn o.marshalSingular(b, fd, value)\n\t}\n}\n\nfunc (o MarshalOptions) marshalList(b []byte, fd protoreflect.FieldDescriptor, list protoreflect.List) ([]byte, error) {\n\tif fd.IsPacked() && list.Len() > 0 {\n\t\tb = protowire.AppendTag(b, fd.Number(), protowire.BytesType)\n\t\tb, pos := appendSpeculativeLength(b)\n\t\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\t\tvar err error\n\t\t\tb, err = o.marshalSingular(b, fd, list.Get(i))\n\t\t\tif err != nil {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t}\n\t\tb = finishSpeculativeLength(b, pos)\n\t\treturn b, nil\n\t}\n\n\tkind := fd.Kind()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tvar err error\n\t\tb = protowire.AppendTag(b, fd.Number(), wireTypes[kind])\n\t\tb, err = o.marshalSingular(b, fd, list.Get(i))\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc (o MarshalOptions) marshalMap(b []byte, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) ([]byte, error) {\n\tkeyf := fd.MapKey()\n\tvalf := fd.MapValue()\n\tkeyOrder := order.AnyKeyOrder\n\tif o.Deterministic {\n\t\tkeyOrder = order.GenericKeyOrder\n\t}\n\tvar err error\n\torder.RangeEntries(mapv, keyOrder, func(key protoreflect.MapKey, value protoreflect.Value) bool {\n\t\tb = protowire.AppendTag(b, fd.Number(), protowire.BytesType)\n\t\tvar pos int\n\t\tb, pos = appendSpeculativeLength(b)\n\n\t\tb, err = o.marshalField(b, keyf, key.Value())\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\tb, err = o.marshalField(b, valf, value)\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\tb = finishSpeculativeLength(b, pos)\n\t\treturn true\n\t})\n\treturn b, err\n}\n\n// When encoding length-prefixed fields, we speculatively set aside some number of bytes\n// for the length, encode the data, and then encode the length (shifting the data if necessary\n// to make room).\nconst speculativeLength = 1\n\nfunc appendSpeculativeLength(b []byte) ([]byte, int) {\n\tpos := len(b)\n\tb = append(b, \"\\x00\\x00\\x00\\x00\"[:speculativeLength]...)\n\treturn b, pos\n}\n\nfunc finishSpeculativeLength(b []byte, pos int) []byte {\n\tmlen := len(b) - pos - speculativeLength\n\tmsiz := protowire.SizeVarint(uint64(mlen))\n\tif msiz != speculativeLength {\n\t\tfor i := 0; i < msiz-speculativeLength; i++ {\n\t\t\tb = append(b, 0)\n\t\t}\n\t\tcopy(b[pos+msiz:], b[pos+speculativeLength:])\n\t\tb = b[:pos+msiz+mlen]\n\t}\n\tprotowire.AppendVarint(b[:pos], uint64(mlen))\n\treturn b\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/encode_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage proto\n\nimport (\n\t\"math\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nvar wireTypes = map[protoreflect.Kind]protowire.Type{\n\tprotoreflect.BoolKind:     protowire.VarintType,\n\tprotoreflect.EnumKind:     protowire.VarintType,\n\tprotoreflect.Int32Kind:    protowire.VarintType,\n\tprotoreflect.Sint32Kind:   protowire.VarintType,\n\tprotoreflect.Uint32Kind:   protowire.VarintType,\n\tprotoreflect.Int64Kind:    protowire.VarintType,\n\tprotoreflect.Sint64Kind:   protowire.VarintType,\n\tprotoreflect.Uint64Kind:   protowire.VarintType,\n\tprotoreflect.Sfixed32Kind: protowire.Fixed32Type,\n\tprotoreflect.Fixed32Kind:  protowire.Fixed32Type,\n\tprotoreflect.FloatKind:    protowire.Fixed32Type,\n\tprotoreflect.Sfixed64Kind: protowire.Fixed64Type,\n\tprotoreflect.Fixed64Kind:  protowire.Fixed64Type,\n\tprotoreflect.DoubleKind:   protowire.Fixed64Type,\n\tprotoreflect.StringKind:   protowire.BytesType,\n\tprotoreflect.BytesKind:    protowire.BytesType,\n\tprotoreflect.MessageKind:  protowire.BytesType,\n\tprotoreflect.GroupKind:    protowire.StartGroupType,\n}\n\nfunc (o MarshalOptions) marshalSingular(b []byte, fd protoreflect.FieldDescriptor, v protoreflect.Value) ([]byte, error) {\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))\n\tcase protoreflect.EnumKind:\n\t\tb = protowire.AppendVarint(b, uint64(v.Enum()))\n\tcase protoreflect.Int32Kind:\n\t\tb = protowire.AppendVarint(b, uint64(int32(v.Int())))\n\tcase protoreflect.Sint32Kind:\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))\n\tcase protoreflect.Uint32Kind:\n\t\tb = protowire.AppendVarint(b, uint64(uint32(v.Uint())))\n\tcase protoreflect.Int64Kind:\n\t\tb = protowire.AppendVarint(b, uint64(v.Int()))\n\tcase protoreflect.Sint64Kind:\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))\n\tcase protoreflect.Uint64Kind:\n\t\tb = protowire.AppendVarint(b, v.Uint())\n\tcase protoreflect.Sfixed32Kind:\n\t\tb = protowire.AppendFixed32(b, uint32(v.Int()))\n\tcase protoreflect.Fixed32Kind:\n\t\tb = protowire.AppendFixed32(b, uint32(v.Uint()))\n\tcase protoreflect.FloatKind:\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))\n\tcase protoreflect.Sfixed64Kind:\n\t\tb = protowire.AppendFixed64(b, uint64(v.Int()))\n\tcase protoreflect.Fixed64Kind:\n\t\tb = protowire.AppendFixed64(b, v.Uint())\n\tcase protoreflect.DoubleKind:\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v.Float()))\n\tcase protoreflect.StringKind:\n\t\tif strs.EnforceUTF8(fd) && !utf8.ValidString(v.String()) {\n\t\t\treturn b, errors.InvalidUTF8(string(fd.FullName()))\n\t\t}\n\t\tb = protowire.AppendString(b, v.String())\n\tcase protoreflect.BytesKind:\n\t\tb = protowire.AppendBytes(b, v.Bytes())\n\tcase protoreflect.MessageKind:\n\t\tvar pos int\n\t\tvar err error\n\t\tb, pos = appendSpeculativeLength(b)\n\t\tb, err = o.marshalMessage(b, v.Message())\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = finishSpeculativeLength(b, pos)\n\tcase protoreflect.GroupKind:\n\t\tvar err error\n\t\tb, err = o.marshalMessage(b, v.Message())\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, protowire.EncodeTag(fd.Number(), protowire.EndGroupType))\n\tdefault:\n\t\treturn b, errors.New(\"invalid kind %v\", fd.Kind())\n\t}\n\treturn b, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/equal.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// Equal reports whether two messages are equal,\n// by recursively comparing the fields of the message.\n//\n//   - Bytes fields are equal if they contain identical bytes.\n//     Empty bytes (regardless of nil-ness) are considered equal.\n//\n//   - Floating-point fields are equal if they contain the same value.\n//     Unlike the == operator, a NaN is equal to another NaN.\n//\n//   - Other scalar fields are equal if they contain the same value.\n//\n//   - Message fields are equal if they have\n//     the same set of populated known and extension field values, and\n//     the same set of unknown fields values.\n//\n//   - Lists are equal if they are the same length and\n//     each corresponding element is equal.\n//\n//   - Maps are equal if they have the same set of keys and\n//     the corresponding value for each key is equal.\n//\n// An invalid message is not equal to a valid message.\n// An invalid message is only equal to another invalid message of the\n// same type. An invalid message often corresponds to a nil pointer\n// of the concrete message type. For example, (*pb.M)(nil) is not equal\n// to &pb.M{}.\n// If two valid messages marshal to the same bytes under deterministic\n// serialization, then Equal is guaranteed to report true.\nfunc Equal(x, y Message) bool {\n\tif x == nil || y == nil {\n\t\treturn x == nil && y == nil\n\t}\n\tif reflect.TypeOf(x).Kind() == reflect.Ptr && x == y {\n\t\t// Avoid an expensive comparison if both inputs are identical pointers.\n\t\treturn true\n\t}\n\tmx := x.ProtoReflect()\n\tmy := y.ProtoReflect()\n\tif mx.IsValid() != my.IsValid() {\n\t\treturn false\n\t}\n\n\t// Only one of the messages needs to implement the fast-path for it to work.\n\tpmx := protoMethods(mx)\n\tpmy := protoMethods(my)\n\tif pmx != nil && pmy != nil && pmx.Equal != nil && pmy.Equal != nil {\n\t\treturn pmx.Equal(protoiface.EqualInput{MessageA: mx, MessageB: my}).Equal\n\t}\n\n\tvx := protoreflect.ValueOfMessage(mx)\n\tvy := protoreflect.ValueOfMessage(my)\n\treturn vx.Equal(vy)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/extension.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// HasExtension reports whether an extension field is populated.\n// It returns false if m is invalid or if xt does not extend m.\nfunc HasExtension(m Message, xt protoreflect.ExtensionType) bool {\n\t// Treat nil message interface or descriptor as an empty message; no populated\n\t// fields.\n\tif m == nil || xt == nil {\n\t\treturn false\n\t}\n\n\t// As a special-case, we reports invalid or mismatching descriptors\n\t// as always not being populated (since they aren't).\n\tmr := m.ProtoReflect()\n\txd := xt.TypeDescriptor()\n\tif mr.Descriptor() != xd.ContainingMessage() {\n\t\treturn false\n\t}\n\n\treturn mr.Has(xd)\n}\n\n// ClearExtension clears an extension field such that subsequent\n// [HasExtension] calls return false.\n// It panics if m is invalid or if xt does not extend m.\nfunc ClearExtension(m Message, xt protoreflect.ExtensionType) {\n\tm.ProtoReflect().Clear(xt.TypeDescriptor())\n}\n\n// GetExtension retrieves the value for an extension field.\n// If the field is unpopulated, it returns the default value for\n// scalars and an immutable, empty value for lists or messages.\n// It panics if xt does not extend m.\n//\n// The type of the value is dependent on the field type of the extension.\n// For extensions generated by protoc-gen-go, the Go type is as follows:\n//\n//\t╔═══════════════════╤═════════════════════════╗\n//\t║ Go type           │ Protobuf kind           ║\n//\t╠═══════════════════╪═════════════════════════╣\n//\t║ bool              │ bool                    ║\n//\t║ int32             │ int32, sint32, sfixed32 ║\n//\t║ int64             │ int64, sint64, sfixed64 ║\n//\t║ uint32            │ uint32, fixed32         ║\n//\t║ uint64            │ uint64, fixed64         ║\n//\t║ float32           │ float                   ║\n//\t║ float64           │ double                  ║\n//\t║ string            │ string                  ║\n//\t║ []byte            │ bytes                   ║\n//\t║ protoreflect.Enum │ enum                    ║\n//\t║ proto.Message     │ message, group          ║\n//\t╚═══════════════════╧═════════════════════════╝\n//\n// The protoreflect.Enum and proto.Message types are the concrete Go type\n// associated with the named enum or message. Repeated fields are represented\n// using a Go slice of the base element type.\n//\n// If a generated extension descriptor variable is directly passed to\n// GetExtension, then the call should be followed immediately by a\n// type assertion to the expected output value. For example:\n//\n//\tmm := proto.GetExtension(m, foopb.E_MyExtension).(*foopb.MyMessage)\n//\n// This pattern enables static analysis tools to verify that the asserted type\n// matches the Go type associated with the extension field and\n// also enables a possible future migration to a type-safe extension API.\n//\n// Since singular messages are the most common extension type, the pattern of\n// calling HasExtension followed by GetExtension may be simplified to:\n//\n//\tif mm := proto.GetExtension(m, foopb.E_MyExtension).(*foopb.MyMessage); mm != nil {\n//\t    ... // make use of mm\n//\t}\n//\n// The mm variable is non-nil if and only if HasExtension reports true.\nfunc GetExtension(m Message, xt protoreflect.ExtensionType) any {\n\t// Treat nil message interface as an empty message; return the default.\n\tif m == nil {\n\t\treturn xt.InterfaceOf(xt.Zero())\n\t}\n\n\treturn xt.InterfaceOf(m.ProtoReflect().Get(xt.TypeDescriptor()))\n}\n\n// SetExtension stores the value of an extension field.\n// It panics if m is invalid, xt does not extend m, or if type of v\n// is invalid for the specified extension field.\n//\n// The type of the value is dependent on the field type of the extension.\n// For extensions generated by protoc-gen-go, the Go type is as follows:\n//\n//\t╔═══════════════════╤═════════════════════════╗\n//\t║ Go type           │ Protobuf kind           ║\n//\t╠═══════════════════╪═════════════════════════╣\n//\t║ bool              │ bool                    ║\n//\t║ int32             │ int32, sint32, sfixed32 ║\n//\t║ int64             │ int64, sint64, sfixed64 ║\n//\t║ uint32            │ uint32, fixed32         ║\n//\t║ uint64            │ uint64, fixed64         ║\n//\t║ float32           │ float                   ║\n//\t║ float64           │ double                  ║\n//\t║ string            │ string                  ║\n//\t║ []byte            │ bytes                   ║\n//\t║ protoreflect.Enum │ enum                    ║\n//\t║ proto.Message     │ message, group          ║\n//\t╚═══════════════════╧═════════════════════════╝\n//\n// The protoreflect.Enum and proto.Message types are the concrete Go type\n// associated with the named enum or message. Repeated fields are represented\n// using a Go slice of the base element type.\n//\n// If a generated extension descriptor variable is directly passed to\n// SetExtension (e.g., foopb.E_MyExtension), then the value should be a\n// concrete type that matches the expected Go type for the extension descriptor\n// so that static analysis tools can verify type correctness.\n// This also enables a possible future migration to a type-safe extension API.\nfunc SetExtension(m Message, xt protoreflect.ExtensionType, v any) {\n\txd := xt.TypeDescriptor()\n\tpv := xt.ValueOf(v)\n\n\t// Specially treat an invalid list, map, or message as clear.\n\tisValid := true\n\tswitch {\n\tcase xd.IsList():\n\t\tisValid = pv.List().IsValid()\n\tcase xd.IsMap():\n\t\tisValid = pv.Map().IsValid()\n\tcase xd.Message() != nil:\n\t\tisValid = pv.Message().IsValid()\n\t}\n\tif !isValid {\n\t\tm.ProtoReflect().Clear(xd)\n\t\treturn\n\t}\n\n\tm.ProtoReflect().Set(xd, pv)\n}\n\n// RangeExtensions iterates over every populated extension field in m in an\n// undefined order, calling f for each extension type and value encountered.\n// It returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current extension field.\nfunc RangeExtensions(m Message, f func(protoreflect.ExtensionType, any) bool) {\n\t// Treat nil message interface as an empty message; nothing to range over.\n\tif m == nil {\n\t\treturn\n\t}\n\n\tm.ProtoReflect().Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tif fd.IsExtension() {\n\t\t\txt := fd.(protoreflect.ExtensionTypeDescriptor).Type()\n\t\t\tvi := xt.InterfaceOf(v)\n\t\t\treturn f(xt, vi)\n\t\t}\n\t\treturn true\n\t})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/merge.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// Merge merges src into dst, which must be a message with the same descriptor.\n//\n// Populated scalar fields in src are copied to dst, while populated\n// singular messages in src are merged into dst by recursively calling Merge.\n// The elements of every list field in src is appended to the corresponded\n// list fields in dst. The entries of every map field in src is copied into\n// the corresponding map field in dst, possibly replacing existing entries.\n// The unknown fields of src are appended to the unknown fields of dst.\n//\n// It is semantically equivalent to unmarshaling the encoded form of src\n// into dst with the [UnmarshalOptions.Merge] option specified.\nfunc Merge(dst, src Message) {\n\t// TODO: Should nil src be treated as semantically equivalent to a\n\t// untyped, read-only, empty message? What about a nil dst?\n\n\tdstMsg, srcMsg := dst.ProtoReflect(), src.ProtoReflect()\n\tif dstMsg.Descriptor() != srcMsg.Descriptor() {\n\t\tif got, want := dstMsg.Descriptor().FullName(), srcMsg.Descriptor().FullName(); got != want {\n\t\t\tpanic(fmt.Sprintf(\"descriptor mismatch: %v != %v\", got, want))\n\t\t}\n\t\tpanic(\"descriptor mismatch\")\n\t}\n\tmergeOptions{}.mergeMessage(dstMsg, srcMsg)\n}\n\n// Clone returns a deep copy of m.\n// If the top-level message is invalid, it returns an invalid message as well.\nfunc Clone(m Message) Message {\n\t// NOTE: Most usages of Clone assume the following properties:\n\t//\tt := reflect.TypeOf(m)\n\t//\tt == reflect.TypeOf(m.ProtoReflect().New().Interface())\n\t//\tt == reflect.TypeOf(m.ProtoReflect().Type().Zero().Interface())\n\t//\n\t// Embedding protobuf messages breaks this since the parent type will have\n\t// a forwarded ProtoReflect method, but the Interface method will return\n\t// the underlying embedded message type.\n\tif m == nil {\n\t\treturn nil\n\t}\n\tsrc := m.ProtoReflect()\n\tif !src.IsValid() {\n\t\treturn src.Type().Zero().Interface()\n\t}\n\tdst := src.New()\n\tmergeOptions{}.mergeMessage(dst, src)\n\treturn dst.Interface()\n}\n\n// CloneOf returns a deep copy of m. If the top-level message is invalid,\n// it returns an invalid message as well.\nfunc CloneOf[M Message](m M) M {\n\treturn Clone(m).(M)\n}\n\n// mergeOptions provides a namespace for merge functions, and can be\n// exported in the future if we add user-visible merge options.\ntype mergeOptions struct{}\n\nfunc (o mergeOptions) mergeMessage(dst, src protoreflect.Message) {\n\tmethods := protoMethods(dst)\n\tif methods != nil && methods.Merge != nil {\n\t\tin := protoiface.MergeInput{\n\t\t\tDestination: dst,\n\t\t\tSource:      src,\n\t\t}\n\t\tout := methods.Merge(in)\n\t\tif out.Flags&protoiface.MergeComplete != 0 {\n\t\t\treturn\n\t\t}\n\t}\n\n\tif !dst.IsValid() {\n\t\tpanic(fmt.Sprintf(\"cannot merge into invalid %v message\", dst.Descriptor().FullName()))\n\t}\n\n\tsrc.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tswitch {\n\t\tcase fd.IsList():\n\t\t\to.mergeList(dst.Mutable(fd).List(), v.List(), fd)\n\t\tcase fd.IsMap():\n\t\t\to.mergeMap(dst.Mutable(fd).Map(), v.Map(), fd.MapValue())\n\t\tcase fd.Message() != nil:\n\t\t\to.mergeMessage(dst.Mutable(fd).Message(), v.Message())\n\t\tcase fd.Kind() == protoreflect.BytesKind:\n\t\t\tdst.Set(fd, o.cloneBytes(v))\n\t\tdefault:\n\t\t\tdst.Set(fd, v)\n\t\t}\n\t\treturn true\n\t})\n\n\tif len(src.GetUnknown()) > 0 {\n\t\tdst.SetUnknown(append(dst.GetUnknown(), src.GetUnknown()...))\n\t}\n}\n\nfunc (o mergeOptions) mergeList(dst, src protoreflect.List, fd protoreflect.FieldDescriptor) {\n\t// Merge semantics appends to the end of the existing list.\n\tfor i, n := 0, src.Len(); i < n; i++ {\n\t\tswitch v := src.Get(i); {\n\t\tcase fd.Message() != nil:\n\t\t\tdstv := dst.NewElement()\n\t\t\to.mergeMessage(dstv.Message(), v.Message())\n\t\t\tdst.Append(dstv)\n\t\tcase fd.Kind() == protoreflect.BytesKind:\n\t\t\tdst.Append(o.cloneBytes(v))\n\t\tdefault:\n\t\t\tdst.Append(v)\n\t\t}\n\t}\n}\n\nfunc (o mergeOptions) mergeMap(dst, src protoreflect.Map, fd protoreflect.FieldDescriptor) {\n\t// Merge semantics replaces, rather than merges into existing entries.\n\tsrc.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool {\n\t\tswitch {\n\t\tcase fd.Message() != nil:\n\t\t\tdstv := dst.NewValue()\n\t\t\to.mergeMessage(dstv.Message(), v.Message())\n\t\t\tdst.Set(k, dstv)\n\t\tcase fd.Kind() == protoreflect.BytesKind:\n\t\t\tdst.Set(k, o.cloneBytes(v))\n\t\tdefault:\n\t\t\tdst.Set(k, v)\n\t\t}\n\t\treturn true\n\t})\n}\n\nfunc (o mergeOptions) cloneBytes(v protoreflect.Value) protoreflect.Value {\n\treturn protoreflect.ValueOfBytes(append([]byte{}, v.Bytes()...))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/messageset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nfunc (o MarshalOptions) sizeMessageSet(m protoreflect.Message) (size int) {\n\tm.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tsize += messageset.SizeField(fd.Number())\n\t\tsize += protowire.SizeTag(messageset.FieldMessage)\n\t\tsize += protowire.SizeBytes(o.size(v.Message()))\n\t\treturn true\n\t})\n\tsize += messageset.SizeUnknown(m.GetUnknown())\n\treturn size\n}\n\nfunc (o MarshalOptions) marshalMessageSet(b []byte, m protoreflect.Message) ([]byte, error) {\n\tif !flags.ProtoLegacy {\n\t\treturn b, errors.New(\"no support for message_set_wire_format\")\n\t}\n\tfieldOrder := order.AnyFieldOrder\n\tif o.Deterministic {\n\t\tfieldOrder = order.NumberFieldOrder\n\t}\n\tvar err error\n\torder.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tb, err = o.marshalMessageSetField(b, fd, v)\n\t\treturn err == nil\n\t})\n\tif err != nil {\n\t\treturn b, err\n\t}\n\treturn messageset.AppendUnknown(b, m.GetUnknown())\n}\n\nfunc (o MarshalOptions) marshalMessageSetField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) {\n\tb = messageset.AppendFieldStart(b, fd.Number())\n\tb = protowire.AppendTag(b, messageset.FieldMessage, protowire.BytesType)\n\tcalculatedSize := o.Size(value.Message().Interface())\n\tb = protowire.AppendVarint(b, uint64(calculatedSize))\n\tbefore := len(b)\n\tb, err := o.marshalMessage(b, value.Message())\n\tif err != nil {\n\t\treturn b, err\n\t}\n\tif measuredSize := len(b) - before; calculatedSize != measuredSize {\n\t\treturn nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize)\n\t}\n\tb = messageset.AppendFieldEnd(b)\n\treturn b, nil\n}\n\nfunc (o UnmarshalOptions) unmarshalMessageSet(b []byte, m protoreflect.Message) error {\n\tif !flags.ProtoLegacy {\n\t\treturn errors.New(\"no support for message_set_wire_format\")\n\t}\n\treturn messageset.Unmarshal(b, false, func(num protowire.Number, v []byte) error {\n\t\terr := o.unmarshalMessageSetField(m, num, v)\n\t\tif err == errUnknown {\n\t\t\tunknown := m.GetUnknown()\n\t\t\tunknown = protowire.AppendTag(unknown, num, protowire.BytesType)\n\t\t\tunknown = protowire.AppendBytes(unknown, v)\n\t\t\tm.SetUnknown(unknown)\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t})\n}\n\nfunc (o UnmarshalOptions) unmarshalMessageSetField(m protoreflect.Message, num protowire.Number, v []byte) error {\n\tmd := m.Descriptor()\n\tif !md.ExtensionRanges().Has(num) {\n\t\treturn errUnknown\n\t}\n\txt, err := o.Resolver.FindExtensionByNumber(md.FullName(), num)\n\tif err == protoregistry.NotFound {\n\t\treturn errUnknown\n\t}\n\tif err != nil {\n\t\treturn errors.New(\"%v: unable to resolve extension %v: %v\", md.FullName(), num, err)\n\t}\n\txd := xt.TypeDescriptor()\n\tif err := o.unmarshalMessage(v, m.Mutable(xd).Message()); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/proto.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Message is the top-level interface that all messages must implement.\n// It provides access to a reflective view of a message.\n// Any implementation of this interface may be used with all functions in the\n// protobuf module that accept a Message, except where otherwise specified.\n//\n// This is the v2 interface definition for protobuf messages.\n// The v1 interface definition is [github.com/golang/protobuf/proto.Message].\n//\n//   - To convert a v1 message to a v2 message,\n//     use [google.golang.org/protobuf/protoadapt.MessageV2Of].\n//   - To convert a v2 message to a v1 message,\n//     use [google.golang.org/protobuf/protoadapt.MessageV1Of].\ntype Message = protoreflect.ProtoMessage\n\n// Error matches all errors produced by packages in the protobuf module\n// according to [errors.Is].\n//\n// Example usage:\n//\n//\tif errors.Is(err, proto.Error) { ... }\nvar Error error\n\nfunc init() {\n\tError = errors.Error\n}\n\n// MessageName returns the full name of m.\n// If m is nil, it returns an empty string.\nfunc MessageName(m Message) protoreflect.FullName {\n\tif m == nil {\n\t\treturn \"\"\n\t}\n\treturn m.ProtoReflect().Descriptor().FullName()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/proto_methods.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// The protoreflect build tag disables use of fast-path methods.\n//go:build !protoreflect\n// +build !protoreflect\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nconst hasProtoMethods = true\n\nfunc protoMethods(m protoreflect.Message) *protoiface.Methods {\n\treturn m.ProtoMethods()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/proto_reflect.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// The protoreflect build tag disables use of fast-path methods.\n//go:build protoreflect\n// +build protoreflect\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nconst hasProtoMethods = false\n\nfunc protoMethods(m protoreflect.Message) *protoiface.Methods {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/reset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Reset clears every field in the message.\n// The resulting message shares no observable memory with its previous state\n// other than the memory for the message itself.\nfunc Reset(m Message) {\n\tif mr, ok := m.(interface{ Reset() }); ok && hasProtoMethods {\n\t\tmr.Reset()\n\t\treturn\n\t}\n\tresetMessage(m.ProtoReflect())\n}\n\nfunc resetMessage(m protoreflect.Message) {\n\tif !m.IsValid() {\n\t\tpanic(fmt.Sprintf(\"cannot reset invalid %v message\", m.Descriptor().FullName()))\n\t}\n\n\t// Clear all known fields.\n\tfds := m.Descriptor().Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tm.Clear(fds.Get(i))\n\t}\n\n\t// Clear extension fields.\n\tm.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool {\n\t\tm.Clear(fd)\n\t\treturn true\n\t})\n\n\t// Clear unknown fields.\n\tm.SetUnknown(nil)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/size.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// Size returns the size in bytes of the wire-format encoding of m.\n//\n// Note that Size might return more bytes than Marshal will write in the case of\n// lazily decoded messages that arrive in non-minimal wire format: see\n// https://protobuf.dev/reference/go/size/ for more details.\nfunc Size(m Message) int {\n\treturn MarshalOptions{}.Size(m)\n}\n\n// Size returns the size in bytes of the wire-format encoding of m.\n//\n// Note that Size might return more bytes than Marshal will write in the case of\n// lazily decoded messages that arrive in non-minimal wire format: see\n// https://protobuf.dev/reference/go/size/ for more details.\nfunc (o MarshalOptions) Size(m Message) int {\n\t// Treat a nil message interface as an empty message; nothing to output.\n\tif m == nil {\n\t\treturn 0\n\t}\n\n\treturn o.size(m.ProtoReflect())\n}\n\n// size is a centralized function that all size operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for size that do not go through this.\nfunc (o MarshalOptions) size(m protoreflect.Message) (size int) {\n\tmethods := protoMethods(m)\n\tif methods != nil && methods.Size != nil {\n\t\tout := methods.Size(protoiface.SizeInput{\n\t\t\tMessage: m,\n\t\t\tFlags:   o.flags(),\n\t\t})\n\t\treturn out.Size\n\t}\n\tif methods != nil && methods.Marshal != nil {\n\t\t// This is not efficient, but we don't have any choice.\n\t\t// This case is mainly used for legacy types with a Marshal method.\n\t\tout, _ := methods.Marshal(protoiface.MarshalInput{\n\t\t\tMessage: m,\n\t\t\tFlags:   o.flags(),\n\t\t})\n\t\treturn len(out.Buf)\n\t}\n\treturn o.sizeMessageSlow(m)\n}\n\nfunc (o MarshalOptions) sizeMessageSlow(m protoreflect.Message) (size int) {\n\tif messageset.IsMessageSet(m.Descriptor()) {\n\t\treturn o.sizeMessageSet(m)\n\t}\n\tm.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tsize += o.sizeField(fd, v)\n\t\treturn true\n\t})\n\tsize += len(m.GetUnknown())\n\treturn size\n}\n\nfunc (o MarshalOptions) sizeField(fd protoreflect.FieldDescriptor, value protoreflect.Value) (size int) {\n\tnum := fd.Number()\n\tswitch {\n\tcase fd.IsList():\n\t\treturn o.sizeList(num, fd, value.List())\n\tcase fd.IsMap():\n\t\treturn o.sizeMap(num, fd, value.Map())\n\tdefault:\n\t\treturn protowire.SizeTag(num) + o.sizeSingular(num, fd.Kind(), value)\n\t}\n}\n\nfunc (o MarshalOptions) sizeList(num protowire.Number, fd protoreflect.FieldDescriptor, list protoreflect.List) (size int) {\n\tsizeTag := protowire.SizeTag(num)\n\n\tif fd.IsPacked() && list.Len() > 0 {\n\t\tcontent := 0\n\t\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\t\tcontent += o.sizeSingular(num, fd.Kind(), list.Get(i))\n\t\t}\n\t\treturn sizeTag + protowire.SizeBytes(content)\n\t}\n\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tsize += sizeTag + o.sizeSingular(num, fd.Kind(), list.Get(i))\n\t}\n\treturn size\n}\n\nfunc (o MarshalOptions) sizeMap(num protowire.Number, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) (size int) {\n\tsizeTag := protowire.SizeTag(num)\n\n\tmapv.Range(func(key protoreflect.MapKey, value protoreflect.Value) bool {\n\t\tsize += sizeTag\n\t\tsize += protowire.SizeBytes(o.sizeField(fd.MapKey(), key.Value()) + o.sizeField(fd.MapValue(), value))\n\t\treturn true\n\t})\n\treturn size\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/size_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc (o MarshalOptions) sizeSingular(num protowire.Number, kind protoreflect.Kind, v protoreflect.Value) int {\n\tswitch kind {\n\tcase protoreflect.BoolKind:\n\t\treturn protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n\tcase protoreflect.EnumKind:\n\t\treturn protowire.SizeVarint(uint64(v.Enum()))\n\tcase protoreflect.Int32Kind:\n\t\treturn protowire.SizeVarint(uint64(int32(v.Int())))\n\tcase protoreflect.Sint32Kind:\n\t\treturn protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n\tcase protoreflect.Uint32Kind:\n\t\treturn protowire.SizeVarint(uint64(uint32(v.Uint())))\n\tcase protoreflect.Int64Kind:\n\t\treturn protowire.SizeVarint(uint64(v.Int()))\n\tcase protoreflect.Sint64Kind:\n\t\treturn protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n\tcase protoreflect.Uint64Kind:\n\t\treturn protowire.SizeVarint(v.Uint())\n\tcase protoreflect.Sfixed32Kind:\n\t\treturn protowire.SizeFixed32()\n\tcase protoreflect.Fixed32Kind:\n\t\treturn protowire.SizeFixed32()\n\tcase protoreflect.FloatKind:\n\t\treturn protowire.SizeFixed32()\n\tcase protoreflect.Sfixed64Kind:\n\t\treturn protowire.SizeFixed64()\n\tcase protoreflect.Fixed64Kind:\n\t\treturn protowire.SizeFixed64()\n\tcase protoreflect.DoubleKind:\n\t\treturn protowire.SizeFixed64()\n\tcase protoreflect.StringKind:\n\t\treturn protowire.SizeBytes(len(v.String()))\n\tcase protoreflect.BytesKind:\n\t\treturn protowire.SizeBytes(len(v.Bytes()))\n\tcase protoreflect.MessageKind:\n\t\treturn protowire.SizeBytes(o.size(v.Message()))\n\tcase protoreflect.GroupKind:\n\t\treturn protowire.SizeGroup(num, o.size(v.Message()))\n\tdefault:\n\t\treturn 0\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/wrapperopaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\n// ValueOrNil returns nil if has is false, or a pointer to a new variable\n// containing the value returned by the specified getter.\n//\n// This function is similar to the wrappers (proto.Int32(), proto.String(),\n// etc.), but is generic (works for any field type) and works with the hasser\n// and getter of a field, as opposed to a value.\n//\n// This is convenient when populating builder fields.\n//\n// Example:\n//\n//\thop := attr.GetDirectHop()\n//\tinjectedRoute := ripb.InjectedRoute_builder{\n//\t  Prefixes: route.GetPrefixes(),\n//\t  NextHop:  proto.ValueOrNil(hop.HasAddress(), hop.GetAddress),\n//\t}\nfunc ValueOrNil[T any](has bool, getter func() T) *T {\n\tif !has {\n\t\treturn nil\n\t}\n\tv := getter()\n\treturn &v\n}\n\n// ValueOrDefault returns the protobuf message val if val is not nil, otherwise\n// it returns a pointer to an empty val message.\n//\n// This function allows for translating code from the old Open Struct API to the\n// new Opaque API.\n//\n// The old Open Struct API represented oneof fields with a wrapper struct:\n//\n//\tvar signedImg *accountpb.SignedImage\n//\tprofile := &accountpb.Profile{\n//\t\t// The Avatar oneof will be set, with an empty SignedImage.\n//\t\tAvatar: &accountpb.Profile_SignedImage{signedImg},\n//\t}\n//\n// The new Opaque API treats oneof fields like regular fields, there are no more\n// wrapper structs:\n//\n//\tvar signedImg *accountpb.SignedImage\n//\tprofile := &accountpb.Profile{}\n//\tprofile.SetSignedImage(signedImg)\n//\n// For convenience, the Opaque API also offers Builders, which allow for a\n// direct translation of struct initialization. However, because Builders use\n// nilness to represent field presence (but there is no non-nil wrapper struct\n// anymore), Builders cannot distinguish between an unset oneof and a set oneof\n// with nil message. The above code would need to be translated with help of the\n// ValueOrDefault function to retain the same behavior:\n//\n//\tvar signedImg *accountpb.SignedImage\n//\treturn &accountpb.Profile_builder{\n//\t\tSignedImage: proto.ValueOrDefault(signedImg),\n//\t}.Build()\nfunc ValueOrDefault[T interface {\n\t*P\n\tMessage\n}, P any](val T) T {\n\tif val == nil {\n\t\treturn T(new(P))\n\t}\n\treturn val\n}\n\n// ValueOrDefaultBytes is like ValueOrDefault but for working with fields of\n// type []byte.\nfunc ValueOrDefaultBytes(val []byte) []byte {\n\tif val == nil {\n\t\treturn []byte{}\n\t}\n\treturn val\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/wrappers.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\n// Bool stores v in a new bool value and returns a pointer to it.\nfunc Bool(v bool) *bool { return &v }\n\n// Int32 stores v in a new int32 value and returns a pointer to it.\nfunc Int32(v int32) *int32 { return &v }\n\n// Int64 stores v in a new int64 value and returns a pointer to it.\nfunc Int64(v int64) *int64 { return &v }\n\n// Float32 stores v in a new float32 value and returns a pointer to it.\nfunc Float32(v float32) *float32 { return &v }\n\n// Float64 stores v in a new float64 value and returns a pointer to it.\nfunc Float64(v float64) *float64 { return &v }\n\n// Uint32 stores v in a new uint32 value and returns a pointer to it.\nfunc Uint32(v uint32) *uint32 { return &v }\n\n// Uint64 stores v in a new uint64 value and returns a pointer to it.\nfunc Uint64(v uint64) *uint64 { return &v }\n\n// String stores v in a new string value and returns a pointer to it.\nfunc String(v string) *string { return &v }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/protoadapt/convert.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protoadapt bridges the original and new proto APIs.\npackage protoadapt\n\nimport (\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n\t\"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\n// MessageV1 is the original [github.com/golang/protobuf/proto.Message] type.\ntype MessageV1 = protoiface.MessageV1\n\n// MessageV2 is the [google.golang.org/protobuf/proto.Message] type used by the\n// current [google.golang.org/protobuf] module, adding support for reflection.\ntype MessageV2 = proto.Message\n\n// MessageV1Of converts a v2 message to a v1 message.\n// It returns nil if m is nil.\nfunc MessageV1Of(m MessageV2) MessageV1 {\n\treturn protoimpl.X.ProtoMessageV1Of(m)\n}\n\n// MessageV2Of converts a v1 message to a v2 message.\n// It returns nil if m is nil.\nfunc MessageV2Of(m MessageV1) MessageV2 {\n\treturn protoimpl.X.ProtoMessageV2Of(m)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/desc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protodesc provides functionality for converting\n// FileDescriptorProto messages to/from [protoreflect.FileDescriptor] values.\n//\n// The google.protobuf.FileDescriptorProto is a protobuf message that describes\n// the type information for a .proto file in a form that is easily serializable.\n// The [protoreflect.FileDescriptor] is a more structured representation of\n// the FileDescriptorProto message where references and remote dependencies\n// can be directly followed.\npackage protodesc\n\nimport (\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/editionssupport\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\n// Resolver is the resolver used by [NewFile] to resolve dependencies.\n// The enums and messages provided must belong to some parent file,\n// which is also registered.\n//\n// It is implemented by [protoregistry.Files].\ntype Resolver interface {\n\tFindFileByPath(string) (protoreflect.FileDescriptor, error)\n\tFindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error)\n}\n\n// FileOptions configures the construction of file descriptors.\ntype FileOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// AllowUnresolvable configures New to permissively allow unresolvable\n\t// file, enum, or message dependencies. Unresolved dependencies are replaced\n\t// by placeholder equivalents.\n\t//\n\t// The following dependencies may be left unresolved:\n\t//\t• Resolving an imported file.\n\t//\t• Resolving the type for a message field or extension field.\n\t//\tIf the kind of the field is unknown, then a placeholder is used for both\n\t//\tthe Enum and Message accessors on the protoreflect.FieldDescriptor.\n\t//\t• Resolving an enum value set as the default for an optional enum field.\n\t//\tIf unresolvable, the protoreflect.FieldDescriptor.Default is set to the\n\t//\tfirst value in the associated enum (or zero if the also enum dependency\n\t//\tis also unresolvable). The protoreflect.FieldDescriptor.DefaultEnumValue\n\t//\tis populated with a placeholder.\n\t//\t• Resolving the extended message type for an extension field.\n\t//\t• Resolving the input or output message type for a service method.\n\t//\n\t// If the unresolved dependency uses a relative name,\n\t// then the placeholder will contain an invalid FullName with a \"*.\" prefix,\n\t// indicating that the starting prefix of the full name is unknown.\n\tAllowUnresolvable bool\n}\n\n// NewFile creates a new [protoreflect.FileDescriptor] from the provided\n// file descriptor message. See [FileOptions.New] for more information.\nfunc NewFile(fd *descriptorpb.FileDescriptorProto, r Resolver) (protoreflect.FileDescriptor, error) {\n\treturn FileOptions{}.New(fd, r)\n}\n\n// NewFiles creates a new [protoregistry.Files] from the provided\n// FileDescriptorSet message. See [FileOptions.NewFiles] for more information.\nfunc NewFiles(fd *descriptorpb.FileDescriptorSet) (*protoregistry.Files, error) {\n\treturn FileOptions{}.NewFiles(fd)\n}\n\n// New creates a new [protoreflect.FileDescriptor] from the provided\n// file descriptor message. The file must represent a valid proto file according\n// to protobuf semantics. The returned descriptor is a deep copy of the input.\n//\n// Any imported files, enum types, or message types referenced in the file are\n// resolved using the provided registry. When looking up an import file path,\n// the path must be unique. The newly created file descriptor is not registered\n// back into the provided file registry.\nfunc (o FileOptions) New(fd *descriptorpb.FileDescriptorProto, r Resolver) (protoreflect.FileDescriptor, error) {\n\tif r == nil {\n\t\tr = (*protoregistry.Files)(nil) // empty resolver\n\t}\n\n\t// Handle the file descriptor content.\n\tf := &filedesc.File{L2: &filedesc.FileL2{}}\n\tswitch fd.GetSyntax() {\n\tcase \"proto2\", \"\":\n\t\tf.L1.Syntax = protoreflect.Proto2\n\t\tf.L1.Edition = filedesc.EditionProto2\n\tcase \"proto3\":\n\t\tf.L1.Syntax = protoreflect.Proto3\n\t\tf.L1.Edition = filedesc.EditionProto3\n\tcase \"editions\":\n\t\tf.L1.Syntax = protoreflect.Editions\n\t\tf.L1.Edition = fromEditionProto(fd.GetEdition())\n\tdefault:\n\t\treturn nil, errors.New(\"invalid syntax: %q\", fd.GetSyntax())\n\t}\n\tf.L1.Path = fd.GetName()\n\tif f.L1.Path == \"\" {\n\t\treturn nil, errors.New(\"file path must be populated\")\n\t}\n\tif f.L1.Syntax == protoreflect.Editions &&\n\t\t(fd.GetEdition() < editionssupport.Minimum || fd.GetEdition() > editionssupport.Maximum) &&\n\t\tfd.GetEdition() != descriptorpb.Edition_EDITION_UNSTABLE {\n\t\t// Allow cmd/protoc-gen-go/testdata to use any edition for easier\n\t\t// testing of upcoming edition features.\n\t\tif !strings.HasPrefix(fd.GetName(), \"cmd/protoc-gen-go/testdata/\") {\n\t\t\treturn nil, errors.New(\"use of edition %v not yet supported by the Go Protobuf runtime\", fd.GetEdition())\n\t\t}\n\t}\n\tf.L1.Package = protoreflect.FullName(fd.GetPackage())\n\tif !f.L1.Package.IsValid() && f.L1.Package != \"\" {\n\t\treturn nil, errors.New(\"invalid package: %q\", f.L1.Package)\n\t}\n\tif opts := fd.GetOptions(); opts != nil {\n\t\topts = proto.Clone(opts).(*descriptorpb.FileOptions)\n\t\tf.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t}\n\tinitFileDescFromFeatureSet(f, fd.GetOptions().GetFeatures())\n\n\tf.L2.Imports = make(filedesc.FileImports, len(fd.GetDependency()))\n\tfor _, i := range fd.GetPublicDependency() {\n\t\tif !(0 <= i && int(i) < len(f.L2.Imports)) || f.L2.Imports[i].IsPublic {\n\t\t\treturn nil, errors.New(\"invalid or duplicate public import index: %d\", i)\n\t\t}\n\t\tf.L2.Imports[i].IsPublic = true\n\t}\n\timps := importSet{f.Path(): true}\n\tfor i, path := range fd.GetDependency() {\n\t\timp := &f.L2.Imports[i]\n\t\tf, err := r.FindFileByPath(path)\n\t\tif err == protoregistry.NotFound && o.AllowUnresolvable {\n\t\t\tf = filedesc.PlaceholderFile(path)\n\t\t} else if err != nil {\n\t\t\treturn nil, errors.New(\"could not resolve import %q: %v\", path, err)\n\t\t}\n\t\timp.FileDescriptor = f\n\n\t\tif imps[imp.Path()] {\n\t\t\treturn nil, errors.New(\"already imported %q\", path)\n\t\t}\n\t\timps[imp.Path()] = true\n\t}\n\tfor i := range fd.GetDependency() {\n\t\timp := &f.L2.Imports[i]\n\t\timps.importPublic(imp.Imports())\n\t}\n\toptionImps := importSet{f.Path(): true}\n\tif len(fd.GetOptionDependency()) > 0 {\n\t\toptionImports := make(filedesc.FileImports, len(fd.GetOptionDependency()))\n\t\tfor i, path := range fd.GetOptionDependency() {\n\t\t\timp := &optionImports[i]\n\t\t\tf, err := r.FindFileByPath(path)\n\t\t\tif err == protoregistry.NotFound {\n\t\t\t\t// We always allow option imports to be unresolvable.\n\t\t\t\tf = filedesc.PlaceholderFile(path)\n\t\t\t} else if err != nil {\n\t\t\t\treturn nil, errors.New(\"could not resolve import %q: %v\", path, err)\n\t\t\t}\n\t\t\timp.FileDescriptor = f\n\n\t\t\tif imps[imp.Path()] || optionImps[imp.Path()] {\n\t\t\t\treturn nil, errors.New(\"already imported %q\", path)\n\t\t\t}\n\t\t\t// This needs to be a separate map so that we don't recognize non-options\n\t\t\t// symbols coming from option imports.\n\t\t\toptionImps[imp.Path()] = true\n\t\t}\n\t\tf.L2.OptionImports = func() protoreflect.FileImports {\n\t\t\treturn &optionImports\n\t\t}\n\t}\n\n\t// Handle source locations.\n\tf.L2.Locations.File = f\n\tfor _, loc := range fd.GetSourceCodeInfo().GetLocation() {\n\t\tvar l protoreflect.SourceLocation\n\t\t// TODO: Validate that the path points to an actual declaration?\n\t\tl.Path = protoreflect.SourcePath(loc.GetPath())\n\t\ts := loc.GetSpan()\n\t\tswitch len(s) {\n\t\tcase 3:\n\t\t\tl.StartLine, l.StartColumn, l.EndLine, l.EndColumn = int(s[0]), int(s[1]), int(s[0]), int(s[2])\n\t\tcase 4:\n\t\t\tl.StartLine, l.StartColumn, l.EndLine, l.EndColumn = int(s[0]), int(s[1]), int(s[2]), int(s[3])\n\t\tdefault:\n\t\t\treturn nil, errors.New(\"invalid span: %v\", s)\n\t\t}\n\t\t// TODO: Validate that the span information is sensible?\n\t\t// See https://github.com/protocolbuffers/protobuf/issues/6378.\n\t\tif false && (l.EndLine < l.StartLine || l.StartLine < 0 || l.StartColumn < 0 || l.EndColumn < 0 ||\n\t\t\t(l.StartLine == l.EndLine && l.EndColumn <= l.StartColumn)) {\n\t\t\treturn nil, errors.New(\"invalid span: %v\", s)\n\t\t}\n\t\tl.LeadingDetachedComments = loc.GetLeadingDetachedComments()\n\t\tl.LeadingComments = loc.GetLeadingComments()\n\t\tl.TrailingComments = loc.GetTrailingComments()\n\t\tf.L2.Locations.List = append(f.L2.Locations.List, l)\n\t}\n\n\t// Step 1: Allocate and derive the names for all declarations.\n\t// This copies all fields from the descriptor proto except:\n\t//\tgoogle.protobuf.FieldDescriptorProto.type_name\n\t//\tgoogle.protobuf.FieldDescriptorProto.default_value\n\t//\tgoogle.protobuf.FieldDescriptorProto.oneof_index\n\t//\tgoogle.protobuf.FieldDescriptorProto.extendee\n\t//\tgoogle.protobuf.MethodDescriptorProto.input\n\t//\tgoogle.protobuf.MethodDescriptorProto.output\n\tvar err error\n\tsb := new(strs.Builder)\n\tr1 := make(descsByName)\n\tif f.L1.Enums.List, err = r1.initEnumDeclarations(fd.GetEnumType(), f, sb); err != nil {\n\t\treturn nil, err\n\t}\n\tif f.L1.Messages.List, err = r1.initMessagesDeclarations(fd.GetMessageType(), f, sb); err != nil {\n\t\treturn nil, err\n\t}\n\tif f.L1.Extensions.List, err = r1.initExtensionDeclarations(fd.GetExtension(), f, sb); err != nil {\n\t\treturn nil, err\n\t}\n\tif f.L1.Services.List, err = r1.initServiceDeclarations(fd.GetService(), f, sb); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Step 2: Resolve every dependency reference not handled by step 1.\n\tr2 := &resolver{local: r1, remote: r, imports: imps, allowUnresolvable: o.AllowUnresolvable}\n\tif err := r2.resolveMessageDependencies(f.L1.Messages.List, fd.GetMessageType()); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := r2.resolveExtensionDependencies(f.L1.Extensions.List, fd.GetExtension()); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := r2.resolveServiceDependencies(f.L1.Services.List, fd.GetService()); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Step 3: Validate every enum, message, and extension declaration.\n\tif err := validateEnumDeclarations(f.L1.Enums.List, fd.GetEnumType()); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := validateMessageDeclarations(f, f.L1.Messages.List, fd.GetMessageType()); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := validateExtensionDeclarations(f, f.L1.Extensions.List, fd.GetExtension()); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn f, nil\n}\n\ntype importSet map[string]bool\n\nfunc (is importSet) importPublic(imps protoreflect.FileImports) {\n\tfor i := 0; i < imps.Len(); i++ {\n\t\tif imp := imps.Get(i); imp.IsPublic {\n\t\t\tis[imp.Path()] = true\n\t\t\tis.importPublic(imp.Imports())\n\t\t}\n\t}\n}\n\n// NewFiles creates a new [protoregistry.Files] from the provided\n// FileDescriptorSet message. The descriptor set must include only\n// valid files according to protobuf semantics. The returned descriptors\n// are a deep copy of the input.\nfunc (o FileOptions) NewFiles(fds *descriptorpb.FileDescriptorSet) (*protoregistry.Files, error) {\n\tfiles := make(map[string]*descriptorpb.FileDescriptorProto)\n\tfor _, fd := range fds.File {\n\t\tif _, ok := files[fd.GetName()]; ok {\n\t\t\treturn nil, errors.New(\"file appears multiple times: %q\", fd.GetName())\n\t\t}\n\t\tfiles[fd.GetName()] = fd\n\t}\n\tr := &protoregistry.Files{}\n\tfor _, fd := range files {\n\t\tif err := o.addFileDeps(r, fd, files); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn r, nil\n}\nfunc (o FileOptions) addFileDeps(r *protoregistry.Files, fd *descriptorpb.FileDescriptorProto, files map[string]*descriptorpb.FileDescriptorProto) error {\n\t// Set the entry to nil while descending into a file's dependencies to detect cycles.\n\tfiles[fd.GetName()] = nil\n\tfor _, dep := range fd.Dependency {\n\t\tdepfd, ok := files[dep]\n\t\tif depfd == nil {\n\t\t\tif ok {\n\t\t\t\treturn errors.New(\"import cycle in file: %q\", dep)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif err := o.addFileDeps(r, depfd, files); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t// Delete the entry once dependencies are processed.\n\tdelete(files, fd.GetName())\n\tf, err := o.New(fd, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn r.RegisterFile(f)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protodesc\n\nimport (\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\ntype descsByName map[protoreflect.FullName]protoreflect.Descriptor\n\nfunc (r descsByName) initEnumDeclarations(eds []*descriptorpb.EnumDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (es []filedesc.Enum, err error) {\n\tes = make([]filedesc.Enum, len(eds)) // allocate up-front to ensure stable pointers\n\tfor i, ed := range eds {\n\t\te := &es[i]\n\t\te.L2 = new(filedesc.EnumL2)\n\t\tif e.L0, err = r.makeBase(e, parent, ed.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := ed.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.EnumOptions)\n\t\t\te.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t\te.L1.EditionFeatures = mergeEditionFeatures(parent, ed.GetOptions().GetFeatures())\n\t\te.L1.Visibility = int32(ed.GetVisibility())\n\t\tfor _, s := range ed.GetReservedName() {\n\t\t\te.L2.ReservedNames.List = append(e.L2.ReservedNames.List, protoreflect.Name(s))\n\t\t}\n\t\tfor _, rr := range ed.GetReservedRange() {\n\t\t\te.L2.ReservedRanges.List = append(e.L2.ReservedRanges.List, [2]protoreflect.EnumNumber{\n\t\t\t\tprotoreflect.EnumNumber(rr.GetStart()),\n\t\t\t\tprotoreflect.EnumNumber(rr.GetEnd()),\n\t\t\t})\n\t\t}\n\t\tif e.L2.Values.List, err = r.initEnumValuesFromDescriptorProto(ed.GetValue(), e, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn es, nil\n}\n\nfunc (r descsByName) initEnumValuesFromDescriptorProto(vds []*descriptorpb.EnumValueDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (vs []filedesc.EnumValue, err error) {\n\tvs = make([]filedesc.EnumValue, len(vds)) // allocate up-front to ensure stable pointers\n\tfor i, vd := range vds {\n\t\tv := &vs[i]\n\t\tif v.L0, err = r.makeBase(v, parent, vd.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := vd.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.EnumValueOptions)\n\t\t\tv.L1.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t\tv.L1.Number = protoreflect.EnumNumber(vd.GetNumber())\n\t}\n\treturn vs, nil\n}\n\nfunc (r descsByName) initMessagesDeclarations(mds []*descriptorpb.DescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ms []filedesc.Message, err error) {\n\tms = make([]filedesc.Message, len(mds)) // allocate up-front to ensure stable pointers\n\tfor i, md := range mds {\n\t\tm := &ms[i]\n\t\tm.L2 = new(filedesc.MessageL2)\n\t\tif m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tm.L1.EditionFeatures = mergeEditionFeatures(parent, md.GetOptions().GetFeatures())\n\t\tm.L1.Visibility = int32(md.GetVisibility())\n\t\tif opts := md.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.MessageOptions)\n\t\t\tm.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t\tm.L1.IsMapEntry = opts.GetMapEntry()\n\t\t\tm.L1.IsMessageSet = opts.GetMessageSetWireFormat()\n\t\t}\n\t\tfor _, s := range md.GetReservedName() {\n\t\t\tm.L2.ReservedNames.List = append(m.L2.ReservedNames.List, protoreflect.Name(s))\n\t\t}\n\t\tfor _, rr := range md.GetReservedRange() {\n\t\t\tm.L2.ReservedRanges.List = append(m.L2.ReservedRanges.List, [2]protoreflect.FieldNumber{\n\t\t\t\tprotoreflect.FieldNumber(rr.GetStart()),\n\t\t\t\tprotoreflect.FieldNumber(rr.GetEnd()),\n\t\t\t})\n\t\t}\n\t\tfor _, xr := range md.GetExtensionRange() {\n\t\t\tm.L2.ExtensionRanges.List = append(m.L2.ExtensionRanges.List, [2]protoreflect.FieldNumber{\n\t\t\t\tprotoreflect.FieldNumber(xr.GetStart()),\n\t\t\t\tprotoreflect.FieldNumber(xr.GetEnd()),\n\t\t\t})\n\t\t\tvar optsFunc func() protoreflect.ProtoMessage\n\t\t\tif opts := xr.GetOptions(); opts != nil {\n\t\t\t\topts = proto.Clone(opts).(*descriptorpb.ExtensionRangeOptions)\n\t\t\t\toptsFunc = func() protoreflect.ProtoMessage { return opts }\n\t\t\t}\n\t\t\tm.L2.ExtensionRangeOptions = append(m.L2.ExtensionRangeOptions, optsFunc)\n\t\t}\n\t\tif m.L2.Fields.List, err = r.initFieldsFromDescriptorProto(md.GetField(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m.L2.Oneofs.List, err = r.initOneofsFromDescriptorProto(md.GetOneofDecl(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m.L1.Enums.List, err = r.initEnumDeclarations(md.GetEnumType(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m.L1.Messages.List, err = r.initMessagesDeclarations(md.GetNestedType(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m.L1.Extensions.List, err = r.initExtensionDeclarations(md.GetExtension(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn ms, nil\n}\n\n// canBePacked returns whether the field can use packed encoding:\n// https://protobuf.dev/programming-guides/encoding/#packed\nfunc canBePacked(fd *descriptorpb.FieldDescriptorProto) bool {\n\tif fd.GetLabel() != descriptorpb.FieldDescriptorProto_LABEL_REPEATED {\n\t\treturn false // not a repeated field\n\t}\n\n\tswitch protoreflect.Kind(fd.GetType()) {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn false // not a scalar type field\n\n\tcase protoreflect.StringKind, protoreflect.BytesKind:\n\t\t// string and bytes can explicitly not be declared as packed,\n\t\t// see https://protobuf.dev/programming-guides/encoding/#packed\n\t\treturn false\n\n\tdefault:\n\t\treturn true\n\t}\n}\n\nfunc (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (fs []filedesc.Field, err error) {\n\tfs = make([]filedesc.Field, len(fds)) // allocate up-front to ensure stable pointers\n\tfor i, fd := range fds {\n\t\tf := &fs[i]\n\t\tif f.L0, err = r.makeBase(f, parent, fd.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tf.L1.EditionFeatures = mergeEditionFeatures(parent, fd.GetOptions().GetFeatures())\n\t\tf.L1.IsProto3Optional = fd.GetProto3Optional()\n\t\tif opts := fd.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.FieldOptions)\n\t\t\tf.L1.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t\tf.L1.IsLazy = opts.GetLazy()\n\t\t\tif opts.Packed != nil {\n\t\t\t\tf.L1.EditionFeatures.IsPacked = opts.GetPacked()\n\t\t\t}\n\t\t}\n\t\tf.L1.Number = protoreflect.FieldNumber(fd.GetNumber())\n\t\tf.L1.Cardinality = protoreflect.Cardinality(fd.GetLabel())\n\t\tif fd.Type != nil {\n\t\t\tf.L1.Kind = protoreflect.Kind(fd.GetType())\n\t\t}\n\t\tif fd.JsonName != nil {\n\t\t\tf.L1.StringName.InitJSON(fd.GetJsonName())\n\t\t}\n\n\t\tif f.L1.EditionFeatures.IsLegacyRequired {\n\t\t\tf.L1.Cardinality = protoreflect.Required\n\t\t}\n\n\t\tif f.L1.Kind == protoreflect.MessageKind && f.L1.EditionFeatures.IsDelimitedEncoded {\n\t\t\tf.L1.Kind = protoreflect.GroupKind\n\t\t}\n\t}\n\treturn fs, nil\n}\n\nfunc (r descsByName) initOneofsFromDescriptorProto(ods []*descriptorpb.OneofDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (os []filedesc.Oneof, err error) {\n\tos = make([]filedesc.Oneof, len(ods)) // allocate up-front to ensure stable pointers\n\tfor i, od := range ods {\n\t\to := &os[i]\n\t\tif o.L0, err = r.makeBase(o, parent, od.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\to.L1.EditionFeatures = mergeEditionFeatures(parent, od.GetOptions().GetFeatures())\n\t\tif opts := od.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.OneofOptions)\n\t\t\to.L1.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t}\n\treturn os, nil\n}\n\nfunc (r descsByName) initExtensionDeclarations(xds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (xs []filedesc.Extension, err error) {\n\txs = make([]filedesc.Extension, len(xds)) // allocate up-front to ensure stable pointers\n\tfor i, xd := range xds {\n\t\tx := &xs[i]\n\t\tx.L2 = new(filedesc.ExtensionL2)\n\t\tif x.L0, err = r.makeBase(x, parent, xd.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tx.L1.EditionFeatures = mergeEditionFeatures(parent, xd.GetOptions().GetFeatures())\n\t\tif opts := xd.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.FieldOptions)\n\t\t\tx.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t\tif opts.Packed != nil {\n\t\t\t\tx.L1.EditionFeatures.IsPacked = opts.GetPacked()\n\t\t\t}\n\t\t}\n\t\tx.L1.Number = protoreflect.FieldNumber(xd.GetNumber())\n\t\tx.L1.Cardinality = protoreflect.Cardinality(xd.GetLabel())\n\t\tif xd.Type != nil {\n\t\t\tx.L1.Kind = protoreflect.Kind(xd.GetType())\n\t\t}\n\t\tif xd.JsonName != nil {\n\t\t\tx.L2.StringName.InitJSON(xd.GetJsonName())\n\t\t}\n\t\tif x.L1.Kind == protoreflect.MessageKind && x.L1.EditionFeatures.IsDelimitedEncoded {\n\t\t\tx.L1.Kind = protoreflect.GroupKind\n\t\t}\n\t}\n\treturn xs, nil\n}\n\nfunc (r descsByName) initServiceDeclarations(sds []*descriptorpb.ServiceDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ss []filedesc.Service, err error) {\n\tss = make([]filedesc.Service, len(sds)) // allocate up-front to ensure stable pointers\n\tfor i, sd := range sds {\n\t\ts := &ss[i]\n\t\ts.L2 = new(filedesc.ServiceL2)\n\t\tif s.L0, err = r.makeBase(s, parent, sd.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := sd.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.ServiceOptions)\n\t\t\ts.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t\tif s.L2.Methods.List, err = r.initMethodsFromDescriptorProto(sd.GetMethod(), s, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn ss, nil\n}\n\nfunc (r descsByName) initMethodsFromDescriptorProto(mds []*descriptorpb.MethodDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ms []filedesc.Method, err error) {\n\tms = make([]filedesc.Method, len(mds)) // allocate up-front to ensure stable pointers\n\tfor i, md := range mds {\n\t\tm := &ms[i]\n\t\tif m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := md.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.MethodOptions)\n\t\t\tm.L1.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t\tm.L1.IsStreamingClient = md.GetClientStreaming()\n\t\tm.L1.IsStreamingServer = md.GetServerStreaming()\n\t}\n\treturn ms, nil\n}\n\nfunc (r descsByName) makeBase(child, parent protoreflect.Descriptor, name string, idx int, sb *strs.Builder) (filedesc.BaseL0, error) {\n\tif !protoreflect.Name(name).IsValid() {\n\t\treturn filedesc.BaseL0{}, errors.New(\"descriptor %q has an invalid nested name: %q\", parent.FullName(), name)\n\t}\n\n\t// Derive the full name of the child.\n\t// Note that enum values are a sibling to the enum parent in the namespace.\n\tvar fullName protoreflect.FullName\n\tif _, ok := parent.(protoreflect.EnumDescriptor); ok {\n\t\tfullName = sb.AppendFullName(parent.FullName().Parent(), protoreflect.Name(name))\n\t} else {\n\t\tfullName = sb.AppendFullName(parent.FullName(), protoreflect.Name(name))\n\t}\n\tif _, ok := r[fullName]; ok {\n\t\treturn filedesc.BaseL0{}, errors.New(\"descriptor %q already declared\", fullName)\n\t}\n\tr[fullName] = child\n\n\t// TODO: Verify that the full name does not already exist in the resolver?\n\t// This is not as critical since most usages of NewFile will register\n\t// the created file back into the registry, which will perform this check.\n\n\treturn filedesc.BaseL0{\n\t\tFullName:   fullName,\n\t\tParentFile: parent.ParentFile().(*filedesc.File),\n\t\tParent:     parent,\n\t\tIndex:      idx,\n\t}, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protodesc\n\nimport (\n\t\"google.golang.org/protobuf/internal/encoding/defval\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\n// resolver is a wrapper around a local registry of declarations within the file\n// and the remote resolver. The remote resolver is restricted to only return\n// descriptors that have been imported.\ntype resolver struct {\n\tlocal   descsByName\n\tremote  Resolver\n\timports importSet\n\n\tallowUnresolvable bool\n}\n\nfunc (r *resolver) resolveMessageDependencies(ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) (err error) {\n\tfor i, md := range mds {\n\t\tm := &ms[i]\n\t\tfor j, fd := range md.GetField() {\n\t\t\tf := &m.L2.Fields.List[j]\n\t\t\tif f.L1.Cardinality == protoreflect.Required {\n\t\t\t\tm.L2.RequiredNumbers.List = append(m.L2.RequiredNumbers.List, f.L1.Number)\n\t\t\t}\n\t\t\tif fd.OneofIndex != nil {\n\t\t\t\tk := int(fd.GetOneofIndex())\n\t\t\t\tif !(0 <= k && k < len(md.GetOneofDecl())) {\n\t\t\t\t\treturn errors.New(\"message field %q has an invalid oneof index: %d\", f.FullName(), k)\n\t\t\t\t}\n\t\t\t\to := &m.L2.Oneofs.List[k]\n\t\t\t\tf.L1.ContainingOneof = o\n\t\t\t\to.L1.Fields.List = append(o.L1.Fields.List, f)\n\t\t\t}\n\n\t\t\tif f.L1.Kind, f.L1.Enum, f.L1.Message, err = r.findTarget(f.Kind(), f.Parent().FullName(), partialName(fd.GetTypeName())); err != nil {\n\t\t\t\treturn errors.New(\"message field %q cannot resolve type: %v\", f.FullName(), err)\n\t\t\t}\n\t\t\tif f.L1.Kind == protoreflect.GroupKind && (f.IsMap() || f.IsMapEntry()) {\n\t\t\t\t// A map field might inherit delimited encoding from a file-wide default feature.\n\t\t\t\t// But maps never actually use delimited encoding. (At least for now...)\n\t\t\t\tf.L1.Kind = protoreflect.MessageKind\n\t\t\t}\n\t\t\tif fd.DefaultValue != nil {\n\t\t\t\tv, ev, err := unmarshalDefault(fd.GetDefaultValue(), f, r.allowUnresolvable)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn errors.New(\"message field %q has invalid default: %v\", f.FullName(), err)\n\t\t\t\t}\n\t\t\t\tf.L1.Default = filedesc.DefaultValue(v, ev)\n\t\t\t}\n\t\t}\n\n\t\tif err := r.resolveMessageDependencies(m.L1.Messages.List, md.GetNestedType()); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := r.resolveExtensionDependencies(m.L1.Extensions.List, md.GetExtension()); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (r *resolver) resolveExtensionDependencies(xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) (err error) {\n\tfor i, xd := range xds {\n\t\tx := &xs[i]\n\t\tif x.L1.Extendee, err = r.findMessageDescriptor(x.Parent().FullName(), partialName(xd.GetExtendee())); err != nil {\n\t\t\treturn errors.New(\"extension field %q cannot resolve extendee: %v\", x.FullName(), err)\n\t\t}\n\t\tif x.L1.Kind, x.L2.Enum, x.L2.Message, err = r.findTarget(x.Kind(), x.Parent().FullName(), partialName(xd.GetTypeName())); err != nil {\n\t\t\treturn errors.New(\"extension field %q cannot resolve type: %v\", x.FullName(), err)\n\t\t}\n\t\tif xd.DefaultValue != nil {\n\t\t\tv, ev, err := unmarshalDefault(xd.GetDefaultValue(), x, r.allowUnresolvable)\n\t\t\tif err != nil {\n\t\t\t\treturn errors.New(\"extension field %q has invalid default: %v\", x.FullName(), err)\n\t\t\t}\n\t\t\tx.L2.Default = filedesc.DefaultValue(v, ev)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (r *resolver) resolveServiceDependencies(ss []filedesc.Service, sds []*descriptorpb.ServiceDescriptorProto) (err error) {\n\tfor i, sd := range sds {\n\t\ts := &ss[i]\n\t\tfor j, md := range sd.GetMethod() {\n\t\t\tm := &s.L2.Methods.List[j]\n\t\t\tm.L1.Input, err = r.findMessageDescriptor(m.Parent().FullName(), partialName(md.GetInputType()))\n\t\t\tif err != nil {\n\t\t\t\treturn errors.New(\"service method %q cannot resolve input: %v\", m.FullName(), err)\n\t\t\t}\n\t\t\tm.L1.Output, err = r.findMessageDescriptor(s.FullName(), partialName(md.GetOutputType()))\n\t\t\tif err != nil {\n\t\t\t\treturn errors.New(\"service method %q cannot resolve output: %v\", m.FullName(), err)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// findTarget finds an enum or message descriptor if k is an enum, message,\n// group, or unknown. If unknown, and the name could be resolved, the kind\n// returned kind is set based on the type of the resolved descriptor.\nfunc (r *resolver) findTarget(k protoreflect.Kind, scope protoreflect.FullName, ref partialName) (protoreflect.Kind, protoreflect.EnumDescriptor, protoreflect.MessageDescriptor, error) {\n\tswitch k {\n\tcase protoreflect.EnumKind:\n\t\ted, err := r.findEnumDescriptor(scope, ref)\n\t\tif err != nil {\n\t\t\treturn 0, nil, nil, err\n\t\t}\n\t\treturn k, ed, nil, nil\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tmd, err := r.findMessageDescriptor(scope, ref)\n\t\tif err != nil {\n\t\t\treturn 0, nil, nil, err\n\t\t}\n\t\treturn k, nil, md, nil\n\tcase 0:\n\t\t// Handle unspecified kinds (possible with parsers that operate\n\t\t// on a per-file basis without knowledge of dependencies).\n\t\td, err := r.findDescriptor(scope, ref)\n\t\tif err == protoregistry.NotFound && r.allowUnresolvable {\n\t\t\treturn k, filedesc.PlaceholderEnum(ref.FullName()), filedesc.PlaceholderMessage(ref.FullName()), nil\n\t\t} else if err == protoregistry.NotFound {\n\t\t\treturn 0, nil, nil, errors.New(\"%q not found\", ref.FullName())\n\t\t} else if err != nil {\n\t\t\treturn 0, nil, nil, err\n\t\t}\n\t\tswitch d := d.(type) {\n\t\tcase protoreflect.EnumDescriptor:\n\t\t\treturn protoreflect.EnumKind, d, nil, nil\n\t\tcase protoreflect.MessageDescriptor:\n\t\t\treturn protoreflect.MessageKind, nil, d, nil\n\t\tdefault:\n\t\t\treturn 0, nil, nil, errors.New(\"unknown kind\")\n\t\t}\n\tdefault:\n\t\tif ref != \"\" {\n\t\t\treturn 0, nil, nil, errors.New(\"target name cannot be specified for %v\", k)\n\t\t}\n\t\tif !k.IsValid() {\n\t\t\treturn 0, nil, nil, errors.New(\"invalid kind: %d\", k)\n\t\t}\n\t\treturn k, nil, nil, nil\n\t}\n}\n\n// findDescriptor finds the descriptor by name,\n// which may be a relative name within some scope.\n//\n// Suppose the scope was \"fizz.buzz\" and the reference was \"Foo.Bar\",\n// then the following full names are searched:\n//   - fizz.buzz.Foo.Bar\n//   - fizz.Foo.Bar\n//   - Foo.Bar\nfunc (r *resolver) findDescriptor(scope protoreflect.FullName, ref partialName) (protoreflect.Descriptor, error) {\n\tif !ref.IsValid() {\n\t\treturn nil, errors.New(\"invalid name reference: %q\", ref)\n\t}\n\tif ref.IsFull() {\n\t\tscope, ref = \"\", ref[1:]\n\t}\n\tvar foundButNotImported protoreflect.Descriptor\n\tfor {\n\t\t// Derive the full name to search.\n\t\ts := protoreflect.FullName(ref)\n\t\tif scope != \"\" {\n\t\t\ts = scope + \".\" + s\n\t\t}\n\n\t\t// Check the current file for the descriptor.\n\t\tif d, ok := r.local[s]; ok {\n\t\t\treturn d, nil\n\t\t}\n\n\t\t// Check the remote registry for the descriptor.\n\t\td, err := r.remote.FindDescriptorByName(s)\n\t\tif err == nil {\n\t\t\t// Only allow descriptors covered by one of the imports.\n\t\t\tif r.imports[d.ParentFile().Path()] {\n\t\t\t\treturn d, nil\n\t\t\t}\n\t\t\tfoundButNotImported = d\n\t\t} else if err != protoregistry.NotFound {\n\t\t\treturn nil, errors.Wrap(err, \"%q\", s)\n\t\t}\n\n\t\t// Continue on at a higher level of scoping.\n\t\tif scope == \"\" {\n\t\t\tif d := foundButNotImported; d != nil {\n\t\t\t\treturn nil, errors.New(\"resolved %q, but %q is not imported\", d.FullName(), d.ParentFile().Path())\n\t\t\t}\n\t\t\treturn nil, protoregistry.NotFound\n\t\t}\n\t\tscope = scope.Parent()\n\t}\n}\n\nfunc (r *resolver) findEnumDescriptor(scope protoreflect.FullName, ref partialName) (protoreflect.EnumDescriptor, error) {\n\td, err := r.findDescriptor(scope, ref)\n\tif err == protoregistry.NotFound && r.allowUnresolvable {\n\t\treturn filedesc.PlaceholderEnum(ref.FullName()), nil\n\t} else if err == protoregistry.NotFound {\n\t\treturn nil, errors.New(\"%q not found\", ref.FullName())\n\t} else if err != nil {\n\t\treturn nil, err\n\t}\n\ted, ok := d.(protoreflect.EnumDescriptor)\n\tif !ok {\n\t\treturn nil, errors.New(\"resolved %q, but it is not an enum\", d.FullName())\n\t}\n\treturn ed, nil\n}\n\nfunc (r *resolver) findMessageDescriptor(scope protoreflect.FullName, ref partialName) (protoreflect.MessageDescriptor, error) {\n\td, err := r.findDescriptor(scope, ref)\n\tif err == protoregistry.NotFound && r.allowUnresolvable {\n\t\treturn filedesc.PlaceholderMessage(ref.FullName()), nil\n\t} else if err == protoregistry.NotFound {\n\t\treturn nil, errors.New(\"%q not found\", ref.FullName())\n\t} else if err != nil {\n\t\treturn nil, err\n\t}\n\tmd, ok := d.(protoreflect.MessageDescriptor)\n\tif !ok {\n\t\treturn nil, errors.New(\"resolved %q, but it is not an message\", d.FullName())\n\t}\n\treturn md, nil\n}\n\n// partialName is the partial name. A leading dot means that the name is full,\n// otherwise the name is relative to some current scope.\n// See google.protobuf.FieldDescriptorProto.type_name.\ntype partialName string\n\nfunc (s partialName) IsFull() bool {\n\treturn len(s) > 0 && s[0] == '.'\n}\n\nfunc (s partialName) IsValid() bool {\n\tif s.IsFull() {\n\t\treturn protoreflect.FullName(s[1:]).IsValid()\n\t}\n\treturn protoreflect.FullName(s).IsValid()\n}\n\nconst unknownPrefix = \"*.\"\n\n// FullName converts the partial name to a full name on a best-effort basis.\n// If relative, it creates an invalid full name, using a \"*.\" prefix\n// to indicate that the start of the full name is unknown.\nfunc (s partialName) FullName() protoreflect.FullName {\n\tif s.IsFull() {\n\t\treturn protoreflect.FullName(s[1:])\n\t}\n\treturn protoreflect.FullName(unknownPrefix + s)\n}\n\nfunc unmarshalDefault(s string, fd protoreflect.FieldDescriptor, allowUnresolvable bool) (protoreflect.Value, protoreflect.EnumValueDescriptor, error) {\n\tvar evs protoreflect.EnumValueDescriptors\n\tif fd.Enum() != nil {\n\t\tevs = fd.Enum().Values()\n\t}\n\tv, ev, err := defval.Unmarshal(s, fd.Kind(), evs, defval.Descriptor)\n\tif err != nil && allowUnresolvable && evs != nil && protoreflect.Name(s).IsValid() {\n\t\tv = protoreflect.ValueOfEnum(0)\n\t\tif evs.Len() > 0 {\n\t\t\tv = protoreflect.ValueOfEnum(evs.Get(0).Number())\n\t\t}\n\t\tev = filedesc.PlaceholderEnumValue(fd.Enum().FullName().Parent().Append(protoreflect.Name(s)))\n\t} else if err != nil {\n\t\treturn v, ev, err\n\t}\n\tif !fd.HasPresence() {\n\t\treturn v, ev, errors.New(\"cannot be specified with implicit field presence\")\n\t}\n\tif fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind || fd.Cardinality() == protoreflect.Repeated {\n\t\treturn v, ev, errors.New(\"cannot be specified on composite types\")\n\t}\n\treturn v, ev, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protodesc\n\nimport (\n\t\"strings\"\n\t\"unicode\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nfunc validateEnumDeclarations(es []filedesc.Enum, eds []*descriptorpb.EnumDescriptorProto) error {\n\tfor i, ed := range eds {\n\t\te := &es[i]\n\t\tif err := e.L2.ReservedNames.CheckValid(); err != nil {\n\t\t\treturn errors.New(\"enum %q reserved names has %v\", e.FullName(), err)\n\t\t}\n\t\tif err := e.L2.ReservedRanges.CheckValid(); err != nil {\n\t\t\treturn errors.New(\"enum %q reserved ranges has %v\", e.FullName(), err)\n\t\t}\n\t\tif len(ed.GetValue()) == 0 {\n\t\t\treturn errors.New(\"enum %q must contain at least one value declaration\", e.FullName())\n\t\t}\n\t\tallowAlias := ed.GetOptions().GetAllowAlias()\n\t\tfoundAlias := false\n\t\tfor i := 0; i < e.Values().Len(); i++ {\n\t\t\tv1 := e.Values().Get(i)\n\t\t\tif v2 := e.Values().ByNumber(v1.Number()); v1 != v2 {\n\t\t\t\tfoundAlias = true\n\t\t\t\tif !allowAlias {\n\t\t\t\t\treturn errors.New(\"enum %q has conflicting non-aliased values on number %d: %q with %q\", e.FullName(), v1.Number(), v1.Name(), v2.Name())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif allowAlias && !foundAlias {\n\t\t\treturn errors.New(\"enum %q allows aliases, but none were found\", e.FullName())\n\t\t}\n\t\tif !e.IsClosed() {\n\t\t\tif v := e.Values().Get(0); v.Number() != 0 {\n\t\t\t\treturn errors.New(\"enum %q using open semantics must have zero number for the first value\", v.FullName())\n\t\t\t}\n\t\t\t// Verify that value names in open enums do not conflict if the\n\t\t\t// case-insensitive prefix is removed.\n\t\t\t// See protoc v3.8.0: src/google/protobuf/descriptor.cc:4991-5055\n\t\t\tnames := map[string]protoreflect.EnumValueDescriptor{}\n\t\t\tprefix := strings.Replace(strings.ToLower(string(e.Name())), \"_\", \"\", -1)\n\t\t\tfor i := 0; i < e.Values().Len(); i++ {\n\t\t\t\tv1 := e.Values().Get(i)\n\t\t\t\ts := strs.EnumValueName(strs.TrimEnumPrefix(string(v1.Name()), prefix))\n\t\t\t\tif v2, ok := names[s]; ok && v1.Number() != v2.Number() {\n\t\t\t\t\treturn errors.New(\"enum %q using open semantics has conflict: %q with %q\", e.FullName(), v1.Name(), v2.Name())\n\t\t\t\t}\n\t\t\t\tnames[s] = v1\n\t\t\t}\n\t\t}\n\n\t\tfor j, vd := range ed.GetValue() {\n\t\t\tv := &e.L2.Values.List[j]\n\t\t\tif vd.Number == nil {\n\t\t\t\treturn errors.New(\"enum value %q must have a specified number\", v.FullName())\n\t\t\t}\n\t\t\tif e.L2.ReservedNames.Has(v.Name()) {\n\t\t\t\treturn errors.New(\"enum value %q must not use reserved name\", v.FullName())\n\t\t\t}\n\t\t\tif e.L2.ReservedRanges.Has(v.Number()) {\n\t\t\t\treturn errors.New(\"enum value %q must not use reserved number %d\", v.FullName(), v.Number())\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validateMessageDeclarations(file *filedesc.File, ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) error {\n\t// There are a few limited exceptions only for proto3\n\tisProto3 := file.L1.Edition == fromEditionProto(descriptorpb.Edition_EDITION_PROTO3)\n\tfor i, md := range mds {\n\t\tm := &ms[i]\n\n\t\t// Handle the message descriptor itself.\n\t\tisMessageSet := md.GetOptions().GetMessageSetWireFormat()\n\t\tif err := m.L2.ReservedNames.CheckValid(); err != nil {\n\t\t\treturn errors.New(\"message %q reserved names has %v\", m.FullName(), err)\n\t\t}\n\t\tif err := m.L2.ReservedRanges.CheckValid(isMessageSet); err != nil {\n\t\t\treturn errors.New(\"message %q reserved ranges has %v\", m.FullName(), err)\n\t\t}\n\t\tif err := m.L2.ExtensionRanges.CheckValid(isMessageSet); err != nil {\n\t\t\treturn errors.New(\"message %q extension ranges has %v\", m.FullName(), err)\n\t\t}\n\t\tif err := (*filedesc.FieldRanges).CheckOverlap(&m.L2.ReservedRanges, &m.L2.ExtensionRanges); err != nil {\n\t\t\treturn errors.New(\"message %q reserved and extension ranges has %v\", m.FullName(), err)\n\t\t}\n\t\tfor i := 0; i < m.Fields().Len(); i++ {\n\t\t\tf1 := m.Fields().Get(i)\n\t\t\tif f2 := m.Fields().ByNumber(f1.Number()); f1 != f2 {\n\t\t\t\treturn errors.New(\"message %q has conflicting fields: %q with %q\", m.FullName(), f1.Name(), f2.Name())\n\t\t\t}\n\t\t}\n\t\tif isMessageSet && !flags.ProtoLegacy {\n\t\t\treturn errors.New(\"message %q is a MessageSet, which is a legacy proto1 feature that is no longer supported\", m.FullName())\n\t\t}\n\t\tif isMessageSet && (isProto3 || m.Fields().Len() > 0 || m.ExtensionRanges().Len() == 0) {\n\t\t\treturn errors.New(\"message %q is an invalid proto1 MessageSet\", m.FullName())\n\t\t}\n\t\tif isProto3 {\n\t\t\tif m.ExtensionRanges().Len() > 0 {\n\t\t\t\treturn errors.New(\"message %q using proto3 semantics cannot have extension ranges\", m.FullName())\n\t\t\t}\n\t\t}\n\n\t\tfor j, fd := range md.GetField() {\n\t\t\tf := &m.L2.Fields.List[j]\n\t\t\tif m.L2.ReservedNames.Has(f.Name()) {\n\t\t\t\treturn errors.New(\"message field %q must not use reserved name\", f.FullName())\n\t\t\t}\n\t\t\tif !f.Number().IsValid() {\n\t\t\t\treturn errors.New(\"message field %q has an invalid number: %d\", f.FullName(), f.Number())\n\t\t\t}\n\t\t\tif !f.Cardinality().IsValid() {\n\t\t\t\treturn errors.New(\"message field %q has an invalid cardinality: %d\", f.FullName(), f.Cardinality())\n\t\t\t}\n\t\t\tif m.L2.ReservedRanges.Has(f.Number()) {\n\t\t\t\treturn errors.New(\"message field %q must not use reserved number %d\", f.FullName(), f.Number())\n\t\t\t}\n\t\t\tif m.L2.ExtensionRanges.Has(f.Number()) {\n\t\t\t\treturn errors.New(\"message field %q with number %d in extension range\", f.FullName(), f.Number())\n\t\t\t}\n\t\t\tif fd.Extendee != nil {\n\t\t\t\treturn errors.New(\"message field %q may not have extendee: %q\", f.FullName(), fd.GetExtendee())\n\t\t\t}\n\t\t\tif f.L1.IsProto3Optional {\n\t\t\t\tif !isProto3 {\n\t\t\t\t\treturn errors.New(\"message field %q under proto3 optional semantics must be specified in the proto3 syntax\", f.FullName())\n\t\t\t\t}\n\t\t\t\tif f.Cardinality() != protoreflect.Optional {\n\t\t\t\t\treturn errors.New(\"message field %q under proto3 optional semantics must have optional cardinality\", f.FullName())\n\t\t\t\t}\n\t\t\t\tif f.ContainingOneof() != nil && f.ContainingOneof().Fields().Len() != 1 {\n\t\t\t\t\treturn errors.New(\"message field %q under proto3 optional semantics must be within a single element oneof\", f.FullName())\n\t\t\t\t}\n\t\t\t}\n\t\t\tif f.IsPacked() && !isPackable(f) {\n\t\t\t\treturn errors.New(\"message field %q is not packable\", f.FullName())\n\t\t\t}\n\t\t\tif err := checkValidGroup(file, f); err != nil {\n\t\t\t\treturn errors.New(\"message field %q is an invalid group: %v\", f.FullName(), err)\n\t\t\t}\n\t\t\tif err := checkValidMap(f); err != nil {\n\t\t\t\treturn errors.New(\"message field %q is an invalid map: %v\", f.FullName(), err)\n\t\t\t}\n\t\t\tif isProto3 {\n\t\t\t\tif f.Cardinality() == protoreflect.Required {\n\t\t\t\t\treturn errors.New(\"message field %q using proto3 semantics cannot be required\", f.FullName())\n\t\t\t\t}\n\t\t\t\tif f.Enum() != nil && !f.Enum().IsPlaceholder() && f.Enum().IsClosed() {\n\t\t\t\t\treturn errors.New(\"message field %q using proto3 semantics may only depend on open enums\", f.FullName())\n\t\t\t\t}\n\t\t\t}\n\t\t\tif f.Cardinality() == protoreflect.Optional && !f.HasPresence() && f.Enum() != nil && !f.Enum().IsPlaceholder() && f.Enum().IsClosed() {\n\t\t\t\treturn errors.New(\"message field %q with implicit presence may only use open enums\", f.FullName())\n\t\t\t}\n\t\t}\n\t\tseenSynthetic := false // synthetic oneofs for proto3 optional must come after real oneofs\n\t\tfor j := range md.GetOneofDecl() {\n\t\t\to := &m.L2.Oneofs.List[j]\n\t\t\tif o.Fields().Len() == 0 {\n\t\t\t\treturn errors.New(\"message oneof %q must contain at least one field declaration\", o.FullName())\n\t\t\t}\n\t\t\tif n := o.Fields().Len(); n-1 != (o.Fields().Get(n-1).Index() - o.Fields().Get(0).Index()) {\n\t\t\t\treturn errors.New(\"message oneof %q must have consecutively declared fields\", o.FullName())\n\t\t\t}\n\n\t\t\tif o.IsSynthetic() {\n\t\t\t\tseenSynthetic = true\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !o.IsSynthetic() && seenSynthetic {\n\t\t\t\treturn errors.New(\"message oneof %q must be declared before synthetic oneofs\", o.FullName())\n\t\t\t}\n\n\t\t\tfor i := 0; i < o.Fields().Len(); i++ {\n\t\t\t\tf := o.Fields().Get(i)\n\t\t\t\tif f.Cardinality() != protoreflect.Optional {\n\t\t\t\t\treturn errors.New(\"message field %q belongs in a oneof and must be optional\", f.FullName())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif err := validateEnumDeclarations(m.L1.Enums.List, md.GetEnumType()); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := validateMessageDeclarations(file, m.L1.Messages.List, md.GetNestedType()); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := validateExtensionDeclarations(file, m.L1.Extensions.List, md.GetExtension()); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validateExtensionDeclarations(f *filedesc.File, xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) error {\n\tfor i, xd := range xds {\n\t\tx := &xs[i]\n\t\t// NOTE: Avoid using the IsValid method since extensions to MessageSet\n\t\t// may have a field number higher than normal. This check only verifies\n\t\t// that the number is not negative or reserved. We check again later\n\t\t// if we know that the extendee is definitely not a MessageSet.\n\t\tif n := x.Number(); n < 0 || (protowire.FirstReservedNumber <= n && n <= protowire.LastReservedNumber) {\n\t\t\treturn errors.New(\"extension field %q has an invalid number: %d\", x.FullName(), x.Number())\n\t\t}\n\t\tif !x.Cardinality().IsValid() || x.Cardinality() == protoreflect.Required {\n\t\t\treturn errors.New(\"extension field %q has an invalid cardinality: %d\", x.FullName(), x.Cardinality())\n\t\t}\n\t\tif xd.JsonName != nil {\n\t\t\t// A bug in older versions of protoc would always populate the\n\t\t\t// \"json_name\" option for extensions when it is meaningless.\n\t\t\t// When it did so, it would always use the camel-cased field name.\n\t\t\tif xd.GetJsonName() != strs.JSONCamelCase(string(x.Name())) {\n\t\t\t\treturn errors.New(\"extension field %q may not have an explicitly set JSON name: %q\", x.FullName(), xd.GetJsonName())\n\t\t\t}\n\t\t}\n\t\tif xd.OneofIndex != nil {\n\t\t\treturn errors.New(\"extension field %q may not be part of a oneof\", x.FullName())\n\t\t}\n\t\tif md := x.ContainingMessage(); !md.IsPlaceholder() {\n\t\t\tif !md.ExtensionRanges().Has(x.Number()) {\n\t\t\t\treturn errors.New(\"extension field %q extends %q with non-extension field number: %d\", x.FullName(), md.FullName(), x.Number())\n\t\t\t}\n\t\t\tisMessageSet := md.Options().(*descriptorpb.MessageOptions).GetMessageSetWireFormat()\n\t\t\tif isMessageSet && !isOptionalMessage(x) {\n\t\t\t\treturn errors.New(\"extension field %q extends MessageSet and must be an optional message\", x.FullName())\n\t\t\t}\n\t\t\tif !isMessageSet && !x.Number().IsValid() {\n\t\t\t\treturn errors.New(\"extension field %q has an invalid number: %d\", x.FullName(), x.Number())\n\t\t\t}\n\t\t}\n\t\tif x.IsPacked() && !isPackable(x) {\n\t\t\treturn errors.New(\"extension field %q is not packable\", x.FullName())\n\t\t}\n\t\tif err := checkValidGroup(f, x); err != nil {\n\t\t\treturn errors.New(\"extension field %q is an invalid group: %v\", x.FullName(), err)\n\t\t}\n\t\tif md := x.Message(); md != nil && md.IsMapEntry() {\n\t\t\treturn errors.New(\"extension field %q cannot be a map entry\", x.FullName())\n\t\t}\n\t\tif f.L1.Edition == fromEditionProto(descriptorpb.Edition_EDITION_PROTO3) {\n\t\t\tswitch x.ContainingMessage().FullName() {\n\t\t\tcase (*descriptorpb.FileOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.EnumOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.EnumValueOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.MessageOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.FieldOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.OneofOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.ExtensionRangeOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.ServiceOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.MethodOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tdefault:\n\t\t\t\treturn errors.New(\"extension field %q cannot be declared in proto3 unless extended descriptor options\", x.FullName())\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// isOptionalMessage reports whether this is an optional message.\n// If the kind is unknown, it is assumed to be a message.\nfunc isOptionalMessage(fd protoreflect.FieldDescriptor) bool {\n\treturn (fd.Kind() == 0 || fd.Kind() == protoreflect.MessageKind) && fd.Cardinality() == protoreflect.Optional\n}\n\n// isPackable checks whether the pack option can be specified.\nfunc isPackable(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.Kind() {\n\tcase protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn false\n\t}\n\treturn fd.IsList()\n}\n\n// checkValidGroup reports whether fd is a valid group according to the same\n// rules that protoc imposes.\nfunc checkValidGroup(f *filedesc.File, fd protoreflect.FieldDescriptor) error {\n\tmd := fd.Message()\n\tswitch {\n\tcase fd.Kind() != protoreflect.GroupKind:\n\t\treturn nil\n\tcase f.L1.Edition == fromEditionProto(descriptorpb.Edition_EDITION_PROTO3):\n\t\treturn errors.New(\"invalid under proto3 semantics\")\n\tcase md == nil || md.IsPlaceholder():\n\t\treturn errors.New(\"message must be resolvable\")\n\t}\n\tif f.L1.Edition < fromEditionProto(descriptorpb.Edition_EDITION_2023) {\n\t\tswitch {\n\t\tcase fd.FullName().Parent() != md.FullName().Parent():\n\t\t\treturn errors.New(\"message and field must be declared in the same scope\")\n\t\tcase !unicode.IsUpper(rune(md.Name()[0])):\n\t\t\treturn errors.New(\"message name must start with an uppercase\")\n\t\tcase fd.Name() != protoreflect.Name(strings.ToLower(string(md.Name()))):\n\t\t\treturn errors.New(\"field name must be lowercased form of the message name\")\n\t\t}\n\t}\n\treturn nil\n}\n\n// checkValidMap checks whether the field is a valid map according to the same\n// rules that protoc imposes.\n// See protoc v3.8.0: src/google/protobuf/descriptor.cc:6045-6115\nfunc checkValidMap(fd protoreflect.FieldDescriptor) error {\n\tmd := fd.Message()\n\tswitch {\n\tcase md == nil || !md.IsMapEntry():\n\t\treturn nil\n\tcase fd.FullName().Parent() != md.FullName().Parent():\n\t\treturn errors.New(\"message and field must be declared in the same scope\")\n\tcase md.Name() != protoreflect.Name(strs.MapEntryName(string(fd.Name()))):\n\t\treturn errors.New(\"incorrect implicit map entry name\")\n\tcase fd.Cardinality() != protoreflect.Repeated:\n\t\treturn errors.New(\"field must be repeated\")\n\tcase md.Fields().Len() != 2:\n\t\treturn errors.New(\"message must have exactly two fields\")\n\tcase md.ExtensionRanges().Len() > 0:\n\t\treturn errors.New(\"message must not have any extension ranges\")\n\tcase md.Enums().Len()+md.Messages().Len()+md.Extensions().Len() > 0:\n\t\treturn errors.New(\"message must not have any nested declarations\")\n\t}\n\tkf := md.Fields().Get(0)\n\tvf := md.Fields().Get(1)\n\tswitch {\n\tcase kf.Name() != genid.MapEntry_Key_field_name || kf.Number() != genid.MapEntry_Key_field_number || kf.Cardinality() != protoreflect.Optional || kf.ContainingOneof() != nil || kf.HasDefault():\n\t\treturn errors.New(\"invalid key field\")\n\tcase vf.Name() != genid.MapEntry_Value_field_name || vf.Number() != genid.MapEntry_Value_field_number || vf.Cardinality() != protoreflect.Optional || vf.ContainingOneof() != nil || vf.HasDefault():\n\t\treturn errors.New(\"invalid value field\")\n\t}\n\tswitch kf.Kind() {\n\tcase protoreflect.BoolKind: // bool\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: // int32\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: // int64\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind: // uint32\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind: // uint64\n\tcase protoreflect.StringKind: // string\n\tdefault:\n\t\treturn errors.New(\"invalid key kind: %v\", kf.Kind())\n\t}\n\tif e := vf.Enum(); e != nil && e.Values().Len() > 0 && e.Values().Get(0).Number() != 0 {\n\t\treturn errors.New(\"map enum value must have zero number for the first value\")\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/editions.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protodesc\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/editiondefaults\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n\t\"google.golang.org/protobuf/types/gofeaturespb\"\n)\n\nvar defaults = &descriptorpb.FeatureSetDefaults{}\nvar defaultsCacheMu sync.Mutex\nvar defaultsCache = make(map[filedesc.Edition]*descriptorpb.FeatureSet)\n\nfunc init() {\n\terr := proto.Unmarshal(editiondefaults.Defaults, defaults)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"unmarshal editions defaults: %v\\n\", err)\n\t\tos.Exit(1)\n\t}\n}\n\nfunc fromEditionProto(epb descriptorpb.Edition) filedesc.Edition {\n\treturn filedesc.Edition(epb)\n}\n\nfunc toEditionProto(ed filedesc.Edition) descriptorpb.Edition {\n\tswitch ed {\n\tcase filedesc.EditionUnknown:\n\t\treturn descriptorpb.Edition_EDITION_UNKNOWN\n\tcase filedesc.EditionProto2:\n\t\treturn descriptorpb.Edition_EDITION_PROTO2\n\tcase filedesc.EditionProto3:\n\t\treturn descriptorpb.Edition_EDITION_PROTO3\n\tcase filedesc.Edition2023:\n\t\treturn descriptorpb.Edition_EDITION_2023\n\tcase filedesc.Edition2024:\n\t\treturn descriptorpb.Edition_EDITION_2024\n\tcase filedesc.EditionUnstable:\n\t\treturn descriptorpb.Edition_EDITION_UNSTABLE\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unknown value for edition: %v\", ed))\n\t}\n}\n\nfunc getFeatureSetFor(ed filedesc.Edition) *descriptorpb.FeatureSet {\n\tdefaultsCacheMu.Lock()\n\tdefer defaultsCacheMu.Unlock()\n\tif def, ok := defaultsCache[ed]; ok {\n\t\treturn def\n\t}\n\tedpb := toEditionProto(ed)\n\tif (defaults.GetMinimumEdition() > edpb || defaults.GetMaximumEdition() < edpb) && edpb != descriptorpb.Edition_EDITION_UNSTABLE {\n\t\t// This should never happen protodesc.(FileOptions).New would fail when\n\t\t// initializing the file descriptor.\n\t\t// This most likely means the embedded defaults were not updated.\n\t\tfmt.Fprintf(os.Stderr, \"internal error: unsupported edition %v (did you forget to update the embedded defaults (i.e. the bootstrap descriptor proto)?)\\n\", edpb)\n\t\tos.Exit(1)\n\t}\n\tfsed := defaults.GetDefaults()[0]\n\t// Using a linear search for now.\n\t// Editions are guaranteed to be sorted and thus we could use a binary search.\n\t// Given that there are only a handful of editions (with one more per year)\n\t// there is not much reason to use a binary search.\n\tfor _, def := range defaults.GetDefaults() {\n\t\tif def.GetEdition() <= edpb {\n\t\t\tfsed = def\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\tfs := proto.Clone(fsed.GetFixedFeatures()).(*descriptorpb.FeatureSet)\n\tproto.Merge(fs, fsed.GetOverridableFeatures())\n\tdefaultsCache[ed] = fs\n\treturn fs\n}\n\n// mergeEditionFeatures merges the parent and child feature sets. This function\n// should be used when initializing Go descriptors from descriptor protos which\n// is why the parent is a filedesc.EditionsFeatures (Go representation) while\n// the child is a descriptorproto.FeatureSet (protoc representation).\n// Any feature set by the child overwrites what is set by the parent.\nfunc mergeEditionFeatures(parentDesc protoreflect.Descriptor, child *descriptorpb.FeatureSet) filedesc.EditionFeatures {\n\tvar parentFS filedesc.EditionFeatures\n\tswitch p := parentDesc.(type) {\n\tcase *filedesc.File:\n\t\tparentFS = p.L1.EditionFeatures\n\tcase *filedesc.Message:\n\t\tparentFS = p.L1.EditionFeatures\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unknown parent type %T\", parentDesc))\n\t}\n\tif child == nil {\n\t\treturn parentFS\n\t}\n\tif fp := child.FieldPresence; fp != nil {\n\t\tparentFS.IsFieldPresence = *fp == descriptorpb.FeatureSet_LEGACY_REQUIRED ||\n\t\t\t*fp == descriptorpb.FeatureSet_EXPLICIT\n\t\tparentFS.IsLegacyRequired = *fp == descriptorpb.FeatureSet_LEGACY_REQUIRED\n\t}\n\tif et := child.EnumType; et != nil {\n\t\tparentFS.IsOpenEnum = *et == descriptorpb.FeatureSet_OPEN\n\t}\n\n\tif rfe := child.RepeatedFieldEncoding; rfe != nil {\n\t\tparentFS.IsPacked = *rfe == descriptorpb.FeatureSet_PACKED\n\t}\n\n\tif utf8val := child.Utf8Validation; utf8val != nil {\n\t\tparentFS.IsUTF8Validated = *utf8val == descriptorpb.FeatureSet_VERIFY\n\t}\n\n\tif me := child.MessageEncoding; me != nil {\n\t\tparentFS.IsDelimitedEncoded = *me == descriptorpb.FeatureSet_DELIMITED\n\t}\n\n\tif jf := child.JsonFormat; jf != nil {\n\t\tparentFS.IsJSONCompliant = *jf == descriptorpb.FeatureSet_ALLOW\n\t}\n\n\t// We must not use proto.GetExtension(child, gofeaturespb.E_Go)\n\t// because that only works for messages we generated, but not for\n\t// dynamicpb messages. See golang/protobuf#1669.\n\t//\n\t// Further, we harden this code against adversarial inputs: a\n\t// service which accepts descriptors from a possibly malicious\n\t// source shouldn't crash.\n\tgoFeatures := child.ProtoReflect().Get(gofeaturespb.E_Go.TypeDescriptor())\n\tif !goFeatures.IsValid() {\n\t\treturn parentFS\n\t}\n\tgf, ok := goFeatures.Interface().(protoreflect.Message)\n\tif !ok {\n\t\treturn parentFS\n\t}\n\t// gf.Interface() could be *dynamicpb.Message or *gofeaturespb.GoFeatures.\n\tfields := gf.Descriptor().Fields()\n\n\tif fd := fields.ByNumber(genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number); fd != nil &&\n\t\t!fd.IsList() &&\n\t\tfd.Kind() == protoreflect.BoolKind &&\n\t\tgf.Has(fd) {\n\t\tparentFS.GenerateLegacyUnmarshalJSON = gf.Get(fd).Bool()\n\t}\n\n\tif fd := fields.ByNumber(genid.GoFeatures_StripEnumPrefix_field_number); fd != nil &&\n\t\t!fd.IsList() &&\n\t\tfd.Kind() == protoreflect.EnumKind &&\n\t\tgf.Has(fd) {\n\t\tparentFS.StripEnumPrefix = int(gf.Get(fd).Enum())\n\t}\n\n\tif fd := fields.ByNumber(genid.GoFeatures_ApiLevel_field_number); fd != nil &&\n\t\t!fd.IsList() &&\n\t\tfd.Kind() == protoreflect.EnumKind &&\n\t\tgf.Has(fd) {\n\t\tparentFS.APILevel = int(gf.Get(fd).Enum())\n\t}\n\n\treturn parentFS\n}\n\n// initFileDescFromFeatureSet initializes editions related fields in fd based\n// on fs. If fs is nil it is assumed to be an empty featureset and all fields\n// will be initialized with the appropriate default. fd.L1.Edition must be set\n// before calling this function.\nfunc initFileDescFromFeatureSet(fd *filedesc.File, fs *descriptorpb.FeatureSet) {\n\tdfs := getFeatureSetFor(fd.L1.Edition)\n\t// initialize the featureset with the defaults\n\tfd.L1.EditionFeatures = mergeEditionFeatures(fd, dfs)\n\t// overwrite any options explicitly specified\n\tfd.L1.EditionFeatures = mergeEditionFeatures(fd, fs)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/proto.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protodesc\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/encoding/defval\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\n// ToFileDescriptorProto copies a [protoreflect.FileDescriptor] into a\n// google.protobuf.FileDescriptorProto message.\nfunc ToFileDescriptorProto(file protoreflect.FileDescriptor) *descriptorpb.FileDescriptorProto {\n\tp := &descriptorpb.FileDescriptorProto{\n\t\tName:    proto.String(file.Path()),\n\t\tOptions: proto.Clone(file.Options()).(*descriptorpb.FileOptions),\n\t}\n\tif file.Package() != \"\" {\n\t\tp.Package = proto.String(string(file.Package()))\n\t}\n\tfor i, imports := 0, file.Imports(); i < imports.Len(); i++ {\n\t\timp := imports.Get(i)\n\t\tp.Dependency = append(p.Dependency, imp.Path())\n\t\tif imp.IsPublic {\n\t\t\tp.PublicDependency = append(p.PublicDependency, int32(i))\n\t\t}\n\t}\n\tfor i, locs := 0, file.SourceLocations(); i < locs.Len(); i++ {\n\t\tloc := locs.Get(i)\n\t\tl := &descriptorpb.SourceCodeInfo_Location{}\n\t\tl.Path = append(l.Path, loc.Path...)\n\t\tif loc.StartLine == loc.EndLine {\n\t\t\tl.Span = []int32{int32(loc.StartLine), int32(loc.StartColumn), int32(loc.EndColumn)}\n\t\t} else {\n\t\t\tl.Span = []int32{int32(loc.StartLine), int32(loc.StartColumn), int32(loc.EndLine), int32(loc.EndColumn)}\n\t\t}\n\t\tl.LeadingDetachedComments = append([]string(nil), loc.LeadingDetachedComments...)\n\t\tif loc.LeadingComments != \"\" {\n\t\t\tl.LeadingComments = proto.String(loc.LeadingComments)\n\t\t}\n\t\tif loc.TrailingComments != \"\" {\n\t\t\tl.TrailingComments = proto.String(loc.TrailingComments)\n\t\t}\n\t\tif p.SourceCodeInfo == nil {\n\t\t\tp.SourceCodeInfo = &descriptorpb.SourceCodeInfo{}\n\t\t}\n\t\tp.SourceCodeInfo.Location = append(p.SourceCodeInfo.Location, l)\n\n\t}\n\tfor i, messages := 0, file.Messages(); i < messages.Len(); i++ {\n\t\tp.MessageType = append(p.MessageType, ToDescriptorProto(messages.Get(i)))\n\t}\n\tfor i, enums := 0, file.Enums(); i < enums.Len(); i++ {\n\t\tp.EnumType = append(p.EnumType, ToEnumDescriptorProto(enums.Get(i)))\n\t}\n\tfor i, services := 0, file.Services(); i < services.Len(); i++ {\n\t\tp.Service = append(p.Service, ToServiceDescriptorProto(services.Get(i)))\n\t}\n\tfor i, exts := 0, file.Extensions(); i < exts.Len(); i++ {\n\t\tp.Extension = append(p.Extension, ToFieldDescriptorProto(exts.Get(i)))\n\t}\n\tif syntax := file.Syntax(); syntax != protoreflect.Proto2 && syntax.IsValid() {\n\t\tp.Syntax = proto.String(file.Syntax().String())\n\t}\n\tdesc := file\n\tif fileImportDesc, ok := file.(protoreflect.FileImport); ok {\n\t\tdesc = fileImportDesc.FileDescriptor\n\t}\n\tif file.Syntax() == protoreflect.Editions {\n\t\tif editionsInterface, ok := desc.(interface{ Edition() int32 }); ok {\n\t\t\tp.Edition = descriptorpb.Edition(editionsInterface.Edition()).Enum()\n\t\t}\n\t}\n\ttype hasOptionImports interface {\n\t\tOptionImports() protoreflect.FileImports\n\t}\n\tif opts, ok := desc.(hasOptionImports); ok {\n\t\tif optionImports := opts.OptionImports(); optionImports.Len() > 0 {\n\t\t\toptionDeps := make([]string, optionImports.Len())\n\t\t\tfor i := range optionImports.Len() {\n\t\t\t\toptionDeps[i] = optionImports.Get(i).Path()\n\t\t\t}\n\t\t\tp.OptionDependency = optionDeps\n\t\t}\n\t}\n\treturn p\n}\n\n// ToDescriptorProto copies a [protoreflect.MessageDescriptor] into a\n// google.protobuf.DescriptorProto message.\nfunc ToDescriptorProto(message protoreflect.MessageDescriptor) *descriptorpb.DescriptorProto {\n\tp := &descriptorpb.DescriptorProto{\n\t\tName:    proto.String(string(message.Name())),\n\t\tOptions: proto.Clone(message.Options()).(*descriptorpb.MessageOptions),\n\t}\n\tfor i, fields := 0, message.Fields(); i < fields.Len(); i++ {\n\t\tp.Field = append(p.Field, ToFieldDescriptorProto(fields.Get(i)))\n\t}\n\tfor i, exts := 0, message.Extensions(); i < exts.Len(); i++ {\n\t\tp.Extension = append(p.Extension, ToFieldDescriptorProto(exts.Get(i)))\n\t}\n\tfor i, messages := 0, message.Messages(); i < messages.Len(); i++ {\n\t\tp.NestedType = append(p.NestedType, ToDescriptorProto(messages.Get(i)))\n\t}\n\tfor i, enums := 0, message.Enums(); i < enums.Len(); i++ {\n\t\tp.EnumType = append(p.EnumType, ToEnumDescriptorProto(enums.Get(i)))\n\t}\n\tfor i, xranges := 0, message.ExtensionRanges(); i < xranges.Len(); i++ {\n\t\txrange := xranges.Get(i)\n\t\tp.ExtensionRange = append(p.ExtensionRange, &descriptorpb.DescriptorProto_ExtensionRange{\n\t\t\tStart:   proto.Int32(int32(xrange[0])),\n\t\t\tEnd:     proto.Int32(int32(xrange[1])),\n\t\t\tOptions: proto.Clone(message.ExtensionRangeOptions(i)).(*descriptorpb.ExtensionRangeOptions),\n\t\t})\n\t}\n\tfor i, oneofs := 0, message.Oneofs(); i < oneofs.Len(); i++ {\n\t\tp.OneofDecl = append(p.OneofDecl, ToOneofDescriptorProto(oneofs.Get(i)))\n\t}\n\tfor i, ranges := 0, message.ReservedRanges(); i < ranges.Len(); i++ {\n\t\trrange := ranges.Get(i)\n\t\tp.ReservedRange = append(p.ReservedRange, &descriptorpb.DescriptorProto_ReservedRange{\n\t\t\tStart: proto.Int32(int32(rrange[0])),\n\t\t\tEnd:   proto.Int32(int32(rrange[1])),\n\t\t})\n\t}\n\tfor i, names := 0, message.ReservedNames(); i < names.Len(); i++ {\n\t\tp.ReservedName = append(p.ReservedName, string(names.Get(i)))\n\t}\n\ttype hasVisibility interface {\n\t\tVisibility() int32\n\t}\n\tif vis, ok := message.(hasVisibility); ok {\n\t\tif visibility := vis.Visibility(); visibility > 0 {\n\t\t\tp.Visibility = descriptorpb.SymbolVisibility(visibility).Enum()\n\t\t}\n\t}\n\treturn p\n}\n\n// ToFieldDescriptorProto copies a [protoreflect.FieldDescriptor] into a\n// google.protobuf.FieldDescriptorProto message.\nfunc ToFieldDescriptorProto(field protoreflect.FieldDescriptor) *descriptorpb.FieldDescriptorProto {\n\tp := &descriptorpb.FieldDescriptorProto{\n\t\tName:    proto.String(string(field.Name())),\n\t\tNumber:  proto.Int32(int32(field.Number())),\n\t\tLabel:   descriptorpb.FieldDescriptorProto_Label(field.Cardinality()).Enum(),\n\t\tOptions: proto.Clone(field.Options()).(*descriptorpb.FieldOptions),\n\t}\n\tif field.IsExtension() {\n\t\tp.Extendee = fullNameOf(field.ContainingMessage())\n\t}\n\tif field.Kind().IsValid() {\n\t\tp.Type = descriptorpb.FieldDescriptorProto_Type(field.Kind()).Enum()\n\t}\n\tif field.Enum() != nil {\n\t\tp.TypeName = fullNameOf(field.Enum())\n\t}\n\tif field.Message() != nil {\n\t\tp.TypeName = fullNameOf(field.Message())\n\t}\n\tif field.HasJSONName() {\n\t\t// A bug in older versions of protoc would always populate the\n\t\t// \"json_name\" option for extensions when it is meaningless.\n\t\t// When it did so, it would always use the camel-cased field name.\n\t\tif field.IsExtension() {\n\t\t\tp.JsonName = proto.String(strs.JSONCamelCase(string(field.Name())))\n\t\t} else {\n\t\t\tp.JsonName = proto.String(field.JSONName())\n\t\t}\n\t}\n\tif field.Syntax() == protoreflect.Proto3 && field.HasOptionalKeyword() {\n\t\tp.Proto3Optional = proto.Bool(true)\n\t}\n\tif field.Syntax() == protoreflect.Editions {\n\t\t// Editions have no group keyword, this type is only set so that downstream users continue\n\t\t// treating this as delimited encoding.\n\t\tif p.GetType() == descriptorpb.FieldDescriptorProto_TYPE_GROUP {\n\t\t\tp.Type = descriptorpb.FieldDescriptorProto_TYPE_MESSAGE.Enum()\n\t\t}\n\t\t// Editions have no required keyword, this label is only set so that downstream users continue\n\t\t// treating it as required.\n\t\tif p.GetLabel() == descriptorpb.FieldDescriptorProto_LABEL_REQUIRED {\n\t\t\tp.Label = descriptorpb.FieldDescriptorProto_LABEL_OPTIONAL.Enum()\n\t\t}\n\t}\n\tif field.HasDefault() {\n\t\tdef, err := defval.Marshal(field.Default(), field.DefaultEnumValue(), field.Kind(), defval.Descriptor)\n\t\tif err != nil && field.DefaultEnumValue() != nil {\n\t\t\tdef = string(field.DefaultEnumValue().Name()) // occurs for unresolved enum values\n\t\t} else if err != nil {\n\t\t\tpanic(fmt.Sprintf(\"%v: %v\", field.FullName(), err))\n\t\t}\n\t\tp.DefaultValue = proto.String(def)\n\t}\n\tif oneof := field.ContainingOneof(); oneof != nil {\n\t\tp.OneofIndex = proto.Int32(int32(oneof.Index()))\n\t}\n\treturn p\n}\n\n// ToOneofDescriptorProto copies a [protoreflect.OneofDescriptor] into a\n// google.protobuf.OneofDescriptorProto message.\nfunc ToOneofDescriptorProto(oneof protoreflect.OneofDescriptor) *descriptorpb.OneofDescriptorProto {\n\treturn &descriptorpb.OneofDescriptorProto{\n\t\tName:    proto.String(string(oneof.Name())),\n\t\tOptions: proto.Clone(oneof.Options()).(*descriptorpb.OneofOptions),\n\t}\n}\n\n// ToEnumDescriptorProto copies a [protoreflect.EnumDescriptor] into a\n// google.protobuf.EnumDescriptorProto message.\nfunc ToEnumDescriptorProto(enum protoreflect.EnumDescriptor) *descriptorpb.EnumDescriptorProto {\n\tp := &descriptorpb.EnumDescriptorProto{\n\t\tName:    proto.String(string(enum.Name())),\n\t\tOptions: proto.Clone(enum.Options()).(*descriptorpb.EnumOptions),\n\t}\n\tfor i, values := 0, enum.Values(); i < values.Len(); i++ {\n\t\tp.Value = append(p.Value, ToEnumValueDescriptorProto(values.Get(i)))\n\t}\n\tfor i, ranges := 0, enum.ReservedRanges(); i < ranges.Len(); i++ {\n\t\trrange := ranges.Get(i)\n\t\tp.ReservedRange = append(p.ReservedRange, &descriptorpb.EnumDescriptorProto_EnumReservedRange{\n\t\t\tStart: proto.Int32(int32(rrange[0])),\n\t\t\tEnd:   proto.Int32(int32(rrange[1])),\n\t\t})\n\t}\n\tfor i, names := 0, enum.ReservedNames(); i < names.Len(); i++ {\n\t\tp.ReservedName = append(p.ReservedName, string(names.Get(i)))\n\t}\n\ttype hasVisibility interface {\n\t\tVisibility() int32\n\t}\n\tif vis, ok := enum.(hasVisibility); ok {\n\t\tif visibility := vis.Visibility(); visibility > 0 {\n\t\t\tp.Visibility = descriptorpb.SymbolVisibility(visibility).Enum()\n\t\t}\n\t}\n\treturn p\n}\n\n// ToEnumValueDescriptorProto copies a [protoreflect.EnumValueDescriptor] into a\n// google.protobuf.EnumValueDescriptorProto message.\nfunc ToEnumValueDescriptorProto(value protoreflect.EnumValueDescriptor) *descriptorpb.EnumValueDescriptorProto {\n\treturn &descriptorpb.EnumValueDescriptorProto{\n\t\tName:    proto.String(string(value.Name())),\n\t\tNumber:  proto.Int32(int32(value.Number())),\n\t\tOptions: proto.Clone(value.Options()).(*descriptorpb.EnumValueOptions),\n\t}\n}\n\n// ToServiceDescriptorProto copies a [protoreflect.ServiceDescriptor] into a\n// google.protobuf.ServiceDescriptorProto message.\nfunc ToServiceDescriptorProto(service protoreflect.ServiceDescriptor) *descriptorpb.ServiceDescriptorProto {\n\tp := &descriptorpb.ServiceDescriptorProto{\n\t\tName:    proto.String(string(service.Name())),\n\t\tOptions: proto.Clone(service.Options()).(*descriptorpb.ServiceOptions),\n\t}\n\tfor i, methods := 0, service.Methods(); i < methods.Len(); i++ {\n\t\tp.Method = append(p.Method, ToMethodDescriptorProto(methods.Get(i)))\n\t}\n\treturn p\n}\n\n// ToMethodDescriptorProto copies a [protoreflect.MethodDescriptor] into a\n// google.protobuf.MethodDescriptorProto message.\nfunc ToMethodDescriptorProto(method protoreflect.MethodDescriptor) *descriptorpb.MethodDescriptorProto {\n\tp := &descriptorpb.MethodDescriptorProto{\n\t\tName:       proto.String(string(method.Name())),\n\t\tInputType:  fullNameOf(method.Input()),\n\t\tOutputType: fullNameOf(method.Output()),\n\t\tOptions:    proto.Clone(method.Options()).(*descriptorpb.MethodOptions),\n\t}\n\tif method.IsStreamingClient() {\n\t\tp.ClientStreaming = proto.Bool(true)\n\t}\n\tif method.IsStreamingServer() {\n\t\tp.ServerStreaming = proto.Bool(true)\n\t}\n\treturn p\n}\n\nfunc fullNameOf(d protoreflect.Descriptor) *string {\n\tif d == nil {\n\t\treturn nil\n\t}\n\tif strings.HasPrefix(string(d.FullName()), unknownPrefix) {\n\t\treturn proto.String(string(d.FullName()[len(unknownPrefix):]))\n\t}\n\treturn proto.String(\".\" + string(d.FullName()))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protopath/path.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protopath provides functionality for\n// representing a sequence of protobuf reflection operations on a message.\npackage protopath\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/internal/msgfmt\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// NOTE: The Path and Values are separate types here since there are use cases\n// where you would like to \"address\" some value in a message with just the path\n// and don't have the value information available.\n//\n// This is different from how github.com/google/go-cmp/cmp.Path operates,\n// which combines both path and value information together.\n// Since the cmp package itself is the only one ever constructing a cmp.Path,\n// it will always have the value available.\n\n// Path is a sequence of protobuf reflection steps applied to some root\n// protobuf message value to arrive at the current value.\n// The first step must be a [Root] step.\ntype Path []Step\n\n// TODO: Provide a Parse function that parses something similar to or\n// perhaps identical to the output of Path.String.\n\n// Index returns the ith step in the path and supports negative indexing.\n// A negative index starts counting from the tail of the Path such that -1\n// refers to the last step, -2 refers to the second-to-last step, and so on.\n// It returns a zero Step value if the index is out-of-bounds.\nfunc (p Path) Index(i int) Step {\n\tif i < 0 {\n\t\ti = len(p) + i\n\t}\n\tif i < 0 || i >= len(p) {\n\t\treturn Step{}\n\t}\n\treturn p[i]\n}\n\n// String returns a structured representation of the path\n// by concatenating the string representation of every path step.\nfunc (p Path) String() string {\n\tvar b []byte\n\tfor _, s := range p {\n\t\tb = s.appendString(b)\n\t}\n\treturn string(b)\n}\n\n// Values is a Path paired with a sequence of values at each step.\n// The lengths of [Values.Path] and [Values.Values] must be identical.\n// The first step must be a [Root] step and\n// the first value must be a concrete message value.\ntype Values struct {\n\tPath   Path\n\tValues []protoreflect.Value\n}\n\n// Len reports the length of the path and values.\n// If the path and values have differing length, it returns the minimum length.\nfunc (p Values) Len() int {\n\tn := len(p.Path)\n\tif n > len(p.Values) {\n\t\tn = len(p.Values)\n\t}\n\treturn n\n}\n\n// Index returns the ith step and value and supports negative indexing.\n// A negative index starts counting from the tail of the Values such that -1\n// refers to the last pair, -2 refers to the second-to-last pair, and so on.\nfunc (p Values) Index(i int) (out struct {\n\tStep  Step\n\tValue protoreflect.Value\n}) {\n\t// NOTE: This returns a single struct instead of two return values so that\n\t// callers can make use of the the value in an expression:\n\t//\tvs.Index(i).Value.Interface()\n\tn := p.Len()\n\tif i < 0 {\n\t\ti = n + i\n\t}\n\tif i < 0 || i >= n {\n\t\treturn out\n\t}\n\tout.Step = p.Path[i]\n\tout.Value = p.Values[i]\n\treturn out\n}\n\n// String returns a humanly readable representation of the path and last value.\n// Do not depend on the output being stable.\n//\n// For example:\n//\n//\t(path.to.MyMessage).list_field[5].map_field[\"hello\"] = {hello: \"world\"}\nfunc (p Values) String() string {\n\tn := p.Len()\n\tif n == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Determine the field descriptor associated with the last step.\n\tvar fd protoreflect.FieldDescriptor\n\tlast := p.Index(-1)\n\tswitch last.Step.kind {\n\tcase FieldAccessStep:\n\t\tfd = last.Step.FieldDescriptor()\n\tcase MapIndexStep, ListIndexStep:\n\t\tfd = p.Index(-2).Step.FieldDescriptor()\n\t}\n\n\t// Format the full path with the last value.\n\treturn fmt.Sprintf(\"%v = %v\", p.Path[:n], msgfmt.FormatValue(last.Value, fd))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protopath/step.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protopath\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/encoding/text\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// StepKind identifies the kind of step operation.\n// Each kind of step corresponds with some protobuf reflection operation.\ntype StepKind int\n\nconst (\n\tinvalidStep StepKind = iota\n\t// RootStep identifies a step as the Root step operation.\n\tRootStep\n\t// FieldAccessStep identifies a step as the FieldAccess step operation.\n\tFieldAccessStep\n\t// UnknownAccessStep identifies a step as the UnknownAccess step operation.\n\tUnknownAccessStep\n\t// ListIndexStep identifies a step as the ListIndex step operation.\n\tListIndexStep\n\t// MapIndexStep identifies a step as the MapIndex step operation.\n\tMapIndexStep\n\t// AnyExpandStep identifies a step as the AnyExpand step operation.\n\tAnyExpandStep\n)\n\nfunc (k StepKind) String() string {\n\tswitch k {\n\tcase invalidStep:\n\t\treturn \"<invalid>\"\n\tcase RootStep:\n\t\treturn \"Root\"\n\tcase FieldAccessStep:\n\t\treturn \"FieldAccess\"\n\tcase UnknownAccessStep:\n\t\treturn \"UnknownAccess\"\n\tcase ListIndexStep:\n\t\treturn \"ListIndex\"\n\tcase MapIndexStep:\n\t\treturn \"MapIndex\"\n\tcase AnyExpandStep:\n\t\treturn \"AnyExpand\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<unknown:%d>\", k)\n\t}\n}\n\n// Step is a union where only one step operation may be specified at a time.\n// The different kinds of steps are specified by the constants defined for\n// the StepKind type.\ntype Step struct {\n\tkind StepKind\n\tdesc protoreflect.Descriptor\n\tkey  protoreflect.Value\n}\n\n// Root indicates the root message that a path is relative to.\n// It should always (and only ever) be the first step in a path.\nfunc Root(md protoreflect.MessageDescriptor) Step {\n\tif md == nil {\n\t\tpanic(\"nil message descriptor\")\n\t}\n\treturn Step{kind: RootStep, desc: md}\n}\n\n// FieldAccess describes access of a field within a message.\n// Extension field accesses are also represented using a FieldAccess and\n// must be provided with a protoreflect.FieldDescriptor\n//\n// Within the context of Values,\n// the type of the previous step value is always a message, and\n// the type of the current step value is determined by the field descriptor.\nfunc FieldAccess(fd protoreflect.FieldDescriptor) Step {\n\tif fd == nil {\n\t\tpanic(\"nil field descriptor\")\n\t} else if _, ok := fd.(protoreflect.ExtensionTypeDescriptor); !ok && fd.IsExtension() {\n\t\tpanic(fmt.Sprintf(\"extension field %q must implement protoreflect.ExtensionTypeDescriptor\", fd.FullName()))\n\t}\n\treturn Step{kind: FieldAccessStep, desc: fd}\n}\n\n// UnknownAccess describes access to the unknown fields within a message.\n//\n// Within the context of Values,\n// the type of the previous step value is always a message, and\n// the type of the current step value is always a bytes type.\nfunc UnknownAccess() Step {\n\treturn Step{kind: UnknownAccessStep}\n}\n\n// ListIndex describes index of an element within a list.\n//\n// Within the context of Values,\n// the type of the previous, previous step value is always a message,\n// the type of the previous step value is always a list, and\n// the type of the current step value is determined by the field descriptor.\nfunc ListIndex(i int) Step {\n\tif i < 0 {\n\t\tpanic(fmt.Sprintf(\"invalid list index: %v\", i))\n\t}\n\treturn Step{kind: ListIndexStep, key: protoreflect.ValueOfInt64(int64(i))}\n}\n\n// MapIndex describes index of an entry within a map.\n// The key type is determined by field descriptor that the map belongs to.\n//\n// Within the context of Values,\n// the type of the previous previous step value is always a message,\n// the type of the previous step value is always a map, and\n// the type of the current step value is determined by the field descriptor.\nfunc MapIndex(k protoreflect.MapKey) Step {\n\tif !k.IsValid() {\n\t\tpanic(\"invalid map index\")\n\t}\n\treturn Step{kind: MapIndexStep, key: k.Value()}\n}\n\n// AnyExpand describes expansion of a google.protobuf.Any message into\n// a structured representation of the underlying message.\n//\n// Within the context of Values,\n// the type of the previous step value is always a google.protobuf.Any message, and\n// the type of the current step value is always a message.\nfunc AnyExpand(md protoreflect.MessageDescriptor) Step {\n\tif md == nil {\n\t\tpanic(\"nil message descriptor\")\n\t}\n\treturn Step{kind: AnyExpandStep, desc: md}\n}\n\n// MessageDescriptor returns the message descriptor for Root or AnyExpand steps,\n// otherwise it returns nil.\nfunc (s Step) MessageDescriptor() protoreflect.MessageDescriptor {\n\tswitch s.kind {\n\tcase RootStep, AnyExpandStep:\n\t\treturn s.desc.(protoreflect.MessageDescriptor)\n\tdefault:\n\t\treturn nil\n\t}\n}\n\n// FieldDescriptor returns the field descriptor for FieldAccess steps,\n// otherwise it returns nil.\nfunc (s Step) FieldDescriptor() protoreflect.FieldDescriptor {\n\tswitch s.kind {\n\tcase FieldAccessStep:\n\t\treturn s.desc.(protoreflect.FieldDescriptor)\n\tdefault:\n\t\treturn nil\n\t}\n}\n\n// ListIndex returns the list index for ListIndex steps,\n// otherwise it returns 0.\nfunc (s Step) ListIndex() int {\n\tswitch s.kind {\n\tcase ListIndexStep:\n\t\treturn int(s.key.Int())\n\tdefault:\n\t\treturn 0\n\t}\n}\n\n// MapIndex returns the map key for MapIndex steps,\n// otherwise it returns an invalid map key.\nfunc (s Step) MapIndex() protoreflect.MapKey {\n\tswitch s.kind {\n\tcase MapIndexStep:\n\t\treturn s.key.MapKey()\n\tdefault:\n\t\treturn protoreflect.MapKey{}\n\t}\n}\n\n// Kind reports which kind of step this is.\nfunc (s Step) Kind() StepKind {\n\treturn s.kind\n}\n\nfunc (s Step) String() string {\n\treturn string(s.appendString(nil))\n}\n\nfunc (s Step) appendString(b []byte) []byte {\n\tswitch s.kind {\n\tcase RootStep:\n\t\tb = append(b, '(')\n\t\tb = append(b, s.desc.FullName()...)\n\t\tb = append(b, ')')\n\tcase FieldAccessStep:\n\t\tb = append(b, '.')\n\t\tif fd := s.desc.(protoreflect.FieldDescriptor); fd.IsExtension() {\n\t\t\tb = append(b, '(')\n\t\t\tb = append(b, strings.Trim(fd.TextName(), \"[]\")...)\n\t\t\tb = append(b, ')')\n\t\t} else {\n\t\t\tb = append(b, fd.TextName()...)\n\t\t}\n\tcase UnknownAccessStep:\n\t\tb = append(b, '.')\n\t\tb = append(b, '?')\n\tcase ListIndexStep:\n\t\tb = append(b, '[')\n\t\tb = strconv.AppendInt(b, s.key.Int(), 10)\n\t\tb = append(b, ']')\n\tcase MapIndexStep:\n\t\tb = append(b, '[')\n\t\tswitch k := s.key.Interface().(type) {\n\t\tcase bool:\n\t\t\tb = strconv.AppendBool(b, bool(k)) // e.g., \"true\" or \"false\"\n\t\tcase int32:\n\t\t\tb = strconv.AppendInt(b, int64(k), 10) // e.g., \"-32\"\n\t\tcase int64:\n\t\t\tb = strconv.AppendInt(b, int64(k), 10) // e.g., \"-64\"\n\t\tcase uint32:\n\t\t\tb = strconv.AppendUint(b, uint64(k), 10) // e.g., \"32\"\n\t\tcase uint64:\n\t\t\tb = strconv.AppendUint(b, uint64(k), 10) // e.g., \"64\"\n\t\tcase string:\n\t\t\tb = text.AppendString(b, k) // e.g., `\"hello, world\"`\n\t\t}\n\t\tb = append(b, ']')\n\tcase AnyExpandStep:\n\t\tb = append(b, '.')\n\t\tb = append(b, '(')\n\t\tb = append(b, s.desc.FullName()...)\n\t\tb = append(b, ')')\n\tdefault:\n\t\tb = append(b, \"<invalid>\"...)\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protorange/range.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protorange provides functionality to traverse a message value.\npackage protorange\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protopath\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nvar (\n\t// Break breaks traversal of children in the current value.\n\t// It has no effect when traversing values that are not composite types\n\t// (e.g., messages, lists, and maps).\n\tBreak = errors.New(\"break traversal of children in current value\")\n\n\t// Terminate terminates the entire range operation.\n\t// All necessary Pop operations continue to be called.\n\tTerminate = errors.New(\"terminate range operation\")\n)\n\n// Range performs a depth-first traversal over reachable values in a message.\n//\n// See [Options.Range] for details.\nfunc Range(m protoreflect.Message, f func(protopath.Values) error) error {\n\treturn Options{}.Range(m, f, nil)\n}\n\n// Options configures traversal of a message value tree.\ntype Options struct {\n\t// Stable specifies whether to visit message fields and map entries\n\t// in a stable ordering. If false, then the ordering is undefined and\n\t// may be non-deterministic.\n\t//\n\t// Message fields are visited in ascending order by field number.\n\t// Map entries are visited in ascending order, where\n\t// boolean keys are ordered such that false sorts before true,\n\t// numeric keys are ordered based on the numeric value, and\n\t// string keys are lexicographically ordered by Unicode codepoints.\n\tStable bool\n\n\t// Resolver is used for looking up types when expanding google.protobuf.Any\n\t// messages. If nil, this defaults to using protoregistry.GlobalTypes.\n\t// To prevent expansion of Any messages, pass an empty protoregistry.Types:\n\t//\n\t//\tOptions{Resolver: (*protoregistry.Types)(nil)}\n\t//\n\tResolver interface {\n\t\tprotoregistry.ExtensionTypeResolver\n\t\tprotoregistry.MessageTypeResolver\n\t}\n}\n\n// Range performs a depth-first traversal over reachable values in a message.\n// The first push and the last pop are to push/pop a [protopath.Root] step.\n// If push or pop return any non-nil error (other than [Break] or [Terminate]),\n// it terminates the traversal and is returned by Range.\n//\n// The rules for traversing a message is as follows:\n//\n//   - For messages, iterate over every populated known and extension field.\n//     Each field is preceded by a push of a [protopath.FieldAccess] step,\n//     followed by recursive application of the rules on the field value,\n//     and succeeded by a pop of that step.\n//     If the message has unknown fields, then push an [protopath.UnknownAccess] step\n//     followed immediately by pop of that step.\n//\n//   - As an exception to the above rule, if the current message is a\n//     google.protobuf.Any message, expand the underlying message (if resolvable).\n//     The expanded message is preceded by a push of a [protopath.AnyExpand] step,\n//     followed by recursive application of the rules on the underlying message,\n//     and succeeded by a pop of that step. Mutations to the expanded message\n//     are written back to the Any message when popping back out.\n//\n//   - For lists, iterate over every element. Each element is preceded by a push\n//     of a [protopath.ListIndex] step, followed by recursive application of the rules\n//     on the list element, and succeeded by a pop of that step.\n//\n//   - For maps, iterate over every entry. Each entry is preceded by a push\n//     of a [protopath.MapIndex] step, followed by recursive application of the rules\n//     on the map entry value, and succeeded by a pop of that step.\n//\n// Mutations should only be made to the last value, otherwise the effects on\n// traversal will be undefined. If the mutation is made to the last value\n// during to a push, then the effects of the mutation will affect traversal.\n// For example, if the last value is currently a message, and the push function\n// populates a few fields in that message, then the newly modified fields\n// will be traversed.\n//\n// The [protopath.Values] provided to push functions is only valid until the\n// corresponding pop call and the values provided to a pop call is only valid\n// for the duration of the pop call itself.\nfunc (o Options) Range(m protoreflect.Message, push, pop func(protopath.Values) error) error {\n\tvar err error\n\tp := new(protopath.Values)\n\tif o.Resolver == nil {\n\t\to.Resolver = protoregistry.GlobalTypes\n\t}\n\n\tpushStep(p, protopath.Root(m.Descriptor()), protoreflect.ValueOfMessage(m))\n\tif push != nil {\n\t\terr = amendError(err, push(*p))\n\t}\n\tif err == nil {\n\t\terr = o.rangeMessage(p, m, push, pop)\n\t}\n\tif pop != nil {\n\t\terr = amendError(err, pop(*p))\n\t}\n\tpopStep(p)\n\n\tif err == Break || err == Terminate {\n\t\terr = nil\n\t}\n\treturn err\n}\n\nfunc (o Options) rangeMessage(p *protopath.Values, m protoreflect.Message, push, pop func(protopath.Values) error) (err error) {\n\tif ok, err := o.rangeAnyMessage(p, m, push, pop); ok {\n\t\treturn err\n\t}\n\n\tfieldOrder := order.AnyFieldOrder\n\tif o.Stable {\n\t\tfieldOrder = order.NumberFieldOrder\n\t}\n\torder.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tpushStep(p, protopath.FieldAccess(fd), v)\n\t\tif push != nil {\n\t\t\terr = amendError(err, push(*p))\n\t\t}\n\t\tif err == nil {\n\t\t\tswitch {\n\t\t\tcase fd.IsMap():\n\t\t\t\terr = o.rangeMap(p, fd, v.Map(), push, pop)\n\t\t\tcase fd.IsList():\n\t\t\t\terr = o.rangeList(p, fd, v.List(), push, pop)\n\t\t\tcase fd.Message() != nil:\n\t\t\t\terr = o.rangeMessage(p, v.Message(), push, pop)\n\t\t\t}\n\t\t}\n\t\tif pop != nil {\n\t\t\terr = amendError(err, pop(*p))\n\t\t}\n\t\tpopStep(p)\n\t\treturn err == nil\n\t})\n\n\tif b := m.GetUnknown(); len(b) > 0 && err == nil {\n\t\tpushStep(p, protopath.UnknownAccess(), protoreflect.ValueOfBytes(b))\n\t\tif push != nil {\n\t\t\terr = amendError(err, push(*p))\n\t\t}\n\t\tif pop != nil {\n\t\t\terr = amendError(err, pop(*p))\n\t\t}\n\t\tpopStep(p)\n\t}\n\n\tif err == Break {\n\t\terr = nil\n\t}\n\treturn err\n}\n\nfunc (o Options) rangeAnyMessage(p *protopath.Values, m protoreflect.Message, push, pop func(protopath.Values) error) (ok bool, err error) {\n\tmd := m.Descriptor()\n\tif md.FullName() != \"google.protobuf.Any\" {\n\t\treturn false, nil\n\t}\n\n\tfds := md.Fields()\n\turl := m.Get(fds.ByNumber(genid.Any_TypeUrl_field_number)).String()\n\tval := m.Get(fds.ByNumber(genid.Any_Value_field_number)).Bytes()\n\tmt, errFind := o.Resolver.FindMessageByURL(url)\n\tif errFind != nil {\n\t\treturn false, nil\n\t}\n\n\t// Unmarshal the raw encoded message value into a structured message value.\n\tm2 := mt.New()\n\terrUnmarshal := proto.UnmarshalOptions{\n\t\tMerge:        true,\n\t\tAllowPartial: true,\n\t\tResolver:     o.Resolver,\n\t}.Unmarshal(val, m2.Interface())\n\tif errUnmarshal != nil {\n\t\t// If the the underlying message cannot be unmarshaled,\n\t\t// then just treat this as an normal message type.\n\t\treturn false, nil\n\t}\n\n\t// Marshal Any before ranging to detect possible mutations.\n\tb1, errMarshal := proto.MarshalOptions{\n\t\tAllowPartial:  true,\n\t\tDeterministic: true,\n\t}.Marshal(m2.Interface())\n\tif errMarshal != nil {\n\t\treturn true, errMarshal\n\t}\n\n\tpushStep(p, protopath.AnyExpand(m2.Descriptor()), protoreflect.ValueOfMessage(m2))\n\tif push != nil {\n\t\terr = amendError(err, push(*p))\n\t}\n\tif err == nil {\n\t\terr = o.rangeMessage(p, m2, push, pop)\n\t}\n\tif pop != nil {\n\t\terr = amendError(err, pop(*p))\n\t}\n\tpopStep(p)\n\n\t// Marshal Any after ranging to detect possible mutations.\n\tb2, errMarshal := proto.MarshalOptions{\n\t\tAllowPartial:  true,\n\t\tDeterministic: true,\n\t}.Marshal(m2.Interface())\n\tif errMarshal != nil {\n\t\treturn true, errMarshal\n\t}\n\n\t// Mutations detected, write the new sequence of bytes to the Any message.\n\tif !bytes.Equal(b1, b2) {\n\t\tm.Set(fds.ByNumber(genid.Any_Value_field_number), protoreflect.ValueOfBytes(b2))\n\t}\n\n\tif err == Break {\n\t\terr = nil\n\t}\n\treturn true, err\n}\n\nfunc (o Options) rangeList(p *protopath.Values, fd protoreflect.FieldDescriptor, ls protoreflect.List, push, pop func(protopath.Values) error) (err error) {\n\tfor i := 0; i < ls.Len() && err == nil; i++ {\n\t\tv := ls.Get(i)\n\t\tpushStep(p, protopath.ListIndex(i), v)\n\t\tif push != nil {\n\t\t\terr = amendError(err, push(*p))\n\t\t}\n\t\tif err == nil && fd.Message() != nil {\n\t\t\terr = o.rangeMessage(p, v.Message(), push, pop)\n\t\t}\n\t\tif pop != nil {\n\t\t\terr = amendError(err, pop(*p))\n\t\t}\n\t\tpopStep(p)\n\t}\n\n\tif err == Break {\n\t\terr = nil\n\t}\n\treturn err\n}\n\nfunc (o Options) rangeMap(p *protopath.Values, fd protoreflect.FieldDescriptor, ms protoreflect.Map, push, pop func(protopath.Values) error) (err error) {\n\tkeyOrder := order.AnyKeyOrder\n\tif o.Stable {\n\t\tkeyOrder = order.GenericKeyOrder\n\t}\n\torder.RangeEntries(ms, keyOrder, func(k protoreflect.MapKey, v protoreflect.Value) bool {\n\t\tpushStep(p, protopath.MapIndex(k), v)\n\t\tif push != nil {\n\t\t\terr = amendError(err, push(*p))\n\t\t}\n\t\tif err == nil && fd.MapValue().Message() != nil {\n\t\t\terr = o.rangeMessage(p, v.Message(), push, pop)\n\t\t}\n\t\tif pop != nil {\n\t\t\terr = amendError(err, pop(*p))\n\t\t}\n\t\tpopStep(p)\n\t\treturn err == nil\n\t})\n\n\tif err == Break {\n\t\terr = nil\n\t}\n\treturn err\n}\n\nfunc pushStep(p *protopath.Values, s protopath.Step, v protoreflect.Value) {\n\tp.Path = append(p.Path, s)\n\tp.Values = append(p.Values, v)\n}\n\nfunc popStep(p *protopath.Values) {\n\tp.Path = p.Path[:len(p.Path)-1]\n\tp.Values = p.Values[:len(p.Values)-1]\n}\n\n// amendError amends the previous error with the current error if it is\n// considered more serious. The precedence order for errors is:\n//\n//\tnil < Break < Terminate < previous non-nil < current non-nil\nfunc amendError(prev, curr error) error {\n\tswitch {\n\tcase curr == nil:\n\t\treturn prev\n\tcase curr == Break && prev != nil:\n\t\treturn prev\n\tcase curr == Terminate && prev != nil && prev != Break:\n\t\treturn prev\n\tdefault:\n\t\treturn curr\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport (\n\t\"google.golang.org/protobuf/internal/pragma\"\n)\n\n// The following types are used by the fast-path Message.ProtoMethods method.\n//\n// To avoid polluting the public protoreflect API with types used only by\n// low-level implementations, the canonical definitions of these types are\n// in the runtime/protoiface package. The definitions here and in protoiface\n// must be kept in sync.\ntype (\n\tmethods = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tFlags            supportFlags\n\t\tSize             func(sizeInput) sizeOutput\n\t\tMarshal          func(marshalInput) (marshalOutput, error)\n\t\tUnmarshal        func(unmarshalInput) (unmarshalOutput, error)\n\t\tMerge            func(mergeInput) mergeOutput\n\t\tCheckInitialized func(checkInitializedInput) (checkInitializedOutput, error)\n\t\tEqual            func(equalInput) equalOutput\n\t}\n\tsupportFlags = uint64\n\tsizeInput    = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tMessage Message\n\t\tFlags   uint8\n\t}\n\tsizeOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tSize int\n\t}\n\tmarshalInput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tMessage Message\n\t\tBuf     []byte\n\t\tFlags   uint8\n\t}\n\tmarshalOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tBuf []byte\n\t}\n\tunmarshalInput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tMessage  Message\n\t\tBuf      []byte\n\t\tFlags    uint8\n\t\tResolver interface {\n\t\t\tFindExtensionByName(field FullName) (ExtensionType, error)\n\t\t\tFindExtensionByNumber(message FullName, field FieldNumber) (ExtensionType, error)\n\t\t}\n\t\tDepth int\n\t}\n\tunmarshalOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tFlags uint8\n\t}\n\tmergeInput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tSource      Message\n\t\tDestination Message\n\t}\n\tmergeOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tFlags uint8\n\t}\n\tcheckInitializedInput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tMessage Message\n\t}\n\tcheckInitializedOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t}\n\tequalInput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tMessageA Message\n\t\tMessageB Message\n\t}\n\tequalOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tEqual bool\n\t}\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protoreflect provides interfaces to dynamically manipulate messages.\n//\n// This package includes type descriptors which describe the structure of types\n// defined in proto source files and value interfaces which provide the\n// ability to examine and manipulate the contents of messages.\n//\n// # Protocol Buffer Descriptors\n//\n// Protobuf descriptors (e.g., [EnumDescriptor] or [MessageDescriptor])\n// are immutable objects that represent protobuf type information.\n// They are wrappers around the messages declared in descriptor.proto.\n// Protobuf descriptors alone lack any information regarding Go types.\n//\n// Enums and messages generated by this module implement [Enum] and [ProtoMessage],\n// where the Descriptor and ProtoReflect.Descriptor accessors respectively\n// return the protobuf descriptor for the values.\n//\n// The protobuf descriptor interfaces are not meant to be implemented by\n// user code since they might need to be extended in the future to support\n// additions to the protobuf language.\n// The [google.golang.org/protobuf/reflect/protodesc] package converts between\n// google.protobuf.DescriptorProto messages and protobuf descriptors.\n//\n// # Go Type Descriptors\n//\n// A type descriptor (e.g., [EnumType] or [MessageType]) is a constructor for\n// a concrete Go type that represents the associated protobuf descriptor.\n// There is commonly a one-to-one relationship between protobuf descriptors and\n// Go type descriptors, but it can potentially be a one-to-many relationship.\n//\n// Enums and messages generated by this module implement [Enum] and [ProtoMessage],\n// where the Type and ProtoReflect.Type accessors respectively\n// return the protobuf descriptor for the values.\n//\n// The [google.golang.org/protobuf/types/dynamicpb] package can be used to\n// create Go type descriptors from protobuf descriptors.\n//\n// # Value Interfaces\n//\n// The [Enum] and [Message] interfaces provide a reflective view over an\n// enum or message instance. For enums, it provides the ability to retrieve\n// the enum value number for any concrete enum type. For messages, it provides\n// the ability to access or manipulate fields of the message.\n//\n// To convert a [google.golang.org/protobuf/proto.Message] to a [protoreflect.Message], use the\n// former's ProtoReflect method. Since the ProtoReflect method is new to the\n// v2 message interface, it may not be present on older message implementations.\n// The [github.com/golang/protobuf/proto.MessageReflect] function can be used\n// to obtain a reflective view on older messages.\n//\n// # Relationships\n//\n// The following diagrams demonstrate the relationships between\n// various types declared in this package.\n//\n//\t                       ┌───────────────────────────────────┐\n//\t                       V                                   │\n//\t   ┌────────────── New(n) ─────────────┐                   │\n//\t   │                                   │                   │\n//\t   │      ┌──── Descriptor() ──┐       │  ┌── Number() ──┐ │\n//\t   │      │                    V       V  │              V │\n//\t╔════════════╗  ╔════════════════╗  ╔════════╗  ╔════════════╗\n//\t║  EnumType  ║  ║ EnumDescriptor ║  ║  Enum  ║  ║ EnumNumber ║\n//\t╚════════════╝  ╚════════════════╝  ╚════════╝  ╚════════════╝\n//\t      Λ           Λ                   │ │\n//\t      │           └─── Descriptor() ──┘ │\n//\t      │                                 │\n//\t      └────────────────── Type() ───────┘\n//\n// • An [EnumType] describes a concrete Go enum type.\n// It has an EnumDescriptor and can construct an Enum instance.\n//\n// • An [EnumDescriptor] describes an abstract protobuf enum type.\n//\n// • An [Enum] is a concrete enum instance. Generated enums implement Enum.\n//\n//\t  ┌──────────────── New() ─────────────────┐\n//\t  │                                        │\n//\t  │         ┌─── Descriptor() ─────┐       │   ┌── Interface() ───┐\n//\t  │         │                      V       V   │                  V\n//\t╔═════════════╗  ╔═══════════════════╗  ╔═════════╗  ╔══════════════╗\n//\t║ MessageType ║  ║ MessageDescriptor ║  ║ Message ║  ║ ProtoMessage ║\n//\t╚═════════════╝  ╚═══════════════════╝  ╚═════════╝  ╚══════════════╝\n//\t       Λ           Λ                      │ │  Λ                  │\n//\t       │           └──── Descriptor() ────┘ │  └─ ProtoReflect() ─┘\n//\t       │                                    │\n//\t       └─────────────────── Type() ─────────┘\n//\n// • A [MessageType] describes a concrete Go message type.\n// It has a [MessageDescriptor] and can construct a [Message] instance.\n// Just as how Go's [reflect.Type] is a reflective description of a Go type,\n// a [MessageType] is a reflective description of a Go type for a protobuf message.\n//\n// • A [MessageDescriptor] describes an abstract protobuf message type.\n// It has no understanding of Go types. In order to construct a [MessageType]\n// from just a [MessageDescriptor], you can consider looking up the message type\n// in the global registry using the FindMessageByName method on\n// [google.golang.org/protobuf/reflect/protoregistry.GlobalTypes]\n// or constructing a dynamic [MessageType] using\n// [google.golang.org/protobuf/types/dynamicpb.NewMessageType].\n//\n// • A [Message] is a reflective view over a concrete message instance.\n// Generated messages implement [ProtoMessage], which can convert to a [Message].\n// Just as how Go's [reflect.Value] is a reflective view over a Go value,\n// a [Message] is a reflective view over a concrete protobuf message instance.\n// Using Go reflection as an analogy, the [ProtoMessage.ProtoReflect] method is similar to\n// calling [reflect.ValueOf], and the [Message.Interface] method is similar to\n// calling [reflect.Value.Interface].\n//\n//\t      ┌── TypeDescriptor() ──┐    ┌───── Descriptor() ─────┐\n//\t      │                      V    │                        V\n//\t╔═══════════════╗  ╔═════════════════════════╗  ╔═════════════════════╗\n//\t║ ExtensionType ║  ║ ExtensionTypeDescriptor ║  ║ ExtensionDescriptor ║\n//\t╚═══════════════╝  ╚═════════════════════════╝  ╚═════════════════════╝\n//\t      Λ                      │   │ Λ                      │ Λ\n//\t      └─────── Type() ───────┘   │ └─── may implement ────┘ │\n//\t                                 │                          │\n//\t                                 └────── implements ────────┘\n//\n// • An [ExtensionType] describes a concrete Go implementation of an extension.\n// It has an [ExtensionTypeDescriptor] and can convert to/from\n// an abstract [Value] and a Go value.\n//\n// • An [ExtensionTypeDescriptor] is an [ExtensionDescriptor]\n// which also has an [ExtensionType].\n//\n// • An [ExtensionDescriptor] describes an abstract protobuf extension field and\n// may not always be an [ExtensionTypeDescriptor].\npackage protoreflect\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n)\n\ntype doNotImplement pragma.DoNotImplement\n\n// ProtoMessage is the top-level interface that all proto messages implement.\n// This is declared in the protoreflect package to avoid a cyclic dependency;\n// use the [google.golang.org/protobuf/proto.Message] type instead, which aliases this type.\ntype ProtoMessage interface{ ProtoReflect() Message }\n\n// Syntax is the language version of the proto file.\ntype Syntax syntax\n\ntype syntax int8 // keep exact type opaque as the int type may change\n\nconst (\n\tProto2   Syntax = 2\n\tProto3   Syntax = 3\n\tEditions Syntax = 4\n)\n\n// IsValid reports whether the syntax is valid.\nfunc (s Syntax) IsValid() bool {\n\tswitch s {\n\tcase Proto2, Proto3, Editions:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// String returns s as a proto source identifier (e.g., \"proto2\").\nfunc (s Syntax) String() string {\n\tswitch s {\n\tcase Proto2:\n\t\treturn \"proto2\"\n\tcase Proto3:\n\t\treturn \"proto3\"\n\tcase Editions:\n\t\treturn \"editions\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<unknown:%d>\", s)\n\t}\n}\n\n// GoString returns s as a Go source identifier (e.g., \"Proto2\").\nfunc (s Syntax) GoString() string {\n\tswitch s {\n\tcase Proto2:\n\t\treturn \"Proto2\"\n\tcase Proto3:\n\t\treturn \"Proto3\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"Syntax(%d)\", s)\n\t}\n}\n\n// Cardinality determines whether a field is optional, required, or repeated.\ntype Cardinality cardinality\n\ntype cardinality int8 // keep exact type opaque as the int type may change\n\n// Constants as defined by the google.protobuf.Cardinality enumeration.\nconst (\n\tOptional Cardinality = 1 // appears zero or one times\n\tRequired Cardinality = 2 // appears exactly one time; invalid with Proto3\n\tRepeated Cardinality = 3 // appears zero or more times\n)\n\n// IsValid reports whether the cardinality is valid.\nfunc (c Cardinality) IsValid() bool {\n\tswitch c {\n\tcase Optional, Required, Repeated:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// String returns c as a proto source identifier (e.g., \"optional\").\nfunc (c Cardinality) String() string {\n\tswitch c {\n\tcase Optional:\n\t\treturn \"optional\"\n\tcase Required:\n\t\treturn \"required\"\n\tcase Repeated:\n\t\treturn \"repeated\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<unknown:%d>\", c)\n\t}\n}\n\n// GoString returns c as a Go source identifier (e.g., \"Optional\").\nfunc (c Cardinality) GoString() string {\n\tswitch c {\n\tcase Optional:\n\t\treturn \"Optional\"\n\tcase Required:\n\t\treturn \"Required\"\n\tcase Repeated:\n\t\treturn \"Repeated\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"Cardinality(%d)\", c)\n\t}\n}\n\n// Kind indicates the basic proto kind of a field.\ntype Kind kind\n\ntype kind int8 // keep exact type opaque as the int type may change\n\n// Constants as defined by the google.protobuf.Field.Kind enumeration.\nconst (\n\tBoolKind     Kind = 8\n\tEnumKind     Kind = 14\n\tInt32Kind    Kind = 5\n\tSint32Kind   Kind = 17\n\tUint32Kind   Kind = 13\n\tInt64Kind    Kind = 3\n\tSint64Kind   Kind = 18\n\tUint64Kind   Kind = 4\n\tSfixed32Kind Kind = 15\n\tFixed32Kind  Kind = 7\n\tFloatKind    Kind = 2\n\tSfixed64Kind Kind = 16\n\tFixed64Kind  Kind = 6\n\tDoubleKind   Kind = 1\n\tStringKind   Kind = 9\n\tBytesKind    Kind = 12\n\tMessageKind  Kind = 11\n\tGroupKind    Kind = 10\n)\n\n// IsValid reports whether the kind is valid.\nfunc (k Kind) IsValid() bool {\n\tswitch k {\n\tcase BoolKind, EnumKind,\n\t\tInt32Kind, Sint32Kind, Uint32Kind,\n\t\tInt64Kind, Sint64Kind, Uint64Kind,\n\t\tSfixed32Kind, Fixed32Kind, FloatKind,\n\t\tSfixed64Kind, Fixed64Kind, DoubleKind,\n\t\tStringKind, BytesKind, MessageKind, GroupKind:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// String returns k as a proto source identifier (e.g., \"bool\").\nfunc (k Kind) String() string {\n\tswitch k {\n\tcase BoolKind:\n\t\treturn \"bool\"\n\tcase EnumKind:\n\t\treturn \"enum\"\n\tcase Int32Kind:\n\t\treturn \"int32\"\n\tcase Sint32Kind:\n\t\treturn \"sint32\"\n\tcase Uint32Kind:\n\t\treturn \"uint32\"\n\tcase Int64Kind:\n\t\treturn \"int64\"\n\tcase Sint64Kind:\n\t\treturn \"sint64\"\n\tcase Uint64Kind:\n\t\treturn \"uint64\"\n\tcase Sfixed32Kind:\n\t\treturn \"sfixed32\"\n\tcase Fixed32Kind:\n\t\treturn \"fixed32\"\n\tcase FloatKind:\n\t\treturn \"float\"\n\tcase Sfixed64Kind:\n\t\treturn \"sfixed64\"\n\tcase Fixed64Kind:\n\t\treturn \"fixed64\"\n\tcase DoubleKind:\n\t\treturn \"double\"\n\tcase StringKind:\n\t\treturn \"string\"\n\tcase BytesKind:\n\t\treturn \"bytes\"\n\tcase MessageKind:\n\t\treturn \"message\"\n\tcase GroupKind:\n\t\treturn \"group\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<unknown:%d>\", k)\n\t}\n}\n\n// GoString returns k as a Go source identifier (e.g., \"BoolKind\").\nfunc (k Kind) GoString() string {\n\tswitch k {\n\tcase BoolKind:\n\t\treturn \"BoolKind\"\n\tcase EnumKind:\n\t\treturn \"EnumKind\"\n\tcase Int32Kind:\n\t\treturn \"Int32Kind\"\n\tcase Sint32Kind:\n\t\treturn \"Sint32Kind\"\n\tcase Uint32Kind:\n\t\treturn \"Uint32Kind\"\n\tcase Int64Kind:\n\t\treturn \"Int64Kind\"\n\tcase Sint64Kind:\n\t\treturn \"Sint64Kind\"\n\tcase Uint64Kind:\n\t\treturn \"Uint64Kind\"\n\tcase Sfixed32Kind:\n\t\treturn \"Sfixed32Kind\"\n\tcase Fixed32Kind:\n\t\treturn \"Fixed32Kind\"\n\tcase FloatKind:\n\t\treturn \"FloatKind\"\n\tcase Sfixed64Kind:\n\t\treturn \"Sfixed64Kind\"\n\tcase Fixed64Kind:\n\t\treturn \"Fixed64Kind\"\n\tcase DoubleKind:\n\t\treturn \"DoubleKind\"\n\tcase StringKind:\n\t\treturn \"StringKind\"\n\tcase BytesKind:\n\t\treturn \"BytesKind\"\n\tcase MessageKind:\n\t\treturn \"MessageKind\"\n\tcase GroupKind:\n\t\treturn \"GroupKind\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"Kind(%d)\", k)\n\t}\n}\n\n// FieldNumber is the field number in a message.\ntype FieldNumber = protowire.Number\n\n// FieldNumbers represent a list of field numbers.\ntype FieldNumbers interface {\n\t// Len reports the number of fields in the list.\n\tLen() int\n\t// Get returns the ith field number. It panics if out of bounds.\n\tGet(i int) FieldNumber\n\t// Has reports whether n is within the list of fields.\n\tHas(n FieldNumber) bool\n\n\tdoNotImplement\n}\n\n// FieldRanges represent a list of field number ranges.\ntype FieldRanges interface {\n\t// Len reports the number of ranges in the list.\n\tLen() int\n\t// Get returns the ith range. It panics if out of bounds.\n\tGet(i int) [2]FieldNumber // start inclusive; end exclusive\n\t// Has reports whether n is within any of the ranges.\n\tHas(n FieldNumber) bool\n\n\tdoNotImplement\n}\n\n// EnumNumber is the numeric value for an enum.\ntype EnumNumber int32\n\n// EnumRanges represent a list of enum number ranges.\ntype EnumRanges interface {\n\t// Len reports the number of ranges in the list.\n\tLen() int\n\t// Get returns the ith range. It panics if out of bounds.\n\tGet(i int) [2]EnumNumber // start inclusive; end inclusive\n\t// Has reports whether n is within any of the ranges.\n\tHas(n EnumNumber) bool\n\n\tdoNotImplement\n}\n\n// Name is the short name for a proto declaration. This is not the name\n// as used in Go source code, which might not be identical to the proto name.\ntype Name string // e.g., \"Kind\"\n\n// IsValid reports whether s is a syntactically valid name.\n// An empty name is invalid.\nfunc (s Name) IsValid() bool {\n\treturn consumeIdent(string(s)) == len(s)\n}\n\n// Names represent a list of names.\ntype Names interface {\n\t// Len reports the number of names in the list.\n\tLen() int\n\t// Get returns the ith name. It panics if out of bounds.\n\tGet(i int) Name\n\t// Has reports whether s matches any names in the list.\n\tHas(s Name) bool\n\n\tdoNotImplement\n}\n\n// FullName is a qualified name that uniquely identifies a proto declaration.\n// A qualified name is the concatenation of the proto package along with the\n// fully-declared name (i.e., name of parent preceding the name of the child),\n// with a '.' delimiter placed between each [Name].\n//\n// This should not have any leading or trailing dots.\ntype FullName string // e.g., \"google.protobuf.Field.Kind\"\n\n// IsValid reports whether s is a syntactically valid full name.\n// An empty full name is invalid.\nfunc (s FullName) IsValid() bool {\n\ti := consumeIdent(string(s))\n\tif i < 0 {\n\t\treturn false\n\t}\n\tfor len(s) > i {\n\t\tif s[i] != '.' {\n\t\t\treturn false\n\t\t}\n\t\ti++\n\t\tn := consumeIdent(string(s[i:]))\n\t\tif n < 0 {\n\t\t\treturn false\n\t\t}\n\t\ti += n\n\t}\n\treturn true\n}\n\nfunc consumeIdent(s string) (i int) {\n\tif len(s) == 0 || !isLetter(s[i]) {\n\t\treturn -1\n\t}\n\ti++\n\tfor len(s) > i && isLetterDigit(s[i]) {\n\t\ti++\n\t}\n\treturn i\n}\nfunc isLetter(c byte) bool {\n\treturn c == '_' || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')\n}\nfunc isLetterDigit(c byte) bool {\n\treturn isLetter(c) || ('0' <= c && c <= '9')\n}\n\n// Name returns the short name, which is the last identifier segment.\n// A single segment FullName is the [Name] itself.\nfunc (n FullName) Name() Name {\n\tif i := strings.LastIndexByte(string(n), '.'); i >= 0 {\n\t\treturn Name(n[i+1:])\n\t}\n\treturn Name(n)\n}\n\n// Parent returns the full name with the trailing identifier removed.\n// A single segment FullName has no parent.\nfunc (n FullName) Parent() FullName {\n\tif i := strings.LastIndexByte(string(n), '.'); i >= 0 {\n\t\treturn n[:i]\n\t}\n\treturn \"\"\n}\n\n// Append returns the qualified name appended with the provided short name.\n//\n// Invariant: n == n.Parent().Append(n.Name()) // assuming n is valid\nfunc (n FullName) Append(s Name) FullName {\n\tif n == \"\" {\n\t\treturn FullName(s)\n\t}\n\treturn n + \".\" + FullName(s)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/source.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport (\n\t\"strconv\"\n)\n\n// SourceLocations is a list of source locations.\ntype SourceLocations interface {\n\t// Len reports the number of source locations in the proto file.\n\tLen() int\n\t// Get returns the ith SourceLocation. It panics if out of bounds.\n\tGet(int) SourceLocation\n\n\t// ByPath returns the SourceLocation for the given path,\n\t// returning the first location if multiple exist for the same path.\n\t// If multiple locations exist for the same path,\n\t// then SourceLocation.Next index can be used to identify the\n\t// index of the next SourceLocation.\n\t// If no location exists for this path, it returns the zero value.\n\tByPath(path SourcePath) SourceLocation\n\n\t// ByDescriptor returns the SourceLocation for the given descriptor,\n\t// returning the first location if multiple exist for the same path.\n\t// If no location exists for this descriptor, it returns the zero value.\n\tByDescriptor(desc Descriptor) SourceLocation\n\n\tdoNotImplement\n}\n\n// SourceLocation describes a source location and\n// corresponds with the google.protobuf.SourceCodeInfo.Location message.\ntype SourceLocation struct {\n\t// Path is the path to the declaration from the root file descriptor.\n\t// The contents of this slice must not be mutated.\n\tPath SourcePath\n\n\t// StartLine and StartColumn are the zero-indexed starting location\n\t// in the source file for the declaration.\n\tStartLine, StartColumn int\n\t// EndLine and EndColumn are the zero-indexed ending location\n\t// in the source file for the declaration.\n\t// In the descriptor.proto, the end line may be omitted if it is identical\n\t// to the start line. Here, it is always populated.\n\tEndLine, EndColumn int\n\n\t// LeadingDetachedComments are the leading detached comments\n\t// for the declaration. The contents of this slice must not be mutated.\n\tLeadingDetachedComments []string\n\t// LeadingComments is the leading attached comment for the declaration.\n\tLeadingComments string\n\t// TrailingComments is the trailing attached comment for the declaration.\n\tTrailingComments string\n\n\t// Next is an index into SourceLocations for the next source location that\n\t// has the same Path. It is zero if there is no next location.\n\tNext int\n}\n\n// SourcePath identifies part of a file descriptor for a source location.\n// The SourcePath is a sequence of either field numbers or indexes into\n// a repeated field that form a path starting from the root file descriptor.\n//\n// See google.protobuf.SourceCodeInfo.Location.path.\ntype SourcePath []int32\n\n// Equal reports whether p1 equals p2.\nfunc (p1 SourcePath) Equal(p2 SourcePath) bool {\n\tif len(p1) != len(p2) {\n\t\treturn false\n\t}\n\tfor i := range p1 {\n\t\tif p1[i] != p2[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// String formats the path in a humanly readable manner.\n// The output is guaranteed to be deterministic,\n// making it suitable for use as a key into a Go map.\n// It is not guaranteed to be stable as the exact output could change\n// in a future version of this module.\n//\n// Example output:\n//\n//\t.message_type[6].nested_type[15].field[3]\nfunc (p SourcePath) String() string {\n\tb := p.appendFileDescriptorProto(nil)\n\tfor _, i := range p {\n\t\tb = append(b, '.')\n\t\tb = strconv.AppendInt(b, int64(i), 10)\n\t}\n\treturn string(b)\n}\n\ntype appendFunc func(*SourcePath, []byte) []byte\n\nfunc (p *SourcePath) appendSingularField(b []byte, name string, f appendFunc) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tb = append(b, '.')\n\tb = append(b, name...)\n\t*p = (*p)[1:]\n\tif f != nil {\n\t\tb = f(p, b)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendRepeatedField(b []byte, name string, f appendFunc) []byte {\n\tb = p.appendSingularField(b, name, nil)\n\tif len(*p) == 0 || (*p)[0] < 0 {\n\t\treturn b\n\t}\n\tb = append(b, '[')\n\tb = strconv.AppendUint(b, uint64((*p)[0]), 10)\n\tb = append(b, ']')\n\t*p = (*p)[1:]\n\tif f != nil {\n\t\tb = f(p, b)\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage protoreflect\n\nfunc (p *SourcePath) appendFileDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"package\", nil)\n\tcase 3:\n\t\tb = p.appendRepeatedField(b, \"dependency\", nil)\n\tcase 10:\n\t\tb = p.appendRepeatedField(b, \"public_dependency\", nil)\n\tcase 11:\n\t\tb = p.appendRepeatedField(b, \"weak_dependency\", nil)\n\tcase 15:\n\t\tb = p.appendRepeatedField(b, \"option_dependency\", nil)\n\tcase 4:\n\t\tb = p.appendRepeatedField(b, \"message_type\", (*SourcePath).appendDescriptorProto)\n\tcase 5:\n\t\tb = p.appendRepeatedField(b, \"enum_type\", (*SourcePath).appendEnumDescriptorProto)\n\tcase 6:\n\t\tb = p.appendRepeatedField(b, \"service\", (*SourcePath).appendServiceDescriptorProto)\n\tcase 7:\n\t\tb = p.appendRepeatedField(b, \"extension\", (*SourcePath).appendFieldDescriptorProto)\n\tcase 8:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendFileOptions)\n\tcase 9:\n\t\tb = p.appendSingularField(b, \"source_code_info\", (*SourcePath).appendSourceCodeInfo)\n\tcase 12:\n\t\tb = p.appendSingularField(b, \"syntax\", nil)\n\tcase 14:\n\t\tb = p.appendSingularField(b, \"edition\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"field\", (*SourcePath).appendFieldDescriptorProto)\n\tcase 6:\n\t\tb = p.appendRepeatedField(b, \"extension\", (*SourcePath).appendFieldDescriptorProto)\n\tcase 3:\n\t\tb = p.appendRepeatedField(b, \"nested_type\", (*SourcePath).appendDescriptorProto)\n\tcase 4:\n\t\tb = p.appendRepeatedField(b, \"enum_type\", (*SourcePath).appendEnumDescriptorProto)\n\tcase 5:\n\t\tb = p.appendRepeatedField(b, \"extension_range\", (*SourcePath).appendDescriptorProto_ExtensionRange)\n\tcase 8:\n\t\tb = p.appendRepeatedField(b, \"oneof_decl\", (*SourcePath).appendOneofDescriptorProto)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendMessageOptions)\n\tcase 9:\n\t\tb = p.appendRepeatedField(b, \"reserved_range\", (*SourcePath).appendDescriptorProto_ReservedRange)\n\tcase 10:\n\t\tb = p.appendRepeatedField(b, \"reserved_name\", nil)\n\tcase 11:\n\t\tb = p.appendSingularField(b, \"visibility\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"value\", (*SourcePath).appendEnumValueDescriptorProto)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendEnumOptions)\n\tcase 4:\n\t\tb = p.appendRepeatedField(b, \"reserved_range\", (*SourcePath).appendEnumDescriptorProto_EnumReservedRange)\n\tcase 5:\n\t\tb = p.appendRepeatedField(b, \"reserved_name\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"visibility\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendServiceDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"method\", (*SourcePath).appendMethodDescriptorProto)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendServiceOptions)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFieldDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"number\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"label\", nil)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"type\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"type_name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"extendee\", nil)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"default_value\", nil)\n\tcase 9:\n\t\tb = p.appendSingularField(b, \"oneof_index\", nil)\n\tcase 10:\n\t\tb = p.appendSingularField(b, \"json_name\", nil)\n\tcase 8:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendFieldOptions)\n\tcase 17:\n\t\tb = p.appendSingularField(b, \"proto3_optional\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFileOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"java_package\", nil)\n\tcase 8:\n\t\tb = p.appendSingularField(b, \"java_outer_classname\", nil)\n\tcase 10:\n\t\tb = p.appendSingularField(b, \"java_multiple_files\", nil)\n\tcase 20:\n\t\tb = p.appendSingularField(b, \"java_generate_equals_and_hash\", nil)\n\tcase 27:\n\t\tb = p.appendSingularField(b, \"java_string_check_utf8\", nil)\n\tcase 9:\n\t\tb = p.appendSingularField(b, \"optimize_for\", nil)\n\tcase 11:\n\t\tb = p.appendSingularField(b, \"go_package\", nil)\n\tcase 16:\n\t\tb = p.appendSingularField(b, \"cc_generic_services\", nil)\n\tcase 17:\n\t\tb = p.appendSingularField(b, \"java_generic_services\", nil)\n\tcase 18:\n\t\tb = p.appendSingularField(b, \"py_generic_services\", nil)\n\tcase 23:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 31:\n\t\tb = p.appendSingularField(b, \"cc_enable_arenas\", nil)\n\tcase 36:\n\t\tb = p.appendSingularField(b, \"objc_class_prefix\", nil)\n\tcase 37:\n\t\tb = p.appendSingularField(b, \"csharp_namespace\", nil)\n\tcase 39:\n\t\tb = p.appendSingularField(b, \"swift_prefix\", nil)\n\tcase 40:\n\t\tb = p.appendSingularField(b, \"php_class_prefix\", nil)\n\tcase 41:\n\t\tb = p.appendSingularField(b, \"php_namespace\", nil)\n\tcase 44:\n\t\tb = p.appendSingularField(b, \"php_metadata_namespace\", nil)\n\tcase 45:\n\t\tb = p.appendSingularField(b, \"ruby_package\", nil)\n\tcase 50:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendSourceCodeInfo(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendRepeatedField(b, \"location\", (*SourcePath).appendSourceCodeInfo_Location)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendDescriptorProto_ExtensionRange(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"start\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"end\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendExtensionRangeOptions)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendOneofDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendOneofOptions)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendMessageOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"message_set_wire_format\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"no_standard_descriptor_accessor\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"map_entry\", nil)\n\tcase 11:\n\t\tb = p.appendSingularField(b, \"deprecated_legacy_json_field_conflicts\", nil)\n\tcase 12:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendDescriptorProto_ReservedRange(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"start\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"end\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumValueDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"number\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendEnumValueOptions)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"allow_alias\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"deprecated_legacy_json_field_conflicts\", nil)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumDescriptorProto_EnumReservedRange(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"start\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"end\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendMethodDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"input_type\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"output_type\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendMethodOptions)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"client_streaming\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"server_streaming\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendServiceOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 34:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 33:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFieldOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"ctype\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"packed\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"jstype\", nil)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"lazy\", nil)\n\tcase 15:\n\t\tb = p.appendSingularField(b, \"unverified_lazy\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 10:\n\t\tb = p.appendSingularField(b, \"weak\", nil)\n\tcase 16:\n\t\tb = p.appendSingularField(b, \"debug_redact\", nil)\n\tcase 17:\n\t\tb = p.appendSingularField(b, \"retention\", nil)\n\tcase 19:\n\t\tb = p.appendRepeatedField(b, \"targets\", nil)\n\tcase 20:\n\t\tb = p.appendRepeatedField(b, \"edition_defaults\", (*SourcePath).appendFieldOptions_EditionDefault)\n\tcase 21:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 22:\n\t\tb = p.appendSingularField(b, \"feature_support\", (*SourcePath).appendFieldOptions_FeatureSupport)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFeatureSet(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"field_presence\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"enum_type\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"repeated_field_encoding\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"utf8_validation\", nil)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"message_encoding\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"json_format\", nil)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"enforce_naming_style\", nil)\n\tcase 8:\n\t\tb = p.appendSingularField(b, \"default_symbol_visibility\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendUninterpretedOption(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"name\", (*SourcePath).appendUninterpretedOption_NamePart)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"identifier_value\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"positive_int_value\", nil)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"negative_int_value\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"double_value\", nil)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"string_value\", nil)\n\tcase 8:\n\t\tb = p.appendSingularField(b, \"aggregate_value\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendSourceCodeInfo_Location(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendRepeatedField(b, \"path\", nil)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"span\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"leading_comments\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"trailing_comments\", nil)\n\tcase 6:\n\t\tb = p.appendRepeatedField(b, \"leading_detached_comments\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendExtensionRangeOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"declaration\", (*SourcePath).appendExtensionRangeOptions_Declaration)\n\tcase 50:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"verification\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendOneofOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumValueOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"debug_redact\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"feature_support\", (*SourcePath).appendFieldOptions_FeatureSupport)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendMethodOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 33:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 34:\n\t\tb = p.appendSingularField(b, \"idempotency_level\", nil)\n\tcase 35:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFieldOptions_EditionDefault(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"edition\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"value\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFieldOptions_FeatureSupport(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"edition_introduced\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"edition_deprecated\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"deprecation_warning\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"edition_removed\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendUninterpretedOption_NamePart(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name_part\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"is_extension\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendExtensionRangeOptions_Declaration(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"number\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"full_name\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"type\", nil)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"reserved\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"repeated\", nil)\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/type.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\n// Descriptor provides a set of accessors that are common to every descriptor.\n// Each descriptor type wraps the equivalent google.protobuf.XXXDescriptorProto,\n// but provides efficient lookup and immutability.\n//\n// Each descriptor is comparable. Equality implies that the two types are\n// exactly identical. However, it is possible for the same semantically\n// identical proto type to be represented by multiple type descriptors.\n//\n// For example, suppose we have t1 and t2 which are both an [MessageDescriptor].\n// If t1 == t2, then the types are definitely equal and all accessors return\n// the same information. However, if t1 != t2, then it is still possible that\n// they still represent the same proto type (e.g., t1.FullName == t2.FullName).\n// This can occur if a descriptor type is created dynamically, or multiple\n// versions of the same proto type are accidentally linked into the Go binary.\ntype Descriptor interface {\n\t// ParentFile returns the parent file descriptor that this descriptor\n\t// is declared within. The parent file for the file descriptor is itself.\n\t//\n\t// Support for this functionality is optional and may return nil.\n\tParentFile() FileDescriptor\n\n\t// Parent returns the parent containing this descriptor declaration.\n\t// The following shows the mapping from child type to possible parent types:\n\t//\n\t//\t╔═════════════════════╤═══════════════════════════════════╗\n\t//\t║ Child type          │ Possible parent types             ║\n\t//\t╠═════════════════════╪═══════════════════════════════════╣\n\t//\t║ FileDescriptor      │ nil                               ║\n\t//\t║ MessageDescriptor   │ FileDescriptor, MessageDescriptor ║\n\t//\t║ FieldDescriptor     │ FileDescriptor, MessageDescriptor ║\n\t//\t║ OneofDescriptor     │ MessageDescriptor                 ║\n\t//\t║ EnumDescriptor      │ FileDescriptor, MessageDescriptor ║\n\t//\t║ EnumValueDescriptor │ EnumDescriptor                    ║\n\t//\t║ ServiceDescriptor   │ FileDescriptor                    ║\n\t//\t║ MethodDescriptor    │ ServiceDescriptor                 ║\n\t//\t╚═════════════════════╧═══════════════════════════════════╝\n\t//\n\t// Support for this functionality is optional and may return nil.\n\tParent() Descriptor\n\n\t// Index returns the index of this descriptor within its parent.\n\t// It returns 0 if the descriptor does not have a parent or if the parent\n\t// is unknown.\n\tIndex() int\n\n\t// Syntax is the protobuf syntax.\n\tSyntax() Syntax // e.g., Proto2 or Proto3\n\n\t// Name is the short name of the declaration (i.e., FullName.Name).\n\tName() Name // e.g., \"Any\"\n\n\t// FullName is the fully-qualified name of the declaration.\n\t//\n\t// The FullName is a concatenation of the full name of the type that this\n\t// type is declared within and the declaration name. For example,\n\t// field \"foo_field\" in message \"proto.package.MyMessage\" is\n\t// uniquely identified as \"proto.package.MyMessage.foo_field\".\n\t// Enum values are an exception to the rule (see EnumValueDescriptor).\n\tFullName() FullName // e.g., \"google.protobuf.Any\"\n\n\t// IsPlaceholder reports whether type information is missing since a\n\t// dependency is not resolved, in which case only name information is known.\n\t//\n\t// Placeholder types may only be returned by the following accessors\n\t// as a result of unresolved dependencies:\n\t//\n\t//\t╔═══════════════════════════════════╤═════════════════════╗\n\t//\t║ Accessor                          │ Descriptor          ║\n\t//\t╠═══════════════════════════════════╪═════════════════════╣\n\t//\t║ FileImports.FileDescriptor        │ FileDescriptor      ║\n\t//\t║ FieldDescriptor.Enum              │ EnumDescriptor      ║\n\t//\t║ FieldDescriptor.Message           │ MessageDescriptor   ║\n\t//\t║ FieldDescriptor.DefaultEnumValue  │ EnumValueDescriptor ║\n\t//\t║ FieldDescriptor.ContainingMessage │ MessageDescriptor   ║\n\t//\t║ MethodDescriptor.Input            │ MessageDescriptor   ║\n\t//\t║ MethodDescriptor.Output           │ MessageDescriptor   ║\n\t//\t╚═══════════════════════════════════╧═════════════════════╝\n\t//\n\t// If true, only Name and FullName are valid.\n\t// For FileDescriptor, the Path is also valid.\n\tIsPlaceholder() bool\n\n\t// Options returns the descriptor options. The caller must not modify\n\t// the returned value.\n\t//\n\t// To avoid a dependency cycle, this function returns a proto.Message value.\n\t// The proto message type returned for each descriptor type is as follows:\n\t//\t╔═════════════════════╤══════════════════════════════════════════╗\n\t//\t║ Go type             │ Protobuf message type                    ║\n\t//\t╠═════════════════════╪══════════════════════════════════════════╣\n\t//\t║ FileDescriptor      │ google.protobuf.FileOptions              ║\n\t//\t║ EnumDescriptor      │ google.protobuf.EnumOptions              ║\n\t//\t║ EnumValueDescriptor │ google.protobuf.EnumValueOptions         ║\n\t//\t║ MessageDescriptor   │ google.protobuf.MessageOptions           ║\n\t//\t║ FieldDescriptor     │ google.protobuf.FieldOptions             ║\n\t//\t║ OneofDescriptor     │ google.protobuf.OneofOptions             ║\n\t//\t║ ServiceDescriptor   │ google.protobuf.ServiceOptions           ║\n\t//\t║ MethodDescriptor    │ google.protobuf.MethodOptions            ║\n\t//\t╚═════════════════════╧══════════════════════════════════════════╝\n\t//\n\t// This method returns a typed nil-pointer if no options are present.\n\t// The caller must import the descriptorpb package to use this.\n\tOptions() ProtoMessage\n\n\tdoNotImplement\n}\n\n// FileDescriptor describes the types in a complete proto file and\n// corresponds with the google.protobuf.FileDescriptorProto message.\n//\n// Top-level declarations:\n// [EnumDescriptor], [MessageDescriptor], [FieldDescriptor], and/or [ServiceDescriptor].\ntype FileDescriptor interface {\n\tDescriptor // Descriptor.FullName is identical to Package\n\n\t// Path returns the file name, relative to the source tree root.\n\tPath() string // e.g., \"path/to/file.proto\"\n\t// Package returns the protobuf package namespace.\n\tPackage() FullName // e.g., \"google.protobuf\"\n\n\t// Imports is a list of imported proto files.\n\tImports() FileImports\n\n\t// Enums is a list of the top-level enum declarations.\n\tEnums() EnumDescriptors\n\t// Messages is a list of the top-level message declarations.\n\tMessages() MessageDescriptors\n\t// Extensions is a list of the top-level extension declarations.\n\tExtensions() ExtensionDescriptors\n\t// Services is a list of the top-level service declarations.\n\tServices() ServiceDescriptors\n\n\t// SourceLocations is a list of source locations.\n\tSourceLocations() SourceLocations\n\n\tisFileDescriptor\n}\ntype isFileDescriptor interface{ ProtoType(FileDescriptor) }\n\n// FileImports is a list of file imports.\ntype FileImports interface {\n\t// Len reports the number of files imported by this proto file.\n\tLen() int\n\t// Get returns the ith FileImport. It panics if out of bounds.\n\tGet(i int) FileImport\n\n\tdoNotImplement\n}\n\n// FileImport is the declaration for a proto file import.\ntype FileImport struct {\n\t// FileDescriptor is the file type for the given import.\n\t// It is a placeholder descriptor if IsWeak is set or if a dependency has\n\t// not been regenerated to implement the new reflection APIs.\n\tFileDescriptor\n\n\t// IsPublic reports whether this is a public import, which causes this file\n\t// to alias declarations within the imported file. The intended use cases\n\t// for this feature is the ability to move proto files without breaking\n\t// existing dependencies.\n\t//\n\t// The current file and the imported file must be within proto package.\n\tIsPublic bool\n\n\t// Deprecated: support for weak fields has been removed.\n\tIsWeak bool\n}\n\n// MessageDescriptor describes a message and\n// corresponds with the google.protobuf.DescriptorProto message.\n//\n// Nested declarations:\n// [FieldDescriptor], [OneofDescriptor], [FieldDescriptor], [EnumDescriptor],\n// and/or [MessageDescriptor].\ntype MessageDescriptor interface {\n\tDescriptor\n\n\t// IsMapEntry indicates that this is an auto-generated message type to\n\t// represent the entry type for a map field.\n\t//\n\t// Map entry messages have only two fields:\n\t//\t• a \"key\" field with a field number of 1\n\t//\t• a \"value\" field with a field number of 2\n\t// The key and value types are determined by these two fields.\n\t//\n\t// If IsMapEntry is true, it implies that FieldDescriptor.IsMap is true\n\t// for some field with this message type.\n\tIsMapEntry() bool\n\n\t// Fields is a list of nested field declarations.\n\tFields() FieldDescriptors\n\t// Oneofs is a list of nested oneof declarations.\n\tOneofs() OneofDescriptors\n\n\t// ReservedNames is a list of reserved field names.\n\tReservedNames() Names\n\t// ReservedRanges is a list of reserved ranges of field numbers.\n\tReservedRanges() FieldRanges\n\t// RequiredNumbers is a list of required field numbers.\n\t// In Proto3, it is always an empty list.\n\tRequiredNumbers() FieldNumbers\n\t// ExtensionRanges is the field ranges used for extension fields.\n\t// In Proto3, it is always an empty ranges.\n\tExtensionRanges() FieldRanges\n\t// ExtensionRangeOptions returns the ith extension range options.\n\t//\n\t// To avoid a dependency cycle, this method returns a proto.Message] value,\n\t// which always contains a google.protobuf.ExtensionRangeOptions message.\n\t// This method returns a typed nil-pointer if no options are present.\n\t// The caller must import the descriptorpb package to use this.\n\tExtensionRangeOptions(i int) ProtoMessage\n\n\t// Enums is a list of nested enum declarations.\n\tEnums() EnumDescriptors\n\t// Messages is a list of nested message declarations.\n\tMessages() MessageDescriptors\n\t// Extensions is a list of nested extension declarations.\n\tExtensions() ExtensionDescriptors\n\n\tisMessageDescriptor\n}\ntype isMessageDescriptor interface{ ProtoType(MessageDescriptor) }\n\n// MessageType encapsulates a [MessageDescriptor] with a concrete Go implementation.\n// It is recommended that implementations of this interface also implement the\n// [MessageFieldTypes] interface.\ntype MessageType interface {\n\t// New returns a newly allocated empty message.\n\t// It may return nil for synthetic messages representing a map entry.\n\tNew() Message\n\n\t// Zero returns an empty, read-only message.\n\t// It may return nil for synthetic messages representing a map entry.\n\tZero() Message\n\n\t// Descriptor returns the message descriptor.\n\t//\n\t// Invariant: t.Descriptor() == t.New().Descriptor()\n\tDescriptor() MessageDescriptor\n}\n\n// MessageFieldTypes extends a [MessageType] by providing type information\n// regarding enums and messages referenced by the message fields.\ntype MessageFieldTypes interface {\n\tMessageType\n\n\t// Enum returns the EnumType for the ith field in MessageDescriptor.Fields.\n\t// It returns nil if the ith field is not an enum kind.\n\t// It panics if out of bounds.\n\t//\n\t// Invariant: mt.Enum(i).Descriptor() == mt.Descriptor().Fields(i).Enum()\n\tEnum(i int) EnumType\n\n\t// Message returns the MessageType for the ith field in MessageDescriptor.Fields.\n\t// It returns nil if the ith field is not a message or group kind.\n\t// It panics if out of bounds.\n\t//\n\t// Invariant: mt.Message(i).Descriptor() == mt.Descriptor().Fields(i).Message()\n\tMessage(i int) MessageType\n}\n\n// MessageDescriptors is a list of message declarations.\ntype MessageDescriptors interface {\n\t// Len reports the number of messages.\n\tLen() int\n\t// Get returns the ith MessageDescriptor. It panics if out of bounds.\n\tGet(i int) MessageDescriptor\n\t// ByName returns the MessageDescriptor for a message named s.\n\t// It returns nil if not found.\n\tByName(s Name) MessageDescriptor\n\n\tdoNotImplement\n}\n\n// FieldDescriptor describes a field within a message and\n// corresponds with the google.protobuf.FieldDescriptorProto message.\n//\n// It is used for both normal fields defined within the parent message\n// (e.g., [MessageDescriptor.Fields]) and fields that extend some remote message\n// (e.g., [FileDescriptor.Extensions] or [MessageDescriptor.Extensions]).\ntype FieldDescriptor interface {\n\tDescriptor\n\n\t// Number reports the unique number for this field.\n\tNumber() FieldNumber\n\t// Cardinality reports the cardinality for this field.\n\tCardinality() Cardinality\n\t// Kind reports the basic kind for this field.\n\tKind() Kind\n\n\t// HasJSONName reports whether this field has an explicitly set JSON name.\n\tHasJSONName() bool\n\n\t// JSONName reports the name used for JSON serialization.\n\t// It is usually the camel-cased form of the field name.\n\t// Extension fields are represented by the full name surrounded by brackets.\n\tJSONName() string\n\n\t// TextName reports the name used for text serialization.\n\t// It is usually the name of the field, except that groups use the name\n\t// of the inlined message, and extension fields are represented by the\n\t// full name surrounded by brackets.\n\tTextName() string\n\n\t// HasPresence reports whether the field distinguishes between unpopulated\n\t// and default values.\n\tHasPresence() bool\n\n\t// IsExtension reports whether this is an extension field. If false,\n\t// then Parent and ContainingMessage refer to the same message.\n\t// Otherwise, ContainingMessage and Parent likely differ.\n\tIsExtension() bool\n\n\t// HasOptionalKeyword reports whether the \"optional\" keyword was explicitly\n\t// specified in the source .proto file.\n\tHasOptionalKeyword() bool\n\n\t// Deprecated: support for weak fields has been removed.\n\tIsWeak() bool\n\n\t// IsPacked reports whether repeated primitive numeric kinds should be\n\t// serialized using a packed encoding.\n\t// If true, then it implies Cardinality is Repeated.\n\tIsPacked() bool\n\n\t// IsList reports whether this field represents a list,\n\t// where the value type for the associated field is a List.\n\t// It is equivalent to checking whether Cardinality is Repeated and\n\t// that IsMap reports false.\n\tIsList() bool\n\n\t// IsMap reports whether this field represents a map,\n\t// where the value type for the associated field is a Map.\n\t// It is equivalent to checking whether Cardinality is Repeated,\n\t// that the Kind is MessageKind, and that MessageDescriptor.IsMapEntry reports true.\n\tIsMap() bool\n\n\t// MapKey returns the field descriptor for the key in the map entry.\n\t// It returns nil if IsMap reports false.\n\tMapKey() FieldDescriptor\n\n\t// MapValue returns the field descriptor for the value in the map entry.\n\t// It returns nil if IsMap reports false.\n\tMapValue() FieldDescriptor\n\n\t// HasDefault reports whether this field has a default value.\n\tHasDefault() bool\n\n\t// Default returns the default value for scalar fields.\n\t// For proto2, it is the default value as specified in the proto file,\n\t// or the zero value if unspecified.\n\t// For proto3, it is always the zero value of the scalar.\n\t// The Value type is determined by the Kind.\n\tDefault() Value\n\n\t// DefaultEnumValue returns the enum value descriptor for the default value\n\t// of an enum field, and is nil for any other kind of field.\n\tDefaultEnumValue() EnumValueDescriptor\n\n\t// ContainingOneof is the containing oneof that this field belongs to,\n\t// and is nil if this field is not part of a oneof.\n\tContainingOneof() OneofDescriptor\n\n\t// ContainingMessage is the containing message that this field belongs to.\n\t// For extension fields, this may not necessarily be the parent message\n\t// that the field is declared within.\n\tContainingMessage() MessageDescriptor\n\n\t// Enum is the enum descriptor if Kind is EnumKind.\n\t// It returns nil for any other Kind.\n\tEnum() EnumDescriptor\n\n\t// Message is the message descriptor if Kind is\n\t// MessageKind or GroupKind. It returns nil for any other Kind.\n\tMessage() MessageDescriptor\n\n\tisFieldDescriptor\n}\ntype isFieldDescriptor interface{ ProtoType(FieldDescriptor) }\n\n// FieldDescriptors is a list of field declarations.\ntype FieldDescriptors interface {\n\t// Len reports the number of fields.\n\tLen() int\n\t// Get returns the ith FieldDescriptor. It panics if out of bounds.\n\tGet(i int) FieldDescriptor\n\t// ByName returns the FieldDescriptor for a field named s.\n\t// It returns nil if not found.\n\tByName(s Name) FieldDescriptor\n\t// ByJSONName returns the FieldDescriptor for a field with s as the JSON name.\n\t// It returns nil if not found.\n\tByJSONName(s string) FieldDescriptor\n\t// ByTextName returns the FieldDescriptor for a field with s as the text name.\n\t// It returns nil if not found.\n\tByTextName(s string) FieldDescriptor\n\t// ByNumber returns the FieldDescriptor for a field numbered n.\n\t// It returns nil if not found.\n\tByNumber(n FieldNumber) FieldDescriptor\n\n\tdoNotImplement\n}\n\n// OneofDescriptor describes a oneof field set within a given message and\n// corresponds with the google.protobuf.OneofDescriptorProto message.\ntype OneofDescriptor interface {\n\tDescriptor\n\n\t// IsSynthetic reports whether this is a synthetic oneof created to support\n\t// proto3 optional semantics. If true, Fields contains exactly one field\n\t// with FieldDescriptor.HasOptionalKeyword specified.\n\tIsSynthetic() bool\n\n\t// Fields is a list of fields belonging to this oneof.\n\tFields() FieldDescriptors\n\n\tisOneofDescriptor\n}\ntype isOneofDescriptor interface{ ProtoType(OneofDescriptor) }\n\n// OneofDescriptors is a list of oneof declarations.\ntype OneofDescriptors interface {\n\t// Len reports the number of oneof fields.\n\tLen() int\n\t// Get returns the ith OneofDescriptor. It panics if out of bounds.\n\tGet(i int) OneofDescriptor\n\t// ByName returns the OneofDescriptor for a oneof named s.\n\t// It returns nil if not found.\n\tByName(s Name) OneofDescriptor\n\n\tdoNotImplement\n}\n\n// ExtensionDescriptor is an alias of [FieldDescriptor] for documentation.\ntype ExtensionDescriptor = FieldDescriptor\n\n// ExtensionTypeDescriptor is an [ExtensionDescriptor] with an associated [ExtensionType].\ntype ExtensionTypeDescriptor interface {\n\tExtensionDescriptor\n\n\t// Type returns the associated ExtensionType.\n\tType() ExtensionType\n\n\t// Descriptor returns the plain ExtensionDescriptor without the\n\t// associated ExtensionType.\n\tDescriptor() ExtensionDescriptor\n}\n\n// ExtensionDescriptors is a list of field declarations.\ntype ExtensionDescriptors interface {\n\t// Len reports the number of fields.\n\tLen() int\n\t// Get returns the ith ExtensionDescriptor. It panics if out of bounds.\n\tGet(i int) ExtensionDescriptor\n\t// ByName returns the ExtensionDescriptor for a field named s.\n\t// It returns nil if not found.\n\tByName(s Name) ExtensionDescriptor\n\n\tdoNotImplement\n}\n\n// ExtensionType encapsulates an [ExtensionDescriptor] with a concrete\n// Go implementation. The nested field descriptor must be for a extension field.\n//\n// While a normal field is a member of the parent message that it is declared\n// within (see [Descriptor.Parent]), an extension field is a member of some other\n// target message (see [FieldDescriptor.ContainingMessage]) and may have no\n// relationship with the parent. However, the full name of an extension field is\n// relative to the parent that it is declared within.\n//\n// For example:\n//\n//\tsyntax = \"proto2\";\n//\tpackage example;\n//\tmessage FooMessage {\n//\t\textensions 100 to max;\n//\t}\n//\tmessage BarMessage {\n//\t\textends FooMessage { optional BarMessage bar_field = 100; }\n//\t}\n//\n// Field \"bar_field\" is an extension of FooMessage, but its full name is\n// \"example.BarMessage.bar_field\" instead of \"example.FooMessage.bar_field\".\ntype ExtensionType interface {\n\t// New returns a new value for the field.\n\t// For scalars, this returns the default value in native Go form.\n\tNew() Value\n\n\t// Zero returns a new value for the field.\n\t// For scalars, this returns the default value in native Go form.\n\t// For composite types, this returns an empty, read-only message, list, or map.\n\tZero() Value\n\n\t// TypeDescriptor returns the extension type descriptor.\n\tTypeDescriptor() ExtensionTypeDescriptor\n\n\t// ValueOf wraps the input and returns it as a Value.\n\t// ValueOf panics if the input value is invalid or not the appropriate type.\n\t//\n\t// ValueOf is more extensive than protoreflect.ValueOf for a given field's\n\t// value as it has more type information available.\n\tValueOf(any) Value\n\n\t// InterfaceOf completely unwraps the Value to the underlying Go type.\n\t// InterfaceOf panics if the input is nil or does not represent the\n\t// appropriate underlying Go type. For composite types, it panics if the\n\t// value is not mutable.\n\t//\n\t// InterfaceOf is able to unwrap the Value further than Value.Interface\n\t// as it has more type information available.\n\tInterfaceOf(Value) any\n\n\t// IsValidValue reports whether the Value is valid to assign to the field.\n\tIsValidValue(Value) bool\n\n\t// IsValidInterface reports whether the input is valid to assign to the field.\n\tIsValidInterface(any) bool\n}\n\n// EnumDescriptor describes an enum and\n// corresponds with the google.protobuf.EnumDescriptorProto message.\n//\n// Nested declarations:\n// [EnumValueDescriptor].\ntype EnumDescriptor interface {\n\tDescriptor\n\n\t// Values is a list of nested enum value declarations.\n\tValues() EnumValueDescriptors\n\n\t// ReservedNames is a list of reserved enum names.\n\tReservedNames() Names\n\t// ReservedRanges is a list of reserved ranges of enum numbers.\n\tReservedRanges() EnumRanges\n\n\t// IsClosed reports whether this enum uses closed semantics.\n\t// See https://protobuf.dev/programming-guides/enum/#definitions.\n\t// Note: the Go protobuf implementation is not spec compliant and treats\n\t// all enums as open enums.\n\tIsClosed() bool\n\n\tisEnumDescriptor\n}\ntype isEnumDescriptor interface{ ProtoType(EnumDescriptor) }\n\n// EnumType encapsulates an [EnumDescriptor] with a concrete Go implementation.\ntype EnumType interface {\n\t// New returns an instance of this enum type with its value set to n.\n\tNew(n EnumNumber) Enum\n\n\t// Descriptor returns the enum descriptor.\n\t//\n\t// Invariant: t.Descriptor() == t.New(0).Descriptor()\n\tDescriptor() EnumDescriptor\n}\n\n// EnumDescriptors is a list of enum declarations.\ntype EnumDescriptors interface {\n\t// Len reports the number of enum types.\n\tLen() int\n\t// Get returns the ith EnumDescriptor. It panics if out of bounds.\n\tGet(i int) EnumDescriptor\n\t// ByName returns the EnumDescriptor for an enum named s.\n\t// It returns nil if not found.\n\tByName(s Name) EnumDescriptor\n\n\tdoNotImplement\n}\n\n// EnumValueDescriptor describes an enum value and\n// corresponds with the google.protobuf.EnumValueDescriptorProto message.\n//\n// All other proto declarations are in the namespace of the parent.\n// However, enum values do not follow this rule and are within the namespace\n// of the parent's parent (i.e., they are a sibling of the containing enum).\n// Thus, a value named \"FOO_VALUE\" declared within an enum uniquely identified\n// as \"proto.package.MyEnum\" has a full name of \"proto.package.FOO_VALUE\".\ntype EnumValueDescriptor interface {\n\tDescriptor\n\n\t// Number returns the enum value as an integer.\n\tNumber() EnumNumber\n\n\tisEnumValueDescriptor\n}\ntype isEnumValueDescriptor interface{ ProtoType(EnumValueDescriptor) }\n\n// EnumValueDescriptors is a list of enum value declarations.\ntype EnumValueDescriptors interface {\n\t// Len reports the number of enum values.\n\tLen() int\n\t// Get returns the ith EnumValueDescriptor. It panics if out of bounds.\n\tGet(i int) EnumValueDescriptor\n\t// ByName returns the EnumValueDescriptor for the enum value named s.\n\t// It returns nil if not found.\n\tByName(s Name) EnumValueDescriptor\n\t// ByNumber returns the EnumValueDescriptor for the enum value numbered n.\n\t// If multiple have the same number, the first one defined is returned\n\t// It returns nil if not found.\n\tByNumber(n EnumNumber) EnumValueDescriptor\n\n\tdoNotImplement\n}\n\n// ServiceDescriptor describes a service and\n// corresponds with the google.protobuf.ServiceDescriptorProto message.\n//\n// Nested declarations: [MethodDescriptor].\ntype ServiceDescriptor interface {\n\tDescriptor\n\n\t// Methods is a list of nested message declarations.\n\tMethods() MethodDescriptors\n\n\tisServiceDescriptor\n}\ntype isServiceDescriptor interface{ ProtoType(ServiceDescriptor) }\n\n// ServiceDescriptors is a list of service declarations.\ntype ServiceDescriptors interface {\n\t// Len reports the number of services.\n\tLen() int\n\t// Get returns the ith ServiceDescriptor. It panics if out of bounds.\n\tGet(i int) ServiceDescriptor\n\t// ByName returns the ServiceDescriptor for a service named s.\n\t// It returns nil if not found.\n\tByName(s Name) ServiceDescriptor\n\n\tdoNotImplement\n}\n\n// MethodDescriptor describes a method and\n// corresponds with the google.protobuf.MethodDescriptorProto message.\ntype MethodDescriptor interface {\n\tDescriptor\n\n\t// Input is the input message descriptor.\n\tInput() MessageDescriptor\n\t// Output is the output message descriptor.\n\tOutput() MessageDescriptor\n\t// IsStreamingClient reports whether the client streams multiple messages.\n\tIsStreamingClient() bool\n\t// IsStreamingServer reports whether the server streams multiple messages.\n\tIsStreamingServer() bool\n\n\tisMethodDescriptor\n}\ntype isMethodDescriptor interface{ ProtoType(MethodDescriptor) }\n\n// MethodDescriptors is a list of method declarations.\ntype MethodDescriptors interface {\n\t// Len reports the number of methods.\n\tLen() int\n\t// Get returns the ith MethodDescriptor. It panics if out of bounds.\n\tGet(i int) MethodDescriptor\n\t// ByName returns the MethodDescriptor for a service method named s.\n\t// It returns nil if not found.\n\tByName(s Name) MethodDescriptor\n\n\tdoNotImplement\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/value.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport \"google.golang.org/protobuf/encoding/protowire\"\n\n// Enum is a reflection interface for a concrete enum value,\n// which provides type information and a getter for the enum number.\n// Enum does not provide a mutable API since enums are commonly backed by\n// Go constants, which are not addressable.\ntype Enum interface {\n\t// Descriptor returns enum descriptor, which contains only the protobuf\n\t// type information for the enum.\n\tDescriptor() EnumDescriptor\n\n\t// Type returns the enum type, which encapsulates both Go and protobuf\n\t// type information. If the Go type information is not needed,\n\t// it is recommended that the enum descriptor be used instead.\n\tType() EnumType\n\n\t// Number returns the enum value as an integer.\n\tNumber() EnumNumber\n}\n\n// Message is a reflective interface for a concrete message value,\n// encapsulating both type and value information for the message.\n//\n// Accessor/mutators for individual fields are keyed by [FieldDescriptor].\n// For non-extension fields, the descriptor must exactly match the\n// field known by the parent message.\n// For extension fields, the descriptor must implement [ExtensionTypeDescriptor],\n// extend the parent message (i.e., have the same message [FullName]), and\n// be within the parent's extension range.\n//\n// Each field [Value] can be a scalar or a composite type ([Message], [List], or [Map]).\n// See [Value] for the Go types associated with a [FieldDescriptor].\n// Providing a [Value] that is invalid or of an incorrect type panics.\ntype Message interface {\n\t// Descriptor returns message descriptor, which contains only the protobuf\n\t// type information for the message.\n\tDescriptor() MessageDescriptor\n\n\t// Type returns the message type, which encapsulates both Go and protobuf\n\t// type information. If the Go type information is not needed,\n\t// it is recommended that the message descriptor be used instead.\n\tType() MessageType\n\n\t// New returns a newly allocated and mutable empty message.\n\tNew() Message\n\n\t// Interface unwraps the message reflection interface and\n\t// returns the underlying ProtoMessage interface.\n\tInterface() ProtoMessage\n\n\t// Range iterates over every populated field in an undefined order,\n\t// calling f for each field descriptor and value encountered.\n\t// Range returns immediately if f returns false.\n\t// While iterating, mutating operations may only be performed\n\t// on the current field descriptor.\n\tRange(f func(FieldDescriptor, Value) bool)\n\n\t// Has reports whether a field is populated.\n\t//\n\t// Some fields have the property of nullability where it is possible to\n\t// distinguish between the default value of a field and whether the field\n\t// was explicitly populated with the default value. Singular message fields,\n\t// member fields of a oneof, and proto2 scalar fields are nullable. Such\n\t// fields are populated only if explicitly set.\n\t//\n\t// In other cases (aside from the nullable cases above),\n\t// a proto3 scalar field is populated if it contains a non-zero value, and\n\t// a repeated field is populated if it is non-empty.\n\tHas(FieldDescriptor) bool\n\n\t// Clear clears the field such that a subsequent Has call reports false.\n\t//\n\t// Clearing an extension field clears both the extension type and value\n\t// associated with the given field number.\n\t//\n\t// Clear is a mutating operation and unsafe for concurrent use.\n\tClear(FieldDescriptor)\n\n\t// Get retrieves the value for a field.\n\t//\n\t// For unpopulated scalars, it returns the default value, where\n\t// the default value of a bytes scalar is guaranteed to be a copy.\n\t// For unpopulated composite types, it returns an empty, read-only view\n\t// of the value; to obtain a mutable reference, use Mutable.\n\tGet(FieldDescriptor) Value\n\n\t// Set stores the value for a field.\n\t//\n\t// For a field belonging to a oneof, it implicitly clears any other field\n\t// that may be currently set within the same oneof.\n\t// For extension fields, it implicitly stores the provided ExtensionType.\n\t// When setting a composite type, it is unspecified whether the stored value\n\t// aliases the source's memory in any way. If the composite value is an\n\t// empty, read-only value, then it panics.\n\t//\n\t// Set is a mutating operation and unsafe for concurrent use.\n\tSet(FieldDescriptor, Value)\n\n\t// Mutable returns a mutable reference to a composite type.\n\t//\n\t// If the field is unpopulated, it may allocate a composite value.\n\t// For a field belonging to a oneof, it implicitly clears any other field\n\t// that may be currently set within the same oneof.\n\t// For extension fields, it implicitly stores the provided ExtensionType\n\t// if not already stored.\n\t// It panics if the field does not contain a composite type.\n\t//\n\t// Mutable is a mutating operation and unsafe for concurrent use.\n\tMutable(FieldDescriptor) Value\n\n\t// NewField returns a new value that is assignable to the field\n\t// for the given descriptor. For scalars, this returns the default value.\n\t// For lists, maps, and messages, this returns a new, empty, mutable value.\n\tNewField(FieldDescriptor) Value\n\n\t// WhichOneof reports which field within the oneof is populated,\n\t// returning nil if none are populated.\n\t// It panics if the oneof descriptor does not belong to this message.\n\tWhichOneof(OneofDescriptor) FieldDescriptor\n\n\t// GetUnknown retrieves the entire list of unknown fields.\n\t// The caller may only mutate the contents of the RawFields\n\t// if the mutated bytes are stored back into the message with SetUnknown.\n\tGetUnknown() RawFields\n\n\t// SetUnknown stores an entire list of unknown fields.\n\t// The raw fields must be syntactically valid according to the wire format.\n\t// An implementation may panic if this is not the case.\n\t// Once stored, the caller must not mutate the content of the RawFields.\n\t// An empty RawFields may be passed to clear the fields.\n\t//\n\t// SetUnknown is a mutating operation and unsafe for concurrent use.\n\tSetUnknown(RawFields)\n\n\t// IsValid reports whether the message is valid.\n\t//\n\t// An invalid message is an empty, read-only value.\n\t//\n\t// An invalid message often corresponds to a nil pointer of the concrete\n\t// message type, but the details are implementation dependent.\n\t// Validity is not part of the protobuf data model, and may not\n\t// be preserved in marshaling or other operations.\n\tIsValid() bool\n\n\t// ProtoMethods returns optional fast-path implementations of various operations.\n\t// This method may return nil.\n\t//\n\t// The returned methods type is identical to\n\t// [google.golang.org/protobuf/runtime/protoiface.Methods].\n\t// Consult the protoiface package documentation for details.\n\tProtoMethods() *methods\n}\n\n// RawFields is the raw bytes for an ordered sequence of fields.\n// Each field contains both the tag (representing field number and wire type),\n// and also the wire data itself.\ntype RawFields []byte\n\n// IsValid reports whether b is syntactically correct wire format.\nfunc (b RawFields) IsValid() bool {\n\tfor len(b) > 0 {\n\t\t_, _, n := protowire.ConsumeField(b)\n\t\tif n < 0 {\n\t\t\treturn false\n\t\t}\n\t\tb = b[n:]\n\t}\n\treturn true\n}\n\n// List is a zero-indexed, ordered list.\n// The element [Value] type is determined by [FieldDescriptor.Kind].\n// Providing a [Value] that is invalid or of an incorrect type panics.\ntype List interface {\n\t// Len reports the number of entries in the List.\n\t// Get, Set, and Truncate panic with out of bound indexes.\n\tLen() int\n\n\t// Get retrieves the value at the given index.\n\t// It never returns an invalid value.\n\tGet(int) Value\n\n\t// Set stores a value for the given index.\n\t// When setting a composite type, it is unspecified whether the set\n\t// value aliases the source's memory in any way.\n\t//\n\t// Set is a mutating operation and unsafe for concurrent use.\n\tSet(int, Value)\n\n\t// Append appends the provided value to the end of the list.\n\t// When appending a composite type, it is unspecified whether the appended\n\t// value aliases the source's memory in any way.\n\t//\n\t// Append is a mutating operation and unsafe for concurrent use.\n\tAppend(Value)\n\n\t// AppendMutable appends a new, empty, mutable message value to the end\n\t// of the list and returns it.\n\t// It panics if the list does not contain a message type.\n\tAppendMutable() Value\n\n\t// Truncate truncates the list to a smaller length.\n\t//\n\t// Truncate is a mutating operation and unsafe for concurrent use.\n\tTruncate(int)\n\n\t// NewElement returns a new value for a list element.\n\t// For enums, this returns the first enum value.\n\t// For other scalars, this returns the zero value.\n\t// For messages, this returns a new, empty, mutable value.\n\tNewElement() Value\n\n\t// IsValid reports whether the list is valid.\n\t//\n\t// An invalid list is an empty, read-only value.\n\t//\n\t// Validity is not part of the protobuf data model, and may not\n\t// be preserved in marshaling or other operations.\n\tIsValid() bool\n}\n\n// Map is an unordered, associative map.\n// The entry [MapKey] type is determined by [FieldDescriptor.MapKey].Kind.\n// The entry [Value] type is determined by [FieldDescriptor.MapValue].Kind.\n// Providing a [MapKey] or [Value] that is invalid or of an incorrect type panics.\ntype Map interface {\n\t// Len reports the number of elements in the map.\n\tLen() int\n\n\t// Range iterates over every map entry in an undefined order,\n\t// calling f for each key and value encountered.\n\t// Range calls f Len times unless f returns false, which stops iteration.\n\t// While iterating, mutating operations may only be performed\n\t// on the current map key.\n\tRange(f func(MapKey, Value) bool)\n\n\t// Has reports whether an entry with the given key is in the map.\n\tHas(MapKey) bool\n\n\t// Clear clears the entry associated with they given key.\n\t// The operation does nothing if there is no entry associated with the key.\n\t//\n\t// Clear is a mutating operation and unsafe for concurrent use.\n\tClear(MapKey)\n\n\t// Get retrieves the value for an entry with the given key.\n\t// It returns an invalid value for non-existent entries.\n\tGet(MapKey) Value\n\n\t// Set stores the value for an entry with the given key.\n\t// It panics when given a key or value that is invalid or the wrong type.\n\t// When setting a composite type, it is unspecified whether the set\n\t// value aliases the source's memory in any way.\n\t//\n\t// Set is a mutating operation and unsafe for concurrent use.\n\tSet(MapKey, Value)\n\n\t// Mutable retrieves a mutable reference to the entry for the given key.\n\t// If no entry exists for the key, it creates a new, empty, mutable value\n\t// and stores it as the entry for the key.\n\t// It panics if the map value is not a message.\n\tMutable(MapKey) Value\n\n\t// NewValue returns a new value assignable as a map value.\n\t// For enums, this returns the first enum value.\n\t// For other scalars, this returns the zero value.\n\t// For messages, this returns a new, empty, mutable value.\n\tNewValue() Value\n\n\t// IsValid reports whether the map is valid.\n\t//\n\t// An invalid map is an empty, read-only value.\n\t//\n\t// An invalid message often corresponds to a nil Go map value,\n\t// but the details are implementation dependent.\n\t// Validity is not part of the protobuf data model, and may not\n\t// be preserved in marshaling or other operations.\n\tIsValid() bool\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n)\n\n// Equal reports whether v1 and v2 are recursively equal.\n//\n//   - Values of different types are always unequal.\n//\n//   - Bytes values are equal if they contain identical bytes.\n//     Empty bytes (regardless of nil-ness) are considered equal.\n//\n//   - Floating point values are equal if they contain the same value.\n//     Unlike the == operator, a NaN is equal to another NaN.\n//\n//   - Enums are equal if they contain the same number.\n//     Since [Value] does not contain an enum descriptor,\n//     enum values do not consider the type of the enum.\n//\n//   - Other scalar values are equal if they contain the same value.\n//\n//   - [Message] values are equal if they belong to the same message descriptor,\n//     have the same set of populated known and extension field values,\n//     and the same set of unknown fields values.\n//\n//   - [List] values are equal if they are the same length and\n//     each corresponding element is equal.\n//\n//   - [Map] values are equal if they have the same set of keys and\n//     the corresponding value for each key is equal.\nfunc (v1 Value) Equal(v2 Value) bool {\n\treturn equalValue(v1, v2)\n}\n\nfunc equalValue(x, y Value) bool {\n\teqType := x.typ == y.typ\n\tswitch x.typ {\n\tcase nilType:\n\t\treturn eqType\n\tcase boolType:\n\t\treturn eqType && x.Bool() == y.Bool()\n\tcase int32Type, int64Type:\n\t\treturn eqType && x.Int() == y.Int()\n\tcase uint32Type, uint64Type:\n\t\treturn eqType && x.Uint() == y.Uint()\n\tcase float32Type, float64Type:\n\t\treturn eqType && equalFloat(x.Float(), y.Float())\n\tcase stringType:\n\t\treturn eqType && x.String() == y.String()\n\tcase bytesType:\n\t\treturn eqType && bytes.Equal(x.Bytes(), y.Bytes())\n\tcase enumType:\n\t\treturn eqType && x.Enum() == y.Enum()\n\tdefault:\n\t\tswitch x := x.Interface().(type) {\n\t\tcase Message:\n\t\t\ty, ok := y.Interface().(Message)\n\t\t\treturn ok && equalMessage(x, y)\n\t\tcase List:\n\t\t\ty, ok := y.Interface().(List)\n\t\t\treturn ok && equalList(x, y)\n\t\tcase Map:\n\t\t\ty, ok := y.Interface().(Map)\n\t\t\treturn ok && equalMap(x, y)\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"unknown type: %T\", x))\n\t\t}\n\t}\n}\n\n// equalFloat compares two floats, where NaNs are treated as equal.\nfunc equalFloat(x, y float64) bool {\n\tif math.IsNaN(x) || math.IsNaN(y) {\n\t\treturn math.IsNaN(x) && math.IsNaN(y)\n\t}\n\treturn x == y\n}\n\n// equalMessage compares two messages.\nfunc equalMessage(mx, my Message) bool {\n\tif mx.Descriptor() != my.Descriptor() {\n\t\treturn false\n\t}\n\n\tnx := 0\n\tequal := true\n\tmx.Range(func(fd FieldDescriptor, vx Value) bool {\n\t\tnx++\n\t\tvy := my.Get(fd)\n\t\tequal = my.Has(fd) && equalValue(vx, vy)\n\t\treturn equal\n\t})\n\tif !equal {\n\t\treturn false\n\t}\n\tny := 0\n\tmy.Range(func(fd FieldDescriptor, vx Value) bool {\n\t\tny++\n\t\treturn true\n\t})\n\tif nx != ny {\n\t\treturn false\n\t}\n\n\treturn equalUnknown(mx.GetUnknown(), my.GetUnknown())\n}\n\n// equalList compares two lists.\nfunc equalList(x, y List) bool {\n\tif x.Len() != y.Len() {\n\t\treturn false\n\t}\n\tfor i := x.Len() - 1; i >= 0; i-- {\n\t\tif !equalValue(x.Get(i), y.Get(i)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// equalMap compares two maps.\nfunc equalMap(x, y Map) bool {\n\tif x.Len() != y.Len() {\n\t\treturn false\n\t}\n\tequal := true\n\tx.Range(func(k MapKey, vx Value) bool {\n\t\tvy := y.Get(k)\n\t\tequal = y.Has(k) && equalValue(vx, vy)\n\t\treturn equal\n\t})\n\treturn equal\n}\n\n// equalUnknown compares unknown fields by direct comparison on the raw bytes\n// of each individual field number.\nfunc equalUnknown(x, y RawFields) bool {\n\tif len(x) != len(y) {\n\t\treturn false\n\t}\n\tif bytes.Equal([]byte(x), []byte(y)) {\n\t\treturn true\n\t}\n\n\tmx := make(map[FieldNumber]RawFields)\n\tmy := make(map[FieldNumber]RawFields)\n\tfor len(x) > 0 {\n\t\tfnum, _, n := protowire.ConsumeField(x)\n\t\tmx[fnum] = append(mx[fnum], x[:n]...)\n\t\tx = x[n:]\n\t}\n\tfor len(y) > 0 {\n\t\tfnum, _, n := protowire.ConsumeField(y)\n\t\tmy[fnum] = append(my[fnum], y[:n]...)\n\t\ty = y[n:]\n\t}\n\treturn reflect.DeepEqual(mx, my)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport (\n\t\"fmt\"\n\t\"math\"\n)\n\n// Value is a union where only one Go type may be set at a time.\n// The Value is used to represent all possible values a field may take.\n// The following shows which Go type is used to represent each proto [Kind]:\n//\n//\t╔════════════╤═════════════════════════════════════╗\n//\t║ Go type    │ Protobuf kind                       ║\n//\t╠════════════╪═════════════════════════════════════╣\n//\t║ bool       │ BoolKind                            ║\n//\t║ int32      │ Int32Kind, Sint32Kind, Sfixed32Kind ║\n//\t║ int64      │ Int64Kind, Sint64Kind, Sfixed64Kind ║\n//\t║ uint32     │ Uint32Kind, Fixed32Kind             ║\n//\t║ uint64     │ Uint64Kind, Fixed64Kind             ║\n//\t║ float32    │ FloatKind                           ║\n//\t║ float64    │ DoubleKind                          ║\n//\t║ string     │ StringKind                          ║\n//\t║ []byte     │ BytesKind                           ║\n//\t║ EnumNumber │ EnumKind                            ║\n//\t║ Message    │ MessageKind, GroupKind              ║\n//\t╚════════════╧═════════════════════════════════════╝\n//\n// Multiple protobuf Kinds may be represented by a single Go type if the type\n// can losslessly represent the information for the proto kind. For example,\n// [Int64Kind], [Sint64Kind], and [Sfixed64Kind] are all represented by int64,\n// but use different integer encoding methods.\n//\n// The [List] or [Map] types are used if the field cardinality is repeated.\n// A field is a [List] if [FieldDescriptor.IsList] reports true.\n// A field is a [Map] if [FieldDescriptor.IsMap] reports true.\n//\n// Converting to/from a Value and a concrete Go value panics on type mismatch.\n// For example, [ValueOf](\"hello\").Int() panics because this attempts to\n// retrieve an int64 from a string.\n//\n// [List], [Map], and [Message] Values are called \"composite\" values.\n//\n// A composite Value may alias (reference) memory at some location,\n// such that changes to the Value updates the that location.\n// A composite value acquired with a Mutable method, such as [Message.Mutable],\n// always references the source object.\n//\n// For example:\n//\n//\t// Append a 0 to a \"repeated int32\" field.\n//\t// Since the Value returned by Mutable is guaranteed to alias\n//\t// the source message, modifying the Value modifies the message.\n//\tmessage.Mutable(fieldDesc).List().Append(protoreflect.ValueOfInt32(0))\n//\n//\t// Assign [0] to a \"repeated int32\" field by creating a new Value,\n//\t// modifying it, and assigning it.\n//\tlist := message.NewField(fieldDesc).List()\n//\tlist.Append(protoreflect.ValueOfInt32(0))\n//\tmessage.Set(fieldDesc, list)\n//\t// ERROR: Since it is not defined whether Set aliases the source,\n//\t// appending to the List here may or may not modify the message.\n//\tlist.Append(protoreflect.ValueOfInt32(0))\n//\n// Some operations, such as [Message.Get], may return an \"empty, read-only\"\n// composite Value. Modifying an empty, read-only value panics.\ntype Value value\n\n// The protoreflect API uses a custom Value union type instead of any\n// to keep the future open for performance optimizations. Using an any\n// always incurs an allocation for primitives (e.g., int64) since it needs to\n// be boxed on the heap (as interfaces can only contain pointers natively).\n// Instead, we represent the Value union as a flat struct that internally keeps\n// track of which type is set. Using unsafe, the Value union can be reduced\n// down to 24B, which is identical in size to a slice.\n//\n// The latest compiler (Go1.11) currently suffers from some limitations:\n//\t• With inlining, the compiler should be able to statically prove that\n//\tonly one of these switch cases are taken and inline one specific case.\n//\tSee https://golang.org/issue/22310.\n\n// ValueOf returns a Value initialized with the concrete value stored in v.\n// This panics if the type does not match one of the allowed types in the\n// Value union.\nfunc ValueOf(v any) Value {\n\tswitch v := v.(type) {\n\tcase nil:\n\t\treturn Value{}\n\tcase bool:\n\t\treturn ValueOfBool(v)\n\tcase int32:\n\t\treturn ValueOfInt32(v)\n\tcase int64:\n\t\treturn ValueOfInt64(v)\n\tcase uint32:\n\t\treturn ValueOfUint32(v)\n\tcase uint64:\n\t\treturn ValueOfUint64(v)\n\tcase float32:\n\t\treturn ValueOfFloat32(v)\n\tcase float64:\n\t\treturn ValueOfFloat64(v)\n\tcase string:\n\t\treturn ValueOfString(v)\n\tcase []byte:\n\t\treturn ValueOfBytes(v)\n\tcase EnumNumber:\n\t\treturn ValueOfEnum(v)\n\tcase Message, List, Map:\n\t\treturn valueOfIface(v)\n\tcase ProtoMessage:\n\t\tpanic(fmt.Sprintf(\"invalid proto.Message(%T) type, expected a protoreflect.Message type\", v))\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid type: %T\", v))\n\t}\n}\n\n// ValueOfBool returns a new boolean value.\nfunc ValueOfBool(v bool) Value {\n\tif v {\n\t\treturn Value{typ: boolType, num: 1}\n\t} else {\n\t\treturn Value{typ: boolType, num: 0}\n\t}\n}\n\n// ValueOfInt32 returns a new int32 value.\nfunc ValueOfInt32(v int32) Value {\n\treturn Value{typ: int32Type, num: uint64(v)}\n}\n\n// ValueOfInt64 returns a new int64 value.\nfunc ValueOfInt64(v int64) Value {\n\treturn Value{typ: int64Type, num: uint64(v)}\n}\n\n// ValueOfUint32 returns a new uint32 value.\nfunc ValueOfUint32(v uint32) Value {\n\treturn Value{typ: uint32Type, num: uint64(v)}\n}\n\n// ValueOfUint64 returns a new uint64 value.\nfunc ValueOfUint64(v uint64) Value {\n\treturn Value{typ: uint64Type, num: v}\n}\n\n// ValueOfFloat32 returns a new float32 value.\nfunc ValueOfFloat32(v float32) Value {\n\treturn Value{typ: float32Type, num: uint64(math.Float64bits(float64(v)))}\n}\n\n// ValueOfFloat64 returns a new float64 value.\nfunc ValueOfFloat64(v float64) Value {\n\treturn Value{typ: float64Type, num: uint64(math.Float64bits(float64(v)))}\n}\n\n// ValueOfString returns a new string value.\nfunc ValueOfString(v string) Value {\n\treturn valueOfString(v)\n}\n\n// ValueOfBytes returns a new bytes value.\nfunc ValueOfBytes(v []byte) Value {\n\treturn valueOfBytes(v[:len(v):len(v)])\n}\n\n// ValueOfEnum returns a new enum value.\nfunc ValueOfEnum(v EnumNumber) Value {\n\treturn Value{typ: enumType, num: uint64(v)}\n}\n\n// ValueOfMessage returns a new Message value.\nfunc ValueOfMessage(v Message) Value {\n\treturn valueOfIface(v)\n}\n\n// ValueOfList returns a new List value.\nfunc ValueOfList(v List) Value {\n\treturn valueOfIface(v)\n}\n\n// ValueOfMap returns a new Map value.\nfunc ValueOfMap(v Map) Value {\n\treturn valueOfIface(v)\n}\n\n// IsValid reports whether v is populated with a value.\nfunc (v Value) IsValid() bool {\n\treturn v.typ != nilType\n}\n\n// Interface returns v as an any.\n//\n// Invariant: v == ValueOf(v).Interface()\nfunc (v Value) Interface() any {\n\tswitch v.typ {\n\tcase nilType:\n\t\treturn nil\n\tcase boolType:\n\t\treturn v.Bool()\n\tcase int32Type:\n\t\treturn int32(v.Int())\n\tcase int64Type:\n\t\treturn int64(v.Int())\n\tcase uint32Type:\n\t\treturn uint32(v.Uint())\n\tcase uint64Type:\n\t\treturn uint64(v.Uint())\n\tcase float32Type:\n\t\treturn float32(v.Float())\n\tcase float64Type:\n\t\treturn float64(v.Float())\n\tcase stringType:\n\t\treturn v.String()\n\tcase bytesType:\n\t\treturn v.Bytes()\n\tcase enumType:\n\t\treturn v.Enum()\n\tdefault:\n\t\treturn v.getIface()\n\t}\n}\n\nfunc (v Value) typeName() string {\n\tswitch v.typ {\n\tcase nilType:\n\t\treturn \"nil\"\n\tcase boolType:\n\t\treturn \"bool\"\n\tcase int32Type:\n\t\treturn \"int32\"\n\tcase int64Type:\n\t\treturn \"int64\"\n\tcase uint32Type:\n\t\treturn \"uint32\"\n\tcase uint64Type:\n\t\treturn \"uint64\"\n\tcase float32Type:\n\t\treturn \"float32\"\n\tcase float64Type:\n\t\treturn \"float64\"\n\tcase stringType:\n\t\treturn \"string\"\n\tcase bytesType:\n\t\treturn \"bytes\"\n\tcase enumType:\n\t\treturn \"enum\"\n\tdefault:\n\t\tswitch v := v.getIface().(type) {\n\t\tcase Message:\n\t\t\treturn \"message\"\n\t\tcase List:\n\t\t\treturn \"list\"\n\t\tcase Map:\n\t\t\treturn \"map\"\n\t\tdefault:\n\t\t\treturn fmt.Sprintf(\"<unknown: %T>\", v)\n\t\t}\n\t}\n}\n\nfunc (v Value) panicMessage(what string) string {\n\treturn fmt.Sprintf(\"type mismatch: cannot convert %v to %s\", v.typeName(), what)\n}\n\n// Bool returns v as a bool and panics if the type is not a bool.\nfunc (v Value) Bool() bool {\n\tswitch v.typ {\n\tcase boolType:\n\t\treturn v.num > 0\n\tdefault:\n\t\tpanic(v.panicMessage(\"bool\"))\n\t}\n}\n\n// Int returns v as a int64 and panics if the type is not a int32 or int64.\nfunc (v Value) Int() int64 {\n\tswitch v.typ {\n\tcase int32Type, int64Type:\n\t\treturn int64(v.num)\n\tdefault:\n\t\tpanic(v.panicMessage(\"int\"))\n\t}\n}\n\n// Uint returns v as a uint64 and panics if the type is not a uint32 or uint64.\nfunc (v Value) Uint() uint64 {\n\tswitch v.typ {\n\tcase uint32Type, uint64Type:\n\t\treturn uint64(v.num)\n\tdefault:\n\t\tpanic(v.panicMessage(\"uint\"))\n\t}\n}\n\n// Float returns v as a float64 and panics if the type is not a float32 or float64.\nfunc (v Value) Float() float64 {\n\tswitch v.typ {\n\tcase float32Type, float64Type:\n\t\treturn math.Float64frombits(uint64(v.num))\n\tdefault:\n\t\tpanic(v.panicMessage(\"float\"))\n\t}\n}\n\n// String returns v as a string. Since this method implements [fmt.Stringer],\n// this returns the formatted string value for any non-string type.\nfunc (v Value) String() string {\n\tswitch v.typ {\n\tcase stringType:\n\t\treturn v.getString()\n\tdefault:\n\t\treturn fmt.Sprint(v.Interface())\n\t}\n}\n\n// Bytes returns v as a []byte and panics if the type is not a []byte.\nfunc (v Value) Bytes() []byte {\n\tswitch v.typ {\n\tcase bytesType:\n\t\treturn v.getBytes()\n\tdefault:\n\t\tpanic(v.panicMessage(\"bytes\"))\n\t}\n}\n\n// Enum returns v as a [EnumNumber] and panics if the type is not a [EnumNumber].\nfunc (v Value) Enum() EnumNumber {\n\tswitch v.typ {\n\tcase enumType:\n\t\treturn EnumNumber(v.num)\n\tdefault:\n\t\tpanic(v.panicMessage(\"enum\"))\n\t}\n}\n\n// Message returns v as a [Message] and panics if the type is not a [Message].\nfunc (v Value) Message() Message {\n\tswitch vi := v.getIface().(type) {\n\tcase Message:\n\t\treturn vi\n\tdefault:\n\t\tpanic(v.panicMessage(\"message\"))\n\t}\n}\n\n// List returns v as a [List] and panics if the type is not a [List].\nfunc (v Value) List() List {\n\tswitch vi := v.getIface().(type) {\n\tcase List:\n\t\treturn vi\n\tdefault:\n\t\tpanic(v.panicMessage(\"list\"))\n\t}\n}\n\n// Map returns v as a [Map] and panics if the type is not a [Map].\nfunc (v Value) Map() Map {\n\tswitch vi := v.getIface().(type) {\n\tcase Map:\n\t\treturn vi\n\tdefault:\n\t\tpanic(v.panicMessage(\"map\"))\n\t}\n}\n\n// MapKey returns v as a [MapKey] and panics for invalid [MapKey] types.\nfunc (v Value) MapKey() MapKey {\n\tswitch v.typ {\n\tcase boolType, int32Type, int64Type, uint32Type, uint64Type, stringType:\n\t\treturn MapKey(v)\n\tdefault:\n\t\tpanic(v.panicMessage(\"map key\"))\n\t}\n}\n\n// MapKey is used to index maps, where the Go type of the MapKey must match\n// the specified key [Kind] (see [MessageDescriptor.IsMapEntry]).\n// The following shows what Go type is used to represent each proto [Kind]:\n//\n//\t╔═════════╤═════════════════════════════════════╗\n//\t║ Go type │ Protobuf kind                       ║\n//\t╠═════════╪═════════════════════════════════════╣\n//\t║ bool    │ BoolKind                            ║\n//\t║ int32   │ Int32Kind, Sint32Kind, Sfixed32Kind ║\n//\t║ int64   │ Int64Kind, Sint64Kind, Sfixed64Kind ║\n//\t║ uint32  │ Uint32Kind, Fixed32Kind             ║\n//\t║ uint64  │ Uint64Kind, Fixed64Kind             ║\n//\t║ string  │ StringKind                          ║\n//\t╚═════════╧═════════════════════════════════════╝\n//\n// A MapKey is constructed and accessed through a [Value]:\n//\n//\tk := ValueOf(\"hash\").MapKey() // convert string to MapKey\n//\ts := k.String()               // convert MapKey to string\n//\n// The MapKey is a strict subset of valid types used in [Value];\n// converting a [Value] to a MapKey with an invalid type panics.\ntype MapKey value\n\n// IsValid reports whether k is populated with a value.\nfunc (k MapKey) IsValid() bool {\n\treturn Value(k).IsValid()\n}\n\n// Interface returns k as an any.\nfunc (k MapKey) Interface() any {\n\treturn Value(k).Interface()\n}\n\n// Bool returns k as a bool and panics if the type is not a bool.\nfunc (k MapKey) Bool() bool {\n\treturn Value(k).Bool()\n}\n\n// Int returns k as a int64 and panics if the type is not a int32 or int64.\nfunc (k MapKey) Int() int64 {\n\treturn Value(k).Int()\n}\n\n// Uint returns k as a uint64 and panics if the type is not a uint32 or uint64.\nfunc (k MapKey) Uint() uint64 {\n\treturn Value(k).Uint()\n}\n\n// String returns k as a string. Since this method implements [fmt.Stringer],\n// this returns the formatted string value for any non-string type.\nfunc (k MapKey) String() string {\n\treturn Value(k).String()\n}\n\n// Value returns k as a [Value].\nfunc (k MapKey) Value() Value {\n\treturn Value(k)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport (\n\t\"unsafe\"\n\n\t\"google.golang.org/protobuf/internal/pragma\"\n)\n\ntype (\n\tifaceHeader struct {\n\t\t_    [0]any // if interfaces have greater alignment than unsafe.Pointer, this will enforce it.\n\t\tType unsafe.Pointer\n\t\tData unsafe.Pointer\n\t}\n)\n\nvar (\n\tnilType     = typeOf(nil)\n\tboolType    = typeOf(*new(bool))\n\tint32Type   = typeOf(*new(int32))\n\tint64Type   = typeOf(*new(int64))\n\tuint32Type  = typeOf(*new(uint32))\n\tuint64Type  = typeOf(*new(uint64))\n\tfloat32Type = typeOf(*new(float32))\n\tfloat64Type = typeOf(*new(float64))\n\tstringType  = typeOf(*new(string))\n\tbytesType   = typeOf(*new([]byte))\n\tenumType    = typeOf(*new(EnumNumber))\n)\n\n// typeOf returns a pointer to the Go type information.\n// The pointer is comparable and equal if and only if the types are identical.\nfunc typeOf(t any) unsafe.Pointer {\n\treturn (*ifaceHeader)(unsafe.Pointer(&t)).Type\n}\n\n// value is a union where only one type can be represented at a time.\n// The struct is 24B large on 64-bit systems and requires the minimum storage\n// necessary to represent each possible type.\n//\n// The Go GC needs to be able to scan variables containing pointers.\n// As such, pointers and non-pointers cannot be intermixed.\ntype value struct {\n\tpragma.DoNotCompare // 0B\n\n\t// typ stores the type of the value as a pointer to the Go type.\n\ttyp unsafe.Pointer // 8B\n\n\t// ptr stores the data pointer for a String, Bytes, or interface value.\n\tptr unsafe.Pointer // 8B\n\n\t// num stores a Bool, Int32, Int64, Uint32, Uint64, Float32, Float64, or\n\t// Enum value as a raw uint64.\n\t//\n\t// It is also used to store the length of a String or Bytes value;\n\t// the capacity is ignored.\n\tnum uint64 // 8B\n}\n\nfunc valueOfString(v string) Value {\n\treturn Value{typ: stringType, ptr: unsafe.Pointer(unsafe.StringData(v)), num: uint64(len(v))}\n}\nfunc valueOfBytes(v []byte) Value {\n\treturn Value{typ: bytesType, ptr: unsafe.Pointer(unsafe.SliceData(v)), num: uint64(len(v))}\n}\nfunc valueOfIface(v any) Value {\n\tp := (*ifaceHeader)(unsafe.Pointer(&v))\n\treturn Value{typ: p.Type, ptr: p.Data}\n}\n\nfunc (v Value) getString() string {\n\treturn unsafe.String((*byte)(v.ptr), v.num)\n}\nfunc (v Value) getBytes() []byte {\n\treturn unsafe.Slice((*byte)(v.ptr), v.num)\n}\nfunc (v Value) getIface() (x any) {\n\t*(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr}\n\treturn x\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protoregistry provides data structures to register and lookup\n// protobuf descriptor types.\n//\n// The [Files] registry contains file descriptors and provides the ability\n// to iterate over the files or lookup a specific descriptor within the files.\n// [Files] only contains protobuf descriptors and has no understanding of Go\n// type information that may be associated with each descriptor.\n//\n// The [Types] registry contains descriptor types for which there is a known\n// Go type associated with that descriptor. It provides the ability to iterate\n// over the registered types or lookup a type by name.\npackage protoregistry\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// conflictPolicy configures the policy for handling registration conflicts.\n//\n// It can be over-written at compile time with a linker-initialized variable:\n//\n//\tgo build -ldflags \"-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn\"\n//\n// It can be over-written at program execution with an environment variable:\n//\n//\tGOLANG_PROTOBUF_REGISTRATION_CONFLICT=warn ./main\n//\n// Neither of the above are covered by the compatibility promise and\n// may be removed in a future release of this module.\nvar conflictPolicy = \"panic\" // \"panic\" | \"warn\" | \"ignore\"\n\n// ignoreConflict reports whether to ignore a registration conflict\n// given the descriptor being registered and the error.\n// It is a variable so that the behavior is easily overridden in another file.\nvar ignoreConflict = func(d protoreflect.Descriptor, err error) bool {\n\tconst env = \"GOLANG_PROTOBUF_REGISTRATION_CONFLICT\"\n\tconst faq = \"https://protobuf.dev/reference/go/faq#namespace-conflict\"\n\tpolicy := conflictPolicy\n\tif v := os.Getenv(env); v != \"\" {\n\t\tpolicy = v\n\t}\n\tswitch policy {\n\tcase \"panic\":\n\t\tpanic(fmt.Sprintf(\"%v\\nSee %v\\n\", err, faq))\n\tcase \"warn\":\n\t\tfmt.Fprintf(os.Stderr, \"WARNING: %v\\nSee %v\\n\\n\", err, faq)\n\t\treturn true\n\tcase \"ignore\":\n\t\treturn true\n\tdefault:\n\t\tpanic(\"invalid \" + env + \" value: \" + os.Getenv(env))\n\t}\n}\n\nvar globalMutex sync.RWMutex\n\n// GlobalFiles is a global registry of file descriptors.\nvar GlobalFiles *Files = new(Files)\n\n// GlobalTypes is the registry used by default for type lookups\n// unless a local registry is provided by the user.\nvar GlobalTypes *Types = new(Types)\n\n// NotFound is a sentinel error value to indicate that the type was not found.\n//\n// Since registry lookup can happen in the critical performance path, resolvers\n// must return this exact error value, not an error wrapping it.\nvar NotFound = errors.New(\"not found\")\n\n// Files is a registry for looking up or iterating over files and the\n// descriptors contained within them.\n// The Find and Range methods are safe for concurrent use.\ntype Files struct {\n\t// The map of descsByName contains:\n\t//\tEnumDescriptor\n\t//\tEnumValueDescriptor\n\t//\tMessageDescriptor\n\t//\tExtensionDescriptor\n\t//\tServiceDescriptor\n\t//\t*packageDescriptor\n\t//\n\t// Note that files are stored as a slice, since a package may contain\n\t// multiple files. Only top-level declarations are registered.\n\t// Note that enum values are in the top-level since that are in the same\n\t// scope as the parent enum.\n\tdescsByName map[protoreflect.FullName]any\n\tfilesByPath map[string][]protoreflect.FileDescriptor\n\tnumFiles    int\n}\n\ntype packageDescriptor struct {\n\tfiles []protoreflect.FileDescriptor\n}\n\n// RegisterFile registers the provided file descriptor.\n//\n// If any descriptor within the file conflicts with the descriptor of any\n// previously registered file (e.g., two enums with the same full name),\n// then the file is not registered and an error is returned.\n//\n// It is permitted for multiple files to have the same file path.\nfunc (r *Files) RegisterFile(file protoreflect.FileDescriptor) error {\n\tif r == GlobalFiles {\n\t\tglobalMutex.Lock()\n\t\tdefer globalMutex.Unlock()\n\t}\n\tif r.descsByName == nil {\n\t\tr.descsByName = map[protoreflect.FullName]any{\n\t\t\t\"\": &packageDescriptor{},\n\t\t}\n\t\tr.filesByPath = make(map[string][]protoreflect.FileDescriptor)\n\t}\n\tpath := file.Path()\n\tif prev := r.filesByPath[path]; len(prev) > 0 {\n\t\tr.checkGenProtoConflict(path)\n\t\terr := errors.New(\"file %q is already registered\", file.Path())\n\t\terr = amendErrorWithCaller(err, prev[0], file)\n\t\tif !(r == GlobalFiles && ignoreConflict(file, err)) {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tfor name := file.Package(); name != \"\"; name = name.Parent() {\n\t\tswitch prev := r.descsByName[name]; prev.(type) {\n\t\tcase nil, *packageDescriptor:\n\t\tdefault:\n\t\t\terr := errors.New(\"file %q has a package name conflict over %v\", file.Path(), name)\n\t\t\terr = amendErrorWithCaller(err, prev, file)\n\t\t\tif r == GlobalFiles && ignoreConflict(file, err) {\n\t\t\t\terr = nil\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t}\n\tvar err error\n\tvar hasConflict bool\n\trangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) {\n\t\tif prev := r.descsByName[d.FullName()]; prev != nil {\n\t\t\thasConflict = true\n\t\t\terr = errors.New(\"file %q has a name conflict over %v\", file.Path(), d.FullName())\n\t\t\terr = amendErrorWithCaller(err, prev, file)\n\t\t\tif r == GlobalFiles && ignoreConflict(d, err) {\n\t\t\t\terr = nil\n\t\t\t}\n\t\t}\n\t})\n\tif hasConflict {\n\t\treturn err\n\t}\n\n\tfor name := file.Package(); name != \"\"; name = name.Parent() {\n\t\tif r.descsByName[name] == nil {\n\t\t\tr.descsByName[name] = &packageDescriptor{}\n\t\t}\n\t}\n\tp := r.descsByName[file.Package()].(*packageDescriptor)\n\tp.files = append(p.files, file)\n\trangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) {\n\t\tr.descsByName[d.FullName()] = d\n\t})\n\tr.filesByPath[path] = append(r.filesByPath[path], file)\n\tr.numFiles++\n\treturn nil\n}\n\n// Several well-known types were hosted in the google.golang.org/genproto module\n// but were later moved to this module. To avoid a weak dependency on the\n// genproto module (and its relatively large set of transitive dependencies),\n// we rely on a registration conflict to determine whether the genproto version\n// is too old (i.e., does not contain aliases to the new type declarations).\nfunc (r *Files) checkGenProtoConflict(path string) {\n\tif r != GlobalFiles {\n\t\treturn\n\t}\n\tvar prevPath string\n\tconst prevModule = \"google.golang.org/genproto\"\n\tconst prevVersion = \"cb27e3aa (May 26th, 2020)\"\n\tswitch path {\n\tcase \"google/protobuf/field_mask.proto\":\n\t\tprevPath = prevModule + \"/protobuf/field_mask\"\n\tcase \"google/protobuf/api.proto\":\n\t\tprevPath = prevModule + \"/protobuf/api\"\n\tcase \"google/protobuf/type.proto\":\n\t\tprevPath = prevModule + \"/protobuf/ptype\"\n\tcase \"google/protobuf/source_context.proto\":\n\t\tprevPath = prevModule + \"/protobuf/source_context\"\n\tdefault:\n\t\treturn\n\t}\n\tpkgName := strings.TrimSuffix(strings.TrimPrefix(path, \"google/protobuf/\"), \".proto\")\n\tpkgName = strings.Replace(pkgName, \"_\", \"\", -1) + \"pb\" // e.g., \"field_mask\" => \"fieldmaskpb\"\n\tcurrPath := \"google.golang.org/protobuf/types/known/\" + pkgName\n\tpanic(fmt.Sprintf(\"\"+\n\t\t\"duplicate registration of %q\\n\"+\n\t\t\"\\n\"+\n\t\t\"The generated definition for this file has moved:\\n\"+\n\t\t\"\\tfrom: %q\\n\"+\n\t\t\"\\tto:   %q\\n\"+\n\t\t\"A dependency on the %q module must\\n\"+\n\t\t\"be at version %v or higher.\\n\"+\n\t\t\"\\n\"+\n\t\t\"Upgrade the dependency by running:\\n\"+\n\t\t\"\\tgo get -u %v\\n\",\n\t\tpath, prevPath, currPath, prevModule, prevVersion, prevPath))\n}\n\n// FindDescriptorByName looks up a descriptor by the full name.\n//\n// This returns (nil, [NotFound]) if not found.\nfunc (r *Files) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tprefix := name\n\tsuffix := nameSuffix(\"\")\n\tfor prefix != \"\" {\n\t\tif d, ok := r.descsByName[prefix]; ok {\n\t\t\tswitch d := d.(type) {\n\t\t\tcase protoreflect.EnumDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\tcase protoreflect.EnumValueDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\t\tif d := findDescriptorInMessage(d, suffix); d != nil && d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\tcase protoreflect.ExtensionDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\tcase protoreflect.ServiceDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\t\tif d := d.Methods().ByName(suffix.Pop()); d != nil && d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil, NotFound\n\t\t}\n\t\tprefix = prefix.Parent()\n\t\tsuffix = nameSuffix(name[len(prefix)+len(\".\"):])\n\t}\n\treturn nil, NotFound\n}\n\nfunc findDescriptorInMessage(md protoreflect.MessageDescriptor, suffix nameSuffix) protoreflect.Descriptor {\n\tname := suffix.Pop()\n\tif suffix == \"\" {\n\t\tif ed := md.Enums().ByName(name); ed != nil {\n\t\t\treturn ed\n\t\t}\n\t\tfor i := md.Enums().Len() - 1; i >= 0; i-- {\n\t\t\tif vd := md.Enums().Get(i).Values().ByName(name); vd != nil {\n\t\t\t\treturn vd\n\t\t\t}\n\t\t}\n\t\tif xd := md.Extensions().ByName(name); xd != nil {\n\t\t\treturn xd\n\t\t}\n\t\tif fd := md.Fields().ByName(name); fd != nil {\n\t\t\treturn fd\n\t\t}\n\t\tif od := md.Oneofs().ByName(name); od != nil {\n\t\t\treturn od\n\t\t}\n\t}\n\tif md := md.Messages().ByName(name); md != nil {\n\t\tif suffix == \"\" {\n\t\t\treturn md\n\t\t}\n\t\treturn findDescriptorInMessage(md, suffix)\n\t}\n\treturn nil\n}\n\ntype nameSuffix string\n\nfunc (s *nameSuffix) Pop() (name protoreflect.Name) {\n\tif i := strings.IndexByte(string(*s), '.'); i >= 0 {\n\t\tname, *s = protoreflect.Name((*s)[:i]), (*s)[i+1:]\n\t} else {\n\t\tname, *s = protoreflect.Name((*s)), \"\"\n\t}\n\treturn name\n}\n\n// FindFileByPath looks up a file by the path.\n//\n// This returns (nil, [NotFound]) if not found.\n// This returns an error if multiple files have the same path.\nfunc (r *Files) FindFileByPath(path string) (protoreflect.FileDescriptor, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfds := r.filesByPath[path]\n\tswitch len(fds) {\n\tcase 0:\n\t\treturn nil, NotFound\n\tcase 1:\n\t\treturn fds[0], nil\n\tdefault:\n\t\treturn nil, errors.New(\"multiple files named %q\", path)\n\t}\n}\n\n// NumFiles reports the number of registered files,\n// including duplicate files with the same name.\nfunc (r *Files) NumFiles() int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn r.numFiles\n}\n\n// RangeFiles iterates over all registered files while f returns true.\n// If multiple files have the same name, RangeFiles iterates over all of them.\n// The iteration order is undefined.\nfunc (r *Files) RangeFiles(f func(protoreflect.FileDescriptor) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, files := range r.filesByPath {\n\t\tfor _, file := range files {\n\t\t\tif !f(file) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// NumFilesByPackage reports the number of registered files in a proto package.\nfunc (r *Files) NumFilesByPackage(name protoreflect.FullName) int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tp, ok := r.descsByName[name].(*packageDescriptor)\n\tif !ok {\n\t\treturn 0\n\t}\n\treturn len(p.files)\n}\n\n// RangeFilesByPackage iterates over all registered files in a given proto package\n// while f returns true. The iteration order is undefined.\nfunc (r *Files) RangeFilesByPackage(name protoreflect.FullName, f func(protoreflect.FileDescriptor) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tp, ok := r.descsByName[name].(*packageDescriptor)\n\tif !ok {\n\t\treturn\n\t}\n\tfor _, file := range p.files {\n\t\tif !f(file) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// rangeTopLevelDescriptors iterates over all top-level descriptors in a file\n// which will be directly entered into the registry.\nfunc rangeTopLevelDescriptors(fd protoreflect.FileDescriptor, f func(protoreflect.Descriptor)) {\n\teds := fd.Enums()\n\tfor i := eds.Len() - 1; i >= 0; i-- {\n\t\tf(eds.Get(i))\n\t\tvds := eds.Get(i).Values()\n\t\tfor i := vds.Len() - 1; i >= 0; i-- {\n\t\t\tf(vds.Get(i))\n\t\t}\n\t}\n\tmds := fd.Messages()\n\tfor i := mds.Len() - 1; i >= 0; i-- {\n\t\tf(mds.Get(i))\n\t}\n\txds := fd.Extensions()\n\tfor i := xds.Len() - 1; i >= 0; i-- {\n\t\tf(xds.Get(i))\n\t}\n\tsds := fd.Services()\n\tfor i := sds.Len() - 1; i >= 0; i-- {\n\t\tf(sds.Get(i))\n\t}\n}\n\n// MessageTypeResolver is an interface for looking up messages.\n//\n// A compliant implementation must deterministically return the same type\n// if no error is encountered.\n//\n// The [Types] type implements this interface.\ntype MessageTypeResolver interface {\n\t// FindMessageByName looks up a message by its full name.\n\t// E.g., \"google.protobuf.Any\"\n\t//\n\t// This return (nil, NotFound) if not found.\n\tFindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error)\n\n\t// FindMessageByURL looks up a message by a URL identifier.\n\t// See documentation on google.protobuf.Any.type_url for the URL format.\n\t//\n\t// This returns (nil, NotFound) if not found.\n\tFindMessageByURL(url string) (protoreflect.MessageType, error)\n}\n\n// ExtensionTypeResolver is an interface for looking up extensions.\n//\n// A compliant implementation must deterministically return the same type\n// if no error is encountered.\n//\n// The [Types] type implements this interface.\ntype ExtensionTypeResolver interface {\n\t// FindExtensionByName looks up a extension field by the field's full name.\n\t// Note that this is the full name of the field as determined by\n\t// where the extension is declared and is unrelated to the full name of the\n\t// message being extended.\n\t//\n\t// This returns (nil, NotFound) if not found.\n\tFindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)\n\n\t// FindExtensionByNumber looks up a extension field by the field number\n\t// within some parent message, identified by full name.\n\t//\n\t// This returns (nil, NotFound) if not found.\n\tFindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)\n}\n\nvar (\n\t_ MessageTypeResolver   = (*Types)(nil)\n\t_ ExtensionTypeResolver = (*Types)(nil)\n)\n\n// Types is a registry for looking up or iterating over descriptor types.\n// The Find and Range methods are safe for concurrent use.\ntype Types struct {\n\ttypesByName         typesByName\n\textensionsByMessage extensionsByMessage\n\n\tnumEnums      int\n\tnumMessages   int\n\tnumExtensions int\n}\n\ntype (\n\ttypesByName         map[protoreflect.FullName]any\n\textensionsByMessage map[protoreflect.FullName]extensionsByNumber\n\textensionsByNumber  map[protoreflect.FieldNumber]protoreflect.ExtensionType\n)\n\n// RegisterMessage registers the provided message type.\n//\n// If a naming conflict occurs, the type is not registered and an error is returned.\nfunc (r *Types) RegisterMessage(mt protoreflect.MessageType) error {\n\t// Under rare circumstances getting the descriptor might recursively\n\t// examine the registry, so fetch it before locking.\n\tmd := mt.Descriptor()\n\n\tif r == GlobalTypes {\n\t\tglobalMutex.Lock()\n\t\tdefer globalMutex.Unlock()\n\t}\n\n\tif err := r.register(\"message\", md, mt); err != nil {\n\t\treturn err\n\t}\n\tr.numMessages++\n\treturn nil\n}\n\n// RegisterEnum registers the provided enum type.\n//\n// If a naming conflict occurs, the type is not registered and an error is returned.\nfunc (r *Types) RegisterEnum(et protoreflect.EnumType) error {\n\t// Under rare circumstances getting the descriptor might recursively\n\t// examine the registry, so fetch it before locking.\n\ted := et.Descriptor()\n\n\tif r == GlobalTypes {\n\t\tglobalMutex.Lock()\n\t\tdefer globalMutex.Unlock()\n\t}\n\n\tif err := r.register(\"enum\", ed, et); err != nil {\n\t\treturn err\n\t}\n\tr.numEnums++\n\treturn nil\n}\n\n// RegisterExtension registers the provided extension type.\n//\n// If a naming conflict occurs, the type is not registered and an error is returned.\nfunc (r *Types) RegisterExtension(xt protoreflect.ExtensionType) error {\n\t// Under rare circumstances getting the descriptor might recursively\n\t// examine the registry, so fetch it before locking.\n\t//\n\t// A known case where this can happen: Fetching the TypeDescriptor for a\n\t// legacy ExtensionDesc can consult the global registry.\n\txd := xt.TypeDescriptor()\n\n\tif r == GlobalTypes {\n\t\tglobalMutex.Lock()\n\t\tdefer globalMutex.Unlock()\n\t}\n\n\tfield := xd.Number()\n\tmessage := xd.ContainingMessage().FullName()\n\tif prev := r.extensionsByMessage[message][field]; prev != nil {\n\t\terr := errors.New(\"extension number %d is already registered on message %v\", field, message)\n\t\terr = amendErrorWithCaller(err, prev, xt)\n\t\tif !(r == GlobalTypes && ignoreConflict(xd, err)) {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := r.register(\"extension\", xd, xt); err != nil {\n\t\treturn err\n\t}\n\tif r.extensionsByMessage == nil {\n\t\tr.extensionsByMessage = make(extensionsByMessage)\n\t}\n\tif r.extensionsByMessage[message] == nil {\n\t\tr.extensionsByMessage[message] = make(extensionsByNumber)\n\t}\n\tr.extensionsByMessage[message][field] = xt\n\tr.numExtensions++\n\treturn nil\n}\n\nfunc (r *Types) register(kind string, desc protoreflect.Descriptor, typ any) error {\n\tname := desc.FullName()\n\tprev := r.typesByName[name]\n\tif prev != nil {\n\t\terr := errors.New(\"%v %v is already registered\", kind, name)\n\t\terr = amendErrorWithCaller(err, prev, typ)\n\t\tif !(r == GlobalTypes && ignoreConflict(desc, err)) {\n\t\t\treturn err\n\t\t}\n\t}\n\tif r.typesByName == nil {\n\t\tr.typesByName = make(typesByName)\n\t}\n\tr.typesByName[name] = typ\n\treturn nil\n}\n\n// FindEnumByName looks up an enum by its full name.\n// E.g., \"google.protobuf.Field.Kind\".\n//\n// This returns (nil, [NotFound]) if not found.\nfunc (r *Types) FindEnumByName(enum protoreflect.FullName) (protoreflect.EnumType, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tif v := r.typesByName[enum]; v != nil {\n\t\tif et, _ := v.(protoreflect.EnumType); et != nil {\n\t\t\treturn et, nil\n\t\t}\n\t\treturn nil, errors.New(\"found wrong type: got %v, want enum\", typeName(v))\n\t}\n\treturn nil, NotFound\n}\n\n// FindMessageByName looks up a message by its full name,\n// e.g. \"google.protobuf.Any\".\n//\n// This returns (nil, [NotFound]) if not found.\nfunc (r *Types) FindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tif v := r.typesByName[message]; v != nil {\n\t\tif mt, _ := v.(protoreflect.MessageType); mt != nil {\n\t\t\treturn mt, nil\n\t\t}\n\t\treturn nil, errors.New(\"found wrong type: got %v, want message\", typeName(v))\n\t}\n\treturn nil, NotFound\n}\n\n// FindMessageByURL looks up a message by a URL identifier.\n// See documentation on google.protobuf.Any.type_url for the URL format.\n//\n// This returns (nil, [NotFound]) if not found.\nfunc (r *Types) FindMessageByURL(url string) (protoreflect.MessageType, error) {\n\t// This function is similar to FindMessageByName but\n\t// truncates anything before and including '/' in the URL.\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tmessage := protoreflect.FullName(url)\n\tif i := strings.LastIndexByte(url, '/'); i >= 0 {\n\t\tmessage = message[i+len(\"/\"):]\n\t}\n\n\tif v := r.typesByName[message]; v != nil {\n\t\tif mt, _ := v.(protoreflect.MessageType); mt != nil {\n\t\t\treturn mt, nil\n\t\t}\n\t\treturn nil, errors.New(\"found wrong type: got %v, want message\", typeName(v))\n\t}\n\treturn nil, NotFound\n}\n\n// FindExtensionByName looks up a extension field by the field's full name.\n// Note that this is the full name of the field as determined by\n// where the extension is declared and is unrelated to the full name of the\n// message being extended.\n//\n// This returns (nil, [NotFound]) if not found.\nfunc (r *Types) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tif v := r.typesByName[field]; v != nil {\n\t\tif xt, _ := v.(protoreflect.ExtensionType); xt != nil {\n\t\t\treturn xt, nil\n\t\t}\n\n\t\t// MessageSet extensions are special in that the name of the extension\n\t\t// is the name of the message type used to extend the MessageSet.\n\t\t// This naming scheme is used by text and JSON serialization.\n\t\t//\n\t\t// This feature is protected by the ProtoLegacy flag since MessageSets\n\t\t// are a proto1 feature that is long deprecated.\n\t\tif flags.ProtoLegacy {\n\t\t\tif _, ok := v.(protoreflect.MessageType); ok {\n\t\t\t\tfield := field.Append(messageset.ExtensionName)\n\t\t\t\tif v := r.typesByName[field]; v != nil {\n\t\t\t\t\tif xt, _ := v.(protoreflect.ExtensionType); xt != nil {\n\t\t\t\t\t\tif messageset.IsMessageSetExtension(xt.TypeDescriptor()) {\n\t\t\t\t\t\t\treturn xt, nil\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nil, errors.New(\"found wrong type: got %v, want extension\", typeName(v))\n\t}\n\treturn nil, NotFound\n}\n\n// FindExtensionByNumber looks up a extension field by the field number\n// within some parent message, identified by full name.\n//\n// This returns (nil, [NotFound]) if not found.\nfunc (r *Types) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tif xt, ok := r.extensionsByMessage[message][field]; ok {\n\t\treturn xt, nil\n\t}\n\treturn nil, NotFound\n}\n\n// NumEnums reports the number of registered enums.\nfunc (r *Types) NumEnums() int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn r.numEnums\n}\n\n// RangeEnums iterates over all registered enums while f returns true.\n// Iteration order is undefined.\nfunc (r *Types) RangeEnums(f func(protoreflect.EnumType) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, typ := range r.typesByName {\n\t\tif et, ok := typ.(protoreflect.EnumType); ok {\n\t\t\tif !f(et) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// NumMessages reports the number of registered messages.\nfunc (r *Types) NumMessages() int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn r.numMessages\n}\n\n// RangeMessages iterates over all registered messages while f returns true.\n// Iteration order is undefined.\nfunc (r *Types) RangeMessages(f func(protoreflect.MessageType) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, typ := range r.typesByName {\n\t\tif mt, ok := typ.(protoreflect.MessageType); ok {\n\t\t\tif !f(mt) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// NumExtensions reports the number of registered extensions.\nfunc (r *Types) NumExtensions() int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn r.numExtensions\n}\n\n// RangeExtensions iterates over all registered extensions while f returns true.\n// Iteration order is undefined.\nfunc (r *Types) RangeExtensions(f func(protoreflect.ExtensionType) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, typ := range r.typesByName {\n\t\tif xt, ok := typ.(protoreflect.ExtensionType); ok {\n\t\t\tif !f(xt) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// NumExtensionsByMessage reports the number of registered extensions for\n// a given message type.\nfunc (r *Types) NumExtensionsByMessage(message protoreflect.FullName) int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn len(r.extensionsByMessage[message])\n}\n\n// RangeExtensionsByMessage iterates over all registered extensions filtered\n// by a given message type while f returns true. Iteration order is undefined.\nfunc (r *Types) RangeExtensionsByMessage(message protoreflect.FullName, f func(protoreflect.ExtensionType) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, xt := range r.extensionsByMessage[message] {\n\t\tif !f(xt) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc typeName(t any) string {\n\tswitch t.(type) {\n\tcase protoreflect.EnumType:\n\t\treturn \"enum\"\n\tcase protoreflect.MessageType:\n\t\treturn \"message\"\n\tcase protoreflect.ExtensionType:\n\t\treturn \"extension\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"%T\", t)\n\t}\n}\n\nfunc amendErrorWithCaller(err error, prev, curr any) error {\n\tprevPkg := goPackage(prev)\n\tcurrPkg := goPackage(curr)\n\tif prevPkg == \"\" || currPkg == \"\" || prevPkg == currPkg {\n\t\treturn err\n\t}\n\treturn errors.New(\"%s\\n\\tpreviously from: %q\\n\\tcurrently from:  %q\", err, prevPkg, currPkg)\n}\n\nfunc goPackage(v any) string {\n\tswitch d := v.(type) {\n\tcase protoreflect.EnumType:\n\t\tv = d.Descriptor()\n\tcase protoreflect.MessageType:\n\t\tv = d.Descriptor()\n\tcase protoreflect.ExtensionType:\n\t\tv = d.TypeDescriptor()\n\t}\n\tif d, ok := v.(protoreflect.Descriptor); ok {\n\t\tv = d.ParentFile()\n\t}\n\tif d, ok := v.(interface{ GoPackagePath() string }); ok {\n\t\treturn d.GoPackagePath()\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoiface\n\ntype MessageV1 interface {\n\tReset()\n\tString() string\n\tProtoMessage()\n}\n\ntype ExtensionRangeV1 struct {\n\tStart, End int32 // both inclusive\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/runtime/protoiface/methods.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protoiface contains types referenced or implemented by messages.\n//\n// WARNING: This package should only be imported by message implementations.\n// The functionality found in this package should be accessed through\n// higher-level abstractions provided by the proto package.\npackage protoiface\n\nimport (\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Methods is a set of optional fast-path implementations of various operations.\ntype Methods = struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// Flags indicate support for optional features.\n\tFlags SupportFlags\n\n\t// Size returns the size in bytes of the wire-format encoding of a message.\n\t// Marshal must be provided if a custom Size is provided.\n\tSize func(SizeInput) SizeOutput\n\n\t// Marshal formats a message in the wire-format encoding to the provided buffer.\n\t// Size should be provided if a custom Marshal is provided.\n\t// It must not return an error for a partial message.\n\tMarshal func(MarshalInput) (MarshalOutput, error)\n\n\t// Unmarshal parses the wire-format encoding and merges the result into a message.\n\t// It must not reset the target message or return an error for a partial message.\n\tUnmarshal func(UnmarshalInput) (UnmarshalOutput, error)\n\n\t// Merge merges the contents of a source message into a destination message.\n\tMerge func(MergeInput) MergeOutput\n\n\t// CheckInitialized returns an error if any required fields in the message are not set.\n\tCheckInitialized func(CheckInitializedInput) (CheckInitializedOutput, error)\n\n\t// Equal compares two messages and returns EqualOutput.Equal == true if they are equal.\n\tEqual func(EqualInput) EqualOutput\n}\n\n// SupportFlags indicate support for optional features.\ntype SupportFlags = uint64\n\nconst (\n\t// SupportMarshalDeterministic reports whether MarshalOptions.Deterministic is supported.\n\tSupportMarshalDeterministic SupportFlags = 1 << iota\n\n\t// SupportUnmarshalDiscardUnknown reports whether UnmarshalOptions.DiscardUnknown is supported.\n\tSupportUnmarshalDiscardUnknown\n)\n\n// SizeInput is input to the Size method.\ntype SizeInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tMessage protoreflect.Message\n\tFlags   MarshalInputFlags\n}\n\n// SizeOutput is output from the Size method.\ntype SizeOutput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tSize int\n}\n\n// MarshalInput is input to the Marshal method.\ntype MarshalInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tMessage protoreflect.Message\n\tBuf     []byte // output is appended to this buffer\n\tFlags   MarshalInputFlags\n}\n\n// MarshalOutput is output from the Marshal method.\ntype MarshalOutput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tBuf []byte // contains marshaled message\n}\n\n// MarshalInputFlags configure the marshaler.\n// Most flags correspond to fields in proto.MarshalOptions.\ntype MarshalInputFlags = uint8\n\nconst (\n\tMarshalDeterministic MarshalInputFlags = 1 << iota\n\tMarshalUseCachedSize\n)\n\n// UnmarshalInput is input to the Unmarshal method.\ntype UnmarshalInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tMessage  protoreflect.Message\n\tBuf      []byte // input buffer\n\tFlags    UnmarshalInputFlags\n\tResolver interface {\n\t\tFindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)\n\t\tFindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)\n\t}\n\tDepth int\n}\n\n// UnmarshalOutput is output from the Unmarshal method.\ntype UnmarshalOutput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tFlags UnmarshalOutputFlags\n}\n\n// UnmarshalInputFlags configure the unmarshaler.\n// Most flags correspond to fields in proto.UnmarshalOptions.\ntype UnmarshalInputFlags = uint8\n\nconst (\n\tUnmarshalDiscardUnknown UnmarshalInputFlags = 1 << iota\n\n\t// UnmarshalAliasBuffer permits unmarshal operations to alias the input buffer.\n\t// The unmarshaller must not modify the contents of the buffer.\n\tUnmarshalAliasBuffer\n\n\t// UnmarshalValidated indicates that validation has already been\n\t// performed on the input buffer.\n\tUnmarshalValidated\n\n\t// UnmarshalCheckRequired is set if this unmarshal operation ultimately will care if required fields are\n\t// initialized.\n\tUnmarshalCheckRequired\n\n\t// UnmarshalNoLazyDecoding is set if this unmarshal operation should not use\n\t// lazy decoding, even when otherwise available.\n\tUnmarshalNoLazyDecoding\n)\n\n// UnmarshalOutputFlags are output from the Unmarshal method.\ntype UnmarshalOutputFlags = uint8\n\nconst (\n\t// UnmarshalInitialized may be set on return if all required fields are known to be set.\n\t// If unset, then it does not necessarily indicate that the message is uninitialized,\n\t// only that its status could not be confirmed.\n\tUnmarshalInitialized UnmarshalOutputFlags = 1 << iota\n)\n\n// MergeInput is input to the Merge method.\ntype MergeInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tSource      protoreflect.Message\n\tDestination protoreflect.Message\n}\n\n// MergeOutput is output from the Merge method.\ntype MergeOutput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tFlags MergeOutputFlags\n}\n\n// MergeOutputFlags are output from the Merge method.\ntype MergeOutputFlags = uint8\n\nconst (\n\t// MergeComplete reports whether the merge was performed.\n\t// If unset, the merger must have made no changes to the destination.\n\tMergeComplete MergeOutputFlags = 1 << iota\n)\n\n// CheckInitializedInput is input to the CheckInitialized method.\ntype CheckInitializedInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tMessage protoreflect.Message\n}\n\n// CheckInitializedOutput is output from the CheckInitialized method.\ntype CheckInitializedOutput = struct {\n\tpragma.NoUnkeyedLiterals\n}\n\n// EqualInput is input to the Equal method.\ntype EqualInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tMessageA protoreflect.Message\n\tMessageB protoreflect.Message\n}\n\n// EqualOutput is output from the Equal method.\ntype EqualOutput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tEqual bool\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protoimpl contains the default implementation for messages\n// generated by protoc-gen-go.\n//\n// WARNING: This package should only ever be imported by generated messages.\n// The compatibility agreement covers nothing except for functionality needed\n// to keep existing generated messages operational. Breakages that occur due\n// to unauthorized usages of this package are not the author's responsibility.\npackage protoimpl\n\nimport (\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/filetype\"\n\t\"google.golang.org/protobuf/internal/impl\"\n\t\"google.golang.org/protobuf/internal/protolazy\"\n)\n\n// UnsafeEnabled specifies whether package unsafe can be used.\nconst UnsafeEnabled = impl.UnsafeEnabled\n\ntype (\n\t// Types used by generated code in init functions.\n\tDescBuilder = filedesc.Builder\n\tTypeBuilder = filetype.Builder\n\n\t// Types used by generated code to implement EnumType, MessageType, and ExtensionType.\n\tEnumInfo      = impl.EnumInfo\n\tMessageInfo   = impl.MessageInfo\n\tExtensionInfo = impl.ExtensionInfo\n\n\t// Types embedded in generated messages.\n\tMessageState     = impl.MessageState\n\tSizeCache        = impl.SizeCache\n\tWeakFields       = impl.WeakFields\n\tUnknownFields    = impl.UnknownFields\n\tExtensionFields  = impl.ExtensionFields\n\tExtensionFieldV1 = impl.ExtensionField\n\n\tPointer = impl.Pointer\n\n\tLazyUnmarshalInfo  = *protolazy.XXX_lazyUnmarshalInfo\n\tRaceDetectHookData = impl.RaceDetectHookData\n)\n\nvar X impl.Export\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/runtime/protoimpl/version.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoimpl\n\nimport (\n\t\"google.golang.org/protobuf/internal/version\"\n)\n\nconst (\n\t// MaxVersion is the maximum supported version for generated .pb.go files.\n\t// It is always the current version of the module.\n\tMaxVersion = version.Minor\n\n\t// GenVersion is the runtime version required by generated .pb.go files.\n\t// This is incremented when generated code relies on new functionality\n\t// in the runtime.\n\tGenVersion = 20\n\n\t// MinVersion is the minimum supported version for generated .pb.go files.\n\t// This is incremented when the runtime drops support for old code.\n\tMinVersion = 0\n)\n\n// EnforceVersion is used by code generated by protoc-gen-go\n// to statically enforce minimum and maximum versions of this package.\n// A compilation failure implies either that:\n//   - the runtime package is too old and needs to be updated OR\n//   - the generated code is too old and needs to be regenerated.\n//\n// The runtime package can be upgraded by running:\n//\n//\tgo get google.golang.org/protobuf\n//\n// The generated code can be regenerated by running:\n//\n//\tprotoc --go_out=${PROTOC_GEN_GO_ARGS} ${PROTO_FILES}\n//\n// Example usage by generated code:\n//\n//\tconst (\n//\t\t// Verify that this generated code is sufficiently up-to-date.\n//\t\t_ = protoimpl.EnforceVersion(genVersion - protoimpl.MinVersion)\n//\t\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n//\t\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - genVersion)\n//\t)\n//\n// The genVersion is the current minor version used to generated the code.\n// This compile-time check relies on negative integer overflow of a uint\n// being a compilation failure (guaranteed by the Go specification).\ntype EnforceVersion uint\n\n// This enforces the following invariant:\n//\n//\tMinVersion ≤ GenVersion ≤ MaxVersion\nconst (\n\t_ = EnforceVersion(GenVersion - MinVersion)\n\t_ = EnforceVersion(MaxVersion - GenVersion)\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Author: kenton@google.com (Kenton Varda)\n//  Based on original Protocol Buffers design by\n//  Sanjay Ghemawat, Jeff Dean, and others.\n//\n// The messages in this file describe the definitions found in .proto files.\n// A valid .proto file can be translated directly to a FileDescriptorProto\n// without any other information (e.g. without reading its imports).\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/descriptor.proto\n\npackage descriptorpb\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\n// The full set of known editions.\ntype Edition int32\n\nconst (\n\t// A placeholder for an unknown edition value.\n\tEdition_EDITION_UNKNOWN Edition = 0\n\t// A placeholder edition for specifying default behaviors *before* a feature\n\t// was first introduced.  This is effectively an \"infinite past\".\n\tEdition_EDITION_LEGACY Edition = 900\n\t// Legacy syntax \"editions\".  These pre-date editions, but behave much like\n\t// distinct editions.  These can't be used to specify the edition of proto\n\t// files, but feature definitions must supply proto2/proto3 defaults for\n\t// backwards compatibility.\n\tEdition_EDITION_PROTO2 Edition = 998\n\tEdition_EDITION_PROTO3 Edition = 999\n\t// Editions that have been released.  The specific values are arbitrary and\n\t// should not be depended on, but they will always be time-ordered for easy\n\t// comparison.\n\tEdition_EDITION_2023 Edition = 1000\n\tEdition_EDITION_2024 Edition = 1001\n\t// A placeholder edition for developing and testing unscheduled features.\n\tEdition_EDITION_UNSTABLE Edition = 9999\n\t// Placeholder editions for testing feature resolution.  These should not be\n\t// used or relied on outside of tests.\n\tEdition_EDITION_1_TEST_ONLY     Edition = 1\n\tEdition_EDITION_2_TEST_ONLY     Edition = 2\n\tEdition_EDITION_99997_TEST_ONLY Edition = 99997\n\tEdition_EDITION_99998_TEST_ONLY Edition = 99998\n\tEdition_EDITION_99999_TEST_ONLY Edition = 99999\n\t// Placeholder for specifying unbounded edition support.  This should only\n\t// ever be used by plugins that can expect to never require any changes to\n\t// support a new edition.\n\tEdition_EDITION_MAX Edition = 2147483647\n)\n\n// Enum value maps for Edition.\nvar (\n\tEdition_name = map[int32]string{\n\t\t0:          \"EDITION_UNKNOWN\",\n\t\t900:        \"EDITION_LEGACY\",\n\t\t998:        \"EDITION_PROTO2\",\n\t\t999:        \"EDITION_PROTO3\",\n\t\t1000:       \"EDITION_2023\",\n\t\t1001:       \"EDITION_2024\",\n\t\t9999:       \"EDITION_UNSTABLE\",\n\t\t1:          \"EDITION_1_TEST_ONLY\",\n\t\t2:          \"EDITION_2_TEST_ONLY\",\n\t\t99997:      \"EDITION_99997_TEST_ONLY\",\n\t\t99998:      \"EDITION_99998_TEST_ONLY\",\n\t\t99999:      \"EDITION_99999_TEST_ONLY\",\n\t\t2147483647: \"EDITION_MAX\",\n\t}\n\tEdition_value = map[string]int32{\n\t\t\"EDITION_UNKNOWN\":         0,\n\t\t\"EDITION_LEGACY\":          900,\n\t\t\"EDITION_PROTO2\":          998,\n\t\t\"EDITION_PROTO3\":          999,\n\t\t\"EDITION_2023\":            1000,\n\t\t\"EDITION_2024\":            1001,\n\t\t\"EDITION_UNSTABLE\":        9999,\n\t\t\"EDITION_1_TEST_ONLY\":     1,\n\t\t\"EDITION_2_TEST_ONLY\":     2,\n\t\t\"EDITION_99997_TEST_ONLY\": 99997,\n\t\t\"EDITION_99998_TEST_ONLY\": 99998,\n\t\t\"EDITION_99999_TEST_ONLY\": 99999,\n\t\t\"EDITION_MAX\":             2147483647,\n\t}\n)\n\nfunc (x Edition) Enum() *Edition {\n\tp := new(Edition)\n\t*p = x\n\treturn p\n}\n\nfunc (x Edition) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (Edition) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[0].Descriptor()\n}\n\nfunc (Edition) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[0]\n}\n\nfunc (x Edition) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *Edition) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = Edition(num)\n\treturn nil\n}\n\n// Deprecated: Use Edition.Descriptor instead.\nfunc (Edition) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{0}\n}\n\n// Describes the 'visibility' of a symbol with respect to the proto import\n// system. Symbols can only be imported when the visibility rules do not prevent\n// it (ex: local symbols cannot be imported).  Visibility modifiers can only set\n// on `message` and `enum` as they are the only types available to be referenced\n// from other files.\ntype SymbolVisibility int32\n\nconst (\n\tSymbolVisibility_VISIBILITY_UNSET  SymbolVisibility = 0\n\tSymbolVisibility_VISIBILITY_LOCAL  SymbolVisibility = 1\n\tSymbolVisibility_VISIBILITY_EXPORT SymbolVisibility = 2\n)\n\n// Enum value maps for SymbolVisibility.\nvar (\n\tSymbolVisibility_name = map[int32]string{\n\t\t0: \"VISIBILITY_UNSET\",\n\t\t1: \"VISIBILITY_LOCAL\",\n\t\t2: \"VISIBILITY_EXPORT\",\n\t}\n\tSymbolVisibility_value = map[string]int32{\n\t\t\"VISIBILITY_UNSET\":  0,\n\t\t\"VISIBILITY_LOCAL\":  1,\n\t\t\"VISIBILITY_EXPORT\": 2,\n\t}\n)\n\nfunc (x SymbolVisibility) Enum() *SymbolVisibility {\n\tp := new(SymbolVisibility)\n\t*p = x\n\treturn p\n}\n\nfunc (x SymbolVisibility) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (SymbolVisibility) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[1].Descriptor()\n}\n\nfunc (SymbolVisibility) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[1]\n}\n\nfunc (x SymbolVisibility) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *SymbolVisibility) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = SymbolVisibility(num)\n\treturn nil\n}\n\n// Deprecated: Use SymbolVisibility.Descriptor instead.\nfunc (SymbolVisibility) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{1}\n}\n\n// The verification state of the extension range.\ntype ExtensionRangeOptions_VerificationState int32\n\nconst (\n\t// All the extensions of the range must be declared.\n\tExtensionRangeOptions_DECLARATION ExtensionRangeOptions_VerificationState = 0\n\tExtensionRangeOptions_UNVERIFIED  ExtensionRangeOptions_VerificationState = 1\n)\n\n// Enum value maps for ExtensionRangeOptions_VerificationState.\nvar (\n\tExtensionRangeOptions_VerificationState_name = map[int32]string{\n\t\t0: \"DECLARATION\",\n\t\t1: \"UNVERIFIED\",\n\t}\n\tExtensionRangeOptions_VerificationState_value = map[string]int32{\n\t\t\"DECLARATION\": 0,\n\t\t\"UNVERIFIED\":  1,\n\t}\n)\n\nfunc (x ExtensionRangeOptions_VerificationState) Enum() *ExtensionRangeOptions_VerificationState {\n\tp := new(ExtensionRangeOptions_VerificationState)\n\t*p = x\n\treturn p\n}\n\nfunc (x ExtensionRangeOptions_VerificationState) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ExtensionRangeOptions_VerificationState) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[2].Descriptor()\n}\n\nfunc (ExtensionRangeOptions_VerificationState) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[2]\n}\n\nfunc (x ExtensionRangeOptions_VerificationState) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *ExtensionRangeOptions_VerificationState) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = ExtensionRangeOptions_VerificationState(num)\n\treturn nil\n}\n\n// Deprecated: Use ExtensionRangeOptions_VerificationState.Descriptor instead.\nfunc (ExtensionRangeOptions_VerificationState) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3, 0}\n}\n\ntype FieldDescriptorProto_Type int32\n\nconst (\n\t// 0 is reserved for errors.\n\t// Order is weird for historical reasons.\n\tFieldDescriptorProto_TYPE_DOUBLE FieldDescriptorProto_Type = 1\n\tFieldDescriptorProto_TYPE_FLOAT  FieldDescriptorProto_Type = 2\n\t// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if\n\t// negative values are likely.\n\tFieldDescriptorProto_TYPE_INT64  FieldDescriptorProto_Type = 3\n\tFieldDescriptorProto_TYPE_UINT64 FieldDescriptorProto_Type = 4\n\t// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if\n\t// negative values are likely.\n\tFieldDescriptorProto_TYPE_INT32   FieldDescriptorProto_Type = 5\n\tFieldDescriptorProto_TYPE_FIXED64 FieldDescriptorProto_Type = 6\n\tFieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7\n\tFieldDescriptorProto_TYPE_BOOL    FieldDescriptorProto_Type = 8\n\tFieldDescriptorProto_TYPE_STRING  FieldDescriptorProto_Type = 9\n\t// Tag-delimited aggregate.\n\t// Group type is deprecated and not supported after google.protobuf. However, Proto3\n\t// implementations should still be able to parse the group wire format and\n\t// treat group fields as unknown fields.  In Editions, the group wire format\n\t// can be enabled via the `message_encoding` feature.\n\tFieldDescriptorProto_TYPE_GROUP   FieldDescriptorProto_Type = 10\n\tFieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11 // Length-delimited aggregate.\n\t// New in version 2.\n\tFieldDescriptorProto_TYPE_BYTES    FieldDescriptorProto_Type = 12\n\tFieldDescriptorProto_TYPE_UINT32   FieldDescriptorProto_Type = 13\n\tFieldDescriptorProto_TYPE_ENUM     FieldDescriptorProto_Type = 14\n\tFieldDescriptorProto_TYPE_SFIXED32 FieldDescriptorProto_Type = 15\n\tFieldDescriptorProto_TYPE_SFIXED64 FieldDescriptorProto_Type = 16\n\tFieldDescriptorProto_TYPE_SINT32   FieldDescriptorProto_Type = 17 // Uses ZigZag encoding.\n\tFieldDescriptorProto_TYPE_SINT64   FieldDescriptorProto_Type = 18 // Uses ZigZag encoding.\n)\n\n// Enum value maps for FieldDescriptorProto_Type.\nvar (\n\tFieldDescriptorProto_Type_name = map[int32]string{\n\t\t1:  \"TYPE_DOUBLE\",\n\t\t2:  \"TYPE_FLOAT\",\n\t\t3:  \"TYPE_INT64\",\n\t\t4:  \"TYPE_UINT64\",\n\t\t5:  \"TYPE_INT32\",\n\t\t6:  \"TYPE_FIXED64\",\n\t\t7:  \"TYPE_FIXED32\",\n\t\t8:  \"TYPE_BOOL\",\n\t\t9:  \"TYPE_STRING\",\n\t\t10: \"TYPE_GROUP\",\n\t\t11: \"TYPE_MESSAGE\",\n\t\t12: \"TYPE_BYTES\",\n\t\t13: \"TYPE_UINT32\",\n\t\t14: \"TYPE_ENUM\",\n\t\t15: \"TYPE_SFIXED32\",\n\t\t16: \"TYPE_SFIXED64\",\n\t\t17: \"TYPE_SINT32\",\n\t\t18: \"TYPE_SINT64\",\n\t}\n\tFieldDescriptorProto_Type_value = map[string]int32{\n\t\t\"TYPE_DOUBLE\":   1,\n\t\t\"TYPE_FLOAT\":    2,\n\t\t\"TYPE_INT64\":    3,\n\t\t\"TYPE_UINT64\":   4,\n\t\t\"TYPE_INT32\":    5,\n\t\t\"TYPE_FIXED64\":  6,\n\t\t\"TYPE_FIXED32\":  7,\n\t\t\"TYPE_BOOL\":     8,\n\t\t\"TYPE_STRING\":   9,\n\t\t\"TYPE_GROUP\":    10,\n\t\t\"TYPE_MESSAGE\":  11,\n\t\t\"TYPE_BYTES\":    12,\n\t\t\"TYPE_UINT32\":   13,\n\t\t\"TYPE_ENUM\":     14,\n\t\t\"TYPE_SFIXED32\": 15,\n\t\t\"TYPE_SFIXED64\": 16,\n\t\t\"TYPE_SINT32\":   17,\n\t\t\"TYPE_SINT64\":   18,\n\t}\n)\n\nfunc (x FieldDescriptorProto_Type) Enum() *FieldDescriptorProto_Type {\n\tp := new(FieldDescriptorProto_Type)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldDescriptorProto_Type) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldDescriptorProto_Type) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[3].Descriptor()\n}\n\nfunc (FieldDescriptorProto_Type) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[3]\n}\n\nfunc (x FieldDescriptorProto_Type) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldDescriptorProto_Type) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldDescriptorProto_Type(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldDescriptorProto_Type.Descriptor instead.\nfunc (FieldDescriptorProto_Type) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4, 0}\n}\n\ntype FieldDescriptorProto_Label int32\n\nconst (\n\t// 0 is reserved for errors\n\tFieldDescriptorProto_LABEL_OPTIONAL FieldDescriptorProto_Label = 1\n\tFieldDescriptorProto_LABEL_REPEATED FieldDescriptorProto_Label = 3\n\t// The required label is only allowed in google.protobuf.  In proto3 and Editions\n\t// it's explicitly prohibited.  In Editions, the `field_presence` feature\n\t// can be used to get this behavior.\n\tFieldDescriptorProto_LABEL_REQUIRED FieldDescriptorProto_Label = 2\n)\n\n// Enum value maps for FieldDescriptorProto_Label.\nvar (\n\tFieldDescriptorProto_Label_name = map[int32]string{\n\t\t1: \"LABEL_OPTIONAL\",\n\t\t3: \"LABEL_REPEATED\",\n\t\t2: \"LABEL_REQUIRED\",\n\t}\n\tFieldDescriptorProto_Label_value = map[string]int32{\n\t\t\"LABEL_OPTIONAL\": 1,\n\t\t\"LABEL_REPEATED\": 3,\n\t\t\"LABEL_REQUIRED\": 2,\n\t}\n)\n\nfunc (x FieldDescriptorProto_Label) Enum() *FieldDescriptorProto_Label {\n\tp := new(FieldDescriptorProto_Label)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldDescriptorProto_Label) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldDescriptorProto_Label) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[4].Descriptor()\n}\n\nfunc (FieldDescriptorProto_Label) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[4]\n}\n\nfunc (x FieldDescriptorProto_Label) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldDescriptorProto_Label) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldDescriptorProto_Label(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldDescriptorProto_Label.Descriptor instead.\nfunc (FieldDescriptorProto_Label) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4, 1}\n}\n\n// Generated classes can be optimized for speed or code size.\ntype FileOptions_OptimizeMode int32\n\nconst (\n\tFileOptions_SPEED FileOptions_OptimizeMode = 1 // Generate complete code for parsing, serialization,\n\t// etc.\n\tFileOptions_CODE_SIZE    FileOptions_OptimizeMode = 2 // Use ReflectionOps to implement these methods.\n\tFileOptions_LITE_RUNTIME FileOptions_OptimizeMode = 3 // Generate code using MessageLite and the lite runtime.\n)\n\n// Enum value maps for FileOptions_OptimizeMode.\nvar (\n\tFileOptions_OptimizeMode_name = map[int32]string{\n\t\t1: \"SPEED\",\n\t\t2: \"CODE_SIZE\",\n\t\t3: \"LITE_RUNTIME\",\n\t}\n\tFileOptions_OptimizeMode_value = map[string]int32{\n\t\t\"SPEED\":        1,\n\t\t\"CODE_SIZE\":    2,\n\t\t\"LITE_RUNTIME\": 3,\n\t}\n)\n\nfunc (x FileOptions_OptimizeMode) Enum() *FileOptions_OptimizeMode {\n\tp := new(FileOptions_OptimizeMode)\n\t*p = x\n\treturn p\n}\n\nfunc (x FileOptions_OptimizeMode) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FileOptions_OptimizeMode) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[5].Descriptor()\n}\n\nfunc (FileOptions_OptimizeMode) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[5]\n}\n\nfunc (x FileOptions_OptimizeMode) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FileOptions_OptimizeMode) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FileOptions_OptimizeMode(num)\n\treturn nil\n}\n\n// Deprecated: Use FileOptions_OptimizeMode.Descriptor instead.\nfunc (FileOptions_OptimizeMode) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{10, 0}\n}\n\ntype FieldOptions_CType int32\n\nconst (\n\t// Default mode.\n\tFieldOptions_STRING FieldOptions_CType = 0\n\t// The option [ctype=CORD] may be applied to a non-repeated field of type\n\t// \"bytes\". It indicates that in C++, the data should be stored in a Cord\n\t// instead of a string.  For very large strings, this may reduce memory\n\t// fragmentation. It may also allow better performance when parsing from a\n\t// Cord, or when parsing with aliasing enabled, as the parsed Cord may then\n\t// alias the original buffer.\n\tFieldOptions_CORD         FieldOptions_CType = 1\n\tFieldOptions_STRING_PIECE FieldOptions_CType = 2\n)\n\n// Enum value maps for FieldOptions_CType.\nvar (\n\tFieldOptions_CType_name = map[int32]string{\n\t\t0: \"STRING\",\n\t\t1: \"CORD\",\n\t\t2: \"STRING_PIECE\",\n\t}\n\tFieldOptions_CType_value = map[string]int32{\n\t\t\"STRING\":       0,\n\t\t\"CORD\":         1,\n\t\t\"STRING_PIECE\": 2,\n\t}\n)\n\nfunc (x FieldOptions_CType) Enum() *FieldOptions_CType {\n\tp := new(FieldOptions_CType)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldOptions_CType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldOptions_CType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[6].Descriptor()\n}\n\nfunc (FieldOptions_CType) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[6]\n}\n\nfunc (x FieldOptions_CType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldOptions_CType) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldOptions_CType(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldOptions_CType.Descriptor instead.\nfunc (FieldOptions_CType) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 0}\n}\n\ntype FieldOptions_JSType int32\n\nconst (\n\t// Use the default type.\n\tFieldOptions_JS_NORMAL FieldOptions_JSType = 0\n\t// Use JavaScript strings.\n\tFieldOptions_JS_STRING FieldOptions_JSType = 1\n\t// Use JavaScript numbers.\n\tFieldOptions_JS_NUMBER FieldOptions_JSType = 2\n)\n\n// Enum value maps for FieldOptions_JSType.\nvar (\n\tFieldOptions_JSType_name = map[int32]string{\n\t\t0: \"JS_NORMAL\",\n\t\t1: \"JS_STRING\",\n\t\t2: \"JS_NUMBER\",\n\t}\n\tFieldOptions_JSType_value = map[string]int32{\n\t\t\"JS_NORMAL\": 0,\n\t\t\"JS_STRING\": 1,\n\t\t\"JS_NUMBER\": 2,\n\t}\n)\n\nfunc (x FieldOptions_JSType) Enum() *FieldOptions_JSType {\n\tp := new(FieldOptions_JSType)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldOptions_JSType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldOptions_JSType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[7].Descriptor()\n}\n\nfunc (FieldOptions_JSType) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[7]\n}\n\nfunc (x FieldOptions_JSType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldOptions_JSType) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldOptions_JSType(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldOptions_JSType.Descriptor instead.\nfunc (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 1}\n}\n\n// If set to RETENTION_SOURCE, the option will be omitted from the binary.\ntype FieldOptions_OptionRetention int32\n\nconst (\n\tFieldOptions_RETENTION_UNKNOWN FieldOptions_OptionRetention = 0\n\tFieldOptions_RETENTION_RUNTIME FieldOptions_OptionRetention = 1\n\tFieldOptions_RETENTION_SOURCE  FieldOptions_OptionRetention = 2\n)\n\n// Enum value maps for FieldOptions_OptionRetention.\nvar (\n\tFieldOptions_OptionRetention_name = map[int32]string{\n\t\t0: \"RETENTION_UNKNOWN\",\n\t\t1: \"RETENTION_RUNTIME\",\n\t\t2: \"RETENTION_SOURCE\",\n\t}\n\tFieldOptions_OptionRetention_value = map[string]int32{\n\t\t\"RETENTION_UNKNOWN\": 0,\n\t\t\"RETENTION_RUNTIME\": 1,\n\t\t\"RETENTION_SOURCE\":  2,\n\t}\n)\n\nfunc (x FieldOptions_OptionRetention) Enum() *FieldOptions_OptionRetention {\n\tp := new(FieldOptions_OptionRetention)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldOptions_OptionRetention) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldOptions_OptionRetention) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[8].Descriptor()\n}\n\nfunc (FieldOptions_OptionRetention) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[8]\n}\n\nfunc (x FieldOptions_OptionRetention) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldOptions_OptionRetention) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldOptions_OptionRetention(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldOptions_OptionRetention.Descriptor instead.\nfunc (FieldOptions_OptionRetention) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 2}\n}\n\n// This indicates the types of entities that the field may apply to when used\n// as an option. If it is unset, then the field may be freely used as an\n// option on any kind of entity.\ntype FieldOptions_OptionTargetType int32\n\nconst (\n\tFieldOptions_TARGET_TYPE_UNKNOWN         FieldOptions_OptionTargetType = 0\n\tFieldOptions_TARGET_TYPE_FILE            FieldOptions_OptionTargetType = 1\n\tFieldOptions_TARGET_TYPE_EXTENSION_RANGE FieldOptions_OptionTargetType = 2\n\tFieldOptions_TARGET_TYPE_MESSAGE         FieldOptions_OptionTargetType = 3\n\tFieldOptions_TARGET_TYPE_FIELD           FieldOptions_OptionTargetType = 4\n\tFieldOptions_TARGET_TYPE_ONEOF           FieldOptions_OptionTargetType = 5\n\tFieldOptions_TARGET_TYPE_ENUM            FieldOptions_OptionTargetType = 6\n\tFieldOptions_TARGET_TYPE_ENUM_ENTRY      FieldOptions_OptionTargetType = 7\n\tFieldOptions_TARGET_TYPE_SERVICE         FieldOptions_OptionTargetType = 8\n\tFieldOptions_TARGET_TYPE_METHOD          FieldOptions_OptionTargetType = 9\n)\n\n// Enum value maps for FieldOptions_OptionTargetType.\nvar (\n\tFieldOptions_OptionTargetType_name = map[int32]string{\n\t\t0: \"TARGET_TYPE_UNKNOWN\",\n\t\t1: \"TARGET_TYPE_FILE\",\n\t\t2: \"TARGET_TYPE_EXTENSION_RANGE\",\n\t\t3: \"TARGET_TYPE_MESSAGE\",\n\t\t4: \"TARGET_TYPE_FIELD\",\n\t\t5: \"TARGET_TYPE_ONEOF\",\n\t\t6: \"TARGET_TYPE_ENUM\",\n\t\t7: \"TARGET_TYPE_ENUM_ENTRY\",\n\t\t8: \"TARGET_TYPE_SERVICE\",\n\t\t9: \"TARGET_TYPE_METHOD\",\n\t}\n\tFieldOptions_OptionTargetType_value = map[string]int32{\n\t\t\"TARGET_TYPE_UNKNOWN\":         0,\n\t\t\"TARGET_TYPE_FILE\":            1,\n\t\t\"TARGET_TYPE_EXTENSION_RANGE\": 2,\n\t\t\"TARGET_TYPE_MESSAGE\":         3,\n\t\t\"TARGET_TYPE_FIELD\":           4,\n\t\t\"TARGET_TYPE_ONEOF\":           5,\n\t\t\"TARGET_TYPE_ENUM\":            6,\n\t\t\"TARGET_TYPE_ENUM_ENTRY\":      7,\n\t\t\"TARGET_TYPE_SERVICE\":         8,\n\t\t\"TARGET_TYPE_METHOD\":          9,\n\t}\n)\n\nfunc (x FieldOptions_OptionTargetType) Enum() *FieldOptions_OptionTargetType {\n\tp := new(FieldOptions_OptionTargetType)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldOptions_OptionTargetType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldOptions_OptionTargetType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[9].Descriptor()\n}\n\nfunc (FieldOptions_OptionTargetType) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[9]\n}\n\nfunc (x FieldOptions_OptionTargetType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldOptions_OptionTargetType) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldOptions_OptionTargetType(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldOptions_OptionTargetType.Descriptor instead.\nfunc (FieldOptions_OptionTargetType) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 3}\n}\n\n// Is this method side-effect-free (or safe in HTTP parlance), or idempotent,\n// or neither? HTTP based RPC implementation may choose GET verb for safe\n// methods, and PUT verb for idempotent methods instead of the default POST.\ntype MethodOptions_IdempotencyLevel int32\n\nconst (\n\tMethodOptions_IDEMPOTENCY_UNKNOWN MethodOptions_IdempotencyLevel = 0\n\tMethodOptions_NO_SIDE_EFFECTS     MethodOptions_IdempotencyLevel = 1 // implies idempotent\n\tMethodOptions_IDEMPOTENT          MethodOptions_IdempotencyLevel = 2 // idempotent, but may have side effects\n)\n\n// Enum value maps for MethodOptions_IdempotencyLevel.\nvar (\n\tMethodOptions_IdempotencyLevel_name = map[int32]string{\n\t\t0: \"IDEMPOTENCY_UNKNOWN\",\n\t\t1: \"NO_SIDE_EFFECTS\",\n\t\t2: \"IDEMPOTENT\",\n\t}\n\tMethodOptions_IdempotencyLevel_value = map[string]int32{\n\t\t\"IDEMPOTENCY_UNKNOWN\": 0,\n\t\t\"NO_SIDE_EFFECTS\":     1,\n\t\t\"IDEMPOTENT\":          2,\n\t}\n)\n\nfunc (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel {\n\tp := new(MethodOptions_IdempotencyLevel)\n\t*p = x\n\treturn p\n}\n\nfunc (x MethodOptions_IdempotencyLevel) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (MethodOptions_IdempotencyLevel) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[10].Descriptor()\n}\n\nfunc (MethodOptions_IdempotencyLevel) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[10]\n}\n\nfunc (x MethodOptions_IdempotencyLevel) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = MethodOptions_IdempotencyLevel(num)\n\treturn nil\n}\n\n// Deprecated: Use MethodOptions_IdempotencyLevel.Descriptor instead.\nfunc (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17, 0}\n}\n\ntype FeatureSet_FieldPresence int32\n\nconst (\n\tFeatureSet_FIELD_PRESENCE_UNKNOWN FeatureSet_FieldPresence = 0\n\tFeatureSet_EXPLICIT               FeatureSet_FieldPresence = 1\n\tFeatureSet_IMPLICIT               FeatureSet_FieldPresence = 2\n\tFeatureSet_LEGACY_REQUIRED        FeatureSet_FieldPresence = 3\n)\n\n// Enum value maps for FeatureSet_FieldPresence.\nvar (\n\tFeatureSet_FieldPresence_name = map[int32]string{\n\t\t0: \"FIELD_PRESENCE_UNKNOWN\",\n\t\t1: \"EXPLICIT\",\n\t\t2: \"IMPLICIT\",\n\t\t3: \"LEGACY_REQUIRED\",\n\t}\n\tFeatureSet_FieldPresence_value = map[string]int32{\n\t\t\"FIELD_PRESENCE_UNKNOWN\": 0,\n\t\t\"EXPLICIT\":               1,\n\t\t\"IMPLICIT\":               2,\n\t\t\"LEGACY_REQUIRED\":        3,\n\t}\n)\n\nfunc (x FeatureSet_FieldPresence) Enum() *FeatureSet_FieldPresence {\n\tp := new(FeatureSet_FieldPresence)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_FieldPresence) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_FieldPresence) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[11].Descriptor()\n}\n\nfunc (FeatureSet_FieldPresence) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[11]\n}\n\nfunc (x FeatureSet_FieldPresence) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_FieldPresence) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_FieldPresence(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_FieldPresence.Descriptor instead.\nfunc (FeatureSet_FieldPresence) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 0}\n}\n\ntype FeatureSet_EnumType int32\n\nconst (\n\tFeatureSet_ENUM_TYPE_UNKNOWN FeatureSet_EnumType = 0\n\tFeatureSet_OPEN              FeatureSet_EnumType = 1\n\tFeatureSet_CLOSED            FeatureSet_EnumType = 2\n)\n\n// Enum value maps for FeatureSet_EnumType.\nvar (\n\tFeatureSet_EnumType_name = map[int32]string{\n\t\t0: \"ENUM_TYPE_UNKNOWN\",\n\t\t1: \"OPEN\",\n\t\t2: \"CLOSED\",\n\t}\n\tFeatureSet_EnumType_value = map[string]int32{\n\t\t\"ENUM_TYPE_UNKNOWN\": 0,\n\t\t\"OPEN\":              1,\n\t\t\"CLOSED\":            2,\n\t}\n)\n\nfunc (x FeatureSet_EnumType) Enum() *FeatureSet_EnumType {\n\tp := new(FeatureSet_EnumType)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_EnumType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_EnumType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[12].Descriptor()\n}\n\nfunc (FeatureSet_EnumType) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[12]\n}\n\nfunc (x FeatureSet_EnumType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_EnumType) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_EnumType(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_EnumType.Descriptor instead.\nfunc (FeatureSet_EnumType) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 1}\n}\n\ntype FeatureSet_RepeatedFieldEncoding int32\n\nconst (\n\tFeatureSet_REPEATED_FIELD_ENCODING_UNKNOWN FeatureSet_RepeatedFieldEncoding = 0\n\tFeatureSet_PACKED                          FeatureSet_RepeatedFieldEncoding = 1\n\tFeatureSet_EXPANDED                        FeatureSet_RepeatedFieldEncoding = 2\n)\n\n// Enum value maps for FeatureSet_RepeatedFieldEncoding.\nvar (\n\tFeatureSet_RepeatedFieldEncoding_name = map[int32]string{\n\t\t0: \"REPEATED_FIELD_ENCODING_UNKNOWN\",\n\t\t1: \"PACKED\",\n\t\t2: \"EXPANDED\",\n\t}\n\tFeatureSet_RepeatedFieldEncoding_value = map[string]int32{\n\t\t\"REPEATED_FIELD_ENCODING_UNKNOWN\": 0,\n\t\t\"PACKED\":                          1,\n\t\t\"EXPANDED\":                        2,\n\t}\n)\n\nfunc (x FeatureSet_RepeatedFieldEncoding) Enum() *FeatureSet_RepeatedFieldEncoding {\n\tp := new(FeatureSet_RepeatedFieldEncoding)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_RepeatedFieldEncoding) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_RepeatedFieldEncoding) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[13].Descriptor()\n}\n\nfunc (FeatureSet_RepeatedFieldEncoding) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[13]\n}\n\nfunc (x FeatureSet_RepeatedFieldEncoding) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_RepeatedFieldEncoding) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_RepeatedFieldEncoding(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_RepeatedFieldEncoding.Descriptor instead.\nfunc (FeatureSet_RepeatedFieldEncoding) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 2}\n}\n\ntype FeatureSet_Utf8Validation int32\n\nconst (\n\tFeatureSet_UTF8_VALIDATION_UNKNOWN FeatureSet_Utf8Validation = 0\n\tFeatureSet_VERIFY                  FeatureSet_Utf8Validation = 2\n\tFeatureSet_NONE                    FeatureSet_Utf8Validation = 3\n)\n\n// Enum value maps for FeatureSet_Utf8Validation.\nvar (\n\tFeatureSet_Utf8Validation_name = map[int32]string{\n\t\t0: \"UTF8_VALIDATION_UNKNOWN\",\n\t\t2: \"VERIFY\",\n\t\t3: \"NONE\",\n\t}\n\tFeatureSet_Utf8Validation_value = map[string]int32{\n\t\t\"UTF8_VALIDATION_UNKNOWN\": 0,\n\t\t\"VERIFY\":                  2,\n\t\t\"NONE\":                    3,\n\t}\n)\n\nfunc (x FeatureSet_Utf8Validation) Enum() *FeatureSet_Utf8Validation {\n\tp := new(FeatureSet_Utf8Validation)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_Utf8Validation) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_Utf8Validation) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[14].Descriptor()\n}\n\nfunc (FeatureSet_Utf8Validation) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[14]\n}\n\nfunc (x FeatureSet_Utf8Validation) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_Utf8Validation) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_Utf8Validation(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_Utf8Validation.Descriptor instead.\nfunc (FeatureSet_Utf8Validation) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 3}\n}\n\ntype FeatureSet_MessageEncoding int32\n\nconst (\n\tFeatureSet_MESSAGE_ENCODING_UNKNOWN FeatureSet_MessageEncoding = 0\n\tFeatureSet_LENGTH_PREFIXED          FeatureSet_MessageEncoding = 1\n\tFeatureSet_DELIMITED                FeatureSet_MessageEncoding = 2\n)\n\n// Enum value maps for FeatureSet_MessageEncoding.\nvar (\n\tFeatureSet_MessageEncoding_name = map[int32]string{\n\t\t0: \"MESSAGE_ENCODING_UNKNOWN\",\n\t\t1: \"LENGTH_PREFIXED\",\n\t\t2: \"DELIMITED\",\n\t}\n\tFeatureSet_MessageEncoding_value = map[string]int32{\n\t\t\"MESSAGE_ENCODING_UNKNOWN\": 0,\n\t\t\"LENGTH_PREFIXED\":          1,\n\t\t\"DELIMITED\":                2,\n\t}\n)\n\nfunc (x FeatureSet_MessageEncoding) Enum() *FeatureSet_MessageEncoding {\n\tp := new(FeatureSet_MessageEncoding)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_MessageEncoding) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_MessageEncoding) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[15].Descriptor()\n}\n\nfunc (FeatureSet_MessageEncoding) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[15]\n}\n\nfunc (x FeatureSet_MessageEncoding) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_MessageEncoding) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_MessageEncoding(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_MessageEncoding.Descriptor instead.\nfunc (FeatureSet_MessageEncoding) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 4}\n}\n\ntype FeatureSet_JsonFormat int32\n\nconst (\n\tFeatureSet_JSON_FORMAT_UNKNOWN FeatureSet_JsonFormat = 0\n\tFeatureSet_ALLOW               FeatureSet_JsonFormat = 1\n\tFeatureSet_LEGACY_BEST_EFFORT  FeatureSet_JsonFormat = 2\n)\n\n// Enum value maps for FeatureSet_JsonFormat.\nvar (\n\tFeatureSet_JsonFormat_name = map[int32]string{\n\t\t0: \"JSON_FORMAT_UNKNOWN\",\n\t\t1: \"ALLOW\",\n\t\t2: \"LEGACY_BEST_EFFORT\",\n\t}\n\tFeatureSet_JsonFormat_value = map[string]int32{\n\t\t\"JSON_FORMAT_UNKNOWN\": 0,\n\t\t\"ALLOW\":               1,\n\t\t\"LEGACY_BEST_EFFORT\":  2,\n\t}\n)\n\nfunc (x FeatureSet_JsonFormat) Enum() *FeatureSet_JsonFormat {\n\tp := new(FeatureSet_JsonFormat)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_JsonFormat) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_JsonFormat) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[16].Descriptor()\n}\n\nfunc (FeatureSet_JsonFormat) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[16]\n}\n\nfunc (x FeatureSet_JsonFormat) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_JsonFormat) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_JsonFormat(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_JsonFormat.Descriptor instead.\nfunc (FeatureSet_JsonFormat) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 5}\n}\n\ntype FeatureSet_EnforceNamingStyle int32\n\nconst (\n\tFeatureSet_ENFORCE_NAMING_STYLE_UNKNOWN FeatureSet_EnforceNamingStyle = 0\n\tFeatureSet_STYLE2024                    FeatureSet_EnforceNamingStyle = 1\n\tFeatureSet_STYLE_LEGACY                 FeatureSet_EnforceNamingStyle = 2\n)\n\n// Enum value maps for FeatureSet_EnforceNamingStyle.\nvar (\n\tFeatureSet_EnforceNamingStyle_name = map[int32]string{\n\t\t0: \"ENFORCE_NAMING_STYLE_UNKNOWN\",\n\t\t1: \"STYLE2024\",\n\t\t2: \"STYLE_LEGACY\",\n\t}\n\tFeatureSet_EnforceNamingStyle_value = map[string]int32{\n\t\t\"ENFORCE_NAMING_STYLE_UNKNOWN\": 0,\n\t\t\"STYLE2024\":                    1,\n\t\t\"STYLE_LEGACY\":                 2,\n\t}\n)\n\nfunc (x FeatureSet_EnforceNamingStyle) Enum() *FeatureSet_EnforceNamingStyle {\n\tp := new(FeatureSet_EnforceNamingStyle)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_EnforceNamingStyle) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_EnforceNamingStyle) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[17].Descriptor()\n}\n\nfunc (FeatureSet_EnforceNamingStyle) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[17]\n}\n\nfunc (x FeatureSet_EnforceNamingStyle) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_EnforceNamingStyle) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_EnforceNamingStyle(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_EnforceNamingStyle.Descriptor instead.\nfunc (FeatureSet_EnforceNamingStyle) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 6}\n}\n\ntype FeatureSet_VisibilityFeature_DefaultSymbolVisibility int32\n\nconst (\n\tFeatureSet_VisibilityFeature_DEFAULT_SYMBOL_VISIBILITY_UNKNOWN FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 0\n\t// Default pre-EDITION_2024, all UNSET visibility are export.\n\tFeatureSet_VisibilityFeature_EXPORT_ALL FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 1\n\t// All top-level symbols default to export, nested default to local.\n\tFeatureSet_VisibilityFeature_EXPORT_TOP_LEVEL FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 2\n\t// All symbols default to local.\n\tFeatureSet_VisibilityFeature_LOCAL_ALL FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 3\n\t// All symbols local by default. Nested types cannot be exported.\n\t// With special case caveat for message { enum {} reserved 1 to max; }\n\t// This is the recommended setting for new protos.\n\tFeatureSet_VisibilityFeature_STRICT FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 4\n)\n\n// Enum value maps for FeatureSet_VisibilityFeature_DefaultSymbolVisibility.\nvar (\n\tFeatureSet_VisibilityFeature_DefaultSymbolVisibility_name = map[int32]string{\n\t\t0: \"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN\",\n\t\t1: \"EXPORT_ALL\",\n\t\t2: \"EXPORT_TOP_LEVEL\",\n\t\t3: \"LOCAL_ALL\",\n\t\t4: \"STRICT\",\n\t}\n\tFeatureSet_VisibilityFeature_DefaultSymbolVisibility_value = map[string]int32{\n\t\t\"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN\": 0,\n\t\t\"EXPORT_ALL\":                        1,\n\t\t\"EXPORT_TOP_LEVEL\":                  2,\n\t\t\"LOCAL_ALL\":                         3,\n\t\t\"STRICT\":                            4,\n\t}\n)\n\nfunc (x FeatureSet_VisibilityFeature_DefaultSymbolVisibility) Enum() *FeatureSet_VisibilityFeature_DefaultSymbolVisibility {\n\tp := new(FeatureSet_VisibilityFeature_DefaultSymbolVisibility)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_VisibilityFeature_DefaultSymbolVisibility) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_VisibilityFeature_DefaultSymbolVisibility) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[18].Descriptor()\n}\n\nfunc (FeatureSet_VisibilityFeature_DefaultSymbolVisibility) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[18]\n}\n\nfunc (x FeatureSet_VisibilityFeature_DefaultSymbolVisibility) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_VisibilityFeature_DefaultSymbolVisibility) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_VisibilityFeature_DefaultSymbolVisibility(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_VisibilityFeature_DefaultSymbolVisibility.Descriptor instead.\nfunc (FeatureSet_VisibilityFeature_DefaultSymbolVisibility) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 0, 0}\n}\n\n// Represents the identified object's effect on the element in the original\n// .proto file.\ntype GeneratedCodeInfo_Annotation_Semantic int32\n\nconst (\n\t// There is no effect or the effect is indescribable.\n\tGeneratedCodeInfo_Annotation_NONE GeneratedCodeInfo_Annotation_Semantic = 0\n\t// The element is set or otherwise mutated.\n\tGeneratedCodeInfo_Annotation_SET GeneratedCodeInfo_Annotation_Semantic = 1\n\t// An alias to the element is returned.\n\tGeneratedCodeInfo_Annotation_ALIAS GeneratedCodeInfo_Annotation_Semantic = 2\n)\n\n// Enum value maps for GeneratedCodeInfo_Annotation_Semantic.\nvar (\n\tGeneratedCodeInfo_Annotation_Semantic_name = map[int32]string{\n\t\t0: \"NONE\",\n\t\t1: \"SET\",\n\t\t2: \"ALIAS\",\n\t}\n\tGeneratedCodeInfo_Annotation_Semantic_value = map[string]int32{\n\t\t\"NONE\":  0,\n\t\t\"SET\":   1,\n\t\t\"ALIAS\": 2,\n\t}\n)\n\nfunc (x GeneratedCodeInfo_Annotation_Semantic) Enum() *GeneratedCodeInfo_Annotation_Semantic {\n\tp := new(GeneratedCodeInfo_Annotation_Semantic)\n\t*p = x\n\treturn p\n}\n\nfunc (x GeneratedCodeInfo_Annotation_Semantic) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (GeneratedCodeInfo_Annotation_Semantic) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[19].Descriptor()\n}\n\nfunc (GeneratedCodeInfo_Annotation_Semantic) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[19]\n}\n\nfunc (x GeneratedCodeInfo_Annotation_Semantic) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *GeneratedCodeInfo_Annotation_Semantic) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = GeneratedCodeInfo_Annotation_Semantic(num)\n\treturn nil\n}\n\n// Deprecated: Use GeneratedCodeInfo_Annotation_Semantic.Descriptor instead.\nfunc (GeneratedCodeInfo_Annotation_Semantic) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{22, 0, 0}\n}\n\n// The protocol compiler can output a FileDescriptorSet containing the .proto\n// files it parses.\ntype FileDescriptorSet struct {\n\tstate           protoimpl.MessageState `protogen:\"open.v1\"`\n\tFile            []*FileDescriptorProto `protobuf:\"bytes,1,rep,name=file\" json:\"file,omitempty\"`\n\textensionFields protoimpl.ExtensionFields\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *FileDescriptorSet) Reset() {\n\t*x = FileDescriptorSet{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FileDescriptorSet) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FileDescriptorSet) ProtoMessage() {}\n\nfunc (x *FileDescriptorSet) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FileDescriptorSet.ProtoReflect.Descriptor instead.\nfunc (*FileDescriptorSet) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *FileDescriptorSet) GetFile() []*FileDescriptorProto {\n\tif x != nil {\n\t\treturn x.File\n\t}\n\treturn nil\n}\n\n// Describes a complete .proto file.\ntype FileDescriptorProto struct {\n\tstate   protoimpl.MessageState `protogen:\"open.v1\"`\n\tName    *string                `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`       // file name, relative to root of source tree\n\tPackage *string                `protobuf:\"bytes,2,opt,name=package\" json:\"package,omitempty\"` // e.g. \"foo\", \"foo.bar\", etc.\n\t// Names of files imported by this file.\n\tDependency []string `protobuf:\"bytes,3,rep,name=dependency\" json:\"dependency,omitempty\"`\n\t// Indexes of the public imported files in the dependency list above.\n\tPublicDependency []int32 `protobuf:\"varint,10,rep,name=public_dependency,json=publicDependency\" json:\"public_dependency,omitempty\"`\n\t// Indexes of the weak imported files in the dependency list.\n\t// For Google-internal migration only. Do not use.\n\tWeakDependency []int32 `protobuf:\"varint,11,rep,name=weak_dependency,json=weakDependency\" json:\"weak_dependency,omitempty\"`\n\t// Names of files imported by this file purely for the purpose of providing\n\t// option extensions. These are excluded from the dependency list above.\n\tOptionDependency []string `protobuf:\"bytes,15,rep,name=option_dependency,json=optionDependency\" json:\"option_dependency,omitempty\"`\n\t// All top-level definitions in this file.\n\tMessageType []*DescriptorProto        `protobuf:\"bytes,4,rep,name=message_type,json=messageType\" json:\"message_type,omitempty\"`\n\tEnumType    []*EnumDescriptorProto    `protobuf:\"bytes,5,rep,name=enum_type,json=enumType\" json:\"enum_type,omitempty\"`\n\tService     []*ServiceDescriptorProto `protobuf:\"bytes,6,rep,name=service\" json:\"service,omitempty\"`\n\tExtension   []*FieldDescriptorProto   `protobuf:\"bytes,7,rep,name=extension\" json:\"extension,omitempty\"`\n\tOptions     *FileOptions              `protobuf:\"bytes,8,opt,name=options\" json:\"options,omitempty\"`\n\t// This field contains optional information about the original source code.\n\t// You may safely remove this entire field without harming runtime\n\t// functionality of the descriptors -- the information is needed only by\n\t// development tools.\n\tSourceCodeInfo *SourceCodeInfo `protobuf:\"bytes,9,opt,name=source_code_info,json=sourceCodeInfo\" json:\"source_code_info,omitempty\"`\n\t// The syntax of the proto file.\n\t// The supported values are \"proto2\", \"proto3\", and \"editions\".\n\t//\n\t// If `edition` is present, this value must be \"editions\".\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tSyntax *string `protobuf:\"bytes,12,opt,name=syntax\" json:\"syntax,omitempty\"`\n\t// The edition of the proto file.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tEdition       *Edition `protobuf:\"varint,14,opt,name=edition,enum=google.protobuf.Edition\" json:\"edition,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *FileDescriptorProto) Reset() {\n\t*x = FileDescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FileDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FileDescriptorProto) ProtoMessage() {}\n\nfunc (x *FileDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FileDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*FileDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *FileDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileDescriptorProto) GetPackage() string {\n\tif x != nil && x.Package != nil {\n\t\treturn *x.Package\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileDescriptorProto) GetDependency() []string {\n\tif x != nil {\n\t\treturn x.Dependency\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetPublicDependency() []int32 {\n\tif x != nil {\n\t\treturn x.PublicDependency\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetWeakDependency() []int32 {\n\tif x != nil {\n\t\treturn x.WeakDependency\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetOptionDependency() []string {\n\tif x != nil {\n\t\treturn x.OptionDependency\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetMessageType() []*DescriptorProto {\n\tif x != nil {\n\t\treturn x.MessageType\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetEnumType() []*EnumDescriptorProto {\n\tif x != nil {\n\t\treturn x.EnumType\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetService() []*ServiceDescriptorProto {\n\tif x != nil {\n\t\treturn x.Service\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetExtension() []*FieldDescriptorProto {\n\tif x != nil {\n\t\treturn x.Extension\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetOptions() *FileOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetSourceCodeInfo() *SourceCodeInfo {\n\tif x != nil {\n\t\treturn x.SourceCodeInfo\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetSyntax() string {\n\tif x != nil && x.Syntax != nil {\n\t\treturn *x.Syntax\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileDescriptorProto) GetEdition() Edition {\n\tif x != nil && x.Edition != nil {\n\t\treturn *x.Edition\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\n// Describes a message type.\ntype DescriptorProto struct {\n\tstate          protoimpl.MessageState            `protogen:\"open.v1\"`\n\tName           *string                           `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tField          []*FieldDescriptorProto           `protobuf:\"bytes,2,rep,name=field\" json:\"field,omitempty\"`\n\tExtension      []*FieldDescriptorProto           `protobuf:\"bytes,6,rep,name=extension\" json:\"extension,omitempty\"`\n\tNestedType     []*DescriptorProto                `protobuf:\"bytes,3,rep,name=nested_type,json=nestedType\" json:\"nested_type,omitempty\"`\n\tEnumType       []*EnumDescriptorProto            `protobuf:\"bytes,4,rep,name=enum_type,json=enumType\" json:\"enum_type,omitempty\"`\n\tExtensionRange []*DescriptorProto_ExtensionRange `protobuf:\"bytes,5,rep,name=extension_range,json=extensionRange\" json:\"extension_range,omitempty\"`\n\tOneofDecl      []*OneofDescriptorProto           `protobuf:\"bytes,8,rep,name=oneof_decl,json=oneofDecl\" json:\"oneof_decl,omitempty\"`\n\tOptions        *MessageOptions                   `protobuf:\"bytes,7,opt,name=options\" json:\"options,omitempty\"`\n\tReservedRange  []*DescriptorProto_ReservedRange  `protobuf:\"bytes,9,rep,name=reserved_range,json=reservedRange\" json:\"reserved_range,omitempty\"`\n\t// Reserved field names, which may not be used by fields in the same message.\n\t// A given name may only be reserved once.\n\tReservedName []string `protobuf:\"bytes,10,rep,name=reserved_name,json=reservedName\" json:\"reserved_name,omitempty\"`\n\t// Support for `export` and `local` keywords on enums.\n\tVisibility    *SymbolVisibility `protobuf:\"varint,11,opt,name=visibility,enum=google.protobuf.SymbolVisibility\" json:\"visibility,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DescriptorProto) Reset() {\n\t*x = DescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DescriptorProto) ProtoMessage() {}\n\nfunc (x *DescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*DescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *DescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *DescriptorProto) GetField() []*FieldDescriptorProto {\n\tif x != nil {\n\t\treturn x.Field\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetExtension() []*FieldDescriptorProto {\n\tif x != nil {\n\t\treturn x.Extension\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetNestedType() []*DescriptorProto {\n\tif x != nil {\n\t\treturn x.NestedType\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetEnumType() []*EnumDescriptorProto {\n\tif x != nil {\n\t\treturn x.EnumType\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetExtensionRange() []*DescriptorProto_ExtensionRange {\n\tif x != nil {\n\t\treturn x.ExtensionRange\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetOneofDecl() []*OneofDescriptorProto {\n\tif x != nil {\n\t\treturn x.OneofDecl\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetOptions() *MessageOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetReservedRange() []*DescriptorProto_ReservedRange {\n\tif x != nil {\n\t\treturn x.ReservedRange\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetReservedName() []string {\n\tif x != nil {\n\t\treturn x.ReservedName\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetVisibility() SymbolVisibility {\n\tif x != nil && x.Visibility != nil {\n\t\treturn *x.Visibility\n\t}\n\treturn SymbolVisibility_VISIBILITY_UNSET\n}\n\ntype ExtensionRangeOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\t// For external users: DO NOT USE. We are in the process of open sourcing\n\t// extension declaration and executing internal cleanups before it can be\n\t// used externally.\n\tDeclaration []*ExtensionRangeOptions_Declaration `protobuf:\"bytes,2,rep,name=declaration\" json:\"declaration,omitempty\"`\n\t// Any features defined in the specific edition.\n\tFeatures *FeatureSet `protobuf:\"bytes,50,opt,name=features\" json:\"features,omitempty\"`\n\t// The verification state of the range.\n\t// TODO: flip the default to DECLARATION once all empty ranges\n\t// are marked as UNVERIFIED.\n\tVerification    *ExtensionRangeOptions_VerificationState `protobuf:\"varint,3,opt,name=verification,enum=google.protobuf.ExtensionRangeOptions_VerificationState,def=1\" json:\"verification,omitempty\"`\n\textensionFields protoimpl.ExtensionFields\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\n// Default values for ExtensionRangeOptions fields.\nconst (\n\tDefault_ExtensionRangeOptions_Verification = ExtensionRangeOptions_UNVERIFIED\n)\n\nfunc (x *ExtensionRangeOptions) Reset() {\n\t*x = ExtensionRangeOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ExtensionRangeOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ExtensionRangeOptions) ProtoMessage() {}\n\nfunc (x *ExtensionRangeOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ExtensionRangeOptions.ProtoReflect.Descriptor instead.\nfunc (*ExtensionRangeOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *ExtensionRangeOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\nfunc (x *ExtensionRangeOptions) GetDeclaration() []*ExtensionRangeOptions_Declaration {\n\tif x != nil {\n\t\treturn x.Declaration\n\t}\n\treturn nil\n}\n\nfunc (x *ExtensionRangeOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *ExtensionRangeOptions) GetVerification() ExtensionRangeOptions_VerificationState {\n\tif x != nil && x.Verification != nil {\n\t\treturn *x.Verification\n\t}\n\treturn Default_ExtensionRangeOptions_Verification\n}\n\n// Describes a field within a message.\ntype FieldDescriptorProto struct {\n\tstate  protoimpl.MessageState      `protogen:\"open.v1\"`\n\tName   *string                     `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tNumber *int32                      `protobuf:\"varint,3,opt,name=number\" json:\"number,omitempty\"`\n\tLabel  *FieldDescriptorProto_Label `protobuf:\"varint,4,opt,name=label,enum=google.protobuf.FieldDescriptorProto_Label\" json:\"label,omitempty\"`\n\t// If type_name is set, this need not be set.  If both this and type_name\n\t// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.\n\tType *FieldDescriptorProto_Type `protobuf:\"varint,5,opt,name=type,enum=google.protobuf.FieldDescriptorProto_Type\" json:\"type,omitempty\"`\n\t// For message and enum types, this is the name of the type.  If the name\n\t// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping\n\t// rules are used to find the type (i.e. first the nested types within this\n\t// message are searched, then within the parent, on up to the root\n\t// namespace).\n\tTypeName *string `protobuf:\"bytes,6,opt,name=type_name,json=typeName\" json:\"type_name,omitempty\"`\n\t// For extensions, this is the name of the type being extended.  It is\n\t// resolved in the same manner as type_name.\n\tExtendee *string `protobuf:\"bytes,2,opt,name=extendee\" json:\"extendee,omitempty\"`\n\t// For numeric types, contains the original text representation of the value.\n\t// For booleans, \"true\" or \"false\".\n\t// For strings, contains the default text contents (not escaped in any way).\n\t// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.\n\tDefaultValue *string `protobuf:\"bytes,7,opt,name=default_value,json=defaultValue\" json:\"default_value,omitempty\"`\n\t// If set, gives the index of a oneof in the containing type's oneof_decl\n\t// list.  This field is a member of that oneof.\n\tOneofIndex *int32 `protobuf:\"varint,9,opt,name=oneof_index,json=oneofIndex\" json:\"oneof_index,omitempty\"`\n\t// JSON name of this field. The value is set by protocol compiler. If the\n\t// user has set a \"json_name\" option on this field, that option's value\n\t// will be used. Otherwise, it's deduced from the field's name by converting\n\t// it to camelCase.\n\tJsonName *string       `protobuf:\"bytes,10,opt,name=json_name,json=jsonName\" json:\"json_name,omitempty\"`\n\tOptions  *FieldOptions `protobuf:\"bytes,8,opt,name=options\" json:\"options,omitempty\"`\n\t// If true, this is a proto3 \"optional\". When a proto3 field is optional, it\n\t// tracks presence regardless of field type.\n\t//\n\t// When proto3_optional is true, this field must belong to a oneof to signal\n\t// to old proto3 clients that presence is tracked for this field. This oneof\n\t// is known as a \"synthetic\" oneof, and this field must be its sole member\n\t// (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs\n\t// exist in the descriptor only, and do not generate any API. Synthetic oneofs\n\t// must be ordered after all \"real\" oneofs.\n\t//\n\t// For message fields, proto3_optional doesn't create any semantic change,\n\t// since non-repeated message fields always track presence. However it still\n\t// indicates the semantic detail of whether the user wrote \"optional\" or not.\n\t// This can be useful for round-tripping the .proto file. For consistency we\n\t// give message fields a synthetic oneof also, even though it is not required\n\t// to track presence. This is especially important because the parser can't\n\t// tell if a field is a message or an enum, so it must always create a\n\t// synthetic oneof.\n\t//\n\t// Proto2 optional fields do not set this flag, because they already indicate\n\t// optional with `LABEL_OPTIONAL`.\n\tProto3Optional *bool `protobuf:\"varint,17,opt,name=proto3_optional,json=proto3Optional\" json:\"proto3_optional,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *FieldDescriptorProto) Reset() {\n\t*x = FieldDescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FieldDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldDescriptorProto) ProtoMessage() {}\n\nfunc (x *FieldDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*FieldDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *FieldDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetNumber() int32 {\n\tif x != nil && x.Number != nil {\n\t\treturn *x.Number\n\t}\n\treturn 0\n}\n\nfunc (x *FieldDescriptorProto) GetLabel() FieldDescriptorProto_Label {\n\tif x != nil && x.Label != nil {\n\t\treturn *x.Label\n\t}\n\treturn FieldDescriptorProto_LABEL_OPTIONAL\n}\n\nfunc (x *FieldDescriptorProto) GetType() FieldDescriptorProto_Type {\n\tif x != nil && x.Type != nil {\n\t\treturn *x.Type\n\t}\n\treturn FieldDescriptorProto_TYPE_DOUBLE\n}\n\nfunc (x *FieldDescriptorProto) GetTypeName() string {\n\tif x != nil && x.TypeName != nil {\n\t\treturn *x.TypeName\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetExtendee() string {\n\tif x != nil && x.Extendee != nil {\n\t\treturn *x.Extendee\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetDefaultValue() string {\n\tif x != nil && x.DefaultValue != nil {\n\t\treturn *x.DefaultValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetOneofIndex() int32 {\n\tif x != nil && x.OneofIndex != nil {\n\t\treturn *x.OneofIndex\n\t}\n\treturn 0\n}\n\nfunc (x *FieldDescriptorProto) GetJsonName() string {\n\tif x != nil && x.JsonName != nil {\n\t\treturn *x.JsonName\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetOptions() *FieldOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *FieldDescriptorProto) GetProto3Optional() bool {\n\tif x != nil && x.Proto3Optional != nil {\n\t\treturn *x.Proto3Optional\n\t}\n\treturn false\n}\n\n// Describes a oneof.\ntype OneofDescriptorProto struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tName          *string                `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tOptions       *OneofOptions          `protobuf:\"bytes,2,opt,name=options\" json:\"options,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *OneofDescriptorProto) Reset() {\n\t*x = OneofDescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *OneofDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OneofDescriptorProto) ProtoMessage() {}\n\nfunc (x *OneofDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OneofDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*OneofDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *OneofDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *OneofDescriptorProto) GetOptions() *OneofOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\n// Describes an enum type.\ntype EnumDescriptorProto struct {\n\tstate   protoimpl.MessageState      `protogen:\"open.v1\"`\n\tName    *string                     `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tValue   []*EnumValueDescriptorProto `protobuf:\"bytes,2,rep,name=value\" json:\"value,omitempty\"`\n\tOptions *EnumOptions                `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n\t// Range of reserved numeric values. Reserved numeric values may not be used\n\t// by enum values in the same enum declaration. Reserved ranges may not\n\t// overlap.\n\tReservedRange []*EnumDescriptorProto_EnumReservedRange `protobuf:\"bytes,4,rep,name=reserved_range,json=reservedRange\" json:\"reserved_range,omitempty\"`\n\t// Reserved enum value names, which may not be reused. A given name may only\n\t// be reserved once.\n\tReservedName []string `protobuf:\"bytes,5,rep,name=reserved_name,json=reservedName\" json:\"reserved_name,omitempty\"`\n\t// Support for `export` and `local` keywords on enums.\n\tVisibility    *SymbolVisibility `protobuf:\"varint,6,opt,name=visibility,enum=google.protobuf.SymbolVisibility\" json:\"visibility,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *EnumDescriptorProto) Reset() {\n\t*x = EnumDescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EnumDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumDescriptorProto) ProtoMessage() {}\n\nfunc (x *EnumDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*EnumDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *EnumDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *EnumDescriptorProto) GetValue() []*EnumValueDescriptorProto {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nfunc (x *EnumDescriptorProto) GetOptions() *EnumOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *EnumDescriptorProto) GetReservedRange() []*EnumDescriptorProto_EnumReservedRange {\n\tif x != nil {\n\t\treturn x.ReservedRange\n\t}\n\treturn nil\n}\n\nfunc (x *EnumDescriptorProto) GetReservedName() []string {\n\tif x != nil {\n\t\treturn x.ReservedName\n\t}\n\treturn nil\n}\n\nfunc (x *EnumDescriptorProto) GetVisibility() SymbolVisibility {\n\tif x != nil && x.Visibility != nil {\n\t\treturn *x.Visibility\n\t}\n\treturn SymbolVisibility_VISIBILITY_UNSET\n}\n\n// Describes a value within an enum.\ntype EnumValueDescriptorProto struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tName          *string                `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tNumber        *int32                 `protobuf:\"varint,2,opt,name=number\" json:\"number,omitempty\"`\n\tOptions       *EnumValueOptions      `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *EnumValueDescriptorProto) Reset() {\n\t*x = EnumValueDescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EnumValueDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumValueDescriptorProto) ProtoMessage() {}\n\nfunc (x *EnumValueDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumValueDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*EnumValueDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *EnumValueDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *EnumValueDescriptorProto) GetNumber() int32 {\n\tif x != nil && x.Number != nil {\n\t\treturn *x.Number\n\t}\n\treturn 0\n}\n\nfunc (x *EnumValueDescriptorProto) GetOptions() *EnumValueOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\n// Describes a service.\ntype ServiceDescriptorProto struct {\n\tstate         protoimpl.MessageState   `protogen:\"open.v1\"`\n\tName          *string                  `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tMethod        []*MethodDescriptorProto `protobuf:\"bytes,2,rep,name=method\" json:\"method,omitempty\"`\n\tOptions       *ServiceOptions          `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ServiceDescriptorProto) Reset() {\n\t*x = ServiceDescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[8]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ServiceDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ServiceDescriptorProto) ProtoMessage() {}\n\nfunc (x *ServiceDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[8]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ServiceDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*ServiceDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *ServiceDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *ServiceDescriptorProto) GetMethod() []*MethodDescriptorProto {\n\tif x != nil {\n\t\treturn x.Method\n\t}\n\treturn nil\n}\n\nfunc (x *ServiceDescriptorProto) GetOptions() *ServiceOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\n// Describes a method of a service.\ntype MethodDescriptorProto struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\tName  *string                `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\t// Input and output type names.  These are resolved in the same way as\n\t// FieldDescriptorProto.type_name, but must refer to a message type.\n\tInputType  *string        `protobuf:\"bytes,2,opt,name=input_type,json=inputType\" json:\"input_type,omitempty\"`\n\tOutputType *string        `protobuf:\"bytes,3,opt,name=output_type,json=outputType\" json:\"output_type,omitempty\"`\n\tOptions    *MethodOptions `protobuf:\"bytes,4,opt,name=options\" json:\"options,omitempty\"`\n\t// Identifies if client streams multiple client messages\n\tClientStreaming *bool `protobuf:\"varint,5,opt,name=client_streaming,json=clientStreaming,def=0\" json:\"client_streaming,omitempty\"`\n\t// Identifies if server streams multiple server messages\n\tServerStreaming *bool `protobuf:\"varint,6,opt,name=server_streaming,json=serverStreaming,def=0\" json:\"server_streaming,omitempty\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\n// Default values for MethodDescriptorProto fields.\nconst (\n\tDefault_MethodDescriptorProto_ClientStreaming = bool(false)\n\tDefault_MethodDescriptorProto_ServerStreaming = bool(false)\n)\n\nfunc (x *MethodDescriptorProto) Reset() {\n\t*x = MethodDescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[9]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MethodDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MethodDescriptorProto) ProtoMessage() {}\n\nfunc (x *MethodDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[9]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MethodDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*MethodDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *MethodDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *MethodDescriptorProto) GetInputType() string {\n\tif x != nil && x.InputType != nil {\n\t\treturn *x.InputType\n\t}\n\treturn \"\"\n}\n\nfunc (x *MethodDescriptorProto) GetOutputType() string {\n\tif x != nil && x.OutputType != nil {\n\t\treturn *x.OutputType\n\t}\n\treturn \"\"\n}\n\nfunc (x *MethodDescriptorProto) GetOptions() *MethodOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *MethodDescriptorProto) GetClientStreaming() bool {\n\tif x != nil && x.ClientStreaming != nil {\n\t\treturn *x.ClientStreaming\n\t}\n\treturn Default_MethodDescriptorProto_ClientStreaming\n}\n\nfunc (x *MethodDescriptorProto) GetServerStreaming() bool {\n\tif x != nil && x.ServerStreaming != nil {\n\t\treturn *x.ServerStreaming\n\t}\n\treturn Default_MethodDescriptorProto_ServerStreaming\n}\n\ntype FileOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Sets the Java package where classes generated from this .proto will be\n\t// placed.  By default, the proto package is used, but this is often\n\t// inappropriate because proto packages do not normally start with backwards\n\t// domain names.\n\tJavaPackage *string `protobuf:\"bytes,1,opt,name=java_package,json=javaPackage\" json:\"java_package,omitempty\"`\n\t// Controls the name of the wrapper Java class generated for the .proto file.\n\t// That class will always contain the .proto file's getDescriptor() method as\n\t// well as any top-level extensions defined in the .proto file.\n\t// If java_multiple_files is disabled, then all the other classes from the\n\t// .proto file will be nested inside the single wrapper outer class.\n\tJavaOuterClassname *string `protobuf:\"bytes,8,opt,name=java_outer_classname,json=javaOuterClassname\" json:\"java_outer_classname,omitempty\"`\n\t// If enabled, then the Java code generator will generate a separate .java\n\t// file for each top-level message, enum, and service defined in the .proto\n\t// file.  Thus, these types will *not* be nested inside the wrapper class\n\t// named by java_outer_classname.  However, the wrapper class will still be\n\t// generated to contain the file's getDescriptor() method as well as any\n\t// top-level extensions defined in the file.\n\tJavaMultipleFiles *bool `protobuf:\"varint,10,opt,name=java_multiple_files,json=javaMultipleFiles,def=0\" json:\"java_multiple_files,omitempty\"`\n\t// This option does nothing.\n\t//\n\t// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\n\tJavaGenerateEqualsAndHash *bool `protobuf:\"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash\" json:\"java_generate_equals_and_hash,omitempty\"`\n\t// A proto2 file can set this to true to opt in to UTF-8 checking for Java,\n\t// which will throw an exception if invalid UTF-8 is parsed from the wire or\n\t// assigned to a string field.\n\t//\n\t// TODO: clarify exactly what kinds of field types this option\n\t// applies to, and update these docs accordingly.\n\t//\n\t// Proto3 files already perform these checks. Setting the option explicitly to\n\t// false has no effect: it cannot be used to opt proto3 files out of UTF-8\n\t// checks.\n\tJavaStringCheckUtf8 *bool                     `protobuf:\"varint,27,opt,name=java_string_check_utf8,json=javaStringCheckUtf8,def=0\" json:\"java_string_check_utf8,omitempty\"`\n\tOptimizeFor         *FileOptions_OptimizeMode `protobuf:\"varint,9,opt,name=optimize_for,json=optimizeFor,enum=google.protobuf.FileOptions_OptimizeMode,def=1\" json:\"optimize_for,omitempty\"`\n\t// Sets the Go package where structs generated from this .proto will be\n\t// placed. If omitted, the Go package will be derived from the following:\n\t//   - The basename of the package import path, if provided.\n\t//   - Otherwise, the package statement in the .proto file, if present.\n\t//   - Otherwise, the basename of the .proto file, without extension.\n\tGoPackage *string `protobuf:\"bytes,11,opt,name=go_package,json=goPackage\" json:\"go_package,omitempty\"`\n\t// Should generic services be generated in each language?  \"Generic\" services\n\t// are not specific to any particular RPC system.  They are generated by the\n\t// main code generators in each language (without additional plugins).\n\t// Generic services were the only kind of service generation supported by\n\t// early versions of google.protobuf.\n\t//\n\t// Generic services are now considered deprecated in favor of using plugins\n\t// that generate code specific to your particular RPC system.  Therefore,\n\t// these default to false.  Old code which depends on generic services should\n\t// explicitly set them to true.\n\tCcGenericServices   *bool `protobuf:\"varint,16,opt,name=cc_generic_services,json=ccGenericServices,def=0\" json:\"cc_generic_services,omitempty\"`\n\tJavaGenericServices *bool `protobuf:\"varint,17,opt,name=java_generic_services,json=javaGenericServices,def=0\" json:\"java_generic_services,omitempty\"`\n\tPyGenericServices   *bool `protobuf:\"varint,18,opt,name=py_generic_services,json=pyGenericServices,def=0\" json:\"py_generic_services,omitempty\"`\n\t// Is this file deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for everything in the file, or it will be completely ignored; in the very\n\t// least, this is a formalization for deprecating files.\n\tDeprecated *bool `protobuf:\"varint,23,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// Enables the use of arenas for the proto messages in this file. This applies\n\t// only to generated classes for C++.\n\tCcEnableArenas *bool `protobuf:\"varint,31,opt,name=cc_enable_arenas,json=ccEnableArenas,def=1\" json:\"cc_enable_arenas,omitempty\"`\n\t// Sets the objective c class prefix which is prepended to all objective c\n\t// generated classes from this .proto. There is no default.\n\tObjcClassPrefix *string `protobuf:\"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix\" json:\"objc_class_prefix,omitempty\"`\n\t// Namespace for generated classes; defaults to the package.\n\tCsharpNamespace *string `protobuf:\"bytes,37,opt,name=csharp_namespace,json=csharpNamespace\" json:\"csharp_namespace,omitempty\"`\n\t// By default Swift generators will take the proto package and CamelCase it\n\t// replacing '.' with underscore and use that to prefix the types/symbols\n\t// defined. When this options is provided, they will use this value instead\n\t// to prefix the types/symbols defined.\n\tSwiftPrefix *string `protobuf:\"bytes,39,opt,name=swift_prefix,json=swiftPrefix\" json:\"swift_prefix,omitempty\"`\n\t// Sets the php class prefix which is prepended to all php generated classes\n\t// from this .proto. Default is empty.\n\tPhpClassPrefix *string `protobuf:\"bytes,40,opt,name=php_class_prefix,json=phpClassPrefix\" json:\"php_class_prefix,omitempty\"`\n\t// Use this option to change the namespace of php generated classes. Default\n\t// is empty. When this option is empty, the package name will be used for\n\t// determining the namespace.\n\tPhpNamespace *string `protobuf:\"bytes,41,opt,name=php_namespace,json=phpNamespace\" json:\"php_namespace,omitempty\"`\n\t// Use this option to change the namespace of php generated metadata classes.\n\t// Default is empty. When this option is empty, the proto file name will be\n\t// used for determining the namespace.\n\tPhpMetadataNamespace *string `protobuf:\"bytes,44,opt,name=php_metadata_namespace,json=phpMetadataNamespace\" json:\"php_metadata_namespace,omitempty\"`\n\t// Use this option to change the package of ruby generated classes. Default\n\t// is empty. When this option is not set, the package name will be used for\n\t// determining the ruby package.\n\tRubyPackage *string `protobuf:\"bytes,45,opt,name=ruby_package,json=rubyPackage\" json:\"ruby_package,omitempty\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures *FeatureSet `protobuf:\"bytes,50,opt,name=features\" json:\"features,omitempty\"`\n\t// The parser stores options it doesn't recognize here.\n\t// See the documentation for the \"Options\" section above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\n// Default values for FileOptions fields.\nconst (\n\tDefault_FileOptions_JavaMultipleFiles   = bool(false)\n\tDefault_FileOptions_JavaStringCheckUtf8 = bool(false)\n\tDefault_FileOptions_OptimizeFor         = FileOptions_SPEED\n\tDefault_FileOptions_CcGenericServices   = bool(false)\n\tDefault_FileOptions_JavaGenericServices = bool(false)\n\tDefault_FileOptions_PyGenericServices   = bool(false)\n\tDefault_FileOptions_Deprecated          = bool(false)\n\tDefault_FileOptions_CcEnableArenas      = bool(true)\n)\n\nfunc (x *FileOptions) Reset() {\n\t*x = FileOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[10]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FileOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FileOptions) ProtoMessage() {}\n\nfunc (x *FileOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[10]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FileOptions.ProtoReflect.Descriptor instead.\nfunc (*FileOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *FileOptions) GetJavaPackage() string {\n\tif x != nil && x.JavaPackage != nil {\n\t\treturn *x.JavaPackage\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetJavaOuterClassname() string {\n\tif x != nil && x.JavaOuterClassname != nil {\n\t\treturn *x.JavaOuterClassname\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetJavaMultipleFiles() bool {\n\tif x != nil && x.JavaMultipleFiles != nil {\n\t\treturn *x.JavaMultipleFiles\n\t}\n\treturn Default_FileOptions_JavaMultipleFiles\n}\n\n// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\nfunc (x *FileOptions) GetJavaGenerateEqualsAndHash() bool {\n\tif x != nil && x.JavaGenerateEqualsAndHash != nil {\n\t\treturn *x.JavaGenerateEqualsAndHash\n\t}\n\treturn false\n}\n\nfunc (x *FileOptions) GetJavaStringCheckUtf8() bool {\n\tif x != nil && x.JavaStringCheckUtf8 != nil {\n\t\treturn *x.JavaStringCheckUtf8\n\t}\n\treturn Default_FileOptions_JavaStringCheckUtf8\n}\n\nfunc (x *FileOptions) GetOptimizeFor() FileOptions_OptimizeMode {\n\tif x != nil && x.OptimizeFor != nil {\n\t\treturn *x.OptimizeFor\n\t}\n\treturn Default_FileOptions_OptimizeFor\n}\n\nfunc (x *FileOptions) GetGoPackage() string {\n\tif x != nil && x.GoPackage != nil {\n\t\treturn *x.GoPackage\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetCcGenericServices() bool {\n\tif x != nil && x.CcGenericServices != nil {\n\t\treturn *x.CcGenericServices\n\t}\n\treturn Default_FileOptions_CcGenericServices\n}\n\nfunc (x *FileOptions) GetJavaGenericServices() bool {\n\tif x != nil && x.JavaGenericServices != nil {\n\t\treturn *x.JavaGenericServices\n\t}\n\treturn Default_FileOptions_JavaGenericServices\n}\n\nfunc (x *FileOptions) GetPyGenericServices() bool {\n\tif x != nil && x.PyGenericServices != nil {\n\t\treturn *x.PyGenericServices\n\t}\n\treturn Default_FileOptions_PyGenericServices\n}\n\nfunc (x *FileOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_FileOptions_Deprecated\n}\n\nfunc (x *FileOptions) GetCcEnableArenas() bool {\n\tif x != nil && x.CcEnableArenas != nil {\n\t\treturn *x.CcEnableArenas\n\t}\n\treturn Default_FileOptions_CcEnableArenas\n}\n\nfunc (x *FileOptions) GetObjcClassPrefix() string {\n\tif x != nil && x.ObjcClassPrefix != nil {\n\t\treturn *x.ObjcClassPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetCsharpNamespace() string {\n\tif x != nil && x.CsharpNamespace != nil {\n\t\treturn *x.CsharpNamespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetSwiftPrefix() string {\n\tif x != nil && x.SwiftPrefix != nil {\n\t\treturn *x.SwiftPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetPhpClassPrefix() string {\n\tif x != nil && x.PhpClassPrefix != nil {\n\t\treturn *x.PhpClassPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetPhpNamespace() string {\n\tif x != nil && x.PhpNamespace != nil {\n\t\treturn *x.PhpNamespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetPhpMetadataNamespace() string {\n\tif x != nil && x.PhpMetadataNamespace != nil {\n\t\treturn *x.PhpMetadataNamespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetRubyPackage() string {\n\tif x != nil && x.RubyPackage != nil {\n\t\treturn *x.RubyPackage\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *FileOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype MessageOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Set true to use the old proto1 MessageSet wire format for extensions.\n\t// This is provided for backwards-compatibility with the MessageSet wire\n\t// format.  You should not use this for any other reason:  It's less\n\t// efficient, has fewer features, and is more complicated.\n\t//\n\t// The message must be defined exactly as follows:\n\t//\n\t//\tmessage Foo {\n\t//\t  option message_set_wire_format = true;\n\t//\t  extensions 4 to max;\n\t//\t}\n\t//\n\t// Note that the message cannot have any defined fields; MessageSets only\n\t// have extensions.\n\t//\n\t// All extensions of your type must be singular messages; e.g. they cannot\n\t// be int32s, enums, or repeated messages.\n\t//\n\t// Because this is an option, the above two restrictions are not enforced by\n\t// the protocol compiler.\n\tMessageSetWireFormat *bool `protobuf:\"varint,1,opt,name=message_set_wire_format,json=messageSetWireFormat,def=0\" json:\"message_set_wire_format,omitempty\"`\n\t// Disables the generation of the standard \"descriptor()\" accessor, which can\n\t// conflict with a field of the same name.  This is meant to make migration\n\t// from proto1 easier; new code should avoid fields named \"descriptor\".\n\tNoStandardDescriptorAccessor *bool `protobuf:\"varint,2,opt,name=no_standard_descriptor_accessor,json=noStandardDescriptorAccessor,def=0\" json:\"no_standard_descriptor_accessor,omitempty\"`\n\t// Is this message deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the message, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating messages.\n\tDeprecated *bool `protobuf:\"varint,3,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// Whether the message is an automatically generated map entry type for the\n\t// maps field.\n\t//\n\t// For maps fields:\n\t//\n\t//\tmap<KeyType, ValueType> map_field = 1;\n\t//\n\t// The parsed descriptor looks like:\n\t//\n\t//\tmessage MapFieldEntry {\n\t//\t    option map_entry = true;\n\t//\t    optional KeyType key = 1;\n\t//\t    optional ValueType value = 2;\n\t//\t}\n\t//\trepeated MapFieldEntry map_field = 1;\n\t//\n\t// Implementations may choose not to generate the map_entry=true message, but\n\t// use a native map in the target language to hold the keys and values.\n\t// The reflection APIs in such implementations still need to work as\n\t// if the field is a repeated message field.\n\t//\n\t// NOTE: Do not set the option in .proto files. Always use the maps syntax\n\t// instead. The option should only be implicitly set by the proto compiler\n\t// parser.\n\tMapEntry *bool `protobuf:\"varint,7,opt,name=map_entry,json=mapEntry\" json:\"map_entry,omitempty\"`\n\t// Enable the legacy handling of JSON field name conflicts.  This lowercases\n\t// and strips underscored from the fields before comparison in proto3 only.\n\t// The new behavior takes `json_name` into account and applies to proto2 as\n\t// well.\n\t//\n\t// This should only be used as a temporary measure against broken builds due\n\t// to the change in behavior for JSON field name conflicts.\n\t//\n\t// TODO This is legacy behavior we plan to remove once downstream\n\t// teams have had time to migrate.\n\t//\n\t// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\n\tDeprecatedLegacyJsonFieldConflicts *bool `protobuf:\"varint,11,opt,name=deprecated_legacy_json_field_conflicts,json=deprecatedLegacyJsonFieldConflicts\" json:\"deprecated_legacy_json_field_conflicts,omitempty\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures *FeatureSet `protobuf:\"bytes,12,opt,name=features\" json:\"features,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\n// Default values for MessageOptions fields.\nconst (\n\tDefault_MessageOptions_MessageSetWireFormat         = bool(false)\n\tDefault_MessageOptions_NoStandardDescriptorAccessor = bool(false)\n\tDefault_MessageOptions_Deprecated                   = bool(false)\n)\n\nfunc (x *MessageOptions) Reset() {\n\t*x = MessageOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[11]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MessageOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MessageOptions) ProtoMessage() {}\n\nfunc (x *MessageOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[11]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MessageOptions.ProtoReflect.Descriptor instead.\nfunc (*MessageOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *MessageOptions) GetMessageSetWireFormat() bool {\n\tif x != nil && x.MessageSetWireFormat != nil {\n\t\treturn *x.MessageSetWireFormat\n\t}\n\treturn Default_MessageOptions_MessageSetWireFormat\n}\n\nfunc (x *MessageOptions) GetNoStandardDescriptorAccessor() bool {\n\tif x != nil && x.NoStandardDescriptorAccessor != nil {\n\t\treturn *x.NoStandardDescriptorAccessor\n\t}\n\treturn Default_MessageOptions_NoStandardDescriptorAccessor\n}\n\nfunc (x *MessageOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_MessageOptions_Deprecated\n}\n\nfunc (x *MessageOptions) GetMapEntry() bool {\n\tif x != nil && x.MapEntry != nil {\n\t\treturn *x.MapEntry\n\t}\n\treturn false\n}\n\n// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\nfunc (x *MessageOptions) GetDeprecatedLegacyJsonFieldConflicts() bool {\n\tif x != nil && x.DeprecatedLegacyJsonFieldConflicts != nil {\n\t\treturn *x.DeprecatedLegacyJsonFieldConflicts\n\t}\n\treturn false\n}\n\nfunc (x *MessageOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *MessageOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype FieldOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead.\n\t// The ctype option instructs the C++ code generator to use a different\n\t// representation of the field than it normally would.  See the specific\n\t// options below.  This option is only implemented to support use of\n\t// [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of\n\t// type \"bytes\" in the open source release.\n\t// TODO: make ctype actually deprecated.\n\tCtype *FieldOptions_CType `protobuf:\"varint,1,opt,name=ctype,enum=google.protobuf.FieldOptions_CType,def=0\" json:\"ctype,omitempty\"`\n\t// The packed option can be enabled for repeated primitive fields to enable\n\t// a more efficient representation on the wire. Rather than repeatedly\n\t// writing the tag and type for each element, the entire array is encoded as\n\t// a single length-delimited blob. In proto3, only explicit setting it to\n\t// false will avoid using packed encoding.  This option is prohibited in\n\t// Editions, but the `repeated_field_encoding` feature can be used to control\n\t// the behavior.\n\tPacked *bool `protobuf:\"varint,2,opt,name=packed\" json:\"packed,omitempty\"`\n\t// The jstype option determines the JavaScript type used for values of the\n\t// field.  The option is permitted only for 64 bit integral and fixed types\n\t// (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING\n\t// is represented as JavaScript string, which avoids loss of precision that\n\t// can happen when a large value is converted to a floating point JavaScript.\n\t// Specifying JS_NUMBER for the jstype causes the generated JavaScript code to\n\t// use the JavaScript \"number\" type.  The behavior of the default option\n\t// JS_NORMAL is implementation dependent.\n\t//\n\t// This option is an enum to permit additional types to be added, e.g.\n\t// goog.math.Integer.\n\tJstype *FieldOptions_JSType `protobuf:\"varint,6,opt,name=jstype,enum=google.protobuf.FieldOptions_JSType,def=0\" json:\"jstype,omitempty\"`\n\t// Should this field be parsed lazily?  Lazy applies only to message-type\n\t// fields.  It means that when the outer message is initially parsed, the\n\t// inner message's contents will not be parsed but instead stored in encoded\n\t// form.  The inner message will actually be parsed when it is first accessed.\n\t//\n\t// This is only a hint.  Implementations are free to choose whether to use\n\t// eager or lazy parsing regardless of the value of this option.  However,\n\t// setting this option true suggests that the protocol author believes that\n\t// using lazy parsing on this field is worth the additional bookkeeping\n\t// overhead typically needed to implement it.\n\t//\n\t// This option does not affect the public interface of any generated code;\n\t// all method signatures remain the same.  Furthermore, thread-safety of the\n\t// interface is not affected by this option; const methods remain safe to\n\t// call from multiple threads concurrently, while non-const methods continue\n\t// to require exclusive access.\n\t//\n\t// Note that lazy message fields are still eagerly verified to check\n\t// ill-formed wireformat or missing required fields. Calling IsInitialized()\n\t// on the outer message would fail if the inner message has missing required\n\t// fields. Failed verification would result in parsing failure (except when\n\t// uninitialized messages are acceptable).\n\tLazy *bool `protobuf:\"varint,5,opt,name=lazy,def=0\" json:\"lazy,omitempty\"`\n\t// unverified_lazy does no correctness checks on the byte stream. This should\n\t// only be used where lazy with verification is prohibitive for performance\n\t// reasons.\n\tUnverifiedLazy *bool `protobuf:\"varint,15,opt,name=unverified_lazy,json=unverifiedLazy,def=0\" json:\"unverified_lazy,omitempty\"`\n\t// Is this field deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for accessors, or it will be completely ignored; in the very least, this\n\t// is a formalization for deprecating fields.\n\tDeprecated *bool `protobuf:\"varint,3,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// DEPRECATED. DO NOT USE!\n\t// For Google-internal migration only. Do not use.\n\t//\n\t// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\n\tWeak *bool `protobuf:\"varint,10,opt,name=weak,def=0\" json:\"weak,omitempty\"`\n\t// Indicate that the field value should not be printed out when using debug\n\t// formats, e.g. when the field contains sensitive credentials.\n\tDebugRedact     *bool                           `protobuf:\"varint,16,opt,name=debug_redact,json=debugRedact,def=0\" json:\"debug_redact,omitempty\"`\n\tRetention       *FieldOptions_OptionRetention   `protobuf:\"varint,17,opt,name=retention,enum=google.protobuf.FieldOptions_OptionRetention\" json:\"retention,omitempty\"`\n\tTargets         []FieldOptions_OptionTargetType `protobuf:\"varint,19,rep,name=targets,enum=google.protobuf.FieldOptions_OptionTargetType\" json:\"targets,omitempty\"`\n\tEditionDefaults []*FieldOptions_EditionDefault  `protobuf:\"bytes,20,rep,name=edition_defaults,json=editionDefaults\" json:\"edition_defaults,omitempty\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures       *FeatureSet                  `protobuf:\"bytes,21,opt,name=features\" json:\"features,omitempty\"`\n\tFeatureSupport *FieldOptions_FeatureSupport `protobuf:\"bytes,22,opt,name=feature_support,json=featureSupport\" json:\"feature_support,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\n// Default values for FieldOptions fields.\nconst (\n\tDefault_FieldOptions_Ctype          = FieldOptions_STRING\n\tDefault_FieldOptions_Jstype         = FieldOptions_JS_NORMAL\n\tDefault_FieldOptions_Lazy           = bool(false)\n\tDefault_FieldOptions_UnverifiedLazy = bool(false)\n\tDefault_FieldOptions_Deprecated     = bool(false)\n\tDefault_FieldOptions_Weak           = bool(false)\n\tDefault_FieldOptions_DebugRedact    = bool(false)\n)\n\nfunc (x *FieldOptions) Reset() {\n\t*x = FieldOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[12]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FieldOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldOptions) ProtoMessage() {}\n\nfunc (x *FieldOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[12]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldOptions.ProtoReflect.Descriptor instead.\nfunc (*FieldOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *FieldOptions) GetCtype() FieldOptions_CType {\n\tif x != nil && x.Ctype != nil {\n\t\treturn *x.Ctype\n\t}\n\treturn Default_FieldOptions_Ctype\n}\n\nfunc (x *FieldOptions) GetPacked() bool {\n\tif x != nil && x.Packed != nil {\n\t\treturn *x.Packed\n\t}\n\treturn false\n}\n\nfunc (x *FieldOptions) GetJstype() FieldOptions_JSType {\n\tif x != nil && x.Jstype != nil {\n\t\treturn *x.Jstype\n\t}\n\treturn Default_FieldOptions_Jstype\n}\n\nfunc (x *FieldOptions) GetLazy() bool {\n\tif x != nil && x.Lazy != nil {\n\t\treturn *x.Lazy\n\t}\n\treturn Default_FieldOptions_Lazy\n}\n\nfunc (x *FieldOptions) GetUnverifiedLazy() bool {\n\tif x != nil && x.UnverifiedLazy != nil {\n\t\treturn *x.UnverifiedLazy\n\t}\n\treturn Default_FieldOptions_UnverifiedLazy\n}\n\nfunc (x *FieldOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_FieldOptions_Deprecated\n}\n\n// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\nfunc (x *FieldOptions) GetWeak() bool {\n\tif x != nil && x.Weak != nil {\n\t\treturn *x.Weak\n\t}\n\treturn Default_FieldOptions_Weak\n}\n\nfunc (x *FieldOptions) GetDebugRedact() bool {\n\tif x != nil && x.DebugRedact != nil {\n\t\treturn *x.DebugRedact\n\t}\n\treturn Default_FieldOptions_DebugRedact\n}\n\nfunc (x *FieldOptions) GetRetention() FieldOptions_OptionRetention {\n\tif x != nil && x.Retention != nil {\n\t\treturn *x.Retention\n\t}\n\treturn FieldOptions_RETENTION_UNKNOWN\n}\n\nfunc (x *FieldOptions) GetTargets() []FieldOptions_OptionTargetType {\n\tif x != nil {\n\t\treturn x.Targets\n\t}\n\treturn nil\n}\n\nfunc (x *FieldOptions) GetEditionDefaults() []*FieldOptions_EditionDefault {\n\tif x != nil {\n\t\treturn x.EditionDefaults\n\t}\n\treturn nil\n}\n\nfunc (x *FieldOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *FieldOptions) GetFeatureSupport() *FieldOptions_FeatureSupport {\n\tif x != nil {\n\t\treturn x.FeatureSupport\n\t}\n\treturn nil\n}\n\nfunc (x *FieldOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype OneofOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures *FeatureSet `protobuf:\"bytes,1,opt,name=features\" json:\"features,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\nfunc (x *OneofOptions) Reset() {\n\t*x = OneofOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[13]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *OneofOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OneofOptions) ProtoMessage() {}\n\nfunc (x *OneofOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[13]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OneofOptions.ProtoReflect.Descriptor instead.\nfunc (*OneofOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{13}\n}\n\nfunc (x *OneofOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *OneofOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype EnumOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Set this option to true to allow mapping different tag names to the same\n\t// value.\n\tAllowAlias *bool `protobuf:\"varint,2,opt,name=allow_alias,json=allowAlias\" json:\"allow_alias,omitempty\"`\n\t// Is this enum deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the enum, or it will be completely ignored; in the very least, this\n\t// is a formalization for deprecating enums.\n\tDeprecated *bool `protobuf:\"varint,3,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// Enable the legacy handling of JSON field name conflicts.  This lowercases\n\t// and strips underscored from the fields before comparison in proto3 only.\n\t// The new behavior takes `json_name` into account and applies to proto2 as\n\t// well.\n\t// TODO Remove this legacy behavior once downstream teams have\n\t// had time to migrate.\n\t//\n\t// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\n\tDeprecatedLegacyJsonFieldConflicts *bool `protobuf:\"varint,6,opt,name=deprecated_legacy_json_field_conflicts,json=deprecatedLegacyJsonFieldConflicts\" json:\"deprecated_legacy_json_field_conflicts,omitempty\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures *FeatureSet `protobuf:\"bytes,7,opt,name=features\" json:\"features,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\n// Default values for EnumOptions fields.\nconst (\n\tDefault_EnumOptions_Deprecated = bool(false)\n)\n\nfunc (x *EnumOptions) Reset() {\n\t*x = EnumOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[14]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EnumOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumOptions) ProtoMessage() {}\n\nfunc (x *EnumOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[14]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumOptions.ProtoReflect.Descriptor instead.\nfunc (*EnumOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{14}\n}\n\nfunc (x *EnumOptions) GetAllowAlias() bool {\n\tif x != nil && x.AllowAlias != nil {\n\t\treturn *x.AllowAlias\n\t}\n\treturn false\n}\n\nfunc (x *EnumOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_EnumOptions_Deprecated\n}\n\n// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\nfunc (x *EnumOptions) GetDeprecatedLegacyJsonFieldConflicts() bool {\n\tif x != nil && x.DeprecatedLegacyJsonFieldConflicts != nil {\n\t\treturn *x.DeprecatedLegacyJsonFieldConflicts\n\t}\n\treturn false\n}\n\nfunc (x *EnumOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *EnumOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype EnumValueOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Is this enum value deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the enum value, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating enum values.\n\tDeprecated *bool `protobuf:\"varint,1,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures *FeatureSet `protobuf:\"bytes,2,opt,name=features\" json:\"features,omitempty\"`\n\t// Indicate that fields annotated with this enum value should not be printed\n\t// out when using debug formats, e.g. when the field contains sensitive\n\t// credentials.\n\tDebugRedact *bool `protobuf:\"varint,3,opt,name=debug_redact,json=debugRedact,def=0\" json:\"debug_redact,omitempty\"`\n\t// Information about the support window of a feature value.\n\tFeatureSupport *FieldOptions_FeatureSupport `protobuf:\"bytes,4,opt,name=feature_support,json=featureSupport\" json:\"feature_support,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\n// Default values for EnumValueOptions fields.\nconst (\n\tDefault_EnumValueOptions_Deprecated  = bool(false)\n\tDefault_EnumValueOptions_DebugRedact = bool(false)\n)\n\nfunc (x *EnumValueOptions) Reset() {\n\t*x = EnumValueOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[15]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EnumValueOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumValueOptions) ProtoMessage() {}\n\nfunc (x *EnumValueOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[15]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumValueOptions.ProtoReflect.Descriptor instead.\nfunc (*EnumValueOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{15}\n}\n\nfunc (x *EnumValueOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_EnumValueOptions_Deprecated\n}\n\nfunc (x *EnumValueOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *EnumValueOptions) GetDebugRedact() bool {\n\tif x != nil && x.DebugRedact != nil {\n\t\treturn *x.DebugRedact\n\t}\n\treturn Default_EnumValueOptions_DebugRedact\n}\n\nfunc (x *EnumValueOptions) GetFeatureSupport() *FieldOptions_FeatureSupport {\n\tif x != nil {\n\t\treturn x.FeatureSupport\n\t}\n\treturn nil\n}\n\nfunc (x *EnumValueOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype ServiceOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures *FeatureSet `protobuf:\"bytes,34,opt,name=features\" json:\"features,omitempty\"`\n\t// Is this service deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the service, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating services.\n\tDeprecated *bool `protobuf:\"varint,33,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\n// Default values for ServiceOptions fields.\nconst (\n\tDefault_ServiceOptions_Deprecated = bool(false)\n)\n\nfunc (x *ServiceOptions) Reset() {\n\t*x = ServiceOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[16]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ServiceOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ServiceOptions) ProtoMessage() {}\n\nfunc (x *ServiceOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[16]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ServiceOptions.ProtoReflect.Descriptor instead.\nfunc (*ServiceOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{16}\n}\n\nfunc (x *ServiceOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *ServiceOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_ServiceOptions_Deprecated\n}\n\nfunc (x *ServiceOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype MethodOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Is this method deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the method, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating methods.\n\tDeprecated       *bool                           `protobuf:\"varint,33,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\tIdempotencyLevel *MethodOptions_IdempotencyLevel `protobuf:\"varint,34,opt,name=idempotency_level,json=idempotencyLevel,enum=google.protobuf.MethodOptions_IdempotencyLevel,def=0\" json:\"idempotency_level,omitempty\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures *FeatureSet `protobuf:\"bytes,35,opt,name=features\" json:\"features,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\n// Default values for MethodOptions fields.\nconst (\n\tDefault_MethodOptions_Deprecated       = bool(false)\n\tDefault_MethodOptions_IdempotencyLevel = MethodOptions_IDEMPOTENCY_UNKNOWN\n)\n\nfunc (x *MethodOptions) Reset() {\n\t*x = MethodOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[17]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MethodOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MethodOptions) ProtoMessage() {}\n\nfunc (x *MethodOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[17]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MethodOptions.ProtoReflect.Descriptor instead.\nfunc (*MethodOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17}\n}\n\nfunc (x *MethodOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_MethodOptions_Deprecated\n}\n\nfunc (x *MethodOptions) GetIdempotencyLevel() MethodOptions_IdempotencyLevel {\n\tif x != nil && x.IdempotencyLevel != nil {\n\t\treturn *x.IdempotencyLevel\n\t}\n\treturn Default_MethodOptions_IdempotencyLevel\n}\n\nfunc (x *MethodOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *MethodOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\n// A message representing a option the parser does not recognize. This only\n// appears in options protos created by the compiler::Parser class.\n// DescriptorPool resolves these when building Descriptor objects. Therefore,\n// options protos in descriptor objects (e.g. returned by Descriptor::options(),\n// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions\n// in them.\ntype UninterpretedOption struct {\n\tstate protoimpl.MessageState          `protogen:\"open.v1\"`\n\tName  []*UninterpretedOption_NamePart `protobuf:\"bytes,2,rep,name=name\" json:\"name,omitempty\"`\n\t// The value of the uninterpreted option, in whatever type the tokenizer\n\t// identified it as during parsing. Exactly one of these should be set.\n\tIdentifierValue  *string  `protobuf:\"bytes,3,opt,name=identifier_value,json=identifierValue\" json:\"identifier_value,omitempty\"`\n\tPositiveIntValue *uint64  `protobuf:\"varint,4,opt,name=positive_int_value,json=positiveIntValue\" json:\"positive_int_value,omitempty\"`\n\tNegativeIntValue *int64   `protobuf:\"varint,5,opt,name=negative_int_value,json=negativeIntValue\" json:\"negative_int_value,omitempty\"`\n\tDoubleValue      *float64 `protobuf:\"fixed64,6,opt,name=double_value,json=doubleValue\" json:\"double_value,omitempty\"`\n\tStringValue      []byte   `protobuf:\"bytes,7,opt,name=string_value,json=stringValue\" json:\"string_value,omitempty\"`\n\tAggregateValue   *string  `protobuf:\"bytes,8,opt,name=aggregate_value,json=aggregateValue\" json:\"aggregate_value,omitempty\"`\n\tunknownFields    protoimpl.UnknownFields\n\tsizeCache        protoimpl.SizeCache\n}\n\nfunc (x *UninterpretedOption) Reset() {\n\t*x = UninterpretedOption{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[18]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *UninterpretedOption) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UninterpretedOption) ProtoMessage() {}\n\nfunc (x *UninterpretedOption) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[18]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UninterpretedOption.ProtoReflect.Descriptor instead.\nfunc (*UninterpretedOption) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{18}\n}\n\nfunc (x *UninterpretedOption) GetName() []*UninterpretedOption_NamePart {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn nil\n}\n\nfunc (x *UninterpretedOption) GetIdentifierValue() string {\n\tif x != nil && x.IdentifierValue != nil {\n\t\treturn *x.IdentifierValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *UninterpretedOption) GetPositiveIntValue() uint64 {\n\tif x != nil && x.PositiveIntValue != nil {\n\t\treturn *x.PositiveIntValue\n\t}\n\treturn 0\n}\n\nfunc (x *UninterpretedOption) GetNegativeIntValue() int64 {\n\tif x != nil && x.NegativeIntValue != nil {\n\t\treturn *x.NegativeIntValue\n\t}\n\treturn 0\n}\n\nfunc (x *UninterpretedOption) GetDoubleValue() float64 {\n\tif x != nil && x.DoubleValue != nil {\n\t\treturn *x.DoubleValue\n\t}\n\treturn 0\n}\n\nfunc (x *UninterpretedOption) GetStringValue() []byte {\n\tif x != nil {\n\t\treturn x.StringValue\n\t}\n\treturn nil\n}\n\nfunc (x *UninterpretedOption) GetAggregateValue() string {\n\tif x != nil && x.AggregateValue != nil {\n\t\treturn *x.AggregateValue\n\t}\n\treturn \"\"\n}\n\n// TODO Enums in C++ gencode (and potentially other languages) are\n// not well scoped.  This means that each of the feature enums below can clash\n// with each other.  The short names we've chosen maximize call-site\n// readability, but leave us very open to this scenario.  A future feature will\n// be designed and implemented to handle this, hopefully before we ever hit a\n// conflict here.\ntype FeatureSet struct {\n\tstate                   protoimpl.MessageState                                `protogen:\"open.v1\"`\n\tFieldPresence           *FeatureSet_FieldPresence                             `protobuf:\"varint,1,opt,name=field_presence,json=fieldPresence,enum=google.protobuf.FeatureSet_FieldPresence\" json:\"field_presence,omitempty\"`\n\tEnumType                *FeatureSet_EnumType                                  `protobuf:\"varint,2,opt,name=enum_type,json=enumType,enum=google.protobuf.FeatureSet_EnumType\" json:\"enum_type,omitempty\"`\n\tRepeatedFieldEncoding   *FeatureSet_RepeatedFieldEncoding                     `protobuf:\"varint,3,opt,name=repeated_field_encoding,json=repeatedFieldEncoding,enum=google.protobuf.FeatureSet_RepeatedFieldEncoding\" json:\"repeated_field_encoding,omitempty\"`\n\tUtf8Validation          *FeatureSet_Utf8Validation                            `protobuf:\"varint,4,opt,name=utf8_validation,json=utf8Validation,enum=google.protobuf.FeatureSet_Utf8Validation\" json:\"utf8_validation,omitempty\"`\n\tMessageEncoding         *FeatureSet_MessageEncoding                           `protobuf:\"varint,5,opt,name=message_encoding,json=messageEncoding,enum=google.protobuf.FeatureSet_MessageEncoding\" json:\"message_encoding,omitempty\"`\n\tJsonFormat              *FeatureSet_JsonFormat                                `protobuf:\"varint,6,opt,name=json_format,json=jsonFormat,enum=google.protobuf.FeatureSet_JsonFormat\" json:\"json_format,omitempty\"`\n\tEnforceNamingStyle      *FeatureSet_EnforceNamingStyle                        `protobuf:\"varint,7,opt,name=enforce_naming_style,json=enforceNamingStyle,enum=google.protobuf.FeatureSet_EnforceNamingStyle\" json:\"enforce_naming_style,omitempty\"`\n\tDefaultSymbolVisibility *FeatureSet_VisibilityFeature_DefaultSymbolVisibility `protobuf:\"varint,8,opt,name=default_symbol_visibility,json=defaultSymbolVisibility,enum=google.protobuf.FeatureSet_VisibilityFeature_DefaultSymbolVisibility\" json:\"default_symbol_visibility,omitempty\"`\n\textensionFields         protoimpl.ExtensionFields\n\tunknownFields           protoimpl.UnknownFields\n\tsizeCache               protoimpl.SizeCache\n}\n\nfunc (x *FeatureSet) Reset() {\n\t*x = FeatureSet{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[19]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FeatureSet) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FeatureSet) ProtoMessage() {}\n\nfunc (x *FeatureSet) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[19]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FeatureSet.ProtoReflect.Descriptor instead.\nfunc (*FeatureSet) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19}\n}\n\nfunc (x *FeatureSet) GetFieldPresence() FeatureSet_FieldPresence {\n\tif x != nil && x.FieldPresence != nil {\n\t\treturn *x.FieldPresence\n\t}\n\treturn FeatureSet_FIELD_PRESENCE_UNKNOWN\n}\n\nfunc (x *FeatureSet) GetEnumType() FeatureSet_EnumType {\n\tif x != nil && x.EnumType != nil {\n\t\treturn *x.EnumType\n\t}\n\treturn FeatureSet_ENUM_TYPE_UNKNOWN\n}\n\nfunc (x *FeatureSet) GetRepeatedFieldEncoding() FeatureSet_RepeatedFieldEncoding {\n\tif x != nil && x.RepeatedFieldEncoding != nil {\n\t\treturn *x.RepeatedFieldEncoding\n\t}\n\treturn FeatureSet_REPEATED_FIELD_ENCODING_UNKNOWN\n}\n\nfunc (x *FeatureSet) GetUtf8Validation() FeatureSet_Utf8Validation {\n\tif x != nil && x.Utf8Validation != nil {\n\t\treturn *x.Utf8Validation\n\t}\n\treturn FeatureSet_UTF8_VALIDATION_UNKNOWN\n}\n\nfunc (x *FeatureSet) GetMessageEncoding() FeatureSet_MessageEncoding {\n\tif x != nil && x.MessageEncoding != nil {\n\t\treturn *x.MessageEncoding\n\t}\n\treturn FeatureSet_MESSAGE_ENCODING_UNKNOWN\n}\n\nfunc (x *FeatureSet) GetJsonFormat() FeatureSet_JsonFormat {\n\tif x != nil && x.JsonFormat != nil {\n\t\treturn *x.JsonFormat\n\t}\n\treturn FeatureSet_JSON_FORMAT_UNKNOWN\n}\n\nfunc (x *FeatureSet) GetEnforceNamingStyle() FeatureSet_EnforceNamingStyle {\n\tif x != nil && x.EnforceNamingStyle != nil {\n\t\treturn *x.EnforceNamingStyle\n\t}\n\treturn FeatureSet_ENFORCE_NAMING_STYLE_UNKNOWN\n}\n\nfunc (x *FeatureSet) GetDefaultSymbolVisibility() FeatureSet_VisibilityFeature_DefaultSymbolVisibility {\n\tif x != nil && x.DefaultSymbolVisibility != nil {\n\t\treturn *x.DefaultSymbolVisibility\n\t}\n\treturn FeatureSet_VisibilityFeature_DEFAULT_SYMBOL_VISIBILITY_UNKNOWN\n}\n\n// A compiled specification for the defaults of a set of features.  These\n// messages are generated from FeatureSet extensions and can be used to seed\n// feature resolution. The resolution with this object becomes a simple search\n// for the closest matching edition, followed by proto merges.\ntype FeatureSetDefaults struct {\n\tstate    protoimpl.MessageState                         `protogen:\"open.v1\"`\n\tDefaults []*FeatureSetDefaults_FeatureSetEditionDefault `protobuf:\"bytes,1,rep,name=defaults\" json:\"defaults,omitempty\"`\n\t// The minimum supported edition (inclusive) when this was constructed.\n\t// Editions before this will not have defaults.\n\tMinimumEdition *Edition `protobuf:\"varint,4,opt,name=minimum_edition,json=minimumEdition,enum=google.protobuf.Edition\" json:\"minimum_edition,omitempty\"`\n\t// The maximum known edition (inclusive) when this was constructed. Editions\n\t// after this will not have reliable defaults.\n\tMaximumEdition *Edition `protobuf:\"varint,5,opt,name=maximum_edition,json=maximumEdition,enum=google.protobuf.Edition\" json:\"maximum_edition,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *FeatureSetDefaults) Reset() {\n\t*x = FeatureSetDefaults{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[20]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FeatureSetDefaults) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FeatureSetDefaults) ProtoMessage() {}\n\nfunc (x *FeatureSetDefaults) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[20]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FeatureSetDefaults.ProtoReflect.Descriptor instead.\nfunc (*FeatureSetDefaults) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20}\n}\n\nfunc (x *FeatureSetDefaults) GetDefaults() []*FeatureSetDefaults_FeatureSetEditionDefault {\n\tif x != nil {\n\t\treturn x.Defaults\n\t}\n\treturn nil\n}\n\nfunc (x *FeatureSetDefaults) GetMinimumEdition() Edition {\n\tif x != nil && x.MinimumEdition != nil {\n\t\treturn *x.MinimumEdition\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\nfunc (x *FeatureSetDefaults) GetMaximumEdition() Edition {\n\tif x != nil && x.MaximumEdition != nil {\n\t\treturn *x.MaximumEdition\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\n// Encapsulates information about the original source file from which a\n// FileDescriptorProto was generated.\ntype SourceCodeInfo struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// A Location identifies a piece of source code in a .proto file which\n\t// corresponds to a particular definition.  This information is intended\n\t// to be useful to IDEs, code indexers, documentation generators, and similar\n\t// tools.\n\t//\n\t// For example, say we have a file like:\n\t//\n\t//\tmessage Foo {\n\t//\t  optional string foo = 1;\n\t//\t}\n\t//\n\t// Let's look at just the field definition:\n\t//\n\t//\toptional string foo = 1;\n\t//\t^       ^^     ^^  ^  ^^^\n\t//\ta       bc     de  f  ghi\n\t//\n\t// We have the following locations:\n\t//\n\t//\tspan   path               represents\n\t//\t[a,i)  [ 4, 0, 2, 0 ]     The whole field definition.\n\t//\t[a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).\n\t//\t[c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).\n\t//\t[e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).\n\t//\t[g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).\n\t//\n\t// Notes:\n\t//   - A location may refer to a repeated field itself (i.e. not to any\n\t//     particular index within it).  This is used whenever a set of elements are\n\t//     logically enclosed in a single code segment.  For example, an entire\n\t//     extend block (possibly containing multiple extension definitions) will\n\t//     have an outer location whose path refers to the \"extensions\" repeated\n\t//     field without an index.\n\t//   - Multiple locations may have the same path.  This happens when a single\n\t//     logical declaration is spread out across multiple places.  The most\n\t//     obvious example is the \"extend\" block again -- there may be multiple\n\t//     extend blocks in the same scope, each of which will have the same path.\n\t//   - A location's span is not always a subset of its parent's span.  For\n\t//     example, the \"extendee\" of an extension declaration appears at the\n\t//     beginning of the \"extend\" block and is shared by all extensions within\n\t//     the block.\n\t//   - Just because a location's span is a subset of some other location's span\n\t//     does not mean that it is a descendant.  For example, a \"group\" defines\n\t//     both a type and a field in a single declaration.  Thus, the locations\n\t//     corresponding to the type and field and their components will overlap.\n\t//   - Code which tries to interpret locations should probably be designed to\n\t//     ignore those that it doesn't understand, as more types of locations could\n\t//     be recorded in the future.\n\tLocation        []*SourceCodeInfo_Location `protobuf:\"bytes,1,rep,name=location\" json:\"location,omitempty\"`\n\textensionFields protoimpl.ExtensionFields\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *SourceCodeInfo) Reset() {\n\t*x = SourceCodeInfo{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[21]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SourceCodeInfo) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SourceCodeInfo) ProtoMessage() {}\n\nfunc (x *SourceCodeInfo) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[21]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SourceCodeInfo.ProtoReflect.Descriptor instead.\nfunc (*SourceCodeInfo) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{21}\n}\n\nfunc (x *SourceCodeInfo) GetLocation() []*SourceCodeInfo_Location {\n\tif x != nil {\n\t\treturn x.Location\n\t}\n\treturn nil\n}\n\n// Describes the relationship between generated code and its original source\n// file. A GeneratedCodeInfo message is associated with only one generated\n// source file, but may contain references to different source .proto files.\ntype GeneratedCodeInfo struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// An Annotation connects some span of text in generated code to an element\n\t// of its generating .proto file.\n\tAnnotation    []*GeneratedCodeInfo_Annotation `protobuf:\"bytes,1,rep,name=annotation\" json:\"annotation,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *GeneratedCodeInfo) Reset() {\n\t*x = GeneratedCodeInfo{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[22]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GeneratedCodeInfo) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GeneratedCodeInfo) ProtoMessage() {}\n\nfunc (x *GeneratedCodeInfo) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[22]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GeneratedCodeInfo.ProtoReflect.Descriptor instead.\nfunc (*GeneratedCodeInfo) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{22}\n}\n\nfunc (x *GeneratedCodeInfo) GetAnnotation() []*GeneratedCodeInfo_Annotation {\n\tif x != nil {\n\t\treturn x.Annotation\n\t}\n\treturn nil\n}\n\ntype DescriptorProto_ExtensionRange struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tStart         *int32                 `protobuf:\"varint,1,opt,name=start\" json:\"start,omitempty\"` // Inclusive.\n\tEnd           *int32                 `protobuf:\"varint,2,opt,name=end\" json:\"end,omitempty\"`     // Exclusive.\n\tOptions       *ExtensionRangeOptions `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DescriptorProto_ExtensionRange) Reset() {\n\t*x = DescriptorProto_ExtensionRange{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[23]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DescriptorProto_ExtensionRange) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DescriptorProto_ExtensionRange) ProtoMessage() {}\n\nfunc (x *DescriptorProto_ExtensionRange) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[23]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DescriptorProto_ExtensionRange.ProtoReflect.Descriptor instead.\nfunc (*DescriptorProto_ExtensionRange) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2, 0}\n}\n\nfunc (x *DescriptorProto_ExtensionRange) GetStart() int32 {\n\tif x != nil && x.Start != nil {\n\t\treturn *x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *DescriptorProto_ExtensionRange) GetEnd() int32 {\n\tif x != nil && x.End != nil {\n\t\treturn *x.End\n\t}\n\treturn 0\n}\n\nfunc (x *DescriptorProto_ExtensionRange) GetOptions() *ExtensionRangeOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\n// Range of reserved tag numbers. Reserved tag numbers may not be used by\n// fields or extension ranges in the same message. Reserved ranges may\n// not overlap.\ntype DescriptorProto_ReservedRange struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tStart         *int32                 `protobuf:\"varint,1,opt,name=start\" json:\"start,omitempty\"` // Inclusive.\n\tEnd           *int32                 `protobuf:\"varint,2,opt,name=end\" json:\"end,omitempty\"`     // Exclusive.\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DescriptorProto_ReservedRange) Reset() {\n\t*x = DescriptorProto_ReservedRange{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[24]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DescriptorProto_ReservedRange) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DescriptorProto_ReservedRange) ProtoMessage() {}\n\nfunc (x *DescriptorProto_ReservedRange) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[24]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DescriptorProto_ReservedRange.ProtoReflect.Descriptor instead.\nfunc (*DescriptorProto_ReservedRange) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2, 1}\n}\n\nfunc (x *DescriptorProto_ReservedRange) GetStart() int32 {\n\tif x != nil && x.Start != nil {\n\t\treturn *x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *DescriptorProto_ReservedRange) GetEnd() int32 {\n\tif x != nil && x.End != nil {\n\t\treturn *x.End\n\t}\n\treturn 0\n}\n\ntype ExtensionRangeOptions_Declaration struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The extension number declared within the extension range.\n\tNumber *int32 `protobuf:\"varint,1,opt,name=number\" json:\"number,omitempty\"`\n\t// The fully-qualified name of the extension field. There must be a leading\n\t// dot in front of the full name.\n\tFullName *string `protobuf:\"bytes,2,opt,name=full_name,json=fullName\" json:\"full_name,omitempty\"`\n\t// The fully-qualified type name of the extension field. Unlike\n\t// Metadata.type, Declaration.type must have a leading dot for messages\n\t// and enums.\n\tType *string `protobuf:\"bytes,3,opt,name=type\" json:\"type,omitempty\"`\n\t// If true, indicates that the number is reserved in the extension range,\n\t// and any extension field with the number will fail to compile. Set this\n\t// when a declared extension field is deleted.\n\tReserved *bool `protobuf:\"varint,5,opt,name=reserved\" json:\"reserved,omitempty\"`\n\t// If true, indicates that the extension must be defined as repeated.\n\t// Otherwise the extension must be defined as optional.\n\tRepeated      *bool `protobuf:\"varint,6,opt,name=repeated\" json:\"repeated,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) Reset() {\n\t*x = ExtensionRangeOptions_Declaration{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[25]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ExtensionRangeOptions_Declaration) ProtoMessage() {}\n\nfunc (x *ExtensionRangeOptions_Declaration) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[25]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ExtensionRangeOptions_Declaration.ProtoReflect.Descriptor instead.\nfunc (*ExtensionRangeOptions_Declaration) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3, 0}\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetNumber() int32 {\n\tif x != nil && x.Number != nil {\n\t\treturn *x.Number\n\t}\n\treturn 0\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetFullName() string {\n\tif x != nil && x.FullName != nil {\n\t\treturn *x.FullName\n\t}\n\treturn \"\"\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetType() string {\n\tif x != nil && x.Type != nil {\n\t\treturn *x.Type\n\t}\n\treturn \"\"\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetReserved() bool {\n\tif x != nil && x.Reserved != nil {\n\t\treturn *x.Reserved\n\t}\n\treturn false\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetRepeated() bool {\n\tif x != nil && x.Repeated != nil {\n\t\treturn *x.Repeated\n\t}\n\treturn false\n}\n\n// Range of reserved numeric values. Reserved values may not be used by\n// entries in the same enum. Reserved ranges may not overlap.\n//\n// Note that this is distinct from DescriptorProto.ReservedRange in that it\n// is inclusive such that it can appropriately represent the entire int32\n// domain.\ntype EnumDescriptorProto_EnumReservedRange struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tStart         *int32                 `protobuf:\"varint,1,opt,name=start\" json:\"start,omitempty\"` // Inclusive.\n\tEnd           *int32                 `protobuf:\"varint,2,opt,name=end\" json:\"end,omitempty\"`     // Inclusive.\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) Reset() {\n\t*x = EnumDescriptorProto_EnumReservedRange{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[26]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumDescriptorProto_EnumReservedRange) ProtoMessage() {}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[26]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumDescriptorProto_EnumReservedRange.ProtoReflect.Descriptor instead.\nfunc (*EnumDescriptorProto_EnumReservedRange) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{6, 0}\n}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) GetStart() int32 {\n\tif x != nil && x.Start != nil {\n\t\treturn *x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) GetEnd() int32 {\n\tif x != nil && x.End != nil {\n\t\treturn *x.End\n\t}\n\treturn 0\n}\n\ntype FieldOptions_EditionDefault struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tEdition       *Edition               `protobuf:\"varint,3,opt,name=edition,enum=google.protobuf.Edition\" json:\"edition,omitempty\"`\n\tValue         *string                `protobuf:\"bytes,2,opt,name=value\" json:\"value,omitempty\"` // Textproto value.\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *FieldOptions_EditionDefault) Reset() {\n\t*x = FieldOptions_EditionDefault{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[27]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FieldOptions_EditionDefault) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldOptions_EditionDefault) ProtoMessage() {}\n\nfunc (x *FieldOptions_EditionDefault) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[27]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldOptions_EditionDefault.ProtoReflect.Descriptor instead.\nfunc (*FieldOptions_EditionDefault) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 0}\n}\n\nfunc (x *FieldOptions_EditionDefault) GetEdition() Edition {\n\tif x != nil && x.Edition != nil {\n\t\treturn *x.Edition\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\nfunc (x *FieldOptions_EditionDefault) GetValue() string {\n\tif x != nil && x.Value != nil {\n\t\treturn *x.Value\n\t}\n\treturn \"\"\n}\n\n// Information about the support window of a feature.\ntype FieldOptions_FeatureSupport struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The edition that this feature was first available in.  In editions\n\t// earlier than this one, the default assigned to EDITION_LEGACY will be\n\t// used, and proto files will not be able to override it.\n\tEditionIntroduced *Edition `protobuf:\"varint,1,opt,name=edition_introduced,json=editionIntroduced,enum=google.protobuf.Edition\" json:\"edition_introduced,omitempty\"`\n\t// The edition this feature becomes deprecated in.  Using this after this\n\t// edition may trigger warnings.\n\tEditionDeprecated *Edition `protobuf:\"varint,2,opt,name=edition_deprecated,json=editionDeprecated,enum=google.protobuf.Edition\" json:\"edition_deprecated,omitempty\"`\n\t// The deprecation warning text if this feature is used after the edition it\n\t// was marked deprecated in.\n\tDeprecationWarning *string `protobuf:\"bytes,3,opt,name=deprecation_warning,json=deprecationWarning\" json:\"deprecation_warning,omitempty\"`\n\t// The edition this feature is no longer available in.  In editions after\n\t// this one, the last default assigned will be used, and proto files will\n\t// not be able to override it.\n\tEditionRemoved *Edition `protobuf:\"varint,4,opt,name=edition_removed,json=editionRemoved,enum=google.protobuf.Edition\" json:\"edition_removed,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *FieldOptions_FeatureSupport) Reset() {\n\t*x = FieldOptions_FeatureSupport{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[28]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FieldOptions_FeatureSupport) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldOptions_FeatureSupport) ProtoMessage() {}\n\nfunc (x *FieldOptions_FeatureSupport) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[28]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldOptions_FeatureSupport.ProtoReflect.Descriptor instead.\nfunc (*FieldOptions_FeatureSupport) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 1}\n}\n\nfunc (x *FieldOptions_FeatureSupport) GetEditionIntroduced() Edition {\n\tif x != nil && x.EditionIntroduced != nil {\n\t\treturn *x.EditionIntroduced\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\nfunc (x *FieldOptions_FeatureSupport) GetEditionDeprecated() Edition {\n\tif x != nil && x.EditionDeprecated != nil {\n\t\treturn *x.EditionDeprecated\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\nfunc (x *FieldOptions_FeatureSupport) GetDeprecationWarning() string {\n\tif x != nil && x.DeprecationWarning != nil {\n\t\treturn *x.DeprecationWarning\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldOptions_FeatureSupport) GetEditionRemoved() Edition {\n\tif x != nil && x.EditionRemoved != nil {\n\t\treturn *x.EditionRemoved\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\n// The name of the uninterpreted option.  Each string represents a segment in\n// a dot-separated name.  is_extension is true iff a segment represents an\n// extension (denoted with parentheses in options specs in .proto files).\n// E.g.,{ [\"foo\", false], [\"bar.baz\", true], [\"moo\", false] } represents\n// \"foo.(bar.baz).moo\".\ntype UninterpretedOption_NamePart struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tNamePart      *string                `protobuf:\"bytes,1,req,name=name_part,json=namePart\" json:\"name_part,omitempty\"`\n\tIsExtension   *bool                  `protobuf:\"varint,2,req,name=is_extension,json=isExtension\" json:\"is_extension,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *UninterpretedOption_NamePart) Reset() {\n\t*x = UninterpretedOption_NamePart{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[29]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *UninterpretedOption_NamePart) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UninterpretedOption_NamePart) ProtoMessage() {}\n\nfunc (x *UninterpretedOption_NamePart) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[29]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UninterpretedOption_NamePart.ProtoReflect.Descriptor instead.\nfunc (*UninterpretedOption_NamePart) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{18, 0}\n}\n\nfunc (x *UninterpretedOption_NamePart) GetNamePart() string {\n\tif x != nil && x.NamePart != nil {\n\t\treturn *x.NamePart\n\t}\n\treturn \"\"\n}\n\nfunc (x *UninterpretedOption_NamePart) GetIsExtension() bool {\n\tif x != nil && x.IsExtension != nil {\n\t\treturn *x.IsExtension\n\t}\n\treturn false\n}\n\ntype FeatureSet_VisibilityFeature struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *FeatureSet_VisibilityFeature) Reset() {\n\t*x = FeatureSet_VisibilityFeature{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[30]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FeatureSet_VisibilityFeature) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FeatureSet_VisibilityFeature) ProtoMessage() {}\n\nfunc (x *FeatureSet_VisibilityFeature) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[30]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FeatureSet_VisibilityFeature.ProtoReflect.Descriptor instead.\nfunc (*FeatureSet_VisibilityFeature) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 0}\n}\n\n// A map from every known edition with a unique set of defaults to its\n// defaults. Not all editions may be contained here.  For a given edition,\n// the defaults at the closest matching edition ordered at or before it should\n// be used.  This field must be in strict ascending order by edition.\ntype FeatureSetDefaults_FeatureSetEditionDefault struct {\n\tstate   protoimpl.MessageState `protogen:\"open.v1\"`\n\tEdition *Edition               `protobuf:\"varint,3,opt,name=edition,enum=google.protobuf.Edition\" json:\"edition,omitempty\"`\n\t// Defaults of features that can be overridden in this edition.\n\tOverridableFeatures *FeatureSet `protobuf:\"bytes,4,opt,name=overridable_features,json=overridableFeatures\" json:\"overridable_features,omitempty\"`\n\t// Defaults of features that can't be overridden in this edition.\n\tFixedFeatures *FeatureSet `protobuf:\"bytes,5,opt,name=fixed_features,json=fixedFeatures\" json:\"fixed_features,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *FeatureSetDefaults_FeatureSetEditionDefault) Reset() {\n\t*x = FeatureSetDefaults_FeatureSetEditionDefault{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[31]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FeatureSetDefaults_FeatureSetEditionDefault) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FeatureSetDefaults_FeatureSetEditionDefault) ProtoMessage() {}\n\nfunc (x *FeatureSetDefaults_FeatureSetEditionDefault) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[31]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FeatureSetDefaults_FeatureSetEditionDefault.ProtoReflect.Descriptor instead.\nfunc (*FeatureSetDefaults_FeatureSetEditionDefault) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20, 0}\n}\n\nfunc (x *FeatureSetDefaults_FeatureSetEditionDefault) GetEdition() Edition {\n\tif x != nil && x.Edition != nil {\n\t\treturn *x.Edition\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\nfunc (x *FeatureSetDefaults_FeatureSetEditionDefault) GetOverridableFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.OverridableFeatures\n\t}\n\treturn nil\n}\n\nfunc (x *FeatureSetDefaults_FeatureSetEditionDefault) GetFixedFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.FixedFeatures\n\t}\n\treturn nil\n}\n\ntype SourceCodeInfo_Location struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Identifies which part of the FileDescriptorProto was defined at this\n\t// location.\n\t//\n\t// Each element is a field number or an index.  They form a path from\n\t// the root FileDescriptorProto to the place where the definition appears.\n\t// For example, this path:\n\t//\n\t//\t[ 4, 3, 2, 7, 1 ]\n\t//\n\t// refers to:\n\t//\n\t//\tfile.message_type(3)  // 4, 3\n\t//\t    .field(7)         // 2, 7\n\t//\t    .name()           // 1\n\t//\n\t// This is because FileDescriptorProto.message_type has field number 4:\n\t//\n\t//\trepeated DescriptorProto message_type = 4;\n\t//\n\t// and DescriptorProto.field has field number 2:\n\t//\n\t//\trepeated FieldDescriptorProto field = 2;\n\t//\n\t// and FieldDescriptorProto.name has field number 1:\n\t//\n\t//\toptional string name = 1;\n\t//\n\t// Thus, the above path gives the location of a field name.  If we removed\n\t// the last element:\n\t//\n\t//\t[ 4, 3, 2, 7 ]\n\t//\n\t// this path refers to the whole field declaration (from the beginning\n\t// of the label to the terminating semicolon).\n\tPath []int32 `protobuf:\"varint,1,rep,packed,name=path\" json:\"path,omitempty\"`\n\t// Always has exactly three or four elements: start line, start column,\n\t// end line (optional, otherwise assumed same as start line), end column.\n\t// These are packed into a single field for efficiency.  Note that line\n\t// and column numbers are zero-based -- typically you will want to add\n\t// 1 to each before displaying to a user.\n\tSpan []int32 `protobuf:\"varint,2,rep,packed,name=span\" json:\"span,omitempty\"`\n\t// If this SourceCodeInfo represents a complete declaration, these are any\n\t// comments appearing before and after the declaration which appear to be\n\t// attached to the declaration.\n\t//\n\t// A series of line comments appearing on consecutive lines, with no other\n\t// tokens appearing on those lines, will be treated as a single comment.\n\t//\n\t// leading_detached_comments will keep paragraphs of comments that appear\n\t// before (but not connected to) the current element. Each paragraph,\n\t// separated by empty lines, will be one comment element in the repeated\n\t// field.\n\t//\n\t// Only the comment content is provided; comment markers (e.g. //) are\n\t// stripped out.  For block comments, leading whitespace and an asterisk\n\t// will be stripped from the beginning of each line other than the first.\n\t// Newlines are included in the output.\n\t//\n\t// Examples:\n\t//\n\t//\toptional int32 foo = 1;  // Comment attached to foo.\n\t//\t// Comment attached to bar.\n\t//\toptional int32 bar = 2;\n\t//\n\t//\toptional string baz = 3;\n\t//\t// Comment attached to baz.\n\t//\t// Another line attached to baz.\n\t//\n\t//\t// Comment attached to moo.\n\t//\t//\n\t//\t// Another line attached to moo.\n\t//\toptional double moo = 4;\n\t//\n\t//\t// Detached comment for corge. This is not leading or trailing comments\n\t//\t// to moo or corge because there are blank lines separating it from\n\t//\t// both.\n\t//\n\t//\t// Detached comment for corge paragraph 2.\n\t//\n\t//\toptional string corge = 5;\n\t//\t/* Block comment attached\n\t//\t * to corge.  Leading asterisks\n\t//\t * will be removed. */\n\t//\t/* Block comment attached to\n\t//\t * grault. */\n\t//\toptional int32 grault = 6;\n\t//\n\t//\t// ignored detached comments.\n\tLeadingComments         *string  `protobuf:\"bytes,3,opt,name=leading_comments,json=leadingComments\" json:\"leading_comments,omitempty\"`\n\tTrailingComments        *string  `protobuf:\"bytes,4,opt,name=trailing_comments,json=trailingComments\" json:\"trailing_comments,omitempty\"`\n\tLeadingDetachedComments []string `protobuf:\"bytes,6,rep,name=leading_detached_comments,json=leadingDetachedComments\" json:\"leading_detached_comments,omitempty\"`\n\tunknownFields           protoimpl.UnknownFields\n\tsizeCache               protoimpl.SizeCache\n}\n\nfunc (x *SourceCodeInfo_Location) Reset() {\n\t*x = SourceCodeInfo_Location{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[32]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SourceCodeInfo_Location) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SourceCodeInfo_Location) ProtoMessage() {}\n\nfunc (x *SourceCodeInfo_Location) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[32]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SourceCodeInfo_Location.ProtoReflect.Descriptor instead.\nfunc (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{21, 0}\n}\n\nfunc (x *SourceCodeInfo_Location) GetPath() []int32 {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn nil\n}\n\nfunc (x *SourceCodeInfo_Location) GetSpan() []int32 {\n\tif x != nil {\n\t\treturn x.Span\n\t}\n\treturn nil\n}\n\nfunc (x *SourceCodeInfo_Location) GetLeadingComments() string {\n\tif x != nil && x.LeadingComments != nil {\n\t\treturn *x.LeadingComments\n\t}\n\treturn \"\"\n}\n\nfunc (x *SourceCodeInfo_Location) GetTrailingComments() string {\n\tif x != nil && x.TrailingComments != nil {\n\t\treturn *x.TrailingComments\n\t}\n\treturn \"\"\n}\n\nfunc (x *SourceCodeInfo_Location) GetLeadingDetachedComments() []string {\n\tif x != nil {\n\t\treturn x.LeadingDetachedComments\n\t}\n\treturn nil\n}\n\ntype GeneratedCodeInfo_Annotation struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Identifies the element in the original source .proto file. This field\n\t// is formatted the same as SourceCodeInfo.Location.path.\n\tPath []int32 `protobuf:\"varint,1,rep,packed,name=path\" json:\"path,omitempty\"`\n\t// Identifies the filesystem path to the original source .proto.\n\tSourceFile *string `protobuf:\"bytes,2,opt,name=source_file,json=sourceFile\" json:\"source_file,omitempty\"`\n\t// Identifies the starting offset in bytes in the generated code\n\t// that relates to the identified object.\n\tBegin *int32 `protobuf:\"varint,3,opt,name=begin\" json:\"begin,omitempty\"`\n\t// Identifies the ending offset in bytes in the generated code that\n\t// relates to the identified object. The end offset should be one past\n\t// the last relevant byte (so the length of the text = end - begin).\n\tEnd           *int32                                 `protobuf:\"varint,4,opt,name=end\" json:\"end,omitempty\"`\n\tSemantic      *GeneratedCodeInfo_Annotation_Semantic `protobuf:\"varint,5,opt,name=semantic,enum=google.protobuf.GeneratedCodeInfo_Annotation_Semantic\" json:\"semantic,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) Reset() {\n\t*x = GeneratedCodeInfo_Annotation{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[33]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GeneratedCodeInfo_Annotation) ProtoMessage() {}\n\nfunc (x *GeneratedCodeInfo_Annotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[33]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GeneratedCodeInfo_Annotation.ProtoReflect.Descriptor instead.\nfunc (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{22, 0}\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetPath() []int32 {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn nil\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetSourceFile() string {\n\tif x != nil && x.SourceFile != nil {\n\t\treturn *x.SourceFile\n\t}\n\treturn \"\"\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetBegin() int32 {\n\tif x != nil && x.Begin != nil {\n\t\treturn *x.Begin\n\t}\n\treturn 0\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetEnd() int32 {\n\tif x != nil && x.End != nil {\n\t\treturn *x.End\n\t}\n\treturn 0\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetSemantic() GeneratedCodeInfo_Annotation_Semantic {\n\tif x != nil && x.Semantic != nil {\n\t\treturn *x.Semantic\n\t}\n\treturn GeneratedCodeInfo_Annotation_NONE\n}\n\nvar File_google_protobuf_descriptor_proto protoreflect.FileDescriptor\n\nconst file_google_protobuf_descriptor_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\" google/protobuf/descriptor.proto\\x12\\x0fgoogle.protobuf\\\"[\\n\" +\n\t\"\\x11FileDescriptorSet\\x128\\n\" +\n\t\"\\x04file\\x18\\x01 \\x03(\\v2$.google.protobuf.FileDescriptorProtoR\\x04file*\\f\\b\\x80\\xec\\xca\\xff\\x01\\x10\\x81\\xec\\xca\\xff\\x01\\\"\\xc5\\x05\\n\" +\n\t\"\\x13FileDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12\\x18\\n\" +\n\t\"\\apackage\\x18\\x02 \\x01(\\tR\\apackage\\x12\\x1e\\n\" +\n\t\"\\n\" +\n\t\"dependency\\x18\\x03 \\x03(\\tR\\n\" +\n\t\"dependency\\x12+\\n\" +\n\t\"\\x11public_dependency\\x18\\n\" +\n\t\" \\x03(\\x05R\\x10publicDependency\\x12'\\n\" +\n\t\"\\x0fweak_dependency\\x18\\v \\x03(\\x05R\\x0eweakDependency\\x12+\\n\" +\n\t\"\\x11option_dependency\\x18\\x0f \\x03(\\tR\\x10optionDependency\\x12C\\n\" +\n\t\"\\fmessage_type\\x18\\x04 \\x03(\\v2 .google.protobuf.DescriptorProtoR\\vmessageType\\x12A\\n\" +\n\t\"\\tenum_type\\x18\\x05 \\x03(\\v2$.google.protobuf.EnumDescriptorProtoR\\benumType\\x12A\\n\" +\n\t\"\\aservice\\x18\\x06 \\x03(\\v2'.google.protobuf.ServiceDescriptorProtoR\\aservice\\x12C\\n\" +\n\t\"\\textension\\x18\\a \\x03(\\v2%.google.protobuf.FieldDescriptorProtoR\\textension\\x126\\n\" +\n\t\"\\aoptions\\x18\\b \\x01(\\v2\\x1c.google.protobuf.FileOptionsR\\aoptions\\x12I\\n\" +\n\t\"\\x10source_code_info\\x18\\t \\x01(\\v2\\x1f.google.protobuf.SourceCodeInfoR\\x0esourceCodeInfo\\x12\\x16\\n\" +\n\t\"\\x06syntax\\x18\\f \\x01(\\tR\\x06syntax\\x122\\n\" +\n\t\"\\aedition\\x18\\x0e \\x01(\\x0e2\\x18.google.protobuf.EditionR\\aedition\\\"\\xfc\\x06\\n\" +\n\t\"\\x0fDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12;\\n\" +\n\t\"\\x05field\\x18\\x02 \\x03(\\v2%.google.protobuf.FieldDescriptorProtoR\\x05field\\x12C\\n\" +\n\t\"\\textension\\x18\\x06 \\x03(\\v2%.google.protobuf.FieldDescriptorProtoR\\textension\\x12A\\n\" +\n\t\"\\vnested_type\\x18\\x03 \\x03(\\v2 .google.protobuf.DescriptorProtoR\\n\" +\n\t\"nestedType\\x12A\\n\" +\n\t\"\\tenum_type\\x18\\x04 \\x03(\\v2$.google.protobuf.EnumDescriptorProtoR\\benumType\\x12X\\n\" +\n\t\"\\x0fextension_range\\x18\\x05 \\x03(\\v2/.google.protobuf.DescriptorProto.ExtensionRangeR\\x0eextensionRange\\x12D\\n\" +\n\t\"\\n\" +\n\t\"oneof_decl\\x18\\b \\x03(\\v2%.google.protobuf.OneofDescriptorProtoR\\toneofDecl\\x129\\n\" +\n\t\"\\aoptions\\x18\\a \\x01(\\v2\\x1f.google.protobuf.MessageOptionsR\\aoptions\\x12U\\n\" +\n\t\"\\x0ereserved_range\\x18\\t \\x03(\\v2..google.protobuf.DescriptorProto.ReservedRangeR\\rreservedRange\\x12#\\n\" +\n\t\"\\rreserved_name\\x18\\n\" +\n\t\" \\x03(\\tR\\freservedName\\x12A\\n\" +\n\t\"\\n\" +\n\t\"visibility\\x18\\v \\x01(\\x0e2!.google.protobuf.SymbolVisibilityR\\n\" +\n\t\"visibility\\x1az\\n\" +\n\t\"\\x0eExtensionRange\\x12\\x14\\n\" +\n\t\"\\x05start\\x18\\x01 \\x01(\\x05R\\x05start\\x12\\x10\\n\" +\n\t\"\\x03end\\x18\\x02 \\x01(\\x05R\\x03end\\x12@\\n\" +\n\t\"\\aoptions\\x18\\x03 \\x01(\\v2&.google.protobuf.ExtensionRangeOptionsR\\aoptions\\x1a7\\n\" +\n\t\"\\rReservedRange\\x12\\x14\\n\" +\n\t\"\\x05start\\x18\\x01 \\x01(\\x05R\\x05start\\x12\\x10\\n\" +\n\t\"\\x03end\\x18\\x02 \\x01(\\x05R\\x03end\\\"\\xcc\\x04\\n\" +\n\t\"\\x15ExtensionRangeOptions\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption\\x12Y\\n\" +\n\t\"\\vdeclaration\\x18\\x02 \\x03(\\v22.google.protobuf.ExtensionRangeOptions.DeclarationB\\x03\\x88\\x01\\x02R\\vdeclaration\\x127\\n\" +\n\t\"\\bfeatures\\x182 \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12m\\n\" +\n\t\"\\fverification\\x18\\x03 \\x01(\\x0e28.google.protobuf.ExtensionRangeOptions.VerificationState:\\n\" +\n\t\"UNVERIFIEDB\\x03\\x88\\x01\\x02R\\fverification\\x1a\\x94\\x01\\n\" +\n\t\"\\vDeclaration\\x12\\x16\\n\" +\n\t\"\\x06number\\x18\\x01 \\x01(\\x05R\\x06number\\x12\\x1b\\n\" +\n\t\"\\tfull_name\\x18\\x02 \\x01(\\tR\\bfullName\\x12\\x12\\n\" +\n\t\"\\x04type\\x18\\x03 \\x01(\\tR\\x04type\\x12\\x1a\\n\" +\n\t\"\\breserved\\x18\\x05 \\x01(\\bR\\breserved\\x12\\x1a\\n\" +\n\t\"\\brepeated\\x18\\x06 \\x01(\\bR\\brepeatedJ\\x04\\b\\x04\\x10\\x05\\\"4\\n\" +\n\t\"\\x11VerificationState\\x12\\x0f\\n\" +\n\t\"\\vDECLARATION\\x10\\x00\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"UNVERIFIED\\x10\\x01*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02\\\"\\xc1\\x06\\n\" +\n\t\"\\x14FieldDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12\\x16\\n\" +\n\t\"\\x06number\\x18\\x03 \\x01(\\x05R\\x06number\\x12A\\n\" +\n\t\"\\x05label\\x18\\x04 \\x01(\\x0e2+.google.protobuf.FieldDescriptorProto.LabelR\\x05label\\x12>\\n\" +\n\t\"\\x04type\\x18\\x05 \\x01(\\x0e2*.google.protobuf.FieldDescriptorProto.TypeR\\x04type\\x12\\x1b\\n\" +\n\t\"\\ttype_name\\x18\\x06 \\x01(\\tR\\btypeName\\x12\\x1a\\n\" +\n\t\"\\bextendee\\x18\\x02 \\x01(\\tR\\bextendee\\x12#\\n\" +\n\t\"\\rdefault_value\\x18\\a \\x01(\\tR\\fdefaultValue\\x12\\x1f\\n\" +\n\t\"\\voneof_index\\x18\\t \\x01(\\x05R\\n\" +\n\t\"oneofIndex\\x12\\x1b\\n\" +\n\t\"\\tjson_name\\x18\\n\" +\n\t\" \\x01(\\tR\\bjsonName\\x127\\n\" +\n\t\"\\aoptions\\x18\\b \\x01(\\v2\\x1d.google.protobuf.FieldOptionsR\\aoptions\\x12'\\n\" +\n\t\"\\x0fproto3_optional\\x18\\x11 \\x01(\\bR\\x0eproto3Optional\\\"\\xb6\\x02\\n\" +\n\t\"\\x04Type\\x12\\x0f\\n\" +\n\t\"\\vTYPE_DOUBLE\\x10\\x01\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"TYPE_FLOAT\\x10\\x02\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"TYPE_INT64\\x10\\x03\\x12\\x0f\\n\" +\n\t\"\\vTYPE_UINT64\\x10\\x04\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"TYPE_INT32\\x10\\x05\\x12\\x10\\n\" +\n\t\"\\fTYPE_FIXED64\\x10\\x06\\x12\\x10\\n\" +\n\t\"\\fTYPE_FIXED32\\x10\\a\\x12\\r\\n\" +\n\t\"\\tTYPE_BOOL\\x10\\b\\x12\\x0f\\n\" +\n\t\"\\vTYPE_STRING\\x10\\t\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"TYPE_GROUP\\x10\\n\" +\n\t\"\\x12\\x10\\n\" +\n\t\"\\fTYPE_MESSAGE\\x10\\v\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"TYPE_BYTES\\x10\\f\\x12\\x0f\\n\" +\n\t\"\\vTYPE_UINT32\\x10\\r\\x12\\r\\n\" +\n\t\"\\tTYPE_ENUM\\x10\\x0e\\x12\\x11\\n\" +\n\t\"\\rTYPE_SFIXED32\\x10\\x0f\\x12\\x11\\n\" +\n\t\"\\rTYPE_SFIXED64\\x10\\x10\\x12\\x0f\\n\" +\n\t\"\\vTYPE_SINT32\\x10\\x11\\x12\\x0f\\n\" +\n\t\"\\vTYPE_SINT64\\x10\\x12\\\"C\\n\" +\n\t\"\\x05Label\\x12\\x12\\n\" +\n\t\"\\x0eLABEL_OPTIONAL\\x10\\x01\\x12\\x12\\n\" +\n\t\"\\x0eLABEL_REPEATED\\x10\\x03\\x12\\x12\\n\" +\n\t\"\\x0eLABEL_REQUIRED\\x10\\x02\\\"c\\n\" +\n\t\"\\x14OneofDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x127\\n\" +\n\t\"\\aoptions\\x18\\x02 \\x01(\\v2\\x1d.google.protobuf.OneofOptionsR\\aoptions\\\"\\xa6\\x03\\n\" +\n\t\"\\x13EnumDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12?\\n\" +\n\t\"\\x05value\\x18\\x02 \\x03(\\v2).google.protobuf.EnumValueDescriptorProtoR\\x05value\\x126\\n\" +\n\t\"\\aoptions\\x18\\x03 \\x01(\\v2\\x1c.google.protobuf.EnumOptionsR\\aoptions\\x12]\\n\" +\n\t\"\\x0ereserved_range\\x18\\x04 \\x03(\\v26.google.protobuf.EnumDescriptorProto.EnumReservedRangeR\\rreservedRange\\x12#\\n\" +\n\t\"\\rreserved_name\\x18\\x05 \\x03(\\tR\\freservedName\\x12A\\n\" +\n\t\"\\n\" +\n\t\"visibility\\x18\\x06 \\x01(\\x0e2!.google.protobuf.SymbolVisibilityR\\n\" +\n\t\"visibility\\x1a;\\n\" +\n\t\"\\x11EnumReservedRange\\x12\\x14\\n\" +\n\t\"\\x05start\\x18\\x01 \\x01(\\x05R\\x05start\\x12\\x10\\n\" +\n\t\"\\x03end\\x18\\x02 \\x01(\\x05R\\x03end\\\"\\x83\\x01\\n\" +\n\t\"\\x18EnumValueDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12\\x16\\n\" +\n\t\"\\x06number\\x18\\x02 \\x01(\\x05R\\x06number\\x12;\\n\" +\n\t\"\\aoptions\\x18\\x03 \\x01(\\v2!.google.protobuf.EnumValueOptionsR\\aoptions\\\"\\xb5\\x01\\n\" +\n\t\"\\x16ServiceDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12>\\n\" +\n\t\"\\x06method\\x18\\x02 \\x03(\\v2&.google.protobuf.MethodDescriptorProtoR\\x06method\\x129\\n\" +\n\t\"\\aoptions\\x18\\x03 \\x01(\\v2\\x1f.google.protobuf.ServiceOptionsR\\aoptionsJ\\x04\\b\\x04\\x10\\x05R\\x06stream\\\"\\x89\\x02\\n\" +\n\t\"\\x15MethodDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12\\x1d\\n\" +\n\t\"\\n\" +\n\t\"input_type\\x18\\x02 \\x01(\\tR\\tinputType\\x12\\x1f\\n\" +\n\t\"\\voutput_type\\x18\\x03 \\x01(\\tR\\n\" +\n\t\"outputType\\x128\\n\" +\n\t\"\\aoptions\\x18\\x04 \\x01(\\v2\\x1e.google.protobuf.MethodOptionsR\\aoptions\\x120\\n\" +\n\t\"\\x10client_streaming\\x18\\x05 \\x01(\\b:\\x05falseR\\x0fclientStreaming\\x120\\n\" +\n\t\"\\x10server_streaming\\x18\\x06 \\x01(\\b:\\x05falseR\\x0fserverStreaming\\\"\\xad\\t\\n\" +\n\t\"\\vFileOptions\\x12!\\n\" +\n\t\"\\fjava_package\\x18\\x01 \\x01(\\tR\\vjavaPackage\\x120\\n\" +\n\t\"\\x14java_outer_classname\\x18\\b \\x01(\\tR\\x12javaOuterClassname\\x125\\n\" +\n\t\"\\x13java_multiple_files\\x18\\n\" +\n\t\" \\x01(\\b:\\x05falseR\\x11javaMultipleFiles\\x12D\\n\" +\n\t\"\\x1djava_generate_equals_and_hash\\x18\\x14 \\x01(\\bB\\x02\\x18\\x01R\\x19javaGenerateEqualsAndHash\\x12:\\n\" +\n\t\"\\x16java_string_check_utf8\\x18\\x1b \\x01(\\b:\\x05falseR\\x13javaStringCheckUtf8\\x12S\\n\" +\n\t\"\\foptimize_for\\x18\\t \\x01(\\x0e2).google.protobuf.FileOptions.OptimizeMode:\\x05SPEEDR\\voptimizeFor\\x12\\x1d\\n\" +\n\t\"\\n\" +\n\t\"go_package\\x18\\v \\x01(\\tR\\tgoPackage\\x125\\n\" +\n\t\"\\x13cc_generic_services\\x18\\x10 \\x01(\\b:\\x05falseR\\x11ccGenericServices\\x129\\n\" +\n\t\"\\x15java_generic_services\\x18\\x11 \\x01(\\b:\\x05falseR\\x13javaGenericServices\\x125\\n\" +\n\t\"\\x13py_generic_services\\x18\\x12 \\x01(\\b:\\x05falseR\\x11pyGenericServices\\x12%\\n\" +\n\t\"\\n\" +\n\t\"deprecated\\x18\\x17 \\x01(\\b:\\x05falseR\\n\" +\n\t\"deprecated\\x12.\\n\" +\n\t\"\\x10cc_enable_arenas\\x18\\x1f \\x01(\\b:\\x04trueR\\x0eccEnableArenas\\x12*\\n\" +\n\t\"\\x11objc_class_prefix\\x18$ \\x01(\\tR\\x0fobjcClassPrefix\\x12)\\n\" +\n\t\"\\x10csharp_namespace\\x18% \\x01(\\tR\\x0fcsharpNamespace\\x12!\\n\" +\n\t\"\\fswift_prefix\\x18' \\x01(\\tR\\vswiftPrefix\\x12(\\n\" +\n\t\"\\x10php_class_prefix\\x18( \\x01(\\tR\\x0ephpClassPrefix\\x12#\\n\" +\n\t\"\\rphp_namespace\\x18) \\x01(\\tR\\fphpNamespace\\x124\\n\" +\n\t\"\\x16php_metadata_namespace\\x18, \\x01(\\tR\\x14phpMetadataNamespace\\x12!\\n\" +\n\t\"\\fruby_package\\x18- \\x01(\\tR\\vrubyPackage\\x127\\n\" +\n\t\"\\bfeatures\\x182 \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption\\\":\\n\" +\n\t\"\\fOptimizeMode\\x12\\t\\n\" +\n\t\"\\x05SPEED\\x10\\x01\\x12\\r\\n\" +\n\t\"\\tCODE_SIZE\\x10\\x02\\x12\\x10\\n\" +\n\t\"\\fLITE_RUNTIME\\x10\\x03*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02J\\x04\\b*\\x10+J\\x04\\b&\\x10'R\\x14php_generic_services\\\"\\xf4\\x03\\n\" +\n\t\"\\x0eMessageOptions\\x12<\\n\" +\n\t\"\\x17message_set_wire_format\\x18\\x01 \\x01(\\b:\\x05falseR\\x14messageSetWireFormat\\x12L\\n\" +\n\t\"\\x1fno_standard_descriptor_accessor\\x18\\x02 \\x01(\\b:\\x05falseR\\x1cnoStandardDescriptorAccessor\\x12%\\n\" +\n\t\"\\n\" +\n\t\"deprecated\\x18\\x03 \\x01(\\b:\\x05falseR\\n\" +\n\t\"deprecated\\x12\\x1b\\n\" +\n\t\"\\tmap_entry\\x18\\a \\x01(\\bR\\bmapEntry\\x12V\\n\" +\n\t\"&deprecated_legacy_json_field_conflicts\\x18\\v \\x01(\\bB\\x02\\x18\\x01R\\\"deprecatedLegacyJsonFieldConflicts\\x127\\n\" +\n\t\"\\bfeatures\\x18\\f \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02J\\x04\\b\\x04\\x10\\x05J\\x04\\b\\x05\\x10\\x06J\\x04\\b\\x06\\x10\\aJ\\x04\\b\\b\\x10\\tJ\\x04\\b\\t\\x10\\n\" +\n\t\"\\\"\\xa1\\r\\n\" +\n\t\"\\fFieldOptions\\x12A\\n\" +\n\t\"\\x05ctype\\x18\\x01 \\x01(\\x0e2#.google.protobuf.FieldOptions.CType:\\x06STRINGR\\x05ctype\\x12\\x16\\n\" +\n\t\"\\x06packed\\x18\\x02 \\x01(\\bR\\x06packed\\x12G\\n\" +\n\t\"\\x06jstype\\x18\\x06 \\x01(\\x0e2$.google.protobuf.FieldOptions.JSType:\\tJS_NORMALR\\x06jstype\\x12\\x19\\n\" +\n\t\"\\x04lazy\\x18\\x05 \\x01(\\b:\\x05falseR\\x04lazy\\x12.\\n\" +\n\t\"\\x0funverified_lazy\\x18\\x0f \\x01(\\b:\\x05falseR\\x0eunverifiedLazy\\x12%\\n\" +\n\t\"\\n\" +\n\t\"deprecated\\x18\\x03 \\x01(\\b:\\x05falseR\\n\" +\n\t\"deprecated\\x12\\x1d\\n\" +\n\t\"\\x04weak\\x18\\n\" +\n\t\" \\x01(\\b:\\x05falseB\\x02\\x18\\x01R\\x04weak\\x12(\\n\" +\n\t\"\\fdebug_redact\\x18\\x10 \\x01(\\b:\\x05falseR\\vdebugRedact\\x12K\\n\" +\n\t\"\\tretention\\x18\\x11 \\x01(\\x0e2-.google.protobuf.FieldOptions.OptionRetentionR\\tretention\\x12H\\n\" +\n\t\"\\atargets\\x18\\x13 \\x03(\\x0e2..google.protobuf.FieldOptions.OptionTargetTypeR\\atargets\\x12W\\n\" +\n\t\"\\x10edition_defaults\\x18\\x14 \\x03(\\v2,.google.protobuf.FieldOptions.EditionDefaultR\\x0feditionDefaults\\x127\\n\" +\n\t\"\\bfeatures\\x18\\x15 \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12U\\n\" +\n\t\"\\x0ffeature_support\\x18\\x16 \\x01(\\v2,.google.protobuf.FieldOptions.FeatureSupportR\\x0efeatureSupport\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption\\x1aZ\\n\" +\n\t\"\\x0eEditionDefault\\x122\\n\" +\n\t\"\\aedition\\x18\\x03 \\x01(\\x0e2\\x18.google.protobuf.EditionR\\aedition\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\tR\\x05value\\x1a\\x96\\x02\\n\" +\n\t\"\\x0eFeatureSupport\\x12G\\n\" +\n\t\"\\x12edition_introduced\\x18\\x01 \\x01(\\x0e2\\x18.google.protobuf.EditionR\\x11editionIntroduced\\x12G\\n\" +\n\t\"\\x12edition_deprecated\\x18\\x02 \\x01(\\x0e2\\x18.google.protobuf.EditionR\\x11editionDeprecated\\x12/\\n\" +\n\t\"\\x13deprecation_warning\\x18\\x03 \\x01(\\tR\\x12deprecationWarning\\x12A\\n\" +\n\t\"\\x0fedition_removed\\x18\\x04 \\x01(\\x0e2\\x18.google.protobuf.EditionR\\x0eeditionRemoved\\\"/\\n\" +\n\t\"\\x05CType\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06STRING\\x10\\x00\\x12\\b\\n\" +\n\t\"\\x04CORD\\x10\\x01\\x12\\x10\\n\" +\n\t\"\\fSTRING_PIECE\\x10\\x02\\\"5\\n\" +\n\t\"\\x06JSType\\x12\\r\\n\" +\n\t\"\\tJS_NORMAL\\x10\\x00\\x12\\r\\n\" +\n\t\"\\tJS_STRING\\x10\\x01\\x12\\r\\n\" +\n\t\"\\tJS_NUMBER\\x10\\x02\\\"U\\n\" +\n\t\"\\x0fOptionRetention\\x12\\x15\\n\" +\n\t\"\\x11RETENTION_UNKNOWN\\x10\\x00\\x12\\x15\\n\" +\n\t\"\\x11RETENTION_RUNTIME\\x10\\x01\\x12\\x14\\n\" +\n\t\"\\x10RETENTION_SOURCE\\x10\\x02\\\"\\x8c\\x02\\n\" +\n\t\"\\x10OptionTargetType\\x12\\x17\\n\" +\n\t\"\\x13TARGET_TYPE_UNKNOWN\\x10\\x00\\x12\\x14\\n\" +\n\t\"\\x10TARGET_TYPE_FILE\\x10\\x01\\x12\\x1f\\n\" +\n\t\"\\x1bTARGET_TYPE_EXTENSION_RANGE\\x10\\x02\\x12\\x17\\n\" +\n\t\"\\x13TARGET_TYPE_MESSAGE\\x10\\x03\\x12\\x15\\n\" +\n\t\"\\x11TARGET_TYPE_FIELD\\x10\\x04\\x12\\x15\\n\" +\n\t\"\\x11TARGET_TYPE_ONEOF\\x10\\x05\\x12\\x14\\n\" +\n\t\"\\x10TARGET_TYPE_ENUM\\x10\\x06\\x12\\x1a\\n\" +\n\t\"\\x16TARGET_TYPE_ENUM_ENTRY\\x10\\a\\x12\\x17\\n\" +\n\t\"\\x13TARGET_TYPE_SERVICE\\x10\\b\\x12\\x16\\n\" +\n\t\"\\x12TARGET_TYPE_METHOD\\x10\\t*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02J\\x04\\b\\x04\\x10\\x05J\\x04\\b\\x12\\x10\\x13\\\"\\xac\\x01\\n\" +\n\t\"\\fOneofOptions\\x127\\n\" +\n\t\"\\bfeatures\\x18\\x01 \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02\\\"\\xd1\\x02\\n\" +\n\t\"\\vEnumOptions\\x12\\x1f\\n\" +\n\t\"\\vallow_alias\\x18\\x02 \\x01(\\bR\\n\" +\n\t\"allowAlias\\x12%\\n\" +\n\t\"\\n\" +\n\t\"deprecated\\x18\\x03 \\x01(\\b:\\x05falseR\\n\" +\n\t\"deprecated\\x12V\\n\" +\n\t\"&deprecated_legacy_json_field_conflicts\\x18\\x06 \\x01(\\bB\\x02\\x18\\x01R\\\"deprecatedLegacyJsonFieldConflicts\\x127\\n\" +\n\t\"\\bfeatures\\x18\\a \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02J\\x04\\b\\x05\\x10\\x06\\\"\\xd8\\x02\\n\" +\n\t\"\\x10EnumValueOptions\\x12%\\n\" +\n\t\"\\n\" +\n\t\"deprecated\\x18\\x01 \\x01(\\b:\\x05falseR\\n\" +\n\t\"deprecated\\x127\\n\" +\n\t\"\\bfeatures\\x18\\x02 \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12(\\n\" +\n\t\"\\fdebug_redact\\x18\\x03 \\x01(\\b:\\x05falseR\\vdebugRedact\\x12U\\n\" +\n\t\"\\x0ffeature_support\\x18\\x04 \\x01(\\v2,.google.protobuf.FieldOptions.FeatureSupportR\\x0efeatureSupport\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02\\\"\\xd5\\x01\\n\" +\n\t\"\\x0eServiceOptions\\x127\\n\" +\n\t\"\\bfeatures\\x18\\\" \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12%\\n\" +\n\t\"\\n\" +\n\t\"deprecated\\x18! \\x01(\\b:\\x05falseR\\n\" +\n\t\"deprecated\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02\\\"\\x99\\x03\\n\" +\n\t\"\\rMethodOptions\\x12%\\n\" +\n\t\"\\n\" +\n\t\"deprecated\\x18! \\x01(\\b:\\x05falseR\\n\" +\n\t\"deprecated\\x12q\\n\" +\n\t\"\\x11idempotency_level\\x18\\\" \\x01(\\x0e2/.google.protobuf.MethodOptions.IdempotencyLevel:\\x13IDEMPOTENCY_UNKNOWNR\\x10idempotencyLevel\\x127\\n\" +\n\t\"\\bfeatures\\x18# \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption\\\"P\\n\" +\n\t\"\\x10IdempotencyLevel\\x12\\x17\\n\" +\n\t\"\\x13IDEMPOTENCY_UNKNOWN\\x10\\x00\\x12\\x13\\n\" +\n\t\"\\x0fNO_SIDE_EFFECTS\\x10\\x01\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"IDEMPOTENT\\x10\\x02*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02\\\"\\x9a\\x03\\n\" +\n\t\"\\x13UninterpretedOption\\x12A\\n\" +\n\t\"\\x04name\\x18\\x02 \\x03(\\v2-.google.protobuf.UninterpretedOption.NamePartR\\x04name\\x12)\\n\" +\n\t\"\\x10identifier_value\\x18\\x03 \\x01(\\tR\\x0fidentifierValue\\x12,\\n\" +\n\t\"\\x12positive_int_value\\x18\\x04 \\x01(\\x04R\\x10positiveIntValue\\x12,\\n\" +\n\t\"\\x12negative_int_value\\x18\\x05 \\x01(\\x03R\\x10negativeIntValue\\x12!\\n\" +\n\t\"\\fdouble_value\\x18\\x06 \\x01(\\x01R\\vdoubleValue\\x12!\\n\" +\n\t\"\\fstring_value\\x18\\a \\x01(\\fR\\vstringValue\\x12'\\n\" +\n\t\"\\x0faggregate_value\\x18\\b \\x01(\\tR\\x0eaggregateValue\\x1aJ\\n\" +\n\t\"\\bNamePart\\x12\\x1b\\n\" +\n\t\"\\tname_part\\x18\\x01 \\x02(\\tR\\bnamePart\\x12!\\n\" +\n\t\"\\fis_extension\\x18\\x02 \\x02(\\bR\\visExtension\\\"\\x8e\\x0f\\n\" +\n\t\"\\n\" +\n\t\"FeatureSet\\x12\\x91\\x01\\n\" +\n\t\"\\x0efield_presence\\x18\\x01 \\x01(\\x0e2).google.protobuf.FeatureSet.FieldPresenceB?\\x88\\x01\\x01\\x98\\x01\\x04\\x98\\x01\\x01\\xa2\\x01\\r\\x12\\bEXPLICIT\\x18\\x84\\a\\xa2\\x01\\r\\x12\\bIMPLICIT\\x18\\xe7\\a\\xa2\\x01\\r\\x12\\bEXPLICIT\\x18\\xe8\\a\\xb2\\x01\\x03\\b\\xe8\\aR\\rfieldPresence\\x12l\\n\" +\n\t\"\\tenum_type\\x18\\x02 \\x01(\\x0e2$.google.protobuf.FeatureSet.EnumTypeB)\\x88\\x01\\x01\\x98\\x01\\x06\\x98\\x01\\x01\\xa2\\x01\\v\\x12\\x06CLOSED\\x18\\x84\\a\\xa2\\x01\\t\\x12\\x04OPEN\\x18\\xe7\\a\\xb2\\x01\\x03\\b\\xe8\\aR\\benumType\\x12\\x98\\x01\\n\" +\n\t\"\\x17repeated_field_encoding\\x18\\x03 \\x01(\\x0e21.google.protobuf.FeatureSet.RepeatedFieldEncodingB-\\x88\\x01\\x01\\x98\\x01\\x04\\x98\\x01\\x01\\xa2\\x01\\r\\x12\\bEXPANDED\\x18\\x84\\a\\xa2\\x01\\v\\x12\\x06PACKED\\x18\\xe7\\a\\xb2\\x01\\x03\\b\\xe8\\aR\\x15repeatedFieldEncoding\\x12~\\n\" +\n\t\"\\x0futf8_validation\\x18\\x04 \\x01(\\x0e2*.google.protobuf.FeatureSet.Utf8ValidationB)\\x88\\x01\\x01\\x98\\x01\\x04\\x98\\x01\\x01\\xa2\\x01\\t\\x12\\x04NONE\\x18\\x84\\a\\xa2\\x01\\v\\x12\\x06VERIFY\\x18\\xe7\\a\\xb2\\x01\\x03\\b\\xe8\\aR\\x0eutf8Validation\\x12~\\n\" +\n\t\"\\x10message_encoding\\x18\\x05 \\x01(\\x0e2+.google.protobuf.FeatureSet.MessageEncodingB&\\x88\\x01\\x01\\x98\\x01\\x04\\x98\\x01\\x01\\xa2\\x01\\x14\\x12\\x0fLENGTH_PREFIXED\\x18\\x84\\a\\xb2\\x01\\x03\\b\\xe8\\aR\\x0fmessageEncoding\\x12\\x82\\x01\\n\" +\n\t\"\\vjson_format\\x18\\x06 \\x01(\\x0e2&.google.protobuf.FeatureSet.JsonFormatB9\\x88\\x01\\x01\\x98\\x01\\x03\\x98\\x01\\x06\\x98\\x01\\x01\\xa2\\x01\\x17\\x12\\x12LEGACY_BEST_EFFORT\\x18\\x84\\a\\xa2\\x01\\n\" +\n\t\"\\x12\\x05ALLOW\\x18\\xe7\\a\\xb2\\x01\\x03\\b\\xe8\\aR\\n\" +\n\t\"jsonFormat\\x12\\xab\\x01\\n\" +\n\t\"\\x14enforce_naming_style\\x18\\a \\x01(\\x0e2..google.protobuf.FeatureSet.EnforceNamingStyleBI\\x88\\x01\\x02\\x98\\x01\\x01\\x98\\x01\\x02\\x98\\x01\\x03\\x98\\x01\\x04\\x98\\x01\\x05\\x98\\x01\\x06\\x98\\x01\\a\\x98\\x01\\b\\x98\\x01\\t\\xa2\\x01\\x11\\x12\\fSTYLE_LEGACY\\x18\\x84\\a\\xa2\\x01\\x0e\\x12\\tSTYLE2024\\x18\\xe9\\a\\xb2\\x01\\x03\\b\\xe9\\aR\\x12enforceNamingStyle\\x12\\xb9\\x01\\n\" +\n\t\"\\x19default_symbol_visibility\\x18\\b \\x01(\\x0e2E.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibilityB6\\x88\\x01\\x02\\x98\\x01\\x01\\xa2\\x01\\x0f\\x12\\n\" +\n\t\"EXPORT_ALL\\x18\\x84\\a\\xa2\\x01\\x15\\x12\\x10EXPORT_TOP_LEVEL\\x18\\xe9\\a\\xb2\\x01\\x03\\b\\xe9\\aR\\x17defaultSymbolVisibility\\x1a\\xa1\\x01\\n\" +\n\t\"\\x11VisibilityFeature\\\"\\x81\\x01\\n\" +\n\t\"\\x17DefaultSymbolVisibility\\x12%\\n\" +\n\t\"!DEFAULT_SYMBOL_VISIBILITY_UNKNOWN\\x10\\x00\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"EXPORT_ALL\\x10\\x01\\x12\\x14\\n\" +\n\t\"\\x10EXPORT_TOP_LEVEL\\x10\\x02\\x12\\r\\n\" +\n\t\"\\tLOCAL_ALL\\x10\\x03\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06STRICT\\x10\\x04J\\b\\b\\x01\\x10\\x80\\x80\\x80\\x80\\x02\\\"\\\\\\n\" +\n\t\"\\rFieldPresence\\x12\\x1a\\n\" +\n\t\"\\x16FIELD_PRESENCE_UNKNOWN\\x10\\x00\\x12\\f\\n\" +\n\t\"\\bEXPLICIT\\x10\\x01\\x12\\f\\n\" +\n\t\"\\bIMPLICIT\\x10\\x02\\x12\\x13\\n\" +\n\t\"\\x0fLEGACY_REQUIRED\\x10\\x03\\\"7\\n\" +\n\t\"\\bEnumType\\x12\\x15\\n\" +\n\t\"\\x11ENUM_TYPE_UNKNOWN\\x10\\x00\\x12\\b\\n\" +\n\t\"\\x04OPEN\\x10\\x01\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06CLOSED\\x10\\x02\\\"V\\n\" +\n\t\"\\x15RepeatedFieldEncoding\\x12#\\n\" +\n\t\"\\x1fREPEATED_FIELD_ENCODING_UNKNOWN\\x10\\x00\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06PACKED\\x10\\x01\\x12\\f\\n\" +\n\t\"\\bEXPANDED\\x10\\x02\\\"I\\n\" +\n\t\"\\x0eUtf8Validation\\x12\\x1b\\n\" +\n\t\"\\x17UTF8_VALIDATION_UNKNOWN\\x10\\x00\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06VERIFY\\x10\\x02\\x12\\b\\n\" +\n\t\"\\x04NONE\\x10\\x03\\\"\\x04\\b\\x01\\x10\\x01\\\"S\\n\" +\n\t\"\\x0fMessageEncoding\\x12\\x1c\\n\" +\n\t\"\\x18MESSAGE_ENCODING_UNKNOWN\\x10\\x00\\x12\\x13\\n\" +\n\t\"\\x0fLENGTH_PREFIXED\\x10\\x01\\x12\\r\\n\" +\n\t\"\\tDELIMITED\\x10\\x02\\\"H\\n\" +\n\t\"\\n\" +\n\t\"JsonFormat\\x12\\x17\\n\" +\n\t\"\\x13JSON_FORMAT_UNKNOWN\\x10\\x00\\x12\\t\\n\" +\n\t\"\\x05ALLOW\\x10\\x01\\x12\\x16\\n\" +\n\t\"\\x12LEGACY_BEST_EFFORT\\x10\\x02\\\"W\\n\" +\n\t\"\\x12EnforceNamingStyle\\x12 \\n\" +\n\t\"\\x1cENFORCE_NAMING_STYLE_UNKNOWN\\x10\\x00\\x12\\r\\n\" +\n\t\"\\tSTYLE2024\\x10\\x01\\x12\\x10\\n\" +\n\t\"\\fSTYLE_LEGACY\\x10\\x02*\\x06\\b\\xe8\\a\\x10\\x8bN*\\x06\\b\\x8bN\\x10\\x90N*\\x06\\b\\x90N\\x10\\x91NJ\\x06\\b\\xe7\\a\\x10\\xe8\\a\\\"\\xef\\x03\\n\" +\n\t\"\\x12FeatureSetDefaults\\x12X\\n\" +\n\t\"\\bdefaults\\x18\\x01 \\x03(\\v2<.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefaultR\\bdefaults\\x12A\\n\" +\n\t\"\\x0fminimum_edition\\x18\\x04 \\x01(\\x0e2\\x18.google.protobuf.EditionR\\x0eminimumEdition\\x12A\\n\" +\n\t\"\\x0fmaximum_edition\\x18\\x05 \\x01(\\x0e2\\x18.google.protobuf.EditionR\\x0emaximumEdition\\x1a\\xf8\\x01\\n\" +\n\t\"\\x18FeatureSetEditionDefault\\x122\\n\" +\n\t\"\\aedition\\x18\\x03 \\x01(\\x0e2\\x18.google.protobuf.EditionR\\aedition\\x12N\\n\" +\n\t\"\\x14overridable_features\\x18\\x04 \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\x13overridableFeatures\\x12B\\n\" +\n\t\"\\x0efixed_features\\x18\\x05 \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\rfixedFeaturesJ\\x04\\b\\x01\\x10\\x02J\\x04\\b\\x02\\x10\\x03R\\bfeatures\\\"\\xb5\\x02\\n\" +\n\t\"\\x0eSourceCodeInfo\\x12D\\n\" +\n\t\"\\blocation\\x18\\x01 \\x03(\\v2(.google.protobuf.SourceCodeInfo.LocationR\\blocation\\x1a\\xce\\x01\\n\" +\n\t\"\\bLocation\\x12\\x16\\n\" +\n\t\"\\x04path\\x18\\x01 \\x03(\\x05B\\x02\\x10\\x01R\\x04path\\x12\\x16\\n\" +\n\t\"\\x04span\\x18\\x02 \\x03(\\x05B\\x02\\x10\\x01R\\x04span\\x12)\\n\" +\n\t\"\\x10leading_comments\\x18\\x03 \\x01(\\tR\\x0fleadingComments\\x12+\\n\" +\n\t\"\\x11trailing_comments\\x18\\x04 \\x01(\\tR\\x10trailingComments\\x12:\\n\" +\n\t\"\\x19leading_detached_comments\\x18\\x06 \\x03(\\tR\\x17leadingDetachedComments*\\f\\b\\x80\\xec\\xca\\xff\\x01\\x10\\x81\\xec\\xca\\xff\\x01\\\"\\xd0\\x02\\n\" +\n\t\"\\x11GeneratedCodeInfo\\x12M\\n\" +\n\t\"\\n\" +\n\t\"annotation\\x18\\x01 \\x03(\\v2-.google.protobuf.GeneratedCodeInfo.AnnotationR\\n\" +\n\t\"annotation\\x1a\\xeb\\x01\\n\" +\n\t\"\\n\" +\n\t\"Annotation\\x12\\x16\\n\" +\n\t\"\\x04path\\x18\\x01 \\x03(\\x05B\\x02\\x10\\x01R\\x04path\\x12\\x1f\\n\" +\n\t\"\\vsource_file\\x18\\x02 \\x01(\\tR\\n\" +\n\t\"sourceFile\\x12\\x14\\n\" +\n\t\"\\x05begin\\x18\\x03 \\x01(\\x05R\\x05begin\\x12\\x10\\n\" +\n\t\"\\x03end\\x18\\x04 \\x01(\\x05R\\x03end\\x12R\\n\" +\n\t\"\\bsemantic\\x18\\x05 \\x01(\\x0e26.google.protobuf.GeneratedCodeInfo.Annotation.SemanticR\\bsemantic\\\"(\\n\" +\n\t\"\\bSemantic\\x12\\b\\n\" +\n\t\"\\x04NONE\\x10\\x00\\x12\\a\\n\" +\n\t\"\\x03SET\\x10\\x01\\x12\\t\\n\" +\n\t\"\\x05ALIAS\\x10\\x02*\\xbe\\x02\\n\" +\n\t\"\\aEdition\\x12\\x13\\n\" +\n\t\"\\x0fEDITION_UNKNOWN\\x10\\x00\\x12\\x13\\n\" +\n\t\"\\x0eEDITION_LEGACY\\x10\\x84\\a\\x12\\x13\\n\" +\n\t\"\\x0eEDITION_PROTO2\\x10\\xe6\\a\\x12\\x13\\n\" +\n\t\"\\x0eEDITION_PROTO3\\x10\\xe7\\a\\x12\\x11\\n\" +\n\t\"\\fEDITION_2023\\x10\\xe8\\a\\x12\\x11\\n\" +\n\t\"\\fEDITION_2024\\x10\\xe9\\a\\x12\\x15\\n\" +\n\t\"\\x10EDITION_UNSTABLE\\x10\\x8fN\\x12\\x17\\n\" +\n\t\"\\x13EDITION_1_TEST_ONLY\\x10\\x01\\x12\\x17\\n\" +\n\t\"\\x13EDITION_2_TEST_ONLY\\x10\\x02\\x12\\x1d\\n\" +\n\t\"\\x17EDITION_99997_TEST_ONLY\\x10\\x9d\\x8d\\x06\\x12\\x1d\\n\" +\n\t\"\\x17EDITION_99998_TEST_ONLY\\x10\\x9e\\x8d\\x06\\x12\\x1d\\n\" +\n\t\"\\x17EDITION_99999_TEST_ONLY\\x10\\x9f\\x8d\\x06\\x12\\x13\\n\" +\n\t\"\\vEDITION_MAX\\x10\\xff\\xff\\xff\\xff\\a*U\\n\" +\n\t\"\\x10SymbolVisibility\\x12\\x14\\n\" +\n\t\"\\x10VISIBILITY_UNSET\\x10\\x00\\x12\\x14\\n\" +\n\t\"\\x10VISIBILITY_LOCAL\\x10\\x01\\x12\\x15\\n\" +\n\t\"\\x11VISIBILITY_EXPORT\\x10\\x02B~\\n\" +\n\t\"\\x13com.google.protobufB\\x10DescriptorProtosH\\x01Z-google.golang.org/protobuf/types/descriptorpb\\xf8\\x01\\x01\\xa2\\x02\\x03GPB\\xaa\\x02\\x1aGoogle.Protobuf.Reflection\"\n\nvar (\n\tfile_google_protobuf_descriptor_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_descriptor_proto_rawDescData []byte\n)\n\nfunc file_google_protobuf_descriptor_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_descriptor_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_descriptor_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_descriptor_proto_rawDesc), len(file_google_protobuf_descriptor_proto_rawDesc)))\n\t})\n\treturn file_google_protobuf_descriptor_proto_rawDescData\n}\n\nvar file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 20)\nvar file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 34)\nvar file_google_protobuf_descriptor_proto_goTypes = []any{\n\t(Edition)(0),          // 0: google.protobuf.Edition\n\t(SymbolVisibility)(0), // 1: google.protobuf.SymbolVisibility\n\t(ExtensionRangeOptions_VerificationState)(0),              // 2: google.protobuf.ExtensionRangeOptions.VerificationState\n\t(FieldDescriptorProto_Type)(0),                            // 3: google.protobuf.FieldDescriptorProto.Type\n\t(FieldDescriptorProto_Label)(0),                           // 4: google.protobuf.FieldDescriptorProto.Label\n\t(FileOptions_OptimizeMode)(0),                             // 5: google.protobuf.FileOptions.OptimizeMode\n\t(FieldOptions_CType)(0),                                   // 6: google.protobuf.FieldOptions.CType\n\t(FieldOptions_JSType)(0),                                  // 7: google.protobuf.FieldOptions.JSType\n\t(FieldOptions_OptionRetention)(0),                         // 8: google.protobuf.FieldOptions.OptionRetention\n\t(FieldOptions_OptionTargetType)(0),                        // 9: google.protobuf.FieldOptions.OptionTargetType\n\t(MethodOptions_IdempotencyLevel)(0),                       // 10: google.protobuf.MethodOptions.IdempotencyLevel\n\t(FeatureSet_FieldPresence)(0),                             // 11: google.protobuf.FeatureSet.FieldPresence\n\t(FeatureSet_EnumType)(0),                                  // 12: google.protobuf.FeatureSet.EnumType\n\t(FeatureSet_RepeatedFieldEncoding)(0),                     // 13: google.protobuf.FeatureSet.RepeatedFieldEncoding\n\t(FeatureSet_Utf8Validation)(0),                            // 14: google.protobuf.FeatureSet.Utf8Validation\n\t(FeatureSet_MessageEncoding)(0),                           // 15: google.protobuf.FeatureSet.MessageEncoding\n\t(FeatureSet_JsonFormat)(0),                                // 16: google.protobuf.FeatureSet.JsonFormat\n\t(FeatureSet_EnforceNamingStyle)(0),                        // 17: google.protobuf.FeatureSet.EnforceNamingStyle\n\t(FeatureSet_VisibilityFeature_DefaultSymbolVisibility)(0), // 18: google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility\n\t(GeneratedCodeInfo_Annotation_Semantic)(0),                // 19: google.protobuf.GeneratedCodeInfo.Annotation.Semantic\n\t(*FileDescriptorSet)(nil),                                 // 20: google.protobuf.FileDescriptorSet\n\t(*FileDescriptorProto)(nil),                               // 21: google.protobuf.FileDescriptorProto\n\t(*DescriptorProto)(nil),                                   // 22: google.protobuf.DescriptorProto\n\t(*ExtensionRangeOptions)(nil),                             // 23: google.protobuf.ExtensionRangeOptions\n\t(*FieldDescriptorProto)(nil),                              // 24: google.protobuf.FieldDescriptorProto\n\t(*OneofDescriptorProto)(nil),                              // 25: google.protobuf.OneofDescriptorProto\n\t(*EnumDescriptorProto)(nil),                               // 26: google.protobuf.EnumDescriptorProto\n\t(*EnumValueDescriptorProto)(nil),                          // 27: google.protobuf.EnumValueDescriptorProto\n\t(*ServiceDescriptorProto)(nil),                            // 28: google.protobuf.ServiceDescriptorProto\n\t(*MethodDescriptorProto)(nil),                             // 29: google.protobuf.MethodDescriptorProto\n\t(*FileOptions)(nil),                                       // 30: google.protobuf.FileOptions\n\t(*MessageOptions)(nil),                                    // 31: google.protobuf.MessageOptions\n\t(*FieldOptions)(nil),                                      // 32: google.protobuf.FieldOptions\n\t(*OneofOptions)(nil),                                      // 33: google.protobuf.OneofOptions\n\t(*EnumOptions)(nil),                                       // 34: google.protobuf.EnumOptions\n\t(*EnumValueOptions)(nil),                                  // 35: google.protobuf.EnumValueOptions\n\t(*ServiceOptions)(nil),                                    // 36: google.protobuf.ServiceOptions\n\t(*MethodOptions)(nil),                                     // 37: google.protobuf.MethodOptions\n\t(*UninterpretedOption)(nil),                               // 38: google.protobuf.UninterpretedOption\n\t(*FeatureSet)(nil),                                        // 39: google.protobuf.FeatureSet\n\t(*FeatureSetDefaults)(nil),                                // 40: google.protobuf.FeatureSetDefaults\n\t(*SourceCodeInfo)(nil),                                    // 41: google.protobuf.SourceCodeInfo\n\t(*GeneratedCodeInfo)(nil),                                 // 42: google.protobuf.GeneratedCodeInfo\n\t(*DescriptorProto_ExtensionRange)(nil),                    // 43: google.protobuf.DescriptorProto.ExtensionRange\n\t(*DescriptorProto_ReservedRange)(nil),                     // 44: google.protobuf.DescriptorProto.ReservedRange\n\t(*ExtensionRangeOptions_Declaration)(nil),                 // 45: google.protobuf.ExtensionRangeOptions.Declaration\n\t(*EnumDescriptorProto_EnumReservedRange)(nil),             // 46: google.protobuf.EnumDescriptorProto.EnumReservedRange\n\t(*FieldOptions_EditionDefault)(nil),                       // 47: google.protobuf.FieldOptions.EditionDefault\n\t(*FieldOptions_FeatureSupport)(nil),                       // 48: google.protobuf.FieldOptions.FeatureSupport\n\t(*UninterpretedOption_NamePart)(nil),                      // 49: google.protobuf.UninterpretedOption.NamePart\n\t(*FeatureSet_VisibilityFeature)(nil),                      // 50: google.protobuf.FeatureSet.VisibilityFeature\n\t(*FeatureSetDefaults_FeatureSetEditionDefault)(nil),       // 51: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault\n\t(*SourceCodeInfo_Location)(nil),                           // 52: google.protobuf.SourceCodeInfo.Location\n\t(*GeneratedCodeInfo_Annotation)(nil),                      // 53: google.protobuf.GeneratedCodeInfo.Annotation\n}\nvar file_google_protobuf_descriptor_proto_depIdxs = []int32{\n\t21, // 0: google.protobuf.FileDescriptorSet.file:type_name -> google.protobuf.FileDescriptorProto\n\t22, // 1: google.protobuf.FileDescriptorProto.message_type:type_name -> google.protobuf.DescriptorProto\n\t26, // 2: google.protobuf.FileDescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto\n\t28, // 3: google.protobuf.FileDescriptorProto.service:type_name -> google.protobuf.ServiceDescriptorProto\n\t24, // 4: google.protobuf.FileDescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto\n\t30, // 5: google.protobuf.FileDescriptorProto.options:type_name -> google.protobuf.FileOptions\n\t41, // 6: google.protobuf.FileDescriptorProto.source_code_info:type_name -> google.protobuf.SourceCodeInfo\n\t0,  // 7: google.protobuf.FileDescriptorProto.edition:type_name -> google.protobuf.Edition\n\t24, // 8: google.protobuf.DescriptorProto.field:type_name -> google.protobuf.FieldDescriptorProto\n\t24, // 9: google.protobuf.DescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto\n\t22, // 10: google.protobuf.DescriptorProto.nested_type:type_name -> google.protobuf.DescriptorProto\n\t26, // 11: google.protobuf.DescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto\n\t43, // 12: google.protobuf.DescriptorProto.extension_range:type_name -> google.protobuf.DescriptorProto.ExtensionRange\n\t25, // 13: google.protobuf.DescriptorProto.oneof_decl:type_name -> google.protobuf.OneofDescriptorProto\n\t31, // 14: google.protobuf.DescriptorProto.options:type_name -> google.protobuf.MessageOptions\n\t44, // 15: google.protobuf.DescriptorProto.reserved_range:type_name -> google.protobuf.DescriptorProto.ReservedRange\n\t1,  // 16: google.protobuf.DescriptorProto.visibility:type_name -> google.protobuf.SymbolVisibility\n\t38, // 17: google.protobuf.ExtensionRangeOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t45, // 18: google.protobuf.ExtensionRangeOptions.declaration:type_name -> google.protobuf.ExtensionRangeOptions.Declaration\n\t39, // 19: google.protobuf.ExtensionRangeOptions.features:type_name -> google.protobuf.FeatureSet\n\t2,  // 20: google.protobuf.ExtensionRangeOptions.verification:type_name -> google.protobuf.ExtensionRangeOptions.VerificationState\n\t4,  // 21: google.protobuf.FieldDescriptorProto.label:type_name -> google.protobuf.FieldDescriptorProto.Label\n\t3,  // 22: google.protobuf.FieldDescriptorProto.type:type_name -> google.protobuf.FieldDescriptorProto.Type\n\t32, // 23: google.protobuf.FieldDescriptorProto.options:type_name -> google.protobuf.FieldOptions\n\t33, // 24: google.protobuf.OneofDescriptorProto.options:type_name -> google.protobuf.OneofOptions\n\t27, // 25: google.protobuf.EnumDescriptorProto.value:type_name -> google.protobuf.EnumValueDescriptorProto\n\t34, // 26: google.protobuf.EnumDescriptorProto.options:type_name -> google.protobuf.EnumOptions\n\t46, // 27: google.protobuf.EnumDescriptorProto.reserved_range:type_name -> google.protobuf.EnumDescriptorProto.EnumReservedRange\n\t1,  // 28: google.protobuf.EnumDescriptorProto.visibility:type_name -> google.protobuf.SymbolVisibility\n\t35, // 29: google.protobuf.EnumValueDescriptorProto.options:type_name -> google.protobuf.EnumValueOptions\n\t29, // 30: google.protobuf.ServiceDescriptorProto.method:type_name -> google.protobuf.MethodDescriptorProto\n\t36, // 31: google.protobuf.ServiceDescriptorProto.options:type_name -> google.protobuf.ServiceOptions\n\t37, // 32: google.protobuf.MethodDescriptorProto.options:type_name -> google.protobuf.MethodOptions\n\t5,  // 33: google.protobuf.FileOptions.optimize_for:type_name -> google.protobuf.FileOptions.OptimizeMode\n\t39, // 34: google.protobuf.FileOptions.features:type_name -> google.protobuf.FeatureSet\n\t38, // 35: google.protobuf.FileOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t39, // 36: google.protobuf.MessageOptions.features:type_name -> google.protobuf.FeatureSet\n\t38, // 37: google.protobuf.MessageOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t6,  // 38: google.protobuf.FieldOptions.ctype:type_name -> google.protobuf.FieldOptions.CType\n\t7,  // 39: google.protobuf.FieldOptions.jstype:type_name -> google.protobuf.FieldOptions.JSType\n\t8,  // 40: google.protobuf.FieldOptions.retention:type_name -> google.protobuf.FieldOptions.OptionRetention\n\t9,  // 41: google.protobuf.FieldOptions.targets:type_name -> google.protobuf.FieldOptions.OptionTargetType\n\t47, // 42: google.protobuf.FieldOptions.edition_defaults:type_name -> google.protobuf.FieldOptions.EditionDefault\n\t39, // 43: google.protobuf.FieldOptions.features:type_name -> google.protobuf.FeatureSet\n\t48, // 44: google.protobuf.FieldOptions.feature_support:type_name -> google.protobuf.FieldOptions.FeatureSupport\n\t38, // 45: google.protobuf.FieldOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t39, // 46: google.protobuf.OneofOptions.features:type_name -> google.protobuf.FeatureSet\n\t38, // 47: google.protobuf.OneofOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t39, // 48: google.protobuf.EnumOptions.features:type_name -> google.protobuf.FeatureSet\n\t38, // 49: google.protobuf.EnumOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t39, // 50: google.protobuf.EnumValueOptions.features:type_name -> google.protobuf.FeatureSet\n\t48, // 51: google.protobuf.EnumValueOptions.feature_support:type_name -> google.protobuf.FieldOptions.FeatureSupport\n\t38, // 52: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t39, // 53: google.protobuf.ServiceOptions.features:type_name -> google.protobuf.FeatureSet\n\t38, // 54: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t10, // 55: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel\n\t39, // 56: google.protobuf.MethodOptions.features:type_name -> google.protobuf.FeatureSet\n\t38, // 57: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t49, // 58: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart\n\t11, // 59: google.protobuf.FeatureSet.field_presence:type_name -> google.protobuf.FeatureSet.FieldPresence\n\t12, // 60: google.protobuf.FeatureSet.enum_type:type_name -> google.protobuf.FeatureSet.EnumType\n\t13, // 61: google.protobuf.FeatureSet.repeated_field_encoding:type_name -> google.protobuf.FeatureSet.RepeatedFieldEncoding\n\t14, // 62: google.protobuf.FeatureSet.utf8_validation:type_name -> google.protobuf.FeatureSet.Utf8Validation\n\t15, // 63: google.protobuf.FeatureSet.message_encoding:type_name -> google.protobuf.FeatureSet.MessageEncoding\n\t16, // 64: google.protobuf.FeatureSet.json_format:type_name -> google.protobuf.FeatureSet.JsonFormat\n\t17, // 65: google.protobuf.FeatureSet.enforce_naming_style:type_name -> google.protobuf.FeatureSet.EnforceNamingStyle\n\t18, // 66: google.protobuf.FeatureSet.default_symbol_visibility:type_name -> google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility\n\t51, // 67: google.protobuf.FeatureSetDefaults.defaults:type_name -> google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault\n\t0,  // 68: google.protobuf.FeatureSetDefaults.minimum_edition:type_name -> google.protobuf.Edition\n\t0,  // 69: google.protobuf.FeatureSetDefaults.maximum_edition:type_name -> google.protobuf.Edition\n\t52, // 70: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location\n\t53, // 71: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation\n\t23, // 72: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions\n\t0,  // 73: google.protobuf.FieldOptions.EditionDefault.edition:type_name -> google.protobuf.Edition\n\t0,  // 74: google.protobuf.FieldOptions.FeatureSupport.edition_introduced:type_name -> google.protobuf.Edition\n\t0,  // 75: google.protobuf.FieldOptions.FeatureSupport.edition_deprecated:type_name -> google.protobuf.Edition\n\t0,  // 76: google.protobuf.FieldOptions.FeatureSupport.edition_removed:type_name -> google.protobuf.Edition\n\t0,  // 77: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition:type_name -> google.protobuf.Edition\n\t39, // 78: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features:type_name -> google.protobuf.FeatureSet\n\t39, // 79: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features:type_name -> google.protobuf.FeatureSet\n\t19, // 80: google.protobuf.GeneratedCodeInfo.Annotation.semantic:type_name -> google.protobuf.GeneratedCodeInfo.Annotation.Semantic\n\t81, // [81:81] is the sub-list for method output_type\n\t81, // [81:81] is the sub-list for method input_type\n\t81, // [81:81] is the sub-list for extension type_name\n\t81, // [81:81] is the sub-list for extension extendee\n\t0,  // [0:81] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_descriptor_proto_init() }\nfunc file_google_protobuf_descriptor_proto_init() {\n\tif File_google_protobuf_descriptor_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_descriptor_proto_rawDesc), len(file_google_protobuf_descriptor_proto_rawDesc)),\n\t\t\tNumEnums:      20,\n\t\t\tNumMessages:   34,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_descriptor_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_descriptor_proto_depIdxs,\n\t\tEnumInfos:         file_google_protobuf_descriptor_proto_enumTypes,\n\t\tMessageInfos:      file_google_protobuf_descriptor_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_descriptor_proto = out.File\n\tfile_google_protobuf_descriptor_proto_goTypes = nil\n\tfile_google_protobuf_descriptor_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/dynamicpb/dynamic.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package dynamicpb creates protocol buffer messages using runtime type information.\npackage dynamicpb\n\nimport (\n\t\"math\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n\t\"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\n// enum is a dynamic protoreflect.Enum.\ntype enum struct {\n\tnum protoreflect.EnumNumber\n\ttyp protoreflect.EnumType\n}\n\nfunc (e enum) Descriptor() protoreflect.EnumDescriptor { return e.typ.Descriptor() }\nfunc (e enum) Type() protoreflect.EnumType             { return e.typ }\nfunc (e enum) Number() protoreflect.EnumNumber         { return e.num }\n\n// enumType is a dynamic protoreflect.EnumType.\ntype enumType struct {\n\tdesc protoreflect.EnumDescriptor\n}\n\n// NewEnumType creates a new EnumType with the provided descriptor.\n//\n// EnumTypes created by this package are equal if their descriptors are equal.\n// That is, if ed1 == ed2, then NewEnumType(ed1) == NewEnumType(ed2).\n//\n// Enum values created by the EnumType are equal if their numbers are equal.\nfunc NewEnumType(desc protoreflect.EnumDescriptor) protoreflect.EnumType {\n\treturn enumType{desc}\n}\n\nfunc (et enumType) New(n protoreflect.EnumNumber) protoreflect.Enum { return enum{n, et} }\nfunc (et enumType) Descriptor() protoreflect.EnumDescriptor         { return et.desc }\n\n// extensionType is a dynamic protoreflect.ExtensionType.\ntype extensionType struct {\n\tdesc extensionTypeDescriptor\n}\n\n// A Message is a dynamically constructed protocol buffer message.\n//\n// Message implements the [google.golang.org/protobuf/proto.Message] interface,\n// and may be used with all  standard proto package functions\n// such as Marshal, Unmarshal, and so forth.\n//\n// Message also implements the [protoreflect.Message] interface.\n// See the [protoreflect] package documentation for that interface for how to\n// get and set fields and otherwise interact with the contents of a Message.\n//\n// Reflection API functions which construct messages, such as NewField,\n// return new dynamic messages of the appropriate type. Functions which take\n// messages, such as Set for a message-value field, will accept any message\n// with a compatible type.\n//\n// Operations which modify a Message are not safe for concurrent use.\ntype Message struct {\n\ttyp     messageType\n\tknown   map[protoreflect.FieldNumber]protoreflect.Value\n\text     map[protoreflect.FieldNumber]protoreflect.FieldDescriptor\n\tunknown protoreflect.RawFields\n}\n\nvar (\n\t_ protoreflect.Message      = (*Message)(nil)\n\t_ protoreflect.ProtoMessage = (*Message)(nil)\n\t_ protoiface.MessageV1      = (*Message)(nil)\n)\n\n// NewMessage creates a new message with the provided descriptor.\nfunc NewMessage(desc protoreflect.MessageDescriptor) *Message {\n\treturn &Message{\n\t\ttyp:   messageType{desc},\n\t\tknown: make(map[protoreflect.FieldNumber]protoreflect.Value),\n\t\text:   make(map[protoreflect.FieldNumber]protoreflect.FieldDescriptor),\n\t}\n}\n\n// ProtoMessage implements the legacy message interface.\nfunc (m *Message) ProtoMessage() {}\n\n// ProtoReflect implements the [protoreflect.ProtoMessage] interface.\nfunc (m *Message) ProtoReflect() protoreflect.Message {\n\treturn m\n}\n\n// String returns a string representation of a message.\nfunc (m *Message) String() string {\n\treturn protoimpl.X.MessageStringOf(m)\n}\n\n// Reset clears the message to be empty, but preserves the dynamic message type.\nfunc (m *Message) Reset() {\n\tm.known = make(map[protoreflect.FieldNumber]protoreflect.Value)\n\tm.ext = make(map[protoreflect.FieldNumber]protoreflect.FieldDescriptor)\n\tm.unknown = nil\n}\n\n// Descriptor returns the message descriptor.\nfunc (m *Message) Descriptor() protoreflect.MessageDescriptor {\n\treturn m.typ.desc\n}\n\n// Type returns the message type.\nfunc (m *Message) Type() protoreflect.MessageType {\n\treturn m.typ\n}\n\n// New returns a newly allocated empty message with the same descriptor.\n// See [protoreflect.Message] for details.\nfunc (m *Message) New() protoreflect.Message {\n\treturn m.Type().New()\n}\n\n// Interface returns the message.\n// See [protoreflect.Message] for details.\nfunc (m *Message) Interface() protoreflect.ProtoMessage {\n\treturn m\n}\n\n// ProtoMethods is an internal detail of the [protoreflect.Message] interface.\n// Users should never call this directly.\nfunc (m *Message) ProtoMethods() *protoiface.Methods {\n\treturn nil\n}\n\n// Range visits every populated field in undefined order.\n// See [protoreflect.Message] for details.\nfunc (m *Message) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tfor num, v := range m.known {\n\t\tfd := m.ext[num]\n\t\tif fd == nil {\n\t\t\tfd = m.Descriptor().Fields().ByNumber(num)\n\t\t}\n\t\tif !isSet(fd, v) {\n\t\t\tcontinue\n\t\t}\n\t\tif !f(fd, v) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n// See [protoreflect.Message] for details.\nfunc (m *Message) Has(fd protoreflect.FieldDescriptor) bool {\n\tm.checkField(fd)\n\tif fd.IsExtension() && m.ext[fd.Number()] != fd {\n\t\treturn false\n\t}\n\tv, ok := m.known[fd.Number()]\n\tif !ok {\n\t\treturn false\n\t}\n\treturn isSet(fd, v)\n}\n\n// Clear clears a field.\n// See [protoreflect.Message] for details.\nfunc (m *Message) Clear(fd protoreflect.FieldDescriptor) {\n\tm.checkField(fd)\n\tnum := fd.Number()\n\tdelete(m.known, num)\n\tdelete(m.ext, num)\n}\n\n// Get returns the value of a field.\n// See [protoreflect.Message] for details.\nfunc (m *Message) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tm.checkField(fd)\n\tnum := fd.Number()\n\tif fd.IsExtension() {\n\t\tif fd != m.ext[num] {\n\t\t\treturn fd.(protoreflect.ExtensionTypeDescriptor).Type().Zero()\n\t\t}\n\t\treturn m.known[num]\n\t}\n\tif v, ok := m.known[num]; ok {\n\t\tswitch {\n\t\tcase fd.IsMap():\n\t\t\tif v.Map().Len() > 0 {\n\t\t\t\treturn v\n\t\t\t}\n\t\tcase fd.IsList():\n\t\t\tif v.List().Len() > 0 {\n\t\t\t\treturn v\n\t\t\t}\n\t\tdefault:\n\t\t\treturn v\n\t\t}\n\t}\n\tswitch {\n\tcase fd.IsMap():\n\t\treturn protoreflect.ValueOfMap(&dynamicMap{desc: fd})\n\tcase fd.IsList():\n\t\treturn protoreflect.ValueOfList(emptyList{desc: fd})\n\tcase fd.Message() != nil:\n\t\treturn protoreflect.ValueOfMessage(&Message{typ: messageType{fd.Message()}})\n\tcase fd.Kind() == protoreflect.BytesKind:\n\t\treturn protoreflect.ValueOfBytes(append([]byte(nil), fd.Default().Bytes()...))\n\tdefault:\n\t\treturn fd.Default()\n\t}\n}\n\n// Mutable returns a mutable reference to a repeated, map, or message field.\n// See [protoreflect.Message] for details.\nfunc (m *Message) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tm.checkField(fd)\n\tif !fd.IsMap() && !fd.IsList() && fd.Message() == nil {\n\t\tpanic(errors.New(\"%v: getting mutable reference to non-composite type\", fd.FullName()))\n\t}\n\tif m.known == nil {\n\t\tpanic(errors.New(\"%v: modification of read-only message\", fd.FullName()))\n\t}\n\tnum := fd.Number()\n\tif fd.IsExtension() {\n\t\tif fd != m.ext[num] {\n\t\t\tm.ext[num] = fd\n\t\t\tm.known[num] = fd.(protoreflect.ExtensionTypeDescriptor).Type().New()\n\t\t}\n\t\treturn m.known[num]\n\t}\n\tif v, ok := m.known[num]; ok {\n\t\treturn v\n\t}\n\tm.clearOtherOneofFields(fd)\n\tm.known[num] = m.NewField(fd)\n\tif fd.IsExtension() {\n\t\tm.ext[num] = fd\n\t}\n\treturn m.known[num]\n}\n\n// Set stores a value in a field.\n// See [protoreflect.Message] for details.\nfunc (m *Message) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {\n\tm.checkField(fd)\n\tif m.known == nil {\n\t\tpanic(errors.New(\"%v: modification of read-only message\", fd.FullName()))\n\t}\n\tif fd.IsExtension() {\n\t\tisValid := true\n\t\tswitch {\n\t\tcase !fd.(protoreflect.ExtensionTypeDescriptor).Type().IsValidValue(v):\n\t\t\tisValid = false\n\t\tcase fd.IsList():\n\t\t\tisValid = v.List().IsValid()\n\t\tcase fd.IsMap():\n\t\t\tisValid = v.Map().IsValid()\n\t\tcase fd.Message() != nil:\n\t\t\tisValid = v.Message().IsValid()\n\t\t}\n\t\tif !isValid {\n\t\t\tpanic(errors.New(\"%v: assigning invalid type %T\", fd.FullName(), v.Interface()))\n\t\t}\n\t\tm.ext[fd.Number()] = fd\n\t} else {\n\t\ttypecheck(fd, v)\n\t}\n\tm.clearOtherOneofFields(fd)\n\tm.known[fd.Number()] = v\n}\n\nfunc (m *Message) clearOtherOneofFields(fd protoreflect.FieldDescriptor) {\n\tod := fd.ContainingOneof()\n\tif od == nil {\n\t\treturn\n\t}\n\tnum := fd.Number()\n\tfor i := 0; i < od.Fields().Len(); i++ {\n\t\tif n := od.Fields().Get(i).Number(); n != num {\n\t\t\tdelete(m.known, n)\n\t\t}\n\t}\n}\n\n// NewField returns a new value for assignable to the field of a given descriptor.\n// See [protoreflect.Message] for details.\nfunc (m *Message) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tm.checkField(fd)\n\tswitch {\n\tcase fd.IsExtension():\n\t\treturn fd.(protoreflect.ExtensionTypeDescriptor).Type().New()\n\tcase fd.IsMap():\n\t\treturn protoreflect.ValueOfMap(&dynamicMap{\n\t\t\tdesc: fd,\n\t\t\tmapv: make(map[any]protoreflect.Value),\n\t\t})\n\tcase fd.IsList():\n\t\treturn protoreflect.ValueOfList(&dynamicList{desc: fd})\n\tcase fd.Message() != nil:\n\t\treturn protoreflect.ValueOfMessage(NewMessage(fd.Message()).ProtoReflect())\n\tdefault:\n\t\treturn fd.Default()\n\t}\n}\n\n// WhichOneof reports which field in a oneof is populated, returning nil if none are populated.\n// See [protoreflect.Message] for details.\nfunc (m *Message) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tfor i := 0; i < od.Fields().Len(); i++ {\n\t\tfd := od.Fields().Get(i)\n\t\tif m.Has(fd) {\n\t\t\treturn fd\n\t\t}\n\t}\n\treturn nil\n}\n\n// GetUnknown returns the raw unknown fields.\n// See [protoreflect.Message] for details.\nfunc (m *Message) GetUnknown() protoreflect.RawFields {\n\treturn m.unknown\n}\n\n// SetUnknown sets the raw unknown fields.\n// See [protoreflect.Message] for details.\nfunc (m *Message) SetUnknown(r protoreflect.RawFields) {\n\tif m.known == nil {\n\t\tpanic(errors.New(\"%v: modification of read-only message\", m.typ.desc.FullName()))\n\t}\n\tm.unknown = r\n}\n\n// IsValid reports whether the message is valid.\n// See [protoreflect.Message] for details.\nfunc (m *Message) IsValid() bool {\n\treturn m.known != nil\n}\n\nfunc (m *Message) checkField(fd protoreflect.FieldDescriptor) {\n\tif fd.IsExtension() && fd.ContainingMessage().FullName() == m.Descriptor().FullName() {\n\t\tif _, ok := fd.(protoreflect.ExtensionTypeDescriptor); !ok {\n\t\t\tpanic(errors.New(\"%v: extension field descriptor does not implement ExtensionTypeDescriptor\", fd.FullName()))\n\t\t}\n\t\treturn\n\t}\n\tif fd.Parent() == m.Descriptor() {\n\t\treturn\n\t}\n\tfields := m.Descriptor().Fields()\n\tindex := fd.Index()\n\tif index >= fields.Len() || fields.Get(index) != fd {\n\t\tpanic(errors.New(\"%v: field descriptor does not belong to this message\", fd.FullName()))\n\t}\n}\n\ntype messageType struct {\n\tdesc protoreflect.MessageDescriptor\n}\n\n// NewMessageType creates a new MessageType with the provided descriptor.\n//\n// MessageTypes created by this package are equal if their descriptors are equal.\n// That is, if md1 == md2, then NewMessageType(md1) == NewMessageType(md2).\nfunc NewMessageType(desc protoreflect.MessageDescriptor) protoreflect.MessageType {\n\treturn messageType{desc}\n}\n\nfunc (mt messageType) New() protoreflect.Message                  { return NewMessage(mt.desc) }\nfunc (mt messageType) Zero() protoreflect.Message                 { return &Message{typ: messageType{mt.desc}} }\nfunc (mt messageType) Descriptor() protoreflect.MessageDescriptor { return mt.desc }\nfunc (mt messageType) Enum(i int) protoreflect.EnumType {\n\tif ed := mt.desc.Fields().Get(i).Enum(); ed != nil {\n\t\treturn NewEnumType(ed)\n\t}\n\treturn nil\n}\nfunc (mt messageType) Message(i int) protoreflect.MessageType {\n\tif md := mt.desc.Fields().Get(i).Message(); md != nil {\n\t\treturn NewMessageType(md)\n\t}\n\treturn nil\n}\n\ntype emptyList struct {\n\tdesc protoreflect.FieldDescriptor\n}\n\nfunc (x emptyList) Len() int                     { return 0 }\nfunc (x emptyList) Get(n int) protoreflect.Value { panic(errors.New(\"out of range\")) }\nfunc (x emptyList) Set(n int, v protoreflect.Value) {\n\tpanic(errors.New(\"modification of immutable list\"))\n}\nfunc (x emptyList) Append(v protoreflect.Value) { panic(errors.New(\"modification of immutable list\")) }\nfunc (x emptyList) AppendMutable() protoreflect.Value {\n\tpanic(errors.New(\"modification of immutable list\"))\n}\nfunc (x emptyList) Truncate(n int)                 { panic(errors.New(\"modification of immutable list\")) }\nfunc (x emptyList) NewElement() protoreflect.Value { return newListEntry(x.desc) }\nfunc (x emptyList) IsValid() bool                  { return false }\n\ntype dynamicList struct {\n\tdesc protoreflect.FieldDescriptor\n\tlist []protoreflect.Value\n}\n\nfunc (x *dynamicList) Len() int {\n\treturn len(x.list)\n}\n\nfunc (x *dynamicList) Get(n int) protoreflect.Value {\n\treturn x.list[n]\n}\n\nfunc (x *dynamicList) Set(n int, v protoreflect.Value) {\n\ttypecheckSingular(x.desc, v)\n\tx.list[n] = v\n}\n\nfunc (x *dynamicList) Append(v protoreflect.Value) {\n\ttypecheckSingular(x.desc, v)\n\tx.list = append(x.list, v)\n}\n\nfunc (x *dynamicList) AppendMutable() protoreflect.Value {\n\tif x.desc.Message() == nil {\n\t\tpanic(errors.New(\"%v: invalid AppendMutable on list with non-message type\", x.desc.FullName()))\n\t}\n\tv := x.NewElement()\n\tx.Append(v)\n\treturn v\n}\n\nfunc (x *dynamicList) Truncate(n int) {\n\t// Zero truncated elements to avoid keeping data live.\n\tfor i := n; i < len(x.list); i++ {\n\t\tx.list[i] = protoreflect.Value{}\n\t}\n\tx.list = x.list[:n]\n}\n\nfunc (x *dynamicList) NewElement() protoreflect.Value {\n\treturn newListEntry(x.desc)\n}\n\nfunc (x *dynamicList) IsValid() bool {\n\treturn true\n}\n\ntype dynamicMap struct {\n\tdesc protoreflect.FieldDescriptor\n\tmapv map[any]protoreflect.Value\n}\n\nfunc (x *dynamicMap) Get(k protoreflect.MapKey) protoreflect.Value { return x.mapv[k.Interface()] }\nfunc (x *dynamicMap) Set(k protoreflect.MapKey, v protoreflect.Value) {\n\ttypecheckSingular(x.desc.MapKey(), k.Value())\n\ttypecheckSingular(x.desc.MapValue(), v)\n\tx.mapv[k.Interface()] = v\n}\nfunc (x *dynamicMap) Has(k protoreflect.MapKey) bool { return x.Get(k).IsValid() }\nfunc (x *dynamicMap) Clear(k protoreflect.MapKey)    { delete(x.mapv, k.Interface()) }\nfunc (x *dynamicMap) Mutable(k protoreflect.MapKey) protoreflect.Value {\n\tif x.desc.MapValue().Message() == nil {\n\t\tpanic(errors.New(\"%v: invalid Mutable on map with non-message value type\", x.desc.FullName()))\n\t}\n\tv := x.Get(k)\n\tif !v.IsValid() {\n\t\tv = x.NewValue()\n\t\tx.Set(k, v)\n\t}\n\treturn v\n}\nfunc (x *dynamicMap) Len() int { return len(x.mapv) }\nfunc (x *dynamicMap) NewValue() protoreflect.Value {\n\tif md := x.desc.MapValue().Message(); md != nil {\n\t\treturn protoreflect.ValueOfMessage(NewMessage(md).ProtoReflect())\n\t}\n\treturn x.desc.MapValue().Default()\n}\nfunc (x *dynamicMap) IsValid() bool {\n\treturn x.mapv != nil\n}\n\nfunc (x *dynamicMap) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tfor k, v := range x.mapv {\n\t\tif !f(protoreflect.ValueOf(k).MapKey(), v) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc isSet(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\tswitch {\n\tcase fd.IsMap():\n\t\treturn v.Map().Len() > 0\n\tcase fd.IsList():\n\t\treturn v.List().Len() > 0\n\tcase fd.ContainingOneof() != nil:\n\t\treturn true\n\tcase !fd.HasPresence() && !fd.IsExtension():\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\treturn v.Bool()\n\t\tcase protoreflect.EnumKind:\n\t\t\treturn v.Enum() != 0\n\t\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed32Kind, protoreflect.Sfixed64Kind:\n\t\t\treturn v.Int() != 0\n\t\tcase protoreflect.Uint32Kind, protoreflect.Uint64Kind, protoreflect.Fixed32Kind, protoreflect.Fixed64Kind:\n\t\t\treturn v.Uint() != 0\n\t\tcase protoreflect.FloatKind, protoreflect.DoubleKind:\n\t\t\treturn v.Float() != 0 || math.Signbit(v.Float())\n\t\tcase protoreflect.StringKind:\n\t\t\treturn v.String() != \"\"\n\t\tcase protoreflect.BytesKind:\n\t\t\treturn len(v.Bytes()) > 0\n\t\t}\n\t}\n\treturn true\n}\n\nfunc typecheck(fd protoreflect.FieldDescriptor, v protoreflect.Value) {\n\tif err := typeIsValid(fd, v); err != nil {\n\t\tpanic(err)\n\t}\n}\n\nfunc typeIsValid(fd protoreflect.FieldDescriptor, v protoreflect.Value) error {\n\tswitch {\n\tcase !v.IsValid():\n\t\treturn errors.New(\"%v: assigning invalid value\", fd.FullName())\n\tcase fd.IsMap():\n\t\tif mapv, ok := v.Interface().(*dynamicMap); !ok || mapv.desc != fd || !mapv.IsValid() {\n\t\t\treturn errors.New(\"%v: assigning invalid type %T\", fd.FullName(), v.Interface())\n\t\t}\n\t\treturn nil\n\tcase fd.IsList():\n\t\tswitch list := v.Interface().(type) {\n\t\tcase *dynamicList:\n\t\t\tif list.desc == fd && list.IsValid() {\n\t\t\t\treturn nil\n\t\t\t}\n\t\tcase emptyList:\n\t\t\tif list.desc == fd && list.IsValid() {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\treturn errors.New(\"%v: assigning invalid type %T\", fd.FullName(), v.Interface())\n\tdefault:\n\t\treturn singularTypeIsValid(fd, v)\n\t}\n}\n\nfunc typecheckSingular(fd protoreflect.FieldDescriptor, v protoreflect.Value) {\n\tif err := singularTypeIsValid(fd, v); err != nil {\n\t\tpanic(err)\n\t}\n}\n\nfunc singularTypeIsValid(fd protoreflect.FieldDescriptor, v protoreflect.Value) error {\n\tvi := v.Interface()\n\tvar ok bool\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\t_, ok = vi.(bool)\n\tcase protoreflect.EnumKind:\n\t\t// We could check against the valid set of enum values, but do not.\n\t\t_, ok = vi.(protoreflect.EnumNumber)\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\t_, ok = vi.(int32)\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\t_, ok = vi.(uint32)\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\t_, ok = vi.(int64)\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\t_, ok = vi.(uint64)\n\tcase protoreflect.FloatKind:\n\t\t_, ok = vi.(float32)\n\tcase protoreflect.DoubleKind:\n\t\t_, ok = vi.(float64)\n\tcase protoreflect.StringKind:\n\t\t_, ok = vi.(string)\n\tcase protoreflect.BytesKind:\n\t\t_, ok = vi.([]byte)\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tvar m protoreflect.Message\n\t\tm, ok = vi.(protoreflect.Message)\n\t\tif ok && m.Descriptor().FullName() != fd.Message().FullName() {\n\t\t\treturn errors.New(\"%v: assigning invalid message type %v\", fd.FullName(), m.Descriptor().FullName())\n\t\t}\n\t\tif dm, ok := vi.(*Message); ok && dm.known == nil {\n\t\t\treturn errors.New(\"%v: assigning invalid zero-value message\", fd.FullName())\n\t\t}\n\t}\n\tif !ok {\n\t\treturn errors.New(\"%v: assigning invalid type %T\", fd.FullName(), v.Interface())\n\t}\n\treturn nil\n}\n\nfunc newListEntry(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase protoreflect.EnumKind:\n\t\treturn protoreflect.ValueOfEnum(fd.Enum().Values().Get(0).Number())\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\treturn protoreflect.ValueOfInt32(0)\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\treturn protoreflect.ValueOfUint32(0)\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\treturn protoreflect.ValueOfInt64(0)\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\treturn protoreflect.ValueOfUint64(0)\n\tcase protoreflect.FloatKind:\n\t\treturn protoreflect.ValueOfFloat32(0)\n\tcase protoreflect.DoubleKind:\n\t\treturn protoreflect.ValueOfFloat64(0)\n\tcase protoreflect.StringKind:\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase protoreflect.BytesKind:\n\t\treturn protoreflect.ValueOfBytes(nil)\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn protoreflect.ValueOfMessage(NewMessage(fd.Message()).ProtoReflect())\n\t}\n\tpanic(errors.New(\"%v: unknown kind %v\", fd.FullName(), fd.Kind()))\n}\n\n// NewExtensionType creates a new ExtensionType with the provided descriptor.\n//\n// Dynamic ExtensionTypes with the same descriptor compare as equal. That is,\n// if xd1 == xd2, then NewExtensionType(xd1) == NewExtensionType(xd2).\n//\n// The InterfaceOf and ValueOf methods of the extension type are defined as:\n//\n//\tfunc (xt extensionType) ValueOf(iv any) protoreflect.Value {\n//\t\treturn protoreflect.ValueOf(iv)\n//\t}\n//\n//\tfunc (xt extensionType) InterfaceOf(v protoreflect.Value) any {\n//\t\treturn v.Interface()\n//\t}\n//\n// The Go type used by the proto.GetExtension and proto.SetExtension functions\n// is determined by these methods, and is therefore equivalent to the Go type\n// used to represent a protoreflect.Value. See the protoreflect.Value\n// documentation for more details.\nfunc NewExtensionType(desc protoreflect.ExtensionDescriptor) protoreflect.ExtensionType {\n\tif xt, ok := desc.(protoreflect.ExtensionTypeDescriptor); ok {\n\t\tdesc = xt.Descriptor()\n\t}\n\treturn extensionType{extensionTypeDescriptor{desc}}\n}\n\nfunc (xt extensionType) New() protoreflect.Value {\n\tswitch {\n\tcase xt.desc.IsMap():\n\t\treturn protoreflect.ValueOfMap(&dynamicMap{\n\t\t\tdesc: xt.desc,\n\t\t\tmapv: make(map[any]protoreflect.Value),\n\t\t})\n\tcase xt.desc.IsList():\n\t\treturn protoreflect.ValueOfList(&dynamicList{desc: xt.desc})\n\tcase xt.desc.Message() != nil:\n\t\treturn protoreflect.ValueOfMessage(NewMessage(xt.desc.Message()))\n\tdefault:\n\t\treturn xt.desc.Default()\n\t}\n}\n\nfunc (xt extensionType) Zero() protoreflect.Value {\n\tswitch {\n\tcase xt.desc.IsMap():\n\t\treturn protoreflect.ValueOfMap(&dynamicMap{desc: xt.desc})\n\tcase xt.desc.Cardinality() == protoreflect.Repeated:\n\t\treturn protoreflect.ValueOfList(emptyList{desc: xt.desc})\n\tcase xt.desc.Message() != nil:\n\t\treturn protoreflect.ValueOfMessage(&Message{typ: messageType{xt.desc.Message()}})\n\tdefault:\n\t\treturn xt.desc.Default()\n\t}\n}\n\nfunc (xt extensionType) TypeDescriptor() protoreflect.ExtensionTypeDescriptor {\n\treturn xt.desc\n}\n\nfunc (xt extensionType) ValueOf(iv any) protoreflect.Value {\n\tv := protoreflect.ValueOf(iv)\n\ttypecheck(xt.desc, v)\n\treturn v\n}\n\nfunc (xt extensionType) InterfaceOf(v protoreflect.Value) any {\n\ttypecheck(xt.desc, v)\n\treturn v.Interface()\n}\n\nfunc (xt extensionType) IsValidInterface(iv any) bool {\n\treturn typeIsValid(xt.desc, protoreflect.ValueOf(iv)) == nil\n}\n\nfunc (xt extensionType) IsValidValue(v protoreflect.Value) bool {\n\treturn typeIsValid(xt.desc, v) == nil\n}\n\ntype extensionTypeDescriptor struct {\n\tprotoreflect.ExtensionDescriptor\n}\n\nfunc (xt extensionTypeDescriptor) Type() protoreflect.ExtensionType {\n\treturn extensionType{xt}\n}\n\nfunc (xt extensionTypeDescriptor) Descriptor() protoreflect.ExtensionDescriptor {\n\treturn xt.ExtensionDescriptor\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/dynamicpb/types.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage dynamicpb\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\ntype extField struct {\n\tname   protoreflect.FullName\n\tnumber protoreflect.FieldNumber\n}\n\n// A Types is a collection of dynamically constructed descriptors.\n// Its methods are safe for concurrent use.\n//\n// Types implements [protoregistry.MessageTypeResolver] and [protoregistry.ExtensionTypeResolver].\n// A Types may be used as a [google.golang.org/protobuf/proto.UnmarshalOptions.Resolver].\ntype Types struct {\n\t// atomicExtFiles is used with sync/atomic and hence must be the first word\n\t// of the struct to guarantee 64-bit alignment.\n\tatomicExtFiles atomic.Uint64\n\textMu          sync.Mutex\n\n\tfiles *protoregistry.Files\n\n\textensionsByMessage map[extField]protoreflect.ExtensionDescriptor\n}\n\n// NewTypes creates a new Types registry with the provided files.\n// The Files registry is retained, and changes to Files will be reflected in Types.\n// It is not safe to concurrently change the Files while calling Types methods.\nfunc NewTypes(f *protoregistry.Files) *Types {\n\treturn &Types{\n\t\tfiles: f,\n\t}\n}\n\n// FindEnumByName looks up an enum by its full name;\n// e.g., \"google.protobuf.Field.Kind\".\n//\n// This returns (nil, [protoregistry.NotFound]) if not found.\nfunc (t *Types) FindEnumByName(name protoreflect.FullName) (protoreflect.EnumType, error) {\n\td, err := t.files.FindDescriptorByName(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ted, ok := d.(protoreflect.EnumDescriptor)\n\tif !ok {\n\t\treturn nil, errors.New(\"found wrong type: got %v, want enum\", descName(d))\n\t}\n\treturn NewEnumType(ed), nil\n}\n\n// FindExtensionByName looks up an extension field by the field's full name.\n// Note that this is the full name of the field as determined by\n// where the extension is declared and is unrelated to the full name of the\n// message being extended.\n//\n// This returns (nil, [protoregistry.NotFound]) if not found.\nfunc (t *Types) FindExtensionByName(name protoreflect.FullName) (protoreflect.ExtensionType, error) {\n\td, err := t.files.FindDescriptorByName(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\txd, ok := d.(protoreflect.ExtensionDescriptor)\n\tif !ok {\n\t\treturn nil, errors.New(\"found wrong type: got %v, want extension\", descName(d))\n\t}\n\treturn NewExtensionType(xd), nil\n}\n\n// FindExtensionByNumber looks up an extension field by the field number\n// within some parent message, identified by full name.\n//\n// This returns (nil, [protoregistry.NotFound]) if not found.\nfunc (t *Types) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) {\n\t// Construct the extension number map lazily, since not every user will need it.\n\t// Update the map if new files are added to the registry.\n\tif t.atomicExtFiles.Load() != uint64(t.files.NumFiles()) {\n\t\tt.updateExtensions()\n\t}\n\txd := t.extensionsByMessage[extField{message, field}]\n\tif xd == nil {\n\t\treturn nil, protoregistry.NotFound\n\t}\n\treturn NewExtensionType(xd), nil\n}\n\n// FindMessageByName looks up a message by its full name;\n// e.g. \"google.protobuf.Any\".\n//\n// This returns (nil, [protoregistry.NotFound]) if not found.\nfunc (t *Types) FindMessageByName(name protoreflect.FullName) (protoreflect.MessageType, error) {\n\td, err := t.files.FindDescriptorByName(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmd, ok := d.(protoreflect.MessageDescriptor)\n\tif !ok {\n\t\treturn nil, errors.New(\"found wrong type: got %v, want message\", descName(d))\n\t}\n\treturn NewMessageType(md), nil\n}\n\n// FindMessageByURL looks up a message by a URL identifier.\n// See documentation on google.protobuf.Any.type_url for the URL format.\n//\n// This returns (nil, [protoregistry.NotFound]) if not found.\nfunc (t *Types) FindMessageByURL(url string) (protoreflect.MessageType, error) {\n\t// This function is similar to FindMessageByName but\n\t// truncates anything before and including '/' in the URL.\n\tmessage := protoreflect.FullName(url)\n\tif i := strings.LastIndexByte(url, '/'); i >= 0 {\n\t\tmessage = message[i+len(\"/\"):]\n\t}\n\treturn t.FindMessageByName(message)\n}\n\nfunc (t *Types) updateExtensions() {\n\tt.extMu.Lock()\n\tdefer t.extMu.Unlock()\n\tif t.atomicExtFiles.Load() == uint64(t.files.NumFiles()) {\n\t\treturn\n\t}\n\tdefer t.atomicExtFiles.Store(uint64(t.files.NumFiles()))\n\tt.files.RangeFiles(func(fd protoreflect.FileDescriptor) bool {\n\t\tt.registerExtensions(fd.Extensions())\n\t\tt.registerExtensionsInMessages(fd.Messages())\n\t\treturn true\n\t})\n}\n\nfunc (t *Types) registerExtensionsInMessages(mds protoreflect.MessageDescriptors) {\n\tcount := mds.Len()\n\tfor i := 0; i < count; i++ {\n\t\tmd := mds.Get(i)\n\t\tt.registerExtensions(md.Extensions())\n\t\tt.registerExtensionsInMessages(md.Messages())\n\t}\n}\n\nfunc (t *Types) registerExtensions(xds protoreflect.ExtensionDescriptors) {\n\tcount := xds.Len()\n\tfor i := 0; i < count; i++ {\n\t\txd := xds.Get(i)\n\t\tfield := xd.Number()\n\t\tmessage := xd.ContainingMessage().FullName()\n\t\tif t.extensionsByMessage == nil {\n\t\t\tt.extensionsByMessage = make(map[extField]protoreflect.ExtensionDescriptor)\n\t\t}\n\t\tt.extensionsByMessage[extField{message, field}] = xd\n\t}\n}\n\nfunc descName(d protoreflect.Descriptor) string {\n\tswitch d.(type) {\n\tcase protoreflect.EnumDescriptor:\n\t\treturn \"enum\"\n\tcase protoreflect.EnumValueDescriptor:\n\t\treturn \"enum value\"\n\tcase protoreflect.MessageDescriptor:\n\t\treturn \"message\"\n\tcase protoreflect.ExtensionDescriptor:\n\t\treturn \"extension\"\n\tcase protoreflect.ServiceDescriptor:\n\t\treturn \"service\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"%T\", d)\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2023 Google Inc.  All rights reserved.\n//\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file or at\n// https://developers.google.com/open-source/licenses/bsd\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/go_features.proto\n\npackage gofeaturespb\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\ntype GoFeatures_APILevel int32\n\nconst (\n\t// API_LEVEL_UNSPECIFIED results in selecting the OPEN API,\n\t// but needs to be a separate value to distinguish between\n\t// an explicitly set api level or a missing api level.\n\tGoFeatures_API_LEVEL_UNSPECIFIED GoFeatures_APILevel = 0\n\tGoFeatures_API_OPEN              GoFeatures_APILevel = 1\n\tGoFeatures_API_HYBRID            GoFeatures_APILevel = 2\n\tGoFeatures_API_OPAQUE            GoFeatures_APILevel = 3\n)\n\n// Enum value maps for GoFeatures_APILevel.\nvar (\n\tGoFeatures_APILevel_name = map[int32]string{\n\t\t0: \"API_LEVEL_UNSPECIFIED\",\n\t\t1: \"API_OPEN\",\n\t\t2: \"API_HYBRID\",\n\t\t3: \"API_OPAQUE\",\n\t}\n\tGoFeatures_APILevel_value = map[string]int32{\n\t\t\"API_LEVEL_UNSPECIFIED\": 0,\n\t\t\"API_OPEN\":              1,\n\t\t\"API_HYBRID\":            2,\n\t\t\"API_OPAQUE\":            3,\n\t}\n)\n\nfunc (x GoFeatures_APILevel) Enum() *GoFeatures_APILevel {\n\tp := new(GoFeatures_APILevel)\n\t*p = x\n\treturn p\n}\n\nfunc (x GoFeatures_APILevel) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (GoFeatures_APILevel) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_go_features_proto_enumTypes[0].Descriptor()\n}\n\nfunc (GoFeatures_APILevel) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_go_features_proto_enumTypes[0]\n}\n\nfunc (x GoFeatures_APILevel) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *GoFeatures_APILevel) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = GoFeatures_APILevel(num)\n\treturn nil\n}\n\n// Deprecated: Use GoFeatures_APILevel.Descriptor instead.\nfunc (GoFeatures_APILevel) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_go_features_proto_rawDescGZIP(), []int{0, 0}\n}\n\ntype GoFeatures_StripEnumPrefix int32\n\nconst (\n\tGoFeatures_STRIP_ENUM_PREFIX_UNSPECIFIED   GoFeatures_StripEnumPrefix = 0\n\tGoFeatures_STRIP_ENUM_PREFIX_KEEP          GoFeatures_StripEnumPrefix = 1\n\tGoFeatures_STRIP_ENUM_PREFIX_GENERATE_BOTH GoFeatures_StripEnumPrefix = 2\n\tGoFeatures_STRIP_ENUM_PREFIX_STRIP         GoFeatures_StripEnumPrefix = 3\n)\n\n// Enum value maps for GoFeatures_StripEnumPrefix.\nvar (\n\tGoFeatures_StripEnumPrefix_name = map[int32]string{\n\t\t0: \"STRIP_ENUM_PREFIX_UNSPECIFIED\",\n\t\t1: \"STRIP_ENUM_PREFIX_KEEP\",\n\t\t2: \"STRIP_ENUM_PREFIX_GENERATE_BOTH\",\n\t\t3: \"STRIP_ENUM_PREFIX_STRIP\",\n\t}\n\tGoFeatures_StripEnumPrefix_value = map[string]int32{\n\t\t\"STRIP_ENUM_PREFIX_UNSPECIFIED\":   0,\n\t\t\"STRIP_ENUM_PREFIX_KEEP\":          1,\n\t\t\"STRIP_ENUM_PREFIX_GENERATE_BOTH\": 2,\n\t\t\"STRIP_ENUM_PREFIX_STRIP\":         3,\n\t}\n)\n\nfunc (x GoFeatures_StripEnumPrefix) Enum() *GoFeatures_StripEnumPrefix {\n\tp := new(GoFeatures_StripEnumPrefix)\n\t*p = x\n\treturn p\n}\n\nfunc (x GoFeatures_StripEnumPrefix) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (GoFeatures_StripEnumPrefix) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_go_features_proto_enumTypes[1].Descriptor()\n}\n\nfunc (GoFeatures_StripEnumPrefix) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_go_features_proto_enumTypes[1]\n}\n\nfunc (x GoFeatures_StripEnumPrefix) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *GoFeatures_StripEnumPrefix) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = GoFeatures_StripEnumPrefix(num)\n\treturn nil\n}\n\n// Deprecated: Use GoFeatures_StripEnumPrefix.Descriptor instead.\nfunc (GoFeatures_StripEnumPrefix) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_go_features_proto_rawDescGZIP(), []int{0, 1}\n}\n\ntype GoFeatures struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Whether or not to generate the deprecated UnmarshalJSON method for enums.\n\t// Can only be true for proto using the Open Struct api.\n\tLegacyUnmarshalJsonEnum *bool `protobuf:\"varint,1,opt,name=legacy_unmarshal_json_enum,json=legacyUnmarshalJsonEnum\" json:\"legacy_unmarshal_json_enum,omitempty\"`\n\t// One of OPEN, HYBRID or OPAQUE.\n\tApiLevel        *GoFeatures_APILevel        `protobuf:\"varint,2,opt,name=api_level,json=apiLevel,enum=pb.GoFeatures_APILevel\" json:\"api_level,omitempty\"`\n\tStripEnumPrefix *GoFeatures_StripEnumPrefix `protobuf:\"varint,3,opt,name=strip_enum_prefix,json=stripEnumPrefix,enum=pb.GoFeatures_StripEnumPrefix\" json:\"strip_enum_prefix,omitempty\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *GoFeatures) Reset() {\n\t*x = GoFeatures{}\n\tmi := &file_google_protobuf_go_features_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GoFeatures) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GoFeatures) ProtoMessage() {}\n\nfunc (x *GoFeatures) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_go_features_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GoFeatures.ProtoReflect.Descriptor instead.\nfunc (*GoFeatures) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_go_features_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *GoFeatures) GetLegacyUnmarshalJsonEnum() bool {\n\tif x != nil && x.LegacyUnmarshalJsonEnum != nil {\n\t\treturn *x.LegacyUnmarshalJsonEnum\n\t}\n\treturn false\n}\n\nfunc (x *GoFeatures) GetApiLevel() GoFeatures_APILevel {\n\tif x != nil && x.ApiLevel != nil {\n\t\treturn *x.ApiLevel\n\t}\n\treturn GoFeatures_API_LEVEL_UNSPECIFIED\n}\n\nfunc (x *GoFeatures) GetStripEnumPrefix() GoFeatures_StripEnumPrefix {\n\tif x != nil && x.StripEnumPrefix != nil {\n\t\treturn *x.StripEnumPrefix\n\t}\n\treturn GoFeatures_STRIP_ENUM_PREFIX_UNSPECIFIED\n}\n\nvar file_google_protobuf_go_features_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FeatureSet)(nil),\n\t\tExtensionType: (*GoFeatures)(nil),\n\t\tField:         1002,\n\t\tName:          \"pb.go\",\n\t\tTag:           \"bytes,1002,opt,name=go\",\n\t\tFilename:      \"google/protobuf/go_features.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FeatureSet.\nvar (\n\t// optional pb.GoFeatures go = 1002;\n\tE_Go = &file_google_protobuf_go_features_proto_extTypes[0]\n)\n\nvar File_google_protobuf_go_features_proto protoreflect.FileDescriptor\n\nconst file_google_protobuf_go_features_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"!google/protobuf/go_features.proto\\x12\\x02pb\\x1a google/protobuf/descriptor.proto\\\"\\xab\\x05\\n\" +\n\t\"\\n\" +\n\t\"GoFeatures\\x12\\xbe\\x01\\n\" +\n\t\"\\x1alegacy_unmarshal_json_enum\\x18\\x01 \\x01(\\bB\\x80\\x01\\x88\\x01\\x01\\x98\\x01\\x06\\x98\\x01\\x01\\xa2\\x01\\t\\x12\\x04true\\x18\\x84\\a\\xa2\\x01\\n\" +\n\t\"\\x12\\x05false\\x18\\xe7\\a\\xb2\\x01[\\b\\xe8\\a\\x10\\xe8\\a\\x1aSThe legacy UnmarshalJSON API is deprecated and will be removed in a future edition.R\\x17legacyUnmarshalJsonEnum\\x12t\\n\" +\n\t\"\\tapi_level\\x18\\x02 \\x01(\\x0e2\\x17.pb.GoFeatures.APILevelB>\\x88\\x01\\x01\\x98\\x01\\x03\\x98\\x01\\x01\\xa2\\x01\\x1a\\x12\\x15API_LEVEL_UNSPECIFIED\\x18\\x84\\a\\xa2\\x01\\x0f\\x12\\n\" +\n\t\"API_OPAQUE\\x18\\xe9\\a\\xb2\\x01\\x03\\b\\xe8\\aR\\bapiLevel\\x12|\\n\" +\n\t\"\\x11strip_enum_prefix\\x18\\x03 \\x01(\\x0e2\\x1e.pb.GoFeatures.StripEnumPrefixB0\\x88\\x01\\x01\\x98\\x01\\x06\\x98\\x01\\a\\x98\\x01\\x01\\xa2\\x01\\x1b\\x12\\x16STRIP_ENUM_PREFIX_KEEP\\x18\\x84\\a\\xb2\\x01\\x03\\b\\xe9\\aR\\x0fstripEnumPrefix\\\"S\\n\" +\n\t\"\\bAPILevel\\x12\\x19\\n\" +\n\t\"\\x15API_LEVEL_UNSPECIFIED\\x10\\x00\\x12\\f\\n\" +\n\t\"\\bAPI_OPEN\\x10\\x01\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"API_HYBRID\\x10\\x02\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"API_OPAQUE\\x10\\x03\\\"\\x92\\x01\\n\" +\n\t\"\\x0fStripEnumPrefix\\x12!\\n\" +\n\t\"\\x1dSTRIP_ENUM_PREFIX_UNSPECIFIED\\x10\\x00\\x12\\x1a\\n\" +\n\t\"\\x16STRIP_ENUM_PREFIX_KEEP\\x10\\x01\\x12#\\n\" +\n\t\"\\x1fSTRIP_ENUM_PREFIX_GENERATE_BOTH\\x10\\x02\\x12\\x1b\\n\" +\n\t\"\\x17STRIP_ENUM_PREFIX_STRIP\\x10\\x03:<\\n\" +\n\t\"\\x02go\\x12\\x1b.google.protobuf.FeatureSet\\x18\\xea\\a \\x01(\\v2\\x0e.pb.GoFeaturesR\\x02goB/Z-google.golang.org/protobuf/types/gofeaturespb\"\n\nvar (\n\tfile_google_protobuf_go_features_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_go_features_proto_rawDescData []byte\n)\n\nfunc file_google_protobuf_go_features_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_go_features_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_go_features_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_go_features_proto_rawDesc), len(file_google_protobuf_go_features_proto_rawDesc)))\n\t})\n\treturn file_google_protobuf_go_features_proto_rawDescData\n}\n\nvar file_google_protobuf_go_features_proto_enumTypes = make([]protoimpl.EnumInfo, 2)\nvar file_google_protobuf_go_features_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_protobuf_go_features_proto_goTypes = []any{\n\t(GoFeatures_APILevel)(0),        // 0: pb.GoFeatures.APILevel\n\t(GoFeatures_StripEnumPrefix)(0), // 1: pb.GoFeatures.StripEnumPrefix\n\t(*GoFeatures)(nil),              // 2: pb.GoFeatures\n\t(*descriptorpb.FeatureSet)(nil), // 3: google.protobuf.FeatureSet\n}\nvar file_google_protobuf_go_features_proto_depIdxs = []int32{\n\t0, // 0: pb.GoFeatures.api_level:type_name -> pb.GoFeatures.APILevel\n\t1, // 1: pb.GoFeatures.strip_enum_prefix:type_name -> pb.GoFeatures.StripEnumPrefix\n\t3, // 2: pb.go:extendee -> google.protobuf.FeatureSet\n\t2, // 3: pb.go:type_name -> pb.GoFeatures\n\t4, // [4:4] is the sub-list for method output_type\n\t4, // [4:4] is the sub-list for method input_type\n\t3, // [3:4] is the sub-list for extension type_name\n\t2, // [2:3] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_go_features_proto_init() }\nfunc file_google_protobuf_go_features_proto_init() {\n\tif File_google_protobuf_go_features_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_go_features_proto_rawDesc), len(file_google_protobuf_go_features_proto_rawDesc)),\n\t\t\tNumEnums:      2,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_go_features_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_go_features_proto_depIdxs,\n\t\tEnumInfos:         file_google_protobuf_go_features_proto_enumTypes,\n\t\tMessageInfos:      file_google_protobuf_go_features_proto_msgTypes,\n\t\tExtensionInfos:    file_google_protobuf_go_features_proto_extTypes,\n\t}.Build()\n\tFile_google_protobuf_go_features_proto = out.File\n\tfile_google_protobuf_go_features_proto_goTypes = nil\n\tfile_google_protobuf_go_features_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/any.proto\n\n// Package anypb contains generated types for google/protobuf/any.proto.\n//\n// The Any message is a dynamic representation of any other message value.\n// It is functionally a tuple of the full name of the remote message type and\n// the serialized bytes of the remote message value.\n//\n// # Constructing an Any\n//\n// An Any message containing another message value is constructed using New:\n//\n//\tany, err := anypb.New(m)\n//\tif err != nil {\n//\t\t... // handle error\n//\t}\n//\t... // make use of any\n//\n// # Unmarshaling an Any\n//\n// With a populated Any message, the underlying message can be serialized into\n// a remote concrete message value in a few ways.\n//\n// If the exact concrete type is known, then a new (or pre-existing) instance\n// of that message can be passed to the UnmarshalTo method:\n//\n//\tm := new(foopb.MyMessage)\n//\tif err := any.UnmarshalTo(m); err != nil {\n//\t\t... // handle error\n//\t}\n//\t... // make use of m\n//\n// If the exact concrete type is not known, then the UnmarshalNew method can be\n// used to unmarshal the contents into a new instance of the remote message type:\n//\n//\tm, err := any.UnmarshalNew()\n//\tif err != nil {\n//\t\t... // handle error\n//\t}\n//\t... // make use of m\n//\n// UnmarshalNew uses the global type registry to resolve the message type and\n// construct a new instance of that message to unmarshal into. In order for a\n// message type to appear in the global registry, the Go type representing that\n// protobuf message type must be linked into the Go binary. For messages\n// generated by protoc-gen-go, this is achieved through an import of the\n// generated Go package representing a .proto file.\n//\n// A common pattern with UnmarshalNew is to use a type switch with the resulting\n// proto.Message value:\n//\n//\tswitch m := m.(type) {\n//\tcase *foopb.MyMessage:\n//\t\t... // make use of m as a *foopb.MyMessage\n//\tcase *barpb.OtherMessage:\n//\t\t... // make use of m as a *barpb.OtherMessage\n//\tcase *bazpb.SomeMessage:\n//\t\t... // make use of m as a *bazpb.SomeMessage\n//\t}\n//\n// This pattern ensures that the generated packages containing the message types\n// listed in the case clauses are linked into the Go binary and therefore also\n// registered in the global registry.\n//\n// # Type checking an Any\n//\n// In order to type check whether an Any message represents some other message,\n// then use the MessageIs method:\n//\n//\tif any.MessageIs((*foopb.MyMessage)(nil)) {\n//\t\t... // make use of any, knowing that it contains a foopb.MyMessage\n//\t}\n//\n// The MessageIs method can also be used with an allocated instance of the target\n// message type if the intention is to unmarshal into it if the type matches:\n//\n//\tm := new(foopb.MyMessage)\n//\tif any.MessageIs(m) {\n//\t\tif err := any.UnmarshalTo(m); err != nil {\n//\t\t\t... // handle error\n//\t\t}\n//\t\t... // make use of m\n//\t}\npackage anypb\n\nimport (\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoregistry \"google.golang.org/protobuf/reflect/protoregistry\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tstrings \"strings\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\n// `Any` contains an arbitrary serialized protocol buffer message along with a\n// URL that describes the type of the serialized message.\n//\n// Protobuf library provides support to pack/unpack Any values in the form\n// of utility functions or additional generated methods of the Any type.\n//\n// Example 1: Pack and unpack a message in C++.\n//\n//\tFoo foo = ...;\n//\tAny any;\n//\tany.PackFrom(foo);\n//\t...\n//\tif (any.UnpackTo(&foo)) {\n//\t  ...\n//\t}\n//\n// Example 2: Pack and unpack a message in Java.\n//\n//\t   Foo foo = ...;\n//\t   Any any = Any.pack(foo);\n//\t   ...\n//\t   if (any.is(Foo.class)) {\n//\t     foo = any.unpack(Foo.class);\n//\t   }\n//\t   // or ...\n//\t   if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n//\t     foo = any.unpack(Foo.getDefaultInstance());\n//\t   }\n//\n//\tExample 3: Pack and unpack a message in Python.\n//\n//\t   foo = Foo(...)\n//\t   any = Any()\n//\t   any.Pack(foo)\n//\t   ...\n//\t   if any.Is(Foo.DESCRIPTOR):\n//\t     any.Unpack(foo)\n//\t     ...\n//\n//\tExample 4: Pack and unpack a message in Go\n//\n//\t    foo := &pb.Foo{...}\n//\t    any, err := anypb.New(foo)\n//\t    if err != nil {\n//\t      ...\n//\t    }\n//\t    ...\n//\t    foo := &pb.Foo{}\n//\t    if err := any.UnmarshalTo(foo); err != nil {\n//\t      ...\n//\t    }\n//\n// The pack methods provided by protobuf library will by default use\n// 'type.googleapis.com/full.type.name' as the type URL and the unpack\n// methods only use the fully qualified type name after the last '/'\n// in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n// name \"y.z\".\n//\n// JSON\n// ====\n// The JSON representation of an `Any` value uses the regular\n// representation of the deserialized, embedded message, with an\n// additional field `@type` which contains the type URL. Example:\n//\n//\tpackage google.profile;\n//\tmessage Person {\n//\t  string first_name = 1;\n//\t  string last_name = 2;\n//\t}\n//\n//\t{\n//\t  \"@type\": \"type.googleapis.com/google.profile.Person\",\n//\t  \"firstName\": <string>,\n//\t  \"lastName\": <string>\n//\t}\n//\n// If the embedded message type is well-known and has a custom JSON\n// representation, that representation will be embedded adding a field\n// `value` which holds the custom JSON in addition to the `@type`\n// field. Example (for message [google.protobuf.Duration][]):\n//\n//\t{\n//\t  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n//\t  \"value\": \"1.212s\"\n//\t}\ntype Any struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// A URL/resource name that uniquely identifies the type of the serialized\n\t// protocol buffer message. This string must contain at least\n\t// one \"/\" character. The last segment of the URL's path must represent\n\t// the fully qualified name of the type (as in\n\t// `path/google.protobuf.Duration`). The name should be in a canonical form\n\t// (e.g., leading \".\" is not accepted).\n\t//\n\t// In practice, teams usually precompile into the binary all types that they\n\t// expect it to use in the context of Any. However, for URLs which use the\n\t// scheme `http`, `https`, or no scheme, one can optionally set up a type\n\t// server that maps type URLs to message definitions as follows:\n\t//\n\t//   - If no scheme is provided, `https` is assumed.\n\t//   - An HTTP GET on the URL must yield a [google.protobuf.Type][]\n\t//     value in binary format, or produce an error.\n\t//   - Applications are allowed to cache lookup results based on the\n\t//     URL, or have them precompiled into a binary to avoid any\n\t//     lookup. Therefore, binary compatibility needs to be preserved\n\t//     on changes to types. (Use versioned type names to manage\n\t//     breaking changes.)\n\t//\n\t// Note: this functionality is not currently available in the official\n\t// protobuf release, and it is not used for type URLs beginning with\n\t// type.googleapis.com. As of May 2023, there are no widely used type server\n\t// implementations and no plans to implement one.\n\t//\n\t// Schemes other than `http`, `https` (or the empty scheme) might be\n\t// used with implementation specific semantics.\n\tTypeUrl string `protobuf:\"bytes,1,opt,name=type_url,json=typeUrl,proto3\" json:\"type_url,omitempty\"`\n\t// Must be a valid serialized protocol buffer of the above specified type.\n\tValue         []byte `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// New marshals src into a new Any instance.\nfunc New(src proto.Message) (*Any, error) {\n\tdst := new(Any)\n\tif err := dst.MarshalFrom(src); err != nil {\n\t\treturn nil, err\n\t}\n\treturn dst, nil\n}\n\n// MarshalFrom marshals src into dst as the underlying message\n// using the provided marshal options.\n//\n// If no options are specified, call dst.MarshalFrom instead.\nfunc MarshalFrom(dst *Any, src proto.Message, opts proto.MarshalOptions) error {\n\tconst urlPrefix = \"type.googleapis.com/\"\n\tif src == nil {\n\t\treturn protoimpl.X.NewError(\"invalid nil source message\")\n\t}\n\tb, err := opts.Marshal(src)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdst.TypeUrl = urlPrefix + string(src.ProtoReflect().Descriptor().FullName())\n\tdst.Value = b\n\treturn nil\n}\n\n// UnmarshalTo unmarshals the underlying message from src into dst\n// using the provided unmarshal options.\n// It reports an error if dst is not of the right message type.\n//\n// If no options are specified, call src.UnmarshalTo instead.\nfunc UnmarshalTo(src *Any, dst proto.Message, opts proto.UnmarshalOptions) error {\n\tif src == nil {\n\t\treturn protoimpl.X.NewError(\"invalid nil source message\")\n\t}\n\tif !src.MessageIs(dst) {\n\t\tgot := dst.ProtoReflect().Descriptor().FullName()\n\t\twant := src.MessageName()\n\t\treturn protoimpl.X.NewError(\"mismatched message type: got %q, want %q\", got, want)\n\t}\n\treturn opts.Unmarshal(src.GetValue(), dst)\n}\n\n// UnmarshalNew unmarshals the underlying message from src into dst,\n// which is newly created message using a type resolved from the type URL.\n// The message type is resolved according to opt.Resolver,\n// which should implement protoregistry.MessageTypeResolver.\n// It reports an error if the underlying message type could not be resolved.\n//\n// If no options are specified, call src.UnmarshalNew instead.\nfunc UnmarshalNew(src *Any, opts proto.UnmarshalOptions) (dst proto.Message, err error) {\n\tif src.GetTypeUrl() == \"\" {\n\t\treturn nil, protoimpl.X.NewError(\"invalid empty type URL\")\n\t}\n\tif opts.Resolver == nil {\n\t\topts.Resolver = protoregistry.GlobalTypes\n\t}\n\tr, ok := opts.Resolver.(protoregistry.MessageTypeResolver)\n\tif !ok {\n\t\treturn nil, protoregistry.NotFound\n\t}\n\tmt, err := r.FindMessageByURL(src.GetTypeUrl())\n\tif err != nil {\n\t\tif err == protoregistry.NotFound {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, protoimpl.X.NewError(\"could not resolve %q: %v\", src.GetTypeUrl(), err)\n\t}\n\tdst = mt.New().Interface()\n\treturn dst, opts.Unmarshal(src.GetValue(), dst)\n}\n\n// MessageIs reports whether the underlying message is of the same type as m.\nfunc (x *Any) MessageIs(m proto.Message) bool {\n\tif m == nil {\n\t\treturn false\n\t}\n\turl := x.GetTypeUrl()\n\tname := string(m.ProtoReflect().Descriptor().FullName())\n\tif !strings.HasSuffix(url, name) {\n\t\treturn false\n\t}\n\treturn len(url) == len(name) || url[len(url)-len(name)-1] == '/'\n}\n\n// MessageName reports the full name of the underlying message,\n// returning an empty string if invalid.\nfunc (x *Any) MessageName() protoreflect.FullName {\n\turl := x.GetTypeUrl()\n\tname := protoreflect.FullName(url)\n\tif i := strings.LastIndexByte(url, '/'); i >= 0 {\n\t\tname = name[i+len(\"/\"):]\n\t}\n\tif !name.IsValid() {\n\t\treturn \"\"\n\t}\n\treturn name\n}\n\n// MarshalFrom marshals m into x as the underlying message.\nfunc (x *Any) MarshalFrom(m proto.Message) error {\n\treturn MarshalFrom(x, m, proto.MarshalOptions{})\n}\n\n// UnmarshalTo unmarshals the contents of the underlying message of x into m.\n// It resets m before performing the unmarshal operation.\n// It reports an error if m is not of the right message type.\nfunc (x *Any) UnmarshalTo(m proto.Message) error {\n\treturn UnmarshalTo(x, m, proto.UnmarshalOptions{})\n}\n\n// UnmarshalNew unmarshals the contents of the underlying message of x into\n// a newly allocated message of the specified type.\n// It reports an error if the underlying message type could not be resolved.\nfunc (x *Any) UnmarshalNew() (proto.Message, error) {\n\treturn UnmarshalNew(x, proto.UnmarshalOptions{})\n}\n\nfunc (x *Any) Reset() {\n\t*x = Any{}\n\tmi := &file_google_protobuf_any_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Any) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Any) ProtoMessage() {}\n\nfunc (x *Any) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_any_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Any.ProtoReflect.Descriptor instead.\nfunc (*Any) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_any_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Any) GetTypeUrl() string {\n\tif x != nil {\n\t\treturn x.TypeUrl\n\t}\n\treturn \"\"\n}\n\nfunc (x *Any) GetValue() []byte {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nvar File_google_protobuf_any_proto protoreflect.FileDescriptor\n\nconst file_google_protobuf_any_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x19google/protobuf/any.proto\\x12\\x0fgoogle.protobuf\\\"6\\n\" +\n\t\"\\x03Any\\x12\\x19\\n\" +\n\t\"\\btype_url\\x18\\x01 \\x01(\\tR\\atypeUrl\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\fR\\x05valueBv\\n\" +\n\t\"\\x13com.google.protobufB\\bAnyProtoP\\x01Z,google.golang.org/protobuf/types/known/anypb\\xa2\\x02\\x03GPB\\xaa\\x02\\x1eGoogle.Protobuf.WellKnownTypesb\\x06proto3\"\n\nvar (\n\tfile_google_protobuf_any_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_any_proto_rawDescData []byte\n)\n\nfunc file_google_protobuf_any_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_any_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_any_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_any_proto_rawDesc), len(file_google_protobuf_any_proto_rawDesc)))\n\t})\n\treturn file_google_protobuf_any_proto_rawDescData\n}\n\nvar file_google_protobuf_any_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_protobuf_any_proto_goTypes = []any{\n\t(*Any)(nil), // 0: google.protobuf.Any\n}\nvar file_google_protobuf_any_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_any_proto_init() }\nfunc file_google_protobuf_any_proto_init() {\n\tif File_google_protobuf_any_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_any_proto_rawDesc), len(file_google_protobuf_any_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_any_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_any_proto_depIdxs,\n\t\tMessageInfos:      file_google_protobuf_any_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_any_proto = out.File\n\tfile_google_protobuf_any_proto_goTypes = nil\n\tfile_google_protobuf_any_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/duration.proto\n\n// Package durationpb contains generated types for google/protobuf/duration.proto.\n//\n// The Duration message represents a signed span of time.\n//\n// # Conversion to a Go Duration\n//\n// The AsDuration method can be used to convert a Duration message to a\n// standard Go time.Duration value:\n//\n//\td := dur.AsDuration()\n//\t... // make use of d as a time.Duration\n//\n// Converting to a time.Duration is a common operation so that the extensive\n// set of time-based operations provided by the time package can be leveraged.\n// See https://golang.org/pkg/time for more information.\n//\n// The AsDuration method performs the conversion on a best-effort basis.\n// Durations with denormal values (e.g., nanoseconds beyond -99999999 and\n// +99999999, inclusive; or seconds and nanoseconds with opposite signs)\n// are normalized during the conversion to a time.Duration. To manually check for\n// invalid Duration per the documented limitations in duration.proto,\n// additionally call the CheckValid method:\n//\n//\tif err := dur.CheckValid(); err != nil {\n//\t\t... // handle error\n//\t}\n//\n// Note that the documented limitations in duration.proto does not protect a\n// Duration from overflowing the representable range of a time.Duration in Go.\n// The AsDuration method uses saturation arithmetic such that an overflow clamps\n// the resulting value to the closest representable value (e.g., math.MaxInt64\n// for positive overflow and math.MinInt64 for negative overflow).\n//\n// # Conversion from a Go Duration\n//\n// The durationpb.New function can be used to construct a Duration message\n// from a standard Go time.Duration value:\n//\n//\tdur := durationpb.New(d)\n//\t... // make use of d as a *durationpb.Duration\npackage durationpb\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tmath \"math\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\ttime \"time\"\n\tunsafe \"unsafe\"\n)\n\n// A Duration represents a signed, fixed-length span of time represented\n// as a count of seconds and fractions of seconds at nanosecond\n// resolution. It is independent of any calendar and concepts like \"day\"\n// or \"month\". It is related to Timestamp in that the difference between\n// two Timestamp values is a Duration and it can be added or subtracted\n// from a Timestamp. Range is approximately +-10,000 years.\n//\n// # Examples\n//\n// Example 1: Compute Duration from two Timestamps in pseudo code.\n//\n//\tTimestamp start = ...;\n//\tTimestamp end = ...;\n//\tDuration duration = ...;\n//\n//\tduration.seconds = end.seconds - start.seconds;\n//\tduration.nanos = end.nanos - start.nanos;\n//\n//\tif (duration.seconds < 0 && duration.nanos > 0) {\n//\t  duration.seconds += 1;\n//\t  duration.nanos -= 1000000000;\n//\t} else if (duration.seconds > 0 && duration.nanos < 0) {\n//\t  duration.seconds -= 1;\n//\t  duration.nanos += 1000000000;\n//\t}\n//\n// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.\n//\n//\tTimestamp start = ...;\n//\tDuration duration = ...;\n//\tTimestamp end = ...;\n//\n//\tend.seconds = start.seconds + duration.seconds;\n//\tend.nanos = start.nanos + duration.nanos;\n//\n//\tif (end.nanos < 0) {\n//\t  end.seconds -= 1;\n//\t  end.nanos += 1000000000;\n//\t} else if (end.nanos >= 1000000000) {\n//\t  end.seconds += 1;\n//\t  end.nanos -= 1000000000;\n//\t}\n//\n// Example 3: Compute Duration from datetime.timedelta in Python.\n//\n//\ttd = datetime.timedelta(days=3, minutes=10)\n//\tduration = Duration()\n//\tduration.FromTimedelta(td)\n//\n// # JSON Mapping\n//\n// In JSON format, the Duration type is encoded as a string rather than an\n// object, where the string ends in the suffix \"s\" (indicating seconds) and\n// is preceded by the number of seconds, with nanoseconds expressed as\n// fractional seconds. For example, 3 seconds with 0 nanoseconds should be\n// encoded in JSON format as \"3s\", while 3 seconds and 1 nanosecond should\n// be expressed in JSON format as \"3.000000001s\", and 3 seconds and 1\n// microsecond should be expressed in JSON format as \"3.000001s\".\ntype Duration struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Signed seconds of the span of time. Must be from -315,576,000,000\n\t// to +315,576,000,000 inclusive. Note: these bounds are computed from:\n\t// 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n\tSeconds int64 `protobuf:\"varint,1,opt,name=seconds,proto3\" json:\"seconds,omitempty\"`\n\t// Signed fractions of a second at nanosecond resolution of the span\n\t// of time. Durations less than one second are represented with a 0\n\t// `seconds` field and a positive or negative `nanos` field. For durations\n\t// of one second or more, a non-zero value for the `nanos` field must be\n\t// of the same sign as the `seconds` field. Must be from -999,999,999\n\t// to +999,999,999 inclusive.\n\tNanos         int32 `protobuf:\"varint,2,opt,name=nanos,proto3\" json:\"nanos,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// New constructs a new Duration from the provided time.Duration.\nfunc New(d time.Duration) *Duration {\n\tnanos := d.Nanoseconds()\n\tsecs := nanos / 1e9\n\tnanos -= secs * 1e9\n\treturn &Duration{Seconds: int64(secs), Nanos: int32(nanos)}\n}\n\n// AsDuration converts x to a time.Duration,\n// returning the closest duration value in the event of overflow.\nfunc (x *Duration) AsDuration() time.Duration {\n\tsecs := x.GetSeconds()\n\tnanos := x.GetNanos()\n\td := time.Duration(secs) * time.Second\n\toverflow := d/time.Second != time.Duration(secs)\n\td += time.Duration(nanos) * time.Nanosecond\n\toverflow = overflow || (secs < 0 && nanos < 0 && d > 0)\n\toverflow = overflow || (secs > 0 && nanos > 0 && d < 0)\n\tif overflow {\n\t\tswitch {\n\t\tcase secs < 0:\n\t\t\treturn time.Duration(math.MinInt64)\n\t\tcase secs > 0:\n\t\t\treturn time.Duration(math.MaxInt64)\n\t\t}\n\t}\n\treturn d\n}\n\n// IsValid reports whether the duration is valid.\n// It is equivalent to CheckValid == nil.\nfunc (x *Duration) IsValid() bool {\n\treturn x.check() == 0\n}\n\n// CheckValid returns an error if the duration is invalid.\n// In particular, it checks whether the value is within the range of\n// -10000 years to +10000 years inclusive.\n// An error is reported for a nil Duration.\nfunc (x *Duration) CheckValid() error {\n\tswitch x.check() {\n\tcase invalidNil:\n\t\treturn protoimpl.X.NewError(\"invalid nil Duration\")\n\tcase invalidUnderflow:\n\t\treturn protoimpl.X.NewError(\"duration (%v) exceeds -10000 years\", x)\n\tcase invalidOverflow:\n\t\treturn protoimpl.X.NewError(\"duration (%v) exceeds +10000 years\", x)\n\tcase invalidNanosRange:\n\t\treturn protoimpl.X.NewError(\"duration (%v) has out-of-range nanos\", x)\n\tcase invalidNanosSign:\n\t\treturn protoimpl.X.NewError(\"duration (%v) has seconds and nanos with different signs\", x)\n\tdefault:\n\t\treturn nil\n\t}\n}\n\nconst (\n\t_ = iota\n\tinvalidNil\n\tinvalidUnderflow\n\tinvalidOverflow\n\tinvalidNanosRange\n\tinvalidNanosSign\n)\n\nfunc (x *Duration) check() uint {\n\tconst absDuration = 315576000000 // 10000yr * 365.25day/yr * 24hr/day * 60min/hr * 60sec/min\n\tsecs := x.GetSeconds()\n\tnanos := x.GetNanos()\n\tswitch {\n\tcase x == nil:\n\t\treturn invalidNil\n\tcase secs < -absDuration:\n\t\treturn invalidUnderflow\n\tcase secs > +absDuration:\n\t\treturn invalidOverflow\n\tcase nanos <= -1e9 || nanos >= +1e9:\n\t\treturn invalidNanosRange\n\tcase (secs > 0 && nanos < 0) || (secs < 0 && nanos > 0):\n\t\treturn invalidNanosSign\n\tdefault:\n\t\treturn 0\n\t}\n}\n\nfunc (x *Duration) Reset() {\n\t*x = Duration{}\n\tmi := &file_google_protobuf_duration_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Duration) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Duration) ProtoMessage() {}\n\nfunc (x *Duration) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_duration_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Duration.ProtoReflect.Descriptor instead.\nfunc (*Duration) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_duration_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Duration) GetSeconds() int64 {\n\tif x != nil {\n\t\treturn x.Seconds\n\t}\n\treturn 0\n}\n\nfunc (x *Duration) GetNanos() int32 {\n\tif x != nil {\n\t\treturn x.Nanos\n\t}\n\treturn 0\n}\n\nvar File_google_protobuf_duration_proto protoreflect.FileDescriptor\n\nconst file_google_protobuf_duration_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1egoogle/protobuf/duration.proto\\x12\\x0fgoogle.protobuf\\\":\\n\" +\n\t\"\\bDuration\\x12\\x18\\n\" +\n\t\"\\aseconds\\x18\\x01 \\x01(\\x03R\\aseconds\\x12\\x14\\n\" +\n\t\"\\x05nanos\\x18\\x02 \\x01(\\x05R\\x05nanosB\\x83\\x01\\n\" +\n\t\"\\x13com.google.protobufB\\rDurationProtoP\\x01Z1google.golang.org/protobuf/types/known/durationpb\\xf8\\x01\\x01\\xa2\\x02\\x03GPB\\xaa\\x02\\x1eGoogle.Protobuf.WellKnownTypesb\\x06proto3\"\n\nvar (\n\tfile_google_protobuf_duration_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_duration_proto_rawDescData []byte\n)\n\nfunc file_google_protobuf_duration_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_duration_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_duration_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_duration_proto_rawDesc), len(file_google_protobuf_duration_proto_rawDesc)))\n\t})\n\treturn file_google_protobuf_duration_proto_rawDescData\n}\n\nvar file_google_protobuf_duration_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_protobuf_duration_proto_goTypes = []any{\n\t(*Duration)(nil), // 0: google.protobuf.Duration\n}\nvar file_google_protobuf_duration_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_duration_proto_init() }\nfunc file_google_protobuf_duration_proto_init() {\n\tif File_google_protobuf_duration_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_duration_proto_rawDesc), len(file_google_protobuf_duration_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_duration_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_duration_proto_depIdxs,\n\t\tMessageInfos:      file_google_protobuf_duration_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_duration_proto = out.File\n\tfile_google_protobuf_duration_proto_goTypes = nil\n\tfile_google_protobuf_duration_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/known/emptypb/empty.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/empty.proto\n\npackage emptypb\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\n// A generic empty message that you can re-use to avoid defining duplicated\n// empty messages in your APIs. A typical example is to use it as the request\n// or the response type of an API method. For instance:\n//\n//\tservice Foo {\n//\t  rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n//\t}\ntype Empty struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Empty) Reset() {\n\t*x = Empty{}\n\tmi := &file_google_protobuf_empty_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Empty) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Empty) ProtoMessage() {}\n\nfunc (x *Empty) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_empty_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Empty.ProtoReflect.Descriptor instead.\nfunc (*Empty) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_empty_proto_rawDescGZIP(), []int{0}\n}\n\nvar File_google_protobuf_empty_proto protoreflect.FileDescriptor\n\nconst file_google_protobuf_empty_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1bgoogle/protobuf/empty.proto\\x12\\x0fgoogle.protobuf\\\"\\a\\n\" +\n\t\"\\x05EmptyB}\\n\" +\n\t\"\\x13com.google.protobufB\\n\" +\n\t\"EmptyProtoP\\x01Z.google.golang.org/protobuf/types/known/emptypb\\xf8\\x01\\x01\\xa2\\x02\\x03GPB\\xaa\\x02\\x1eGoogle.Protobuf.WellKnownTypesb\\x06proto3\"\n\nvar (\n\tfile_google_protobuf_empty_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_empty_proto_rawDescData []byte\n)\n\nfunc file_google_protobuf_empty_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_empty_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_empty_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_empty_proto_rawDesc), len(file_google_protobuf_empty_proto_rawDesc)))\n\t})\n\treturn file_google_protobuf_empty_proto_rawDescData\n}\n\nvar file_google_protobuf_empty_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_protobuf_empty_proto_goTypes = []any{\n\t(*Empty)(nil), // 0: google.protobuf.Empty\n}\nvar file_google_protobuf_empty_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_empty_proto_init() }\nfunc file_google_protobuf_empty_proto_init() {\n\tif File_google_protobuf_empty_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_empty_proto_rawDesc), len(file_google_protobuf_empty_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_empty_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_empty_proto_depIdxs,\n\t\tMessageInfos:      file_google_protobuf_empty_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_empty_proto = out.File\n\tfile_google_protobuf_empty_proto_goTypes = nil\n\tfile_google_protobuf_empty_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/known/structpb/struct.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/struct.proto\n\n// Package structpb contains generated types for google/protobuf/struct.proto.\n//\n// The messages (i.e., Value, Struct, and ListValue) defined in struct.proto are\n// used to represent arbitrary JSON. The Value message represents a JSON value,\n// the Struct message represents a JSON object, and the ListValue message\n// represents a JSON array. See https://json.org for more information.\n//\n// The Value, Struct, and ListValue types have generated MarshalJSON and\n// UnmarshalJSON methods such that they serialize JSON equivalent to what the\n// messages themselves represent. Use of these types with the\n// \"google.golang.org/protobuf/encoding/protojson\" package\n// ensures that they will be serialized as their JSON equivalent.\n//\n// # Conversion to and from a Go interface\n//\n// The standard Go \"encoding/json\" package has functionality to serialize\n// arbitrary types to a large degree. The Value.AsInterface, Struct.AsMap, and\n// ListValue.AsSlice methods can convert the protobuf message representation into\n// a form represented by any, map[string]any, and []any.\n// This form can be used with other packages that operate on such data structures\n// and also directly with the standard json package.\n//\n// In order to convert the any, map[string]any, and []any\n// forms back as Value, Struct, and ListValue messages, use the NewStruct,\n// NewList, and NewValue constructor functions.\n//\n// # Example usage\n//\n// Consider the following example JSON object:\n//\n//\t{\n//\t\t\"firstName\": \"John\",\n//\t\t\"lastName\": \"Smith\",\n//\t\t\"isAlive\": true,\n//\t\t\"age\": 27,\n//\t\t\"address\": {\n//\t\t\t\"streetAddress\": \"21 2nd Street\",\n//\t\t\t\"city\": \"New York\",\n//\t\t\t\"state\": \"NY\",\n//\t\t\t\"postalCode\": \"10021-3100\"\n//\t\t},\n//\t\t\"phoneNumbers\": [\n//\t\t\t{\n//\t\t\t\t\"type\": \"home\",\n//\t\t\t\t\"number\": \"212 555-1234\"\n//\t\t\t},\n//\t\t\t{\n//\t\t\t\t\"type\": \"office\",\n//\t\t\t\t\"number\": \"646 555-4567\"\n//\t\t\t}\n//\t\t],\n//\t\t\"children\": [],\n//\t\t\"spouse\": null\n//\t}\n//\n// To construct a Value message representing the above JSON object:\n//\n//\tm, err := structpb.NewValue(map[string]any{\n//\t\t\"firstName\": \"John\",\n//\t\t\"lastName\":  \"Smith\",\n//\t\t\"isAlive\":   true,\n//\t\t\"age\":       27,\n//\t\t\"address\": map[string]any{\n//\t\t\t\"streetAddress\": \"21 2nd Street\",\n//\t\t\t\"city\":          \"New York\",\n//\t\t\t\"state\":         \"NY\",\n//\t\t\t\"postalCode\":    \"10021-3100\",\n//\t\t},\n//\t\t\"phoneNumbers\": []any{\n//\t\t\tmap[string]any{\n//\t\t\t\t\"type\":   \"home\",\n//\t\t\t\t\"number\": \"212 555-1234\",\n//\t\t\t},\n//\t\t\tmap[string]any{\n//\t\t\t\t\"type\":   \"office\",\n//\t\t\t\t\"number\": \"646 555-4567\",\n//\t\t\t},\n//\t\t},\n//\t\t\"children\": []any{},\n//\t\t\"spouse\":   nil,\n//\t})\n//\tif err != nil {\n//\t\t... // handle error\n//\t}\n//\t... // make use of m as a *structpb.Value\npackage structpb\n\nimport (\n\tbase64 \"encoding/base64\"\n\tjson \"encoding/json\"\n\tprotojson \"google.golang.org/protobuf/encoding/protojson\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tmath \"math\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tutf8 \"unicode/utf8\"\n\tunsafe \"unsafe\"\n)\n\n// `NullValue` is a singleton enumeration to represent the null value for the\n// `Value` type union.\n//\n// The JSON representation for `NullValue` is JSON `null`.\ntype NullValue int32\n\nconst (\n\t// Null value.\n\tNullValue_NULL_VALUE NullValue = 0\n)\n\n// Enum value maps for NullValue.\nvar (\n\tNullValue_name = map[int32]string{\n\t\t0: \"NULL_VALUE\",\n\t}\n\tNullValue_value = map[string]int32{\n\t\t\"NULL_VALUE\": 0,\n\t}\n)\n\nfunc (x NullValue) Enum() *NullValue {\n\tp := new(NullValue)\n\t*p = x\n\treturn p\n}\n\nfunc (x NullValue) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (NullValue) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_struct_proto_enumTypes[0].Descriptor()\n}\n\nfunc (NullValue) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_struct_proto_enumTypes[0]\n}\n\nfunc (x NullValue) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use NullValue.Descriptor instead.\nfunc (NullValue) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_struct_proto_rawDescGZIP(), []int{0}\n}\n\n// `Struct` represents a structured data value, consisting of fields\n// which map to dynamically typed values. In some languages, `Struct`\n// might be supported by a native representation. For example, in\n// scripting languages like JS a struct is represented as an\n// object. The details of that representation are described together\n// with the proto support for the language.\n//\n// The JSON representation for `Struct` is JSON object.\ntype Struct struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Unordered map of dynamically typed values.\n\tFields        map[string]*Value `protobuf:\"bytes,1,rep,name=fields,proto3\" json:\"fields,omitempty\" protobuf_key:\"bytes,1,opt,name=key\" protobuf_val:\"bytes,2,opt,name=value\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// NewStruct constructs a Struct from a general-purpose Go map.\n// The map keys must be valid UTF-8.\n// The map values are converted using NewValue.\nfunc NewStruct(v map[string]any) (*Struct, error) {\n\tx := &Struct{Fields: make(map[string]*Value, len(v))}\n\tfor k, v := range v {\n\t\tif !utf8.ValidString(k) {\n\t\t\treturn nil, protoimpl.X.NewError(\"invalid UTF-8 in string: %q\", k)\n\t\t}\n\t\tvar err error\n\t\tx.Fields[k], err = NewValue(v)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn x, nil\n}\n\n// AsMap converts x to a general-purpose Go map.\n// The map values are converted by calling Value.AsInterface.\nfunc (x *Struct) AsMap() map[string]any {\n\tf := x.GetFields()\n\tvs := make(map[string]any, len(f))\n\tfor k, v := range f {\n\t\tvs[k] = v.AsInterface()\n\t}\n\treturn vs\n}\n\nfunc (x *Struct) MarshalJSON() ([]byte, error) {\n\treturn protojson.Marshal(x)\n}\n\nfunc (x *Struct) UnmarshalJSON(b []byte) error {\n\treturn protojson.Unmarshal(b, x)\n}\n\nfunc (x *Struct) Reset() {\n\t*x = Struct{}\n\tmi := &file_google_protobuf_struct_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Struct) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Struct) ProtoMessage() {}\n\nfunc (x *Struct) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_struct_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Struct.ProtoReflect.Descriptor instead.\nfunc (*Struct) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_struct_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Struct) GetFields() map[string]*Value {\n\tif x != nil {\n\t\treturn x.Fields\n\t}\n\treturn nil\n}\n\n// `Value` represents a dynamically typed value which can be either\n// null, a number, a string, a boolean, a recursive struct value, or a\n// list of values. A producer of value is expected to set one of these\n// variants. Absence of any variant indicates an error.\n//\n// The JSON representation for `Value` is JSON value.\ntype Value struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The kind of value.\n\t//\n\t// Types that are valid to be assigned to Kind:\n\t//\n\t//\t*Value_NullValue\n\t//\t*Value_NumberValue\n\t//\t*Value_StringValue\n\t//\t*Value_BoolValue\n\t//\t*Value_StructValue\n\t//\t*Value_ListValue\n\tKind          isValue_Kind `protobuf_oneof:\"kind\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// NewValue constructs a Value from a general-purpose Go interface.\n//\n//\t╔═══════════════════════════════════════╤════════════════════════════════════════════╗\n//\t║ Go type                               │ Conversion                                 ║\n//\t╠═══════════════════════════════════════╪════════════════════════════════════════════╣\n//\t║ nil                                   │ stored as NullValue                        ║\n//\t║ bool                                  │ stored as BoolValue                        ║\n//\t║ int, int8, int16, int32, int64        │ stored as NumberValue                      ║\n//\t║ uint, uint8, uint16, uint32, uint64   │ stored as NumberValue                      ║\n//\t║ float32, float64                      │ stored as NumberValue                      ║\n//\t║ json.Number                           │ stored as NumberValue                      ║\n//\t║ string                                │ stored as StringValue; must be valid UTF-8 ║\n//\t║ []byte                                │ stored as StringValue; base64-encoded      ║\n//\t║ map[string]any                        │ stored as StructValue                      ║\n//\t║ []any                                 │ stored as ListValue                        ║\n//\t╚═══════════════════════════════════════╧════════════════════════════════════════════╝\n//\n// When converting an int64 or uint64 to a NumberValue, numeric precision loss\n// is possible since they are stored as a float64.\nfunc NewValue(v any) (*Value, error) {\n\tswitch v := v.(type) {\n\tcase nil:\n\t\treturn NewNullValue(), nil\n\tcase bool:\n\t\treturn NewBoolValue(v), nil\n\tcase int:\n\t\treturn NewNumberValue(float64(v)), nil\n\tcase int8:\n\t\treturn NewNumberValue(float64(v)), nil\n\tcase int16:\n\t\treturn NewNumberValue(float64(v)), nil\n\tcase int32:\n\t\treturn NewNumberValue(float64(v)), nil\n\tcase int64:\n\t\treturn NewNumberValue(float64(v)), nil\n\tcase uint:\n\t\treturn NewNumberValue(float64(v)), nil\n\tcase uint8:\n\t\treturn NewNumberValue(float64(v)), nil\n\tcase uint16:\n\t\treturn NewNumberValue(float64(v)), nil\n\tcase uint32:\n\t\treturn NewNumberValue(float64(v)), nil\n\tcase uint64:\n\t\treturn NewNumberValue(float64(v)), nil\n\tcase float32:\n\t\treturn NewNumberValue(float64(v)), nil\n\tcase float64:\n\t\treturn NewNumberValue(float64(v)), nil\n\tcase json.Number:\n\t\tn, err := v.Float64()\n\t\tif err != nil {\n\t\t\treturn nil, protoimpl.X.NewError(\"invalid number format %q, expected a float64: %v\", v, err)\n\t\t}\n\t\treturn NewNumberValue(n), nil\n\tcase string:\n\t\tif !utf8.ValidString(v) {\n\t\t\treturn nil, protoimpl.X.NewError(\"invalid UTF-8 in string: %q\", v)\n\t\t}\n\t\treturn NewStringValue(v), nil\n\tcase []byte:\n\t\ts := base64.StdEncoding.EncodeToString(v)\n\t\treturn NewStringValue(s), nil\n\tcase map[string]any:\n\t\tv2, err := NewStruct(v)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn NewStructValue(v2), nil\n\tcase []any:\n\t\tv2, err := NewList(v)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn NewListValue(v2), nil\n\tdefault:\n\t\treturn nil, protoimpl.X.NewError(\"invalid type: %T\", v)\n\t}\n}\n\n// NewNullValue constructs a new null Value.\nfunc NewNullValue() *Value {\n\treturn &Value{Kind: &Value_NullValue{NullValue: NullValue_NULL_VALUE}}\n}\n\n// NewBoolValue constructs a new boolean Value.\nfunc NewBoolValue(v bool) *Value {\n\treturn &Value{Kind: &Value_BoolValue{BoolValue: v}}\n}\n\n// NewNumberValue constructs a new number Value.\nfunc NewNumberValue(v float64) *Value {\n\treturn &Value{Kind: &Value_NumberValue{NumberValue: v}}\n}\n\n// NewStringValue constructs a new string Value.\nfunc NewStringValue(v string) *Value {\n\treturn &Value{Kind: &Value_StringValue{StringValue: v}}\n}\n\n// NewStructValue constructs a new struct Value.\nfunc NewStructValue(v *Struct) *Value {\n\treturn &Value{Kind: &Value_StructValue{StructValue: v}}\n}\n\n// NewListValue constructs a new list Value.\nfunc NewListValue(v *ListValue) *Value {\n\treturn &Value{Kind: &Value_ListValue{ListValue: v}}\n}\n\n// AsInterface converts x to a general-purpose Go interface.\n//\n// Calling Value.MarshalJSON and \"encoding/json\".Marshal on this output produce\n// semantically equivalent JSON (assuming no errors occur).\n//\n// Floating-point values (i.e., \"NaN\", \"Infinity\", and \"-Infinity\") are\n// converted as strings to remain compatible with MarshalJSON.\nfunc (x *Value) AsInterface() any {\n\tswitch v := x.GetKind().(type) {\n\tcase *Value_NumberValue:\n\t\tif v != nil {\n\t\t\tswitch {\n\t\t\tcase math.IsNaN(v.NumberValue):\n\t\t\t\treturn \"NaN\"\n\t\t\tcase math.IsInf(v.NumberValue, +1):\n\t\t\t\treturn \"Infinity\"\n\t\t\tcase math.IsInf(v.NumberValue, -1):\n\t\t\t\treturn \"-Infinity\"\n\t\t\tdefault:\n\t\t\t\treturn v.NumberValue\n\t\t\t}\n\t\t}\n\tcase *Value_StringValue:\n\t\tif v != nil {\n\t\t\treturn v.StringValue\n\t\t}\n\tcase *Value_BoolValue:\n\t\tif v != nil {\n\t\t\treturn v.BoolValue\n\t\t}\n\tcase *Value_StructValue:\n\t\tif v != nil {\n\t\t\treturn v.StructValue.AsMap()\n\t\t}\n\tcase *Value_ListValue:\n\t\tif v != nil {\n\t\t\treturn v.ListValue.AsSlice()\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Value) MarshalJSON() ([]byte, error) {\n\treturn protojson.Marshal(x)\n}\n\nfunc (x *Value) UnmarshalJSON(b []byte) error {\n\treturn protojson.Unmarshal(b, x)\n}\n\nfunc (x *Value) Reset() {\n\t*x = Value{}\n\tmi := &file_google_protobuf_struct_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Value) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Value) ProtoMessage() {}\n\nfunc (x *Value) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_struct_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Value.ProtoReflect.Descriptor instead.\nfunc (*Value) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_struct_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *Value) GetKind() isValue_Kind {\n\tif x != nil {\n\t\treturn x.Kind\n\t}\n\treturn nil\n}\n\nfunc (x *Value) GetNullValue() NullValue {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_NullValue); ok {\n\t\t\treturn x.NullValue\n\t\t}\n\t}\n\treturn NullValue_NULL_VALUE\n}\n\nfunc (x *Value) GetNumberValue() float64 {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_NumberValue); ok {\n\t\t\treturn x.NumberValue\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (x *Value) GetStringValue() string {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_StringValue); ok {\n\t\t\treturn x.StringValue\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (x *Value) GetBoolValue() bool {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_BoolValue); ok {\n\t\t\treturn x.BoolValue\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (x *Value) GetStructValue() *Struct {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_StructValue); ok {\n\t\t\treturn x.StructValue\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (x *Value) GetListValue() *ListValue {\n\tif x != nil {\n\t\tif x, ok := x.Kind.(*Value_ListValue); ok {\n\t\t\treturn x.ListValue\n\t\t}\n\t}\n\treturn nil\n}\n\ntype isValue_Kind interface {\n\tisValue_Kind()\n}\n\ntype Value_NullValue struct {\n\t// Represents a null value.\n\tNullValue NullValue `protobuf:\"varint,1,opt,name=null_value,json=nullValue,proto3,enum=google.protobuf.NullValue,oneof\"`\n}\n\ntype Value_NumberValue struct {\n\t// Represents a double value.\n\tNumberValue float64 `protobuf:\"fixed64,2,opt,name=number_value,json=numberValue,proto3,oneof\"`\n}\n\ntype Value_StringValue struct {\n\t// Represents a string value.\n\tStringValue string `protobuf:\"bytes,3,opt,name=string_value,json=stringValue,proto3,oneof\"`\n}\n\ntype Value_BoolValue struct {\n\t// Represents a boolean value.\n\tBoolValue bool `protobuf:\"varint,4,opt,name=bool_value,json=boolValue,proto3,oneof\"`\n}\n\ntype Value_StructValue struct {\n\t// Represents a structured value.\n\tStructValue *Struct `protobuf:\"bytes,5,opt,name=struct_value,json=structValue,proto3,oneof\"`\n}\n\ntype Value_ListValue struct {\n\t// Represents a repeated `Value`.\n\tListValue *ListValue `protobuf:\"bytes,6,opt,name=list_value,json=listValue,proto3,oneof\"`\n}\n\nfunc (*Value_NullValue) isValue_Kind() {}\n\nfunc (*Value_NumberValue) isValue_Kind() {}\n\nfunc (*Value_StringValue) isValue_Kind() {}\n\nfunc (*Value_BoolValue) isValue_Kind() {}\n\nfunc (*Value_StructValue) isValue_Kind() {}\n\nfunc (*Value_ListValue) isValue_Kind() {}\n\n// `ListValue` is a wrapper around a repeated field of values.\n//\n// The JSON representation for `ListValue` is JSON array.\ntype ListValue struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Repeated field of dynamically typed values.\n\tValues        []*Value `protobuf:\"bytes,1,rep,name=values,proto3\" json:\"values,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// NewList constructs a ListValue from a general-purpose Go slice.\n// The slice elements are converted using NewValue.\nfunc NewList(v []any) (*ListValue, error) {\n\tx := &ListValue{Values: make([]*Value, len(v))}\n\tfor i, v := range v {\n\t\tvar err error\n\t\tx.Values[i], err = NewValue(v)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn x, nil\n}\n\n// AsSlice converts x to a general-purpose Go slice.\n// The slice elements are converted by calling Value.AsInterface.\nfunc (x *ListValue) AsSlice() []any {\n\tvals := x.GetValues()\n\tvs := make([]any, len(vals))\n\tfor i, v := range vals {\n\t\tvs[i] = v.AsInterface()\n\t}\n\treturn vs\n}\n\nfunc (x *ListValue) MarshalJSON() ([]byte, error) {\n\treturn protojson.Marshal(x)\n}\n\nfunc (x *ListValue) UnmarshalJSON(b []byte) error {\n\treturn protojson.Unmarshal(b, x)\n}\n\nfunc (x *ListValue) Reset() {\n\t*x = ListValue{}\n\tmi := &file_google_protobuf_struct_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ListValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ListValue) ProtoMessage() {}\n\nfunc (x *ListValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_struct_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ListValue.ProtoReflect.Descriptor instead.\nfunc (*ListValue) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_struct_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *ListValue) GetValues() []*Value {\n\tif x != nil {\n\t\treturn x.Values\n\t}\n\treturn nil\n}\n\nvar File_google_protobuf_struct_proto protoreflect.FileDescriptor\n\nconst file_google_protobuf_struct_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1cgoogle/protobuf/struct.proto\\x12\\x0fgoogle.protobuf\\\"\\x98\\x01\\n\" +\n\t\"\\x06Struct\\x12;\\n\" +\n\t\"\\x06fields\\x18\\x01 \\x03(\\v2#.google.protobuf.Struct.FieldsEntryR\\x06fields\\x1aQ\\n\" +\n\t\"\\vFieldsEntry\\x12\\x10\\n\" +\n\t\"\\x03key\\x18\\x01 \\x01(\\tR\\x03key\\x12,\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\v2\\x16.google.protobuf.ValueR\\x05value:\\x028\\x01\\\"\\xb2\\x02\\n\" +\n\t\"\\x05Value\\x12;\\n\" +\n\t\"\\n\" +\n\t\"null_value\\x18\\x01 \\x01(\\x0e2\\x1a.google.protobuf.NullValueH\\x00R\\tnullValue\\x12#\\n\" +\n\t\"\\fnumber_value\\x18\\x02 \\x01(\\x01H\\x00R\\vnumberValue\\x12#\\n\" +\n\t\"\\fstring_value\\x18\\x03 \\x01(\\tH\\x00R\\vstringValue\\x12\\x1f\\n\" +\n\t\"\\n\" +\n\t\"bool_value\\x18\\x04 \\x01(\\bH\\x00R\\tboolValue\\x12<\\n\" +\n\t\"\\fstruct_value\\x18\\x05 \\x01(\\v2\\x17.google.protobuf.StructH\\x00R\\vstructValue\\x12;\\n\" +\n\t\"\\n\" +\n\t\"list_value\\x18\\x06 \\x01(\\v2\\x1a.google.protobuf.ListValueH\\x00R\\tlistValueB\\x06\\n\" +\n\t\"\\x04kind\\\";\\n\" +\n\t\"\\tListValue\\x12.\\n\" +\n\t\"\\x06values\\x18\\x01 \\x03(\\v2\\x16.google.protobuf.ValueR\\x06values*\\x1b\\n\" +\n\t\"\\tNullValue\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"NULL_VALUE\\x10\\x00B\\x7f\\n\" +\n\t\"\\x13com.google.protobufB\\vStructProtoP\\x01Z/google.golang.org/protobuf/types/known/structpb\\xf8\\x01\\x01\\xa2\\x02\\x03GPB\\xaa\\x02\\x1eGoogle.Protobuf.WellKnownTypesb\\x06proto3\"\n\nvar (\n\tfile_google_protobuf_struct_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_struct_proto_rawDescData []byte\n)\n\nfunc file_google_protobuf_struct_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_struct_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_struct_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_struct_proto_rawDesc), len(file_google_protobuf_struct_proto_rawDesc)))\n\t})\n\treturn file_google_protobuf_struct_proto_rawDescData\n}\n\nvar file_google_protobuf_struct_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_google_protobuf_struct_proto_msgTypes = make([]protoimpl.MessageInfo, 4)\nvar file_google_protobuf_struct_proto_goTypes = []any{\n\t(NullValue)(0),    // 0: google.protobuf.NullValue\n\t(*Struct)(nil),    // 1: google.protobuf.Struct\n\t(*Value)(nil),     // 2: google.protobuf.Value\n\t(*ListValue)(nil), // 3: google.protobuf.ListValue\n\tnil,               // 4: google.protobuf.Struct.FieldsEntry\n}\nvar file_google_protobuf_struct_proto_depIdxs = []int32{\n\t4, // 0: google.protobuf.Struct.fields:type_name -> google.protobuf.Struct.FieldsEntry\n\t0, // 1: google.protobuf.Value.null_value:type_name -> google.protobuf.NullValue\n\t1, // 2: google.protobuf.Value.struct_value:type_name -> google.protobuf.Struct\n\t3, // 3: google.protobuf.Value.list_value:type_name -> google.protobuf.ListValue\n\t2, // 4: google.protobuf.ListValue.values:type_name -> google.protobuf.Value\n\t2, // 5: google.protobuf.Struct.FieldsEntry.value:type_name -> google.protobuf.Value\n\t6, // [6:6] is the sub-list for method output_type\n\t6, // [6:6] is the sub-list for method input_type\n\t6, // [6:6] is the sub-list for extension type_name\n\t6, // [6:6] is the sub-list for extension extendee\n\t0, // [0:6] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_struct_proto_init() }\nfunc file_google_protobuf_struct_proto_init() {\n\tif File_google_protobuf_struct_proto != nil {\n\t\treturn\n\t}\n\tfile_google_protobuf_struct_proto_msgTypes[1].OneofWrappers = []any{\n\t\t(*Value_NullValue)(nil),\n\t\t(*Value_NumberValue)(nil),\n\t\t(*Value_StringValue)(nil),\n\t\t(*Value_BoolValue)(nil),\n\t\t(*Value_StructValue)(nil),\n\t\t(*Value_ListValue)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_struct_proto_rawDesc), len(file_google_protobuf_struct_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   4,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_struct_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_struct_proto_depIdxs,\n\t\tEnumInfos:         file_google_protobuf_struct_proto_enumTypes,\n\t\tMessageInfos:      file_google_protobuf_struct_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_struct_proto = out.File\n\tfile_google_protobuf_struct_proto_goTypes = nil\n\tfile_google_protobuf_struct_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/timestamp.proto\n\n// Package timestamppb contains generated types for google/protobuf/timestamp.proto.\n//\n// The Timestamp message represents a timestamp,\n// an instant in time since the Unix epoch (January 1st, 1970).\n//\n// # Conversion to a Go Time\n//\n// The AsTime method can be used to convert a Timestamp message to a\n// standard Go time.Time value in UTC:\n//\n//\tt := ts.AsTime()\n//\t... // make use of t as a time.Time\n//\n// Converting to a time.Time is a common operation so that the extensive\n// set of time-based operations provided by the time package can be leveraged.\n// See https://golang.org/pkg/time for more information.\n//\n// The AsTime method performs the conversion on a best-effort basis. Timestamps\n// with denormal values (e.g., nanoseconds beyond 0 and 99999999, inclusive)\n// are normalized during the conversion to a time.Time. To manually check for\n// invalid Timestamps per the documented limitations in timestamp.proto,\n// additionally call the CheckValid method:\n//\n//\tif err := ts.CheckValid(); err != nil {\n//\t\t... // handle error\n//\t}\n//\n// # Conversion from a Go Time\n//\n// The timestamppb.New function can be used to construct a Timestamp message\n// from a standard Go time.Time value:\n//\n//\tts := timestamppb.New(t)\n//\t... // make use of ts as a *timestamppb.Timestamp\n//\n// In order to construct a Timestamp representing the current time, use Now:\n//\n//\tts := timestamppb.Now()\n//\t... // make use of ts as a *timestamppb.Timestamp\npackage timestamppb\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\ttime \"time\"\n\tunsafe \"unsafe\"\n)\n\n// A Timestamp represents a point in time independent of any time zone or local\n// calendar, encoded as a count of seconds and fractions of seconds at\n// nanosecond resolution. The count is relative to an epoch at UTC midnight on\n// January 1, 1970, in the proleptic Gregorian calendar which extends the\n// Gregorian calendar backwards to year one.\n//\n// All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n// second table is needed for interpretation, using a [24-hour linear\n// smear](https://developers.google.com/time/smear).\n//\n// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n// restricting to that range, we ensure that we can convert to and from [RFC\n// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n//\n// # Examples\n//\n// Example 1: Compute Timestamp from POSIX `time()`.\n//\n//\tTimestamp timestamp;\n//\ttimestamp.set_seconds(time(NULL));\n//\ttimestamp.set_nanos(0);\n//\n// Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n//\n//\tstruct timeval tv;\n//\tgettimeofday(&tv, NULL);\n//\n//\tTimestamp timestamp;\n//\ttimestamp.set_seconds(tv.tv_sec);\n//\ttimestamp.set_nanos(tv.tv_usec * 1000);\n//\n// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n//\n//\tFILETIME ft;\n//\tGetSystemTimeAsFileTime(&ft);\n//\tUINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n//\n//\t// A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n//\t// is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n//\tTimestamp timestamp;\n//\ttimestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n//\ttimestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n//\n// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n//\n//\tlong millis = System.currentTimeMillis();\n//\n//\tTimestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n//\t    .setNanos((int) ((millis % 1000) * 1000000)).build();\n//\n// Example 5: Compute Timestamp from Java `Instant.now()`.\n//\n//\tInstant now = Instant.now();\n//\n//\tTimestamp timestamp =\n//\t    Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n//\t        .setNanos(now.getNano()).build();\n//\n// Example 6: Compute Timestamp from current time in Python.\n//\n//\ttimestamp = Timestamp()\n//\ttimestamp.GetCurrentTime()\n//\n// # JSON Mapping\n//\n// In JSON format, the Timestamp type is encoded as a string in the\n// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n// format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n// where {year} is always expressed using four digits while {month}, {day},\n// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n// are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n// is required. A proto3 JSON serializer should always use UTC (as indicated by\n// \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n// able to accept both UTC and other timezones (as indicated by an offset).\n//\n// For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n// 01:30 UTC on January 15, 2017.\n//\n// In JavaScript, one can convert a Date object to this format using the\n// standard\n// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n// method. In Python, a standard `datetime.datetime` object can be converted\n// to this format using\n// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n// the Joda Time's [`ISODateTimeFormat.dateTime()`](\n// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n// ) to obtain a formatter capable of generating timestamps in this format.\ntype Timestamp struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must\n\t// be between -315576000000 and 315576000000 inclusive (which corresponds to\n\t// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z).\n\tSeconds int64 `protobuf:\"varint,1,opt,name=seconds,proto3\" json:\"seconds,omitempty\"`\n\t// Non-negative fractions of a second at nanosecond resolution. This field is\n\t// the nanosecond portion of the duration, not an alternative to seconds.\n\t// Negative second values with fractions must still have non-negative nanos\n\t// values that count forward in time. Must be between 0 and 999,999,999\n\t// inclusive.\n\tNanos         int32 `protobuf:\"varint,2,opt,name=nanos,proto3\" json:\"nanos,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// Now constructs a new Timestamp from the current time.\nfunc Now() *Timestamp {\n\treturn New(time.Now())\n}\n\n// New constructs a new Timestamp from the provided time.Time.\nfunc New(t time.Time) *Timestamp {\n\treturn &Timestamp{Seconds: int64(t.Unix()), Nanos: int32(t.Nanosecond())}\n}\n\n// AsTime converts x to a time.Time.\nfunc (x *Timestamp) AsTime() time.Time {\n\treturn time.Unix(int64(x.GetSeconds()), int64(x.GetNanos())).UTC()\n}\n\n// IsValid reports whether the timestamp is valid.\n// It is equivalent to CheckValid == nil.\nfunc (x *Timestamp) IsValid() bool {\n\treturn x.check() == 0\n}\n\n// CheckValid returns an error if the timestamp is invalid.\n// In particular, it checks whether the value represents a date that is\n// in the range of 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\n// An error is reported for a nil Timestamp.\nfunc (x *Timestamp) CheckValid() error {\n\tswitch x.check() {\n\tcase invalidNil:\n\t\treturn protoimpl.X.NewError(\"invalid nil Timestamp\")\n\tcase invalidUnderflow:\n\t\treturn protoimpl.X.NewError(\"timestamp (%v) before 0001-01-01\", x)\n\tcase invalidOverflow:\n\t\treturn protoimpl.X.NewError(\"timestamp (%v) after 9999-12-31\", x)\n\tcase invalidNanos:\n\t\treturn protoimpl.X.NewError(\"timestamp (%v) has out-of-range nanos\", x)\n\tdefault:\n\t\treturn nil\n\t}\n}\n\nconst (\n\t_ = iota\n\tinvalidNil\n\tinvalidUnderflow\n\tinvalidOverflow\n\tinvalidNanos\n)\n\nfunc (x *Timestamp) check() uint {\n\tconst minTimestamp = -62135596800  // Seconds between 1970-01-01T00:00:00Z and 0001-01-01T00:00:00Z, inclusive\n\tconst maxTimestamp = +253402300799 // Seconds between 1970-01-01T00:00:00Z and 9999-12-31T23:59:59Z, inclusive\n\tsecs := x.GetSeconds()\n\tnanos := x.GetNanos()\n\tswitch {\n\tcase x == nil:\n\t\treturn invalidNil\n\tcase secs < minTimestamp:\n\t\treturn invalidUnderflow\n\tcase secs > maxTimestamp:\n\t\treturn invalidOverflow\n\tcase nanos < 0 || nanos >= 1e9:\n\t\treturn invalidNanos\n\tdefault:\n\t\treturn 0\n\t}\n}\n\nfunc (x *Timestamp) Reset() {\n\t*x = Timestamp{}\n\tmi := &file_google_protobuf_timestamp_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Timestamp) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Timestamp) ProtoMessage() {}\n\nfunc (x *Timestamp) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_timestamp_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Timestamp.ProtoReflect.Descriptor instead.\nfunc (*Timestamp) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_timestamp_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Timestamp) GetSeconds() int64 {\n\tif x != nil {\n\t\treturn x.Seconds\n\t}\n\treturn 0\n}\n\nfunc (x *Timestamp) GetNanos() int32 {\n\tif x != nil {\n\t\treturn x.Nanos\n\t}\n\treturn 0\n}\n\nvar File_google_protobuf_timestamp_proto protoreflect.FileDescriptor\n\nconst file_google_protobuf_timestamp_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1fgoogle/protobuf/timestamp.proto\\x12\\x0fgoogle.protobuf\\\";\\n\" +\n\t\"\\tTimestamp\\x12\\x18\\n\" +\n\t\"\\aseconds\\x18\\x01 \\x01(\\x03R\\aseconds\\x12\\x14\\n\" +\n\t\"\\x05nanos\\x18\\x02 \\x01(\\x05R\\x05nanosB\\x85\\x01\\n\" +\n\t\"\\x13com.google.protobufB\\x0eTimestampProtoP\\x01Z2google.golang.org/protobuf/types/known/timestamppb\\xf8\\x01\\x01\\xa2\\x02\\x03GPB\\xaa\\x02\\x1eGoogle.Protobuf.WellKnownTypesb\\x06proto3\"\n\nvar (\n\tfile_google_protobuf_timestamp_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_timestamp_proto_rawDescData []byte\n)\n\nfunc file_google_protobuf_timestamp_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_timestamp_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_timestamp_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_timestamp_proto_rawDesc), len(file_google_protobuf_timestamp_proto_rawDesc)))\n\t})\n\treturn file_google_protobuf_timestamp_proto_rawDescData\n}\n\nvar file_google_protobuf_timestamp_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_protobuf_timestamp_proto_goTypes = []any{\n\t(*Timestamp)(nil), // 0: google.protobuf.Timestamp\n}\nvar file_google_protobuf_timestamp_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_timestamp_proto_init() }\nfunc file_google_protobuf_timestamp_proto_init() {\n\tif File_google_protobuf_timestamp_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_timestamp_proto_rawDesc), len(file_google_protobuf_timestamp_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_timestamp_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_timestamp_proto_depIdxs,\n\t\tMessageInfos:      file_google_protobuf_timestamp_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_timestamp_proto = out.File\n\tfile_google_protobuf_timestamp_proto_goTypes = nil\n\tfile_google_protobuf_timestamp_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/known/wrapperspb/wrappers.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Wrappers for primitive (non-message) types. These types were needed\n// for legacy reasons and are not recommended for use in new APIs.\n//\n// Historically these wrappers were useful to have presence on proto3 primitive\n// fields, but proto3 syntax has been updated to support the `optional` keyword.\n// Using that keyword is now the strongly preferred way to add presence to\n// proto3 primitive fields.\n//\n// A secondary usecase was to embed primitives in the `google.protobuf.Any`\n// type: it is now recommended that you embed your value in your own wrapper\n// message which can be specifically documented.\n//\n// These wrappers have no meaningful use within repeated fields as they lack\n// the ability to detect presence on individual elements.\n// These wrappers have no meaningful use within a map or a oneof since\n// individual entries of a map or fields of a oneof can already detect presence.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/wrappers.proto\n\npackage wrapperspb\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\n// Wrapper message for `double`.\n//\n// The JSON representation for `DoubleValue` is JSON number.\n//\n// Not recommended for use in new APIs, but still useful for legacy APIs and\n// has no plan to be removed.\ntype DoubleValue struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The double value.\n\tValue         float64 `protobuf:\"fixed64,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// Double stores v in a new DoubleValue and returns a pointer to it.\nfunc Double(v float64) *DoubleValue {\n\treturn &DoubleValue{Value: v}\n}\n\nfunc (x *DoubleValue) Reset() {\n\t*x = DoubleValue{}\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DoubleValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DoubleValue) ProtoMessage() {}\n\nfunc (x *DoubleValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DoubleValue.ProtoReflect.Descriptor instead.\nfunc (*DoubleValue) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *DoubleValue) GetValue() float64 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\n// Wrapper message for `float`.\n//\n// The JSON representation for `FloatValue` is JSON number.\n//\n// Not recommended for use in new APIs, but still useful for legacy APIs and\n// has no plan to be removed.\ntype FloatValue struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The float value.\n\tValue         float32 `protobuf:\"fixed32,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// Float stores v in a new FloatValue and returns a pointer to it.\nfunc Float(v float32) *FloatValue {\n\treturn &FloatValue{Value: v}\n}\n\nfunc (x *FloatValue) Reset() {\n\t*x = FloatValue{}\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FloatValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FloatValue) ProtoMessage() {}\n\nfunc (x *FloatValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FloatValue.ProtoReflect.Descriptor instead.\nfunc (*FloatValue) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *FloatValue) GetValue() float32 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\n// Wrapper message for `int64`.\n//\n// The JSON representation for `Int64Value` is JSON string.\n//\n// Not recommended for use in new APIs, but still useful for legacy APIs and\n// has no plan to be removed.\ntype Int64Value struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The int64 value.\n\tValue         int64 `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// Int64 stores v in a new Int64Value and returns a pointer to it.\nfunc Int64(v int64) *Int64Value {\n\treturn &Int64Value{Value: v}\n}\n\nfunc (x *Int64Value) Reset() {\n\t*x = Int64Value{}\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Int64Value) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Int64Value) ProtoMessage() {}\n\nfunc (x *Int64Value) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Int64Value.ProtoReflect.Descriptor instead.\nfunc (*Int64Value) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *Int64Value) GetValue() int64 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\n// Wrapper message for `uint64`.\n//\n// The JSON representation for `UInt64Value` is JSON string.\n//\n// Not recommended for use in new APIs, but still useful for legacy APIs and\n// has no plan to be removed.\ntype UInt64Value struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The uint64 value.\n\tValue         uint64 `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// UInt64 stores v in a new UInt64Value and returns a pointer to it.\nfunc UInt64(v uint64) *UInt64Value {\n\treturn &UInt64Value{Value: v}\n}\n\nfunc (x *UInt64Value) Reset() {\n\t*x = UInt64Value{}\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *UInt64Value) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UInt64Value) ProtoMessage() {}\n\nfunc (x *UInt64Value) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UInt64Value.ProtoReflect.Descriptor instead.\nfunc (*UInt64Value) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *UInt64Value) GetValue() uint64 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\n// Wrapper message for `int32`.\n//\n// The JSON representation for `Int32Value` is JSON number.\n//\n// Not recommended for use in new APIs, but still useful for legacy APIs and\n// has no plan to be removed.\ntype Int32Value struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The int32 value.\n\tValue         int32 `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// Int32 stores v in a new Int32Value and returns a pointer to it.\nfunc Int32(v int32) *Int32Value {\n\treturn &Int32Value{Value: v}\n}\n\nfunc (x *Int32Value) Reset() {\n\t*x = Int32Value{}\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Int32Value) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Int32Value) ProtoMessage() {}\n\nfunc (x *Int32Value) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Int32Value.ProtoReflect.Descriptor instead.\nfunc (*Int32Value) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *Int32Value) GetValue() int32 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\n// Wrapper message for `uint32`.\n//\n// The JSON representation for `UInt32Value` is JSON number.\n//\n// Not recommended for use in new APIs, but still useful for legacy APIs and\n// has no plan to be removed.\ntype UInt32Value struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The uint32 value.\n\tValue         uint32 `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// UInt32 stores v in a new UInt32Value and returns a pointer to it.\nfunc UInt32(v uint32) *UInt32Value {\n\treturn &UInt32Value{Value: v}\n}\n\nfunc (x *UInt32Value) Reset() {\n\t*x = UInt32Value{}\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *UInt32Value) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UInt32Value) ProtoMessage() {}\n\nfunc (x *UInt32Value) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UInt32Value.ProtoReflect.Descriptor instead.\nfunc (*UInt32Value) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *UInt32Value) GetValue() uint32 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\n// Wrapper message for `bool`.\n//\n// The JSON representation for `BoolValue` is JSON `true` and `false`.\n//\n// Not recommended for use in new APIs, but still useful for legacy APIs and\n// has no plan to be removed.\ntype BoolValue struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The bool value.\n\tValue         bool `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// Bool stores v in a new BoolValue and returns a pointer to it.\nfunc Bool(v bool) *BoolValue {\n\treturn &BoolValue{Value: v}\n}\n\nfunc (x *BoolValue) Reset() {\n\t*x = BoolValue{}\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *BoolValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*BoolValue) ProtoMessage() {}\n\nfunc (x *BoolValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use BoolValue.ProtoReflect.Descriptor instead.\nfunc (*BoolValue) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *BoolValue) GetValue() bool {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn false\n}\n\n// Wrapper message for `string`.\n//\n// The JSON representation for `StringValue` is JSON string.\n//\n// Not recommended for use in new APIs, but still useful for legacy APIs and\n// has no plan to be removed.\ntype StringValue struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The string value.\n\tValue         string `protobuf:\"bytes,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// String stores v in a new StringValue and returns a pointer to it.\nfunc String(v string) *StringValue {\n\treturn &StringValue{Value: v}\n}\n\nfunc (x *StringValue) Reset() {\n\t*x = StringValue{}\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *StringValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*StringValue) ProtoMessage() {}\n\nfunc (x *StringValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use StringValue.ProtoReflect.Descriptor instead.\nfunc (*StringValue) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *StringValue) GetValue() string {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn \"\"\n}\n\n// Wrapper message for `bytes`.\n//\n// The JSON representation for `BytesValue` is JSON string.\n//\n// Not recommended for use in new APIs, but still useful for legacy APIs and\n// has no plan to be removed.\ntype BytesValue struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The bytes value.\n\tValue         []byte `protobuf:\"bytes,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// Bytes stores v in a new BytesValue and returns a pointer to it.\nfunc Bytes(v []byte) *BytesValue {\n\treturn &BytesValue{Value: v}\n}\n\nfunc (x *BytesValue) Reset() {\n\t*x = BytesValue{}\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[8]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *BytesValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*BytesValue) ProtoMessage() {}\n\nfunc (x *BytesValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_wrappers_proto_msgTypes[8]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use BytesValue.ProtoReflect.Descriptor instead.\nfunc (*BytesValue) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *BytesValue) GetValue() []byte {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nvar File_google_protobuf_wrappers_proto protoreflect.FileDescriptor\n\nconst file_google_protobuf_wrappers_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1egoogle/protobuf/wrappers.proto\\x12\\x0fgoogle.protobuf\\\"#\\n\" +\n\t\"\\vDoubleValue\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x01 \\x01(\\x01R\\x05value\\\"\\\"\\n\" +\n\t\"\\n\" +\n\t\"FloatValue\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x01 \\x01(\\x02R\\x05value\\\"\\\"\\n\" +\n\t\"\\n\" +\n\t\"Int64Value\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x01 \\x01(\\x03R\\x05value\\\"#\\n\" +\n\t\"\\vUInt64Value\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x01 \\x01(\\x04R\\x05value\\\"\\\"\\n\" +\n\t\"\\n\" +\n\t\"Int32Value\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x01 \\x01(\\x05R\\x05value\\\"#\\n\" +\n\t\"\\vUInt32Value\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x01 \\x01(\\rR\\x05value\\\"!\\n\" +\n\t\"\\tBoolValue\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x01 \\x01(\\bR\\x05value\\\"#\\n\" +\n\t\"\\vStringValue\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x01 \\x01(\\tR\\x05value\\\"\\\"\\n\" +\n\t\"\\n\" +\n\t\"BytesValue\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x01 \\x01(\\fR\\x05valueB\\x83\\x01\\n\" +\n\t\"\\x13com.google.protobufB\\rWrappersProtoP\\x01Z1google.golang.org/protobuf/types/known/wrapperspb\\xf8\\x01\\x01\\xa2\\x02\\x03GPB\\xaa\\x02\\x1eGoogle.Protobuf.WellKnownTypesb\\x06proto3\"\n\nvar (\n\tfile_google_protobuf_wrappers_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_wrappers_proto_rawDescData []byte\n)\n\nfunc file_google_protobuf_wrappers_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_wrappers_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_wrappers_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_wrappers_proto_rawDesc), len(file_google_protobuf_wrappers_proto_rawDesc)))\n\t})\n\treturn file_google_protobuf_wrappers_proto_rawDescData\n}\n\nvar file_google_protobuf_wrappers_proto_msgTypes = make([]protoimpl.MessageInfo, 9)\nvar file_google_protobuf_wrappers_proto_goTypes = []any{\n\t(*DoubleValue)(nil), // 0: google.protobuf.DoubleValue\n\t(*FloatValue)(nil),  // 1: google.protobuf.FloatValue\n\t(*Int64Value)(nil),  // 2: google.protobuf.Int64Value\n\t(*UInt64Value)(nil), // 3: google.protobuf.UInt64Value\n\t(*Int32Value)(nil),  // 4: google.protobuf.Int32Value\n\t(*UInt32Value)(nil), // 5: google.protobuf.UInt32Value\n\t(*BoolValue)(nil),   // 6: google.protobuf.BoolValue\n\t(*StringValue)(nil), // 7: google.protobuf.StringValue\n\t(*BytesValue)(nil),  // 8: google.protobuf.BytesValue\n}\nvar file_google_protobuf_wrappers_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_wrappers_proto_init() }\nfunc file_google_protobuf_wrappers_proto_init() {\n\tif File_google_protobuf_wrappers_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_wrappers_proto_rawDesc), len(file_google_protobuf_wrappers_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   9,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_wrappers_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_wrappers_proto_depIdxs,\n\t\tMessageInfos:      file_google_protobuf_wrappers_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_wrappers_proto = out.File\n\tfile_google_protobuf_wrappers_proto_goTypes = nil\n\tfile_google_protobuf_wrappers_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/pluginpb/plugin.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n//\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file or at\n// https://developers.google.com/open-source/licenses/bsd\n\n// Author: kenton@google.com (Kenton Varda)\n//\n// protoc (aka the Protocol Compiler) can be extended via plugins.  A plugin is\n// just a program that reads a CodeGeneratorRequest from stdin and writes a\n// CodeGeneratorResponse to stdout.\n//\n// Plugins written using C++ can use google/protobuf/compiler/plugin.h instead\n// of dealing with the raw protocol defined here.\n//\n// A plugin executable needs only to be placed somewhere in the path.  The\n// plugin should be named \"protoc-gen-$NAME\", and will then be used when the\n// flag \"--${NAME}_out\" is passed to protoc.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/compiler/plugin.proto\n\npackage pluginpb\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\n// Sync with code_generator.h.\ntype CodeGeneratorResponse_Feature int32\n\nconst (\n\tCodeGeneratorResponse_FEATURE_NONE              CodeGeneratorResponse_Feature = 0\n\tCodeGeneratorResponse_FEATURE_PROTO3_OPTIONAL   CodeGeneratorResponse_Feature = 1\n\tCodeGeneratorResponse_FEATURE_SUPPORTS_EDITIONS CodeGeneratorResponse_Feature = 2\n)\n\n// Enum value maps for CodeGeneratorResponse_Feature.\nvar (\n\tCodeGeneratorResponse_Feature_name = map[int32]string{\n\t\t0: \"FEATURE_NONE\",\n\t\t1: \"FEATURE_PROTO3_OPTIONAL\",\n\t\t2: \"FEATURE_SUPPORTS_EDITIONS\",\n\t}\n\tCodeGeneratorResponse_Feature_value = map[string]int32{\n\t\t\"FEATURE_NONE\":              0,\n\t\t\"FEATURE_PROTO3_OPTIONAL\":   1,\n\t\t\"FEATURE_SUPPORTS_EDITIONS\": 2,\n\t}\n)\n\nfunc (x CodeGeneratorResponse_Feature) Enum() *CodeGeneratorResponse_Feature {\n\tp := new(CodeGeneratorResponse_Feature)\n\t*p = x\n\treturn p\n}\n\nfunc (x CodeGeneratorResponse_Feature) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (CodeGeneratorResponse_Feature) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_compiler_plugin_proto_enumTypes[0].Descriptor()\n}\n\nfunc (CodeGeneratorResponse_Feature) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_compiler_plugin_proto_enumTypes[0]\n}\n\nfunc (x CodeGeneratorResponse_Feature) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *CodeGeneratorResponse_Feature) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = CodeGeneratorResponse_Feature(num)\n\treturn nil\n}\n\n// Deprecated: Use CodeGeneratorResponse_Feature.Descriptor instead.\nfunc (CodeGeneratorResponse_Feature) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_compiler_plugin_proto_rawDescGZIP(), []int{2, 0}\n}\n\n// The version number of protocol compiler.\ntype Version struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\tMajor *int32                 `protobuf:\"varint,1,opt,name=major\" json:\"major,omitempty\"`\n\tMinor *int32                 `protobuf:\"varint,2,opt,name=minor\" json:\"minor,omitempty\"`\n\tPatch *int32                 `protobuf:\"varint,3,opt,name=patch\" json:\"patch,omitempty\"`\n\t// A suffix for alpha, beta or rc release, e.g., \"alpha-1\", \"rc2\". It should\n\t// be empty for mainline stable releases.\n\tSuffix        *string `protobuf:\"bytes,4,opt,name=suffix\" json:\"suffix,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *Version) Reset() {\n\t*x = Version{}\n\tmi := &file_google_protobuf_compiler_plugin_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Version) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Version) ProtoMessage() {}\n\nfunc (x *Version) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_compiler_plugin_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Version.ProtoReflect.Descriptor instead.\nfunc (*Version) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_compiler_plugin_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Version) GetMajor() int32 {\n\tif x != nil && x.Major != nil {\n\t\treturn *x.Major\n\t}\n\treturn 0\n}\n\nfunc (x *Version) GetMinor() int32 {\n\tif x != nil && x.Minor != nil {\n\t\treturn *x.Minor\n\t}\n\treturn 0\n}\n\nfunc (x *Version) GetPatch() int32 {\n\tif x != nil && x.Patch != nil {\n\t\treturn *x.Patch\n\t}\n\treturn 0\n}\n\nfunc (x *Version) GetSuffix() string {\n\tif x != nil && x.Suffix != nil {\n\t\treturn *x.Suffix\n\t}\n\treturn \"\"\n}\n\n// An encoded CodeGeneratorRequest is written to the plugin's stdin.\ntype CodeGeneratorRequest struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The .proto files that were explicitly listed on the command-line.  The\n\t// code generator should generate code only for these files.  Each file's\n\t// descriptor will be included in proto_file, below.\n\tFileToGenerate []string `protobuf:\"bytes,1,rep,name=file_to_generate,json=fileToGenerate\" json:\"file_to_generate,omitempty\"`\n\t// The generator parameter passed on the command-line.\n\tParameter *string `protobuf:\"bytes,2,opt,name=parameter\" json:\"parameter,omitempty\"`\n\t// FileDescriptorProtos for all files in files_to_generate and everything\n\t// they import.  The files will appear in topological order, so each file\n\t// appears before any file that imports it.\n\t//\n\t// Note: the files listed in files_to_generate will include runtime-retention\n\t// options only, but all other files will include source-retention options.\n\t// The source_file_descriptors field below is available in case you need\n\t// source-retention options for files_to_generate.\n\t//\n\t// protoc guarantees that all proto_files will be written after\n\t// the fields above, even though this is not technically guaranteed by the\n\t// protobuf wire format.  This theoretically could allow a plugin to stream\n\t// in the FileDescriptorProtos and handle them one by one rather than read\n\t// the entire set into memory at once.  However, as of this writing, this\n\t// is not similarly optimized on protoc's end -- it will store all fields in\n\t// memory at once before sending them to the plugin.\n\t//\n\t// Type names of fields and extensions in the FileDescriptorProto are always\n\t// fully qualified.\n\tProtoFile []*descriptorpb.FileDescriptorProto `protobuf:\"bytes,15,rep,name=proto_file,json=protoFile\" json:\"proto_file,omitempty\"`\n\t// File descriptors with all options, including source-retention options.\n\t// These descriptors are only provided for the files listed in\n\t// files_to_generate.\n\tSourceFileDescriptors []*descriptorpb.FileDescriptorProto `protobuf:\"bytes,17,rep,name=source_file_descriptors,json=sourceFileDescriptors\" json:\"source_file_descriptors,omitempty\"`\n\t// The version number of protocol compiler.\n\tCompilerVersion *Version `protobuf:\"bytes,3,opt,name=compiler_version,json=compilerVersion\" json:\"compiler_version,omitempty\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *CodeGeneratorRequest) Reset() {\n\t*x = CodeGeneratorRequest{}\n\tmi := &file_google_protobuf_compiler_plugin_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CodeGeneratorRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CodeGeneratorRequest) ProtoMessage() {}\n\nfunc (x *CodeGeneratorRequest) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_compiler_plugin_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CodeGeneratorRequest.ProtoReflect.Descriptor instead.\nfunc (*CodeGeneratorRequest) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_compiler_plugin_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *CodeGeneratorRequest) GetFileToGenerate() []string {\n\tif x != nil {\n\t\treturn x.FileToGenerate\n\t}\n\treturn nil\n}\n\nfunc (x *CodeGeneratorRequest) GetParameter() string {\n\tif x != nil && x.Parameter != nil {\n\t\treturn *x.Parameter\n\t}\n\treturn \"\"\n}\n\nfunc (x *CodeGeneratorRequest) GetProtoFile() []*descriptorpb.FileDescriptorProto {\n\tif x != nil {\n\t\treturn x.ProtoFile\n\t}\n\treturn nil\n}\n\nfunc (x *CodeGeneratorRequest) GetSourceFileDescriptors() []*descriptorpb.FileDescriptorProto {\n\tif x != nil {\n\t\treturn x.SourceFileDescriptors\n\t}\n\treturn nil\n}\n\nfunc (x *CodeGeneratorRequest) GetCompilerVersion() *Version {\n\tif x != nil {\n\t\treturn x.CompilerVersion\n\t}\n\treturn nil\n}\n\n// The plugin writes an encoded CodeGeneratorResponse to stdout.\ntype CodeGeneratorResponse struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Error message.  If non-empty, code generation failed.  The plugin process\n\t// should exit with status code zero even if it reports an error in this way.\n\t//\n\t// This should be used to indicate errors in .proto files which prevent the\n\t// code generator from generating correct code.  Errors which indicate a\n\t// problem in protoc itself -- such as the input CodeGeneratorRequest being\n\t// unparseable -- should be reported by writing a message to stderr and\n\t// exiting with a non-zero status code.\n\tError *string `protobuf:\"bytes,1,opt,name=error\" json:\"error,omitempty\"`\n\t// A bitmask of supported features that the code generator supports.\n\t// This is a bitwise \"or\" of values from the Feature enum.\n\tSupportedFeatures *uint64 `protobuf:\"varint,2,opt,name=supported_features,json=supportedFeatures\" json:\"supported_features,omitempty\"`\n\t// The minimum edition this plugin supports.  This will be treated as an\n\t// Edition enum, but we want to allow unknown values.  It should be specified\n\t// according the edition enum value, *not* the edition number.  Only takes\n\t// effect for plugins that have FEATURE_SUPPORTS_EDITIONS set.\n\tMinimumEdition *int32 `protobuf:\"varint,3,opt,name=minimum_edition,json=minimumEdition\" json:\"minimum_edition,omitempty\"`\n\t// The maximum edition this plugin supports.  This will be treated as an\n\t// Edition enum, but we want to allow unknown values.  It should be specified\n\t// according the edition enum value, *not* the edition number.  Only takes\n\t// effect for plugins that have FEATURE_SUPPORTS_EDITIONS set.\n\tMaximumEdition *int32                        `protobuf:\"varint,4,opt,name=maximum_edition,json=maximumEdition\" json:\"maximum_edition,omitempty\"`\n\tFile           []*CodeGeneratorResponse_File `protobuf:\"bytes,15,rep,name=file\" json:\"file,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *CodeGeneratorResponse) Reset() {\n\t*x = CodeGeneratorResponse{}\n\tmi := &file_google_protobuf_compiler_plugin_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CodeGeneratorResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CodeGeneratorResponse) ProtoMessage() {}\n\nfunc (x *CodeGeneratorResponse) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_compiler_plugin_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CodeGeneratorResponse.ProtoReflect.Descriptor instead.\nfunc (*CodeGeneratorResponse) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_compiler_plugin_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *CodeGeneratorResponse) GetError() string {\n\tif x != nil && x.Error != nil {\n\t\treturn *x.Error\n\t}\n\treturn \"\"\n}\n\nfunc (x *CodeGeneratorResponse) GetSupportedFeatures() uint64 {\n\tif x != nil && x.SupportedFeatures != nil {\n\t\treturn *x.SupportedFeatures\n\t}\n\treturn 0\n}\n\nfunc (x *CodeGeneratorResponse) GetMinimumEdition() int32 {\n\tif x != nil && x.MinimumEdition != nil {\n\t\treturn *x.MinimumEdition\n\t}\n\treturn 0\n}\n\nfunc (x *CodeGeneratorResponse) GetMaximumEdition() int32 {\n\tif x != nil && x.MaximumEdition != nil {\n\t\treturn *x.MaximumEdition\n\t}\n\treturn 0\n}\n\nfunc (x *CodeGeneratorResponse) GetFile() []*CodeGeneratorResponse_File {\n\tif x != nil {\n\t\treturn x.File\n\t}\n\treturn nil\n}\n\n// Represents a single generated file.\ntype CodeGeneratorResponse_File struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The file name, relative to the output directory.  The name must not\n\t// contain \".\" or \"..\" components and must be relative, not be absolute (so,\n\t// the file cannot lie outside the output directory).  \"/\" must be used as\n\t// the path separator, not \"\\\".\n\t//\n\t// If the name is omitted, the content will be appended to the previous\n\t// file.  This allows the generator to break large files into small chunks,\n\t// and allows the generated text to be streamed back to protoc so that large\n\t// files need not reside completely in memory at one time.  Note that as of\n\t// this writing protoc does not optimize for this -- it will read the entire\n\t// CodeGeneratorResponse before writing files to disk.\n\tName *string `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\t// If non-empty, indicates that the named file should already exist, and the\n\t// content here is to be inserted into that file at a defined insertion\n\t// point.  This feature allows a code generator to extend the output\n\t// produced by another code generator.  The original generator may provide\n\t// insertion points by placing special annotations in the file that look\n\t// like:\n\t//\n\t//\t@@protoc_insertion_point(NAME)\n\t//\n\t// The annotation can have arbitrary text before and after it on the line,\n\t// which allows it to be placed in a comment.  NAME should be replaced with\n\t// an identifier naming the point -- this is what other generators will use\n\t// as the insertion_point.  Code inserted at this point will be placed\n\t// immediately above the line containing the insertion point (thus multiple\n\t// insertions to the same point will come out in the order they were added).\n\t// The double-@ is intended to make it unlikely that the generated code\n\t// could contain things that look like insertion points by accident.\n\t//\n\t// For example, the C++ code generator places the following line in the\n\t// .pb.h files that it generates:\n\t//\n\t//\t// @@protoc_insertion_point(namespace_scope)\n\t//\n\t// This line appears within the scope of the file's package namespace, but\n\t// outside of any particular class.  Another plugin can then specify the\n\t// insertion_point \"namespace_scope\" to generate additional classes or\n\t// other declarations that should be placed in this scope.\n\t//\n\t// Note that if the line containing the insertion point begins with\n\t// whitespace, the same whitespace will be added to every line of the\n\t// inserted text.  This is useful for languages like Python, where\n\t// indentation matters.  In these languages, the insertion point comment\n\t// should be indented the same amount as any inserted code will need to be\n\t// in order to work correctly in that context.\n\t//\n\t// The code generator that generates the initial file and the one which\n\t// inserts into it must both run as part of a single invocation of protoc.\n\t// Code generators are executed in the order in which they appear on the\n\t// command line.\n\t//\n\t// If |insertion_point| is present, |name| must also be present.\n\tInsertionPoint *string `protobuf:\"bytes,2,opt,name=insertion_point,json=insertionPoint\" json:\"insertion_point,omitempty\"`\n\t// The file contents.\n\tContent *string `protobuf:\"bytes,15,opt,name=content\" json:\"content,omitempty\"`\n\t// Information describing the file content being inserted. If an insertion\n\t// point is used, this information will be appropriately offset and inserted\n\t// into the code generation metadata for the generated files.\n\tGeneratedCodeInfo *descriptorpb.GeneratedCodeInfo `protobuf:\"bytes,16,opt,name=generated_code_info,json=generatedCodeInfo\" json:\"generated_code_info,omitempty\"`\n\tunknownFields     protoimpl.UnknownFields\n\tsizeCache         protoimpl.SizeCache\n}\n\nfunc (x *CodeGeneratorResponse_File) Reset() {\n\t*x = CodeGeneratorResponse_File{}\n\tmi := &file_google_protobuf_compiler_plugin_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *CodeGeneratorResponse_File) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CodeGeneratorResponse_File) ProtoMessage() {}\n\nfunc (x *CodeGeneratorResponse_File) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_compiler_plugin_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CodeGeneratorResponse_File.ProtoReflect.Descriptor instead.\nfunc (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_compiler_plugin_proto_rawDescGZIP(), []int{2, 0}\n}\n\nfunc (x *CodeGeneratorResponse_File) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *CodeGeneratorResponse_File) GetInsertionPoint() string {\n\tif x != nil && x.InsertionPoint != nil {\n\t\treturn *x.InsertionPoint\n\t}\n\treturn \"\"\n}\n\nfunc (x *CodeGeneratorResponse_File) GetContent() string {\n\tif x != nil && x.Content != nil {\n\t\treturn *x.Content\n\t}\n\treturn \"\"\n}\n\nfunc (x *CodeGeneratorResponse_File) GetGeneratedCodeInfo() *descriptorpb.GeneratedCodeInfo {\n\tif x != nil {\n\t\treturn x.GeneratedCodeInfo\n\t}\n\treturn nil\n}\n\nvar File_google_protobuf_compiler_plugin_proto protoreflect.FileDescriptor\n\nconst file_google_protobuf_compiler_plugin_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"%google/protobuf/compiler/plugin.proto\\x12\\x18google.protobuf.compiler\\x1a google/protobuf/descriptor.proto\\\"c\\n\" +\n\t\"\\aVersion\\x12\\x14\\n\" +\n\t\"\\x05major\\x18\\x01 \\x01(\\x05R\\x05major\\x12\\x14\\n\" +\n\t\"\\x05minor\\x18\\x02 \\x01(\\x05R\\x05minor\\x12\\x14\\n\" +\n\t\"\\x05patch\\x18\\x03 \\x01(\\x05R\\x05patch\\x12\\x16\\n\" +\n\t\"\\x06suffix\\x18\\x04 \\x01(\\tR\\x06suffix\\\"\\xcf\\x02\\n\" +\n\t\"\\x14CodeGeneratorRequest\\x12(\\n\" +\n\t\"\\x10file_to_generate\\x18\\x01 \\x03(\\tR\\x0efileToGenerate\\x12\\x1c\\n\" +\n\t\"\\tparameter\\x18\\x02 \\x01(\\tR\\tparameter\\x12C\\n\" +\n\t\"\\n\" +\n\t\"proto_file\\x18\\x0f \\x03(\\v2$.google.protobuf.FileDescriptorProtoR\\tprotoFile\\x12\\\\\\n\" +\n\t\"\\x17source_file_descriptors\\x18\\x11 \\x03(\\v2$.google.protobuf.FileDescriptorProtoR\\x15sourceFileDescriptors\\x12L\\n\" +\n\t\"\\x10compiler_version\\x18\\x03 \\x01(\\v2!.google.protobuf.compiler.VersionR\\x0fcompilerVersion\\\"\\x85\\x04\\n\" +\n\t\"\\x15CodeGeneratorResponse\\x12\\x14\\n\" +\n\t\"\\x05error\\x18\\x01 \\x01(\\tR\\x05error\\x12-\\n\" +\n\t\"\\x12supported_features\\x18\\x02 \\x01(\\x04R\\x11supportedFeatures\\x12'\\n\" +\n\t\"\\x0fminimum_edition\\x18\\x03 \\x01(\\x05R\\x0eminimumEdition\\x12'\\n\" +\n\t\"\\x0fmaximum_edition\\x18\\x04 \\x01(\\x05R\\x0emaximumEdition\\x12H\\n\" +\n\t\"\\x04file\\x18\\x0f \\x03(\\v24.google.protobuf.compiler.CodeGeneratorResponse.FileR\\x04file\\x1a\\xb1\\x01\\n\" +\n\t\"\\x04File\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12'\\n\" +\n\t\"\\x0finsertion_point\\x18\\x02 \\x01(\\tR\\x0einsertionPoint\\x12\\x18\\n\" +\n\t\"\\acontent\\x18\\x0f \\x01(\\tR\\acontent\\x12R\\n\" +\n\t\"\\x13generated_code_info\\x18\\x10 \\x01(\\v2\\\".google.protobuf.GeneratedCodeInfoR\\x11generatedCodeInfo\\\"W\\n\" +\n\t\"\\aFeature\\x12\\x10\\n\" +\n\t\"\\fFEATURE_NONE\\x10\\x00\\x12\\x1b\\n\" +\n\t\"\\x17FEATURE_PROTO3_OPTIONAL\\x10\\x01\\x12\\x1d\\n\" +\n\t\"\\x19FEATURE_SUPPORTS_EDITIONS\\x10\\x02Br\\n\" +\n\t\"\\x1ccom.google.protobuf.compilerB\\fPluginProtosZ)google.golang.org/protobuf/types/pluginpb\\xaa\\x02\\x18Google.Protobuf.Compiler\"\n\nvar (\n\tfile_google_protobuf_compiler_plugin_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_compiler_plugin_proto_rawDescData []byte\n)\n\nfunc file_google_protobuf_compiler_plugin_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_compiler_plugin_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_compiler_plugin_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_compiler_plugin_proto_rawDesc), len(file_google_protobuf_compiler_plugin_proto_rawDesc)))\n\t})\n\treturn file_google_protobuf_compiler_plugin_proto_rawDescData\n}\n\nvar file_google_protobuf_compiler_plugin_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_google_protobuf_compiler_plugin_proto_msgTypes = make([]protoimpl.MessageInfo, 4)\nvar file_google_protobuf_compiler_plugin_proto_goTypes = []any{\n\t(CodeGeneratorResponse_Feature)(0),       // 0: google.protobuf.compiler.CodeGeneratorResponse.Feature\n\t(*Version)(nil),                          // 1: google.protobuf.compiler.Version\n\t(*CodeGeneratorRequest)(nil),             // 2: google.protobuf.compiler.CodeGeneratorRequest\n\t(*CodeGeneratorResponse)(nil),            // 3: google.protobuf.compiler.CodeGeneratorResponse\n\t(*CodeGeneratorResponse_File)(nil),       // 4: google.protobuf.compiler.CodeGeneratorResponse.File\n\t(*descriptorpb.FileDescriptorProto)(nil), // 5: google.protobuf.FileDescriptorProto\n\t(*descriptorpb.GeneratedCodeInfo)(nil),   // 6: google.protobuf.GeneratedCodeInfo\n}\nvar file_google_protobuf_compiler_plugin_proto_depIdxs = []int32{\n\t5, // 0: google.protobuf.compiler.CodeGeneratorRequest.proto_file:type_name -> google.protobuf.FileDescriptorProto\n\t5, // 1: google.protobuf.compiler.CodeGeneratorRequest.source_file_descriptors:type_name -> google.protobuf.FileDescriptorProto\n\t1, // 2: google.protobuf.compiler.CodeGeneratorRequest.compiler_version:type_name -> google.protobuf.compiler.Version\n\t4, // 3: google.protobuf.compiler.CodeGeneratorResponse.file:type_name -> google.protobuf.compiler.CodeGeneratorResponse.File\n\t6, // 4: google.protobuf.compiler.CodeGeneratorResponse.File.generated_code_info:type_name -> google.protobuf.GeneratedCodeInfo\n\t5, // [5:5] is the sub-list for method output_type\n\t5, // [5:5] is the sub-list for method input_type\n\t5, // [5:5] is the sub-list for extension type_name\n\t5, // [5:5] is the sub-list for extension extendee\n\t0, // [0:5] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_compiler_plugin_proto_init() }\nfunc file_google_protobuf_compiler_plugin_proto_init() {\n\tif File_google_protobuf_compiler_plugin_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_compiler_plugin_proto_rawDesc), len(file_google_protobuf_compiler_plugin_proto_rawDesc)),\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   4,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_compiler_plugin_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_compiler_plugin_proto_depIdxs,\n\t\tEnumInfos:         file_google_protobuf_compiler_plugin_proto_enumTypes,\n\t\tMessageInfos:      file_google_protobuf_compiler_plugin_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_compiler_plugin_proto = out.File\n\tfile_google_protobuf_compiler_plugin_proto_goTypes = nil\n\tfile_google_protobuf_compiler_plugin_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/LICENSE",
    "content": "\nThis project is covered by two different licenses: MIT and Apache.\n\n#### MIT License ####\n\nThe following files were ported to Go from C files of libyaml, and thus\nare still covered by their original MIT license, with the additional\ncopyright staring in 2011 when the project was ported over:\n\n    apic.go emitterc.go parserc.go readerc.go scannerc.go\n    writerc.go yamlh.go yamlprivateh.go\n\nCopyright (c) 2006-2010 Kirill Simonov\nCopyright (c) 2006-2011 Kirill Simonov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n### Apache License ###\n\nAll the remaining project files are covered by the Apache license:\n\nCopyright (c) 2011-2019 Canonical Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/NOTICE",
    "content": "Copyright 2011-2016 Canonical Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/README.md",
    "content": "# YAML support for the Go language\n\nIntroduction\n------------\n\nThe yaml package enables Go programs to comfortably encode and decode YAML\nvalues. It was developed within [Canonical](https://www.canonical.com) as\npart of the [juju](https://juju.ubuntu.com) project, and is based on a\npure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML)\nC library to parse and generate YAML data quickly and reliably.\n\nCompatibility\n-------------\n\nThe yaml package supports most of YAML 1.2, but preserves some behavior\nfrom 1.1 for backwards compatibility.\n\nSpecifically, as of v3 of the yaml package:\n\n - YAML 1.1 bools (_yes/no, on/off_) are supported as long as they are being\n   decoded into a typed bool value. Otherwise they behave as a string. Booleans\n   in YAML 1.2 are _true/false_ only.\n - Octals encode and decode as _0777_ per YAML 1.1, rather than _0o777_\n   as specified in YAML 1.2, because most parsers still use the old format.\n   Octals in the  _0o777_ format are supported though, so new files work.\n - Does not support base-60 floats. These are gone from YAML 1.2, and were\n   actually never supported by this package as it's clearly a poor choice.\n\nand offers backwards\ncompatibility with YAML 1.1 in some cases.\n1.2, including support for\nanchors, tags, map merging, etc. Multi-document unmarshalling is not yet\nimplemented, and base-60 floats from YAML 1.1 are purposefully not\nsupported since they're a poor design and are gone in YAML 1.2.\n\nInstallation and usage\n----------------------\n\nThe import path for the package is *gopkg.in/yaml.v3*.\n\nTo install it, run:\n\n    go get gopkg.in/yaml.v3\n\nAPI documentation\n-----------------\n\nIf opened in a browser, the import path itself leads to the API documentation:\n\n  - [https://gopkg.in/yaml.v3](https://gopkg.in/yaml.v3)\n\nAPI stability\n-------------\n\nThe package API for yaml v3 will remain stable as described in [gopkg.in](https://gopkg.in).\n\n\nLicense\n-------\n\nThe yaml package is licensed under the MIT and Apache License 2.0 licenses.\nPlease see the LICENSE file for details.\n\n\nExample\n-------\n\n```Go\npackage main\n\nimport (\n        \"fmt\"\n        \"log\"\n\n        \"gopkg.in/yaml.v3\"\n)\n\nvar data = `\na: Easy!\nb:\n  c: 2\n  d: [3, 4]\n`\n\n// Note: struct fields must be public in order for unmarshal to\n// correctly populate the data.\ntype T struct {\n        A string\n        B struct {\n                RenamedC int   `yaml:\"c\"`\n                D        []int `yaml:\",flow\"`\n        }\n}\n\nfunc main() {\n        t := T{}\n    \n        err := yaml.Unmarshal([]byte(data), &t)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- t:\\n%v\\n\\n\", t)\n    \n        d, err := yaml.Marshal(&t)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- t dump:\\n%s\\n\\n\", string(d))\n    \n        m := make(map[interface{}]interface{})\n    \n        err = yaml.Unmarshal([]byte(data), &m)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- m:\\n%v\\n\\n\", m)\n    \n        d, err = yaml.Marshal(&m)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- m dump:\\n%s\\n\\n\", string(d))\n}\n```\n\nThis example will generate the following output:\n\n```\n--- t:\n{Easy! {2 [3 4]}}\n\n--- t dump:\na: Easy!\nb:\n  c: 2\n  d: [3, 4]\n\n\n--- m:\nmap[a:Easy! b:map[c:2 d:[3 4]]]\n\n--- m dump:\na: Easy!\nb:\n  c: 2\n  d:\n  - 3\n  - 4\n```\n\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/apic.go",
    "content": "// \n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\n// \n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n// of the Software, and to permit persons to whom the Software is furnished to do\n// so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\npackage yaml\n\nimport (\n\t\"io\"\n)\n\nfunc yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) {\n\t//fmt.Println(\"yaml_insert_token\", \"pos:\", pos, \"typ:\", token.typ, \"head:\", parser.tokens_head, \"len:\", len(parser.tokens))\n\n\t// Check if we can move the queue at the beginning of the buffer.\n\tif parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) {\n\t\tif parser.tokens_head != len(parser.tokens) {\n\t\t\tcopy(parser.tokens, parser.tokens[parser.tokens_head:])\n\t\t}\n\t\tparser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head]\n\t\tparser.tokens_head = 0\n\t}\n\tparser.tokens = append(parser.tokens, *token)\n\tif pos < 0 {\n\t\treturn\n\t}\n\tcopy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:])\n\tparser.tokens[parser.tokens_head+pos] = *token\n}\n\n// Create a new parser object.\nfunc yaml_parser_initialize(parser *yaml_parser_t) bool {\n\t*parser = yaml_parser_t{\n\t\traw_buffer: make([]byte, 0, input_raw_buffer_size),\n\t\tbuffer:     make([]byte, 0, input_buffer_size),\n\t}\n\treturn true\n}\n\n// Destroy a parser object.\nfunc yaml_parser_delete(parser *yaml_parser_t) {\n\t*parser = yaml_parser_t{}\n}\n\n// String read handler.\nfunc yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {\n\tif parser.input_pos == len(parser.input) {\n\t\treturn 0, io.EOF\n\t}\n\tn = copy(buffer, parser.input[parser.input_pos:])\n\tparser.input_pos += n\n\treturn n, nil\n}\n\n// Reader read handler.\nfunc yaml_reader_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {\n\treturn parser.input_reader.Read(buffer)\n}\n\n// Set a string input.\nfunc yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"must set the input source only once\")\n\t}\n\tparser.read_handler = yaml_string_read_handler\n\tparser.input = input\n\tparser.input_pos = 0\n}\n\n// Set a file input.\nfunc yaml_parser_set_input_reader(parser *yaml_parser_t, r io.Reader) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"must set the input source only once\")\n\t}\n\tparser.read_handler = yaml_reader_read_handler\n\tparser.input_reader = r\n}\n\n// Set the source encoding.\nfunc yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) {\n\tif parser.encoding != yaml_ANY_ENCODING {\n\t\tpanic(\"must set the encoding only once\")\n\t}\n\tparser.encoding = encoding\n}\n\n// Create a new emitter object.\nfunc yaml_emitter_initialize(emitter *yaml_emitter_t) {\n\t*emitter = yaml_emitter_t{\n\t\tbuffer:     make([]byte, output_buffer_size),\n\t\traw_buffer: make([]byte, 0, output_raw_buffer_size),\n\t\tstates:     make([]yaml_emitter_state_t, 0, initial_stack_size),\n\t\tevents:     make([]yaml_event_t, 0, initial_queue_size),\n\t\tbest_width: -1,\n\t}\n}\n\n// Destroy an emitter object.\nfunc yaml_emitter_delete(emitter *yaml_emitter_t) {\n\t*emitter = yaml_emitter_t{}\n}\n\n// String write handler.\nfunc yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error {\n\t*emitter.output_buffer = append(*emitter.output_buffer, buffer...)\n\treturn nil\n}\n\n// yaml_writer_write_handler uses emitter.output_writer to write the\n// emitted text.\nfunc yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) error {\n\t_, err := emitter.output_writer.Write(buffer)\n\treturn err\n}\n\n// Set a string output.\nfunc yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"must set the output target only once\")\n\t}\n\temitter.write_handler = yaml_string_write_handler\n\temitter.output_buffer = output_buffer\n}\n\n// Set a file output.\nfunc yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"must set the output target only once\")\n\t}\n\temitter.write_handler = yaml_writer_write_handler\n\temitter.output_writer = w\n}\n\n// Set the output encoding.\nfunc yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) {\n\tif emitter.encoding != yaml_ANY_ENCODING {\n\t\tpanic(\"must set the output encoding only once\")\n\t}\n\temitter.encoding = encoding\n}\n\n// Set the canonical output style.\nfunc yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) {\n\temitter.canonical = canonical\n}\n\n// Set the indentation increment.\nfunc yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) {\n\tif indent < 2 || indent > 9 {\n\t\tindent = 2\n\t}\n\temitter.best_indent = indent\n}\n\n// Set the preferred line width.\nfunc yaml_emitter_set_width(emitter *yaml_emitter_t, width int) {\n\tif width < 0 {\n\t\twidth = -1\n\t}\n\temitter.best_width = width\n}\n\n// Set if unescaped non-ASCII characters are allowed.\nfunc yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) {\n\temitter.unicode = unicode\n}\n\n// Set the preferred line break character.\nfunc yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) {\n\temitter.line_break = line_break\n}\n\n///*\n// * Destroy a token object.\n// */\n//\n//YAML_DECLARE(void)\n//yaml_token_delete(yaml_token_t *token)\n//{\n//    assert(token);  // Non-NULL token object expected.\n//\n//    switch (token.type)\n//    {\n//        case YAML_TAG_DIRECTIVE_TOKEN:\n//            yaml_free(token.data.tag_directive.handle);\n//            yaml_free(token.data.tag_directive.prefix);\n//            break;\n//\n//        case YAML_ALIAS_TOKEN:\n//            yaml_free(token.data.alias.value);\n//            break;\n//\n//        case YAML_ANCHOR_TOKEN:\n//            yaml_free(token.data.anchor.value);\n//            break;\n//\n//        case YAML_TAG_TOKEN:\n//            yaml_free(token.data.tag.handle);\n//            yaml_free(token.data.tag.suffix);\n//            break;\n//\n//        case YAML_SCALAR_TOKEN:\n//            yaml_free(token.data.scalar.value);\n//            break;\n//\n//        default:\n//            break;\n//    }\n//\n//    memset(token, 0, sizeof(yaml_token_t));\n//}\n//\n///*\n// * Check if a string is a valid UTF-8 sequence.\n// *\n// * Check 'reader.c' for more details on UTF-8 encoding.\n// */\n//\n//static int\n//yaml_check_utf8(yaml_char_t *start, size_t length)\n//{\n//    yaml_char_t *end = start+length;\n//    yaml_char_t *pointer = start;\n//\n//    while (pointer < end) {\n//        unsigned char octet;\n//        unsigned int width;\n//        unsigned int value;\n//        size_t k;\n//\n//        octet = pointer[0];\n//        width = (octet & 0x80) == 0x00 ? 1 :\n//                (octet & 0xE0) == 0xC0 ? 2 :\n//                (octet & 0xF0) == 0xE0 ? 3 :\n//                (octet & 0xF8) == 0xF0 ? 4 : 0;\n//        value = (octet & 0x80) == 0x00 ? octet & 0x7F :\n//                (octet & 0xE0) == 0xC0 ? octet & 0x1F :\n//                (octet & 0xF0) == 0xE0 ? octet & 0x0F :\n//                (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0;\n//        if (!width) return 0;\n//        if (pointer+width > end) return 0;\n//        for (k = 1; k < width; k ++) {\n//            octet = pointer[k];\n//            if ((octet & 0xC0) != 0x80) return 0;\n//            value = (value << 6) + (octet & 0x3F);\n//        }\n//        if (!((width == 1) ||\n//            (width == 2 && value >= 0x80) ||\n//            (width == 3 && value >= 0x800) ||\n//            (width == 4 && value >= 0x10000))) return 0;\n//\n//        pointer += width;\n//    }\n//\n//    return 1;\n//}\n//\n\n// Create STREAM-START.\nfunc yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_STREAM_START_EVENT,\n\t\tencoding: encoding,\n\t}\n}\n\n// Create STREAM-END.\nfunc yaml_stream_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_STREAM_END_EVENT,\n\t}\n}\n\n// Create DOCUMENT-START.\nfunc yaml_document_start_event_initialize(\n\tevent *yaml_event_t,\n\tversion_directive *yaml_version_directive_t,\n\ttag_directives []yaml_tag_directive_t,\n\timplicit bool,\n) {\n\t*event = yaml_event_t{\n\t\ttyp:               yaml_DOCUMENT_START_EVENT,\n\t\tversion_directive: version_directive,\n\t\ttag_directives:    tag_directives,\n\t\timplicit:          implicit,\n\t}\n}\n\n// Create DOCUMENT-END.\nfunc yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_DOCUMENT_END_EVENT,\n\t\timplicit: implicit,\n\t}\n}\n\n// Create ALIAS.\nfunc yaml_alias_event_initialize(event *yaml_event_t, anchor []byte) bool {\n\t*event = yaml_event_t{\n\t\ttyp:    yaml_ALIAS_EVENT,\n\t\tanchor: anchor,\n\t}\n\treturn true\n}\n\n// Create SCALAR.\nfunc yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:             yaml_SCALAR_EVENT,\n\t\tanchor:          anchor,\n\t\ttag:             tag,\n\t\tvalue:           value,\n\t\timplicit:        plain_implicit,\n\t\tquoted_implicit: quoted_implicit,\n\t\tstyle:           yaml_style_t(style),\n\t}\n\treturn true\n}\n\n// Create SEQUENCE-START.\nfunc yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_SEQUENCE_START_EVENT,\n\t\tanchor:   anchor,\n\t\ttag:      tag,\n\t\timplicit: implicit,\n\t\tstyle:    yaml_style_t(style),\n\t}\n\treturn true\n}\n\n// Create SEQUENCE-END.\nfunc yaml_sequence_end_event_initialize(event *yaml_event_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_SEQUENCE_END_EVENT,\n\t}\n\treturn true\n}\n\n// Create MAPPING-START.\nfunc yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_MAPPING_START_EVENT,\n\t\tanchor:   anchor,\n\t\ttag:      tag,\n\t\timplicit: implicit,\n\t\tstyle:    yaml_style_t(style),\n\t}\n}\n\n// Create MAPPING-END.\nfunc yaml_mapping_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_MAPPING_END_EVENT,\n\t}\n}\n\n// Destroy an event object.\nfunc yaml_event_delete(event *yaml_event_t) {\n\t*event = yaml_event_t{}\n}\n\n///*\n// * Create a document object.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_initialize(document *yaml_document_t,\n//        version_directive *yaml_version_directive_t,\n//        tag_directives_start *yaml_tag_directive_t,\n//        tag_directives_end *yaml_tag_directive_t,\n//        start_implicit int, end_implicit int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    struct {\n//        start *yaml_node_t\n//        end *yaml_node_t\n//        top *yaml_node_t\n//    } nodes = { NULL, NULL, NULL }\n//    version_directive_copy *yaml_version_directive_t = NULL\n//    struct {\n//        start *yaml_tag_directive_t\n//        end *yaml_tag_directive_t\n//        top *yaml_tag_directive_t\n//    } tag_directives_copy = { NULL, NULL, NULL }\n//    value yaml_tag_directive_t = { NULL, NULL }\n//    mark yaml_mark_t = { 0, 0, 0 }\n//\n//    assert(document) // Non-NULL document object is expected.\n//    assert((tag_directives_start && tag_directives_end) ||\n//            (tag_directives_start == tag_directives_end))\n//                            // Valid tag directives are expected.\n//\n//    if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error\n//\n//    if (version_directive) {\n//        version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t))\n//        if (!version_directive_copy) goto error\n//        version_directive_copy.major = version_directive.major\n//        version_directive_copy.minor = version_directive.minor\n//    }\n//\n//    if (tag_directives_start != tag_directives_end) {\n//        tag_directive *yaml_tag_directive_t\n//        if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE))\n//            goto error\n//        for (tag_directive = tag_directives_start\n//                tag_directive != tag_directives_end; tag_directive ++) {\n//            assert(tag_directive.handle)\n//            assert(tag_directive.prefix)\n//            if (!yaml_check_utf8(tag_directive.handle,\n//                        strlen((char *)tag_directive.handle)))\n//                goto error\n//            if (!yaml_check_utf8(tag_directive.prefix,\n//                        strlen((char *)tag_directive.prefix)))\n//                goto error\n//            value.handle = yaml_strdup(tag_directive.handle)\n//            value.prefix = yaml_strdup(tag_directive.prefix)\n//            if (!value.handle || !value.prefix) goto error\n//            if (!PUSH(&context, tag_directives_copy, value))\n//                goto error\n//            value.handle = NULL\n//            value.prefix = NULL\n//        }\n//    }\n//\n//    DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy,\n//            tag_directives_copy.start, tag_directives_copy.top,\n//            start_implicit, end_implicit, mark, mark)\n//\n//    return 1\n//\n//error:\n//    STACK_DEL(&context, nodes)\n//    yaml_free(version_directive_copy)\n//    while (!STACK_EMPTY(&context, tag_directives_copy)) {\n//        value yaml_tag_directive_t = POP(&context, tag_directives_copy)\n//        yaml_free(value.handle)\n//        yaml_free(value.prefix)\n//    }\n//    STACK_DEL(&context, tag_directives_copy)\n//    yaml_free(value.handle)\n//    yaml_free(value.prefix)\n//\n//    return 0\n//}\n//\n///*\n// * Destroy a document object.\n// */\n//\n//YAML_DECLARE(void)\n//yaml_document_delete(document *yaml_document_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    tag_directive *yaml_tag_directive_t\n//\n//    context.error = YAML_NO_ERROR // Eliminate a compiler warning.\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    while (!STACK_EMPTY(&context, document.nodes)) {\n//        node yaml_node_t = POP(&context, document.nodes)\n//        yaml_free(node.tag)\n//        switch (node.type) {\n//            case YAML_SCALAR_NODE:\n//                yaml_free(node.data.scalar.value)\n//                break\n//            case YAML_SEQUENCE_NODE:\n//                STACK_DEL(&context, node.data.sequence.items)\n//                break\n//            case YAML_MAPPING_NODE:\n//                STACK_DEL(&context, node.data.mapping.pairs)\n//                break\n//            default:\n//                assert(0) // Should not happen.\n//        }\n//    }\n//    STACK_DEL(&context, document.nodes)\n//\n//    yaml_free(document.version_directive)\n//    for (tag_directive = document.tag_directives.start\n//            tag_directive != document.tag_directives.end\n//            tag_directive++) {\n//        yaml_free(tag_directive.handle)\n//        yaml_free(tag_directive.prefix)\n//    }\n//    yaml_free(document.tag_directives.start)\n//\n//    memset(document, 0, sizeof(yaml_document_t))\n//}\n//\n///**\n// * Get a document node.\n// */\n//\n//YAML_DECLARE(yaml_node_t *)\n//yaml_document_get_node(document *yaml_document_t, index int)\n//{\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (index > 0 && document.nodes.start + index <= document.nodes.top) {\n//        return document.nodes.start + index - 1\n//    }\n//    return NULL\n//}\n//\n///**\n// * Get the root object.\n// */\n//\n//YAML_DECLARE(yaml_node_t *)\n//yaml_document_get_root_node(document *yaml_document_t)\n//{\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (document.nodes.top != document.nodes.start) {\n//        return document.nodes.start\n//    }\n//    return NULL\n//}\n//\n///*\n// * Add a scalar node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_scalar(document *yaml_document_t,\n//        tag *yaml_char_t, value *yaml_char_t, length int,\n//        style yaml_scalar_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    value_copy *yaml_char_t = NULL\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//    assert(value) // Non-NULL value is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (length < 0) {\n//        length = strlen((char *)value)\n//    }\n//\n//    if (!yaml_check_utf8(value, length)) goto error\n//    value_copy = yaml_malloc(length+1)\n//    if (!value_copy) goto error\n//    memcpy(value_copy, value, length)\n//    value_copy[length] = '\\0'\n//\n//    SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    yaml_free(tag_copy)\n//    yaml_free(value_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Add a sequence node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_sequence(document *yaml_document_t,\n//        tag *yaml_char_t, style yaml_sequence_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    struct {\n//        start *yaml_node_item_t\n//        end *yaml_node_item_t\n//        top *yaml_node_item_t\n//    } items = { NULL, NULL, NULL }\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error\n//\n//    SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end,\n//            style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    STACK_DEL(&context, items)\n//    yaml_free(tag_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Add a mapping node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_mapping(document *yaml_document_t,\n//        tag *yaml_char_t, style yaml_mapping_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    struct {\n//        start *yaml_node_pair_t\n//        end *yaml_node_pair_t\n//        top *yaml_node_pair_t\n//    } pairs = { NULL, NULL, NULL }\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error\n//\n//    MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end,\n//            style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    STACK_DEL(&context, pairs)\n//    yaml_free(tag_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Append an item to a sequence node.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_append_sequence_item(document *yaml_document_t,\n//        sequence int, item int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//\n//    assert(document) // Non-NULL document is required.\n//    assert(sequence > 0\n//            && document.nodes.start + sequence <= document.nodes.top)\n//                            // Valid sequence id is required.\n//    assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE)\n//                            // A sequence node is required.\n//    assert(item > 0 && document.nodes.start + item <= document.nodes.top)\n//                            // Valid item id is required.\n//\n//    if (!PUSH(&context,\n//                document.nodes.start[sequence-1].data.sequence.items, item))\n//        return 0\n//\n//    return 1\n//}\n//\n///*\n// * Append a pair of a key and a value to a mapping node.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_append_mapping_pair(document *yaml_document_t,\n//        mapping int, key int, value int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//\n//    pair yaml_node_pair_t\n//\n//    assert(document) // Non-NULL document is required.\n//    assert(mapping > 0\n//            && document.nodes.start + mapping <= document.nodes.top)\n//                            // Valid mapping id is required.\n//    assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE)\n//                            // A mapping node is required.\n//    assert(key > 0 && document.nodes.start + key <= document.nodes.top)\n//                            // Valid key id is required.\n//    assert(value > 0 && document.nodes.start + value <= document.nodes.top)\n//                            // Valid value id is required.\n//\n//    pair.key = key\n//    pair.value = value\n//\n//    if (!PUSH(&context,\n//                document.nodes.start[mapping-1].data.mapping.pairs, pair))\n//        return 0\n//\n//    return 1\n//}\n//\n//\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/decode.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage yaml\n\nimport (\n\t\"encoding\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"time\"\n)\n\n// ----------------------------------------------------------------------------\n// Parser, produces a node tree out of a libyaml event stream.\n\ntype parser struct {\n\tparser   yaml_parser_t\n\tevent    yaml_event_t\n\tdoc      *Node\n\tanchors  map[string]*Node\n\tdoneInit bool\n\ttextless bool\n}\n\nfunc newParser(b []byte) *parser {\n\tp := parser{}\n\tif !yaml_parser_initialize(&p.parser) {\n\t\tpanic(\"failed to initialize YAML emitter\")\n\t}\n\tif len(b) == 0 {\n\t\tb = []byte{'\\n'}\n\t}\n\tyaml_parser_set_input_string(&p.parser, b)\n\treturn &p\n}\n\nfunc newParserFromReader(r io.Reader) *parser {\n\tp := parser{}\n\tif !yaml_parser_initialize(&p.parser) {\n\t\tpanic(\"failed to initialize YAML emitter\")\n\t}\n\tyaml_parser_set_input_reader(&p.parser, r)\n\treturn &p\n}\n\nfunc (p *parser) init() {\n\tif p.doneInit {\n\t\treturn\n\t}\n\tp.anchors = make(map[string]*Node)\n\tp.expect(yaml_STREAM_START_EVENT)\n\tp.doneInit = true\n}\n\nfunc (p *parser) destroy() {\n\tif p.event.typ != yaml_NO_EVENT {\n\t\tyaml_event_delete(&p.event)\n\t}\n\tyaml_parser_delete(&p.parser)\n}\n\n// expect consumes an event from the event stream and\n// checks that it's of the expected type.\nfunc (p *parser) expect(e yaml_event_type_t) {\n\tif p.event.typ == yaml_NO_EVENT {\n\t\tif !yaml_parser_parse(&p.parser, &p.event) {\n\t\t\tp.fail()\n\t\t}\n\t}\n\tif p.event.typ == yaml_STREAM_END_EVENT {\n\t\tfailf(\"attempted to go past the end of stream; corrupted value?\")\n\t}\n\tif p.event.typ != e {\n\t\tp.parser.problem = fmt.Sprintf(\"expected %s event but got %s\", e, p.event.typ)\n\t\tp.fail()\n\t}\n\tyaml_event_delete(&p.event)\n\tp.event.typ = yaml_NO_EVENT\n}\n\n// peek peeks at the next event in the event stream,\n// puts the results into p.event and returns the event type.\nfunc (p *parser) peek() yaml_event_type_t {\n\tif p.event.typ != yaml_NO_EVENT {\n\t\treturn p.event.typ\n\t}\n\t// It's curious choice from the underlying API to generally return a\n\t// positive result on success, but on this case return true in an error\n\t// scenario. This was the source of bugs in the past (issue #666).\n\tif !yaml_parser_parse(&p.parser, &p.event) || p.parser.error != yaml_NO_ERROR {\n\t\tp.fail()\n\t}\n\treturn p.event.typ\n}\n\nfunc (p *parser) fail() {\n\tvar where string\n\tvar line int\n\tif p.parser.context_mark.line != 0 {\n\t\tline = p.parser.context_mark.line\n\t\t// Scanner errors don't iterate line before returning error\n\t\tif p.parser.error == yaml_SCANNER_ERROR {\n\t\t\tline++\n\t\t}\n\t} else if p.parser.problem_mark.line != 0 {\n\t\tline = p.parser.problem_mark.line\n\t\t// Scanner errors don't iterate line before returning error\n\t\tif p.parser.error == yaml_SCANNER_ERROR {\n\t\t\tline++\n\t\t}\n\t}\n\tif line != 0 {\n\t\twhere = \"line \" + strconv.Itoa(line) + \": \"\n\t}\n\tvar msg string\n\tif len(p.parser.problem) > 0 {\n\t\tmsg = p.parser.problem\n\t} else {\n\t\tmsg = \"unknown problem parsing YAML content\"\n\t}\n\tfailf(\"%s%s\", where, msg)\n}\n\nfunc (p *parser) anchor(n *Node, anchor []byte) {\n\tif anchor != nil {\n\t\tn.Anchor = string(anchor)\n\t\tp.anchors[n.Anchor] = n\n\t}\n}\n\nfunc (p *parser) parse() *Node {\n\tp.init()\n\tswitch p.peek() {\n\tcase yaml_SCALAR_EVENT:\n\t\treturn p.scalar()\n\tcase yaml_ALIAS_EVENT:\n\t\treturn p.alias()\n\tcase yaml_MAPPING_START_EVENT:\n\t\treturn p.mapping()\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\treturn p.sequence()\n\tcase yaml_DOCUMENT_START_EVENT:\n\t\treturn p.document()\n\tcase yaml_STREAM_END_EVENT:\n\t\t// Happens when attempting to decode an empty buffer.\n\t\treturn nil\n\tcase yaml_TAIL_COMMENT_EVENT:\n\t\tpanic(\"internal error: unexpected tail comment event (please report)\")\n\tdefault:\n\t\tpanic(\"internal error: attempted to parse unknown event (please report): \" + p.event.typ.String())\n\t}\n}\n\nfunc (p *parser) node(kind Kind, defaultTag, tag, value string) *Node {\n\tvar style Style\n\tif tag != \"\" && tag != \"!\" {\n\t\ttag = shortTag(tag)\n\t\tstyle = TaggedStyle\n\t} else if defaultTag != \"\" {\n\t\ttag = defaultTag\n\t} else if kind == ScalarNode {\n\t\ttag, _ = resolve(\"\", value)\n\t}\n\tn := &Node{\n\t\tKind:  kind,\n\t\tTag:   tag,\n\t\tValue: value,\n\t\tStyle: style,\n\t}\n\tif !p.textless {\n\t\tn.Line = p.event.start_mark.line + 1\n\t\tn.Column = p.event.start_mark.column + 1\n\t\tn.HeadComment = string(p.event.head_comment)\n\t\tn.LineComment = string(p.event.line_comment)\n\t\tn.FootComment = string(p.event.foot_comment)\n\t}\n\treturn n\n}\n\nfunc (p *parser) parseChild(parent *Node) *Node {\n\tchild := p.parse()\n\tparent.Content = append(parent.Content, child)\n\treturn child\n}\n\nfunc (p *parser) document() *Node {\n\tn := p.node(DocumentNode, \"\", \"\", \"\")\n\tp.doc = n\n\tp.expect(yaml_DOCUMENT_START_EVENT)\n\tp.parseChild(n)\n\tif p.peek() == yaml_DOCUMENT_END_EVENT {\n\t\tn.FootComment = string(p.event.foot_comment)\n\t}\n\tp.expect(yaml_DOCUMENT_END_EVENT)\n\treturn n\n}\n\nfunc (p *parser) alias() *Node {\n\tn := p.node(AliasNode, \"\", \"\", string(p.event.anchor))\n\tn.Alias = p.anchors[n.Value]\n\tif n.Alias == nil {\n\t\tfailf(\"unknown anchor '%s' referenced\", n.Value)\n\t}\n\tp.expect(yaml_ALIAS_EVENT)\n\treturn n\n}\n\nfunc (p *parser) scalar() *Node {\n\tvar parsedStyle = p.event.scalar_style()\n\tvar nodeStyle Style\n\tswitch {\n\tcase parsedStyle&yaml_DOUBLE_QUOTED_SCALAR_STYLE != 0:\n\t\tnodeStyle = DoubleQuotedStyle\n\tcase parsedStyle&yaml_SINGLE_QUOTED_SCALAR_STYLE != 0:\n\t\tnodeStyle = SingleQuotedStyle\n\tcase parsedStyle&yaml_LITERAL_SCALAR_STYLE != 0:\n\t\tnodeStyle = LiteralStyle\n\tcase parsedStyle&yaml_FOLDED_SCALAR_STYLE != 0:\n\t\tnodeStyle = FoldedStyle\n\t}\n\tvar nodeValue = string(p.event.value)\n\tvar nodeTag = string(p.event.tag)\n\tvar defaultTag string\n\tif nodeStyle == 0 {\n\t\tif nodeValue == \"<<\" {\n\t\t\tdefaultTag = mergeTag\n\t\t}\n\t} else {\n\t\tdefaultTag = strTag\n\t}\n\tn := p.node(ScalarNode, defaultTag, nodeTag, nodeValue)\n\tn.Style |= nodeStyle\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_SCALAR_EVENT)\n\treturn n\n}\n\nfunc (p *parser) sequence() *Node {\n\tn := p.node(SequenceNode, seqTag, string(p.event.tag), \"\")\n\tif p.event.sequence_style()&yaml_FLOW_SEQUENCE_STYLE != 0 {\n\t\tn.Style |= FlowStyle\n\t}\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_SEQUENCE_START_EVENT)\n\tfor p.peek() != yaml_SEQUENCE_END_EVENT {\n\t\tp.parseChild(n)\n\t}\n\tn.LineComment = string(p.event.line_comment)\n\tn.FootComment = string(p.event.foot_comment)\n\tp.expect(yaml_SEQUENCE_END_EVENT)\n\treturn n\n}\n\nfunc (p *parser) mapping() *Node {\n\tn := p.node(MappingNode, mapTag, string(p.event.tag), \"\")\n\tblock := true\n\tif p.event.mapping_style()&yaml_FLOW_MAPPING_STYLE != 0 {\n\t\tblock = false\n\t\tn.Style |= FlowStyle\n\t}\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_MAPPING_START_EVENT)\n\tfor p.peek() != yaml_MAPPING_END_EVENT {\n\t\tk := p.parseChild(n)\n\t\tif block && k.FootComment != \"\" {\n\t\t\t// Must be a foot comment for the prior value when being dedented.\n\t\t\tif len(n.Content) > 2 {\n\t\t\t\tn.Content[len(n.Content)-3].FootComment = k.FootComment\n\t\t\t\tk.FootComment = \"\"\n\t\t\t}\n\t\t}\n\t\tv := p.parseChild(n)\n\t\tif k.FootComment == \"\" && v.FootComment != \"\" {\n\t\t\tk.FootComment = v.FootComment\n\t\t\tv.FootComment = \"\"\n\t\t}\n\t\tif p.peek() == yaml_TAIL_COMMENT_EVENT {\n\t\t\tif k.FootComment == \"\" {\n\t\t\t\tk.FootComment = string(p.event.foot_comment)\n\t\t\t}\n\t\t\tp.expect(yaml_TAIL_COMMENT_EVENT)\n\t\t}\n\t}\n\tn.LineComment = string(p.event.line_comment)\n\tn.FootComment = string(p.event.foot_comment)\n\tif n.Style&FlowStyle == 0 && n.FootComment != \"\" && len(n.Content) > 1 {\n\t\tn.Content[len(n.Content)-2].FootComment = n.FootComment\n\t\tn.FootComment = \"\"\n\t}\n\tp.expect(yaml_MAPPING_END_EVENT)\n\treturn n\n}\n\n// ----------------------------------------------------------------------------\n// Decoder, unmarshals a node into a provided value.\n\ntype decoder struct {\n\tdoc     *Node\n\taliases map[*Node]bool\n\tterrors []string\n\n\tstringMapType  reflect.Type\n\tgeneralMapType reflect.Type\n\n\tknownFields bool\n\tuniqueKeys  bool\n\tdecodeCount int\n\taliasCount  int\n\taliasDepth  int\n\n\tmergedFields map[interface{}]bool\n}\n\nvar (\n\tnodeType       = reflect.TypeOf(Node{})\n\tdurationType   = reflect.TypeOf(time.Duration(0))\n\tstringMapType  = reflect.TypeOf(map[string]interface{}{})\n\tgeneralMapType = reflect.TypeOf(map[interface{}]interface{}{})\n\tifaceType      = generalMapType.Elem()\n\ttimeType       = reflect.TypeOf(time.Time{})\n\tptrTimeType    = reflect.TypeOf(&time.Time{})\n)\n\nfunc newDecoder() *decoder {\n\td := &decoder{\n\t\tstringMapType:  stringMapType,\n\t\tgeneralMapType: generalMapType,\n\t\tuniqueKeys:     true,\n\t}\n\td.aliases = make(map[*Node]bool)\n\treturn d\n}\n\nfunc (d *decoder) terror(n *Node, tag string, out reflect.Value) {\n\tif n.Tag != \"\" {\n\t\ttag = n.Tag\n\t}\n\tvalue := n.Value\n\tif tag != seqTag && tag != mapTag {\n\t\tif len(value) > 10 {\n\t\t\tvalue = \" `\" + value[:7] + \"...`\"\n\t\t} else {\n\t\t\tvalue = \" `\" + value + \"`\"\n\t\t}\n\t}\n\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: cannot unmarshal %s%s into %s\", n.Line, shortTag(tag), value, out.Type()))\n}\n\nfunc (d *decoder) callUnmarshaler(n *Node, u Unmarshaler) (good bool) {\n\terr := u.UnmarshalYAML(n)\n\tif e, ok := err.(*TypeError); ok {\n\t\td.terrors = append(d.terrors, e.Errors...)\n\t\treturn false\n\t}\n\tif err != nil {\n\t\tfail(err)\n\t}\n\treturn true\n}\n\nfunc (d *decoder) callObsoleteUnmarshaler(n *Node, u obsoleteUnmarshaler) (good bool) {\n\tterrlen := len(d.terrors)\n\terr := u.UnmarshalYAML(func(v interface{}) (err error) {\n\t\tdefer handleErr(&err)\n\t\td.unmarshal(n, reflect.ValueOf(v))\n\t\tif len(d.terrors) > terrlen {\n\t\t\tissues := d.terrors[terrlen:]\n\t\t\td.terrors = d.terrors[:terrlen]\n\t\t\treturn &TypeError{issues}\n\t\t}\n\t\treturn nil\n\t})\n\tif e, ok := err.(*TypeError); ok {\n\t\td.terrors = append(d.terrors, e.Errors...)\n\t\treturn false\n\t}\n\tif err != nil {\n\t\tfail(err)\n\t}\n\treturn true\n}\n\n// d.prepare initializes and dereferences pointers and calls UnmarshalYAML\n// if a value is found to implement it.\n// It returns the initialized and dereferenced out value, whether\n// unmarshalling was already done by UnmarshalYAML, and if so whether\n// its types unmarshalled appropriately.\n//\n// If n holds a null value, prepare returns before doing anything.\nfunc (d *decoder) prepare(n *Node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) {\n\tif n.ShortTag() == nullTag {\n\t\treturn out, false, false\n\t}\n\tagain := true\n\tfor again {\n\t\tagain = false\n\t\tif out.Kind() == reflect.Ptr {\n\t\t\tif out.IsNil() {\n\t\t\t\tout.Set(reflect.New(out.Type().Elem()))\n\t\t\t}\n\t\t\tout = out.Elem()\n\t\t\tagain = true\n\t\t}\n\t\tif out.CanAddr() {\n\t\t\touti := out.Addr().Interface()\n\t\t\tif u, ok := outi.(Unmarshaler); ok {\n\t\t\t\tgood = d.callUnmarshaler(n, u)\n\t\t\t\treturn out, true, good\n\t\t\t}\n\t\t\tif u, ok := outi.(obsoleteUnmarshaler); ok {\n\t\t\t\tgood = d.callObsoleteUnmarshaler(n, u)\n\t\t\t\treturn out, true, good\n\t\t\t}\n\t\t}\n\t}\n\treturn out, false, false\n}\n\nfunc (d *decoder) fieldByIndex(n *Node, v reflect.Value, index []int) (field reflect.Value) {\n\tif n.ShortTag() == nullTag {\n\t\treturn reflect.Value{}\n\t}\n\tfor _, num := range index {\n\t\tfor {\n\t\t\tif v.Kind() == reflect.Ptr {\n\t\t\t\tif v.IsNil() {\n\t\t\t\t\tv.Set(reflect.New(v.Type().Elem()))\n\t\t\t\t}\n\t\t\t\tv = v.Elem()\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tv = v.Field(num)\n\t}\n\treturn v\n}\n\nconst (\n\t// 400,000 decode operations is ~500kb of dense object declarations, or\n\t// ~5kb of dense object declarations with 10000% alias expansion\n\talias_ratio_range_low = 400000\n\n\t// 4,000,000 decode operations is ~5MB of dense object declarations, or\n\t// ~4.5MB of dense object declarations with 10% alias expansion\n\talias_ratio_range_high = 4000000\n\n\t// alias_ratio_range is the range over which we scale allowed alias ratios\n\talias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low)\n)\n\nfunc allowedAliasRatio(decodeCount int) float64 {\n\tswitch {\n\tcase decodeCount <= alias_ratio_range_low:\n\t\t// allow 99% to come from alias expansion for small-to-medium documents\n\t\treturn 0.99\n\tcase decodeCount >= alias_ratio_range_high:\n\t\t// allow 10% to come from alias expansion for very large documents\n\t\treturn 0.10\n\tdefault:\n\t\t// scale smoothly from 99% down to 10% over the range.\n\t\t// this maps to 396,000 - 400,000 allowed alias-driven decodes over the range.\n\t\t// 400,000 decode operations is ~100MB of allocations in worst-case scenarios (single-item maps).\n\t\treturn 0.99 - 0.89*(float64(decodeCount-alias_ratio_range_low)/alias_ratio_range)\n\t}\n}\n\nfunc (d *decoder) unmarshal(n *Node, out reflect.Value) (good bool) {\n\td.decodeCount++\n\tif d.aliasDepth > 0 {\n\t\td.aliasCount++\n\t}\n\tif d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > allowedAliasRatio(d.decodeCount) {\n\t\tfailf(\"document contains excessive aliasing\")\n\t}\n\tif out.Type() == nodeType {\n\t\tout.Set(reflect.ValueOf(n).Elem())\n\t\treturn true\n\t}\n\tswitch n.Kind {\n\tcase DocumentNode:\n\t\treturn d.document(n, out)\n\tcase AliasNode:\n\t\treturn d.alias(n, out)\n\t}\n\tout, unmarshaled, good := d.prepare(n, out)\n\tif unmarshaled {\n\t\treturn good\n\t}\n\tswitch n.Kind {\n\tcase ScalarNode:\n\t\tgood = d.scalar(n, out)\n\tcase MappingNode:\n\t\tgood = d.mapping(n, out)\n\tcase SequenceNode:\n\t\tgood = d.sequence(n, out)\n\tcase 0:\n\t\tif n.IsZero() {\n\t\t\treturn d.null(out)\n\t\t}\n\t\tfallthrough\n\tdefault:\n\t\tfailf(\"cannot decode node with unknown kind %d\", n.Kind)\n\t}\n\treturn good\n}\n\nfunc (d *decoder) document(n *Node, out reflect.Value) (good bool) {\n\tif len(n.Content) == 1 {\n\t\td.doc = n\n\t\td.unmarshal(n.Content[0], out)\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (d *decoder) alias(n *Node, out reflect.Value) (good bool) {\n\tif d.aliases[n] {\n\t\t// TODO this could actually be allowed in some circumstances.\n\t\tfailf(\"anchor '%s' value contains itself\", n.Value)\n\t}\n\td.aliases[n] = true\n\td.aliasDepth++\n\tgood = d.unmarshal(n.Alias, out)\n\td.aliasDepth--\n\tdelete(d.aliases, n)\n\treturn good\n}\n\nvar zeroValue reflect.Value\n\nfunc resetMap(out reflect.Value) {\n\tfor _, k := range out.MapKeys() {\n\t\tout.SetMapIndex(k, zeroValue)\n\t}\n}\n\nfunc (d *decoder) null(out reflect.Value) bool {\n\tif out.CanAddr() {\n\t\tswitch out.Kind() {\n\t\tcase reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice:\n\t\t\tout.Set(reflect.Zero(out.Type()))\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (d *decoder) scalar(n *Node, out reflect.Value) bool {\n\tvar tag string\n\tvar resolved interface{}\n\tif n.indicatedString() {\n\t\ttag = strTag\n\t\tresolved = n.Value\n\t} else {\n\t\ttag, resolved = resolve(n.Tag, n.Value)\n\t\tif tag == binaryTag {\n\t\t\tdata, err := base64.StdEncoding.DecodeString(resolved.(string))\n\t\t\tif err != nil {\n\t\t\t\tfailf(\"!!binary value contains invalid base64 data\")\n\t\t\t}\n\t\t\tresolved = string(data)\n\t\t}\n\t}\n\tif resolved == nil {\n\t\treturn d.null(out)\n\t}\n\tif resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() {\n\t\t// We've resolved to exactly the type we want, so use that.\n\t\tout.Set(resolvedv)\n\t\treturn true\n\t}\n\t// Perhaps we can use the value as a TextUnmarshaler to\n\t// set its value.\n\tif out.CanAddr() {\n\t\tu, ok := out.Addr().Interface().(encoding.TextUnmarshaler)\n\t\tif ok {\n\t\t\tvar text []byte\n\t\t\tif tag == binaryTag {\n\t\t\t\ttext = []byte(resolved.(string))\n\t\t\t} else {\n\t\t\t\t// We let any value be unmarshaled into TextUnmarshaler.\n\t\t\t\t// That might be more lax than we'd like, but the\n\t\t\t\t// TextUnmarshaler itself should bowl out any dubious values.\n\t\t\t\ttext = []byte(n.Value)\n\t\t\t}\n\t\t\terr := u.UnmarshalText(text)\n\t\t\tif err != nil {\n\t\t\t\tfail(err)\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t}\n\tswitch out.Kind() {\n\tcase reflect.String:\n\t\tif tag == binaryTag {\n\t\t\tout.SetString(resolved.(string))\n\t\t\treturn true\n\t\t}\n\t\tout.SetString(n.Value)\n\t\treturn true\n\tcase reflect.Interface:\n\t\tout.Set(reflect.ValueOf(resolved))\n\t\treturn true\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t// This used to work in v2, but it's very unfriendly.\n\t\tisDuration := out.Type() == durationType\n\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tif !isDuration && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase int64:\n\t\t\tif !isDuration && !out.OverflowInt(resolved) {\n\t\t\t\tout.SetInt(resolved)\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase uint64:\n\t\t\tif !isDuration && resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase float64:\n\t\t\tif !isDuration && resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase string:\n\t\t\tif out.Type() == durationType {\n\t\t\t\td, err := time.ParseDuration(resolved)\n\t\t\t\tif err == nil {\n\t\t\t\t\tout.SetInt(int64(d))\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tif resolved >= 0 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase int64:\n\t\t\tif resolved >= 0 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase uint64:\n\t\t\tif !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase float64:\n\t\t\tif resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\tcase reflect.Bool:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase bool:\n\t\t\tout.SetBool(resolved)\n\t\t\treturn true\n\t\tcase string:\n\t\t\t// This offers some compatibility with the 1.1 spec (https://yaml.org/type/bool.html).\n\t\t\t// It only works if explicitly attempting to unmarshal into a typed bool value.\n\t\t\tswitch resolved {\n\t\t\tcase \"y\", \"Y\", \"yes\", \"Yes\", \"YES\", \"on\", \"On\", \"ON\":\n\t\t\t\tout.SetBool(true)\n\t\t\t\treturn true\n\t\t\tcase \"n\", \"N\", \"no\", \"No\", \"NO\", \"off\", \"Off\", \"OFF\":\n\t\t\t\tout.SetBool(false)\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\tcase reflect.Float32, reflect.Float64:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase int64:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase uint64:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase float64:\n\t\t\tout.SetFloat(resolved)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Struct:\n\t\tif resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() {\n\t\t\tout.Set(resolvedv)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Ptr:\n\t\tpanic(\"yaml internal error: please report the issue\")\n\t}\n\td.terror(n, tag, out)\n\treturn false\n}\n\nfunc settableValueOf(i interface{}) reflect.Value {\n\tv := reflect.ValueOf(i)\n\tsv := reflect.New(v.Type()).Elem()\n\tsv.Set(v)\n\treturn sv\n}\n\nfunc (d *decoder) sequence(n *Node, out reflect.Value) (good bool) {\n\tl := len(n.Content)\n\n\tvar iface reflect.Value\n\tswitch out.Kind() {\n\tcase reflect.Slice:\n\t\tout.Set(reflect.MakeSlice(out.Type(), l, l))\n\tcase reflect.Array:\n\t\tif l != out.Len() {\n\t\t\tfailf(\"invalid array: want %d elements but got %d\", out.Len(), l)\n\t\t}\n\tcase reflect.Interface:\n\t\t// No type hints. Will have to use a generic sequence.\n\t\tiface = out\n\t\tout = settableValueOf(make([]interface{}, l))\n\tdefault:\n\t\td.terror(n, seqTag, out)\n\t\treturn false\n\t}\n\tet := out.Type().Elem()\n\n\tj := 0\n\tfor i := 0; i < l; i++ {\n\t\te := reflect.New(et).Elem()\n\t\tif ok := d.unmarshal(n.Content[i], e); ok {\n\t\t\tout.Index(j).Set(e)\n\t\t\tj++\n\t\t}\n\t}\n\tif out.Kind() != reflect.Array {\n\t\tout.Set(out.Slice(0, j))\n\t}\n\tif iface.IsValid() {\n\t\tiface.Set(out)\n\t}\n\treturn true\n}\n\nfunc (d *decoder) mapping(n *Node, out reflect.Value) (good bool) {\n\tl := len(n.Content)\n\tif d.uniqueKeys {\n\t\tnerrs := len(d.terrors)\n\t\tfor i := 0; i < l; i += 2 {\n\t\t\tni := n.Content[i]\n\t\t\tfor j := i + 2; j < l; j += 2 {\n\t\t\t\tnj := n.Content[j]\n\t\t\t\tif ni.Kind == nj.Kind && ni.Value == nj.Value {\n\t\t\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: mapping key %#v already defined at line %d\", nj.Line, nj.Value, ni.Line))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(d.terrors) > nerrs {\n\t\t\treturn false\n\t\t}\n\t}\n\tswitch out.Kind() {\n\tcase reflect.Struct:\n\t\treturn d.mappingStruct(n, out)\n\tcase reflect.Map:\n\t\t// okay\n\tcase reflect.Interface:\n\t\tiface := out\n\t\tif isStringMap(n) {\n\t\t\tout = reflect.MakeMap(d.stringMapType)\n\t\t} else {\n\t\t\tout = reflect.MakeMap(d.generalMapType)\n\t\t}\n\t\tiface.Set(out)\n\tdefault:\n\t\td.terror(n, mapTag, out)\n\t\treturn false\n\t}\n\n\toutt := out.Type()\n\tkt := outt.Key()\n\tet := outt.Elem()\n\n\tstringMapType := d.stringMapType\n\tgeneralMapType := d.generalMapType\n\tif outt.Elem() == ifaceType {\n\t\tif outt.Key().Kind() == reflect.String {\n\t\t\td.stringMapType = outt\n\t\t} else if outt.Key() == ifaceType {\n\t\t\td.generalMapType = outt\n\t\t}\n\t}\n\n\tmergedFields := d.mergedFields\n\td.mergedFields = nil\n\n\tvar mergeNode *Node\n\n\tmapIsNew := false\n\tif out.IsNil() {\n\t\tout.Set(reflect.MakeMap(outt))\n\t\tmapIsNew = true\n\t}\n\tfor i := 0; i < l; i += 2 {\n\t\tif isMerge(n.Content[i]) {\n\t\t\tmergeNode = n.Content[i+1]\n\t\t\tcontinue\n\t\t}\n\t\tk := reflect.New(kt).Elem()\n\t\tif d.unmarshal(n.Content[i], k) {\n\t\t\tif mergedFields != nil {\n\t\t\t\tki := k.Interface()\n\t\t\t\tif mergedFields[ki] {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tmergedFields[ki] = true\n\t\t\t}\n\t\t\tkkind := k.Kind()\n\t\t\tif kkind == reflect.Interface {\n\t\t\t\tkkind = k.Elem().Kind()\n\t\t\t}\n\t\t\tif kkind == reflect.Map || kkind == reflect.Slice {\n\t\t\t\tfailf(\"invalid map key: %#v\", k.Interface())\n\t\t\t}\n\t\t\te := reflect.New(et).Elem()\n\t\t\tif d.unmarshal(n.Content[i+1], e) || n.Content[i+1].ShortTag() == nullTag && (mapIsNew || !out.MapIndex(k).IsValid()) {\n\t\t\t\tout.SetMapIndex(k, e)\n\t\t\t}\n\t\t}\n\t}\n\n\td.mergedFields = mergedFields\n\tif mergeNode != nil {\n\t\td.merge(n, mergeNode, out)\n\t}\n\n\td.stringMapType = stringMapType\n\td.generalMapType = generalMapType\n\treturn true\n}\n\nfunc isStringMap(n *Node) bool {\n\tif n.Kind != MappingNode {\n\t\treturn false\n\t}\n\tl := len(n.Content)\n\tfor i := 0; i < l; i += 2 {\n\t\tshortTag := n.Content[i].ShortTag()\n\t\tif shortTag != strTag && shortTag != mergeTag {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (d *decoder) mappingStruct(n *Node, out reflect.Value) (good bool) {\n\tsinfo, err := getStructInfo(out.Type())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tvar inlineMap reflect.Value\n\tvar elemType reflect.Type\n\tif sinfo.InlineMap != -1 {\n\t\tinlineMap = out.Field(sinfo.InlineMap)\n\t\telemType = inlineMap.Type().Elem()\n\t}\n\n\tfor _, index := range sinfo.InlineUnmarshalers {\n\t\tfield := d.fieldByIndex(n, out, index)\n\t\td.prepare(n, field)\n\t}\n\n\tmergedFields := d.mergedFields\n\td.mergedFields = nil\n\tvar mergeNode *Node\n\tvar doneFields []bool\n\tif d.uniqueKeys {\n\t\tdoneFields = make([]bool, len(sinfo.FieldsList))\n\t}\n\tname := settableValueOf(\"\")\n\tl := len(n.Content)\n\tfor i := 0; i < l; i += 2 {\n\t\tni := n.Content[i]\n\t\tif isMerge(ni) {\n\t\t\tmergeNode = n.Content[i+1]\n\t\t\tcontinue\n\t\t}\n\t\tif !d.unmarshal(ni, name) {\n\t\t\tcontinue\n\t\t}\n\t\tsname := name.String()\n\t\tif mergedFields != nil {\n\t\t\tif mergedFields[sname] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tmergedFields[sname] = true\n\t\t}\n\t\tif info, ok := sinfo.FieldsMap[sname]; ok {\n\t\t\tif d.uniqueKeys {\n\t\t\t\tif doneFields[info.Id] {\n\t\t\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: field %s already set in type %s\", ni.Line, name.String(), out.Type()))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tdoneFields[info.Id] = true\n\t\t\t}\n\t\t\tvar field reflect.Value\n\t\t\tif info.Inline == nil {\n\t\t\t\tfield = out.Field(info.Num)\n\t\t\t} else {\n\t\t\t\tfield = d.fieldByIndex(n, out, info.Inline)\n\t\t\t}\n\t\t\td.unmarshal(n.Content[i+1], field)\n\t\t} else if sinfo.InlineMap != -1 {\n\t\t\tif inlineMap.IsNil() {\n\t\t\t\tinlineMap.Set(reflect.MakeMap(inlineMap.Type()))\n\t\t\t}\n\t\t\tvalue := reflect.New(elemType).Elem()\n\t\t\td.unmarshal(n.Content[i+1], value)\n\t\t\tinlineMap.SetMapIndex(name, value)\n\t\t} else if d.knownFields {\n\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: field %s not found in type %s\", ni.Line, name.String(), out.Type()))\n\t\t}\n\t}\n\n\td.mergedFields = mergedFields\n\tif mergeNode != nil {\n\t\td.merge(n, mergeNode, out)\n\t}\n\treturn true\n}\n\nfunc failWantMap() {\n\tfailf(\"map merge requires map or sequence of maps as the value\")\n}\n\nfunc (d *decoder) merge(parent *Node, merge *Node, out reflect.Value) {\n\tmergedFields := d.mergedFields\n\tif mergedFields == nil {\n\t\td.mergedFields = make(map[interface{}]bool)\n\t\tfor i := 0; i < len(parent.Content); i += 2 {\n\t\t\tk := reflect.New(ifaceType).Elem()\n\t\t\tif d.unmarshal(parent.Content[i], k) {\n\t\t\t\td.mergedFields[k.Interface()] = true\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch merge.Kind {\n\tcase MappingNode:\n\t\td.unmarshal(merge, out)\n\tcase AliasNode:\n\t\tif merge.Alias != nil && merge.Alias.Kind != MappingNode {\n\t\t\tfailWantMap()\n\t\t}\n\t\td.unmarshal(merge, out)\n\tcase SequenceNode:\n\t\tfor i := 0; i < len(merge.Content); i++ {\n\t\t\tni := merge.Content[i]\n\t\t\tif ni.Kind == AliasNode {\n\t\t\t\tif ni.Alias != nil && ni.Alias.Kind != MappingNode {\n\t\t\t\t\tfailWantMap()\n\t\t\t\t}\n\t\t\t} else if ni.Kind != MappingNode {\n\t\t\t\tfailWantMap()\n\t\t\t}\n\t\t\td.unmarshal(ni, out)\n\t\t}\n\tdefault:\n\t\tfailWantMap()\n\t}\n\n\td.mergedFields = mergedFields\n}\n\nfunc isMerge(n *Node) bool {\n\treturn n.Kind == ScalarNode && n.Value == \"<<\" && (n.Tag == \"\" || n.Tag == \"!\" || shortTag(n.Tag) == mergeTag)\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/emitterc.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n// of the Software, and to permit persons to whom the Software is furnished to do\n// so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\npackage yaml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n)\n\n// Flush the buffer if needed.\nfunc flush(emitter *yaml_emitter_t) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) {\n\t\treturn yaml_emitter_flush(emitter)\n\t}\n\treturn true\n}\n\n// Put a character to the output buffer.\nfunc put(emitter *yaml_emitter_t, value byte) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\temitter.buffer[emitter.buffer_pos] = value\n\temitter.buffer_pos++\n\temitter.column++\n\treturn true\n}\n\n// Put a line break to the output buffer.\nfunc put_break(emitter *yaml_emitter_t) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\tswitch emitter.line_break {\n\tcase yaml_CR_BREAK:\n\t\temitter.buffer[emitter.buffer_pos] = '\\r'\n\t\temitter.buffer_pos += 1\n\tcase yaml_LN_BREAK:\n\t\temitter.buffer[emitter.buffer_pos] = '\\n'\n\t\temitter.buffer_pos += 1\n\tcase yaml_CRLN_BREAK:\n\t\temitter.buffer[emitter.buffer_pos+0] = '\\r'\n\t\temitter.buffer[emitter.buffer_pos+1] = '\\n'\n\t\temitter.buffer_pos += 2\n\tdefault:\n\t\tpanic(\"unknown line break setting\")\n\t}\n\tif emitter.column == 0 {\n\t\temitter.space_above = true\n\t}\n\temitter.column = 0\n\temitter.line++\n\t// [Go] Do this here and below and drop from everywhere else (see commented lines).\n\temitter.indention = true\n\treturn true\n}\n\n// Copy a character from a string into buffer.\nfunc write(emitter *yaml_emitter_t, s []byte, i *int) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\tp := emitter.buffer_pos\n\tw := width(s[*i])\n\tswitch w {\n\tcase 4:\n\t\temitter.buffer[p+3] = s[*i+3]\n\t\tfallthrough\n\tcase 3:\n\t\temitter.buffer[p+2] = s[*i+2]\n\t\tfallthrough\n\tcase 2:\n\t\temitter.buffer[p+1] = s[*i+1]\n\t\tfallthrough\n\tcase 1:\n\t\temitter.buffer[p+0] = s[*i+0]\n\tdefault:\n\t\tpanic(\"unknown character width\")\n\t}\n\temitter.column++\n\temitter.buffer_pos += w\n\t*i += w\n\treturn true\n}\n\n// Write a whole string into buffer.\nfunc write_all(emitter *yaml_emitter_t, s []byte) bool {\n\tfor i := 0; i < len(s); {\n\t\tif !write(emitter, s, &i) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Copy a line break character from a string into buffer.\nfunc write_break(emitter *yaml_emitter_t, s []byte, i *int) bool {\n\tif s[*i] == '\\n' {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t\t*i++\n\t} else {\n\t\tif !write(emitter, s, i) {\n\t\t\treturn false\n\t\t}\n\t\tif emitter.column == 0 {\n\t\t\temitter.space_above = true\n\t\t}\n\t\temitter.column = 0\n\t\temitter.line++\n\t\t// [Go] Do this here and above and drop from everywhere else (see commented lines).\n\t\temitter.indention = true\n\t}\n\treturn true\n}\n\n// Set an emitter error and return false.\nfunc yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool {\n\temitter.error = yaml_EMITTER_ERROR\n\temitter.problem = problem\n\treturn false\n}\n\n// Emit an event.\nfunc yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\temitter.events = append(emitter.events, *event)\n\tfor !yaml_emitter_need_more_events(emitter) {\n\t\tevent := &emitter.events[emitter.events_head]\n\t\tif !yaml_emitter_analyze_event(emitter, event) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_state_machine(emitter, event) {\n\t\t\treturn false\n\t\t}\n\t\tyaml_event_delete(event)\n\t\temitter.events_head++\n\t}\n\treturn true\n}\n\n// Check if we need to accumulate more events before emitting.\n//\n// We accumulate extra\n//  - 1 event for DOCUMENT-START\n//  - 2 events for SEQUENCE-START\n//  - 3 events for MAPPING-START\n//\nfunc yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool {\n\tif emitter.events_head == len(emitter.events) {\n\t\treturn true\n\t}\n\tvar accumulate int\n\tswitch emitter.events[emitter.events_head].typ {\n\tcase yaml_DOCUMENT_START_EVENT:\n\t\taccumulate = 1\n\t\tbreak\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\taccumulate = 2\n\t\tbreak\n\tcase yaml_MAPPING_START_EVENT:\n\t\taccumulate = 3\n\t\tbreak\n\tdefault:\n\t\treturn false\n\t}\n\tif len(emitter.events)-emitter.events_head > accumulate {\n\t\treturn false\n\t}\n\tvar level int\n\tfor i := emitter.events_head; i < len(emitter.events); i++ {\n\t\tswitch emitter.events[i].typ {\n\t\tcase yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT:\n\t\t\tlevel++\n\t\tcase yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT:\n\t\t\tlevel--\n\t\t}\n\t\tif level == 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Append a directive to the directives stack.\nfunc yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool {\n\tfor i := 0; i < len(emitter.tag_directives); i++ {\n\t\tif bytes.Equal(value.handle, emitter.tag_directives[i].handle) {\n\t\t\tif allow_duplicates {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, \"duplicate %TAG directive\")\n\t\t}\n\t}\n\n\t// [Go] Do we actually need to copy this given garbage collection\n\t// and the lack of deallocating destructors?\n\ttag_copy := yaml_tag_directive_t{\n\t\thandle: make([]byte, len(value.handle)),\n\t\tprefix: make([]byte, len(value.prefix)),\n\t}\n\tcopy(tag_copy.handle, value.handle)\n\tcopy(tag_copy.prefix, value.prefix)\n\temitter.tag_directives = append(emitter.tag_directives, tag_copy)\n\treturn true\n}\n\n// Increase the indentation level.\nfunc yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool {\n\temitter.indents = append(emitter.indents, emitter.indent)\n\tif emitter.indent < 0 {\n\t\tif flow {\n\t\t\temitter.indent = emitter.best_indent\n\t\t} else {\n\t\t\temitter.indent = 0\n\t\t}\n\t} else if !indentless {\n\t\t// [Go] This was changed so that indentations are more regular.\n\t\tif emitter.states[len(emitter.states)-1] == yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE {\n\t\t\t// The first indent inside a sequence will just skip the \"- \" indicator.\n\t\t\temitter.indent += 2\n\t\t} else {\n\t\t\t// Everything else aligns to the chosen indentation.\n\t\t\temitter.indent = emitter.best_indent*((emitter.indent+emitter.best_indent)/emitter.best_indent)\n\t\t}\n\t}\n\treturn true\n}\n\n// State dispatcher.\nfunc yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tswitch emitter.state {\n\tdefault:\n\tcase yaml_EMIT_STREAM_START_STATE:\n\t\treturn yaml_emitter_emit_stream_start(emitter, event)\n\n\tcase yaml_EMIT_FIRST_DOCUMENT_START_STATE:\n\t\treturn yaml_emitter_emit_document_start(emitter, event, true)\n\n\tcase yaml_EMIT_DOCUMENT_START_STATE:\n\t\treturn yaml_emitter_emit_document_start(emitter, event, false)\n\n\tcase yaml_EMIT_DOCUMENT_CONTENT_STATE:\n\t\treturn yaml_emitter_emit_document_content(emitter, event)\n\n\tcase yaml_EMIT_DOCUMENT_END_STATE:\n\t\treturn yaml_emitter_emit_document_end(emitter, event)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, true, false)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, false, true)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, false, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, true, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, false, true)\n\n\tcase yaml_EMIT_FLOW_MAPPING_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, false, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_value(emitter, event, true)\n\n\tcase yaml_EMIT_FLOW_MAPPING_VALUE_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_value(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE:\n\t\treturn yaml_emitter_emit_block_sequence_item(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE:\n\t\treturn yaml_emitter_emit_block_sequence_item(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_key(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_KEY_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_key(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_value(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_value(emitter, event, false)\n\n\tcase yaml_EMIT_END_STATE:\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected nothing after STREAM-END\")\n\t}\n\tpanic(\"invalid emitter state\")\n}\n\n// Expect STREAM-START.\nfunc yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif event.typ != yaml_STREAM_START_EVENT {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected STREAM-START\")\n\t}\n\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\temitter.encoding = event.encoding\n\t\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\t\temitter.encoding = yaml_UTF8_ENCODING\n\t\t}\n\t}\n\tif emitter.best_indent < 2 || emitter.best_indent > 9 {\n\t\temitter.best_indent = 2\n\t}\n\tif emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 {\n\t\temitter.best_width = 80\n\t}\n\tif emitter.best_width < 0 {\n\t\temitter.best_width = 1<<31 - 1\n\t}\n\tif emitter.line_break == yaml_ANY_BREAK {\n\t\temitter.line_break = yaml_LN_BREAK\n\t}\n\n\temitter.indent = -1\n\temitter.line = 0\n\temitter.column = 0\n\temitter.whitespace = true\n\temitter.indention = true\n\temitter.space_above = true\n\temitter.foot_indent = -1\n\n\tif emitter.encoding != yaml_UTF8_ENCODING {\n\t\tif !yaml_emitter_write_bom(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE\n\treturn true\n}\n\n// Expect DOCUMENT-START or STREAM-END.\nfunc yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\n\tif event.typ == yaml_DOCUMENT_START_EVENT {\n\n\t\tif event.version_directive != nil {\n\t\t\tif !yaml_emitter_analyze_version_directive(emitter, event.version_directive) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < len(event.tag_directives); i++ {\n\t\t\ttag_directive := &event.tag_directives[i]\n\t\t\tif !yaml_emitter_analyze_tag_directive(emitter, tag_directive) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_append_tag_directive(emitter, tag_directive, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < len(default_tag_directives); i++ {\n\t\t\ttag_directive := &default_tag_directives[i]\n\t\t\tif !yaml_emitter_append_tag_directive(emitter, tag_directive, true) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\timplicit := event.implicit\n\t\tif !first || emitter.canonical {\n\t\t\timplicit = false\n\t\t}\n\n\t\tif emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif event.version_directive != nil {\n\t\t\timplicit = false\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"%YAML\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"1.1\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif len(event.tag_directives) > 0 {\n\t\t\timplicit = false\n\t\t\tfor i := 0; i < len(event.tag_directives); i++ {\n\t\t\t\ttag_directive := &event.tag_directives[i]\n\t\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"%TAG\"), true, false, false) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif yaml_emitter_check_empty_document(emitter) {\n\t\t\timplicit = false\n\t\t}\n\t\tif !implicit {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"---\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif emitter.canonical || true {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif len(emitter.head_comment) > 0 {\n\t\t\tif !yaml_emitter_process_head_comment(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !put_break(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\temitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE\n\t\treturn true\n\t}\n\n\tif event.typ == yaml_STREAM_END_EVENT {\n\t\tif emitter.open_ended {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_flush(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = yaml_EMIT_END_STATE\n\t\treturn true\n\t}\n\n\treturn yaml_emitter_set_emitter_error(emitter, \"expected DOCUMENT-START or STREAM-END\")\n}\n\n// Expect the root node.\nfunc yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\temitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE)\n\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_emit_node(emitter, event, true, false, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Expect DOCUMENT-END.\nfunc yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif event.typ != yaml_DOCUMENT_END_EVENT {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected DOCUMENT-END\")\n\t}\n\t// [Go] Force document foot separation.\n\temitter.foot_indent = 0\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\temitter.foot_indent = -1\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !event.implicit {\n\t\t// [Go] Allocate the slice elsewhere.\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\temitter.state = yaml_EMIT_DOCUMENT_START_STATE\n\temitter.tag_directives = emitter.tag_directives[:0]\n\treturn true\n}\n\n// Expect a flow item node.\nfunc yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first, trail bool) bool {\n\tif first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level++\n\t}\n\n\tif event.typ == yaml_SEQUENCE_END_EVENT {\n\t\tif emitter.canonical && !first && !trail {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\temitter.flow_level--\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\tif emitter.column == 0 || emitter.canonical && !first {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_process_line_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\n\t\treturn true\n\t}\n\n\tif !first && !trail {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\tif emitter.column == 0 {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE)\n\t} else {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE)\n\t}\n\tif !yaml_emitter_emit_node(emitter, event, false, true, false, false) {\n\t\treturn false\n\t}\n\tif len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Expect a flow key node.\nfunc yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first, trail bool) bool {\n\tif first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level++\n\t}\n\n\tif event.typ == yaml_MAPPING_END_EVENT {\n\t\tif (emitter.canonical || len(emitter.head_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0) && !first && !trail {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_process_head_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level--\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\tif emitter.canonical && !first {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_process_line_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\n\tif !first && !trail {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\n\tif emitter.column == 0 {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif !emitter.canonical && yaml_emitter_check_simple_key(emitter) {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE)\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, true)\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a flow value node.\nfunc yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {\n\tif simple {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE)\n\t} else {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE)\n\t}\n\tif !yaml_emitter_emit_node(emitter, event, false, false, true, false) {\n\t\treturn false\n\t}\n\tif len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Expect a block item node.\nfunc yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_increase_indent(emitter, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif event.typ == yaml_SEQUENCE_END_EVENT {\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE)\n\tif !yaml_emitter_emit_node(emitter, event, false, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Expect a block key node.\nfunc yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_increase_indent(emitter, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\tif event.typ == yaml_MAPPING_END_EVENT {\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif len(emitter.line_comment) > 0 {\n\t\t// [Go] A line comment was provided for the key. That's unusual as the\n\t\t//      scanner associates line comments with the value. Either way,\n\t\t//      save the line comment and render it appropriately later.\n\t\temitter.key_line_comment = emitter.line_comment\n\t\temitter.line_comment = nil\n\t}\n\tif yaml_emitter_check_simple_key(emitter) {\n\t\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE)\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, true)\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a block value node.\nfunc yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {\n\tif simple {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif len(emitter.key_line_comment) > 0 {\n\t\t// [Go] Line comments are generally associated with the value, but when there's\n\t\t//      no value on the same line as a mapping key they end up attached to the\n\t\t//      key itself.\n\t\tif event.typ == yaml_SCALAR_EVENT {\n\t\t\tif len(emitter.line_comment) == 0 {\n\t\t\t\t// A scalar is coming and it has no line comments by itself yet,\n\t\t\t\t// so just let it handle the line comment as usual. If it has a\n\t\t\t\t// line comment, we can't have both so the one from the key is lost.\n\t\t\t\temitter.line_comment = emitter.key_line_comment\n\t\t\t\temitter.key_line_comment = nil\n\t\t\t}\n\t\t} else if event.sequence_style() != yaml_FLOW_SEQUENCE_STYLE && (event.typ == yaml_MAPPING_START_EVENT || event.typ == yaml_SEQUENCE_START_EVENT) {\n\t\t\t// An indented block follows, so write the comment right now.\n\t\t\temitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment\n\t\t\tif !yaml_emitter_process_line_comment(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment\n\t\t}\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE)\n\tif !yaml_emitter_emit_node(emitter, event, false, false, true, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc yaml_emitter_silent_nil_event(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\treturn event.typ == yaml_SCALAR_EVENT && event.implicit && !emitter.canonical && len(emitter.scalar_data.value) == 0\n}\n\n// Expect a node.\nfunc yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t,\n\troot bool, sequence bool, mapping bool, simple_key bool) bool {\n\n\temitter.root_context = root\n\temitter.sequence_context = sequence\n\temitter.mapping_context = mapping\n\temitter.simple_key_context = simple_key\n\n\tswitch event.typ {\n\tcase yaml_ALIAS_EVENT:\n\t\treturn yaml_emitter_emit_alias(emitter, event)\n\tcase yaml_SCALAR_EVENT:\n\t\treturn yaml_emitter_emit_scalar(emitter, event)\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\treturn yaml_emitter_emit_sequence_start(emitter, event)\n\tcase yaml_MAPPING_START_EVENT:\n\t\treturn yaml_emitter_emit_mapping_start(emitter, event)\n\tdefault:\n\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\tfmt.Sprintf(\"expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS, but got %v\", event.typ))\n\t}\n}\n\n// Expect ALIAS.\nfunc yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\temitter.state = emitter.states[len(emitter.states)-1]\n\temitter.states = emitter.states[:len(emitter.states)-1]\n\treturn true\n}\n\n// Expect SCALAR.\nfunc yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_select_scalar_style(emitter, event) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_scalar(emitter) {\n\t\treturn false\n\t}\n\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\temitter.state = emitter.states[len(emitter.states)-1]\n\temitter.states = emitter.states[:len(emitter.states)-1]\n\treturn true\n}\n\n// Expect SEQUENCE-START.\nfunc yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE ||\n\t\tyaml_emitter_check_empty_sequence(emitter) {\n\t\temitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE\n\t} else {\n\t\temitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE\n\t}\n\treturn true\n}\n\n// Expect MAPPING-START.\nfunc yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE ||\n\t\tyaml_emitter_check_empty_mapping(emitter) {\n\t\temitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE\n\t} else {\n\t\temitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE\n\t}\n\treturn true\n}\n\n// Check if the document content is an empty scalar.\nfunc yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool {\n\treturn false // [Go] Huh?\n}\n\n// Check if the next events represent an empty sequence.\nfunc yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool {\n\tif len(emitter.events)-emitter.events_head < 2 {\n\t\treturn false\n\t}\n\treturn emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT &&\n\t\temitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT\n}\n\n// Check if the next events represent an empty mapping.\nfunc yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool {\n\tif len(emitter.events)-emitter.events_head < 2 {\n\t\treturn false\n\t}\n\treturn emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT &&\n\t\temitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT\n}\n\n// Check if the next node can be expressed as a simple key.\nfunc yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool {\n\tlength := 0\n\tswitch emitter.events[emitter.events_head].typ {\n\tcase yaml_ALIAS_EVENT:\n\t\tlength += len(emitter.anchor_data.anchor)\n\tcase yaml_SCALAR_EVENT:\n\t\tif emitter.scalar_data.multiline {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix) +\n\t\t\tlen(emitter.scalar_data.value)\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\tif !yaml_emitter_check_empty_sequence(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix)\n\tcase yaml_MAPPING_START_EVENT:\n\t\tif !yaml_emitter_check_empty_mapping(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix)\n\tdefault:\n\t\treturn false\n\t}\n\treturn length <= 128\n}\n\n// Determine an acceptable scalar style.\nfunc yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\n\tno_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0\n\tif no_tag && !event.implicit && !event.quoted_implicit {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"neither tag nor implicit flags are specified\")\n\t}\n\n\tstyle := event.scalar_style()\n\tif style == yaml_ANY_SCALAR_STYLE {\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\t}\n\tif emitter.canonical {\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\tif emitter.simple_key_context && emitter.scalar_data.multiline {\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\n\tif style == yaml_PLAIN_SCALAR_STYLE {\n\t\tif emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed ||\n\t\t\temitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t\tif len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t\tif no_tag && !event.implicit {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\tif style == yaml_SINGLE_QUOTED_SCALAR_STYLE {\n\t\tif !emitter.scalar_data.single_quoted_allowed {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\tif style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE {\n\t\tif !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\n\tif no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE {\n\t\temitter.tag_data.handle = []byte{'!'}\n\t}\n\temitter.scalar_data.style = style\n\treturn true\n}\n\n// Write an anchor.\nfunc yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool {\n\tif emitter.anchor_data.anchor == nil {\n\t\treturn true\n\t}\n\tc := []byte{'&'}\n\tif emitter.anchor_data.alias {\n\t\tc[0] = '*'\n\t}\n\tif !yaml_emitter_write_indicator(emitter, c, true, false, false) {\n\t\treturn false\n\t}\n\treturn yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor)\n}\n\n// Write a tag.\nfunc yaml_emitter_process_tag(emitter *yaml_emitter_t) bool {\n\tif len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 {\n\t\treturn true\n\t}\n\tif len(emitter.tag_data.handle) > 0 {\n\t\tif !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) {\n\t\t\treturn false\n\t\t}\n\t\tif len(emitter.tag_data.suffix) > 0 {\n\t\t\tif !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// [Go] Allocate these slices elsewhere.\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"!<\"), true, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Write a scalar.\nfunc yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool {\n\tswitch emitter.scalar_data.style {\n\tcase yaml_PLAIN_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_SINGLE_QUOTED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_DOUBLE_QUOTED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_LITERAL_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value)\n\n\tcase yaml_FOLDED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value)\n\t}\n\tpanic(\"unknown scalar style\")\n}\n\n// Write a head comment.\nfunc yaml_emitter_process_head_comment(emitter *yaml_emitter_t) bool {\n\tif len(emitter.tail_comment) > 0 {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_comment(emitter, emitter.tail_comment) {\n\t\t\treturn false\n\t\t}\n\t\temitter.tail_comment = emitter.tail_comment[:0]\n\t\temitter.foot_indent = emitter.indent\n\t\tif emitter.foot_indent < 0 {\n\t\t\temitter.foot_indent = 0\n\t\t}\n\t}\n\n\tif len(emitter.head_comment) == 0 {\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_comment(emitter, emitter.head_comment) {\n\t\treturn false\n\t}\n\temitter.head_comment = emitter.head_comment[:0]\n\treturn true\n}\n\n// Write an line comment.\nfunc yaml_emitter_process_line_comment(emitter *yaml_emitter_t) bool {\n\tif len(emitter.line_comment) == 0 {\n\t\treturn true\n\t}\n\tif !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_write_comment(emitter, emitter.line_comment) {\n\t\treturn false\n\t}\n\temitter.line_comment = emitter.line_comment[:0]\n\treturn true\n}\n\n// Write a foot comment.\nfunc yaml_emitter_process_foot_comment(emitter *yaml_emitter_t) bool {\n\tif len(emitter.foot_comment) == 0 {\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_comment(emitter, emitter.foot_comment) {\n\t\treturn false\n\t}\n\temitter.foot_comment = emitter.foot_comment[:0]\n\temitter.foot_indent = emitter.indent\n\tif emitter.foot_indent < 0 {\n\t\temitter.foot_indent = 0\n\t}\n\treturn true\n}\n\n// Check if a %YAML directive is valid.\nfunc yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool {\n\tif version_directive.major != 1 || version_directive.minor != 1 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"incompatible %YAML directive\")\n\t}\n\treturn true\n}\n\n// Check if a %TAG directive is valid.\nfunc yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool {\n\thandle := tag_directive.handle\n\tprefix := tag_directive.prefix\n\tif len(handle) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must not be empty\")\n\t}\n\tif handle[0] != '!' {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must start with '!'\")\n\t}\n\tif handle[len(handle)-1] != '!' {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must end with '!'\")\n\t}\n\tfor i := 1; i < len(handle)-1; i += width(handle[i]) {\n\t\tif !is_alpha(handle, i) {\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must contain alphanumerical characters only\")\n\t\t}\n\t}\n\tif len(prefix) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag prefix must not be empty\")\n\t}\n\treturn true\n}\n\n// Check if an anchor is valid.\nfunc yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool {\n\tif len(anchor) == 0 {\n\t\tproblem := \"anchor value must not be empty\"\n\t\tif alias {\n\t\t\tproblem = \"alias value must not be empty\"\n\t\t}\n\t\treturn yaml_emitter_set_emitter_error(emitter, problem)\n\t}\n\tfor i := 0; i < len(anchor); i += width(anchor[i]) {\n\t\tif !is_alpha(anchor, i) {\n\t\t\tproblem := \"anchor value must contain alphanumerical characters only\"\n\t\t\tif alias {\n\t\t\t\tproblem = \"alias value must contain alphanumerical characters only\"\n\t\t\t}\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, problem)\n\t\t}\n\t}\n\temitter.anchor_data.anchor = anchor\n\temitter.anchor_data.alias = alias\n\treturn true\n}\n\n// Check if a tag is valid.\nfunc yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool {\n\tif len(tag) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag value must not be empty\")\n\t}\n\tfor i := 0; i < len(emitter.tag_directives); i++ {\n\t\ttag_directive := &emitter.tag_directives[i]\n\t\tif bytes.HasPrefix(tag, tag_directive.prefix) {\n\t\t\temitter.tag_data.handle = tag_directive.handle\n\t\t\temitter.tag_data.suffix = tag[len(tag_directive.prefix):]\n\t\t\treturn true\n\t\t}\n\t}\n\temitter.tag_data.suffix = tag\n\treturn true\n}\n\n// Check if a scalar is valid.\nfunc yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tvar (\n\t\tblock_indicators   = false\n\t\tflow_indicators    = false\n\t\tline_breaks        = false\n\t\tspecial_characters = false\n\t\ttab_characters     = false\n\n\t\tleading_space  = false\n\t\tleading_break  = false\n\t\ttrailing_space = false\n\t\ttrailing_break = false\n\t\tbreak_space    = false\n\t\tspace_break    = false\n\n\t\tpreceded_by_whitespace = false\n\t\tfollowed_by_whitespace = false\n\t\tprevious_space         = false\n\t\tprevious_break         = false\n\t)\n\n\temitter.scalar_data.value = value\n\n\tif len(value) == 0 {\n\t\temitter.scalar_data.multiline = false\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = true\n\t\temitter.scalar_data.single_quoted_allowed = true\n\t\temitter.scalar_data.block_allowed = false\n\t\treturn true\n\t}\n\n\tif len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) {\n\t\tblock_indicators = true\n\t\tflow_indicators = true\n\t}\n\n\tpreceded_by_whitespace = true\n\tfor i, w := 0, 0; i < len(value); i += w {\n\t\tw = width(value[i])\n\t\tfollowed_by_whitespace = i+w >= len(value) || is_blank(value, i+w)\n\n\t\tif i == 0 {\n\t\t\tswitch value[i] {\n\t\t\tcase '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\\'', '\"', '%', '@', '`':\n\t\t\t\tflow_indicators = true\n\t\t\t\tblock_indicators = true\n\t\t\tcase '?', ':':\n\t\t\t\tflow_indicators = true\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\tcase '-':\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tflow_indicators = true\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tswitch value[i] {\n\t\t\tcase ',', '?', '[', ']', '{', '}':\n\t\t\t\tflow_indicators = true\n\t\t\tcase ':':\n\t\t\t\tflow_indicators = true\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\tcase '#':\n\t\t\t\tif preceded_by_whitespace {\n\t\t\t\t\tflow_indicators = true\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif value[i] == '\\t' {\n\t\t\ttab_characters = true\n\t\t} else if !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode {\n\t\t\tspecial_characters = true\n\t\t}\n\t\tif is_space(value, i) {\n\t\t\tif i == 0 {\n\t\t\t\tleading_space = true\n\t\t\t}\n\t\t\tif i+width(value[i]) == len(value) {\n\t\t\t\ttrailing_space = true\n\t\t\t}\n\t\t\tif previous_break {\n\t\t\t\tbreak_space = true\n\t\t\t}\n\t\t\tprevious_space = true\n\t\t\tprevious_break = false\n\t\t} else if is_break(value, i) {\n\t\t\tline_breaks = true\n\t\t\tif i == 0 {\n\t\t\t\tleading_break = true\n\t\t\t}\n\t\t\tif i+width(value[i]) == len(value) {\n\t\t\t\ttrailing_break = true\n\t\t\t}\n\t\t\tif previous_space {\n\t\t\t\tspace_break = true\n\t\t\t}\n\t\t\tprevious_space = false\n\t\t\tprevious_break = true\n\t\t} else {\n\t\t\tprevious_space = false\n\t\t\tprevious_break = false\n\t\t}\n\n\t\t// [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition.\n\t\tpreceded_by_whitespace = is_blankz(value, i)\n\t}\n\n\temitter.scalar_data.multiline = line_breaks\n\temitter.scalar_data.flow_plain_allowed = true\n\temitter.scalar_data.block_plain_allowed = true\n\temitter.scalar_data.single_quoted_allowed = true\n\temitter.scalar_data.block_allowed = true\n\n\tif leading_space || leading_break || trailing_space || trailing_break {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\tif trailing_space {\n\t\temitter.scalar_data.block_allowed = false\n\t}\n\tif break_space {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t\temitter.scalar_data.single_quoted_allowed = false\n\t}\n\tif space_break || tab_characters || special_characters {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t\temitter.scalar_data.single_quoted_allowed = false\n\t}\n\tif space_break || special_characters {\n\t\temitter.scalar_data.block_allowed = false\n\t}\n\tif line_breaks {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\tif flow_indicators {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t}\n\tif block_indicators {\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\treturn true\n}\n\n// Check if the event data is valid.\nfunc yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\n\temitter.anchor_data.anchor = nil\n\temitter.tag_data.handle = nil\n\temitter.tag_data.suffix = nil\n\temitter.scalar_data.value = nil\n\n\tif len(event.head_comment) > 0 {\n\t\temitter.head_comment = event.head_comment\n\t}\n\tif len(event.line_comment) > 0 {\n\t\temitter.line_comment = event.line_comment\n\t}\n\tif len(event.foot_comment) > 0 {\n\t\temitter.foot_comment = event.foot_comment\n\t}\n\tif len(event.tail_comment) > 0 {\n\t\temitter.tail_comment = event.tail_comment\n\t}\n\n\tswitch event.typ {\n\tcase yaml_ALIAS_EVENT:\n\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, true) {\n\t\t\treturn false\n\t\t}\n\n\tcase yaml_SCALAR_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_analyze_scalar(emitter, event.value) {\n\t\t\treturn false\n\t\t}\n\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || !event.implicit) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\tcase yaml_MAPPING_START_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || !event.implicit) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\n// Write the BOM character.\nfunc yaml_emitter_write_bom(emitter *yaml_emitter_t) bool {\n\tif !flush(emitter) {\n\t\treturn false\n\t}\n\tpos := emitter.buffer_pos\n\temitter.buffer[pos+0] = '\\xEF'\n\temitter.buffer[pos+1] = '\\xBB'\n\temitter.buffer[pos+2] = '\\xBF'\n\temitter.buffer_pos += 3\n\treturn true\n}\n\nfunc yaml_emitter_write_indent(emitter *yaml_emitter_t) bool {\n\tindent := emitter.indent\n\tif indent < 0 {\n\t\tindent = 0\n\t}\n\tif !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif emitter.foot_indent == indent {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tfor emitter.column < indent {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.whitespace = true\n\t//emitter.indention = true\n\temitter.space_above = false\n\temitter.foot_indent = -1\n\treturn true\n}\n\nfunc yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool {\n\tif need_whitespace && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !write_all(emitter, indicator) {\n\t\treturn false\n\t}\n\temitter.whitespace = is_whitespace\n\temitter.indention = (emitter.indention && is_indention)\n\temitter.open_ended = false\n\treturn true\n}\n\nfunc yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool {\n\tif !write_all(emitter, value) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool {\n\tif !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !write_all(emitter, value) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool {\n\tif need_whitespace && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tfor i := 0; i < len(value); {\n\t\tvar must_write bool\n\t\tswitch value[i] {\n\t\tcase ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\\'', '(', ')', '[', ']':\n\t\t\tmust_write = true\n\t\tdefault:\n\t\t\tmust_write = is_alpha(value, i)\n\t\t}\n\t\tif must_write {\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\tw := width(value[i])\n\t\t\tfor k := 0; k < w; k++ {\n\t\t\t\toctet := value[i]\n\t\t\t\ti++\n\t\t\t\tif !put(emitter, '%') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tc := octet >> 4\n\t\t\t\tif c < 10 {\n\t\t\t\t\tc += '0'\n\t\t\t\t} else {\n\t\t\t\t\tc += 'A' - 10\n\t\t\t\t}\n\t\t\t\tif !put(emitter, c) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tc = octet & 0x0f\n\t\t\t\tif c < 10 {\n\t\t\t\t\tc += '0'\n\t\t\t\t} else {\n\t\t\t\t\tc += 'A' - 10\n\t\t\t\t}\n\t\t\t\tif !put(emitter, c) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\tif len(value) > 0 && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tspaces := false\n\tbreaks := false\n\tfor i := 0; i < len(value); {\n\t\tif is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else if is_break(value, i) {\n\t\t\tif !breaks && value[i] == '\\n' {\n\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tspaces = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\n\tif len(value) > 0 {\n\t\temitter.whitespace = false\n\t}\n\temitter.indention = false\n\tif emitter.root_context {\n\t\temitter.open_ended = true\n\t}\n\n\treturn true\n}\n\nfunc yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\\''}, true, false, false) {\n\t\treturn false\n\t}\n\n\tspaces := false\n\tbreaks := false\n\tfor i := 0; i < len(value); {\n\t\tif is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else if is_break(value, i) {\n\t\t\tif !breaks && value[i] == '\\n' {\n\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif value[i] == '\\'' {\n\t\t\t\tif !put(emitter, '\\'') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tspaces = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\\''}, false, false, false) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\tspaces := false\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\"'}, true, false, false) {\n\t\treturn false\n\t}\n\n\tfor i := 0; i < len(value); {\n\t\tif !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) ||\n\t\t\tis_bom(value, i) || is_break(value, i) ||\n\t\t\tvalue[i] == '\"' || value[i] == '\\\\' {\n\n\t\t\toctet := value[i]\n\n\t\t\tvar w int\n\t\t\tvar v rune\n\t\t\tswitch {\n\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\tw, v = 1, rune(octet&0x7F)\n\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\tw, v = 2, rune(octet&0x1F)\n\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\tw, v = 3, rune(octet&0x0F)\n\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\tw, v = 4, rune(octet&0x07)\n\t\t\t}\n\t\t\tfor k := 1; k < w; k++ {\n\t\t\t\toctet = value[i+k]\n\t\t\t\tv = (v << 6) + (rune(octet) & 0x3F)\n\t\t\t}\n\t\t\ti += w\n\n\t\t\tif !put(emitter, '\\\\') {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tvar ok bool\n\t\t\tswitch v {\n\t\t\tcase 0x00:\n\t\t\t\tok = put(emitter, '0')\n\t\t\tcase 0x07:\n\t\t\t\tok = put(emitter, 'a')\n\t\t\tcase 0x08:\n\t\t\t\tok = put(emitter, 'b')\n\t\t\tcase 0x09:\n\t\t\t\tok = put(emitter, 't')\n\t\t\tcase 0x0A:\n\t\t\t\tok = put(emitter, 'n')\n\t\t\tcase 0x0b:\n\t\t\t\tok = put(emitter, 'v')\n\t\t\tcase 0x0c:\n\t\t\t\tok = put(emitter, 'f')\n\t\t\tcase 0x0d:\n\t\t\t\tok = put(emitter, 'r')\n\t\t\tcase 0x1b:\n\t\t\t\tok = put(emitter, 'e')\n\t\t\tcase 0x22:\n\t\t\t\tok = put(emitter, '\"')\n\t\t\tcase 0x5c:\n\t\t\t\tok = put(emitter, '\\\\')\n\t\t\tcase 0x85:\n\t\t\t\tok = put(emitter, 'N')\n\t\t\tcase 0xA0:\n\t\t\t\tok = put(emitter, '_')\n\t\t\tcase 0x2028:\n\t\t\t\tok = put(emitter, 'L')\n\t\t\tcase 0x2029:\n\t\t\t\tok = put(emitter, 'P')\n\t\t\tdefault:\n\t\t\t\tif v <= 0xFF {\n\t\t\t\t\tok = put(emitter, 'x')\n\t\t\t\t\tw = 2\n\t\t\t\t} else if v <= 0xFFFF {\n\t\t\t\t\tok = put(emitter, 'u')\n\t\t\t\t\tw = 4\n\t\t\t\t} else {\n\t\t\t\t\tok = put(emitter, 'U')\n\t\t\t\t\tw = 8\n\t\t\t\t}\n\t\t\t\tfor k := (w - 1) * 4; ok && k >= 0; k -= 4 {\n\t\t\t\t\tdigit := byte((v >> uint(k)) & 0x0F)\n\t\t\t\t\tif digit < 10 {\n\t\t\t\t\t\tok = put(emitter, digit+'0')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tok = put(emitter, digit+'A'-10)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = false\n\t\t} else if is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif is_space(value, i+1) {\n\t\t\t\t\tif !put(emitter, '\\\\') {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else if !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else {\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = false\n\t\t}\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\"'}, false, false, false) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool {\n\tif is_space(value, 0) || is_break(value, 0) {\n\t\tindent_hint := []byte{'0' + byte(emitter.best_indent)}\n\t\tif !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\temitter.open_ended = false\n\n\tvar chomp_hint [1]byte\n\tif len(value) == 0 {\n\t\tchomp_hint[0] = '-'\n\t} else {\n\t\ti := len(value) - 1\n\t\tfor value[i]&0xC0 == 0x80 {\n\t\t\ti--\n\t\t}\n\t\tif !is_break(value, i) {\n\t\t\tchomp_hint[0] = '-'\n\t\t} else if i == 0 {\n\t\t\tchomp_hint[0] = '+'\n\t\t\temitter.open_ended = true\n\t\t} else {\n\t\t\ti--\n\t\t\tfor value[i]&0xC0 == 0x80 {\n\t\t\t\ti--\n\t\t\t}\n\t\t\tif is_break(value, i) {\n\t\t\t\tchomp_hint[0] = '+'\n\t\t\t\temitter.open_ended = true\n\t\t\t}\n\t\t}\n\t}\n\tif chomp_hint[0] != 0 {\n\t\tif !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tif !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_block_scalar_hints(emitter, value) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\t//emitter.indention = true\n\temitter.whitespace = true\n\tbreaks := true\n\tfor i := 0; i < len(value); {\n\t\tif is_break(value, i) {\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunc yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tif !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_block_scalar_hints(emitter, value) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\n\t//emitter.indention = true\n\temitter.whitespace = true\n\n\tbreaks := true\n\tleading_spaces := true\n\tfor i := 0; i < len(value); {\n\t\tif is_break(value, i) {\n\t\t\tif !breaks && !leading_spaces && value[i] == '\\n' {\n\t\t\t\tk := 0\n\t\t\t\tfor is_break(value, k) {\n\t\t\t\t\tk += width(value[k])\n\t\t\t\t}\n\t\t\t\tif !is_blankz(value, k) {\n\t\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tleading_spaces = is_blank(value, i)\n\t\t\t}\n\t\t\tif !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc yaml_emitter_write_comment(emitter *yaml_emitter_t, comment []byte) bool {\n\tbreaks := false\n\tpound := false\n\tfor i := 0; i < len(comment); {\n\t\tif is_break(comment, i) {\n\t\t\tif !write_break(emitter, comment, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t\tpound = false\n\t\t} else {\n\t\t\tif breaks && !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !pound {\n\t\t\t\tif comment[i] != '#' && (!put(emitter, '#') || !put(emitter, ' ')) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tpound = true\n\t\t\t}\n\t\t\tif !write(emitter, comment, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\tif !breaks && !put_break(emitter) {\n\t\treturn false\n\t}\n\n\temitter.whitespace = true\n\t//emitter.indention = true\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/encode.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage yaml\n\nimport (\n\t\"encoding\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n)\n\ntype encoder struct {\n\temitter  yaml_emitter_t\n\tevent    yaml_event_t\n\tout      []byte\n\tflow     bool\n\tindent   int\n\tdoneInit bool\n}\n\nfunc newEncoder() *encoder {\n\te := &encoder{}\n\tyaml_emitter_initialize(&e.emitter)\n\tyaml_emitter_set_output_string(&e.emitter, &e.out)\n\tyaml_emitter_set_unicode(&e.emitter, true)\n\treturn e\n}\n\nfunc newEncoderWithWriter(w io.Writer) *encoder {\n\te := &encoder{}\n\tyaml_emitter_initialize(&e.emitter)\n\tyaml_emitter_set_output_writer(&e.emitter, w)\n\tyaml_emitter_set_unicode(&e.emitter, true)\n\treturn e\n}\n\nfunc (e *encoder) init() {\n\tif e.doneInit {\n\t\treturn\n\t}\n\tif e.indent == 0 {\n\t\te.indent = 4\n\t}\n\te.emitter.best_indent = e.indent\n\tyaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING)\n\te.emit()\n\te.doneInit = true\n}\n\nfunc (e *encoder) finish() {\n\te.emitter.open_ended = false\n\tyaml_stream_end_event_initialize(&e.event)\n\te.emit()\n}\n\nfunc (e *encoder) destroy() {\n\tyaml_emitter_delete(&e.emitter)\n}\n\nfunc (e *encoder) emit() {\n\t// This will internally delete the e.event value.\n\te.must(yaml_emitter_emit(&e.emitter, &e.event))\n}\n\nfunc (e *encoder) must(ok bool) {\n\tif !ok {\n\t\tmsg := e.emitter.problem\n\t\tif msg == \"\" {\n\t\t\tmsg = \"unknown problem generating YAML content\"\n\t\t}\n\t\tfailf(\"%s\", msg)\n\t}\n}\n\nfunc (e *encoder) marshalDoc(tag string, in reflect.Value) {\n\te.init()\n\tvar node *Node\n\tif in.IsValid() {\n\t\tnode, _ = in.Interface().(*Node)\n\t}\n\tif node != nil && node.Kind == DocumentNode {\n\t\te.nodev(in)\n\t} else {\n\t\tyaml_document_start_event_initialize(&e.event, nil, nil, true)\n\t\te.emit()\n\t\te.marshal(tag, in)\n\t\tyaml_document_end_event_initialize(&e.event, true)\n\t\te.emit()\n\t}\n}\n\nfunc (e *encoder) marshal(tag string, in reflect.Value) {\n\ttag = shortTag(tag)\n\tif !in.IsValid() || in.Kind() == reflect.Ptr && in.IsNil() {\n\t\te.nilv()\n\t\treturn\n\t}\n\tiface := in.Interface()\n\tswitch value := iface.(type) {\n\tcase *Node:\n\t\te.nodev(in)\n\t\treturn\n\tcase Node:\n\t\tif !in.CanAddr() {\n\t\t\tvar n = reflect.New(in.Type()).Elem()\n\t\t\tn.Set(in)\n\t\t\tin = n\n\t\t}\n\t\te.nodev(in.Addr())\n\t\treturn\n\tcase time.Time:\n\t\te.timev(tag, in)\n\t\treturn\n\tcase *time.Time:\n\t\te.timev(tag, in.Elem())\n\t\treturn\n\tcase time.Duration:\n\t\te.stringv(tag, reflect.ValueOf(value.String()))\n\t\treturn\n\tcase Marshaler:\n\t\tv, err := value.MarshalYAML()\n\t\tif err != nil {\n\t\t\tfail(err)\n\t\t}\n\t\tif v == nil {\n\t\t\te.nilv()\n\t\t\treturn\n\t\t}\n\t\te.marshal(tag, reflect.ValueOf(v))\n\t\treturn\n\tcase encoding.TextMarshaler:\n\t\ttext, err := value.MarshalText()\n\t\tif err != nil {\n\t\t\tfail(err)\n\t\t}\n\t\tin = reflect.ValueOf(string(text))\n\tcase nil:\n\t\te.nilv()\n\t\treturn\n\t}\n\tswitch in.Kind() {\n\tcase reflect.Interface:\n\t\te.marshal(tag, in.Elem())\n\tcase reflect.Map:\n\t\te.mapv(tag, in)\n\tcase reflect.Ptr:\n\t\te.marshal(tag, in.Elem())\n\tcase reflect.Struct:\n\t\te.structv(tag, in)\n\tcase reflect.Slice, reflect.Array:\n\t\te.slicev(tag, in)\n\tcase reflect.String:\n\t\te.stringv(tag, in)\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\te.intv(tag, in)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\te.uintv(tag, in)\n\tcase reflect.Float32, reflect.Float64:\n\t\te.floatv(tag, in)\n\tcase reflect.Bool:\n\t\te.boolv(tag, in)\n\tdefault:\n\t\tpanic(\"cannot marshal type: \" + in.Type().String())\n\t}\n}\n\nfunc (e *encoder) mapv(tag string, in reflect.Value) {\n\te.mappingv(tag, func() {\n\t\tkeys := keyList(in.MapKeys())\n\t\tsort.Sort(keys)\n\t\tfor _, k := range keys {\n\t\t\te.marshal(\"\", k)\n\t\t\te.marshal(\"\", in.MapIndex(k))\n\t\t}\n\t})\n}\n\nfunc (e *encoder) fieldByIndex(v reflect.Value, index []int) (field reflect.Value) {\n\tfor _, num := range index {\n\t\tfor {\n\t\t\tif v.Kind() == reflect.Ptr {\n\t\t\t\tif v.IsNil() {\n\t\t\t\t\treturn reflect.Value{}\n\t\t\t\t}\n\t\t\t\tv = v.Elem()\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tv = v.Field(num)\n\t}\n\treturn v\n}\n\nfunc (e *encoder) structv(tag string, in reflect.Value) {\n\tsinfo, err := getStructInfo(in.Type())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\te.mappingv(tag, func() {\n\t\tfor _, info := range sinfo.FieldsList {\n\t\t\tvar value reflect.Value\n\t\t\tif info.Inline == nil {\n\t\t\t\tvalue = in.Field(info.Num)\n\t\t\t} else {\n\t\t\t\tvalue = e.fieldByIndex(in, info.Inline)\n\t\t\t\tif !value.IsValid() {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tif info.OmitEmpty && isZero(value) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\te.marshal(\"\", reflect.ValueOf(info.Key))\n\t\t\te.flow = info.Flow\n\t\t\te.marshal(\"\", value)\n\t\t}\n\t\tif sinfo.InlineMap >= 0 {\n\t\t\tm := in.Field(sinfo.InlineMap)\n\t\t\tif m.Len() > 0 {\n\t\t\t\te.flow = false\n\t\t\t\tkeys := keyList(m.MapKeys())\n\t\t\t\tsort.Sort(keys)\n\t\t\t\tfor _, k := range keys {\n\t\t\t\t\tif _, found := sinfo.FieldsMap[k.String()]; found {\n\t\t\t\t\t\tpanic(fmt.Sprintf(\"cannot have key %q in inlined map: conflicts with struct field\", k.String()))\n\t\t\t\t\t}\n\t\t\t\t\te.marshal(\"\", k)\n\t\t\t\t\te.flow = false\n\t\t\t\t\te.marshal(\"\", m.MapIndex(k))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n}\n\nfunc (e *encoder) mappingv(tag string, f func()) {\n\timplicit := tag == \"\"\n\tstyle := yaml_BLOCK_MAPPING_STYLE\n\tif e.flow {\n\t\te.flow = false\n\t\tstyle = yaml_FLOW_MAPPING_STYLE\n\t}\n\tyaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)\n\te.emit()\n\tf()\n\tyaml_mapping_end_event_initialize(&e.event)\n\te.emit()\n}\n\nfunc (e *encoder) slicev(tag string, in reflect.Value) {\n\timplicit := tag == \"\"\n\tstyle := yaml_BLOCK_SEQUENCE_STYLE\n\tif e.flow {\n\t\te.flow = false\n\t\tstyle = yaml_FLOW_SEQUENCE_STYLE\n\t}\n\te.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style))\n\te.emit()\n\tn := in.Len()\n\tfor i := 0; i < n; i++ {\n\t\te.marshal(\"\", in.Index(i))\n\t}\n\te.must(yaml_sequence_end_event_initialize(&e.event))\n\te.emit()\n}\n\n// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1.\n//\n// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported\n// in YAML 1.2 and by this package, but these should be marshalled quoted for\n// the time being for compatibility with other parsers.\nfunc isBase60Float(s string) (result bool) {\n\t// Fast path.\n\tif s == \"\" {\n\t\treturn false\n\t}\n\tc := s[0]\n\tif !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 {\n\t\treturn false\n\t}\n\t// Do the full match.\n\treturn base60float.MatchString(s)\n}\n\n// From http://yaml.org/type/float.html, except the regular expression there\n// is bogus. In practice parsers do not enforce the \"\\.[0-9_]*\" suffix.\nvar base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\\.[0-9_]*)?$`)\n\n// isOldBool returns whether s is bool notation as defined in YAML 1.1.\n//\n// We continue to force strings that YAML 1.1 would interpret as booleans to be\n// rendered as quotes strings so that the marshalled output valid for YAML 1.1\n// parsing.\nfunc isOldBool(s string) (result bool) {\n\tswitch s {\n\tcase \"y\", \"Y\", \"yes\", \"Yes\", \"YES\", \"on\", \"On\", \"ON\",\n\t\t\"n\", \"N\", \"no\", \"No\", \"NO\", \"off\", \"Off\", \"OFF\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc (e *encoder) stringv(tag string, in reflect.Value) {\n\tvar style yaml_scalar_style_t\n\ts := in.String()\n\tcanUsePlain := true\n\tswitch {\n\tcase !utf8.ValidString(s):\n\t\tif tag == binaryTag {\n\t\t\tfailf(\"explicitly tagged !!binary data must be base64-encoded\")\n\t\t}\n\t\tif tag != \"\" {\n\t\t\tfailf(\"cannot marshal invalid UTF-8 data as %s\", shortTag(tag))\n\t\t}\n\t\t// It can't be encoded directly as YAML so use a binary tag\n\t\t// and encode it as base64.\n\t\ttag = binaryTag\n\t\ts = encodeBase64(s)\n\tcase tag == \"\":\n\t\t// Check to see if it would resolve to a specific\n\t\t// tag when encoded unquoted. If it doesn't,\n\t\t// there's no need to quote it.\n\t\trtag, _ := resolve(\"\", s)\n\t\tcanUsePlain = rtag == strTag && !(isBase60Float(s) || isOldBool(s))\n\t}\n\t// Note: it's possible for user code to emit invalid YAML\n\t// if they explicitly specify a tag and a string containing\n\t// text that's incompatible with that tag.\n\tswitch {\n\tcase strings.Contains(s, \"\\n\"):\n\t\tif e.flow {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t} else {\n\t\t\tstyle = yaml_LITERAL_SCALAR_STYLE\n\t\t}\n\tcase canUsePlain:\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\tdefault:\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\te.emitScalar(s, \"\", tag, style, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) boolv(tag string, in reflect.Value) {\n\tvar s string\n\tif in.Bool() {\n\t\ts = \"true\"\n\t} else {\n\t\ts = \"false\"\n\t}\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) intv(tag string, in reflect.Value) {\n\ts := strconv.FormatInt(in.Int(), 10)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) uintv(tag string, in reflect.Value) {\n\ts := strconv.FormatUint(in.Uint(), 10)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) timev(tag string, in reflect.Value) {\n\tt := in.Interface().(time.Time)\n\ts := t.Format(time.RFC3339Nano)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) floatv(tag string, in reflect.Value) {\n\t// Issue #352: When formatting, use the precision of the underlying value\n\tprecision := 64\n\tif in.Kind() == reflect.Float32 {\n\t\tprecision = 32\n\t}\n\n\ts := strconv.FormatFloat(in.Float(), 'g', -1, precision)\n\tswitch s {\n\tcase \"+Inf\":\n\t\ts = \".inf\"\n\tcase \"-Inf\":\n\t\ts = \"-.inf\"\n\tcase \"NaN\":\n\t\ts = \".nan\"\n\t}\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) nilv() {\n\te.emitScalar(\"null\", \"\", \"\", yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t, head, line, foot, tail []byte) {\n\t// TODO Kill this function. Replace all initialize calls by their underlining Go literals.\n\timplicit := tag == \"\"\n\tif !implicit {\n\t\ttag = longTag(tag)\n\t}\n\te.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style))\n\te.event.head_comment = head\n\te.event.line_comment = line\n\te.event.foot_comment = foot\n\te.event.tail_comment = tail\n\te.emit()\n}\n\nfunc (e *encoder) nodev(in reflect.Value) {\n\te.node(in.Interface().(*Node), \"\")\n}\n\nfunc (e *encoder) node(node *Node, tail string) {\n\t// Zero nodes behave as nil.\n\tif node.Kind == 0 && node.IsZero() {\n\t\te.nilv()\n\t\treturn\n\t}\n\n\t// If the tag was not explicitly requested, and dropping it won't change the\n\t// implicit tag of the value, don't include it in the presentation.\n\tvar tag = node.Tag\n\tvar stag = shortTag(tag)\n\tvar forceQuoting bool\n\tif tag != \"\" && node.Style&TaggedStyle == 0 {\n\t\tif node.Kind == ScalarNode {\n\t\t\tif stag == strTag && node.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0 {\n\t\t\t\ttag = \"\"\n\t\t\t} else {\n\t\t\t\trtag, _ := resolve(\"\", node.Value)\n\t\t\t\tif rtag == stag {\n\t\t\t\t\ttag = \"\"\n\t\t\t\t} else if stag == strTag {\n\t\t\t\t\ttag = \"\"\n\t\t\t\t\tforceQuoting = true\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar rtag string\n\t\t\tswitch node.Kind {\n\t\t\tcase MappingNode:\n\t\t\t\trtag = mapTag\n\t\t\tcase SequenceNode:\n\t\t\t\trtag = seqTag\n\t\t\t}\n\t\t\tif rtag == stag {\n\t\t\t\ttag = \"\"\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch node.Kind {\n\tcase DocumentNode:\n\t\tyaml_document_start_event_initialize(&e.event, nil, nil, true)\n\t\te.event.head_comment = []byte(node.HeadComment)\n\t\te.emit()\n\t\tfor _, node := range node.Content {\n\t\t\te.node(node, \"\")\n\t\t}\n\t\tyaml_document_end_event_initialize(&e.event, true)\n\t\te.event.foot_comment = []byte(node.FootComment)\n\t\te.emit()\n\n\tcase SequenceNode:\n\t\tstyle := yaml_BLOCK_SEQUENCE_STYLE\n\t\tif node.Style&FlowStyle != 0 {\n\t\t\tstyle = yaml_FLOW_SEQUENCE_STYLE\n\t\t}\n\t\te.must(yaml_sequence_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == \"\", style))\n\t\te.event.head_comment = []byte(node.HeadComment)\n\t\te.emit()\n\t\tfor _, node := range node.Content {\n\t\t\te.node(node, \"\")\n\t\t}\n\t\te.must(yaml_sequence_end_event_initialize(&e.event))\n\t\te.event.line_comment = []byte(node.LineComment)\n\t\te.event.foot_comment = []byte(node.FootComment)\n\t\te.emit()\n\n\tcase MappingNode:\n\t\tstyle := yaml_BLOCK_MAPPING_STYLE\n\t\tif node.Style&FlowStyle != 0 {\n\t\t\tstyle = yaml_FLOW_MAPPING_STYLE\n\t\t}\n\t\tyaml_mapping_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == \"\", style)\n\t\te.event.tail_comment = []byte(tail)\n\t\te.event.head_comment = []byte(node.HeadComment)\n\t\te.emit()\n\n\t\t// The tail logic below moves the foot comment of prior keys to the following key,\n\t\t// since the value for each key may be a nested structure and the foot needs to be\n\t\t// processed only the entirety of the value is streamed. The last tail is processed\n\t\t// with the mapping end event.\n\t\tvar tail string\n\t\tfor i := 0; i+1 < len(node.Content); i += 2 {\n\t\t\tk := node.Content[i]\n\t\t\tfoot := k.FootComment\n\t\t\tif foot != \"\" {\n\t\t\t\tkopy := *k\n\t\t\t\tkopy.FootComment = \"\"\n\t\t\t\tk = &kopy\n\t\t\t}\n\t\t\te.node(k, tail)\n\t\t\ttail = foot\n\n\t\t\tv := node.Content[i+1]\n\t\t\te.node(v, \"\")\n\t\t}\n\n\t\tyaml_mapping_end_event_initialize(&e.event)\n\t\te.event.tail_comment = []byte(tail)\n\t\te.event.line_comment = []byte(node.LineComment)\n\t\te.event.foot_comment = []byte(node.FootComment)\n\t\te.emit()\n\n\tcase AliasNode:\n\t\tyaml_alias_event_initialize(&e.event, []byte(node.Value))\n\t\te.event.head_comment = []byte(node.HeadComment)\n\t\te.event.line_comment = []byte(node.LineComment)\n\t\te.event.foot_comment = []byte(node.FootComment)\n\t\te.emit()\n\n\tcase ScalarNode:\n\t\tvalue := node.Value\n\t\tif !utf8.ValidString(value) {\n\t\t\tif stag == binaryTag {\n\t\t\t\tfailf(\"explicitly tagged !!binary data must be base64-encoded\")\n\t\t\t}\n\t\t\tif stag != \"\" {\n\t\t\t\tfailf(\"cannot marshal invalid UTF-8 data as %s\", stag)\n\t\t\t}\n\t\t\t// It can't be encoded directly as YAML so use a binary tag\n\t\t\t// and encode it as base64.\n\t\t\ttag = binaryTag\n\t\t\tvalue = encodeBase64(value)\n\t\t}\n\n\t\tstyle := yaml_PLAIN_SCALAR_STYLE\n\t\tswitch {\n\t\tcase node.Style&DoubleQuotedStyle != 0:\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\tcase node.Style&SingleQuotedStyle != 0:\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\tcase node.Style&LiteralStyle != 0:\n\t\t\tstyle = yaml_LITERAL_SCALAR_STYLE\n\t\tcase node.Style&FoldedStyle != 0:\n\t\t\tstyle = yaml_FOLDED_SCALAR_STYLE\n\t\tcase strings.Contains(value, \"\\n\"):\n\t\t\tstyle = yaml_LITERAL_SCALAR_STYLE\n\t\tcase forceQuoting:\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\n\t\te.emitScalar(value, node.Anchor, tag, style, []byte(node.HeadComment), []byte(node.LineComment), []byte(node.FootComment), []byte(tail))\n\tdefault:\n\t\tfailf(\"cannot encode node with unknown kind %d\", node.Kind)\n\t}\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/parserc.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n// of the Software, and to permit persons to whom the Software is furnished to do\n// so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\npackage yaml\n\nimport (\n\t\"bytes\"\n)\n\n// The parser implements the following grammar:\n//\n// stream               ::= STREAM-START implicit_document? explicit_document* STREAM-END\n// implicit_document    ::= block_node DOCUMENT-END*\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n// block_node_or_indentless_sequence    ::=\n//                          ALIAS\n//                          | properties (block_content | indentless_block_sequence)?\n//                          | block_content\n//                          | indentless_block_sequence\n// block_node           ::= ALIAS\n//                          | properties block_content?\n//                          | block_content\n// flow_node            ::= ALIAS\n//                          | properties flow_content?\n//                          | flow_content\n// properties           ::= TAG ANCHOR? | ANCHOR TAG?\n// block_content        ::= block_collection | flow_collection | SCALAR\n// flow_content         ::= flow_collection | SCALAR\n// block_collection     ::= block_sequence | block_mapping\n// flow_collection      ::= flow_sequence | flow_mapping\n// block_sequence       ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END\n// indentless_sequence  ::= (BLOCK-ENTRY block_node?)+\n// block_mapping        ::= BLOCK-MAPPING_START\n//                          ((KEY block_node_or_indentless_sequence?)?\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//                          BLOCK-END\n// flow_sequence        ::= FLOW-SEQUENCE-START\n//                          (flow_sequence_entry FLOW-ENTRY)*\n//                          flow_sequence_entry?\n//                          FLOW-SEQUENCE-END\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n// flow_mapping         ::= FLOW-MAPPING-START\n//                          (flow_mapping_entry FLOW-ENTRY)*\n//                          flow_mapping_entry?\n//                          FLOW-MAPPING-END\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n\n// Peek the next token in the token queue.\nfunc peek_token(parser *yaml_parser_t) *yaml_token_t {\n\tif parser.token_available || yaml_parser_fetch_more_tokens(parser) {\n\t\ttoken := &parser.tokens[parser.tokens_head]\n\t\tyaml_parser_unfold_comments(parser, token)\n\t\treturn token\n\t}\n\treturn nil\n}\n\n// yaml_parser_unfold_comments walks through the comments queue and joins all\n// comments behind the position of the provided token into the respective\n// top-level comment slices in the parser.\nfunc yaml_parser_unfold_comments(parser *yaml_parser_t, token *yaml_token_t) {\n\tfor parser.comments_head < len(parser.comments) && token.start_mark.index >= parser.comments[parser.comments_head].token_mark.index {\n\t\tcomment := &parser.comments[parser.comments_head]\n\t\tif len(comment.head) > 0 {\n\t\t\tif token.typ == yaml_BLOCK_END_TOKEN {\n\t\t\t\t// No heads on ends, so keep comment.head for a follow up token.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif len(parser.head_comment) > 0 {\n\t\t\t\tparser.head_comment = append(parser.head_comment, '\\n')\n\t\t\t}\n\t\t\tparser.head_comment = append(parser.head_comment, comment.head...)\n\t\t}\n\t\tif len(comment.foot) > 0 {\n\t\t\tif len(parser.foot_comment) > 0 {\n\t\t\t\tparser.foot_comment = append(parser.foot_comment, '\\n')\n\t\t\t}\n\t\t\tparser.foot_comment = append(parser.foot_comment, comment.foot...)\n\t\t}\n\t\tif len(comment.line) > 0 {\n\t\t\tif len(parser.line_comment) > 0 {\n\t\t\t\tparser.line_comment = append(parser.line_comment, '\\n')\n\t\t\t}\n\t\t\tparser.line_comment = append(parser.line_comment, comment.line...)\n\t\t}\n\t\t*comment = yaml_comment_t{}\n\t\tparser.comments_head++\n\t}\n}\n\n// Remove the next token from the queue (must be called after peek_token).\nfunc skip_token(parser *yaml_parser_t) {\n\tparser.token_available = false\n\tparser.tokens_parsed++\n\tparser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN\n\tparser.tokens_head++\n}\n\n// Get the next event.\nfunc yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool {\n\t// Erase the event object.\n\t*event = yaml_event_t{}\n\n\t// No events after the end of the stream or error.\n\tif parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE {\n\t\treturn true\n\t}\n\n\t// Generate the next event.\n\treturn yaml_parser_state_machine(parser, event)\n}\n\n// Set parser error.\nfunc yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool {\n\tparser.error = yaml_PARSER_ERROR\n\tparser.problem = problem\n\tparser.problem_mark = problem_mark\n\treturn false\n}\n\nfunc yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool {\n\tparser.error = yaml_PARSER_ERROR\n\tparser.context = context\n\tparser.context_mark = context_mark\n\tparser.problem = problem\n\tparser.problem_mark = problem_mark\n\treturn false\n}\n\n// State dispatcher.\nfunc yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool {\n\t//trace(\"yaml_parser_state_machine\", \"state:\", parser.state.String())\n\n\tswitch parser.state {\n\tcase yaml_PARSE_STREAM_START_STATE:\n\t\treturn yaml_parser_parse_stream_start(parser, event)\n\n\tcase yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:\n\t\treturn yaml_parser_parse_document_start(parser, event, true)\n\n\tcase yaml_PARSE_DOCUMENT_START_STATE:\n\t\treturn yaml_parser_parse_document_start(parser, event, false)\n\n\tcase yaml_PARSE_DOCUMENT_CONTENT_STATE:\n\t\treturn yaml_parser_parse_document_content(parser, event)\n\n\tcase yaml_PARSE_DOCUMENT_END_STATE:\n\t\treturn yaml_parser_parse_document_end(parser, event)\n\n\tcase yaml_PARSE_BLOCK_NODE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\n\tcase yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\n\tcase yaml_PARSE_FLOW_NODE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\n\tcase yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn yaml_parser_parse_block_sequence_entry(parser, event, true)\n\n\tcase yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_block_sequence_entry(parser, event, false)\n\n\tcase yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_indentless_sequence_entry(parser, event)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_parser_parse_block_mapping_key(parser, event, true)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_block_mapping_key(parser, event, false)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_block_mapping_value(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry(parser, event, true)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event)\n\n\tcase yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_key(parser, event, true)\n\n\tcase yaml_PARSE_FLOW_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_key(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_value(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_value(parser, event, true)\n\n\tdefault:\n\t\tpanic(\"invalid parser state\")\n\t}\n}\n\n// Parse the production:\n// stream   ::= STREAM-START implicit_document? explicit_document* STREAM-END\n//              ************\nfunc yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_STREAM_START_TOKEN {\n\t\treturn yaml_parser_set_parser_error(parser, \"did not find expected <stream-start>\", token.start_mark)\n\t}\n\tparser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_STREAM_START_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t\tencoding:   token.encoding,\n\t}\n\tskip_token(parser)\n\treturn true\n}\n\n// Parse the productions:\n// implicit_document    ::= block_node DOCUMENT-END*\n//                          *\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//                          *************************\nfunc yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool {\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\t// Parse extra document end indicators.\n\tif !implicit {\n\t\tfor token.typ == yaml_DOCUMENT_END_TOKEN {\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\tif implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN &&\n\t\ttoken.typ != yaml_TAG_DIRECTIVE_TOKEN &&\n\t\ttoken.typ != yaml_DOCUMENT_START_TOKEN &&\n\t\ttoken.typ != yaml_STREAM_END_TOKEN {\n\t\t// Parse an implicit document.\n\t\tif !yaml_parser_process_directives(parser, nil, nil) {\n\t\t\treturn false\n\t\t}\n\t\tparser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)\n\t\tparser.state = yaml_PARSE_BLOCK_NODE_STATE\n\n\t\tvar head_comment []byte\n\t\tif len(parser.head_comment) > 0 {\n\t\t\t// [Go] Scan the header comment backwards, and if an empty line is found, break\n\t\t\t//      the header so the part before the last empty line goes into the\n\t\t\t//      document header, while the bottom of it goes into a follow up event.\n\t\t\tfor i := len(parser.head_comment) - 1; i > 0; i-- {\n\t\t\t\tif parser.head_comment[i] == '\\n' {\n\t\t\t\t\tif i == len(parser.head_comment)-1 {\n\t\t\t\t\t\thead_comment = parser.head_comment[:i]\n\t\t\t\t\t\tparser.head_comment = parser.head_comment[i+1:]\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else if parser.head_comment[i-1] == '\\n' {\n\t\t\t\t\t\thead_comment = parser.head_comment[:i-1]\n\t\t\t\t\t\tparser.head_comment = parser.head_comment[i+1:]\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_DOCUMENT_START_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\n\t\t\thead_comment: head_comment,\n\t\t}\n\n\t} else if token.typ != yaml_STREAM_END_TOKEN {\n\t\t// Parse an explicit document.\n\t\tvar version_directive *yaml_version_directive_t\n\t\tvar tag_directives []yaml_tag_directive_t\n\t\tstart_mark := token.start_mark\n\t\tif !yaml_parser_process_directives(parser, &version_directive, &tag_directives) {\n\t\t\treturn false\n\t\t}\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_DOCUMENT_START_TOKEN {\n\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\"did not find expected <document start>\", token.start_mark)\n\t\t\treturn false\n\t\t}\n\t\tparser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)\n\t\tparser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE\n\t\tend_mark := token.end_mark\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:               yaml_DOCUMENT_START_EVENT,\n\t\t\tstart_mark:        start_mark,\n\t\t\tend_mark:          end_mark,\n\t\t\tversion_directive: version_directive,\n\t\t\ttag_directives:    tag_directives,\n\t\t\timplicit:          false,\n\t\t}\n\t\tskip_token(parser)\n\n\t} else {\n\t\t// Parse the stream end.\n\t\tparser.state = yaml_PARSE_END_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_STREAM_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\t\tskip_token(parser)\n\t}\n\n\treturn true\n}\n\n// Parse the productions:\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//                                                    ***********\n//\nfunc yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_VERSION_DIRECTIVE_TOKEN ||\n\t\ttoken.typ == yaml_TAG_DIRECTIVE_TOKEN ||\n\t\ttoken.typ == yaml_DOCUMENT_START_TOKEN ||\n\t\ttoken.typ == yaml_DOCUMENT_END_TOKEN ||\n\t\ttoken.typ == yaml_STREAM_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\treturn yaml_parser_process_empty_scalar(parser, event,\n\t\t\ttoken.start_mark)\n\t}\n\treturn yaml_parser_parse_node(parser, event, true, false)\n}\n\n// Parse the productions:\n// implicit_document    ::= block_node DOCUMENT-END*\n//                                     *************\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//\nfunc yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tstart_mark := token.start_mark\n\tend_mark := token.start_mark\n\n\timplicit := true\n\tif token.typ == yaml_DOCUMENT_END_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\timplicit = false\n\t}\n\n\tparser.tag_directives = parser.tag_directives[:0]\n\n\tparser.state = yaml_PARSE_DOCUMENT_START_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_DOCUMENT_END_EVENT,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\timplicit:   implicit,\n\t}\n\tyaml_parser_set_event_comments(parser, event)\n\tif len(event.head_comment) > 0 && len(event.foot_comment) == 0 {\n\t\tevent.foot_comment = event.head_comment\n\t\tevent.head_comment = nil\n\t}\n\treturn true\n}\n\nfunc yaml_parser_set_event_comments(parser *yaml_parser_t, event *yaml_event_t) {\n\tevent.head_comment = parser.head_comment\n\tevent.line_comment = parser.line_comment\n\tevent.foot_comment = parser.foot_comment\n\tparser.head_comment = nil\n\tparser.line_comment = nil\n\tparser.foot_comment = nil\n\tparser.tail_comment = nil\n\tparser.stem_comment = nil\n}\n\n// Parse the productions:\n// block_node_or_indentless_sequence    ::=\n//                          ALIAS\n//                          *****\n//                          | properties (block_content | indentless_block_sequence)?\n//                            **********  *\n//                          | block_content | indentless_block_sequence\n//                            *\n// block_node           ::= ALIAS\n//                          *****\n//                          | properties block_content?\n//                            ********** *\n//                          | block_content\n//                            *\n// flow_node            ::= ALIAS\n//                          *****\n//                          | properties flow_content?\n//                            ********** *\n//                          | flow_content\n//                            *\n// properties           ::= TAG ANCHOR? | ANCHOR TAG?\n//                          *************************\n// block_content        ::= block_collection | flow_collection | SCALAR\n//                                                               ******\n// flow_content         ::= flow_collection | SCALAR\n//                                            ******\nfunc yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool {\n\t//defer trace(\"yaml_parser_parse_node\", \"block:\", block, \"indentless_sequence:\", indentless_sequence)()\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_ALIAS_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_ALIAS_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t\tanchor:     token.value,\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tstart_mark := token.start_mark\n\tend_mark := token.start_mark\n\n\tvar tag_token bool\n\tvar tag_handle, tag_suffix, anchor []byte\n\tvar tag_mark yaml_mark_t\n\tif token.typ == yaml_ANCHOR_TOKEN {\n\t\tanchor = token.value\n\t\tstart_mark = token.start_mark\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ == yaml_TAG_TOKEN {\n\t\t\ttag_token = true\n\t\t\ttag_handle = token.value\n\t\t\ttag_suffix = token.suffix\n\t\t\ttag_mark = token.start_mark\n\t\t\tend_mark = token.end_mark\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t} else if token.typ == yaml_TAG_TOKEN {\n\t\ttag_token = true\n\t\ttag_handle = token.value\n\t\ttag_suffix = token.suffix\n\t\tstart_mark = token.start_mark\n\t\ttag_mark = token.start_mark\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ == yaml_ANCHOR_TOKEN {\n\t\t\tanchor = token.value\n\t\t\tend_mark = token.end_mark\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\tvar tag []byte\n\tif tag_token {\n\t\tif len(tag_handle) == 0 {\n\t\t\ttag = tag_suffix\n\t\t\ttag_suffix = nil\n\t\t} else {\n\t\t\tfor i := range parser.tag_directives {\n\t\t\t\tif bytes.Equal(parser.tag_directives[i].handle, tag_handle) {\n\t\t\t\t\ttag = append([]byte(nil), parser.tag_directives[i].prefix...)\n\t\t\t\t\ttag = append(tag, tag_suffix...)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif len(tag) == 0 {\n\t\t\t\tyaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a node\", start_mark,\n\t\t\t\t\t\"found undefined tag handle\", tag_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\timplicit := len(tag) == 0\n\tif indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif token.typ == yaml_SCALAR_TOKEN {\n\t\tvar plain_implicit, quoted_implicit bool\n\t\tend_mark = token.end_mark\n\t\tif (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') {\n\t\t\tplain_implicit = true\n\t\t} else if len(tag) == 0 {\n\t\t\tquoted_implicit = true\n\t\t}\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:             yaml_SCALAR_EVENT,\n\t\t\tstart_mark:      start_mark,\n\t\t\tend_mark:        end_mark,\n\t\t\tanchor:          anchor,\n\t\t\ttag:             tag,\n\t\t\tvalue:           token.value,\n\t\t\timplicit:        plain_implicit,\n\t\t\tquoted_implicit: quoted_implicit,\n\t\t\tstyle:           yaml_style_t(token.style),\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\tif token.typ == yaml_FLOW_SEQUENCE_START_TOKEN {\n\t\t// [Go] Some of the events below can be merged as they differ only on style.\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_FLOW_SEQUENCE_STYLE),\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\treturn true\n\t}\n\tif token.typ == yaml_FLOW_MAPPING_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\treturn true\n\t}\n\tif block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),\n\t\t}\n\t\tif parser.stem_comment != nil {\n\t\t\tevent.head_comment = parser.stem_comment\n\t\t\tparser.stem_comment = nil\n\t\t}\n\t\treturn true\n\t}\n\tif block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_MAPPING_STYLE),\n\t\t}\n\t\tif parser.stem_comment != nil {\n\t\t\tevent.head_comment = parser.stem_comment\n\t\t\tparser.stem_comment = nil\n\t\t}\n\t\treturn true\n\t}\n\tif len(anchor) > 0 || len(tag) > 0 {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:             yaml_SCALAR_EVENT,\n\t\t\tstart_mark:      start_mark,\n\t\t\tend_mark:        end_mark,\n\t\t\tanchor:          anchor,\n\t\t\ttag:             tag,\n\t\t\timplicit:        implicit,\n\t\t\tquoted_implicit: false,\n\t\t\tstyle:           yaml_style_t(yaml_PLAIN_SCALAR_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\n\tcontext := \"while parsing a flow node\"\n\tif block {\n\t\tcontext = \"while parsing a block node\"\n\t}\n\tyaml_parser_set_parser_error_context(parser, context, start_mark,\n\t\t\"did not find expected node content\", token.start_mark)\n\treturn false\n}\n\n// Parse the productions:\n// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END\n//                    ********************  *********** *             *********\n//\nfunc yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tmark := token.end_mark\n\t\tprior_head_len := len(parser.head_comment)\n\t\tskip_token(parser)\n\t\tyaml_parser_split_stem_comment(parser, prior_head_len)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\t\t} else {\n\t\t\tparser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE\n\t\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t\t}\n\t}\n\tif token.typ == yaml_BLOCK_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tcontext_mark := parser.marks[len(parser.marks)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\"while parsing a block collection\", context_mark,\n\t\t\"did not find expected '-' indicator\", token.start_mark)\n}\n\n// Parse the productions:\n// indentless_sequence  ::= (BLOCK-ENTRY block_node?)+\n//                           *********** *\nfunc yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tmark := token.end_mark\n\t\tprior_head_len := len(parser.head_comment)\n\t\tskip_token(parser)\n\t\tyaml_parser_split_stem_comment(parser, prior_head_len)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_BLOCK_ENTRY_TOKEN &&\n\t\t\ttoken.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\t\t}\n\t\tparser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t}\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.start_mark, // [Go] Shouldn't this be token.end_mark?\n\t}\n\treturn true\n}\n\n// Split stem comment from head comment.\n//\n// When a sequence or map is found under a sequence entry, the former head comment\n// is assigned to the underlying sequence or map as a whole, not the individual\n// sequence or map entry as would be expected otherwise. To handle this case the\n// previous head comment is moved aside as the stem comment.\nfunc yaml_parser_split_stem_comment(parser *yaml_parser_t, stem_len int) {\n\tif stem_len == 0 {\n\t\treturn\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil || token.typ != yaml_BLOCK_SEQUENCE_START_TOKEN && token.typ != yaml_BLOCK_MAPPING_START_TOKEN {\n\t\treturn\n\t}\n\n\tparser.stem_comment = parser.head_comment[:stem_len]\n\tif len(parser.head_comment) == stem_len {\n\t\tparser.head_comment = nil\n\t} else {\n\t\t// Copy suffix to prevent very strange bugs if someone ever appends\n\t\t// further bytes to the prefix in the stem_comment slice above.\n\t\tparser.head_comment = append([]byte(nil), parser.head_comment[stem_len+1:]...)\n\t}\n}\n\n// Parse the productions:\n// block_mapping        ::= BLOCK-MAPPING_START\n//                          *******************\n//                          ((KEY block_node_or_indentless_sequence?)?\n//                            *** *\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//\n//                          BLOCK-END\n//                          *********\n//\nfunc yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\t// [Go] A tail comment was left from the prior mapping value processed. Emit an event\n\t//      as it needs to be processed with that value and not the following key.\n\tif len(parser.tail_comment) > 0 {\n\t\t*event = yaml_event_t{\n\t\t\ttyp:          yaml_TAIL_COMMENT_EVENT,\n\t\t\tstart_mark:   token.start_mark,\n\t\t\tend_mark:     token.end_mark,\n\t\t\tfoot_comment: parser.tail_comment,\n\t\t}\n\t\tparser.tail_comment = nil\n\t\treturn true\n\t}\n\n\tif token.typ == yaml_KEY_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\t\t} else {\n\t\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE\n\t\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t\t}\n\t} else if token.typ == yaml_BLOCK_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tcontext_mark := parser.marks[len(parser.marks)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\"while parsing a block mapping\", context_mark,\n\t\t\"did not find expected key\", token.start_mark)\n}\n\n// Parse the productions:\n// block_mapping        ::= BLOCK-MAPPING_START\n//\n//                          ((KEY block_node_or_indentless_sequence?)?\n//\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//                           ***** *\n//                          BLOCK-END\n//\n//\nfunc yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\t\t}\n\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t}\n\tparser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Parse the productions:\n// flow_sequence        ::= FLOW-SEQUENCE-START\n//                          *******************\n//                          (flow_sequence_entry FLOW-ENTRY)*\n//                           *                   **********\n//                          flow_sequence_entry?\n//                          *\n//                          FLOW-SEQUENCE-END\n//                          *****************\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                          *\n//\nfunc yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\tif !first {\n\t\t\tif token.typ == yaml_FLOW_ENTRY_TOKEN {\n\t\t\t\tskip_token(parser)\n\t\t\t\ttoken = peek_token(parser)\n\t\t\t\tif token == nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontext_mark := parser.marks[len(parser.marks)-1]\n\t\t\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a flow sequence\", context_mark,\n\t\t\t\t\t\"did not find expected ',' or ']'\", token.start_mark)\n\t\t\t}\n\t\t}\n\n\t\tif token.typ == yaml_KEY_TOKEN {\n\t\t\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE\n\t\t\t*event = yaml_event_t{\n\t\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\t\tstart_mark: token.start_mark,\n\t\t\t\tend_mark:   token.end_mark,\n\t\t\t\timplicit:   true,\n\t\t\t\tstyle:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),\n\t\t\t}\n\t\t\tskip_token(parser)\n\t\t\treturn true\n\t\t} else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t}\n\tyaml_parser_set_event_comments(parser, event)\n\n\tskip_token(parser)\n\treturn true\n}\n\n//\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                      *** *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_VALUE_TOKEN &&\n\t\ttoken.typ != yaml_FLOW_ENTRY_TOKEN &&\n\t\ttoken.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE)\n\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t}\n\tmark := token.end_mark\n\tskip_token(parser)\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n}\n\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                                      ***** *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tskip_token(parser)\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                                                      *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.start_mark, // [Go] Shouldn't this be end_mark?\n\t}\n\treturn true\n}\n\n// Parse the productions:\n// flow_mapping         ::= FLOW-MAPPING-START\n//                          ******************\n//                          (flow_mapping_entry FLOW-ENTRY)*\n//                           *                  **********\n//                          flow_mapping_entry?\n//                          ******************\n//                          FLOW-MAPPING-END\n//                          ****************\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                          *           *** *\n//\nfunc yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\tif !first {\n\t\t\tif token.typ == yaml_FLOW_ENTRY_TOKEN {\n\t\t\t\tskip_token(parser)\n\t\t\t\ttoken = peek_token(parser)\n\t\t\t\tif token == nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontext_mark := parser.marks[len(parser.marks)-1]\n\t\t\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a flow mapping\", context_mark,\n\t\t\t\t\t\"did not find expected ',' or '}'\", token.start_mark)\n\t\t\t}\n\t\t}\n\n\t\tif token.typ == yaml_KEY_TOKEN {\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif token.typ != yaml_VALUE_TOKEN &&\n\t\t\t\ttoken.typ != yaml_FLOW_ENTRY_TOKEN &&\n\t\t\t\ttoken.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE)\n\t\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t\t} else {\n\t\t\t\tparser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE\n\t\t\t\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n\t\t\t}\n\t\t} else if token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t}\n\tyaml_parser_set_event_comments(parser, event)\n\tskip_token(parser)\n\treturn true\n}\n\n// Parse the productions:\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                   *                  ***** *\n//\nfunc yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif empty {\n\t\tparser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\tparser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Generate an empty scalar event.\nfunc yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SCALAR_EVENT,\n\t\tstart_mark: mark,\n\t\tend_mark:   mark,\n\t\tvalue:      nil, // Empty\n\t\timplicit:   true,\n\t\tstyle:      yaml_style_t(yaml_PLAIN_SCALAR_STYLE),\n\t}\n\treturn true\n}\n\nvar default_tag_directives = []yaml_tag_directive_t{\n\t{[]byte(\"!\"), []byte(\"!\")},\n\t{[]byte(\"!!\"), []byte(\"tag:yaml.org,2002:\")},\n}\n\n// Parse directives.\nfunc yaml_parser_process_directives(parser *yaml_parser_t,\n\tversion_directive_ref **yaml_version_directive_t,\n\ttag_directives_ref *[]yaml_tag_directive_t) bool {\n\n\tvar version_directive *yaml_version_directive_t\n\tvar tag_directives []yaml_tag_directive_t\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tfor token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN {\n\t\tif token.typ == yaml_VERSION_DIRECTIVE_TOKEN {\n\t\t\tif version_directive != nil {\n\t\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\t\"found duplicate %YAML directive\", token.start_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif token.major != 1 || token.minor != 1 {\n\t\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\t\"found incompatible YAML document\", token.start_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tversion_directive = &yaml_version_directive_t{\n\t\t\t\tmajor: token.major,\n\t\t\t\tminor: token.minor,\n\t\t\t}\n\t\t} else if token.typ == yaml_TAG_DIRECTIVE_TOKEN {\n\t\t\tvalue := yaml_tag_directive_t{\n\t\t\t\thandle: token.value,\n\t\t\t\tprefix: token.prefix,\n\t\t\t}\n\t\t\tif !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\ttag_directives = append(tag_directives, value)\n\t\t}\n\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tfor i := range default_tag_directives {\n\t\tif !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif version_directive_ref != nil {\n\t\t*version_directive_ref = version_directive\n\t}\n\tif tag_directives_ref != nil {\n\t\t*tag_directives_ref = tag_directives\n\t}\n\treturn true\n}\n\n// Append a tag directive to the directives stack.\nfunc yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool {\n\tfor i := range parser.tag_directives {\n\t\tif bytes.Equal(value.handle, parser.tag_directives[i].handle) {\n\t\t\tif allow_duplicates {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn yaml_parser_set_parser_error(parser, \"found duplicate %TAG directive\", mark)\n\t\t}\n\t}\n\n\t// [Go] I suspect the copy is unnecessary. This was likely done\n\t// because there was no way to track ownership of the data.\n\tvalue_copy := yaml_tag_directive_t{\n\t\thandle: make([]byte, len(value.handle)),\n\t\tprefix: make([]byte, len(value.prefix)),\n\t}\n\tcopy(value_copy.handle, value.handle)\n\tcopy(value_copy.prefix, value.prefix)\n\tparser.tag_directives = append(parser.tag_directives, value_copy)\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/readerc.go",
    "content": "// \n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\n// \n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n// of the Software, and to permit persons to whom the Software is furnished to do\n// so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\npackage yaml\n\nimport (\n\t\"io\"\n)\n\n// Set the reader error and return 0.\nfunc yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool {\n\tparser.error = yaml_READER_ERROR\n\tparser.problem = problem\n\tparser.problem_offset = offset\n\tparser.problem_value = value\n\treturn false\n}\n\n// Byte order marks.\nconst (\n\tbom_UTF8    = \"\\xef\\xbb\\xbf\"\n\tbom_UTF16LE = \"\\xff\\xfe\"\n\tbom_UTF16BE = \"\\xfe\\xff\"\n)\n\n// Determine the input stream encoding by checking the BOM symbol. If no BOM is\n// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure.\nfunc yaml_parser_determine_encoding(parser *yaml_parser_t) bool {\n\t// Ensure that we had enough bytes in the raw buffer.\n\tfor !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 {\n\t\tif !yaml_parser_update_raw_buffer(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Determine the encoding.\n\tbuf := parser.raw_buffer\n\tpos := parser.raw_buffer_pos\n\tavail := len(buf) - pos\n\tif avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] {\n\t\tparser.encoding = yaml_UTF16LE_ENCODING\n\t\tparser.raw_buffer_pos += 2\n\t\tparser.offset += 2\n\t} else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] {\n\t\tparser.encoding = yaml_UTF16BE_ENCODING\n\t\tparser.raw_buffer_pos += 2\n\t\tparser.offset += 2\n\t} else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] {\n\t\tparser.encoding = yaml_UTF8_ENCODING\n\t\tparser.raw_buffer_pos += 3\n\t\tparser.offset += 3\n\t} else {\n\t\tparser.encoding = yaml_UTF8_ENCODING\n\t}\n\treturn true\n}\n\n// Update the raw buffer.\nfunc yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool {\n\tsize_read := 0\n\n\t// Return if the raw buffer is full.\n\tif parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) {\n\t\treturn true\n\t}\n\n\t// Return on EOF.\n\tif parser.eof {\n\t\treturn true\n\t}\n\n\t// Move the remaining bytes in the raw buffer to the beginning.\n\tif parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) {\n\t\tcopy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:])\n\t}\n\tparser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos]\n\tparser.raw_buffer_pos = 0\n\n\t// Call the read handler to fill the buffer.\n\tsize_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)])\n\tparser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read]\n\tif err == io.EOF {\n\t\tparser.eof = true\n\t} else if err != nil {\n\t\treturn yaml_parser_set_reader_error(parser, \"input error: \"+err.Error(), parser.offset, -1)\n\t}\n\treturn true\n}\n\n// Ensure that the buffer contains at least `length` characters.\n// Return true on success, false on failure.\n//\n// The length is supposed to be significantly less that the buffer size.\nfunc yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool {\n\tif parser.read_handler == nil {\n\t\tpanic(\"read handler must be set\")\n\t}\n\n\t// [Go] This function was changed to guarantee the requested length size at EOF.\n\t// The fact we need to do this is pretty awful, but the description above implies\n\t// for that to be the case, and there are tests\n\n\t// If the EOF flag is set and the raw buffer is empty, do nothing.\n\tif parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) {\n\t\t// [Go] ACTUALLY! Read the documentation of this function above.\n\t\t// This is just broken. To return true, we need to have the\n\t\t// given length in the buffer. Not doing that means every single\n\t\t// check that calls this function to make sure the buffer has a\n\t\t// given length is Go) panicking; or C) accessing invalid memory.\n\t\t//return true\n\t}\n\n\t// Return if the buffer contains enough characters.\n\tif parser.unread >= length {\n\t\treturn true\n\t}\n\n\t// Determine the input encoding if it is not known yet.\n\tif parser.encoding == yaml_ANY_ENCODING {\n\t\tif !yaml_parser_determine_encoding(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Move the unread characters to the beginning of the buffer.\n\tbuffer_len := len(parser.buffer)\n\tif parser.buffer_pos > 0 && parser.buffer_pos < buffer_len {\n\t\tcopy(parser.buffer, parser.buffer[parser.buffer_pos:])\n\t\tbuffer_len -= parser.buffer_pos\n\t\tparser.buffer_pos = 0\n\t} else if parser.buffer_pos == buffer_len {\n\t\tbuffer_len = 0\n\t\tparser.buffer_pos = 0\n\t}\n\n\t// Open the whole buffer for writing, and cut it before returning.\n\tparser.buffer = parser.buffer[:cap(parser.buffer)]\n\n\t// Fill the buffer until it has enough characters.\n\tfirst := true\n\tfor parser.unread < length {\n\n\t\t// Fill the raw buffer if necessary.\n\t\tif !first || parser.raw_buffer_pos == len(parser.raw_buffer) {\n\t\t\tif !yaml_parser_update_raw_buffer(parser) {\n\t\t\t\tparser.buffer = parser.buffer[:buffer_len]\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tfirst = false\n\n\t\t// Decode the raw buffer.\n\tinner:\n\t\tfor parser.raw_buffer_pos != len(parser.raw_buffer) {\n\t\t\tvar value rune\n\t\t\tvar width int\n\n\t\t\traw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos\n\n\t\t\t// Decode the next character.\n\t\t\tswitch parser.encoding {\n\t\t\tcase yaml_UTF8_ENCODING:\n\t\t\t\t// Decode a UTF-8 character.  Check RFC 3629\n\t\t\t\t// (http://www.ietf.org/rfc/rfc3629.txt) for more details.\n\t\t\t\t//\n\t\t\t\t// The following table (taken from the RFC) is used for\n\t\t\t\t// decoding.\n\t\t\t\t//\n\t\t\t\t//    Char. number range |        UTF-8 octet sequence\n\t\t\t\t//      (hexadecimal)    |              (binary)\n\t\t\t\t//   --------------------+------------------------------------\n\t\t\t\t//   0000 0000-0000 007F | 0xxxxxxx\n\t\t\t\t//   0000 0080-0000 07FF | 110xxxxx 10xxxxxx\n\t\t\t\t//   0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx\n\t\t\t\t//   0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\t\t\t\t//\n\t\t\t\t// Additionally, the characters in the range 0xD800-0xDFFF\n\t\t\t\t// are prohibited as they are reserved for use with UTF-16\n\t\t\t\t// surrogate pairs.\n\n\t\t\t\t// Determine the length of the UTF-8 sequence.\n\t\t\t\toctet := parser.raw_buffer[parser.raw_buffer_pos]\n\t\t\t\tswitch {\n\t\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\t\twidth = 1\n\t\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\t\twidth = 2\n\t\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\t\twidth = 3\n\t\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\t\twidth = 4\n\t\t\t\tdefault:\n\t\t\t\t\t// The leading octet is invalid.\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid leading UTF-8 octet\",\n\t\t\t\t\t\tparser.offset, int(octet))\n\t\t\t\t}\n\n\t\t\t\t// Check if the raw buffer contains an incomplete character.\n\t\t\t\tif width > raw_unread {\n\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"incomplete UTF-8 octet sequence\",\n\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t}\n\t\t\t\t\tbreak inner\n\t\t\t\t}\n\n\t\t\t\t// Decode the leading octet.\n\t\t\t\tswitch {\n\t\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\t\tvalue = rune(octet & 0x7F)\n\t\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\t\tvalue = rune(octet & 0x1F)\n\t\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\t\tvalue = rune(octet & 0x0F)\n\t\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\t\tvalue = rune(octet & 0x07)\n\t\t\t\tdefault:\n\t\t\t\t\tvalue = 0\n\t\t\t\t}\n\n\t\t\t\t// Check and decode the trailing octets.\n\t\t\t\tfor k := 1; k < width; k++ {\n\t\t\t\t\toctet = parser.raw_buffer[parser.raw_buffer_pos+k]\n\n\t\t\t\t\t// Check if the octet is valid.\n\t\t\t\t\tif (octet & 0xC0) != 0x80 {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"invalid trailing UTF-8 octet\",\n\t\t\t\t\t\t\tparser.offset+k, int(octet))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Decode the octet.\n\t\t\t\t\tvalue = (value << 6) + rune(octet&0x3F)\n\t\t\t\t}\n\n\t\t\t\t// Check the length of the sequence against the value.\n\t\t\t\tswitch {\n\t\t\t\tcase width == 1:\n\t\t\t\tcase width == 2 && value >= 0x80:\n\t\t\t\tcase width == 3 && value >= 0x800:\n\t\t\t\tcase width == 4 && value >= 0x10000:\n\t\t\t\tdefault:\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid length of a UTF-8 sequence\",\n\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t}\n\n\t\t\t\t// Check the range of the value.\n\t\t\t\tif value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF {\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid Unicode character\",\n\t\t\t\t\t\tparser.offset, int(value))\n\t\t\t\t}\n\n\t\t\tcase yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING:\n\t\t\t\tvar low, high int\n\t\t\t\tif parser.encoding == yaml_UTF16LE_ENCODING {\n\t\t\t\t\tlow, high = 0, 1\n\t\t\t\t} else {\n\t\t\t\t\tlow, high = 1, 0\n\t\t\t\t}\n\n\t\t\t\t// The UTF-16 encoding is not as simple as one might\n\t\t\t\t// naively think.  Check RFC 2781\n\t\t\t\t// (http://www.ietf.org/rfc/rfc2781.txt).\n\t\t\t\t//\n\t\t\t\t// Normally, two subsequent bytes describe a Unicode\n\t\t\t\t// character.  However a special technique (called a\n\t\t\t\t// surrogate pair) is used for specifying character\n\t\t\t\t// values larger than 0xFFFF.\n\t\t\t\t//\n\t\t\t\t// A surrogate pair consists of two pseudo-characters:\n\t\t\t\t//      high surrogate area (0xD800-0xDBFF)\n\t\t\t\t//      low surrogate area (0xDC00-0xDFFF)\n\t\t\t\t//\n\t\t\t\t// The following formulas are used for decoding\n\t\t\t\t// and encoding characters using surrogate pairs:\n\t\t\t\t//\n\t\t\t\t//  U  = U' + 0x10000   (0x01 00 00 <= U <= 0x10 FF FF)\n\t\t\t\t//  U' = yyyyyyyyyyxxxxxxxxxx   (0 <= U' <= 0x0F FF FF)\n\t\t\t\t//  W1 = 110110yyyyyyyyyy\n\t\t\t\t//  W2 = 110111xxxxxxxxxx\n\t\t\t\t//\n\t\t\t\t// where U is the character value, W1 is the high surrogate\n\t\t\t\t// area, W2 is the low surrogate area.\n\n\t\t\t\t// Check for incomplete UTF-16 character.\n\t\t\t\tif raw_unread < 2 {\n\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"incomplete UTF-16 character\",\n\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t}\n\t\t\t\t\tbreak inner\n\t\t\t\t}\n\n\t\t\t\t// Get the character.\n\t\t\t\tvalue = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) +\n\t\t\t\t\t(rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8)\n\n\t\t\t\t// Check for unexpected low surrogate area.\n\t\t\t\tif value&0xFC00 == 0xDC00 {\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"unexpected low surrogate area\",\n\t\t\t\t\t\tparser.offset, int(value))\n\t\t\t\t}\n\n\t\t\t\t// Check for a high surrogate area.\n\t\t\t\tif value&0xFC00 == 0xD800 {\n\t\t\t\t\twidth = 4\n\n\t\t\t\t\t// Check for incomplete surrogate pair.\n\t\t\t\t\tif raw_unread < 4 {\n\t\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\t\"incomplete UTF-16 surrogate pair\",\n\t\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak inner\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get the next character.\n\t\t\t\t\tvalue2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) +\n\t\t\t\t\t\t(rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8)\n\n\t\t\t\t\t// Check for a low surrogate area.\n\t\t\t\t\tif value2&0xFC00 != 0xDC00 {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"expected low surrogate area\",\n\t\t\t\t\t\t\tparser.offset+2, int(value2))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Generate the value of the surrogate pair.\n\t\t\t\t\tvalue = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF)\n\t\t\t\t} else {\n\t\t\t\t\twidth = 2\n\t\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tpanic(\"impossible\")\n\t\t\t}\n\n\t\t\t// Check if the character is in the allowed range:\n\t\t\t//      #x9 | #xA | #xD | [#x20-#x7E]               (8 bit)\n\t\t\t//      | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD]    (16 bit)\n\t\t\t//      | [#x10000-#x10FFFF]                        (32 bit)\n\t\t\tswitch {\n\t\t\tcase value == 0x09:\n\t\t\tcase value == 0x0A:\n\t\t\tcase value == 0x0D:\n\t\t\tcase value >= 0x20 && value <= 0x7E:\n\t\t\tcase value == 0x85:\n\t\t\tcase value >= 0xA0 && value <= 0xD7FF:\n\t\t\tcase value >= 0xE000 && value <= 0xFFFD:\n\t\t\tcase value >= 0x10000 && value <= 0x10FFFF:\n\t\t\tdefault:\n\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\"control characters are not allowed\",\n\t\t\t\t\tparser.offset, int(value))\n\t\t\t}\n\n\t\t\t// Move the raw pointers.\n\t\t\tparser.raw_buffer_pos += width\n\t\t\tparser.offset += width\n\n\t\t\t// Finally put the character into the buffer.\n\t\t\tif value <= 0x7F {\n\t\t\t\t// 0000 0000-0000 007F . 0xxxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(value)\n\t\t\t\tbuffer_len += 1\n\t\t\t} else if value <= 0x7FF {\n\t\t\t\t// 0000 0080-0000 07FF . 110xxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 2\n\t\t\t} else if value <= 0xFFFF {\n\t\t\t\t// 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 3\n\t\t\t} else {\n\t\t\t\t// 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 4\n\t\t\t}\n\n\t\t\tparser.unread++\n\t\t}\n\n\t\t// On EOF, put NUL into the buffer and return.\n\t\tif parser.eof {\n\t\t\tparser.buffer[buffer_len] = 0\n\t\t\tbuffer_len++\n\t\t\tparser.unread++\n\t\t\tbreak\n\t\t}\n\t}\n\t// [Go] Read the documentation of this function above. To return true,\n\t// we need to have the given length in the buffer. Not doing that means\n\t// every single check that calls this function to make sure the buffer\n\t// has a given length is Go) panicking; or C) accessing invalid memory.\n\t// This happens here due to the EOF above breaking early.\n\tfor buffer_len < length {\n\t\tparser.buffer[buffer_len] = 0\n\t\tbuffer_len++\n\t}\n\tparser.buffer = parser.buffer[:buffer_len]\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/resolve.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage yaml\n\nimport (\n\t\"encoding/base64\"\n\t\"math\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype resolveMapItem struct {\n\tvalue interface{}\n\ttag   string\n}\n\nvar resolveTable = make([]byte, 256)\nvar resolveMap = make(map[string]resolveMapItem)\n\nfunc init() {\n\tt := resolveTable\n\tt[int('+')] = 'S' // Sign\n\tt[int('-')] = 'S'\n\tfor _, c := range \"0123456789\" {\n\t\tt[int(c)] = 'D' // Digit\n\t}\n\tfor _, c := range \"yYnNtTfFoO~\" {\n\t\tt[int(c)] = 'M' // In map\n\t}\n\tt[int('.')] = '.' // Float (potentially in map)\n\n\tvar resolveMapList = []struct {\n\t\tv   interface{}\n\t\ttag string\n\t\tl   []string\n\t}{\n\t\t{true, boolTag, []string{\"true\", \"True\", \"TRUE\"}},\n\t\t{false, boolTag, []string{\"false\", \"False\", \"FALSE\"}},\n\t\t{nil, nullTag, []string{\"\", \"~\", \"null\", \"Null\", \"NULL\"}},\n\t\t{math.NaN(), floatTag, []string{\".nan\", \".NaN\", \".NAN\"}},\n\t\t{math.Inf(+1), floatTag, []string{\".inf\", \".Inf\", \".INF\"}},\n\t\t{math.Inf(+1), floatTag, []string{\"+.inf\", \"+.Inf\", \"+.INF\"}},\n\t\t{math.Inf(-1), floatTag, []string{\"-.inf\", \"-.Inf\", \"-.INF\"}},\n\t\t{\"<<\", mergeTag, []string{\"<<\"}},\n\t}\n\n\tm := resolveMap\n\tfor _, item := range resolveMapList {\n\t\tfor _, s := range item.l {\n\t\t\tm[s] = resolveMapItem{item.v, item.tag}\n\t\t}\n\t}\n}\n\nconst (\n\tnullTag      = \"!!null\"\n\tboolTag      = \"!!bool\"\n\tstrTag       = \"!!str\"\n\tintTag       = \"!!int\"\n\tfloatTag     = \"!!float\"\n\ttimestampTag = \"!!timestamp\"\n\tseqTag       = \"!!seq\"\n\tmapTag       = \"!!map\"\n\tbinaryTag    = \"!!binary\"\n\tmergeTag     = \"!!merge\"\n)\n\nvar longTags = make(map[string]string)\nvar shortTags = make(map[string]string)\n\nfunc init() {\n\tfor _, stag := range []string{nullTag, boolTag, strTag, intTag, floatTag, timestampTag, seqTag, mapTag, binaryTag, mergeTag} {\n\t\tltag := longTag(stag)\n\t\tlongTags[stag] = ltag\n\t\tshortTags[ltag] = stag\n\t}\n}\n\nconst longTagPrefix = \"tag:yaml.org,2002:\"\n\nfunc shortTag(tag string) string {\n\tif strings.HasPrefix(tag, longTagPrefix) {\n\t\tif stag, ok := shortTags[tag]; ok {\n\t\t\treturn stag\n\t\t}\n\t\treturn \"!!\" + tag[len(longTagPrefix):]\n\t}\n\treturn tag\n}\n\nfunc longTag(tag string) string {\n\tif strings.HasPrefix(tag, \"!!\") {\n\t\tif ltag, ok := longTags[tag]; ok {\n\t\t\treturn ltag\n\t\t}\n\t\treturn longTagPrefix + tag[2:]\n\t}\n\treturn tag\n}\n\nfunc resolvableTag(tag string) bool {\n\tswitch tag {\n\tcase \"\", strTag, boolTag, intTag, floatTag, nullTag, timestampTag:\n\t\treturn true\n\t}\n\treturn false\n}\n\nvar yamlStyleFloat = regexp.MustCompile(`^[-+]?(\\.[0-9]+|[0-9]+(\\.[0-9]*)?)([eE][-+]?[0-9]+)?$`)\n\nfunc resolve(tag string, in string) (rtag string, out interface{}) {\n\ttag = shortTag(tag)\n\tif !resolvableTag(tag) {\n\t\treturn tag, in\n\t}\n\n\tdefer func() {\n\t\tswitch tag {\n\t\tcase \"\", rtag, strTag, binaryTag:\n\t\t\treturn\n\t\tcase floatTag:\n\t\t\tif rtag == intTag {\n\t\t\t\tswitch v := out.(type) {\n\t\t\t\tcase int64:\n\t\t\t\t\trtag = floatTag\n\t\t\t\t\tout = float64(v)\n\t\t\t\t\treturn\n\t\t\t\tcase int:\n\t\t\t\t\trtag = floatTag\n\t\t\t\t\tout = float64(v)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfailf(\"cannot decode %s `%s` as a %s\", shortTag(rtag), in, shortTag(tag))\n\t}()\n\n\t// Any data is accepted as a !!str or !!binary.\n\t// Otherwise, the prefix is enough of a hint about what it might be.\n\thint := byte('N')\n\tif in != \"\" {\n\t\thint = resolveTable[in[0]]\n\t}\n\tif hint != 0 && tag != strTag && tag != binaryTag {\n\t\t// Handle things we can lookup in a map.\n\t\tif item, ok := resolveMap[in]; ok {\n\t\t\treturn item.tag, item.value\n\t\t}\n\n\t\t// Base 60 floats are a bad idea, were dropped in YAML 1.2, and\n\t\t// are purposefully unsupported here. They're still quoted on\n\t\t// the way out for compatibility with other parser, though.\n\n\t\tswitch hint {\n\t\tcase 'M':\n\t\t\t// We've already checked the map above.\n\n\t\tcase '.':\n\t\t\t// Not in the map, so maybe a normal float.\n\t\t\tfloatv, err := strconv.ParseFloat(in, 64)\n\t\t\tif err == nil {\n\t\t\t\treturn floatTag, floatv\n\t\t\t}\n\n\t\tcase 'D', 'S':\n\t\t\t// Int, float, or timestamp.\n\t\t\t// Only try values as a timestamp if the value is unquoted or there's an explicit\n\t\t\t// !!timestamp tag.\n\t\t\tif tag == \"\" || tag == timestampTag {\n\t\t\t\tt, ok := parseTimestamp(in)\n\t\t\t\tif ok {\n\t\t\t\t\treturn timestampTag, t\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplain := strings.Replace(in, \"_\", \"\", -1)\n\t\t\tintv, err := strconv.ParseInt(plain, 0, 64)\n\t\t\tif err == nil {\n\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t} else {\n\t\t\t\t\treturn intTag, intv\n\t\t\t\t}\n\t\t\t}\n\t\t\tuintv, err := strconv.ParseUint(plain, 0, 64)\n\t\t\tif err == nil {\n\t\t\t\treturn intTag, uintv\n\t\t\t}\n\t\t\tif yamlStyleFloat.MatchString(plain) {\n\t\t\t\tfloatv, err := strconv.ParseFloat(plain, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn floatTag, floatv\n\t\t\t\t}\n\t\t\t}\n\t\t\tif strings.HasPrefix(plain, \"0b\") {\n\t\t\t\tintv, err := strconv.ParseInt(plain[2:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn intTag, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tuintv, err := strconv.ParseUint(plain[2:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn intTag, uintv\n\t\t\t\t}\n\t\t\t} else if strings.HasPrefix(plain, \"-0b\") {\n\t\t\t\tintv, err := strconv.ParseInt(\"-\"+plain[3:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif true || intv == int64(int(intv)) {\n\t\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn intTag, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Octals as introduced in version 1.2 of the spec.\n\t\t\t// Octals from the 1.1 spec, spelled as 0777, are still\n\t\t\t// decoded by default in v3 as well for compatibility.\n\t\t\t// May be dropped in v4 depending on how usage evolves.\n\t\t\tif strings.HasPrefix(plain, \"0o\") {\n\t\t\t\tintv, err := strconv.ParseInt(plain[2:], 8, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn intTag, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tuintv, err := strconv.ParseUint(plain[2:], 8, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn intTag, uintv\n\t\t\t\t}\n\t\t\t} else if strings.HasPrefix(plain, \"-0o\") {\n\t\t\t\tintv, err := strconv.ParseInt(\"-\"+plain[3:], 8, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif true || intv == int64(int(intv)) {\n\t\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn intTag, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(\"internal error: missing handler for resolver table: \" + string(rune(hint)) + \" (with \" + in + \")\")\n\t\t}\n\t}\n\treturn strTag, in\n}\n\n// encodeBase64 encodes s as base64 that is broken up into multiple lines\n// as appropriate for the resulting length.\nfunc encodeBase64(s string) string {\n\tconst lineLen = 70\n\tencLen := base64.StdEncoding.EncodedLen(len(s))\n\tlines := encLen/lineLen + 1\n\tbuf := make([]byte, encLen*2+lines)\n\tin := buf[0:encLen]\n\tout := buf[encLen:]\n\tbase64.StdEncoding.Encode(in, []byte(s))\n\tk := 0\n\tfor i := 0; i < len(in); i += lineLen {\n\t\tj := i + lineLen\n\t\tif j > len(in) {\n\t\t\tj = len(in)\n\t\t}\n\t\tk += copy(out[k:], in[i:j])\n\t\tif lines > 1 {\n\t\t\tout[k] = '\\n'\n\t\t\tk++\n\t\t}\n\t}\n\treturn string(out[:k])\n}\n\n// This is a subset of the formats allowed by the regular expression\n// defined at http://yaml.org/type/timestamp.html.\nvar allowedTimestampFormats = []string{\n\t\"2006-1-2T15:4:5.999999999Z07:00\", // RCF3339Nano with short date fields.\n\t\"2006-1-2t15:4:5.999999999Z07:00\", // RFC3339Nano with short date fields and lower-case \"t\".\n\t\"2006-1-2 15:4:5.999999999\",       // space separated with no time zone\n\t\"2006-1-2\",                        // date only\n\t// Notable exception: time.Parse cannot handle: \"2001-12-14 21:59:43.10 -5\"\n\t// from the set of examples.\n}\n\n// parseTimestamp parses s as a timestamp string and\n// returns the timestamp and reports whether it succeeded.\n// Timestamp formats are defined at http://yaml.org/type/timestamp.html\nfunc parseTimestamp(s string) (time.Time, bool) {\n\t// TODO write code to check all the formats supported by\n\t// http://yaml.org/type/timestamp.html instead of using time.Parse.\n\n\t// Quick check: all date formats start with YYYY-.\n\ti := 0\n\tfor ; i < len(s); i++ {\n\t\tif c := s[i]; c < '0' || c > '9' {\n\t\t\tbreak\n\t\t}\n\t}\n\tif i != 4 || i == len(s) || s[i] != '-' {\n\t\treturn time.Time{}, false\n\t}\n\tfor _, format := range allowedTimestampFormats {\n\t\tif t, err := time.Parse(format, s); err == nil {\n\t\t\treturn t, true\n\t\t}\n\t}\n\treturn time.Time{}, false\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/scannerc.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n// of the Software, and to permit persons to whom the Software is furnished to do\n// so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\npackage yaml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n)\n\n// Introduction\n// ************\n//\n// The following notes assume that you are familiar with the YAML specification\n// (http://yaml.org/spec/1.2/spec.html).  We mostly follow it, although in\n// some cases we are less restrictive that it requires.\n//\n// The process of transforming a YAML stream into a sequence of events is\n// divided on two steps: Scanning and Parsing.\n//\n// The Scanner transforms the input stream into a sequence of tokens, while the\n// parser transform the sequence of tokens produced by the Scanner into a\n// sequence of parsing events.\n//\n// The Scanner is rather clever and complicated. The Parser, on the contrary,\n// is a straightforward implementation of a recursive-descendant parser (or,\n// LL(1) parser, as it is usually called).\n//\n// Actually there are two issues of Scanning that might be called \"clever\", the\n// rest is quite straightforward.  The issues are \"block collection start\" and\n// \"simple keys\".  Both issues are explained below in details.\n//\n// Here the Scanning step is explained and implemented.  We start with the list\n// of all the tokens produced by the Scanner together with short descriptions.\n//\n// Now, tokens:\n//\n//      STREAM-START(encoding)          # The stream start.\n//      STREAM-END                      # The stream end.\n//      VERSION-DIRECTIVE(major,minor)  # The '%YAML' directive.\n//      TAG-DIRECTIVE(handle,prefix)    # The '%TAG' directive.\n//      DOCUMENT-START                  # '---'\n//      DOCUMENT-END                    # '...'\n//      BLOCK-SEQUENCE-START            # Indentation increase denoting a block\n//      BLOCK-MAPPING-START             # sequence or a block mapping.\n//      BLOCK-END                       # Indentation decrease.\n//      FLOW-SEQUENCE-START             # '['\n//      FLOW-SEQUENCE-END               # ']'\n//      BLOCK-SEQUENCE-START            # '{'\n//      BLOCK-SEQUENCE-END              # '}'\n//      BLOCK-ENTRY                     # '-'\n//      FLOW-ENTRY                      # ','\n//      KEY                             # '?' or nothing (simple keys).\n//      VALUE                           # ':'\n//      ALIAS(anchor)                   # '*anchor'\n//      ANCHOR(anchor)                  # '&anchor'\n//      TAG(handle,suffix)              # '!handle!suffix'\n//      SCALAR(value,style)             # A scalar.\n//\n// The following two tokens are \"virtual\" tokens denoting the beginning and the\n// end of the stream:\n//\n//      STREAM-START(encoding)\n//      STREAM-END\n//\n// We pass the information about the input stream encoding with the\n// STREAM-START token.\n//\n// The next two tokens are responsible for tags:\n//\n//      VERSION-DIRECTIVE(major,minor)\n//      TAG-DIRECTIVE(handle,prefix)\n//\n// Example:\n//\n//      %YAML   1.1\n//      %TAG    !   !foo\n//      %TAG    !yaml!  tag:yaml.org,2002:\n//      ---\n//\n// The correspoding sequence of tokens:\n//\n//      STREAM-START(utf-8)\n//      VERSION-DIRECTIVE(1,1)\n//      TAG-DIRECTIVE(\"!\",\"!foo\")\n//      TAG-DIRECTIVE(\"!yaml\",\"tag:yaml.org,2002:\")\n//      DOCUMENT-START\n//      STREAM-END\n//\n// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole\n// line.\n//\n// The document start and end indicators are represented by:\n//\n//      DOCUMENT-START\n//      DOCUMENT-END\n//\n// Note that if a YAML stream contains an implicit document (without '---'\n// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be\n// produced.\n//\n// In the following examples, we present whole documents together with the\n// produced tokens.\n//\n//      1. An implicit document:\n//\n//          'a scalar'\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          SCALAR(\"a scalar\",single-quoted)\n//          STREAM-END\n//\n//      2. An explicit document:\n//\n//          ---\n//          'a scalar'\n//          ...\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          DOCUMENT-START\n//          SCALAR(\"a scalar\",single-quoted)\n//          DOCUMENT-END\n//          STREAM-END\n//\n//      3. Several documents in a stream:\n//\n//          'a scalar'\n//          ---\n//          'another scalar'\n//          ---\n//          'yet another scalar'\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          SCALAR(\"a scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"another scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"yet another scalar\",single-quoted)\n//          STREAM-END\n//\n// We have already introduced the SCALAR token above.  The following tokens are\n// used to describe aliases, anchors, tag, and scalars:\n//\n//      ALIAS(anchor)\n//      ANCHOR(anchor)\n//      TAG(handle,suffix)\n//      SCALAR(value,style)\n//\n// The following series of examples illustrate the usage of these tokens:\n//\n//      1. A recursive sequence:\n//\n//          &A [ *A ]\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          ANCHOR(\"A\")\n//          FLOW-SEQUENCE-START\n//          ALIAS(\"A\")\n//          FLOW-SEQUENCE-END\n//          STREAM-END\n//\n//      2. A tagged scalar:\n//\n//          !!float \"3.14\"  # A good approximation.\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          TAG(\"!!\",\"float\")\n//          SCALAR(\"3.14\",double-quoted)\n//          STREAM-END\n//\n//      3. Various scalar styles:\n//\n//          --- # Implicit empty plain scalars do not produce tokens.\n//          --- a plain scalar\n//          --- 'a single-quoted scalar'\n//          --- \"a double-quoted scalar\"\n//          --- |-\n//            a literal scalar\n//          --- >-\n//            a folded\n//            scalar\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          DOCUMENT-START\n//          DOCUMENT-START\n//          SCALAR(\"a plain scalar\",plain)\n//          DOCUMENT-START\n//          SCALAR(\"a single-quoted scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"a double-quoted scalar\",double-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"a literal scalar\",literal)\n//          DOCUMENT-START\n//          SCALAR(\"a folded scalar\",folded)\n//          STREAM-END\n//\n// Now it's time to review collection-related tokens. We will start with\n// flow collections:\n//\n//      FLOW-SEQUENCE-START\n//      FLOW-SEQUENCE-END\n//      FLOW-MAPPING-START\n//      FLOW-MAPPING-END\n//      FLOW-ENTRY\n//      KEY\n//      VALUE\n//\n// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and\n// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}'\n// correspondingly.  FLOW-ENTRY represent the ',' indicator.  Finally the\n// indicators '?' and ':', which are used for denoting mapping keys and values,\n// are represented by the KEY and VALUE tokens.\n//\n// The following examples show flow collections:\n//\n//      1. A flow sequence:\n//\n//          [item 1, item 2, item 3]\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          FLOW-SEQUENCE-START\n//          SCALAR(\"item 1\",plain)\n//          FLOW-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          FLOW-ENTRY\n//          SCALAR(\"item 3\",plain)\n//          FLOW-SEQUENCE-END\n//          STREAM-END\n//\n//      2. A flow mapping:\n//\n//          {\n//              a simple key: a value,  # Note that the KEY token is produced.\n//              ? a complex key: another value,\n//          }\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          FLOW-MAPPING-START\n//          KEY\n//          SCALAR(\"a simple key\",plain)\n//          VALUE\n//          SCALAR(\"a value\",plain)\n//          FLOW-ENTRY\n//          KEY\n//          SCALAR(\"a complex key\",plain)\n//          VALUE\n//          SCALAR(\"another value\",plain)\n//          FLOW-ENTRY\n//          FLOW-MAPPING-END\n//          STREAM-END\n//\n// A simple key is a key which is not denoted by the '?' indicator.  Note that\n// the Scanner still produce the KEY token whenever it encounters a simple key.\n//\n// For scanning block collections, the following tokens are used (note that we\n// repeat KEY and VALUE here):\n//\n//      BLOCK-SEQUENCE-START\n//      BLOCK-MAPPING-START\n//      BLOCK-END\n//      BLOCK-ENTRY\n//      KEY\n//      VALUE\n//\n// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation\n// increase that precedes a block collection (cf. the INDENT token in Python).\n// The token BLOCK-END denote indentation decrease that ends a block collection\n// (cf. the DEDENT token in Python).  However YAML has some syntax pecularities\n// that makes detections of these tokens more complex.\n//\n// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators\n// '-', '?', and ':' correspondingly.\n//\n// The following examples show how the tokens BLOCK-SEQUENCE-START,\n// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner:\n//\n//      1. Block sequences:\n//\n//          - item 1\n//          - item 2\n//          -\n//            - item 3.1\n//            - item 3.2\n//          -\n//            key 1: value 1\n//            key 2: value 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-ENTRY\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 3.1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 3.2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n//      2. Block mappings:\n//\n//          a simple key: a value   # The KEY token is produced here.\n//          ? a complex key\n//          : another value\n//          a mapping:\n//            key 1: value 1\n//            key 2: value 2\n//          a sequence:\n//            - item 1\n//            - item 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"a simple key\",plain)\n//          VALUE\n//          SCALAR(\"a value\",plain)\n//          KEY\n//          SCALAR(\"a complex key\",plain)\n//          VALUE\n//          SCALAR(\"another value\",plain)\n//          KEY\n//          SCALAR(\"a mapping\",plain)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          KEY\n//          SCALAR(\"a sequence\",plain)\n//          VALUE\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n// YAML does not always require to start a new block collection from a new\n// line.  If the current line contains only '-', '?', and ':' indicators, a new\n// block collection may start at the current line.  The following examples\n// illustrate this case:\n//\n//      1. Collections in a sequence:\n//\n//          - - item 1\n//            - item 2\n//          - key 1: value 1\n//            key 2: value 2\n//          - ? complex key\n//            : complex value\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"complex key\")\n//          VALUE\n//          SCALAR(\"complex value\")\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n//      2. Collections in a mapping:\n//\n//          ? a sequence\n//          : - item 1\n//            - item 2\n//          ? a mapping\n//          : key 1: value 1\n//            key 2: value 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"a sequence\",plain)\n//          VALUE\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          KEY\n//          SCALAR(\"a mapping\",plain)\n//          VALUE\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n// YAML also permits non-indented sequences if they are included into a block\n// mapping.  In this case, the token BLOCK-SEQUENCE-START is not produced:\n//\n//      key:\n//      - item 1    # BLOCK-SEQUENCE-START is NOT produced here.\n//      - item 2\n//\n// Tokens:\n//\n//      STREAM-START(utf-8)\n//      BLOCK-MAPPING-START\n//      KEY\n//      SCALAR(\"key\",plain)\n//      VALUE\n//      BLOCK-ENTRY\n//      SCALAR(\"item 1\",plain)\n//      BLOCK-ENTRY\n//      SCALAR(\"item 2\",plain)\n//      BLOCK-END\n//\n\n// Ensure that the buffer contains the required number of characters.\n// Return true on success, false on failure (reader error or memory error).\nfunc cache(parser *yaml_parser_t, length int) bool {\n\t// [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B)\n\treturn parser.unread >= length || yaml_parser_update_buffer(parser, length)\n}\n\n// Advance the buffer pointer.\nfunc skip(parser *yaml_parser_t) {\n\tif !is_blank(parser.buffer, parser.buffer_pos) {\n\t\tparser.newlines = 0\n\t}\n\tparser.mark.index++\n\tparser.mark.column++\n\tparser.unread--\n\tparser.buffer_pos += width(parser.buffer[parser.buffer_pos])\n}\n\nfunc skip_line(parser *yaml_parser_t) {\n\tif is_crlf(parser.buffer, parser.buffer_pos) {\n\t\tparser.mark.index += 2\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t\tparser.unread -= 2\n\t\tparser.buffer_pos += 2\n\t\tparser.newlines++\n\t} else if is_break(parser.buffer, parser.buffer_pos) {\n\t\tparser.mark.index++\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t\tparser.unread--\n\t\tparser.buffer_pos += width(parser.buffer[parser.buffer_pos])\n\t\tparser.newlines++\n\t}\n}\n\n// Copy a character to a string buffer and advance pointers.\nfunc read(parser *yaml_parser_t, s []byte) []byte {\n\tif !is_blank(parser.buffer, parser.buffer_pos) {\n\t\tparser.newlines = 0\n\t}\n\tw := width(parser.buffer[parser.buffer_pos])\n\tif w == 0 {\n\t\tpanic(\"invalid character sequence\")\n\t}\n\tif len(s) == 0 {\n\t\ts = make([]byte, 0, 32)\n\t}\n\tif w == 1 && len(s)+w <= cap(s) {\n\t\ts = s[:len(s)+1]\n\t\ts[len(s)-1] = parser.buffer[parser.buffer_pos]\n\t\tparser.buffer_pos++\n\t} else {\n\t\ts = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...)\n\t\tparser.buffer_pos += w\n\t}\n\tparser.mark.index++\n\tparser.mark.column++\n\tparser.unread--\n\treturn s\n}\n\n// Copy a line break character to a string buffer and advance pointers.\nfunc read_line(parser *yaml_parser_t, s []byte) []byte {\n\tbuf := parser.buffer\n\tpos := parser.buffer_pos\n\tswitch {\n\tcase buf[pos] == '\\r' && buf[pos+1] == '\\n':\n\t\t// CR LF . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 2\n\t\tparser.mark.index++\n\t\tparser.unread--\n\tcase buf[pos] == '\\r' || buf[pos] == '\\n':\n\t\t// CR|LF . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 1\n\tcase buf[pos] == '\\xC2' && buf[pos+1] == '\\x85':\n\t\t// NEL . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 2\n\tcase buf[pos] == '\\xE2' && buf[pos+1] == '\\x80' && (buf[pos+2] == '\\xA8' || buf[pos+2] == '\\xA9'):\n\t\t// LS|PS . LS|PS\n\t\ts = append(s, buf[parser.buffer_pos:pos+3]...)\n\t\tparser.buffer_pos += 3\n\tdefault:\n\t\treturn s\n\t}\n\tparser.mark.index++\n\tparser.mark.column = 0\n\tparser.mark.line++\n\tparser.unread--\n\tparser.newlines++\n\treturn s\n}\n\n// Get the next token.\nfunc yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool {\n\t// Erase the token object.\n\t*token = yaml_token_t{} // [Go] Is this necessary?\n\n\t// No tokens after STREAM-END or error.\n\tif parser.stream_end_produced || parser.error != yaml_NO_ERROR {\n\t\treturn true\n\t}\n\n\t// Ensure that the tokens queue contains enough tokens.\n\tif !parser.token_available {\n\t\tif !yaml_parser_fetch_more_tokens(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Fetch the next token from the queue.\n\t*token = parser.tokens[parser.tokens_head]\n\tparser.tokens_head++\n\tparser.tokens_parsed++\n\tparser.token_available = false\n\n\tif token.typ == yaml_STREAM_END_TOKEN {\n\t\tparser.stream_end_produced = true\n\t}\n\treturn true\n}\n\n// Set the scanner error and return false.\nfunc yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool {\n\tparser.error = yaml_SCANNER_ERROR\n\tparser.context = context\n\tparser.context_mark = context_mark\n\tparser.problem = problem\n\tparser.problem_mark = parser.mark\n\treturn false\n}\n\nfunc yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool {\n\tcontext := \"while parsing a tag\"\n\tif directive {\n\t\tcontext = \"while parsing a %TAG directive\"\n\t}\n\treturn yaml_parser_set_scanner_error(parser, context, context_mark, problem)\n}\n\nfunc trace(args ...interface{}) func() {\n\tpargs := append([]interface{}{\"+++\"}, args...)\n\tfmt.Println(pargs...)\n\tpargs = append([]interface{}{\"---\"}, args...)\n\treturn func() { fmt.Println(pargs...) }\n}\n\n// Ensure that the tokens queue contains at least one token which can be\n// returned to the Parser.\nfunc yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool {\n\t// While we need more tokens to fetch, do it.\n\tfor {\n\t\t// [Go] The comment parsing logic requires a lookahead of two tokens\n\t\t// so that foot comments may be parsed in time of associating them\n\t\t// with the tokens that are parsed before them, and also for line\n\t\t// comments to be transformed into head comments in some edge cases.\n\t\tif parser.tokens_head < len(parser.tokens)-2 {\n\t\t\t// If a potential simple key is at the head position, we need to fetch\n\t\t\t// the next token to disambiguate it.\n\t\t\thead_tok_idx, ok := parser.simple_keys_by_tok[parser.tokens_parsed]\n\t\t\tif !ok {\n\t\t\t\tbreak\n\t\t\t} else if valid, ok := yaml_simple_key_is_valid(parser, &parser.simple_keys[head_tok_idx]); !ok {\n\t\t\t\treturn false\n\t\t\t} else if !valid {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Fetch the next token.\n\t\tif !yaml_parser_fetch_next_token(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tparser.token_available = true\n\treturn true\n}\n\n// The dispatcher for token fetchers.\nfunc yaml_parser_fetch_next_token(parser *yaml_parser_t) (ok bool) {\n\t// Ensure that the buffer is initialized.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// Check if we just started scanning.  Fetch STREAM-START then.\n\tif !parser.stream_start_produced {\n\t\treturn yaml_parser_fetch_stream_start(parser)\n\t}\n\n\tscan_mark := parser.mark\n\n\t// Eat whitespaces and comments until we reach the next token.\n\tif !yaml_parser_scan_to_next_token(parser) {\n\t\treturn false\n\t}\n\n\t// [Go] While unrolling indents, transform the head comments of prior\n\t// indentation levels observed after scan_start into foot comments at\n\t// the respective indexes.\n\n\t// Check the indentation level against the current column.\n\tif !yaml_parser_unroll_indent(parser, parser.mark.column, scan_mark) {\n\t\treturn false\n\t}\n\n\t// Ensure that the buffer contains at least 4 characters.  4 is the length\n\t// of the longest indicators ('--- ' and '... ').\n\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\treturn false\n\t}\n\n\t// Is it the end of the stream?\n\tif is_z(parser.buffer, parser.buffer_pos) {\n\t\treturn yaml_parser_fetch_stream_end(parser)\n\t}\n\n\t// Is it a directive?\n\tif parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' {\n\t\treturn yaml_parser_fetch_directive(parser)\n\t}\n\n\tbuf := parser.buffer\n\tpos := parser.buffer_pos\n\n\t// Is it the document start indicator?\n\tif parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) {\n\t\treturn yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN)\n\t}\n\n\t// Is it the document end indicator?\n\tif parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) {\n\t\treturn yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN)\n\t}\n\n\tcomment_mark := parser.mark\n\tif len(parser.tokens) > 0 && (parser.flow_level == 0 && buf[pos] == ':' || parser.flow_level > 0 && buf[pos] == ',') {\n\t\t// Associate any following comments with the prior token.\n\t\tcomment_mark = parser.tokens[len(parser.tokens)-1].start_mark\n\t}\n\tdefer func() {\n\t\tif !ok {\n\t\t\treturn\n\t\t}\n\t\tif len(parser.tokens) > 0 && parser.tokens[len(parser.tokens)-1].typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\t\t// Sequence indicators alone have no line comments. It becomes\n\t\t\t// a head comment for whatever follows.\n\t\t\treturn\n\t\t}\n\t\tif !yaml_parser_scan_line_comment(parser, comment_mark) {\n\t\t\tok = false\n\t\t\treturn\n\t\t}\n\t}()\n\n\t// Is it the flow sequence start indicator?\n\tif buf[pos] == '[' {\n\t\treturn yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN)\n\t}\n\n\t// Is it the flow mapping start indicator?\n\tif parser.buffer[parser.buffer_pos] == '{' {\n\t\treturn yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN)\n\t}\n\n\t// Is it the flow sequence end indicator?\n\tif parser.buffer[parser.buffer_pos] == ']' {\n\t\treturn yaml_parser_fetch_flow_collection_end(parser,\n\t\t\tyaml_FLOW_SEQUENCE_END_TOKEN)\n\t}\n\n\t// Is it the flow mapping end indicator?\n\tif parser.buffer[parser.buffer_pos] == '}' {\n\t\treturn yaml_parser_fetch_flow_collection_end(parser,\n\t\t\tyaml_FLOW_MAPPING_END_TOKEN)\n\t}\n\n\t// Is it the flow entry indicator?\n\tif parser.buffer[parser.buffer_pos] == ',' {\n\t\treturn yaml_parser_fetch_flow_entry(parser)\n\t}\n\n\t// Is it the block entry indicator?\n\tif parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) {\n\t\treturn yaml_parser_fetch_block_entry(parser)\n\t}\n\n\t// Is it the key indicator?\n\tif parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_key(parser)\n\t}\n\n\t// Is it the value indicator?\n\tif parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_value(parser)\n\t}\n\n\t// Is it an alias?\n\tif parser.buffer[parser.buffer_pos] == '*' {\n\t\treturn yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN)\n\t}\n\n\t// Is it an anchor?\n\tif parser.buffer[parser.buffer_pos] == '&' {\n\t\treturn yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN)\n\t}\n\n\t// Is it a tag?\n\tif parser.buffer[parser.buffer_pos] == '!' {\n\t\treturn yaml_parser_fetch_tag(parser)\n\t}\n\n\t// Is it a literal scalar?\n\tif parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 {\n\t\treturn yaml_parser_fetch_block_scalar(parser, true)\n\t}\n\n\t// Is it a folded scalar?\n\tif parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 {\n\t\treturn yaml_parser_fetch_block_scalar(parser, false)\n\t}\n\n\t// Is it a single-quoted scalar?\n\tif parser.buffer[parser.buffer_pos] == '\\'' {\n\t\treturn yaml_parser_fetch_flow_scalar(parser, true)\n\t}\n\n\t// Is it a double-quoted scalar?\n\tif parser.buffer[parser.buffer_pos] == '\"' {\n\t\treturn yaml_parser_fetch_flow_scalar(parser, false)\n\t}\n\n\t// Is it a plain scalar?\n\t//\n\t// A plain scalar may start with any non-blank characters except\n\t//\n\t//      '-', '?', ':', ',', '[', ']', '{', '}',\n\t//      '#', '&', '*', '!', '|', '>', '\\'', '\\\"',\n\t//      '%', '@', '`'.\n\t//\n\t// In the block context (and, for the '-' indicator, in the flow context\n\t// too), it may also start with the characters\n\t//\n\t//      '-', '?', ':'\n\t//\n\t// if it is followed by a non-space character.\n\t//\n\t// The last rule is more restrictive than the specification requires.\n\t// [Go] TODO Make this logic more reasonable.\n\t//switch parser.buffer[parser.buffer_pos] {\n\t//case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '\"', '\\'', '@', '%', '-', '`':\n\t//}\n\tif !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' ||\n\t\tparser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' ||\n\t\tparser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' ||\n\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||\n\t\tparser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' ||\n\t\tparser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' ||\n\t\tparser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' ||\n\t\tparser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\\'' ||\n\t\tparser.buffer[parser.buffer_pos] == '\"' || parser.buffer[parser.buffer_pos] == '%' ||\n\t\tparser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') ||\n\t\t(parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) ||\n\t\t(parser.flow_level == 0 &&\n\t\t\t(parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') &&\n\t\t\t!is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_plain_scalar(parser)\n\t}\n\n\t// If we don't determine the token type so far, it is an error.\n\treturn yaml_parser_set_scanner_error(parser,\n\t\t\"while scanning for the next token\", parser.mark,\n\t\t\"found character that cannot start any token\")\n}\n\nfunc yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key *yaml_simple_key_t) (valid, ok bool) {\n\tif !simple_key.possible {\n\t\treturn false, true\n\t}\n\n\t// The 1.2 specification says:\n\t//\n\t//     \"If the ? indicator is omitted, parsing needs to see past the\n\t//     implicit key to recognize it as such. To limit the amount of\n\t//     lookahead required, the “:” indicator must appear at most 1024\n\t//     Unicode characters beyond the start of the key. In addition, the key\n\t//     is restricted to a single line.\"\n\t//\n\tif simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index {\n\t\t// Check if the potential simple key to be removed is required.\n\t\tif simple_key.required {\n\t\t\treturn false, yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while scanning a simple key\", simple_key.mark,\n\t\t\t\t\"could not find expected ':'\")\n\t\t}\n\t\tsimple_key.possible = false\n\t\treturn false, true\n\t}\n\treturn true, true\n}\n\n// Check if a simple key may start at the current position and add it if\n// needed.\nfunc yaml_parser_save_simple_key(parser *yaml_parser_t) bool {\n\t// A simple key is required at the current position if the scanner is in\n\t// the block context and the current column coincides with the indentation\n\t// level.\n\n\trequired := parser.flow_level == 0 && parser.indent == parser.mark.column\n\n\t//\n\t// If the current position may start a simple key, save it.\n\t//\n\tif parser.simple_key_allowed {\n\t\tsimple_key := yaml_simple_key_t{\n\t\t\tpossible:     true,\n\t\t\trequired:     required,\n\t\t\ttoken_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),\n\t\t\tmark:         parser.mark,\n\t\t}\n\n\t\tif !yaml_parser_remove_simple_key(parser) {\n\t\t\treturn false\n\t\t}\n\t\tparser.simple_keys[len(parser.simple_keys)-1] = simple_key\n\t\tparser.simple_keys_by_tok[simple_key.token_number] = len(parser.simple_keys) - 1\n\t}\n\treturn true\n}\n\n// Remove a potential simple key at the current flow level.\nfunc yaml_parser_remove_simple_key(parser *yaml_parser_t) bool {\n\ti := len(parser.simple_keys) - 1\n\tif parser.simple_keys[i].possible {\n\t\t// If the key is required, it is an error.\n\t\tif parser.simple_keys[i].required {\n\t\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while scanning a simple key\", parser.simple_keys[i].mark,\n\t\t\t\t\"could not find expected ':'\")\n\t\t}\n\t\t// Remove the key from the stack.\n\t\tparser.simple_keys[i].possible = false\n\t\tdelete(parser.simple_keys_by_tok, parser.simple_keys[i].token_number)\n\t}\n\treturn true\n}\n\n// max_flow_level limits the flow_level\nconst max_flow_level = 10000\n\n// Increase the flow level and resize the simple key list if needed.\nfunc yaml_parser_increase_flow_level(parser *yaml_parser_t) bool {\n\t// Reset the simple key on the next level.\n\tparser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{\n\t\tpossible:     false,\n\t\trequired:     false,\n\t\ttoken_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),\n\t\tmark:         parser.mark,\n\t})\n\n\t// Increase the flow level.\n\tparser.flow_level++\n\tif parser.flow_level > max_flow_level {\n\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\"while increasing flow level\", parser.simple_keys[len(parser.simple_keys)-1].mark,\n\t\t\tfmt.Sprintf(\"exceeded max depth of %d\", max_flow_level))\n\t}\n\treturn true\n}\n\n// Decrease the flow level.\nfunc yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool {\n\tif parser.flow_level > 0 {\n\t\tparser.flow_level--\n\t\tlast := len(parser.simple_keys) - 1\n\t\tdelete(parser.simple_keys_by_tok, parser.simple_keys[last].token_number)\n\t\tparser.simple_keys = parser.simple_keys[:last]\n\t}\n\treturn true\n}\n\n// max_indents limits the indents stack size\nconst max_indents = 10000\n\n// Push the current indentation level to the stack and set the new level\n// the current column is greater than the indentation level.  In this case,\n// append or insert the specified token into the token queue.\nfunc yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool {\n\t// In the flow context, do nothing.\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\tif parser.indent < column {\n\t\t// Push the current indentation level to the stack and set the new\n\t\t// indentation level.\n\t\tparser.indents = append(parser.indents, parser.indent)\n\t\tparser.indent = column\n\t\tif len(parser.indents) > max_indents {\n\t\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while increasing indent level\", parser.simple_keys[len(parser.simple_keys)-1].mark,\n\t\t\t\tfmt.Sprintf(\"exceeded max depth of %d\", max_indents))\n\t\t}\n\n\t\t// Create a token and insert it into the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        typ,\n\t\t\tstart_mark: mark,\n\t\t\tend_mark:   mark,\n\t\t}\n\t\tif number > -1 {\n\t\t\tnumber -= parser.tokens_parsed\n\t\t}\n\t\tyaml_insert_token(parser, number, &token)\n\t}\n\treturn true\n}\n\n// Pop indentation levels from the indents stack until the current level\n// becomes less or equal to the column.  For each indentation level, append\n// the BLOCK-END token.\nfunc yaml_parser_unroll_indent(parser *yaml_parser_t, column int, scan_mark yaml_mark_t) bool {\n\t// In the flow context, do nothing.\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\tblock_mark := scan_mark\n\tblock_mark.index--\n\n\t// Loop through the indentation levels in the stack.\n\tfor parser.indent > column {\n\n\t\t// [Go] Reposition the end token before potential following\n\t\t//      foot comments of parent blocks. For that, search\n\t\t//      backwards for recent comments that were at the same\n\t\t//      indent as the block that is ending now.\n\t\tstop_index := block_mark.index\n\t\tfor i := len(parser.comments) - 1; i >= 0; i-- {\n\t\t\tcomment := &parser.comments[i]\n\n\t\t\tif comment.end_mark.index < stop_index {\n\t\t\t\t// Don't go back beyond the start of the comment/whitespace scan, unless column < 0.\n\t\t\t\t// If requested indent column is < 0, then the document is over and everything else\n\t\t\t\t// is a foot anyway.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif comment.start_mark.column == parser.indent+1 {\n\t\t\t\t// This is a good match. But maybe there's a former comment\n\t\t\t\t// at that same indent level, so keep searching.\n\t\t\t\tblock_mark = comment.start_mark\n\t\t\t}\n\n\t\t\t// While the end of the former comment matches with\n\t\t\t// the start of the following one, we know there's\n\t\t\t// nothing in between and scanning is still safe.\n\t\t\tstop_index = comment.scan_mark.index\n\t\t}\n\n\t\t// Create a token and append it to the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        yaml_BLOCK_END_TOKEN,\n\t\t\tstart_mark: block_mark,\n\t\t\tend_mark:   block_mark,\n\t\t}\n\t\tyaml_insert_token(parser, -1, &token)\n\n\t\t// Pop the indentation level.\n\t\tparser.indent = parser.indents[len(parser.indents)-1]\n\t\tparser.indents = parser.indents[:len(parser.indents)-1]\n\t}\n\treturn true\n}\n\n// Initialize the scanner and produce the STREAM-START token.\nfunc yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool {\n\n\t// Set the initial indentation.\n\tparser.indent = -1\n\n\t// Initialize the simple key stack.\n\tparser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{})\n\n\tparser.simple_keys_by_tok = make(map[int]int)\n\n\t// A simple key is allowed at the beginning of the stream.\n\tparser.simple_key_allowed = true\n\n\t// We have started.\n\tparser.stream_start_produced = true\n\n\t// Create the STREAM-START token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_STREAM_START_TOKEN,\n\t\tstart_mark: parser.mark,\n\t\tend_mark:   parser.mark,\n\t\tencoding:   parser.encoding,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the STREAM-END token and shut down the scanner.\nfunc yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool {\n\n\t// Force new line.\n\tif parser.mark.column != 0 {\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t}\n\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1, parser.mark) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Create the STREAM-END token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_STREAM_END_TOKEN,\n\t\tstart_mark: parser.mark,\n\t\tend_mark:   parser.mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token.\nfunc yaml_parser_fetch_directive(parser *yaml_parser_t) bool {\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1, parser.mark) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Create the YAML-DIRECTIVE or TAG-DIRECTIVE token.\n\ttoken := yaml_token_t{}\n\tif !yaml_parser_scan_directive(parser, &token) {\n\t\treturn false\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the DOCUMENT-START or DOCUMENT-END token.\nfunc yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1, parser.mark) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\n\tskip(parser)\n\tskip(parser)\n\tskip(parser)\n\n\tend_mark := parser.mark\n\n\t// Create the DOCUMENT-START or DOCUMENT-END token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token.\nfunc yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\n\t// The indicators '[' and '{' may start a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Increase the flow level.\n\tif !yaml_parser_increase_flow_level(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key may follow the indicators '[' and '{'.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token.\nfunc yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// Reset any potential simple key on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Decrease the flow level.\n\tif !yaml_parser_decrease_flow_level(parser) {\n\t\treturn false\n\t}\n\n\t// No simple keys after the indicators ']' and '}'.\n\tparser.simple_key_allowed = false\n\n\t// Consume the token.\n\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-ENTRY token.\nfunc yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool {\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after ','.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-ENTRY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_FLOW_ENTRY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the BLOCK-ENTRY token.\nfunc yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool {\n\t// Check if the scanner is in the block context.\n\tif parser.flow_level == 0 {\n\t\t// Check if we are allowed to start a new entry.\n\t\tif !parser.simple_key_allowed {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\"block sequence entries are not allowed in this context\")\n\t\t}\n\t\t// Add the BLOCK-SEQUENCE-START token if needed.\n\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\t// It is an error for the '-' indicator to occur in the flow context,\n\t\t// but we let the Parser detect and report about it because the Parser\n\t\t// is able to point to the context.\n\t}\n\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after '-'.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the BLOCK-ENTRY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_BLOCK_ENTRY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the KEY token.\nfunc yaml_parser_fetch_key(parser *yaml_parser_t) bool {\n\n\t// In the block context, additional checks are required.\n\tif parser.flow_level == 0 {\n\t\t// Check if we are allowed to start a new key (not nessesary simple).\n\t\tif !parser.simple_key_allowed {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\"mapping keys are not allowed in this context\")\n\t\t}\n\t\t// Add the BLOCK-MAPPING-START token if needed.\n\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after '?' in the block context.\n\tparser.simple_key_allowed = parser.flow_level == 0\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the KEY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_KEY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the VALUE token.\nfunc yaml_parser_fetch_value(parser *yaml_parser_t) bool {\n\n\tsimple_key := &parser.simple_keys[len(parser.simple_keys)-1]\n\n\t// Have we found a simple key?\n\tif valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok {\n\t\treturn false\n\n\t} else if valid {\n\n\t\t// Create the KEY token and insert it into the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        yaml_KEY_TOKEN,\n\t\t\tstart_mark: simple_key.mark,\n\t\t\tend_mark:   simple_key.mark,\n\t\t}\n\t\tyaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token)\n\n\t\t// In the block context, we may need to add the BLOCK-MAPPING-START token.\n\t\tif !yaml_parser_roll_indent(parser, simple_key.mark.column,\n\t\t\tsimple_key.token_number,\n\t\t\tyaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Remove the simple key.\n\t\tsimple_key.possible = false\n\t\tdelete(parser.simple_keys_by_tok, simple_key.token_number)\n\n\t\t// A simple key cannot follow another simple key.\n\t\tparser.simple_key_allowed = false\n\n\t} else {\n\t\t// The ':' indicator follows a complex key.\n\n\t\t// In the block context, extra checks are required.\n\t\tif parser.flow_level == 0 {\n\n\t\t\t// Check if we are allowed to start a complex value.\n\t\t\tif !parser.simple_key_allowed {\n\t\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\t\"mapping values are not allowed in this context\")\n\t\t\t}\n\n\t\t\t// Add the BLOCK-MAPPING-START token if needed.\n\t\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Simple keys after ':' are allowed in the block context.\n\t\tparser.simple_key_allowed = parser.flow_level == 0\n\t}\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the VALUE token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_VALUE_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the ALIAS or ANCHOR token.\nfunc yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// An anchor or an alias could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow an anchor or an alias.\n\tparser.simple_key_allowed = false\n\n\t// Create the ALIAS or ANCHOR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_anchor(parser, &token, typ) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the TAG token.\nfunc yaml_parser_fetch_tag(parser *yaml_parser_t) bool {\n\t// A tag could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a tag.\n\tparser.simple_key_allowed = false\n\n\t// Create the TAG token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_tag(parser, &token) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens.\nfunc yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool {\n\t// Remove any potential simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key may follow a block scalar.\n\tparser.simple_key_allowed = true\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_block_scalar(parser, &token, literal) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens.\nfunc yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool {\n\t// A plain scalar could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a flow scalar.\n\tparser.simple_key_allowed = false\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_flow_scalar(parser, &token, single) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,plain) token.\nfunc yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool {\n\t// A plain scalar could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a flow scalar.\n\tparser.simple_key_allowed = false\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_plain_scalar(parser, &token) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Eat whitespaces and comments until the next token is found.\nfunc yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool {\n\n\tscan_mark := parser.mark\n\n\t// Until the next token is not found.\n\tfor {\n\t\t// Allow the BOM mark to start a line.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t}\n\n\t\t// Eat whitespaces.\n\t\t// Tabs are allowed:\n\t\t//  - in the flow context\n\t\t//  - in the block context, but not at the beginning of the line or\n\t\t//  after '-', '?', or ':' (complex value).\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\\t') {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Check if we just had a line comment under a sequence entry that\n\t\t// looks more like a header to the following content. Similar to this:\n\t\t//\n\t\t// - # The comment\n\t\t//   - Some data\n\t\t//\n\t\t// If so, transform the line comment to a head comment and reposition.\n\t\tif len(parser.comments) > 0 && len(parser.tokens) > 1 {\n\t\t\ttokenA := parser.tokens[len(parser.tokens)-2]\n\t\t\ttokenB := parser.tokens[len(parser.tokens)-1]\n\t\t\tcomment := &parser.comments[len(parser.comments)-1]\n\t\t\tif tokenA.typ == yaml_BLOCK_SEQUENCE_START_TOKEN && tokenB.typ == yaml_BLOCK_ENTRY_TOKEN && len(comment.line) > 0 && !is_break(parser.buffer, parser.buffer_pos) {\n\t\t\t\t// If it was in the prior line, reposition so it becomes a\n\t\t\t\t// header of the follow up token. Otherwise, keep it in place\n\t\t\t\t// so it becomes a header of the former.\n\t\t\t\tcomment.head = comment.line\n\t\t\t\tcomment.line = nil\n\t\t\t\tif comment.start_mark.line == parser.mark.line-1 {\n\t\t\t\t\tcomment.token_mark = parser.mark\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Eat a comment until a line break.\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tif !yaml_parser_scan_comments(parser, scan_mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// If it is a line break, eat it.\n\t\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tskip_line(parser)\n\n\t\t\t// In the block context, a new line may start a simple key.\n\t\t\tif parser.flow_level == 0 {\n\t\t\t\tparser.simple_key_allowed = true\n\t\t\t}\n\t\t} else {\n\t\t\tbreak // We have found a token.\n\t\t}\n\t}\n\n\treturn true\n}\n\n// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token.\n//\n// Scope:\n//      %YAML    1.1    # a comment \\n\n//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//\nfunc yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool {\n\t// Eat '%'.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Scan the directive name.\n\tvar name []byte\n\tif !yaml_parser_scan_directive_name(parser, start_mark, &name) {\n\t\treturn false\n\t}\n\n\t// Is it a YAML directive?\n\tif bytes.Equal(name, []byte(\"YAML\")) {\n\t\t// Scan the VERSION directive value.\n\t\tvar major, minor int8\n\t\tif !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) {\n\t\t\treturn false\n\t\t}\n\t\tend_mark := parser.mark\n\n\t\t// Create a VERSION-DIRECTIVE token.\n\t\t*token = yaml_token_t{\n\t\t\ttyp:        yaml_VERSION_DIRECTIVE_TOKEN,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tmajor:      major,\n\t\t\tminor:      minor,\n\t\t}\n\n\t\t// Is it a TAG directive?\n\t} else if bytes.Equal(name, []byte(\"TAG\")) {\n\t\t// Scan the TAG directive value.\n\t\tvar handle, prefix []byte\n\t\tif !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) {\n\t\t\treturn false\n\t\t}\n\t\tend_mark := parser.mark\n\n\t\t// Create a TAG-DIRECTIVE token.\n\t\t*token = yaml_token_t{\n\t\t\ttyp:        yaml_TAG_DIRECTIVE_TOKEN,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tvalue:      handle,\n\t\t\tprefix:     prefix,\n\t\t}\n\n\t\t// Unknown directive.\n\t} else {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"found unknown directive name\")\n\t\treturn false\n\t}\n\n\t// Eat the rest of the line including any comments.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t// [Go] Discard this inline comment for the time being.\n\t\t//if !yaml_parser_scan_line_comment(parser, start_mark) {\n\t\t//\treturn false\n\t\t//}\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check if we are at the end of the line.\n\tif !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"did not find expected comment or line break\")\n\t\treturn false\n\t}\n\n\t// Eat a line break.\n\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\tskip_line(parser)\n\t}\n\n\treturn true\n}\n\n// Scan the directive name.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//       ^^^^\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//       ^^^\n//\nfunc yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool {\n\t// Consume the directive name.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tvar s []byte\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the name is empty.\n\tif len(s) == 0 {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"could not find expected directive name\")\n\t\treturn false\n\t}\n\n\t// Check for an blank character after the name.\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"found unexpected non-alphabetical character\")\n\t\treturn false\n\t}\n\t*name = s\n\treturn true\n}\n\n// Scan the value of VERSION-DIRECTIVE.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//           ^^^^^^\nfunc yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool {\n\t// Eat whitespaces.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Consume the major version number.\n\tif !yaml_parser_scan_version_directive_number(parser, start_mark, major) {\n\t\treturn false\n\t}\n\n\t// Eat '.'.\n\tif parser.buffer[parser.buffer_pos] != '.' {\n\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\tstart_mark, \"did not find expected digit or '.' character\")\n\t}\n\n\tskip(parser)\n\n\t// Consume the minor version number.\n\tif !yaml_parser_scan_version_directive_number(parser, start_mark, minor) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nconst max_number_length = 2\n\n// Scan the version number of VERSION-DIRECTIVE.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//              ^\n//      %YAML   1.1     # a comment \\n\n//                ^\nfunc yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool {\n\n\t// Repeat while the next character is digit.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tvar value, length int8\n\tfor is_digit(parser.buffer, parser.buffer_pos) {\n\t\t// Check if the number is too long.\n\t\tlength++\n\t\tif length > max_number_length {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\t\tstart_mark, \"found extremely long version number\")\n\t\t}\n\t\tvalue = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos))\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the number was present.\n\tif length == 0 {\n\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\tstart_mark, \"did not find expected version number\")\n\t}\n\t*number = value\n\treturn true\n}\n\n// Scan the value of a TAG-DIRECTIVE token.\n//\n// Scope:\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//\nfunc yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool {\n\tvar handle_value, prefix_value []byte\n\n\t// Eat whitespaces.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Scan a handle.\n\tif !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) {\n\t\treturn false\n\t}\n\n\t// Expect a whitespace.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blank(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a %TAG directive\",\n\t\t\tstart_mark, \"did not find expected whitespace\")\n\t\treturn false\n\t}\n\n\t// Eat whitespaces.\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Scan a prefix.\n\tif !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) {\n\t\treturn false\n\t}\n\n\t// Expect a whitespace or line break.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a %TAG directive\",\n\t\t\tstart_mark, \"did not find expected whitespace or line break\")\n\t\treturn false\n\t}\n\n\t*handle = handle_value\n\t*prefix = prefix_value\n\treturn true\n}\n\nfunc yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool {\n\tvar s []byte\n\n\t// Eat the indicator character.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Consume the value.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tend_mark := parser.mark\n\n\t/*\n\t * Check if length of the anchor is greater than 0 and it is followed by\n\t * a whitespace character or one of the indicators:\n\t *\n\t *      '?', ':', ',', ']', '}', '%', '@', '`'.\n\t */\n\n\tif len(s) == 0 ||\n\t\t!(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' ||\n\t\t\tparser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' ||\n\t\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' ||\n\t\t\tparser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' ||\n\t\t\tparser.buffer[parser.buffer_pos] == '`') {\n\t\tcontext := \"while scanning an alias\"\n\t\tif typ == yaml_ANCHOR_TOKEN {\n\t\t\tcontext = \"while scanning an anchor\"\n\t\t}\n\t\tyaml_parser_set_scanner_error(parser, context, start_mark,\n\t\t\t\"did not find expected alphabetic or numeric character\")\n\t\treturn false\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t}\n\n\treturn true\n}\n\n/*\n * Scan a TAG token.\n */\n\nfunc yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool {\n\tvar handle, suffix []byte\n\n\tstart_mark := parser.mark\n\n\t// Check if the tag is in the canonical form.\n\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\treturn false\n\t}\n\n\tif parser.buffer[parser.buffer_pos+1] == '<' {\n\t\t// Keep the handle as ''\n\n\t\t// Eat '!<'\n\t\tskip(parser)\n\t\tskip(parser)\n\n\t\t// Consume the tag value.\n\t\tif !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check for '>' and eat it.\n\t\tif parser.buffer[parser.buffer_pos] != '>' {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a tag\",\n\t\t\t\tstart_mark, \"did not find the expected '>'\")\n\t\t\treturn false\n\t\t}\n\n\t\tskip(parser)\n\t} else {\n\t\t// The tag has either the '!suffix' or the '!handle!suffix' form.\n\n\t\t// First, try to scan a handle.\n\t\tif !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check if it is, indeed, handle.\n\t\tif handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' {\n\t\t\t// Scan the suffix now.\n\t\t\tif !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\t// It wasn't a handle after all.  Scan the rest of the tag.\n\t\t\tif !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Set the handle to '!'.\n\t\t\thandle = []byte{'!'}\n\n\t\t\t// A special case: the '!' tag.  Set the handle to '' and the\n\t\t\t// suffix to '!'.\n\t\t\tif len(suffix) == 0 {\n\t\t\t\thandle, suffix = suffix, handle\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check the character which ends the tag.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a tag\",\n\t\t\tstart_mark, \"did not find expected whitespace or line break\")\n\t\treturn false\n\t}\n\n\tend_mark := parser.mark\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_TAG_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      handle,\n\t\tsuffix:     suffix,\n\t}\n\treturn true\n}\n\n// Scan a tag handle.\nfunc yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool {\n\t// Check the initial '!' character.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif parser.buffer[parser.buffer_pos] != '!' {\n\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\tstart_mark, \"did not find expected '!'\")\n\t\treturn false\n\t}\n\n\tvar s []byte\n\n\t// Copy the '!' character.\n\ts = read(parser, s)\n\n\t// Copy all subsequent alphabetical and numerical characters.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the trailing character is '!' and copy it.\n\tif parser.buffer[parser.buffer_pos] == '!' {\n\t\ts = read(parser, s)\n\t} else {\n\t\t// It's either the '!' tag or not really a tag handle.  If it's a %TAG\n\t\t// directive, it's an error.  If it's a tag token, it must be a part of URI.\n\t\tif directive && string(s) != \"!\" {\n\t\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\tstart_mark, \"did not find expected '!'\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\t*handle = s\n\treturn true\n}\n\n// Scan a tag.\nfunc yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool {\n\t//size_t length = head ? strlen((char *)head) : 0\n\tvar s []byte\n\thasTag := len(head) > 0\n\n\t// Copy the head if needed.\n\t//\n\t// Note that we don't copy the leading '!' character.\n\tif len(head) > 1 {\n\t\ts = append(s, head[1:]...)\n\t}\n\n\t// Scan the tag.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// The set of characters that may appear in URI is as follows:\n\t//\n\t//      '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&',\n\t//      '=', '+', '$', ',', '.', '!', '~', '*', '\\'', '(', ')', '[', ']',\n\t//      '%'.\n\t// [Go] TODO Convert this into more reasonable logic.\n\tfor is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' ||\n\t\tparser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' ||\n\t\tparser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' ||\n\t\tparser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' ||\n\t\tparser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' ||\n\t\tparser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' ||\n\t\tparser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' ||\n\t\tparser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\\'' ||\n\t\tparser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' ||\n\t\tparser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' ||\n\t\tparser.buffer[parser.buffer_pos] == '%' {\n\t\t// Check if it is a URI-escape sequence.\n\t\tif parser.buffer[parser.buffer_pos] == '%' {\n\t\t\tif !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\ts = read(parser, s)\n\t\t}\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\thasTag = true\n\t}\n\n\tif !hasTag {\n\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\tstart_mark, \"did not find expected tag URI\")\n\t\treturn false\n\t}\n\t*uri = s\n\treturn true\n}\n\n// Decode an URI-escape sequence corresponding to a single UTF-8 character.\nfunc yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool {\n\n\t// Decode the required number of characters.\n\tw := 1024\n\tfor w > 0 {\n\t\t// Check for a URI-escaped octet.\n\t\tif parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {\n\t\t\treturn false\n\t\t}\n\n\t\tif !(parser.buffer[parser.buffer_pos] == '%' &&\n\t\t\tis_hex(parser.buffer, parser.buffer_pos+1) &&\n\t\t\tis_hex(parser.buffer, parser.buffer_pos+2)) {\n\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\tstart_mark, \"did not find URI escaped octet\")\n\t\t}\n\n\t\t// Get the octet.\n\t\toctet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2))\n\n\t\t// If it is the leading octet, determine the length of the UTF-8 sequence.\n\t\tif w == 1024 {\n\t\t\tw = width(octet)\n\t\t\tif w == 0 {\n\t\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\t\tstart_mark, \"found an incorrect leading UTF-8 octet\")\n\t\t\t}\n\t\t} else {\n\t\t\t// Check if the trailing octet is correct.\n\t\t\tif octet&0xC0 != 0x80 {\n\t\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\t\tstart_mark, \"found an incorrect trailing UTF-8 octet\")\n\t\t\t}\n\t\t}\n\n\t\t// Copy the octet and move the pointers.\n\t\t*s = append(*s, octet)\n\t\tskip(parser)\n\t\tskip(parser)\n\t\tskip(parser)\n\t\tw--\n\t}\n\treturn true\n}\n\n// Scan a block scalar.\nfunc yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool {\n\t// Eat the indicator '|' or '>'.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Scan the additional block scalar indicators.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// Check for a chomping indicator.\n\tvar chomping, increment int\n\tif parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {\n\t\t// Set the chomping method and eat the indicator.\n\t\tif parser.buffer[parser.buffer_pos] == '+' {\n\t\t\tchomping = +1\n\t\t} else {\n\t\t\tchomping = -1\n\t\t}\n\t\tskip(parser)\n\n\t\t// Check for an indentation indicator.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif is_digit(parser.buffer, parser.buffer_pos) {\n\t\t\t// Check that the indentation is greater than 0.\n\t\t\tif parser.buffer[parser.buffer_pos] == '0' {\n\t\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\t\tstart_mark, \"found an indentation indicator equal to 0\")\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Get the indentation level and eat the indicator.\n\t\t\tincrement = as_digit(parser.buffer, parser.buffer_pos)\n\t\t\tskip(parser)\n\t\t}\n\n\t} else if is_digit(parser.buffer, parser.buffer_pos) {\n\t\t// Do the same as above, but in the opposite order.\n\n\t\tif parser.buffer[parser.buffer_pos] == '0' {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\tstart_mark, \"found an indentation indicator equal to 0\")\n\t\t\treturn false\n\t\t}\n\t\tincrement = as_digit(parser.buffer, parser.buffer_pos)\n\t\tskip(parser)\n\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {\n\t\t\tif parser.buffer[parser.buffer_pos] == '+' {\n\t\t\t\tchomping = +1\n\t\t\t} else {\n\t\t\t\tchomping = -1\n\t\t\t}\n\t\t\tskip(parser)\n\t\t}\n\t}\n\n\t// Eat whitespaces and comments to the end of the line.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\tif !yaml_parser_scan_line_comment(parser, start_mark) {\n\t\t\treturn false\n\t\t}\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check if we are at the end of the line.\n\tif !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\tstart_mark, \"did not find expected comment or line break\")\n\t\treturn false\n\t}\n\n\t// Eat a line break.\n\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\tskip_line(parser)\n\t}\n\n\tend_mark := parser.mark\n\n\t// Set the indentation level if it was specified.\n\tvar indent int\n\tif increment > 0 {\n\t\tif parser.indent >= 0 {\n\t\t\tindent = parser.indent + increment\n\t\t} else {\n\t\t\tindent = increment\n\t\t}\n\t}\n\n\t// Scan the leading line breaks and determine the indentation level if needed.\n\tvar s, leading_break, trailing_breaks []byte\n\tif !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {\n\t\treturn false\n\t}\n\n\t// Scan the block scalar content.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tvar leading_blank, trailing_blank bool\n\tfor parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) {\n\t\t// We are at the beginning of a non-empty line.\n\n\t\t// Is it a trailing whitespace?\n\t\ttrailing_blank = is_blank(parser.buffer, parser.buffer_pos)\n\n\t\t// Check if we need to fold the leading line break.\n\t\tif !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\\n' {\n\t\t\t// Do we need to join the lines by space?\n\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\ts = append(s, ' ')\n\t\t\t}\n\t\t} else {\n\t\t\ts = append(s, leading_break...)\n\t\t}\n\t\tleading_break = leading_break[:0]\n\n\t\t// Append the remaining line breaks.\n\t\ts = append(s, trailing_breaks...)\n\t\ttrailing_breaks = trailing_breaks[:0]\n\n\t\t// Is it a leading whitespace?\n\t\tleading_blank = is_blank(parser.buffer, parser.buffer_pos)\n\n\t\t// Consume the current line.\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\ts = read(parser, s)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Consume the line break.\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\n\t\tleading_break = read_line(parser, leading_break)\n\n\t\t// Eat the following indentation spaces and line breaks.\n\t\tif !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Chomp the tail.\n\tif chomping != -1 {\n\t\ts = append(s, leading_break...)\n\t}\n\tif chomping == 1 {\n\t\ts = append(s, trailing_breaks...)\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_LITERAL_SCALAR_STYLE,\n\t}\n\tif !literal {\n\t\ttoken.style = yaml_FOLDED_SCALAR_STYLE\n\t}\n\treturn true\n}\n\n// Scan indentation spaces and line breaks for a block scalar.  Determine the\n// indentation level if needed.\nfunc yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool {\n\t*end_mark = parser.mark\n\n\t// Eat the indentation spaces and line breaks.\n\tmax_indent := 0\n\tfor {\n\t\t// Eat the indentation spaces.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tfor (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif parser.mark.column > max_indent {\n\t\t\tmax_indent = parser.mark.column\n\t\t}\n\n\t\t// Check for a tab character messing the indentation.\n\t\tif (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\tstart_mark, \"found a tab character where an indentation space is expected\")\n\t\t}\n\n\t\t// Have we found a non-empty line?\n\t\tif !is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume the line break.\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\t// [Go] Should really be returning breaks instead.\n\t\t*breaks = read_line(parser, *breaks)\n\t\t*end_mark = parser.mark\n\t}\n\n\t// Determine the indentation level if needed.\n\tif *indent == 0 {\n\t\t*indent = max_indent\n\t\tif *indent < parser.indent+1 {\n\t\t\t*indent = parser.indent + 1\n\t\t}\n\t\tif *indent < 1 {\n\t\t\t*indent = 1\n\t\t}\n\t}\n\treturn true\n}\n\n// Scan a quoted scalar.\nfunc yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool {\n\t// Eat the left quote.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Consume the content of the quoted scalar.\n\tvar s, leading_break, trailing_breaks, whitespaces []byte\n\tfor {\n\t\t// Check that there are no document indicators at the beginning of the line.\n\t\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\t\treturn false\n\t\t}\n\n\t\tif parser.mark.column == 0 &&\n\t\t\t((parser.buffer[parser.buffer_pos+0] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+1] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+2] == '-') ||\n\t\t\t\t(parser.buffer[parser.buffer_pos+0] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+1] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+2] == '.')) &&\n\t\t\tis_blankz(parser.buffer, parser.buffer_pos+3) {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a quoted scalar\",\n\t\t\t\tstart_mark, \"found unexpected document indicator\")\n\t\t\treturn false\n\t\t}\n\n\t\t// Check for EOF.\n\t\tif is_z(parser.buffer, parser.buffer_pos) {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a quoted scalar\",\n\t\t\t\tstart_mark, \"found unexpected end of stream\")\n\t\t\treturn false\n\t\t}\n\n\t\t// Consume non-blank characters.\n\t\tleading_blanks := false\n\t\tfor !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\t\tif single && parser.buffer[parser.buffer_pos] == '\\'' && parser.buffer[parser.buffer_pos+1] == '\\'' {\n\t\t\t\t// Is is an escaped single quote.\n\t\t\t\ts = append(s, '\\'')\n\t\t\t\tskip(parser)\n\t\t\t\tskip(parser)\n\n\t\t\t} else if single && parser.buffer[parser.buffer_pos] == '\\'' {\n\t\t\t\t// It is a right single quote.\n\t\t\t\tbreak\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\"' {\n\t\t\t\t// It is a right double quote.\n\t\t\t\tbreak\n\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\\\\' && is_break(parser.buffer, parser.buffer_pos+1) {\n\t\t\t\t// It is an escaped line break.\n\t\t\t\tif parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tskip(parser)\n\t\t\t\tskip_line(parser)\n\t\t\t\tleading_blanks = true\n\t\t\t\tbreak\n\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\\\\' {\n\t\t\t\t// It is an escape sequence.\n\t\t\t\tcode_length := 0\n\n\t\t\t\t// Check the escape character.\n\t\t\t\tswitch parser.buffer[parser.buffer_pos+1] {\n\t\t\t\tcase '0':\n\t\t\t\t\ts = append(s, 0)\n\t\t\t\tcase 'a':\n\t\t\t\t\ts = append(s, '\\x07')\n\t\t\t\tcase 'b':\n\t\t\t\t\ts = append(s, '\\x08')\n\t\t\t\tcase 't', '\\t':\n\t\t\t\t\ts = append(s, '\\x09')\n\t\t\t\tcase 'n':\n\t\t\t\t\ts = append(s, '\\x0A')\n\t\t\t\tcase 'v':\n\t\t\t\t\ts = append(s, '\\x0B')\n\t\t\t\tcase 'f':\n\t\t\t\t\ts = append(s, '\\x0C')\n\t\t\t\tcase 'r':\n\t\t\t\t\ts = append(s, '\\x0D')\n\t\t\t\tcase 'e':\n\t\t\t\t\ts = append(s, '\\x1B')\n\t\t\t\tcase ' ':\n\t\t\t\t\ts = append(s, '\\x20')\n\t\t\t\tcase '\"':\n\t\t\t\t\ts = append(s, '\"')\n\t\t\t\tcase '\\'':\n\t\t\t\t\ts = append(s, '\\'')\n\t\t\t\tcase '\\\\':\n\t\t\t\t\ts = append(s, '\\\\')\n\t\t\t\tcase 'N': // NEL (#x85)\n\t\t\t\t\ts = append(s, '\\xC2')\n\t\t\t\t\ts = append(s, '\\x85')\n\t\t\t\tcase '_': // #xA0\n\t\t\t\t\ts = append(s, '\\xC2')\n\t\t\t\t\ts = append(s, '\\xA0')\n\t\t\t\tcase 'L': // LS (#x2028)\n\t\t\t\t\ts = append(s, '\\xE2')\n\t\t\t\t\ts = append(s, '\\x80')\n\t\t\t\t\ts = append(s, '\\xA8')\n\t\t\t\tcase 'P': // PS (#x2029)\n\t\t\t\t\ts = append(s, '\\xE2')\n\t\t\t\t\ts = append(s, '\\x80')\n\t\t\t\t\ts = append(s, '\\xA9')\n\t\t\t\tcase 'x':\n\t\t\t\t\tcode_length = 2\n\t\t\t\tcase 'u':\n\t\t\t\t\tcode_length = 4\n\t\t\t\tcase 'U':\n\t\t\t\t\tcode_length = 8\n\t\t\t\tdefault:\n\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\tstart_mark, \"found unknown escape character\")\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tskip(parser)\n\t\t\t\tskip(parser)\n\n\t\t\t\t// Consume an arbitrary escape code.\n\t\t\t\tif code_length > 0 {\n\t\t\t\t\tvar value int\n\n\t\t\t\t\t// Scan the character value.\n\t\t\t\t\tif parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tfor k := 0; k < code_length; k++ {\n\t\t\t\t\t\tif !is_hex(parser.buffer, parser.buffer_pos+k) {\n\t\t\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\t\t\tstart_mark, \"did not find expected hexdecimal number\")\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check the value and write the character.\n\t\t\t\t\tif (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF {\n\t\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\t\tstart_mark, \"found invalid Unicode character escape code\")\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tif value <= 0x7F {\n\t\t\t\t\t\ts = append(s, byte(value))\n\t\t\t\t\t} else if value <= 0x7FF {\n\t\t\t\t\t\ts = append(s, byte(0xC0+(value>>6)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t} else if value <= 0xFFFF {\n\t\t\t\t\t\ts = append(s, byte(0xE0+(value>>12)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>6)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts = append(s, byte(0xF0+(value>>18)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>12)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>6)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Advance the pointer.\n\t\t\t\t\tfor k := 0; k < code_length; k++ {\n\t\t\t\t\t\tskip(parser)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// It is a non-escaped non-blank character.\n\t\t\t\ts = read(parser, s)\n\t\t\t}\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check if we are at the end of the scalar.\n\t\tif single {\n\t\t\tif parser.buffer[parser.buffer_pos] == '\\'' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tif parser.buffer[parser.buffer_pos] == '\"' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// Consume blank characters.\n\t\tfor is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif is_blank(parser.buffer, parser.buffer_pos) {\n\t\t\t\t// Consume a space or a tab character.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = read(parser, whitespaces)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Check if it is a first line break.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t\tleading_break = read_line(parser, leading_break)\n\t\t\t\t\tleading_blanks = true\n\t\t\t\t} else {\n\t\t\t\t\ttrailing_breaks = read_line(parser, trailing_breaks)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Join the whitespaces or fold line breaks.\n\t\tif leading_blanks {\n\t\t\t// Do we need to fold line breaks?\n\t\t\tif len(leading_break) > 0 && leading_break[0] == '\\n' {\n\t\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\t\ts = append(s, ' ')\n\t\t\t\t} else {\n\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ts = append(s, leading_break...)\n\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t}\n\t\t\ttrailing_breaks = trailing_breaks[:0]\n\t\t\tleading_break = leading_break[:0]\n\t\t} else {\n\t\t\ts = append(s, whitespaces...)\n\t\t\twhitespaces = whitespaces[:0]\n\t\t}\n\t}\n\n\t// Eat the right quote.\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_SINGLE_QUOTED_SCALAR_STYLE,\n\t}\n\tif !single {\n\t\ttoken.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\treturn true\n}\n\n// Scan a plain scalar.\nfunc yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool {\n\n\tvar s, leading_break, trailing_breaks, whitespaces []byte\n\tvar leading_blanks bool\n\tvar indent = parser.indent + 1\n\n\tstart_mark := parser.mark\n\tend_mark := parser.mark\n\n\t// Consume the content of the plain scalar.\n\tfor {\n\t\t// Check for a document indicator.\n\t\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.mark.column == 0 &&\n\t\t\t((parser.buffer[parser.buffer_pos+0] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+1] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+2] == '-') ||\n\t\t\t\t(parser.buffer[parser.buffer_pos+0] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+1] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+2] == '.')) &&\n\t\t\tis_blankz(parser.buffer, parser.buffer_pos+3) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Check for a comment.\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume non-blank characters.\n\t\tfor !is_blankz(parser.buffer, parser.buffer_pos) {\n\n\t\t\t// Check for indicators that may end a plain scalar.\n\t\t\tif (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) ||\n\t\t\t\t(parser.flow_level > 0 &&\n\t\t\t\t\t(parser.buffer[parser.buffer_pos] == ',' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == '}')) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Check if we need to join whitespaces and breaks.\n\t\t\tif leading_blanks || len(whitespaces) > 0 {\n\t\t\t\tif leading_blanks {\n\t\t\t\t\t// Do we need to fold line breaks?\n\t\t\t\t\tif leading_break[0] == '\\n' {\n\t\t\t\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\t\t\t\ts = append(s, ' ')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts = append(s, leading_break...)\n\t\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t\t}\n\t\t\t\t\ttrailing_breaks = trailing_breaks[:0]\n\t\t\t\t\tleading_break = leading_break[:0]\n\t\t\t\t\tleading_blanks = false\n\t\t\t\t} else {\n\t\t\t\t\ts = append(s, whitespaces...)\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Copy the character.\n\t\t\ts = read(parser, s)\n\n\t\t\tend_mark = parser.mark\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Is it the end?\n\t\tif !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume blank characters.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif is_blank(parser.buffer, parser.buffer_pos) {\n\n\t\t\t\t// Check for tab characters that abuse indentation.\n\t\t\t\tif leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) {\n\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a plain scalar\",\n\t\t\t\t\t\tstart_mark, \"found a tab character that violates indentation\")\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Consume a space or a tab character.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = read(parser, whitespaces)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Check if it is a first line break.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t\tleading_break = read_line(parser, leading_break)\n\t\t\t\t\tleading_blanks = true\n\t\t\t\t} else {\n\t\t\t\t\ttrailing_breaks = read_line(parser, trailing_breaks)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Check indentation level.\n\t\tif parser.flow_level == 0 && parser.mark.column < indent {\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_PLAIN_SCALAR_STYLE,\n\t}\n\n\t// Note that we change the 'simple_key_allowed' flag.\n\tif leading_blanks {\n\t\tparser.simple_key_allowed = true\n\t}\n\treturn true\n}\n\nfunc yaml_parser_scan_line_comment(parser *yaml_parser_t, token_mark yaml_mark_t) bool {\n\tif parser.newlines > 0 {\n\t\treturn true\n\t}\n\n\tvar start_mark yaml_mark_t\n\tvar text []byte\n\n\tfor peek := 0; peek < 512; peek++ {\n\t\tif parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) {\n\t\t\tbreak\n\t\t}\n\t\tif is_blank(parser.buffer, parser.buffer_pos+peek) {\n\t\t\tcontinue\n\t\t}\n\t\tif parser.buffer[parser.buffer_pos+peek] == '#' {\n\t\t\tseen := parser.mark.index+peek\n\t\t\tfor {\n\t\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\t\t\tif parser.mark.index >= seen {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tskip_line(parser)\n\t\t\t\t} else if parser.mark.index >= seen {\n\t\t\t\t\tif len(text) == 0 {\n\t\t\t\t\t\tstart_mark = parser.mark\n\t\t\t\t\t}\n\t\t\t\t\ttext = read(parser, text)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tbreak\n\t}\n\tif len(text) > 0 {\n\t\tparser.comments = append(parser.comments, yaml_comment_t{\n\t\t\ttoken_mark: token_mark,\n\t\t\tstart_mark: start_mark,\n\t\t\tline: text,\n\t\t})\n\t}\n\treturn true\n}\n\nfunc yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) bool {\n\ttoken := parser.tokens[len(parser.tokens)-1]\n\n\tif token.typ == yaml_FLOW_ENTRY_TOKEN && len(parser.tokens) > 1 {\n\t\ttoken = parser.tokens[len(parser.tokens)-2]\n\t}\n\n\tvar token_mark = token.start_mark\n\tvar start_mark yaml_mark_t\n\tvar next_indent = parser.indent\n\tif next_indent < 0 {\n\t\tnext_indent = 0\n\t}\n\n\tvar recent_empty = false\n\tvar first_empty = parser.newlines <= 1\n\n\tvar line = parser.mark.line\n\tvar column = parser.mark.column\n\n\tvar text []byte\n\n\t// The foot line is the place where a comment must start to\n\t// still be considered as a foot of the prior content.\n\t// If there's some content in the currently parsed line, then\n\t// the foot is the line below it.\n\tvar foot_line = -1\n\tif scan_mark.line > 0 {\n\t\tfoot_line = parser.mark.line-parser.newlines+1\n\t\tif parser.newlines == 0 && parser.mark.column > 1 {\n\t\t\tfoot_line++\n\t\t}\n\t}\n\n\tvar peek = 0\n\tfor ; peek < 512; peek++ {\n\t\tif parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) {\n\t\t\tbreak\n\t\t}\n\t\tcolumn++\n\t\tif is_blank(parser.buffer, parser.buffer_pos+peek) {\n\t\t\tcontinue\n\t\t}\n\t\tc := parser.buffer[parser.buffer_pos+peek]\n\t\tvar close_flow = parser.flow_level > 0 && (c == ']' || c == '}')\n\t\tif close_flow || is_breakz(parser.buffer, parser.buffer_pos+peek) {\n\t\t\t// Got line break or terminator.\n\t\t\tif close_flow || !recent_empty {\n\t\t\t\tif close_flow || first_empty && (start_mark.line == foot_line && token.typ != yaml_VALUE_TOKEN || start_mark.column-1 < next_indent) {\n\t\t\t\t\t// This is the first empty line and there were no empty lines before,\n\t\t\t\t\t// so this initial part of the comment is a foot of the prior token\n\t\t\t\t\t// instead of being a head for the following one. Split it up.\n\t\t\t\t\t// Alternatively, this might also be the last comment inside a flow\n\t\t\t\t\t// scope, so it must be a footer.\n\t\t\t\t\tif len(text) > 0 {\n\t\t\t\t\t\tif start_mark.column-1 < next_indent {\n\t\t\t\t\t\t\t// If dedented it's unrelated to the prior token.\n\t\t\t\t\t\t\ttoken_mark = start_mark\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparser.comments = append(parser.comments, yaml_comment_t{\n\t\t\t\t\t\t\tscan_mark:  scan_mark,\n\t\t\t\t\t\t\ttoken_mark: token_mark,\n\t\t\t\t\t\t\tstart_mark: start_mark,\n\t\t\t\t\t\t\tend_mark:   yaml_mark_t{parser.mark.index + peek, line, column},\n\t\t\t\t\t\t\tfoot:       text,\n\t\t\t\t\t\t})\n\t\t\t\t\t\tscan_mark = yaml_mark_t{parser.mark.index + peek, line, column}\n\t\t\t\t\t\ttoken_mark = scan_mark\n\t\t\t\t\t\ttext = nil\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif len(text) > 0 && parser.buffer[parser.buffer_pos+peek] != 0 {\n\t\t\t\t\t\ttext = append(text, '\\n')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !is_break(parser.buffer, parser.buffer_pos+peek) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tfirst_empty = false\n\t\t\trecent_empty = true\n\t\t\tcolumn = 0\n\t\t\tline++\n\t\t\tcontinue\n\t\t}\n\n\t\tif len(text) > 0 && (close_flow || column-1 < next_indent && column != start_mark.column) {\n\t\t\t// The comment at the different indentation is a foot of the\n\t\t\t// preceding data rather than a head of the upcoming one.\n\t\t\tparser.comments = append(parser.comments, yaml_comment_t{\n\t\t\t\tscan_mark:  scan_mark,\n\t\t\t\ttoken_mark: token_mark,\n\t\t\t\tstart_mark: start_mark,\n\t\t\t\tend_mark:   yaml_mark_t{parser.mark.index + peek, line, column},\n\t\t\t\tfoot:       text,\n\t\t\t})\n\t\t\tscan_mark = yaml_mark_t{parser.mark.index + peek, line, column}\n\t\t\ttoken_mark = scan_mark\n\t\t\ttext = nil\n\t\t}\n\n\t\tif parser.buffer[parser.buffer_pos+peek] != '#' {\n\t\t\tbreak\n\t\t}\n\n\t\tif len(text) == 0 {\n\t\t\tstart_mark = yaml_mark_t{parser.mark.index + peek, line, column}\n\t\t} else {\n\t\t\ttext = append(text, '\\n')\n\t\t}\n\n\t\trecent_empty = false\n\n\t\t// Consume until after the consumed comment line.\n\t\tseen := parser.mark.index+peek\n\t\tfor {\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\t\tif parser.mark.index >= seen {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tskip_line(parser)\n\t\t\t} else if parser.mark.index >= seen {\n\t\t\t\ttext = read(parser, text)\n\t\t\t} else {\n\t\t\t\tskip(parser)\n\t\t\t}\n\t\t}\n\n\t\tpeek = 0\n\t\tcolumn = 0\n\t\tline = parser.mark.line\n\t\tnext_indent = parser.indent\n\t\tif next_indent < 0 {\n\t\t\tnext_indent = 0\n\t\t}\n\t}\n\n\tif len(text) > 0 {\n\t\tparser.comments = append(parser.comments, yaml_comment_t{\n\t\t\tscan_mark:  scan_mark,\n\t\t\ttoken_mark: start_mark,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   yaml_mark_t{parser.mark.index + peek - 1, line, column},\n\t\t\thead:       text,\n\t\t})\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/sorter.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage yaml\n\nimport (\n\t\"reflect\"\n\t\"unicode\"\n)\n\ntype keyList []reflect.Value\n\nfunc (l keyList) Len() int      { return len(l) }\nfunc (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] }\nfunc (l keyList) Less(i, j int) bool {\n\ta := l[i]\n\tb := l[j]\n\tak := a.Kind()\n\tbk := b.Kind()\n\tfor (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() {\n\t\ta = a.Elem()\n\t\tak = a.Kind()\n\t}\n\tfor (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() {\n\t\tb = b.Elem()\n\t\tbk = b.Kind()\n\t}\n\taf, aok := keyFloat(a)\n\tbf, bok := keyFloat(b)\n\tif aok && bok {\n\t\tif af != bf {\n\t\t\treturn af < bf\n\t\t}\n\t\tif ak != bk {\n\t\t\treturn ak < bk\n\t\t}\n\t\treturn numLess(a, b)\n\t}\n\tif ak != reflect.String || bk != reflect.String {\n\t\treturn ak < bk\n\t}\n\tar, br := []rune(a.String()), []rune(b.String())\n\tdigits := false\n\tfor i := 0; i < len(ar) && i < len(br); i++ {\n\t\tif ar[i] == br[i] {\n\t\t\tdigits = unicode.IsDigit(ar[i])\n\t\t\tcontinue\n\t\t}\n\t\tal := unicode.IsLetter(ar[i])\n\t\tbl := unicode.IsLetter(br[i])\n\t\tif al && bl {\n\t\t\treturn ar[i] < br[i]\n\t\t}\n\t\tif al || bl {\n\t\t\tif digits {\n\t\t\t\treturn al\n\t\t\t} else {\n\t\t\t\treturn bl\n\t\t\t}\n\t\t}\n\t\tvar ai, bi int\n\t\tvar an, bn int64\n\t\tif ar[i] == '0' || br[i] == '0' {\n\t\t\tfor j := i - 1; j >= 0 && unicode.IsDigit(ar[j]); j-- {\n\t\t\t\tif ar[j] != '0' {\n\t\t\t\t\tan = 1\n\t\t\t\t\tbn = 1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ {\n\t\t\tan = an*10 + int64(ar[ai]-'0')\n\t\t}\n\t\tfor bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ {\n\t\t\tbn = bn*10 + int64(br[bi]-'0')\n\t\t}\n\t\tif an != bn {\n\t\t\treturn an < bn\n\t\t}\n\t\tif ai != bi {\n\t\t\treturn ai < bi\n\t\t}\n\t\treturn ar[i] < br[i]\n\t}\n\treturn len(ar) < len(br)\n}\n\n// keyFloat returns a float value for v if it is a number/bool\n// and whether it is a number/bool or not.\nfunc keyFloat(v reflect.Value) (f float64, ok bool) {\n\tswitch v.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn float64(v.Int()), true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float(), true\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn float64(v.Uint()), true\n\tcase reflect.Bool:\n\t\tif v.Bool() {\n\t\t\treturn 1, true\n\t\t}\n\t\treturn 0, true\n\t}\n\treturn 0, false\n}\n\n// numLess returns whether a < b.\n// a and b must necessarily have the same kind.\nfunc numLess(a, b reflect.Value) bool {\n\tswitch a.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn a.Int() < b.Int()\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn a.Float() < b.Float()\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn a.Uint() < b.Uint()\n\tcase reflect.Bool:\n\t\treturn !a.Bool() && b.Bool()\n\t}\n\tpanic(\"not a number\")\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/writerc.go",
    "content": "// \n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\n// \n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n// of the Software, and to permit persons to whom the Software is furnished to do\n// so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\npackage yaml\n\n// Set the writer error and return false.\nfunc yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool {\n\temitter.error = yaml_WRITER_ERROR\n\temitter.problem = problem\n\treturn false\n}\n\n// Flush the output buffer.\nfunc yaml_emitter_flush(emitter *yaml_emitter_t) bool {\n\tif emitter.write_handler == nil {\n\t\tpanic(\"write handler not set\")\n\t}\n\n\t// Check if the buffer is empty.\n\tif emitter.buffer_pos == 0 {\n\t\treturn true\n\t}\n\n\tif err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil {\n\t\treturn yaml_emitter_set_writer_error(emitter, \"write error: \"+err.Error())\n\t}\n\temitter.buffer_pos = 0\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/yaml.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package yaml implements YAML support for the Go language.\n//\n// Source code and other details for the project are available at GitHub:\n//\n//   https://github.com/go-yaml/yaml\n//\npackage yaml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\t\"unicode/utf8\"\n)\n\n// The Unmarshaler interface may be implemented by types to customize their\n// behavior when being unmarshaled from a YAML document.\ntype Unmarshaler interface {\n\tUnmarshalYAML(value *Node) error\n}\n\ntype obsoleteUnmarshaler interface {\n\tUnmarshalYAML(unmarshal func(interface{}) error) error\n}\n\n// The Marshaler interface may be implemented by types to customize their\n// behavior when being marshaled into a YAML document. The returned value\n// is marshaled in place of the original value implementing Marshaler.\n//\n// If an error is returned by MarshalYAML, the marshaling procedure stops\n// and returns with the provided error.\ntype Marshaler interface {\n\tMarshalYAML() (interface{}, error)\n}\n\n// Unmarshal decodes the first document found within the in byte slice\n// and assigns decoded values into the out value.\n//\n// Maps and pointers (to a struct, string, int, etc) are accepted as out\n// values. If an internal pointer within a struct is not initialized,\n// the yaml package will initialize it if necessary for unmarshalling\n// the provided data. The out parameter must not be nil.\n//\n// The type of the decoded values should be compatible with the respective\n// values in out. If one or more values cannot be decoded due to a type\n// mismatches, decoding continues partially until the end of the YAML\n// content, and a *yaml.TypeError is returned with details for all\n// missed values.\n//\n// Struct fields are only unmarshalled if they are exported (have an\n// upper case first letter), and are unmarshalled using the field name\n// lowercased as the default key. Custom keys may be defined via the\n// \"yaml\" name in the field tag: the content preceding the first comma\n// is used as the key, and the following comma-separated options are\n// used to tweak the marshalling process (see Marshal).\n// Conflicting names result in a runtime error.\n//\n// For example:\n//\n//     type T struct {\n//         F int `yaml:\"a,omitempty\"`\n//         B int\n//     }\n//     var t T\n//     yaml.Unmarshal([]byte(\"a: 1\\nb: 2\"), &t)\n//\n// See the documentation of Marshal for the format of tags and a list of\n// supported tag options.\n//\nfunc Unmarshal(in []byte, out interface{}) (err error) {\n\treturn unmarshal(in, out, false)\n}\n\n// A Decoder reads and decodes YAML values from an input stream.\ntype Decoder struct {\n\tparser      *parser\n\tknownFields bool\n}\n\n// NewDecoder returns a new decoder that reads from r.\n//\n// The decoder introduces its own buffering and may read\n// data from r beyond the YAML values requested.\nfunc NewDecoder(r io.Reader) *Decoder {\n\treturn &Decoder{\n\t\tparser: newParserFromReader(r),\n\t}\n}\n\n// KnownFields ensures that the keys in decoded mappings to\n// exist as fields in the struct being decoded into.\nfunc (dec *Decoder) KnownFields(enable bool) {\n\tdec.knownFields = enable\n}\n\n// Decode reads the next YAML-encoded value from its input\n// and stores it in the value pointed to by v.\n//\n// See the documentation for Unmarshal for details about the\n// conversion of YAML into a Go value.\nfunc (dec *Decoder) Decode(v interface{}) (err error) {\n\td := newDecoder()\n\td.knownFields = dec.knownFields\n\tdefer handleErr(&err)\n\tnode := dec.parser.parse()\n\tif node == nil {\n\t\treturn io.EOF\n\t}\n\tout := reflect.ValueOf(v)\n\tif out.Kind() == reflect.Ptr && !out.IsNil() {\n\t\tout = out.Elem()\n\t}\n\td.unmarshal(node, out)\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\n// Decode decodes the node and stores its data into the value pointed to by v.\n//\n// See the documentation for Unmarshal for details about the\n// conversion of YAML into a Go value.\nfunc (n *Node) Decode(v interface{}) (err error) {\n\td := newDecoder()\n\tdefer handleErr(&err)\n\tout := reflect.ValueOf(v)\n\tif out.Kind() == reflect.Ptr && !out.IsNil() {\n\t\tout = out.Elem()\n\t}\n\td.unmarshal(n, out)\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\nfunc unmarshal(in []byte, out interface{}, strict bool) (err error) {\n\tdefer handleErr(&err)\n\td := newDecoder()\n\tp := newParser(in)\n\tdefer p.destroy()\n\tnode := p.parse()\n\tif node != nil {\n\t\tv := reflect.ValueOf(out)\n\t\tif v.Kind() == reflect.Ptr && !v.IsNil() {\n\t\t\tv = v.Elem()\n\t\t}\n\t\td.unmarshal(node, v)\n\t}\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\n// Marshal serializes the value provided into a YAML document. The structure\n// of the generated document will reflect the structure of the value itself.\n// Maps and pointers (to struct, string, int, etc) are accepted as the in value.\n//\n// Struct fields are only marshalled if they are exported (have an upper case\n// first letter), and are marshalled using the field name lowercased as the\n// default key. Custom keys may be defined via the \"yaml\" name in the field\n// tag: the content preceding the first comma is used as the key, and the\n// following comma-separated options are used to tweak the marshalling process.\n// Conflicting names result in a runtime error.\n//\n// The field tag format accepted is:\n//\n//     `(...) yaml:\"[<key>][,<flag1>[,<flag2>]]\" (...)`\n//\n// The following flags are currently supported:\n//\n//     omitempty    Only include the field if it's not set to the zero\n//                  value for the type or to empty slices or maps.\n//                  Zero valued structs will be omitted if all their public\n//                  fields are zero, unless they implement an IsZero\n//                  method (see the IsZeroer interface type), in which\n//                  case the field will be excluded if IsZero returns true.\n//\n//     flow         Marshal using a flow style (useful for structs,\n//                  sequences and maps).\n//\n//     inline       Inline the field, which must be a struct or a map,\n//                  causing all of its fields or keys to be processed as if\n//                  they were part of the outer struct. For maps, keys must\n//                  not conflict with the yaml keys of other struct fields.\n//\n// In addition, if the key is \"-\", the field is ignored.\n//\n// For example:\n//\n//     type T struct {\n//         F int `yaml:\"a,omitempty\"`\n//         B int\n//     }\n//     yaml.Marshal(&T{B: 2}) // Returns \"b: 2\\n\"\n//     yaml.Marshal(&T{F: 1}} // Returns \"a: 1\\nb: 0\\n\"\n//\nfunc Marshal(in interface{}) (out []byte, err error) {\n\tdefer handleErr(&err)\n\te := newEncoder()\n\tdefer e.destroy()\n\te.marshalDoc(\"\", reflect.ValueOf(in))\n\te.finish()\n\tout = e.out\n\treturn\n}\n\n// An Encoder writes YAML values to an output stream.\ntype Encoder struct {\n\tencoder *encoder\n}\n\n// NewEncoder returns a new encoder that writes to w.\n// The Encoder should be closed after use to flush all data\n// to w.\nfunc NewEncoder(w io.Writer) *Encoder {\n\treturn &Encoder{\n\t\tencoder: newEncoderWithWriter(w),\n\t}\n}\n\n// Encode writes the YAML encoding of v to the stream.\n// If multiple items are encoded to the stream, the\n// second and subsequent document will be preceded\n// with a \"---\" document separator, but the first will not.\n//\n// See the documentation for Marshal for details about the conversion of Go\n// values to YAML.\nfunc (e *Encoder) Encode(v interface{}) (err error) {\n\tdefer handleErr(&err)\n\te.encoder.marshalDoc(\"\", reflect.ValueOf(v))\n\treturn nil\n}\n\n// Encode encodes value v and stores its representation in n.\n//\n// See the documentation for Marshal for details about the\n// conversion of Go values into YAML.\nfunc (n *Node) Encode(v interface{}) (err error) {\n\tdefer handleErr(&err)\n\te := newEncoder()\n\tdefer e.destroy()\n\te.marshalDoc(\"\", reflect.ValueOf(v))\n\te.finish()\n\tp := newParser(e.out)\n\tp.textless = true\n\tdefer p.destroy()\n\tdoc := p.parse()\n\t*n = *doc.Content[0]\n\treturn nil\n}\n\n// SetIndent changes the used indentation used when encoding.\nfunc (e *Encoder) SetIndent(spaces int) {\n\tif spaces < 0 {\n\t\tpanic(\"yaml: cannot indent to a negative number of spaces\")\n\t}\n\te.encoder.indent = spaces\n}\n\n// Close closes the encoder by writing any remaining data.\n// It does not write a stream terminating string \"...\".\nfunc (e *Encoder) Close() (err error) {\n\tdefer handleErr(&err)\n\te.encoder.finish()\n\treturn nil\n}\n\nfunc handleErr(err *error) {\n\tif v := recover(); v != nil {\n\t\tif e, ok := v.(yamlError); ok {\n\t\t\t*err = e.err\n\t\t} else {\n\t\t\tpanic(v)\n\t\t}\n\t}\n}\n\ntype yamlError struct {\n\terr error\n}\n\nfunc fail(err error) {\n\tpanic(yamlError{err})\n}\n\nfunc failf(format string, args ...interface{}) {\n\tpanic(yamlError{fmt.Errorf(\"yaml: \"+format, args...)})\n}\n\n// A TypeError is returned by Unmarshal when one or more fields in\n// the YAML document cannot be properly decoded into the requested\n// types. When this error is returned, the value is still\n// unmarshaled partially.\ntype TypeError struct {\n\tErrors []string\n}\n\nfunc (e *TypeError) Error() string {\n\treturn fmt.Sprintf(\"yaml: unmarshal errors:\\n  %s\", strings.Join(e.Errors, \"\\n  \"))\n}\n\ntype Kind uint32\n\nconst (\n\tDocumentNode Kind = 1 << iota\n\tSequenceNode\n\tMappingNode\n\tScalarNode\n\tAliasNode\n)\n\ntype Style uint32\n\nconst (\n\tTaggedStyle Style = 1 << iota\n\tDoubleQuotedStyle\n\tSingleQuotedStyle\n\tLiteralStyle\n\tFoldedStyle\n\tFlowStyle\n)\n\n// Node represents an element in the YAML document hierarchy. While documents\n// are typically encoded and decoded into higher level types, such as structs\n// and maps, Node is an intermediate representation that allows detailed\n// control over the content being decoded or encoded.\n//\n// It's worth noting that although Node offers access into details such as\n// line numbers, colums, and comments, the content when re-encoded will not\n// have its original textual representation preserved. An effort is made to\n// render the data plesantly, and to preserve comments near the data they\n// describe, though.\n//\n// Values that make use of the Node type interact with the yaml package in the\n// same way any other type would do, by encoding and decoding yaml data\n// directly or indirectly into them.\n//\n// For example:\n//\n//     var person struct {\n//             Name    string\n//             Address yaml.Node\n//     }\n//     err := yaml.Unmarshal(data, &person)\n// \n// Or by itself:\n//\n//     var person Node\n//     err := yaml.Unmarshal(data, &person)\n//\ntype Node struct {\n\t// Kind defines whether the node is a document, a mapping, a sequence,\n\t// a scalar value, or an alias to another node. The specific data type of\n\t// scalar nodes may be obtained via the ShortTag and LongTag methods.\n\tKind  Kind\n\n\t// Style allows customizing the apperance of the node in the tree.\n\tStyle Style\n\n\t// Tag holds the YAML tag defining the data type for the value.\n\t// When decoding, this field will always be set to the resolved tag,\n\t// even when it wasn't explicitly provided in the YAML content.\n\t// When encoding, if this field is unset the value type will be\n\t// implied from the node properties, and if it is set, it will only\n\t// be serialized into the representation if TaggedStyle is used or\n\t// the implicit tag diverges from the provided one.\n\tTag string\n\n\t// Value holds the unescaped and unquoted represenation of the value.\n\tValue string\n\n\t// Anchor holds the anchor name for this node, which allows aliases to point to it.\n\tAnchor string\n\n\t// Alias holds the node that this alias points to. Only valid when Kind is AliasNode.\n\tAlias *Node\n\n\t// Content holds contained nodes for documents, mappings, and sequences.\n\tContent []*Node\n\n\t// HeadComment holds any comments in the lines preceding the node and\n\t// not separated by an empty line.\n\tHeadComment string\n\n\t// LineComment holds any comments at the end of the line where the node is in.\n\tLineComment string\n\n\t// FootComment holds any comments following the node and before empty lines.\n\tFootComment string\n\n\t// Line and Column hold the node position in the decoded YAML text.\n\t// These fields are not respected when encoding the node.\n\tLine   int\n\tColumn int\n}\n\n// IsZero returns whether the node has all of its fields unset.\nfunc (n *Node) IsZero() bool {\n\treturn n.Kind == 0 && n.Style == 0 && n.Tag == \"\" && n.Value == \"\" && n.Anchor == \"\" && n.Alias == nil && n.Content == nil &&\n\t\tn.HeadComment == \"\" && n.LineComment == \"\" && n.FootComment == \"\" && n.Line == 0 && n.Column == 0\n}\n\n\n// LongTag returns the long form of the tag that indicates the data type for\n// the node. If the Tag field isn't explicitly defined, one will be computed\n// based on the node properties.\nfunc (n *Node) LongTag() string {\n\treturn longTag(n.ShortTag())\n}\n\n// ShortTag returns the short form of the YAML tag that indicates data type for\n// the node. If the Tag field isn't explicitly defined, one will be computed\n// based on the node properties.\nfunc (n *Node) ShortTag() string {\n\tif n.indicatedString() {\n\t\treturn strTag\n\t}\n\tif n.Tag == \"\" || n.Tag == \"!\" {\n\t\tswitch n.Kind {\n\t\tcase MappingNode:\n\t\t\treturn mapTag\n\t\tcase SequenceNode:\n\t\t\treturn seqTag\n\t\tcase AliasNode:\n\t\t\tif n.Alias != nil {\n\t\t\t\treturn n.Alias.ShortTag()\n\t\t\t}\n\t\tcase ScalarNode:\n\t\t\ttag, _ := resolve(\"\", n.Value)\n\t\t\treturn tag\n\t\tcase 0:\n\t\t\t// Special case to make the zero value convenient.\n\t\t\tif n.IsZero() {\n\t\t\t\treturn nullTag\n\t\t\t}\n\t\t}\n\t\treturn \"\"\n\t}\n\treturn shortTag(n.Tag)\n}\n\nfunc (n *Node) indicatedString() bool {\n\treturn n.Kind == ScalarNode &&\n\t\t(shortTag(n.Tag) == strTag ||\n\t\t\t(n.Tag == \"\" || n.Tag == \"!\") && n.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0)\n}\n\n// SetString is a convenience function that sets the node to a string value\n// and defines its style in a pleasant way depending on its content.\nfunc (n *Node) SetString(s string) {\n\tn.Kind = ScalarNode\n\tif utf8.ValidString(s) {\n\t\tn.Value = s\n\t\tn.Tag = strTag\n\t} else {\n\t\tn.Value = encodeBase64(s)\n\t\tn.Tag = binaryTag\n\t}\n\tif strings.Contains(n.Value, \"\\n\") {\n\t\tn.Style = LiteralStyle\n\t}\n}\n\n// --------------------------------------------------------------------------\n// Maintain a mapping of keys to structure field indexes\n\n// The code in this section was copied from mgo/bson.\n\n// structInfo holds details for the serialization of fields of\n// a given struct.\ntype structInfo struct {\n\tFieldsMap  map[string]fieldInfo\n\tFieldsList []fieldInfo\n\n\t// InlineMap is the number of the field in the struct that\n\t// contains an ,inline map, or -1 if there's none.\n\tInlineMap int\n\n\t// InlineUnmarshalers holds indexes to inlined fields that\n\t// contain unmarshaler values.\n\tInlineUnmarshalers [][]int\n}\n\ntype fieldInfo struct {\n\tKey       string\n\tNum       int\n\tOmitEmpty bool\n\tFlow      bool\n\t// Id holds the unique field identifier, so we can cheaply\n\t// check for field duplicates without maintaining an extra map.\n\tId int\n\n\t// Inline holds the field index if the field is part of an inlined struct.\n\tInline []int\n}\n\nvar structMap = make(map[reflect.Type]*structInfo)\nvar fieldMapMutex sync.RWMutex\nvar unmarshalerType reflect.Type\n\nfunc init() {\n\tvar v Unmarshaler\n\tunmarshalerType = reflect.ValueOf(&v).Elem().Type()\n}\n\nfunc getStructInfo(st reflect.Type) (*structInfo, error) {\n\tfieldMapMutex.RLock()\n\tsinfo, found := structMap[st]\n\tfieldMapMutex.RUnlock()\n\tif found {\n\t\treturn sinfo, nil\n\t}\n\n\tn := st.NumField()\n\tfieldsMap := make(map[string]fieldInfo)\n\tfieldsList := make([]fieldInfo, 0, n)\n\tinlineMap := -1\n\tinlineUnmarshalers := [][]int(nil)\n\tfor i := 0; i != n; i++ {\n\t\tfield := st.Field(i)\n\t\tif field.PkgPath != \"\" && !field.Anonymous {\n\t\t\tcontinue // Private field\n\t\t}\n\n\t\tinfo := fieldInfo{Num: i}\n\n\t\ttag := field.Tag.Get(\"yaml\")\n\t\tif tag == \"\" && strings.Index(string(field.Tag), \":\") < 0 {\n\t\t\ttag = string(field.Tag)\n\t\t}\n\t\tif tag == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tinline := false\n\t\tfields := strings.Split(tag, \",\")\n\t\tif len(fields) > 1 {\n\t\t\tfor _, flag := range fields[1:] {\n\t\t\t\tswitch flag {\n\t\t\t\tcase \"omitempty\":\n\t\t\t\t\tinfo.OmitEmpty = true\n\t\t\t\tcase \"flow\":\n\t\t\t\t\tinfo.Flow = true\n\t\t\t\tcase \"inline\":\n\t\t\t\t\tinline = true\n\t\t\t\tdefault:\n\t\t\t\t\treturn nil, errors.New(fmt.Sprintf(\"unsupported flag %q in tag %q of type %s\", flag, tag, st))\n\t\t\t\t}\n\t\t\t}\n\t\t\ttag = fields[0]\n\t\t}\n\n\t\tif inline {\n\t\t\tswitch field.Type.Kind() {\n\t\t\tcase reflect.Map:\n\t\t\t\tif inlineMap >= 0 {\n\t\t\t\t\treturn nil, errors.New(\"multiple ,inline maps in struct \" + st.String())\n\t\t\t\t}\n\t\t\t\tif field.Type.Key() != reflect.TypeOf(\"\") {\n\t\t\t\t\treturn nil, errors.New(\"option ,inline needs a map with string keys in struct \" + st.String())\n\t\t\t\t}\n\t\t\t\tinlineMap = info.Num\n\t\t\tcase reflect.Struct, reflect.Ptr:\n\t\t\t\tftype := field.Type\n\t\t\t\tfor ftype.Kind() == reflect.Ptr {\n\t\t\t\t\tftype = ftype.Elem()\n\t\t\t\t}\n\t\t\t\tif ftype.Kind() != reflect.Struct {\n\t\t\t\t\treturn nil, errors.New(\"option ,inline may only be used on a struct or map field\")\n\t\t\t\t}\n\t\t\t\tif reflect.PtrTo(ftype).Implements(unmarshalerType) {\n\t\t\t\t\tinlineUnmarshalers = append(inlineUnmarshalers, []int{i})\n\t\t\t\t} else {\n\t\t\t\t\tsinfo, err := getStructInfo(ftype)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\t\tfor _, index := range sinfo.InlineUnmarshalers {\n\t\t\t\t\t\tinlineUnmarshalers = append(inlineUnmarshalers, append([]int{i}, index...))\n\t\t\t\t\t}\n\t\t\t\t\tfor _, finfo := range sinfo.FieldsList {\n\t\t\t\t\t\tif _, found := fieldsMap[finfo.Key]; found {\n\t\t\t\t\t\t\tmsg := \"duplicated key '\" + finfo.Key + \"' in struct \" + st.String()\n\t\t\t\t\t\t\treturn nil, errors.New(msg)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif finfo.Inline == nil {\n\t\t\t\t\t\t\tfinfo.Inline = []int{i, finfo.Num}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfinfo.Inline = append([]int{i}, finfo.Inline...)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinfo.Id = len(fieldsList)\n\t\t\t\t\t\tfieldsMap[finfo.Key] = finfo\n\t\t\t\t\t\tfieldsList = append(fieldsList, finfo)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn nil, errors.New(\"option ,inline may only be used on a struct or map field\")\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif tag != \"\" {\n\t\t\tinfo.Key = tag\n\t\t} else {\n\t\t\tinfo.Key = strings.ToLower(field.Name)\n\t\t}\n\n\t\tif _, found = fieldsMap[info.Key]; found {\n\t\t\tmsg := \"duplicated key '\" + info.Key + \"' in struct \" + st.String()\n\t\t\treturn nil, errors.New(msg)\n\t\t}\n\n\t\tinfo.Id = len(fieldsList)\n\t\tfieldsList = append(fieldsList, info)\n\t\tfieldsMap[info.Key] = info\n\t}\n\n\tsinfo = &structInfo{\n\t\tFieldsMap:          fieldsMap,\n\t\tFieldsList:         fieldsList,\n\t\tInlineMap:          inlineMap,\n\t\tInlineUnmarshalers: inlineUnmarshalers,\n\t}\n\n\tfieldMapMutex.Lock()\n\tstructMap[st] = sinfo\n\tfieldMapMutex.Unlock()\n\treturn sinfo, nil\n}\n\n// IsZeroer is used to check whether an object is zero to\n// determine whether it should be omitted when marshaling\n// with the omitempty flag. One notable implementation\n// is time.Time.\ntype IsZeroer interface {\n\tIsZero() bool\n}\n\nfunc isZero(v reflect.Value) bool {\n\tkind := v.Kind()\n\tif z, ok := v.Interface().(IsZeroer); ok {\n\t\tif (kind == reflect.Ptr || kind == reflect.Interface) && v.IsNil() {\n\t\t\treturn true\n\t\t}\n\t\treturn z.IsZero()\n\t}\n\tswitch kind {\n\tcase reflect.String:\n\t\treturn len(v.String()) == 0\n\tcase reflect.Interface, reflect.Ptr:\n\t\treturn v.IsNil()\n\tcase reflect.Slice:\n\t\treturn v.Len() == 0\n\tcase reflect.Map:\n\t\treturn v.Len() == 0\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn v.Int() == 0\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float() == 0\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn v.Uint() == 0\n\tcase reflect.Bool:\n\t\treturn !v.Bool()\n\tcase reflect.Struct:\n\t\tvt := v.Type()\n\t\tfor i := v.NumField() - 1; i >= 0; i-- {\n\t\t\tif vt.Field(i).PkgPath != \"\" {\n\t\t\t\tcontinue // Private field\n\t\t\t}\n\t\t\tif !isZero(v.Field(i)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/yamlh.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n// of the Software, and to permit persons to whom the Software is furnished to do\n// so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\npackage yaml\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\n// The version directive data.\ntype yaml_version_directive_t struct {\n\tmajor int8 // The major version number.\n\tminor int8 // The minor version number.\n}\n\n// The tag directive data.\ntype yaml_tag_directive_t struct {\n\thandle []byte // The tag handle.\n\tprefix []byte // The tag prefix.\n}\n\ntype yaml_encoding_t int\n\n// The stream encoding.\nconst (\n\t// Let the parser choose the encoding.\n\tyaml_ANY_ENCODING yaml_encoding_t = iota\n\n\tyaml_UTF8_ENCODING    // The default UTF-8 encoding.\n\tyaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM.\n\tyaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM.\n)\n\ntype yaml_break_t int\n\n// Line break types.\nconst (\n\t// Let the parser choose the break type.\n\tyaml_ANY_BREAK yaml_break_t = iota\n\n\tyaml_CR_BREAK   // Use CR for line breaks (Mac style).\n\tyaml_LN_BREAK   // Use LN for line breaks (Unix style).\n\tyaml_CRLN_BREAK // Use CR LN for line breaks (DOS style).\n)\n\ntype yaml_error_type_t int\n\n// Many bad things could happen with the parser and emitter.\nconst (\n\t// No error is produced.\n\tyaml_NO_ERROR yaml_error_type_t = iota\n\n\tyaml_MEMORY_ERROR   // Cannot allocate or reallocate a block of memory.\n\tyaml_READER_ERROR   // Cannot read or decode the input stream.\n\tyaml_SCANNER_ERROR  // Cannot scan the input stream.\n\tyaml_PARSER_ERROR   // Cannot parse the input stream.\n\tyaml_COMPOSER_ERROR // Cannot compose a YAML document.\n\tyaml_WRITER_ERROR   // Cannot write to the output stream.\n\tyaml_EMITTER_ERROR  // Cannot emit a YAML stream.\n)\n\n// The pointer position.\ntype yaml_mark_t struct {\n\tindex  int // The position index.\n\tline   int // The position line.\n\tcolumn int // The position column.\n}\n\n// Node Styles\n\ntype yaml_style_t int8\n\ntype yaml_scalar_style_t yaml_style_t\n\n// Scalar styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_SCALAR_STYLE yaml_scalar_style_t = 0\n\n\tyaml_PLAIN_SCALAR_STYLE         yaml_scalar_style_t = 1 << iota // The plain scalar style.\n\tyaml_SINGLE_QUOTED_SCALAR_STYLE                                 // The single-quoted scalar style.\n\tyaml_DOUBLE_QUOTED_SCALAR_STYLE                                 // The double-quoted scalar style.\n\tyaml_LITERAL_SCALAR_STYLE                                       // The literal scalar style.\n\tyaml_FOLDED_SCALAR_STYLE                                        // The folded scalar style.\n)\n\ntype yaml_sequence_style_t yaml_style_t\n\n// Sequence styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota\n\n\tyaml_BLOCK_SEQUENCE_STYLE // The block sequence style.\n\tyaml_FLOW_SEQUENCE_STYLE  // The flow sequence style.\n)\n\ntype yaml_mapping_style_t yaml_style_t\n\n// Mapping styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota\n\n\tyaml_BLOCK_MAPPING_STYLE // The block mapping style.\n\tyaml_FLOW_MAPPING_STYLE  // The flow mapping style.\n)\n\n// Tokens\n\ntype yaml_token_type_t int\n\n// Token types.\nconst (\n\t// An empty token.\n\tyaml_NO_TOKEN yaml_token_type_t = iota\n\n\tyaml_STREAM_START_TOKEN // A STREAM-START token.\n\tyaml_STREAM_END_TOKEN   // A STREAM-END token.\n\n\tyaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token.\n\tyaml_TAG_DIRECTIVE_TOKEN     // A TAG-DIRECTIVE token.\n\tyaml_DOCUMENT_START_TOKEN    // A DOCUMENT-START token.\n\tyaml_DOCUMENT_END_TOKEN      // A DOCUMENT-END token.\n\n\tyaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token.\n\tyaml_BLOCK_MAPPING_START_TOKEN  // A BLOCK-SEQUENCE-END token.\n\tyaml_BLOCK_END_TOKEN            // A BLOCK-END token.\n\n\tyaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token.\n\tyaml_FLOW_SEQUENCE_END_TOKEN   // A FLOW-SEQUENCE-END token.\n\tyaml_FLOW_MAPPING_START_TOKEN  // A FLOW-MAPPING-START token.\n\tyaml_FLOW_MAPPING_END_TOKEN    // A FLOW-MAPPING-END token.\n\n\tyaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token.\n\tyaml_FLOW_ENTRY_TOKEN  // A FLOW-ENTRY token.\n\tyaml_KEY_TOKEN         // A KEY token.\n\tyaml_VALUE_TOKEN       // A VALUE token.\n\n\tyaml_ALIAS_TOKEN  // An ALIAS token.\n\tyaml_ANCHOR_TOKEN // An ANCHOR token.\n\tyaml_TAG_TOKEN    // A TAG token.\n\tyaml_SCALAR_TOKEN // A SCALAR token.\n)\n\nfunc (tt yaml_token_type_t) String() string {\n\tswitch tt {\n\tcase yaml_NO_TOKEN:\n\t\treturn \"yaml_NO_TOKEN\"\n\tcase yaml_STREAM_START_TOKEN:\n\t\treturn \"yaml_STREAM_START_TOKEN\"\n\tcase yaml_STREAM_END_TOKEN:\n\t\treturn \"yaml_STREAM_END_TOKEN\"\n\tcase yaml_VERSION_DIRECTIVE_TOKEN:\n\t\treturn \"yaml_VERSION_DIRECTIVE_TOKEN\"\n\tcase yaml_TAG_DIRECTIVE_TOKEN:\n\t\treturn \"yaml_TAG_DIRECTIVE_TOKEN\"\n\tcase yaml_DOCUMENT_START_TOKEN:\n\t\treturn \"yaml_DOCUMENT_START_TOKEN\"\n\tcase yaml_DOCUMENT_END_TOKEN:\n\t\treturn \"yaml_DOCUMENT_END_TOKEN\"\n\tcase yaml_BLOCK_SEQUENCE_START_TOKEN:\n\t\treturn \"yaml_BLOCK_SEQUENCE_START_TOKEN\"\n\tcase yaml_BLOCK_MAPPING_START_TOKEN:\n\t\treturn \"yaml_BLOCK_MAPPING_START_TOKEN\"\n\tcase yaml_BLOCK_END_TOKEN:\n\t\treturn \"yaml_BLOCK_END_TOKEN\"\n\tcase yaml_FLOW_SEQUENCE_START_TOKEN:\n\t\treturn \"yaml_FLOW_SEQUENCE_START_TOKEN\"\n\tcase yaml_FLOW_SEQUENCE_END_TOKEN:\n\t\treturn \"yaml_FLOW_SEQUENCE_END_TOKEN\"\n\tcase yaml_FLOW_MAPPING_START_TOKEN:\n\t\treturn \"yaml_FLOW_MAPPING_START_TOKEN\"\n\tcase yaml_FLOW_MAPPING_END_TOKEN:\n\t\treturn \"yaml_FLOW_MAPPING_END_TOKEN\"\n\tcase yaml_BLOCK_ENTRY_TOKEN:\n\t\treturn \"yaml_BLOCK_ENTRY_TOKEN\"\n\tcase yaml_FLOW_ENTRY_TOKEN:\n\t\treturn \"yaml_FLOW_ENTRY_TOKEN\"\n\tcase yaml_KEY_TOKEN:\n\t\treturn \"yaml_KEY_TOKEN\"\n\tcase yaml_VALUE_TOKEN:\n\t\treturn \"yaml_VALUE_TOKEN\"\n\tcase yaml_ALIAS_TOKEN:\n\t\treturn \"yaml_ALIAS_TOKEN\"\n\tcase yaml_ANCHOR_TOKEN:\n\t\treturn \"yaml_ANCHOR_TOKEN\"\n\tcase yaml_TAG_TOKEN:\n\t\treturn \"yaml_TAG_TOKEN\"\n\tcase yaml_SCALAR_TOKEN:\n\t\treturn \"yaml_SCALAR_TOKEN\"\n\t}\n\treturn \"<unknown token>\"\n}\n\n// The token structure.\ntype yaml_token_t struct {\n\t// The token type.\n\ttyp yaml_token_type_t\n\n\t// The start/end of the token.\n\tstart_mark, end_mark yaml_mark_t\n\n\t// The stream encoding (for yaml_STREAM_START_TOKEN).\n\tencoding yaml_encoding_t\n\n\t// The alias/anchor/scalar value or tag/tag directive handle\n\t// (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN).\n\tvalue []byte\n\n\t// The tag suffix (for yaml_TAG_TOKEN).\n\tsuffix []byte\n\n\t// The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN).\n\tprefix []byte\n\n\t// The scalar style (for yaml_SCALAR_TOKEN).\n\tstyle yaml_scalar_style_t\n\n\t// The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN).\n\tmajor, minor int8\n}\n\n// Events\n\ntype yaml_event_type_t int8\n\n// Event types.\nconst (\n\t// An empty event.\n\tyaml_NO_EVENT yaml_event_type_t = iota\n\n\tyaml_STREAM_START_EVENT   // A STREAM-START event.\n\tyaml_STREAM_END_EVENT     // A STREAM-END event.\n\tyaml_DOCUMENT_START_EVENT // A DOCUMENT-START event.\n\tyaml_DOCUMENT_END_EVENT   // A DOCUMENT-END event.\n\tyaml_ALIAS_EVENT          // An ALIAS event.\n\tyaml_SCALAR_EVENT         // A SCALAR event.\n\tyaml_SEQUENCE_START_EVENT // A SEQUENCE-START event.\n\tyaml_SEQUENCE_END_EVENT   // A SEQUENCE-END event.\n\tyaml_MAPPING_START_EVENT  // A MAPPING-START event.\n\tyaml_MAPPING_END_EVENT    // A MAPPING-END event.\n\tyaml_TAIL_COMMENT_EVENT\n)\n\nvar eventStrings = []string{\n\tyaml_NO_EVENT:             \"none\",\n\tyaml_STREAM_START_EVENT:   \"stream start\",\n\tyaml_STREAM_END_EVENT:     \"stream end\",\n\tyaml_DOCUMENT_START_EVENT: \"document start\",\n\tyaml_DOCUMENT_END_EVENT:   \"document end\",\n\tyaml_ALIAS_EVENT:          \"alias\",\n\tyaml_SCALAR_EVENT:         \"scalar\",\n\tyaml_SEQUENCE_START_EVENT: \"sequence start\",\n\tyaml_SEQUENCE_END_EVENT:   \"sequence end\",\n\tyaml_MAPPING_START_EVENT:  \"mapping start\",\n\tyaml_MAPPING_END_EVENT:    \"mapping end\",\n\tyaml_TAIL_COMMENT_EVENT:   \"tail comment\",\n}\n\nfunc (e yaml_event_type_t) String() string {\n\tif e < 0 || int(e) >= len(eventStrings) {\n\t\treturn fmt.Sprintf(\"unknown event %d\", e)\n\t}\n\treturn eventStrings[e]\n}\n\n// The event structure.\ntype yaml_event_t struct {\n\n\t// The event type.\n\ttyp yaml_event_type_t\n\n\t// The start and end of the event.\n\tstart_mark, end_mark yaml_mark_t\n\n\t// The document encoding (for yaml_STREAM_START_EVENT).\n\tencoding yaml_encoding_t\n\n\t// The version directive (for yaml_DOCUMENT_START_EVENT).\n\tversion_directive *yaml_version_directive_t\n\n\t// The list of tag directives (for yaml_DOCUMENT_START_EVENT).\n\ttag_directives []yaml_tag_directive_t\n\n\t// The comments\n\thead_comment []byte\n\tline_comment []byte\n\tfoot_comment []byte\n\ttail_comment []byte\n\n\t// The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT).\n\tanchor []byte\n\n\t// The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).\n\ttag []byte\n\n\t// The scalar value (for yaml_SCALAR_EVENT).\n\tvalue []byte\n\n\t// Is the document start/end indicator implicit, or the tag optional?\n\t// (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT).\n\timplicit bool\n\n\t// Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT).\n\tquoted_implicit bool\n\n\t// The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).\n\tstyle yaml_style_t\n}\n\nfunc (e *yaml_event_t) scalar_style() yaml_scalar_style_t     { return yaml_scalar_style_t(e.style) }\nfunc (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) }\nfunc (e *yaml_event_t) mapping_style() yaml_mapping_style_t   { return yaml_mapping_style_t(e.style) }\n\n// Nodes\n\nconst (\n\tyaml_NULL_TAG      = \"tag:yaml.org,2002:null\"      // The tag !!null with the only possible value: null.\n\tyaml_BOOL_TAG      = \"tag:yaml.org,2002:bool\"      // The tag !!bool with the values: true and false.\n\tyaml_STR_TAG       = \"tag:yaml.org,2002:str\"       // The tag !!str for string values.\n\tyaml_INT_TAG       = \"tag:yaml.org,2002:int\"       // The tag !!int for integer values.\n\tyaml_FLOAT_TAG     = \"tag:yaml.org,2002:float\"     // The tag !!float for float values.\n\tyaml_TIMESTAMP_TAG = \"tag:yaml.org,2002:timestamp\" // The tag !!timestamp for date and time values.\n\n\tyaml_SEQ_TAG = \"tag:yaml.org,2002:seq\" // The tag !!seq is used to denote sequences.\n\tyaml_MAP_TAG = \"tag:yaml.org,2002:map\" // The tag !!map is used to denote mapping.\n\n\t// Not in original libyaml.\n\tyaml_BINARY_TAG = \"tag:yaml.org,2002:binary\"\n\tyaml_MERGE_TAG  = \"tag:yaml.org,2002:merge\"\n\n\tyaml_DEFAULT_SCALAR_TAG   = yaml_STR_TAG // The default scalar tag is !!str.\n\tyaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq.\n\tyaml_DEFAULT_MAPPING_TAG  = yaml_MAP_TAG // The default mapping tag is !!map.\n)\n\ntype yaml_node_type_t int\n\n// Node types.\nconst (\n\t// An empty node.\n\tyaml_NO_NODE yaml_node_type_t = iota\n\n\tyaml_SCALAR_NODE   // A scalar node.\n\tyaml_SEQUENCE_NODE // A sequence node.\n\tyaml_MAPPING_NODE  // A mapping node.\n)\n\n// An element of a sequence node.\ntype yaml_node_item_t int\n\n// An element of a mapping node.\ntype yaml_node_pair_t struct {\n\tkey   int // The key of the element.\n\tvalue int // The value of the element.\n}\n\n// The node structure.\ntype yaml_node_t struct {\n\ttyp yaml_node_type_t // The node type.\n\ttag []byte           // The node tag.\n\n\t// The node data.\n\n\t// The scalar parameters (for yaml_SCALAR_NODE).\n\tscalar struct {\n\t\tvalue  []byte              // The scalar value.\n\t\tlength int                 // The length of the scalar value.\n\t\tstyle  yaml_scalar_style_t // The scalar style.\n\t}\n\n\t// The sequence parameters (for YAML_SEQUENCE_NODE).\n\tsequence struct {\n\t\titems_data []yaml_node_item_t    // The stack of sequence items.\n\t\tstyle      yaml_sequence_style_t // The sequence style.\n\t}\n\n\t// The mapping parameters (for yaml_MAPPING_NODE).\n\tmapping struct {\n\t\tpairs_data  []yaml_node_pair_t   // The stack of mapping pairs (key, value).\n\t\tpairs_start *yaml_node_pair_t    // The beginning of the stack.\n\t\tpairs_end   *yaml_node_pair_t    // The end of the stack.\n\t\tpairs_top   *yaml_node_pair_t    // The top of the stack.\n\t\tstyle       yaml_mapping_style_t // The mapping style.\n\t}\n\n\tstart_mark yaml_mark_t // The beginning of the node.\n\tend_mark   yaml_mark_t // The end of the node.\n\n}\n\n// The document structure.\ntype yaml_document_t struct {\n\n\t// The document nodes.\n\tnodes []yaml_node_t\n\n\t// The version directive.\n\tversion_directive *yaml_version_directive_t\n\n\t// The list of tag directives.\n\ttag_directives_data  []yaml_tag_directive_t\n\ttag_directives_start int // The beginning of the tag directives list.\n\ttag_directives_end   int // The end of the tag directives list.\n\n\tstart_implicit int // Is the document start indicator implicit?\n\tend_implicit   int // Is the document end indicator implicit?\n\n\t// The start/end of the document.\n\tstart_mark, end_mark yaml_mark_t\n}\n\n// The prototype of a read handler.\n//\n// The read handler is called when the parser needs to read more bytes from the\n// source. The handler should write not more than size bytes to the buffer.\n// The number of written bytes should be set to the size_read variable.\n//\n// [in,out]   data        A pointer to an application data specified by\n//                        yaml_parser_set_input().\n// [out]      buffer      The buffer to write the data from the source.\n// [in]       size        The size of the buffer.\n// [out]      size_read   The actual number of bytes read from the source.\n//\n// On success, the handler should return 1.  If the handler failed,\n// the returned value should be 0. On EOF, the handler should set the\n// size_read to 0 and return 1.\ntype yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error)\n\n// This structure holds information about a potential simple key.\ntype yaml_simple_key_t struct {\n\tpossible     bool        // Is a simple key possible?\n\trequired     bool        // Is a simple key required?\n\ttoken_number int         // The number of the token.\n\tmark         yaml_mark_t // The position mark.\n}\n\n// The states of the parser.\ntype yaml_parser_state_t int\n\nconst (\n\tyaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota\n\n\tyaml_PARSE_IMPLICIT_DOCUMENT_START_STATE           // Expect the beginning of an implicit document.\n\tyaml_PARSE_DOCUMENT_START_STATE                    // Expect DOCUMENT-START.\n\tyaml_PARSE_DOCUMENT_CONTENT_STATE                  // Expect the content of a document.\n\tyaml_PARSE_DOCUMENT_END_STATE                      // Expect DOCUMENT-END.\n\tyaml_PARSE_BLOCK_NODE_STATE                        // Expect a block node.\n\tyaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence.\n\tyaml_PARSE_FLOW_NODE_STATE                         // Expect a flow node.\n\tyaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE        // Expect the first entry of a block sequence.\n\tyaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE              // Expect an entry of a block sequence.\n\tyaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE         // Expect an entry of an indentless sequence.\n\tyaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE           // Expect the first key of a block mapping.\n\tyaml_PARSE_BLOCK_MAPPING_KEY_STATE                 // Expect a block mapping key.\n\tyaml_PARSE_BLOCK_MAPPING_VALUE_STATE               // Expect a block mapping value.\n\tyaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE         // Expect the first entry of a flow sequence.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE               // Expect an entry of a flow sequence.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE   // Expect a key of an ordered mapping.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE   // Expect the and of an ordered mapping entry.\n\tyaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE            // Expect the first key of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_KEY_STATE                  // Expect a key of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_VALUE_STATE                // Expect a value of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE          // Expect an empty value of a flow mapping.\n\tyaml_PARSE_END_STATE                               // Expect nothing.\n)\n\nfunc (ps yaml_parser_state_t) String() string {\n\tswitch ps {\n\tcase yaml_PARSE_STREAM_START_STATE:\n\t\treturn \"yaml_PARSE_STREAM_START_STATE\"\n\tcase yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:\n\t\treturn \"yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE\"\n\tcase yaml_PARSE_DOCUMENT_START_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_START_STATE\"\n\tcase yaml_PARSE_DOCUMENT_CONTENT_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_CONTENT_STATE\"\n\tcase yaml_PARSE_DOCUMENT_END_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_END_STATE\"\n\tcase yaml_PARSE_BLOCK_NODE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_NODE_STATE\"\n\tcase yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE\"\n\tcase yaml_PARSE_FLOW_NODE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_NODE_STATE\"\n\tcase yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE\"\n\tcase yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE\"\n\tcase yaml_PARSE_END_STATE:\n\t\treturn \"yaml_PARSE_END_STATE\"\n\t}\n\treturn \"<unknown parser state>\"\n}\n\n// This structure holds aliases data.\ntype yaml_alias_data_t struct {\n\tanchor []byte      // The anchor.\n\tindex  int         // The node id.\n\tmark   yaml_mark_t // The anchor mark.\n}\n\n// The parser structure.\n//\n// All members are internal. Manage the structure using the\n// yaml_parser_ family of functions.\ntype yaml_parser_t struct {\n\n\t// Error handling\n\n\terror yaml_error_type_t // Error type.\n\n\tproblem string // Error description.\n\n\t// The byte about which the problem occurred.\n\tproblem_offset int\n\tproblem_value  int\n\tproblem_mark   yaml_mark_t\n\n\t// The error context.\n\tcontext      string\n\tcontext_mark yaml_mark_t\n\n\t// Reader stuff\n\n\tread_handler yaml_read_handler_t // Read handler.\n\n\tinput_reader io.Reader // File input data.\n\tinput        []byte    // String input data.\n\tinput_pos    int\n\n\teof bool // EOF flag\n\n\tbuffer     []byte // The working buffer.\n\tbuffer_pos int    // The current position of the buffer.\n\n\tunread int // The number of unread characters in the buffer.\n\n\tnewlines int // The number of line breaks since last non-break/non-blank character\n\n\traw_buffer     []byte // The raw buffer.\n\traw_buffer_pos int    // The current position of the buffer.\n\n\tencoding yaml_encoding_t // The input encoding.\n\n\toffset int         // The offset of the current position (in bytes).\n\tmark   yaml_mark_t // The mark of the current position.\n\n\t// Comments\n\n\thead_comment []byte // The current head comments\n\tline_comment []byte // The current line comments\n\tfoot_comment []byte // The current foot comments\n\ttail_comment []byte // Foot comment that happens at the end of a block.\n\tstem_comment []byte // Comment in item preceding a nested structure (list inside list item, etc)\n\n\tcomments      []yaml_comment_t // The folded comments for all parsed tokens\n\tcomments_head int\n\n\t// Scanner stuff\n\n\tstream_start_produced bool // Have we started to scan the input stream?\n\tstream_end_produced   bool // Have we reached the end of the input stream?\n\n\tflow_level int // The number of unclosed '[' and '{' indicators.\n\n\ttokens          []yaml_token_t // The tokens queue.\n\ttokens_head     int            // The head of the tokens queue.\n\ttokens_parsed   int            // The number of tokens fetched from the queue.\n\ttoken_available bool           // Does the tokens queue contain a token ready for dequeueing.\n\n\tindent  int   // The current indentation level.\n\tindents []int // The indentation levels stack.\n\n\tsimple_key_allowed bool                // May a simple key occur at the current position?\n\tsimple_keys        []yaml_simple_key_t // The stack of simple keys.\n\tsimple_keys_by_tok map[int]int         // possible simple_key indexes indexed by token_number\n\n\t// Parser stuff\n\n\tstate          yaml_parser_state_t    // The current parser state.\n\tstates         []yaml_parser_state_t  // The parser states stack.\n\tmarks          []yaml_mark_t          // The stack of marks.\n\ttag_directives []yaml_tag_directive_t // The list of TAG directives.\n\n\t// Dumper stuff\n\n\taliases []yaml_alias_data_t // The alias data.\n\n\tdocument *yaml_document_t // The currently parsed document.\n}\n\ntype yaml_comment_t struct {\n\n\tscan_mark  yaml_mark_t // Position where scanning for comments started\n\ttoken_mark yaml_mark_t // Position after which tokens will be associated with this comment\n\tstart_mark yaml_mark_t // Position of '#' comment mark\n\tend_mark   yaml_mark_t // Position where comment terminated\n\n\thead []byte\n\tline []byte\n\tfoot []byte\n}\n\n// Emitter Definitions\n\n// The prototype of a write handler.\n//\n// The write handler is called when the emitter needs to flush the accumulated\n// characters to the output.  The handler should write @a size bytes of the\n// @a buffer to the output.\n//\n// @param[in,out]   data        A pointer to an application data specified by\n//                              yaml_emitter_set_output().\n// @param[in]       buffer      The buffer with bytes to be written.\n// @param[in]       size        The size of the buffer.\n//\n// @returns On success, the handler should return @c 1.  If the handler failed,\n// the returned value should be @c 0.\n//\ntype yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error\n\ntype yaml_emitter_state_t int\n\n// The emitter states.\nconst (\n\t// Expect STREAM-START.\n\tyaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota\n\n\tyaml_EMIT_FIRST_DOCUMENT_START_STATE       // Expect the first DOCUMENT-START or STREAM-END.\n\tyaml_EMIT_DOCUMENT_START_STATE             // Expect DOCUMENT-START or STREAM-END.\n\tyaml_EMIT_DOCUMENT_CONTENT_STATE           // Expect the content of a document.\n\tyaml_EMIT_DOCUMENT_END_STATE               // Expect DOCUMENT-END.\n\tyaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE   // Expect the first item of a flow sequence.\n\tyaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE   // Expect the next item of a flow sequence, with the comma already written out\n\tyaml_EMIT_FLOW_SEQUENCE_ITEM_STATE         // Expect an item of a flow sequence.\n\tyaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE     // Expect the first key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE     // Expect the next key of a flow mapping, with the comma already written out\n\tyaml_EMIT_FLOW_MAPPING_KEY_STATE           // Expect a key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE  // Expect a value for a simple key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_VALUE_STATE         // Expect a value of a flow mapping.\n\tyaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE  // Expect the first item of a block sequence.\n\tyaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE        // Expect an item of a block sequence.\n\tyaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE    // Expect the first key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_KEY_STATE          // Expect the key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_VALUE_STATE        // Expect a value of a block mapping.\n\tyaml_EMIT_END_STATE                        // Expect nothing.\n)\n\n// The emitter structure.\n//\n// All members are internal.  Manage the structure using the @c yaml_emitter_\n// family of functions.\ntype yaml_emitter_t struct {\n\n\t// Error handling\n\n\terror   yaml_error_type_t // Error type.\n\tproblem string            // Error description.\n\n\t// Writer stuff\n\n\twrite_handler yaml_write_handler_t // Write handler.\n\n\toutput_buffer *[]byte   // String output data.\n\toutput_writer io.Writer // File output data.\n\n\tbuffer     []byte // The working buffer.\n\tbuffer_pos int    // The current position of the buffer.\n\n\traw_buffer     []byte // The raw buffer.\n\traw_buffer_pos int    // The current position of the buffer.\n\n\tencoding yaml_encoding_t // The stream encoding.\n\n\t// Emitter stuff\n\n\tcanonical   bool         // If the output is in the canonical style?\n\tbest_indent int          // The number of indentation spaces.\n\tbest_width  int          // The preferred width of the output lines.\n\tunicode     bool         // Allow unescaped non-ASCII characters?\n\tline_break  yaml_break_t // The preferred line break.\n\n\tstate  yaml_emitter_state_t   // The current emitter state.\n\tstates []yaml_emitter_state_t // The stack of states.\n\n\tevents      []yaml_event_t // The event queue.\n\tevents_head int            // The head of the event queue.\n\n\tindents []int // The stack of indentation levels.\n\n\ttag_directives []yaml_tag_directive_t // The list of tag directives.\n\n\tindent int // The current indentation level.\n\n\tflow_level int // The current flow level.\n\n\troot_context       bool // Is it the document root context?\n\tsequence_context   bool // Is it a sequence context?\n\tmapping_context    bool // Is it a mapping context?\n\tsimple_key_context bool // Is it a simple mapping key context?\n\n\tline       int  // The current line.\n\tcolumn     int  // The current column.\n\twhitespace bool // If the last character was a whitespace?\n\tindention  bool // If the last character was an indentation character (' ', '-', '?', ':')?\n\topen_ended bool // If an explicit document end is required?\n\n\tspace_above bool // Is there's an empty line above?\n\tfoot_indent int  // The indent used to write the foot comment above, or -1 if none.\n\n\t// Anchor analysis.\n\tanchor_data struct {\n\t\tanchor []byte // The anchor value.\n\t\talias  bool   // Is it an alias?\n\t}\n\n\t// Tag analysis.\n\ttag_data struct {\n\t\thandle []byte // The tag handle.\n\t\tsuffix []byte // The tag suffix.\n\t}\n\n\t// Scalar analysis.\n\tscalar_data struct {\n\t\tvalue                 []byte              // The scalar value.\n\t\tmultiline             bool                // Does the scalar contain line breaks?\n\t\tflow_plain_allowed    bool                // Can the scalar be expessed in the flow plain style?\n\t\tblock_plain_allowed   bool                // Can the scalar be expressed in the block plain style?\n\t\tsingle_quoted_allowed bool                // Can the scalar be expressed in the single quoted style?\n\t\tblock_allowed         bool                // Can the scalar be expressed in the literal or folded styles?\n\t\tstyle                 yaml_scalar_style_t // The output style.\n\t}\n\n\t// Comments\n\thead_comment []byte\n\tline_comment []byte\n\tfoot_comment []byte\n\ttail_comment []byte\n\n\tkey_line_comment []byte\n\n\t// Dumper stuff\n\n\topened bool // If the stream was already opened?\n\tclosed bool // If the stream was already closed?\n\n\t// The information associated with the document nodes.\n\tanchors *struct {\n\t\treferences int  // The number of references.\n\t\tanchor     int  // The anchor id.\n\t\tserialized bool // If the node has been emitted?\n\t}\n\n\tlast_anchor_id int // The last assigned anchor id.\n\n\tdocument *yaml_document_t // The currently emitted document.\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/yamlprivateh.go",
    "content": "// \n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\n// \n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n// of the Software, and to permit persons to whom the Software is furnished to do\n// so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\npackage yaml\n\nconst (\n\t// The size of the input raw buffer.\n\tinput_raw_buffer_size = 512\n\n\t// The size of the input buffer.\n\t// It should be possible to decode the whole raw buffer.\n\tinput_buffer_size = input_raw_buffer_size * 3\n\n\t// The size of the output buffer.\n\toutput_buffer_size = 128\n\n\t// The size of the output raw buffer.\n\t// It should be possible to encode the whole output buffer.\n\toutput_raw_buffer_size = (output_buffer_size*2 + 2)\n\n\t// The size of other stacks and queues.\n\tinitial_stack_size  = 16\n\tinitial_queue_size  = 16\n\tinitial_string_size = 16\n)\n\n// Check if the character at the specified position is an alphabetical\n// character, a digit, '_', or '-'.\nfunc is_alpha(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-'\n}\n\n// Check if the character at the specified position is a digit.\nfunc is_digit(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9'\n}\n\n// Get the value of a digit.\nfunc as_digit(b []byte, i int) int {\n\treturn int(b[i]) - '0'\n}\n\n// Check if the character at the specified position is a hex-digit.\nfunc is_hex(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f'\n}\n\n// Get the value of a hex-digit.\nfunc as_hex(b []byte, i int) int {\n\tbi := b[i]\n\tif bi >= 'A' && bi <= 'F' {\n\t\treturn int(bi) - 'A' + 10\n\t}\n\tif bi >= 'a' && bi <= 'f' {\n\t\treturn int(bi) - 'a' + 10\n\t}\n\treturn int(bi) - '0'\n}\n\n// Check if the character is ASCII.\nfunc is_ascii(b []byte, i int) bool {\n\treturn b[i] <= 0x7F\n}\n\n// Check if the character at the start of the buffer can be printed unescaped.\nfunc is_printable(b []byte, i int) bool {\n\treturn ((b[i] == 0x0A) || // . == #x0A\n\t\t(b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E\n\t\t(b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF\n\t\t(b[i] > 0xC2 && b[i] < 0xED) ||\n\t\t(b[i] == 0xED && b[i+1] < 0xA0) ||\n\t\t(b[i] == 0xEE) ||\n\t\t(b[i] == 0xEF && // #xE000 <= . <= #xFFFD\n\t\t\t!(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF\n\t\t\t!(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF))))\n}\n\n// Check if the character at the specified position is NUL.\nfunc is_z(b []byte, i int) bool {\n\treturn b[i] == 0x00\n}\n\n// Check if the beginning of the buffer is a BOM.\nfunc is_bom(b []byte, i int) bool {\n\treturn b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF\n}\n\n// Check if the character at the specified position is space.\nfunc is_space(b []byte, i int) bool {\n\treturn b[i] == ' '\n}\n\n// Check if the character at the specified position is tab.\nfunc is_tab(b []byte, i int) bool {\n\treturn b[i] == '\\t'\n}\n\n// Check if the character at the specified position is blank (space or tab).\nfunc is_blank(b []byte, i int) bool {\n\t//return is_space(b, i) || is_tab(b, i)\n\treturn b[i] == ' ' || b[i] == '\\t'\n}\n\n// Check if the character at the specified position is a line break.\nfunc is_break(b []byte, i int) bool {\n\treturn (b[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029)\n}\n\nfunc is_crlf(b []byte, i int) bool {\n\treturn b[i] == '\\r' && b[i+1] == '\\n'\n}\n\n// Check if the character is a line break or NUL.\nfunc is_breakz(b []byte, i int) bool {\n\t//return is_break(b, i) || is_z(b, i)\n\treturn (\n\t\t// is_break:\n\t\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\t// is_z:\n\t\tb[i] == 0)\n}\n\n// Check if the character is a line break, space, or NUL.\nfunc is_spacez(b []byte, i int) bool {\n\t//return is_space(b, i) || is_breakz(b, i)\n\treturn (\n\t\t// is_space:\n\t\tb[i] == ' ' ||\n\t\t// is_breakz:\n\t\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\tb[i] == 0)\n}\n\n// Check if the character is a line break, space, tab, or NUL.\nfunc is_blankz(b []byte, i int) bool {\n\t//return is_blank(b, i) || is_breakz(b, i)\n\treturn (\n\t\t// is_blank:\n\t\tb[i] == ' ' || b[i] == '\\t' ||\n\t\t// is_breakz:\n\t\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\tb[i] == 0)\n}\n\n// Determine the width of the character.\nfunc width(b byte) int {\n\t// Don't replace these by a switch without first\n\t// confirming that it is being inlined.\n\tif b&0x80 == 0x00 {\n\t\treturn 1\n\t}\n\tif b&0xE0 == 0xC0 {\n\t\treturn 2\n\t}\n\tif b&0xF0 == 0xE0 {\n\t\treturn 3\n\t}\n\tif b&0xF8 == 0xF0 {\n\t\treturn 4\n\t}\n\treturn 0\n\n}\n"
  },
  {
    "path": "vendor/modules.txt",
    "content": "# cel.dev/expr v0.25.1\n## explicit; go 1.23.0\ncel.dev/expr\n# github.com/cilium/kafka v0.0.0-20180809090225-01ce283b732b\n## explicit\ngithub.com/cilium/kafka/proto\n# github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2\n## explicit; go 1.24.6\ngithub.com/cncf/xds/go/udpa/annotations\ngithub.com/cncf/xds/go/xds/annotations/v3\ngithub.com/cncf/xds/go/xds/core/v3\ngithub.com/cncf/xds/go/xds/type/matcher/v3\ngithub.com/cncf/xds/go/xds/type/v3\n# github.com/davecgh/go-spew v1.1.1\n## explicit\ngithub.com/davecgh/go-spew/spew\n# github.com/envoyproxy/go-control-plane/envoy v1.37.0\n## explicit; go 1.24.0\ngithub.com/envoyproxy/go-control-plane/envoy/annotations\ngithub.com/envoyproxy/go-control-plane/envoy/config/common/mutation_rules/v3\ngithub.com/envoyproxy/go-control-plane/envoy/config/core/v3\ngithub.com/envoyproxy/go-control-plane/envoy/config/route/v3\ngithub.com/envoyproxy/go-control-plane/envoy/service/discovery/v3\ngithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3\ngithub.com/envoyproxy/go-control-plane/envoy/type/metadata/v3\ngithub.com/envoyproxy/go-control-plane/envoy/type/tracing/v3\ngithub.com/envoyproxy/go-control-plane/envoy/type/v3\n# github.com/envoyproxy/protoc-gen-validate v1.3.3\n## explicit; go 1.24.1\ngithub.com/envoyproxy/protoc-gen-validate\ngithub.com/envoyproxy/protoc-gen-validate/module\ngithub.com/envoyproxy/protoc-gen-validate/templates\ngithub.com/envoyproxy/protoc-gen-validate/templates/cc\ngithub.com/envoyproxy/protoc-gen-validate/templates/ccnop\ngithub.com/envoyproxy/protoc-gen-validate/templates/go\ngithub.com/envoyproxy/protoc-gen-validate/templates/goshared\ngithub.com/envoyproxy/protoc-gen-validate/templates/java\ngithub.com/envoyproxy/protoc-gen-validate/templates/shared\ngithub.com/envoyproxy/protoc-gen-validate/validate\n# github.com/golang/snappy v0.0.4\n## explicit\ngithub.com/golang/snappy\n# github.com/iancoleman/strcase v0.3.0\n## explicit; go 1.16\ngithub.com/iancoleman/strcase\n# github.com/lyft/protoc-gen-star/v2 v2.0.4\n## explicit; go 1.17\ngithub.com/lyft/protoc-gen-star/v2\ngithub.com/lyft/protoc-gen-star/v2/lang/go\n# github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10\n## explicit; go 1.20\ngithub.com/planetscale/vtprotobuf/protohelpers\ngithub.com/planetscale/vtprotobuf/types/known/anypb\ngithub.com/planetscale/vtprotobuf/types/known/durationpb\ngithub.com/planetscale/vtprotobuf/types/known/emptypb\ngithub.com/planetscale/vtprotobuf/types/known/structpb\ngithub.com/planetscale/vtprotobuf/types/known/wrapperspb\n# github.com/pmezard/go-difflib v1.0.0\n## explicit\ngithub.com/pmezard/go-difflib/difflib\n# github.com/sirupsen/logrus v1.9.4\n## explicit; go 1.17\ngithub.com/sirupsen/logrus\n# github.com/spf13/afero v1.15.0\n## explicit; go 1.23.0\ngithub.com/spf13/afero\ngithub.com/spf13/afero/internal/common\ngithub.com/spf13/afero/mem\n# github.com/stretchr/testify v1.11.1\n## explicit; go 1.17\ngithub.com/stretchr/testify/assert\ngithub.com/stretchr/testify/assert/yaml\ngithub.com/stretchr/testify/require\n# golang.org/x/mod v0.32.0\n## explicit; go 1.24.0\ngolang.org/x/mod/internal/lazyregexp\ngolang.org/x/mod/module\ngolang.org/x/mod/semver\n# golang.org/x/net v0.51.0\n## explicit; go 1.25.0\ngolang.org/x/net/context\ngolang.org/x/net/http/httpguts\ngolang.org/x/net/http2\ngolang.org/x/net/http2/hpack\ngolang.org/x/net/idna\ngolang.org/x/net/internal/httpcommon\ngolang.org/x/net/internal/httpsfv\ngolang.org/x/net/internal/timeseries\ngolang.org/x/net/trace\n# golang.org/x/sync v0.20.0\n## explicit; go 1.25.0\ngolang.org/x/sync/errgroup\n# golang.org/x/sys v0.44.0\n## explicit; go 1.25.0\ngolang.org/x/sys/unix\ngolang.org/x/sys/windows\n# golang.org/x/text v0.34.0\n## explicit; go 1.24.0\ngolang.org/x/text/runes\ngolang.org/x/text/secure/bidirule\ngolang.org/x/text/transform\ngolang.org/x/text/unicode/bidi\ngolang.org/x/text/unicode/norm\n# golang.org/x/tools v0.41.0\n## explicit; go 1.24.0\ngolang.org/x/tools/go/ast/astutil\ngolang.org/x/tools/imports\ngolang.org/x/tools/internal/event\ngolang.org/x/tools/internal/event/core\ngolang.org/x/tools/internal/event/keys\ngolang.org/x/tools/internal/event/label\ngolang.org/x/tools/internal/gocommand\ngolang.org/x/tools/internal/gopathwalk\ngolang.org/x/tools/internal/imports\ngolang.org/x/tools/internal/modindex\ngolang.org/x/tools/internal/stdlib\n# google.golang.org/genproto/googleapis/api v0.0.0-20260511170946-3700d4141b60\n## explicit; go 1.25.0\ngoogle.golang.org/genproto/googleapis/api\ngoogle.golang.org/genproto/googleapis/api/annotations\ngoogle.golang.org/genproto/googleapis/api/expr/v1alpha1\n# google.golang.org/genproto/googleapis/rpc v0.0.0-20260511170946-3700d4141b60\n## explicit; go 1.25.0\ngoogle.golang.org/genproto/googleapis/rpc/status\n# google.golang.org/grpc v1.81.0\n## explicit; go 1.25.0\ngoogle.golang.org/grpc\ngoogle.golang.org/grpc/attributes\ngoogle.golang.org/grpc/backoff\ngoogle.golang.org/grpc/balancer\ngoogle.golang.org/grpc/balancer/base\ngoogle.golang.org/grpc/balancer/endpointsharding\ngoogle.golang.org/grpc/balancer/grpclb/state\ngoogle.golang.org/grpc/balancer/pickfirst\ngoogle.golang.org/grpc/balancer/pickfirst/internal\ngoogle.golang.org/grpc/balancer/roundrobin\ngoogle.golang.org/grpc/binarylog/grpc_binarylog_v1\ngoogle.golang.org/grpc/channelz\ngoogle.golang.org/grpc/codes\ngoogle.golang.org/grpc/connectivity\ngoogle.golang.org/grpc/credentials\ngoogle.golang.org/grpc/credentials/insecure\ngoogle.golang.org/grpc/encoding\ngoogle.golang.org/grpc/encoding/internal\ngoogle.golang.org/grpc/encoding/proto\ngoogle.golang.org/grpc/experimental/stats\ngoogle.golang.org/grpc/grpclog\ngoogle.golang.org/grpc/grpclog/internal\ngoogle.golang.org/grpc/internal\ngoogle.golang.org/grpc/internal/backoff\ngoogle.golang.org/grpc/internal/balancer/gracefulswitch\ngoogle.golang.org/grpc/internal/balancer/weight\ngoogle.golang.org/grpc/internal/balancerload\ngoogle.golang.org/grpc/internal/binarylog\ngoogle.golang.org/grpc/internal/buffer\ngoogle.golang.org/grpc/internal/channelz\ngoogle.golang.org/grpc/internal/credentials\ngoogle.golang.org/grpc/internal/envconfig\ngoogle.golang.org/grpc/internal/grpclog\ngoogle.golang.org/grpc/internal/grpcsync\ngoogle.golang.org/grpc/internal/grpcutil\ngoogle.golang.org/grpc/internal/idle\ngoogle.golang.org/grpc/internal/mem\ngoogle.golang.org/grpc/internal/metadata\ngoogle.golang.org/grpc/internal/pretty\ngoogle.golang.org/grpc/internal/proxyattributes\ngoogle.golang.org/grpc/internal/resolver\ngoogle.golang.org/grpc/internal/resolver/delegatingresolver\ngoogle.golang.org/grpc/internal/resolver/dns\ngoogle.golang.org/grpc/internal/resolver/dns/internal\ngoogle.golang.org/grpc/internal/resolver/passthrough\ngoogle.golang.org/grpc/internal/resolver/unix\ngoogle.golang.org/grpc/internal/serviceconfig\ngoogle.golang.org/grpc/internal/stats\ngoogle.golang.org/grpc/internal/status\ngoogle.golang.org/grpc/internal/syscall\ngoogle.golang.org/grpc/internal/transport\ngoogle.golang.org/grpc/internal/transport/networktype\ngoogle.golang.org/grpc/internal/transport/readyreader\ngoogle.golang.org/grpc/keepalive\ngoogle.golang.org/grpc/mem\ngoogle.golang.org/grpc/metadata\ngoogle.golang.org/grpc/peer\ngoogle.golang.org/grpc/resolver\ngoogle.golang.org/grpc/resolver/dns\ngoogle.golang.org/grpc/serviceconfig\ngoogle.golang.org/grpc/stats\ngoogle.golang.org/grpc/status\ngoogle.golang.org/grpc/tap\n# google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.2\n## explicit; go 1.25.0\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc\n# google.golang.org/protobuf v1.36.11\n## explicit; go 1.23\ngoogle.golang.org/protobuf/cmd/protoc-gen-go\ngoogle.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo\ngoogle.golang.org/protobuf/compiler/protogen\ngoogle.golang.org/protobuf/encoding/protojson\ngoogle.golang.org/protobuf/encoding/prototext\ngoogle.golang.org/protobuf/encoding/protowire\ngoogle.golang.org/protobuf/internal/descfmt\ngoogle.golang.org/protobuf/internal/descopts\ngoogle.golang.org/protobuf/internal/detrand\ngoogle.golang.org/protobuf/internal/editiondefaults\ngoogle.golang.org/protobuf/internal/editionssupport\ngoogle.golang.org/protobuf/internal/encoding/defval\ngoogle.golang.org/protobuf/internal/encoding/json\ngoogle.golang.org/protobuf/internal/encoding/messageset\ngoogle.golang.org/protobuf/internal/encoding/tag\ngoogle.golang.org/protobuf/internal/encoding/text\ngoogle.golang.org/protobuf/internal/errors\ngoogle.golang.org/protobuf/internal/filedesc\ngoogle.golang.org/protobuf/internal/filetype\ngoogle.golang.org/protobuf/internal/flags\ngoogle.golang.org/protobuf/internal/genid\ngoogle.golang.org/protobuf/internal/impl\ngoogle.golang.org/protobuf/internal/msgfmt\ngoogle.golang.org/protobuf/internal/order\ngoogle.golang.org/protobuf/internal/pragma\ngoogle.golang.org/protobuf/internal/protolazy\ngoogle.golang.org/protobuf/internal/set\ngoogle.golang.org/protobuf/internal/strs\ngoogle.golang.org/protobuf/internal/version\ngoogle.golang.org/protobuf/proto\ngoogle.golang.org/protobuf/protoadapt\ngoogle.golang.org/protobuf/reflect/protodesc\ngoogle.golang.org/protobuf/reflect/protopath\ngoogle.golang.org/protobuf/reflect/protorange\ngoogle.golang.org/protobuf/reflect/protoreflect\ngoogle.golang.org/protobuf/reflect/protoregistry\ngoogle.golang.org/protobuf/runtime/protoiface\ngoogle.golang.org/protobuf/runtime/protoimpl\ngoogle.golang.org/protobuf/types/descriptorpb\ngoogle.golang.org/protobuf/types/dynamicpb\ngoogle.golang.org/protobuf/types/gofeaturespb\ngoogle.golang.org/protobuf/types/known/anypb\ngoogle.golang.org/protobuf/types/known/durationpb\ngoogle.golang.org/protobuf/types/known/emptypb\ngoogle.golang.org/protobuf/types/known/structpb\ngoogle.golang.org/protobuf/types/known/timestamppb\ngoogle.golang.org/protobuf/types/known/wrapperspb\ngoogle.golang.org/protobuf/types/pluginpb\n# gopkg.in/yaml.v3 v3.0.1\n## explicit\ngopkg.in/yaml.v3\n"
  }
]